- source: https://openapi.tools/ name: Docuo category: Documentation link: https://docuo.spreading.ai/?via=ot repository: https://github.com/spreadingai language: SaaS source_description: >- Docuo is a lightweight platform that transforms your static contents into a modern developer hub, API reference, product guides, and more. v2: false v3: true v3_1: true id: db7874d4a4e4dde0f580b7188c2f60d4 foundInMaster: true - source: https://openapi.tools/ name: API Insights category: - Monitoring - Description Validators link: https://apiinsights.io/ repository: https://github.com/treblle source_description: >- API Insights is a web application and native Mac application that allows you get real time insights into your API using your OpenAPI specification. Think of it like a static analysis tool for your API, using your OpenAPI Specification file. v2: false v3: true id: 7d6c99eb736ef40793d4004ecfbb1661 foundInMaster: true - source: https://openapi.tools/ name: APIMatic Developer Experience Portal category: Documentation link: https://www.apimatic.io/product/publish language: SaaS source_description: >- Customizable developer portals packed with language specific documentation, client libraries, code samples, an API console and much more. v2: true v3: true v3_1: true id: fe6f1a80f0b8b8c43c2c05947b9d6f7a foundInMaster: true - source: https://openapi.tools/ name: APIMatic Transformer category: Converters language: SaaS source_description: >- Transform API Descriptions to and from RAML, API Blueprint, OAI v2/v3, WSDL, etc. link: https://www.apimatic.io/transformer v2: true v3: true v3_1: true id: e455b137b6388767a0bd96244bddcf3b foundInMaster: true - source: https://openapi.tools/ name: Apitally category: Monitoring language: SaaS source_description: >- Simple REST API monitoring tool that helps engineering and product teams understand their APIs. Tracks usage, errors, response times and more using middleware for Python and Node.js frameworks. Also offers uptime monitoring and logging of individual requests. link: https://apitally.io repository: https://github.com/apitally v2: true v3: true v3_1: true id: 93c8a884c50e0448d41e99e5d1de9b1c foundInMaster: true - source: https://openapi.tools/ name: Assertible category: Testing language: SaaS link: https://assertible.com repository: null source_description: >- Import an OpenAPI specification into Assertible to generate tests that validate JSON Schema responses and status codes on every endpoint. v2: true v3: true foundInMaster: true id: da167de4273ba1c7d1a094b9939f3f69 - source: https://openapi.tools/ name: avantation category: - Converters - Testing language: TypeScript link: https://www.avantation.in/ repository: https://github.com/anbuksv/avantation source_description: Generate OpenAPI 3.x specification from HAR. v2: false v3: true repositoryMetadata: base64Readme: >- PGgyIGFsaWduPSJjZW50ZXIiPkF2YW50YXRpb248L2gyPgo8cCBhbGlnbj0iY2VudGVyIj4KPC9wPgo8cCBhbGlnbj0iY2VudGVyIj4KPCEtLSAgPGEgaHJlZj0iaHR0cHM6Ly9ucG1qcy5vcmcvcGFja2FnZS9hdmFudGF0aW9uIj4KICAgIDxpbWcgYWx0PSJCZXRhIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvLfCfmoBiZXRhLWltcG9ydGFudC5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpIj4KICA8L2E+Ci0tPgogIDxhIGhyZWY9Imh0dHBzOi8vbnBtanMub3JnL3BhY2thZ2UvYXZhbnRhdGlvbiI+CiAgICA8aW1nIGFsdD0iVmVyc2lvbiIgdGFyZ2V0PSJfYmxhbmsiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9hdmFudGF0aW9uLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSI+CiAgPC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vbnBtanMub3JnL3BhY2thZ2UvYXZhbnRhdGlvbiI+CiAgICA8aW1nIGFsdD0iZG93bmxvYWRzIiB0YXJnZXQ9Il9ibGFuayIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kbS9hdmFudGF0aW9uLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSI+CiAgPC9hPgo8IS0tICA8YSBocmVmPSIjQ29kZSBTdHlsZSI+CiAgICA8aW1nIGFsdD0iY29kZSBzdHlsZTogYXZhbnRhdGlvbiIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NvZGVfc3R5bGUtYXZhbnRhdGlvbi1mZjY5YjQuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlIj4KICA8L2E+Ci0tPgogIDxhIGhyZWY9Imh0dHBzOi8vbnBtanMub3JnL3BhY2thZ2UvYXZhbnRhdGlvbiI+CiAgICA8aW1nIGFsdD0ibGljZW5zZSIgdGFyZ2V0PSJfYmxhbmsiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9hdmFudGF0aW9uLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSI+CiAgPC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnBheXBhbC5tZS9hbmJ1a3N2Ij4KICAgIDxpbWcgYWx0PSJkb25hdGlvbiIgdGFyZ2V0PSJfYmxhbmsiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9kb25hdGlvbi1wYXlwYWwtYmx1ZXZpb2xldC5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUiPgogIDwvYT4KPC9wPgoKYXZhbnRhdGlvbiBpcyBhIHRvb2wgdG8gZ2VuZXJhdGUgYW4gT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbiBmcm9tIEhUVFAgQXJjaGl2ZSBmb3JtYXQoSEFSKS4KCmF2YW50YXRpb24gaXMgd3JpdHRlbiBhbmQgbWFpbnRhaW5lZCBieSBBbmJhcmFzYW4gSyAoYW5idWtzdkBnbWFpbC5jb20pLgoKPHVsPgogIDxsaT4KICAgUHJvamVjdCBob21lIHBhZ2U6IDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL3d3dy5hdmFudGF0aW9uLmluLyI+aHR0cHM6Ly93d3cuYXZhbnRhdGlvbi5pbi8gPC9hPgogIDwvbGk+CiAgPGxpPgogICBDb2RlIGhvbWUgcGFnZTogPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbmJ1a3N2L2F2YW50YXRpb24iPmh0dHBzOi8vZ2l0aHViLmNvbS9hbmJ1a3N2L2F2YW50YXRpb248L2E+CiAgPC9saT4KICA8bGk+CiAgIElzc3VlIHRyYWNrZXI6IDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYW5idWtzdi9hdmFudGF0aW9uL2lzc3VlcyI+aHR0cHM6Ly9naXRodWIuY29tL2FuYnVrc3YvYXZhbnRhdGlvbi9pc3N1ZXM8L2E+CiAgPC9saT4KPC91bD4KCiMjIENvbnRyaWJ1dGluZwoKQnVnIHJlcG9ydHMgYW5kIGNvZGUgYW5kIGRvY3VtZW50YXRpb24gcGF0Y2hlcyBhcmUgd2VsY29tZS4KCiMjIEluc3RhbGwKCkRpcmVjdCBkb3dubG9hZHMgYXJlIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBbcmVsZWFzZSBwYWdlXShodHRwczovL2dpdGh1Yi5jb20vYW5idWtzdi9hdmFudGF0aW9uL3JlbGVhc2VzL2xhdGVzdCkuCgpJZiB5b3UgaGF2ZSBOb2RlIGluc3RhbGxlZCBvbiB5b3VyIGNvbXB1dGVyIGp1c3QgcnVuIG5wbSBpbnN0YWxsCgpgYGAKbnBtIGluc3RhbGwgLWcgYXZhbnRhdGlvbgpgYGAKCiMjIEZlYXR1cmVzCgotICAgSFRUUCBzYW1wbGUgY29kZSBnZW5lcmF0aW9uCi0gICBEeW5hbWljIHJvdXRlIHBhdGggY29udmVyc2lvbgotICAgU2NoZW1hIGdlbmVyYXRpb24KLSAgIFN1cHBvcnRzIGpzb24veWFtbCBvdXRwdXQgZm9ybWF0cwotICAgSldUIGF1dGhlbnRpY2F0aW9uIGhlYWRlciBtYXBwaW5nCi0gICBTdGF0aWMtVUkgZ2VuZXJhdGlvbgoKIyMgVXNhZ2UKCmBgYHNoLXNlc3Npb24KQnVpbGQgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZyb20gSEFSLgoKVVNBR0UKICAkIGF2YW50YXRpb24gSEFSCgpBUkdVTUVOVFMKICBIQVIgIGh0dHAgYXJjaGl2ZShoYXIpIHBhdGgKCk9QVElPTlMKICAtYiwgLS1iYXNlLXBhdGg9YmFzZS1wYXRoICAgICAgICAgICAgICAgIFNlcGFyYXRlIHRoZSBjb21tb24gcGF0aCBhcyBiYXNlIHBhdGggZnJvbSBIVFRQIHJlcXVlc3RzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZTpbJ2FwaS92MSddCgogIC1oLCAtLWhvc3Q9aG9zdCAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyIHRoZSBodHRwIHJlcXVlc3QgZnJvbSBIQVIgYW5kIHVzZSBpdCBhcyBzZXJ2ZXIgdXJsIGluIG91dHB1dC4KCiAgLWosIC0tanNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBvdXRwdXQgcmVzdWx0IGluIEpTT04gZm9ybWF0LgoKICAtbywgLS1vdXQ9b3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0OiAuL29wZW5hcGkueWFtbF0gV3JpdGUgb3V0cHV0IHJlc3VsdCBhdCB0aGlzIERFU1QgbG9jYXRpb24uCgogIC1yLCAtLXBhdGgtcGFyYW0tcmVnZXg9cGF0aC1wYXJhbS1yZWdleCAgW2RlZmF1bHQ6IF4oWzAtOV18Wy0kQCF+JV4qKClfK10pKyRdIENvbnZlcnQgUmVnZXggbWF0Y2hpbmcgcGFyYW1zIGludG8gZHluYW1pYyBwYXRoCgogIC1zLCAtLXNlY3VyaXR5LWhlYWRlcnM9c2VjdXJpdHktaGVhZGVycyAgW2RlZmF1bHQ6IHt9XSBNYXAgbWF0Y2hpbmcgSFRUUCBoZWFkZXJzIGludG8gc2VjdXJpdHkgaGVhZGVycyBvbiByZXF1ZXN0LgoKICAtdCwgLS10ZW1wbGF0ZT10ZW1wbGF0ZSAgICAgICAgICAgICAgICAgIFRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHRlbXBsYXRlIHBhc3MgdGhlIHlvdXIgdGVtcGxhdGUgZmlsZSBsb2NhdGlvbi4KCiAgLS1kaXNhYmxlLXRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWFibGUgZW5kIHBvaW50cyBncm91cGluZyBiYXNlZCBvbiByb3V0ZSBwYXRoIGluIEhBUgoKICAtLWh0dHAtc25pcHBldCAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIEhUVFAgc21hcGxlIGNvZGUgc25pcHBldCBmb3IgcmVxdWVzdCBhbmQgYXBwZW5kIGl0IGFzICd4LWNvZGUtc2FtcGxlJyB0byBPcGVuQVBJIHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC4KCmBgYAoKIyMgRGVtbwoKIyMjIEV4aXN0aW5nIFByb2plY3RzCgohW0V4aXN0aW5nIFByb2plY3QgRGVtb10oZGVtby9FeGlzdGluZ19Qcm9qZWN0X0RlbW8uZ2lmKQoKKipUb29scyoqIDogW0ZpcmVmb3hdKGh0dHBzOi8vd3d3Lm1vemlsbGEub3JnL2VuLVVTL2ZpcmVmb3gvbmV3LykgfCBbQ2hyb21lXShodHRwczovL3d3dy5nb29nbGUuY29tL2Nocm9tZS8pIHwgW1NhZmFyaV0oaHR0cHM6Ly93d3cuYXBwbGUuY29tL3NhZmFyaS8pIHwgW0NoYXJsZXMgUHJveHldKGh0dHBzOi8vd3d3LmNoYXJsZXNwcm94eS5jb20vKQoKIyMjIE5ldyBQcm9qZWN0cwoKIVtOZXcgUHJvamVjdCBEZW1vXShkZW1vL05ld19Qcm9qZWN0X0RlbW8uZ2lmKQoKKipUb29scyoqIDogW0luc29tbmlhXShodHRwczovL2luc29tbmlhLnJlc3QvZG93bmxvYWQvKQoKIyMgVXNlciBJbnRlcmZhY2Uncwo8cD4KPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vZGVtby5hdmFudGF0aW9uLmluL3VpL3N3YWdnZXIiPgogIDxpbWcgYWx0PSJTd2FnZ2VyLVVJIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvLVN3YWdnZXItZ3JlZW4uc3ZnP3N0eWxlPXNvY2lhbCZsb2dvPWRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUJpSkpSRUZVV0lXdFYxMXNGTmNWL3M2ZDJkMloyY1hlWGV3MVJpNTQ3WlFDVHRMS1lXMnNvaVRFWUtBLzBGWWlQMEloU1V2NjBGYmxJUStvcElSVVNhczJVbHBWYlJWVmtTTFVKcVVQTFpIVHB0U0FpOVZHbUpnUVFpS2JDR3pzeEFhWE5YaTlYdS9PN083TVBYM1kydkptQit3bCtaNUcrczY5NTd2M25uUG1ITUppVVgrL0ZvbDR0aEhUUXd4YUJlSnFBWXBBTUxPRE9JT3VFK0ZEbHZoci9IcjJUWXowV0l2WmxoWXlXTkxTdmxTSCtyd2crUml6MEZWTk9zdlg1aFFqNk1BZmxwQU9ZQ1lGMHBNS3JsN3dTaWNyQklndFNIbzFiWXY5TStlT1R0eW1nSjFLcEdYNktTSitCa3orbGVzc3JHblBvR0c5Q2RYanZzek9BWmY3TkF3Y00vRHh1eHFJcE1sTVA3MW01SDZCbmg1NzBRTENyZHNxZkdUL1Ewcng1V2pNUk52dUZLcWlydXR2aXZpUWl0T3ZWbURrakFabVBwVzFNbDlMZnZCV1lrRUJvWHMycmZDcTRxU2ljblRianhMVTBKSXR5L0VuY2ZFdERjZGZERW1aeHhpejNIanR6SW5MTnhWUWVkZUdrR1lZWjQyZ1UvK041eWVwYW1WNXA3NFpib3lvZVAxQW1NMkVNcFoyY3MycHN6M1haemt4WjlYVTVOVUNlaGNSMTI4L21Qak1uQVBBMG5vYjJ3OG1DSUxyZE9IclFsdWJQc3Nwc3grUit1YW5pV2xYK3crbktCb3J2bllwR2ZGQkx6SlRBdjZ3dkMwUi9yQkVJQ3hwdUUrckRVaXZrcjQ2MUQwbm9LSnRTOWdMZVNRYXN6d2J2cDBxV2pnNXB1SzE3MGZ3WG1jQU56NVMwZFJoM3RMUjRiMVY2SG1wRWgrZDFiQ2lPUXVmd1hOYzVJNDhybDN5WU9xcUd2UFgxYitjdmpLY0ZnQ2cyM2dHQk8yKzd5VkxOano3bHdETUtRVU42MDJzM1p4WjhLUjNiYzFnMmVvYy92dWhGMzEvRHBUdzl6NlpCQW4yUWlyUEFZQUFkaW9RdkdkdGgwa1YxYVhYbXhndHZOSzkzMDB1ZUhvQXVITmJCZy84WUFvQUVML2tLZUdEeXgyczdUQ0pCQjVGVTVOWDFNU203Z2VUdjdITnZYS2FxVUtjK3Z6c3lydkJDQlVPa2pQZEMxYmplZ3RnMHFxTnVnY0VpSFlvSHNsMWQ3c0x5R1VLQWhUUDRnWG9TeGhDWWRoWmR3RjFYN1NnZUZnU1lZY0FjR2QxWTU3Y3lxdWRaNWhUQ253QkNkVzdhUDhBZ0VDVmcweENnZU9TemFxSFVOMllGOFJZTFVDbzk0ZmNVMnVvdDVDdXRXdHk1WGtIRVBsOEhpd0pGLyt0dS9KRzBBRUR0WUlsclRSQ1RvbkJrZjFoZEwwUWhoNTBzT0U3MDJCbUhONWJoZDgvdkF5cDZ3cnNQT1BRbm1xODhuZ05jaGJCbWlHOHZLc0doL1pFSUNXamJmYzA5S0NENDc4TTRjalQ0Wkw5L1NFSHBQRG5oQkJzQzZXRW40TlFHSXJLY096Q2IxZW9ERVdSWUZ2QXlST0FBcCszQktSRDBKZElFQUcyUmVCYjFDeFNDazlPeTFvM2p6UzBXU3UvdW4rcXlNQ2FJWngvdzQrMy8xU0JhTXpFMXcrVy9NaHVpZGNQaERGNlRrUHp0MUpvZldRR0hyMDRpTi84V1JDRHAvUkxRcklZVFUrV1hvRVdZS3g3Y0FZa0dLTWYrTXB5RGdEakExNlFZTFR1U3BVNEI0RDBwQW93eGdXWWh5YUd2RktXaGdFVUZkQXFKR3hMSUxkd0RTcUNuUlh3K2hrZUYrMTJuakV4cERJSUZ3UURSNTA4aWRIejdua21sSUw2dkNsY2VUZmsvMStBUEQ3M0lCaDdYNE9URjhRU25XSkNUYjNCNFB4c3luMFNzeFhRbWxtd2ZaeERObE93MVNyY0JWdytyUUhFMW9SNXBWdWd0OWNFMDk4R2pobWNIQytOaGNnZGhScHc4bmRCREhTN2k1eVAvbU02VHI0VUJBQ0VWNVJXb2VTNGd2NHVuVm5paitqdnp3a0FZQWY3SEFkTzkyOHJTeFpzZUdJYURXMG1ybDMwNHNJSll4RUNEQXlmMXFBSEhYeHArMHdKMy8yYlNyQ2tIR1h4WTJCZVMxWVQyL3h6a05qWHZqZUJwczFsUnR3OHhJZFV5RHdoc2lvSElZcWZyZis0anU1Zmg4REFDL0crcm4zQXZJNG9iWHpoUHdGRGZuT2t6MWNkaldYcFUzVStWUkpFeGM3amd4NzgvYmtRczZSemNYVjZOOGJHYkdCK1R6aDROSnV6NVZla1E2bk9aOE44WTBTOUxRRnVtQmhXMGZsc21DRnB6SlRaTGVqdG5idmlvcWl6eGk4bkEzV05mYllwZGc2Y01KUmduVTFMWFFLcEhBeWUwdEI1WUNuYkpvMHl5NDJUNy96cnluemVOYmNpelZ2dmhpci9TYURhYUl1SjFsMHBSQnJMSDB6ZWZtMEpodnYwOGdhVE9SR3Q3VFZnNVE4RTZnQ0ErcGlGMWUwWk5MU1dONW81TEg0eVlXUmZMR3MwS3hMU3Nta0xRZndLb0RVQW9QcWtYTjZVRTBiUWdWNVpDRlF6S1pCT0tMZzY4SmtPcDhWMk5lczZtcVRBUm1MY0IxQ1V3RlVnMUpLQS9EVGorZjhBaThPckdZdEY5aFFBQUFBQVNVVk9SSzVDWUlJPSIvPgo8L2E+CjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL2RlbW8uYXZhbnRhdGlvbi5pbi91aSI+CiAgPGltZyBhbHQ9IlJlZG9jLVVJIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvLVJlZG9jLWdyZWVuLnN2Zz9zdHlsZT1zb2NpYWwmbG9nbz1kYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURJQUFBQXlDQU1BQUFBcDRYaURBQUFDVWxCTVZFVk1hWEVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0VUJRdFVCUXRVQlF0Vmx1SW9aQUFBQXhYUlNUbE1BQnYzSDZJNEI1Q01vRGJZWDF3V0hvdnNJRWxiK0Z2cFFENVg1QkFjZUFnTWtrTzMzMEl2czVWLzQ5cmNVM2c3WUtZaks5UE9HMGgzZ3k5UkpUQWtsRVBHVXpTWVkzd3JhNWt0ek1hUEZNbDdDeWRFTDNibEc0clIrc1JYVGpZRmpRWEk5ZG9Pb3RmSllJUkVaR3lDOU83NXV3YVR2VG5TS2NUNGZ3TU92cmtTbi9EeFVWOWFQNTJ4UlJVUEVrNXRyeG94SDYvV1lhVUtGck9sNkw3OFROMXF3bnB5Z3ZFQXF5RlUwU0lCOVlyb2NkV0NkcHU2cTFWMDIyekN6dUxzdVUwOU5JZ1hiRFVvQUFBTC9TVVJCVkVqSDNaYjFReUpCR0laWEVGQlBPUkVCUlVVc0xPenU3dTQreis3dU9sdXZ1N3U3dS92OXYyN1FrL1BjR2Y4QW45OTRkNStkblpudm00WGpkaG8yVXk1bVZDTGxKblJER2x3cG9aUHVVUlYrU2s1UkxJNWdHM3lGNS96NHptRlg2L0l5QjNKWk1hRGJJekp5Vkgyc3BpNFVrQlZWT1BNbHNZM21ZSjRuRUJnbi92K2RsZWRGVWNEcFJodjZsSnFxWkRCZDNobzdCNTBOaFhzOTNlRVNXMEtSOVpnWG0zaEw0SjdqekZpN01WOTR1UER6YkFrOFl4azc1Q1JTSU5tUm54ZUdZYWFXNFhUbnc3T2Y0MUtyUmVQaHU5Y0k5aWJUa0tvaE9NNnFoSWUrVUlzNTEwMGJNM0tkeE9abE9DRm5LQUVEeU5Sd3o5SzlOaW9nYTZqVGtKL0VtUXJXTURsd3NPT2tHbVBWdWF6dmZVTVlMckNVL25ZOG9jVEtPdWlkR0lyR0gzZElDWWdEbEpZYktFazlTMnRRY28yaHlEMXdreXp6WXY2S2xSRWRlZjR0V0ZreUZQdG90RWtOVTlyRWUzTHpiYmJpRjRHTFdvNzd2WnBuYmVTRGxoUG5ZWVdsSkhoQnZWN2QveUMvNHU4aTJwNmhaUHRna0JMMytxTlZ5MUIwYUo4a0ZiTmsrNWZsSDFPR2VFbUZSb2J4SWdiRmNrNCtBOEVHMkJkUEdtQWVubzhZeXBnQWx6bXVhM3BCSnBPcFpBWUU3MGhkem8xZ2x0Rmx1ZjdJTkRTTVdleW8zYy9zWDNhRXVCNnlqTThSRmtjMzByNWlZWUxTUnVNQ0ROTUhTWnRYWURhUkY4Yy9kVWZFZmFyeFdhK0FNSUVYOTZoOTRIK1Bjcjg0c2prZEVIN2ZtbmZkQ0ZFZ2Ftdm5POHJUekVkZEF3WEF0OXdNaXcwQ0V1V1dDWWVxaFQ1QVNzTVdROXRjRXJqZmNGaENZSlV2TlBJZ3hjUEt5NTJrV2FKZVh1MFdiM2NtUTFWZnlwOUZvYjRveGsxZ3VCenpaZGRteWtPOFZFRFNjSzZZNTVpVUtnc085UG1TbDU3VVNrMk1TSjNzVXp0YTNZQW9iMGZxRWx2WVJpdndhWTUzdkRidGMwRFNJTjNoSWwrcmtQbVIvNnlYYjVIMGlsR1RGaUlacHJ0NXNiTzNHeVNMcklQUEdtZ1I4NTBKSCtoWlBXa1dBY2tWZnB6eEJnNGRySk52cndwWFhjbFhUN2QyaG9jSEd6NkVxOG5KZlFxMFpUQ1UyaERXbHJvVk1JZXBOS1Z5YVVqRFVxU2RRZVkwZ3BRNzdpOFM5d2RxcmlDTkRPazFTZ0FBQUFCSlJVNUVya0pnZ2c9PSIgLz4KPC9hPgo8L3A+CgojIEZBUQoKPGgzPkhvdyB0byBnZW5lcmF0ZSBTdGF0aWMtVUk/PC9oMz4KPHA+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICBhdmFudGF0aW9uLXVpIGJhc2ggc2NyaXB0IHdpbGwgaGVscCB5b3UgdG8gYnVpbGQgc3RhdGljIHVzZXIgaW50ZXJmYWNlIGZvciB5b3VyIHNwZWNzIGJ1dCBpdCdzIHJlcXVpcmVkIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3JlZG9jLWNsaSI+cmVkb2MtY2xpLiA8L2E+PC9wPgo= readmeEtag: '"c7318ba2acb80de1609035a12fd652267e9f1c3f"' readmeLastModified: Tue, 22 Jun 2021 06:35:14 GMT repositoryId: 162068352 description: Build OpenAPI3.0 specification from HAR. created: '2018-12-17T03:17:54Z' updated: '2025-10-06T09:26:18Z' language: TypeScript archived: false stars: 91 watchers: 2 forks: 16 owner: anbuksv logo: https://avatars.githubusercontent.com/u/13810481?v=4 license: MIT repoEtag: '"5df568c595c0d065d2f9be00c5b01621aad3f228a9b0c7cb48efd5ba455b09ed"' repoLastModified: Mon, 06 Oct 2025 09:26:18 GMT foundInMaster: true id: 2b13d07e4984e87f5b5e3506ea242963 v3_1_link: https://github.com/anbuksv/avantation/issues/42 - source: https://openapi.tools/ name: Connexion category: - Server - Server Implementations language: Python link: https://connexion.readthedocs.io/en/latest/ repository: https://github.com/spec-first/connexion source_description: >- Connexion is a modern Python web framework that makes spec-first and api-first development easy. No code is generated. With Connexion, you write your server-side API handlers according to a naming convention, and the Connexion engine, given a spec, invokes your code after any input has been validated. v2: true v3: true repositoryMetadata: base64Readme: >- IDxhIGlkPSJ0b3AiPjwvYT4KIDxwIGFsaWduPSJjZW50ZXIiPgogICAgIDxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc3BlYy1maXJzdC9jb25uZXhpb24vbWFpbi9kb2NzL2ltYWdlcy9sb2dvX2Jhbm5lci5zdmciIHdpZHRoPSIxMDAlIi8+CiA8L3A+CiA8cCBhbGlnbj0iY2VudGVyIj4KICAgICA8YSBocmVmPSJodHRwczovL3B5cGkub3JnL3Byb2plY3QvY29ubmV4aW9uIj48aW1nIGFsdD0iY292ZXJhbGxzIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9zdGF0dXMvY29ubmV4aW9uLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSZjb2xvcj1icmlnaHRncmVlbiI+PC9hPgogICAgIDxhIGhyZWY9Imh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9jb25uZXhpb24iPjxpbWcgYWx0PSJQeVBJIHZlcnNpb24iIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvY29ubmV4aW9uP2NvbG9yPWJyaWdodGdyZWVuJnN0eWxlPWZsYXQtc3F1YXJlIj48L2E+CiAgICAgPGEgaHJlZj0iaHR0cHM6Ly9weXBpc3RhdHMub3JnL3BhY2thZ2VzL2Nvbm5leGlvbiI+PGltZyBhbHQ9IlB5UEkiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2RtL2Nvbm5leGlvbj9zdHlsZT1mbGF0LXNxdWFyZSZjb2xvcj1icmlnaHRncmVlbiI+PC9hPgogICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zcGVjLWZpcnN0L2Nvbm5leGlvbi9ibG9iL21haW4vTElDRU5TRSI+PGltZyBhbHQ9IkxpY2Vuc2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2wvY29ubmV4aW9uP3N0eWxlPWZsYXQtc3F1YXJlJmNvbG9yPWJyaWdodGdyZWVuIj48L2E+CiAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NwZWMtZmlyc3QvY29ubmV4aW9uL2FjdGlvbnMvd29ya2Zsb3dzL3BpcGVsaW5lLnltbCI+PGltZyBhbHQ9IkdpdEh1YiBXb3JrZmxvdyBTdGF0dXMiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvYWN0aW9ucy93b3JrZmxvdy9zdGF0dXMvc3BlYy1maXJzdC9jb25uZXhpb24vcGlwZWxpbmUueW1sP3N0eWxlPWZsYXQtc3F1YXJlIj48L2E+CiAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL3NwZWMtZmlyc3QvY29ubmV4aW9uP2JyYW5jaD1tYWluIj48aW1nIGFsdD0iQ292ZXJhbGxzIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY292ZXJhbGxzQ292ZXJhZ2UvZ2l0aHViL3NwZWMtZmlyc3QvY29ubmV4aW9uP3N0eWxlPWZsYXQtc3F1YXJlIj48L2E+CiAgICAgPGEgaHJlZj0iaHR0cHM6Ly9ndXJ1YmFzZS5pby9nL2Nvbm5leGlvbiI+PGltZyBhbHQ9Ikd1cnViYXNlIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvR3VydWJhc2UtQXNrJTIwQ29ubmV4aW9uJTIwR3VydS1icmlnaHRncmVlbj9zdHlsZT1mbGF0LXNxdWFyZSI+PC9hPgogICAgIDxicj4KICAgICA8YnI+CiAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jb25uZXhpb24ucmVhZHRoZWRvY3MuaW8vZW4vc3RhYmxlLyI+PHN0cm9uZz5FeHBsb3JlIHRoZSBkb2NzIMK7PC9zdHJvbmc+PC9hPgogPC9wPgoKLS0tCgpDb25uZXhpb24gaXMgYSBtb2Rlcm4gUHl0aG9uIHdlYiBmcmFtZXdvcmsgdGhhdCBtYWtlcyBzcGVjLWZpcnN0IGFuZCBhcGktZmlyc3QgZGV2ZWxvcG1lbnQgZWFzeS4KWW91IGRlc2NyaWJlIHlvdXIgQVBJIGluIGFuIFtPcGVuQVBJXVtPcGVuQVBJXSAob3IgW1N3YWdnZXJdW1N3YWdnZXJdKSBzcGVjaWZpY2F0aW9uIHdpdGggYXMgbXVjaCAKZGV0YWlsIGFzIHlvdSB3YW50IGFuZCBDb25uZXhpb24gd2lsbCBndWFyYW50ZWUgdGhhdCBpdCB3b3JrcyBhcyB5b3Ugc3BlY2lmaWVkLgoKSXQgd29ya3MgZWl0aGVyIHN0YW5kYWxvbmUsIG9yIGluIGNvbWJpbmF0aW9uIHdpdGggYW55IEFTR0kgb3IgV1NHSS1jb21wYXRpYmxlIGZyYW1ld29yayEKCjxwIGFsaWduPSJjZW50ZXIiPgogICA8YnI+CiAgIDxhIGhyZWY9Imh0dHBzOi8vY29ubmV4aW9uLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC92My5odG1sIj48c3Ryb25nPvCfk6IgQ29ubmV4aW9uIDMgd2FzIHJlY2VudGx5IHJlbGVhc2VkISBSZWFkIGFib3V0IHRoZSBjaGFuZ2VzIGhlcmUgwrs8L3N0cm9uZz48L2E+CiAgIDxicj4KICAgPGJyPgo8L3A+CgojIyDinKggRmVhdHVyZXMKCkNvbm5leGlvbiBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uYWxpdHkgKipiYXNlZCBvbiB5b3VyIHNwZWNpZmljYXRpb24qKjoKCi0g8J+ajyAqKkF1dG9tYXRpYyByb3V0ZSByZWdpc3RyYXRpb24qKiwgbm8gYGBAcm91dGVgYCBkZWNvcmF0b3JzIG5lZWRlZAotIPCflJIgKipBdXRoZW50aWNhdGlvbioqLCBzcGxpdCBmcm9tIHlvdXIgYXBwbGljYXRpb24gbG9naWMKLSDwn5SOICoqUmVxdWVzdCBhbmQgcmVzcG9uc2UgdmFsaWRhdGlvbioqIG9mIGhlYWRlcnMsIHBhcmFtZXRlcnMsIGFuZCBib2R5Ci0g8J+TrCAqKlBhcmFtZXRlciBwYXJzaW5nIGFuZCBpbmplY3Rpb24qKiwgbm8gcmVxdWVzdCBvYmplY3QgbmVlZGVkCi0g8J+TqCAqKlJlc3BvbnNlIHNlcmlhbGl6YXRpb24qKiwgeW91IGNhbiByZXR1cm4gcmVndWxhciBQeXRob24gb2JqZWN0cwotIPCfk7ogKipBIFN3YWdnZXIgVUkgY29uc29sZSoqIHdpdGggbGl2ZSBkb2N1bWVudGF0aW9uIGFuZCDigJh0cnkgaXQgb3V04oCZIGZlYXR1cmUKLSDwn6epICoqUGx1Z2dhYmlsaXR5KiosIGluIGFsbCBkaW1lbnNpb25zCgpDb25uZXhpb24gYWxzbyAqKmhlbHBzIHlvdSB3cml0ZSB5b3VyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbioqIGFuZCBkZXZlbG9wIGFnYWluc3QgaXQgYnkgcHJvdmlkaW5nIGEgY29tbWFuZCBsaW5lIGludGVyZmFjZSB3aGljaCBsZXRzIHlvdSB0ZXN0IGFuZCBtb2NrIHlvdXIgc3BlY2lmaWNhdGlvbi4KCmBgYHNoZWxsCiAgIGNvbm5leGlvbiBydW4gb3BlbmFwaS55YW1sCmBgYAoKIDxwIGFsaWduPSJyaWdodCI+KDxhIGhyZWY9IiN0b3AiPmJhY2sgdG8gdG9wPC9hPik8L3A+CgoKIyMg8J+rtiBTcG9uc29ycwoKPGEgaHJlZj0iaHR0cHM6Ly93d3cubWw2LmV1Ij48aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NwZWMtZmlyc3QvY29ubmV4aW9uL21haW4vZG9jcy9pbWFnZXMvc3BvbnNvcnMvTUw2LnBuZyIgdGl0bGU9TUw2IGhlaWdodD0iMTAwIj48L2E+CgpTcG9uc29ycyBoZWxwIHVzIGRlZGljYXRlIHRpbWUgdG8gbWFpbnRhaW4gQ29ubmV4aW9uLiBXYW50IHRvIGhlbHA/Cgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc3BvbnNvcnMvc3BlYy1maXJzdCI+PHN0cm9uZz5FeHBsb3JlIHRoZSBvcHRpb25zIMK7PC9zdHJvbmc+PC9hPgoKPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3RvcCI+YmFjayB0byB0b3A8L2E+KTwvcD4KCiMjIPCfqqQgV2h5IENvbm5leGlvbgoKV2l0aCBDb25uZXhpb24sIHlvdSB3cml0ZSB0aGUgc3BlYyBmaXJzdC4gQ29ubmV4aW9uIHRoZW4gY2FsbHMgeW91ciBQeXRob24KY29kZSwgaGFuZGxpbmcgdGhlIG1hcHBpbmcgZnJvbSB0aGUgc3BlY2lmaWNhdGlvbiB0byB0aGUgY29kZS4gVGhpcwppbmNlbnRpdml6ZXMgeW91IHRvIHdyaXRlIHRoZSBzcGVjaWZpY2F0aW9uIHNvIHRoYXQgYWxsIG9mIHlvdXIKZGV2ZWxvcGVycyBjYW4gdW5kZXJzdGFuZCB3aGF0IHlvdXIgQVBJIGRvZXMsIGV2ZW4gYmVmb3JlIHlvdSB3cml0ZSBhCnNpbmdsZSBsaW5lIG9mIGNvZGUuCgpJZiBtdWx0aXBsZSB0ZWFtcyBkZXBlbmQgb24geW91ciBBUElzLCB5b3UgY2FuIHVzZSBDb25uZXhpb24gdG8gZWFzaWx5CnNlbmQgdGhlbSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB5b3VyIEFQSS4gVGhpcyBndWFyYW50ZWVzIHRoYXQgeW91ciBBUEkgd2lsbApmb2xsb3cgdGhlIHNwZWNpZmljYXRpb24gdGhhdCB5b3Ugd3JvdGUuIFRoaXMgaXMgYSBkaWZmZXJlbnQgcHJvY2VzcyBmcm9tCnRoZSBvbmUgb2ZmZXJlZCBieSBtb3N0IGZyYW1ld29ya3MsIHdoaWNoIGdlbmVyYXRlIGEgc3BlY2lmaWNhdGlvbgoqYWZ0ZXIqIHlvdSd2ZSB3cml0dGVuIHRoZSBjb2RlLgpTb21lIGRpc2FkdmFudGFnZXMgb2YgZ2VuZXJhdGluZyBzcGVjaWZpY2F0aW9ucyBiYXNlZCBvbiBjb2RlIGlzIHRoYXQKdGhleSBvZnRlbiBlbmQgdXAgbGFja2luZyBkZXRhaWxzIG9yIG1peCB5b3VyIGRvY3VtZW50YXRpb24gd2l0aCB0aGUgaW1wbGVtZW50YXRpb24KbG9naWMgb2YgeW91ciBhcHBsaWNhdGlvbi4KCjxwIGFsaWduPSJyaWdodCI+KDxhIGhyZWY9IiN0b3AiPmJhY2sgdG8gdG9wPC9hPik8L3A+CgojIyDimpLvuI8gSG93IHRvIFVzZQoKIyMjIEluc3RhbGxhdGlvbgoKWW91IGNhbiBpbnN0YWxsIGNvbm5leGlvbiB1c2luZyBwaXA6CgpgYGBzaGVsbAogICAgJCBwaXAgaW5zdGFsbCBjb25uZXhpb24KYGBgCgpDb25uZXhpb24gcHJvdmlkZXMgJ2V4dHJhcycgd2l0aCBvcHRpb25hbCBkZXBlbmRlbmNpZXMgdG8gdW5sb2NrIGFkZGl0aW9uYWwgZmVhdHVyZXM6CgotIGBzd2FnZ2VyLXVpYDogRW5hYmxlcyBhIFN3YWdnZXIgVUkgY29uc29sZSBmb3IgeW91ciBhcHBsaWNhdGlvbi4KLSBgdXZpY29ybmA6IEVuYWJsZXMgdG8gcnVuIHRoZSB5b3VyIGFwcGxpY2F0aW9uIHVzaW5nIGBhcHAucnVuKClgIGZvcgogIGRldmVsb3BtZW50IGluc3RlYWQgb2YgdXNpbmcgYW4gZXh0ZXJuYWwgQVNHSSBzZXJ2ZXIuCi0gYGZsYXNrYDogRW5hYmxlcyB0aGUgYEZsYXNrQXBwYCB0byBidWlsZCBhcHBsaWNhdGlvbnMgY29tcGF0aWJsZSB3aXRoIHRoZSBGbGFzawogIGVjb3N5c3RlbS4KCllvdSBjYW4gaW5zdGFsbCB0aGVtIGFzIGZvbGxvd3M6CgpgYGBzaGVsbAogICAgJCBwaXAgaW5zdGFsbCBjb25uZXhpb25bc3dhZ2dlci11aV0KICAgICQgcGlwIGluc3RhbGwgY29ubmV4aW9uW3N3YWdnZXItdWksdXZpY29ybl0KYGBgCgo8cCBhbGlnbj0icmlnaHQiPig8YSBocmVmPSIjdG9wIj5iYWNrIHRvIHRvcDwvYT4pPC9wPgoKIyMjIENyZWF0aW5nIHlvdXIgYXBwbGljYXRpb24KCkNvbm5leGlvbiBjYW4gYmUgdXNlZCBlaXRoZXIgYXMgYSBzdGFuZGFsb25lIGFwcGxpY2F0aW9uIG9yIGFzIGEgbWlkZGxld2FyZSB3cmFwcGluZyBhbiBleGlzdGluZwpBU0dJIChvciBXU0dJKSBhcHBsaWNhdGlvbiB3cml0dGVuIHVzaW5nIGEgZGlmZmVyZW50IGZyYW1ld29yay4gVGhlIHN0YW5kYWxvbmUgYXBwbGljYXRpb24gY2FuIGJlCmJ1aWx0IHVzaW5nIGVpdGhlciB0aGUgYEFzeW5jQXBwYCBvciBgRmxhc2tBcHBgLgoKLSBUaGUgYEFzeW5jQXBwYCBpcyBhIGxpZ2h0d2VpZ2h0IGFwcGxpY2F0aW9uIHdpdGggbmF0aXZlIGFzeW5jaHJvbm91cyBzdXBwb3J0LiBVc2UgaXQgaWYgeW91CiAgYXJlIHN0YXJ0aW5nIGEgbmV3IHByb2plY3QgYW5kIGhhdmUgbm8gc3BlY2lmaWMgcmVhc29uIHRvIHVzZSBvbmUgb2YgdGhlIG90aGVyIG9wdGlvbnMuCgogIGBgYFB5dGhvbgogICAgICBmcm9tIGNvbm5leGlvbiBpbXBvcnQgQXN5bmNBcHAKCiAgICAgIGFwcCA9IEFzeW5jQXBwKF9fbmFtZV9fKQogIGBgYAoKLSBUaGUgYEZsYXNrQXBwYCBsZXZlcmFnZXMgdGhlIGBGbGFza2AgZnJhbWV3b3JrLCB3aGljaCBpcyB1c2VmdWwgaWYgeW91J3JlIG1pZ3JhdGluZyBmcm9tCiAgY29ubmV4aW9uIDIuWCBvciB5b3Ugd2FudCB0byBsZXZlcmFnZSB0aGUgYEZsYXNrYCBlY29zeXN0ZW0uCgogIGBgYHB5dGhvbgogICAgICBmcm9tIGNvbm5leGlvbiBpbXBvcnQgRmxhc2tBcHAKCiAgICAgIGFwcCA9IEZsYXNrQXBwKF9fbmFtZV9fKQogIGBgYAoKLSBUaGUgYENvbm5leGlvbk1pZGRsZXdhcmVgIGNhbiBiZSB3cmFwcGVkIGFyb3VuZCBhbnkgZXhpc3RpbmcgQVNHSSBvciBXU0dJIGFwcGxpY2F0aW9uLgogIFVzZSBpdCBpZiB5b3UgYWxyZWFkeSBoYXZlIGFuIGFwcGxpY2F0aW9uIHdyaXR0ZW4gaW4gYSBkaWZmZXJlbnQgZnJhbWV3b3JrIGFuZCB3YW50IHRvIGFkZAogIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgY29ubmV4aW9uCgogIGBgYHB5dGhvbgogICAgICBmcm9tIGFzZ2lfZnJhbWV3b3JrIGltcG9ydCBBcHAKICAgICAgZnJvbSBjb25uZXhpb24gaW1wb3J0IENvbm5leGlvbk1pZGRsZXdhcmUKCiAgICAgIGFwcCA9IEFwcChfX25hbWVfXykKICAgICAgYXBwID0gQ29ubmV4aW9uTWlkZGxld2FyZShhcHApCiAgYGBgCgo8cCBhbGlnbj0icmlnaHQiPig8YSBocmVmPSIjdG9wIj5iYWNrIHRvIHRvcDwvYT4pPC9wPgoKIyMjIFJlZ2lzdGVyaW5nIGFuIEFQSQoKV2hpbGUgeW91IGNhbiByZWdpc3RlciBpbmRpdmlkdWFsIHJvdXRlcyBvbiB5b3VyIGFwcGxpY2F0aW9uLCBDb25uZXhpb24gcmVhbGx5IHNoaW5lcyB3aGVuIHlvdQpyZWdpc3RlciBhbiBBUEkgZGVmaW5lZCBieSBhbiBPcGVuQVBJIChvciBTd2FnZ2VyKSBzcGVjaWZpY2F0aW9uLgpUaGUgb3BlcmF0aW9uIGRlc2NyaWJlZCBpbiB5b3VyIHNwZWNpZmljYXRpb24gaXMgYXV0b21hdGljYWxseSBsaW5rZWQgdG8geW91ciBQeXRob24gdmlldyBmdW5jdGlvbiB2aWEgdGhlIGBgb3BlcmF0aW9uSWRgYAoKKipydW4ucHkqKgoKYGBgcHl0aG9uCiAgIGRlZiBwb3N0X2dyZWV0aW5nKG5hbWU6IHN0ciwgZ3JlZXRpbmc6IHN0cik6ICAjIFBhcmFtYWV0ZXJzIGFyZSBhdXRvbWF0aWNhbGx5IHVucGFja2VkCiAgICAgICByZXR1cm4gZiJ7Z3JlZXRpbmd9IHtuYW1lfSIsIDIwMCAgICAgICAgICAjIFJlc3BvbnNlcyBhcmUgYXV0b21hdGljYWxseSBzZXJpYWxpemVkCgogICBhcHAuYWRkX2FwaSgib3BlbmFwaS55YW1sIikKYGBgCgoqKm9wZW5hcGkueWFtbCoqCgpgYGB5YW1sCiAgIC4uLgogICBwYXRoczoKICAgICAvZ3JlZXRpbmcve25hbWV9OgogICAgICAgcG9zdDoKICAgICAgICAgb3BlcmF0aW9uSWQ6IHJ1bi5wb3N0X2dyZWV0aW5nCiAgICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgICAnMjAwJzoKICAgICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICAgIHRleHQvcGxhaW46CiAgICAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgICAgLSBuYW1lOiBuYW1lCiAgICAgICAgICAgICBpbjogcGF0aAogICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgLSBuYW1lOiBncmVldGluZwogICAgICAgICAgICAgaW46IHF1ZXJ5CiAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKYGBgCgo8cCBhbGlnbj0icmlnaHQiPig8YSBocmVmPSIjdG9wIj5iYWNrIHRvIHRvcDwvYT4pPC9wPgoKIyMjIFJ1bm5pbmcgeW91ciBhcHBsaWNhdGlvbgoKSWYgeW91IGluc3RhbGxlZCBjb25uZXhpb24gdXNpbmcgYGNvbm5leGlvblt1dmljb3JuXWAsIHlvdSBjYW4gcnVuIGl0IHVzaW5nIHRoZQpgcnVuYCBtZXRob2QuIFRoaXMgaXMgb25seSByZWNvbW1lbmRlZCBmb3IgZGV2ZWxvcG1lbnQ6CgpgYGBweXRob24KICAgIGFwcC5ydW4oKQpgYGAKCkluIHByb2R1Y3Rpb24sIHJ1biB5b3VyIGFwcGxpY2F0aW9uIHVzaW5nIGFuIEFTR0kgc2VydmVyIHN1Y2ggYXMgYHV2aWNvcm5gLiBJZiB5b3UgZGVmaW5lZCB5b3VyCmBhcHBgIGluIGEgcHl0aG9uIG1vZHVsZSBjYWxsZWQgYHJ1bi5weWAsIHlvdSBjYW4gcnVuIGl0IGFzIGZvbGxvd3M6CgpgYGBzaGVsbAogICAgJCB1dmljb3JuIHJ1bjphcHAKYGBgCgpPciB3aXRoIGd1bmljb3JuOgoKYGBgc2hlbGwKICAgICQgZ3VuaWNvcm4gLWsgdXZpY29ybi53b3JrZXJzLlV2aWNvcm5Xb3JrZXIgcnVuOmFwcApgYGAKCi0tLS0KCk5vdyB5b3UncmUgYWJsZSB0byBydW4gYW5kIHVzZSBDb25uZXhpb24hCgpTZWUgdGhlIFtleGFtcGxlc11bZXhhbXBsZXNdIGZvbGRlciBmb3IgbW9yZSBleGFtcGxlcy4KCjxwIGFsaWduPSJyaWdodCI+KDxhIGhyZWY9IiN0b3AiPmJhY2sgdG8gdG9wPC9hPik8L3A+CgojIyDwn5OcIENoYW5nZXMKCkEgZnVsbCBjaGFuZ2Vsb2cgaXMgbWFpbnRhaW5lZCBvbiB0aGUgW0dpdEh1YiByZWxlYXNlcyBwYWdlXVtSZWxlYXNlc10uCgo8cCBhbGlnbj0icmlnaHQiPig8YSBocmVmPSIjdG9wIj5iYWNrIHRvIHRvcDwvYT4pPC9wPgoKIyMg8J+ksiBDb250cmlidXRpbmcKCldlIHdlbGNvbWUgeW91ciBpZGVhcywgaXNzdWVzLCBhbmQgcHVsbCByZXF1ZXN0cy4gSnVzdCBmb2xsb3cgdGhlCnVzdWFsL3N0YW5kYXJkIEdpdEh1YiBwcmFjdGljZXMuCgpGb3IgZWFzeSBkZXZlbG9wbWVudCwgaW5zdGFsbCBjb25uZXhpb24gdXNpbmcgcG9ldHJ5IHdpdGggYWxsIGV4dHJhcywgYW5kCmluc3RhbGwgdGhlIHByZS1jb21taXQgaG9va3MgdG8gYXV0b21hdGljYWxseSBydW4gYmxhY2sgZm9ybWF0dGluZyBhbmQgc3RhdGljIGFuYWx5c2lzIGNoZWNrcy4KCmBgYHNoZWxsCiAgICBwaXAgaW5zdGFsbCBwb2V0cnkKICAgIHBvZXRyeSBpbnN0YWxsIC0tYWxsLWV4dHJhcwogICAgcHJlLWNvbW1pdCBpbnN0YWxsCmBgYAoKWW91IGNhbiBmaW5kIG91dCBtb3JlIGFib3V0IGhvdyBDb25uZXhpb24gd29ya3MgYW5kIHdoZXJlIHRvIGFwcGx5IHlvdXIgY2hhbmdlcyBieSBoYXZpbmcgYSBsb29rCmF0IG91ciBbYXJjaGl0ZWN0dXJlXVtBcmNoaXRlY3R1cmVdLgoKVW5sZXNzIHlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVyd2lzZSBpbiBhZHZhbmNlLCBhbnkgbm9uIHRyaXZpYWwKY29udHJpYnV0aW9uIGludGVudGlvbmFsbHkgc3VibWl0dGVkIGZvciBpbmNsdXNpb24gaW4gdGhpcyBwcm9qZWN0IGJ5IHlvdQp0byB0aGUgc3Rld2FyZCBvZiB0aGlzIHJlcG9zaXRvcnkgc2hhbGwgYmUgdW5kZXIgdGhlCnRlcm1zIGFuZCBjb25kaXRpb25zIG9mIEFwYWNoZSBMaWNlbnNlIDIuMCB3cml0dGVuIGJlbG93LCB3aXRob3V0IGFueQphZGRpdGlvbmFsIGNvcHlyaWdodCBpbmZvcm1hdGlvbiwgdGVybXMgb3IgY29uZGl0aW9ucy4KCjxwIGFsaWduPSJyaWdodCI+KDxhIGhyZWY9IiN0b3AiPmJhY2sgdG8gdG9wPC9hPik8L3A+CgojIyDwn5mPIFRoYW5rcwoKV2UnZCBsaWtlIHRvIHRoYW5rIGFsbCBvZiBDb25uZXhpb24ncyBjb250cmlidXRvcnMgZm9yIHdvcmtpbmcgb24gdGhpcwpwcm9qZWN0LCBTd2FnZ2VyL09wZW5BUEkgZm9yIHRoZWlyIHN1cHBvcnQsIGFuZCBaYWxhbmRvIGZvciBvcmlnaW5hbGx5IGRldmVsb3BpbmcgYW5kIHJlbGVhc2luZyBDb25uZXhpb24uCgojIyDwn5OaIFJlY29tbWVuZGVkIFJlc291cmNlcwoKQWJvdXQgdGhlIGFkdmFudGFnZXMgb2Ygd29ya2luZyBzcGVjLWZpcnN0OgoKKiBbQmxvZyBBdGxhc3NpYW5dW0Jsb2cgQXRsYXNzaWFuXQoqIFtBUEkgZ3VpZGVsaW5lcyBaYWxhbmRvXVtBUEkgZ3VpZGVsaW5lcyBaYWxhbmRvXQoqIFtCbG9nIE1MNl1bQmxvZyBNTDZdCiogW0Jsb2cgWmFsYW5kb11bQmxvZyBaYWxhbmRvXQoKVG9vbHMgdG8gaGVscCB5b3Ugd29yayBzcGVjLWZpcnN0OgoKKiBbT25saW5lIHN3YWdnZXIgZWRpdG9yXVtPbmxpbmUgc3dhZ2dlciBlZGl0b3JdCiogW1ZTIENvZGUgcGx1Z2luXVtWUyBDb2RlIHBsdWdpbl0KKiBbUHljaGFybSBwbHVnaW5dW1B5Y2hhcm0gcGx1Z2luXQoKW09wZW5BUEldOiBodHRwczovL29wZW5hcGlzLm9yZy8KW1N3YWdnZXJdOiBodHRwOi8vc3dhZ2dlci5pby9vcGVuLXNvdXJjZS1pbnRlZ3JhdGlvbnMvCltCbG9nIGF0bGFzc2lhbl06IGh0dHBzOi8vd3d3LmF0bGFzc2lhbi5jb20vYmxvZy90ZWNobm9sb2d5L3NwZWMtZmlyc3QtYXBpLWRldmVsb3BtZW50CltCbG9nIE1MNl06IGh0dHBzOi8vYmxvZy5tbDYuZXUvd2h5LXdlLWRlY2lkZWQtdG8taGVscC1tYWludGFpbi1jb25uZXhpb24tYzlmNDQ5ODc3MDgzCltCbG9nIFphbGFuZG9dOiBodHRwczovL2VuZ2luZWVyaW5nLnphbGFuZG8uY29tL3Bvc3RzLzIwMTYvMTIvY3JhZnRpbmctZWZmZWN0aXZlLW1pY3Jvc2VydmljZXMtaW4tcHl0aG9uLmh0bWwKW0FQSSBndWlkZWxpbmVzIFphbGFuZG9dOiBodHRwczovL29wZW5zb3VyY2UuemFsYW5kby5jb20vcmVzdGZ1bC1hcGktZ3VpZGVsaW5lcy8jYXBpLWZpcnN0CltPbmxpbmUgc3dhZ2dlciBlZGl0b3JdOiBodHRwczovL2VkaXRvci5zd2FnZ2VyLmlvLwpbVlMgQ29kZSBwbHVnaW5dOiBodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9NDJDcnVuY2gudnNjb2RlLW9wZW5hcGkKW1B5Y2hhcm0gcGx1Z2luXTogaHR0cHM6Ly9wbHVnaW5zLmpldGJyYWlucy5jb20vcGx1Z2luLzE0ODM3LW9wZW5hcGktc3dhZ2dlci1lZGl0b3IKW2V4YW1wbGVzXTogaHR0cHM6Ly9naXRodWIuY29tL3NwZWMtZmlyc3QvY29ubmV4aW9uL2Jsb2IvbWFpbi9leGFtcGxlcwpbUmVsZWFzZXNdOiBodHRwczovL2dpdGh1Yi5jb20vc3BlYy1maXJzdC9jb25uZXhpb24vcmVsZWFzZXMKW0FyY2hpdGVjdHVyZV06IGh0dHBzOi8vZ2l0aHViLmNvbS9zcGVjLWZpcnN0L2Nvbm5leGlvbi9ibG9iL21haW4vZG9jcy9pbWFnZXMvYXJjaGl0ZWN0dXJlLnBuZwo= readmeEtag: '"cc069a5d4ed02ea14282a4a02825c583d1c8c21e"' readmeLastModified: Mon, 13 Oct 2025 18:15:57 GMT repositoryId: 35882519 description: >- Connexion is a modern Python web framework that makes spec-first and api-first development easy. created: '2015-05-19T13:05:58Z' updated: '2026-01-30T17:32:33Z' language: Python archived: false stars: 4576 watchers: 75 forks: 781 owner: spec-first logo: https://avatars.githubusercontent.com/u/58754196?v=4 license: Apache-2.0 repoEtag: '"dccaa3e0e2732d9659f9019f019324c5002b602311d68b7bb93db9aaf2032551"' repoLastModified: Fri, 30 Jan 2026 17:32:33 GMT foundInMaster: true homepage: https://github.com/zalando/connexion id: 2d575abdf2671028868058b2442d9131 oldLocations: - https://github.com/zalando/connexion - source: https://openapi.tools/ name: CUE category: DSL language: CUE source_description: >- CUE is an open source language, with a rich set of APIs and tooling, for defining, generating, and validating all kinds of data configuration, APIs, database schemas, code, etc. CUE currently supports generating OpenAPI through its API. link: https://cuelang.org/docs/integrations/openapi/ v2: false v3: true foundInMaster: true id: a3c52256b7de10d04cbf847a9f0f3fb7 - source: https://openapi.tools/ name: JetBrains tools (IntelliJ IDEA, PyCharm etc.) category: GUI Editors language: - Java - Python link: https://plugins.jetbrains.com/plugin/14394-openapi-specifications repository: null source_description: > JetBrains development tools like IntelliJ IDEA, PyCharm and others come with a bundled *OpenAPI Specifications* plugin. The plugin allows you to write the OpenAPI specifications and supports you with validations, formatting, code-completion etc. It supports a *text view* as well as a rendered SwaggerUI-like *graphical interface*. v2: true v3: true id: 7610df08711c820262bf0fa23fe0279f foundInMaster: true - source: https://openapi.tools/ name: Framna Docs category: Documentation link: https://github.com/shapehq/framna-docs/ language: TypeScript source_description: >- Self-hosted web portal that centralizes OpenAPI documentation and facilitates spec-driven development, built with GitHub-based authorization. Integrates with Swagger UI, Stoplight Elements, and Redocly. v2: true v3: true v3_1: true id: d9e93963d6018c3e90a9302baf0a1090 foundInMaster: true - source: https://openapi.tools/ name: Frevo category: - Documentation link: https://frevo.dev?ref=openapitools language: SaaS source_description: >- Keep track of changes in your OpenAPI specifications & generate API references ⛱️ v2: false v3: true v3_1: true id: 4bbbc7dd6703e50c5719dc27fbb4de65 foundInMaster: true - source: https://openapi.tools/ name: Kong Enterprise Edition category: - Documentation - Gateway link: https://konghq.com/kong-enterprise-edition/ language: Lua source_description: >- Highly customizable developer portal with developer onboarding, integrated with the Kong API Gateway v2: true v3: true foundInMaster: true id: 263dd2cb7817fcb9aa55e4fd97b6b852 v3_1_link: https://github.com/Kong/insomnia/issues/4732 v3_1: true - source: - https://openapi.tools/ - openapi3 tags name: Rate My OpenAPI category: - Description Validators - Security - Server Implementations language: Go repository: https://github.com/zuplo/rate-my-openapi link: https://ratemyopenapi.com source_description: Free and open source OpenAPI automated review and validation tool. v3: true v3_1: true id: 54fc718fad968b8a7eecd1e88f3fff99 repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9yYXRlbXlvcGVuYXBpLmNvbS8iPgogICAgPGltZyBzcmM9Imh0dHBzOi8vY2RuLnp1cGxvLmNvbS9zdGF0aWMvbG9nb3MvbG9nby5zdmciIGhlaWdodD0iNTAiPgogICAgPGgxIGFsaWduPSJjZW50ZXIiPlJhdGUgTXkgT3BlbkFQSTwvaDE+CiAgPC9hPgo8L3A+Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPgogIDxwIGFsaWduPSJjZW50ZXIiPgogICAgPGEgYXJpYS1sYWJlbD0iWnVwbG8gbG9nbyIgaHJlZj0iaHR0cHM6Ly96dXBsby5jb20iPgogICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9NQURFJTIwQlklMjBadXBsby1GRjAwQkQuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1kYXRhOmltYWdlL3N2ZyUyYnhtbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlHWnBiR3c5SW01dmJtVWlJSFpwWlhkQ2IzZzlJakFnTUNBek55QXpNaUlnWVhKcFlTMW9hV1JrWlc0OUluUnlkV1VpUGdvZ0lEeHdZWFJvSUdacGJHdzlJaU5HUmpBd1FrUWlJR1E5SWsweU55NHhORElnTVRrdU9UYzRTREUyTGpZeVRESTNMamd6SURndU56UTJZUzQzTlRndU56VTRJREFnTURBdExqVXpOQzB4TGpJNU0wZzVMalE0T0ZZd2FERTVMalV6TkdFM0xqVTNNeUEzTGpVM015QXdJREF4TkM0d05qVWdNUzR4TWpVZ055NDFPVEVnTnk0MU9URWdNQ0F3TVRJdU9ETTJJRE11TVRJMklEY3VOREF5SURjdU5EQXlJREFnTURFdE1TNDBOakVnT0M0ek9UaHNMVGN1TXpJZ055NHpNamg2SWk4K0NpQWdQSEJoZEdnZ1ptbHNiRDBpSTBaR01EQkNSQ0lnWkQwaVRUa3VORGc1SURFeExqQTBNbWd4TUM0MU1qUnNMVEV4TGpFNUlERXhMakl4WVM0M056SXVOemN5SURBZ01EQXVOVFF6SURFdU16RTJhREUzTGpjMU9YWTNMalExTWtnM0xqWXhZVGN1TlRjMElEY3VOVGMwSURBZ01ERXROQzR3TmpVdE1TNHhNalZCTnk0MU9UTWdOeTQxT1RNZ01DQXdNUzQzTVNBeU5pNDNOamhoTnk0ME1ETWdOeTQwTURNZ01DQXdNVEV1TkRZeUxUZ3VNemszYkRjdU16RTRMVGN1TXpJNWVpSXZQZ284TDNOMlp6NEsmbGFiZWxDb2xvcj0wMDAiPjwvYT4KICAgIDxhIGFyaWEtbGFiZWw9Ik5QTSB2ZXJzaW9uIiBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9ybW9hIj48aW1nIGFsdD0iTlBNIEJhZGdlIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3Yvcm1vYS5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsYWJlbENvbG9yPTAwMDAwMCI+PC9hPgogICAgPGEgYXJpYS1sYWJlbD0iTGljZW5zZSIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3p1cGxvL3JhdGUtbXktb3BlbmFwaS9ibG9iL21haW4vTElDRU5TRSI+PGltZyBhbHQ9IkxpY2Vuc2UgQmFkZ2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9ybW9hLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxhYmVsQ29sb3I9MDAwMDAwIj48L2E+CiAgICA8YSBhcmlhLWxhYmVsPSJKb2luIHRoZSBjb21tdW5pdHkgb24gRGlzY29yZCIgaHJlZj0iaHR0cHM6Ly9kaXNjb3JkLmNvbS9jaGFubmVscy84NDg5MTM5OTAzNjA2MjkyNjgvMTIzNTI5NDg3Njc3ODYyNzI0NiI+PGltZyBhbHQ9IkRpc2Nyb2QgQmFkZ2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9DaGF0JTIwb24lMjBkaXNjb3JkLTU4NjVGMi5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPWRpc2NvcmQmbGFiZWxDb2xvcj0wMDAwMDAmbG9nb1dpZHRoPTIwIj48L2E+CiAgPC9wPgogIDxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20venVwbG8iPgogICAgPGltZyBhbHQ9IlggKGZvcm1lcmx5IFR3aXR0ZXIpIEZvbGxvdyIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3R3aXR0ZXIvZm9sbG93L3p1cGxvIj4KICA8L2E+CiAgPHAgYWxpZ249ImNlbnRlciI+CiAgICA8YSBocmVmPSIjb3BlbmFwaS0tLWludHJvZHVjdGlvbiI+PHN0cm9uZz5JbnRyb2R1Y3Rpb248L3N0cm9uZz48L2E+IMK3IAogICAgPGEgaHJlZj0iI3dlYnNpdGUiPjxzdHJvbmc+V2Vic2l0ZTwvc3Ryb25nPjwvYT4gwrcgCiAgICA8YSBocmVmPSIjY2xpIj48c3Ryb25nPkNMSTwvc3Ryb25nPjwvYT4gwrcgCiAgICA8YSBocmVmPSIjZ2l0aHViLWFjdGlvbiI+PHN0cm9uZz5HaXRIdWIgQWN0aW9uPC9zdHJvbmc+PC9hPiDCtyAKICAgIDxhIGhyZWY9IiNhcGlzIj48c3Ryb25nPkFQSXM8L3N0cm9uZz48L2E+CiAgPC9wPgo8L2Rpdj4KCiMjIE9wZW5BUEkgLSBJbnRyb2R1Y3Rpb24KCltPcGVuQVBJXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKSBpcyBhbiBpbmR1c3RyeSBzdGFuZGFyZCB0byBkZXNjcmliZSBIVFRQCkFQSXMuIFdoZW4gdXNpbmcgT3BlbkFQSSBpbiB5b3VyIHByb2plY3QsIHlvdSBjYW4gbGV2ZXJhZ2Ugb3RoZXIgdG9vbHMgdG8gaGVscAp5b3UgZ2VuZXJhdGUgZG9jdW1lbnRhdGlvbiwgY29kZSwgdGVzdHMsIG1vY2sgcmVzdWx0cywgb3IgZXZlbiBkZXBsb3kgeW91ciBBUEkuCkl0J3Mgd2hhdCdzIGNvbW1vbmx5IGtub3duIGFzIHRoZSBPcGVuQVBJIGxpZmVjeWNsZSwgd2hpY2ggbG9va3MgbGlrZSB0aGlzOgoKPGRpdiBhbGlnbj0iY2VudGVyIj4KPGltZyBzdHlsZT0id2lkdGg6NTAlIiBzcmM9ImFzc2V0cy9vcGVuYXBpLWxpZmVjeWNsZS1saWdodC5wbmcjZ2gtbGlnaHQtbW9kZS1vbmx5IiAvPgogIDxpbWcgc3R5bGU9IndpZHRoOjUwJSIgc3JjPSJhc3NldHMvb3BlbmFwaS1saWZlY3ljbGUtZGFyay5wbmcjZ2gtZGFyay1tb2RlLW9ubHkiIC8+CjwvZGl2PgoKIyMgUmF0ZSBNeSBPcGVuQVBJCgpBdCBadXBsbyB3ZSBiZWxpZXZlIHRoYXQgdGhlIGJldHRlciB0aGUgcXVhbGl0eSBvZiBhbiBPcGVuQVBJIGRvY3VtZW50LCB0aGUKYmV0dGVyIHRoZSBkZXZlbG9wZXIgZXhwZXJpZW5jZSB3aWxsIGJlIGZvciB0aGUgY29uc3VtZXJzIG9mIHRoYXQgQVBJLiBUaGlzCmV4cGVyaWVuY2UgaXMgaW1wb3J0YW50IGZvciB0aGUgc3VjY2VzcyBvZiBhbiBBUEkuCgpfUmF0ZSBNeSBPcGVuQVBJXyBpcyBhIHN1aXRlIG9mIHRvb2xzIGRlc2lnbmVkIHRvIGhlbHAgc29mdHdhcmUgZGV2ZWxvcGVycyB3aG8KYXJlIHVzaW5nIE9wZW5BUEkgdG8gZGVzaWduIGFuZCBpbXBsZW1lbnQgdGhlaXIgQVBJcy4KCk91ciB0b29scyBpbmNsdWRlIGEKW3dlYnNpdGVdKGh0dHBzOi8vcmF0ZW15b3BlbmFwaS5jb20/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT13ZWIpLCBhCltDTEldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3Jtb2EpLCBhCltHaXRIdWIgQWN0aW9uXShodHRwczovL2dpdGh1Yi5jb20vbWFya2V0cGxhY2UvYWN0aW9ucy9yYXRlLW15LW9wZW5hcGktYWN0aW9uKQphbmQgYW4gW0FQSV0oaHR0cHM6Ly9hcGkucmF0ZW15b3BlbmFwaS5jb20vZG9jcy9yb3V0ZXMvaW50cm9kdWN0aW9uKSwgYWxsIGFpbWVkCmF0IGVuc3VyaW5nIHlvdXIgQVBJcyBtZWV0IGhpZ2ggc3RhbmRhcmRzIG9mIHF1YWxpdHkgYW5kIHVzYWJpbGl0eS4KCiMjIyBDYXRlZ29yaWVzIG9mIEV2YWx1YXRpb24KCk91ciB0b29scyBldmFsdWF0ZSB5b3VyIE9wZW5BUEkgZGVmaW5pdGlvbiBmaWxlcyBhbmQgcHJvdmlkZSBhIGNvbXByZWhlbnNpdmUKc2NvcmUgYmFzZWQgb24gZm91ciBrZXkgY2F0ZWdvcmllczoKCi0gKipEb2N1bWVudGF0aW9uOioqIEVuc3VyZSB5b3VyIEFQSSBpcyB3ZWxsLWRvY3VtZW50ZWQsIG1ha2luZyBpdCBlYXN5IGZvcgogIHVzZXJzIHRvIHVuZGVyc3RhbmQgYW5kIHVzZS4KLSAqKlNESyBHZW5lcmF0aW9uOioqIFZlcmlmeSB0aGF0IHlvdXIgQVBJIGRlZmluaXRpb24gc3VwcG9ydHMgU0RLIGdlbmVyYXRpb24sCiAgZmFjaWxpdGF0aW5nIGludGVncmF0aW9uIGFuZCB1c2FnZSBpbiBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLgotICoqU2VjdXJpdHk6KiogQ2hlY2sgZm9yIGJlc3QgcHJhY3RpY2VzIGFuZCBzdGFuZGFyZHMgdG8gZW5zdXJlIHlvdXIgQVBJIGlzCiAgc2VjdXJlIGFuZCBwcm90ZWN0ZWQgYWdhaW5zdCBjb21tb24gdnVsbmVyYWJpbGl0aWVzLgotICoqQ29tcGxldGVuZXNzKiogRW5zdXJlIHlvdXIgQVBJIGRlZmluaXRpb24gaXMgY29tcGxldGUsIHdpdGggYWxsIG5lY2Vzc2FyeQogIGVuZHBvaW50cywgcGFyYW1ldGVycywgYW5kIHJlc3BvbnNlcyBhY2N1cmF0ZWx5IGRlZmluZWQuCgojIyMgV2Vic2l0ZQoKW2h0dHBzOi8vcmF0ZW15b3BlbmFwaS5jb21dKGh0dHBzOi8vcmF0ZW15b3BlbmFwaS5jb20/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT13ZWIpCm9mZmVycyBhIHVzZXItZnJpZW5kbHkgaW50ZXJmYWNlIGZvciBkZXZlbG9wZXJzIHRvIHVwbG9hZCBhbmQgYW5hbHl6ZSB0aGVpcgpPcGVuQVBJIGRlZmluaXRpb24gZmlsZXMuCgpLZXkgZmVhdHVyZXMgaW5jbHVkZToKCi0gKipMaW50aW5nOioqIFVwbG9hZCAmIGxpbnQgeW91ciBPcGVuQVBJIGZpbGVzIHRvIHJlY2VpdmUgZGV0YWlsZWQgZmVlZGJhY2suCi0gKipDb21wcmVoZW5zaXZlIFNjb3Jpbmc6KiogR2V0IGEgY2xlYXIsIGFjdGlvbmFibGUgc2NvcmUgcmF0aW5nIHlvdXIgQVBJJ3MKICBkb2N1bWVudGF0aW9uLCBTREsgZ2VuZXJhdGlvbiwgc2VjdXJpdHksIGFuZCBjb21wbGV0ZW5lc3MuCi0gKipEZXRhaWxlZCBSZXBvcnRzOioqIEFjY2VzcyBpbi1kZXB0aCByZXBvcnRzIHRoYXQgaGlnaGxpZ2h0IGFyZWFzIG9mCiAgaW1wcm92ZW1lbnQgYW5kIHByb3ZpZGUgcmVjb21tZW5kYXRpb25zLgotICoqVmlzdWFsaXphdGlvbjoqKiBFYXNpbHkgdmlzdWFsaXplIHRoZSBzdHJ1Y3R1cmUgYW5kIHF1YWxpdHkgb2YgeW91ciBBUEkgd2l0aAogIGluLWxpbmUgZmVlZGJhY2suCgojIyMjIEdldHRpbmcgU3RhcnRlZAoKVG8gZ2V0IHN0YXJ0ZWQgdmlzaXQKW2h0dHBzOi8vcmF0ZW15b3BlbmFwaS5jb21dKGh0dHBzOi8vcmF0ZW15b3BlbmFwaS5jb20/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT13ZWIpLAp1cGxvYWQgeW91ciBPcGVuQVBJIGRlZmluaXRpb24gZmlsZSBhbmQgcmV2aWV3IHRoZSBkZXRhaWxlZCByZXBvcnRzIHRvIGlkZW50aWZ5CmFyZWFzIGZvciBpbXByb3ZlbWVudC4KCiMjIyBDTEkKClRoZSBDTEkgdG9vbCBpcyBwZXJmZWN0IGZvciBkZXZlbG9wZXJzIHdobyBwcmVmZXIgd29ya2luZyBmcm9tIHRoZSBjb21tYW5kIGxpbmUKb3IgbmVlZCB0byBpbnRlZ3JhdGUgcXVhbGl0eSBjaGVja3MgaW50byB0aGVpciBkZXZlbG9wbWVudCB3b3JrZmxvdy4KCktleSBmZWF0dXJlcyBpbmNsdWRlOgoKLSA8KipBdXRvbWF0ZWQgQ2hlY2tzOioqIEludGVncmF0ZSB0aGUgQ0xJIGludG8geW91ciBDSS9DRCBwaXBlbGluZSBmb3IKICBhdXRvbWF0ZWQgcXVhbGl0eSBjaGVja3Mgb24gZXZlcnkgY29tbWl0LgotICoqRGV0YWlsZWQgT3V0cHV0OioqIEdldCBkZXRhaWxlZCBmZWVkYmFjayBkaXJlY3RseSBpbiB5b3VyIHRlcm1pbmFsLCB3aXRoCiAgb3B0aW9ucyB0byBmdXJ0aGVyIGludGVncmF0ZSB0aGVzZSByZXN1bHRzIGludG8geW91ciBkZXZlbG9wbWVudCBmbG93LgoKIyMjIyBHZXR0aW5nIFN0YXJ0ZWQKClRvIGdldCBzdGFydGVkIGluc3RhbGwgdGhlIENMSSBhbmQgc3RhcnQgaW50ZWdyYXRpbmcgaXQgaW50byB5b3VyIGRldmVsb3BtZW50CndvcmtmbG93LgoKYGBgYmFzaApucG0gaW5zdGFsbCBybW9hCgpybW9hIGxpbnQgLS1maWxlbmFtZSA8b3BlbmFwaS1maWxlbmFtZT4gLS1hcGkta2V5IDxBUElfS0VZPgpgYGAKCkNMSSBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgYXQKW3BhY2thZ2VzL2NsaV0oL3BhY2thZ2VzL2NsaS9SRUFETUUubWQpLgoKVG8gZ2V0IGFuIGBBUElfS0VZYCBzaWduIHVwIGZvciBmcmVlIGF0CltodHRwczovL2FwaS5yYXRlbXlvcGVuYXBpLmNvbS9kb2NzXShodHRwczovL2FwaS5yYXRlbXlvcGVuYXBpLmNvbS9kb2NzKS4KCiMjIyBHaXRIdWIgQWN0aW9uCgpPdXIgR2l0SHViIEFjdGlvbiBzZWFtbGVzc2x5IGludGVncmF0ZXMgd2l0aCB5b3VyIHJlcG9zaXRvcnkgdG8gZW5zdXJlIHlvdXIgQVBJcwphcmUgY29uc2lzdGVudGx5IG9mIGhpZ2ggcXVhbGl0eS4KCktleSBmZWF0dXJlcyBpbmNsdWRlOgoKLSAqKkF1dG9tYXRlZCBMaW50aW5nOioqIEF1dG9tYXRpY2FsbHkgbGludCBPcGVuQVBJIGRlZmluaXRpb24gZmlsZXMgb24gZXZlcnkKICBwdWxsIHJlcXVlc3QgYW5kIHB1c2ggdG8gZW5zdXJlIGNvZGUgcXVhbGl0eS4KLSAqKklubGluZSBGZWVkYmFjazoqKiBSZWNlaXZlIGZlZWRiYWNrIGRpcmVjdGx5IGluIHlvdXIgcHVsbCByZXF1ZXN0cyB3aXRoCiAgY29tbWVudHMgaGlnaGxpZ2h0aW5nIGlzc3VlcyBhbmQgYXJlYXMgZm9yIGltcHJvdmVtZW50LgotICoqQ29udGludW91cyBJbXByb3ZlbWVudDoqKiBNYWludGFpbiBhIGhpZ2ggc3RhbmRhcmQgb2YgQVBJIHF1YWxpdHkgd2l0aAogIGNvbnRpbnVvdXMgbW9uaXRvcmluZyBhbmQgZmVlZGJhY2suCgojIyMjIEdldHRpbmcgU3RhcnRlZAoKVG8gZ2V0IHN0YXJ0ZWQgYWRkIG91ciBHaXRIdWIgYWN0aW9uIHRvIHlvdXIgcmVwb3NpdG9yeSBhbmQgY29uZmlndXJlIGl0IHRvIHJ1bgpvbiBQdWxsIFJlcXVlc3RzIGFuZCBQdXNoZXMgdG8gZW5zdXJlIGNvbnRpbnVvdXMgcXVhbGl0eSBtb25pdG9yaW5nLgoKYGBgeWFtbApzdGVwczoKICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjQKICAtIHVzZXM6IHp1cGxvL3Jtb2EtYWN0aW9uQHYxCiAgICB3aXRoOgogICAgICBmaWxlcGF0aDogIi4vbXktYXBpLmpzb24iCiAgICAgIGFwaWtleTogJHt7IHNlY3JldHMuUk1PQV9BUElfS0VZIH19CmBgYAoKR2l0SHViIEFjdGlvbiBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgYXQKW3Jtb2EtYWN0aW9uXShodHRwczovL2dpdGh1Yi5jb20venVwbG8vcm1vYS1hY3Rpb24pLgoKIyMjIyBHZXR0aW5nIGFuIEFQSSBrZXkKClRvIGdldCBhbiBgQVBJX0tFWWAgeW91IGNhbiBzaWduIHVwIGZvciBmcmVlIGF0CltodHRwczovL2FwaS5yYXRlbXlvcGVuYXBpLmNvbS9kb2NzXShodHRwczovL2FwaS5yYXRlbXlvcGVuYXBpLmNvbS9kb2NzKS4KCiMjIyBBUElzCgpBbGwgb3VyIHRvb2xzIG1ha2UgdXNlIG9mIG91ciBBUElzIHRvIGFuYWx5emUgYW5kIHByb3ZpZGUgZGV0YWlsZWQgcmVzdWx0cy4KCllvdSBjYW4gYWxzbyBtYWtlIGRpcmVjdCB1c2Ugb2YgdGhlc2UgQVBJcywgd2hpY2ggaXMgYSBncmVhdCBvcHRpb24gZm9yIHRob3NlCmRldmVsb3BlcnMgdGhhdCB3YW50IHRvIGJ1aWxkIHRoZWlyIG93biB0b29scyBvciBpbnRlZ3JhdGUgdGhlIFJhdGUgTXkgT3BlbkFQSQpsaW50aW5nIGNhcGFiaWxpdGllcyBpbiBhIHdheSB0aGF0J3Mgbm90IGNvdmVyZWQgdGhlIGV4aXN0aW5nIHRvb2xzLgoKIyMjIyBHZXR0aW5nIFN0YXJ0ZWQKClRvIGdldCBzdGFydGVkLCBnbyB0bwpbaHR0cHM6Ly9hcGkucmF0ZW15b3BlbmFwaS5jb20vZG9jc10oaHR0cHM6Ly9hcGkucmF0ZW15b3BlbmFwaS5jb20vZG9jcykgdG8gZ2V0CnRoZSBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIG9uIGV2ZXJ5IGVuZHBvaW50IGF2YWlsYWJsZSBmb3IgdXNlLgoKIyMjIyBHZXR0aW5nIGFuIEFQSSBrZXkKClRvIGdldCBhbiBgQVBJX0tFWWAgeW91IGNhbiBzaWduIHVwIGZvciBmcmVlIGF0CltodHRwczovL2FwaS5yYXRlbXlvcGVuYXBpLmNvbS9kb2NzXShodHRwczovL2FwaS5yYXRlbXlvcGVuYXBpLmNvbS9kb2NzKS4KCiMgTGljZW5zZQoKW01JVCBMaWNlbnNlXSguL0xJQ0VOU0UpCg== readmeEtag: '"c0f831b7566b70e4f15b7325e8eff11cccb35602"' readmeLastModified: Thu, 22 Aug 2024 17:48:19 GMT repositoryId: 653466139 description: Find API quality and security issues via your OpenAPI spec created: '2023-06-14T05:39:38Z' updated: '2026-01-18T18:44:23Z' language: TypeScript archived: false stars: 241 watchers: 4 forks: 7 owner: zuplo logo: https://avatars.githubusercontent.com/u/85497839?v=4 license: MIT repoEtag: '"073bb8c12139f8136ca2b2bd0e3401c5817637ebb1074d4fc0fcae79e782f441"' repoLastModified: Sun, 18 Jan 2026 18:44:23 GMT foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags name: Scalar category: Documentation language: Vue.js repository: https://github.com/scalar/scalar link: https://docs.scalar.com/swagger-editor source_description: Beautiful Open-Source API references from Swagger/OAS files ✨ v2: true v3: true v3_1: true id: 9cad3caafc5e01c5c1cd167696f30f10 repositoryMetadata: base64Readme: >- WyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvc2NhbGFyL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc2NhbGFyL3NjYWxhci9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwpClshW0NvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvY29udHJpYnV0b3JzL3NjYWxhci9zY2FsYXIpXShodHRwczovL2dpdGh1Yi5jb20vc2NhbGFyL3NjYWxhci9ncmFwaHMvY29udHJpYnV0b3JzKQpbIVtHaXRIdWIgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9zY2FsYXIvc2NhbGFyKV0oaHR0cHM6Ly9naXRodWIuY29tL3NjYWxhci9zY2FsYXIvYmxvYi9tYWluL0xJQ0VOU0UpClshW1R3aXR0ZXJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdHdpdHRlci9mb2xsb3cvc2NhbGFyKV0oaHR0cHM6Ly94LmNvbS9zY2FsYXIpClshW0Rpc2NvcmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZGlzY29yZC8xMTM1MzMwMjA3OTYwNjc4NDEwP3N0eWxlPWZsYXQmY29sb3I9NTg2NUYyKV0oaHR0cHM6Ly9kaXNjb3JkLmdnL3NjYWxhcikKCjxoMT4KCTxwPlNjYWxhcjwvcD4KCTxwPgoJCTxhIGhyZWY9Imh0dHBzOi8vZG9jcy5zY2FsYXIuY29tL3N3YWdnZXItZWRpdG9yIiB0YXJnZXQ9Il9ibGFuayI+CgkJCTxwaWN0dXJlPgoJCQkJPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzliNjM5ZjJkLTAyMDQtNGIxNS1iOTE4LTE1ODA3MmE5YWZhNSI+CgkJCQk8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy9iZTcyM2QwNy1lYzljLTRlZGItYjY1Ny0wNWE4YmMwNWM3ZDYiPgoJCQkJPGltZyB3aWR0aD0iNDguNDk0JSIgaGVpZ2h0PSIyNTAiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzliNjM5ZjJkLTAyMDQtNGIxNS1iOTE4LTE1ODA3MmE5YWZhNSNnaC1saWdodC1tb2RlLW9ubHkiIGFsdD0iU2NhbGFyIEFQSSBSZWZlcmVuY2UiPgoJCQk8L3BpY3R1cmU+CgkgCTwvYT4KCQk8YSBocmVmPSJodHRwczovL3NjYWxhci5jb20vZG93bmxvYWQiIHRhcmdldD0iX2JsYW5rIj4KCQkJPHBpY3R1cmU+CgkJCQk8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KSIgc3Jjc2V0PSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvYjM5MWI4MmYtZDk5My00ZTk3LThhMTctMWMzYzdjY2JiMTliIj4KCQkJCTxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzU3OWQwODUzLWIyYTUtNGVhOC1iMmJkLWE5ODc1M2ZhZWFmMyI+CgkJCQk8aW1nIHdpZHRoPSI0OC40OTQlIiBoZWlnaHQ9IjI1MCIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvYjM5MWI4MmYtZDk5My00ZTk3LThhMTctMWMzYzdjY2JiMTliI2doLWxpZ2h0LW1vZGUtb25seSIgYWx0PSJTY2FsYXIgQVBJIGNsaWVudCI+CgkJCTwvcGljdHVyZT4KCQk8L2E+Cgk8L3A+CjwvaDE+Cgo8cD4KCTxpbWcgd2lkdGg9IjgzMCIgaGVpZ2h0PSJhdXRvIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8zYTI0ZmM1Yy01ZDNjLTRiZTQtOGI5ZS0zOTliZDQ5ZTRmYjcjZ2gtbGlnaHQtbW9kZS1vbmx5Ij4KCTxpbWcgd2lkdGg9IjgzMCIgaGVpZ2h0PSJhdXRvIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy83NmYxMjNhZS1mNDU4LTQwOWYtODRkMy1iOWFkMTRmZDNmYjIjZ2gtZGFyay1tb2RlLW9ubHkiPgo8L3A+CgojIyMgSW50ZXJhY3RpdmUgQVBJIFJlZmVyZW5jZSBmcm9tIE9wZW5BUEkvU3dhZ2dlcgoK4pSUIFJlbmRlcnMgT3BlbkFQSS9Td2FnZ2VyIGRvY3VtZW50czxicj4K4pSUIENvbWVzIHdpdGggYW4gQVBJIHRlc3RpbmcgdG9vbDxicj4K4pSUIERvZXNuJ3QgbG9vayBsaWtlIDIwMTE8YnI+CuKUlCBHZW5lcmF0ZXMgY29kZSBleGFtcGxlcyBmb3IgbWFueSBsYW5ndWFnZXMgJiBmcmFtZXdvcmtzPGJyPgrilJQgSW50ZWdyYXRlcyB3aXRoIHlvdXIgZmF2b3JpdGUgZnJhbWV3b3JrPGJyPgrilJQgPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnNjYWxhci5jb20vc3dhZ2dlci1lZGl0b3IiPlRyeSBEZW1vPC9hPgoKPCEtLSBtaW5pbWFsIGxpbmUgYnJlYWstLT4KPHA+Cgk8aW1nIHdpZHRoPSIxMjAwIiBoZWlnaHQ9IjEiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzdkN2U3YmE3LTJiMDItNDlmMy1hYmNkLWIyNGM1NjZhM2MxNiNnaC1saWdodC1tb2RlLW9ubHkiPgoJPGltZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8zNDFiZmIxZC01Y2IwLTRlYzYtODllYi00YjFkY2MwN2VlYjcjZ2gtZGFyay1tb2RlLW9ubHkiPgo8L3A+CjwhLS0gZW5kIG1pbmltYWwgbGluZSBicmVhay0tPgoKPHA+Cgk8aW1nIHdpZHRoPSI4MzAiIGhlaWdodD0iYXV0byIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvZDlmOTBjNTEtODJkNC00OTQ4LTkzNjUtNjU4Y2NjN2Q3OGM0I2doLWxpZ2h0LW1vZGUtb25seSI+Cgk8aW1nIHdpZHRoPSI4MzAiIGhlaWdodD0iYXV0byIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvZTdjMjAyM2UtZGZiYy00MjhjLWJjODUtYzA2ZDhhNmU0YjY3I2doLWRhcmstbW9kZS1vbmx5Ij4KPC9wPgoKIyMjIEFuIG9mZmxpbmUtZmlyc3QgQVBJIENsaWVudCBidWlsdCBmb3IgT3BlbkFQSQoK4pSUIEZyZWUgYW5kIG9wZW4tc291cmNlPGJyPgrilJQgRmlyc3QtY2xhc3MgT3BlbkFQSS9Td2FnZ2VyIHN1cHBvcnQ8YnI+CuKUlCBJbnRlZ3JhdGVzIHdpdGggZG96ZW5zIG9mIEFQSSBGcmFtZXdvcmtzIChFbHlzaWEsIEhvbm8sIEZhc3RBUEksIGV0Yyk8YnI+CuKUlCBTeW5jcyB3aXRoIHlvdXIgZmF2b3JpdGUgc2VydmVyIGZyYW1ld29yayAoV2F0Y2ggTW9kZSk8YnI+CuKUlCBIYXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBkeW5hbWljIHBhcmFtZXRlcnMgYW5kIGV2ZXJ5dGhpbmc8YnI+CuKUlCA8YSBocmVmPSJodHRwczovL2NsaWVudC5zY2FsYXIuY29tLyI+VHJ5IEl0IGluIHRoZSBCcm93c2VyPC9hPgrilJQgPGEgaHJlZj0iaHR0cHM6Ly9zY2FsYXIuY29tL2Rvd25sb2FkIj5Eb3dubG9hZCAoV2luZG93cywgTWFjT1MsIExpbnV4KTwvYT48YnI+Cgo8IS0tIG1pbmltYWwgbGluZSBicmVhay0tPgo8cD4KCTxpbWcgd2lkdGg9IjEyMDAiIGhlaWdodD0iMSIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvN2Q3ZTdiYTctMmIwMi00OWYzLWFiY2QtYjI0YzU2NmEzYzE2I2doLWxpZ2h0LW1vZGUtb25seSI+Cgk8aW1nIHdpZHRoPSIxMjAwIiBoZWlnaHQ9IjEiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzM0MWJmYjFkLTVjYjAtNGVjNi04OWViLTRiMWRjYzA3ZWViNyNnaC1kYXJrLW1vZGUtb25seSI+CjwvcD4KPCEtLSBlbmQgbWluaW1hbCBsaW5lIGJyZWFrLS0+CgojIyMgVHJ1c3RlZCBieToKCjxicj4KCjxwPgoJPHBpY3R1cmU+CgkJPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzczZGNlZjk1LWZjNGYtNDExMS1iYjA5LWYzY2UzNzQ1M2E4MSNnaC1saWdodC1tb2RlLW9ubHkiPgoJCTxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2M3OTJjOTc3LTg1NTEtNDMyYy05NDE3LTNlYTA1ZTQwODE1MSNnaC1kYXJrLW1vZGUtb25seSI+CgkJPGltZyB3aWR0aD0iNDguNDk0JSIgaGVpZ2h0PSIzMzAiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzczZGNlZjk1LWZjNGYtNDExMS1iYjA5LWYzY2UzNzQ1M2E4MSNnaC1saWdodC1tb2RlLW9ubHkiIGFsdD0iU2NhbGFyIEFQSSBjbGllbnQiPgoJPC9waWN0dXJlPgoJPHBpY3R1cmU+CgkJPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzFkYTZiOTA0LTM0YmUtNDc2MC1iNTM1LTBkZDIxNjBlNmQxMiNnaC1saWdodC1tb2RlLW9ubHkiPgoJCTxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzU0YTllYTY5LWM1MGEtNGY0OS04YzNlLWRkZDZmOGZiZTFmMyNnaC1kYXJrLW1vZGUtb25seSI+CgkJPGltZyB3aWR0aD0iNDguNDk0JSIgaGVpZ2h0PSIzMzAiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzFkYTZiOTA0LTM0YmUtNDc2MC1iNTM1LTBkZDIxNjBlNmQxMiNnaC1saWdodC1tb2RlLW9ubHkiIGFsdD0iU2NhbGFyIEFQSSBjbGllbnQiPgoJPC9waWN0dXJlPgo8L3A+CgojIyMgUXVpY2tzdGFydAoKQWxsIHlvdSBuZWVkIGlzIGEgc2luZ2xlIEhUTUwgZmlsZSB0byBjcmVhdGUgYW4gYW1hemluZyBBUEkgcmVmZXJlbmNlOgoKYGBgaHRtbAo8IWRvY3R5cGUgaHRtbD4KPGh0bWw+CiAgPGhlYWQ+CiAgICA8dGl0bGU+U2NhbGFyIEFQSSBSZWZlcmVuY2U8L3RpdGxlPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8bWV0YQogICAgICBuYW1lPSJ2aWV3cG9ydCIKICAgICAgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiIC8+CiAgPC9oZWFkPgoKICA8Ym9keT4KICAgIDxkaXYgaWQ9ImFwcCI+PC9kaXY+CgogICAgPCEtLSBMb2FkIHRoZSBTY3JpcHQgLS0+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9Ac2NhbGFyL2FwaS1yZWZlcmVuY2UiPjwvc2NyaXB0PgoKICAgIDwhLS0gSW5pdGlhbGl6ZSB0aGUgU2NhbGFyIEFQSSBSZWZlcmVuY2UgLS0+CiAgICA8c2NyaXB0PgogICAgICBTY2FsYXIuY3JlYXRlQXBpUmVmZXJlbmNlKCcjYXBwJywgewogICAgICAgIC8vIFRoZSBVUkwgb2YgdGhlIE9wZW5BUEkvU3dhZ2dlciBkb2N1bWVudAogICAgICAgIHVybDogJ2h0dHBzOi8vcmVnaXN0cnkuc2NhbGFyLmNvbS9Ac2NhbGFyL2FwaXMvZ2FsYXh5P2Zvcm1hdD1qc29uJywKICAgICAgICAvLyBBdm9pZCBDT1JTIGlzc3VlcwogICAgICAgIHByb3h5VXJsOiAnaHR0cHM6Ly9wcm94eS5zY2FsYXIuY29tJywKICAgICAgfSkKICAgIDwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPgpgYGAKCj4gTmVlZCBhIEN1c3RvbSBIZWFkZXI/IENoZWNrIG91dCB0aGlzIGV4YW1wbGU6IGh0dHBzOi8vY29kZXBlbi5pby9zY2FsYXJvcmcvcGVuL1Z3T1hxYW0KCkFuZCB0aGVyZSdzIGFuIGV2ZXItZ3Jvd2luZyBsaXN0IG9mIHBsdWdpbnMgYW5kIGludGVncmF0aW9uczoKCiMjIyBJbnRlZ3JhdGlvbnMKCi0gW0hUTUwvSlMgQVBJXShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvYXBpLXJlZmVyZW5jZXMvaW50ZWdyYXRpb25zL2h0bWwtanMpICh3b3JrcyBldmVyeXdoZXJlKQotIFsuTkVUIEFTUC5ORVQgQ29yZV0oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy9hc3BuZXRjb3JlL2ludGVncmF0aW9uKQotIFsuTkVUIEFzcGlyZV0oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy9hc3BpcmUpCi0gW0Fkb25pc0pTXShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvYXBpLXJlZmVyZW5jZXMvaW50ZWdyYXRpb25zL2Fkb25pc2pzKQotIFtBc3Ryb10oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy9hc3RybykKLSBbRGphbmdvIE5pbmphXShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvYXBpLXJlZmVyZW5jZXMvaW50ZWdyYXRpb25zL2RqYW5nby1uaW5qYSkKLSBbRGphbmdvXShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvYXBpLXJlZmVyZW5jZXMvaW50ZWdyYXRpb25zL2RqYW5nbykKLSBbRG9ja2VyXShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvYXBpLXJlZmVyZW5jZXMvaW50ZWdyYXRpb25zL2RvY2tlcikKLSBbRG9jdXNhdXJ1c10oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy9kb2N1c2F1cnVzKQotIFtFbGl4aXJdKGh0dHBzOi8vc2NhbGFyLmNvbS9wcm9kdWN0cy9hcGktcmVmZXJlbmNlcy9pbnRlZ3JhdGlvbnMvZWxpeGlyKQotIFtFeHByZXNzXShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvYXBpLXJlZmVyZW5jZXMvaW50ZWdyYXRpb25zL2V4cHJlc3MpCi0gW0Zhc3RBUEldKGh0dHBzOi8vc2NhbGFyLmNvbS9wcm9kdWN0cy9hcGktcmVmZXJlbmNlcy9pbnRlZ3JhdGlvbnMvZmFzdGFwaSkKLSBbRmFzdGlmeV0oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy9mYXN0aWZ5KQotIFtGbGFza10oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy9mbGFzaykKLSBbR29dKGh0dHBzOi8vc2NhbGFyLmNvbS9wcm9kdWN0cy9hcGktcmVmZXJlbmNlcy9pbnRlZ3JhdGlvbnMvZ28pCi0gW0hhcGldKGh0dHBzOi8vc2NhbGFyLmNvbS9wcm9kdWN0cy9hcGktcmVmZXJlbmNlcy9pbnRlZ3JhdGlvbnMvaGFwaSkKLSBbSG9ub10oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy9ob25vKQotIFtMYXJhdmVsIFNjcmliZV0oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy9sYXJhdmVsLXNjcmliZSkKLSBbTGFyYXZlbF0oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy9sYXJhdmVsKQotIFtNaWNyb25hdXRdKGh0dHBzOi8vc2NhbGFyLmNvbS9wcm9kdWN0cy9hcGktcmVmZXJlbmNlcy9pbnRlZ3JhdGlvbnMvbWljcm9uYXV0KQotIFtOZXN0SlNdKGh0dHBzOi8vc2NhbGFyLmNvbS9wcm9kdWN0cy9hcGktcmVmZXJlbmNlcy9pbnRlZ3JhdGlvbnMvbmVzdGpzKQotIFtOZXh0LmpzXShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvYXBpLXJlZmVyZW5jZXMvaW50ZWdyYXRpb25zL25leHRqcykKLSBbTnV4dF0oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy9udXh0KQotIFtQeXRob25dKGh0dHBzOi8vc2NhbGFyLmNvbS9wcm9kdWN0cy9hcGktcmVmZXJlbmNlcy9pbnRlZ3JhdGlvbnMvcHl0aG9uKQotIFtSZWFjdF0oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy9yZWFjdCkKLSBbUnVieSBvbiBSYWlsc10oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy9ydWJ5LW9uLXJhaWxzKQotIFtSdXN0XShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvYXBpLXJlZmVyZW5jZXMvaW50ZWdyYXRpb25zL3J1c3QpCi0gW1NwcmluZyBCb290XShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvYXBpLXJlZmVyZW5jZXMvaW50ZWdyYXRpb25zL3NwcmluZy1ib290KQotIFtTdmVsdGVLaXRdKGh0dHBzOi8vc2NhbGFyLmNvbS9wcm9kdWN0cy9hcGktcmVmZXJlbmNlcy9pbnRlZ3JhdGlvbnMvc3ZlbHRla2l0KQotIFtUcy5FRF0oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy90c2VkKQotIFtWdWUuanNdKGh0dHBzOi8vc2NhbGFyLmNvbS9wcm9kdWN0cy9hcGktcmVmZXJlbmNlcy9pbnRlZ3JhdGlvbnMvdnVlKQoKIyMjIEJ1aWx0LWluIFN1cHBvcnQKClRoZSBmb2xsb3dpbmcgZnJhbWV3b3JrcyBoYXZlIGNob3NlbiBTY2FsYXIgQVBJIFJlZmVyZW5jZSBhcyB0aGVpciBkZWZhdWx0IE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBVSSwgcmVjb2duaXppbmcgaXRzIGRldmVsb3Blci1mcmllbmRseSBmZWF0dXJlcyBhbmQgbW9kZXJuIGRlc2lnbjoKCi0gW0VmZmVjdF0oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy9lZmZlY3QpCi0gW0VseXNpYUpTXShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvYXBpLXJlZmVyZW5jZXMvaW50ZWdyYXRpb25zL2VseXNpYWpzKQotIFtIYXBweVhdKGh0dHBzOi8vZ2l0aHViLmNvbS9IYXB0aWNYL2hhcHB5eCkKLSBbTGl0ZXN0YXJdKGh0dHBzOi8vZG9jcy5saXRlc3Rhci5kZXYvbGF0ZXN0L3VzYWdlL29wZW5hcGkvdWlfcGx1Z2lucy5odG1sKQotIFtOaXRyb10oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2ludGVncmF0aW9ucy9uaXRybykKLSBbb1JQQ10oaHR0cHM6Ly9vcnBjLnVubm9xLmNvbS9kb2NzL29wZW5hcGkvcGx1Z2lucy9vcGVuYXBpLXJlZmVyZW5jZSkKLSBbUGxhdGZvcm1hdGljXShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvYXBpLXJlZmVyZW5jZXMvaW50ZWdyYXRpb25zL3BsYXRmb3JtYXRpYykKCjxicj4KCiMjIyBNYW5hZ2VkIEhvc3RpbmcKCldlJ3JlIG9mZmVyaW5nIGEgZnJlZSBhbmQgcGFpZCBtYW5hZ2VkIGhvc3Rpbmcgb24gdGhlIGVkZ2UsIHRvbzoKCi0gV3JpdGUgeW91ciBBUEkgZG9jdW1lbnRhdGlvbiBhbmQgcHVibGlzaCBBUEkgcmVmZXJlbmNlcyAoZnJlZSkKLSBgWU9VUl9OQU1FX0hFUkUuYXBpZG9jdW1lbnRhdGlvbi5jb21gIHN1YmRvbWFpbiBhbmQgU1NMIChmcmVlKQotIFtHaXRIdWIgU3luY10oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2RvY3MvZ2l0aHViLXN5bmMpCi0gV3JpdGUgZnJlZS1mb3JtIGRvY3VtZW50YXRpb24KLSBDb2xsYWJvcmF0ZSB3aXRoIHlvdXIgdGVhbQotIFVzZSBhbnkgZG9tYWluCgpSZWFkeT8gW0NyZWF0ZSB5b3VyIFNjYWxhciBBY2NvdW50XShodHRwczovL3NjYWxhci5jb20pCgo8YnI+CgojIyMgRG9jdW1lbnRhdGlvbgoKfCBUb3BpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBbQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL2NvbmZpZ3VyYXRpb24pIHwgVGhlIHVuaXZlcnNhbCBjb25maWd1cmF0aW9uIG9iamVjdCAgIHwKfCBbVGhlbWVzXShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvYXBpLXJlZmVyZW5jZXMvdGhlbWVzKSAgICAgICAgICAgICAgIHwgUHJlZGVmaW5lZCB0aGVtZXMsIGxheW91dHMgJiBzdHlsaW5nIHwKfCBbT3BlbkFQSV0oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL29wZW5hcGkpICAgICAgICAgICAgIHwgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbnMgICAgIHwKfCBbTWFya2Rvd25dKGh0dHBzOi8vc2NhbGFyLmNvbS9wcm9kdWN0cy9hcGktcmVmZXJlbmNlcy9tYXJrZG93bikgICAgICAgICAgIHwgU3VwcG9ydGVkIE1hcmtkb3duIHN5bnRheCAgICAgICAgICAgIHwKfCBbUGx1Z2luc10oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL2FwaS1yZWZlcmVuY2VzL3BsdWdpbnMpICAgICAgICAgICAgIHwgRXh0ZW5kIHRoZSBmdW5jdGlvbmFsaXR5ICAgICAgICAgICAgIHwKCjxicj4KCiMjIyBQcm9qZWN0cwoKfCBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgW1NjYWxhciBBUEkgUmVmZXJlbmNlXShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvYXBpLXJlZmVyZW5jZXMvZ2V0dGluZy1zdGFydGVkKSB8IFNlbGYtaG9zdGVkIEFQSSBSZWZlcmVuY2UgICAgICAgIHwKfCBbU2NhbGFyIEFQSSBDbGllbnRdKGh0dHBzOi8vc2NhbGFyLmNvbS9kb3dubG9hZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUG9zdG1hbiBhbHRlcm5hdGl2ZSAgICAgICAgICAgICAgfAp8IFtTY2FsYXIgUmVnaXN0cnldKGh0dHBzOi8vc2NhbGFyLmNvbS9wcm9kdWN0cy9yZWdpc3RyeS9nZXR0aW5nLXN0YXJ0ZWQpICAgICAgICAgICAgfCBNYW5hZ2UgT3BlbkFQSSBkb2N1bWVudHMgICAgICAgICB8CnwgW1NjYWxhciBEb2NzXShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvZG9jcy9nZXR0aW5nLXN0YXJ0ZWQpICAgICAgICAgICAgICAgICAgICB8IEhvc3RlZCBkb2N1bWVudGF0aW9uICAgICAgICAgICAgIHwKfCBbU2NhbGFyIERvY3MgU3RhcnRlcl0oaHR0cHM6Ly9naXRodWIuY29tL3NjYWxhci9zdGFydGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhcnRlciB0ZW1wbGF0ZSBmb3IgU2NhbGFyIERvY3MgfAp8IFtTY2FsYXIgU0RLc10oaHR0cHM6Ly9zY2FsYXIuY29tL3Byb2R1Y3RzL3Nka3MvZ2V0dGluZy1zdGFydGVkKSAgICAgICAgICAgICAgICAgICAgfCBTREsgZ2VuZXJhdGlvbiAgICAgICAgICAgICAgICAgICB8CnwgW1NjYWxhciBDTEldKGh0dHBzOi8vc2NhbGFyLmNvbS90b29scy9jbGkvZ2V0dGluZy1zdGFydGVkKSAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbW1hbmQtbGluZSBpbnRlcmZhY2UgICAgICAgICAgIHwKfCBbU2NhbGFyIE1vY2sgU2VydmVyXShodHRwczovL3NjYWxhci5jb20vcHJvZHVjdHMvbW9jay1zZXJ2ZXIvZ2V0dGluZy1zdGFydGVkKSAgICAgIHwgTW9jayBBUElzIGZyb20gT3BlbkFQSSBkb2N1bWVudHMgfAp8IFtTY2FsYXIgR2FsYXh5XShwYWNrYWdlcy9nYWxheHkvUkVBRE1FLm1kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPdXIgT3BlbkFQSSBFeGFtcGxlICAgICAgICAgICAgICB8CnwgW1NjYWxhciBFZGl0b3JdKGh0dHBzOi8vZWRpdG9yLnNjYWxhci5jb20vKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9wZW5BUEkgT25saW5lIEVkaXRvciAgICAgICAgICAgIHwKfCBbU2NhbGFyIE9wZW5BUEkgUGFyc2VyXShwYWNrYWdlcy9vcGVuYXBpLXBhcnNlci9SRUFETUUubWQpICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFyc2UgT3BlbkFQSSBkb2N1bWVudHMgICAgICAgICAgfAp8IFtTY2FsYXIgT3BlbkFQSSB0byBNYXJrZG93bl0ocGFja2FnZXMvb3BlbmFwaS10by1tYXJrZG93bi9SRUFETUUubWQpICAgICAgICAgICAgICAgfCBPcGVuQVBJID4gTWFya2Rvd24vSFRNTCAgICAgICAgICB8CnwgW1NjYWxhciBPcGVuQVBJIFVwZ3JhZGVyXShwYWNrYWdlcy9vcGVuYXBpLXVwZ3JhZGVyL1JFQURNRS5tZCkgICAgICAgICAgICAgICAgICAgICB8IFVwZ3JhZGUgT3BlbkFQSSBkb2N1bWVudHMgICAgICAgIHwKfCBbU2NhbGFyIFZvaWQgU2VydmVyXShwYWNrYWdlcy92b2lkLXNlcnZlci9SRUFETUUubWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSFRUUCBSZXF1ZXN0IE1pcnJvciAgICAgICAgICAgICAgfAoKPGJyPgoKIyMjIENvbW11bml0eQoKV2UgYXJlIEFQSSBuZXJkcy4gWW91IHRvbz8gTGV0J3MgY2hhdCBvbiBEaXNjb3JkOiA8aHR0cHM6Ly9kaXNjb3JkLmdnL3NjYWxhcj4KCjxicj4KCiMjIyBDb250cmlidXRpb25zCgpDb250cmlidXRpb25zIGFyZSB3ZWxjb21lISBSZWFkIHRoZSBbYENPTlRSSUJVVElOR2BdKENPTlRSSUJVVElORy5tZCkgZ3VpZGUuCgoqKlRvcCAxMCBDb250cmlidXRvcnMgKEFwcmlsIDIwMjUpKioKCjxwPgoJPGltZyB3aWR0aD0iODMwIiBoZWlnaHQ9IjI4MCIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvOGMxMGQyYWEtOWViNC00ODE4LTljYTItNjI1Y2ZlZDVjYTA4I2doLWxpZ2h0LW1vZGUtb25seSI+Cgk8aW1nIHdpZHRoPSI4MzAiIGhlaWdodD0iMjgwIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy81MGI5YjA0Mi0xMDdlLTQxNjctOWM3Zi05NDQ5N2Y4NWQyZTAjZ2gtZGFyay1tb2RlLW9ubHkiPgo8L3A+Cgo8YnI+Cjxicj4KCioqVG9wIENvbnRyaWJ1dG9ycyAoQWxsIFRpbWUpKioKCjwhLS0gcmVhZG1lOiBjb2xsYWJvcmF0b3JzLGNvbnRyaWJ1dG9ycyAtc3RhcnQgLS0+Cjx0YWJsZT4KCTx0Ym9keT4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9oYW5zcGFnZWwiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU3Nzk5Mj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImhhbnNwYWdlbCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+aGFuc3BhZ2VsPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYW1yaXRrIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIwMzk1Mzk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJhbXJpdGsiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmFtcml0azwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3hDMGRleCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMjkxODM2Nj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InhDMGRleCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+eEMwZGV4PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYW50bGlvIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0OTY2MTU1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYW50bGlvIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5hbnRsaW88L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9od2tyIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzYzNzQwOTA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJod2tyIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5od2tyPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFyY2xhdmUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjE3NjMxND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Im1hcmNsYXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5tYXJjbGF2ZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NhbWVyb25yb2hhbmkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjIwMTQwNz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImNhbWVyb25yb2hhbmkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmNhbWVyb25yb2hhbmk8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9EZW1vbkhhIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzkxMTYwMTc4P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iRGVtb25IYSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+RGVtb25IYTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dlb2ZmZ3Njb3R0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU5MjA2MTAwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZ2VvZmZnc2NvdHQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmdlb2ZmZ3Njb3R0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFyY2FsZXhpZWkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjQ5MTkzMzA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJtYXJjYWxleGllaSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bWFyY2FsZXhpZWk8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90bWFzdHJvbSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNjUyNTMyOT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InRtYXN0cm9tIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj50bWFzdHJvbTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2lueW91cnRpbWUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjYxMTEwMzA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJpbnlvdXJ0aW1lIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5pbnlvdXJ0aW1lPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYmdyY3MiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTgwNzg3NjM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJiZ3JjcyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YmdyY3M8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9nZXZhbm4iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjQyNzMzNz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImdldmFubiIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Z2V2YW5uPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmVkZXJpY29ib25kIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEzODQyNj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImZlZGVyaWNvYm9uZCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+ZmVkZXJpY29ib25kPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbGlhbWRzY2FsYXIiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjI1NDI1OTQ0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibGlhbWRzY2FsYXIiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmxpYW1kc2NhbGFyPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWhtZWRyYW5nZWwiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTAwOTA1OTU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJhaG1lZHJhbmdlbCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YWhtZWRyYW5nZWw8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXR0aHlrIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUzODMzODE4P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibWF0dGh5ayIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bWF0dGh5azwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0Ftb3JpbTMzIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQyNjI0ODY5P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iQW1vcmltMzMiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkFtb3JpbTMzPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYmF5d2V0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzc5MDU1MDI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJiYXl3ZXQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmJheXdldDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL01hc29uLUxpdHRsZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMDUwMDg0NDE/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJNYXNvbi1MaXR0bGUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPk1hc29uLUxpdHRsZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2l2YW5hZ2FzIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM0NzU1MDI4P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iaXZhbmFnYXMiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPml2YW5hZ2FzPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWRqc2t5Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ5MzA1MjE5P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYWRqc2t5Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5hZGpza3k8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9SZW1jb0dveSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNDUzOTEwOT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IlJlbWNvR295Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5SZW1jb0dveTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21wbWluYXJkaSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84NTg3NTY3P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibXBtaW5hcmRpIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5tcG1pbmFyZGk8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9UaGVWYWFuIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExMDg0ODU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJUaGVWYWFuIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5UaGVWYWFuPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWNvbGxpbmEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTIxOTU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJtY29sbGluYSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bWNvbGxpbmE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaS1uZXQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjUzODY4OTU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJzaS1uZXQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnNpLW5ldDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL25zeWNoZXYiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTEwMDQ2MTk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJuc3ljaGV2Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5uc3ljaGV2PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTW9oaWI4MzQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDczMTY0NjQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJNb2hpYjgzNCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+TW9oaWI4MzQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9sYy1zb2Z0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE3MzAwNzM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJsYy1zb2Z0Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5sYy1zb2Z0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZnVtYS1uYW1hIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzc2MjQwNzU1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZnVtYS1uYW1hIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5mdW1hLW5hbWE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9FZGdhcmFzenMiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTU2OTYyNjg/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJFZGdhcmFzenMiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkVkZ2FyYXN6czwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0FUUkVBWSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NjU4NTI5NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkFUUkVBWSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+QVRSRUFZPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbGVkZ2Vyc3RldmUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTA0NDkzNzY/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJsZWRnZXJzdGV2ZSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bGVkZ2Vyc3RldmU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90aW1oZXVlciI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODIxP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0idGltaGV1ZXIiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnRpbWhldWVyPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20veWtkb2pvIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE4MTE2NTE/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ5a2Rvam8iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnlrZG9qbzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3gtZGVsZmlubyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NzE5MjU3OT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IngtZGVsZmlubyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+eC1kZWxmaW5vPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaG9ycHRvIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzcxMDkzNTA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJob3JwdG8iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmhvcnB0bzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2pwanBqcCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80Nzc0NjU2P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ianBqcGpwIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5qcGpwanA8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9oZXgwaWQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTI3NjI2MT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImhleDBpZCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+aGV4MGlkPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20veXNocnNteiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NTQ4ODk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ5c2hyc216Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj55c2hyc216PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc291bGNoaWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU5NjQyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ic291bGNoaWxkIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5zb3VsY2hpbGQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TZWJhc3RpYW5CaWVuZXJ0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE3NDU4Nzg1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iU2ViYXN0aWFuQmllbmVydCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+U2ViYXN0aWFuQmllbmVydDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21vdWhhbm5hZC1zaCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xODQ5NTc0MD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Im1vdWhhbm5hZC1zaCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bW91aGFubmFkLXNoPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFzb24tYXQtcGllY2VzIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEyMzQyMTA4NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Im1hc29uLWF0LXBpZWNlcyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bWFzb24tYXQtcGllY2VzPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbHVjMTIyYyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MjU3MDkyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibHVjMTIyYyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bHVjMTIyYzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2x1a2UtaGFnYXItc3AiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTkzOTg1OTU2P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibHVrZS1oYWdhci1zcCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bHVrZS1oYWdhci1zcDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2hhbmRyZXdzIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIzNTgwMTU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJoYW5kcmV3cyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+aGFuZHJld3M8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9EdW5jYW5tYSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xODMzODQyND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkR1bmNhbm1hIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5EdW5jYW5tYTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dEYWFuIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI1NzA3MDUyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iV0RhYW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPldEYWFuPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ3NtY2RvbmFsZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNjAwMzM3OD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImdzbWNkb25hbGQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmdzbWNkb25hbGQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9NYXJpb0dLIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzgzNzkwNzk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJNYXJpb0dLIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5NYXJpb0dLPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaHJ5bmV2eWNocm9tYW4iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvODIyMDkxOTg/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJocnluZXZ5Y2hyb21hbiIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+aHJ5bmV2eWNocm9tYW48L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ycG1jY2FydGVyIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzYzNzcyNTkxP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0icnBtY2NhcnRlciIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+cnBtY2NhcnRlcjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JvcnlzY2hhZGxlciI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODkyMTA5MD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InJvcnlzY2hhZGxlciIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+cm9yeXNjaGFkbGVyPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcm1wMTM1Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM4ODI4MDM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJybXAxMzUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnJtcDEzNTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21pcmlzbWFpbGkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU4MDAxODk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJtaXJpc21haWxpIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5taXJpc21haWxpPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vU1RQNTk0MCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMTE0NDMwMz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IlNUUDU5NDAiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPlNUUDU5NDA8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jYXB0YWluc2FmaWEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTg1Nzk5Mz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImNhcHRhaW5zYWZpYSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Y2FwdGFpbnNhZmlhPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcmVhbHNhbWEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDY0MDMyODQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJyZWFsc2FtYSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+cmVhbHNhbWE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS92ZW50b2NpcyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNjE5ODM0NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InZlbnRvY2lzIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj52ZW50b2NpczwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NhbXlQZXNzZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84NDU0MjU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJTYW15UGVzc2UiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPlNhbXlQZXNzZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2RvdGZvcnR1biI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTgyMjk1Nz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImRvdGZvcnR1biIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+ZG90Zm9ydHVuPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc21vb3Jlcy1kZXYiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTM1NDI1ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InNtb29yZXMtZGV2Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5zbW9vcmVzLWRldjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NvR2l0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwNjgyNzk4P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ic29HaXQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnNvR2l0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSHVsaWlpaWlpIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEzNDY1ODUyMT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Ikh1bGlpaWlpaSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+SHVsaWlpaWlpPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbm90LW15LXByb2ZpbGUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzM3MzkxNTM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJub3QtbXktcHJvZmlsZSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bm90LW15LXByb2ZpbGU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90aW5jaG96NDkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvODE5NDQ2P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0idGluY2hvejQ5Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj50aW5jaG96NDk8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0ZW9IMk8xOTk5Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzgyMTg0NjA0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iTWF0dGVvSDJPMTk5OSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+TWF0dGVvSDJPMTk5OTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21heGVobW9va2F1Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY5MDk3Nz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Im1heGVobW9va2F1Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5tYXhlaG1vb2thdTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL01heEJyZWlkYSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xODY4NTU3OT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Ik1heEJyZWlkYSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+TWF4QnJlaWRhPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbXZ0MTQ3Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzkwNjYxNzc/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJtdnQxNDciLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPm12dDE0NzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21hbGluYnJhbmR1c2UiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjI2NDUxMTk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJtYWxpbmJyYW5kdXNlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5tYWxpbmJyYW5kdXNlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTGF6aWFsaXplIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM0NTUxNDc/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJMYXppYWxpemUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkxhemlhbGl6ZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL09sZXhhbmRyODgiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTM4NTYwNjI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJPbGV4YW5kcjg4Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5PbGV4YW5kcjg4PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcGt1Y211cyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82MzQ3NDE4P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0icGt1Y211cyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+cGt1Y211czwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3BldGVyY2luaWJ1bGsiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjk2MTE4OTI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJwZXRlcmNpbmlidWxrIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5wZXRlcmNpbmlidWxrPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcGhpbHN0dXJnZW9uIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY3MzgxP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0icGhpbHN0dXJnZW9uIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5waGlsc3R1cmdlb248L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yaHVhbmJhcnJldG8iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjgzMDA0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0icmh1YW5iYXJyZXRvIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5yaHVhbmJhcnJldG88L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yaWNraWhhc3RpbmdzIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ1NjYwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0icmlja2loYXN0aW5ncyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+cmlja2loYXN0aW5nczwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JvYmVydC1kZWFuIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzk5NjcyNzE5P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0icm9iZXJ0LWRlYW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnJvYmVydC1kZWFuPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcmJhbmdlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEzMjUyNTc0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0icmJhbmdlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5yYmFuZ2U8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS91bm5vcSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NDE4OTkwMj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InVubm9xIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj51bm5vcTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RzaXdlay1waXdpayI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTczNzMzMzI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ0c2l3ZWstcGl3aWsiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnRzaXdlay1waXdpazwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2R1bmtsZXNUb2FzdCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNzI3OTQ4NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImR1bmtsZXNUb2FzdCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+ZHVua2xlc1RvYXN0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc3RlZmFucHJvYnN0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIwNzUzMzIzP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ic3RlZmFucHJvYnN0Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5zdGVmYW5wcm9ic3Q8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vbWVycC1leHBsb3JpdW0iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTMwNzM4MjI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJvbWVycC1leHBsb3JpdW0iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPm9tZXJwLWV4cGxvcml1bTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL28tYXoiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjM2MTg0MzE/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJvLWF6Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5vLWF6PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWlsa3NlbnNlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI5MTI4NzAzP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibWlsa3NlbnNlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5taWxrc2Vuc2U8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rd2FpY2hhbnoiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzYwNTk3NjE/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJrd2FpY2hhbnoiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmt3YWljaGFuejwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ctYWlyZXkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzU1NDczMzg/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJnLWFpcmV5Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5nLWFpcmV5PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ2ExYXoiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzU3NTg4OTk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJnYTFheiIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Z2ExYXo8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Gb3RpZU1Db25zdGFudCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MjM3MjY1Nj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkZvdGllTUNvbnN0YW50Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5Gb3RpZU1Db25zdGFudDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2RhbndpdGhhYm94Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NDc5Mjc0MT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImRhbndpdGhhYm94Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5kYW53aXRoYWJveDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dpbGxpYW1Cb252aW5pIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM3ODM0MTUwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iV2lsbGlhbUJvbnZpbmkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPldpbGxpYW1Cb252aW5pPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYnNkYXlvIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQxNzU0ODQxP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYnNkYXlvIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5ic2RheW88L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9DaGlubGlubGVlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ5MTU0NjIyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iQ2hpbmxpbmxlZSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Q2hpbmxpbmxlZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2JpbmdiZWFubiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTAzODA2MTM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJiaW5nYmVhbm4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmJpbmdiZWFubjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3pha2FyaWEtc2hhaGVuIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM1MzA4MjMyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iemFrYXJpYS1zaGFoZW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnpha2FyaWEtc2hhaGVuPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcm9sbGRlZXAtc3RlcG1lcnJpbHkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTg1MDQ5MTM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJyb2xsZGVlcC1zdGVwbWVycmlseSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+cm9sbGRlZXAtc3RlcG1lcnJpbHk8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Xb2xmLVN5bmRyb21lIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ0NTk4MTA0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iV29sZi1TeW5kcm9tZSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+V29sZi1TeW5kcm9tZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3dpbGNvc2Nob25ldmVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMDY0NTg4P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0id2lsY29zY2hvbmV2ZWxkIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj53aWxjb3NjaG9uZXZlbGQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yb3RjaXciPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjExMTk1NjQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJyb3RjaXciLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnJvdGNpdzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dlc2xleVNrZWVuIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIxMzQ3NjE/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJXZXNsZXlTa2VlbiIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+V2VzbGV5U2tlZW48L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9NYS12ZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTIyNzk5Nj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Ik1hLXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5NYS12ZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL01haTAzMTMiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjEwMzkzNjY/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJNYWkwMzEzIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5NYWkwMzEzPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQ291cnRjaXJjdWl0cyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85MDQ1MTc1Mj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkNvdXJ0Y2lyY3VpdHMiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkNvdXJ0Y2lyY3VpdHM8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yZWt0ZGVja2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNjczMjA0ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InJla3RkZWNrYXJkIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5yZWt0ZGVja2FyZDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RoaWJhdWx0bGVvdWF5Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEzODk0MDU0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0idGhpYmF1bHRsZW91YXkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnRoaWJhdWx0bGVvdWF5PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20veW9rZVRIIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY2MjM2Mjk1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ieW9rZVRIIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj55b2tlVEg8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zdHJhdG9zYmx1ZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMDg4NzMwMz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InN0cmF0b3NibHVlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5zdHJhdG9zYmx1ZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NpbmgxMTc4MDEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDM2OTY3MTU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJzaW5oMTE3ODAxIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5zaW5oMTE3ODAxPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRG1pdHJpaUtodWRpYWtvdiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDg5MTUzODQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJEbWl0cmlpS2h1ZGlha292Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5EbWl0cmlpS2h1ZGlha292PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGllZ29sb3BlcyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNzc4MjQwOD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImRpZWdvbG9wZXMiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmRpZWdvbG9wZXM8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS91bnRpbnkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjkwNTQ0OTI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ1bnRpbnkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnVudGlueTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2x1bmRpYnVuZGkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTEwOTYxMj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Imx1bmRpYnVuZGkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmx1bmRpYnVuZGk8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9EYXZpZE5pZXNzZW4iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjg1Mzk0OTk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJEYXZpZE5pZXNzZW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkRhdmlkTmllc3NlbjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2RhcmVrYXplIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMyNzQ3NTQ5P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZGFyZWthemUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmRhcmVrYXplPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGFucCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMTgyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZGFucCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+ZGFucDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2RhbmpvaG5zb245NSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82ODcxNTA0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZGFuam9obnNvbjk1Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5kYW5qb2huc29uOTU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kYW1pYW5zYW4yMzkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDIwOTU2MjA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJkYW1pYW5zYW4yMzkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmRhbWlhbnNhbjIzOTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0NsYW5FdmVyIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzczMTYwNzgzP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iQ2xhbkV2ZXIiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkNsYW5FdmVyPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXNsZWFybiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81ODc0ODY0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iY2hyaXNsZWFybiIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Y2hyaXNsZWFybjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NoYWR3aGl0YWNyZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzQ0NTU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJjaGFkd2hpdGFjcmUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmNoYWR3aGl0YWNyZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NhcnN0ZW5sZWJlayI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81OTk2MDM4NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImNhcnN0ZW5sZWJlayIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Y2Fyc3RlbmxlYmVrPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2FjdHlzbWFuIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUwNTY4ODA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJjYWN0eXNtYW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmNhY3R5c21hbjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NteXJjdSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MjAzMTkyMD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IlNteXJjdSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+U215cmN1PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYnJ1bm9ncmNzYWRhIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU0NjczMjA1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYnJ1bm9ncmNzYWRhIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5icnVub2dyY3NhZGE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9icmlhbmhlaW5lbWFuIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMyMTA2Nzg/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJicmlhbmhlaW5lbWFuIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5icmlhbmhlaW5lbWFuPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQm9yaXNpY2giPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTgxODY4ODk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJCb3Jpc2ljaCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Qm9yaXNpY2g8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9iZHBpcHJhdmEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzg3MTIwOT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImJkcGlwcmF2YSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YmRwaXByYXZhPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQmVuSmVhdSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMjI0ODgyOD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkJlbkplYXUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkJlbkplYXU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zYWl0aGlzIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE1NDc0NTM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJzYWl0aGlzIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5zYWl0aGlzPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20venNpbGJpIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM4ODY2NTg/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ6c2lsYmkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnpzaWxiaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FydGh1cmZpb3JldHRlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ3NTM3NzA0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYXJ0aHVyZmlvcmV0dGUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmFydGh1cmZpb3JldHRlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGhpc2lzYXJrbyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjkxNjc1MDc/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ0aGlzaXNhcmtvIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj50aGlzaXNhcmtvPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXJhc2hzaGV5ZGEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzg5MjIyMDM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJhcmFzaHNoZXlkYSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YXJhc2hzaGV5ZGE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaWdwd25lZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMjM2MzAyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ic2lncHduZWQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnNpZ3B3bmVkPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ2l6ZXJvIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE1NDQwNjQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJnaXplcm8iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmdpemVybzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FsZXdpbiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85ODA4NDQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJhbGV3aW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmFsZXdpbjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NsYXNoNjg2Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQxNjE3NzA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJzbGFzaDY4NiIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+c2xhc2g2ODY8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9haG1hZGktYWtiYXIiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDgwNjk2OTU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJhaG1hZGktYWtiYXIiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmFobWFkaS1ha2JhcjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL01hdGh1ckFkaXR5YTcyNCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NzY4NDIxOD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Ik1hdGh1ckFkaXR5YTcyNCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+TWF0aHVyQWRpdHlhNzI0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWJkdWxhbWl0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MjQ2MjQ2P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYWJkdWxhbWl0ZSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YWJkdWxhbWl0ZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NoYWRpZXN0R29hdCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODU5MDQ5Mj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IlNoYWRpZXN0R29hdCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+U2hhZGllc3RHb2F0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbXJsdWJvcyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMjUyOTM5NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Im1ybHVib3MiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPm1ybHVib3M8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zYW5zY29udGV4dCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNzAxNjM4OD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InNhbnNjb250ZXh0Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5zYW5zY29udGV4dDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t5bGxpYW4iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTgzMTIzMz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Imt5bGxpYW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmt5bGxpYW48L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LZXZTbGFzaE51bGwiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjg1MTAzNjg/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJLZXZTbGFzaE51bGwiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPktldlNsYXNoTnVsbDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2psbnNsdiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMjMwMDQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJqbG5zbHYiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmpsbnNsdjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0lISXV0Y2giPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjA4MjUwNDc/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJJSEl1dGNoIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5JSEl1dGNoPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vam9uYXRhdyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yOTc3Mjc2Mz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImpvbmF0YXciLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmpvbmF0YXc8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9KYW5uY2hpZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yOTc0MzMxMD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Ikphbm5jaGllIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5KYW5uY2hpZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2p3YW5nbnoiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ1Njk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJqd2FuZ256Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5qd2FuZ256PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSmVmd2lsbGVtcyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMDE0MTkzMz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkplZndpbGxlbXMiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkplZndpbGxlbXM8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9UaG9sZHJpbSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zODUwNzIzOD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IlRob2xkcmltIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5UaG9sZHJpbTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0phY29iQ29mZmVlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ1ODg0MjY0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iSmFjb2JDb2ZmZWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkphY29iQ29mZmVlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va2V2aW5hbmQxMSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODE2MDQxND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImtldmluYW5kMTEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmtldmluYW5kMTE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90bHRzdXRsdHN1Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzgzMjgzNjc1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0idGx0c3V0bHRzdSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+dGx0c3V0bHRzdTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2VsdG9jaWVhciI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMjYzMzM4NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImVsdG9jaWVhciIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+ZWx0b2NpZWFyPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSWNleVd1Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY2MDk2MjU0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iSWNleVd1Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5JY2V5V3U8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9pYWdvYmFsbWVpZGEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzUyMzQwNDY/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJpYWdvYmFsbWVpZGEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmlhZ29iYWxtZWlkYTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2hwbW91dG9uIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzYxMDEyOTI4P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iaHBtb3V0b24iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmhwbW91dG9uPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQ0pId29uZyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85MDYwNTc/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJDSkh3b25nIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5DSkh3b25nPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSGVsZ2VTdmVycmUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA4OTY1Mj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkhlbGdlU3ZlcnJlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5IZWxnZVN2ZXJyZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0hhbWlkcnphc2giPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjk0NTM1Mzg/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJIYW1pZHJ6YXNoIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5IYW1pZHJ6YXNoPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vMjU1a2IiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzQ4OTgxND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IjI1NWtiIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj4yNTVrYjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0dyZXlYb3IiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzk2MDIyNzM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJHcmV5WG9yIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5HcmV5WG9yPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ2FsYWg5MiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDEzODQzMz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImdhbGFoOTIiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmdhbGFoOTI8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9GZGF3Z3MiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDM4MTQxNDA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJGZGF3Z3MiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkZkYXdnczwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Zsb3ZvdWluIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUxNTUxNDk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJmbG92b3VpbiIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Zmxvdm91aW48L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9maWxpYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNTk4NzcyND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImZpbGlhYmVsIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5maWxpYWJlbDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZhY3VzMjYiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTgwNzkwNTk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJmYWN1czI2Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5mYWN1czI2PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZW1tYW51ZWwtZmVyZG1hbiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNTQ3MDkyMT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImVtbWFudWVsLWZlcmRtYW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmVtbWFudWVsLWZlcmRtYW48L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9lbGxpb3R0LXdpdGgtdGhlLWxvbmdlc3QtbmFtZS1vbi1naXRodWIiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzYyNDUzNzM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJlbGxpb3R0LXdpdGgtdGhlLWxvbmdlc3QtbmFtZS1vbi1naXRodWIiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmVsbGlvdHQtd2l0aC10aGUtbG9uZ2VzdC1uYW1lLW9uLWdpdGh1YjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2VsbGlvdG5hc2giPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTM5NDkwOTk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJlbGxpb3RuYXNoIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5lbGxpb3RuYXNoPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+Cgk8dGJvZHk+CjwvdGFibGU+CjwhLS0gcmVhZG1lOiBjb2xsYWJvcmF0b3JzLGNvbnRyaWJ1dG9ycyAtZW5kIC0tPgo= readmeEtag: '"ec4ca5123ddd0c9f52ff893937e96c65c38a24af"' readmeLastModified: Sat, 31 Jan 2026 01:10:12 GMT repositoryId: 679280065 description: >- Scalar is an open-source API platform:                                       🌐 Modern Rest API Client                                        📖 Beautiful API References                                        ✨ 1st-Class OpenAPI/Swagger Support created: '2023-08-16T13:42:32Z' updated: '2026-02-06T02:22:15Z' language: TypeScript archived: false stars: 13768 watchers: 33 forks: 727 owner: scalar logo: https://avatars.githubusercontent.com/u/301879?v=4 license: MIT repoEtag: '"54e5bfe76d85a3b0d91eb36e2a2baa5eb370a254d4178f7fb4d363ce49bcb3c3"' repoLastModified: Fri, 06 Feb 2026 02:22:15 GMT foundInMaster: true - source: https://openapi.tools/ name: Scramble category: - Auto Generators - Documentation - Server Implementations language: PHP repository: https://github.com/dedoc/scramble link: https://scramble.dedoc.co/ source_description: >- Modern Laravel OpenAPI documentation generator. No PHPDoc annotations required. v2: false v3: false v3_1: true id: 98f20578b2c52e7c4116e9fa61000f60 repositoryMetadata: base64Readme: >- PHA+CiAgPGEgaHJlZj0iaHR0cHM6Ly9zY3JhbWJsZS5kZWRvYy5jbyIgdGFyZ2V0PSJfYmxhbmsiPgogICAgPGltZyBzcmM9Ii4vLmdpdGh1Yi9naC1pbWcucG5nP3Y9MSIgYWx0PSJTY3JhbWJsZSDigJMgTGFyYXZlbCBBUEkgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IiLz4KICA8L2E+CjwvcD4KCiMgU2NyYW1ibGUKClNjcmFtYmxlIGdlbmVyYXRlcyBBUEkgZG9jdW1lbnRhdGlvbiBmb3IgTGFyYXZlbCBwcm9qZWN0LiBXaXRob3V0IHJlcXVpcmluZyB5b3UgdG8gbWFudWFsbHkgd3JpdGUgUEhQRG9jIGFubm90YXRpb25zLiBEb2NzIGFyZSBnZW5lcmF0ZWQgaW4gT3BlbkFQSSAzLjEuMCBmb3JtYXQuCgojIyBEb2N1bWVudGF0aW9uCgpZb3UgY2FuIGZpbmQgZnVsbCBkb2N1bWVudGF0aW9uIGF0IFtzY3JhbWJsZS5kZWRvYy5jb10oaHR0cHM6Ly9zY3JhbWJsZS5kZWRvYy5jbykuCgojIyBJbnRyb2R1Y3Rpb24KClRoZSBtYWluIG1vdHRvIG9mIHRoZSBwcm9qZWN0IGlzIGdlbmVyYXRpbmcgeW91ciBBUEkgZG9jdW1lbnRhdGlvbiB3aXRob3V0IHJlcXVpcmluZyB5b3UgdG8gYW5ub3RhdGUgeW91ciBjb2RlLgoKVGhpcyBhbGxvd3MgeW91IHRvIGZvY3VzIG9uIGNvZGUgYW5kIGF2b2lkIGFubm90YXRpbmcgZXZlcnkgcG9zc2libGUgcGFyYW0vZmllbGQgYXMgaXQgbWF5IHJlc3VsdCBpbiBvdXRkYXRlZCBkb2N1bWVudGF0aW9uLiBCeSBnZW5lcmF0aW5nIGRvY3MgYXV0b21hdGljYWxseSBmcm9tIHRoZSBjb2RlIHlvdXIgQVBJIHdpbGwgYWx3YXlzIGhhdmUgdXAtdG8tZGF0ZSBkb2NzIHdoaWNoIHlvdSBjYW4gdHJ1c3QuCgojIyBJbnN0YWxsYXRpb24KWW91IGNhbiBpbnN0YWxsIHRoZSBwYWNrYWdlIHZpYSBjb21wb3NlcjoKYGBgc2hlbGwKY29tcG9zZXIgcmVxdWlyZSBkZWRvYy9zY3JhbWJsZQpgYGAKCiMjIFVzYWdlCkFmdGVyIGluc3RhbGwgeW91IHdpbGwgaGF2ZSAyIHJvdXRlcyBhZGRlZCB0byB5b3VyIGFwcGxpY2F0aW9uOgoKLSBgL2RvY3MvYXBpYCAtIFVJIHZpZXdlciBmb3IgeW91ciBkb2N1bWVudGF0aW9uCi0gYC9kb2NzL2FwaS5qc29uYCAtIE9wZW4gQVBJIGRvY3VtZW50IGluIEpTT04gZm9ybWF0IGRlc2NyaWJpbmcgeW91ciBBUEkuCgpCeSBkZWZhdWx0LCB0aGVzZSByb3V0ZXMgYXJlIGF2YWlsYWJsZSBvbmx5IGluIGBsb2NhbGAgZW52aXJvbm1lbnQuIFlvdSBjYW4gY2hhbmdlIHRoaXMgYmVoYXZpb3IgW2J5IGRlZmluaW5nIGB2aWV3QXBpRG9jc2AgZ2F0ZV0oaHR0cHM6Ly9zY3JhbWJsZS5kZWRvYy5jby91c2FnZS9nZXR0aW5nLXN0YXJ0ZWQjZG9jcy1hdXRob3JpemF0aW9uKS4KCi0tLQoKPHA+CiAgPGEgaHJlZj0iaHR0cHM6Ly9zYXZlbGlmZS5pbi51YS9lbi9kb25hdGUtZW4vIiB0YXJnZXQ9Il9ibGFuayI+CiAgICA8aW1nIHNyYz0iLi8uZ2l0aHViL2doLXByb21vLnN2Zz92PTEiIGFsdD0iRG9uYXRlIi8+CiAgPC9hPgo8L3A+IAo= readmeEtag: '"a7be54662226c74bd5b97fd6b3fe81ece1ea59f0"' readmeLastModified: Fri, 04 Jul 2025 12:37:45 GMT repositoryId: 521720102 description: >- Modern Laravel OpenAPI (Swagger) documentation generator. No PHPDoc annotations required. created: '2022-08-05T17:16:20Z' updated: '2026-02-05T08:32:29Z' language: PHP archived: false stars: 1965 watchers: 12 forks: 186 owner: dedoc logo: https://avatars.githubusercontent.com/u/93313138?v=4 license: MIT repoEtag: '"6416e6b8ce4c0768630ec26b8591e41acb25ab1561a26ae326815c5ed739e404"' repoLastModified: Thu, 05 Feb 2026 08:32:29 GMT foundInMaster: true - source: https://openapi.tools/ name: Scribe category: Documentation link: https://scribe.knuckles.wtf/ repository: https://github.com/knuckleswtf/scribe/ language: PHP source_description: Generate API documentation for humans from your Laravel codebase. v2: false v3: true v3_1: false id: a13f5fae7efc680dc1e5390220f1db3d repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KPGltZyBzcmM9ImxvZ28tc2NyaWJlLnBuZyIgYWx0PSJsb2dvLXNjcmliZSI+PGJyPgoKWyFbTGF0ZXN0IFN0YWJsZSBWZXJzaW9uXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL2tudWNrbGVzd3RmL3NjcmliZS92L3N0YWJsZSldKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9rbnVja2xlc3d0Zi9zY3JpYmUpClshW1RvdGFsIERvd25sb2Fkc10oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9rbnVja2xlc3d0Zi9zY3JpYmUvZG93bmxvYWRzKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2tudWNrbGVzd3RmL3NjcmliZSkKWyFbQ29kZSBTdHlsZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlX3N0eWxlLXBpbnQtZjU4ZDMzKV0oaHR0cHM6Ly9naXRodWIuY29tL2xhcmF2ZWwvcGludCkKCjwvZGl2PgoKClNjcmliZSBoZWxwcyB5b3UgZ2VuZXJhdGUgQVBJIGRvY3VtZW50YXRpb24gZm9yIGh1bWFucyBmcm9tIHlvdXIgTGFyYXZlbCBjb2RlYmFzZS4gU2VlIGEgbGl2ZSBleGFtcGxlIGF0IFtkZW1vLnNjcmliZS5rbnVja2xlcy53dGZdKGh0dHBzOi8vZGVtby5zY3JpYmUua251Y2tsZXMud3RmKS4KCiMjIEZlYXR1cmVzCi0gVXNlZnVsIG91dHB1dDoKICAtIFByZXR0eSBzaW5nbGUtcGFnZSBIVE1MIGRvYywgd2l0aCBodW1hbi1mcmllbmRseSB0ZXh0LCBjb2RlIHNhbXBsZXMsIGFuZCBpbi1icm93c2VyIEFQSSB0ZXN0ZXIgKCJUcnkgSXQgT3V0IikKICAtIEdlbmVyYXRlcyBQb3N0bWFuIGNvbGxlY3Rpb24gYW5kIE9wZW5BUEkgc3BlYyAodjMuMC4zIG9yIHYzLjEuMCkKLSBTbWFydHMuIFNjcmliZSBjYW46CiAgLSBleHRyYWN0IHJlcXVlc3QgcGFyYW1ldGVyIGRldGFpbHMgZnJvbSBGb3JtUmVxdWVzdHMgb3IgdmFsaWRhdGlvbiBydWxlcwogIC0gc2FmZWx5IGNhbGwgQVBJIGVuZHBvaW50cyB0byBnZXQgc2FtcGxlIHJlc3BvbnNlcwogIC0gZ2VuZXJhdGUgc2FtcGxlIHJlc3BvbnNlcyBmcm9tIEVsb3F1ZW50IEFQSSBSZXNvdXJjZXMgb3IgVHJhbnNmb3JtZXJzCi0gQ3VzdG9taXphYmxlIHRvIGRpZmZlcmVudCBsZXZlbHM6CiAgLSBDdXN0b21pemUgdGhlIFVJIGJ5IGFkanVzdGluZyB0ZXh0LCBvcmRlcmluZywgZXhhbXBsZXMsIG9yIGNoYW5naW5nIHRoZSBVSSBpdHNlbGYKICAtIEFkZCBjdXN0b20gc3RyYXRlZ2llcyB0byBhZGp1c3QgaG93IGRhdGEgaXMgZXh0cmFjdGVkCiAgLSBTdGF0aWNhbGx5IGRlZmluZSBleHRyYSBlbmRwb2ludHMgb3IgaW5mb3JtYXRpb24gbm90IGluIHlvdXIgY29kZWJhc2UKCj4gWyFUSVBdCj4g8J+RiyBTY3JpYmUgaGVscHMgeW91IGdlbmVyYXRlIGRvY3MgYXV0b21hdGljYWxseSwgYnV0IGlmIHlvdSByZWFsbHkgd2FudCB0byBtYWtlIGZyaWVuZGx5LCBtYWludGFpbmFibGUsIGFuZCB0ZXN0YWJsZSBBUEkgZG9jcywgdGhlcmUgYXJlIHNvbWUgbW9yZSB0aGluZ3MgeW91IG5lZWQgdG8ga25vdy4KPiBTbyBJIG1hZGUgW2EgY291cnNlXShodHRwczovL3NoYWx2YWgudGVhY2hhYmxlLmNvbS9wL2FwaS1kb2N1bWVudGF0aW9uLWZvci1kZXZlbG9wZXJzP3V0bV9zb3VyY2U9c2NyaWJlLWxhcmF2ZWwmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249bm9uZSkgZm9yIHlvdS7wn6SXCgojIyBEb2N1bWVudGF0aW9uCkNoZWNrIG91dCB0aGUgZG9jdW1lbnRhdGlvbiBhdCBbc2NyaWJlLmtudWNrbGVzLnd0Zi9sYXJhdmVsXShodHRwOi8vc2NyaWJlLmtudWNrbGVzLnd0Zi9sYXJhdmVsKS4KCiMjIENvbnRyaWJ1dGluZwpDb250cmlidXRpbmcgaXMgZWFzeSEgU2VlIG91ciBbY29udHJpYnV0aW9uIGd1aWRlXShodHRwczovL3NjcmliZS5rbnVja2xlcy53dGYvbGFyYXZlbC9jb250cmlidXRpbmcpLgo= readmeEtag: '"b316cbbeea5323d3874e708d814c13388c02a4ad"' readmeLastModified: Wed, 04 Feb 2026 20:49:04 GMT repositoryId: 260729799 description: Generate API documentation for humans from your Laravel codebase.✍ created: '2020-05-02T16:36:45Z' updated: '2026-02-05T04:55:41Z' language: PHP archived: false stars: 2245 watchers: 15 forks: 357 owner: knuckleswtf logo: https://avatars.githubusercontent.com/u/63367037?v=4 license: MIT repoEtag: '"12c50897b3ffbcdd1e8a5e800f98789080f33fc17713a99d1691be85761a7fed"' repoLastModified: Thu, 05 Feb 2026 04:55:41 GMT foundInMaster: true - source: https://openapi.tools/ name: Supermodel category: DSL language: SaaS source_description: >- Model your data using JSON Schema, refer and remix the models freely, convert to various formats including OAS v2/v3. link: https://supermodel.io v2: true v3: true foundInMaster: true id: b839c288f46fd1ef91135b5544dc4aef - source: https://openapi.tools/ name: ReadMe category: Documentation link: https://readme.com repository: https://github.com/readmeio language: SaaS source_description: Interactive developer hubs that help users succeed with your APIs 🦉 v2: true v3: true v3_1: true id: e2e7cc265f4d5143a413ce6930c59d2d foundInMaster: true - source: https://openapi.tools/ name: ReDoc category: - Documentation - Parsers language: React.js repository: https://github.com/redocly/redoc/ link: https://redocly.github.io/redoc/ source_description: Open source API reference docs from OpenAPI descriptions v2: true v3: true v3_1: true id: fb3dbdf9a2210ae5f30346b6c0094df3 repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICA8aW1nIGFsdD0iUmVkb2MgbG9nbyIgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vUmVkb2NseS9yZWRvYy9tYWluLy9kb2NzL2ltYWdlcy9yZWRvYy5wbmciIHdpZHRoPSI0MDBweCIgLz4KCiMgR2VuZXJhdGUgYmVhdXRpZnVsIEFQSSBkb2N1bWVudGF0aW9uIGZyb20gT3BlbkFQSQoKICBbIVtucG1dKGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9yZWRvYy5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9yZWRvYykgWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9yZWRvYy5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvYy9ibG9iL21haW4vTElDRU5TRSkKCiAgWyFbYnVuZGxlIHNpemVdKGh0dHA6Ly9pbWcuYmFkZ2VzaXplLmlvL2h0dHBzOi8vY2RuLnJlZG9jLmx5L3JlZG9jL2xhdGVzdC9idW5kbGVzL3JlZG9jLnN0YW5kYWxvbmUuanM/Y29tcHJlc3Npb249Z3ppcCZtYXg9MzAwMDAwKV0oaHR0cHM6Ly9jZG4ucmVkb2MubHkvcmVkb2MvbGF0ZXN0L2J1bmRsZXMvcmVkb2Muc3RhbmRhbG9uZS5qcykgWyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kbS9yZWRvYy5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9yZWRvYykgWyFbanNEZWxpdnIgc3RhdHVzXShodHRwczovL2RhdGEuanNkZWxpdnIuY29tL3YxL3BhY2thZ2UvbnBtL3JlZG9jL2JhZGdlKV0oaHR0cHM6Ly93d3cuanNkZWxpdnIuY29tL3BhY2thZ2UvbnBtL3JlZG9jKQo8L2Rpdj4KCgojIyBBYm91dCBSZWRvYwoKUmVkb2MgaXMgYW4gb3BlbiBzb3VyY2UgdG9vbCBmb3IgZ2VuZXJhdGluZyBkb2N1bWVudGF0aW9uIGZyb20gT3BlbkFQSSAoZm9ybWVybHkgU3dhZ2dlcikgZGVmaW5pdGlvbnMuCgpCeSBkZWZhdWx0IFJlZG9jIG9mZmVycyBhIHRocmVlLXBhbmVsLCByZXNwb25zaXZlIGxheW91dDoKCi0gVGhlIGxlZnQgcGFuZWwgY29udGFpbnMgYSBzZWFyY2ggYmFyIGFuZCBuYXZpZ2F0aW9uIG1lbnUuCi0gVGhlIGNlbnRyYWwgcGFuZWwgY29udGFpbnMgdGhlIGRvY3VtZW50YXRpb24uCi0gVGhlIHJpZ2h0IHBhbmVsIGNvbnRhaW5zIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGV4YW1wbGVzLgoKIVtSZWRvYyBkZW1vXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vUmVkb2NseS9yZWRvYy9tYWluL2RlbW8vcmVkb2MtZGVtby5wbmcpCgojIyBMaXZlIGRlbW8KCklmIHlvdSB3YW50IHRvIHNlZSBob3cgUmVkb2MgcmVuZGVycyB5b3VyIE9wZW5BUEkgZGVmaW5pdGlvbiwKeW91IGNhbiB0cnkgaXQgb3V0IG9ubGluZSBhdCBodHRwczovL3JlZG9jbHkuZ2l0aHViLmlvL3JlZG9jLy4KCkEgdmVyc2lvbiBvZiB0aGUgU3dhZ2dlciBQZXRzdG9yZSBBUEkgaXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuClRvIHRlc3QgaXQgd2l0aCB5b3VyIG93biBPcGVuQVBJIGRlZmluaXRpb24sCmVudGVyIHRoZSBVUkwgZm9yIHlvdXIgZGVmaW5pdGlvbiBhbmQgc2VsZWN0ICoqVFJZIElUKiouCgojIyBSZWRvYyBmZWF0dXJlcwoKLSBSZXNwb25zaXZlIHRocmVlLXBhbmVsIGRlc2lnbiB3aXRoIG1lbnUvc2Nyb2xsaW5nIHN5bmNocm9uaXphdGlvbgotIFN1cHBvcnQgZm9yIE9wZW5BUEkgMy4xLCBPcGVuQVBJIDMuMCwgYW5kIFN3YWdnZXIgMi4wCi0gQWJpbGl0eSB0byBpbnRlZ3JhdGUgeW91ciBBUEkgaW50cm9kdWN0aW9uIGludG8gdGhlIHNpZGUgbWVudQotIEhpZ2gtbGV2ZWwgZ3JvdXBpbmcgaW4gc2lkZSBtZW51IHdpdGggdGhlIFtgeC10YWdHcm91cHNgXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvYXBpLXJlZmVyZW5jZS1kb2NzL3NwZWNpZmljYXRpb24tZXh0ZW5zaW9ucy94LXRhZy1ncm91cHMvKSBzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbgotIFtTaW1wbGUgaW50ZWdyYXRpb24gd2l0aCBgY3JlYXRlLXJlYWN0LWFwcGBdKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9yZWRvYy9xdWlja3N0YXJ0L3JlYWN0LykKLSBDb2RlIHNhbXBsZXMgc3VwcG9ydCAod2l0aCB2ZW5kb3IgZXh0ZW5zaW9uKSA8YnI+CiAgIVtjb2RlIHNhbXBsZXMgaW4gYWN0aW9uXShkb2NzL2ltYWdlcy9jb2RlLXNhbXBsZXMtZGVtby5naWYpCgojIyBVc2FnZQoKUmVkb2MgaXMgcHJvdmlkZWQgYXMgYSBDTEkgdG9vbCAoYWxzbyBkaXN0cmlidXRlZCBhcyBhIERvY2tlciBpbWFnZSksIEhUTUwgdGFnLCBhbmQgUmVhY3QgY29tcG9uZW50LgoKIyMjIEdlbmVyYXRlIGRvY3VtZW50YXRpb24gZnJvbSB0aGUgQ0xJCgpJZiB5b3UgaGF2ZSBOb2RlIGluc3RhbGxlZCwgcXVpY2tseSBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uIHVzaW5nIGBucHhgOgoKYGBgYmFzaApucHggQHJlZG9jbHkvY2xpIGJ1aWxkLWRvY3Mgb3BlbmFwaS55YW1sCmBgYAoKVGhlIHRvb2wgb3V0cHV0cyBieSBkZWZhdWx0IHRvIGEgZmlsZSBuYW1lZCBgcmVkb2Mtc3RhdGljLmh0bWxgIHRoYXQgeW91IGNhbiBvcGVuIGluIHlvdXIgYnJvd3Nlci4KCj4gW1JlZG9jbHkgQ0xJXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvY2x5LWNsaS8pIGRvZXMgbW9yZSB0aGFuIGRvY3M7IGNoZWNrIGl0IG91dCBhbmQgYWRkIGxpbnRpbmcsIGJ1bmRsaW5nLCBhbmQgbW9yZSB0byB5b3VyIEFQSSB3b3JrZmxvdy4KCiMjIyBBZGQgYW4gSFRNTCBlbGVtZW50IHRvIHRoZSBwYWdlCgpDcmVhdGUgYW4gSFRNTCBwYWdlLCBvciBlZGl0IGFuIGV4aXN0aW5nIG9uZSwgYW5kIGFkZCB0aGUgZm9sbG93aW5nIHdpdGhpbiB0aGUgYm9keSB0YWdzOgoKYGBgaHRtbAogICAgPHJlZG9jIHNwZWMtdXJsPSJodHRwOi8vcGV0c3RvcmUuc3dhZ2dlci5pby92Mi9zd2FnZ2VyLmpzb24iPjwvcmVkb2M+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4ucmVkb2MubHkvcmVkb2MvbGF0ZXN0L2J1bmRsZXMvcmVkb2Muc3RhbmRhbG9uZS5qcyI+IDwvc2NyaXB0PgpgYGAKCk9wZW4gdGhlIEhUTUwgZmlsZSBpbiB5b3VyIGJyb3dzZXIsIGFuZCB5b3VyIEFQSSBkb2N1bWVudGF0aW9uIGlzIHNob3duIG9uIHRoZSBwYWdlLgoKQWRkIHlvdXIgb3duIGBzcGVjLXVybGAgdG8gdGhlIGA8cmVkb2M+YCB0YWc7IHRoaXMgYXR0cmlidXRlIGNhbiBhbHNvIGJlIGEgbG9jYWwgZmlsZS4gVGhlIEphdmFTY3JpcHQgbGlicmFyeSBjYW4gYWxzbyBiZSBpbnN0YWxsZWQgbG9jYWxseSB1c2luZyBgbnBtYCBhbmQgc2VydmVkIGZyb20geW91ciBvd24gc2VydmVyLCBzZWUgdGhlIFtIVE1MIGRlcGxveW1lbnQgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL3JlZG9jL2RlcGxveW1lbnQvaHRtbC8pIGZvciBtb3JlIGRldGFpbHMuCgojIyMgTW9yZSB1c2FnZSBvcHRpb25zCgpDaGVjayBvdXQgdGhlIFtkZXBsb3ltZW50IGRvY3VtZW50YXRpb25dKC4vZG9jcy9kZXBsb3ltZW50L2ludHJvLm1kKSBmb3IgbW9yZSBvcHRpb25zLCBhbmQgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBmb3IgZWFjaC4KCiMjIFJlZG9jIHZzLiBSZWRvY2x5IEFQSSBSZWZlcmVuY2UKClJlZG9jIGlzIFJlZG9jbHkncyBjb21tdW5pdHktZWRpdGlvbiBwcm9kdWN0LiBMb29raW5nIGZvciBzb21ldGhpbmcgbW9yZT8KV2UgYWxzbyBvZmZlciBbaG9zdGVkIEFQSSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2FwaS1yZWdpc3RyeS9ndWlkZXMvYXBpLXJlZ2lzdHJ5LXF1aWNrc3RhcnQvKQp3aXRoIGFkZGl0aW9uYWwgZmVhdHVyZXMgaW5jbHVkaW5nOgoKKiBUcnktaXQgY29uc29sZQoqIEF1dG9tYXRlZCBjb2RlIHNhbXBsZXMKKiBQYWdpbmF0aW9uCiogRXh0cmEgdGhlbWUgb3B0aW9ucwoKIyMjIERvY3VtZW50YXRpb24gYW5kIHJlc291cmNlcwoKLSBbUmVmZXJlbmNlIGRvY3NdKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9hcGktcmVmZXJlbmNlLWRvY3MvZ2V0dGluZy1zdGFydGVkLykgLSB3ZSB0YWtlIGNhcmUgb2YgdGhlIGhvc3RpbmcKLSBbUmVkb2NdKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9yZWRvYy8pIC0gZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBvcGVuIHNvdXJjZSBwcm9qZWN0IChhbHNvIGluIHRoZSBgZG9jcy9gIGZvbGRlcikKLSBbQ29tbWFuZC1saW5lIGludGVyZmFjZSB0byBidW5kbGUgeW91ciBkb2NzIGludG8gYSB3ZWItcmVhZHkgSFRNTCBmaWxlXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL2NvbW1hbmRzL2J1aWxkLWRvY3MvKQotIEFQSSBsaW50aW5nLCBidW5kbGluZywgYW5kIG11Y2ggbW9yZSB3aXRoIG9wZW4gc291cmNlIFtSZWRvY2x5IENMSV0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2NsaSkKCiMjIFNob3djYXNlCgpBIHNhbXBsZSBvZiB0aGUgb3JnYW5pemF0aW9ucyB1c2luZyBSZWRvY2x5IHRvb2xzIGluIHRoZSB3aWxkOgoKLSBbUmViaWxseV0oaHR0cHM6Ly9hcGktcmVmZXJlbmNlLnJlYmlsbHkuY29tLykKLSBbRG9ja2VyIEVuZ2luZV0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL2FwaS92MS4yNS8pCi0gW1p1b3JhXShodHRwczovL3d3dy56dW9yYS5jb20vZGV2ZWxvcGVyL2FwaS1yZWZlcmVuY2UvKQotIFtEaXNjb3Vyc2VdKGh0dHA6Ly9kb2NzLmRpc2NvdXJzZS5vcmcpCi0gW0NvbW1ib3hdKGh0dHBzOi8vd3d3LmNvbW1ib3guaW8vYXBpLykKLSBbQVBJcy5ndXJ1XShodHRwczovL2FwaXMuZ3VydS9hcGktZG9jLykKLSBbQm94S25pZ2h0XShodHRwczovL3d3dy5kb2NzLmJveGtuaWdodC5jb20vKQotIFtRdWFkZXJubyBBUEldKGh0dHBzOi8vZGV2ZWxvcGVycy5xdWFkZXJuby5pby9hcGkpCgpfUHVsbCByZXF1ZXN0cyB0byBhZGQgeW91ciBvd24gQVBJIHBhZ2UgdG8gdGhlIGxpc3QgYXJlIHdlbGNvbWVfCgojIyBDb25maWd1cmF0aW9uCgpSZWRvYyBpcyBoaWdobHkgY29uZmlndXJhYmxlLCBzZWUgdGhlIFtjb25maWd1cmF0aW9uIGRvY3VtZW50YXRpb25dKGRvY3MvY29uZmlnLm1kKSBmb3IgZGV0YWlscy4KCiMjIyBPcGVuQVBJIHNwZWNpZmljYXRpb24gZXh0ZW5zaW9ucwpSZWRvYyB1c2VzIHRoZSBmb2xsb3dpbmcgW3NwZWNpZmljYXRpb24gZXh0ZW5zaW9uc10oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2FwaS1yZWZlcmVuY2UtZG9jcy9zcGVjLWV4dGVuc2lvbnMvKToKCiogW2B4LWxvZ29gXShkb2NzL3JlZG9jLXZlbmRvci1leHRlbnNpb25zLm1kI3gtbG9nbykgLSBpcyB1c2VkIHRvIHNwZWNpZnkgQVBJIGxvZ28KKiBbYHgtdHJhaXRUYWdgXShkb2NzL3JlZG9jLXZlbmRvci1leHRlbnNpb25zLm1kI3gtdHJhaXRUYWcpIC0gdXNlZnVsIGZvciB0YWdzIHRoYXQgcmVmZXIgdG8gbm9uLW5hdmlnYXRpb24gcHJvcGVydGllcyBsaWtlIFBhZ2luYXRpb24sIFJhdGUtTGltaXRzLCBldGMKKiBbYHgtY29kZVNhbXBsZXNgXShkb2NzL3JlZG9jLXZlbmRvci1leHRlbnNpb25zLm1kI3gtY29kZVNhbXBsZXMpIC0gc3BlY2lmeSBvcGVyYXRpb24gY29kZSBzYW1wbGVzCiogW2B4LWJhZGdlc2BdKGRvY3MvcmVkb2MtdmVuZG9yLWV4dGVuc2lvbnMubWQjeC1iYWRnZXMpIC0gc3BlY2lmeSBvcGVyYXRpb24gYmFkZ2VzCiogW2B4LWV4YW1wbGVzYF0oZG9jcy9yZWRvYy12ZW5kb3ItZXh0ZW5zaW9ucy5tZCN4LWV4YW1wbGVzKSAtIHNwZWNpZnkgSlNPTiBleGFtcGxlIGZvciByZXF1ZXN0cwoqIFtgeC1udWxsYWJsZWBdKGRvY3MvcmVkb2MtdmVuZG9yLWV4dGVuc2lvbnMubWQjeC1udWxsYWJsZSkgLSBtYXJrIHNjaGVtYSBwYXJhbSBhcyBhIG51bGxhYmxlCiogW2B4LWRpc3BsYXlOYW1lYF0oZG9jcy9yZWRvYy12ZW5kb3ItZXh0ZW5zaW9ucy5tZCN4LWRpc3BsYXluYW1lKSAtIHNwZWNpZnkgaHVtYW4tZnJpZW5kbHkgbmFtZXMgZm9yIHRoZSBtZW51IGNhdGVnb3JpZXMKKiBbYHgtdGFnR3JvdXBzYF0oZG9jcy9yZWRvYy12ZW5kb3ItZXh0ZW5zaW9ucy5tZCN4LXRhZ0dyb3VwcykgLSBncm91cCB0YWdzIGJ5IGNhdGVnb3JpZXMgaW4gdGhlIHNpZGUgbWVudQoqIFtgeC1zZXJ2ZXJzYF0oZG9jcy9yZWRvYy12ZW5kb3ItZXh0ZW5zaW9ucy5tZCN4LXNlcnZlcnMpIC0gYWJpbGl0eSB0byBzcGVjaWZ5IGRpZmZlcmVudCBzZXJ2ZXJzIGZvciBBUEkgKGJhY2twb3J0ZWQgZnJvbSBPcGVuQVBJIDMuMCkKKiBbYHgtYWRkaXRpb25hbFByb3BlcnRpZXNOYW1lYF0oZG9jcy9yZWRvYy12ZW5kb3ItZXh0ZW5zaW9ucy5tZCN4LWFkZGl0aW9uYWxQcm9wZXJ0aWVzTmFtZSkgLSBhYmlsaXR5IHRvIHN1cHBseSBhIGRlc2NyaXB0aXZlIG5hbWUgZm9yIHRoZSBhZGRpdGlvbmFsIHByb3BlcnR5IGtleXMKKiBbYHgtc3VtbWFyeWBdKGRvY3MvcmVkb2MtdmVuZG9yLWV4dGVuc2lvbnMubWQjeC1zdW1tYXJ5KSAtIGZvciBSZXNwb25zZSBvYmplY3QsIHVzZSBhcyB0aGUgcmVzcG9uc2UgYnV0dG9uIHRleHQsIHdpdGggZGVzY3JpcHRpb24gcmVuZGVyZWQgdW5kZXIgdGhlIGJ1dHRvbgoqIFtgeC1leHBsaWNpdE1hcHBpbmdPbmx5YF0oZG9jcy9yZWRvYy12ZW5kb3ItZXh0ZW5zaW9ucy5tZCN4LWV4cGxpY2l0TWFwcGluZ09ubHkpIC0gaW4gU2NoZW1hcywgZGlzcGxheSBhIG1vcmUgZGVzY3JpcHRpdmUgcHJvcGVydHkgbmFtZSBpbiBvYmplY3RzIHdpdGggYWRkaXRpb25hbFByb3BlcnRpZXMgd2hlbiB2aWV3aW5nIHRoZSBwcm9wZXJ0eSBsaXN0IHdpdGggYW4gb2JqZWN0CgojIyBSZWxlYXNlcwoKKipUaGUgUkVBRE1FIGZvciB0aGUgYDEueGAgdmVyc2lvbiBpcyBvbiB0aGUgW3YxLnhdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jL3RyZWUvdjEueCkgYnJhbmNoLioqCgpBbGwgdGhlIDIueCByZWxlYXNlcyBhcmUgZGVwbG95ZWQgdG8gbnBtIGFuZCBjYW4gYmUgdXNlZCB3aXRoIFJlZG9jbHktY2RuOgotIHBhcnRpY3VsYXIgcmVsZWFzZSwgZm9yIGV4YW1wbGUsIGB2Mi4wLjBgOiBodHRwczovL2Nkbi5yZWRvYy5seS9yZWRvYy92Mi4wLjAvYnVuZGxlcy9yZWRvYy5zdGFuZGFsb25lLmpzCi0gYGxhdGVzdGAgcmVsZWFzZTogaHR0cHM6Ly9jZG4ucmVkb2MubHkvcmVkb2MvbGF0ZXN0L2J1bmRsZXMvcmVkb2Muc3RhbmRhbG9uZS5qcwoKQWRkaXRpb25hbGx5LCBhbGwgdGhlIDEueCByZWxlYXNlcyBhcmUgaG9zdGVkIG9uIG91ciBHaXRIdWIgUGFnZXMtYmFzZWQgQ0ROICoqKGRlcHJlY2F0ZWQpKio6Ci0gcGFydGljdWxhciByZWxlYXNlLCBmb3IgZXhhbXBsZSBgdjEuMi4wYDogaHR0cHM6Ly9yZWJpbGx5LmdpdGh1Yi5pby9SZURvYy9yZWxlYXNlcy92MS4yLjAvcmVkb2MubWluLmpzCi0gYHYxLngueGAgcmVsZWFzZTogaHR0cHM6Ly9yZWJpbGx5LmdpdGh1Yi5pby9SZURvYy9yZWxlYXNlcy92MS54LngvcmVkb2MubWluLmpzCi0gYGxhdGVzdGAgcmVsZWFzZTogaHR0cHM6Ly9yZWJpbGx5LmdpdGh1Yi5pby9SZURvYy9yZWxlYXNlcy9sYXRlc3QvcmVkb2MubWluLmpzIC0gcG9pbnRzIHRvIGxhdGVzdCAxLngueCByZWxlYXNlIHNpbmNlIDIueCByZWxlYXNlcyBhcmUgbm90IGhvc3RlZCBvbiB0aGlzIENETiBidXQgb24gdW5wa2cuCgoKIyMgRGV2ZWxvcG1lbnQKc2VlIFtDT05UUklCVVRJTkcubWRdKC5naXRodWIvQ09OVFJJQlVUSU5HLm1kKQo= readmeEtag: '"cb79ec89da4372119bc45d6ca47222a7458168f4"' readmeLastModified: Thu, 30 Jan 2025 12:23:07 GMT repositoryId: 45250726 description: 📘 OpenAPI/Swagger-generated API Reference Documentation created: '2015-10-30T12:53:02Z' updated: '2026-02-06T02:08:40Z' language: TypeScript archived: false stars: 25471 watchers: 295 forks: 2379 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT repoEtag: '"4138d7edf9238b8142544691e7c435f9ca1ad9293b21d75f82a76a580e7c29fa"' repoLastModified: Fri, 06 Feb 2026 02:08:40 GMT foundInMaster: true - source: https://openapi.tools/ name: RestCase Docs category: Documentation link: https://www.restcase.com/platform/docs language: SaaS source_description: >- An API-first and security-first management platform. Design visually and we will create a beautiful API documentation for your APIs. v2: true v3: true foundInMaster: true id: be441b02201591f69504f5e3c7a1e9ca - source: - https://openapi.tools/ - openapi3 tags name: Nexmo OAS Renderer category: Documentation repository: https://github.com/nexmo/nexmo-oas-renderer language: Ruby source_description: Ruby OpenAPI docs rendering, use standalone or add to your Rails app v3: true repositoryMetadata: base64Readme: >- IyBOZXhtbyBPQVMgUmVuZGVyZXIKCiFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vTmV4bW8vbmV4bW8tb2FzLXJlbmRlcmVyL3dvcmtmbG93cy9DSS9iYWRnZS5zdmcpClshW01JVCBsaWNlbnNlZF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ibHVlLnN2ZyldKC4vTElDRU5TRS50eHQpCgpTaW5hdHJhIGFwcGxpY2F0aW9uIHRoYXQgcHJvdmlkZXMgYSBwcmV2aWV3IG9mIGhvdyB0aGUgT0FTIGRvY3VtZW50cyB3aWxsIGJlIHJlbmRlcmVkIHdpdGhpbiBbTmV4bW8gRGV2ZWxvcGVyXShodHRwczovL2RldmVsb3Blci5uZXhtby5jb20vKS4KCiogW0RlcGVuZGVuY2llc10oI3JlcXVpcmVtZW50cykKKiBbSW5zdGFsbGF0aW9uIGFuZCBVc2FnZV0oI2luc3RhbGxhdGlvbi1hbmQtdXNhZ2UpCiAgICAqIFtVc2luZyBEb2NrZXJdKCN1c2luZy1kb2NrZXIpCiAgICAqIFtBcyBhIHN0YW5kYWxvbmUgYXBwbGljYXRpb25dKCNhcy1hLXN0YW5kYWxvbmUtYXBwbGljYXRpb24pCiAgICAqIFtNb3VudGVkIGludG8gYSBSYWlscyBhcHBsaWNhdGlvbl0oI21vdW50ZWQtaW50by1hLXJhaWxzLWFwcGxpY2F0aW9uKQogICAgKiBbU3BlY2lmeWluZyB0aGUgcGF0aCB0byB0aGUgZG9jdW1lbnRzXSgjc3BlY2lmeWluZy10aGUtcGF0aC10by10aGUtZG9jdW1lbnRzKQoqIFtDb250cmlidXRpbmddKCNjb250cmlidXRpbmcpCiogW0xpY2Vuc2VdKCNsaWNlbnNlKQoKIyMgRGVwZW5kZW5jaWVzCgoKIyMgSW5zdGFsbGF0aW9uIGFuZCBVc2FnZQoKIyMjIFVzaW5nIERvY2tlcgoKWW91IGNhbiBydW4gdXNpbmcgRG9ja2VyIGFuZCBpdCB3aWxsIHNlcnZlIHRoZSBjdXJyZW50IGRpcmVjdG9yeSAodGhpcyB3aWxsIHVzdWFsbHkgYmUgdGhlIGFwaS1zcGVjaWZpY2F0aW9uIHJlcG8pOgoKIyMjIyBNYWMvTGludXgKCmBgYGJhc2gKZG9ja2VyIHJ1biAtLXJtIC1wIDQ1Njc6NDU2NyAtdiBgcHdkYDovZGVmaW5pdGlvbnMgLWUgJ09BU19QQVRIPS9kZWZpbml0aW9ucycgbmV4bW9kZXYvbmV4bW8tb2FzLXJlbmRlcmVyOmxhdGVzdApgYGAKCkFsdGVybmF0aXZlbHksIGFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgYH4vLmJhc2hyY2AgZmlsZSBhbmQgeW91J2xsIGJlIGFibGUgdG8gcnVuIGBuZXhtby1vYXMtcmVuZGVyZXJgCgpgYGAKZnVuY3Rpb24gbmV4bW8tb2FzLXJlbmRlcmVyKCkgewogIGRvY2tlciBydW4gLS1ybSAtcCA0NTY3OjQ1NjcgLXYgYHB3ZGA6L2RlZmluaXRpb25zIC1lICdPQVNfUEFUSD0vZGVmaW5pdGlvbnMnIG5leG1vZGV2L25leG1vLW9hcy1yZW5kZXJlcjpsYXRlc3QKfQpgYGAKCiMjIyMgV2luZG93cwoKYGBgcHMKZG9ja2VyIHJ1biAtLXJtIC1wIDQ1Njc6NDU2NyAtdiAlQ0QlOi9kZWZpbml0aW9ucyAtZSAnT0FTX1BBVEg9L2RlZmluaXRpb25zJyBuZXhtb2Rldi9uZXhtby1vYXMtcmVuZGVyZXI6bGF0ZXN0CmBgYAoKIyMjIEFzIGEgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbgoKSW5zdGFsbCB0aGUgZ2VtOgoKYGBgIHNoZWxsCiQgZ2VtIGluc3RhbGwgbmV4bW8tb2FzLXJlbmRlcmVyCmBgYAoKQW5kIHNpbXBseSBydW4gdGhlIGV4ZWN1dGFibGUgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBlbnYgdmFyaWFibGVzIHNldCAoc2VlIFtOb3RlXSgjbm90ZSkpOgpgYGAgc2hlbGwKJCBuZXhtby1vYXMtcmVuZGVyZXIKYGBgCgpPciwgaWYgeW91IHdhbnQgdG8gbWFrZSBjb2RlIGNoYW5nZXMsIGp1c3QgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB3aGljaCB3aWxsIHN0YXJ0IHRoZSB3ZWIgc2VydmVyIG9uIGh0dHA6Ly9sb2NhbGhvc3Q6OTM5MzoKYGBgIHNoZWxsCk9BU19QQVRIPS4uLiBidW5kbGUgZXhlYyBzaG90Z3VuIGxpYi9uZXhtby9vYXMvcmVuZGVyZXIvY29uZmlnLnJ1CmBgYAoKIyMjIE1vdW50ZWQgaW50byBhIFJhaWxzIEFwcGxpY2F0aW9uCgpBZGQgdGhpcyB0byB5b3VyIGFwcGxpY2F0aW9uJ3MgYEdlbWZpbGVgOgoKYGBgCmdlbSAnbmV4bW8tb2FzLXJlbmRlcmVyJywgcmVxdWlyZTogZmFsc2UKYGBgCgpBbmQgdGhlbiBydW4gYGJ1bmRsZSBpbnN0YWxsYC4KClJlcXVpcmUgdGhlIGdlbSBpbiBgY29uZmlnL2Vudmlyb25tZW50LnJiYCBhcyBmb2xsb3dzOgoKYGBgIHJ1YnkKIyBMb2FkIHRoZSBSYWlscyBhcHBsaWNhdGlvbi4KcmVxdWlyZV9yZWxhdGl2ZSAnYXBwbGljYXRpb24nCgpyZXF1aXJlICduZXhtby9vYXMvcmVuZGVyZXInCgojIEluaXRpYWxpemUgdGhlIFJhaWxzIGFwcGxpY2F0aW9uLgpSYWlscy5hcHBsaWNhdGlvbi5pbml0aWFsaXplIQpgYGAKCkFuZCBmaW5hbGx5IG1vdW50IHRoZSBTaW5hdHJhIGFwcCBpbnRvIHlvdXIgUmFpbHMgYXBwbGljYXRpb24gYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgbGluZSB0byBgY29uZmlnL3JvdXRlcy5yYmA6CgpgYGAgcnVieQptb3VudCBOZXhtbzo6T0FTOjpSZW5kZXJlcjo6QVBJLCBhdDogJy9hcGknCmBgYAoKIyMjIFNwZWNpZnlpbmcgdGhlIHBhdGggdG8gdGhlIGRvY3VtZW50cwoKVGhpcyBnZW0gdXNlcyBbZG90ZW52XShodHRwczovL2dpdGh1Yi5jb20vYmtlZXBlcnMvZG90ZW52KSB0byBoYW5kbGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBzbyB5b3Ugc2hvdWxkIGNvcHkgdGhlIGAuZW52LmV4YW1wbGVgIHByb3ZpZGVkIGJ5IHJ1bm5pbmc6CmBgYCBzaGVsbAokIGNwIC5lbnYuZXhhbXBsZSAuZW52CmBgYAphbmQgYXNzaWduIHZhbHVlcyB0byB0aGUgY29ycmVzcG9uZGluZyB2YXJpYWJsZXMuCgojIyMjIE5vdGUKVGhlIGVudiB2YXJpYWJsZSBgT0FTX1BBVEhgIGluZGljYXRlcyB0aGUgcGF0aCB0byB0aGUgZG9jdW1lbnRzIHRoYXQgd2lsbCBiZSByZW5kZXJlZC4KCiMjIENvbnRyaWJ1dGluZwpXZSDinaTvuI8gY29udHJpYnV0aW9ucyBmcm9tIGV2ZXJ5b25lISBbQnVnIHJlcG9ydHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9OZXhtby9uZXhtby1vYXMtcmVuZGVyZXIvaXNzdWVzKSwgW2J1ZyBmaXhlc10oaHR0cHM6Ly9naXRodWIuY29tL05leG1vL25leG1vLW9hcy1yZW5kZXJlci9wdWxscykgYW5kIGZlZWRiYWNrIG9uIHRoZSBsaWJyYXJ5IGlzIGFsd2F5cyBhcHByZWNpYXRlZC4gTG9vayBhdCB0aGUgW0NvbnRyaWJ1dG9yIEd1aWRlbGluZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9OZXhtby9uZXhtby1vYXMtcmVuZGVyZXIvYmxvYi9tYXN0ZXIvQ09OVFJJQlVUSU5HLm1kKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgcGxlYXNlIGZvbGxvdyB0aGUgW0dpdEh1YiBGbG93XShodHRwczovL2d1aWRlcy5naXRodWIuY29tL2ludHJvZHVjdGlvbi9mbG93L2luZGV4Lmh0bWwpLgoKIyMgTGljZW5zZQpUaGlzIHByb2plY3QgaXMgdW5kZXIgdGhlIFtNSVQgTElDRU5TRV0oaHR0cHM6Ly9naXRodWIuY29tL05leG1vL25leG1vLW9hcy1yZW5kZXJlci9ibG9iL21hc3Rlci9MSUNFTlNFKS4K readmeEtag: '"9c04021414112fbdbbd64229ac548ca2d11c9bcb"' readmeLastModified: Wed, 14 Jul 2021 07:45:54 GMT repositoryId: 186776115 description: Render your API references, Nexmo-style! created: '2019-05-15T07:47:32Z' updated: '2025-05-19T18:02:33Z' language: HTML archived: false stars: 45 watchers: 11 forks: 4 owner: Nexmo logo: https://avatars.githubusercontent.com/u/551057?v=4 license: MIT repoEtag: '"1e7a6ec5108b7cca709eeed10fef6210799f01ae75ecf4768581f8291b12530f"' repoLastModified: Mon, 19 May 2025 18:02:33 GMT foundInMaster: true id: 576fdcf39b6a579d65c2e4f63ead9ff4 - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags repository: https://github.com/rookie-luochao/openapi-ui v3: true id: cca834879fa03e42847529ee34ced019 repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPgogIE9wZW5BUEkgVUkKPC9oMT4KPHAgYWxpZ249ImNlbnRlciI+Ck9wZW5BUEkvU3dhZ2dlciBVSSBkb2N1bWVudCwgcXVpY2tseSBnZW5lcmF0ZSBtb2NrIHBhcmFtcyBhbmQgY2FsbCBhcGksIGFsc28gc2ltcGxpZmllZCBwb3N0bWFuIHRvb2wKPC9wPgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcm9va2llLWx1b2NoYW8vb3BlbmFwaS11aS9ibG9iL21hc3Rlci9MSUNFTlNFIj4KICAgIDxpbWcgYWx0PSJMaWNlbnNlIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2Uvcm9va2llLWx1b2NoYW8vb3BlbmFwaS11aSI+CiAgPC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yb29raWUtbHVvY2hhby9vcGVuYXBpLXVpL3JlbGVhc2VzIj4KICAgIDxpbWcgYWx0PSJSZWxlYXNlIChsYXRlc3QgYnkgZGF0ZSkiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvdi9yZWxlYXNlL3Jvb2tpZS1sdW9jaGFvL29wZW5hcGktdWkiPgogIDwvYT4KICA8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vcGVuYXBpLXVpLWRpc3QiPgogICAgPGltZyBhbHQ9Im5wbSBvcGVuYXBpLXVpIHBhY2thZ2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9vcGVuYXBpLXVpLWRpc3Quc3ZnIj4KICA8L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Jvb2tpZS1sdW9jaGFvL29wZW5hcGktdWkvYWN0aW9ucy93b3JrZmxvd3MvcmVsZWFzZS1jaS55bWwiPgogICAgPGltZyBhbHQ9ImJ1aWxkIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL3Jvb2tpZS1sdW9jaGFvL29wZW5hcGktdWkvcmVsZWFzZS1jaS55bWwiPgogIDwvYT4KICA8YSBocmVmPSJodHRwczovL3JlYWN0LmRldiI+CiAgICA8aW1nIGFsdD0iZnJhbWV3b3JrIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZnJhbWV3b3JrLXJlYWN0LWJyaWdodGdyZWVuIj4KICA8L2E+CjwvcD4KPGg0IGFsaWduPSJjZW50ZXIiPgogIDxwPgogICAgPGI+RW5nbGlzaDwvYj4gfAogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Jvb2tpZS1sdW9jaGFvL29wZW5hcGktdWkvYmxvYi9tYXN0ZXIvUkVBRE1FLXpoX0NOLm1kIj7nroDkvZPkuK3mloc8L2E+IAogIDwvcD4KPC9oND4KCiMjIFNjcmVlbiBTaG90CjxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleCI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Jvb2tpZS1sdW9jaGFvL29wZW5hcGktdWkvYmxvYi9tYXN0ZXIvc3JjL2Fzc2V0cy9zY3JlZW4tc2hvdC9vcGVuYXBpLXZpZXcucG5nIiBzdHlsZT0id2lkdGg6NTAlIj4KICAgIDxpbWcgYWx0PSJvcGVuYXBpIiBzcmM9Ii4vc3JjL2Fzc2V0cy9zY3JlZW4tc2hvdC9vcGVuYXBpLXZpZXcucG5nIj4KICA8L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Jvb2tpZS1sdW9jaGFvL29wZW5hcGktdWkvYmxvYi9tYXN0ZXIvc3JjL2Fzc2V0cy9zY3JlZW4tc2hvdC9vcGVuYXBpLXZpZXcyLnBuZyIgc3R5bGU9IndpZHRoOjUwJSI+CiAgICA8aW1nIGFsdD0ib3BlbmFwaSIgc3JjPSIuL3NyYy9hc3NldHMvc2NyZWVuLXNob3Qvb3BlbmFwaS12aWV3Mi5wbmciPgogIDwvYT4KPC9kaXY+CjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yb29raWUtbHVvY2hhby9vcGVuYXBpLXVpL2Jsb2IvbWFzdGVyL3NyYy9hc3NldHMvc2NyZWVuLXNob3QvcG9zdG1hbi12aWV3LnBuZyI+CiAgPGltZyBhbHQ9InBvc3RtYW4iIHNyYz0iLi9zcmMvYXNzZXRzL3NjcmVlbi1zaG90L3Bvc3RtYW4tdmlldy5wbmciPgo8L2E+CgojIyBXZWJzaXRlIGRvbWFpbgoqIENOOiBbd3d3Lm9wZW5hcGktdWkuY29tXShodHRwczovL3d3dy5vcGVuYXBpLXVpLmNvbSksIHN1cHBvcnQgaHR0cCxodHRwcwoqIFVTOiBbZG9jLm9wZW5hcGktdWkuY29tXShodHRwczovL2RvYy5vcGVuYXBpLXVpLmNvbSkKKiBVUzI6IFtkb2NzLm9wZW5hcGktdWkuY29tXShodHRwczovL2RvY3Mub3BlbmFwaS11aS5jb20pCgojIyBVc2FnZQojIyMgV2l0aCBDRE4KYHNwZWMtdXJsYCBpcyBgZnVsbCBwYXRoYAoKYGBgdHN4CjwhZG9jdHlwZSBodG1sPgo8aHRtbCBsYW5nPSJlbiI+CiAgPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCIgLz4KICAgIDx0aXRsZT5vcGVuQVBJIFVJPC90aXRsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICA8ZGl2IGlkPSJvcGVuYXBpLXVpLWNvbnRhaW5lciIgc3BlYy11cmw9Imh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzL29wZW5hcGkuanNvbiIgdGhlbWU9ImxpZ2h0Ij48L2Rpdj4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL29wZW5hcGktdWktZGlzdEBsYXRlc3QvbGliL29wZW5hcGktdWkudW1kLmpzIj48L3NjcmlwdD4KICA8L2JvZHk+CjwvaHRtbD4KYGBgCgpgc3BlYy11cmxgIGlzIGBwYXRoYAoKYGBgdHN4CjwhZG9jdHlwZSBodG1sPgo8aHRtbCBsYW5nPSJlbiI+CiAgPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCIgLz4KICAgIDx0aXRsZT5vcGVuQVBJIFVJPC90aXRsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICA8ZGl2IGlkPSJvcGVuYXBpLXVpLWNvbnRhaW5lciIgc3BlYy11cmw9Ii9vcGVuYXBpLmpzb24iIHRoZW1lPSJkYXJrIj48L2Rpdj4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL29wZW5hcGktdWktZGlzdEBsYXRlc3QvbGliL29wZW5hcGktdWkudW1kLmpzIj48L3NjcmlwdD4KICA8L2JvZHk+CjwvaHRtbD4KYGBgCgojIyMgV2l0aCBSZWFjdChvciBXaXRoIFZ1ZSkKYGBgdHN4CmltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gInJlYWN0IjsKCmNvbnN0IFNldFVwT3BlbkFwaVVJID0gKCkgPT4gewogIHVzZUVmZmVjdCgoKSA9PiB7CiAgICBpbXBvcnQoIm9wZW5hcGktdWktZGlzdCIpCiAgfSwgW10pOwoKICByZXR1cm4gKAogICAgPGRpdiBpZD0ib3BlbmFwaS11aS1jb250YWluZXIiIHNwZWMtdXJsPSJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92My9vcGVuYXBpLmpzb24iIHRoZW1lPSJsaWdodCIgLz4KICApOwp9CgpleHBvcnQgY29uc3Qgb3BlbmFwaVJvdXRlcyA9IHsKICBwYXRoOiAiL29wZW5hcGkiLAogIGlkOiAib3BlbmFwaSIsCiAgZWxlbWVudDogPFNldFVwT3BlbkFwaVVJIC8+LAp9OwpgYGAKIyMjIFdpdGggR28gV2ViIEZyYW1ld29yawotIFtnby1vcGVuYXBpLXVpXShodHRwczovL2dpdGh1Yi5jb20vcm9va2llLWx1b2NoYW8vZ28tb3BlbmFwaS11aSkKCiMjIyBXaXRoIE5vZGVqcyBXZWIgRnJhbWV3b3JrCi0gW25vZGVqcy1vcGVuYXBpLXVpXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS11aS9ub2RlanMtb3BlbmFwaS11aSkKCiMjIFF1aWNrIHN0YXJ0CmBgYGJhc2gKIyBub2RlIHZlcnNpb24gPj0gMTgKIyBkb3dubG9hZCBub2RlX21vZHVsZXMKcG5wbSBpbnN0YWxsCiMgb3IgbWFrZSBpbnN0YWxsCgojIHN0YXJ0Cm5wbSBydW4gZGV2CiMgb3IgbWFrZSBkZXYKYGBgCgojIyBTb21lIHNjcmlwdApgYGBiYXNoCiMgYnVpbGQKbnBtIHJ1biBidWlsZAojIG9yIG1ha2UgYnVpbGQKCiMgbWFrZSBkb2NrZXIgaW1hZ2UKbWFrZSBkb2NrZXItYnVpbGQKCiMgcnVuIGRvY2tlciBpbWFnZQptYWtlIGRvY2tlci1ydW4KCiMgbWFrZSBkb2NrZXIgaW1hZ2UgYW5kIHJ1biBkb2NrZXIgaW1hZ2UKbWFrZSBkb2NrZXItYnVpbGQtcnVuCmBgYAoKIyMgU3VwcG9ydCBkYXRhIGZvcm1hdAoqIHN3YWdnZXIyLmpzb24vc3dhZ2dlcjIueW1sCiogb3BlbmFwaTMuanNvbi9vcGVuYXBpMy55bWwKCiMjIEhvdyB0byB1c2UKKiBlbnRlciBzd2FnZ2VyMi9vcGVuYXBpMyBhcGkgZ2F0ZXdheSBVUkwsIHJlZnJlc2ggdGhlIHBhZ2UgdG8gdXBkYXRlIHRoZSBpbnRlcmZhY2UKKiB1cGxvYWQgc3dhZ2dlcjIvb3BlbmFwaTMgZmlsZQoqIGVudGVyIHN3YWdnZXIyL29wZW5hcGkzIHRleHQKCiMjIEdsb2JhbCBjb25maWcKKiBzdXBwb3J0cyBjb25maWd1cmUgcmVxdWVzdCB0aW1lb3V0LCB0aGUgZGVmYXVsdCByZXF1ZXN0IHRpbWVvdXQgaXMgMiBtaW51dGVzCiogc3VwcG9ydHMgY29uZmlndXJlIHJlcXVlc3QgQXV0aG9yaXphdGlvbiwgQXV0aG9yaXphdGlvbiBjYW4gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgY3VycmVudCByZXF1ZXN0CgojIyBTaGFyZSBVUkwKKiB1cmwgY2FuIG9ubHkgYmUgc2hhcmVkIHdoZW4gaW1wb3J0ZWQgdGhyb3VnaCB1cmwgbW9kZQoqIGNvcHkgdGhlIHVybCBhbmQgc2hhcmUgaXQgd2l0aCB0aG9zZSB3aG8gbmVlZCBpdCwgdGhleSBjYW4gZWNobyB0aGUgdXJsIHRvIHRoZSBzcGVjaWZpZWQgaW50ZXJmYWNlCgojIyBNb2NrIHJlcXVlc3QgcGFyYW1zCjEuIGlmIHRoZSBzY2hlbWEgY29udGFpbnMgdGhlIGZvcm1hdCBmaWVsZCwgdGhlbiB1c2UgW29wZW5hcGktc2FtcGxlcl0oaHR0cHM6Ly9naXRodWIuY29tL1JlZG9jbHkvb3BlbmFwaS1zYW1wbGVyKSB0byBtb2NrIHJlcXVlc3QgcGFyYW1zCjIuIGlmIHRoZSBzY2hlbWEgZG9lcyBub3QgY29udGFpbiB0aGUgZm9ybWF0IGZpZWxkLCB0aGVuIHVzZSBmYWtlciB0byBtb2NrIHJlcXVlc3QgcGFyYW1zCgojIyBSZXF1ZXN0IGVycm9yIG1lc3NhZ2UgZGlzcGxheSBydWxlcwoxLiBpZiB0aGUgcmV0dXJuZWQgc3RydWN0dXJlIGNvbnRhaW5zIGEgbWVzc2FnZSBmaWVsZCwgZGlzcGxheSB0aGUgbWVzc2FnZSBmaWVsZAoyLiBpZiB0aGUgcmV0dXJuZWQgc3RydWN0dXJlIGNvbnRhaW5zIGEgbXNnIGZpZWxkLCBkaXNwbGF5IHRoZSBtc2cgZmllbGQKMy4gaWYgdGhlIHJldHVybmVkIHJlc3VsdCBpcyBhIHN0cmluZywgZGlzcGxheSB0aGUgc3RyaW5nCjQuIGRpc3BsYXkgQXhpb3NSZXNwb25zZS5zdGF0dXNUZXh0IGZpZWxkCjUuIGRpc3BsYXkgQXhpb3NFcnJvci5tZXNzYWdlIGZpZWxkCgojIyBDb25uZWN0IGludHJhbmV0IGFwaQoqIGlmIHVuYWJsZSB0byBjb25uZWN0IGludHJhbmV0IGFwaSwgeW91IGNhbiBydW4gdGhpcyBwcm9qZWN0IGxvY2FsbHkgb3IgdXNlIGRvY2tlciB0byBkZXBsb3kgdGhpcyBwcm9qZWN0IGxvY2FsbHkgb3Igb24gdGhlIHNlcnZlcgoKIyMgU3VwcG9ydCBtdWx0aXBsZSBhcGkgZ2F0ZXdheSBVUkwKKiB0aGUgY2FjaGluZyBzdHJhdGVneSB1c2VkIGlzIHNlc3Npb24gc3RvcmFnZSwgc28geW91IGNhbiBvcGVuIG11bHRpcGxlIHBhZ2VzIGF0IHRoZSBzYW1lIHRpbWUKCiMjIERvY2tlciBkZXBsb3ksIHN1cHBvcnQgZW52IHZhcmlhYmxlIGluamVjdGlvbgpgYGBiYXNoCiMgcHVsbCBEb2NrZXIgaW1hZ2UKZG9ja2VyIHB1bGwgZ2hjci5pby9yb29raWUtbHVvY2hhby9vcGVuYXBpLXVpOmxhdGVzdAoKIyBzdGFydCBjb250YWluZXIsIG5naW54IHJldmVyc2UgcHJveHkgY3VzdG9tIHBvcnQsIGZvciBleGFtcGxlOiBkb2NrZXIgcnVuIC1kIC1wIDgwODE6ODAgZ2hjci5pby9yb29raWUtbHVvY2hhby9vcGVuYXBpLXVpOmxhdGVzdApkb2NrZXIgcnVuIC1kIC1wIDgwOjgwIC1lIEFQUF9DT05GSUc9ZW52PXpoLGFwcE5hbWVaSD3nroDmtIHnvo7op4LnmoTmjqXlj6PmlofmoaMgZ2hjci5pby9yb29raWUtbHVvY2hhby9vcGVuYXBpLXVpOmxhdGVzdApgYGAKCiMjIE5vZGUgdmVyc2lvbgpub2RlID49IDE4 readmeEtag: '"f53d2a377848fff538ed4462a1777f0847b07655"' readmeLastModified: Mon, 12 Aug 2024 15:46:26 GMT repositoryId: 733969338 description: >- OpenAPI/Swagger UI document, quickly generate mock params and call api, also simplified postman tool. 基于 OpenAPI/Swagger 规范的接口文档,快速模拟请求参数并调用接口,也是简化版 postman 工具,欢迎提功能请求、bug created: '2023-12-20T14:51:12Z' updated: '2026-02-04T09:58:19Z' language: TypeScript archived: false stars: 687 watchers: 4 forks: 62 owner: rookie-luochao logo: https://avatars.githubusercontent.com/u/22948077?v=4 license: MIT repoEtag: '"0d26b0f20a8398b2d377cbb4c27d54eb1dd87c8c3e642579afc69c02f35ca687"' repoLastModified: Wed, 04 Feb 2026 09:58:19 GMT category: - Documentation - Server Implementations foundInMaster: true v3_1: true name: OpenAPI-UI source_description: >- Create simple and beautiful OpenAPI/Swagger documentation from OpenAPI files. Generate mock parameters and call APIs. Like Postman, but for OpenAPI specifications. link: https://docs.openapi-ui.com language: TypeScript v2: true - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/oasdiff/oasdiff v3: true repositoryMetadata: base64Readme: >- ClshW0NJXShodHRwczovL2dpdGh1Yi5jb20vb2FzZGlmZi9vYXNkaWZmL3dvcmtmbG93cy9nby9iYWRnZS5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL2dpdGh1Yi5jb20vb2FzZGlmZi9vYXNkaWZmL2FjdGlvbnMpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9vYXNkaWZmL29hc2RpZmYvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPVk4Qk02WDc3SlkpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvb2FzZGlmZi9vYXNkaWZmKQpbIVtHbyBSZXBvcnQgQ2FyZF0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vb2FzZGlmZi9vYXNkaWZmKV0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL29hc2RpZmYvb2FzZGlmZikKWyFbR29Eb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vb2FzZGlmZi9vYXNkaWZmP3N0YXR1cy5zdmcpXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL29hc2RpZmYvb2FzZGlmZikKWyFbRG9ja2VyIEltYWdlIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3YvdHVmaW4vb2FzZGlmZj9zb3J0PXNlbXZlcildKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci90dWZpbi9vYXNkaWZmL3RhZ3MpClshW1NsYWNrXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3NsYWNrLSYjNjQ7b2FzZGlmZi1ncmVlbi5zdmc/bG9nbz1zbGFjayldKGh0dHBzOi8vam9pbi5zbGFjay5jb20vdC9vYXNkaWZmL3NoYXJlZF9pbnZpdGUvenQtMXd2bzd3b2lzLXR0bmNOQm15anlSWHFCenlnflA2b0EpCgohW29hc2RpZmYgYmFubmVyXShodHRwczovL2dpdGh1Yi5jb20veW9uYXRhbm1nci9vYXNkaWZmL2Fzc2V0cy8zMTkxMzQ5NS9hYzliMTU0ZS03MmQxLTQ5NjktYmMzYi1mNTI3YmJlNzc1MWQpCgoKQ29tbWFuZC1saW5lIGFuZCBHbyBwYWNrYWdlIHRvIGNvbXBhcmUgYW5kIGRldGVjdCBicmVha2luZyBjaGFuZ2VzIGluIE9wZW5BUEkgc3BlY3MuCgojIyBJbnN0YWxsYXRpb24KCiMjIyBJbnN0YWxsIHdpdGggR28KYGBgYmFzaApnbyBpbnN0YWxsIGdpdGh1Yi5jb20vb2FzZGlmZi9vYXNkaWZmQGxhdGVzdApgYGAKCiMjIyBJbnN0YWxsIG9uIG1hY09TIHdpdGggQnJldwpgYGBiYXNoCmJyZXcgaW5zdGFsbCBvYXNkaWZmCmBgYAoKIyMjIEluc3RhbGwgb24gbWFjT1MgYW5kIExpbnV4IHVzaW5nIGN1cmwKCmBgYGJhc2gKY3VybCAtZnNTTCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb2FzZGlmZi9vYXNkaWZmL21haW4vaW5zdGFsbC5zaCB8IHNoCmBgYAoKIyMjIEluc3RhbGwgd2l0aCBhc2RmCgpodHRwczovL2dpdGh1Yi5jb20vb2FzZGlmZi9hc2RmLW9hc2RpZmYKCiMjIyBNYW51YWxseSBpbnN0YWxsIG9uIG1hY09TLCBXaW5kb3dzIGFuZCBMaW51eApDb3B5IGJpbmFyaWVzIGZyb20gW2xhdGVzdCByZWxlYXNlXShodHRwczovL2dpdGh1Yi5jb20vb2FzZGlmZi9vYXNkaWZmL3JlbGVhc2VzLykuICAKCiMjIyBVc2UgaW5zdGFsbC5zaApZb3UgY2FuIHVzZSB0aGUgW2luc3RhbGwuc2hdKC4uL2luc3RhbGwuc2gpIHNjcmlwdCB0byBpbnN0YWxsIG9hc2RpZmYuICAKVGhlIHNjcmlwdCB3aWxsIGRvd25sb2FkIHRoZSBsYXRlc3QgdmVyc2lvbiwgb3IgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIG9hc2RpZmYgYW5kIGluc3RhbGwgaXQgaW4gL3Vzci9sb2NhbC9iaW4uICAKCiMjIFRyeSBpdAoKIyMjIExvY2FsbHkKYGBgCm9hc2RpZmYgY2hhbmdlbG9nIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vYXNkaWZmL29hc2RpZmYvbWFpbi9kYXRhL29wZW5hcGktdGVzdDEueWFtbCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb2FzZGlmZi9vYXNkaWZmL21haW4vZGF0YS9vcGVuYXBpLXRlc3Q1LnlhbWwKYGBgCgojIyMgV2l0aCBEb2NrZXIKYGBgCmRvY2tlciBydW4gLS1ybSAtdCB0dWZpbi9vYXNkaWZmIGNoYW5nZWxvZyBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb2FzZGlmZi9vYXNkaWZmL21haW4vZGF0YS9vcGVuYXBpLXRlc3QxLnlhbWwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29hc2RpZmYvb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0NS55YW1sCmBgYAoKIyMgRmVhdHVyZXMgCi0gRGV0ZWN0IFticmVha2luZyBjaGFuZ2VzXShCUkVBS0lORy1DSEFOR0VTLm1kKQotIERpc3BsYXkgYSB1c2VyLWZyaWVuZGx5IFtjaGFuZ2Vsb2ddKEJSRUFLSU5HLUNIQU5HRVMubWQpIG9mIGFsbCBpbXBvcnRhbnQgQVBJIGNoYW5nZXMKLSBHZW5lcmF0ZSBjb21wcmVoZW5zaXZlIFtkaWZmXShESUZGLm1kKSByZXBvcnRzIGluY2x1ZGluZyBhbGwgYXNwZWN0cyBvZiBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pOiBwYXRocywgb3BlcmF0aW9ucywgcGFyYW1ldGVycywgcmVxdWVzdCBib2RpZXMsIHJlc3BvbnNlcywgc2NoZW1hcywgZW51bXMsIGNhbGxiYWNrcywgc2VjdXJpdHkgZXRjLgotIE91dHB1dCByZXBvcnRzIGluIFlBTUwsIEpTT04sIFRleHQsIE1hcmtkb3duLCBIVE1MLCBKVW5pdCBYTUwgb3IgdGhlIFtnaXRodWIgYWN0aW9ucyBhbm5vdGF0aW9uIGZvcm1hdF0oaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy91c2luZy13b3JrZmxvd3Mvd29ya2Zsb3ctY29tbWFuZHMtZm9yLWdpdGh1Yi1hY3Rpb25zI3NldHRpbmctYS13YXJuaW5nLW1lc3NhZ2UpCi0gW0N1c3RvbWl6ZSBIVE1MIGFuZCBNYXJrZG93biBjaGFuZ2Vsb2cgcmVwb3J0c10oVVNBR0VfRVhBTVBMRVMubWQjb3BlbmFwaS1jaGFuZ2Vsb2ctd2l0aC1jdXN0b20tdGVtcGxhdGUpCi0gQ29tcGFyZSBsb2NhbCBzcGVjcyBvciByZW1vdGUgc3BlY3Mgb3ZlciBodHRwL3MKLSBDb21wYXJlIHNwZWNzIGluIFlBTUwgb3IgSlNPTiBmb3JtYXQKLSBbQ29tcGFyZSB0d28gY29sbGVjdGlvbnMgb2Ygc3BlY3NdKENPTVBPU0VELm1kKQotIFtEZXByZWNhdGUgQVBJcyBhbmQgUGFyYW1ldGVyc10oREVQUkVDQVRJT04ubWQpCi0gW0FQSSBzdGFiaWxpdHkgbGV2ZWxzXShTVEFCSUxJVFkubWQpCi0gW011bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBzYW1lIGVuZHBvaW50XShNQVRDSElORy1FTkRQT0lOVFMubWQjZHVwbGljYXRlLWVuZHBvaW50cykKLSBbTWVyZ2UgYWxsT2Ygc2NoZW1hc10oQUxMT0YubWQpCi0gW01lcmdlIGNvbW1vbiAocGF0aC1sZXZlbCkgcGFyYW1ldGVyc10oQ09NTU9OLVBBUkFNUy5tZCkKLSBbQ2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgY29tcGFyaXNvbl0oSEVBREVSLURJRkYubWQpCi0gW1BhdGggcHJlZml4IG1vZGlmaWNhdGlvbl0oUEFUSC1QUkVGSVgubWQpCi0gW1BhdGggcGFyYW1ldGVyIHJlbmFtaW5nXShQQVRILVBBUkFNLVJFTkFNRS5tZCkKLSBbRXhjbHVkZSBjZXJ0YWluIGtpbmRzIG9mIGNoYW5nZXNdKERJRkYubWQjZXhjbHVkaW5nLXNwZWNpZmljLWtpbmRzLW9mLWNoYW5nZXMpCi0gW0V4Y2x1ZGUgc3BlY2lmaWMgZXh0ZW5zaW9uIG5hbWVzXShESUZGLm1kI2V4Y2x1ZGluZy1zcGVjaWZpYy1leHRlbnNpb24tbmFtZXMpCi0gW1RyYWNrIGNoYW5nZXMgdG8gT3BlbkFQSSBFeHRlbnNpb25zXShESUZGLm1kI29wZW5hcGktZXh0ZW5zaW9ucykKLSBbRmlsdGVyIGVuZHBvaW50c10oRklMVEVSSU5HLUVORFBPSU5UUy5tZCkKLSBbRXh0ZW5kIGJyZWFraW5nIGNoYW5nZXMgd2l0aCBjdXN0b20gY2hlY2tzXShDVVNUT01JWklORy1DSEVDS1MubWQpCi0gTG9jYWxpemF0aW9uOiB2aWV3IGJyZWFraW5nIGNoYW5nZXMgYW5kIGNoYW5nZWxvZyBtZXNzYWdlcyBpbiBsb2NhbCBsYW5ndWFnZXM6IGVuLCBydSwgcHQtYnIsIGVzCi0gW1J1biB3aXRoIGNvbmZpZ3VyYXRpb24gZmlsZV0oQ09ORklHLUZJTEVTLm1kKQotIFtSdW4gZnJvbSBEb2NrZXJdKERPQ0tFUi5tZCkKLSBbSW50ZWdyYXRlIGluIEdpdEh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL29hc2RpZmYvZ2l0aHViLWRlbW8vdHJlZS9tYWluKQotIFtHaXRIdWIgQWN0aW9uXShodHRwczovL2dpdGh1Yi5jb20vb2FzZGlmZi9vYXNkaWZmLWFjdGlvbikKLSBbUnVuIGFzIGEgU2VydmljZV0oT0FTRElGRi1TRVJWSUNFLm1kKQotIFtPcGVuQVBJIFN5bmM6IEdldCBub3RpZmllZCB3aGVuIGFuIEFQSSBwcm92aWRlciBicmVha3MgdGhlIEFQSV0oaHR0cHM6Ly9naXRodWIuY29tL29hc2RpZmYvc3luYy8pCi0gW0VtYmVkIGluIHlvdXIgZ28gcHJvZ3JhbV0oR08ubWQpCgojIyBEZW1vCjxpbWcgc3JjPSIuL2RlbW8uc3ZnIj4KCiMjIFRoZSBtYWluIGNvbW1hbmRzCi0gW2RpZmZdKERJRkYubWQpOiB0aGUgZGlmZiBiZXR3ZWVuIE9wZW5BUEkgc3BlY3MsIGZ1bGx5IGRldGFpbGVkCi0gW2JyZWFraW5nXShCUkVBS0lORy1DSEFOR0VTLm1kKTogYnJlYWtpbmcgY2hhbmdlcyBiZXR3ZWVuIE9wZW5BUEkgc3BlY3MgIAotIFtjaGFuZ2Vsb2ddKEJSRUFLSU5HLUNIQU5HRVMubWQpOiBpbXBvcnRhbnQgY2hhbmdlcyBiZXR3ZWVuIE9wZW5BUEkgc3BlY3MgaW5jbHVkaW5nIGJyZWFraW5nIGFuZCBub24tYnJlYWtpbmcgY2hhbmdlcwotIFtmbGF0dGVuXShBTExPRi5tZCk6IHJlcGxhY2UgYWxsIGluc3RhbmNlcyBvZiBhbGxPZiBieSBhIG1lcmdlZCBlcXVpdmFsZW50Ci0gY2hlY2tzOiBkaXNwbGF5cyB0aGUgZGlmZmVyZW50IGNoZWNrcyB0aGF0IG9hc2RpZmYgcnVucyB0byBkZXRlY3QgY2hhbmdlcwoKIyMgUm9hZG1hcAotICoqT3BlbkFQSSAzLjEqKiAgCiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9vYXNkaWZmL29hc2RpZmYvaXNzdWVzLzUyICAKLSAqKklubGluZSB2aXN1YWxpemF0aW9uIG9mIGJyZWFraW5nIGNoYW5nZXMgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQqKiAgCiAgSSBhbSB3b3JraW5nIG9uIHRoZSBhYmlsaXR5IHRvIGNvcnJlbGF0ZSBicmVha2luZyBjaGFuZ2VzIGFuZCBjaGFuZ2Vsb2cgbWVzc2FnZXMgd2l0aCB0aGUgdW5kZXJseWluZyBlZGl0cyBpbiB0aGUgb3JpZ2luYWwgWUFNTCBzcGVjaWZpY2F0aW9uLiAgCiAgVGhpcyB3aWxsIGFsbG93IHVzZXJzIHRvIHJldmlldyBjaGFuZ2VzIGluIHRoZWlyIG9yaWdpbmFsIGNvbnRleHQsIGludmVzdGlnYXRlIHRoZWlyIGltcGFjdCwgYW5kIGRlY2lkZSBob3cgdG8gaGFuZGxlIHRoZW0uICAKICBJIGFtIGNvbnNpZGVyaW5nIG9mZmVyaW5nIHRoaXMgY2FwYWJpbGl0eSB1bmRlciBhIHNlcGFyYXRlIGxpY2Vuc2UgYW5kIHdvdWxkIGFwcHJlY2lhdGUgZmVlZGJhY2sgZnJvbSB0aGUgY29tbXVuaXR5LgogIArwn5GJIFtQbGVhc2UgaGVscCBwcmlvcml0aXplIHRoZSByb2FkbWFwXShodHRwczovL2dpdGh1Yi5jb20vb2FzZGlmZi9vYXNkaWZmL2Rpc2N1c3Npb25zLzYzMSkuCgojIyBDcmVkaXRzClRoaXMgcHJvamVjdCByZWxpZXMgb24gdGhlIGV4Y2VsbGVudCBpbXBsZW1lbnRhdGlvbiBvZiBPcGVuQVBJIDMuMCBmb3IgR286IFtraW4tb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaSkuCgojIyBGZWVkYmFjawpXZSB3ZWxjb21lIHlvdXIgZmVlZGJhY2suICAKSWYgeW91IGhhdmUgaWRlYXMgZm9yIGltcHJvdmVtZW50IG9yIGFkZGl0aW9uYWwgbmVlZHMgYXJvdW5kIEFQSXMsIHBsZWFzZSBbbGV0IHVzIGtub3ddKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXNkaWZmL29hc2RpZmYvZGlzY3Vzc2lvbnMvbmV3P2NhdGVnb3J5PWlkZWFzKS4K readmeEtag: '"57b84c593d2a4748b6989110b18f327c1c0781cc"' readmeLastModified: Thu, 05 Feb 2026 16:25:22 GMT repositoryId: 337689065 description: OpenAPI Diff and Breaking Changes created: '2021-02-10T10:28:36Z' updated: '2026-02-06T04:02:00Z' language: Go archived: false stars: 1068 watchers: 10 forks: 88 owner: oasdiff logo: https://avatars.githubusercontent.com/u/128153573?v=4 license: Apache-2.0 repoEtag: '"c5c8cd21fa8d7efa71cc866b2cf9bef088476c629561196238b6991fe8d814b3"' repoLastModified: Fri, 06 Feb 2026 04:02:00 GMT foundInMaster: true name: oasdiff language: Go source_description: >- Golang module for deep comparison of two OpenAPI specifications. Available also as a command-line. v2: false v3_1: false homepage: https://github.com/tufin/oasdiff id: 9b752ecd94615c375d0324ddf547c930 category: Parsers oldLocations: - https://github.com/tufin/oasdiff - source: - https://openapi.tools/ - openapi3 tags name: - optic diff - optic category: - Learning - Testing language: - Node - cli link: - https://www.useoptic.com/docs/diff-openapi - https://useoptic.com repository: https://github.com/opticdev/optic source_description: - >- Diff the effective API contract between any two versions of your OpenAPI description. Exit 1 on breaking changes. - >- Build your first OpenAPI description from traffic. Use Optic to patch the OpenAPI every time it detects new API behavior. v2: false v3: true repositoryMetadata: base64Readme: >- IAohW0dpdEh1YiBSZXBvIHN0YXJzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9zdGFycy9vcHRpY2Rldi9vcHRpYz9zdHlsZT1zb2NpYWwpICFbR2l0SHViIGNvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvY29udHJpYnV0b3JzLWFub24vb3B0aWNkZXYvb3B0aWM/c3R5bGU9c29jaWFsKSAhW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vQHVzZW9wdGljL29wZW5hcGktaW8/c3R5bGU9c29jaWFsKSAhW2xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2Uvb3B0aWNkZXYvb3B0aWM/c3R5bGU9c29jaWFsKQoKIyBPcHRpYyAtIE9wZW5BUEkgbWFkZSBlYXN5Cgrwn6egICoqR2VuZXJhdGUgT3BlbkFQSSoqIGZyb20gdGVzdCB0cmFmZmljCgrimqHvuI8gKipLZWVwIE9wZW5BUEkgc3BlYyBhY2N1cmF0ZSoqIHdpdGggYXV0b21hdGljIHNjaGVtYSB0ZXN0aW5nIGFuZCBwYXRjaGVzCgrwn6SpICoqQ2F0Y2ggQnJlYWtpbmcgQ2hhbmdlcyBhbmQgYXBwbHkgTGludCBSdWxlcyoqIHdpdGggdGhlIHNhbWUgdG9vbAoKCj4gT3B0aWMgc3VwcG9ydHMgJHJlZiBhbmQgT3BlbkFQSSBzcGVjcyBzcGxpdCBhY3Jvc3MgbXVsdGlwbGUgZmlsZXMuIEl0IGFsd2F5cyAKCgojIyBbUmVhZCBEb2N1bWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vb3B0aWNkZXYvb3B0aWMvd2lraSkgCgoKIyMjIERlbW9zCgpodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvYjM4NmJiNDItMzlhNS00ZGIwLWFlYTUtYzIzOTk1ODhlYmIwCgpodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvYmI2YWYwOTgtNmU5MS00NjM2LWI4OGMtMWM5YmM1ODZjY2UwCgpodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvMWIwN2JmZDktMzY0Yy00YmJlLWJhZWItNDkzYmVkMzkyY2RmCgojIyMgSW5zdGFsbApgYGBiYXNoCm5wbSBpbnN0YWxsIC1nIEB1c2VvcHRpYy9vcHRpYwpgYGAKCiMjIOKPre+4jyBbR2V0IFN0YXJ0ZWQhXShodHRwczovL2dpdGh1Yi5jb20vb3B0aWNkZXYvb3B0aWMvd2lraSkgCgoKIyMjIExpY2Vuc2UKT3B0aWMgaXMgTUlUIExpY2Vuc2VkIAoKW09wdGljIExhYnMgaXMgbm93IHBhcnQgb2YgQXRsYXNzaWFuXShodHRwczovL3d3dy5hdGxhc3NpYW4uY29tL2Jsb2cvYW5ub3VuY2VtZW50cy9vcHRpYy1hY3F1aXNpdGlvbikK readmeEtag: '"358aa291d9f6d31461560ea8bcd6d83ad1bfd949"' readmeLastModified: Wed, 05 Feb 2025 23:05:43 GMT repositoryId: 123606765 description: >- OpenAPI linting, diffing and testing. Optic helps prevent breaking changes, publish accurate documentation and improve the design of your APIs. created: '2018-03-02T17:02:50Z' updated: '2026-02-04T10:21:13Z' language: TypeScript archived: true stars: 1523 watchers: 9 forks: 90 owner: opticdev logo: https://avatars.githubusercontent.com/u/34556970?v=4 license: MIT repoEtag: '"ebb6a432a89e1eadcaae420b7467945e5a55ff515931ddddb88241159ea7a534"' repoLastModified: Wed, 04 Feb 2026 10:21:13 GMT foundInMaster: true id: 8c3d08406ca659662808d51ddc10b4e4 v3_1: true - source: https://openapi.tools/ name: OpenAPI CRUD Wizard language: Yaml repository: https://github.com/inssch/openapicrudwizard link: https://plugins.jetbrains.com/plugin/19889-openapi-crud-wizard source_description: >- This wizard is an IntelliJ Plugin to create a new OpenAPI document including all CRUD operations based only on a Yaml object. No knowledge about OpenAPI specification needed. v3: true v3_1: true id: 2c2fe4c5fadd80c7fe677b1ad25de5e1 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIENSVUQgV2l6YXJkCgpUaGlzIHJlcG9zaXRvcnkgaXMgYWJvdXQgdGhlIEludGVsbGlKIFBsdWdpbiAiT3BlbkFQSSBDUlVEIFdpemFyZCIKaHR0cHM6Ly9wbHVnaW5zLmpldGJyYWlucy5jb20vcGx1Z2luLzE5ODg5LW9wZW5hcGktY3J1ZC13aXphcmQKCllvdSBjYW4gcmFpc2UgaXNzdWVzIG9yIGZlYXR1cmUgcmVxdWVzdHMgaW4gdGhlICJJc3N1ZXMiIHRhYi4KClRoaXMgc2l0ZSBpcyBpbiBwcm9ncmVzcy4gRnVsbCBkZXNjcmlwdGlvbiBjb21pbmcgc29vbi4KCgo= readmeEtag: '"3d9760d6304818ee7298c9d7a9e4c472c2eb02fa"' readmeLastModified: Tue, 07 Feb 2023 11:38:47 GMT repositoryId: 530957071 description: OpenAPI CRUD Wizard created: '2022-08-31T06:13:23Z' updated: '2024-05-17T16:07:37Z' language: null archived: false stars: 1 watchers: 1 forks: 0 owner: inssch logo: https://avatars.githubusercontent.com/u/109123959?v=4 repoEtag: '"3547aa17af09a237865f8233491388f501661045aed0754a30fa2840866e4dae"' repoLastModified: Fri, 17 May 2024 16:07:37 GMT foundInMaster: true category: Server Implementations - source: https://openapi.tools/ name: OAS RAML Converter category: Converters language: Node.js link: https://mulesoft.github.io/oas-raml-converter/ repository: https://github.com/mulesoft/oas-raml-converter source_description: Converts between OpenAPI and RAML API specifications v2: true v3: true repositoryMetadata: base64Readme: >- IyBPQVMgUkFNTCBDb252ZXJ0ZXIgKERFUFJFQ0FURUQpIFshW25wbSB2ZXJzaW9uXShodHRwczovL2JhZGdlLmZ1cnkuaW8vanMvb2FzLXJhbWwtY29udmVydGVyLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29hcy1yYW1sLWNvbnZlcnRlcikKCiMgRGVwcmVjYXRpb24gTm90aWNlCioqVGhpcyBwcm9qZWN0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIGlzIG5vIGxvbmdlciBtYWludGFpbmVkLiBQbGVhc2UgdXNlIFtXZWJBUEkgUGFyc2VyXShodHRwczovL2dpdGh1Yi5jb20vcmFtbC1vcmcvd2ViYXBpLXBhcnNlcikgY29udmVydGVyIGluc3RlYWQuIGh0dHBzOi8vZ2l0aHViLmNvbS9yYW1sLW9yZy93ZWJhcGktcGFyc2VyKioKCiMjIyBNYXN0ZXIgWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvbXVsZXNvZnQvb2FzLXJhbWwtY29udmVydGVyLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL211bGVzb2Z0L29hcy1yYW1sLWNvbnZlcnRlcikgWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIvbXVsZXNvZnQvb2FzLXJhbWwtY29udmVydGVyL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL211bGVzb2Z0L29hcy1yYW1sLWNvbnZlcnRlcj9icmFuY2g9bWFzdGVyKSAKCiMjIyB2MC4yLnggWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvbXVsZXNvZnQvb2FzLXJhbWwtY29udmVydGVyLnN2Zz9icmFuY2g9djAuMi54KV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL211bGVzb2Z0L29hcy1yYW1sLWNvbnZlcnRlcikgWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIvbXVsZXNvZnQvb2FzLXJhbWwtY29udmVydGVyL2JhZGdlLnN2Zz9icmFuY2g9djAuMi54KV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL211bGVzb2Z0L29hcy1yYW1sLWNvbnZlcnRlcj9icmFuY2g9djAuMi54KSAKClRoaXMgcGFja2FnZSBoZWxwcyB0byBjb252ZXJ0IGJldHdlZW4gZGlmZmVyZW50IEFQSSBzcGVjaWZpY2F0aW9ucy4gSXQgd2FzIG9yaWdpbmFsbHkgZm9ya2VkIGZyb20gW3RoZSBzdG9wbGlnaHQuaW8gY29udmVydGVyXShodHRwczovL2dpdGh1Yi5jb20vc3RvcGxpZ2h0aW8vYXBpLXNwZWMtY29udmVydGVyKS4gCgojIyBTdXBwb3J0ZWQgQ29udmVyc2lvbnMgKGJldGEpCgotIE9BUyAoT0FTIDIuMCkgLT4gUkFNTCAxLjA6IFtDb21wbGV0ZSBGdW5jdGlvbmFsIFNwZWNpZmljYXRpb25dKC4vZG9jcy9PQVMyMC10by1SQU1MMTAubWQpCi0gUkFNTCAxLjAgLT4gT0FTIChPQVMgMi4wKTogW0NvbXBsZXRlIEZ1bmN0aW9uYWwgU3BlY2lmaWNhdGlvbl0oLi9kb2NzL1JBTUwxMC10by1PQVMyMC5tZCkKLSBSQU1MIDEuMCAtPiBPQVMgKE9BUyAzLjApOiBbQ29tcGxldGUgRnVuY3Rpb25hbCBTcGVjaWZpY2F0aW9uXSguL2RvY3MvUkFNTDEwLXRvLU9BUzMwLm1kKQotIFJBTUwgMC44IC0+IE9BUyAoT0FTIDIuMCkKLSBSQU1MIDAuOCAtPiBSQU1MIDEuMAoKIyMgVXNpbmcKCiMjIyAxLiBPbmxpbmUgd2ViIHBhZ2UKCkZvciBhbiBvbmxpbmUgY29udmVyc2lvbiwgdXNlOiBbaHR0cHM6Ly9tdWxlc29mdC5naXRodWIuaW8vb2FzLXJhbWwtY29udmVydGVyXShodHRwczovL211bGVzb2Z0LmdpdGh1Yi5pby9vYXMtcmFtbC1jb252ZXJ0ZXIpLgoKIyMjIDIuIENvbW1hbmQgbGluZSB0b29sCgpUaGlzIGNvbW1hbmQgbmVlZHMgdG8gYmUgZXhlY3V0ZSBhZnRlciBjbG9uaW5nIHJlcG9zaXRvcnksIApgYGAKbnBtIHJ1biBidWlsZApgYGAKClRoaXMgdXRpbGl0eSBoZWxwcyB5b3UgY29udmVydGluZyBsb2NhbCBmaWxlcyBmcm9tIHlvdXIgY29tbWFuZCBsaW5lLgoKYGBgCi4vbGliL2Jpbi9jb252ZXJ0ZXIuanMgLS1mcm9tIE9BUzIwIC0tdG8gUkFNTCAuL3BhdGgvdG8vc3dhZ2dlci5qc29uCi4vbGliL2Jpbi9jb252ZXJ0ZXIuanMgLS1mcm9tIE9BUzIwIC0tdG8gUkFNTCAuL3BhdGgvdG8vc3dhZ2dlci5qc29uID4gb3V0cHV0LnJhbWwKCi4vbGliL2Jpbi9jb252ZXJ0ZXIuanMgLS1mcm9tIFJBTUwgLS10byBPQVMyMCAuL3BhdGgvdG8vc291cmNlLnJhbWwgPiBzd2FnZ2VyLmpzb24KYGBgCgpPciBpbnN0YWxsIGdsb2JhbGx5IGFuZCB0aGVuOgoKYGBgCm9hcy1yYW1sLWNvbnZlcnRlciAtLWZyb20gT0FTMjAgLS10byBSQU1MIC4vcGF0aC90by9zd2FnZ2VyLmpzb24Kb2FzLXJhbWwtY29udmVydGVyIC0tZnJvbSBPQVMyMCAtLXRvIFJBTUwgLi9wYXRoL3RvL3N3YWdnZXIuanNvbiA+IG91dHB1dC5yYW1sCgpvYXMtcmFtbC1jb252ZXJ0ZXIgLS1mcm9tIFJBTUwgLS10byBPQVMyMCAuL3BhdGgvdG8vc291cmNlLnJhbWwgPiBzd2FnZ2VyLmpzb24KYGBgCgojIyMgMy4gQXMgYSBzZXJ2aWNlCgpGb3IgYSBSRVNUIEFQSSBvZiB0aGUgY29udmVydGVyLCB5b3UgY2FuIHN0YXJ0IGl0IGluIGFuIGV4cHJlc3Mgc2VydmVyLCBjaGVja291dCB0aGUgW29hcy1yYW1sLWNvbnZlcnRlci1zZXJ2aWNlXShodHRwczovL2dpdGh1Yi5jb20vbXVsZXNvZnQvb2FzLXJhbWwtY29udmVydGVyLXNlcnZpY2UpIHByb2plY3QuCgojIyMgNC4gQXMgYSBkZXBlbmRlbmN5CgojIyMjIEluc3RhbGxhdGlvbiAoTm9kZUpTIG9yIEJyb3dzZXIpCgpgYGBiYXNoCm5wbSBpbnN0YWxsIC0tc2F2ZSBvYXMtcmFtbC1jb252ZXJ0ZXIKYGBgCgojIyMjIEluaXRpYWxpemluZyBhIGNvbnZlcnRlcgoKUmFtbCAxLjAgdG8gT0FTIDIuMDoKYGBganMKdmFyIGNvbnZlcnRlciA9IHJlcXVpcmUoJ29hcy1yYW1sLWNvbnZlcnRlcicpOwp2YXIgcmFtbDEwVG9PYXMyMCA9IG5ldyBjb252ZXJ0ZXIuQ29udmVydGVyKGNvbnZlcnRlci5Gb3JtYXRzLlJBTUwsIGNvbnZlcnRlci5Gb3JtYXRzLk9BUzIwKTsKYGBgCgpPQVMgMi4wIHRvIFJhbWwgMS4wOgpgYGBqcwp2YXIgY29udmVydGVyID0gcmVxdWlyZSgnb2FzLXJhbWwtY29udmVydGVyJyk7CnZhciBvYXMyMFRvUmFtbDEwID0gbmV3IGNvbnZlcnRlci5Db252ZXJ0ZXIoY29udmVydGVyLkZvcm1hdHMuT0FTMjAsIGNvbnZlcnRlci5Gb3JtYXRzLlJBTUwpOwpgYGAKClRoZSBjb252ZXJ0ZXIgZGV0ZWN0cyB0aGUgaW5wdXQgcmFtbCBmb3JtYXQgYXV0b21hdGljYWxseSBieSBwYXNzaW5nIGBSQU1MYCBpbXBvcnQgZm9ybWF0LCBzbzoKUmFtbCAwLjggdG8gT0FTIDIuMDoKYGBganMKdmFyIGNvbnZlcnRlciA9IHJlcXVpcmUoJ29hcy1yYW1sLWNvbnZlcnRlcicpOwp2YXIgcmFtbDA4VG9PYXMyMCA9IG5ldyBjb252ZXJ0ZXIuQ29udmVydGVyKGNvbnZlcnRlci5Gb3JtYXRzLlJBTUwsIGNvbnZlcnRlci5Gb3JtYXRzLk9BUzIwKTsKYGBgClJhbWwgMC44IHRvIFJhbWwgMS4wOgpgYGBqcwp2YXIgY29udmVydGVyID0gcmVxdWlyZSgnb2FzLXJhbWwtY29udmVydGVyJyk7CnZhciByYW1sMDhUb1JhbWwxMCA9IG5ldyBjb252ZXJ0ZXIuQ29udmVydGVyKGNvbnZlcnRlci5Gb3JtYXRzLlJBTUwsIGNvbnZlcnRlci5Gb3JtYXRzLlJBTUwpOwpgYGAKCiMjIyMgQ29udmVydGluZyBmcm9tIGEgZmlsZSBvciB1cmwKCmBgYGpzCm9hczIwVG9SYW1sMTAuY29udmVydEZpbGUoJy9wYXRoL3RvL3N3YWdnZXIuanNvbicpLnRoZW4oZnVuY3Rpb24ocmFtbCkgewogIGNvbnNvbGUubG9nKHJhbWwpOyAvLyByYW1sIGlzIHJhbWwgeWFtbCBzdHJpbmcKfSkKLmNhdGNoKGZ1bmN0aW9uKGVycikgewogIGNvbnNvbGUuZXJyb3IoZXJyKTsKfSk7CmBgYAoKIyMjIyBDb252ZXJ0aW5nIGZyb20gYSBzdHJpbmcgb3IganNvbgoKYGBganMKdmFyIG15T2FzU3RyaW5nID0gJy4uLic7Cm9hczIwVG9SYW1sMTAuY29udmVydERhdGEobXlPYXNTdHJpbmcpLnRoZW4oZnVuY3Rpb24ocmFtbCkgewogIGNvbnNvbGUubG9nKHJhbWwpOyAvLyByYW1sIGlzIHJhbWwgeWFtbCBzdHJpbmcKfSkKLmNhdGNoKGZ1bmN0aW9uKGVycikgewogIGNvbnNvbGUuZXJyb3IoZXJyKTsKfSk7CmBgYAoKIyMjIyBQYXNzaW5nIG9wdGlvbnMKCmBgYGpzCnZhciBvcHRpb25zID0gewogICAgdmFsaWRhdGU6IGZhbHNlLCAvLyBQYXJzZSBib3RoIGlucHV0IGFuZCBvdXRwdXQgdG8gY2hlY2sgdGhhdCBpdHMgYSB2YWxpZCBkb2N1bWVudAogICAgdmFsaWRhdGVJbXBvcnQ6IGZhbHNlLCAvLyBPbmx5IHZhbGlkYXRlIGlucHV0CiAgICB2YWxpZGF0ZUV4cG9ydDogZmFsc2UsIC8vIE9ubHkgdmFsaWRhdGUgb3V0cHV0CiAgICBmb3JtYXQ6ICd5YW1sJywgLy8gT3V0cHV0IGZvcm1hdDoganNvbiAoZGVmYXVsdCBmb3IgT0FTKSBvciB5YW1sIChkZWZhdWx0IGZvciBSQU1MKQogICAgZnM6IHsgLi4uIH0gLy8gVXNlIGEgY3VzdG9tIGZpbGUgc3lzdGVtIHNvbHZlciAobm90IHlldCBhdmFpbGFibGUpCn07CgpvYXMyMFRvUmFtbDEwLmNvbnZlcnRGaWxlKCcvcGF0aC90by9zd2FnZ2VyLmpzb24nLCBvcHRpb25zKS50aGVuKGZ1bmN0aW9uKHJhbWwpIHsKICBjb25zb2xlLmxvZyhyYW1sKTsgLy8gcmFtbCBpcyByYW1sIHlhbWwgc3RyaW5nCn0pCi5jYXRjaChmdW5jdGlvbihlcnIpIHsKICBjb25zb2xlLmVycm9yKGVycik7Cn0pOwpgYGAKCiMjIENvbnRyaWJ1dGluZwoKQ29udHJpYnV0aW9ucyBhcmUgd2VsY29tZSEgUGxlYXNlIGNoZWNrIHRoZSBjdXJyZW50IGlzc3VlcyB0byBtYWtlIHN1cmUgd2hhdCB5b3UgYXJlIHRyeWluZyB0byBkbyBoYXMgbm90IGFscmVhZHkgYmVlbiBkaXNjdXNzZWQuCgojIyMgU3RlcHMKCjEuIEZvcmsuCjIuIE1ha2UgY2hhbmdlcy4KMy4gV3JpdGUgdGVzdHMuCjQuIFNlbmQgYSBwdWxsIHJlcXVlc3QuCgojIyMgRGV2ZWxvcAoKSW5zdGFsbCBkZXBlbmRlbmNpZXM6CmBgYGJhc2gKbnBtIGluc3RhbGwKYGBgCgpSdW4gdGVzdHM6CmBgYGJhc2gKbnBtIHRlc3QKYGBgCgpSdW4gZXNsaW50IHRvIGNoZWNrIGxpbnRpbmcgZXJyb3JzOgpgYGBiYXNoCm5wbSBydW4gZXNsaW50CmBgYAo= readmeEtag: '"96668028f8add8a14f4ef8443482f35ccd222055"' readmeLastModified: Thu, 05 Sep 2019 20:39:33 GMT repositoryId: 65008129 description: (DEPRECATED) Converts between OAS and RAML API specifications created: '2016-08-05T09:49:24Z' updated: '2026-01-01T11:59:24Z' language: JavaScript archived: true stars: 73 watchers: 238 forks: 51 owner: mulesoft logo: https://avatars.githubusercontent.com/u/185740?v=4 license: MIT repoEtag: '"0abb667c61ab84138d92c53025a70cea5152bd28a4102e6ff644ad58e7ff9af0"' repoLastModified: Thu, 01 Jan 2026 11:59:24 GMT foundInMaster: true id: 24686ca74b0284507f5f437578166800 - source: https://openapi.tools/ name: OData OpenAPI homepage: https://github.com/oasis-tcs/odata-openapi language: - Node.js - XSLT source_description: OData 4.0, 3.0, and 2.0 to OpenAPI v3.1, v3.0, and v2.0 converter category: Converters repository: https://github.com/oasis-tcs/odata-openapi v2: true v3: true repositoryMetadata: base64Readme: >- WyFbbnBtIERvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZHcvb2RhdGEtb3BlbmFwaSldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29kYXRhLW9wZW5hcGkpCgo8ZGl2Pgo8aDI+UkVBRE1FPC9oMj4KCjxwPk1lbWJlcnMgb2YgdGhlIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2NvbW1pdHRlZXMvb2RhdGEvIj5PQVNJUyBPcGVuIERhdGEgUHJvdG9jb2wgKE9EYXRhKSBUZWNobmljYWwgQ29tbWl0dGVlPC9hPiBjcmVhdGUgYW5kIG1hbmFnZSB0ZWNobmljYWwgY29udGVudCBpbiB0aGlzIFRDIEdpdEh1YiByZXBvc2l0b3J5ICggPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29hc2lzLXRjcy9vZGF0YS1vcGVuYXBpIj5odHRwczovL2dpdGh1Yi5jb20vb2FzaXMtdGNzL29kYXRhLW9wZW5hcGk8L2E+ICkgYXMgcGFydCBvZiB0aGUgVEMncyBjaGFydGVyZWQgd29yayAoPGk+aS5lLjwvaT4sIHRoZSBwcm9ncmFtIG9mIHdvcmsgYW5kIGRlbGl2ZXJhYmxlcyBkZXNjcmliZWQgaW4gaXRzIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2NvbW1pdHRlZXMvb2RhdGEvY2hhcnRlci5waHAiPmNoYXJ0ZXI8L2E+KS48L3A+Cgo8cD5PQVNJUyBUQyBHaXRIdWIgcmVwb3NpdG9yaWVzLCBhcyBkZXNjcmliZWQgaW4gPGEgaHJlZj0iaHR0cHM6Ly93d3cub2FzaXMtb3Blbi5vcmcvcmVzb3VyY2VzL3RjYWRtaW4vZ2l0aHViLXJlcG9zaXRvcmllcy1mb3Itb2FzaXMtdGMtbWVtYmVycy1jaGFydGVyZWQtd29yayI+R2l0SHViIFJlcG9zaXRvcmllcyBmb3IgT0FTSVMgVEMgTWVtYmVycycgQ2hhcnRlcmVkIFdvcms8L2E+LCBhcmUgZ292ZXJuZWQgYnkgdGhlIE9BU0lTIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL3BvbGljaWVzLWd1aWRlbGluZXMvdGMtcHJvY2VzcyI+VEMgUHJvY2VzczwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL3BvbGljaWVzLWd1aWRlbGluZXMvaXByIj5JUFIgUG9saWN5PC9hPiwgYW5kIG90aGVyIHBvbGljaWVzLCBzaW1pbGFyIHRvIFRDIFdpa2lzLCBUQyBKSVJBIGlzc3VlcyB0cmFja2luZyBpbnN0YW5jZXMsIFRDIFNWTi9TdWJ2ZXJzaW9uIHJlcG9zaXRvcmllcywgZXRjLiAgV2hpbGUgdGhleSBtYWtlIHVzZSBvZiBwdWJsaWMgR2l0SHViIHJlcG9zaXRvcmllcywgdGhlc2UgVEMgR2l0SHViIHJlcG9zaXRvcmllcyBhcmUgZGlzdGluY3QgZnJvbSA8YSBocmVmPSJodHRwczovL3d3dy5vYXNpcy1vcGVuLm9yZy9yZXNvdXJjZXMvb3Blbi1yZXBvc2l0b3JpZXMiPk9BU0lTIE9wZW4gUmVwb3NpdG9yaWVzPC9hPiwgd2hpY2ggYXJlIHVzZWQgZm9yIGRldmVsb3BtZW50IG9mIG9wZW4gc291cmNlIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL3Jlc291cmNlcy9vcGVuLXJlcG9zaXRvcmllcy9saWNlbnNlcyI+bGljZW5zZWQ8L2E+IGNvbnRlbnQuPC9wPgo8L2Rpdj4KCjxkaXY+CjxoMz5EZXNjcmlwdGlvbjwvaDM+Cgo8cD5UaGUgcHVycG9zZSBvZiB0aGlzIHJlcG9zaXRvcnkgaXMgdG8gc3VwcG9ydCBkZXZlbG9wbWVudCBvZiB0b29scyBmb3IgcHJvZHVjaW5nIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uIj5PcGVuQVBJPC9hPiBkZXNjcmlwdGlvbnMgZm9yIE9EYXRhIHNlcnZpY2VzLjwvcD4KPHA+UGxhbm5lZCB3b3JrIGl0ZW1zIGluY2x1ZGU6Cjx1bD4KPGxpPmNvbnZlcnQgT0RhdGEgQ1NETCBKU09OIG9yIE9EYXRhIENTREwgWE1MIHRvIE9wZW5BUEkgSlNPTjwvbGk+CjxsaT5leGFtcGxlIFhNTCBmaWxlczwvbGk+CjxsaT5leGFtcGxlIG9wZW5hcGkuanNvbiBmaWxlczwvbGk+CjxsaT5leGFtcGxlIGZpbGVzIGZvciB0aGUgbGl2ZSBvZGF0YS5vcmcgc2VydmljZXM8L2xpPgo8L3VsPjwvcD4KCjwvZGl2PgoKPGRpdj4KPGgzPkNvbnRyaWJ1dGlvbnM8L2gzPgo8cD5BcyBzdGF0ZWQgaW4gdGhpcyByZXBvc2l0b3J5J3MgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29hc2lzLXRjcy9vZGF0YS1vcGVuYXBpL2Jsb2IvbWFpbi9DT05UUklCVVRJTkcubWQiPkNPTlRSSUJVVElORyBmaWxlPC9hPiwgY29udHJpYnV0b3JzIHRvIHRoaXMgcmVwb3NpdG9yeSBhcmUgZXhwZWN0ZWQgdG8gYmUgTWVtYmVycyBvZiB0aGUgT0FTSVMgT0RhdGEgVEMsIGZvciBhbnkgc3Vic3RhbnRpdmUgY2hhbmdlIHJlcXVlc3RzLiAgQW55b25lIHdpc2hpbmcgdG8gY29udHJpYnV0ZSB0byB0aGlzIEdpdEh1YiBwcm9qZWN0IGFuZCA8YSBocmVmPSJodHRwczovL3d3dy5vYXNpcy1vcGVuLm9yZy9qb2luL3BhcnRpY2lwYXRpb24taW5zdHJ1Y3Rpb25zIj5wYXJ0aWNpcGF0ZTwvYT4gaW4gdGhlIFRDJ3MgdGVjaG5pY2FsIGFjdGl2aXR5IGlzIGludml0ZWQgdG8gam9pbiBhcyBhbiBPQVNJUyBUQyBNZW1iZXIuICBQdWJsaWMgZmVlZGJhY2sgaXMgYWxzbyBhY2NlcHRlZCwgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL3BvbGljaWVzLWd1aWRlbGluZXMvaXByI2FwcGVuZGl4YSI+T0FTSVMgRmVlZGJhY2sgTGljZW5zZTwvYT4uPC9wPgo8L2Rpdj4KCjxkaXY+CjxoMz5MaWNlbnNpbmc8L2gzPgo8cD5QbGVhc2Ugc2VlIHRoZSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb2FzaXMtdGNzL29kYXRhLW9wZW5hcGkvYmxvYi9tYWluL0xJQ0VOU0UubWQiPkxJQ0VOU0U8L2E+IGZpbGUgZm9yIGRlc2NyaXB0aW9uIG9mIHRoZSBsaWNlbnNlIHRlcm1zIGFuZCBPQVNJUyBwb2xpY2llcyBhcHBsaWNhYmxlIHRvIHRoZSBUQydzIHdvcmsgaW4gdGhpcyBHaXRIdWIgcHJvamVjdC4gQ29udGVudCBpbiB0aGlzIHJlcG9zaXRvcnkgaXMgaW50ZW5kZWQgdG8gYmUgcGFydCBvZiB0aGUgT0RhdGEgVEMncyBwZXJtYW5lbnQgcmVjb3JkIG9mIGFjdGl2aXR5LCB2aXNpYmxlIGFuZCBmcmVlbHkgYXZhaWxhYmxlIGZvciBhbGwgdG8gdXNlLCBzdWJqZWN0IHRvIGFwcGxpY2FibGUgT0FTSVMgcG9saWNpZXMsIGFzIHByZXNlbnRlZCBpbiB0aGUgcmVwb3NpdG9yeSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb2FzaXMtdGNzL29kYXRhLW9wZW5hcGkvYmxvYi9tYWluL0xJQ0VOU0UubWQiPkxJQ0VOU0U8L2E+IGZpbGUuPC9wPgo8L2Rpdj4KCjxoMz5GdXJ0aGVyIERlc2NyaXB0aW9uIG9mIHRoaXMgUmVwb3NpdG9yeTwvaDM+CgpUaGUgT0RhdGEgVEMgaGFzIHB1Ymxpc2hlZCB0aGUgW09EYXRhIHRvIE9wZW5BUEkgTWFwcGluZyBWZXJzaW9uIDEuMF0oaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEtb3BlbmFwaS92MS4wL29kYXRhLW9wZW5hcGktdjEuMC5odG1sKSwgYSByZWNvbW1lbmRhdGlvbiBvbiBob3cgdG8gY3JlYXRlIE9wZW5BUEkgZGVzY3JpcHRpb25zIGZvciBPRGF0YSBzZXJ2aWNlcy4gVGhpcyBwcm9qZWN0IGNvbnRhaW5zIHR3byBwcm9vZi1vZi1jb25jZXB0IGltcGxlbWVudGF0aW9ucyBvZiB0aGF0IG1hcHBpbmcsIFtvbmUgdXNpbmcgSmF2YVNjcmlwdF0oaHR0cHM6Ly9naXRodWIuY29tL29hc2lzLXRjcy9vZGF0YS1vcGVuYXBpL2Jsb2IvbWFpbi9saWIpLCBhbmQgW29uZSB1c2luZyBYU0xUXShodHRwczovL2dpdGh1Yi5jb20vb2FzaXMtdGNzL29kYXRhLW9wZW5hcGkvYmxvYi9tYWluL3Rvb2xzKS4gVGhlIGxhdHRlciBhbHNvIGV2YWx1YXRlcyBjZXJ0YWluICJPRGF0YSBWMiBzdHlsZSIgYW5ub3RhdGlvbnMgdGhhdCBhcmUgZXhwbGFpbmVkIFtoZXJlXShodHRwczovL3NhcC5naXRodWIuaW8vb2RhdGEtdm9jYWJ1bGFyaWVzL2RvY3MvdjItYW5ub3RhdGlvbnMuaHRtbCkuCgpUaGUgW2BleGFtcGxlc2AgZm9sZGVyXShodHRwczovL2dpdGh1Yi5jb20vb2FzaXMtdGNzL29kYXRhLW9wZW5hcGkvYmxvYi9tYWluL2V4YW1wbGVzKSBjb250YWlucyBbT3BlbkFQSSAzLjAuMl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24pIGRlc2NyaXB0aW9ucyB0aGF0IGhhdmUgYmVlbiBjcmVhdGVkIGZyb20gdGhlIFhNTCBgJG1ldGFkYXRhYCBkb2N1bWVudHMgb2YgbGl2ZSBhbmQgZXhhbXBsZSBPRGF0YSBzZXJ2aWNlcyB3aXRoIHRoZXNlIHByb29mLW9mLWNvbmNlcHQgaW1wbGVtZW50YXRpb25zLgoKVGhlIGVudGl0eS1yZWxhdGlvbnNoaXAgZGlhZ3JhbXMgdmlzdWFsaXppbmcgdGhlIHJlc291cmNlIG1vZGVscyBvZiBlYWNoIHNlcnZpY2UgYXJlIGdlbmVyYXRlZCBvbi10aGUtZmx5IHdpdGggW3lVTUxdKGh0dHA6Ly95dW1sLm1lLykuCgpPcGVuQVBJIGRlc2NyaXB0aW9ucyBmb3IgbGl2ZSBleGFtcGxlIE9EYXRhIHNlcnZpY2VzIGF0IFt3d3cub2RhdGEub3JnXShodHRwOi8vd3d3Lm9kYXRhLm9yZy8pCgotIFtUcmlwUGluIChyZWFkL3dyaXRlKV0oaHR0cDovL3BldHN0b3JlLnN3YWdnZXIuaW8vP3VybD1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb2FzaXMtdGNzL29kYXRhLW9wZW5hcGkvbWFpbi9leGFtcGxlcy9UcmlwUGluLm9wZW5hcGkzLmpzb24pCi0gW1NpbXBsZSByZWFkL3dyaXRlIHNlcnZpY2VdKGh0dHA6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvLz91cmw9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29hc2lzLXRjcy9vZGF0YS1vcGVuYXBpL21haW4vZXhhbXBsZXMvZXhhbXBsZS5vcGVuYXBpMy5qc29uKQotIFtOb3J0aHdpbmQgKHJlYWQpXShodHRwOi8vcGV0c3RvcmUuc3dhZ2dlci5pby8/dXJsPWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vYXNpcy10Y3Mvb2RhdGEtb3BlbmFwaS9tYWluL2V4YW1wbGVzL05vcnRod2luZC5vcGVuYXBpMy5qc29uKQoKT3BlbkFQSSBkZXNjcmlwdGlvbnMgZm9yIE9EYXRhIHNlcnZpY2VzIHRoYXQgcmVmZXJlbmNlIGVhY2ggb3RoZXIgKGNyb3NzLXNlcnZpY2UgcmVmZXJlbmNlcykKCi0gW1Blb3BsZV0oaHR0cDovL3BldHN0b3JlLnN3YWdnZXIuaW8vP3VybD1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb2FzaXMtdGNzL29kYXRhLW9wZW5hcGkvbWFpbi9leGFtcGxlcy9QZW9wbGUub3BlbmFwaTMuanNvbikKLSBbUHJvZHVjdHNdKGh0dHA6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvLz91cmw9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29hc2lzLXRjcy9vZGF0YS1vcGVuYXBpL21haW4vZXhhbXBsZXMvUHJvZHVjdHMub3BlbmFwaTMuanNvbikKCjxkaXY+CjxoMz5Db250YWN0PC9oMz4KPHA+UGxlYXNlIHNlbmQgcXVlc3Rpb25zIG9yIGNvbW1lbnRzIGFib3V0IDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL3Jlc291cmNlcy90Y2FkbWluL2dpdGh1Yi1yZXBvc2l0b3JpZXMtZm9yLW9hc2lzLXRjLW1lbWJlcnMtY2hhcnRlcmVkLXdvcmsiPk9BU0lTIFRDIEdpdEh1YiByZXBvc2l0b3JpZXM8L2E+IHRvIHRoZSBPQVNJUyA8YSBocmVmPSJtYWlsdG86dGMtYWRtaW5Ab2FzaXMtb3Blbi5vcmciPlRDIEFkbWluaXN0cmF0b3I8L2E+LiAgRm9yIHF1ZXN0aW9ucyBhYm91dCBjb250ZW50IGluIHRoaXMgcmVwb3NpdG9yeSwgcGxlYXNlIGNvbnRhY3QgdGhlIFRDIENoYWlyIG9yIENvLUNoYWlycyBhcyBsaXN0ZWQgb24gdGhlIHRoZSBPRGF0YSBUQydzIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2NvbW1pdHRlZXMvb2RhdGEvIj5ob21lIHBhZ2U8L2E+LjwvcD4KPC9kaXY+Cg== readmeEtag: '"21870cecf66f16f38866046aabeebf4b9d79eb6f"' readmeLastModified: Mon, 20 Oct 2025 07:05:04 GMT repositoryId: 74067831 description: >- OASIS OData TC: Tools for producing API descriptions for OData services that adhere to the OpenAPI Specification created: '2016-11-17T21:11:22Z' updated: '2026-02-03T08:30:49Z' language: XSLT archived: false stars: 214 watchers: 18 forks: 88 owner: oasis-tcs logo: https://avatars.githubusercontent.com/u/20116735?v=4 license: NOASSERTION repoEtag: '"20c37623b0ca768bc9dee710738ad3047a6756d01986a3846c3176a529397628"' repoLastModified: Tue, 03 Feb 2026 08:30:49 GMT foundInMaster: true v3_1: true id: 9039f84e8e8b63849cbf15578564033e - source: - https://openapi.tools/ - openapi3 tags name: - OpenAPI Filter - openapi-filter category: - Converters - Parsers language: Node.js source_description: - Filter internal components from OpenAPI Descriptions - >- OpenAPI 2.0 and 3.0 filter utility. A CLI/module to filter out internal/private paths, operations, parameters, schemas etc from OpenAPI v1/OpenAPI v2/AsyncAPI definitions. Simply flag any OpenAPI object within the definition with an `x-internal` specification extension or target a OpenAPI property (tags, methods, OperationId), and it will be removed from the output. repository: https://github.com/mermade/openapi-filter v2: true v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWZpbHRlcgoKIVtjaV0oaHR0cHM6Ly9naXRodWIuY29tL01lcm1hZGUvb3BlbmFwaS1maWx0ZXIvd29ya2Zsb3dzL2NpL2JhZGdlLnN2ZykKCkZpbHRlciBpbnRlcm5hbCBwYXRocywgb3BlcmF0aW9ucywgcGFyYW1ldGVycywgc2NoZW1hcyBldGMgZnJvbSBPcGVuQVBJL1N3YWdnZXIvQXN5bmNBUEkgZGVmaW5pdGlvbnMuCgpTaW1wbHkgZmxhZyBhbnkgb2JqZWN0IHdpdGhpbiB0aGUgZGVmaW5pdGlvbiB3aXRoIGFuIGB4LWludGVybmFsYCBzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbiwgYW5kIGl0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBvdXRwdXQuCgpGb3IgZXhhbXBsZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICB0aXRsZTogQVBJCiAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgLzoKICAgIGdldDoKICAgICAgeC1pbnRlcm5hbDogdHJ1ZQogICAgICAuLi4KYGBgCgpXb3JrcyB3aXRoIE9wZW5BUEkvU3dhZ2dlciAyLjAgYW5kIDMuMC54IGFuZCBBc3luY0FQSSBkZWZpbml0aW9ucy4KCmBgYApvcGVuYXBpLWZpbHRlci5qcyA8aW5maWxlPiBbb3V0ZmlsZV0KClBvc2l0aW9uYWxzOgogIGluZmlsZSAgIHRoZSBpbnB1dCBmaWxlCiAgb3V0ZmlsZSAgdGhlIG91dHB1dCBmaWxlCgpPcHRpb25zOgoKICAtLWluZm8gICAgICAgICAgIGluY2x1ZGUgY29tcGxldGUgaW5mbyBvYmplY3Qgd2l0aCAtLXZhbGlkICAgICAgICAgICBbYm9vbGVhbl0KICAtLWludmVyc2UsIC1pICAgIG91dHB1dCBmaWx0ZXJlZCBlbGVtZW50cyBvbmx5ICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KICAtLWZsYWdzLCAtZiAgICAgIGZsYWdzIHRvIGZpbHRlciBieSAgICAgICAgICBbYXJyYXldIFtkZWZhdWx0OiBbIngtaW50ZXJuYWwiXV0KICAtLWZsYWdWYWx1ZXMsIC12IGZsYWcgU3RyaW5nIHZhbHVlcyB0byBtYXRjaCAgICAgICAgICAgICBbYXJyYXldIFtkZWZhdWx0OiBbXV0KICAtLWNoZWNrVGFncyAgICAgIGZpbHRlciBpZiBmbGFncyBnaXZlbiBpbiAtLWZsYWdzIGFyZSBpbiB0aGUgdGFncyBhcnJheQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXQogIC0tb3ZlcnJpZGVzLCAtbyAgcHJlZml4ZXMgdXNlZCB0byBvdmVycmlkZSBuYW1lZCBwcm9wZXJ0aWVzW2Fycl0gW2RlZmF1bHQ6IFtdXQogIC0tdmFsaWQgICAgICAgICAgdHJ5IHRvIGVuc3VyZSBpbnZlcnNlIG91dHB1dCBpcyB2YWxpZCAgICAgICAgICAgICAgIFtib29sZWFuXQogIC0tc3RyaXAsIC1zICAgICAgc3RyaXAgdGhlIGZsYWdzIGZyb20gdGhlIGZpbmlzaGVkIHByb2R1Y3QgICAgICAgICAgIFtib29sZWFuXQogIC0tc2VydmVycyAgICAgICAgaW5jbHVkZSBjb21wbGV0ZSBzZXJ2ZXJzIG9iamVjdCB3aXRoIC0tdmFsaWQgICAgICAgIFtib29sZWFuXQogIC0tbGluZVdpZHRoLCAtbCAgbWF4IGxpbmUgd2lkdGggb2YgeWFtbCBvdXRwdXQgICAgICAgICAgIFtudW1iZXJdIFtkZWZhdWx0OiAwXQogIC0tbWF4QWxpYXNDb3VudCAgbWF4aW11bSBZQU1MIGFsaWFzZXMgYWxsb3dlZCAgICAgICAgICBbbnVtYmVyXSBbZGVmYXVsdDogMTAwXQogIC0tY29uZmlnRmlsZSAgICAgVGhlIGZpbGUgJiBwYXRoIGZvciB0aGUgZmlsdGVyIG9wdGlvbnMgICAgICAgICAgICAgICAgIFtwYXRoXQogIC0taGVscCAgICAgICAgICAgU2hvdyBoZWxwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXQogIC0tdmVyYm9zZSAgICAgICAgT3V0cHV0IG1vcmUgZGV0YWlscyBvZiB0aGUgZmlsdGVyIHByb2Nlc3MgICAgICAgICAgICAgW2NvdW50XQpgYGAKCnVzZSBgLS1gIHRvIHNlcGFyYXRlIGZsYWdzIG9yIG90aGVyIGFycmF5IG9wdGlvbnMgZnJvbSBmb2xsb3dpbmcgb3B0aW9ucywgaS5lLjoKCmBvcGVuYXBpLWZpbHRlciAtLWZsYWdzIHgtcHJpdmF0ZSB4LWhpZGRlbiAtLSBzb3VyY2UueWFtbCB0YXJnZXQueWFtbGAKCm9yCgpgYGBqYXZhc2NyaXB0CmxldCBvcGVuYXBpRmlsdGVyID0gcmVxdWlyZSgnb3BlbmFwaS1maWx0ZXInKTsKbGV0IG9wdGlvbnMgPSB7fTsgLy8gZGVmYXVsdHMgYXJlIHNob3duCi8vb3B0aW9ucy5pbnZlcnNlID0gZmFsc2U7Ci8vb3B0aW9ucy52YWxpZCA9IGZhbHNlOwovL29wdGlvbnMuZmxhZ3MgPSBbJ3gtaW50ZXJuYWwnXTsKbGV0IHJlcyA9IG9wZW5hcGlGaWx0ZXIuZmlsdGVyKG9iaixvcHRpb25zKTsKYGBgCgpTZWUgdGhlIFt3aWtpXShodHRwczovL2dpdGh1Yi5jb20vTWVybWFkZS9vcGVuYXBpLWZpbHRlci93aWtpKSBmb3IgZnVydGhlciBleGFtcGxlcy4K readmeEtag: '"3b83424f748e8c33bde73e794e3dcbfd7f1ef222"' readmeLastModified: Sun, 15 Oct 2023 13:23:21 GMT repositoryId: 99120783 description: >- Filter internal paths, operations, parameters, schemas etc from OpenAPI/Swagger/AsyncAPI definitions created: '2017-08-02T13:42:57Z' updated: '2025-11-14T11:08:26Z' language: JavaScript archived: false stars: 167 watchers: 3 forks: 34 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: BSD-3-Clause repoEtag: '"54c1f8c934bb7f5d1c06cc364ded424303caee88148dd5c73291136ea2f79187"' repoLastModified: Fri, 14 Nov 2025 11:08:26 GMT foundInMaster: true id: c00a8a003ace3ce47f5740bb641667fb v3_1: true - source: https://openapi.tools/ name: OData.OpenAPI category: - Converters - Parsers repository: https://github.com/xuzhg/odata.openapi language: .NET source_description: Convert an Edm (Entity Data Model) to OpenAPI 3.0 v3: true repositoryMetadata: base64Readme: >- IyBPRGF0YS5PcGVuQVBJCgpBIHByb2plY3QgdG8gY29udmVydCBhbiBFZG0gKEVudGl0eSBEYXRhIE1vZGVsKSB0byBbT3BlbkFwaSAzLjBdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykuCgpOb3csIHRoZSBXaG9sZSBwcm9qZWN0IGlzIG1vdmluZyB0bzogaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9vcGVuYXBpLm5ldCBmb3IgYmFzaWMgT3BlbiBBUEkgRE9NIGFuZAoKaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9vcGVuYXBpLm5ldC5vZGF0YSBmb3IgYmFzaWMgQ1NETCB0byBPcGVuIEFQSSBET00uCg== readmeEtag: '"22e3c2a52080e5ae6542c952011e423a4b10ac0d"' readmeLastModified: Mon, 06 Aug 2018 17:03:11 GMT repositoryId: 105206912 description: OData to Open API created: '2017-09-28T22:56:53Z' updated: '2023-05-22T09:10:47Z' language: C# archived: false stars: 7 watchers: 3 forks: 5 owner: xuzhg logo: https://avatars.githubusercontent.com/u/9426627?v=4 repoEtag: '"7420dbc87b4b37201967f18a22cc3341e26b799edad5e4734d9894e60dafbc87"' repoLastModified: Mon, 22 May 2023 09:10:47 GMT foundInMaster: true id: d147d76d31836810da33ac308ffb7615 - source: https://openapi.tools/ name: OpenDocumenter category: - Documentation - Parsers link: https://github.com/ouropencode/OpenDocumenter language: Vue.js source_description: >- OpenDocumenter is a automatic documentation generator for OpenAPI v3 schemas. Simply provide your schema file in JSON or YAML, then sit back and enjoy the documentation. v2: true v3: true foundInMaster: true repository: https://github.com/ouropencode/opendocumenter repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPk9wZW5Eb2N1bWVudGVyPC9oMT4KCjxwIGFsaWduPSJjZW50ZXIiPgogIDxpbWcgYWx0PSJWZXJzaW9uIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3BhY2thZ2UtanNvbi92L291cm9wZW5jb2RlL09wZW5Eb2N1bWVudGVyIiAvPgogIDxpbWcgYWx0PSJucG0iIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9vcGVuZG9jdW1lbnRlciIgLz4KICA8aW1nIGFsdD0iTGljZW5zZSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL291cm9wZW5jb2RlL09wZW5Eb2N1bWVudGVyIiAvPgogIDxpbWcgYWx0PSJEZXBlbmRlbmNpZXMiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9saWJyYXJpZXNpby9yZWxlYXNlL25wbS9vcGVuZG9jdW1lbnRlciIgLz4KICA8aW1nIGFsdD0iSXNzdWVzIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy9vdXJvcGVuY29kZS9PcGVuRG9jdW1lbnRlciIgLz4KICA8aW1nIGFsdD0iTm9kZSBWZXJzaW9uIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbm9kZS92L29wZW5kb2N1bWVudGVyIiAvPgogIDxpbWcgYWx0PSJCdWlsZCBTdGF0dXMiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL291cm9wZW5jb2RlL09wZW5Eb2N1bWVudGVyL3dvcmtmbG93cy9RdWlzcXVlJTIwQVBJJTIwQnVpbGQvYmFkZ2Uuc3ZnIiAvPgo8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL291cm9wZW5jb2RlLmdpdGh1Yi5pby9PcGVuRG9jdW1lbnRlci8iIHRhcmdldD0iX2JsYW5rIj4KICAgIDxpbWcgYWx0PSJOb2RlIFZlcnNpb24iIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL291cm9wZW5jb2RlL09wZW5Eb2N1bWVudGVyL21hc3Rlci9leGFtcGxlL2V4YW1wbGUuZ2lmIiAvPgogIDwvYT4KPC9wPgoKT3BlbkRvY3VtZW50ZXIgaXMgYSBhdXRvbWF0aWMgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZm9yIFtPcGVuQVBJIHYzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMC5tZCkgc2NoZW1hcy4gU2ltcGx5IHByb3ZpZGUgeW91ciBzY2hlbWEgZmlsZSBpbiBKU09OIG9yIFlBTUwsIHRoZW4gc2l0IGJhY2sgYW5kIGVuam95IHRoZSBkb2N1bWVudGF0aW9uLgoKUG93ZXJlZCBieSBbbnV4dC5qc10oaHR0cHM6Ly9udXh0anMub3JnL2h0dHBzOi8vbnV4dGpzLm9yZy8pIGFuZCBbc3dhZ2dlci1wYXJzZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXBhcnNlcikuCgojIyBFeGFtcGxlCkZvciBhIGxpdmUgcHJldmlldyBvZiBkb2N1bWVudGF0aW9uIGdlbmVyYXRlZCB3aXRoIE9wZW5Eb2N1bWVudGVyIHlvdSBjYW4gdmlldyBvdXIgZGVtbyBkb2N1bWVudGF0aW9uICIqKltRdWlzcXVlIEFQSV0oaHR0cHM6Ly9vdXJvcGVuY29kZS5naXRodWIuaW8vT3BlbkRvY3VtZW50ZXIvKSoqIi4gVGhpcyBleGFtcGxlIHVzZXMgbG9yZW0taXBzdW0gZm9yIGFsbCBjb250ZW50IHRvIHByb3ZpZGUgcGxhY2Vob2xkZXIgdGV4dCB1c2VkIHRvIGRlbW9uc3RyYXRlIHRoZSBmb3JtIG9mIGEgZG9jdW1lbnQgd2l0aG91dCByZWx5aW5nIG9uIG1lYW5pbmdmdWwgY29udGVudC4KCiMjIEluc3RhbGxhdGlvbgoKYGBgYmFzaAo+IG5wbSBpbnN0YWxsIC1nIG9wZW5kb2N1bWVudGVyCmBgYApvcgpgYGBiYXNoCj4geWFybiBnbG9iYWwgYWRkIG9wZW5kb2N1bWVudGVyCmBgYAoKIyMgVXNhZ2UKYGBgCj4gb3BlbmRvY3VtZW50ZXIgLS1oZWxwCgogICBfX19fXyAgICAgICAgICAgICBfX19fICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KICB8ICAgICB8X19fIF9fXyBfX198ICAgIFwgX19fIF9fXyBfIF8gX19fX18gX19fIF9fX3wgfF8gX19fIF9fXwogIHwgIHwgIHwgLiB8IC1ffCAgIHwgIHwgIHwgLiB8ICBffCB8IHwgICAgIHwgLV98ICAgfCAgX3wgLV98ICBffAogIHxfX19fX3wgIF98X19ffF98X3xfX19fL3xfX198X19ffF9fX3xffF98X3xfX198X3xffF98IHxfX198X3wKICAgICAgICB8X3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogIE9wZW5Eb2N1bWVudGVyIGlzIGEgYXV0b21hdGljIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZvciBPcGVuQVBJIHYzIHNjaGVtYXMuCiAgU2ltcGx5IHByb3ZpZGUgeW91ciBzY2hlbWEgZmlsZSBpbiBKU09OIG9yIFlBTUwsIHRoZW4gc2l0IGJhY2sgYW5kIGVuam95IHRoZSBkb2N1bWVudGF0aW9uLgoKICBQb3dlcmVkIGJ5IG51eHQuanMgYW5kIHN3YWdnZXItcGFyc2VyLgoKICBVc2FnZToKCiAgICBvcGVuZG9jdW1lbnRlciAtLXNjaGVtYT08ZmlsZT4gLS1vdXRwdXQ9PGRpcj4KCiAgQXJndW1lbnRzOgoKICAgIC0tc2NoZW1hPTxmaWxlPiAgICAocmVxdWlyZWQpIFRoZSBPcGVuQVBJIDMgZm9ybWF0IGZpbGUgdG8gZ2VuZXJhdGUgZG9jdW1lbnRhdGlvbiBmcm9tLgogICAgLS1vdXRwdXQ9PGRpcj4gICAgIChyZXF1aXJlZCkgVGhlIG91dHB1dCBkZXN0aW5hdGlvbiBkaXJlY3RvcnkuCiAgICAtLWNvbmZpZz08ZmlsZT4gICAgQSBjb25maWd1cmF0aW9uIGZpbGUgdG8gbG9hZCBhZHZhbmNlZCBvcHRpb25zIGZyb20uCmBgYAoKIyMgQ29uZmlndXJhdGlvbgpPcGVuRG9jdW1lbnRlciBjYW4gYmUgY29uZmlndXJlZCB1c2luZyBhIGAuanNvbmAgZmlsZSBzdG9yZWQgYWxvbmdzaWRlIHlvdXIgc2NoZW1hIGZpbGUuCgojIyMgTWVyZ2UgRnJvbSBEaXJlY3RvcnkKVGhlIGBtZXJnZUZyb21EaXJlY3RvcnlgIHBhcmFtZXRlciBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYSBkaXJlY3RvcnkgdGhhdCB3aWxsIGJlIGNvcGllZCBvdmVyIHRoZSBiYXNlIHRlbXBsYXRlIGJlZm9yZSBidWlsZGluZy4gVGhpcyBhbGxvd3MgY3VzdG9taXphdGlvbiBvZiBhbnkgcGFydCBvZiBPcGVuRG9jdW1lbnRlciB0byBzdWl0IHlvdXIgbmVlZHMuCgpgYGBqc29uCnsKICAibWVyZ2VGcm9tRGlyZWN0b3J5IjogIi4vb3ZlcnJpZGVzIgp9CmBgYAoKQW55IHBhcnQgb2YgdGhlIE9wZW5Eb2N1bWVudGVyIHZ1ZSBzb3VyY2UgKHNlZTogWy4vc3JjXSguL3NyYykpIGNhbiBiZSBvdmVycmlkZGVuLCBqdXN0IGVuc3VyZSB0byBmb2xsb3cgdGhlIHNhbWUgZGlyZWN0b3J5IHN0cnVjdHVyZSEKYGBgCm92ZXJyaWRlcwogfC0gYXNzZXRzCiB8ICctIHRoZW1lLmxlc3MKICctIGNvbXBvbmVudHMKICAgfC0gRG9jSGVhZGVyLnZ1ZQogICAnLSBEb2NFbnRyeS52dWUKYGBgCgojIyMgJ0dlbmVyYXRlZCBVc2luZycgRm9vdGVyCkJ5IGRlZmF1bHQsIGEgc21hbGwgJ0dlbmVyYXRlZCBVc2luZycgbWVzc2FnZSBpcyBpbmNsdWRlZCBvbiB0aGUgZm9vdGVyIG9mIHRoZSBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbi4gQWx0aG91Z2ggd2UnZCBsb3ZlIHlvdSB0byBrZWVwIGl0LCB5b3UgY2FuIGRpc2FibGUgdGhpcyBieSBzZXR0aW5nIHRoZSBgZGlzYWJsZUdlbmVyYXRlZFVzaW5nRm9vdGVyYCBwYXJhbWV0ZXIgdG8gdHJ1ZS4KCmBgYGpzb24KewogICJkaXNhYmxlR2VuZXJhdGVkVXNpbmdGb290ZXIiOiB0cnVlCn0KYGBgCgojIyMgQWJvcnRpbmcgb24gSW52YWxpZCBTY2hlbWEKT3BlbkRvY3VtZW50ZXIgaXMgY2FwYWJsZSBvZiBnZW5lcmF0aW5nIGRvY3VtZW50YXRpb24gZm9yIE9wZW5BUEkgc2NoZW1hcyB0aGF0IGRvbid0IG1hdGNoIHRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gZW50aXJlbHkuIFdoZW4gZ2VuZXJhdGluZyB3ZSBhdHRlbXB0IHRvIHZhbGlkYXRlIHlvdXIgc2NoZW1hLCBkaXNwbGF5IGFueSB2YWxpZGF0aW9uIHdhcm5pbmdzLCBhbmQgdGhlbiBjb250aW51ZSB0byBnZW5lcmF0ZS4gSWYgeW91IHdvdWxkIGxpa2UgdGhlIGdlbmVyYXRpb24gdG8gYWJvcnQgd2hlbiBhIHNjaGVtYSBpcyBpbnZhbGlkIHlvdSBjYW4gc2V0IHRoZSBgYWJvcnRPbkludmFsaWRTY2hlbWFgIHBhcmFtZXRlciB0byB0cnVlLgoKYGBganNvbgp7CiAgImFib3J0T25JbnZhbGlkU2NoZW1hIjogdHJ1ZQp9CmBgYAoKIyMjIFNoaWVsZHMgLyBCYWRnZXMKVmFyaW91cyBzaGllbGRzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24gaGVhZGVyLCBzdWNoIGFzIHRoZSBBUEkgdmVyc2lvbi4gQWRkaXRpb25hbCBzaGllbGRzIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgYHNoaWVsZHNgIHBhcmFtZXRlci4gRWFjaCBzaGllbGQgaXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIHRoZSBgdXJsYCBrZXksIG9yIGEgY29tYmluYXRpb24gb2YgYGxlZnRgLCBgcmlnaHRgIGFuZCBgY29sb3JgLiBUaGUgYHRyYW5zbGF0ZWAgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIChgbGVmdGAsIGByaWdodGAsIGBib3RoYCkgdG8gcnVuIHRoZSB0ZXh0IHRocm91Z2ggdGhlIGludGVybmF0aW9uYWxpemF0aW9uIGhhbmRsZXIuIEFuIG9wdGlvbmFsIGxpbmsgY2FuIHByb3ZpZGVkIHdpdGggdGhlIGBocmVmYCBwYXJhbWV0ZXIuIEFsbCBzaGllbGRzIGFyZSBnZW5lcmF0ZWQgdXNpbmcgW3NoaWVsZHMuaW9dKGh0dHBzOi8vc2hpZWxkcy5pbykgdW5sZXNzIGEgVVJMIGlzIHByb3ZpZGVkLgoKYGBganNvbgp7CiAgInNoaWVsZHMiOiBbCiAgICB7ICJ1cmwiOiAiaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS90ZXN0LTEuMi4zLS10ZXN0LWJsdWUiIH0sCiAgICB7ICJsZWZ0IjogInRlc3QiLCAicmlnaHQiOiAiMS4yLjMtdGVzdCIsICJjb2xvciI6ICJibHVlIiB9LAogICAgewogICAgICAibGVmdCI6ICJ0ZXN0IiwKICAgICAgInJpZ2h0IjogIjEuMi4zLXRlc3QiLAogICAgICAiY29sb3IiOiAiYmx1ZSIsCiAgICAgICJocmVmIjogImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIgogICAgfQogIF0KfQpgYGAKCiMjIyBCdWlsZDogTW9kZXJuIE1vZGUKQnkgZGVmYXVsdCwgdGhlIGJ1aWxkLWNoYWluIHByb2R1Y2VzICJNb2Rlcm4gTW9kZSIgIG91dHB1dCwgc2hpcHBpbmcgbmF0aXZlIEVTMjAxNSBjb2RlIHRvIG1vZGVybiBicm93c2VycyB0aGF0IHN1cHBvcnQgaXQsIHdpdGggYXV0byBmYWxsYmFjayB0byBhIGxlZ2FjeSBidW5kbGUuIFRoaXMgY2FuIGJlIHR1cm5lZCBvZmYgYnkgc2V0dGluZyBgdnVlTW9kZXJuTW9kZWAgcGFyYW1ldGVyLCBhZnRlcndhcmRzIHRoZSBidWlsZC1jaGFpbiBwcm9kdWNlcyAiTGVnYWN5IiBvdXRwdXQgZm9yIG9sZGVyIGJyb3dzZXIgY29tcGF0aWJpbGl0eS4KCmBgYGpzb24KewogICJ2dWVNb2Rlcm5Nb2RlIjogZmFsc2UKfQpgYGAKCiMjIyBCdWlsZDogUmVwb3J0aW5nCllvdSBjYW4gY29udHJvbCB0aGUgcmVwb3J0aW5nIG91dHB1dCBmcm9tIHRoZSBidWlsZC1jaGFpbiB3aXRoIHRoZSBgdnVlUmVwb3J0YCBwYXJhbWV0ZXIuIFRoaXMgZGVmYXVsdHMgdG8gYG5vbmVgIGFuZCBjYW4gYmUgc2V0IHRvIGBqc29uYCwgYGh0bWxgIG9yIGBib3RoYC4gV2l0aCB0aGlzIGVuYWJsZWQgdGhlIGJ1aWxkLWNoYWluIHdpbGwgb3V0cHV0IGEgcmVwb3J0IGZpbGUgZGVzY3JpYmluZyB0aGUgd2VicGFjayBidW5kbGUuCgpgYGBqc29uCnsKICAidnVlUmVwb3J0IjogImh0bWwiCn0KYGBgCgojIyMgSW50ZXJuYXRpb25hbGl6YXRpb24KTW9zdCBvZiB0aGUgZG9jdW1lbnRhdGlvbiB0ZXh0IGlzIHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIE9wZW5BUEkgc2NoZW1hIGZpbGUsIGhvd2V2ZXIsIHRoZXJlIGFyZSB2YXJpb3VzIHN0cmluZ3MgdGhyb3VnaG91dCB0aGUgcHJvamVjdCB0aGF0IGNhbm5vdCBiZSBzdG9yZWQgd2l0aGluIHRoZSBzY2hlbWEgZmlsZS4gQWxsIG9mIHRoZXNlIHN0cmluZ3MgYXJlIGN1c3RvbWl6YWJsZSBieSBlZGl0aW5nIHRoZSBgaTE4bmAgcGFyYW1ldGVyLgpgYGBqc29uCnsKICAiaTE4biI6IHsKICAgICJBUElfU0RLX0RPQ1VNRU5UQVRJT04iOiAiQVBJIGFuZCBTREsgRG9jdW1lbnRhdGlvbiIsCiAgICAiVkVSU0lPTiI6ICJ2ZXJzaW9uIiwKICAgICJOT19JTkRFUFRIX0RPQ1NfQVZBSUxBQkxFX0VORFBPSU5UIjogIk5vIGluLWRlcHRoIEFQSSBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgdGhpcyBlbmRwb2ludC4iLAogICAgIk5PX0lOREVQVEhfRE9DU19BVkFJTEFCTEVfVEFHIjogIk5vIGluLWRlcHRoIEFQSSBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgdGhpcyBzZWN0aW9uLiIsCiAgICAiQ0xJQ0tfVE9fQ09QWSI6ICJjbGljayB0byBjb3B5IiwKICAgICJDT1BJRUQiOiAiY29waWVkIiwKICAgICJSRVFVRVNUX0JPRFkiOiAiUmVxdWVzdCBCb2R5IiwKICAgICJSRVFVRVNUX1JFU1BPTlNFUyI6ICJSZXF1ZXN0IFJlc3BvbnNlcyIsCiAgICAiREVGSU5JVElPTiI6ICJEZWZpbml0aW9uIiwKICAgICJERUZJTklUSU9OUyI6ICJEZWZpbml0aW9ucyIsCiAgICAiU0VSVkVSIjogIlNlcnZlciIsCiAgICAiTEFOR1VBR0UiOiAiTGFuZ3VhZ2UiLAogICAgIkdFTkVSQVRFRF9VU0lORyI6ICJHZW5lcmF0ZWQgdXNpbmcgT3BlbkRvY3VtZW50ZXIgYnkgJG91ck9wZW5Db2RlIiwKICAgICJIQVZFX0FOWV9RVUVTVElPTlNfQ09OVEFDVCI6ICJIYXZlIGFueSBxdWVzdGlvbnM/IFBsZWFzZSBjb250YWN0IiwKICAgICJVUyI6ICJ1cyIsCiAgICAiT1IiOiAib3IiLAogICAgIlZJQV9FTUFJTCI6ICJ2aWEgZW1haWwiLAogICAgIlZJQV9PVVJfV0VCU0lURSI6ICJ2aWEgb3VyIHdlYnNpdGUiLAogICAgIlRFUk1TX09GX1NFUlZJQ0UiOiAiVGVybXMgb2YgU2VydmljZSIsCiAgICAiU0VORF9VU19BTl9FTUFJTCI6ICJTZW5kIHVzIGFuIGVtYWlsIiwKICAgICJWSVNJVF9PVVJfV0VCU0lURSI6ICJWaXNpdCBvdXIgd2Vic2l0ZSIsCiAgICAiRVhURVJOQUxfRE9DVU1FTlRBVElPTiI6ICJFeHRlcm5hbCBEb2N1bWVudGF0aW9uIiwKICAgICJET0NVTUVOVEFUSU9OIjogIkRvY3VtZW50YXRpb24iCiAgfQp9CmBgYAoKPiBUaGVyZSBpcyBhIHNpbmdsZSBlbmQtdXNlciB2aXNpYmxlIHN0cmluZyB0aGF0IGlzbid0IGNvbmZpZ3VyYWJsZSBpbiB0aGlzIGNvbmZpZy4gVGhlICJMb2FkaW5nIERvY3VtZW50YXRpb24uLi4iIHRleHQgaW4gdGhlIHBhZ2UgdGl0bGUsIGJyaWVmbHkgc2hvd24gZHVyaW5nIHBhZ2UgbG9hZCwgaXMgb25seSBjb25maWd1cmFibGUgdXNpbmcgdGhlICJNZXJnZSBGcm9tIERpcmVjdG9yeSIgcGFyYW1ldGVyLgoKIyMgTGljZW5zZQpMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFBsZWFzZSBzZWUgW0xJQ0VOU0VdKExJQ0VOU0UpIGZvciBtb3JlIGRldGFpbHMuCg== readmeEtag: '"d46fd60db4b32123a2d52108804bee01f5ee1640"' readmeLastModified: Mon, 31 Aug 2020 17:28:44 GMT repositoryId: 284009477 description: >- OpenDocumenter is a automatic documentation generator for OpenAPI v3 schemas. Simply provide your schema file in JSON or YAML, then sit back and enjoy the documentation. created: '2020-07-31T10:32:43Z' updated: '2025-11-13T00:09:15Z' language: Vue archived: false stars: 168 watchers: 2 forks: 11 owner: ouropencode logo: https://avatars.githubusercontent.com/u/7923793?v=4 license: MIT repoEtag: '"5c1dc6a27cb01593d43b19cdcfc43ce0f18e80ea995dfdd131e3a2c4282c6131"' repoLastModified: Thu, 13 Nov 2025 00:09:15 GMT id: 11c244f76ef65a503bffd1ef4663f38a v3_1_link: https://github.com/ouropencode/OpenDocumenter/issues/2 - source: https://openapi.tools/ name: oas3-api-snippet-enricher category: - Documentation - Parsers language: JavaScript repository: https://github.com/cdwv/oas3-api-snippet-enricher/ link: https://github.com/cdwv/oas3-api-snippet-enricher/ source_description: Enrich your existing description documents with generated code samples v3: true repositoryMetadata: base64Readme: >- IyBFbnJpY2ggeW91ciBPcGVuQVBJIDMuMCBzY2hlbWEgd2l0aCBleGFtcGxlcwoKVGhhbmtzIHRvIHRoZSB3b25kZXJmdWwgW3N3YWdnZXItc25pcHBldF0oaHR0cHM6Ly9naXRodWIuY29tL0VyaWtXaXR0ZXJuL3N3YWdnZXItc25pcHBldCkgbW9kdWxlIHlvdSBjYW4gbm93IHNpbXBseSBlbnJpY2ggeW91ciBPcGVuQVBJIHNjaGVtYSB3aXRoIGNvZGUgc2FtcGxlcy4gSXQncyBhcyBlYXN5IGFzIDEuMi4zLgoKMS4gYGBucG0gaW5zdGFsbCBzbmlwcGV0LWVucmljaGVyLWNsaWBgCjIuIGBgLi9ub2RlX21vZHVsZXMvLmJpbi9zbmlwcGV0LWVucmljaGVyLWNsaSAtLWlucHV0PXlvdXJfb2FzLmpzb25gYAoKIyMgRXhhbXBsZSBVc2FnZQoKRW5yaWNoIHlvdXIgT0FTIDMuMCBTY2hlbWEKYGBgCi4vbm9kZV9tb2R1bGVzLy5iaW4vc25pcHBldC1lbnJpY2hlci1jbGkgLS1pbnB1dD1vcGVuYXBpLmpzb24gPiBvcGVuYXBpLXdpdGgtZXhhbXBsZXMuanNvbgpgYGAKQWx0ZXJuYXRpdmVseSB5b3UgY2FuIHBvaW50IGl0IHRvIGEgWUFNTC1mb3JtYXR0ZWQgc3BlYzoKYGBgCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vbWFzdGVyL2V4YW1wbGVzL3YzLjAvcGV0c3RvcmUueWFtbCAtLW91dHB1dCBwZXRzdG9yZS55YW1sCi4vbm9kZV9tb2R1bGVzLy5iaW4vc25pcHBldC1lbnJpY2hlci1jbGkgLS1pbnB1dD1wZXRzdG9yZS55YW1sID4gb3BlbmFwaS13aXRoLWV4YW1wbGVzLmpzb24KYGBgCgpVc2UgdGFyZ2V0cyBvcHRpb25zIHRvIHNwZWNpZmljIGxhbmd1YWdlczoKYGBgCi4vbm9kZV9tb2R1bGVzLy5iaW4vc25pcHBldC1lbnJpY2hlci1jbGkgLS10YXJnZXRzPSJub2RlX3JlcXVlc3Qsc2hlbGxfY3VybCIgLS1pbnB1dD1vcGVuYXBpLmpzb24gPiBvcGVuYXBpLXdpdGgtZXhhbXBsZXMuanNvbgpgYGAKClVzZSBbUmVEb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jLykgdG8gYnVpbGQgYmVhdXRpZnVsIEFQSSBkb2M6CmBgYApyZWRvYy1jbGkgYnVuZGxlIG9wZW5hcGktd2l0aC1leGFtcGxlcy5qc29uCmBgYAoKZW5qb3kuCgohW1JlRG9jIEFQSSBkb2N1bWVudGF0aW9uIHdpdGggY29kZSBzYW1wbGVzXShpbWFnZS5wbmcpCgpDb250cmlidXRpbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkNvbnRyaWJ1dGlvbnMgYXJlIG1vc3Qgd2VsY29tZSEKCgpMaWNlbnNlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpNSVQKCk1haW50YWluZXJzCj09PT09PT09PT09CgpbPGltZyB3aWR0aD0iMzAwIiB0aXRsZT0iQ29kZXdhdmUuZXUiIHNyYz0iY2R3di1sb2dvLW5ldy5zdmciPl0oaHR0cDovL2NvZGV3YXZlLmV1KQoKUHJvamVjdCBpcyBjdXJyZW50bHkgbWFpbnRhaW5lZCwgaW4gb3VyIHNwYXJlIHRpbWUsIGJ5IFtjb2Rld2F2ZS5ldV0oaHR0cDovL2NvZGV3YXZlLmV1KSBhbmQgYSBncm93aW5nIG51bWJlciBvZiBDb250cmlidXRvcnMhCg== readmeEtag: '"2e480b8b5b9a3c8516169de7cef40e16dade1c06"' readmeLastModified: Mon, 11 Dec 2023 12:08:59 GMT repositoryId: 220618185 description: Enrich your OpenAPI 3.0 JSON with code samples created: '2019-11-09T09:13:16Z' updated: '2025-12-19T14:23:25Z' language: JavaScript archived: false stars: 97 watchers: 8 forks: 14 owner: cdwv logo: https://avatars.githubusercontent.com/u/6742687?v=4 license: MIT repoEtag: '"07f7ab831d4772605944d76b1543ab16c3be38090dabb5f8cb226bfbdcf2de06"' repoLastModified: Fri, 19 Dec 2025 14:23:25 GMT foundInMaster: true id: 90d603135b448f5444c654b9aba124e2 - source: https://openapi.tools/ name: MrinDoc category: Documentation source_description: OpenAPI description document viewer. link: https://mrin9.github.io/OpenAPI-Viewer/ repository: https://github.com/mrin9/openapi-viewer language: Vue.JS v2: true v3: true repositoryMetadata: base64Readme: >- PGltZyBhbHQ9Ik1yaW5Eb2MgbG9nbyIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vbXJpbjkvT3BlbkFQSS1WaWV3ZXIvYmxvYi9tYXN0ZXIvcHVibGljL2ltYWdlcy9sZWF2ZXNfbG9nbzEuc3ZnIiB3aWR0aD0iNjBweCIgLz4KCiMgTXJpbkRvYwpBbiBPcGVuQVBJIDMuMCBhbmQgMi4wIFNwZWMgdmlld2VyIHdpdGggYnVpbHQgaW4gY29uc29sZSAKCiMjIyBbRGVtb10oaHR0cHM6Ly9tcmluOS5naXRodWIuaW8vT3BlbkFQSS1WaWV3ZXIpCgojIyMgQ2hlY2tvdXQgUmFwaURvYyAtIEFub3RoZXIgcHJvamVjdCBmb3IgVmlld2luZyBPcGVuQVBJIHNwZWMgdXNpbmcgd2ViLUNvbXBvbm5ldAojIyMjIFtDaGVja291dCBSYXBpRG9jXShodHRwczovL21yaW45LmdpdGh1Yi5pby9SYXBpRG9jKQoKIyBGZWF0dXJlcwotIFN1cHBvcnRzIFN3YWdnZXIgVjIuMCBhbmQgT3BlbkFQSSAzLjAKLSBTdXBwb3J0cyBzZWFyY2hpbmcgb2YgZW5kLXBvaW50cyAocGF0aHMpCi0gQnVpbHQgSW4gY29uc29sZSB0byB0cnkgb3V0IEFQSXMKLSBSZXNwb25zaXZlIChzdXBwb3J0IGZvciBkZXNrdG9wIGFuZCB0YWJsZXRzKQotIFN1cHBvcnRzIEF1dGhlbnRpY2F0aW9uCiAgLSBPQXV0aDIKICAtIEFQSSBLZXkoVG9rZW4pCiAgLSBIVFRQIEJlYXJlcgogIC0gSFRUUCBCYXNpYwotIFVYIGZyaWVuZGx5LgogIC0gQWxsIEVuZHBvaW50cyBwYXRocyBhcmUgY2xlYW5seSBwcmVzZW50ZWQKICAtIENsZWFyIHNlcGVyYXRpb24gb2YgUmVxdWVzdCBhbmQgUmVzcG9uc2UgaW5mbyBsYWlkIG91dCBzaWRlIGJ5IHNpZGUgaW4gYSB0d28gY29sdW0gbGF5b3V0CiAgLSBMZXNzZXIgY2xpY2tzIHRvIGRlYWwgd2l0aC4gQWxsIHNjaGVtYSBtb2RlbHMsIHJlc3BvbnNlLWpzb25zIGFuZCBleGFtcGxlcyBhcmUgZXhwYW5kZWQgYnkgZGVmYXVsdHMgd2hpY2ggZWxpbWluYXRlcyB0aGUgbmVlZCBvZiBjbGljayBhbmQgcmV2ZWFsIGVhY2ggbGV2ZWwuCiAgLSBXaGlsZSB1c2luZyBBUEkgY29uc29sZSwgcmVxdWVzdCBkYXRhIGlzIHByZS1maWxsZWQgYmFzZWQgb24gc2NoZW1hCiAgLSBOZWVkcyBqdXN0IG9uZSBjbGljayB0byB0cnkgb3V0IGxpdmUgQVBJcwoKCiMjIFByb2plY3QgQnVpbGQKYGBgCnlhcm4gaW5zdGFsbAp5YXJuIHJ1biBidWlsZCAKYGBgCiMjIyBTY3JlZW5zaG90cwojIyMjIEVuZFBvaW50IExpc3RpbmdzCjxrYmQ+CiAgICA8aW1nIHNyYz0iL3NjcmVlbnNob3RzL2VuZC1wb2ludC1saXN0aW5nLnBuZz9yYXc9dHJ1ZSI+Cjwva2JkPgoKIyMjIyBSZXF1ZXN0L1Jlc3BvbnNlCkxhaWQgb3V0IGluIGEgdHdvIGNvbHVtIGZvciBlYXN5IHZpZXcgJiBjb21wYXJlIAo8a2JkPgogICAgPGltZyBzcmM9Ii9zY3JlZW5zaG90cy9yZXF1ZXN0LXJlc3BvbnNlLnBuZz9yYXc9dHJ1ZSI+Cjwva2JkPgoKIyMjIyBTY2hlbWEgVmlldwpBbGwgUmVxdWVzdC9SZXNwb25zZSBzY2hlbWEgYW5kIFJlc3BvbnNlIEpTT05zIGFyZSBleHBhbmRlZCBieSBkZWZhdWx0LCBzbyB0aGF0IHlvdSBkb250IGhhdmUgdG8gY2xpY2sgYW5kIHJldmVhbCBlYWNoIGxldmVsIGZvciBlYXN5IGJyb3dzaW5nIGFuZCByZWFkCjxrYmQ+CiAgICA8aW1nIHNyYz0iL3NjcmVlbnNob3RzL3Jlc3BvbnNlLXNjaGVtYS5wbmc/cmF3PXRydWUiPgo8L2tiZD4KCiMjIyMgQ29uc29sZQpCdWlsdCBpbiBjb25zb2xlLCBmaWVsZHMgYXJlIHByZS1maWxsZWQgd2l0aCB2YWx1ZXMgaWYgZXhpc3QgaW4gc3BlYywgcmVxdWVzdCBib2R5IGlzIGdlbmVyYXRlZCBhbmQgZmlsbGVkIGJhc2VkIG9uIHNjaGVtYSwgYWxsb3dpbmcgeW91IHRvIHF1aWNrbHkgdHJ5IG91dCB0aGUgZW5kLXBvaW50IHdpdGggYSBzaW5nbGUgY2xpY2sgCjxrYmQ+CiAgICA8aW1nIHNyYz0iL3NjcmVlbnNob3RzL2NvbnNvbGUucG5nP3Jhdz10cnVlIj4KPC9rYmQ+CgojIyMjIEF1dGhlbnRpY2F0aW9uIFN1cHBvcnQKQWxsIHRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGFyZSBzdXBwb3J0ZWQuIEFsb25nIHdpdGggaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byB1c2UgaXQKPGtiZD4KICAgIDxpbWcgc3JjPSIvc2NyZWVuc2hvdHMvYXV0aGVudGljYXRpb24xLnBuZz9yYXc9dHJ1ZSI+Cjwva2JkPgo8a2JkPgogICAgPGltZyBzcmM9Ii9zY3JlZW5zaG90cy9hdXRoZW50aWNhdGlvbjIucG5nP3Jhdz10cnVlIj4KPC9rYmQ+Cgo= readmeEtag: '"1c4738347c5e8bb21cf1eeceb9278ddd435882e0"' readmeLastModified: Thu, 28 Feb 2019 23:26:40 GMT repositoryId: 159911001 description: OpenApi viewer Implemented using Vue created: '2018-12-01T05:06:18Z' updated: '2025-11-17T10:45:04Z' language: Vue archived: false stars: 105 watchers: 1 forks: 19 owner: mrin9 logo: https://avatars.githubusercontent.com/u/5056899?v=4 repoEtag: '"2787ba514fb2ae3ae7f0f0d5552d9de4f42b32839fd43997d6779cfb1b457703"' repoLastModified: Mon, 17 Nov 2025 10:45:04 GMT foundInMaster: true id: e8e8917a5716d2c743ba73a1b7ba57c4 - source: - https://openapi.tools/ - openapi3 tags name: RapiPdf category: Documentation source_description: Custom Element to generate PDF from OpenAPI descriptions. link: https://mrin9.github.io/RapiPdf repository: https://github.com/mrin9/rapipdf language: Web Component v2: true v3: true repositoryMetadata: base64Readme: >- PGltZyBhbHQ9Ik1yaW5Eb2MgbG9nbyIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vbXJpbjkvUmFwaVBkZi9ibG9iL21hc3Rlci9sb2dvLnBuZyIgd2lkdGg9IjYwcHgiIC8+CgoKPHAgYWxpZ249ImNlbnRlciI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ibHVlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSIvPgogICAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3NpemUvbXJpbjkvcmFwaXBkZi9kaXN0L3JhcGlwZGYtbWluLmpzLnN2Zz9jb2xvckI9Ymx1ZSZsYWJlbD1taW5pZmllZCZzdHlsZT1mbGF0LXNxdWFyZSI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvc2l6ZS9tcmluOS9yYXBpcGRmL2Rpc3QvcmFwaXBkZi1taW4uanMuZ3ouc3ZnP2NvbG9yQj1ibHVlJmxhYmVsPXppcCZzdHlsZT1mbGF0LXNxdWFyZSI+CjwvcD4KCiMgUmFwaVBERgpDdXN0b20gZWxlbWVudCBmb3IgT3Blbi1BUEkgdG8gUERGIGdlbmVyYXRpb24KCiMjIEZlYXR1cmVzCi0gU3VwcG9ydHMgU3dhZ2dlciAyLjAgYW5kIE9wZW5BUEkgMy4wCi0gR2VuZXJhdGUgUERGIHVzaW5nIFdlYi1Db21wb25lbnQKLSBXb3JrcyB3aXRoIGFueSBmcmFtZXdvcmsgb3Igd2l0aCBubyBmcmFtZXdvcmsKLSBQbGVudHkgb2YgY3VzdG9taXppbmcgb3B0aW9ucywgaW5jbHVkaW5nIHNlbGVjdGlvbiBvZiBicmFuZCBjb2xvcnMKLSBTdXBwb3J0ZWQgb24gQ2hyb21lLCBGaXJlRm94IGFuZCBTYWZhcmkuIChOb3QgeWV0IHRlc3RlZCBvbiBFZGdlKQoKIyMgRG9jdW1lbnRhdGlvbgpbQ2hlY2sgb3V0IHRoZSB1c2FnZSBhbmQgZXhhbXBsZXNdKGh0dHBzOi8vbXJpbjkuZ2l0aHViLmlvL1JhcGlQZGYvKQoKIyMgQnVpbGQgUHJvY2VzcwpXZSByZWNvbW1lbmQgYHlhcm5gIG92ZXIgYG5wbWAgYXMgd2UgdXNlIHlhcm4gW3Jlc29sdXRpb25zXShodHRwczovL3lhcm5wa2cuY29tL2xhbmcvZW4vZG9jcy9zZWxlY3RpdmUtdmVyc2lvbi1yZXNvbHV0aW9ucy8pIHRvIGtlZXAgdGhlIGJ1bmRsZSBzaXplIHNtYWxsZXIuIEFzIG9mIHRoaXMgd3JpdGluZyB0aGlzIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCBpbiBucG0gbmF0aXZlbHkKYGBgYmFzaAojIENsb25lIC8gRG93bmxvYWQgdGhlIHByb2plY3QgdGhlbgp5YXJuIGluc3RhbGwKCiMgYnVpbGQgd2lsbCBnZW5lcmF0ZSByYXBpZG9jLW1pbi5qcywgdGhpcyBpcyB0aGUgb25seSBmaWxlIHlvdSB3aWxsIG5lZWQuCiMgdXNlIGl0IGluIHRoZSBzY3JpcHQgdGFnIG9mIHlvdXIgaHRtbCA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyYXBpZG9jLW1pbi5qcyI+PC9zY3JpcHQ+PC9ib2R5Pgp5YXJuIGJ1aWxkCgojIGZvciBkZXZlbG9wZW1lbnQgdXNlIHlhcm4gc2VydmUgKHRoaXMgd2lsbCBzdGFydCBhbiB3ZWJzZXJ2ZXIgYXQgcG9ydCA4MDgwLCB0aGVuIG5hdmlnYXRlIHRvIGxvY2FsaG9zdDo4MDgwKQp5YXJuIHNlcnZlCgojIGFsdGVybmF0aXZlIHRvIHlhcm4gc2VydmU6ICh0aGlzIHdpbGwgc3RhcnQgYW4gd2Vic2VydmVyIGF0IHBvcnQgODA4MCBsaXN0ZW5pbmcgdG8gYWxsIGFkYXB0ZXJzKQp5YXJuIHNlcnZlLWV2ZXJ5b25lCmBgYA== readmeEtag: '"321c11c632be27a5e95bf6eac4cf7441b3d4f28f"' readmeLastModified: Tue, 28 Jul 2020 07:01:44 GMT repositoryId: 176074336 description: PDF generation from OpenAPI / Swagger Spec created: '2019-03-17T08:21:39Z' updated: '2026-02-04T01:07:07Z' language: JavaScript archived: false stars: 306 watchers: 5 forks: 109 owner: mrin9 logo: https://avatars.githubusercontent.com/u/5056899?v=4 license: MIT repoEtag: '"54c52cb22aefbf0ed744f08f9fbe12d37d8d119cb919c38b164052cfe4d409f0"' repoLastModified: Wed, 04 Feb 2026 01:07:07 GMT foundInMaster: true id: 614c2b5cc8e9e45d47072d21fa7d607f - source: https://openapi.tools/ name: Stoplight Docs category: Documentation link: https://stoplight.io/api-documentation language: SaaS source_description: >- Create beautiful, customizable, interactive API documentation generated from OpenAPI, integrated with Stoplight Studio. v2: true v3: true v3_1: true foundInMaster: true id: a9510ff30812653a4089e453440ac0b7 - source: - https://openapi.tools/ - openapi3 tags name: jekyll-openapi category: - Documentation - Server Implementations link: https://github.com/robertlove/jekyll-openapi language: Jekyll source_description: >- An OpenAPI 3 documentation website generator built with Jekyll for use on GitHub Pages. v3: true repository: https://github.com/robertlove/jekyll-openapi repositoryMetadata: base64Readme: >- IyBKZWt5bGwvT3BlbkFQSQoKIVtPQVNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvT0FTLTMuMC4zLWJyaWdodGdyZWVuLnN2ZykKCioqTm90ZToqKiBUaGlzIHByb2plY3QgaXMgKipub3QgZmluaXNoZWQqKiBhbmQgaXMgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LiBDb250cmlidXRpb25zIHdlbGNvbWUhCgpKZWt5bGwvT3BlbkFQSSBpcyBhbiBPcGVuQVBJIDMgZG9jdW1lbnRhdGlvbiB3ZWJzaXRlIGdlbmVyYXRvciBidWlsdCB3aXRoIEpla3lsbCBmb3IgdXNlIG9uIEdpdEh1YiBQYWdlcy4KCltKZWt5bGxdKGh0dHBzOi8vamVreWxscmIuY29tLykgaXMgYSBzdGF0aWMgd2Vic2l0ZSBnZW5lcmF0b3IgdGhhdCB3b3JrcyBzZWFtbGVzc2x5IHdpdGggW0dpdEh1YiBQYWdlc10oaHR0cHM6Ly9wYWdlcy5naXRodWIuY29tLyksIHdoaWxzdCB0aGUgW09wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24pIChPQVMpIGRlZmluZXMgYSBzdGFuZGFyZCwgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UtYWdub3N0aWMgaW50ZXJmYWNlIGRlc2NyaXB0aW9uIGZvciBSRVNUIEFQSXMuIFB1dCB0aGlzIGFsbCB0b2dldGhlciBhbmQgeW91IGdldCBhIGZhc3QsIHNlY3VyZSBhbmQgaGlnaGx5IGN1c3RvbWlzYWJsZSBzdGF0aWMgd2Vic2l0ZSB3aXRoIGZyZWUgaG9zdGluZyBmb3IgeW91ciBBUEkgZG9jdW1lbnRhdGlvbi4KCiMjIFRhYmxlIG9mIENvbnRlbnRzCgotIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCi0gW1VzYWdlXSgjdXNhZ2UpCi0gW0NvbnRyaWJ1dGluZ10oI2NvbnRyaWJ1dGluZykKLSBbQ3JlZGl0c10oI2NyZWRpdHMpCi0gW0xpY2Vuc2VdKCNsaWNlbnNlKQoKIyMgSW5zdGFsbGF0aW9uCgpCZWZvcmUgeW91IGJlZ2luLCBlbnN1cmUgeW91J3ZlIGluc3RhbGxlZCBbSmVreWxsXShodHRwczovL2pla3lsbHJiLmNvbS8pLiBUaGVuOgoKMS4gYCQgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9yb2JlcnRsb3ZlL2pla3lsbC1vcGVuYXBpLmdpdGAKMS4gYCQgY2QgamVreWxsLW9wZW5hcGlgCjEuIGAkIGJ1bmRsZSBpbnN0YWxsYAoxLiBgJCBidW5kbGUgZXhlYyBqZWt5bGwgc2VydmVgCgpJZiBhbGwgd2VudCB3ZWxsLCB5b3UnbGwgYmUgYWJsZSB0byB2aWV3IHlvdXIgbmV3IEpla3lsbC9PcGVuQVBJIHdlYnNpdGUgbG9jYWxseSBieSBnb2luZyB0byBodHRwOi8vMTI3LjAuMC4xOjQwMDAvamVreWxsLW9wZW5hcGkvIGluIHlvdXIgYnJvd3Nlci4KCiMjIFVzYWdlCgpVcGRhdGUgYF9kYXRhL29wZW5hcGkuanNvbmAgd2l0aCB5b3VyIG93biBBUEkgZGVzY3JpcHRpb24sIHJlZnJlc2ggeW91ciBicm93c2VyLCBhbmQgdm9pbMOgIQoKKipOb3RlOioqIFRoaXMgcHJvamVjdCBpcyBidWlsdCB3aXRoIFtKZWt5bGwvQm9vdHN0cmFwXShodHRwczovL2dpdGh1Yi5jb20vcm9iZXJ0bG92ZS9qZWt5bGwtYm9vdHN0cmFwKS4gU2VlIFtKZWt5bGwvQm9vdHN0cmFwIFVzYWdlXShodHRwczovL2dpdGh1Yi5jb20vcm9iZXJ0bG92ZS9qZWt5bGwtYm9vdHN0cmFwI3VzYWdlKSBmb3IgbW9yZSB1c2FnZSBpbmZvcm1hdGlvbiAtIGluY2x1ZGluZyBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGNoYW5nZSB0aGUgbG9vayBhbmQgZmVlbCBvZiB5b3VyIEFQSSBkb2N1bWVudGF0aW9uLgoKIyMgQ29udHJpYnV0aW5nCgpTZWUgW0NvbnRyaWJ1dGluZ10oaHR0cHM6Ly9naXRodWIuY29tL3JvYmVydGxvdmUvLmdpdGh1Yi9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQpLgoKIyMgQ3JlZGl0cwoKU2VlIFtDb250cmlidXRvcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9yb2JlcnRsb3ZlL2pla3lsbC1vcGVuYXBpL2dyYXBocy9jb250cmlidXRvcnMpLgoKIyMgTGljZW5zZQoKU2VlIFtMSUNFTlNFXShMSUNFTlNFKS4K readmeEtag: '"afbe1ae786fa174dab9c5405965eae629c46b695"' readmeLastModified: Fri, 11 Jun 2021 00:22:28 GMT repositoryId: 188228581 description: >- An OpenAPI 3 documentation website generator built with Jekyll for use on GitHub Pages created: '2019-05-23T12:20:07Z' updated: '2026-01-21T21:42:47Z' language: HTML archived: true stars: 42 watchers: 3 forks: 7 owner: robertlove logo: https://avatars.githubusercontent.com/u/1000773?v=4 license: Apache-2.0 repoEtag: '"524e1d38afb58b5118fd3bdbc9c25fec5d081b67d79a375ecab2c7837f6b54b7"' repoLastModified: Wed, 21 Jan 2026 21:42:47 GMT foundInMaster: true id: 5c30d43528b7d785fe7aa3f05bb9f9a3 - source: - https://openapi.tools/ - openapi3 tags name: Spot category: - DSL - Parsers repository: https://github.com/airtasker/spot language: TypeScript source_description: A concise, developer-friendly way to describe your API contract. v2: true v3: true repositoryMetadata: base64Readme: >- IyBTcG90CgoqKlNwb3QqKiAoXyJTaW5nbGUgUG9pbnQgT2YgVHJ1dGgiXykgaXMgYSBjb25jaXNlLCBkZXZlbG9wZXItZnJpZW5kbHkgd2F5IHRvIGRlc2NyaWJlIHlvdXIgQVBJIGNvbnRyYWN0LgoKTGV2ZXJhZ2luZyB0aGUgVHlwZVNjcmlwdCBzeW50YXgsIGl0IGxldHMgeW91IGRlc2NyaWJlIHlvdXIgQVBJIGFuZCBnZW5lcmF0ZSBvdGhlciBBUEkgY29udHJhY3QgZm9ybWF0cyB5b3UgbmVlZCAoT3BlbkFQSSwgU3dhZ2dlciwgSlNPTiBTY2hlbWEpLgoKWW91IGRvbid0IG5lZWQgdG8gdXNlIFR5cGVTY3JpcHQgaW4geW91ciBjb2RlYmFzZSB0byBiZW5lZml0IGZyb20gdXNpbmcgU3BvdC4KCkV4YW1wbGUgb2YgYW4gQVBJIGRlZmluaXRpb24gZmlsZSBgYXBpLnRzYCB3aGljaCBkZWZpbmVzIGEgc2luZ2xlIGBQT1NUYCBlbmRwb2ludCB0byBjcmVhdGUgYSB1c2VyOgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgeyBhcGksIGVuZHBvaW50LCByZXF1ZXN0LCByZXNwb25zZSwgYm9keSB9IGZyb20gIkBhaXJ0YXNrZXIvc3BvdCI7CgpAYXBpKHsKICBuYW1lOiAiTXkgQVBJIgp9KQpjbGFzcyBBcGkge30KCkBlbmRwb2ludCh7CiAgbWV0aG9kOiAiUE9TVCIsCiAgcGF0aDogIi91c2VycyIKfSkKY2xhc3MgQ3JlYXRlVXNlciB7CiAgQHJlcXVlc3QKICByZXF1ZXN0KEBib2R5IGJvZHk6IENyZWF0ZVVzZXJSZXF1ZXN0KSB7fQoKICBAcmVzcG9uc2UoeyBzdGF0dXM6IDIwMSB9KQogIHJlc3BvbnNlKEBib2R5IGJvZHk6IENyZWF0ZVVzZXJSZXNwb25zZSkge30KfQoKaW50ZXJmYWNlIENyZWF0ZVVzZXJSZXF1ZXN0IHsKICBmaXJzdE5hbWU6IHN0cmluZzsKICBsYXN0TmFtZTogc3RyaW5nOwp9CgppbnRlcmZhY2UgQ3JlYXRlVXNlclJlc3BvbnNlIHsKICBmaXJzdE5hbWU6IHN0cmluZzsKICBsYXN0TmFtZTogc3RyaW5nOwogIHJvbGU6IHN0cmluZzsKfQpgYGAKCiMjIEdldHRpbmcgU3RhcnRlZAoKR2V0IHN0YXJ0ZWQgd2l0aCB3cml0aW5nIFNwb3QgY29udHJhY3RzIC0gW1Nwb3QgR3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9haXJ0YXNrZXIvc3BvdC93aWtpL1Nwb3QtR3VpZGUpCgpGb3IgYWxsIGF2YWlsYWJsZSBzeW50YXgsIHNlZSBbU3BvdCBTeW50YXhdKGh0dHBzOi8vZ2l0aHViLmNvbS9haXJ0YXNrZXIvc3BvdC93aWtpL1Nwb3QtU3ludGF4KQoKIyMjIFJlcXVpcmVtZW50cwoKLSBOb2RlLmpzID49IDE4LjEyLjAKLSBwbnBtIChyZWNvbW1lbmRlZCkgb3IgbnBtCgojIyMgSW5zdGFsbGF0aW9uCgpXaXRoIFtwbnBtXShodHRwczovL3BucG0uaW8vKSBpbnN0YWxsZWQgYW5kIGluaXRpYWxpemVkIGFkZCBgQGFpcnRhc2tlci9zcG90YCB0byB5b3VyIHByb2plY3Q6CgpgYGBzaApwbnBtIGFkZCBAYWlydGFza2VyL3Nwb3QKYGBgCgpZb3UgY2FuIHBhc3MgdGhlIGRlZmluaXRpb24gYWJvdmUgdG8gYSBnZW5lcmF0b3IgYnkgc2ltcGx5IHJ1bm5pbmc6CgpgYGBzaApucHggQGFpcnRhc2tlci9zcG90IGdlbmVyYXRlIC0tY29udHJhY3QgYXBpLnRzCmBgYAoKIyBXaHkgd2UgYnVpbHQgU3BvdAoKQXQgZmlyc3QgZ2xhbmNlLCB5b3UgbWF5IHdvbmRlciB3aHkgd2UgYm90aGVyZWQgYnVpbGRpbmcgU3BvdC4gV2h5IG5vdCB1c2UgT3BlbkFQSSAoZm9ybWVseSBrbm93biBhcyBTd2FnZ2VyKSB0byBkZXNjcmliZSB5b3VyIEFQST8KCkF0IHRoZSBjb3JlLCB3ZSBidWlsdCBTcG90IGJlY2F1c2Ugd2Ugd2FudGVkIGEgYmV0dGVyIGRldmVsb3BlciBleHBlcmllbmNlLgoKIyMgV3JpdGluZyBjb250cmFjdHMKCk9wZW5BUEkgZG9jdW1lbnRzIGFyZSBzdG9yZWQgYXMgWUFNTCBmaWxlcywgZm9sbG93aW5nIGEgdmVyeSBzcGVjaWZpYyBzY2hlbWEuIFlvdSB3b27igJl0IGtub3cgdGhhdCB5b3UgdXNlZCB0aGUgd3JvbmcgZmllbGQgbmFtZSBvciBmb3Jnb3QgdG8gd3JhcCBhIHR5cGUgZGVmaW5pdGlvbiBpbnRvIGEgc2NoZW1hIG9iamVjdCB1bmxlc3MgeW91IHJ1biBhIGdvb2QgT3BlbkFQSSBsaW50ZXIuIE1vc3QgZGV2ZWxvcGVycyB3aG8gYXJlbuKAmXQgaW50aW1hdGVseSBmYW1pbGlhciB3aXRoIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gZW5kIHVwIHVzaW5nIGEgdmlzdWFsIGVkaXRvciBzdWNoIGFzIFN3YWdnZXIgRWRpdG9yIG9yIFN0b3BsaWdodC4KClNpbmNlIFNwb3QgbGV2ZXJhZ2VzIHRoZSBUeXBlU2NyaXB0IHN5bnRheCwgYWxsIHlvdSBuZWVkIGlzIHRvIHdyaXRlIHZhbGlkIFR5cGVTY3JpcHQgY29kZS4gWW91ciBlZGl0b3Igd2lsbCBpbW1lZGlhdGVseSB0ZWxsIHlvdSB3aGVuIHlvdXIgY29kZSBpcyBpbnZhbGlkLiBJdCB3aWxsIHRlbGwgeW91IHdoYXTigJlzIG1pc3NpbmcsIGFuZCB5b3UgZXZlbiBnZXQgYXV0b2NvbXBsZXRlIGZvciBmcmVlLiBXZSBjb3VsZCBoYXZlIHBpY2tlZCBhbnkgb3RoZXIgdHlwZWQgbGFuZ3VhZ2XigJRUeXBlU2NyaXB0IGp1c3QgaGFwcGVuZWQgdG8gYmUgb25lIG9mIHRoZSBtb3N0IGNvbmNpc2UgYW5kIHViaXF1aXRvdXMgZm9yIHVzLgoKIyMgUmV2aWV3aW5nIGNvbnRyYWN0cwoKV2UgYmVsaWV2ZSB0aGF0IEFQSSBjb250cmFjdHMgc2hvdWxkIGJlIGNoZWNrZWQgaW50byBHaXQsIG9yIHdoaWNoZXZlciBjb2RlIHZlcnNpb25pbmcgc3lzdGVtIHlvdSB1c2UuIEluIGFkZGl0aW9uLCBBUEkgY29udHJhY3RzIHNob3VsZCBiZSBzeXN0ZW1hdGljYWxseSBwZWVyIHJldmlld2VkLiBJdOKAmXMgZmFyIHRvbyBlYXN5IGZvciBhIGJhY2tlbmQgZW5naW5lZXIgdG8gaW5jb3JyZWN0bHkgYXNzdW1lIHdoYXQgY2xpZW50IGVuZ2luZWVycyBleHBlY3QgZnJvbSBhbiBlbmRwb2ludC4KCkJlY2F1c2Ugb2YgdGhlaXIgY29tcGxleCBuZXN0ZWQgc3RydWN0dXJlIGFuZCB0aGUgcmljaG5lc3Mgb2YgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiwgT3BlbkFQSSBkb2N1bWVudHMgY2FuIGJlIGRpZmZpY3VsdCB0byByZXZpZXcgaW4gYSBwdWxsIHJlcXVlc3QuIFRoZXnigJlyZSBncmVhdCBmb3IgbWFjaGluZXMsIGJ1dCBub3QgYWx3YXlzIGZvciBodW1hbnMuCgpTcG90IGFpbXMgdG8gYmUgYXMgaHVtYW4tcmVhZGFibGUgYXMgcG9zc2libGUuIFdl4oCZdmUgc2VlbiBkZXZlbG9wZXJzIGJlY29tZSBhIGxvdCBtb3JlIGVuZ2FnZWQgaW4gZGlzY3Vzc2lvbnMgb24gcHVsbCByZXF1ZXN0cyBmb3IgU3BvdCBjb250cmFjdHMsIGNvbXBhcmVkIHRvIG91ciBwcmV2aW91cyBPcGVuQVBJIGRvY3VtZW50cy4KCiMjIEludGVyb3BlcmFiaWxpdHkgd2l0aCB2YXJpb3VzIGZvcm1hdHMKCkRlcGVuZGluZyBvbiB3aGF0IHlvdSdyZSB0cnlpbmcgdG8gYWNoaWV2ZSAodGVzdGluZywgZG9jdW1lbnRhdGlvbiwgY2xpZW50IGNvZGUgZ2VuZXJhdGlvbuKApiksIHlvdSdsbCBmaW5kIHRvb2xzIHRoYXQgb25seSB3b3JrIHdpdGggT3BlbkFQSSAyIChTd2FnZ2VyKSwgYW5kIG5ld2VyIHRvb2xzIHRoYXQgb25seSBzdXBwb3J0IE9wZW5BUEkgMy4gWW91IG1heSBhbHNvIGZpbmQgdG9vbHMgZm9yIGEgZGlmZmVyZW50IEFQSSBlY29zeXN0ZW0gc3VjaCBhcyBKU09OIFNjaGVtYSBvciBBUEkgQmx1ZXByaW50LgoKV2UgYnVpbHQgU3BvdCB3aXRoIHRoaXMgaW4gbWluZC4gSW5zdGVhZCBvZiBoYXZpbmcgdG8ganVnZ2xlIHZhcmlvdXMgQVBJIGZvcm1hdCBjb252ZXJ0ZXJzLCBTcG90IGNhbiBnZW5lcmF0ZSBldmVyeSBtYWpvciBBUEkgZG9jdW1lbnQgZm9ybWF0LiBUaGlzIGlzIHdoeSB3ZSBjYWxsZWQgaXQgIlNpbmdsZSBQb2ludCBPZiBUcnV0aCIuCgpbIVtvY2xpZl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jbGktb2NsaWYtYnJpZ2h0Z3JlZW4uc3ZnKV0oaHR0cHM6Ly9vY2xpZi5pbykKWyFbVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYWlydGFza2VyL3Nwb3Quc3ZnKV0oaHR0cHM6Ly9ucG1qcy5vcmcvcGFja2FnZS9AYWlydGFza2VyL3Nwb3QpClshW0NpcmNsZUNJXShodHRwczovL2NpcmNsZWNpLmNvbS9naC9haXJ0YXNrZXIvc3BvdC90cmVlL21hc3Rlci5zdmc/c3R5bGU9c2hpZWxkKV0oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvYWlydGFza2VyL3Nwb3QvdHJlZS9tYXN0ZXIpClshW0Rvd25sb2Fkcy93ZWVrXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kdy9AYWlydGFza2VyL3Nwb3Quc3ZnKV0oaHR0cHM6Ly9ucG1qcy5vcmcvcGFja2FnZS9AYWlydGFza2VyL3Nwb3QpClshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2wvQGFpcnRhc2tlci9zcG90LnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9haXJ0YXNrZXIvc3BvdC9ibG9iL21hc3Rlci9wYWNrYWdlLmpzb24pCgo8IS0tIHRvYyAtLT4KKiBbU3BvdF0oI3Nwb3QpCiogW1doeSB3ZSBidWlsdCBTcG90XSgjd2h5LXdlLWJ1aWx0LXNwb3QpCiogW1VzYWdlXSgjdXNhZ2UpCiogW0NvbW1hbmRzXSgjY29tbWFuZHMpCiogW1JlbGVhc2VzXSgjcmVsZWFzZXMpCjwhLS0gdG9jc3RvcCAtLT4KCiMgVXNhZ2UKClRvIGdldCBzdGFydGVkIGFuZCBzZXQgdXAgYW4gQVBJIGRlY2xhcmF0aW9uIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgcnVuOgoKYGBgCm5weCBAYWlydGFza2VyL3Nwb3QgaW5pdApgYGAKCllvdSBjYW4gdGhlbiBydW4gYSBnZW5lcmF0b3Igd2l0aDoKCmBgYApucHggQGFpcnRhc2tlci9zcG90IGdlbmVyYXRlIC0tY29udHJhY3QgYXBpLnRzCmBgYAoKIyMgSW4gTWVtb3J5IFVzYWdlCgpgYGB0cwppbXBvcnQgeyBTcG90IH0gZnJvbSAiQGFpcnRhc2tlci9zcG90IjsKCmNvbnN0IGNvbnRyYWN0ID0gU3BvdC5wYXJzZUNvbnRyYWN0KCIuL2FwaS50cyIpOwpjb25zdCBvcGVuQXBpID0gU3BvdC5PcGVuQXBpMy5nZW5lcmF0ZU9wZW5BUEkzKGNvbnRyYWN0KTsKCmNvbnNvbGUubG9nKG9wZW5BcGkpOwoKLyoKewogIG9wZW5hcGk6ICczLjAuMicsCiAgaW5mbzogeyB0aXRsZTogJ215LWFwaScsIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsIHZlcnNpb246ICcwLjAuMCcgfSwKICBwYXRoczogeyAnL3VzZXJzJzogeyBwb3N0OiBbT2JqZWN0XSB9IH0sCiAgY29tcG9uZW50czogewogICAgc2NoZW1hczogeyBDcmVhdGVVc2VyUmVxdWVzdDogW09iamVjdF0sIENyZWF0ZVVzZXJSZXNwb25zZTogW09iamVjdF0gfSwKICAgIHNlY3VyaXR5U2NoZW1lczogdW5kZWZpbmVkCiAgfSwKICBzZWN1cml0eTogdW5kZWZpbmVkCn0KKi8KYGBgCgojIENvbW1hbmRzCgo8IS0tIGNvbW1hbmRzIC0tPgoqIFtgc3BvdCBjaGVja3N1bSBTUE9UX0NPTlRSQUNUYF0oI3Nwb3QtY2hlY2tzdW0tc3BvdF9jb250cmFjdCkKKiBbYHNwb3QgZG9jcyBTUE9UX0NPTlRSQUNUYF0oI3Nwb3QtZG9jcy1zcG90X2NvbnRyYWN0KQoqIFtgc3BvdCBnZW5lcmF0ZWBdKCNzcG90LWdlbmVyYXRlKQoqIFtgc3BvdCBoZWxwIFtDT01NQU5EXWBdKCNzcG90LWhlbHAtY29tbWFuZCkKKiBbYHNwb3QgaW5pdGBdKCNzcG90LWluaXQpCiogW2BzcG90IGxpbnQgU1BPVF9DT05UUkFDVGBdKCNzcG90LWxpbnQtc3BvdF9jb250cmFjdCkKKiBbYHNwb3QgbW9jayBTUE9UX0NPTlRSQUNUYF0oI3Nwb3QtbW9jay1zcG90X2NvbnRyYWN0KQoqIFtgc3BvdCB2YWxpZGF0ZSBTUE9UX0NPTlRSQUNUYF0oI3Nwb3QtdmFsaWRhdGUtc3BvdF9jb250cmFjdCkKKiBbYHNwb3QgdmFsaWRhdGlvbi1zZXJ2ZXIgU1BPVF9DT05UUkFDVGBdKCNzcG90LXZhbGlkYXRpb24tc2VydmVyLXNwb3RfY29udHJhY3QpCgojIyBgc3BvdCBjaGVja3N1bSBTUE9UX0NPTlRSQUNUYAoKR2VuZXJhdGUgYSBjaGVja3N1bSBmb3IgYSBTcG90IGNvbnRyYWN0CgpgYGAKVVNBR0UKICAkIHNwb3QgY2hlY2tzdW0gU1BPVF9DT05UUkFDVAoKQVJHVU1FTlRTCiAgU1BPVF9DT05UUkFDVCAgcGF0aCB0byBTcG90IGNvbnRyYWN0CgpPUFRJT05TCiAgLWgsIC0taGVscCAgc2hvdyBDTEkgaGVscAoKRVhBTVBMRQogICQgc3BvdCBjaGVja3N1bSBhcGkudHMKYGBgCgpfU2VlIGNvZGU6IFtidWlsZC9jbGkvc3JjL2NvbW1hbmRzL2NoZWNrc3VtLmpzXShodHRwczovL2dpdGh1Yi5jb20vYWlydGFza2VyL3Nwb3QvYmxvYi92Mi4wLjIvYnVpbGQvY2xpL3NyYy9jb21tYW5kcy9jaGVja3N1bS5qcylfCgojIyBgc3BvdCBkb2NzIFNQT1RfQ09OVFJBQ1RgCgpQcmV2aWV3IFNwb3QgY29udHJhY3QgYXMgT3BlbkFQSTMgZG9jdW1lbnRhdGlvbi4gVGhlIGRvY3VtZW50YXRpb24gc2VydmVyIHdpbGwgc3RhcnQgb24gaHR0cDovL2xvY2FsaG9zdDo4MDgwLgoKYGBgClVTQUdFCiAgJCBzcG90IGRvY3MgU1BPVF9DT05UUkFDVAoKQVJHVU1FTlRTCiAgU1BPVF9DT05UUkFDVCAgcGF0aCB0byBTcG90IGNvbnRyYWN0CgpPUFRJT05TCiAgLWgsIC0taGVscCAgICAgICBzaG93IENMSSBoZWxwCiAgLXAsIC0tcG9ydD1wb3J0ICBbZGVmYXVsdDogODA4MF0gRG9jdW1lbnRhdGlvbiBzZXJ2ZXIgcG9ydAoKRVhBTVBMRQogICQgc3BvdCBkb2NzIGFwaS50cwpgYGAKCl9TZWUgY29kZTogW2J1aWxkL2NsaS9zcmMvY29tbWFuZHMvZG9jcy5qc10oaHR0cHM6Ly9naXRodWIuY29tL2FpcnRhc2tlci9zcG90L2Jsb2IvdjIuMC4yL2J1aWxkL2NsaS9zcmMvY29tbWFuZHMvZG9jcy5qcylfCgojIyBgc3BvdCBnZW5lcmF0ZWAKClJ1bnMgYSBnZW5lcmF0b3Igb24gYW4gQVBJLiBVc2VkIHRvIHByb2R1Y2UgY2xpZW50IGxpYnJhcmllcywgc2VydmVyIGJvaWxlcnBsYXRlcyBhbmQgd2VsbC1rbm93biBBUEkgY29udHJhY3QgZm9ybWF0cyBzdWNoIGFzIE9wZW5BUEkuCgpgYGAKVVNBR0UKICAkIHNwb3QgZ2VuZXJhdGUKCk9QVElPTlMKICAtYywgLS1jb250cmFjdD1jb250cmFjdCAgICAocmVxdWlyZWQpIFBhdGggdG8gYSBUeXBlU2NyaXB0IENvbnRyYWN0IGRlZmluaXRpb24KICAtZywgLS1nZW5lcmF0b3I9Z2VuZXJhdG9yICBHZW5lcmF0b3IgdG8gcnVuCiAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgc2hvdyBDTEkgaGVscAogIC1sLCAtLWxhbmd1YWdlPWxhbmd1YWdlICAgIExhbmd1YWdlIHRvIGdlbmVyYXRlCiAgLW8sIC0tb3V0PW91dCAgICAgICAgICAgICAgRGlyZWN0b3J5IGluIHdoaWNoIHRvIG91dHB1dCBnZW5lcmF0ZWQgZmlsZXMKCkVYQU1QTEUKICAkIHNwb3QgZ2VuZXJhdGUgLS1jb250cmFjdCBhcGkudHMgLS1sYW5ndWFnZSB5YW1sIC0tZ2VuZXJhdG9yIG9wZW5hcGkzIC0tb3V0IG91dHB1dC8KYGBgCgpfU2VlIGNvZGU6IFtidWlsZC9jbGkvc3JjL2NvbW1hbmRzL2dlbmVyYXRlLmpzXShodHRwczovL2dpdGh1Yi5jb20vYWlydGFza2VyL3Nwb3QvYmxvYi92Mi4wLjIvYnVpbGQvY2xpL3NyYy9jb21tYW5kcy9nZW5lcmF0ZS5qcylfCgojIyBgc3BvdCBoZWxwIFtDT01NQU5EXWAKCmRpc3BsYXkgaGVscCBmb3Igc3BvdAoKYGBgClVTQUdFCiAgJCBzcG90IGhlbHAgW0NPTU1BTkRdCgpBUkdVTUVOVFMKICBDT01NQU5EICBjb21tYW5kIHRvIHNob3cgaGVscCBmb3IKCk9QVElPTlMKICAtLWFsbCAgc2VlIGFsbCBjb21tYW5kcyBpbiBDTEkKYGBgCgpfU2VlIGNvZGU6IFtAb2NsaWYvcGx1Z2luLWhlbHBdKGh0dHBzOi8vZ2l0aHViLmNvbS9vY2xpZi9wbHVnaW4taGVscC9ibG9iL3YzLjMuMS9zcmMvY29tbWFuZHMvaGVscC50cylfCgojIyBgc3BvdCBpbml0YAoKR2VuZXJhdGVzIHRoZSBib2lsZXJwbGF0ZSBmb3IgYW4gQVBJLgoKYGBgClVTQUdFCiAgJCBzcG90IGluaXQKCk9QVElPTlMKICAtaCwgLS1oZWxwICBzaG93IENMSSBoZWxwCgpFWEFNUExFCiAgJCBzcG90IGluaXQKICBHZW5lcmF0ZWQgdGhlIGZvbGxvd2luZyBmaWxlczoKICAtIGFwaS50cwogIC0gdHNjb25maWcuanNvbgogIC0gcGFja2FnZS5qc29uCmBgYAoKX1NlZSBjb2RlOiBbYnVpbGQvY2xpL3NyYy9jb21tYW5kcy9pbml0LmpzXShodHRwczovL2dpdGh1Yi5jb20vYWlydGFza2VyL3Nwb3QvYmxvYi92Mi4wLjIvYnVpbGQvY2xpL3NyYy9jb21tYW5kcy9pbml0LmpzKV8KCiMjIGBzcG90IGxpbnQgU1BPVF9DT05UUkFDVGAKCkxpbnQgYSBTcG90IGNvbnRyYWN0CgpgYGAKVVNBR0UKICAkIHNwb3QgbGludCBTUE9UX0NPTlRSQUNUCgpBUkdVTUVOVFMKICBTUE9UX0NPTlRSQUNUICBwYXRoIHRvIFNwb3QgY29udHJhY3QKCk9QVElPTlMKICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93IENMSSBoZWxwCiAgLS1oYXMtZGlzY3JpbWluYXRvcj0oZXJyb3J8d2FybnxvZmYpICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZyBmb3IgaGFzLWRpc2NyaW1pbmF0b3IKICAtLWhhcy1yZXF1ZXN0LXBheWxvYWQ9KGVycm9yfHdhcm58b2ZmKSAgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIGZvciBoYXMtcmVxdWVzdC1wYXlsb2FkCiAgLS1oYXMtcmVzcG9uc2U9KGVycm9yfHdhcm58b2ZmKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZyBmb3IgaGFzLXJlc3BvbnNlCiAgLS1oYXMtcmVzcG9uc2UtcGF5bG9hZD0oZXJyb3J8d2FybnxvZmYpICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZyBmb3IgaGFzLXJlc3BvbnNlLXBheWxvYWQKICAtLW5vLWlubGluZS1vYmplY3RzLXdpdGhpbi11bmlvbnM9KGVycm9yfHdhcm58b2ZmKSAgICAgICAgICAgICBTZXR0aW5nIGZvciBuby1pbmxpbmUtb2JqZWN0cy13aXRoaW4tdW5pb25zCiAgLS1uby1udWxsYWJsZS1hcnJheXM9KGVycm9yfHdhcm58b2ZmKSAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZyBmb3Igbm8tbnVsbGFibGUtYXJyYXlzCiAgLS1uby1udWxsYWJsZS1maWVsZHMtd2l0aGluLXJlcXVlc3QtYm9kaWVzPShlcnJvcnx3YXJufG9mZikgICAgU2V0dGluZyBmb3Igbm8tbnVsbGFibGUtZmllbGRzLXdpdGhpbi1yZXF1ZXN0LWJvZGllcwogIC0tbm8tb21pdHRhYmxlLWZpZWxkcy13aXRoaW4tcmVzcG9uc2UtYm9kaWVzPShlcnJvcnx3YXJufG9mZikgIFNldHRpbmcgZm9yIG5vLW9taXR0YWJsZS1maWVsZHMtd2l0aGluLXJlc3BvbnNlLWJvZGllcwogIC0tbm8tdHJhaWxpbmctZm9yd2FyZC1zbGFzaD0oZXJyb3J8d2FybnxvZmYpICAgICAgICAgICAgICAgICAgIFNldHRpbmcgZm9yIG5vLXRyYWlsaW5nLWZvcndhcmQtc2xhc2gKCkVYQU1QTEVTCiAgJCBzcG90IGxpbnQgYXBpLnRzCiAgJCBzcG90IGxpbnQgLS1oYXMtZGVzY3JpbWluYXRvcj1lcnJvcgogICQgc3BvdCBsaW50IC0tbm8tbnVsbGFibGUtYXJyYXlzPW9mZgpgYGAKCl9TZWUgY29kZTogW2J1aWxkL2NsaS9zcmMvY29tbWFuZHMvbGludC5qc10oaHR0cHM6Ly9naXRodWIuY29tL2FpcnRhc2tlci9zcG90L2Jsb2IvdjIuMC4yL2J1aWxkL2NsaS9zcmMvY29tbWFuZHMvbGludC5qcylfCgojIyBgc3BvdCBtb2NrIFNQT1RfQ09OVFJBQ1RgCgpSdW4gYSBtb2NrIHNlcnZlciBiYXNlZCBvbiBhIFNwb3QgY29udHJhY3QKCmBgYApVU0FHRQogICQgc3BvdCBtb2NrIFNQT1RfQ09OVFJBQ1QKCkFSR1VNRU5UUwogIFNQT1RfQ09OVFJBQ1QgIHBhdGggdG8gU3BvdCBjb250cmFjdAoKT1BUSU9OUwogIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3cgQ0xJIGhlbHAKICAtcCwgLS1wb3J0PXBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVxdWlyZWQpIFtkZWZhdWx0OiAzMDEwXSBQb3J0IG9uIHdoaWNoIHRvIHJ1biB0aGUgbW9jayBzZXJ2ZXIKICAtLXBhdGhQcmVmaXg9cGF0aFByZWZpeCAgICAgICAgICAgICAgICAgICAgICBQcmVmaXggdG8gcHJlcGVuZCB0byBlYWNoIGVuZHBvaW50IHBhdGgKCiAgLS1wcm94eUJhc2VVcmw9cHJveHlCYXNlVXJsICAgICAgICAgICAgICAgICAgSWYgc2V0LCB0aGUgc2VydmVyIHdpbGwgYWN0IGFzIGEgcHJveHkgYW5kIGZldGNoIGRhdGEgZnJvbSB0aGUgZ2l2ZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGUgc2VydmVyIGluc3RlYWQgb2YgbW9ja2luZyBpdAoKICAtLXByb3h5RmFsbGJhY2tCYXNlVXJsPXByb3h5RmFsbGJhY2tCYXNlVXJsICBMaWtlIHByb3h5QmFzZVVybCwgZXhjZXB0IHVzZWQgd2hlbiB0aGUgcmVxdWVzdGVkIEFQSSBkb2VzIG5vdCBtYXRjaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgU1BPVCBjb250cmFjdC4gSWYgdW5zZXQsIDQwNCB3aWxsIGFsd2F5cyBiZSByZXR1cm5lZC4KCiAgLS1wcm94eU1vY2tCYXNlVXJsPXByb3h5TW9ja0Jhc2VVcmwgICAgICAgICAgTGlrZSBwcm94eUJhc2VVcmwsIGV4Y2VwdCB1c2VkIHRvIHByb3h5IGRyYWZ0IGVuZHBvaW50cyBpbnN0ZWFkIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuaW5nIG1vY2tlZCByZXNwb25zZXMuCgpFWEFNUExFCiAgJCBzcG90IG1vY2sgYXBpLnRzCmBgYAoKX1NlZSBjb2RlOiBbYnVpbGQvY2xpL3NyYy9jb21tYW5kcy9tb2NrLmpzXShodHRwczovL2dpdGh1Yi5jb20vYWlydGFza2VyL3Nwb3QvYmxvYi92Mi4wLjIvYnVpbGQvY2xpL3NyYy9jb21tYW5kcy9tb2NrLmpzKV8KCiMjIGBzcG90IHZhbGlkYXRlIFNQT1RfQ09OVFJBQ1RgCgpWYWxpZGF0ZSBhIFNwb3QgY29udHJhY3QKCmBgYApVU0FHRQogICQgc3BvdCB2YWxpZGF0ZSBTUE9UX0NPTlRSQUNUCgpBUkdVTUVOVFMKICBTUE9UX0NPTlRSQUNUICBwYXRoIHRvIFNwb3QgY29udHJhY3QKCk9QVElPTlMKICAtaCwgLS1oZWxwICBzaG93IENMSSBoZWxwCgpFWEFNUExFCiAgJCBzcG90IHZhbGlkYXRlIGFwaS50cwpgYGAKCl9TZWUgY29kZTogW2J1aWxkL2NsaS9zcmMvY29tbWFuZHMvdmFsaWRhdGUuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9haXJ0YXNrZXIvc3BvdC9ibG9iL3YyLjAuMi9idWlsZC9jbGkvc3JjL2NvbW1hbmRzL3ZhbGlkYXRlLmpzKV8KCiMjIGBzcG90IHZhbGlkYXRpb24tc2VydmVyIFNQT1RfQ09OVFJBQ1RgCgpTdGFydCB0aGUgc3BvdCBjb250cmFjdCB2YWxpZGF0aW9uIHNlcnZlcgoKYGBgClVTQUdFCiAgJCBzcG90IHZhbGlkYXRpb24tc2VydmVyIFNQT1RfQ09OVFJBQ1QKCkFSR1VNRU5UUwogIFNQT1RfQ09OVFJBQ1QgIHBhdGggdG8gU3BvdCBjb250cmFjdAoKT1BUSU9OUwogIC1oLCAtLWhlbHAgICAgICAgc2hvdyBDTEkgaGVscAogIC1wLCAtLXBvcnQ9cG9ydCAgW2RlZmF1bHQ6IDU5MDddIFRoZSBwb3J0IHdoZXJlIGFwcGxpY2F0aW9uIHdpbGwgYmUgYXZhaWxhYmxlCgpFWEFNUExFCiAgJCBzcG90IHZhbGlkYXRpb24tc2VydmVyIGFwaS50cwpgYGAKCl9TZWUgY29kZTogW2J1aWxkL2NsaS9zcmMvY29tbWFuZHMvdmFsaWRhdGlvbi1zZXJ2ZXIuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9haXJ0YXNrZXIvc3BvdC9ibG9iL3YyLjAuMi9idWlsZC9jbGkvc3JjL2NvbW1hbmRzL3ZhbGlkYXRpb24tc2VydmVyLmpzKV8KPCEtLSBjb21tYW5kc3N0b3AgLS0+CgojIFJlbGVhc2VzCgpXaGVuIHdlJ3JlIHJlYWR5IGZvciBhIG5ldyByZWxlYXNlLCBmb2xsb3dpbmcgc3RlcHMgaW4gdGhlIFtXaWtpXShodHRwczovL2dpdGh1Yi5jb20vYWlydGFza2VyL3Nwb3Qvd2lraS9SZWxlYXNpbmctU3BvdCkK readmeEtag: '"d50e525a2e860cb47c99bf4e6a5444dcb6c3c5f6"' readmeLastModified: Fri, 06 Feb 2026 04:55:33 GMT repositoryId: 152569547 description: Spot is a concise, developer-friendly way to describe your API contract. created: '2018-10-11T09:55:46Z' updated: '2026-02-06T04:55:38Z' language: TypeScript archived: false stars: 568 watchers: 48 forks: 38 owner: airtasker logo: https://avatars.githubusercontent.com/u/1745680?v=4 license: NOASSERTION repoEtag: '"2657daed831d41e81478503fc50ec2b3aaa09376cb2a32580c93d25692761272"' repoLastModified: Fri, 06 Feb 2026 04:55:38 GMT foundInMaster: true id: 7c28c31ae17b20b046f57bb6765c3939 - source: https://openapi.tools/ name: OpenAPI Client Generators category: - Code Generators - SDK link: https://github.com/zijianhuang/openapiclientgen language: C# repository: https://github.com/zijianhuang/openapiclientgen source_description: >- .NET Core command line program to generate strongly typed client API codes in C# on .NET Frameworks and .NET Core, and in TypeScript for Angular 5+, Aurelia, jQuery, AXIOS and Fetch API. v2: true v3: true repositoryMetadata: base64Readme: >- IyBTdHJvbmdseSBUeXBlZCBPcGVuQVBJIENsaWVudCBHZW5lcmF0b3JzDQpSZWFkaW5nIGFuIE9wZW5BUEkgLyBTd2FnZ2VyIFlBTUwvSlNPTiBkZWZpbml0aW9uIGZpbGUsIE9wZW5BcGlDbGllbnRHZW4gZ2VuZXJhdGVzIHN0cm9uZ2x5IHR5cGVkIGNsaWVudCBBUEkgY29kZXMgaW4gQyMgYW5kIGluIFR5cGVTY3JpcHQgZm9yIEFuZ3VsYXIsIEF4aW9zLCBGZXRjaCBBUEksIEF1cmVsaWEgYW5kIGpRdWVyeSwgYXMgd2VsbCBhcyBBbmd1bGFyIHN0cmljdGx5IHR5cGVkIHJlYWN0aXZlIGZvcm1zLg0KDQpUaGlzIHByb2dyYW0gaXMgYmFzZWQgb24gRm9ubG93LlR5cGVTY3JpcHRDb2RlRG9tQ29yZSBhbmQgRm9ubG93LlBvY28yVHNDb3JlIHdoaWNoIGFyZSBjb3JlIGNvbXBvbmVudHMgb2YgW1dlYkFwaUNsaWVudEdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3ppamlhbmh1YW5nL3dlYmFwaWNsaWVudGdlbiksIHRodXMgdGhlIGNvZGVzIGdlbmVyYXRlZCBzaGFyZSBzaW1pbGFyIGNoYXJhY3RlcmlzdGljcy4NCg0KR2VuZXJhdGVkIFR5cGVTY3JpcHQgY29kZXMgY29uZm9ybSB0byB0aGUgW1R5cGVTY3JpcHQgc3RyaWN0IG1vZGVdKGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNzdHJpY3QpLCBhbmQgdGhlIGdlbmVyYXRlZCBBbmd1bGFyIDIrIGNvZGVzIGNvbmZvcm0gdG8gdGhlIFtBbmd1bGFyIHN0cmljdCBtb2RlXShodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvc3RyaWN0LW1vZGUpLg0KDQoqKkhpbnRzKioNCg0KSWYgeW91IGFyZSB1c2luZyBBU1AuTkVUIG9yIEFTUC5ORVQgQ29yZSB0byBkZXZlbG9wIFdlYiBBUEkgYW5kIHdvdWxkIHN1cHBvcnQgQyMgY2xpZW50cyBhbmQgVHlwZVNjcmlwdCBjbGllbnRzLCBXZWJBcGlDbGllbnRHZW4gbWF5IHByb3ZpZGUgYW4gYWx0ZXJuYXRpdmUgc29sdXRpb24gdGhhdCBjb3ZlcnMgd2hhdCBvZmZlcmVkIGJ5IFN3YXNoYnVja2xlK05Td2FnLiBBbmQgaW4gc29tZSBjb250ZXh0cyBpdCBpcyBtb3JlIGVmZmljaWVudCwgZWZmZWN0aXZlIGFuZCBjb21wcmVoZW5zaXZlIHRvIHVzZSBXZWJBcGlDbGllbnRHZW4gaW4gU0RMQyB3aXRob3V0IGludm9sdmluZyBPcGVuIEFQSSAvIFN3YWdnZXIgWUFNTC9KU09OIGRlZmluaXRpb25zLg0KDQojIyBFeGFtcGxlcyBvZiBHZW5lcmF0ZWQgQ29kZXMNCg0KT3BlbkFwaUNsaWVudEdlbiBoYWQgYmVlbiB0ZXN0ZWQgdXBvbiBvdmVyIDIsMDAwIE9wZW4gQVBJIGRlZmluaXRpb25zIGluIHYzIGZvcm1hdHMgYW5kIGluIHYyIGZvcm1hdHMuDQoNCiogIFtwZXQueWFtbF0oaHR0cHM6Ly9naXRodWIuY29tL3ppamlhbmh1YW5nL29wZW5hcGljbGllbnRnZW4vYmxvYi9tYXN0ZXIvVGVzdHMvRGVtb0NsaWVudEFwaS9wZXQueWFtbCksIFtDIyBDbGllbnQgQVBJIGNvZGVzIGdlbmVyYXRlZF0oaHR0cHM6Ly9naXRodWIuY29tL3ppamlhbmh1YW5nL29wZW5hcGljbGllbnRnZW4vYmxvYi9tYXN0ZXIvVGVzdHMvRGVtb0NsaWVudEFwaS9QZXRBdXRvLmNzKSBvZiBjbGllbnQgQVBJIGxpYiwgYW5kICAgW0ludGVncmF0aW9uIFRlc3RzXShodHRwczovL2dpdGh1Yi5jb20vemlqaWFuaHVhbmcvb3BlbmFwaWNsaWVudGdlbi90cmVlL21hc3Rlci9UZXN0cy9Td2FnQXBpVGVzdHMpLg0KKiBbR2VuZXJhdGVkIFR5cGVTY3JpcHQgY29kZXMgZm9yIEFuZ3VsYXIgNStdKGh0dHBzOi8vZ2l0aHViLmNvbS96aWppYW5odWFuZy9vcGVuYXBpY2xpZW50Z2VuL2Jsb2IvbWFzdGVyL1Rlc3RzL1N3YWdUc1Rlc3RzL05HMlJlc3VsdHMvKSBhbmQgW2ludGVncmF0aW9uIHRlc3RzIGZvciBwZXQueWFtbF0oaHR0cHM6Ly9naXRodWIuY29tL3ppamlhbmh1YW5nL29wZW5hcGljbGllbnRnZW4vdHJlZS9tYXN0ZXIvbmcyL3NyYykNCiogW0dlbmVyYXRlZCBUeXBlU2NyaXB0IGNvZGVzIGZvciBBbmd1bGFyIFJlYWN0aXZlIFR5cGVkIEZvcm1zXShodHRwczovL2dpdGh1Yi5jb20vemlqaWFuaHVhbmcvb3BlbmFwaWNsaWVudGdlbi9ibG9iL21hc3Rlci9UZXN0cy9Td2FnVHNUZXN0cy9ORzJGb3JtR3JvdXBSZXN1bHRzKSANCiogW0dlbmVyYXRlZCBUeXBlU2NyaXB0IGNvZGVzIGZvciBBdXJlbGlhXShodHRwczovL2dpdGh1Yi5jb20vemlqaWFuaHVhbmcvb3BlbmFwaWNsaWVudGdlbi90cmVlL21hc3Rlci9UZXN0cy9Td2FnVGVzdHMvQXVyZWxpYVJlc3VsdHMpIGFuZCBbaW50ZWdyYXRpb24gdGVzdHMgZm9yIHBldC55YW1sXShodHRwczovL2dpdGh1Yi5jb20vemlqaWFuaHVhbmcvb3BlbmFwaWNsaWVudGdlbi90cmVlL21hc3Rlci9hdXJlbGlhL3NyYykNCiogW0dlbmVyYXRlZCBUeXBlU2NyaXB0IGNvZGVzIGZvciBBWElPU10oaHR0cHM6Ly9naXRodWIuY29tL3ppamlhbmh1YW5nL29wZW5hcGljbGllbnRnZW4vdHJlZS9tYXN0ZXIvVGVzdHMvU3dhZ1Rlc3RzL0F4aW9zUmVzdWx0cykgYW5kIFtpbnRlZ3JhdGlvbiB0ZXN0cyBmb3IgcGV0LnlhbWxdKGh0dHBzOi8vZ2l0aHViLmNvbS96aWppYW5odWFuZy9vcGVuYXBpY2xpZW50Z2VuL3RyZWUvbWFzdGVyL2F4aW9zL3NyYykNCiogW0dlbmVyYXRlZCBUeXBlU2NyaXB0IGNvZGVzIGZvciBGZXRjaCBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS96aWppYW5odWFuZy9vcGVuYXBpY2xpZW50Z2VuL3RyZWUvbWFzdGVyL1Rlc3RzL1N3YWdUZXN0cy9GZXRjaFJlc3VsdHMpIGFuZCBbaW50ZWdyYXRpb24gdGVzdHMgZm9yIHBldC55YW1sXShodHRwczovL2dpdGh1Yi5jb20vemlqaWFuaHVhbmcvb3BlbmFwaWNsaWVudGdlbi90cmVlL21hc3Rlci9mZXRjaGFwaS9zcmMpDQoqIFtHZW5lcmF0ZWQgVHlwZVNjcmlwdCBjb2RlcyBmb3IgalF1ZXJ5XShodHRwczovL2dpdGh1Yi5jb20vemlqaWFuaHVhbmcvb3BlbmFwaWNsaWVudGdlbi90cmVlL21hc3Rlci9UZXN0cy9Td2FnVGVzdHMvSnFSZXN1bHRzKSBhbmQgW2ludGVncmF0aW9uIHRlc3RzIGZvciBwZXQueWFtbF0oaHR0cHM6Ly9naXRodWIuY29tL3ppamlhbmh1YW5nL29wZW5hcGljbGllbnRnZW4vdHJlZS9tYXN0ZXIvanEvc3JjKQ0KDQojIyBEYXRhIE1hcHBpbmdzDQoNClRoaXMgc2VjdGlvbiBkZXNjcmliZXMgb25seSBtYXBwaW5ncyBmb3Igc2ltcGxlIGFuZCBwcmltaXRpdmUgdHlwZXMgaW4gT3BlbkFQSSBkZWZpbml0aW9uLCBDIyBhbmQgVHlwZVNjcmlwdC4NCg0KIyMjIFRvIEMjIENvZGVzDQoNCmBgYGMjDQpzdGF0aWMgcmVhZG9ubHkgRGljdGlvbmFyeTxzdHJpbmcsIFR5cGU+IGJhc2ljQ2xyVHlwZURpYyA9IG5ldygpDQp7DQoJeyJpbnRlZ2VyX2ludDMyIiwgdHlwZW9mKGludCkgfSwNCgl7ImludGVnZXJfaW50NjQiLCB0eXBlb2YobG9uZykgfSwNCgl7ImludGVnZXIiLCB0eXBlb2YoaW50KSB9LA0KCXsiaW50ZWdlcl91aW50MzIiLCB0eXBlb2YodWludCkgfSwNCgl7Im51bWJlcl9mbG9hdCIsIHR5cGVvZihmbG9hdCkgfSwNCgl7Im51bWJlcl9kb3VibGUiLCB0eXBlb2YoZG91YmxlKSB9LA0KCXsibnVtYmVyX2RlY2ltYWwiLCB0eXBlb2YoZGVjaW1hbCkgfSwNCgl7Im51bWJlciIsIHR5cGVvZihkb3VibGUpIH0sIC8vQyMgYnkgZGVmYXVsdCB1c2UgZG91YmxlIGZvciBudW1iZXIgbGl0ZXJhbA0KCXsic3RyaW5nIiwgdHlwZW9mKHN0cmluZykgfSwNCgl7ImJvb2xlYW4iLCB0eXBlb2YoYm9vbCkgfSwNCgl7InN0cmluZ19kYXRlIiwgdHlwZW9mKERhdGVPbmx5KSB9LA0KCXsic3RyaW5nX2RhdGUtdGltZSIsIHR5cGVvZihEYXRlVGltZU9mZnNldCkgfSwNCn07DQpgYGANCg0KIyMjIFRvIFR5cGVTY3JpcHQgQ29kZXMNCg0KYGBgYyMNCnN0YXRpYyByZWFkb25seSBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBiYXNpY1RzVHlwZURpYyA9IG5ldygpDQp7DQoJeyJpbnRlZ2VyX2ludDMyIiwgIm51bWJlciIgfSwNCgl7ImludGVnZXJfaW50NjQiLCAibnVtYmVyIiB9LA0KCXsiaW50ZWdlciIsICJudW1iZXIiIH0sDQoJeyJpbnRlZ2VyX3VpbnQzMiIsICJudW1iZXIiIH0sDQoJeyJudW1iZXJfZmxvYXQiLCAibnVtYmVyIiB9LA0KCXsibnVtYmVyX2RvdWJsZSIsICJudW1iZXIiIH0sDQoJeyJudW1iZXJfZGVjaW1hbCIsICJudW1iZXIiIH0sDQoJeyJudW1iZXIiLCAibnVtYmVyIiB9LA0KCXsic3RyaW5nIiwgInN0cmluZyIgfSwNCgl7ImJvb2xlYW4iLCAiYm9vbGVhbiIgfSwNCgl7InN0cmluZ19kYXRlIiwgIkRhdGUiIH0sDQoJeyJzdHJpbmdfZGF0ZS10aW1lIiwgIkRhdGUiIH0sDQp9Ow0KYGBgDQoNCkFuZCAiaW50ZWdlcl9pbnQ2NCIgaXMgYWN0dWFsbHkgbWFwcGVkIHRvICJzdHJpbmciIGJlY2F1c2UgSlMgc3VwcG9ydHMgaW50ZWdyYWwgcHJlY2lzaW9uIHVwIHRvIDUzIGJpdHMuDQoNCioqUmVmZXJlbmNlczoqKg0KKiBbRGVhbGluZyB3aXRoIExhcmdlIEludGVncmFsIE51bWJlcnMgaW4gSmF2YVNjcmlwdCBmb3IgSW50ZWdyYWwgVHlwZXMgb2YgQVNQLk5FVCBDb3JlIFdlYiBBUEldKGh0dHBzOi8vd3d3LmNvZGVwcm9qZWN0LmNvbS9BcnRpY2xlcy81Mzc3ODA3L0RlYWxpbmctd2l0aC1MYXJnZS1JbnRlZ3JhbC1OdW1iZXJzLWluLUphdmFTY3JpcHQpDQoNCiMjIFZhbGlkYXRpb24gTWFwcGluZ3MNCg0KIyMjIE9wZW5BUEkgdmFsaWRhdGlvbiB0byAuTkVUIHZhbGlkYXRpb24NCg0KfCBTY2hlbWEgfCAuTkVUIEF0dHJpYnV0ZSB8DQp8IC0tLS0tLSB8IC0tLS0gfCAgDQp8IE1pbkxlbmd0aCB8IE1pbkxlbmd0aCB8DQp8IE1heExlbmd0aCB8IE1heExlbmd0aCB8DQp8IE1pbkxlbmd0aCArIE1heExlbmd0aCB8IExlbmd0aCB8DQp8IE1pbmltdW0sIE1heGltdW0gfCBSYW5nZShtaW4sIG1heCkgb3IgUmFuZ2UoVHlwZUZ1bGxOYW1lLCBtaW4sIG1heCkgfA0KfCBNaW5JdGVtcyB8IE1pbkxlbmd0aCB8DQp8IE1heEl0ZW1zIHwgTWF4TGVuZ3RoIHwNCnwgTWluSXRlbXMgKyBNYXhJdGVtcyB8IExlbmd0aCB8DQp8IFBhdHRlcm4gfCBSZWd1bGFyRXhwcmVzc2lvbiB8DQoNCiMjIyBPcGVuQVBJIHZhbGlkYXRpb24gdG8gQW5ndWxhciBSZWFjdGl2ZSBGb3JtcyBWYWxpZGF0aW9uDQoNCnwgU2NoZW1hIHwgQW5ndWxhciBSZWFjdGl2ZSBGb3JtcyBWYWxpZGF0aW9uIHwNCnwgLS0tLS0gfCAtLS0tIHwNCnwgUmVxdWlyZWQgfCByZXF1aXJlZCB8DQp8IE1pbkxlbmd0aCwgTWF4TGVuZ3RoLCBNaW5JdGVtcywgTWF4SXRlbXMgfCBtaW5MZW5ndGgsIG1heExlbmd0aCB8DQp8IE1pbmltdW0sIE1heGltdW0gfCBtaW4sIG1heCB8DQp8IFBhdHRlcm4gfCBwYXR0ZXJuIHwNCg0KIyMgSW5zdGFsbGF0aW9uDQpPcGVuQXBpQ2xpZW50R2VuIGlzIGEgLk5FVCBDb3JlIGNvbnNvbGUgYXBwLg0KDQoqKlByZXJlcXVpc2l0ZXMqKg0KDQoqIC5ORVQgOCAoc2luY2UgdjMuMikNCg0KKipSZW1hcmtzKioNCg0KKiBUaGUgZ2VuZXJhdGVkIEMjIGNvZGVzIGNvdWxkIGJlIGJ1aWx0IHdpdGggLk5FVCBGcmFtZXdvcmtzIGluIGFkZGl0aW9uIHRvIC5ORVQuDQoNCg0KIyMjIFNvdXJjZSBJbnN0YWxsYXRpb24NCkNoZWNrIG91dCB0aGlzIHJlcG9zaXRvcnkgb3Igb25lIG9mIGl0cyB0YWdzLCB0aGVuIGRvIGEgcmVsZWFzZSBidWlsZCBvciBhIFZpc3VhbCBTdHVkaW8ncyBQdWJsaXNoLg0KDQoqKkhpbnRzKioNCg0KVGhlIHBsdWdpbiBhc3NlbWJsaWVzIHNob3VsZCBiZSBjb3BpZWQgYWNjb3JkaW5nbHkgYWZ0ZXIgYSByZWxlYXNlIGJ1aWxkLg0KDQojIyMgQmluYXJ5IERvd25sb2FkDQoNCkRvd25sb2FkIG9uZSB0aGUgW3ppcCBmaWxlc10oaHR0cHM6Ly9naXRodWIuY29tL3ppamlhbmh1YW5nL29wZW5hcGljbGllbnRnZW4vcmVsZWFzZXMpIG9mIHRoZSByZWxlYXNlcyBhbmQgZXh0cmFjdCB0byBhIGxvY2FsIGZvbGRlci4gVGhlIGNvbnNvbGUgYXBwIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgcGx1Z2lucyBmb3IgSmF2YVNjcmlwdC9UeXBlU2NyaXB0IGxpYnMgb3IgZnJhbWV3b3JrczoNCg0KKiBGb25sb3cuT3BlbkFwaUNsaWVudEdlbi5BdXJlbGlhDQoqIEZvbmxvdy5PcGVuQXBpQ2xpZW50R2VuLkF4aW9zDQoqIEZvbmxvdy5PcGVuQXBpQ2xpZW50R2VuLkZldGNoDQoqIEZvbmxvdy5PcGVuQXBpQ2xpZW50R2VuLkpRDQoqIEZvbmxvdy5PcGVuQXBpQ2xpZW50R2VuLk5HMg0KKiBGb25sb3cuT3BlbkFwaUNsaWVudEdlbi5ORzJGb3JtR3JvdXANCg0KDQojIyMjIE1hY09TDQpJZiB5b3UgYXJlIHVzaW5nIE1hYyBPUyBvciBMaW51eCBmb3IgZGV2ZWxvcG1lbnQsIHlvdSBtYXkgdXNlICJkb3RuZXQgcHVibGlzaCIsIGZvciBleGFtcGxlOg0KDQpgZG90bmV0IHB1Ymxpc2ggLXIgb3N4LXg2NCAtLW91dHB1dCAldGFyZ2V0JSAtLWNvbmZpZ3VyYXRpb24gcmVsZWFzZSAtLXNlbGYtY29udGFpbmVkIGZhbHNlYA0KDQpVbmRlciBmb2xkZXIgIkZvbmxvdy5PcGVuQXBpQ2xpZW5HZW4iLCB0aGVyZSBhcmUgMiBiYXRjaCBmaWxlcyB0byBidWlsZCBhIHJlbGVhc2UgZm9yIE1hY09TOg0KKiBCdWlsZEZvck1hYy5iYXQNCiogQnVpbGRGb3JNYWNTZWxmQ29udGFpbmVkLmJhdA0KDQpPbiBNYWMsIHlvdSBtYXkgcnVuIA0KDQpgYGBkb3RuZXQgRm9ubG93Lk9wZW5BcGlDbGllbnRHZW4uZGxsIG15LnlhbWwgY29kZWdlbi5qc29uYGBgDQoNCm9yIA0KDQpgYGAuL0Zvbmxvdy5PcGVuQXBpQ2xpZW50R2VuIG15LnlhbWwgY29kZWdlbi5qc29uYGBgDQoNCkFmdGVyIHJ1bm5pbmcgYGNobW9kIDc1NSBGb25sb3cuT3BlbkFwaUNsaWVudEdlbmAgb25jZS4NCg0KIyMgQ29kZSBHZW5lcmF0aW9uDQoNCldoZW4gcnVubmluZyB0aGUgcHJvZ3JhbSB3aXRob3V0IHZhbGlkIHBhcmFtZXRlcnMsIHlvdSBnZXQgc29tZSBzaW1wbGUgaGludHM6DQpgYGANClBhcmFtZXRlciAxOiBPcGVuIEFQSSBZQU1ML0pTT04gZGVmaW5pdGlvbiBmaWxlDQpQYXJhbWV0ZXIgMjogU2V0dGluZ3MgZmlsZSBpbiBKU09OIGZvcm1hdC4NCkV4YW1wbGU6ICANCiAgRm9ubG93Lk9wZW5BcGlDbGllbnRHZW4uZXhlIG15LnlhbWwNCiAgRm9ubG93Lk9wZW5BcGlDbGllbnRHZW4uZXhlIG15LnlhbWwgbXlwcm9qLmpzb24NCiAgRm9ubG93Lk9wZW5BcGlDbGllbnRHZW4uZXhlIG15LnlhbWwgLi5cbXlwcm9qLmpzb24NCmBgYA0KDQojIyMgU2V0dGluZ3MNCg0KQSB0eXBpY2FsIENvZGVHZW4gSlNPTiBmaWxlIGlzIGxpa2UgdGhpcyBbIkRlbW9Db2RlR2VuLmpzb24iXShodHRwczovL2dpdGh1Yi5jb20vemlqaWFuaHVhbmcvb3BlbmFwaWNsaWVudGdlbi9ibG9iL21hc3Rlci9EZW1vQ29kZUdlbi5qc29uKToNCmBgYGpzb24NCnsNCgkiQ2xpZW50TmFtZXNwYWNlIjogIk15LlBldC5DbGllbnQiLA0KCSJDbGllbnRMaWJyYXJ5UHJvamVjdEZvbGRlck5hbWUiOiAiLi9UZXN0cy9EZW1vQ2xpZW50QXBpIiwNCgkiQ29udGFpbmVyQ2xhc3NOYW1lIjogIlBldENsaWVudCIsDQoJIkNsaWVudExpYnJhcnlGaWxlTmFtZSI6ICJQZXRBdXRvLmNzIiwNCgkiQWN0aW9uTmFtZVN0cmF0ZWd5IjogNCwNCgkiVXNlRW5zdXJlU3VjY2Vzc1N0YXR1c0NvZGVFeCI6IHRydWUsDQoJIkRlY29yYXRlRGF0YU1vZGVsV2l0aERhdGFDb250cmFjdCI6IHRydWUsDQoJIkRhdGFDb250cmFjdE5hbWVzcGFjZSI6ICJodHRwOi8vcGV0LmRvbWFpbi8yMDIwLzAzIiwNCgkiRGF0YUFubm90YXRpb25zRW5hYmxlZCI6IHRydWUsDQoJIkRhdGFBbm5vdGF0aW9uc1RvQ29tbWVudHMiOiB0cnVlLA0KCSJIYW5kbGVIdHRwUmVxdWVzdEhlYWRlcnMiOiB0cnVlLA0KDQoJIlBsdWdpbnMiOiBbDQoJCXsNCgkJCSJBc3NlbWJseU5hbWUiOiAiRm9ubG93Lk9wZW5BcGlDbGllbnRHZW4uTkcyIiwNCgkJCSJUYXJnZXREaXIiOiAiLi9uZzIvc3JjL2NsaWVudGFwaSIsDQoJCQkiVFNGaWxlIjogIkNsaWVudEFwaUF1dG8udHMiLA0KCQkJIkFzTW9kdWxlIjogdHJ1ZSwNCgkJCSJDb250ZW50VHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLTgiDQoJCX0NCgldDQoNCn0NCmBgYA0KDQpZb3UgbWF5IHJ1biB0aGUgY29kZSBnZW5lcmF0b3IgdGhyb3VnaCBhIGJhdGNoIGZpbGU6DQpgYGBiYXRjaA0KY2QgJX5kcDANCmM6XGdyZWVuXE9wZW5BcGlDbGllbnRHZW5cRm9ubG93Lk9wZW5BcGlDbGllbnRHZW4uZXhlIHNvbWVfc2VydmljZS55YW1sIG15Y29kZWdlbi5qc29uDQpgYGANCg0KVGhlIEpTT04gZmlsZSBpcyBtYXBwZWQgdG8gdGhlIGZvbGxvd2luZyBbQyMgY29kZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS96aWppYW5odWFuZy9vcGVuYXBpY2xpZW50Z2VuL2Jsb2IvbWFzdGVyL0Zvbmxvdy5PcGVuQXBpQ2xpZW50R2VuLkNsaWVudFR5cGVzL1NldHRpbmdzLmNzKSB3aGljaCBkZXNjcmliZXMgZWFjaCBzZXR0aW5nOg0KYGBgYyMNCglwdWJsaWMgY2xhc3MgU2V0dGluZ3MgOiBJU2V0dGluZ3MNCgl7DQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIFRoZSBnZW5lcmF0ZWQgY29kZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBpbiBhIG5hbWVzcGFjZS4gVGhlIGRlZmF1bHQgaXMgTXkuTmFtZXNwYWNlLg0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlwdWJsaWMgc3RyaW5nIENsaWVudE5hbWVzcGFjZSB7IGdldDsgc2V0OyB9ID0gIk15Lk5hbWVzcGFjZSI7DQoNCgkJLy8vIDxzdW1tYXJ5Pg0KCQkvLy8gVG8gY29tcG9zZSBjbGllbnQgZnVuY3Rpb24gbmFtZSB0aHJvdWdoIHJlbW92aW5nIHBhdGggcHJlZml4LiBUeXBpY2FsbHkgLyBvciAvYXBpLiBUaGUgZGVmYXVsdCBpcyAvLg0KCQkvLy8gVGhlIGxlbmdodCBvZiB0aGUgcHJlZml4IGlzIHVzZWQgdG8gcmVtb3ZlIHBhdGggcHJlZml4LiBBcHBsaWVkIHdoZW4gQWN0aW9uTmFtZVN0cmF0ZWd5IGlzIFBhdGhNZXRob2RRdWVyeVBhcmFtZXRlcnMuDQoJCS8vLyA8L3N1bW1hcnk+DQoJCXB1YmxpYyBzdHJpbmcgUGF0aFByZWZpeFRvUmVtb3ZlIHsgZ2V0OyBzZXQ7IH0gPSAiLyI7DQoNCgkJcHVibGljIEFjdGlvbk5hbWVTdHJhdGVneSBBY3Rpb25OYW1lU3RyYXRlZ3kgeyBnZXQ7IHNldDsgfQ0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIFRoZSBkZWZhdWx0IGlzIFx3KiBmb3IgcGlja2luZyB1cCBhbHBoYW51bWVyaWMgd29yZHMgZnJvbSBzb21lIGNyaWtleSBvcGVyYXRpb25JZHMgdGhyb3VnaCBtYXRjaGluZyBhIGxpc3Qgb2Ygd29yZHMgDQoJCS8vLyB3aGljaCB3aWxsIGJlIG1lcmdlZCBpbnRvIGEgZnVuY3Rpb24gbmFtZSBpbiBQYXNjYWwgb3IgY2FtZWwgY2FzaW5nLiANCgkJLy8vIEFwcGxpZWQgd2hlbiBBY3Rpb25OYW1lU3RyYXRlZ3kgaXMgTm9ycm1hbGl6ZWRPcGVyYXRpb25JZC4NCgkJLy8vIDwvc3VtbWFyeT4NCgkJcHVibGljIHN0cmluZyBSZWdleEZvck5vcm1hbGl6ZWRPcGVyYXRpb25JZCB7IGdldDsgc2V0OyB9ID0gQCJcdyoiOw0KDQoJCXB1YmxpYyBDb250YWluZXJOYW1lU3RyYXRlZ3kgQ29udGFpbmVyTmFtZVN0cmF0ZWd5IHsgZ2V0OyBzZXQ7IH0NCg0KCQkvLy8gPHN1bW1hcnk+DQoJCS8vLyBDb250YWluZXIgY2xhc3MgbmFtZSB3aGVuIENvbnRhaW5lck5hbWVTdHJhdGVneSBpcyBOb25lLiBUaGUgZGVmYXVsdCBpcyBNaXNjLg0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlwdWJsaWMgc3RyaW5nIENvbnRhaW5lckNsYXNzTmFtZSB7IGdldDsgc2V0OyB9ID0gIk1pc2MiOw0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIFN1ZmZpeCBvZiBjb250YWluZXIgY2xhc3MgbmFtZSBpZiBDb250YWluZXJOYW1lU3RyYXRlZ3kgaXMgbm90IE5vbmUuIFRoZSBkZWZhdWx0IGlzICJDbGllbnQiLg0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlwdWJsaWMgc3RyaW5nIENvbnRhaW5lck5hbWVTdWZmaXggeyBnZXQ7IHNldDsgfSA9ICJDbGllbnQiOw0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIEFzc3VtaW5nIHRoZSBjbGllbnQgQVBJIHByb2plY3QgaXMgdGhlIHNpYmxpbmcgb2YgV2ViIEFQSSBwcm9qZWN0LiBSZWxhdGl2ZSBwYXRoIHRvIHRoZSBXZWJBcGkgcHJvamVjdCBzaG91bGQgYmUgZmluZS4gQyMgb25seS4NCgkJLy8vIDwvc3VtbWFyeT4NCgkJcHVibGljIHN0cmluZyBDbGllbnRMaWJyYXJ5UHJvamVjdEZvbGRlck5hbWUgeyBnZXQ7IHNldDsgfQ0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIFRoZSBuYW1lIG9mIHRoZSBDUyBmaWxlIHRvIGJlIGdlbmVyYXRlZCB1bmRlciBjbGllbnQgbGlicmFyeSBwcm9qZWN0IGZvbGRlci4gVGhlIGRlZmF1bHQgaXMgT3BlbkFwaUNsaWVudEF1dG8uY3MuDQoJCS8vLyA8L3N1bW1hcnk+DQoJCXB1YmxpYyBzdHJpbmcgQ2xpZW50TGlicmFyeUZpbGVOYW1lIHsgZ2V0OyBzZXQ7IH0gPSAiT3BlbkFwaUNsaWVudEF1dG8uY3MiOw0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIEdlbmVyYXRlZCBkYXRhIHR5cGVzIHdpbGwgYmUgZGVjb3JhdGVkIHdpdGggRGF0YUNvbnRyYWN0QXR0cmlidXRlIGFuZCBEYXRhTWVtYmVyQXR0cmlidXRlIGluIEMjLg0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlwdWJsaWMgYm9vbCBEZWNvcmF0ZURhdGFNb2RlbFdpdGhEYXRhQ29udHJhY3QgeyBnZXQ7IHNldDsgfQ0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIFdoZW4gRGVjb3JhdGVEYXRhTW9kZWxXaXRoRGF0YUNvbnRyYWN0IGlzIHRydWUsIHRoaXMgaXMgdGhlIG5hbWVzcGFjZSBvZiBEYXRhQ29udHJhY3RBdHRyaWJ1dGUuIEZvciBleGFtcGxlLCAiaHR0cDovL215YnVzaW5lc3MuY29tLzA5LzIwMTkNCgkJLy8vIDwvc3VtbWFyeT4NCgkJcHVibGljIHN0cmluZyBEYXRhQ29udHJhY3ROYW1lc3BhY2UgeyBnZXQ7IHNldDsgfQ0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIFNlcmlhbGl6ZSBlbnVtIHRvIHN0cmluZy4gRm9yIEMjLCBlZmZlY3RpdmUgaWYgRGVjb3JhdGVEYXRhTW9kZWxXaXRoRGF0YUNvbnRyYWN0IGlzIHRydWUsIGFuZCB0aGUgZW51bSB0eXBlIGlzIGRlY29yYXRlZCBieQ0KCQkvLy8gW0pzb25Db252ZXJ0ZXIodHlwZW9mKE5ld3RvbnNvZnQuSnNvbi5Db252ZXJ0ZXJzLlN0cmluZ0VudW1Db252ZXJ0ZXIpKV0gb3IgW1N5c3RlbS5UZXh0Lkpzb24uU2VyaWFsaXphdGlvbi5Kc29uQ29udmVydGVyKHR5cGVvZihTeXN0ZW0uVGV4dC5Kc29uLlNlcmlhbGl6YXRpb24uSnNvblN0cmluZ0VudW1Db252ZXJ0ZXIpKV0uDQoJCS8vLyBGb3IgVHlwZVNjcmlwdCwgdGhlIG91dHB1dCBpcyBzdHJpbmcgZW51bXMuDQoJCS8vLyA8L3N1bW1hcnk+DQoJCXB1YmxpYyBib29sIEVudW1Ub1N0cmluZyB7IGdldDsgc2V0OyB9DQoNCgkJLy8vIDxzdW1tYXJ5Pg0KCQkvLy8gRGVjb3JhdGUgdGhlIERhdGEgTW9kZWwgd2l0aCB0aGUgU3lzdGVtLlNlcmlhbGl6YWJsZUF0dHJpYnV0ZSBhdHRyaWJ1dGUNCgkJLy8vIDwvc3VtbWFyeT4NCgkJcHVibGljIGJvb2wgRGVjb3JhdGVEYXRhTW9kZWxXaXRoU2VyaWFsaXphYmxlIHsgZ2V0OyBzZXQ7IH0NCg0KCQkvLy8gPHN1bW1hcnk+DQoJCS8vLyBGb3IgLk5FVCBjbGllbnQsIGdlbmVyYXRlIGJvdGggYXN5bmMgYW5kIHN5bmMgZnVuY3Rpb25zIGZvciBlYWNoIFdlYiBBUEkgZnVuY3Rpb24uIFdoZW4gZmFsc2UsIG9ubHkgYXN5bmMuDQoJCS8vLyA8L3N1bW1hcnk+DQoJCXB1YmxpYyBib29sIEdlbmVyYXRlQm90aEFzeW5jQW5kU3luYyB7IGdldDsgc2V0OyB9DQoNCgkJLy8vIDxzdW1tYXJ5Pg0KCQkvLy8gUmVwbGFjZSBFbnN1cmVTdWNjZXNzU3RhdHVzQ29kZSB3aXRoIEVuc3VyZVN1Y2Nlc3NTdGF0dXNDb2RlRXggZm9yIHNwZWNpZmljIHVuc3VjY2Vzc2Z1bCBIVFRQIHN0YXR1cyBoYW5kbGluZywgd2hpY2ggdGhyb3dzIFlvdXJDbGllbnRXZWJBcGlSZXF1ZXN0RXhjZXB0aW9uLg0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlwdWJsaWMgYm9vbCBVc2VFbnN1cmVTdWNjZXNzU3RhdHVzQ29kZUV4IHsgZ2V0OyBzZXQ7IH0NCg0KCQkvLy8gPHN1bW1hcnk+DQoJCS8vLyBEZWZhdWx0ICBpcyB0cnVlIHNvIHRoZSBjb2RlIGJsb2NrIGlzIGluY2x1ZGVkIGluIHRoZSBnZW5lcmF0ZWQgY29kZXMuDQoJCS8vLyBEZWZpbmVkIGlmIFVzZUVuc3VyZVN1Y2Nlc3NTdGF0dXNDb2RlRXggaXMgdHJ1ZS4gUmVzcGVjdGl2ZSBjb2RlIGJsb2NrIHdpbGwgYmUgaW5jbHVkZWQgdGhlIGNvZGUgZ2VuIG91dHB1dC4gSG93ZXZlciwgaWYgeW91IGhhdmUgYSBmZXcgY2xpZW50IEFQSXMgZ2VuZXJhdGVkIHRvIGJlIHVzZWQgaW4gdGhlIHNhbWUgYXBwbGljYXRpb24sDQoJCS8vLyBhbmQgeW91IG1heSB3YW50IHRoZXNlIGNsaWVudCBBUElzIHNoYXJlIHRoZSBzYW1lIGNvZGUgYmxvY2ssIHRoZW4gcHV0IHRoZSBXZWJBcGlSZXF1ZXN0RXhjZXB0aW9uIGNvZGUgYmxvY2sgdG8gYW4gYXNzZW1ibHkgb3IgYSBzdGFuZGFsb25lIENTIGZpbGUuDQoJCS8vLyA8L3N1bW1hcnk+DQoJCXB1YmxpYyBib29sIEluY2x1ZGVFbnN1cmVTdWNjZXNzU3RhdHVzQ29kZUV4QmxvY2sgeyBnZXQ7IHNldDsgfSA9IHRydWU7DQoNCgkJLy8vIDxzdW1tYXJ5Pg0KCQkvLy8gU3lzdGVtLkNvbXBvbmVudE1vZGVsLkRhdGFBbm5vdGF0aW9ucyBhdHRyaWJ1dGVzIGFyZSB0byBiZSBjb3BpZWQgb3ZlciwgaW5jbHVkaW5nIFJlcXVpcmVkLCBSYW5nZSwgTWF4TGVuZ3RoLCBNaW5MZW5ndGggYW5kIFN0cmluZ0xlbmd0aC4gQXBwbGllZCB0byBDIyBvbmx5Lg0KCQkvLy8gV2hhdCBkZWZpbmVkIGluICJkZWZhdWx0IiBvZiBZQU1MIHdpbGwgYmVjb21lIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHJlc3BlY3RpdmUgcHJvcGVydHkuDQoJCS8vLyA8L3N1bW1hcnk+DQoJCXB1YmxpYyBib29sIERhdGFBbm5vdGF0aW9uc0VuYWJsZWQgeyBnZXQ7IHNldDsgfQ0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIFN5c3RlbS5Db21wb25lbnRNb2RlbC5EYXRhQW5ub3RhdGlvbnMgYXR0cmlidXRlcyBhcmUgdHJhbnNsYXRlZCBpbnRvIERvYyBDb21tZW50cywgDQoJCS8vLyBpbmNsdWRpbmcgUmVxdWlyZWQsIFJhbmdlLCBNYXhMZW5ndGgsIE1pbkxlbmd0aCwgU3RyaW5nTGVuZ3RoLCBEYXRhVHlwZSBhbmQgUmVndWxhckV4cHJlc3Npb24uIEFwcGxpZWQgdG8gQyMgYW5kIFR5cGVTY3JpcHQuDQoJCS8vLyA8L3N1bW1hcnk+DQoJCXB1YmxpYyBib29sIERhdGFBbm5vdGF0aW9uc1RvQ29tbWVudHMgeyBnZXQ7IHNldDsgfQ0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIEZ1bmN0aW9uIHBhcmFtZXRlcnMgY29udGFpbiBhIGNhbGxiYWNrIHRvIGhhbmRsZSBIVFRQIHJlcXVlc3QgaGVhZGVycw0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlwdWJsaWMgYm9vbCBIYW5kbGVIdHRwUmVxdWVzdEhlYWRlcnMgeyBnZXQ7IHNldDsgfQ0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIEFsbG93IGNhbmNlbGxhdGlvbiBpbiBTZW5kDQoJCS8vLyA8L3N1bW1hcnk+DQoJCXB1YmxpYyBib29sIENhbmNlbGxhdGlvblRva2VuRW5hYmxlZCB7IGdldDsgc2V0OyB9DQoNCgkJLy8vIDxzdW1tYXJ5Pg0KCQkvLy8gVXNlIFN5c3RlbS5UZXh0Lkpzb24gaW5zdGVhZCBvZiBOZXd0b25zb2Z0Lkpzb24NCgkJLy8vIDwvc3VtbWFyeT4NCgkJcHVibGljIGJvb2wgVXNlU3lzdGVtVGV4dEpzb24geyBnZXQ7IHNldDsgfQ0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIEZvciBkYXRlIHR5cGUsIGdlbmVyYXRlIERhdGVPbmx5IHByb3BlcnR5LiBEZWZhdWx0IHRydWUuIElmIGZhbHNlLCBnZW5lcmF0ZSBEYXRlVGltZU9mZnNldCBkZWNvcmF0ZWQgYnkgU3lzdGVtLkNvbXBvbmVudE1vZGVsLkRhdGFBbm5vdGF0aW9ucy5EYXRhVHlwZUF0dHJpYnV0ZShTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGF0YUFubm90YXRpb25zLkRhdGFUeXBlLkRhdGUpDQoJCS8vLyA8L3N1bW1hcnk+DQoJCXB1YmxpYyBib29sIERhdGVUb0RhdGVPbmx5IHsgZ2V0OyBzZXQ7IH0gPSB0cnVlOw0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIEdlbmVyYXRlZCBkYXRhIHR5cGVzIHdpbGwgYmUgZGVjb3JhdGVkIHdpdGggU3lzdGVtLlRleHQuSnNvbi5TZXJpYWxpemF0aW9uLkpzb25Qcm9wZXJ0eU5hbWVBdHRyaWJ1dGUgb3IgTmV3dG9uc29mdC5Kc29uLkpzb25Qcm9wZXJ0eUF0dHJpYnV0ZSB3aXRoIHRoZSBvcmlnaW5hbCBwcm9wZXJ0eSBuYW1lIGRlZmluZWQgaW4gWUFNTC4NCgkJLy8vIDwvc3VtbWFyeT4NCgkJcHVibGljIGJvb2wgRGVjb3JhdGVEYXRhTW9kZWxXaXRoUHJvcGVydHlOYW1lIHsgZ2V0OyBzZXQ7IH0NCg0KCQkvLy8gPHN1bW1hcnk+DQoJCS8vLyBPcGVuQXBDbGluZXRHZW4gZGVjbGFyZXMgYWxsIHZhbHVlIHR5cGUgcHJvcGVydGllcyBpbmNsdWRpbmcgZW51bSBwcm9wZXJ0aWVzIGFzIG51bGxhYmxlIGJ5IGRlZmF1bHQgaW4gZ2VuZXJhdGVkIEMjLCBhbmQgYWxsIHByb3BlcnRpZXMgYXMgbnVsbGFibGUgYnkgZGVmYXVsdCBpbiBnZW5lcmF0ZWQgVHlwZVNjcmlwdCBjb2RlcywgdW5sZXNzIHRoZSBwcm9wZXJ0eSBpcyByZXF1aXJlZC4gDQoJCS8vLyBUaGlzIGlzIHRvIHByZXZlbnQgc2VyaWFsaXplciBmcm9tIGNyZWF0aW5nIHBheWxvYWQgZm9yIHByb3BlcnRpZXMgbm90IGFzc2lnbmVkLiAgDQoJCS8vLyBUaGVyZSBtaWdodCBiZSBzaXR1YXRpb25zIGluIHdoaWNoIHlvdSBkb24ndCB3YW50IHN1Y2ggZGVmYXVsdCBmZWF0dXJlcyBhbmQgd2FudCB0aGUgY29kZWdlbiB0byByZXNwZWN0IE9wZW5BcGkgdjMgb3B0aW9uIG51bGxhYmxlLiBUaGVuIHR1cm4gdGhpcyBzZXR0aW5nIHRvIHRydWUsIHdoaWNoIGFmZmVjdHMgZ2VuZXJhdGVkIEMjIGNvZGVzIG9ubHkuDQoJCS8vLyBQbGVhc2Ugbm90ZSwgU29tZSBPcGVuIEFQSSBkZWZpbml0aW9uIGZpbGVzIGRvIG5vdCBkZWZpbmUgbnVsbGFibGUgZm9yIHNvbWUgcHJlbWl0aXZlIHR5cGVzIGFuZCBlbnVtLCBob3dldmVyLCB0aGUgcmVzcGVjdGl2ZSBiYWNrZW5kcyBkbyBub3QgZXhwZWN0IHNvbWUgcHJvcGVydGllcyBwcmVzZW50ZWQgaW4gdGhlIHBheWxvYWQgb2YgdGhlIHJlcXVlc3QuDQoJCS8vLyB0aGVyZWZvcmUgeW91IG5lZWQgdG8gYnVpbGQgc29tZSBpbnRlZ3JhdGlvbiB0ZXN0IHN1aXRlcyB0byBmaW5kIG91dCB3aGF0IHRoZSBiYWNrZW5kIHdvdWxkIGxpa2UuDQoJCS8vLyBJZiB0aGUgWUFNTCBmaWxlIGRlZmluZXMgYSByZWZlcmVuY2UgdHlwZSBwcm9wZXJ0eSBhcyBudWxsYWJsZSwgdGhlIGNvZGVnZW4gaWdub3JlcyB0aGlzIHNldHRpbmcgc2luY2UgaW4gQyMgYSBudWxsYWJsZSByZWZlcmVuY2UgdHlwZSBwcm9wZXJ0eSBpcyBpbnZhbGlkLCB1bmxlc3MgeW91IHNldCBVc2VOdWxsYWJsZVJlZmVyZW5jZVR5cGUgdG8gdHJ1ZS4NCgkJLy8vIDwvc3VtbWFyeT4NCgkJcHVibGljIGJvb2wgRGlzYWJsZVN5c3RlbU51bGxhYmxlQnlEZWZhdWx0IHsgZ2V0OyBzZXQ7IH0NCg0KCQkvLy8gPHN1bW1hcnk+DQoJCS8vLyBVc2UgVD8gaW5zdGVhZCBvZiBTeXN0ZW0uTnVsbGFibGU8VD4gZm9yIHZhbHVlIHR5cGVzLCB3aGlsZSBieSBkZWZhdWx0IFN5c3RlbS5OdWxsYWJsZTxUPiBpcyB1c2VkLiBDIyAyLjAgZmVhdHVyZQ0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlwdWJsaWMgYm9vbCBVc2VOdWxsYWJsZVF1ZXN0aW9uTWFyayB7IGdldDsgc2V0OyB9DQoNCgkJLy8vIDxzdW1tYXJ5Pg0KCQkvLy8gVXNlIFQ/IGZvciByZWZlcmVuY2UgdHlwZXMuIEMjIDguMCBmZWF0dXJlOiBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9kb3RuZXQvY3NoYXJwL2xhbmd1YWdlLXJlZmVyZW5jZS9idWlsdGluLXR5cGVzL251bGxhYmxlLXJlZmVyZW5jZS10eXBlcw0KCQkvLy8gaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvZG90bmV0L2NzaGFycC9udWxsYWJsZS1taWdyYXRpb24tc3RyYXRlZ2llczogVGhlIGdsb2JhbCBudWxsYWJsZSBjb250ZXh0IGRvZXMgbm90IGFwcGx5IGZvciBnZW5lcmF0ZWQgY29kZSBmaWxlcy4NCgkJLy8vIFRoZXJlZm9yZSBpdCBpcyB1cCB0byB5b3UgYXBwbGljYXRpb24gcHJvZ3JhbW1lcnMgdG8gbWFrZSB0aGUgY29tcGlsZXIgcmVjb2duaXplIHRoZSBnZW5lcmF0ZWQgZmlsZSBpcyBub3Qgb2YgZ2VuZXJhdGVkIGNvZGVzLg0KCQkvLy8gQ2hlY2sgdGVzdCBjYXNlOiBUZXN0X3ZpbWVvKCkNCgkJLy8vIDwvc3VtbWFyeT4NCgkJcHVibGljIGJvb2wgVXNlTnVsbGFibGVSZWZlcmVuY2VUeXBlIHsgZ2V0OyBzZXQ7IH0NCg0KCQkvLy8gPHN1bW1hcnk+DQoJCS8vLyBDcmVhdGUgdGhlIE1vZGVsIGNsYXNzZXMgb25seQ0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlwdWJsaWMgYm9vbCBHZW5lcmF0ZU1vZGVsc09ubHkgeyBnZXQ7IHNldDsgfQ0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIFVzZSBHdWlkIGZvciBmb3JtYXQ6dXVpZCBzcGVjaWZpZXIsIGRlZmF1bHRzIHRvIHN0cmluZy4NCgkJLy8vIDwvc3VtbWFyeT4NCgkJcHVibGljIGJvb2wgVXNlR3VpZCB7IGdldDsgc2V0OyB9DQoNCgkJLy8vIDxzdW1tYXJ5Pg0KCQkvLy8gQnkgZGVmYXVsdCwgYXJyYXkgdHlwZSB3aWxsIGJlIGFycmF5IGluIGdlbmVyYXRlZCBDIy4gWW91IG1heSBnZW5lcmF0ZWQgSUVudW1lcmFibGUgYW5kIHNvbWUgb2YgaXRzIGRlcml2ZWQgdHlwZXMuDQoJCS8vLyA8L3N1bW1hcnk+DQoJCXB1YmxpYyBBcnJheUFzSUVudW1lcmFibGVEZXJpdmVkIEFycmF5QXMgeyBnZXQ7IHNldDsgfQ0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIFVzZSBwYXNjYWwgY2FzZSBmb3IgcHJvcGVydGllcyBhbmQgbW9kZWwgY2xhc3MgbmFtZXMNCgkJLy8vIDwvc3VtbWFyeT4NCgkJcHVibGljIGJvb2wgVXNlUGFzY2FsQ2FzZSB7IGdldDsgc2V0OyB9DQoNCgkJLy8vIDxzdW1tYXJ5Pg0KCQkvLy8gUHJlZml4IGNsYXNzIG5hbWVzIHdpdGggZW5jbG9zaW5nIFR5cGUgbmFtZS4gRGVmYXVsdCBUcnVlLg0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlwdWJsaWMgYm9vbCBQcmVmaXhXaXRoVHlwZU5hbWUgeyBnZXQ7IHNldDsgfSA9IHRydWU7DQoNCgkJLy8vIDxzdW1tYXJ5Pg0KCQkvLy8gQ3JlYXRlIGRlc3RpbmF0aW9uIGZvbGRlciBpZiBub3QgZXhpc3RzLiBBcHBsaWVkIHRvIGJvdGggQ1MgYW5kIFRTLg0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlwdWJsaWMgYm9vbCBDcmVhdGVGb2xkZXIgeyBnZXQ7IHNldDsgfQ0KDQoJCS8vLyA8c3VtbWFyeT4NCgkJLy8vIFR5cGUgbmFtZSB3aXRoIGRvdHMgd2lsbCBoYXZlIHRoZSBkb3R0ZWQgc2VnbWVudHMgYmVjb21lIG5hbWVzcGFjZS4gQVBJc1xwcmVzYWx5dGljcy5pb1xvb3htbFwwLjEuMCBoYXMgdGhpcywgd2l0aCBuYW1lc3BhY2UgYW5kIHR5cGUgbmFtZSBjb2xsaXNpb25zLg0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlwdWJsaWMgYm9vbCBEb3RzVG9OYW1lc3BhY2VzIHsgZ2V0OyBzZXQ7IH0NCg0KCQkvLy8gPHN1bW1hcnk+DQoJCS8vLyBXaGVuIGdlbmVyYXRpbmcgY29kZXMsIHNvcnQgdHlwZXMsIG1lbWJlciBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGJ5IGFscGhhYmV0aWMgb3JkZXIuDQoJCS8vLyA8L3N1bW1hcnk+DQoJCXB1YmxpYyBib29sIFNvcnRUeXBlc01lbWJlcnNBbmRNZXRob2RzIHsgZ2V0OyBzZXQ7IH0NCg0KCQkvLy8gPHN1bW1hcnk+DQoJCS8vLyBNZXRhIGZvciBwbHVnaW5zIHRoYXQgZ2VuZXJhdGUgVHlwZVNjcmlwdC9KYXZhU2NyaXB0IGNvZGVzLg0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlwdWJsaWMgSlNQbHVnaW5bXSBQbHVnaW5zIHsgZ2V0OyBzZXQ7IH0NCgl9DQoNCgkJcHVibGljIGVudW0gQWN0aW9uTmFtZVN0cmF0ZWd5DQoJew0KCQkvLy8gPHN1bW1hcnk+DQoJCS8vLyBFaXRoZXIgT3BlcmF0aW9uSWQgb3IgTWV0aG9kUXVlcnlQYXJhbWV0ZXJzDQoJCS8vLyA8L3N1bW1hcnk+DQoJCURlZmF1bHQgPSAwLA0KDQoJCU9wZXJhdGlvbklkID0gMSwNCg0KCQkvLy8gPHN1bW1hcnk+DQoJCS8vLyBDb21wb3NlIHNvbWV0aGluZyBsaWtlIEdldFNvbWVXaGVyZUJ5SWQxQW5kSWQyLiBHZW5lcmFsbHkgdXNlZCB3aXRoIENvbnRhaW5lck5hbWVTdHJhdGVneS5QYXRoDQoJCS8vLyA8L3N1bW1hcnk+DQoJCU1ldGhvZFF1ZXJ5UGFyYW1ldGVycyA9IDIsDQoNCgkJUGF0aE1ldGhvZFF1ZXJ5UGFyYW1ldGVycyA9IDMsDQoNCgkJLy8vIDxzdW1tYXJ5Pg0KCQkvLy8gQWNjb3JkaW5nIHRvIE9wZW4gQVBJIHNwZWNpZmljYXRpb24sIGl0IGlzIFJFQ09NTUVOREVEIHRoYXQgdGhlIG5hbWluZyBvZiBvcGVyYXRpb25JZCBmb2xsb3dzIGNvbW1vbiBwcm9ncmFtbWluZyBuYW1pbmcgY29udmVudGlvbnMuIA0KCQkvLy8gSG93ZXZlciwgc29tZSBZQU1MIG1heSBuYW1lIG9wZXJhdGlvbklkIGFmdGVyIGEgdmFsaWQgZnVuY3Rpb24gbmFtZS4gRm9yIGV4YW1wbGUsICJsaXN0LWRhdGEtc2V0cyIsICJTZWFyY2ggYnkgbmFtZSIgb3IgIlNlYXJjaEJ5TmFtZUBXa1VsZCIuIA0KCQkvLy8gUmVndWxhciBleHByZXNzaW9uIChyZWdleCkgbWF5IGJlIG5lZWRlZCB0byBwaWNrIHVwIGFscGhhbnVtZXJpYyB3b3JkcyBmcm9tIHN1Y2ggb3BlcmF0aW9uSWQgYW5kIGNyZWF0ZSBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUuDQoJCS8vLyBUaGUgZGVmYXVsdCBSZWdleEZvck5vcm1hbGl6ZWRPcGVyYXRpb25JZCBpcyAvdyouDQoJCS8vLyA8L3N1bW1hcnk+DQoJCU5vcm1hbGl6ZWRPcGVyYXRpb25JZCA9IDQsDQoJfQ0KDQoJcHVibGljIGVudW0gQ29udGFpbmVyTmFtZVN0cmF0ZWd5DQoJew0KCQkvLy8gPHN1bW1hcnk+DQoJCS8vLyBBbGwgY2xpZW50IGZ1bmN0aW9ucyB3aWxsIGJlIGNvbnN0cnVjdGVkIGluIGEgZ29kIGNsYXNzIG5hbWVkIGFmdGVyIENvbnRhaW5lckNsYXNzTmFtZQ0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlOb25lID0gMCwNCg0KCQkvLy8gPHN1bW1hcnk+DQoJCS8vLyBVc2UgdGFncw0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlUYWdzID0gMSwNCg0KCQkvLy8gPHN1bW1hcnk+DQoJCS8vLyBVc2UgcGF0aCBhcyByZXNvdXJjZSBmb3IgZ3JvdXBpbmcsIGFzIGEgY29udGFpbmVyIGNsYXNzIG5hbWUuDQoJCS8vLyA8L3N1bW1hcnk+DQoJCVBhdGggPSAyLA0KCX0NCg0KCXB1YmxpYyBlbnVtIEFycmF5QXNJRW51bWVyYWJsZURlcml2ZWQNCgl7DQoJCUFycmF5ID0gMCwNCg0KCQlJRW51bWVyYWJsZSA9IDEsDQoJCUlMaXN0ID0gMiwNCgkJSUNvbGxlY3Rpb24gPSAzLA0KCQlJUmVhZE9ubHlMaXN0ID0gNCwNCgkJSVJlYWRPbmx5Q29sbGVjdGlvbiA9IDUsDQoNCgkJTGlzdCA9IDYsDQoJCUNvbGxlY3Rpb24gPSA3LA0KCQlSZWFkT25seUNvbGxlY3Rpb24gPSA4LA0KCX0NCg0KCS8vLyA8c3VtbWFyeT4NCgkvLy8gQSBEVE8gY2xhc3MsIG5vdCBwYXJ0IG9mIHRoZSBDb2RlR2VuLmpzb24gDQoJLy8vIDwvc3VtbWFyeT4NCglwdWJsaWMgY2xhc3MgSlNPdXRwdXQNCgl7DQoJCXB1YmxpYyBzdHJpbmcgSlNQYXRoIHsgZ2V0OyBzZXQ7IH0NCg0KCQlwdWJsaWMgYm9vbCBBc01vZHVsZSB7IGdldDsgc2V0OyB9DQoNCgkJLy8vLy8gPHN1bW1hcnk+DQoJCS8vLy8vIEhUVFAgY29udGVudCB0eXBlIHVzZWQgaW4gUE9TVCBvZiBIVFRQIG9mIE5HMi4gc28gdGV4dC9wbGFpbiBjb3VsZCBiZSB1c2VkIHRvIGF2b2lkIHByZWZsaWdodCBpbiBDT1JTLg0KCQkvLy8vLyA8L3N1bW1hcnk+DQoJCXB1YmxpYyBzdHJpbmcgQ29udGVudFR5cGUgeyBnZXQ7IHNldDsgfQ0KCX0NCg0KCXB1YmxpYyBjbGFzcyBKU1BsdWdpbg0KCXsNCgkJLy8vIDxzdW1tYXJ5Pg0KCQkvLy8gQXNzZW1ibHkgZmlsZSBuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uIGRsbCBhbmQgZGlyLiBUaGUgYXNzZW1ibHkgZmlsZSBzaG91bGQgYmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IG9mIHRoZSBtYWluIHByb2dyYW0uDQoJCS8vLyA8L3N1bW1hcnk+DQoJCXB1YmxpYyBzdHJpbmcgQXNzZW1ibHlOYW1lIHsgZ2V0OyBzZXQ7IH0NCg0KCQkvLy8gPHN1bW1hcnk+DQoJCS8vLyBSZWxhdGVkIHBhdGggb3IgYWJzb2x1dGUgcGF0aC4gSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHNsYXNoIC8gdG8gc2VwcGFyYXRlLiBJZiB5b3UgdXNlIGJhY2tsYXNoIFwsIFxcIHNob3VsZCBiZSB1c2VkLg0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlwdWJsaWMgc3RyaW5nIFRhcmdldERpciB7IGdldDsgc2V0OyB9DQoNCgkJLy8vIDxzdW1tYXJ5Pg0KCQkvLy8gR2VuZXJhdGVkIFRTIGZpbGUgbmFtZS4gRm9yIGV4YW1wbGUsIE15TmdDbGllbnRBdXRvLnRzDQoJCS8vLyA8L3N1bW1hcnk+DQoJCXB1YmxpYyBzdHJpbmcgVFNGaWxlIHsgZ2V0OyBzZXQ7IH0NCg0KCQkvLy8vLyA8c3VtbWFyeT4NCgkJLy8vLy8gSFRUUCBjb250ZW50IHR5cGUgdXNlZCBpbiBQT1NUIG9mIEhUVFAgb2YgTkcyLiBGb3IgZXhhbXBsZSwgImFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCIuDQoJCS8vLy8vIDwvc3VtbWFyeT4NCgkJcHVibGljIHN0cmluZyBDb250ZW50VHlwZSB7IGdldDsgc2V0OyB9DQoNCgkJLy8vIDxzdW1tYXJ5Pg0KCQkvLy8gVHJ1ZSB0byBoYXZlICJleHBvcnQgbmFtZXNwYWNlIjsgZmFsc2UgdG8gaGF2ZSAibmFtZXNwYWNlIi4galF1ZXJ5IHdhbnRzICJuYW1lc3BhY2UiIHdoaWxlIEFuZ3VsYXIgMisgd2FudHMgImV4cG9ydCBuYW1lc3BhY2UiLg0KCQkvLy8gPC9zdW1tYXJ5Pg0KCQlwdWJsaWMgYm9vbCBBc01vZHVsZSB7IGdldDsgc2V0OyB9DQoJfQ0KDQpgYGANCg0KRm9yIG1vcmUgZGV0YWlscywgZXNwZWNpYWxseSB0aGUgY29udGV4dHMgb2YgdXNpbmcgdGhlc2Ugc2V0dGluZ3MsIHBsZWFzZSBjaGVjayBbU2V0dGluZ3MgRXhwbGFpbmVkXShodHRwczovL2dpdGh1Yi5jb20vemlqaWFuaHVhbmcvb3BlbmFwaWNsaWVudGdlbi93aWtpL1NldHRpbmdzLUV4cGxhaW5lZCkuDQoNCiMjIENvbXBhcmlzb24gd2l0aCBOU3dhZw0KDQoqIFtRdWljayBDb21wYXJpc29uXShodHRwczovL2dpdGh1Yi5jb20vemlqaWFuaHVhbmcvb3BlbmFwaWNsaWVudGdlbi93aWtpL0NvbXBhcmlzb24td2l0aC1OU3dhZykNCiogW0RldGFpbGVkIENvbXBhcmlzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS96aWppYW5odWFuZy9PcGVuQXBpRXhhbXBsZXMvd2lraSkNCg0KIyMgQXJ0aWNsZXMNCg0KSW4gYWRkaXRpb24gdG8gV2lraSwgcGxlYXNlIHJlZmVyIHRvIHRoZXNlIGFydGljbGVzOg0KDQoNCiogW09wZW5BcGlDbGllbnRHZW4gdG8gR2VuZXJhdGUgU3Ryb25nbHkgVHlwZWQgQ2xpZW50IEFQSSBDb2RlcyBCYXNlZCBvbiBPcGVuIEFQSSBEZWZpbml0aW9uc10oaHR0cHM6Ly93d3cuY29kZXByb2plY3QuY29tL0FydGljbGVzLzUyNjIxODQvT3BlbkFwaUNsaWVudEdlbi10by1HZW5lcmF0ZS1TdHJvbmdseS1UeXBlZC1DbGllbnQpIC8gW0xvY2FsIENvcHldKERvY3MvQXJ0aWNsZXMvL09wZW5BcGlDbGllbnRHZW4lMjB0byUyMEdlbmVyYXRlJTIwU3Ryb25nbHklMjBUeXBlZCUyMENsaWVudCUyMEFQSSUyMENvZGVzJTIwQmFzZWQlMjBvbiUyME9wZW4lMjBBUEklMjBEZWZpbml0aW9ucyUyMC0lMjBDb2RlUHJvamVjdC5odG1sKQ0KKiBbR2VuZXJhdGUgVHlwZWQgRm9ybXMgb2YgQW5ndWxhciBSZWFjdGl2ZSBGb3JtcyBmcm9tIFN3YWdnZXIgLyBPcGVuQVBJIGRlZmluaXRpb25zXShodHRwczovL3d3dy5jb2RlcHJvamVjdC5jb20vQXJ0aWNsZXMvNTM3NTU1Mi9HZW5lcmF0ZS1UeXBlZC1Gb3Jtcy1vZi1Bbmd1bGFyLVJlYWN0aXZlLUZvcm1zLWZybykgLyBbTG9jYWwgQ29weV0oRG9jcy9BcnRpY2xlcy9HZW5lcmF0ZSUyMFR5cGVkJTIwRm9ybXMlMjBvZiUyMEFuZ3VsYXIlMjBSZWFjdGl2ZSUyMEZvcm1zJTIwZnJvbSUyMFN3YWdnZXIlMjBfJTIwT3BlbkFQSSUyMGRlZmluaXRpb25zJTIwLSUyMENvZGVQcm9qZWN0Lmh0bWwp readmeEtag: '"8db8b9b3f8984c83a1cdbbc2806708d0448a5982"' readmeLastModified: Sat, 10 May 2025 05:59:58 GMT repositoryId: 247183556 description: >- Generate strongly typed C# and TypeScript client codes from Open API / Swagger definitions supporting jQuery, Angular, AXIOS, Fetch API, Aurelia and Angular Strictly Typed Forms created: '2020-03-14T00:15:16Z' updated: '2025-12-13T22:21:13Z' language: TypeScript archived: false stars: 76 watchers: 2 forks: 15 owner: zijianhuang logo: https://avatars.githubusercontent.com/u/8484970?v=4 license: MIT repoEtag: '"b4ef186c4c730b01436d54dfbe3c6438d5e4aeab80865d5fface4092bcb140e2"' repoLastModified: Sat, 13 Dec 2025 22:21:13 GMT foundInMaster: true id: 7db93864fa7fbbeccc6ada53c6f9cc62 - source: - https://openapi.tools/ - openapi3 tags name: OpenAPI Generator category: - Code Generators - SDK link: https://openapi-generator.tech language: Java repository: https://github.com/openapitools/openapi-generator source_description: >- A template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI Description (community-driven fork of swagger-codegen) v2: true v3: true repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPk9wZW5BUEkgR2VuZXJhdG9yPC9oMT4KCgo8ZGl2IGFsaWduPSJjZW50ZXIiPgoKWyFbU3RhYmxlIHJlbGVhc2VzIGluIE1hdmVuIENlbnRyYWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tbWV0YWRhdGEvdi9odHRwcy9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWF2ZW4tbWV0YWRhdGEueG1sLnN2ZyldKGh0dHA6Ly9zZWFyY2gubWF2ZW4ub3JnLyNzZWFyY2glN0NnYXYlN0MxJTdDZyUzQSUyMm9yZy5vcGVuYXBpdG9vbHMlMjIlMjBBTkQlMjBhJTNBJTIyb3BlbmFwaS1nZW5lcmF0b3IlMjIpClshW0FwYWNoZSAyLjAgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUFwYWNoZSUyMDIuMC1vcmFuZ2UpXSguL0xJQ0VOU0UpClshW09wZW4gQ29sbGVjdGl2ZSBiYWNrZXJzXShodHRwczovL2ltZy5zaGllbGRzLmlvL29wZW5jb2xsZWN0aXZlL2JhY2tlcnMvb3BlbmFwaV9nZW5lcmF0b3I/Y29sb3I9b3JhbmdlJmxhYmVsPU9wZW5Db2xsZWN0aXZlJTIwQmFja2VycyldKGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL29wZW5hcGlfZ2VuZXJhdG9yKQpbIVtKb2luIHRoZSBTbGFjayBjaGF0IHJvb21dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU2xhY2stSm9pbiUyMHRoZSUyMGNoYXQlMjByb29tLW9yYW5nZSldKGh0dHBzOi8vam9pbi5zbGFjay5jb20vdC9vcGVuYXBpLWdlbmVyYXRvci9zaGFyZWRfaW52aXRlL3p0LTM2dWN4NHlibC1qWXJONmV1b1luNnp4WE5aZGxkb1pBKQpbIVtGb2xsb3cgT3BlbkFQSSBHZW5lcmF0b3IgVHdpdHRlciBhY2NvdW50IHRvIGdldCB0aGUgbGF0ZXN0IHVwZGF0ZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90d2l0dGVyL2ZvbGxvdy9vYXNfZ2VuZXJhdG9yLnN2Zz9zdHlsZT1zb2NpYWwmbGFiZWw9Rm9sbG93KV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9vYXNfZ2VuZXJhdG9yKQpbIVtDb250cmlidXRlIHdpdGggR2l0cG9kXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0NvbnRyaWJ1dGUlMjB3aXRoLUdpdHBvZC05MDhhODU/bG9nbz1naXRwb2QpXShodHRwczovL2dpdHBvZC5pby8jaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvcikKWyFbQ29uYW4gQ2VudGVyXShodHRwczovL3NoaWVsZHMuaW8vY29uYW4vdi9vcGVuYXBpLWdlbmVyYXRvcildKGh0dHBzOi8vY29uYW4uaW8vY2VudGVyL3JlY2lwZXMvb3BlbmFwaS1nZW5lcmF0b3IpClshW1JldnZlZCB1cCBieSBEZXZlbG9jaXR5XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1JldnZlZCUyMHVwJTIwYnktRGV2ZWxvY2l0eS0wNkEwQ0U/bG9nbz1HcmFkbGUmbGFiZWxDb2xvcj0wMjMwM0EpXShodHRwczovL2dlLm9wZW5hcGktZ2VuZXJhdG9yLnRlY2gvc2NhbnMpCjwvZGl2PgoKPGRpdiBhbGlnbj0iY2VudGVyIj4KCltNYXN0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvdHJlZS9tYXN0ZXIpIChgNy4yMC4wYCk6ClshW0ludGVncmF0aW9uIFRlc3QyXShodHRwczovL2NpcmNsZWNpLmNvbS9naC9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3Iuc3ZnP3N0eWxlPXNoaWVsZCldKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvcikKWyFbQml0cmlzZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iaXRyaXNlLzRhMmIxMGE4MTlkMTJiNjcvbWFzdGVyP2xhYmVsPWJpdHJpc2UlM0ElMjBTd2lmdCs0LDUmdG9rZW49ODU5Rk1EUjhRSHdhYkN6d3ZaSzZ2USldKGh0dHBzOi8vYXBwLmJpdHJpc2UuaW8vYXBwLzRhMmIxMGE4MTlkMTJiNjcpCgo8L2Rpdj4KCjxkaXYgYWxpZ249ImNlbnRlciI+Cgo6c3Rhcjo6c3Rhcjo6c3RhcjogSWYgeW91IHdvdWxkIGxpa2UgdG8gY29udHJpYnV0ZSwgcGxlYXNlIHJlZmVyIHRvIFtndWlkZWxpbmVzXShDT05UUklCVVRJTkcubWQpIGFuZCBhIGxpc3Qgb2YgW29wZW4gdGFza3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvaXNzdWVzP3E9aXMlM0FvcGVuK2lzJTNBaXNzdWUrbGFiZWwlM0ElMjJoZWxwK3dhbnRlZCUyMikuIDpzdGFyOjpzdGFyOjpzdGFyOgoKOmJhbmdiYW5nOiBUbyBtaWdyYXRlIGZyb20gU3dhZ2dlciBDb2RlZ2VuIHRvIE9wZW5BUEkgR2VuZXJhdG9yLCBwbGVhc2UgcmVmZXIgdG8gdGhlIFttaWdyYXRpb24gZ3VpZGVdKGRvY3MvbWlncmF0aW9uLWZyb20tc3dhZ2dlci1jb2RlZ2VuLm1kKSA6YmFuZ2Jhbmc6Cgo6bm90ZWJvb2tfd2l0aF9kZWNvcmF0aXZlX2NvdmVyOiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvIHRoZSBbV2lraSBwYWdlXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3dpa2kpIGFuZCBbRkFRXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3dpa2kvRkFRKSA6bm90ZWJvb2tfd2l0aF9kZWNvcmF0aXZlX2NvdmVyOgoKOm5vdGVib29rX3dpdGhfZGVjb3JhdGl2ZV9jb3ZlcjogVGhlIGVCb29rIFtBIEJlZ2lubmVyJ3MgR3VpZGUgdG8gQ29kZSBHZW5lcmF0aW9uIGZvciBSRVNUIEFQSXNdKGh0dHBzOi8vZ3VtLmNvL29wZW5hcGlfZ2VuZXJhdG9yX2Vib29rKSBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGJlZ2lubmVycyA6bm90ZWJvb2tfd2l0aF9kZWNvcmF0aXZlX2NvdmVyOgoKOndhcm5pbmc6IElmIHRoZSBPcGVuQVBJIHNwZWMsIHRlbXBsYXRlcyBvciBhbnkgaW5wdXQgKGUuZy4gb3B0aW9ucywgZW52aXJvbm1lbnQgdmFyaWFibGVzKSBpcyBvYnRhaW5lZCBmcm9tIGFuIHVudHJ1c3RlZCBzb3VyY2Ugb3IgZW52aXJvbm1lbnQsIHBsZWFzZSBtYWtlIHN1cmUgeW91J3ZlIHJldmlld2VkIHRoZXNlIGlucHV0cyBiZWZvcmUgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgdG8gZ2VuZXJhdGUgdGhlIEFQSSBjbGllbnQsIHNlcnZlciBzdHViIG9yIGRvY3VtZW50YXRpb24gdG8gYXZvaWQgcG90ZW50aWFsIHNlY3VyaXR5IGlzc3VlcyAoZS5nLiBbY29kZSBpbmplY3Rpb25dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvZGVfaW5qZWN0aW9uKSkuIEZvciBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMsIHBsZWFzZSBjb250YWN0IFt0ZWFtQG9wZW5hcGl0b29scy5vcmddKG1haWx0bzp0ZWFtQG9wZW5hcGl0b29scy5vcmcpLiA6d2FybmluZzoKCjpiYW5nYmFuZzogQm90aCAiT3BlbkFQSSBUb29scyIgKGh0dHBzOi8vT3BlbkFQSVRvb2xzLm9yZyAtIHRoZSBwYXJlbnQgb3JnYW5pemF0aW9uIG9mIE9wZW5BUEkgR2VuZXJhdG9yKSBhbmQgIk9wZW5BUEkgR2VuZXJhdG9yIiBhcmUgbm90IGFmZmlsaWF0ZWQgd2l0aCBPcGVuQVBJIEluaXRpYXRpdmUgKE9BSSkgOmJhbmdiYW5nOgoKPC9kaXY+CgojIyBTcG9uc29ycwoKSWYgeW91IGZpbmQgT3BlbkFQSSBHZW5lcmF0b3IgdXNlZnVsIGZvciB3b3JrLCBwbGVhc2UgY29uc2lkZXIgYXNraW5nIHlvdXIgY29tcGFueSB0byBzdXBwb3J0IHRoaXMgT3BlbiBTb3VyY2UgcHJvamVjdCBieSBbYmVjb21pbmcgYSBzcG9uc29yXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcGVuYXBpX2dlbmVyYXRvcikuIFlvdSBjYW4gYWxzbyBpbmRpdmlkdWFsbHkgc3BvbnNvciB0aGUgcHJvamVjdCBieSBbYmVjb21pbmcgYSBiYWNrZXJdKGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL29wZW5hcGlfZ2VuZXJhdG9yKS4KCiMjIyMgVGhhbmsgeW91IHRvIG91ciBicm9uemUgc3BvbnNvcnMhCgpbIVtOYW1Tb3JdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL25hbXNvci5wbmcpXShodHRwczovL3d3dy5uYW1zb3IuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpClshW0xpZ2h0Qm93XShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9saWdodGJvdy5wbmcpXShodHRwczovL3d3dy5saWdodGJvdy5uZXQvP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9kb2NzcHJpbmcucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL2RvY3NwcmluZy5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9kYXRhZG9nLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9kYXRhZG9naHEuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvdGhhbGVzLmpwZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9jcGwudGhhbGVzZ3JvdXAuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvYXBpZGVjay5qcGciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3LmFwaWRlY2suY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvcGV4YS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3LnBleGEuY29tLmF1Lz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvbnVtYXJ5LnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cubnVtYXJ5LmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL29uZXNpZ25hbC5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3Lm9uZXNpZ25hbC5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy92aXJ0dWFsYW5zb2Z0d2FyZS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3LnZpcnR1YWxhbnNvZnR3YXJlLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL21lcmdlZGV2LmpwZWciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3Lm1lcmdlLmRldi8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2J1cmtlcnQuanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5idXJrZXJ0LmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2ZpbmJvdXJuZS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3LmZpbmJvdXJuZS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9idW1wc2gucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL2J1bXAuc2gvP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9iaWxldG8ucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5iaWxldG8uY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvYmFpcmVzZGV2LnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cuYmFpcmVzZGV2LmNvbS9zcG9uc29yaW5nLW9wZW4tc291cmNlLXByb2plY3RzLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZG10ZWNoLmpwZWciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3LmRtdGVjaC5kZS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2FkeWVuLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9hZHllbi5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9mb3JuZXgucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL2Zvcm5leC5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9hbGxveWF1dG9tYXRpb24ucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3J1bmFsbG95LmNvbS9zaWdudXA/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249MTUyNF9vcGVuYXBpZ2VuZXJhdG9yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL3Nzc3R3aXR0ZXIucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3Nzc3R3aXR0ZXIuY29tLz91dG1fc291cmNlPWdpdGh1YiZ1dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL3N2aXgucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5zdml4LmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpLWdlbmVyYXRvciZ1dG1fbWVkaXVtPXNwb25zb3JzaGlwJnV0bV9jYW1wYWlnbj1vc3Mtc3BvbnNvcnNoaXApCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvbGl0c2xpbmsucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL2xpdHNsaW5rLmNvbS9zZXJ2aWNlcy9hcnRpZmljaWFsLWludGVsbGlnZW5jZT91dG1fc291cmNlPW9wZW5hcGktZ2VuZXJhdG9yJnV0bV9tZWRpdW09c3BvbnNvcnNoaXAmdXRtX2NhbXBhaWduPW9zcy1zcG9uc29yc2hpcCkKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9kZXNpZ25saS5qcGciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vZGVzaWdubGkuY28/dXRtX3NvdXJjZT1vcGVuYXBpLWdlbmVyYXRvciZ1dG1fbWVkaXVtPXNwb25zb3JzaGlwJnV0bV9jYW1wYWlnbj1vc3Mtc3BvbnNvcnNoaXApCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvaXRtLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9vcGVuc291cmNlLm11ZW5jaGVuLmRlP3V0bV9zb3VyY2U9b3BlbmFwaS1nZW5lcmF0b3ImdXRtX21lZGl1bT1zcG9uc29yc2hpcCZ1dG1fY2FtcGFpZ249b3NzLXNwb25zb3JzaGlwKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2tvbmcucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL2tvbmdocS5jb20vcHJvZHVjdHMva29uZy1rb25uZWN0P3V0bV9tZWRpdW09cmVmZXJyYWwmdXRtX3NvdXJjZT1naXRodWImdXRtX2NhbXBhaWduPXBsYXRmb3JtJnV0bV9jb250ZW50PW9wZW5hcGktZ2VuZXJhdG9yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL3JvdXRlNG1lLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9yb3V0ZTRtZS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaS1nZW5lcmF0b3ImdXRtX21lZGl1bT1zcG9uc29yc2hpcCZ1dG1fY2FtcGFpZ249b3NzLXNwb25zb3JzaGlwKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2RtLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cuZG90Y29tLW1vbml0b3IuY29tL3Nwb25zb3Jpbmctb3Blbi1zb3VyY2UtcHJvamVjdHMvP3V0bV9zb3VyY2U9b3BlbmFwaS1nZW5lcmF0b3ImdXRtX21lZGl1bT1zcG9uc29yc2hpcCZ1dG1fY2FtcGFpZ249b3NzLXNwb25zb3JzaGlwKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2NsaWNraXQuanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5jbGlja2l0dGVjaC5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaS1nZW5lcmF0b3ImdXRtX21lZGl1bT1zcG9uc29yc2hpcCZ1dG1fY2FtcGFpZ249b3NzLXNwb25zb3JzaGlwKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL3VuaWZpZWRfdG8uanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3VuaWZpZWQudG8vP3V0bV9zb3VyY2U9b3BlbmFwaS1nZW5lcmF0b3ImdXRtX21lZGl1bT1zcG9uc29yc2hpcCZ1dG1fY2FtcGFpZ249b3NzLXNwb25zb3JzaGlwKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL3NhdmV0d3QuanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3NhdmV0d3QuY29tLz91dG1fc291cmNlPW9wZW5hcGktZ2VuZXJhdG9yJnV0bV9tZWRpdW09c3BvbnNvcnNoaXAmdXRtX2NhbXBhaWduPW9zcy1zcG9uc29yc2hpcCkKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9zZXJwYXBpLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9zZXJwYXBpLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpLWdlbmVyYXRvciZ1dG1fbWVkaXVtPXNwb25zb3JzaGlwJnV0bV9jYW1wYWlnbj1vc3Mtc3BvbnNvcnNoaXApCgojIyMjIFRoYW5rIHlvdSBHb0RhZGR5IGZvciBzcG9uc29yaW5nIHRoZSBkb21haW4gbmFtZXMsIExpbm9kZSBmb3Igc3BvbnNvcmluZyB0aGUgVlBTLCBDaGVja2x5IGZvciBzcG9uc29yaW5nIHRoZSBBUEkgbW9uaXRvcmluZyBhbmQgR3JhZGxlIGZvciBzcG9uc29yaW5nIERldmVsb2NpdHkKCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZ29kYWRkeS5wbmciIHdpZHRoPSIxNTAiPl0oaHR0cHM6Ly93d3cuZ29kYWRkeS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWyFbTGlub2RlXShodHRwczovL3d3dy5saW5vZGUuY29tL21lZGlhL2ltYWdlcy9sb2dvcy9zdGFuZGFyZC9saWdodC9saW5vZGUtbG9nb19zdGFuZGFyZF9saWdodF9zbWFsbC5wbmcpXShodHRwczovL3d3dy5saW5vZGUuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9lbmNyeXB0ZWQtdGJuMC5nc3RhdGljLmNvbS9pbWFnZXM/cT10Ym4lM0FBTmQ5R2NSQWhFWWFkVXlaWXpHVW90WmlTZFhrVk1xcUxHdW9oeWl4TGw0ZVVwVVY2cEFiVVVMTCIgd2lkdGg9IjE1MCI+XShodHRwczovL2NoZWNrbHlocS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iL2MvY2IvR3JhZGxlX2xvZ28ucG5nLzMyMHB4LUdyYWRsZV9sb2dvLnBuZyIgd2lkdGg9IjE1MCI+XShodHRwczovL2dyYWRsZS5vcmc/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQoKIyMgT3ZlcnZpZXcKCk9wZW5BUEkgR2VuZXJhdG9yIGFsbG93cyBnZW5lcmF0aW9uIG9mIEFQSSBjbGllbnQgbGlicmFyaWVzIChTREsgZ2VuZXJhdGlvbiksIHNlcnZlciBzdHVicywgIGRvY3VtZW50YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gYXV0b21hdGljYWxseSBnaXZlbiBhbiBbT3BlbkFQSSBTcGVjXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgKGJvdGggMi4wIGFuZCAzLjAgYXJlIHN1cHBvcnRlZCkuIEN1cnJlbnRseSwgdGhlIGZvbGxvd2luZyBsYW5ndWFnZXMvZnJhbWV3b3JrcyBhcmUgc3VwcG9ydGVkOgoKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExhbmd1YWdlcy9GcmFtZXdvcmtzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8ICoqQVBJIGNsaWVudHMqKiAgICAgICAgICAgICAgICAgIHwgKipBY3Rpb25TY3JpcHQqKiwgKipBZGEqKiwgKipBcGV4KiosICoqQmFzaCoqLCAqKkMqKiwgKipDIyoqICgubmV0IDIuMCwgMy41IG9yIGxhdGVyLCAuTkVUIFN0YW5kYXJkIDEuMyAtIDIuMSwgLk5FVCBDb3JlIDMuMSwgLk5FVCA1LjAuIExpYnJhcmllczogUmVzdFNoYXJwLCBHZW5lcmljSG9zdCwgSHR0cENsaWVudCksICoqQysrKiogKEFyZHVpbm8sIGNwcC1yZXN0c2RrLCBRdDUsIFRpemVuLCBVbnJlYWwgRW5naW5lIDQpLCAqKkNsb2p1cmUqKiwgKipDcnlzdGFsKiosICoqRGFydCoqLCAqKkVsaXhpcioqLCAqKkVsbSoqLCAqKkVpZmZlbCoqLCAqKkVybGFuZyoqLCAqKkdvKiosICoqR3Jvb3Z5KiosICoqSGFza2VsbCoqIChodHRwLWNsaWVudCwgU2VydmFudCksICoqSmF2YSoqIChBcGFjaGUgSHR0cENsaWVudCA0LngsIEFwYWNoZSBIdHRwQ2xpZW50IDUueCwgSmVyc2V5Mi54LCBPa0h0dHAsIFJldHJvZml0MS54LCBSZXRyb2ZpdDIueCwgRmVpZ24sIFJlc3RUZW1wbGF0ZSwgUkVTVEVhc3ksIFZlcnR4LCBHb29nbGUgQVBJIENsaWVudCBMaWJyYXJ5IGZvciBKYXZhLCBSZXN0LWFzc3VyZWQsIFNwcmluZyA1IFdlYiBDbGllbnQsIFNwcmluZyA2IFJlc3RDbGllbnQsIE1pY3JvUHJvZmlsZSBSZXN0IENsaWVudCwgSGVsaWRvbiksICoqSmV0YnJhaW5zIEhUVFAgQ2xpZW50KiosICoqSnVsaWEqKiwgKiprNioqLCAqKktvdGxpbioqLCAqKkx1YSoqLCAqKk40SlMqKiwgKipOaW0qKiwgKipOb2RlLmpzL0phdmFTY3JpcHQqKiAoRVM1LCBFUzYsIEFuZ3VsYXJKUyB3aXRoIEdvb2dsZSBDbG9zdXJlIENvbXBpbGVyIGFubm90YXRpb25zLCBGbG93IHR5cGVzLCBBcG9sbG8gR3JhcGhRTCBEYXRhU3RvcmUpLCAqKk9iamVjdGl2ZS1DKiosICoqT0NhbWwqKiwgKipQZXJsKiosICoqUEhQKiosICoqUG93ZXJTaGVsbCoqLCAqKlB5dGhvbioqLCAqKlIqKiwgKipSdWJ5KiosICoqUnVzdCoqIChoeXBlciwgcmVxd2VzdCwgcnVzdC1zZXJ2ZXIpLCAqKlNjYWxhKiogKGFra2EsIGh0dHA0cywgc2NhbGF6LCBzdHRwLCBzd2FnZ2VyLWFzeW5jLWh0dHBjbGllbnQsIHBla2tvKSwgKipTd2lmdCoqICgyLngsIDMueCwgNC54LCA1LngsIDYueCksICoqVHlwZXNjcmlwdCoqIChBbmd1bGFySlMsIEFuZ3VsYXIgKDkueCAtIDE5LngpLCBBdXJlbGlhLCBBeGlvcywgRmV0Y2gsIEludmVyc2lmeSwgalF1ZXJ5LCBOZXN0anMsIE5vZGUsIHJlZHV4LXF1ZXJ5LCBSeGpzKSwgKipYb0pvKiosICoqWmFwaWVyKiogfAp8ICoqU2VydmVyIHN0dWJzKiogICAgICAgICAgICAgICAgIHwgKipBZGEqKiwgKipDIyoqIChBU1AuTkVUIENvcmUsIEF6dXJlIEZ1bmN0aW9ucyksICoqQysrKiogKE9hdCsrLCBQaXN0YWNoZSwgUmVzdGJlZCwgUXQ1IFFIVFRQRW5naW5lKSwgKipFcmxhbmcqKiwgKipGIyoqIChHaXJhZmZlKSwgKipHbyoqIChuZXQvaHR0cCwgR2luLCBFY2hvKSwgKipIYXNrZWxsKiogKFNlcnZhbnQsIFllc29kKSwgKipKYXZhKiogKE1TRjRKLCBTcHJpbmcsIFVuZGVydG93LCBKQVgtUlM6IENESSwgQ1hGLCBJbmZsZWN0b3IsIEplcnNleSwgUmVzdEVhc3ksIFBsYXkgRnJhbWV3b3JrLCBbUEtNU1RdKGh0dHBzOi8vZ2l0aHViLmNvbS9Qcm9LYXJtYS1JbmMvcGttc3QtZ2V0dGluZy1zdGFydGVkLWV4YW1wbGVzKSwgW1ZlcnQueF0oaHR0cHM6Ly92ZXJ0eC5pby8pLCBbQXBhY2hlIENhbWVsXShodHRwczovL2NhbWVsLmFwYWNoZS5vcmcvKSwgW0hlbGlkb25dKGh0dHBzOi8vaGVsaWRvbi5pby8pKSwgKipKdWxpYSoqLCAqKktvdGxpbioqIChTcHJpbmcgQm9vdCwgW0t0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9rdG9yaW8va3RvciksIFtWZXJ0LnhdKGh0dHBzOi8vdmVydHguaW8vKSksICoqUEhQKiogKFtGbGlnaHRdKGh0dHBzOi8vZG9jcy5mbGlnaHRwaHAuY29tLyksIExhcmF2ZWwsIEx1bWVuLCBbTWV6emlvIChma2EgWmVuZCBFeHByZXNzaXZlKV0oaHR0cHM6Ly9naXRodWIuY29tL21lenppby9tZXp6aW8pLCBTbGltLCBTaWxleCwgW1N5bWZvbnldKGh0dHBzOi8vc3ltZm9ueS5jb20vKSksICoqUHl0aG9uKiogKEZhc3RBUEksIEZsYXNrKSwgKipOb2RlSlMqKiwgKipSdWJ5KiogKFNpbmF0cmEsIFJhaWxzNSksICoqUnVzdCoqIChbcnVzdC1zZXJ2ZXJdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9kb2NzL2dlbmVyYXRvcnMvcnVzdC1zZXJ2ZXIvKSksICoqU2NhbGEqKiAoQWtrYSwgW0ZpbmNoXShodHRwczovL2dpdGh1Yi5jb20vZmluYWdsZS9maW5jaCksIFtMYWdvbV0oaHR0cHM6Ly9naXRodWIuY29tL2xhZ29tL2xhZ29tKSwgW1BsYXldKGh0dHBzOi8vd3d3LnBsYXlmcmFtZXdvcmsuY29tLyksIFtDYXNrXShodHRwczovL2dpdGh1Yi5jb20vY29tLWxpaGFveWkvY2FzayksIFNjYWxhdHJhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgKipBUEkgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3JzKiogfCAqKkhUTUwqKiwgKipDb25mbHVlbmNlIFdpa2kqKiwgKipBc2NpaWRvYyoqLCAqKk1hcmtkb3duKiosICoqUGxhbnRVTUwqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICoqQ29uZmlndXJhdGlvbiBmaWxlcyoqICAgICAgICAgIHwgWyoqQXBhY2hlMioqXShodHRwczovL2h0dHBkLmFwYWNoZS5vcmcvKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAqKk90aGVycyoqICAgICAgICAgICAgICAgICAgICAgICB8ICoqR3JhcGhRTCoqLCAqKkpNZXRlcioqLCAqKkt0b3JtKiosICoqTXlTUUwgU2NoZW1hKiosICoqUG9zdG1hbiBDb2xsZWN0aW9uKiosICoqUHJvdG9jb2wgQnVmZmVyKiosICoqV1NETCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgojIyBUYWJsZSBvZiBjb250ZW50cwoKLSBbU3BvbnNvcnNdKCNzcG9uc29ycykKICAgIC0gW1RoYW5rIHlvdSB0byBvdXIgYnJvbnplIHNwb25zb3JzIV0oI3RoYW5rLXlvdS10by1vdXItYnJvbnplLXNwb25zb3JzKQogICAgLSBbVGhhbmsgeW91IEdvRGFkZHkgZm9yIHNwb25zb3JpbmcgdGhlIGRvbWFpbiBuYW1lcywgTGlub2RlIGZvciBzcG9uc29yaW5nIHRoZSBWUFMsIENoZWNrbHkgZm9yIHNwb25zb3JpbmcgdGhlIEFQSSBtb25pdG9yaW5nIGFuZCBHcmFkbGUgZm9yIHNwb25zb3JpbmcgRGV2ZWxvY2l0eV0oI3RoYW5rLXlvdS1nb2RhZGR5LWZvci1zcG9uc29yaW5nLXRoZS1kb21haW4tbmFtZXMtbGlub2RlLWZvci1zcG9uc29yaW5nLXRoZS12cHMtY2hlY2tseS1mb3Itc3BvbnNvcmluZy10aGUtYXBpLW1vbml0b3JpbmctYW5kLWdyYWRsZS1mb3Itc3BvbnNvcmluZy1kZXZlbG9jaXR5KQotIFtPdmVydmlld10oI292ZXJ2aWV3KQotIFtUYWJsZSBvZiBjb250ZW50c10oI3RhYmxlLW9mLWNvbnRlbnRzKQotIFsxIC0gSW5zdGFsbGF0aW9uXSgjMS0tLWluc3RhbGxhdGlvbikKICAtIFsxLjEgLSBDb21wYXRpYmlsaXR5XSgjMTEtLS1jb21wYXRpYmlsaXR5KQotIFsxLjIgLSBBcnRpZmFjdHMgb24gTWF2ZW4gQ2VudHJhbF0oIzEyLS0tYXJ0aWZhY3RzLW9uLW1hdmVuLWNlbnRyYWwpCiAgLSBbMS4zIC0gRG93bmxvYWQgSkFSXSgjMTMtLS1kb3dubG9hZC1qYXIpCiAgLSBbTGF1bmNoZXIgU2NyaXB0XSgjbGF1bmNoZXItc2NyaXB0KQogIC0gWzEuNCAtIEJ1aWxkIFByb2plY3RzXSgjMTQtLS1idWlsZC1wcm9qZWN0cykKICAgIC0gW05peCB1c2Vyc10oI25peC11c2VycykKICAtIFsxLjUgLSBIb21lYnJld10oIzE1LS0taG9tZWJyZXcpCiAgLSBbMS42IC0gRG9ja2VyXSgjMTYtLS1kb2NrZXIpCiAgICAtIFtQdWJsaWMgUHJlLWJ1aWx0IERvY2tlciBpbWFnZXNdKCNwdWJsaWMtcHJlLWJ1aWx0LWRvY2tlci1pbWFnZXMpCiAgICAtIFtPcGVuQVBJIEdlbmVyYXRvciBDTEkgRG9ja2VyIEltYWdlXSgjb3BlbmFwaS1nZW5lcmF0b3ItY2xpLWRvY2tlci1pbWFnZSkKICAgIC0gW09wZW5BUEkgR2VuZXJhdG9yIE9ubGluZSBEb2NrZXIgSW1hZ2VdKCNvcGVuYXBpLWdlbmVyYXRvci1vbmxpbmUtZG9ja2VyLWltYWdlKQogICAgLSBbRGV2ZWxvcG1lbnQgaW4gZG9ja2VyXSgjZGV2ZWxvcG1lbnQtaW4tZG9ja2VyKQogICAgICAtIFtUcm91Ymxlc2hvb3RpbmddKCN0cm91Ymxlc2hvb3RpbmcpCiAgICAtIFtSdW4gRG9ja2VyIGluIFZhZ3JhbnRdKCNydW4tZG9ja2VyLWluLXZhZ3JhbnQpCiAgLSBbMS43IC0gTlBNXSgjMTctLS1ucG0pCiAgLSBbMS44IC0gcGlwXSgjMTgtLS1waXApCi0gWzIgLSBHZXR0aW5nIFN0YXJ0ZWRdKCMyLS0tZ2V0dGluZy1zdGFydGVkKQotIFszIC0gVXNhZ2VdKCMzLS0tdXNhZ2UpCiAgLSBbVG8gZ2VuZXJhdGUgYSBzYW1wbGUgY2xpZW50IGxpYnJhcnldKCN0by1nZW5lcmF0ZS1hLXNhbXBsZS1jbGllbnQtbGlicmFyeSkKICAtIFszLjEgLSBDdXN0b21pemF0aW9uXSgjMzEtLS1jdXN0b21pemF0aW9uKQogIC0gWzMuMiAtIFdvcmtmbG93IEludGVncmF0aW9uIChNYXZlbiwgR3JhZGxlLCBHaXRodWIsIENJL0NEKV0oIzMyLS0td29ya2Zsb3ctaW50ZWdyYXRpb24tbWF2ZW4tZ3JhZGxlLWdpdGh1Yi1jaWNkKQogIC0gWzMuMyAtIE9ubGluZSBPcGVuQVBJIGdlbmVyYXRvcl0oIzMzLS0tb25saW5lLW9wZW5hcGktZ2VuZXJhdG9yKQogIC0gWzMuNCAtIExpY2Vuc2UgaW5mb3JtYXRpb24gb24gR2VuZXJhdGVkIENvZGVdKCMzNC0tLWxpY2Vuc2UtaW5mb3JtYXRpb24tb24tZ2VuZXJhdGVkLWNvZGUpCiAgLSBbMy41IC0gSURFIEludGVncmF0aW9uXSgjMzUtLS1pZGUtaW50ZWdyYXRpb24pCi0gWzQgLSBDb21wYW5pZXMvUHJvamVjdHMgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3JdKCM0LS0tY29tcGFuaWVzcHJvamVjdHMtdXNpbmctb3BlbmFwaS1nZW5lcmF0b3IpCi0gWzUgLSBQcmVzZW50YXRpb25zL1ZpZGVvcy9UdXRvcmlhbHMvQm9va3NdKCM1LS0tcHJlc2VudGF0aW9uc3ZpZGVvc3R1dG9yaWFsc2Jvb2tzKQotIFs2IC0gQWJvdXQgVXNdKCM2LS0tYWJvdXQtdXMpCiAgLSBbNi4xIC0gT3BlbkFQSSBHZW5lcmF0b3IgQ29yZSBUZWFtXSgjNjEtLS1vcGVuYXBpLWdlbmVyYXRvci1jb3JlLXRlYW0pCiAgICAtIFtDb3JlIFRlYW0gTWVtYmVyc10oI2NvcmUtdGVhbS1tZW1iZXJzKQogICAgLSBbVGVtcGxhdGUgQ3JlYXRvcl0oI3RlbXBsYXRlLWNyZWF0b3IpCiAgICAtIFtIb3cgdG8gam9pbiB0aGUgY29yZSB0ZWFtXSgjaG93LXRvLWpvaW4tdGhlLWNvcmUtdGVhbSkKICAtIFs2LjIgLSBPcGVuQVBJIEdlbmVyYXRvciBUZWNobmljYWwgQ29tbWl0dGVlXSgjNjItLS1vcGVuYXBpLWdlbmVyYXRvci10ZWNobmljYWwtY29tbWl0dGVlKQogICAgLSBbTWVtYmVycyBvZiBUZWNobmljYWwgQ29tbWl0dGVlXSgjbWVtYmVycy1vZi10ZWNobmljYWwtY29tbWl0dGVlKQogIC0gWzYuMyAtIEhpc3Rvcnkgb2YgT3BlbkFQSSBHZW5lcmF0b3JdKCM2My0tLWhpc3Rvcnktb2Ytb3BlbmFwaS1nZW5lcmF0b3IpCiAgICAtIFtGb3VuZGluZyBNZW1iZXJzIChhbHBoYWJldGljYWwgb3JkZXIpOl0oI2ZvdW5kaW5nLW1lbWJlcnMtYWxwaGFiZXRpY2FsLW9yZGVyKQotIFs3IC0gTGljZW5zZV0oIzctLS1saWNlbnNlKQoKIyMgWzEgLSBJbnN0YWxsYXRpb25dKCN0YWJsZS1vZi1jb250ZW50cykKCiMjIyBbMS4xIC0gQ29tcGF0aWJpbGl0eV0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKVGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBoYXMgdW5kZXJnb25lIDMgcmV2aXNpb25zIHNpbmNlIGluaXRpYWwgY3JlYXRpb24gaW4gMjAxMC4gIFRoZSBvcGVuYXBpLWdlbmVyYXRvciBwcm9qZWN0IGhhcyB0aGUgZm9sbG93aW5nIGNvbXBhdGliaWxpdGllcyB3aXRoIHRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb246Cgp8IE9wZW5BUEkgR2VuZXJhdG9yIFZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlbGVhc2UgRGF0ZSB8IE5vdGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IDcuMjAuMCAodXBjb21pbmcgbWlub3IgcmVsZWFzZSkgW1NOQVBTSE9UXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3dpa2kvRkFRI2hvdy10by10ZXN0LXdpdGgtdGhlLWxhdGVzdC1tYXN0ZXItb2Ytb3BlbmFwaS1nZW5lcmF0b3IpIHwgMjAuMDIuMjAyNiAgIHwgTWlub3IgcmVsZWFzZSB3aXRoIGJyZWFraW5nIGNoYW5nZXMgKHdpdGggZmFsbGJhY2spIHwKfCBbNy4xOS4wXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3JlbGVhc2VzL3RhZy92Ny4xOS4wKSAobGF0ZXN0IHN0YWJsZSByZWxlYXNlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwLjAxLjIwMjYgICB8IE1pbm9yIHJlbGVhc2Ugd2l0aCBicmVha2luZyBjaGFuZ2VzICh3aXRoIGZhbGxiYWNrKSB8CnwgWzYuNi4wXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3JlbGVhc2VzL3RhZy92Ni42LjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEuMDUuMjAyMyAgIHwgTWlub3IgcmVsZWFzZSB3aXRoIGJyZWFraW5nIGNoYW5nZXMgKHdpdGggZmFsbGJhY2spIHwKfCBbNS40LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvcmVsZWFzZXMvdGFnL3Y1LjQuMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMS4wMS4yMDIyICAgfCBNaW5vciByZWxlYXNlIHdpdGggYnJlYWtpbmcgY2hhbmdlcyAod2l0aCBmYWxsYmFjaykgfAp8IFs0LjMuMV0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcy90YWcvdjQuMy4xKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDA2LjA1LjIwMjAgICB8IFBhdGNoIHJlbGVhc2UgKGVuaGFuY2VtZW50cywgYnVnIGZpeGVzLCBldGMpICAgICAgICAgICAgICAgICAgICAgICB8CgpPcGVuQVBJIFNwZWMgY29tcGF0aWJpbGl0eTogMS4wLCAxLjEsIDEuMiwgMi4wLCAzLjAsIDMuMSAoYmV0YSBzdXBwb3J0KQoKKFdlIGRvIG5vdCBwdWJsaXNoIGRhaWx5L25pZ2h0bHkgYnVpbGQuIFBsZWFzZSB1c2UgU05BUFNIT1QgaW5zdGVhZCkKCkZvciBvbGQgcmVsZWFzZXMsIHBsZWFzZSByZWZlciB0byB0aGUgWyoqUmVsZWFzZSoqXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3JlbGVhc2VzKSBwYWdlLgoKRm9yIGRlY29tbWlzc2lvbmVkIGdlbmVyYXRvcnMvbGlicmFyaWVzL2ZyYW1ld29ya3MsIHBsZWFzZSByZWZlciB0byBbdGhlICJEZWNvbW1pc3Npb24iIGxhYmVsXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL2lzc3Vlcz9xPWxhYmVsJTNBRGVjb21taXNzaW9uK2lzJTNBbWVyZ2VkKykgaW4gdGhlIHB1bGwgcmVxdWVzdCBwYWdlLgoKIyMgWzEuMiAtIEFydGlmYWN0cyBvbiBNYXZlbiBDZW50cmFsXSgjdGFibGUtb2YtY29udGVudHMpCgpZb3UgY2FuIGZpbmQgb3VyIHJlbGVhc2VkIGFydGlmYWN0cyBvbiBtYXZlbiBjZW50cmFsOgoKKipDb3JlOioqCmBgYHhtbAo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPm9yZy5vcGVuYXBpdG9vbHM8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLWdlbmVyYXRvcjwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPiR7b3BlbmFwaS1nZW5lcmF0b3ItdmVyc2lvbn08L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgClNlZSB0aGUgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBbb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9hcnRpZmFjdC9vcmcub3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKSBhcnRpZmFjdCBhdmFpbGFibGUgb24gbWF2ZW4gY2VudHJhbC4KCioqQ2xpOioqCmBgYHhtbAo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPm9yZy5vcGVuYXBpdG9vbHM8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLWdlbmVyYXRvci1jbGk8L2FydGlmYWN0SWQ+CiAgICA8dmVyc2lvbj4ke29wZW5hcGktZ2VuZXJhdG9yLXZlcnNpb259PC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CmBgYApTZWUgdGhlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgW29wZW5hcGktZ2VuZXJhdG9yLWNsaV0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnL2FydGlmYWN0L29yZy5vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpKSBhcnRpZmFjdCBhdmFpbGFibGUgb24gbWF2ZW4gY2VudHJhbC4KCioqTWF2ZW4gcGx1Z2luOioqCmBgYHhtbAo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPm9yZy5vcGVuYXBpdG9vbHM8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICA8dmVyc2lvbj4ke29wZW5hcGktZ2VuZXJhdG9yLXZlcnNpb259PC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CmBgYAoqIFNlZSB0aGUgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBbb3BlbmFwaS1nZW5lcmF0b3ItbWF2ZW4tcGx1Z2luXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvYXJ0aWZhY3Qvb3JnLm9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW4pIGFydGlmYWN0IGF2YWlsYWJsZSBvbiBtYXZlbiBjZW50cmFsLgoqIFtSZWFkbWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvYmxvYi9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW4vUkVBRE1FLm1kKQoKKipHcmFkbGUgcGx1Z2luOioqCmBgYHhtbAo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPm9yZy5vcGVuYXBpdG9vbHM8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLWdlbmVyYXRvci1ncmFkbGUtcGx1Z2luPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+JHtvcGVuYXBpLWdlbmVyYXRvci12ZXJzaW9ufTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKKiBTZWUgdGhlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgW29wZW5hcGktZ2VuZXJhdG9yLWdyYWRsZS1wbHVnaW5dKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9hcnRpZmFjdC9vcmcub3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWdyYWRsZS1wbHVnaW4pIGFydGlmYWN0IGF2YWlsYWJsZSBvbiBtYXZlbiBjZW50cmFsLgoqIFtSZWFkbWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvYmxvYi9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci1ncmFkbGUtcGx1Z2luL1JFQURNRS5hZG9jKQoKIyMjIFsxLjMgLSBEb3dubG9hZCBKQVJdKCN0YWJsZS1vZi1jb250ZW50cykKPCEtLSBSRUxFQVNFX1ZFUlNJT04gLS0+CklmIHlvdSdyZSBsb29raW5nIGZvciB0aGUgbGF0ZXN0IHN0YWJsZSB2ZXJzaW9uLCB5b3UgY2FuIGdyYWIgaXQgZGlyZWN0bHkgZnJvbSBNYXZlbi5vcmcgKEphdmEgMTEgcnVudGltZSBhdCBhIG1pbmltdW0pOgoKSkFSIGxvY2F0aW9uOiBgaHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLzcuMTkuMC9vcGVuYXBpLWdlbmVyYXRvci1jbGktNy4xOS4wLmphcmAKCkZvciAqKk1hYy9MaW51eCoqIHVzZXJzOgpgYGBzaAp3Z2V0IGh0dHBzOi8vcmVwbzEubWF2ZW4ub3JnL21hdmVuMi9vcmcvb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS83LjE5LjAvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLTcuMTkuMC5qYXIgLU8gb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphcgpgYGAKCkZvciAqKldpbmRvd3MqKiB1c2VycywgeW91IHdpbGwgbmVlZCB0byBpbnN0YWxsIFt3Z2V0XShodHRwOi8vZ251d2luMzIuc291cmNlZm9yZ2UubmV0L3BhY2thZ2VzL3dnZXQuaHRtKSBvciB5b3UgY2FuIHVzZSBJbnZva2UtV2ViUmVxdWVzdCBpbiBQb3dlclNoZWxsICgzLjArKSwgZS5nLgpgYGAKSW52b2tlLVdlYlJlcXVlc3QgLU91dEZpbGUgb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBodHRwczovL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIvb3JnL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvNy4xOS4wL29wZW5hcGktZ2VuZXJhdG9yLWNsaS03LjE5LjAuamFyCmBgYAoKQWZ0ZXIgZG93bmxvYWRpbmcgdGhlIEpBUiwgcnVuIGBqYXZhIC1qYXIgb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBoZWxwYCB0byBzaG93IHRoZSB1c2FnZS4KCkZvciBNYWMgdXNlcnMsIHBsZWFzZSBtYWtlIHN1cmUgSmF2YSAxMSBpcyBpbnN0YWxsZWQgKFRpcHM6IHJ1biBgamF2YSAtdmVyc2lvbmAgdG8gY2hlY2sgdGhlIHZlcnNpb24pLCBhbmQgZXhwb3J0IGBKQVZBX0hPTUVgIGluIG9yZGVyIHRvIHVzZSB0aGUgc3VwcG9ydGVkIEphdmEgdmVyc2lvbjoKYGBgc2gKZXhwb3J0IEpBVkFfSE9NRT1gL3Vzci9saWJleGVjL2phdmFfaG9tZSAtdiAxLjExYApleHBvcnQgUEFUSD0ke0pBVkFfSE9NRX0vYmluOiRQQVRICmBgYAoKPCEtLSAvUkVMRUFTRV9WRVJTSU9OIC0tPgojIyMgTGF1bmNoZXIgU2NyaXB0CgpPbmUgZG93bnNpZGUgdG8gbWFudWFsIGphciBkb3dubG9hZHMgaXMgdGhhdCB5b3UgZG9uJ3Qga2VlcCB1cC10by1kYXRlIHdpdGggdGhlIGxhdGVzdCByZWxlYXNlZCB2ZXJzaW9uLiBXZSBoYXZlIGEgQmFzaCBsYXVuY2hlciBzY3JpcHQgYXQgW2Jpbi91dGlscy9vcGVuYXBpLWdlbmVyYXRvci5jbGkuc2hdKC4vYmluL3V0aWxzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS5zaCkgd2hpY2ggcmVzb2x2ZXMgdGhpcyBpc3N1ZS4KClRvIGluc3RhbGwgdGhlIGxhdW5jaGVyIHNjcmlwdCwgY29weSB0aGUgY29udGVudHMgb2YgdGhlIHNjcmlwdCB0byBhIGxvY2F0aW9uIG9uIHlvdXIgcGF0aCBhbmQgbWFrZSB0aGUgc2NyaXB0IGV4ZWN1dGFibGUuCgpBbiBleGFtcGxlIG9mIHNldHRpbmcgdGhpcyB1cCAoTk9URTogQWx3YXlzIGV2YWx1YXRlIHNjcmlwdHMgY3VybGVkIGZyb20gZXh0ZXJuYWwgc3lzdGVtcyBiZWZvcmUgZXhlY3V0aW5nIHRoZW0pLgoKYGBgCm1rZGlyIC1wIH4vYmluL29wZW5hcGl0b29scwpjdXJsIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL2Jpbi91dGlscy9vcGVuYXBpLWdlbmVyYXRvci1jbGkuc2ggPiB+L2Jpbi9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpCmNobW9kIHUreCB+L2Jpbi9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpCmV4cG9ydCBQQVRIPSRQQVRIOn4vYmluL29wZW5hcGl0b29scy8KYGBgCgpOb3csIGBvcGVuYXBpLWdlbmVyYXRvci1jbGlgIGlzICJpbnN0YWxsZWQiLiBPbiBpbnZvY2F0aW9uLCBpdCB3aWxsIHF1ZXJ5IHRoZSBHaXRIdWIgcmVwb3NpdG9yeSBmb3IgdGhlIG1vc3QgcmVjZW50bHkgcmVsZWFzZWQgdmVyc2lvbi4gSWYgdGhpcyBtYXRjaGVzIHRoZSBsYXN0IGRvd25sb2FkZWQgamFyLAppdCB3aWxsIGV4ZWN1dGUgYXMgbm9ybWFsLiBJZiBhIG5ld2VyIHZlcnNpb24gaXMgZm91bmQsIHRoZSBzY3JpcHQgd2lsbCBkb3dubG9hZCB0aGUgbGF0ZXN0IHJlbGVhc2UgYW5kIGV4ZWN1dGUgaXQuCgpJZiB5b3UgbmVlZCB0byBpbnZva2UgYW4gb2xkZXIgdmVyc2lvbiBvZiB0aGUgZ2VuZXJhdG9yLCB5b3UgY2FuIGRlZmluZSB0aGUgdmFyaWFibGUgYE9QRU5BUElfR0VORVJBVE9SX1ZFUlNJT05gIGVpdGhlciBhZCBob2Mgb3IgZ2xvYmFsbHkuIFlvdSBjYW4gZXhwb3J0IHRoaXMgdmFyaWFibGUgaWYgeW91J2QgbGlrZSB0byBwZXJzaXN0IGEgc3BlY2lmaWMgcmVsZWFzZSB2ZXJzaW9uLgoKRXhhbXBsZXM6CgpgYGAKIyBFeGVjdXRlIGxhdGVzdCByZWxlYXNlZCBvcGVuYXBpLWdlbmVyYXRvci1jbGkKb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24KCiMgRXhlY3V0ZSB2ZXJzaW9uIDQuMS4wIGZvciB0aGUgY3VycmVudCBpbnZvY2F0aW9uLCByZWdhcmRsZXNzIG9mIHRoZSBsYXRlc3QgcmVsZWFzZWQgdmVyc2lvbgpPUEVOQVBJX0dFTkVSQVRPUl9WRVJTSU9OPTQuMS4wIG9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uCgojIEV4ZWN1dGUgdmVyc2lvbiA0LjEuMC1TTkFQU0hPVCBmb3IgdGhlIGN1cnJlbnQgaW52b2NhdGlvbgpPUEVOQVBJX0dFTkVSQVRPUl9WRVJTSU9OPTQuMS4wLVNOQVBTSE9UIG9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uCgojIEV4ZWN1dGUgdmVyc2lvbiA0LjAuMiBmb3IgZXZlcnkgaW52b2NhdGlvbiBpbiB0aGUgY3VycmVudCBzaGVsbCBzZXNzaW9uCmV4cG9ydCBPUEVOQVBJX0dFTkVSQVRPUl9WRVJTSU9OPTQuMC4yCm9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uICMgaXMgNC4wLjIKb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24gIyBpcyBhbHNvIDQuMC4yCgojIFRvICJpbnN0YWxsIiBhIHNwZWNpZmljIHZlcnNpb24sIHNldCB0aGUgdmFyaWFibGUgaW4gLmJhc2hyYy8uYmFzaF9wcm9maWxlCmVjaG8gImV4cG9ydCBPUEVOQVBJX0dFTkVSQVRPUl9WRVJTSU9OPTQuMC4yIiA+PiB+Ly5iYXNocmMKc291cmNlIH4vLmJhc2hyYwpvcGVuYXBpLWdlbmVyYXRvci1jbGkgdmVyc2lvbiAjIGlzIGFsd2F5cyA0LjAuMiwgdW5sZXNzIGFueSBvZiB0aGUgYWJvdmUgb3ZlcnJpZGVzIGFyZSBkb25lIGFkIGhvYwpgYGAKCiMjIyBbMS40IC0gQnVpbGQgUHJvamVjdHNdKCN0YWJsZS1vZi1jb250ZW50cykKClRvIGJ1aWxkIGZyb20gc291cmNlLCB5b3UgbmVlZCB0aGUgZm9sbG93aW5nIGluc3RhbGxlZCBhbmQgYXZhaWxhYmxlIGluIHlvdXIgYCRQQVRIOmAKCiogW0phdmEgMTFdKGh0dHBzOi8vYWRvcHRpdW0ubmV0LykKCiogW0FwYWNoZSBNYXZlbiAzLjguOCBvciBncmVhdGVyXShodHRwczovL21hdmVuLmFwYWNoZS5vcmcvKSAob3B0aW9uYWwpCgpBZnRlciBjbG9uaW5nIHRoZSBwcm9qZWN0LCB5b3UgY2FuIGJ1aWxkIGl0IGZyb20gc291cmNlIHVzaW5nIFttYXZlbiB3cmFwcGVyXShodHRwczovL21hdmVuLmFwYWNoZS5vcmcvd3JhcHBlci8pOgoKLSBMaW51eDogYC4vbXZudyBjbGVhbiBpbnN0YWxsYAotIFdpbmRvd3M6IGBtdm53LmNtZCBjbGVhbiBpbnN0YWxsYAoKIyMjIyBOaXggdXNlcnMKCklmIHlvdSdyZSBhIG5peCB1c2VyLCB5b3UgY2FuIGVudGVyIE9wZW5BUEkgR2VuZXJhdG9yIHNoZWxsLCBieSB0eXBpbmc6CmBgYHNoCm5peCBkZXZlbG9wCmBgYApJdCB3aWxsIGVudGVyIGEgc2hlbGwgd2l0aCBKYXZhIDExIGluc3RhbGxlZC4KCkRpcmVudiBzdXBwb3J0cyBhdXRvbWF0aWNhbGx5IGxvYWRpbmcgb2YgdGhlIG5peCBkZXZlbG9wZXIgc2hlbGwsIHNvIGlmIHlvdSdyZSB1c2luZyBkaXJlbnYgdG9vLCB0eXBlOgpgYGBzaApkaXJlbnYgYWxsb3cKYGBgCmFuZCBoYXZlIGBqYXZhYCBhbmQgYG12bmAgc2V0IHVwIHdpdGggY29ycmVjdCB2ZXJzaW9ucyBlYWNoIHRpbWUgeW91IGVudGVyIHByb2plY3QgZGlyZWN0b3J5LgoKVGhlIGRlZmF1bHQgYnVpbGQgY29udGFpbnMgbWluaW1hbCBzdGF0aWMgYW5hbHlzaXMgKHZpYSBDaGVja1N0eWxlKS4gVG8gcnVuIHlvdXIgYnVpbGQgd2l0aCBQTUQgYW5kIFNwb3RidWdzLCB1c2UgdGhlIGBzdGF0aWMtYW5hbHlzaXNgIHByb2ZpbGU6CgotIExpbnV4OiBgLi9tdm53IC1Qc3RhdGljLWFuYWx5c2lzIGNsZWFuIGluc3RhbGxgCi0gV2luZG93czogYG12bncuY21kIC1Qc3RhdGljLWFuYWx5c2lzIGNsZWFuIGluc3RhbGxgCgojIyMgWzEuNSAtIEhvbWVicmV3XSgjdGFibGUtb2YtY29udGVudHMpCgpUbyBpbnN0YWxsLCBydW4gYGJyZXcgaW5zdGFsbCBvcGVuYXBpLWdlbmVyYXRvcmAKCkhlcmUgaXMgYW4gZXhhbXBsZSB1c2FnZSB0byBnZW5lcmF0ZSBhIFJ1YnkgY2xpZW50OgpgYGBzaApvcGVuYXBpLWdlbmVyYXRvciBnZW5lcmF0ZSAtaSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCAtZyBydWJ5IC1vIC90bXAvdGVzdC8KYGBgCgpUbyByZWluc3RhbGwgd2l0aCB0aGUgbGF0ZXN0IG1hc3RlciwgcnVuIGBicmV3IHVuaW5zdGFsbCBvcGVuYXBpLWdlbmVyYXRvciAmJiBicmV3IGluc3RhbGwgLS1IRUFEIG9wZW5hcGktZ2VuZXJhdG9yYAoKVG8gaW5zdGFsbCBPcGVuSkRLIChwcmUtcmVxdWlzaXRlcyksIHBsZWFzZSBydW4KYGBgc2gKYnJldyB0YXAgQWRvcHRPcGVuSkRLL29wZW5qZGsKYnJldyBpbnN0YWxsIC0tY2FzayBhZG9wdG9wZW5qZGsxMQpleHBvcnQgSkFWQV9IT01FPWAvdXNyL2xpYmV4ZWMvamF2YV9ob21lIC12IDEuMTFgCmBgYAoKb3IgZG93bmxvYWQgaW5zdGFsbGVyIHZpYSBodHRwczovL2Fkb3B0aXVtLm5ldC8KClRvIGluc3RhbGwgTWF2ZW4gKG9wdGlvbmFsKSwgcGxlYXNlIHJ1bgpgYGBzaApicmV3IGluc3RhbGwgbWF2ZW4KYGBgCgojIyMgWzEuNiAtIERvY2tlcl0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKIyMjIyBQdWJsaWMgUHJlLWJ1aWx0IERvY2tlciBpbWFnZXMKCiAtIFtodHRwczovL2h1Yi5kb2NrZXIuY29tL3Ivb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS9dKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLykgKG9mZmljaWFsIENMSSkKIC0gW2h0dHBzOi8vaHViLmRvY2tlci5jb20vci9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3Itb25saW5lL10oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1vbmxpbmUvKSAob2ZmaWNpYWwgd2ViIHNlcnZpY2UpCgoKIyMjIyBPcGVuQVBJIEdlbmVyYXRvciBDTEkgRG9ja2VyIEltYWdlCgpUaGUgT3BlbkFQSSBHZW5lcmF0b3IgaW1hZ2UgYWN0cyBhcyBhIHN0YW5kYWxvbmUgZXhlY3V0YWJsZS4gSXQgY2FuIGJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gaW5zdGFsbGluZyB2aWEgaG9tZWJyZXcsIG9yIGZvciBkZXZlbG9wZXJzIHdobyBhcmUgdW5hYmxlIHRvIGluc3RhbGwgSmF2YSBvciB1cGdyYWRlIHRoZSBpbnN0YWxsZWQgdmVyc2lvbi4KClRvIGdlbmVyYXRlIGNvZGUgd2l0aCB0aGlzIGltYWdlLCB5b3UnbGwgbmVlZCB0byBtb3VudCBhIGxvY2FsIGxvY2F0aW9uIGFzIGEgdm9sdW1lLgoKRXhhbXBsZToKCmBgYHNoCmRvY2tlciBydW4gLS1ybSAtdiAiJHtQV0R9Oi9sb2NhbCIgb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZSBcCiAgICAtaSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCBcCiAgICAtZyBnbyBcCiAgICAtbyAvbG9jYWwvb3V0L2dvCmBgYAoKVGhlIGdlbmVyYXRlZCBjb2RlIHdpbGwgYmUgbG9jYXRlZCB1bmRlciBgLi9vdXQvZ29gIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KCiMjIyMgT3BlbkFQSSBHZW5lcmF0b3IgT25saW5lIERvY2tlciBJbWFnZQoKVGhlIG9wZW5hcGktZ2VuZXJhdG9yLW9ubGluZSBpbWFnZSBjYW4gYWN0IGFzIGEgc2VsZi1ob3N0ZWQgd2ViIGFwcGxpY2F0aW9uIGFuZCBBUEkgZm9yIGdlbmVyYXRpbmcgY29kZS4gVGhpcyBjb250YWluZXIgY2FuIGJlIGluY29ycG9yYXRlZCBpbnRvIGEgQ0kgcGlwZWxpbmUsIGFuZCByZXF1aXJlcyBhdCBsZWFzdCB0d28gSFRUUCByZXF1ZXN0cyBhbmQgc29tZSBkb2NrZXIgb3JjaGVzdHJhdGlvbiB0byBhY2Nlc3MgZ2VuZXJhdGVkIGNvZGUuCgpFeGFtcGxlIHVzYWdlOgoKYGBgc2gKIyBTdGFydCBjb250YWluZXIgYXQgcG9ydCA4ODg4IGFuZCBzYXZlIHRoZSBjb250YWluZXIgaWQKPiBDSUQ9JChkb2NrZXIgcnVuIC1kIC1wIDg4ODg6ODA4MCBvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3Itb25saW5lKQoKIyBhbGxvdyBmb3Igc3RhcnR1cAo+IHNsZWVwIDEwCgojIEdldCB0aGUgSVAgb2YgdGhlIHJ1bm5pbmcgY29udGFpbmVyIChvcHRpb25hbCkKR0VOX0lQPSQoZG9ja2VyIGluc3BlY3QgLS1mb3JtYXQgJ3t7Lk5ldHdvcmtTZXR0aW5ncy5JUEFkZHJlc3N9fScgICRDSUQpCgojIEV4ZWN1dGUgYW4gSFRUUCByZXF1ZXN0IHRvIGdlbmVyYXRlIGEgUnVieSBjbGllbnQKPiBjdXJsIC1YIFBPU1QgLS1oZWFkZXIgJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbicgLS1oZWFkZXIgJ0FjY2VwdDogYXBwbGljYXRpb24vanNvbicgXAotZCAneyJvcGVuQVBJVXJsIjogImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIn0nIFwKJ2h0dHA6Ly9sb2NhbGhvc3Q6ODg4OC9hcGkvZ2VuL2NsaWVudHMvcnVieScKCnsiY29kZSI6ImMyZDQ4My4zLjQ2NzItNDBlOS05MWRmLWI5ZmZkMThkMjJiOCIsImxpbmsiOiJodHRwOi8vbG9jYWxob3N0Ojg4ODgvYXBpL2dlbi9kb3dubG9hZC9jMmQ0ODMuMy40NjcyLTQwZTktOTFkZi1iOWZmZDE4ZDIyYjgifQoKIyBEb3dubG9hZCB0aGUgZ2VuZXJhdGVkIHppcCBmaWxlCj4gd2dldCBodHRwOi8vbG9jYWxob3N0Ojg4ODgvYXBpL2dlbi9kb3dubG9hZC9jMmQ0ODMuMy40NjcyLTQwZTktOTFkZi1iOWZmZDE4ZDIyYjgKCiMgVW56aXAgdGhlIGZpbGUKPiB1bnppcCBjMmQ0ODMuMy40NjcyLTQwZTktOTFkZi1iOWZmZDE4ZDIyYjgKCiMgU2h1dGRvd24gdGhlIG9wZW5hcGkgZ2VuZXJhdG9yIGltYWdlCj4gZG9ja2VyIHN0b3AgJENJRCAmJiBkb2NrZXIgcm0gJENJRApgYGAKCiMjIyMgRGV2ZWxvcG1lbnQgaW4gZG9ja2VyCgpZb3UgY2FuIHVzZSBgcnVuLWluLWRvY2tlci5zaGAgdG8gZG8gYWxsIGRldmVsb3BtZW50LiBUaGlzIHNjcmlwdCBtYXBzIHlvdXIgbG9jYWwgcmVwb3NpdG9yeSB0byBgL2dlbmAKaW4gdGhlIGRvY2tlciBjb250YWluZXIuIEl0IGFsc28gbWFwcyBgfi8ubTIvcmVwb3NpdG9yeWAgdG8gdGhlIGFwcHJvcHJpYXRlIGNvbnRhaW5lciBsb2NhdGlvbi4KClRvIGV4ZWN1dGUgYG12biBwYWNrYWdlYDoKCmBgYHNoCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yCmNkIG9wZW5hcGktZ2VuZXJhdG9yCi4vcnVuLWluLWRvY2tlci5zaCBtdm4gcGFja2FnZQpgYGAKCkJ1aWxkIGFydGlmYWN0cyBhcmUgbm93IGFjY2Vzc2libGUgaW4geW91ciB3b3JraW5nIGRpcmVjdG9yeS4KCk9uY2UgYnVpbHQsIGBydW4taW4tZG9ja2VyLnNoYCB3aWxsIGFjdCBhcyBhbiBleGVjdXRhYmxlIGZvciBvcGVuYXBpLWdlbmVyYXRvci1jbGkuIFRvIGdlbmVyYXRlIGNvZGUsIHlvdSdsbCBuZWVkIHRvIG91dHB1dCB0byBhIGRpcmVjdG9yeSB1bmRlciBgL2dlbmAgKGUuZy4gYC9nZW4vb3V0YCkuIEZvciBleGFtcGxlOgoKYGBgc2gKLi9ydW4taW4tZG9ja2VyLnNoIGhlbHAgIyBFeGVjdXRlcyAnaGVscCcgY29tbWFuZCBmb3Igb3BlbmFwaS1nZW5lcmF0b3ItY2xpCi4vcnVuLWluLWRvY2tlci5zaCBsaXN0ICMgRXhlY3V0ZXMgJ2xpc3QnIGNvbW1hbmQgZm9yIG9wZW5hcGktZ2VuZXJhdG9yLWNsaQouL3J1bi1pbi1kb2NrZXIuc2ggZ2VuZXJhdGUgLWkgbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwgXAogICAgLWcgZ28gLW8gL2dlbi9vdXQvZ28tcGV0c3RvcmUgLXAgcGFja2FnZU5hbWU9cGV0c3RvcmUgIyBnZW5lcmF0ZXMgZ28gY2xpZW50LCBvdXRwdXRzIGxvY2FsbHkgdG8gLi9vdXQvZ28tcGV0c3RvcmUKYGBgCgojIyMjIyBUcm91Ymxlc2hvb3RpbmcKCklmIGFuIGVycm9yIGxpa2UgdGhpcyBvY2N1cnMsIGp1c3QgZXhlY3V0ZSB0aGUgKiouL212bncgY2xlYW4gaW5zdGFsbCAtVSoqIGNvbW1hbmQ6Cgo+IG9yZy5hcGFjaGUubWF2ZW4ubGlmZWN5Y2xlLkxpZmVjeWNsZUV4ZWN1dGlvbkV4Y2VwdGlvbjogRmFpbGVkIHRvIGV4ZWN1dGUgZ29hbCBvcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM6bWF2ZW4tc3VyZWZpcmUtcGx1Z2luOjIuMTkuMTp0ZXN0IChkZWZhdWx0LXRlc3QpIG9uIHByb2plY3Qgb3BlbmFwaS1nZW5lcmF0b3I6IEEgdHlwZSBpbmNvbXBhdGliaWxpdHkgb2NjdXJyZWQgd2hpbGUgZXhlY3V0aW5nIG9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczptYXZlbi1zdXJlZmlyZS1wbHVnaW46Mi4xOS4xOnRlc3Q6IGphdmEubGFuZy5FeGNlcHRpb25JbkluaXRpYWxpemVyRXJyb3IgY2Fubm90IGJlIGNhc3QgdG8gamF2YS5pby5JT0V4Y2VwdGlvbgoKYGBgc2gKLi9ydW4taW4tZG9ja2VyLnNoIC4vbXZudyBjbGVhbiBpbnN0YWxsIC1VCmBgYAoKPiBGYWlsZWQgdG8gZXhlY3V0ZSBnb2FsIG9yZy5mb3J0YXNvZnQ6Z3JhZGxlLW1hdmVuLXBsdWdpbjoxLjAuODppbnZva2UgKGRlZmF1bHQpIG9uIHByb2plY3Qgb3BlbmFwaS1nZW5lcmF0b3ItZ3JhZGxlLXBsdWdpbi1tdm4td3JhcHBlcjogb3JnLmdyYWRsZS50b29saW5nLkJ1aWxkRXhjZXB0aW9uOiBDb3VsZCBub3QgZXhlY3V0ZSBidWlsZCB1c2luZyBHcmFkbGUgZGlzdHJpYnV0aW9uICdodHRwczovL3NlcnZpY2VzLmdyYWRsZS5vcmcvZGlzdHJpYnV0aW9ucy9ncmFkbGUtNC43LWJpbi56aXAnCgpSaWdodCBub3c6IG5vIHNvbHV0aW9uIGZvciB0aGlzIG9uZSA6fAoKIyMjIyBSdW4gRG9ja2VyIGluIFZhZ3JhbnQKUHJlcmVxdWlzaXRlOiBpbnN0YWxsIFtWYWdyYW50XShodHRwczovL3d3dy52YWdyYW50dXAuY29tL2Rvd25sb2Fkcy5odG1sKSBhbmQgW1ZpcnR1YWxCb3hdKGh0dHBzOi8vd3d3LnZpcnR1YWxib3gub3JnL3dpa2kvRG93bmxvYWRzKS4KIGBgYHNoCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLmdpdApjZCBvcGVuYXBpLWdlbmVyYXRvcgp2YWdyYW50IHVwCnZhZ3JhbnQgc3NoCmNkIC92YWdyYW50Ci4vcnVuLWluLWRvY2tlci5zaCAuL212bncgcGFja2FnZQpgYGAKCiMjIyBbMS43IC0gTlBNXSgjdGFibGUtb2YtY29udGVudHMpCgpUaGVyZSBpcyBhbHNvIGFuIFtOUE0gcGFja2FnZSB3cmFwcGVyXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ab3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSkgYXZhaWxhYmxlIGZvciBkaWZmZXJlbnQgcGxhdGZvcm1zIChlLmcuIExpbnV4LCBNYWMsIFdpbmRvd3MpLiAoSlZNIGlzIHN0aWxsIHJlcXVpcmVkKQpQbGVhc2Ugc2VlIHRoZSBbcHJvamVjdCdzIFJFQURNRV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkpIHRoZXJlIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKSW5zdGFsbCBpdCBnbG9iYWxseSB0byBnZXQgdGhlIENMSSBhdmFpbGFibGUgb24gdGhlIGNvbW1hbmQgbGluZToKCmBgYHNoCm5wbSBpbnN0YWxsIEBvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpIC1nCm9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uCmBgYAoKPCEtLSBSRUxFQVNFX1ZFUlNJT04gLS0+ClRvIHVzZSBhIHNwZWNpZmljIHZlcnNpb24gb2YgIm9wZW5hcGktZ2VuZXJhdG9yLWNsaSIKCmBgYHNoCm9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uLW1hbmFnZXIgc2V0IDcuMTkuMApgYGAKCk9yIGluc3RhbGwgaXQgYXMgZGV2LWRlcGVuZGVuY3k6CgpgYGBzaApucG0gaW5zdGFsbCBAb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSAtRApgYGAKPCEtLSAvUkVMRUFTRV9WRVJTSU9OIC0tPgoKWW91IGNhbiB1c2UgW2xvY2FsbHkgYnVpbHQgSkFSc10oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGk/dGFiPXJlYWRtZS1vdi1maWxlI3VzZS1sb2NhbGx5LWJ1aWx0LWphcikgb3IgW2BTTkFQU0hPVGAgdmVyc2lvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpP3RhYj1yZWFkbWUtb3YtZmlsZSN1c2UtbmlnaHRseS1zbmFwc2hvdC1idWlsZCkgYXMgd2VsbC4KCiMjIyBbMS44IC0gcGlwXSgjdGFibGUtb2YtY29udGVudHMpCgoKPiAqKlBsYXRmb3JtKHMpKio6IExpbnV4LCBtYWNPUywgV2luZG93cwoqKkluc3RhbGwqKiB2aWEgW1B5UEldKGh0dHBzOi8vcHlwaS5vcmcvKSAoYGphdmFgIGV4ZWN1dGFibGUgaXMgbmVlZGVkIHRvIHJ1bik6CgpgYGAKcGlwIGluc3RhbGwgb3BlbmFwaS1nZW5lcmF0b3ItY2xpCmBgYAoKVG8gaW5zdGFsbCBhIHNwZWNpZmljIHZlcnNpb24KYGBgCnBpcCBpbnN0YWxsIG9wZW5hcGktZ2VuZXJhdG9yLWNsaT09Ny4xOS4wCmBgYAoKWW91IGNhbiBhbHNvIGluc3RhbGwgd2l0aCBbamRrNHB5XShodHRwczovL2dpdGh1Yi5jb20vYWN0aXZldmlhbS9qZGs0cHkpIGluc3RlYWQgb2YgamF2YSBiaW5hcnkuIChweXRob24+PTMuMTAgaXMgcmVxdWlyZWQpCgpgYGAKcGlwIGluc3RhbGwgb3BlbmFwaS1nZW5lcmF0b3ItY2xpW2pkazRweV0KYGBgCgpSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItcGlwCgojIyBbMiAtIEdldHRpbmcgU3RhcnRlZF0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKVG8gZ2VuZXJhdGUgYSBQSFAgY2xpZW50IGZvciBbcGV0c3RvcmUueWFtbF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwpLCBwbGVhc2UgcnVuIHRoZSBmb2xsb3dpbmcKYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IKY2Qgb3BlbmFwaS1nZW5lcmF0b3IKLi9tdm53IGNsZWFuIHBhY2thZ2UKamF2YSAtamFyIG1vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL3RhcmdldC9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGdlbmVyYXRlIFwKICAgLWkgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwgXAogICAtZyBwaHAgXAogICAtbyAvdmFyL3RtcC9waHBfYXBpX2NsaWVudApgYGAKKGlmIHlvdSdyZSBvbiBXaW5kb3dzLCByZXBsYWNlIHRoZSBsYXN0IGNvbW1hbmQgd2l0aCBgamF2YSAtamFyIG1vZHVsZXNcb3BlbmFwaS1nZW5lcmF0b3ItY2xpXHRhcmdldFxvcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGdlbmVyYXRlIC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIC1nIHBocCAtbyBjOlx0ZW1wXHBocF9hcGlfY2xpZW50YCkKCjwhLS0gUkVMRUFTRV9WRVJTSU9OIC0tPgpZb3UgY2FuIGFsc28gZG93bmxvYWQgdGhlIEpBUiAobGF0ZXN0IHJlbGVhc2UpIGRpcmVjdGx5IGZyb20gW21hdmVuLm9yZ10oaHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLzcuMTkuMC9vcGVuYXBpLWdlbmVyYXRvci1jbGktNy4xOS4wLmphcikKPCEtLSAvUkVMRUFTRV9WRVJTSU9OIC0tPgoKVG8gZ2V0IGEgbGlzdCBvZiAqKmdlbmVyYWwqKiBvcHRpb25zIGF2YWlsYWJsZSwgcGxlYXNlIHJ1biBgamF2YSAtamFyIG1vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL3RhcmdldC9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGhlbHAgZ2VuZXJhdGVgCgpUbyBnZXQgYSBsaXN0IG9mIFBIUCBzcGVjaWZpZWQgb3B0aW9ucyAod2hpY2ggY2FuIGJlIHBhc3NlZCB0byB0aGUgZ2VuZXJhdG9yIHdpdGggYSBjb25maWcgZmlsZSB2aWEgdGhlIGAtY2Agb3B0aW9uKSwgcGxlYXNlIHJ1biBgamF2YSAtamFyIG1vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL3RhcmdldC9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGNvbmZpZy1oZWxwIC1nIHBocGAKCiMjIFszIC0gVXNhZ2VdKCN0YWJsZS1vZi1jb250ZW50cykKCiMjIyBUbyBnZW5lcmF0ZSBhIHNhbXBsZSBjbGllbnQgbGlicmFyeQpZb3UgY2FuIGJ1aWxkIGEgY2xpZW50IGFnYWluc3QgdGhlIFtQZXRzdG9yZSBBUEldKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sKSBhcyBmb2xsb3dzOgoKYGBgc2gKLi9iaW4vZ2VuZXJhdGUtc2FtcGxlcy5zaCAuL2Jpbi9jb25maWdzL2phdmEtb2todHRwLWdzb24ueWFtbApgYGAKCihPbiBXaW5kb3dzLCBwbGVhc2UgaW5zdGFsbCBbR0lUIEJhc2ggZm9yIFdpbmRvd3NdKGh0dHBzOi8vZ2l0Zm9yd2luZG93cy5vcmcvKSB0byBydW4gdGhlIGNvbW1hbmQgYWJvdmUpCgpUaGlzIHNjcmlwdCB1c2VzIHRoZSBkZWZhdWx0IGxpYnJhcnksIHdoaWNoIGlzIGBva2h0dHAtZ3NvbmAuIEl0IHdpbGwgcnVuIHRoZSBnZW5lcmF0b3Igd2l0aCB0aGlzIGNvbW1hbmQ6CgpgYGBzaApqYXZhIC1qYXIgbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvdGFyZ2V0L29wZW5hcGktZ2VuZXJhdG9yLWNsaS5qYXIgZ2VuZXJhdGUgXAogIC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIFwKICAtZyBqYXZhIFwKICAtdCBtb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy9tYWluL3Jlc291cmNlcy9KYXZhIFwKICAtLWFkZGl0aW9uYWwtcHJvcGVydGllcyBhcnRpZmFjdElkPXBldHN0b3JlLW9raHR0cC1nc29uLGhpZGVHZW5lcmF0aW9uVGltZXN0YW1wPXRydWUgXAogIC1vIHNhbXBsZXMvY2xpZW50L3BldHN0b3JlL2phdmEvb2todHRwLWdzb24KYGBgCgp3aXRoIGEgbnVtYmVyIG9mIG9wdGlvbnMuIFtUaGUgamF2YSBvcHRpb25zIGFyZSBkb2N1bWVudGVkIGhlcmUuXShkb2NzL2dlbmVyYXRvcnMvamF2YS5tZCkKCllvdSBjYW4gYWxzbyBnZXQgdGhlIG9wdGlvbnMgd2l0aCB0aGUgYGhlbHAgZ2VuZXJhdGVgIGNvbW1hbmQgKGJlbG93IG9ubHkgc2hvd3MgcGFydGlhbCByZXN1bHRzKToKCmBgYApOQU1FCiAgICAgICAgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIGdlbmVyYXRlIC0gR2VuZXJhdGUgY29kZSB3aXRoIHRoZSBzcGVjaWZpZWQKICAgICAgICBnZW5lcmF0b3IuCgpTWU5PUFNJUwogICAgICAgIG9wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZQogICAgICAgICAgICAgICAgWygtYSA8YXV0aG9yaXphdGlvbj4gfCAtLWF1dGggPGF1dGhvcml6YXRpb24+KV0KICAgICAgICAgICAgICAgIFstLWFwaS1uYW1lLXN1ZmZpeCA8YXBpIG5hbWUgc3VmZml4Pl0gWy0tYXBpLXBhY2thZ2UgPGFwaSBwYWNrYWdlPl0KICAgICAgICAgICAgICAgIFstLWFydGlmYWN0LWlkIDxhcnRpZmFjdCBpZD5dIFstLWFydGlmYWN0LXZlcnNpb24gPGFydGlmYWN0IHZlcnNpb24+XQogICAgICAgICAgICAgICAgWygtYyA8Y29uZmlndXJhdGlvbiBmaWxlPiB8IC0tY29uZmlnIDxjb25maWd1cmF0aW9uIGZpbGU+KV0gWy0tZHJ5LXJ1bl0KICAgICAgICAgICAgICAgIFsoLWUgPHRlbXBsYXRpbmcgZW5naW5lPiB8IC0tZW5naW5lIDx0ZW1wbGF0aW5nIGVuZ2luZT4pXQogICAgICAgICAgICAgICAgWy0tZW5hYmxlLXBvc3QtcHJvY2Vzcy1maWxlXQogICAgICAgICAgICAgICAgWygtZyA8Z2VuZXJhdG9yIG5hbWU+IHwgLS1nZW5lcmF0b3ItbmFtZSA8Z2VuZXJhdG9yIG5hbWU+KV0KICAgICAgICAgICAgICAgIFstLWdlbmVyYXRlLWFsaWFzLWFzLW1vZGVsXSBbLS1naXQtaG9zdCA8Z2l0IGhvc3Q+XQogICAgICAgICAgICAgICAgWy0tZ2l0LXJlcG8taWQgPGdpdCByZXBvIGlkPl0gWy0tZ2l0LXVzZXItaWQgPGdpdCB1c2VyIGlkPl0KICAgICAgICAgICAgICAgIFstLWdsb2JhbC1wcm9wZXJ0eSA8Z2xvYmFsIHByb3BlcnRpZXM+Li4uXSBbLS1ncm91cC1pZCA8Z3JvdXAgaWQ+XQogICAgICAgICAgICAgICAgWy0taHR0cC11c2VyLWFnZW50IDxodHRwIHVzZXIgYWdlbnQ+XQogICAgICAgICAgICAgICAgWygtaSA8c3BlYyBmaWxlPiB8IC0taW5wdXQtc3BlYyA8c3BlYyBmaWxlPildCiAgICAgICAgICAgICAgICBbLS1pZ25vcmUtZmlsZS1vdmVycmlkZSA8aWdub3JlIGZpbGUgb3ZlcnJpZGUgbG9jYXRpb24+XQogICAgICAgICAgICAgICAgWy0taW1wb3J0LW1hcHBpbmdzIDxpbXBvcnQgbWFwcGluZ3M+Li4uXQogICAgICAgICAgICAgICAgWy0taW5zdGFudGlhdGlvbi10eXBlcyA8aW5zdGFudGlhdGlvbiB0eXBlcz4uLi5dCiAgICAgICAgICAgICAgICBbLS1pbnZva2VyLXBhY2thZ2UgPGludm9rZXIgcGFja2FnZT5dCiAgICAgICAgICAgICAgICBbLS1sYW5ndWFnZS1zcGVjaWZpYy1wcmltaXRpdmVzIDxsYW5ndWFnZSBzcGVjaWZpYyBwcmltaXRpdmVzPi4uLl0KICAgICAgICAgICAgICAgIFstLWxlZ2FjeS1kaXNjcmltaW5hdG9yLWJlaGF2aW9yXSBbLS1saWJyYXJ5IDxsaWJyYXJ5Pl0KICAgICAgICAgICAgICAgIFstLWxvZy10by1zdGRlcnJdIFstLW1pbmltYWwtdXBkYXRlXQogICAgICAgICAgICAgICAgWy0tbW9kZWwtbmFtZS1wcmVmaXggPG1vZGVsIG5hbWUgcHJlZml4Pl0KICAgICAgICAgICAgICAgIFstLW1vZGVsLW5hbWUtc3VmZml4IDxtb2RlbCBuYW1lIHN1ZmZpeD5dCiAgICAgICAgICAgICAgICBbLS1tb2RlbC1wYWNrYWdlIDxtb2RlbCBwYWNrYWdlPl0KICAgICAgICAgICAgICAgIFsoLW8gPG91dHB1dCBkaXJlY3Rvcnk+IHwgLS1vdXRwdXQgPG91dHB1dCBkaXJlY3Rvcnk+KV0gWygtcCA8YWRkaXRpb25hbCBwcm9wZXJ0aWVzPiB8IC0tYWRkaXRpb25hbC1wcm9wZXJ0aWVzIDxhZGRpdGlvbmFsIHByb3BlcnRpZXM+KS4uLl0KICAgICAgICAgICAgICAgIFstLXBhY2thZ2UtbmFtZSA8cGFja2FnZSBuYW1lPl0gWy0tcmVsZWFzZS1ub3RlIDxyZWxlYXNlIG5vdGU+XQogICAgICAgICAgICAgICAgWy0tcmVtb3ZlLW9wZXJhdGlvbi1pZC1wcmVmaXhdCiAgICAgICAgICAgICAgICBbLS1yZXNlcnZlZC13b3Jkcy1tYXBwaW5ncyA8cmVzZXJ2ZWQgd29yZCBtYXBwaW5ncz4uLi5dCiAgICAgICAgICAgICAgICBbKC1zIHwgLS1za2lwLW92ZXJ3cml0ZSldIFstLXNlcnZlci12YXJpYWJsZXMgPHNlcnZlciB2YXJpYWJsZXM+Li4uXQogICAgICAgICAgICAgICAgWy0tc2tpcC12YWxpZGF0ZS1zcGVjXSBbLS1zdHJpY3Qtc3BlYyA8dHJ1ZS9mYWxzZSBzdHJpY3QgYmVoYXZpb3I+XQogICAgICAgICAgICAgICAgWygtdCA8dGVtcGxhdGUgZGlyZWN0b3J5PiB8IC0tdGVtcGxhdGUtZGlyIDx0ZW1wbGF0ZSBkaXJlY3Rvcnk+KV0KICAgICAgICAgICAgICAgIFstLXR5cGUtbWFwcGluZ3MgPHR5cGUgbWFwcGluZ3M+Li4uXSBbKC12IHwgLS12ZXJib3NlKV0KCk9QVElPTlMKICAgICAgICAtYSA8YXV0aG9yaXphdGlvbj4sIC0tYXV0aCA8YXV0aG9yaXphdGlvbj4KICAgICAgICAgICAgYWRkcyBhdXRob3JpemF0aW9uIGhlYWRlcnMgd2hlbiBmZXRjaGluZyB0aGUgT3BlbkFQSSBkZWZpbml0aW9ucwogICAgICAgICAgICByZW1vdGVseS4gUGFzcyBpbiBhIFVSTC1lbmNvZGVkIHN0cmluZyBvZiBuYW1lOmhlYWRlciB3aXRoIGEgY29tbWEKICAgICAgICAgICAgc2VwYXJhdGluZyBtdWx0aXBsZSB2YWx1ZXMKCi4uLi4uLiAocmVzdWx0cyBvbWl0dGVkKQoKICAgICAgICAtdiwgLS12ZXJib3NlCiAgICAgICAgICAgIHZlcmJvc2UgbW9kZQoKYGBgCgpZb3UgY2FuIHRoZW4gY29tcGlsZSBhbmQgcnVuIHRoZSBjbGllbnQsIGFzIHdlbGwgYXMgdW5pdCB0ZXN0cyBhZ2FpbnN0IGl0OgoKYGBgc2gKY2Qgc2FtcGxlcy9jbGllbnQvcGV0c3RvcmUvamF2YS9va2h0dHAtZ3Nvbgptdm4gcGFja2FnZQpgYGAKCk90aGVyIGdlbmVyYXRvcnMgaGF2ZSBbc2FtcGxlc10oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci90cmVlL21hc3Rlci9zYW1wbGVzKSB0b28uCgojIyMgWzMuMSAtIEN1c3RvbWl6YXRpb25dKCN0YWJsZS1vZi1jb250ZW50cykKClBsZWFzZSByZWZlciB0byBbY3VzdG9taXphdGlvbi5tZF0oZG9jcy9jdXN0b21pemF0aW9uLm1kKSBvbiBob3cgdG8gY3VzdG9taXplIHRoZSBvdXRwdXQgKGUuZy4gcGFja2FnZSBuYW1lLCB2ZXJzaW9uKQoKIyMjIFszLjIgLSBXb3JrZmxvdyBJbnRlZ3JhdGlvbiAoTWF2ZW4sIEdyYWRsZSwgR2l0aHViLCBDSS9DRCldKCN0YWJsZS1vZi1jb250ZW50cykKClBsZWFzZSByZWZlciB0byBbaW50ZWdyYXRpb24ubWRdKGRvY3MvaW50ZWdyYXRpb24ubWQpIG9uIGhvdyB0byBpbnRlZ3JhdGUgT3BlbkFQSSBnZW5lcmF0b3Igd2l0aCBNYXZlbiwgR3JhZGxlLCBzYnQsIEJhemVsLCBHaXRodWIgYW5kIENJL0NELgoKIyMjIFszLjMgLSBPbmxpbmUgT3BlbkFQSSBnZW5lcmF0b3JdKCN0YWJsZS1vZi1jb250ZW50cykKCkhlcmUgYXJlIHRoZSBwdWJsaWMgb25saW5lIHNlcnZpY2VzOgoKLSBsYXRlc3Qgc3RhYmxlIHZlcnNpb246IGh0dHBzOi8vYXBpLm9wZW5hcGktZ2VuZXJhdG9yLnRlY2gKLSBsYXRlc3QgbWFzdGVyOiBodHRwczovL2FwaS1sYXRlc3QtbWFzdGVyLm9wZW5hcGktZ2VuZXJhdG9yLnRlY2ggKHVwZGF0ZWQgd2l0aCBsYXRlc3QgbWFzdGVyIGV2ZXJ5IGhvdXIpCgpUaGUgc2VydmVyIGlzIHNwb25zb3JlZCBieSBbTGlub2RlXShodHRwczovL3d3dy5saW5vZGUuY29tLykgWyFbTGlub2RlIExvZ29dKGh0dHBzOi8vd3d3Lmxpbm9kZS5jb20vbWVkaWEvaW1hZ2VzL2xvZ29zL3N0YW5kYXJkL2xpZ2h0L2xpbm9kZS1sb2dvX3N0YW5kYXJkX2xpZ2h0X3NtYWxsLnBuZyldKGh0dHBzOi8vd3d3Lmxpbm9kZS5jb20vKQoKKFRoZXNlIHNlcnZpY2VzIGFyZSBiZXRhIGFuZCBkbyBub3QgaGF2ZSBhbnkgZ3VhcmFudGVlIG9uIHNlcnZpY2UgbGV2ZWwpCgpQbGVhc2UgcmVmZXIgdG8gW29ubGluZS5tZF0oZG9jcy9vbmxpbmUubWQpIG9uIGhvdyB0byBydW4gYW5kIHVzZSB0aGUgYG9wZW5hcGktZ2VuZXJhdG9yLW9ubGluZWAgLSBhIHdlYiBzZXJ2aWNlIGZvciBgb3BlbmFwaS1nZW5lcmF0b3JgLgoKIyMjIFszLjQgLSBMaWNlbnNlIGluZm9ybWF0aW9uIG9uIEdlbmVyYXRlZCBDb2RlXSgjdGFibGUtb2YtY29udGVudHMpCgpUaGUgT3BlbkFQSSBHZW5lcmF0b3IgcHJvamVjdCBpcyBpbnRlbmRlZCBhcyBhIGJlbmVmaXQgZm9yIHVzZXJzIG9mIHRoZSBPcGVuIEFQSSBTcGVjaWZpY2F0aW9uLiAgVGhlIHByb2plY3QgaXRzZWxmIGhhcyB0aGUgW0xpY2Vuc2VdKCM3LS0tbGljZW5zZSkgYXMgc3BlY2lmaWVkLiBJbiBhZGRpdGlvbiwgcGxlYXNlIHVuZGVyc3RhbmQgdGhlIGZvbGxvd2luZyBwb2ludHM6CgoqIFRoZSB0ZW1wbGF0ZXMgaW5jbHVkZWQgd2l0aCB0aGlzIHByb2plY3QgYXJlIHN1YmplY3QgdG8gdGhlIFtMaWNlbnNlXSgjNy0tLWxpY2Vuc2UpLgoqIEdlbmVyYXRlZCBjb2RlIGlzIGludGVudGlvbmFsbHkgX25vdF8gc3ViamVjdCB0byB0aGUgcGFyZW50IHByb2plY3QgbGljZW5zZQoKV2hlbiBjb2RlIGlzIGdlbmVyYXRlZCBmcm9tIHRoaXMgcHJvamVjdCwgaXQgc2hhbGwgYmUgY29uc2lkZXJlZCAqKkFTIElTKiogYW5kIG93bmVkIGJ5IHRoZSB1c2VyIG9mIHRoZSBzb2Z0d2FyZS4gIFRoZXJlIGFyZSBubyB3YXJyYW50aWVzLS1leHByZXNzZWQgb3IgaW1wbGllZC0tZm9yIGdlbmVyYXRlZCBjb2RlLiAgWW91IGNhbiBkbyB3aGF0IHlvdSB3aXNoIHdpdGggaXQsIGFuZCBvbmNlIGdlbmVyYXRlZCwgdGhlIGNvZGUgaXMgeW91ciByZXNwb25zaWJpbGl0eSBhbmQgc3ViamVjdCB0byB0aGUgbGljZW5zaW5nIHRlcm1zIHRoYXQgeW91IGRlZW0gYXBwcm9wcmlhdGUuCgojIyMgWzMuNSAtIElERSBJbnRlZ3JhdGlvbl0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKSGVyZSBpcyBhIGxpc3Qgb2YgY29tbXVuaXR5LWNvbnRyaWJ1dGVkIElERSBwbHVnLWlucyB0aGF0IGludGVncmF0ZSB3aXRoIE9wZW5BUEkgR2VuZXJhdG9yOgoKLSBFY2xpcHNlOiBbQ29kZXdpbmQgT3BlbkFQSSBUb29scyBmb3IgRWNsaXBzZV0oaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvY29kZXdpbmQvb3Blbi1hcGktdG9vbHMtZm9yLWVjbGlwc2UuaHRtbCkgYnkgW0lCTV0oaHR0cHM6Ly93d3cuaWJtLmNvbSkKLSBJbnRlbGxpSiBJREVBOiBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vcGx1Z2lucy5qZXRicmFpbnMuY29tL3BsdWdpbi84NDMzLW9wZW5hcGktZ2VuZXJhdG9yKSBieSBbSmltIFNjaHViZXJ0XShodHRwczovL2ppbXNjaHViZXJ0LnVzLyMvKQotIEludGVsbGlKIElERUE6IFtTZW55YSBFZGl0b3JdKGh0dHBzOi8vcGx1Z2lucy5qZXRicmFpbnMuY29tL3BsdWdpbi8xMDY5MC1zZW55YS1lZGl0b3IpIGJ5IFtzZW55YS5pb10oaHR0cHM6Ly9zZW55YS5pbykKLSBbUmVwcmVaZW4gQVBJIFN0dWRpb10oaHR0cHM6Ly93d3cucmVwcmV6ZW4uY29tLykKLSBWaXN1YWwgU3R1ZGlvOiBbUkVTVCBBUEkgQ2xpZW50IENvZGUgR2VuZXJhdG9yXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9Q2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yKSBieSBbQ2hyaXN0aWFuIFJlc21hIEhlbGxlXShodHRwczovL2NocmlzdGlhbi1oZWxsZS5ibG9nc3BvdC5jb20vKQotIFZpc3VhbCBTdHVkaW8gQ29kZTogW0NvZGV3aW5kIE9wZW5BUEkgVG9vbHNdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1JQk0uY29kZXdpbmQtb3BlbmFwaS10b29scykgYnkgW0lCTV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL3B1Ymxpc2hlcnMvSUJNKQoKCiMjIFs0IC0gQ29tcGFuaWVzL1Byb2plY3RzIHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXSgjdGFibGUtb2YtY29udGVudHMpCkhlcmUgYXJlIHNvbWUgY29tcGFuaWVzL3Byb2plY3RzIChhbHBoYWJldGljYWwgb3JkZXIpIHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yIGluIHByb2R1Y3Rpb24uIFRvIGFkZCB5b3VyIGNvbXBhbnkvcHJvamVjdCB0byB0aGUgbGlzdCwgcGxlYXNlIHZpc2l0IFtSRUFETUUubWRdKFJFQURNRS5tZCkgYW5kIGNsaWNrIG9uIHRoZSBpY29uIHRvIGVkaXQgdGhlIHBhZ2UuCgotIFtBYWxib3JnIFVuaXZlcnNpdHldKGh0dHBzOi8vd3d3LmFhdS5kaykKLSBbYWN0IGNvZGluZ10oaHR0cHM6Ly9naXRodWIuY29tL2FjdGNvZGluZykKLSBbQWRhcHRhbnQgU29sdXRpb25zIEFHXShodHRwczovL3d3dy5hZGFwdGFudC5pby8pCi0gW2FkZXNzbyBTRV0oaHR0cHM6Ly93d3cuYWRlc3NvLmRlLykKLSBbYWRvcnN5cyBHbWJIICYgQ28uS0ddKGh0dHBzOi8vYWRvcnN5cy5jb20vKQotIFtBZHllbl0oaHR0cHM6Ly93d3cuYWR5ZW4uY29tLykKLSBbQWdvZGFdKGh0dHBzOi8vd3d3LmFnb2RhLmNvbS8pCi0gW0FpcnRoaW5nc10oaHR0cHM6Ly93d3cuYWlydGhpbmdzLmNvbS8pCi0gW0FsZXJpIFNvbHV0aW9ucyBHbWJoXShodHRwczovL3d3dy5hbGVyaS5kZS8pCi0gW0FsbGlhbnpdKGh0dHBzOi8vd3d3LmFsbGlhbnouY29tKQotIFtBbmd1bGFyLlNjaHVsZV0oaHR0cHM6Ly9hbmd1bGFyLnNjaHVsZS8pCi0gW0Fxb3ZpYV0oaHR0cHM6Ly9hcW92aWEuY29tLykKLSBbQXVzdHJhbGlhIGFuZCBOZXcgWmVhbGFuZCBCYW5raW5nIEdyb3VwIChBTlopXShodHRwOi8vd3d3LmFuei5jb20vKQotIFtBcmR1aW5vXShodHRwczovL3d3dy5hcmR1aW5vLmNjLykKLSBbQVNLVUxdKGh0dHBzOi8vd3d3LmFza3VsLmNvLmpwKQotIFtBbWF6b24gV2ViIFNlcnZpY2VzIChBV1MpXShodHRwczovL2F3cy5hbWF6b24uY29tLykKLSBbYjw+Y29tXShodHRwczovL2ItY29tLmNvbS9lbikKLSBb55m+5bqm6JCl6ZSAXShodHRwczovL2UuYmFpZHUuY29tKQotIFtCYW5kd2lkdGhdKGh0dHBzOi8vZGV2LmJhbmR3aWR0aC5jb20pCi0gW0JhbnphaSBDbG91ZF0oaHR0cHM6Ly9iYW56YWljbG91ZC5jb20pCi0gW0JJTURhdGEuaW9dKGh0dHBzOi8vYmltZGF0YS5pbykKLSBbQml0aG9zdCBHbWJIXShodHRwczovL3d3dy5iaXRob3N0LmNoKQotIFtCb3NjaCBDb25uZWN0ZWQgSW5kdXN0cnldKGh0dHBzOi8vd3d3LmJvc2NoLWNvbm5lY3RlZC1pbmR1c3RyeS5jb20pCi0gW0JveGV2ZXJdKGh0dHBzOi8vd3d3LmJveGV2ZXIuY29tLykKLSBbQnJldnldKGh0dHBzOi8vd3d3LmJyZXZ5LmNvbSkKLSBbQnVua2VyIEhvbGRpbmcgR3JvdXBdKGh0dHBzOi8vd3d3LmJ1bmtlci1ob2xkaW5nLmNvbS8pCi0gW0NhbGlmb3JuaWEgU3RhdGUgVW5pdmVyc2l0eSwgTm9ydGhyaWRnZV0oaHR0cHM6Ly93d3cuY3N1bi5lZHUpCi0gW0NBTV0oaHR0cHM6Ly93d3cuY2FtLWluYy5jby5qcC8pCi0gW0NhbXB0b2NhbXBdKGh0dHBzOi8vd3d3LmNhbXB0b2NhbXAuY29tL2VuKQotIFtDYXJsc2JlcmcgR3JvdXBdKGh0dHBzOi8vd3d3LmNhcmxzYmVyZ2dyb3VwLmNvbS8pCi0gW0NFUk5dKGh0dHBzOi8vaG9tZS5jZXJuLykKLSBbQ2hyaXN0b3BoZXIgUXVlZW4gQ29uc3VsdGluZ10oaHR0cHM6Ly93d3cuY2hyaXN0b3BoZXJxdWVlbmNvbnN1bHRpbmcuY29tLykKLSBbQ2lzY29dKGh0dHBzOi8vd3d3LmNpc2NvLmNvbS8pCi0gW2NvZGVjZW50cmljIEFHXShodHRwczovL3d3dy5jb2RlY2VudHJpYy5kZS8pCi0gW0NvaW5BUEldKGh0dHBzOi8vd3d3LmNvaW5hcGkuaW8vKQotIFtDb21tZW5jaXNdKGh0dHBzOi8vd3d3LmNvbW1lbmNpcy5jb20vKQotIFtDb25maWdDYXRdKGh0dHBzOi8vY29uZmlnY2F0LmNvbS8pCi0gW2Nyb25uIEdtYkhdKGh0dHBzOi8vd3d3LmNyb25uLmRlLykKLSBbQ3Jvc3NvdmVyIEhlYWx0aF0oaHR0cHM6Ly9jcm9zc292ZXJoZWFsdGguY29tLykKLSBbQ3VwaXhdKGh0dHBzOi8vd3d3LmN1cGl4LmNvbS8pCi0gW0RhdGFkb2ddKGh0dHBzOi8vd3d3LmRhdGFkb2docS5jb20pCi0gW0RCIFN5c3RlbF0oaHR0cHM6Ly93d3cuZGJzeXN0ZWwuZGUpCi0gW0RlZXBvcnV0ZS5haV0oaHR0cHM6Ly93d3cuZGVlcHJvdXRlLmFpLykKLSBbRGV2c3VwcGx5XShodHRwczovL3d3dy5kZXZzdXBwbHkuY29tLykKLSBbZG1URUNIIEdtYkhdKGh0dHBzOi8vd3d3LmRtVEVDSC5kZSkKLSBbRG9jU3ByaW5nXShodHRwczovL2RvY3NwcmluZy5jb20vKQotIFtkd2FuZ29dKGh0dHBzOi8vZHdhbmdvLmNvLmpwLykKLSBbRWRnZSBJbXB1bHNlXShodHRwczovL3d3dy5lZGdlaW1wdWxzZS5jb20vKQotIFtFbGVtZW50IEFJXShodHRwczovL3d3dy5lbGVtZW50YWkuY29tLykKLSBbRW1ib3RpY3NdKGh0dHBzOi8vd3d3LmVtYm90aWNzLmNvbS8pCi0gW2VtaW5lb10oaHR0cHM6Ly93d3cuZW1pbmVvLmNoKQotIFtmYXN0bHldKGh0dHBzOi8vd3d3LmZhc3RseS5jb20vKQotIFtGZW5lcmdvXShodHRwczovL3d3dy5mZW5lcmdvLmNvbS8pCi0gW2ZyZWVlXShodHRwczovL2NvcnAuZnJlZWUuY28uanAvZW4vKQotIFtGcmVzaENlbGxzXShodHRwczovL3d3dy5mcmVzaGNlbGxzLmRlLykKLSBbRnVzZV0oaHR0cHM6Ly93d3cuZnVzZS5uby8pCi0gW0dhbnRuZXJdKGh0dHBzOi8vd3d3LmdhbnRuZXIuY29tKQotIFtHZW5GbG93XShodHRwczovL2dpdGh1Yi5jb20vUmVwcmVaZW4vR2VuRmxvdykKLSBbR2V0WW91ckd1aWRlXShodHRwczovL3d3dy5nZXR5b3VyZ3VpZGUuY29tLykKLSBbR2xvdm9dKGh0dHBzOi8vZ2xvdm9hcHAuY29tLykKLSBbR01PIFBlcGFib10oaHR0cHM6Ly9wZXBhYm8uY29tL2VuLykKLSBbR29EYWRkeV0oaHR0cHM6Ly9nb2RhZGR5LmNvbSkKLSBbR3VtdHJlZV0oaHR0cHM6Ly9ndW10cmVlLmNvbSkKLSBbSGVyZV0oaHR0cHM6Ly9kZXZlbG9wZXIuaGVyZS5jb20vKQotIFtJQk1dKGh0dHBzOi8vd3d3LmlibS5jb20vKQotIFtJbnN0YW5hXShodHRwczovL3d3dy5pbnN0YW5hLmNvbSkKLSBbSW50ZXJ4aW9uXShodHRwczovL3d3dy5pbnRlcnhpb24uY29tKQotIFtJbnF1aXNpY29dKGh0dHBzOi8vaW5xdWlzaWNvLmNvbSkKLSBbSnVzdFN0YXJdKGh0dHBzOi8vd3d3Lmp1c3RzdGFyaW5mby5jb20pCi0gW2s2LmlvXShodHRwczovL2s2LmlvLykKLSBbS2xhcm5hXShodHRwczovL3d3dy5rbGFybmEuY29tLykKLSBbS3JvbnNvZnQgRGV2ZWxvcG1lbnRdKGh0dHBzOi8vd3d3Lmtyb25zb2Z0LnJvL2hvbWUvKQotIFtLdWJlcm5ldGVzXShodHRwczovL2t1YmVybmV0ZXMuaW8pCi0gW0xhbmRlc2hhdXB0c3RhZHQgTcO8bmNoZW4gLSBpdEBNXShodHRwczovL211ZW5jaGVuLmRpZ2l0YWwvaXQtYXQtbS8pCi0gW0xpbm9kZV0oaHR0cHM6Ly93d3cubGlub2RlLmNvbS8pCi0gW0xvZ2ljZHJvcF0oaHR0cHM6Ly93d3cubG9naWNkcm9wLmNvbSkKLSBbTHVtZXJpc10oaHR0cHM6Ly93d3cubHVtZXJpcy5jb20pCi0gW0xWTSBWZXJzaWNoZXJ1bmdlbl0oaHR0cHM6Ly93d3cubHZtLmRlKQotIFtNYWlsU2x1cnBdKGh0dHBzOi8vd3d3Lm1haWxzbHVycC5jb20pCi0gW01hbnRpY29yZSBTZWFyY2hdKGh0dHBzOi8vbWFudGljb3Jlc2VhcmNoLmNvbSkKLSBbTWFzdGVyY2FyZF0oaHR0cHM6Ly9kZXZlbG9wZXJzLm1hc3RlcmNhcmQuY29tKQotIFtNw6lkaWF2aXNpb25dKGh0dHBzOi8vd3d3Lm1lZGlhdmlzaW9uLmZyLykKLSBbTWV0YXN3aXRjaF0oaHR0cHM6Ly93d3cubWV0YXN3aXRjaC5jb20vKQotIFtNb29uVmlzaW9uXShodHRwczovL3d3dy5tb29udmlzaW9uLmlvLykKLSBbTXl3b3Jrb3V0XShodHRwczovL215d29ya291dC5jb20pCi0gW05hbVNvcl0oaHR0cHM6Ly93d3cubmFtc29yLmNvbS8pCi0gW05ldmVyZmFpbF0oaHR0cHM6Ly93d3cubmV2ZXJmYWlsLmNvbS8pCi0gW05ldWVyRW5lcmd5XShodHRwczovL25ldWVyZW5lcmd5LmNvbSkKLSBbTm9raWFdKGh0dHBzOi8vd3d3Lm5va2lhLmNvbS8pCi0gW09uZVNpZ25hbF0oaHR0cHM6Ly93d3cub25lc2lnbmFsLmNvbS8pCi0gW09wdGlvbnMgQ2xlYXJpbmcgQ29ycG9yYXRpb24gKE9DQyldKGh0dHBzOi8vd3d3LnRoZW9jYy5jb20vKQotIFtPcGVuZXRdKGh0dHBzOi8vd3d3Lm9wZW5ldC5jb20vKQotIFtvcGVuVkFMSURBVElPTl0oaHR0cHM6Ly9vcGVudmFsaWRhdGlvbi5pby8pCi0gW09yYWNsZV0oaHR0cHM6Ly93d3cub3JhY2xlLmNvbS8pCi0gW1BheG9zXShodHRwczovL3d3dy5wYXhvcy5jb20pCi0gW1BsYWlkXShodHRwczovL3BsYWlkLmNvbSkKLSBbUExBSUQsIEluYy5dKGh0dHBzOi8vcGxhaWQuY28uanAvKQotIFtQaW50ZXJlc3RdKGh0dHBzOi8vd3d3LnBpbnRlcmVzdC5jb20pCi0gW1Bvbmljb2RlXShodHRwczovL3Bvbmljb2RlLmRldi8pCi0gW1ByaWNlZnhdKGh0dHBzOi8vd3d3LnByaWNlZnguY29tLykKLSBbUHJpbnROYW5ueV0oaHR0cHM6Ly93d3cucHJpbnQtbmFubnkuY29tLykKLSBbUHJvbWV0aGV1cy9BbGVydG1hbmFnZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2FsZXJ0bWFuYWdlcikKLSBbUWF2YXJdKGh0dHBzOi8vd3d3LnFhdmFyLmNvbSkKLSBbUUVESVRdKGh0dHBzOi8vcWVkLWl0LmNvbSkKLSBbUW92ZXJ5XShodHRwczovL3FvdmVyeS5jb20pCi0gW1F1bGl4IFN5c3RlbXNdKGh0dHBzOi8vd3d3LnF1bGl4LmNvbSkKLSBbUmFrc3VsXShodHRwczovL2NvcnAucmFrc3VsLmNvbSkKLSBbUmFpZmZlaXNlbiBTY2h3ZWl6IEdlbm9zc2Vuc2NoYWZ0XShodHRwczovL3d3dy5yYWlmZmVpc2VuLmNoKQotIFtSZWRIYXRdKGh0dHBzOi8vd3d3LnJlZGhhdC5jb20pCi0gW1JlcHJlWmVuIEFQSSBTdHVkaW9dKGh0dHBzOi8vd3d3LnJlcHJlemVuLmNvbS9zd2FnZ2VyLW9wZW5hcGktY29kZS1nZW5lcmF0aW9uLWFwaS1maXJzdC1taWNyb3NlcnZpY2VzLWVudGVycHJpc2UtZGV2ZWxvcG1lbnQpCi0gW1JFU1QgVW5pdGVkXShodHRwczovL3Jlc3R1bml0ZWQuY29tKQotIFtSb2JvY29ycF0oaHR0cHM6Ly93d3cucm9ib2NvcnAuY29tKQotIFtSb2JvdGluZnJhXShodHRwczovL3d3dy5yb2JvdGluZnJhLmNvbSkKLSBbU2FydmlrYSBUZWNobm9sb2dpZXMgUHZ0LiBMdGQuXShodHRwczovL3d3dy5zYXJ2aWthLmNvbSkKLSBbU2VhcmNoQXBpXShodHRwczovL3d3dy5zZWFyY2hhcGkuaW8vKQotIFtTbWFydEhSXShodHRwczovL3NtYXJ0aHIuY28uanAvKQotIFtTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnRdKGh0dHBzOi8vd3d3LnNpZS5jb20vZW4vaW5kZXguaHRtbCkKLSBbU3BsaXRpdF0oaHR0cHM6Ly93d3cuc3BsaXRpdC5jb20vKQotIFtTdGluZ3JheV0oaHR0cDovL3d3dy5zdGluZ3JheS5jb20pCi0gW1N1dmFdKGh0dHBzOi8vd3d3LnN1dmEuY2gvKQotIFtTdml4XShodHRwczovL3d3dy5zdml4LmNvbS8pCi0gW1RlbHN0cmFdKGh0dHBzOi8vZGV2LnRlbHN0cmEuY29tKQotIFtUZW5jZW50XShodHRwczovL3d3dy50ZW5jZW50LmNvbSkKLSBbVGhlIFVuaXZlcnNpdHkgb2YgQWl6dV0oaHR0cHM6Ly93d3cudS1haXp1LmFjLmpwL2VuLykKLSBbVElOUUlOXShodHRwczovL3d3dy50aW5xaW4uY29tLykKLSBbVHJhbnNsdWNlbnQgQXBTXShodHRwczovL3d3dy50cmFuc2x1Y2VudC5kaykKLSBbVHJhdmVsVGltZSBwbGF0Zm9ybV0oaHR0cHM6Ly93d3cudHJhdmVsdGltZXBsYXRmb3JtLmNvbS8pCi0gW1RyaWJhbFNjYWxlXShodHRwczovL3d3dy50cmliYWxzY2FsZS5jb20pCi0gW1RyaWZvcmtdKGh0dHBzOi8vdHJpZm9yay5jb20pCi0gW1RVSSBJbmZvVGVjIEdtYkhdKGh0dHA6Ly93d3cudHVpLWluZm90ZWMuY29tLykKLSBbVHdpbGlvXShodHRwczovL3d3dy50d2lsaW8uY29tLykKLSBbVHdpdHRlcl0oaHR0cHM6Ly90d2l0dGVyLmNvbSkKLSBbdW5ibHUgaW5jLl0oaHR0cHM6Ly93d3cudW5ibHUuY29tLykKLSBbVmVhbWx5XShodHRwczovL3d3dy52ZWFtbHkuY29tLykKLSBbVk1XYXJlXShodHRwczovL3d3dy52bXdhcmUuY29tLykKLSBbd2J0LXNvbHV0aW9uc10oaHR0cHM6Ly93d3cud2J0LXNvbHV0aW9ucy5kZS8pCi0gW1dvbGVldF0oaHR0cHM6Ly93d3cud29sZWV0LmlvLykKLSBbV1NPMl0oaHR0cHM6Ly93c28yLmNvbS8pCi0gW1ZvdWNoZXJ5LmlvXShodHRwczovL3ZvdWNoZXJ5LmlvKQotIFtYZXJvXShodHRwczovL3d3dy54ZXJvLmNvbS8pCi0gW1lhaG9vIEphcGFuXShodHRwczovL3d3dy55YWhvby5jby5qcC8pCi0gW3ZpYWRlZV0oaHR0cHM6Ly93d3cudmlhZGVlLmRlLykKLSBbVm9uYWdlXShodHRwczovL3ZvbmFnZS5jb20pCi0gW1lJVFUgVGVjaG5vbG9neV0oaHR0cHM6Ly93d3cueWl0dXRlY2guY29tLykKLSBbWWVscF0oaHR0cHM6Ly93d3cueWVscC5jb20vKQotIFtaYWxhbmRvXShodHRwczovL3d3dy56YWxhbmRvLmNvbSkKLSBbM0RTIE91dHNjYWxlXShodHRwczovL3d3dy5vdXRzY2FsZS5jb20vKQoKIyMgWzUgLSBQcmVzZW50YXRpb25zL1ZpZGVvcy9UdXRvcmlhbHMvQm9va3NdKCN0YWJsZS1vZi1jb250ZW50cykKCi0gMjAxOC8wNS8xMiAtIFtPcGVuQVBJIEdlbmVyYXRvciAtIGNvbW11bml0eSBkcml2ZW7jgafmiJDplbfjgZnjgovjgrPjg7zjg4njgrjjgqfjg43jg6zjg7zjgr9dKGh0dHBzOi8vYWNraW50b3NoLmdpdGh1Yi5pby9ibG9nLzIwMTgvMDUvMTIvb3BlbmFwaS1nZW5lcmF0b3IvKSBieSBb5Lit6YeO5pqB5Lq6XShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKQotIDIwMTgvMDUvMTUgLSBbU3RhcnRpbmcgYSBuZXcgb3Blbi1zb3VyY2UgcHJvamVjdF0oaHR0cDovL2ptaW5pLmdpdGh1Yi5pby9ibG9nLzIwMTgvMjAxOC0wNS0xNV9uZXctb3Blbi1zb3VyY2UtcHJvamVjdC5odG1sKSBieSBbSmVyZW1pZSBCcmVzc29uXShodHRwczovL2dpdGh1Yi5jb20vam1pbmkpCi0gMjAxOC8wNS8xNSAtIFtSRVNUIEFQSeS7leanmOOBi+OCiUFQSeOCr+ODqeOCpOOCouODs+ODiOOChOOCueOCv+ODluOCteODvOODkOOCkuiHquWLleeUn+aIkOOBmeOCi+OAjE9wZW5BUEkgR2VuZXJhdG9y44CN44Kq44O844OX44Oz44K944O844K544Gn5YWs6ZaL44CCU3dhZ2dlciBDb2RlZ2Vu44GL44KJ44Gu44OV44Kp44O844KvXShodHRwczovL3d3dy5wdWJsaWNrZXkxLmpwL2Jsb2cvMTgvcmVzdF9hcGlhcGlvcGVuYXBpX2dlbmVyYXRvcnN3YWdnZXJfZ2VuZXJhdG9yLmh0bWwpIGJ5IFtQdWJsaWNrZXldKGh0dHBzOi8vd3d3LnB1YmxpY2tleTEuanApCi0gMjAxOC8wNi8wOCAtIFtTd2FnZ2VyIENvZGVnZW4gaXMgbm93IE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2FuZ3VsYXIuc2NodWxlL2Jsb2cvMjAxOC0wNi1zd2FnZ2VyLWNvZGVnZW4taXMtbm93LW9wZW5hcGktZ2VuZXJhdG9yKSBieSBbSm9oYW5uZXNIb3BwZV0oaHR0cHM6Ly9naXRodWIuY29tL0pvaGFubmVzSG9wcGUpCi0gMjAxOC8wNi8yMSAtIFtDb25uZWN0IHlvdXIgSkhpcHN0ZXIgYXBwcyB0byB0aGUgd29ybGQgb2YgQVBJcyB3aXRoIE9wZW5BUEkgYW5kIGdSUENdKGh0dHBzOi8vZnIuc2xpZGVzaGFyZS5uZXQvY2hib3JuZXQvamhpcHN0ZXItY29uZi0yMDE4LWNvbm5lY3QteW91ci1qaGlwc3Rlci1hcHBzLXRvLXRoZS13b3JsZC1vZi1hcGlzLXdpdGgtb3BlbmFwaS1hbmQtZ3JwYykgYnkgW0NocmlzdG9waGUgQm9ybmV0XShodHRwczovL2dpdGh1Yi5jb20vY2Jvcm5ldCkgYXQgW0pIaXBzdGVyIENvbmYgMjAxOF0oaHR0cHM6Ly9qaGlwc3Rlci1jb25mLmdpdGh1Yi5pby8pCi0gMjAxOC8wNi8yMiAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgacgR2F0bGluZyBDbGllbnQg44KS55Sf5oiQ44GX44Gm44G/44GfXShodHRwczovL3JvaGtpLmhhdGVuYWJsb2cuY29tL2VudHJ5LzIwMTgvMDYvMjIvMDczMDAwKSBhdCBb44K944Oi44K144OzXShodHRwczovL3JvaGtpLmhhdGVuYWJsb2cuY29tLykKLSAyMDE4LzA2LzI3IC0gW0xlc3NvbnMgTGVhcm5lZCBmcm9tIExlYWRpbmcgYW4gT3Blbi1Tb3VyY2UgUHJvamVjdCBTdXBwb3J0aW5nIDMwKyBQcm9ncmFtbWluZyBMYW5ndWFnZXNdKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3dpbmczMjgvbGVzc29ucy1sZWFybmVkLWZyb20tbGVhZGluZy1hbi1vcGVuLXNvdXJjZS1wcm9qZWN0LXN1cHBvcnRpbmctMzAtcGx1cy1wcm9ncmFtbWluZy1sYW5ndWFnZXMpIC0gW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vZ2l0aHViLmNvbS93aW5nMzI4KSBhdCBbTGludXhDb24gKyBDb250YWluZXJDb24gKyBDbG91ZE9wZW4gQ2hpbmEgMjAxOF0oaHR0cDovL2JpdC5seS8yd2FES0tYKQotIDIwMTgvMDcvMTkgLSBbT3BlbkFQSSBHZW5lcmF0b3IgQ29udHJpYnV0aW9uIFF1aWNrc3RhcnQgLSBSaW5nQ2VudHJhbCBHbyBTREtdKGh0dHBzOi8vbWVkaXVtLmNvbS9yaW5nY2VudHJhbC1kZXZlbG9wZXJzL29wZW5hcGktZ2VuZXJhdG9yLWZvci1nby1jb250cmlidXRpb24tcXVpY2tzdGFydC04Y2M3MmJmMzdiNTMpIGJ5IFtKb2huIFdhbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9ncm9raWZ5KQotIDIwMTgvMDgvMjIgLSBbT3BlbkFQSSBHZW5lcmF0b3Ljga7jg5fjg63jgrjjgqfjgq/jg4jmp4vmiJDjgarjganjga7jg6Hjg6JdKGh0dHBzOi8veWlubS5pbmZvLzIwMTgwODIyLykgYnkgW1l1c3VrZSBJaW51bWFdKGh0dHBzOi8vZ2l0aHViLmNvbS95aW5tKQotIDIwMTgvMDkvMTIgLSBbUmVwcmVaZW4gYW5kIE9wZW5BUEkgMy4wOiBOb3cgaXMgdGhlIFRpbWVdKGh0dHBzOi8vd3d3LnJlcHJlemVuLmNvbS9ibG9nL3JlcHJlemVuLW9wZW5hcGktMy4wLXVwZ3JhZGUtbm93LWlzLXRoZS10aW1lKSBieSBbTWlsZXMgRGFmZmluXShodHRwczovL3d3dy5yZXByZXplbi5jb20vYmxvZy9hdXRob3IvbWlsZXMtZGFmZmluKQotIDIwMTgvMTAvMzEgLSBbQSBub2RlIHBhY2thZ2Ugd3JhcHBlciBmb3Igb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9IYXJtb1dhdGNoL29wZW5hcGktZ2VuZXJhdG9yLWNsaSkKLSAyMDE4LzExLzAzIC0gW09wZW5BUEkgR2VuZXJhdG9yICsgZ29sYW5nICsgRmx1dHRlciDjgafjgqLjg5fjg6rplovnmbpdKGh0dHA6Ly9yeXVpY2hpMTExc3RkLmhhdGVuYWJsb2cuY29tL2VudHJ5LzIwMTgvMTEvMDMvMjE0MDA1KSBieSBbUnl1aWNoaSBEYWlnb10oaHR0cHM6Ly9naXRodWIuY29tL3J5dWljaGkxMTEpCi0gMjAxOC8xMS8xNSAtIFvln7rkuo5vcGVuYXBpMy4w55qEeWFtbOaWh+S7tueUn+aIkGphdmHku6PnoIHnmoTkuIDmrKHlrp7ot7VdKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC95enkxOTkzOTEvYXJ0aWNsZS9kZXRhaWxzLzg0MDIzOTgyKSBieSBb54Sx6a2U546LXShodHRwczovL21lLmNzZG4ubmV0L3l6eTE5OTM5MSkKLSAyMDE4LzExLzE4IC0gW0dlbmVyYXRpbmcgUEhQIGxpYnJhcnkgY29kZSBmcm9tIE9wZW5BUEldKGh0dHBzOi8vbG9ybmFqYW5lLm5ldC9wb3N0cy8yMDE4L2dlbmVyYXRpbmctcGhwLWxpYnJhcnktY29kZS1mcm9tLW9wZW5hcGkpIGJ5IFtMb3JuYSBKYW5lXShodHRwczovL2xvcm5hamFuZS5uZXQvKSBhdCBbTE9STkFKQU5FIEJsb2ddKGh0dHBzOi8vbG9ybmFqYW5lLm5ldC9ibG9nKQotIDIwMTgvMTEvMTkgLSBbT3BlbkFQSXMgYXJlIGV2ZXJ5d2hlcmVdKGh0dHBzOi8veW91dHUuYmUvLWxEb3Q0WW43RGcpIGJ5IFtKZXJlbWllIEJyZXNzb24gKFVuYmx1KV0oaHR0cHM6Ly9naXRodWIuY29tL2ptaW5pKSBhdCBbRWNsaXBzZUNvbiBFdXJvcGUgMjAxOF0oaHR0cHM6Ly93d3cuZWNsaXBzZWNvbi5vcmcvZXVyb3BlMjAxOCkKLSAyMDE4LzEyLzA5IC0gW29wZW5hcGktZ2VuZXJhdG9yIOOCkuOCq+OCueOCv+ODnuOCpOOCuuOBmeOCi+aWueazlV0oaHR0cHM6Ly9xaWl0YS5jb20vd2F0aWtvL2l0ZW1zLzA5NjEyODdjMDJlYWM5MjExNTcyKSBieSBbQHdhdGlrb10oaHR0cHM6Ly9xaWl0YS5jb20vd2F0aWtvKQotIDIwMTkvMDEvMDMgLSBbQ2FsbGluZyBhIFN3YWdnZXIgc2VydmljZSBmcm9tIEFwZXggdXNpbmcgb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vbGVra2ltd29ybGQuY29tLzIwMTkvMDEvMDMvY2FsbGluZy1hLXN3YWdnZXItc2VydmljZS1mcm9tLWFwZXgtdXNpbmctb3BlbmFwaS1nZW5lcmF0b3IvKSBieSBbTWlra2VsIEZsaW5kdCBIZWlzdGVyYmVyZ10oaHR0cHM6Ly9sZWtraW13b3JsZC5jb20pCi0gMjAxOS8wMS8xMyAtIFtPcGVuQVBJIEdlbmVyYXRvcuOBp1JFU1RmdWwgQVBJ44Gu5a6a576p5pu444GL44KJ6Imy44CF6Ieq5YuV55Sf5oiQ44GZ44KLXShodHRwczovL2t5LXlrLWQuaGF0ZW5hYmxvZy5jb20vZW50cnkvMjAxOS8wMS8xMy8yMzQxMDgpIGJ5IFtAa3lfeWtfZF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9reV95a19kKQotIDIwMTkvMDEvMjAgLSBbQ29udHJhY3QtRmlyc3QgQVBJIERldmVsb3BtZW50IHdpdGggT3BlbkFQSSBHZW5lcmF0b3IgYW5kIENvbm5leGlvbl0oaHR0cHM6Ly9tZWRpdW0uY29tL2NvbW1lbmNpcy9jb250cmFjdC1maXJzdC1hcGktZGV2ZWxvcG1lbnQtd2l0aC1vcGVuYXBpLWdlbmVyYXRvci1hbmQtY29ubmV4aW9uLWIyMWJiZjJmOTI0NCkgYnkgW0FuaWwgQ2FuIEF5ZGluXShodHRwczovL2dpdGh1Yi5jb20vYW5sY255ZG4pCi0gMjAxOS8wMS8zMCAtIFtSYXBpZCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBXaXRoIEFQSSBGaXJzdCBBcHByb2FjaCBVc2luZyBPcGVuLUFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vZHpvbmUuY29tL2FydGljbGVzL3JhcGlkLWFwaS1kZXZlbG9wbWVudC11c2luZy1vcGVuLWFwaS1nZW5lcmF0b3IpIGJ5IFtNaWxhbiBTb25rYXJdKGh0dHBzOi8vZHpvbmUuY29tL3VzZXJzLzgyODMyOS9taWxhbl9zb25rYXIuaHRtbCkKLSAyMDE5LzAyLzAyIC0gW+W5s+mdmeOCkuS/neOBoeOAgeOCs+ODvOODieOCkueUn+aIkOOBm+OCiCDjgJwgT3BlbkFQSSBHZW5lcmF0b3LoqpXnlJ/jga7og4zmma/jgajou4zot6Eg44CcXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS9ha2loaXRvX25ha2Fuby9ndW5tYXdlYjM0KSBieSBb5Lit6YeO5pqB5Lq6XShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKSBhdCBbR3VubWEud2ViICMzNCDjgrnjgq3jg7zjg57pp4bli5XplovnmbpdKGh0dHBzOi8vZ3VubWF3ZWIuY29ubnBhc3MuY29tL2V2ZW50LzExMzk3NC8pCi0gMjAxOS8wMi8yMCAtIFtBbiBhZHZlbnR1cmUgaW4gT3BlbkFQSSBWMyBjb2RlIGdlbmVyYXRpb25dKGh0dHBzOi8vbXV4LmNvbS9ibG9nL2FuLWFkdmVudHVyZS1pbi1vcGVuYXBpLXYzLWFwaS1jb2RlLWdlbmVyYXRpb24vKSBieSBbUGhpbCBDbHVmZl0oaHR0cHM6Ly9tdXguY29tL2Jsb2cvYXV0aG9yL3BoaWxjLykKLSAyMDE5LzAyLzI2IC0gW0J1aWxkaW5nIEFQSSBTZXJ2aWNlczogQSBCZWdpbm5lcuKAmXMgR3VpZGVdKGh0dHBzOi8vbWVkaXVtLmNvbS9nb29nbGUtY2xvdWQvYnVpbGRpbmctYXBpLXNlcnZpY2VzLWEtYmVnaW5uZXJzLWd1aWRlLTcyNzRhZTRjNTQ3ZikgYnkgW1JhdHJvcyBZLl0oaHR0cHM6Ly9tZWRpdW0uY29tL0ByYXRyb3N5KSBpbiBbR29vZ2xlIENsb3VkIFBsYXRmb3JtIEJsb2ddKGh0dHBzOi8vbWVkaXVtLmNvbS9nb29nbGUtY2xvdWQpCi0gMjAxOS8wMi8yNiAtIFtCdWlsZGluZyBBUElzIHdpdGggT3BlbkFQSTogQ29udGludWVkXShodHRwczovL21lZGl1bS5jb20vQHJhdHJvc3kvYnVpbGRpbmctYXBpcy13aXRoLW9wZW5hcGktY29udGludWVkLTVkMGZhYWVkMzJlYikgYnkgW1JhdHJvcyBZLl0oaHR0cHM6Ly9tZWRpdW0uY29tL0ByYXRyb3N5KSBpbiBbR29vZ2xlIENsb3VkIFBsYXRmb3JtIEJsb2ddKGh0dHBzOi8vbWVkaXVtLmNvbS9nb29nbGUtY2xvdWQpCi0gMjAxOS0wMy0wNyAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgacgU3ByaW5nIEJvb3Qg44GoIEFuZ3VsYXIg44KS44K/44Kk44OX44K744O844OV44Gr57mL44GQXShodHRwczovL3FpaXRhLmNvbS9jaGliYXRvL2l0ZW1zL2U0YTc0OGRiMTI0MDliNDBjMDJmKSBieSBbVG9tb2Z1bWkgQ2hpYmFdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaGliYXQpCi0gMjAxOS0wMy0xNiAtIFtBIFF1aWNrIGludHJvZHVjdGlvbiB0byBtYW51YWwgT3BlbkFQSSBWM10oaHR0cHM6Ly92YWRvc3dhcmUuaW8vcG9zdC9xdWljay1pbnRyby10by1tYW51YWwtb3BlbmFwaS12My8pIGJ5IFt2YWRvc10oaHR0cHM6Ly9naXRodWIuY29tL3QzaG1ybWFuKSBhdCBbVkFET1NXQVJFXShodHRwczovL3ZhZG9zd2FyZS5pbykKLSAyMDE5LTAzLTI1IC0gW0FjY2VzcyBhbnkgUkVTVCBzZXJ2aWNlIHdpdGggdGhlIFNBUCBTLzRIQU5BIENsb3VkIFNES10oaHR0cHM6Ly9ibG9ncy5zYXAuY29tLzIwMTkvMDMvMjUvaW50ZWdyYXRlLXNhcC1zNGhhbmEtY2xvdWQtc2RrLXdpdGgtb3Blbi1hcGkvKSBieSBbQWxleGFuZGVyIER1ZW1vbnRdKGh0dHBzOi8vcGVvcGxlLnNhcC5jb20vYWxleGFuZGVyLmR1ZW1vbnQpCi0gMjAxOS0wMy0yNSAtIFtPcGVuQVBJIGdlbmVyYXRvcuOCkuippuOBl+OBpuOBv+OCi10oaHR0cHM6Ly9xaWl0YS5jb20vYW11eWlrYW0vaXRlbXMvZThhNDVkYWFlNTljNjhiZTBmYzgpIGJ5IFtAYW11eWlrYW1dKGh0dHBzOi8vdHdpdHRlci5jb20vYW11eWlrYW0pCi0gMjAxOS0wMy0yNyAtIFtPcGVuQVBJM+OCkuS9v+OBo+OBpuOBv+OCiOOBhu+8gUdv6KiA6Kqe44Gn44Kv44Op44Kk44Ki44Oz44OI44Go44K544K/44OW44Gu6Ieq5YuV55Sf5oiQ44G+44Gn77yBXShodHRwczovL3RlY2hibG9nLnpvem8uY29tL2VudHJ5L29wZW5hcGkzL2dvKSBieSBbQGdvbGRfa291XShodHRwczovL3R3aXR0ZXIuY29tL2dvbGRfa291KQotIDIwMTktMDQtMTcgLSBbT3BlbkFQSeOBq+OCiOOCi+OCueOCreODvOODnuODleOCoeODvOOCueODiOmWi+eZuuOBruWun+aWveOCteODs+ODl+ODq+OBqENsb3VkIFJ1buOBq+OBpOOBhOOBpl0oaHR0cHM6Ly90ZWNoLWJsb2cub3B0aW0uY28uanAvZW50cnkvMjAxOS8wNC8xNy8xNzQwMDApIGJ5IFtAeXVrZXkxMDMxXShodHRwczovL3R3aXR0ZXIuY29tL3l1a2V5MTAzMSkKLSAyMDE5LTA0LTE4IC0gW0hvdyB0byB1c2UgT3BlbkFQSTMgZm9yIEFQSSBkZXZlbG9wZXIgKFJ1YnlLYWlnaSAyMDE5KV0oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vb3RhNDJ5L2hvdy10by11c2Utb3BlbmFwaTMtZm9yLWFwaS1kZXZlbG9wZXIpIGJ5IFtAb3RhNDJ5XShodHRwczovL3R3aXR0ZXIuY29tL290YTQyeSkgYXQgW1J1YnlLYWlnaSAyMDE5XShodHRwczovL3J1YnlrYWlnaS5vcmcvMjAxOSkKLSAyMDE5LTA0LTI5IC0gW0EgQmVnaW5uZXIncyBHdWlkZSB0byBDb2RlIEdlbmVyYXRpb24gZm9yIFJFU1QgQVBJcyAoT3BlbkFQSSBHZW5lcmF0b3IpXShodHRwczovL2d1bS5jby9vcGVuYXBpX2dlbmVyYXRvcl9lYm9vaykgYnkgW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vdHdpdHRlci5jb20vd2luZzMyOCkKLSAyMDE5LTA1LTAxIC0gW0Rlc2lnbiBhbmQgZ2VuZXJhdGUgYSBSRVNUIEFQSSBmcm9tIFN3YWdnZXIgLyBPcGVuQVBJIGluIEphdmEsIFB5dGhvbiwgQyMgYW5kIG1vcmVdKGh0dHBzOi8vc2ltcGx5LWhvdy5jb20vZGVzaWduLWFuZC1nZW5lcmF0ZS1hcGktY29kZS1mcm9tLW9wZW5hcGkpIGJ5IFtTaW1wbHkgSG93XShodHRwczovL3NpbXBseS1ob3cuY29tLykKLSAyMDE5LTA1LTE3IC0gW0dlbmVyYXRlIFNwcmluZyBCb290IFJFU1QgQVBJIHVzaW5nIFN3YWdnZXIvT3BlbkFQSV0oaHR0cHM6Ly93d3cuNDdub3J0aGxhYnMuY29tL2tub3dsZWRnZS1iYXNlL2dlbmVyYXRlLXNwcmluZy1ib290LXJlc3QtYXBpLXVzaW5nLXN3YWdnZXItb3BlbmFwaS8pIGJ5IFtBbnRvbmllIFphZmlyb3ZdKGh0dHBzOi8vd3d3LjQ3bm9ydGhsYWJzLmNvbS9hdXRob3IvYW50b25pZS16YWZpcm92LykKLSAyMDE5LTA1LTIyIC0gW1JFU1QgQVBJc+S7o+eggeeUn+aIkOaMh+WNlyhPcGVuQVBJIEdlbmVyYXRvcildKGh0dHBzOi8vZ3VtLmNvL29wZW5hcGlfZ2VuZXJhdG9yX2Vib29rX2diKSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KSwgW1hpbiBNZW5nXShodHRwczovL2dpdGh1Yi5jb20veG1lbmcxKQotIDIwMTktMDUtMjQgLSBbUkVTVCBBUEkg5Luj56K855Sf5oiQ5oyH5Y2XIChPcGVuQVBJIEdlbmVyYXRvcildKGh0dHBzOi8vZ3VtLmNvL29wZW5hcGlfZ2VuZXJhdG9yX2Vib29rX2JpZzUpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL3R3aXR0ZXIuY29tL3dpbmczMjgpCi0gMjAxOS0wNi0yNCAtIFtLdWJlcm5ldGVzIENsaWVudHMgYW5kIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS93aW5nMzI4L2t1YmVybmV0ZXMtY2xpZW50cy1hbmQtb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL3R3aXR0ZXIuY29tL3dpbmczMjgpIGF0IFtLdWJlcm5ldGVzIENvbnRyaWJ1dG9yIFN1bW1pdHMgU2hhbmdoYWkgMjAxOV0oaHR0cHM6Ly93d3cubGZhc2lhbGxjLmNvbS9ldmVudHMvY29udHJpYnV0b3JzLXN1bW1pdC1jaGluYS0yMDE5LykKLSAyMDE5LTA2LTI4IFtDb2Rld2luZCBPcGVuQVBJIFRvb2xzXShodHRwczovL21hcmtldHBsYWNlLmVjbGlwc2Uub3JnL2NvbnRlbnQvY29kZXdpbmQtb3BlbmFwaS10b29scykgaW4gW0VjbGlwc2UgTWFya2V0cGxhY2VdKGh0dHBzOi8vbWFya2V0cGxhY2UuZWNsaXBzZS5vcmcvKSBieSBJQk0KLSAyMDE5LTA2LTI5IFtDb2Rld2luZCBPcGVuQVBJIFRvb2xzXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9SUJNLmNvZGV3aW5kLW9wZW5hcGktdG9vbHMpIGluIFtWaXN1YWwgU3R1ZGlvIE1hcmtldHBsYWNlXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vKSBieSBJQk0KLSAyMDE5LTA3LTA0IC0gW1JFU1QgQVBJIOOBruOBn+OCgeOBruOCs+ODvOODiOOCmeeUn+aIkOWFpemWgCAoT3BlbkFQSSBHZW5lcmF0b3IpXShodHRwczovL2d1bS5jby9vcGVuYXBpX2dlbmVyYXRvcl9lYm9va19iaWc1KSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KSwgW+S4remHjuaageS6ul0oaHR0cHM6Ly9naXRodWIuY29tL2Fja2ludG9zaCksIFvlkoznlLDmi5PmnJddKGh0dHBzOi8vZ2l0aHViLmNvbS90YXhwb24pCi0gMjAxOS0wNy0wOCAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgavjgrPjg7Pjg4jjg6rjg5Pjg6Xjg7zjg4jjgZfjgZ/jgonnpL7lkI3jgYzovInjgaPjgZ/oqbHjgIIoQ0FNKSAtIENBTSBURUNIIEJMT0ddKGh0dHBzOi8vdGVjaC5jYW0taW5jLmNvLmpwL2VudHJ5LzIwMTkvMDcvMDgvMTQwMDAwKSBieSBbQ0FNLCBJbmMuXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwLykKLSAyMDE5LTA3LTE0IC0gW09wZW5BUEkgR2VuZXJhdG9y44GnUHl0aG9u44Gu44Kv44Op44Kk44Ki44Oz44OI44Op44Kk44OW44Op44Oq44KS5L2c5oiQ44GX44GfXShodHRwczovL3FpaXRhLmNvbS95dWppMzhrd210L2l0ZW1zL2RmYjkyOTMxNmExMzM1YTE2MWMwKSBieSBbeXVqaTM4a3dtdF0oaHR0cHM6Ly9xaWl0YS5jb20veXVqaTM4a3dtdCkKLSAyMDE5LTA3LTE5IC0gW0RldmVsb3BlciBFeHBlcmllbmNlIChEWCkgZm9yIE9wZW4tU291cmNlIFByb2plY3RzOiBIb3cgdG8gRW5nYWdlIERldmVsb3BlcnMgYW5kIEJ1aWxkIGEgR3Jvd2luZyBEZXZlbG9wZXIgQ29tbXVuaXR5XShodHRwczovL3NwZWFrZXJkZWNrLmNvbS93aW5nMzI4L2RldmVsb3Blci1leHBlcmllbmNlLWR4LWZvci1vcGVuLXNvdXJjZS1wcm9qZWN0cy1lbmdsaXNoLWphcGFuZXNlKSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KSwgW+S4remHjuaageS6ul0oaHR0cHM6Ly9naXRodWIuY29tL2Fja2ludG9zaCkgYXQgW09wZW4gU291cmNlIFN1bW1pdCBKYXBhbiAyMDE5XShodHRwczovL2V2ZW50cy5saW51eGZvdW5kYXRpb24ub3JnL2V2ZW50cy9vcGVuLXNvdXJjZS1zdW1taXQtamFwYW4tMjAxOS8pCi0gMjAxOS0wOC0xNCAtIFtPdXIgT3BlbkFQSSBqb3VybmV5IHdpdGggU3RhbmRhcmRpemluZyBTREtzXShodHRwczovL2JpdG1vdmluLmNvbS9vdXItb3BlbmFwaS1qb3VybmV5LXdpdGgtc3RhbmRhcmRpemluZy1zZGtzLykgYnkgW1NlYmFzdGlhbiBCdXJnc3RhbGxlcl0oaHR0cHM6Ly9iaXRtb3Zpbi5jb20vYXV0aG9yL3NidXJnc3RhbGxlci8pIGF0IFtCaXRtb3Zpbl0oaHR0cHM6Ly93d3cuYml0bW92aW4uY29tKQotIDIwMTktMDgtMTUgLSBbQVBJ44Gu44Kz44O844OJ44KS6Ieq5YuV55Sf5oiQ44GV44Gb44Gf44GE44Gg44GR44Gq44KJZ1JQQ+OBp+OBquOBj+OBpuOCguOCiOOBj+OBquOBhD9dKGh0dHBzOi8vd3d3Lm0zdGVjaC5ibG9nL2VudHJ5LzIwMTkvMDgvMTUvMTEwMDAwKSBieSBbTTMsIEluYy5dKGh0dHBzOi8vY29ycG9yYXRlLm0zLmNvbS8pCi0gMjAxOS0wOC0yMiAtIFvjg57jgqTjgq/jg63jgrXjg7zjg5PjgrnjgavjgYrjgZHjgotXZWIgQVBJ44K544Kt44O844Oe44Gu566h55CG4pSAIEdyYXBoUUzjgIFnUlBD44CBT3BlbkFQSeOBrueJueW+tOOBqOS9v+OBhOOBqeOBk+OCjV0oaHR0cHM6Ly9lbXBsb3ltZW50LmVuLWphcGFuLmNvbS9lbmdpbmVlcmh1Yi9lbnRyeS8yMDE5LzA4LzIyLzEwMzAwMCkgYnkgW0BvdGE0MnldKGh0dHBzOi8vdHdpdHRlci5jb20vb3RhNDJ5KQotIDIwMTktMDgtMjQgLSBbU3dhZ2dlcuODieOCreODpeODoeODs+ODiOOBi+OCiU9wZW5BUEkgR2VuZXJhdG9y44KS5L2/44Gj44Gm44Oi44OD44Kv44K144O844OQ44O85L2c5oiQXShodHRwczovL3FpaXRhLmNvbS9tYXNheW9zaGkwMjIyL2l0ZW1zLzQ4NDVlNGM3MTVkMDQ1ODdjMTA0KSBieSBb5Z2C5pys5q2j576pXShodHRwczovL3FpaXRhLmNvbS9tYXNheW9zaGkwMjIyKQotIDIwMTktMDgtMjkgLSBbT3BlbkFQSeWIneaOol0oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIvYXJ0aWNsZS8xNDk1OTg2KSBieSBbcGVha3hpZV0oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIvdXNlci8xMTEzMTUyKSBhdCBb6IW+6K6v5LqR56S+5Yy6XShodHRwczovL2Nsb3VkLnRlbmNlbnQuY29tL2RldmVsb3BlcikKLSAyMDE5LTA4LTI5IC0gW+WFqOmdoui/m+WMlu+8mkt1YmVybmV0ZXMgQ1JEIDEuMTYgR0HliY3nnrtdKGh0dHBzOi8vd3d3LnNlcnZpY2VtZXNoZXIuY29tL2Jsb2cva3ViZXJuZXRlcy0xLjE2LWNyZC1nYS1wcmV2aWV3LykgYnkgW01pbiBLaW1dKGh0dHBzOi8vZ2l0aHViLmNvbS95dWU5OTQ0ODgyKSBhdCBbU2VydmljZU1lc2hlciBCbG9nXShodHRwczovL3d3dy5zZXJ2aWNlbWVzaGVyLmNvbS9ibG9nLykKLSAyMDE5LTA5LTAxIC0gW0NyZWF0aW5nIGEgUEhQLVNsaW0gc2VydmVyIHVzaW5nIE9wZW5BUEkgKFlvdXR1YmUgdmlkZW8pXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTVjSnRiSXJzWWtnKSBieSBbRGFuaWVsIFBlcnNzb25dKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2NoYW5uZWwvVUNuRy1UTjIzbHN3TzZRYnZXaE10eHBBKQotIDIwMTktMDktMDYgLSBbVmVydC54IGFuZCBPcGVuQVBJXShodHRwczovL3dpc3NlbC5uZXQvYmxvZy8yMDE5LzA5L3ZlcnR4LWFuZC1vcGVuYXBpLmh0bWwpIGJ5IFtTdGVwaGFuIEggV2lzc2VsXShodHRwczovL3R3aXR0ZXIuY29tL25vdGVzc2Vuc2VpKSBhdCBbd2lzc2VsLm5ldCBibG9nXShodHRwczovL3dpc3NlbC5uZXQpCi0gMjAxOS0wOS0wOSAtIFtDbG91ZC1uYXRpdmUgZGV2ZWxvcG1lbnQgLSBDcmVhdGluZyBSRVNUZnVsIG1pY3Jvc2VydmljZXNdKGh0dHBzOi8vY2xvdWQuaWJtLmNvbS9kb2NzL2Nsb3VkLW5hdGl2ZT90b3BpYz1jbG91ZC1uYXRpdmUtcmVzdC1hcGkpIGluIFtJQk0gQ2xvdWQgRG9jc10oaHR0cHM6Ly9jbG91ZC5pYm0uY29tL2RvY3MpCi0gMjAxOS0wOS0xNCAtIFtHZW5lcmF0aW5nIGFuZCBDb25maWd1cmluZyBhIE1hc3RlcmNhcmQgQVBJIENsaWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubWFzdGVyY2FyZC5jb20vcGxhdGZvcm0vZG9jdW1lbnRhdGlvbi9nZW5lcmF0aW5nLWFuZC1jb25maWd1cmluZy1hLW1hc3RlcmNhcmQtYXBpLWNsaWVudC8pIGF0IFtNYXN0ZXJjYXJkIERldmVsb3BlcnMgUGxhdGZvcm1dKGh0dHBzOi8vZGV2ZWxvcGVyLm1hc3RlcmNhcmQuY29tL3BsYXRmb3JtL2RvY3VtZW50YXRpb24vKQotIDIwMTktMDktMTUgLSBbT3BlbkFQSShTd2FnZ2VyKeWwjuWFpeS4i+iqv+OBuV0oaHR0cHM6Ly9xaWl0YS5jb20vU2hvaWNoaUt1cmFva2EvaXRlbXMvZjFmN2EzYzIzNzZmN2NkOWM1NmEpIGJ5IFtTaG9pY2hpIEt1cmFva2FdKGh0dHBzOi8vcWlpdGEuY29tL1Nob2ljaGlLdXJhb2thKQotIDIwMTktMDktMTcgLSBbVHV0b3JpYWw6IERvY3VtZW50aW5nIGh0dHA0ayBBUElzIHdpdGggT3BlbkFwaTNdKGh0dHBzOi8vd3d3Lmh0dHA0ay5vcmcvdHV0b3JpYWxzL2RvY3VtZW50aW5nX2FwaXNfd2l0aF9vcGVuYXBpLykgYnkgW2h0dHA0a10oaHR0cHM6Ly93d3cuaHR0cDRrLm9yZy8pCi0gMjAxOS0wOS0yMiAtIFtPcGVuQVBJIDPjgpLlrozlhajjgavnkIbop6PjgafjgY3jgovmnKxdKGh0dHBzOi8vYm9vdGgucG0vamEvaXRlbXMvMTU3MTkwMikgYnkgW0BvdGE0MnldKGh0dHBzOi8vdHdpdHRlci5jb20vb3RhNDJ5KQotIDIwMTktMDktMjIgLSBbUkVTVGZ1bCBBUElzOiBUdXRvcmlhbCBvZiBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vbWVkaXVtLmNvbS9AYW1pcm0ubGF2YXNhbmkvcmVzdGZ1bC1hcGlzLXR1dG9yaWFsLW9mLW9wZW5hcGktc3BlY2lmaWNhdGlvbi1lZWFkYTBlMzkwMWQpIGJ5IFtBbWlyIExhdmFzYW5pXShodHRwczovL21lZGl1bS5jb20vQGFtaXJtLmxhdmFzYW5pKQotIDIwMTktMDktMjIgLSBbUmVkZWZpbmluZyBTREtzIGFzIHNvZnR3YXJlIGRpdmVyc2l0eSBraXRzXShodHRwczovL2RldnJlbC5uZXQvZGV2LXJlbC9yZWRlZmluaW5nLXNka3MtYXMtc29mdHdhcmUtZGl2ZXJzaXR5LWtpdHMpIGJ5IFtTaWQgTWFlc3RyZSAoWGVybyldKGh0dHBzOi8vdHdpdHRlci5jb20vc2lkbmV5YWxsZW4pIGF0IFtEZXZSZWxDb24gU2FuIEZyYW5jaXNjbyAyMDE5XShodHRwczovL3NmMjAxOS5kZXZyZWwubmV0LykKLSAyMDE5LTA5LTIzIC0gW3N3YWdnZXLjgYvjgolPcGVuQXBpIEdlbmVyYXRvcuOBp1NwcmluZ+OBruOCs+ODvOODieOCkuiHquWLleeUn+aIkF0oaHR0cHM6Ly9xaWl0YS5jb20vbGl0dGxlRmVldC9pdGVtcy80OTJkZjJhZDY4YTA3OTlhNWU1ZSkgYnkgW0BsaXR0bGVGZWV0XShodHRwczovL3FpaXRhLmNvbS9saXR0bGVGZWV0KSBhdCBbUWlpdGFdKGh0dHBzOi8vcWlpdGEuY29tLykKLSAyMDE5LTA5LTI0IC0gW0VpbmUgU3R1bmRlIHdhcyBtaXQgQXBpIEZpcnN0IV0oaHR0cHM6Ly93d3cuc2xpZGVzaGFyZS5uZXQvSmFuV2VpbnNjaGVua2VyL2VpbmUtc3R1bmRlLXdhcy1taXQtYXBpLWZpcnN0KSBieSBbQGphbndlaW5zY2hlbmtlcl0oaHR0cHM6Ly90d2l0dGVyLmNvbS9qYW53ZWluc2NoZW5rZXIpIGF0IFtKYXZhIEZvcnVtIE5vcmRdKGh0dHBzOi8vamF2YWZvcnVtbm9yZC5kZS8pCi0gMjAxOS0xMC0wOSAtIFtvcGVuYXBpLWdlbmVyYXRvciDjgafnlJ/miJDjgZfjgZ8gR28g44Kv44Op44Kk44Ki44Oz44OI44GnIEJlYXJlciDoqo3oqLzjgpLjgZnjgotdKGh0dHBzOi8vYXV0b3BwLXRlY2guaGF0ZW5hYmxvZy5jb20vZW50cnkvMjAxOS8xMC8wOS8yMjIwMzkpIGJ5IFtBa2lyYSBUYW5pbXVyYV0oaHR0cHM6Ly9naXRodWIuY29tL2F1dG9wcCkKLSAyMDE5LTEwLTEwIC0gW0F1dG9tYXRpYyBHZW5lcmF0aW9uIG9mIFJFU1QgQ2xpZW50c10oaHR0cHM6Ly93d3cubWVldHVwLmNvbS9mci1GUi9Dcml0ZW8tTGFicy1UZWNoLVRhbGtzL2V2ZW50cy8yNjQ3NzU3NjgvKSBieSBUaG9tYXMgUGV5cmFyZCwgU2VuaW9yIFNvZnR3YXJlIEVuZ2luZWVyIGF0IENyaXRlbyBpbiBbRnVsbC1TdGFjayBUZWNoIFRhbGtzIChNZWV0dXApXShodHRwczovL3d3dy5tZWV0dXAuY29tL2ZyLUZSL0NyaXRlby1MYWJzLVRlY2gtVGFsa3MvZXZlbnRzLzI2NDc3NTc2OC8pCi0gMjAxOS0xMC0xMiAtIFtPcGVuQXBp6Ieq5Yqo55Sf5oiQY2xpZW50XShodHRwczovL2Jsb2cuY3Nkbi5uZXQvd3hpZDI3OTgyMjYvYXJ0aWNsZS9kZXRhaWxzLzEwMjUyNzQ2NykgYnkgW+mDkeazvea0sl0oaHR0cHM6Ly9tZS5jc2RuLm5ldC93eGlkMjc5ODIyNikKLSAyMDE5LTEwLTE2IC0gW0hvdyB0byBzaGlwIEFQSXMgZmFzdGVyP10oaHR0cHM6Ly9tZWRpdW0uY29tL0BhY2NvdW50c183NjIyNC9ob3ctdG8tc2hpcC1hcGlzLWZhc3Rlci1jYWJlZjJmODE5ZTQpIGJ5IFtTaW1vbiBHdWlsbGlhbXMgQCBQb25pQ29kZV0oaHR0cHM6Ly9wb25pY29kZS5kZXYpCi0gMjAxOS0xMC0yMiAtIFtPcGVuQVBJICsgU3ByaW5nIEJvb3QoS290bGluKeOBp+ODleOCoeOCpOODq+ODgOOCpuODs+ODreODvOODiUFQSeOCkuS9nOaIkOOBmeOCi10oaHR0cHM6Ly9xaWl0YS5jb20vYm9yb25uZ28vaXRlbXMvNGI3OGI5MjUyNjIwOWRhZWFlZTkpIGJ5IFtZdWtpIEZ1cnVrYXdhXShodHRwczovL3R3aXR0ZXIuY29tL3l1a2lfZnVydWthd2E1KQotIDIwMTktMTAtMjQgLSBbTWljcm9wcm9maWxlIE9wZW5BUEkgLSBDb2RlIEZpcnN0IG9yIERlc2lnbiBGaXJzdD9dKGh0dHBzOi8vZ2l0aHViLmNvbS9wZS1zdC9hcGlkb2NzL2Jsb2IvbWFzdGVyL01pY3JvUHJvZmlsZS1PcGVuQVBJLWFsbC1zbGlkZXMucGRmKSBieSBbUGV0ZXIgW3DJm8qDyZldIFN0ZWluZXJdKGh0dHBzOi8vdHdpdHRlci5jb20vcGVzY2hlKSBhdCBbZWNsaXBzZWNvbiBFdXJvcGUgMjAxOV0oaHR0cHM6Ly93d3cuZWNsaXBzZWNvbi5vcmcvZXVyb3BlMjAxOS9zZXNzaW9ucy9taWNyb3Byb2ZpbGUtb3BlbmFwaS1jb2RlLWZpcnN0LW9yLWRlc2lnbi1maXJzdCkKLSAyMDE5LTExLTA2IC0gW0dlbmVyYXRpbmcgQVBJIGNsaWVudHMgYmFzZWQgb24gT3BlbkFQSSB2MyBzcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly85OGVsZW1lbnRzLmNvbS9ibG9nL2dlbmVyYXRpbmctYXBpLWNsaWVudHMtYmFzZWQtb24tb3BlbmFwaS12My1zcGVjaWZpY2F0aW9ucykgYnkgW0RvbWluaWsgSmFzdHJ6xJlic2tpIEAgOThlbGVtZW50c10oaHR0cHM6Ly85OGVsZW1lbnRzLmNvbSkKLSAyMDE5LTExLTA2IC0gW09wZW5BUEnjgpLliKnnlKjjgZfjgaboh6rliY3jga5BUEnjgrXjg7zjg5Djg7woU2luYXRyYSnjgpLnp7vmpI3jgZfjgZ/mmYLjga7jg6Hjg6JdKGh0dHBzOi8vcWlpdGEuY29tL1lhc3VoaXJvQUJFL2l0ZW1zL2M3MzkyMGVhYjJkOWQ2ZTk3ZmQ5KSBieSBbWWFzdWhpcm8gQUJFXShodHRwczovL3R3aXR0ZXIuY29tL1lhc3VoaXJvQUJFKQotIDIwMTktMTEtMDcgLSBbQVBJIEZpcnN0IGRldmVsb3BtZW50IHdpdGggT3BlbkFQSSAtIFlvdSBzaG91bGQgeW91IHByYWN0aXNlIGl0ICE/XShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUY5aUYzYTFaOFk4KSBieSBbTmljayBWYW4gSG9vZl0oaHR0cHM6Ly93d3cubmlja3Zhbmhvb2YuY29tLykgYXQgW0Rldm94eCBCZWxnaXVtIDIwMTldKGh0dHBzOi8vZGV2b3h4LmJlLykKLSAyMDE5LTExLTA4IC0gW0pIaXBzdGVyIGJleW9uZCBDUlVEIC0gQVBJLUZpcnN0IGZvciBFbnRlcnByaXNlcyBieSBFbnJpY28gQ29zdGFuemldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9bTI4SkZvdktRMjApIGJ5IFtFbnJpY28gQ29zdGFuemldKGh0dHBzOi8vdHdpdHRlci5jb20vZW5yaWNvY29zdGFuemkpIGF0IFtKSGlwc3RlciBDb25mIDIwMTkgaW4gUGFyaXNdKGh0dHBzOi8vamhpcHN0ZXItY29uZi5naXRodWIuaW8vKQotIDIwMTktMTEtMTEgLSBbVHlwZVNjcmlwdCBSRVNUIEFQSeOCr+ODqeOCpOOCouODs+ODiF0oaHR0cHM6Ly9xaWl0YS5jb20vdW5odXJyaWVkL2l0ZW1zLzdiNzRmN2QzYzQzNTQ1ZGFkZDJiKSBieSBbQHVuaHVycmllZF0oaHR0cHM6Ly9xaWl0YS5jb20vdW5odXJyaWVkKQotIDIwMTktMTEtMTEgLSBbT25lIFNwZWMgdG8gUnVsZSB0aGVtIGFsbCAtIE9wZW5BUEkgaW4gQWN0aW9uXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PU1NYXlfbmh0OGVjKSBieSBbQW5kcmVhcyBMaXR0XShodHRwczovL2dpdGh1Yi5jb20vbGl0dGxkcikgYXQgW2NvZGUudGFsa3MgMjAxOV0oaHR0cHM6Ly93d3cuY29kZXRhbGtzLmNvbS8pCi0gMjAxOS0xMS0xMyAtIFtPcGVuQVBJIDMuMCBFZGl0b3IgQW5kIEdlbmVyYXRvciBXaXRoIEEgU3ByaW5nIEJvb3QgRXhhbXBsZV0oaHR0cHM6Ly9zaW1wbHktaG93LmNvbS9kZXNpZ24tYW5kLWdlbmVyYXRlLWFwaS1jb2RlLWZyb20tb3BlbmFwaSkgYXQgW1NpbXBseSBIb3ddKGh0dHBzOi8vc2ltcGx5LWhvdy5jb20vKQotIDIwMTktMTEtMTcgLSBbT3BlbkFQSSBHZW5lcmF0b3IgWW91VHViZSBwbGF5bGlzdF0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vcGxheWxpc3Q/bGlzdD1QTHRKeUhWTWR6ZkY2ZkJrT1VWNVZEVkVyUDIzQ0dnSEl5KSBhdCBbWW91VHViZV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20pCi0gMjAxOS0xMS0yMCAtIFtJbnRyb2R1Y3Rpb24gdG8gT3BlbkFQSV0oaHR0cHM6Ly9ub3RpLnN0L2xvcm5hamFuZS9IdkRIN1UvaW50cm9kdWN0aW9uLXRvLW9wZW5hcGkpIGJ5IFtMb3JuYSBNaXRjaGVsbF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9sb3JuYWphbmUpIGF0IFtHT1RPIENvcGVuaGFnZW4gMjAxOV0oaHR0cHM6Ly9nb3RvY3BoLmNvbS8yMDE5LykKLSAyMDE5LTExLTIwIC0gW0hvdyB0byBHZW5lcmF0ZSBBbmd1bGFyIGNvZGUgZnJvbSBPcGVuQVBJIHNwZWNpZmljYXRpb25zXShodHRwczovL2RvdG5ldHRob3VnaHRzLm5ldC9ob3ctdG8tZ2VuZXJhdGUtYW5ndWxhci1jb2RlLWZyb20tb3BlbmFwaS1zcGVjaWZpY2F0aW9ucy8pIGJ5IEFudXJhagotIDIwMTktMTEtMjMgLSBbU3dhZ2dlciDjgafjga/jgarjgYQgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIDMuMCDjgavjgojjgosgQVBJIOOCteODvOODkOODvOmWi+eZul0oaHR0cHM6Ly93d3cuc2xpZGVzaGFyZS5uZXQvdGVjaGJsb2d5YWhvby9zd2FnZ2VyLW9wZW5hcGktc3BlY2lmaWNhdGlvbi0zMC1hcGkpIGJ5IFtUZXRzdXlhIE1vcmltb3RvXShodHRwczovL2dpdGh1Yi5jb20vdDJ5KSBhdCBbSkpVRyBDQ0MgMjAxOSBGYWxsXShodHRwczovL2NjYzIwMTlmYWxsLmphdmEtdXNlcnMuanAvKQotIDIwMTktMTEtMjQgLSBbQWNjZWxlcmF0ZSBGbHV0dGVyIGRldmVsb3BtZW50IHdpdGggT3BlbkFQSSBhbmQgRGFydCBjb2RlIGdlbmVyYXRpb25dKGh0dHBzOi8vbWVkaXVtLmNvbS9AaXJpbmFzb3V0aHdlbGxfMjIwL2FjY2VsZXJhdGUtZmx1dHRlci1kZXZlbG9wbWVudC13aXRoLW9wZW5hcGktYW5kLWRhcnQtY29kZS1nZW5lcmF0aW9uLTFmMTZmODMyOWE2YSkgYnkgW0lyaW5hIFNvdXRod2VsbF0oaHR0cHM6Ly9tZWRpdW0uY29tL0BpcmluYXNvdXRod2VsbF8yMjApCi0gMjAxOS0xMS0yNSAtIFtvcGVuYXBpLWdlbmVyYXRvcuOBp+aJi+i7veOBq+OCueOCv+ODluOCteODvOODkOOBqOOCr+ODqeOCpOOCouODs+ODiOOBrueUn+aIkF0oaHR0cHM6Ly9xaWl0YS5jb20vcG9jaG9wb2NobzEzL2l0ZW1zLzhkYjY2MmUxOTM0ZmIyYjQwOGI4KSBieSBbQHBvY2hvcG9jaG8xM10oaHR0cHM6Ly90d2l0dGVyLmNvbS9wb2Nob3BvY2hvMTMpCi0gMjAxOS0xMS0yNiAtIFtDb3JkYUNvbiAyMDE5IEhpZ2hsaWdodHM6IEJyYWlkIFNlcnZlciBhbmQgT3BlbkFQSSBHZW5lcmF0b3IgZm9yIENvcmRhIENsaWVudCBBUEnigJlzXShodHRwczovL2Jsb2cuYjlsYWIuY29tL2NvcmRhY29uLTIwMTktaGlnaGxpZ2h0cy1icmFpZC1zZXJ2ZXItYW5kLW9wZW5hcGktZ2VuZXJhdG9yLWZvci1jb3JkYS1mbG93cy1hcGktcy1kMjQxNzljY2IyN2MpIGJ5IFtBZGVsIFJ1c3R1bV0oaHR0cHM6Ly9ibG9nLmI5bGFiLmNvbS9AYWRlbHJlc3RvbSkgYXQgW0I5bGFiXShodHRwczovL2Jsb2cuYjlsYWIuY29tLykKLSAyMDE5LTEyLTAzIC0gW0EgUm9hZCB0byBMZXNzIENvZGluZzogQXV0by1HZW5lcmF0ZSBBUElMaWJyYXJ5XShodHRwczovL3d3dy5jb3JkYS5uZXQvYmxvZy9hLXJvYWQtdG8tbGVzcy1jb2RpbmctYXV0by1nZW5lcmF0ZS1hcGlsaWJyYXJ5LykgYXQgW0NvcmRhIEJsb2ddKGh0dHBzOi8vd3d3LmNvcmRhLm5ldC9ibG9nLykKLSAyMDE5LTEyLTA0IC0gW0FuZ3VsYXLvvItOZXN0SlPvvItPcGVuQVBJ77yIU3dhZ2dlcu+8ieOBp+ODnuOCpOOCr+ODreOCteODvOODk+OCueOCkuimlumHjuOBq+WFpeOCjOOBn+eSsOWig+OCkuiAg+OBiOOCi10oaHR0cHM6Ly9xaWl0YS5jb20vdGVyYWN5NTUvaXRlbXMvMDMyN2M3YTE3MGVjNzcyOTcwYzYpIGJ5IFvjgabjgonjgZfjg7xdKGh0dHBzOi8vdHdpdHRlci5jb20vdGVyYWN5NTUpCi0gMjAxOS0xMi0wNSAtIFtDb2RlIGdlbmVyYXRpb24gb24gdGhlIEphdmEgVk1dKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3N1bGxpcy9jb2RlLWdlbmVyYXRpb24tb24tdGhlLWphdmEtdm0tMjAxOS0xMi0wNSkgYnkgW1NlYW4gU3VsbGl2YW5dKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3N1bGxpcykKLSAyMDE5LTEyLTE3IC0gW09wZW5BUEkgR2VuZXJhdG9yIOOBpyBPQXV0aDIg44Ki44Kv44K744K544OI44O844Kv44Oz55m66KGM44Gu44Kz44O844OJ44G+44Gn55Sf5oiQ44GX44Gm44G/44KLXShodHRwczovL3d3dy50ZWNoc2NvcmUuY29tL2Jsb2cvMjAxOS8xMi8xNy9vcGVuYXBpLWdlbmVyYXRvci1vYXV0aDItYWNjZXNzdG9rZW4vKSBieSBbVEVDSFNDT1JFXShodHRwczovL3d3dy50ZWNoc2NvcmUuY29tL2Jsb2cvKQotIDIwMTktMTItMjMgLSBbVXNlIEFkYSBmb3IgWW91ciBXZWIgRGV2ZWxvcG1lbnRdKGh0dHBzOi8vd3d3LmVsZWN0cm9uaWNkZXNpZ24uY29tL3RlY2hub2xvZ2llcy9lbWJlZGRlZC1yZXZvbHV0aW9uL2FydGljbGUvMjExMTkxNzcvdXNlLWFkYS1mb3IteW91ci13ZWItZGV2ZWxvcG1lbnQpIGJ5IFtTdGVwaGFuZSBDYXJyZXpdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGNhcnJleikKLSAyMDE5LTEyLTIzIC0gW09wZW5BUEnjga7jgrnjgq3jg7zjg57jgpLliIblibLjg7vmp4vpgKDljJbjgZfjgabjgYTjgY/mlrnms5VdKGh0dHBzOi8vZ2lmdC10ZWNoLmNvLmpwL2FydGljbGVzL3N0cnVjdHVyZWQtb3BlbmFwaS1zY2hlbWEpIGJ5IFvlsI/po6/loZrpgZTkuZ9dKGh0dHBzOi8vZ2l0aHViLmNvbS90Mmg1KSBhdCBbR2lGVCwgSW5jXShodHRwczovL2dpZnQtdGVjaC5jby5qcC8pCi0gMjAyMC0wMS0xNyAtIFtPcGVuQVBJIGRlbW8gZm9yIFB1bHAgMy4wIEdBXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PW1GQlAtTTBaUGZ3JnQ9MTc4cykgYnkgW1B1bHBdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2NoYW5uZWwvVUNJNDNGZnM0VlBEdjdhd1h2dkJKZlJRKSBhdCBbWW91dHViZV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vKQotIDIwMjAtMDEtMTkgLSBbV2h5IGRvY3VtZW50IGEgUkVTVCBBUEkgYXMgY29kZT9dKGh0dHBzOi8vZGV2LnRvL3JvbGZzdHJlZWZrZXJrL3doeS1kb2N1bWVudC1hLXJlc3QtYXBpLWFzLWNvZGUtNWU3cCkgYnkgW1JvbGYgU3RyZWVma2Vya10oaHR0cHM6Ly9naXRodWIuY29tL3Jwc3RyZWVmKSBhdCBbREVWIENvbW11bml0eV0oaHR0cHM6Ly9kZXYudG8pCi0gMjAyMC0wMS0yOCAtIFtHZXQgWW91ciBTZXJ2ZXJsZXNzIFN3YWdnZXIgQmFjayB3aXRoIE9wZW5BUEldKGh0dHBzOi8vZGV2LnRvL21hdHR0eWxlci9nZXQteW91ci1zZXJ2ZXJsZXNzLXN3YWdnZXItYmFjay13aXRoLW9wZW5hcGktNDhnYykgYnkgW01hdHQgVHlsZXJdKGh0dHBzOi8vZGV2LnRvL21hdHR0eWxlcikKLSAyMDIwLTAxLTMwIC0gW09wZW5BUEkgR2VuZXJhdG9y44G444Gu44Kz44Oz44OI44Oq44OT44Ol44O844OIXShodHRwczovL3d3dy55dXRha2EwbS53b3JrL2VudHJ5LzIwMjAvMDEvMzAvMTYzOTA1KSBieSBbeXV0YWthMG1dKGh0dHBzOi8vZ2l0aHViLmNvbS95dXRha2EwbSkKLSAyMDIwLTAyLTAxIC0gW1VzaW5nIE9wZW5BUEkgdG8gTWF4aW1pc2UgWW91ciBQdWxwIDMgRXhwZXJpZW5jZV0oaHR0cHM6Ly9mb3NkZW0ub3JnLzIwMjAvc2NoZWR1bGUvZXZlbnQvb3BlbmFwaS8pIGJ5IFtEZW5uaXMgS2xpYmFuXShodHRwczovL2dpdGh1Yi5jb20vZGtsaWJhbi8pIGF0IFtGT1NERU1dKGh0dHBzOi8vZm9zZGVtLm9yZy8pCi0gMjAyMC0wMi0wNyAtIFtXaHkgeW91IHNob3VsZCB1c2UgT3BlbkFQSSBmb3IgeW91ciBBUEkgZGVzaWduXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PXpoYjd2VUFwTFc4JnQ9OTI3cykgYnkgW05pY2sgVmFuIEhvb2ZdKGh0dHBzOi8vYXBpY29uZmVyZW5jZS5uZXQvc3BlYWtlci9uaWNrLXZhbi1ob29mLykgYXQgW0FQSSBDb25mZXJlbmNlXShodHRwczovL2FwaWNvbmZlcmVuY2UubmV0LykKLSAyMDIwLTAyLTE3IC0gW1J1YnluZXRlczogdXNpbmcgT3BlbkFQSSB0byB2YWxpZGF0ZSBLdWJlcm5ldGVzIGNvbmZpZ3NdKGh0dHBzOi8vd3d3LmJyaWdodGJveC5jb20vYmxvZy8yMDIwLzAyLzE3L3VzaW5nLW9wZW5hcGktdG8tdmFsaWRhdGUta3ViZXJuZXRlcy1jb25maWdzLykgYnkgTmVpbCBXaWxzb24gYXQgW0JyaWdodGJveF0oaHR0cHM6Ly93d3cuYnJpZ2h0Ym94LmNvbS8pCi0gMjAyMC0wMi0yMCAtIFtCdWlsZGluZyBTREtzIGZvciB0aGUgZnV0dXJlXShodHRwczovL2RldmJsb2cueGVyby5jb20vYnVpbGRpbmctc2Rrcy1mb3ItdGhlLWZ1dHVyZS1iNzlmZjcyNmRmZDYpIGJ5IFtTaWQgTWFlc3RyZSAoWGVybyldKGh0dHBzOi8vdHdpdHRlci5jb20vc2lkbmV5YWxsZW4pCi0gMjAyMC0wMi0yNyAtIFtOdXh05Yip55So44OX44Ot44OA44Kv44OI44GnSUUxMeOBqOS7suiJr+OBj+OBmeOCi+OBn+OCgeOBrkUyRV0oaHR0cHM6Ly90ZWNoLm1lZHBlZXIuY28uanAvZW50cnkvZTJlLWllMTEpIGF0IFtNZWRwZWVyLmNvLmpwIFRlY2ggQmxvZ10oaHR0cHM6Ly90ZWNoLm1lZHBlZXIuY28uanAvKQotIDIwMjAtMDItMjkgLSBbUHJvdmlkaW5nIFN1cHBvcnQgdG8gSW9UIERldmljZXMgRGVwbG95ZWQgaW4gRGlzY29ubmVjdGVkIFJ1cmFsIEVudmlyb25tZW50IChDb25mZXJlbmNlIHBhcGVyKV0oaHR0cHM6Ly9saW5rLnNwcmluZ2VyLmNvbS9jaGFwdGVyLzEwLjEwMDcvOTc4LTMtMDMwLTQxNDk0LThfMTQpIGJ5IFNlcmdpbyBMYXNvLCBEYW5pZWwgRmxvcmVzLU1hcnTDrW4sIEp1YW4gTHVpcyBIZXJyZXJhQ2FybG9zLCBDYW5hbEp1YW4gTWFudWVsLCBNdXJpbGxvSmF2aWVyIEJlcnJvY2FsCi0gMjAyMC0wMy0wMiAtIFtIb3cgVG8gR2VuZXJhdGUgQW5ndWxhciAmIFNwcmluZyBDb2RlIEZyb20gT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShodHRwczovL3d3dy5tb2trYXBwcy5kZS9ibG9nL2hvdy10by1nZW5lcmF0ZS1hbmd1bGFyLWFuZC1zcHJpbmctY29kZS1mcm9tLW9wZW4tYXBpLXNwZWNpZmljYXRpb24vKSBieSBbTWljaGFlbCBIb2ZmbWFubl0oaHR0cHM6Ly93d3cubW9ra2FwcHMuZGUvKQotIDIwMjAtMDMtMDIgLSBbT3BlbkFQSSBHZW5lcmF0b3IgKyBUeXBlU2NyaXB0IOOBp+Wni+OCgeOCi+iHquWLleeUn+aIkOOBruWei+OBq+WuiOOCieOCjOOBn+ixiuOBi+OBquOCr+ODqeOCpOOCouODs+ODiOeUn+a0u10oaHR0cHM6Ly9naWZ0LXRlY2guY28uanAvYXJ0aWNsZXMvb3BlbmFwaS1nZW5lcmF0b3ItdHlwZXNjcmlwdCkgYnkgW+S6lOeZvuiUtSDnm7TmqLldKGh0dHBzOi8vZ2lmdC10ZWNoLmNvLmpwL21lbWJlcnMvbmFva2lpb3JvaSkgYXQgW0dpRlTmoKrlvI/kvJrnpL5dKGh0dHBzOi8vZ2lmdC10ZWNoLmNvLmpwLykKLSAyMDIwLTAzLTEwIC0gW09wZW5BUEkgR2VuZXJhdG9yIE1lZXR1cCAjMV0oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vYWtpaGl0b19uYWthbm8vb3BlbmFwaS1nZW5lcmF0b3ItbWVldHVwLW51bWJlci0xKSBieSBb5Lit6YeO5pqB5Lq6XShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKSBhdCBbT3BlbkFQSSBHZW5lcmF0b3IgTWVldHVwICMxXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLW1lZXR1cC5jb25ucGFzcy5jb20vZXZlbnQvMTY4MTg3LykKLSAyMDIwLTAzLTE1IC0gW0xvYWQgVGVzdGluZyBZb3VyIEFQSSB3aXRoIFN3YWdnZXIvT3BlbkFQSSBhbmQgazZdKGh0dHBzOi8vazYuaW8vYmxvZy9sb2FkLXRlc3RpbmcteW91ci1hcGktd2l0aC1zd2FnZ2VyLW9wZW5hcGktYW5kLWs2KQotIDIwMjAtMDQtMTMgLSBb5L+655qE44CQT0FT44CR44Go44Gu5ZCR44GN5ZCI44GE5pa5ICjniIbpgJ/jgadPcGVuQVBJ44Go5Y+L6YGU44Gr44Gq44KN44GGKV0oaHR0cHM6Ly90ZWNoLWJsb2cub3B0aW0uY28uanAvZW50cnkvMjAyMC8wNC8xMy8xMDAwMDApIGluIFtPUFRpbSBCbG9nXShodHRwczovL3RlY2gtYmxvZy5vcHRpbS5jby5qcC8pCi0gMjAyMC0wNC0yMiAtIFtJbnRyb2R1Y3Rpb24gdG8gT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vbm9yZGljYXBpcy5jb20vaW50cm9kdWN0aW9uLXRvLW9wZW5hcGktZ2VuZXJhdG9yLykgYnkgW0tyaXN0b3BoZXIgU2FuZG92YWxdKGh0dHBzOi8vbm9yZGljYXBpcy5jb20vYXV0aG9yL3NhbmRvdmFsZWZmZWN0LykgaW4gW05vcmRpYyBBUElzXShodHRwczovL25vcmRpY2FwaXMuY29tLykKLSAyMDIwLTA0LTI3IC0gW0hvdyB3ZSB1c2UgT3BlbiBBUEkgdjMgc3BlY2lmaWNhdGlvbiB0byBhdXRvLWdlbmVyYXRlIEFQSSBkb2N1bWVudGF0aW9uLCBjb2RlLXNuaXBwZXRzIGFuZCBjbGllbnRzXShodHRwczovL21lZGl1bS5jb20vcGRmLWdlbmVyYXRvci1hcGkvaG93LXdlLXVzZS1vcGVuLWFwaS12My1zcGVjaWZpY2F0aW9uLXRvLWF1dG8tZ2VuZXJhdGUtYXBpLWRvY3VtZW50YXRpb24tY29kZS1zbmlwcGV0cy1hbmQtY2xpZW50cy1kMTI3YTNjZWE3ODQpIGJ5IFtUYW5lbCBUw6RoZXDDtWxkXShodHRwczovL21lZGl1bS5jb20vQHRhbmVsLnRhaGVwb2xkKQotIDIwMjAtMDUtMDkgLSBbT3BlbkFQSeOBp+OBiuaJi+i7veOBq+ODouODg+OCr0FQSeOCteODvOODkOODvOOCkuWLleOBi+OBmV0oaHR0cHM6Ly9xaWl0YS5jb20va2FzYV9sZS9pdGVtcy85N2NhNmE4ZGQ0NjA1Njk1YzI1YykgYnkgW1NhY2hpZSBLYW1iYV0oaHR0cHM6Ly9xaWl0YS5jb20va2FzYV9sZSkKLSAyMDIwLTA1LTE4IC0gW1NwcmluZyBCb290IFJFU1Qgd2l0aCBPcGVuQVBJIDNdKGh0dHBzOi8vZGV2LnRvL2FsZm9uemphbmZyaXRoei9zcHJpbmctYm9vdC1yZXN0LXdpdGgtb3BlbmFwaS0zLTU5am0pIGJ5IFtBbGZvbnogSmFuIEZyaXRoel0oaHR0cHM6Ly9kZXYudG8vYWxmb256amFuZnJpdGh6KQotIDIwMjAtMDUtMTkgLSBbRGVhZCBTaW1wbGUgQVBJcyB3aXRoIE9wZW4gQVBJXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PXNJYVhtUjZ4UkF3KSBieSBbQ2hyaXMgVGFua2Vyc2xleV0oaHR0cHM6Ly9naXRodWIuY29tL2RyYWdvbm1hbnRhbmspIGF0IFtOZXhtb10oaHR0cHM6Ly9kZXZlbG9wZXIubmV4bW8uY29tLykKLSAyMDIwLTA1LTIyIC0gW1R5cGVTY3JpcHQgUkVTVCBBUEkgQ2xpZW50XShodHRwczovL2Rldi50by91bmh1cnJpZWQvdHlwZXNjcmlwdC1yZXN0LWFwaS1jbGllbnQtNGluMykgYnkgWyJ1bmh1cnJpZWQiXShodHRwczovL2Rldi50by91bmh1cnJpZWQpCi0gMjAyMC0wNS0yOCAtIFvjgJDkvb/nlKggbG90aWZ5ICsgU3dhZ2dlciDlu7rnva7lj6/lhbHnlKjnmoQgTElORSBOb3RpZnkgYm9044CRIC0gI05pSmlhIEAgQ2hhdGJvdCBEZXZlbG9wZXIgVGFpd2FuIOesrCAjMTkg5bCP6IGaXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWFnWVZ6NmR6aDFJKSBieSBbQ2hhdGJvdCBEZXZlbG9wZXIgVGFpd2FuXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDeGVZVXlaTm5IbXBYMjNZTkYtZXd2dykKLSAyMDIwLTA1LTI4IC0gW0J1aWxkaW5nIEFQSXMgd2l0aCBMYXJhdmVsIHVzaW5nIE9wZW5BUEldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9eGV4THZRcUFoaUEpIGJ5IFtDaHJpcyBUYW5rZXJzbGV5XShodHRwczovL2dpdGh1Yi5jb20vZHJhZ29ubWFudGFuaykgYXQgW0xhcmFjb24gRVVdKGh0dHBzOi8vbGFyYWNvbi5ldS8pCi0gMjAyMC0wNi0xMiAtIFtJbnRlcm9wZXJhYmlsaXR5IGJ5IGNvbnN0cnVjdGlvbjogY29kZSBnZW5lcmF0aW9uIGZvciBBcnJvd2hlYWQgQ2xpZW50c10oaHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL2RvY3VtZW50LzkyNzQ3NDYpIGJ5IE1pY2hlbGUgQWxiYW5vLCBCcmlhbiBOaWVsc2VuIGF0IFsyMDIwIElFRUUgQ29uZmVyZW5jZSBvbiBJbmR1c3RyaWFsIEN5YmVycGh5c2ljYWwgU3lzdGVtcyAoSUNQUyldKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy94cGwvY29uaG9tZS85Mjc0NTQ0L3Byb2NlZWRpbmcpCi0gMjAyMC0wNi0yMyAtIFvmlrDopo/jgrXjg7zjg5Djg7zjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgatUeXBlU2NyaXB044KS5o6h55So44GX44Gm44G/44GfXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwL25ld3MvMjAyMDA2MjMpIGF0IFtDQU0gVGVjaCBCbG9nXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwL25ld3MvdGVjaC1ibG9nLykKLSAyMDIwLTA2LTI5IC0gW0FydGlmYWN0IEFic3RyYWN0OiBEZXBsb3ltZW50IG9mIEFQSXMgb24gQW5kcm9pZCBNb2JpbGUgRGV2aWNlcyBhbmQgTWljcm9jb250cm9sbGVyc10oaHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL2RvY3VtZW50LzkxMjczNTMpIGJ5IFtTZXJnaW8gTGFzbyA7IE1hcmlubyBMaW5hamUgOyBKb3NlIEdhcmNpYS1BbG9uc28gOyBKdWFuIE0uIE11cmlsbG8gOyBKYXZpZXIgQmVycm9jYWxdKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy9kb2N1bWVudC85MTI3MzUzL2F1dGhvcnMjYXV0aG9ycykgYXQgWzIwMjAgSUVFRSBJbnRlcm5hdGlvbmFsIENvbmZlcmVuY2Ugb24gUGVydmFzaXZlIENvbXB1dGluZyBhbmQgQ29tbXVuaWNhdGlvbnMgKFBlckNvbSldKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy94cGwvY29uaG9tZS85MTI1NDQ5L3Byb2NlZWRpbmcpCi0gMjAyMC0wNy0wNyAtIFs1IEJlc3QgQVBJIERvY3VtZW50YXRpb24gVG9vbHNdKGh0dHBzOi8vYmxvZy5kcmVhbWZhY3RvcnkuY29tLzUtYmVzdC1hcGktZG9jdW1lbnRhdGlvbi10b29scy8pIGJ5IFN1c2FubmEgQm91c2UgYXQgW0RyZWFtRmFjdG9yeSBCbG9nXShodHRwczovL2Jsb2cuZHJlYW1mYWN0b3J5LmNvbS8pCi0gMjAyMC0wNy0xMiAtIFtPcGVuIEFQSSAzLjDjga7lrprnvqnjgYvjgolnb2xhbmfjga7jgrXjg7zjg5DjgrPjg7zjg4njga7jgrnjgrHjg6vjg4jjg7PjgpLkvZzmiJDjgZnjgotdKGh0dHBzOi8vcWlpdGEuY29tL3Byb2Zlc3Nvci9pdGVtcy80Y2JkMDRlYzA4NGQxMzA1N2JjMikgYnkgW0Bwcm9mZXNzb3IgKFFpaXRhIEJsb2cpXShodHRwczovL3FpaXRhLmNvbS9wcm9mZXNzb3IpCi0gMjAyMC0wNy0yMCAtIFtEYXRhZG9nIEFQSSBjbGllbnQgbGlicmFyaWVzIG5vdyBhdmFpbGFibGUgZm9yIEphdmEgYW5kIEdvXShodHRwczovL3d3dy5kYXRhZG9naHEuY29tL2Jsb2cvamF2YS1nby1saWJyYXJpZXMvKSBieSBKb3JkYW4gT2JleSBhdCBbRGF0YWRvZyBCbG9nXShodHRwczovL3d3dy5kYXRhZG9naHEuY29tL2Jsb2cpCi0gMjAyMC0wNy0yMyAtIFtHZW5lcmF0ZSBDbGllbnQgU0RLIGZvciAuTkVUIENvcmUgdXNpbmcgT3BlbiBBcGldKGh0dHBzOi8vZGV2LnRvL25vMGxhdzEvZ2VuZXJhdGUtY2xpZW50LXNkay1mb3ItbmV0LWNvcmUtdXNpbmctb3Blbi1hcGktMmRnaCkgYnkgW051bm8gUmVpc10oaHR0cHM6Ly9kZXYudG8vbm8wbGF3MSkKLSAyMDIwLTA3LTI2IC0gW0RhcnTjga5odHRwX2ludGVyY2VwdG9y44Op44Kk44OW44Op44Oq44KS5L2/44GG44Go6YWN5YiX44Gu44Kv44Ko44Oq44OR44Op44Oh44O844K/44GM5raI44GI44Gm44GX44G+44GG5Lu244Gu5b+c5oCl5Yem572uXShodHRwczovL3FpaXRhLmNvbS9neWFtb3RvL2l0ZW1zL2VlZWZmODFiNjc3MDQ4NzMxOWVkKSBieSBbQGd5YW1vdG9dKGh0dHBzOi8vcWlpdGEuY29tL2d5YW1vdG8pCi0gMjAyMC0wOC0wMSAtIFtHZW5lcmF0ZSBBbmd1bGFyIFJlYWN0aXZlRm9ybXMgZnJvbSBTd2FnZ2VyL09wZW5BUEldKGh0dHBzOi8vZGV2LnRvL21hcnRpbm1jd2hvcnRlci9nZW5lcmF0ZS1hbmd1bGFyLXJlYWN0aXZlZm9ybXMtZnJvbS1zd2FnZ2VyLW9wZW5hcGktMzVoOSkgYnkgW01hcnRpbiBNY1dob3J0ZXJdKGh0dHBzOi8vZGV2LnRvL21hcnRpbm1jd2hvcnRlcikKLSAyMDIwLTA4LTAzIC0gW0NyaWFuZG8gQmlibGlvdGVjYXMgcGFyYSBBUElzIFJFU1RmdWwgY29tIE9wZW5BUEksIFN3YWdnZXIgRWRpdG9yIGUgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZXZlcmlzQnJhc2lsL2NyaWFuZG8tYmlibGlvdGVjYXMtcGFyYS1hcGlzLXJlc3RmdWwtY29tLW9wZW5hcGktc3dhZ2dlci1lZGl0b3ItZS1vcGVuYXBpLWdlbmVyYXRvci03NTM0OWE2NDIwZmQpIGJ5IFtldmVyaXMgQnJhc2lsIChhbiBOVFQgREFUQSBDb21wYW55KV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BldmVyaXNCcmFzaWwpCi0gMjAyMC0wOC0xOSAtIFvjg57jgqTjgq/jg63jgrXjg7zjg5PjgrnjgpLpgKPmkLrjgZfjgabjgb/jgojjgYZdKGh0dHBzOi8vdGhpbmtpdC5jby5qcC9hcnRpY2xlLzE3NzA0KSBieSBb5bKh5LqVIOijleefoijjgYrjgYvjgYQg44KG44GG44KEKV0oaHR0cHM6Ly90aGlua2l0LmNvLmpwL2F1dGhvci8xNzU4OCksIFvms4kg5YudKOOBhOOBmuOBvyDjgb7jgZXjgospXShodHRwczovL3RoaW5raXQuY28uanAvYXV0aG9yLzE3NzA1KSBhdCBbVGhpbmsgSVTvvIjjgrfjg7Pjgq/jgqTjg4Pjg4jvvIldKGh0dHBzOi8vdGhpbmtpdC5jby5qcC8pCi0gMjAyMC0wOC0yNSAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgaggVHlwZVNjcmlwdCDjgaflnovlronlhajjgavjg5Xjg63jg7Pjg4jjgqjjg7Pjg4nplovnmbrjgpLjgZfjgabjgYTjgovoqbFdKGh0dHBzOi8vdGVjaC5zbWFydGhyLmpwL2VudHJ5LzIwMjAvMDgvMjUvMTM1NjMxKSBhdCBbU21hcnRIUiBUZWNoIEJsb2ddKGh0dHBzOi8vdGVjaC5zbWFydGhyLmpwLykKLSAyMDIwLTA5LTEwIC0gW0ludHJvZHVjdGlvbiB0byBPcGVuQVBJIHdpdGggSW5zdGFuYV0oaHR0cHM6Ly93d3cuaW5zdGFuYS5jb20vYmxvZy9pbnRyb2R1Y3Rpb24tdG8tb3BlbmFwaS13aXRoLWluc3RhbmEvKSBieSBbQ2VkcmljIFppZWxdKGh0dHBzOi8vd3d3Lmluc3RhbmEuY29tL2Jsb2cvYXV0aG9yL2NlZHJpY3ppZWwvKSBhdCBbSW5zdGFuYSBCbG9nXShodHRwczovL3d3dy5pbnN0YW5hLmNvbS9ibG9nLykKLSAyMDIwLTA5LTE3IC0gW0dlbmVyYXRlIFBvd2VyU2hlbGxTREsgdXNpbmcgb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZ2h1ZnoubGVhcm4vZ2VuZXJhdGUtcG93ZXJzaGVsbHNkay11c2luZy1vcGVuYXBpLWdlbmVyYXRvci0zM2I3MDA4OTFlMzMpIGJ5IFtHaHVmcmFuIFphaGlkaV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BnaHVmei5sZWFybikKLSAyMDIwLTA5LTI0IC0gW0hvdyB0byBhdXRvbWF0ZSBBUEkgY29kZSBnZW5lcmF0aW9uIChPcGVuQVBJL1N3YWdnZXIpIGFuZCBib29zdCBwcm9kdWN0aXZpdHkgLSBUdXRvcmlhbCB3aXRoIFJlYWN0IE5hdGl2ZSBmZWF0dXJpbmcgVHlwZVNjcmlwdF0oaHR0cHM6Ly9tZWRpdW0uY29tL0BzY2VsZXNraS9ob3ctdG8tYXV0b21hdGUtYXBpLWNvZGUtZ2VuZXJhdGlvbi1vcGVuYXBpLXN3YWdnZXItYW5kLWJvb3N0LXByb2R1Y3Rpdml0eS0xMTc2YTAwNTZkOGEpIGJ5IFtTYW5qaW4gQ2VsZXNraV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BzY2VsZXNraSkKLSAyMDIwLTA5LTI1IC0gW0dlbmVyYXRlIE9wZW5BUEkgQW5ndWxhciBDbGllbnRdKGh0dHBzOi8vbWVkaXVtLmNvbS9AcGd1c28vZ2VuZXJhdGUtb3BlbmFwaS1hbmd1bGFyLWNsaWVudC04YzkyODhlOGJiZDQpIGJ5IFtQYXRyaWNdKGh0dHBzOi8vbWVkaXVtLmNvbS9AcGd1c28pCi0gMjAyMC0xMC0yNCAtIFtXb3JraW5nIHdpdGggTWljcm9zb2Z0IElkZW50aXR5IC0gUmVhY3QgTmF0aXZlIENsaWVudF0oaHR0cHM6Ly93d3cuam9zZXBoZ3VhZGFnbm8ubmV0LzIwMjAvMTAvMjQvd29ya2luZy13aXRoLW1pY3Jvc29mdC1pZGVudGl0eS1yZWFjdC1uYXRpdmUtY2xpZW50KSBieSBbSm9zZXBoIEd1YWRhZ25vXShodHRwczovL3d3dy5qb3NlcGhndWFkYWduby5uZXQvKQotIDIwMjAtMTAtMzEgLSBbW0IyXSBPcGVuQVBJIFNwZWNpZmljYXRpb27snLzroZwg7YOA7J6FLeyEuOydtO2UhO2VmOqyjCBBUEkg6rCc67Cc7ZWY6riwOiDtnazrp53tjrggVlMg7KCI66ed7Y64XShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUo0SkhMRVNBaUZrKSBieSDstZztg5zqsbQgYXQgW0ZFQ29uZiAyMDIwXShodHRwczovLzIwMjAuZmVjb25mLmtyLykKLSAyMDIwLTExLTA1IC0gW0F1dG9tYXRlZCBSRVNULUFwaSBDb2RlIEdlbmVyYXRpb246IFdpZSBJVC1TeXN0ZW1lIG1pdGVpbmFuZGVyIHNwcmVjaGVuXShodHRwczovL3d3dy5tYXNzaXZlYXJ0LmNvbS9ibG9nL2F1dG9tYXRlZC1yZXN0LWFwaS1jb2RlLWdlbmVyYXRpb24td2llLWl0LXN5c3RlbWUtbWl0ZWluYW5kZXItc3ByZWNoZW4pIGJ5IFN0ZWZhbiBSb3R0ZW5zdGVpbmVyIGF0IFtNQVNTSVZFIEFSVCBCbG9nXShodHRwczovL3d3dy5tYXNzaXZlYXJ0LmNvbS9ibG9nKQotIDIwMjAtMTItMDEgLSBbT3BlbkFQSSBHZW5lcmF0b3LjgadHb+OBrkFQSeOCteODvOODkOODvC/jgq/jg6njgqTjgqLjg7Pjg4jjgrPjg7zjg4njgpLoh6rli5XnlJ/miJDjgZnjgotdKGh0dHBzOi8vcWlpdGEuY29tL3Nha2ktZW5naW5lZXJpbmcvaXRlbXMvYjIwZDhiNjA3NGM0ZGE5NjY0YTUpIGJ5IFtAc2FraS1lbmdpbmVlcmluZ10oaHR0cHM6Ly9xaWl0YS5jb20vc2FraS1lbmdpbmVlcmluZykKLSAyMDIwLTEyLTA0IC0gW1NjYWxpbmcgdGhlIFRlc3QgQ292ZXJhZ2Ugb2YgT3BlbkFQSSBHZW5lcmF0b3IgZm9yIDMwKyBQcm9ncmFtbWluZyBMYW5ndWFnZXNdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9N0xrZTlkSFJxVDApIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL2dpdGh1Yi5jb20vd2luZzMyOCkgYXQgW09wZW4gU291cmNlIFN1bW1pdCBKYXBhbiArIEF1dG9tb3RpdmUgTGludXggU3VtbWl0IDIwMjBdKGh0dHBzOi8vZXZlbnRzLmxpbnV4Zm91bmRhdGlvbi5vcmcvYXJjaGl2ZS8yMDIwL29wZW4tc291cmNlLXN1bW1pdC1qYXBhbi8pIChbU2xpZGVzXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS93aW5nMzI4L3NjYWxpbmctdGhlLXRlc3QtY292ZXJhZ2Utb2Ytb3BlbmFwaS1nZW5lcmF0b3ItZm9yLTMwLXBsdXMtcHJvZ3JhbW1pbmctbGFuZ3VhZ2VzKSkKLSAyMDIwLTEyLTA5IC0gW+ODl+ODreOCuOOCp+OCr+ODiOOBq09wZW5BUEkgR2VuZXJhdG9y44Gn6Ieq5YuV55Sf5oiQ44GV44KM44Gf5Z6L5LuY44GNQVBJIENsaWVudOOCkuWwjuWFpeOBl+OBn+ipsV0oaHR0cHM6Ly9xaWl0YS5jb20veW9zaGlmdWppVC9pdGVtcy85MDVjMTg3MDBlZGUyM2Y0MDg0MCkgYnkgW0B5b3NoaWZ1amlUXShodHRwczovL2dpdGh1Yi5jb20veW9zaGlmdWppVCkKLSAyMDIwLTEyLTE1IC0gW05leHQuanMgKyBOZXN0SlMgKyBHcmFwaFFM44Gn5aSJ5YyW44Gr6L+95b6T44GZ44KL44OV44Ot44Oz44OI44Ko44Oz44OJ44G4IOOAnCDjgrfjg6fjg4Pjg5Tjg7PjgrDjgq/jg7zjg53jg7Pjga7kuovkvovntLnku4tdKGh0dHBzOi8vdGVjaGJsb2cueWFob28uY28uanAvZW50cnkvMjAyMDEyMTUzMDA1Mjk1Mi8pIGJ5IFvlsI/lgIkg6Zm4XShodHRwczovL2dpdGh1Yi5jb20vb2d1Z3U5KSBhdCBbWWFob28hIEpBUEFOIFRlY2ggQmxvZ10oaHR0cHM6Ly90ZWNoYmxvZy55YWhvby5jby5qcC8pCi0gMjAyMS0wMS0wOCAtIFtIZWxsbywgTmV3IEFQSSDigJMgUGFydCAxXShodHRwczovL3d3dy5uZ2lueC5jb20vYmxvZy9oZWxsby1uZXctYXBpLXBhcnQtMS8pIGJ5IFtKZXJlbXkgU2NodWxtYW5dKGh0dHBzOi8vd3d3Lm5naW54LmNvbS9wZW9wbGUvamVyZW15LXNjaHVsbWFuLykgYXQgW01ham9yIExlYWd1ZSBCYXNlYmFsbF0oaHR0cHM6Ly93d3cubWxiLmNvbSkKLSAyMDIxLTAxLTE4IC0gW+OAjOOCouODl+ODqumWi+eZuuOBguOCi+OBguOCi+OAjeOCkueWkeOBhuOBk+OBqOOBi+OCieWni+OBvuOBo+OBn+OAgUFQSSBDbGllbnTjgrPjg7zjg4njga7oh6rli5XnlJ/miJDjgJDjg4fjg5bjgrnjg4gyMDIw44CRXShodHRwczovL2NvZGV6aW5lLmpwL2FydGljbGUvZGV0YWlsLzEzNDA2P3A9MikgYnkgW0NvZGVaaW5l57eo6ZuG6YOoXShodHRwczovL2NvZGV6aW5lLmpwL2F1dGhvci8xKQotIDIwMjEtMDItMDUgLSBbUkVTVC1BUEktUm91bmR0cmlwIHdpdGggU3ByaW5nRG9jIGFuZCBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9ibG9nLnZpYWRlZS5kZS9lbi9yZXN0LWFwaS1yb3VuZHRyaXApIGJ5IFtCZW5qYW1pbiBLbGF0dF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9iZW5rbGF0dCkgYXQgW3ZpYWRlZV0oaHR0cHM6Ly93d3cudmlhZGVlLmRlL2VuLykKLSAyMDIxLTAyLTE3IC0gW1JFU1QtQVBJLVJvdW5kdHJpcCB3aXRoIFNwcmluZ0RvYyBhbmQgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vbWVkaXVtLmNvbS9uZXJkLWZvci10ZWNoL3Jlc3QtYXBpLXJvdW5kdHJpcC13aXRoLXNwcmluZ2RvYy1hbmQtb3BlbmFwaS1nZW5lcmF0b3ItMzBiZDI3Y2NmNjk4KSBieSBbY2xvdWQgQHZpYWRlZV0oaHR0cHM6Ly9jbG91ZC12aWFkZWUubWVkaXVtLmNvbS8pCi0gMjAyMS0wMy0wOCAtIFtPcGVuQVBJIEdlbmVyYXRvciDlt6XlhbfnmoTourrlnZHlsJ3or5VdKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC91MDEzMDE5NzAxL2FydGljbGUvZGV0YWlscy8xMTQ1MzE5NzUpIGJ5IFvni6zlrrbpm6jlpKldKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC91MDEzMDE5NzAxKSBhdCBbQ1NETuWumOaWueWNmuWuol0oaHR0cHM6Ly9ibG9nLmNzZG4ubmV0LykKLSAyMDIxLTAzLTE2IC0gW+WmguS9leWfuuS6jiBTd2FnZ2VyIOS9v+eUqCBPcGVuQVBJIEdlbmVyYXRvciDnlJ/miJAgSk1ldGVyIOiEmuacrO+8n10oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIvYXJ0aWNsZS8xODAyNzA0KSBieSBb6auY5qW8WmVlXShodHRwczovL2Nsb3VkLnRlbmNlbnQuY29tL2RldmVsb3Blci91c2VyLzU4MzYyNTUpIGF0IFvohb7orq/kupHkuJPmoI9dKGh0dHBzOi8vY2xvdWQudGVuY2VudC5jb20vZGV2ZWxvcGVyL2NvbHVtbikKLSAyMDIxLTAzLTI0IC0gW29wZW5hcGktZ2VuZXJhdG9yLWNsaSDjgavjgojjgosgVHlwZVNjcmlwdCDlnovlrprnvqldKGh0dHBzOi8vemVubi5kZXYvdGFrZXBlcGUvYXJ0aWNsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLXRzKSBieSBbVGFrZWZ1bWkgWW9zaGlpXShodHRwczovL3plbm4uZGV2L3Rha2VwZXBlKQotIDIwMjEtMDMtMjggLSBbVHJ5aW5nIG91dCBOZXN0SlMgcGFydCA0OiBHZW5lcmF0ZSBUeXBlc2NyaXB0IGNsaWVudHMgZnJvbSBPcGVuQVBJIGRvY3VtZW50c10oaHR0cHM6Ly9kZXYudG8vYXJuYXVkY29ydGlzc2UvdHJ5aW5nLW91dC1uZXN0anMtcGFydC00LWdlbmVyYXRlLXR5cGVzY3JpcHQtY2xpZW50cy1mcm9tLW9wZW5hcGktZG9jdW1lbnRzLTI4bWspIGJ5IFtBcm5hdWQgQ29ydGlzc2VdKGh0dHBzOi8vZGV2LnRvL2FybmF1ZGNvcnRpc3NlKQotIDIwMjEtMDMtMzEgLSBbT3BlbiBBUEkgU2VydmVyIEltcGxlbWVudGF0aW9uIFVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vamF2YS1vcGVuYXBpLWdlbmVyYXRvci1zZXJ2ZXIpIGF0IFtCYWVsZHVuZ10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tLykKLSAyMDIxLTAzLTMxIC0gW+S9v+eUqE9wZW5BUEkgR2VuZXJhdG9y5a+m54++T3BlbiBBUEkgU2VydmVyXShodHRwczovL3d3dy4xanUub3JnL2FydGljbGUvamF2YS1vcGVuYXBpLWdlbmVyYXRvci1zZXJ2ZXIpIGF0IFvlhITogZrntrJdKGh0dHBzOi8vd3d3LjFqdS5vcmcvKQotIDIwMjEtMDQtMTkgLSBbSW50cm9kdWNpbmcgVHdpbGlv4oCZcyBPcGVuQVBJIFNwZWNpZmljYXRpb24gQmV0YV0oaHR0cHM6Ly93d3cudHdpbGlvLmNvbS9ibG9nL2ludHJvZHVjaW5nLXR3aWxpby1vcGVuLWFwaS1zcGVjaWZpY2F0aW9uLWJldGEpIGJ5IFtHQVJFVEggUEFVTCBKT05FU10oaHR0cHM6Ly93d3cudHdpbGlvLmNvbS9ibG9nL2F1dGhvci9ncGopIGF0IFtUd2lsaW8gQmxvZ10oaHR0cHM6Ly93d3cudHdpbGlvLmNvbS9ibG9nKQotIDIwMjEtMDQtMjIgLSBbTGV2ZXJhZ2luZyBPcGVuQXBpIHN0cmVuZ3RocyBpbiBhIE1pY3JvLVNlcnZpY2UgZW52aXJvbm1lbnRdKGh0dHBzOi8vbWVkaXVtLmNvbS91bmlidWRkeS10ZWNobm9sb2d5LWJsb2cvbGV2ZXJhZ2luZy1vcGVuYXBpLXN0cmVuZ3Rocy1pbi1hLW1pY3JvLXNlcnZpY2UtZW52aXJvbm1lbnQtM2Q3ZjllN2MyNmZmKSBieSBOaWNvbGFzIEplbGxhYiBhdCBbVW5pYnVkZHkgVGVjaG5vbG9neSBCbG9nXShodHRwczovL21lZGl1bS5jb20vdW5pYnVkZHktdGVjaG5vbG9neS1ibG9nKQotIDIwMjEtMDQtMjcgLSBbRnJvbSB6ZXJvIHRvIHB1Ymxpc2hpbmcgUG93ZXJTaGVsbCBBUEkgY2xpZW50cyBpbiBQb3dlclNoZWxsIEdhbGxlcnkgd2l0aGluIG1pbnV0ZXNdKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3dpbmczMjgvZnJvbS16ZXJvLXRvLXB1Ymxpc2hpbmctcG93ZXJzaGVsbC1hcGktY2xpZW50cy1pbi1wb3dlcnNoZWxsLWdhbGxlcnktd2l0aGluLW1pbnV0ZXMpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL2dpdGh1Yi5jb20vd2luZzMyOCkgYXQgW1Bvd2VyU2hlbGwgKyBEZXZPcHMgR2xvYmFsIFN1bW1pdCAyMDIxXShodHRwczovL2V2ZW50cy5kZXZvcHNjb2xsZWN0aXZlLm9yZy9ldmVudC9wb3dlcnNoZWxsLWRldm9wcy1nbG9iYWwtc3VtbWl0LTIwMjEvKQotIDIwMjEtMDUtMzEgLSBbRmx1dHRlcuOBp09wZW4gQXBpIEdlbmVyYXRvcihTd2FnZ2VyKeOCkuS9v+OBhl0oaHR0cHM6Ly9hYWtpcmEuYXBwL2Jsb2cvMjAyMS8wNS9mbHV0dGVyLW9wZW4tYXBpLykgYnkgW0FBa2lyYV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9fYV9ha2lyYSkKLSAyMDIxLTA2LTIyIC0gW1Jlc3QgQVBJIERvY3VtZW50YXRpb24gYW5kIENsaWVudCBHZW5lcmF0aW9uIFdpdGggT3BlbkFQSV0oaHR0cHM6Ly9kem9uZS5jb20vYXJ0aWNsZXMvcmVzdC1hcGktZG9jdW1lbnRhdGlvbi1hbmQtY2xpZW50LWdlbmVyYXRpb24td2l0aCkgYnkgW1ByYXNhbnRoIEd1bGxhcGFsbGldKGh0dHBzOi8vZHpvbmUuY29tL3VzZXJzLzEwMTE3OTcvcHJhc2FudGhuYXRoLmdAZ21haWwuY29tLmh0bWwpCi0gMjAyMS0wNy0xNiAtIFvpioDooYzkuovmpa3jga7jgrXjg7zjg5Djg7zjgrXjgqTjg4nplovnmbrjgavjgaTjgYTjgaYgLyBMSU5FIOS6rOmDvemWi+eZuuWupCDjgqjjg7Pjgrjjg4vjgqLmjqHnlKjoqqzmmI7kvJpdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9WXJyS1FIeExQcFEpIGJ5IOmHjueUsOiqoOS6uiwgUm9iZXJ0IE1pdGNoZWxsCi0gMjAyMS0wNy0xOSAtIFtPcGVuQVBJIGNvZGUgZ2VuZXJhdGlvbiB3aXRoIGtvdGxpbl0oaHR0cHM6Ly9zeWxoYXJlLmdpdGh1Yi5pby8yMDIxLzA3LzE5L09wZW5hcGktc3dhZ2dlci1jb2RlZ2VuLXdpdGgta290bGluLmh0bWwpIGJ5IFtzeWxoYXJlXShodHRwczovL2dpdGh1Yi5jb20vc3lsaGFyZSkKLSAyMDIxLTA3LTI5IC0gW0hvdyBUbyBSZXdyaXRlIGEgSHVnZSBDb2RlYmFzZV0oaHR0cHM6Ly9kem9uZS5jb20vYXJ0aWNsZXMvaG93LXRvLXJld3JpdGUtYS1odWdlLWNvZGUtYmFzZSkgYnkgW0N1cnRpcyBQb2VdKGh0dHBzOi8vZHpvbmUuY29tL3VzZXJzLzQ1NjU0NDYvcHVibGl1c292aWRpdXMuaHRtbCkKLSAyMDIxLTA4LTIxIC0gW0dlbmVyYXRpbmcgQ2xpZW50IEFQSXMgdXNpbmcgU3dhZ2dlciBQYXJ0IDFdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZmxvd3NxdWFkL2dlbmVyYXRpbmctY2xpZW50LWFwaXMtdXNpbmctc3dhZ2dlci1wYXJ0LTEtMmQ0NmYxM2Y1ZTkyKSBieSBbRmxvd1NxdWFkLmlvXShodHRwczovL21lZGl1bS5jb20vQGZsb3dzcXVhZCkKLSAyMDIxLTA5LTExIC0gW0ludm9raW5nIEFXUyBQYXJhbGxlbENsdXN0ZXIgQVBJXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcGFyYWxsZWxjbHVzdGVyL2xhdGVzdC91Zy9hcGktcmVmZXJlbmNlLXYzLmh0bWwpIGF0IFtBV1MgUGFyYWxsZWxDbHVzdGVyIEFQSSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcGFyYWxsZWxjbHVzdGVyL2xhdGVzdC91Zy9hcGktcmVmZXJlbmNlLXYzLmh0bWwpCi0gMjAyMS0wOS0yMCAtIFtPcGVuQVBJIEdlbmVyYXRvciAtIFRoZSBCYWJlbCBGaXNoIG9mIHRoZSBBUEkgV29ybGRdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9czJ6TXR3ZDVrbGcpIGJ5IFtDbGlmZmFubyBTdWJhZ2lvIChQcmluY2lwYWwgRW5naW5lZXIgYXQgU2hpbmUgU29sdXRpb25zKV0oaHR0cHM6Ly9naXRodWIuY29tL2NsaWZmYW5vKSBhdCBbQXBpZGF5cyBMSVZFIEF1c3RyYWxpYSAyMDIxXShodHRwczovL3d3dy5hcGlkYXlzLmdsb2JhbC9hdXN0cmFsaWEyMDIxLykKLSAyMDIxLTEwLTAyIC0gW0hvdyB0byBXcml0ZSBGZXdlciBMaW5lcyBvZiBDb2RlIHdpdGggdGhlIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2hhY2tlcm5vb24uY29tL2hvdy10by13cml0ZS1mZXdlci1saW5lcy1vZi1jb2RlLXdpdGgtdGhlLW9wZW5hcGktZ2VuZXJhdG9yKSBieSBbTWlraGFpbCBBbGZhXShodHRwczovL2hhY2tlcm5vb24uY29tL3UvYWxwaGFtaWtsZSkKLSAyMDIxLTEwLTEyIC0gW09wZW5BUEkgR2VuZXJhdG9yIDogNDAwMCDDqXRvaWxlcyBzdXIgR2l0SHViIGV0IGRlcyBzcGFnaGV0dGlzXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTloRXNOQlNxVEZrKSBieSBbSsOpcsOpbWllIEJyZXNzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9qbWluaSkgYXQgW0Rldm94eCBGUiAyMDIxXShodHRwczovL2NmcC5kZXZveHguZnIvMjAyMS9zcGVha2VyL2plcmVtaWVfYnJlc3NvbikKLSAyMDIxLTEwLTE3IC0gW0dlbmVyYXRlIGEgVHlwZVNjcmlwdCBIVFRQIENsaWVudCBGcm9tIEFuIE9wZW5BUEkgU3BlYyBJbiBEb3RORVQgNV0oaHR0cHM6Ly9yaWNoYXJkd2lsbGlzLmluZm8vYmxvZy9nZW5lcmF0ZS1hLXR5cGUtc2NyaXB0LWh0dHAtY2xpZW50LWZyb20tYW4tb3Blbi1hcGktc3BlYy1pbi1kb3QtbmV0LTUpIGJ5IFtSaWNoYXJkIFdpbGxpc10oaHR0cHM6Ly9naXRodWIuY29tL2JhZHN5bnRheCkKLSAyMDIxLTExLTA2IC0gW+OCueOCv+ODvOODiOOCouODg+ODl+OBrumWi+eZuuOBp+aEj+itmOOBl+OBn+OBk+OBqF0oaHR0cHM6Ly96ZW5uLmRldi93b29fbm9vL2FydGljbGVzLzVjYjA5ZjhlMjg5OWFlNzgyYWQxKSBieSBbd29vLW5vb10oaHR0cHM6Ly96ZW5uLmRldi93b29fbm9vKQotIDIwMjEtMTEtMDkgLSBbRWZmZWN0aXZlIFNvZnR3YXJlIERldmVsb3BtZW50IHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2FwZXhsYWJzLmFpL3Bvc3QvZWZmZWN0aXZlLXNvZnR3YXJlLWRldmVsb3BtZW50LXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yKSBieSBBamlsIE9vbW1lCi0gMjAyMS0xMi0wNyAtIFtBbiBJbnRyb2R1Y3Rpb24gdG8gT3BlbkFQSV0oaHR0cHM6Ly9iZXR0ZXJwcm9ncmFtbWluZy5wdWIvNC11c2UtY2FzZXMtb2Ytb3BlbmFwaS13aGljaC1hcmUtZ29vZC10by1rbm93LTFhMDQxZjRhZDcxZSkgYnkgW05hJ2FtYW4gSGlyc2NoZmVsZF0oaHR0cHM6Ly9uYWFtYW5oaXJzY2hmZWxkLm1lZGl1bS5jb20vKQotIDIwMjItMDEtMDIgLSBbVG93YXJkcyBhIHNlY3VyZSBBUEkgY2xpZW50IGdlbmVyYXRvciBmb3IgSW9UIGRldmljZXNdKGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yMjAxLjAwMjcwKSBieSBBbmRlcnMgQWFlbiBTcHJpbmdib3JnLCBNYXJ0aW4gS2FsZGFobCBBbmRlcnNlbiwgS2FhcmUgSG9sbGFuZCBIYXR0ZWwsIE1pY2hlbGUgQWxiYW5vCi0gMjAyMi0wMi0wMiAtIFtVc2UgT3BlbkFwaSBnZW5lcmF0b3IgdG8gc2hhcmUgeW91ciBtb2RlbHMgYmV0d2VlbiBGbHV0dGVyIGFuZCB5b3VyIGJhY2tlbmRdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9a1BXN2NjdTlZdmspIGJ5IFtHdWlsbGF1bWUgQmVybm9zXShodHRwczovL2ZlYjIwMjIuZmx1dHRlcnZpa2luZ3MuY29tL3NwZWFrZXJzL2d1aWxsYXVtZV9iZXJub3MpIGF0IFtGbHV0dGVyIFZpa2luZ3MgQ29uZmVyZW5jZSAyMDIyIChIeWJyaWQpXShodHRwczovL2ZlYjIwMjIuZmx1dHRlcnZpa2luZ3MuY29tLykKLSAyMDIyLTAzLTE1IC0gW09wZW5BUEkgU3BlY+OBp+ODj+OCpOODleODs+WMuuWIh+OCiuOBrkVudW3lgKTjgpJPcGVuQVBJIEdlbmVyYXRvcuOBp+WHuuWKm+OBmeOCi+OBqOOAgeODj+OCpOODleODs+WMuuWIh+OCiuOBruOBvuOBvuWHuuWKm+OBleOCjOOCi10oaHR0cHM6Ly9xaWl0YS5jb20veXVqaTM4a3dtdC9pdGVtcy84MjRkNzRkNDg4OTA1NWFiMzdkOCkgYnkgW3l1amkzOGt3bXRdKGh0dHBzOi8vcWlpdGEuY29tL3l1amkzOGt3bXQpCi0gMjAyMi0wNC0wMSAtIFtPcGVuQVBJIEdlbmVyYXRvcuOBruOCs+ODvOODieeUn+aIkOOBqFNwcmluZyBGcmFtZXdvcmvjga7jgqvjgrnjgr/jg6Djg4fjg7zjgr/jg5DjgqTjg7Pjg4fjgqPjg7PjgrDjgpLlhbHlrZjjgZXjgZvjgotdKGh0dHBzOi8vdGVjaGJsb2cuem96by5jb20vZW50cnkvY29leGlzdGVuY2Utb2Ytb3BlbmFwaS1hbmQtc3ByaW5nKSBpbiBbWk9aTyBUZWNoIEJsb2ddKGh0dHBzOi8vdGVjaGJsb2cuem96by5jb20vKQotIDIwMjItMDQtMDYgLSBbRWZmZWN0aXZlIFNvZnR3YXJlIERldmVsb3BtZW50IHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2FwZXhsYWJzLmFpL3Bvc3Qvb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IEFqaWwgT29tbWVuIChTZW5pb3IgRmx1dHRlciBEZXZlbG9wZXIpCi0gMjAyMi0wNS0xMyAtIFtBIFBhdGggRnJvbSBhbiBBUEkgVG8gQ2xpZW50IExpYnJhcmllc10oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1YQzhvVm5fZWZUdykgYnkgW0ZpbGlwIFNybmVjXShodHRwczovL3d3dy5kZXZveHguY28udWsvdGFsay8/aWQ9MTEyMTEpIGF0IEluZm9iaXAKLSAyMDIyLTA2LTAxIC0gW0FQSSBGaXJzdCwgdXNpbmcgT3BlbkFQSSBhbmQgU3ByaW5nIEJvb3RdKGh0dHBzOi8vbWVkaXVtLmNvbS94Z2Vla3MvYXBpLWZpcnN0LXVzaW5nLW9wZW5hcGktYW5kLXNwcmluZy1ib290LTI2MDJjMDRiYjBkMykgYnkgW01pY2FlbCBFc3Ryw6F6dWxhcyBWaWFubmFdKGh0dHBzOi8vZXN0cmF6dWxhcy5tZWRpdW0uY29tLykKLSAyMDIyLTA2LTEwIC0gW0F1dG9nZW5lcmF0aW5nIENsaWVudHMgd2l0aCBGYXN0QVBJIGFuZCBHaXRodWIgQWN0aW9uc10oaHR0cHM6Ly93d3cucHJvcGVsYXV0aC5jb20vcG9zdC9hdXRvZ2VuZXJhdGluZy1jbGllbnRzLXdpdGgtZmFzdGFwaS1hbmQtZ2l0aHViLWFjdGlvbnMpIGJ5IFtBbmRyZXcgSXNyYWVsXShodHRwczovL3d3dy5wcm9wZWxhdXRoLmNvbS9hdXRob3IvYW5kcmV3KQotIDIwMjItMDYtMTIgLSBbTXVzdGFjaGUgdGVtcGxhdGVzIHdpdGggT3BlbkFQSSBzcGVjc10oaHR0cHM6Ly9tZWRpdW0uY29tL2dlZWtjdWx0dXJlL211c3RhY2hlLXRlbXBsYXRlcy13aXRoLW9wZW5hcGktc3BlY3MtZjI0NzExYzY3ZGVjKSBieSBbQmVwcGUgQ2F0YW5lc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9nY2F0YW5lc2UpCi0gMjAyMi0wNy0wMSAtIFtHZW5lcmF0ZSBBUEkgY29udHJhY3QgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgTWF2ZW4gcGx1Z2luXShodHRwczovL2h1b25nZGFuamF2YS5jb20vZ2VuZXJhdGUtYXBpLWNvbnRyYWN0LXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbi5odG1sKSBieSBbS2hhbmggTmd1eWVuXShodHRwczovL2h1b25nZGFuamF2YS5jb20vKQotIDIwMjItMDctMjIgLSBb5L2/55SoT3BlbkFQSSBHZW5lcmF0b3IgTWF2ZW4gcGx1Z2lu5byA5Y+RYXBp5LyY5YWI55qEamF2YeWuouaIt+err+WSjOacjeWKoeerr+S7o+eggV0oaHR0cHM6Ly9ibG9nLnJvY2Nvc2hpLnRvcC8yMDIyL2phdmEvb3BlbmFwaS1nZW5lcmF0b3IlRTclOUElODQlRTQlQkQlQkYlRTclOTQlQTgvKSBieSBbTGluY2VzdF0oaHR0cHM6Ly9naXRodWIuY29tL0xpbmNlc3QpCi0gMjAyMi0wOC0wMSAtIFtUdXRvcmlhbDogRXRzeSBPcGVuIEFQSSB2MyAocnVieSldKGh0dHBzOi8vYmxvZy50am95YWwuZGV2L2V0c3ktb3Blbi1hcGktdjMvKSBieSBbVGhpZXJyeSBKb3lhbF0oaHR0cHM6Ly9naXRodWIuY29tL3Rqb3lhbCkKLSAyMDIyLTA5LTAzIC0gW09wZW5BUEkgR2VuZXJhdG9yIEZvciBHbyBXZWIgRGV2ZWxvcG1lbnRdKGh0dHBzOi8vYmxvZy5rZXZpbmh1Lm1lLzIwMjIvMDkvMDMvMDMtb3BlbmFwaS1nZW5lcmF0b3IvKSBieSBbS2V2aW4gSHVdKGh0dHBzOi8vdHdpdHRlci5jb20vT2xkZ3VuaXgpCi0gMjAyMi0xMC0wMSAtIFtPcGVuQVBJIEdlbmVyYXRvcuOCkuOCq+OCueOCv+ODnuOCpOOCuuOBl+OBn+OCs+ODvOODieOCkueUn+aIkOOBmeOCi++8iFN3YWdnZXIgQ29kZWdlbuOBqOOBu+OBvOWQjOOBmO+8iV0oaHR0cHM6Ly9uYWluYWlzdGFyLmhhdGVuYWJsb2cuY29tL2VudHJ5LzIwMjIvMTAvMDMvMTIwMDAwKSBieSBb44GN44KK5Li4XShodHRwczovL3R3aXR0ZXIuY29tL25haW5haXN0YXIpCi0gMjAyMi0xMC0yMSAtIFtLb3RsaW7vvIhTcHJpbmcgQm9vdO+8ieOBriBBUEkg44KSIE9wZW5BUEkgR2VuZXJhdG9yIOOBp+iHquWLleeUn+aIkF0oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20vYXJ0aWNsZXMvMjAyMjEwMjEta290bGluLXNwcmluZy1vcGVuYXBpLWdlbmVyYXRvcikgYnkgW21za3NnbV0oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20pCi0gMjAyMi0xMC0yNiAtIFtRdWFya3VzIEluc2lnaHRzICMxMDY6IFF1YXJraXZlcnNlIEV4dGVuc2lvbiBTcG90bGlnaHQ6IE9wZW5BcGkgR2VuZXJhdG9yXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PV9zX2lmNjl0MmlRKSBieSBbUXVhcmt1c2lvXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9jL1F1YXJrdXNpbykKLSAyMDIyLTExLTI4IC0gW1RoZSBSRVNUIEFQSSBpbXBsZW1lbnRhdGlvbiBmbG93XShodHRwczovL3Rtc3ZyLmNvbS9vcGVuYXBpLWNvZGUtZ2VuZXJhdGlvbi1mb3ItcmVzdC1hcGlzLykgYnkgW0ltcmUgVMO2bcO2c3bDoXJpXShodHRwczovL3Rtc3ZyLmNvbS9hdXRob3IvaW1yZS8pCi0gMjAyMi0xMi0xMyAtIFtBUEktRmlyc3Qgd2l0aCBTcHJpbmcgV2ViRmx1eCBhbmQgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vYm9vdHRlY2hub2xvZ2llcy1jaS5tZWRpdW0uY29tL2FwaS1maXJzdC13aXRoLXNwcmluZy13ZWJmbHV4LWFuZC1vcGVuYXBpLWdlbmVyYXRvci0zOGI3ODA0YzRlZDQpIGJ5IFtFcmljIEFuaWNldF0oaHR0cHM6Ly9ib290dGVjaG5vbG9naWVzLWNpLm1lZGl1bS5jb20vKQotIDIwMjMtMDEtMDYgLSBbTWFqb3IgSW1wcm92ZW1lbnRzIHdpdGggSGVsaWRvbiBhbmQgT3BlbkFQSV0oaHR0cHM6Ly9tZWRpdW0uY29tL2hlbGlkb24vbWFqb3ItaW1wcm92ZW1lbnRzLXdpdGgtaGVsaWRvbi1hbmQtb3BlbmFwaS1mNzZhMDk1MTUwOGUpIGJ5IFtUaW0gUXVpbm5dKGh0dHBzOi8vbWVkaXVtLmNvbS9AdHF1aW5ubzYwMCkKLSAyMDIzLTAyLTAyIC0gW1JlcGxhY2luZyBQb3N0bWFuIHdpdGggdGhlIEpldGJyYWlucyBIVFRQIENsaWVudF0oaHR0cHM6Ly9sZW5ncmFuZC5mci9yZXBsYWNpbmctcG9zdG1hbi1pbi1zZWNvbmRzLXdpdGgtdGhlLWpldGJyYWlucy1odHRwLWNsaWVudC8pIGJ5IFtqdWxpZW4gTGVuZ3JhbmQtTGFtYmVydF0oaHR0cHM6Ly9naXRodWIuY29tL2psZW5ncmFuZCkKLSAyMDIzLTAzLTE1IC0gW09wZW5BUEkgR2VuZXJhdG9y44Gr6YGp44GX44GfT3BlbkFQSeOBruabuOOBjeaWuV0oaHR0cHM6Ly90ZWNoYmxvZy56b3pvLmNvbS9lbnRyeS9ob3ctdG8td3JpdGUtb3BlbmFwaS1mb3Itb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IFtaT1pPIFRlY2ggQmxvZ10oaHR0cHM6Ly90ZWNoYmxvZy56b3pvLmNvbS8pCi0gMjAyMy0wMy0xOSAtIFtFWE9HRU06IEV4dGVuZGluZyBPcGVuQVBJIEdlbmVyYXRvciBmb3IgTW9uaXRvcmluZyBvZiBSRVNUZnVsIEFQSXNdKGh0dHBzOi8vbGluay5zcHJpbmdlci5jb20vY2hhcHRlci8xMC4xMDA3Lzk3OC0zLTAzMS0yNjUwNy01XzEwKSBieSBEYW5pZWwgRnJpaXMgSG9sdGVibywgSmFubmlrIEx1Y2FzIFNvbW1lciwgTWFnbnVzIE3DuGxnYWFyZCBMdW5kLCBBbGVzc2FuZHJvIFRpYm8sIEp1bmlvciBEb25nbyAmIE1pY2hlbGUgQWxiYW5vIGF0ICJJQ1NPQyAyMDIyOiBTZXJ2aWNlLU9yaWVudGVkIENvbXB1dGluZyDigJMgSUNTT0MgMjAyMiBXb3Jrc2hvcHMiCi0gMjAyMy0wMy0yOCAtIFtBUEktRmlyc3QgRGVzaWduIHdpdGggT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9wdWxzZS9hcGktZmlyc3QtZGVzaWduLW9wZW5hcGktZ2VuZXJhdG9yLWpvbmF0aGFuLW1hbmVyYS8pIGJ5IFtKb25hdGhhbiBNYW5lcmFdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9tYW5lcmFqb25hLykKLSAyMDIzLTAzLTI4IC0gW+ODj+ODs+OCuuOCquODs+OBp+WtpuOBtuOCteODvOODkOODvOOCteOCpOODiSBLb3RsaW7vvIhTcHJpbmcgQm9vdCZBcnJvdyZPcGVuQVBJIEdlbmVyYXRvcu+8iXYxLjAuMV0oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20vYm9va3MvaW1wbGVtZW50aW5nLXNlcnZlci1zaWRlLWtvdGxpbi1kZXZlbG9wbWVudCkgYnkgW21za10oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20pCi0gMjAyMy0wNC0wMSAtIFtPcGVuQVBJIENsaWVudCBDb2RlIEdlbmVyYXRpb25dKGh0dHBzOi8vdGVzdGluZ2Jvc3MuY29tL2Jsb2cvb3BlbmFwaS1jbGllbnQtZ2VuZXJhdGlvbi8pIGJ5IEt3byBEaW5nCi0gMjAyMy0wNC0yNyAtIFtDcmVhdGUgYW4gQW5ndWxhciBDbGllbnQgdXNpbmcgT3BlbkFQSSBTcGVjaWZpY2F0aW9uc10oQ3JlYXRlIGFuIEFuZ3VsYXIgQ2xpZW50IHVzaW5nIE9wZW5BUEkgU3BlY2lmaWNhdGlvbnMpIGJ5IFtQYXRyaWNdKGh0dHBzOi8vcGd1c28ubWVkaXVtLmNvbS8pCi0gMjAyMy0wNS0xNiAtIFtBZHllbiBmb3IgSmF2YSBkZXZlbG9wZXJzXShodHRwczovL3d3dy5hZHllbi5jb20vYmxvZy9hZHllbi1qYXZhLWxpYnJhcnkpIGJ5IFtCZXBwZSBDYXRhbmVzZSwgRGV2ZWxvcGVyIEFkdm9jYXRlLCBBZHllbl0oaHR0cHM6Ly9naXRodWIuY29tL2djYXRhbmVzZSkKLSAyMDIzLTA1LTE4IC0gW+WmguS9leWfuuS6jiBTd2FnZ2VyIOS9v+eUqCBPcGVuQVBJIEdlbmVyYXRvciDnlJ/miJAgSk1ldGVyIOiEmuacrO+8n10oaHR0cHM6Ly9ibG9nLjUxY3RvLmNvbS91XzE1MTgxNTcyLzYyOTQ5NzQpIGJ5IFvpq5jmpbzvvIhaZWUpXShodHRwczovL2Jsb2cuNTFjdG8uY29tL3VfMTUxODE1NzIpCi0gMjAyMy0wNi0yOCAtIFtHZW5lcmF0ZSBBUEkgY29udHJhY3QgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgTWF2ZW4gcGx1Z2luXShodHRwczovL2h1b25nZGFuamF2YS5jb20vZ2VuZXJhdGUtYXBpLWNvbnRyYWN0LXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbi5odG1sKSBieSBbS2hhbmggTmd1eWVuXShodHRwczovL2h1b25nZGFuamF2YS5jb20vKQotIDIwMjMtMDYtMzAgLSBbR2VuZXJhdGUgQ2xpZW50IFNES3Mgd2l0aCBPcGVuQXBpIEdlbmVyYXRvciBpbiBTcHJpbmdib290XShodHRwczovL21lZGl1bS5jb20vQHJhbWF2YXRodmluYXlhay9nZW5lcmF0ZS1jbGllbnQtc2Rrcy13aXRoLW9wZW5hcGktZ2VuZXJhdG9yLWluLXNwcmluZ2Jvb3QtZjlmMDEyZTczYzBiKSBieSBbVmluYXlhayBSYW1hdmF0aF0oaHR0cHM6Ly9tZWRpdW0uY29tL0ByYW1hdmF0aHZpbmF5YWspCi0gMjAyMy0xMi0xMCAtIFtVbml0eeOBp09wZW5BUEkgR2VuZXJhdG9y44KS5L2/44GGXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUNiTndLVlY1TFJNKSBieSBbU291cCBUb3JpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9Ac291cHRvcmk4NDE3KQotIDIwMjQtMDEtMjQgLSBbQ29tbWVudCBnw6luw6lyZXIgZGVzIHN0dWJzIHdpcmVtb2NrIGF2ZWMgb3BlbmFwaSBnZW5lcmF0b3JdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9MGpoT05mQnJjS3cpIGJ5IFtBbGV4aXMgQ291dnJldXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9hY291dnJldXIpCi0gMjAyNC0wMy0wNCAtIFtHZW5lcmF0aW5nIFR5cGVTY3JpcHQgVHlwZXMgd2l0aCBPcGVuQVBJIGZvciBSRVNUIEFQSSBDb25zdW1wdGlvbl0oaHR0cHM6Ly93d3cucHVsbHJlcXVlc3QuY29tL2Jsb2cvZ2VuZXJhdGluZy10eXBlc2NyaXB0LXR5cGVzLXdpdGgtb3BlbmFwaS1mb3ItcmVzdC1hcGktY29uc3VtcHRpb24vKSBieSBbUHVsbFJlcXVlc3RdKGh0dHBzOi8vd3d3LnB1bGxyZXF1ZXN0LmNvbS8pCi0gMjAyNC0wMy0wNyAtIFtGdWxseSB0eXBlZCBXZWIgQXBwcyB3aXRoIE9wZW5BUEkgKFBhcnQgMSldKGh0dHBzOi8vbWVkaXVtLmNvbS9AZ2ZveDE5ODQvZnVsbHktdHlwZWQtd2ViLWFwcHMtd2l0aC1vcGVuYXBpLXBhcnQtMS01OTVkNTU3NjY2NzApIGJ5IFtHdWlsbGF1bWUgUmVuYXJkXShodHRwczovL21lZGl1bS5jb20vQGdmb3gxOTg0KQotIDIwMjQtMDMtMDggLSBbTGFyYXZlbCBPcGVuQVBJ44Gr44KI44KLICLovpvjgY/jgarjgYQiIOOCueOCreODvOODnumnhuWLlemWi+eZul0oaHR0cHM6Ly9mb3J0ZWUuanAvcGhwZXJrYWlnaS0yMDI0L3Byb3Bvc2FsLzllMmU2YzM4LWQwNzgtNGVmYS05OWI0LTgzZWJmOTAzM2IzNCkgYnkgW0tlbnRhcm91VGFrZWRhXShodHRwczovL3R3aXR0ZXIuY29tL0tlbnRhcm91VGFrZWRhKQotIDIwMjQtMDQtMDQgLSBbV29ya2luZyB3aXRoIE9wZW5BUEkgdXNpbmcgUnVzdF0oaHR0cHM6Ly93d3cuc2h1dHRsZS5kZXYvYmxvZy8yMDI0LzA0LzA0L3VzaW5nLW9wZW5hcGktcnVzdCkgYnkgW0pvc2h1YSBNb10oaHR0cHM6Ly90d2l0dGVyLmNvbS9qb3NobW9fZGV2KQotIDIwMjQtMDQtMDggLSBbSW1wbGVtZW50IEFQSSBmaXJzdCBzdHJhdGVneSB3aXRoIE9wZW5BUEkgZ2VuZXJhdG9yIHBsdWdpbl0oaHR0cHM6Ly9tZWRpdW0uY29tL2phdmFyZXZpc2l0ZWQvaW1wbGVtZW50LWFwaS1maXJzdC1zdHJhdGVneS13aXRoLW9wZW5hcGktZ2VuZXJhdG9yLXBsdWdpbi1lNGJiZTdmMGQ3NzgpIGJ5IFtSdWkgWmhvdV0oaHR0cHM6Ly9tZWRpdW0uY29tL0B3aXJlbGVzc2VyKQotIDIwMjQtMDUtMDYgLSBbT3BlbkFQSSBHZW5lcmF0b3IgQ3VzdG9tIFRlbXBsYXRlc10oaHR0cHM6Ly93d3cuamF2YWNvZGVnZWVrcy5jb20vb3BlbmFwaS1nZW5lcmF0b3ItY3VzdG9tLXRlbXBsYXRlcy5odG1sKSBieSBbTWFyeSBaaGVuZ10oaHR0cHM6Ly93d3cuamF2YWNvZGVnZWVrcy5jb20vYXV0aG9yL21hcnktemhlbmcpCi0gMjAyNS0wMi0wOSAtIFtDdXN0b20gdmFsaWRhdGlvbiB3aXRoIE9wZW5BcGlHZW5lcmF0b3IgYW5kIFNwcmluZyBCb290IDNdKGh0dHBzOi8vbWVkaXVtLmNvbS9AanVndXJ0aGEuYWl0b3VmZWxsYS9jdXN0b20tdmFsaWRhdGlvbi13aXRoLW9wZW5hcGlnZW5lcmF0b3ItYW5kLXNwcmluZy1ib290LTMtMzRhNjU2ZTgxNWM4KSBieSBbSnVndXJ0aGEgQWl0b3VmZWxsYV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BqdWd1cnRoYS5haXRvdWZlbGxhKQotIDIwMjUtMDItMjAgLSBbT3B0aW1pemluZyBBUEkgSW50ZWdyYXRpb24gaW4gYSBMYXJnZSBSZWFjdCBBcHBsaWNhdGlvbiBVc2luZyBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj0tQjMzcFFuR1FVSSkgYnkgU3RlZmFubyBNYXJ6bwoKCiMjIFs2IC0gQWJvdXQgVXNdKCN0YWJsZS1vZi1jb250ZW50cykKCldoYXQncyB0aGUgZGVzaWduIHBoaWxvc29waHkgb3IgcHJpbmNpcGxlIGJlaGluZCBPcGVuQVBJIEdlbmVyYXRvcj8KCldlIGZvY3VzIG9uIGRldmVsb3BlciBleHBlcmllbmNlLiBUaGUgZ2VuZXJhdG9ycyBzaG91bGQgcHJvZHVjZSBjb2RlLCBjb25maWcsIGRvY3VtZW50YXRpb24sIGFuZCBtb3JlIHRoYXQgYXJlIGVhc2lseSB1bmRlcnN0YW5kYWJsZSBhbmQgY29uc3VtYWJsZSBieSB1c2Vycy4gV2UgZm9jdXNlZCBvbiBzaW1wbGUgdXNlIGNhc2VzIHRvIHN0YXJ0IHdpdGggKGJvdHRvbS11cCBhcHByb2FjaCkuIFNpbmNlIHRoZW4gdGhlIHByb2plY3QgYW5kIHRoZSBjb21tdW5pdHkgaGF2ZSBncm93biBhIGxvdDogNjAwayB3ZWVrbHkgZG93bmxvYWRzIHZpYSBOUE0gQ0xJIHdyYXBwZXIsIDMwTSBkb3dubG9hZHMgdmlhIG9wZW5hcGktZ2VuZXJhdG9yLWNsaSBkb2NrZXIgaW1hZ2UganVzdCB0byBoaWdobGlnaHQgYSBmZXcuIFdlJ3ZlIGdyYWR1YWxseSBzdXBwb3J0ZWQgbW9yZSBmZWF0dXJlcyAoZS5nLiBvbmVPZiwgYW55T2YgaW50cm9kdWNlZCBpbiBPcGVuQVBJIDMuMCkgaW4gdmFyaW91cyBnZW5lcmF0b3JzIGFuZCB3ZSB3aWxsIGNvbnRpbnVlIHRoaXMgYXBwcm9hY2ggdG8gZGVsaXZlciBzb21ldGhpbmcgYmFzZWQgb24gb3VyIHVuZGVyc3RhbmRpbmcgb2YgdXNlciBkZW1hbmQgYW5kIHdoYXQgdGhleSB3YW50LCBhbmQgY29udGludWUgdG8gYWRkIHN1cHBvcnQgb2YgbmV3IGZlYXR1cmVzIGludHJvZHVjZWQgaW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIChzdWNoIGFzIHYzLjEgYW5kIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uKS4KCiMjIyBbNi4xIC0gT3BlbkFQSSBHZW5lcmF0b3IgQ29yZSBUZWFtXSgjdGFibGUtb2YtY29udGVudHMpCgpPcGVuQVBJIEdlbmVyYXRvciBjb3JlIHRlYW0gbWVtYmVycyBhcmUgY29udHJpYnV0b3JzIHdobyBoYXZlIGJlZW4gbWFraW5nIHNpZ25pZmljYW50IGNvbnRyaWJ1dGlvbnMgKHJldmlldyBpc3N1ZXMsIGZpeCBidWdzLCBtYWtlIGVuaGFuY2VtZW50cywgZXRjKSB0byB0aGUgcHJvamVjdCBvbiBhIHJlZ3VsYXIgYmFzaXMuCgojIyMjIENvcmUgVGVhbSBNZW1iZXJzCiogW0B3aW5nMzI4XShodHRwczovL2dpdGh1Yi5jb20vd2luZzMyOCkgKDIwMTUvMDcpIFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS93aW5nMzI4KQoqIFtAamltc2NodWJlcnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9qaW1zY2h1YmVydCkgKDIwMTYvMDUpIFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS9qaW1zY2h1YmVydCkKKiBbQGNib3JuZXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9jYm9ybmV0KSAoMjAxNi8wNSkKKiBbQGptaW5pXShodHRwczovL2dpdGh1Yi5jb20vam1pbmkpICgyMDE4LzA0KSAgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ptaW5pKQoqIFtAZXRoZXJlYWxqb3ldKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmVhbGpveSkgKDIwMTkvMDYpCgo6aGVhcnQ6ID0gTGluayB0byBzdXBwb3J0IHRoZSBjb250cmlidXRvciBkaXJlY3RseQoKIyMjIyBUZW1wbGF0ZSBDcmVhdG9yCgoqKk5PVEUqKjogRW1iZWRkZWQgdGVtcGxhdGVzIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiBfTXVzdGFjaGVfIGZvcm1hdC4gU3VwcG9ydCBmb3IgYWxsIG90aGVyIGZvcm1hdHMgaXMgZXhwZXJpbWVudGFsIGFuZCBzdWJqZWN0IHRvIGNoYW5nZSBhdCBhbnkgdGltZS4KCkhlcmUgaXMgYSBsaXN0IG9mIHRlbXBsYXRlIGNyZWF0b3JzOgogKiBBUEkgQ2xpZW50czoKICAgKiBBZGE6IEBzdGNhcnJlegogICAqIEFwZXg6IEBhc25lbGxpbmcKICAgKiBCYXNoOiBAYmtyeXphCiAgICogQzogQFBvd2VyT2ZDcmVhdGlvbiBAemhlbWFudCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vemhlbWFudCkKICAgKiBDKysgT2F0Kys6IEBLcmF1c3QKICAgKiBDKysgUkVTVDogQERhbmllbGt1MTUKICAgKiBDKysgVGlueTogQEFuZGVyc1NwcmluZ2JvcmcgQGthYXJlSEggQG1pY2hlbGVhbGJhbm8gQG1rYWtiYXMKICAgKiBDKysgVUU0OiBAS2FobmNvZGUKICAgKiBDIyAoLk5FVCAyLjApOiBAd2hvCiAgICogQyMgKC5ORVQgU3RhbmRhcmQgMS4zICk6IEBHcm9uc2FrCiAgICogQyMgKC5ORVQgNC41IHJlZmFjdG9yZWQpOiBAamltc2NodWJlcnQgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQogICAqIEMjIChHZW5lcmljSG9zdCk6IEBkZXZobC1sYWJzCiAgICogQyMgKEh0dHBDbGllbnQpOiBAQmxhY2tjbGF3cwogICAqIENsb2p1cmU6IEB4aGgKICAgKiBDcnlzdGFsOiBAd2luZzMyOAogICAqIERhcnQ6IEB5aXNzYWNoYXIKICAgKiBEYXJ0IChyZWZhY3Rvcik6IEBqb2VybmFocmVucwogICAqIERhcnQgMjogQHN3aXBlc2lnaHQKICAgKiBEYXJ0IChKYWd1YXIpOiBAamF1bWFyZAogICAqIERhcnQgKERpbyk6IEBqb3NoLWJ1cnRvbgogICAqIEVsaXhpcjogQG5pa3UKICAgKiBFbG06IEBlcmlrdGltCiAgICogRWlmZmVsOiBAanZlbGlsbGEKICAgKiBFcmxhbmc6IEB0c2xvdWdodGVyCiAgICogRXJsYW5nIChQcm9wRXIpOiBAamZhY29ycm8gQHJvYmVydG9hbG9pCiAgICogR3Jvb3Z5OiBAdmljdG9yZ2l0CiAgICogR286IEB3aW5nMzI4IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS93aW5nMzI4KQogICAqIEdvIChyZXdyaXR0ZW4gaW4gMi4zLjApOiBAYW50aWhheAogICAqIEdvZG90IChHRFNjcmlwdCk6IEBHb3V0dGUgWzpoZWFydDpdKGh0dHBzOi8vbGliZXJhcGF5LmNvbS9Hb3V0dGUpCiAgICogSGFza2VsbCAoaHR0cC1jbGllbnQpOiBAam9uc2Nob25pbmcKICAgKiBKYXZhIChGZWlnbik6IEBkYXZpZGtpc3MKICAgKiBKYXZhIChSZXRyb2ZpdCk6IEAwbGVnZwogICAqIEphdmEgKFJldHJvZml0Mik6IEBlbWlsaWFub2JvbmFzc2kKICAgKiBKYXZhIChKZXJzZXkyKTogQHhoaAogICAqIEphdmEgKG9raHR0cC1nc29uKTogQHhoaAogICAqIEphdmEgKFJlc3RUZW1wbGF0ZSk6IEBuYnJ1bm8KICAgKiBKYXZhIChTcHJpbmcgNSBXZWJDbGllbnQpOiBAZGFvbm9taWMKICAgKiBKYXZhIChTcHJpbmcgNiBSZXN0Q2xpZW50KTogQG5pY2tsYXMyNzUxCiAgICogSmF2YSAoUkVTVEVhc3kpOiBAZ2F5YXRocmlncwogICAqIEphdmEgKFZlcnR4KTogQGxvcGVzbWNjCiAgICogSmF2YSAoR29vZ2xlIEFQSXMgQ2xpZW50IExpYnJhcnkpOiBAY2hhcmxlc2NhcHBzCiAgICogSmF2YSAoUmVzdC1hc3N1cmVkKTogQHZpY2xvdnNreQogICAqIEphdmEgKEphdmEgMTEgTmF0aXZlIEhUVFAgY2xpZW50KTogQGJiZG91Z2xhcwogICAqIEphdmEgKEFwYWNoZSBIdHRwQ2xpZW50IDUueCk6IEBoYXJyeXdoaXRlNCBAYW5kcmV2ZWdhcwogICAqIEphdmEgKEhlbGlkb24pOiBAc3BlcmljYXMgQHRqcXVpbm5vIEB0dmFsbGluCiAgICogSmF2YXNjcmlwdC9Ob2RlSlM6IEBqZmlhbGEKICAgKiBKYXZhU2NyaXB0IChBcG9sbG8gRGF0YVNvdXJjZSk6IEBlcml0aG1ldGljCiAgICogSmF2YVNjcmlwdCAoQ2xvc3VyZS1hbm5vdGF0ZWQgQW5ndWxhcikgQGFjaGV3MjIKICAgKiBKYXZhU2NyaXB0IChGbG93IHR5cGVzKSBAamF5cGVhCiAgICogSmV0YnJhaW5zIEhUVFAgQ2xpZW50IDogQGpsZW5ncmFuZAogICAqIEpNZXRlcjogQGRhdmlka2lzcwogICAqIEp1bGlhOiBAdGFubWF5a20KICAgKiBLb3RsaW46IEBqaW1zY2h1YmVydCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vamltc2NodWJlcnQpCiAgICogS290bGluIChNdWx0aVBsYXRmb3JtKTogQGFuZHJld2VtZXJ5CiAgICogS290bGluIChWb2xsZXkpOiBAYWxpc3RlcnMKICAgKiBLb3RsaW4gKGp2bS1zcHJpbmctd2ViY2xpZW50KTogQHN0ZWZhbmtvcHBpZXIKICAgKiBLb3RsaW4gKGp2bS1zcHJpbmctcmVzdGNsaWVudCk6IEBzdGVmYW5rb3BwaWVyCiAgICogTHVhOiBAZGF1cm5pbWF0b3IKICAgKiBONEpTOiBAbW1ld3MtbjQKICAgKiBOaW06IEBob2thbW90bwogICAqIE9DYW1sOiBAY2dlbnNvdWwKICAgKiBQZXJsOiBAd2luZzMyOCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vd2luZzMyOCkKICAgKiBQSFAgKEd1enpsZSk6IEBiYWFydG9zegogICAqIFBIUCAod2l0aCBEYXRhIFRyYW5zZmVyKTogQEFydGljdXMKICAgKiBQb3dlclNoZWxsOiBAYmVhdGNyYWNrZXIKICAgKiBQb3dlclNoZWxsIChyZWZhY3RvcmVkIGluIDUuMC4wKTogQHdpbmczMjgKICAgKiBQeXRob246IEBzcGFjZXRoZXIgWzpoZWFydDpdW3NwYWNldGhlciBzcG9uc29yc2hpcF0KICAgKiBQeXRob24tRXhwZXJpbWVudGFsOiBAc3BhY2V0aGVyIFs6aGVhcnQ6XVtzcGFjZXRoZXIgc3BvbnNvcnNoaXBdCiAgICogUHl0aG9uIChyZWZhY3RvcmVkIGluIDcuMC4wKTogQHdpbmczMjgKICAgKiBSOiBAcmFtbm92CiAgICogUnVieSAoRmFyYWRheSk6IEBtZWdhbmVtdXJhIEBka2xpYmFuCiAgICogUnVieSAoSFRUUFgpOiBAaG9uZXlyeWRlcmNodWNrCiAgICogUnVzdDogQGZhcmNhbGxlcgogICAqIFJ1c3QgKHJ1c3Qtc2VydmVyKTogQG1ldGFzd2l0Y2gKICAgKiBTY2FsYSAoc2NhbGF6ICYgaHR0cDRzKTogQHRicm93bjE5NzkKICAgKiBTY2FsYSAoQWtrYSk6IEBjY2hhZmVyCiAgICogU2NhbGEgKHN0dHApOiBAY2hhbWVsZW9uODIKICAgKiBTY2FsYSAoc3R0cDQpOiBAZmxzaDg2CiAgICogU2NhbGEgKHNjYWxhLXN0dHA0LWpzb25pdGVyKTogQGxiaWFseQogICAqIFNjYWxhIChQZWtrbyk6IEBtaWNrYWVsbWFnbmllegogICAqIFNjYWxhIChodHRwNHMpOiBASmVubnlMZWFoeQogICAqIFN3aWZ0OiBAdGtxdWJvCiAgICogU3dpZnQgMzogQGhleGVsb24KICAgKiBTd2lmdCA0OiBAZWh5Y2hlCiAgICogU3dpZnQgNTogQDRicnVudQogICAqIFN3aWZ0IDY6IEA0YnJ1bnUKICAgKiBTd2lmdCBDb21iaW5lOiBAZHlkdXMweDE0CiAgICogVHlwZVNjcmlwdCAoQW5ndWxhcjEpOiBAbWhhcmRvcmYKICAgKiBUeXBlU2NyaXB0IChBbmd1bGFyMik6IEByb25pLWZyYW50Y2hpCiAgICogVHlwZVNjcmlwdCAoQW5ndWxhcjYpOiBAYWtlaGlyCiAgICogVHlwZVNjcmlwdCAoQW5ndWxhcjcpOiBAdG9wY2UKICAgKiBUeXBlU2NyaXB0IChBeGlvcyk6IEBuaWNva29lbmlnCiAgICogVHlwZVNjcmlwdCAoRmV0Y2gpOiBAbGVvbnl1CiAgICogVHlwZVNjcmlwdCAoSW52ZXJzaWZ5KTogQGd1YWx0aWVyaW0KICAgKiBUeXBlU2NyaXB0IChqUXVlcnkpOiBAYmhlcmlsYQogICAqIFR5cGVTY3JpcHQgKE5lc3Rqcyk6IEB2ZnJhbms2NgogICAqIFR5cGVTY3JpcHQgKE5vZGUpOiAgQG1oYXJkb3JmCiAgICogVHlwZVNjcmlwdCAoUnhqcyk6IEBkZW55bwogICAqIFR5cGVTY3JpcHQgKHJlZHV4LXF1ZXJ5KTogQHBldGVqb2hhbnNvbnhvCiAgICogWG9qbzogQFRvcGhlZWUKICAgKiBaYXBpZXI6IEB2YWxtb3osIEBlbWFqbwogKiBTZXJ2ZXIgU3R1YnMKICAgKiBBZGE6IEBzdGNhcnJlegogICAqIEMjIEFTUC5ORVQgNTogQGppbXNjaHViZXJ0IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS9qaW1zY2h1YmVydCkKICAgKiBDIyBBU1AuTkVUIENvcmUgMy4wOiBAQS1Kb3NoaQogICAqIEMjIEFQUy5ORVQgQ29yZSAzLjE6IEBwaGF0Y2hlcgogICAqIEMjIEF6dXJlIGZ1bmN0aW9uczogQEFicmhtNzc4NgogICAqIEMjIE5hbmN5Rlg6IEBtc3RlZmFuaXVrCiAgICogQysrIChRdDUgUUh0dHBFbmdpbmUpOiBAZXRoZXJlYWxqb3kKICAgKiBDKysgT2F0Kys6IEBLcmF1c3QKICAgKiBDKysgUGlzdGFjaGU6IEBzZWJ5bWlhbm8KICAgKiBDKysgUmVzdGJlZDogQHN0a3J3b3JrCiAgICogRXJsYW5nIFNlcnZlcjogQGdhbGF4aWUgQG5lbHNvbnZpZGVzCiAgICogRiMgKEdpcmFmZmUpIFNlcnZlcjogQG5tZmlzaGVyCiAgICogR28gU2VydmVyOiBAZ3VvaHVhbmcKICAgKiBHbyBTZXJ2ZXIgKHJlZmFjdG9yZWQgaW4gNy4wLjApOiBAbHdqNQogICAqIEdvIChFY2hvKSBTZXJ2ZXI6IEBwaDRyNWg0ZAogICAqIEdvIChHaW4pIFNlcnZlcjogQGtlbW9rZW1vCiAgICogR3JhcGhRTCBFeHByZXNzIFNlcnZlcjogQHJlbmVwYXJkb24KICAgKiBIYXNrZWxsIFNlcnZhbnQ6IEBhbGdhcwogICAqIEhhc2tlbGwgWWVzb2Q6IEB5b3RzdXlhCiAgICogSmF2YSBDYW1lbDogQGNhcm5ldmFsZWdpYWNvbW8KICAgKiBKYXZhIER1YmJvOiBAcmVkb29tCiAgICogSmF2YSBNU0Y0SjogQHNhbmplZXdhLW1hbGFsZ29kYQogICAqIEphdmEgU3ByaW5nIEJvb3Q6IEBkaXlmcgogICAqIEphdmEgVW5kZXJ0b3c6IEBzdGV2ZWh1CiAgICogSmF2YSBQbGF5IEZyYW1ld29yazogQEpGQ290ZQogICAqIEphdmEgUEtNU1Q6IEBhbnNodTIxODUgQHNhbnNodW1hbiBAcmt1bWFyLXBrIEBuaW5vZHBpbGxhaQogICAqIEphdmEgVmVydC54OiBAbHdsZWUyNjA4CiAgICogSmF2YSBNaWNyb25hdXQ6IEBhbmRyaXktZG15dHJ1awogICAqIEphdmEgSGVsaWRvbjogQHNwZXJpY2FzIEB0anF1aW5ubyBAdHZhbGxpbgogICAqIEphdmEgV2lyZU1vY2s6IFtAYWNvdXZyZXVyXShodHRwczovL2dpdGh1Yi5jb20vYWNvdXZyZXVyKQogICAqIEpBWC1SUyBSZXN0RWFzeTogQGNoYW1lbGVvbjgyCiAgICogSkFYLVJTIENYRjogQGhpdmVzaGlwCiAgICogSkFYLVJTIENYRiAoQ0RJKTogQG5pY2tjbWF5bmFyZAogICAqIEpBWC1SUyBSZXN0RWFzeSAoSkJvc3MgRUFQKTogQGpmaWFsYQogICAqIEp1bGlhOiBAdGFubWF5a20KICAgKiBLb3RsaW46IEBqaW1zY2h1YmVydCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vamltc2NodWJlcnQpCiAgICogS290bGluIChTcHJpbmcgQm9vdCk6IEBkcjRrZTYxNgogICAqIEtvdGxpbiAoVmVydHgpOiBAV29veW1lCiAgICogS290bGluIChKQVgtUlMpOiBAYW50dGlsZXBwYQogICAqIEtvdGxpbiBNaXNrOiBAYW5kcmV3d2lsc29ubmV3IEBndWlhcm4KICAgKiBLb3RsaW4gV2lyZU1vY2s6IEBzdGVmYW5rb3BwaWVyCiAgICogTm9kZUpTIEV4cHJlc3M6IEBZaXNoVGlzaAogICAqIFBIUCBGbGlnaHQ6IEBkYW5pZWwtc2MKICAgKiBQSFAgTGFyYXZlbDogQHJlbmVwYXJkb24KICAgKiBQSFAgTGFyYXZlbCAocmVmYWN0b3IgaW4gNy4xMi4wKTogQGdpanMtYmxhbmtlbgogICAqIFBIUCBMdW1lbjogQGFiY3N1bgogICAqIFBIUCBNZXp6aW8gKHdpdGggUGF0aCBIYW5kbGVyKTogQEFydGljdXMKICAgKiBQSFAgU2xpbTogQGpmYXN0bmFjaHQKICAgKiBQSFAgU2xpbTQ6IFtAeWJlbGVua29dKGh0dHBzOi8vZ2l0aHViLmNvbS95YmVsZW5rbykKICAgKiBQSFAgU3ltZm9ueTogQGtzbTIKICAgKiBQSFAgU3ltZm9ueTY6IEBCZW5qYW1pbkhhZQogICAqIFB5dGhvbiBGYXN0QVBJOiBAa3JqYWticmphawogICAqIFB5dGhvbiBBSU9IVFRQOgogICAqIFJ1Ynkgb24gUmFpbHMgNTogQHpseAogICAqIFJ1c3QgKHJ1c3Qtc2VydmVyKTogQG1ldGFzd2l0Y2gKICAgKiBSdXN0IChydXN0LWF4dW0pOiBAbGlueEdudQogICAqIFNjYWxhIEFra2E6IEBCb3VpbGxpZQogICAqIFNjYWxhIENhc2s6IEBhYXJvbnAKICAgKiBTY2FsYSBGaW5jaDogQGppbXNjaHViZXJ0IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS9qaW1zY2h1YmVydCkKICAgKiBTY2FsYSBMYWdvbTogQGdta3VtYXIyMDA1CiAgICogU2NhbGEgUGxheTogQGFkaWdlcmJlcgogICAqIFR5cGVTY3JpcHQgTmVzdEpTOiBAYXJ5b2JlbmhvbHpuZXIKICogRG9jdW1lbnRhdGlvbgogICAqIEFzY2lpRG9jOiBAbWFuLWF0LWhvbWUKICAgKiBIVE1MIERvYyAyOiBAamhpdGNoY29jawogICAqIENvbmZsdWVuY2UgV2lraTogQGpoaXRjaGNvY2sKICAgKiBQbGFudFVNTDogQHBidXJscwogKiBDb25maWd1cmF0aW9uCiAgICogQXBhY2hlMjogQHN0a3J3b3JrCiAgICogazY6IEBtb3N0YWZhCiAqIFNjaGVtYQogICAqIEF2cm86IEBzZ2Fkb3VhcgogICAqIEdyYXBoUUw6IEB3aW5nMzI4IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS93aW5nMzI4KQogICAqIEt0b3JtOiBATHVpei1Nb25hZAogICAqIE15U1FMOiBbQHliZWxlbmtvXShodHRwczovL2dpdGh1Yi5jb20veWJlbGVua28pCiAgICogUG9zdGdyZVNRTDogW0BpcmldKGh0dHBzOi8vZ2l0aHViLmNvbS9pcmkpCiAgICogUG9zdG1hbiBDb2xsZWN0aW9uOiBAZ2NhdGFuZXNlCiAgICogUHJvdG9jb2wgQnVmZmVyOiBAd2luZzMyOAogICAqIFdTREw6IEBhZGVzc29EcGQKCjpoZWFydDogPSBMaW5rIHRvIHN1cHBvcnQgdGhlIGNvbnRyaWJ1dG9yIGRpcmVjdGx5CgojIyMjIEhvdyB0byBqb2luIHRoZSBjb3JlIHRlYW0KCkhlcmUgYXJlIHRoZSByZXF1aXJlbWVudHMgdG8gYmVjb21lIGEgY29yZSB0ZWFtIG1lbWJlcjoKLSByYW5rIHdpdGhpbiB0b3AgNTAgaW4gaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9ncmFwaHMvY29udHJpYnV0b3JzCiAgLSB0byBjb250cmlidXRlLCBoZXJlIGFyZSBzb21lIGdvb2QgW3N0YXJ0aW5nIHBvaW50c10oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9pc3N1ZXM/cT1pcyUzQW9wZW4raXMlM0Fpc3N1ZStsYWJlbCUzQSUyMmhlbHArd2FudGVkJTIyKQotIHJlZ3VsYXIgY29udHJpYnV0aW9ucyB0byB0aGUgcHJvamVjdAogIC0gYWJvdXQgMyBob3VycyBwZXIgd2VlawogIC0gZm9yIGNvbnRyaWJ1dGlvbiwgaXQgY2FuIGJlIGFkZHJlc3NpbmcgaXNzdWVzLCByZXZpZXdpbmcgUFJzIHN1Ym1pdHRlZCBieSBvdGhlcnMsIHN1Ym1pdHRpbmcgUFIgdG8gZml4IGJ1Z3Mgb3IgbWFrZSBlbmhhbmNlbWVudHMsIGV0YwogIC0gbXVzdCBiZSBhY3RpdmUgaW4gdGhlIHBhc3QgMyBtb250aHMgYXQgdGhlIHRpbWUgb2YgYXBwbGljYXRpb24KCiBUbyBqb2luIHRoZSBjb3JlIHRlYW0sIHBsZWFzZSByZWFjaCBvdXQgdG8gdGVhbUBvcGVuYXBpdG9vbHMub3JnIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKIFRvIGJlY29tZSBhIFRlbXBsYXRlIENyZWF0b3IsIHNpbXBseSBzdWJtaXQgYSBQUiBmb3IgbmV3IEFQSSBjbGllbnQgKGUuZy4gUnVzdCwgRWxpeGlyKSBvciBzZXJ2ZXIgc3R1YiAoZS5nLiBSdWJ5IEdyYXBlKSBnZW5lcmF0b3IuCgojIyMgWzYuMiAtIE9wZW5BUEkgR2VuZXJhdG9yIFRlY2huaWNhbCBDb21taXR0ZWVdKCN0YWJsZS1vZi1jb250ZW50cykKCk1lbWJlcnMgb2YgdGhlIE9wZW5BUEkgR2VuZXJhdG9yIHRlY2huaWNhbCBjb21taXR0ZWUgc2hvdWxkZXIgdGhlIGZvbGxvd2luZyByZXNwb25zaWJpbGl0aWVzOgoKLSBQcm92aWRlcyBndWlkYW5jZSBhbmQgZGlyZWN0aW9uIHRvIG90aGVyIHVzZXJzCi0gUmV2aWV3cyBwdWxsIHJlcXVlc3RzIGFuZCBpc3N1ZXMKLSBJbXByb3ZlcyB0aGUgZ2VuZXJhdG9yIGJ5IG1ha2luZyBlbmhhbmNlbWVudHMsIGZpeGluZyBidWdzIG9yIHVwZGF0aW5nIGRvY3VtZW50YXRpb25zCi0gU2V0cyB0aGUgdGVjaG5pY2FsIGRpcmVjdGlvbiBvZiB0aGUgZ2VuZXJhdG9yCgpXaG8gaXMgZWxpZ2libGU/IFRob3NlIHdobyB3YW50IHRvIGpvaW4gbXVzdCBoYXZlIGF0IGxlYXN0IDMgUFJzIG1lcmdlZCBpbnRvIGEgZ2VuZXJhdG9yLiAoRXhjZXB0aW9ucyBjYW4gYmUgZ3JhbnRlZCB0byB0ZW1wbGF0ZSBjcmVhdG9ycyBvciBjb250cmlidXRvcnMgd2hvIGhhdmUgbWFkZSBhIGxvdCBvZiBjb2RlIGNoYW5nZXMgd2l0aCBsZXNzIHRoYW4gMyBtZXJnZWQgUFJzKQoKSWYgeW91IHdhbnQgdG8gam9pbiB0aGUgY29tbWl0dGVlLCBwbGVhc2Uga2luZGx5IGFwcGx5IGJ5IHNlbmRpbmcgYW4gZW1haWwgdG8gdGVhbUBvcGVuYXBpdG9vbHMub3JnIHdpdGggeW91ciBHaXRodWIgSUQuCgojIyMjIE1lbWJlcnMgb2YgVGVjaG5pY2FsIENvbW1pdHRlZQoKfCBMYW5ndWFnZXMvR2VuZXJhdG9ycyAgfCBNZW1iZXIgKGpvaW4gZGF0ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IEFjdGlvblNjcmlwdCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBBZGEgICAgICAgICAgICAgICAgICAgfCBAc3RjYXJyZXogKDIwMTgvMDIpIEBtaWNoZWxlYWxiYW5vICgyMDE4LzAyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQW5kcm9pZCAgICAgICAgICAgICAgIHwgQGphei1haCAoMjAxNy8wOSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEFwZXggICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBCYXNoICAgICAgICAgICAgICAgICAgfCBAZnJvbCAoMjAxNy8wNykgQGJrcnl6YSAoMjAxNy8wOCkgQGtlbmpvbmVzLWNpc2NvICgyMDE3LzA5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQyAgICAgICAgICAgICAgICAgICAgIHwgQHpoZW1hbnQgKDIwMTgvMTEpIEBpdHl1aHVpICgyMDE5LzEyKSBAbWljaGVsZWFsYmFubyAoMjAyMC8wMykgQGVhZmVyICgyMDI0LzEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQysrICAgICAgICAgICAgICAgICAgIHwgQHJhdmluaWthbSAoMjAxNy8wNykgQHN0a3J3b3JrICgyMDE3LzA3KSBAZXRoZXJlYWxqb3kgKDIwMTgvMDIpIEBtYXJ0aW5kZWxpbGxlICgyMDE4LzAzKSBAbXV0dGxleXhkICgyMDE5LzA4KSBAYW1pbnlhICgyMDI1LzA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEMjICAgICAgICAgICAgICAgICAgICB8IEBtYW5kcmVhbiAoMjAxNy8wOCkgQHNoaWJheWFuICgyMDIwLzAyKSBAQmxhY2tjbGF3cyAoMjAyMS8wMykgQGx1Y2FtYXp6YW50aSAoMjAyMS8wNSkgQGlCaWNoYSAoMjAyMy8wNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQ2xvanVyZSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IENyeXN0YWwgICAgICAgICAgICAgICB8IEBjeWFuZ2xlICgyMDIxLzAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBEYXJ0ICAgICAgICAgICAgICAgICAgfCBAamF1bWFyZCAoMjAxOC8wOSkgQGpvc2gtYnVydG9uICgyMDE5LzEyKSBAYW1vbmRuZXQgKDIwMTkvMTIpIEBzYnUtV0JUICgyMDIwLzEyKSBAa3VobnJveWFsICgyMDIwLzEyKSBAYWdpbG9iICgyMDIwLzEyKSBAYWhtZWRuZndlbGEgKDIwMjEvMDgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRWlmZmVsICAgICAgICAgICAgICAgIHwgQGp2ZWxpbGxhICgyMDE3LzA5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEVsaXhpciAgICAgICAgICAgICAgICB8IEBtcm1zdG4gKDIwMTgvMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBFbG0gICAgICAgICAgICAgICAgICAgfCBAZXJpa3RpbSAoMjAxOC8wOSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRXJsYW5nICAgICAgICAgICAgICAgIHwgQHRzbG91Z2h0ZXIgKDIwMTcvMTEpIEBqZmFjb3JybyAoMjAxOC8xMCkgQHJvYmVydG9hbG9pICgyMDE4LzEwKSBAbmVsc29udmlkZXMgKDIwMjQvMDkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEYjICAgICAgICAgICAgICAgICAgICB8IEBubWZpc2hlciAoMjAxOS8wNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBHbyAgICAgICAgICAgICAgICAgICAgfCBAYW50aWhheCAoMjAxNy8xMSkgQGdyb2tpZnkgKDIwMTgvMDcpIEBrZW1va2VtbyAoMjAxOC8wOSkgQGppcmlrdW5jYXIgKDIwMjEvMDEpIEBwaDRyNWg0ZCAoMjAyMS8wNCkgQGx3ajUgKDIwMjMvMDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEdyYXBoUUwgICAgICAgICAgICAgICB8IEByZW5lcGFyZG9uICgyMDE4LzEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBHcm9vdnkgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSGFza2VsbCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEphdmEgICAgICAgICAgICAgICAgICB8IEBiYmRvdWdsYXMgKDIwMTcvMDcpIEBzcmVlc2hhcyAoMjAxNy8wOCkgQGpmaWFsYSAoMjAxNy8wOCkgQGx1a295YW5vdiAoMjAxNy8wOSkgQGNib3JuZXQgKDIwMTcvMDkpIEBqZWZmOWZpbmdlciAoMjAxOC8wMSkgQGthcmlzbWFubiAoMjAxOS8wMykgQFpvbXpvZyAoMjAxOS8wNCkgQGx3bGVlMjYwOCAoMjAxOS8xMCkgQG1hcnRpbi1tZmcgKDIwMjMvMDgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSmF2YSBTcHJpbmcgICAgICAgICAgIHwgQGNhY2hlc2NydWJiZXIgKDIwMjIvMDIpIEB3ZWxzaG0gKDIwMjIvMDIpIEBNZWxsZUQgKDIwMjIvMDIpIEBhdGV4dG9yICgyMDIyLzAyKSBAbWFuZWRldjc5ICgyMDIyLzAyKSBAamF2aXNzdCAoMjAyMi8wMikgQGJvcnNjaCAoMjAyMi8wMikgQGJhbmxldmVudGUgKDIwMjIvMDIpIEBab216b2cgKDIwMjIvMDkpIEBtYXJ0aW4tbWZnICgyMDIzLzA4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBKTWV0ZXIgICAgICAgICAgICAgICAgfCBAa2Fubmt5byAoMjAyMS8wMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSmV0YnJhaW5zIEhUVFAgQ2xpZW50IHwgQGpsZW5ncmFuZCAoMjAyMy8wMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEp1bGlhICAgICAgICAgICAgICAgICB8IEB0YW5tYXlrbSAoMjAyMy8wMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBLb3RsaW4gICAgICAgICAgICAgICAgfCBAa2FyaXNtYW5uICgyMDE5LzAzKSBAWm9tem9nICgyMDE5LzA0KSBAYW5kcmV3ZW1lcnkgKDIwMTkvMTApIEA0YnJ1bnUgKDIwMTkvMTEpIEB5dXRha2EwbSAoMjAyMC8wMykgQHN0ZWZhbmtvcHBpZXIgKDIwMjIvMDYpIEBlNWwgKDIwMjQvMTApIEBkZW5uaXNhbWVsaW5nICgyMDI2LzAyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEx1YSAgICAgICAgICAgICAgICAgICB8IEBkYXVybmltYXRvciAoMjAxNy8wOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBONEpTICAgICAgICAgICAgICAgICAgfCBAbW1ld3MtbjQgKDIwMjMvMDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgTmltICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IE5vZGVKUy9KYXZhc2NyaXB0ICAgICB8IEBDb2RlTmluamFpICgyMDE3LzA3KSBAZnJvbCAoMjAxNy8wNykgQGNsaWZmYW5vICgyMDE3LzA3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBPYmpDICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgT0NhbWwgICAgICAgICAgICAgICAgIHwgQGNnZW5zb3VsICgyMDE5LzA4KSwgQHNpcjR1cjBuICgyMDI1LzA4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFBlcmwgICAgICAgICAgICAgICAgICB8IEB3aW5nMzI4ICgyMDE3LzA3KSBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vd2luZzMyOCkgQHl1ZTk5NDQ4ODIgKDIwMTkvMDYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBQSFAgICAgICAgICAgICAgICAgICAgfCBAamViZW50aWVyICgyMDE3LzA3KSwgQGRrYXJsb3ZpICgyMDE3LzA3KSwgQG1hbmRyZWFuICgyMDE3LzA4KSwgQGpmYXN0bmFjaHQgKDIwMTcvMDkpLCBbQHliZWxlbmtvXShodHRwczovL2dpdGh1Yi5jb20veWJlbGVua28pICgyMDE4LzA3KSwgQHJlbmVwYXJkb24gKDIwMTgvMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUG93ZXJTaGVsbCAgICAgICAgICAgIHwgQHdpbmczMjggKDIwMjAvMDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFB5dGhvbiAgICAgICAgICAgICAgICB8IEBjYm9ybmV0ICgyMDE3LzA5KSBAdG9tcGx1cyAoMjAxOC8xMCkgQGtyamFrYnJqYWsgKDIwMjMvMDIpIEBmYTAzMTEgKDIwMjMvMTApIEBtdWx0YW5pICgyMDIzLzEwKSB8CnwgUiAgICAgICAgICAgICAgICAgICAgIHwgQFJhbWFudGggKDIwMTkvMDcpIEBzYWlnaXJpZGhhcjIxICgyMDE5LzA3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFJ1YnkgICAgICAgICAgICAgICAgICB8IEBjbGlmZmFubyAoMjAxNy8wNykgQHpseCAoMjAxNy8wOSkgQGF1dG9wcCAoMjAxOS8wMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBSdXN0ICAgICAgICAgICAgICAgICAgfCBAZnJvbCAoMjAxNy8wNykgQGZhcmNhbGxlciAoMjAxNy8wOCkgQHJpY2hhcmR3aGl1ayAoMjAxOS8wNykgQHBhbGFkaW56aCAoMjAyMC8wNSkgQGphY29iLXBybyAoMjAyMi8xMCkgQGRzdGVlbGV5ICgyMDI1LzA3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFNjYWxhICAgICAgICAgICAgICAgICB8IEBjbGFzbmFrZSAoMjAxNy8wNyksIEBzaGlqaW5rdWkgICgyMDE4LzAxKSwgQHJhbXppbWFhbGVqICgyMDE4LzAzKSwgQGNoYW1lbGVvbjgyICgyMDIwLzAzKSwgQEJvdWlsbGllICgyMDIwLzA0KSBAZmlzaDg2ICgyMDIzLzA2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBTd2lmdCAgICAgICAgICAgICAgICAgfCBAamdhdnJpcyAoMjAxNy8wNykgQGVoeWNoZSAoMjAxNy8wOCkgQEVkdWJpdHMgKDIwMTcvMDkpIEBqYXotYWggKDIwMTcvMDkpIEA0YnJ1bnUgKDIwMTkvMTEpIEBkeWR1czB4MTQgKDIwMjMvMDYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgVHlwZVNjcmlwdCAgICAgICAgICAgIHwgQFRpRnUgKDIwMTcvMDcpIEB0YXhwb24gKDIwMTcvMDcpIEBzZWJhc3RpYW5oYWFzICgyMDE3LzA3KSBAa2VuaXN0ZXdhcmQgKDIwMTcvMDcpIEBWcm9saWpreCAoMjAxNy8wOSkgQG1hY2pvaG5ueSAoMjAxOC8wMSkgQHRvcGNlICgyMDE4LzEwKSBAYWtlaGlyICgyMDE5LzA3KSBAcGV0ZWpvaGFuc29ueG8gKDIwMTkvMTEpIEBhbWFraHJvdiAoMjAyMC8wMikgQGRhdmlkZ2FtZXJvICgyMDIyLzAzKSBAbWt1c2FrYSAoMjAyMi8wNCkgQGpvc2NoYSAoMjAyNC8xMCkgQGRlbm5pc2FtZWxpbmcgKDIwMjYvMDIpICAgfAp8IFhvam8gICAgICAgICAgICAgICAgICB8IEBUb3BoZWVlICgyMDIzLzA0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCgpQYXN0IE1lbWJlcnMgb2YgVGVjaG5pY2FsIENvbW1pdHRlZToKfCBMYW5ndWFnZXMvR2VuZXJhdG9ycyAgICAgICAgIHwgTWVtYmVyIChqb2luIGRhdGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA6LS0tLS0tLS0tLS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgUHl0aG9uICAgICAgICAgICAgfCBAdGF4cG9uICgyMDE3LzA3KSBAZnJvbCAoMjAxNy8wNykgQG1ib2hsb29sICgyMDE3LzA3KSBAY2Jvcm5ldCAoMjAxNy8wOSkgQGtlbmpvbmVzLWNpc2NvICgyMDE3LzExKSBAdG9tcGx1cyAoMjAxOC8xMCkgQGFydW4tbmFsbGEgKDIwMTkvMTEpICB8CgoKOmhlYXJ0OiA9IExpbmsgdG8gc3VwcG9ydCB0aGUgY29udHJpYnV0b3IgZGlyZWN0bHkKCiMjIyBbNi4zIC0gSGlzdG9yeSBvZiBPcGVuQVBJIEdlbmVyYXRvcl0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKT3BlbkFQSSBHZW5lcmF0b3IgaXMgYSBmb3JrIG9mIFtTd2FnZ2VyIENvZGVnZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4pLiBJbiB2aWV3IG9mIHRoZSBpc3N1ZXMgd2l0aCB0aGUgU3dhZ2dlciBDb2RlZ2VuIDMuMC4wIChiZXRhKSByZWxlYXNlIGFuZCB0aGUgZGlzYWdyZWVtZW50IG9uIHRoZSBwcm9qZWN0J3MgZGlyZWN0aW9uLCBtb3JlIHRoYW4gNDAgdG9wIGNvbnRyaWJ1dG9ycyBhbmQgdGVtcGxhdGUgY3JlYXRvcnMgb2YgU3dhZ2dlciBDb2RlZ2VuIGRlY2lkZWQgdG8gZm9yayBTd2FnZ2VyIENvZGVnZW4gYW5kIG1haW50YWluIGEgY29tbXVuaXR5LWRyaXZlbiB2ZXJzaW9uIGNhbGxlZCAiT3BlbkFQSSBHZW5lcmF0b3IiLiBQbGVhc2UgcmVmZXIgdG8gdGhlIFtRJkFdKGRvY3MvcW5hLm1kKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiMjIyMgRm91bmRpbmcgTWVtYmVycyAoYWxwaGFiZXRpY2FsIG9yZGVyKToKCi0gW0FraWhpdG8gTmFrYW5vXShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKQotIFtBcnRlbSBPY2hlcmVka29dKGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheGllKQotIFtBcnRodXIgTW9nbGlldl0oaHR0cHM6Ly9naXRodWIuY29tL0FydGljdXMpCi0gW0JhcnRlayBLcnl6YV0oaHR0cHM6Ly9naXRodWIuY29tL2Jrcnl6YSkKLSBbQmVuIFdlbGxzXShodHRwczovL2dpdGh1Yi5jb20vYnZ3ZWxscykKLSBbQmVuamFtaW4gR2lsbF0oaHR0cHM6Ly9naXRodWIuY29tL2JqZ2lsbCkKLSBbQ2hyaXN0b3BoZSBCb3JuZXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9jYm9ybmV0KQotIFtDbGlmZmFubyBTdWJhZ2lvXShodHRwczovL2dpdGh1Yi5jb20vY2xpZmZhbm8pCi0gW0RhaWtpIE1hdHN1ZGF0ZV0oaHR0cHM6Ly9naXRodWIuY29tL2QtZGF0ZSkKLSBbRGFuaWVsXShodHRwczovL2dpdGh1Yi5jb20vRGFuaWVsa3UxNSkKLSBbRW1pbGlhbm8gQm9uYXNzaV0oaHR0cHM6Ly9naXRodWIuY29tL2VtaWxpYW5vYm9uYXNzaSkKLSBbRXJpayBUaW1tZXJzXShodHRwczovL2dpdGh1Yi5jb20vZXJpa3RpbSkKLSBbRXN0ZWJhbiBHZWhyaW5nXShodHRwczovL2dpdGh1Yi5jb20vbWFjam9obm55KQotIFtHdXN0YXZvIFBhel0oaHR0cHM6Ly9naXRodWIuY29tL2d1c3Rhdm9hcGF6KQotIFtKYXZpZXIgVmVsaWxsYV0oaHR0cHM6Ly9naXRodWIuY29tL2p2ZWxpbGxhKQotIFtKZWFuLUZyYW7Dp29pcyBDw7R0w6ldKGh0dHBzOi8vZ2l0aHViLmNvbS9KRkNvdGUpCi0gW0ppbSBTY2h1YmVydF0oaHR0cHM6Ly9naXRodWIuY29tL2ppbXNjaHViZXJ0KQotIFtKb24gU2Nob25pbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9qb25zY2hvbmluZykKLSBbSsOpcsOpbWllIEJyZXNzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9qbWluaSkgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ptaW5pKQotIFtKw7ZybiBBaHJlbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9qYXllYXJuKQotIFtLZW5pIFN0ZXdhcmRdKGh0dHBzOi8vZ2l0aHViLmNvbS9rZW5pc3Rld2FyZCkKLSBbTWFyY2luIFN0ZWZhbml1a10oaHR0cHM6Ly9naXRodWIuY29tL21zdGVmYW5pdWspCi0gW01hcnRpbiBEZWxpbGxlXShodHRwczovL2dpdGh1Yi5jb20vTWFydGluRGVsaWxsZSkKLSBbTWFzYWhpcm8gWWFtYXVjaGldKGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdhcykKLSBbTWljaGVsZSBBbGJhbm9dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNoZWxlYWxiYW5vKQotIFtSYW16aSBNYWFsZWpdKGh0dHBzOi8vZ2l0aHViLmNvbS9yYW16aW1hYWxlaikKLSBbUmF2aW5kcmEgTmlrYW1dKGh0dHBzOi8vZ2l0aHViLmNvbS9yYXZpbmlrYW0pCi0gW1JpY2FyZG8gQ2FyZG9uYV0oaHR0cHM6Ly9naXRodWIuY29tL3JpY2FyZG9uYSkKLSBbU2ViYXN0aWFuIEhhYXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5oYWFzKQotIFtTZWJhc3RpYW4gTWFuZHJlYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9tYW5kcmVhbikKLSBbU3JlZW5pZGhpIFNyZWVzaGFdKGh0dHBzOi8vZ2l0aHViLmNvbS9zcmVlc2hhcykKLSBbU3RlZmFuIEtyaXNtYW5uXShodHRwczovL2dpdGh1Yi5jb20vc3RrcndvcmspCi0gW1N0ZXBoYW5lIENhcnJlel0oaHR0cHM6Ly9naXRodWIuY29tL3N0Y2FycmV6KQotIFtUYWt1cm8gV2FkYV0oaHR0cHM6Ly9naXRodWIuY29tL3RheHBvbikKLSBbVG9tYXN6IFBydXNdKGh0dHBzOi8vZ2l0aHViLmNvbS90b21wbHVzKQotIFtUcmlzdGFuIFNsb3VnaHRlcl0oaHR0cHM6Ly9naXRodWIuY29tL3RzbG91Z2h0ZXIpCi0gW1ZpY3RvciBPcmxvdnNreV0oaHR0cHM6Ly9naXRodWIuY29tL3ZpY2xvdnNreSkKLSBbVmljdG9yIFRyYWtodGVuYmVyZ10oaHR0cHM6Ly9naXRodWIuY29tL3ZpY3RvcmdpdCkKLSBbVmxhZCBGcm9sb3ZdKGh0dHBzOi8vZ2l0aHViLmNvbS9mcm9sKQotIFtWbGFkaW1pciBQb3V6YW5vdl0oaHR0cHM6Ly9naXRodWIuY29tL2ZhcmNhbGxlcikKLSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly9naXRodWIuY29tL3dpbmczMjgpCi0gW1hpbiBNZW5nXShodHRwczovL2dpdGh1Yi5jb20veG1lbmcxKSBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vdXNlci9vdmVydmlldz91PTE2NDM1Mzg1KQotIFtYdSBIdWkgSHVpXShodHRwczovL2dpdGh1Yi5jb20veGhoKQotIFthbnRpaGF4XShodHRwczovL2dpdGh1Yi5jb20vYW50aWhheCkKLSBbYmVhdGNyYWNrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9iZWF0Y3JhY2tlcikKLSBbZGF1cm5pbWF0b3JdKGh0dHBzOi9naXRodWIuY29tL2RhdXJuaW1hdG9yKQotIFtldGhlcmVhbGpveV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZWFsam95KQotIFtqZmlhbGFdKGh0dHBzOi8vZ2l0aHViLmNvbS9qZmlhbGEpCi0gW2x1a295YW5vdl0oaHR0cHM6Ly9naXRodWIuY29tL2x1a295YW5vdikKCjpoZWFydDogPSBMaW5rIHRvIHN1cHBvcnQgdGhlIGNvbnRyaWJ1dG9yIGRpcmVjdGx5CgojIyBbNyAtIExpY2Vuc2VdKCN0YWJsZS1vZi1jb250ZW50cykKLS0tLS0tLQoKQ29weXJpZ2h0IDIwMTggT3BlbkFQSS1HZW5lcmF0b3IgQ29udHJpYnV0b3JzIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpCkNvcHlyaWdodCAyMDE4IFNtYXJ0QmVhciBTb2Z0d2FyZQoKTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IFthcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXShodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wKQoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi0tLQo= readmeEtag: '"1cf6874abaf9f652f741e5b9b8261417196ff2f6"' readmeLastModified: Wed, 04 Feb 2026 11:44:39 GMT repositoryId: 133134007 description: >- OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3) created: '2018-05-12T09:57:56Z' updated: '2026-02-06T03:54:45Z' language: Java archived: false stars: 25755 watchers: 223 forks: 7376 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 repoEtag: '"7971ffac372c800290e8ce0e18b2b37b93e2f205f5479ef8de9b3d178c339644"' repoLastModified: Fri, 06 Feb 2026 03:54:45 GMT foundInMaster: true id: 0418f8afcd0196c648d1a46c0c5c20d1 v3_1_link: https://github.com/OpenAPITools/openapi-generator/issues/9083 - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags repository: https://github.com/openapi-json-schema-tools/openapi-json-schema-generator v3: true id: b03b9d5fc0aef95c46d5d148a05798ce repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIEpTT04gU2NoZW1hIEdlbmVyYXRvcgoKWyFbQ0kgVGVzdHNdKGh0dHBzOi8vZGwuY2lyY2xlY2kuY29tL3N0YXR1cy1iYWRnZS9pbWcvZ2gvb3BlbmFwaS1qc29uLXNjaGVtYS10b29scy9vcGVuYXBpLWpzb24tc2NoZW1hLWdlbmVyYXRvci90cmVlL21hc3Rlci5zdmc/c3R5bGU9c2hpZWxkKV0oaHR0cHM6Ly9kbC5jaXJjbGVjaS5jb20vc3RhdHVzLWJhZGdlL3JlZGlyZWN0L2doL29wZW5hcGktanNvbi1zY2hlbWEtdG9vbHMvb3BlbmFwaS1qc29uLXNjaGVtYS1nZW5lcmF0b3IvdHJlZS9tYXN0ZXIpClshW0FwYWNoZSAyLjAgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUFwYWNoZSUyMDIuMC1vcmFuZ2UpXSguL0xJQ0VOU0UpCgpBdXRvIGdlbmVyYXRlIGEgY2xpZW50IHNkayBmcm9tIHlvdXIgb3BlbmFwaSAzLjAuMC0zLjEuMCBkb2N1bWVudCB1c2luZyBPcGVuYXBpIEpTT04gU2NoZW1hIEdlbmVyYXRvci4gClRoaXMgcHJvamVjdCBpcyBhIGNvZGUgZ2VuZXJhdG9yIHRoYXQgZm9jdXNlcyBvbiBzdXBwb3J0aW5nIGFsbCBvcGVuYXBpIGFuZCBqc29uIHNjaGVtYSBmZWF0dXJlcy4KCiMjIE92ZXJ2aWV3Ck9wZW5BUEkgSlNPTiBTY2hlbWEgR2VuZXJhdG9yIGFsbG93cyBhdXRvLWdlbmVyYXRpb24gb2YgQVBJIGNsaWVudCBsaWJyYXJpZXMgKFNESyBnZW5lcmF0aW9uKSBnaXZlbiBhbgpbT3BlbkFQSSBkb2N1bWVudF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24pICgzLjAuMC1bMy4xLjAqXSgjb3BlbmFwaS12MzEwLXN1cHBvcnQpIGFyZSBzdXBwb3J0ZWQpLgpUaGlzIHByb2plY3QgZm9jdXNlcyBvbiBtYWtpbmcgdGhlIG91dHB1dCAxMDAlIGNvbXBsaWFudCB3aXRoIG9wZW5hcGkgKyBKU09OIHNjaGVtYSBzcGVjcy4KVGhlIGdvYWwgaXMgdG8gZnVsbHkgc3VwcG9ydCBldmVyeXRoaW5nIGRlZmluZWQgaW4gb3BlbmFwaSArIHRoZSBpbmNsdWRlZCBKU09OIHNjaGVtYSBzcGVjcwpzbyBkZXZlbG9wZXJzIGNhbiB1c2UgYWxsIG9mIHRob3NlIGZlYXR1cmVzLgoKQ3VycmVudGx5LCB0aGUgZm9sbG93aW5nIGxhbmd1YWdlcy9mcmFtZXdvcmtzIGFyZSBzdXBwb3J0ZWQ6Cgp8IEZlYXR1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW1B5dGhvbl0oZG9jcy9nZW5lcmF0b3JzL3B5dGhvbi5tZCkgfCBbSmF2YV0oZG9jcy9nZW5lcmF0b3JzL2phdmEubWQpIHwgW0tvdGxpbl0oZG9jcy9nZW5lcmF0b3JzL2tvdGxpbi5tZCkgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IEdlbmVyYXRvciBzdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdGFibGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgT3BlbmFwaSB2My4wLjAtMy4xLjAgaW5nZXN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSnNvbiBTY2hlbWEgMjAyMC0xMiBTdXBwb3J0IChjb21wb25lbnRzL3NjaGVtYXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQ29tcG9uZW50IHNjaGVtYSBjbGFzc2VzICsgZG9jdW1lbnRhdGlvbiBwcm9kdWNlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRG9jdW1lbnRhdGlvbiBwcm9kdWNlZCBmb3Igb3RoZXIgY29tcG9uZW50IHR5cGVzOjxicj5oZWFkZXJzLCBwYXJhbWV0ZXJzLCByZXF1ZXN0Qm9kaWVzLCByZXNzcG9uc2VzLCBzZWN1cml0eVNjaGVtZXMgfCBYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgTWV0aG9kcyBnZW5lcmF0ZWQgZm9yIGVuZHBvaW50cyA8YnI+dGhhdCBzZW5kL3JlY2VpdmUganNvbiArIGRvY3MgZ2VuZXJhdGVkIGZvciB0aGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgojIyBSZWFzb25zIFRvIFVzZSB0aGUgR2VuZXJhdG9ycwotIE9wZW5hcGkgc3BlYyBzdXBwb3J0IGZvciB2My4wLjAtMy4xLjAKICAtIHRob3JvdWdoIHRlc3RzIHJ1biBpbiBDSSB1c2luZyBqc29uIHNjaGVtYSB0ZXN0IHN1aXRlLCBzZWUgM18wXzAgYW5kIDNfMV8wIHNhbXBsZSBjbGllbnRzCi0gU3RhdGljIGFuYWx5c2lzOgogIC0gUHl0aG9uOiBteXB5IHJ1biBpbiBDSSBhZ2FpbnN0IHB5dGhvbiBwZXRzdG9yZSBzYW1wbGUKICAtIEphdmE6IGNoZWNrZXIgZnJhbWV3b3JrIHJ1biB3LyBOdWxsbmVzc0NoZWNrZXIsIGVuc3VyZXMgbm8gbnVsbCBwb2ludGVyIGV4Y2VwdGlvbnMKLSBGb3JtYXQgc3VwcG9ydCBmb3I6IGludDMyLCBpbnQ2NCwgZmxvYXQsIGRvdWJsZSwgYmluYXJ5LCBkYXRlLCBkYXRldGltZSwgdXVpZAotIEludmFsaWQgKGluIGxhbmd1YWdlKSBwcm9wZXJ0eSBuYW1lcyBzdXBwb3J0ZWQgbGlrZSBgZnJvbWAsIGAxdmFyYCwgYGhpLXRoZXJlYCBldGMgaW4KICAtIHNjaGVtYSBwcm9wZXJ0eSBuYW1lcwogIC0gZW5kcG9pbnQgcGFyYW1ldGVyIG5hbWVzCi0gT3BlbmFwaSBkb2N1bWVudCBpbmxpbmUgc2NoZW1hcyBzdXBwb3J0ZWQgYXQgYW55IGRlcHRoIGluIGFueSBsb2NhdGlvbgotIEdlbmVyYXRlZCBDb2RlOiBDbGFzcyArIG1ldGhvZCBpbnB1dHMgYXJlIHR5cGVkCi0gR2VuZXJhdGVkIENvZGU6IFN0YXRpYyB0eXBlIGNoZWNraW5nIGRvbmUgaW4gc3RhdGljIGxhbmd1YWdlcyB1c2luZyBidWlsZGVyIGlucHV0cyBhbmQgY2xhc3MgcHJvcGVydHkgYWNjZXNzCi0gR2VuZXJhdGVkIENvZGU6IHJ1bi10aW1lIHR5cGUgY2hlY2tpbmcgZG9uZSBpbiBhbGwgZ2VuZXJhdG9ycyAoYSBwYXlsb2FkIGNhbiBiZSB2YWxpZGF0ZWQgYWdhaW5zdCBuIHNjaGVtYXMpCi0gR2VuZXJhdGVkIENvZGUgcmUtdXNlIGJ1aWx0IGluIGZyb20gdGhlIGdyb3VuZCB1cAogIC0gY29tcG9uZW50cy9zY2hlbWFzL2hlYWRlcnMgZXRjIGFyZSBnZW5lcmF0ZWQgYXMgc2VwYXJhdGUgY2xhc3NlcyBhbmQgaW1wb3J0ZWQgd2hlbiB1c2VkIHZpYSAkcmVmCi0gUGF5bG9hZCB2YWx1ZXMgYXJlIG5vdCBjb2VyY2VkIHdoZW4gdmFsaWRhdGVkLCBzbyBhIGRhdGUvZGF0ZS10aW1lIHZhbHVlIGNhbiBwYXNzIG90aGVyIHZhbGlkYXRpb25zIHRoYXQgZGVzY3JpYmUgdGhlIHBheWxvYWQgb25seSBhcyB0eXBlIHN0cmluZwotIFN0cmluZyB0cmFuc21pc3Npb24gb2YgbnVtYmVycyBzdXBwb3J0ZWQgd2l0aCB0eXBlOiBzdHJpbmcsIGZvcm1hdDogbnVtYmVyLCB2YWx1ZSBjYW4gYmUgYWNjZXNzZWQgYXMgYSBEZWNpbWFsIHdpdGggc2NoZW1hcy5hc19kZWNpbWFsKGluc3QpCi0gTXVsdGlwbGUgY29udGVudCB0eXBlcyBzdXBwb3J0ZWQgZm9yIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGJvZGllcwotIEVuZHBvaW50IHJlc3BvbnNlIGFsd2F5cyBhbHNvIGluY2x1ZGVzIHRoZSByYXcgcmVzcG9uc2UKLSBJbnRlcmZhY2VzIGtlcHQgY29uc2lzdGVudCBhY3Jvc3MgZ2VuZXJhdGVkIGxhbmd1YWdlcwoKIyMgSm9pbiBPdXIgQ29tbXVuaXR5CldlIHVzZSBhIERpc2NvcmQgc2VydmVyIGFzIGEgcGxhY2UgdG8gYXNrIHF1ZXN0aW9ucyBhbmQgaGVscCBlYWNoIG90aGVyLiBJdCBvZmZlcnMgZnVuY3Rpb25hbGl0eSB2ZXJ5IHNpbWlsYXIgdG8gU2xhY2suCllvdSBjYW4gam9pbiB1cyBoZXJlOiBodHRwczovL2Rpc2NvcmQuZ2cvbUhCOFdFUXVZUQoKIyMjIENhbiBJIGJ1aWxkIGhlcmU/CgpZZXM7IGNvbnRyaWJ1dGlvbnMgYXJlIHdlbGNvbWUhClN1Ym1pdCBhIFBSIGlmIHlvdSB3YW50IHRvIGFkZCBhIG5ldyBzZXJ2ZXIgc2NhZmZvbGQsIGNsaWVudCBzZGssIG9yIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGluIGFueSBsYW5ndWFnZS4KCiMjIFRhYmxlIG9mIGNvbnRlbnRzCgogIC0gW09wZW5BUEkgSlNPTiBTY2hlbWEgR2VuZXJhdG9yXSgjb3BlbmFwaS1qc29uLXNjaGVtYS1nZW5lcmF0b3IpCiAgLSBbT3ZlcnZpZXddKCNvdmVydmlldykKICAtIFtUYWJsZSBvZiBDb250ZW50c10oI3RhYmxlLW9mLWNvbnRlbnRzKQogIC0gW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKICAgIC0gW0NvbXBhdGliaWxpdHldKCNjb21wYXRpYmlsaXR5KQogICAgLSBbQnVpbGQgUHJvamVjdHNdKCNidWlsZC1wcm9qZWN0cykKICAgIC0gW0RvY2tlcl0oI2RvY2tlcikKICAtIFtHZXR0aW5nIFN0YXJ0ZWRdKCNnZXR0aW5nLXN0YXJ0ZWQpCiAgLSBbVXNhZ2VdKCN1c2FnZSkKICAgIC0gW0N1c3RvbWl6YXRpb25dKCNjdXN0b21pemF0aW9uKQogICAgLSBbV29ya2Zsb3cgSW50ZWdyYXRpb25dKCN3b3JrZmxvdy1pbnRlZ3JhdGlvbikKICAgIC0gW0xpY2Vuc2UgSW5mb3JtYXRpb25dKCNsaWNlbnNlLWluZm9ybWF0aW9uKQogIC0gW0NvbXBhbmllcy9Qcm9qZWN0cyB1c2luZyBPcGVuQVBJIEpTT04gU2NoZW1hIEdlbmVyYXRvcl0oI2NvbXBhbmllc3Byb2plY3RzLXVzaW5nLW9wZW5hcGktanNvbi1zY2hlbWEtZ2VuZXJhdG9yKQogIC0gW0Fib3V0IFVzXSgjYWJvdXQtdXMpCiAgICAtIFtIaXN0b3J5IG9mIE9wZW5BUEkgSlNPTiBTY2hlbWEgR2VuZXJhdG9yXSgjaGlzdG9yeS1vZi1vcGVuYXBpLWpzb24tc2NoZW1hLWdlbmVyYXRvcikKICAtIFtMaWNlbnNlXSgjbGljZW5zZSkKCiMjIEluc3RhbGxhdGlvbgoKIyMjIENvbXBhdGliaWxpdHkKClRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gaGFzIHVuZGVyZ29uZSAzIHJldmlzaW9ucyBzaW5jZSBpbml0aWFsIGNyZWF0aW9uIGluIDIwMTAuICBUaGUgb3BlbmFwaS1qc29uLXNjaGVtYS1nZW5lcmF0b3IgcHJvamVjdCBoYXMgdGhlIGZvbGxvd2luZyBjb21wYXRpYmlsaXRpZXMgd2l0aCB0aGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uOgoKfCBPcGVuQVBJIEpTT04gU2NoZW1hIEdlbmVyYXRvciBWZXJzaW9uIHwgT3BlbkFQSSBTcGVjIGNvbXBhdGliaWxpdHkgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgMy4zLjArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMuMC4wIC0gWzMuMS4wKl0oI29wZW5hcGktdjMxMC1zdXBwb3J0KSB8CnwgMy4xLjAgLSAzLjIuMSAgICAgICAgICAgICAgICAgICAgICAgICB8IDMuMC4wIC0gWzMuMS4wXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1qc29uLXNjaGVtYS10b29scy9vcGVuYXBpLWpzb24tc2NoZW1hLWdlbmVyYXRvci9ibG9iLzMuMS4wL2RvY3MvZ2VuZXJhdG9ycy9weXRob24ubWQjc2NoZW1hLWZlYXR1cmUpIHwKfCAxLjAuMCAtIDMuMC4wICAgICAgICAgICAgICAgICAgICAgICAgIHwgMy4wLjAgLSAzLjAuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKIyMjIyBPcGVuQVBJIHYzLjEuMCBzdXBwb3J0Ck9wZW5BUEkgdjMuMS4wIHNwZWNpZmljYXRpb24gc3VwcG9ydCBpbmNsdWRlcyB0aGVzZSBuZXcvdXBkYXRlZCAyMDIwLTEyIGpzb24gc2NoZW1hIGtleXdvcmRzOgoxLiBjb25zdDogb25seSBzdHJpbmcgdmFsdWVzIGFyZSB3b3JraW5nIGJlY2F1c2Ugb2YgYnVncyBpbiBzd2FnZ2VyIHBhcnNlcgoyLiBjb250YWlucwozLiBkZXBlbmRlbnRSZXF1aXJlZAo0LiBkZXBlbmRlbnRTY2hlbWFzCjUuIGVsc2UKNi4gaWYKNy4gbWF4Q29udGFpbnMKOC4gbWluQ29udGFpbnMKOS4gcGF0dGVyblByb3BlcnRpZXMKMTAuIHByZWZpeEl0ZW1zCjExLiBwcm9wZXJ0eU5hbWVzCjEyLiB0aGVuCjEzLiB0eXBlIChhcnJheSBvZiB0eXBlcyBzdXBwb3J0ZWQgaW4gYWRkaXRpb24gdG8gb25lIG5vbi1hcnJheSB2YWx1ZSkKMTQuIHVuZXZhbHVhdGVkSXRlbXMKMTUuIHVuZXZhbHVhdGVkUHJvcGVydGllcwoKTm90ZTogdGhlc2UgZmVhdHVyZXMgY2FuIGFsc28gYmUgc2VlbiBpbiB0aGUgZ2VuZXJhdG9yIGRvY3VtZW50YXRpb24gW3NjaGVtYSBmZWF0dXJlc10oZG9jcy9nZW5lcmF0b3JzL3B5dGhvbi5tZCNzY2hlbWEtZmVhdHVyZSkKCiMjIyBCdWlsZCBQcm9qZWN0cwoKVG8gYnVpbGQgZnJvbSBzb3VyY2UsIHlvdSBuZWVkIHRoZSBmb2xsb3dpbmcgaW5zdGFsbGVkIGFuZCBhdmFpbGFibGUgaW4geW91ciBgJFBBVEg6YAoKKiBbSmF2YSAxMV0oaHR0cHM6Ly93d3cub3JhY2xlLmNvbS90ZWNobmV0d29yay9qYXZhL2luZGV4Lmh0bWwpCgoqIFtBcGFjaGUgTWF2ZW4gMy45LjMgb3IgZ3JlYXRlcl0oaHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnLykKCkFmdGVyIGNsb25pbmcgdGhlIHByb2plY3QsIHlvdSBjYW4gYnVpbGQgaXQgZnJvbSBzb3VyY2Ugd2l0aCB0aGlzIGNvbW1hbmQ6CmBgYHNoCm12biBjbGVhbiBpbnN0YWxsCmBgYAoKVGhlIGRlZmF1bHQgYnVpbGQgY29udGFpbnMgbWluaW1hbCBzdGF0aWMgYW5hbHlzaXMgKHZpYSBDaGVja1N0eWxlKS4gVG8gcnVuIHlvdXIgYnVpbGQgd2l0aCBQTUQgYW5kIFNwb3RidWdzLCB1c2UgdGhlIGBzdGF0aWMtYW5hbHlzaXNgIHByb2ZpbGU6CgpgYGBzaAptdm4gLVBzdGF0aWMtYW5hbHlzaXMgY2xlYW4gaW5zdGFsbApgYGAKCiMjIyBEb2NrZXIKCiMjIyMgUHVibGljIFByZS1idWlsdCBEb2NrZXIgaW1hZ2VzCgogLSBbaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29wZW5hcGlqc29uc2NoZW1hdG9vbHMvb3BlbmFwaS1qc29uLXNjaGVtYS1nZW5lcmF0b3ItY2xpL10oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29wZW5hcGlqc29uc2NoZW1hdG9vbHMvb3BlbmFwaS1qc29uLXNjaGVtYS1nZW5lcmF0b3ItY2xpLykgKG9mZmljaWFsIENMSSkKCiMjIyMgT3BlbkFQSSBKU09OIFNjaGVtYSBHZW5lcmF0b3IgQ0xJIERvY2tlciBJbWFnZQoKVGhlIGRvY2tlciBpbWFnZSBhY3RzIGFzIGEgc3RhbmRhbG9uZSBleGVjdXRhYmxlLiBJdCBjYW4gYmUgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBpbnN0YWxsaW5nIHZpYSBob21lYnJldywgb3IgZm9yIGRldmVsb3BlcnMgd2hvIGFyZSB1bmFibGUgdG8gaW5zdGFsbCBKYXZhIG9yIHVwZ3JhZGUgdGhlIGluc3RhbGxlZCB2ZXJzaW9uLgoKVG8gZ2VuZXJhdGUgY29kZSB3aXRoIHRoaXMgaW1hZ2UsIHlvdSdsbCBuZWVkIHRvIG1vdW50IGEgbG9jYWwgbG9jYXRpb24gYXMgYSB2b2x1bWUuCgpFeGFtcGxlOgoKYGBgc2gKZG9ja2VyIHJ1biAtLXJtIC12ICIke1BXRH06L2xvY2FsIiBvcGVuYXBpanNvbnNjaGVtYXRvb2xzL29wZW5hcGktanNvbi1zY2hlbWEtZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZSBcCiAgICAtaSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaS1qc29uLXNjaGVtYS10b29scy9vcGVuYXBpLWpzb24tc2NoZW1hLWdlbmVyYXRvci9tYXN0ZXIvc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIFwKICAgIC1nIHB5dGhvbiBcCiAgICAtbyAvbG9jYWwvb3V0L3B5dGhvbgpgYGAKClRoZSBnZW5lcmF0ZWQgY29kZSB3aWxsIGJlIGxvY2F0ZWQgdW5kZXIgYC4vb3V0L3B5dGhvbmAgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKIyMjIyBEZXZlbG9wbWVudCBpbiBkb2NrZXIKCllvdSBjYW4gdXNlIGBiaW4vcnVuLWluLWRvY2tlci5zaGAgdG8gZG8gYWxsIGRldmVsb3BtZW50LiBUaGlzIHNjcmlwdCBtYXBzIHlvdXIgbG9jYWwgcmVwb3NpdG9yeSB0byBgL2dlbmAKaW4gdGhlIGRvY2tlciBjb250YWluZXIuIEl0IGFsc28gbWFwcyBgfi8ubTIvcmVwb3NpdG9yeWAgdG8gdGhlIGFwcHJvcHJpYXRlIGNvbnRhaW5lciBsb2NhdGlvbi4KClRvIGV4ZWN1dGUgYG12biBwYWNrYWdlYDoKCmBgYHNoCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1qc29uLXNjaGVtYS10b29scy9vcGVuYXBpLWpzb24tc2NoZW1hLWdlbmVyYXRvcgpjZCBvcGVuYXBpLWpzb24tc2NoZW1hLWdlbmVyYXRvcgouL2Jpbi9ydW4taW4tZG9ja2VyLnNoIG12biBwYWNrYWdlCmBgYAoKQnVpbGQgYXJ0aWZhY3RzIGFyZSBub3cgYWNjZXNzaWJsZSBpbiB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5LgoKT25jZSBidWlsdCwgYHJ1bi1pbi1kb2NrZXIuc2hgIHdpbGwgYWN0IGFzIGFuIGV4ZWN1dGFibGUgZm9yIG9wZW5hcGktanNvbi1zY2hlbWEtZ2VuZXJhdG9yLWNsaS4gVG8gZ2VuZXJhdGUgY29kZSwgeW91J2xsIG5lZWQgdG8gb3V0cHV0IHRvIGEgZGlyZWN0b3J5IHVuZGVyIGAvZ2VuYCAoZS5nLiBgL2dlbi9vdXRgKS4gRm9yIGV4YW1wbGU6CgpgYGBzaAouL2Jpbi9ydW4taW4tZG9ja2VyLnNoIGhlbHAgIyBFeGVjdXRlcyAnaGVscCcgY29tbWFuZCBmb3Igb3BlbmFwaS1qc29uLXNjaGVtYS1nZW5lcmF0b3ItY2xpCi4vYmluL3J1bi1pbi1kb2NrZXIuc2ggbGlzdCAjIEV4ZWN1dGVzICdsaXN0JyBjb21tYW5kIGZvciBvcGVuYXBpLWpzb24tc2NoZW1hLWdlbmVyYXRvci1jbGkKLi9iaW4vcnVuLWluLWRvY2tlci5zaCAvZ2VuL2Jpbi9weXRob24tcGV0c3RvcmUuc2ggICMgQnVpbGRzIHRoZSBQeXRob24gY2xpZW50Ci4vYmluL3J1bi1pbi1kb2NrZXIuc2ggZ2VuZXJhdGUgLWkgc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIFwKICAgIC1nIGdvIC1vIC9nZW4vb3V0L3B5dGhvbi1wZXRzdG9yZSAtcCBwYWNrYWdlTmFtZT1wZXRzdG9yZV9hcGkgIyBnZW5lcmF0ZXMgcHl0aG9uIGNsaWVudCwgb3V0cHV0cyBsb2NhbGx5IHRvIC4vb3V0L3B5dGhvbi1wZXRzdG9yZQpgYGAKCiMjIyMjIFRyb3VibGVzaG9vdGluZwoKSWYgYW4gZXJyb3IgbGlrZSB0aGlzIG9jY3VycywganVzdCBleGVjdXRlIHRoZSAqKm12biBjbGVhbiBpbnN0YWxsIC1VKiogY29tbWFuZDoKCj4gb3JnLmFwYWNoZS5tYXZlbi5saWZlY3ljbGUuTGlmZWN5Y2xlRXhlY3V0aW9uRXhjZXB0aW9uOiBGYWlsZWQgdG8gZXhlY3V0ZSBnb2FsIG9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczptYXZlbi1zdXJlZmlyZS1wbHVnaW46Mi4xOS4xOnRlc3QgKGRlZmF1bHQtdGVzdCkgb24gcHJvamVjdCBvcGVuYXBpLWpzb24tc2NoZW1hLWdlbmVyYXRvcjogQSB0eXBlIGluY29tcGF0aWJpbGl0eSBvY2N1cnJlZCB3aGlsZSBleGVjdXRpbmcgb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zOm1hdmVuLXN1cmVmaXJlLXBsdWdpbjoyLjE5LjE6dGVzdDogamF2YS5sYW5nLkV4Y2VwdGlvbkluSW5pdGlhbGl6ZXJFcnJvciBjYW5ub3QgYmUgY2FzdCB0byBqYXZhLmlvLklPRXhjZXB0aW9uCgpgYGBzaAouL3J1bi1pbi1kb2NrZXIuc2ggbXZuIGNsZWFuIGluc3RhbGwgLVUKYGBgCgo+IEZhaWxlZCB0byBleGVjdXRlIGdvYWwgb3JnLmZvcnRhc29mdDpncmFkbGUtbWF2ZW4tcGx1Z2luOjEuMC44Omludm9rZSAoZGVmYXVsdCkgb24gcHJvamVjdCBvcGVuYXBpLWpzb24tc2NoZW1hLWdlbmVyYXRvci1ncmFkbGUtcGx1Z2luLW12bi13cmFwcGVyOiBvcmcuZ3JhZGxlLnRvb2xpbmcuQnVpbGRFeGNlcHRpb246IENvdWxkIG5vdCBleGVjdXRlIGJ1aWxkIHVzaW5nIEdyYWRsZSBkaXN0cmlidXRpb24gJ2h0dHBzOi8vc2VydmljZXMuZ3JhZGxlLm9yZy9kaXN0cmlidXRpb25zL2dyYWRsZS00LjctYmluLnppcCcKClJpZ2h0IG5vdzogbm8gc29sdXRpb24gZm9yIHRoaXMgb25lIDp8Cgo8IS0tIC9SRUxFQVNFX1ZFUlNJT04gLS0+CiMjIEdldHRpbmcgU3RhcnRlZAoKVG8gZ2VuZXJhdGUgYSBweXRob24gY2xpZW50IGZvciBbcGV0c3RvcmUueWFtbF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGktanNvbi1zY2hlbWEtdG9vbHMvb3BlbmFwaS1qc29uLXNjaGVtYS1nZW5lcmF0b3IvbWFzdGVyL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCksIHBsZWFzZSBydW4gdGhlIGZvbGxvd2luZwpgYGBzaApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktanNvbi1zY2hlbWEtdG9vbHMvb3BlbmFwaS1qc29uLXNjaGVtYS1nZW5lcmF0b3IKY2Qgb3BlbmFwaS1qc29uLXNjaGVtYS1nZW5lcmF0b3IKbXZuIGNsZWFuIHBhY2thZ2UKamF2YSAtamFyIHRhcmdldC9vcGVuYXBpLWpzb24tc2NoZW1hLWdlbmVyYXRvci1jbGkuamFyIGdlbmVyYXRlIFwKICAgLWkgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGktanNvbi1zY2hlbWEtdG9vbHMvb3BlbmFwaS1qc29uLXNjaGVtYS1nZW5lcmF0b3IvbWFzdGVyL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCBcCiAgIC1nIHB5dGhvbiBcCiAgIC1vIC92YXIvdG1wL3B5dGhvbl9hcGlfY2xpZW50CmBgYAooaWYgeW91J3JlIG9uIFdpbmRvd3MsIHJlcGxhY2UgdGhlIGxhc3QgY29tbWFuZCB3aXRoIGBqYXZhIC1qYXIgdGFyZ2V0XG9wZW5hcGktanNvbi1zY2hlbWEtZ2VuZXJhdG9yLWNsaS5qYXIgZ2VuZXJhdGUgLWkgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGktanNvbi1zY2hlbWEtdG9vbHMvb3BlbmFwaS1qc29uLXNjaGVtYS1nZW5lcmF0b3IvbWFzdGVyL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCAtZyBweXRob24gLW8gYzpcdGVtcFxweXRob25fYXBpX2NsaWVudGApCgpUbyBnZXQgYSBsaXN0IG9mICoqZ2VuZXJhbCoqIG9wdGlvbnMgYXZhaWxhYmxlLCBwbGVhc2UgcnVuIGBqYXZhIC1qYXIgdGFyZ2V0L29wZW5hcGktanNvbi1zY2hlbWEtZ2VuZXJhdG9yLWNsaS5qYXIgaGVscCBnZW5lcmF0ZWAKClRvIGdldCBhIGxpc3Qgb2YgcHl0aG9uIHNwZWNpZmllZCBvcHRpb25zICh3aGljaCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBnZW5lcmF0b3Igd2l0aCBhIGNvbmZpZyBmaWxlIHZpYSB0aGUgYC1jYCBvcHRpb24pLCBwbGVhc2UgcnVuIGBqYXZhIC1qYXIgdGFyZ2V0L29wZW5hcGktanNvbi1zY2hlbWEtZ2VuZXJhdG9yLWNsaS5qYXIgY29uZmlnLWhlbHAgLWcgcHl0aG9uYAoKIyMgVXNhZ2UKCiMjIyBUbyBnZW5lcmF0ZSBhIHNhbXBsZSBjbGllbnQgbGlicmFyeQpZb3UgY2FuIGJ1aWxkIGEgY2xpZW50IGFnYWluc3QgdGhlIFtQZXRzdG9yZSBBUEldKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpanNvbnNjaGVtYXRvb2xzL29wZW5hcGktanNvbi1zY2hlbWEtZ2VuZXJhdG9yL21hc3Rlci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwpIGFzIGZvbGxvd3M6CgpgYGBzaAouL2Jpbi9nZW5lcmF0ZS1zYW1wbGVzLnNoIC4vYmluL2dlbmVyYXRlX3NhbXBsZXNfY29uZmlncy9weXRob24ueWFtbApgYGAKCihPbiBXaW5kb3dzLCBwbGVhc2UgaW5zdGFsbCBbR0lUIEJhc2ggZm9yIFdpbmRvd3NdKGh0dHBzOi8vZ2l0Zm9yd2luZG93cy5vcmcvKSB0byBydW4gdGhlIGNvbW1hbmQgYWJvdmUpCgpUaGlzIHNjcmlwdCB3aWxsIHJ1biB0aGUgZ2VuZXJhdG9yIHdpdGggdGhpcyBjb21tYW5kOgoKYGBgc2gKamF2YSAtamFyIHRhcmdldC9vcGVuYXBpLWpzb24tc2NoZW1hLWdlbmVyYXRvci1jbGkuamFyIGdlbmVyYXRlIFwKICAtaSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaWpzb25zY2hlbWF0b29scy9vcGVuYXBpLWpzb24tc2NoZW1hLWdlbmVyYXRvci9tYXN0ZXIvc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIFwKICAtZyBweXRob24gXAogIC10IHNyYy9tYWluL3Jlc291cmNlcy9weXRob24gXAogIC0tYWRkaXRpb25hbC1wcm9wZXJ0aWVzIHBhY2thZ2VOYW1lPXBldHN0b3JlX2FwaSBcCiAgLW8gc2FtcGxlcy9jbGllbnQvcGV0c3RvcmUvcHl0aG9uCmBgYAoKd2l0aCBhIG51bWJlciBvZiBvcHRpb25zLiBbVGhlIHB5dGhvbiBvcHRpb25zIGFyZSBkb2N1bWVudGVkIGhlcmUuXShkb2NzL2dlbmVyYXRvcnMvcHl0aG9uLm1kKQoKWW91IGNhbiBhbHNvIGdldCB0aGUgb3B0aW9ucyB3aXRoIHRoZSBgaGVscCBnZW5lcmF0ZWAgY29tbWFuZCAoYmVsb3cgb25seSBzaG93cyBwYXJ0aWFsIHJlc3VsdHMpOgoKYGBgCk5BTUUKICAgICAgICBvcGVuYXBpLWpzb24tc2NoZW1hLWdlbmVyYXRvci1jbGkgZ2VuZXJhdGUgLSBHZW5lcmF0ZSBjb2RlIHdpdGggdGhlIHNwZWNpZmllZAogICAgICAgIGdlbmVyYXRvci4KClNZTk9QU0lTCiAgICAgICAgb3BlbmFwaS1qc29uLXNjaGVtYS1nZW5lcmF0b3ItY2xpIGdlbmVyYXRlCiAgICAgICAgICAgICAgICBbKC1hIDxhdXRob3JpemF0aW9uPiB8IC0tYXV0aCA8YXV0aG9yaXphdGlvbj4pXQogICAgICAgICAgICAgICAgWy0tYXBpLW5hbWUtc3VmZml4IDxhcGkgbmFtZSBzdWZmaXg+XSBbLS1hcGktcGFja2FnZSA8YXBpIHBhY2thZ2U+XQogICAgICAgICAgICAgICAgWy0tYXJ0aWZhY3QtaWQgPGFydGlmYWN0IGlkPl0gWy0tYXJ0aWZhY3QtdmVyc2lvbiA8YXJ0aWZhY3QgdmVyc2lvbj5dCiAgICAgICAgICAgICAgICBbKC1jIDxjb25maWd1cmF0aW9uIGZpbGU+IHwgLS1jb25maWcgPGNvbmZpZ3VyYXRpb24gZmlsZT4pXSBbLS1kcnktcnVuXQogICAgICAgICAgICAgICAgWygtZSA8dGVtcGxhdGluZyBlbmdpbmU+IHwgLS1lbmdpbmUgPHRlbXBsYXRpbmcgZW5naW5lPildCiAgICAgICAgICAgICAgICBbLS1lbmFibGUtcG9zdC1wcm9jZXNzLWZpbGVdCiAgICAgICAgICAgICAgICBbKC1nIDxnZW5lcmF0b3IgbmFtZT4gfCAtLWdlbmVyYXRvci1uYW1lIDxnZW5lcmF0b3IgbmFtZT4pXQogICAgICAgICAgICAgICAgWy0tZ2l0LWhvc3QgPGdpdCBob3N0Pl0gWy0tZ2l0LXJlcG8taWQgPGdpdCByZXBvIGlkPl0KICAgICAgICAgICAgICAgIFstLWdpdC11c2VyLWlkIDxnaXQgdXNlciBpZD5dIFstLWdsb2JhbC1wcm9wZXJ0eSA8Z2xvYmFsIHByb3BlcnRpZXM+Li4uXQogICAgICAgICAgICAgICAgWy0tZ3JvdXAtaWQgPGdyb3VwIGlkPl0gWy0taGlkZS1nZW5lcmF0aW9uLXRpbWVzdGFtcF0KICAgICAgICAgICAgICAgIFstLWh0dHAtdXNlci1hZ2VudCA8aHR0cCB1c2VyIGFnZW50Pl0KICAgICAgICAgICAgICAgIFsoLWkgPHNwZWMgZmlsZT4gfCAtLWlucHV0LXNwZWMgPHNwZWMgZmlsZT4pXQogICAgICAgICAgICAgICAgWy0taWdub3JlLWZpbGUtb3ZlcnJpZGUgPGlnbm9yZSBmaWxlIG92ZXJyaWRlIGxvY2F0aW9uPl0KICAgICAgICAgICAgICAgIFstLWludHMtYWxsb3dlZC1mb3ItZmxvYXQtZG91YmxlLWZvcm1hdHNdCiAgICAgICAgICAgICAgICBbLS1pbnZva2VyLXBhY2thZ2UgPGludm9rZXIgcGFja2FnZT5dIFstLW1pbmltYWwtdXBkYXRlXQogICAgICAgICAgICAgICAgWy0tbW9kZWwtbmFtZS1wcmVmaXggPG1vZGVsIG5hbWUgcHJlZml4Pl0KICAgICAgICAgICAgICAgIFstLW1vZGVsLW5hbWUtc3VmZml4IDxtb2RlbCBuYW1lIHN1ZmZpeD5dCiAgICAgICAgICAgICAgICBbKC1vIDxvdXRwdXQgZGlyZWN0b3J5PiB8IC0tb3V0cHV0IDxvdXRwdXQgZGlyZWN0b3J5PildIFsoLXAgPGFkZGl0aW9uYWwgcHJvcGVydGllcz4gfCAtLWFkZGl0aW9uYWwtcHJvcGVydGllcyA8YWRkaXRpb25hbCBwcm9wZXJ0aWVzPikuLi5dCiAgICAgICAgICAgICAgICBbLS1wYWNrYWdlLW5hbWUgPHBhY2thZ2UgbmFtZT5dIFstLXJlbGVhc2Utbm90ZSA8cmVsZWFzZSBub3RlPl0KICAgICAgICAgICAgICAgIFstLXJlbW92ZS1lbnVtLXZhbHVlLXByZWZpeF0gWy0tcmVtb3ZlLW9wZXJhdGlvbi1pZC1wcmVmaXhdCiAgICAgICAgICAgICAgICBbKC1zIHwgLS1za2lwLW92ZXJ3cml0ZSldIFstLXNraXAtb3BlcmF0aW9uLWV4YW1wbGVdCiAgICAgICAgICAgICAgICBbLS1za2lwLXZhbGlkYXRlLXNwZWNdIFstLXN0cmljdC1zcGVjIDx0cnVlL2ZhbHNlIHN0cmljdCBiZWhhdmlvcj5dCiAgICAgICAgICAgICAgICBbKC10IDx0ZW1wbGF0ZSBkaXJlY3Rvcnk+IHwgLS10ZW1wbGF0ZS1kaXIgPHRlbXBsYXRlIGRpcmVjdG9yeT4pXQogICAgICAgICAgICAgICAgWygtdiB8IC0tdmVyYm9zZSldCmBgYAo8ZGV0YWlscz4KPHN1bW1hcnk+Z2VuZXJhdGUgT1BUSU9OUzwvc3VtbWFyeT4KCmBgYHRleHQKT1BUSU9OUwogICAgICAgIC1hIDxhdXRob3JpemF0aW9uPiwgLS1hdXRoIDxhdXRob3JpemF0aW9uPgogICAgICAgICAgICBhZGRzIGF1dGhvcml6YXRpb24gaGVhZGVycyB3aGVuIGZldGNoaW5nIHRoZSBPcGVuQVBJIGRlZmluaXRpb25zCiAgICAgICAgICAgIHJlbW90ZWx5LiBQYXNzIGluIGEgVVJMLWVuY29kZWQgc3RyaW5nIG9mIG5hbWU6aGVhZGVyIHdpdGggYSBjb21tYQogICAgICAgICAgICBzZXBhcmF0aW5nIG11bHRpcGxlIHZhbHVlcwoKICAgICAgICAtLWFwaS1uYW1lLXN1ZmZpeCA8YXBpIG5hbWUgc3VmZml4PgogICAgICAgICAgICBTdWZmaXggdGhhdCB3aWxsIGJlIGFwcGVuZGVkIHRvIGFsbCBBUEkgbmFtZXMgKCd0YWdzJykuIERlZmF1bHQ6CiAgICAgICAgICAgIEFwaS4gZS5nLiBQZXQgPT4gUGV0QXBpLiBOb3RlOiBPbmx5IHJ1YnksIHB5dGhvbiwgamF4cnMgZ2VuZXJhdG9ycwogICAgICAgICAgICBzdXBwb3J0IHRoaXMgZmVhdHVyZSBhdCB0aGUgbW9tZW50LgoKICAgICAgICAtLWFwaS1wYWNrYWdlIDxhcGkgcGFja2FnZT4KICAgICAgICAgICAgcGFja2FnZSBmb3IgZ2VuZXJhdGVkIGFwaSBjbGFzc2VzCgogICAgICAgIC0tYXJ0aWZhY3QtaWQgPGFydGlmYWN0IGlkPgogICAgICAgICAgICBhcnRpZmFjdElkIGluIGdlbmVyYXRlZCBwb20ueG1sLiBUaGlzIGFsc28gYmVjb21lcyBwYXJ0IG9mIHRoZQogICAgICAgICAgICBnZW5lcmF0ZWQgbGlicmFyeSdzIGZpbGVuYW1lCgogICAgICAgIC0tYXJ0aWZhY3QtdmVyc2lvbiA8YXJ0aWZhY3QgdmVyc2lvbj4KICAgICAgICAgICAgYXJ0aWZhY3QgdmVyc2lvbiBpbiBnZW5lcmF0ZWQgcG9tLnhtbC4gVGhpcyBhbHNvIGJlY29tZXMgcGFydCBvZiB0aGUKICAgICAgICAgICAgZ2VuZXJhdGVkIGxpYnJhcnkncyBmaWxlbmFtZQoKICAgICAgICAtYyA8Y29uZmlndXJhdGlvbiBmaWxlPiwgLS1jb25maWcgPGNvbmZpZ3VyYXRpb24gZmlsZT4KICAgICAgICAgICAgUGF0aCB0byBjb25maWd1cmF0aW9uIGZpbGUuIEl0IGNhbiBiZSBKU09OIG9yIFlBTUwuIElmIGZpbGUgaXMgSlNPTiwKICAgICAgICAgICAgdGhlIGNvbnRlbnQgc2hvdWxkIGhhdmUgdGhlIGZvcm1hdCB7Im9wdGlvbktleSI6Im9wdGlvblZhbHVlIiwKICAgICAgICAgICAgIm9wdGlvbktleTEiOiJvcHRpb25WYWx1ZTEiLi4ufS4gSWYgZmlsZSBpcyBZQU1MLCB0aGUgY29udGVudCBzaG91bGQKICAgICAgICAgICAgaGF2ZSB0aGUgZm9ybWF0IG9wdGlvbktleTogb3B0aW9uVmFsdWUuIFN1cHBvcnRlZCBvcHRpb25zIGNhbiBiZQogICAgICAgICAgICBkaWZmZXJlbnQgZm9yIGVhY2ggbGFuZ3VhZ2UuIFJ1biBjb25maWctaGVscCAtZyB7Z2VuZXJhdG9yIG5hbWV9CiAgICAgICAgICAgIGNvbW1hbmQgZm9yIGxhbmd1YWdlLXNwZWNpZmljIGNvbmZpZyBvcHRpb25zLgoKICAgICAgICAtLWRyeS1ydW4KICAgICAgICAgICAgVHJ5IHRoaW5ncyBvdXQgYW5kIHJlcG9ydCBvbiBwb3RlbnRpYWwgY2hhbmdlcyAod2l0aG91dCBhY3R1YWxseQogICAgICAgICAgICBtYWtpbmcgY2hhbmdlcykuCgogICAgICAgIC1lIDx0ZW1wbGF0aW5nIGVuZ2luZT4sIC0tZW5naW5lIDx0ZW1wbGF0aW5nIGVuZ2luZT4KICAgICAgICAgICAgdGVtcGxhdGluZyBlbmdpbmU6ICJoYW5kbGViYXJzIihkZWZhdWx0KSBvciAibXVzdGFjaGUiCgogICAgICAgIC0tZW5hYmxlLXBvc3QtcHJvY2Vzcy1maWxlCiAgICAgICAgICAgIEVuYWJsZSBwb3N0LXByb2Nlc3NpbmcgZmlsZSB1c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCgogICAgICAgIC1nIDxnZW5lcmF0b3IgbmFtZT4sIC0tZ2VuZXJhdG9yLW5hbWUgPGdlbmVyYXRvciBuYW1lPgogICAgICAgICAgICBnZW5lcmF0b3IgdG8gdXNlIChzZWUgbGlzdCBjb21tYW5kIGZvciBsaXN0KQoKICAgICAgICAtLWdpdC1ob3N0IDxnaXQgaG9zdD4KICAgICAgICAgICAgR2l0IGhvc3QsIGUuZy4gZ2l0bGFiLmNvbS4KCiAgICAgICAgLS1naXQtcmVwby1pZCA8Z2l0IHJlcG8gaWQ+CiAgICAgICAgICAgIEdpdCByZXBvIElELCBlLmcuIG9wZW5hcGktZ2VuZXJhdG9yLgoKICAgICAgICAtLWdpdC11c2VyLWlkIDxnaXQgdXNlciBpZD4KICAgICAgICAgICAgR2l0IHVzZXIgSUQsIGUuZy4gb3BlbmFwaWpzb25zY2hlbWF0b29scy4KCiAgICAgICAgLS1nbG9iYWwtcHJvcGVydHkgPGdsb2JhbCBwcm9wZXJ0aWVzPgogICAgICAgICAgICBzZXRzIHNwZWNpZmllZCBnbG9iYWwgcHJvcGVydGllcyAocHJldmlvdXNseSBjYWxsZWQgJ3N5c3RlbQogICAgICAgICAgICBwcm9wZXJ0aWVzJykgaW4gdGhlIGZvcm1hdCBvZiBuYW1lPXZhbHVlLG5hbWU9dmFsdWUgKG9yIG11bHRpcGxlCiAgICAgICAgICAgIG9wdGlvbnMsIGVhY2ggd2l0aCBuYW1lPXZhbHVlKQoKICAgICAgICAtLWdyb3VwLWlkIDxncm91cCBpZD4KICAgICAgICAgICAgZ3JvdXBJZCBpbiBnZW5lcmF0ZWQgcG9tLnhtbAoKICAgICAgICAtLWhpZGUtZ2VuZXJhdGlvbi10aW1lc3RhbXAKICAgICAgICAgICAgSGlkZXMgdGhlIGdlbmVyYXRpb24gdGltZXN0YW1wIHdoZW4gZmlsZXMgYXJlIGdlbmVyYXRlZC4KCiAgICAgICAgLS1odHRwLXVzZXItYWdlbnQgPGh0dHAgdXNlciBhZ2VudD4KICAgICAgICAgICAgSFRUUCB1c2VyIGFnZW50LCBlLmcuIGNvZGVnZW5fY3NoYXJwX2FwaV9jbGllbnQsIGRlZmF1bHQgdG8KICAgICAgICAgICAgJ09wZW5BUEktR2VuZXJhdG9yL3twYWNrYWdlVmVyc2lvbn0ve2xhbmd1YWdlfScKCiAgICAgICAgLWkgPHNwZWMgZmlsZT4sIC0taW5wdXQtc3BlYyA8c3BlYyBmaWxlPgogICAgICAgICAgICBsb2NhdGlvbiBvZiB0aGUgT3BlbkFQSSBzcGVjLCBhcyBVUkwgb3IgZmlsZSAocmVxdWlyZWQgaWYgbm90IGxvYWRlZAogICAgICAgICAgICB2aWEgY29uZmlnIHVzaW5nIC1jKQoKICAgICAgICAtLWlnbm9yZS1maWxlLW92ZXJyaWRlIDxpZ25vcmUgZmlsZSBvdmVycmlkZSBsb2NhdGlvbj4KICAgICAgICAgICAgU3BlY2lmaWVzIGFuIG92ZXJyaWRlIGxvY2F0aW9uIGZvciB0aGUgLm9wZW5hcGktZ2VuZXJhdG9yLWlnbm9yZQogICAgICAgICAgICBmaWxlLiBNb3N0IHVzZWZ1bCBvbiBpbml0aWFsIGdlbmVyYXRpb24uCgogICAgICAgIC0taW50cy1hbGxvd2VkLWZvci1mbG9hdC1kb3VibGUtZm9ybWF0cwogICAgICAgICAgICBJbnRlZ2VycyBhcmUgYWxsb3dlZCBpbiBmb3IgdHlwZTogbnVtYmVyIGZvcm1hdDpmbG9hdC9kb3VibGUKICAgICAgICAgICAgcGF5bG9hZHMKCiAgICAgICAgLS1pbnZva2VyLXBhY2thZ2UgPGludm9rZXIgcGFja2FnZT4KICAgICAgICAgICAgcm9vdCBwYWNrYWdlIGZvciBnZW5lcmF0ZWQgY29kZQoKICAgICAgICAtLW1pbmltYWwtdXBkYXRlCiAgICAgICAgICAgIE9ubHkgd3JpdGUgb3V0cHV0IGZpbGVzIHRoYXQgaGF2ZSBjaGFuZ2VkLgoKICAgICAgICAtLW1vZGVsLW5hbWUtcHJlZml4IDxtb2RlbCBuYW1lIHByZWZpeD4KICAgICAgICAgICAgUHJlZml4IHRoYXQgd2lsbCBiZSBwcmVwZW5kZWQgdG8gYWxsIG1vZGVsIG5hbWVzLgoKICAgICAgICAtLW1vZGVsLW5hbWUtc3VmZml4IDxtb2RlbCBuYW1lIHN1ZmZpeD4KICAgICAgICAgICAgU3VmZml4IHRoYXQgd2lsbCBiZSBhcHBlbmRlZCB0byBhbGwgbW9kZWwgbmFtZXMuCgogICAgICAgIC1vIDxvdXRwdXQgZGlyZWN0b3J5PiwgLS1vdXRwdXQgPG91dHB1dCBkaXJlY3Rvcnk+CiAgICAgICAgICAgIHdoZXJlIHRvIHdyaXRlIHRoZSBnZW5lcmF0ZWQgZmlsZXMgKGN1cnJlbnQgZGlyIGJ5IGRlZmF1bHQpCgogICAgICAgIC1wIDxhZGRpdGlvbmFsIHByb3BlcnRpZXM+LCAtLWFkZGl0aW9uYWwtcHJvcGVydGllcyA8YWRkaXRpb25hbAogICAgICAgIHByb3BlcnRpZXM+CiAgICAgICAgICAgIHNldHMgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgdGhlIG11c3RhY2hlCiAgICAgICAgICAgIHRlbXBsYXRlcyBpbiB0aGUgZm9ybWF0IG9mIG5hbWU9dmFsdWUsbmFtZT12YWx1ZS4gWW91IGNhbiBhbHNvIGhhdmUKICAgICAgICAgICAgbXVsdGlwbGUgb2NjdXJyZW5jZXMgb2YgdGhpcyBvcHRpb24uCgogICAgICAgIC0tcGFja2FnZS1uYW1lIDxwYWNrYWdlIG5hbWU+CiAgICAgICAgICAgIHBhY2thZ2UgZm9yIGdlbmVyYXRlZCBjbGFzc2VzICh3aGVyZSBzdXBwb3J0ZWQpCgogICAgICAgIC0tcmVsZWFzZS1ub3RlIDxyZWxlYXNlIG5vdGU+CiAgICAgICAgICAgIFJlbGVhc2Ugbm90ZSwgZGVmYXVsdCB0byAnTWlub3IgdXBkYXRlJy4KCiAgICAgICAgLS1yZW1vdmUtZW51bS12YWx1ZS1wcmVmaXgKICAgICAgICAgICAgUmVtb3ZlIHRoZSBjb21tb24gcHJlZml4IG9mIGVudW0gdmFsdWVzCgogICAgICAgIC0tcmVtb3ZlLW9wZXJhdGlvbi1pZC1wcmVmaXgKICAgICAgICAgICAgUmVtb3ZlIHByZWZpeCBvZiBvcGVyYXRpb25JZCwgZS5nLiBjb25maWdfZ2V0SWQgPT4gZ2V0SWQKCiAgICAgICAgLXMsIC0tc2tpcC1vdmVyd3JpdGUKICAgICAgICAgICAgc3BlY2lmaWVzIGlmIHRoZSBleGlzdGluZyBmaWxlcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIHRoZQogICAgICAgICAgICBnZW5lcmF0aW9uLgoKICAgICAgICAtLXNraXAtb3BlcmF0aW9uLWV4YW1wbGUKICAgICAgICAgICAgU2tpcCBleGFtcGxlcyBkZWZpbmVkIGluIG9wZXJhdGlvbnMgdG8gYXZvaWQgb3V0IG9mIG1lbW9yeSBlcnJvcnMuCgogICAgICAgIC0tc2tpcC12YWxpZGF0ZS1zcGVjCiAgICAgICAgICAgIFNraXBzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHZhbGlkYXRpbmcgYW4gaW5wdXQgc3BlY2lmaWNhdGlvbi4KCiAgICAgICAgLS1zdHJpY3Qtc3BlYyA8dHJ1ZS9mYWxzZSBzdHJpY3QgYmVoYXZpb3I+CiAgICAgICAgICAgICdNVVNUJyBhbmQgJ1NIQUxMJyB3b3JkaW5nIGluIE9wZW5BUEkgc3BlYyBpcyBzdHJpY3RseSBhZGhlcmVkIHRvLgogICAgICAgICAgICBlLmcuIHdoZW4gZmFsc2UsIG5vIGZpeGVzIHdpbGwgYmUgYXBwbGllZCB0byBkb2N1bWVudHMgd2hpY2ggcGFzcwogICAgICAgICAgICB2YWxpZGF0aW9uIGJ1dCBkb24ndCBmb2xsb3cgdGhlIHNwZWMuCgogICAgICAgIC10IDx0ZW1wbGF0ZSBkaXJlY3Rvcnk+LCAtLXRlbXBsYXRlLWRpciA8dGVtcGxhdGUgZGlyZWN0b3J5PgogICAgICAgICAgICBmb2xkZXIgY29udGFpbmluZyB0aGUgdGVtcGxhdGUgZmlsZXMKCiAgICAgICAgLXYsIC0tdmVyYm9zZQogICAgICAgICAgICB2ZXJib3NlIG1vZGUKYGBgCgo8L2RldGFpbHM+CgpZb3UgY2FuIHRoZW4gdXNlIHRoZSBhdXRvLWdlbmVyYXRlZCBjbGllbnQuIFRoZSBSRUFETUUubWQgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKT3RoZXIgZ2VuZXJhdG9ycyBoYXZlIFtzYW1wbGVzXShzYW1wbGVzKSB0b28uCgojIyMgQ3VzdG9taXphdGlvbgoKUGxlYXNlIHJlZmVyIHRvIFtjdXN0b21pemF0aW9uLm1kXShkb2NzL2N1c3RvbWl6YXRpb24ubWQpIG9uIGhvdyB0byBjdXN0b21pemUgdGhlIG91dHB1dCAoZS5nLiBwYWNrYWdlIG5hbWUsIHZlcnNpb24pCgojIyMgV29ya2Zsb3cgSW50ZWdyYXRpb24KClBsZWFzZSByZWZlciB0byBbaW50ZWdyYXRpb24ubWRdKGRvY3MvaW50ZWdyYXRpb24ubWQpIG9uIGhvdyB0byBpbnRlZ3JhdGUgT3BlbkFQSSBnZW5lcmF0b3Igd2l0aCBNYXZlbiwgR3JhZGxlLCAgR2l0aHViIGFuZCBDSS9DRC4KCiMjIyBMaWNlbnNlIEluZm9ybWF0aW9uCgpUaGUgT3BlbkFQSSBKU09OIFNjaGVtYSBHZW5lcmF0b3IgcHJvamVjdCBpcyBpbnRlbmRlZCBhcyBhIGJlbmVmaXQgZm9yIHVzZXJzIG9mIHRoZSBPcGVuIEFQSSBTcGVjaWZpY2F0aW9uLiAgVGhlIHByb2plY3QgaXRzZWxmIGhhcyB0aGUgW0xpY2Vuc2VdKCNsaWNlbnNlKSBhcyBzcGVjaWZpZWQuIEluIGFkZGl0aW9uLCBwbGVhc2UgdW5kZXJzdGFuZCB0aGUgZm9sbG93aW5nIHBvaW50czoKCiogVGhlIHRlbXBsYXRlcyBpbmNsdWRlZCB3aXRoIHRoaXMgcHJvamVjdCBhcmUgc3ViamVjdCB0byB0aGUgW0xpY2Vuc2VdKCNsaWNlbnNlKS4KKiBHZW5lcmF0ZWQgY29kZSBpcyBpbnRlbnRpb25hbGx5IF9ub3RfIHN1YmplY3QgdG8gdGhlIHBhcmVudCBwcm9qZWN0IGxpY2Vuc2UKCldoZW4gY29kZSBpcyBnZW5lcmF0ZWQgZnJvbSB0aGlzIHByb2plY3QsIGl0IHNoYWxsIGJlIGNvbnNpZGVyZWQgKipBUyBJUyoqIGFuZCBvd25lZCBieSB0aGUgdXNlciBvZiB0aGUgc29mdHdhcmUuICBUaGVyZSBhcmUgbm8gd2FycmFudGllcy0tZXhwcmVzc2VkIG9yIGltcGxpZWQtLWZvciBnZW5lcmF0ZWQgY29kZS4gIFlvdSBjYW4gZG8gd2hhdCB5b3Ugd2lzaCB3aXRoIGl0LCBhbmQgb25jZSBnZW5lcmF0ZWQsIHRoZSBjb2RlIGlzIHlvdXIgcmVzcG9uc2liaWxpdHkgYW5kIHN1YmplY3QgdG8gdGhlIGxpY2Vuc2luZyB0ZXJtcyB0aGF0IHlvdSBkZWVtIGFwcHJvcHJpYXRlLgoKIyMgQ29tcGFuaWVzL1Byb2plY3RzIHVzaW5nIE9wZW5BUEkgSlNPTiBTY2hlbWEgR2VuZXJhdG9yCgpbR2l0aHViIGNvZGUgc2VhcmNoXShodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP3E9RGF0ZVNjaGVtYStEYXRlVGltZVNjaGVtYStsYW5ndWFnZSUzQVB5dGhvbitwYXRoJTNBKiolMkZzY2hlbWFzLnB5JnR5cGU9Y29kZSkKCiMjIEFib3V0IFVzCgpUaGlzIHJlcG8gaXMgYmFzZWQgb24gdjYuMi4wIG9mIE9wZW5BUEkgR2VuZXJhdG9yLiBUaGlzIHByb2plY3QgZm9jdXNlcyBvbiBtYWtpbmcgdGhlIG91dHB1dCAxMDAlIGNvbXBsaWFudCB3aXRoIEpTT04gc2NoZW1hIGFzIHBhcnQgb2YgdGhlIE9wZW5BUEkgMy4xIHNwZWNpZmljYXRpb24gd2l0aCBhIGZvY3VzIG9uIGNvbXBsZXggY2FzZXMgKHRvcC1kb3duIGFwcHJvYWNoKS4gVGhlIGdvYWwgaXMgdG8gZnVsbHkgc3VwcG9ydCBldmVyeXRoaW5nIGRlZmluZWQgaW4gSlNPTiBzY2hlbWEgc28gdGhhdCBkZXZlbG9wZXJzIGNhbiBsZXZlcmFnZSBKU09OIHNjaGVtYSBhcyB3ZWxsIGFzIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBpbiB0aGVpciBBUEkgZGVzaWduLiBCdWlsZGluZyBoZXJlIGFsbG93cyBmb3IgbW9yZSByYXBpZCBwcm9ncmVzcyBzdXBwb3J0aW5nIG5ldyBmZWF0dXJlcyBpbiBPcGVuQVBJIDMuWCB3aXRob3V0IGhhdmluZyB0byBzdXBwb3J0IG1hbnkgb2xkZXIgZ2VuZXJhdG9ycyB3aGljaCBkb24ndCB1c2UgdGhlIG5ldyBmZWF0dXJlcy4KCiMjIyBIaXN0b3J5IG9mIE9wZW5BUEkgSlNPTiBTY2hlbWEgR2VuZXJhdG9yCgpPcGVuQVBJIEpTT04gU2NoZW1hIEdlbmVyYXRvciBpcyBiYXNlZCBvbiBPcGVuQVBJIEdlbmVyYXRvciB2Ni4yLjAuClRoZSBwcm9qZWN0IHdhcyBjcmVhdGVkIGhlcmUgYmVjYXVzZSB0aGUgb3BlbmFwaS1nZW5lcmF0b3IgY29yZSB0ZWFtIHJlcXVpcmVkIHRoZSByZW1vdmFsIG9mIHRoZSBweXRob24gZ2VuZXJhdG9yIApmcm9tIHRoZWlyIHByb2plY3QuIFRoZSBhdXRob3Igb2YgdGhlIHB5dGhvbiBnZW5lcmF0b3IgKEBzcGFjZXRoZXIpIHByZWZlcnJlZCB0byBrZWVwIGJ1aWxkaW5nIAppbiB0aGUgb3BlbmFwaS1nZW5lcmF0b3IgcmVwbywgYnV0IGNvcmUgdGVhbSByZWZ1c2VkIHRvIGNvbnNpZGVyIGtlZXBpbmcgcHl0aG9uIGluIG9wZW5hcGktZ2VuZXJhdG9yLgpCZWxvdyBpcyBhIHRpbWVsaW5lIG9mIHRob3NlIGV2ZW50cyBhbmQgc29tZSBvZiB0aGVpciByZWFzb25zOgoKIyMjIyBUaW1lbGluZSBvZiBweXRob24gZ2VuZXJhdG9yIGRldmVsb3BtZW50Ci0gSmFuIDQsIDIwMjEgLSBbb3BlbmFwaS1nZW5lcmF0b3IgdjUuNC4wOiBweXRob24tZXhwZXJpbWVudGFsIGNyZWF0ZWRdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvcHVsbC84MzI1KS4gVGhpcyBnZW5lcmF0b3IgaXMgdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudCBweXRob24gZ2VuZXJhdG9yIGluIHRoaXMgcmVwby4KLSBTZXB0IDE5LCAyMDIyIC0gbWVldGluZyB0byBkaXNjdXNzIG9wZW5hcGkgMy4xLjAgKyBweXRob24gY2xpZW50LCByZW1vdmFsIG9mIHB5dGhvbiBjbGllbnQgbWVudGlvbmVkIGFzIGFuIG9wdGlvbiwgbm90IGEgcmVxdWlyZW1lbnQKLSBTZXB0IDIyLCAyMDIyIC0gW29wZW5hcGktZ2VuZXJhdG9yIHY2LjIuMDogbmV3IHB5dGhvbi1leHBlcmltZW50YWwgc3dpdGNoZWQgaW4gYXMgdGhlIHByaW1hcnkgcHl0aG9uIGNsaWVudF0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9wdWxsLzEzNTAxKQotIFNlcHQgMjMsIDIwMjIgLSBjb21tdW5pY2F0aW9uIGNsYXJpZmllZCB0aGF0IHJlbW92YWwgb2YgdGhlIHB5dGhvbiBnZW5lcmF0b3IgaXMgcmVxdWlyZWQKLSBTZXB0IDI0LCAyMDIyIC0gW29wZW5hcGktZ2VuZXJhdG9yIHY2LjIuMDogcmVtb3ZhbCBvZiBweXRob24gZ2VuZXJhdG9yIG1lbnRpb25lZCBpbiB2Ni4yLjAgcmVsZWFzZV0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcy90YWcvdjYuMi4wKQotIFNlcHQgMjYsIDIwMjIgLSBbZGlmZmVyZW50IG5ldyByZXBvIG1hZGUgZm9yIG9wZW5hcGkganNvbiBzY2hlbWEgZ2VuZXJhdG9yIGluIE9wZW5hcGlUb29scyBvcmddKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1qc29uLXNjaGVtYS1nZW5lcmF0b3IpCi0gT2N0IDIsIDIwMjIgLSBbbW92ZWQgcHJvamVjdCB0byB0aGlzIHJlcG9dKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWpzb24tc2NoZW1hLXRvb2xzL29wZW5hcGktanNvbi1zY2hlbWEtZ2VuZXJhdG9yKSBJIG1vdmVkIHRoZSBnZW5lcmF0b3IgdG8gdGhlIG5ldyByZXBvIGJlY2F1c2UgZnVsbCBvd25lcnNoaXAgcHJpdmxlZGdlcyB3ZXJlIG5vdCBncmFudGVkIG9uIHRoZSBuZXcgcmVwbyB0byBtZSwgd2hpY2ggaGFkIGJlZW4gcHJvbWlzZWQsIGFuZCBiZWNhdXNlIEkgd2FzIG5vdCBnaXZlbiBwcml2bGVkZ2VzIHRoYXQgYWxsb3dlZCBkb2NrZXIgZGlzdHJpYnV0aW9uIGZyb20gdGhlIG5ldyByZXBvCi0gTWF5IDE0LCAyMDIzIC0gW29wZW5hcGktZ2VuZXJhdG9yIHY3LjAuMDogcHl0aG9uIGdlbmVyYXRvciByZW1vdmVkLCBhIGRpZmZmZXJlbnQgZ2VuZXJhdG9yIGJlY29tZXMgdGhlIG9ubHkgcHl0aG9uIGNsaWVudF0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9wdWxsLzE1NDg2KQoKCiMjIyMgUmVtb3ZhbCBSZWFzb25zCi0gQ29yZSB0ZWFtIGFuZCBAd2luZzMyOCBmZWx0IGFkb3B0aW9uIG9mIHRoZSBweXRob24gY2xpZW50IHdhcyByZWR1Y2VkIGZyb20gNS4wLjAgYW5kIG9ud2FyZCBkdWUgdG8gcHl0aG9uLXByaW9yICsgcHl0aG9uIGdlbmVyYXRvcnMKLSBTb21lIHB5dGhvbiB1c2VycyBpbiB0aGUgY29tbXVuaXR5IGRpZCBub3QgcHJlZmVyIHRoZSBuZXcgcHl0aG9uIGNvZGUKLSBUaGUgZmFjdCB0aGF0IG90aGVyIHVzZXJzICsgY29tcGFuaWVzIGFyZSB1c2luZyBpdCBkb2VzIG5vdCB3YXJyYW50IGtlZXBpbmcgaXQgaW4gdGhlIHJlcG8KLSBUaGUgZmFjdCB0aGF0IGl0IGlzIG1vcmUgZnVsbHkgcGFzc2luZyBqc29uIHNjaGVtYSB0ZXN0cyAoaW5jbHVkaW5nIHRoZSBmZWF0dXJlIGtleXdvcmRzIG9uZU9mL2FueU9mL2FsbE9mL2FkZGl0aW9uYWxQcm9wZXJ0aWVzKSBkb2VzIG5vdCB3YXJyYW50IGtlZXBpbmcgaXQgaW4gdGhlIHJlcG8KLSBUaGUgb3BlbmFwaS1nZW5lcmF0b3IgY29yZSB0ZWFtIHJlZnVzZWQgdG8gY29uc2lkZXIgdGhlIG9wdGlvbiBvZiBrZWVwaW5nIHRoZSBweXRob24gZ2VuZXJhdG9yIGFzIGFub3RoZXIgZ2VuZXJhdG9yIG9wdGlvbiBpbiB0aGVpciByZXBvLCBhbmQgYnVpbGRpbmcgYW5vdGhlciBweXRob24gZ2VuZXJhdG9yIHRoYXQgbG9va3MgbW9yZSBjb252ZW50aW9uYWwgYW5kIG1ha2luZyB0aGF0IGdlbmVyYXRvciBwcmltYXJ5CgojIyBMaWNlbnNlCgotLS0tLS0tCkNvcHlyaWdodCAyMDIzIE9wZW5BUEktSnNvbi1TY2hlbWEtR2VuZXJhdG9yIENvbnRyaWJ1dG9ycwpDb3B5cmlnaHQgMjAxOCBPcGVuQVBJLUdlbmVyYXRvciBDb250cmlidXRvcnMgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkKQ29weXJpZ2h0IDIwMTggU21hcnRCZWFyIFNvZnR3YXJlCgpMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgpZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgW2FwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBdKGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKLS0tCg== readmeEtag: '"b0d2141847afd7cc7f88872037794345f545f8da"' readmeLastModified: Sat, 15 Jun 2024 18:18:55 GMT 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: '2025-12-31T04:39:24Z' language: Java archived: true stars: 171 watchers: 4 forks: 14 owner: openapi-json-schema-tools logo: https://avatars.githubusercontent.com/u/114849992?v=4 license: Apache-2.0 repoEtag: '"99bebdb488f45f7f8d567cf876ba6252d192a1dd9e89614ee1c8c270311a43a2"' repoLastModified: Wed, 31 Dec 2025 04:39:24 GMT category: - Code Generators - SDK - Parsers foundInMaster: true name: OpenAPI JSON Schema Generator link: https://github.com/openapi-json-schema-tools/openapi-json-schema-generator language: - Python - Java source_description: >- A template-driven engine to generate API client code + documentation by parsing your OpenAPI Description v2: false v3_1_link: >- https://github.com/openapi-json-schema-tools/openapi-json-schema-generator/issues/131 v3_1: true - source: - https://openapi.tools/ - openapi3 tags name: Kiota Api Client Generator category: - Code Generators - SDK link: https://aka.ms/kiota/docs language: C# repository: https://github.com/microsoft/kiota source_description: >- Kiota is a cross platform API Client code generator that is small, fast, and optimized for API consumers to find APIs and generate client code for just the parts of the API that they need. One tool, for any OpenAPI described API, that delivers a consistent client experience in multiple languages. v2: true v3: true v3_1: false id: c94b9d43825b39f99511edfe70e459ec repositoryMetadata: base64Readme: >- IyBQcm9qZWN0CgpbIVtEb3RuZXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEvYWN0aW9ucy93b3JrZmxvd3MvZG90bmV0LnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhL2FjdGlvbnMvd29ya2Zsb3dzL2RvdG5ldC55bWwpIFshW0NvZGVRTF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9hY3Rpb25zL3dvcmtmbG93cy9jb2RlcWwtYW5hbHlzaXMueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEvYWN0aW9ucy93b3JrZmxvd3MvY29kZXFsLWFuYWx5c2lzLnltbCkgWyFbQ292ZXJhZ2VdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PW1pY3Jvc29mdF9raW90YSZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPW1pY3Jvc29mdF9raW90YSkgWyFbU29uYXJjbG91ZCBTdGF0dXNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PW1pY3Jvc29mdF9raW90YSZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1taWNyb3NvZnRfa2lvdGEpCgpLaW90YSBpcyBhIGNvbW1hbmQgbGluZSB0b29sIGZvciBnZW5lcmF0aW5nIGFuIEFQSSBjbGllbnQgdG8gY2FsbCBhbnkgT3BlbkFQSSBkZXNjcmliZWQgQVBJIHlvdSBhcmUgaW50ZXJlc3RlZCBpbi4gVGhlIGdvYWwgaXMgdG8gZWxpbWluYXRlIHRoZSBuZWVkIHRvIHRha2UgYSBkZXBlbmRlbmN5IG9uIGEgZGlmZmVyZW50IEFQSSBTREsgZm9yIGV2ZXJ5IEFQSSB0aGF0IHlvdSBuZWVkIHRvIGNhbGwuIEtpb3RhIEFQSSBjbGllbnRzIHByb3ZpZGUgYSBzdHJvbmdseSB0eXBlZCBleHBlcmllbmNlIHdpdGggYWxsIHRoZSBmZWF0dXJlcyB5b3UgZXhwZWN0IGZyb20gYSBoaWdoIHF1YWxpdHkgQVBJIFNESywgYnV0IHdpdGhvdXQgaGF2aW5nIHRvIGxlYXJuIGEgbmV3IGxpYnJhcnkgZm9yIGV2ZXJ5IEhUVFAgQVBJLgoKVGhpcyBsaWJyYXJ5IGJ1aWxkcyBvbiB0b3Agb2YgdGhlIFtNaWNyb3NvZnQuT3BlbkFQSS5ORVRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvb3BlbmFwaS5uZXQpIGxpYnJhcnkgdG8gZW5zdXJlIGNvbXByZWhlbnNpdmUgc3VwcG9ydCBmb3IgQVBJcyB0aGF0IHVzZSBPcGVuQVBJIGRlc2NyaXB0aW9ucy4gT25lIG9mIHRoZSBnb2FscyBvZiB0aGUgcHJvamVjdCBpcyB0byBwcm92aWRlIHRoZSBiZXN0IGNvZGUgZ2VuZXJhdG9yIHN1cHBvcnQgcG9zc2libGUgZm9yIE9wZW5BUEkgYW5kIEpTT04gU2NoZW1hIGZlYXR1cmVzLiBUaGUgW2NvbmNlcHR1YWwgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL29wZW5hcGkva2lvdGEpIGRlc2NyaWJlcyBob3cga2lvdGEgd29ya3MgYW5kIHRoZSBoaWdoIGxldmVsIGNvbmNlcHRzLCB0aGlzIHJlYWRtZSBkb2N1bWVudHMgaG93IHRvIGdldCBzdGFydGVkIHdpdGggS2lvdGEuCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCiMjIyBHZW5lcmF0aW5nIFNES3MKCjEuIEluc3RhbGwgcmVxdWlyZWQgdG9vbHMgYW5kIGRlcGVuZGVuY2llcy4gKHJlZmVyIHRvIHRoZSBbU3VwcG9ydGVkIExhbmd1YWdlc10oI3N1cHBvcnRlZC1sYW5ndWFnZXMpIHRhYmxlIHVuZGVyIHRoZSAqKlJlcXVpcmVkIHRvb2xzICYgZGVwZW5kZW5jaWVzKiogY29sdW1uKQoxLiBHZXQgS2lvdGEgdXNpbmcgb25lIG9mIHRoZSBbYXZhaWxhYmxlIG9wdGlvbnNdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL2luc3RhbGwpLgoxLiBHZW5lcmF0ZSB5b3VyIEFQSSBjbGllbnQsIGNoZWNrb3V0IHRoZSBbUGFyYW1ldGVycyByZWZlcmVuY2VdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL3VzaW5nKSBmb3IgdGhlIGRpZmZlcmVudCBvcHRpb25zLgoxLiBTdGFydCBjYWxsaW5nIHlvdXIgQVBJIHVzaW5nIHlvdXIgZmx1ZW50IEFQSSBDbGllbnQuCgojIyMgU3VwcG9ydGVkIGxhbmd1YWdlcwoKVGhlIGZvbGxvd2luZyB0YWJsZSBwcm92aWRlcyBhbiBvdmVydmlldyBvZiB0aGUgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBieSBLaW90YSBhbmQgdGhlIHByb2dyZXNzIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGlmZmVyZW50IGNvbXBvbmVudHMuCgp8IExhbmd1YWdlIHwgR2VuZXJhdGlvbiB8IEFic3RyYWN0aW9ucyAgICAgICAgICAgICAgICAgICB8IFNlcmlhbGl6YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXV0aGVudGljYXRpb24gfCBIVFRQIHwgUmVxdWlyZWQgdG9vbHMgJiBkZXBlbmRlbmNpZXMgfAp8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLSB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgLS0tLS0tLS0tLS0tLS0gfCAtLS0tIHwgLS0tLS0tLS0tLS0tLS0gfAp8IENTaGFycCB8IOKclCB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtZG90bmV0L3RyZWUvbWFpbi9zcmMvYWJzdHJhY3Rpb25zKSAgICAgfCBbRk9STV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1kb3RuZXQvdHJlZS9tYWluL3NyYy9zZXJpYWxpemF0aW9uL2Zvcm0pLCBbSlNPTl0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1kb3RuZXQvdHJlZS9tYWluL3NyYy9zZXJpYWxpemF0aW9uL2pzb24pLCBbTVVMVElQQVJUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWRvdG5ldC90cmVlL21haW4vc3JjL3NlcmlhbGl6YXRpb24vbXVsdGlwYXJ0KSwgW1RFWFRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtZG90bmV0L3RyZWUvbWFpbi9zcmMvc2VyaWFsaXphdGlvbi90ZXh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtBbm9ueW1vdXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtZG90bmV0L2Jsb2IvbWFpbi9zcmMvYWJzdHJhY3Rpb25zL2F1dGhlbnRpY2F0aW9uL0Fub255bW91c0F1dGhlbnRpY2F0aW9uUHJvdmlkZXIuY3MpLCBbQVBJIEtleV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1kb3RuZXQvYmxvYi9tYWluL3NyYy9hYnN0cmFjdGlvbnMvYXV0aGVudGljYXRpb24vQXBpS2V5QXV0aGVudGljYXRpb25Qcm92aWRlci5jcyksIFtBenVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1kb3RuZXQvdHJlZS9tYWluL3NyYy9hdXRoZW50aWNhdGlvbi9henVyZSkgfCBb4pyUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWRvdG5ldC90cmVlL21haW4vc3JjL2h0dHAvaHR0cENsaWVudCkgfCBbbGlua10oaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL29wZW5hcGkva2lvdGEvcXVpY2tzdGFydHMvZG90bmV0KSB8CnwgRGFydCB8IFvwn5ug77iPXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWRhcnQpIHwgW/Cfm6DvuI9dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtZGFydC90cmVlL21haW4vcGFja2FnZXMvbWljcm9zb2Z0X2tpb3RhX2Fic3RyYWN0aW9ucykgfCBb8J+boO+4jyBGT1JNXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWRhcnQvdHJlZS9tYWluL3BhY2thZ2VzL21pY3Jvc29mdF9raW90YV9zZXJpYWxpemF0aW9uX2Zvcm0pLCBb8J+boO+4jyBKU09OXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWRhcnQvdHJlZS9tYWluL3BhY2thZ2VzL21pY3Jvc29mdF9raW90YV9zZXJpYWxpemF0aW9uX2pzb24pLCBb8J+boO+4jyBNVUxUSVBBUlRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtZGFydC90cmVlL21haW4vcGFja2FnZXMvbWljcm9zb2Z0X2tpb3RhX3NlcmlhbGl6YXRpb25fbXVsdGlwYXJ0KSwgW/Cfm6DvuI8gVEVYVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1kYXJ0L3RyZWUvbWFpbi9wYWNrYWdlcy9taWNyb3NvZnRfa2lvdGFfc2VyaWFsaXphdGlvbl90ZXh0KSB8IFvwn5ug77iPIEFub255bW91c10oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1kYXJ0L2Jsb2IvbWFpbi9wYWNrYWdlcy9taWNyb3NvZnRfa2lvdGFfYWJzdHJhY3Rpb25zL2xpYi9zcmMvYXV0aGVudGljYXRpb24vYW5vbnltb3VzX2F1dGhlbnRpY2F0aW9uX3Byb3ZpZGVyLmRhcnQpLCBb8J+boO+4jyBBUEkgS2V5XShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWRhcnQvYmxvYi9tYWluL3BhY2thZ2VzL21pY3Jvc29mdF9raW90YV9hYnN0cmFjdGlvbnMvbGliL3NyYy9hdXRoZW50aWNhdGlvbi9hcGlfa2V5X2F1dGhlbnRpY2F0aW9uX3Byb3ZpZGVyLmRhcnQpIHwgW/Cfm6DvuI9dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtZGFydC90cmVlL21haW4vcGFja2FnZXMvbWljcm9zb2Z0X2tpb3RhX2h0dHApIHwgW2xpbmtdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9vcGVuYXBpL2tpb3RhL3F1aWNrc3RhcnRzL2RhcnQpIHwKfCBHbyB8IOKclCB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYWJzdHJhY3Rpb25zLWdvKSAgICAgICAgIHwgW0ZPUk1dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1mb3JtLWdvKSwgW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1qc29uLWdvKSwgW01VTFRJUEFSVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1zZXJpYWxpemF0aW9uLW11bHRpcGFydC1nbyksIFtURVhUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXNlcmlhbGl6YXRpb24tdGV4dC1nbykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbQW5vbnltb3VzXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWFic3RyYWN0aW9ucy1nby9ibG9iL21haW4vYXV0aGVudGljYXRpb24vYW5vbnltb3VzX2F1dGhlbnRpY2F0aW9uX3Byb3ZpZGVyLmdvKSwgW0FQSSBLZXldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYWJzdHJhY3Rpb25zLWdvL2Jsb2IvbWFpbi9hdXRoZW50aWNhdGlvbi9hcGlfa2V5X2F1dGhlbnRpY2F0aW9uX3Byb3ZpZGVyLmdvKSwgW0F6dXJlXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWF1dGhlbnRpY2F0aW9uLWF6dXJlLWdvLykgfCBb4pyUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWh0dHAtZ28vKSB8IFtsaW5rXShodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vb3BlbmFwaS9raW90YS9xdWlja3N0YXJ0cy9nbykgfAp8IEphdmEgfCDinJQgfCBb4pyUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWphdmEvdHJlZS9tYWluL2NvbXBvbmVudHMvYWJzdHJhY3Rpb25zKSAgICAgICB8IFtGT1JNXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWphdmEvdHJlZS9tYWluL2NvbXBvbmVudHMvc2VyaWFsaXphdGlvbi9mb3JtKSwgW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtamF2YS90cmVlL21haW4vY29tcG9uZW50cy9zZXJpYWxpemF0aW9uL2pzb24pLCBbTVVMVElQQVJUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWphdmEvdHJlZS9tYWluL2NvbXBvbmVudHMvc2VyaWFsaXphdGlvbi9tdWx0aXBhcnQpLCBbVEVYVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1qYXZhL3RyZWUvbWFpbi9jb21wb25lbnRzL3NlcmlhbGl6YXRpb24vdGV4dCkgICAgICAgICAgICAgICAgIHwgW0Fub255bW91c10oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1qYXZhL2Jsb2IvbWFpbi9jb21wb25lbnRzL2Fic3RyYWN0aW9ucy9zcmMvbWFpbi9qYXZhL2NvbS9taWNyb3NvZnQva2lvdGEvYXV0aGVudGljYXRpb24vQW5vbnltb3VzQXV0aGVudGljYXRpb25Qcm92aWRlci5qYXZhKSwgW0FQSSBLZXldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtamF2YS9ibG9iL21haW4vY29tcG9uZW50cy9hYnN0cmFjdGlvbnMvc3JjL21haW4vamF2YS9jb20vbWljcm9zb2Z0L2tpb3RhL2F1dGhlbnRpY2F0aW9uL0FwaUtleUF1dGhlbnRpY2F0aW9uUHJvdmlkZXIuamF2YSksIFtBenVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1qYXZhL3RyZWUvbWFpbi9jb21wb25lbnRzL2F1dGhlbnRpY2F0aW9uL2F6dXJlKSB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtamF2YS90cmVlL21haW4vY29tcG9uZW50cy9odHRwL29rSHR0cCkgfCBbbGlua10oaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL29wZW5hcGkva2lvdGEvcXVpY2tzdGFydHMvamF2YSkgfAp8IFBIUCB8IOKclCB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYWJzdHJhY3Rpb25zLXBocCkgICAgICAgICAgfCBbSlNPTl0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1zZXJpYWxpemF0aW9uLWpzb24tcGhwKSwgW0ZPUk1dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1mb3JtLXBocCksIFtNVUxUSVBBUlRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1tdWx0aXBhcnQtcGhwKSwgW1RFWFRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi10ZXh0LXBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtBbm9ueW1vdXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYWJzdHJhY3Rpb25zLXBocC9ibG9iL21haW4vc3JjL0F1dGhlbnRpY2F0aW9uL0Fub255bW91c0F1dGhlbnRpY2F0aW9uUHJvdmlkZXIucGhwKSwgW+KclO+4jyBQSFAgTGVhZ3VlXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWF1dGhlbnRpY2F0aW9uLXBocGxlYWd1ZS1waHApIHwgW+KclF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1odHRwLWd1enpsZS1waHApIHwgW2xpbmtdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL3F1aWNrc3RhcnRzL3BocCkgfAp8IFB5dGhvbiB8IOKclCB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYWJzdHJhY3Rpb25zLXB5dGhvbikgIHwgW0ZPUk1dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1mb3JtLXB5dGhvbiksIFtKU09OXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXNlcmlhbGl6YXRpb24tanNvbi1weXRob24pLCBbTVVMVElQQVJUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXNlcmlhbGl6YXRpb24tbXVsdGlwYXJ0LXB5dGhvbiksIFtURVhUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXNlcmlhbGl6YXRpb24tdGV4dC1weXRob24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbQW5vbnltb3VzXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWFic3RyYWN0aW9ucy1weXRob24vYmxvYi9tYWluL2tpb3RhX2Fic3RyYWN0aW9ucy9hdXRoZW50aWNhdGlvbi9hbm9ueW1vdXNfYXV0aGVudGljYXRpb25fcHJvdmlkZXIucHkpLCBbQXp1cmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYXV0aGVudGljYXRpb24tYXp1cmUtcHl0aG9uKSB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtaHR0cC1weXRob24pIHwgW2xpbmtdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL3F1aWNrc3RhcnRzL3B5dGhvbikgfAp8IFJ1YnkgfCDwn5ug77iPIHwgW/Cfm6DvuI9dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYWJzdHJhY3Rpb25zLXJ1YnkpICAgICAgIHwgW+KdjCBGT1JNXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhL2lzc3Vlcy8yMDc3KSwgW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1qc29uLXJ1YnkpLCBb4p2MIE1VTFRJUEFSVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9pc3N1ZXMvMzAzMiksIFvinYwgVEVYVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9pc3N1ZXMvMTA0OSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbQW5vbnltb3VzXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWFic3RyYWN0aW9ucy1ydWJ5L2Jsb2IvbWFpbi9saWIvbWljcm9zb2Z0X2tpb3RhX2Fic3RyYWN0aW9ucy9hdXRoZW50aWNhdGlvbi9hbm9ueW1vdXNfYXV0aGVudGljYXRpb25fcHJvdmlkZXIucmIpLCBbT0F1dGgyXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWF1dGhlbnRpY2F0aW9uLW9hdXRoLXJ1YnkpIHwgW/Cfm6DvuI9dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtaHR0cC1ydWJ5KXwgIHwKfCBUeXBlU2NyaXB0L0phdmFTY3JpcHQgfCDwn5ug77iPIHwgW/Cfm6DvuI9dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtdHlwZXNjcmlwdC90cmVlL21haW4vcGFja2FnZXMvYWJzdHJhY3Rpb25zKSB8IFtGT1JNXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXR5cGVzY3JpcHQvdHJlZS9tYWluL3BhY2thZ2VzL3NlcmlhbGl6YXRpb24vZm9ybSksIFtKU09OXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXR5cGVzY3JpcHQvdHJlZS9tYWluL3BhY2thZ2VzL3NlcmlhbGl6YXRpb24vanNvbiksIFtNVUxUSVBBUlRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtdHlwZXNjcmlwdC90cmVlL21haW4vcGFja2FnZXMvc2VyaWFsaXphdGlvbi9tdWx0aXBhcnQpLCBbVEVYVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS10eXBlc2NyaXB0L3RyZWUvbWFpbi9wYWNrYWdlcy9zZXJpYWxpemF0aW9uL3RleHQpIHwgW0Fub255bW91c10oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS10eXBlc2NyaXB0L2Jsb2IvbWFpbi9wYWNrYWdlcy9hYnN0cmFjdGlvbnMvc3JjL2F1dGhlbnRpY2F0aW9uL2Fub255bW91c0F1dGhlbnRpY2F0aW9uUHJvdmlkZXIudHMpLCBbQVBJIEtleV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS10eXBlc2NyaXB0L2Jsb2IvbWFpbi9wYWNrYWdlcy9hYnN0cmFjdGlvbnMvc3JjL2F1dGhlbnRpY2F0aW9uL2FwaUtleUF1dGhlbnRpY2F0aW9uUHJvdmlkZXIudHMpLCBbQXp1cmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtdHlwZXNjcmlwdC90cmVlL21haW4vcGFja2FnZXMvYXV0aGVudGljYXRpb24vYXp1cmUpLCBbU1BGeF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS10eXBlc2NyaXB0L3RyZWUvbWFpbi9wYWNrYWdlcy9hdXRoZW50aWNhdGlvbi9zcGZ4KSB8IFvwn5ug77iPXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXR5cGVzY3JpcHQvdHJlZS9tYWluL3BhY2thZ2VzL2h0dHAvZmV0Y2gpIHwgW2xpbmtdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL3F1aWNrc3RhcnRzL3R5cGVzY3JpcHQpIHwKCj4gTGVnZW5kOiDinJQgLT4gc3RhYmxlLCDwn5ug77iPIC0+IGluIHByZXZpZXcsIOKdjCAtPiBub3Qgc3RhcnRlZCwg4pa2IC0+IGluIHByb2dyZXNzLgoKIyMjIFBhcmFtZXRlcnMgcmVmZXJlbmNlCgpQYXJhbWV0ZXJzIGFyZSBkb2N1bWVudGVkIFtoZXJlXShodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vb3BlbmFwaS9raW90YS91c2luZykuCgojIyMgRGVidWdnaW5nCgpNYWtlIHN1cmUgeW91IFtpbnN0YWxsIHRoZSBwcmUtcmVxdWlzaXRlcyBmaXJzdF0oQ09OVFJJQlVUSU5HLm1kKS4gSWYgeW91IGFyZSB1c2luZyBWaXN1YWwgU3R1ZGlvIENvZGUgYXMgeW91ciBJREUsIHRoZSAqKmxhdW5jaC5qc29uKiogZmlsZSBhbHJlYWR5IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIHRvIHJ1biBLaW90YS4gQnkgZGVmYXVsdCB0aGlzIGNvbmZpZ3VyYXRpb24gd2lsbCB1c2UgdGhlIGBvcGVuQXBpRG9jcy92MS4wL01haWwueW1sYCB1bmRlciB0aGUgW1Bvd2VyU2hlbGwgcmVwb3NpdG9yeV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdGdyYXBoL21zZ3JhcGgtc2RrLXBvd2Vyc2hlbGwpIGFzIHRoZSBPcGVuQVBJIHRvIGdlbmVyYXRlIGFuIFNESyBmb3IuIEJ5IGRlZmF1bHQgdGhpcyBjb25maWd1cmF0aW9uIHdpbGwgb3V0cHV0IHRoZSBnZW5lcmF0ZWQgZmlsZXMgaW4gYSBncmFwaGRvdG5ldHY0fGdyYXBoamF2YXY0fGdyYXBodHlwZXNjcmlwdHY0IGZvbGRlciBsb2NhdGVkIGluIHRoZSBwYXJlbnQgZm9sZGVyIHRoaXMgcmVwb3NpdG9yeSBpcyBjbG9uZWQgaW4uCgpTZWxlY3RpbmcgdGhlIGxhbmd1YWdlIHlvdSB3YW50IHRvIGdlbmVyYXRlIGFuIEFQSSBjbGllbnQgZm9yIGluIHRoZSBWaXN1YWwgU3R1ZGlvIERlYnVnIHRhYiBhbmQgaGl0dGluZyAqKkY1Kiogd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkLCBzdGFydCwgYW5kIGF0dGFjaCB0aGUgZGVidWdnaW5nIHByb2Nlc3MgdG8gS2lvdGEuCgojIyMgU2FtcGxlcwoKWW91IGNhbiBmaW5kIHNhbXBsZXMgb2YgY2xpZW50cyBnZW5lcmF0ZWQgd2l0aCBLaW90YSBpbiB0aGUgW0tpb3RhIHNhbXBsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2FtcGxlcykgcmVwb3NpdG9yeS4KCkFuIGV4YW1wbGUgb2YgYW4gYXBwbGljYXRpb24gdGhhdCBpcyBjYWxsaW5nIG11bHRpcGxlIEFQSSBjYW4gYmUgZm91bmQgaW4gdGhlIFtLaW90YUFwcF0oaHR0cHM6Ly9naXRodWIuY29tL2RhcnJlbG1pbGxlci9LaW90YUFwcCkgcmVwbwoKIyMgQ29udHJpYnV0aW5nCgpUaGlzIHByb2plY3Qgd2VsY29tZXMgY29udHJpYnV0aW9ucyBhbmQgc3VnZ2VzdGlvbnMuICBNb3N0IGNvbnRyaWJ1dGlvbnMgcmVxdWlyZSB5b3UgdG8gYWdyZWUgdG8gYQpDb250cmlidXRvciBMaWNlbnNlIEFncmVlbWVudCAoQ0xBKSBkZWNsYXJpbmcgdGhhdCB5b3UgaGF2ZSB0aGUgcmlnaHQgdG8sIGFuZCBhY3R1YWxseSBkbywgZ3JhbnQgdXMKdGhlIHJpZ2h0cyB0byB1c2UgeW91ciBjb250cmlidXRpb24uIEZvciBkZXRhaWxzLCB2aXNpdCBbaHR0cHM6Ly9jbGEub3BlbnNvdXJjZS5taWNyb3NvZnQuY29tXShodHRwczovL2NsYS5vcGVuc291cmNlLm1pY3Jvc29mdC5jb20pLgoKV2hlbiB5b3Ugc3VibWl0IGEgcHVsbCByZXF1ZXN0LCBhIENMQSBib3Qgd2lsbCBhdXRvbWF0aWNhbGx5IGRldGVybWluZSB3aGV0aGVyIHlvdSBuZWVkIHRvIHByb3ZpZGUKYSBDTEEgYW5kIGRlY29yYXRlIHRoZSBQUiBhcHByb3ByaWF0ZWx5IChlLmcuLCBzdGF0dXMgY2hlY2ssIGNvbW1lbnQpLiBTaW1wbHkgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMKcHJvdmlkZWQgYnkgdGhlIGJvdC4gWW91IHdpbGwgb25seSBuZWVkIHRvIGRvIHRoaXMgb25jZSBhY3Jvc3MgYWxsIHJlcG9zIHVzaW5nIG91ciBDTEEuCgpUaGlzIHByb2plY3QgaGFzIGFkb3B0ZWQgdGhlIFtNaWNyb3NvZnQgT3BlbiBTb3VyY2UgQ29kZSBvZiBDb25kdWN0XShodHRwczovL29wZW5zb3VyY2UubWljcm9zb2Z0LmNvbS9jb2Rlb2Zjb25kdWN0LykuCkZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgW0NvZGUgb2YgQ29uZHVjdCBGQVFdKGh0dHBzOi8vb3BlbnNvdXJjZS5taWNyb3NvZnQuY29tL2NvZGVvZmNvbmR1Y3QvZmFxLykgb3IKY29udGFjdCBbb3BlbmNvZGVAbWljcm9zb2Z0LmNvbV0obWFpbHRvOm9wZW5jb2RlQG1pY3Jvc29mdC5jb20pIHdpdGggYW55IGFkZGl0aW9uYWwgcXVlc3Rpb25zIG9yIGNvbW1lbnRzLgoKIyMgVHJhZGVtYXJrcwoKVGhpcyBwcm9qZWN0IG1heSBjb250YWluIHRyYWRlbWFya3Mgb3IgbG9nb3MgZm9yIHByb2plY3RzLCBwcm9kdWN0cywgb3Igc2VydmljZXMuIEF1dGhvcml6ZWQgdXNlIG9mIE1pY3Jvc29mdAp0cmFkZW1hcmtzIG9yIGxvZ29zIGlzIHN1YmplY3QgdG8gYW5kIG11c3QgZm9sbG93CltNaWNyb3NvZnQncyBUcmFkZW1hcmsgJiBCcmFuZCBHdWlkZWxpbmVzXShodHRwczovL3d3dy5taWNyb3NvZnQuY29tL2xlZ2FsL2ludGVsbGVjdHVhbHByb3BlcnR5L3RyYWRlbWFya3MvdXNhZ2UvZ2VuZXJhbCkuClVzZSBvZiBNaWNyb3NvZnQgdHJhZGVtYXJrcyBvciBsb2dvcyBpbiBtb2RpZmllZCB2ZXJzaW9ucyBvZiB0aGlzIHByb2plY3QgbXVzdCBub3QgY2F1c2UgY29uZnVzaW9uIG9yIGltcGx5IE1pY3Jvc29mdCBzcG9uc29yc2hpcC4KQW55IHVzZSBvZiB0aGlyZC1wYXJ0eSB0cmFkZW1hcmtzIG9yIGxvZ29zIGFyZSBzdWJqZWN0IHRvIHRob3NlIHRoaXJkLXBhcnR5J3MgcG9saWNpZXMuCg== readmeEtag: '"06d219f12e0e36d56136770cc0c3e2a20333ff21"' readmeLastModified: Wed, 09 Jul 2025 20:42:50 GMT repositoryId: 323665366 description: OpenAPI based HTTP Client code generator created: '2020-12-22T15:35:49Z' updated: '2026-02-05T17:55:22Z' language: C# archived: false stars: 3630 watchers: 40 forks: 299 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT repoEtag: '"3bb9f2640c7b3020aaca53c675792de626f562911984e67a0b1e063241d2db59"' repoLastModified: Thu, 05 Feb 2026 17:55:22 GMT foundInMaster: true - source: https://openapi.tools/ name: FabriKt category: - Code Generators - SDK link: https://github.com/cjbooms/fabrikt language: Kotlin repository: https://github.com/fabrikt-io/fabrikt source_description: >- A sophisticated Kotlin code generation library capable of generating Jackson-annotated data classes, Spring Controller interfaces, and fault-tolerant OkHttp clients. Written in Kotlin, this library programatically generates code and is capable of handling advanced OpenApi3 specification features such as polymorphism. v2: false v3: true v3_1: false id: 590c094dc10757222dccc4b807bf562d repositoryMetadata: base64Readme: >- IyBGYWJyaWt0IGAvy4hmYS1icmlrdC9gIC0gS290bGluIGNvZGUgZnJvbSBPcGVuQVBJIDMKCiogW0ludHJvZHVjdGlvbl0oI2ludHJvZHVjdGlvbikKKiBbRmVhdHVyZXNdKCNmZWF0dXJlcykKKiBbRXhhbXBsZXNdKCNleGFtcGxlcykKKiBbVXNhZ2UgSW5zdHJ1Y3Rpb25zXSgjdXNhZ2UtaW5zdHJ1Y3Rpb25zKQogICogW0NvbW1hbmQgTGluZV0oI2NvbW1hbmQtbGluZSkKICAqIFtHcmFkbGUgdy8gY3VzdG9tIHRhc2tdKCNncmFkbGUtdy1jdXN0b20tdGFzaykKICAqIFtHcmFkbGUgdy8gcGx1Z2luXSgjZ3JhZGxlLXctcGx1Z2luKQogICogW01hdmVuXSgjbWF2ZW4pCiAgKiBbRG9ja2VyXSgjZG9ja2VyKQoqIFtHZXR0aW5nIHRoZSBNb3N0IGZyb20gRmFicmlrdF0oI2dldHRpbmctdGhlLW1vc3QtZnJvbS1mYWJyaWt0KQoqIFtDb25maWd1cmF0aW9uIE9wdGlvbnNdKCNjb25maWd1cmF0aW9uLW9wdGlvbnMpCiogW09yaWdpbmFsIE1vdGl2YXRpb25dKCNvcmlnaW5hbC1tb3RpdmF0aW9uKQoqIFtCdWlsZGluZyBMb2NhbGx5XSgjYnVpbGRpbmctbG9jYWxseSkKKiBbUHVibGlzaGluZ10oI3B1Ymxpc2hpbmcpCiogW1NwZWNpZmljIEZlYXR1cmVzXSgjc3BlY2lmaWMtZmVhdHVyZXMpCgojIyBJbnRyb2R1Y3Rpb24KClRoaXMgbGlicmFyeSB3YXMgYnVpbHQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGNvbXBsZXggbW9kZWxpbmcgZmVhdHVyZXMgYXZhaWxhYmxlIGluIE9wZW5BUEkgMy4gSXQgZ2VuZXJhdGVzIEtvdGxpbiBkYXRhIGNsYXNzZXMgd2l0aCBhZHZhbmNlZCBzdXBwb3J0IGZvciBmZWF0dXJlcyBzdWNoIGFzOiAKIC0gTnVsbCBTYWZldHkKIC0gSW5saW5lZCBzY2hlbWEgZGVmaW5pdGlvbnMKIC0gRW51bWVyYXRpb25zIAogLSBTZWFsZWQgQ2xhc3NlcwogLSBQb2x5bW9ycGhpc20gKGBASnNvblN1YlR5cGVzYCkKIC0gTWFwcyBvZiBNYXBzIG9mIE1hcHMKIC0gR3JhYWxWTSBOYXRpdmUgUmVmbGVjdGlvbiBSZWdpc3RyYXRpb24KIC0gSnNvbiBNZXJnZSBQYXRjaCAodmlhIGBKc29uTnVsbGFibGVgKSAoYWRkIGB4LWpzb24tbWVyZ2UtcGF0Y2g6IHRydWVgIHRvIHNjaGVtYXMpCiAtIE92ZXJyaWRlIEphY2tzb24gSW5jbHVkZSBOb25OdWxsICh2aWEgYEpzb25JbmNsdWRlYCkgKGFkZCBgeC1qYWNrc29uLWluY2x1ZGUtbm9uLW51bGw6IHRydWVgIHRvIHNjaGVtYXMpCiAKYXMgd2VsbCBhcyBIVFRQIGNsaWVudHMgYW5kIGNvbnRyb2xsZXJzIGZvciBhIG51bWJlciBvZiBwb3B1bGFyIGZyYW1ld29ya3MgKHNlZSBbRmVhdHVyZXNdKCNmZWF0dXJlcykpLgoKTW9yZSB0aGFuIGp1c3QgYm9vdHN0cmFwcGluZywgdGhpcyBsaWJyYXJ5IGNhbiBiZSBwZXJtYW5lbnRseSBpbnRlZ3JhdGVkIGludG8geW91ciBidWlsZCB0b29sIGFuZCB3aWxsIGVuc3VyZSBjb250cmFjdCBhbmQgY29kZSBhbHdheXMgbWF0Y2gsIGV2ZW4gYXMgQVBJcyBldm9sdmUgaW4gY29tcGxleGl0eS4KCiMjIyBUcnkgRmFicmlrdCBPbmxpbmUKClRyeSBGYWJyaWt0IHdpdGggeW91ciBvd24gQVBJIHNwZWMgaW4gdGhlIFtGYWJyaWt0IFBsYXlncm91bmRdKGh0dHBzOi8vdHJ5LmZhYnJpa3QuaW8pIGFuZCBzZWUgaG93IGl0IGNhbiBoZWxwIHlvdSBnZW5lcmF0ZSBjb2RlIGZvciB5b3VyIEFQSSBjbGllbnRzIGFuZCBzZXJ2ZXJzLgoKWyFbU2NyZWVuc2hvdCBvZiBGYWJyaWt0IFBsYXlncm91bmRdKGh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8zNGFjNmFmZi1mMjdlLTRmNDgtYmM1My1jYmIyYTAwZTNlNzgpXShodHRwczovL3RyeS5mYWJyaWt0LmlvKQoKIyMjIENvb3JkaW5hdGVzCgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgPGdyb3VwSWQ+Y29tLmNqYm9vbXM8L2dyb3VwSWQ+CiAgPGFydGlmYWN0SWQ+ZmFicmlrdDwvYXJ0aWZhY3RJZD4KPC9kZXBlbmRlbmN5PgpgYGAKCiMjIEZlYXR1cmVzCgpUaGUgbGlicmFyeSBjdXJyZW50bHkgaGFzIHN1cHBvcnQgZm9yIGdlbmVyYXRpbmc6CgoqIE1vZGVscwogICogKipKYWNrc29uKiogYW5ub3RhdGVkICoqZGF0YSBjbGFzc2VzKioKICAqICoqS290bGlueC5zZXJpYWxpemF0aW9uKiogYW5ub3RhdGVkICoqZGF0YSBjbGFzc2VzKioKKiBDbGllbnRzCiAgKiAqKk9rSHR0cCBDbGllbnQgKHcvIEphY2tzb24gTW9kZWxzKSoqIC0gd2l0aCB0aGUgb3B0aW9uIGZvciBhIHJlc2lsaWVuY2U0aiBmYXVsdC10b2xlcmFuY2Ugd3JhcHBlcgogICogKipPcGVuRmVpZ24qKiBhbm5vdGF0ZWQgY2xpZW50IGludGVyZmFjZXMKICAqICoqS3RvciBDbGllbnQgKHcvIEphY2tzb24gJiBLb3RsaW4gU2VyaWFsaXphdGlvbiBtb2RlbHMpKioKICAqICoqU3ByaW5nIEhUVFAgSW50ZXJmYWNlKiogYW5ub3RhdGVkIGNsaWVudCBpbnRlcmZhY2VzCiogQ29udHJvbGxlcnMKICAqICoqU3ByaW5nIE1WQyoqIGFubm90YXRlZCBjb250cm9sbGVyIGludGVyZmFjZXMKICAqICoqTWljcm9uYXV0KiogSFRUUCBhbm5vdGF0ZWQgY29udHJvbGxlciBpbnRlcmZhY2VzCiAgKiAqKkt0b3Igc2VydmVyKiogcm91dGVzIGFuZCBjb250cm9sbGVyIGludGVyZmFjZXMKCiMjIEV4YW1wbGVzCgpDb25zdWx0IHRlc3QgZGlyZWN0b3J5IGZvciBPcGVuQVBJIGNvZGUgZ2VuZXJhdGlvbiBleGFtcGxlcy4gCgpJdCBmb3JtcyBhIGxpdmluZyBkb2N1bWVudGF0aW9uIGZ1bGwgb2YgW2NvZGUgZXhhbXBsZXNdKHNyYy90ZXN0L3Jlc291cmNlcy9leGFtcGxlcykgZ2VuZXJhdGVkIGZyb20gZGlmZmVyZW50IE9wZW5BUEkgMyBwZXJtdXRhdGlvbnMuCgpGdXJ0aGVybW9yZSwgdGhlIFtlbmQtdG8tZW5kIHRlc3RzXSgvZW5kMmVuZC10ZXN0cykgZGVtb25zdHJhdGUgaG93IHRvIGludGVncmF0ZSB0aGUgbGlicmFyeSB1c2luZyBHcmFkbGUuCgojIyBVc2FnZSBJbnN0cnVjdGlvbnMKClRoZSBsaWJyYXJ5IGNhbiBiZSB1c2VkIGluIGEgdmFyaWV0eSBvZiB3YXlzLCBpbmNsdWRpbmcgYXMgYSBjb21tYW5kIGxpbmUgdG9vbCwgYSBHcmFkbGUgdGFzaywgb3IgYSBNYXZlbiBwbHVnaW4uCgpQbGVhc2UgcmVmZXIgdG8gW0NvbmZpZ3VyYXRpb24gT3B0aW9uc10oI2NvbmZpZ3VyYXRpb24tb3B0aW9ucykgc2VjdGlvbiBmb3IgYSBsaXN0IG9mIGF2YWlsYWJsZSBwYXJhbWV0ZXJzLgoKIyMjIENvbW1hbmQgTGluZQoKRmFicmlrdCBpcyBwYWNrYWdlZCBhcyBhbiBleGVjdXRhYmxlIGphciwgYWxsb3dpbmcgaXQgdG8gYmUgaW50ZWdyYXRlZCBpbnRvIGFueSBidWlsZCB0b29sLiAKClRoZSBDTEkgY2FuIGJlIGludm9rZWQgYXMgZm9sbG93czoKCmBgYApqYXZhIC1qYXIgZmFicmlrdC5qYXIgXAogICAgLS1vdXRwdXQtZGlyZWN0b3J5ICcvdG1wJyBcCiAgICAtLWJhc2UtcGFja2FnZSAnY29tLmV4YW1wbGUnIFwKICAgIC0tYXBpLWZpbGUgJy9wYXRoLXRvLWFwaS9vcGVuLWFwaS55YW1sJyBcCiAgICAtLXRhcmdldHMgJ2NsaWVudCcgXAogICAgLS10YXJnZXRzICdodHRwX21vZGVscycgXAogICAgLS1odHRwLWNsaWVudC1vcHRzIHJlc2lsaWVuY2U0agpgYGAKCiMjIyBHcmFkbGUgdy8gY3VzdG9tIHRhc2sKCkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIEdyYWRsZSB0YXNrIHdpdGggY29kZSBnZW5lcmF0ZWQgdG8gdGhlIGBidWlsZC9nZW5lcmF0ZWRgIGRpcmVjdG9yeSwgYW5kIGV4ZWN1dGlvbiBsaW5rZWQgdG8gdGhlIGNvbXBpbGUgdGFzay4gCgpgYGBrb3RsaW4KdmFsIGZhYnJpa3Q6IENvbmZpZ3VyYXRpb24gYnkgY29uZmlndXJhdGlvbnMuY3JlYXRpbmcKCnZhbCBnZW5lcmF0aW9uRGlyID0gIiRidWlsZERpci9nZW5lcmF0ZWQiCnZhbCBhcGlGaWxlID0gIiRidWlsZERpci9wYXRoLXRvLWFwaS9vcGVuLWFwaS55YW1sIgoKc291cmNlU2V0cyB7CiAgICBtYWluIHsgamF2YS5zcmNEaXJzKCIkZ2VuZXJhdGlvbkRpci9zcmMvbWFpbi9rb3RsaW4iKSB9CiAgICB0ZXN0IHsgamF2YS5zcmNEaXJzKCIkZ2VuZXJhdGlvbkRpci9zcmMvdGVzdC9rb3RsaW4iKSB9CiAgICAuLi4KfQoKdGFza3MgeyAgIAogICAgLi4uCiAgICB2YWwgZ2VuZXJhdGVDb2RlIGJ5IGNyZWF0aW5nKEphdmFFeGVjOjpjbGFzcykgewogICAgICAgIGlucHV0cy5maWxlcyhhcGlGaWxlKQogICAgICAgIG91dHB1dHMuZGlyKGdlbmVyYXRpb25EaXIpCiAgICAgICAgb3V0cHV0cy5jYWNoZUlmIHsgdHJ1ZSB9CiAgICAgICAgY2xhc3NwYXRoKGZhYnJpa3QpCiAgICAgICAgbWFpbkNsYXNzLnNldCgiY29tLmNqYm9vbXMuZmFicmlrdC5jbGkuQ29kZUdlbiIpCiAgICAgICAgYXJncyA9IGxpc3RPZigKICAgICAgICAgICAgIi0tb3V0cHV0LWRpcmVjdG9yeSIsIGdlbmVyYXRpb25EaXIsCiAgICAgICAgICAgICItLWJhc2UtcGFja2FnZSIsICJjb20uZXhhbXBsZSIsCiAgICAgICAgICAgICItLWFwaS1maWxlIiwgYXBpRmlsZSwKICAgICAgICAgICAgIi0tdGFyZ2V0cyIsICJodHRwX21vZGVscyIsCiAgICAgICAgICAgICItLXRhcmdldHMiLCAiY2xpZW50IiwKICAgICAgICAgICAgIi0taHR0cC1jbGllbnQtb3B0cyIsICJyZXNpbGllbmNlNGoiCiAgICAgICAgKQogICAgfQogICAgd2l0aFR5cGU8b3JnLmpldGJyYWlucy5rb3RsaW4uZ3JhZGxlLnRhc2tzLktvdGxpbkNvbXBpbGU+IHsKICAgICAgICBrb3RsaW5PcHRpb25zLmp2bVRhcmdldCA9ICIxNyIKICAgICAgICBkZXBlbmRzT24oZ2VuZXJhdGVDb2RlKQogICAgfQp9CgpkZXBlbmRlbmNpZXMgewogICAgIGZhYnJpa3QoImNvbS5jamJvb21zOmZhYnJpa3Q6KyIpIC8vIFRoaXMgc2hvdWxkIGJlIHBpbm5lZCAgCiAgICAgLi4uCn0KYGBgCgojIyMgR3JhZGxlIHcvIHBsdWdpbgoKVGhlIFtGYWJyaWt0IEdyYWRsZSBwbHVnaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9hY2FuZGEvZmFicmlrdC1ncmFkbGUtcGx1Z2luKSBzZXJ2ZXMgYXMgYSBjb252ZW5pZW50IHdyYXBwZXIgZm9yIEZhYnJpa3QsIAphbGxvd2luZyBzZWFtbGVzcyBpbnRlZ3JhdGlvbiBvZiBjb2RlIGdlbmVyYXRpb24gaW50byBhIEdyYWRsZSBidWlsZC4KCioqTm90ZToqKiBTaW5jZSB0aGUgcGx1Z2luIGlzIG1haW50YWluZWQgc2VwYXJhdGVseSBmcm9tIHRoZSBGYWJyaWt0IGxpYnJhcnksIHBsZWFzZSByZWZlciB0byB0aGUKW0NvbmZpZ3VyYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hY2FuZGEvZmFicmlrdC1ncmFkbGUtcGx1Z2luP3RhYj1yZWFkbWUtb3YtZmlsZSNjb25maWd1cmF0aW9uKSBzZWN0aW9uIG9mIHRoZSAKcGx1Z2luJ3MgUkVBRE1FIGZvciB0aGUgbW9zdCB1cC10by1kYXRlIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgaXQuCgpMYXRlc3QgdmVyc2lvbiBvZiB0aGUgcGx1Z2luOiBbIVtHcmFkbGUgUGx1Z2luIFBvcnRhbCBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dyYWRsZS1wbHVnaW4tcG9ydGFsL3YvY2guYWNhbmRhLmdyYWRsZS5mYWJyaWt0P3N0eWxlPWZsYXQpXShodHRwczovL3BsdWdpbnMuZ3JhZGxlLm9yZy9wbHVnaW4vY2guYWNhbmRhLmdyYWRsZS5mYWJyaWt0KQoKYGBga290bGluCnBsdWdpbnMgewogICAgLy8gZmluZCBsYXRlc3QgdmVyc2lvbjogaHR0cHM6Ly9naXRodWIuY29tL2FjYW5kYS9mYWJyaWt0LWdyYWRsZS1wbHVnaW4vcmVsZWFzZXMKICAgIGlkKCJjaC5hY2FuZGEuZ3JhZGxlLmZhYnJpa3QiKSB2ZXJzaW9uICIxLjI3LjMiCn0KCmZhYnJpa3QgewogICAgZ2VuZXJhdGUoImRvZyIpIHsKICAgICAgICBhcGlGaWxlID0gZmlsZSgic3JjL21haW4vb3BlbmFwaS9kb2cueWFtbCIpCiAgICAgICAgYmFzZVBhY2thZ2UgPSAiY29tLmV4YW1wbGUuYXBpIgogICAgfQp9CmBgYAoKIyMjIE1hdmVuCgpUaGUgW2V4ZWMtbWF2ZW4tcGx1Z2luXShodHRwOi8vd3d3Lm1vam9oYXVzLm9yZy9leGVjLW1hdmVuLXBsdWdpbi9leGFtcGxlcy9leGFtcGxlLWV4ZWMtdXNpbmctcGx1Z2luLWRlcGVuZGVuY2llcy5odG1sKSBpcyBjYXBhYmxlIG9mIGRvd25sb2FkaW5nIHRoZSBGYWJyaWt0IGxpYnJhcnkgZnJvbSBNYXZlbiBDZW50cmFsIGFuZCBleGVjdXRpbmcgaXRzIG1haW4gbWV0aG9kIHdpdGggZGVmaW5lZCBhcmd1bWVudHMuCgojIyMgRG9ja2VyCgpGYWJyaWt0IGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgRG9ja2VyIGltYWdlLCB3aGljaCBjYW4gYmUgY29udmVuaWVudCBmb3IgQ0kvQ0QgcGlwZWxpbmVzIG9yIGVudmlyb25tZW50cyB3aGVyZSB5b3UgcHJlZmVyIG5vdCB0byBpbnN0YWxsIEphdmEgZGlyZWN0bHkuCgpUaGUgRG9ja2VyIGltYWdlIGNhbiBiZSBpbnZva2VkIGFzIGZvbGxvd3M6CgpgYGBiYXNoCmRvY2tlciBydW4gLS1ybSAtdiAkKHB3ZCk6L3dvcmtzcGFjZSBnaGNyLmlvL2ZhYnJpa3QtaW8vZmFicmlrdDpsYXRlc3QgXAogIC0tb3V0cHV0LWRpcmVjdG9yeSAnLicgXAogIC0tYmFzZS1wYWNrYWdlICdjb20uZXhhbXBsZScgXAogIC0tYXBpLWZpbGUgJ29wZW5hcGkueWFtbCcgXAogIC0tdGFyZ2V0cyAnaHR0cF9tb2RlbHMnCmBgYAoKVGhlIGNvbW1hbmQgbW91bnRzIHlvdXIgY3VycmVudCBkaXJlY3RvcnkgdG8gYC93b3Jrc3BhY2VgIGluIHRoZSBjb250YWluZXIsIHdoZXJlIEZhYnJpa3Qgd2lsbCByZWFkIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gYW5kIHdyaXRlIHRoZSBnZW5lcmF0ZWQgY29kZS4KCiMjIEdldHRpbmcgdGhlIE1vc3QgZnJvbSBGYWJyaWt0CgojIyMgMS4gUHJlZmVyIGNvbXBvbmVudHMgdG8gaW5saW5lIHNjaGVtYXMKV2hpbGUgaW5saW5lIHNjaGVtYXMgYXJlIHBlcmZlY3RseSB2YWxpZCB0aGV5IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IEZhYnJpa3QgaW4gYWxsIGNpcmN1bXN0YW5jZXMuClRoaXMgaXMgZXNwZWNpYWxseSB0cnVlIGZvciByZXF1ZXN0IGJvZGllcyBhbmQgbm9uLXRyaXZpYWwgcGFyYW1ldGVycy4gSW5zdGVhZCwgZGVmaW5lIHlvdXIgc2NoZW1hcyBpbiB0aGUKY29tcG9uZW50cyBzZWN0aW9uIG9mIHRoZSBPcGVuQVBJIHNwZWMgKGBjb21wb25lbnRzLnBhcmFtZXRlcnNgICYgYGNvbXBvbmVudHMucmVxdWVzdEJvZGllc2ApLiBbIzIwXShodHRwczovL2dpdGh1Yi5jb20vY2pib29tcy9mYWJyaWt0L2lzc3Vlcy8yMCksIFsjMTg3XShodHRwczovL2dpdGh1Yi5jb20vY2pib29tcy9mYWJyaWt0L2lzc3Vlcy8xODcpCgojIyMgMi4gVXNlIGBvbmVPZmAgd2l0aCBkaXNjcmltaW5hdG9yIGZvciBwb2x5bW9ycGhpc20KYG9uZU9mYCBhbG9uZyB3aXRoIHRoZSBmbGFnIGBTRUFMRURfSU5URVJGQUNFU19GT1JfT05FX09GYCB3aWxsIGdlbmVyYXRlIHBvbHltb3JwaGljIG1vZGVscyB3aXRoIHNlYWxlZCBpbnRlcmZhY2VzLgpUaGUgYGRpc2NyaW1pbmF0b3JgIHByb3BlcnR5IGlzIHVzZWQgYnkgRmFicmlrdCB0byBkZXRlcm1pbmUgdGhlIHN1YnR5cGVzIHRvIGJlIGdlbmVyYXRlZC4KCiMjIENvbmZpZ3VyYXRpb24gT3B0aW9ucwoKVGhpcyBzZWN0aW9uIGRvY3VtZW50cyB0aGUgYXZhaWxhYmxlIENMSSBwYXJhbWV0ZXJzIGZvciBjb250cm9sbGluZyB3aGF0IGdldHMgZ2VuZXJhdGVkLiBUaGlzIGRvY3VtZW50YXRpb24gaXMgZ2VuZXJhdGVkIHVzaW5nOiBgLi9ncmFkbGV3IHByaW50Q29kZUdlblVzYWdlYAoKfCBQYXJhbWV0ZXIgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCAgIGAtLWFwaS1maWxlYCAgICAgICAgICAgICAgICAgfCBUaGlzIG11c3QgYmUgYSB2YWxpZCBPcGVuIEFQSSB2MyBzcGVjLiBBbGwgY29kZSBnZW5lcmF0aW9uIHdpbGwgYmUgYmFzZWQgb2ZmIHRoaXMgaW5wdXQuIHwKfCAgIGAtLWFwaS1mcmFnbWVudGAgICAgICAgICAgICAgfCBBIHBhcnRpYWwgT3BlbiBBUEkgdjMgZnJhZ21lbnQsIHRvIGJlIGNvbWJpbmVkIHdpdGggdGhlIHByaW1hcnkgQVBJIGZvciBjb2RlIGdlbmVyYXRpb24gcHVycG9zZXMuIHwKfCAqIGAtLWJhc2UtcGFja2FnZWAgICAgICAgICAgICAgfCBUaGUgYmFzZSBwYWNrYWdlIHdoaWNoIGFsbCBjb2RlIHdpbGwgYmUgZ2VuZXJhdGVkIHVuZGVyLiB8CnwgICBgLS1leHRlcm5hbC1yZWYtcmVzb2x1dGlvbmAgIHwgU3BlY2lmeSB0byB3aGljaCBkZWdyZWUgcmVmZXJlbmNlZCBzY2hlbWFzIGZyb20gZXh0ZXJuYWwgZmlsZXMgYXJlIGluY2x1ZGVkIGluIG1vZGVsIGdlbmVyYXRpb24uIERlZmF1bHQ6IFRBUkdFVEVEIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDSE9PU0UgT05FIE9GOiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgVEFSR0VURURgIC0gR2VuZXJhdGUgbW9kZWxzIG9ubHkgZm9yIGRpcmVjdGx5IHJlZmVyZW5jZWQgc2NoZW1hcyBpbiBleHRlcm5hbCBBUEkgZmlsZXMuIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBBR0dSRVNTSVZFYCAtIFJlZmVyZW5jaW5nIGFueSBzY2hlbWEgaW4gYW4gZXh0ZXJuYWwgQVBJIGZpbGUgdHJpZ2dlcnMgZ2VuZXJhdGlvbiBvZiBldmVyeSBleHRlcm5hbCBzY2hlbWEgaW4gdGhhdCBmaWxlLiB8CnwgICBgLS1odHRwLWNsaWVudC1vcHRzYCAgICAgICAgIHwgU2VsZWN0IHRoZSBvcHRpb25zIGZvciB0aGUgaHR0cCBjbGllbnQgY29kZSB0aGF0IHlvdSB3YW50IHRvIGJlIGdlbmVyYXRlZC4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBBTlkgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBSRVNJTElFTkNFNEpgIC0gR2VuZXJhdGVzIGEgZmF1bHQgdG9sZXJhbmNlIHNlcnZpY2UgZm9yIHRoZSBjbGllbnQgdXNpbmcgdGhlIGZvbGxvd2luZyBsaWJyYXJ5ICJpby5naXRodWIucmVzaWxpZW5jZTRqOnJlc2lsaWVuY2U0ai1hbGw6KyIgKG9ubHkgZm9yIE9rSHR0cCBjbGllbnRzKSB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgU1VTUEVORF9NT0RJRklFUmAgLSBUaGlzIG9wdGlvbiBhZGRzIHRoZSBzdXNwZW5kIG1vZGlmaWVyIHRvIHRoZSBnZW5lcmF0ZWQgY2xpZW50IGZ1bmN0aW9ucyAob25seSBmb3IgT3BlbkZlaWduIGNsaWVudHMpIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBTUFJJTkdfUkVTUE9OU0VfRU5USVRZX1dSQVBQRVJgIC0gVGhpcyBvcHRpb24gYWRkcyB0aGUgU3ByaW5nLVJlc3BvbnNlRW50aXR5IGdlbmVyaWMgYXJvdW5kIHRoZSByZXNwb25zZSB0byBiZSBhYmxlIHRvIGdldCByZXNwb25zZSBoZWFkZXJzIGFuZCBzdGF0dXMgKG9ubHkgZm9yIE9wZW5GZWlnbiBjbGllbnRzKS4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYFNQUklOR19DTE9VRF9PUEVORkVJR05fU1RBUlRFUl9BTk5PVEFUSU9OYCAtIFRoaXMgb3B0aW9uIGFkZHMgdGhlIEBGZWlnbkNsaWVudCBhbm5vdGF0aW9uIHRvIGdlbmVyYXRlZCBjbGllbnQgaW50ZXJmYWNlIHwKfCAgIGAtLWh0dHAtY2xpZW50LXRhcmdldGAgICAgICAgfCBPcHRpb25hbGx5IHNlbGVjdCB0aGUgdGFyZ2V0IGNsaWVudCB0aGF0IHlvdSB3YW50IHRvIGJlIGdlbmVyYXRlZC4gRGVmYXVsdHMgdG8gT0tfSFRUUCB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ0hPT1NFIE9ORSBPRjogfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYE9LX0hUVFBgIC0gR2VuZXJhdGUgT2tIdHRwIGNsaWVudC4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYE9QRU5fRkVJR05gIC0gR2VuZXJhdGUgT3BlbkZlaWduIGNsaWVudC4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYFNQUklOR19IVFRQX0lOVEVSRkFDRWAgLSBHZW5lcmF0ZSBTcHJpbmcgSFRUUCBJbnRlcmZhY2UuIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBLVE9SYCAtIEdlbmVyYXRlIEt0b3IgY2xpZW50LiB8CnwgICBgLS1odHRwLWNvbnRyb2xsZXItb3B0c2AgICAgIHwgU2VsZWN0IHRoZSBvcHRpb25zIGZvciB0aGUgY29udHJvbGxlcnMgdGhhdCB5b3Ugd2FudCB0byBiZSBnZW5lcmF0ZWQuIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDSE9PU0UgQU5ZIE9GOiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgU1VTUEVORF9NT0RJRklFUmAgLSBUaGlzIG9wdGlvbiBhZGRzIHRoZSBzdXNwZW5kIG1vZGlmaWVyIHRvIHRoZSBnZW5lcmF0ZWQgY29udHJvbGxlciBmdW5jdGlvbnMgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYEFVVEhFTlRJQ0FUSU9OYCAtIFRoaXMgb3B0aW9uIGFkZHMgdGhlIGF1dGhlbnRpY2F0aW9uIHBhcmFtZXRlciB0byB0aGUgZ2VuZXJhdGVkIGNvbnRyb2xsZXIgZnVuY3Rpb25zIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBDT01QTEVUSU9OX1NUQUdFYCAtIFRoaXMgb3B0aW9uIG1ha2VzIGdlbmVyYXRlZCBjb250cm9sbGVyIGZ1bmN0aW9ucyBoYXZlIFR5cGUgQ29tcGxldGlvblN0YWdlPFQ+ICh3b3JrcyBvbmx5IHdpdGggU3ByaW5nIENvbnRyb2xsZXIgZ2VuZXJhdG9yKSB8CnwgICBgLS1odHRwLWNvbnRyb2xsZXItdGFyZ2V0YCAgIHwgT3B0aW9uYWxseSBzZWxlY3QgdGhlIHRhcmdldCBmcmFtZXdvcmsgZm9yIHRoZSBjb250cm9sbGVycyB0aGF0IHlvdSB3YW50IHRvIGJlIGdlbmVyYXRlZC4gRGVmYXVsdHMgdG8gU3ByaW5nIENvbnRyb2xsZXJzIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDSE9PU0UgT05FIE9GOiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgU1BSSU5HYCAtIEdlbmVyYXRlIGZvciBTcHJpbmcgZnJhbWV3b3JrLiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgTUlDUk9OQVVUYCAtIEdlbmVyYXRlIGZvciBNaWNyb25hdXQgZnJhbWV3b3JrLiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgS1RPUmAgLSBHZW5lcmF0ZSBmb3IgS3RvciBzZXJ2ZXIuIHwKfCAgIGAtLWh0dHAtbW9kZWwtb3B0c2AgICAgICAgICAgfCBTZWxlY3QgdGhlIG9wdGlvbnMgZm9yIHRoZSBodHRwIG1vZGVscyB0aGF0IHlvdSB3YW50IHRvIGJlIGdlbmVyYXRlZC4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBBTlkgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBYX0VYVEVOU0lCTEVfRU5VTVNgIC0gVGhpcyBvcHRpb24gdHJlYXRzIHgtZXh0ZW5zaWJsZS1lbnVtcyBhcyBlbnVtcyB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgSkFWQV9TRVJJQUxJWkFUSU9OYCAtIFRoaXMgb3B0aW9uIGFkZHMgSmF2YSBTZXJpYWxpemFibGUgaW50ZXJmYWNlIHRvIHRoZSBnZW5lcmF0ZWQgbW9kZWxzIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBRVUFSS1VTX1JFRkxFQ1RJT05gIC0gVGhpcyBvcHRpb24gYWRkcyBAUmVnaXN0ZXJGb3JSZWZsZWN0aW9uIHRvIHRoZSBnZW5lcmF0ZWQgbW9kZWxzLiBSZXF1aXJlcyBkZXBlbmRlbmN5ICInaW8ucXVhcmt1czpxdWFya3VzLWNvcmU6KyIgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYE1JQ1JPTkFVVF9JTlRST1NQRUNUSU9OYCAtIFRoaXMgb3B0aW9uIGFkZHMgQEludHJvc3BlY3RlZCB0byB0aGUgZ2VuZXJhdGVkIG1vZGVscy4gUmVxdWlyZXMgZGVwZW5kZW5jeSAiJ2lvLm1pY3JvbmF1dDptaWNyb25hdXQtY29yZTorIiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgTUlDUk9OQVVUX1JFRkxFQ1RJT05gIC0gVGhpcyBvcHRpb24gYWRkcyBAUmVmbGVjdGl2ZUFjY2VzcyB0byB0aGUgZ2VuZXJhdGVkIG1vZGVscy4gUmVxdWlyZXMgZGVwZW5kZW5jeSAiJ2lvLm1pY3JvbmF1dDptaWNyb25hdXQtY29yZTorIiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgTUlDUk9OQVVUX1NFUkRFQUJMRWAgLSBUaGlzIG9wdGlvbiBhZGRzIEBTZXJkZWFibGUgdG8gdGhlIGdlbmVyYXRlZCBtb2RlbHMuIFJlcXVpcmVzIGRlcGVuZGVuY3kgIidpby5taWNyb25hdXQuc2VyZGU6bWljcm9uYXV0LXNlcmRlLWphY2tzb246KyIgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYElOQ0xVREVfQ09NUEFOSU9OX09CSkVDVGAgLSBUaGlzIG9wdGlvbiBhZGRzIGEgY29tcGFuaW9uIG9iamVjdCB0byB0aGUgZ2VuZXJhdGVkIG1vZGVscy4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYFNFQUxFRF9JTlRFUkZBQ0VTX0ZPUl9PTkVfT0ZgIC0gVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgZ2VuZXJhdGlvbiBvZiBpbnRlcmZhY2VzIGZvciBkaXNjcmltaW5hdGVkIG9uZU9mIHR5cGVzIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBOT05fTlVMTF9NQVBfVkFMVUVTYCAtIFRoaXMgb3B0aW9uIG1ha2VzIG1hcCB2YWx1ZXMgbm9uLW51bGwuIFRoZSBkZWZhdWx0IChzaW5jZSB2MTUpIGFuZCBtb3N0IHNwZWMgY29tcGxpYW50IGlzIG1ha2UgbWFwIHZhbHVlcyBudWxsYWJsZSB8CnwgICBgLS1odHRwLW1vZGVsLXN1ZmZpeGAgICAgICAgIHwgU3BlY2lmeSBjdXN0b20gc3VmZml4IGZvciBhbGwgZ2VuZXJhdGVkIG1vZGVsIGNsYXNzZXMuIERlZmF1bHRzIHRvIG5vIHN1ZmZpeC4gfAp8ICAgYC0taW5zdGFudC1saWJyYXJ5YCAgICAgICAgICB8IFNwZWNpZnkgd2hpY2ggSW5zdGFudCBsaWJyYXJ5IHRvIHVzZSBpbiBnZW5lcmF0ZWQgbW9kZWwgY2xhc3NlcyBmb3Iga290bGlueC5zZXJpYWxpemF0aW9uLiBEZWZhdWx0OiBLT1RMSU5YX0lOU1RBTlQgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBPTkUgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBLT1RMSU5YX0lOU1RBTlRgIC0gVXNlIGBrb3RsaW54LmRhdGV0aW1lYCBJbnN0YW50IGluIGdlbmVyYXRlZCBjbGFzc2VzIChkZWZhdWx0KSB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgS09UTElOX1RJTUVfSU5TVEFOVGAgLSBVc2UgYGtvdGxpbi50aW1lYCBJbnN0YW50IGluIGdlbmVyYXRlZCBjbGFzc2VzIHwKfCAgIGAtLWphY2tzb24tbnVsbGFiaWxpdHktbW9kZWAgfCBDb25maWd1cmUgYWR2YW5jZWQgaGFuZGxpbmcgd2hlbiBzZXJpYWxpemluZyBudWxsIHZhbHVlcyB3aXRoIEphY2tzb24uIERlZmF1bHQ6IE5PTkUgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBPTkUgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBOT05FYCAtIERlZmF1bHQgSmFja3NvbiBiZWhhdmlvdXIgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYEVORk9SQ0VfT1BUSU9OQUxfTk9OX05VTExgIC0gT21pdCBudWxsIHZhbHVlcyBmb3Igb3B0aW9uYWwgbm9uLW51bGwgZmllbGRzIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBFTkZPUkNFX1JFUVVJUkVEX05VTExBQkxFYCAtIEluY2x1ZGUgbnVsbCB2YWx1ZXMgZm9yIHJlcXVpcmVkIG51bGxhYmxlIGZpZWxkcyB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgU1RSSUNUYCAtIENvbWJpbmVzIGBFTkZPUkNFX09QVElPTkFMX05PTl9OVUxMYCBhbmQgYEVORk9SQ0VfUkVRVUlSRURfTlVMTEFCTEVgIGZvciBzdHJpY3Rlc3QgY29udHJhY3QgZW5mb3JjZW1lbnQgfAp8ICAgYC0tb3BlbmZlaWduLWNsaWVudC1uYW1lYCAgICB8IFNwZWNpZnkgb3BlbmZlaWduIGNsaWVudCBuYW1lIGZvciBzcHJpbmctY2xvdWQtc3RhcnRlci1vcGVuZmVpZ24uIERlZmF1bHRzIHRvICdmYWJyaWt0LWNsaWVudCcuIHwKfCAgIGAtLW91dHB1dC1kaXJlY3RvcnlgICAgICAgICAgfCBBbGxvd3MgdGhlIGdlbmVyYXRpb24gZGlyIHRvIGJlIG92ZXJyaWRkZW4uIERlZmF1bHRzIHRvIGN1cnJlbnQgZGlyIHwKfCAgIGAtLW91dHB1dC1vcHRzYCAgICAgICAgICAgICAgfCBTZWxlY3Qgb3B0aW9ucyBmb3IgdGhlIG91dHB1dC4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBBTlkgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBBRERfRklMRV9ESVNDTEFJTUVSYCAtIFRoaXMgb3B0aW9uIGFkZHMgYSBkaXNjbGFpbWVyIHRvIHRoZSBnZW5lcmF0ZWQgZmlsZXMuIHwKfCAgIGAtLXJlc291cmNlcy1wYXRoYCAgICAgICAgICAgfCBBbGxvd3MgdGhlIHBhdGggZm9yIGdlbmVyYXRlZCByZXNvdXJjZXMgdG8gYmUgb3ZlcnJpZGRlbi4gRGVmYXVsdHMgdG8gYHNyYy9tYWluL3Jlc291cmNlc2AgfAp8ICAgYC0tc2VyaWFsaXphdGlvbi1saWJyYXJ5YCAgICB8IFNwZWNpZnkgd2hpY2ggc2VyaWFsaXphdGlvbiBsaWJyYXJ5IHRvIHVzZSBmb3IgYW5ub3RhdGlvbnMgaW4gZ2VuZXJhdGVkIG1vZGVsIGNsYXNzZXMuIERlZmF1bHQ6IEpBQ0tTT04gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBPTkUgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBKQUNLU09OYCAtIFVzZSBKYWNrc29uIGZvciBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYEtPVExJTlhfU0VSSUFMSVpBVElPTmAgLSBVc2Uga290bGlueC5zZXJpYWxpemF0aW9uIGZvciBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24gfAp8ICAgYC0tc3JjLXBhdGhgICAgICAgICAgICAgICAgICB8IEFsbG93cyB0aGUgcGF0aCBmb3IgZ2VuZXJhdGVkIHNvdXJjZSBmaWxlcyB0byBiZSBvdmVycmlkZGVuLiBEZWZhdWx0cyB0byBgc3JjL21haW4va290bGluYCB8CnwgICBgLS10YXJnZXRzYCAgICAgICAgICAgICAgICAgIHwgVGFyZ2V0cyBhcmUgdGhlIHBhcnRzIG9mIHRoZSBhcHBsaWNhdGlvbiB0aGF0IHlvdSB3YW50IHRvIGJlIGdlbmVyYXRlZC4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBBTlkgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBIVFRQX01PREVMU2AgLSBKYWNrc29uIGFubm90YXRlZCBkYXRhIGNsYXNzZXMgdG8gcmVwcmVzZW50IHRoZSBzY2hlbWEgb2JqZWN0cyBkZWZpbmVkIGluIHRoZSBpbnB1dC4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYENPTlRST0xMRVJTYCAtIFNwcmluZyAvIE1pY3JvbmF1dCAvIEt0b3IgSFRUUCBjb250cm9sbGVycyBmb3IgZWFjaCBvZiB0aGUgZW5kcG9pbnRzIGRlZmluZWQgaW4gdGhlIGlucHV0LiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgQ0xJRU5UYCAtIFNpbXBsZSBodHRwIHJlc3QgY2xpZW50LiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgUVVBUktVU19SRUZMRUNUSU9OX0NPTkZJR2AgLSBUaGlzIG9wdGlvbnMgZ2VuZXJhdGVzIHRoZSByZWZsZWN0aW9uLWNvbmZpZy5qc29uIGZpbGUgZm9yIHF1YXJrdXMgaW50ZWdyYXRpb24gcHJvamVjdHMgfAp8ICAgYC0tdHlwZS1vdmVycmlkZXNgICAgICAgICAgICB8IFNwZWNpZnkgbm9uLWRlZmF1bHQga290bGluIHR5cGVzIGZvciBjZXJ0YWluIE9BUyB0eXBlcy4gRm9yIGV4YW1wbGUsIGdlbmVyYXRlIGBJbnN0YW50YCBpbnN0ZWFkIG9mIGBPZmZzZXREYXRlVGltZWAgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBBTlkgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBEQVRFVElNRV9BU19JTlNUQU5UYCAtIFVzZSBgSW5zdGFudGAgYXMgdGhlIGRhdGV0aW1lIHR5cGUuIERlZmF1bHRzIHRvIGBPZmZzZXREYXRlVGltZWAgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYERBVEVUSU1FX0FTX0xPQ0FMREFURVRJTUVgIC0gVXNlIGBMb2NhbERhdGVUaW1lYCBhcyB0aGUgZGF0ZXRpbWUgdHlwZS4gRGVmYXVsdHMgdG8gYE9mZnNldERhdGVUaW1lYCB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgQllURV9BU19TVFJJTkdgIC0gSWdub3JlIHN0cmluZyBmb3JtYXQgYGJ5dGVgIGFuZCB1c2UgYFN0cmluZ2AgYXMgdGhlIHR5cGUgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYEJJTkFSWV9BU19TVFJJTkdgIC0gSWdub3JlIHN0cmluZyBmb3JtYXQgYGJpbmFyeWAgYW5kIHVzZSBgU3RyaW5nYCBhcyB0aGUgdHlwZSB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgVVJJX0FTX1NUUklOR2AgLSBJZ25vcmUgc3RyaW5nIGZvcm1hdCBgdXJpYCBhbmQgdXNlIGBTdHJpbmdgIGFzIHRoZSB0eXBlIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBVVUlEX0FTX1NUUklOR2AgLSBJZ25vcmUgc3RyaW5nIGZvcm1hdCBgdXVpZGAgYW5kIHVzZSBgU3RyaW5nYCBhcyB0aGUgdHlwZSB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgREFURV9BU19TVFJJTkdgIC0gSWdub3JlIHN0cmluZyBmb3JtYXQgYGRhdGVgIGFuZCB1c2UgYFN0cmluZ2AgYXMgdGhlIHR5cGUgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYERBVEVUSU1FX0FTX1NUUklOR2AgLSBJZ25vcmUgc3RyaW5nIGZvcm1hdCBgZGF0ZS10aW1lYCBhbmQgdXNlIGBTdHJpbmdgIGFzIHRoZSB0eXBlIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBCWVRFQVJSQVlfQVNfSU5QVVRTVFJFQU1gIC0gVXNlIGBJbnB1dFN0cmVhbWAgYXMgQnl0ZUFycmF5IHR5cGUuIERlZmF1bHRzIHRvIGBCeXRlQXJyYXlgIHwKfCAgIGAtLXZhbGlkYXRpb24tbGlicmFyeWAgICAgICAgfCBTcGVjaWZ5IHdoaWNoIHZhbGlkYXRpb24gbGlicmFyeSB0byB1c2UgZm9yIGFubm90YXRpb25zIGluIGdlbmVyYXRlZCBtb2RlbCBjbGFzc2VzLiBEZWZhdWx0OiBKQVZBWF9WQUxJREFUSU9OIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDSE9PU0UgT05FIE9GOiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgSkFWQVhfVkFMSURBVElPTmAgLSBVc2UgYGphdmF4LnZhbGlkYXRpb25gIGFubm90YXRpb25zIGluIGdlbmVyYXRlZCBtb2RlbCBjbGFzc2VzIChkZWZhdWx0KSB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgSkFLQVJUQV9WQUxJREFUSU9OYCAtIFVzZSBgamFrYXJ0YS52YWxpZGF0aW9uYCBhbm5vdGF0aW9ucyBpbiBnZW5lcmF0ZWQgbW9kZWwgY2xhc3NlcyB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgTk9fVkFMSURBVElPTmAgLSBVc2Ugbm8gdmFsaWRhdGlvbiBhbm5vdGF0aW9ucyBpbiBnZW5lcmF0ZWQgbW9kZWwgY2xhc3NlcyB8CgojIyBPcmlnaW5hbCBNb3RpdmF0aW9uCgpUaGUgdGVhbSB0aGF0IGJ1aWx0IHRoZSBmaXJzdCB2ZXJzaW9uIG9mIHRoaXMgdG9vbCBpbml0aWFsbHkgY29udHJpYnV0ZWQgdG8gdGhlIEtvdGxpbiBjb2RlIGdlbmVyYXRpb24gYWJpbGl0eSBpbgpbT3BlbkFwaVRvb2xzXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKSwgYnV0IHJlYWNoZWQgdGhlIGxpbWl0cyBvZiB3aGF0IGNvdWxkIGJlIGFjaGlldmVkIHdpdGgKdGVtcGxhdGUtYmFzZWQgZ2VuZXJhdGlvbi4gVGhpcyBsaWJyYXJ5IGxldmVyYWdlcyB0aGUgcmljaCBPcGVuQVBJIDMgbW9kZWwgcHJvdmlkZWQgYnkKW0thaVplbi1PcGVuQXBpLVBhcnNlcl0oaHR0cHM6Ly9naXRodWIuY29tL1JlcHJlWmVuL0thaVplbi1PcGVuQXBpLVBhcnNlcikgYW5kIHVzZXMgW0tvdGxpbiBQb2V0XShodHRwczovL3NxdWFyZS5naXRodWIuaW8va290bGlucG9ldC8pIHRvCnByb2dyYW1tYXRpY2FsbHkgY29uc3RydWN0IEtvdGxpbiBjbGFzc2VzIGZvciBtYXhpbXVtIGZsZXhpYmlsaXR5LgoKVGhpcyBwcm9qZWN0IHdhcyBzdGFydGVkIGJ5IGVuZ2luZWVycyBmcm9tIFtaYWxhbmRvIFRlY2hdKGh0dHBzOi8vb3BlbnNvdXJjZS56YWxhbmRvLmNvbS8pIGFuZCBpcyBiYXR0bGUtdGVzdGVkIGhlYXZpbHkgaW4gcHJvZHVjdGlvbiB0aGVyZS4KCiMjIFNwZWNpZmljIEZlYXR1cmVzCgojIyMgUG9seW1vcnBoaXNtIHZpYSBgYWxsT2ZgCgpUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgaG93IGBhbGxPZmAgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgcG9seW1vcnBoaWMgS290bGluIGRhdGEgY2xhc3Nlcy4gSXQgZG9lcyB0aGUgZm9sbG93aW5nOgotIEEgYENoaWxkRGVmaW5pdGlvbmAgc2NoZW1hIGRlZmluZXMgYm90aCB0aGUgZGlzY3JpbWluYXRvciBtYXBwaW5nIGRldGFpbHMgYW5kIHRoZSBzY2hlbWEgZm9yIHRoZSBkaXNjcmltaW5hdG9yIHByb3BlcnR5LiBJbiB0aGlzIGNhc2UgdGhlIGRpc2NyaW1pbmF0b3IgcHJvcGVydHkgaXMgYW4gZW51bWVyYXRpb24KLSBJbiBlYWNoIGNoaWxkIHNjaGVtYSwgYGFsbE9mYCBpcyB1c2VkIHRvIG1lcmdlIHRoZSBgQ2hpbGREZWZpbml0aW9uYCB3aXRoIHRoZSBjaGlsZCdzIGN1c3RvbSBzY2hlbWEuIFRoaXMgZ3VhcmFudGVlcyB0aGF0IGVhY2ggY2hpbGQgc2NoZW1hIGluaGVyaXRzIHRoZSBjb3JyZWN0IGRpc2NyaW1pbmF0b3IgcHJvcGVydHkuCi0gSW4gdGhlIGBSZXNwb25zZXNgIHNjaGVtYSBhIGBvbmVPZmAgbGlzdHMgb25seSBjaGlsZCBzY2hlbWFzLiBUaGlzIHdpbGwgYmUgZGV0ZWN0ZWQgYnkgRmFicmlrdCBhbmQgaXQgd2lsbCBnZW5lcmF0ZSB0aGUgbGlzdCBvZiBwYXJlbnQgdHlwZXM6IGBMaXN0PENoaWxkRGVmaW5pdGlvbj5gCgpfTk9URTogQSBuZXcgZmVhdHVyZSBoYXMgYmVlbiBhZGRlZCB0aGF0IGFsbG93cyBQb2x5bW9ycGhpc20gdG8gYmUgYWNoaWV2ZWQgdXNpbmcgb25seSBhIFtkaXNjcmltaW5hdGVkIG9uZU9mXShzcmMvdGVzdC9yZXNvdXJjZXMvZXhhbXBsZXMvZGlzY3JpbWluYXRlZE9uZU9mKS4gVGhpcyBmZWF0dXJlIG1ha2VzIHVzZSBvZiBLb3RsaW4gYHNlYWxlZCBpbnRlcmZhY2VgIGFuZCBtdXN0IGJlIGV4cGxpY2l0bHkgZW5hYmxlZCB2aWEgYC0taHR0cC1tb2RlbC1vcHRzLCBTRUFMRURfSU5URVJGQUNFU19GT1JfT05FX09GYF8KCmBgYHltbApvcGVuYXBpOiAzLjAuMApjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBDaGlsZERlZmluaXRpb246CiAgICAgIHR5cGU6IG9iamVjdAogICAgICBkaXNjcmltaW5hdG9yOgogICAgICAgIHByb3BlcnR5TmFtZTogc29tZV9lbnVtCiAgICAgICAgbWFwcGluZzoKICAgICAgICAgIG9ial9vbmVfb25seTogJyMvY29tcG9uZW50cy9zY2hlbWFzL0Rpc2NyaW1pbmF0ZWRDaGlsZDEnCiAgICAgICAgICBvYmpfdHdvX2ZpcnN0OiAnIy9jb21wb25lbnRzL3NjaGVtYXMvRGlzY3JpbWluYXRlZENoaWxkMicKICAgICAgICAgIG9ial90d29fc2Vjb25kOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvRGlzY3JpbWluYXRlZENoaWxkMicKICAgICAgICAgIG9ial90aHJlZTogJyMvY29tcG9uZW50cy9zY2hlbWFzL2Rpc2NyaW1pbmF0ZWRfY2hpbGRfMycKICAgICAgcHJvcGVydGllczoKICAgICAgICBkaXNjcmltaW5hdGluZ19wcm9wZXJ0eToKICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9DaGlsZERpc2NyaW1pbmF0b3InCgogICAgQ2hpbGREaXNjcmltaW5hdG9yOgogICAgICB0eXBlOiBzdHJpbmcKICAgICAgZW51bToKICAgICAgICAtIG9ial9vbmVfb25seQogICAgICAgIC0gb2JqX3R3b19maXJzdAogICAgICAgIC0gb2JqX3R3b19zZWNvbmQKICAgICAgICAtIG9ial90aHJlZQoKICAgIERpc2NyaW1pbmF0ZWRDaGlsZDE6CiAgICAgIGFsbE9mOgogICAgICAgIC0gJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0NoaWxkRGVmaW5pdGlvbicKICAgICAgICAtIHR5cGU6IG9iamVjdAogICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgc29tZV9wcm9wOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwoKICAgIERpc2NyaW1pbmF0ZWRDaGlsZDI6CiAgICAgIGFsbE9mOgogICAgICAgIC0gJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0NoaWxkRGVmaW5pdGlvbicKICAgICAgICAtIHR5cGU6IG9iamVjdAogICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgc29tZV9wcm9wOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwoKICAgIGRpc2NyaW1pbmF0ZWRfY2hpbGRfMzoKICAgICAgYWxsT2Y6CiAgICAgICAgLSAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvQ2hpbGREZWZpbml0aW9uJwoKICAgIFJlc3BvbnNlczoKICAgICAgdHlwZTogIm9iamVjdCIKICAgICAgcHJvcGVydGllczoKICAgICAgICBlbnRyaWVzOgogICAgICAgICAgdHlwZTogImFycmF5IgogICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgIG9uZU9mOgogICAgICAgICAgICAgIC0gJHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzL0Rpc2NyaW1pbmF0ZWRDaGlsZDIiCiAgICAgICAgICAgICAgLSAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvRGlzY3JpbWluYXRlZENoaWxkMiIKICAgICAgICAgICAgICAtICRyZWY6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9kaXNjcmltaW5hdGVkX2NoaWxkXzMiCmBgYApgYGBrb3RsaW4KQEpzb25UeXBlSW5mbygKICAgIHVzZSA9IEpzb25UeXBlSW5mby5JZC5OQU1FLAogICAgaW5jbHVkZSA9IEpzb25UeXBlSW5mby5Bcy5FWElTVElOR19QUk9QRVJUWSwKICAgIHByb3BlcnR5ID0gInNvbWVfZW51bSIsCiAgICB2aXNpYmxlID0gdHJ1ZQopCkBKc29uU3ViVHlwZXMoCiAgICBKc29uU3ViVHlwZXMuVHlwZSgKICAgICAgICB2YWx1ZSA9IERpc2NyaW1pbmF0ZWRDaGlsZDE6OmNsYXNzLAogICAgICAgIG5hbWUgPQogICAgICAgICJvYmpfb25lX29ubHkiCiAgICApLAogICAgSnNvblN1YlR5cGVzLlR5cGUoCiAgICAgICAgdmFsdWUgPSBEaXNjcmltaW5hdGVkQ2hpbGQyOjpjbGFzcywKICAgICAgICBuYW1lID0KICAgICAgICAib2JqX3R3b19maXJzdCIKICAgICksCiAgICBKc29uU3ViVHlwZXMuVHlwZSgKICAgICAgICB2YWx1ZSA9IERpc2NyaW1pbmF0ZWRDaGlsZDI6OmNsYXNzLAogICAgICAgIG5hbWUgPQogICAgICAgICJvYmpfdHdvX3NlY29uZCIKICAgICksCiAgICBKc29uU3ViVHlwZXMuVHlwZSh2YWx1ZSA9IERpc2NyaW1pbmF0ZWRDaGlsZDM6OmNsYXNzLCBuYW1lID0gIm9ial90aHJlZSIpCikKc2VhbGVkIGNsYXNzIENoaWxkRGVmaW5pdGlvbigpIHsKICAgIGFic3RyYWN0IHZhbCBzb21lRW51bTogQ2hpbGREaXNjcmltaW5hdG9yCn0KCmVudW0gY2xhc3MgQ2hpbGREaXNjcmltaW5hdG9yKAogICAgQEpzb25WYWx1ZQogICAgdmFsIHZhbHVlOiBTdHJpbmcKKSB7CiAgICBPQkpfT05FX09OTFkoIm9ial9vbmVfb25seSIpLAoKICAgIE9CSl9UV09fRklSU1QoIm9ial90d29fZmlyc3QiKSwKCiAgICBPQkpfVFdPX1NFQ09ORCgib2JqX3R3b19zZWNvbmQiKSwKCiAgICBPQkpfVEhSRUUoIm9ial90aHJlZSIpOwoKICAgIGNvbXBhbmlvbiBvYmplY3QgewogICAgICAgIHByaXZhdGUgdmFsIG1hcHBpbmc6IE1hcDxTdHJpbmcsIENoaWxkRGlzY3JpbWluYXRvcj4gPQogICAgICAgICAgICB2YWx1ZXMoKS5hc3NvY2lhdGVCeShDaGlsZERpc2NyaW1pbmF0b3I6OnZhbHVlKQoKICAgICAgICBmdW4gZnJvbVZhbHVlKHZhbHVlOiBTdHJpbmcpOiBDaGlsZERpc2NyaW1pbmF0b3I/ID0gbWFwcGluZ1t2YWx1ZV0KICAgIH0KfQoKZGF0YSBjbGFzcyBEaXNjcmltaW5hdGVkQ2hpbGQxKAogICAgQHBhcmFtOkpzb25Qcm9wZXJ0eSgic29tZV9wcm9wIikKICAgIEBnZXQ6SnNvblByb3BlcnR5KCJzb21lX3Byb3AiKQogICAgdmFsIHNvbWVQcm9wOiBTdHJpbmc/ID0gbnVsbCwKICAgIEBnZXQ6SnNvblByb3BlcnR5KCJzb21lX2VudW0iKQogICAgQGdldDpOb3ROdWxsCiAgICBvdmVycmlkZSB2YWwgc29tZUVudW06IENoaWxkRGlzY3JpbWluYXRvciA9IENoaWxkRGlzY3JpbWluYXRvci5PQkpfT05FX09OTFkKKSA6IENoaWxkRGVmaW5pdGlvbigpCgpkYXRhIGNsYXNzIERpc2NyaW1pbmF0ZWRDaGlsZDIoCiAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgic29tZV9lbnVtIikKICAgIEBnZXQ6Tm90TnVsbAogICAgb3ZlcnJpZGUgdmFsIHNvbWVFbnVtOiBDaGlsZERpc2NyaW1pbmF0b3IsCiAgICBAcGFyYW06SnNvblByb3BlcnR5KCJzb21lX3Byb3AiKQogICAgQGdldDpKc29uUHJvcGVydHkoInNvbWVfcHJvcCIpCiAgICB2YWwgc29tZVByb3A6IFN0cmluZz8gPSBudWxsCikgOiBDaGlsZERlZmluaXRpb24oKQoKZGF0YSBjbGFzcyBEaXNjcmltaW5hdGVkQ2hpbGQzKAogICAgQGdldDpKc29uUHJvcGVydHkoInNvbWVfZW51bSIpCiAgICBAZ2V0Ok5vdE51bGwKICAgIG92ZXJyaWRlIHZhbCBzb21lRW51bTogQ2hpbGREaXNjcmltaW5hdG9yID0gQ2hpbGREaXNjcmltaW5hdG9yLk9CSl9USFJFRQopIDogQ2hpbGREZWZpbml0aW9uKCkKCmRhdGEgY2xhc3MgUmVzcG9uc2VzKAogICAgQHBhcmFtOkpzb25Qcm9wZXJ0eSgiZW50cmllcyIpCiAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgiZW50cmllcyIpCiAgICBAZ2V0OlZhbGlkCiAgICB2YWwgZW50cmllczogTGlzdDxDaGlsZERlZmluaXRpb24+PyA9IG51bGwKKQpgYGAKCiMjIENvbnRyaWJ1dGluZwoKIyMjIEJ1aWxkaW5nIExvY2FsbHkKCkZhYnJpa3QgaXMgYnVpbHQgd2l0aCBHcmFkbGUgYW5kIHJlcXVpcmVzIGFuIGluaXRpYWxpc2VkIGdpdCByZXBvc2l0b3J5LiBUaGUgZWFzaWVzdCB3YXkgdG8gYnVpbGQgaXQgaXMgdG8gY2xvbmUgdGhlIHJlcG8gbG9jYWxseSBiZWZvcmUgZXhlY3V0aW5nIHRoZSBidWlsZCBjb21tYW5kOgpgYGAKZ2l0IGNsb25lIGdpdEBnaXRodWIuY29tOmNqYm9vbXMvZmFicmlrdC5naXQKY2QgZmFicmlrdC8KLi9ncmFkbGV3IGNsZWFuIGJ1aWxkCmBgYAoKIyMjIEFkanVzdGluZyBUZXN0IEV4YW1wbGVzCgpBIHV0aWxpdHkgZnVuY3Rpb24gaXMgYXZhaWxhYmxlIGluIFtHZW5lcmF0ZWRDb2RlQXNzZXJ0ZXIua3RdKHNyYy90ZXN0L2tvdGxpbi9jb20vY2pib29tcy9mYWJyaWt0L3V0aWwvR2VuZXJhdGVkQ29kZUFzc2VydGVyLmt0KSB0byBtYXNzIGNoYW5nZSBhbGwgb2YgdGhlIGNvZGUgZ2VuZXJhdGlvbiBleGFtcGxlcyBpbiB0aGUgdGVzdCByZXNvdXJjZXMgZm9sZGVyLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgZ2xvYmFsIGNoYW5nZSBpcyBtYWRlIHRvIHRoZSBjb2RlIGdlbmVyYXRpb24gbG9naWMgYW5kIGFsbCBvZiB0aGUgZXhhbXBsZXMgbmVlZCB0byBiZSB1cGRhdGVkLgoKIyMjIFB1Ymxpc2hpbmcKCjEuIEdvIHRvIFtSZWxlYXNlIFRhYl0oaHR0cHM6Ly9naXRodWIuY29tL2NqYm9vbXMvZmFicmlrdC9yZWxlYXNlcykKMi4gU2VsZWN0IGBEcmFmdCBhIG5ldyByZWxlYXNlYC4KMy4gU2V0IHRhZyB0byBhIHZlcnNpb24gZ3JlYXRlciB0aGFuIGN1cnJlbnQgdXNpbmcgc3ltYW50aWMgdmVyc2lvbmluZywgYW50aWNpcGF0aW5nIHdoZXRoZXIgdGhlIGNoYW5nZXMgbWFkZSBjb3VsZCBicmVhayBidWlsZHMuCjQuIENsaWNrIGBHZW5lcmF0ZSByZWxlYXNlIG5vdGVzYC4gRW5zdXJlIHRoYXQgdGhlIHRhZyBhbmQgcmVsZWFzZSB2ZXJzaW9uIG1hdGNoLgo1LiBDbGljayBgUHVibGlzaCByZWxlYXNlYCBidXR0b20gYXQgdGhlIGJvdHRvbS4KCkdpdGh1YiBBY3Rpb25zIHdpbGwgcHVibGlzaCB0aGUgZGVwbG95bWVudCB0byBbU29uYXR5cGUgQ2VudHJhbF0oaHR0cHM6Ly9jZW50cmFsLnNvbmF0eXBlLmNvbS9wdWJsaXNoaW5nL2RlcGxveW1lbnRzKS4gWW91IG11c3QgdGhlbiBsb2cgaW4gdG8gU29uYXR5cGUgYW5kIGRlY2lkZSB0byBlaXRoZXIgcmVsZWFzZSBvciBkcm9wIHRoYXQgZGVwbG95bWVudC4gQWZ0ZXIgMzAgbWludXRlcyBvciBzbywgTWF2ZW4gQ2VudHJhbCB3aWxsIGhhdmUgaW5kZXhlZCB0aGUgcHJvbW90ZWQgcmVsZWFzZS4K readmeEtag: '"f3d553b88c26051e7b395545a29a9094c9ecf463"' readmeLastModified: Wed, 04 Feb 2026 12:37:56 GMT repositoryId: 229844927 description: Generates Kotlin Code from OpenApi3 Specifications created: '2019-12-24T00:56:42Z' updated: '2026-02-04T12:38:00Z' language: Kotlin archived: false stars: 245 watchers: 7 forks: 66 owner: fabrikt-io logo: https://avatars.githubusercontent.com/u/236459801?v=4 license: Apache-2.0 repoEtag: '"be3c784730bd28eabe7f45da0fbd81826d96c980e58861f0f4bde9ccc9715e36"' repoLastModified: Wed, 04 Feb 2026 12:38:00 GMT foundInMaster: true oldLocations: - https://github.com/cjbooms/fabrikt - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/bump-sh/cli v3: true repositoryMetadata: base64Readme: >- IyBCdW1wIENMSQoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyB3aWR0aD0iMjAlIiBzcmM9Imh0dHBzOi8vYnVtcC5zaC9pY29uLWRlZmF1bHQtbWFza2FibGUtbGFyZ2UucG5nIiAvPgo8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL2RvY3MuYnVtcC5zaC9oZWxwIj5IZWxwPC9hPiB8CiAgPGEgaHJlZj0iaHR0cHM6Ly9idW1wLnNoL3VzZXJzL3NpZ25fdXAiPlNpZ24gdXA8L2E+CjwvcD4KClRoZSBCdW1wLnNoIENMSSBpcyB1c2VkIHRvIGludGVyYWN0IHdpdGggQVBJIGRvY3VtZW50YXRpb24gYW5kIGh1YnMgaG9zdGVkIG9uIEJ1bXAuc2ggZnJvbSB5b3VyIGNob2ljZSBvZiBwb3B1bGFyIEFQSSBkZXNjcmlwdGlvbiBmb3JtYXRzOiBPcGVuQVBJLCBTd2FnZ2VyLCBvciBBc3luY0FQSS4KClVzaW5nIFtPcGVuQVBJXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgKHYzLnggYW5kIHYyLjApIG9yIFtBc3luY0FQSV0oaHR0cHM6Ly93d3cuYXN5bmNhcGkuY29tL2RvY3MvcmVmZXJlbmNlL3NwZWNpZmljYXRpb24vbGF0ZXN0KSAoMi54KSwgeW91IGNhbiBkbyBhbnkgb2YgdGhlIGZvbGxvd2luZzoKCi0gVmFsaWRhdGUgYW4gQVBJIGRvY3VtZW50IGJlZm9yZSBwdWJsaXNoaW5nIHRvIHlvdXIgZG9jdW1lbnRhdGlvbi4KLSBQdWJsaXNoIGFuIEFQSSBkb2N1bWVudCB0byB5b3VyIEJ1bXAuc2ggZG9jdW1lbnRhdGlvbiBvciBodWJzLgotIENvbXBhcmUgdHdvIEFQSSBkb2N1bWVudHMgdG8gZ2VuZXJhdGUgYSBodW1hbi1yZWFkYWJsZSBkaWZmIGZyb20geW91ciBBUEkgZGVmaW5pdGlvbi4KVW5kZXIgdGhlIGhvb2QsIGl0IHVzZXMgdGhlIEFQSSBvZiBbZGV2ZWxvcGVycy5idW1wLnNoXShodHRwczovL2RldmVsb3BlcnMuYnVtcC5zaCkuIEFuZCBpcyBidWlsdCB3aXRoIHRoZSBbYG9jbGlmYF0oaHR0cHM6Ly9vY2xpZi5pbykgZnJhbWV3b3JrIGluIFR5cGVzY3JpcHQuCgpbIVtWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L2J1bXAtY2xpLnN2ZyldKGh0dHBzOi8vbnBtanMub3JnL3BhY2thZ2UvYnVtcC1jbGkpClshW1Rlc3RzXShodHRwczovL2dpdGh1Yi5jb20vYnVtcC1zaC9jbGkvYWN0aW9ucy93b3JrZmxvd3MvY2hlY2tzLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vYnVtcC1zaC9jbGkvYWN0aW9ucy93b3JrZmxvd3MvY2hlY2tzLnltbCkKWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9idW1wLWNsaS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vYnVtcC1zaC9jbGkvYmxvYi9tYXN0ZXIvcGFja2FnZS5qc29uKQoKIyMgVGFibGUgb2YgY29udGVudHMKCiogW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKKiBbVXNhZ2VdKCN1c2FnZSkKKiBbQ29tbWFuZHNdKCNjb21tYW5kcykKKiBbRGV2ZWxvcG1lbnRdKCNkZXZlbG9wbWVudCkKKiBbQ29udHJpYnV0aW5nXSgjY29udHJpYnV0aW5nKQoqIFtWZXJzaW9uaW5nXSgjdmVyc2lvbmluZykKCiMjIEluc3RhbGxhdGlvbgoKVGhlIEJ1bXAuc2ggQ0xJIGlzIGEgbm9kZSBwYWNrYWdlIGN1cnJlbnRseSBkaXN0cmlidXRlZCB2aWEgTlBNLiBUaGlzIG1lYW5zIHlvdSBtdXN0IGhhdmUgdGhlIE5vZGUgdjIwKyBpbnRlcnByZXRlciBpbnN0YWxsZWQgb24geW91ciBjb21wdXRlciBvciBDSSBzZXJ2ZXJzLgoKX0lmIHlvdSBhcmUgbG9va2luZyB0byB1c2UgQnVtcC5zaCBpbiBhIGNvbnRpbnVvdXMgaW50ZWdyYXRpb24gZW52aXJvbm1lbnQgeW91IG1pZ2h0IGJlIGludGVyZXN0ZWQgYnkgW291ciBHaXRodWIgQWN0aW9uXShodHRwczovL2dpdGh1Yi5jb20vbWFya2V0cGxhY2UvYWN0aW9ucy9idW1wLXNoLWFwaS1kb2N1bWVudGF0aW9uLWNoYW5nZWxvZykuXwoKPiBZb3UgY2FuIGRvd25sb2FkIGEgc3RhbmRhbG9uZSBwYWNrYWdlIGRpcmVjdGx5IGZyb20gdGhlIGxhdGVzdAo+IEdpdGh1YiByZWxlYXNlIGFzc2V0cyBpZiB5b3UgZG9u4oCZdCB1c2UgTm9kZS4KezogLmluZm99CgojIyMgR2xvYmFsIGluc3RhbGxhdGlvbgoKVG8gaW5zdGFsbCBpdCBnbG9iYWxseSwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB3aXRoIE5QTToKCmBgYHNoZWxsCm5wbSBpbnN0YWxsIC1nIGJ1bXAtY2xpCmBgYAoKT3IsIHdpdGggWWFybiB2aWE6CgpgYGBzaGVsbAp5YXJuIGdsb2JhbCBhZGQgYnVtcC1jbGkKYGBgCgojIyMgQWRkIEJ1bXAuc2ggdG8geW91ciBOb2RlIHByb2plY3QKCkFzIG91ciBDTEkgaXMgYSBub2RlIHBhY2thZ2UsIHlvdSBjYW4gZWFzaWx5IGVtYmVkIGl0IHRvIHlvdXIgcHJvamVjdCBieSBhZGRpbmcgdGhlIHBhY2thZ2UgdG8geW91ciBgcGFja2FnZS5qc29uYCBmaWxlLCBlaXRoZXIgd2l0aCBOUE06CgpgYGBzaGVsbApucG0gaW5zdGFsbCAtLXNhdmUtZGV2IGJ1bXAtY2xpCmBgYAoKT3Igd2l0aCBZYXJuIHZpYToKCmBgYHNoZWxsCnlhcm4gYWRkIC0tZGV2IGJ1bXAtY2xpCmBgYAoKWW91IGNhbiB0aGVuIHVzZSBhbnkgQnVtcC5zaCBjb21tYW5kcyB3aXRoIGBucHhgIChzYW1lIGFzIGBucG0gZXhlY2ApOgoKYGBgc2hlbGwKbnB4IGJ1bXAgLS1oZWxwCmBgYAoKIyMjIENhbiBJIGluc3RhbGwgQnVtcC5zaCBDTEkgd2l0aG91dCB1c2luZyBOb2RlSlM/CgpVbmZvcnR1bmF0ZWx5LCBhdCB0aGUgbW9tZW50IHdlIG9ubHkgc3VwcG9ydCB0aGUgTm9kZSBlbnZpcm9ubWVudC4gSG93ZXZlciwgeW91IGNhbiBkb3dubG9hZCBhIHN0YW5kYWxvbmUgcGFja2FnZSBkaXJlY3RseSBmcm9tIHRoZSBbbGF0ZXN0IEdpdGh1YiByZWxlYXNlXShodHRwczovL2dpdGh1Yi5jb20vYnVtcC1zaC9jbGkvcmVsZWFzZXMpIGFzc2V0cyB3aGljaCB5b3UgY2FuIHJ1biBhcyBhIHN0YW5kYWxvbmUgYmluYXJ5LiBPciB5b3UgY2FuIHB1c2ggeW91ciBkb2N1bWVudGF0aW9uIHVzaW5nIFtvdXIgQVBJXShodHRwczovL2RldmVsb3BlcnMuYnVtcC5zaC8pIChhZHZhbmNlZCB1c2FnZSBvbmx5KS4KCiMjIFVzYWdlCgpUbyBsaXN0IGFsbCB0aGUgYXZhaWxhYmxlIGNvbW1hbmRzLCBqdXN0IHR5cGUgYGJ1bXBgIGluIHlvdXIgY29tbWFuZCBsaW5lIGVudmlyb25tZW50LgoKYGBgc2hlbGwKJCBidW1wIC0taGVscApUaGUgQnVtcC5zaCBDTEkgaXMgdXNlZCB0byBpbnRlcmFjdCB3aXRoIHlvdXIgQVBJIGRvY3VtZW50YXRpb24gaG9zdGVkIG9uIEJ1bXAuc2ggYnkgdXNpbmcgdGhlIEFQSSBvZiBkZXZlbG9wZXJzLmJ1bXAuc2gKClZFUlNJT04KICBidW1wLWNsaS94LnkueiBsaW51eC14NjQgbm9kZS12MjArCgpVU0FHRQogICQgYnVtcCBbQ09NTUFORF0KCkNPTU1BTkRTCiAgZGVwbG95ICAgQ3JlYXRlIGEgbmV3IHZlcnNpb24gb2YgeW91ciBkb2N1bWVudGF0aW9uIGZyb20gdGhlIGdpdmVuIGZpbGUgb3IgVVJMLgogIGRpZmYgICAgIEdldCBhIGNvbXBhcmlzb24gZGlmZiB3aXRoIHlvdXIgZG9jdW1lbnRhdGlvbiBmcm9tIHRoZSBnaXZlbiBmaWxlIG9yIFVSTC4KICBoZWxwICAgICBEaXNwbGF5IGhlbHAgZm9yIGJ1bXAuCiAgb3ZlcmxheSAgQXBwbHkgYW4gT3BlbkFQSSBzcGVjaWZpZWQgb3ZlcmxheSB0byB5b3VyIEFQSSBkZWZpbml0aW9uLgogIHByZXZpZXcgIENyZWF0ZSBhIGRvY3VtZW50YXRpb24gcHJldmlldyBmcm9tIHRoZSBnaXZlbiBmaWxlIG9yIFVSTC4KYGBgCgogWW91IGNhbiBhbHNvIGdldCBzb21lIGhlbHAgYW55dGltZSBieSBhZGRpbmcgYC0taGVscGAgdG8gYW55IGNvbW1hbmQuIEV4YW1wbGU6IGBidW1wIGRlcGxveSAtLWhlbHBgLgoKIyMjIFByZXBhcmUgeW91ciBCdW1wLnNoIGFjY291bnQKCldoaWxlIHNvbWUgY29tbWFuZHMgZG9uJ3QgbmVlZCBhbnkgQVBJIHRva2VuIChgcHJldmlld2Agb3IgYGRpZmZgKSB5b3Ugd2lsbCBuZWVkIGFuIGFjY2VzcyBrZXkgaWYgeW91IHdhbnQgdG8gaW50ZXJhY3Qgd2l0aCB5b3VyIEJ1bXAuc2ggZG9jdW1lbnRhdGlvbi4KCkhlYWQgb3ZlciB0byB5b3VyIERvY3VtZW50YXRpb24gc2V0dGluZ3MgaW4gdGhlIOKAnENJIGRlcGxveW1lbnTigJ0gc2VjdGlvbiBvciB5b3VyIEFjY291bnQgb3IgT3JnYW5pemF0aW9uIHNldHRpbmdzIGluIHRoZSDigJxBUEkga2V5c+KAnSBzZWN0aW9uIHRvIGZldGNoIGEgcGVyc29uYWwgdG9rZW4gZm9yIGxhdGVyIHVzYWdlLgoKIyMgQ29tbWFuZHMKCiogW2BidW1wIGRlcGxveSBbRklMRV1gXSgjdGhlLWRlcGxveS1jb21tYW5kKQoqIFtgYnVtcCBkaWZmIFtGSUxFXWBdKCN0aGUtZGlmZi1jb21tYW5kKQoqIFtgYnVtcCBwcmV2aWV3IFtGSUxFXWBdKCN0aGUtcHJldmlldy1jb21tYW5kKQoqIFtgYnVtcCBvdmVybGF5IFtERUZJTklUSU9OX0ZJTEVdIFtPVkVSTEFZX0ZJTEVdYF0oI3RoZS1vdmVybGF5LWNvbW1hbmQpCgojIyMgVGhlIGBkZXBsb3lgIGNvbW1hbmQKCldoZW4gYW4gQVBJIGlzIHVwZGF0ZWQsIHRoZSBkb2N1bWVudGF0aW9uIHNob3VsZCBiZSB1cGRhdGVkIGF0IHRoZSBzYW1lIHRpbWUuIFRoaXMgaXMgd2hhdCB0aGUgZGVwbG95IGNvbW1hbmQgaXMgZm9yLgoKYGBgc2hlbGwKYnVtcCBkZXBsb3kgcGF0aC90by9hcGktZG9jdW1lbnQueW1sIC0tZG9jIG15LWRvY3VtZW50YXRpb24gLS10b2tlbiAkRE9DX1RPS0VOCmBgYAoKPiBZb3UgY2FuIGZpbmQgeW91ciBvd24gYG15LWRvY3VtZW50YXRpb25gIHNsdWcgYW5kIGAkRE9DX1RPS0VOYCBhcGkga2V5IGZyb20geW91ciBbZG9jdW1lbnRhdGlvbiBzZXR0aW5nc10oaHR0cHM6Ly9idW1wLnNoL2RvY3MpLgp7OiAuaW5mb30KCllvdSBjYW4gYWxzbyBkZXBsb3kgYSBnaXZlbiBBUEkgZG9jdW1lbnQgdG8gYSBkaWZmZXJlbnQgYnJhbmNoIG9mIHlvdXIgZG9jdW1lbnRhdGlvbiB3aXRoIHRoZSBgLS1icmFuY2ggPGJyYW5jaC1uYW1lPmAgcGFyYW1ldGVyLiBQbGVhc2Ugbm90ZSB0aGUgYnJhbmNoIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzbuKAmXQgZXhpc3QuIE1vcmUgZGV0YWlscyBhYm91dCB0aGUgYnJhbmNoaW5nIGZlYXR1cmUgYXJlIGF2YWlsYWJsZSBvbiBbdGhpcyBkZWRpY2F0ZWQgaGVscCBwYWdlXShodHRwczovL2RvY3MuYnVtcC5zaC9oZWxwL2JyYW5jaGluZykuIEUuZy4gZGVwbG95IHRoZSBBUEkgZG9jdW1lbnQgdG8gdGhlIGBzdGFnaW5nYCBicmFuY2ggb2YgdGhlIGRvY3VtZW50YXRpb246CgpgYGBzaGVsbApidW1wIGRlcGxveSBwYXRoL3RvL2FwaS1kb2N1bWVudC55bWwgLS1kb2MgbXktZG9jdW1lbnRhdGlvbiAtLXRva2VuICRET0NfVE9LRU4gLS1icmFuY2ggc3RhZ2luZwpgYGAKCiMjIyMgRGVwbG95IGEgZm9sZGVyIGFsbCBhdCBvbmNlCgpJZiB5b3UgYWxyZWFkeSBoYXZlIGEgaHViIGluIHlvdXIgW0J1bXAuc2hdKGh0dHBzOi8vYnVtcC5zaCkgYWNjb3VudCwgeW91IGNhbiBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBkb2N1bWVudGF0aW9uIGFuZCBkZXBsb3kgaXQgaW50byB0aGF0IGh1YiBieSBwdWJsaXNoaW5nIGEgd2hvbGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgbXVsdGlwbGUgQVBJIGRvY3VtZW50cyBpbiBhIHNpbmdsZSBjb21tYW5kOgoKYGBgc2hlbGwKYnVtcCBkZXBsb3kgZGlyL3BhdGgvdG8vYXBpcy8gLS1hdXRvLWNyZWF0ZSAtLWh1YiBteS1odWIgLS10b2tlbiAkSFVCX1RPS0VOCmBgYAoKPiBZb3UgY2FuIGZpbmQgeW91ciBvd24gYG15LWh1YmAgc2x1ZyBhbmQgYCRIVUJfVE9LRU5gIGFwaSBrZXkgZnJvbSB5b3VyIFtodWIgc2V0dGluZ3NdKGh0dHBzOi8vYnVtcC5zaC9odWJzKS4KezogLmluZm99CgpQbGVhc2Ugbm90ZSwgYnkgZGVmYXVsdCwgb25seSBmaWxlcyBuYW1lZCBge3NsdWd9LWFwaS5bZm9ybWF0XWAgYXJlIHB1Ymxpc2hlZC4gV2hlcmUgYHtzbHVnfWAgaXMgYSBuYW1lIGZvciB5b3VyIEFQSSBhbmQgYFtmb3JtYXRdYCBpcyBlaXRoZXIgYHlhbWxgIG9yIGBqc29uYC4gQWRqdXN0IHRvIHlvdXIgZmlsZSBuYW1pbmcgY29udmVudGlvbiB1c2luZyB0aGUgYC0tZmlsZW5hbWUtcGF0dGVybiA8cGF0dGVybj5gIG9wdGlvbi4KCk5vdGUgdGhhdCBpdCBfY2FuXyBpbmNsdWRlIGAqYCB3aWxkY2FyZCBzcGVjaWFsIGNoYXJhY3RlciwgYnV0ICoqbXVzdCoqIGluY2x1ZGUgdGhlIGB7c2x1Z31gIGZpbHRlciB0byBleHRyYWN0IHlvdXIgZG9jdW1lbnRhdGlvbuKAmXMgc2x1ZyBmcm9tIHRoZSBmaWxlbmFtZS4gVGhlIHBhdHRlcm4gY2FuIGFsc28gaGF2ZSBhbnkgb3RoZXIgb3B0aW9uYWwgZml4ZWQgY2hhcmFjdGVycy4KCkhlcmXigJlzIGEgcHJhY3RpY2FsIGV4YW1wbGUuIExldCdzIGFzc3VtZSB0aGF0IHlvdSBoYXZlIHRoZSBmb2xsb3dpbmcgZmlsZXMgaW4geW91ciBgcGF0aC90by9hcGlzL2AgZGlyZWN0b3J5OgoKYGBgCnBhdGgvdG8vYXBpcwrilJTilIAgcHJpdmF0ZS1hcGktdXNlcnMtc2VydmljZS5qc29uCuKUlOKUgCBwYXJ0bmVyLWFwaS1wYXltZW50cy1zZXJ2aWNlLnltbArilJTilIAgcHVibGljLWFwaS1jb250cmFjdHMtc2VydmljZS55bWwK4pSU4pSAIGRhdGEuanNvbgrilJTilIAgUkVBRE1FLm1kCmBgYAoKSW4gb3JkZXIgdG8gZGVwbG95IHRoZSAzIHNlcnZpY2VzIEFQSSBkZWZpbml0aW9uIGZpbGVzIGZyb20gdGhpcyBmb2xkZXIgKGBwcml2YXRlLWFwaS11c2Vycy1zZXJ2aWNlLmpzb25gLCBgcGFydG5lci1hcGktcGF5bWVudHMtc2VydmljZS55bWxgIGFuZCBgcHVibGljLWFwaS1jb250cmFjdHMtc2VydmljZS55bWxgKSwgeW91IGNhbiBleGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYApidW1wIGRlcGxveSBwYXRoL3RvL2FwaXMvIC0taHViIG15LWh1YiAtLWZpbGVuYW1lLXBhdHRlcm4gJyotYXBpLXtzbHVnfS1zZXJ2aWNlJwpgYGAKCiMjIyMgVmFsaWRhdGUgYW4gQVBJIGRvY3VtZW50CgpTaW11bGF0ZSB5b3VyIEFQSSBkb2N1bWVudCdzIGRlcGxveW1lbnQgdG8gZW5zdXJlIGl0IGlzIHZhbGlkIGJ5IGFkZGluZyB0aGUgYC0tZHJ5LXJ1bmAgZmxhZyB0byB0aGUgYGRlcGxveWAgY29tbWFuZC4gSXQgaXMgaGFuZHkgaW4gYSBDb250aW51b3VzIEludGVncmF0aW9uIGVudmlyb25tZW50IHJ1bm5pbmcgYSB0ZXN0IGRlcGxveW1lbnQgb3V0c2lkZSB5b3VyIG1haW4gYnJhbmNoOgoKYGBgc2hlbGwKYnVtcCBkZXBsb3kgcGF0aC90by9hcGktZG9jdW1lbnQueW1sIC0tZHJ5LXJ1biAtLWRvYyBteS1kb2N1bWVudGF0aW9uIC0tdG9rZW4gJERPQ19UT0tFTgpgYGAKClBsZWFzZSBjaGVjayBgYnVtcCBkZXBsb3kgLS1oZWxwYCBmb3IgbW9yZSB1c2FnZSBkZXRhaWxzLgoKIyMjIFRoZSBgZGlmZmAgY29tbWFuZAoKVXNpbmcgdGhlIGBkaWZmYCBjb21tYW5kIGNhbiBoZWxwIHRvIHNwb3QgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgbG9jYWwgQVBJCmRvY3VtZW50IGFuZCB0aGUgbGF0ZXN0IGRlcGxveWVkIHZlcnNpb24uCgojIyMjIFB1YmxpYyBBUEkgZGlmZnMKCkZyb20gYW55IHR3byBBUEkgZG9jdW1lbnRzIG9yIFVSTHMsIHlvdSBjYW4gcmV0cmlldmUgYSBjb21wcmVoZW5zaXZlIGNoYW5nZWxvZwpvZiB3aGF0IGhhcyBjaGFuZ2VkIGJldHdlZW4gdGhlbS4KCmBgYHNoZWxsCiQgYnVtcCBkaWZmIHBhdGgvdG8veW91ci9maWxlLnltbCBwYXRoL3RvL3lvdXIvc2Vjb25kX2ZpbGUueW1sCiogQ29tcGFyaW5nIHRoZSB0d28gZ2l2ZW4gZGVmaW5pdGlvbiBmaWxlcy4uLiBkb25lCk1vZGlmaWVkOiBHRVQgL2NvbnNvbW1hdGlvbnMKICBSZXNwb25zZSBtb2RpZmllZDogMjAwCiAgICBbQnJlYWtpbmddIEJvZHkgYXR0cmlidXRlIG1vZGlmaWVkOiBlbmVyZ2llCmBgYAoKQnkgZGVmYXVsdCB0aGUgY29tbWFuZCB3aWxsIGFsd2F5cyBleGl0IHdpdGggYSBzdWNjZXNzZnVsIHJldHVybiBjb2RlLiBJZiB5b3UKd2FudCB0byB1c2UgdGhpcyBjb21tYW5kIGluIGEgQ0kgZW52aXJvbm1lbnQgYW5kIHdhbnQgdGhlIGNvbW1hbmQgdG8gZmFpbCAqKmluCmNhc2Ugb2YgYSBicmVha2luZyBjaGFuZ2UqKiwgeW91IHdpbGwgbmVlZCB0byBhZGQgdGhlIGAtLWZhaWwtb24tYnJlYWtpbmdgIGZsYWcKdG8geW91ciBkaWZmIGNvbW1hbmQuCgpCeSBkZWZhdWx0IGlmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgQ0k9MWAgaXMgcHJlc2VudCAoaW4gbW9zdCBjb250aW51b3VzCmludGVncmF0aW9uIGVudmlyb25tZW50KSwgdGhlIGZsYWcgd2lsbCBiZSBlbmFibGVkLiBJbiB0aGF0IGNhc2UgeW91IGNhbiBkaXNhYmxlCnRoZSBmYWlsdXJlcyB3aXRoIGAtLW5vLWZhaWwtb24tYnJlYWtpbmdgIGZsYWcuCgpZb3UgY2FuIGFsc28gdGVzdCB0aGlzIGZlYXR1cmUgaW4gb3VyIGRlZGljYXRlZCB3ZWIgYXBwbGljYXRpb24gYXQKPGh0dHBzOi8vYXBpLWRpZmYuaW8vPi4KCiMjIyMgR2l0SHViIEludGVncmF0aW9uCgpJZiB5b3Ugd2FudCB0byByZWNlaXZlIGF1dG9tYXRpYyBgYnVtcCBkaWZmYCByZXN1bHRzIG9uIEdpdGh1YiBQdWxsIFJlcXVlc3RzIHlvdQptaWdodCBiZSBpbnRlcmVzdGVkIGJ5IFtvdXIgR2l0aHViCkFjdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtldHBsYWNlL2FjdGlvbnMvYnVtcC1zaC1hcGktZG9jdW1lbnRhdGlvbi1jaGFuZ2Vsb2cjZGVwbG95LWRvY3VtZW50YXRpb24tLWRpZmYtb24tcHVsbC1yZXF1ZXN0cykKd2hpY2ggaGFzIHN1cHBvcnQgZm9yIHRoZSBkaWZmIGNvbW1hbmQuCgojIyMjIEF1dGhlbnRpY2F0ZWQgZGlmZnMgcmVsYXRlZCB0byB5b3VyIEJ1bXAuc2ggZG9jdW1lbnRhdGlvbgoKRnJvbSBhbiBleGlzdGluZyBCdW1wLnNoIGRvY3VtZW50YXRpb24sIHRoZSBgZGlmZmAgY29tbWFuZCB3aWxsIHJldHJpZXZlIGEKY29tcGFyaXNvbiBjaGFuZ2Vsb2cgYmV0d2VlbiB5b3VyIGxhdGVzdCBwdWJsaXNoZWQgZG9jdW1lbnRhdGlvbiBhbmQgdGhlIGdpdmVuCmZpbGUgb3IgVVJMOgoKYGBgc2hlbGwKYnVtcCBkaWZmIHBhdGgvdG8veW91ci9maWxlLnltbCAtLWRvYyBteS1kb2N1bWVudGF0aW9uIC0tdG9rZW4gJERPQ19UT0tFTgpgYGAKCklmIHlvdSB3YW50IHRvIGNvbXBhcmUgdHdvIHVucHVibGlzaGVkIHZlcnNpb25zIG9mIHlvdXIgQVBJIGRvY3VtZW50LCB0aGUgYGRpZmZgIGNvbW1hbmQgY2FuIHJldHJpZXZlIGEgY29tcGFyaXNvbiBjaGFuZ2Vsb2cgYmV0d2VlbiB0d28gZ2l2ZW4gZmlsZSBvciBVUkwsIOKAnGFzIHNpbXBsZSBhcyBgZ2l0IGRpZmZg4oCdOgoKYGBgc2hlbGwKYnVtcCBkaWZmIHBhdGgvdG8veW91ci9maWxlLnltbCBwYXRoL3RvL3lvdXIvbmV4dC1maWxlLnltbCAtLWRvYyBteS1kb2N1bWVudGF0aW9uIC0tdG9rZW4gJERPQ19UT0tFTgpgYGAKClBsZWFzZSBjaGVjayBgYnVtcCBkaWZmIC0taGVscGAgZm9yIGZ1bGwgdXNhZ2UgZGV0YWlscy4KCiMjIyMgRGlmZnMgd2l0aCBvdmVybGF5ZWQgc291cmNlIGZpbGVzCgpUaGUgYGJ1bXAgZGlmZmAgY29tbWFuZCBhbHNvIHN1cHBvcnRzIFtvdmVybGF5c10oI3RoZS1vdmVybGF5LWNvbW1hbmQpLiBUaGlzIG1lYW5zIHlvdSBjYW4gcGFzcyB0aGUgYC0tb3ZlcmxheSBteS1vdmVybGF5LWZpbGUueW1sYCBmbGFnIHRvIHRoZSBjb21tYW5kIGFuZCBpdCB3aWxsIGFwcGx5IHRoZSBvdmVybGF5IG9uIGJvdGggZmlsZXMgKipiZWZvcmUqKiBydW5uaW5nIHRoZSBkaWZmLiBFLmcuOgoKYGBgc2hlbGwKYnVtcCBkaWZmIC0tb3ZlcmxheSBteS1vdmVybGF5LnltbCBwYXRoL3RvL3lvdXIvZmlsZS55bWwgcGF0aC90by95b3VyL25leHQtZmlsZS55bWwKYGBgCgojIyMgVGhlIGBwcmV2aWV3YCBjb21tYW5kCgpXaGVuIHdyaXRpbmcgZG9jdW1lbnRhdGlvbiwgeW91IG1pZ2h0IHdhbnQgdG8gcHJldmlldyBob3cgaXQgcmVuZGVycyBvbiBCdW1wLnNoLgpUaGlzIGlzIHByZWNpc2VseSB0aGUgZ29hbCBvZiB0aGUgYHByZXZpZXdgIGNvbW1hbmQ6IGl0IHdpbGwgY3JlYXRlIHRlbXBvcmFyeQpkb2N1bWVudGF0aW9uIHdpdGggYSB1bmlxdWUgVVJMLCB3aGljaCB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgYSBzaG9ydCBwZXJpb2QgKDMwCm1pbnV0ZXMpLgoKVXNhZ2UgZnJvbSBhIGxvY2FsIE9wZW5BUEkgb3IgQXN5bmNBUEkgZG9jdW1lbnQ6CgpgYGBzaGVsbApidW1wIHByZXZpZXcgcGF0aC90by9maWxlLmpzb24KYGBgCgpZb3UgY2FuIGFsc28gcHJldmlldyBhIGRvY3VtZW50IGF2YWlsYWJsZSB2aWEgYSBVUkw6CgpgYGBzaGVsbApidW1wIHByZXZpZXcgaHR0cHM6Ly9kZXZlbG9wZXJzLmJ1bXAuc2gvc291cmNlLnlhbWwKYGBgCgojIyMjIExpdmUgcHJldmlldwoKQnkgdXNpbmcgdGhlIGAtLWxpdmVgIGZsYWcgeW91IGNhbiBzdGF5IGZvY3VzZWQgb24gQVBJIGRlc2lnbiAoT3BlbkFQSSBvciBBc3luY0FQSSBmaWxlKSB3aGlsZSBzZWVpbmcgYSBjb250aW51b3VzbHkgdXBkYXRlZCBwcmV2aWV3IGVhY2ggdGltZSB5b3Ugc2F2ZSB5b3VyIEFQSSBkb2N1bWVudC4KCi0gTGF1bmNoIHRoZSBsaXZlIHByZXZpZXcgY29tbWFuZCBpbiB5b3VyIHRlcm1pbmFsCgpgYGBzaGVsbApidW1wIHByZXZpZXcgLS1saXZlIC0tb3BlbiBhcGktZG9jdW1lbnQueWFtbApgYGAKCi0gRWRpdCB5b3VyIGBhcGktZG9jdW1lbnQueWFtbGAgZmlsZSBpbiB5b3VyIGZhdm9yaXRlIHRleHQgZWRpdG9yLgotIFdhdGNoIHRoZSBsaXZlIHByZXZpZXcgYmVpbmcgdXBkYXRlZCBlYWNoIHRpbWUgeW91IHNhdmUgeW91ciBmaWxlLgotIFRoZSBhZGRpdGlvbmFsIGAtLW9wZW5gIGZsYWcgaGVscHMgdG8gYXV0b21hdGljYWxseSBvcGVuIHRoZSBwcmV2aWV3IFVSTCBpbiB5b3VyIGJyb3dzZXIuCgo+IFlvdSBjYW4gY3JlYXRlIGFzIG1hbnkgcHJldmlld3MgYXMgeW91IGxpa2Ugd2l0aG91dCBiZWluZyBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIGEgKipmcmVlIGFuZCB1bmxpbWl0ZWQgc2VydmljZSoqLgp7OiAuaW5mb30KClBsZWFzZSBjaGVjayBgYnVtcCBwcmV2aWV3IC0taGVscGAgZm9yIG1vcmUgdXNhZ2UgZGV0YWlscwoKIyMjIFRoZSBgb3ZlcmxheWAgY29tbWFuZAoKVGhlIFtPdmVybGF5IFNwZWNpZmljYXRpb25dKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb3ZlcmxheS92MS4wLjAuaHRtbCkgZnJvbSB0aGUgT3BlbkFQSSBJbml0aWF0aXZlIG1ha2VzIGl0IHBvc3NpYmxlIHRvIG1vZGlmeSB0aGUgY29udGVudCBvZiBhbiBBUEkgZGVmaW5pdGlvbiBieSBhZGRpbmcgYSBsYXllciBvbiB0b3Agb2YgaXQuIFRoYXQgbGF5ZXIgaGVscHMgYWRkaW5nLCByZW1vdmluZyBvciBjaGFuZ2luZyBzb21lIG9yIGFsbCBvZiB0aGUgY29udGVudCBvZiB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbi4gCgpUaGUgYGJ1bXAgb3ZlcmxheWAgY29tbWFuZCB0YWtlcyBhbiBvcmlnaW5hbCBBUEkgZG9jdW1lbnQsIGFwcGxpZXMgdGhlIGNoYW5nZXMgZnJvbSB0aGUgb3ZlcmxheSBkb2N1bWVudCwgYW5kIG91dHB1dHMgYSBtb2RpZmllZCB2ZXJzaW9uLiBObyBjaGFuZ2VzIGFyZSBtYWRlIGRpcmVjdGx5IHRvIHRoZSBvcmlnaW5hbCBkb2N1bWVudC4KCmBgYHNoZWxsCmJ1bXAgb3ZlcmxheSBhcGktZG9jdW1lbnQueWFtbCBvdmVybGF5LnlhbWwKYGBgCgpUbyByZWRpcmVjdCB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kIHRvIGEgbmV3IGZpbGUgeW91IGNhbiBydW46CgpgYGBzaGVsbApidW1wIG92ZXJsYXkgYXBpLWRvY3VtZW50LnlhbWwgb3ZlcmxheS55YW1sID4gbW9kaWZpZWQtYXBpLWRvY3VtZW50LnlhbWwKYGBgCgpZb3UgY2FuIGFsc28gYXBwbHkgdGhlIG92ZXJsYXkgdXNpbmcgdGhlIFtgZGVwbG95YCBjb21tYW5kXSgjdGhlLWRlcGxveS1jb21tYW5kKSB3aXRoIHRoZSBgLS1vdmVybGF5YCBmbGFnOgoKYGBgc2hlbGwKYnVtcCBkZXBsb3kgYXBpLWRvY3VtZW50LnlhbWwgLS1kb2MgbXktZG9jIC0tdG9rZW4gbXktdG9rZW4gLS1vdmVybGF5IG92ZXJsYXkueWFtbApgYGAKCklmIHRoZXJlIGFyZSBtdWx0aXBsZSBvdmVybGF5cyB3aGljaCBuZWVkIHRvIGJlIGFwcGxpZWQsIHRoZSBgLS1vdmVybGF5YCBjYW4gYmUgcGFzc2VkIG11bHRpcGxlIHRpbWVzLgoKYGBgc2hlbGwKYnVtcCBkZXBsb3kgYXBpLWRvY3VtZW50LnlhbWwgXAogIC0tZG9jIG15LWRvYyBcCiAgLS10b2tlbiBteS10b2tlbiBcCiAgLS1vdmVybGF5IG92ZXJsYXkxLnlhbWwgXAogIC0tb3ZlcmxheSBvdmVybGF5Mi55YW1sCmBgYAoKIyMgRGV2ZWxvcG1lbnQKCk1ha2Ugc3VyZSB0byBoYXZlIE5vZGUuanMgKEF0IGxlYXN0IHYyMCkgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZS4KCi0gSW5zdGFsbCBub2RlIGRlcGVuZGVuY2llcyB3aXRoCgogIGBgYHNoZWxsCiAgbnBtIGluc3RhbGwKICBgYGAKCi0gQ29tcGlsZSB0aGUgVHlwZXNjcmlwdCBjb2RlCgoKICBgYGBzaGVsbAogIG5wbSBydW4gYnVpbGQKICBucG0gcnVuIGNsZWFuICMgUmVtb3ZlIGJ1aWxkIGFydGlmYWN0cwogIGBgYAoKLSBGb3JtYXQgdGhlIGNvZGViYXNlIHRvIGNvbXBseSB3aXRoIHRoZSBsaW50ZXIgcnVsZXMKCiAgYGBgc2hlbGwKICBucG0gcnVuIGZtdAogIGBgYAoKLSBSdW4gdGhlIHRlc3Qgc3VpdGVzCgogIGBgYHNoZWxsCiAgbnBtIHJ1biB0ZXN0CiAgbnBtIHJ1biB0ZXN0LWNvdmVyYWdlICMgUnVuIHRlc3RzIHdpdGggY292ZXJhZ2UKICBgYGAKCiMjIyBVc2UgcGFja2FnZSBpbiBsb2NhbCBlbnZpcm9ubWVudAoKWW91IGNhbiBydW4gdGhlIHBhY2thZ2UgYnkgZXhlY3V0aW5nIHRoZSBmaWxlIGBiaW4vcnVuLmpzYCBsb2NhbGx5OgoKICBgYGBzaGVsbAogIGJpbi9ydW4uanMKICBgYGAKCkZvciBleGFtcGxlIHRvIGdlbmVyYXRlIGEgcHJldmlldzoKCiAgYGBgc2hlbGwKICAuL2Jpbi9ydW4uanMgcHJldmlldyBwYXRoL3RvL2ZpbGUuanNvbgogID4gWW91ciBwcmV2aWV3IGlzIHZpc2libGUgYXQ6IGh0dHBzOi8vYnVtcC5zaC9wcmV2aWV3LzQyCiAgYGBgCgpQbGVhc2Ugbm90ZSB0aGF0IGV2ZW4gaWYgQ0xJIGlzIHJ1bm5pbmcgbG9jYWxseSwgYnkgZGVmYXVsdCByZXF1ZXN0cyBhcmUgc2VudCB0byBbQnVtcC5zaCBBUEldKGh0dHBzOi8vZGV2ZWxvcGVycy5idW1wLnNoLykuCgpJZiB5b3UgaGF2ZSBhIGxvY2FsIHZlcnNpb24gb2YgdGhlIEJ1bXAuc2ggQVBJLCB5b3UgY2FuIHJ1biBDTEkgMTAwJSBpbiBsb2NhbCBlbnZpcm9ubWVudApieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgQlVNUF9IT1NUYDoKCiAgYGBgc2hlbGwKICBCVU1QX0hPU1Q9Imh0dHA6Ly9sb2NhbGhvc3Q6MzAwMCIgLi9iaW4vcnVuLmpzIHByZXZpZXcgcGF0aC90by9maWxlLmpzb24KICA+IFlvdXIgcHJldmlldyBpcyB2aXNpYmxlIGF0OiBodHRwOi8vbG9jYWxob3N0OjMwMDAvcHJldmlldy80MgogIGBgYAoKIyMgTGljZW5zZQoKVGhlIEJ1bXAgQ0xJIHByb2plY3QgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFtNSVQgTGljZW5zZV0oaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuCgojIyBDb250cmlidXRpbmcKCkJ1ZyByZXBvcnRzIGFuZCBwdWxsIHJlcXVlc3RzIGFyZSB3ZWxjb21lIG9uIEdpdEh1YiBhdCA8aHR0cHM6Ly9naXRodWIuY29tL2J1bXAtc2gvY2xpPi4gVGhpcyBwcm9qZWN0IGlzIGludGVuZGVkIHRvIGJlIGEgc2FmZSwgd2VsY29taW5nIHNwYWNlIGZvciBjb2xsYWJvcmF0aW9uLCBhbmQgY29udHJpYnV0b3JzIGFyZSBleHBlY3RlZCB0byBhZGhlcmUgdG8gdGhlIFtDb250cmlidXRvciBDb3ZlbmFudF0oaHR0cDovL2NvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZykgY29kZSBvZiBjb25kdWN0LgoKIyMgQ29kZSBvZiBDb25kdWN0CgpFdmVyeW9uZSBpbnRlcmFjdGluZyBpbiB0aGUgQnVtcC1DTEkgcHJvamVjdCBjb2RlYmFzZXMsIGlzc3VlIHRyYWNrZXJzLCBjaGF0IHJvb21zLCBhbmQgbWFpbGluZyBsaXN0cyBpcyBleHBlY3RlZCB0byBmb2xsb3cgdGhlIFtjb2RlIG9mIGNvbmR1Y3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9idW1wLXNoLy5naXRodWIvYmxvYi9tYWluL0NPREVfT0ZfQ09ORFVDVC5tZCkuCgojIyBUaGFua3MKCi0gW0xvcm5hIE1pdGNoZWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb3JuYWphbmUvKSBmb3IgW29wZW5hcGktb3ZlcmxheS1qc10oaHR0cHM6Ly9naXRodWIuY29tL2xvcm5hamFuZS9vcGVuYXBpLW92ZXJsYXlzLWpzKS4KLSBbUmljb10oaHR0cHM6Ly9naXRodWIuY29tL3JzdGFjcnV6KSBmb3IgdHJhbnNmZXJyaW5nIHRoZSBvd25lcnNoaXAgb2YgdGhlIGBidW1wLWNsaWAgcGFja2FnZSBuYW1lLgo= readmeEtag: '"1c739bbc92d4101df4f479422f70a80c197c0690"' readmeLastModified: Thu, 27 Nov 2025 10:50:29 GMT repositoryId: 353317141 description: Bump.sh CLI - Deploy your OpenAPI & AsyncAPI documentations from your CI created: '2021-03-31T10:29:18Z' updated: '2026-01-30T10:25:46Z' language: TypeScript archived: false stars: 64 watchers: 4 forks: 8 owner: bump-sh logo: https://avatars.githubusercontent.com/u/33217836?v=4 license: MIT repoEtag: '"82df7bbd260100ef2913755b51afd7160484b9be46638eebbc90d6a75196cb85"' repoLastModified: Fri, 30 Jan 2026 10:25:46 GMT foundInMaster: true category: - Documentation - Server Implementations id: 591ed1a3d5bb0d3944aa1ab23f82edfa name: Bump.sh homepage: https://github.com/bump-sh/cli language: SaaS source_description: > Bump.sh generates elegant documentation and changelogs from your OpenAPI specifications. Git diff, for your API. Integrates with CI and Slack. link: https://bump.sh v2: true v3_1: true - source: https://openapi.tools/ name: Python OpenAPI Generator category: - Code Generators - Server Implementations link: https://github.com/wael34218/python_openapi_generator language: Python repository: https://github.com/wael34218/python_openapi_generator source_description: This library facilitates creating OpenAPI document for Python projects. v2: false v3: true repositoryMetadata: base64Readme: >- IyBQeXRob24gT3BlbkFQSSAoU3dhZ2dlcikgR2VuZXJhdG9yClRoaXMgbGlicmFyeSBmYWNpbGl0YXRlcyBjcmVhdGluZyBPcGVuQVBJIChTd2FnZ2VyKSBkb2N1bWVudCBmb3IgUHl0aG9uIHByb2plY3RzLgoKSSB3b3JrZWQgZm9yIGEgbG9uZyB0aW1lIGluIGJ1aWxkaW5nIEFQSXMgYW5kIHNlcnZpY2VzLCBhbmQgSSBjYW4gdGVsbCB5b3UgdGhhdCBvbmUgdGhpbmcgSSBnb3Qgc2ljayBvZiBoZWFyaW5nIHdhcyAiV2h5IHlvdXIgQVBJcyBhcmUgbm90IGRvY3VtZW50ZWQ/Ii4KSSBzZWFyY2hlZCBsb25nIGFuZCBoYXJkIGZvciBhIGxpYnJhcnkgdGhhdCBnZW5lcmF0ZXMgZG9jdW1lbnRhdGlvbiB3aXRob3V0IG1lIGdvaW5nIGJhY2sgYW5kIGZvcnRoIGVkaXRpbmcgeWFtbC9qc29uL21hcmtkb3duIGZpbGVzIC4uLiBpdHMgZW5vdWdoIHRoYXQgSSB3b3JyeSBhYm91dCB3cml0dGluZyB1bml0IGFuZCBpbnRlZ3JhdGlvbiB0ZXN0cy4KQWZ0ZXIgbG9uZyBzZWFyY2ggSSBmb3VuZCAwIGxpYnJhcmllcyB0aGF0IGRvZXMgdGhhdC4KSSB3YXMgd29uZGVyaW5nIHdoeSBub2JvZHkgaGFzIHlldCBleHBsb2l0ZWQgdGhpcyBnYXAgaW4gYSB2ZXJ5IGx1Y3JhdGl2ZSBtYXJrZXQsIHdvbmRlciBubyBsb25nZXIuIEhlbHAgaXMgYXQgaGFuZC4KCiMjIEluc3RhbGxhdGlvbgoKYGBgCnBpcCBpbnN0YWxsIG9wZW5hcGktZ2VuZXJhdG9yCmBgYAoKIyMgR2VuZXJhdGUgeW91ciBBUEkgdXNpbmcgc2ltcGxlIHNjcmlwdAoKYGBgCmZyb20gb3BlbmFwaV9nZW5lcmF0b3IgaW1wb3J0IE9wZW5hcGlHZW5lcmF0b3IKaW1wb3J0IHJlcXVlc3RzCgojIFN0ZXAgMTogQ3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBnZW5lcmF0b3IKZ2VuID0gT3BlbmFwaUdlbmVyYXRvcigiVGl0bGUiLCAiVGhpcyBpcyBhIHRlc3RpbmcgZGVzY3JpcHRpb24iLCAidjAuMC4xIiwgc2VydmVyPSJodHRwczovL3N3YXBpLmNvLyIpCgojIFN0ZXAgMjogQWRkIGFsbCByZXNwb25zZXMKcmVzcG9uc2UgPSByZXF1ZXN0cy5nZXQoImh0dHBzOi8vc3dhcGkuY28vYXBpL3BsYW5ldHMvIiwgcGFyYW1zPXsicGFnZSI6IDJ9KQpnZW4uYWRkX3Jlc3BvbnNlKHJlc3BvbnNlLCBkZXNjcmlwdGlvbj0iUmV0cmlldmluZyBwbGFuZXRzIikKCnJlc3BvbnNlID0gcmVxdWVzdHMuZ2V0KCJodHRwczovL3N3YXBpLmNvL2FwaS9wZW9wbGUvIiwgcGFyYW1zPXsicGFnZSI6IDN9LCBkZXNjcmlwdGlvbj0iUmV0cmlldmluZyBwZW9wbGUiKQpnZW4uYWRkX3Jlc3BvbnNlKHJlc3BvbnNlLCBkZXNjcmlwdGlvbj0iUmV0cmlldmluZyBwZW9wbGUiKQoKIyBTdGVwIDM6RXhwb3J0Cmdlbi5leHBvcnQoImV4YW1wbGUueW1sIiwgZXh0ZW5zaW9uPSJ5YW1sIikKIyBBbHNvIGNhbiBzZXQgdGhlIGV4dGVuc2lvbiB0byBganNvbmAKCiMgU3RlcCA0OiBQcm9maXQKYGBgCg== readmeEtag: '"d48e945e4ce335a8b31764e46ccf2b60bd829eb7"' readmeLastModified: Thu, 07 Nov 2019 03:53:13 GMT repositoryId: 173452649 description: >- This library facilitates creating OpenAPI (Swagger) document for Python projects. created: '2019-03-02T13:41:09Z' updated: '2025-10-06T09:27:02Z' language: Python archived: false stars: 12 watchers: 2 forks: 2 owner: wael34218 logo: https://avatars.githubusercontent.com/u/334876?v=4 license: MIT repoEtag: '"fe0641029e16019306a348b1546a71c41fadc1a002acc0dd60ee8d2e103edaa9"' repoLastModified: Mon, 06 Oct 2025 09:27:02 GMT foundInMaster: true id: b7a4b7aa58bd888b38858294394928aa - source: https://openapi.tools/ name: Fix My OpenAPI - A VSCode Extension by APIMatic category: - Text Editors - Description Validators language: Any link: >- https://marketplace.visualstudio.com/items?itemName=apimatic-developers.apimatic-for-vscode source_description: > APIMatic's VSCode extension helps you validate, lint, and auto-fix your OpenAPI files, along with other capabilities such as API transformations, API audit report generation, SDKs generation, and more. v2: true v3: true v3_1: true id: 587a6f1da562ea627d000b675af8c3d1 foundInMaster: true - source: https://openapi.tools/ name: - VSCode OpenAPI Editor - 42Crunch IntelliJ OpenAPI Editor category: - Text Editors - Server Implementations language: Any link: - >- https://marketplace.visualstudio.com/items?itemName=42Crunch.vscode-openapi - https://plugins.jetbrains.com/plugin/14837-openapi-swagger-editor repository: https://github.com/42crunch/vscode-openapi source_description: > OpenAPI extension for Visual Studio Code - new file templates, navigation, intellisense, code snippets. v2: true v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIEVkaXRpbmcgd2l0aCBBUEkgUXVhbGl0eSwgQ29uZm9ybWFuY2UgYW5kIFNlY3VyaXR5IFRlc3RpbmcKCk1hbnVhbGx5IGNyZWF0ZSwgaW1wb3J0LCBuYXZpZ2F0ZSBhbmQgZWRpdCBPcGVuQVBJIGNvbnRyYWN0cywgYWxvbmcgd2l0aCB1c2luZyBmZWF0dXJlcyBzdWNoIGFzIFByZXZpZXcsIGZ1bmN0aW9uYWwgIlRyeSBpdCIgdGVzdGluZyBhbmQgSW50ZWxsaVNlbnNlLiBUaGUgcGx1Z2luIHByb3ZpZGVzIHJpY2ggc3VwcG9ydCBmb3IgdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAoT0FTKSAvIFN3YWdnZXIgc3BlY2lmaWNhdGlvbi4gVGhlIE9wZW5BUEkgZWRpdG9yIGlzIGZyZWUgYW5kIGRvZXMgbm90IHJlcXVpcmUgcmVnaXN0cmF0aW9uIG9yIGhhdmUgdXNhZ2UgbGltaXRzLgoKQWRkaXRpb25hbCA0MkNydW5jaCB0b29scyBhcmUgYXZhaWxhYmxlIGluIHRoZSBPcGVuQVBJIEVkaXRvci4gVGhlc2UgQVBJIHNlY3VyaXR5IHRlc3RpbmcgdG9vbHMgYXJlIHByb3ZpZGVkIHByaW1hcmlseSBmb3Igb3VyIGVudGVycHJpc2UgY3VzdG9tZXJzLiBXZSBoYXZlIGFsc28gbWFkZSB0aGVzZSB0b29scyBhdmFpbGFibGUgb24gYSBsaW1pdGVkIGZyZWUgYmFzaXMgdG8gYWxsIG91ciBPcGVuQVBJIGVkaXRvciB1c2VycyAoZnJlZW1pdW0gcmVnaXN0cmF0aW9uIGlzIHJlcXVpcmVkKS4gVGhlIHRvb2xzIGFyZSBhcyBmb2xsb3dzOgoKLSBbQVBJIENvbnRyYWN0IEdlbmVyYXRvcl0oI2FwaS1jb250cmFjdC1nZW5lcmF0b3IpIC0gQXV0b21hdGljYWxseSBnZW5lcmF0ZSBPcGVuQVBJIGNvbnRyYWN0cyBmcm9tIHlvdXIgZXhpc3RpbmcgUG9zdG1hbiBDb2xsZWN0aW9ucyBhbmQgSEFSIGZpbGVzCi0gW0FQSSBDb250cmFjdCBBdWRpdF0oI2FjdGl2YXRpbmctYXBpLWF1ZGl0KSAtIENoZWNrIHRoZSBxdWFsaXR5LCBjb25mb3JtYW5jZSBhbmQgc2VjdXJpdHkgb2YgeW91ciBPcGVuQVBJIGNvbnRyYWN0cwotIFtBUEkgU2Nhbl0oI2FjdGl2YXRpbmctYXBpLXNjYW4pIC0gU2NhbiB5b3VyIEFQSSBmb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzCgojIyBPcGVuQVBJIEVkaXRpbmcKClRoZSBwbHVnaW4gc3VwcG9ydHMgY29kZSBuYXZpZ2F0aW9uLCBsaW50aW5nLCBTd2FnZ2VyVUkgb3IgUmVEb2MgcHJldmlldywgSW50ZWxsaVNlbnNlLCBzY2hlbWEgZW5mb3JjZW1lbnQgYW5kIGdlbmVyYXRpb24sIHNjaGVtYSBkZWZpbml0aW9uIGxpbmtzIGFuZCBzbmlwcGV0cy4KSXQgYWxzbyBzdXBwb3J0cyBib3RoIE9wZW5BUEkgdjIgYW5kIHYzLjAueCBpbiBKU09OIG9yIFlBTUwgZm9ybWF0LiBbUXVpY2tTdGFydF0oI3F1aWNrLXN0YXJ0KQoKLSBbQ3JlYXRpbmcgT3BlbkFQSSBmaWxlc10oI2NyZWF0aW5nLW9wZW5hcGktZmlsZXMpCi0gW05hdmlnYXRpbmcgYW4gQVBJIGRlZmluaXRpb25dKCNuYXZpZ2F0aW5nLWFuLWFwaS1kZWZpbml0aW9uKQotIFtBZGQgbmV3IGVsZW1lbnRzXSgjYWRkLW5ldy1lbGVtZW50cy1pbi10aGUtb3BlbmFwaS1leHBsb3JlcikKLSBbVXNlIEludGVsbGlTZW5zZV0oI3VzZS1pbnRlbGxpc2Vuc2UpCi0gW0p1bXAgdG8gYSByZWZlcmVuY2VdKCNqdW1wLXRvLWEtcmVmZXJlbmNlKQotIFtTb3J0IGVudHJpZXMgaW4gdGhlIG5hdmlnYXRpb24gcGFuZV0oI3NvcnQtZW50cmllcy1pbi10aGUtbmF2aWdhdGlvbi1wYW5lKQotIFtQcmV2aWV3IE9wZW5BUEkgZG9jdW1lbnRhdGlvbl0oI3ByZXZpZXctb3BlbmFwaS1kb2N1bWVudGF0aW9uKQotIFtFeGVjdXRlIG9wZXJhdGlvbnMgd2l0aCAiVHJ5IGl0Il0oI2V4ZWN1dGUtb3BlcmF0aW9ucy13aXRoLXRyeS1pdCkKLSBbR2VuZXJhdGUgSlNPTiBzY2hlbWFzIGJhc2VkIG9uIHRoZSByZXNwb25zZSBjb250ZW50XSgjZ2VuZXJhdGUtanNvbi1zY2hlbWFzLWJhc2VkLW9uLXRoZS1yZXNwb25zZS1jb250ZW50KQotIFtDb25maWd1cmUgYXV0aGVudGljYXRpb24gZm9yIGV4dGVybmFsIHJlZmVyZW5jZXMgaW4gT3BlbkFQSSBmaWxlc10oI2NvbmZpZ3VyZS1hdXRoZW50aWNhdGlvbi1mb3ItZXh0ZXJuYWwtcmVmZXJlbmNlcy1pbi1vcGVuYXBpLWZpbGVzKQotIFNwbGl0IHlvdXIgT3BlbkFQSSBpbnRvIG11bHRpcGxlIGZpbGVzIGxpbmtlZCB2aWEgJHJlZgotIFVzZSBxdWljayBmaXhlcyB0byBhdXRvbWF0aWNhbGx5IHJlc29sdmUgcHJvYmxlbXMgaW4geW91ciBPcGVuQVBJCi0gVXNlIENvZGUgc25pcHBldHMgdG8gYWRkIHBhdGhzLCBvcGVyYXRpb25zLCBjb21wb25lbnRzLCBzZWN1cml0eQoKIyMgQVBJIENvbnRyYWN0IEdlbmVyYXRvcgoKRGVzaWduZWQgdG8gcmVkdWNlIHRpbWUgc3BlbnQgYnkgZGV2ZWxvcGVycyBvbiByZXBldGl0aXZlIG1hbnVhbCB0YXNrcyBhbmQgaW1wcm92ZSB0aGUgcXVhbGl0eSBvZiBPcGVuQVBJIGRvY3VtZW50YXRpb24sIHRoaXMgZmVhdHVyZSBlbmFibGVzIHVzZXJzIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgT3BlbkFQSSBjb250cmFjdHMgZnJvbSB5b3VyIGV4aXN0aW5nIFBvc3RtYW4gQ29sbGVjdGlvbnMgYW5kIEhBUiBmaWxlcyAocmVjb3JkZWQgd2ViIHRyYWZmaWMgdG8gdGhlIEFQSSkuCgotIEFsbG93cyB1c2VycyB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIEFQSSBzcGVjaWZpY2F0aW9ucyBmcm9tIHNjcmF0Y2gKLSBTdHJlYW1saW5lcyB0aGUgQVBJIGRlc2lnbiBwcm9jZXNzCi0gSGVscHMgbWFpbnRhaW4gY29uc2lzdGVuY3kgYWNyb3NzIEFQSSBkZWZpbml0aW9ucwoKVG8gYWNjZXNzIHRoZSBBUEkgQ29udHJhY3QgR2VuZXJhdG9yLCBjbGljayBvbiB0aGUgNDJDIGljb24gaW4gdGhlIDQyQ3J1bmNoIE9wZW5BUEkgKFN3YWdnZXIpIEVkaXRvciBpbiB0aGUgSURFLgoKIVtPcGVuQVBJIEV4cGxvcmVyXSguL2ltYWdlcy9hcGktY29udHJhY3QtZ2VuZXJhdG9yLnBuZykKCiMjIEFjdGl2YXRpbmcgQVBJIEF1ZGl0CgpBIHN0YXRpYyBhbmFseXNpcyB0aGF0IGxldHMgeW91IGNoZWNrIHRoZSBxdWFsaXR5LCBjb25mb3JtYW5jZSAodG8gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbikgYW5kIHNlY3VyaXR5IG9mIHlvdXIgQVBJIGRlZmluaXRpb24uIFtWaWRlbyBleHBsYWluZXJdKGh0dHBzOi8vdmltZW8uY29tLzg3MzIzNTE3MykKCi0gW1J1bm5pbmcgYW4gYXVkaXRdKCNydW5uaW5nLWFuLWF1ZGl0KQotIFtOYXZpZ2F0aW5nIHRoZSBpc3N1ZXMgaW4gdGhlIGF1ZGl0IHJlcG9ydF0oI25hdmlnYXRpbmctdGhlLWlzc3Vlcy1pbi10aGUtYXVkaXQtcmVwb3J0KQogIC0gW1ByaW9yaXR5IGlzc3Vlc10oI3ByaW9yaXR5LWlzc3VlcykKICAtIFtGdWxsIGlzc3VlIGxpc3RdKCNmdWxsLWlzc3VlLWxpc3QpCi0gW0lzc3VlcyBkZXRhaWxzXSgjaXNzdWVzLWRldGFpbHMpCi0gW0ZpeGluZyBpc3N1ZXNdKCNmaXhpbmctaXNzdWVzKQoKIyMgQWN0aXZhdGluZyBBUEkgU2NhbgoKQSBkeW5hbWljIGNvbmZvcm1hbmNlIGFuZCBzZWN1cml0eSB0b29sIHRoYXQgdGVzdHMgdGhlIEFQSSBmb3IgY29uZm9ybWFuY2UgdG8gdGhlIEFQSSBkZWZpbml0aW9uIGFuZCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIFRoZSBmcmVlIHZlcnNpb24gb2YgQVBJIFNjYW4gcnVucyBsb2NhbGx5IGluIHlvdXIgb3duIGVudmlyb25tZW50IGFuZCBkb2VzIG5vdCByZXF1aXJlIHlvdXIgQVBJIHRvIGJlIHVwbG9hZGVkIHRvIHRoZSA0MkNydW5jaCBwbGF0Zm9ybS4KW1ZpZGVvIGV4cGxhaW5lcl0oaHR0cHM6Ly92aW1lby5jb20vODg0ODY0Mzk0L2IxNjcxNTNlYzQpCgotIFtDb25mb3JtYW5jZSB0byB0aGUgQVBJIERlZmluaXRpb25dKCNuZXctZHluYW1pYy1hcGktc2VjdXJpdHktdGVzdGluZykKLSBbTGF1bmNoaW5nIHRoZSBTY2FuXSgjbGF1bmNoaW5nLTQyY3J1bmNoLXNjYW4pCgpUaGUgZnJlZSB2ZXJzaW9uIG9mIEFQSSBTY2FuIHJ1bnMgbG9jYWxseSBpbiB5b3VyIG93biBlbnZpcm9ubWVudCBhbmQgcmVxdWlyZXMgbm8gQVBJIGZpbGUgdG8gYmUgdXBsb2FkZWQuCgojIyBGcmVlbWl1bQoKVGhpcyBzZXJ2aWNlIGxldHMgdXNlcnMgb2Ygb3VyIE9wZW5BUEkgZWRpdG9yIGV4dGVuc2lvbiwgd2hvIGFyZSBub3QgY3VzdG9tZXJzLCBydW4gQVBJIENvbnRyYWN0IEdlbmVyYXRvciwgQVBJIEF1ZGl0IGFuZCBBUEkgU2Nhbi4KCi0gW0dldHRpbmcgYSBGcmVlbWl1bSBUb2tlbl0oI2dldHRpbmctYS1mcmVlbWl1bS10b2tlbikKCiMjIFN1cHBvcnQgYW5kIERvY3VtZW50YXRpb246CgpXZeKAmXZlIHJlY2VudGx5IGxhdW5jaGVkIG91ciBkZXZlbG9wZXIgY29tbXVuaXR5IHdoZXJlIHlvdeKAmWxsIGJlIGFibGUgdG8gaGVscCwgZ2V0IHRpcHMtbi10cmlja3MgYW5kIGtlZXAgdXAgdG8gc3BlZWQgd2l0aCBhbGwgdGhlIGxhdGVzdCBkZXZlbG9wbWVudHM6IGh0dHBzOi8vZGV2ZWxvcGVycy40MmNydW5jaC5jb20vCgojIyBRdWljayBzdGFydAoKQWZ0ZXIgaW5zdGFsbGluZyB0aGUgcGx1Z2luLCBvcGVuIGFueSBKU09OIG9yIFlBTUwgZmlsZSB0aGF0IGNvbnRhaW5zIGFuIE9wZW5BUEkgZGVmaW5pdGlvbi4gVGhlIHBsdWdpbiBhdXRvbWF0aWNhbGx5IGRldGVjdHMgdGhhdCB0aGlzIGlzIGFuIE9wZW5BUEkgZmlsZSwgYW5kIHRoZSAqKi9BUEkqKiBidXR0b24gaXMgc2hvd24gaW4gdGhlIGxlZnQtaGFuZCBwYW5lbC4KCiFbT3BlbkFQSSBFeHBsb3Jlcl0oLi9pbWFnZXMvT3BlbkFQSSUyMEV4cGxvcmVyLlBORykKCldlIGFsc28gZW5jb3VyYWdlIHlvdSB0byB3YXRjaCBbdGhpcyB2aWRlb10oaHR0cHM6Ly80MmNydW5jaC5jb20vdHV0b3JpYWwtb3BlbmFwaS1zd2FnZ2VyLWV4dGVuc2lvbi12cy1jb2RlLyNJbnRyb2R1Y2luZy1PcGVuQVBJLUVkaXRvcikgdGhhdCBnaXZlcyB5b3UgYSBmdWxsIHRvdXIgb2YgdGhlIGVkaXRvciBhbmQgaXRzIGRpZmZlcmVudCBmZWF0dXJlcy4KCiMjIEVkaXRvciBmZWF0dXJlcwoKVGhpcyBleHRlbnNpb24gbWFrZXMgaXQgZWFzaWVyIGFuZCBmYXN0ZXIgdG8gbmF2aWdhdGUgeW91ciBPcGVuQVBJIGRlZmluaXRpb25zLCBlc3BlY2lhbGx5IHdoZW4gdGhleSBnZXQgbG9uZ2VyLgoKWW91IGNhbiBob21lIGluIG9uIGVsZW1lbnRzIGluIHRoZSBPcGVuQVBJIGV4cGxvcmVyIHZpZXcsIG9yIGp1bXAgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvZiBhIHJlZmVyZW5jZSBpbiB0aGUgQVBJLiBZb3UgY2FuIGFsc28gYWRkIG5ldyBlbGVtZW50cyB0byB5b3VyIEFQSSBkaXJlY3RseSBpbiB0aGUgT3BlbkFQSSBleHBsb3JlciBkaXJlY3RseSB3aGVyZSB0aGV5IGFyZSBuZWVkZWQuIEZpbGxpbmcgaW4gdGhlIGRldGFpbHMgaXMgcXVpY2tlciB3aXRoIEludGVsbGlTZW5zZSBzdXBwb3J0IGZvciBPcGVuQVBJIGVsZW1lbnRzLgoKIyMjIENyZWF0aW5nIE9wZW5BUEkgZmlsZXMKCjEuIFByZXNzICoqQ3RybCtTaGlmdCtQKiogb24gV2luZG93cyBvciBMaW51eCwgb3IgKipDbWQrU2hpZnQrUCoqIG9uIGEgTWFjLgoyLiBJbiB0aGUgY29tbWFuZCBwcm9tcHQsIHN0YXJ0IHR5cGluZyBgbmV3IG9wZW5hcGlgLCBhbmQgY2xpY2sgdGhlIGNvcnJlc3BvbmRpbmcgY29tbWFuZCB0byBjcmVhdGUgZWl0aGVyIGFuIE9BUyB2MiBvciB2MyB0ZW1wbGF0ZSBmaWxlLgozLiBVc2UgdGhlIE9wZW5BUEkgZXhwbG9yZXIgdG8gcG9wdWxhdGUgdGhlIHRlbXBsYXRlIHdpdGggbmV3IHBhdGhzIGFuZCBvdGhlciBlbGVtZW50cyBhcyBuZWVkZWQuCjQuIFNhdmUgdGhlIGZpbGUgdG8geW91ciBkaXNrIHRvIGZ1bGx5IGVuYWJsZSBJbnRlbGxpU2Vuc2UuCgohW0NyZWF0ZSBuZXcgT3BlbkFQSSBmaWxlIGZyb20gYSB0ZW1wbGF0ZV0oLi9pbWFnZXMvTmV3JTIwT3BlbkFQSSUyMGZpbGUuZ2lmP3Jhdz10cnVlKQoKIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGVhcm5pbmclMjBNb3JlIS1yZWQpIFdhdGNoIHRoaXMgW3ZpZGVvXShodHRwczovLzQyY3J1bmNoLmNvbS90dXRvcmlhbC1vcGVuYXBpLXN3YWdnZXItZXh0ZW5zaW9uLXZzLWNvZGUvI05hdmlnYXRpbmctT3BlbkFQSS1FeHBsb3Jlcikgb24gZWRpdG9yIGJhc2ljcy4KCiMjIyBOYXZpZ2F0aW5nIGFuIEFQSSBkZWZpbml0aW9uCgoxLiBPcGVuIGFuIE9wZW5BUEkgZmlsZS4KMi4gQ2xpY2sgdGhlIE9wZW5BUEkgYnV0dG9uIHRvIHN3aXRjaCB0byB0aGUgT3BlbkFQSSBleHBsb3JlciB2aWV3LgozLiBFeHBhbmQgdGhlIHNlY3Rpb25zIGFuZCBlbGVtZW50cyBpbiB0aGUgZmlsZSBhcyBuZWVkZWQsIGFuZCBjbGljayB0aGUgb25lcyB5b3Ugd2FudCB0byBqdW1wIHRvIGluIHRoZSBlZGl0b3IuCgohW05hdmlnYXRpb24gaW5zaWRlIHRoZSBPcGVuQVBJIGZpbGVdKC4vaW1hZ2VzL05hdmlnYXRpb24uZ2lmP3Jhdz10cnVlKQoKIyMjIEFkZCBuZXcgZWxlbWVudHMgaW4gdGhlIE9wZW5BUEkgZXhwbG9yZXIKCjEuIEluIE9wZW5BUEkgZXhwbG9yZXIgcGFuZSwgZ28gdG8gdGhlIHNlY3Rpb24gd2hlcmUgeW91IHdhbnQgdG8gYWRkIGEgbmV3IGVsZW1lbnQgYW5kIHJpZ2h0LWNsaWNrIG9uIHRoZSByZWxldmFudCBub2RlIHRvIG9wZW4gYSBjb250ZXh0IG1lbnUuCjIuIENsaWNrIHRoZSBpdGVtIHlvdSB3YW50IHRvIGFkZCBmcm9tIHRoZSBsaXN0LgoKIVtBZGQgbmV3IEFQSSBwYXRoIGFuZCB2ZXJiXSguL2ltYWdlcy9BZGQlMjBwYXRocyUyMGFuZCUyMHZlcmJzLmdpZj9yYXc9dHJ1ZSkKCiMjIyBVc2UgSW50ZWxsaVNlbnNlCgpBcyB5b3Ugc3RhcnQgdHlwaW5nIE9wZW5BUEkgZWxlbWVudHMgb3IgdGhlaXIgdmFsdWVzLCB0aGUgY29udGV4dC1zZW5zaXRpdmUgbGlzdCBvZiBhdmFpbGFibGUgb3B0aW9ucyBpcyBkaXNwbGF5ZWQgaW4gdGhlIEludGVsbGlTZW5zZSBtZW51LiBJbiBKU09OIE9wZW5BUEkgZmlsZXMsIGp1c3QgdHlwZSBkb3VibGUtcXVvdGUgKGAiYCkgdG8gc2hvdyB0aGUgbWVudSwgYW5kIHR5cGUgZnVydGhlciB0byBmaWx0ZXIgdGhlIGxpc3QuIEluIFlBTUwgT3BlbkFQSSBmaWxlcywgc3RhcnQgdHlwaW5nIHRoZSBwcm9wZXJ0eSBuYW1lLgoKWW91IGNhbiBhbHNvIHVzZSB0aGUgY29ycmVzcG9uZGluZyBWUyBDb2RlIGhvdGtleSAoKipDdHJsK1NwYWNlKiogb24gV2luZG93cywgKipDbWQrU3BhY2UqKiBvbiBNYWMpIHRvIG9wZW4gdGhlIEludGVsbGlTZW5zZSBtZW51LgoKIVtJbnRlbGxpU2Vuc2UgZm9yIE9wZW5BUEkgZWRpdGluZ10oaHR0cHM6Ly9naXRodWIuY29tLzQyQ3J1bmNoL3ZzY29kZS1vcGVuYXBpL2Jsb2IvbWFzdGVyL2ltYWdlcy9JbnRlbGxpc2Vuc2UuZ2lmP3Jhdz10cnVlKQoKIyMjIEp1bXAgdG8gYSByZWZlcmVuY2UKClVzZSBHbyB0byBEZWZpbml0aW9uIHRvIGxvY2F0ZSB0aGUgdGFyZ2V0cyBvZiByZWZlcmVuY2VzIGVhc2lseS4gVG8ganVtcCB0byB2aWV3IHRoZSBkZWZpbml0aW9uIGZyb20gYSByZWZlcmVuY2UgaW4geW91ciBBUEksIGVpdGhlciAqKkN0cmwrY2xpY2sqKiBhIHJlZmVyZW5jZSwgb3IgcmlnaHQtY2xpY2sgYSByZWZlcmVuY2UgYW5kIGNsaWNrICoqR28gdG8gRGVmaW5pdGlvbioqIGluIHRoZSBzaG9ydGN1dCBtZW51LgoKIVtHbyB0byBkZWZpbml0aW9uXSguL2ltYWdlcy9HbyUyMHRvJTIwRGVmaW5pdGlvbi5naWY/cmF3PXRydWUpCgojIyMgU29ydCBlbnRyaWVzIGluIHRoZSBuYXZpZ2F0aW9uIHBhbmUKCkJ5IGRlZmF1bHQsIGVudHJpZXMgaW4gdGhlIE9wZW5BUEkgRXhwbG9yZXIgcGFuZSBhcmUgc29ydGVkIGFscGhhYmV0aWNhbGx5LiBJZiB5b3Ugd2FudCB0byBpbnN0ZWFkIGhhdmUgdGhlbSBzb3J0ZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIGluIHRoZSBPcGVuQVBJIGZpbGUsIGNoYW5nZSB0aGUgY29ycmVzcG9uZGluZyBzZXR0aW5nOgoKMS4gT24gdGhlICoqRmlsZSoqIG1lbnUsIGNsaWNrICoqUHJlZmVyZW5jZXMgPiBTZXR0aW5ncyoqLgoyLiBFeHBhbmQgdGhlICoqRXh0ZW5zaW9ucyoqIHNlY3Rpb24gYW5kIGNsaWNrICoqT3BlbkFQSSoqLgozLiBDbGVhciB0aGUgY2hlY2tib3ggKipBbHBoYWJldGljYWxseSBzb3J0IGNvbnRlbnRzIG9mIE9wZW5BUEkgZXhwbG9yZXIgb3V0bGluZXMqKi4KCiFbXSguL2ltYWdlcy9PdXRsaW5lU2V0dGluZ3MucG5nKQoKIyMjIFByZXZpZXcgT3BlbkFQSSBkb2N1bWVudGF0aW9uCgpZb3UgY2FuIGdldCBhIGRvY3VtZW50YXRpb24tc3R5bGUgcHJldmlldyBvZiB0aGUgQVBJIHlvdSBhcmUgZWRpdGluZyBieSBjbGlja2luZyB0aGUgUHJldmlldyBidXR0b24gPGltZyBzcmM9Ii4vaW1hZ2VzL1ByZXZpZXdfYnV0dG9uLnBuZyIgd2lkdGg9MTkgLz4gYXQgdGhlIHRvcCByaWdodDoKCiFbT3BlbkFQSSBQcmV2aWV3IFBhbmVdKC4vaW1hZ2VzL09BU1ByZXZpZXcucG5nKQoKVGhlIGV4dGVuc2lvbiBzdXBwb3J0cyB0d28gcG9wdWxhciBPcGVuQVBJIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yczogW1N3YWdnZXJVSV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3Rvb2xzL3N3YWdnZXItdWkvKSBhbmQgW1JlRG9jXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvYykuCgpUbyBjaGFuZ2UgdGhlIGRlZmF1bHQgT3BlbkFQSSBQcmV2aWV3IHJlbmRlcmluZyBlbmdpbmU6CgoxLiBPbiB0aGUgKipGaWxlKiogbWVudSwgY2xpY2sgKipQcmVmZXJlbmNlcyA+IFNldHRpbmdzKiouCjIuIEV4cGFuZCB0aGUgKipFeHRlbnNpb25zKiogc2VjdGlvbiBhbmQgY2xpY2sgKipPcGVuQVBJKiouCjMuIFBpY2sgdGhlIG9wdGlvbiBvZiB5b3VyIGNob2ljZSBmcm9tIHRoZSAqKkRlZmF1bHQgUHJldmlldyBSZW5kZXJlZCoqIGRyb3Bkb3duIGxpc3QuCgohW09wZW5BUEkgUHJldmlldyBQYW5lXSguL2ltYWdlcy9DaGFuZ2VfT3BlbkFQSV9QcmV2aWV3X2VuZ2luZS5wbmcpCgojIyMgRXhlY3V0ZSBvcGVyYXRpb25zIHdpdGggIlRyeSBpdCIKCldpdGggIlRyeSBpdCIsIHlvdSBjYW4gaW52b2tlIG9wZXJhdGlvbnMgZGVmaW5lZCBpbiB5b3VyIE9wZW5BUEkgZGlyZWN0bHkgZnJvbSBWUyBDb2RlOgoKLSBDbGljayBvbiAiVHJ5IGl0IiBjb2RlIGxlbnMgd2hpY2ggaXMgZGlzcGxheWVkIHJpZ2h0IGJlbG93IHRoZSBIVFRQIHZlcmIgKGUuZy4gImdldCIsICJwb3N0Iikgb2YgeW91ciBvcGVyYXRpb24gYW5kIGluIHRoZSBleGFtcGxlcyBzZWN0aW9uLgotIFRoZSBwYXlsb2FkIGRhdGEgd2lsbCBiZSBnZW5lcmF0ZWQgYmFzZWQgb24gdGhlIHJlcXVlc3QgSlNPTiBTY2hlbWEsIG9yIHRoZSBmaXJzdCBleGFtcGxlIGF2YWlsYWJsZS4gWW91IGNhbiBlZGl0IHRoaXMgaW5mb3JtYXRpb24gYmVmb3JlIHNlbmRpbmcgdGhlIHJlcXVlc3QuCgohW1RyeUl0IHZpZXddKC4vaW1hZ2VzL3RyeWl0LnBuZykKClRyeSBpdCBjb21lcyB3aXRoIGEgbnVtYmVyIG9mIGxpbWl0YXRpb25zOgoKLSBTZW5kaW5nIGZpbGVzIGlzIG5vdCBzdXBwb3J0ZWQKLSBJdCB3b3JrcyBiZXN0IHdpdGggdGV4dC1iYXNlZCByZXNwb25zZXMsIHN1Y2ggYXMgSlNPTgotIEJpbmFyeS9pbWFnZSByZXNwb25zZXMgd2lsbCBiZSBzaG93biBhcyB0ZXh0CgojIyMgR2VuZXJhdGUgSlNPTiBzY2hlbWFzIGJhc2VkIG9uIHRoZSByZXNwb25zZSBjb250ZW50CgoiVHJ5IGl0IiBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBKU09OIFNjaGVtYSBiYXNlZCBvbiB0aGUgYm9keSBvZiB0aGUgcmVzcG9uc2UuCgotIFNlbGVjdCAiVG9vbHMiIHRhYiBpbiB0aGUgVHJ5SXQgcmVzcG9uc2UKLSBDbGljayAiR2VuZXJhdGUgc2NoZW1hIiBidXR0b24uCgohW1RyeUl0IHJlc3BvbnNlIHRvb2xzXShpbWFnZXMvdHJ5aXQtc2NoZW1hLnBuZykKCiMjIyBDb25maWd1cmUgYXV0aGVudGljYXRpb24gZm9yIGV4dGVybmFsIHJlZmVyZW5jZXMgaW4gT3BlbkFQSSBmaWxlcwoKSWYgeW91IHVzZSByZWZlcmVuY2VzIHRvIHNjaGVtYXMgc2VydmVkIGJ5IGFuIGF1dGhlbnRpY2F0ZWQgSFRUUCBzZXJ2aWNlIChzdWNoIGFzIGFuIFNjaGVtYSBSZWdpc3RyeSBzZXJ2aWNlIG9yIGEgcmVwb3NpdG9yeSksIHlvdSdsbCBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgbGlzdCBvZiBhcHByb3ZlZCBob3N0cyBpbiB0aGUgZXh0ZW5zaW9uIHNldHRpbmdzLiBUbyBkbyB0aGlzOgoKMS4gT24gdGhlICoqRmlsZSoqIG1lbnUsIGNsaWNrICoqUHJlZmVyZW5jZXMgPiBTZXR0aW5ncyoqLgoyLiBFeHBhbmQgdGhlICoqRXh0ZW5zaW9ucyoqIHNlY3Rpb24gYW5kIGNsaWNrICoqT3BlbkFQSSoqLgozLiBMb2NhdGUgdGhlICoqT3BlbmFwaTogQXBwcm92ZWQgSG9zdG5hbWVzKiogc2V0dGluZywgY2xpY2sgb24gKipBZGQgaXRlbSoqLCBhbmQgd3JpdGUgdGhlIGhvc3RuYW1lIHlvdSBuZWVkIGZvciByZXNvbHZpbmcgZXh0ZXJuYWwgcmVmZXJlbmNlcy4KICAgIVtDb25maWd1cmUgYXBwcm92ZWQgaG9zdHMgYW5kIGF1dGhlbnRpY2F0aW9uXSguL2ltYWdlcy9Db25maWd1cmUlMjBhcHByb3ZlZCUyMGhvc3RzLnBuZykKCkluIGNhc2Ugc29tZSBvZiB0aGUgYXBwcm92ZWQgaG9zdHMgcmVxdWlyZXMgYXV0aGVudGljYXRpb24sIHlvdSBjYW4gY29uZmlndXJlIGl0IGluIHRoZSBPcGVuQVBJID4gRXh0ZXJuYWwgUmVmZXJlbmNlcyBzZWN0aW9uIG9mIHRoZSBgNDJDcnVuY2g6IE9wZW4gU2V0dGluZ3NgIGNvbW1hbmQgdmlldzoKCiFbQ29uZmlndXJlIGFwcHJvdmVkIGhvc3RzIGFuZCBhdXRoZW50aWNhdGlvbl0oLi9pbWFnZXMvQ29uZmlndXJlJTIwYXBwcm92ZWQlMjBob3N0cyUyMGF1dGhlbnRpY2F0aW9uLnBuZykKCjxicj4KCj4gVG8gb3BlbiB0aGlzIHZpZXcsIGdvIHRvIGBWaWV3ID4gQ29tbWFuZCBQYWxldHRlLi4uYCBpbiBWU0NvZGUgbWVudSBhbmQgdHlwZSBpbiBgNDJDcnVuY2hgLCB5b3UnbGwgc2VlIHRoZSBPcGVuIFNldHRpbmdzIGNvbW1hbmQgbGlzdGVkIGJlbG93Ogo+ICFbNDJDcnVuY2g6IE9wZW4gU2V0dGluZ3NdKC4vaW1hZ2VzLzQyQ3J1bmNoJTIwT3BlbiUyMFNldHRpbmdzLnBuZykKPiBZb3UgY2FuIGFsc28gdXNlIGtleWJvYXJkIHNob3J0Y3V0cyBmb3IgdGhlIENvbW1hbmQgUGFsZXR0ZSAqKkN0cmwrU2hpZnQrUCoqLCBvciAqKkNtZCtTaGlmdCtQKiogZm9yIE1hYyB1c2Vycy4KCjxicj4KCkFmdGVyIGNvbmZpZ3VyaW5nIGFsbCBob3N0cyB5b3UgbmVlZCB0byByZWZlciB0bywgYWxsIE9wZW5BUEkgcmVmZXJlbmNlcyB0byBhbnkgb2YgdGhlIGFwcHJvdmVkIGhvc3RzIHdpbGwgYmUgZHluYW1pY2FsbHkgcmVzb2x2ZWQgd2hlbiBsaW50aW5nIG9yIHByZXZpZXdpbmcgeW91ciBBUEkuCgojIyBTdGF0aWMgQVBJIFNlY3VyaXR5IFRlc3RpbmcKCllvdSBjYW4gdXNlIHRoaXMgT3BlbkFQSSBleHRlbnNpb24gdG8gY2hlY2sgdGhlIHF1YWxpdHkgYW5kIHNlY3VyaXR5IG9mIHlvdXIgQVBJIGRlZmluaXRpb24gYXMgeW91IHdvcmsgb24gaXQuIFRoaXMgZmVhdHVyZSBpcyBwb3dlcmVkIGJ5IDQyQ3J1bmNoIFtBdWRpdF0oaHR0cHM6Ly9kb2NzLjQyY3J1bmNoLmNvbS9sYXRlc3QvY29udGVudC9jb25jZXB0cy9hcGlfY29udHJhY3Rfc2VjdXJpdHlfYXVkaXQuaHRtP3V0bV9jYW1wYWlnbj1JREUmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fc291cmNlPXZzY29kZSkuIDQyQ3J1bmNoIEF1ZGl0IHBlcmZvcm1zIGEgc3RhdGljIGFuYWx5c2lzIG9mIHRoZSBBUEkgZGVmaW5pdGlvbiB0aGF0IGluY2x1ZGVzIG1vcmUgdGhhbiAzMDAgY2hlY2tzIG9uIGJlc3QgcHJhY3RpY2VzIGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gYXV0aGVudGljYXRpb24sIGF1dGhvcml6YXRpb24gYXMgd2VsbCBhcyBkYXRhIGNvbnN0cmFpbnRzLgoKIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGVhcm5pbmclMjBNb3JlIS1ncmVlbikgV2F0Y2ggdGhpcyBbdmlkZW9dKGh0dHBzOi8vNDJjcnVuY2guY29tL2ZyZWUtdXNlci1mYXEvI0ZyZWUtQVBJLVNlY3VyaXR5LVRlc3RpbmctRkFRcy0wMCkgdG8gbGVhcm4gbW9yZSBhYm91dCA0MkNydW5jaCBBdWRpdC4KCllvdSBjYW4gcnVuIHRoZSBhdWRpdCBzZXJ2aWNlIGluIGZyZWVtaXVtIG9yIHBsYXRmb3JtIG1vZGU6CgotICoqVXNpbmcgb3VyIGZyZWVtaXVtIGNlbnRyYWxpemVkIHNlcnZpY2UqKjogdGhpcyBzZXJ2aWNlIGlzIGEgZnVsbHkgZmVhdHVyZWQgdmVyc2lvbiBvZiB0aGUgYXVkaXQsIGJ1dCB3aXRoIHVzYWdlIGxpbWl0cy4gSW4gdGhpcyBtb2RlLCBPQVMgZmlsZXMgYXJlIHNlbnQgdG8gdGhlIHNlcnZpY2UsIGF1ZGl0ZWQgYW5kIGEgcmVwb3J0IGlzIHJldHVybmVkLiBUaGlzIGlzIGEgc3RhdGVsZXNzIHNlcnZpY2U6ICoqd2UgZG8gbm90IGtlZXAgdGhlIE9wZW5BUEkgZmlsZSwgbm9yIHRoZSByZXBvcnQuKioKLSBOZXchICoqVXNpbmcgdGhlIDQyQ3J1bmNoIENMSSoqOiBpbiB0aGlzIG1vZGUsIGF1ZGl0cyBhcmUgcGVyZm9ybWVkIGxvY2FsbHkgKG9uIHRoZSB1c2VyJ3MgbWFjaGluZSkuIFRoaXMgaXMgb25seSBhdmFpbGFibGUgdG8gPHU+ZnJlZW1pdW08L3U+IHVzZXJzIGZvciBub3cuIFN1cHBvcnQgZm9yIGxvY2FsIGF1ZGl0L3NjYW5zIHVzaW5nIGEgcGxhdGZvcm0gQVBJIHRva2VuIHdpbGwgYmUgYXZhaWxhYmxlIHNvb24uIEluIHRoaXMgbW9kZSwgKipPcGVuQVBJIGZpbGVzIGFuZCByZXBvcnRzIGFyZSBrZXB0IGxvY2FsbHkqKi4KLSAqKlVzaW5nIDQyQ3J1bmNoIFNhYVMgcGxhdGZvcm0qKjogdGhpcyByZXF1aXJlcyBhbiBhY2NvdW50IG9uIGEgNDJDcnVuY2ggcGxhdGZvcm0sIHdoaWNoIGlzIGF2YWlsYWJsZSB0byBjdXN0b21lcnMgYW5kIHRvIHByb3NwZWN0cyBldmFsdWF0aW5nIG91ciBwcm9kdWN0LiBJbiB0aGlzIGNhc2UsIHlvdSBuZWVkIHRvIHN1cHBseSB5b3VyIHBsYXRmb3JtIFVSTCBhbmQgYW4gSURFIHRva2VuICh3aGljaCBjYW4gYmUgY3JlYXRlZCBmcm9tIHRoZSBwbGF0Zm9ybSBob21lIHBhZ2UpLiBZb3UgY2FuIHNwZWNpZnkgdGhvc2Ugc2V0dGluZ3MgYnkgaW52b2tpbmcgYDQyQ3J1bmNoOiBVcGRhdGUgcGxhdGZvcm0gY3JlZGVudGlhbHNgIGZyb20gdGhlIGNvbW1hbmQgcGFsZXR0ZS4KCiFbSURFLVBsYXRmb3JtSW50ZWdyYXRpb25dKC4vaW1hZ2VzL0lERS1QbGF0Zm9ybUludGVncmF0aW9uLnBuZykKCiMjIyBHZXR0aW5nIGEgRnJlZW1pdW0gVG9rZW4KClRvIHJ1biBTZWN1cml0eSBBdWRpdCBmcm9tIFZTIENvZGUsIHlvdSBuZWVkIGEgdG9rZW4uIFRoZSBmaXJzdCB0aW1lIHlvdSB0cnkgdG8gYXVkaXQgb3Igc2NhbiBhbiBBUEksIHlvdSBhcmUgYXNrZWQgdG8gcHJvdmlkZSB5b3VyIGVtYWlsIGFkZHJlc3Mgb3IgYW4gQVBJIHRva2VuIGZyb20gdGhlIHBsYXRmb3JtLgoKT25jZSB5b3Ugc3VwcGx5IHRoZSBhZGRyZXNzLCB0aGUgZXh0ZW5zaW9uIHJlcXVlc3RzIHRoZSB0b2tlbiB0byBiZSBzZW50IHRvIHlvdXIgbWFpbGJveC4gUGFzdGUgdGhlIHRva2VuIHlvdSByZWNlaXZlZCBpbiB0aGUgcHJvbXB0IGluIFZTIENvZGUsIGFuZCB5b3UgYXJlIGFsbCBzZXQuCgpXYXRjaCB0aGlzIHNob3J0IFt2aWRlb10oaHR0cHM6Ly80MmNydW5jaC5jb20vZnJlZS11c2VyLWZhcS8jRnJlZS1BUEktU2VjdXJpdHktVGVzdGluZy1GQVFzLTAyKSB3aGljaCB0YWtlcyB5b3UgdGhyb3VnaCB0aG9zZSBzdGVwcy4KCiMjIyBSdW5uaW5nIGFuIGF1ZGl0CgpZb3UgY2FuIHVzZSBPcGVuQVBJIGV4dGVuc2lvbiB0byBjaGVjayB0aGUgcXVhbGl0eSBvZiB5b3VyIEFQSSBhcyB5b3Ugd29yayBvbiBpdC4gWW91IGNhbiBydW4gdGhlIGF1ZGl0IGRpcmVjdGx5IGZyb20gVlMgQ29kZSBieSBjbGlja2luZyB0aGUgQXVkaXQgYnV0dG9uIGluIHRoZSB0b29sYmFyLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHJ1biBhbiBhdWRpdCBmb3IgYW4gaW5kaXZpZHVhbCBlbmRwb2ludCB1c2luZyB0aGUgY29kZSBsZW5zLgoKIVtdKC4vaW1hZ2VzL1N0YXJ0QXVkaXQucG5nKQoKIyMjIE5hdmlnYXRpbmcgdGhlIGlzc3VlcyBpbiB0aGUgYXVkaXQgcmVwb3J0CgpBZnRlciB0aGUgYXVkaXQgZmluaXNoZXMsIHlvdSBnZXQgdGhlIGF1ZGl0IHJlcG9ydCBkaXJlY3RseSBpbiB0aGUgVlMgQ29kZSB2aWV3LCBzaWRlIGJ5IHNpZGUgd2l0aCB5b3VyIGNvZGUuIFRoZSByZXBvcnQgdmlld2VyIHByb3ZpZGVzIGhhbmR5IHdheXMgdG8gbmF2aWdhdGUgdGhlIGZvdW5kIGlzc3VlcywgZXZlbiBpZiB0aGUgcmVwb3J0IGlzIHF1aXRlIGxvbmcuCgojIyMjIFByaW9yaXR5IGlzc3VlcwoKTG9vayBoZXJlIGZvciBpc3N1ZXMgdGhhdCByZXF1aXJlIHRoZSBtb3N0IGF0dGVudGlvbi4KCi0gKipNb3N0IENvbW1vbiBpc3N1ZXMqKjogdGhpcyBsaXN0IGNvbnRhaW5zIGlzc3VlcyB0aGF0IGFyZSBvY2N1cmluZyB0aGUgbW9zdCwgYW5kIGhvdyBtYW55IHRpbWVzIHRoZXkgYXJlIHJlcGVhdGVkLgotICoqT3Bwb3J0dW5pdGllcyoqOiB0aGlzIGxpc3QgY29udGFpbnMgaXNzdWVzIHRoYXQsIGlmIGZpeGVkLCB3aWxsIG1vc3QgY29udHJpYnV0ZSB0byByYWlzZSB0aGUgYXVkaXQgc2NvcmUuCgpUaG9zZSB0d28gbGlzdHMgd2lsbCBvZnRlbiBvdmVybGFwIGFuZCBpbiBjZXJ0YWluIGNhc2VzIGJlIGlkZW50aWNhbCwgYnV0IHRoaXMgaXMgdG90YWxseSBub3JtYWwuCgohW0F1ZGl0SXNzdWVzTGlzdF0oLi9pbWFnZXMvQXVkaXRJc3N1ZXNMaXN0LnBuZykKCiMjIyMgRnVsbCBpc3N1ZSBsaXN0CgpUaGUgZnVsbCBpc3N1ZSBsaXN0IGNvbnRhaW5zIGFsbCBpc3N1ZXMgZm91bmQuIFRoZSBsaXN0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0d28gd2F5czoKCi0gKipVc2luZyB0aGUgc2VjdXJpdHkgZ2F0ZSAoU1FHKSB0b2dnbGUqKjogYW4gU1FHIGVuZm9yY2VzIGVudGVycHJpc2UgY29tcGxpYW5jZSBhbmQgaGlnaHRsaWdodHMgaXNzdWVzIHRoYXQgYXJlIG9mZmVuZGluZyB0aGUgcmVxdWlyZW1lbnRzIGVzdGFibGlzaGVkLCBzdWNoIGFzIGEgbWluaW1hbCBzY29yZSwgaXNzdWVzIHNldmVyaXR5IG9yIHNwZWNpZmljIGlzc3VlcyAoZS5nLiBhbiBBUEkga2V5IGlzIHVzZWQgd2hlbiBvbmx5IE9BdXRoIGlzIGFsbG93ZWQgYWNyb3NzIHRoZSBlbnRlcnByaXNlKS4gV2hlbiB0aGUgdG9nZ2xlIGlzIG9uLCBvbmx5IHRoZSBpc3N1ZXMgYWZmZWN0aW5nIHRoZSBTUUcgc3RhdHVzIGFyZSBzaG93bi4KCiFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL05vdGUlMjAtYmx1ZSkgU1FHIHJlc3VsdHMgYXJlIG5vdCB2aXNpYmxlIHlldCB0byBhbGwgRnJlZW1pdW0gdXNlcnMuCgohW0F1ZGl0SXNzdWVzTGlzdC1GdWxsXSguL2ltYWdlcy9BdWRpdElzc3Vlc0xpc3QtRnVsbC5wbmcpCgotICoqVXNpbmcgdGhlIGZpbHRlcmluZyBvcHRpb25zKio6IHlvdSBjYW4gYWxzbyB1c2UgZmlsdGVyaW5nIG9wdGlvbnMgdG8gZHJpbGwtZG93biBpbnRvIHRoZSBsaXN0IHN1Y2ggYXMgc2V2ZXJpdHksIGNhdGVnb3J5IG9yIGV2ZW4gYSBzcGVjaWZpYyBpc3N1ZSB0eXBlLgoKIyMjIyBJc3N1ZXMgZGV0YWlscwoKRm9yIGVhY2ggaXNzdWUsIHlvdSBoYXZlIGFjY2VzcyB0byBmdWxsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpc3N1ZSwgd2h5IGl0IGlzIHJlbGV2YW50IGFuZCByZWNvbW1lbmRhdGlvbnMgb24gaG93IHRvIGFkZHJlc3MgdGhlIGlzc3VlLgoKIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGVhcm5pbmclMjBNb3JlIS1ncmVlbikgV2F0Y2ggdGhpcyBbdmlkZW9dKGh0dHBzOi8vNDJjcnVuY2guY29tL2ZyZWUtdXNlci1mYXEvI0ZyZWUtQVBJLVNlY3VyaXR5LVRlc3RpbmctRkFRcy0yKSB0byBsZWFybiBtb3JlIGFib3V0IGF1ZGl0IGFuZCBob3cgdG8gbmF2aWdhdGUgaXNzdWVzLgoKIyMjIEZpeGluZyBpc3N1ZXMKCk1hbnkgb2YgdGhlIGlzc3VlcyByZXBvcnRlZCBieSA0MkNydW5jaCBBdWRpdCBoYXZlIGZpeGVzIGFzc29jaWF0ZWQgd2l0aCB0aGVtLiBUaGVzZSBhcmUgY29kZSBzbmlwcGV0cyB0aGF0IHlvdSBjYW4gaW5zZXJ0IGludG8gdGhlIE9wZW5BUEkgZmlsZSBhbmQgdGhlbiBjdXN0b21pemUgd2l0aCB0aGUgYXBwcm9wcmlhdGUgdmFsdWUuCgoxLiBDaWNrIHNvbWUgb2YgdGhlIGVycm9yIGxpbmVzIGluIHlvdXIgT3BlbkFQSSBmaWxlIHRvIGJyaW5nIHVwIHRoZSBRdWlja0ZpeCBibHVlIGljb24gb24gdGhlIGxlZnQgb2YgdGhlIGxpbmUuCjIuIENsaWNrIHRoZSBRdWlja2ZpeCBpY29uIGFuZCBzZWxlY3QgdGhlIGZpeCB0byBhcHBseS4KMy4gVHdlYWsgdGhlIHZhbHVlcyBpbiB0aGUgaW5zZXJ0ZWQgY29kZSBzbmlwcGV0IGFzIHlvdSBzZWUgZml0LgoKIVtRdWljayBGaXhlcyBpbiBWU0NvZGVdKC4vaW1hZ2VzL1F1aWNrX0ZpeGVzX2luX1ZTQ29kZS5naWYpCgojIyAoTmV3ISkgRHluYW1pYyBBUEkgU2VjdXJpdHkgdGVzdGluZwoKNDJDcnVuY2ggQXVkaXQgcGVyZm9ybXMgYSBzZWN1cml0eSBhbmFseXNpcyB0aGF0IGRvZXMgbm90IHJlcXVpcmUgYW55IGxpdmUgQVBJLCBqdXN0IHRoZSBkZWZpbml0aW9uIGl0c2VsZi4gNDJDcnVuY2ggU2NhbiBsZXZlcmFnZXMgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbiB0bzoKCi0gVGVzdCB0aGUgcmVzaWxpZW5jZSBhbmQgYmVoYXZpb3Igb2YgQVBJcyBieSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgc2VjdXJpdHkgdGVzdHMgZnJvbSB0aGUgQVBJcycgT3BlbkFQSSBkZWZpbml0aW9uLiBTY2FuIHJlcHJvZHVjZXMgdGhlIHR5cGljYWwgYmVoYXZpb3Igb2YgYSBoYWNrZXIgYnkgaW5qZWN0aW5nIGJhZCBwYXlsb2FkcywgYmFkIHRva2VucywgYW5kIHVzaW5nIGludmFsaWQgSFRUUCB2ZXJicyBhbmQgcGF0aHMuIFRoaXMgaGVscHMgZGV0ZWN0IHZ1bG5lcmFiaWxpdGllcyBlYXJseSBpbiB0aGUgQVBJIGxpZmUgY3ljbGUsIGVzcGVjaWFsbHkgdGhvc2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBbT1dBU1AgQVBJIFNlY3VyaXR5IFRvcCAxMF0oaHR0cHM6Ly9hcGlzZWN1cml0eS5pby9vd2FzcC1hcGktc2VjdXJpdHktdG9wLTEwL293YXNwLWFwaS1zZWN1cml0eS10b3AtMTAtcHJvamVjdC8pLgotIFZhbGlkYXRlIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBBUEkgY29uZm9ybXMgdG8gaXRzIGVzdGFibGlzaGVkIGNvbnRyYWN0OiBTY2FuIGNoZWNrcyBhbGwgcmVzcG9uc2VzIGFnYWluc3QgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbiBhbmQgZGV0ZWN0cyB1bmV4cGVjdGVkIHJlc3BvbnNlcyBhbmQgZGF0YSBsZWFrcy4KCiFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xlYXJuaW5nJTIwTW9yZSEtQmx1ZSkgV2F0Y2ggdGhpcyBbdmlkZW9dKGh0dHBzOi8vNDJjcnVuY2guY29tL2ZyZWUtdXNlci1mYXEvP3V0bV9jYW1wYWlnbj1JREUmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fc291cmNlPXZzY29kZSNGcmVlLUFQSS1TZWN1cml0eS1UZXN0aW5nLUZBUXMtNCkgdG8gbGVhcm4gbW9yZSBhYm91dCA0MkNydW5jaCBTY2FuLgoKQVBJcyB3aGljaCB0aG9yb3VnaGx5IGVuZm9yY2UgY29tcGxpYW5jZSB0byBhbiBlc3RhYmxpc2hlZCBjb250cmFjdCBhcmUgZmFyIG1vcmUgcmVzaWxpZW50IHRvIGFsbCB0eXBlcyBvZiBhdHRhY2tzLgoKIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvSW1wb3J0YW50LXJlZCkgWW91IG11c3Qgb25seSB1c2UgNDJDcnVuY2ggU2NhbiBhZ2FpbnN0IEFQSXMgdGhhdCB5b3Ugb3duLCBub3QgdGhvc2Ugb2YgdGhpcmQgcGFydGllcy4KCiMjIyBMYXVuY2hpbmcgNDJDcnVuY2ggU2NhbgoKV2UgcmVjb21tZW5kIHlvdSB1c2UgdGhlIDQyQ3J1bmNoIEFQSSBTZWN1cml0eSBUZXN0aW5nIEJpbmFyeSB0byBydW4gc2NhbnMuIFRoZSBhbHRlcm5hdGl2ZSBpcyB0byBydW4gYSBkb2NrZXIgaW1hZ2UgbG9jYWxseS4gNDJDcnVuY2ggY3VzdG9tZXJzIGNhbiBhbHNvIGxldmVyYWdlIG91ciBbc2NhbmQgbWFuYWdlcl0oaHR0cHM6Ly9naXRodWIuY29tLzQyQ3J1bmNoL3NjYW5kLW1hbmFnZXIpLCBieSBkZXBsb3lpbmcgYW4gQVBJLWRyaXZlbiBzY2FuIGVuZ2luZSBvbiBLdWJlcm5ldGVzLgoKSW4gb3JkZXIgdG8gcnVuIGEgc2NhbiwgeW91IHdpbGwgbmVlZCA6CgotICoqQSBjcmVkZW50aWFsKiogOiBtb3N0IGxpa2VseSwgeW91ciBBUEkgaXMgdXNpbmcgc29tZSBmb3JtIG9mIGF1dGhlbnRpY2F0aW9uLCBsaWtlIGFuIEFQSSBLZXkgb3IgdG9rZW4uIFlvdSBuZWVkIGEgdmFsaWQgY3JlZGVudGlhbCB0byBwcm92aWRlIHRvIHRoZSBzY2FuIGVuZ2luZS4KCi0gKipUaGUgVVJMKiogd2hlbiB0aGUgQVBJIGlzIGRlcGxveWVkLgoKICAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9XYXJuaW5nLW9yYW5nZSkgV2Ugc3Ryb25nbHkgcmVjb21tZW5kIHRoYXQgeW91IGRvIDx1Pm5vdDwvdT4gdGFyZ2V0IGEgcHJvZHVjdGlvbiBzeXN0ZW0uIFdoaWxlIHRoZSB0b29sIGRvZXMgbm90IHRyeSB0byBpbmplY3QgbWFsaWNpb3VzIHBheWxvYWRzLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBBUEkgaW1wbGVtZW50YXRpb24gaXMgbm90IHJlc2lsaWVudCBlbm91Z2ggdG8gaGFuZGxlIHRoZSB0ZXN0cyBhbmQgbWF5IGNyYXNoIG9yIGJlaGF2ZSB1bmV4cGVjdGVkbHkuCgpXaGVuIHlvdSBmaXJzdCBsYXVuY2ggYSBzY2FuLCB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIHRoZSBzY2FuIGNvbmZpZ3VyYXRpb24gdmlld2VyLiBUaGUgc2NhbiBjb25maWd1cmF0aW9uIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIE9wZW5BUEkgZmlsZSB5b3UgY2hvc2UgdG8gc2Nhbi4KCi0gRm9yIGVhY2ggb3BlcmF0aW9uIGluIHRoZSBPcGVuQVBJIGZpbGUsIGEgcmVxdWVzdCBpcyBjcmVhdGVkLiBZb3UgY2FuIHRlc3QgaW5kaXZpZHVhbCByZXF1ZXN0cyB1c2luZyB0aGUgKipUcnkqKiBidXR0b24gdG9wLXJpZ2h0LgoKICAhW10oLi9pbWFnZXMvU2NhbnRyeUl0LnBuZykKCi0gUmVxdWVzdHMgY2FuIGJlIGFycmFuZ2VkIGludG8gdGVzdGluZyBzY2VuYXJpb3M6IGEgc2NlbmFyaW8gY29tYmluZXMgb25lIG9yIG11bHRpcGxlIHJlcXVlc3RzLCBmb3IgZXhhbXBsZSB5b3UgbmVlZCB0byBjcmVhdGUgYSByZXNvdXJjZSBiZWZvcmUgeW91IGNhbiB2aWV3IGl0LiBUaGUgZWRpdG9yIGFsbG93cyB5b3UgdG8gZXh0cmFjdCBkYXRhIGFzIHZhcmlhYmxlcyBmcm9tIGEgcmVxdWVzdCBleGVjdXRpb24gdG8gaW5qZWN0IGl0IGludG8gdGhlIG5leHQgc3RlcC4KCiAgU2ltaWxhcmx5IHRvIHJlcXVlc3RzLCB5b3UgY2FuIHRlc3QgYW4gaW5kaXZpZHVhbCBzY2VuYXJpbyB0byBlbnN1cmUgaXQgaXMgYnVpbHQgY29ycmVjdGx5IGJlZm9yZSBzdGFydGluZyBhIHNjYW46IHRoZSBzY2FuIGVuZ2luZSB3aWxsIGV4ZWN1dGUgdGhlIHNjZW5hcmlvIGFuZCBpZiBzdWNjZXNzZnVsLCBsYXVuY2ggYXV0b21hdGljYWxseSBkb3plbnMgb2YgdGVzdHMgdXNpbmcgdGhlIGRhdGEgcHJvdmlkZWQgaW4gdGhlIE9wZW5BUEkgZmlsZS4gVGhlIHNjYW4gd2lsbCBzZW5kIGJhZCB2ZXJicywgYmFkIGRhdGEgdHlwZXMsIGJhZCBkYXRhIGZvcm1hdHMgYXMgd2VsbCBhcyBhdXRoZW50aWNhdGlvbiB0ZXN0cy4KCiAgIVtdKC4vaW1hZ2VzL1NjYW5TY2VuYXJpb3MucG5nKQoKT25jZSB0aGUgc2NhbiBoYXMgcnVuLCB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIGEgcmVzdWx0cyBwYWdlLiBUaGUgc3VtbWFyeSBzaG93cyBpZiB0aGUgc2NhbiBnb3QgYSB0ZXN0aW5nIGJhc2VsaW5lIGJ5IHJ1bm5pbmcgdGhlIEhhcHB5UGF0aCB0ZXN0LiBBZGRpdGlvbmFsIHRlc3RpbmcgcmVzdWx0cyBhcmUgdmlzaWJsZSBmcm9tIHRoZSB0ZXN0cyBsaXN0LiBGb3IgZWFjaCBpc3N1ZSwgeW91IGNhbiBlYXNpbHkgcmVwcm9kdWNlIHRoZSBwcm9ibGVtIHVzaW5nIGEgY3VybCByZXF1ZXN0LgoKIVtdKC4vaW1hZ2VzL1NjYW5SZXBvcnQuZ2lmKQoKIyMgTWlzY2VsbGFuZW91cyBjb21tYW5kcwoKLSBZb3UgY2FuIGxvYWQgcmVzdWx0cyBvZiBTZWN1cml0eSBBdWRpdCBmcm9tIGEgZmlsZSBmb3IgYSBjdXJyZW50bHkgb3BlbiBPcGVuQVBJIGZpbGUgYnkgcnVubmluZyBjb21tYW5kIGA0MkNydW5jaDogTG9hZCBTZWN1cml0eSBBdWRpdCByZXBvcnQgZnJvbSBmaWxlYCBmcm9tIHRoZSBjb21tYW5kIHBhbGV0dGUKCiMjIE5ldHdvcmsgcmVxdWlyZW1lbnRzCgpUbyBleGVjdXRlIHRoZSA0MkNydW5jaCBGcmVlbWl1bSBzZXJ2aWNlcywgeW91IG5lZWQgYWNjZXNzIHRvIHRoZSBmb2xsb3dpbmcgVVJMOiBodHRwczovL3N0YXRlbGVzcy40MmNydW5jaC5jb20uIFlvdSBtYXkgbmVlZCB0byBhc2sgeW91ciBhZG1pbmlzdHJhdG9ycyB0byBhZGQgYSBmaXJld2FsbCBydWxlIHRvIGFsbG93IHRoZSBjb25uZWN0aW9uLgoKIyMgS25vd24gaXNzdWVzCgotIEZvciBuZXcgZmlsZXMsIEludGVsbGlTZW5zZSBkb2VzIG5vdCB3b3JrIHVudGlsIHlvdSBzYXZlIHRoZSBmaWxlLiBGaWxlIGV4dGVuc2lvbiBtdXN0IGJlIGAuanNvbmAgb3IgYC55YW1sYC4KLSBXaGVuIHJ1bm5pbmcgNDJDcnVuY2ggU2NhbiBvbiBhIGhvc3Qgd2l0aCBpbmNvcnJlY3QgY2xvY2ssIHRoZSBzY2FuIGNhbiBmYWlsIHdpdGggdGhlIG1lc3NhZ2UgYGNhbm5vdCBzZW5kIHRoZSBzY2FuIHJlcG9ydCA6IHJwYyBlcnJvcjogY29kZSA9IEludmFsaWRBcmd1bWVudCBkZXNjID0gaW52YWxpZCBpbnB1dGAsIHRvIHJlc29sdmUgdGhlIGlzc3VlIG1ha2Ugc3VyZSB5b3VyIGNsb2NrIGlzIGNvcnJlY3RseSBzZXQuCgojIyBGZWVkYmFjawoKU3VibWl0IHlvdXIgYnVnIHJlcG9ydHMgYXQgW0dpdEh1YiBwcm9qZWN0IElzc3Vlc10oaHR0cHM6Ly9naXRodWIuY29tLzQyQ3J1bmNoL3ZzY29kZS1vcGVuYXBpL2lzc3VlcykuCgpBbmQsIG5lZWRsZXNzIHRvIHNheSwgeW91ciByZXZpZXdzIGF0IFtWUyBDb2RlIG1hcmtldHBsYWNlXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9NDJDcnVuY2gudnNjb2RlLW9wZW5hcGkmc3NyPWZhbHNlI3Jldmlldy1kZXRhaWxzKSBtZWFuIHRoZSB3b3JsZCB0byB1cyEK readmeEtag: '"68d41a1a15ca8b0744b9e7e36f4ff1cad7d574ee"' readmeLastModified: Thu, 15 Jan 2026 21:56:46 GMT repositoryId: 190430086 description: VisualStudio Code OpenAPI tools created: '2019-06-05T16:27:53Z' updated: '2026-02-04T13:36:04Z' language: TypeScript archived: false stars: 364 watchers: 11 forks: 43 owner: 42Crunch logo: https://avatars.githubusercontent.com/u/25365245?v=4 license: AGPL-3.0 repoEtag: '"110126c6634d2d248342976839ba0bff2dd9844383615367059927416475a848"' repoLastModified: Wed, 04 Feb 2026 13:36:04 GMT foundInMaster: true id: 782ecbb10f1ff8ac9685e0ed24e52e58 v3_1: false - source: - https://openapi.tools/ - openapi3 tags name: KaiZen-OpenAPI-Editor homepage: https://github.com/RepreZen/KaiZen-OpenAPI-Editor language: Java source_description: > Full-featured Eclipse editor for OpenAPI, also available on Eclipse Marketplace. category: - Text Editors - Parsers license: EPL repository: https://github.com/reprezen/kaizen-openapi-editor v2: true v3: true repositoryMetadata: base64Readme: >- PGltZyBzcmM9Imh0dHBzOi8vY2RuMi5odWJzcG90Lm5ldC9odWJmcy81OTc2MTEvQXNzZXRzX1N3YWdnZXIvS1pPRS5wbmciIGFsdD0iS2FpWmVuIE9wZW5BUEkgRWRpdG9yIExvZ28iIGhlaWdodD0iNTAlIiB3aWR0aD0iNTAlIi8+CgojIEthaVplbiBPcGVuQVBJIEVkaXRvciBmb3IgRWNsaXBzZQoKX0thaVplbiBPcGVuQVBJIEVkaXRvcl8gaXMgYW4gRWNsaXBzZSBlZGl0b3IgZm9yIHRoZSBbaW5kdXN0cnkgc3RhbmRhcmQgQVBJIGRlc2NyaXB0aW9uIGxhbmd1YWdlXShodHRwOi8vb3BlbmFwaXMub3JnKSwgZm9ybWVybHkga25vd24gYXMgW1N3YWdnZXJdKGh0dHA6Ly9zd2FnZ2VyLmlvKS4gSXQgbm93IHN1cHBvcnRzIGJvdGggW1N3YWdnZXItT3BlbkFQSSB2ZXJzaW9uIDIuMF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMi4wLm1kKSBhbmQgW09wZW5BUEkgdmVyc2lvbiAzLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kKS4gIAoKS2FpWmVuIEVkaXRvciBpcyBhIGNvcmUgY29tcG9uZW50IG9mIFtSZXByZVplbiBBUEkgU3R1ZGlvXShodHRwOi8vcmVwcmV6ZW4uY29tL3N3YWdnZXItdG9vbHMpLCBhIGNvbXByZWhlbnNpdmUgc29sdXRpb24gZm9yIEFQSSBtb2RlbGluZywgZG9jdW1lbnRhdGlvbiwgdmlzdWFsaXphdGlvbiwgdGVzdGluZyBhbmQgY29kZSBnZW5lcmF0aW9uLCBidWlsdCBvbiBFY2xpcHNlLgoKV2Ugd2VsY29tZSB5b3VyIHN1Z2dlc3Rpb25zIGFuZCBjb250cmlidXRpb25zIQoKIyMgRWNsaXBzZSBJbnN0YWxsZXIKCkthaVplbiBPcGVuQVBJIEVkaXRvciBpcyBhdmFpbGFibGUgb24gW0VjbGlwc2UgTWFya2V0cGxhY2VdKGh0dHBzOi8vbWFya2V0cGxhY2UuZWNsaXBzZS5vcmcvY29udGVudC9rYWl6ZW4tb3BlbmFwaS1lZGl0b3IpLiBEcmFnLWFuZC1kcm9wIHRoaXMgYnV0dG9uIGludG8gRWNsaXBzZSBPeHlnZW4gb3IgbGF0ZXIgdG8gaW5zdGFsbCwgb3IgW3NlZSBiZWxvd10oI2luc3RhbGxpbmcta2FpemVuLW9wZW5hcGktZWRpdG9yKSBmb3Igb3RoZXIgb3B0aW9uczoKClshW0RyYWcgdG8geW91ciBydW5uaW5nIEVjbGlwc2Ugd29ya3NwYWNlLl0oLi9ldGMvaW1nL2J0bi1pbnN0YWxsLnBuZyldKGh0dHA6Ly9tYXJrZXRwbGFjZS5lY2xpcHNlLm9yZy9tYXJrZXRwbGFjZS1jbGllbnQtaW50cm8/bXBjX2luc3RhbGw9MzQyOTAyOCAiRHJhZyB0byB5b3VyIHJ1bm5pbmcgRWNsaXBzZSB3b3Jrc3BhY2UuIikKCiMjIE5FVyEgT3BlbkFQSSAzLjAgRWRpdGluZwoKS2FpWmVuIE9wZW5BUEkgRWRpdG9yIG5vdyBmZWF0dXJlcyBmdWxsIHN1cHBvcnQgZm9yIHRoZSBbT3BlbkFQSSB2ZXJzaW9uIDMuMF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQpIHNwZWNpZmljYXRpb24uIFtTZWUgaGVyZSBmb3IgZnVydGhlciBkZXRhaWxzLl0oaHR0cHM6Ly9naXRodWIuY29tL1JlcHJlWmVuL0thaVplbi1PcGVuQVBJLUVkaXRvci9ibG9iL21hc3Rlci9PUEVOX0FQSV9WM19TVVBQT1JULm1kKQogCiMjIEZlYXR1cmUgSGlnaGxpZ2h0cwoKPGltZyBzcmM9Ii9ldGMvaW1nL0NvbnRlbnRBc3Npc3RRdWlja091dGxpbmUucG5nIiBhbHQ9IkRyYXdpbmciIHdpZHRoPSI0MDAiIC8+CgojIyMgVmFsaWRhdGlvbgo8aW1nIHNyYz0iaHR0cDovL2kuaW1ndXIuY29tL0dyRnc5RU0ucG5nIiBhbHQ9IlZhbGlkYXRpb25fc2NyZWVuc2hvdCIgd2lkdGg9IjQwMCI+CgojIyMgQ29kZSBBc3Npc3QKQ29kZSB0ZW1wbGF0ZXM6ICAKPGltZyBzcmM9Imh0dHA6Ly9pLmltZ3VyLmNvbS9adEhKWDZBLmdpZiIgYWx0PSJDb2RlX3RlbXBsYXRlIiB3aWR0aD0iNDAwIj4KCktleXdvcmRzIGFuZCB2YWx1ZXM6ICAKPGltZyBzcmM9Imh0dHA6Ly9pLmltZ3VyLmNvbS8zdVo1YlFhLmdpZiIgYWx0PSJDb2RlQXNzaXN0X2tleXNfYW5kX3ZhbHVlcyIgd2lkdGg9IjQwMCI+CgojIyMgQ29kZSBBc3Npc3QgZm9yIFJlZmVyZW5jZXMKQ29kZSBhc3Npc3QgZm9yIHJlZmVyZW5jZXMgaGFzIHNldmVyYWwgc2NvcGVzIHdoaWNoIGNhbiBiZSB2aWV3ZWQgaW4gc2VxdWVuY2UgYnkgcHJlc3NpbmcgYEN0cmxgK2BTcGFjZWAgcmVwZWF0ZWRseToKCiogVGhlIGZpcnN0IHNjb3BlIHNob3dzIG9ubHkgZWxlbWVudHMgZnJvbSB0aGUgY3VycmVudCBkb2N1bWVudC4KKiBUaGUgc2Vjb25kIGV4cGFuZHMgaXQgdG8gZWxlbWVudHMgZnJvbSB0aGUgY29udGFpbmluZyBwcm9qZWN0LgoqIFRoZSB0aGlyZCBzaG93cyBlbGVtZW50cyBmcm9tIHRoZSBlbnRpcmUgd29ya3NwYWNlLgoKPGltZyBzcmM9Imh0dHA6Ly9pLmltZ3VyLmNvbS9QMElXSUV0LmdpZiIgYWx0PSJDb2RlQXNzaXN0X2Zvcl9yZWZlcmVuY2VzIiB3aWR0aD0iNDAwIj4KClByZXNzaW5nIHRoZSBob3RrZXkgYSBmb3VydGggdGltZSBzdGFydHMgdGhlIGN5Y2xlIG92ZXIgYWdhaW4sIHdpdGggZG9jdW1lbnQgc2NvcGUuCgojIyMgTmF2aWdhdGlvbiB0byBhIFJlZmVyZW5jZQpZb3UgY2FuIG5hdmlnYXRlIHRvIGEgcmVmZXJlbmNlIHVzaW5nIGBDdHJsYCtgQ2xpY2tgOiAgCjxpbWcgc3JjPSJodHRwOi8vaS5pbWd1ci5jb20vN1dwdVYzSy5naWYiIGFsdD0iTmF2aWdhdGlvbl90b19yZWZlcmVuY2VzIiB3aWR0aD0iNDAwIj4KCiMjIyBRdWljayBPdXRsaW5lClF1aWNrIE91dGxpbmUgY2FuIGJlIGludm9rZWQgd2l0aCBgQ3RybGArYG9gLiBTaW1pbGFyIHRvIGNvZGUgYXNzaXN0IGZvciByZWZlcmVuY2VzLCBpdCBoYXMgdGhyZWUgc2NvcGVzOiBtb2RlbCwgcHJvamVjdCwgYW5kIHdvcmtzcGFjZS4gSXQgYWxzbyBhbGxvd3MgZmlsdGVyaW5nOiAgICAKPGltZyBzcmM9Imh0dHA6Ly9pLmltZ3VyLmNvbS9qdmNvb29hLmdpZiIgYWx0PSJOYXZpZ2F0aW9uX3RvX3JlZmVyZW5jZXMiIHdpZHRoPSI0MDAiPgoKIyMjIE91dGxpbmUKT3V0bGluZSBWaWV3IHNob3dzIHRoZSBjb250ZW50cyBvZiB0aGUgYWN0aXZlIE9wZW5BUEkgc3BlYzogIAo8aW1nIHNyYz0iaHR0cDovL2kuaW1ndXIuY29tL2l2NDlDTG4ucG5nIiBhbHQ9Ik5hdmlnYXRpb25fdG9fcmVmZXJlbmNlcyIgd2lkdGg9IjQwMCI+CgojIyBJbnN0YWxsaW5nIEthaVplbiBPcGVuQVBJIEVkaXRvcgpLYWlaZW4gT3BlbkFQSSBFZGl0b3IgcmVxdWlyZXMgSmF2YSA4ICg2NC1iaXQpIGFuZCBFY2xpcHNlIE94eWdlbiBvciBsYXRlci4KCiMjIyBJbnN0YWxsaW5nIGZyb20gRWNsaXBzZSBNYXJrZXRwbGFjZQpUaGUgW0VjbGlwc2UgTWFya2V0cGxhY2Ugc29sdXRpb25dKGh0dHBzOi8vbWFya2V0cGxhY2UuZWNsaXBzZS5vcmcvY29udGVudC9rYWl6ZW4tb3BlbmFwaS1lZGl0b3IpIGlzIHRoZSBlYXNpZXN0IHdheSB0byBpbnN0YWxsIEthaVplbiBFZGl0b3IgaW50byBhbiBFY2xpcHNlIElERS4gWW91IGNhbiBkcmFnLWFuZC1kcm9wIHRoZSBJbnN0YWxsIGJ1dHRvbiBmcm9tIHRoZSBicm93c2VyIGludG8geW91ciBFY2xpcHNlIElERSwgb3IgdXNlIHRoZSBidWlsdC1pbiBFY2xpcHNlIE1hcmtldHBsYWNlIENsaWVudC4KClshW0RyYWcgdG8geW91ciBydW5uaW5nIEVjbGlwc2Ugd29ya3NwYWNlLl0oLi9ldGMvaW1nL2J0bi1pbnN0YWxsLnBuZyldKGh0dHA6Ly9tYXJrZXRwbGFjZS5lY2xpcHNlLm9yZy9tYXJrZXRwbGFjZS1jbGllbnQtaW50cm8/bXBjX2luc3RhbGw9MzQyOTAyOCAiRHJhZyB0byB5b3VyIHJ1bm5pbmcgRWNsaXBzZSB3b3Jrc3BhY2UuIikKCiMjIyBJbnN0YWxsaW5nIGZyb20gdGhlIFVwZGF0ZSBTaXRlIApZb3UgY2FuIGluc3RhbGwgS2FpWmVuIE9wZW5BUEkgRWRpdG9yIGludG8geW91ciBFY2xpcHNlIElERSBieSBjbGlja2luZyBgSGVscCA+IEluc3RhbGwgTmV3IFNvZnR3YXJlLi4uID4gQWRkLi4uYApUaGlzIHdpbGwgc2hvdyBhIGRpYWxvZyBib3ggd2hlcmUgeW91IGNhbiBzZWxlY3QgdGhlIGxvY2F0aW9uIG9mIHRoZSB1cGRhdGUgc2l0ZS4KVXNlIHRoZSB1cGRhdGUgc2l0ZSBodHRwOi8vcHJvZHVjdHMucmVwcmV6ZW4uY29tL3N3YWdlZGl0L2xhdGVzdC8gYXMgdGhlIFVSTC4KCiMjIyBJbnN0YWxsaW5nIFJlcHJlWmVuIEFQSSBTdHVkaW8KS2FpWmVuIEVkaXRvciBpcyBpbmNsdWRlZCBhcyBhIGNvcmUgY29tcG9uZW50IG9mIFJlcHJlWmVuIEFQSSBTdHVkaW8sIHdoaWNoIGFkZHMgbGl2ZSBkb2N1bWVudGF0aW9uIGFuZCBkaWFncmFtIHZpZXdzLCBzYW5kYm94IHRlc3Rpbmcgd2l0aCB0aGUgYnVpbHQtaW4gbW9jayBzZXJ2aWNlIGFuZCBTd2FnZ2VyLVVJLCBwb3dlcmZ1bCBjb2RlIGdlbmVyYXRpb24sIGFuZCBvdGhlciBmZWF0dXJlcy4KClJlcHJlWmVuIEFQSSBTdHVkaW8gaXMgYXZhaWxhYmxlIHRocm91Z2ggdHdvIGRpZmZlcmVudCBpbnN0YWxsYXRpb24gb3B0aW9uczogIAoqIFtBUEkgU3R1ZGlvIERlc2t0b3BdKGh0dHA6Ly93d3cucmVwcmV6ZW4uY29tL09wZW5BUEkpIGluc3RhbGxzIGFzIGEgc3RhbmRhbG9uZSBkZXNrdG9wIGFwcGxpY2F0aW9uIG9uIFdpbmRvd3MsIE1hY09TIG9yIExpbnV4LgoqIFtBUEkgU3R1ZGlvIGZvciBFY2xpcHNlXShodHRwczovL21hcmtldHBsYWNlLmVjbGlwc2Uub3JnL2NvbnRlbnQvcmVwcmV6ZW4tYXBpLXN0dWRpbykgaW5zdGFsbHMgaW50byBhbiBFY2xpcHNlIElERSBkaXN0cmlidXRpb24sIGFsbG93aW5nIHlvdSB0byB1c2UgUmVwcmVaZW4ncyBBUEkgZGVzaWduLCBkb2N1bWVudGF0aW9uIGFuZCBkZXZlbG9wbWVudCBmZWF0dXJlcyBpbiB5b3VyIHByaW1hcnkgRWNsaXBzZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC48YnIvPgpbIVtEcmFnIHRvIHlvdXIgcnVubmluZyBFY2xpcHNlIHdvcmtzcGFjZS5dKC4vZXRjL2ltZy9idG4taW5zdGFsbC5wbmcpXShodHRwOi8vbWFya2V0cGxhY2UuZWNsaXBzZS5vcmcvbWFya2V0cGxhY2UtY2xpZW50LWludHJvP21wY19pbnN0YWxsPTMxMzg3MTggIkRyYWcgdG8geW91ciBydW5uaW5nIEVjbGlwc2Ugd29ya3NwYWNlLiIpCgojIyBUcm91Ymxlc2hvb3RpbmcKU2VlIHRoZSBbVHJvdWJsZXNob290aW5nIEd1aWRlXShodHRwczovL2dpdGh1Yi5jb20vUmVwcmVaZW4vU3dhZ0VkaXQvYmxvYi9tYXN0ZXIvVFJPVUJMRVNIT09USU5HLm1kKSBmb3Igc29sdXRpb25zIHRvIGNvbW1vbiBwcm9ibGVtcy4KCiMjIENvbnRyaWJ1dGluZyB0byBLYWlaZW4gT3BlbkFQSSBFZGl0b3IKV2Ugd2VsY29tZSBjb250cmlidXRpb25zIC0gZG9jdW1lbnRhdGlvbiwgYnVnIHJlcG9ydHMgb3IgYnVnIGZpeGVzLgpJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gY29udHJpYnV0aW5nIHRvIEthaVplbiBFZGl0b3IsIHBsZWFzZSBzZWUgdGhlIFtEZXZlbG9wZXIncyBHdWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL1JlcHJlWmVuL1N3YWdFZGl0L2Jsb2IvbWFzdGVyL0RFVkVMT1BFUlNfR1VJREUubWQpLiAKCldlIGFsc28gY3JlYXRlZCBhIGxpc3Qgb2YgW2dvb2QgZmlyc3QgYnVnc10oaHR0cHM6Ly9naXRodWIuY29tL1JlcHJlWmVuL1N3YWdFZGl0L2xhYmVscy9Hb29kJTIwRmlyc3QlMjBCdWcpCnRoYXQgYXJlIHJlbGF0aXZlbHkgZWFzeSB0byBmaXguCgojIyBMaWNlbnNlCkthaVplbiBPcGVuQVBJIEVkaXRvciBpcyBwcm92aWRlZCB1bmRlciB0aGUgW0VjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMF0oaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sKQoKIyMgVmlkZW86IEthaVplbiBFZGl0b3IgaW4gUmVwcmVaZW4gQVBJIFN0dWRpbwoKWyFbRWRpdGluZyBTd2FnZ2VyLU9wZW5BUEkgaW4gUmVwcmVaZW4gQVBJIFN0dWRpb10oaHR0cDovL2ltZy55b3V0dWJlLmNvbS92aS9LWF90SHBfS1FrRS8wLmpwZyldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9S1hfdEhwX0tRa0UpCgpfKipOb3RlOioqIEthaVplbiBFZGl0b3IgaW5jbHVkZXMgY29kZSBhc3Npc3QsIHJlYWwtdGltZSB2YWxpZGF0aW9uLCBzeW50YXggaGlnaGxpZ2h0aW5nLCBhbmQgb3V0bGluZSB2aWV3Ljxici8+CltFY2xpcHNlIENvbG9yIFRoZW1lXShodHRwczovL21hcmtldHBsYWNlLmVjbGlwc2Uub3JnL2NvbnRlbnQvZWNsaXBzZS1jb2xvci10aGVtZSkgYW5kIFtFZGl0Qm94XShodHRwOi8vbWFya2V0cGxhY2UuZWNsaXBzZS5vcmcvY29udGVudC9ub2RlY2xpcHNlLWVkaXRib3gtYmFja2dyb3VuZC1jb2xvcnMtdGhlbWVzLWhpZ2hsaWdodC1jb2RlLWJsb2Nrcy1jLWphdmEtamF2YXNjcmlwdC1weXRob24pIGFyZSBhdmFpbGFibGUgYXMgc2VwYXJhdGUgcGx1Z2lucy48YnIvPgpbUmVwcmVaZW4gQVBJIFN0dWRpb10oaHR0cDovL3JlcHJlemVuLmNvbS9zd2FnZ2VyLXRvb2xzKSBpbmNsdWRlcyB0aGUgbW9jayBzZXJ2aWNlLCBsaXZlIFN3YWdnZXItVUksIGFkdmFuY2VkIGNvZGUgZ2VuZXJhdGlvbiwgYW5kIG90aGVyIGZlYXR1cmVzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIEthaVplbiBFZGl0b3IuIFNlZSB0aGUgW2ZlYXR1cmUgY29tcGFyaXNvbiBoZXJlXShodHRwczovL3N1cHBvcnQucmVwcmV6ZW4uY29tL3N1cHBvcnQvc29sdXRpb25zL2FydGljbGVzLzI0MDAwMDQ2MjcyLXdoYXQtcy10aGUtZGlmZmVyZW5jZS1iZXR3ZWVuLWthaXplbi1vcGVuYXBpLWVkaXRvci1hbmQtcmVwcmV6ZW4tYXBpLXN0dWRpby0pLl8K readmeEtag: '"95dde4753e7016fdba087e97e0e0731224c0a021"' readmeLastModified: Tue, 17 Sep 2019 12:33:47 GMT repositoryId: 43460338 description: Eclipse Editor for the Swagger-OpenAPI Description Language created: '2015-09-30T21:30:07Z' updated: '2026-02-04T21:19:46Z' language: Java archived: false stars: 120 watchers: 15 forks: 13 owner: RepreZen logo: https://avatars.githubusercontent.com/u/15205934?v=4 license: EPL-1.0 repoEtag: '"4595c2049f8c064491637bca3a4e8872f77c8e1b6c4f5d4c0767c8dd353dbf06"' repoLastModified: Wed, 04 Feb 2026 21:19:46 GMT foundInMaster: true id: 3927b9da31ce0c8291351fc07cace0ae - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags name: Swagger Editor homepage: https://github.com/swagger-api/swagger-editor language: Node.js source_description: > Design, describe, and document your API on the first open source editor fully dedicated to OpenAPI-based APIs. category: - Text Editors - Server Implementations repository: https://github.com/swagger-api/swagger-editor v2: true v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyRWRpdG9yCgojIyBUYWJsZSBvZiBDb250ZW50cwoKLSBbQW5vbnltaXplZCBhbmFseXRpY3NdKCNhbm9ueW1pemVkLWFuYWx5dGljcykKLSBbR2V0dGluZyBzdGFydGVkXSgjZ2V0dGluZy1zdGFydGVkKQogIC0gW1ByZXJlcXVpc2l0ZXNdKCNwcmVyZXF1aXNpdGVzKQogIC0gW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKICAtIFtVc2FnZV0oI3VzYWdlKQotIFtEZXZlbG9wbWVudF0oI2RldmVsb3BtZW50KQogIC0gW1ByZXJlcXVpc2l0ZXNdKCNwcmVyZXF1aXNpdGVzKQogIC0gW1NldHRpbmcgdXBdKCNzZXR0aW5nLXVwKQogIC0gW25wbSBzY3JpcHRzXSgjbnBtLXNjcmlwdHMpCiAgLSBbQnVpbGQgYXJ0aWZhY3RzXSgjYnVpbGQtYXJ0aWZhY3RzKQogIC0gW1BhY2thZ2UgbWFwcGluZ10oI3BhY2thZ2UtbWFwcGluZykKLSBbRG9jdW1lbnRhdGlvbl0oI2RvY3VtZW50YXRpb24pCi0gW0RvY2tlcl0oI2RvY2tlcikKLSBbTGljZW5zZV0oI2xpY2Vuc2UpCi0gW1NvZnR3YXJlIEJpbGwgT2YgTWF0ZXJpYWxzIChTQk9NKV0oI3NvZnR3YXJlLWJpbGwtb2YtbWF0ZXJpYWxzLXNib20pCgojIyBBbm9ueW1pemVkIGFuYWx5dGljcwoKU3dhZ2dlciBFZGl0b3IgdXNlcyBbU2NhcmZdKGh0dHBzOi8vc2NhcmYuc2gvKSB0byBjb2xsZWN0IFthbm9ueW1pemVkIGluc3RhbGxhdGlvbiBhbmFseXRpY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FyZi1zaC9zY2FyZi1qcz90YWI9cmVhZG1lLW92LWZpbGUjYXMtYS11c2VyLW9mLWEtcGFja2FnZS11c2luZy1zY2FyZi1qcy13aGF0LWluZm9ybWF0aW9uLWRvZXMtc2NhcmYtanMtc2VuZC1hYm91dC1tZSkuIFRoZXNlIGFuYWx5dGljcyBoZWxwIHN1cHBvcnQgdGhlIG1haW50YWluZXJzIG9mIHRoaXMgbGlicmFyeSBhbmQgT05MWSBydW4gZHVyaW5nIGluc3RhbGxhdGlvbi4gVG8gW29wdCBvdXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FyZi1zaC9zY2FyZi1qcz90YWI9cmVhZG1lLW92LWZpbGUjYXMtYS11c2VyLW9mLWEtcGFja2FnZS11c2luZy1zY2FyZi1qcy1ob3ctY2FuLWktb3B0LW91dC1vZi1hbmFseXRpY3MpLCB5b3UgY2FuIHNldCB0aGUgYHNjYXJmU2V0dGluZ3MuZW5hYmxlZGAgZmllbGQgdG8gYGZhbHNlYCBpbiB5b3VyIHByb2plY3QncyBgcGFja2FnZS5qc29uYDoKCmBgYAovLyBwYWNrYWdlLmpzb24KewogIC8vIC4uLgogICJzY2FyZlNldHRpbmdzIjogewogICAgImVuYWJsZWQiOiBmYWxzZQogIH0KICAvLyAuLi4KfQpgYGAKCkFsdGVybmF0aXZlbHksIHlvdSBjYW4gc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgU0NBUkZfQU5BTFlUSUNTYCB0byBgZmFsc2VgIGFzIHBhcnQgb2YgdGhlIGVudmlyb25tZW50IHRoYXQgaW5zdGFsbHMgeW91ciBucG0gcGFja2FnZXMsIGUuZy4sIGBTQ0FSRl9BTkFMWVRJQ1M9ZmFsc2UgbnBtIGluc3RhbGxgLgoKIyMgR2V0dGluZyBzdGFydGVkCgojIyMgUHJlcmVxdWlzaXRlcwoKVGhlc2UgcHJlcmVxdWlzaXRlcyBhcmUgcmVxdWlyZWQgYm90aCBmb3IgaW5zdGFsbGluZyBTd2FnZ2VyRWRpdG9yIGFzIGEgbnBtIHBhY2thZ2UgYW5kIGxvY2FsIGRldmVsb3BtZW50IHNldHVwLgoKLSBbbm9kZS1neXBdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL25vZGUtZ3lwKSB3aXRoIFtQeXRob24gMy54XShodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy8pCi0gW0dMSUJDXShodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvKSBgPj0yLjI5YAotIFtlbXNjcmlwdGVuXShodHRwczovL2Vtc2NyaXB0ZW4ub3JnL2RvY3MvZ2V0dGluZ19zdGFydGVkL2Rvd25sb2Fkcy5odG1sKSBvciBbZG9ja2VyXShodHRwczovL3d3dy5kb2NrZXIuY29tLykgbmVlZHMgdG8gYmUgaW5zdGFsbGVkLCB3ZSByZWNvbW1lbmQgZ29pbmcgd2l0aCBhIGRvY2tlciBvcHRpb24KCgojIyMgSW5zdGFsbGF0aW9uCgpBc3N1bWluZyBbcHJlcmVxdWlzaXRlc10oI3ByZXJlcXVpc2l0ZXMpIGFyZSBhbHJlYWR5IGluc3RhbGxlZCwgU3dhZ2dlckVkaXRvciBucG0gcGFja2FnZSBpcyBpbnN0YWxsYWJsZSBhbmQgd29ya3Mgd2l0aCBgTm9kZS5qcyA+PSAxMi4yMi4wYC4KWW91IGNhbiBpbnN0YWxsIFN3YWdnZXJFZGl0b3IgdmlhIFtucG0gQ0xJXShodHRwczovL2RvY3MubnBtanMuY29tL2NsaSkgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGBzaAogJCBucG0gaW5zdGFsbCBzd2FnZ2VyLWVkaXRvckBhbHBoYQpgYGBgCgo+IE5PVEU6IHdoZW4gdXNpbmcgYnVuZGxlciB0byBidWlsZCB5b3VyIHByb2plY3Qgd2hpY2ggaXMgdXNpbmcgc3dhZ2dlci1lZGl0b3JANSBucG0gcGFja2FnZSwKeW91IG1pZ2h0IHJ1biBpbnRvIGZvbGxvd2luZyBOb2RlLmpzIGVycm9yOiBgUmVhY2hlZCBoZWFwIGxpbWl0IEFsbG9jYXRpb24gZmFpbGVkIC0gSmF2YVNjcmlwdCBoZWFwIG91dCBvZiBtZW1vcnlgLgpJdCdzIGNhdXNlZCBieSBzaWduaWZpY2FudCBhbW91bnQgb2YgY29kZSB0aGF0IG5lZWRzIHRvIGJlIGJ1bmRsZWQuIFRoaXMgZXJyb3IgY2FuIGJlIHJlc29sdmVkCmJ5IGV4dGVuZGluZyB0aGUgTm9kZS5qcyBtYXggaGVhcCBsaW1pdDogYGV4cG9ydCBOT0RFX09QVElPTlM9Ii0tbWF4X29sZF9zcGFjZV9zaXplPTQwOTYiYC4KCiMjIyBVc2FnZQoKVXNlIHRoZSBwYWNrYWdlIGluIHlvdXIgYXBwbGljYXRpb246CgoqKmluZGV4LmpzKio6CgpgYGBqcwppbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnOwppbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJzsKaW1wb3J0IFN3YWdnZXJFZGl0b3IgZnJvbSAnc3dhZ2dlci1lZGl0b3InOwppbXBvcnQgJ3N3YWdnZXItZWRpdG9yL3N3YWdnZXItZWRpdG9yLmNzcyc7Cgpjb25zdCB1cmwgPSAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2FzeW5jYXBpL3NwZWMvdjIuMi4wL2V4YW1wbGVzL3N0cmVldGxpZ2h0cy1rYWZrYS55bWwiOwoKY29uc3QgTXlBcHAgPSAoKSA9PiAoCiAgPGRpdj4KICAgIDxoMT5Td2FnZ2VyRWRpdG9yIEludGVncmF0aW9uPC9oMT4KICAgIDxTd2FnZ2VyRWRpdG9yIHVybD17dXJsfSAvPgogIDwvZGl2PgopOwoKc2VsZi5Nb25hY29FbnZpcm9ubWVudCA9IHsKICAvKioKICAgKiBXZSdyZSBidWlsZGluZyBpbnRvIHRoZSBkaXN0LyBmb2xkZXIuIFdoZW4gYXBwbGljYXRpb24gc3RhcnRzIG9uCiAgICogVVJMPWh0dHBzOi8vZXhhbXBsZS5jb20gdGhlbiBTd2FnZ2VyRWRpdG9yIHdpbGwgbG9vayBmb3IKICAgKiBgYXBpZG9tLndvcmtlci5qc2Agb24gaHR0cHM6Ly9leGFtcGxlLmNvbS9kaXN0L2FwaWRvbS53b3JrZXIuanMgYW5kCiAgICogYGVkaXRvci53b3JrZXJgIG9uIGh0dHBzOi8vZXhhbXBsZS5jb20vZGlzdC9lZGl0b3Iud29ya2VyLmpzLgogICAqLwogIGJhc2VVcmw6IGAke2RvY3VtZW50LmJhc2VVUkkgfHwgbG9jYXRpb24uaHJlZn1kaXN0L2AsCn0KClJlYWN0RE9NLnJlbmRlcig8TXlBcHAgLz4sIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzd2FnZ2VyLWVkaXRvcicpKTsKYGBgCgoqKndlYnBhY2suY29uZmlnLmpzKiogKHdlYnBhY2tANSkKCkluc3RhbGwgZGVwZW5kZW5jaWVzIG5lZWRlZCBmb3Igd2VicGFja0A1IHRvIHByb3Blcmx5IGJ1aWxkIFN3YWdnZXJFZGl0b3IuCgpgYGBzaAogJCBucG0gaSBzdHJlYW0tYnJvd3NlcmlmeSAtLXNhdmUtZGV2CiAkIG5wbSBpIGh0dHBzLWJyb3dzZXJpZnkgLS1zYXZlLWRldgogJCBucG0gaSBzdHJlYW0taHR0cCAtLXNhdmUtZGV2CiAkIG5wbSBpIHV0aWwgLS1zYXZlLWRldgogJCBucG0gaSBidWZmZXIgLS1zYXZlLWRldgogJCBucG0gaSBwcm9jZXNzIC0tc2F2ZS1kZXYKYGBgCgpgYGBqcwpjb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpOwpjb25zdCB3ZWJwYWNrID0gcmVxdWlyZSgnd2VicGFjaycpOwoKbW9kdWxlLmV4cG9ydHMgPSB7CiAgbW9kZTogJ3Byb2R1Y3Rpb24nLAogIGVudHJ5OiB7CiAgICBhcHA6ICcuL2luZGV4LmpzJywKICAgICdhcGlkb20ud29ya2VyJzogJ3N3YWdnZXItZWRpdG9yL2FwaWRvbS53b3JrZXInLAogICAgJ2VkaXRvci53b3JrZXInOiAnc3dhZ2dlci1lZGl0b3IvZWRpdG9yLndvcmtlcicsCiAgfSwKICBvdXRwdXQ6IHsKICAgIGdsb2JhbE9iamVjdDogJ3NlbGYnLAogICAgZmlsZW5hbWU6ICdbbmFtZV0uanMnLAogICAgcGF0aDogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ2Rpc3QnKQogIH0sCiAgcmVzb2x2ZTogewogICAgZmFsbGJhY2s6IHsKICAgICAgcGF0aDogZmFsc2UsCiAgICAgIGZzOiBmYWxzZSwKICAgICAgaHR0cDogcmVxdWlyZS5yZXNvbHZlKCdzdHJlYW0taHR0cCcpLCAvLyByZXF1aXJlZCBmb3IgYXN5bmNhcGkgcGFyc2VyCiAgICAgIGh0dHBzOiByZXF1aXJlLnJlc29sdmUoJ2h0dHBzLWJyb3dzZXJpZnknKSwgLy8gcmVxdWlyZWQgZm9yIGFzeW5jYXBpIHBhcnNlcgogICAgICBzdHJlYW06IHJlcXVpcmUucmVzb2x2ZSgnc3RyZWFtLWJyb3dzZXJpZnknKSwKICAgICAgdXRpbDogcmVxdWlyZS5yZXNvbHZlKCd1dGlsJyksCiAgICAgIHVybDogcmVxdWlyZS5yZXNvbHZlKCd1cmwnKSwKICAgICAgYnVmZmVyOiByZXF1aXJlLnJlc29sdmUoJ2J1ZmZlcicpLAogICAgICB6bGliOiBmYWxzZSwKICAgIH0sCiAgICBhbGlhczogewogICAgICAvLyBUaGlzIGFsaWFzIG1ha2Ugc3VyZSB3ZSBkb24ndCBwdWxsIHR3byBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgbW9uYWNvLWVkaXRvcgogICAgICAnbW9uYWNvLWVkaXRvcic6ICcvbm9kZV9tb2R1bGVzL21vbmFjby1lZGl0b3InLAogICAgICAvLyBUaGlzIGFsaWFzIG1ha2VzIHN1cmUgd2UncmUgYXZvaWRpbmcgYSBydW50aW1lIGVycm9yIHJlbGF0ZWQgdG8gdGhpcyBwYWNrYWdlCiAgICAgICdAc3RvcGxpZ2h0L29yZGVyZWQtb2JqZWN0LWxpdGVyYWwkJzogJy9ub2RlX21vZHVsZXMvQHN0b3BsaWdodC9vcmRlcmVkLW9iamVjdC1saXRlcmFsL3NyYy9pbmRleC5tanMnLAogICAgICAncmVhY3QvanN4LXJ1bnRpbWUuanMnOiAncmVhY3QvanN4LXJ1bnRpbWUnLAogICAgfSwKICB9LAogIHBsdWdpbnM6IFsKICAgIG5ldyB3ZWJwYWNrLlByb3ZpZGVQbHVnaW4oewogICAgICBCdWZmZXI6IFsnYnVmZmVyJywgJ0J1ZmZlciddLAogICAgICBwcm9jZXNzOiBbJ3Byb2Nlc3MnXSwKICAgIH0pLAogIF0sCiAgbW9kdWxlOiB7CiAgICBydWxlczogWwogICAgICB7CiAgICAgICAgdGVzdDogL1wuY3NzJC8sCiAgICAgICAgdXNlOiBbJ3N0eWxlLWxvYWRlcicsICdjc3MtbG9hZGVyJ10KICAgICAgfSwKICAgICAgLyoqCiAgICAgICAqIFRoZSBkZWZhdWx0IHdheSBpbiB3aGljaCB3ZWJwYWNrIGxvYWRzIHdhc20gZmlsZXMgd29u4oCZdCB3b3JrIGluIGEgd29ya2VyLAogICAgICAgKiBzbyB3ZSB3aWxsIGhhdmUgdG8gZGlzYWJsZSB3ZWJwYWNr4oCZcyBkZWZhdWx0IGhhbmRsaW5nIG9mIHdhc20gZmlsZXMgYW5kCiAgICAgICAqIHRoZW4gZmV0Y2ggdGhlIHdhc20gZmlsZSBieSB1c2luZyB0aGUgZmlsZSBwYXRoIHRoYXQgd2UgZ2V0IHVzaW5nIGZpbGUtbG9hZGVyLgogICAgICAgKgogICAgICAgKiBSZXNvdXJjZTogaHR0cHM6Ly9wc3BkZmtpdC5jb20vYmxvZy8yMDIwL3dlYmFzc2VtYmx5LWluLWEtd2ViLXdvcmtlci8KICAgICAgICoKICAgICAgICogQWx0ZXJuYXRpdmVseSwgV0FTTSBmaWxlIGNhbiBiZSBidW5kbGVkIGRpcmVjdGx5IGludG8gSmF2YVNjcmlwdCBidW5kbGUgYXMgZGF0YSBVUkxzLgogICAgICAgKiBUaGlzIGNvbmZpZ3VyYXRpb24gcmVkdWNlcyB0aGUgY29tcGxleGl0eSBvZiBXQVNNIGZpbGUgbG9hZGluZwogICAgICAgKiBidXQgaW5jcmVhc2VzIHRoZSBvdmVyYWwgYnVuZGxlIHNpemU6CiAgICAgICAqCiAgICAgICAqIHsKICAgICAgICogICB0ZXN0OiAvXC53YXNtJC8sCiAgICAgICAqICAgdHlwZTogJ2Fzc2V0L2lubGluZScsCiAgICAgICAqIH0KICAgICAgICovCiAgICAgIHsKICAgICAgICB0ZXN0OiAvXC53YXNtJC8sCiAgICAgICAgbG9hZGVyOiAnZmlsZS1sb2FkZXInLAogICAgICAgIHR5cGU6ICdqYXZhc2NyaXB0L2F1dG8nLCAvLyB0aGlzIGRpc2FibGVzIHdlYnBhY2tzIGRlZmF1bHQgaGFuZGxpbmcgb2Ygd2FzbQogICAgICB9LAogICAgXQogIH0KfTsKYGBgCgpBbHRlcm5hdGl2ZSAqKndlYnBhY2suY29uZmlnLmpzKiogKHdlYnBhY2tANSkKCldlJ3ZlIGFscmVhZHkgYnVpbHQgV2ViIFdvcmtlcnMgYXJ0aWZhY3RzIGZvciB5b3UsIGFuZCB0aGV5J3JlIGxvY2F0ZWQgaW5zaWRlIG91ciBucG0gZGlzdHJpYnV0aW9uCnBhY2thZ2UgaW4gYGRpc3QvdW1kL2AgZGlyZWN0b3J5LiBUbyBhdm9pZCB0aGUgY29tcGxleGl0eSBvZiBidWlsZGluZyB0aGUgV2ViIFdvcmtlciBhcnRpZmFjdHMsIHlvdSBjYW4KdXNlIHRob3NlIGFydGlmYWN0cyBkaXJlY3RseS4gVGhpcyBzZXR1cCB3aWxsIHdvcmsgYm90aCBmb3IgKipwcm9kdWN0aW9uKiogYW5kICoqZGV2ZWxvcG1lbnQqKiAod2VicGFjay1kZXYtc2VydmVyKQphbmQgd2lsbCBzaWduaWZpY2FudGx5IHNob3J0ZW4geW91ciBidWlsZCBwcm9jZXNzLgoKSW5zdGFsbCBgY29weS13ZWJwYWNrLXBsdWdpbmAgYW5kIG90aGVyIG5lZWRlZCBkZXBlbmRlbmNpZXMuCgpgYGBzaAogJCBucG0gaSBjb3B5LXdlYnBhY2stcGx1Z2luIC0tc2F2ZS1kZXYKICQgbnBtIGkgc3RyZWFtLWJyb3dzZXJpZnkgLS1zYXZlLWRldgogJCBucG0gaSBodHRwcy1icm93c2VyaWZ5IC0tc2F2ZS1kZXYKICQgbnBtIGkgc3RyZWFtLWh0dHAgLS1zYXZlLWRldgogJCBucG0gaSB1dGlsIC0tc2F2ZS1kZXYKICQgbnBtIGkgYnVmZmVyIC0tc2F2ZS1kZXYKICQgbnBtIGkgcHJvY2VzcyAtLXNhdmUtZGV2CmBgYAoKYGBganMKY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTsKY29uc3Qgd2VicGFjayA9IHJlcXVpcmUoJ3dlYnBhY2snKTsKY29uc3QgQ29weVdlYnBhY2tQbHVnaW4gPSByZXF1aXJlKCdjb3B5LXdlYnBhY2stcGx1Z2luJyk7Cgptb2R1bGUuZXhwb3J0cyA9IHsKICBtb2RlOiAncHJvZHVjdGlvbicsCiAgZW50cnk6IHsKICAgIGFwcDogJy4vaW5kZXguanMnLAogIH0sCiAgb3V0cHV0OiB7CiAgICBnbG9iYWxPYmplY3Q6ICdzZWxmJywKICAgIGZpbGVuYW1lOiAnc3RhdGljL2pzL1tuYW1lXS5qcycsCiAgICBwYXRoOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnZGlzdCcpCiAgfSwKICByZXNvbHZlOiB7CiAgICBmYWxsYmFjazogewogICAgICBwYXRoOiBmYWxzZSwKICAgICAgZnM6IGZhbHNlLAogICAgICBodHRwOiByZXF1aXJlLnJlc29sdmUoJ3N0cmVhbS1odHRwJyksIC8vIHJlcXVpcmVkIGZvciBhc3luY2FwaSBwYXJzZXIKICAgICAgaHR0cHM6IHJlcXVpcmUucmVzb2x2ZSgnaHR0cHMtYnJvd3NlcmlmeScpLCAvLyByZXF1aXJlZCBmb3IgYXN5bmNhcGkgcGFyc2VyCiAgICAgIHN0cmVhbTogcmVxdWlyZS5yZXNvbHZlKCdzdHJlYW0tYnJvd3NlcmlmeScpLAogICAgICB1dGlsOiByZXF1aXJlLnJlc29sdmUoJ3V0aWwnKSwKICAgICAgdXJsOiByZXF1aXJlLnJlc29sdmUoJ3VybCcpLAogICAgICBidWZmZXI6IHJlcXVpcmUucmVzb2x2ZSgnYnVmZmVyJyksCiAgICAgIHpsaWI6IGZhbHNlLAogICAgfSwKICAgIGFsaWFzOiB7CiAgICAgIC8vIFRoaXMgYWxpYXMgbWFrZSBzdXJlIHdlIGRvbid0IHB1bGwgdHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBtb25hY28tZWRpdG9yCiAgICAgICdtb25hY28tZWRpdG9yJzogJy9ub2RlX21vZHVsZXMvbW9uYWNvLWVkaXRvcicsCiAgICAgIC8vIFRoaXMgYWxpYXMgbWFrZXMgc3VyZSB3ZSdyZSBhdm9pZGluZyBhIHJ1bnRpbWUgZXJyb3IgcmVsYXRlZCB0byB0aGlzIHBhY2thZ2UKICAgICAgJ0BzdG9wbGlnaHQvb3JkZXJlZC1vYmplY3QtbGl0ZXJhbCQnOiAnL25vZGVfbW9kdWxlcy9Ac3RvcGxpZ2h0L29yZGVyZWQtb2JqZWN0LWxpdGVyYWwvc3JjL2luZGV4Lm1qcycsCiAgICAgICdyZWFjdC9qc3gtcnVudGltZS5qcyc6ICdyZWFjdC9qc3gtcnVudGltZScsCiAgICB9CiAgfSwKICBwbHVnaW5zOiBbCiAgICBuZXcgd2VicGFjay5Qcm92aWRlUGx1Z2luKHsKICAgICAgQnVmZmVyOiBbJ2J1ZmZlcicsICdCdWZmZXInXSwKICAgICAgcHJvY2VzczogWydwcm9jZXNzJ10sCiAgICB9KSwKICAgIG5ldyBDb3B5V2VicGFja1BsdWdpbih7CiAgICAgIHBhdHRlcm5zOiBbCiAgICAgICAgewogICAgICAgICAgZnJvbTogJ25vZGVfbW9kdWxlcy9zd2FnZ2VyLWVkaXRvci9kaXN0L3VtZC9hcGlkb20ud29ya2VyLmpzJywKICAgICAgICAgIHRvOiAnc3RhdGljL2pzJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIGZyb206ICdub2RlX21vZHVsZXMvc3dhZ2dlci1lZGl0b3IvZGlzdC91bWQvZWRpdG9yLndvcmtlci5qcycsCiAgICAgICAgICB0bzogJ3N0YXRpYy9qcycsCiAgICAgICAgfQogICAgICBdCiAgICB9KSwKICBdLAogIG1vZHVsZTogewogICAgcnVsZXM6IFsKICAgICAgewogICAgICAgIHRlc3Q6IC9cLmNzcyQvLAogICAgICAgIHVzZTogWydzdHlsZS1sb2FkZXInLCAnY3NzLWxvYWRlciddCiAgICAgIH0sCiAgICAgIC8qKgogICAgICAgKiBUaGUgZGVmYXVsdCB3YXkgaW4gd2hpY2ggd2VicGFjayBsb2FkcyB3YXNtIGZpbGVzIHdvbuKAmXQgd29yayBpbiBhIHdvcmtlciwKICAgICAgICogc28gd2Ugd2lsbCBoYXZlIHRvIGRpc2FibGUgd2VicGFja+KAmXMgZGVmYXVsdCBoYW5kbGluZyBvZiB3YXNtIGZpbGVzIGFuZAogICAgICAgKiB0aGVuIGZldGNoIHRoZSB3YXNtIGZpbGUgYnkgdXNpbmcgdGhlIGZpbGUgcGF0aCB0aGF0IHdlIGdldCB1c2luZyBmaWxlLWxvYWRlci4KICAgICAgICoKICAgICAgICogUmVzb3VyY2U6IGh0dHBzOi8vcHNwZGZraXQuY29tL2Jsb2cvMjAyMC93ZWJhc3NlbWJseS1pbi1hLXdlYi13b3JrZXIvCiAgICAgICAqCiAgICAgICAqIEFsdGVybmF0aXZlbHksIFdBU00gZmlsZSBjYW4gYmUgYnVuZGxlZCBkaXJlY3RseSBpbnRvIEphdmFTY3JpcHQgYnVuZGxlIGFzIGRhdGEgVVJMcy4KICAgICAgICogVGhpcyBjb25maWd1cmF0aW9uIHJlZHVjZXMgdGhlIGNvbXBsZXhpdHkgb2YgV0FTTSBmaWxlIGxvYWRpbmcKICAgICAgICogYnV0IGluY3JlYXNlcyB0aGUgb3ZlcmFsIGJ1bmRsZSBzaXplOgogICAgICAgKgogICAgICAgKiB7CiAgICAgICAqICAgdGVzdDogL1wud2FzbSQvLAogICAgICAgKiAgIHR5cGU6ICdhc3NldC9pbmxpbmUnLAogICAgICAgKiB9CiAgICAgICAqLwogICAgICB7CiAgICAgICAgdGVzdDogL1wud2FzbSQvLAogICAgICAgIGxvYWRlcjogJ2ZpbGUtbG9hZGVyJywKICAgICAgICB0eXBlOiAnamF2YXNjcmlwdC9hdXRvJywgLy8gdGhpcyBkaXNhYmxlcyB3ZWJwYWNrcyBkZWZhdWx0IGhhbmRsaW5nIG9mIHdhc20KICAgICAgfSwKICAgIF0KICB9Cn07CmBgYAoKIyMgRGV2ZWxvcG1lbnQKCiMjIyBQcmVyZXF1aXNpdGVzCgpBc3N1bWluZyBbcHJlcmVxdWlzaXRlc10oI3ByZXJlcXVpc2l0ZXMpIGFyZSBhbHJlYWR5IGluc3RhbGxlZCwgW05vZGUuanNdKGh0dHBzOi8vbm9kZWpzLm9yZy8pIGA+PTIyLjExLjBgIGFuZCBgbnBtID49MTAuOS4wYAphcmUgdGhlIG1pbmltdW0gcmVxdWlyZWQgdmVyc2lvbnMgdGhhdCB0aGlzIHJlcG8gcnVucyBvbiwgYnV0IHdlIHJlY29tbWVuZCB1c2luZyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgTm9kZS5qc0AyMC4KCiMjIyBTZXR0aW5nIHVwCgpJZiB5b3UgdXNlIFtudm1dKGh0dHBzOi8vZ2l0aHViLmNvbS9udm0tc2gvbnZtKSwgcnVubmluZyBmb2xsb3dpbmcgY29tbWFuZCBpbnNpZGUgdGhpcyByZXBvc2l0b3J5CndpbGwgYXV0b21hdGljYWxseSBwaWNrIHRoZSByaWdodCBOb2RlLmpzIHZlcnNpb24gZm9yIHlvdToKCmBgYHNoCiAkIG52bSB1c2UKYGBgCgpSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBzZXQgdXAgdGhlIHJlcG9zaXRvcnkgZm9yIGxvY2FsIGRldmVsb3BtZW50OgoKYGBgc2gKICQgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWVkaXRvci5naXQKICQgY2Qgc3dhZ2dlci1lZGl0b3IKICQgbnBtIGkKICQgbnBtIHN0YXJ0CmBgYAoKIyMjIG5wbSBzY3JpcHRzCgoqKkxpbnQqKgoKYGBgc2gKICQgbnBtIHJ1biBsaW50CmBgYAoKKipSdW5zIHVuaXQgYW5kIGludGVncmF0aW9uIHRlc3RzKioKCmBgYHNoCiAkIG5wbSB0ZXN0CmBgYAoKKipSdW5zIEUyRSBDeXByZXNzIHRlc3RzKioKClVzYWdlIGluICoqZGV2ZWxvcG1lbnQqKiBlbnZpcm9ubWVudDoKCmBgYHNoCiAkIG5wbSBydW4gY3k6ZGV2CmBgYAoKVXNhZ2UgaW4gKipDb250aW51b3VzIEludGVncmF0aW9uIChDSSkqKiBlbnZpcm9ubWVudDoKCmBgYHNoCiAkIG5wbSBydW4gY3k6Y2kKYGBgCgoqKkJ1aWxkKioKCmBgYHNoCiAkIG5wbSBydW4gYnVpbGQKYGBgYAoKVGhpcyBzY3JpcHQgd2lsbCBidWlsZCBhbGwgdGhlIFN3YWdnZXJFZGl0b3IgYnVpbGQgYXJ0aWZhY3RzIC0gYGFwcGAsIGBlc21gIGFuZCBgdW1kYC4KCiMjIyBCdWlsZCBhcnRpZmFjdHMKCkFmdGVyIGJ1aWxkaW5nIGFydGlmYWN0cywgZXZlcnkgdHdvIG5ldyBkaXJlY3RvcmllcyB3aWxsIGJlIGNyZWF0ZWQ6IGBidWlsZC9gIGFuZCBgZGlzdC9gLgoKKipidWlsZC8qKgoKYGBgc2gKJCBucG0gcnVuIGJ1aWxkOmFwcAokIG5wbSBydW4gYnVpbGQ6YXBwOnNlcnZlCmBgYAoKQnVpbGRzIGFuZCBzZXJ2ZXMgc3RhbmRhbG9uZSBTd2FnZ2VyRWRpdG9yIGFwcGxpY2F0aW9uIGFuZCBhbGwgaXQncyBhc3NldHMgb24gYGh0dHA6Ly9sb2NhbGhvc3Q6MzA1MC9gLgoKKipkaXN0L2VzbS8qKgoKYGBgc2gKJCBucG0gcnVuIGJ1aWxkOmJ1bmRsZTplc20KYGBgCgpUaGlzIGJ1bmRsZSBpcyBzdWl0ZWQgZm9yIGNvbnN1bXB0aW9uIGJ5IDNyZCBwYXJ0aWVzLAp3aGljaCB3YW50IHRvIHVzZSBTd2FnZ2VyRWRpdG9yIGFzIGEgbGlicmFyeSBpbiB0aGVpciBvd24gYXBwbGljYXRpb25zIGFuZCBoYXZlIHRoZWlyIG93biBidWlsZCBwcm9jZXNzLgoKKipkaXN0L3VtZC8qKgoKYGBgc2gKJCBucG0gcnVuIGJ1aWxkOmJ1bmRsZTp1bWQKYGBgCgpTd2FnZ2VyRWRpdG9yIFVNRCBidW5kbGUgZXhwb3J0cyBTd2FnZ2VyRWRpdG9yIHN5bWJvbCBvbiBhIGdsb2JhbCBvYmplY3QuCkl0J3MgYnVuZGxlZCB3aXRoIFJlYWN0IGRlZmluZWQgYXMgZXh0ZXJuYWwuIFRoaXMgYWxsb3dzIHRoZSBjb25zdW1lciB0byB1c2UgaGlzIG93biB2ZXJzaW9uIG9mIFJlYWN0ICsgUmVhY3RET00gYW5kIG1vdW50IFN3YWdnZXJFZGl0b3IgbGF6aWx5LgoKYGBgaHRtbAo8IURPQ1RZUEUgaHRtbD4KPGh0bWwgbGFuZz0iZW4iPgo8aGVhZD4KICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCIgLz4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiIC8+CiAgPG1ldGEKICAgIG5hbWU9ImRlc2NyaXB0aW9uIgogICAgY29udGVudD0iU3dhZ2dlckVkaXRvciIKICAvPgogIDx0aXRsZT5Td2FnZ2VyRWRpdG9yPC90aXRsZT4KICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4vc3dhZ2dlci1lZGl0b3IuY3NzIiAvPgo8L2hlYWQ+Cjxib2R5PgogIDxkaXYgaWQ9InN3YWdnZXItZWRpdG9yIj48L2Rpdj4KICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly91bnBrZy5jb20vcmVhY3RAMTgvdW1kL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzIiBjcm9zc29yaWdpbj48L3NjcmlwdD4KICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly91bnBrZy5jb20vcmVhY3QtZG9tQDE4L3VtZC9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMiIGNyb3Nzb3JpZ2luPjwvc2NyaXB0PgogIDxzY3JpcHQgc3JjPSIuL2Rpc3QvdW1kL3N3YWdnZXItZWRpdG9yLmpzIj48L3NjcmlwdD4KICA8c2NyaXB0PgogICAgY29uc3QgcHJvcHMgPSB7CiAgICAgIHVybDogJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9hc3luY2FwaS9zcGVjL3YyLjIuMC9leGFtcGxlcy9zdHJlZXRsaWdodHMta2Fma2EueW1sJywKICAgIH07CiAgICBjb25zdCBlbGVtZW50ID0gUmVhY3QuY3JlYXRlRWxlbWVudChTd2FnZ2VyRWRpdG9yLCBwcm9wcyk7CiAgICBjb25zdCBkb21Db250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc3dhZ2dlci1lZGl0b3InKTsKCiAgICBSZWFjdERPTS5yZW5kZXIoZWxlbWVudCwgZG9tQ29udGFpbmVyKTsKICA8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+CmBgYAoKKipucG0qKgoKU3dhZ2dlckVkaXRvciBpcyByZWxlYXNlZCBhcyBgc3dhZ2dlci1lZGl0b3JANWAgbnBtIHBhY2thZ2Ugb24gW25wbWpzLmNvbV0oaHR0cHM6Ly9ucG1qcy5jb20pLgpQYWNrYWdlIGNhbiBhbHNvIGJlIHByb2R1Y2VkIG1hbnVhbGx5IGJ5IHJ1bm5pbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kcyAoYXNzdW1pbmcgeW91J3JlIGFscmVhZHkgZm9sbG93ZWQgW3NldHRpbmcgdXBdKCNzZXR0aW5nLXVwKSBzdGVwcyk6CgpgYGBzaAogJCBucG0gcnVuIGJ1aWxkOmJ1bmRsZTplc20KICQgbnBtIHJ1biBidWlsZDpidW5kbGU6dW1kCiAkIG5wbSBwYWNrCmBgYAoKIyMjIFBhY2thZ2UgbWFwcGluZwoKU3dhZ2dlckVkaXRvciBtYXBzIGl0cyBbYnVpbGQgYXJ0aWZhY3RzXSgjYnVpbGQtYXJ0aWZhY3RzKSBpbiBgcGFja2FnZS5qc29uYCBmaWxlIGluIHRoZSBmb2xsb3dpbmcgd2F5OgoKYGBganNvbgoidW5wa2ciOiAiLi9kaXN0L3VtZC9zd2FnZ2VyLWVkaXRvci5qcyIsCiJtb2R1bGUiOiAiLi9kaXN0L2VzbS9zd2FnZ2VyLWVkaXRvci5qcyIsCiJicm93c2VyIjogIi4vZGlzdC9lc20vc3dhZ2dlci1lZGl0b3IuanMiLAoianNuZXh0Om1haW4iOiAiLi9kaXN0L2VzbS9zd2FnZ2VyLWVkaXRvci5qcyIsCiJleHBvcnRzIjogewogICIuL3BhY2thZ2UuanNvbiI6ICIuL3BhY2thZ2UuanNvbiIsCiAgIi4vc3dhZ2dlci1lZGl0b3IuY3NzIjogIi4vZGlzdC9zd2FnZ2VyLWVkaXRvci5jc3MiLAogICIuIjogewogICAgImJyb3dzZXIiOiAiLi9kaXN0L2VzbS9zd2FnZ2VyLWVkaXRvci5qcyIKICB9LAogICIuL3BsdWdpbnMvKiI6IHsKICAgICJicm93c2VyIjogIi4vZGlzdC9lc20vcGx1Z2lucy8qL2luZGV4LmpzIiwKICAgICJub2RlIjogIi4vZGlzdC9lc20vcGx1Z2lucy8qL2luZGV4LmpzIgogIH0sCiAgIi4vcHJlc2V0cy8qIjogewogICAgImJyb3dzZXIiOiAiLi9kaXN0L2VzbS9wcmVzZXRzLyovaW5kZXguanMiCiAgfSwKICAiLi9hcGlkb20ud29ya2VyIjogewogICAgImJyb3dzZXIiOiAiLi9kaXN0L2VzbS9hcGlkb20ud29ya2VyLmpzIgogIH0sCiAgIi4vZWRpdG9yLndvcmtlciI6IHsKICAgICJicm93c2VyIjogIi4vZGlzdC9lc20vZWRpdG9yLndvcmtlci5qcyIKICB9Cn0KYGBgCgpUbyBsZWFybiBtb3JlIGFib3V0IHRoZXNlIGZpZWxkcyBwbGVhc2UgcmVmZXIgdG8gW3dlYnBhY2sgbWFpbkZpZWxkcyBkb2N1bWVudGF0aW9uXShodHRwczovL3dlYnBhY2suanMub3JnL2NvbmZpZ3VyYXRpb24vcmVzb2x2ZS8jcmVzb2x2ZW1haW5maWVsZHMpCm9yIHRvIFtOb2RlLmpzIE1vZHVsZXM6IFBhY2thZ2VzIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vbm9kZWpzLm9yZy9kb2NzL2xhdGVzdC12MTYueC9hcGkvcGFja2FnZXMuaHRtbCkuCgojIyBEb2N1bWVudGF0aW9uCgojIyMgVXNpbmcgb2xkZXIgdmVyc2lvbiBvZiBSZWFjdAoKPiBbIUlNUE9SVEFOVF0KPiBCeSBvbGRlciB2ZXJzaW9ucyB3ZSBzcGVjaWZpY2FsbHkgcmVmZXIgdG8gYFJlYWN0ID49MTcgPDE4YC4KCkJ5IGRlZmF1bHQgW3N3YWdnZXItZWRpdG9yQDVdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3N3YWdnZXItZWRpdG9yKSBucG0gcGFja2FnZSBjb21lcyB3aXRoIGxhdGVzdCB2ZXJzaW9uIG9mIFtSZWFjdEAxOF0oaHR0cHM6Ly9yZWFjdC5kZXYvYmxvZy8yMDIyLzAzLzI5L3JlYWN0LXYxOCkuCkl0J3MgcG9zc2libGUgdG8gdXNlIF9zd2FnZ2VyLWVkaXRvckA1XyBucG0gcGFja2FnZSB3aXRoIG9sZGVyIHZlcnNpb24gb2YgUmVhY3QuCgpMZXQncyBzYXkgbXkgYXBwbGljYXRpb24gaW50ZWdyYXRlcyB3aXRoIF9zd2FnZ2VyLWVkaXRvckA1XyBucG0gcGFja2FnZSBhbmQgdXNlcyBbUmVhY3RAMTcuMC4yXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9yZWFjdC92LzE3LjAuMikuCgojIyMgbnBtCgpJbiBvcmRlciB0byBpbmZvcm0gYHN3YWdnZXItZWRpdG9yQDVgIG5wbSBwYWNrYWdlIHRoYXQgSSByZXF1aXJlIGl0IHRvIHVzZSBteSBSZWFjdCB2ZXJzaW9uLCBJIG5lZWQgdG8gdXNlIFtucG0gb3ZlcnJpZGVzXShodHRwczovL2RvY3MubnBtanMuY29tL2NsaS92OS9jb25maWd1cmluZy1ucG0vcGFja2FnZS1qc29uI292ZXJyaWRlcykuCgpgYGBqc29uCnsKICAiZGVwZW5kZW5jaWVzIjogewogICAgInJlYWN0IjogIj0xNy4wLjIiLAogICAgInJlYWN0LWRvbSI6ICI9MTcuMC4yIgogIH0sCiAgIm92ZXJyaWRlcyI6IHsKICAgICJzd2FnZ2VyLWVkaXRvciI6IHsKICAgICAgInJlYWN0IjogIiRyZWFjdCIsCiAgICAgICJyZWFjdCI6ICIkcmVhY3QtZG9tIiwKICAgICAgInJlYWN0LXJlZHV4IjogIl44IgogICAgfQogIH0KfQpgYGAKCj4gWyFOT1RFXQo+IFRoZSBSZWFjdCBhbmQgUmVhY3RET00gb3ZlcnJpZGUgYXJlIGRlZmluZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGRlcGVuZGVuY3kuIFNpbmNlIF9yZWFjdC1yZWR1eEA5XyBvbmx5IHN1cHBvcnRzIGBSZWFjdCA+PSAxOGAsIHdlIG5lZWQgdG8gdXNlIF9yZWFjdC1yZWR1eEA4Xy4KCiMjIyB5YXJuCgpJbiBvcmRlciB0byBpbmZvcm0gYHN3YWdnZXItZWRpdG9yQDVgIG5wbSBwYWNrYWdlIHRoYXQgSSByZXF1aXJlIGl0IHRvIHVzZSBteSBzcGVjaWZpYyBSZWFjdCB2ZXJzaW9uLCBJIG5lZWQgdG8gdXNlIFt5YXJuIHJlc29sdXRpb25zXShodHRwczovL3lhcm5wa2cuY29tL2NsaS9zZXQvcmVzb2x1dGlvbikuCgpgYGBqc29uCnsKICAiZGVwZW5kZW5jaWVzIjogewogICAgInJlYWN0IjogIjE3LjAuMiIsCiAgICAicmVhY3QtZG9tIjogIjE3LjAuMiIKICB9LAogICJyZXNvbHV0aW9ucyI6IHsKICAgICJzd2FnZ2VyLWVkaXRvci9yZWFjdCI6ICIxNy4wLjIiLAogICAgInN3YWdnZXItZWRpdG9yL3JlYWN0LWRvbSI6ICIxNy4wLjIiLAogICAgInN3YWdnZXItZWRpdG9yL3JlYWN0LXJlZHV4IjogIl44IgogIH0KfQpgYGAKCj4gWyFOT1RFXQo+IFRoZSBSZWFjdCBhbmQgUmVhY3RET00gcmVzb2x1dGlvbiBjYW5ub3QgYmUgZGVmaW5lZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZGVwZW5kZW5jeS4gVW5mb3J0dW5hdGVseSAqeWFybiogZG9lcyBub3Qgc3VwcG9ydCBhbGlhc2luZyBsaWtlIGAkcmVhY3RgIG9yIGAkcmVhY3QtZG9tYCBhcyAqbnBtKiBkb2VzLiBZb3UnbGwgbmVlZCB0byBzcGVjaWZ5IHRoZSBleGFjdCB2ZXJzaW9ucy4KCiMjIyBDdXN0b21pemF0aW9uCgotIFtQbHVnIHBvaW50c10oLi9kb2NzL2N1c3RvbWl6YXRpb24vcGx1Zy1wb2ludHMvUkVBRE1FLm1kKQoKIyMjIyBTeW50YXggSGlnaGxpZ2h0aW5nIE1vZGVzCgpTd2FnZ2VyRWRpdG9yIHN1cHBvcnRzIHR3byBzeW50YXggaGlnaGxpZ2h0aW5nIG1vZGVzIGZvciB0aGUgTW9uYWNvIGVkaXRvcjoKCjEuICoqU2ltcGxpZmllZCBNb2RlIChkZWZhdWx0KSoqIC0gUmVnZXgtYmFzZWQgc3ludGF4IGhpZ2hsaWdodGluZyB1c2luZyBNb25hY28ncyBNb25hcmNoIHRva2VuaXplcgoyLiAqKkFwaURPTSBNb2RlKiogLSBTZW1hbnRpYyB0b2tlbiBoaWdobGlnaHRpbmcgcHJvdmlkZWQgYnkgQXBpRE9NIExhbmd1YWdlIFNlcnZpY2UKClRoZSBzaW1wbGlmaWVkIG1vZGUgaXMgZW5hYmxlZCBieSBkZWZhdWx0LiBJZiB5b3UgbmVlZCBtb3JlIHNvcGhpc3RpY2F0ZWQgc2VtYW50aWMgaGlnaGxpZ2h0aW5nLCB5b3UgY2FuIGVuYWJsZSBBcGlET00gbW9kZS4KCioqVXNpbmcgU2ltcGxpZmllZCBNb2RlIChkZWZhdWx0KToqKgoKYGBganMKaW1wb3J0IEVkaXRvck1vbmFjb0xhbmd1YWdlQXBpRE9NUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLW1vbmFjby1sYW5ndWFnZS1hcGlkb20nOwoKLy8gRGVmYXVsdCBiZWhhdmlvciAtIHVzZXMgc2ltcGxpZmllZCBzeW50YXggaGlnaGxpZ2h0aW5nCmNvbnN0IHBsdWdpbnMgPSBbCiAgRWRpdG9yTW9uYWNvTGFuZ3VhZ2VBcGlET01QbHVnaW4sCiAgLy8gLi4uIG90aGVyIHBsdWdpbnMKXTsKYGBgCgoqKkVuYWJsaW5nIEFwaURPTSBNb2RlOioqCgpgYGBqcwppbXBvcnQgRWRpdG9yTW9uYWNvTGFuZ3VhZ2VBcGlET01QbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9lZGl0b3ItbW9uYWNvLWxhbmd1YWdlLWFwaWRvbSc7CgovLyBFbmFibGUgQXBpRE9NIHNlbWFudGljIHRva2VuIGhpZ2hsaWdodGluZwpjb25zdCBwbHVnaW5zID0gWwogIEVkaXRvck1vbmFjb0xhbmd1YWdlQXBpRE9NUGx1Z2luKHsgdXNlQXBpRE9NU3ludGF4SGlnaGxpZ2h0aW5nOiB0cnVlIH0pLAogIC8vIC4uLiBvdGhlciBwbHVnaW5zCl07CmBgYAoKKipWaXN1YWwgRGlmZmVyZW5jZXM6KioKClRoZSB0d28gbW9kZXMgcHJvZHVjZSBkaWZmZXJlbnQgc3ludGF4IGhpZ2hsaWdodGluZyBhcHBlYXJhbmNlczoKCi0gKipTaW1wbGlmaWVkIG1vZGUqKjoKICAtIFVzZXMgcmVnZXgtYmFzZWQgTW9uYXJjaCB0b2tlbml6ZXIgZm9yIHN5bnRheCBjb2xvcmluZwogIC0gS2V5d29yZHMsIHN0cmluZ3MsIG51bWJlcnMsIGFuZCBib29sZWFucyBlYWNoIGhhdmUgZGlzdGluY3QgY29sb3JzCiAgLSBEb2VzIG5vdCBjb2xvcml6ZSBicmFja2V0IHBhaXJzIChicmFja2V0cyBhcmUgc3R5bGVkIGFzIHBhcnQgb2YgdGhlIG92ZXJhbGwgdG9rZW4pCiAgLSBDb2xvciBzY2hlbWUgZGVmaW5lZCBieSB0aGVtZSB0b2tlbiBydWxlczogYHBsYWluLmtleXdvcmRgLCBgcGxhaW4udmFsdWUuc3RyaW5nYCwgYHBsYWluLnZhbHVlLm51bWJlcmAsIGBwbGFpbi52YWx1ZS5ib29sZWFuYAoKLSAqKkFwaURPTSBtb2RlKio6CiAgLSBVc2VzIHNlbWFudGljIHRva2VuIGFuYWx5c2lzIGZyb20gQXBpRE9NIExhbmd1YWdlIFNlcnZpY2UKICAtIFByb3ZpZGVzIGNvbnRleHQtYXdhcmUgdG9rZW4gY29sb3JpbmcgYmFzZWQgb24gc3BlY2lmaWNhdGlvbiBzdHJ1Y3R1cmUKICAtIEVuYWJsZXMgYnJhY2tldCBwYWlyIGNvbG9yaXphdGlvbiAoc2VtYW50aWMgdG9rZW5zIGRvbid0IGluY2x1ZGUgYnJhY2tldCBpbmZvcm1hdGlvbiwgc28gZWRpdG9yJ3MgYnJhY2tldCBjb2xvcml6YXRpb24gZmVhdHVyZSBpcyBlbmFibGVkKQogIC0gQ29sb3Igc2NoZW1lIHVzZXMgQXBpRE9NLXNwZWNpZmljIHRva2VuIHR5cGVzIHdpdGggbW9yZSBncmFudWxhciBzZW1hbnRpYyBjYXRlZ29yaWVzCgpCb3RoIG1vZGVzIHN1cHBvcnQ6Ci0gT3BlbkFQSSAyLjAsIDMuMCwgMy4xCi0gQXN5bmNBUEkgMi54LCAzLngKLSBKU09OIGFuZCBZQU1MIHN5bnRheAotIFNwZWNpZmljYXRpb24gZXh0ZW5zaW9ucyAoeC0gcHJlZml4ZWQgZmllbGRzKQotIElubGluZSBKU09OIG9iamVjdHMgYW5kIGFycmF5cwoKIyMjIEVudmlyb25tZW50IFZhcmlhYmxlcwoKSXQgaXMgcG9zc2libGUgdG8gdXNlIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNwZWNpZnkgYSBsb2NhbCBKU09OL1lBTUwgZmlsZSBvciBhIHJlbW90ZSBVUkwgZm9yIFN3YWdnZXJFZGl0b3IgdG8gbG9hZCBvbiBzdGFydHVwLgpUaGVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2lsbCBnZXQgYmFrZWQgaW4gZHVyaW5nIGJ1aWxkIHRpbWUgaW50byBidWlsZCBhcnRpZmFjdHMuCgpFbnZpcm9ubWVudCB2YXJpYWJsZXMgY3VycmVudGx5IGF2YWlsYWJsZToKCnwgVmFyaWFibGUgbmFtZSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTp8CnwgYFJFQUNUX0FQUF9ERUZJTklUSU9OX0ZJTEVgIHwgU3BlY2lmaWVzIGEgbG9jYWwgZmlsZSBwYXRoLCBhbmQgdGhlIHNwZWNpZmllZCBmaWxlIG11c3QgYWxzbyBiZSBwcmVzZW50IGluIHRoZSBgL3B1YmxpYy9zdGF0aWNgIGRpcmVjdG9yeSB8CnwgYFJFQUNUX0FQUF9ERUZJTklUSU9OX1VSTGAgIHwgU3BlY2lmaWVzIGEgcmVtb3RlIFVSTC4gVGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBjdXJyZW50bHkgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBSRUFDVF9BUFBfU1dBR0dFUl9GSUxFYCB8CnwgYFJFQUNUX0FQUF9WRVJTSU9OYCAgICAgICAgIHwgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgdmVyc2lvbiBvZiB0aGlzIGFwcC4gVGhlIHZlcnNpb24gaXMgcmVhZCBmcm9tIGBwYWNrYWdlLmpzb25gIGZpbGUuICAgICAgICAgICAgICB8CgpTYW1wbGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzIGNhbiBiZSBmb3VuZCBpbiBgLmVudmAgZmlsZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXNpbmcKZW52aXJvbm1lbnQgdmFyaWFibGVzLCBwbGVhc2UgcmVmZXIgdG8gW2FkZGluZyBDdXN0b20gRW52aXJvbm1lbnQgVmFyaWFibGVzXShodHRwczovL2NyZWF0ZS1yZWFjdC1hcHAuZGV2L2RvY3MvYWRkaW5nLWN1c3RvbS1lbnZpcm9ubWVudC12YXJpYWJsZXMvKQpzZWN0aW9uIG9mIENyZWF0ZSBSZWFjdCBBcHAgZG9jdW1lbnRhdGlvbi4KCiMjIyBVc2luZyBwcmV2aWV3IHBsdWdpbnMgaW4gU3dhZ2dlclVJCgpTd2FnZ2VyRWRpdG9yIGNvbWVzIHdpdGggbnVtYmVyIG9mIGBwcmV2aWV3YCBwbHVnaW5zIHRoYXQgYXJlIHJlc3BvbnNpYmxlIGZvciByZW5kZXJpbmcKdGhlIGRlZmluaXRpb24gdGhhdCdzIGJlaW5nIGNyZWF0ZWQgaW4gdGhlIGVkaXRvci4gVGhlc2UgcGx1Z2lucyBpbmNsdWRlOgoKLSAqKkVkaXRvclByZXZpZXdBc3luY0FQSVBsdWdpbioqIC0gQXN5bmNBUEkgc3BlY2lmaWNhdGlvbiByZW5kZXJpbmcgc3VwcG9ydAotICoqRWRpdG9yUHJldmlld0FQSURlc2lnblN5c3RlbXNQbHVnaW4qKiAtIEFQSSBEZXNpZ24gU3lzdGVtcyByZW5kZXJpbmcgc3VwcG9ydAoKV2l0aCBhIGJpdCBvZiBhZGFwdGluZywgd2UgY2FuIHVzZSB0aGVzZSBwbHVnaW5zIHdpdGggU3dhZ2dlclVJIHRvIHByb3ZpZGUgYW4gYWJpbGl0eQp0byByZW5kZXIgQXN5bmNBUEkgb3IgQVBJIERlc2lnbiBTeXN0ZW1zIGRlZmluaXRpb25zIHdpdGggU3dhZ2dlclVJLgoKYGBganMKaW1wb3J0IFN3YWdnZXJVSSBmcm9tICdzd2FnZ2VyLXVpJzsKaW1wb3J0IFN3YWdnZXJVSVN0YW5kYWxvbmVQcmVzZXQgZnJvbSAnc3dhZ2dlci11aS9kaXN0L3N3YWdnZXItdWktc3RhbmRhbG9uZS1wcmVzZXQnOwppbXBvcnQgJ3N3YWdnZXItZWRpdG9yL3N3YWdnZXItZWRpdG9yLmNzcyc7CmltcG9ydCBFZGl0b3JDb250ZW50T3JpZ2luUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLWNvbnRlbnQtb3JpZ2luJzsKaW1wb3J0IEVkaXRvckNvbnRlbnRUeXBlUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLWNvbnRlbnQtdHlwZSc7CmltcG9ydCBFZGl0b3JQcmV2aWV3QXN5bmNBUElQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9lZGl0b3ItcHJldmlldy1hc3luY2FwaSc7CmltcG9ydCBFZGl0b3JQcmV2aWV3QVBJRGVzaWduU3lzdGVtc1BsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2VkaXRvci1wcmV2aWV3LWFwaS1kZXNpZ24tc3lzdGVtcyc7CmltcG9ydCBTd2FnZ2VyVUlBZGFwdGVyUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvc3dhZ2dlci11aS1hZGFwdGVyJzsKClN3YWdnZXJVSSh7CiAgdXJsOiAnaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YyL3N3YWdnZXIuanNvbicsCiAgZG9tX2lkOiAnI3N3YWdnZXItdWknLAogIHByZXNldHM6IFtTd2FnZ2VyVUkucHJlc2V0cy5hcGlzLCBTd2FnZ2VyVUlTdGFuZGFsb25lUHJlc2V0XSwKICBwbHVnaW5zOiBbCiAgICBFZGl0b3JDb250ZW50T3JpZ2luUGx1Z2luLAogICAgRWRpdG9yQ29udGVudFR5cGVQbHVnaW4sCiAgICBFZGl0b3JQcmV2aWV3QXN5bmNBUElQbHVnaW4sCiAgICBFZGl0b3JQcmV2aWV3QVBJRGVzaWduU3lzdGVtc1BsdWdpbiwKICAgIFN3YWdnZXJVSUFkYXB0ZXJQbHVnaW4sCiAgICBTd2FnZ2VyVUkucGx1Z2lucy5Eb3dubG9hZFVybCwKICBdLAp9KTsKYGBgCgpUaGUga2V5IGhlcmUgaXMgYFN3YWdnZXJVSUFkYXB0ZXJgIHBsdWdpbiB3aGljaCBhZGFwdHMgU3dhZ2dlckVkaXRvciBwbHVnaW5zIHRvIHVzZQpkaXJlY3RseSB3aXRoIFN3YWdnZXJVSS4KCiMjIyMgU3RhbmRhbG9uZSBtb2RlCgpTd2FnZ2VyVUkgc3RhbmRhbG9uZSBtb2RlIGlzIHN1cHBvcnRlZCBhcyB3ZWxsLiBXaXRoIHN0YW5kYWxvbmUgbW9kZSB5b3UnbGwgZ2V0IGEgYFRvcEJhcmAgd2l0aAphbiBpbnB1dCB3aGVyZSBVUkwgb2YgdGhlIGRlZmluaXRpb24gY2FuIGJlIHByb3ZpZGVkIGFuZCB0aGlzIGRlZmluaXRpb24gaXMgc3Vic2VxdWVudGx5IGxvYWRlZApieSB0aGUgU3dhZ2dlclVJLgoKYGBganMKaW1wb3J0IFN3YWdnZXJVSSBmcm9tICdzd2FnZ2VyLXVpJzsKaW1wb3J0IFN3YWdnZXJVSVN0YW5kYWxvbmVQcmVzZXQgZnJvbSAnc3dhZ2dlci11aS9kaXN0L3N3YWdnZXItdWktc3RhbmRhbG9uZS1wcmVzZXQnOwppbXBvcnQgJ3N3YWdnZXItdWkvZGlzdC9zd2FnZ2VyLXVpLmNzcyc7CmltcG9ydCAnc3dhZ2dlci1lZGl0b3Ivc3dhZ2dlci1lZGl0b3IuY3NzJzsKaW1wb3J0IEVkaXRvckNvbnRlbnRPcmlnaW5QbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9lZGl0b3ItY29udGVudC1vcmlnaW4nOwppbXBvcnQgRWRpdG9yQ29udGVudFR5cGVQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9lZGl0b3ItY29udGVudC10eXBlJzsKaW1wb3J0IEVkaXRvclByZXZpZXdBc3luY0FQSVBsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2VkaXRvci1wcmV2aWV3LWFzeW5jYXBpJzsKaW1wb3J0IEVkaXRvclByZXZpZXdBUElEZXNpZ25TeXN0ZW1zUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLXByZXZpZXctYXBpLWRlc2lnbi1zeXN0ZW1zJzsKaW1wb3J0IFN3YWdnZXJVSUFkYXB0ZXJQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9zd2FnZ2VyLXVpLWFkYXB0ZXInOwoKU3dhZ2dlclVJKHsKICB1cmw6ICdodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uJywKICBkb21faWQ6ICcjc3dhZ2dlci11aScsCiAgcHJlc2V0czogW1N3YWdnZXJVSS5wcmVzZXRzLmFwaXMsIFN3YWdnZXJVSVN0YW5kYWxvbmVQcmVzZXRdLAogIHBsdWdpbnM6IFsKICAgIEVkaXRvckNvbnRlbnRPcmlnaW5QbHVnaW4sCiAgICBFZGl0b3JDb250ZW50VHlwZVBsdWdpbiwKICAgIEVkaXRvclByZXZpZXdBc3luY0FQSVBsdWdpbiwKICAgIEVkaXRvclByZXZpZXdBUElEZXNpZ25TeXN0ZW1zUGx1Z2luLAogICAgU3dhZ2dlclVJQWRhcHRlclBsdWdpbiwKICAgIFN3YWdnZXJVSS5wbHVnaW5zLkRvd25sb2FkVXJsLAogIF0sCiAgbGF5b3V0OiAnU3RhbmRhbG9uZUxheW91dCcsCn0pOwpgYGAKCiMjIyMgVXRpbGl6aW5nIHByZXZpZXcgcGx1Z2lucyB2aWEgW3VucGtnLmNvbV0oaHR0cHM6Ly91bnBrZy5jb20vKQoKSXQncyBwb3NzaWJsZSB0byB1dGlsaXplIHByZXZpZXcgcGx1Z2lucyBpbiBhIGJ1aWxkLWZyZWUgd2F5IHZpYSBbdW5wa2cuY29tXShodHRwczovL3VucGtnLmNvbS8pIHRvIGNyZWF0ZSBhIHN0YW5kYWxvbmUKbXVsdGktc3BlYyBzdXBwb3J0aW5nIHZlcnNpb24gb2YgU3dhZ2dlclVJLgoKYGBgaHRtbAo8IURPQ1RZUEUgaHRtbD4KPGh0bWwgPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiIC8+CiAgICA8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzAwMDAwMCIgLz4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJTd2FnZ2VyVUlNdWx0aWZvbGQiIC8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii8vdW5wa2cuY29tL3N3YWdnZXItZWRpdG9yQDUuMC4wLWFscGhhLjEwMi9kaXN0L3N3YWdnZXItZWRpdG9yLmNzcyIgLz4KICA8L2hlYWQ+CiAgPGJvZHkgc3R5bGU9Im1hcmdpbjowOyBwYWRkaW5nOjA7Ij4KICAgIDxzZWN0aW9uIGlkPSJzd2FnZ2VyLXVpIj48L3NlY3Rpb24+CgogICAgPHNjcmlwdCBzcmM9Ii8vdW5wa2cuY29tL3N3YWdnZXItdWktZGlzdEA1LjIxLjAvc3dhZ2dlci11aS1idW5kbGUuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii8vdW5wa2cuY29tL3N3YWdnZXItdWktZGlzdEA1LjIxLjAvc3dhZ2dlci11aS1zdGFuZGFsb25lLXByZXNldC5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0PgogICAgICB1aSA9IFN3YWdnZXJVSUJ1bmRsZSh7fSk7CiAgICAgIC8vIGV4cG9zZSBTd2FnZ2VyVUkgUmVhY3QgZ2xvYmFsbHkgZm9yIFN3YWdnZXJFZGl0b3IgdG8gdXNlCiAgICAgIHdpbmRvdy5SZWFjdCA9IHVpLlJlYWN0OwogICAgPC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLy91bnBrZy5jb20vc3dhZ2dlci1lZGl0b3JANS4wLjAtYWxwaGEuMTAyL2Rpc3QvdW1kL3N3YWdnZXItZWRpdG9yLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQ+CiAgICAgIFN3YWdnZXJVSUJ1bmRsZSh7CiAgICAgICAgdXJsOiAnaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uJywKICAgICAgICBkb21faWQ6ICcjc3dhZ2dlci11aScsCiAgICAgICAgcHJlc2V0czogWwogICAgICAgICAgU3dhZ2dlclVJQnVuZGxlLnByZXNldHMuYXBpcywKICAgICAgICAgIFN3YWdnZXJVSVN0YW5kYWxvbmVQcmVzZXQsCiAgICAgICAgXSwKICAgICAgICBwbHVnaW5zOiBbCiAgICAgICAgICBTd2FnZ2VyRWRpdG9yLnBsdWdpbnMuRWRpdG9yQ29udGVudE9yaWdpbiwKICAgICAgICAgIFN3YWdnZXJFZGl0b3IucGx1Z2lucy5FZGl0b3JDb250ZW50VHlwZSwKICAgICAgICAgIFN3YWdnZXJFZGl0b3IucGx1Z2lucy5FZGl0b3JQcmV2aWV3QXN5bmNBUEksCiAgICAgICAgICBTd2FnZ2VyRWRpdG9yLnBsdWdpbnMuRWRpdG9yUHJldmlld0FwaURlc2lnblN5c3RlbXMsCiAgICAgICAgICBTd2FnZ2VyRWRpdG9yLnBsdWdpbnMuU3dhZ2dlclVJQWRhcHRlciwKICAgICAgICAgIFN3YWdnZXJVSUJ1bmRsZS5wbHVnaW5zLkRvd25sb2FkVXJsLAogICAgICAgIF0sCiAgICAgICAgbGF5b3V0OiAnU3RhbmRhbG9uZUxheW91dCcsCiAgICAgIH0pOwogICAgPC9zY3JpcHQ+CiAgPC9ib2R5Pgo8L2h0bWw+CmBgYAoKIyMjIENvbXBvc2luZyBjdXN0b21pemVkIFN3YWdnZXJFZGl0b3IgdmVyc2lvbgoKU3dhZ2dlckVkaXRvciBpcyBqdXN0IGEgbnVtYmVyIG9mIFN3YWdnZXJVSSBwbHVnaW5zIHVzZWQgd2l0aCBbc3dhZ2dlci11aS1yZWFjdF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvc3dhZ2dlci11aS1yZWFjdCkuCkN1c3RvbWl6ZWQgU3dhZ2dlckVkaXRvciBjYW4gYmUgY3JlYXRlZCBieSBjb21wb3NpbmcgaW5kaXZpZHVhbCBwbHVnaW5zIHdpdGggZWl0aGVyIFtzd2FnZ2VyLXVpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zd2FnZ2VyLXVpKSBhbmQgW3N3YWdnZXItdWktcmVhY3RdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3N3YWdnZXItdWktcmVhY3QpLgoKIyMjIyBQbHVnaW5zCgpMaXN0IG9mIGF2YWlsYWJsZSBwbHVnaW5zOgoKLSBkaWFsb2dzCi0gZHJvcGRvd24tbWVudQotIGRyb3B6b25lCi0gZWRpdG9yLWNvbnRlbnQtZml4dHVyZXMKLSBlZGl0b3ItY29udGVudC1mcm9tLWZpbGUKLSBlZGl0b3ItY29udGVudC1vcmlnaW4KLSBlZGl0b3ItY29udGVudC1wZXJzaXN0ZW5jZQotIGVkaXRvci1jb250ZW50LXJlYWQtb25seQotIGVkaXRvci1jb250ZW50LXR5cGUKLSBlZGl0b3ItbW9uYWNvCi0gZWRpdG9yLW1vbmFjby1sYW5ndWFnZS1hcGlkb20KLSBlZGl0b3ItbW9uYWNvLXlhbWwtcGFzdGUKLSBlZGl0b3ItcHJldmlldwotIGVkaXRvci1wcmV2aWV3LWFwaS1kZXNpZ24tc3lzdGVtcwotIGVkaXRvci1wcmV2aWV3LWFzeW5jYXBpCi0gZWRpdG9yLXByZXZpZXctc3dhZ2dlci11aQotIGVkaXRvci1zYWZlLXJlbmRlcgotIGVkaXRvci10ZXh0YXJlYQotIGxheW91dAotIG1vZGFscwotIHByb3BzLWNoYW5nZS13YXRjaGVyCi0gc3BsYXNoLXNjcmVlbgotIHN3YWdnZXItdWktYWRhcHRlcgotIHRvcC1iYXIKLSB2ZXJzaW9ucwoKSW5kaXZpZHVhbCBwbHVnaW5zIGNhbiBiZSBpbXBvcnRlZCBpbiB0aGUgZm9sbG93aW5nIHdheToKCmBgYGpzCmltcG9ydCBFZGl0b3JDb250ZW50VHlwZVBsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2VkaXRvci1jb250ZW50LXR5cGUnOwppbXBvcnQgRWRpdG9yQ29udGVudFJlYWRPbmx5UGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLWNvbnRlbnQtcmVhZC1vbmx5JzsKYGBgCgojIyMjIFByZXNldHMKCkFsb25nIHdpdGggcGx1Z2lucywgcHJlc2V0cyBhcmUgYXZhaWxhYmxlIGFzIHdlbGwuIFByZXNldCBpcyBhIGNvbGxlY3Rpb24gb2YgcGx1Z2lucwp0aGF0IGFyZSBkZXNpZ24gdG8gd29yayB0b2dldGhlciB0byBwcm92aWRlIGEgY29tcG91bmQgZmVhdHVyZS4KCkxpc3Qgb2YgYXZhaWxhYmxlIHByZXNldHM6CgotIHRleHRhcmVhCi0gbW9uYWNvCgpJbmRpdmlkdWFsIHByZXNldHMgY2FuIGJlIGltcG9ydGVkIGluIHRoZSBmb2xsb3dpbmcgd2F5OgoKYGBganMKaW1wb3J0IFRleHRhcmVhUHJlc2V0IGZyb20gJ3N3YWdnZXItZWRpdG9yL3ByZXNldHMvdGV4dGFyZWEnOwppbXBvcnQgTW9uYWNvUHJlc2V0IGZyb20gJ3N3YWdnZXItZWRpdG9yL3ByZXNldHMvbW9uYWNvJzsKYGBgCgo+IE5PVEU6IFBsZWFzZSByZWZlciB0byB0aGUgW1BsdWcgcG9pbnRzIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpL2Jsb2IvbWFzdGVyL2RvY3MvY3VzdG9taXphdGlvbi9wbHVnLXBvaW50cy5tZCkKb2YgU3dhZ2dlclVJIHRvIHVuZGVyc3RhbmQgaG93IHByZXNldHMgYXJlIHBhc3NlZCB0byBTd2FnZ2VyVUkuCgojIyMjIENvbXBvc2luZyB3aXRoIHN3YWdnZXItdWkKCmBgYGpzCmltcG9ydCBTd2FnZ2VyVUkgZnJvbSAnc3dhZ2dlci11aSc7CmltcG9ydCAnc3dhZ2dlci11aS9kaXN0L3N3YWdnZXItdWkuY3NzJzsKaW1wb3J0IFV0aWxQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy91dGlsJzsKaW1wb3J0IFZlcnNpb25zUGx1Z2luIGZyb20gJ3N3YWdnZXJlZGl0b3IvcGx1Z2lucy92ZXJzaW9ucyc7CmltcG9ydCBNb2RhbHNQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9tb2RhbHMnOwppbXBvcnQgRGlhbG9nc1BsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2RpYWxvZ3MnOwppbXBvcnQgRHJvcGRvd25NZW51UGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZHJvcGRvd24tbWVudSc7CmltcG9ydCBEcm9wem9uZVBsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2Ryb3B6b25lJzsKaW1wb3J0IFZlcnNpb25zUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvdmVyc2lvbnMnOwppbXBvcnQgRWRpdG9yVGV4dGFyZWFQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9lZGl0b3ItdGV4dGFyZWEnOwppbXBvcnQgRWRpdG9yTW9uYWNvUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLW1vbmFjbyc7CmltcG9ydCBFZGl0b3JNb25hY29ZYW1sUGFzdGVQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9lZGl0b3ItbW9uYWNvLXlhbWwtcGFzdGUnOwppbXBvcnQgRWRpdG9yTW9uYWNvTGFuZ3VhZ2VBcGlET01QbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9lZGl0b3ItbW9uYWNvLWxhbmd1YWdlLWFwaWRvbSc7CmltcG9ydCBFZGl0b3JDb250ZW50UmVhZE9ubHlQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9lZGl0b3ItY29udGVudC1yZWFkLW9ubHknOwppbXBvcnQgRWRpdG9yQ29udGVudE9yaWdpblBsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2VkaXRvci1jb250ZW50LW9yaWdpbic7CmltcG9ydCBFZGl0b3JDb250ZW50VHlwZVBsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2VkaXRvci1jb250ZW50LXR5cGUnOwppbXBvcnQgRWRpdG9yQ29udGVudFBlcnNpc3RlbmNlUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLWNvbnRlbnQtcGVyc2lzdGVuY2UnOwppbXBvcnQgRWRpdG9yQ29udGVudEZpeHR1cmVzUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLWNvbnRlbnQtZml4dHVyZXMnOwppbXBvcnQgRWRpdG9yQ29udGVudEZyb21GaWxlUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLWNvbnRlbnQtZnJvbS1maWxlJzsKaW1wb3J0IEVkaXRvclByZXZpZXdQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9lZGl0b3ItcHJldmlldyc7CmltcG9ydCBFZGl0b3JQcmV2aWV3U3dhZ2dlclVJUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLXByZXZpZXctc3dhZ2dlci11aSc7CmltcG9ydCBFZGl0b3JQcmV2aWV3QXN5bmNBUElQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9lZGl0b3ItcHJldmlldy1hc3luY2FwaSc7CmltcG9ydCBFZGl0b3JQcmV2aWV3QXBpRGVzaWduU3lzdGVtc1BsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2VkaXRvci1wcmV2aWV3LWFwaS1kZXNpZ24tc3lzdGVtcyc7CmltcG9ydCBUb3BCYXJQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy90b3AtYmFyJzsKaW1wb3J0IFNwbGFzaFNjcmVlblBsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL3NwbGFzaC1zY3JlZW4nOwppbXBvcnQgTGF5b3V0UGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvbGF5b3V0JzsKaW1wb3J0IEVkaXRvclNhZmVSZW5kZXJQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9lZGl0b3Itc2FmZS1yZW5kZXInOwoKU3dhZ2dlclVJKHsKICB1cmw6ICdodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uJywKICBkb21faWQ6ICcjc3dhZ2dlci1lZGl0b3InLAogIHBsdWdpbnM6IFsKICAgIFV0aWxQbHVnaW4sCiAgICBWZXJzaW9uc1BsdWdpbiwKICAgIE1vZGFsc1BsdWdpbiwKICAgIERpYWxvZ3NQbHVnaW4sCiAgICBEcm9wZG93bk1lbnVQbHVnaW4sCiAgICBEcm9wem9uZVBsdWdpbiwKICAgIFZlcnNpb25zUGx1Z2luLAogICAgRWRpdG9yVGV4dGFyZWFQbHVnaW4sCiAgICBFZGl0b3JNb25hY29QbHVnaW4sCiAgICBFZGl0b3JNb25hY29ZYW1sUGFzdGVQbHVnaW4sCiAgICBFZGl0b3JNb25hY29MYW5ndWFnZUFwaURPTVBsdWdpbiwKICAgIEVkaXRvckNvbnRlbnRSZWFkT25seVBsdWdpbiwKICAgIEVkaXRvckNvbnRlbnRPcmlnaW5QbHVnaW4sCiAgICBFZGl0b3JDb250ZW50VHlwZVBsdWdpbiwKICAgIEVkaXRvckNvbnRlbnRQZXJzaXN0ZW5jZVBsdWdpbiwKICAgIEVkaXRvckNvbnRlbnRGaXh0dXJlc1BsdWdpbiwKICAgIEVkaXRvckNvbnRlbnRGcm9tRmlsZVBsdWdpbiwKICAgIEVkaXRvclByZXZpZXdQbHVnaW4sCiAgICBFZGl0b3JQcmV2aWV3U3dhZ2dlclVJUGx1Z2luLAogICAgRWRpdG9yUHJldmlld0FzeW5jQVBJUGx1Z2luLAogICAgRWRpdG9yUHJldmlld0FwaURlc2lnblN5c3RlbXNQbHVnaW4sCiAgICBUb3BCYXJQbHVnaW4sCiAgICBTcGxhc2hTY3JlZW5QbHVnaW4sCiAgICBMYXlvdXRQbHVnaW4sCiAgICBFZGl0b3JTYWZlUmVuZGVyUGx1Z2luLAogIF0sCiAgbGF5b3V0OiAnU3RhbmRhbG9uZUxheW91dCcsCn0pOwpgYGAKCiMjIyMgQ29tcG9zaW5nIHdpdGggc3dhZ2dlci11aS1yZWFjdAoKYGBganMKaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsKaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7CmltcG9ydCBTd2FnZ2VyVUkgZnJvbSAnc3dhZ2dlci11aS1yZWFjdCc7CmltcG9ydCAnc3dhZ2dlci11aS1yZWFjdC9zd2FnZ2VyLXVpLmNzcyc7CmltcG9ydCBVdGlsUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvdXRpbCc7CmltcG9ydCBWZXJzaW9uc1BsdWdpbiBmcm9tICdzd2FnZ2VyZWRpdG9yL3BsdWdpbnMvdmVyc2lvbnMnOwppbXBvcnQgTW9kYWxzUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvbW9kYWxzJzsKaW1wb3J0IERpYWxvZ3NQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9kaWFsb2dzJzsKaW1wb3J0IERyb3Bkb3duTWVudVBsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2Ryb3Bkb3duLW1lbnUnOwppbXBvcnQgRHJvcHpvbmVQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9kcm9wem9uZSc7CmltcG9ydCBWZXJzaW9uc1BsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL3ZlcnNpb25zJzsKaW1wb3J0IEVkaXRvclRleHRhcmVhUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLXRleHRhcmVhJzsKaW1wb3J0IEVkaXRvck1vbmFjb1BsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2VkaXRvci1tb25hY28nOwppbXBvcnQgRWRpdG9yTW9uYWNvWWFtbFBhc3RlUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLW1vbmFjby15YW1sLXBhc3RlJzsKaW1wb3J0IEVkaXRvck1vbmFjb0xhbmd1YWdlQXBpRE9NUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLW1vbmFjby1sYW5ndWFnZS1hcGlkb20nOwppbXBvcnQgRWRpdG9yQ29udGVudFJlYWRPbmx5UGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLWNvbnRlbnQtcmVhZC1vbmx5JzsKaW1wb3J0IEVkaXRvckNvbnRlbnRPcmlnaW5QbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9lZGl0b3ItY29udGVudC1vcmlnaW4nOwppbXBvcnQgRWRpdG9yQ29udGVudFR5cGVQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9lZGl0b3ItY29udGVudC10eXBlJzsKaW1wb3J0IEVkaXRvckNvbnRlbnRQZXJzaXN0ZW5jZVBsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2VkaXRvci1jb250ZW50LXBlcnNpc3RlbmNlJzsKaW1wb3J0IEVkaXRvckNvbnRlbnRGaXh0dXJlc1BsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2VkaXRvci1jb250ZW50LWZpeHR1cmVzJzsKaW1wb3J0IEVkaXRvckNvbnRlbnRGcm9tRmlsZVBsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2VkaXRvci1jb250ZW50LWZyb20tZmlsZSc7CmltcG9ydCBFZGl0b3JQcmV2aWV3UGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLXByZXZpZXcnOwppbXBvcnQgRWRpdG9yUHJldmlld1N3YWdnZXJVSVBsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2VkaXRvci1wcmV2aWV3LXN3YWdnZXItdWknOwppbXBvcnQgRWRpdG9yUHJldmlld0FzeW5jQVBJUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLXByZXZpZXctYXN5bmNhcGknOwppbXBvcnQgRWRpdG9yUHJldmlld0FwaURlc2lnblN5c3RlbXNQbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9lZGl0b3ItcHJldmlldy1hcGktZGVzaWduLXN5c3RlbXMnOwppbXBvcnQgVG9wQmFyUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvdG9wLWJhcic7CmltcG9ydCBTcGxhc2hTY3JlZW5QbHVnaW4gZnJvbSAnc3dhZ2dlci1lZGl0b3IvcGx1Z2lucy9zcGxhc2gtc2NyZWVuJzsKaW1wb3J0IExheW91dFBsdWdpbiBmcm9tICdzd2FnZ2VyLWVkaXRvci9wbHVnaW5zL2xheW91dCc7CmltcG9ydCBFZGl0b3JTYWZlUmVuZGVyUGx1Z2luIGZyb20gJ3N3YWdnZXItZWRpdG9yL3BsdWdpbnMvZWRpdG9yLXNhZmUtcmVuZGVyJzsKCmNvbnN0IFN3YWdnZXJFZGl0b3IgPSAoKSA9PiB7CiAgcmV0dXJuICgKICAgIDxTd2FnZ2VyVUkKICAgICAgdXJsPXt1cmx9CiAgICAgIHBsdWdpbnM9e1sKICAgICAgICBVdGlsUGx1Z2luLAogICAgICAgIFZlcnNpb25zUGx1Z2luLAogICAgICAgIE1vZGFsc1BsdWdpbiwKICAgICAgICBEaWFsb2dzUGx1Z2luLAogICAgICAgIERyb3Bkb3duTWVudVBsdWdpbiwKICAgICAgICBEcm9wem9uZVBsdWdpbiwKICAgICAgICBWZXJzaW9uc1BsdWdpbiwKICAgICAgICBFZGl0b3JUZXh0YXJlYVBsdWdpbiwKICAgICAgICBFZGl0b3JNb25hY29QbHVnaW4sCiAgICAgICAgRWRpdG9yTW9uYWNvWWFtbFBhc3RlUGx1Z2luLAogICAgICAgIEVkaXRvck1vbmFjb0xhbmd1YWdlQXBpRE9NUGx1Z2luLAogICAgICAgIEVkaXRvckNvbnRlbnRSZWFkT25seVBsdWdpbiwKICAgICAgICBFZGl0b3JDb250ZW50T3JpZ2luUGx1Z2luLAogICAgICAgIEVkaXRvckNvbnRlbnRUeXBlUGx1Z2luLAogICAgICAgIEVkaXRvckNvbnRlbnRQZXJzaXN0ZW5jZVBsdWdpbiwKICAgICAgICBFZGl0b3JDb250ZW50Rml4dHVyZXNQbHVnaW4sCiAgICAgICAgRWRpdG9yQ29udGVudEZyb21GaWxlUGx1Z2luLAogICAgICAgIEVkaXRvclByZXZpZXdQbHVnaW4sCiAgICAgICAgRWRpdG9yUHJldmlld1N3YWdnZXJVSVBsdWdpbiwKICAgICAgICBFZGl0b3JQcmV2aWV3QXN5bmNBUElQbHVnaW4sCiAgICAgICAgRWRpdG9yUHJldmlld0FwaURlc2lnblN5c3RlbXNQbHVnaW4sCiAgICAgICAgVG9wQmFyUGx1Z2luLAogICAgICAgIFNwbGFzaFNjcmVlblBsdWdpbiwKICAgICAgICBMYXlvdXRQbHVnaW4sCiAgICAgICAgRWRpdG9yU2FmZVJlbmRlclBsdWdpbiwKICAgICAgXX0KICAgICAgbGF5b3V0PSJTdGFuZGFsb25lTGF5b3V0IgogICAgLz4KICApOwp9OwoKUmVhY3RET00ucmVuZGVyKDxTd2FnZ2VyRWRpdG9yIC8+LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3dhZ2dlci1lZGl0b3InKSk7CmBgYAoKIyMgRG9ja2VyCgojIyMgUHJlLWJ1aWx0IERvY2tlckh1YiBpbWFnZQoKU3dhZ2dlckVkaXRvciBpcyBhdmFpbGFibGUgYXMgYSBwcmUtYnVpbHQgZG9ja2VyIGltYWdlIGhvc3RlZCBvbiAqKmRvY2tlci5zd2FnZ2VyLmlvKiouCgpgYGBzaAokIGRvY2tlciBwdWxsIGRvY2tlci5zd2FnZ2VyLmlvL3N3YWdnZXJhcGkvc3dhZ2dlci1lZGl0b3I6bGF0ZXN0CiQgZG9ja2VyIHJ1biAtZCAtcCA4MDgwOjgwIGRvY2tlci5zd2FnZ2VyLmlvL3N3YWdnZXJhcGkvc3dhZ2dlci1lZGl0b3I6bGF0ZXN0CmBgYAoKIyMjIEJ1aWxkaW5nIGxvY2FsbHkKCioqUHJpdmlsZWdlZCBpbWFnZSoqOgoKYGBgc2gKICQgbnBtIHJ1biBidWlsZDphcHAKICQgZG9ja2VyIGJ1aWxkIC4gLXQgc3dhZ2dlcmFwaS9zd2FnZ2VyLWVkaXRvcjpsYXRlc3QKICQgZG9ja2VyIHJ1biAtZCAtcCA4MDgwOjgwIHN3YWdnZXJhcGkvc3dhZ2dlci1lZGl0b3I6bGF0ZXN0CmBgYAoKTm93IG9wZW4geW91ciBicm93c2VyIGF0IGBodHRwOi8vbG9jYWxob3N0OjgwODAvYC4KCioqVW5wcml2aWxlZ2VkIGltYWdlKio6CgpgYGBzaAogJCBucG0gcnVuIGJ1aWxkOmFwcAogJCBkb2NrZXIgYnVpbGQgLiAtZiBEb2NrZXJmaWxlLnVucHJpdmlsZWdlZCAtdCBzd2FnZ2VyYXBpL3N3YWdnZXItZWRpdG9yOmxhdGVzdC11bnByaXZpbGVnZWQKICQgZG9ja2VyIHJ1biAtZCAtcCA4MDgwOjgwODAgc3dhZ2dlcmFwaS9zd2FnZ2VyLWVkaXRvcjpsYXRlc3QtdW5wcml2aWxlZ2VkCmBgYAoKTm93IG9wZW4geW91ciBicm93c2VyIGF0IGBodHRwOi8vbG9jYWxob3N0OjgwODAvYC4KCj4gKipObyoqIGN1c3RvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgU3dhZ2dlckVkaXRvci4KCiMjIExpY2Vuc2UKClN3YWdnZXJFZGl0b3IgaXMgbGljZW5zZWQgdW5kZXIgW0FwYWNoZSAyLjAgbGljZW5zZV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItZWRpdG9yL2Jsb2IvbmV4dC9MSUNFTlNFUy9BcGFjaGUtMi4wLnR4dCkuClN3YWdnZXJFZGl0b3IgY29tZXMgd2l0aCBhbiBleHBsaWNpdCBbTk9USUNFXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL2Jsb2IvbmV4dC9OT1RJQ0UpIGZpbGUKY29udGFpbmluZyBhZGRpdGlvbmFsIGxlZ2FsIG5vdGlmaWNhdGlvbnMgYW5kIGluZm9ybWF0aW9uLgoKVGhpcyBwcm9qZWN0IHVzZXMgW1JFVVNFIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vcmV1c2Uuc29mdHdhcmUvc3BlYy8pIHRoYXQgZGVmaW5lcyBhIHN0YW5kYXJkaXplZCBtZXRob2QKZm9yIGRlY2xhcmluZyBjb3B5cmlnaHQgYW5kIGxpY2Vuc2luZyBmb3Igc29mdHdhcmUgcHJvamVjdHMuCgojIyBTb2Z0d2FyZSBCaWxsIE9mIE1hdGVyaWFscyAoU0JPTSkKClNvZnR3YXJlIEJpbGwgT2YgbWF0ZXJpYWxzIGlzIGF2YWlsYWJsZSBpbiB0aGlzIHJlcG9zaXRvcnkgW2RlcGVuZGVuY3kgZ3JhcGhdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWVkaXRvci9uZXR3b3JrL2RlcGVuZGVuY2llcykuCkNsaWNrIG9uIGBFeHBvcnQgU0JPTWAgYnV0dG9uIHRvIGRvd25sb2FkIHRoZSBTQk9NIGluIFtTUERYIGZvcm1hdF0oaHR0cHM6Ly9zcGR4LmRldi8pLgo= readmeEtag: '"9c26ed7997e0cd9ee1c251b86c3cd2ba08f3eecf"' readmeLastModified: Mon, 26 Jan 2026 14:49:08 GMT repositoryId: 19390712 description: Swagger Editor created: '2014-05-02T22:47:10Z' updated: '2026-02-06T03:09:04Z' language: JavaScript archived: false stars: 9412 watchers: 249 forks: 2360 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 repoEtag: '"eb5fb52e576677c14f132df7c77cbce025014de43499cb8e7271961339eca714"' repoLastModified: Fri, 06 Feb 2026 03:09:04 GMT foundInMaster: true id: 951cf61d12c812ef9b201ad76b5d278d v3_1: true - source: https://openapi.tools/ name: SwaggerHub category: Text Editors language: - SaaS - On-Premise NodeJS repository: null link: https://swagger.io/tools/swaggerhub/ source_description: > API design and documentation platform to improve collaboration, standardize development workflow and centralize their API discovery and consumption. v2: true v3: true foundInMaster: true id: 4b7adfae5ed14133b59e6f80811da841 - source: https://openapi.tools/ name: Redocly VSCode Extension category: - Text Editors - Parsers language: Node.js link: https://marketplace.visualstudio.com/items?itemName=Redocly.openapi-vs-code repository: https://github.com/redocly/redocly-vs-code source_description: >- Redocly OpenAPI is a Visual Studio Code extension that helps you write, validate, preview, and maintain your OpenAPI documents. v2: true v3: true v3_1: true id: 491454b1f2a266a142515a7eee661b08 repositoryMetadata: base64Readme: >- IyBSZWRvY2x5IE9wZW5BUEkKCgpSZWRvY2x5IE9wZW5BUEkgaXMgYSBWaXN1YWwgU3R1ZGlvIENvZGUgZXh0ZW5zaW9uIHRoYXQgaGVscHMgeW91IHdyaXRlLCB2YWxpZGF0ZSwgYW5kIG1haW50YWluIHlvdXIgT3BlbkFQSSBkb2N1bWVudHMuIEl0IHdhcm5zIGFib3V0IGVycm9ycyBpbiBPcGVuQVBJIGRlZmluaXRpb25zIGFuZCBsZXRzIHlvdSBxdWlja2x5IGFjY2VzcyByZWZlcmVuY2VkIHNjaGVtYXMgb3Igb3BlbiB0aGUgZmlsZXMgdGhhdCBjb250YWluIHRoZW0uIFRoZSBleHRlbnNpb24gd29ya3Mgd2l0aCBPcGVuQVBJIDIuMCBhbmQgMy4wIGRlZmluaXRpb25zLCBhbmQgaGFzIGJhc2ljIHN1cHBvcnQgZm9yIE9wZW5BUEkgMy4xLgoKKipGZWF0dXJlIGhpZ2hsaWdodHM6KioKCi0gVmFsaWRhdGUgeW91ciBPcGVuQVBJIGRlZmluaXRpb25zIAotIFF1aWNrbHkgcHJldmlldyBhbmQgYWNjZXNzIHJlZmVyZW5jZWQgc2NoZW1hcwotIFdvcmsgd2l0aCBtdWx0aS1maWxlIGRlZmluaXRpb25zCi0gUHJldmlldyBBUEkgZG9jdW1lbnRhdGlvbiBzaWRlLWJ5LXNpZGUgd2l0aCB5b3VyIE9wZW5BUEkgZGVmaW5pdGlvbgotIEFjY2VzcyBjb250ZXh0LWF3YXJlIGhlbHAgYWJvdXQgT3BlbkFQSSBmZWF0dXJlcwotIEVkaXQgQVBJIGRlZmluaXRpb25zIHRocm91Z2ggaW50ZXJhY3RpdmUgZm9ybXMgCgoKIVtQZWVrIGFuZCBnby10byBkZWZpbml0aW9uIGZlYXR1cmVzXShodHRwczovL3JlZG9jLmx5L2ltYWdlcy92c2NvZGUvb3BlbmFwaS12c2NvZGUtcGVlay5naWYpCgoqKkZvdW5kIGFuIGlzc3VlIG9yIGhhdmUgYW4gaWRlYSBmb3IgaW1wcm92aW5nIHRoZSBleHRlbnNpb24/IFtMZXQgdXMga25vdyFdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jbHktdnMtY29kZS9pc3N1ZXMvbmV3L2Nob29zZSkqKgoKKipUaGUgY2hhbmdlbG9nIGlzIGF2YWlsYWJsZSBbaGVyZV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zL1JlZG9jbHkub3BlbmFwaS12cy1jb2RlL2NoYW5nZWxvZykuKioKCiMjIEJlZm9yZSB5b3Ugc3RhcnQKCi0gVGhlIGV4dGVuc2lvbiByZXF1aXJlcyBhIGByZWRvY2x5LnlhbWxgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB5b3VyIHdvcmtzcGFjZS4gUmVhZCBob3cgdG8gY3JlYXRlIGl0IFtpbiB0aGUgQ29uZmlndXJhdGlvbiBzZWN0aW9uXSgjY29uZmlndXJhdGlvbikuCgotIE5vdGUgdGhhdCB0aGUgZXh0ZW5zaW9uIG9ubHkgd29ya3Mgd2l0aCBZQU1MIGZpbGVzLiBWYWxpZGF0aW9uIGZvciBKU09OIGZpbGVzIGlzIHN1cHBvcnRlZCBzdGFydGluZyB3aXRoIHZlcnNpb24gYDAuMi4wYCBvZiB0aGUgZXh0ZW5zaW9uLgoKCiMjIyBMaW1pdGF0aW9ucwoKQmUgYXdhcmUgdGhhdCB0aGUgZXh0ZW5zaW9uIG1heSBiZSBhZmZlY3RlZCBieSBzb21lIGxpbWl0YXRpb25zIG9mIHRoZSBWUyBDb2RlIGVkaXRvci4KClNvIGZhciwgd2UgaGF2ZSBpZGVudGlmaWVkIHRoZXNlIGxpbWl0YXRpb25zOgoKLSBTcGVjaWFsIGNoYXJhY3RlcnMgYC9gLCBgJGAgYW5kIGAjYCBkbyBub3QgdHJpZ2dlciBWUyBDb2RlIHN1Z2dlc3Rpb25zCi0gVlMgQ29kZSBkb2Vzbid0IHN1Z2dlc3QgdmFsdWVzIHdoaWxlIGluc2lkZSBhIHNuaXBwZXQKCgojIyBJbnN0YWxsYXRpb24KClRvIGluc3RhbGwgdGhlIGV4dGVuc2lvbiBpbiBWUyBDb2RlOgoKMS4gUHJlc3MgW0N0cmwrU2hpZnQrWF0gb3IgW+KHp+KMmFhdIHRvIG9wZW4gdGhlICpFeHRlbnNpb25zKiB0YWIuCgoyLiBUeXBlIGBSZWRvY2x5IE9wZW5BUElgIHRvIHNlYXJjaCBmb3IgdGhlIGV4dGVuc2lvbiBpbiBNYXJrZXRwbGFjZS4KCjMuIEZpbmQgdGhlIGV4dGVuc2lvbiBpbiB0aGUgbGlzdCBhbmQgc2VsZWN0ICoqSW5zdGFsbCoqLgoKNC4gV2hlbiB0aGUgaW5zdGFsbGF0aW9uIGlzIGNvbXBsZXRlLCBzZWxlY3QgKipFbmFibGUqKiB0byBhY3RpdmF0ZSB0aGUgZXh0ZW5zaW9uIGluIHlvdXIgd29ya3NwYWNlLgoKCiMjIENvbmZpZ3VyYXRpb24KClRvIHVzZSB0aGUgZXh0ZW5zaW9uLCB3ZSByZWNvbW1lbmQgeW91IGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZSBjYWxsZWQgYHJlZG9jbHkueWFtbGAgYW5kIHBsYWNlIGl0IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB5b3VyIHdvcmtzcGFjZS4gSWYgdGhlIGV4dGVuc2lvbiBkZXRlY3RzIHRoYXQgdGhpcyBmaWxlIGRvZXNuJ3QgZXhpc3QsIGl0IHdpbGwgcHJvbXB0IHlvdSB0byBjcmVhdGUgaXQgYXV0b21hdGljYWxseSBmb3IgdGhlIGN1cnJlbnQgd29ya3NwYWNlLgoKSGVyZSdzIGFuIGV4YW1wbGUgb2Ygd2hhdCB5b3VyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgY291bGQgbG9vayBsaWtlOgoKYGBgCi4K4pSc4pSA4pSAIHdvcmtzcGFjZSAK4pSCICAg4pSc4pSA4pSAIG9wZW5hcGktZGVmaW5pdGlvbnMK4pSCICAg4pSCICAg4pSc4pSA4pSAIHByb2R1Y3Rpb24ueWFtbArilIIgICDilIIgICDilJTilIDilIAgdGVzdC55YW1sCuKUgiAgIOKUnOKUgOKUgCByZWRvY2x5LnlhbWwK4pSCICAg4pSc4pSA4pSAIHNvbWUtZmlsZS50eHQKCmBgYAoKVGhlIGByZWRvY2x5LnlhbWxgIGNvbmZpZ3VyYXRpb24gZmlsZSBkZWZpbmVzIHRoZSBjcml0ZXJpYSBmb3IgdmFsaWRhdGluZyBPcGVuQVBJIGRlZmluaXRpb25zLiAKCkFkZCB0aGUgZm9sbG93aW5nIGV4YW1wbGUgY29udGVudHMgdG8gdGhlIGZpbGUgYW5kIHNhdmUgdGhlIGNoYW5nZXM6CgpgYGB5YW1sCmFwaXM6CiAgYXBpTmFtZUB2ZXJzaW9uOgogICAgcm9vdDogLi9vcGVuYXBpLnlhbWwKCmV4dGVuZHM6CiAgLSByZWNvbW1lbmRlZAogIApydWxlczoKICBhc3NlcnQvb3BlcmF0aW9uLWRlc2NyaXB0aW9uOgogICAgc3ViamVjdDogCiAgICAgIHR5cGU6IE9wZXJhdGlvbgogICAgICBwcm9wZXJ0eTogZGVzY3JpcHRpb24KICAgIGFzc2VydGlvbnM6CiAgICAgIGRlZmluZWQ6IHRydWUKICAgICAgbWluTGVuZ3RoOiAzMAoKdGhlbWU6CiAgb3BlbmFwaToKICAgIGdlbmVyYXRlQ29kZVNhbXBsZXM6CiAgICAgIGxhbmd1YWdlczoKICAgICAgICAtIGxhbmc6IGN1cmwKICAgICAgICAtIGxhbmc6IE5vZGUuanMKICAgICAgICAtIGxhbmc6IFB5dGhvbgpgYGAKClRoaXMgd2lsbCBsZXQgeW91IHN0YXJ0IHdvcmtpbmcgd2l0aCB0aGUgZXh0ZW5zaW9uLiBZb3UgY2FuIG1vZGlmeSB0aGUgZmlsZSBhdCBhbnkgcG9pbnQgdG8gY29udHJvbCB0aGUgYmVoYXZpb3Igb2YgdGhlIGV4dGVuc2lvbi4gV2hlbiBtb2RpZnlpbmcgdGhlIGByZWRvY2x5LnlhbWxgIGZpbGUsIHlvdSBtdXN0IHNhdmUgaXQgdG8gZGlzayBmb3IgeW91ciBjaGFuZ2VzIHRvIGFwcGx5LgoKVG8gbGVhcm4gbW9yZSBhYm91dCBidWlsdC1pbiBydWxlcyB5b3UgY2FuIHVzZSwgcmVmZXIgdG8gdGhlIFtSZWRvY2x5IE9wZW5BUEkgQ0xJIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vcmVkb2MubHkvZG9jcy9jbGkvYnVpbHQtaW4tcnVsZXMvKS4gVGhlIFtsaW50aW5nIGd1aWRlXShodHRwczovL3JlZG9jLmx5L2RvY3MvY2xpL2d1aWRlcy9saW50LykgcHJvdmlkZXMgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29uZmlndXJlIHRoZSBsaW50ZXIuCgpOb3RlIHRoYXQgeW91IGNhbiBhZGQgbXVsdGlwbGUgcGF0aHMgdG8gT3BlbkFQSSBmaWxlcyB1bmRlciBgYXBpRGVmaW5pdGlvbnNgLCBlYWNoIGluIGl0cyBvd24gbGluZSB3aXRoIGEgY3VzdG9tLCB1bmlxdWUgbmFtZSBhcyB0aGUga2V5LiBGaWxlcyBsaXN0ZWQgaW4gdGhpcyBzZWN0aW9uIHdpbGwgYmUgYXV0b21hdGljYWxseSB2YWxpZGF0ZWQgYnkgdGhlIGV4dGVuc2lvbiB3aGVuIHlvdSBvcGVuIHRoZW0gaW4gVlMgQ29kZS4gQ2hhbmdlcyBtYWRlIHRvIGBhcGlEZWZpbml0aW9uc2AgYXJlIGR5bmFtaWNhbGx5IHJlZmxlY3RlZCBpbiB0aGUgW3ByZXZpZXcgcGFuZWxdKCNsaXZlLXByZXZpZXctb2YtdGhlLWFwaS1kb2N1bWVudGF0aW9uKS4KCgojIyBVc2FnZQoKVGhlIFJlZG9jbHkgT3BlbkFQSSBWUyBDb2RlIGV4dGVuc2lvbiBoZWxwcyB5b3UgY3JlYXRlIGFuZCB1cGRhdGUgT3BlbkFQSSBkb2N1bWVudHMuIAoKVG8gc3RhcnQgdXNpbmcgaXQsIGVpdGhlciBjcmVhdGUgYSBuZXcgT3BlbkFQSSBkZWZpbml0aW9uIG9yIG9wZW4gYW4gZXhpc3Rpbmcgb25lIGluIHlvdXIgVlMgQ29kZS4KCklmIHRoaXMgaXMgeW91ciBmaXJzdCB0aW1lIHdvcmtpbmcgd2l0aCBPcGVuQVBJIGRlZmluaXRpb25zLCB5b3UgY2FuIHVzZSBvdXIgZGVmYXVsdCB0ZW1wbGF0ZSB0byBnZXQgc3RhcnRlZC4gQ3JlYXRlIGFuIGVtcHR5IFlBTUwgZmlsZSBhbmQgb3BlbiB0aGUgKkN1cnNvciBjb250ZXh0KiBwYW5lbC4gSW4gdGhlIHBhbmVsLCBzZWxlY3QgKipBZGQgdGVtcGxhdGUqKi4gTm93IHlvdSBoYXZlIGEgZnVsbHkgZnVuY3Rpb25hbCBPcGVuQVBJIGRlZmluaXRpb24geW91IGNhbiB1c2Ugd2l0aCB0aGUgZXh0ZW5zaW9uLgoKIVtBZGRpbmcgdGhlIGRlZmF1bHQgT3BlbkFQSSB0ZW1wbGF0ZV0oaHR0cHM6Ly9yZWRvYy5seS9pbWFnZXMvdnNjb2RlL3JlZG9jbHktdnNjb2RlLWRlZmF1bHQtdGVtcGxhdGUuZ2lmKQoKCiMjIyBPcGVuQVBJIHN0cnVjdHVyZSBhdXRvY29tcGxldGlvbiAKClRvIHVzZSB0aGUgZXh0ZW5zaW9uIGZvciBPcGVuQVBJIGF1dGhvcmluZywgY3JlYXRlIGEgbmV3LCBlbXB0eSBZQU1MIGZpbGUuIEFzIHlvdSBzdGFydCB0eXBpbmcgYG9wZW5hcGlgIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUsIHRoZSBleHRlbnNpb24gd2lsbCBhdXRvbWF0aWNhbGx5IG9mZmVyIHN1Z2dlc3Rpb25zIGZvciBPcGVuQVBJIGRlZmluaXRpb24gZWxlbWVudHMgW2FjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24pLiAKCiFbQXV0b2NvbXBsZXRpb25dKGh0dHBzOi8vcmVkb2MubHkvaW1hZ2VzL3ZzY29kZS9vcGVuYXBpLXZzY29kZS1hdXRob3IuZ2lmKQoKU2VsZWN0IGEgc3VnZ2VzdGlvbiBmcm9tIHRoZSBsaXN0LiBUaGUgZXh0ZW5zaW9uIHdpbGwgYXV0b21hdGljYWxseSBnZW5lcmF0ZSB0aGUgZmllbGRzIHN1cHBvcnRlZCBieSB0aGUgc2VsZWN0ZWQgT3BlbkFQSSBzZWN0aW9uLiBZb3UgY2FuIHRoZW4gYWRkIHlvdXIgdmFsdWVzIGZvciBlYWNoIG9mIHRoZSBmaWVsZHMuCgojIyMgVmFsdWUgYXV0b2NvbXBsZXRpb24gCgpTdGFydGluZyB3aXRoIHZlcnNpb24gYDAuMi4wYCwgdGhlIGV4dGVuc2lvbiBzdXBwb3J0cyB2YWx1ZSBhdXRvY29tcGxldGlvbiBmb3IgcmVmZXJlbmNlcyAoYCRyZWZgIGZpZWxkcykuIFRvIHVzZSB0aGlzIGZlYXR1cmUsIHlvdXIgT3BlbkFQSSBkb2N1bWVudCBtdXN0IGhhdmUgYGNvbXBvbmVudHNgIHdpdGggYSBwcm9wZXIgdHlwZSBkZWZpbmVkLiBGb3IgZXhhbXBsZSwgdGhlIGV4dGVuc2lvbiB3aWxsIG9ubHkgc3VnZ2VzdCB2YWx1ZXMgZm9yIGAkcmVmYCBpbnNpZGUgYHJlcXVlc3RCb2R5YCBpZiB5b3UgaGF2ZSBjb21wb25lbnRzIGRlZmluZWQgaW4gYHJlcXVlc3RCb2RpZXNgLiBTaW1pbGFybHksIGl0IHdpbGwgb25seSBzdWdnZXN0IHZhbHVlcyBmcm9tIGBzY2hlbWFzYCBmb3IgYCRyZWZgIGZpZWxkcyBpbnNpZGUgYHNjaGVtYWAuCgohW1JlZmVyZW5jZXMgY29tcGxldGlvbl0oaHR0cHM6Ly9yZWRvYy5seS9pbWFnZXMvdnNjb2RlL29wZW5hcGktdnNjb2RlLXJlZmVyZW5jZS1jb21wbGV0aW9uLmdpZikKCkF1dG9jb21wbGV0aW9uIGZvciBgZXhhbXBsZWAgYW5kIGBkZWZhdWx0YCBmaWVsZHMgd2lsbCBzdWdnZXN0IHZhbHVlcyB5b3UgaGF2ZSBwcmV2aW91c2x5IGRlZmluZWQgaW4gYGVudW1gIG9uIHRoZSBzYW1lIGxldmVsLgoKIVtFeGFtcGxlL0RlZmF1bHQgY29tcGxldGlvbl0oaHR0cHM6Ly9yZWRvYy5seS9pbWFnZXMvdnNjb2RlL29wZW5hcGktdnNjb2RlLWV4YW1wbGUtZGVmYXVsdC1jb21wbGV0aW9uLmdpZikKClRoZSBleHRlbnNpb24gd2lsbCBhbHNvIHNob3cgc3VnZ2VzdGVkIHZhbHVlcyBmb3IgYWxsIG90aGVyIGZpZWxkcyB0aGF0IGhhdmUgYSBwcmVkZWZpbmVkIHNldCBvZiB2YWx1ZXMgYWNjb3JkaW5nIHRvIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gKGxpa2UgYHJlcXVpcmVkYCwgd2hpY2ggaGFzIGBib29sZWFuYCB0eXBlOyBvciBgdHlwZWAsIHdoaWNoIG11c3QgYmUgb25lIG9mIGBhcnJheWAgfCBgb2JqZWN0YCB8IGBudW1iZXJgKSBhbmQgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IFtSZWRvY2x5IE9wZW5BUEkgQ0xJXS4KCiFbVmFsdWUgY29tcGxldGlvbl0oaHR0cHM6Ly9yZWRvYy5seS9pbWFnZXMvdnNjb2RlL29wZW5hcGktdnNjb2RlLWVudW0tYm9vbGVhbi1jb21wbGV0aW9uLmdpZikKCiMjIyBEeW5hbWljIE9wZW5BUEkgdmFsaWRhdGlvbiAKClRoZSBleHRlbnNpb24gY29udGludW91c2x5IHZhbGlkYXRlcyB0aGUgT3BlbkFQSSBkZWZpbml0aW9uIHlvdSdyZSB3b3JraW5nIG9uLiBEZXBlbmRpbmcgb24gdGhlIHJ1bGVzIHlvdSd2ZSBhZGRlZCB0byB5b3VyIGByZWRvY2x5LnlhbWxgIGZpbGUsIHRoZSBleHRlbnNpb24gd2lsbCB3YXJuIHlvdSBhYm91dCB0aGUgZm9sbG93aW5nIGlzc3VlczoKCi0gaW5kZW50YXRpb24KLSBpbmNvcnJlY3QgdHlwZSB1c2FnZQotIHdyb25nIHBhdGhzIHRvIHJlZmVyZW5jZWQgZmlsZXMKLSBtaXNzaW5nIG9yIHVuZGVmaW5lZCBmaWVsZHMgYW5kIHNlY3Rpb25zCi0gYW5kIG1vcmUKCkhlcmUgYXJlIHNvbWUgZXhhbXBsZXMgaWxsdXN0cmF0aW5nIGRpZmZlcmVudCB0eXBlcyBvZiBpc3N1ZXMgYW5kIGhvdyBSZWRvY2x5IE9wZW5BUEkgcG9pbnRzIHRoZW0gb3V0LgoKKipNaXNzaW5nIGZpZWxkcyBhbmQgc2VjdGlvbnMqKgoKIVtSZWRvY2x5IE9wZW5BUEkgd2FybmluZyBmb3IgdGhlIHNlcnZlcnMgc2VjdGlvbl0oaHR0cHM6Ly9yZWRvYy5seS9pbWFnZXMvdnNjb2RlL29wZW5hcGktdnNjb2RlLW1pc3Npbmctc2VjdGlvbi5wbmcpCgohW1JlZG9jbHkgT3BlbkFQSSB3YXJuaW5nIGZvciBmaWVsZHMgaW4gdGhlIG9wZXJhdGlvbiBvYmplY3RdKGh0dHBzOi8vcmVkb2MubHkvaW1hZ2VzL3ZzY29kZS9vcGVuYXBpLXZzY29kZS1yZXF1aXJlZC1maWVsZHMucG5nKQoKCioqVW5kZWZpbmVkIHNlY3Rpb25zKioKCiFbUmVkb2NseSBPcGVuQVBJIHdhcm5pbmcgZm9yIHVuZGVmaW5lZCBzZWN1cml0eSBzY2hlbWVdKGh0dHBzOi8vcmVkb2MubHkvaW1hZ2VzL3ZzY29kZS9vcGVuYXBpLXZzY29kZS1zZWN1cml0eS1zY2hlbWUucG5nKQoKCioqVHlwZSB1c2FnZSoqCgohW1JlZG9jbHkgT3BlbkFQSSB3YXJuaW5nIGFib3V0IGFsbG93ZWQgdHlwZXNdKGh0dHBzOi8vcmVkb2MubHkvaW1hZ2VzL3ZzY29kZS9vcGVuYXBpLXZzY29kZS10eXBlLnBuZykKCgoqKldyb25nIHBhdGggdG8gcmVmZXJlbmNlZCBmaWxlKioKCiFbUmVkb2NseSBPcGVuQVBJIHdhcm5pbmcgYWJvdXQgYSByZWZlcmVuY2VkIGZpbGUgbm90IGZvdW5kXShodHRwczovL3JlZG9jLmx5L2ltYWdlcy92c2NvZGUvb3BlbmFwaS12c2NvZGUtaW5jb3JyZWN0LXJlZmVyZW5jZS5wbmcpCgoKIyMjIFF1aWNrIG5hdmlnYXRpb24KCldoZW4geW91IFt1c2UgcmVmZXJlbmNlc10oaHR0cHM6Ly9yZWRvYy5seS9kb2NzL3Jlc291cmNlcy9yZWYtZ3VpZGUvKSBpbiB5b3VyIE9wZW5BUEkgZGVmaW5pdGlvbiwgdGhlIGV4dGVuc2lvbiB3aWxsIHZhbGlkYXRlIHRoZW0gYW5kIHdhcm4geW91IGlmIHRoZXkgYXJlIGluY29ycmVjdCAoZm9yIGV4YW1wbGUsIGlmIHRoZSBwYXRoIHRvIGEgc2NoZW1hIGluIGEgc2VwYXJhdGUgZmlsZSBpcyBpbmNvcnJlY3QpLiAKClJpZ2h0LWNsaWNrIG9uIGFueSBgJHJlZmAgdmFsdWUgdG8gYWNjZXNzIGFkZGl0aW9uYWwgbmF2aWdhdGlvbiBvcHRpb25zOiAqKkdvIHRvIERlZmluaXRpb24qKiBhbmQgKipQZWVrKiouCgpTZWxlY3RpbmcgKipHbyB0byBEZWZpbml0aW9uKiogb3BlbnMgdGhlIHJlZmVyZW5jZWQgaXRlbSBpbiBhIG5ldyBWUyBDb2RlIHRhYiAoaWYgaXQncyBhIHNlcGFyYXRlIGZpbGUpIG9yIHRha2VzIHlvdSBkaXJlY3RseSB0byB0aGUgc2VjdGlvbiB3aGVyZSBpdCdzIGRlZmluZWQgKGlmIGl0J3MgaW4gdGhlIHNhbWUgZmlsZSkuCgpTZWxlY3RpbmcgKipQZWVrID4gUGVlayBkZWZpbml0aW9uKiogb3BlbnMgYW4gaW5saW5lIHByZXZpZXcgb2YgdGhlIHJlZmVyZW5jZWQgaXRlbSB3aXRoaW4gdGhlIGN1cnJlbnQgVlMgQ29kZSB0YWIuCgoKIyMjIExpdmUgcHJldmlldyBvZiB0aGUgQVBJIGRvY3VtZW50YXRpb24KClRoZSBSZWRvY2x5IE9wZW5BUEkgVlMgQ29kZSBleHRlbnNpb24gcmVsaWVzIG9uIFtSZWRvY2x5IFJlZmVyZW5jZV0oaHR0cHM6Ly9yZWRvYy5seS9yZWZlcmVuY2UtZG9jcykgdG8gZ2VuZXJhdGUgYSBwcmV2aWV3IG9mIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBiYXNlZCBvbiB0aGUgT3BlbkFQSSBkb2N1bWVudCB5b3UncmUgZWRpdGluZy4gVGhpcyBsZXRzIHlvdSBzZWUgdGhlIE9wZW5BUEkgc291cmNlIGFuZCB0aGUgZG9jdW1lbnRhdGlvbiBnZW5lcmF0ZWQgZnJvbSBpdCBzaWRlLWJ5LXNpZGUuIFdoZW4geW91IHNhdmUgYSBjaGFuZ2UgdG8geW91ciBPcGVuQVBJIGRlZmluaXRpb24sIHRoZSBkb2N1bWVudGF0aW9uIGluIHRoZSBwcmV2aWV3IHBhbmVsIGlzIGF1dG9tYXRpY2FsbHkgdXBkYXRlZC4KCkFjY2VzcyB0aGUgZG9jdW1lbnRhdGlvbiBwcmV2aWV3IGluIGFueSBvZiB0aGUgZm9sbG93aW5nIHdheXM6CgotIFNlbGVjdCB0aGUgKipPcGVuIHByZXZpZXcqKiBidXR0b24gaW4gdGhlIHVwcGVyIHJpZ2h0IHNlY3Rpb24gb2YgeW91ciBWUyBDb2RlIHdpbmRvdy4KCi0gT3BlbiB0aGUgKkNvbW1hbmQgUGFsZXR0ZSosIHN0YXJ0IHR5cGluZyBgcmVkb2NseWAsIHRoZW4gc2VsZWN0ICpSZWRvY2x5IE9wZW5BUEk6IE9wZW4gcHJldmlldyouCgpCb3RoIGFjdGlvbnMgb3BlbiB0aGUgKlByZXZpZXcqIHBhbmVsLgoKSW4gdGhlIHBhbmVsLCB5b3UgbXVzdCBwcm92aWRlIGFuIEFQSSBrZXkgZnJvbSBSZWRvY2x5IHRvIHVzZSB0aGUgZG9jdW1lbnRhdGlvbiBwcmV2aWV3IGZlYXR1cmUuIFRvIG9idGFpbiB0aGUga2V5LCBmaXJzdCBbY3JlYXRlIGEgZnJlZSBSZWRvY2x5IGFjY291bnRdKGh0dHBzOi8vYXBwLnJlZG9jLmx5L3NpZ251cCksIHRoZW4gW2dlbmVyYXRlIGEgcGVyc29uYWwgQVBJIGtleV0oaHR0cHM6Ly9yZWRvYy5seS9kb2NzL3NldHRpbmdzL3BlcnNvbmFsLWFwaS1rZXlzLykgZm9yIGl0LgoKV2hlbiB5b3UgaGF2ZSBnZW5lcmF0ZWQgeW91ciBwZXJzb25hbCBBUEkga2V5LCBwYXN0ZSBpdCBpbnRvIHRoZSAqQVBJIGtleSogaW4gdGhlICpQcmV2aWV3KiBwYW5lbCBhbmQgc2VsZWN0ICoqU3VibWl0KiouIERvY3VtZW50YXRpb24gcHJldmlld3Mgd2lsbCBiZSBlbmFibGVkIGZvciBhbGwgeW91ciB3b3Jrc3BhY2VzLgoKSW4gdGhlIHRhYiBiYXIgYWJvdmUgdGhlIHBhbmVsLCBzZWxlY3QgdGhlIG5hbWUgb2YgdGhlIFlBTUwgZmlsZSBmb3Igd2hpY2ggeW91IHdhbnQgdG8gcHJldmlldyB0aGUgZG9jdW1lbnRhdGlvbi4gSWYgeW91IGhhdmUgZGVmaW5lZCBjdXN0b20gbmFtZXMgaW4gdGhlIGBhcGlEZWZpbml0aW9uc2Agc2VjdGlvbiBvZiB0aGUgYHJlZG9jbHkueWFtbGAgZmlsZSwgdGhvc2UgbmFtZXMgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGFicyBpbnN0ZWFkIG9mIGZpbGUgbmFtZXMuIFNlbGVjdGluZyBhIG5hbWUgbG9hZHMgdGhlIEFQSSBkb2N1bWVudGF0aW9uIHByZXZpZXcgZm9yIHRoZSBBUEkgZGVmaW5pdGlvbi4KCiFbVXNpbmcgdGhlIGRvY3VtZW50YXRpb24gcHJldmlldyBmZWF0dXJlXShodHRwczovL3JlZG9jLmx5L2ltYWdlcy92c2NvZGUvb3BlbmFwaS12c2NvZGUtbGl2ZS1wcmV2aWV3LnBuZykKClRvIGN1c3RvbWl6ZSB0aGUgZG9jdW1lbnRhdGlvbiBwcmV2aWV3LCBhZGQgW3N1cHBvcnRlZCBSZWZlcmVuY2UgY29uZmlndXJhdGlvbiBvcHRpb25zXShodHRwczovL3JlZG9jLmx5L2RvY3MvYXBpLXJlZmVyZW5jZS1kb2NzL2NvbmZpZ3VyYXRpb24vKSB0byB0aGUgYHJlZmVyZW5jZURvY3NgIHNlY3Rpb24gaW4geW91ciBgcmVkb2NseS55YW1sYCBmaWxlLgoKRm9yIGV4YW1wbGUsIHRvIGhpZGUgdGhlIGxvZ28gaW1hZ2UgYW5kIGNoYW5nZSB0aGUgZm9udCBzaXplIGFuZCBjb2xvciwgeW91IGNvdWxkIGFkZCB0aGUgZm9sbG93aW5nOgoKYGBgeWFtbAphcGlEZWZpbml0aW9uczoKICBtYWluOiBwYXRoL3RvL3lvdXItb3BlbmFwaS55YW1sCiAgdGVzdDogcGF0aC90by9hbm90aGVyLW9wZW5hcGkueWFtbApsaW50OgogIGV4dGVuZHM6CiAgICAtIHJlY29tbWVuZGVkCnJlZmVyZW5jZURvY3M6CiAgaGlkZUxvZ286IHRydWUKICB0aGVtZToKICAgIGNvbG9yczoKICAgICAgdGV4dDoKICAgICAgICBwcmltYXJ5OiAiI0ZGMDAwMCIKICAgIHR5cG9ncmFwaHk6CiAgICAgIGZvbnRTaXplOiAxNnB4CmBgYAoKUmVtZW1iZXIgdG8gc2F2ZSB0aGUgYHJlZG9jbHkueWFtbGAgZmlsZSBmb3IgY2hhbmdlcyB0byBhcHBseS4KClRvIGV4aXQgdGhlIGRvY3VtZW50YXRpb24gcHJldmlldywgY2xvc2UgdGhlICpQcmV2aWV3KiBwYW5lbC4gWW91IGNhbiBvcGVuIGl0IGFnYWluIGF0IGFueSBwb2ludC4KCgojIyMgSW50ZXJhY3RpdmUgZm9ybXMgYW5kIGNvbnRleHQtYXdhcmUgaGVscCBmb3IgT3BlbkFQSSBhdXRob3JpbmcKClRvIGhlbHAgeW91IHdyaXRlIHZhbGlkLCBzcGVjaWZpY2F0aW9uLWNvbXBsaWFudCBBUEkgZGVmaW5pdGlvbnMsIHRoZSBSZWRvY2x5IE9wZW5BUEkgVlMgQ29kZSBleHRlbnNpb24gcHJvdmlkZXMgZHluYW1pYyBkZXNjcmlwdGlvbnMgb2YgT3BlbkFQSSBmZWF0dXJlcyBpbiB0aGUgY3Vyc29yIGNvbnRleHQgcGFuZWwuIAoKQWNjZXNzIHRoZSBjdXJzb3IgY29udGV4dCBpbiBhbnkgb2YgdGhlIGZvbGxvd2luZyB3YXlzOgoKLSBTZWxlY3QgdGhlICoqT3BlbiBjdXJzb3IgY29udGV4dCoqIGJ1dHRvbiBpbiB0aGUgdXBwZXIgcmlnaHQgc2VjdGlvbiBvZiB5b3VyIFZTIENvZGUgd2luZG93LgoKLSBPcGVuIHRoZSAqQ29tbWFuZCBQYWxldHRlKiwgc3RhcnQgdHlwaW5nIGByZWRvY2x5YCwgdGhlbiBzZWxlY3QgKlJlZG9jbHkgT3BlbkFQSTogT3BlbiBjdXJzb3IgY29udGV4dCouCgpCb3RoIGFjdGlvbnMgb3BlbiB0aGUgKkN1cnNvciBjb250ZXh0KiBwYW5lbC4KCkFzIHlvdSBwbGFjZSB5b3VyIGN1cnNvciBpbnRvIGRpZmZlcmVudCBzZWN0aW9ucyBvZiB5b3VyIE9wZW5BUEkgZG9jdW1lbnQsIHRoZSBjb250ZXh0LWF3YXJlIGRlc2NyaXB0aW9ucyBpbiB0aGUgcGFuZWwgY2hhbmdlIHRvIG1hdGNoIHRoZSBleGFjdCBvYmplY3Qgb3IgcHJvcGVydHkgeW91J3JlIGVkaXRpbmcuCgohW1VzaW5nIHRoZSBjdXJzb3IgY29udGV4dCBwYW5lbF0oaHR0cHM6Ly9yZWRvYy5seS9pbWFnZXMvdnNjb2RlL29wZW5hcGktdnNjb2RlLWNvbnRleHQtZXhwbG9yZXIucG5nKQoKRm9yIHN1cHBvcnRlZCBzZWN0aW9ucywgdGhlICpDdXJzb3IgY29udGV4dCogcGFuZWwgY2FuIGFsc28gZGlzcGxheSBhIHZpc3VhbCBlZGl0b3Igd2hlcmUgeW91IGNhbiBjaGFuZ2UgdGhlIGNvbnRlbnRzIG9mIHlvdXIgQVBJIGRlZmluaXRpb24gdGhyb3VnaCBpbnRlcmFjdGl2ZSBmb3Jtcy4KCiFbVXNpbmcgdGhlIHZpc3VhbCBlZGl0b3JdKGh0dHBzOi8vcmVkb2MubHkvaW1hZ2VzL3ZzY29kZS9yZWRvY2x5LXZzY29kZS12aXN1YWwtZWRpdG9yLmdpZikKCkRlcGVuZGluZyBvbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHNlY3Rpb24gb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQsIHRoZSAqQ3Vyc29yIGNvbnRleHQqIHBhbmVsIG1heSBzaG93IHRyaXBsZSBiYXIgKCJoYW1idXJnZXIiKSBpY29ucyB0byB0aGUgbGVmdCBvZiBlYWNoIGlucHV0IGZpZWxkIGluIHRoZSB2aXN1YWwgZWRpdG9yLiBVc2UgdGhlc2UgaWNvbnMgdG8gY2hhbmdlIHRoZSBvcmRlciBvZiBmaWVsZHMgaW4gdGhlIHBhbmVsLiBUbyByZW9yZGVyIGEgZmllbGQsIHNlbGVjdCB0aGUgdHJpcGxlIGJhciBpY29uIG5leHQgdG8gaXQsIHRoZW4gZHJhZy1hbmQtZHJvcCBpdCB1cCBvciBkb3duIGluIHRoZSBwYW5lbC4KClRvIGV4aXQsIGNsb3NlIHRoZSAqQ3Vyc29yIGNvbnRleHQqIHBhbmVsLiBZb3UgY2FuIG9wZW4gaXQgYWdhaW4gYXQgYW55IHBvaW50LgoKCiMjIEtub3duIGlzc3VlcwoKLSBJbnRlcmFjdGl2ZSBmb3JtcyBhcmUgc3VwcG9ydGVkIG9ubHkgZm9yIGBpbmZvYCwgYHNlcnZlcmAsIGB0YWdzYCBhbmQgYGV4dGVybmFsRG9jc2Agc2VjdGlvbnMgaW4gdGhlIGN1cnJlbnQgdmVyc2lvbi4KCi0gQXV0b2NvbXBsZXRpb24gc3VwcG9ydCBpcyBsaW1pdGVkIGluIHRoZSBjdXJyZW50IHZlcnNpb24uCgotIFRoZSBgcmVkb2NseS55YW1sYCBmaWxlIG11c3QgYmUgc2F2ZWQgdG8gZGlzayAoQ3RybCtTKSBmb3IgY2hhbmdlcyB0byBhcHBseS4KCgojIyBUcm91Ymxlc2hvb3RpbmcKCklmIHlvdSBzdXNwZWN0IHRoZSBleHRlbnNpb24gaXMgbm90IHdvcmtpbmcgcHJvcGVybHksIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHRydWU6CgotIHRoZSBleHRlbnNpb24gaXMgZW5hYmxlZCBpbiB0aGUgY3VycmVudCBWUyBDb2RlIHdvcmtzcGFjZSAob3IgZ2xvYmFsbHkpCi0gYSBub24tZW1wdHkgYHJlZG9jbHkueWFtbGAgY29uZmlndXJhdGlvbiBmaWxlIGV4aXN0cyBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgeW91ciB3b3Jrc3BhY2UKLSB5b3VyIEFQSSBkZWZpbml0aW9uIGZpbGUgaXMgaW4gdGhlIFlBTUwgZm9ybWF0CgoKIyMgTGljZW5zZQoKSW5zdGFsbGF0aW9uIGFuZCB1c2FnZSBvZiB0aGUgZXh0ZW5zaW9uIGFyZSBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgW1JlZG9jbHkgU3Vic2NyaXB0aW9uIGFncmVlbWVudF0oaHR0cHM6Ly9yZWRvYy5seS9zdWJzY3JpcHRpb24tYWdyZWVtZW50LykuCgo= readmeEtag: '"29a324ffdfa0a7a8ee8923371921b405142f8647"' readmeLastModified: Wed, 17 Apr 2024 13:20:02 GMT repositoryId: 424036264 description: Redocly VS Code extension created: '2021-11-03T00:03:16Z' updated: '2026-02-01T15:50:11Z' language: null archived: false stars: 43 watchers: 12 forks: 9 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 repoEtag: '"a1b5bb5adf075b34771c71f53ef702998e0dc43a6e353036c523b7534f7a9a6e"' repoLastModified: Sun, 01 Feb 2026 15:50:11 GMT foundInMaster: true - source: https://openapi.tools/ name: Api-Fiddle category: GUI Editors language: - TypeScript - Saas link: https://www.api-fiddle.com/ source_description: > Opinionated API design platform built for collaboration and exploration. Create API designs for technical documents, specifications, and reviews. v2: false v3: false v3_1: true id: 83324f57ad5dff50e50148a8f4b6eef3 foundInMaster: true - source: https://openapi.tools/ name: Stoplight Studio category: - GUI Editors - Text Editors language: SaaS link: https://stoplight.io/studio source_description: > Stoplight Studio is a powerful GUI/text editor with linting and mocking built right in. The desktop version has been discontinued, but it runs in the browser, powered by your existing GitHub, GitLab, or BitBucket repos. v2: true v3: true v3_1: true foundInMaster: true id: 8348b06da005508392b6fa17c12d3ca4 - source: - https://openapi.tools/ - openapi3 tags name: Hackolade category: - GUI Editors - Parsers language: ReactJS link: https://hackolade.com repository: https://github.com/hackolade/openapi source_description: > A visual editor for OpenAPI v2/v3, from the pioneer in data modeling for NoSQL databases. v2: true v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJClBsdWdpbiB0byBlbmFibGUgT3BlbkFQSSAzIGFzIGEgdGFyZ2V0IGluIEhhY2tvbGFkZSBkYXRhIG1vZGVsaW5nLiAgUmVxdWlyZXMgcHJpb3IgZG93bmxvYWQgb2YgdGhlIEhhY2tvbGFkZSBhcHBsaWNhdGlvbiBmcm9tIG91ciBbZG93bmxvYWQgcGFnZV0oaHR0cHM6Ly9oYWNrb2xhZGUuY29tL2Rvd25sb2FkLmh0bWwpCgpUaGlzIHBsdWdpbiBpcyBmb3IgT3BlbkFQSSAzLiAgSWYgaW5zdGVhZCB5b3UgbmVlZCBTd2FnZ2VyIDIsIHlvdSBuZWVkIGEgc2VwYXJhdGUgcGx1Z2luIGFjY2Vzc2libGUgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9oYWNrb2xhZGUvU3dhZ2dlcikuCgpTdGFydGluZyB3aXRoIEhhY2tvbGFkZSBTdHVkaW8gdjYuMTAuMCwgdGhpcyBwbHVnaW4gYWxzbyBzdXBwb3J0cyBPQVMgMy4xLngKCjxzcGFuIGNsYXNzPSJydnRzNzgiPk9wZW5BUEkgU3BlY2lmaWNhdGlvbjwvc3Bhbj48c3BhbiBjbGFzcz0icnZ0czc3Ij7CoG9yIE9BUyAoZm9ybWVybHkga25vd24gYXPCoDwvc3Bhbj48c3BhbiBjbGFzcz0icnZ0czc4Ij5Td2FnZ2VyIFNwZWNpZmljYXRpb248L3NwYW4+PHNwYW4gY2xhc3M9InJ2dHM3NyI+KSBpcyBhbiBvcGVuLXNvdXJjZSBmb3JtYXQgZm9yIGRlc2NyaWJpbmcgYW5kIGRvY3VtZW50aW5nIEFQSXMuIEl0IGhhcyBiZWNvbWUgYSBkZS1mYWN0byBzdGFuZGFyZCw8L3NwYW4+IDxzcGFuIGNsYXNzPSJydnRzNiI+bGFuZ3VhZ2UtYWdub3N0aWMgaW50ZXJmYWNlPC9zcGFuPiA8c3BhbiBjbGFzcz0icnZ0czc3Ij5mb3IgZGVzaWduaW5nIGFuZCBkZXNjcmliaW5nIFJFU1RmdWwgQVBJczwvc3Bhbj4gPHNwYW4gY2xhc3M9InJ2dHM2Ij53aGljaCBhbGxvdyBib3RoIGh1bWFucyBhbmQgY29tcHV0ZXJzIHRvIGRpc2NvdmVyIGFuZCB1bmRlcnN0YW5kIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIHNlcnZpY2Ugd2l0aG91dCBhY2Nlc3MgdG8gc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24sIG9yIHRocm91Z2ggbmV0d29yayB0cmFmZmljIGluc3BlY3Rpb24uIMKgV2hlbiBwcm9wZXJseSBkZWZpbmVkIHZpYSBPcGVuQVBJLCBhIGNvbnN1bWVyIGNhbiB1bmRlcnN0YW5kIGFuZCBpbnRlcmFjdCB3aXRoIHRoZSByZW1vdGUgc2VydmljZSB3aXRoIGEgbWluaW1hbCBhbW91bnQgb2YgaW1wbGVtZW50YXRpb24gbG9naWMuPC9zcGFuPjxzcGFuIGNsYXNzPSJydnRzNzciPlRoZSBsYXRlc3QgdmVyc2lvbiBvZiBPcGVuQVBJIGlzwqA8L3NwYW4+PHNwYW4gY2xhc3M9InJ2dHM3OCI+My4wLjI8L3NwYW4+PHNwYW4gY2xhc3M9InJ2dHM3NyI+LiBPcGVuQVBJIGRlZmluaXRpb25zIGNhbiBiZSB3cml0dGVuIGluIEpTT04gb3IgWUFNTC48L3NwYW4+Cgo8c3BhbiBjbGFzcz0icnZ0czYiPiAgCjwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJydnRzNiI+T3BlbkFQSSBpcyBhPC9zcGFuPiBbZm9ybWFsIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4yLm1kKSA8c3BhbiBjbGFzcz0icnZ0czYiPnN1cnJvdW5kZWQgYnkgYSBsYXJnZSBlY29zeXN0ZW0gb2YgdG9vbHMsIHdoaWNoIGluY2x1ZGVzIGV2ZXJ5dGhpbmcgZnJvbSBmcm9udC1lbmQgdXNlciBpbnRlcmZhY2VzLCBsb3ctbGV2ZWwgY29kZSBsaWJyYXJpZXMgYW5kIGNvbW1lcmNpYWwgQVBJIG1hbmFnZW1lbnQgc29sdXRpb25zLjwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJydnRzNiI+ICAKPC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHM2Ij5UbyBwZXJmb3JtIG1vZGVsLWZpcnN0IGRlc2lnbiBvZiBhIFJFU1QgQVBJIHVzaW5nIE9wZW5BUEkgMyB3aXRoIEhhY2tvbGFkZSwgeW91IG11c3QgZmlyc3QgZG93bmxvYWQgdGhlIE9wZW5BUEk8L3NwYW4+IFtwbHVnaW5dKERvd25sb2FkYWRkaXRpb25hbERCdGFyZ2V0cGx1Z2luLmh0bWwpPHNwYW4gY2xhc3M9InJ2dHM2Ij4uIMKgVGhpcyBwbHVnaW4gaXMgc3RyaWN0bHkgY29tcGxpYW50IHdpdGggdmVyc2lvbiAzLjAuMiBvZiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLiDCoElmIHlvdSBuZWVkIHN1cHBvcnQgdmVyc2lvbiAyIG9mIHRoZSBzcGVjaWZpY2F0aW9uIChhLmsuYS4gU3dhZ2dlcikgeW91IG5lZWQgYW5vdGhlciBwbHVnaW4gZGVzY3JpYmVkPC9zcGFuPiBbaGVyZV0oU3dhZ2dlckFQSS5odG1sKTxzcGFuIGNsYXNzPSJydnRzNiI+Ljwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJydnRzMjEiPiAgCjwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJydnRzMjEiPkNyZWF0aW5nIEFQSXMgaXMgbm90IGVhc3khIEFuZCB3cml0aW5nIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBpbiBhIGRlc2lnbi1maXJzdCBhcHByb2FjaCBjYW4gYmUgdGVkaW91cyBhdCBiZXN0LCBnZW5lcmFsbHkgZXJyb3ItcHJvbmUgYW5kIGZydXN0cmF0aW5nLi4uIMKgSGFja29sYWRlIHRha2VzIGEgdmlzdWFsIHNjaGVtYS1jZW50cmljIGFwcHJvYWNoIHNvIHlvdSBjYW4gZm9jdXMgb24gdGhlIGNvbnRlbnQgb2YgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcy4gVGhlIGFwcGxpY2F0aW9uIGFsc28gYXNzaXN0cyB3aXRoIGFsbCB0aGUgbWV0YWRhdGEgdG8gcHJvZHVjZSB2YWxpZGF0ZWQgT3BlbkFQSSBmaWxlcyBhbmQgdGVzdCB0aGUgdHJhbnNhY3Rpb25zLiDCoFlvdSBjYW4gYWxzbyByZXZlcnNlLWVuZ2luZWVyIGV4aXN0aW5nIE9wZW5BUEkgMyBmaWxlcyBpbiBKU09OIG9yIFlBTUwgdG8gcHJvZHVjZSBhIGdyYXBoaWNhbCByZXByZXNlbnRhdGlvbiBvZiB5b3VyIEFQSXMuICBZb3UgbWF5IHdhbnQgdG8gY29uc3VsdCBvdXIgPC9zcGFuPltzdGVwLWJ5LXN0ZXAgdHV0b3JpYWxdKGh0dHBzOi8vaGFja29sYWRlLmNvbS9oZWxwL0NyZWF0ZWFSRVNUQVBJbW9kZWwuaHRtbCkKCjxzcGFuIGNsYXNzPSJydnRzNiI+SGFja29sYWRlIHdhcyBzcGVjaWFsbHkgYWRhcHRlZCB0byBzdXBwb3J0IHRoZSBBUEkgZGVzaWduIG9mIE9BUywgaW5jbHVkaW5nIGFsbCB0aGUgbmVjZXNzYXJ5IG1ldGFkYXRhIGZvciB0aGUgQVBJLCB0aGUgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcy4gwqBUaGUgYXBwbGljYXRpb24gY2xvc2VseSBmb2xsb3dzIHRoZSB0ZXJtaW5vbG9neSBvZiB0aGUgc3BlY2lmaWNhdGlvbi4gwqBUaGUgdmlzdWFsIHRvb2wgcHV0cyB0aGUgZm9jdXMgb24gd2hhdCByZWFsbHkgbWF0dGVycyBpbiBhbiBBUEk6IHRoZSBzY2hlbWEgb2YgdGhlIGluZm9ybWF0aW9uIGJlaW5nIGV4Y2hhbmdlZCBiZXR3ZWVuIHN5c3RlbXMuIMKgQXQgdGhlIHNhbWUgdGltZSwgaXQgcHJvdmlkZXMgYXNzaXN0YW5jZSB0byBtb2RlbGVycyBhbmQgZG9lcyBub3QgcmVxdWlyZSBwZXJmZWN0IG1hc3Rlcnkgb2YgdGhlIE9wZW5BUEkgMyBzeW50YXguIMKgSXQgZ2VuZXJhdGVzIHZhbGlkYXRlZCBmaWxlcyB0aGF0IGFyZSBzeW50YWN0aWNhbGx5IGNvcnJlY3QgYW5kIGNvbXBhdGlibGUgd2l0aCB0aGUgc3BlY2lmaWNhdGlvbiB0aGVyZWJ5IGdyZWF0bHkgaW1wcm92aW5nIHByb2R1Y3Rpdml0eSBhbmQgcXVhbGl0eS48L3NwYW4+Cgo8c3BhbiBjbGFzcz0icnZ0czYiPiAgCjwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJydnRzNiI+VGhlIGRpYWdyYW0gYmVsb3cgcmVzdWx0cyBmcm9tIHRoZSByZXZlcnNlLWVuZ2luZWVyaW5nIG9mIHRoZTwvc3Bhbj4gW1BldCBTdG9yZV0oaHR0cHM6Ly9tZXJtYWRlLm9yZy51ay9leGFtcGxlcy9vcGVuYXBpLmpzb24pIDxzcGFuIGNsYXNzPSJydnRzNiI+c2FtcGxlIEFQSS48L3NwYW4+Cgo8aW1nIHNyYz0ibGliL09wZW5BUEkgV29ya3NwYWNlLnBuZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSI+Cgo8c3BhbiBjbGFzcz0icnZ0czc4Ij4gIAo8L3NwYW4+Cgo8c3BhbiBjbGFzcz0icnZ0czc3Ij5Ob3RlIHRoZSB0b29sYmFyIGJ1dHRvbiB0byB0b29nbGUgdGhlIGxldmVsIG9mIGRldGFpbHMgZGlzcGxheWVkIGluIHRoZSBFUiBEaWFncmFtIHZpZXcuIMKgPC9zcGFuPgoKPGltZyBzcmM9ImxpYi9PcGVuQVBJIC0gVG9nZ2xlIGZpZWxkIGRldGFpbHMucG5nIiB3aWR0aD0iMjUlIiBoZWlnaHQ9IjI1JSI+Cgo8c3BhbiBjbGFzcz0icnZ0czc3Ij4gIAo8L3NwYW4+Cgo8c3BhbiBjbGFzcz0icnZ0czc3Ij5CeSBkZWZhdWx0IEhhY2tvbGFkZSBkaXNwbGF5cyBhbGwgdGhlIHZhcmlvdXMgd2F5cyBhbiBBUEkgY2FuIGJlIGRlZmluZWQgaW4gT3BlbkFQSS4gwqBPbmNlIHlvdSdyZSBkb25lIGNyZWF0aW5nIHlvdXIgZGVzaWduLCB5b3UgbWF5IHdpc2ggdG8gaGlkZSB0aGUgZXh0cmFuZW91cyBzdHJ1Y3R1cmVzIGFuZCBhZGp1c3QgdGhlIGxheW91dCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZXh0cmEgcmVhbCBlc3RhdGUgb24gc2NyZWVuLjwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJydnRzNzciPiAgCjwvc3Bhbj4KCiMjIDxzcGFuIGNsYXNzPSJydnRzMCI+PHNwYW4gY2xhc3M9InJ2dHMxNSI+RGF0YSBUeXBlczwvc3Bhbj48L3NwYW4+Cgo8c3BhbiBjbGFzcz0icnZ0czYiPlRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gZGVzY3JpYmVzIHByaW1pdGl2ZXMgKG9yIHNjYWxhcikgZGF0YSB0eXBlcyB3aGljaCBjYW4gaGF2ZSBhbiBvcHRpb25hbCBwcm9wZXJ0eSBtb2RpZmllciw8L3NwYW4+IDxzcGFuIGNsYXNzPSJydnRzNjkiPmZvcm1hdDwvc3Bhbj48c3BhbiBjbGFzcz0icnZ0czYiPiwgcGx1cyBhIGZpbGUgcHJpbWl0aXZlIHR5cGUuIMKgQ29tcGxleCB0eXBlcyBzdWNoIGFzIGFycmF5cyBhbmQgc3ViLW9iamVjdHMsIHBsdXMgY29tYmluYXRpb25zIHRoZXJlb2YsIGFyZSBhbHNvIGFsbG93ZWQuPC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHM2Ij4gIAo8L3NwYW4+Cgo8aW1nIHNyYz0ibGliL1N3YWdnZXIgZGF0YSB0eXBlcy5wbmciIHdpZHRoPSIyNSUiIGhlaWdodD0iMjUlIj48aW1nIHNyYz0ibGliL1N3YWdnZXIgZGF0YSB0eXBlcyAtIHN0cmluZy5wbmciIHdpZHRoPSIyNSUiIGhlaWdodD0iMjUlIj48aW1nIHNyYz0ibGliL1N3YWdnZXIgZGF0YSB0eXBlcyAtIG51bWJlci5wbmciIHdpZHRoPSIyNSUiIGhlaWdodD0iMjUlIj48aW1nIHNyYz0ibGliL1N3YWdnZXIgZGF0YSB0eXBlcyAtIGludGVnZXIucG5nIiB3aWR0aD0iMjUlIiBoZWlnaHQ9IjI1JSI+CgoKPHNwYW4gY2xhc3M9InJ2dHM2Ij4gIAo8L3NwYW4+CgojIyA8c3BhbiBjbGFzcz0icnZ0czAiPjxzcGFuIGNsYXNzPSJydnRzMTUiPkFQSSBtZXRhZGF0YTwvc3Bhbj48L3NwYW4+Cgo8c3BhbiBjbGFzcz0icnZ0czYiPlRoZSBpbmZvIG9iamVjdCwgYXMgd2VsbCBhcyB0aGUgaG9zdCwgYmFzZVBhdGgsIHNjaGVtZXMsIGNvbnN1bWVzLCBwcm9kdWNlcywgdGhlIHNlY3VyaXR5RGVmaW5pdGlvbnMgb2JqZWN0LCB0aGUgc2VjdXJpdHkgb2JqZWN0LCB0aGUgdGFncyBvYmplY3QsIGFuZCBleHRlcm5hbERvY3Mgb2JqZWN0IGFyZSBmaXhlZCBmaWVsZHMgdHJlYXRlZCBhcyBtZXRhZGF0YSBhbmQgbWFpbnRhaW5lZCBhdCBtb2RlbC1sZXZlbCBpbiBIYWNrb2xhZGUuPC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHM2Ij4gIAo8L3NwYW4+Cgo8aW1nIHNyYz0ibGliL09wZW5BUEkgLSBJbmZvIG9iamVjdCAxLnBuZyIgd2lkdGg9IjMzJSIgaGVpZ2h0PSIzMyUiPjxpbWcgc3JjPSJsaWIvT3BlbkFQSSAtIEluZm8gb2JqZWN0IDIucG5nIiB3aWR0aD0iMzMlIiBoZWlnaHQ9IjMzJSI+CjxpbWcgc3JjPSJsaWIvT3BlbkFQSSAtIEluZm8gb2JqZWN0IDMucG5nIiB3aWR0aD0iMzMlIiBoZWlnaHQ9IjMzJSI+Cgo8c3BhbiBjbGFzcz0icnZ0czc4Ij4gIAo8L3NwYW4+CgojIyA8c3BhbiBjbGFzcz0icnZ0czAiPjxzcGFuIGNsYXNzPSJydnRzMTUiPkNvbXBvbmVudHM8L3NwYW4+PC9zcGFuPgoKW0NvbXBvbmVudCBvYmplY3RzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMi5tZCNjb21wb25lbnRzLW9iamVjdCkgPHNwYW4gY2xhc3M9InJ2dHMzNCI+aG9sZCBhIHNldCBvZiByZXVzYWJsZSBvYmplY3RzPC9zcGFuPiA8c3BhbiBjbGFzcz0icnZ0czgwIj50aGF0IGNhbiBiZSB1c2VkIGFjcm9zcyBtdWx0aXBsZSBlbmRwb2ludHMgaW4gdGhlIHNhbWUgQVBJPC9zcGFuPjxzcGFuIGNsYXNzPSJydnRzMzQiPjogc2NoZW1hLCBwYXJhbWV0ZXIsIHJlcXVlc3QgYm9keSwgcmVzcG9uc2UsIGV4YW1wbGUsIGhlYWRlciwgc2VjdXJpdHkgc2NoZW1lLCBsaW5rLCBvciBjYWxsYmFjay4gQWxsIG9iamVjdHMgZGVmaW5lZCB3aXRoaW4gdGhlIGNvbXBvbmVudHMgb2JqZWN0IHdpbGwgaGF2ZSBubyBlZmZlY3Qgb24gdGhlIEFQSSB1bmxlc3MgdGhleSBhcmUgZXhwbGljaXRseSByZWZlcmVuY2VkIGZyb20gcHJvcGVydGllcyBvdXRzaWRlIHRoZSBjb21wb25lbnRzIG9iamVjdCBieSB1c2luZyBhICRyZWYgcmVmZXJlbmNlIGluIGFueSBwYXRoIGl0ZW0uPC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHMzNCI+ICAKPC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHM3OSI+QXMgeW91IGV4cG9zZSBtb3JlIHJlc291cmNlcyBhbmQgb3BlcmF0aW9ucyBhZ2FpbnN0IHlvdXIgQVBJLCB5b3VyIEFQSSBtYXkgcmVwZWF0IGEgbG90IG9mIGV4aXN0aW5nIHBhcmFtZXRlcnMgb3IgcmVzcG9uc2UgZGVzY3JpcHRpb25zIGluIG1hbnkgZGlmZmVyZW50IHBhdGhzIGFuZCBvcGVyYXRpb25zLiDCoEJ5IGNyZWF0aW5nIHJldXNhYmxlIGNvbXBvbmVudCBvYmplY3RzLCB5b3UgYXZvaWQgdGltZS1jb25zdW1pbmcgcmV3cml0aW5nIGFzIHdlbGwgYXMgdGhlIHJpc2sgb2YgaW5jb25zaXN0ZW5jaWVzLjwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJydnRzNzkiPiAgCjwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJydnRzMzQiPkRhdGEgdHlwZXMgY2FuIGJlIG9iamVjdHMsIGJ1dCBhbHNvIHByaW1pdGl2ZXMgYW5kIGFycmF5cy4gVGhpcyBvYmplY3QgaXMgYmFzZWQgb24gdGhlwqA8L3NwYW4+W0pTT04gU2NoZW1hIFNwZWNpZmljYXRpb24gV3JpZ2h0IERyYWZ0IDAwIChhLmsuYS4gRHJhZnQtMDUpXShodHRwOi8vanNvbi1zY2hlbWEub3JnLyk8c3BhbiBjbGFzcz0icnZ0czM0Ij7CoGFuZCB1c2VzIGEgcHJlZGVmaW5lZCBzdWJzZXQgb2YgaXQuIE9uIHRvcCBvZiB0aGlzIHN1YnNldCwgdGhlcmUgYXJlIGV4dGVuc2lvbnMgcHJvdmlkZWQgYnkgdGhpcyBzcGVjaWZpY2F0aW9uIHRvIGFsbG93IGZvciBtb3JlIGNvbXBsZXRlIGRvY3VtZW50YXRpb24uPC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHMzNCI+ICAKPC9zcGFuPgoKPGltZyBzcmM9ImxpYi9PcGVuQVBJIC0gQ29tcG9uZW50cy5wbmciIHdpZHRoPSI2NiUiIGhlaWdodD0iNjYlIj4KCjxzcGFuIGNsYXNzPSJydnRzMzQiPiAgCjwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJydnRzNiI+Q29uc3VsdDwvc3Bhbj4gW3RoaXMgcGFnZV0oUmV1c2FibGVvYmplY3RzZGVmaW5pdGlvbnMuaHRtbCkgPHNwYW4gY2xhc3M9InJ2dHM2Ij5vciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgZGVmaW5pdGlvbnMuIMKgRm9yIE9wZW5BUEksIHlvdSBzaG91bGQgbGltaXQgeW91cnNlbGYgdG8gSGFja29sYWRlIG1vZGVsIGRlZmluaXRpb25zLjwvc3Bhbj4KCiMjIDxzcGFuIGNsYXNzPSJydnRzMCI+PHNwYW4gY2xhc3M9InJ2dHMxNSI+UmVzb3VyY2U8L3NwYW4+PC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHM2Ij5UaGUgcmVzb3VyY2UgcGF0aCBvYmplY3QgaXMgYSBjb250YWluZXIgcmVwcmVzZW50aW5nIHRoZSByZWxhdGl2ZSBwYXRoIHRvIGFuIGluZGl2aWR1YWwgZW5kcG9pbnQuIMKgVGhlIGZpZWxkIG5hbWUgbXVzdCBzdGFydCB3aXRoIGEgc2xhc2ggKCIvIikuIMKgVGhlIHBhdGggaXMgYXBwZW5kZWQgdG8gdGhlIGJhc2VQYXRoIGluIG9yZGVyIHRvIGNvbnN0cnVjdCB0aGUgZnVsbCBVUkwuIMKgUGF0aCB0ZW1wbGF0aW5nICg8L3NwYW4+PHNwYW4gY2xhc3M9InJ2dHMzNCI+dXNhZ2Ugb2YgY3VybHkgYnJhY2VzICgie30iKSB0byBtYXJrIGEgc2VjdGlvbiBvZiBhIFVSTCBwYXRoIGFzIHJlcGxhY2VhYmxlIHVzaW5nIHBhdGggcGFyYW1ldGVyczwvc3Bhbj48c3BhbiBjbGFzcz0icnZ0czYiPikgaXMgYWxsb3dlZC48L3NwYW4+Cgo8c3BhbiBjbGFzcz0icnZ0czYiPiAgCjwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJydnRzNiI+RWFjaCByZXNvdXJjZSBjb250YWlucyBvbmUgb3IgbW9yZSAiPC9zcGFuPltwYXRoIGl0ZW0gb2JqZWN0c10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjIubWQjcGF0aEl0ZW1PYmplY3QpPHNwYW4gY2xhc3M9InJ2dHM2Ij4iIG1hZGUgb2YgYSByZXF1ZXN0IGFuZCBvbmUgb3IgbW9yZSByZXNwb25zZXM6PC9zcGFuPgoKPGltZyBzcmM9ImxpYi9PcGVuQVBJIC0gUmVzb3VyY2UgY29udGFpbmVyLnBuZyIgd2lkdGg9IjY2JSIgaGVpZ2h0PSI2NiUiPgoKPHNwYW4gY2xhc3M9InJ2dHM2Ij4gIAo8L3NwYW4+Cgo8c3BhbiBjbGFzcz0icnZ0czYiPllvdSBtYXkgY3JlYXRlIGEgbmV3IHJlc291cmNlIHZpYSByaWdodC1jbGljayBhbnl3aGVyZSBpbiB0aGUgRVJEIHZpZXcgYW5kIGNob29zaW5nIHRoZSBjb250ZXh0dWFsIG1lbnUgb3B0aW9uOjwvc3Bhbj4KCjxpbWcgc3JjPSJsaWIvU3dhZ2dlciAtIEFkZCByZXNvdXJjZSBjb250ZXh0dWFsIG1lbnUucG5nIiB3aWR0aD0iMjUlIiBoZWlnaHQ9IjI1JSI+Cgo8c3BhbiBjbGFzcz0icnZ0czYiPiAgCjwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJydnRzNiI+b3IgdmlhIHRoZSBtZW51Ojwvc3Bhbj4KCjxpbWcgc3JjPSJsaWIvU3dhZ2dlciAtIEFkZCByZXNvdXJjZSBhY3Rpb24gbWVudS5wbmciIHdpZHRoPSIyNSUiIGhlaWdodD0iMjUlIj4KCjxzcGFuIGNsYXNzPSJydnRzNiI+ICAKPC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHM2Ij5vciB0aGUgdG9vbGJhcjo8L3NwYW4+Cgo8aW1nIHNyYz0ibGliL1N3YWdnZXIgLSBBZGQgcmVzb3VyY2UgdG9vbGJhciBidXR0b24ucG5nIiB3aWR0aD0iMjUlIiBoZWlnaHQ9IjI1JSI+Cgo8c3BhbiBjbGFzcz0icnZ0czYiPiAgCjwvc3Bhbj4KCiMjIDxzcGFuIGNsYXNzPSJydnRzMCI+PHNwYW4gY2xhc3M9InJ2dHMxNSI+UmVxdWVzdHM8L3NwYW4+PC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHM2Ij5BIHJlcXVlc3QgaXMgYW4gb2JqZWN0IHdpdGggYSB0eXBlLCBhc3NvY2lhdGVkIGRhdGEsIHJlbGF0aW9uc2hpcHMgdG8gb3RoZXIgcmVzb3VyY2VzLCBhbmQgYSBzZXQgb2YgbWV0aG9kcyB0aGF0IG9wZXJhdGUgb24gaXQuIMKgT25seSBhIGZldyBzdGFuZGFyZCBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciB0aGUgcmVzb3VyY2UgKGNvcnJlc3BvbmRpbmcgdG8gdGhlIHN0YW5kYXJkIEhUVFAgR0VULCBQT1NULCBQVVQgYW5kIERFTEVURSBtZXRob2RzPC9zcGFuPjxzcGFuIGNsYXNzPSJydnRzNDQiPi48L3NwYW4+PHNwYW4gY2xhc3M9InJ2dHM2Ij4pPC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHM2Ij4gIAo8L3NwYW4+Cgo8c3BhbiBjbGFzcz0icnZ0czYiPlRoZTwvc3Bhbj4gW1BhcmFtZXRlciBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4yLm1kI3BhcmFtZXRlck9iamVjdCkgPHNwYW4gY2xhc3M9InJ2dHM2Ij5kPC9zcGFuPjxzcGFuIGNsYXNzPSJydnRzNzQiPmVzY3JpYmVzIGEgc2luZ2xlIG9wZXJhdGlvbiBwYXJhbWV0ZXIgZGVmaW5lZCBieSBhIGNvbWJpbmF0aW9uIG9mIGHCoDwvc3Bhbj48c3BhbiBjbGFzcz0icnZ0czIxIj5uYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJydnRzNzQiPsKgYW5kwqA8L3NwYW4+PHNwYW4gY2xhc3M9InJ2dHMyMSI+bG9jYXRpb248L3NwYW4+PHNwYW4gY2xhc3M9InJ2dHM3NCI+LiDCoEhhY2tvbGFkZSBwcm92aWRlcyBhIGhhbmR5IHRlbXBsYXRlIG9mIHBhcmFtZXRlciB0eXBlcyBhbGxvd2luZyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIHBheWxvYWQgZWl0aGVyIGJ5IGFkZGluZyBhZGRpbmcgaW5kaXZpZHVhbCBmaWVsZHMgb3IgYnkgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgY29tcG9uZW50Ojwvc3Bhbj4KCjxpbWcgc3JjPSJsaWIvT3BlbkFQSSAtIFJlcXVlc3QgUGFyYW1ldGVyIDEucG5nIiB3aWR0aD0iNzUlIiBoZWlnaHQ9Ijc1JSI+CjxpbWcgc3JjPSJsaWIvT3BlbkFQSSAtIFJlcXVlc3QgUGFyYW1ldGVyIDIucG5nIiB3aWR0aD0iNzUlIiBoZWlnaHQ9Ijc1JSI+Cgo8c3BhbiBjbGFzcz0icnZ0czc4Ij4gIAo8L3NwYW4+Cgo8c3BhbiBjbGFzcz0icnZ0czYiPlRvIGNyZWF0ZSBhIHJlcXVlc3Qgd2l0aGluIGEgcmVzb3VyY2UgY29udGFpbmVyLCB5b3UgbWF5Ojwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJydnRzNiI+LSByaWdodC1jbGljayBpbnNpZGUgdGhlIGNvbnRhaW5lciBhcmVhIG9mIHRoZSBFUkQgcGFuZSwgYW5kIGNob29zZSB0aGUgY29udGV4dHVhbCBtZW51IG9wdGlvbjo8L3NwYW4+Cgo8aW1nIHNyYz0ibGliL1N3YWdnZXIgLSBBZGQgcmVxdWVzdCBjb250ZXh0dWFsIG1lbnUucG5nIiB3aWR0aD0iMjUlIiBoZWlnaHQ9IjI1JSI+Cgo8c3BhbiBjbGFzcz0icnZ0czYiPi0gY2hvb3NlIHRoZSBBY3Rpb24gbWVudTo8L3NwYW4+Cgo8aW1nIHNyYz0ibGliL1N3YWdnZXIgLSBBZGQgcmVxdWVzdCBhY3Rpb24gbWVudS5wbmciIHdpZHRoPSIyNSUiIGhlaWdodD0iMjUlIj4KCjxzcGFuIGNsYXNzPSJydnRzNiI+LSBjaG9vc2UgdGhlIHRvb2xiYXIgYnV0dG9uOjwvc3Bhbj4KCjxpbWcgc3JjPSJsaWIvU3dhZ2dlciAtIEFkZCByZXF1ZXN0IHRvb2xiYXIgYnV0dG9uLnBuZyIgd2lkdGg9IjI1JSIgaGVpZ2h0PSIyNSUiPgoKPHNwYW4gY2xhc3M9InJ2dHM2Ij4gIAo8L3NwYW4+Cgo8c3BhbiBjbGFzcz0icnZ0czYiPkl0IGlzIGVhc3kgdG8gbWFpbnRhaW4gdGhlIG1ldGFkYXRhIGZvciBhIHJlcXVlc3QgaW4gdGhlIHByb3BlcnRpZXMgcGFuZTo8L3NwYW4+Cgo8aW1nIHNyYz0ibGliL09wZW5BUEkgLSBSZXF1ZXN0IFByb3BlcnRpZXMucG5nIiB3aWR0aD0iMjUlIiBoZWlnaHQ9IjI1JSI+Cgo8c3BhbiBjbGFzcz0icnZ0czc4Ij4gIAo8L3NwYW4+CgojIyA8c3BhbiBjbGFzcz0icnZ0czAiPjxzcGFuIGNsYXNzPSJydnRzMTUiPlJlc3BvbnNlczwvc3Bhbj48L3NwYW4+CgpbUmVzcG9uc2Ugb2JqZWN0c10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjIubWQjcmVzcG9uc2VzLW9iamVjdCkgPHNwYW4gY2xhc3M9InJ2dHMzNCI+ZGVzY3JpYmUgcmVzcG9uc2VzIGZyb20gQVBJIG9wZXJhdGlvbnMuIMKgRm9yIGVhY2ggcmVxdWVzdCwgeW91IG1heSBjcmVhdGUgb25lIG9yIG1vcmUgcmVzcG9uc2VzLjwvc3Bhbj4KCjxpbWcgc3JjPSJsaWIvT3BlbkFQSSAtIFJlc3BvbnNlcy5wbmciIHdpZHRoPSI3NSUiIGhlaWdodD0iNzUlIj4KCjxzcGFuIGNsYXNzPSJydnRzNzgiPiAgCjwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJydnRzMzQiPkEgcmVzcG9uc2UgbWF5IGhhdmUgYSBzY2hlbWEgdGhhdCBpcyBkZWZpbmVkIGFzIGluZGl2aWR1YWwgZmllbGRzIG9yIHJlZmVyZW5jZXMgYSBjb21wb25lbnQ6PC9zcGFuPgoKPGltZyBzcmM9ImxpYi9PcGVuQVBJIC0gUmVzcG9uc2Ugc2NoZW1hLnBuZyIgd2lkdGg9Ijc1JSIgaGVpZ2h0PSI3NSUiPgoKPHNwYW4gY2xhc3M9InJ2dHMzNCI+ICAKPC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHM2Ij5UbyBjcmVhdGUgYSByZXNwb25zZSBmb3IgYSBnaXZlbiByZXF1ZXN0LCB5b3UgbWF5Ojwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJydnRzNiI+LSByaWdodC1jbGljayBvbiB0aGUgcmVxdWVzdCBpbiB0aGUgRVJEIGFuZCBjaG9vc2UgdGhlIGNvbnRleHR1YWwgbWVudSBvcHRpb246PC9zcGFuPgoKPGltZyBzcmM9ImxpYi9Td2FnZ2VyIC0gQWRkIHJlc3BvbnNlIGNvbnRleHR1YWwgbWVudS5wbmciIHdpZHRoPSIxMCUiIGhlaWdodD0iMTAlIj4KCjxzcGFuIGNsYXNzPSJydnRzNiI+LSBvciBjaG9vc2UgdGhlIEFjdGlvbiBtZW51Ojwvc3Bhbj4KCjxpbWcgc3JjPSJsaWIvU3dhZ2dlciAtIEFkZCByZXNwb25zZSBhY3Rpb24gbWVudS5wbmciIHdpZHRoPSIxMCUiIGhlaWdodD0iMTAlIj4KCjxzcGFuIGNsYXNzPSJydnRzNiI+LSBvciBjaG9vc2UgdGhlIHRvb2xiYXIgYnV0dG9uOjwvc3Bhbj4KCjxpbWcgc3JjPSJsaWIvU3dhZ2dlciAtIEFkZCByZXNwb25zZSB0b29sYmFyIGJ1dHRvbi5wbmciIHdpZHRoPSIxMCUiIGhlaWdodD0iMTAlIj4KCjxzcGFuIGNsYXNzPSJydnRzNiI+ICAKPC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHM2Ij5JdCBpcyBlYXN5IHRvIG1haW50YWluIHRoZSBtZXRhZGF0YSBmb3IgYSByZXNwb25zZSBpbiB0aGUgcHJvcGVydGllcyBwYW5lOjwvc3Bhbj4KCjxpbWcgc3JjPSJsaWIvT3BlbkFQSSAtIFJlc3BvbnNlIHByb3BlcnRpZXMucG5nIiB3aWR0aD0iMTUlIiBoZWlnaHQ9IjE1JSI+Cgo8c3BhbiBjbGFzcz0icnZ0czc4Ij4gIAo8L3NwYW4+CgojIyA8c3BhbiBjbGFzcz0icnZ0czAiPjxzcGFuIGNsYXNzPSJydnRzMTUiPkZvcndhcmQtRW5naW5lZXJpbmc8L3NwYW4+PC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHMzNCI+VGhlIGZpbGVzIGRlc2NyaWJpbmcgdGhlIFJFU1RmdWwgQVBJIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIE9BUyBhcmUgcmVwcmVzZW50ZWQgYXMgSlNPTiBvYmplY3RzIGFuZCBjb25mb3JtIHRvIHRoZSBKU09OIHN0YW5kYXJkcy4gwqBIYWNrb2xhZGUgZ2VuZXJhdGVzIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBpbiBKU09OIGZvcm1hdCBvciBZQU1MIGZvcm1hdC4gwqBUaGUgc2NoZW1hIGV4cG9zZXMgdHdvIHR5cGVzIG9mIGZpZWxkcy4gRml4ZWQgZmllbGRzLCB3aGljaCBoYXZlIGEgZGVjbGFyZWQgbmFtZSwgYW5kIHBhdHRlcm5lZCBmaWVsZHMsIHdoaWNoIGRlY2xhcmUgYSByZWdleCBwYXR0ZXJuIGZvciB0aGUgZmllbGQgbmFtZS4gUGF0dGVybmVkIGZpZWxkcyBjYW4gaGF2ZSBtdWx0aXBsZSBvY2N1cnJlbmNlcyBhcyBsb25nIGFzIGVhY2ggaGFzIGEgdW5pcXVlIG5hbWUuIMKgVGhlIE9wZW5BUEkgcmVwcmVzZW50YXRpb24gb2YgdGhlIEFQSSBpcyBtYWRlIG9mIGEgc2luZ2xlIGZpbGUuIEhvd2V2ZXIsIHBhcnRzIG9mIHRoZSBkZWZpbml0aW9ucyBjYW4gYmUgc3BsaXQgaW50byBzZXBhcmF0ZSBmaWxlcywgYXQgdGhlIGRpc2NyZXRpb24gb2YgdGhlIHVzZXIuIFRoaXMgaXMgYXBwbGljYWJsZSBmb3IgJHJlZiBmaWVsZHMgaW4gdGhlIHNwZWNpZmljYXRpb24gYXMgZm9sbG93cyBmcm9tIHRoZcKgPC9zcGFuPltKU09OIFNjaGVtYV0oaHR0cDovL2pzb24tc2NoZW1hLm9yZy8pIFtdKGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvKSA8c3BhbiBjbGFzcz0icnZ0czM0Ij5kZWZpbml0aW9ucy48L3NwYW4+Cgo8c3BhbiBjbGFzcz0icnZ0czM0Ij4gIAo8L3NwYW4+Cgo8aW1nIHNyYz0ibGliL09wZW5BUEkgLSBGb3J3YXJkLUVuZ2luZWVyaW5nLnBuZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSI+Cgo8c3BhbiBjbGFzcz0icnZ0czc4Ij4gIAo8L3NwYW4+Cgo8c3BhbiBjbGFzcz0icnZ0czM0Ij5BbiBpbnRlcm5hbCBPcGVuQVBJIHN5bnRheCB2YWxpZGF0b3IgZW5zdXJlcyB0aGF0IHRoZSBnZW5lcmF0ZWQgZmlsZSBpcyB2YWxpZCwgYW5kIHRoZSByaWdodC1oYW5kIHBhbmUgYWxsb3dzIGludGVyYWN0aW9ucyB3aXRoIHRoZSBBUEkgYW5kIHRlc3RpbmcuPC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHM2Ij4gIAo8L3NwYW4+CgojIyA8c3BhbiBjbGFzcz0icnZ0czAiPjxzcGFuIGNsYXNzPSJydnRzMTUiPlJldmVyc2UtRW5naW5lZXJpbmc8L3NwYW4+PC9zcGFuPgoKPHNwYW4gY2xhc3M9InJ2dHM2Ij5UaGlzIGZ1bmN0aW9uIGxldHMgeW91IHRha2UgYSBPcGVuQVBJIGZpbGUgaW4gSlNPTiBvciBZQU1MIGZvcm1hdCBhbmQgZ2VuZXJhdGUgYSBIYWNrb2xhZGUgbW9kZWwuIMKgVGhlbiwgeW91IG1heSBlbnJpY2ggdGhlIG1vZGVsIHdpdGggY29tbWVudHMsIGdlbmVyYXRlIHN0YW5kYXJkIEhhY2tvbGFkZSBkb2N1bWVudGF0aW9uLCBhbmQgbWFrZSB0aGUgQVBJIGV2b2x2ZSB0byBnZW5lcmF0ZSBhIG5ldyBPcGVuQVBJIGZpbGUgdGhyb3VnaCBmb3J3YXJkLWVuZ2luZWVyaW5nLjwvc3Bhbj4K readmeEtag: '"44d2984a839356f1059e17dc156d46a55a0c2aa4"' readmeLastModified: Thu, 25 Jul 2024 12:13:38 GMT repositoryId: 192987405 description: Hackolade(https://hackolade.com) plugin for OpenAPI 3 API documentation created: '2019-06-20T21:05:49Z' updated: '2026-02-04T21:05:24Z' language: JavaScript archived: false stars: 18 watchers: 3 forks: 10 owner: hackolade logo: https://avatars.githubusercontent.com/u/20265734?v=4 license: NOASSERTION repoEtag: '"ea8ee7466edb7759c3cc55546fce22d8ecf2b5f644131f384c3f348262860a9f"' repoLastModified: Wed, 04 Feb 2026 21:05:24 GMT foundInMaster: true id: 0ca14e83c7b680313bbc57c0a56e6c05 v3_1: true - source: https://openapi.tools/ name: Apicurio Studio category: - GUI Editors - Server Implementations language: - Angular 7.0 - Java - Saas link: https://www.apicur.io/ repository: https://github.com/apicurio/apicurio-studio source_description: | Web-Based Open Source API Design via the OpenAPI specification. v2: true v3: true repositoryMetadata: base64Readme: >- IVtWZXJpZnkgQnVpbGQgV29ya2Zsb3ddKGh0dHBzOi8vZ2l0aHViLmNvbS9BcGljdXJpby9hcGljdXJpby1zdHVkaW8vd29ya2Zsb3dzL0J1aWxkJTIwJTI2JTIwVmVyaWZ5L2JhZGdlLnN2ZykKWyFbSm9pbiB0aGUgY2hhdCBhdCBodHRwczovL2FwaWN1cmlvLnp1bGlwY2hhdC5jb20vXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3p1bGlwLWpvaW5fY2hhdC1icmlnaHRncmVlbi5zdmcpXShodHRwczovL2FwaWN1cmlvLnp1bGlwY2hhdC5jb20vKQoKIVtBcGljdXJpbyBTdHVkaW9dKC5hc3NldHMvYXBpY3VyaW9fc3R1ZGlvX2xvZ29fZGVmYXVsdC5zdmcpCgojIFRoZSBhcGljdXJpby1zdHVkaW8gcHJvamVjdCAoT3BlbiBTb3VyY2UgQVBJIERlc2lnbiBTdHVkaW8pCgojIyBTdW1tYXJ5CgpUaGlzIGlzIHRoZSBvZmZpY2lhbCBHaXQgcmVwb3NpdG9yeSBmb3IgdGhlIEFwaWN1cmlvIFN0dWRpbyBwcm9qZWN0OiAgaHR0cDovL3d3dy5hcGljdXIuaW8vc3R1ZGlvCgpUaGUgQXBpY3VyaW8gU3R1ZGlvIHByb2plY3QgaXMgYW4gQVBJIGRlc2lnbiBzdHVkaW8gdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUKbmV3IG9yIGVkaXQgZXhpc3RpbmcgQVBJIGRlc2lnbnMgKHVzaW5nIHNwZWNpZmljYXRpb25zIGxpa2UgT3BlbkFQSSBvciBBc3luY0FQSSkuCgojIyBHZXQgdGhlIGNvZGUKClRoZSBlYXNpZXN0IHdheSB0byBnZXQgc3RhcnRlZCB3aXRoIHRoZSBjb2RlIGlzIHRvIFtjcmVhdGUgeW91ciBvd24gZm9ya10oaHR0cDovL2hlbHAuZ2l0aHViLmNvbS9mb3JraW5nLykKb2YgdGhpcyByZXBvc2l0b3J5LCBhbmQgdGhlbiBjbG9uZSB5b3VyIGZvcms6CmBgYGJhc2gKICAkIGdpdCBjbG9uZSBnaXRAZ2l0aHViLmNvbTo8eW91Pi9hcGljdXJpby1zdHVkaW8uZ2l0CiAgJCBjZCBhcGljdXJpby1zdHVkaW8KICAkIGdpdCByZW1vdGUgYWRkIHVwc3RyZWFtIGdpdDovL2dpdGh1Yi5jb20vYXBpY3VyaW8vYXBpY3VyaW8tc3R1ZGlvLmdpdApgYGAKQXQgYW55IHRpbWUsIHlvdSBjYW4gcHVsbCBjaGFuZ2VzIGZyb20gdGhlIHVwc3RyZWFtIGFuZCBtZXJnZSB0aGVtIG9udG8geW91ciBtYWluOgpgYGBiYXNoCiAgJCBnaXQgY2hlY2tvdXQgbWFpbiAgICAgICAgICAgICAgICMgc3dpdGNoZXMgdG8gdGhlICdtYWluJyBicmFuY2gKICAkIGdpdCBwdWxsIHVwc3RyZWFtIG1haW4gICAgICAgICAgIyBmZXRjaGVzIGFsbCAndXBzdHJlYW0nIGNoYW5nZXMgYW5kIG1lcmdlcyAndXBzdHJlYW0vbWFpbicgb250byB5b3VyICdtYWluJyBicmFuY2gKICAkIGdpdCBwdXNoIG9yaWdpbiAgICAgICAgICAgICAgICAgICAjIHB1c2hlcyBhbGwgdGhlIHVwZGF0ZXMgdG8geW91ciBmb3JrLCB3aGljaCBzaG91bGQgYmUgaW4tc3luYyB3aXRoICd1cHN0cmVhbScKYGBgClRoZSBnZW5lcmFsIGlkZWEgaXMgdG8ga2VlcCB5b3VyICdtYWluJyBicmFuY2ggaW4tc3luYyB3aXRoIHRoZSAndXBzdHJlYW0vbWFpbicuCgojIyBCdWlsZGluZyBhcGljdXJpby1zdHVkaW8KCiMjIyBSZXF1aXJlbWVudHMKLSBOb2RlLmpzIGFuZCBOUE0KCiMjIyBCdWlsZGluZwpVc2Ugc3RhbmRhcmQgTlBNIGJhc2VkIFVJIHRvb2xpbmcgdG8gYnVpbGQgdGhlIHByb2plY3Q6CgpgYGBiYXNoCmNkIHVpCm5wbSBpbnN0YWxsCm5wbSBydW4gYnVpbGQKbnBtIHJ1biBwYWNrYWdlCmBgYAoKIyMgQ29udHJpYnV0ZSBmaXhlcyBhbmQgZmVhdHVyZXMKCkFwaWN1cmlvIFN0dWRpbyBpcyBvcGVuIHNvdXJjZSwgYW5kIHdlIHdlbGNvbWUgYW55Ym9keSB3aG8gd2FudHMgdG8gcGFydGljaXBhdGUgYW5kIGNvbnRyaWJ1dGUhCgpJZiB5b3Ugd2FudCB0byBmaXggYSBidWcgb3IgbWFrZSBhbnkgY2hhbmdlcywgcGxlYXNlIFtsb2cgYW4gaXNzdWUgaW4gR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vYXBpY3VyaW8vYXBpY3VyaW8tc3R1ZGlvL2lzc3VlcykgZGVzY3JpYmluZyB0aGUgYnVnIG9yIG5ldyBmZWF0dXJlLiBUaGVuIHdlIGhpZ2hseSByZWNvbW1lbmQgbWFraW5nIHRoZSBjaGFuZ2VzIG9uIGEgdG9waWMgYnJhbmNoIG5hbWVkIHdpdGggdGhlIEdpdEh1YiBpc3N1ZSBudW1iZXIuIEZvciBleGFtcGxlLCB0aGlzIGNvbW1hbmQgY3JlYXRlcyBhIGJyYW5jaCBmb3IgYW4gaXNzdWUgd2l0aCBudW1iZXIgMTIzNDoKCmBgYGJhc2gKICAkIGdpdCBjaGVja291dCAtYiBhcGljdXJpby1zdHVkaW8tMTIzNApgYGAKCkFmdGVyIHlvdSdyZSBoYXBweSB3aXRoIHlvdXIgY2hhbmdlcyBhbmQgYSBmdWxsIGJ1aWxkICh3aXRoIHVuaXQgdGVzdHMpIHJ1bnMgc3VjY2Vzc2Z1bGx5LCBjb21taXQgeW91cgpjaGFuZ2VzIG9uIHlvdXIgdG9waWMgYnJhbmNoLiBUaGVuIGl0J3MgdGltZSB0byBjaGVjayBmb3IgYW5kIHB1bGwgYW55IHJlY2VudCBjaGFuZ2VzIHRoYXQgd2VyZSBtYWRlIGluCnRoZSBvZmZpY2lhbCByZXBvc2l0b3J5OgoKYGBgYmFzaAogICQgZ2l0IGNoZWNrb3V0IG1haW4gICAgICAgICAgICAgICAjIHN3aXRjaGVzIHRvIHRoZSAnbWFpbicgYnJhbmNoCiAgJCBnaXQgcHVsbCB1cHN0cmVhbSBtYWluICAgICAgICAgICMgZmV0Y2hlcyBhbGwgJ3Vwc3RyZWFtJyBjaGFuZ2VzIGFuZCBtZXJnZXMgJ3Vwc3RyZWFtL21haW4nIG9udG8geW91ciAnbWFpbicgYnJhbmNoCiAgJCBnaXQgY2hlY2tvdXQgYXBpY3VyaW8tc3R1ZGlvLTEyMzQgICAjIHN3aXRjaGVzIHRvIHlvdXIgdG9waWMgYnJhbmNoCiAgJCBnaXQgcmViYXNlIG1haW4gICAgICAgICAgICAgICAgICMgcmVhcHBsaWVzIHlvdXIgY2hhbmdlcyBvbiB0b3Agb2YgdGhlIGxhdGVzdCBpbiBtYWluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAoaS5lLiwgdGhlIGxhdGVzdCBmcm9tIG1haW4gd2lsbCBiZSB0aGUgbmV3IGJhc2UgZm9yIHlvdXIgY2hhbmdlcykKYGBgCgpJZiB0aGUgcHVsbCBncmFiYmVkIGEgbG90IG9mIGNoYW5nZXMsIHlvdSBzaG91bGQgcmVydW4geW91ciBidWlsZCB0byBtYWtlIHN1cmUgeW91ciBjaGFuZ2VzIGFyZSBzdGlsbCBnb29kLgpZb3UgY2FuIHRoZW4gZWl0aGVyIFtjcmVhdGUgcGF0Y2hlc10oaHR0cDovL3Byb2dpdC5vcmcvYm9vay9jaDUtMi5odG1sKSAob25lIGZpbGUgcGVyIGNvbW1pdCwgc2F2ZWQgaW4gYH4vYXBpY3VyaW8tc3R1ZGlvLTEyMzRgKSB3aXRoCgpgYGBiYXNoCiAgJCBnaXQgZm9ybWF0LXBhdGNoIC1NIC1vIH4vYXBpY3VyaW8tc3R1ZGlvLTEyMzQgb3JnaW4vbWFpbgpgYGAKCmFuZCB1cGxvYWQgdGhlbSB0byB0aGUgSklSQSBpc3N1ZSwgb3IgeW91IGNhbiBwdXNoIHlvdXIgdG9waWMgYnJhbmNoIGFuZCBpdHMgY2hhbmdlcyBpbnRvIHlvdXIgcHVibGljIGZvcmsgcmVwb3NpdG9yeQoKYGBgYmFzaAogICQgZ2l0IHB1c2ggb3JpZ2luIGFwaWN1cmlvLXN0dWRpby0xMjM0ICAgICAgICAgIyBwdXNoZXMgeW91ciB0b3BpYyBicmFuY2ggaW50byB5b3VyIHB1YmxpYyBmb3JrIG9mIGFwaWN1cmlvLXN0dWRpbwpgYGAKCmFuZCBbZ2VuZXJhdGUgYSBwdWxsLXJlcXVlc3RdKGh0dHA6Ly9oZWxwLmdpdGh1Yi5jb20vcHVsbC1yZXF1ZXN0cy8pIGZvciB5b3VyIGNoYW5nZXMuCgpXZSBwcmVmZXIgcHVsbC1yZXF1ZXN0cywgYmVjYXVzZSB3ZSBjYW4gcmV2aWV3IHRoZSBwcm9wb3NlZCBjaGFuZ2VzLCBjb21tZW50IG9uIHRoZW0sCmRpc2N1c3MgdGhlbSB3aXRoIHlvdSwgYW5kIGxpa2VseSBtZXJnZSB0aGUgY2hhbmdlcyByaWdodCBpbnRvIHRoZSBvZmZpY2lhbCByZXBvc2l0b3J5LgoKUGxlYXNlIHRyeSB0byBjcmVhdGUgb25lIGNvbW1pdCBwZXIgZmVhdHVyZSBvciBmaXgsIGdlbmVyYWxseSB0aGUgZWFzaWVzdCB3YXkgdG8gZG8gdGhpcyBpcyB2aWEgW2dpdCBzcXVhc2hdKGh0dHBzOi8vZ2l0LXNjbS5jb20vYm9vay9lbi92Mi9HaXQtVG9vbHMtUmV3cml0aW5nLUhpc3RvcnkjU3F1YXNoaW5nLUNvbW1pdHMpLgpUaGlzIG1ha2VzIHJldmVydGluZyBjaGFuZ2VzIGVhc2llciwgYW5kIGF2b2lkcyBuZWVkbGVzc2x5IHBvbGx1dGluZyB0aGUgcmVwb3NpdG9yeSBoaXN0b3J5IHdpdGggY2hlY2twb2ludCBjb21taXRzLgoKIyMgQ29kZSBGb3JtYXR0aW5nCgpXaGVuIHlvdSBhcmUgaGFja2luZyBvbiBzb21lIGFwaWN1cmlvLXN0dWRpbyBjb2RlLCB3ZSdkIHJlYWxseSBhcHByZWNpYXRlIGl0IGlmIHlvdSBmb2xsb3dlZCB0aGUKYXBpY3VyaW8tc3R1ZGlvIGNvZGluZyBzdGFuZGFyZHMuICBUaGUgcHJvamVjdCB1c2VzIGBlc2xpbnRgIHRvIGVuc3VyZSB0aGVzZSBzdGFuZGFyZHMuICBZb3UgY2FuCmNoZWNrIHlvdXIgY29kZSB1c2luZzoKCmBgYGJhc2gKY2QgdWkKbnBtIHJ1biBsaW50CmBgYA== readmeEtag: '"e46aab3313ead9a7513b2ae860b89873a293352a"' readmeLastModified: Fri, 18 Oct 2024 17:27:00 GMT repositoryId: 69595482 description: Open Source API Design created: '2016-09-29T18:22:33Z' updated: '2026-01-23T03:24:57Z' language: TypeScript archived: true stars: 1061 watchers: 36 forks: 517 owner: Apicurio logo: https://avatars.githubusercontent.com/u/28107283?v=4 license: Apache-2.0 repoEtag: '"c85ce0958fdc5a3e44d2b4b7570c0011a6d2d3fa2d72cb566a6bfcb66e99aafc"' repoLastModified: Fri, 23 Jan 2026 03:24:57 GMT foundInMaster: true homepage: https://github.com/Apicurio/apicurio-studio id: efe9656e80c1bf6304903ca5a60fe5a6 - source: - https://openapi.tools/ - openapi3 tags name: OAIE Sketch category: - GUI Editors - Parsers language: Vue.js link: https://www.github.com/OAIE/oaie-sketch repository: https://github.com/oaie/oaie-sketch source_description: > Browser based OpenApi Integrated Editor with side-by side view of the yaml and an interactive graph. v2: false v3: true repositoryMetadata: base64Readme: >- IyBPQUlFIFNrZXRjaApPQUlFIFNrZXRjaCBpcyBhIGJyb3dzZXItYmFzZWQgZWRpdG9yIGZvciBPQVMzIHNwZWMgZG9jdW1lbnRzLiBJdCBvZmZlcnMgYSBzaWRlLWJ5LXNpZGUgWUFNTCBjb2RlIGVkaXRvciBhbmQgdmlzdWFsIGVkaXRvciB3aXRoIGEgZm9jdXMgb24gdGFjdGlsZSBmZWVkYmFjaywgc2ltcGxpY2l0eSBhbmQgcGVyZm9ybWFuY2UuIEl0cyBwaGlsb3NvcGh5IGlzICJzdGF5IGNsb3NlIHRvIHRoZSBjb2RlIGFuZCB2aXN1YWxpemUiLgoKT25saW5lIERlbW86IGh0dHBzOi8vcmF3LmdpdGhhY2suY29tL09BSUUvb2FpZS1za2V0Y2gvbWFzdGVyL3NrZXRjaC5odG1sCgojIyBJbnN0YWxsYXRpb24KQ3VycmVudGx5IE9BSUUgU2tldGNoIGlzIG9ubHkgYSBmZXcgZmlsZXMgcGx1cyBDRE4gbGlua3MuIFNvIHlvdXIgcHJvY2VzcyB0byBnZXQgaXQgcnVubmluZyBpcyBtYW51YWwuCi0gY2xvbmUgcmVwb3NpdG9yeQotIG9wZW4gc2tldGNoLmh0bWwgaW4gYnJvd3NlcgoKIyMgRmVhdHVyZXMKLSBzaG93cyBlYWNoIG9wZXJhdGlvbiBhcyBncmFwaCBub2RlIChwYXRoLCBvcGVyYXRpb25JZCwgc3VtbWFyeSwgcGFyYW1ldGVycykKLSBzaG93cyBlYWNoIHNjaGVtYSBhcyBncmFwaCBub2RlIChuYW1lLCBkZXNjcmlwdGlvbiwgcHJvcGVydGllcykKLSBzaG93cyBlYWNoIHJlbGF0aW9uIGFzIGdyYXBoIGFycm93IChhcnJheS1yZWxhdGlvbnMgYXMgZG90dGVkKQotIGRyYWdnaW5nIGZvciBncmFwaCBub2RlcwotIG1hc3MtbW92ZSB0byBtYWtlIHNwYWNlIGZvciBuZXcgY29udGVudCAodXAvZG93biBhcnJvd3MgaW4gb3BlcmF0aW9uKQotIHF1aWNrIGFjdGlvbiBidXR0b25zIGZvciBhZGRpbmcgcHJvcGVydGllcyBhbmQgc2NoZW1hcwotIGNsaWNraW5nIHNjaGVtYXMgb3IgcHJvcGVydGllcyB3aWxsIHNjcm9sbCB0aGUgZG9jdW1lbnQKLSBkZXRlY3RzIGNoYW5nZXMgYW5kIGNvbG9ycyBzeW5jIGJ1dHRvbnMKLSBjYW4gYWRkIGEgImJha2VkIiB2aXogaW50byB0aGUgZG9jdW1lbnQgYXMgYSB2aWV3ZXIgc3RvcmFnZQotIHVzZXMgdml6IGFzIG1ldGFkYXRhIChub2RlIHBvc2l0aW9uKSBzdG9yYWdlCi0gc3luYyBncmFwaCBpbnRvIHlhbWwsIHN5bmMgeWFtbCBpbnRvIGdyYXBoCi0gYXV0by1zYXZlIGluIGxvY2Fsc3RvcmFnZSBvZiBicm93c2VyCgohW29haWUtc2tldGNoLTIucG5nXShvYWllLXNrZXRjaC0yLnBuZykKCiMjIE9waW5pb25hdGVkIE9BUzMgWUFNTApSZXF1ZXN0cywgUmVzcG9uc2VzIGFuZCBzdWItb2JqZWN0cyBzaG91bGQgYmUgdGhlaXIgb3duIHNjaGVtYSBkZWZpbml0aW9ucy4gTm90ZSB0aGF0IHRoaXMgaXMgYmVzdCBwcmFjdGljZSBhbnl3YXkgaWYgeW91IGV2ZXIgd2FudCB0byBnZW5lcmF0ZSBjbGFzc2VzIGZyb20geW91ciBzcGVjLgoKICAgIGNvbXBvbmVudHM6CiAgICAgIHNjaGVtYXM6CiAgICAgICAgQ2FwYWJpbGl0aWVzUmVxdWVzdDoKICAgICAgICAgIHJlcXVpcmVkOgogICAgICAgICAgICAtIHNwZWMKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIHNwZWM6CiAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1NwZWMnCiAgICAgICAgQ2FwYWJpbGl0aWVzUmVzcG9uc2U6CiAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICBjYXBhYmlsaXRpZXM6CiAgICAgICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgICAgICBpdGVtczoKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9DYXBhYmlsaXR5JwogICAgICAgIENhcGFiaWxpdHk6CiAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICBtZXRob2Q6CiAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgIHNrdVBhdHRlcm46CiAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgU3BlYzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBPQUlFLm5vSW5BcnJvd3MKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIGlkOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICBzY2hlZHVsZXM6CiAgICAgICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgICAgICBpdGVtczoKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9TY2hlZHVsZScKICAgICAgICBTY2hlZHVsZToKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIG1ldGhvZDoKICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgZXhwcmVzc2lvbjoKICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKCiMjIFZJWgpCZWdpbm5pbmcgZG9jdW1lbnRzIGxpa2UgdGhpcyB3aWxsIGFkZCBhIHZpeiAodmlzdWFsaXNhdGlvbikgaW50byB0aGUgaGVhZGVyICh0aGlzIHdpbGwgc2hvdyB1cCBhcyBhIGdyYXBoaWMgaW4gc3dhZ2dlcik6CgogICAgb3BlbmFwaTogIjMuMC4wIgogICAgaW5mbzoKICAgICAgdmVyc2lvbjogIjAuMC4xIgogICAgICB0aXRsZTogTXkgU2VydmljZQogICAgICBkZXNjcmlwdGlvbjogfAogICAgICAgIE15IGludHJvZHVjdG9yeSBpbmZvcm1hdGlvbgogICAgICAgIDwhLS1PQUlFLnZpei0tPjwhLS0vT0FJRS52aXotLT4KICAgIC4uLgoKU2tldGNoIHBlcnNpc3RzIGdyYXBoIG5vZGUgcG9zaXRpb25zIHRvIHRoZSBicm93c2VyJ3MgbG9jYWxTdG9yYWdlLCBidXQgd2hlbiBhIHZpeiBpcyBwcmVzZW50LCBpdCB3aWxsIHN0b3JlIGFuZCBsb2FkIGdyYXBoIG5vZGUgcG9zaXRpb25zIHRvIGFuZCBmcm9tIHRoaXMgdml6IChpbnNpZGUgdGhlICZsdDshLS1PQUlFLnZpei0tJmd0OyB0YWcpLgoKIyMgQ2F2ZWF0cwotIEN1cnJlbnRseSBvbmx5IHRlc3RlZCBvbiBDaHJvbWUuCi0gT0FJRSBTa2V0Y2ggaGFzIGFuIG9waW5pb24gYWJvdXQgY29ycmVjdCBkb2N1bWVudCBzdHJ1Y3R1cmU6IGVhY2ggc2NoZW1hIHNob3VsZCBiZSBkZWNsYXJlZCBhcyBhIG5hbWVkIHNjaGVtYS4KLSBsb2NhbCBzdG9yYWdlIGlzIHVzZWQgYXMgcGVyc2lzdGVuY2UuIHRoaXMgbWVhbnMgdGhhdCBjdXJyZW50bHkgaXQgaXMgb25seSBmZWFzaWJsZSB0byBlZGl0IG9uZSBzcGVjIGF0IGEgdGltZSAobXVjaCBsaWtlIHRoZSBTd2FnZ2VyIG9ubGluZSBlZGl0b3IpLgotIE9BSUUgU2tldGNoIGlzIGluIGEgdmVyeSBlYXJseSBzdGFnZSwgcGxlYXNlIGJhY2t1cCB5b3VyIGRvY3VtZW50cyBmcmVxdWVudGx5IG91dHNpZGUgb2YgaXQhCi0gU3luYzogd2hlbiBib3RoIGFyZSB5ZWxsb3csIGZpcnN0IGNsaWNrICI8LSB1cGRhdGUgaW5saW5lIHZpeiIsIHRoZW4gInVwZGF0ZSBmcm9tIGVkaXRvciAtPiIKCiMjIFRPRE8KLSBkb2N1bWVudGF0aW9uCi0gZmluZCBjb250cmlidXRvcnMKLSBtYXJrZXRpbmcKLSBzZWUgUHJvamVjdHMgdGFiIGZvciBwbGFubmVkIGZlYXR1cmVzCgojIyBDb250cmlidXRpbmcKLSBXZSB3YW50IHRvIG1haW50YWluIGEgZm9jdXMgb24gdGhlIGNvZGUuCi0gV2Ugd2FudCB0byBmYWNpbGl0YXRlIHdyaXRpbmcgYmV0dGVyIHNwZWNzLgotIFdlIHdhbnQgdG8gbWFrZSB3cml0aW5nIHNwZWNzIGVhc2llciBhbmQgZ2l2ZSBhbiBlYXNpZXIgbGVhcm5pbmcgY3VydmUuCi0gV2Ugd2FudCB0byBiZSBhcyBsaWdodHdlaWdodCBhcyBwb3NzaWJsZSAoY3VycmVudGx5IG5lZWRzIFZ1ZSwgSlMtWUFNTCwgalF1ZXJ5LCBqUXVlcnkgVUkgLSBoZWxwIG9uIHJlbW92aW5nIGpRdWVyeSBhcHByZWNpYXRlZCEpLgotIFdlIHdhbnQgdG8ga2VlcCB0aGUgZGVwZW5kZW5jeSB0byBsaWJyYXJpZXMgYXMgbG93IGFzIHBvc3NpYmxlLgo= readmeEtag: '"5c70fc3576325791048b134c65f5e9b26df07ba9"' readmeLastModified: Wed, 09 Dec 2020 09:27:25 GMT repositoryId: 251551520 description: OpenAPI Visual Editor created: '2020-03-31T09:03:18Z' updated: '2025-09-02T20:09:25Z' language: HTML archived: false stars: 74 watchers: 5 forks: 10 owner: OAIE logo: https://avatars.githubusercontent.com/u/62933192?v=4 license: MIT repoEtag: '"5809b16e76ef933a3044fdb2ba4fdd34ed84fab38b2b44ce8361d1e4dadb7e2a"' repoLastModified: Tue, 02 Sep 2025 20:09:25 GMT foundInMaster: true id: 1559682e19f96b7e2025e28b33915bed - source: https://openapi.tools/ name: OpenAPI Designer category: GUI Editors language: SaaS link: https://openapidesigner.com source_description: >- OpenAPI Designer is an easy-to-use, free, web-based, codeless description document editor with JSON and YAML outputs. v3: true v3_1: true id: 113b3e287451017a1bfd30a88f5aa402 foundInMaster: true - source: https://openapi.tools/ name: ApiBldr category: GUI Editors language: - Angular 9.0 - Saas link: https://www.apibldr.com/ source_description: | Web-Based API Designer for OpenAPI (swagger) and AsyncAPI specifications. v2: true v3: true foundInMaster: true id: 2e1e071de0cefab924eba4860c14f63f - source: https://openapi.tools/ name: RestCase Designer category: GUI Editors language: - Angular 9.0 - Saas link: https://www.restcase.com/platform/design source_description: > A design-first API managment platform with WYSIWYG API Designer for OpenAPI and AsyncAPI specifications. v2: true v3: true foundInMaster: true id: 034f272138f88f0a55801dae0857323a - source: https://openapi.tools/ name: Frogment Editor category: GUI Editors language: - Desktop - SaaS link: https://www.frogment.com source_description: > A free openAPI spec editor and linter that breaks down your spec into fragments to make editing easier and more intuituve. v2: false v3: true v3_1: true id: 372fe64c1e2965a75c3a3e3b1ccc5eaa foundInMaster: true - source: https://openapi.tools/ name: Meeshkan category: - Testing - Mock language: SaaS link: https://meeshkan.com/ source_description: >- Meeshkan is an automated testing and mocking tool. It offers first-class support for GraphQL APIs, but Meeshkan is also built to handle REST APIs and third-party dependencies. v2: false v3: true id: bfa5bf187387df6760e4366cf73a63b4 foundInMaster: true - source: https://openapi.tools/ name: Response2Schema category: - Learning - Parsers language: PHP link: https://github.com/dsuurlant/response2schema source_description: >- Takes any JSON response and generates an OpenAPI definition document with the component schema and a default endpoint. v2: false v3: true foundInMaster: true repository: https://github.com/dsuurlant/response2schema repositoryMetadata: base64Readme: >- IyBSZXNwb25zZTJTY2hlbWEKCkEgcXVpY2sgJ24gZWFzeSB3YXkgdG8gZ2VuZXJhdGUgeW91ciBPcGVuQVBJIHNwZWMgYmFzZWQgb24gYSBKU09OIG9iamVjdC4gVXNlZnVsIGZvciBib290c3RyYXBwaW5nIHlvdXIgY29tcG9uZW50CiBzY2hlbWFzLiBUaGlzIGlzIGludGVuZGVkIHRvIGJlIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHdyaXRpbmcgeW91ciBzcGVjaWZpY2F0aW9uLCBhcyB0aGUgdG9vbCBjYW5ub3QgaW5mZXIgdHlwZXMgc3VjaAogIGFzIGVudW0sIG9uZU9mLCBtYXhpbXVtL21pbmltdW0sIGFuZCBzbyBvbi4gSXQgYWxzbyBkb2VzIG5vdCBzdXBwb3J0IGdlbmVyYXRpbmcgZW5kcG9pbnRzIG9yIGVycm9yIHJlc3BvbnNlcy4gQWxsCiAgIGl0IGRvZXMgaXMgdGFrZSB5b3VyIEpTT04gb2JqZWN0IGFuZCB0dXJucyBpdCBpbnRvIGFuIE9wZW5BUEkgc2NoZW1hIG9iamVjdCwgYWxvbmcgd2l0aCBhIHNpbXBsZSBleGFtcGxlIHNwZWMgdGhhdAogICAgeW91IGNhbiBleHBhbmQgb24uCiAgICAKU3VwcG9ydHMgZ2VuZXJhdGluZyBhbiBPcGVuQVBJIHNwZWMgaW4gYEpTT05gIG9yIGB5YW1sYC4KCiMgSW5zdGFsbGF0aW9uCgpgY29tcG9zZXIgcmVxdWlyZSBkc3V1cmxhbnQvcmVzcG9uc2Uyc2NoZW1hYAoKT3IgZG93bmxvYWQgdGhlIHBoYXIgZnJvbSB0aGUgW1JlbGVhc2VzIHBhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9kc3V1cmxhbnQvcmVzcG9uc2Uyc2NoZW1hL3JlbGVhc2VzKS4KCiMgVXNhZ2UKCkp1c3QgcG9pbnQgUmVzcG9uc2UyU2NoZW1hIHRvIHlvdXIgaW5wdXQganNvbiBmaWxlLCBhbmQgdGVsbCBpdCB3aGVyZSB0byBwdXQgdGhlIG91dHB1dCBPcGVuQVBJIHNwZWMuCgpJdCB3aWxsIGF1dG9tYXRpY2FsbHkgZm9ybWF0IGl0IHRvIGpzb24gb3IgeWFtbCBiYXNlZCBvbiB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBvdXRwdXQgcGF0aC4KCmAuL3ZlbmRvci9iaW4vcmVzcG9uc2Uyc2NoZW1hIHJlc3BvbnNlLmpzb24gb3BlbmFwaS55YW1sYAoKT3Igd2hlbiB1c2luZyB0aGUgcGhhcjoKCmAuL3Jlc3BvbnNlMnNjaGVtYS5waGFyIHJlc3BvbnNlLmpzb24gb3BlbmFwaS55YW1sYAoKIyBFeGFtcGxlCgpHaXZlbiBhIHZlcnkgc2ltcGxlIHJlc3BvbnNlOgoKYGBganNvbgp7CiAgICAiaWQiOiAxLCAgCiAgICAibmFtZSI6ICJFeGFtcGxlIFJlc3BvbnNlIgp9CmBgYAoKUmVzcG9uc2UyU2NoZW1hIGdlbmVyYXRlcyB0aGUgZm9sbG93aW5nIHNwZWM6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgdGl0bGU6ICdPcGVuQVBJIHNwZWNpZmljYXRpb24gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgUmVzcG9uc2UyU2NoZW1hLicKICBkZXNjcmlwdGlvbjogJ1BsZWFzZSBhZGFwdCB0aGlzIHNwZWNpZmljYXRpb24gdG8geW91ciBvd24gbmVlZHMuJwogIHZlcnNpb246IDEuMC4wCnBhdGhzOgogIC9yZXNvdXJjZToKICAgIGdldDoKICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbiBvZiB0aGUgZW5kcG9pbnQnCiAgICAgIG9wZXJhdGlvbklkOiBnZXRSZXNvdXJjZQogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uIG9mIHRoaXMgcmVzcG9uc2UuJwogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUmVzb3VyY2UnCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIFJlc291cmNlOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCmBgYAoKSXQgd2lsbCBhbHdheXMgZ2VuZXJhdGUgdGhlIGV4YW1wbGUgZW5kcG9pbnQgYW5kIGEgc2NoZW1hIG5hbWVkICdSZXNvdXJjZScuCgpUaGUgYmVzdCB3YXkgdG8gdXNlIHRoaXMgdG9vbCBpcyB0byB0YWtlIHRoaXMgYXMgYSBzdGFydGluZyBwb2ludCwgb3IgY29weS1wYXN0ZSB0aGUgc2NoZW1hIGRlZmluaXRpb24gdG8geW91ciBvd24KIE9wZW5BUEkgc3BlYy4KIAojIENyZWRpdHMKCkJ1aWx0IGFuZCBtYWludGFpbmVkIGJ5IFtEYW5pw6tsbGUgU3V1cmxhbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9kc3V1cmxhbnQpLgoKUmVsaWVzIGhlYXZpbHkgb24gdGhlIGF3ZXNvbWUgUEhQIE9wZW5BUEkgbGlicmFyeSBbY2ViZS9waHAtb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL2NlYmUvcGhwLW9wZW5hcGkpLgoK readmeEtag: '"112e223871be1155102dc38aa7911ef203e0dac3"' readmeLastModified: Mon, 09 Oct 2023 08:32:37 GMT repositoryId: 266575464 description: A quick and easy tool for generating OpenAPI schemas. created: '2020-05-24T16:00:11Z' updated: '2025-10-30T15:48:44Z' language: PHP archived: false stars: 90 watchers: 3 forks: 5 owner: dsuurlant logo: https://avatars.githubusercontent.com/u/4609379?v=4 license: MIT repoEtag: '"2e85d125f46c90a41351d84b1b40f7c49dd81c269da8b4cf605b0e1c185cb5f4"' repoLastModified: Thu, 30 Oct 2025 15:48:44 GMT id: ee1da7e4ea9bb6a42233ac4702ceebf7 - source: https://openapi.tools/ name: InducOapi category: - Learning - Parsers language: Python link: https://pypi.org/project/inducoapi repository: https://github.com/thewall89/inducoapi source_description: >- A simple python module to generate OpenAPI Description Documents by supplying request/response bodies. v2: false v3: true repositoryMetadata: base64Readme: >- IyBJbmR1Y09hcGkKClshW2NpXShodHRwczovL2dpdGh1Yi5jb20vVGhlV2FsbDg5L2luZHVjb2FwaS9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwvYmFkZ2Uuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL2dpdGh1Yi5jb20vVGhlV2FsbDg5L2luZHVjb2FwaS9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwpClshW1B5UEkgdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL3B5L2luZHVjb2FwaS5zdmcpXShodHRwczovL2JhZGdlLmZ1cnkuaW8vcHkvaW5kdWNvYXBpKQoKQSBzaW1wbGUgcHl0aG9uIG1vZHVsZSB0byBnZW5lcmF0ZSBPcGVuQVBJIERlc2NyaXB0aW9uIERvY3VtZW50cyBieSBzdXBwbHlpbmcgcmVxdWVzdC9yZXNwb25zZSBib2RpZXMuCgoqQ29udHJpYnV0aW9ucyBmb3IgbmV3IGZlYXR1cmVzLCBmaXhlcyBvciBpbXByb3ZlbWVudHMgYXJlIHdlbGNvbWUuIEZlZWwgZnJlZSB0byBzZW5kIGEgcHVsbCByZXF1ZXN0LioKCiMjIE1vdGl2YXRpb24KClNvbWV0aW1lcyB5b3UgaGF2ZSBhIGZ1bGx5IGZ1bmN0aW9uaW5nIEhUVFAgc2VydmljZSB3aXRob3V0IE9wZW5BUEkgZG9jdW1lbnRhdGlvbi4gQXQgc29tZSBwb2ludCBpbiB0aW1lLCBvdGhlcnMgbWF5Cm5lZWQgdG8gdXNlIHlvdXIgc2VydmljZS4gV3JpdGluZyB0aGUgZG9jdW1lbnRhdGlvbiBieSBoYW5kIGlzIGEgcGFpbiBhbmQgY2FuIGZlZWwgbGlrZSBhbiBvdmVyd2hlbG1pbmcgam9iIGZvciBjb21wbGV4CnNlcnZpY2VzLgoqaW5kdWNvYXBpKiBoZWxwcyB5b3UgZ2VuZXJhdGUgeW91ciBPcGVuQVBJIERlc2NyaXB0aW9uIERvY3VtZW50cyBieSB0YWtpbmcgYXMgaW5wdXQgcmVxdWVzdC9yZXNwb25zZSBleGFtcGxlcyBwbHVzIHNvbWUKb3RoZXIgaW5mb3JtYXRpb24uCgpUaGUgZ2VuZXJhdGVkIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBpcyB2YWxpZGF0ZWQKd2l0aCBbb3BlbmFwaS1zcGVjLXZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL3AxYzJ1L29wZW5hcGktc3BlYy12YWxpZGF0b3IpLgoKKldhcm5pbmcqOiBUaGlzIHByb2dyYW0gYWxzbyBnZW5lcmF0ZXMgdGhlIGBleGFtcGxlYCBmaWVsZHMgaW4gT3BlbkFQSSBzY2hlbWFzIGJ5IGRlZmF1bHQuIElmIHlvdSBoYXZlIHNlbnNpdGl2ZSBkYXRhIGluCnlvdXIgcmVxdWVzdC9yZXNwb25zZSBmaWxlcywgZGlzYWJsZSB0aGlzIGZlYXR1cmUgd2l0aCBgLS1uby1leGFtcGxlYC4KCiMjIEluc3RhbGxhdGlvbgoKIyMjIFdpdGggYHBpcGAKCmBgYHNoZWxsIHNjcmlwdApwaXAgaW5zdGFsbCBpbmR1Y29hcGkKYGBgCgojIyMgV2l0aCBbcG9ldHJ5XShodHRwczovL3B5dGhvbi1wb2V0cnkub3JnLykKCmBgYHNoZWxsIHNjcmlwdApnaXQgY2xvbmUgZ2l0QGdpdGh1Yi5jb206VGhlV2FsbDg5L2luZHVjb2FwaS5naXQKY2QgaW5kdWNvYXBpCnBvZXRyeSBpbnN0YWxsCmBgYAoKVG8gcnVuIHVuaXQtdGVzdHM6CgpgYGBzaGVsbCBzY3JpcHQKcG9ldHJ5IGluc3RhbGwgLS13aXRoPWRldgpwb2V0cnkgcnVuIHB5dGVzdApgYGAKCiMjIFVzYWdlCgojIyMgRnJvbSBDTEkKCmBpbmR1Y29hcGlgIHByb3ZpZGVzIGl0cyBvd24gY29tbWFuZC4gWW91IGNhbiBzaW1wbHkgZXhlY3V0ZSBpdCB3aXRoCgpgYGBzaGVsbCBzY3JpcHQKaW5kdWNvYXBpCmBgYAoKSWYgeW91IGdldCBhIGBjb21tYW5kIG5vdCBmb3VuZGAgZXJyb3IsIHRyeSB0byBhY3RpdmF0ZSB5b3VyIHZpcnR1YWxlbnYgb3IgcnVuIGBwb2V0cnkgc2hlbGxgIGZpcnN0LgoKWW91IGNhbiBhbHNvIHJ1biBgaW5kdWNvYXBpYCBpbiB0aGUgY2xhc3NpYyB3YXk6CgpgYGBzaGVsbCBzY3JpcHQKcHl0aG9uIC1tIGluZHVjb2FwaQpgYGAKCiMjIyMgSGVscAoKYGluZHVjb2FwaWAgcHJvdmlkZXMgaXRzIG93biBoZWxwLiBDaGVjayBpdCBvdXQgd2l0aDoKCmBgYHNoZWxsIHNjcmlwdApweXRob24gLW0gaW5kdWNvYXBpIC1oCmBgYAoKIyMjIyBFeGFtcGxlcwoKTGV0J3MgY29uc2lkZXIgYSBzaW1wbGUgY2FzZTogeW91IGhhdmUgYW4gSFRUUCBzZXJ2aWNlIG1hbmFnaW5nIGVtcGxveWVlcy4gV2Ugd2FudCB0byBnZW5lcmF0ZSB0aGUgT3BlbkFQSSBEZXNjcmlwdGlvbgpEb2N1bWVudCBmb3IgYSBHRVQgb24gYWxsIHRoZSBlbXBsb3llZXMsIHJldHVybmluZyBhIDIwMCBzdGF0dXMgY29kZToKCmBgYHNoZWxsIHNjcmlwdApweXRob24gLW0gaW5kdWNvYXBpIEdFVCAvZW1wbG95ZWVzIDIwMApgYGAKCjxkZXRhaWxzPjxzdW1tYXJ5Pm91dHB1dDwvc3VtbWFyeT4KCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICB0aXRsZTogR2VuZXJhdGVkIGJ5IEluZHVjT2FwaQogIHZlcnNpb246IHYxCnBhdGhzOgogIC9lbXBsb3llZXM6CiAgICBnZXQ6CiAgICAgIHJlc3BvbnNlczoKICAgICAgICAyMDA6CiAgICAgICAgICBkZXNjcmlwdGlvbjogJycKYGBgCgo8L2RldGFpbHM+CgpOb3csIGEgR0VUIHJlcXVlc3Qgd2l0aCBhbiBlbXB0eSByZXNwb25zZSBpcyBub3QgcXVpdGUgdXNlZnVsLiBMZXQncyBhZGQgYW4gYXJndW1lbnQgd2l0aCBhIEpTT04gZmlsZSBjb250YWluaW5nIGEKcmVzcG9uc2UgZXhhbXBsZS4gSW5wdXQgZXhhbXBsZXMgY2FuIGJlIGZvdW5kIGluIFtleGFtcGxlc10oZXhhbXBsZXMpLgoKYGBgc2hlbGwgc2NyaXB0CnB5dGhvbiAtbSBpbmR1Y29hcGkgR0VUIC9lbXBsb3llZXMgMjAwIC0tcmVzcG9uc2UgZXhhbXBsZXMvZW1wbG95ZWVzLmpzb24KYGBgCgo8ZGV0YWlscz48c3VtbWFyeT5vdXRwdXQ8L3N1bW1hcnk+CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgdGl0bGU6IEdlbmVyYXRlZCBieSBJbmR1Y09hcGkKICB2ZXJzaW9uOiB2MQpwYXRoczoKICAvZW1wbG95ZWVzOgogICAgZ2V0OgogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgZGVzY3JpcHRpb246ICcnCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICAgICAgICBpdGVtczoKICAgICAgICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgICAgaWQ6CiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlOiAxCiAgICAgICAgICAgICAgICAgICAgbmFtZToKICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZTogRHdpZ2h0IFNjaHJ1dGUKICAgICAgICAgICAgICAgICAgICByb2xlOgogICAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlOiBzYWxlc21hbgpgYGAKCjwvZGV0YWlscz4KCkxldCdzIGFkZCBhIHBhcmFtZXRlciB0byBmaWx0ZXIgdGhlIGVtcGxveWVlcyBieSBuYW1lLgoKYGBgc2hlbGwgc2NyaXB0CnB5dGhvbiAtbSBpbmR1Y29hcGkgR0VUIC9lbXBsb3llZXMgMjAwIC0tcmVzcG9uc2UgZXhhbXBsZXMvZW1wbG95ZWVzLmpzb24gLS1wYXJhbWV0ZXIgbmFtZSxxdWVyeSAKYGBgCgo8ZGV0YWlscz48c3VtbWFyeT5vdXRwdXQ8L3N1bW1hcnk+CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgdGl0bGU6IEdlbmVyYXRlZCBieSBJbmR1Y09hcGkKICB2ZXJzaW9uOiB2MQpwYXRoczoKICAvZW1wbG95ZWVzOgogICAgZ2V0OgogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogJycKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgICAgICAgICBpZDoKICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGU6IDEKICAgICAgICAgICAgICAgICAgICBuYW1lOgogICAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlOiBEd2lnaHQgU2NocnV0ZQogICAgICAgICAgICAgICAgICAgIHJvbGU6CiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGU6IHNhbGVzbWFuCiAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgLSBuYW1lOiBuYW1lCiAgICAgICAgICBpbjogcXVlcnkKICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZQogICAgICAgICAgZGVzY3JpcHRpb246ICcnCiAgICAgICAgICBzY2hlbWE6IHsgfQpgYGAKCjwvZGV0YWlscz4KCkZpbmFsbHksIGxldCdzIHRyeSBhIFBPU1QgcmVxdWVzdCB3aXRoIGJvdGggcmVxdWVzdCBhbmQgcmVzcG9uc2UgZXhhbXBsZXMuCgpgYGBzaGVsbCBzY3JpcHQKcHl0aG9uIC1tIGluZHVjb2FwaSBQT1NUIC9lbXBsb3llZXMgMjAxIC0tcmVxdWVzdCBleGFtcGxlcy9uZXdfZW1wbG95ZWVfcmVxLmpzb24gLS1yZXNwb25zZSBleGFtcGxlcy9uZXdfZW1wbG95ZWVfcmVzcC5qc29uCmBgYAoKPGRldGFpbHM+PHN1bW1hcnk+b3V0cHV0PC9zdW1tYXJ5PgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogIHRpdGxlOiBHZW5lcmF0ZWQgYnkgSW5kdWNPYXBpCiAgdmVyc2lvbjogdjEKcGF0aHM6CiAgL2VtcGxveWVlczoKICAgIHBvc3Q6CiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgICAgIG5hbWU6CiAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICBleGFtcGxlOiBNaWNoYWVsIFNjb3R0CiAgICAgICAgICAgICAgICByb2xlOgogICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgZXhhbXBsZTogbWFuYWdlcgogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAxOgogICAgICAgICAgZGVzY3JpcHRpb246ICcnCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgICAgICAgaWQ6CiAgICAgICAgICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgICAgICAgICAgIGV4YW1wbGU6IDQKICAgICAgICAgICAgICAgICAgbmFtZToKICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgICBleGFtcGxlOiBNaWNoYWVsIFNjb3R0CiAgICAgICAgICAgICAgICAgIHJvbGU6CiAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgZXhhbXBsZTogbWFuYWdlcgpgYGAKCjwvZGV0YWlscz4KCklmIHlvdSB3YW50IHRvIGRpcmVjdGx5IHdyaXRlIHRoZSBnZW5lcmF0ZWQgT3BlbkFQSSBEZXNjcmlwdGlvbiBEb2N1bWVudHMgdG8gYSBZQU1MIGZpbGUsIGp1c3QKYWRkIGAtLW91dHB1dCBvcGVuYXBpLnlhbWxgCgojIyMgRnJvbSBweXRob24KClt0ZXN0X2luZHVjb2FwaS5weV0odGVzdHMvdGVzdF9pbmR1Y29hcGkucHkpIHByb3ZpZGVzIHVzYWdlIGV4YW1wbGVzIG9mIHRoZSBtb2R1bGUgZnJvbSBweXRob24uCgojIyBUT0RPIGxpc3QKCi0gW3hdIEFkZCBzdXBwb3J0IGZvciByZXF1ZXN0L3Jlc3BvbnNlIGZpbGVzIGluIFlBTUwKLSBbeF0gQWRkIHN1cHBvcnQgZm9yIGBhcHBsaWNhdGlvbi95YW1sYCBjb250ZW50Ci0gW3hdIEN1c3RvbWl6ZSB0aXRsZSBhbmQgdmVyc2lvbiBpbiBpbmZvCi0gW3hdIFBhY2thZ2UgbW9kdWxlCi0gW3hdIFN1cHBvcnQgZm9yIGAkcmVmYCBpbiByZXNwb25zZSBzY2hlbWFzCi0gW3hdIEFkZCBzdXBwb3J0IGZvciBgcGFyYW1ldGVyc2AKLSBbIF0gfn5BZGQgc3VwcG9ydCBmb3IgYGxpbmtzYH5+IChJIGRvbid0IHRoaW5rIGl0IGlzIHZlcnkgdXNlZnVsKQotIFsgXSB+fkFkZCBzdXBwb3J0IGZvciBgZm9ybWF0YH5+IChoYXJkIHRvIGluZmVyKQo= readmeEtag: '"8ed88b3cfc9912b379b3dfab4295625b3934844e"' readmeLastModified: Sun, 06 Jul 2025 17:41:36 GMT repositoryId: 232868853 description: >- A simple python module to generate OpenAPI Description Documents by supplying request/response bodies. created: '2020-01-09T17:43:54Z' updated: '2025-07-30T11:24:37Z' language: Python archived: false stars: 19 watchers: 2 forks: 4 owner: TheWall89 logo: https://avatars.githubusercontent.com/u/2626117?v=4 license: Apache-2.0 repoEtag: '"5d7c4dfaff173d065c568d5ddfd571906a3c9d120349328cdd2d45ead23b403c"' repoLastModified: Wed, 30 Jul 2025 11:24:37 GMT foundInMaster: true id: 2829ee121d0fb8321fc8c0dbe2c74103 v3_1: true - source: - https://openapi.tools/ - openapi3 tags name: Prism category: - Mock - Server Implementations language: cli link: https://stoplight.io/open-source/prism repository: https://github.com/stoplightio/prism source_description: >- Turn any OAI file into an API server with mocking, transformations, validations, and more. v2: true v3: true v3_1: true repositoryMetadata: base64Readme: >- WyFbUHJpc20gLSBBUEkgTW9jayBTZXJ2ZXJzIGFuZCBDb250cmFjdCBUZXN0aW5nXShleGFtcGxlcy9yZWFkbWUtaGVhZGVyLnN2ZyldW21vY2tpbmdfbGFuZGluZ19wYWdlXQoKWyFbQ2lyY2xlQ0ldW2NpcmNsZV9jaV9pbWFnZV1dW2NpcmNsZV9jaV0KWyFbTlBNIERvd25sb2Fkc11bbnBtX2ltYWdlXV1bbnBtXQpbIVtTdG9wbGlnaHQgRm9yZXN0XShodHRwczovL2ltZy5zaGllbGRzLmlvL2Vjb2xvZ2kvdHJlZXMvc3RvcGxpZ2h0aW5jKV1bc3RvcGxpZ2h0X2ZvcmVzdF0KCiMgUHJpc20gT3ZlcnZpZXcKClByaXNtIGlzIGEgc2V0IG9mIHBhY2thZ2VzIGZvciBBUEkgbW9ja2luZyBhbmQgY29udHJhY3QgdGVzdGluZyB3aXRoICoqT3BlbkFQSSB2MioqIChmb3JtZXJseSBrbm93biBhcyBTd2FnZ2VyKSBhbmQgKipPcGVuQVBJIHYzLngqKi4KClByaXNtIHByb3ZpZGVzOgoKLSAqKk1vY2sgU2VydmVycyoqOiBMaWZlLWxpa2UgbW9jayBzZXJ2ZXJzIGZyb20gYW55IEFQSSBzcGVjaWZpY2F0aW9uIGRvY3VtZW50LgotICoqVmFsaWRhdGlvbiBQcm94eSoqOiBDb250cmFjdCBUZXN0aW5nIGZvciBBUEkgY29uc3VtZXJzIGFuZCBkZXZlbG9wZXJzLgotICoqQ29tcHJlaGVuc2l2ZSBBUEkgU3BlY2lmaWNhdGlvbiBTdXBwb3J0Kio6IE9wZW5BUEkgdjMuMSwgT3BlbkFQSSB2My4wLCBPcGVuQVBJIHYyLjAgKGZvcm1lcmx5IFN3YWdnZXIpIGFuZCBQb3N0bWFuIENvbGxlY3Rpb25zLgoKIyMgV2F5cyB0byBVc2UgUHJpc20KCiMjIyBIb3N0ZWQgUHJpc20KClN0b3BsaWdodCBwcm92aWRlcyBob3N0ZWQgbW9jayBzZXJ2ZXJzIGZvciBjb252ZW5pZW5jZSBzbyB0aGF0IEFQSSBjb25zdW1lcnMgY2FuIGV4cGVyaW1lbnQgd2l0aCBhbiBBUEkgd2l0aG91dCB0aGUgbmVlZCBmb3IgYmFja2VuZCBjb2RlLgoKVXNlIG9uZSBvZiB0aGVzZSBvcHRpb25zIGZvciBpbnN0YW50LCBob3N0ZWQgbW9jayBzZXJ2ZXJzOgoKLSBbU3RvcGxpZ2h0IFBsYXRmb3JtXShodHRwczovL3N0b3BsaWdodC5pby8/dXRtX3NvdXJjZT1naXRodWIuY29tJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPWdpdGh1Yl9yZXBvX3ByaXNtKTogQ29sbGFib3JhdGl2ZSBBUEkgRGVzaWduIFBsYXRmb3JtIGZvciBkZXNpZ25pbmcsIGRldmVsb3BpbmcgYW5kIGRvY3VtZW50aW5nIEFQSXMgd2l0aCBob3N0ZWQgbW9ja2luZyBwb3dlcmVkIGJ5IFByaXNtLgotIFtTdG9wbGlnaHQgU3R1ZGlvXShodHRwczovL3N0b3BsaWdodC5pby9zdHVkaW8vP3V0bV9zb3VyY2U9Z2l0aHViLmNvbSZ1dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9jYW1wYWlnbj1naXRodWJfcmVwb19wcmlzbSk6IEZyZWUgdmlzdWFsIE9wZW5BUEkgZGVzaWduZXIgdGhhdCBjb21lcyBpbnRlZ3JhdGVkIHdpdGggbW9ja2luZyBwb3dlcmVkIGJ5IFByaXNtLgoKTGVhcm4gbW9yZSBpbiB0aGUgW2hvc3RlZCBQcmlzbSBkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3Muc3RvcGxpZ2h0LmlvL2RvY3MvcGxhdGZvcm0vMzM2Yjc0ZGIzOGM1MC13b3JrLXdpdGgtbW9jay1zZXJ2ZXJzKS4KCiMjIyBTZWxmLWhvc3RlZCBQcmlzbQoKUHJpc20gaXMgYW4gb3Blbi1zb3VyY2UgSFRUUCBzZXJ2ZXIgcnVuIGZyb20gdGhlIGNvbW1hbmQtbGluZS4gSXQgcHJvdmlkZXMgbW9ja2luZywgcmVxdWVzdCB2YWxpZGF0aW9uLCBhbmQgY29udGVudCBuZWdvdGlhdGlvbi4gVXNlIGl0IHN0YW5kYWxvbmUgdG9vbCBvciBpbiBjb250aW51b3VzIGludGVncmF0aW9uLgoKIVtEZW1vIG9mIFByaXNtIE1vY2sgU2VydmVyIGJlaW5nIGNhbGxlZCB3aXRoIGN1cmwgZnJvbSB0aGUgQ0xJXSguL2V4YW1wbGVzL3ByaXNtLWNsaS5zdmcpCgojIyBJbnN0YWxsYXRpb24gYW5kIFVzYWdlCgpUaGlzIGluZm9ybWF0aW9uIHJlZmVycyB0byBPcGVuIFNvdXJjZSBQcmlzbSAzLngsIHdoaWNoIGlzIHRoZSBjdXJyZW50IHZlcnNpb24gbW9zdCBsaWtlbHkgeW91IHdpbGwgdXNlLiBJZiB5b3UncmUgbG9va2luZyBmb3IgdGhlIDIueCB2ZXJzaW9uLCBsb29rIGF0IHRoZSBbYDIueGAgYnJhbmNoXVsyLnhdCgojIyMgSW5zdGFsbCBTZWxmLWhvc3RlZCBQcmlzbQoKUHJpc20gcmVxdWlyZXMKCi0gTm9kZUpTID49IDE4LjIwLjEKLSBmb3IgTm9kZUpTIDE4LngsIFs+PSAxOC4xNiBpcyByZXF1aXJlZF0oaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvL3ByaXNtL2lzc3Vlcy8yMzA1KQoKYGBgYmFzaApucG0gaW5zdGFsbCAtZyBAc3RvcGxpZ2h0L3ByaXNtLWNsaQoKIyBPUgoKeWFybiBnbG9iYWwgYWRkIEBzdG9wbGlnaHQvcHJpc20tY2xpCmBgYAoKRm9yIG1vcmUgaW5zdGFsbGF0aW9uIG9wdGlvbnMsIHNlZSBvdXIgW2luc3RhbGxhdGlvbiBkb2N1bWVudGF0aW9uXSguL2RvY3MvZ2V0dGluZy1zdGFydGVkLzAxLWluc3RhbGxhdGlvbi5tZCkuCgojIyMgTW9ja2luZwoKUHJpc20gY2FuIGhlbHAgeW91IGNyZWF0ZSBhIGZha2UgIm1vY2siIGJhc2VkIG9mZiBhbiBPcGVuQVBJIGRvY3VtZW50LCB3aGljaCBoZWxwcyBwZW9wbGUgc2VlIGhvdyB5b3VyIEFQSSB3aWxsIHdvcmsgYmVmb3JlIHlvdSBldmVuIGhhdmUgaXQgYnVpbHQuIFJ1biBpdCBsb2NhbGx5IHdpdGggdGhlIGBwcmlzbSBtb2NrYCBjb21tYW5kIHRvIHJ1biB5b3VyIEFQSSBvbiBhIEhUVFAgc2VydmVyIHlvdSBjYW4gaW50ZXJhY3Qgd2l0aC4KCmBgYGJhc2gKcHJpc20gbW9jayBodHRwczovL3Jhdy5naXRoYWNrLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL21hc3Rlci9leGFtcGxlcy92My4wL3BldHN0b3JlLWV4cGFuZGVkLnlhbWwKYGBgCgpMZWFybiBtb3JlIGFib3V0IFtob3cgdGhlIG1vY2sgc2VydmVyIHdvcmtzXShkb2NzL2d1aWRlcy8wMS1tb2NraW5nLm1kKS4KCiMjIyBWYWxpZGF0aW9uIFByb3h5CgpQcmlzbSBjYW4gaGVscCB5b3UgY2hlY2sgZm9yIGRpc2NyZXBlbmNpZXMgYmV0d2VlbiB5b3VyIEFQSSBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIE9wZW5BUEkgZG9jdW1lbnQgdGhhdCBkZXNjcmliZXMsIGxldHRpbmcgeW91IGZ1bm5lbCBIVFRQIHRyYWZmaWMgdGhyb3VnaCBpdCB3aXRoIHRoZSBgcHJpc20gcHJveHlgIGNvbW1hbmQuCgpgYGBiYXNoCnByaXNtIHByb3h5IGV4YW1wbGVzL3BldHN0b3JlLm9hczIueWFtbCBodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIKYGBgCgpMZWFybiBtb3JlIGFib3V0IFtob3cgdGhlIHZhbGlkYXRpb24gcHJveHkgd29ya3NdKGRvY3MvZ3VpZGVzLzAzLXZhbGlkYXRpb24tcHJveHkubWQpLgoKIyMg8J+TliBEb2N1bWVudGF0aW9uIGFuZCBDb21tdW5pdHkKCi0gW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5zdG9wbGlnaHQuaW8vZG9jcy9wcmlzbS82NzRiMjdiMjYxYzNjLXByaXNtLW92ZXJ2aWV3KQogIC0gW0dldHRpbmcgU3RhcnRlZF0oLi9kb2NzL2dldHRpbmctc3RhcnRlZC8wMS1pbnN0YWxsYXRpb24ubWQpCiAgLSBbR3VpZGVzXSguL2RvY3MvZ3VpZGVzLzAxLW1vY2tpbmcubWQpCi0gW0NvbW11bml0eV0oaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvL3ByaXNtL2Rpc2N1c3Npb25zKQoKIyMjIOKdkyBGQVFzCgoqKkNhbm5vdCBhY2Nlc3MgbW9jayBzZXJ2ZXIgd2hlbiB1c2luZyBEb2NrZXI/KioKClByaXNtIHVzZXMgbG9jYWxob3N0IGJ5IGRlZmF1bHQsIHdoaWNoIHVzdWFsbHkgbWVhbnMgMTI3LjAuMC4xLiBXaGVuIHVzaW5nIGRvY2tlciB0aGUgbW9jayBzZXJ2ZXIgd2lsbApiZSB1bnJlYWNoYWJsZSBvdXRzaWRlIG9mIHRoZSBjb250YWluZXIgdW5sZXNzIHlvdSBydW4gdGhlIG1vY2sgY29tbWFuZCB3aXRoIGAtaCAwLjAuMC4wYC4KCioqV2h5IGFtIEkgZ2V0dGluZyA0MDQgZXJyb3JzIHdoZW4gSSBpbmNsdWRlIG15IGJhc2VQYXRoPyoqCgpPcGVuQVBJIHYyLjAgaGFkIGEgY29uY2VwdCBjYWxsZWQgImJhc2VQYXRoIiwgd2hpY2ggd2FzIGVzc2VudGlhbGx5IHBhcnQgb2YgdGhlIEhUVFAgcGF0aCB0aGUgc3R1ZmYKYWZ0ZXIgaG9zdCBuYW1lIGFuZCBwcm90b2NvbCwgYW5kIGJlZm9yZSBxdWVyeSBzdHJpbmcuIFVubGlrZSB0aGUgcGF0aHMgaW4geW91ciBgcGF0aHNgIG9iamVjdCwgdGhpcwpiYXNlUGF0aCB3YXMgYXBwbGllZCB0byBldmVyeSBzaW5nbGUgVVJMLCBzbyBQcmlzbSB2Mi54IHVzZWQgdG8gZG8gdGhlIHNhbWUuIEluIE9wZW5BUEkgdjMuMCB0aGV5Cm1lcmdlZCB0aGUgYmFzZVBhdGggY29uY2VwdCBpbiB3aXRoIHRoZSBzZXJ2ZXIudXJsLCBhbmQgUHJpc20gdjMgaGFzIGRvbmUgdGhlIHNhbWUuCgpXZSB0cmVhdCBPQVMyIGBob3N0ICsgYmFzZVBhdGhgIHRoZSBzYW1lIGFzIE9BUzMgYHNlcnZlci51cmxgLCBzbyB3ZSBkbyBub3QgcmVxdWlyZSB0aGVtIHRvIGdvIGluCnRoZSBVUkwuIElmIHlvdSBoYXZlIGEgYmFzZSBwYXRoIG9mIGBhcGkvdjFgIGFuZCB5b3VyIHBhdGggaXMgZGVmaW5lZCBhcyBgaGVsbG9gLCB0aGVuIGEgcmVxdWVzdCB0bwpgaHR0cDovL2xvY2FsaG9zdDo0MDEwL2hlbGxvYCB3b3VsZCB3b3JrLCBidXQgYGh0dHA6Ly9sb2NhbGhvc3Q6NDAxMC9hcGkvdjEvaGVsbG9gIHdpbGwgZmFpbC4gVGhpcwpjb25mdXNlcyBzb21lLCBidXQgdGhlIG90aGVyIHdheSB3YXMgY29uZnVzaW5nIHRvIG90aGVycy4gQ2hlY2sgdGhlIGRlZmF1bHQgb3V0cHV0IG9mIFByaXNtIENMSSB0bwpzZWUgd2hhdCBVUkxzIHlvdSBoYXZlIGF2YWlsYWJsZS4KCiMjIyDwn5qnIFJvYWRtYXAKCi0gW3hdIENvbnRlbnQgTmVnb3RpYXRpb24KLSBbeF0gU2VjdXJpdHkgVmFsaWRhdGlvbgotIFt4XSBWYWxpZGF0aW9uIFByb3h5Ci0gWyBdIFtSZWNvcmRpbmcvTGVhcm5pbmcgTW9kZV0oaHR0cHM6Ly9yb2FkbWFwLnN0b3BsaWdodC5pby9jLzMyNC1sZWFybmluZy1yZWNvcmRpbmc/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT1wcmlzbSZ1dG1fY2FtcGFpZ249cmVhZG1lKSAoY3JlYXRlIE9wZW5BUEkgZnJvbSBIVFRQIHRyYWZmaWMpCi0gWyBdIFtEYXRhIFBlcnNpc3RlbmNlXShodHRwczovL3JvYWRtYXAuc3RvcGxpZ2h0LmlvL2MvMzA4LXBlcnNpc3RlZC1tb2NrLWRhdGE/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT1wcmlzbSZ1dG1fY2FtcGFpZ249cmVhZG1lKSAoYWxsb3cgUHJpc20gYWN0IGxpa2UgYSBzYW5kYm94KQoKU3VibWl0IHlvdXIgaWRlYXMgZm9yIG5ldyBmdW5jdGlvbmFsaXR5IG9uIHRoZSBbU3RvcGxpZ2h0IFJvYWRtYXBdKGh0dHBzOi8vcm9hZG1hcC5zdG9wbGlnaHQuaW8vP3V0bV9zb3VyY2U9Z2l0aHViJnV0bV9tZWRpdW09cHJpc20mdXRtX2NhbXBhaWduPXJlYWRtZSkuCgojIyMg8J+PgSBIZWxwIE90aGVycyBVdGlsaXplIFByaXNtCgpJZiB5b3UncmUgdXNpbmcgUHJpc20gZm9yIGFuIGludGVyZXN0aW5nIHVzZSBjYXNlLCBbY29udGFjdCB1c10obWFpbHRvOmdyb3d0aEBzdG9wbGlnaHQuaW8pIGZvciBhIGNhc2Ugc3R1ZHkuIFdlJ2xsIGFkZCBpdCB0byBhIGxpc3QgaGVyZS4gU3ByZWFkIHRoZSBnb29kbmVzcyDwn46JCgojIyMg8J+RjyBDb250cmlidXRpbmcKCklmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBjb250cmlidXRpbmcgdG8gUHJpc20gaXRzZWxmLCBjaGVjayBvdXQgb3VyIFtjb250cmlidXRpbmcgZG9jcyDih5ddW2NvbnRyaWJ1dGluZ10gYW5kIFtjb2RlIG9mIGNvbmR1Y3Qg4oeXXVtjb2RlX29mX2NvbmR1Y3RdIHRvIGdldCBzdGFydGVkLgoKIyMjIPCfjokgVGhhbmtzCgpQcmlzbSBpcyBidWlsdCBvbiB0b3Agb2YgbG90cyBvZiBleGNlbGxlbnQgcGFja2FnZXMsIGFuZCBoZXJlIGFyZSBhIGZldyB3ZSdkIGxpa2UgdG8gc2F5IGEgc3BlY2lhbCB0aGFua3MgdG8uCgotIFthanZdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2FqdikKLSBbZmFrZXJdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BmYWtlci1qcy9mYWtlcikKLSBbZnAtdHNdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2ZwLXRzKQotIFtnYXZlbF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZ2F2ZWwpCi0gW2pzb24tc2NoZW1hLWZha2VyXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9qc29uLXNjaGVtYS1mYWtlcikKLSBbbGVybmFdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2xlcm5hKQotIFttaWNyaV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbWljcmkpCi0gW29wZW5hcGktc2FtcGxlcl0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb3BlbmFwaS1zYW1wbGVyKQotIFt5YXJnc10oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UveWFyZ3MpCgpDaGVjayB0aGVzZSBwcm9qZWN0cyBvdXQhCgojIyMg8J+MsiBTcG9uc29yIFByaXNtIGJ5IFBsYW50aW5nIGEgVHJlZQoKSWYgeW91IHdvdWxkIGxpa2UgdG8gdGhhbmsgdXMgZm9yIGNyZWF0aW5nIFByaXNtLCB3ZSBhc2sgdGhhdCB5b3UgWyoqYnV5IHRoZSB3b3JsZCBhIHRyZWUqKl0oaHR0cHM6Ly9lY29sb2dpLmNvbS9zdG9wbGlnaHRpbmMpLgoKW2NvZGVfb2ZfY29uZHVjdF06IENPREVfT0ZfQ09ORFVDVC5tZApbY29udHJpYnV0aW5nXTogQ09OVFJJQlVUSU5HLm1kCltkb3dubG9hZC1yZWxlYXNlXTogaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvL3ByaXNtL3JlbGVhc2VzL2xhdGVzdApbY29yZV06IGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BzdG9wbGlnaHQvcHJpc20tY29yZQpbaHR0cF06IGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BzdG9wbGlnaHQvcHJpc20taHR0cApbaHR0cC1zZXJ2ZXJdOiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ac3RvcGxpZ2h0L3ByaXNtLWh0dHAtc2VydmVyCltjbGldOiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ac3RvcGxpZ2h0L3ByaXNtLWNsaQpbY2xpLWRvY3NdOiAuL2RvY3MvZ2V0dGluZy1zdGFydGVkLzAzLWNsaS5tZApbMi54XTogaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvL3ByaXNtL3RyZWUvMi54CltodHRwLWRvY3NdOiBwYWNrYWdlcy9odHRwL1JFQURNRS5tZApbbW9ja2luZ19sYW5kaW5nX3BhZ2VdOiBodHRwczovL3N0b3BsaWdodC5pby9hcGktbW9ja2luZz91dG1fc291cmNlPWdpdGh1Yi5jb20mdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249Z2l0aHViX3JlcG9fcHJpc20KW2NpcmNsZV9jaV06IGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL3N0b3BsaWdodGlvL3ByaXNtCltjaXJjbGVfY2lfaW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2NpcmNsZWNpL2J1aWxkL2dpdGh1Yi9zdG9wbGlnaHRpby9wcmlzbS9tYXN0ZXIKW25wbV06IGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BzdG9wbGlnaHQvcHJpc20tY2xpCltucG1faW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kdy9Ac3RvcGxpZ2h0L3ByaXNtLWh0dHA/Y29sb3I9Ymx1ZQpbc3RvcGxpZ2h0X2ZvcmVzdF06IGh0dHBzOi8vZWNvbG9naS5jb20vc3RvcGxpZ2h0aW5jCg== readmeEtag: '"6f5fe69fe0b604dfdac6d8014ab3f37ed8a1c19e"' readmeLastModified: Fri, 18 Oct 2024 09:24:35 GMT repositoryId: 54172257 description: >- Turn any OpenAPI2/3 and Postman Collection file into an API server with mocking, transformations and validations. created: '2016-03-18T03:52:09Z' updated: '2026-02-05T20:25:21Z' language: TypeScript archived: false stars: 4833 watchers: 53 forks: 389 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 repoEtag: '"e0599d9e2d7c5cb23cd2d10097a713302ba951bd08d31033e57c009fa3207d54"' repoLastModified: Thu, 05 Feb 2026 20:25:21 GMT foundInMaster: true useMasterProperties: true id: 15aad8cd322242e03733b07f2a37890a - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags name: Microcks category: - Mock Testing - SDK language: Java link: https://microcks.io repository: https://github.com/microcks/microcks source_description: >- Open source Kubernetes-native tool for API Mocking and Testing. Turn your OAI contract examples into ready-to-use mocks. Use examples to test and validate implementations according to spec and schema elements. Microcks is a Cloud Native Computing Sandbox project 🚀 v2: true v3: true v3_1: true repositoryMetadata: base64Readme: >- PGltZyBzcmM9Ii4vbWljcm9ja3MtYmFubmVyLnBuZyIgd2lkdGg9IjYwMCI+IAoKWyFbR2l0SHViIFdvcmtmbG93IFN0YXR1c10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvYWN0aW9ucy93b3JrZmxvdy9zdGF0dXMvbWljcm9ja3MvbWljcm9ja3MvYnVpbGQtdmVyaWZ5LnltbD9sb2dvPWdpdGh1YiZzdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3JvY2tzL21pY3JvY2tzL2FjdGlvbnMpClshW0NvbnRhaW5lcl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9keW5hbWljL2pzb24/Y29sb3I9Ymx1ZXZpb2xldCZsb2dvPWRvY2tlciZzdHlsZT1mb3ItdGhlLWJhZGdlJmxhYmVsPVF1YXkuaW8mcXVlcnk9dGFnc1sxXS5uYW1lJnVybD1odHRwczovL3F1YXkuaW8vYXBpL3YxL3JlcG9zaXRvcnkvbWljcm9ja3MvbWljcm9ja3MvdGFnLz9saW1pdD0xMCZwYWdlPTEmb25seUFjdGl2ZVRhZ3M9dHJ1ZSldKGh0dHBzOi8vcXVheS5pby9yZXBvc2l0b3J5L21pY3JvY2tzL21pY3JvY2tzP3RhYj10YWdzKQpbIVtWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLWNlbnRyYWwvdi9pby5naXRodWIubWljcm9ja3MvbWljcm9ja3M/Y29sb3I9Ymx1ZSZzdHlsZT1mb3ItdGhlLWJhZGdlKV0oKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9hcnRpZmFjdC9pby5naXRodWIubWljcm9ja3MvbWljcm9ja3MpKQpbIVtMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL21pY3JvY2tzL21pY3JvY2tzP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1hcGFjaGUpXShodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wKQpbIVtQcm9qZWN0IENoYXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGlzY29yZC1taWNyb2Nrcy1waW5rLnN2Zz9jb2xvcj03Mjg5ZGEmc3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPWRpc2NvcmQpXShodHRwczovL21pY3JvY2tzLmlvL2Rpc2NvcmQtaW52aXRlLykKWyFbQXJ0aWZhY3QgSFVCXShodHRwczovL2ltZy5zaGllbGRzLmlvL2VuZHBvaW50P3VybD1odHRwczovL2FydGlmYWN0aHViLmlvL2JhZGdlL3JlcG9zaXRvcnkvbWljcm9ja3Mmc3R5bGU9Zm9yLXRoZS1iYWRnZSldKGh0dHBzOi8vYXJ0aWZhY3RodWIuaW8vcGFja2FnZXMvc2VhcmNoP3JlcG89bWljcm9ja3MpClshW0NOQ0YgTGFuZHNjYXBlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0NOQ0YlMjBMYW5kc2NhcGUtNTY5OUM2P3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1jbmNmKV0oaHR0cHM6Ly9sYW5kc2NhcGUuY25jZi5pby8/aXRlbT1hcHAtZGVmaW5pdGlvbi1hbmQtZGV2ZWxvcG1lbnQtLWFwcGxpY2F0aW9uLWRlZmluaXRpb24taW1hZ2UtYnVpbGQtLW1pY3JvY2tzKQoKIyBNaWNyb2NrcyAtIEt1YmVybmV0ZXMgbmF0aXZlIHRvb2wgZm9yIEFQSSBNb2NraW5nICYgVGVzdGluZwoKTWljcm9ja3MgaXMgYSBwbGF0Zm9ybSBmb3IgdHVybmluZyB5b3VyIEFQSSBhbmQgbWljcm9zZXJ2aWNlcyBhc3NldHMgLSAqT3BlbkFQSSBzcGVjcyosICpBc3luY0FQSSBzcGVjcyosICpnUlBDIHByb3RvYnVmKiwgKkdyYXBoUUwgc2NoZW1hKiwgKlBvc3RtYW4gY29sbGVjdGlvbnMqLCAqU29hcFVJIHByb2plY3RzKiAtIGludG8gbGl2ZSBtb2NrcyBpbiBzZWNvbmRzLgoKSXQgYWxzbyByZXVzZXMgdGhlc2UgYXNzZXRzIHRvIHJ1biBjb250cmFjdCBjb25mb3JtYW5jZSBhbmQgbm9uLXJlZ3Jlc3Npb24gdGVzdHMgYWdhaW5zdCB5b3VyIEFQSSBpbXBsZW1lbnRhdGlvbi4gV2UgcHJvdmlkZSBpbnRlZ3JhdGlvbnMgd2l0aCAqSmVua2lucyosICpHaXRIdWIgQWN0aW9ucyosICpUZWt0b24qIGFuZCBtYW55IG90aGVycyB0aHJvdWdoIGEgc2ltcGxlIENMSS4KClshW0xGWCBIZWFsdGggU2NvcmVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vc3RhdGljL3YxP2xhYmVsPUhlYWx0aCUyMFNjb3JlJm1lc3NhZ2U9SGVhbHRoeSZjb2xvcj1BN0YzRDAmbG9nbz1saW51eGZvdW5kYXRpb24mbG9nb0NvbG9yPXdoaXRlJnN0eWxlPWZsYXQpXShodHRwczovL2luc2lnaHRzLmxpbnV4Zm91bmRhdGlvbi5vcmcvcHJvamVjdC9taWNyb2Nrcy9yZXBvc2l0b3J5L21pY3JvY2tzLW1pY3JvY2tzKSBbIVtMRlggQ29udHJpYnV0b3JzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YXRpYy92MT9sYWJlbD1Db250cmlidXRvcnMmbWVzc2FnZT03NjEmY29sb3I9MDA5NEZGJmxvZ289bGludXhmb3VuZGF0aW9uJmxvZ29Db2xvcj13aGl0ZSZzdHlsZT1mbGF0KV0oaHR0cHM6Ly9pbnNpZ2h0cy5saW51eGZvdW5kYXRpb24ub3JnL3Byb2plY3QvbWljcm9ja3MvcmVwb3NpdG9yeS9taWNyb2Nrcy1taWNyb2NrcykgWyFbTEZYIEFjdGl2ZSBDb250cmlidXRvcnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vc3RhdGljL3YxP2xhYmVsPUFjdGl2ZSUyMGNvbnRyaWJ1dG9ycyUyMCgxWSkmbWVzc2FnZT0yMDgmY29sb3I9MDA5NEZGJmxvZ289bGludXhmb3VuZGF0aW9uJmxvZ29Db2xvcj13aGl0ZSZzdHlsZT1mbGF0KV0oaHR0cHM6Ly9pbnNpZ2h0cy5saW51eGZvdW5kYXRpb24ub3JnL3Byb2plY3QvbWljcm9ja3MvcmVwb3NpdG9yeS9taWNyb2Nrcy1taWNyb2NrcykKCiMjIEdldHRpbmcgU3RhcnRlZAoKKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9taWNyb2Nrcy5pby9kb2N1bWVudGF0aW9uL3R1dG9yaWFscy9nZXR0aW5nLXN0YXJ0ZWQvKQoqIFtNaWNyb2NrcyBDb21tdW5pdHldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb2Nrcy9jb21tdW5pdHkpIGFuZCBjb21tdW5pdHkgbWVldGluZwoKVG8gZ2V0IGludm9sdmVkIHdpdGggb3VyIGNvbW11bml0eSwgcGxlYXNlIGZhbWlsaWFyaXplIHlvdXJzZWxmIHdpdGggdGhlIHByb2plY3QncyBbQ29kZSBvZiBDb25kdWN0XSguL0NPREVfT0ZfQ09ORFVDVC5tZCkuCgojIyBCdWlsZCBTdGF0dXMKClRoZSBjdXJyZW50IGRldmVsb3BtZW50IHZlcnNpb24gaXMgYDEuMTMuMy1TTkFQU0hPVGAgb24gYnJhbmNoIGAxLjEzLnhgLiAKClshW0dpdEh1YiBXb3JrZmxvdyBTdGF0dXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL21pY3JvY2tzL21pY3JvY2tzL2J1aWxkLXZlcmlmeS55bWw/YnJhbmNoPTEuMTEueCZsb2dvPWdpdGh1YiZzdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3JvY2tzL21pY3JvY2tzL2FjdGlvbnMpCgojIyMjIFNvbmFyY2xvdWQgUXVhbGl0eSBtZXRyaWNzCgpbIVtDb2RlIFNtZWxsc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9bWljcm9ja3NfbWljcm9ja3MmbWV0cmljPWNvZGVfc21lbGxzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9bWljcm9ja3NfbWljcm9ja3MpClshW1JlbGlhYmlsaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9bWljcm9ja3NfbWljcm9ja3MmbWV0cmljPXJlbGlhYmlsaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPW1pY3JvY2tzX21pY3JvY2tzKQpbIVtCdWdzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1taWNyb2Nrc19taWNyb2NrcyZtZXRyaWM9YnVncyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPW1pY3JvY2tzX21pY3JvY2tzKQpbIVtDb3ZlcmFnZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9bWljcm9ja3NfbWljcm9ja3MmbWV0cmljPWNvdmVyYWdlKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9bWljcm9ja3NfbWljcm9ja3MpClshW1RlY2huaWNhbCBEZWJ0XShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1taWNyb2Nrc19taWNyb2NrcyZtZXRyaWM9c3FhbGVfaW5kZXgpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1taWNyb2Nrc19taWNyb2NrcykKWyFbU2VjdXJpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1taWNyb2Nrc19taWNyb2NrcyZtZXRyaWM9c2VjdXJpdHlfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9bWljcm9ja3NfbWljcm9ja3MpClshW01haW50YWluYWJpbGl0eSBSYXRpbmddKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PW1pY3JvY2tzX21pY3JvY2tzJm1ldHJpYz1zcWFsZV9yYXRpbmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1taWNyb2Nrc19taWNyb2NrcykKCiMjIyMgRm9zc2EgbGljZW5zZSBhbmQgc2VjdXJpdHkgc2NhbnMKClshW0ZPU1NBIFN0YXR1c10oaHR0cHM6Ly9hcHAuZm9zc2EuY29tL2FwaS9wcm9qZWN0cy9naXQlMkJnaXRodWIuY29tJTJGbWljcm9ja3MlMkZtaWNyb2Nrcy5zdmc/dHlwZT1zaGllbGQmaXNzdWVUeXBlPWxpY2Vuc2UpXShodHRwczovL2FwcC5mb3NzYS5jb20vcHJvamVjdHMvZ2l0JTJCZ2l0aHViLmNvbSUyRm1pY3JvY2tzJTJGbWljcm9ja3M/cmVmPWJhZGdlX3NoaWVsZCZpc3N1ZVR5cGU9bGljZW5zZSkKWyFbRk9TU0EgU3RhdHVzXShodHRwczovL2FwcC5mb3NzYS5jb20vYXBpL3Byb2plY3RzL2dpdCUyQmdpdGh1Yi5jb20lMkZtaWNyb2NrcyUyRm1pY3JvY2tzLnN2Zz90eXBlPXNoaWVsZCZpc3N1ZVR5cGU9c2VjdXJpdHkpXShodHRwczovL2FwcC5mb3NzYS5jb20vcHJvamVjdHMvZ2l0JTJCZ2l0aHViLmNvbSUyRm1pY3JvY2tzJTJGbWljcm9ja3M/cmVmPWJhZGdlX3NoaWVsZCZpc3N1ZVR5cGU9c2VjdXJpdHkpClshW0ZPU1NBIFN0YXR1c10oaHR0cHM6Ly9hcHAuZm9zc2EuY29tL2FwaS9wcm9qZWN0cy9naXQlMkJnaXRodWIuY29tJTJGbWljcm9ja3MlMkZtaWNyb2Nrcy5zdmc/dHlwZT1zbWFsbCldKGh0dHBzOi8vYXBwLmZvc3NhLmNvbS9wcm9qZWN0cy9naXQlMkJnaXRodWIuY29tJTJGbWljcm9ja3MlMkZtaWNyb2Nrcz9yZWY9YmFkZ2Vfc21hbGwpCgojIyMjIFNpZ25hdHVyZSwgUHJvdmVuYW5jZSwgU0JPTQoKWyFbU3RhdGljIEJhZGdlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3N1cHBseV9jaGFpbi1kb2N1bWVudGF0aW9uLWJsdWU/bG9nbz1zZWN1cml0eXNjb3JlY2FyZCZsYWJlbD1TdXBwbHklMjBDaGFpbiZsaW5rPWh0dHBzJTNBJTJGJTJGbWljcm9ja3MuaW8lMkZkb2N1bWVudGF0aW9uJTJGcmVmZXJlbmNlcyUyRmNvbnRhaW5lci1pbWFnZXMlMjNzb2Z0d2FyZS1zdXBwbHktY2hhaW4tc2VjdXJpdHkpXShodHRwczovL21pY3JvY2tzLmlvL2RvY3VtZW50YXRpb24vcmVmZXJlbmNlcy9jb250YWluZXItaW1hZ2VzI3NvZnR3YXJlLXN1cHBseS1jaGFpbi1zZWN1cml0eSkKCiMjIyMgT3BlblNTRiBiZXN0IHByYWN0aWNlcwoKWyFbQ0lJIEJlc3QgUHJhY3RpY2VzXShodHRwczovL2Jlc3RwcmFjdGljZXMuY29yZWluZnJhc3RydWN0dXJlLm9yZy9wcm9qZWN0cy83NTEzL2JhZGdlKV0oaHR0cHM6Ly9iZXN0cHJhY3RpY2VzLmNvcmVpbmZyYXN0cnVjdHVyZS5vcmcvcHJvamVjdHMvNzUxMykKWyFbT3BlblNTRiBTY29yZWNhcmRdKGh0dHBzOi8vYXBpLnNlY3VyaXR5c2NvcmVjYXJkcy5kZXYvcHJvamVjdHMvZ2l0aHViLmNvbS9taWNyb2Nrcy9taWNyb2Nrcy9iYWRnZSldKGh0dHBzOi8vc2VjdXJpdHlzY29yZWNhcmRzLmRldi92aWV3ZXIvP3VyaT1naXRodWIuY29tL21pY3JvY2tzL21pY3JvY2tzKQoKCiMjIFZlcnNpb25zCgpIZXJlIGFyZSB0aGUgbmFtaW5nIGNvbnZlbnRpb25zIHdlJ3JlIHVzaW5nIGZvciBjdXJyZW50IHJlbGVhc2VzLCBvbmdvaW5nIGRldmVsb3BtZW50IG1haW50ZW5hbmNlIGFjdGl2aXRpZXMuCgp8IFN0YXR1cyAgICAgIHwgVmVyc2lvbiAgICAgICAgICAgfCBCcmFuY2ggICB8IENvbnRhaW5lciBpbWFnZXMgdGFncyB8CnwgLS0tLS0tLS0tLS0gfC0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBTdGFibGUgICAgICB8IGAxLjEzLjJgICAgICAgICAgIHwgYG1hc3RlcmAgfCBgMS4xMy4yYCwgYGxhdGVzdGAgICAgfAp8IERldiAgICAgICAgIHwgYDEuMTMuMy1TTkFQU0hPVGAgfCBgMS4xMy54YCB8IGBuaWdodGx5YCAgICAgICAgICAgICB8CnwgTWFpbnRlbmFuY2UgfCBgMS4xMi4yLVNOQVBTSE9UYCB8IGAxLjEyLnhgIHwgYG1haW50ZW5hbmNlYCAgICAgICAgIHwKCkhhdmUgYSBsb29rIGF0IG91ciBbdGVzdGVkIGNvbmZpZ3VyYXRpb25zXShURVNURURfQ09ORklHVVJBVElPTlMubWQpIHRvIGtub3cgbW9yZSBhYm91dCB0aGUgdmVyc2lvbnMgb2YgZGVwZW5kZW5jaWVzIAphbmQgaW50ZWdyYXRpb25zIHRoYXQgd2UgYXJlIHVzaW5nIGZvciBkZXZlbG9wbWVudCBhbmQgdGVzdGluZy4KCiMjIEhvdyB0byBidWlsZCBNaWNyb2NrcwoKVGhlIGJ1aWxkIGluc3RydWN0aW9ucyBhcmUgYXZhaWxhYmxlIGluIHRoZSBbYnVpbGRpbmcgZ3VpZGVdKEJVSUxESU5HLm1kKS4KCiMjIFRoYW5rcyB0byB0aGUgY29tbXVuaXR5IQoKWyFbU3RhcmdhemVycyByZXBvIHJvc3RlciBmb3IgQG1pY3JvY2tzL21pY3JvY2tzXShodHRwOi8vcmVwb3Jvc3Rlci5jb20vc3RhcnMvbWljcm9ja3MvbWljcm9ja3MpXShodHRwOi8vZ2l0aHViLmNvbS9taWNyb2Nrcy9taWNyb2Nrcy9zdGFyZ2F6ZXJzKQpbIVtGb3JrZXJzIHJlcG8gcm9zdGVyIGZvciBAbWljcm9ja3MvbWljcm9ja3NdKGh0dHA6Ly9yZXBvcm9zdGVyLmNvbS9mb3Jrcy9taWNyb2Nrcy9taWNyb2NrcyldKGh0dHA6Ly9naXRodWIuY29tL21pY3JvY2tzL21pY3JvY2tzL25ldHdvcmsvbWVtYmVycykK readmeEtag: '"58cdcc7aa20743b1d9324902a023fd73ac38d086"' readmeLastModified: Thu, 08 Jan 2026 08:04:35 GMT repositoryId: 31214867 description: >- 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: '2026-02-05T03:48:23Z' language: Java archived: false stars: 1798 watchers: 18 forks: 312 owner: microcks logo: https://avatars.githubusercontent.com/u/11051048?v=4 license: Apache-2.0 repoEtag: '"f7b98eacd56020c6da6da9def3a0bb25cbf1cec5102c897f823a87e5aaf7324d"' repoLastModified: Thu, 05 Feb 2026 03:48:23 GMT foundInMaster: true id: 1c0e918b5a733b0f1726199e3ea101d6 - source: https://openapi.tools/ name: OpenAPI Mocker category: - Mock - Parsers language: nodejs link: https://www.npmjs.com/package/open-api-mocker repository: https://github.com/jormaechea/open-api-mocker source_description: >- Standalone nodejs based OpenAPI 3 mock server, docker-friendly with request validation and autoreload. v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIE1vY2tlcgoKIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9qb3JtYWVjaGVhL29wZW4tYXBpLW1vY2tlci93b3JrZmxvd3MvYnVpbGQvYmFkZ2Uuc3ZnKQpbIVtucG0gdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL29wZW4tYXBpLW1vY2tlci5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vcGVuLWFwaS1tb2NrZXIpClshW01haW50YWluYWJpbGl0eV0oaHR0cHM6Ly9hcGkuY29kZWNsaW1hdGUuY29tL3YxL2JhZGdlcy83OWY2ZWNhN2VhM2Y4ZmU1NTRjMi9tYWludGFpbmFiaWxpdHkpXShodHRwczovL2NvZGVjbGltYXRlLmNvbS9naXRodWIvam9ybWFlY2hlYS9vcGVuLWFwaS1tb2NrZXIvbWFpbnRhaW5hYmlsaXR5KQpbIVtUZXN0IENvdmVyYWdlXShodHRwczovL2FwaS5jb2RlY2xpbWF0ZS5jb20vdjEvYmFkZ2VzLzc5ZjZlY2E3ZWEzZjhmZTU1NGMyL3Rlc3RfY292ZXJhZ2UpXShodHRwczovL2NvZGVjbGltYXRlLmNvbS9naXRodWIvam9ybWFlY2hlYS9vcGVuLWFwaS1tb2NrZXIvdGVzdF9jb3ZlcmFnZSkKWyFbRG9ja2VyIGNvbXBhdGlibGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZG9ja2VyLWNvbXBhdGlibGUtZ3JlZW4pXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3JlcG9zaXRvcnkvZG9ja2VyL2pvcm1hZWNoZWEvb3Blbi1hcGktbW9ja2VyKQoKQW4gQVBJIG1vY2tlciBiYXNlZCBpbiB0aGUgT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbi4KCiMjIEluc3RhbGxhdGlvbiBhbmQgdXNhZ2UKCiMjIyBVc2luZyBucG0KCmBgYApucG0gaSAtZyBvcGVuLWFwaS1tb2NrZXIKCm9wZW4tYXBpLW1vY2tlciAtcyBteS1zY2hlbWEuanNvbiAtdwoKb3Blbi1hcGktbW9ja2VyIC0taGVscCAjIFRvIHByb21wdCBldmVyeSBhdmFpbGFibGUgc2V0dGluZy4KYGBgCgojIyMgVXNpbmcgZG9ja2VyCgpgYGAKZG9ja2VyIHJ1biAtdiAiJFBXRC9teXNjaGVtYS5qc29uOi9hcHAvc2NoZW1hLmpzb24iIC1wICI1MDAwOjUwMDAiIGpvcm1hZWNoZWEvb3Blbi1hcGktbW9ja2VyCmBgYAoKT3IgdG8gcnVuIGFuIHNwZWNpZmljIHZlcnNpb24KCmBgYApkb2NrZXIgcnVuIC12ICIkUFdEL215c2NoZW1hLmpzb246L2FwcC9zY2hlbWEuanNvbiIgLXAgIjUwMDA6NTAwMCIgam9ybWFlY2hlYS9vcGVuLWFwaS1tb2NrZXI6WC5ZLlpgCmBgYAoKWW91IGNhbiBzZXQgYW55IHBhcmFtZXRlciB3aGVuIHJ1bm5pbmcgaW5zaWRlIGEgZG9ja2VyIGNvbnRhaW5lcgoKYGBgCmRvY2tlciBydW4gLXYgIiRQV0QvbXlzY2hlbWEuanNvbjovYXBwL3NjaGVtYS5qc29uIiAtcCAiMzAwMDozMDAwIiBqb3JtYWVjaGVhL29wZW4tYXBpLW1vY2tlcjpYLlkuWiAtcyAvYXBwL3NjaGVtYS5qc29uIC1wIDMwMDBgCmBgYAoKIyMgQ2FwYWJpbGl0aWVzCgotIFt4XSBSZWFkIHlhbWwgYW5kIGpzb24gT3BlbkFQSSB2MyBzY2hlbWFzLgotIFt4XSBQb3J0IGJpbmRpbmcgc2VsZWN0aW9uCi0gW3hdIFJlcXVlc3QgcGFyYW1ldGVycyB2YWxpZGF0aW9uCi0gW3hdIFJlcXVlc3QgYm9keSB2YWxpZGF0aW9uCi0gW3hdIFJlc3BvbnNlIGJvZHkgYW5kIGhlYWRlcnMgZ2VuZXJhdGlvbiBiYXNlZCBvbiBleGFtcGxlcyBvciBzY2hlbWFzCi0gW3hdIFJlc3BvbnNlIHNlbGVjdGlvbiB1c2luZyByZXF1ZXN0IGhlYWRlcjogYFByZWZlcjogc3RhdHVzQ29kZT1YWFhgIG9yIGBQcmVmZXI6IGV4YW1wbGU9bmFtZWAKLSBbeF0gUmVxdWVzdCBhbmQgcmVzcG9uc2UgbG9nZ2luZwotIFt4XSBTZXJ2ZXJzIGJhc2VwYXRoIHN1cHBvcnQKLSBbeF0gU3VwcG9ydCB4LWZha2VyIGFuZCB4LWNvdW50IGV4dGVuc2lvbiBtZXRob2RzIHRvIGN1c3RvbWlzZSBnZW5lcmF0ZWQgcmVzcG9uc2VzCi0gWyBdIEFQSSBBdXRoZW50aWNhdGlvbgoKIyMgQ3VzdG9taXppbmcgR2VuZXJhdGVkIFJlc3BvbnNlcwpUaGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGFsbG93cyBjdXN0b20gcHJvcGVydGllcyB0byBiZSBhZGRlZCB0byBhbiBBUEkgZGVmaW5pdGlvbiBpbiB0aGUgZm9ybSBvZiBfeC0qXy4KT3BlbkFQSSBNb2NrZXIgc3VwcG9ydHMgdGhlIHVzZSBvZiB0d28gY3VzdG9tIGV4dGVuc2lvbnMgdG8gYWxsb3cgZGF0YSB0byBiZSByYW5kb21pc2VkIHdoaWNoIHNob3VsZCBhbGxvdyBmb3IgbW9yZQpyZWFsaXN0aWMgbG9va2luZyBkYXRhIHdoZW4gZGV2ZWxvcGluZyBhIFVJIGFnYWluc3QgYSBtb2NrIEFQSSBmb3IgaW5zdGFuY2UuCgojIyMgeC1mYWtlcgpUaGUgX3gtZmFrZXJfIGV4dGVuc2lvbiBpcyB2YWxpZCBmb3IgdXNlIG9uIHByb3BlcnRpZXMgdGhhdCBoYXZlIGEgcHJpbWl0aXZlIHR5cGUgKGUuZy4gYHN0cmluZ2AvYGludGVnZXJgLCBldGMuKQphbmQgY2FuIGJlIHVzZWQgd2l0aGluIGFuIEFQSSBkZWZpbml0aW9uIHRvIHVzZSBvbmUgb3IgbW9yZSBtZXRob2RzIGZyb20gdGhlIGNvbW11bml0eSBtYW50YWluZWQKW0Zha2VyXShodHRwczovL2Zha2VyanMuZGV2LykgbGlicmFyeSBmb3IgZ2VuZXJhdGluZyByYW5kb20gZGF0YS4KCkdpdmVuIHRoZSBmb2xsb3dpbmcgQVBJIGRlZmluaXRpb246CmBgYHlhbWwKb3BlbmFwaTogJzMuMC4yJwppbmZvOgogIHRpdGxlOiBDYXRzCiAgdmVyc2lvbjogJzEuMCcKc2VydmVyczoKICAtIHVybDogaHR0cHM6Ly9hcGkuY2F0cy50ZXN0L3YxCnBhdGhzOgogIC9jYXQ6CiAgICBnZXQ6CiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBPSwogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZToKICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgICB4LWZha2VyOiBwZXJzb24uZmlyc3ROYW1lCiAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICAgIHgtZmFrZXI6IHBlcnNvbi5sYXN0TmFtZQogICAgICAgICAgICAgICAgICBmdWxsTmFtZToKICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgICB4LWZha2VyOiAne3twZXJzb24uZmlyc3ROYW1lfX0ge3twZXJzb24ubGFzdE5hbWV9fScKICAgICAgICAgICAgICAgICAgYWdlOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICAgIHgtZmFrZXI6ICdudW1iZXIuaW50KHsgIm1pbiI6IDEsICJtYXgiOiAyMCB9KScKCmBgYAoKQSBKU09OIHJlc3BvbnNlIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZyB3b3VsZCBiZSBwcm9kdWNlZDoKYGBgSlNPTgp7CiAgICAiZmlyc3ROYW1lIjogIlRlZCIsCiAgICAibGFzdE5hbWUiOiAiS296ZXkiLAogICAgImZ1bGxOYW1lIjogIkhlcmJlcnQgTG93ZSIsCiAgICAiYWdlIjogMTIKfQpgYGAKClRoZSBfeC1mYWtlcl8gZXh0ZW5zaW9uIGFjY2VwdHMgdmFsdWVzIGluIDMgZm9ybXM6CjEuIF9mYWtlck5hbWVzcGFjZS5tZXRob2RfLiBlLmcuIGBzdHJpbmcudXVpZGAKMi4gX2Zha2VyTmFtZXNwYWNlLm1ldGhvZCh7ICJtZXRob2RBcmdzIjogImluIiwgImpzb24iOiAiZm9ybWF0IiB9KV8uIGUuZy4gYG51bWJlci5pbnQoeyAibWF4IjogMTAwIH0pYAozLiBBIG11c3RhY2hlIHRlbXBsYXRlIHN0cmluZyBtYWtpbmcgdXNlIG9mIHRoZSAyIGZvcm1zIGFib3ZlLiBlLmcuIGBNeSBuYW1lIGlzIHt7cGVyc29uLmZpcnN0TmFtZX19IHt7cGVyc29uLmxhc3ROYW1lfX1gCgoqTk9URSo6IFRvIGF2b2lkIG5ldyBmYWtlIGRhdGEgZnJvbSBiZWluZyBnZW5lcmF0ZWQgb24gZXZlcnkgY2FsbCwgdXAgdG8gMTAgcmVzcG9uc2VzIHBlciBlbmRwb2ludCBhcmUgY2FjaGVkCmJhc2VkIG9uIHRoZSBpbmNvbWluZyBxdWVyeSBzdHJpbmcsIHJlcXVlc3QgYm9keSBhbmQgaGVhZGVycy4KCiMjIyB4LWNvdW50ClRoZSBfeC1jb3VudF8gZXh0ZW5zaW9uIGhhcyBlZmZlY3Qgb25seSB3aGVuIHVzZWQgb24gYW4gYGFycmF5YCB0eXBlIHByb3BlcnR5LgpJZiBlbmNvdW50ZXJlZCwgT3BlbkFQSSBNb2NrZXIgd2lsbCByZXR1cm4gYW4gYXJyYXkgd2l0aCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGVsZW1lbnRzIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgb2YgYW4KYXJyYXkgd2l0aCBhIHNpbmdsZSBpdGVtLgoKRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgQVBJIGRlZmluaXRpb246CmBgYHlhbWwKb3BlbmFwaTogJzMuMC4yJwppbmZvOgogIHRpdGxlOiBDYXRzCiAgdmVyc2lvbjogJzEuMCcKc2VydmVyczoKICAtIHVybDogaHR0cHM6Ly9hcGkuY2F0cy50ZXN0L3YxCnBhdGhzOgogIC9jYXQ6CiAgICBnZXQ6CiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBPSwogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICB0eXBlOiBhcnJheQogICAgICAgICAgICAgICAgeC1jb3VudDogNQogICAgICAgICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwpgYGAKCldpbGwgcHJvZHVjZSB0aGUgZm9sbG93aW5nIHJlc3BvbnNlOgpgYGBKU09OClsKICAgICJzdHJpbmciLAogICAgInN0cmluZyIsCiAgICAic3RyaW5nIiwKICAgICJzdHJpbmciLAogICAgInN0cmluZyIKXQpgYGAKCiMjIEFkdmFuY2VkIHVzYWdlCgpTZWUgdGhlIFthZHZhbmNlZCB1c2FnZSBkb2NzXShkb2NzL1JFQURNRS5tZCkgdG8gZXh0ZW5kIG9yIGJ1aWxkIHlvdXIgb3duIGFwcCB1cG9uIE9wZW5BUEkgTW9ja2VyLgoKIyMgVGVzdHMKClNpbXBseSBydW4gYG5wbSB0YAoKIyMgQ29udHJpYnV0aW5nCgpJc3N1ZXMgYW5kIFBScyBhcmUgd2VsY29tZS4K readmeEtag: '"e4336bc8f8f199bdf64e37116044d8f822da68ef"' readmeLastModified: Tue, 30 May 2023 23:48:16 GMT repositoryId: 193262126 description: A mock server based in OpenAPI Specification created: '2019-06-22T17:38:08Z' updated: '2025-11-05T23:21:40Z' language: JavaScript archived: false stars: 126 watchers: 4 forks: 34 owner: jormaechea logo: https://avatars.githubusercontent.com/u/5612500?v=4 license: MIT repoEtag: '"17ff34a9a5e2caa911a5a5d588592041315011cdbd230609d107b4e992535493"' repoLastModified: Wed, 05 Nov 2025 23:21:40 GMT foundInMaster: true id: 025e0dafdc92cfc32c40f410a4c333b7 - source: https://openapi.tools/ name: Wiremock category: - Mock - Testing - Data Validators - Documentation language: SaaS link: https://www.wiremock.io/product repository: https://www.wiremock.io/product source_description: >- WireMock Cloud is a managed, hosted version of WireMock, developed by the same team who wrote the open-source project. It is built on the same technology that powers open source WireMock and is 100% compatible with the WireMock API, with additional features that make it quick and easy to mock any API you depend on. WireMock Cloud also introduces advanced capabilities such as chaos engineering, OpenAPI generation, validation and documentation as well as better collaboration and user management. v2: true v3: true v3_1: true id: f6eb4e8c5fd7bad5d57f440b0ae64ae1 foundInMaster: true - source: https://openapi.tools/ name: Fakeit category: - Mock - Parsers language: - cli - Docker link: https://github.com/justinfeng/fakeit repository: https://github.com/justinfeng/fakeit source_description: >- Create mock server from OpenAPI 3 specification with random response generation and request validation. v3: true repositoryMetadata: base64Readme: >- IyBGYWtlaXQKCltGdWt1b2thIFJ1YnkgQXdhcmQgLSBTcGVjaWFsIEF3YXJkXShodHRwczovL3d3dy5kaWdpdGFsZnVrdW9rYS5qcC9ldmVudF9yZXBvcnRzLzIxP2xvY2FsZT1qYSkKClshW0NpcmNsZUNJXShodHRwczovL2ltZy5zaGllbGRzLmlvL2NpcmNsZWNpL2J1aWxkL2dpdGh1Yi9KdXN0aW5GZW5nL2Zha2VpdC5zdmcpXShodHRwczovL2NpcmNsZWNpLmNvbS9naC9KdXN0aW5GZW5nL2Zha2VpdCkKWyFbQ29kZSBDbGltYXRlIG1haW50YWluYWJpbGl0eV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jb2RlY2xpbWF0ZS9tYWludGFpbmFiaWxpdHkvSnVzdGluRmVuZy9mYWtlaXQuc3ZnKV0oaHR0cHM6Ly9jb2RlY2xpbWF0ZS5jb20vZ2l0aHViL0p1c3RpbkZlbmcvZmFrZWl0KQpbIVtHZW1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2VtL3YvZmFrZWl0LnN2ZyldKGh0dHBzOi8vcnVieWdlbXMub3JnL2dlbXMvZmFrZWl0KQpbIVtHZW1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2VtL2R0L2Zha2VpdC5zdmcpXShodHRwczovL3J1YnlnZW1zLm9yZy9nZW1zL2Zha2VpdCkKWyFbRG9ja2VyIFB1bGxzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2RvY2tlci9wdWxscy9yZWFsZmVuZ2ppYS9mYWtlaXQuc3ZnKV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL3JlYWxmZW5namlhL2Zha2VpdCkKWyFbR2l0SHViXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL0p1c3RpbkZlbmcvZmFrZWl0LnN2ZyldKGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKQoKQ3JlYXRlIG1vY2sgc2VydmVyIGZyb20gT3BlbmFwaSBzcGVjaWZpY2F0aW9uCgojIyBNb3RpdmF0aW9uCgpPcGVuYXBpIG1vY2sgc2VydmVyIGlzIG9uZSBvZiBjb3JlIGNvbXBvbmVudHMgdG8gc3VwcG9ydCBjb250cmFjdCBiYXNlZCBkZXZlbG9wbWVudCBhbmQgdGVzdGluZy4gQXMgcGFydCBvZiBvdXIgam91cm5hbCwgc2V2ZXJhbCBrZXkgcmVxdWlyZW1lbnRzIGZvciBzdWNoIG1vY2sgc2VydmVyIGhhdmUgYmVlbiBpZGVudGlmaWVkOgoKKiBDb250cm9sIHJlc3BvbnNlIGdlbmVyYXRpb24gaW4gbm9uIGludHJ1c2l2ZSBtYW5uZXIuIGkuZS4gd2l0aG91dCBtb2RpZnlpbmcgZXhhbXBsZSBpbiBjb250cmFjdAoqIFJhbmRvbWx5IGdlbmVyYXRlZCByZXNwb25zZSB0byBzdXBwb3J0IHByb3BlcnR5IGJhc2VkIHRlc3RpbmcKKiBGdWxmaWxsIHByb3BlcnR5IHJlZmVyZW5jZSBpbiByZXNwb25zZSBnZW5lcmF0aW9uIHRvIHN1cHBvcnQgZGV2ZWxvcG1lbnQgYWdhaW5zdCBjb250cmFjdC4gaS5lLiByZWdhcmRpbmcgdGhlIGZvbGxvd2luZyByZXNwb25zZSwgZ3VhcmFudGVlIHRoZSBgc2VsZWN0ZWRJZGAgcHJvcGVydHkgaXMgYWx3YXlzIGEgdmFsaWQgYGlkYCBpbiB0aGUgaXRlbXMKYGBganNvbgp7CiAgInNlbGVjdGVkSWQiOiAxLAogICJpdGVtcyI6IFsKICAgIHsgImlkIjogMSB9LAogICAgeyAiaWQiOiAyIH0KICBdCn0KYGBgCgpBZnRlciB0cmllZCBzZXZlcmFsIGV4aXN0aW5nIG9wdGlvbnMsIHdlIGNhbm5vdCBmaW5kIGEgYmVzdCBzb2x1dGlvbiB0byBtZWV0IGFsbCB0aGUgcmVxdWlyZW1lbnRzLiBTbyB3ZSBlbmQgdXAgd2l0aCBfX0Zha2VpdF9fLgoKIyMgRmVhdHVyZXMKCiogUmFuZG9tbHkgb3Igc3RhdGljYWxseSBnZW5lcmF0ZWQgcmVzcG9uc2UgKGBhcHBsaWNhdGlvbi8uKmpzb25gKQoqIFJlcXVlc3QgdmFsaWRhdGlvbiAoYGFwcGxpY2F0aW9uLy4qanNvbmAsIGBtdWx0aXBhcnQvZm9ybS1kYXRhYCkKKiBMb2FkIHNwZWNpZmljYXRpb24gZnJvbSBsb2NhbCBvciByZW1vdGUKKiBTdXBwb3J0IGhvdCByZWxvYWQgbG9jYWwgc3BlY2lmaWNhdGlvbgoqIFN1cHBvcnQgc3BlY2lmaWNhdGlvbiBpbiB5YW1sIG9yIGpzb24gZm9ybWF0CiogW0V4cGVyaW1lbnRhbF0gU3VwcG9ydCBwbGFpbiB0ZXh0IGFuZCBiaW5hcnkgcmVzcG9uc2UsIGUuZy4gYGFwcGxpY2F0aW9uL3BkZmAKCiMjIEluc3RhbGxhdGlvbgoKSW5zdGFsbCBpdCB3aXRoOgoKICAgICQgZ2VtIGluc3RhbGwgZmFrZWl0CgpPciB1c2UgdGhlIFtkb2NrZXIgaW1hZ2VdKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9yZWFsZmVuZ2ppYS9mYWtlaXQpCgojIyBVc2FnZQoKICAgICQgZmFrZWl0IC0tc3BlYyA8TG9jYWwgZmlsZSBvciByZW1vdGUgdXJsPgoKIyMjIENvbW1hbmQgbGluZSBvcHRpb25zCgogICAgJCBmYWtlaXQgLS1oZWxwCiAgICB1c2FnZToKICAgICAgICAtLXNwZWMgICAgICAgICAgICAgICBzcGVjIGZpbGUgdXJpIChyZXF1aXJlZCkKICAgICAgICAtcCwgLS1wb3J0ICAgICAgICAgICBjdXN0b20gcG9ydAogICAgICAgIC1xLCAtLXF1aWV0ICAgICAgICAgIG11dGUgcmVxdWVzdCBhbmQgcmVzcG9uc2UgbG9nCiAgICAgICAgLWwsIC0tbG9nLWZpbGUgICAgICAgcmVkaXJlY3QgbG9nIHRvIGEgZmlsZQogICAgICAgIC0tcGVybWlzc2l2ZSAgICAgICAgIGxvZyB2YWxpZGF0aW9uIGVycm9yIGFzIHdhcm5pbmcgaW5zdGVhZCBvZiBkZW55aW5nIHJlcXVlc3QKICAgICAgICAtLXVzZS1leGFtcGxlICAgICAgICB1c2UgZXhhbXBsZSBwcm92aWRlZCBpbiBzcGVjIGlmIGV4aXN0cwogICAgICAgIC0tc3RhdGljICAgICAgICAgICAgIGdlbmVyYXRlIHN0YXRpYyByZXNwb25zZQogICAgICAgIC0tc3RhdGljLXR5cGVzICAgICAgIGdlbmVyYXRlIHN0YXRpYyB2YWx1ZSBmb3Igc3BlY2lmaWVkIHR5cGVzLCBlLmcuIC0tc3RhdGljLXR5cGVzIGludGVnZXIsc3RyaW5nCiAgICAgICAgLS1zdGF0aWMtcHJvcGVydGllcyAgZ2VuZXJhdGUgc3RhdGljIHZhbHVlIGZvciBzcGVjaWZpZWQgcHJvcGVydGllcywgZS5nLiAtLXN0YXRpYy1wcm9wZXJ0aWVzIGlkLHV1aWQKICAgICAgICAtLWJhc2UtcGF0aCAgICAgICAgICBtb3VudHMgdGhlIG1vY2sgc2VydmVyIGF0IHRoZSBnaXZlbiBwYXRoLCBlLmcuIC0tYmFzZS1wYXRoIC9hcGkKCiAgICBvdGhlciBvcHRpb25zOgogICAgICAgIC12LCAtLXZlcnNpb24KICAgICAgICAtaCwgLS1oZWxwCgoqKk5vdGVzOioqCiogU2VlIFtoZXJlXShkb2NzL3JhbmRvbS5tZCkgZm9yIE9wZW5hcGkgcHJvcGVydGllcyBzdXBwb3J0ZWQgaW4gcmFuZG9tIHJlc3BvbnNlIGdlbmVyYXRpb24KKiBTZWUgW2hlcmVdKGRvY3Mvc3RhdGljLm1kKSBmb3IgZGVmYXVsdCB2YWx1ZSBpbiBzdGF0aWMgcmVzcG9uc2UgZ2VuZXJhdGlvbgoqIFJlZ2FyZGluZyBgLS11c2UtZXhhbXBsZWAgbW9kZSwgcHJvcGVydHkgd2l0aG91dCBleGFtcGxlIHNwZWNpZmllZCB3aWxsIHN0aWxsIGJlIHJhbmRvbWx5IG9yIHN0YXRpY2FsbHkgZ2VuZXJhdGVkCiogUmFuZG9tIHJlc3BvbnNlIGdlbmVyYXRpb24gY2FuIG5vdCBoYW5kbGUgcmVjdXJzaXZlIHNjaGVtYSByZWZlcmVuY2UuIElmIHlvdSBkbyBuZWVkIGl0IGluIHlvdXIgc3BlYyBmaWxlLCBwbGVhc2UgcHJvdmlkZSBgZXhhbXBsZWAgcHJvcGVydHkgZm9yIHRoZSByZWN1cnNpdmUgcGFydCBvZiBzY2hlbWEgYW5kIHNwZWNpZnkgYC0tdXNlLWV4YW1wbGVgIG9wdGlvbi4KCiMjIyBDb25maWd1cmF0aW9uIGVuZHBvaW50CgpNb2NrIHNlcnZlciBiZWhhdmlvdXIgY2FuIGJlIGNoYW5nZWQgb24gdGhlIGZseQoKUmV0cmlldmUgY3VycmVudCBjb25maWc6CgogICAgR0VUIC9fX2Zha2VpdF9jb25maWdfXwoKVXBkYXRlIGNvbmZpZzoKCiAgICBQVVQgL19fZmFrZWl0X2NvbmZpZ19fCgpSZXF1ZXN0IGFuZCByZXNwb25zZToKYGBganNvbgp7CiAgInBlcm1pc3NpdmUiOiBmYWxzZSwKICAidXNlX2V4YW1wbGUiOiB0cnVlLAogICJzdGF0aWMiOiBmYWxzZSwKICAic3RhdGljX3R5cGVzIjogWwogICAgImludGVnZXIiCiAgXSwKICAic3RhdGljX3Byb3BlcnRpZXMiOiBbCiAgICAiaWQiCiAgXSwKICAiYmFzZV9wYXRoIjogIi9hcGkiCn0KYGBgCgojIyBEZXZlbG9wbWVudAoKQWZ0ZXIgY2hlY2tpbmcgb3V0IHRoZSByZXBvLCBydW4gYGJ1bmRsZSBpbnN0YWxsYCB0byBpbnN0YWxsIGRlcGVuZGVuY2llcy4gVGhlbiwgcnVuIGByYWtlYCB0byBydW4gdGhlIHRlc3RzLgoKVG8gaW5zdGFsbCB0aGlzIGdlbSBvbnRvIHlvdXIgbG9jYWwgbWFjaGluZSwgcnVuIGBidW5kbGUgZXhlYyByYWtlIGluc3RhbGxgLgoKVG8gcmVsZWFzZSBhIG5ldyB2ZXJzaW9uLCB1cGRhdGUgdGhlIHZlcnNpb24gbnVtYmVyIGluIGB2ZXJzaW9uLnJiYCwgYW5kIHRoZW4gcnVuIGBidW5kbGUgZXhlYyByYWtlIHJlbGVhc2VgLCB3aGljaCB3aWxsIGNyZWF0ZSBhIGdpdCB0YWcgZm9yIHRoZSB2ZXJzaW9uLCBwdXNoIGdpdCBjb21taXRzIGFuZCB0YWdzLCBhbmQgcHVzaCB0aGUgYC5nZW1gIGZpbGUgdG8gW3J1YnlnZW1zLm9yZ10oaHR0cHM6Ly9ydWJ5Z2Vtcy5vcmcpLgoKIyMgQ29udHJpYnV0aW5nCgpCdWcgcmVwb3J0cyBhbmQgcHVsbCByZXF1ZXN0cyBhcmUgd2VsY29tZSBvbiBHaXRIdWIgYXQgaHR0cHM6Ly9naXRodWIuY29tL0p1c3RpbkZlbmcvZmFrZWl0LgoKIyMgTGljZW5zZQoKVGhlIGdlbSBpcyBhdmFpbGFibGUgYXMgb3BlbiBzb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBbTUlUIExpY2Vuc2VdKGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKS4K readmeEtag: '"527c50eea9720a5f527a8f03d1df652a9162a865"' readmeLastModified: Fri, 02 Aug 2024 01:56:10 GMT repositoryId: 179582526 description: Create mock server from Openapi specification created: '2019-04-04T21:51:59Z' updated: '2025-11-09T08:45:47Z' language: Ruby archived: false stars: 80 watchers: 3 forks: 5 owner: JustinFeng logo: https://avatars.githubusercontent.com/u/1527902?v=4 license: MIT repoEtag: '"ea981a691646f370bf54b830e50aefed08c43ed6bb087b5d24e1b3e59f8e1681"' repoLastModified: Sun, 09 Nov 2025 08:45:47 GMT foundInMaster: true id: 6b67af7dabca973abebd21b956d683e7 - source: https://openapi.tools/ name: Mockintosh category: Mock language: - CLI - Docker link: https://mockintosh.io source_description: > Mocks for CloudNative Environments - Converts OpenAPI files to Mocks and use them to develop in isolated environments and test edge cases, Async call to queues such as Kafka or RabbitMQ or simulate performance & chaos testing v2: true v3: true v3_1: true foundInMaster: true id: c51e06db0cd86207ca6bf9b9a9e781f1 - source: https://openapi.tools/ name: openapi-data-mocker category: - Mock - Parsers language: PHP repository: https://github.com/ybelenko/openapi-data-mocker source_description: > Tiny library to generate basic OpenAPI Data Types. Consider it as extended Faker package. First version able to mock most of the data formats. It doesn't support polymorphism yet, but work in progress. May be useful for writing custom unit tests. v2: false v3: true repositoryMetadata: base64Readme: >- IyBPcGVuYXBpIERhdGEgTW9ja2VyCgpbIVtMYXRlc3QgU3RhYmxlIFZlcnNpb25dKGh0dHBzOi8vcG9zZXIucHVneC5vcmcveWJlbGVua28vb3BlbmFwaS1kYXRhLW1vY2tlci92L3N0YWJsZSldKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy95YmVsZW5rby9vcGVuYXBpLWRhdGEtbW9ja2VyKQpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS95YmVsZW5rby9vcGVuYXBpLWRhdGEtbW9ja2VyL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20veWJlbGVua28vb3BlbmFwaS1kYXRhLW1vY2tlci9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwpClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvZ2l0aHViL3liZWxlbmtvL29wZW5hcGktZGF0YS1tb2NrZXIvYmFkZ2Uuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL2NvdmVyYWxscy5pby9naXRodWIveWJlbGVua28vb3BlbmFwaS1kYXRhLW1vY2tlcj9icmFuY2g9bWFzdGVyKQpbIVtMaWNlbnNlXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL3liZWxlbmtvL29wZW5hcGktZGF0YS1tb2NrZXIvbGljZW5zZSldKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy95YmVsZW5rby9vcGVuYXBpLWRhdGEtbW9ja2VyKQoKT3BlbmFwaSBEYXRhIE1vY2tlciBoZWxwcyB0byBnZW5lcmF0ZSBmYWtlIGRhdGEgZnJvbSBPcGVuQVBJIDMuMCBkb2N1bWVudHMuIE1vc3Qgb2YgdGhlIG1ldGhvZHMgbWF5IHdvcmsgd2l0aCAyLjAgdmVyc2lvbihma2EgU3dhZ2dlciAyLjApLCBidXQgaXQncyBub3QgdGVzdGVkLiBUaGlzIHBhY2thZ2Ugd2FzIGFuIGVuaGFuY2VtZW50IG9mIFBIUCBTbGltNCBzZXJ2ZXIgaW4gW09wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKSBwcm9qZWN0LCBidXQgaXQgZWFzaWVyIHRvIG1haW50YWluIGl0IGluIHNlcGFyYXRlZCByZXBvLgoKIyMgUmVxdWlyZW1lbnRzCi0gUEhQIF43LjMKCl9fSW1wb3J0YW50IG5vdGljZSEgV2hpbGUgUEhQIDguMCBkZWNsYXJlZCBpbiBjb21wb3Nlci5qc29uIHRoaXMgcGFja2FnZSBoYXNuJ3QgYmVlbiB0ZXN0ZWQgYWdhaW5zdCBpdC5fXwoKIyMgSW5zdGFsbGF0aW9uIHZpYSBDb21wb3NlcgoKUnVuIGluIHRlcm1pbmFsOgpgYGBjb25zb2xlCmNvbXBvc2VyIHJlcXVpcmUgeWJlbGVua28vb3BlbmFwaS1kYXRhLW1vY2tlcgpgYGAKCiMjIFVzYWdlIGV4YW1wbGUKCkltYWdpbmUgd2UgaGF2ZSBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uIDMuMC4zIC0gU2NoZW1hIE9iamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjMubWQjc2NoZW1hLW9iamVjdCkgbGlrZSB0aGlzOgpgYGB5YW1sCmRlc2NyaXB0aW9uOiBSZWFsIHdvcmxkIGV4YW1wbGUgc2NoZW1hCnR5cGU6IG9iamVjdApwcm9wZXJ0aWVzOgogIGlkOgogICAgdHlwZTogaW50ZWdlcgogICAgZm9ybWF0OiBpbnQzMgogICAgbWluaW11bTogMQogIHB1cmNoYXNlZF9pdGVtczoKICAgIHR5cGU6IGFycmF5CiAgICBpdGVtczoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgU0tVOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBmb3JtYXQ6IHV1aWQKICAgICAgICAgIG1heExlbmd0aDogMjAKICAgICAgICBxdWFudGl0eToKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIGZvcm1hdDogaW50MzIKICAgICAgICAgIG1pbmltdW06IDEKICAgICAgICAgIG1heGltdW06IDUKICAgICAgICBwcmljZToKICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgY3VycmVuY3k6CiAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgbWluTGVuZ3RoOiAzCiAgICAgICAgICAgICAgbWF4TGVuZ3RoOiAzCiAgICAgICAgICAgICAgZW51bToKICAgICAgICAgICAgICAtIFVTRAogICAgICAgICAgICAgIC0gRVVSCiAgICAgICAgICAgICAgLSBSVUIKICAgICAgICAgICAgdmFsdWU6CiAgICAgICAgICAgICAgdHlwZTogbnVtYmVyCiAgICAgICAgICAgICAgZm9ybWF0OiBmbG9hdAogICAgICAgICAgICAgIG1pbmltdW06IDAuMDEKICAgICAgICAgICAgICBtYXhpbXVtOiA5OS45OQogICAgICAgIG1hbnVmYWN0dXJlcjoKICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgbmFtZToKICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICBtYXhMZW5ndGg6IDMwCiAgICAgICAgICAgIGNvdW50cnk6CiAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgZW51bToKICAgICAgICAgICAgICAtIENITgogICAgICAgICAgICAgIC0gVVNBCiAgICAgICAgICAgICAgLSBSVVMKICBidXllcjoKICAgIHR5cGU6IG9iamVjdAogICAgcHJvcGVydGllczoKICAgICAgZmlyc3RfbmFtZToKICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICBtaW5MZW5ndGg6IDMKICAgICAgICBtYXhMZW5ndGg6IDE1CiAgICAgIGxhc3RfbmFtZToKICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICBtaW5MZW5ndGg6IDMKICAgICAgICBtYXhMZW5ndGg6IDE1CiAgICAgIGNyZWRpdF9jYXJkOgogICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICBtaW5pbXVtOiAxMDAwMDAwMDAwMDAwMDAwCiAgICAgICAgbWF4aW11bTogMTAwMDAwMDAwMDAwMDAwMDAKICAgICAgcGhvbmU6CiAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgIG1pbmltdW06IDEwMDAwMDAwMDAwMDAwCiAgICAgICAgbWF4aW11bTogOTk5OTk5OTk5OTk5OTkKICAgICAgZW1haWw6CiAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgZm9ybWF0OiBlbWFpbAogIHN0YXR1czoKICAgIHR5cGU6IHN0cmluZwogICAgZW51bToKICAgIC0gcmVnaXN0ZXJlZAogICAgLSBwYWlkCiAgICAtIHNoaXBwZWQKICAgIC0gZGVsaXZlcmVkCiAgICBkZWZhdWx0OiByZWdpc3RlcmVkCiAgY3JlYXRlZF9hdDoKICAgIHR5cGU6IHN0cmluZwogICAgZm9ybWF0OiBkYXRlLXRpbWUKYGBgCj4gTm90aWNlISBXaGlsZSBzY2hlbWEgb2JqZWN0IHByZXNlbnRlZCBpbiBZQU1MIGZvcm1hdCB0aGlzIGxpYnJhcnkgZG9lc24ndCBzdXBwb3J0IFlBTUwgb3IgSlNPTiBwYXJzaW5nIHJpZ2h0IG5vdy4gSXQgbWVhbnMgdGhhdCBgbW9ja1NjaGVtYU9iamVjdGAgbWV0aG9kIGV4cGVjdHMgYWxyZWFkeSBkZWNvZGVkIEpTT04gdmFsdWUgYXMgYXJndW1lbnQuCgpXaGVuIHdlIG1vY2sgbWVudGlvbmVkIHNjaGVtYSB3aXRoIGBtb2NrU2NoZW1hT2JqZWN0YCBtZXRob2Q6CmBgYHBocApyZXF1aXJlIF9fRElSX18gLiAnL3ZlbmRvci9hdXRvbG9hZC5waHAnOwoKdXNlIE9wZW5BUElTZXJ2ZXJcTW9ja1xPcGVuQXBpRGF0YU1vY2tlciBhcyBNb2NrZXI7CiRtb2NrZXIgPSBuZXcgTW9ja2VyKCk7Ci8vIHNldCBtb2RlbCBjbGFzc2VzIG5hbWVzcGFjZSBmb3IgJHJlZiBoYW5kbGluZwovLyBjdXJyZW50IGV4YW1wbGUgZG9lc24ndCB1c2UgJHJlZnMgaW4gc2NoZW1hcywgaG93ZXZlcgokbW9ja2VyLT5zZXRNb2RlbHNOYW1lc3BhY2UoJ0pvaG5Eb2VzUGFja2FnZVxcTW9kZWxcXCcpOwovLyBjbGFzcyBJbnZvaWNlVGVzdCBjb250YWlucyBzY2hlbWEgbWVudGlvbmVkIHByZXZpb3VzbHkKLy8gaXQgcmV0dXJucyB0aGF0IHNjaGVtYSB3aXRoIGdldE9wZW5BcGlTY2hlbWEoKSBtZXRob2QgZGVjbGFyZWQgaW4gT3BlbkFQSVNlcnZlclxNb2NrXEJhc2VNb2RlbCBwYXJlbnQgY2xhc3MKJHNjaGVtYSA9IFxPcGVuQVBJU2VydmVyXE1vY2tcTW9kZWxcSW52b2ljZVRlc3Q6OmdldE9wZW5BcGlTY2hlbWEoKTsKJGRhdGEgPSAkbW9ja2VyLT5tb2NrU2NoZW1hT2JqZWN0KCRzY2hlbWEpOwplY2hvIGpzb25fZW5jb2RlKCRkYXRhLCBcSlNPTl9QUkVUVFlfUFJJTlQpOwpgYGAKCnRoZSBvdXRwdXQgbG9va3MgbGlrZToKYGBganNvbgp7CiAgICAiaWQiOiAxOTEyNzc3OTM5LAogICAgInB1cmNoYXNlZF9pdGVtcyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJTS1UiOiAiNWVlNzhjZmRlOWYwNSIsCiAgICAgICAgICAgICJxdWFudGl0eSI6IDQsCiAgICAgICAgICAgICJwcmljZSI6IHsKICAgICAgICAgICAgICAgICJjdXJyZW5jeSI6ICJFVVIiLAogICAgICAgICAgICAgICAgInZhbHVlIjogNTcuNjM1CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJtYW51ZmFjdHVyZXIiOiB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJMb3JlbSBpIiwKICAgICAgICAgICAgICAgICJjb3VudHJ5IjogIlVTQSIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIF0sCiAgICAiYnV5ZXIiOiB7CiAgICAgICAgImZpcnN0X25hbWUiOiAiTG9yZW0gaXBzdW0gZG8iLAogICAgICAgICJsYXN0X25hbWUiOiAiTG9yZW0gaXBzdW0gIiwKICAgICAgICAiY3JlZGl0X2NhcmQiOiAyNDU1MDg3NDczOTE1OTA4LAogICAgICAgICJwaG9uZSI6IDY1NTI2MjYwNTE3NjkzLAogICAgICAgICJlbWFpbCI6ICJqZmtlbm5lZHlAZXhhbXBsZS5jb20iCiAgICB9LAogICAgInN0YXR1cyI6ICJkZWxpdmVyZWQiLAogICAgImNyZWF0ZWRfYXQiOiAiMTk3OC0wOC0wOFQwNDowMzowOSswMDowMCIKfQpgYGAKT2YgY291cnNlIHRoYXQgb3V0cHV0IHdpbGwgYmUgc2xpZ2h0bHkgZGlmZmVyZW50IG9uIGV2ZXJ5IGNhbGwuIFRoYXQncyB3aGF0IG1vY2tlciBwYWNrYWdlIGhhcyBiZWVuIGRldmVsb3BlZCBmb3IuCgpZb3UgY2FuIGNoZWNrIGV4dGVuZGVkIGV4YW1wbGUgYXQgW2V4YW1wbGVzL2V4dGVuZGVkX2V4YW1wbGUucGhwXShleGFtcGxlcy9leHRlbmRlZF9leGFtcGxlLnBocCkuCgojIyBTdXBwb3J0ZWQgZmVhdHVyZXMKCkFsbCBkYXRhIHR5cGVzIHN1cHBvcnRlZCBleGNlcHQgc3BlY2lmaWMgc3RyaW5nIGZvcm1hdHM6IGBlbWFpbGAsIGB1dWlkYCwgYHBhc3N3b3JkYCB3aGljaCBhcmUgcG9vcmx5IGltcGxlbWVudGVkLgoKIyMjIERhdGEgVHlwZXMgU3VwcG9ydAoKfCBEYXRhIFR5cGUgfCBEYXRhIEZvcm1hdCB8ICAgICAgU3VwcG9ydGVkICAgICB8Cnw6LS0tLS0tLS0tOnw6LS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS0tLS06fAp8IGBpbnRlZ2VyYCB8IGBpbnQzMmAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBgaW50ZWdlcmAgfCBgaW50NjRgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgYG51bWJlcmAgIHwgYGZsb2F0YCAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGBudW1iZXJgICB8IGBkb3VibGVgICAgIHwgICAgICAgICAgICAgICAgICAgIHwKfCBgc3RyaW5nYCAgfCBgYnl0ZWAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgYHN0cmluZ2AgIHwgYGJpbmFyeWAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGBib29sZWFuYCB8ICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBgc3RyaW5nYCAgfCBgZGF0ZWAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgYHN0cmluZ2AgIHwgYGRhdGUtdGltZWAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGBzdHJpbmdgICB8IGBwYXNzd29yZGAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBgc3RyaW5nYCAgfCBgZW1haWxgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgYHN0cmluZ2AgIHwgYHV1aWRgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAoKIyMjIERhdGEgT3B0aW9ucyBTdXBwb3J0Cgp8IERhdGEgVHlwZSAgIHwgICAgICAgICBPcHRpb24gICAgICAgICB8ICAgICAgU3VwcG9ydGVkICAgICB8Cnw6LS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tOnwKfCBgc3RyaW5nYCAgICB8IGBtaW5MZW5ndGhgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGBzdHJpbmdgICAgIHwgYG1heExlbmd0aGAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgYHN0cmluZ2AgICAgfCBgZW51bWAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBgc3RyaW5nYCAgICB8IGBwYXR0ZXJuYCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfAp8IGBpbnRlZ2VyYCAgIHwgYG1pbmltdW1gICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgYGludGVnZXJgICAgfCBgbWF4aW11bWAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBgaW50ZWdlcmAgICB8IGBleGNsdXNpdmVNaW5pbXVtYCAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGBpbnRlZ2VyYCAgIHwgYGV4Y2x1c2l2ZU1heGltdW1gICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgYG51bWJlcmAgICAgfCBgbWluaW11bWAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBgbnVtYmVyYCAgICB8IGBtYXhpbXVtYCAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGBudW1iZXJgICAgIHwgYGV4Y2x1c2l2ZU1pbmltdW1gICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgYG51bWJlcmAgICAgfCBgZXhjbHVzaXZlTWF4aW11bWAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBgYXJyYXlgICAgICB8IGBpdGVtc2AgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGBhcnJheWAgICAgIHwgYGFkZGl0aW9uYWxJdGVtc2AgICAgICB8ICAgICAgICAgICAgICAgICAgICB8CnwgYGFycmF5YCAgICAgfCBgbWluSXRlbXNgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBgYXJyYXlgICAgICB8IGBtYXhJdGVtc2AgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGBhcnJheWAgICAgIHwgYHVuaXF1ZUl0ZW1zYCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8CnwgYG9iamVjdGAgICAgfCBgcHJvcGVydGllc2AgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBgb2JqZWN0YCAgICB8IGBtYXhQcm9wZXJ0aWVzYCAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfAp8IGBvYmplY3RgICAgIHwgYG1pblByb3BlcnRpZXNgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8CnwgYG9iamVjdGAgICAgfCBgcGF0dGVyblByb3BlcnRpZXNgICAgIHwgICAgICAgICAgICAgICAgICAgIHwKfCBgb2JqZWN0YCAgICB8IGBhZGRpdGlvbmFsUHJvcGVydGllc2AgfCAgICAgICAgICAgICAgICAgICAgfAp8IGBvYmplY3RgICAgIHwgYHJlcXVpcmVkYCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8CnwgYCpgICAgICAgICAgfCBgJHJlZmAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBgKmAgICAgICAgICB8IGBhbGxPZmAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfAp8IGAqYCAgICAgICAgIHwgYGFueU9mYCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8CnwgYCpgICAgICAgICAgfCBgb25lT2ZgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwKfCBgKmAgICAgICAgICB8IGBub3RgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfAoKIyMgS25vd24gTGltaXRhdGlvbnMKCkF2b2lkIGNpcmN1bGFyIHJlZnMgaW4geW91ciBzY2hlbWEuIFNjaGVtYSBiZWxvdyBjYW4gY2F1c2UgaW5maW5pdGUgbG9vcCBhbmQgYE91dCBvZiBNZW1vcnlgIFBIUCBlcnJvcjoKYGBgeW1sCiMgTW9kZWxBIGhhcyByZWZlcmVuY2UgdG8gTW9kZWxCIHdoaWxlIE1vZGVsQiBoYXMgcmVmZXJlbmNlIHRvIE1vZGVsQS4KIyBNb2NrIHNlcnZlciB3aWxsIHByb2R1Y2UgaHVnZSBuZXN0ZWQgSlNPTiBleGFtcGxlIGFuZCBlbmRlZCB3aXRoIGBPdXQgb2YgTWVtb3J5YCBlcnJvci4KZGVmaW5pdGlvbnM6CiAgTW9kZWxBOgogICAgdHlwZTogb2JqZWN0CiAgICBwcm9wZXJ0aWVzOgogICAgICBtb2RlbF9iOgogICAgICAgICRyZWY6ICcjL2RlZmluaXRpb25zL01vZGVsQicKICBNb2RlbEI6CiAgICB0eXBlOiBhcnJheQogICAgaXRlbXM6CiAgICAgICRyZWY6ICcjL2RlZmluaXRpb25zL01vZGVsQScKYGBgCgpEb24ndCByZWYgc2NhbGFyIHR5cGVzLCBiZWNhdXNlIGdlbmVyYXRvciB3aWxsIG5vdCBwcm9kdWNlIG1vZGVscyB3aGljaCBtb2NrIHNlcnZlciBjYW4gZmluZC4gU28gc2NoZW1hIGJlbG93IHdpbGwgY2F1c2UgZXJyb3I6CmBgYHltbAojIGdlbmVyYXRlZCBidWlsZCBjb250YWlucyBvbmx5IGBPdXRlckNvbXBvc2l0ZWAgbW9kZWwgY2xhc3Mgd2hpY2ggcmVmZXJlbmNlZCB0byBub3QgZXhpc3RlZCBgT3V0ZXJOdW1iZXJgLCBgT3V0ZXJTdHJpbmdgLCBgT3V0ZXJCb29sZWFuYCBjbGFzc2VzCiMgbW9jayBzZXJ2ZXIgY2Fubm90IG1vY2sgYE91dGVyQ29tcG9zaXRlYCBtb2RlbCBhbmQgdGhyb3dzIGV4Y2VwdGlvbgpkZWZpbml0aW9uczoKICBPdXRlckNvbXBvc2l0ZToKICAgIHR5cGU6IG9iamVjdAogICAgcHJvcGVydGllczoKICAgICAgbXlfbnVtYmVyOgogICAgICAgICRyZWY6ICcjL2RlZmluaXRpb25zL091dGVyTnVtYmVyJwogICAgICBteV9zdHJpbmc6CiAgICAgICAgJHJlZjogJyMvZGVmaW5pdGlvbnMvT3V0ZXJTdHJpbmcnCiAgICAgIG15X2Jvb2xlYW46CiAgICAgICAgJHJlZjogJyMvZGVmaW5pdGlvbnMvT3V0ZXJCb29sZWFuJwogIE91dGVyTnVtYmVyOgogICAgdHlwZTogbnVtYmVyCiAgT3V0ZXJTdHJpbmc6CiAgICB0eXBlOiBzdHJpbmcKICBPdXRlckJvb2xlYW46CiAgICB0eXBlOiBib29sZWFuCmBgYAoKIyMgTGlua3MgdG8gbWVudGlvbmVkIHRlY2hub2xvZ2llcwoKKiBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uIDMuMC4zXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMy5tZCkKKiBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkKKiBbQ29tcG9zZXJdKGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnL2Rvd25sb2FkLykK readmeEtag: '"3734033c26f4362ef1101866e41d60139b869ca6"' readmeLastModified: Mon, 21 Mar 2022 19:46:27 GMT repositoryId: 253581764 description: Library that generates fake data from OpenAPI 3.0 Spec created: '2020-04-06T18:24:20Z' updated: '2025-11-09T08:45:28Z' language: PHP archived: false stars: 12 watchers: 1 forks: 0 owner: ybelenko logo: https://avatars.githubusercontent.com/u/5541023?v=4 license: MIT repoEtag: '"82729282904f435741d1f673dcb180c202f881666d35303c2ad17e4ce8a0f34f"' repoLastModified: Sun, 09 Nov 2025 08:45:28 GMT foundInMaster: true id: f47895ca9fc1749e90dd75e64d5ab471 - source: https://openapi.tools/ name: tsoa category: - Server - Data Validators - Parsers language: - Node.js - TypeScript link: https://github.com/lukeautry/tsoa repository: https://github.com/lukeautry/tsoa source_description: >- Creates OpenAPI docs and provides free runtime validation for your Koa, Express, Hapi (and more) services v2: true v3: true repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL3Rzb2EtY29tbXVuaXR5LmdpdGh1Yi5pby9kb2NzLyIgdGFyZ2V0PSJibGFuayI+CiAgICA8aDE+dHNvYTwvaDE+CiAgPC9hPgpQcm9ub3VuY2VkIHNvwrd1aAoKT3BlbkFQSS1jb21wbGlhbnQgUkVTVCBBUElzIHVzaW5nIFR5cGVTY3JpcHQgYW5kIE5vZGUKCiFbYnVpbGQgc3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vbHVrZWF1dHJ5L3Rzb2EvYWN0aW9ucy93b3JrZmxvd3MvcnVuVGVzdHNPblB1c2gueW1sL2JhZGdlLnN2ZykKWyFbbnBtIHZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvdHNvYS9sYXRlc3QpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS90c29hKQoKPC9kaXY+CgojIyBHb2FsCgotIFR5cGVTY3JpcHQgY29udHJvbGxlcnMgYW5kIG1vZGVscyBhcyB0aGUgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgeW91ciBBUEkKLSBBIHZhbGlkIE9wZW5BUEkgKGZvcm1lcmx5IFN3YWdnZXIpIHNwZWMgKDIuMCBvciAzLjAgaWYgeW91IGNob29zZSDwn5iNKSBpcyBnZW5lcmF0ZWQgZnJvbSB5b3VyIGNvbnRyb2xsZXJzIGFuZCBtb2RlbHMsIGluY2x1ZGluZzoKICAtIFBhdGhzIChlLmcuIEdFVCAvdXNlcnMpCiAgLSBEZWZpbml0aW9ucyBiYXNlZCBvbiBUeXBlU2NyaXB0IGludGVyZmFjZXMgKG1vZGVscykKICAtIFBhcmFtZXRlcnMvbW9kZWwgcHJvcGVydGllcyBtYXJrZWQgYXMgcmVxdWlyZWQgb3Igb3B0aW9uYWwgYmFzZWQgb24gVHlwZVNjcmlwdCAoZS5nLiBteVByb3BlcnR5Pzogc3RyaW5nIGlzIG9wdGlvbmFsIGluIHRoZSBPcGVuQVBJIHNwZWMpCiAgLSBqc0RvYyBzdXBwb3J0ZWQgZm9yIG9iamVjdCBkZXNjcmlwdGlvbnMgKG1vc3Qgb3RoZXIgbWV0YWRhdGEgY2FuIGJlIGluZmVycmVkIGZyb20gVHlwZVNjcmlwdCB0eXBlcykKLSBSb3V0ZXMgYXJlIGdlbmVyYXRlZCBmb3IgbWlkZGxld2FyZSBvZiBjaG9pY2UKICAtIEV4cHJlc3MsIEhhcGksIGFuZCBLb2EgY3VycmVudGx5IHN1cHBvcnRlZCwgb3RoZXIgbWlkZGxld2FyZSBjYW4gYmUgc3VwcG9ydGVkIHVzaW5nIGEgc2ltcGxlIGhhbmRsZWJhcnMgdGVtcGxhdGUKICAtIFZhbGlkYXRlIHJlcXVlc3QgcGF5bG9hZHMKCiMjIFBoaWxvc29waHkKCi0gUmVseSBvbiBUeXBlU2NyaXB0IHR5cGUgYW5ub3RhdGlvbnMgdG8gZ2VuZXJhdGUgQVBJIG1ldGFkYXRhIGlmIHBvc3NpYmxlCi0gSWYgcmVndWxhciB0eXBlIGFubm90YXRpb25zIGFyZW4ndCBhbiBhcHByb3ByaWF0ZSB3YXkgdG8gZXhwcmVzcyBtZXRhZGF0YSwgdXNlIGRlY29yYXRvcnMKLSBVc2UganNkb2MgZm9yIHB1cmUgdGV4dCBtZXRhZGF0YSAoZS5nLiBlbmRwb2ludCBkZXNjcmlwdGlvbnMpCi0gTWluaW1pemUgYm9pbGVycGxhdGUKLSBNb2RlbHMgYXJlIGJlc3QgcmVwcmVzZW50ZWQgYnkgaW50ZXJmYWNlcyAocHVyZSBkYXRhIHN0cnVjdHVyZXMpLCBidXQgY2FuIGFsc28gYmUgcmVwcmVzZW50ZWQgYnkgY2xhc3NlcwotIFJ1bnRpbWUgdmFsaWRhdGlvbiBvZiB0c29hIHNob3VsZCBiZWhhdmUgYXMgY2xvc2VseSBhcyBwb3NzaWJsZSB0byB0aGUgc3BlY2lmaWNhdGlvbnMgdGhhdCB0aGUgZ2VuZXJhdGVkIE9wZW5BUEkgMi8zIHNjaGVtYSBkZXNjcmliZXMuIEFueSBkaWZmZXJlbmNlcyBpbiB2YWxpZGF0aW9uIGxvZ2ljIGFyZSBjbGFyaWZpZWQgYnkgbG9nZ2luZyB3YXJuaW5ncyBkdXJpbmcgdGhlIGdlbmVyYXRpb24gb2YgdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAoT0FTKSBhbmQvb3IgdGhlIHJvdXRlcy4KICAtIFBsZWFzZSBub3RlIHRoYXQgYnkgZW5hYmxpbmcgT3BlbkFQSSAzIHlvdSBtaW5pbWl6ZSB0aGUgY2hhbmNlcyBvZiBkaXZlcmdlbnQgdmFsaWRhdGlvbiBsb2dpYyBzaW5jZSBPcGVuQVBJIDMgaGFzIGEgbW9yZSBleHByZXNzaXZlIHNjaGVtYSBzeW50YXguCgojIyBHZXR0aW5nIFN0YXJ0ZWQKCi0gW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vdHNvYS1jb21tdW5pdHkuZ2l0aHViLmlvL2RvY3MvKQotIFtBUEkgUmVmZXJlbmNlXShodHRwczovL3Rzb2EtY29tbXVuaXR5LmdpdGh1Yi5pby9yZWZlcmVuY2UvKQotIFtHZXR0aW5nIHN0YXJ0ZWQgZ3VpZGVdKGh0dHBzOi8vdHNvYS1jb21tdW5pdHkuZ2l0aHViLmlvL2RvY3MvZ2V0dGluZy1zdGFydGVkKQoKIyMgRXhhbXBsZXMKCkNoZWNrIG91dCB0aGUgW2d1aWRlc10oaHR0cHM6Ly90c29hLWNvbW11bml0eS5naXRodWIuaW8vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQpCgpTZWUgZXhhbXBsZSBjb250cm9sbGVycyBpbiBbdGhlIHRlc3RzXSh0ZXN0cy9maXh0dXJlcy9jb250cm9sbGVycykKClNlZSBleGFtcGxlIG1vZGVscyBpbiBbdGhlIHRlc3RzXSh0ZXN0cy9maXh0dXJlcy90ZXN0TW9kZWwudHMpCgojIyBIZWxwIHdhbnRlZAoKIyMjIENvbnRyaWJ1dGluZyBjb2RlCgpUbyBjb250cmlidXRlICh2aWEgYSBQUiksIHBsZWFzZSBmaXJzdCBzZWUgdGhlIFtDb250cmlidXRpbmcgR3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlYXV0cnkvdHNvYS90cmVlL21hc3Rlci9kb2NzL0NPTlRSSUJVVElORy5tZCkKCiMjIyBCZWNvbWluZyBhIG1haW50YWluZXIKCnRzb2Egd2FudHMgYWRkaXRpb25hbCBtYWludGFpbmVycyEgVGhlIGxpYnJhcnkgaGFzIGluY3JlYXNlZCBpbiBwb3B1bGFyaXR5IGFuZCBoYXMgcXVpdGUgYSBsb3Qgb2YgcHVsbCByZXF1ZXN0cyBhbmQgaXNzdWVzLiBbUGxlYXNlIHBvc3QgaW4gdGhpcyBpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL2x1a2VhdXRyeS90c29hL2lzc3Vlcy8yMzYpIGlmIHlvdSdyZSB3aWxsaW5nIHRvIHRha2Ugb24gdGhlIHJvbGUgb2YgYSBtYWludGFpbmVyLgo= readmeEtag: '"81295b201e9ff99d873dc633f42632deb1156566"' readmeLastModified: Fri, 12 Jul 2024 09:50:15 GMT repositoryId: 61366800 description: Build OpenAPI-compliant REST APIs using TypeScript and Node created: '2016-06-17T10:42:50Z' updated: '2026-02-01T10:44:57Z' language: TypeScript archived: false stars: 3930 watchers: 26 forks: 530 owner: lukeautry logo: https://avatars.githubusercontent.com/u/8770560?v=4 license: MIT repoEtag: '"9f33e1233173d4760923a88eca26a8cbe94dd31a0734474cd985bd1a7f398f51"' repoLastModified: Sun, 01 Feb 2026 10:44:57 GMT foundInMaster: true id: 2529db76d3d9f042b0c624f65b13fc41 - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags repository: https://github.com/hey-api/openapi-ts v3: true id: 2f6d5164db429943c445c5647745a9be repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICA8aW1nIGFsdD0iSGV5IEFQSSBwcmVzZW50cyBvcGVuYXBpLXRzIiBoZWlnaHQ9IjIxNCIgc3JjPSJodHRwczovL2hleWFwaS5kZXYvYXNzZXRzLy5nZW4vb3BlbmFwaS10cy1oZXJvLTY0MHcucG5nIiB3aWR0aD0iNDM4Ij4KICA8aDE+PGI+T3BlbkFQSSBUeXBlU2NyaXB0PC9iPjwvaDE+CiAgPHA+PGVtPuKAnE9wZW5BUEkgY29kZWdlbiB0aGF0IGp1c3Qgd29ya3Mu4oCdPC9lbT48YnIvPjxzdWI+4oCUIEd1aWxsZXJtbyBSYXVjaCwgQ0VPIG9mIFZlcmNlbDwvc3ViPjwvcD4KPC9kaXY+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL3d3dy5kZXZ0cmVuZHMuZGV2L3RyZW5kcz9jPXYxLmtaSUJJZyI+PGltZyBzcmM9Imh0dHBzOi8vYXBpLmRldnRyZW5kcy5kZXYvYmFkZ2UvbnBtLyU0MGhleS1hcGklMkZvcGVuYXBpLXRzP3BlcmlvZD1tb250aCZzdHlsZT1mbGF0JnZpZXc9dmFsdWUiIGFsdD0iRGV2VHJlbmRzIGJhZGdlIGZvciBAaGV5LWFwaS9vcGVuYXBpLXRzIiAvPjwvYT4KICA8YSBocmVmPSJodHRwczovL3d3dy5kZXZ0cmVuZHMuZGV2L3RyZW5kcz9jPXYxLmtaSUJJZyZ2PWNoYW5nZSI+PGltZyBzcmM9Imh0dHBzOi8vYXBpLmRldnRyZW5kcy5kZXYvYmFkZ2UvbnBtLyU0MGhleS1hcGklMkZvcGVuYXBpLXRzP3BlcmlvZD15ZWFyJnN0eWxlPWZsYXQmdmlldz1jaGFuZ2UiIGFsdD0iRGV2VHJlbmRzIGJhZGdlIGZvciBAaGV5LWFwaS9vcGVuYXBpLXRzIiAvPjwvYT4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaGV5LWFwaS9vcGVuYXBpLXRzL2FjdGlvbnM/cXVlcnk9YnJhbmNoJTNBbWFpbiI+PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9oZXktYXBpL29wZW5hcGktdHMvYWN0aW9ucy93b3JrZmxvd3MvY2kueW1sL2JhZGdlLnN2Zz9ldmVudD1wdXNoJmJyYW5jaD1tYWluIiBhbHQ9IkNJIHN0YXR1cyIgLz48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2hleS1hcGkvb3BlbmFwaS10cyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL2hleS1hcGkvb3BlbmFwaS10cz9zdHlsZT1mbGF0JmxvZ289Z2l0aHViJmxhYmVsPUdpdEh1YiZjb2xvcj01NEM4MkQiIGFsdD0iR2l0SHViIHN0YXJzIiAvPjwvYT4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaGV5LWFwaS9vcGVuYXBpLXRzL2Jsb2IvbWFpbi9MSUNFTlNFLm1kIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9oZXktYXBpL29wZW5hcGktdHMiIGFsdD0iTUlUIExpY2Vuc2UiPjwvYT4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9zdGFja2JsaXR6LmNvbS9lZGl0L2hleS1hcGktZXhhbXBsZT9maWxlPW9wZW5hcGktdHMuY29uZmlnLnRzLHNyYyUyRmNsaWVudCUyRnNjaGVtYXMuZ2VuLnRzLHNyYyUyRmNsaWVudCUyRnNkay5nZW4udHMsc3JjJTJGY2xpZW50JTJGdHlwZXMuZ2VuLnRzIj5EZW1vPC9hPgogIDxzcGFuPiZuYnNwO+KAoiZuYnNwOzwvc3Bhbj4KICA8YSBocmVmPSJodHRwczovL2hleWFwaS5kZXYiPk1hbnVhbDwvYT4KICA8c3Bhbj4mbmJzcDvigKImbmJzcDs8L3NwYW4+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2hleS1hcGkvb3BlbmFwaS10cy9pc3N1ZXMiPklzc3VlczwvYT4KICA8c3Bhbj4mbmJzcDvigKImbmJzcDs8L3NwYW4+CiAgPGEgaHJlZj0iaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvY29tbXVuaXR5L2NvbnRyaWJ1dGluZyI+Q29udHJpYnV0ZTwvYT4KPC9wPgoKIyMgQWJvdXQKClRoZSBPcGVuQVBJIHRvIFR5cGVTY3JpcHQgY29kZSBnZW5lcmF0b3IgdXNlZCBieSBWZXJjZWwsIE9wZW5Db2RlLCBhbmQgUGF5UGFsLgoKR2VuZXJhdGUgcHJvZHVjdGlvbi1yZWFkeSBTREtzLCBab2Qgc2NoZW1hcywgVGFuU3RhY2sgUXVlcnkgaG9va3MsIG9yIGNob29zZSBmcm9tIDIwKyBvdGhlciBwbHVnaW5zLgoKUGFydCBvZiB0aGUgSGV5IEFQSSBlY29zeXN0ZW0uCgojIyBGZWF0dXJlcwoKLSBwcm9kdWN0aW9uLXJlYWR5IGNvZGUgdGhhdCBjb21waWxlcwotIHJ1bnMgaW4gYW55IE5vZGUuanMgMjArIGVudmlyb25tZW50Ci0gYWNjZXB0cyBhbnkgT3BlbkFQSSBzcGVjaWZpY2F0aW9uCi0gY29yZSBwbHVnaW5zIGZvciBTREtzLCB0eXBlcywgYW5kIHNjaGVtYXMKLSBIVFRQIGNsaWVudHMgZm9yIEZldGNoIEFQSSwgQW5ndWxhciwgQXhpb3MsIE5leHQuanMsIE51eHQsIGFuZCBtb3JlCi0gMjArIHBsdWdpbnMgdG8gcmVkdWNlIHRoaXJkLXBhcnR5IGJvaWxlcnBsYXRlCi0gaGlnaGx5IGN1c3RvbWl6YWJsZSB2aWEgcGx1Z2lucwotIFtzeW5jIHdpdGggSGV5IEFQSSBSZWdpc3RyeV0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvaW50ZWdyYXRpb25zKSBmb3Igc3BlYyBtYW5hZ2VtZW50CgojIyBDb250cmlidXRpbmcKCldhbnQgdG8gc2VlIHlvdXIgY29kZSBpbiBwcm9kdWN0cyB1c2VkIGJ5IG1pbGxpb25zPwoKU3RhcnQgd2l0aCBvdXIgW0NvbnRyaWJ1dGluZ10oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvY29tbXVuaXR5L2NvbnRyaWJ1dGluZykgZ3VpZGUgYW5kIHJlbGVhc2UgeW91ciBmaXJzdCBmZWF0dXJlLgoKIyMgU3BvbnNvcnMKCkhleSBBUEkgaXMgc3BvbnNvci1mdW5kZWQuIElmIHlvdSByZWx5IG9uIEhleSBBUEkgaW4gcHJvZHVjdGlvbiwgY29uc2lkZXIgYmVjb21pbmcgYSBbc3BvbnNvcl0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL2hleS1hcGkpIHRvIGFjY2VsZXJhdGUgdGhlIHJvYWRtYXAuCgo8aDMgYWxpZ249ImNlbnRlciI+R29sZDwvaDM+Cgo8dGFibGUgYWxpZ249ImNlbnRlciIgc3R5bGU9Imp1c3RpZnktY29udGVudDogY2VudGVyO2FsaWduLWl0ZW1zOiBjZW50ZXI7ZGlzcGxheTogZmxleDsiPgogIDx0Ym9keT4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIzMzZweCI+CiAgICAgICAgPHA+PC9wPgogICAgICAgIDxwPgogICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9rdXR0Lml0L3BrRVp5YyIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgICA8cGljdHVyZSBoZWlnaHQ9IjUwcHgiPgogICAgICAgICAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly9oZXlhcGkuZGV2L2Fzc2V0cy8uZ2VuL3N0YWlubGVzcy1sb2dvLXdvcmRtYXJrLTQ4MHcuanBlZyI+CiAgICAgICAgICAgICAgPGltZyBhbHQ9IlN0YWlubGVzcyBsb2dvIiBoZWlnaHQ9IjUwcHgiIHNyYz0iaHR0cHM6Ly9oZXlhcGkuZGV2L2Fzc2V0cy8uZ2VuL3N0YWlubGVzcy1sb2dvLXdvcmRtYXJrLTQ4MHcuanBlZyI+CiAgICAgICAgICAgIDwvcGljdHVyZT4KICAgICAgICAgIDwvYT4KICAgICAgICAgIDxici8+CiAgICAgICAgICBCZXN0LWluLWNsYXNzIGRldmVsb3BlciBpbnRlcmZhY2VzIGZvciB5b3VyIEFQSS4KICAgICAgICAgIDxici8+CiAgICAgICAgICA8YSBocmVmPSJodHRwczovL2t1dHQuaXQvcGtFWnljIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5vbmU7IiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgICAgIHN0YWlubGVzcy5jb20KICAgICAgICAgIDwvYT4KICAgICAgICA8L3A+CiAgICAgICAgPHA+PC9wPgogICAgICA8L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjMzNnB4Ij4KICAgICAgICA8cD48L3A+CiAgICAgICAgPHA+CiAgICAgICAgICA8YSBocmVmPSJodHRwczovL2t1dHQuaXQvUU05UTJOIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgICAgIDxwaWN0dXJlIGhlaWdodD0iNTBweCI+CiAgICAgICAgICAgICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSJodHRwczovL2hleWFwaS5kZXYvYXNzZXRzL29wZW5jb2RlL2xvZ28tbGlnaHQuc3ZnIj4KICAgICAgICAgICAgICA8aW1nIGFsdD0iT3BlbmNvZGUgbG9nbyIgaGVpZ2h0PSI1MHB4IiBzcmM9Imh0dHBzOi8vaGV5YXBpLmRldi9hc3NldHMvb3BlbmNvZGUvbG9nby1kYXJrLnN2ZyI+CiAgICAgICAgICAgIDwvcGljdHVyZT4KICAgICAgICAgIDwvYT4KICAgICAgICAgIDxici8+CiAgICAgICAgICBUaGUgb3BlbiBzb3VyY2UgY29kaW5nIGFnZW50LgogICAgICAgICAgPGJyLz4KICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8va3V0dC5pdC9RTTlRMk4iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTsiIHRhcmdldD0iX2JsYW5rIj4KICAgICAgICAgICAgb3BlbmNvZGUuYWkKICAgICAgICAgIDwvYT4KICAgICAgICA8L3A+CiAgICAgICAgPHA+PC9wPgogICAgICA8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIzMzZweCI+CiAgICAgICAgPHA+PC9wPgogICAgICAgIDxwPgogICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9rdXR0Lml0LzZ2cll5OSIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgICA8cGljdHVyZSBoZWlnaHQ9IjUwcHgiPgogICAgICAgICAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly9oZXlhcGkuZGV2L2Fzc2V0cy9taW50bGlmeS9sb2dvLWxpZ2h0LnN2ZyI+CiAgICAgICAgICAgICAgPGltZyBhbHQ9Ik1pbnRsaWZ5IGxvZ28iIGhlaWdodD0iNTBweCIgc3JjPSJodHRwczovL2hleWFwaS5kZXYvYXNzZXRzL21pbnRsaWZ5L2xvZ28tZGFyay5zdmciPgogICAgICAgICAgICA8L3BpY3R1cmU+CiAgICAgICAgICA8L2E+CiAgICAgICAgICA8YnIvPgogICAgICAgICAgVGhlIGludGVsbGlnZW50IGtub3dsZWRnZSBwbGF0Zm9ybS4KICAgICAgICAgIDxici8+CiAgICAgICAgICA8YSBocmVmPSJodHRwczovL2t1dHQuaXQvNnZyWXk5IiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5vbmU7IiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgICAgIG1pbnRsaWZ5LmNvbQogICAgICAgICAgPC9hPgogICAgICAgIDwvcD4KICAgICAgICA8cD48L3A+CiAgICAgIDwvdGQ+CiAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+Cgo8aDMgYWxpZ249ImNlbnRlciI+U2lsdmVyPC9oMz4KCjx0YWJsZSBhbGlnbj0iY2VudGVyIiBzdHlsZT0ianVzdGlmeS1jb250ZW50OiBjZW50ZXI7YWxpZ24taXRlbXM6IGNlbnRlcjtkaXNwbGF5OiBmbGV4OyI+CiAgPHRib2R5PgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjE3MnB4Ij4KICAgICAgICA8YSBocmVmPSJodHRwczovL2t1dHQuaXQvc2tRVVZkIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgICA8cGljdHVyZSBoZWlnaHQ9IjQwcHgiPgogICAgICAgICAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vaGV5YXBpLmRldi9hc3NldHMvc2NhbGFyL2xvZ28tbGlnaHQuc3ZnIj4KICAgICAgICAgICAgPGltZyBhbHQ9IlNjYWxhciBsb2dvIiBoZWlnaHQ9IjQwcHgiIHNyYz0iaHR0cHM6Ly9oZXlhcGkuZGV2L2Fzc2V0cy9zY2FsYXIvbG9nby1kYXJrLnN2ZyI+CiAgICAgICAgICA8L3BpY3R1cmU+CiAgICAgICAgPC9hPgogICAgICAgIDxici8+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9rdXR0Lml0L3NrUVVWZCIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lOyIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgc2NhbGFyLmNvbQogICAgICAgIDwvYT4KICAgICAgPC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxNzJweCI+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9rdXR0Lml0L0RyOUd1VyIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgPHBpY3R1cmUgaGVpZ2h0PSI0MHB4Ij4KICAgICAgICAgICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSJodHRwczovL2hleWFwaS5kZXYvYXNzZXRzL2Zhc3RhcGkvbG9nby1saWdodC5zdmciPgogICAgICAgICAgICA8aW1nIGFsdD0iRmFzdEFQSSBsb2dvIiBoZWlnaHQ9IjQwcHgiIHNyYz0iaHR0cHM6Ly9oZXlhcGkuZGV2L2Fzc2V0cy9mYXN0YXBpL2xvZ28tZGFyay5zdmciPgogICAgICAgICAgPC9waWN0dXJlPgogICAgICAgIDwvYT4KICAgICAgICA8YnIvPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8va3V0dC5pdC9EcjlHdVciIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTsiIHRhcmdldD0iX2JsYW5rIj4KICAgICAgICAgIGZhc3RhcGkudGlhbmdvbG8uY29tCiAgICAgICAgPC9hPgogICAgICA8L3RkPgogICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKPGgzIGFsaWduPSJjZW50ZXIiPkJyb256ZTwvaDM+Cgo8dGFibGUgYWxpZ249ImNlbnRlciIgc3R5bGU9Imp1c3RpZnktY29udGVudDogY2VudGVyO2FsaWduLWl0ZW1zOiBjZW50ZXI7ZGlzcGxheTogZmxleDsiPgogIDx0Ym9keT4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMzZweCI+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9rdXR0Lml0L1lwYUtzWCIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgPHBpY3R1cmUgaGVpZ2h0PSIzNHB4Ij4KICAgICAgICAgICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSJodHRwczovL2hleWFwaS5kZXYvYXNzZXRzLy5nZW4va2luZGUtbG9nby13b3JkbWFyay1kYXJrLTQ4MHcud2VicCI+CiAgICAgICAgICAgIDxpbWcgYWx0PSJLaW5kZSBsb2dvIiBoZWlnaHQ9IjM0cHgiIHNyYz0iaHR0cHM6Ly9oZXlhcGkuZGV2L2Fzc2V0cy8uZ2VuL2tpbmRlLWxvZ28td29yZG1hcmstNDgwdy5qcGVnIj4KICAgICAgICAgIDwvcGljdHVyZT4KICAgICAgICA8L2E+CiAgICAgIDwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTM2cHgiPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8va3V0dC5pdC9La3FTYXciIHRhcmdldD0iX2JsYW5rIj4KICAgICAgICAgIDxwaWN0dXJlIGhlaWdodD0iMzRweCI+CiAgICAgICAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly9oZXlhcGkuZGV2L2Fzc2V0cy9jZWxsYS9sb2dvLWxpZ2h0LnN2ZyI+CiAgICAgICAgICAgIDxpbWcgYWx0PSJDZWxsYSBsb2dvIiBoZWlnaHQ9IjM0cHgiIHNyYz0iaHR0cHM6Ly9oZXlhcGkuZGV2L2Fzc2V0cy9jZWxsYS9sb2dvLWRhcmsuc3ZnIj4KICAgICAgICAgIDwvcGljdHVyZT4KICAgICAgICA8L2E+CiAgICAgIDwvdGQ+CiAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgojIyBRdWljayBTdGFydAoKVGhlIGZhc3Rlc3Qgd2F5IHRvIHVzZSBgQGhleS1hcGkvb3BlbmFwaS10c2AgaXMgdmlhIG5weAoKYGBgc2gKbnB4IEBoZXktYXBpL29wZW5hcGktdHMgLWkgaGV5LWFwaS9iYWNrZW5kIC1vIHNyYy9jbGllbnQKYGBgCgpDb25ncmF0dWxhdGlvbnMgb24gY3JlYXRpbmcgeW91ciBmaXJzdCBjbGllbnQhIPCfjokgWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IHRoZSBnZW5lcmF0ZWQgZmlsZXMgb24gdGhlIFtPdXRwdXRdKGh0dHBzOi8vaGV5YXBpLmRldi9vcGVuYXBpLXRzL291dHB1dCkgcGFnZS4KCiMjIEluc3RhbGxhdGlvbgoKWW91IGNhbiBkb3dubG9hZCBgQGhleS1hcGkvb3BlbmFwaS10c2AgZnJvbSBucG0gdXNpbmcgeW91ciBmYXZvcml0ZSBwYWNrYWdlIG1hbmFnZXIuCgojIyMjIG5wbQoKYGBgc2gKbnBtIGluc3RhbGwgQGhleS1hcGkvb3BlbmFwaS10cyAtRCAtRQpgYGAKCiMjIyMgcG5wbQoKYGBgc2gKcG5wbSBhZGQgQGhleS1hcGkvb3BlbmFwaS10cyAtRCAtRQpgYGAKCiMjIyMgeWFybgoKYGBgc2gKeWFybiBhZGQgQGhleS1hcGkvb3BlbmFwaS10cyAtRCAtRQpgYGAKCiMjIyMgYnVuCgpgYGBzaApidW4gYWRkIEBoZXktYXBpL29wZW5hcGktdHMgLUQgLUUKYGBgCgojIyMgVmVyc2lvbmluZwoKVGhpcyBwYWNrYWdlIGlzIGluIFtpbml0aWFsIGRldmVsb3BtZW50XShodHRwczovL3NlbXZlci5vcmcvI3NwZWMtaXRlbS00KS4gUGxlYXNlIHBpbiBhbiBleGFjdCB2ZXJzaW9uIHNvIHlvdSBjYW4gc2FmZWx5IHVwZ3JhZGUgd2hlbiB5b3UncmUgcmVhZHkuCgpXZSBwdWJsaXNoIFttaWdyYXRpb24gbm90ZXNdKGh0dHBzOi8vaGV5YXBpLmRldi9vcGVuYXBpLXRzL21pZ3JhdGluZykgZm9yIGV2ZXJ5IGJyZWFraW5nIHJlbGVhc2UuIFlvdSBtaWdodCBub3QgYmUgaW1wYWN0ZWQgYnkgYSBicmVha2luZyBjaGFuZ2UgaWYgeW91IGRvbid0IHVzZSB0aGUgYWZmZWN0ZWQgZmVhdHVyZXMuCgojIyBVc2FnZQoKIyMjIENMSQoKTW9zdCBwZW9wbGUgcnVuIGBAaGV5LWFwaS9vcGVuYXBpLXRzYCB2aWEgQ0xJLiBUbyBkbyB0aGF0LCBhZGQgYSBzY3JpcHQgdG8geW91ciBgcGFja2FnZS5qc29uYCBmaWxlIHdoaWNoIHdpbGwgbWFrZSBgb3BlbmFwaS10c2AgZXhlY3V0YWJsZSB0aHJvdWdoIHNjcmlwdC4KCmBgYGpzb24KInNjcmlwdHMiOiB7CiAgIm9wZW5hcGktdHMiOiAib3BlbmFwaS10cyIKfQpgYGAKClRoZSBhYm92ZSBzY3JpcHQgY2FuIGJlIGV4ZWN1dGVkIGJ5IHJ1bm5pbmcgYG5wbSBydW4gb3BlbmFwaS10c2Agb3IgZXF1aXZhbGVudCBjb21tYW5kIGluIG90aGVyIHBhY2thZ2UgbWFuYWdlcnMuIE5leHQsIHdlIHdpbGwgY3JlYXRlIGEgW2NvbmZpZ3VyYXRpb25dKGh0dHBzOi8vaGV5YXBpLmRldi9vcGVuYXBpLXRzL2NvbmZpZ3VyYXRpb24pIGZpbGUgYW5kIG1vdmUgb3VyIG9wdGlvbnMgZnJvbSBRdWljayBTdGFydCB0byBpdC4KCiMjIyBOb2RlLmpzCgpZb3UgY2FuIGFsc28gZ2VuZXJhdGUgb3V0cHV0IHByb2dyYW1tYXRpY2FsbHkgYnkgY2FsbGluZyBgY3JlYXRlQ2xpZW50KClgIGluIGEgSmF2YVNjcmlwdC9UeXBlU2NyaXB0IGZpbGUuCgojIyMjIGBzY3JpcHQudHNgCgpgYGB0cwppbXBvcnQgeyBjcmVhdGVDbGllbnQgfSBmcm9tICdAaGV5LWFwaS9vcGVuYXBpLXRzJzsKCmNyZWF0ZUNsaWVudCh7CiAgaW5wdXQ6ICdoZXktYXBpL2JhY2tlbmQnLCAvLyBzaWduIHVwIGF0IGFwcC5oZXlhcGkuZGV2CiAgb3V0cHV0OiAnc3JjL2NsaWVudCcsCn0pOwpgYGAKCiMjIENvbmZpZ3VyYXRpb24KCmBAaGV5LWFwaS9vcGVuYXBpLXRzYCBzdXBwb3J0cyBsb2FkaW5nIGNvbmZpZ3VyYXRpb24gZnJvbSBhbnkgZmlsZSBpbnNpZGUgeW91ciBwcm9qZWN0IHJvb3QgZm9sZGVyIHN1cHBvcnRlZCBieSBbaml0aSBsb2FkZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS91bmpzL2MxMj90YWI9cmVhZG1lLW92LWZpbGUjLWZlYXR1cmVzKS4gQmVsb3cgYXJlIHRoZSBtb3N0IGNvbW1vbiBmaWxlIGZvcm1hdHMuCgojIyMjIGBvcGVuYXBpLXRzLmNvbmZpZy50c2AKCmBgYGpzCmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gJ0BoZXktYXBpL29wZW5hcGktdHMnOwoKZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHsKICBpbnB1dDogJ2hleS1hcGkvYmFja2VuZCcsIC8vIHNpZ24gdXAgYXQgYXBwLmhleWFwaS5kZXYKICBvdXRwdXQ6ICdzcmMvY2xpZW50JywKfSk7CmBgYAoKIyMjIyBgb3BlbmFwaS10cy5jb25maWcuY2pzYAoKYGBganMKLyoqIEB0eXBlIHtpbXBvcnQoJ0BoZXktYXBpL29wZW5hcGktdHMnKS5Vc2VyQ29uZmlnfSAqLwptb2R1bGUuZXhwb3J0cyA9IHsKICBpbnB1dDogJ2hleS1hcGkvYmFja2VuZCcsIC8vIHNpZ24gdXAgYXQgYXBwLmhleWFwaS5kZXYKICBvdXRwdXQ6ICdzcmMvY2xpZW50JywKfTsKYGBgCgojIyMjIGBvcGVuYXBpLXRzLmNvbmZpZy5tanNgCgpgYGBqcwovKiogQHR5cGUge2ltcG9ydCgnQGhleS1hcGkvb3BlbmFwaS10cycpLlVzZXJDb25maWd9ICovCmV4cG9ydCBkZWZhdWx0IHsKICBpbnB1dDogJ2hleS1hcGkvYmFja2VuZCcsIC8vIHNpZ24gdXAgYXQgYXBwLmhleWFwaS5kZXYKICBvdXRwdXQ6ICdzcmMvY2xpZW50JywKfTsKYGBgCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSBgb3BlbmFwaS10cy5jb25maWcuanNgIGFuZCBjb25maWd1cmUgdGhlIGV4cG9ydCBzdGF0ZW1lbnQgZGVwZW5kaW5nIG9uIHlvdXIgcHJvamVjdCBzZXR1cC4KCiMjIyBJbnB1dAoKWW91IG11c3Qgc2V0IHRoZSBpbnB1dCBzbyB3ZSBjYW4gbG9hZCB5b3VyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4gSXQgY2FuIGJlIGEgcGF0aCBvciBVUkwsIG9iamVjdCBjb250YWluaW5nIGEgcGF0aCBvciBVUkwsIG9yIGFuIG9iamVjdCByZXByZXNlbnRpbmcgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uLiBIZXkgQVBJIHN1cHBvcnRzIGFsbCB2YWxpZCBPcGVuQVBJIHZlcnNpb25zIGFuZCBmaWxlIGZvcm1hdHMuCgo+IElmIHlvdSB1c2UgYW4gSFRUUFMgVVJMIHdpdGggYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSBpbiBkZXZlbG9wbWVudCwgeW91IHdpbGwgbmVlZCB0byBzZXQgW2BOT0RFX1RMU19SRUpFQ1RfVU5BVVRIT1JJWkVEPTBgXShodHRwczovL2dpdGh1Yi5jb20vaGV5LWFwaS9vcGVuYXBpLXRzL2lzc3Vlcy8yNzYjaXNzdWVjb21tZW50LTIwNDMxNDM1MDEpIGluIHlvdXIgZW52aXJvbm1lbnQuCgojIyMgT3V0cHV0CgpZb3UgbXVzdCBzZXQgdGhlIG91dHB1dCBzbyB3ZSBrbm93IHdoZXJlIHRvIGdlbmVyYXRlIHlvdXIgZmlsZXMuIEl0IGNhbiBiZSBhIHBhdGggdG8gdGhlIGRlc3RpbmF0aW9uIGZvbGRlciBvciBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgZGVzdGluYXRpb24gZm9sZGVyIHBhdGggYW5kIG9wdGlvbmFsIHNldHRpbmdzLgoKPiBZb3Ugc2hvdWxkIHRyZWF0IHRoZSBvdXRwdXQgZm9sZGVyIGFzIGEgZGVwZW5kZW5jeS4gRG8gbm90IGRpcmVjdGx5IG1vZGlmeSBpdHMgY29udGVudHMgYXMgeW91ciBjaGFuZ2VzIG1pZ2h0IGJlIGVyYXNlZCB3aGVuIHlvdSBydW4gYEBoZXktYXBpL29wZW5hcGktdHNgIGFnYWluLgoKIyMgUGFyc2VyCgpXZSBwYXJzZSB5b3VyIGlucHV0IGJlZm9yZSBtYWtpbmcgaXQgYXZhaWxhYmxlIHRvIHBsdWdpbnMuIFdoaWxlIGNvbmZpZ3VyaW5nIHRoZSBwYXJzZXIgaXMgb3B0aW9uYWwsIGl0J3MgdGhlIHBlcmZlY3QgcGxhY2UgdG8gbW9kaWZ5IG9yIHZhbGlkYXRlIHlvdXIgaW5wdXQgaWYgbmVlZGVkLgoKIyMgUGx1Z2lucwoKUGx1Z2lucyBhcmUgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgYXJ0aWZhY3RzIGZyb20geW91ciBpbnB1dC4gQnkgZGVmYXVsdCwgSGV5IEFQSSB3aWxsIGdlbmVyYXRlIFR5cGVTY3JpcHQgaW50ZXJmYWNlcyBhbmQgU0RLIGZyb20geW91ciBPcGVuQVBJIHNwZWNpZmljYXRpb24uIFlvdSBjYW4gYWRkLCByZW1vdmUsIG9yIGN1c3RvbWl6ZSBhbnkgb2YgdGhlIHBsdWdpbnMuIEluIGZhY3QsIHdlIGhpZ2hseSBlbmNvdXJhZ2UgeW91IHRvIGRvIHNvIQoKIyMjIENsaWVudAoKQ2xpZW50cyBhcmUgcmVzcG9uc2libGUgZm9yIHNlbmRpbmcgdGhlIGFjdHVhbCBIVFRQIHJlcXVlc3RzLiBVc2luZyBjbGllbnRzIGlzIG5vdCByZXF1aXJlZCwgYnV0IHlvdSBtdXN0IGFkZCBhIGNsaWVudCB0byBgcGx1Z2luc2AgaWYgeW91J3JlIGdlbmVyYXRpbmcgU0RLcyAod2UgZGVmYXVsdCB0byBGZXRjaCkuCgojIyMgTmF0aXZlIENsaWVudHMKCi0gW2BAaGV5LWFwaS9jbGllbnQtZmV0Y2hgXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9jbGllbnRzL2ZldGNoKQotIFtgQGhleS1hcGkvY2xpZW50LWFuZ3VsYXJgXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9jbGllbnRzL2FuZ3VsYXIpCi0gW2BAaGV5LWFwaS9jbGllbnQtYXhpb3NgXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9jbGllbnRzL2F4aW9zKQotIFtgQGhleS1hcGkvY2xpZW50LWt5YF0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvY2xpZW50cy9reSkKLSBbYEBoZXktYXBpL2NsaWVudC1uZXh0YF0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvY2xpZW50cy9uZXh0LWpzKQotIFtgQGhleS1hcGkvY2xpZW50LW51eHRgXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9jbGllbnRzL251eHQpCi0gW2BAaGV5LWFwaS9jbGllbnQtb2ZldGNoYF0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvY2xpZW50cy9vZmV0Y2gpCgojIyMgUGxhbm5lZCBDbGllbnRzCgpUaGUgZm9sbG93aW5nIGNsaWVudHMgYXJlIHBsYW5uZWQgYnV0IG5vdCBpbiBkZXZlbG9wbWVudCB5ZXQuIFlvdSBjYW4gaGVscCB1cyBwcmlvcml0aXplIHRoZW0gYnkgdm90aW5nIG9uIFtHaXRIdWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9oZXktYXBpL29wZW5hcGktdHMvbGFiZWxzL1JTVlAlMjAlRjAlOUYlOTElOEQlRjAlOUYlOTElOEUpLgoKLSBbYEBoZXktYXBpL2NsaWVudC1lZmZlY3RgXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9jbGllbnRzL2VmZmVjdCkKCkRvbid0IHNlZSB5b3VyIGNsaWVudD8gW0J1aWxkIHlvdXIgb3duXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9jbGllbnRzL2N1c3RvbSkgb3IgbGV0IHVzIGtub3cgeW91ciBpbnRlcmVzdCBieSBbb3BlbmluZyBhbiBpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL2hleS1hcGkvb3BlbmFwaS10cy9pc3N1ZXMpLgoKIyMjIE5hdGl2ZSBQbHVnaW5zCgpUaGVzZSBwbHVnaW5zIGhlbHAgcmVkdWNlIGJvaWxlcnBsYXRlIGFzc29jaWF0ZWQgd2l0aCB0aGlyZC1wYXJ0eSBkZXBlbmRlbmNpZXMuIEhleSBBUEkgbmF0aXZlbHkgc3VwcG9ydHMgdGhlIG1vc3QgcG9wdWxhciBwYWNrYWdlcy4gUGxlYXNlIG9wZW4gYW4gaXNzdWUgb24gW0dpdEh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL2hleS1hcGkvb3BlbmFwaS10cy9pc3N1ZXMpIGlmIHlvdSdkIGxpa2UgdXMgdG8gc3VwcG9ydCB5b3VyIGZhdm9yaXRlIHBhY2thZ2UuCgotIFtgQGFuZ3VsYXIvY29tbW9uYF0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvcGx1Z2lucy9hbmd1bGFyKQotIFtgQGhleS1hcGkvc2NoZW1hc2BdKGh0dHBzOi8vaGV5YXBpLmRldi9vcGVuYXBpLXRzL291dHB1dC9qc29uLXNjaGVtYSkKLSBbYEBoZXktYXBpL3Nka2BdKGh0dHBzOi8vaGV5YXBpLmRldi9vcGVuYXBpLXRzL291dHB1dC9zZGspCi0gW2BAaGV5LWFwaS90cmFuc2Zvcm1lcnNgXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy90cmFuc2Zvcm1lcnMpCi0gW2BAaGV5LWFwaS90eXBlc2NyaXB0YF0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvb3V0cHV0L3R5cGVzY3JpcHQpCi0gW2BAcGluaWEvY29sYWRhYF0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvcGx1Z2lucy9waW5pYS1jb2xhZGEpCi0gW2BAdGFuc3RhY2svYW5ndWxhci1xdWVyeS1leHBlcmltZW50YWxgXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9wbHVnaW5zL3RhbnN0YWNrLXF1ZXJ5KQotIFtgQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5YF0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvcGx1Z2lucy90YW5zdGFjay1xdWVyeSkKLSBbYEB0YW5zdGFjay9zb2xpZC1xdWVyeWBdKGh0dHBzOi8vaGV5YXBpLmRldi9vcGVuYXBpLXRzL3BsdWdpbnMvdGFuc3RhY2stcXVlcnkpCi0gW2BAdGFuc3RhY2svc3ZlbHRlLXF1ZXJ5YF0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvcGx1Z2lucy90YW5zdGFjay1xdWVyeSkKLSBbYEB0YW5zdGFjay92dWUtcXVlcnlgXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9wbHVnaW5zL3RhbnN0YWNrLXF1ZXJ5KQotIFtgZmFzdGlmeWBdKGh0dHBzOi8vaGV5YXBpLmRldi9vcGVuYXBpLXRzL3BsdWdpbnMvZmFzdGlmeSkKLSBbYHZhbGlib3RgXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9wbHVnaW5zL3ZhbGlib3QpCi0gW2B6b2RgXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9wbHVnaW5zL3pvZCkKCiMjIyBQbGFubmVkIFBsdWdpbnMKClRoZSBmb2xsb3dpbmcgcGx1Z2lucyBhcmUgcGxhbm5lZCBidXQgbm90IGluIGRldmVsb3BtZW50IHlldC4gWW91IGNhbiBoZWxwIHVzIHByaW9yaXRpemUgdGhlbSBieSB2b3Rpbmcgb24gW0dpdEh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL2hleS1hcGkvb3BlbmFwaS10cy9sYWJlbHMvUlNWUCUyMCVGMCU5RiU5MSU4RCVGMCU5RiU5MSU4RSkuCgotIFtBZG9uaXNdKGh0dHBzOi8vaGV5YXBpLmRldi9vcGVuYXBpLXRzL3BsdWdpbnMvYWRvbmlzKQotIFtBanZdKGh0dHBzOi8vaGV5YXBpLmRldi9vcGVuYXBpLXRzL3BsdWdpbnMvYWp2KQotIFtBcmt0eXBlXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9wbHVnaW5zL2Fya3R5cGUpCi0gW0NoYW5jZV0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvcGx1Z2lucy9jaGFuY2UpCi0gW0VseXNpYV0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvcGx1Z2lucy9lbHlzaWEpCi0gW0V4cHJlc3NdKGh0dHBzOi8vaGV5YXBpLmRldi9vcGVuYXBpLXRzL3BsdWdpbnMvZXhwcmVzcykKLSBbRmFrZXJdKGh0dHBzOi8vaGV5YXBpLmRldi9vcGVuYXBpLXRzL3BsdWdpbnMvZmFrZXIpCi0gW0ZhbHNvXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9wbHVnaW5zL2ZhbHNvKQotIFtIb25vXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9wbHVnaW5zL2hvbm8pCi0gW0pvaV0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvcGx1Z2lucy9qb2kpCi0gW0tvYV0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvcGx1Z2lucy9rb2EpCi0gW01TV10oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvcGx1Z2lucy9tc3cpCi0gW05lc3RdKGh0dHBzOi8vaGV5YXBpLmRldi9vcGVuYXBpLXRzL3BsdWdpbnMvbmVzdCkKLSBbTm9ja10oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvcGx1Z2lucy9ub2NrKQotIFtTdXBlcnN0cnVjdF0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvcGx1Z2lucy9zdXBlcnN0cnVjdCkKLSBbU3VwZXJ0ZXN0XShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9wbHVnaW5zL3N1cGVydGVzdCkKLSBbU1dSXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9wbHVnaW5zL3N3cikKLSBbVHlwZUJveF0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvcGx1Z2lucy90eXBlYm94KQotIFtZdXBdKGh0dHBzOi8vaGV5YXBpLmRldi9vcGVuYXBpLXRzL3BsdWdpbnMveXVwKQotIFtadXN0YW5kXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9wbHVnaW5zL3p1c3RhbmQpCgpEb24ndCBzZWUgeW91ciBwbHVnaW4/IFtCdWlsZCB5b3VyIG93bl0oaHR0cHM6Ly9oZXlhcGkuZGV2L29wZW5hcGktdHMvcGx1Z2lucy9jdXN0b20pIG9yIGxldCB1cyBrbm93IHlvdXIgaW50ZXJlc3QgYnkgW29wZW5pbmcgYW4gaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9oZXktYXBpL29wZW5hcGktdHMvaXNzdWVzKS4KCiMjIE1pZ3JhdGluZwoKWW91IGNhbiBsZWFybiBtb3JlIG9uIHRoZSBbTWlncmF0aW5nXShodHRwczovL2hleWFwaS5kZXYvb3BlbmFwaS10cy9taWdyYXRpbmcpIHBhZ2UuCgojIyBMaWNlbnNlCgpSZWxlYXNlZCB1bmRlciB0aGUgW01JVCBMaWNlbnNlXShodHRwczovL2dpdGh1Yi5jb20vaGV5LWFwaS9vcGVuYXBpLXRzL2Jsb2IvbWFpbi9MSUNFTlNFLm1kKS4K readmeEtag: '"f308ed5957d2ae6b31435e1335720c59e70ce4ca"' readmeLastModified: Thu, 05 Feb 2026 14:46:51 GMT repositoryId: 741524414 description: >- 🌀 OpenAPI to TypeScript codegen. Production-ready SDKs, Zod schemas, TanStack Query hooks, and 20+ plugins. Used by Vercel, OpenCode, and PayPal. created: '2024-01-10T15:19:25Z' updated: '2026-02-06T03:39:13Z' language: TypeScript archived: false stars: 4033 watchers: 10 forks: 305 owner: hey-api logo: https://avatars.githubusercontent.com/u/164436240?v=4 license: MIT repoEtag: '"028356e8dac5a05dd362013138fe39a5a3bc3741fd65c347cac0b82a070ebb74"' repoLastModified: Fri, 06 Feb 2026 03:39:13 GMT category: - Converters - SDK foundInMaster: true name: '@hey-api/openapi-ts' source_description: Turn your OpenAPI description into a beautiful TypeScript client. language: TypeScript link: https://heyapi.vercel.app/ v2: true v3_1: true - source: https://openapi.tools/ name: Vert.x Web Api Contract category: Server language: - Java - Kotlin - JavaScript - Groovy - Ruby - Ceylon or Scala link: https://vertx.io/docs/#web repository: https://github.com/vert-x3/vertx-web/tree/master/vertx-web-api-contract source_description: >- Create API endpoints with Vert.x 3 and OpenAPI 3 with automatic requests validation v2: false v3: true repositoryMetadata: base64Readme: >- PSBWZXJ0LngtV2ViCgppbWFnZTpodHRwczovL2dpdGh1Yi5jb20vdmVydC14My92ZXJ0eC13ZWIvYWN0aW9ucy93b3JrZmxvd3MvY2ktNS54LnltbC9iYWRnZS5zdmdbIkJ1aWxkIFN0YXR1cyAoNS54KSIsbGluaz0iaHR0cHM6Ly9naXRodWIuY29tL3ZlcnQteDMvdmVydHgtd2ViL2FjdGlvbnMvd29ya2Zsb3dzL2NpLTUueC55bWwiXQppbWFnZTpodHRwczovL2dpdGh1Yi5jb20vdmVydC14My92ZXJ0eC13ZWIvYWN0aW9ucy93b3JrZmxvd3MvY2ktNC54LnltbC9iYWRnZS5zdmdbIkJ1aWxkIFN0YXR1cyAoNC54KSIsbGluaz0iaHR0cHM6Ly9naXRodWIuY29tL3ZlcnQteDMvdmVydHgtd2ViL2FjdGlvbnMvd29ya2Zsb3dzL2NpLTQueC55bWwiXQppbWFnZTpodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLWNlbnRyYWwvdi9pby52ZXJ0eC92ZXJ0eC13ZWIuc3ZnWyJNYXZlbiBDZW50cmFsIl0KaW1hZ2U6aHR0cHM6Ly9iZXN0cHJhY3RpY2VzLmNvcmVpbmZyYXN0cnVjdHVyZS5vcmcvcHJvamVjdHMvNTQwL2JhZGdlWyJDSUkgQmVzdCBQcmFjdGljZXMiLGxpbms9Imh0dHBzOi8vYmVzdHByYWN0aWNlcy5jb3JlaW5mcmFzdHJ1Y3R1cmUub3JnL3Byb2plY3RzLzU0MCJdCgpWZXJ0LngtV2ViIGlzIGEgc2V0IG9mIGJ1aWxkaW5nIGJsb2NrcyBmb3IgYnVpbGRpbmcgd2ViIGFwcGxpY2F0aW9ucyB3aXRoIFZlcnQueC4gVGhpbmsgb2YgaXQgYXMgYSBTd2lzcyBBcm15IEtuaWZlIGZvciBidWlsZGluZwptb2Rlcm4sIHNjYWxhYmxlLCB3ZWIgYXBwcy4KClBsZWFzZSBzZWUgdGhlIG1haW4gZG9jdW1lbnRhdGlvbiBvbiB0aGUgd2ViLXNpdGUgZm9yIGEgZnVsbCBkZXNjcmlwdGlvbjoKCiogaHR0cHM6Ly92ZXJ0eC5pby9kb2NzLyN3ZWJbV2ViLXNpdGUgZG9jdW1lbnRhdGlvbl0KCj09IFRlbXBsYXRlIGVuZ2luZXMKClRlbXBsYXRlIGVuZ2luZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGluIHRoZSB0ZW1wbGF0ZSBlbmdpbmUgc3ViLXByb2plY3QuCg== readmeEtag: '"269b52e98cea5813787f90c67bef329932b70760"' readmeLastModified: Fri, 16 Aug 2024 21:55:56 GMT repositoryId: 26628954 description: HTTP web applications for Vert.x created: '2014-11-14T08:15:20Z' updated: '2026-02-05T20:01:22Z' language: Java archived: false stars: 1144 watchers: 71 forks: 556 owner: vert-x3 logo: https://avatars.githubusercontent.com/u/8124623?v=4 license: Apache-2.0 repoEtag: '"27b312e88d5724b891cdb6068adcfe907cdb8f8c8a312ae3851967e80ed62edc"' repoLastModified: Thu, 05 Feb 2026 20:01:22 GMT foundInMaster: true v3_link: https://github.com/vert-x3/vertx-web/issues/1872 id: 2657bfe401922934e35bc38fbbef6b6d - source: https://openapi.tools/ name: express-openapi category: Server language: - Node.js - Typescript link: https://www.npmjs.com/package/express-openapi repository: >- https://github.com/kogosoftwarellc/open-api/tree/master/packages/express-openapi source_description: >- An unopinionated OpenAPI framework for Express, which supports Promise based middleware, response handlers and Security Filtering. v2: true v3: true v3_1_link: https://github.com/vert-x3/vertx-web/issues/1872 id: d3549059c844ac132a254310d4d7ac01 repositoryMetadata: base64Readme: >- IyBAb3Blbi1hcGkgWyFbQ292ZXJhbGxzIFN0YXR1c11bY292ZXJhbGxzLWltYWdlXV1bY292ZXJhbGxzLXVybF0KPiBBIE1vbm9yZXBvIG9mIHZhcmlvdXMgcGFja2FnZXMgdG8gcG93ZXIgT3BlbkFQSSBpbiBub2RlLgoKIyMgUXVpY2sgU3RhcnQgRXhwcmVzcwoKKiBTZWUgW2V4cHJlc3Mtb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL2tvZ29zb2Z0d2FyZWxsYy9vcGVuLWFwaS90cmVlL21hc3Rlci9wYWNrYWdlcy9leHByZXNzLW9wZW5hcGkpJm5ic3A7Jm5ic3A7Jm5ic3A7WyFbZXhwcmVzcy1vcGVuYXBpIERvd25sb2Fkc11bZXhwcmVzcy1vcGVuYXBpLWRvd25sb2Fkcy1pbWFnZV1dW2V4cHJlc3Mtb3BlbmFwaS1ucG0tdXJsXQoKIyMgUXVpY2sgU3RhcnQgS29hCiogU2VlIFtrb2Etb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL2tvZ29zb2Z0d2FyZWxsYy9vcGVuLWFwaS90cmVlL21hc3Rlci9wYWNrYWdlcy9rb2Etb3BlbmFwaSkmbmJzcDsmbmJzcDsmbmJzcDtbIVtrb2Etb3BlbmFwaSBEb3dubG9hZHNdW2tvYS1vcGVuYXBpLWRvd25sb2Fkcy1pbWFnZV1dW2tvYS1vcGVuYXBpLW5wbS11cmxdCgojIyBQYWNrYWdlcwoqIFtleHByZXNzLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9rb2dvc29mdHdhcmVsbGMvb3Blbi1hcGkvdHJlZS9tYXN0ZXIvcGFja2FnZXMvZXhwcmVzcy1vcGVuYXBpKQoqIFtmZXRjaC1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20va29nb3NvZnR3YXJlbGxjL29wZW4tYXBpL3RyZWUvbWFzdGVyL3BhY2thZ2VzL2ZldGNoLW9wZW5hcGkpCiogW2ZzLXJvdXRlc10oaHR0cHM6Ly9naXRodWIuY29tL2tvZ29zb2Z0d2FyZWxsYy9vcGVuLWFwaS90cmVlL21hc3Rlci9wYWNrYWdlcy9mcy1yb3V0ZXMpCiogW29wZW5hcGktZGVmYXVsdC1zZXR0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9rb2dvc29mdHdhcmVsbGMvb3Blbi1hcGkvdHJlZS9tYXN0ZXIvcGFja2FnZXMvb3BlbmFwaS1kZWZhdWx0LXNldHRlcikKKiBbb3BlbmFwaS1mcmFtZXdvcmtdKGh0dHBzOi8vZ2l0aHViLmNvbS9rb2dvc29mdHdhcmVsbGMvb3Blbi1hcGkvdHJlZS9tYXN0ZXIvcGFja2FnZXMvb3BlbmFwaS1mcmFtZXdvcmspCiogW29wZW5hcGktanNvbnNjaGVtYS1wYXJhbWV0ZXJzXShodHRwczovL2dpdGh1Yi5jb20va29nb3NvZnR3YXJlbGxjL29wZW4tYXBpL3RyZWUvbWFzdGVyL3BhY2thZ2VzL29wZW5hcGktanNvbnNjaGVtYS1wYXJhbWV0ZXJzKQoqIFtvcGVuYXBpLXJlcXVlc3QtY29lcmNlcl0oaHR0cHM6Ly9naXRodWIuY29tL2tvZ29zb2Z0d2FyZWxsYy9vcGVuLWFwaS90cmVlL21hc3Rlci9wYWNrYWdlcy9vcGVuYXBpLXJlcXVlc3QtY29lcmNlcikKKiBbb3BlbmFwaS1yZXF1ZXN0LXZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL2tvZ29zb2Z0d2FyZWxsYy9vcGVuLWFwaS90cmVlL21hc3Rlci9wYWNrYWdlcy9vcGVuYXBpLXJlcXVlc3QtdmFsaWRhdG9yKQoqIFtvcGVuYXBpLXJlc3BvbnNlLXZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL2tvZ29zb2Z0d2FyZWxsYy9vcGVuLWFwaS90cmVlL21hc3Rlci9wYWNrYWdlcy9vcGVuYXBpLXJlc3BvbnNlLXZhbGlkYXRvcikKKiBbb3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20va29nb3NvZnR3YXJlbGxjL29wZW4tYXBpL3RyZWUvbWFzdGVyL3BhY2thZ2VzL29wZW5hcGktc2NoZW1hLXZhbGlkYXRvcikKKiBbb3BlbmFwaS10eXBlc10oaHR0cHM6Ly9naXRodWIuY29tL2tvZ29zb2Z0d2FyZWxsYy9vcGVuLWFwaS90cmVlL21hc3Rlci9wYWNrYWdlcy9vcGVuYXBpLXR5cGVzKQoKIyMgRGV2ZWxvcG1lbnQKClRoaXMgbW9ub3JlcG8gdXNlcyBsZXJuYSBmb3IgZGV2ZWxvcG1lbnQuICBTZWUgdGhlIHJvb3QgcGFja2FnZS5qc29uIGZvciBoZWxwZnVsIHNjcmlwdHMuCgojIyMgVHlwaWNhbCBXb3JrZmxvdyBmb3IgQ29udHJpYnV0b3JzCgpMZXQncyBzYXkgeW91J3JlIHdvcmtpbmcgb24gYSBwYWNrYWdlIHVuZGVyIFsuL3BhY2thZ2VzXShodHRwczovL2dpdGh1Yi5jb20va29nb3NvZnR3YXJlbGxjL29wZW4tYXBpL3RyZWUvbWFzdGVyL3BhY2thZ2VzKS4gIEhlcmUncyB3aGF0IHlvdSBkbzoKCjEuIGBjZCBvcGVuLWFwaWAKMS4gYG5wbSBydW4gYm9vdHN0cmFwYAoxLiBgbnBtIHRgCjEuIE1ha2UgeW91ciBjaGFuZ2VzLgogIDEuIF9EbyBub3QgYnVtcCB0aGUgdmVyc2lvbiBpbiBwYWNrYWdlLmpzb24uXyAgQSBtYWludGFpbmVyIHdpbGwgaGFuZGxlIHRoYXQgb25jZSB5b3VyIFBSIGlzIG1lcmdlZC4KMS4gT25jZSB5b3UncmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzOgogIDEuIENyZWF0ZSBhIG5ldyBicmFuY2ggYGdpdCBjaGVja291dCAtYiBteS1icmFuY2hgIChpbiBjYXNlIHlvdSBoYXZlbid0IGRvbmUgc28gYWxyZWFkeSkuCiAgMS4gYC4vYmluL2NvbW1pdCBwYWNrYWdlcy88cGFja2FnZV95b3UncmVfd29ya2luZ19vbj4gJ2NvbW1pdCBtZXNzYWdlIGRlc2NyaWJpbmcgeW91ciBjaGFuZ2UuICBjYW4gYmUgbXVsdGkgbGluZSBoZXJlLiAganVzdCBjbG9zZSB3aXRoIGEgc2luZ2xlIHF1b3RlIGxpa2Ugc286J2AKICAxLiBQdXNoIHlvdXIgY2hhbmdlIHRvIHlvdXIgZm9yawogIDEuIE9wZW4gYSBQUi4KCiMjIyBiaW4KClNldmVyYWwgc2NyaXB0cyBoYXZlIGJlZW4gY3JlYXRlZCB0byBhaWQgaW4gdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgbW9ub3JlcG8gKHNlZSBbLi9iaW5dKC4vYmluKSkuICBUaGV5IGFzc3VtZSB0aGF0IHlvdXIgYCRQV0RgIGlzIHRoZSByb290IG9mIHRoZSByZXBvc2l0b3J5LiAgSGVyZSBpcyBhIGJyaWVmIHN1bW1hcnkgb2YgY29tbW9uIGFjdGlvbnM6CgoqIENvbW1pdCBjaGFuZ2VzIHRvIGEgcGFja2FnZSAtIGAuL2Jpbi9jb21taXQgcGFja2FnZXMvPHBhY2thZ2VfdG9fY29tbWl0PiAnQ29tbWl0IG1lc3NhZ2UnYCAodGhlIGNvbW1pdCBtZXNzYWdlIHdpbGwgYmUgcHJlcGVuZGVkIHdpdGggdGhlIHBhY2thZ2UgbmFtZSBlLmcuIGA8cGFja2FnZV90b19jb21taXQ+OiBDb21taXQgbWVzc2FnZWAKKiBUaGVzZSByZWR1Y2UgYm9pbGVycGxhdGUgYW5kIGFyZSBjYWxsZWQgZnJvbSBucG0gc2NyaXB0cyBpbiBsZWFmIHJlcG9zLgogICogbnljCiAgKiB0c2MKICAqIG1vY2hhCgojIyBMSUNFTlNFCgpgYGAKVGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTggS29nbyBTb2Z0d2FyZSBMTEMKClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwp0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgpUSEUgU09GVFdBUkUuCmBgYAoKW2V4cHJlc3Mtb3BlbmFwaS1kb3dubG9hZHMtaW1hZ2VdOiBodHRwOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL2V4cHJlc3Mtb3BlbmFwaS5zdmcKW2V4cHJlc3Mtb3BlbmFwaS1ucG0tdXJsXTogaHR0cHM6Ly9ucG1qcy5vcmcvcGFja2FnZS9leHByZXNzLW9wZW5hcGkKW2tvYS1vcGVuYXBpLWRvd25sb2Fkcy1pbWFnZV06IGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0va29hLW9wZW5hcGkuc3ZnCltrb2Etb3BlbmFwaS1ucG0tdXJsXTogaHR0cHM6Ly9ucG1qcy5vcmcvcGFja2FnZS9rb2Etb3BlbmFwaQoKW2NvdmVyYWxscy11cmxdOiBodHRwczovL2NvdmVyYWxscy5pby9naXRodWIva29nb3NvZnR3YXJlbGxjL29wZW4tYXBpP2JyYW5jaD1tYWluCltjb3ZlcmFsbHMtaW1hZ2VdOiBodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIva29nb3NvZnR3YXJlbGxjL29wZW4tYXBpL2JhZGdlLnN2Zz9icmFuY2g9bWFpbgo= readmeEtag: '"8f1d406d4ad10b939db247a64e8ebfb658ba4536"' readmeLastModified: Wed, 08 May 2024 21:06:34 GMT repositoryId: 48869446 description: A Monorepo of various packages to power OpenAPI in node created: '2016-01-01T04:28:48Z' updated: '2026-02-04T13:54:17Z' language: JavaScript archived: false stars: 920 watchers: 12 forks: 239 owner: kogosoftwarellc logo: https://avatars.githubusercontent.com/u/15419153?v=4 license: MIT repoEtag: '"d668eb1865c8e9f2dcf8baa1a72c66b992a9e4066dfbaa31151095f4966d36cb"' repoLastModified: Wed, 04 Feb 2026 13:54:17 GMT foundInMaster: true - source: https://openapi.tools/ name: BaucisJS + baucis-openapi3 homepage: https://github.com/metadevpro/baucis-openapi3 language: Node.js source_description: >- Create REST resources with persistence on MongoDB and expose OpenAPI v.3 contracts category: Server link: https://www.npmjs.com/package/baucis-openapi3 repository: https://github.com/metadevpro/baucis-openapi3 v2: false v3: true repositoryMetadata: base64Readme: >- YmF1Y2lzLW9wZW5hcGkzCj09PT09PT09PT09PT09PQoKClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL21ldGFkZXZwcm8vYmF1Y2lzLW9wZW5hcGkzLnN2ZyldKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9tZXRhZGV2cHJvL2JhdWNpcy1vcGVuYXBpMykKWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIvbWV0YWRldnByby9iYXVjaXMtb3BlbmFwaTMvYmFkZ2Uuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL2NvdmVyYWxscy5pby9naXRodWIvbWV0YWRldnByby9iYXVjaXMtb3BlbmFwaTM/YnJhbmNoPW1hc3RlcikKWyFbRGVwZW5kZW5jeSBTdGF0dXNdKGh0dHBzOi8vZGF2aWQtZG0ub3JnL21ldGFkZXZwcm8vYmF1Y2lzLW9wZW5hcGkzLnN2ZyldKGh0dHBzOi8vZGF2aWQtZG0ub3JnL21ldGFkZXZwcm8vYmF1Y2lzLW9wZW5hcGkzKQpbIVtLbm93biBWdWxuZXJhYmlsaXRpZXNdKGh0dHBzOi8vc255ay5pby90ZXN0L25wbS9iYXVjaXMtb3BlbmFwaTMvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9zbnlrLmlvL3Rlc3QvbnBtL2JhdWNpcy1vcGVuYXBpMykKWyFbbnBtIHZlcnNpb25dKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9qcy9iYXVjaXMtb3BlbmFwaTMuc3ZnKV0oaHR0cDovL2JhZGdlLmZ1cnkuaW8vanMvYmF1Y2lzLW9wZW5hcGkzKQpbIVtHcmVlbmtlZXBlciBiYWRnZV0oaHR0cHM6Ly9iYWRnZXMuZ3JlZW5rZWVwZXIuaW8vbWV0YWRldnByby9iYXVjaXMtb3BlbmFwaTMuc3ZnKV0oaHR0cHM6Ly9ncmVlbmtlZXBlci5pby8pCgpbIVtOUE1dKGh0dHBzOi8vbm9kZWkuY28vbnBtL2JhdWNpcy1vcGVuYXBpMy5wbmc/ZG93bmxvYWRzPXRydWUmZG93bmxvYWRSYW5rPXRydWUmc3RhcnM9dHJ1ZSldKGh0dHBzOi8vbm9kZWkuY28vbnBtL2JhdWNpcy1vcGVuYXBpMy8pCgoKVGhpcyBtb2R1bGUgZ2VuZXJhdGVzIGN1c3RvbWl6YWJsZSBbT3BlbkFQSSAzLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kKSBkZWZpbml0aW9ucyBmb3IgeW91ciBCYXVjaXMgQVBJLgpVc2UgdGhpcyBtb2R1bGUgaW4gY29uanVuY3Rpb24gd2l0aCBbQmF1Y2lzXShodHRwczovL2dpdGh1Yi5jb20vd3BybC9iYXVjaXMpLgoKClVzYWdlCi0tLS0tCgpJbnN0YWxsIHdpdGg6CgogICAgbnBtIGluc3RhbGwgLS1zYXZlIGJhdWNpcyBiYXVjaXMtb3BlbmFwaTMKCkluY2x1ZGUgdGhlIHBhY2thZ2UgYWZ0ZXIgYmF1Y2lzIGlzIGluY2x1ZGVkLCBhbmQgYmVmb3JlIHlvdXIgQVBJIGlzIGJ1aWx0LgoKYGBgamF2YXNjcmlwdAogICAgdmFyIGV4cHJlc3MgPSByZXF1aXJlKCdleHByZXNzJyk7CiAgICB2YXIgYmF1Y2lzID0gcmVxdWlyZSgnYmF1Y2lzJyk7CiAgICB2YXIgYXBpRG9jID0gcmVxdWlyZSgnYmF1Y2lzLW9wZW5hcGkzJyk7CgogICAgdmFyIGFwcCA9IGV4cHJlc3MoKTsKCiAgICAvLyAuLi4gU2V0IHVwIGEgbW9uZ29vc2Ugc2NoZW1hIC4uLgoKICAgIGJhdWNpcy5yZXN0KCd2ZWdldGFibGUnKTsKICAgIGFwcC51c2UoJy9hcGknLCBiYXVjaXMoKSk7CmBgYAoKVGhlbiwgYWNjZXNzIGUuZy4gYEdFVCBodHRwOi8vbG9jYWxob3N0OjMzMzMvYXBpL29wZW5hcGkuanNvbmAuICBTZWUgdGhlIFtCYXVjaXNdKGh0dHBzOi8vZ2l0aHViLmNvbS93cHJsL2JhdWNpcykgcmVwbyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBidWlsZGluZyBSRVNUIEFQSXMgd2l0aCBbQmF1Y2lzXShodHRwczovL2dpdGh1Yi5jb20vd3BybC9iYXVjaXMpLgoKVGVzdHMKLS0tLS0KQ2hhbmdlIHRoZSBgdGVzdC9maXh1cmVzL2NvbmZpZy5qc29uYCBpZiBuZWVkZWQsIHRvIHBvaW50IHRvIGEgdmFsaWQgbW9uZ29kYiBkYXRhYmFzZS4KVGhlbiBydW46CgpgYGAKbnBtIHRlc3QKYGBgCgoKRXh0ZW5zaWJpbGl0eQotLS0tLS0tLS0tLS0tCgpJZiB5b3Ugd2FudCB0byBtb2RpZnkgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbiwgZ2VuZXJhdGUgdGhlIGRlZmluaXRpb24gZmlyc3QuICAoVGhpcyB3aWxsIGhhcHBlbiBhdXRvbWF0aWNhbGx5IG90aGVyd2lzZS4pCgpVc2UgdGhlIGBvcGVuQXBpM2AgbWVtYmVyIG9mIHRoZSBjb250cm9sbGVyIHRvIGV4dGVuZCBgcGF0aHNgIGFuZCBgY29tcG9uZW50c2AgcGVyIGNvbnRyb2xsZXIuCgpgYGBqYXZhc2NyaXB0CmNvbnRyb2xsZXIuZ2VuZXJhdGVPcGVuQXBpMygpOwpjb250cm9sbGVyLm9wZW5BcGkzLnBhdGhzLnh5eiA9ICcxMjMnOwpjb250cm9sbGVyLm9wZW5BcGkzLmNvbXBvbmVudHMuc2NoZW1hcy54eXogPSB7fTsKYGBgCgpPciB1c2UgdGhlIGBvcGVuQXBpM0RvY3VtZW50YCBvZiB0aGUgYmF1Y2lzIGluc3RhbmNlIG1vZHVsZSB0byBhY2Nlc3MgYW5kIG1vZGlmeSBkaXJyZWN0eSB0aGUgZnVsbCBkb2N1bWVudCBhZnRlciBjYWxsaW5nIGBnZW5lcmF0ZU9wZW5BcGkzKClgIG9uIHRoZSBBUEkuCgpgYGBqYXZhc2NyaXB0CnZhciBiYXVjaXNJbnN0YW5jZSA9IGJhdWNpcygpOwoKLy9nZW5lcmF0ZSBzdGFuZGFyZCB0ZW1wbGF0ZSBmb3IgT3BlbkFQSTMKYmF1Y2lzSW5zdGFuY2UuZ2VuZXJhdGVPcGVuQXBpMygpOwovL2V4dGVuZCBPcGVuQVBJMyBkZWZpbml0aW9ucwpiYXVjaXNJbnN0YW5jZS5vcGVuQXBpM0RvY3VtZW50LmluZm8udGl0bGUgPSAibXlBcGkiOwoKYXBwLnVzZSgnL2FwaScsIGJhdWNpc0luc3RhbmNlKTsKYGBgCgpCYWNrd2FyZCBjb21wYXRpYmlsaXR5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkluIGNhc2UgeW91IHdhbnQgdG8gcHJvdmlkZSBhbiBlYXN5IHRyYW5zaXRpb24gYXMgcG9zc2libGUgZm9yIHlvdXIgY3VycmVudCBBUEkgY2xpZW50cy4gWW91IGNhbiBleHBvc2UgYm90aCBBUEkgZGVzY3JpcHRpb25zIGF0IHRoZSBzYW1lIHRpbWUgaW5jbHVkaW5nIGJvdGggbW9kdWxlczoKCmBgYGphdmFzY3JpcHQKICAgIHZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpOwogICAgdmFyIGJhdWNpcyA9IHJlcXVpcmUoJ2JhdWNpcycpOwogICAgdmFyIHN3YWdnZXIgPSByZXF1aXJlKCdiYXVjaXMtc3dhZ2dlcicpOwogICAgdmFyIHN3YWdnZXIyID0gcmVxdWlyZSgnYmF1Y2lzLXN3YWdnZXIyJyk7CiAgICB2YXIgb3BlbmFwaTMgPSByZXF1aXJlKCdiYXVjaXMtb3BlbmFwaTMnKTsKCiAgICB2YXIgYXBwID0gZXhwcmVzcygpOwoKICAgIC8vIC4uLiBTZXQgdXAgYSBtb25nb29zZSBzY2hlbWEgLi4uCgogICAgYmF1Y2lzLnJlc3QoJ3ZlZ2V0YWJsZScpOwogICAgYXBwLnVzZSgnL2FwaScsIGJhdWNpcygpKTsKYGBgCgpBZnRlciB0aGF0OgotIFN3YWdnZXIgMS4xIGRvYyB3aWxsIGJlIGV4cG9zZWQgYXQgYC9hcGkvZG9jdW1lbnRhdGlvbmAKLSBTd2FnZ2VyIDIuMCBkb2Mgd2lsbCBiZSBleHBvc2VkIGF0IGAvYXBpL3N3YWdnZXIuanNvbmAKLSBPcGVuQVBJIDMuMCBkb2Mgd2lsbCBiZSBleHBvc2VkIGF0IGAvYXBpL29wZW5hcGkuanNvbmAKCgpDb250YWN0Ci0tLS0tLS0KCiAqIFtAbWV0YWQzdl0oaHR0cHM6Ly90d2l0dGVyLmNvbS9tZXRhZDN2KSBodHRwczovL21ldGFkZXYucHJvCiAqIFtAcG1vbGluYW1dKGh0dHBzOi8vdHdpdHRlci5jb20vcG1vbGluYW0pCgpSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZS4gJmNvcHk7IDIwMTctMjAxOCBNZXRhZGV2Cg== readmeEtag: '"911d64ea488af9377794cca8eec31a8a217f35df"' readmeLastModified: Mon, 01 Apr 2019 21:55:30 GMT repositoryId: 83848050 description: BaucisJS pluging for generating OpenAPI 3.0 compliance API contracts. created: '2017-03-03T22:41:11Z' updated: '2025-04-09T12:48:50Z' language: JavaScript archived: false stars: 14 watchers: 2 forks: 2 owner: metadevpro logo: https://avatars.githubusercontent.com/u/24300914?v=4 license: MIT repoEtag: '"2760f8026b3a9114fd5192e806dc46aa306999f9230c8e7ca179fe4a70777f5a"' repoLastModified: Wed, 09 Apr 2025 12:48:50 GMT foundInMaster: true id: e39508ff695c02cf804c421dd228064e - source: - https://openapi.tools/ - openapi3 tags name: '@smartrecruiters/openapi-first' category: - Server - Parsers language: Node.js link: https://www.npmjs.com/package/@smartrecruiters/openapi-first repository: https://github.com/smartrecruiters/openapi-first source_description: > Initializes your API express application with the description in OpenAPI 3.0 format using provided middlewares (parsers, validators, controller, defaults setting) or custom ones v2: false v3: true repositoryMetadata: base64Readme: >- IyBAc21hcnRyZWNydWl0ZXJzL29wZW5hcGktZmlyc3QKClshW05QTSBWZXJzaW9uXVtucG0taW1hZ2VdXVtucG0tdXJsXQpbIVtOUE0gRG93bmxvYWRzXVtkb3dubG9hZHMtaW1hZ2VdXVtkb3dubG9hZHMtdXJsXQpbIVtOb2RlLmpzIFZlcnNpb25dW25vZGUtdmVyc2lvbi1pbWFnZV1dW25vZGUtdmVyc2lvbi11cmxdClshW0xpY2VuY2VdW2xpY2Vuc2UtaW1hZ2VdXVtsaWNlbnNlLXVybF0KWyFbQnVpbGRdW3RyYXZpcy1pbWFnZV1dW3RyYXZpcy11cmxdCgpTdGFydCB5b3VyIG5vZGUgUkVTVCBhcHAgd2l0aCBkZXNpZ25pbmcgQVBJIGZpcnN0IQoKIyMgSXMgaXQgZm9yIHlvdT8KCklmIHlvdToKLSB1c2UgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIDMuMCB0byBkb2N1bWVudCB5b3VyIFJFU1QgQVBJcyB3cml0dGVuIGluIG5vZGUuanMsCi0gbGlrZSBkZXNpZ24gZmlyc3QgYXBwcm9hY2ggcmVnYXJkaW5nIFJFU1QgQVBJcwotIHdhbnQgeW91ciBzcGVjaWZpY2F0aW9uIHRvIGJlIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggb2YgeW91ciBBUEksCi0gd2FudCB0byBoYW5kbGUgdmFsaWRhdGlvbiBhbmQgcGFyc2luZyBvZiByZXF1ZXN0cyBxdWVyeSwgcGF0aCwgYm9keSwgY29udGVudC10eXBlIGluIGEgdW5pZmllZCBtYW5uZXIgZm9yIGFsbCBBUEkgZW5kcG9pbnRzLAoKdGhlbiBgQHNtYXJ0cmVjcnVpdGVycy9vcGVuYXBpLWZpcnN0YCBpcyB3aGF0IHlvdSBhcmUgbG9va2luZyBmb3IhCgpUaGlzIG1vZHVsZSBpbml0aWFsaXplcyB5b3VyIEFQSSBjb25uZWN0LXN0eWxlIGFwcGxpY2F0aW9uIHdpdGggc3BlY2lmaWNhdGlvbiBpbgpbT3BlbkFQSSBTcGVjaWZpY2F0aW9uIDMuMF0oaHR0cHM6Ly9vcGVuYXBpcy5vcmcvc3BlY2lmaWNhdGlvbikgZm9ybWF0LgoKIyMgSG93IHRvIHN0YXJ0CgpMZXQncyBzYXkgeW91IGhhdmUgc3BlY2lmaWNhdGlvbiBpbiBPcGVuQVBJIFNwZWNpZmljYXRpb24gMy4wIGluIGBzcGVjLmpzb25gOgoKYGBgamF2YXNjcmlwdAp7CiAgICAib3BlbmFwaSI6ICIzLjAuMCIsCiAgICAiaW5mbyI6IHsKICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgICAgICAgInRpdGxlIjogIkhlbGxvIFdvcmxkIEFQSSIKICAgIH0sCiAgICAicGF0aHMiOiB7CiAgICAgICAgIi9oZWxsbyI6IHsKICAgICAgICAgICAgImdldCI6IHsKICAgICAgICAgICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN1Y2Nlc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkcmVmIjogIiMvY29tcG9uZW50cy9zY2hlbWFzL0dyZWV0aW5nIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAieC1zd2FnZ2VyLXJvdXRlci1jb250cm9sbGVyIjogImdyZWV0aW5nL2hlbGxvIiwKICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImluIjogInF1ZXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAibmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiAid29ybGQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LAogICAgImNvbXBvbmVudHMiOiB7CiAgICAgICAgInNjaGVtYXMiOiB7CiAgICAgICAgICAgICJHcmVldGluZyI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZ3JlZXRpbmciOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KYGBgCgpOb3cgeW91IGNhbiBpbXBsZW1lbnQgY29ubmVjdC1zdHlsZSBtaWRkbGV3YXJlIHdpdGggImJ1c2luZXNzIGxvZ2ljIiBpbiBgZ3JlZXRpbmcvaGVsbG8uanNgOgoKYGBgamF2YXNjcmlwdAptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHJlcSwgcmVzKSB7CiAgICByZXMuc3RhdHVzKDIwMCkuanNvbih7Z3JlZXRpbmc6IGBIZWxsbywgJHtyZXEucXVlcnkubmFtZX0hYH0pCn0KYGBgCgpOb3csIGxldCdzIG1ha2UgYW4gYGFwcC5qc2AgZmlsZToKYGBgamF2YXNjcmlwdApjb25zdCBvcGVuQXBpRmlyc3QgPSByZXF1aXJlKCdAc21hcnRyZWNydWl0ZXJzL29wZW5hcGktZmlyc3QnKQpjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpCgovLyBjcmVhdGUgZXhwcmVzcyBhcHAKY29uc3QgYXBwID0gZXhwcmVzcygpCgpjb25zdCBzcGVjID0gcmVxdWlyZSgnLi9zcGVjLmpzb24nKQoKLy8gY3JlYXRlIG9wZW4gYXBpIHNwZWNpZmljYXRpb24gaW5pdGlhbGl6ZXIKY29uc3QgYXBpID0gb3BlbkFwaUZpcnN0KGFwcCwgc3BlYykKCi8vIHRvIGVuYWJsZSBzZXR0aW5nIGRlZmF1bHQgdmFsdWVzIG9uIGVtcHR5IHF1ZXJ5IHBhcmFtcwphcGkudXNlKHJlcXVpcmUoJ0BzbWFydHJlY3J1aXRlcnMvb3BlbmFwaS1maXJzdC9taWRkbGV3YXJlcy9xdWVyeS9kZWZhdWx0cycpKCkpCgovLyB0byBsaW5rIHRoZSBzcGVjaWZpY2F0aW9uIHdpdGggY29kZSBpbiAnYXBpJyBkaXJlY3RvcnkKYXBpLnVzZShyZXF1aXJlKCdAc21hcnRyZWNydWl0ZXJzL29wZW5hcGktZmlyc3QvbWlkZGxld2FyZXMvY29udHJvbGxlcnMvYnktcHJvcGVydHknKSh7ZGlyOiBfX2Rpcm5hbWV9KSkKCmFwcC5saXN0ZW4oODA4MCkKCmBgYAoKV2UgY2FuIG5vdyBydW4gdGhlIGFwcGxpY2F0aW9uOgpgYGBiYXNoCm5vZGUgYXBwCmBgYApUbyB2ZXJpZnkgaXQncyB3b3JraW5nLCBsZXQncyBoaXQgdGhlIGVuZHBvaW50OgpgYGBiYXNoCmN1cmwgbG9jYWxob3N0OjgwODAvaGVsbG8/d2hvPXdvcmxkCmBgYApUaGUgcmVzcG9uc2Ugc2hvdWxkIGJlIDIwMCB3aXRoIGJvZHk6CmBgYGpzb24KeyJncmVldGluZyI6IkhlbGxvLCB3b3JsZCEifQpgYGAKCiMjIG9wZW5hcGkgbWlkZGxld2FyZXMKCllvdSBjYW4gdXNlIG9uZSBvZiB0aGUgbWlkZGxld2FyZXMgdW5kZXIgYEBzbWFydHJlY3J1aXRlcnMvbWlkZGxld2FyZXMvKmAgb3IgY3JlYXRlIHlvdXIgb3duLiBTdWNoIG1pZGRsZXdhcmVzIHdpbGwgYmUKYXBwbGllZCB0byBjb25uZWN0LXN0eWxlIGFwcCBmb3IgZWFjaCBvcGVyYXRpb24gYXMgdGhleSBhcmUgc3BlY2lmaWNhdGlvbiBhbmQgb3BlcmF0aW9uIGF3YXJlLiBGb3IgaW5zdGFuY2UsCmBAc21hcnRyZWNydWl0ZXJzL21pZGRsZXdhcmVzL3F1ZXJ5L3ZhbGlkYXRlYCBtaWRkbGV3YXJlIHdpbGwgYmUgYXBwbGllZCB0byBhbnkgYW5kIG9ubHkgb3BlcmF0aW9uIHdoaWNoIGhhcyBxdWVyeQpwYXJhbWV0ZXJzIGRlZmluZWQsIHBhc3NpbmcgYW4gRXJyb3IgdG8gYG5leHRgIGNhbGxiYWNrIHdoZW4gYHJlcS5xdWVyeWAgaXMgaW52YWxpZC4KCkN1cnJlbnRseSBmb2xsb3dpbmcgbWlkZGxld2FyZXMgYXJlIGF2YWlsYWJsZToKLSByZXF1ZXN0IGJvZHkgdmFsaWRhdGlvbiwKLSByZXF1ZXN0IGJvZHkgcGFyc2luZyAoZS5nLiBmb3JtIHN0cmluZyBwYXJhbWV0ZXJzIHRvIHR5cGVzIHNwZWNpZmllZCBpbiBBUEkgZG9jdW1lbnRhdGlvbikKLSBzZXR0aW5nIGRlZmF1bHQgdmFsdWVzIG9uIHJlcXVlc3QgYm9keSwKLSBxdWVyeSBwYXJhbWV0ZXJzIHZhbGlkYXRpb24sCi0gc2V0dGluZyBkZWZhdWx0IHF1ZXJ5IHBhcmFtZXRlcnMgdmFsdWVzCi0gcmVtb3ZpbmcgdW5zcGVjaWZpZWQgcXVlcnkgcGFyYW1ldGVycywKLSBwYXRoIHBhcmFtZXRlcnMgdmFsaWRhdGlvbiwKLSBjb250ZW50IHR5cGUgdmFsaWRhdGlvbiwKLSByb3V0aW5nIHRvIGFwcHJvcHJpYXRlIGNvbnRyb2xsZXIsCi0gb2F1dGggc2NvcGVzIGF1dGhvcml6YXRpb24sCi0gZXJyb3IgaGFuZGxlcnMgKGBNaXNzaW5nUmVxdWlyZWRTY29wZXNgKS4KCiMjIyBWYWxpZGF0aW9uIG1pZGRsZXdhcmVzCgpNaWRkbGV3YXJlcyBmb3IgcmVxdWVzdCBib2R5LCBxdWVyeSBhbmQgcGF0aCB2YWxpZGF0aW9uIGV4cGVjdHMgc2NoZW1hIHZhbGlkYXRvcnMgaW4gb3JkZXIgdG8gYmUgY3JlYXRlZC4KVGhlIHJlY29tbWVuZGVkIHNjaGVtYSB2YWxpZGF0b3IgaXMgW2BAc21hcnRyZWNydWl0ZXJzL29wZW5hcGktc2NoZW1hLXZhbGlkYXRvcmBdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BzbWFydHJlY3J1aXRlcnMvb3BlbmFwaS1zY2hlbWFzLXZhbGlkYXRvcikKCiMjIyBDcmVhdGUgeW91ciBvd24gb3BlbmFwaSBtaWRkbGV3YXJlCgpBZGRpbmcgeW91ciBvd24gb3BlbmFwaSBpcyB2ZXJ5IHNpbXBsZS4gTGV0J3Mgc2F5IHlvdXIgb3BlcmF0aW9uIGhhcyBleHRlbnNpb24KW09wZW5BUEkgU3BlY2lmaWNhdGlvbiAzLjAgU3BlY2lmaWNhdGlvbiBFeHRlbnNpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4xLm1kI3NwZWNpZmljYXRpb25FeHRlbnNpb25zKSAneC1vbmx5LWFkbWluJy4KSWYgaXQgaXMgc2V0IG9uLCB0aGlzIHdpbGwgbWVhbiB0aGF0IG9ubHkgdXNlcnMgd2l0aCBhZG1pbiBjYW4gdXNlIHRoaXMgbWV0aG9kLgpBc3N1bWluZyBzb21lIHByZWNlZGluZyBtaWRkbGV3YXJlIGlzIHNldHRpbmcgYHJlcS51c2VyLnJvbGVgLCB5b3UgY2FuIHdyaXRlIGEgc2ltcGxlIG9wZW5hcGkgbWlkZGxld2FyZQp0aGF0IHdpbGwgZ2F0aGVyIGluZm9ybWF0aW9uIGZyb20gb3BlcmF0aW9uIG9iamVjdCBhbmQgYWN0IGFjY29yZGluZ2x5OgpgYGBqYXZhc2NyaXB0CmNvbnN0IG9ubHlBZG1pbk1pZGRsZXdhcmUgPSBvcGVyYXRpb24gPT4KICAgIChyZXEsIHJlcywgbmV4dCkgPT4gewogICAgICAgIGlmKG9wZXJhdGlvblsneC1vbmx5LWFkbWluJ10gJiYgcmVxLnVzZXIucm9sZSAhPT0gImFkbWluIikgewogICAgICAgICAgICByZXMuc3RhdHVzKDQwMykuanNvbigiQWNjZXNzIGZvcmJpZGRlbi4gRm9yIHRoaXMgb3BlcmF0aW9uLCB5b3UgbmVlZCB0byBoYXZlIGFkbWluIHJvbGUiKQogICAgICAgIH0KICAgICAgICByZXR1cm4gbmV4dCgpCiAgICB9CmBgYAoKIyMgQ29udHJpYnV0aW5nCgpQbGVhc2Ugc2VlIG91ciBbQ29kZSBvZiBjb25kdWN0XShkb2NzL0NPREVfT0ZfQ09ORFVDVC5tZCkgYW5kIFtDb250cmlidXRpbmcgZ3VpZGVsaW5lc10oZG9jcy9DT05UUklCVVRJTkcubWQpCgojIyBMaWNlbnNlCgpbTUlUXShMSUNFTlNFKQoKW25wbS1pbWFnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQHNtYXJ0cmVjcnVpdGVycy9vcGVuYXBpLWZpcnN0LnN2ZwpbbnBtLXVybF06IGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BzbWFydHJlY3J1aXRlcnMvb3BlbmFwaS1maXJzdApbZG93bmxvYWRzLWltYWdlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vQHNtYXJ0cmVjcnVpdGVycy9vcGVuYXBpLWZpcnN0LnN2ZwpbZG93bmxvYWRzLXVybF06IGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BzbWFydHJlY3J1aXRlcnMvb3BlbmFwaS1maXJzdApbbm9kZS12ZXJzaW9uLWltYWdlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ub2RlL3YvQHNtYXJ0cmVjcnVpdGVycy9vcGVuYXBpLWZpcnN0LnN2Zwpbbm9kZS12ZXJzaW9uLXVybF06IGh0dHBzOi8vbm9kZWpzLm9yZy9lbi9kb3dubG9hZC8KW2xpY2Vuc2UtdXJsXTogaHR0cHM6Ly9naXRodWIuY29tL3NtYXJ0cmVjcnVpdGVycy9vcGVuYXBpLWZpcnN0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UKW2xpY2Vuc2UtaW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9sL0BzbWFydHJlY3J1aXRlcnMvb3BlbmFwaS1maXJzdC5zdmcKW3RyYXZpcy11cmxdOiBodHRwczovL3RyYXZpcy1jaS5jb20vc21hcnRyZWNydWl0ZXJzL29wZW5hcGktZmlyc3QKW3RyYXZpcy1pbWFnZV06IGh0dHBzOi8vYXBpLnRyYXZpcy1jaS5jb20vc21hcnRyZWNydWl0ZXJzL29wZW5hcGktZmlyc3Quc3ZnP2JyYW5jaD1tYXN0ZXIK readmeEtag: '"9b52f3708e00f17d78a68292d12aed651637223f"' readmeLastModified: Wed, 07 Aug 2024 14:25:42 GMT repositoryId: 124390318 description: Start your node REST app with designing API first! created: '2018-03-08T12:46:22Z' updated: '2025-11-19T14:40:23Z' language: JavaScript archived: false stars: 40 watchers: 31 forks: 5 owner: smartrecruiters logo: https://avatars.githubusercontent.com/u/1618540?v=4 license: MIT repoEtag: '"0e0fd5cf9526d0221b780afa93b1b5d4e6dc77a3b7ecceee5bb127abcac1ac8a"' repoLastModified: Wed, 19 Nov 2025 14:40:23 GMT foundInMaster: true id: b6882b9c2b3386fd0dac448d07cbcb36 - source: https://openapi.tools/ name: API Platform category: - Server - Server Implementations language: PHP link: https://api-platform.com repository: https://github.com/api-platform/api-platform source_description: REST and GraphQL framework to build modern API-driven projects v2: true v3: true repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vYXBpLXBsYXRmb3JtLmNvbSI+PGltZyBzcmM9Imh0dHBzOi8vYXBpLXBsYXRmb3JtLmNvbS9pbWFnZXMvbG9nb3MvTG9nb19DaXJjbGUlMjB3ZWJieSUyMHRleHQlMjBibHVlLnBuZyIgYWx0PSJBUEkgUGxhdGZvcm0iIHdpZHRoPSIyNTAiIGhlaWdodD0iMjUwIj48L2E+PC9oMT4KCkFQSSBQbGF0Zm9ybSBpcyBhIG5leHQtZ2VuZXJhdGlvbiB3ZWIgZnJhbWV3b3JrIGRlc2lnbmVkIHRvIGVhc2lseSBjcmVhdGUgQVBJLWZpcnN0IHByb2plY3RzIHdpdGhvdXQgY29tcHJvbWlzaW5nIGV4dGVuc2liaWxpdHkKYW5kIGZsZXhpYmlsaXR5OgoKKiBEZXNpZ24geW91ciBvd24gZGF0YSBtb2RlbCBhcyBwbGFpbiBvbGQgUEhQIGNsYXNzZXMgb3IgWyoqaW1wb3J0IGFuIGV4aXN0aW5nIG9udG9sb2d5KipdKGh0dHBzOi8vYXBpLXBsYXRmb3JtLmNvbS9kb2NzL3NjaGVtYS1nZW5lcmF0b3IpLgoqICoqRXhwb3NlIGluIG1pbnV0ZXMgYSBoeXBlcm1lZGlhIFJFU1Qgb3IgYSBHcmFwaFFMIEFQSSoqIHdpdGggcGFnaW5hdGlvbiwgZGF0YSB2YWxpZGF0aW9uLCBhY2Nlc3MgY29udHJvbCwgcmVsYXRpb24gZW1iZWRkaW5nLAogIGZpbHRlcnMsIGFuZCBlcnJvciBoYW5kbGluZy4uLgoqIEJlbmVmaXQgZnJvbSBDb250ZW50IE5lZ290aWF0aW9uOiBbR3JhcGhRTF0oaHR0cHM6Ly9hcGktcGxhdGZvcm0uY29tL2RvY3MvY29yZS9ncmFwaHFsLyksIFtKU09OLUxEXShodHRwczovL2pzb24tbGQub3JnKSwgW0h5ZHJhXShodHRwczovL2h5ZHJhLWNnLmNvbSksCiAgW0hBTF0oaHR0cHM6Ly9naXRodWIuY29tL21pa2VrZWxseS9oYWxfc3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci9oYWxfc3BlY2lmaWNhdGlvbi5tZCksIFtKU09OOkFQSV0oaHR0cHM6Ly9qc29uYXBpLm9yZy8pLCBbWUFNTF0oaHR0cHM6Ly95YW1sLm9yZy8pLCBbSlNPTl0oaHR0cHM6Ly93d3cuanNvbi5vcmcvKSwgW1hNTF0oaHR0cHM6Ly93d3cudzMub3JnL1hNTC8pIGFuZCBbQ1NWXShodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvcmZjNDE4MC50eHQpIGFyZSBzdXBwb3J0ZWQgb3V0IG9mIHRoZSBib3guCiogRW5qb3kgdGhlICoqYmVhdXRpZnVsIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIEFQSSBkb2N1bWVudGF0aW9uKiogKFtPcGVuQVBJXShodHRwczovL2FwaS1wbGF0Zm9ybS5jb20vZG9jcy9jb3JlL29wZW5hcGkvKSkuCiogQWRkIFsqKmEgY29udmVuaWVudCBNYXRlcmlhbCBEZXNpZ24gYWRtaW5pc3RyYXRpb24gaW50ZXJmYWNlKipdKGh0dHBzOi8vYXBpLXBsYXRmb3JtLmNvbS9kb2NzL2FkbWluKSBidWlsdCB3aXRoIFtSZWFjdF0oaHR0cHM6Ly9yZWFjdGpzLm9yZy8pCiAgd2l0aG91dCB3cml0aW5nIGEgbGluZSBvZiBjb2RlLgoqICoqU2NhZmZvbGQgZnVsbHkgZnVuY3Rpb25hbCBQcm9ncmVzc2l2ZS1XZWItQXBwcyBhbmQgbW9iaWxlIGFwcHMqKiBidWlsdCB3aXRoIFtOZXh0LmpzXShodHRwczovL2FwaS1wbGF0Zm9ybS5jb20vZG9jcy9jbGllbnQtZ2VuZXJhdG9yL25leHRqcy8pIChSZWFjdCksCltOdXh0LmpzXShodHRwczovL2FwaS1wbGF0Zm9ybS5jb20vZG9jcy9jbGllbnQtZ2VuZXJhdG9yL251eHRqcy8pIChWdWUuanMpIG9yIFtSZWFjdCBOYXRpdmVdKGh0dHBzOi8vYXBpLXBsYXRmb3JtLmNvbS9kb2NzL2NsaWVudC1nZW5lcmF0b3IvcmVhY3QtbmF0aXZlLykKdGhhbmtzIHRvIFt0aGUgY2xpZW50IGdlbmVyYXRvcl0oaHR0cHM6Ly9hcGktcGxhdGZvcm0uY29tL2RvY3MvY2xpZW50LWdlbmVyYXRvci8pIChhIFZ1ZS5qcyBnZW5lcmF0b3IgaXMgYWxzbyBhdmFpbGFibGUpLgoqIEluc3RhbGwgYSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBhbmQgZGVwbG95IHlvdXIgcHJvamVjdCBpbiBwcm9kdWN0aW9uIHVzaW5nICoqW0RvY2tlcl0oaHR0cHM6Ly9hcGktcGxhdGZvcm0uY29tL2RvY3MvZGlzdHJpYnV0aW9uKSoqCmFuZCBbS3ViZXJuZXRlc10oaHR0cHM6Ly9hcGktcGxhdGZvcm0uY29tL2RvY3MvZGVwbG95bWVudC9rdWJlcm5ldGVzKS4KKiBFYXNpbHkgYWRkICoqW09BdXRoXShodHRwczovL29hdXRoLm5ldC8pIGF1dGhlbnRpY2F0aW9uKiouCiogQ3JlYXRlIHNwZWNzIGFuZCB0ZXN0cyB3aXRoICoqW2EgZGV2ZWxvcGVyIGZyaWVuZGx5IEFQSSB0ZXN0aW5nIHRvb2xdKGh0dHBzOi8vYXBpLXBsYXRmb3JtLmNvbS9kb2NzL2Rpc3RyaWJ1dGlvbi90ZXN0aW5nLykqKi4KClRoZSBvZmZpY2lhbCBwcm9qZWN0IGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlICoqW29uIHRoZSBBUEkgUGxhdGZvcm0gd2Vic2l0ZV0oaHR0cHM6Ly9hcGktcGxhdGZvcm0uY29tKSoqLgoKQVBJIFBsYXRmb3JtIGVtYnJhY2VzIG9wZW4gd2ViIHN0YW5kYXJkcyBhbmQgdGhlCltMaW5rZWQgRGF0YV0oaHR0cHM6Ly93d3cudzMub3JnL3N0YW5kYXJkcy9zZW1hbnRpY3dlYi9kYXRhKSBtb3ZlbWVudC4gWW91ciBBUEkgd2lsbCBhdXRvbWF0aWNhbGx5IGV4cG9zZSBzdHJ1Y3R1cmVkIGRhdGEuCkl0IG1lYW5zIHRoYXQgeW91ciBBUEkgUGxhdGZvcm0gYXBwbGljYXRpb24gaXMgdXNhYmxlICoqb3V0IG9mIHRoZSBib3gqKiB3aXRoIHRlY2hub2xvZ2llcyBvZgp0aGUgc2VtYW50aWMgd2ViLgoKSXQgYWxzbyBtZWFucyB0aGF0ICoqeW91ciBTRU8gd2lsbCBiZSBpbXByb3ZlZCoqIGJlY2F1c2UgKipbR29vZ2xlIGxldmVyYWdlcyB0aGVzZSBmb3JtYXRzXShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9zZWFyY2gvZG9jcy9ndWlkZXMvaW50cm8tc3RydWN0dXJlZC1kYXRhKSoqLgoKTGFzdCBidXQgbm90IGxlYXN0LCB0aGUgc2VydmVyIGNvbXBvbmVudCBvZiBBUEkgUGxhdGZvcm0gaXMgYnVpbHQgb24gdG9wIG9mIHRoZSBbU3ltZm9ueV0oaHR0cHM6Ly9zeW1mb255LmNvbSkgZnJhbWV3b3JrLAp3aGlsZSBjbGllbnQgY29tcG9uZW50cyBsZXZlcmFnZSBbUmVhY3RdKGh0dHBzOi8vcmVhY3Rqcy5vcmcvKSAoW1Z1ZS5qc10oaHR0cHM6Ly92dWVqcy5vcmcvKSBmbGF2b3JzIGFyZSBhbHNvIGF2YWlsYWJsZSkuCkl0IG1lYW5zIHRoYXQgeW91IGNhbjoKCiogVXNlICoqdGhvdXNhbmRzIG9mIFN5bWZvbnkgYnVuZGxlcyBhbmQgUmVhY3QgY29tcG9uZW50cyoqIHdpdGggQVBJIFBsYXRmb3JtLgoqIEludGVncmF0ZSBBUEkgUGxhdGZvcm0gaW4gKiphbnkgZXhpc3RpbmcgU3ltZm9ueSwgUmVhY3QsIG9yIFZ1ZSBhcHBsaWNhdGlvbioqLgoqIFJldXNlICoqYWxsIHlvdXIgU3ltZm9ueSBhbmQgSmF2YVNjcmlwdCBza2lsbHMqKiwgYW5kIGJlbmVmaXQgZnJvbSB0aGUgaW5jcmVkaWJsZSBhbW91bnQgb2YgZG9jdW1lbnRhdGlvbiBhdmFpbGFibGUuCiogRW5qb3kgdGhlIHBvcHVsYXIgW0RvY3RyaW5lIE9STV0oaHR0cHM6Ly93d3cuZG9jdHJpbmUtcHJvamVjdC5vcmcvcHJvamVjdHMvb3JtLmh0bWwpICh1c2VkIGJ5IGRlZmF1bHQsIGJ1dCBmdWxseSBvcHRpb25hbDoKICB5b3UgY2FuIHVzZSB0aGUgZGF0YSBwcm92aWRlciB5b3Ugd2FudCwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBNb25nb0RCIGFuZCBFbGFzdGljc2VhcmNoKQoKIyMgSW5zdGFsbAoKW1JlYWQgdGhlIG9mZmljaWFsICJHZXR0aW5nIFN0YXJ0ZWQiIGd1aWRlXShodHRwczovL2FwaS1wbGF0Zm9ybS5jb20vZG9jcy9kaXN0cmlidXRpb24vKS4KCiMjIENyZWRpdHMKCkNyZWF0ZWQgYnkgW0vDqXZpbiBEdW5nbGFzXShodHRwczovL2R1bmdsYXMuZnIpLiBDb21tZXJjaWFsIHN1cHBvcnQgaXMgYXZhaWxhYmxlIGF0IFtMZXMtVGlsbGV1bHMuY29vcF0oaHR0cHM6Ly9sZXMtdGlsbGV1bHMuY29vcCkuCg== readmeEtag: '"76a11567f28b360e0fc0597ffdefb227a6c9cf86"' readmeLastModified: Tue, 06 Aug 2024 14:12:56 GMT repositoryId: 31790438 description: >- 🕸️ Create REST and GraphQL APIs, scaffold Jamstack webapps, stream changes in real-time. created: '2015-03-06T21:46:05Z' updated: '2026-02-04T14:46:42Z' language: TypeScript archived: false stars: 9105 watchers: 210 forks: 979 owner: api-platform logo: https://avatars.githubusercontent.com/u/13420081?v=4 license: MIT repoEtag: '"748cb3ed44d2fc2f18ab17a2423661e1a57c5970dab6ba1584f4bea45d9683a1"' repoLastModified: Wed, 04 Feb 2026 14:46:42 GMT foundInMaster: true id: d14f5904300aabf1ceef4660a6b3d57e - source: https://openapi.tools/ name: Mojolicious::Plugin::OpenApi category: Server language: Perl link: https://metacpan.org/pod/Mojolicious::Plugin::OpenAPI repository: https://github.com/jhthorsen/mojolicious-plugin-openapi source_description: > Mojolicious::Plugin::OpenAPI is a plugin for Mojolicious framework that add routes and input/output validation to your Mojolicious application based on OpenAPI description documents.' v2: true v3: true repositoryMetadata: base64Readme: >- IyBOQU1FCgpNb2pvbGljaW91czo6UGx1Z2luOjpPcGVuQVBJIC0gT3BlbkFQSSAvIFN3YWdnZXIgcGx1Z2luIGZvciBNb2pvbGljaW91cwoKIyBTWU5PUFNJUwoKICAgICMgSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIE1vam9saWNpb3VzOjpQbHVnaW46Ok9wZW5BUEkgd2l0aCBhICJmdWxsIGFwcCIuCiAgICAjIFNlZSB0aGUgbGlua3MgYWZ0ZXIgdGhpcyBleGFtcGxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgdXNlIE1vam9saWNpb3VzOjpMaXRlOwoKICAgICMgQmVjYXVzZSB0aGUgcm91dGUgbmFtZSAiZWNobyIgbWF0Y2hlcyB0aGUgIngtbW9qby1uYW1lIiwgdGhpcyByb3V0ZQogICAgIyB3aWxsIGJlIG1vdmVkIHVuZGVyICJiYXNlUGF0aCIsIHJlc3VsdGluZyBpbiAiUE9TVCAvYXBpL2VjaG8iCiAgICBwb3N0ICIvZWNobyIgPT4gc3ViIHsKCiAgICAgICMgVmFsaWRhdGUgaW5wdXQgcmVxdWVzdCBvciByZXR1cm4gYW4gZXJyb3IgZG9jdW1lbnQKICAgICAgbXkgJGMgPSBzaGlmdC0+b3BlbmFwaS0+dmFsaWRfaW5wdXQgb3IgcmV0dXJuOwoKICAgICAgIyBHZW5lcmF0ZSBzb21lIGRhdGEKICAgICAgbXkgJGRhdGEgPSB7Ym9keSA9PiAkYy0+cmVxLT5qc29ufTsKCiAgICAgICMgVmFsaWRhdGUgdGhlIG91dHB1dCByZXNwb25zZSBhbmQgcmVuZGVyIGl0IHRvIHRoZSB1c2VyIGFnZW50CiAgICAgICMgdXNpbmcgYSBjdXN0b20gIm9wZW5hcGkiIGhhbmRsZXIuCiAgICAgICRjLT5yZW5kZXIob3BlbmFwaSA9PiAkZGF0YSk7CiAgICB9LCAiZWNobyI7CgogICAgIyBMb2FkIHNwZWNpZmljYXRpb24gYW5kIHN0YXJ0IHdlYiBzZXJ2ZXIKICAgIHBsdWdpbiBPcGVuQVBJID0+IHt1cmwgPT4gImRhdGE6Ly8vc3dhZ2dlci55YW1sIn07CiAgICBhcHAtPnN0YXJ0OwoKICAgIF9fREFUQV9fCiAgICBAQCBzd2FnZ2VyLnlhbWwKICAgIHN3YWdnZXI6ICIyLjAiCiAgICBpbmZvOiB7IHZlcnNpb246ICIwLjgiLCB0aXRsZTogIkVjaG8gU2VydmljZSIgfQogICAgc2NoZW1lczogWyJodHRwcyJdCiAgICBiYXNlUGF0aDogIi9hcGkiCiAgICBwYXRoczoKICAgICAgL2VjaG86CiAgICAgICBwb3N0OgogICAgICAgICB4LW1vam8tbmFtZTogImVjaG8iCiAgICAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgIC0geyBpbjogImJvZHkiLCBuYW1lOiAiYm9keSIsIHNjaGVtYTogeyB0eXBlOiAib2JqZWN0IiB9IH0KICAgICAgICAgcmVzcG9uc2VzOgogICAgICAgICAgIDIwMDoKICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiRWNobyByZXNwb25zZSIKICAgICAgICAgICAgIHNjaGVtYTogeyB0eXBlOiAib2JqZWN0IiB9CgpTZWUgW01vam9saWNpb3VzOjpQbHVnaW46Ok9wZW5BUEk6Okd1aWRlczo6T3BlbkFQSXYyXShodHRwczovL21ldGFjcGFuLm9yZy9wb2QvTW9qb2xpY2lvdXMlM0ElM0FQbHVnaW4lM0ElM0FPcGVuQVBJJTNBJTNBR3VpZGVzJTNBJTNBT3BlbkFQSXYyKSBvcgpbTW9qb2xpY2lvdXM6OlBsdWdpbjo6T3BlbkFQSTo6R3VpZGVzOjpPcGVuQVBJdjNdKGh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9Nb2pvbGljaW91cyUzQSUzQVBsdWdpbiUzQSUzQU9wZW5BUEklM0ElM0FHdWlkZXMlM0ElM0FPcGVuQVBJdjMpIGZvciBtb3JlIGluIGRlcHRoCmluZm9ybWF0aW9uIGFib3V0IGhvdyB0byB1c2UgW01vam9saWNpb3VzOjpQbHVnaW46Ok9wZW5BUEldKGh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9Nb2pvbGljaW91cyUzQSUzQVBsdWdpbiUzQSUzQU9wZW5BUEkpIHdpdGggYSAiZnVsbCBhcHAiLgpFdmVuIHdpdGggYSAibGl0ZSBhcHAiIGl0IGNhbiBiZSB2ZXJ5IHVzZWZ1bCB0byByZWFkIHRob3NlIGd1aWRlcy4KCkxvb2tpbmcgYXQgdGhlIGRvY3VtZW50YXRpb24gZm9yClsieC1tb2pvLXRvIiBpbiBNb2pvbGljaW91czo6UGx1Z2luOjpPcGVuQVBJOjpHdWlkZXM6Ok9wZW5BUEl2Ml0oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL01vam9saWNpb3VzJTNBJTNBUGx1Z2luJTNBJTNBT3BlbkFQSSUzQSUzQUd1aWRlcyUzQSUzQU9wZW5BUEl2MiN4LW1vam8tdG8pIGNhbiBiZSBlc3BlY2lhbGx5CnVzZWZ1bC4gKFRoZSBsb2dpYyBpcyB0aGUgc2FtZSBmb3IgT3BlbkFQSXYyIGFuZCBPcGVuQVBJdjMpCgojIERFU0NSSVBUSU9OCgpbTW9qb2xpY2lvdXM6OlBsdWdpbjo6T3BlbkFQSV0oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL01vam9saWNpb3VzJTNBJTNBUGx1Z2luJTNBJTNBT3BlbkFQSSkgaXMgW01vam9saWNpb3VzOjpQbHVnaW5dKGh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9Nb2pvbGljaW91cyUzQSUzQVBsdWdpbikgdGhhdCBhZGQgcm91dGVzIGFuZAppbnB1dC9vdXRwdXQgdmFsaWRhdGlvbiB0byB5b3VyIFtNb2pvbGljaW91c10oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL01vam9saWNpb3VzKSBhcHBsaWNhdGlvbiBiYXNlZCBvbiBhIE9wZW5BUEkKKFN3YWdnZXIpIHNwZWNpZmljYXRpb24uIFRoaXMgcGx1Z2luIHN1cHBvcnRzIGJvdGggdmVyc2lvbiBbMi4wXSgjc2NoZW1hKSBhbmQKWzMueF0oI3NjaGVtYSksIHRob3VnaCAzLnggX21pZ2h0XyBoYXZlIHNvbWUgbWlzc2luZyBmZWF0dXJlcy4KCkhhdmUgYSBsb29rIGF0IHRoZSBbIlNFRSBBTFNPIl0oI3NlZS1hbHNvKSBmb3IgcmVmZXJlbmNlcyB0byBwbHVnaW5zIGFuZCBvdGhlciB1c2VmdWwKZG9jdW1lbnRhdGlvbi4KClBsZWFzZSByZXBvcnQgaW4gW2lzc3Vlc10oaHR0cHM6Ly9naXRodWIuY29tL2podGhvcnNlbi9qc29uLXZhbGlkYXRvci9pc3N1ZXMpCm9yIG9wZW4gcHVsbCByZXF1ZXN0cyB0byBlbmhhbmNlIHRoZSAzLjAgc3VwcG9ydC4KCiMgSEVMUEVSUwoKIyMgb3BlbmFwaS5zcGVjCgogICAgJGhhc2ggPSAkYy0+b3BlbmFwaS0+c3BlYygkanNvbl9wb2ludGVyKQogICAgJGhhc2ggPSAkYy0+b3BlbmFwaS0+c3BlYygiL2luZm8vdGl0bGUiKQogICAgJGhhc2ggPSAkYy0+b3BlbmFwaS0+c3BlYzsKClJldHVybnMgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4gQSBKU09OIFBvaW50ZXIgY2FuIGJlIHVzZWQgdG8gZXh0cmFjdCBhCmdpdmVuIHNlY3Rpb24gb2YgdGhlIHNwZWNpZmljYXRpb24uIFRoZSBkZWZhdWx0IHZhbHVlIG9mIGAkanNvbl9wb2ludGVyYCB3aWxsCmJlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IG9wZXJhdGlvbi4gRXhhbXBsZToKCiAgICB7CiAgICAgICJwYXRocyI6IHsKICAgICAgICAiL3BldHMiOiB7CiAgICAgICAgICAiZ2V0IjogewogICAgICAgICAgICAvLyBUaGlzIGRhdGFzdHJ1Y3R1cmUgaXMgcmV0dXJuZWQgYnkgZGVmYXVsdAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKIyMgb3BlbmFwaS52YWxpZGF0ZQoKICAgIEBlcnJvcnMgPSAkYy0+b3BlbmFwaS0+dmFsaWRhdGU7CgpVc2VkIHRvIHZhbGlkYXRlIGEgcmVxdWVzdC4gYEBlcnJvcnNgIGhvbGRzIGEgbGlzdCBvZgpbSlNPTjo6VmFsaWRhdG9yOjpFcnJvcl0oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL0pTT04lM0ElM0FWYWxpZGF0b3IlM0ElM0FFcnJvcikgb2JqZWN0cyBvciBlbXB0eSBsaXN0IG9uIHZhbGlkIGlucHV0LgoKTm90ZSB0aGF0IHRoaXMgaGVscGVyIGlzIG9ubHkgZm9yIGN1c3RvbWl6YXRpb24uIFlvdSBwcm9iYWJseSB3YW50Clsib3BlbmFwaS52YWxpZFxfaW5wdXQiXSgjb3BlbmFwaS12YWxpZF9pbnB1dCkgaW4gbW9zdCBjYXNlcy4KCiMjIG9wZW5hcGkudmFsaWRcX2lucHV0CgogICAgJGMgPSAkYy0+b3BlbmFwaS0+dmFsaWRfaW5wdXQ7CgpSZXR1cm5zIHRoZSBbTW9qb2xpY2lvdXM6OkNvbnRyb2xsZXJdKGh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9Nb2pvbGljaW91cyUzQSUzQUNvbnRyb2xsZXIpIG9iamVjdCBpZiB0aGUgaW5wdXQgaXMgdmFsaWQgb3IKYXV0b21hdGljYWxseSByZW5kZXIgYW4gZXJyb3IgZG9jdW1lbnQgaWYgbm90IGFuZCByZXR1cm4gZmFsc2UuIFNlZQpbIlNZTk9QU0lTIl0oI3N5bm9wc2lzKSBmb3IgZXhhbXBsZSB1c2FnZS4KCiMgSE9PS1MKCltNb2pvbGljaW91czo6UGx1Z2luOjpPcGVuQVBJXShodHRwczovL21ldGFjcGFuLm9yZy9wb2QvTW9qb2xpY2lvdXMlM0ElM0FQbHVnaW4lM0ElM0FPcGVuQVBJKSB3aWxsIGVtaXQgdGhlIGZvbGxvd2luZyBob29rcyBvbiB0aGUKW2FwcGxpY2F0aW9uXShodHRwczovL21ldGFjcGFuLm9yZy9wb2QvTW9qb2xpY2lvdXMpIG9iamVjdC4KCiMjIG9wZW5hcGlcX3JvdXRlc1xfYWRkZWQKCkVtaXR0ZWQgYWZ0ZXIgYWxsIHJvdXRlcyBoYXZlIGJlZW4gYWRkZWQgYnkgdGhpcyBwbHVnaW4uCgogICAgJGFwcC0+aG9vayhvcGVuYXBpX3JvdXRlc19hZGRlZCA9PiBzdWIgewogICAgICBteSAoJG9wZW5hcGksICRyb3V0ZXMpID0gQF87CgogICAgICBmb3IgbXkgJHJvdXRlIChAJHJvdXRlcykgewogICAgICAgIC4uLgogICAgICB9CiAgICB9KTsKClRoaXMgaG9vayBpcyBFWFBFUklNRU5UQUwgYW5kIHN1YmplY3QgZm9yIGNoYW5nZS4KCiMgUkVOREVSRVIKClRoaXMgcGx1Z2luIHJlZ2lzdGVyIGEgbmV3IGhhbmRsZXIgY2FsbGVkIGBvcGVuYXBpYC4gVGhlIHNwZWNpYWwgdGhpbmcgYWJvdXQKdGhpcyBoYW5kbGVyIGlzIHRoYXQgaXQgd2lsbCB2YWxpZGF0ZSB0aGUgZGF0YSBiZWZvcmUgc2VuZGluZyBpdCBiYWNrIHRvIHRoZQp1c2VyIGFnZW50LiBFeGFtcGxlczoKCiAgICAkYy0+cmVuZGVyKGpzb24gPT4ge2ZvbyA9PiAxMjN9KTsgICAgIyB3aXRob3V0IHZhbGlkYXRpb24KICAgICRjLT5yZW5kZXIob3BlbmFwaSA9PiB7Zm9vID0+IDEyM30pOyAjIHdpdGggdmFsaWRhdGlvbgoKVGhpcyBoYW5kbGVyIHdpbGwgYWxzbyB1c2UgWyJyZW5kZXJlciJdKCNyZW5kZXJlcikgdG8gZm9ybWF0IHRoZSBvdXRwdXQgZGF0YS4gVGhlIGNvZGUKYmVsb3cgc2hvd3MgdGhlIGRlZmF1bHQgWyJyZW5kZXJlciJdKCNyZW5kZXJlcikgd2hpY2ggZ2VuZXJhdGVzIEpTT04gZGF0YToKCiAgICAkYXBwLT5wbHVnaW4oCiAgICAgIE9wZW5BUEkgPT4gewogICAgICAgIHJlbmRlcmVyID0+IHN1YiB7CiAgICAgICAgICBteSAoJGMsICRkYXRhKSA9IEBfOwogICAgICAgICAgcmV0dXJuIE1vam86OkpTT046OmVuY29kZV9qc29uKCRkYXRhKTsKICAgICAgICB9CiAgICAgIH0KICAgICk7CgojIEFUVFJJQlVURVMKCiMjIHJvdXRlCgogICAgJHJvdXRlID0gJG9wZW5hcGktPnJvdXRlOwoKVGhlIHBhcmVudCBbTW9qb2xpY2lvdXM6OlJvdXRlczo6Um91dGVdKGh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9Nb2pvbGljaW91cyUzQSUzQVJvdXRlcyUzQSUzQVJvdXRlKSBvYmplY3QgZm9yIGFsbCB0aGUgT3BlbkFQSSBlbmRwb2ludHMuCgojIyB2YWxpZGF0b3IKCiAgICAkanYgPSAkb3BlbmFwaS0+dmFsaWRhdG9yOwoKSG9sZHMgZWl0aGVyIGEgW0pTT046OlZhbGlkYXRvcjo6U2NoZW1hOjpPcGVuQVBJdjJdKGh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9KU09OJTNBJTNBVmFsaWRhdG9yJTNBJTNBU2NoZW1hJTNBJTNBT3BlbkFQSXYyKSBvciBhCltKU09OOjpWYWxpZGF0b3I6OlNjaGVtYTo6T3BlbkFQSXYzXShodHRwczovL21ldGFjcGFuLm9yZy9wb2QvSlNPTiUzQSUzQVZhbGlkYXRvciUzQSUzQVNjaGVtYSUzQSUzQU9wZW5BUEl2Mykgb2JqZWN0LgoKIyBNRVRIT0RTCgojIyByZWdpc3RlcgoKICAgICRvcGVuYXBpID0gJG9wZW5hcGktPnJlZ2lzdGVyKCRhcHAsIFwlY29uZmlnKTsKICAgICRvcGVuYXBpID0gJGFwcC0+cGx1Z2luKE9wZW5BUEkgPT4gXCVjb25maWcpOwoKTG9hZHMgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiwgdmFsaWRhdGVzIGl0IGFuZCBhZGQgcm91dGVzIHRvClskYXBwXShodHRwczovL21ldGFjcGFuLm9yZy9wb2QvTW9qb2xpY2lvdXMpLiBJdCB3aWxsIGFsc28gc2V0IHVwIFsiSEVMUEVSUyJdKCNoZWxwZXJzKSBhbmQgYWRkcyBhCltiZWZvcmVcX3JlbmRlcl0oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL01vam9saWNpb3VzI2JlZm9yZV9yZW5kZXIpIGhvb2sgZm9yIGF1dG8tcmVuZGVyaW5nIG9mIGVycm9yCmRvY3VtZW50cy4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgb2JqZWN0IGluc3RhbmNlLCB3aGljaCBhbGxvdyB5b3UgdG8gYWNjZXNzCnRoZSBbIkFUVFJJQlVURVMiXSgjYXR0cmlidXRlcykgYWZ0ZXIgeW91IGxvYWQgdGhlIHBsdWdpbi4KCmAlY29uZmlnYCBjYW4gaGF2ZToKCiMjIyBjb2VyY2UKClNlZSBbImNvZXJjZSIgaW4gSlNPTjo6VmFsaWRhdG9yXShodHRwczovL21ldGFjcGFuLm9yZy9wb2QvSlNPTiUzQSUzQVZhbGlkYXRvciNjb2VyY2UpIGZvciBwb3NzaWJsZSB2YWx1ZXMgdGhhdCBgY29lcmNlYCBjYW4gdGFrZS4KCkRlZmF1bHQ6IGJvb2xlYW5zLG51bWJlcnMsc3RyaW5ncwoKVGhlIGRlZmF1bHQgdmFsdWUgd2lsbCBpbmNsdWRlICJkZWZhdWx0cyIgaW4gdGhlIGZ1dHVyZSwgb25jZSB0aGF0IGlzIHN0YWJsZSBlbm91Z2guCgojIyMgZGVmYXVsdFxfcmVzcG9uc2UKCkluc3RydWN0aW9ucyBmb3IKWyJhZGRcX2RlZmF1bHRcX3Jlc3BvbnNlXF9zY2hlbWEiIGluIEpTT046OlZhbGlkYXRvcjo6U2NoZW1hOjpPcGVuQVBJdjJdKGh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9KU09OJTNBJTNBVmFsaWRhdG9yJTNBJTNBU2NoZW1hJTNBJTNBT3BlbkFQSXYyI2FkZF9kZWZhdWx0X3Jlc3BvbnNlX3NjaGVtYSkuIChBbHNvIHVzZWQKZm9yIE9wZW5BUEl2MykKCiMjIyBmb3JtYXQKClNldCB0aGlzIHRvIGEgZGVmYXVsdCBsaXN0IG9mIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IHlvdXIgQVBJIGFjY2VwdHMuIFRoaXMgdmFsdWUKY2FuIGJlIG92ZXJ3cml0dGVuIGJ5ClsieC1tb2pvLXRvIiBpbiBNb2pvbGljaW91czo6UGx1Z2luOjpPcGVuQVBJOjpHdWlkZXM6Ok9wZW5BUEl2Ml0oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL01vam9saWNpb3VzJTNBJTNBUGx1Z2luJTNBJTNBT3BlbkFQSSUzQSUzQUd1aWRlcyUzQSUzQU9wZW5BUEl2MiN4LW1vam8tdG8pLgoKVGhpcyBjb25maWcgcGFyYW1ldGVyIGlzIEVYUEVSSU1FTlRBTCBhbmQgc3ViamVjdCBmb3IgY2hhbmdlLgoKIyMjIGxvZ1xfbGV2ZWwKCmBsb2dfbGV2ZWxgIGlzIHVzZWQgd2hlbiBsb2dnaW5nIGludmFsaWQgcmVxdWVzdC9yZXNwb25zZSBlcnJvciBtZXNzYWdlcy4KCkRlZmF1bHQ6ICJ3YXJuIi4KCiMjIyBvcFxfc3BlY1xfdG9cX3JvdXRlCgpgb3Bfc3BlY190b19yb3V0ZWAgY2FuIGJlIHByb3ZpZGVkIGlmIHlvdSB3YW50IHRvIGFkZCByb3V0ZSBkZWZpbml0aW9ucwp3aXRob3V0IHVzaW5nICJ4LW1vam8tdG8iLiBFeGFtcGxlOgoKICAgICRhcHAtPnBsdWdpbihPcGVuQVBJID0+IHtvcF9zcGVjX3RvX3JvdXRlID0+IHN1YiB7CiAgICAgIG15ICgkcGx1Z2luLCAkb3Bfc3BlYywgJHJvdXRlKSA9IEBfOwoKICAgICAgIyBIZXJlIGFyZSB0d28gd2F5cyB0byBjdXN0b21pemUgd2hlcmUgdG8gZGlzcGF0Y2ggdGhlIHJlcXVlc3QKICAgICAgJHJvdXRlLT50byhjYiA9PiBzdWIgeyBzaGlmdC0+cmVuZGVyKG9wZW5hcGkgPT4gLi4uKSB9KTsKICAgICAgJHJvdXRlLT50byh1Y2ZpcnN0ICIkb3Bfc3BlYy0+e29wZXJhdGlvbklkfSNoYW5kbGVfcmVxdWVzdCIpOwogICAgfX0pOwoKVGhpcyBmZWF0dXJlIGlzIEVYUEVSSU1FTlRBTCBhbmQgbWlnaHQgYmUgYWx0ZXJlZCBhbmQvb3IgcmVtb3ZlZC4KCiMjIyBwbHVnaW5zCgpBIGxpc3Qgb2YgT3BlbkFQSSBjbGFzc2VzIHRvIGV4dGVuZCB0aGUgZnVuY3Rpb25hbGl0eS4gRGVmYXVsdCBpczoKW01vam9saWNpb3VzOjpQbHVnaW46Ok9wZW5BUEk6OkNvcnNdKGh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9Nb2pvbGljaW91cyUzQSUzQVBsdWdpbiUzQSUzQU9wZW5BUEklM0ElM0FDb3JzKSwKW01vam9saWNpb3VzOjpQbHVnaW46Ok9wZW5BUEk6OlNwZWNSZW5kZXJlcl0oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL01vam9saWNpb3VzJTNBJTNBUGx1Z2luJTNBJTNBT3BlbkFQSSUzQSUzQVNwZWNSZW5kZXJlcikgYW5kCltNb2pvbGljaW91czo6UGx1Z2luOjpPcGVuQVBJOjpTZWN1cml0eV0oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL01vam9saWNpb3VzJTNBJTNBUGx1Z2luJTNBJTNBT3BlbkFQSSUzQSUzQVNlY3VyaXR5KS4KCiAgICAkYXBwLT5wbHVnaW4oT3BlbkFQSSA9PiB7cGx1Z2lucyA9PiBbcXcoK0NvcnMgK1NwZWNSZW5kZXJlciArU2VjdXJpdHkpXX0pOwoKWW91IGNhbiBsb2FkIHlvdXIgb3duIHBsdWdpbnMgYnkgZG9pbmc6CgogICAgJGFwcC0+cGx1Z2luKE9wZW5BUEkgPT4ge3BsdWdpbnMgPT4gW3F3KCtTcGVjUmVuZGVyZXIgTXk6OkNvb2w6Ok9wZW5BUEk6OlBsdWdpbildfSk7CgojIyMgcmVuZGVyZXIKClNlZSBbIlJFTkRFUkVSIl0oI3JlbmRlcmVyKS4KCiMjIyByb3V0ZQoKYHJvdXRlYCBjYW4gYmUgc3BlY2lmaWVkIGluIGNhc2UgeW91IHdhbnQgdG8gaGF2ZSBhIHByb3RlY3RlZCBBUEkuIEV4YW1wbGU6CgogICAgJGFwcC0+cGx1Z2luKE9wZW5BUEkgPT4gewogICAgICByb3V0ZSA9PiAkYXBwLT5yb3V0ZXMtPnVuZGVyKCIvYXBpIiktPnRvKCJ1c2VyI2F1dGgiKSwKICAgICAgdXJsICAgPT4gJGFwcC0+aG9tZS0+cmVsX2ZpbGUoImNvb2wuYXBpIiksCiAgICB9KTsKCiMjIyBza2lwXF92YWxpZGF0aW5nXF9zcGVjaWZpY2F0aW9uCgpVc2VkIHRvIHByZXZlbnQgY2FsbGluZyBbImVycm9ycyIgaW4gSlNPTjo6VmFsaWRhdG9yOjpTY2hlbWE6Ok9wZW5BUEl2Ml0oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL0pTT04lM0ElM0FWYWxpZGF0b3IlM0ElM0FTY2hlbWElM0ElM0FPcGVuQVBJdjIjZXJyb3JzKSBmb3IgdGhlCnNwZWNpZmljYXRpb24uCgojIyMgc3BlY1xfcm91dGVcX25hbWUKCk5hbWUgb2YgdGhlIHJvdXRlIHRoYXQgaGFuZGxlcyB0aGUgImJhc2VQYXRoIiBwYXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZApzZXJ2ZXMgdGhlIHNwZWNpZmljYXRpb24uIERlZmF1bHRzIHRvICJ4LW1vam8tbmFtZSIgaW4gdGhlIHNwZWNpZmljYXRpb24gYXQKdGhlIHRvcCBsZXZlbC4KCiMjIyBzcGVjLCB1cmwKClNlZSBbInNjaGVtYSIgaW4gSlNPTjo6VmFsaWRhdG9yXShodHRwczovL21ldGFjcGFuLm9yZy9wb2QvSlNPTiUzQSUzQVZhbGlkYXRvciNzY2hlbWEpIGZvciB0aGUgZGlmZmVyZW50IGB1cmxgIGZvcm1hdHMgdGhhdCBpcwphY2NlcHRlZC4KCmBzcGVjYCBpcyBhbiBhbGlhcyBmb3IgInVybCIsIHdoaWNoIG1pZ2h0IG1ha2UgbW9yZSBzZW5zZSBpZiB5b3VyCnNwZWNpZmljYXRpb24gaXMgd3JpdHRlbiBpbiBwZXJsLCBpbnN0ZWFkIG9mIEpTT04gb3IgWUFNTC4KCkhlcmUgYXJlIHNvbWUgY29tbW9uIHVzZXM6CgogICAgJGFwcC0+cGx1Z2luKE9wZW5BUEkgPT4ge3VybCAgPT4gJGFwcC0+aG9tZS0+cmVsX2ZpbGUoJ29wZW5hcGkueWFtbCcpKTsKICAgICRhcHAtPnBsdWdpbihPcGVuQVBJID0+IHt1cmwgID0+ICdodHRwczovL2V4YW1wbGUuY29tL3N3YWdnZXIuanNvbid9KTsKICAgICRhcHAtPnBsdWdpbihPcGVuQVBJID0+IHtzcGVjID0+IEpTT046OlZhbGlkYXRvcjo6U2NoZW1hOjpPcGVuQVBJdjMtPm5ldyguLi4pfSk7CiAgICAkYXBwLT5wbHVnaW4oT3BlbkFQSSA9PiB7c3BlYyA9PiB7c3dhZ2dlciA9PiAiMi4wIiwgcGF0aHMgPT4gey4uLn0sIC4uLn19KTsKCiMjIyB2ZXJzaW9uXF9mcm9tXF9jbGFzcwoKQ2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGRlbiBgL2luZm8vdmVyc2lvbmAgaW4gdGhlIEFQSSBzcGVjaWZpY2F0aW9uLCBmcm9tIHRoZQpyZXR1cm4gdmFsdWUgZnJvbSB0aGUgYFZFUlNJT04oKWAgbWV0aG9kIGluIGB2ZXJzaW9uX2Zyb21fY2xhc3NgLgoKRGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgYCRhcHBgLiBUaGlzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZQoidmVyc2lvblxfZnJvbVxfY2xhc3MiIHRvIHplcm8gKDApLgoKIyBBVVRIT1JTCgojIyBQcm9qZWN0IEZvdW5kZXIKCkphbiBIZW5uaW5nIFRob3JzZW4gLSBgamh0aG9yc2VuQGNwYW4ub3JnYAoKIyMgQ29udHJpYnV0b3JzCgotIEJlcm5oYXJkIEdyYWYgPGF1Z2Vuc2FsYXRAZ21haWwuY29tPgotIERvdWcgQmVsbCA8ZG91Z0BwcmVhY3Rpb24ubWU+Ci0gRWQgSiA8bW9oYXdrMkB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci0gSGVucmlrIEFuZGVyc2VuIDxoZW1AZmliaWEuZGs+Ci0gSGVucmlrIEFuZGVyc2VuIDxoZW1AaGFtc3Rlci5kaz4KLSBJbHlhIFJhc3NhZGluIDxlbGNhbWxvc3RAZ21haWwuY29tPgotIEphbiBIZW5uaW5nIFRob3JzZW4gPGphbi5oZW5uaW5nQHRob3JzZW4ucG0+Ci0gSmFuIEhlbm5pbmcgVGhvcnNlbiA8amh0aG9yc2VuQGNwYW4ub3JnPgotIEppLUh5ZW9uIEdpbSA8cG90YXRvZ2ltQGdsdWVzeXMuY29tPgotIEpvZWwgQmVyZ2VyIDxqb2VsLmEuYmVyZ2VyQGdtYWlsLmNvbT4KLSBLcmFzaW1pciBCZXJvdiA8ay5iZXJvdkBnbWFpbC5jb20+Ci0gTGFycyBUaGVnbGVyIDxsdGhAZmliaWEuZGs+Ci0gTGVlIEpvaG5zb24gPGxlZUBnaXZlbmdhaW4uY2g+Ci0gTGlubi1IZWdlIEtyaXN0ZW5zZW4gPGxpbm4taGVnZUBzdGl4Lm5vPgotIE1hbnVlbCA8bWFudWVsQG1hdXN6LmF0PgotIE1hcnRpbiBSZW52b2l6ZSA8bWFydGluLnJlbnZvaXplQHB0ZnMtZXVyb3BlLmNvbT4KLSBNb2hhbW1hZCBTIEFud2FyIDxtb2hhbW1hZC5hbndhckB5YWhvby5jb20+Ci0gTmljayBNb3Jyb3R0IDxrbm93bGVkZ2VqdW5raWVAZ21haWwuY29tPgotIFJlbmVlIDxyZWJAcGVybC1zZXJ2aWNlcy5kZT4KLSBSb3kgU3RvcmV5IDxraXdpcm95QHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLSBTZWJNb3VybGhvdSA8MzU5MTg5NTMrU2ViTW91cmxob3VAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotIFNlYk1vdXJsaG91IDxzZWJhc3RpZW4ubW91cmxob3VAanVzdGljZS5nZS5jaD4KLSBTZWJNb3VybGhvdSA8c2VibW91cmxob3VAeWFob28uZnI+Ci0gU8O4cmVuIEx1bmQgPHNsQGtleWNvcmUuZGs+Ci0gU3RlcGhhbiBIcmFkZWsgPGdpdGh1YkBocmFkZWsubmV0PgotIFN0ZXBoYW4gSHJhZGVrIDxzdGVwaGFuLmhyYWRla0BlY28uZGU+CgojIENPUFlSSUdIVCBBTkQgTElDRU5TRQoKQ29weXJpZ2h0IChDKSBKYW4gSGVubmluZyBUaG9yc2VuCgpUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZSwgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgp0aGUgdGVybXMgb2YgdGhlIEFydGlzdGljIExpY2Vuc2UgdmVyc2lvbiAyLjAuCgojIFNFRSBBTFNPCgotIFtNb2pvbGljaW91czo6UGx1Z2luOjpPcGVuQVBJOjpHdWlkZXM6Ok9wZW5BUEl2Ml0oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL01vam9saWNpb3VzJTNBJTNBUGx1Z2luJTNBJTNBT3BlbkFQSSUzQSUzQUd1aWRlcyUzQSUzQU9wZW5BUEl2MikKCiAgICBHdWlkZSBmb3IgaG93IHRvIHVzZSB0aGlzIHBsdWdpbiB3aXRoIE9wZW5BUEkgdmVyc2lvbiAyLjAgc3BlYy4KCi0gW01vam9saWNpb3VzOjpQbHVnaW46Ok9wZW5BUEk6Okd1aWRlczo6T3BlbkFQSXYzXShodHRwczovL21ldGFjcGFuLm9yZy9wb2QvTW9qb2xpY2lvdXMlM0ElM0FQbHVnaW4lM0ElM0FPcGVuQVBJJTNBJTNBR3VpZGVzJTNBJTNBT3BlbkFQSXYzKQoKICAgIEd1aWRlIGZvciBob3cgdG8gdXNlIHRoaXMgcGx1Z2luIHdpdGggT3BlbkFQSSB2ZXJzaW9uIDMuMCBzcGVjLgoKLSBbTW9qb2xpY2lvdXM6OlBsdWdpbjo6T3BlbkFQSTo6Q29yc10oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL01vam9saWNpb3VzJTNBJTNBUGx1Z2luJTNBJTNBT3BlbkFQSSUzQSUzQUNvcnMpCgogICAgUGx1Z2luIHRvIGFkZCBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyAoQ09SUykuCgotIFtNb2pvbGljaW91czo6UGx1Z2luOjpPcGVuQVBJOjpTZWN1cml0eV0oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL01vam9saWNpb3VzJTNBJTNBUGx1Z2luJTNBJTNBT3BlbkFQSSUzQSUzQVNlY3VyaXR5KQoKICAgIFBsdWdpbiBmb3IgaGFuZGxpbmcgc2VjdXJpdHkgZGVmaW5pdGlvbnMgaW4geW91ciBzY2hlbWEuCgotIFtNb2pvbGljaW91czo6UGx1Z2luOjpPcGVuQVBJOjpTcGVjUmVuZGVyZXJdKGh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9Nb2pvbGljaW91cyUzQSUzQVBsdWdpbiUzQSUzQU9wZW5BUEklM0ElM0FTcGVjUmVuZGVyZXIpCgogICAgUGx1Z2luIGZvciBleHBvc2luZyB5b3VyIHNwZWMgaW4gaHVtYW4gcmVhZGFibGUgb3IgSlNPTiBmb3JtYXQuCgotIFtodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKQoKICAgIE9mZmljaWFsIE9wZW5BUEkgd2Vic2l0ZS4K readmeEtag: '"181a2e75e3a4070b490bafd549b9cd816d1466a1"' readmeLastModified: Sun, 26 Feb 2023 01:22:10 GMT repositoryId: 60654453 description: OpenAPI / Swagger plugin for Mojolicious created: '2016-06-07T23:50:24Z' updated: '2025-12-10T16:53:37Z' language: Perl archived: false stars: 56 watchers: 18 forks: 46 owner: jhthorsen logo: https://avatars.githubusercontent.com/u/45729?v=4 repoEtag: '"0bdcc0b8af6e5eac328cdcc9f45855111d62008979897147a01d4f1c22fdfde8"' repoLastModified: Wed, 10 Dec 2025 16:53:37 GMT foundInMaster: true id: edf3e4e2b3dc32976ffd777bb48b410c - source: https://openapi.tools/ name: Fusio homepage: https://github.com/apioo/fusio language: PHP source_description: Open source API management platform category: - Server - Gateway - Server Implementations link: https://www.fusio-project.org/ repository: https://github.com/apioo/fusio v2: false v3: true repositoryMetadata: base64Readme: >- CjxwIGFsaWduPSJjZW50ZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZnVzaW8tcHJvamVjdC5vcmcvIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vd3d3LmZ1c2lvLXByb2plY3Qub3JnL2ltZy9mdXNpb182NHB4LnBuZyI+PC9hPgo8L3A+CgojIEZ1c2lvCgpTZWxmLUhvc3RlZCBBUEkgTWFuYWdlbWVudCBmb3IgQnVpbGRlcnMuCgojIyDwn5qAIFVzZSBDYXNlcwoKKiBfX0RhdGFiYXNlIEFQSSBHYXRld2F5X18KICA+IFVubG9jayBsZWdhY3kgZGF0YWJhc2VzIGFuZCBleHBvc2UgdGhlbSB2aWEgbW9kZXJuIFJFU1QgQVBJcy4KCiogX19DdXN0b20gQmFja2VuZCBMb2dpYyBmb3IgQVBJc19fCiAgPiBCdWlsZCBhbmQgbWFuYWdlIGN1c3RvbSBidXNpbmVzcyBsb2dpYyB0YWlsb3JlZCB0byB5b3VyIGRvbWFpbi4KCiogX19HYXRld2F5IGZvciBNaWNyb3NlcnZpY2VzX18KICA+IFJvdXRlLCBvcmNoZXN0cmF0ZSwgYW5kIHNlY3VyZSB0cmFmZmljIGJldHdlZW4gaW50ZXJuYWwgc2VydmljZXMuCgoqIF9fQVBJIERldmVsb3BlciBQb3J0YWxfXwogID4gUHJvdmlkZSBkb2NzLCB0ZXN0aW5nLCBhbmQgU0RLcyBmb3IgaW50ZXJuYWwgb3IgZXh0ZXJuYWwgZGV2ZWxvcGVycy4KCiogX19BUEkgTW9uZXRpemF0aW9uX18KICA+IEVuYWJsZSBmcmVlbWl1bSBvciB0aWVyZWQgYWNjZXNzIHdpdGggcXVvdGFzLCBsaW1pdHMsIGFuZCBiaWxsaW5nIGhvb2tzLgoKKiBfX01DUCBJbnRlZ3JhdGlvbl9fCiAgPiBMZXZlcmFnZSB0aGUgTW9kZWwgQ29udGV4dCBQcm90b2NvbCB0byBlbmFibGUgQUktZHJpdmVuIGFjY2VzcyBhbmQgY29udHJvbCBvZiBBUEkgZW5kcG9pbnRzLgoKKiBfX0FQSSBVc2FnZSBBbmFseXRpY3NfXwogID4gTW9uaXRvciB0cmFmZmljLCBkZXRlY3QgaXNzdWVzIGVhcmx5LCBhbmQgdW5kZXJzdGFuZCBBUEkgY29uc3VtcHRpb24uCgoqIF9fSGVhZGxlc3MgQ01TIEJhY2tlbmRfXwogID4gTWFuYWdlIGFuZCBleHBvc2Ugc3RydWN0dXJlZCBjb250ZW50IHRvIGFueSBmcm9udGVuZCB2aWEgQVBJcy4KCiogX19TREsgQXV0b21hdGlvbl9fCiAgPiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlIHJlYWR5LXRvLXVzZSBjbGllbnQgU0RLcyAoUEhQLCBUeXBlU2NyaXB0LCBQeXRob24sIGV0Yy4pLgoKIyMg8J+TpiBRdWljayBTdGFydAoKIyMjIPCfm6DvuI8gSW5zdGFsbGF0aW9uCgoqIF9fRG93bmxvYWQgYXJ0aWZhY3RfXwogID4gWW91IGNhbiBlaXRoZXIgZG93bmxvYWQgdGhlIG9mZmljaWFsIFtyZWxlYXNlXShodHRwczovL2dpdGh1Yi5jb20vYXBpb28vZnVzaW8vcmVsZWFzZXMpIG9yIGNsb25lIHRoZSByZXBvc2l0b3J5LgogIGBgYGJhc2gKICBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2FwaW9vL2Z1c2lvLmdpdAogIGBgYAoKKiBfX1NldCB1cCB5b3VyIGAuZW52YF9fCiAgPiBDb25maWd1cmUgZml0dGluZyBkYXRhYmFzZSBjcmVkZW50aWFscyBhdCB0aGUgYEFQUF9DT05ORUNUSU9OYCB2YXJpYWJsZSwgYWxsIG90aGVyIHBhcmFtZXRlcnMgYXJlIG9wdGlvbmFsLgogID4gKiBNeVNRTDogYHBkby1teXNxbDovL3Jvb3Q6dGVzdDEyMzRAbG9jYWxob3N0L2Z1c2lvYAogID4gKiBQb3N0Z3JlU1FMOiBgcGRvLXBnc3FsOi8vcG9zdGdyZXM6cG9zdGdyZXNAbG9jYWxob3N0L2Z1c2lvYAogID4gKiBTUUxpdGU6IGBwZG8tc3FsaXRlOi8vL2Z1c2lvLnNxbGl0ZWAKCiAgPiBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRvIHByb3ZpZGUgdGhlIGBBUFBfVVJMYCB3aGljaCBjb250YWlucyB0aGUgZG9tYWluIHBvaW50aW5nIHRvIHRoZSBwdWJsaWMgZm9sZGVyIGkuZS4KICAgIGBodHRwczovL2FwaS5teV9kb21haW4uY29tYCBvciBgaHR0cHM6Ly9teV9kb21haW4uY29tL2Z1c2lvYCwgdGhpcyBpcyByZXF1aXJlZCBpZiB5b3UgaG9zdCBGdXNpbyBpbnNpZGUKICAgIGEgc3ViLWZvbGRlciBvdGhlcndpc2UgRnVzaW8gdHJpZXMgdG8gZGV0ZWN0IHRoZSBkb21haW4gdmlhIHRoZSBob3N0IGhlYWRlci4KCiogX19SdW4gbWlncmF0aW9uc19fCiAgYGBgYmFzaAogIHBocCBiaW4vZnVzaW8gbWlncmF0ZQogIGBgYAoKKiBfX0NyZWF0ZSBhZG1pbmlzdHJhdG9yIHVzZXJfXwogID4gQWZ0ZXIgdGhlIGluc3RhbGxhdGlvbiBpcyBjb21wbGV0ZSwgeW91IGhhdmUgdG8gY3JlYXRlIGEgbmV3IGFkbWluaXN0cmF0b3IgYWNjb3VudC4gQ2hvb3NlIGFzIGFjY291bnQgdHlwZSAiQWRtaW5pc3RyYXRvciIuCiAgYGBgYmFzaAogIHBocCBiaW4vZnVzaW8gYWRkdXNlcgogIGBgYAoKKiBfX0luc3RhbGwgYmFja2VuZCBhcHBfXwogIGBgYGJhc2gKICBwaHAgYmluL2Z1c2lvIG1hcmtldHBsYWNlOmluc3RhbGwgZnVzaW8KICBgYGAKCiogX19TdGFydCB2aWEgUEhQIGJ1aWx0LWluIHNlcnZlcl9fCiAgPiBUaGlzIHNob3VsZCBiZSBvbmx5IHVzZWQgZm9yIHRlc3RpbmcsIGZvciBwcm9kdWN0aW9uIHlvdSBuZWVkIGEgY2xhc3NpY2FsIE5naW54L0FwYWNoZSBzZXR1cCBvciB1c2UgRG9ja2VyLCB0YWtlIGEgbG9vayBhdCBvdXIgW2luc3RhbGxhdGlvbiBkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MuZnVzaW8tcHJvamVjdC5vcmcvZG9jcy9pbnN0YWxsYXRpb24vKSBmb3IgbW9yZSBkZXRhaWxzLgogIGBgYGJhc2gKICBwaHAgLVMgMTI3LjAuMC4xOjgwODAgLXQgcHVibGljCiAgYGBgCgojIyMg8J+MkCBXZWItSW5zdGFsbGVyCgpJbnN0ZWFkIG9mIG1hbnVhbCBpbnN0YWxsYXRpb24geW91IGNhbiBhbHNvIHVzZSB0aGUgd2ViIGluc3RhbGxlciBzY3JpcHQgbG9jYXRlZCBhdCBgL2luc3RhbGwucGhwYAp0byBjb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uLiBBZnRlciBpbnN0YWxsYXRpb24sIGl0IGlzIHJlY29tbWVuZGVkIHRvIGRlbGV0ZSB0aGlzICJpbnN0YWxsIiBzY3JpcHQuCgojIyMg8J+QsyBEb2NrZXIKClRvIHJ1biBGdXNpbyB3aXRoIERvY2tlciB5b3Ugb25seSBuZWVkIHRoZSBvZmZpY2lhbCBGdXNpbyBbZG9ja2VyIGltYWdlXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvZnVzaW8vZnVzaW8pCmFuZCBhIGRhdGFiYXNlLiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgYSBtaW5pbWFsIGBkb2NrZXItY29tcG9zZS55YW1sYCB3aGljaCB5b3UgY2FuIHVzZSB0byBydW4gRnVzaW8uCgpgYGB5YW1sCnNlcnZpY2VzOgogIGZ1c2lvOgogICAgaW1hZ2U6IGZ1c2lvL2Z1c2lvCiAgICByZXN0YXJ0OiBhbHdheXMKICAgIGVudmlyb25tZW50OgogICAgICBGVVNJT19QUk9KRUNUX0tFWTogIjQyZWVjMThmZmRiZmZjOWZkYTYxMTBkY2M3MDVkNmNlIgogICAgICBGVVNJT19DT05ORUNUSU9OOiAicGRvLW15c3FsOi8vZnVzaW86NjFhZDZjNjA1OTc1QG15c3FsLWZ1c2lvL2Z1c2lvIgogICAgICBGVVNJT19CQUNLRU5EX1VTRVI6ICJ0ZXN0IgogICAgICBGVVNJT19CQUNLRU5EX0VNQUlMOiAiZGVtb0BmdXNpby1wcm9qZWN0Lm9yZyIKICAgICAgRlVTSU9fQkFDS0VORF9QVzogInRlc3QxMjM0IgogICAgbGlua3M6CiAgICAgIC0gbXlzcWwtZnVzaW8KICAgIHBvcnRzOgogICAgICAtICI4MDgwOjgwIgoKICBteXNxbC1mdXNpbzoKICAgIGltYWdlOiBteXNxbDo4LjAKICAgIHJlc3RhcnQ6IGFsd2F5cwogICAgZW52aXJvbm1lbnQ6CiAgICAgIE1ZU1FMX1JBTkRPTV9ST09UX1BBU1NXT1JEOiAiMSIKICAgICAgTVlTUUxfVVNFUjogImZ1c2lvIgogICAgICBNWVNRTF9QQVNTV09SRDogIjYxYWQ2YzYwNTk3NSIKICAgICAgTVlTUUxfREFUQUJBU0U6ICJmdXNpbyIKICAgIHZvbHVtZXM6CiAgICAgIC0gLi9kYjovdmFyL2xpYi9teXNxbApgYGAKCiMjIPCfp6kgQXBwcwoKRnVzaW8gaW5jbHVkZXMgYSBmbGV4aWJsZSBhcHAgc3lzdGVtIHRoYXQgbGV0cyB5b3UgaW5zdGFsbCB2YXJpb3VzIHdlYi1iYXNlZCBhcHBzIHRvIHN1cHBvcnQKZGlmZmVyZW50IEFQSS1yZWxhdGVkIHVzZSBjYXNlcy4gVGhlc2UgYXBwcyBhcmUgdHlwaWNhbGx5IHNpbXBsZSBKYXZhU2NyaXB0IGZyb250ZW5kcyB0aGF0CmludGVyYWN0IHdpdGggRnVzaW8ncyBpbnRlcm5hbCBBUEkuCgpZb3UgY2FuIGJyb3dzZSBhbGwgYXZhaWxhYmxlIGFwcHMgaW4gdGhlIFtGdXNpbyBNYXJrZXRwbGFjZV0oaHR0cHM6Ly93d3cuZnVzaW8tcHJvamVjdC5vcmcvbWFya2V0cGxhY2UpLAphbmQgaW5zdGFsbCB0aGVtIHVzaW5nIGVpdGhlciB0aGUgQ0xJOgoKYGBgYmFzaApwaHAgYmluL2Z1c2lvIG1hcmtldHBsYWNlOmluc3RhbGwgZnVzaW8KYGBgCgpvciBkaXJlY3RseSB0aHJvdWdoIHRoZSBiYWNrZW5kIGludGVyZmFjZS4KCiMjIyDwn5al77iPIEJhY2tlbmQKCiFbQmFja2VuZF0oaHR0cHM6Ly93d3cuZnVzaW8tcHJvamVjdC5vcmcvbWVkaWEvYmFja2VuZC9kYXNoYm9hcmQucG5nKQoKVGhlIGJhY2tlbmQgYXBwIGlzIHRoZSBtYWluIGFwcCB0byBjb25maWd1cmUgYW5kIG1hbmFnZSB5b3VyIEFQSSBsb2NhdGVkIGF0IGAvYXBwcy9mdXNpby9gLgoKIyMjIPCfkqEgVlNDb2RlCgpGdXNpbyBwcm92aWRlcyBhIFtWU0NvZGUgZXh0ZW5zaW9uXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9RnVzaW8uZnVzaW8pCndoaWNoIGNhbiBiZSB1c2VkIHRvIHNpbXBsaWZ5IGFjdGlvbiBkZXZlbG9wbWVudC4KCiMjIPCflJcgSW50ZWdyYXRpb24KCiMjIyDwn6ewIFNESwoKVG8gYnVpbGQgYW5kIGludGVncmF0ZSBhcHBsaWNhdGlvbnMgd2l0aCBGdXNpbywgeW91IGNhbiB1c2Ugb25lIG9mIG91ciBvZmZpY2lhbGx5IHN1cHBvcnRlZCBTREtzLCB3aGljaCBzaW1wbGlmeSBpbnRlcmFjdGlvbiB3aXRoIGEgRnVzaW8gaW5zdGFuY2UuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gZGlyZWN0bHkgY29tbXVuaWNhdGUgd2l0aCB0aGUgUkVTVCBBUEkgZm9yIGZ1bGwgY29udHJvbCBhbmQgZmxleGliaWxpdHkuCgp8IExhbmd1YWdlICAgfCBHaXRIdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGFja2FnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeGFtcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IEMjICAgICAgICAgfCBbR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vYXBpb28vZnVzaW8tc2RrLWNzaGFycCkgICAgIHwgW051R2V0XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvRnVzaW8uU0RLKSAgICAgICAgICAgICAgICAgfCBbRXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaW9vL2Z1c2lvLXNhbXBsZS1jc2hhcnAtY2xpKSAgfAp8IEdvICAgICAgICAgfCBbR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vYXBpb28vZnVzaW8tc2RrLWdvKSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbRXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaW9vL2Z1c2lvLXNhbXBsZS1nby1jbGkpICAgICAgfAp8IEphdmEgICAgICAgfCBbR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vYXBpb28vZnVzaW8tc2RrLWphdmEpICAgICAgIHwgW01hdmVuXShodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L29yZy5mdXNpby1wcm9qZWN0L3NkaykgfCBbRXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaW9vL2Z1c2lvLXNhbXBsZS1qYXZhLWNsaSkgICAgfAp8IEphdmFzY3JpcHQgfCBbR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vYXBpb28vZnVzaW8tc2RrLWphdmFzY3JpcHQpIHwgW05QTV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZnVzaW8tc2RrKSAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFBIUCAgICAgICAgfCBbR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vYXBpb28vZnVzaW8tc2RrLXBocCkgICAgICAgIHwgW1BhY2thZ2lzdF0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2Z1c2lvL3NkaykgICAgICAgICAgICAgfCBbRXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaW9vL2Z1c2lvLXNhbXBsZS1waHAtY2xpKSAgICAgfAp8IFB5dGhvbiAgICAgfCBbR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vYXBpb28vZnVzaW8tc2RrLXB5dGhvbikgICAgIHwgW1B5UEldKGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9mdXNpby1zZGsvKSAgICAgICAgICAgICAgICAgICAgICAgfCBbRXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaW9vL2Z1c2lvLXNhbXBsZS1weXRob24tY2xpKSAgfAoKIyMjIPCflqXvuI8gRnJvbnRlbmQKCnwgRnJhbWV3b3JrIHwgR2l0SHViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhY2thZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEV4YW1wbGUgfAp8LS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwKfCBBbmd1bGFyICAgfCBbR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vYXBpb28vZnVzaW8tc2RrLWphdmFzY3JpcHQtYW5ndWxhcikgIHwgW05QTV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvbmd4LWZ1c2lvLXNkaykgIHwgW0V4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlvby9mdXNpby1zYW1wbGUtamF2YXNjcmlwdC1hbmd1bGFyKSAgICAgICAgfAoKIyMjIPCfk6EgUkVTVCBBUEkKCnwgRG9tYWluICAgfCBEb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTcGVjaWZpY2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBCYWNrZW5kICB8IFtSZURvY10oaHR0cHM6Ly93d3cuZnVzaW8tcHJvamVjdC5vcmcvYXBpL2JhY2tlbmQpICB8IFtPcGVuQVBJXShodHRwczovL2RlbW8uZnVzaW8tcHJvamVjdC5vcmcvc3lzdGVtL2dlbmVyYXRvci9zcGVjLW9wZW5hcGk/ZmlsdGVyPWJhY2tlbmQpICB8CnwgQ29uc3VtZXIgfCBbUmVEb2NdKGh0dHBzOi8vd3d3LmZ1c2lvLXByb2plY3Qub3JnL2FwaS9jb25zdW1lcikgfCBbT3BlbkFQSV0oaHR0cHM6Ly9kZW1vLmZ1c2lvLXByb2plY3Qub3JnL3N5c3RlbS9nZW5lcmF0b3Ivc3BlYy1vcGVuYXBpP2ZpbHRlcj1jb25zdW1lcikgfAp8IFN5c3RlbSAgIHwgW1JlRG9jXShodHRwczovL3d3dy5mdXNpby1wcm9qZWN0Lm9yZy9hcGkvc3lzdGVtKSAgIHwgW09wZW5BUEldKGh0dHBzOi8vZGVtby5mdXNpby1wcm9qZWN0Lm9yZy9zeXN0ZW0vZ2VuZXJhdG9yL3NwZWMtb3BlbmFwaT9maWx0ZXI9c3lzdGVtKSAgIHwKCiMjIPCfjI0gRWNvc3lzdGVtCgpCZXNpZGVzIG91ciBjb3JlIHByb2R1Y3QsIHdlIG9mZmVyIGFkZGl0aW9uYWwgc2VydmljZXMgdG8gYXVnbWVudCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBGdXNpby4KCiogW01hcmtldHBsYWNlXShodHRwczovL3d3dy5mdXNpby1wcm9qZWN0Lm9yZy9tYXJrZXRwbGFjZSkgIAogIFRoZSBGdXNpbyBtYXJrZXRwbGFjZSBpcyB0aGUgcGxhY2UgdG8gc2hhcmUgYXBwcyBhbmQgYWN0aW9ucyB3aXRoIG90aGVyIEZ1c2lvIHVzZXJzLCBpdCBoZWxwcyB0byBxdWlja2x5IGJ1aWxkCiAgeW91ciBBUEkgYnkgdXNpbmcgZXhpc3RpbmcgY29kZSBmcm9tIG90aGVyIHVzZXJzLiBZb3UgY2FuIHJlZ2lzdGVyIGFuZCBjb25maWd1cmUgdGhlIGNyZWRlbnRpYWxzIGF0IHlvdXIgbG9jYWwKICBGdXNpbyBpbnN0YWxsYXRpb24gdW5kZXIgU3lzdGVtIC8gQ29uZmlnIHMuIGBtYXJrZXRwbGFjZV9jbGllbnRfaWRgIGFuZCBgbWFya2V0cGxhY2VfY2xpZW50X3NlY3JldGAgdGhlbiB5b3UgY2FuIHVzZQogIHRoZSBwYW5lbCB1bmRlciBEZXZlbG9wbWVudCAvIE1hcmtldHBsYWNlIHRvIGluc3RhbGwgYXBwcyBvciBhY3Rpb25zLgoqIFtTREtnZW5dKGh0dHBzOi8vc2RrZ2VuLmFwcC8pICAKICBTREsgYXMgYSBzZXJ2aWNlIHBsYXRmb3JtIHdoaWNoIGhlbHBzIHlvdSB0byBnZW5lcmF0ZSBjbGllbnQgU0RLcyBmb3IgeW91ciBBUEkgaW4gZGlmZmVyZW50IGxhbmd1YWdlcyBsaWtlIGBDU2hhcnBgLAogIGBHb2AsIGBKYXZhYCBhbmQgYFB5dGhvbmAgd2hpY2ggaGVscHMgeW91ciBjdXN0b21lcnMgdG8gaW50ZXJhY3Qgd2l0aCB5b3VyIEFQSS4gVGhlcmVmb3IgeW91IG5lZWQgdG8gcmVnaXN0ZXIgYXQgdGhlCiAgU0RLZ2VuIGFwcCBhbmQgcHJvdmlkZSB0aGUgY3JlZGVudGlhbHMgdW5kZXIgU3lzdGVtIC8gQ29uZmlnIHMuIGBzZGtnZW5fY2xpZW50X2lkYCBhbmQgYHNka2dlbl9jbGllbnRfc2VjcmV0YC4KICBUaGVuIHlvdSBjYW4gZ2VuZXJhdGUgdGhlIFNESyBkaXJlY3RseSBhdCB0aGUgYmFja2VuZCB1bmRlciBEZXZlbG9wbWVudCAvIFNESy4gCiogW1R5cGVIdWJdKGh0dHBzOi8vdHlwZWh1Yi5jbG91ZC8pICAKICBBUEkgYW5kIGRhdGEgZGVzaWduIHBsYXRmb3JtLCBiYXNpY2FsbHkgeW91IGNhbiBwdXNoIHlvdXIgQVBJIHNwZWNpZmljYXRpb24gdG8gdGhpcyBwbGF0Zm9ybSBzbyB0aGF0IHVzZXJzIGNhbiBzaW1wbHkKICBkaXNjb3ZlciB5b3VyIEFQSS4gSXQgdHJhY2tzIGFsbCBjaGFuZ2VzIG9mIHlvdXIgQVBJIHNvIHRoYXQgeW91IGhhdmUgYWx3YXlzIGEgY2xlYW4gaGlzdG9yeSBob3cgeW91ciBBUEkgZXZvbHZlcy4KKiBbQVBJZ2VuXShodHRwczovL2FwaWdlbi5hcHAvKSAgCiAgU2VydmljZSB3aGljaCBnZW5lcmF0ZXMgZnVsbHkgd29ya2luZyBGdXNpbyBBUElzIGJhc2VkIG9uIGEgZGF0YSBtb2RlbC4gSXQgYWxzbyBpbmNsdWRlcyBhIHNpbXBsZSBBbmd1bGFyCiAgZnJvbnRlbmQgYXBwIHRvIENSVUQgeW91ciBtb2RlbHMuIEl0IGNhbiBiZSBzZWVuIGFzIGxvdy1jb2RlIGdlbmVyYXRvciB0byBxdWlja2x5IGdlbmVyYXRlIENSVUQgQVBJcyBidXQgdGhlCiAgZ2VuZXJhdGVkIGNvZGUgaXMgY2xlYW4gYW5kIGNhbiBiZSBhbHNvIHVzZWQgYXMgZm91bmRhdGlvbiBmb3IgeW91ciBuZXh0IGFwcC4KKiBbQVBJbW9uXShodHRwczovL2FwaW1vbi5hcHAvKSAgCiAgU2ltcGxlIEFQSSBtb25pdG9yaW5nIHNlcnZpY2Ugd2hpY2ggaGVscHMgdG8gbW9uaXRvciB5b3VyIEZ1c2lvIGluc3RhbGxhdGlvbi4gSXQgaXMgb3B0aW1pemVkIGZvciBGdXNpbywgYnV0IGl0IGNhbiBiZQogIGFsc28gdXNlZCBmb3IgZGlmZmVyZW50IEFQSSBlbmRwb2ludHMuIEFQSW1vbiBpbnZva2VzIHlvdXIgZW5kcG9pbnRzIGluIHNwZWNpZmljIGludGVydmFscyBhbmQgbm90aWZpZXMgeW91IGFib3V0CiAgY2hhbmdlcy4gSXQgYWxzbyBpbmNsdWRlcyBhbiB1cHRpbWUgcGFnZSBmb3IgeW91ciB1c2VycyBmb3IgZXhhbXBsZSBzLiBodHRwczovL2FwaS5hcGltb24uYXBwL3N0YXR1cy9mdXNpb19tYXJrZXRwbGFjZQoKIyMg8J+Pt++4jyBEb21haW5zCgpCeSBkZWZhdWx0LCB0aGUgZW50aXJlIEZ1c2lvIHByb2plY3QgY2FuIGJlIGhvc3RlZCBvbiBhIHNpbmdsZSBkb21haW4uIEluIHRoaXMgc2V0dXA6CgoqIFlvdXIgQVBJIGlzIHNlcnZlZCBmcm9tIHRoZSByb290IHBhdGggKGUuZy4sIGh0dHBzOi8vYWNtZS5jb20vKS4KKiBXZWIgYXBwcyBsaWtlIHRoZSBkZXZlbG9wZXIgcG9ydGFsIGFuZCBhZG1pbiBiYWNrZW5kIGFyZSBhY2Nlc3NpYmxlIHVuZGVyIHRoZSBgL2FwcHNgIGRpcmVjdG9yeSAoZS5nLiwgaHR0cHM6Ly9hY21lLmNvbS9hcHBzL2RldmVsb3BlcikuCgpUaGlzIHNldHVwIGlzIHF1aWNrIHRvIGdldCBzdGFydGVkIHdpdGggYW5kIHJlcXVpcmVzIG5vIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi4KRm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzLCB3ZSByZWNvbW1lbmQgYSBzdWJkb21haW4tYmFzZWQgc3RydWN0dXJlOgoKKiBfX2FwaS5hY21lLmNvbV9fICAKICBIb3N0cyBvbmx5IHRoZSBGdXNpbyBBUEkuIEluIHRoaXMgc2V0dXAsIHlvdSBjYW4gc2FmZWx5IHJlbW92ZSB0aGUgYGFwcHMvYCBmb2xkZXIgZnJvbSB0aGUgYHB1YmxpYy9gIGRpcmVjdG9yeS4KKiBfX2RldmVsb3Blci5hY21lLmNvbV9fICAKICBIb3N0cyB0aGUgKipEZXZlbG9wZXIgQXBwKiosIGEgcG9ydGFsIHdoZXJlIHRoaXJkLXBhcnR5IGRldmVsb3BlcnMgY2FuIHJlZ2lzdGVyLCB2aWV3IGRvY3VtZW50YXRpb24sIGFuZCBhY2Nlc3MgdGhlaXIgY3JlZGVudGlhbHMuIAoqIF9fZnVzaW8uYWNtZS5jb21fXyAob3B0aW9uYWwpICAKICBIb3N0cyB0aGUgKipCYWNrZW5kIEFwcCoqLCB1c2VkIHRvIG1hbmFnZSB5b3VyIEZ1c2lvIGluc3RhbmNlLiBZb3UgY2FuIGFsc28gaG9zdCB0aGlzIG9uIGEgc2VwYXJhdGUgaW50ZXJuYWwgZG9tYWluLgoKPiBOb3RlOiBUaGlzIGlzIGp1c3QgYSBzdWdnZXN0ZWQgc2V0dXAuIFlvdSdyZSBmcmVlIHRvIGNob29zZSBhbnkgZG9tYWluIG9yIHN1YmRvbWFpbiBzdHJ1Y3R1cmUgdGhhdCBiZXN0IGZpdHMgeW91ciBpbmZyYXN0cnVjdHVyZS4KCiMjIPCfk5ogRG9jdW1lbnRhdGlvbgoKUGxlYXNlIGNoZWNrIG91dCBvdXIgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiB3ZWJzaXRlIHdoZXJlIHdlIGJ1bmRsZSBhbGwgZG9jdW1lbnRhdGlvbiByZXNvdXJjZXM6CgpodHRwczovL2RvY3MuZnVzaW8tcHJvamVjdC5vcmcvCgojIyDwn6SdIFN1cHBvcnQKCiMjIyDwn5KsIEdldCBIZWxwCgpJZiB5b3UgaGF2ZSBxdWVzdGlvbnMgb3IgcnVuIGludG8gaXNzdWVzIHdoaWxlIHVzaW5nIEZ1c2lvOgoKLSBPcGVuIGEgW2Rpc2N1c3Npb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlvby9mdXNpby9kaXNjdXNzaW9ucykgZm9yIGdlbmVyYWwgcXVlc3Rpb25zLCBmZWVkYmFjaywgb3IgZmVhdHVyZSBpZGVhcy4KLSBSZXBvcnQgYnVncyBvciB0ZWNobmljYWwgcHJvYmxlbXMgdmlhIHRoZSBbaXNzdWUgdHJhY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL2FwaW9vL2Z1c2lvL2lzc3VlcykuCi0gSm9pbiBvdXIgW0Rpc2NvcmQgY29tbXVuaXR5XShodHRwczovL2Rpc2NvcmQuZ2cvZU1yTWd3c2M2ZSkgdG8gY2hhdCBkaXJlY3RseSB3aXRoIHRoZSBkZXZlbG9wZXJzIGFuZCBvdGhlciB1c2Vycy4KCklmIHlvdSdyZSBhIGNvbXBhbnkgb3IgZnJlZWxhbmNlciBsb29raW5nIGZvciBtb3JlIHRhaWxvcmVkIGhlbHAsIHBsZWFzZSBjaGVjayBvdXQgb3VyICoqY29uc3VsdGluZyoqIHNlcnZpY2VzIGJlbG93LgoKLS0tCgojIyMg8J+ToyBQcm9tb3Rpb24gJiBNZWRpYQoKQXJlIHlvdSBhIGJsb2dnZXIsIHdyaXRlciwgb3IgcnVuIGEgZGV2ZWxvcGVyLWZvY3VzZWQgcHVibGljYXRpb24/IFdlJ2QgbG92ZSBmb3IgeW91IHRvIGNvdmVyIEZ1c2lvIQoKVmlzaXQgdGhlIFtNZWRpYSBQYWdlXShodHRwczovL3d3dy5mdXNpby1wcm9qZWN0Lm9yZy9tZWRpYSkgdG8gZG93bmxvYWQgb2ZmaWNpYWwgaWNvbnMgZm9yIHVzZSBpbiB5b3VyIGFydGljbGVzIG9yIHZpZGVvcy4KCi0tLQoKIyMjIPCfp5HigI3wn4+rIENvbnN1bHRpbmcgJiBXb3Jrc2hvcHMKCkZvciBjb21wYW5pZXMgb3IgZnJlZWxhbmNlcnMgd2hvIHdhbnQgaW4tZGVwdGggZ3VpZGFuY2Ugb24gdXNpbmcgYW5kIGludGVncmF0aW5nIEZ1c2lvOgoKLSBXZSBvZmZlciAqKmNvbnN1bHRpbmcgc2VydmljZXMqKiB0byBoZWxwIHlvdSBldmFsdWF0ZSB3aGV0aGVyIEZ1c2lvIGZpdHMgeW91ciBhcmNoaXRlY3R1cmUuCi0gT3VyICoqd29ya3Nob3BzKiogd2FsayB5b3UgdGhyb3VnaCBrZXkgZnVuY3Rpb25hbGl0eSwgYW5zd2VyIHlvdXIgc3BlY2lmaWMgcXVlc3Rpb25zLCBhbmQgaGVscCBpZGVudGlmeSB0aGUgYmVzdCBpbnRlZ3JhdGlvbiBhcHByb2FjaC4KCkZlZWwgZnJlZSB0byBbY29udGFjdCB1c10oaHR0cHM6Ly93d3cuZnVzaW8tcHJvamVjdC5vcmcvY29udGFjdCkgZm9yIG1vcmUgZGV0YWlscy4KCi0tLQoKIyMjIPCfkpYgU3VwcG9ydCBGdXNpbwoKSWYgRnVzaW8gaGVscHMgeW91IGJ1aWxkIEFQSXMgZmFzdGVyIG9yIGFkZHMgdmFsdWUgdG8geW91ciBwcm9qZWN0cywgcGxlYXNlIGNvbnNpZGVyIHN1cHBvcnRpbmcgb3VyIHdvcms6CgotIOKtkCBTdGFyIHRoZSBwcm9qZWN0IG9uIEdpdEh1YgotIOKYlSBbU3BvbnNvciB2aWEgR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vc3BvbnNvcnMvY2hyaXNrYXBwKQotIPCfkqwgU3ByZWFkIHRoZSB3b3JkIG9uIHNvY2lhbCBtZWRpYSBvciB3cml0ZSBhYm91dCBGdXNpbwoKRXZlcnkgYml0IG9mIHN1cHBvcnQgaGVscHMgdXMgY29udGludWUgaW1wcm92aW5nIHRoZSBwbGF0Zm9ybSEKCi0tLQoKIyMjIPCfpJ0gUHJvamVjdCBQYXJ0bmVycwoKV2XigJlyZSBncmF0ZWZ1bCB0byBvdXIgcGFydG5lcnMgd2hvIHN1cHBvcnQgdGhlIEZ1c2lvIHByb2plY3QgYW5kIHNoYXJlIG91ciB2aXNpb24gb2YgYWR2YW5jaW5nIG9wZW4gQVBJIGRldmVsb3BtZW50LgoKSWYgeW91ciBjb21wYW55IGlzIGludGVyZXN0ZWQgaW4gYmVjb21pbmcgYSBwYXJ0bmVyIGFuZCBiZWluZyBsaXN0ZWQgaGVyZSwgY29uc2lkZXIgW2JlY29taW5nIGEgc3BvbnNvcl0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL2Nocmlza2FwcCkuCgo8YSBocmVmPSJodHRwczovL2piLmdnL09wZW5Tb3VyY2UiPgogPHBpY3R1cmU+CiAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly93d3cuamV0YnJhaW5zLmNvbS9jb21wYW55L2JyYW5kL2ltZy9sb2dvX2piX2Rvc18zLnN2ZyI+CiAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vcmVzb3VyY2VzLmpldGJyYWlucy5jb20vc3RvcmFnZS9wcm9kdWN0cy9jb21wYW55L2JyYW5kL2xvZ29zL2pldGJyYWlucy5zdmciPgogICA8aW1nIGFsdD0iSmV0QnJhaW5zIGxvZ28uIiBzcmM9Imh0dHBzOi8vcmVzb3VyY2VzLmpldGJyYWlucy5jb20vc3RvcmFnZS9wcm9kdWN0cy9jb21wYW55L2JyYW5kL2xvZ29zL2pldGJyYWlucy5zdmciPgogPC9waWN0dXJlPgo8L2E+Cg== readmeEtag: '"e358e8ac947730bb5bc32678d35cd28f723bdf80"' readmeLastModified: Sat, 15 Nov 2025 20:10:34 GMT repositoryId: 39904377 description: Self-Hosted API Management for Builders created: '2015-07-29T16:34:52Z' updated: '2026-02-01T08:39:47Z' language: PHP archived: false stars: 2072 watchers: 55 forks: 237 owner: apioo logo: https://avatars.githubusercontent.com/u/18172950?v=4 license: Apache-2.0 repoEtag: '"4820cfab2b96c7d7e7259e903d47a46a8111239c145dad828cbf706ea90788bd"' repoLastModified: Sun, 01 Feb 2026 08:39:47 GMT foundInMaster: true id: 5458da680012a142d20e79ac150bc4ab - source: - https://openapi.tools/ - openapi3 tags name: yii2-app-api category: - Server - Mock - Server Implementations language: PHP repository: https://github.com/php-openapi/yii2-app-api source_description: > Generate Server side API code with routing, models, data validation and database schema from an OpenAPI description. Based on Yii Framework. v2: false v3: true repositoryMetadata: base64Readme: >- IyB5aWkyLWFwcC1hcGkKCj4gT3BlbkFQSSBTcGVjIHRvIEFQSSBpbiAzLCAyLCAxLi4uIGRvbmUhCgpZaWkgRnJhbWV3b3JrIEFwcGxpY2F0aW9uIFRlbXBsYXRlIGZvciBxdWlja2x5IGJ1aWxkaW5nIEFQSS1maXJzdCBhcHBsaWNhdGlvbnMuCgpCYXNlZCBvbiBbeWlpMi1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vcGhwLW9wZW5hcGkveWlpMi1vcGVuYXBpKSAoY29kZSBnZW5lcmF0b3IpIGFuZCBbcGhwLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9waHAtb3BlbmFwaS9waHAtb3BlbmFwaSkgKHNwZWNpZmljYXRpb24gcmVhZGVyIGFuZCB2YWxpZGF0b3IpLgoKWyFbTGF0ZXN0IFN0YWJsZSBWZXJzaW9uXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL3BocC1vcGVuYXBpL3lpaTItYXBwLWFwaS92L3N0YWJsZSldKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9waHAtb3BlbmFwaS95aWkyLWFwcC1hcGkpClshW1RvdGFsIERvd25sb2Fkc10oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9waHAtb3BlbmFwaS95aWkyLWFwcC1hcGkvZG93bmxvYWRzKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL3BocC1vcGVuYXBpL3lpaTItYXBwLWFwaSkKWyFbTGljZW5zZV0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9waHAtb3BlbmFwaS95aWkyLWFwcC1hcGkvbGljZW5zZSldKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9waHAtb3BlbmFwaS95aWkyLWFwcC1hcGkpCgoKIyMgRGVtbwoKWyFbYXNjaWljYXN0XShodHRwczovL2FzY2lpbmVtYS5vcmcvYS9HU25aRmVMMGJlQXdMdmJoSW41MG9WSTl3LnN2ZyldKGh0dHBzOi8vYXNjaWluZW1hLm9yZy9hL0dTblpGZUwwYmVBd0x2YmhJbjUwb1ZJOXcpCgoKIyMgT3ZlcnZpZXcKClRoaXMgYXBwbGljYXRpb24gdGVtcGxhdGUgZG9lcyBub3QgY29udGFpbiBhbnkgdXNlZnVsIGNvZGUsIGl0IG9ubHkgcHJvdmlkZXMgdGhlIFtkaXJlY3Rvcnkgc3RydWN0dXJlXSgjc3RydWN0dXJlKSBmb3IgeW91ciBBUEkgcHJvamVjdC4gCkFsbCB0aGUgY29kZSBpcyBnZW5lcmF0ZWQgZnJvbSBhbiBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnL2Fib3V0KSBBUEkgZGVzY3JpcHRpb24gZmlsZS4KCldoZW4gd29ya2luZyB3aXRoIHRoaXMgdGVtcGxhdGUgeW91IGZvbGxvdyB0aGUgW0FQSSBEZXNpZ24tRmlyc3QgQXBwcm9hY2hdKGh0dHBzOi8vYXBpc3lvdXdvbnRoYXRlLmNvbS9ibG9nL2FwaS1kZXNpZ24tZmlyc3QtdnMtY29kZS1maXJzdCkuClNvIHRvIGdldCBzdGFydGVkIGJ1aWxkaW5nIGFuIEFQSSB3aXRoIHRoaXMgYXBwbGljYXRpb24gdGVtcGxhdGUgeW91IG5lZWQgYW4gQVBJIGRlc2NyaXB0aW9uIGZpcnN0LgpJZiB5b3UgZG9uJ3QgaGF2ZSBvbmUgeWV0LCB5b3UgbWlnaHQgd2FudCB0byBjaGVjayB0aGUgZm9sbG93aW5nIHJlc291cmNlcyBmaXJzdDogCgotIFtPcGVuQVBJIDMuMCB0dXRvcmlhbF0oaHR0cHM6Ly9pZHJhdGhlcmJld3JpdGluZy5jb20vbGVhcm5hcGlkb2MvcHViYXBpc19vcGVuYXBpX3R1dG9yaWFsX292ZXJ2aWV3KQotIFtPcGVuQVBJIFNwZWNpZmljYXRpb24gVmVyc2lvbiAzLjAuMl0oaHR0cDovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjIpIAoKSWYgeW91IGhhdmUgYW4gT3BlbkFQSSBkZXNjcmlwdGlvbiwgeW91IGNhbiBjb250aW51ZSB3aXRoIHRoZSBuZXh0IHN0ZXBzOgoKMS4gW1NldHVwXSgjc2V0dXApCjIuIFtHZW5lcmF0ZSBDb2RlXSgjZ2VuZXJhdGUtY29kZSkKCk1vcmUgRG9jcyBhbmQgR3VpZGVzIGNhbiBiZSBmb3VuZCBpbiBbL2RvY3NdKC9kb2NzL1JFQURNRS5tZCkuCgojIyBTZXR1cCA8c3BhbiBpZD0ic2V0dXAiPjwvc3Bhbj4KClRoZXJlIGFyZSB0d28gZGlmZmVyZW50IHdheXM6CgotIFBIUCBkaXJlY3RseSBvbiB5b3VyIG1hY2hpbmUKLSBVc2luZyBEb2NrZXIKCiMjIyBQSFAgZGlyZWN0bHkKCkhhdmluZyBQSFAgYW5kIGEgZGF0YWJhc2Ugc2VydmVyIGluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUsIHlvdSBjYW4gcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CgogICAgY29tcG9zZXIgY3JlYXRlLXByb2plY3QgcGhwLW9wZW5hcGkveWlpMi1hcHAtYXBpIG15LWFwaQogICAgY2QgbXktYXBpCiAgICBjcCBlbnYucGhwLmRpc3QgZW52LnBocAogICAgY3AgY29uZmlnL2NvbXBvbmVudHMtRU5WLmxvY2FsLnBocCBjb25maWcvY29tcG9uZW50cy1kZXYubG9jYWwucGhwCgpZb3UgbmVlZCB0byBhZGp1c3QgYGNvbmZpZy9jb21wb25lbnRzLWRldi5sb2NhbC5waHBgIHRvIGNvbmZpZ3VyZSB5b3VyIGRhdGFiYXNlIGNvbm5lY3Rpb24uCgpBZnRlciB0aGF0LCBydW4gYG1ha2Ugc3RhcnRgIGFuZCBgbWFrZSBzdG9wYCB0byBjb250cm9sIHRoZSBQSFAgd2Vic2VydmVycyBmb3IgQVBJIGFuZCBiYWNrZW5kLgoKWW91IG1heSB1c2UgYFhERUJVR1c9MWAgdG8gZW5hYmxlIHhkZWJ1ZyBmb3IgdGhlIHdlYnNlcnZlciwgZS5nLiBgbWFrZSBYREVCVUdXPTEgc3RhcnRgLgoKWW91IGNhbiBub3cgY29udGludWUgd2l0aCBbZ2VuZXJhdGluZyBjb2RlXSgjZ2VuZXJhdGUtY29kZSkuCgojIyMgVXNpbmcgRG9ja2VyCgpZb3UgbmVlZCBbRG9ja2VyXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9pbnN0YWxsLykgYW5kIFtEb2NrZXIgQ29tcG9zZV0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vY29tcG9zZS9pbnN0YWxsLykgaW5zdGFsbGVkLgoKQ3JlYXRlIHRoZSByZXBvc2l0b3J5OgoKICAgIGNvbXBvc2VyIGNyZWF0ZS1wcm9qZWN0IHBocC1vcGVuYXBpL3lpaTItYXBwLWFwaSBteS1hcGkKCkZvciB0aGUgZWFzaWVzdCB3YXkgeW91IG5lZWQgR05VIG1ha2UsIHRoZW4gcnVuOgoKICAgIG1ha2Ugc3RhcnQtZG9ja2VyCiAgICAKVGhpcyB1c2VzIGBkb2NrZXItY29tcG9zZWAgdG8gc3RhcnQgZG9ja2VyIGNvbnRhaW5lcnMgZm9yIHRoZSBBUEkgYW5kIHRoZSBiYWNrZW5kIGluY2x1ZGluZyBhIGRhdGFiYXNlLgoKWW91IGNhbiBub3cgY29udGludWUgd2l0aCBbZ2VuZXJhdGluZyBjb2RlXSgjZ2VuZXJhdGUtY29kZSkuCgo+IE5vdGU6IElmIHlvdSBkb24ndCBoYXZlIEdOVSBtYWtlLCB5b3UgbmVlZCB0byBjb3B5IHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGFzIGluIHRoZSBQSFAgZGlyZWN0bHkgc2VjdGlvbiwgdGhlbiBydW46Cj4gCj4gICAgIGNwIGRvY2tlci1jb21wb3NlLm92ZXJyaWRlLmRpc3QueW1sIGRvY2tlci1jb21wb3NlLm92ZXJyaWRlLnltbAo+ICAgICBkb2NrZXItY29tcG9zZSB1cCAtZAo+ICAgICBkb2NrZXItY29tcG9zZSBleGVjIGJhY2tlbmQtcGhwIHNoIC1jICdjZCAvYXBwICYmIGNvbXBvc2VyIGluc3RhbGwnCgoKIyMgR2VuZXJhdGUgQ29kZSA8c3BhbiBpZD0iZ2VuZXJhdGUtY29kZSI+PC9zcGFuPgoKQXQgdGhpcyBwb2ludCB5b3UgY2FuIHN0YXJ0IGdlbmVyYXRpbmcgeW91ciBBUEkgY29kZSB0byBwbGF5IHdpdGggaXQgYnkgZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMgYmVsb3cuCklmIHlvdSdkIGxpa2UgdG8gc3RhcnQgYSByZWFsIHByb2plY3QgaW5zdGVhZCBvZiBqdXN0IHBsYXlpbmcgYXJvdW5kIHlvdSBjYW4gZmluZCBtb3JlIGRldGFpbGVkCmRvY3VtZW50YXRpb24gaW4gW2RvY3MvUkVBRE1FLm1kXShkb2NzL1JFQURNRS5tZCkgc3BlY2lmaWNhbGx5IHRoZSBbIkdldHRpbmcgU3RhcnRlZCItU2VjdGlvbl0oZG9jcy9nZXR0aW5nLXN0YXJ0ZWQubWQpLgoKIyMjIENvbnNvbGUKCj4gVGlwOiBJZiB5b3UgdXNlIERvY2tlciwgcnVuIGBtYWtlIGNsaWAgYmVmb3JlIHJ1bm5pbmcgYW55IG9mIHRoZXNlIGNvbW1hbmRzLgoKUnVuIGAuL3lpaSBnaWkvYXBpYCB0byBnZW5lcmF0ZSB5b3VyIEFQSSBjb2RlLiBUaGUgYC0tb3BlbkFwaVBhdGhgIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHBhdGggdG8geW91ciBPcGVuQVBJCnNwZWMgZmlsZS4gVGhlIGZvbGxvd2luZyBleGFtcGxlIHdpbGwgZ2VuZXJhdGUgQVBJIGNvZGUgZm9yIHRoZSBbT3BlbkFQSSBwZXRzdG9yZSBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iLzMuMC4yL2V4YW1wbGVzL3YzLjAvcGV0c3RvcmUtZXhwYW5kZWQueWFtbCkuCgogICAgLi95aWkgZ2lpL2FwaSAtLW9wZW5BcGlQYXRoPWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uLzMuMC4yL2V4YW1wbGVzL3YzLjAvcGV0c3RvcmUtZXhwYW5kZWQueWFtbAoKPiBOb3RlOiBJZiB0aGUgT3BlbkFQSSBzcGVjIGZpbGUgaXMgcHJlc2VudCBsb2NhbGx5IG9uIHRoZSBmaWxlIHN5c3RlbSwgdGhlbiBgb3BlbkFwaVBhdGhgIG11c3QgYmUgc3BlY2lmaWVkIGFzIGFuIGFic29sdXRlIHBhdGgsIHJlbGF0aXZlIHBhdGhzIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5Lgo+IE9uIFVOSVggYmFzZWQgT1MgaXQgbXVzdCBzdGFydCB3aXRoIGAvYC4gRXhhbXBsZTogYC9ob21lL3VzZXIvZG9jdW1lbnRzL015UHJvamVjdE9wZW5BUElTcGVjLnltbGAKClJ1biBgLi95aWkgZ2lpL2FwaSAtLWhlbHBgIGZvciBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zLiBZb3UgbWF5IGFsc28gYWRqdXN0IHRoZSBjb25maWd1cmF0aW9uIGluIGBjb25maWcvZ2lpLWdlbmVyYXRvcnMucGhwYC4KClRoZW4gc2V0IHVwIHRoZSBkYXRhYmFzZToKCiAgICAuL3lpaSBtaWdyYXRlL3VwCiAgICAuL3lpaSBmYWtlcgoKIyMjIFdlYgoKVG8gdXNlIHRoZSB3ZWIgZ2VuZXJhdG9yLCBvcGVuIDxodHRwOi8vbG9jYWxob3N0OjgzMzgvZ2lpPiBhbmQgc2VsZWN0IHRoZSBgUkVTVCBBUEkgR2VuZXJhdG9yYC4KCiFbR2lpIC0gUkVTVCBBUEkgR2VuZXJhdG9yXShkb2NzL2ltZy9naWktZ2VuZXJhdG9yLnBuZykKCkVudGVyIHRoZSBwYXRoIG9yIFVSTCB0byB0aGUgIk9wZW5BUEkgMyBTcGVjIGZpbGUiLCBlLmcuIGBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi8zLjAuMi9leGFtcGxlcy92My4wL3BldHN0b3JlLWV4cGFuZGVkLnlhbWxgLgoKQ2xpY2sgIlByZXZpZXciOgoKIVtHaWkgLSBSRVNUIEFQSSBHZW5lcmF0b3IgLSBHZW5lcmF0ZWQgZmlsZXNdKGRvY3MvaW1nL2dpaS1nZW5lcmF0b3ItZmlsZXMucG5nKQoKQ2xpY2sgIkdlbmVyYXRlIiB0byBnZW5lcmF0ZSBBUEkgZmlsZXMuCgpUaGVuIHNldCB1cCB0aGUgZGF0YWJhc2UgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIG9uIHRoZSBjb21tYW5kIGxpbmU6CgogICAgLi95aWkgbWlncmF0ZS91cAogICAgLi95aWkgZmFrZXIKCiMjIFRyeSBpdAoKICAgIGNkIGFwaQogICAgbWFrZSBzdGFydAoKWW91ciBBUEkgaXMgbm93IGF2YWlsYWJsZSBhdCBgaHR0cDovL2xvY2FsaG9zdDo4MzM3L2AuIFRyeSB0byBhY2Nlc3MgYW4gZW5kcG9pbnQgb2YgeW91ciBzcGVjIHZpYSBgY3VybGA6CgogICAgJCBjdXJsIGh0dHA6Ly9sb2NhbGhvc3Q6ODMzNy9wZXRzCiAgICBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJFb3MgcmVydW0gbW9kaSBldCBxdWFlcmF0IHZvbHVwdGF0aWJ1cy4iLAogICAgICAgICAgICAidGFnIjogIlRvdGFtIGluIGNvbW1vZGkgaW4gZXN0IG5pc2kgbmloaWwgYXV0IGV0LiIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiVm9sdXB0YXMgcXVpYSBlb3MgbmlzaSBkZWxlbml0aSBpdGFxdWUgYXNwZXJuYXR1ciBhc3Blcm5hdHVyLiIsCiAgICAgICAgICAgICJ0YWciOiAiVGVtcG9yaWJ1cyBpZCBjdWxwYSBkb2xvcmVtIHNlcXVpIGF1dC4iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkZhY2VyZSBhdXQgc2ltaWxpcXVlIGxhYm9yaW9zYW0gb21uaXMgcGVyZmVyZW5kaXMgZXQuIiwKICAgICAgICAgICAgInRhZyI6ICJRdW8gaGFydW0gcXVvIGV0IGVhIGRpc3RpbmN0aW8gbm9uIHF1YW0uIgogICAgICAgIH0sCiAgICAgICAgLi4uCiAgICBdCgoKIyMgTGludGluZyB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uCgpZb3UgY2FuIHJ1biBhIGxpbnRlciB0byBjaGVjayB0aGUgdmFsaWRpdHkgb2YgeW91ciBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZToKCiAgICBtYWtlIGxpbnQtanMgICMgcnVuIHNwZWN0cmFsIGxpbnQKICAgIG1ha2UgbGludC1waHAgIyBydW4gcGhwLW9wZW5hcGkgdmFsaWRhdGUKICAgIG1ha2UgbGludCAgICAgIyBydW4gYm90aCBvZiB0aGUgYWJvdmUgY29tbWFuZHMKCllvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIHNwZWN0cmFsIGF0IDxodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ac3RvcGxpZ2h0L3NwZWN0cmFsLWNsaSMtZG9jdW1lbnRhdGlvbi1hbmQtY29tbXVuaXR5Pi4KCgojIyBBcHBsaWNhdGlvbiBzdHJ1Y3R1cmUgPHNwYW4gaWQ9InN0cnVjdHVyZSI+PC9zcGFuPgoKVGhpcyBhcHBsaWNhdGlvbiB0ZW1wbGF0ZSBjb25zaXN0cyBvZiAzIGFwcGxpY2F0aW9uIHRpZXJzOgoKLSBgYXBpYCwgY29udGFpbnMgdGhlIFlpaSBhcHBsaWNhdGlvbiBmb3IgdGhlIFJFU1QgQVBJLgotIGBjb25zb2xlYCwgY29udGFpbnMgdGhlIFlpaSBhcHBsaWNhdGlvbiBmb3IgY29uc29sZSBjb21tYW5kcywgY3JvbmpvYnMgb3IgcXVldWVzIChgeWlpYCBjb21tYW5kKS4KLSBgYmFja2VuZGAsIGNvbnRhaW5zIHRoZSBZaWkgYXBwbGljYXRpb24gZm9yIGEgQ1JVRCBiYWNrZW5kIG9uIHRoZSBBUEkgZGF0YS4KClRoZSBmb2xsb3dpbmcgbGlzdCBleHBsYWlucyB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBpbiBtb3JlIGRldGFpbDoKCi0gYGFwaS9gIC0gQVBJIGFwcGxpY2F0aW9uIHRpZXIKICAtIGBjb25maWcvYCAtIGNvbmZpZ3VyYXRpb24gZm9yIEFQSSB0aWVyCiAgICAtIGB1cmwtcnVsZXMucGhwYCAtIGN1c3RvbSBVUkwgcnVsZXMKICAgIC0gYHVybC1ydWxlcy5yZXN0LnBocGAgLSBVUkwgcnVsZXMgKipnZW5lcmF0ZWQqKiBmcm9tIE9wZW5BUEkgRGVzY3JpcHRpb24KICAgIC0gYGNvbXBvbmVudHMucGhwYCAtIGFwcGxpY2F0aW9uIGNvbXBvbmVudHMKICAgIC0gYGFwcC5waHBgIC0gWWlpIGFwcGxpY2F0aW9uIGNvbmZpZyAoKyBvdmVycmlkZXMgZm9yIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgYGFwcC0qLnBocGApCiAgLSBgY29udHJvbGxlcnMvYCAtIENvbnRyb2xsZXIgY2xhc3NlcyAqKmdlbmVyYXRlZCoqIGZyb20gT3BlbkFQSSBEZXNjcmlwdGlvbgogIC0gYHdlYi9gIC0gcHVibGljIHdlYiBkaXJlY3RvcnkgZm9yIEFQSSBhcHBsaWNhdGlvbgoKLSBgYmFja2VuZC9gIC0gQmFja2VuZCBhcHBsaWNhdGlvbiB0aWVyCiAgLSBgY29uZmlnL2AgLSBjb25maWd1cmF0aW9uIGZvciBCYWNrZW5kIHRpZXIKICAgIC0gYGNvbXBvbmVudHMucGhwYCAtIGFwcGxpY2F0aW9uIGNvbXBvbmVudHMKICAgIC0gYGFwcC5waHBgIC0gWWlpIGFwcGxpY2F0aW9uIGNvbmZpZyAoKyBvdmVycmlkZXMgZm9yIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgYGFwcC0qLnBocGApCiAgLSBgY29udHJvbGxlcnMvYCAtIENvbnRyb2xsZXIgY2xhc3NlcwogIC0gYHZpZXdzL2AgLSBWaWV3IGZpbGVzCiAgLSBgd2ViL2AgLSBwdWJsaWMgd2ViIGRpcmVjdG9yeSBmb3IgQmFja2VuZCBhcHBsaWNhdGlvbgoKLSBgY29tbW9uL2AgLSBjb21tb24gY29kZSBmaWxlcwogIC0gYG1vZGVscy9gIC0gbW9kZWwgY2xhc3NlcyAqKmdlbmVyYXRlZCoqIGZyb20gT3BlbkFQSSBEZXNjcmlwdGlvbgogIC0gYG1pZ3JhdGlvbnMvYCAtIGRhdGFiYXNlIG1pZ3JhdGlvbnMgKipnZW5lcmF0ZWQqKiBmcm9tIE9wZW5BUEkgRGVzY3JpcHRpb24KCi0gYGNvbmZpZy9gIC0gQ29tbW9uIGNvbmZpZ3VyYXRpb24gZm9yIGFsbCBhcHBsaWNhdGlvbiB0aWVycwogIC0gYGNvbXBvbmVudHMucGhwYCAtIFlpaSBhcHBsaWNhdGlvbiBjb21wb25lbnRzICgrIG92ZXJyaWRlcyBmb3IgZGlmZmVyZW50IGVudmlyb25tZW50cyBgY29tcG9uZW50cy0qLnBocGApCiAgLSBgZW52LnBocGAgLSBFbnZpcm9ubWVudCBzZXR1cCAoWUlJX0RFQlVHLCBZSUlfRU5WLCBwYXRoIGFsaWFzZXMsIGNvbXBvc2VyIGF1dG9sb2FkZXIpCiAgLSBgZXZlbnRzLnBocGAgLSBDbGFzcyB3aWRlIGV2ZW50IGxpc3RlbmVycwogIC0gYGdpaS1nZW5lcmF0b3JzLnBocGAgLSBjb25maWd1cmF0aW9uIGZvciB0aGUgR2lpIGNvZGUgZ2VuZXJhdG9yIChhbGxvd3MgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgQXBpR2VuZXJhdG9yKQogIC0gYHBhcmFtcy5waHBgIC0gQ29uZmlndXJhdGlvbiBmb3IgYFlpaTo6JGFwcC0+cGFyYW1zYAoKLSBgY29uc29sZS9gIC0gQ29uc29sZSBhcHBsaWNhdGlvbiB0aWVyCiAgLSBgY29uZmlnL2AgLSBjb25maWd1cmF0aW9uIGZvciBDb25zb2xlIHRpZXIKICAgIC0gYGNvbXBvbmVudHMucGhwYCAtIGFwcGxpY2F0aW9uIGNvbXBvbmVudHMKICAgIC0gYGFwcC5waHBgIC0gWWlpIGFwcGxpY2F0aW9uIGNvbmZpZyAoKyBvdmVycmlkZXMgZm9yIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgYGFwcC0qLnBocGApCgotIGBsb2dzL2AgLSBsb2cgZmlsZXMKLSBgcnVudGltZS9gIC0gdGVtcG9yYXJ5IHJ1bnRpbWUgZmlsZXMKCgojIERldmVsb3BtZW50CgpCZWxvdyBjb21tYW5kcyBhcmUgaGVscGZ1bCB3aGlsZSBkZXZlbG9waW5nIHRoaXMgcHJvamVjdDoKCmBgYGJhc2gKLi95aWkgZ2lpL2FwaSAtLW9wZW5BcGlQYXRoPS9hcHAvb3BlbmFwaS9zY2hlbWEueWFtbCAtLWdlbmVyYXRlTWlncmF0aW9ucz0wICAtLWdlbmVyYXRlQ29udHJvbGxlcnM9MCAtLWdlbmVyYXRlVXJscz0wCgouL3lpaSBnaWkvYXBpIC0tb3BlbkFwaVBhdGg9L2FwcC9vcGVuYXBpL3NjaGVtYS55YW1sIC0tZ2VuZXJhdGVNaWdyYXRpb25zPTEgIC0tZ2VuZXJhdGVDb250cm9sbGVycz0wIC0tZ2VuZXJhdGVVcmxzPTAgLS1nZW5lcmF0ZU1vZGVscz0wIC0tZ2VuZXJhdGVNb2RlbEZha2VyPTAKYGBgCgoKIyBTdXBwb3J0CgoqKk5lZWQgaGVscCB3aXRoIHlvdXIgQVBJIHByb2plY3Q/KioKClByb2Zlc3Npb25hbCBzdXBwb3J0LCBjb25zdWx0aW5nIGFzIHdlbGwgYXMgc29mdHdhcmUgZGV2ZWxvcG1lbnQgc2VydmljZXMgYXJlIGF2YWlsYWJsZToKCmh0dHBzOi8vd3d3LmNlYmUuY2MvZW4vY29udGFjdAoKRGV2ZWxvcG1lbnQgb2YgdGhpcyBsaWJyYXJ5IGlzIHNwb25zb3JlZCBieSBbY2ViZS46Y2xvdWQ6ICJZb3VyIFByb2Zlc3Npb25hbCBEZXBsb3ltZW50IFBsYXRmb3JtIl0oaHR0cHM6Ly9jZWJlLmNsb3VkKS4K readmeEtag: '"d802cae7aa749c8a93fc3f6e3ff805ea35bcbaea"' readmeLastModified: Thu, 06 Jun 2024 12:21:10 GMT repositoryId: 175403734 description: OpenAPI Spec to API in 3, 2, 1... done! created: '2019-03-13T11:03:55Z' updated: '2025-11-09T08:25:24Z' language: PHP archived: false stars: 108 watchers: 6 forks: 10 owner: php-openapi logo: https://avatars.githubusercontent.com/u/71378648?v=4 license: MIT repoEtag: '"9ca28f901fe8c3cefa7a42d2731062a27523da0c06fd92cd1112a54ad15e953f"' repoLastModified: Sun, 09 Nov 2025 08:25:24 GMT foundInMaster: true id: 97701731f0fe680b9faea9103bf2242e oldLocations: - https://github.com/cebe/yii2-app-api - source: https://openapi.tools/ name: Beeceptor category: Mock language: SaaS link: https://beeceptor.com/ source_description: >- 🐝 An HTTP interceptor and rule-based mocking service for REST APIs. No coding required to create a mock endpoint. No sign-up required. v2: false v3: true id: 3add01284466aef304a66bf0c91b6717 foundInMaster: true - source: https://openapi.tools/ name: '@eropple/nestjs-openapi3' category: Server language: Node.js link: https://github.com/eropple/nestjs-openapi3 repository: https://github.com/eropple/nestjs-openapi3 source_description: > Integrates tightly with a NestJS application to infers complex descriptions and expresses them in its generated OpenAPI document. It then presents that document via ReDoc, and validates inputs for conformance to spec. v2: false v3: true repositoryMetadata: base64Readme: >- IyBgQGVyb3BwbGUvbmVzdGpzLW9wZW5hcGkzYCAjClshW25wbSB2ZXJzaW9uXShodHRwczovL2JhZGdlLmZ1cnkuaW8vanMvJTQwZXJvcHBsZSUyRm5lc3Rqcy1vcGVuYXBpMy5zdmcpXShodHRwczovL2JhZGdlLmZ1cnkuaW8vanMvJTQwZXJvcHBsZSUyRm5lc3Rqcy1vcGVuYXBpMykKCmBAZXJvcHBsZS9uZXN0anMtb3BlbmFwaTNgIGlzIGEgbGlicmFyeSBmb3IgW05lc3RKU10oKSB0byBnZW5lcmF0ZSBbT3BlbkFQSSAzLnhdKCkgZG9jdW1lbnRzIGZyb20geW91ciBBUEkgc3BlY2lmaWNhdGlvbi4gSXQgYXR0ZW1wdHMgdG8gYmUgbW9yZSBpbnRlZ3JhdGVkIHdpdGggdGhlIGZsb3cgb2YgeW91ciBhcHBsaWNhdGlvbiB0aGFuIFtAbmVzdGpzL3N3YWdnZXJdKCkgYW5kIHRvIHB1c2ggeW91IHRvd2FyZHMgYnVpbGRpbmcgY2xlYW4sIHdlbGwtc2VwYXJhdGVkIEFQSXMgYWxvbmcgdGhlIHdheS4KCiMjIFJlbGVhc2UgSGlzdG9yeSAjIwojIyMgYDAuNC40YCAjIyMKLSBBZGRlZCBgT0FTLnByb3BQcmVmYWJzYCB0aGF0IGluY2x1ZGVzIHNvbWUgaGVscGZ1bCBwcmVzZXRzIGZvciBkZWFsaW5nIHdpdGggVVVJRHMsIGRhdGVzLCBldGMuIGluIHByb3BlciBmb3JtYXR0aW5nLiBTb21lIG9mIHRoZXNlLCBsaWtlIGRhdGVzLCBhcmUgYXV0b21hdGljYWxseSBoYW5kbGVkIF9pZiBpdCdzIGEgYERhdGVgXywgYnV0IGlmIHlvdSwgc2F5LCBoYXZlIGBEYXRlIHwgbnVsbGAsIGl0IGJlY29tZXMgYSBwYWluLiBIZW5jZSB0aGluZ3MgbGlrZSBgT0FTLnByb3BQcmVmYWJzLnV1aWRgIGFuZCBgT0FTLnByb3BQcmVmYWJzLmRhdGVgLgotIEFkZGluZyB0aGUgSlNPTiBzY2hlbWEgdGV4dCBkaXJlY3RseSB0byB0aGUgYHdpbmRvd2Agb2JqZWN0IGZvciBSYXBpRG9jOyBpZiB5b3UgbWFuYWdlIHRvIHNlbmQgYSBiYWQgSlNPTiBmaWxlIGZvciBvbmUgcmVhc29uIG9yIGFub3RoZXIsIHlvdSBjYW4gYXQgbGVhc3QgZ28gYHdpbmRvdy5zcGVjVGV4dGAgYW5kIGZpbmQgb3V0IHdoYXQncyB1cC4KLSBBZGRlZCBgZXhhbXBsZWAgYW5kIGBkZXNjcmlwdGlvbmAgdG8gcHJvcCBhcmd1bWVudHMuCgojIyMgYDAuNC4zYCAjIyMKLSBBZGRlZCB0aGUgYHZhbGlkYXRpb25GYWlsZWRSZXNwb25zZWAgb3B0aW9uIHRvIGBPcGVuYXBpTW9kdWxlLmF0dGFjaGAuIFRoaXMgYWxsb3dzIHlvdSB0byBjdXN0b21pemUgdGhlIEpTT04gb3V0cHV0IGZyb20gdGhlIHZhbGlkYXRpb24gaW50ZXJjZXB0b3Igc28geW91IGNhbiByZXR1cm4gcHJlZGljdGFibHktc2hhcGVkIGVycm9ycy4gSXQgd29uJ3QsIGhvd2V2ZXIsIHNldCBhIGA0MDBgIGRlZmF1bHQgaW4gYGRlZmF1bHRSZXNwb25zZXNgOyB0aGF0J3MgeW91ciBqb2IuIChBbHNvIG1ha2Ugc3VyZSB5b3VyIGVycm9yIGZpbHRlciByZXR1cm5zIHRoZSBzYW1lIHNoYXBlIGZvciBhIDQwMCEpCgojIyMgYDAuNC4yYCAjIyMKLSBMZWZ0IGEgbG9nZ2luZyBzdGF0ZW1lbnQgaW4sICdjYXVzZSBJJ20gYSBtb25zdGVyLiBNeSBhcG9sb2dpZXMgdG8geW91ciBzdGRvdXQuCgojIyMgYDAuNC4xYCAjIyMKLSBBZGRlZCBgZGVmYXVsdFJlc3BvbnNlc2AgYXMgYW4gb3B0aW9uIHdoZW4gY3JlYXRpbmcgYSBkb2N1bWVudCwgdG8gYWxsb3cgZm9yIHN0YW5kYXJkIGVycm9yIHR5cGVzIHRvIGJlIHJldHVybmVkIGZyb20geW91ciBBUElzLiBUaGlzIGRvZXMgX25vdF8gZW5zdXJlIHRoYXQgdGhlc2Ugb2JqZWN0cyBhcmUgY3JlYXRlZDsgeW91IHNob3VsZCB3cml0ZSBhbiBleGNlcHRpb24gZmlsdGVyIHRvIGRvIHRoYXQtLWJ1dCBzaW5jZSB5b3UgY2FuIGp1c3QgcGFzcyBhIG1vZGVsIHR5cGUgYXMgeW91ciByZXNwb25zZSB0eXBlIGhlcmUsIGl0J3MgcHJldHR5IGVhc3kgdG8ganVzdCBjcmVhdGUgdGhlIG9iamVjdCBhbmQgd3JpdGUgaXQgb3V0IHRvIHlvdXIgcmVzcG9uc2UuCi0gUmV0cmFjdGVkIFJlRG9jIHN1cHBvcnQ7IGFmdGVyIGludmVzdGlnYXRpbmcgdGhlbSBtb3JlIGNvbXBsZXRlbHkgSSBkaXNjb3ZlcmVkIHRoYXQgdGhleSBpbnRlbmQgdG8ga2VlcCBvbi1wYWdlIGNsaWVudCBmdW5jdGlvbmFsaXR5IGFzIGEgcGFpZCBwcm9kdWN0IGFuZCBJIGhhdmUgbm8gaW50ZXJlc3QgaW4gZW5jb3VyYWdpbmcgdGhhdC4KLSBBZGRlZCBSYXBpRG9jIDUuMy4wIHN1cHBvcnQuIGBhcGlEb2NzOmAgbm93IHRha2VzIGAnc3dhZ2dlcicgfCAncmFwaWRvYycgfCBudWxsYC4gVGhpcyBpcyBzZWxmLWhvc3RlZCwgd2l0aCBubyBkZXBlbmRlbmN5IG9uIGEgcmVtb3RlIHJlc291cmNlIGZvciBpdHMgc2NyaXB0LCBzbyB5b3UgY2FuIHVzZSBpdCBpbiBlbnZpcm9ubWVudHMgd2l0aG91dCBJbnRlcm5ldCBhY2Nlc3MuICoqYHJhcGlkb2NgIHNoYWxsIGJlY29tZSB0aGUgbmV3IGRlZmF1bHQgaW4gb3IgYmVmb3JlIHZlcnNpb24gYDEuMC4wYC4qKgotIEZpeGVkIGFub3RoZXIgYnVnIHJlbGF0ZWQgdG8gTmVzdEpTIG1ldGFkYXRhIHBhcnNpbmcuIChQdWxsZWQgYDAuNC4wYCBhZnRlciBkaXNjb3Zlcnk7IGl0IHdhcyBhIHRvdWdoIG9uZS4pCgojIyMgPHN0cmlrZT5gMC40LjBgPC9zdHJpa2U+ICMjIwotIEFkZGVkIFJlRG9jIHN1cHBvcnQuIFRoZXJlIGlzIGEgbmV3IGNvbmZpZyBvcHRpb24sIGBhcGlEb2NzOiAnc3dhZ2dlcicgfCAncmVkb2MnIHwgbnVsbGA7IGl0IGRlZmF1bHRzIHRvIGBzd2FnZ2VyYC4gSWYgbnVsbCBpcyBwYXNzZWQsIEFQSXMgd2lsbCBub3QgYmUgc2VydmVkOyB0aGlzIGlzIGluIGFkZGl0aW9uIHRvIGBza2lwQXBpU2VydmluZzogdHJ1ZWAuICoqVGhpcyB3aWxsIGNoYW5nZSBiZWZvcmUgYDEuMC4wYDoqKiB0aGUgZGVmYXVsdCB3aWxsIGJlY29tZSBgcmVkb2NgIGFuZCBgc2tpcEFwaVNlcnZpbmc6IHRydWVgIHdpbGwgYmUgcmVtb3ZlZC4KCiMjIyBgMC4zLjBgICMjIwotIE5vdyBzZXJ2aW5nIHlvdXIgZG9jcyB3aXRoIFN3YWdnZXIgVUksIGxvY2F0ZWQgYXQgYC9hcGktZG9jc2AuIFBhc3MgYHNraXBBcGlTZXJ2aW5nOiB0cnVlYCB0byBgT3BlbmFwaU1vZHVsZSNhdHRhY2hgIHRvIGRpc2FibGUgaXQuCi0gQWRkZWQgYENvb2tpZWAgcGFyYW1ldGVyIGRlY29yYXRvci4gSWYgeW91IGFscmVhZHkgaGF2ZSBzb21ldGhpbmcgbGlrZSBgY29va2llLXBhcnNlcmAgc2V0IHVwLCB0aGlzIGxpYnJhcnkgd2lsbCB1c2UgdGhlIGNvb2tpZXMgdGhhdCBpdCBwYXJzZWQ7IG90aGVyd2lzZSwgaXQnbGwgcGFyc2UgYW5kIGNyZWF0ZSBgcmVxLmNvb2tpZXNgIHdpdGggYGNvb2tpZWAuCgojIyMgYDAuMi4xYCAjIyMKLSBGaXhlZCBzb21lIGxpbmdlcmluZyBlcnJvcnMgaW4gdGhlIHdheSBlbmRwb2ludCBtZXRhZGF0YSB3YXMgYmVpbmcgc2V0IGluIHNvbWUgY2FzZXMuCi0gRml4ZWQgYSBidW5jaCBvZiBUU0xpbnQgZXJyb3JzIEknZCBmb3Jnb3R0ZW4gdG8gdGFrZSBjYXJlIG9mLiBOZXh0IFRPRE8gd2lsbCBiZSBzZXR0aW5nIHVwIEh1c2t5LgoKIyMjIGAwLjIuMGAgIyMjCi0gWW91IGNhbiBub3cgcGFzcyAxLXR1cGxlIGFycmF5cyBhcyBgY29udGVudGAgYW5kIG90aGVyIHBsYWNlcyB3aGVyZSBzY2hlbWFzIGFyZSBleHBlY3RlZDsgdGhleSB3aWxsIGJlIHBhcnNlZCBhcyBhbiBhcnJheSBvZiB3aGF0ZXZlciB0eXBlIG9yIHNjaGVtYSBpcyBpbiB0aGF0IGFycmF5LgotIGBhbGxPZmAsIGBhbnlPZmAsIGBvbmVPZmAsIGFuZCBgaXRlbXNgIGFsbCBhY3QgYXMgeW91J2QgZXhwZWN0LS10aGF0IGlzLCBbZG8td2hhdC1JLW1lYW4gc2NoZW1hIGNvbnZlcnNpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9lcm9wcGxlL25lc3Rqcy1vcGVuYXBpMy8jc2NoZW1hbGlrZS1kby13aGF0LWktbWVhbi1zY2hlbWEtb2JqZWN0cykgbm93IHJlc3BlY3QgZnVuY3Rpb25zLCBhcnJheXMsIGV0Yy4gYW5kIHBhcnNlIHRoZW0gY29ycmVjdGx5LgoKIyMjIGAwLjEuMWAgIyMjCi0gRml4ZWQgb25lIG9mIHRoZSB3aWxkZXN0IGJ1Z3MgaW4gcmVjZW50IG1lbW9yeS4gVGhlIGxvbmcgYW5kIHRoZSBzaG9ydCBvZiBpdCBpcyB0aGF0IFR5cGVTY3JpcHQgZGVjb3JhdG9ycyBvbiBhbiB1bnNldCBwcm9wZXJ0eSByZW5kZXIgdGhhdCBwcm9wZXJ0eSBhcyBiZWluZyBub24td3JpdGFibGUuIEEgcmVhbCBzb2x1dGlvbiBpcyBwcm9iYWJseSBpbiB0aGUgVHlwZVNjcmlwdCBmb2xrcydzIGNvdXJ0LCBidXQgaW4gdGhlIGludGVyaW0gdGhpcyBsaWJyYXJ5IG5vdyBnZW5lcmF0ZXMgYSBkZXNjcmlwdG9yIGZvciBhIHByb3BlcnR5IHdoZW4gYXBwbGljYWJsZSB0byBhdm9pZCBtYWtpbmcgaXQgdW53cml0YWJsZS4KCiMjIyBgMC4xLjBgICMjIwotIEluaXRpYWwgcmVsZWFzZS4KCiMjIEluc3RhbGxhdGlvbiAjIwpQb3AgaW50byB5b3VyIE5lc3RKUyBwcm9qZWN0IGFuZCBgbnBtIGluc3RhbGwgQGVyb3BwbGUvbmVzdGpzLW9wZW5hcGkzYCBvciBgeWFybiBhZGQgQGVyb3BwbGUvbmVzdGpzLW9wZW5hcGkzYC4KCllvdSdsbCBuZWVkIHJlYXNvbmFibHkgdXAtdG8tZGF0ZSB2ZXJzaW9ucyBvZiBgQG5lc3Rqcy9jb21tb25gLCBgQG5lc3Rqcy9jb3JlYCwgYHJlZmxlY3QtbWV0YWRhdGFgLCBhbmQgYHJ4anNgLiAqKk5lc3RKUyBiZWZvcmUgdmVyc2lvbiA2LjUgaXMgdW5zdXBwb3J0ZWQgYW5kIHNoYWxsIG5vdCBiZSBzdXBwb3J0ZWQuKioKClRvIHNlcnZlIHlvdXIgT3BlbkFQSSBkb2N1bWVudCBhcyBhbiBleHBsb3JhYmxlIHBhZ2Ugd2l0aCAidHJ5IGl0IG91dCIgZnVuY3Rpb25hbGl0eSwgeW91J2xsIGFsc28gbmVlZCBgc3dhZ2dlci11aS1leHByZXNzYCAod2hlbiBgYXBpRG9jczogJ3N3YWdnZXInYCwgdGhlIGRlZmF1bHQsIGlzIHNldCkgb3IgYHJhcGlkb2NgICh3aGVuIGBhcGlEb2NzOiAncmFwaWRvYydgIGlzIHNldCkuIElmIHlvdSBkb24ndCB3YW50IHRvIHNlcnZlIHRoaXMsIHBhc3MgYGFwaURvY3M6IG51bGxgLgoKIyMgVXNhZ2UgIyMKRmlyc3QgYW5kIGZvcmVtb3N0LCB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgYEBlcm9wcGxlL25lc3Rqcy1vcGVuYXBpM2AgaXMgYSBoZWF2aWx5IGludGVncmF0ZWQgbGlicmFyeS4gVGhpcyBpcyBnb2luZyB0byB0b3VjaCBhIGxvdCBvZiB5b3VyIGNvZGViYXNlLiBJZiB5b3UncmUgbmV3IHRvIE9wZW5BUEksIHlvdSBzaG91bGQgaW52ZXN0aWdhdGUgW3RoZSBPcGVuQVBJIDMueCBzcGVjXSgpLiBJZiB5b3UndmUgdXNlZCBTd2FnZ2VyLCB3aGV0aGVyIHRocm91Z2ggYEBuZXN0anMvc3dhZ2dlcmAgb3IgYW5vdGhlciBhdmVudWUsIHlvdSBzaG91bGQgcmVhZCB1cCBvbiBbd2hhdCdzIG5ldyBpbiBPcGVuQVBJIDMueF0oKS4KCiMjIyBBdHRhY2hpbmcgYE9wZW5hcGlNb2R1bGVgICMjIwpZb3UnbGwgbmVlZCB0byBhdHRhY2ggdGhlIG1vZHVsZSB0byB5b3VyIGFwcGxpY2F0aW9uLiBXZSBoYXZlIHRvIGRvIGl0IHRoaXMgd2F5LCByYXRoZXIgdGhhbiBhcyBhIG5vcm1hbCBtb2R1bGUgZGVwZW5kZW5jeSBvbiBgQXBwTW9kdWxlYCBvciBzaW1pbGFyLCBiZWNhdXNlIHdlIG5lZWQgdG8gZ2V0IGFjY2VzcyB0byB0aGUgY29tcGxldGVseSBwb3B1bGF0ZWQgZGVwZW5kZW5jeSBpbmplY3Rpb24gY29udGFpbmVyLgoKYGBgdHMKLy8gSXQncyBnb29kIHByYWN0aWNlIHRvIG1ha2UgdGhpcyBhIHNlcGFyYXRlIG1ldGhvZDsgeW91IGNhbiB0aGVuCi8vIGRvIGhhbmR5IHN0dWZmIGxpa2UgZ2VuZXJhdGUgeW91ciBPcGVuQVBJIGRvY3VtZW50IHdpdGhvdXQgaGF2aW5nCi8vIHRvIHN0YXJ0IGEgd2ViIHNlcnZlci4gVGFrZSBhIGxvb2sgYXQgb3VyIGV4YW1wbGUgYXBwIGZvciBtb3JlCi8vIGluZm9ybWF0aW9uLgphc3luYyBmdW5jdGlvbiBidWlsZE9wZW5hcGlEb2N1bWVudChhcHA6IElOZXN0QXBwbGljYXRpb24pIHsKICByZXR1cm4gT3BlbmFwaU1vZHVsZS5jcmVhdGVEb2N1bWVudCgKICAgIHsKICAgICAgYXBwLAogICAgICAvLyBZb3UgY2FuIHBhc3MgYGNvbnNvbGVgIGhlcmUgaWYgeW91J3JlIGxhbWUsIGJ1dCB5b3UKICAgICAgLy8gc2hvdWxkIGJlIHVzaW5nIEJ1bnlhbi4gQ2hlY2sgb3V0IGBAZXJvcHBsZS9uZXN0anMtYnVueWFuYCEKICAgICAgYmFzZUxvZ2dlcjogb3BlbmFwaUxvZ2dlciwKICAgIH0sCiAgICAoYikgPT4gewogICAgICBiLmFkZFRpdGxlKGAke0FQUExJQ0FUSU9OX05BTUV9IEFQSWApOwogICAgICBiLmFkZFZlcnNpb24oUEFDS0FHRV9WRVJTSU9OKTsKICAgICAgYi5hZGRTZXJ2ZXIoewogICAgICAgIHVybDogQVBJX1VSTCwKICAgICAgfSk7CiAgICAgIGIuYWRkU2VjdXJpdHlTY2hlbWUoJ3Rva2VuJywgewogICAgICAgIG5hbWU6ICdBdXRob3JpemF0aW9uJywKICAgICAgICB0eXBlOiAnYXBpS2V5JywKICAgICAgICBpbjogJ2hlYWRlcicsCiAgICAgIH0pOwogICAgfSwKICApOwp9Cgphc3luYyBmdW5jdGlvbiBjb25maWd1cmVBcHAoYXBwOiBJTmVzdEFwcGxpY2F0aW9uKSB7CiAgLy8gV2hlcmV2ZXIgeW91IHNldCB1cCBDT1JTLCBoZWxtZXQsIGV0Yy4gLSBqdXN0IGRvIHRoaXMKCiAgYXdhaXQgT3BlbmFwaU1vZHVsZS5hdHRhY2goCiAgICB7CiAgICAgIGFwcCwKICAgICAgYmFzZUxvZ2dlcjogb3BlbmFwaUxvZ2dlciwKICAgICAgZG9jdW1lbnQ6IGF3YWl0IGJ1aWxkT3BlbmFwaURvY3VtZW50KGFwcCksCiAgICB9LAogICk7Cn0KYGBgCgpZb3UgY2FuIG5vdyBzZWUgeW91ciBBUEkgZG9jdW1lbnQgYXQgYC9vcGVuYXBpLmpzb25gIGFuZCB5b3VyIFN3YWdnZXIgVUkgYXQgYC9hcGktZG9jc2AuCgojIyMgRGVjb3JhdG9ycywgRGVjb3JhdG9ycywgYW5kIE1vcmUgRGVjb3JhdG9ycyAjIyMKVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGEgbnVtYmVyIG9mIGRlY29yYXRvcnMgYW5kIGl0J3MgcHJvYmFibHkgYmVzdCB0byBsb29rIGF0IFtFZCdzIHNrZWxldG9uIHByb2plY3RdKCkgdG8gZ2V0IGEgd29ya3MtaW4tYW5nZXIgZXhhbXBsZSBvZiB0aGUgZnVsbCBBUEkuCgpPbmUgdGhpbmcgSSd2ZSBmb3VuZCB0byBiZSB2ZXJ5IHVzZWZ1bCBpcyB0byBpbXBvcnQgZGVjb3JhdG9ycyB1bmRlciBhIG5hbWVzcGFjZSBpbiBvcmRlciB0byBtYWtlIGl0IGNsZWFyZXIgd2hlbiBkZWNvcmF0b3JzIHRoYXQgX2FyZW4ndF8gZnJvbSBOZXN0SlMgYXJlIGJlaW5nIHVzZWQuIE15IHN0YW5kYXJkIGFwcHJvYWNoLCB0aGVuLCBpcyB0byBpbXBvcnQgdGhlIGVudGlyZSBwYWNrYWdlOgoKYGBgdHMKaW1wb3J0ICogYXMgT0FTIGZyb20gJ0Blcm9wcGxlL25lc3Rqcy1vcGVuYXBpMyc7CmBgYAoKIyMjIyBQYXJlbnQtIGFuZCBFbmRwb2ludC1MZXZlbCBEZWNvcmF0b3JzICMjIyMKU29tZSBkZWNvcmF0b3JzIGNhbiBiZSBhcHBsaWVkIHRvIGNvbnRyb2xsZXJzIChhbmQgYWxsIGVuZHBvaW50cyB3aXRoaW4gdGhhdCBjb250cm9sbGVyKSBhbmQgbW9kdWxlcyAoYW5kIGFsbCBlbmRwb2ludHMgd2l0aGluIGFsbCBjb250cm9sbGVycykuIFRoZXNlIGluY2x1ZGU6CgotIGBAT0FTLlRhZ3MoKWAgLSB0YWdzIG9wZXJhdGlvbnMgaW4gdGhlIGRvY3VtZW50IChvZnRlbiB1c2VkIHRvIG1vcmUgcmljaGx5IGRlZmluZSBjbGllbnRzKQotIGBAT0FTLkRlcHJlY2F0ZWQoKWAgLSBtYXJrcyBhcyBkZXByZWNhdGVkCi0gYEBPQVMuSWdub3JlKClgIC0gc2tpcHMgT3BlbkFQSSBoYW5kbGluZwotIGBAT0FTLlBhcmFtZXRlcigpYCAtIGRlZmluZXMgYSBwYXJhbWV0ZXIgdGhhdCdzIHVzZWQgb3V0c2lkZSBvZiB0aGUgaGFuZGxlci4gRm9yIGV4YW1wbGUsIGluIFtFZCdzIHNrZWxldG9uIHByb2plY3RdKCksIGl0J3MgdXNlZCB0byBwcm92aWRlIGB0ZW5hbnROYW1lYCBpbiBhIHdheSB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gYEBlcm9wcGxlL25lc3Rqcy1hdXRoYCB0byBkZXRlcm1pbmUgdGVuYW5jeSwgZnJvbSB3aGljaCBhIHVzZXIgY2FuIGJlIGZvdW5kLgotIGBAT0FTLlNlY3VyaXR5U2NoZW1lKClgIC0gYWRkcyBhIHNlY3VyaXR5IHNjaGVtZSwgd2l0aCBzY29wZXMgZm9yIE9BdXRoMiBvciBPSURDIHNjaGVtZXMKCiMjIyMgRW5kcG9pbnQtTGV2ZWwgRGVjb3JhdG9ycyAjIyMjCkluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSwgc29tZSBkZWNvcmF0b3JzIGFwcGx5IGV4cGxpY2l0bHkgdG8gdGhlIGVuZHBvaW50IGhhbmRsZXIuCgotIGBAT0FTLkdldCgpYCwgYEBPQVMuUG9zdCgpYCwgYEBPQVMuUHV0KClgLCBldGMuIC0gcmVwbGFjZXMgTmVzdEpTJ3MgaHR0cCBtZXRob2QgZGVjb3JhdG9ycyAoc3VjaCBhcyBgQEdldCgpYCkgd2l0aCBkZWNvcmF0b3JzIHRoYXQgYWNjZXB0IE9wZW5BUEkgb3BlcmF0b3IgZGV0YWlscy4KLSBgQE9BUy5PcGVyYXRpb24oKWAgLSB0aGUgImJyZWFrIGdsYXNzIGluIGNhc2Ugb2YiIG9wdGlvbi4gSWYgeW91IHdhbnQgdG8gd3JpdGUgYSBsaXRlcmFsIG9wZXJhdGlvbiBmb3IgaW5jbHVzaW9uIGluIHlvdXIgT3BlbkFQSSBkb2N1bWVudCwgdXNlIHRoaXMgb25lLiBZb3UnbGwgbmVlZCB0byB1c2UgYSBOZXN0SlMgSFRUUCBtZXRob2QgZGVjb3JhdG9yLCBzdWNoIGFzIGBAR2V0KClgLCB0byBtYWtlIHN1cmUgdGhhdCBOZXN0SlMgY2FuIHJvdXRlIHJlcXVlc3RzLgoKIyMjIyBBcmd1bWVudC1MZXZlbCBEZWNvcmF0b3JzICMjIyMKVGhlc2UgZGVjb3JhdG9ycyBvbmx5IGFwcGx5IHRvIHRoZSBhcmd1bWVudHMgaW4gYW4gZW5kcG9pbnQgaGFuZGVyIGZ1bmN0aW9uLgoKLSBgQE9BUy5Cb2R5KClgIC0gd3JhcHMgTmVzdEpTJ3MgYEBCb2R5KClgIGFuZCBhY2NlcHRzIHNjaGVtYXMgZm9yIHJlcXVlc3QgYm9kaWVzLgotIGBAT0FTLlBhdGgoKWAgLSB3cmFwcyBOZXN0SlMncyBgQFBhcmFtKClgLiBUaGUgbmFtZSBjaGFuZ2UgaXMgX2ludGVudGlvbmFsXyB0byBtYXRjaCB1cCB3aXRoIHRoZSBgaW5gIGZpZWxkIG9mIGFuIE9wZW5BUEkgcGFyYW1ldGVyIG9iamVjdC4KLSBgQE9BUy5IZWFkZXIoKWAgLSB3cmFwcyBOZXN0SlMncyBgQEhlYWRlcnMoKWAsIG9ubHkgc3VwcG9ydGluZyBhIHNpbmdsZSBzZWxlY3RlZCBoZWFkZXIuCi0gYEBPQVMuUXVlcnkoKWAgLSB3cmFwcyBOZXN0SlMncyBgQFF1ZXJ5KClgLgoKIyMjIGBTY2hlbWFMaWtlYDogIkRvIFdoYXQgSSBNZWFuIiBTY2hlbWEgT2JqZWN0cyAjIyMKTW9zdCBvZiB0aGlzIGxpYnJhcnkgZG9lc24ndCByZWx5IGRpcmVjdGx5IG9uIHRoZSBgTzNUUy5TY2hlbWFPYmplY3RgIGZldGNoZWQgb3V0IG9mIG91ciBkZXBlbmRlbmN5LCBgb3BlbmFwaTMtdHNgLiBJbnN0ZWFkLCB3ZSByZWx5IG9uIHRoZSBjb25jZXB0IG9mIGEgYFNjaGVtYUxpa2VgLCB3aGljaCBpcyBkZWZpbmVkIGFzIHRodXM6CgpgYGB0cwpleHBvcnQgdHlwZSBTY2hlbWFMaWtlU2NoZW1hT2JqZWN0ID0KICAmIE8zVFMuU2NoZW1hT2JqZWN0CiAgJiB7CiAgICBhbGxPZjogQXJyYXk8TzNUUy5TY2hlbWFPYmplY3QgfCBPM1RTLlJlZmVyZW5jZU9iamVjdCB8IEN0b3IgfCBTY2hlbWFMaWtlU2NoZW1hT2JqZWN0PjsKICAgIGFueU9mOiBBcnJheTxPM1RTLlNjaGVtYU9iamVjdCB8IE8zVFMuUmVmZXJlbmNlT2JqZWN0IHwgQ3RvciB8IFNjaGVtYUxpa2VTY2hlbWFPYmplY3Q+OwogICAgb25lT2Y6IEFycmF5PE8zVFMuU2NoZW1hT2JqZWN0IHwgTzNUUy5SZWZlcmVuY2VPYmplY3QgfCBDdG9yIHwgU2NoZW1hTGlrZVNjaGVtYU9iamVjdD47CgogICAgaXRlbXM6IE8zVFMuU2NoZW1hT2JqZWN0IHwgTzNUUy5SZWZlcmVuY2VPYmplY3QgfCBDdG9yIHwgU2NoZW1hTGlrZVNjaGVtYU9iamVjdDsKICB9OwoKZXhwb3J0IHR5cGUgU2NoZW1hTGlrZSA9CiAgU2NoZW1hTGlrZVNjaGVtYU9iamVjdCB8IE8zVFMuU2NoZW1hT2JqZWN0IHwgTzNUUy5SZWZlcmVuY2VPYmplY3QgfCBDdG9yIHwKICBbU2NoZW1hTGlrZVNjaGVtYU9iamVjdCB8IE8zVFMuU2NoZW1hT2JqZWN0IHwgTzNUUy5SZWZlcmVuY2VPYmplY3QgfCBDdG9yXTsKYGBgCgpBbnl3aGVyZSB5b3Ugd291bGQgbm9ybWFsbHkgd3JpdGUgYSBbU2NoZW1hIE9iamVjdF0oKSwgeW91IGNhbiBwYXNzIGFueSBvZiB0aGUgYWJvdmU6CgotIEEgc2NoZW1hIG9iamVjdCAoYHsgdHlwZTogJ3N0cmluZycgfWAsIGV0Yy4pIC0tIGJ1dCB0aGVyZSdzIGEgdHdpc3Q6IGFueSBvZiBgYWxsT2ZgLCBgYW55T2ZgLCBvciBgb25lT2ZgIGNhbiBiZSBhIGBTY2hlbWFMaWtlYC4KLSBBIHJlZmVyZW5jZSBvYmplY3QgdG8gYSBzY2hlbWEgZGVjbGFyZWQgZWxzZXdoZXJlIGluIHRoZSBBUEkgb3IgZXhwbGljaXRseSBhZ2FpbnN0IHRoZSBgT3BlbkFwaUJ1aWxkZXJgIGNsYXNzIGR1cmluZyB0aGUgYXR0YWNobWVudCBvZiB0aGUgbW9kdWxlLgotIEEgMS10dXBsZSBhcnJheSB3aXRoIGFueSBvZiB0aGUgYWJvdmUsIHdoaWNoIHdpbGwgeWllbGQgYHsgdHlwZTogJ2FycmF5JywgaXRlbXM6IFlvdXJTdWJTY2hlbWFIZXJlIH1gLgotIEEgY29uc3RydWN0b3IgZm9yIGEgY2xhc3MgZGVjb3JhdGVkIHdpdGggYEBPQVMuTW9kZWwoKWAsIHdoaWNoIHdpbGwgeWllbGQgYXMgYSBzY2hlbWEgZW50ZXJlZCBpbnRvIGAjL2NvbXBvbmVudHMvc2NoZW1hc2AgYW5kIHVzZWQgYXMgYSByZWZlcmVuY2UgKGB7ICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Zb3VyQ2xhc3NOYW1lJyB9YCkuCgojIyMgRmV0Y2hpbmcgdGhlIE9wZW5BUEkgRG9jdW1lbnQgIyMjClRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCB0aGUgT3BlbkFQSSBKU09OIGRvY3VtZW50IHNob3VsZCBiZSBzZXJ2ZWQgYXQgYC9vcGVuYXBpLmpzb25gLiBXZSBmb2xsb3cgdGhhdCBzdWdnZXN0aW9uLgoKWW91ciBBUEkgZG9jcyBhcmUgc2VydmVkIGF0IGAvYXBpLWRvY3NgLiBJdCdzIGNvbmZpZ3VyYWJsZSBiZXR3ZWVuIGByYXBpZG9jYCBhbmQgYHN3YWdnZXJgICh0aGUgZGVmYXVsdCwgdGhvdWdoIGl0IHdpbGwgc3RvcCBiZWluZyB0aGUgZGVmYXVsdCBpbiBvciBiZWZvcmUgdmVyc2lvbiBgMS4wLjBgKS4KCiMjIyBWYWxpZGF0aW9uIGFuZCBDb2VyY2lvbiAjIyMKT25lIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW4gYEBuZXN0anMvc3dhZ2dlcmAgYW5kIGBAZXJvcHBsZS9uZXN0anMtb3BlbmFwaTNgIGlzIHRoYXQgdGhpcyBsaWJyYXJ5IGRvZXMgdHlwZSBjb252ZXJzaW9uIHRvIG1hdGNoIHlvdXIgZGVzaXJlZCBzY2hlbWEuIEJ5IGRlZmF1bHQsIGluIE5lc3RKUywgdGhlIGZvbGxvd2luZyBIVFRQIGhhbmRsZXIgZG9lc24ndCBkbyB3aGF0IHlvdSdkIGV4cGVjdDoKCmBgYHRzCkBDb250cm9sbGVyKCdmb28nKQpleHBvcnQgY2xhc3MgRm9vQ29udHJvbGxlciB7CiAgQEdldCgpCiAgZG9Tb21ldGhpbmcoQFF1ZXJ5KCd2JykgdjogbnVtYmVyKSB7CiAgICBjb25zb2xlLmxvZyh0eXBlb2YodikpOyAvLyBUaGlzIHdpbGwgcmV0dXJuIGBzdHJpbmdgLCBub3QgYG51bWJlcmAhCiAgfQp9CmBgYAoKVGhpcyBzdGlua3MsIHNvIGBAZXJvcHBsZS9uZXN0anMtb3BlbmFwaTNgIHRyaWVzIHRvIGRvIG9uZSBiZXR0ZXIuIFNpbmNlIE9wZW5BUEkgc2NoZW1hcyBhcmUganVzdCBKU09OIHNjaGVtYXMsIHdlIHVzZSBbYWp2XSgpIHRvIHZhbGlkYXRlIGluY29taW5nIHBhcmFtZXRlcnMgYW5kIHJlcXVlc3QgYm9kaWVzLiBhanYgYWxzbyBzdXBwb3J0cyB0eXBlIGNvZXJjaW9uLCB3aGljaCB3ZSd2ZSBlbmFibGVkLiBTbyBpbnN0ZWFkLCB5b3UndmUgZ290IHNvbWV0aGluZyBtb3JlIGxpa2UgdGhpczoKCmBgYHRzCkBDb250cm9sbGVyKCdmb28nKQpleHBvcnQgY2xhc3MgRm9vQ29udHJvbGxlciB7CiAgQE9BUy5HZXQoKQogIGRvU29tZXRoaW5nKEBPQVMuUXVlcnkoJ3YnKSB2OiBudW1iZXIpIHsKICAgIGNvbnNvbGUubG9nKHR5cGVvZih2KSk7IC8vIFRoaXMgd2lsbCByZXR1cm4gYG51bWJlcmAuCiAgfQp9CmBgYAoKYWp2J3MgdHlwZSBjb2VyY2lvbiBhbHNvIGFwcGxpZXMgdG8gb2JqZWN0cyBpbiByZXF1ZXN0IGJvZGllcy4KClRoZXJlIGFyZSBzb21lIHNoYXJwIGVkZ2VzIHRvIGFqdiB0eXBlIGNvZXJjaW9uLiBNb3N0IG5vdGFibHksIGlmIGEgY2xpZW50IHBhc3NlcyBgbnVsbGAgd2hlbiBhIHN0cmluZyBpcyBleHBlY3RlZCwgaXQgd2lsbCBiZSBjb2VyY2VkIHRvIHRoZSBlbXB0eSBzdHJpbmcgKGAiImApLiBZb3UgbWlnaHQgd2FudCB0byB0YWtlIGEgbG9vayBhdCB0aGUgW2FqdiBjb2VyY2lvbiBjaGFydF0oKSB0byBhdm9pZCBhbnkgZm9vdGd1bnMuCgojIyMgVXBncmFkaW5nIGZyb20gYEBuZXN0anMvc3dhZ2dlcmAgIyMjCkRpc2N1c3NpbmcgdGhpcyBpbi1kZXB0aCBpcyBhIGJpZyBvbCcgKipUT0RPKiogaXRlbS4gSSd2ZSBjb252ZXJ0ZWQgcHJvamVjdHMgdXNpbmcgU3dhZ2dlciAyLjAgdG8gdXNpbmcgdGhpcyBsaWJyYXJ5OyBpZiB5b3UgaGF2ZSBhIGJhc2ljIHVuZGVyc3RhbmRpbmcgb2YgYSBTd2FnZ2VyIGRvY3VtZW50IGFuZCBpdHMgY29tcG9uZW50cywgcG9ydGluZyBpcyBwcmV0dHkgZWFzeS4gU29tZSBub3RlcyAocGxlYXNlIGZlZWwgZnJlZSB0byBhZGQgbW9yZSB0byB0aGlzIGxpc3QpOgoKLSBOZXN0SlMncyBidWlsdC1pbiByb3V0aW5nIGRlY29yYXRvcnMsIGxpa2UgYEBHZXQoKWAgYW5kIGBAUG9zdCgpYCwgY2FuIGJlIHJlcGxhY2VkIHdpdGggYEBPQVMuR2V0KClgIGFuZCBgQE9BUy5Qb3N0KClgLiBZb3UgY2FuIHNwZWNpZnkgb3BlcmF0aW9uIGluZm9ybWF0aW9uIGFzIGFuIGFyZ3VtZW50IHRvIHRoaXMgZGVjb3JhdG9yLgotIGBAUGFyYW0oKWAgaXMgcmVwbGFjZWQgd2l0aCBgQE9BUy5QYXRoKClgCi0gYEBIZWFkZXJzKClgIGlzIHN0aWxsIHVzYWJsZSB0byBmZXRjaCBhbGwgaGVhZGVycyBmcm9tIGEgcmVxdWVzdCwgYnV0IGBASGVhZGVycygnc3BlY2lmaWMtaGVhZGVyJylgIGlzIHJlcGxhY2VkIHdpdGggYEBPQVMuSGVhZGVyKClgLgotIGBAUXVlcnkoKWAgaXMgcmVwbGFjZWQgd2l0aCBgQE9BUy5RdWVyeSgpYC4KLSBgQEJvZHkoKWAgaXMgcmVwbGFjZWQgd2l0aCBgQE9BUy5Cb2R5KClgLgotIEJ1cm4gYWxsIHRoYXQgYEBBcGlFeHBsaWNpdFBhcmFtKClgIHN0dWZmIHdpdGggY2xlYW5zaW5nIGZpcmUuCi0gQWRkIGBAT0FTLk1vZGVsKClgIG9yIGBAT0FTLk1vZGVsUmF3KClgIHRvIGFsbCB5b3VyIHJlcXVlc3QgYm9kaWVzIG9yIHJlc3BvbnNlcy4gKGBAT0FTLk1vZGVsUmF3KClgIGlzIHVzZWZ1bCBmb3IgdHVybmluZyBvZmYgbW9kZWwgaW50cm9zcGVjdGlvbiBpZiB5b3UndmUgZ290IGFuIG9iamVjdCB0aGF0IGhpbmdlcyBvbiBkaXNjcmltaW5hdG9ycyBvciBvdGhlciBhZHZhbmNlZCkKLSBSZXBsYWNlIGBAQXBpTW9kZWxQcm9wZXJ0eSgpYCB3aXRoIGBAT0FTLlByb3AoKWAgb3IsIGlmIHlvdSdyZSB3cml0aW5nIHNvbWV0aGluZyB0aGF0J3MgaGFyZCB0byBkZXNjcmliZSwgYEBPQVMuUHJvcFJhdygpYC4KCiMjIFdoYXQgVGhpcyBMaWJyYXJ5IERvZXNuJ3QgKEFuZCBQcm9iYWJseSBXb24ndCkgRG8gIyMKLSBbRGlzY3JpbWluYXRvcnNdKCkgYXJlIG5vdCBzdXBwb3J0ZWQgYW5kIHByb2JhYmx5IG5ldmVyIHdpbGwuIEkgdGhpbmsgdGhleSdyZSBhIGJhZCBpZGVhIGFuZCBuZWFybHkgaW1wb3NzaWJsZSB0byBtb2RlbCBpbiBhIGdlbmVyaWMgd2F5LiBJZiB5b3UndmUgZ290IGEgYnJpbGxpYW50IFBSIHN1Z2dlc3Rpb24sIEknZCBiZSB3aWxsaW5nIHRvIGxvb2sgYXQgaXQsIGJ1dCBzZWVpbmcgYXMgaG93IGl0IG1ha2VzIGEgbG90IG9mIHRoaW5ncyBicmVhayAoZm9yIGV4YW1wbGUsIHdlIG5vIGxvbmdlciBjYW4gdXNlIFthanZdKCkgdG8gdmFsaWRhdGUgc2NoZW1hcyksIEknbSBza2VwdGljYWwuCgojIyBBdmVudWVzIGZvciBDb250cmlidXRpb24gIyMKTG9vayBmb3IgYFRPRE9gcyBpbiB0aGUgY29kZWJhc2U7IHRoZXkncmUgdXN1YWxseSBnb29kIGNvbnRyaWJ1dGlvbiBvcHBvcnR1bml0aWVzIQoKLSBGYXN0aWZ5IHN1cHBvcnQuIEEgbG90IG9mIGBPcGVuYXBpVmFsaWRhdGlvbkludGVyY2VwdG9yYCBleHBlY3RzIHRvIGJlIHVzaW5nIEV4cHJlc3MuIFByb2JhYmx5IG5vdCBhIGh1Z2UgY2hhbGxlbmdlLCB0aG91Z2guCi0gQWRkIG9wdGlvbmFsIFN3YWdnZXIgVUkgZnVuY3Rpb25hbGl0eSwgc2ltaWxhciB0byBgQG5lc3Rqcy9zd2FnZ2VyYC4KLSBUZXN0cyBpbiBpc29sYXRpb24uIEknbSBub3QgY2xlYXIgb24gaG93IHRvIGFkZXF1YXRlbHkgdW5pdCB0ZXN0IGFnYWluc3QgZnVuY3Rpb25hbGl0eSBoYW5naW5nIGRpcmVjdGx5IG9mZiBvZiBOZXN0SlM7IHJpZ2h0IG5vdyB0aGlzIGxpYnJhcnkgKGFsb25nIHdpdGggb3RoZXIgaGlnaGx5IGludGVncmF0ZWQgbGlicmFyaWVzIG9mIG1pbmUsIGxpa2UgbmVzdGpzLWF1dGgpIHJlbGllcyBvbiBpbnRlZ3JhdGlvbiB0ZXN0cyBpbiBleGFtcGxlIHByb2plY3RzLgotIE9ubHkgdGhlIHNpbXBsZXN0IHBhcmFtZXRlciBzdHlsZXMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6IGBzaW1wbGVgICh0aGUgb25seSBvbmUgZm9yIGhlYWRlcnMsIHRob3VnaCBwYXRocyBoYXZlIG90aGVyIG9wdGlvbnMgdGhhdCB3ZSBkb24ndCBzdXBwb3J0KSBhbmQgYGZvcm1gIGZvciBxdWVyeSBwYXJhbWV0ZXJzLiBJZiBzb21lYm9keSBvdXQgdGhlcmUgbmVlZHMgbW9yZSBjb21wbGV4IHN0eWxlcywgeW91IHNob3VsZAotIENsZWFuZXIgdHlwZXMgYXJvdW5kIHNvbWUgb2YgdGhlIEFQSS4gRm9yIGV4YW1wbGUsIHJpZ2h0IG5vdyB5b3UgbXVzdCB1c2Ugb25lIG9mIGBjb250ZW50YCBvciBgbXVsdGlDb250ZW50YCBmb3IgcmVxdWVzdCBib2RpZXMsIGJ1dCB0aGVyZSdzIG5vIHR5cGUgY2hlY2tpbmcgdG8gYXNzZXJ0IHRoYXQgb25lIF9tdXN0XyBiZSB1c2VkLiBTaW1pbGFybHksIG9wZXJhdGlvbiByZXNwb25zZXMgYXJlIGEgbGl0dGxlIGtsdWRneS4gUHJvYmFibHkgYW4gZWFzeSBmaXggZm9yIHNvbWVib2R5IQotIERlZXBseSBuZXN0ZWQgU2NoZW1hTGlrZXMgKHNlZSBhYm92ZSkgbWF5IG5vdCBiZSBiZWluZyBoYW5kbGVkIGNvcnJlY3RseSBpbiBhbGwgY2FzZXMuCi0gW0V4YW1wbGUgZnVuY3Rpb25hbGl0eV0oKSBpcyBlbnRpcmVseSBhYnNlbnQuIFNxdWFyaW5nIGl0IHdpdGggc2ltcGxpZmllZCBmbGF2b3JzIG9mIGNvbnRlbnQgb2JqZWN0cyBpcyBoYXJkIGFuZCBJIGRvbid0IHVzZSBpdDsgcHVsbCByZXF1ZXN0cyB3ZWxjb21lLgotIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiBvZGQgYmVoYXZpb3JzIHJlc3VsdGluZyBmcm9tIHVzaW5nIFthanZdKCkgdG8gdmFsaWRhdGUgY2xpZW50IHBhcmFtZXRlcnMvcmVxdWVzdCBib2RpZXMgYWdhaW5zdCBvdXIgT3BlbkFQSSAzIHNjaGVtYXMuIEluIHBhcnRpY3VsYXIsIHdoZW4gZGVhbGluZyB3aXRoIGEgc3RyaW5nIGZpZWxkLCBhanYgY29lcmNlcyBgbnVsbGAgdG8gdGhlIGVtcHR5IHN0cmluZy4gSSB0aGluayB0aGlzIHNob3VsZCBmYWlsIGhhcmQgaW5zdGVhZCwgYnV0IG5vdCBlbm91Z2ggdG8gbm90IHVzZSBhanYhCi0gTWF5YmUgbWFrZSBgZGVmYXVsdFJlc3BvbnNlc2AgYSBsaXR0bGUgc21hcnRlci4gU2F5IHlvdSdyZSB1c2luZyB0aGUgbW9kdWxlJ3MgYHZhbGlkYXRpb25GYWlsZWRSZXNwb25zZWAgYnVpbGRlci0taXQgZG9lc24ndCBtYWtlIHNlbnNlIGZvciBhIGA0MDBgIHRvIGJlIG9uIGFsbCBlbmRwb2ludHMsIGV2ZW4gb25lcyB3aGVyZSB0aGVyZSBhcmUgbm8gcGFyYW1ldGVycyBvciBoZWFkZXJzLiBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgX21pZ2h0XyBtYWtlIHNlbnNlLCBiZWNhdXNlIGl0IG1lYW5zIGEgdXNlciBjYW4gdGhyb3cgYSBjb2RlIDQwMCBgSHR0cEV4Y2VwdGlvbmAgZXZlbiB3aGVuIHRoZXkncmUgZGVhbGluZyB3aXRoIG1vcmUgaW50cmljYXRlIGRldGFpbHMgb2YgYSBiYWQgcmVxdWVzdC4gT3BlbiB0byBkaXNjdXNzaW9uLgoKW05lc3RKU106IGh0dHBzOi8vbmVzdGpzLmNvbS8KW0VkJ3Mgc2tlbGV0b24gcHJvamVjdF06IGh0dHBzOi8vZ2l0aHViLmNvbS9lcm9wcGxlL25lc3QtYW5kLW5leHQtc2tlbGV0b24KW09wZW5BUEkgMy54XTogaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9hYm91dC8KW0BuZXN0anMvc3dhZ2dlcl06IGh0dHBzOi8vZG9jcy5uZXN0anMuY29tL3JlY2lwZXMvc3dhZ2dlcgpbU2NoZW1hIE9iamVjdF06IGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4yLm1kI3NjaGVtYU9iamVjdApbdGhlIE9wZW5BUEkgMy54IHNwZWNdOiBodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMi5tZApbd2hhdCdzIG5ldyBpbiBPcGVuQVBJIDMueF06IGh0dHBzOi8vc3dhZ2dlci5pby9ibG9nL25ld3Mvd2hhdHMtbmV3LWluLW9wZW5hcGktMy0wLwpbRXhhbXBsZSBmdW5jdGlvbmFsaXR5XTogaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjIubWQjZXhhbXBsZU9iamVjdApbRGlzY3JpbWluYXRvcnNdOiBodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMi5tZCNkaXNjcmltaW5hdG9yT2JqZWN0ClthanZdOiBodHRwczovL2dpdGh1Yi5jb20vZXBvYmVyZXpraW4vYWp2ClthanYgY29lcmNpb24gY2hhcnRdOiBodHRwczovL2Fqdi5qcy5vcmcvY29lcmNpb24uaHRtbAo= readmeEtag: '"b7f5fb24078604d03f75aeed32db07e8b1fb568a"' readmeLastModified: Tue, 19 Nov 2019 20:15:40 GMT repositoryId: 210099348 description: OpenAPI 3.x document generation and serving for NestJS. created: '2019-09-22T06:09:28Z' updated: '2026-01-24T02:29:32Z' language: TypeScript archived: true stars: 25 watchers: 2 forks: 1 owner: eropple logo: https://avatars.githubusercontent.com/u/109262?v=4 repoEtag: '"526a8ca8da7b8bb8e942c0ad72d7e88d950aa4cc70fbb2e468bcf4f98a6f5e1f"' repoLastModified: Sat, 24 Jan 2026 02:29:32 GMT foundInMaster: true id: 45bed8813d1c030edf5f60d19fc7791d - source: https://openapi.tools/ name: '@nestjs/swagger' category: Server language: Node.js link: https://docs.nestjs.com/recipes/swagger repository: https://github.com/nestjs/swagger source_description: > Official OpenAPI (Swagger) module for NestJS. Use decorators to define OpenAPI endpoint documentation, parameters and return types. Integrates tightly with a NestJS application. Ships with Swagger UI and serves OpenAPI v3 spec. v2: false v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+DQogIDxhIGhyZWY9Imh0dHA6Ly9uZXN0anMuY29tLyIgdGFyZ2V0PSJibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vbmVzdGpzLmNvbS9pbWcvbG9nby1zbWFsbC5zdmciIHdpZHRoPSIxMjAiIGFsdD0iTmVzdCBMb2dvIiAvPjwvYT4NCjwvcD4NCg0KPHAgYWxpZ249ImNlbnRlciI+QSBwcm9ncmVzc2l2ZSA8YSBocmVmPSJodHRwOi8vbm9kZWpzLm9yZyIgdGFyZ2V0PSJibGFuayI+Tm9kZS5qczwvYT4gZnJhbWV3b3JrIGZvciBidWlsZGluZyBlZmZpY2llbnQgYW5kIHNjYWxhYmxlIHNlcnZlci1zaWRlIGFwcGxpY2F0aW9ucy48L3A+DQo8cCBhbGlnbj0iY2VudGVyIj4NCiAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL35uZXN0anNjb3JlIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AbmVzdGpzL2NvcmUuc3ZnIiBhbHQ9Ik5QTSBWZXJzaW9uIiAvPjwvYT4NCiAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL35uZXN0anNjb3JlIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9AbmVzdGpzL2NvcmUuc3ZnIiBhbHQ9IlBhY2thZ2UgTGljZW5zZSIgLz48L2E+DQogIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9+bmVzdGpzY29yZSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL0BuZXN0anMvY29yZS5zdmciIGFsdD0iTlBNIERvd25sb2FkcyIgLz48L2E+DQogIDxhIGhyZWY9Imh0dHBzOi8vY2lyY2xlY2kuY29tL2doL25lc3Rqcy9uZXN0IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY2lyY2xlY2kvYnVpbGQvZ2l0aHViL25lc3Rqcy9uZXN0L21hc3RlciIgYWx0PSJDaXJjbGVDSSIgLz48L2E+DQogIDxhIGhyZWY9Imh0dHBzOi8vZGlzY29yZC5nZy9HN1Fubmh5IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGlzY29yZC1vbmxpbmUtYnJpZ2h0Z3JlZW4uc3ZnIiBhbHQ9IkRpc2NvcmQiLz48L2E+DQogIDxhIGhyZWY9Imh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL25lc3QjYmFja2VyIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vbmVzdC9iYWNrZXJzL2JhZGdlLnN2ZyIgYWx0PSJCYWNrZXJzIG9uIE9wZW4gQ29sbGVjdGl2ZSIgLz48L2E+DQogIDxhIGhyZWY9Imh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL25lc3Qjc3BvbnNvciI+PGltZyBzcmM9Imh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL25lc3Qvc3BvbnNvcnMvYmFkZ2Uuc3ZnIiBhbHQ9IlNwb25zb3JzIG9uIE9wZW4gQ29sbGVjdGl2ZSIgLz48L2E+DQogIDxhIGhyZWY9Imh0dHBzOi8vcGF5cGFsLm1lL2thbWlsbXlzbGl3aWVjIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9Eb25hdGUtUGF5UGFsLWRjM2Q1My5zdmciLz48L2E+DQogIDxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vbmVzdGZyYW1ld29yayI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdHdpdHRlci9mb2xsb3cvbmVzdGZyYW1ld29yay5zdmc/c3R5bGU9c29jaWFsJmxhYmVsPUZvbGxvdyI+PC9hPg0KPC9wPg0KICA8IS0tWyFbQmFja2VycyBvbiBPcGVuIENvbGxlY3RpdmVdKGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL25lc3QvYmFja2Vycy9iYWRnZS5zdmcpXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9uZXN0I2JhY2tlcikNCiAgWyFbU3BvbnNvcnMgb24gT3BlbiBDb2xsZWN0aXZlXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9uZXN0L3Nwb25zb3JzL2JhZGdlLnN2ZyldKGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL25lc3Qjc3BvbnNvciktLT4NCg0KIyMgRGVzY3JpcHRpb24NCg0KW09wZW5BUEkgKFN3YWdnZXIpXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKSBtb2R1bGUgZm9yIFtOZXN0XShodHRwczovL2dpdGh1Yi5jb20vbmVzdGpzL25lc3QpLg0KDQojIyBJbnN0YWxsYXRpb24NCg0KYGBgYmFzaA0KJCBucG0gaSAtLXNhdmUgQG5lc3Rqcy9zd2FnZ2VyDQpgYGANCg0KIyMgUXVpY2sgU3RhcnQNCg0KW092ZXJ2aWV3ICYgVHV0b3JpYWxdKGh0dHBzOi8vZG9jcy5uZXN0anMuY29tL29wZW5hcGkvaW50cm9kdWN0aW9uKQ0KDQojIyBTdXBwb3J0DQoNCk5lc3QgaXMgYW4gTUlULWxpY2Vuc2VkIG9wZW4gc291cmNlIHByb2plY3QuIEl0IGNhbiBncm93IHRoYW5rcyB0byB0aGUgc3BvbnNvcnMgYW5kIHN1cHBvcnQgYnkgdGhlIGFtYXppbmcgYmFja2Vycy4gSWYgeW91J2QgbGlrZSB0byBqb2luIHRoZW0sIHBsZWFzZSBbcmVhZCBtb3JlIGhlcmVdKGh0dHBzOi8vZG9jcy5uZXN0anMuY29tL3N1cHBvcnQpLg0KDQojIyBTdGF5IGluIHRvdWNoDQoNCi0gQXV0aG9yIC0gW0thbWlsIE15xZtsaXdpZWNdKGh0dHBzOi8vdHdpdHRlci5jb20va2FtbXlzbGl3aWVjKQ0KLSBXZWJzaXRlIC0gW2h0dHBzOi8vbmVzdGpzLmNvbV0oaHR0cHM6Ly9uZXN0anMuY29tLykNCi0gVHdpdHRlciAtIFtAbmVzdGZyYW1ld29ya10oaHR0cHM6Ly90d2l0dGVyLmNvbS9uZXN0ZnJhbWV3b3JrKQ0KDQojIyBMaWNlbnNlDQoNCk5lc3QgaXMgW01JVCBsaWNlbnNlZF0oTElDRU5TRSkuDQo= readmeEtag: '"5df0fd0107b57e36136c4d3316d49a93eeeb4b6f"' readmeLastModified: Tue, 04 Mar 2025 03:23:08 GMT repositoryId: 105440153 description: 'OpenAPI (Swagger) module for Nest framework (node.js) :earth_americas:' created: '2017-10-01T12:20:24Z' updated: '2026-02-05T22:15:58Z' language: TypeScript archived: false stars: 1853 watchers: 26 forks: 526 owner: nestjs logo: https://avatars.githubusercontent.com/u/28507035?v=4 license: MIT repoEtag: '"3765f998ee5252438ae27d5d092c4e3f50ad0a39b7d38918c2601e545e2152c5"' repoLastModified: Thu, 05 Feb 2026 22:15:58 GMT foundInMaster: true id: 7071babd9853fc901c5decfa9b465b67 - source: - https://openapi.tools/ - openapi3 tags name: Falcon Heavy category: - Server - Mock - Parsers language: Python link: https://github.com/NotJustAToy/falcon-heavy repository: https://github.com/notjustatoy/falcon-heavy source_description: > The framework for building app backends and microservices via the API design-first workflow. v3: true repositoryMetadata: base64Readme: >- KioqKioqKioqKioqCkZhbGNvbiBIZWF2eQoqKioqKioqKioqKioKCgpBYm91dAojIyMjIwoKVGhlIGZyYW1ld29yayBmb3IgYnVpbGRpbmcgYXBwIGJhY2tlbmRzIGFuZCBtaWNyb3NlcnZpY2VzIGJ5IHNwZWNpZmljYXRpb24tZmlyc3QgQVBJIGRlc2lnbiBhcHByb2FjaCBiYXNlZCBvbiB0aGUgYE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAzIDxodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbj5gX18uCgpGYWxjb24gSGVhdnkgY29udmVydHMgYW5kIHZhbGlkYXRlcyByZXF1ZXN0cyBhbmQgcmVuZGVycyByZXNwb25zZXMgY29ycmVzcG9uZGVkIHNwZWNpZmljYXRpb24uIEl0IGNhbiBiZSB1c2VkIHdpdGggYERqYW5nbyA8aHR0cHM6Ly93d3cuZGphbmdvcHJvamVjdC5jb20vPmBfXywgYEZhbGNvbiA8aHR0cHM6Ly9mYWxjb25mcmFtZXdvcmsub3JnLz5gX18gYW5kIGBGbGFzayA8aHR0cHM6Ly9wYWxsZXRzcHJvamVjdHMuY29tL3AvZmxhc2svPmBfXyB3ZWIgZnJhbWV3b3Jrcy4KCkluc3RhbGxhdGlvbgojIyMjIyMjIyMjIyMKClJlY29tbWVuZGVkIHdheSAodmlhIHBpcCk6CgouLiBjb2RlOjogYmFzaAoKICAgICQgcGlwIGluc3RhbGwgZmFsY29uLWhlYXZ5CgpVc2FnZQojIyMjIwoKMS4gSW1wbGVtZW50IGFsbCBhYnN0cmFjdCBtZXRob2RzIGZyb20gYSBjb3JyZXNwb25kaW5nIGRlY29yYXRvciBjbGFzcy4KMi4gU2V0IHVwIHJvdXRpbmcgYmFzZWQgb24gYSBzcGVjaWZpY2F0aW9uLgozLiBEZWNvcmF0ZSB2aWV3cyB3aXRoIHlvdXIgZGVjb3JhdG9yLgoKTGltaXRhdGlvbnMKIyMjIyMjIyMjIyMKCiogWE1MIGlzIG5vdCBzdXBwb3J0ZWQuCiogQ2FuJ3QgdXNlIHJlc2VydmVkIGNoYXJhY3RlcnMgaW4gcGF0aCBhbmQgcXVlcnkgcGFyYW1ldGVycy4KKiBSZWN1cnNpdmUgZGVwZW5kZW5jaWVzIGRldGVjdGlvbiBub3QgaW1wbGVtZW50ZWQuCgpMaWNlbnNlCiMjIyMjIyMKCkNvcHlyaWdodCAyMDE5LTIwMjAgTm90IEp1c3QgQSBUb3kgQ29ycC4KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo= readmeEtag: '"d8e2ecbcd8419e851febf59ce35af5d437dd822e"' readmeLastModified: Mon, 02 Mar 2020 08:05:48 GMT repositoryId: 226058346 description: >- The framework for building app backends and microservices by specification-first API design approach based on the OpenAPI Specification 3 created: '2019-12-05T08:57:06Z' updated: '2025-11-09T08:30:24Z' language: Python archived: false stars: 25 watchers: 3 forks: 1 owner: NotJustAToy logo: https://avatars.githubusercontent.com/u/58468738?v=4 license: Apache-2.0 repoEtag: '"844dfdcc7d9395ce0c64484553dd1cb8e66a4a50b089127f2e64bbfed5165fae"' repoLastModified: Sun, 09 Nov 2025 08:30:24 GMT foundInMaster: true id: fec1361e049c40cc2fb370a08b153cb0 - source: - https://openapi.tools/ - openapi3 tags name: Dredd category: Testing link: https://dredd.io/ repository: https://github.com/apiaryio/dredd language: Javascript source_description: >- Language-agnostic command-line tool for validating API description document against backend implementation of the API v2: true v3: true repositoryMetadata: base64Readme: >- IyBEcmVkZCDigJQgSFRUUCBBUEkgVGVzdGluZyBGcmFtZXdvcmsKClshW25wbSB2ZXJzaW9uXShodHRwczovL2JhZGdlLmZ1cnkuaW8vanMvZHJlZGQuc3ZnKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZHJlZGQpClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvYXBpYXJ5aW8vZHJlZGQvdHJlZS9tYXN0ZXIuc3ZnP3N0eWxlPXN2ZyldKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL2FwaWFyeWlvL2RyZWRkL3RyZWUvbWFzdGVyKQpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL2FwaS9wcm9qZWN0cy9zdGF0dXMvbjNpeGZ4aDcycXVzaHlyNC9icmFuY2gvbWFzdGVyP3N2Zz10cnVlKV0oaHR0cHM6Ly9jaS5hcHB2ZXlvci5jb20vcHJvamVjdC9BcGlhcnkvZHJlZGQvYnJhbmNoL21hc3RlcikKWyFbRG9jdW1lbnRhdGlvbiBTdGF0dXNdKGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL2RyZWRkL2JhZGdlLz92ZXJzaW9uPWxhdGVzdCldKGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL2RyZWRkL2J1aWxkcy8pClshW0tub3duIFZ1bG5lcmFiaWxpdGllc10oaHR0cHM6Ly9zbnlrLmlvL3Rlc3QvbnBtL2RyZWRkL2JhZGdlLnN2ZyldKGh0dHBzOi8vc255ay5pby90ZXN0L25wbS9kcmVkZCkKCiFbRHJlZGQgLSBIVFRQIEFQSSBUZXN0aW5nIEZyYW1ld29ya10oZG9jcy9fc3RhdGljL2ltYWdlcy9kcmVkZC5wbmc/cmF3PXRydWUpCgo+ICoqRHJlZGQgaXMgYSBsYW5ndWFnZS1hZ25vc3RpYyBjb21tYW5kLWxpbmUgdG9vbCBmb3IgdmFsaWRhdGluZwo+IEFQSSBkZXNjcmlwdGlvbiBkb2N1bWVudCBhZ2FpbnN0IGJhY2tlbmQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFQSS4qKgoKLSBbRG9jdW1lbnRhdGlvbl1bXQotIFtDaGFuZ2Vsb2ddW10KLSBbQ29udHJpYnV0b3IncyBHdWlkZWxpbmVzXVtdCgpEcmVkZCByZWFkcyB5b3VyIEFQSSBkZXNjcmlwdGlvbiBhbmQgc3RlcCBieSBzdGVwIHZhbGlkYXRlcyB3aGV0aGVyIHlvdXIgQVBJCmltcGxlbWVudGF0aW9uIHJlcGxpZXMgd2l0aCByZXNwb25zZXMgYXMgdGhleSBhcmUgZGVzY3JpYmVkIGluIHRoZQpkb2N1bWVudGF0aW9uLgoKIyMjIFN1cHBvcnRlZCBBUEkgRGVzY3JpcHRpb24gRm9ybWF0cwoKLSBbQVBJIEJsdWVwcmludF1bXQotIFtPcGVuQVBJIDJdW10gKGZvcm1lcmx5IGtub3duIGFzIFN3YWdnZXIpCi0gW09wZW5BUEkgM11bXSAoW2V4cGVyaW1lbnRhbF0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWFyeWlvL2FwaS1lbGVtZW50cy5qcy9ibG9iL21hc3Rlci9wYWNrYWdlcy9vcGVuYXBpMy1wYXJzZXIvU1RBVFVTLm1kKSwgY29udHJpYnV0aW9ucyB3ZWxjb21lISkKCiMjIyBTdXBwb3J0ZWQgSG9va3MgTGFuZ3VhZ2VzCgpEcmVkZCBzdXBwb3J0cyB3cml0aW5nIFtob29rc10oaHR0cHM6Ly9kcmVkZC5vcmcvZW4vbGF0ZXN0L2hvb2tzLykK4oCUIGEgZ2x1ZSBjb2RlIGZvciBlYWNoIHRlc3Qgc2V0dXAgYW5kIHRlYXJkb3duLiBGb2xsb3dpbmcgbGFuZ3VhZ2VzIGFyZSBzdXBwb3J0ZWQ6CgotIFtHb10oaHR0cHM6Ly9kcmVkZC5vcmcvZW4vbGF0ZXN0L2hvb2tzLWdvLykKLSBbTm9kZS5qcyAoSmF2YVNjcmlwdCldKGh0dHBzOi8vZHJlZGQub3JnL2VuL2xhdGVzdC9ob29rcy1ub2RlanMvKQotIFtQZXJsXShodHRwczovL2RyZWRkLm9yZy9lbi9sYXRlc3QvaG9va3MtcGVybC8pCi0gW1BIUF0oaHR0cHM6Ly9kcmVkZC5vcmcvZW4vbGF0ZXN0L2hvb2tzLXBocC8pCi0gW1B5dGhvbl0oaHR0cHM6Ly9kcmVkZC5vcmcvZW4vbGF0ZXN0L2hvb2tzLXB5dGhvbi8pCi0gW1J1YnldKGh0dHBzOi8vZHJlZGQub3JnL2VuL2xhdGVzdC9ob29rcy1ydWJ5LykKLSBbUnVzdF0oaHR0cHM6Ly9kcmVkZC5vcmcvZW4vbGF0ZXN0L2hvb2tzLXJ1c3QvKQotIERpZG4ndCBmaW5kIHlvdXIgZmF2b3JpdGUgbGFuZ3VhZ2U/IF9bQWRkIGEgbmV3IG9uZSFdKGh0dHBzOi8vZHJlZGQub3JnL2VuL2xhdGVzdC9ob29rcy1uZXctbGFuZ3VhZ2UvKV8KCiMjIyBTdXBwb3J0ZWQgU3lzdGVtcwoKLSBMaW51eCwgbWFjT1MsIFdpbmRvd3MsIC4uLgotIFtUcmF2aXMgQ0ldW10sIFtDaXJjbGVDSV1bXSwgW0plbmtpbnNdW10sIFtBcHBWZXlvcl1bXSwgLi4uCgojIyBJbnN0YWxsYXRpb24KCmBgYAokIG5wbSBpbnN0YWxsIC1nIGRyZWRkCmBgYAoKIyMgUXVpY2sgU3RhcnQKCjEuICBDcmVhdGUgYW4gW0FQSSBCbHVlcHJpbnRdW10gZmlsZSBjYWxsZWQgYGFwaS1kZXNjcmlwdGlvbi5hcGliYC4KICAgIEZvbGxvdyBbdHV0b3JpYWwgYXQgQVBJIEJsdWVwcmludCB3ZWJzaXRlXVthcGkgYmx1ZXByaW50IHR1dG9yaWFsXQogICAgb3IganVzdCB0YWtlIG9uZSBvZiB0aGUgW3JlYWR5LW1hZGUgZXhhbXBsZXNdW2FwaSBibHVlcHJpbnQgZXhhbXBsZXNdLgoyLiAgUnVuIGludGVyYWN0aXZlIGNvbmZpZ3VyYXRpb246CgogICAgYGBgc2hlbGwKICAgICQgZHJlZGQgaW5pdAogICAgYGBgCgozLiAgUnVuIERyZWRkOgoKICAgIGBgYHNoZWxsCiAgICAkIGRyZWRkCiAgICBgYGAKCjQuICBUbyBzZWUgaG93IHRvIHVzZSBhbGwgRHJlZGQncyBmZWF0dXJlcywgYnJvd3NlIHRoZQogICAgW2Z1bGwgZG9jdW1lbnRhdGlvbl1bZG9jdW1lbnRhdGlvbl0uCgojIyBIb3d0b3MsIFR1dG9yaWFscywgQmxvZ3Bvc3RzICgzcmQgcGFydHkpCgotIFtNYWludGVuaXIgw6Agam91ciBzYSBkb2N1bWVudGF0aW9uIGQnQVBJIGF2ZWMgRHJlZGQhXShodHRwczovL2Jsb2cuaXRuZXR3b3JrLmZyL2Jsb2ctcG9zdC8yMDE5LzA1LzA2L2RyZWRkLXBhcnRpZS0xLWVjcml0dXJlLWRvY3VtZW50YXRpb24uaHRtbCkgXzA1LzA2LzIwMTlfCi0gW0RyZWRkIC0gTGFuZ3VhZ2UtYWdub3N0aWMgSFRUUCBBUEkgVGVzdGluZyBUb29sIC0gSW50ZXJ2aWV3IHdpdGggSG9uemEgSmF2b3Jla10oaHR0cHM6Ly9zdXJ2aXZlanMuY29tL2Jsb2cvZHJlZGQtaW50ZXJ2aWV3LykgXzAzLzIyLzIwMTlfCi0gW0xhcmF2ZWwgT3BlbkFQSSAzIERvY3VtZW50YXRpb24gVmVyaWZpY2F0aW9uIFVzaW5nIERyZWRkXShodHRwczovL2NvbW1hbmR6LmlvL3NuaXBwZXRzL2xhcmF2ZWwvbGFyYXZlbC1kcmVkZC1vcGVuYXBpLXYzLykgXzAyLzI0LzIwMTlfCi0gW1Rlc3RpbmcgeW91ciBBUEkgd2l0aCBEcmVkZF0oaHR0cHM6Ly9tZWRpdW0uY29tL21vcC1kZXZlbG9wZXJzL3Rlc3RpbmcteW91ci1hcGktd2l0aC1kcmVkZC1jMDJlNmNhMTUxZjIpIF8wOS8yNy8yMDE4XwotIFtXcml0aW5nIFRlc3RhYmxlIEFQSSBEb2N1bWVudGF0aW9uIFVzaW5nIEFQSUIgYW5kIERyZWRkIChSYWlscyldKGh0dHBzOi8vYmxvZy5yZWJhc2VkLnBsLzIwMTgvMDYvMjkvdGVzdGFibGUtYXBpLWRvY3MuaHRtbCkgXzA2LzI5LzIwMThfCi0gW0Rlc2lnbi1maXJzdCBBUEkgU3BlY2lmaWNhdGlvbiBXb3JrZmxvdyBNYXR1cmVzXShodHRwczovL3BoaWxzdHVyZ2Vvbi51ay9hcGkvMjAxOC8wMy8wMS9hcGktc3BlY2lmaWNhdGlvbi13b3JrZmxvdy1tYXR1cmVzLykgXzAzLzAxLzIwMThfCi0gW1dyaXRpbmcgYW5kIHRlc3RpbmcgQVBJIHNwZWNpZmljYXRpb25zIHdpdGggQVBJIEJsdWVwcmludCwgRHJlZGQgYW5kIEFwaWFyeV0oaHR0cHM6Ly9oYWNrZXJub29uLmNvbS93cml0aW5nLWFuZC10ZXN0aW5nLWFwaS1zcGVjaWZpY2F0aW9ucy13aXRoLWFwaS1ibHVlcHJpbnQtZHJlZWQtYW5kLWFwaWFyeS1kZjEzOGFjY2NlNWEpIF8xMi8wNC8yMDE3XwotIFtUZXN0aW5nIGFuIEFQSSBBZ2FpbnN0IGl0cyBEb2N1bWVudGF0aW9uXShodHRwczovL2Rldi50by9hbGJlcnRvZmR6bS90ZXN0aW5nLWFuLWFwaS1hZ2FpbnN0LWRvY3VtZW50YXRpb24tNmNsKSBfMTEvMjMvMjAxN18KLSBbS2VlcGluZyBEb2N1bWVudGF0aW9uIEhvbmVzdF0oaHR0cHM6Ly9ibG9nLmFwaXN5b3V3b250aGF0ZS5jb20va2VlcGluZy1kb2N1bWVudGF0aW9uLWhvbmVzdC1kOWFiNTM1MWRkZDQpIF8xMS8yMS8yMDE3XwotIFtBcGlhcnkgZGVzaWduZWQgQVBJcyB0ZXN0ZWQgdXNpbmcgRHJlZGRdKGh0dHBzOi8vcmVkdGh1bmRlci5ibG9nLzIwMTcvMDkvMjAvYXBpYXJ5LWRlc2lnbmVkLWFwaXMtdGVzdGVkLXVzaW5nLWRyZWRkLykgXzA5LzIwLzIwMTdfCi0gW0RyZWRkICsgU3dhZ2dlciBmb3IgUkVTVCBBUEkgdGVzdGluZ10oaHR0cHM6Ly9jb2RlYnVyc3QuaW8vZHJlZGQtc3dhZ2dlci1mb3ItcmVzdC1hcGktdGVzdGluZy03MTVkMWFmNWU4YzUpIF8wMS8yNC8yMDE3XwotIFtUZXN0aW5nIFlvdXIgQVBJIERvY3VtZW50YXRpb24gV2l0aCBEcmVkZF0oaHR0cHM6Ly9tYXR0aGV3ZGFseS5jby51ay9ibG9nLzIwMTYvMDgvMDgvdGVzdGluZy15b3VyLWFwaS1kb2N1bWVudGF0aW9uLXdpdGgtZHJlZGQvKSBfMDgvMDgvMjAxNl8KLSBbRFJFREQgQVBJIFRlc3RlciB3b3JrcyB3aXRoIEFQSSBCbHVlcHJpbnRzXShodHRwOi8vd3d3LmZpbmtsYWJzLm9yZy9hcnRpY2xlcy9hcGktYmx1ZXByaW50LWRyZWRkLmh0bWwpIF8wNy8wNS8yMDE2XwotIFtEb2N1bWVudGF0aW9uIGRyaXZlbiBBUEkgRGV2ZWxvcG1lbnQgdXNpbmcgTGFyYXZlbCwgRHJlZGQgYW5kIEFwaWFyeV0oaHR0cHM6Ly9tZWRpdW0uY29tL2ZyaWFuYml6L2FwaS1waHAtcGlsb3QlQzMlQTllLXBhci1sYS1kb2MtM2M5ZWI0ZGFhMmFhKSBfMDYvMjEvMjAxNl8KLSBbRHJlZGQgdjEuMS4wOiBBIEJpdCBEaWZmZXJlbnRdKGh0dHBzOi8vcGhpbHN0dXJnZW9uLnVrL2FwaS8yMDE2LzA2LzIwL2RyZWRkLXYxLTEtMC1hLWJpdC1kaWZmZXJlbnQvKSBfMDYvMjAvMjAxNl8KLSBbRHJlZGQ6IERvIFlvdXIgSFRUUCBBUEkgSnVzdGljZV0oaHR0cHM6Ly9waGlsc3R1cmdlb24udWsvYXBpLzIwMTUvMDEvMjgvZHJlZGQtYXBpLXRlc3RpbmctZG9jdW1lbnRhdGlvbi8pIF8wMS8yOC8yMDE1XwoKW2FwaSBibHVlcHJpbnRdOiBodHRwczovL2FwaWJsdWVwcmludC5vcmcvClthcGkgYmx1ZXByaW50IHR1dG9yaWFsXTogaHR0cHM6Ly9hcGlibHVlcHJpbnQub3JnL2RvY3VtZW50YXRpb24vdHV0b3JpYWwuaHRtbApbYXBpIGJsdWVwcmludCBleGFtcGxlc106IGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlhcnlpby9hcGktYmx1ZXByaW50L3RyZWUvbWFzdGVyL2V4YW1wbGVzCltvcGVuYXBpIDJdOiBodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8yLjAubWQKW29wZW5hcGkgM106IGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kCltkb2N1bWVudGF0aW9uXTogaHR0cHM6Ly9kcmVkZC5vcmcvZW4vbGF0ZXN0LwpbY2hhbmdlbG9nXTogaHR0cHM6Ly9naXRodWIuY29tL2FwaWFyeWlvL2RyZWRkL3JlbGVhc2VzCltjb250cmlidXRvcidzIGd1aWRlbGluZXNdOiBodHRwczovL2RyZWRkLm9yZy9lbi9sYXRlc3QvY29udHJpYnV0aW5nLwpbdHJhdmlzIGNpXTogaHR0cHM6Ly90cmF2aXMtY2kub3JnLwpbY2lyY2xlY2ldOiBodHRwczovL2NpcmNsZWNpLmNvbS8KW2plbmtpbnNdOiBodHRwczovL2plbmtpbnMuaW8vClthcHB2ZXlvcl06IGh0dHBzOi8vd3d3LmFwcHZleW9yLmNvbS8K readmeEtag: '"ea4790fbe4413cc1856328d57208245ecfe7cf46"' readmeLastModified: Wed, 19 Jul 2023 20:05:32 GMT repositoryId: 12590052 description: Language-agnostic HTTP API Testing Tool created: '2013-09-04T12:21:35Z' updated: '2026-02-05T19:44:21Z' language: JavaScript archived: true stars: 4227 watchers: 69 forks: 278 owner: apiaryio logo: https://avatars.githubusercontent.com/u/765943?v=4 license: MIT repoEtag: '"19d2347edef41db86d90cb344242c53075bca4852dcd6b2a45168a58556a4161"' repoLastModified: Thu, 05 Feb 2026 19:44:21 GMT foundInMaster: true id: bb2e4b0879fce0d8706dcebfd2c10a4c - source: https://openapi.tools/ name: django-contract-tester category: Data Validators repository: https://github.com/maticardenas/django-contract-tester language: Python source_description: >- Validate Django REST Framework (DRF) and Django Ninja APIs against their OpenAPI specification. v2: true v3: true v3_1: true id: e7a16a54a9f5280da020e35d32fc151c repositoryMetadata: base64Readme: >- WyFbUHlQSV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvZGphbmdvLWNvbnRyYWN0LXRlc3Rlci5zdmcpXShodHRwczovL3B5cGkub3JnL3Byb2plY3QvZGphbmdvLWNvbnRyYWN0LXRlc3Rlci8pClshW0NvdmVyYWdlXShodHRwczovL2NvZGVjb3YuaW8vZ2gvbWF0aWNhcmRlbmFzL2RqYW5nby1jb250cmFjdC10ZXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9hcHAuY29kZWNvdi5pby9naC9tYXRpY2FyZGVuYXMvZGphbmdvLWNvbnRyYWN0LXRlc3RlcikKWyFbUHl0aG9uIHZlcnNpb25zXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1B5dGhvbi0zLjklMkItYmx1ZSldKGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9kamFuZ28tY29udHJhY3QtdGVzdGVyLykKWyFbRGphbmdvIHZlcnNpb25zXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0RqYW5nby00LjIlMkItYmx1ZSldKGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9kamFuZ28tY29udHJhY3QtdGVzdGVyLykKCgojIERqYW5nbyBDb250cmFjdCBUZXN0ZXIKClRoaXMgaXMgYSB0ZXN0IHV0aWxpdHkgdG8gdmFsaWRhdGUgYERSRiAoRGphbmdvIFJFU1QgRnJhbWV3b3JrKWAgYW5kIGBEamFuZ28gTmluamFgIHRlc3QgcmVxdWVzdHMgJiByZXNwb25zZXMgYWdhaW5zdCBgT3BlbkFQSWAgdmVyc2lvbnMgMi54IGFuZCAzLnggc2NoZW1hcy4KCkl0IGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciBgT3BlbkFQSWB2ZXJzaW9uIGAyLjBgLCBgMy4wLnhgIGFuZCBgMy4xLnhgLCBib3RoIGB5YW1sYCBvciBganNvbmAgc2NoZW1hIGZpbGVzLgoKIyMgSW5zdGFsbGF0aW9uCgpgYGBzaGVsbCBzY3JpcHQKcGlwIGluc3RhbGwgZGphbmdvLWNvbnRyYWN0LXRlc3RlcgpgYGAKCiMjIFVzYWdlCgpJbnN0YW50aWF0ZSBvbmUgb3IgbW9yZSBpbnN0YW5jZXMgb2YgYFNjaGVtYVRlc3RlcmA6CgpgYGBweXRob24KZnJvbSBvcGVuYXBpX3Rlc3RlciBpbXBvcnQgU2NoZW1hVGVzdGVyCgpzY2hlbWFfdGVzdGVyID0gU2NoZW1hVGVzdGVyKCkKYGBgCgpJZiB5b3UgYXJlIHVzaW5nIGVpdGhlciBbZHJmLXlhc2ddKGh0dHBzOi8vZ2l0aHViLmNvbS9heG5zYW4xMi9kcmYteWFzZykKb3IgW2RyZi1zcGVjdGFjdWxhcl0oaHR0cHM6Ly9naXRodWIuY29tL3RmcmFuemVsL2RyZi1zcGVjdGFjdWxhcikgdGhpcyB3aWxsIGJlIGF1dG8tZGV0ZWN0ZWQsIGFuZCB0aGUgc2NoZW1hIHdpbGwgYmUKbG9hZGVkIGJ5IHRoZSBgU2NoZW1hVGVzdGVyYCBhdXRvbWF0aWNhbGx5LgoKSWYgeW91IGFyZSB1c2luZyBzY2hlbWEgZmlsZXMsIHlvdSB3aWxsIG5lZWQgdG8gcGFzcyB0aGUgZmlsZSBwYXRoOgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaV90ZXN0ZXIgaW1wb3J0IFNjaGVtYVRlc3RlcgoKIyBwYXRoIHNob3VsZCBiZSBhIHN0cmluZwpzY2hlbWFfdGVzdGVyID0gU2NoZW1hVGVzdGVyKHNjaGVtYV9maWxlX3BhdGg9Ii4vc2NoZW1hcy9wdWJsaXNoZWRTcGVjcy55YW1sIikKYGBgCgpPbmNlIHlvdSd2ZSBpbnN0YW50aWF0ZWQgYSB0ZXN0ZXIsIHlvdSBjYW4gdXNlIGl0IHRvIHRlc3QgcmVzcG9uc2VzIGFuZCByZXF1ZXN0IGJvZGllczoKCmBgYHB5dGhvbgpmcm9tIG9wZW5hcGlfdGVzdGVyLnNjaGVtYV90ZXN0ZXIgaW1wb3J0IFNjaGVtYVRlc3RlcgoKc2NoZW1hX3Rlc3RlciA9IFNjaGVtYVRlc3RlcigpCgoKZGVmIHRlc3RfcmVzcG9uc2VfZG9jdW1lbnRhdGlvbihjbGllbnQpOgogICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KCdhcGkvdjEvdGVzdC8xJykKICAgIGFzc2VydCByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDAKICAgIHNjaGVtYV90ZXN0ZXIudmFsaWRhdGVfcmVzcG9uc2UocmVzcG9uc2U9cmVzcG9uc2UpCgoKZGVmIHRlc3RfcmVxdWVzdF9kb2N1bWVudGF0aW9uKGNsaWVudCk6CiAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoJ2FwaS92MS90ZXN0LzEnKQogICAgYXNzZXJ0IHJlc3BvbnNlLnN0YXR1c19jb2RlID09IDIwMAogICAgc2NoZW1hX3Rlc3Rlci52YWxpZGF0ZV9yZXF1ZXN0KHJlc3BvbnNlPXJlc3BvbnNlKQpgYGAKCklmIHlvdSBhcmUgdXNpbmcgdGhlIERqYW5nbyB0ZXN0aW5nIGZyYW1ld29yaywgeW91IGNhbiBjcmVhdGUgYSBiYXNlIGBBUElUZXN0Q2FzZWAgdGhhdCBpbmNvcnBvcmF0ZXMgc2NoZW1hIHZhbGlkYXRpb246CgpgYGBweXRob24KZnJvbSByZXN0X2ZyYW1ld29yay5yZXNwb25zZSBpbXBvcnQgUmVzcG9uc2UKZnJvbSByZXN0X2ZyYW1ld29yay50ZXN0IGltcG9ydCBBUElUZXN0Q2FzZQoKZnJvbSBvcGVuYXBpX3Rlc3Rlci5zY2hlbWFfdGVzdGVyIGltcG9ydCBTY2hlbWFUZXN0ZXIKCnNjaGVtYV90ZXN0ZXIgPSBTY2hlbWFUZXN0ZXIoKQoKCmNsYXNzIEJhc2VBUElUZXN0Q2FzZShBUElUZXN0Q2FzZSk6CiAgICAiIiIgQmFzZSB0ZXN0IGNsYXNzIGZvciBhcGkgdmlld3MgaW5jbHVkaW5nIHNjaGVtYSB2YWxpZGF0aW9uICIiIgoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBhc3NlcnRSZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UsICoqa3dhcmdzKSAtPiBOb25lOgogICAgICAgICIiIiBoZWxwZXIgdG8gcnVuIHZhbGlkYXRlX3Jlc3BvbnNlIGFuZCBwYXNzIGt3YXJncyB0byBpdCAiIiIKICAgICAgICBzY2hlbWFfdGVzdGVyLnZhbGlkYXRlX3Jlc3BvbnNlKHJlc3BvbnNlPXJlc3BvbnNlLCAqKmt3YXJncykKYGBgCgpUaGVuIHVzZSBpdCBpbiBhIHRlc3QgZmlsZToKCmBgYHB5dGhvbgpmcm9tIHNoYXJlZC50ZXN0aW5nIGltcG9ydCBCYXNlQVBJVGVzdENhc2UKCgpjbGFzcyBNeUFQSVRlc3RzKEJhc2VBUElUZXN0Q2FzZSk6CiAgICBkZWYgdGVzdF9zb21lX3ZpZXcoc2VsZik6CiAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmNsaWVudC5nZXQoIi4uLiIpCiAgICAgICAgc2VsZi5hc3NlcnRSZXNwb25zZShyZXNwb25zZSkKYGBgCgojIyBPcHRpb25zCgpZb3UgY2FuIHBhc3Mgb3B0aW9ucyBlaXRoZXIgZ2xvYmFsbHksIHdoZW4gaW5zdGFudGlhdGluZyBhIGBTY2hlbWFUZXN0ZXJgLCBvciBsb2NhbGx5LCB3aGVuCmludm9raW5nIGB2YWxpZGF0ZV9yZXNwb25zZWA6CgpgYGBweXRob24KZnJvbSBvcGVuYXBpX3Rlc3RlciBpbXBvcnQgU2NoZW1hVGVzdGVyLCBpc19jYW1lbF9jYXNlCmZyb20gdGVzdHMudXRpbHMgaW1wb3J0IG15X3V1aWRfNF92YWxpZGF0b3IKCnNjaGVtYV90ZXN0X3dpdGhfY2FzZV92YWxpZGF0aW9uID0gU2NoZW1hVGVzdGVyKAogICAgY2FzZV90ZXN0ZXI9aXNfY2FtZWxfY2FzZSwKICAgIGlnbm9yZV9jYXNlPVsiSVAiXSwKICAgIHZhbGlkYXRvcnM9W215X3V1aWRfNF92YWxpZGF0b3JdCikKCmBgYAoKT3IKCmBgYHB5dGhvbgpmcm9tIG9wZW5hcGlfdGVzdGVyIGltcG9ydCBTY2hlbWFUZXN0ZXIsIGlzX2NhbWVsX2Nhc2UKZnJvbSB0ZXN0cy51dGlscyBpbXBvcnQgbXlfdXVpZF80X3ZhbGlkYXRvcgoKc2NoZW1hX3Rlc3RlciA9IFNjaGVtYVRlc3RlcigpCgoKZGVmIG15X3Rlc3QoY2xpZW50KToKICAgIHJlc3BvbnNlID0gY2xpZW50LmdldCgnYXBpL3YxL3Rlc3QvMScpCiAgICBhc3NlcnQgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gMjAwCiAgICBzY2hlbWFfdGVzdGVyLnZhbGlkYXRlX3Jlc3BvbnNlKAogICAgICAgIHJlc3BvbnNlPXJlc3BvbnNlLAogICAgICAgIGNhc2VfdGVzdGVyPWlzX2NhbWVsX2Nhc2UsCiAgICAgICAgaWdub3JlX2Nhc2U9WyJJUCJdLAogICAgICAgIHZhbGlkYXRvcnM9W215X3V1aWRfNF92YWxpZGF0b3JdCiAgICApCmBgYAoKIyMjIGNhc2VfdGVzdGVyCgpUaGUgY2FzZSB0ZXN0ZXIgYXJndW1lbnQgdGFrZXMgYSBjYWxsYWJsZSB0aGF0IGlzIHVzZWQgdG8gdmFsaWRhdGUgdGhlIGtleSBjYXNlIG9mIGJvdGggc2NoZW1hcyBhbmQgcmVzcG9uc2VzLiBJZgpub3RoaW5nIGlzIHBhc3NlZCwgY2FzZSB2YWxpZGF0aW9uIGlzIHNraXBwZWQuCgpUaGUgbGlicmFyeSBjdXJyZW50bHkgaGFzIDQgYnVpbHQtaW4gY2FzZSB0ZXN0ZXJzOgoKLSBgaXNfcGFzY2FsX2Nhc2VgCi0gYGlzX3NuYWtlX2Nhc2VgCi0gYGlzX2NhbWVsX2Nhc2VgCi0gYGlzX2tlYmFiX2Nhc2VgCgpZb3UgY2FuIHVzZSBvbmUgb2YgdGhlc2UsIG9yIHlvdXIgb3duLgoKIyMjIGlnbm9yZV9jYXNlCgpMaXN0IG9mIGtleXMgdG8gaWdub3JlIHdoZW4gdGVzdGluZyBrZXkgY2FzZS4gVGhpcyBzZXR0aW5nIG9ubHkgYXBwbGllcyB3aGVuIGNhc2VfdGVzdGVyIGlzIG5vdCBgTm9uZWAuCgojIyMgdmFsaWRhdG9ycwoKTGlzdCBvZiBjdXN0b20gdmFsaWRhdG9ycy4gQSB2YWxpZGF0b3IgaXMgYSBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIHR3byBwYXJhbWV0ZXJzOiBzY2hlbWFfc2VjdGlvbiBhbmQgZGF0YSwgYW5kIHJldHVybnMKZWl0aGVyIGFuIGVycm9yIG1lc3NhZ2Ugb3IgYE5vbmVgLCBlLmcuOgoKYGBgcHl0aG9uCmZyb20gdHlwaW5nIGltcG9ydCBBbnksIE9wdGlvbmFsCmZyb20gdXVpZCBpbXBvcnQgVVVJRAoKCmRlZiBteV91dWlkXzRfdmFsaWRhdG9yKHNjaGVtYV9zZWN0aW9uOiBkaWN0LCBkYXRhOiBBbnkpIC0+IE9wdGlvbmFsW3N0cl06CiAgICBzY2hlbWFfZm9ybWF0ID0gc2NoZW1hX3NlY3Rpb24uZ2V0KCJmb3JtYXQiKQogICAgaWYgc2NoZW1hX2Zvcm1hdCA9PSAidXVpZDQiOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmVzdWx0ID0gVVVJRChkYXRhLCB2ZXJzaW9uPTQpCiAgICAgICAgICAgIGlmIG5vdCBzdHIocmVzdWx0KSA9PSBzdHIoZGF0YSk6CiAgICAgICAgICAgICAgICByZXR1cm4gZiJFeHBlY3RlZCB1dWlkNCwgYnV0IHJlY2VpdmVkIHtkYXRhfSIKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIGYiRXhwZWN0ZWQgdXVpZDQsIGJ1dCByZWNlaXZlZCB7ZGF0YX0iCiAgICByZXR1cm4gTm9uZQpgYGAKCiMjIyBmaWVsZF9rZXlfbWFwCgpZb3UgY2FuIHBhc3MgYW4gb3B0aW9uYWwgZGljdGlvbmFyeSB0aGF0IG1hcHMgY3VzdG9tIHVybCBwYXJhbWV0ZXIgbmFtZXMgaW50byB2YWx1ZXMsIGZvciBzaXR1YXRpb25zIHdoZXJlIHRoaXMgY2Fubm90IGJlCmluZmVycmVkIGJ5IHRoZSBEUkYgYEVuZHBvaW50RW51bWVyYXRvcmAuIEEgY29uY3JldGUgdXNlIGNhc2UgZm9yIHRoaXMgb3B0aW9uIGlzIHdoZW4KdGhlIFtkamFuZ28gaTE4biBsb2NhbGUgcHJlZml4ZXNdKGh0dHBzOi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8zLjEvdG9waWNzL2kxOG4vdHJhbnNsYXRpb24vI2xhbmd1YWdlLXByZWZpeC1pbi11cmwtcGF0dGVybnMpLgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaV90ZXN0ZXIgaW1wb3J0IFNjaGVtYVRlc3RlcgoKc2NoZW1hX3Rlc3RlciA9IFNjaGVtYVRlc3RlcihmaWVsZF9rZXlfbWFwPXsKICAibGFuZ3VhZ2UiOiAiZW4iLAp9KQpgYGAKCiMjIFNjaGVtYSBWYWxpZGF0aW9uCgpXaGVuIHRoZSBTY2hlbWFUZXN0ZXIgbG9hZHMgYSBzY2hlbWEsIGl0IHBhcnNlcyBpdCB1c2luZyBhbgpbT3BlbkFQSSBzcGVjIHZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL3AxYzJ1L29wZW5hcGktc3BlYy12YWxpZGF0b3IpLiBUaGlzIHZhbGlkYXRlcyB0aGUgc2NoZW1hLgpJbiBjYXNlIG9mIGlzc3VlcyB3aXRoIHRoZSBzY2hlbWEgaXRzZWxmLCB0aGUgdmFsaWRhdG9yIHdpbGwgcmFpc2UgdGhlIGFwcHJvcHJpYXRlIGVycm9yLgoKIyMgRGphbmdvIHRlc3RpbmcgY2xpZW50CgpUaGUgbGlicmFyeSBpbmNsdWRlcyBhbiBgT3BlbkFQSUNsaWVudGAsIHdoaWNoIGV4dGVuZHMgRGphbmdvIFJFU1QgZnJhbWV3b3JrJ3MKW2BBUElDbGllbnRgIGNsYXNzXShodHRwczovL3d3dy5kamFuZ28tcmVzdC1mcmFtZXdvcmsub3JnL2FwaS1ndWlkZS90ZXN0aW5nLyNhcGljbGllbnQpLgpJZiB5b3Ugd2lzaCB0byB2YWxpZGF0ZSBlYWNoIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGFnYWluc3QgT3BlbkFQSSBzY2hlbWEgd2hlbiB3cml0aW5nCnVuaXQgdGVzdHMgLSBgT3BlbkFQSUNsaWVudGAgaXMgd2hhdCB5b3UgbmVlZCEKClRvIHVzZSBgT3BlbkFQSUNsaWVudGAgc2ltcGx5IHBhc3MgYFNjaGVtYVRlc3RlcmAgaW5zdGFuY2UgdGhhdCBzaG91bGQgYmUgdXNlZAp0byB2YWxpZGF0ZSByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzIGFuZCB0aGVuIHVzZSBpdCBsaWtlIHJlZ3VsYXIgRGphbmdvIHRlc3RpbmcgY2xpZW50OgoKYGBgcHl0aG9uCnNjaGVtYV90ZXN0ZXIgPSBTY2hlbWFUZXN0ZXIoKQpjbGllbnQgPSBPcGVuQVBJQ2xpZW50KHNjaGVtYV90ZXN0ZXI9c2NoZW1hX3Rlc3RlcikKcmVzcG9uc2UgPSBjbGllbnQuZ2V0KCcvYXBpL3YxL3Rlc3RzLzEyMy8nKQpgYGAKClRvIGZvcmNlIGFsbCBkZXZlbG9wZXJzIHdvcmtpbmcgb24gdGhlIHByb2plY3QgdG8gdXNlIGBPcGVuQVBJQ2xpZW50YCBzaW1wbHkKb3ZlcnJpZGUgdGhlIGBjbGllbnRgIGZpeHR1cmUgKHdoZW4gdXNpbmcgYHB5dGVzdGAgd2l0aCBgcHl0ZXN0LWRqYW5nb2ApOgoKYGBgcHl0aG9uCmZyb20gcHl0ZXN0X2RqYW5nby5sYXp5X2RqYW5nbyBpbXBvcnQgc2tpcF9pZl9ub19kamFuZ28KCmZyb20gb3BlbmFwaV90ZXN0ZXIuc2NoZW1hX3Rlc3RlciBpbXBvcnQgU2NoZW1hVGVzdGVyCgoKQHB5dGVzdC5maXh0dXJlCmRlZiBzY2hlbWFfdGVzdGVyKCk6CiAgICByZXR1cm4gU2NoZW1hVGVzdGVyKCkKCgpAcHl0ZXN0LmZpeHR1cmUKZGVmIGNsaWVudChzY2hlbWFfdGVzdGVyKToKICAgIHNraXBfaWZfbm9fZGphbmdvKCkKCiAgICBmcm9tIG9wZW5hcGlfdGVzdGVyLmNsaWVudHMgaW1wb3J0IE9wZW5BUElDbGllbnQKCiAgICByZXR1cm4gT3BlbkFQSUNsaWVudChzY2hlbWFfdGVzdGVyPXNjaGVtYV90ZXN0ZXIpCmBgYAoKSWYgeW91IGFyZSB1c2luZyBwbGFpbiBEamFuZ28gdGVzdCBmcmFtZXdvcmssIHdlIHN1Z2dlc3QgdG8gY3JlYXRlIGN1c3RvbQp0ZXN0IGNhc2UgaW1wbGVtZW50YXRpb24gYW5kIHVzZSBpdCBpbnN0ZWFkIG9mIG9yaWdpbmFsIERqYW5nbyBvbmU6CgpgYGBweXRob24KaW1wb3J0IGZ1bmN0b29scwoKZnJvbSBkamFuZ28udGVzdC50ZXN0Y2FzZXMgaW1wb3J0IFNpbXBsZVRlc3RDYXNlCmZyb20gb3BlbmFwaV90ZXN0ZXIuY2xpZW50cyBpbXBvcnQgT3BlbkFQSUNsaWVudApmcm9tIG9wZW5hcGlfdGVzdGVyLnNjaGVtYV90ZXN0ZXIgaW1wb3J0IFNjaGVtYVRlc3RlcgoKc2NoZW1hX3Rlc3RlciA9IFNjaGVtYVRlc3RlcigpCgoKY2xhc3MgTXlTaW1wbGVUZXN0Q2FzZShTaW1wbGVUZXN0Q2FzZSk6CiAgICBjbGllbnRfY2xhc3MgPSBPcGVuQVBJQ2xpZW50CiAgICAjIG9yIHVzZSBgZnVuY3Rvb2xzLnBhcnRpYWxgIHdoZW4geW91IHdhbnQgdG8gcHJvdmlkZSBjdXN0b20KICAgICMgYGBTY2hlbWFUZXN0ZXJgYCBpbnN0YW5jZToKICAgICMgY2xpZW50X2NsYXNzID0gZnVuY3Rvb2xzLnBhcnRpYWwoT3BlbkFQSUNsaWVudCwgc2NoZW1hX3Rlc3Rlcj1zY2hlbWFfdGVzdGVyKQpgYGAKClRoaXMgd2lsbCBlbnN1cmUgeW91IGFsbCBuZXdseSBpbXBsZW1lbnRlZCB2aWV3cyB3aWxsIGJlIHZhbGlkYXRlZCBhZ2FpbnN0CnRoZSBPcGVuQVBJIHNjaGVtYS4KCj4gSXQgaXMgd29ydGggbm90aW5nIHRoYXQgZm9yIHRoZSBjYXNlIG9mIGNsaWVudHMgdGhlIHJlcXVlc3QgdmFsaWRhdGlvbiBpcyBvbmx5IHBlcmZvcm1lZCBmb3IgKipzdWNjZXNzZnVsKiogcmVzcG9uc2Ugc2NlbmFyaW9zLiBUaGlzIGlzIHRvIGF2b2lkIGhhdmluZyB0aGUgcGFja2FnZSBpbnRlcmZlcmluZyB3aXRoIHlvdXIgZnVuY3Rpb25hbCBuZWdhdGl2ZSB0ZXN0IGNhc2Ugc3VpdGUuCj4gWW91IGNhbiBzdGlsbCB1c2UgYHNjaGVtYV90ZXN0ZXIudmFsaWRhdGVfcmVxdWVzdGAgbWV0aG9kIHNlcGFyYXRlbHkgZm9yIHRoZSBuZWdhdGl2ZSBjYXNlcyBpbiB3aGljaCB5b3Ugd291bGQgbGlrZSB0byB2YWxpZGF0ZSB0aGUgcmVxdWVzdCBhcyB3ZWxsLgoKCiMjIyBEamFuZ28gTmluamEgVGVzdCBDbGllbnQKCkluIGNhc2UgeW91IGFyZSB1c2luZyBgRGphbmdvIE5pbmphYCBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgW3Rlc3QgY2xpZW50XShodHRwczovL2dpdGh1Yi5jb20vdml0YWxpay9kamFuZ28tbmluamEvYmxvYi9tYXN0ZXIvbmluamEvdGVzdGluZy9jbGllbnQucHkjTDE1OSksIHlvdSBjYW4gdXNlIHRoZSBgT3BlbkFQSU5pbmphQ2xpZW50YCwgd2hpY2ggZXh0ZW5kcyBmcm9tIGl0LCBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIGBPcGVuQVBJQ2xpZW50YDoKCmBgYHB5dGhvbgpzY2hlbWFfdGVzdGVyID0gU2NoZW1hVGVzdGVyKCkKY2xpZW50ID0gT3BlbkFQSU5pbmphQ2xpZW50KAogICAgICAgIHJvdXRlcl9vcl9hcHA9cm91dGVyLAogICAgICAgIHNjaGVtYV90ZXN0ZXI9c2NoZW1hX3Rlc3RlciwKICAgICkKcmVzcG9uc2UgPSBjbGllbnQuZ2V0KCcvYXBpL3YxL3Rlc3RzLzEyMy8nKQpgYGAKCkdpdmVuIHRoYXQgdGhlIERqYW5nbyBOaW5qYSB0ZXN0IGNsaWVudCB3b3JrcyBzZXBhcmF0ZWx5IGZyb20gdGhlIGRqYW5nbyB1cmwgcmVzb2x2ZXIsIHlvdSBjYW4gcGFzcyB0aGUgYHBhdGhfcHJlZml4YCBhcmd1bWVudCB0byB0aGUgYE9wZW5BUElOaW5qYUNsaWVudGAgdG8gc3BlY2lmeSB0aGUgcHJlZml4IG9mIHRoZSBwYXRoIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gbG9vayBpbnRvIHRoZSBPcGVuQVBJIHNjaGVtYS4KCmBgYHB5dGhvbgpjbGllbnQgPSBPcGVuQVBJTmluamFDbGllbnQoCiAgICAgICAgcm91dGVyX29yX2FwcD1yb3V0ZXIsCiAgICAgICAgcGF0aF9wcmVmaXg9Jy9hcGkvdjEnLAogICAgICAgIHNjaGVtYV90ZXN0ZXI9c2NoZW1hX3Rlc3RlciwKICAgICkKYGBgCgojIyBDb25maWd1cmF0aW9uCgpUaGlzIHBhY2thZ2Ugc3VwcG9ydHMgY29uZmlndXJhdGlvbiB0aHJvdWdoIGRlZGljYXRlZCBjb25maWd1cmF0aW9uIGZpbGVzLCBhbGxvd2luZyB5b3UgdG8gc2V0IHZhbGlkYXRpb24gYmVoYXZpb3IgZ2xvYmFsbHkgZm9yIHlvdXIgcHJvamVjdC4gVGhpcyBhbGxvd3MgeW91IHRvIGRpc2FibGUvZW5hYmxlIHNwZWNpZmljIHZhbGlkYXRpb25zLCB3aGljaCBjYW4gYmUgdXNlZnVsIGluIGNhc2UgeW91IGhhdmUgY2VydGFpbiBkZXNpZ25zIHRoYXQgYXJlIHN0aWxsIGluIHByb2dyZXNzLCBvciBjYW4ndCBiZSBjaGFuZ2VkIGZvciBzb21lIHNwZWNpZmljIHJlYXNvbgoKIyMjIE1ldGhvZHMKCllvdSBjYW4gY29uZmlndXJlIHRoZSBsaWJyYXJ5IHVzaW5nIGVpdGhlcjoKCjEuICoqYC5kamFuZ28tY29udHJhY3QtdGVzdGVyYCoqCjIuICoqYHB5cHJvamVjdC50b21sYCoqCgpJZiBib3RoIGZpbGVzIGV4aXN0LCBgLmRqYW5nby1jb250cmFjdC10ZXN0ZXJgIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBjb25maWd1cmF0aW9uIGluIGBweXByb2plY3QudG9tbGAuCgojIyMgU3RydWN0dXJlCgojIyMjIC5kamFuZ28tY29udHJhY3QtdGVzdGVyCgpDcmVhdGUgYSBgLmRqYW5nby1jb250cmFjdC10ZXN0ZXJgIGZpbGUgaW4geW91ciBwcm9qZWN0IHJvb3Qgd2l0aCB0aGUgZm9sbG93aW5nIElOSSBzdHJ1Y3R1cmU6CgpgYGBpbmkKW2RqYW5nby1jb250cmFjdC10ZXN0ZXJdCmlnbm9yZV9jYXNlID0gSUQsIEFQSSwgVVJMCgpbZGphbmdvLWNvbnRyYWN0LXRlc3Rlcjp2YWxpZGF0aW9uXQpyZXF1ZXN0ID0gdHJ1ZQpyZXNwb25zZSA9IHRydWUKdHlwZXMgPSB0cnVlCmZvcm1hdHMgPSB0cnVlCnF1ZXJ5X3BhcmFtZXRlcnMgPSB0cnVlCnJlcXVlc3RfZm9yX25vbl9zdWNjZXNzZnVsX3Jlc3BvbnNlcyA9IGZhbHNlCmRpc2FibGVkX3R5cGVzID0gaW50ZWdlciwgYXJyYXkKZGlzYWJsZWRfZm9ybWF0cyA9IGRhdGUtdGltZSwgZW1haWwKZGlzYWJsZWRfY29uc3RyYWludHMgPSBlbnVtLCBwYXR0ZXJuLCBtaW5MZW5ndGgKYGBgCgojIyMjIHB5cHJvamVjdC50b21sCgpBZGQgdW5kZXIgYFt0b29sLmRqYW5nby1jb250cmFjdC10ZXN0ZXJdYCBzZWN0aW9uOgoKLSAqKmBpZ25vcmVfY2FzZWAqKjogTGlzdCBvZiBrZXlzIHRvIGlnbm9yZSB3aGVuIHRlc3Rpbmcga2V5IGNhc2UgKG9ubHkgYXBwbGllcyB3aGVuIGBjYXNlX3Rlc3RlcmAgaXMgc2V0KQoKVW5kZXIgYFt0b29sLmRqYW5nby1jb250cmFjdC10ZXN0ZXIudmFsaWRhdGlvbl1gLCB5b3UgY2FuIGNvbnRyb2wgdmFyaW91cyBhc3BlY3RzIG9mIHZhbGlkYXRpb246CgoqKk1hc3RlciBTd2l0Y2hlcyoqIChlbmFibGUvZGlzYWJsZSBlbnRpcmUgdmFsaWRhdGlvbiBjYXRlZ29yaWVzKToKLSAqKmByZXF1ZXN0YCoqIChkZWZhdWx0OiBgdHJ1ZWApOiBFbmFibGUvZGlzYWJsZSByZXF1ZXN0IGJvZHkgdmFsaWRhdGlvbgotICoqYHJlcXVlc3RfZm9yX25vbl9zdWNjZXNzZnVsX3Jlc3BvbnNlc2AqKiAoZGVmYXVsdDogYGZhbHNlYCk6IEVuYWJsZSByZXF1ZXN0IHZhbGlkYXRpb24gZm9yIG5vbi1zdWNjZXNzZnVsIHJlc3BvbnNlcyAoYDR4eGAsIGA1eHhgKQotICoqYHJlc3BvbnNlYCoqIChkZWZhdWx0OiBgdHJ1ZWApOiBFbmFibGUvZGlzYWJsZSByZXNwb25zZSBib2R5IHZhbGlkYXRpb24KLSAqKmB0eXBlc2AqKiAoZGVmYXVsdDogYHRydWVgKTogRW5hYmxlL2Rpc2FibGUgYWxsIHNjaGVtYSB0eXBlIHZhbGlkYXRpb25zIChzdHJpbmcsIGludGVnZXIsIGFycmF5LCBldGMuKQotICoqYGZvcm1hdHNgKiogKGRlZmF1bHQ6IGB0cnVlYCk6IEVuYWJsZS9kaXNhYmxlIGFsbCBzY2hlbWEgZm9ybWF0IHZhbGlkYXRpb25zIChkYXRlLXRpbWUsIHV1aWQsIGVtYWlsLCBldGMuKQotICoqYHF1ZXJ5X3BhcmFtZXRlcnNgKiogKGRlZmF1bHQ6IGB0cnVlYCk6IEVuYWJsZS9kaXNhYmxlIHF1ZXJ5IHBhcmFtZXRlciB2YWxpZGF0aW9uCgoqKkdyYW51bGFyIENvbnRyb2xzKiogKGRpc2FibGUgc3BlY2lmaWMgdHlwZXMvZm9ybWF0cy9jb25zdHJhaW50cyk6Ci0gKipgZGlzYWJsZWRfdHlwZXNgKio6IExpc3Qgb2YgT3BlbkFQSSB0eXBlcyB0byBza2lwIHZhbGlkYXRpbmcgKGUuZy4sIGBbImludGVnZXIiLCAiYXJyYXkiXWApCi0gKipgZGlzYWJsZWRfZm9ybWF0c2AqKjogTGlzdCBvZiBPcGVuQVBJIGZvcm1hdHMgdG8gc2tpcCB2YWxpZGF0aW5nIChlLmcuLCBgWyJkYXRlLXRpbWUiLCAiZW1haWwiXWApCi0gKipgZGlzYWJsZWRfY29uc3RyYWludHNgKio6IExpc3Qgb2YgT3BlbkFQSSBjb25zdHJhaW50IGtleXdvcmRzIHRvIHNraXAgdmFsaWRhdGluZyAoZS5nLiwgYFsiZW51bSIsICJwYXR0ZXJuIiwgIm1pbkxlbmd0aCJdYCkKCiMjIyBFeGFtcGxlcwoKIyMjIyAuZGphbmdvLWNvbnRyYWN0LXRlc3RlcgoKYGBgaW5pCltkamFuZ28tY29udHJhY3QtdGVzdGVyXQojIEtleXMgdG8gaWdub3JlIGR1cmluZyBjYXNlIHZhbGlkYXRpb24KaWdub3JlX2Nhc2UgPSBJRCwgQVBJLCBVUkwKCltkamFuZ28tY29udHJhY3QtdGVzdGVyOnZhbGlkYXRpb25dCiMgTWFzdGVyIHN3aXRjaGVzCnJlcXVlc3QgPSB0cnVlCnJlc3BvbnNlID0gdHJ1ZQp0eXBlcyA9IHRydWUKZm9ybWF0cyA9IHRydWUKcXVlcnlfcGFyYW1ldGVycyA9IHRydWUKCiMgRGlzYWJsZSB2YWxpZGF0aW9uIGZvciBzcGVjaWZpYyB0eXBlcwpkaXNhYmxlZF90eXBlcyA9IGludGVnZXIKCiMgRGlzYWJsZSB2YWxpZGF0aW9uIGZvciBzcGVjaWZpYyBmb3JtYXRzCmRpc2FibGVkX2Zvcm1hdHMgPSBkYXRlLXRpbWUsIGVtYWlsCgojIERpc2FibGUgc3BlY2lmaWMgY29uc3RyYWludCB2YWxpZGF0aW9ucwpkaXNhYmxlZF9jb25zdHJhaW50cyA9IGVudW0sIHBhdHRlcm4sIG1pbkxlbmd0aCwgbWF4TGVuZ3RoLCBtaW5pbXVtLCBtYXhpbXVtLCBtdWx0aXBsZU9mCmBgYAoKIyMjIyBweXByb2plY3QudG9tbAoKYGBgdG9tbApbdG9vbC5kamFuZ28tY29udHJhY3QtdGVzdGVyXQojIEtleXMgdG8gaWdub3JlIGR1cmluZyBjYXNlIHZhbGlkYXRpb24KaWdub3JlX2Nhc2UgPSBbIklEIiwgIkFQSSIsICJVUkwiXQoKW3Rvb2wuZGphbmdvLWNvbnRyYWN0LXRlc3Rlci52YWxpZGF0aW9uXQojIE1hc3RlciBzd2l0Y2hlcwpyZXF1ZXN0ID0gdHJ1ZQpyZXNwb25zZSA9IHRydWUKdHlwZXMgPSB0cnVlCmZvcm1hdHMgPSB0cnVlCnF1ZXJ5X3BhcmFtZXRlcnMgPSB0cnVlCgojIERpc2FibGUgdmFsaWRhdGlvbiBmb3Igc3BlY2lmaWMgdHlwZXMKZGlzYWJsZWRfdHlwZXMgPSBbImludGVnZXIiXQoKIyBEaXNhYmxlIHZhbGlkYXRpb24gZm9yIHNwZWNpZmljIGZvcm1hdHMKZGlzYWJsZWRfZm9ybWF0cyA9IFsiZGF0ZS10aW1lIiwgImVtYWlsIl0KCiMgRGlzYWJsZSBzcGVjaWZpYyBjb25zdHJhaW50IHZhbGlkYXRpb25zCmRpc2FibGVkX2NvbnN0cmFpbnRzID0gWwogICAgImVudW0iLAogICAgInBhdHRlcm4iLAogICAgIm1pbkxlbmd0aCIsCiAgICAibWF4TGVuZ3RoIiwKICAgICJtaW5pbXVtIiwKICAgICJtYXhpbXVtIiwKICAgICJtdWx0aXBsZU9mIgpdCmBgYAoKIyMjIyBEaXNhYmxpbmcgVmFsaWRhdGlvbiBmb3IgRW5kcG9pbnRzIG9yIFBhdGhzCgpZb3UgY2FuIGFsc28gZXhjbHVkZSBzcGVjaWZpYyBlbmRwb2ludHMgb3IgZW50aXJlIEFQSSBwYXRocyBmcm9tIHZhbGlkYXRpb24gYnkgYWRkaW5nIHRoZW0gdG8gdGhlIGBleGNsdWRlZF9lbmRwb2ludHNgIG9wdGlvbiB1bmRlciB0aGUgYFt0b29sLmRqYW5nby1jb250cmFjdC10ZXN0ZXIudmFsaWRhdGlvbl1gIHNlY3Rpb24gb2YgeW91ciBgcHlwcm9qZWN0LnRvbWxgLCBvciB0byB0aGUgY29ycmVzcG9uZGluZyBzZWN0aW9uIGluIGEgYC5kamFuZ28tY29udHJhY3QtdGVzdGVyYCBJTkkgZmlsZS4gRm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGVuZHBvaW50cyB0aGF0IGFyZSBiZWluZyBidWlsdCwgY2hhbmdpbmcgcmFwaWRseSwgb3Igbm90IHlldCBwcmVzZW50IGluIHlvdXIgT3BlbkFQSSBzcGVjcy4KCioqLmRqYW5nby1jb250cmFjdC10ZXN0ZXIqKgpgYGAKW2RqYW5nby1jb250cmFjdC10ZXN0ZXI6dmFsaWRhdGlvbl0KZXhjbHVkZWRfZW5kcG9pbnRzID0gR0VUIC9hcGkvcGV0cy8qLCBQT1NUIC9hcGkvb3JkZXJzLCAvYXBpL2hlYWx0aAojIEV4Y2x1ZGUgYWxsIEdFVCByZXF1ZXN0cyB0byBzdWJwYXRocyBvZiAvYXBpL3BldHMvLCBlLmcuIEdFVCAvYXBpL3BldHMve2lkfQojIEV4Y2x1ZGUgdGhlIFBPU1QgL2FwaS9vcmRlcnMgZW5kcG9pbnQKIyBFeGNsdWRlIGFsbCBtZXRob2RzIGZvciAvYXBpL2hlYWx0aApgYGAKCioqcHlwcm9qZWN0LnRvbWwqKgpgYGB0b21sClt0b29sLmRqYW5nby1jb250cmFjdC10ZXN0ZXIudmFsaWRhdGlvbl0KZXhjbHVkZWRfZW5kcG9pbnRzID0gWwogICAgIkdFVCAvYXBpL3BldHMvKiIsICAgICAgIyBFeGNsdWRlIGFsbCBHRVQgcmVxdWVzdHMgdG8gc3VicGF0aHMgb2YgL2FwaS9wZXRzLywgZS5nLiAiR0VUIC9hcGkvcGV0cy97aWR9IgogICAgIlBPU1QgL2FwaS9vcmRlcnMiLCAgICAgIyBFeGNsdWRlIHRoZSBQT1NUIC9hcGkvb3JkZXJzIGVuZHBvaW50CiAgICAiL2FwaS9oZWFsdGgiLCAgICAgICAgICAjIEV4Y2x1ZGUgYWxsIG1ldGhvZHMgZm9yIC9hcGkvaGVhbHRoCl0KYGBgCgojIyBLbm93biBJc3N1ZXMKCiogV2UgYXJlIHVzaW5nIFtwcmFuY2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9qZmlua2hhZXVzZXIvcHJhbmNlKSBhcyBhIHNjaGVtYSByZXNvbHZlciwgYW5kIGl0IGhhcyBzb21lIGlzc3VlcyB3aXRoIHRoZSByZXNvbHV0aW9uIG9mICh2ZXJ5KSBjb21wbGV4IE9wZW5BUEkgMi4wIHNjaGVtYXMuCgojIyBDb250cmlidXRpbmcKCkNvbnRyaWJ1dGlvbnMgYXJlIHdlbGNvbWUuIFBsZWFzZSBzZWUgdGhlIFtjb250cmlidXRpbmcgZ3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRpY2FyZGVuYXMvZGphbmdvLWNvbnRyYWN0LXRlc3Rlci9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQpCg== readmeEtag: '"ff81e0ec50c05b76fa84eff7d316fda59ac0a349"' readmeLastModified: Sun, 25 Jan 2026 16:30:05 GMT repositoryId: 561525667 description: >- Test utility for validating Django APIs against their OpenAPI specification created: '2022-11-03T22:07:32Z' updated: '2026-01-25T16:40:07Z' language: Python archived: false stars: 18 watchers: 0 forks: 4 owner: maticardenas logo: https://avatars.githubusercontent.com/u/12075970?v=4 license: BSD-3-Clause repoEtag: '"94067f78c050fcfa49f7045b9d1df6b06116ecfa29960eed199ab500b47f1ba7"' repoLastModified: Sun, 25 Jan 2026 16:40:07 GMT foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags name: express-openapi-validator category: - Description Validators - Data Validators repository: https://github.com/cdimascio/express-openapi-validator language: JavaScript source_description: 🦋 Auto-validate API requests and responses in ExpressJS. v2: false v3: true repositoryMetadata: base64Readme: >- IyDwn6aLIGV4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3IKClshW2J1aWxkIHdvcmtmbG93XShodHRwczovL2dpdGh1Yi5jb20vY2RpbWFzY2lvL2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3IvYWN0aW9ucy93b3JrZmxvd3MvZGVmYXVsdC55bWwvYmFkZ2Uuc3ZnKV0oIykgWyFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3Iuc3ZnKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZXhwcmVzcy1vcGVuYXBpLXZhbGlkYXRvcikgWyFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kbS9leHByZXNzLW9wZW5hcGktdmFsaWRhdG9yP2NvbG9yPWJsdWUpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9leHByZXNzLW9wZW5hcGktdmFsaWRhdG9yKSBbIVtBbGwgQ29udHJpYnV0b3JzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9jb250cmlidXRvcnMvY2RpbWFzY2lvL2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3IKKV0oI2NvbnRyaWJ1dG9ycykgWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIvY2RpbWFzY2lvL2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3IvYmFkZ2Uuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL2NvdmVyYWxscy5pby9naXRodWIvY2RpbWFzY2lvL2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3I/YnJhbmNoPW1hc3RlcikgWyFbQ29kYWN5IEJhZGdlXShodHRwczovL2FwaS5jb2RhY3kuY29tL3Byb2plY3QvYmFkZ2UvR3JhZGUvMTU3MGEwNmY2MDkzNDVkZGIyMzcxMTRiYmQ2Y2VlZDcpXShodHRwczovL3d3dy5jb2RhY3kuY29tL21hbnVhbC9jZGltYXNjaW8vZXhwcmVzcy1vcGVuYXBpLXZhbGlkYXRvcj91dG1fc291cmNlPWdpdGh1Yi5jb20mdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY29udGVudD1jZGltYXNjaW8vZXhwcmVzcy1vcGVuYXBpLXZhbGlkYXRvciZ1dG1fY2FtcGFpZ249QmFkZ2VfR3JhZGUpIFshW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXR0ZXIvcm9vbS9jZGltYXNjaW8tb3NzL2NvbW11bml0eT9jb2xvcj0lMjNlYjIwNWEpXShodHRwczovL2dpdHRlci5pbS9jZGltYXNjaW8tb3NzL2NvbW11bml0eSkgWyFbR2l0cG9kIFJlYWR5LXRvLUNvZGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvR2l0cG9kLVJlYWR5LS10by0tQ29kZS1ibHVlP2xvZ289Z2l0cG9kKV0oaHR0cHM6Ly9naXRwb2QuaW8vI2h0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZXhwcmVzcy1vcGVuYXBpLXZhbGlkYXRvcikgIFshW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9kb2N1bWVudGF0aW9uLXllcy1pbmZvcm1hdGlvbmFsKV0oaHR0cHM6Ly9jZGltYXNjaW8uZ2l0aHViLmlvL2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3ItZG9jdW1lbnRhdGlvbi8pIFshW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ibHVlLnN2ZyldKCNsaWNlbnNlKQoKKipBbiBPcGVuQXBpIHZhbGlkYXRvciBmb3IgRXhwcmVzc0pTKiogdGhhdCBhdXRvbWF0aWNhbGx5IHZhbGlkYXRlcyAqKkFQSSoqIF8qKnJlcXVlc3RzKipfIGFuZCBfKipyZXNwb25zZXMqKl8gdXNpbmcgYW4gKipPcGVuQVBJIDMqKiBzcGVjaWZpY2F0aW9uLgoKPHAgYWxpZ249ImNlbnRlciI+CjxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY2RpbWFzY2lvL2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3IvbWFzdGVyL2Fzc2V0cy9leHByZXNzLW9wZW5hcGktdmFsaWRhdG9yLWxvZ28tdjIucG5nIiB3aWR0aD0iNjAwIj4KPC9wPgoKW/CfpotleHByZXNzLW9wZW5hcGktdmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vY2RpbWFzY2lvL2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3IpIGlzIGFuIHVub3BpbmlvbmF0ZWQgbGlicmFyeSB0aGF0IGludGVncmF0ZXMgd2l0aCBuZXcgYW5kIGV4aXN0aW5nIEFQSSBhcHBsaWNhdGlvbnMuIGV4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3IgbGV0cyB5b3Ugd3JpdGUgY29kZSB0aGUgd2F5IHlvdSB3YW50OyBpdCBkb2VzIG5vdCBpbXBvc2UgYW55IGNvZGluZyBjb252ZW50aW9uIG9yIHByb2plY3QgbGF5b3V0LiBTaW1wbHksIGluc3RhbGwgdGhlIHZhbGlkYXRvciBvbnRvIHlvdXIgZXhwcmVzcyBhcHAsIHBvaW50IGl0IHRvIHlvdXIgKipPcGVuQVBJIDMuMC54Kiogb3IgKiozLjEueCoqIHNwZWNpZmljYXRpb24sIHRoZW4gZGVmaW5lIGFuZCBpbXBsZW1lbnQgcm91dGVzIHRoZSB3YXkgeW91IHByZWZlci4gU2VlIGFuIFtleGFtcGxlXShodHRwczovL2NkaW1hc2Npby5naXRodWIuaW8vZXhwcmVzcy1vcGVuYXBpLXZhbGlkYXRvci1kb2N1bWVudGF0aW9uL2d1aWRlLXN0YW5kYXJkLykuCgoqKkZlYXR1cmVzOioqCgotIOKclO+4jyByZXF1ZXN0IHZhbGlkYXRpb24KLSDinJTvuI8gcmVzcG9uc2UgdmFsaWRhdGlvbiAoanNvbiBvbmx5KQotIPCfka4gc2VjdXJpdHkgdmFsaWRhdGlvbiAvIGN1c3RvbSBzZWN1cml0eSBmdW5jdGlvbnMKLSDwn5G9IDNyZCBwYXJ0eSAvIGN1c3RvbSBmb3JtYXRzIC8gY3VzdG9tIGRhdGEgc2VyaWFsaXphdGlvbi1kZXNlcmlhbGl6YXRpb24KLSDwn6e1IG9wdGlvbmFsbHkgYXV0by1tYXAgT3BlbkFQSSBlbmRwb2ludHMgdG8gRXhwcmVzcyBoYW5kbGVyIGZ1bmN0aW9ucwotIOKcgu+4jyAqKlwkcmVmKiogc3VwcG9ydDsgc3BsaXQgc3BlY3Mgb3ZlciBtdWx0aXBsZSBmaWxlcwotIPCfjoggZmlsZSB1cGxvYWQKLSDinI/vuI8gT3BlbkFQSSAzLjAueCBhbmQgMy4xLnggc3BlYyBzdXBwb3J0Ci0g4pyoIEV4cHJlc3MgNCBhbmQgNSBzdXBwb3J0CgoKCioqRG9jczoqKgotIPCfk5YgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vY2RpbWFzY2lvLmdpdGh1Yi5pby9leHByZXNzLW9wZW5hcGktdmFsaWRhdG9yLWRvY3VtZW50YXRpb24vKQoKWyFbR2l0SHViIHN0YXJzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9zdGFycy9jZGltYXNjaW8vZXhwcmVzcy1vcGVuYXBpLXZhbGlkYXRvci5zdmc/c3R5bGU9c29jaWFsJmxhYmVsPVN0YXImbWF4QWdlPTI1OTIwMDApXShodHRwczovL0dpdEh1Yi5jb20vY2RpbWFzY2lvL2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3Ivc3RhcmdhemVycy8pIFshW1R3aXR0ZXIgVVJMXShodHRwczovL2ltZy5zaGllbGRzLmlvL3R3aXR0ZXIvdXJsL2h0dHBzL2dpdGh1Yi5jb20vY2RpbWFzY2lvL2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3Iuc3ZnP3N0eWxlPXNvY2lhbCldKGh0dHBzOi8vdHdpdHRlci5jb20vaW50ZW50L3R3ZWV0P3RleHQ9Q2hlY2slMjBvdXQlMjBleHByZXNzLW9wZW5hcGktdmFsaWRhdG9yJTIwYnklMjAlNDBDYXJtaW5lRGlNYXNjaW8lMjBodHRwcyUzQSUyRiUyRmdpdGh1Yi5jb20lMkZjZGltYXNjaW8lMkZleHByZXNzLW9wZW5hcGktdmFsaWRhdG9yJTIwJUYwJTlGJTkxJThEKQoKW0V4cHJlc3MgNV0oaHR0cHM6Ly9leHByZXNzanMuY29tL2VuLzV4L2FwaS5odG1sKSBzdXBwb3J0IGF2YWlsYWJsZSBpbiBgPj12NS41LjBgIQoKW09BUyAzLjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZXhwcmVzcy1vcGVuYXBpLXZhbGlkYXRvci9wdWxsLzg4Mikgc3VwcG9ydCBhdmFpbGFibGUgaW4gYD49djUuNC4wYCEKCltOZXN0SlNdKGh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZXhwcmVzcy1vcGVuYXBpLXZhbGlkYXRvci90cmVlL21hc3Rlci9leGFtcGxlcy85LW5lc3RqcykKW0tvYV0oaHR0cHM6Ly9naXRodWIuY29tL2NkaW1hc2Npby9leHByZXNzLW9wZW5hcGktdmFsaWRhdG9yL3RyZWUvbGVybmEtZmFzdGlmeS9wYWNrYWdlcy9rb2Etb3BlbmFwaS12YWxpZGF0b3IpIGFuZCBbRmFzdGlmeV0oaHR0cHM6Ly9naXRodWIuY29tL2NkaW1hc2Npby9leHByZXNzLW9wZW5hcGktdmFsaWRhdG9yL3RyZWUvbGVybmEtZmFzdGlmeS9wYWNrYWdlcy9mYXN0aWZ5LW9wZW5hcGktdmFsaWRhdG9yKSBub3cgYXZhaWxhYmxlISDwn5qACgoKIyMgSW5zdGFsbAoKYGBgc2hlbGwKbnBtIGluc3RhbGwgZXhwcmVzcy1vcGVuYXBpLXZhbGlkYXRvcgpgYGAKCiMjIFVzYWdlCgoxLiBSZXF1aXJlL2ltcG9ydCB0aGUgb3BlbmFwaSB2YWxpZGF0b3IKCmBgYGphdmFzY3JpcHQKY29uc3QgT3BlbkFwaVZhbGlkYXRvciA9IHJlcXVpcmUoJ2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3InKTsKYGBgCgpvcgoKYGBgamF2YXNjcmlwdAppbXBvcnQgKiBhcyBPcGVuQXBpVmFsaWRhdG9yIGZyb20gJ2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3InOwpgYGAKCjIuIEluc3RhbGwgdGhlIG1pZGRsZXdhcmUKCmBgYGphdmFzY3JpcHQKYXBwLnVzZSgKICBPcGVuQXBpVmFsaWRhdG9yLm1pZGRsZXdhcmUoewogICAgYXBpU3BlYzogJy4vb3BlbmFwaS55YW1sJywKICAgIHZhbGlkYXRlUmVxdWVzdHM6IHRydWUsIC8vIChkZWZhdWx0KQogICAgdmFsaWRhdGVSZXNwb25zZXM6IHRydWUsIC8vIGZhbHNlIGJ5IGRlZmF1bHQKICB9KSwKKTsKYGBgCgozLiBSZWdpc3RlciBhbiBlcnJvciBoYW5kbGVyCgpgYGBqYXZhc2NyaXB0CmFwcC51c2UoKGVyciwgcmVxLCByZXMsIG5leHQpID0+IHsKICAvLyBmb3JtYXQgZXJyb3IKICByZXMuc3RhdHVzKGVyci5zdGF0dXMgfHwgNTAwKS5qc29uKHsKICAgIG1lc3NhZ2U6IGVyci5tZXNzYWdlLAogICAgZXJyb3JzOiBlcnIuZXJyb3JzLAogIH0pOwp9KTsKYGBgCgpfKipJbXBvcnRhbnQ6KiogRW5zdXJlIGV4cHJlc3MgaXMgY29uZmlndXJlZCB3aXRoIGFsbCByZWxldmFudCBib2R5IHBhcnNlcnMuIEJvZHkgcGFyc2VyIG1pZGRsZXdhcmUgZnVuY3Rpb25zIG11c3QgYmUgc3BlY2lmaWVkIHByaW9yIHRvIGFueSB2YWxpZGF0ZWQgcm91dGVzLiBTZWUgYW4gW2V4YW1wbGVdKCNleGFtcGxlLWV4cHJlc3MtYXBpLXNlcnZlcilfLgoKIyMgW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vY2RpbWFzY2lvLmdpdGh1Yi5pby9leHByZXNzLW9wZW5hcGktdmFsaWRhdG9yLWRvY3VtZW50YXRpb24vKQoKU2VlIHRoZSBbZG9jXShodHRwczovL2NkaW1hc2Npby5naXRodWIuaW8vZXhwcmVzcy1vcGVuYXBpLXZhbGlkYXRvci1kb2N1bWVudGF0aW9uLykgZm9yIGNvbXBsZXRlIGRvY3VtZW5hdGlvbgoKX2RlcHJlY2F0ZWRfIFtsZWdhY3kgZG9jXShodHRwczovL2dpdGh1Yi5jb20vY2RpbWFzY2lvL2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3Ivd2lraSkgCgojIyBMaWNlbnNlCgpbTUlUXShMSUNFTlNFKQoKPGEgaHJlZj0iaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9tOTd0QTVjIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vYm1jLWNkbi5ueWMzLmRpZ2l0YWxvY2VhbnNwYWNlcy5jb20vQk1DLWJ1dHRvbi1pbWFnZXMvY3VzdG9tX2ltYWdlcy9vcmFuZ2VfaW1nLnBuZyIgYWx0PSJCdXkgTWUgQSBDb2ZmZWUiIHN0eWxlPSJoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDt3aWR0aDogYXV0byAhaW1wb3J0YW50OyIgPjwvYT4K readmeEtag: '"d1af81fdbdc0e30e5e68975942c9de87becd6008"' readmeLastModified: Wed, 14 May 2025 14:44:12 GMT repositoryId: 176581314 description: >- 🦋 Auto-validates api requests, responses, and securities using ExpressJS and an OpenAPI 3.1.x or 3.0.x specification created: '2019-03-19T19:08:05Z' updated: '2026-02-06T01:52:53Z' language: TypeScript archived: false stars: 999 watchers: 18 forks: 231 owner: cdimascio logo: https://avatars.githubusercontent.com/u/4706618?v=4 license: MIT repoEtag: '"a5cee7ede0b239511b29ce9f138af8faa024ac5a847f7503ad794965661a42c8"' repoLastModified: Fri, 06 Feb 2026 01:52:53 GMT foundInMaster: true id: 3a27bc1a71642e0c1c020c41dc66e206 - source: https://openapi.tools/ name: openapi-dev-tool category: - Testing - Documentation - Parsers repository: https://github.com/lyra/openapi-dev-tool language: JavaScript source_description: >- OpenAPI Dev Tool proposes to developers a unique tool to address development and industrialization needs! v2: true v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIERldiBUb29sCgpbIVtMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtQXBhY2hlJTIwMi4wLWJsdWUuc3ZnKV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9BcGFjaGUtMi4wKQoKPCEtLSBBVVRPLUdFTkVSQVRFRC1DT05URU5UOlNUQVJUIChiYWRnZVBsdWdpbjpzcmM9Li9zY3JpcHRzL2JhZGdlLXRlbXBsYXRlKSAtLT4KClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90cmF2aXMvbHlyYS9vcGVuYXBpLWRldi10b29sL2RldmVsb3ApXShodHRwczovL2FwcC50cmF2aXMtY2kuY29tL2dpdGh1Yi9seXJhL29wZW5hcGktZGV2LXRvb2wpCgo8IS0tIEFVVE8tR0VORVJBVEVELUNPTlRFTlQ6RU5EIC0tPgoKWyFbbnBtIHBhY2thZ2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGx5cmEtbmV0d29yay9vcGVuYXBpLWRldi10b29sL2xhdGVzdC5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AbHlyYS1uZXR3b3JrL29wZW5hcGktZGV2LXRvb2wpClshW25wbSBkb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2R0L0BseXJhLW5ldHdvcmsvb3BlbmFwaS1kZXYtdG9vbC5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AbHlyYS1uZXR3b3JrL29wZW5hcGktZGV2LXRvb2wpCgojIyBTcG9uc29yCgpgb3BlbmFwaS1kZXYtdG9vbGAgaXMgYSB0b29sIGRldmVsb3BlZCBieSBbTHlyYSBOZXR3b3JrXShodHRwczovL3d3dy5seXJhLmNvbS8pCgo8aW1nIHNyYz0iZG9jLWFzc2V0cy9sb2dvX2x5cmFfYmx1ZS5zdmciIGFsdD0iTHlyYSIgd2lkdGg9IjQ4Ii8+CgojIyBXaGF0IGlzIE9wZW5BUEk/CgpbT3BlbkFQSV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9hYm91dC8pIHNwZWNpZmljYXRpb24gaXMgYW4gQVBJIGRlc2NyaXB0aW9uIGZvcm1hdCBmb3IgUkVTVCBBUElzIHdoZXJlIHlvdSBjYW4gZGVzY3JpYmUgeW91ciBlbnRpcmUgQVBJLCBpbmNsdWRpbmc6CgotIEF2YWlsYWJsZSBlbmRwb2ludHMgKC91c2VycykgYW5kIG9wZXJhdGlvbnMgb24gZWFjaCBlbmRwb2ludCAoR0VUIC91c2VycywgUE9TVCAvdXNlcnMpCi0gT3BlcmF0aW9ucyBpbnB1dCBhbmQgb3V0cHV0IHBhcmFtZXRlcnMKLSBBdXRoZW50aWNhdGlvbiBtZXRob2RzCi0gQ29udGFjdCBpbmZvcm1hdGlvbiwgbGljZW5zZSwgdGVybXMgb2YgdXNlIGFuZCBvdGhlciBpbmZvcm1hdGlvbgoKIyMgQWltCgpBbHRob3VnaCB1c2luZyBPcGVuQVBJIGNvbWVzIHdpdGggYSBsb3Qgb2YgYWR2YW50YWdlcyAoZG9jdW1lbnRhdGlvbiBhbmQgY29kZSBnZW5lcmF0aW9uLCBmYXN0ZXIgQVBJIHB1Ymxpc2hpbmcsIHRlYW1zIGNvbGxhYm9yYXRpb24gcHJvbW90aW9uLi4uKSwgaW5kdXN0cmlhbGl6aW5nIGl0IHJlbWFpbnMgY29tcGxpY2F0ZWQgZHVlIHRvIGNlcnRhaW4gc2hvcnRjb21pbmdzLiBVc2luZyBhIHNpbmdsZSBPcGVuQVBJIGZpbGUgZm9yIHNldmVyYWwgY29udGV4dHMgKHB1YmxpYyBhbmQgcHJpdmF0ZSB1c2FnZSBmb3IgZXhhbXBsZSkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCByZWxlYXNlIG9mIE9wZW5BUEkuIFVzaW5nIHRoZSBleHRlcm5hbCByZWZlcmVuY2VzIHRvIGRlc2lnbiB5b3VyIEFQSSBmcm9tIHNldmVyYWwgZmlsZXMgdG8gZmFjaWxpdGF0ZSB0aGUgbWFpbnRhaW5hYmlsaXR5IGlzIHN0aWxsIHJlcXVpcmVkLiBQYWlubGVzc2x5IHB1Ymxpc2ggeW91ciBzcGVjaWZpY2F0aW9ucyBpbnRvIGEgc29mdHdhcmUgcmVwb3NpdG9yeSB0byBiZSBhYmxlIHRvIHJldXNlIGl0ICh0byBnZW5lcmF0ZSBjbGllbnQgb3Igc2VydmVyIGNvZGUpLiBFdGMuCkFsc28sIHRoZSBPcGVuQVBJIGVjb3N5c3RlbSBpcyB2ZXJ5IGxhcmdlIChodHRwczovL29wZW5hcGkudG9vbHMvKSB3aXRoIGEgbG90IG9mIHRvb2xzIHdpdGggZGlmZmVyZW50IHF1YWxpdHkgbGV2ZWxzLiBDb25zZXF1ZW50bHksIHRvIHNldCB1cCBhIGNvbXBsZXRlIGRldmVsb3BtZW50IGVudmlyb25tZW50LCBtYW55IHRvb2xzIGhhdmUgdG8gYmUgaW5zdGFsbGVkIGFuZCB1cGdyYWRlZCByZWd1bGFybHkuCgpPcGVuQVBJIERldiBUb29sIGZpeGVzIGFsbCB0aGVzZSBpc3N1ZXMgYnkgb2ZmZXJpbmcgdG8gZGV2ZWxvcGVycyBhIHVuaXF1ZSB0b29sIHRvIGFkZHJlc3MgZGV2ZWxvcG1lbnQgYW5kIGluZHVzdHJpYWxpemF0aW9uIG5lZWRzIQoKRnJvbSBgb3BlbmFwaS1kZXYtdG9vbGAgY29tbWFuZC1saW5lIGludGVyZmFjZSwgeW91IGNhbjoKCi0gZGVzaWduIHlvdXIgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBmb3Igc2V2ZXJhbCBjb250ZXh0cyBvZiB1c2VzICh3aXRob3V0IGFueSBjb3B5LXBhc3RlKSA7Ci0gd3JpdGUgeW91ciBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGJ5IHVzaW5nIHNldmVyYWwgZmlsZXMgKHRvIGF2b2lkIGhhdmluZyBhIHVuaXF1ZSBsYXJnZSBhbmQgdW5tYWludGFpbmFibGUgZmlsZSkgOwotIGVhc2lseSBwdWJsaXNoIHlvdXIgT3BlbkFQSSBmaWxlcyBhbmQgcmV1c2UgdGhlbSB0byBnZW5lcmF0ZSB5b3VyIGNsaWVudCBvciB5b3VyIHNlcnZlciA7Ci0gdmlldyBkb2N1bWVudGF0aW9uIGluIHJlYWwtdGltZSA7Ci0gdmFsaWRhdGUgeW91ciBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGFuZCB5b3VyIGV4YW1wbGVzIGF1dG9tYXRpY2FsbHkgOwotIGV0Yy4KCiFbcHJlc2VudGF0aW9uXShkb2MtYXNzZXRzL3ByZXMuZ2lmKQoKIyMgU3RhbmRhcmQgc3VwcG9ydAoKT3BlbkFQSSBEZXYgVG9vbCBzdXBwb3J0cyB0aGlzIGZvbGxvd2luZyBzdGFuZGFyZHMgdmVyc2lvbjoKCi0gW1N3YWdnZXIgMi4wXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi92Mi8pCi0gW09wZW5hcGkgMy4wLnhdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykKLSBbT3BlbmFwaSAzLjEuMF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wKQoKIyMgSW5zdGFsbGF0aW9uCgoxLiBJbnN0YWxsIGBOb2RlLkpTYCAoaHR0cHM6Ly9ub2RlanMub3JnLykKCjEuIEluc3RhbGwgYE9wZW5BUEkgRGV2IFRvb2xgIHRvb2wKCiAgIC0gV2l0aCBucG0KICAgICA+IGBucG0gaSAtZyBAbHlyYS1uZXR3b3JrL29wZW5hcGktZGV2LXRvb2xgCiAgIC0gV2l0aCB5YXJuCiAgICAgPiBgeWFybiBnbG9iYWwgYWRkIEBseXJhLW5ldHdvcmsvb3BlbmFwaS1kZXYtdG9vbGAKCjEuIFNob3cgdXNhZ2UKICAgPiBgb3BlbmFwaS1kZXYtdG9vbCBoZWxwYAoKIyMgRmVhdHVyZXMKCiMjIyBTZXJ2aW5nCgojIyMjIE92ZXJ2aWV3Cgo+IERldmVsb3AgeW91ciBzcGVjaWZpY2F0aW9ucyEKCi0gKipTZXJ2ZSBvbmUgb3Igc2V2ZXJhbCBPcGVuQVBJIGZpbGVzKiogc3BlY2lmaWVkIGluIFtjb25maWd1cmF0aW9uIGZpbGVdKCNjb25maWd1cmF0aW9uLWZpbGUpIGFuZCB3cml0dGVuIGluIFlBTUwgb3IgSlNPTgotICoqTGl2ZSByZWxvYWRpbmcqKiB0byB2aWV3IGR5bmFtaWNhbGx5IHlvdXIgY2hhbmdlcyBpbiB5b3VyIGJyb3dzZXIgaW4gcmVhbC10aW1lCi0gKipCdW5kbGUgT3BlbkFQSSBmaWxlcyoqIHRvIG1lcmdlIGFsbCB0aGUgZmlsZXMgYmVmb3JlIHNlcnZpbmcuIEJ5IHVzaW5nIFtPcGVuQVBJIHJlbW90ZSByZWZlcmVuY2VdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vdXNpbmctcmVmLyksIHlvdSBjYW4gd29yayBvbiBzZXZlcmFsIGZpbGVzLiBJdCBpbXByb3ZlcyB0aGUgbWFpbnRhaW5hYmlsaXR5IGFuZCBhdm9pZHMgaGF2aW5nIGEgbGFyZ2UgT3BlbkFQSSBmaWxlIQotICoqU2V2ZXJhbCBkb2N1bWVudGF0aW9uIHZpZXdlcnMgZW1iZWRkZWQqKiB3aXRoIHRoZSBwb3NzaWJpbGl0eSB0byBbb3ZlcnJpZGUgdGhlIHRlbXBsYXRlc10oI3RlbXBsYXRlcy1vdmVycmlkZSkgdXNlZDoKICAtIFJlZG9jIChodHRwOi8vbG9jYWxob3N0OjMwMDApCiAgLSBTd2FnZ2VyIFVJIChodHRwOi8vbG9jYWxob3N0OjMwMDAvc3dhZ2dlci11aSkKLSAqKmB4LXRhZ3NgIHZlbmRvciBleHRlbnNpb24qKiBpbiBgSW5mb2Agb2JqZWN0IHRvIGJlIGFibGUgdG8gW3RhZyBPcGVuQVBJIGZpbGVzXSgjdGFncy11c2FnZSkuIE9wZW5BUEkgZG9lc24ndCBzdXBwb3J0IHNwZWNpZmljYXRpb25zIHRhZ3MgYW5kIG9ubHkgc3VwcG9ydHMgb3BlcmF0aW9ucyB0YWdzIChmb3Igb3JnYW5pemF0aW9uIHB1cnBvc2VzKS4gV2l0aCB0aGUgYHgtdGFnc2AgdmVuZG9yIGV4dGVuc2lvbiBhbmQgZm9yIFJlZG9jIHZpZXdlciwgaXQgaXMgbm93IHBvc3NpYmxlIHRvIGNhdGVnb3JpemUgYW5kIG9yZ2FuaXplIHNwZWNpZmljYXRpb25zLgoKRm9yIGV4YW1wbGUsIGRlY2xhcmUgYSBwcml2YXRlIGFuZCBhIHB1YmxpYyBzcGVjaWZpY2F0aW9uczoKCiFbcHJlc2VudGF0aW9uXShkb2MtYXNzZXRzL3h0YWcucG5nKQoKLSAqKlZhbGlkYXRlKiogeW91ciBzcGVjaWZpY2F0aW9ucyBhbmQgeW91ciBleGFtcGxlcyBhdXRvbWF0aWNhbGx5Ci0gKipTdGF0aWMgZmlsZXMqKiBjYW4gYmUgZXhwb3NlZCBpbiBhZGRpdGlvbiBvZiB5b3VyIG9wZW5hcGkgZG9jdW1lbnRhdGlvbgotICoqQ29udGV4dCB1c2VzKio6IGl0IGlzIHBvc3NpYmxlIHRvIHNlcnZlIGEgc2FtZSBzcGVjaWZpY2F0aW9uIGluIFtzZXZlcmFsIGNvbnRleHRzXSgjY29udGV4dC11c2FnZSkgKGludGVybmFsLCBwdWJsaWMsIGV0Yy4pCi0gKipWaWV3ZXJzIHVwLXRvLWRhdGUqKiB5b3UgY2FuIHVzZSB0aGUgbGF0ZXN0IHJlbGVhc2VzIG9mIHZpZXdlcnMgZGlyZWN0bHkgYnkgZGVjbGFyaW5nIGl0IGZyb20geW91ciBgcGFja2FnZS5qc29uYCAoW3N3YWdnZXItdWktZGlzdF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvc3dhZ2dlci11aS1kaXN0KSAmIFtyZWRvY10oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvcmVkb2MpKS4gYG9wZW5hcGktZGV2LXRvb2xgIHdpbGwgYXV0b21hdGljYWxseSB1c2UgdGhlIHZpZXdlcnMgZGVmaW5lZCBpbiB5b3VyIGFwcC4KCiMjIyMgVXNhZ2UKClVzYWdlIGNhbiBiZSBkaXNwbGF5ZWQgYnkgdHlwaW5nIHRoZSBjb21tYW5kCgo+IGBvcGVuYXBpLWRldi10b29sIGhlbHAgc2VydmVgCgpgYGAKb3BlbmFwaS1kZXYtdG9vbCBzZXJ2ZQoKICBTZXJ2ZSBvbmUgb3Igc2VydmVyYWwgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZpbGVzIGluIFlBTUwgb3IgSlNPTgogIGZvcm1hdAoKQ29tbWFuZCBPcHRpb25zCgogIC1iLCAtLXNraXBCdW5kbGUgICAgICAgICAgICAgICBTa2lwcyBidW5kbGUgb3BlbmFwaSBmaWxlcyBpbnRvIG9uZSBiZWZvcmUgc2VydmluZyBvciBwdWJsaXNoaW5nLCBkZWZhdWx0IGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlCiAgLXAsIC0tcG9ydCBudW1iZXIgICAgICAgICAgICAgIFBvcnQgdG8gdXNlLCBkZWZhdWx0IGlzIDMwMDAKICAtdSwgLS1jb250ZXh0UGF0aCBzdHJpbmcgICAgICAgQ29udGV4dCB1c2VkIHRvIGV4cG9zZSBvcGVuYXBpIGRvY3VtZW50YXRpb25zLiBIYXMgdG8gYmUgc3RhcnQgd2l0aCAnLycsIGRlZmF1bHQgaXMgJy8nCiAgLWUsIC0tdmlld3NGb2xkZXIgc3RyaW5nICAgICAgIEZvbGRlciB0aGF0IGNvbnRhaW5zIHZpZXdzIGluIEVKUyB0byBvdmVycmlkZSBkZWZhdWx0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtICJhcGkuZWpzIjogZm9yIEFQSSBMaXN0IHBhZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAicmVkb2MuZWpzIjogZm9yIFJlZG9jIHBhZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAic3dhZ2dlci11aS5lanMiOiBmb3IgU3dhZ2dlciBVSSBwYWdlCiAgLXMsIC0tc3RhdGljRm9sZGVycyBzdHJpbmdbXSAgIEV4cG9zZXMgYSBzdGF0aWMgZm9sZGVyIGluIGFkZGl0aW9uIG9mIG9wZW5hcGkgZG9jdW1lbnRhdGlvbiwgZm9yIGV4YW1wbGUsIGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSB3YW50IGV4cG9zZSBnZW5lcmFsIGRvY3VtZW50YXRpb24gKG1pZ3JhdGlvbiwgQVBJIG92ZXJ2aWV3LC4uLikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzIHRvIGJlIGEgbWFwIGxpa2UgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPHBhdGgxPjo8Zm9sZGVyMT4gd2hlcmUgcGF0aDEgYW5kIGZvbGRlcjEgaGF2ZSB0byBbYS16QS1aMC05Xy1dKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuYXBpLWRldi10b29sIHdpbGwgY3JlYXRlIGEgcGF0aCAiL3BhdGgxIiB3aGVyZSBzdGF0aWMgZmlsZXMgb2YgZm9sZGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xkZXIxIiB3aWxsIGJlIGV4cG9zZWQKICAteCwgLS1za2lwVmFsaWRhdGlvbiAgICAgICAgICAgU2tpcHMgT3BlbkFQSSB2YWxpZGF0aW9uIHByb2Nlc3MsIGRlZmF1bHQgaXMgZmFsc2UKCkdsb2JhbCBPcHRpb25zCgogIC1jLCAtLWNvbmZpZyBzdHJpbmcgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBmaWxlIGluIEpTT04gb3IgWUFNTCBmb3JtYXQgd2hlcmUgc3BlY2lmaWNhdGlvbnMgYXJlIGRlZmluZWQsIGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGNvbmZpZy5qc29uCiAgLWYsIC0tZmlsdGVyIHN0cmluZyAgICAgICAgICAgICAgICBNYW5hZ2Ugc29tZSBzcGVjaWZpY2F0aW9ucyBkZWZpbmVkIGJ5IGl0cyBuYW1lIChgYXBpLmluZm8udGl0bGVgKSBhbmQgd2hpY2ggbWF0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhpcyByZWdleCBmaWx0ZXIgcmF0aGVyIHVzZSB0aGUgd2hvbGUgb2YgZW5hYmxlZCBzcGVjaWZpY2F0aW9ucyBkZWNsYXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50byBjb25maWd1cmF0aW9uIGZpbGUKICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgICAgICAgICAgIFZlcmJvc2UgbW9kZSwgZGVmYXVsdCBpcyBmYWxzZQogIC1hLCAtLXVybERvd25sb2FkVGVtcGxhdGUgc3RyaW5nICAgUmF0aGVyIHRvIHVzZSBzcGVjcyBmcm9tIGxvY2FsIEZTLCB5b3UgY2FuIHNwZWNpZnkgcmVtb3RlIHNwZWNzICh1c2luZyAnYXJ0aWZhY3QnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcgcHJvcGVydHkpIHdoaWNoIHdpbGwgYmUgZG93bmxvYWRlZCBieSB1c2luZyB0aGlzIHVybC4gRnJvbSB0aGlzIHVybCB0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1tBUlRJRkFDVF9JRF0nLCAnW0dST1VQX0lEXScgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnW1ZFUlNJT05dJyB3aWxsIGJlIHJlcGxhY2VkLgogIC0tZG93bmxvYWRQb29sU2l6ZSBudW1iZXIgICAgICAgICAgUG9vbCBzaXplIHVzZWQgdG8gZG93bmxvYWQgYXJ0aWZhY3RzLCBkZWZhdWx0IGlzICJJbmZpbml0eSIuCmBgYAoKIyMjIFB1Ymxpc2hpbmcKCiMjIyMgT3ZlcnZpZXcKCj4gUHVibGlzaCB5b3VyIHNwZWNpZmljYXRpb25zIQo+IFVzZSB0aGUgdmVyc2lvbiBhbmQgdGl0bGUgb2YgeW91ciBzcGVjaWZpY2F0aW9ucyB0byBwdWJsaXNoIHRoZW0gZGlyZWN0bHkgaW4geW91ciBzb2Z0d2FyZSByZXBvc2l0b3J5IHNlcnZlciEKCi0gKipQdWJsaXNoIG9uZSBvciBzZXZlcmFsIE9wZW5BUEkgZmlsZXMqKiBzcGVjaWZpZWQgaW4gW2NvbmZpZ3VyYXRpb24gZmlsZV0oI2NvbmZpZ3VyYXRpb24tZmlsZSkgYW5kIHdyaXR0ZW4gaW4gWUFNTCBvciBKU09OCi0gKipCdW5kbGUgT3BlbkFQSSBmaWxlcyoqIHRvIG1lcmdlIGFsbCB0aGUgZmlsZXMgYmVmb3JlIHB1Ymxpc2hpbmcuIEJ5IHVzaW5nIChPcGVuQVBJIHJlbW90ZSByZWZlcmVuY2UpW2h0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vdXNpbmctcmVmL10sIHlvdSBjYW4gd29yayBvbiBzZXZlcmFsIGZpbGVzLiBJdCBpbXByb3ZlcyB0aGUgbWFpbnRhaW5hYmlsaXR5IGFuZCBhdm9pZCBoYXZpbmcgYSBsYXJnZSBPcGVuQVBJIGZpbGUhCi0gKipDb250ZXh0IHVzZXMqKjogaXQgaXMgcG9zc2libGUgdG8gcHVibGlzaCBhIHNhbWUgc3BlY2lmaWNhdGlvbiBpbiBbc2V2ZXJhbCBjb250ZXh0c10oI2NvbnRleHQtdXNhZ2UpIChpbnRlcm5hbCwgcHVibGljLCBldGMuKQoKIyMjIyBVc2FnZQoKVXNhZ2UgY2FuIGJlIGRpc3BsYXllZCBieSB0eXBpbmcgdGhlIGNvbW1hbmQKCj4gYG9wZW5hcGktZGV2LXRvb2wgaGVscCBwdWJsaXNoYAoKYGBgCm9wZW5hcGktZGV2LXRvb2wgcHVibGlzaAoKICBQdWJsaXNoIGludG8gYSBzb2Z0d2FyZSByZXBvc2l0b3J5IHNlcnZlciAobGlrZSBTb25hdHlwZSBOZXh1cykgb25lIG9yIHNlcnZlcmFsIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMKICBmaWxlcy4gVGhlIHJlcG8gY2FuIGJlIGEgTWF2ZW4gcmVwb3NpdG9yeSBvciBhIG5wbSByZXBvc2l0b3J5LgoKQ29tbWFuZCBPcHRpb25zCgogIC1iLCAtLXNraXBCdW5kbGUgICAgICAgICAgICAgICBTa2lwcyBidW5kbGUgb3BlbmFwaSBmaWxlcyBpbnRvIG9uZSBiZWZvcmUgc2VydmluZyBvciBwdWJsaXNoaW5nLCBkZWZhdWx0IGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlCiAgLXQsIC0tcmVwb1R5cGUgc3RyaW5nICAgICAgICAgIFJlcG9zaXRvcnkgc2VydmVyIHR5cGUuIG1hdmVuIG9yIG5wbSBhcmUgcG9zc2libGUsIGRlZmF1bHQgaXMgbWF2ZW4KICAtZywgLS1ncm91cElkIHN0cmluZyAgICAgICAgICAgR3JvdXBJZCB1c2VkIGluIHJlcG8gc2VydmVyLCBkZWZhdWx0IGlzIGNvbS5vcGVuYXBpIGZvciBtYXZlbiByZXBvIGFuZCBAbXlDb21wYW55IGZvciBucG0gcmVwbwogIC1zLCAtLXJlcG9TZXJ2ZXIgc3RyaW5nICAgICAgICBSZXBvc2l0b3J5IHNlcnZlciB1cmwgdG8gc3RvcmUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZpbGVzCiAgLS1yZXBvU25hcHNob3RzU2VydmVyIHN0cmluZyAgIFJlcG9zaXRvcnkgc2VydmVyIHVybCB0byBzdG9yZSBPcGVuQVBJIHNuYXBzaG90cyBzcGVjaWZpY2F0aW9uIGZpbGVzLiBJZiBzcGVjaWZpZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tcmVwb1NlcnZlciB3aWxsIGJlIHVzZWQgdG8gc3RvcmUgT3BlbkFQSSByZWxlYXNlcyBzcGVjaWZpY2F0aW9uIGZpbGVzCiAgLXUsIC0tcmVwb1VzZXIgc3RyaW5nICAgICAgICAgIFJlcG9zaXRvcnkgc2VydmVyIHVzZXJuYW1lLiBBdXRoZW50aWNhdGlvbiBieSB1c2luZyB1c2VyL3Bhc3N3b3JkCiAgLXAsIC0tcmVwb1Bhc3N3b3JkIHN0cmluZyAgICAgIFJlcG9zaXRvcnkgc2VydmVyIHBhc3N3b3JkLiBBdXRoZW50aWNhdGlvbiBieSB1c2luZyB1c2VyL3Bhc3N3b3JkCiAgLS1yZXBvVG9rZW4gc3RyaW5nICAgICAgICAgICAgIFJlcG9zaXRvcnkgc2VydmVyIHRva2VuLiBBdXRoZW50aWNhdGlvbiBieSB1c2luZyB0b2tlbi4gRm9yIG5wbSByZXBvIG9ubHkKICAteCwgLS1za2lwVmFsaWRhdGlvbiAgICAgICAgICAgU2tpcHMgT3BlbkFQSSB2YWxpZGF0aW9uIHByb2Nlc3MsIGRlZmF1bHQgaXMgZmFsc2UKCkdsb2JhbCBPcHRpb25zCgogIC1jLCAtLWNvbmZpZyBzdHJpbmcgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBmaWxlIGluIEpTT04gb3IgWUFNTCBmb3JtYXQgd2hlcmUgc3BlY2lmaWNhdGlvbnMgYXJlIGRlZmluZWQsIGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGNvbmZpZy5qc29uCiAgLWYsIC0tZmlsdGVyIHN0cmluZyAgICAgICAgICAgICAgICBNYW5hZ2Ugc29tZSBzcGVjaWZpY2F0aW9ucyBkZWZpbmVkIGJ5IGl0cyBuYW1lIChgYXBpLmluZm8udGl0bGVgKSBhbmQgd2hpY2ggbWF0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhpcyByZWdleCBmaWx0ZXIgcmF0aGVyIHVzZSB0aGUgd2hvbGUgb2YgZW5hYmxlZCBzcGVjaWZpY2F0aW9ucyBkZWNsYXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50byBjb25maWd1cmF0aW9uIGZpbGUKICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgICAgICAgICAgIFZlcmJvc2UgbW9kZSwgZGVmYXVsdCBpcyBmYWxzZQogIC1hLCAtLXVybERvd25sb2FkVGVtcGxhdGUgc3RyaW5nICAgUmF0aGVyIHRvIHVzZSBzcGVjcyBmcm9tIGxvY2FsIEZTLCB5b3UgY2FuIHNwZWNpZnkgcmVtb3RlIHNwZWNzICh1c2luZyAnYXJ0aWZhY3QnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcgcHJvcGVydHkpIHdoaWNoIHdpbGwgYmUgZG93bmxvYWRlZCBieSB1c2luZyB0aGlzIHVybC4gRnJvbSB0aGlzIHVybCB0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1tBUlRJRkFDVF9JRF0nLCAnW0dST1VQX0lEXScgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnW1ZFUlNJT05dJyB3aWxsIGJlIHJlcGxhY2VkLgogIC0tZG93bmxvYWRQb29sU2l6ZSBudW1iZXIgICAgICAgICAgUG9vbCBzaXplIHVzZWQgdG8gZG93bmxvYWQgYXJ0aWZhY3RzLCBkZWZhdWx0IGlzICJJbmZpbml0eSIuCmBgYAoKIyMjIFB1Ymxpc2hpbmcgTG9jYWxseQoKIyMjIyBVc2FnZQoKPiAqKldhcm5pbmcqKgo+Cj4gUHVibGlzaGluZyBsb2NhbGx5IGlzIG9ubHkgcG9zc2libGUgdG8gcHVibGlzaCBpbiBsb2NhbCBNYXZlbiByZXBvc2l0b3J5IGFuZCBpdCB1c2VzIHRoZSBgbXZuYCBjb21tYW5kIGZyb20gUEFUSC4KClVzYWdlIGNhbiBiZSBkaXNwbGF5ZWQgYnkgdHlwaW5nIHRoZSBjb21tYW5kCgo+IGBvcGVuYXBpLWRldi10b29sIGhlbHAgcHVibGlzaC1sb2NhbGAKCmBgYApvcGVuYXBpLWRldi10b29sIHB1Ymxpc2gtbG9jYWwKCiAgUHVibGlzaCBpbnRvIHRoZSBsb2NhbCBNYXZlbiByZXBvc2l0b3J5CgpDb21tYW5kIE9wdGlvbnMKCiAgLWIsIC0tc2tpcEJ1bmRsZSAgICAgICAgICAgICAgIFNraXBzIGJ1bmRsZSBvcGVuYXBpIGZpbGVzIGludG8gb25lIGJlZm9yZSBzZXJ2aW5nIG9yIHB1Ymxpc2hpbmcsIGRlZmF1bHQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UKICAtZywgLS1ncm91cElkIHN0cmluZyAgICAgICAgICAgR3JvdXBJZCB1c2VkIGluIHJlcG8gc2VydmVyLCBkZWZhdWx0IGlzIGNvbS5vcGVuYXBpCiAgLXgsIC0tc2tpcFZhbGlkYXRpb24gICAgICAgICAgIFNraXBzIE9wZW5BUEkgdmFsaWRhdGlvbiBwcm9jZXNzLCBkZWZhdWx0IGlzIGZhbHNlCgpHbG9iYWwgT3B0aW9ucwoKICAtYywgLS1jb25maWcgc3RyaW5nICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gZmlsZSBpbiBKU09OIG9yIFlBTUwgZm9ybWF0IHdoZXJlIHNwZWNpZmljYXRpb25zIGFyZSBkZWZpbmVkLCBkZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBjb25maWcuanNvbgogIC1mLCAtLWZpbHRlciBzdHJpbmcgICAgICAgICAgICAgICAgTWFuYWdlIHNvbWUgc3BlY2lmaWNhdGlvbnMgZGVmaW5lZCBieSBpdHMgbmFtZSAoYGFwaS5pbmZvLnRpdGxlYCkgYW5kIHdoaWNoIG1hdGNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoaXMgcmVnZXggZmlsdGVyIHJhdGhlciB1c2UgdGhlIHdob2xlIG9mIGVuYWJsZWQgc3BlY2lmaWNhdGlvbnMgZGVjbGFyZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludG8gY29uZmlndXJhdGlvbiBmaWxlCiAgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgICAgICAgICAgICBWZXJib3NlIG1vZGUsIGRlZmF1bHQgaXMgZmFsc2UKICAtYSwgLS11cmxEb3dubG9hZFRlbXBsYXRlIHN0cmluZyAgIFJhdGhlciB0byB1c2Ugc3BlY3MgZnJvbSBsb2NhbCBGUywgeW91IGNhbiBzcGVjaWZ5IHJlbW90ZSBzcGVjcyAodXNpbmcgJ2FydGlmYWN0JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnIHByb3BlcnR5KSB3aGljaCB3aWxsIGJlIGRvd25sb2FkZWQgYnkgdXNpbmcgdGhpcyB1cmwuIEZyb20gdGhpcyB1cmwgdGVtcGxhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbQVJUSUZBQ1RfSURdJywgJ1tHUk9VUF9JRF0nIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1tWRVJTSU9OXScgd2lsbCBiZSByZXBsYWNlZC4KICAtLWRvd25sb2FkUG9vbFNpemUgbnVtYmVyICAgICAgICAgIFBvb2wgc2l6ZSB1c2VkIHRvIGRvd25sb2FkIGFydGlmYWN0cywgZGVmYXVsdCBpcyAiSW5maW5pdHkiLgpgYGAKCj4gKipXYXJuaW5nKioKPgo+IGBvcGVuYXBpLWRldi10b29sYCBpcyBnb2luZyB0byBkZXRlcm1pbmF0ZSBsb2NhbCByZXBvc2l0b3J5IHBhdGggYXV0b21hdGljYWxseSBmcm9tIGBtdm5gIGNvbW1hbmQuIFNvLCBmb3IgdGhpcyB0byB3b3JrLCBgbXZuYCBjb21tYW5kIGhhcyB0byBiZSBhdmFpbGFibGUgaW4gUEFUSC4KCiMjIyBNZXJnaW5nCgojIyMjIE92ZXJ2aWV3Cgo+IE1lcmdlIHlvdXIgc3BlY2lmaWNhdGlvbiEKPiBUbyBkZWJ1ZywgaXQgY2FuIGJlIGludGVyZXN0aW5nIHRvIGdldCB0aGUgbWVyZ2UgcmVzdWx0IHVzZWQgYnkgYHB1Ymxpc2hgLCBgcHVibGlzaC1sb2NhbGAgYW5kIGBzZXJ2ZWAgY29tbWFuZC4KCi0gKipNZXJnZSBzcGxpdCBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZXMqKiBpLmUuIGNvbXBvbmVudHMgc3BlY2lmaWMgZmlsZXMsIHBhdGhzIHNwZWNpZmljIGZpbGVzLCBpbmZvLCBldGMuIHRoYXQgY2FuIGJlIHdyaXR0ZW4gaW4gWUFNTCBvciBKU09OIGludG8gYSBzaW5nbGUgZmlsZSAocGVyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbikKCiMjIyMgVXNhZ2UKClVzYWdlIGNhbiBiZSBkaXNwbGF5ZWQgYnkgdHlwaW5nIHRoZSBjb21tYW5kCgo+IGBvcGVuYXBpLWRldi10b29sIGhlbHAgbWVyZ2VgCgpgYGAKb3BlbmFwaS1kZXYtdG9vbCBtZXJnZQoKICBNZXJnZSBzcGxpdCBPcGVuQVBJIHNwZWNpZmljYXRpb24gKGNvbXBvbmVudHMsIHBhdGhzLCBpbmZvLCBldGMuKSBpbnRvIGEgYnVuZGxlZCBzcGVjaWZpY2F0aW9uIGZpbGUKCkNvbW1hbmQgT3B0aW9ucwoKICAtbywgLS1vdXRwdXQgc3RyaW5nICAgICAgICAgICAgTWVyZ2VkIGZpbGUgb3V0cHV0IGRpcmVjdG9yeQoKR2xvYmFsIE9wdGlvbnMKCiAgLWMsIC0tY29uZmlnIHN0cmluZyAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGZpbGUgaW4gSlNPTiBvciBZQU1MIGZvcm1hdCB3aGVyZSBzcGVjaWZpY2F0aW9ucyBhcmUgZGVmaW5lZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgaXMgY29uZmlnLmpzb24KICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgICAgICAgICAgIFZlcmJvc2UgbW9kZSwgZGVmYXVsdCBpcyBmYWxzZQogIC1hLCAtLXVybERvd25sb2FkVGVtcGxhdGUgc3RyaW5nICAgUmF0aGVyIHRvIHVzZSBzcGVjcyBmcm9tIGxvY2FsIEZTLCB5b3UgY2FuIHNwZWNpZnkgcmVtb3RlIHNwZWNzICh1c2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FydGlmYWN0JyBjb25maWcgcHJvcGVydHkpIHdoaWNoIHdpbGwgYmUgZG93bmxvYWRlZCBieSB1c2luZyB0aGlzIHVybC4gRnJvbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB1cmwgdGVtcGxhdGUgJ1tBUlRJRkFDVF9JRF0nLCAnW0dST1VQX0lEXScgYW5kICdbVkVSU0lPTl0nIHdpbGwgYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkLgogIC0tZG93bmxvYWRQb29sU2l6ZSBudW1iZXIgICAgICAgICAgUG9vbCBzaXplIHVzZWQgdG8gZG93bmxvYWQgYXJ0aWZhY3RzLCBkZWZhdWx0IGlzICJJbmZpbml0eSIuCmBgYAoKIyMgQ29uZmlndXJhdGlvbiBmaWxlCgpDb25maWd1cmF0aW9uIGZpbGUgaXMgdGhlIG1haW4gaXRlbSB0byBleGVjdXRlIGBvcGVuYXBpLWRldi10b29sYC4gV3JpdHRlbiBpbiBKU09OIG9yIFlBTUwgZm9ybWF0LCB0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBjb250YWlucyB0aGUgc3BlY2lmaWNhdGlvbnMgbGlzdCB0aGF0IGhhdmUgdG8gYmUgc2VydmVkLCBwdWJsaXNoZWQgb3IgbWVyZ2VkLgpJdCBhbHNvIGRlc2NyaWJlcyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgdXNlZCBieSBzcGVjaWZpYyBjb21tYW5kcyAoYXMgZGVzY3JpYmVkIGFib3ZlKS4KCmBgYHlhbWwKewogICAgInNwZWNzIjogWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFycmF5IG9mIHNwZWNpZmljYXRpb25zIChzZXZlcmFsIHNwZWNpZmljYXRpb25zIGNhbiBiZSBleHBvc2VkKQogICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpcnN0IHNwZWNpZmljYXRpb24gZmlsZQogICAgICAgICAgICAiZmlsZSI6ICIuL3BldHN0b3JlLnlhbWwiLCAgICAgICAgICAgICAgIC8vIFJlbGF0aXZlIHBhdGggb2YgdGhlIHNwZWNpZmljYXRpb24gbWFpbiBmaWxlIChvciBmcm9tIGFydGlmYWN0IGFyY2hpdmUpLiBJdCBoYXMgdG8gYmUgYW4gT3BlbkFQSSBmaWxlIGluIFlBTUwgb3IgSlNPTi4KICAgICAgICAgICAgImFydGlmYWN0IjogImdyb3VwSWQ6YXJ0aWZhY3RJZDp2ZXJzaW9uIiAvLyBBcnRpZmFjdCBvZiBzcGVjIGRvd25sb2FkZWQgcmF0aGVyIHRvIGJlIHJlZmVyZW5jZWQgbG9jYWxseQogICAgICAgICAgICAidkZvbGRlcnMiOiAibXlGb2xkZXIiLCAgICAgICAgICAgICAgICAgIC8vIFZpcnR1YWwgZm9sZGVycyB0byBvcmdhbml6ZSBzcGVjcyBkb2N1bWVudGF0aW9uIGludG8gc2V2ZXJhbCBmb2xkZXIuIHZGb2xkZXJzIGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzCiAgICAgICAgICAgICJlbmFibGVkIjogdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW5hYmxlIG9yIG5vdCBzcGVjaWZpY2F0aW9uIGZpbGUgdG8gYXZvaWQgdG8gc2VydmUgLyBwdWJsaXNoIC8gbWVyZ2Ugc29tZSBzcGVjaWZpY2F0aW9uIGZpbGUgKGRlZmF1bHQgaXMgdHJ1ZSkgLS0+IGNhbiBiZSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZQogICAgICAgICAgICAiY29udGV4dCI6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9iamVjdCB1c2VkIGZvciB0ZW1wbGF0ZSBnZW5lcmF0aW9uIChzZWUgVGVtcGxhdGUgdXNhZ2UgY2hhcHRlciBiZWxvdykKICAgICAgICAgICAgICAuLi4KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2Vjb25kIHNwZWNpZmljYXRpb24gZmlsZQogICAgICAgICAgICAiZmlsZSI6ICIuL3BldHN0b3JlMi55YW1sIiwKICAgICAgICAgICAgLi4uCiAgICAgICAgfQogICAgXSwKICAgICJodG1sLWluamVjdG9yIjogW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUbyBjaGFuZ2UgcmVuZGVyIG9mIHBhZ2VzIG9mIHNlcnZlIGNvbW1hbmQgeW91IGNhbiBwcm92aWRlIHlvdXIgb3duIHRlbXBsYXRlIGZpbGVzIGJ1dCB5b3UgY2FuIGFsc28gdXNlIHRoaXMgSFRNTCBpbmplY3RvciB3aGVyZSBlYWNoIGxpbmVzIHdpbGwgYmUgaW5qZWN0ZWQgaW50byBIVE1MCn0KYGBgCgojIyBBZHZhbmNlZCB1c2FnZQoKIyMjIENvbW1hbmQgb3B0aW9ucyBmcm9tIFJDIEZpbGUKCkl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgdGhlIHdob2xlIG9mIGNvbW1hbmQgb3B0aW9ucyBvZiBgcHVibGlzaGAsIGBwdWJsaXNoLWxvY2FsYCwgYHNlcnZlYCwgYG1lcmdlYCBjb21tYW5kcyBieSB1c2luZyBhIHJjIGZpbGUgKGluIEpTT04pIHJhdGhlciB0byBzcGVjaWZ5IHRoZXNlIGZyb20gY29tbWFuZC1saW5lLgpGb3IgZXhhbXBsZToKCmBjYXQgLm9wZW5hcGktZGV2LXRvb2xyY2AKCmBgYAp7CiAgICAgInJlcG9TZXJ2ZXIiOiAiaHR0cHM6Ly9teVNlcnZlci9yZXBvc2l0b3J5L29wZW5hcGkiLAogICAgICJyZXBvVXNlciI6ICJhZG1pbiIsCiAgICAgInJlcG9QYXNzd29yZCI6ICJhZG1pbiIsCiAgICAgImdyb3VwSWQiOiAiY29tLm15Q29tcGFueS5vcGVuYXBpIgp9CmBgYAoKIyMjIFRlbXBsYXRlcyBvdmVycmlkZQoKQnkgZGVmYXVsdCwgdGhlIHNlcnZlIGZlYXR1cmUgcmVuZGVycyBIVE1MIGNvbnRlbnQgYnkgcGFyc2luZyBFSlMgdGVtcGxhdGVzIGRlZmluZWQgaW4gYG9wZW5hcGktZGV2LXRvb2xgIG1vZHVsZToKCi0gYGFwaS5lanNgOiBmb3IgQVBJIExpc3QgcGFnZS4gVGhpcyBwYWdlIGxpc3RzIGFsbCB0aGUgYXZhaWxhYmxlIEFQSXMgYmVmb3JlIGFjY2Vzc2luZyBpdCB3aXRoIFJlZG9jIHZpZXdlcgotIGByZWRvYy5lanNgOiBmb3IgUmVkb2MgcGFnZS4gVGhpcyBwYWdlIGxvYWRzIFJlZG9jIHZpZXdlci4KLSBgc3dhZ2dlci11aS5lanNgOiBmb3IgU3dhZ2dlciBVSSBwYWdlLiBUaGlzIHBhZ2UgbG9hZHMgUmVkb2Mgdmlld2VyLgoKRnJvbSBgdmlld3NGb2xkZXJgIGNvbW1hbmQgb3B0aW9uIG9mIGBzZXJ2ZWAgY29tbWFuZCwgeW91IGNhbiBzcGVjaWZ5IGEgZm9sZGVyIHdoZXJlIHlvdXIgb3duIEVKUyB0ZW1wbGF0ZXMgYXJlIGRlZmluZWQgdGhlIGNoYW5nZSB0aGUgSFRNTCBnZW5lcmF0ZWQuCgpGb3IgZXhhbXBsZSwgYGFwaS5lanNgOgoKYGBgaHRtbAo8IURPQ1RZUEUgaHRtbD4KPGh0bWw+CiAgPGhlYWQ+CiAgICA8dGl0bGU+TXkgQ29tcGFueTwvdGl0bGU+CiAgPGhlYWQ+CiAgPGJvZHk+CiAgPCUgc3BlY3MuZm9yRWFjaChmdW5jdGlvbihzcGVjKXsgJT4KICAgIDxhIGhyZWY9Ii9yZWRvYz9zcGVjTmFtZT08JT1zcGVjLm5hbWUlPiI+PCU9c3BlYy5uYW1lJT48L2E+CiAgPCUgfSk7ICU+CiAgPC9ib2R5Pgo8L2h0bWw+CmBgYAoKRm9yIGVhY2ggdGVtcGxhdGUsIHRoZSBmb2xsb3dpbmcgb2JqZWN0cyBhcmUgbG9hZGVkIGluIEVKUyBjb250ZXh0OgoKLSBgYXBpLmVqc2AKICAtIGBzcGVjc2A6IGFycmF5IG9mIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgd2hlcmUgZWFjaCBgc3BlY2AgaXRlbSBjb250YWlucyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CiAgICAtIGBuYW1lYDogbmFtZSBvZiBzcGVjaWZpY2F0aW9uCiAgICAtIGB2ZXJzaW9uYDogdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uCiAgICAtIGBkZXNjcmlwdGlvbmA6IGRlc2NyaXB0aW9uIGNvbnZlcnRlZCBpbiBIVE1MIChmcm9tIE1hcmtkb3duKQogICAgLSBgdXJsYDogdXJsIHdoZXJlIHNwZWNzIGNhbiBiZSB2aWV3ZWQKICAgIC0gYGZpbGVgOiBmaWxlIG9mIHNwZWNpZmljYXRpb24KICAgIC0gYGNvbnRleHRgOiBjdXJyZW50IGNvbnRleHQKICAgIC0gYHRhZ3NgOiB0YWdzIGxvYWRlZCBieSB1c2luZyB0aGUgYHgtdGFnc2AgdmVuZG9yIGV4dGVuc2lvbgotIGByZWRvYy5lanNgCiAgLSBgc3BlY2A6IG9iamVjdCB3aXRoIG9ubHkgYHVybGAgYXR0cmlidXRlCi0gYHN3YWdnZXItdWkuZWpzYAogIC0gYHNwZWNzYDogYXJyYXkgb2YgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyB3aGVyZSBlYWNoIGBzcGVjYCBpdGVtIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKICAgIC0gYG5hbWVgOiBuYW1lIG9mIHNwZWNpZmljYXRpb24KICAgIC0gYHVybGA6IHVybCB3aGVyZSBzcGVjcyBjYW4gYmUgdmlld2VkCgojIyMgQ29udGV4dCB1c2FnZQoKSXQgaXMgcG9zc2libGUgdG8gc2VydmUsIHB1Ymxpc2ggYW5kIG1lcmdlIGEgc2FtZSBBUEkgZm9yIHNldmVyYWwgY29udGV4dHMuCkZvciBleGFtcGxlLCBmb3Igc29tZSB1c2UtY2FzZXMgYSBzYW1lIEFQSSBzaG91bGQgYmUgdXNlZCBpbiBzZXZlcmFsIGNvbnRleHRzOiBmcm9tIGN1c3RvbWVycyAocHVibGljIGFjY2VzcykgYW5kIGZyb20gaW50ZXJuYWwgc3lzdGVtcyAocHJpdmF0ZSBhY2Nlc3MpLiBUaGUgQVBJIGlzIGV4YWN0bHkgdGhlIHNhbWUsIG9ubHkgdGhlIGF1dGhlbnRpY2F0aW9uIGxheWVyIGNvdWxkIGJlIGRpZmZlcmVudC4gVG8gYXZvaWQgZHVwbGljYXRpbmcgeW91ciBPcGVuQVBJIHNwZWNpZmljYXRpb24sIHlvdSBjYW4gdXNlIHRoZSBzYW1lIEFQSSBleGVjdXRlZCBpbiB0d28gY29udGV4dHMgKHB1YmxpYyBhbmQgcHJpdmF0ZSkuCgpUbyBkbyB0aGF0LCB5b3UgY2FuIHVzZSBFSlMgdGVtcGxhdGUgZGlyZWN0bHkgaW4geW91ciBPcGVuQVBJIGZpbGVzIHRvIHNwZWNpZnkgZGlmZmVyZW50IGJlaGF2aW9ycyB3aGVyZSBgY29udGV4dGAgc3BlY2lmaWVkIGluIENvbmZpZ3VyYXRpb24gZmlsZSB3aWxsIGJlIHVzZWQgZm9yIHJlbmRlcmluZy4gRm9yIGV4YW1wbGUgZm9yIHB1YmxpYyBhY2Nlc3MsIHdlIHdhbnQgdG8gYWRkIGEgc2VjdXJpdHkgbGF5ZXIgd2hpY2ggZG9lc24ndCBleGlzdCBmb3IgaW50ZXJuYWwgYWNjZXNzOgoKYHNwZWNzLnlhbWxgCgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCi4uLgoKY29tcG9uZW50czoKPCVpZiAocHVibGljKSB7ICU+CiAgc2VjdXJpdHlTY2hlbWVzOgogICAgYmFzaWNBdXRoOgogICAgICB0eXBlOiBodHRwCiAgICAgIHNjaGVtZTogYmFzaWMKPCUgfSAlPgoKLi4uCgo8JWlmIChwdWJsaWMpIHsgJT4Kc2VjdXJpdHk6Ci0gYmFzaWNBdXRoOiBbXQo8JSB9ICU+Ci4uLgpgYGAKClRoaXMgc3BlY2lmaWNhdGlvbiBjb3VsZCBiZSB1c2VkIGluIHNldmVyYWwgY29udGV4dHMgKHB1YmxpYyBvciBpbnRlcm5hbCk6CgpgY29uZmlnLmpzb25gCgpgYGBqc29uCnsKICAic3BlY3MiOiBbCiAgICB7CiAgICAgICJmaWxlIjogIi4vc3BlY3Mvc3BlY3MueWFtbCIsCiAgICAgICJjb250ZXh0IjogewogICAgICAgICJwdWJsaWMiOiBmYWxzZQogICAgICB9CiAgICB9LAogICAgewogICAgICAiZmlsZSI6ICIuL3NwZWNzL3NwZWNzLnlhbWwiLAogICAgICAiY29udGV4dCI6IHsKICAgICAgICAicHVibGljIjogdHJ1ZQogICAgICB9CiAgICB9CiAgXQp9CmBgYAoKIyMjIFRhZ3MgdXNhZ2UKCkluIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMsIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSBhIGBUYWdgIG9iamVjdCB0byBncm91cCBvcGVyYXRpb25zIGluIHNldmVyYWwgY2F0ZWdvcmllcy4gSXQgaXMgZ3JlYXQgdG8gb3JnYW5pemUgb3VyIHNwZWNpZmljYXRpb25zIGJ1dCBpdCBpcyBub3QgdXNhYmxlIHRvIHRhZyBhbGwgdGhlIE9wZW5BUEkgZmlsZXMuIEZvciBleGFtcGxlLCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHNwZWNpZmljYXRpb24gaXMgcHVibGljLCBpbnRlcm5hbCwgZXRjLgoKVG8gY292ZXIgdGhpcyBuZWVkLCB3ZSB1c2UgYW4gT3BlbkFQSSB2ZW5kb3IgZXh0ZW5zaW9uIGB4LXRhZ3NgIGluIGBJbmZvYCBvYmplY3QuIFRoaXMgbmV3IGZpZWxkIGlzIGEgc3RyaW5nIGFycmF5IHRoYXQgY29udGFpbnMgdGFncyBvZiB0aGUgY3VycmVudCBzcGVjaWZpY2F0aW9uLgoKRm9yIGV4YW1wbGU6CmBzcGVjcy55YW1sYAoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAoKaW5mbzoKICB2ZXJzaW9uOiAxLjAuMAogIHgtdGFnczoKICAgIC0gcHVibGljCmBgYAoKVGhlc2UgdGFncyBhcmUgZGlzcGxheWVkIGluIEFQSSBwYWdlcyAoYmVmb3JlIFJlZG9jIHBhZ2UpLgoKIyMgTGljZW5zZQoKW0FwYWNoZSAyLjAgTGljZW5zZV0oTElDRU5TRSkK readmeEtag: '"4443086610d29be5c6f0b6d2a4f3776fc1bb20f0"' readmeLastModified: Thu, 13 Nov 2025 13:47:51 GMT repositoryId: 310225760 description: >- OpenAPI Dev Tool proposes to developers a unique tool to address development and industrialization needs! created: '2020-11-05T07:50:31Z' updated: '2025-11-13T13:47:56Z' language: JavaScript archived: false stars: 48 watchers: 7 forks: 8 owner: lyra logo: https://avatars.githubusercontent.com/u/572508?v=4 license: Apache-2.0 repoEtag: '"dc1552fba804cc29a7c7cbe49bb8bcb18fbc7a07a0639dfd126fa67e8c1a0415"' repoLastModified: Thu, 13 Nov 2025 13:47:56 GMT foundInMaster: true id: 921cd13437e80edc1d65f659e39df975 v3_1: true - source: https://openapi.tools/ name: portman category: - Testing - Converters link: https://getportman.com/ repository: https://github.com/apideck-libraries/portman language: Node.js source_description: >- Port OpenAPI Spec to Postman Collection, with contract & variation tests included! v2: false v3: true repositoryMetadata: base64Readme: >- IVtwb3J0bWFuLWhlcm9dKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzExMTIxMjkvMTI1ODMzNTEyLWMzMjM1OWQ4LWFmMjctNDk1Yi04MjExLTc0NGM1MDQxNDZiMi5wbmcpCgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYXBpZGVjay9wb3J0bWFuIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXBpZGVjay9wb3J0bWFuLnN2ZyIgYWx0PSJUb3RhbCBEb3dubG9hZHMiPjwvYT4KICA8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYXBpZGVjay9wb3J0bWFuIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZHcvQGFwaWRlY2svcG9ydG1hbi5zdmciIGFsdD0iTGF0ZXN0IFN0YWJsZSBWZXJzaW9uIj48L2E+CjwvcD4KCiMgUG9ydG1hbiDwn5Go8J+PveKAjfCfmoAKClBvcnQgT3BlbkFQSSBTcGVjIHRvIFBvc3RtYW4gQ29sbGVjdGlvbiwgd2l0aCBjb250cmFjdCAmIHZhcmlhdGlvbiB0ZXN0cyBpbmNsdWRlZCEKClBvcnRtYW4gbGV2ZXJhZ2VzIE9wZW5BUEkgZG9jdW1lbnRzLCB3aXRoIGFsbCBpdHMgZGVmaW5lZCBBUEkgcmVxdWVzdC9yZXNwb25zZSBwcm9wZXJ0aWVzLCB0byBwb3dlciB5b3VyIFBvc3RtYW4gY29sbGVjdGlvbi4KTGV0IFBvcnRtYW4gZG8gYWxsIHRoZSB3b3JrIGFuZCBpbmplY3QgY29udHJhY3QgJiB2YXJpYXRpb24gdGVzdHMgd2l0aCBhIG1pbmltdW0gb2YgY29uZmlndXJhdGlvbi4KQ3VzdG9taXplIHRoZSBQb3N0bWFuIHJlcXVlc3RzICYgdmFyaWFibGVzIHdpdGggYSB3aWRlIHJhbmdlIG9mIG9wdGlvbnMgdG8gYXNzaWduICYgb3ZlcndyaXRlIHZhcmlhYmxlcy4KCj4gWyFJTVBPUlRBTlRdICAKPiAqKkltcG9ydGFudCBDaGFuZ2U6KiogSWYgeW91IGFyZSB1c2luZyB2ZXJzaW9uIDEuMjguMCB3aXRoIGEgY3VzdG9tIFBvc3RtYW4gY29uZmlnIGZpbGUgc3BlY2lmaWVkIGJ5IHRoZSBgLS1wb3N0bWFuQ29uZmlnRmlsZWAgZmxhZywgcGxlYXNlIGVuc3VyZSB0aGF0IHRoZSBgcGFyYW1ldGVyc1Jlc29sdXRpb25gIG9wdGlvbiBpcyBzZXQgdG8gZWl0aGVyICJFeGFtcGxlIiBvciAiU2NoZW1hIi4gVGhlIG9wdGlvbnMgYHJlcXVlc3RQYXJhbWV0ZXJzUmVzb2x1dGlvbmAgYW5kIGBleGFtcGxlUGFyYW1ldGVyc1Jlc29sdXRpb25gIGFyZSBkZXByZWNhdGVkIG9wZW5hcGktdG8tcG9zdG1hbiBvcHRpb25zLgoKIyMgV2h5IHVzZSBQb3J0bWFuPwoKQ29udmVydCB5b3VyIE9wZW5BUEkgc3BlYyB0byBQb3N0bWFuLCBnZW5lcmF0ZSBjb250cmFjdCAmIHZhcmlhdGlvbiB0ZXN0cywgdXBsb2FkIHRoZSBQb3N0bWFuIGNvbGxlY3Rpb24gJiBydW4gdGhlIHRlc3RzIHRocm91Z2ggTmV3bWFuLgpJbmNsdWRlIHRoZSBQb3J0bWFuIENMSSBhcyBwYXJ0IG9mIGFuIGF1dG9tYXRlZCBwcm9jZXNzIGZvciBpbmplY3RpbmcgdGhlIHBvd2VyIG9mIFBvcnRtYW4gZGlyZWN0bHkgaW50byB5b3VyIENJL0NEIHBpcGVsaW5lLgoKW1JlYWQgdGhlIGZ1bGwgYmxvZyBwb3N0XShodHRwczovL2Jsb2cuYXBpZGVjay5jb20vYW5ub3VuY2luZy1wb3J0bWFuKQoKIyMgRmVhdHVyZXMKCldpdGggUG9ydG1hbiwgeW91IGNhbjoKCi0gW3hdIENvbnZlcnQgYW4gT3BlbkFQSSBkb2N1bWVudCB0byBhIFBvc3RtYW4gY29sbGVjdGlvbgogIC0gW3hdIFN1cHBvcnQgZm9yIE9wZW5BUEkgMy4wCiAgLSBbeF0gU3VwcG9ydCBmb3IgT3BlbkFQSSAzLjEKLSBFeHRlbmQgdGhlIFBvc3RtYW4gY29sbGVjdGlvbiB3aXRoIGNhcGFiaWxpdGllcwogIC0gW3hdIEluamVjdCBQb3N0bWFuIENvbnRyYWN0IFRlc3RzIC0gW2xlYXJuIG1vcmVdKC4vZXhhbXBsZXMvdGVzdHN1aXRlLWNvbnRyYWN0LXRlc3RzL3JlYWRtZS5tZCkKICAtIFt4XSBBc3NpZ24gY29sbGVjdGlvbiB2YXJpYWJsZXMgLSBbbGVhcm4gbW9yZV0oLi9leGFtcGxlcy90ZXN0c3VpdGUtYXNzaWduLXZhcmlhYmxlcy9yZWFkbWUubWQpCiAgLSBbeF0gSW5qZWN0IFBvc3RtYW4gVmFyaWF0aW9uIFRlc3RzIC0gW2xlYXJuIG1vcmVdKC4vZXhhbXBsZXMvdGVzdHN1aXRlLXZhcmlhdGlvbi10ZXN0cy9yZWFkbWUubWQpCiAgLSBbeF0gSW5qZWN0IFBvc3RtYW4gSW50ZWdyYXRpb24gVGVzdHMKICAtIFt4XSBJbmplY3QgUG9zdG1hbiB3aXRoIFByZS1yZXF1ZXN0ICYgVGVzdHMgc2NyaXB0cyBvbiBhIGNvbGxlY3Rpb24gb3Igb3BlcmF0aW9uIGxldmVsIC0gW2xlYXJuIG1vcmVdKC4vZXhhbXBsZXMvdGVzdHN1aXRlLXByZS1yZXF1ZXN0LXNjcmlwdHMvcmVhZG1lLm1kKQogIC0gW3hdIE1vZGlmeSBQb3N0bWFuIHJlcXVlc3RzIC0gbGVhcm4gbW9yZSBbaGVyZV0oLi9leGFtcGxlcy90ZXN0c3VpdGUtb3ZlcndyaXRlcy9yZWFkbWUubWQpIGFuZCBbaGVyZV0oLi9leGFtcGxlcy90ZXN0c3VpdGUtYXNzaWduLW92ZXJ3cml0ZS9yZWFkbWUubWQpCiAgLSBbeF0gRnV6eiBQb3N0bWFuIHJlcXVlc3RzIC0gW2xlYXJuIG1vcmVdKC4vZXhhbXBsZXMvdGVzdHN1aXRlLWZ1enppbmctdGVzdHMvcmVhZG1lLm1kKQotIFt4XSBVcGxvYWQgdGhlIFBvc3RtYW4gY29sbGVjdGlvbiB0byB5b3VyIFBvc3RtYW4gYXBwIC0gW2xlYXJuIG1vcmVdKCNjb25maWd1cmUtYXV0b21hdGljLXVwbG9hZC10by1wb3N0bWFuLWFwcCkKLSBbeF0gVGVzdCB0aGUgUG9zdG1hbiBjb2xsZWN0aW9uIHdpdGggTmV3bWFuIC0gW2xlYXJuIG1vcmVdKCNydW4tbmV3bWFuLXdpdGgtbmV3bWFuLW9wdGlvbnMpCi0gW3hdIFNwbGl0IHRoZSBjb25maWd1cmF0aW9uIGludG8gbXVsdGlwbGUgZmlsZXMgdXNpbmcgJHJlZgotIFt4XSBNYW5hZ2UgZXZlcnl0aGluZyBpbiBjb25maWcgZmlsZSBmb3IgZWFzeSBsb2NhbCBvciBDSS9DRCB1c2FnZSAtIFtsZWFybiBtb3JlXSgjcGFzcy1hbGwtY2xpLW9wdGlvbnMtYXMtanNvbnlhbWwtZmlsZSkKCiMjIEdldHRpbmcgc3RhcnRlZAoKMS4gW0luc3RhbGwgUG9ydG1hbl0oI2luc3RhbGxhdGlvbikKMi4gSW5pdGlhbGl6ZSBQb3J0bWFuIENMSSBjb25maWd1cmF0aW9uIGJ5IHJ1bm5pbmc6IGAkIHBvcnRtYW4gLS1pbml0YAoKT1IKCjEuIFtJbnN0YWxsIFBvcnRtYW5dKCNpbnN0YWxsYXRpb24pCjIuIENvcHkgYC5lbnYuZXhhbXBsZWAgdG8gYC5lbnZgIGFuZCBhZGQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHlvdSBuZWVkIGF2YWlsYWJsZSB0byB5b3VyIGNvbGxlY3Rpb24KMy4gQ29weS9yZW5hbWUgYW5kIGN1c3RvbWl6ZSBlYWNoIG9mIHRoZSBcX1xfXF9cXy5kZWZhdWx0Lmpzb24gY29uZmlnIGZpbGVzIGluIHRoZSByb290IGRpcmVjdG9yeSB0byBzdWl0IHlvdXIgbmVlZHMKNC4gU3RhcnQgY29udmVydGluZyB5b3VyIE9wZW5BUEkgZG9jdW1lbnQgdG8gUG9zdG1hbgoKT1IKCklmIHlvdSBoYXZlIGFuIGV4aXN0aW5nIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiwgdHJ5IHJ1bm5pbmcgUG9ydG1hbiB3aXRob3V0IGFueSBzcGVjaWFsIHNldHVwIHRvIHNlZSBob3cgaXQgY2FuIGdlbmVyYXRlIGEgUG9zdG1hbiBjb2xsZWN0aW9uIHdpdGggY29udHJhY3QgdGVzdHMgd2l0aCBpdCdzIGRlZmF1bHQgY29uZmlndXJhdGlvbi4KCjEuIFtJbnN0YWxsIFBvcnRtYW5dKCNpbnN0YWxsYXRpb24pCjIuIFJ1biBwb3J0bWFuIG9uIHlvdXIgT3BlbkFQSSBzcGVjLCBpZTogCi0gYG5weCBwb3J0bWFuIC1sIG15LW9wZW5hcGktc3BlYy55YW1sYCAKLSAoaWYgeW91ciBzcGVjIGlzIGhvc3RlZCB1c2UgdGhlIGAtdWAgcGFyYW1ldGVyLCBpZToKICAtIGBucHggcG9ydG1hbiAtdSBodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92My9vcGVuYXBpLmpzb25gCgpUaGlzIHdpbGwgZ2VuZXJhdGUgYSBwb3N0bWFuIGNvbGxlY3Rpb24gdGhhdCBjb250YWlucyBhIHJlcXVlc3QgZm9yIGV2ZXJ5IG1ldGhvZDplbmRwb2ludCBjb21iaW5hdGlvbiBkZWZpbmVkIGluIHlvdXIgc3BlYywgYW5kIGluY2x1ZGUgYSBzZXQgb2YgIkNvbnRyYWN0IFRlc3RzIiBmb3IgZWFjaCBvbmUuICBZb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgY29udHJhY3QgdGVzdHMsIGFuZCBob3cgdG8gZXhhbWluZSB0aGUgZ2VuZXJhdGVkIGNvbGxlY3Rpb24gW2hlcmVdKC4vZXhhbXBsZXMvdGVzdHN1aXRlLWNvbnRyYWN0LXRlc3RzL3JlYWRtZS5tZCkuCgooUnVubmluZyBwb3J0bWFuIHdpdGggbm8gZXhwbGljaXQgY29uZmlndXJhdGlvbiBpcyB0aGUgc2FtZSBhcyBydW5uaW5nIGl0IHdpdGggW3RoaXMgY29uZmlndXJhdGlvbiBmaWxlXSguL2V4YW1wbGVzL3Rlc3RzdWl0ZS1jb250cmFjdC10ZXN0cy9kZWZhdWx0LXBvcnRtYW4tY29uZmlnLmpzb24pKQoKQWxsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBjb252ZXJ0IGZyb20gT3BlbkFQSSB0byBQb3N0bWFuIGNhbiBiZSBmb3VuZCBpbiB0aGUgW29wZW5hcGktdG8tcG9zdG1hbl0oaHR0cHM6Ly9naXRodWIuY29tL3Bvc3RtYW5sYWJzL29wZW5hcGktdG8tcG9zdG1hbi9ibG9iL2RldmVsb3AvT1BUSU9OUy5tZCkgcGFja2FnZSBkb2N1bWVudGF0aW9uLgpBbGwgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGZpbHRlciBmbGFncy90YWdzL21ldGhvZHMvb3BlcmF0aW9ucy8uLi4gZnJvbSBPcGVuQVBJIGNhbiBiZSBmb3VuZCBpbiB0aGUgW29wZW5hcGktZm9ybWF0XShodHRwczovL2dpdGh1Yi5jb20vdGhpbTgxL29wZW5hcGktZm9ybWF0I29wZW5hcGktZmlsdGVyLW9wdGlvbnMpIHBhY2thZ2UgZG9jdW1lbnRhdGlvbiBvciB1c2luZyB0aGUgb25saW5lIFtvcGVuYXBpLWZvcm1hdCBwbGF5Z3JvdW5kXShodHRwczovL29wZW5hcGktZm9ybWF0LXBsYXlncm91bmQudmVyY2VsLmFwcC8pLgoKIyMgSW5zdGFsbGF0aW9uCgojIyMgTG9jYWwgSW5zdGFsbGF0aW9uIChyZWNvbW1lbmRlZCkKCllvdSBjYW4gYWRkIHRoZSBQb3J0bWFuIENMSSB0byB0aGUgYG5vZGVfbW9kdWxlc2AgYnkgdXNpbmc6CgpgYGBzaGVsbAokIG5wbSBpbnN0YWxsIC0tc2F2ZSBAYXBpZGVjay9wb3J0bWFuCmBgYAoKb3IgdXNpbmcgeWFybjoKCmBgYHNoZWxsCiQgeWFybiBhZGQgQGFwaWRlY2svcG9ydG1hbgpgYGAKCk5vdGUgdGhhdCB0aGlzIHdpbGwgcmVxdWlyZSB5b3UgdG8gcnVuIHRoZSBQb3J0bWFuIENMSSB3aXRoIGBucHggQGFwaWRlY2svcG9ydG1hbiAtbCB5b3VyLW9wZW5hcGktZmlsZS55YW1sYCBvciwgaWYKeW91IGFyZSB1c2luZyBhbiBvbGRlciB2ZXJzaW9uIG9mIG5wbSwgYC4vbm9kZV9tb2R1bGVzLy5iaW4vcG9ydG1hbiAtbCB5b3VyLW9wZW5hcGktZmlsZS55YW1sYC4KCiMjIyBHbG9iYWwgSW5zdGFsbGF0aW9uCgpgYGBzaGVsbAokIG5wbSBpbnN0YWxsIC1nIEBhcGlkZWNrL3BvcnRtYW4KYGBgCgojIyMgTlBYIHVzYWdlCgpUbyBleGVjdXRlIHRoZSBDTEkgd2l0aG91dCBpbnN0YWxsaW5nIGl0IHZpYSBucG0sIHVzZSB0aGUgbnB4IG1ldGhvZC4KCmBgYHNoZWxsCiQgbnB4IEBhcGlkZWNrL3BvcnRtYW4gLWwgeW91ci1vcGVuYXBpLWZpbGUueWFtbApgYGAKCiMjIENMSSBVc2FnZQoKYGBgClVzYWdlOiAtdSA8dXJsPiAtbCA8bG9jYWw+IC1iIDxiYXNlVXJsPiAtdCA8aW5jbHVkZVRlc3RzPgoKT3B0aW9uczoKIC0taGVscCAgICAgICAgICAgICAgICAgICAgIFNob3cgaGVscCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXQogLS12ZXJzaW9uICAgICAgICAgICAgICAgICAgU2hvdyB2ZXJzaW9uIG51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dCiAtLXVybCwtdSAgICAgICAgICAgICAgICAgICBVUkwgb2YgT0FTIHRvIHBvcnQgdG8gUG9zdG1hbiBjb2xsZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogLS1sb2NhbCwgLWwgICAgICAgICAgICAgICAgVXNlIGxvY2FsIE9BUyB0byBwb3J0IHRvIFBvc3RtYW4gY29sbGVjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tYmFzZVVybCwgLWIgICAgICAgICAgICAgIE92ZXJyaWRlIHNwZWMgYmFzZVVybCB0byB1c2UgaW4gUG9zdG1hbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLW91dHB1dCwgLW8gICAgICAgICAgICAgICBXcml0ZSB0aGUgUG9zdG1hbiBjb2xsZWN0aW9uIHRvIGFuIG91dHB1dCBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogLS1vYU91dHB1dCAgICAgICAgICAgICAgICAgV3JpdGUgdGhlIChmaWx0ZXJlZCkgT3BlbkFQSSBmaWxlIHRvIGFuIG91dHB1dCBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tcnVuTmV3bWFuLCAtbiAgICAgICAgICAgIFJ1biBOZXdtYW4gb24gbmV3bHkgY3JlYXRlZCBjb2xsZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXQogLS1uZXdtYW5SdW5PcHRpb25zICAgICAgICAgSlNPTiBzdHJpbmdpZmllZCBvYmplY3QgdG8gcGFzcyBvcHRpb25zIGZvciBjb25maWd1cmluZyBOZXdtYW4gICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tbmV3bWFuT3B0aW9uc0ZpbGUgICAgICAgIFBhdGgvVVJMIHRvIE5ld21hbiBvcHRpb25zIGZpbGUgdG8gcGFzcyBvcHRpb25zIGZvciBjb25maWd1cmluZyBOZXdtYW4gICAgICAgICAgIFtzdHJpbmddCiAtLW5ld21hbkl0ZXJhdGlvbkRhdGEsIC1kICBJdGVyYXRpb24gZGF0YSB0byBydW4gTmV3bWFuIHdpdGggbmV3bHkgY3JlYXRlZCBjb2xsZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogLS1sb2NhbFBvc3RtYW4gICAgICAgICAgICAgVXNlIGxvY2FsIFBvc3RtYW4gY29sbGVjdGlvbiwgc2tpcHMgT3BlbkFQSSBjb252ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tc3luY1Bvc3RtYW4gICAgICAgICAgICAgIFVwbG9hZCBnZW5lcmF0ZWQgY29sbGVjdGlvbiB0byBQb3N0bWFuIChkZWZhdWx0OiBmYWxzZSkgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXQogLS1zeW5jUG9zdG1hbkNvbGxlY3Rpb25JZHMgU3luY2hyb25pc2VzIHRoZSBJRHMgb2YgbmV3bHkgY3JlYXRlZCBwb3N0bWFuIGNvbGxlY3Rpb25zIHdpdGggdGhvc2UgYWxyZWFkeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gUG9zdG1hbiwgdXNlZnVsIHdoZW4geW91IHdhbnQgdG8gdXNlIFBvc3RtYW4gcHVsbCByZXF1ZXN0IChkZWZhdWx0OiBmYWxzZSkgICAgW2Jvb2xlYW5dCiAtLXBvc3RtYW5GYXN0U3luYyAgICAgICAgICBQb3N0bWFuIHN5bmMgY3JlYXRlcyBuZXcgY29sbGVjdGlvbiAobmV3IFVJRCksaW5zdGVhZCBvZiB1cGRhdGUgKGRlZmF1bHQ6IGZhbHNlKSBbYm9vbGVhbl0KIC0tcG9zdG1hblJlZnJlc2hDYWNoZSAgICAgIFBvc3RtYW4gc3luYyB3aWxsIHJlZnJlc2ggYWxsIGxvY2FsIGNhY2hlZCBQb3N0bWFuIEFQSSBkYXRhIChkZWZhdWx0OiBmYWxzZSkgICAgIFtib29sZWFuXQogLS1wb3N0bWFuVWlkLCAtcCAgICAgICAgICAgUG9zdG1hbiBjb2xsZWN0aW9uIFVJRCB0byB1cGxvYWQgd2l0aCB0aGUgZ2VuZXJhdGVkIFBvc3RtYW4gY29sbGVjdGlvbiAgICAgICAgICAgW3N0cmluZ10KIC0tcG9zdG1hbldvcmtzcGFjZU5hbWUgICAgIFBvc3RtYW4gV29ya3NwYWNlIG5hbWUgdG8gdGFyZ2V0IHRoZSB1cGxvYWQgb2YgdGhlIGdlbmVyYXRlZCBQb3N0bWFuIGNvbGxlY3Rpb24gIFtzdHJpbmddCiAtLWluY2x1ZGVUZXN0cywgLXQgICAgICAgICBJbmplY3QgUG9ydG1hbiB0ZXN0IHN1aXRlIChkZWZhdWx0OiB0cnVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KIC0tYnVuZGxlQ29udHJhY3RUZXN0cyAgICAgIEJ1bmRsZSBQb3J0bWFuIGNvbnRyYWN0IHRlc3RzIGluIGEgc2VwYXJhdGUgZm9sZGVyIGluIFBvc3RtYW4gKGRlZmF1bHQ6IGZhbHNlKSAgIFtib29sZWFuXQogLS1wb3J0bWFuQ29uZmlnRmlsZSwgLWMgICAgUGF0aC9VUkwgdG8gUG9ydG1hbiBzZXR0aW5ncyBjb25maWcgZmlsZSAocG9ydG1hbi1jb25maWcuanNvbikgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tcG9zdG1hbkNvbmZpZ0ZpbGUsLXMgICAgIFBhdGggdG8gb3BlbmFwaS10by1wb3N0bWFuIGNvbmZpZyBmaWxlIChwb3N0bWFuLWNvbmZpZy5qc29uKSAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLWZpbHRlckZpbGUgICAgICAgICAgICAgICBQYXRoL1VSTCB0byBvcGVuYXBpLWZvcm1hdCBjb25maWcgZmlsZSAob2FzLWZvcm1hdC1maWx0ZXIuanNvbikgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogLS1lbnZGaWxlICAgICAgICAgICAgICAgICAgUGF0aCB0byB0aGUgLmVudiBmaWxlIHRvIGluamVjdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tY29sbGVjdGlvbk5hbWUgICAgICAgICAgIE92ZXJ3cml0ZSBPcGVuQVBJIHRpdGxlIHRvIHNldCB0aGUgUG9zdG1hbiBjb2xsZWN0aW9uIG5hbWUgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLWNsaU9wdGlvbnNGaWxlICAgICAgICAgICBQYXRoL1VSTCB0byBQb3J0bWFuIENMSSBvcHRpb25zIGZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogLS1pZ25vcmVDaXJjdWxhclJlZnMgICAgICAgSWdub3JlIGNpcmN1bGFyIHJlZmVyZW5jZXMgaW4gT3BlbkFQSSBzcGVjIChkZWZhdWx0OiBmYWxzZSkgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dCiAtLWxvZ0Fzc2lnblZhcmlhYmxlcyAgICAgICBUb2dnbGUgbG9nZ2luZyBvZiBhc3NpZ25lZCB2YXJpYWJsZXMgKGRlZmF1bHQ6IHRydWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KIC0td2Fybi8tLW5vLXdhcm4gICAgICAgICAgIFRvZ2dsZSB3YXJuaW5ncyBmb3IgbWlzc2luZyBvcGVuQXBpT3BlcmF0aW9uSWRzIChkZWZhdWx0OiB0cnVlKSAgICAgICAgICAgICAgICAgIFtib29sZWFuXQogLS1pbml0ICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJlIFBvcnRtYW4gQ0xJIG9wdGlvbnMgaW4gYW4gaW50ZXJhY3RpdmUgbWFubmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tZXh0cmFVbmtub3duRm9ybWF0cyAgICAgIEFkZCBleHRyYSB1bmtub3duIGZvcm1hdHMgdG8ganNvbiBzY2hlbWEgdGVzdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheV0KYGBgCgojIyMgRW52aXJvbm1lbnQgdmFyaWFibGVzIGFzIFBvc3RtYW4gdmFyaWFibGVzCgpQb3J0bWFuIHVzZXMgYGRvdGVudmAgdG8gbm90IG9ubHkgYWNjZXNzIHZhcmlhYmxlcyBmb3IgZnVuY3Rpb25hbGl0eSwgYnV0IHlvdSBjYW4gYWxzbyBhZGQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgeW91J2QgbGlrZSBkZWNsYXJlZCB3aXRoaW4geW91ciBQb3N0bWFuIGVudmlyb25tZW50LgpTaW1wbHkgcHJlZml4IGFueSB2YXJpYWJsZSBuYW1lIHdpdGggYFBPUlRNQU5fYCwgYW5kIGl0IHdpbGwgYmUgYXZhaWxhYmxlIGZvciB1c2UgaW4geW91ciBQb3N0bWFuIGNvbGxlY3Rpb24gYXMgdGhlIGNhbWVsLWNhc2VkIGVxdWl2YWxlbnQuIEZvciBleGFtcGxlOgoKYGBgClBPUlRNQU5fQ09OU1VNRVJfSUQ9dGVzdF91c2VyX2lkCmBgYAoKd2lsbCBiZSBhdmFpbGFibGUgaW4geW91ciBjb2xsZWN0aW9uIG9yIHRlc3RzIGJ5IHJlZmVyZW5jaW5nOgoKYGBgCnt7Y29uc3VtZXJJZH19CmBgYAoKSXQgaXMgcG9zc2libGUgdG8gc2V0IGEgc3BlYy1zcGVjaWZpYyBgLmVudmAgZmlsZSwgdGhhdCBsaXZlcyBuZXh0IHRvIHlvdXIgY29uZmlnIGZpbGVzLiBUaGUgcGF0aCBjYW4gYmUgcGFzc2VkIGluIHZpYSBgZW52RmlsZWAgY2xpIG9wdGlvbi4KVGhpcyBpcyB1c2VmdWwgaWYgeW91IGhhdmUgUG9ydG1hbiBtYW5hZ2luZyBtdWx0aXBsZSBzcGVjcyB0aGF0IGhhdmUgdW5pcXVlIGVudmlyb25tZW50IHJlcXVpcmVtZW50cy4KCkJ5IGRlZmF1bHQsIFBvcnRtYW4gd2lsbCBsZXZlcmFnZSBhbnkgRU5WSVJPTk1FTlQgdmFyaWFibGUgdGhhdCBpcyBkZWZpbmVkIHRoYXQgc3RhcnRzIHdpdGggYFBPUlRNQU5fYC4KCkFub3RoZXIgb3B0aW9uIHRvIHNldCB2YXJpYWJsZXMgaXMgYnkgY29uZmlndXJpbmcgdGhlbSBhcyBgY29sbGVjdGlvblZhcmlhYmxlc2AgaW4gdGhlIFtnbG9iYWxzIHNlY3Rpb25dKCNwb3J0bWFuLS0tZ2xvYmFscy1wcm9wZXJ0eSkgb2YgeW91ciBQb3J0bWFuIGNvbmZpZ3VyYXRpb24uCgojIyMgQ0xJIE9wdGlvbnMKCiMjIyMjIyBJbml0aWFsaXplIFBvcnRtYW4gQ0xJIGNvbmZpZ3VyYXRpb24KCmBgYApwb3J0bWFuIC0taW5pdApgYGAKClRoZSBgaW5pdGAgb3B0aW9uIHdpbGwgaGVscCB5b3UgdG8gY29uZmlndXJlIHRoZSBjbGlDb25maWcgb3B0aW9ucyBhbmQgcHV0IHRoZSBkZWZhdWx0IGNvbmZpZywgZW52IGZpbGUgaW4gcGxhY2UgdG8ga2ljay1zdGFydCB0aGUgdXNhZ2Ugb2YgUG9ydG1hbi4KCiMjIyMjIyBQYXNzIGluIHRoZSByZW1vdGVseSBob3N0ZWQgc3BlYwoKYGBgCnBvcnRtYW4gLXUgaHR0cHM6Ly9zcGVjcy5hcGlkZWNrLmNvbS9jcm0ueW1sCmBgYAoKIyMjIyMjIE92ZXJ3cml0ZSB0aGUgYmFzZVVybCBpbiBzcGVjIGFuZCBydW4gTmV3bWFuCgpgYGAKcG9ydG1hbiAtdSBodHRwczovL3NwZWNzLmFwaWRlY2suY29tL2NybS55bWwgLWIgaHR0cDovL2xvY2FsaG9zdDozMDUwIC1uIHRydWUKYGBgCgojIyMjIyMgUGF0aCBwYXNzIHRvIGEgbG9jYWwgZGF0YSBmaWxlIGZvciBOZXdtYW4gdG8gdXNlIGZvciBpdGVyYXRpb25zCgpgYGAKcG9ydG1hbiAtdSBodHRwczovL3NwZWNzLmFwaWRlY2suY29tL2NybS55bWwgLWIgaHR0cDovL2xvY2FsaG9zdDozMDUwIC1uIHRydWUgLWQgLi90bXAvbmV3bWFuL2RhdGEvY3JtLmpzb24KYGBgCgojIyMjIyMgUGFzcyB0aGUgcGF0aCB0byBhIGxvY2FsIHNwZWMgKHVzZWZ1bCB3aGVuIHVwZGF0aW5nIHlvdXIgc3BlY3MpIGFuZCBvdXRwdXQgUG9zdG1hbiBjb2xsZWN0aW9uIGxvY2FsbHkKCmBgYApwb3J0bWFuIC1sIC4vdG1wL3NwZWNzL2NybS55bWwgLW8gLi90bXAvc3BlY3MvY3JtLnBvc3RtYW4uanNvbgpgYGAKCiMjIyMjIyBTa2lwIHRlc3RzIGFuZCBqdXN0IGdlbmVyYXRlIGNvbGxlY3Rpb24KCmBgYApwb3J0bWFuIC1sIC4vdG1wL3NwZWNzL2NybS55bWwgLXQgZmFsc2UKYGBgCgojIyMjIyMgRmlsdGVyIE9wZW5BUEkgYW5kIGdlbmVyYXRlIGNvbGxlY3Rpb24KCmBgYApwb3J0bWFuIC11IGh0dHBzOi8vc3BlY3MuYXBpZGVjay5jb20vY3JtLnltbCAtLWZpbHRlckZpbGUgZXhhbXBsZXMvY2xpLWZpbHRlcmluZy9vYXMtZm9ybWF0LWZpbHRlci5qc29uCmBgYAoKRm9yIG1vcmUgZGV0YWlscywgcmV2aWV3IHRoZSBbY2xpLWZpbHRlcmluZyBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvY2xpLWZpbHRlcmluZykuCgojIyMjIyMgQWRkIGV4dHJhIGZvcm1zIHRvIEpzb24gc2NoZW1hIHZhbGlkYXRpb24KCmBgYApwb3J0bWFuIC1sIC4vdG1wL3NwZWNzL2NybS55bWwgLW8gLi90bXAvc3BlY3MvY3JtLnBvc3RtYW4uanNvbiAtLWV4dHJhVW5rbm93bkZvcm1hdHMgdWxpZCBvbmUgdHdvCmBgYAoKVGhpcyBtYWtlcyB0aGUgc2NoZW1hIHZhbGlkYXRpb24gbW9yZSBsZW5pZW50LCBhbmQgc29sdmVzIHByb2JsZW1zIHdpdGggdW5rbm93biBmb3JtYXRzCgojIyMjIyMgVXBsb2FkIG5ld2x5IGdlbmVyYXRlZCBjb2xsZWN0aW9uIHRvIFBvc3RtYW4sIHdoaWNoIHdpbGwgdXBzZXJ0IHRoZSBjb2xsZWN0aW9uLCBiYXNlZCBvbiB0aGUgY29sbGVjdGlvbiBuYW1lCgpgYGAKcG9ydG1hbiAtbCAuL3RtcC9zcGVjcy9jcm0ueW1sIC0tc3luY1Bvc3RtYW4KYGBgCgpVcGxvYWQgbmV3bHkgZ2VuZXJhdGVkIGNvbGxlY3Rpb24gdG8gUG9zdG1hbiB1c2luZyB0aGUgY29sbGVjdGlvbiBVSUQgdG8gb3ZlcndyaXRlIHRoZSBleGlzdGluZy4KCmBgYApwb3J0bWFuIC1sIC4vdG1wL3NwZWNzL2NybS55bWwgLS1zeW5jUG9zdG1hbiAtcCA5NjAxOTYzYS01M2ZmLTRhYWEtOTJhMC0yZTcwYThhMmE3NDgKYGBgCgpXaGVuIGEgY29sbGVjdGlvbiBnZXRzIGxhcmdlLCB0aGUgUG9zdG1hbiBBUEkgd2lsbCBjb21wYXJlIGFsbCB0aGUgcmVxdWVzdHMgd2hlbiB1cGRhdGluZyB0aGUgY29sbGVjdGlvbi4gVGhpcyBjYW4gdGFrZSBzb21lIHRpbWUgZXZlbiByZXN1bHQgaW4gNXh4IGVycm9ycy4KVG8gb3ZlcmNvbWUgdGhpcywgeW91IGNhbiB1c2UgdGhlIGAtLXBvc3RtYW5GYXN0U3luY2Agb3B0aW9uLiBUaGlzIG9wdGlvbiB3aWxsIHN5bmMgeW91ciBjb2xsZWN0aW9uIHRvIFBvc3RtYW4gYnkgdXNpbmcgImRlbGV0ZSIgYW5kICJjcmVhdGUiIG9wZXJhdGlvbnMgaW5zdGVhZCBvZiB0aGUgInVwZGF0ZSIuCgpSRU1BUks6IFVzaW5nIGAtLXBvc3RtYW5GYXN0U3luY2Agd2lsbCByZXN1bHQgaW4gYSBuZXcgUG9zdG1hbiBjb2xsZWN0aW9uIGFuZCBQb3N0bWFuIFVJRCBmb3IgZWFjaCBzeW5jLgoKYGBgCnBvcnRtYW4gLWwgLi90bXAvc3BlY3MvY3JtLnltbCAtLXN5bmNQb3N0bWFuIC0tcG9zdG1hbkZhc3RTeW5jCmBgYAoKUG9ydG1hbiBjYWNoZXMgYSBzZXQgb2YgUG9zdG1hbiBBUEkgZGF0YSB0byBmYWNpbGl0YXRlIGZhc3RlciBsb29rdXBzIGFuZCB1cGxvYWRzLCBwcmV2ZW50aW5nIHVubmVjZXNzYXJ5IGNvbm5lY3RpbmcgdG8gdGhlIFBvc3RtYW4gQVBJLgpJbiBjYXNlIHlvdSBuZWVkIHRvIHJlc2V0IHRoZSBjYWNoZSB5b3Ugc2ltcGx5IHJlbW92ZSB0aGUgYC5wb3J0bWFuLmNhY2hlLmpzb25gIGZpbGUgb3Igc2V0IHRoZSBgLS1wb3N0bWFuUmVmcmVzaENhY2hlYCBvcHRpb24gd2hlbiBydW5uaW5nIHRoZSBQb3N0bWFuIHN5bmMuCgpgYGAKcG9ydG1hbiAtbCAuL3RtcC9zcGVjcy9jcm0ueW1sIC0tc3luY1Bvc3RtYW4gLS1wb3N0bWFuUmVmcmVzaENhY2hlCmBgYAoKIyMjIyMjIFBhc3MgY3VzdG9tIHBhdGhzIGZvciBjb25maWcgZmlsZXMKCkFsbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gY29udmVydCBmcm9tIE9wZW5BUEkgdG8gUG9zdG1hbiBjYW4gYmUgb24gdGhlIFtvcGVuYXBpLXRvLXBvc3RtYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9wb3N0bWFubGFicy9vcGVuYXBpLXRvLXBvc3RtYW4vYmxvYi9kZXZlbG9wL09QVElPTlMubWQpIHBhY2thZ2UgZG9jdW1lbnRhdGlvbi4KUG9ydG1hbiBwcm92aWRlcyBhIGRlZmF1bHQgb3BlbmFwaS10by1wb3N0bWFuIGNvbmZpZ3VyYXRpb24gW3Bvc3RtYW4tY29uZmlnLmRlZmF1bHQuanNvbl0ocG9zdG1hbi1jb25maWcuZGVmYXVsdC5qc29uKSwgd2hpY2ggd2lsbCBiZSB1c2VkIGlmIG5vIGN1c3RvbSBjb25maWcgYC0tcG9zdG1hbkNvbmZpZ0ZpbGVgIGlzIHBhc3NlZC4KClBvcnRtYW4gY29uZmlndXJhdGlvbiBmaWxlIGluIEpTT04gZm9ybWF0OgoKYGBgCnBvcnRtYW4gLXUgaHR0cHM6Ly9zcGVjcy5hcGlkZWNrLmNvbS9jcm0ueW1sIC1jIC4vdG1wL2NybS9wb3J0bWFuLWNvbmZpZy5qc29uIC1zIC4vY29tbW9uL3Bvc3RtYW4tY29uZmlnLmpzb24KYGBgCgpQb3J0bWFuIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiBZQU1MIGZvcm1hdDoKCmBgYApwb3J0bWFuIC11IGh0dHBzOi8vc3BlY3MuYXBpZGVjay5jb20vY3JtLnltbCAtYyAuL3RtcC9jcm0vcG9ydG1hbi1jb25maWcueWFtbCAtcyAuL2NvbW1vbi9wb3N0bWFuLWNvbmZpZy5qc29uCmBgYAoKIyMjIyMjIFBhc3MgYWxsIENMSSBvcHRpb25zIGFzIEpTT04vWUFNTCBmaWxlCgpBbGwgdGhlIENMSSBvcHRpb25zIGNhbiBiZSBtYW5hZ2VkIGluIGEgc2VwYXJhdGUgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBwYXNzZWQgYWxvbmcgdG8gdGhlIHBvcnRtYW4gY29tbWFuZC4gVGhpcyB3aWxsCm1ha2UgY29uZmlndXJhdGlvbiBlYXNpZXIsIGVzcGVjaWFsbHkgaW4gQ0kvQ0QgaW1wbGVtZW50YXRpb25zLgoKUG9ydG1hbiBDTEkgb3B0aW9ucyBzZXR0aW5ncyBpbiBKU09OIGZvcm1hdAoKYGBgCnBvcnRtYW4gLS1jbGlPcHRpb25zRmlsZSAuL2V4YW1wbGVzL2NsaS1vcHRpb25zL3BvcnRtYW4tY2xpLW9wdGlvbnMuanNvbgpgYGAKClBvcnRtYW4gQ0xJIG9wdGlvbnMgc2V0dGluZ3MgaW4gWUFNTCBmb3JtYXQKCmBgYApwb3J0bWFuIC0tY2xpT3B0aW9uc0ZpbGUgLi9leGFtcGxlcy9jbGktb3B0aW9ucy9wb3J0bWFuLWNsaS1vcHRpb25zLnlhbWwKYGBgCgpBbGwgdGhlIGF2YWlsYWJsZSBQb3J0bWFuIENMSSBvcHRpb25zIGNhbiBiZSB1c2VkIGluIHRoZSBjb25maWcgZmlsZS4KQnkgcGFzc2luZyB0aGUgQ0xJIG9wdGlvbnMgYXMgcGFyYW1ldGVyLCB5b3UgY2FuIG92ZXJ3cml0ZSB0aGUgZGVmaW5lZCBDTEkgb3B0aW9ucyBkZWZpbmVkIGluIHRoZSBmaWxlLgoKRm9yIG1vcmUgZGV0YWlscywgcmV2aWV3IHRoZSBbY2xpLW9wdGlvbnMgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL2NsaS1vcHRpb25zKS4KCiMjIyMjIyBSdW4gTmV3bWFuIHdpdGggTmV3bWFuIG9wdGlvbnMKCkFsbCBbTmV3bWFuIGNvbmZpZ3VyYXRpb24gb3B0aW9uc10oaHR0cHM6Ly9sZWFybmluZy5wb3N0bWFuLmNvbS9kb2NzL3J1bm5pbmctY29sbGVjdGlvbnMvdXNpbmctbmV3bWFuLWNsaS9jb21tYW5kLWxpbmUtaW50ZWdyYXRpb24td2l0aC1uZXdtYW4vI29wdGlvbnMpIHRvIHJ1biBOZXdtYW4gY2FuIGJlIHBhc3NlZCBhbG9uZyB0aHJvdWdoIFBvcnRtYW4uCgpgYGAKcG9ydG1hbiAtdSBodHRwczovL3NwZWNzLmFwaWRlY2suY29tL2NybS55bWwgLWMgLi90bXAvY3JtL3BvcnRtYW4tY29uZmlnLmpzb24gLS1ydW5OZXdtYW4gLS1uZXdtYW5PcHRpb25zRmlsZSAuL3RtcC9jcm0vbmV3bWFuLW9wdGlvbnMuanNvbgpgYGAKCkZvciBtb3JlIGRldGFpbHMsIHJldmlldyB0aGUgW2NsaS1vcHRpb25zIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy9jbGktb3B0aW9ucykuCgpOT1RFOiBOZXdtYW4gaXMgc2V0IHRvIGlnbm9yZSByZWRpcmVjdHMgdG8gYWxsb3cgZm9yIHRlc3RpbmcgcmVkaXJlY3QgcmVzcG9uc2UgY29kZXMuIElmIHlvdSBhcmUgcnVubmluZyBjb2xsZWN0aW9ucyB3aXRoaW4gUG9zdG1hbiBVSSwgeW91J2xsIG5lZWQgdG8gZW5zdXJlIFBvc3RtYW4gaXMgc2V0IHRvIHRoZSBzYW1lLCBvciB5b3VyIHJlZGlyZWN0IHRlc3RzIHdpbGwgZmFpbC4KCj4gUG9zdG1hbiA+IFByZWZlcmVuY2VzID4gQXV0b21hdGljYWxseSBmb2xsb3cgcmVkaXJlY3RzID4gT0ZGCgojIyMgT3V0cHV0CgpXaXRob3V0IHNwZWNpZnlpbmcgdGhlIG91dHB1dCBsb2NhdGlvbiwgeW91ciBnZW5lcmF0ZWQgUG9zdG1hbiBDb2xsZWN0aW9uIGlzIHdyaXR0ZW4gdG8gYC4vdG1wL2NvbnZlcnRlZC8ke3NwZWNOYW1lfS5qc29uYCBpZiB5b3UgYXJlIG1hbnVhbGx5IGltcG9ydGluZyB0byBQb3N0bWFuIG9yIG5lZWQgdG8gaW5zcGVjdCBmb3IgZGVidWdnaW5nLgoKQnkgdXNpbmcgYC1vYCBvciBgLS1vdXRwdXRgIHBhcmFtZXRlciwgeW91IGNhbiBkZWZpbmUgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBQb3N0bWFuIGNvbGxlY3Rpb24gd2lsbCBiZSB3cml0dGVuLgoKYGBgCnBvcnRtYW4gLWwgLi90bXAvc3BlY3MvY3JtLnltbCAtbyAuL3RtcC9zcGVjcy9jcm0uUG9zdG1hbi5qc29uCmBgYAoKIyMgUG9ydG1hbiBzZXR0aW5ncwoKVGhlIFBvcnRtYW4gc2V0dGluZ3MgY29uc2lzdCBvdXQgb2YgbXVsdGlwbGUgcGFydHM6CgotICoqdmVyc2lvbioqIDogd2hpY2ggcmVmZXJzIHRvIHRoZSBKU09OIFBvcnRtYW4gY29uZmlndXJhdGlvbiB2ZXJzaW9uLgotICoqdGVzdHMqKiA6IHdoaWNoIHJlZmVycyB0byB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBnZW5lcmF0ZWQgY29udHJhY3QgJiB2YXJpYW5jZSB0ZXN0cy4KICAtICoqY29udHJhY3RUZXN0cyoqIDogcmVmZXJzIHRvIHRoZSBvcHRpb25zIHRvIGVuYWJsZWQgYXV0b2dlbmVyYXRlZCBjb250cmFjdCB0ZXN0cy4KICAtICoqY29udGVudFRlc3RzKiogOiByZWZlcnMgdG8gdGhlIGFkZGl0aW9uYWwgUG9zdG1hbiB0ZXN0cyB0aGF0IGNoZWNrIHRoZSBjb250ZW50LgogIC0gKip2YXJpYXRpb25UZXN0cyoqIDogcmVmZXJzIHRvIHRoZSBvcHRpb25zIHRvIGRlZmluZSB2YXJpYXRpb24gdGVzdHMuCiAgLSAqKmludGVncmF0aW9uVGVzdHMqKiA6IHJlZmVycyB0byB0aGUgb3B0aW9ucyB0byBkZWZpbmUgaW50ZWdyYXRpb24gdGVzdHMuCiAgLSAqKmV4dGVuZFRlc3RzKiogOiByZWZlcnMgdG8gdGhlIGN1c3RvbSBhZGRpdGlvbnMgb2YgbWFudWFsbHkgY3JlYXRlZCBQb3N0bWFuIHRlc3RzLgotICoqYXNzaWduVmFyaWFibGVzKiogOiB3aGljaCByZWZlcnMgdG8gc2V0dGluZyBQb3N0bWFuIGNvbGxlY3Rpb24gdmFyaWFibGVzIGZvciBlYXNpZXIgYXV0b21hdGlvbi4KLSAqKm92ZXJ3cml0ZXMqKiA6IHdoaWNoIHJlZmVycyB0byB0aGUgY3VzdG9tIGFkZGl0aW9ucy9tb2RpZmljYXRpb25zIG9mIHRoZSBPcGVuQVBJL1Bvc3RtYW4gcmVxdWVzdCBkYXRhLgotICoqb3BlcmF0aW9uUHJlUmVxdWVzdFNjcmlwdHMqKiA6IHdoaWNoIHJlZmVycyB0byBpbmplY3RpbmcgUG9zdG1hbiBQcmUtcmVxdWVzdCBTY3JpcHRzIGZvciByZXF1ZXN0cy4KLSAqKmdsb2JhbHMqKiA6IHdoaWNoIHJlZmVycyB0byB0aGUgY3VzdG9taXphdGlvbiB0aGF0IGFwcGxpZXMgZm9yIHRoZSB3aG9sZSBQb3N0bWFuIGNvbGxlY3Rpb24uCgojIyMgUG9ydG1hbiB0YXJnZXRpbmcKCkl0IGlzIHBvc3NpYmxlIHRvIGluamVjdCBQb3N0bWFuIHRlc3RzIGFuZCBwcmUtcmVnaXN0ZXIgc2NyaXB0cywgYXNzaWduIHZhcmlhYmxlcyBhbmQgb3ZlcndyaXRlIHF1ZXJ5IHBhcmFtcywgaGVhZGVycywgcmVxdWVzdCBib2R5IGRhdGEgd2l0aCB2YWx1ZXMuCgpUbyBiZSBhYmxlIHRvIGRvIHRoaXMgdmVyeSBzcGVjaWZpY2FsbHksIHRoZXJlIGFyZSBvcHRpb25zIHRvIGRlZmluZSB0aGUgdGFyZ2V0czoKCi0gKipvcGVuQXBpT3BlcmF0aW9uSWQgKFN0cmluZykqKiA6IFJlZmVyZW5jZXMgdG8gdGhlIE9wZW5BUEkgb3BlcmF0aW9uSWQsIGV4YW1wbGU6IGBsZWFkc0FsbGAKLSAqKm9wZW5BcGlPcGVyYXRpb25JZHMgKEFycmF5KSoqIDogUmVmZXJlbmNlcyB0byBhbiBhcnJheSBvZiBPcGVuQVBJIG9wZXJhdGlvbklkcywgZXhhbXBsZTogYFsnbGVhZHNBbGwnLCAnY29tcGFuaWVzQWxsJywgJ2NvbnRhY3RzQWxsJ11gCi0gKipvcGVuQXBpT3BlcmF0aW9uIChTdHJpbmcpKiogOiBSZWZlcmVuY2VzIHRvIGEgY29tYmluYXRpb24gb2YgdGhlIE9wZW5BUEkgbWV0aG9kICYgcGF0aCwgZXhhbXBsZTogYEdFVDo6L2NybS9sZWFkc2AKCi0gKipleGNsdWRlRm9yT3BlcmF0aW9ucyAoQXJyYXkpKiogOiBSZWZlcmVuY2VzIHRvIE9wZW5BUEkgb3BlcmF0aW9ucyB0aGF0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGFyZ2V0aW5nLiBJdCBzdXBwb3J0cyBib3RoIHRoZSBgb3BlbkFwaU9wZXJhdGlvbklkYCBhbmQgYG9wZW5BcGlPcGVyYXRpb25gIGZvcm1hdCwgZXhhbXBsZTogYFsibGVhZHNBZGQiLCAiR0VUOjovY3JtL2xlYWRzL3tpZH0iXWAKCkFuIGBvcGVuQXBpT3BlcmF0aW9uSWRgIGlzIGFuIG9wdGlvbmFsIHByb3BlcnR5LiBUbyBvZmZlciBzdXBwb3J0IGZvciBPcGVuQVBJIGRvY3VtZW50cyB0aGF0IGRvbid0IGhhdmUgb3BlcmF0aW9uSWRzLCB3ZQpoYXZlIGFkZGVkIHRoZSBgb3BlbkFwaU9wZXJhdGlvbmAgZGVmaW5pdGlvbiwgd2hpY2ggaXMgdGhlIHVuaXF1ZSBjb21iaW5hdGlvbiBvZiB0aGUgT3BlbkFQSSBtZXRob2QgJiBwYXRoLCB3aXRoIGEgYDo6YApzZXBhcmF0b3Igc3ltYm9sLiBUaGUgdGFyZ2V0aW5nIG9wdGlvbiBgZXhjbHVkZUZvck9wZXJhdGlvbnNgIGlzIHJlYWxseSB1c2VmdWwgd2hlbiB1c2luZyB3aWxkY2FyZHMsIHRvIGFsbG93IGV4Y2x1c2lvbnMgZnJvbSB0aGUgd2lsZGNhcmQuCgpUaGlzIHdpbGwgYWxsb3cgdGFyZ2V0aW5nIGZvciB2ZXJ5IHNwZWNpZmljIE9wZW5BUEkgaXRlbXMuCgpUbyBmYWNpbGl0YXRlIG1hbmFnaW5nIHRoZSBmaWx0ZXJpbmcsIHdlIGhhdmUgaW5jbHVkZWQgd2lsZGNhcmQgb3B0aW9ucyBmb3IgdGhlIGBvcGVuQXBpT3BlcmF0aW9uYCBvcHRpb24sIHN1cHBvcnRpbmcKdGhlIG1ldGhvZHMgJiBwYXRoIGRlZmluaXRpb25zLgoKUkVNQVJLOiBCZSBzdXJlIHRvIHB1dCBxdW90ZXMgYXJvdW5kIHRoZSB0YXJnZXQgZGVmaW5pdGlvbi4KCi0gKipTdHJpY3QgbWF0Y2hpbmcqKiBleGFtcGxlOiBgIm9wZW5BcGlPcGVyYXRpb24iOiAiR0VUOjovY3JtL2xlYWRzIixgCiAgVGhpcyB3aWxsIHRhcmdldCBvbmx5IHRoZSAiR0VUIiBtZXRob2QgYW5kIHRoZSBzcGVjaWZpYyBwYXRoICIvY3JtL2xlYWRzIgoKLSAqKk1ldGhvZCB3aWxkY2FyZCBtYXRjaGluZyoqIGV4YW1wbGU6IGAib3BlbkFwaU9wZXJhdGlvbiI6ICIqOjovY3JtL2xlYWRzIixgCiAgVGhpcyB3aWxsIHRhcmdldCBhbGwgbWV0aG9kcyAoJ2dldCcsICdwdXQnLCAncG9zdCcsICdkZWxldGUnLCAnb3B0aW9ucycsICdoZWFkJywgJ3BhdGNoJywgJ3RyYWNlJykgYW5kIHRoZSBzcGVjaWZpYwogIHBhdGggIi9jcm0vbGVhZHMiCgotICoqUGF0aCB3aWxkY2FyZCBtYXRjaGluZyoqIGV4YW1wbGU6IGAib3BlbkFwaU9wZXJhdGlvbiI6ICJHRVQ6Oi9jcm0vKiJgCiAgVGhpcyB3aWxsIHRhcmdldCBvbmx5IHRoZSAiR0VUIiBtZXRob2QgYW5kIGFueSBwYXRoIG1hdGNoaW5nIGFueSBmb2xkZXIgYmVoaW5kIHRoZSAiL2NybSIsIGxpa2UgIi9jcm0vY29tcGFuaWVzIiBhbmQKICAiL2NybS9sZWFkcyIuCgotICoqTWV0aG9kICYgUGF0aCB3aWxkY2FyZCBtYXRjaGluZyoqIGV4YW1wbGU6IGAib3BlbkFwaU9wZXJhdGlvbiI6ICIqOjovY3JtLyoiLGAKICBBIGNvbWJpbmF0aW9uIG9mIHdpbGRjYXJkcyBmb3IgdGhlIG1ldGhvZCBhbmQgcGF0aCBwYXJ0cyBpcyBldmVuIHBvc3NpYmxlLgoKIyMjIFBvcnRtYW4gLSBgdGVzdHNgIHByb3BlcnRpZXMKClRoZSBQb3J0bWFuIGB0ZXN0c2AgaXMgd2hlcmUgeW91IHdvdWxkIGRlZmluZSB0aGUgdGVzdHMgdGhhdCB3b3VsZCBiZSBhcHBsaWNhYmxlIGFuZCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBQb3J0bWFuLCBiYXNlZCBvbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KVGhlIGNvbnRyYWN0IHRlc3RzIGFyZSBncm91cGVkIGluIGFuIGFycmF5IG9mIGBjb250cmFjdFRlc3RzYC4KCiMjIyMgY29udHJhY3RUZXN0cyBvcHRpb25zCgotICoqb3BlbkFwaU9wZXJhdGlvbklkIChTdHJpbmcpKiogOiBSZWZlcmVuY2VzIHRvIHRoZSBPcGVuQVBJIG9wZXJhdGlvbklkLiAoZXhhbXBsZTogYGxlYWRzQWxsYCkKLSAqKm9wZW5BcGlPcGVyYXRpb25JZHMgKEFycmF5KSoqIDogUmVmZXJlbmNlcyB0byBhbiBhcnJheSBvZiBPcGVuQVBJIG9wZXJhdGlvbklkcywgZXhhbXBsZTogYFsnbGVhZHNBbGwnLCAnY29tcGFuaWVzQWxsJywgJ2NvbnRhY3RzQWxsJ11gCi0gKipvcGVuQXBpT3BlcmF0aW9uIChTdHJpbmcpKiogOiBSZWZlcmVuY2VzIHRvIGEgY29tYmluYXRpb24gb2YgdGhlIE9wZW5BUEkgbWV0aG9kICYgcGF0aCAoZXhhbXBsZTogYEdFVDo6L2NybS9sZWFkc2ApCi0gKipleGNsdWRlRm9yT3BlcmF0aW9ucyAoQXJyYXkgfCBvcHRpb25hbCkqKiA6IFJlZmVyZW5jZXMgdG8gT3BlbkFQSSBvcGVyYXRpb25zIHRoYXQgd2lsbCBiZSBza2lwcGVkIGZvciB0YXJnZXRpbmcsIGV4YW1wbGU6IGBbImxlYWRzQWRkIiwgIkdFVDo6L2NybS9sZWFkcy97aWR9Il1gCi0gKipvcGVuQXBpUmVxdWVzdCAoU3RyaW5nIHwgb3B0aW9uYWwpKiogOiBSZWZlcmVuY2VzIHRvIHRoZSBPcGVuQVBJIHJlcXVlc3QgYm9keSBjb250ZW50LXR5cGUgKHN1cHBvcnRzIHdpbGRjYXJkcyBsaWtlIGBhcHBsaWNhdGlvbi8qYCkgdG8gdXNlIGZvciB0aGUgY29udHJhY3QgdGVzdC4gSWYgbm90IGRlZmluZWQsIHRoZSBkZWZhdWx0IHJlcXVlc3QgY29udGVudC10eXBlIGZyb20gT3BlbkFQSSB3aWxsIGJlIHVzZWQsIHdpdGggYSBwcmVmZXJlbmNlIGZvciBgYXBwbGljYXRpb24vanNvbmAuCi0gKipvcGVuQXBpUmVzcG9uc2UgKFN0cmluZyB8IG9wdGlvbmFsKSoqIDogUmVmZXJlbmNlcyB0byB0aGUgT3BlbkFQSSByZXNwb25zZSBvYmplY3QgY29kZSBvciBgY29kZTo6Y29udGVudC10eXBlYCAoc3VwcG9ydHMgd2lsZGNhcmRzIGxpa2UgYHRleHQvKmApIGZvciB3aGljaCBhIGNvbnRyYWN0IHRlc3Qgd2lsbCBiZSBpbnNlcnRlZC4gRXhhbXBsZXM6IGAiNDA0ImAsIGAiMjAwOjp0ZXh0L3BsYWluImAsIGAiMjAwOjp0ZXh0LyoiYC4gSWYgbm90IGRlZmluZWQsIHRoZSAxc3QgcmVzcG9uc2Ugb2JqZWN0IGZyb20gT3BlbkFQSSB3aWxsIGJlIHRha2VuIGFzIGV4cGVjdGVkIHJlc3BvbnNlLgoKICBDb250cmFjdCB0ZXN0cyBhcmUgYWx3YXlzIGF0dGFjaGVkIHRvIHRoZSBtYWluIHJlcXVlc3QgdGhhdCBQb3J0bWFuIGdlbmVyYXRlcyBmb3IgYW4gb3BlcmF0aW9uLiBXaGVuIHlvdXIgT3BlbkFQSSBkb2N1bWVudCBsaXN0cyBtdWx0aXBsZSByZXF1ZXN0IG9yIHJlc3BvbnNlIGNvbnRlbnQgdHlwZXMsIG9ubHkgb25lIHNldCB3aWxsIGJlIHVzZWQgZm9yIHRoYXQgcmVxdWVzdC4gWW91IGNhbiBjb250cm9sIHdoaWNoIHR5cGVzIGFyZSBzZWxlY3RlZCB3aXRoIHRoZSBgb3BlbkFwaVJlcXVlc3RgIGFuZCBgb3BlbkFwaVJlc3BvbnNlYCBvcHRpb25zLiBUbyBjcmVhdGUgaW5kaXZpZHVhbCByZXF1ZXN0cyBmb3IgZXZlcnkgY29udGVudCB0eXBlLCB1c2UgdGhlIHZhcmlhdGlvbiB0ZXN0aW5nIGNvbmNlcHQgZGVzY3JpYmVkIGJlbG93LgoKLSAqKnN0YXR1c1N1Y2Nlc3MgKEJvb2xlYW4pKiogOiBBZGRzIHRoZSB0ZXN0IGlmIHRoZSByZXNwb25zZSBvZiB0aGUgUG9zdG1hbiByZXF1ZXN0IHJldHVybmVkIGEgMnh4Ci0gKipzdGF0dXNDb2RlIChCb29sZWFuLCBIVFRQIGNvZGUpKiogOiBBZGRzIHRoZSB0ZXN0IGlmIHRoZSByZXNwb25zZSBvZiB0aGUgUG9zdG1hbiByZXF1ZXN0IHJldHVybiBhIHNwZWNpZmljIHN0YXR1cyBjb2RlLgotICoqcmVzcG9uc2VUaW1lIChCb29sZWFuKSoqIDogQWRkcyB0aGUgdGVzdCB0byB2ZXJpZnkgaWYgdGhlIHJlc3BvbnNlIG9mIHRoZSBQb3N0bWFuIHJlcXVlc3QgaXMgcmV0dXJuZWQgd2l0aGluIGEgbnVtYmVyIG9mIG1zLgogIC0gKiptYXhNcyAobnVtYmVyKSoqIDogRGVmaW5lIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgbXMgZm9yIHRoZSBgcmVzcG9uc2VUaW1lYCBjaGVjay4KLSAqKmNvbnRlbnRUeXBlIChCb29sZWFuKSoqIDogQWRkcyB0aGUgdGVzdCBpZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGlzIG1hdGNoaW5nIHRoZSBleHBlY3RlZCBjb250ZW50LXR5cGUgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBzcGVjLgotICoqanNvbkJvZHkgKEJvb2xlYW4pKiogOiBBZGRzIHRoZSB0ZXN0IGlmIHRoZSByZXNwb25zZSBib2R5IGlzIG1hdGNoaW5nIHRoZSBleHBlY3RlZCBjb250ZW50LXR5cGUgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBzcGVjLgotICoqc2NoZW1hVmFsaWRhdGlvbiAoQm9vbGVhbikqKiA6IEFkZHMgdGhlIHRlc3QgaWYgdGhlIHJlc3BvbnNlIGJvZHkgaXMgbWF0Y2hpbmcgdGhlIEpTT04gc2NoZW1hIGRlZmluZWQgaW4gdGhlIE9wZW5BUEkgc3BlYy4gVGhlIEpTT04gc2NoZW1hIGlzIGluc2VydGVkIGlubGluZSBpbiB0aGUgUG9zdG1hbiB0ZXN0LgogIC0gKiphZGRpdGlvbmFsUHJvcGVydGllcyAoQm9vbGVhbikqKiA6IEV4dGVuZCB0aGUgZXhwZWN0ZWQgSlNPTiBzY2hlbWEgdXNlZCBmb3IgdGhlIGBzY2hlbWFWYWxpZGF0aW9uYCBieSBzZXR0aW5nIGFsbCB0aGUgYGFkZGl0aW9uYWxQcm9wZXJ0aWVzYC4KLSAqKmhlYWRlcnNQcmVzZW50IChCb29sZWFuKSoqIDogQWRkcyB0aGUgdGVzdCB0byB2ZXJpZnkgaWYgdGhlIFBvc3RtYW4gcmVzcG9uc2UgaGVhZGVyIGhhcyB0aGUgcmVxdWlyZWQgaGVhZGVyIG5hbWVzIHByZXNlbnQsIGxpa2UgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBzcGVjLgoKRm9yIG1vcmUgZGV0YWlscywgcmV2aWV3IHRoZSBbY29udHJhY3QtdGVzdHMgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1jb250cmFjdC10ZXN0cykgYW5kIHRoZSBbdGVzdHN1aXRlLWNvbnRyYWN0LWNvbnRlbnQtdHlwZXMgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1jb250cmFjdC1jb250ZW50LXR5cGVzKSBmb3Igc29tZSBtb3JlIGRldGFpbHMgYWJvdXQgdGFyZ2V0aW5nIHJlcXVlc3QgYm9keSAmIHJlc3BvbnNlIGNvbnRlbnQtdHlwZXMuCgojIyMjIHZhcmlhdGlvblRlc3RzIG9wdGlvbnMKCi0gKipvcGVuQXBpT3BlcmF0aW9uSWQgKFN0cmluZykqKiA6IFJlZmVyZW5jZXMgdG8gdGhlIE9wZW5BUEkgb3BlcmF0aW9uSWQgZm9yIHdoaWNoIGEgdmFyaWF0aW9uIHdpbGwgYmUgY3JlYXRlZC4gKGV4YW1wbGU6IGBsZWFkc0FsbGApCi0gKipvcGVuQXBpT3BlcmF0aW9uSWRzIChBcnJheSkqKiA6IFJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2YgT3BlbkFQSSBvcGVyYXRpb25JZHMsIGV4YW1wbGU6IGBbJ2xlYWRzQWxsJywgJ2NvbXBhbmllc0FsbCcsICdjb250YWN0c0FsbCddYAotICoqb3BlbkFwaU9wZXJhdGlvbiAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byBhIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGggZm9yIHdoaWNoIGEgdmFyaWF0aW9uIHdpbGwgYmUgY3JlYXRlZC4gKGV4YW1wbGU6IGBHRVQ6Oi9jcm0vbGVhZHNgKQotICoqZXhjbHVkZUZvck9wZXJhdGlvbnMgKEFycmF5IHwgb3B0aW9uYWwpKiogOiBSZWZlcmVuY2VzIHRvIE9wZW5BUEkgb3BlcmF0aW9ucyB0aGF0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGFyZ2V0aW5nLCBleGFtcGxlOiBgWyJsZWFkc0FkZCIsICJHRVQ6Oi9jcm0vbGVhZHMve2lkfSJdYAotICoqb3BlbkFwaVJlc3BvbnNlIChTdHJpbmcgfCBvcHRpb25hbCkqKiA6IFJlZmVyZW5jZXMgdG8gdGhlIE9wZW5BUEkgcmVzcG9uc2Ugb2JqZWN0IGNvZGUgb3IgYGNvZGU6OmNvbnRlbnQtdHlwZWAuIFN1cHBvcnRzIHdpbGRjYXJkcyBmb3IgYm90aCB0aGUgY29kZSAoZS5nLiBgNCpgIG9yIGAqYCkgYW5kIHRoZSBjb250ZW50IHR5cGUgKGUuZy4gYHRleHQvKmAgb3IgYCpgKS4gRXhhbXBsZXM6IGAiNDA0ImAsIGAiMjAwOjp0ZXh0L3BsYWluImAsIGAiMio6OmFwcGxpY2F0aW9uL2pzb24iYCwgYCIyKjo6YXBwbGljYXRpb24vKiJgLCBgIio6OioiYC4gSWYgbm90IGRlZmluZWQsIHRoZSAxc3QgcmVzcG9uc2Ugb2JqZWN0IGZyb20gT3BlbkFQSSB3aWxsIGJlIHRha2VuIGFzIGV4cGVjdGVkIHJlc3BvbnNlLiBJZiB0aGUgY29uZmlndXJlZCByZXNwb25zZSBjb2RlIGlzIG5vdCBkZWZpbmVkIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LCBQb3J0bWFuIHdpbGwgbm90IGdlbmVyYXRlIGEgdmFyaWF0aW9uIGZvciB0aGUgdGFyZ2V0ZWQgb3BlcmF0aW9ucy4KLSAqKm9wZW5BcGlSZXF1ZXN0IChTdHJpbmcgfCBvcHRpb25hbCkqKiA6IFJlZmVyZW5jZXMgdG8gdGhlIE9wZW5BUEkgcmVxdWVzdCBib2R5IGNvbnRlbnQtdHlwZSAoc3VwcG9ydHMgd2lsZGNhcmRzIGxpa2UgYGFwcGxpY2F0aW9uLypgKSBmb3Igd2hpY2ggYSB2YXJpYXRpb24gd2lsbCBiZSBjcmVhdGVkLiBJZiBub3QgZGVmaW5lZCwgdGhlIGRlZmF1bHQgcmVxdWVzdCBjb250ZW50LXR5cGUgZnJvbSBPcGVuQVBJIHdpbGwgYmUgdXNlZC4KCi0gKipvdmVyd3JpdGVzKiogOiB3aGljaCByZWZlcnMgdG8gdGhlIGN1c3RvbSBhZGRpdGlvbnMvbW9kaWZpY2F0aW9ucyBvZiB0aGUgT3BlbkFQSS9Qb3N0bWFuIHJlcXVlc3QgZGF0YSwgc3BlY2lmaWNhbGx5IGZvciB0aGUgdmFyaWF0aW9uLgotICoqZnV6emluZyoqIDogRnV6eiB0ZXN0aW5nIHNldHMgdW5leHBlY3RlZCB2YWx1ZXMgZm9yIEFQSSByZXF1ZXN0cywgdG8gY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvciBhbmQgZXJyb3JzIGluIHRoZSBBUEkgcmVzcG9uc2UuCi0gKip0ZXN0cyoqIDogd2hpY2ggcmVmZXJzIHRvIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIGdlbmVyYXRlZCBjb250cmFjdCAmIHZhcmlhbmNlIHRlc3RzIGZvciB0aGUgdmFyaWF0aW9uLgogIC0gKipjb250cmFjdFRlc3RzKiogOiByZWZlcnMgdG8gdGhlIG9wdGlvbnMgdG8gZW5hYmxlZCBhdXRvZ2VuZXJhdGVkIGNvbnRyYWN0IHRlc3RzIGZvciB0aGUgdmFyaWF0aW9uLgogIC0gKipjb250ZW50VGVzdHMqKiA6IHJlZmVycyB0byB0aGUgYWRkaXRpb25hbCBQb3N0bWFuIHRlc3RzIHRoYXQgY2hlY2sgdGhlIGNvbnRlbnQgZm9yIHRoZSB2YXJpYXRpb24uCiAgLSAqKmV4dGVuZFRlc3RzKiogOiByZWZlcnMgdG8gdGhlIGN1c3RvbSBhZGRpdGlvbnMgb2YgbWFudWFsIGNyZWF0ZWQgUG9zdG1hbiB0ZXN0cyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgdmFyaWF0aW9uLgotICoqYXNzaWduVmFyaWFibGVzKiogOiBUaGlzIHJlZmVycyB0byBzZXR0aW5nIFBvc3RtYW4gY29sbGVjdGlvbiB2YXJpYWJsZXMgdGhhdCBhcmUgYXNzaWduZWQgYmFzZWQgb24gdmFyaWF0aW9uLgoKRm9yIG1vcmUgZGV0YWlscywgcmV2aWV3IHRoZSBbY29udGVudC12YXJpYXRpb24gZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS12YXJpYXRpb24tdGVzdHMpIGFuZCB0aGUgW2NvbnRlbnQtdHlwZSB2YXJpYXRpb24gZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS12YXJpYXRpb24tY29udGVudC10eXBlcykuCgojIyMjIGludGVncmF0aW9uVGVzdHMgb3B0aW9ucwoKLSAqKm5hbWUgKFN0cmluZykqKiA6IEFzIEludGVncmF0aW9uIHRlc3RzIHdpbGwgbm9ybWFsbHkgY29udGFpbiBtdWx0aXBsZSBvcGVyYXRpb25zLCB0aGlzIGlzIHRoZSBmb2xkZXIgbmFtZSB0aGF0IHdpbGwgYmUgZ2VuZXJhdGVkIGluIHRoZSBJbnRlZ3JhdGlvbiBUZXN0cyBmb2xkZXIgaW4geW91ciBQb3N0bWFuIGNvbGxlY3Rpb24uCi0gKipvcGVyYXRpb25zIChBcnJheSkqKiA6IEFycmF5IG9mIG9wZXJhdGlvbnMgdG8gYmUgcGVyZm9ybWVkCgojIyMgUG9ydG1hbiAtIGBjb250ZW50VGVzdHNgIHByb3BlcnRpZXMKCkNvbnRlbnQgdGVzdHMgd2lsbCB2YWxpZGF0ZSBpZiB0aGUgcmVzcG9uc2UgcHJvcGVydHkgdmFsdWVzIHdpbGwgbWF0Y2ggdGhlIGV4cGVjdGVkIGRlZmluZWQgdmFsdWVzLgpXaGlsZSB0aGUgUG9ydG1hbiBgdGVzdHNgIHZlcmlmeSB0aGUgImNvbnRyYWN0IiBvZiB0aGUgQVBJLCB0aGUgYGNvbnRlbnRUZXN0c2Agd2lsbCB2ZXJpZnkgdGhlIGNvbnRlbnQgb2YgdGhlIEFQSS4KCiMjIyMgY29udGVudFRlc3RzIG9wdGlvbnMKCi0gKipvcGVuQXBpT3BlcmF0aW9uSWQgKFN0cmluZykqKiA6IFJlZmVyZW5jZXMgdG8gdGhlIE9wZW5BUEkgb3BlcmF0aW9uSWQuIChleGFtcGxlOiBgbGVhZHNBbGxgKQotICoqb3BlbkFwaU9wZXJhdGlvbklkcyAoQXJyYXkpKiogOiBSZWZlcmVuY2VzIHRvIGFuIGFycmF5IG9mIE9wZW5BUEkgb3BlcmF0aW9uSWRzLCBleGFtcGxlOiBgWydsZWFkc0FsbCcsICdjb21wYW5pZXNBbGwnLCAnY29udGFjdHNBbGwnXWAKLSAqKm9wZW5BcGlPcGVyYXRpb24gKFN0cmluZykqKiA6IFJlZmVyZW5jZXMgdG8gYSBjb21iaW5hdGlvbiBvZiB0aGUgT3BlbkFQSSBtZXRob2QgJiBwYXRoIChleGFtcGxlOiBgR0VUOjovY3JtL2xlYWRzYCkKLSAqKmV4Y2x1ZGVGb3JPcGVyYXRpb25zIChBcnJheSB8IG9wdGlvbmFsKSoqIDogUmVmZXJlbmNlcyB0byBPcGVuQVBJIG9wZXJhdGlvbnMgdGhhdCB3aWxsIGJlIHNraXBwZWQgZm9yIHRhcmdldGluZywgZXhhbXBsZTogYFsibGVhZHNBZGQiLCAiR0VUOjovY3JtL2xlYWRzL3tpZH0iXWAKCi0gKipyZXNwb25zZUJvZHlUZXN0cyAoQXJyYXkpKiogOiBBcnJheSBvZiBrZXkvdmFsdWUgcGFpcnMgb2YgcHJvcGVydGllcyAmIHZhbHVlcyBpbiB0aGUgUG9zdG1hbiByZXNwb25zZSBib2R5LgoKICAtICoqa2V5IChTdHJpbmcpKiogOiBUaGUga2V5IHRoYXQgd2lsbCBiZSB0YXJnZXRlZCBpbiB0aGUgcmVzcG9uc2UgYm9keSB0byBjaGVjayBpZiBpdCBleGlzdHMuIAogICAgLSBUbyBsb29rIHVwIGEga2V5IHdpdGhpbiBpbiBhcnJheSBvZiBvYmplY3RzLCB5b3UgY2FuIHVzZSBhbiBhcnJheSBpbmRleCAoZXhhbXBsZSBgZGF0YS53ZWJzaXRlc1swXS51cmxgKSBvciBhICogd2lsZGNhcmQgKGV4YW1wbGU6IGBkYXRhLndlYnNpdGVzWypdLnVybGApIHdoaWNoIHVzZXMgdGhlIGB2YWx1ZWAgdG8gbWF0Y2ggYW4gb2JqZWN0IGluIGFuIGFycmF5LiAKICAgIC0gVG8gdGVzdCBhIHJlc3BvbnNlIGJvZHkgdGhhdCBpcyBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgSlNPTiBvYmplY3QsIHNldCB0aGlzIHRvICcuJwogIC0gKip2YWx1ZSAoU3RyaW5nKSoqIDogVGhlIHZhbHVlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2UgYm9keSBwcm9wZXJ0eSBtYXRjaGVzLgogIC0gKipjb250YWlucyAoU3RyaW5nKSoqIDogVGhlIHZhbHVlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB2YWx1ZSBpcyBwcmVzZW50IGluIHRoZSB2YWx1ZSBvZiB0aGUgcmVzcG9uc2UgYm9keSBwcm9wZXJ0eS4KICAtICoqb25lT2YgKFN0cmluZ1tdLE51bWJlcltdLEJvb2xlYW5bXSkqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBjaGVjayBvbmUgb2YgdGhlIHZhbHVlcyBpcyBtYXRjaGluZyB0aGUgcmVzcG9uc2UgYm9keSBwcm9wZXJ0eS4KICAtICoqbGVuZ3RoIChOdW1iZXIpKiogOiBUaGUgbnVtYmVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB2YWx1ZSBvZiB0aGUgcmVzcG9uc2UgYm9keSBwcm9wZXJ0eSAoc3RyaW5nL2FycmF5KSBoYXMgYSBsZW5ndGggb2YgdGhlIGRlZmluZWQgbnVtYmVyLgogIC0gKiptaW5MZW5ndGggKE51bWJlcikqKiA6IFRoZSBudW1iZXIgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIG9mIHRoZSByZXNwb25zZSBib2R5IHByb3BlcnR5IChzdHJpbmcvYXJyYXkpIGhhcyBhIG1pbmltdW0gbGVuZ3RoIG9mIHRoZSBkZWZpbmVkIG51bWJlci4KICAtICoqbWF4TGVuZ3RoIChOdW1iZXIpKiogOiBUaGUgbnVtYmVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB2YWx1ZSBvZiB0aGUgcmVzcG9uc2UgYm9keSBwcm9wZXJ0eSAoc3RyaW5nL2FycmF5KSBoYXMgYSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgZGVmaW5lZCBudW1iZXIuCiAgLSAqKm5vdEV4aXN0IChCb29sZWFuKSoqIDogVGhlIGludmVyc2Ugb2YgdGhlIGtleSBjaGVjayB0aGF0IHZlcmlmeSBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0IGluIHRoZSByZXNwb25zZSBib2R5LgogIC0gKiphc3NlcnQgKFN0cmluZykqKiA6IEEgY3VzdG9tIFBvc3RtYW4gYXNzZXJ0aW9uIHRvIGNoZWNrIGlmIHRoZSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2UgYm9keSBwcm9wZXJ0eSBtYXRjaGVzIHdpdGggdGhlIHByb3ZpZGVkIGFzc2VydGlvbiAoZXhhbXBsZTogYG5vdC50by5iZS5udWxsYCkuCiAgCi0gKipyZXNwb25zZUhlYWRlclRlc3RzIChBcnJheSkqKiA6IEFycmF5IG9mIGtleS92YWx1ZSBwYWlycyBvZiBwcm9wZXJ0aWVzICYgdmFsdWVzIGluIHRoZSBQb3N0bWFuIHJlc3BvbnNlIGhlYWRlci4KICAtICoqa2V5IChTdHJpbmcpKiogOiBUaGUgaGVhZGVyIG5hbWUgdGhhdCB3aWxsIGJlIHRhcmdldGVkIGluIHRoZSByZXNwb25zZSBoZWFkZXIgdG8gY2hlY2sgaWYgaXQgZXhpc3RzLgogIC0gKip2YWx1ZSAoU3RyaW5nKSoqIDogVGhlIHZhbHVlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2UgaGVhZGVyIG1hdGNoZXMuCiAgLSAqKmNvbnRhaW5zIChTdHJpbmcpKiogOiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIGlzIHByZXNlbnQgaW4gdGhlIHZhbHVlIG9mIHRoZSByZXNwb25zZSBoZWFkZXIuCiAgLSAqKm9uZU9mIChTdHJpbmdbXSxOdW1iZXJbXSxCb29sZWFuW10pKiogOiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgb25lIG9mIHRoZSB2YWx1ZXMgaXMgbWF0Y2hpbmcgdGhlIHZhbHVlIG9mIHRoZSByZXNwb25zZSBoZWFkZXIuCiAgLSAqKmxlbmd0aCAoTnVtYmVyKSoqIDogVGhlIG51bWJlciB0aGF0IHdpbGwgYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgdmFsdWUgb2YgdGhlIHJlc3BvbnNlIGhlYWRlciBoYXMgYSBsZW5ndGggb2YgdGhlIGRlZmluZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMuCiAgLSAqKm1pbkxlbmd0aCAoTnVtYmVyKSoqIDogVGhlIG51bWJlciB0aGF0IHdpbGwgYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgdmFsdWUgb2YgdGhlIHJlc3BvbnNlIGhlYWRlciBoYXMgYSBtaW5pbXVtIGxlbmd0aCBvZiB0aGUgZGVmaW5lZCBudW1iZXIgb2YgY2hhcmFjdGVycy4KICAtICoqbWF4TGVuZ3RoIChOdW1iZXIpKiogOiBUaGUgbnVtYmVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB2YWx1ZSBvZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGhhcyBhIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBkZWZpbmVkIG51bWJlciBvZiBjaGFyYWN0ZXJzLgogIC0gKipub3RFeGlzdCAoQm9vbGVhbikqKiA6IFRoZSBpbnZlcnNlIG9mIHRoZSBrZXkgY2hlY2sgdGhhdCB2ZXJpZnkgaWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdCBpbiB0aGUgcmVzcG9uc2UgaGVhZGVyLgogIC0gKiphc3NlcnQgKFN0cmluZykqKiA6IEEgY3VzdG9tIFBvc3RtYW4gYXNzZXJ0aW9uIHRvIGNoZWNrIGlmIHRoZSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2UgaGVhZGVyIG1hdGNoZXMgd2l0aCB0aGUgcHJvdmlkZWQgYXNzZXJ0aW9uIChleGFtcGxlOiBgbm90LnRvLmJlLm51bGxgKS4KCkZvciBtb3JlIGRldGFpbHMsIHJldmlldyB0aGUgW2NvbnRlbnQtdGVzdHMgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1jb250ZW50LXRlc3RzKS4KCiMjIyBQb3J0bWFuIC0gYGV4dGVuZFRlc3RzYCBwcm9wZXJ0aWVzCgpXaGVuIHlvdSBuZWVkIHRvIGFkZCBhZGRpdGlvbmFsIHRlc3RzIG9yIG92ZXJ3cml0ZSB0aGUgUG9ydG1hbi1nZW5lcmF0ZWQgdGVzdCwgeW91IGNhbiB1c2UgdGhlIGBleHRlbmRUZXN0c2AgdG8gZGVmaW5lIHRoZSByYXcgUG9zdG1hbiB0ZXN0cy4KQW55dGhpbmcgYWRkZWQgaW4gdGhlIGB0ZXN0c2AgYXJyYXkgd2lsbCBiZSBhZGRlZCB0byB0aGUgUG9zdG1hbiB0ZXN0IHNjcmlwdHMuCgojIyMjIGV4dGVuZFRlc3RzIG9wdGlvbnMKCi0gKipvcGVuQXBpT3BlcmF0aW9uSWQgKFN0cmluZykqKiA6IFJlZmVyZW5jZXMgdG8gdGhlIE9wZW5BUEkgb3BlcmF0aW9uSWQuIChleGFtcGxlOiBgbGVhZHNBbGxgKQotICoqb3BlbkFwaU9wZXJhdGlvbklkcyAoQXJyYXkpKiogOiBSZWZlcmVuY2VzIHRvIGFuIGFycmF5IG9mIE9wZW5BUEkgb3BlcmF0aW9uSWRzLCBleGFtcGxlOiBgWydsZWFkc0FsbCcsICdjb21wYW5pZXNBbGwnLCAnY29udGFjdHNBbGwnXWAKLSAqKm9wZW5BcGlPcGVyYXRpb24gKFN0cmluZykqKiA6IFJlZmVyZW5jZXMgdG8gYSBjb21iaW5hdGlvbiBvZiB0aGUgT3BlbkFQSSBtZXRob2QgJiBwYXRoIChleGFtcGxlOiBgR0VUOjovY3JtL2xlYWRzYCkKLSAqKmV4Y2x1ZGVGb3JPcGVyYXRpb25zIChBcnJheSB8IG9wdGlvbmFsKSoqIDogUmVmZXJlbmNlcyB0byBPcGVuQVBJIG9wZXJhdGlvbnMgdGhhdCB3aWxsIGJlIHNraXBwZWQgZm9yIHRhcmdldGluZywgZXhhbXBsZTogYFsibGVhZHNBZGQiLCAiR0VUOjovY3JtL2xlYWRzL3tpZH0iXWAKCi0gKip0ZXN0cyAoQXJyYXkpKiogOiBBcnJheSBvZiBhZGRpdGlvbmFsIFBvc3RtYW4gdGVzdCBzY3JpcHRzLiAgVmFsdWVzIGNhbiBiZSB0aGUgc2NyaXB0IGNvbnRlbnQgb3IgcGF0aCB0byB0aGUgc2NyaXB0IGZpbGUgKHdpdGggYGZpbGU6YCBwcmVmaXgpLgotICoqb3ZlcndyaXRlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiBmYWxzZSkqKiA6IFJlc2V0cyBhbGwgZ2VuZXJhdGVUZXN0cyBhbmQgb3ZlcndyaXRlcyB0aGVtIHdpdGggdGhlIGRlZmluZWQgdGVzdHMgZnJvbQogIHRoZSBgdGVzdHNgIGFycmF5LgotICoqYXBwZW5kIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogUGxhY2UgdGhlIHRlc3RzIGFmdGVyIChhcHBlbmQpIG9yIGJlZm9yZSAocHJlcGVuZCkgYWxsIGdlbmVyYXRlZCB0ZXN0cy4KCjxocj4KCiMjIyBQb3J0bWFuIC0gYGFzc2lnblZhcmlhYmxlc2AgcHJvcGVydGllcwoKVGhlICJhc3NpZ25WYXJpYWJsZXMiIGFsbG93cyB5b3UgdG8gc2V0IFBvc3RtYW4gY29sbGVjdGlvbiB2YXJpYWJsZXMgZm9yIGVhc2llciBhdXRvbWF0aW9uLgoKIyMjIyBhc3NpZ25WYXJpYWJsZXMgb3B0aW9ucwoKLSAqKm9wZW5BcGlPcGVyYXRpb25JZCAoU3RyaW5nKSoqIDogUmVmZXJlbmNlIHRvIHRoZSBPcGVuQVBJIG9wZXJhdGlvbklkIGZvciB3aGljaCB0aGUgUG9zdG1hbiBwbS5jb2xsZWN0aW9uVmFyaWFibGVzIHdpbGwgYmUgc2V0LiAoZXhhbXBsZTogYGxlYWRzQWxsYCkKLSAqKm9wZW5BcGlPcGVyYXRpb25JZHMgKEFycmF5KSoqIDogUmVmZXJlbmNlcyB0byBhbiBhcnJheSBvZiBPcGVuQVBJIG9wZXJhdGlvbklkcywgZm9yIHdoaWNoIHRoZSBQb3N0bWFuIHBtLmNvbGxlY3Rpb25WYXJpYWJsZXMgd2lsbCBiZSBzZXQuIGV4YW1wbGU6IGBbJ2xlYWRzQWxsJywgJ2NvbXBhbmllc0FsbCcsICdjb250YWN0c0FsbCddYAotICoqb3BlbkFwaU9wZXJhdGlvbiAoU3RyaW5nKSoqIDogUmVmZXJlbmNlIHRvIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgT3BlbkFQSSBtZXRob2QgJiBwYXRoLCBmb3Igd2hpY2ggdGhlIFBvc3RtYW4gcG0uY29sbGVjdGlvblZhcmlhYmxlcyB3aWxsIGJlIHNldC4gKGV4YW1wbGU6IGBHRVQ6Oi9jcm0vbGVhZHNgKQotICoqZXhjbHVkZUZvck9wZXJhdGlvbnMgKEFycmF5IHwgb3B0aW9uYWwpKiogOiBSZWZlcmVuY2VzIHRvIE9wZW5BUEkgb3BlcmF0aW9ucyB0aGF0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGFyZ2V0aW5nLCBleGFtcGxlOiBgWyJsZWFkc0FkZCIsICJHRVQ6Oi9jcm0vbGVhZHMve2lkfSJdYAoKLSAqKmNvbGxlY3Rpb25WYXJpYWJsZXMgKEFycmF5KSoqIDogQXJyYXkgb2Yga2V5L3ZhbHVlIHBhaXJzIHRvIHNldCB0aGUgUG9zdG1hbiBjb2xsZWN0aW9uIHZhcmlhYmxlcy4KICAtICoqcmVzcG9uc2VCb2R5UHJvcCAoU3RyaW5nKSoqIDogVGhlIHByb3BlcnR5IGZvciB3aGljaCB0aGUgdmFsdWUgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSByZXNwb25zZSBib2R5IGFuZCBzZXQgdGhlIHZhbHVlIGFzIHRoZSBwbS5jb2xsZWN0aW9uVmFyaWFibGVzIHZhbHVlLiBUbyBzdG9yZSB0aGUgcm9vdCBsZXZlbCwgdXNlIGAuYCBhcyBrZXkuCiAgLSAqKnJlc3BvbnNlSGVhZGVyUHJvcCAoU3RyaW5nKSoqIDogVGhlIHByb3BlcnR5IGZvciB3aGljaCB0aGUgdmFsdWUgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSByZXNwb25zZSBoZWFkZXIgYW5kIHNldCB0aGUgdmFsdWUgYXMgdGhlIHBtLmNvbGxlY3Rpb25WYXJpYWJsZXMgdmFsdWUuCiAgLSAqKnJlcXVlc3RCb2R5UHJvcCAoU3RyaW5nKSoqIDogVGhlIHByb3BlcnR5IGZvciB3aGljaCB0aGUgdmFsdWUgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSByZXF1ZXN0IGJvZHkgYW5kIHNldCB0aGUgdmFsdWUgYXMgdGhlIHBtLmNvbGxlY3Rpb25WYXJpYWJsZXMgdmFsdWUuCiAgLSAqKnZhbHVlIChTdHJpbmcpKiogOiBUaGUgZGVmaW5lZCB2YWx1ZSB0aGF0IHdpbGwgYmUgc2V0IGFzIHRoZSBwbS5jb2xsZWN0aW9uVmFyaWFibGVzIHZhbHVlLiBUaGUgdmFsdWUgY2FuIGJlIGdlbmVyYXRlZCB1c2luZyB0ZW1wbGF0ZSBleHByZXNzaW9ucy4gIEZvciB0aGUgZnVsbCBsaXN0IG9mIHRlbXBsYXRlIGV4cHJlc3Npb25zLCBjaGVjayB0aGUgW0Fzc2lnbiAmIE92ZXJ3cml0ZSBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvdGVzdHN1aXRlLWFzc2lnbi1vdmVyd3JpdGUjdGVtcGxhdGUtZXhwcmVzc2lvbnMpCiAgLSAqKm5hbWUgKHN0cmluZyBPUFRJT05BTCB8ICBEZWZhdWx0OiA8b3BlcmF0aW9uSWQ+Ljx2YXJQcm9wPikqKiA6IFRoZSBkZXNpcmVkIG5hbWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gYXMgdGhlIFBvc3RtYW4gdmFyaWFibGUgbmFtZS4gSWYgdGhlIGBuYW1lYCBpcyBub3QgcHJvdmlkZWQsIFBvcnRtYW4gd2lsbCBnZW5lcmF0ZSBhIHZhcmlhYmxlIG5hbWUsIHVzaW5nIHRoZSBgPG9wZXJhdGlvbklkPi48dmFyUHJvcD5gLiBZb3UgY2FuIHBhc3MgeW91ciBvd24gdGVtcGxhdGUgZXhwcmVzc2lvbnMsIHRvIGR5bmFtaWNhbGx5IGdlbmVyYXRlIHZhcmlhYmxlIG5hbWVzLiBUaGUgdGVtcGxhdGUgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBkeW5hbWljIGV4cHJlc3Npb25zOiBgPG9wZXJhdGlvbklkPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBvcGVyYXRpb24gSUQgKGV4YW1wbGUgYGxlYWRzQWRkYCksIGA8cGF0aD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgb3BlcmF0aW9uIElEIChleGFtcGxlIGAvY3JtL2xlYWRzYCksIGA8cGF0aFJlZj5gIHJlc3VsdHMgaW4gdGhlIFBvcnRtYW4gb3BlcmF0aW9uIChleGFtcGxlIGBQT1NUOjovY3JtL2xlYWRzX1BPU1RgKSwgYDxtZXRob2Q+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG1ldGhvZCAoZXhhbXBsZSBgR0VUYCksIGA8b3BzUmVmPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBgb3BlcmF0aW9uSWRgIHdpdGggYSBmYWxsYmFjayB0byB0aGUgYHBhdGhSZWZgIGluIGNhc2UgdGhlIE9wZW5BUEkgZG9lcyBub3QgY29udGFpbiBhbiBvcGVyYXRpb24gSUQuIEZvciB0aGUgZnVsbCBsaXN0IG9mIGR5bmFtaWMgZXhwcmVzc2lvbnMsIGNoZWNrIHRoZSBbQXNzaWduICYgT3ZlcndyaXRlIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy90ZXN0c3VpdGUtYXNzaWduLW92ZXJ3cml0ZSN0ZW1wbGF0ZS1leHByZXNzaW9ucykuCgpGb3IgbW9yZSBkZXRhaWxzLCByZXZpZXcgdGhlIFtBc3NpZ24gdmFyaWFibGVzIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy90ZXN0c3VpdGUtYXNzaWduLXZhcmlhYmxlcykgYW5kIFtBc3NpZ24gJiBPdmVyd3JpdGUgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tb3ZlcndyaXRlI3RlbXBsYXRlLWV4cHJlc3Npb25zKS4KCjxocj4KCiMjIyBQb3J0bWFuIC0gYG92ZXJ3cml0ZXNgIHByb3BlcnRpZXMKClRvIGZhY2lsaXRhdGUgYXV0b21hdGlvbiwgeW91IG1pZ2h0IHdhbnQgdG8gbW9kaWZ5IHByb3BlcnRpZXMgd2l0aCAicmFuZG9taXplZCIgb3Igc3BlY2lmaWMgdmFsdWVzLiBUaGUgb3ZlcndyaXRlcyBhcmUgbWFwcGVkIGJhc2VkIG9uIHRoZSBPcGVuQVBJIG9wZXJhdGlvbklkIG9yIE9wZW5BUEkgT3BlcmF0aW9uIHJlZmVyZW5jZS4KCiMjIyMgb3ZlcndyaXRlcyBvcHRpb25zCgotICoqb3BlbkFwaU9wZXJhdGlvbklkIChTdHJpbmcpKiogOiBSZWZlcmVuY2UgdG8gdGhlIE9wZW5BUEkgb3BlcmF0aW9uSWQgZm9yIHdoaWNoIHRoZSBQb3N0bWFuIHJlcXVlc3Qgd2lsbCBiZSBvdmVyd3JpdHRlbiBvciBleHRlbmRlZC4gKGV4YW1wbGU6IGBsZWFkc0FsbGApCi0gKipvcGVuQXBpT3BlcmF0aW9uSWRzIChBcnJheSkqKiA6IFJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2YgT3BlbkFQSSBvcGVyYXRpb25JZHMsIGZvciB3aGljaCB0aGUgUG9zdG1hbiByZXF1ZXN0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gb3IgZXh0ZW5kZWQgKGV4YW1wbGU6IGBbJ2xlYWRzQWxsJywgJ2NvbXBhbmllc0FsbCcsICdjb250YWN0c0FsbCddYCkKLSAqKm9wZW5BcGlPcGVyYXRpb24gKFN0cmluZykqKiA6IFJlZmVyZW5jZSB0byBjb21iaW5hdGlvbiBvZiB0aGUgT3BlbkFQSSBtZXRob2QgJiBwYXRoLCBmb3Igd2hpY2ggdGhlIFBvc3RtYW4gcmVxdWVzdCB3aWxsIGJlIG92ZXJ3cml0dGVuIG9yIGV4dGVuZGVkIChleGFtcGxlOiBgR0VUOjovY3JtL2xlYWRzYCkKLSAqKmV4Y2x1ZGVGb3JPcGVyYXRpb25zIChBcnJheSB8IG9wdGlvbmFsKSoqIDogUmVmZXJlbmNlcyB0byBPcGVuQVBJIG9wZXJhdGlvbnMgdGhhdCB3aWxsIGJlIHNraXBwZWQgZm9yIHRhcmdldGluZy4gKGV4YW1wbGU6IGBbImxlYWRzQWRkIiwgIkdFVDo6L2NybS9sZWFkcy97aWR9Il1gKQoKLSAqKm92ZXJ3cml0ZVJlcXVlc3RCYXNlVXJsIChPYmplY3QpKiogOgoKICBLZXkvdmFsdWUgcGFpciB0byBvdmVyd3JpdGUgdGhlIFBvc3RtYW4gUmVxdWVzdCBCYXNlIFVSTC4KCiAgLSAqKnZhbHVlIChTdHJpbmcpKiogOiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gb3ZlcndyaXRlL2V4dGVuZCB0aGUgdmFsdWUgaW4gdGhlIHJlcXVlc3QgYmFzZSBVUkwuIChleGFtcGxlOiBgaHR0cHM6Ly9leGFtcGxlLmNvbWAgb3IgYHt7YmFzZVVybH19YCkuCiAgLSAqKm92ZXJ3cml0ZSAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogdHJ1ZSkqKiA6IE92ZXJ3cml0ZXMgdGhlIHJlcXVlc3QgYmFzZSBVUkwgdmFsdWUgT1IgYXR0YWNoIHRoZSB2YWx1ZSB0byB0aGUgb3JpZ2luYWwgcmVxdWVzdCBiYXNlIFVSTCB2YWx1ZS4KICAtICoqcmVtb3ZlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiBmYWxzZSkqKiA6IFJlbW92ZXMgdGhlIHRhcmdldGVkIHJlcXVlc3QgYmFzZSBVUkwgZnJvbSBQb3N0bWFuLgoKLSAqKm92ZXJ3cml0ZVJlcXVlc3RRdWVyeVBhcmFtcyAoQXJyYXkpKiogOgoKICBBcnJheSBvZiBrZXkvdmFsdWUgcGFpcnMgdG8gb3ZlcndyaXRlIGluIHRoZSBQb3N0bWFuIFJlcXVlc3QgUXVlcnkgcGFyYW1zLgoKICAtICoqa2V5IChTdHJpbmcpKiogOiBUaGUga2V5IHRoYXQgd2lsbCBiZSB0YXJnZXRlZCBpbiB0aGUgcmVxdWVzdCBRdWVyeSBQYXJhbSB0byBvdmVyd3JpdGUvZXh0ZW5kLiBTdXBwb3J0cyB3aWxkY2FyZCAqIHRvIG1hdGNoIGFueSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzLiBGb3IgZXhhbXBsZSwgYGZpbHRlclsqXWAgbWF0Y2hlcyBgZmlsdGVyWzBdYCwgYGZpbHRlclsxXWAsIGV0Yy4KICAtICoqdmFsdWUgKFN0cmluZykqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBvdmVyd3JpdGUvZXh0ZW5kIHRoZSB2YWx1ZSBpbiB0aGUgcmVxdWVzdCBRdWVyeSBQYXJhbSBPUiB1c2UgdGhlIFtQb3N0bWFuIER5bmFtaWMgdmFyaWFibGVzXShodHRwczovL2xlYXJuaW5nLlBvc3RtYW4uY29tL2RvY3Mvd3JpdGluZy1zY3JpcHRzL3NjcmlwdC1yZWZlcmVuY2VzL3ZhcmlhYmxlcy1saXN0LykgdG8gdXNlIGR5bmFtaWMgdmFsdWVzIGxpa2UgYHt7JGd1aWR9fWAgb3IgYHt7JHJhbmRvbUludH19YC4gU3VwcG9ydHMgYWxzbyB0ZW1wbGF0aW5nIHRvIGdlbmVyYXRlIHZhcmlhYmxlIG5hbWVzLiBUaGUgdGVtcGxhdGUgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBkeW5hbWljIGV4cHJlc3Npb25zOiBgPG9wZXJhdGlvbklkPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBvcGVyYXRpb24gSUQgKGV4YW1wbGUgYGxlYWRzQWRkYCksIGA8cGF0aD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgb3BlcmF0aW9uIElEIChleGFtcGxlIGAvY3JtL2xlYWRzYCksIGA8cGF0aFJlZj5gIHJlc3VsdHMgaW4gdGhlIFBvcnRtYW4gb3BlcmF0aW9uIChleGFtcGxlIGBQT1NUOjovY3JtL2xlYWRzX1BPU1RgKSwgYDxtZXRob2Q+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG1ldGhvZCAoZXhhbXBsZSBgR0VUYCksIGA8b3BzUmVmPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBgb3BlcmF0aW9uSWRgIHdpdGggYSBmYWxsYmFjayB0byB0aGUgYHBhdGhSZWZgIGluIGNhc2UgdGhlIE9wZW5BUEkgZG9lcyBub3QgY29udGFpbiBhbiBvcGVyYXRpb24gSUQuIEZvciB0aGUgZnVsbCBsaXN0IG9mIGR5bmFtaWMgZXhwcmVzc2lvbnMsIGNoZWNrIHRoZSBbQXNzaWduICYgT3ZlcndyaXRlIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy90ZXN0c3VpdGUtYXNzaWduLW92ZXJ3cml0ZSN0ZW1wbGF0ZS1leHByZXNzaW9ucykuCiAgLSAqKm92ZXJ3cml0ZSAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogdHJ1ZSkqKiA6IE92ZXJ3cml0ZXMgdGhlIHJlcXVlc3QgcXVlcnkgcGFyYW0gdmFsdWUgT1IgYXR0YWNoIHRoZSB2YWx1ZSB0byB0aGUgb3JpZ2luYWwgcmVxdWVzdCBxdWVyeSBwYXJhbSB2YWx1ZS4KICAtICoqZGlzYWJsZSAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogZmFsc2UpKiogOiBEaXNhYmxlcyB0aGUgcmVxdWVzdCBxdWVyeSBwYXJhbSBpbiBQb3N0bWFuLgogIC0gKipyZW1vdmUgKEJvb2xlYW4gdHJ1ZS9mYWxzZSB8IERlZmF1bHQ6IGZhbHNlKSoqIDogUmVtb3ZlcyB0aGUgdGFyZ2V0ZWQgcmVxdWVzdCBxdWVyeSBwYXJhbSBmcm9tIFBvc3RtYW4uCiAgLSAqKmluc2VydCAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogdHJ1ZSkqKiA6IEluc2VydCBhZGRpdGlvbmFsIHRoZSByZXF1ZXN0IHF1ZXJ5IHBhcmFtIGluIFBvc3RtYW4gdGhhdCBhcmUgbm90IHByZXNlbnQgaW4gT3BlbkFQSS4KICAtICoqZGVzY3JpcHRpb24gKFN0cmluZykqKiA6IE92ZXJ3cml0ZXMgdGhlIHJlcXVlc3QgcXVlcnkgcGFyYW0gZGVzY3JpcHRpb24gaW4gUG9zdG1hbi4KCi0gKipvdmVyd3JpdGVSZXF1ZXN0UGF0aFZhcmlhYmxlcyAoQXJyYXkpKiogOgoKICBBcnJheSBvZiBrZXkvdmFsdWUgcGFpcnMgdG8gb3ZlcndyaXRlIGluIHRoZSBQb3N0bWFuIFJlcXVlc3QgUGF0aCBWYXJpYWJsZXMuCgogIC0gKiprZXkgKFN0cmluZykqKiA6IFRoZSBrZXkgdGhhdCB3aWxsIGJlIHRhcmdldGVkIGluIHRoZSByZXF1ZXN0IFBhdGggdmFyaWFibGVzIHRvIG92ZXJ3cml0ZS9leHRlbmQuCiAgLSAqKnZhbHVlIChTdHJpbmcpKiogOiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gb3ZlcndyaXRlL2V4dGVuZCB0aGUgdmFsdWUgaW4gdGhlIHJlcXVlc3QgcGF0aCB2YXJpYWJsZSBPUiB1c2UgdGhlIFtQb3N0bWFuIER5bmFtaWMgdmFyaWFibGVzXShodHRwczovL2xlYXJuaW5nLlBvc3RtYW4uY29tL2RvY3Mvd3JpdGluZy1zY3JpcHRzL3NjcmlwdC1yZWZlcmVuY2VzL3ZhcmlhYmxlcy1saXN0LykgdG8gdXNlIGR5bmFtaWMgdmFsdWVzIGxpa2UgYHt7JGd1aWR9fWAgb3IgYHt7JHJhbmRvbUludH19YC4gU3VwcG9ydHMgYWxzbyB0ZW1wbGF0aW5nIHRvIGdlbmVyYXRlIHZhcmlhYmxlIG5hbWVzLiBUaGUgdGVtcGxhdGUgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBkeW5hbWljIGV4cHJlc3Npb25zOiBgPG9wZXJhdGlvbklkPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBvcGVyYXRpb24gSUQgKGV4YW1wbGUgYGxlYWRzQWRkYCksIGA8cGF0aD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgb3BlcmF0aW9uIElEIChleGFtcGxlIGAvY3JtL2xlYWRzYCksIGA8cGF0aFJlZj5gIHJlc3VsdHMgaW4gdGhlIFBvcnRtYW4gb3BlcmF0aW9uIChleGFtcGxlIGBQT1NUOjovY3JtL2xlYWRzX1BPU1RgKSwgYDxtZXRob2Q+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG1ldGhvZCAoZXhhbXBsZSBgR0VUYCksIGA8b3BzUmVmPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBgb3BlcmF0aW9uSWRgIHdpdGggYSBmYWxsYmFjayB0byB0aGUgYHBhdGhSZWZgIGluIGNhc2UgdGhlIE9wZW5BUEkgZG9lcyBub3QgY29udGFpbiBhbiBvcGVyYXRpb24gSUQuIEZvciB0aGUgZnVsbCBsaXN0IG9mIGR5bmFtaWMgZXhwcmVzc2lvbnMsIGNoZWNrIHRoZSBbQXNzaWduICYgT3ZlcndyaXRlIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy90ZXN0c3VpdGUtYXNzaWduLW92ZXJ3cml0ZSN0ZW1wbGF0ZS1leHByZXNzaW9ucykuCiAgLSAqKm92ZXJ3cml0ZSAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogdHJ1ZSkqKiA6IE92ZXJ3cml0ZXMgdGhlIHJlcXVlc3QgcGF0aCB2YXJpYWJsZSB2YWx1ZSBPUiBhdHRhY2hlcyB0aGUgdmFsdWUgdG8gdGhlIG9yaWdpbmFsIHJlcXVlc3QgUGF0aCB2YXJpYWJsZSB2YWx1ZS4KICAtICoqcmVtb3ZlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiBmYWxzZSkqKiA6IFJlbW92ZXMgdGhlIHRhcmdldGVkIHJlcXVlc3QgcGF0aCB2YXJpYWJsZSBmcm9tIFBvc3RtYW4uCiAgLSAqKmluc2VydCAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogdHJ1ZSkqKiA6IEluc2VydCBhZGRpdGlvbmFsIHRoZSByZXF1ZXN0IHBhdGggdmFyaWFibGUgaW4gUG9zdG1hbiB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiBPcGVuQVBJLgogIC0gKipkZXNjcmlwdGlvbiAoU3RyaW5nKSoqIDogT3B0aW9uYWwsIE92ZXJ3cml0ZXMgdGhlIHJlcXVlc3QgcGF0aCB2YXJpYWJsZSBkZXNjcmlwdGlvbiBpbiBQb3N0bWFuLgoKLSAqKm92ZXJ3cml0ZVJlcXVlc3RIZWFkZXJzIChBcnJheSkqKiA6CgogIEFycmF5IG9mIGtleS92YWx1ZSBwYWlycyB0byBvdmVyd3JpdGUgaW4gdGhlIFBvc3RtYW4gUmVxdWVzdCBIZWFkZXJzLgoKICAtICoqa2V5IChTdHJpbmcpKiogOiBUaGUga2V5IHRoYXQgd2lsbCBiZSB0YXJnZXRlZCBpbiB0aGUgcmVxdWVzdCBIZWFkZXJzIHRvIG92ZXJ3cml0ZS9leHRlbmQuCiAgLSAqKnZhbHVlIChTdHJpbmcpKiogOiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gb3ZlcndyaXRlL2V4dGVuZCB0aGUgdmFsdWUgaW4gdGhlIHJlcXVlc3QgaGVhZGVycyBPUiB1c2UgdGhlIFtQb3N0bWFuIER5bmFtaWMgdmFyaWFibGVzXShodHRwczovL2xlYXJuaW5nLlBvc3RtYW4uY29tL2RvY3Mvd3JpdGluZy1zY3JpcHRzL3NjcmlwdC1yZWZlcmVuY2VzL3ZhcmlhYmxlcy1saXN0LykgdG8gdXNlIGR5bmFtaWMgdmFsdWVzIGxpa2UgYHt7JGd1aWR9fWAgb3IgYHt7JHJhbmRvbUludH19YC4gU3VwcG9ydHMgYWxzbyB0ZW1wbGF0aW5nIHRvIGdlbmVyYXRlIHZhcmlhYmxlIG5hbWVzLiBUaGUgdGVtcGxhdGUgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBkeW5hbWljIGV4cHJlc3Npb25zOiBgPG9wZXJhdGlvbklkPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBvcGVyYXRpb24gSUQgKGV4YW1wbGUgYGxlYWRzQWRkYCksIGA8cGF0aD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgb3BlcmF0aW9uIElEIChleGFtcGxlIGAvY3JtL2xlYWRzYCksIGA8cGF0aFJlZj5gIHJlc3VsdHMgaW4gdGhlIFBvcnRtYW4gb3BlcmF0aW9uIChleGFtcGxlIGBQT1NUOjovY3JtL2xlYWRzX1BPU1RgKSwgYDxtZXRob2Q+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG1ldGhvZCAoZXhhbXBsZSBgR0VUYCksIGA8b3BzUmVmPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBgb3BlcmF0aW9uSWRgIHdpdGggYSBmYWxsYmFjayB0byB0aGUgYHBhdGhSZWZgIGluIGNhc2UgdGhlIE9wZW5BUEkgZG9lcyBub3QgY29udGFpbiBhbiBvcGVyYXRpb24gSUQuIEZvciB0aGUgZnVsbCBsaXN0IG9mIGR5bmFtaWMgZXhwcmVzc2lvbnMsIGNoZWNrIHRoZSBbQXNzaWduICYgT3ZlcndyaXRlIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy90ZXN0c3VpdGUtYXNzaWduLW92ZXJ3cml0ZSN0ZW1wbGF0ZS1leHByZXNzaW9ucykuCiAgLSAqKm92ZXJ3cml0ZSAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogdHJ1ZSkqKiA6IE92ZXJ3cml0ZXMgdGhlIHJlcXVlc3QgaGVhZGVyIHZhbHVlIE9SIGF0dGFjaGVzIHRoZSB2YWx1ZSB0byB0aGUgb3JpZ2luYWwgcmVxdWVzdCBoZWFkZXIgdmFsdWUuCiAgLSAqKmRpc2FibGUgKEJvb2xlYW4gdHJ1ZS9mYWxzZSB8IERlZmF1bHQ6IGZhbHNlKSoqIDogRGlzYWJsZXMgdGhlIHJlcXVlc3QgaGVhZGVyIGluIFBvc3RtYW4uCiAgLSAqKnJlbW92ZSAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogZmFsc2UpKiogOiBSZW1vdmVzIHRoZSB0YXJnZXRlZCByZXF1ZXN0IGhlYWRlciBmcm9tIFBvc3RtYW4uCiAgLSAqKmluc2VydCAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogdHJ1ZSkqKiA6IEluc2VydCB0aGUgYWRkaXRpb25hbCByZXF1ZXN0IGhlYWRlciBpbiBQb3N0bWFuIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluIE9wZW5BUEkuCiAgLSAqKmRlc2NyaXB0aW9uIChTdHJpbmcpKiogOiBPdmVyd3JpdGVzIHRoZSByZXF1ZXN0IGhlYWRlciBkZXNjcmlwdGlvbiBpbiBQb3N0bWFuLgoKLSAqKm92ZXJ3cml0ZVJlcXVlc3RCb2R5IChBcnJheSkqKiA6CgogIEFycmF5IG9mIGtleS92YWx1ZSBwYWlycyB0byBvdmVyd3JpdGUgaW4gdGhlIFBvc3RtYW4gUmVxdWVzdCBCb2R5LgoKICAqKkFwcGxpY2FibGUgZm9yIHJlcXVlc3QgYm9keSB0eXBlczogSlNPTi9mb3JtLWRhdGEveC13d3ctZm9ybS11cmxlbmNvZGVkKioKICAtICoqa2V5IChTdHJpbmcpKiogOiBUaGUga2V5IHRoYXQgd2lsbCBiZSB0YXJnZXRlZCBpbiB0aGUgcmVxdWVzdCBib2R5IHRvIG92ZXJ3cml0ZS9leHRlbmQuIFVzZSB0aGUgYC5gIG5vdGF0aW9uIHRvIHRhcmdldCBuZXN0ZWQgcHJvcGVydGllcy4gVG8gdGFyZ2V0IHRoZSByb290IGxldmVsLCB1c2UgYC5gIGFzIGtleS4KICAtICoqdmFsdWUgKEFueSkqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBvdmVyd3JpdGUvZXh0ZW5kIHRoZSBrZXkgaW4gdGhlIHJlcXVlc3QgYm9keSBPUiB1c2UgdGhlIFtQb3N0bWFuIER5bmFtaWMgdmFyaWFibGVzXShodHRwczovL2xlYXJuaW5nLlBvc3RtYW4uY29tL2RvY3Mvd3JpdGluZy1zY3JpcHRzL3NjcmlwdC1yZWZlcmVuY2VzL3ZhcmlhYmxlcy1saXN0LykgdG8gdXNlIGR5bmFtaWMgdmFsdWVzIGxpa2UgYHt7JGd1aWR9fWAgb3IgYHt7JHJhbmRvbUludH19YC4gVGhlIHZhbHVlIGNhbiBiZSBhIHRleHQvbnVtYmVyL2Jvb2xlYW4vYXJyYXkvb2JqZWN0IG9yIFBvc3RtYW4gdmFyaWFibGUgKHRvIHBhc3MgdGhlIFBvc3RtYW4gdmFyaWFibGUgYXMgdHlwZSBib29sZWFuIG9yIG51bWJlciwgdXNlIGB7e3t2YXJpYWJsZU5hbWV9fX1gIHN1cnJvdW5kZWQgYnkgM3gge3t7IGFuZCAzeCB9fX0pLiBTdXBwb3J0cyBhbHNvIHRlbXBsYXRpbmcgdG8gZ2VuZXJhdGUgdmFyaWFibGUgbmFtZXMuIFRoZSB0ZW1wbGF0ZSBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIGR5bmFtaWMgZXhwcmVzc2lvbnM6IGA8b3BlcmF0aW9uSWQ+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiBJRCAoZXhhbXBsZSBgbGVhZHNBZGRgKSwgYDxwYXRoPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBvcGVyYXRpb24gSUQgKGV4YW1wbGUgYC9jcm0vbGVhZHNgKSwgYDxwYXRoUmVmPmAgcmVzdWx0cyBpbiB0aGUgUG9ydG1hbiBvcGVyYXRpb24gKGV4YW1wbGUgYFBPU1Q6Oi9jcm0vbGVhZHNfUE9TVGApLCBgPG1ldGhvZD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgbWV0aG9kIChleGFtcGxlIGBHRVRgKSwgYDxvcHNSZWY+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIGBvcGVyYXRpb25JZGAgd2l0aCBhIGZhbGxiYWNrIHRvIHRoZSBgcGF0aFJlZmAgaW4gY2FzZSB0aGUgT3BlbkFQSSBkb2VzIG5vdCBjb250YWluIGFuIG9wZXJhdGlvbiBJRC4gRm9yIHRoZSBmdWxsIGxpc3Qgb2YgZHluYW1pYyBleHByZXNzaW9ucywgY2hlY2sgdGhlIFtBc3NpZ24gJiBPdmVyd3JpdGUgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tb3ZlcndyaXRlI3RlbXBsYXRlLWV4cHJlc3Npb25zKS4KICAtICoqb3ZlcndyaXRlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBib2R5IHZhbHVlIE9SIGF0dGFjaGVzIHRoZSB2YWx1ZSB0byB0aGUgb3JpZ2luYWwgcmVxdWVzdCBib2R5IHZhbHVlLgogIC0gKipyZW1vdmUgKEJvb2xlYW4gdHJ1ZS9mYWxzZSB8IERlZmF1bHQ6IGZhbHNlKSoqIDogUmVtb3ZlcyB0aGUgcmVxdWVzdCBib2R5IHByb3BlcnR5LCBpbmNsdWRpbmcgdGhlIHZhbHVlLgoKICAqKkFwcGxpY2FibGUgZm9yIHJlcXVlc3QgYm9keSB0eXBlczogZm9ybS1kYXRhL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCoqCiAgLSAqKmluc2VydCAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogdHJ1ZSkqKiA6IEluc2VydCB0aGUgYWRkaXRpb25hbCByZXF1ZXN0IGZvcm0ga2V5L3ZhbHVlIGluIFBvc3RtYW4gdGhhdCBhcmUgbm90IHByZXNlbnQgaW4gT3BlbkFQSS4KICAtICoqZGVzY3JpcHRpb24gKFN0cmluZykqKiA6IE92ZXJ3cml0ZXMgdGhlIHJlcXVlc3QgZm9ybSBkYXRhIGRlc2NyaXB0aW9uIGluIFBvc3RtYW4uCgotICoqb3ZlcndyaXRlUmVxdWVzdFNlY3VyaXR5IChPYmplY3QpKiogOgoKICBBIFBvc3RtYW4gUmVxdWVzdEF1dGhEZWZpbml0aW9uIG9iamVjdCB0aGF0IHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcmVxdWVzdC5UaGUgc2VjdXJpdHkgb3ZlcndyaXRlcyBwcm92aWRlcyBhIG51bWJlciBvZiBzZWN1cml0eSB0eXBlczoKCiAgLSAqKnJlbW92ZSAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogZmFsc2UpKiogOiBVbnNldHMgdGhlIEF1dGhvcml6YXRpb24gdHlwZSBpbiBQb3N0bWFuLgoKICAtICoqYXBpS2V5Kio6IFRoZSBBUEkga2V5IGF1dGggd2lsbCBzZW5kIGEga2V5LXZhbHVlIHBhaXIgdG8gdGhlIEFQSSBlaXRoZXIgaW4gdGhlIHJlcXVlc3QgaGVhZGVycyBvciBxdWVyeSBwYXJhbWV0ZXJzLgogICAgLSAqKnZhbHVlIChTdHJpbmcpKiogOiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIGluc2VydGVkIGFzIHRoZSBQb3N0bWFuIGFwaUtleSB2YWx1ZS4gSXQgY2FuIGJlIGEgcGxhaW4gdmFsdWUgb3IgYSBQb3N0bWFuIHZhcmlhYmxlLgogICAgLSAqKmtleSAoU3RyaW5nIHwgb3B0aW9uYWwpKiogOiBUaGUgImtleSIgdmFsdWUgdGhhdCB3aWxsIGJlIGluc2VydGVkIGluIHRoZSBQb3N0bWFuIGFwaUtleSBrZXkgZmllbGQuIEl0IGNhbiBiZSBhIHBsYWluIHZhbHVlIG9yIGEgUG9zdG1hbiB2YXJpYWJsZS4KICAgIC0gKippbiAoU3RyaW5nIHwgb3B0aW9uYWwpKiogOiBUaGUgImluIiB2YWx1ZSB0aGF0IGRlZmluZXMgd2hlcmUgdGhlIEFwaSBLZXkgd2lsbCBiZSBhZGRlZCBpbiB0aGUgUG9zdG1hbiByZXF1ZXN0IEhlYWRlciBvciBRdWVyeSBwYXJhbXMuIFBvc3RtYW4gc3VwcG9ydHMgYGhlYWRlcmAgZm9yICJIZWFkZXIiIG9yIGBxdWVyeWAgZm9yICJRdWVyeSBQYXJhbXMiLgoKICBgYGBqc29uCiAgIm92ZXJ3cml0ZVJlcXVlc3RTZWN1cml0eSI6IHsKICAgICAgICAiYXBpS2V5IjogewogICAgICAgICAgInZhbHVlIjogInt7YXBpS2V5fX0iCiAgICAgICAgfQogICAgICB9CiAgYGBgCgogIC0gKipiZWFyZXIqKjogVGhlIGJlYXJlciB0b2tlbnMgYWxsb3cgcmVxdWVzdHMgdG8gYXV0aGVudGljYXRlIHVzaW5nIGFuIGFjY2VzcyBrZXksIHN1Y2ggYXMgYSBKU09OIFdlYiBUb2tlbiAoSldUKS4KICAgIC0gKip0b2tlbiAoU3RyaW5nKSoqIDogVGhlICJ0b2tlbiIgdGhhdCB3aWxsIGJlIGluc2VydGVkIGFzIHRoZSBQb3N0bWFuIGJlYXJlciB0b2tlbiB2YWx1ZS4gSXQgY2FuIGJlIGEgcGxhaW4gdmFsdWUgb3IgYSBQb3N0bWFuIHZhcmlhYmxlLgoKICBgYGBqc29uCiAgIm92ZXJ3cml0ZVJlcXVlc3RTZWN1cml0eSI6IHsKICAgICAgICAiYmVhcmVyIjogewogICAgICAgICAgInRva2VuIjogInt7YmVhcmVyVG9rZW59fSIKICAgICAgICB9CiAgICAgIH0KICBgYGAKCiAgLSAqKmJhc2ljKio6IEJhc2ljIGF1dGhlbnRpY2F0aW9uIGludm9sdmVzIHNlbmRpbmcgYSB2ZXJpZmllZCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgd2l0aCB5b3VyIHJlcXVlc3QuCiAgICAtICoqdXNlcm5hbWUgKFN0cmluZykqKiA6IFRoZSB1c2VybmFtZSB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgYXMgdGhlIGJhc2ljIGF1dGhlbnRpY2F0aW9uIHVzZXJuYW1lIHZhbHVlCiAgICAtICoqcGFzc3dvcmQgKFN0cmluZykqKiA6IFRoZSBwYXNzd29yZCB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgYXMgdGhlIGJhc2ljIGF1dGhlbnRpY2F0aW9uIHBhc3N3b3JkIHZhbHVlCiAgCiAgYGBganNvbgogICJvdmVyd3JpdGVSZXF1ZXN0U2VjdXJpdHkiOiB7CiAgICAgICAgImJhc2ljIjogewogICAgICAgICAgInVzZXJuYW1lIjogInt7dXNlcm5hbWV9fSIsCiAgICAgICAgICAicGFzc3dvcmQiOiAie3twYXNzd29yZH19IiwKICAgICAgICB9CiAgICAgIH0KICBgYGAKICAKICAtICoqUG9zdG1hbiBzZWN1cml0eSBvcHRpb25zKio6IE92ZXJ3cml0ZS9JbnNlcnQgUG9zdG1hbiBhdXRob3JpemF0aW9uIHNldHRpbmdzLgogICAgLSAqKlBvc3RtYW4gVHlwZSAoQXJyYXkpKiogOiBUaGUgUG9zdG1hbiBhdXRob3JpemF0aW9uIG9wdGlvbiB0eXBlLiBTdXBwb3J0ZWQgdHlwZXMgYXJlOiBgYXdzdjRgLCBgZGlnZXN0YCwgYGVkZ2VncmlkYCwgYG50bG1gLCBgb2F1dGgxYCwgYG9hdXRoMmAKICAgICAgLSAqKkF0dHJpYnV0ZXMqKiA6IGtleS92YWx1ZS90eXBlIGFzIGRlZmluZWQgaW4gUG9zdG1hbiAodGhlIGVhc2llc3Qgd2F5IHRvIGRlZmluZSBpdCwgaXMgdG8gc2V0IGl0IG1hbnVhbGx5IGluIFBvc3RtYW4sIGV4cG9ydCB0aGUgY29sbGVjdGlvbiBhbmQgZXh0cmFjdCB0aGUgbWF0Y2hpbmcgdmFsdWVzIGZyb20gdGhlIEpTT04gZmlsZSkuCgpGb3IgbW9yZSBkZXRhaWxzLCByZXZpZXcgdGhlIFtPdmVyd3JpdGVzIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy90ZXN0c3VpdGUtb3ZlcndyaXRlcykgYW5kIFtBc3NpZ24gJiBPdmVyd3JpdGUgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tb3ZlcndyaXRlI3RlbXBsYXRlLWV4cHJlc3Npb25zKS4KCjxocj4KCiMjIyBQb3J0bWFuIC0gYGZ1enppbmdgIHByb3BlcnRpZXMKCj4gRnV6emluZyBvciBmdXp6IHRlc3RpbmcgaXMgYW4gYXV0b21hdGVkIHNvZnR3YXJlIHRlc3RpbmcgdGVjaG5pcXVlIHRoYXQgaW52b2x2ZXMgcHJvdmlkaW5nIGludmFsaWQsIHVuZXhwZWN0ZWQsIG9yIHJhbmRvbSBkYXRhIGFzIGlucHV0cyB0byBhIGNvbXB1dGVyIHByb2dyYW0gKGEgUkVTVCBBUEkgaW4gdGhlIGNhc2Ugb2YgUG9ydG1hbikuCgpGdXp6aW5nIGNoYW5nZXMgdGhlIHJlcXVlc3RzIChib2R5LCBxdWVyeSBwYXJhbXMsIC4uLiApIHRvIHVuZXhwZWN0ZWQgdmFsdWVzIGluIGFuIGVmZm9ydCB0byBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yIGFuZCBlcnJvcnMgaW4gdGhlIEFQSSByZXNwb25zZS4KRm9yIFBvcnRtYW4sIHdlIHdhbnQgdG8gcHJvdmlkZSBhIHNpbXBsZSBmb3JtIG9mIEZ1enppbmcsIHdpdGggdGhlIGdvYWwgdG8gdHJpZ2dlciB2YWxpZGF0aW9uL2Vycm9yIHJlc3BvbnNlcywgd2hpY2ggY2FuIGJlIGNvbnRyYWN0IHRlc3RlZC4KVGhlIGF1dG9tYXRpYyBmdXp6aW5nIGlzIGJhc2VkIG9uIHRoZSBPcGVuQVBJIHJlcXVlc3QgcHJvcGVydGllcywgd2hlcmUgZm9yIGVhY2ggZnV6emluZyB2YXJpYXRpb24gYSBuZXcgUG9zdG1hbiByZXF1ZXN0IHdpbGwgYmUgZ2VuZXJhdGVkLCB3aXRoIG9wdGlvbmFsIGNvbnRyYWN0IHRlc3RzLgoKVGhlIEZ1enppbmcgb3B0aW9ucyBkZXNjcmliZSB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5nIGZvciBhdmFpbGFibGUgT3BlbkFQSSBmdXp6aW5nIHZhcmlhdGlvbnMuCgpSRU1BUktTOgoKLSBbUG9zdG1hbiBEeW5hbWljIHZhcmlhYmxlc10oaHR0cHM6Ly9sZWFybmluZy5Qb3N0bWFuLmNvbS9kb2NzL3dyaXRpbmctc2NyaXB0cy9zY3JpcHQtcmVmZXJlbmNlcy92YXJpYWJsZXMtbGlzdC8pIGFyZSByZW5kZXJlZCBiZWZvcmUgYmVpbmcgZnV6emVkLgotIFJlZ3VsYXIgUG9zdG1hbiB2YXJpYWJsZXMgYXJlIHNraXBwZWQgZnJvbSBmdXp6aW5nLgoKIyMjIyBmdXp6aW5nIG9wdGlvbnMKCi0gKipyZXF1ZXN0Qm9keSAoQXJyYXkpKiogOgoKICBBbiBhcnJheSBvZiBmdXp6aW5nIG9wdGlvbnMgZm9yIHRoZSBQb3N0bWFuIFJlcXVlc3QgQm9keS4KCiAgUkVNQVJLOiBGdXp6aW5nIGlzIG9ubHkgYXBwbGljYWJsZSBmb3IgT3BlbkFQSSByZXF1ZXN0IGJvZGllcyBvZiBtZWRpYSB0eXBlOiAiYXBwbGljYXRpb24vanNvbiIKCiAgLSAqKnJlcXVpcmVkRmllbGRzIChCb29sZWFuKSoqIDogUmVtb3ZlcyB0aGUgcHJvcGVydGllcyAmIHZhbHVlcyBmcm9tIHRoZSByZXF1ZXN0IGJvZHkgdGhhdCBhcmUgbWFya2VkIGFzICJyZXF1aXJlZCIgaW4gT3BlbkFQSS4KICAtICoqbWluaW11bU51bWJlckZpZWxkcyAoQm9vbGVhbikqKiA6IENoYW5nZXMgdGhlIHZhbHVlcyBvZiB0aGUgbnVtZXJpYyBmaWVsZHMgdG8gYSBsb3dlciB2YWx1ZSB0aGFuIHRoZSBkZWZpbmVkICJtaW5pbXVtIiBwcm9wZXJ0eSBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KICAtICoqbWF4aW11bU51bWJlckZpZWxkcyAoQm9vbGVhbikqKiA6IENoYW5nZXMgdGhlIHZhbHVlIG9mIHRoZSBudW1lcmljIGZpZWxkcyB0byBhIGhpZ2hlciB2YWx1ZSB0aGFuIHRoZSBkZWZpbmVkICJtYXhpbXVtIiBwcm9wZXJ0eSBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KICAtICoqbWluTGVuZ3RoRmllbGRzIChCb29sZWFuKSoqIDogQ2hhbmdlcyB0aGUgbGVuZ3RoIG9mIHRoZSB2YWx1ZSB0byBhIGxvd2VyIGxlbmd0aCB0aGFuIHRoZSBkZWZpbmVkICJtaW5MZW5ndGgiIHByb3BlcnR5IGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgogIC0gKiptYXhMZW5ndGhGaWVsZHMgKEJvb2xlYW4pKiogOiBDaGFuZ2VzIHRoZSBsZW5ndGggb2YgdGhlIHZhbHVlIHRvIGEgaGlnaGVyIGxlbmd0aCB0aGFuIHRoZSBkZWZpbmVkICJtYXhMZW5ndGgiIHByb3BlcnR5IGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKLSAqKnJlcXVlc3RRdWVyeVBhcmFtcyAoQXJyYXkpKiogOgoKICBBbiBhcnJheSBvZiBmdXp6aW5nIG9wdGlvbnMgZm9yIHRoZSBQb3N0bWFuIFJlcXVlc3QgUXVlcnkgcGFyYW1ldGVycy4KCiAgLSAqKnJlcXVpcmVkRmllbGRzIChCb29sZWFuKSoqIDogUmVtb3ZlcyB0aGUgcHJvcGVydGllcyAmIHZhbHVlcyBmcm9tIHRoZSByZXF1ZXN0IHF1ZXJ5IHBhcmFtcyB0aGF0IGFyZSBtYXJrZWQgYXMgInJlcXVpcmVkIiBpbiBPcGVuQVBJLgogIC0gKiptaW5pbXVtTnVtYmVyRmllbGRzIChCb29sZWFuKSoqIDogQ2hhbmdlcyB0aGUgdmFsdWVzIG9mIHRoZSBudW1lcmljIGZpZWxkcyB0byBhIGxvd2VyIHZhbHVlIHRoYW4gdGhlIGRlZmluZWQgIm1pbmltdW0iIHByb3BlcnR5IGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgogIC0gKiptYXhpbXVtTnVtYmVyRmllbGRzIChCb29sZWFuKSoqIDogQ2hhbmdlcyB0aGUgdmFsdWUgb2YgdGhlIG51bWVyaWMgZmllbGRzIHRvIGEgaGlnaGVyIHZhbHVlIHRoYW4gdGhlIGRlZmluZWQgIm1heGltdW0iIHByb3BlcnR5IGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgogIC0gKiptaW5MZW5ndGhGaWVsZHMgKEJvb2xlYW4pKiogOiBDaGFuZ2VzIHRoZSBsZW5ndGggb2YgdGhlIHZhbHVlIHRvIGEgbG93ZXIgbGVuZ3RoIHRoYW4gdGhlIGRlZmluZWQgIm1pbkxlbmd0aCIgcHJvcGVydHkgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCiAgLSAqKm1heExlbmd0aEZpZWxkcyAoQm9vbGVhbikqKiA6IENoYW5nZXMgdGhlIGxlbmd0aCBvZiB0aGUgdmFsdWUgdG8gYSBoaWdoZXIgbGVuZ3RoIHRoYW4gdGhlIGRlZmluZWQgIm1heExlbmd0aCIgcHJvcGVydHkgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgotICoqcmVxdWVzdEhlYWRlcnMgKEFycmF5KSoqIDoKCiAgQW4gYXJyYXkgb2YgZnV6emluZyBvcHRpb25zIGZvciB0aGUgUG9zdG1hbiBSZXF1ZXN0IEhlYWRlcnMuCgogIC0gKipyZXF1aXJlZEZpZWxkcyAoQm9vbGVhbikqKiA6IFJlbW92ZXMgdGhlIHByb3BlcnRpZXMgJiB2YWx1ZXMgZnJvbSB0aGUgcmVxdWVzdCBoZWFkZXJzIHRoYXQgYXJlIG1hcmtlZCBhcyAicmVxdWlyZWQiIGluIE9wZW5BUEkuCiAgLSAqKm1pbmltdW1OdW1iZXJGaWVsZHMgKEJvb2xlYW4pKiogOiBDaGFuZ2VzIHRoZSB2YWx1ZXMgb2YgdGhlIG51bWVyaWMgZmllbGRzIHRvIGEgbG93ZXIgdmFsdWUgdGhhbiB0aGUgZGVmaW5lZCAibWluaW11bSIgcHJvcGVydHkgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCiAgLSAqKm1heGltdW1OdW1iZXJGaWVsZHMgKEJvb2xlYW4pKiogOiBDaGFuZ2VzIHRoZSB2YWx1ZSBvZiB0aGUgbnVtZXJpYyBmaWVsZHMgdG8gYSBoaWdoZXIgdmFsdWUgdGhhbiB0aGUgZGVmaW5lZCAibWF4aW11bSIgcHJvcGVydHkgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCiAgLSAqKm1pbkxlbmd0aEZpZWxkcyAoQm9vbGVhbikqKiA6IENoYW5nZXMgdGhlIGxlbmd0aCBvZiB0aGUgdmFsdWUgdG8gYSBsb3dlciBsZW5ndGggdGhhbiB0aGUgZGVmaW5lZCAibWluTGVuZ3RoIiBwcm9wZXJ0eSBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KICAtICoqbWF4TGVuZ3RoRmllbGRzIChCb29sZWFuKSoqIDogQ2hhbmdlcyB0aGUgbGVuZ3RoIG9mIHRoZSB2YWx1ZSB0byBhIGhpZ2hlciBsZW5ndGggdGhhbiB0aGUgZGVmaW5lZCAibWF4TGVuZ3RoIiBwcm9wZXJ0eSBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCkZvciBtb3JlIGRldGFpbHMsIHJldmlldyB0aGUgW2Z1enppbmcgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1mdXp6aW5nLXRlc3RzKS4KCjxocj4KCiMjIyBQb3J0bWFuIC0gYG9wZXJhdGlvblByZVJlcXVlc3RTY3JpcHRzYCBwcm9wZXJ0aWVzCgpUaGUgYG9wZXJhdGlvblByZVJlcXVlc3RTY3JpcHRzYCBjb25maWd1cmF0aW9uIHdpbGwgaW5qZWN0IHByZS1yZXF1ZXN0IHNjcmlwdHMgaW4gdGhlIFBvc3RtYW4gY29sbGVjdGlvbiwgb24gcmVxdWVzdCBsZXZlbC4KUG9zdG1hbiBleGVjdXRlcyBwcmUtcmVxdWVzdCBzY3JpcHRzIGJlZm9yZSBhIHJlcXVlc3QgcnVucy4gSWYgeW91IHdhbnQgdG8gc2V0IHRoZSBQb3N0bWFuIENvbGxlY3Rpb24gcHJlLXJlcXVlc3Qgc2NyaXB0cyBvbiB0aGUgY29sbGVjdGlvbiBsZXZlbCwgeW91IGNhbiB1c2UgdGhlIGBnbG9iYWxzYCA+IGBjb2xsZWN0aW9uUHJlUmVxdWVzdFNjcmlwdHNgIGNvbmZpZ3VyYXRpb24uClRoZSBgb3BlcmF0aW9uUHJlUmVxdWVzdFNjcmlwdHNgIGlzIGluc2VydGVkIG9uIHRoZSByZXF1ZXN0IGxldmVsLgoKIyMjIyBvcGVyYXRpb25QcmVSZXF1ZXN0U2NyaXB0cyBvcHRpb25zCgotICoqb3BlbkFwaU9wZXJhdGlvbklkIChTdHJpbmcpKiogOiBSZWZlcmVuY2UgdG8gdGhlIE9wZW5BUEkgb3BlcmF0aW9uSWQgb24gd2hpY2ggdGhlICJQcmUtcmVxdWVzdCBTY3JpcHRzIiB3aWxsIGJlIGluc2VydGVkLiAoZXhhbXBsZTogYGxlYWRzQWxsYCkKLSAqKm9wZW5BcGlPcGVyYXRpb25JZHMgKEFycmF5KSoqIDogUmVmZXJlbmNlcyB0byBhbiBhcnJheSBvZiBPcGVuQVBJIG9wZXJhdGlvbklkcywgZm9yIHdoaWNoIHRoZSAiUHJlLXJlcXVlc3QgU2NyaXB0cyIgd2lsbCBiZSBpbnNlcnRlZCAoZXhhbXBsZTogYFsnbGVhZHNBbGwnLCAnY29tcGFuaWVzQWxsJywgJ2NvbnRhY3RzQWxsJ11gCi0gKipvcGVuQXBpT3BlcmF0aW9uIChTdHJpbmcpKiogOiBSZWZlcmVuY2UgdG8gY29tYmluYXRpb24gb2YgdGhlIE9wZW5BUEkgbWV0aG9kICYgcGF0aCwgZm9yIHdoaWNoIHRoZSAiUHJlLXJlcXVlc3QgU2NyaXB0cyIgd2lsbCBiZSBpbnNlcnRlZCAoZXhhbXBsZTogYEdFVDo6L2NybS9sZWFkc2ApCi0gKipleGNsdWRlRm9yT3BlcmF0aW9ucyAoQXJyYXkgfCBvcHRpb25hbCkqKiA6IFJlZmVyZW5jZXMgdG8gT3BlbkFQSSBvcGVyYXRpb25zIHRoYXQgd2lsbCBiZSBza2lwcGVkIGZvciB0YXJnZXRpbmcuIChleGFtcGxlOiBgWyJsZWFkc0FkZCIsICJHRVQ6Oi9jcm0vbGVhZHMve2lkfSJdYCkKCi0gKipzY3JpcHRzIChBcnJheSkqKiA6IEFycmF5IG9mIHNjcmlwdHMgdGhhdCB3aWxsIGJlIGluamVjdGVkIGFzIFBvc3RtYW4gUHJlLXJlcXVlc3QgU2NyaXB0cyBvbiByZXF1ZXN0IGxldmVsLCB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYmVmb3JlIHRoZSB0YXJnZXRlZCByZXF1ZXN0cyBpbiB0aGlzIGNvbGxlY3Rpb24uIFZhbHVlcyBjYW4gYmUgdGhlIHNjcmlwdCBjb250ZW50IG9yIHBhdGggdG8gdGhlIHNjcmlwdCBmaWxlICh3aXRoIGBmaWxlOmAgcHJlZml4KS4KCjxocj4KCiMjIyBQb3J0bWFuIC0gYGdsb2JhbHNgIHByb3BlcnR5CgpUaGUgY29uZmlndXJhdGlvbiBkZWZpbmVkIGluIHRoZSBgZ2xvYmFsc2Agd2lsbCBiZSBleGVjdXRlZCBvbiB0aGUgZnVsbCBQb3N0bWFuIGNvbGxlY3Rpb24uIFRoaXMgaXMgaGFuZHkgaWYgeW91IG5lZWQgdG8gZG8gbWFzcyByZXBsYWNlbWVudHMgb2YgdmFyaWFibGVzIG9yIHNwZWNpZmljIHdvcmRzL2tleXMvdmFsdWVzIGluIHRoZSBmdWxsIGNvbGxlY3Rpb24gdGhhdCBjYW5ub3QgYmUgb3ZlcndyaXR0ZW4gcGVyIHJlcXVlc3QuCgojIyMjIGdsb2JhbHMgb3B0aW9ucwoKLSAqKnN0cmlwUmVzcG9uc2VFeGFtcGxlcyAoRGVmYXVsdDogZmFsc2UpKiogOiBTdHJpcCB0aGUgcmVzcG9uc2UgZXhhbXBsZXMgZnJvbSB0aGUgZ2VuZXJhdGVkIFBvc3RtYW4gY29sbGVjdGlvbi4KLSAqKnZhcmlhYmxlQ2FzaW5nKiogOiBDaGFuZ2UgdGhlIGNhc2luZyBvZiB0aGUgYXV0by1nZW5lcmF0ZWQgUG9zdG1hbiB2YXJpYWJsZXMuIFN1cHBvcnRlZCB2YWx1ZXMgYXJlOiBgY2FtZWxDYXNlYCwgYHBhc2NhbENhc2VgLCBga2ViYWJDYXNlYCwgYHRyYWluQ2FzZWAsIGBzbmFrZUNhc2VgLCBgYWRhQ2FzZWAsIGBjb25zdGFudENhc2VgLCBgY29ib2xDYXNlYCwgYGRvdE5vdGF0aW9uYC4gU2VlIHRoZSBbQXNzaWduICYgT3ZlcndyaXRlIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy90ZXN0c3VpdGUtYXNzaWduLW92ZXJ3cml0ZSNnbG9iYWxzKSBmb3IgdGhlIGRpZmZlcmVudCBjYXNpbmcgb3B0aW9ucy4KLSAqKnNlcGFyYXRvclN5bWJvbCAoRGVmYXVsdDogIjo6IikqKiA6IENoYW5nZSB0aGUgc2VwYXJhdG9yIHN5bWJvbCBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIFBvc3RtYW4gdGVzdE5hbWUgZGVzY3JpcHRpb24gKEV4YW1wbGU6IGBbR0VUXTo6L2NybS9sZWFkcyAtIFN0YXR1cyBjb2RlIGlzIDJ4eGApLiBIZWxwZnVsIHdoZW4gdXNpbmcgdGhlIFtwb3N0bWFuLXRvLWs2XShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9zdG1hbi10by1rNikgY29udmVydGVyLgotICoqY29sbGVjdGlvblByZVJlcXVlc3RTY3JpcHRzKiogOiBBcnJheSBvZiBzY3JpcHRzIHRoYXQgd2lsbCBiZSBpbmplY3RlZCBhcyBQb3N0bWFuIENvbGxlY3Rpb24gUHJlLXJlcXVlc3QgU2NyaXB0cyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYnkgUG9zdG1hbiBiZWZvcmUgZXZlcnkgcmVxdWVzdCBpbiB0aGlzIGNvbGxlY3Rpb24uIFZhbHVlcyBjYW4gYmUgdGhlIHNjcmlwdCBjb250ZW50IG9yIHBhdGggdG8gdGhlIHNjcmlwdCBmaWxlICh3aXRoIGBmaWxlOmAgcHJlZml4KS4KLSAqKmNvbGxlY3Rpb25UZXN0U2NyaXB0cyoqOiBBcnJheSBvZiBzY3JpcHRzIHRoYXQgd2lsbCBiZSBpbmplY3RlZCBhcyBQb3N0bWFuIENvbGxlY3Rpb24gVGVzdCBTY3JpcHRzIHdpbGwgYmUgZXhlY3V0ZWQgYnkgUG9zdG1hbiBhZnRlciBldmVyeSByZXF1ZXN0IGluIHRoaXMgY29sbGVjdGlvbi4gVmFsdWVzIGNhbiBiZSB0aGUgc2NyaXB0IGNvbnRlbnQgb3IgcGF0aCB0byB0aGUgc2NyaXB0IGZpbGUgKHdpdGggYGZpbGU6YCBwcmVmaXgpLgotICoqY29sbGVjdGlvblZhcmlhYmxlcyoqOiBBIG1hcCBvZiBrZXkgdmFsdWUgcGFpcnMgdGhhdCB3aWxsIGluc2VydGVkIGFzIFBvc3RtYW4gY29sbGVjdGlvbiB2YXJpYWJsZXMuCi0gKiprZXlWYWx1ZVJlcGxhY2VtZW50cyoqIDogQSBtYXAgb2YgcGFyYW1ldGVyIGtleSBuYW1lcyB0aGF0IHdpbGwgaGF2ZSB0aGVpciB2YWx1ZXMgcmVwbGFjZWQgd2l0aCB0aGUgcHJvdmlkZWQgUG9zdG1hbiB2YXJpYWJsZXMuCi0gKip2YWx1ZVJlcGxhY2VtZW50cyoqIDogQSBtYXAgb2YgdmFsdWVzIHRoYXQgd2lsbCBoYXZlIHRoZWlyIHZhbHVlcyByZXBsYWNlZCB3aXRoIHRoZSBwcm92aWRlZCB2YWx1ZXMuCi0gKipyYXdSZXBsYWNlbWVudHMqKiA6IENvbnNpZGVyIHRoaXMgYSAic2VhcmNoICYgcmVwbGFjZSIgdXRpbGl0eSwgdGhhdCB3aWxsIHNlYXJjaCBhIHN0cmluZy9vYmplY3QvLi4uIGFuZCByZXBsYWNlIGl0IHdpdGggYW5vdGhlciBzdHJpbmcvb2JqZWN0Ly4uLgogIFRoaXMgaXMgdmVyeSB1c2VmdWwgdG8gcmVwbGFjZSBkYXRhIGZyb20gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiwgYmVmb3JlIGl0IGlzIHVzZWQgaW4gdGhlIFBvcnRtYW4gdGVzdCBhdXRvbWF0aW9uIGdlbmVyYXRpb24uCi0gKipwb3J0bWFuUmVwbGFjZW1lbnRzKiogOiBUaGUgInNlYXJjaCAmIHJlcGxhY2UiIHV0aWxpdHkgcmlnaHQgYmVmb3JlIHRoZSBmaW5hbCBQb3N0bWFuIGZpbGUgaXMgd3JpdHRlbiwgdGhhdCB3aWxsIHNlYXJjaCBhIHN0cmluZy9vYmplY3QvLi4uIGFuZCByZXBsYWNlIGl0IHdpdGggYW5vdGhlciBzdHJpbmcvb2JqZWN0Ly4uLgogIFRoaXMgaXMgcHJhY3RpY2FsIHRvIHJlcGxhY2UgYW55IGRhdGEgZnJvbSB0aGUgZ2VuZXJhdGVkIFBvcnRtYW4gY29sbGVjdGlvbiwgYmVmb3JlIGl0IGlzIHVzZWQgaW4gUG9zdG1hbiAvIE5ld21hbiB0ZXN0IGV4ZWN1dGlvbi4KLSAqKm9yZGVyT2ZPcGVyYXRpb25zKiogOiBUaGUgYG9yZGVyT2ZPcGVyYXRpb25zYCBpcyBhIGxpc3Qgb2YgT3BlbkFQSSBvcGVyYXRpb25zLCB3aGljaCBpcyB1c2VkIGJ5IFBvcnRtYW4gdG8gc29ydCB0aGUgUG9zdG1hbiByZXF1ZXN0cyBpbiB0aGUgZGVzaXJlZCBvcmRlciwgaW4gdGhlaXIgZm9sZGVyLiBUaGUgb3JkZXJpbmcgZnJvbSBgb3JkZXJPZk9wZXJhdGlvbnNgIGlzIHBlcmZvcm1lZCBwZXIgZm9sZGVyLiBJdGVtcyB0aGF0IGFyZSAqKm5vdCoqIGRlZmluZWQgaW4gdGhlIGBvcmRlck9mT3BlcmF0aW9uc2AgbGlzdCB3aWxsIHJlbWFpbiBhdCB0aGVpciBjdXJyZW50IG9yZGVyLgotICoqb3JkZXJPZkZvbGRlcnMqKiA6IFRoZSBgb3JkZXJPZkZvbGRlcnNgIGlzIGEgbGlzdCBvZiBQb3N0bWFuIGZvbGRlciBuYW1lcywgd2hpY2ggaXMgdXNlZCBieSBQb3J0bWFuIHRvIHNvcnQgdGhlIFBvc3RtYW4gZm9sZGVycyBpbiB0aGUgZGVzaXJlZCBvcmRlci4gRm9sZGVycyB0aGF0IGFyZSAqKm5vdCoqIGRlZmluZWQgaW4gdGhlIGBvcmRlck9mRm9sZGVyc2AgbGlzdCB3aWxsIHJlbWFpbiBhdCB0aGVpciBjdXJyZW50IG9yZGVyLCBhZnRlciB0aGUgcmUtb3JkZXIgZm9sZGVycy4KLSAqKnNlY3VyaXR5T3ZlcndyaXRlcyoqIDogT3ZlcndyaXRlIG9mIHRoZSBPcGVuQVBJIFNlY3VyaXR5IFNjaGVtZSBPYmplY3QgKHN1cHBvcnRlZCB0eXBlczogImFwaUtleSIsICJodHRwIGJhc2ljIGF1dGgiLCAiaHR0cCBiZWFyZXIgdG9rZW4iKSBvciBpbmplY3QgYSBQb3N0bWFuIGF1dGhvcml6YXRpb24gb3B0aW9uIChzdXBwb3J0ZWQgdHlwZXM6IGF3c3Y0LCBkaWdlc3QsIGVkZ2VncmlkLCBudGxtLCBvYXV0aDEsIG9hdXRoMikgb24gYSBjb2xsZWN0aW9uIGxldmVsLiAKCiAgVGhlIHNlY3VyaXR5IG92ZXJ3cml0ZXMgcHJvdmlkZXMgYSBudW1iZXIgb2Ygc2VjdXJpdHkgdHlwZXM6CgogIC0gKipyZW1vdmUgKEJvb2xlYW4gdHJ1ZS9mYWxzZSB8IERlZmF1bHQ6IGZhbHNlKSoqIDogVW5zZXRzIHRoZSBBdXRob3JpemF0aW9uIHR5cGUgaW4gUG9zdG1hbi4KICAKICAtICoqYXBpS2V5Kio6IFRoZSBBUEkga2V5IGF1dGggd2lsbCBzZW5kIGEga2V5LXZhbHVlIHBhaXIgdG8gdGhlIEFQSSBlaXRoZXIgaW4gdGhlIHJlcXVlc3QgaGVhZGVycyBvciBxdWVyeSBwYXJhbWV0ZXJzLgogICAgLSAqKnZhbHVlIChTdHJpbmcpKiogOiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIGluc2VydGVkIGFzIHRoZSBQb3N0bWFuIGFwaUtleSB2YWx1ZS4gSXQgY2FuIGJlIGEgcGxhaW4gdmFsdWUgb3IgYSBQb3N0bWFuIHZhcmlhYmxlLgogICAgLSAqKmtleSAoU3RyaW5nIHwgb3B0aW9uYWwpKiogOiBUaGUgImtleSIgdmFsdWUgdGhhdCB3aWxsIGJlIGluc2VydGVkIGluIHRoZSBQb3N0bWFuIGFwaUtleSBrZXkgZmllbGQuIEl0IGNhbiBiZSBhIHBsYWluIHZhbHVlIG9yIGEgUG9zdG1hbiB2YXJpYWJsZS4KICAgIC0gKippbiAoU3RyaW5nIHwgb3B0aW9uYWwpKiogOiBUaGUgImluIiB2YWx1ZSB0aGF0IGRlZmluZXMgd2hlcmUgdGhlIEFwaSBLZXkgd2lsbCBiZSBhZGRlZCBpbiB0aGUgUG9zdG1hbiByZXF1ZXN0IEhlYWRlciBvciBRdWVyeSBwYXJhbXMuIFBvc3RtYW4gc3VwcG9ydHMgYGhlYWRlcmAgZm9yICJIZWFkZXIiIG9yIGBxdWVyeWAgZm9yICJRdWVyeSBQYXJhbXMiLgogIAogIGBgYGpzb24KICAic2VjdXJpdHlPdmVyd3JpdGVzIjogewogICAgICAgICJhcGlLZXkiOiB7CiAgICAgICAgICAidmFsdWUiOiAie3thcGlLZXl9fSIKICAgICAgICB9CiAgICAgIH0KICBgYGAKICAKICAtICoqYmVhcmVyKio6IFRoZSBiZWFyZXIgdG9rZW5zIGFsbG93IHJlcXVlc3RzIHRvIGF1dGhlbnRpY2F0ZSB1c2luZyBhbiBhY2Nlc3Mga2V5LCBzdWNoIGFzIGEgSlNPTiBXZWIgVG9rZW4gKEpXVCkuCiAgICAtICoqdG9rZW4gKFN0cmluZykqKiA6IFRoZSAidG9rZW4iIHRoYXQgd2lsbCBiZSBpbnNlcnRlZCBhcyB0aGUgUG9zdG1hbiBiZWFyZXIgdG9rZW4gdmFsdWUuIEl0IGNhbiBiZSBhIHBsYWluIHZhbHVlIG9yIGEgUG9zdG1hbiB2YXJpYWJsZS4KICAKICBgYGBqc29uCiAgInNlY3VyaXR5T3ZlcndyaXRlcyI6IHsKICAgICAgICAiYmVhcmVyIjogewogICAgICAgICAgInRva2VuIjogInt7YmVhcmVyVG9rZW59fSIKICAgICAgICB9CiAgICAgIH0KICBgYGAKICAKICAtICoqYmFzaWMqKjogQmFzaWMgYXV0aGVudGljYXRpb24gaW52b2x2ZXMgc2VuZGluZyBhIHZlcmlmaWVkIHVzZXJuYW1lIGFuZCBwYXNzd29yZCB3aXRoIHlvdXIgcmVxdWVzdC4KICAgIC0gKip1c2VybmFtZSAoU3RyaW5nKSoqIDogVGhlIHVzZXJuYW1lIHRoYXQgd2lsbCBiZSBpbnNlcnRlZCBhcyB0aGUgYmFzaWMgYXV0aGVudGljYXRpb24gdXNlcm5hbWUgdmFsdWUKICAgIC0gKipwYXNzd29yZCAoU3RyaW5nKSoqIDogVGhlIHBhc3N3b3JkIHRoYXQgd2lsbCBiZSBpbnNlcnRlZCBhcyB0aGUgYmFzaWMgYXV0aGVudGljYXRpb24gcGFzc3dvcmQgdmFsdWUKICAKICBgYGBqc29uCiAgInNlY3VyaXR5T3ZlcndyaXRlcyI6IHsKICAgICAgICAiYmFzaWMiOiB7CiAgICAgICAgICAidXNlcm5hbWUiOiAie3t1c2VybmFtZX19IiwKICAgICAgICAgICJwYXNzd29yZCI6ICJ7e3Bhc3N3b3JkfX0iLAogICAgICAgIH0KICAgICAgfQogIGBgYAogIAogIC0gKipQb3N0bWFuIHNlY3VyaXR5IG9wdGlvbnMqKjogT3ZlcndyaXRlL0luc2VydCBQb3N0bWFuIGF1dGhvcml6YXRpb24gc2V0dGluZ3MuCiAgICAtICoqUG9zdG1hbiBUeXBlIChBcnJheSkqKiA6IFRoZSBQb3N0bWFuIGF1dGhvcml6YXRpb24gb3B0aW9uIHR5cGUuIFN1cHBvcnRlZCB0eXBlcyBhcmU6IGBhd3N2NGAsIGBkaWdlc3RgLCBgZWRnZWdyaWRgLCBgbnRsbWAsIGBvYXV0aDFgLCBgb2F1dGgyYAogICAgICAtICoqQXR0cmlidXRlcyoqIDoga2V5L3ZhbHVlL3R5cGUgYXMgZGVmaW5lZCBpbiBQb3N0bWFuICh0aGUgZWFzaWVzdCB3YXkgdG8gZGVmaW5lIGl0LCBpcyB0byBzZXQgaXQgbWFudWFsbHkgaW4gUG9zdG1hbiwgZXhwb3J0IHRoZSBjb2xsZWN0aW9uIGFuZCBleHRyYWN0IHRoZSBtYXRjaGluZyB2YWx1ZXMgZnJvbSB0aGUgSlNPTiBmaWxlKS4gCiAgCiAgYGBganNvbgogIHsKICAgICJnbG9iYWxzIjogewogICAgICAic2VjdXJpdHlPdmVyd3JpdGVzIjogewogICAgICAgICJvYXV0aDEiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJrZXkiOiAiYWRkRW1wdHlQYXJhbXNUb1NpZ24iLAogICAgICAgICAgICAidmFsdWUiOiB0cnVlLAogICAgICAgICAgICAidHlwZSI6ICJib29sZWFuIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImtleSI6ICJ0aW1lc3RhbXAiLAogICAgICAgICAgICAidmFsdWUiOiAiMTQ2MTMxOTc2OSIsCiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJrZXkiOiAibm9uY2UiLAogICAgICAgICAgICAidmFsdWUiOiAiaWszb1Q1IiwKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImtleSI6ICJjb25zdW1lclNlY3JldCIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJEK0VkUS1ncyQtJUAyTnU3IiwKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImtleSI6ICJjb25zdW1lcktleSIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJSS0NHem5hN2J2OVlENTdjIiwKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImtleSI6ICJzaWduYXR1cmVNZXRob2QiLAogICAgICAgICAgICAidmFsdWUiOiAiSE1BQy1TSEExIiwKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImtleSI6ICJ2ZXJzaW9uIiwKICAgICAgICAgICAgInZhbHVlIjogIjEuMCIsCiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJrZXkiOiAiYWRkUGFyYW1zVG9IZWFkZXIiLAogICAgICAgICAgICAidmFsdWUiOiBmYWxzZSwKICAgICAgICAgICAgInR5cGUiOiAiYm9vbGVhbiIKICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9CiAgYGBgCgpGb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBgZ2xvYmFsc2AgY29uZmlndXJhdGlvbiBvcHRpb25zICwgcmV2aWV3IHRoZSBbZ2xvYmFscyBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvcG9ydG1hbi1nbG9iYWxzKSBhbmQgW29yZGVyaW5nIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy9wb3N0bWFuLW9yZGVyaW5nKQoKPGhyPgoKIyMgQ29uZmlndXJlIGF1dG9tYXRpYyB1cGxvYWQgdG8gUG9zdG1hbiBBcHAKCj4gUkVNQVJLOiBQb3J0bWFuIGRvZXMgKipub3QqKiByZXF1aXJlIHlvdSB0byBoYXZlIGEgUG9zdG1hbiBhY2NvdW50LgoKSW4gY2FzZSB5b3Ugd2FudCB0byBzeW5jIHRoZSBnZW5lcmF0ZWQgUG9zdG1hbiBjb2xsZWN0aW9uIHdpdGggdGhlIFBvc3RtYW4gYXBwIChgcG9ydG1hbiAtLXN5bmNQb3N0bWFuYCksIHlvdSB3b3VsZCBuZWVkIGEgUG9zdG1hbiBhY2NvdW50IHNpbmNlIFBvcnRtYW4gbGV2ZXJhZ2VzIHRoZSBQb3N0bWFuIEFQSSB0byBzeW5jIHRoZSBjb2xsZWN0aW9uLgoKVGhpcyBjYW4gYmUgYSAiZnJlZSIgUG9zdG1hbiBhY2NvdW50IG9yIGFueSBvZiB0aGUgcGFpZCBbUG9zdG1hbiBwbGFuc10oaHR0cHM6Ly93d3cucG9zdG1hbi5jb20vcHJpY2luZy8pLgoKVGhlIGdlbmVyYXRlZCBQb3N0bWFuIGNvbGxlY3Rpb24gY2FuIGFsd2F5cyBiZSBbaW1wb3J0ZWQgbWFudWFsbHldKGh0dHBzOi8vbGVhcm5pbmcucG9zdG1hbi5jb20vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvaW1wb3J0aW5nLWFuZC1leHBvcnRpbmctZGF0YS8jaW1wb3J0aW5nLWRhdGEtaW50by1wb3N0bWFuKSwgd2l0aG91dCBhIFBvc3RtYW4gYWNjb3VudC4KClRvIGVuYWJsZSBhdXRvbWF0aWMgdXBsb2FkcyBvZiB0aGUgZ2VuZXJhdGVkIFBvc3RtYW4gY29sbGVjdGlvbiB0aHJvdWdoIFBvcnRtYW4sIGZvbGxvdyB0aGVzZSBzdGVwczoKCjEuIEdldCB5b3VyIFBvc3RtYW4gQVBJIGtleQoKIVtEb2N1bWVudGF0aW9uIFBpcGVsaW5lXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi9tYWluL2RvY3MvaW1nL3Bvc3RtYW4tYXV0b21hdGlvbi0wLnBuZykKCiFbRG9jdW1lbnRhdGlvbiBQaXBlbGluZV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vbWFpbi9kb2NzL2ltZy9wb3N0bWFuLWF1dG9tYXRpb24tMS5wbmcpCgohW0RvY3VtZW50YXRpb24gUGlwZWxpbmVdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL21haW4vZG9jcy9pbWcvcG9zdG1hbi1hdXRvbWF0aW9uLTIucG5nKQoKMi4gR290byB0aGUgcm9vdCBmb2xkZXIgb2YgeW91ciBwcm9qZWN0CgozLiBDb3B5IFtlbnYtcG9zdG1hbi1hcHAtZXhhbXBsZV0oLi8uZW52LXBvc3RtYW4tYXBwLmV4YW1wbGUpIGFzIGAuZW52YCBpbiB0aGUgcm9vdCBmb2xkZXIgb2YgeW91ciBwcm9qZWN0Cgo0LiBFbnRlciB5b3VyIFBvc3RtYW4gQVBJIGtleSBpbiBhIGxvY2FsIGAuZW52YCBmaWxlLCBhcyBgUE9TVE1BTl9BUElfS0VZPVtyZXBsYWNlIHdpdGggUG9zdG1hbiBhcGkga2V5XWAKCk5leHQgdG8gdGhlIFBvc3RtYW4gQVBJIGtleSwgeW91IGNhbiBhbHNvIHBhc3MgYWxvbmcgdGhlIFBvc3RtYW4gV29ya3NwYWNlIG5hbWUgJiB0aGUgc3BlY2lmaWMgUG9zdG1hbiBDb2xsZWN0aW9uIFVJRC4KClN1cHBvcnRlZCBQb3N0bWFuIEFQSSAuRU5WIHZhcmlhYmxlczoKCi0gKipQT1NUTUFOX0FQSV9LRVkqKiA6IFBvc3RtYW4gQVBJIGtleQotICoqUE9TVE1BTl9XT1JLU1BBQ0VfTkFNRSoqIDogUG9zdG1hbiBXb3Jrc3BhY2UgbmFtZSB0byB0YXJnZXQgdGhlIHVwbG9hZCBvZiB0aGUgZ2VuZXJhdGVkIFBvc3RtYW4gY29sbGVjdGlvbgotICoqUE9TVE1BTl9DT0xMRUNUSU9OX1VJRCoqIDogUG9zdG1hbiBjb2xsZWN0aW9uIFVJRCB0byB1cGxvYWQgd2l0aCB0aGUgZ2VuZXJhdGVkIFBvc3RtYW4gY29sbGVjdGlvbgoKVGhlIGBQT1NUTUFOX1dPUktTUEFDRV9OQU1FYCAmIGBQT1NUTUFOX0NPTExFQ1RJT05fVUlEYCB2YXJpYWJsZXMgY2FuIGFsc28gYmUgc2V0IGFzIENMSSBPcHRpb25zIGAtLXBvc3RtYW5Xb3Jrc3BhY2VOYW1lYCAmIGAtLXBvc3RtYW5VaWRgICwgd2hpY2ggd2lsbCBvdmVycnVsZSB0aGUgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIC5FTlYgZmlsZS4KCj4gKipSRUNPTU1FTkRBVElPTioqOiBEbyBub3QgY29tbWl0IHRoZSBgLmVudmAgZmlsZSBpbiBhbnkgdmVyc2lvbmluZyBzeXN0ZW0gbGlrZSBHSVQgaWYgaXQgY29udGFpbnMgY29uZmlkZW50aWFsIGNyZWRlbnRpYWxzLgoKIyBDcmVkaXRzCgpQb3J0bWFuIHN0YXJ0ZWQgYXMgYSBQUiBvbiB0aGUgaGFuZHkgW29wZW5hcGktdG8tcG9zdG1hbl0oaHR0cHM6Ly9naXRodWIuY29tL3Bvc3RtYW5sYWJzL29wZW5hcGktdG8tcG9zdG1hbikgcGFja2FnZSB0byBnZW5lcmF0ZSBiYXNpYyBQb3N0bWFuIHRlc3RzIGZyb20gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4KCltBcGlkZWNrXShodHRwczovL3d3dy5hcGlkZWNrLmNvbS8pIGltbWVkaWF0ZWx5IHNhdyB0aGUgUFIncyB2YWx1ZSBhbmQgY29sbGFib3JhdGVkIHdpdGggdGhlIG9yaWdpbmFsIGF1dGhvciwgW1RpbSBIYXNlbGFhcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGltODEpLCB0byBhZG9wdCB0aGUgZnVuY3Rpb25hbGl0eSBhbmQgZXh0ZW5kIHRoZSBvcHRpb25zICYgdG9vbGluZyB0byBjcmVhdGUgIlBvcnRtYW4iLgoKVGhlIGdvYWwgb2YgUG9ydG1hbiBpcyB0byBkcml2ZSBBUEkgYXV0b21hdGlvbiBieSAncG9ydGluZycgYSBzdGF0aWMgT3BlbkFQSSBkb2N1bWVudCB0byBhIGR5bmFtaWMgUG9zdG1hbiBjb2xsZWN0aW9uIHRoYXQgaW5jbHVkZXMgYSBwb3dlcmZ1bCB0ZXN0aW5nIHN1aXRlIHdpdGggdmFyaWFibGUgcmVxdWVzdHMsIGJvZGllcyBhbmQgbW9yZS4gQWxsIHRoaXMgd2hpbGUgYmVpbmcgZWFzeSB0byBjb25maWd1cmUgJiByZWFkeSB0byB1c2UuCgpQb3J0bWFuIGlzIGEgdmFsdWFibGUgdG9vbCBpbiBhbnkgT3BlbkFQSSB3b3JrZmxvdywgZm9yIGxvY2FsIGRldmVsb3BtZW50IG9yIGFzIHBhcnQgb2YgYSBDSS9DRCBhdXRvbWF0aW9uIHBpcGVsaW5lLgoKQ3JlZGl0cyBmb3IgdGhpcyBwYWNrYWdlIGZvciB0aGUgaGFyZCB3b3JrIG9mIFtOaWNrIExsb3lkXShodHRwczovL2dpdGh1Yi5jb20vbmlja2xsb3lkKSBhbmQgW1RpbSBIYXNlbGFhcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGltODEpLgoKIyBGdXR1cmUgaWRlYXMKCi0gWyBdIE1ha2UgUG9zdG1hbiBzZWN1cml0eSBkeW5hbWljCgojIFJlc291cmNlcwoKQSBjb2xsZWN0aW9uIG9mIGJsb2cgcG9zdHMgYW5kIHJlc291cmNlcyBhYm91dCBQb3J0bWFuCgotIGh0dHBzOi8vd3d3LmFuZG1vcmUuZGV2L2Jsb2cvZ2V0dGluZy1zdGFydGVkLXBvcnRtYW4vIGJ5IFthbmRtb3JlZGV2XShodHRwczovL2dpdGh1Yi5jb20vYW5kbW9yZWRldikKLSBodHRwczovL2l0bmV4dC5pby9hdXRvbWF0aW5nLWFwaS10ZXN0aW5nLXdpdGgtcG9ydG1hbi1wb3N0bWFuLWFuZC1uZXdtYW4tZWMxYTg2OWNiYzk5IGJ5IFR5bGVyIE93ZW4KLSBodHRwczovL3d3dy5jb2RlY2VudHJpYy5kZS93aXNzZW5zLWh1Yi9ibG9nL2NoYXJnZS15b3VyLWFwaXMtdm9sdW1lLTMtb3B0aW1pemluZy1hcGktdGVzdGluZy13aXRoLWNvbnRyYWN0LXRlc3RpbmcgYnkgW0RhbmllbCBLb2NvdF0oaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGtvY290KQotIGh0dHBzOi8vYmxvZy5hcGlkZWNrLmNvbS9wb3J0bWFuLWFwaS10ZXN0aW5nIGJ5IFtDaHJpcyBXb29kXShodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vc2Vuc2libGV3b29kLykKLSBodHRwczovL2Rldi50by9vbmVhZHZhbmNlZC9hcGktcHJvdmlkZXItY29udHJhY3QtdGVzdGluZy1mb3ItYWxsLXdpdGgtcG9ydG1hbi1vcGVuYXBpLWFuZC1wb3N0bWFuLTRsbDEgYnkgW0FsZXggU2F2YWdlXShodHRwczovL2dpdGh1Yi5jb20vc2F2YWdlLWFsZXgpCi0gaHR0cHM6Ly9naXRodWIuY29tL3RoaW04MS9zcGVjLWRyaXZlbi1vcGVuYXBpLWNvbnRyYWN0LXBlcmZvcm1hbmNlLXRlc3RpbmcgYnkgW1RpbSBIYXNlbGFhcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGltODEpCi0gaHR0cHM6Ly93d3cuY29kZWNlbnRyaWMuZGUvd2lzc2Vucy1odWIvYmxvZy9jaGFyZ2UteW91ci1hcGlzLXZvbHVtZS0yNS1jb250cmFjdC10ZXN0aW5nIGJ5IFBhc3F1YWxlIEJydW5lbGxpCi0gaHR0cHM6Ly9xYXNlLmlvL2Jsb2cvYXV0b21hdGVkLWNvbnRyYWN0LXRlc3RpbmcvYW1wLyBDb250cmFjdCBUZXN0aW5nIGluIEFjdGlvbiBieSBLaXJpbGwgSXZsaWV2Cg== readmeEtag: '"82cf93ad248ada79c6bcbcf35c8006f230b358ba"' readmeLastModified: Thu, 05 Feb 2026 23:01:08 GMT repositoryId: 364542854 description: >- Port OpenAPI Specs to Postman Collections, inject test suite and run via Newman 👨🏽‍🚀 created: '2021-05-05T10:42:29Z' updated: '2026-02-05T23:01:12Z' language: TypeScript archived: false stars: 677 watchers: 7 forks: 61 owner: apideck-libraries logo: https://avatars.githubusercontent.com/u/73573473?v=4 license: Apache-2.0 repoEtag: '"92584518b57295d412ecb3e9f8a30457c691f0df2d02fe832458e5c252db81fc"' repoLastModified: Thu, 05 Feb 2026 23:01:12 GMT foundInMaster: true id: a03cdb329f630a946a946dfe26802c43 - source: https://openapi.tools/ name: Step CI category: - Testing - Converters - Data Validators language: - CLI - Node.js link: https://stepci.com repository: https://github.com/stepci/stepci source_description: > Open-source framework for API Quality Assurance. Generate multi-step test-scenarios from OpenAPI. Validate responses against description documents and more. v3: true id: 50dd208178d094d51cbcd8e57f209c23 repositoryMetadata: base64Readme: >- IVtTY3JlZW4gUmVjb3JkaW5nIDIwMjMtMTAtMDQgYXQgMTUgNDMgMTddKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGVwY2kvc3RlcGNpL2Fzc2V0cy8xMDQwMDA2NC84ODFlZmQ0OS1mZDkzLTRmZjgtOGU5OS00YjZlMjRmZTEyMjcpCgo+ICoqTm90ZSoqCj4gV2UganVzdCBhbm5vdW5jZWQgW1N1cHBvcnQgUGxhbl0oaHR0cHM6Ly9zdGVwY2kuY29tLyNwcmljaW5nKSBmb3IgU3RlcCBDSQoKPiAqKkltcG9ydGFudCoqCj4gRm9yIHVzZXJzIG1pZ3JhdGluZyBmcm9tIFBvc3RtYW4gYW5kIEluc29tbmlhLCBzZWUgaXNzdWVzIFsjMjldKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGVwY2kvc3RlcGNpL2lzc3Vlcy8yOSkgYW5kIFsjMzBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGVwY2kvc3RlcGNpL2lzc3Vlcy8zMCkgcmVzcGVjdGl2ZWx5CgojIFdlbGNvbWUKClN0ZXAgQ0kgaXMgYW4gb3Blbi1zb3VyY2UgQVBJIFF1YWxpdHkgQXNzdXJhbmNlIGZyYW1ld29yawoKLSAqKkxhbmd1YWdlLWFnbm9zdGljKiouIENvbmZpZ3VyZSBlYXNpbHkgdXNpbmcgWUFNTCwgSlNPTiBvciBKYXZhU2NyaXB0Ci0gKipSRVNULCBHcmFwaFFMLCBnUlBDLCB0UlBDLCBTT0FQKiouIFRlc3QgZGlmZmVyZW50IEFQSSB0eXBlcyBpbiBvbmUgd29ya2Zsb3cKLSAqKlNlbGYtaG9zdGVkKiouIFRlc3Qgc2VydmljZXMgb24geW91ciBuZXR3b3JrLCBsb2NhbGx5IGFuZCBDSS9DRAotICoqSW50ZWdyYXRlZCoqLiBQbGF5IG5pY2VseSB3aXRoIG90aGVycwoKW+KGkiAqKlJlYWQgdGhlIERvY3MqKl0oaHR0cHM6Ly9kb2NzLnN0ZXBjaS5jb20pCgpb4oaSICoqVHJ5IHRoZSBPbmxpbmUgUGxheWdyb3VuZCoqXShodHRwczovL3N0ZXBjaS5jb20pCgpb4oaSICoqSm9pbiB1cyBvbiBEaXNjb3JkKipdKGh0dHBzOi8vZGlzY29yZC5nZy9LcUpKekozQlR1KQoKIyMgR2V0IHN0YXJ0ZWQKCjEuIEluc3RhbGwgdGhlIENMSQoKICAgKipVc2luZyBbTm9kZS5qc10oaHR0cHM6Ly9ub2RlanMub3JnL2VuLykqKgoKICAgIGBgYAogICAgbnBtIGluc3RhbGwgLWcgc3RlcGNpCiAgICBgYGAKCiAgICA+ICoqTm90ZSoqOiBNYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBMVFMgdmVyc2lvbiBvZiBOb2RlLmpzCgogICAgKipVc2luZyBbSG9tZWJyZXddKGh0dHBzOi8vYnJldy5zaC8pKioKCiAgICBgYGAKICAgIGJyZXcgaW5zdGFsbCBzdGVwY2kKICAgIGBgYAoKMi4gQ3JlYXRlIGV4YW1wbGUgd29ya2Zsb3cKCiAgICAqKndvcmtmbG93LnltbCoqCgogICAgYGBgeWFtbAogICAgdmVyc2lvbjogIjEuMSIKICAgIG5hbWU6IFN0YXR1cyBDaGVjawogICAgZW52OgogICAgICBob3N0OiBleGFtcGxlLmNvbQogICAgdGVzdHM6CiAgICAgIGV4YW1wbGU6CiAgICAgICAgc3RlcHM6CiAgICAgICAgICAtIG5hbWU6IEdFVCByZXF1ZXN0CiAgICAgICAgICAgIGh0dHA6CiAgICAgICAgICAgICAgdXJsOiBodHRwczovLyR7e2Vudi5ob3N0fX0KICAgICAgICAgICAgICBtZXRob2Q6IEdFVAogICAgICAgICAgICAgIGNoZWNrOgogICAgICAgICAgICAgICAgc3RhdHVzOiAvXjIwLwogICAgYGBgCgogICAgPiAqKk5vdGUqKjogWW91IGNhbiBhbHNvIGFsc28gdXNlIEpTT04gZm9ybWF0IHRvIGNvbmZpZ3VyZSB5b3VyIHdvcmtmbG93CgozLiBSdW4gdGhlIHdvcmtmbG93CgogICAgYGBgCiAgICBzdGVwY2kgcnVuIHdvcmtmbG93LnltbAogICAgYGBgCgogICAgYGBgCiAgICBQQVNTICBleGFtcGxlCgogICAgVGVzdHM6IDAgZmFpbGVkLCAxIHBhc3NlZCwgMSB0b3RhbAogICAgU3RlcHM6IDAgZmFpbGVkLCAxIHBhc3NlZCwgMSB0b3RhbAogICAgVGltZTogIDAuNTU5cywgZXN0aW1hdGVkIDFzCgogICAgV29ya2Zsb3cgcGFzc2VkIGFmdGVyIDAuNTU5cwogICAgYGBgCgojIyBEb2N1bWVudGF0aW9uCgpEb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBvbiBbZG9jcy5zdGVwY2kuY29tXShodHRwczovL2RvY3Muc3RlcGNpLmNvbSkKCiMjIEV4YW1wbGVzCgpZb3UgY2FuIGZpbmQgZXhhbXBsZSB3b3JrZmxvd3MgdW5kZXIgW2BleGFtcGxlcy9gXShleGFtcGxlcy8pCgojIyBDb21tdW5pdHkKCkpvaW4gb3VyIGNvbW11bml0eSBvbiBbRGlzY29yZF0oaHR0cHM6Ly9kaXNjb3JkLmdnL0txSkp6SjNCVHUpIGFuZCBbR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vc3RlcGNpL3N0ZXBjaS9kaXNjdXNzaW9ucykKCiMjIENvbnRyaWJ1dGluZwoKQXMgYW4gb3Blbi1zb3VyY2UgcHJvamVjdCwgd2Ugd2VsY29tZSBjb250cmlidXRpb25zIGZyb20gdGhlIGNvbW11bml0eS4gSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW55IGJ1Z3Mgb3Igd2FudCB0byBhZGQgc29tZSBpbXByb3ZlbWVudHMsIHBsZWFzZSBmZWVsIGZyZWUgdG8gb3BlbiBhbiBpc3N1ZSBvciBwdWxsIHJlcXVlc3QKCiMjIFN1cHBvcnQgUGxhbgoKR2V0IFByby1sZXZlbCBzdXBwb3J0IHdpdGggU0xBLCBvbmJvYXJkaW5nLCBwcmlvcml0aXplZCBmZWF0dXJlLXJlcXVlc3RzIGFuZCBidWdmaXhlcy4KClvihpIgKipMZWFybiBtb3JlKipdKGh0dHBzOi8vc3RlcGNpLmNvbS8jcHJpY2luZykKCjxhIGhyZWY9Imh0dHBzOi8vY2FsLmNvbS91c2hha292L3N0ZXAtY2ktZGVtbyI+PGltZyBhbHQ9IkJvb2sgdXMgd2l0aCBDYWwuY29tIiBzcmM9Imh0dHBzOi8vY2FsLmNvbS9ib29rLXdpdGgtY2FsLWRhcmsuc3ZnIiAvPjwvYT4KCiMjIFByaXZhY3kKCkJ5IGRlZmF1bHQsIHRoZSBDTEkgY29sbGVjdHMgYW5vbnltb3VzIHVzYWdlIGRhdGEsIHdoaWNoIGluY2x1ZGVzOgoKLSBVbmlxdWUgdXNlciBJRAotIE9TIE5hbWUKLSBOb2RlIFZlcnNpb24KLSBDTEkgVmVyc2lvbgotIENvbW1hbmQgKGBzdGVwY2kgaW5pdGAsIGBzdGVwY2kgcnVuYCwgYHN0ZXBjaSBnZW5lcmF0ZWApCi0gRW52aXJvbm1lbnQgKExvY2FsLCBEb2NrZXIsIENJL0NEKQoKPiAqKk5vdGUqKgo+IFRoZSB1c2FnZSBhbmFseXRpY3MgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgYFNURVBDSV9ESVNBQkxFX0FOQUxZVElDU2AgZW52aXJvbm1lbnQgdmFyaWFibGUKCiMjIExpY2Vuc2UKClRoZSBzb3VyY2UgY29kZSBpcyBkaXN0cmlidXRlZCB1bmRlciBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIHRlcm1zCg== readmeEtag: '"dd8463cf1c9e81e4c7825e4e6f74da1ca906f414"' readmeLastModified: Sat, 03 Aug 2024 09:44:52 GMT repositoryId: 537500924 description: Automated API Testing and Quality Assurance created: '2022-09-16T14:48:21Z' updated: '2026-02-04T07:59:49Z' language: TypeScript archived: false stars: 1835 watchers: 12 forks: 93 owner: stepci logo: https://avatars.githubusercontent.com/u/61350067?v=4 license: MPL-2.0 repoEtag: '"ae37b97369c34f5c926a292fea7f60fe6b4b8f2f86363f29c02bd4417f263e2f"' repoLastModified: Wed, 04 Feb 2026 07:59:49 GMT foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags name: openapi-spring-webflux-validator category: - Description Validators - Data Validators repository: https://github.com/cdimascio/openapi-spring-webflux-validator language: - Java - Kotlin source_description: > A friendly kotlin library to validate API endpoints against an OpenAPI description document. v2: true v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXNwcmluZy13ZWJmbHV4LXZhbGlkYXRvcgohW10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL2NkaW1hc2Npby9vcGVuYXBpLXNwcmluZy13ZWJmbHV4LXZhbGlkYXRvci5zdmc/YnJhbmNoPW1hc3RlcilbIVtNYXZlbiBDZW50cmFsXShodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLWNlbnRyYWwvdi9pby5naXRodWIuY2RpbWFzY2lvL29wZW5hcGktc3ByaW5nLXdlYmZsdXgtdmFsaWRhdG9yLnN2Zz9sYWJlbD1NYXZlbiUyMENlbnRyYWwpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvYXJ0aWZhY3QvaW8uZ2l0aHViLmNkaW1hc2Npby9vcGVuYXBpLXNwcmluZy13ZWJmbHV4LXZhbGlkYXRvci80LjIuMC9qYXIpIFshW0NvZGFjeSBCYWRnZV0oaHR0cHM6Ly9hcGkuY29kYWN5LmNvbS9wcm9qZWN0L2JhZGdlL0dyYWRlL2Y3OGI3MmNhOTAxMDRlNDJiMTExNzIzYTc3MjBhZGYzKV0oaHR0cHM6Ly93d3cuY29kYWN5LmNvbS9hcHAvY2RpbWFzY2lvL29wZW5hcGktc3ByaW5nLXdlYmZsdXgtdmFsaWRhdG9yP3V0bV9zb3VyY2U9Z2l0aHViLmNvbSZhbXA7dXRtX21lZGl1bT1yZWZlcnJhbCZhbXA7dXRtX2NvbnRlbnQ9Y2RpbWFzY2lvL29wZW5hcGktc3ByaW5nLXdlYmZsdXgtdmFsaWRhdG9yJmFtcDt1dG1fY2FtcGFpZ249QmFkZ2VfR3JhZGUpICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtQXBhY2hlJTIwMi4wLWJsdWUuc3ZnKTwhLS0gQUxMLUNPTlRSSUJVVE9SUy1CQURHRTpTVEFSVCAtIERvIG5vdCByZW1vdmUgb3IgbW9kaWZ5IHRoaXMgc2VjdGlvbiAtLT4KWyFbQWxsIENvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9hbGxfY29udHJpYnV0b3JzLTYtb3JhbmdlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSldKCNjb250cmlidXRvcnMtKQo8IS0tIEFMTC1DT05UUklCVVRPUlMtQkFER0U6RU5EIC0tPiAKCkEgZnJpZW5kbHkga290bGluIGxpYnJhcnkgdG8gdmFsaWRhdGUgQVBJIGVuZHBvaW50cyB1c2luZyBhbiBfT3BlbkFwaSAzXyBvciBfU3dhZ2dlciAyXyBzcGVjaWZpY2F0aW9uLiBHcmVhdCB3aXRoIHdlYmZsdXggZnVuY3Rpb25hbC4gCkl0ICoqd29ya3MgaGFwcGlseSB3aXRoIFNwcmluZyBXZWJmbHV4IDYncyBiYXNlbGluZSBvZiBKYWthcnRhIEpWTSBydW50aW1lID49MTcqKi4gCjxwIGFsaWduPSJjZW50ZXIiPgoJPGltZyB3aWR0aD0iMzAwIiBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jZGltYXNjaW8vb3BlbmFwaS1zcHJpbmctd2ViZmx1eC12YWxpZGF0b3IvbWFzdGVyL2Fzc2V0cy9vcGVuYXBpLXdlYmZsdXgtdmFsaWRhdG9yLWxvZ28yLnBuZyIgd2lkdGg9IjYwMCIvPgo8L3A+CgpTdXBwb3J0cyBzcGVjaWZpY2F0aW9ucyBpbiBfWUFNTF8gYW5kIF9KU09OXwoKIyMgUHJlcXVpc2l0ZXMKCmFuZCBTcHJpbmcgV2ViZmx1eCA2ICsgSmF2YSA+PTE3CgpfRm9yIHVzZSB3aXRoIFNwcmluZyBCb290IDIgYW5kIFdlYmZsdXggNSwgdXNlIGBvcGVuYXBpLXNwcmluZy13ZWJmbHV4LXZhbGlkYXRvcmAgdmVyc2lvbiBgMy41LjBgLiBKYXZhIDggb3IgZ3JlYXRlciBpcyByZXF1aXJlZC5fIAoKIyMgSW5zdGFsbAoKIyMjIE1hdmVuCgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgICA8Z3JvdXBJZD5pby5naXRodWIuY2RpbWFzY2lvPC9ncm91cElkPgogICAgPGFydGlmYWN0SWQ+b3BlbmFwaS1zcHJpbmctd2ViZmx1eC12YWxpZGF0b3I8L2FydGlmYWN0SWQ+CiAgICA8dmVyc2lvbj40LjIuMDwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKCiMjIyBHcmFkbGUKCmBgYGdyb292eQpjb21waWxlICdpby5naXRodWIuY2RpbWFzY2lvOm9wZW5hcGktc3ByaW5nLXdlYmZsdXgtdmFsaWRhdG9yOjQuMi4wJwpgYGAKCkZvciBzYnQsIGdyYXBlLCBpdnkgYW5kIG1vcmUsIHNlZSBbaGVyZV0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnLyNhcnRpZmFjdGRldGFpbHMlN0Npby5naXRodWIuY2RpbWFzY2lvJTdDb3BlbmFwaS1zcHJpbmctd2ViZmx1eC12YWxpZGF0b3IlN0MyLjAuMCU3Q2phcikKCiMjIFVzYWdlIChLb3RsaW4pCgpUaGlzIHNlY3Rpb24gYW5kIHRoZSBuZXh0IGRlc2NyaWJlIHVzYWdlIHdpdGggS290bGluIGFuZCBKYXZhIHJlc3BlY3RpdmVseS4KClNlZSB0aGlzIFtjb21wbGV0ZSBTcHJpbmcgV2ViZmx1eCBleGFtcGxlIHRoYXQgdXNlcyBvcGVuYXBpLXNwcmluZy13ZWJmbHV4LXZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL2NkaW1hc2Npby9rb3RsaW4tc3dhZ2dlci1zcHJpbmctZnVuY3Rpb25hbC10ZW1wbGF0ZSkuCgojIyMgQ29uZmlndXJlIChLb3RsaW4pCgpUaGlzIG9uZS10aW1lIGNvbmZpZ3VyYXRpb24gcmVxdWlyZXMgeW91IHRvIHByb3ZpZGUgdGhlIF9sb2NhdGlvbiBvZiB0aGUgb3BlbmFwaS9zd2FnZ2VyIHNwZWNpZmljYXRpb25fIGFuZCBhbiBvcHRpb25hbCBfY3VzdG9tIGVycm9yIGhhbmRsZXJfLgoKU3VwcG9ydHMgYEpTT05gIGFuZCBgWUFNTGAKCmBgYGtvdGxpbgppbXBvcnQgaW8uZ2l0aHViLmNkaW1hc2Npby5vcGVuYXBpLlZhbGlkYXRlCgp2YWwgdmFsaWRhdGUgPSBWYWxpZGF0ZS5jb25maWd1cmUoInN0YXRpYy9hcGkueWFtbCIpCmBgYAoKd2l0aCBjdXN0b20gZXJyb3IgaGFuZGxlcgoKYGBga290bGluCmltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5yZWFjdGl2ZS5mdW5jdGlvbi5zZXJ2ZXIuU2VydmVyUmVxdWVzdAoKZGF0YSBjbGFzcyBNeUVycm9yKHZhbCByZXF1ZXN0OiBTZXJ2ZXJSZXF1ZXN0LCB2YWwgY29kZTogU3RyaW5nLCB2YWwgbWVzc2FnZXM6IExpc3Q8U3RyaW5nPikKdmFsIHZhbGlkYXRlID0gVmFsaWRhdGUuY29uZmlndXJlKCJzdGF0aWMvYXBpLmpzb24iKSB7IHJlcXVlc3QsIHN0YXR1cywgbWVzc2FnZXMgLT4KICAgTXlFcnJvcihyZXF1ZXN0LCBzdGF0dXMubmFtZSwgbWVzc2FnZXMpCn0KYGBgCgp3aXRoIGN1c3RvbSBPYmplY3RNYXBwZXIgZmFjdG9yeToKCmBgYGtvdGxpbgp2YWwgdmFsaWRhdGUgPSBWYWxpZGF0ZS5jb25maWd1cmUoCiAgIG9wZW5BcGlTd2FnZ2VyUGF0aCA9ICJhcGkueWFtbCIsCiAgIGVycm9ySGFuZGxlciA9IHsgcmVxdWVzdCwgc3RhdHVzLCBtZXNzYWdlIC0+IFZhbGlkYXRpb25FcnJvcihyZXF1ZXN0LCBzdGF0dXMudmFsdWUoKSwgbWVzc2FnZVswXSkgfSwKICAgb2JqZWN0TWFwcGVyRmFjdG9yeSA9IHsgT2JqZWN0TWFwcGVyKCkKICAgICAgIC5yZWdpc3RlcktvdGxpbk1vZHVsZSgpCiAgICAgICAucmVnaXN0ZXJNb2R1bGUoSmF2YVRpbWVNb2R1bGUoKSkKICAgICAgIC5jb25maWd1cmUoU2VyaWFsaXphdGlvbkZlYXR1cmUuV1JJVEVfREFURVNfQVNfVElNRVNUQU1QUywgZmFsc2UpIH0KKQpgYGAKCiMjIyBWYWxpZGF0ZSBhIHJlcXVlc3QgKEtvdGxpbiArIFJlYWN0b3IpCgpZb3UgY2FuIG5vdyB2YWxpZGF0ZSBhIHJlcXVlc3QgaW4gYSBjb3JvdXRpbmUgc3R5bGUsCnVzaW5nIHRoZSBgdmFsaWRhdGVgIGluc3RhbmNlIGNyZWF0ZWQgW2Fib3ZlXSgjY29uZmlndXJlLWtvdGxpbik6Cgp3aXRob3V0IGEgYm9keQoKYGBga290bGluCnZhbGlkYXRlLnJlcXVlc3QocmVxKSB7CiAgICAvLyBEbyBzdHVmZiBlLmcuIHJldHVybiBhIGxpc3Qgb2YgbmFtZXMgCiAgICBvaygpLmJvZHkoTW9uby5qdXN0KGxpc3RPZigiY2FybWluZSIsICJhbGV4IiwgImVsaWFuYSIpKSkKfQpgYGAKCndpdGggYm9keQoKYGBga290bGluCnZhbGlkYXRlLnJlcXVlc3QocmVxKS53aXRoQm9keShVc2VyOjpjbGFzcy5qYXZhKSB7IGJvZHkgLT4KICAgIC8vIE5vdGUgdGhhdCBib2R5IGlzIGRlc2VyaWFsaXplZCBhcyBVc2VyIQogICAgLy8gTm93IHlvdSBjYW4gZG8gc3R1ZmYuIAogICAgLy8gRm9yIGV4YW1wbGUsIGxldHMgZWNobyB0aGUgcmVxdWVzdCBhcyB0aGUgcmVzcG9uc2UgCiAgICBvaygpLmJvZHkoTW9uby5qdXN0KGJvZHkpKQp9CmBgYAoKd2l0aCBib2R5IHlvdSB3YW50IHRvIHByb2Nlc3MgYXMgc3RyaW5nIChlLmcuIGZvciBjb21wdXRpbmcgYSByZXF1ZXN0IHNpZ25hdHVyZSksIG9yIHRoYXQgeW91IHdhbnQgdG8gZGVzZXJpYWxpemUgc29tZWhvdyBzcGVjaWZpY2FsbHkKCmBgYGtvdGxpbgp2YWwgaWRlbnRpdHk6IChTdHJpbmcpIC0+IFN0cmluZyA9IHsgaXQgfQp2YWxpZGF0ZS5yZXF1ZXN0KHJlcSkud2l0aEJvZHkoU3RyaW5nOjpjbGFzcy5qYXZhLCByZWFkVmFsdWUgPSBpZGVudGl0eSkgeyBib2R5IC0+CiAgICBvaygpLmJvZHkoTW9uby5qdXN0KCJjb250ZW50IGxlbmd0aCBpcyAke2JvZHkubGVuZ3RofSIpKQp9CmBgYAoKIyMjIFZhbGlkYXRlIGEgcmVxdWVzdCAoS290bGluICsgY29yb3V0aW5lcykKCk9yIHlvdSBjYW4gdmFsaWRhdGUgYSByZXF1ZXN0IGluIGEgY29yb3V0aW5lIHN0eWxlLAp1c2luZyB0aGUgYHZhbGlkYXRlYCBpbnN0YW5jZSBjcmVhdGVkIFthYm92ZV0oI2NvbmZpZ3VyZS1rb3RsaW4pOgoKCndpdGhvdXQgYSBib2R5CgpgYGBrb3RsaW4KdmFsaWRhdGUucmVxdWVzdEFuZEF3YWl0KHJlcSkgewogICAgLy8gRG8gc3R1ZmYgZS5nLiByZXR1cm4gYSBsaXN0IG9mIG5hbWVzIAogICAgb2soKS5ib2R5VmFsdWVBbmRBd2FpdChsaXN0T2YoImNhcm1pbmUiLCAiYWxleCIsICJlbGlhbmEiKSkKfQpgYGAKCndpdGggYm9keQoKYGBga290bGluCnZhbGlkYXRlLnJlcXVlc3QocmVxKS5hd2FpdEJvZHkoVXNlcjo6Y2xhc3MuamF2YSkgeyBib2R5OiBVc2VyIC0+CiAgICAvLyBOb3RlIHRoYXQgYm9keSBpcyBkZXNlcmlhbGl6ZWQgYXMgVXNlciEKICAgIC8vIE5vdyB5b3UgY2FuIGRvIHN0dWZmLiAKICAgIC8vIEZvciBleGFtcGxlLCBsZXRzIGVjaG8gdGhlIHJlcXVlc3QgYXMgdGhlIHJlc3BvbnNlIAogICAgb2soKS5ib2R5VmFsdWVBbmRBd2FpdChib2R5KQp9CmBgYAoKd2l0aCBib2R5IHlvdSB3YW50IHRvIHByb2Nlc3MgYXMgc3RyaW5nIChlLmcuIGZvciBjb21wdXRpbmcgYSByZXF1ZXN0IHNpZ25hdHVyZSksIG9yIHRoYXQgeW91IHdhbnQgdG8gZGVzZXJpYWxpemUgc29tZWhvdyBzcGVjaWZpY2FsbHkKCmBgYGtvdGxpbgp2YWwgaWRlbnRpdHk6IChTdHJpbmcpIC0+IFN0cmluZyA9IHsgaXQgfQp2YWxpZGF0ZS5yZXF1ZXN0KHJlcSkuYXdhaXRCb2R5KFN0cmluZzo6Y2xhc3MuamF2YSwgaWRlbnRpdHkpIHsgYm9keTogU3RyaW5nIC0+CiAgICBvaygpLmJvZHlWYWx1ZUFuZEF3YWl0KCJjb250ZW50IGxlbmd0aCBpcyAke2JvZHkubGVuZ3RofSIpCn0KYGBgCgojIyBVc2FnZQoKIyMjIENvbmZpZ3VyZSAoSmF2YSkKVGhpcyBvbmUtdGltZSBjb25maWd1cmF0aW9uIHJlcXVpcmVzIHlvdSB0byBwcm92aWRlIHRoZSBfbG9jYXRpb24gb2YgdGhlIG9wZW5hcGkvc3dhZ2dlciBzcGVjaWZpY2F0aW9uXyBhbmQgYW4gb3B0aW9uYWwgX2N1c3RvbSBlcnJvciBoYW5kbGVyXy4KCmBgYGphdmEKaW1wb3J0IGlvLmdpdGh1Yi5jZGltYXNjaW8ub3BlbmFwaS5WYWxpZGF0ZTsKClZhbGlkYXRlPFZhbGlkYXRpb25FcnJvcj4gdmFsaWRhdGUgPSBWYWxpZGF0ZS5jb25maWd1cmUoInN0YXRpYy9hcGkuanNvbiIpCmBgYAoKd2l0aCBjdXN0b20gZXJyb3IgaGFuZGxlcgoKYGBgamF2YQppbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIucmVhY3RpdmUuZnVuY3Rpb24uc2VydmVyLlNlcnZlclJlcXVlc3Q7CgpjbGFzcyBNeUVycm9yIHsKICAgIHByaXZhdGUgU2VydmVyUmVxdWVzdCByZXF1ZXN0OwogICAgcHJpdmF0ZSBTdHJpbmcgaWQ7CiAgICBwcml2YXRlICBTdHJpbmcgbWVzc2FnZXM7CiAgICBwdWJsaWMgTXlFcnJvcihTZXJ2ZXJSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBpZCwgTGlzdDxTdHJpbmc+IG1lc3NhZ2VzKSB7CiAgICAgICAgdGhpcy5yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICAgICB0aGlzLmlkID0gaWQ7CiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IG1lc3NhZ2VzOwogICAgfQogICAgcHVibGljIFNlcnZlclJlcXVlc3QgZ2V0UmVxdWVzdCgpIHsKICAgICAgICByZXR1cm4gcmVxdWVzdDsKICAgIH0KICAgIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7CiAgICAgICAgcmV0dXJuIGlkOwogICAgfQogICAgcHVibGljIHZvaWQgc2V0SWQoU3RyaW5nIGlkKSB7CiAgICAgICAgdGhpcy5pZCA9IGlkOwogICAgfQogICAgcHVibGljIExpc3Q8U3RyaW5nPiBnZXRNZXNzYWdlcygpIHsKICAgICAgICByZXR1cm4gbWVzc2FnZXM7CiAgICB9CiAgICBwdWJsaWMgdm9pZCBzZXRNZXNzYWdlcyhMaXN0PFN0cmluZz4gbWVzc2FnZXMpIHsKICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbWVzc2FnZXM7CiAgICB9ICAgICAKfQpgYGAKCmBgYGphdmEKVmFsaWRhdGU8VmFsaWRhdGlvbkVycm9yPiB2YWxpZGF0ZSA9IFZhbGlkYXRlLmNvbmZpZ3VyZSgic3RhdGljL2FwaS5qc29uIiwgKHJlcXVlc3QsIHN0YXR1cywgbWVzc2FnZXMpIC0+CiAgICBuZXcgTXlFcnJvcihyZXF1ZXN0LCBzdGF0dXMuZ2V0TmFtZSgpLCBtZXNzYWdlcykKKTsKYGBgCgojIyMgVmFsaWRhdGUgYSByZXF1ZXN0IChKYXZhKQoKVXNpbmcgdGhlIGB2YWxpZGF0ZWAgaW5zdGFuY2UgY3JlYXRlZCBhYm92ZSwgeW91IGNhbiBub3cgdmFsaWRhdGUgYSByZXF1ZXN0OgoKd2l0aG91dCBhIGJvZHkKCmBgYGphdmEKQXJyYXlMaXN0PFN0cmluZz4gdXNlcnMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKSB7ewogICAgYWRkKCJjYXJtaW5lIik7CiAgICBhZGQoImFsZXgiKTsKICAgIGFkZCgiZWxpYW5hIik7Cn19OwoKdmFsaWRhdGUucmVxdWVzdChyZXEsICgpIC0+CiAgICAvLyBEbyBzdHVmZiBlLmcuIHJldHVybiBhIGxpc3Qgb2YgdXNlciBuYW1lcwogICAgU2VydmVyUmVzcG9uc2Uub2soKS5ib2R5VmFsdWUodXNlcnMpCik7CmBgYAoKd2l0aCBib2R5CgpgYGBqYXZhCnZhbGlkYXRlCiAgICAucmVxdWVzdChyZXEpCiAgICAud2l0aEJvZHkoVXNlci5jbGFzcywgdXNlciAtPiAKICAgICAgICAvLyBOb3RlIHRoYXQgYm9keSBpcyBkZXNlcmlhbGl6ZWQgYXMgVXNlciEKICAgICAgICAvLyBOb3cgeW91IGNhbiBkbyBzdHVmZi4gCiAgICAgICAgLy8gRm9yIGV4YW1wbGUsIGxldHMgZWNobyB0aGUgcmVxdWVzdCBhcyB0aGUgcmVzcG9uc2UKICAgICAgICBTZXJ2ZXJSZXNwb25zZS5vaygpLmJvZHlWYWx1ZSh1c2VyKQogICAgKTsKYGBgCgp3aXRoIGJvZHkgeW91IHdhbnQgdG8gcHJvY2VzcyBhcyBzdHJpbmcgKGUuZy4gZm9yIGNvbXB1dGluZyBhIHJlcXVlc3Qgc2lnbmF0dXJlKQoKYGBgamF2YQp2YWxpZGF0ZQogICAgLnJlcXVlc3QocmVxKQogICAgLndpdGhCb2R5KFN0cmluZy5jbGFzcywgcyAtPiBzLCBib2R5IC0+CiAgICAgICAgU2VydmVyUmVzcG9uc2Uub2soKS5ib2R5VmFsdWUoImNvbnRlbnQgbGVuZ3RoIGlzICIgKyBib2R5Lmxlbmd0aCgpKQogICAgKTsKYGBgCgojIyBFeGFtcGxlIFZhbGlkYXRpb24gT3V0cHV0CgpMZXQncyBhc3N1bWUgYSBgUE9TVGAgcmVxdWVzdCB0byBjcmVhdGUgYSB1c2VyIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgcmVxdWVzdCBib2R5OgoKYGBganNvbgp7CiAgImZpcnN0bmFtZSI6ICJjYXJtaW5lIiwKICAibGFzdG5hbWUiOiAiZGltYXNpY28iCn0KYGBgCgpMZXQncyBub3cgYXNzdW1lIGFuIEFQSSB1c2VyIG1pc3NwZWxscyBgbGFzdG5hbWVgIGFzIGBsYXN0bmFtYAoKYGBgc2hlbGwKY3VybCAtWCBQT1NUIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvdXNlcnMgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgLWQneyAKICAiZmlyc3RuYW1lIjogImMiLCAKICAibGFzdG5hbSI6ICJkIiAKfScKYGBgCgpgb3BlbmFwaS1zcHJpbmctd2ViZmx1eC12YWxpZGF0b3JgIGF1dG9tYXRpY2FsbHkgdmFsaWRhdGVzIHRoZSByZXF1ZXN0IGFnYWluc3QgYSBTd2FnZ2VyIHNwZWN0IGFuZCByZXR1cm5zOgoKYGBganNvbgp7CiAgImNvZGUiOiA0MDAsCiAgIm1lc3NhZ2VzIjpbCgkgICJPYmplY3QgaW5zdGFuY2UgaGFzIHByb3BlcnRpZXMgd2hpY2ggYXJlIG5vdCBhbGxvd2VkIGJ5IHRoZSBzY2hlbWE6IFtcImxhc3RuYW1cIl0iLAoJICAiT2JqZWN0IGhhcyBtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnRpZXMgKFtcImxhc3RuYW1lXCJdKSIKICBdCn0gCmBgYAoKKipXb2FoISBDb29sISEqKiA6LUQgCgojIyBFeGFtcGxlCgpMZXQncyBzYXkgeW91IGhhdmUgYW4gZW5kcG9pbnQgYC91c2Vyc2AgdGhhdCBzdXBwb3J0cyBib3RoIGBHRVRgIGFuZCBgUE9TVGAgb3BlcmF0aW9ucy4KCllvdSBjYW4gY3JlYXRlIHRob3NlIHJvdXRlcyBhbmQgdmFsaWRhdGUgdGhlbSBsaWtlIHNvOgoKKipDcmVhdGUgdGhlIHJvdXRlcyBpbiBhIHJlYWN0aXZlIG9yIGNvcm91dGluZSBzdHlsZToqKgoKYGBga290bGluCnBhY2thZ2UgbXlwcm9qZWN0LmNvbnRyb2xsZXJzCgppbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5jb3JlLmlvLkNsYXNzUGF0aFJlc291cmNlCmltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmh0dHAuTWVkaWFUeXBlLioKaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLnJlYWN0aXZlLmZ1bmN0aW9uLnNlcnZlci5TZXJ2ZXJSZXNwb25zZS5wZXJtYW5lbnRSZWRpcmVjdAppbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIucmVhY3RpdmUuZnVuY3Rpb24uc2VydmVyLmNvUm91dGVyCmltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5yZWFjdGl2ZS5mdW5jdGlvbi5zZXJ2ZXIucGx1cwppbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIucmVhY3RpdmUuZnVuY3Rpb24uc2VydmVyLnJvdXRlcgppbXBvcnQgamF2YS5uZXQuVVJJCgpjbGFzcyBSb3V0ZXMocHJpdmF0ZSB2YWwgdXNlckhhbmRsZXI6IFVzZXJIYW5kbGVyKSB7CiAgICBmdW4gcm91dGVyKCkgPSByb3V0ZXIgewogICAgICAgICIvYXBpIi5uZXN0IHsKICAgICAgICAgICAgYWNjZXB0KEFQUExJQ0FUSU9OX0pTT04pLm5lc3QgewogICAgICAgICAgICAgICAgUE9TVCgiL3VzZXJzIiwgdXNlckhhbmRsZXI6OmNyZWF0ZSkKICAgICAgICAgICAgfQogICAgICAgICAgICBhY2NlcHQoVEVYVF9FVkVOVF9TVFJFQU0pLm5lc3QgewogICAgICAgICAgICAgICAgR0VUKCIvdXNlcnMiLCB1c2VySGFuZGxlcjo6ZmluZEFsbCkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gKyBjb1JvdXRlciB7IAogICAgICAgICIvY29BcGkiLm5lc3QgewogICAgICAgICAgICBhY2NlcHQoQVBQTElDQVRJT05fSlNPTikubmVzdCB7CiAgICAgICAgICAgICAgICBQT1NUKCIvdXNlcnMiLCB1c2VySGFuZGxlcjo6Y29DcmVhdGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYWNjZXB0KFRFWFRfRVZFTlRfU1RSRUFNKS5uZXN0IHsKICAgICAgICAgICAgICAgIEdFVCgiL3VzZXJzIiwgdXNlckhhbmRsZXI6OmNvRmluZEFsbCkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpgYGAKCmBgYGtvdGxpbgpwYWNrYWdlIG15cHJvamVjdAoKaW1wb3J0IGlvLmdpdGh1Yi5jZGltYXNjaW8ub3BlbmFwaS5WYWxpZGF0ZQoKdmFsIHZhbGlkYXRlID0gVmFsaWRhdGUuY29uZmlndXJlKCJzdGF0aWMvYXBpLnlhbWwiKQpgYGAKCioqVmFsaWRhdGUgd2l0aCBvcGVuYXBpLXNwcmluZy13ZWJmbHV4LXZhbGlkYXRvcioqCgpgYGBrb3RsaW4KcGFja2FnZSBteXByb2plY3QuY29udHJvbGxlcnMKCmltcG9ydCBteXByb2plY3QubW9kZWxzLlVzZXIKaW1wb3J0IG15cHJvamVjdC52YWxpZGF0ZQppbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIucmVhY3RpdmUuZnVuY3Rpb24uc2VydmVyLlNlcnZlclJlcXVlc3QKaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLnJlYWN0aXZlLmZ1bmN0aW9uLnNlcnZlci5TZXJ2ZXJSZXNwb25zZQppbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIucmVhY3RpdmUuZnVuY3Rpb24uc2VydmVyLlNlcnZlclJlc3BvbnNlLm9rCmltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5yZWFjdGl2ZS5mdW5jdGlvbi5zZXJ2ZXIuYm9keVZhbHVlQW5kQXdhaXQKaW1wb3J0IHJlYWN0b3IuY29yZS5wdWJsaXNoZXIuRmx1eAppbXBvcnQgcmVhY3Rvci5jb3JlLnB1Ymxpc2hlci5Nb25vCgpjbGFzcyBVc2VySGFuZGxlciB7CgogICAgZnVuIGZpbmRBbGwocmVxOiBTZXJ2ZXJSZXF1ZXN0KTogTW9ubzxTZXJ2ZXJSZXNwb25zZT4gewogICAgICAgIHJldHVybiB2YWxpZGF0ZS5yZXF1ZXN0KHJlcSkgewogICAgICAgICAgICBvaygpLmJvZHlWYWx1ZShsaXN0T2YoImNhcm1pbmUiLCAiYWxleCIsICJlbGlhbmEiKSkKICAgICAgICB9CiAgICB9CgogICAgZnVuIGNyZWF0ZShyZXE6IFNlcnZlclJlcXVlc3QpOiBNb25vPFNlcnZlclJlc3BvbnNlPiB7CiAgICAgICAgcmV0dXJuIHZhbGlkYXRlLnJlcXVlc3QocmVxKS53aXRoQm9keShVc2VyOjpjbGFzcy5qYXZhKSB7CiAgICAgICAgICAgIC8vIGl0IGlzIHRoZSByZXF1ZXN0IGJvZHkgZGVzZXJpYWxpemVkIGFzIFVzZXIKICAgICAgICAgICAgb2soKS5ib2R5VmFsdWUoaXQpCiAgICAgICAgfQogICAgfQoKICAgIHN1c3BlbmQgZnVuIGNvRmluZEFsbChyZXE6IFNlcnZlclJlcXVlc3QpOiBTZXJ2ZXJSZXNwb25zZSB7CiAgICAgICAgcmV0dXJuIHZhbGlkYXRlLnJlcXVlc3RBbmRBd2FpdChyZXEpIHsKICAgICAgICAgICAgb2soKS5ib2R5VmFsdWVBbmRBd2FpdChsaXN0T2YoImNhcm1pbmUiLCAiYWxleCIsICJlbGlhbmEiKSkKICAgICAgICB9CiAgICB9CgogICAgc3VzcGVuZCBmdW4gY29DcmVhdGUocmVxOiBTZXJ2ZXJSZXF1ZXN0KTogU2VydmVyUmVzcG9uc2UgewogICAgICAgIHJldHVybiB2YWxpZGF0ZS5yZXF1ZXN0KHJlcSkuYXdhaXRCb2R5KFVzZXI6OmNsYXNzLmphdmEpIHsKICAgICAgICAgICAgLy8gaXQgaXMgdGhlIHJlcXVlc3QgYm9keSBkZXNlcmlhbGl6ZWQgYXMgVXNlcgogICAgICAgICAgICBvaygpLmJvZHlWYWx1ZUFuZEF3YWl0KGl0KQogICAgICAgIH0KICAgIH0KfQpgYGAKCiMjIExpY2Vuc2UKCltBcGFjaGUgMi4wXShodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wKQoKPGEgaHJlZj0iaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9tOTd0QTVjIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vYm1jLWNkbi5ueWMzLmRpZ2l0YWxvY2VhbnNwYWNlcy5jb20vQk1DLWJ1dHRvbi1pbWFnZXMvY3VzdG9tX2ltYWdlcy9vcmFuZ2VfaW1nLnBuZyIgYWx0PSJCdXkgTWUgQSBDb2ZmZWUiIHN0eWxlPSJoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDt3aWR0aDogYXV0byAhaW1wb3J0YW50OyIgPjwvYT4KCiMjIENvbnRyaWJ1dG9ycyDinKgKClRoYW5rcyBnb2VzIHRvIHRoZXNlIHdvbmRlcmZ1bCBwZW9wbGUgKFtlbW9qaSBrZXldKGh0dHBzOi8vYWxsY29udHJpYnV0b3JzLm9yZy9kb2NzL2VuL2Vtb2ppLWtleSkpOgoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6U1RBUlQgLSBEbyBub3QgcmVtb3ZlIG9yIG1vZGlmeSB0aGlzIHNlY3Rpb24gLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgo8IS0tIG1hcmtkb3dubGludC1kaXNhYmxlIC0tPgo8dGFibGU+CiAgPHRyPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMxLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ3MDY2MTg/dj00IiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+Q2FybWluZSBEaU1hc2NpbzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NkaW1hc2Npby9vcGVuYXBpLXNwcmluZy13ZWJmbHV4LXZhbGlkYXRvci9jb21taXRzP2F1dGhvcj1jZGltYXNjaW8iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2RpbWFzY2lvL29wZW5hcGktc3ByaW5nLXdlYmZsdXgtdmFsaWRhdG9yL2NvbW1pdHM/YXV0aG9yPWNkaW1hc2NpbyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vb3BlbmFwaS1zcHJpbmctd2ViZmx1eC12YWxpZGF0b3IvY29tbWl0cz9hdXRob3I9Y2RpbWFzY2lvIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rcnp5a3J1Y3oiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMxLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE4MzY0MTc3P3Y9NCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPktyenlzaWVrIEtydWN6ecWEc2tpPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2RpbWFzY2lvL29wZW5hcGktc3ByaW5nLXdlYmZsdXgtdmFsaWRhdG9yL2NvbW1pdHM/YXV0aG9yPWtyenlrcnVjeiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vb3BlbmFwaS1zcHJpbmctd2ViZmx1eC12YWxpZGF0b3IvY29tbWl0cz9hdXRob3I9a3J6eWtydWN6IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NkaW1hc2Npby9vcGVuYXBpLXNwcmluZy13ZWJmbHV4LXZhbGlkYXRvci9jb21taXRzP2F1dGhvcj1rcnp5a3J1Y3oiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NoZWplcmxha2FydGhpayI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczAuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTI4NzEwNzk/dj00IiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+Q2hlamVybGEgS2FydGhpazwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NkaW1hc2Npby9vcGVuYXBpLXNwcmluZy13ZWJmbHV4LXZhbGlkYXRvci9jb21taXRzP2F1dGhvcj1jaGVqZXJsYWthcnRoaWsiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cDovL3d3dy5rYXRpZWxldnkuY29tIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMC5naXRodWJ1c2VyY29udGVudC5jb20vdS84OTc1MTgxP3Y9NCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPkthdGllIExldnk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vb3BlbmFwaS1zcHJpbmctd2ViZmx1eC12YWxpZGF0b3IvY29tbWl0cz9hdXRob3I9a2F0aWVsZXZ5MSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcmVpbnRlcnByZXRjYXQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMxLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE2MTEwNzc/dj00IiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+SWx5YSBCdWlsdWs8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vb3BlbmFwaS1zcHJpbmctd2ViZmx1eC12YWxpZGF0b3IvY29tbWl0cz9hdXRob3I9cmVpbnRlcnByZXRjYXQiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cDovL3NpbW9uLnphbWJyb3Zza2kub3JnLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczAuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjczMTI4P3Y9NCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPlNpbW9uIFphbWJyb3Zza2k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vb3BlbmFwaS1zcHJpbmctd2ViZmx1eC12YWxpZGF0b3IvY29tbWl0cz9hdXRob3I9emFtYnJvdnNraSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vb3BlbmFwaS1zcHJpbmctd2ViZmx1eC12YWxpZGF0b3IvY29tbWl0cz9hdXRob3I9emFtYnJvdnNraSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKPCEtLSBtYXJrZG93bmxpbnQtZW5hYmxlIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+CjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1MSVNUOkVORCAtLT4KClRoaXMgcHJvamVjdCBmb2xsb3dzIHRoZSBbYWxsLWNvbnRyaWJ1dG9yc10oaHR0cHM6Ly9naXRodWIuY29tL2FsbC1jb250cmlidXRvcnMvYWxsLWNvbnRyaWJ1dG9ycykgc3BlY2lmaWNhdGlvbi4gQ29udHJpYnV0aW9ucyBvZiBhbnkga2luZCB3ZWxjb21lIQo= readmeEtag: '"a2e728aee174f34ca6d5605aad0082ccc6702d5c"' readmeLastModified: Wed, 28 Dec 2022 03:11:56 GMT repositoryId: 112494052 description: >- 🌱 A friendly kotlin library to validate API endpoints using an OpenApi 3.0 and Swagger 2.0 specification created: '2017-11-29T15:41:04Z' updated: '2026-02-03T03:42:17Z' language: Kotlin archived: false stars: 99 watchers: 4 forks: 13 owner: cdimascio logo: https://avatars.githubusercontent.com/u/4706618?v=4 license: NOASSERTION repoEtag: '"72b51de16b770b7520b269e91cc8655e75a4c31bbe4c0bf26b20a3a6f6d350a0"' repoLastModified: Tue, 03 Feb 2026 03:42:17 GMT foundInMaster: true id: 73c574b5f31d77e560375bfaef2b65eb - source: - https://openapi.tools/ - openapi3 tags name: Spectral homepage: https://github.com/stoplightio/spectral language: - CLI - TypeScript - JavaScript source_description: > A flexible OpenAPI/AsyncAPI API linter, which can help you build anything from automated API Style Guides for API Governance workflows, or handle any other JSON/YAML object linting. functions. category: Description Validators link: https://stoplight.io/spectral repository: https://github.com/stoplightio/spectral v2: true v3: true v3_1: true repositoryMetadata: base64Readme: >- WyFbRGVtbyBvZiBTcGVjdHJhbCBsaW50aW5nIGFuIE9wZW5BUEkgZG9jdW1lbnQgZnJvbSB0aGUgQ0xJXSguL2RvY3MvaW1nL3JlYWRtZS1oZWFkZXIuc3ZnKV0oaHR0cHM6Ly9zdG9wbGlnaHQuaW8vYXBpLWdvdmVybmFuY2U/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT1zcGVjdHJhbCZ1dG1fY2FtcGFpZ249cmVhZG1lKQpbIVtDaXJjbGVDSV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jaXJjbGVjaS9idWlsZC9naXRodWIvc3RvcGxpZ2h0aW8vc3BlY3RyYWwvZGV2ZWxvcCldKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL3N0b3BsaWdodGlvL3NwZWN0cmFsKSBbIVtucG0gRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kdy9Ac3RvcGxpZ2h0L3NwZWN0cmFsLWNvcmU/Y29sb3I9Ymx1ZSldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BzdG9wbGlnaHQvc3BlY3RyYWwtY29yZSkgWyFbU3RvcGxpZ2h0IEZvcmVzdF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9lY29sb2dpL3RyZWVzL3N0b3BsaWdodGluYyldW3N0b3BsaWdodF9mb3Jlc3RdCgotICoqQ3VzdG9tIFJ1bGVzZXRzKio6IENyZWF0ZSBjdXN0b20gcnVsZXMgdG8gbGludCBKU09OIG9yIFlBTUwgb2JqZWN0cwotICoqUmVhZHktdG8tdXNlIFJ1bGVzZXRzKio6IFZhbGlkYXRlIGFuZCBsaW50ICoqT3BlbkFQSSB2MiAmIHYzLngqKiwgKipBc3luY0FQSSoqLCBhbmQgKipBcmF6em8gdjEqKiBEb2N1bWVudHMKLSAqKkFQSSBTdHlsZSBHdWlkZXMqKjogQXV0b21hdGVkIFtBUEkgU3R5bGUgR3VpZGVzXShodHRwczovL3N0b3BsaWdodC5pby9hcGktc3R5bGUtZ3VpZGVzLWd1aWRlbGluZXMtYW5kLWJlc3QtcHJhY3RpY2VzP3V0bV9zb3VyY2U9Z2l0aHViLmNvbSZ1dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9jYW1wYWlnbj1naXRodWJfcmVwb19zcGVjdHJhbCkgdXNpbmcgcnVsZXNldHMgaW1wcm92ZSBjb25zaXN0ZW5jeSBhY3Jvc3MgYWxsIHlvdXIgQVBJcwotICoqUmVhZHktdG8tdXNlIEZ1bmN0aW9ucyoqOiBCdWlsdC1pbiBzZXQgb2YgZnVuY3Rpb25zIHRvIGhlbHAgW2NyZWF0ZSBjdXN0b20gcnVsZXNdKGh0dHBzOi8vbWV0YS5zdG9wbGlnaHQuaW8vZG9jcy9zcGVjdHJhbC9lNWI5NjE2ZDZkNTBjLWN1c3RvbS1ydWxlc2V0cyNhZGRpbmctcnVsZXMpLiBGdW5jdGlvbnMgaW5jbHVkZSBwYXR0ZXJuIGNoZWNrcywgcGFyYW1ldGVyIGNoZWNrcywgYWxwaGFiZXRpY2FsIG9yZGVyaW5nLCBhIHNwZWNpZmllZCBudW1iZXIgb2YgY2hhcmFjdGVycywgcHJvdmlkZWQga2V5cyBhcmUgcHJlc2VudCBpbiBhbiBvYmplY3QsIGV0Yy4KLSAqKkN1c3RvbSBGdW5jdGlvbnMqKjogQ3JlYXRlIGN1c3RvbSBmdW5jdGlvbnMgZm9yIGFkdmFuY2VkIHVzZSBjYXNlcwoKIyBPdmVydmlldwoKLSBb8J+nsCBJbnN0YWxsYXRpb25dKCMtaW5zdGFsbGF0aW9uKQotIFvwn5K7IFVzYWdlXSgjLXVzYWdlKQotIFvwn5OWIERvY3VtZW50YXRpb25dKCMtZG9jdW1lbnRhdGlvbikKLSBb4oS577iPIFN1cHBvcnRdKCPihLnvuI8tc3VwcG9ydCkKLSBb8J+MjiBSZWFsLVdvcmxkIFJ1bGVzZXRzXSgjLXJlYWwtd29ybGQtcnVsZXNldHMpCi0gW+Kame+4jyBJbnRlZ3JhdGlvbnNdKCPvuI8taW50ZWdyYXRpb25zKQotIFvwn5GPIENvbnRyaWJ1dGluZ10oIy1jb250cmlidXRpbmcpCi0gW/CfjLIgU3BvbnNvciBTcGVjdHJhbCBieSBQbGFudGluZyBhIFRyZWVdKCMtc3BvbnNvci1zcGVjdHJhbC1ieS1wbGFudGluZy1hLXRyZWUpCgojIyDwn6ewIEluc3RhbGxhdGlvbgoKVGhlIGVhc2llc3Qgd2F5IHRvIGluc3RhbGwgc3BlY3RyYWwgaXMgdG8gdXNlIGVpdGhlciBbbnBtXShodHRwczovL3d3dy5ucG1qcy5jb20vKToKCmBgYGJhc2gKbnBtIGluc3RhbGwgLWcgQHN0b3BsaWdodC9zcGVjdHJhbC1jbGkKYGBgCgpPciBbeWFybl0oaHR0cHM6Ly95YXJucGtnLmNvbS8pOgoKYGBgCnlhcm4gZ2xvYmFsIGFkZCBAc3RvcGxpZ2h0L3NwZWN0cmFsLWNsaQpgYGAKClRoZXJlIGFyZSBhbHNvIFthZGRpdGlvbmFsIGluc3RhbGxhdGlvbiBvcHRpb25zXShodHRwczovL21ldGEuc3RvcGxpZ2h0LmlvL2RvY3Mvc3BlY3RyYWwvWkc5ak9qWXlNRGMwTXctaW5zdGFsbGF0aW9uKS4KCiMjIPCfkrsgVXNhZ2UKCiMjIyAxLiBDcmVhdGUgYSBsb2NhbCBydWxlc2V0CgpTcGVjdHJhbCwgYmVpbmcgYSBnZW5lcmljIFlBTUwvSlNPTiBsaW50ZXIsICoqbmVlZHMgYSBydWxlc2V0KiogdG8gbGludCBmaWxlcy4gQSBydWxlc2V0IGlzIGEgSlNPTiwgWUFNTCwgb3IgSmF2YVNjcmlwdC9UeXBlU2NyaXB0IGZpbGUgKG9mdGVuIHRoZSBmaWxlIGlzIGNhbGxlZCBgLnNwZWN0cmFsLnlhbWxgIGZvciBhIFlBTUwgcnVsZXNldCkgdGhhdCBjb250YWlucyBhIGNvbGxlY3Rpb24gb2YgcnVsZXMsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGxpbnQgb3RoZXIgSlNPTiBvciBZQU1MIGZpbGVzIHN1Y2ggYXMgYW4gQVBJIGRlc2NyaXB0aW9uLgoKVG8gZ2V0IHN0YXJ0ZWQsIHJ1biB0aGlzIGNvbW1hbmQgaW4geW91ciB0ZXJtaW5hbCB0byBjcmVhdGUgYSBgLnNwZWN0cmFsLnlhbWxgIGZpbGUgdGhhdCB1c2VzIHRoZSBTcGVjdHJhbCBwcmVkZWZpbmVkIHJ1bGVzZXRzIGJhc2VkIG9uIE9wZW5BUEksIEFyYXp6byBvciBBc3luY0FQSToKCmBgYGJhc2gKZWNobyAnZXh0ZW5kczogWyJzcGVjdHJhbDpvYXMiLCAic3BlY3RyYWw6YXN5bmNhcGkiLCAic3BlY3RyYWw6YXJhenpvIl0nID4gLnNwZWN0cmFsLnlhbWwKYGBgCgpJZiB5b3Ugd291bGQgbGlrZSB0byBjcmVhdGUgeW91ciBvd24gcnVsZXMsIGNoZWNrIG91dCB0aGUgW0N1c3RvbSBSdWxlc2V0c10oaHR0cHM6Ly9tZXRhLnN0b3BsaWdodC5pby9kb2NzL3NwZWN0cmFsLzAxYmFmMDZiZGQwNWEtcnVsZXNldHMpIHBhZ2UuCgojIyMgMi4gTGludAoKVXNlIHRoaXMgY29tbWFuZCBpZiB5b3UgaGF2ZSBhIHJ1bGVzZXQgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIGRvY3VtZW50cyB5b3UgYXJlIGxpbnRpbmc6CgpgYGBiYXNoCnNwZWN0cmFsIGxpbnQgbXlhcGlmaWxlLnlhbWwKYGBgCgpVc2UgdGhpcyBjb21tYW5kIHRvIGxpbnQgd2l0aCBhIGN1c3RvbSBydWxlc2V0LCBvciBvbmUgdGhhdCdzIGxvY2F0ZWQgaW4gYSBkaWZmZXJlbnQgZGlyZWN0b3J5IHRoYW4gdGhlIGRvY3VtZW50cyBiZWluZyBsaW50ZWQ6CgpgYGBiYXNoCnNwZWN0cmFsIGxpbnQgbXlhcGlmaWxlLnlhbWwgLS1ydWxlc2V0IG15cnVsZXNldC55YW1sCmBgYAoKIyMg8J+TliBEb2N1bWVudGF0aW9uCgotIFtEb2N1bWVudGF0aW9uXShodHRwczovL21ldGEuc3RvcGxpZ2h0LmlvL2RvY3Mvc3BlY3RyYWwvZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvMS1jb25jZXB0cy5tZCkKICAtIFtHZXR0aW5nIFN0YXJ0ZWRdKGh0dHBzOi8vbWV0YS5zdG9wbGlnaHQuaW8vZG9jcy9zcGVjdHJhbC9kb2NzL2dldHRpbmctc3RhcnRlZC8xLWNvbmNlcHRzLm1kKSAtIFRoZSBiYXNpY3Mgb2YgU3BlY3RyYWwuCiAgLSBbUnVsZXNldHNdKGh0dHBzOi8vbWV0YS5zdG9wbGlnaHQuaW8vZG9jcy9zcGVjdHJhbC8wMWJhZjA2YmRkMDVhLXJ1bGVzZXRzKSAtIFVuZGVyc3RhbmQgdGhlIHN0cnVjdHVyZSBvZiBhIHJ1bGVzZXQgc28geW91IGNhbiB0d2VhayBhbmQgbWFrZSB5b3VyIG93biBydWxlcy4KCk9uY2UgeW91J3ZlIGhhZCBhIGxvb2sgdGhyb3VnaCB0aGUgZ2V0dGluZyBzdGFydGVkIG1hdGVyaWFsLCBzb21lIG9mIHRoZXNlIGd1aWRlcyBjYW4gaGVscCB5b3UgYmVjb21lIGEgcG93ZXIgdXNlci4KCi0gW0RpZmZlcmVudCBXb3JrZmxvd3NdKGh0dHBzOi8vbWV0YS5zdG9wbGlnaHQuaW8vZG9jcy9zcGVjdHJhbC9kb2NzL2d1aWRlcy8xLXdvcmtmbG93cy5tZCkgLSBXaGVuIGFuZCB3aGVyZSBzaG91bGQgeW91IHVzZSBTcGVjdHJhbD8gRWRpdG9ycywgR2l0IGhvb2tzLCBjb250aW51b3VzIGludGVncmF0aW9uLCBHaXRIdWIgQWN0aW9ucywgd2hlcmV2ZXIgeW91IGxpa2UhCi0gW1VzaW5nIHRoZSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlXShodHRwczovL21ldGEuc3RvcGxpZ2h0LmlvL2RvY3Mvc3BlY3RyYWwvZG9jcy9ndWlkZXMvMi1jbGkubWQpIC0gUXVpY2tlc3Qgd2F5IHRvIGdldCBnb2luZyB3aXRoIFNwZWN0cmFsIGlzIGluIHRoZSBDTEkuCi0gW1VzaW5nIHRoZSBKYXZhU2NyaXB0IEFQSV0oaHR0cHM6Ly9tZXRhLnN0b3BsaWdodC5pby9kb2NzL3NwZWN0cmFsL2RvY3MvZ3VpZGVzLzMtamF2YXNjcmlwdC5tZCkgLSBBY2Nlc3MgdGhlIF9yYXcgcG93ZXJfIG9mIFNwZWN0cmFsIHZpYSB0aGUgSlMsIG9yIGhleSwgVHlwZVNjcmlwdCBpZiB5b3Ugd2FudC4KLSBbQ3VzdG9tIFJ1bGVzZXRzXShodHRwczovL21ldGEuc3RvcGxpZ2h0LmlvL2RvY3Mvc3BlY3RyYWwvZG9jcy9ndWlkZXMvNC1jdXN0b20tcnVsZXNldHMubWQpIC0gTmVlZCBzb21ldGhpbmcgbW9yZSB0aGFuIHRoZSBjb3JlIHJ1bGVzZXRzIHByb3ZpZGU/IEZhbmN5IGJ1aWxkaW5nIHlvdXIgb3duIEFQSSBTdHlsZSBHdWlkZT8gTGVhcm4gaG93IHRvIGNyZWF0ZSBhIGN1c3RvbSBydWxlc2V0LgotIFtDdXN0b20gRnVuY3Rpb25zXShodHRwczovL21ldGEuc3RvcGxpZ2h0LmlvL2RvY3Mvc3BlY3RyYWwvZG9jcy9ndWlkZXMvNS1jdXN0b20tZnVuY3Rpb25zLm1kKSAtIEhhbmRsZSBtb3JlIGFkdmFuY2VkIHJ1bGVzLCBieSB3cml0aW5nIGEgbGl0dGxlIEphdmFTY3JpcHQvVHlwZVNjcmlwdCBhbmQgY2FsbGluZyBpdCBhcyBhIGZ1bmN0aW9uLgoKIyMg4oS577iPIFN1cHBvcnQKCklmIHlvdSBuZWVkIGhlbHAgdXNpbmcgU3BlY3RyYWwgb3IgaGF2ZSBhbnkgcXVlc3Rpb25zLCB5b3UgY2FuIHVzZSBbR2l0SHViIERpc2N1c3Npb25zXShodHRwczovL2dpdGh1Yi5jb20vc3RvcGxpZ2h0aW8vc3BlY3RyYWwvZGlzY3Vzc2lvbnMpLCBvciB2aXNpdCB0aGUgW1N0b3BsaWdodCBDb21tdW5pdHkgRm9ydW1dKGh0dHBzOi8vY29tbXVuaXR5LnN0b3BsaWdodC5pby8pLiBUaGVzZSBjb21tdW5pdGllcyBhcmUgYSBncmVhdCBwbGFjZSB0byBzaGFyZSB5b3VyIHJ1bGVzZXRzLCBvciBzaG93IG9mZiB0b29scyB0aGF0IHVzZSBTcGVjdHJhbC4KCklmIHlvdSBoYXZlIGEgYnVnIG9yIGZlYXR1cmUgcmVxdWVzdCwgW2NyZWF0ZSBhbiBpc3N1ZSBmb3IgaXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9wbGlnaHRpby9zcGVjdHJhbC9pc3N1ZXMpLgoKIyMg8J+MjiBSZWFsLVdvcmxkIFJ1bGVzZXRzCgpTdG9wbGlnaHQgaGFzIGEgc2V0IG9mIFNwZWN0cmFsIHJ1bGVzZXRzIHRoYXQgd2VyZSBjcmVhdGVkIHRvIGhlbHAgdXNlcnMgZ2V0IHN0YXJ0ZWQgd2l0aCBTdG9wbGlnaHQncyBTdHlsZSBHdWlkZXMuIFlvdSBjYW4gZmluZCB0aGVtIG9uIFtBUEkgU3R5bGVib29rXShodHRwczovL2FwaXN0eWxlYm9vay5zdG9wbGlnaHQuaW8vKSwgYW5kIHlvdSBjYW4gZG93bmxvYWQgdGhlIHNvdXJjZSBTcGVjdHJhbCBmaWxlIGJ5IHNlbGVjdGluZyBhIHN0eWxlIGd1aWRlIG9uIHRoZSBwcm9qZWN0IHNpZGViYXIgYW5kIHNlbGVjdGluZyAqKkV4cG9ydCoqIC0+ICoqU3BlY3RyYWwgRmlsZShzKSoqIG9uIHRoZSB0b3AtcmlnaHQuIEEgZmV3IG5vdGV3b3J0aHkgc3R5bGUgZ3VpZGVzIGFyZToKCi0gW09XQVNQIFRvcCAxMF0oaHR0cHM6Ly9hcGlzdHlsZWJvb2suc3RvcGxpZ2h0LmlvL2RvY3Mvb3dhc3AtdG9wLTEwKSAtIFNldCBvZiBydWxlcyB0byBlbmZvcmNlIFtPV0FTUCBzZWN1cml0eSBndWlkZWxpbmVzXShodHRwczovL293YXNwLm9yZy93d3ctcHJvamVjdC1hcGktc2VjdXJpdHkvKS4KLSBbVVJMIFN0eWxlIEd1aWRlbGluZXNdKGh0dHBzOi8vYXBpc3R5bGVib29rLnN0b3BsaWdodC5pby9kb2NzL3VybC1ndWlkZWxpbmVzKSAtIFNldCBvZiBydWxlcyB0byBoZWxwIGRldmVsb3BlcnMgbWFrZSBiZXR0ZXIgYW5kIGNvbnNpc3RlbnQgZW5kcG9pbnRzLgotIFtEb2N1bWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vc3RvcGxpZ2h0aW8vc3BlY3RyYWwtZG9jdW1lbnRhdGlvbikgLSBTY2FuIGFuIE9wZW5BUEkgZGVzY3JpcHRpb24gdG8gbWFrZSBzdXJlIHlvdSdyZSBsZXZlcmFnaW5nIGVub3VnaCBvZiBpdHMgZmVhdHVyZXMgdG8gaGVscCBkb2N1bWVudGF0aW9uIHRvb2xzIGxpa2UgU3RvcGxpZ2h0IEVsZW1lbnRzLCBSZURvYywgYW5kIFN3YWdnZXIgVUkgYnVpbGQgdGhlIGJlc3QgcXVhbGl0eSBBUEkgUmVmZXJlbmNlIERvY3VtZW50YXRpb24gcG9zc2libGUuCgpUaGVyZSBhcmUgYWxzbyBydWxlc2V0cyBjcmVhdGVkIGJ5IG1hbnkgY29tcGFuaWVzIHRvIGltcHJvdmUgdGhlaXIgQVBJcy4gWW91IGNhbiB1c2UgdGhlc2UgYXMgaXMgdG8gbGludCB5b3VyIE9wZW5BUEkgZGVzY3JpcHRpb25zLCBvciB1c2UgdGhlc2UgYXMgYSByZWZlcmVuY2UgdG8gbGVhcm4gbW9yZSBhYm91dCB3aGF0IHJ1bGVzIHlvdSB3b3VsZCB3YW50IGluIHlvdXIgb3duIHJ1bGVzZXQ6CgotIFtBZGlkYXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9hZGlkYXMvYXBpLWd1aWRlbGluZXMvYmxvYi9tYXN0ZXIvLnNwZWN0cmFsLnltbCkgLSBBZGlkYXMgd2VyZSBvbmUgb2YgdGhlIGZpcnN0IGNvbXBhbmllcyB0byByZWxlYXNlIHRoZWlyIEFQSSBTdHlsZSBHdWlkZSBpbiBhIHdyaXR0ZW4gZ3VpZGUgX2FuZF8gYSBTcGVjdHJhbCBydWxlc2V0LiBMb3RzIG9mIGdvb2QgcnVsZXMgdG8gdHJ5IGluIGhlcmUuCi0gW0FQSXMgWW91IFdvbid0IEhhdGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlzeW91d29udGhhdGUvc3R5bGUtZ3VpZGUpIC0gQW4gb3BpbmlvbmF0ZWQgY29sbGVjdGlvbiBvZiBydWxlcyBiYXNlZCBvbiBhZHZpY2UgaW4gdGhlIFtBUElzIFlvdSBXb24ndCBIYXRlXShodHRwczovL2FwaXN5b3V3b250aGF0ZS5jb20vKSBjb21tdW5pdHkuCi0gW0F6dXJlXShodHRwczovL2dpdGh1Yi5jb20vQXp1cmUvYXp1cmUtYXBpLXN0eWxlLWd1aWRlL2Jsb2IvbWFpbi9zcGVjdHJhbC55YW1sKSAtIFJ1bGVzZXQgYW5kIGNvbXBsaW1lbnRhcnkgc3R5bGUgZ3VpZGUgZm9yIGNyZWF0aW5nIE9wZW5BUEkgMiBvciAzIGRlZmluaXRpb25zIG9mIEF6dXJlIHNlcnZpY2VzLgotIFtCb3hdKGh0dHBzOi8vZ2l0aHViLmNvbS9ib3gvYm94LW9wZW5hcGkvYmxvYi9tYWluLy5zcGVjdHJhbC55bWwpIC0gTG90cyBvZiBbQ3VzdG9tIEZ1bmN0aW9uc10oaHR0cHM6Ly9tZXRhLnN0b3BsaWdodC5pby9kb2NzL3NwZWN0cmFsL1pHOWpPakkxTVRrdy1jdXN0b20tZnVuY3Rpb25zKSBiZWluZyB1c2VkIHRvIGVuZm9yY2UgZ29vZCBwcmFjdGljZXMgdGhhdCB0aGUgQm94IEFQSSBnb3Zlcm5hbmNlIGZvbGtzIGFyZSBpbnRlcmVzdGVkIGluLgotIFtEaWdpdGFsT2NlYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9kaWdpdGFsb2NlYW4vb3BlbmFwaS9ibG9iL21haW4vc3BlY3RyYWwvcnVsZXNldC55bWwpIC0gS2VlcGluZyB0aGVpciBPcGVuQVBJIG5pY2UgYW5kIHRpZHksIGVuZm9yY2luZyB1c2Ugb2YgYCRyZWZgIChwcm9iYWJseSB0byBtaW5pbWl6ZSBjb25mbGljdHMpLCBuYW1pbmcgY29udmVudGlvbnMgZm9yIE9wZXJhdGlvbiBJRHMsIGFuZCBhbGwgc29ydHMgb2Ygb3RoZXIgaGFuZHkgT3BlbkFQSSB0aXBzLgotIFtUcmFuYXNjb21dKGh0dHBzOi8vZ2l0aHViLmNvbS90cmFuc2NvbS9teW1vdmUvYmxvYi9tYXN0ZXIvc3dhZ2dlci1kZWYvLnNwZWN0cmFsLnltbCkgLSBEb24ndCBldmVuIHRoaW5rIGFib3V0IHVzaW5nIGFueXRoaW5nIG90aGVyIHRoYW4gYGFwcGxpY2F0aW9uL2pzb25gLgotIFtaYWxhbmRvXShodHRwczovL2FwaXN0eWxlYm9vay5zdG9wbGlnaHQuaW8vZG9jcy96YWxhbmRvLXJlc3RmdWwtYXBpLWd1aWRlbGluZXMpIC0gQmFzZWQgb24gW1phbGFuZG8ncyBSRVNURlVMIEFQSSBHdWlkZWxpbmVzXShodHRwczovL2dpdGh1Yi5jb20vemFsYW5kby9yZXN0ZnVsLWFwaS1ndWlkZWxpbmVzKSwgY292ZXJzIGEgd2lkZS1yYW5nZSBvZiBBUEkgdG9waWNzIHN1Y2ggYXMgdmVyc2lvbmluZyBzdGFuZGFyZHMsIHByb3BlcnR5IG5hbWluZyBzdGFuZGFyZHMsIHRoZSBkZWZhdWx0IGZvcm1hdCBmb3IgcmVxdWVzdC9yZXNwb25zZSBwcm9wZXJ0aWVzLCBhbmQgbW9yZS4KCkNoZWNrIG91dCBzb21lIGFkZGl0aW9uYWwgc3R5bGUgZ3VpZGVzIGhlcmU6CgotIFtTcGVjdHJhbCBSdWxlc2V0cyBieSBTdG9wbGlnaHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9wbGlnaHRpby9zcGVjdHJhbC1ydWxlc2V0cykKLSBbQVBJIFN0eWxlYm9vayBieSBTdG9wbGlnaHRdKGh0dHBzOi8vYXBpc3R5bGVib29rLnN0b3BsaWdodC5pbykKCiMjIOKame+4jyBJbnRlZ3JhdGlvbnMKCi0gW0dpdEh1YiBBY3Rpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9wbGlnaHRpby9zcGVjdHJhbC1hY3Rpb24pIC0gTGludHMgZG9jdW1lbnRzIGluIHlvdXIgcmVwbywgYnVpbHQgYnkgW1ZpbmNlbnpvIENoaWFuZXNlXShodHRwczovL2dpdGh1Yi5jb20vWFZpbmNlbnRYLykuCi0gW0pldEJyYWlucyBQbHVnaW5dKGh0dHBzOi8vcGx1Z2lucy5qZXRicmFpbnMuY29tL3BsdWdpbi8xODUyMC1zcGVjdHJhbCkgLSBBdXRvbWF0aWMgbGludGluZyBvZiB5b3VyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgYW5kIGhpZ2hsaWdodGluZyBpbiB5b3VyIGVkaXRvci4KLSBbU3RvcGxpZ2h0IFN0dWRpb10oaHR0cHM6Ly9zdG9wbGlnaHQuaW8vc3R1ZGlvP3V0bV9zb3VyY2U9Z2l0aHViLmNvbSZ1dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9jYW1wYWlnbj1naXRodWJfcmVwb19zcGVjdHJhbCkgLSBVc2VzIFNwZWN0cmFsIHRvIHZhbGlkYXRlIGFuZCBsaW50IE9wZW5BUEkgZG9jdW1lbnRzLgotIFtWUyBDb2RlIFNwZWN0cmFsIEV4dGVuc2lvbl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPXN0b3BsaWdodC5zcGVjdHJhbCkgLSBBbGwgdGhlIHBvd2VyIG9mIFNwZWN0cmFsIHdpdGhvdXQgbGVhdmluZyBWUyBDb2RlLgoKIyMg8J+PgSBIZWxwIE90aGVycyBVdGlsaXplIFNwZWN0cmFsCgpJZiB5b3UncmUgdXNpbmcgU3BlY3RyYWwgZm9yIGFuIGludGVyZXN0aW5nIHVzZSBjYXNlLCBjcmVhdGUgYW4gaXNzdWUgd2l0aCBkZXRhaWxzIG9uIGhvdyB5b3UncmUgdXNpbmcgaXQuIFdlJ2xsIGFkZCBpdCB0byBhIGxpc3QgaGVyZS4gU3ByZWFkIHRoZSBnb29kbmVzcyDwn46JCgojIyDwn5GPIENvbnRyaWJ1dGluZwoKSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIGNvbnRyaWJ1dGluZyB0byBTcGVjdHJhbCwgY2hlY2sgb3V0IFtDT05UUklCVVRJTkcubWRdKENPTlRSSUJVVElORy5tZCkuCgojIyDwn46JIFRoYW5rcwoKLSBbTWlrZSBSYWxwaHNvbl0oaHR0cHM6Ly9naXRodWIuY29tL01pa2VSYWxwaHNvbikgZm9yIGtpY2tpbmcgb2ZmIHRoZSBTcGVjdHJhbCBDTEkgYW5kIGhpcyB3b3JrIG9uIFNwZWNjeQotIFtKYW11bmQgRmVyZ3Vzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS94amFtdW5keCkgZm9yIEpVbml0IGZvcm1hdHRlcgotIFtTaW5kcmUgU29yaHVzXShodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzKSBmb3IgU3R5bGlzaCBmb3JtYXR0ZXIKLSBbQXZhIFRob3JuXShodHRwczovL2dpdGh1Yi5jb20vYW10aG9ybikgZm9yIHRoZSBQcmV0dHkgZm9ybWF0dGVyCi0gSnVsaWFuIExhdmFsIGZvciBIVE1MIGZvcm1hdHRlcgotIFtAbnVsbHRva2VuXShodHRwczovL2dpdGh1Yi5jb20vbnVsbHRva2VuKSBmb3IgYSB3aG9sZSBidW5jaCBvZiBhbWF6aW5nIGZlYXR1cmVzCgojIyDwn5OcIExpY2Vuc2UKClNwZWN0cmFsIGlzIDEwMCUgZnJlZSBhbmQgb3Blbi1zb3VyY2UsIHVuZGVyIFtBcGFjaGUgTGljZW5zZSAyLjBdKExJQ0VOU0UpLgoKIyMg8J+MsiBTcG9uc29yIFNwZWN0cmFsIGJ5IFBsYW50aW5nIGEgVHJlZQoKSWYgeW91IHdvdWxkIGxpa2UgdG8gdGhhbmsgU3RvcGxpZ2h0IGZvciBjcmVhdGluZyBTcGVjdHJhbCwgWyoqYnV5IHRoZSB3b3JsZCBhIHRyZWUqKl1bc3RvcGxpZ2h0X2ZvcmVzdF0uCgpbc3RvcGxpZ2h0X2ZvcmVzdF06IGh0dHBzOi8vZWNvbG9naS5jb20vc3RvcGxpZ2h0aW5jCg== readmeEtag: '"f20ce650a5581991dfb549a95800dfeea7489b74"' readmeLastModified: Fri, 07 Mar 2025 13:53:46 GMT repositoryId: 144890632 description: >- A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI (v3.1, v3.0, and v2.0), Arazzo v1.0, as well as AsyncAPI v2.x. created: '2018-08-15T18:43:18Z' updated: '2026-02-05T12:49:17Z' language: TypeScript archived: false stars: 3000 watchers: 32 forks: 273 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 repoEtag: '"f371d39e339fb60af9629122a8a8fbfcdde20af53bc4221640b62f199be5d43b"' repoLastModified: Thu, 05 Feb 2026 12:49:17 GMT foundInMaster: true id: fab3cc58898cd8953a30e43cc622e0fe - source: https://openapi.tools/ name: OpenAPI Style Validator category: Description Validators repository: https://github.com/openapitools/openapi-style-validator language: - Java - CLI source_description: > A customizable style validator to make sure your OpenAPI description follows your organization's standards. v2: true v3: true repositoryMetadata: base64Readme: >- IyMgVGhpcyBwcm9qZWN0IGlzIGxvb2tpbmcgZm9yIG1haW50YWluZXJzLiBQbGVhc2UgcmVmZXIgdG8gdGhlIFthbm5vdW5jZW1lbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1zdHlsZS12YWxpZGF0b3IvaXNzdWVzLzc4MykgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgojIE9wZW5BcGkgVG9vbHM6IE9wZW5BUEkgU3R5bGUgVmFsaWRhdG9yCgohW10od2Vic2l0ZS9zdGF0aWMvaW1nL2xvZ28ucG5nKQoKQSBjdXN0b21pemFibGUgc3R5bGUgdmFsaWRhdG9yIHRvIG1ha2Ugc3VyZSB5b3VyIE9wZW5BcGkgc3BlYyBmb2xsb3dzIHlvdXIgb3JnYW5pemF0aW9uJ3Mgc3RhbmRhcmRzLgoKWyFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0J1eSUyMHVzJTIwYSUyMHRyZWUtJUYwJTlGJThDJUIzLWxpZ2h0Z3JlZW4pXShodHRwczovL29mZnNldC5lYXJ0aC9kYXJramFmZikKCiFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktc3R5bGUtdmFsaWRhdG9yL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbC9iYWRnZS5zdmcpIFshW01hdmVuIENlbnRyYWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tY2VudHJhbC92L29yZy5vcGVuYXBpdG9vbHMub3BlbmFwaXN0eWxldmFsaWRhdG9yL29wZW5hcGktc3R5bGUtdmFsaWRhdG9yLWNsaSldKGh0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vYXJ0aWZhY3Qvb3JnLm9wZW5hcGl0b29scy5vcGVuYXBpc3R5bGV2YWxpZGF0b3IpIFshW1F1YWxpdHkgR2F0ZSBTdGF0dXNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PU9wZW5BUElUb29sc19vcGVuYXBpLXN0eWxlLXZhbGlkYXRvciZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1PcGVuQVBJVG9vbHNfb3BlbmFwaS1zdHlsZS12YWxpZGF0b3IpIFshW0NvdmVyYWdlXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1PcGVuQVBJVG9vbHNfb3BlbmFwaS1zdHlsZS12YWxpZGF0b3ImbWV0cmljPWNvdmVyYWdlKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1PcGVuQVBJVG9vbHNfb3BlbmFwaS1zdHlsZS12YWxpZGF0b3IpCgpbIVtKb2luIHRoZSBTbGFjayBjaGF0IHJvb21dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU2xhY2stSm9pbiUyMHRoZSUyMGNoYXQlMjByb29tLW9yYW5nZSldKGh0dHBzOi8vam9pbi5zbGFjay5jb20vdC9vcGVuYXBpLWdlbmVyYXRvci9zaGFyZWRfaW52aXRlL2VuUXROekF5TkRNeU9UVTBPVEUxTFRZNVpEQmlOREk1TnpJNVpqUTFZMkU1T1dWak1qWmtZelkxWkdNMk1XUTRZV0ZqTXpjeU5EWTVNR0k0TmpReE5EQmlNVGxtWlRjNU5qWTJaVFE1TUdNKSBbIVtXZWJzaXRlIGFuZCBkb2N1bWVudGF0aW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1dlYnNpdGUlMjBhbmQlMjBEb2N1bWVudGF0aW9uLUNsaWNrJTIwdG8lMjBWaWV3LWdyZWVuKV0oaHR0cHM6Ly9vcGVuYXBpdG9vbHMuZ2l0aHViLmlvL29wZW5hcGktc3R5bGUtdmFsaWRhdG9yLykgWyFbQ29udHJpYnV0ZSB3aXRoIEdpdHBvZF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9Db250cmlidXRlJTIwd2l0aC1HaXRwb2QtOTA4YTg1P2xvZ289Z2l0cG9kKV0oaHR0cHM6Ly9naXRwb2QuaW8vI2h0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1zdHlsZS12YWxpZGF0b3IpCgojIyBTdW1tYXJ5CgpJbiB0aGUgY29sbGFib3JhdGl2ZSB3b3JsZCBvZiBBUEkgZGV2ZWxvcG1lbnQsIGVuc3VyaW5nIGNvbnNpc3RlbmN5IGFuZCBhZGhlcmVuY2UgdG8gc3RhbmRhcmRzIGluIHlvdXIgT3BlbkFQSSAoWUFNTCkgc3BlY2lmaWNhdGlvbiBmaWxlIGlzIGEgcGFyYW1vdW50IGNoYWxsZW5nZS4gRXZlbiBpZiB5b3UndmUgbWV0aWN1bG91c2x5IGRvY3VtZW50ZWQgZGlyZWN0aXZlcyBhbmQgZ3VpZGVsaW5lcyBpbiBhIHNoYXJlZCBQREYgb3IgYSBjb21wYW55IHdpa2ksIHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgZXZlcnkgdGVhbSBtZW1iZXIgd2lsbCBzdHJpY3RseSBmb2xsb3cgdGhlbS4KCk9uZSBjb3VsZCBhcmd1ZSB0aGF0IG1hbnVhbCBjb2RlIHJldmlld3MgbWF5IGNhdGNoIHRoZXNlIGRldmlhdGlvbnMsIGJ1dCB3aGF0IGlmIHRoZXJlIHdlcmUgYSBtb3JlIGVmZmljaWVudCB3YXkgdG8gZW5zdXJlIGNvbmZvcm1pdHk/IEVudGVyIG9wZW5hcGktc3R5bGUtdmFsaWRhdG9yLCBhIHRvb2wgZGVzaWduZWQgdG8gYXV0b21hdGUgdGhpcyBwcm9jZXNzLiBXaGlsZSB5b3UgbWF5IHN0aWxsIGNvbmR1Y3QgY29kZSByZXZpZXdzIHRvIGFkZHJlc3MgYnVzaW5lc3MgbG9naWMsIHJlcXVpcmVtZW50cywgYW5kIFJFU1QgcGF0aCBpc3N1ZXMsIG9wZW5hcGktc3R5bGUtdmFsaWRhdG9yIGV4Y2VscyBhdCB2YWxpZGF0aW5nIHRoZSBzdHlsZSBhbmQgYWRoZXJlbmNlIHRvIHN0YW5kYXJkcywgaW5jbHVkaW5nIG1hbmRhdG9yeSBleGFtcGxlcywgbmFtaW5nIGNvbnZlbnRpb25zLCBkZXNjcmlwdGlvbnMsIGFuZCBtb3JlLiBCeSBpbnRlZ3JhdGluZyB0aGlzIHBvd2VyZnVsIHRvb2wgaW50byB5b3VyIHdvcmtmbG93LCB5b3UgY2FuIGVmZm9ydGxlc3NseSBlbGV2YXRlIHRoZSBxdWFsaXR5IGFuZCBjb25zaXN0ZW5jeSBvZiB5b3VyIE9wZW5BUEkgZmlsZXMsIGxlYXZpbmcgeW91IHdpdGggbW9yZSB0aW1lIHRvIGZvY3VzIG9uIHRoZSBjcml0aWNhbCBhc3BlY3RzIG9mIHlvdXIgQVBJIGRldmVsb3BtZW50LgoKIyMgOnRyb3BoeTogU3BvbnNvcnMKClRoYW5rcyB0byBvdXIgc3BvbnNvcnMgZm9yIHN1cHBvcnRpbmcgdGhpcyBwcm9qZWN0IQoKIyMjIDoxc3RfcGxhY2VfbWVkYWw6IEdvbGQKCltTZWxlY3QgeW91ciBzcG9uc29yIHRpZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9KRkNvdGUpIGFuZCBnZXQgeW91ciBCSUcgbG9nbyBoZXJlIHdpdGggYSBsaW5rIHRvIHlvdXIgd2Vic2l0ZS4KCiMjIyA6Mm5kX3BsYWNlX21lZGFsOiBTaWx2ZXIKCltTZWxlY3QgeW91ciBzcG9uc29yIHRpZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9KRkNvdGUpIGFuZCBnZXQgeW91ciBsb2dvIGhlcmUgd2l0aCBhIGxpbmsgdG8geW91ciB3ZWJzaXRlLgoKIyMjIDozcmRfcGxhY2VfbWVkYWw6IEJyb256ZQoKW1NlbGVjdCB5b3VyIHNwb25zb3IgdGllcl0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL0pGQ290ZSkgYW5kIGdldCB5b3VyIGNvbXBhbnkgbmFtZSBoZXJlIHdpdGggYSBsaW5rIHRvIHlvdXIgd2Vic2l0ZS4KCiMjIFdoYXQgaXQgY2FuIHZhbGlkYXRlCgojIyMgQVBJIEluZm8KLSBBUEkgbGljZW5zZSBtdXN0IGJlIHByZXNlbnQgYW5kIG5vbi1lbXB0eSBzdHJpbmcKLSBBUEkgZGVzY3JpcHRpb24gbXVzdCBiZSBwcmVzZW50IGFuZCBub24tZW1wdHkgc3RyaW5nCi0gQVBJIGNvbnRhY3QgbXVzdCBiZSBwcmVzZW50IGFuZCBub24tZW1wdHkgc3RyaW5nCgojIyMgT3BlcmF0aW9ucwotIE9wZXJhdGlvbklkIG11c3QgYmUgcHJlc2VudCBhbmQgbm9uLWVtcHR5IHN0cmluZwotIE9wZXJhdGlvbiBkZXNjcmlwdGlvbiBtdXN0IGJlIHByZXNlbnQgYW5kIG5vbi1lbXB0eSBzdHJpbmcKLSBPcGVyYXRpb24gbXVzdCBoYXZlIGEgdGFnIGFuZCBub24tZW1wdHkgc3RyaW5nCi0gT3BlcmF0aW9uIHN1bW1hcnkgbXVzdCBiZSBwcmVzZW50IGFuZCBub24tZW1wdHkgc3RyaW5nCgojIyMgTW9kZWxzCi0gQWxsIG1vZGVsIHByb3BlcnRpZXMgbXVzdCBoYXZlIGV4YW1wbGVzCi0gQWxsIG1vZGVsIHByb3BlcnRpZXMgbXVzdCBoYXZlIGRlc2NyaXB0aW9ucwotIEFsbCByZXF1aXJlZCBwcm9wZXJ0aWVzIG11c3QgYmUgbGlzdGVkIGFtb25nIHRoZSBwcm9wZXJ0aWVzCgojIyMgTmFtaW5nIGNvbnZlbnRpb24KLSBFbmZvcmNlIG5hbWluZyBjb252ZW50aW9uIGZvciBwYXRocywgcGFyYW1ldGVycyAocGF0aCwgcXVlcnkgYW5kIGNvb2tpZSksIGhlYWRlcnMgYW5kIHByb3BlcnRpZXMKICAtIHVuZGVyc2NvcmVfY2FzZQogIC0gVU5ERVJTQ09SRV9VUFBFUl9DQVNFCiAgLSBjYW1lbENhc2UKICAtIGh5cGhlbi1jYXNlCiAgLSBIeXBoZW4tVXBwZXItQ2FzZQoKIyMgUGFpZCBBbHRlcm5hdGl2ZXMKClRoaXMgcHJvamVjdCB3YXMgc3RhcnRlZCBiZWNhdXNlIHdoZW4gSSB0cmllZCBTd2FnZ2VySHViICh3aGljaCBpcyB0aGUgcGFpZCB2ZXJzaW9uIG9mIHRoZSBzd2FnZ2VyIHRvb2xraXQpLCB0aGV5IGhhZApzb21ldGhpbmcgc2ltaWxhciwgYnV0IGl0IHdhcyBwcm9wcmlldGFyeS4gSSBkaWRuJ3Qgd2FudCB0byBwYXkgZm9yIHRoZSBzZXJ2aWNlIHNvIEkgY3JlYXRlZCB0aGlzIHByb2plY3QgaW4gbXkgZnJlZQp0aW1lcy4gSSBkaWQgbm90IHZhbGlkYXRlIGxhdGVseSBpZiB0aGV5IHN0aWxsIGhhdmUgdGhpcyBmZWF0dXJlLgoKIyMgSG93IHRvIHVzZSB0aGUgc3R5bGUgdmFsaWRhdG9yCgpGb3Igbm93LCB0aGUgcHJvamVjdCBpcyBhIHNpbXBsZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIChDTEkpIGFuZCBhIGxpYnJhcnkuIFRoZSBlYXNpZXN0IHdheSB0byB1c2UgaXQgcmlnaHQgbm93CmlzIHRvIHVzZSB0aGUgQ0xJIGFuZCBjaGVjayB0aGUgb3V0cHV0LiBJdCB3aWxsIGxpc3QgYWxsIGVycm9ycyBmb3VuZCBiYXNlZCBvbiB0aGUgb3B0aW9ucyB5b3UgcHJvdmlkZWQuCgojIyMgVG8gYnVpbGQKClRoZSBwcm9qZWN0IGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGdyYWRsZS4gVG8gYnVpbGQgdGhlIGphciwganVzdCBkbzoKCmBncmFkbGV3IGFzc2VtYmxlYAoKb3IgaWYgeW91IHdhbnQgdG8gaW52b2tlIHRoZSBqYXIgY3JlYXRpb24gZGlyZWN0bHkKCmBncmFkbGV3IHNoYWRvd0phcmAKCiMjIyBUbyBjaGFuZ2UgdGhlIGNvZGUKCklmIHlvdSB3YW50IHRvIG9wZW4gdGhlIHByb2plY3QsIEkgaGlnaGx5IHN1Z2dlc3QgdGhhdCB5b3UgdXNlIEludGVsbGlKIElERUEgQ29tbXVuaXR5IChGcmVlKSBvciBVbHRpbWF0ZSAocGFpZCkuClRoaXMgSURFIGlzIGNyb3NzIHBsYXRmb3JtIHNvIGl0IHNob3VsZCB3b3JrIG9uIGFueSBPUy4gVGhpcyBwcm9qZWN0IHdhcyBjcmVhdGVkIHVzaW5nIHRoaXMgdG9vbCBhbmQgeW91IGNhbiBqdXN0IG9wZW4gaXQgZGlyZWN0bHkuIE1heWJlIHlvdSBjYW4gdXNlIG90aGVyIHRvb2xzIHRvIG9wZW4gdGhlIHByb2plY3QgYnV0IEkgd2lsbCBub3QgcHJvdmlkZSBhbnkgc3VwcG9ydC4KCiMjIyBUbyBsYXVuY2gKCmBqYXZhIC1qYXIgb3BlbmFwaS1zdHlsZS12YWxpZGF0b3IuamFyIC1zIC4vcGF0aC90by9zcGVjLnlhbWwgLW8gLi9wYXRoL3RvL29wdGlvbnMuanNvbmAKCkV4YW1wbGUgdXNpbmcgdGhlIGRlZmF1bHQgb3V0cHV0IHBhdGggZm9yIHRoZSBqYXIgKHJlcGxhY2UgYDx2ZXJzaW9uPmAgd2l0aCB0aGUgY3VycmVudCB2ZXJzaW9uKToKCmBqYXZhIC1qYXIgbW9kdWxlcy9jbGkvYnVpbGQvbGlicy9vcGVuYXBpLXN0eWxlLXZhbGlkYXRvci1jbGktPHZlcnNpb24+LWFsbC5qYXIgLXMgc3BlY3MvcGV0c3RvcmUueWFtbCAtbyBzcGVjcy9vcHRpb25zLmpzb25gCgojIyMjIENvbW1hbmQgTGluZQoKfFBhcmFtZXRlcnxSZXF1aXJlZD98RGVzY3JpcHRpb258CnwtLS18LS0tfC0tLXwKfC1zLCAtc291cmNlfHllc3xUaGUgcGF0aCB0byB5b3VyIGpzb24veWFtbCBzcGVjIGZpbGV8CnwtbywgLW9wdGlvbnN8bm98VGhlIHBhdGggdG8geW91ciBqc29uIG9wdGlvbnMgZmlsZXwKCiMjIyMgT3B0aW9ucyBGaWxlClRoZSBvcHRpb25zIGZpbGUgaXMgZGVzY3JpYmVkIGluIGpzb24gKGV4YW1wbGUgaW4gYHNwZWNzL29wdGlvbnMuanNvbmApLCBhbmQgaGFzIHRoZSBmb2xsb3dpbmcgcG9zc2libGUgdmFsdWVzOgoKfE9wdGlvbnxUeXBlfCBQb3NzaWJsZSBWYWx1ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8RGVmYXVsdCBWYWx1ZXxEZXNjcmlwdGlvbnwKfC0tLXwtLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS18LS0tfAp8dmFsaWRhdGVJbmZvTGljZW5zZXxib29sZWFufCBgdHJ1ZWAsIGBmYWxzZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8YHRydWVgfEVuc3VyZXMgdGhhdCB0aGVyZSBpcyBhIGxpY2Vuc2Ugc2VjdGlvbiBpbiB0aGUgaW5mbyBzZWN0aW9ufAp8dmFsaWRhdGVJbmZvRGVzY3JpcHRpb258Ym9vbGVhbnwgYHRydWVgLCBgZmFsc2VgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfGB0cnVlYHxFbnN1cmVzIHRoYXQgdGhlcmUgaXMgYSBkZXNjcmlwdGlvbiBhdHRyaWJ1dGUgaW4gdGhlIGluZm8gc2VjdGlvbnwKfHZhbGlkYXRlSW5mb0NvbnRhY3R8Ym9vbGVhbnwgYHRydWVgLCBgZmFsc2VgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfGB0cnVlYHxFbnN1cmVzIHRoYXQgdGhlcmUgaXMgYSBjb250YWN0IHNlY3Rpb24gaW4gdGhlIGluZm8gc2VjdGlvbnwKfHZhbGlkYXRlT3BlcmF0aW9uT3BlcmF0aW9uSWR8Ym9vbGVhbnwgYHRydWVgLCBgZmFsc2VgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfGB0cnVlYHxFbnN1cmVzIHRoYXQgdGhlcmUgaXMgYW4gb3BlcmF0aW9uIGlkIGZvciBlYWNoIG9wZXJhdGlvbnwKfHZhbGlkYXRlT3BlcmF0aW9uRGVzY3JpcHRpb258Ym9vbGVhbnwgYHRydWVgLCBgZmFsc2VgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfGB0cnVlYHxFbnN1cmVzIHRoYXQgdGhlcmUgaXMgYSBkZXNjcmlwdGlvbiBmb3IgZWFjaCBvcGVyYXRpb258Cnx2YWxpZGF0ZU9wZXJhdGlvblRhZ3xib29sZWFufCBgdHJ1ZWAsIGBmYWxzZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8YHRydWVgfEVuc3VyZXMgdGhhdCB0aGVyZSBpcyBhIHRhZyBmb3IgZWFjaCBvcGVyYXRpb258Cnx2YWxpZGF0ZU9wZXJhdGlvblN1bW1hcnl8Ym9vbGVhbnwgYHRydWVgLCBgZmFsc2VgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfGB0cnVlYHxFbnN1cmVzIHRoYXQgdGhlcmUgaXMgYSBzdW1tYXJ5IGZvciBlYWNoIG9wZXJhdGlvbnwKfHZhbGlkYXRlTW9kZWxQcm9wZXJ0aWVzRXhhbXBsZXxib29sZWFufCBgdHJ1ZWAsIGBmYWxzZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8YHRydWVgfEVuc3VyZXMgdGhhdCB0aGUgcHJvcGVydGllcyBvZiB0aGUgU2NoZW1hcyBoYXZlIGFuIGV4YW1wbGUgdmFsdWUgZGVmaW5lZHwKfHZhbGlkYXRlTW9kZWxQcm9wZXJ0aWVzRGVzY3JpcHRpb258Ym9vbGVhbnwgYHRydWVgLCBgZmFsc2VgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfGB0cnVlYHxFbnN1cmVzIHRoYXQgdGhlIHByb3BlcnRpZXMgb2YgdGhlIFNjaGVtYXMgaGF2ZSBhIGRlc2NyaXB0aW9uIHZhbHVlIGRlZmluZWR8Cnx2YWxpZGF0ZU1vZGVsUmVxdWlyZWRQcm9wZXJ0aWVzfGJvb2xlYW58IGB0cnVlYCwgYGZhbHNlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxgdHJ1ZWB8RW5zdXJlcyB0aGF0IGFsbCByZXF1aXJlZCBwcm9wZXJ0aWVzIG9mIHRoZSBTY2hlbWFzIGFyZSBsaXN0ZWQgYW1vbmcgdGhlaXIgcHJvcGVydGllc3wKfHZhbGlkYXRlTW9kZWxOb0xvY2FsRGVmfGJvb2xlYW58IGB0cnVlYCwgYGZhbHNlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxgdHJ1ZWB8Tm90IGltcGxlbWVudGVkIHlldHwKfHZhbGlkYXRlTmFtaW5nfGJvb2xlYW58IGB0cnVlYCwgYGZhbHNlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxgdHJ1ZWB8RW5zdXJlcyB0aGUgbmFtZXMgZm9sbG93IGEgZ2l2ZW4gbmFtaW5nIGNvbnZlbnRpb258CnxpZ25vcmVIZWFkZXJYTmFtaW5nfGJvb2xlYW58IGB0cnVlYCwgYGZhbHNlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxgdHJ1ZWB8RXhjbHVkZSBmcm9tIHZhbGlkYXRpb24gaGVhZGVyIHBhcmFtZXRlcnMgc3RhcnRpbmcgd2l0aCBgeC1gfAp8cGF0aE5hbWluZ0NvbnZlbnRpb258c3RyaW5nfCBgQ2FtZWxDYXNlYCwgYFBhc2NhbENhc2VgLCBgSHlwaGVuVXBwZXJDYXNlYCwgYEh5cGhlbkNhc2VgLCBgVW5kZXJzY29yZUNhc2VgLCBgVW5kZXJzY29yZVVwcGVyQ2FzZWAsIGBBbnlDYXNlYCB8YEh5cGhlbkNhc2VgfE5hbWluZyBjb252ZW50aW9uIGZvciBwYXRoc3wKfHBhcmFtZXRlck5hbWluZ0NvbnZlbnRpb258c3RyaW5nfCBgQ2FtZWxDYXNlYCwgYFBhc2NhbENhc2VgLCBgSHlwaGVuVXBwZXJDYXNlYCwgYEh5cGhlbkNhc2VgLCBgVW5kZXJzY29yZUNhc2VgLCBgVW5kZXJzY29yZVVwcGVyQ2FzZWAsIGBBbnlDYXNlYCB8YENhbWVsQ2FzZWB8R2xvYmFsIG5hbWluZyBjb252ZW50aW9uIGZvciBhbGwgcGFyYW1ldGVyIHR5cGVzIChwYXRoLCBxdWVyeSBhbmQgY29va2llKSBbKG5vdGUpXSgjcGFyYW1ldGVyLW5hbWluZy1jb252ZW50aW9uLWhpZXJhcmNoeSl8CnxwYXRoUGFyYW1OYW1pbmdDb252ZW50aW9ufHN0cmluZ3wgYENhbWVsQ2FzZWAsIGBQYXNjYWxDYXNlYCwgYEh5cGhlblVwcGVyQ2FzZWAsIGBIeXBoZW5DYXNlYCwgYFVuZGVyc2NvcmVDYXNlYCwgYFVuZGVyc2NvcmVVcHBlckNhc2VgLCBgQW55Q2FzZWAgfChzYW1lIGFzIGBwYXJhbWV0ZXJOYW1pbmdDb252ZW50aW9uYCl8U3BlY2lmaWMgbmFtaW5nIGNvbnZlbnRpb24gZm9yIHBhdGggcGFyYW1ldGVycyBbKG5vdGUpXSgjcGFyYW1ldGVyLW5hbWluZy1jb252ZW50aW9uLWhpZXJhcmNoeSl8CnxxdWVyeVBhcmFtTmFtaW5nQ29udmVudGlvbnxzdHJpbmd8IGBDYW1lbENhc2VgLCBgUGFzY2FsQ2FzZWAsIGBIeXBoZW5VcHBlckNhc2VgLCBgSHlwaGVuQ2FzZWAsIGBVbmRlcnNjb3JlQ2FzZWAsIGBVbmRlcnNjb3JlVXBwZXJDYXNlYCwgYEFueUNhc2VgIHwoc2FtZSBhcyBgcGFyYW1ldGVyTmFtaW5nQ29udmVudGlvbmApfFNwZWNpZmljIG5hbWluZyBjb252ZW50aW9uIGZvciBxdWVyeSBwYXJhbWV0ZXJzIFsobm90ZSldKCNwYXJhbWV0ZXItbmFtaW5nLWNvbnZlbnRpb24taGllcmFyY2h5KXwKfGNvb2tpZVBhcmFtTmFtaW5nQ29udmVudGlvbnxzdHJpbmd8IGBDYW1lbENhc2VgLCBgUGFzY2FsQ2FzZWAsIGBIeXBoZW5VcHBlckNhc2VgLCBgSHlwaGVuQ2FzZWAsIGBVbmRlcnNjb3JlQ2FzZWAsIGBVbmRlcnNjb3JlVXBwZXJDYXNlYCwgYEFueUNhc2VgIHwoc2FtZSBhcyBgcGFyYW1ldGVyTmFtaW5nQ29udmVudGlvbmApfFNwZWNpZmljIG5hbWluZyBjb252ZW50aW9uIGZvciBjb29raWUgcGFyYW1ldGVycyBbKG5vdGUpXSgjcGFyYW1ldGVyLW5hbWluZy1jb252ZW50aW9uLWhpZXJhcmNoeSl8CnxoZWFkZXJOYW1pbmdDb252ZW50aW9ufHN0cmluZ3wgYENhbWVsQ2FzZWAsIGBQYXNjYWxDYXNlYCwgYEh5cGhlblVwcGVyQ2FzZWAsIGBIeXBoZW5DYXNlYCwgYFVuZGVyc2NvcmVDYXNlYCwgYFVuZGVyc2NvcmVVcHBlckNhc2VgLCBgQW55Q2FzZWAgfGBVbmRlcnNjb3JlVXBwZXJDYXNlYHxOYW1pbmcgY29udmVudGlvbiBmb3IgaGVhZGVyc3wKfHNjaGVtYU5hbWluZ0NvbnZlbnRpb258c3RyaW5nfCBgQ2FtZWxDYXNlYCwgYFBhc2NhbENhc2VgLCBgSHlwaGVuVXBwZXJDYXNlYCwgYEh5cGhlbkNhc2VgLCBgVW5kZXJzY29yZUNhc2VgLCBgVW5kZXJzY29yZVVwcGVyQ2FzZWAsIGBBbnlDYXNlYCB8YFBhc2NhbENhc2VgfE5hbWluZyBjb252ZW50aW9uIGZvciBzY2hlbWFzfAp8cHJvcGVydHlOYW1pbmdDb252ZW50aW9ufHN0cmluZ3wgYENhbWVsQ2FzZWAsIGBQYXNjYWxDYXNlYCwgYEh5cGhlblVwcGVyQ2FzZWAsIGBIeXBoZW5DYXNlYCwgYFVuZGVyc2NvcmVDYXNlYCwgYFVuZGVyc2NvcmVVcHBlckNhc2VgLCBgQW55Q2FzZWAgfGBDYW1lbENhc2VgfE5hbWluZyBjb252ZW50aW9uIGZvciBwcm9wZXJ0aWVzfAp8ZW51bU5hbWluZ0NvbnZlbnRpb258c3RyaW5nfCBgQ2FtZWxDYXNlYCwgYFBhc2NhbENhc2VgLCBgSHlwaGVuVXBwZXJDYXNlYCwgYEh5cGhlbkNhc2VgLCBgVW5kZXJzY29yZUNhc2VgLCBgVW5kZXJzY29yZVVwcGVyQ2FzZWAsIGBBbnlDYXNlYCB8YEFueUNhc2VgfE5hbWluZyBjb252ZW50aW9uIGZvciBlbnVtc3wKfGFsbG93ZWRNb2RlbFByb3BlcnRpZXN8YXJyYXl8IGBbIl9saW5rcyIsICJfZW1iZWRkZWQiXWB8YFtdYHxBbiBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyB0aGF0IGFyZSBhdXRob3JpemVkIGV2ZW4gaWYgdGhleSBkbyBub3QgbWF0Y2ggdG8gdGhlICJwcm9wZXJ0eU5hbWluZ0NvbnZlbnRpb24ifAoKIyMjIyBQYXJhbWV0ZXIgTmFtaW5nIENvbnZlbnRpb24gaGllcmFyY2h5CgpUaGUgUGFyYW1ldGVyIE5hbWluZyBDb252ZW50aW9uIGNhbiBiZSBkZWZpbmVkIGJ5IGEgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyBvcHRpb25zIGluIHRoZSBgb3B0aW9ucy5qc29uYCBmaWxlOgotIHBhcmFtZXRlck5hbWluZ0NvbnZlbnRpb24KLSBwYXRoUGFyYW1OYW1pbmdDb252ZW50aW9uCi0gcXVlcnlQYXJhbU5hbWluZ0NvbnZlbnRpb24KLSBjb29raWVQYXJhbU5hbWluZ0NvbnZlbnRpb24KClRoZSBmaXJzdCBvcHRpb24gKHBhcmFtZXRlck5hbWluZ0NvbnZlbnRpb24pIGRlZmluZXMgYSBnbG9iYWwgY29udmVudGlvbiBmb3IgYWxsIG90aGVyIHBhcmFtZXRlciBuYW1pbmcgY29udmVudGlvbiBvcHRpb25zIChwYXRoLCBxdWVyeSBhbmQgY29va2llKSwgdW5sZXNzIHRoZXkgYXJlIGV4cGxpY2l0bHkgZGVmaW5lZCBpbiB0aGUgYG9wdGlvbnMuanNvbmAgZmlsZS4KCkluIG90aGVyIHdvcmRzLCB0aGUgYHBhdGhQYXJhbU5hbWluZ0NvbnZlbnRpb25gLCBgcXVlcnlQYXJhbU5hbWluZ0NvbnZlbnRpb25gIGFuZCBgY29va2llUGFyYW1OYW1pbmdDb252ZW50aW9uYCBhcmUgc3BlY2lmaWMgZm9yIHRoZSBwYXJhbWV0ZXIgdHlwZSB0aGVpciBuYW1lcyBpbmRpY2F0ZS4gVGh1cywgdGhleSB0YWtlIHByZWNlZGVuY2Ugb3ZlciBgcGFyYW1ldGVyTmFtaW5nQ29udmVudGlvbmAgd2hlbiB0aGV5IGFyZSBkZWZpbmVkLiBJZiBub3QgZGVmaW5lZCwgdGhlIHVuZGVmaW5lZCBvcHRpb24gaXMgYXNzaWduZWQgdGhlIHNhbWUgdmFsdWUgZm9yIGBwYXJhbWV0ZXJOYW1pbmdDb252ZW50aW9uYCAoZWl0aGVyIGV4cGxpY2l0bHkgZGVmaW5lZCBvciBkZWZhdWx0KS4KCkV4YW1wbGUgMToKYGBganNvbgp7CiAgLyoKICAgICdwYXJhbWV0ZXJOYW1pbmdDb252ZW50aW9uJyBpcyBub3QgZGVmaW5lZC4KICAgICAgICBUaGVuIGl0IGFzc3VtZXMgdGhlICdDYW1lbENhc2UnIGNvbnZlbnRpb24uCiAgICovCiAgInBhdGhQYXJhbU5hbWluZ0NvbnZlbnRpb24iOiAiVW5kZXJzY29yZUNhc2UiLAogICJxdWVyeVBhcmFtTmFtaW5nQ29udmVudGlvbiI6ICJIeXBoZW5DYXNlIgogIC8qCiAgICAnY29va2llUGFyYW1OYW1pbmdDb252ZW50aW9uJyBpcyBub3QgZGVmaW5lZC4KICAgICAgICBUaGVuIGl0IGFzc3VtZXMgdGhlIHNhbWUgdmFsdWUgYXMgJ3BhcmFtZXRlck5hbWluZ0NvbnZlbnRpb24nLAogICAgICAgIHdoaWNoIGlzIGl0cyBkZWZhdWx0IHZhbHVlICgnQ2FtZWxDYXNlJykuCiAgICovCn0KYGBgCgpFeGFtcGxlIDI6CmBgYGpzb24KewogICJwYXJhbWV0ZXJOYW1pbmdDb252ZW50aW9uIjogIkh5cGhlbkNhc2UiLAogICJwYXRoUGFyYW1OYW1pbmdDb252ZW50aW9uIjogIlVuZGVyc2NvcmVDYXNlIiwKICAicXVlcnlQYXJhbU5hbWluZ0NvbnZlbnRpb24iOiAiSHlwaGVuQ2FzZSIKICAvKgogICAgJ2Nvb2tpZVBhcmFtTmFtaW5nQ29udmVudGlvbicgaXMgbm90IGRlZmluZWQuCiAgICAgICAgVGhlbiBpdCBhc3N1bWVzIHRoZSBzYW1lIHZhbHVlIGFzICdwYXJhbWV0ZXJOYW1pbmdDb252ZW50aW9uJywKICAgICAgICB3aGljaCBpcyBleHBsaWNpdGx5IGRlZmluZWQgYXMgJ0h5cGhlbkNhc2UnLgogICAqLwp9CmBgYAoKIyMgU3VwcG9ydGVkIEV4dGVuc2lvbnMKCldlIHNvbWV0aW1lcyBoYXZlIHNvbWUgcGF0aHMgaW4gb3VyIEFQSSB0aGF0IGFyZSB0aGVyZSBmb3IgbGVnYWN5IHJlYXNvbnMuIFRvIHN1cHBvcnQgdGhpcyBzY2VuYXJpbywgdGhlcmUgaXMgbm93IHRoZSBwb3NzaWJpbGl0eSB0byBhZGQgYW4gZXh0ZW5zaW9uIHByb3BlcnR5IGluIHlvdXIgc3BlYyBuYW1lZCBgeC1zdHlsZS12YWxpZGF0b3ItaWdub3JlZGAuIEhlcmUgaXMgYW4gZXhhbXBsZToKCmBgYHlhbWwKL215LXBhdGhXaXRoV2VpcmRfTkFNSU5HLUZvUkxlR2FDeVJlQXNPblNMT0w6CiAgeC1zdHlsZS12YWxpZGF0b3ItaWdub3JlZDogdHJ1ZQogIHBvc3Q6CiAgICB0YWdzOgogICAgICAtIFdoYXRldmVyCiAgICBzdW1tYXJ5OiBBIHN1bW1hcnkKICAgIC8qIG1pc3Npbmcgb3BlcmF0aW5nIGlkIG9yIG90aGVyIGltcG9ydGFudCBwcm9wZXJ0eSAqLwogICAgcmVzcG9uc2VzOgogICAgICAyMDA6CiAgICAgICAgZGVzY3JpcHRpb246IE9LCiAgZ2V0OgogICAgLi4uCmBgYAoKVGhlIHBhdGggKEdFVCwgUE9TVCwgZXRjLi4pIHdpbGwgYmUgY29tcGxldGVseSBpZ25vcmVkIGJ5IHRoZSBzdHlsZSB2YWxpZGF0b3IuCgojIyBSb2FkbWFwCgpUbyB2aWV3IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgcm9hZG1hcCwgcGxlYXNlIHNlZSB0aGUgW29mZmljaWFsIHJvYWRtYXBdKGh0dHBzOi8vb3BlbmFwaXRvb2xzLmdpdGh1Yi5pby9vcGVuYXBpLXN0eWxlLXZhbGlkYXRvci9kb2NzL3JvYWRtYXAvKS4KCiMjIFJlbGVhc2VzIG9uIG1hdmVuIGNlbnRyYWwKClRoZSBkaWZmZXJlbnQgY29tcG9uZW50cyBvZiB0aGlzIHByb2plY3QgYXJlIHJlbGVhc2VkIG9uIE1hdmVuIENlbnRyYWw6CgpUaGUgY29yZSBsaWJyYXJ5OgoKYGBgeG1sCjxkZXBlbmRlbmN5PgogIDxncm91cElkPm9yZy5vcGVuYXBpdG9vbHMub3BlbmFwaXN0eWxldmFsaWRhdG9yPC9ncm91cElkPgogIDxhcnRpZmFjdElkPm9wZW5hcGktc3R5bGUtdmFsaWRhdG9yLWxpYjwvYXJ0aWZhY3RJZD4KICA8dmVyc2lvbj4ke3ZhbGlkYXRvclZlcnNpb259PC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CmBgYAoKVGhlIGNvbW1hbmQgbGluZSB0b29sICh3aXRob3V0IGRlcGVuZGVuY3kpOgoKYGBgeG1sCjxkZXBlbmRlbmN5PgogIDxncm91cElkPm9yZy5vcGVuYXBpdG9vbHMub3BlbmFwaXN0eWxldmFsaWRhdG9yPC9ncm91cElkPgogIDxhcnRpZmFjdElkPm9wZW5hcGktc3R5bGUtdmFsaWRhdG9yLWNsaTwvYXJ0aWZhY3RJZD4KICA8dmVyc2lvbj4ke3ZhbGlkYXRvclZlcnNpb259PC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CmBgYAoKVGhlIGNvbW1hbmQgbGluZSB0b29sIGlzIGFsc28gYXZhaWxhYmxlIGFzIHN0YW5kYWxvbmUgamFyIChjb250YWluaW5nIGl0cyBkZXBlbmRlbmNpZXMpOgoKYGBgeG1sCjxkZXBlbmRlbmN5PgogIDxncm91cElkPm9yZy5vcGVuYXBpdG9vbHMub3BlbmFwaXN0eWxldmFsaWRhdG9yPC9ncm91cElkPgogIDxhcnRpZmFjdElkPm9wZW5hcGktc3R5bGUtdmFsaWRhdG9yLWNsaTwvYXJ0aWZhY3RJZD4KICA8dmVyc2lvbj4ke3ZhbGlkYXRvclZlcnNpb259PC92ZXJzaW9uPgogIDxjbGFzc2lmaWVyPmFsbDwvY2xhc3NpZmllcj4KPC9kZXBlbmRlbmN5PgpgYGAKCllvdSBjYW4gZG93bmxvYWQgaXQgbWFudWFsbHkgKHJlcGxhY2UgdGhlIGA8dmVyc2lvbj5gIHBsYWNlaG9sZGVyIGluIGZvbGxvd2luZyBVUkwpOgoKYGBgCmh0dHBzOi8vcmVwbzEubWF2ZW4ub3JnL21hdmVuMi9vcmcvb3BlbmFwaXRvb2xzL29wZW5hcGlzdHlsZXZhbGlkYXRvci9vcGVuYXBpLXN0eWxlLXZhbGlkYXRvci1jbGkvPHZlcnNpb24+L29wZW5hcGktc3R5bGUtdmFsaWRhdG9yLWNsaS08dmVyc2lvbj4tYWxsLmphcgpgYGAK readmeEtag: '"5c7194d8ca9fa58fcd321c6e721ef3283aa0252a"' readmeLastModified: Mon, 17 Nov 2025 05:42:16 GMT repositoryId: 101086314 description: >- A customizable style validator to make sure your OpenAPI spec follows your organization's standards. created: '2017-08-22T16:53:13Z' updated: '2026-01-21T01:08:17Z' language: Java archived: false stars: 232 watchers: 7 forks: 47 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 repoEtag: '"762a1e0221bd5a30044302f9ea5d7a0797735d85972fec09f8d816188b3c9b22"' repoLastModified: Wed, 21 Jan 2026 01:08:17 GMT foundInMaster: true id: 30d322c922366df3f6f8fb9c681b2139 - source: https://openapi.tools/ name: OpenAPI Validator category: Description Validators repository: https://github.com/ibm/openapi-validator language: Node.js source_description: Configurable and extensible validator/linter for OpenAPI documents v2: true v3: true repositoryMetadata: base64Readme: >- WyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vSUJNL29wZW5hcGktdmFsaWRhdG9yL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnlhbWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL0lCTS9vcGVuYXBpLXZhbGlkYXRvci9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55YW1sKQpbIVtucG0tdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9pYm0tb3BlbmFwaS12YWxpZGF0b3Iuc3ZnKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvaWJtLW9wZW5hcGktdmFsaWRhdG9yKQpbIVtzZW1hbnRpYy1yZWxlYXNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlLyUyMCUyMCVGMCU5RiU5MyVBNiVGMCU5RiU5QSU4MC1zZW1hbnRpYy0tcmVsZWFzZS1lMTAwNzkuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3NlbWFudGljLXJlbGVhc2Uvc2VtYW50aWMtcmVsZWFzZSkKWyFbR2l0dGVyXShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vb3BlbmFwaS12YWxpZGF0b3IvY29tbXVuaXR5LnN2ZyldKGh0dHBzOi8vZ2l0dGVyLmltL29wZW5hcGktdmFsaWRhdG9yL2NvbW11bml0eT91dG1fc291cmNlPWJhZGdlJnV0bV9tZWRpdW09YmFkZ2UmdXRtX2NhbXBhaWduPXByLWJhZGdlKQpbIVtDb21taXRpemVuIGZyaWVuZGx5XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NvbW1pdGl6ZW4tZnJpZW5kbHktYnJpZ2h0Z3JlZW4uc3ZnKV0oaHR0cDovL2NvbW1pdGl6ZW4uZ2l0aHViLmlvL2N6LWNsaS8pClshW0NMQSBhc3Npc3RhbnRdKGh0dHBzOi8vY2xhLWFzc2lzdGFudC5pby9yZWFkbWUvYmFkZ2UvaWJtL29wZW5hcGktdmFsaWRhdG9yKV0oaHR0cHM6Ly9jbGEtYXNzaXN0YW50LmlvL2libS9vcGVuYXBpLXZhbGlkYXRvcikKCiMgT3BlbkFQSSBWYWxpZGF0b3IKVGhlIElCTSBPcGVuQVBJIFZhbGlkYXRvciBsZXRzIHlvdSB2YWxpZGF0ZSBbT3BlbkFQSSAzLjAueF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQpCmFuZCBbT3BlbkFQSSAzLjEueF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4xLjAubWQpIGRvY3VtZW50cyBmb3IgY29tcGxpYW5jZSB3aXRoIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb25zLCBhcyB3ZWxsIGFzIElCTS1kZWZpbmVkIGJlc3QgcHJhY3RpY2VzLgoKIyMjIyBQcmVyZXF1aXNpdGVzCi0gTm9kZSAxNi4wLjArCi0gTlBNIDguMy4wKwoKIyMgVGFibGUgb2YgY29udGVudHMKCjwhLS0KICBUaGUgVE9DIGJlbG93IGlzIGdlbmVyYXRlZCB1c2luZyB0aGUgYG1hcmtkb3duLXRvY2Agbm9kZSBwYWNrYWdlLgoKICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvbWFya2Rvd24tdG9jCgogIFlvdSBzaG91bGQgcmVnZW5lcmF0ZSB0aGUgVE9DIGFmdGVyIG1ha2luZyBjaGFuZ2VzIHRvIHRoaXMgZmlsZS4KCiAgICAgIG5wbSBydW4gZm9ybWF0LXJlYWRtZS10b2MKICAtLT4KCjwhLS0gdG9jIC0tPgoKLSBbR2V0dGluZyBTdGFydGVkXSgjZ2V0dGluZy1zdGFydGVkKQogICogW1J1bGVzZXRdKCNydWxlc2V0KQogICogW0N1c3RvbWl6YXRpb25dKCNjdXN0b21pemF0aW9uKQotIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCiAgKiBbSW5zdGFsbCB3aXRoIE5QTSAocmVjb21tZW5kZWQpXSgjaW5zdGFsbC13aXRoLW5wbS1yZWNvbW1lbmRlZCkKICAqIFtEb3dubG9hZCBhbiBleGVjdXRhYmxlIGJpbmFyeV0oI2Rvd25sb2FkLWFuLWV4ZWN1dGFibGUtYmluYXJ5KQogICogW0J1aWxkIGZyb20gc291cmNlXSgjYnVpbGQtZnJvbS1zb3VyY2UpCiAgICArIFtCdWlsZCBwbGF0Zm9ybS1zcGVjaWZpYyBiaW5hcmllc10oI2J1aWxkLXBsYXRmb3JtLXNwZWNpZmljLWJpbmFyaWVzKQogICogW0NvbnRhaW5lciBpbWFnZV0oI2NvbnRhaW5lci1pbWFnZSkKICAgICsgW0J1aWxkaW5nIHlvdXIgb3duXSgjYnVpbGRpbmcteW91ci1vd24pCi0gW1VzYWdlXSgjdXNhZ2UpCiAgKiBbQ29tbWFuZCBTeW50YXhdKCNjb21tYW5kLXN5bnRheCkKICAqIFtDb25maWd1cmF0aW9uXSgjY29uZmlndXJhdGlvbikKICAgICsgW0NvbmZpZ3VyYXRpb24gUHJvcGVydGllc10oI2NvbmZpZ3VyYXRpb24tcHJvcGVydGllcykKICAgICAgLSBbY29sb3JpemVPdXRwdXRdKCNjb2xvcml6ZW91dHB1dCkKICAgICAgLSBbZXJyb3JzT25seV0oI2Vycm9yc29ubHkpCiAgICAgIC0gW2ZpbGVzXSgjZmlsZXMpCiAgICAgIC0gW2lnbm9yZUZpbGVzXSgjaWdub3JlZmlsZXMpCiAgICAgIC0gW2xpbWl0c10oI2xpbWl0cykKICAgICAgLSBbbG9nTGV2ZWxzXSgjbG9nbGV2ZWxzKQogICAgICAtIFtvdXRwdXRGb3JtYXRdKCNvdXRwdXRmb3JtYXQpCiAgICAgIC0gW3J1bGVzZXRdKCNydWxlc2V0KQogICAgICAtIFtzdW1tYXJ5T25seV0oI3N1bW1hcnlvbmx5KQogICAgICAtIFtwcm9kdWNlSW1wYWN0U2NvcmVdKCNwcm9kdWNlaW1wYWN0c2NvcmUpCiAgICAgIC0gW21hcmtkb3duUmVwb3J0XSgjbWFya2Rvd25yZXBvcnQpCiAgKiBbUHJvZ3JhbW1hdGljIFVzYWdlXSgjcHJvZ3JhbW1hdGljLXVzYWdlKQotIFtWYWxpZGF0b3IgT3V0cHV0XSgjdmFsaWRhdG9yLW91dHB1dCkKICAqIFtUZXh0XSgjdGV4dCkKICAgICsgW0FkZGl0aW9uYWwgQ3VzdG9taXphdGlvbl0oI2FkZGl0aW9uYWwtY3VzdG9taXphdGlvbikKICAqIFtKU09OXSgjanNvbikKLSBbTG9nZ2luZ10oI2xvZ2dpbmcpCi0gW0NvbnRyaWJ1dGluZ10oI2NvbnRyaWJ1dGluZykKLSBbTGljZW5zZV0oI2xpY2Vuc2UpCgo8IS0tIHRvY3N0b3AgLS0+CgojIyBHZXR0aW5nIFN0YXJ0ZWQKVGhlIHZhbGlkYXRvciBhbmFseXplcyB5b3VyIEFQSSBkZWZpbml0aW9uIGFuZCByZXBvcnRzIGFueSBwcm9ibGVtcyB3aXRoaW4uIFRoZSB2YWxpZGF0b3IgaXMgaGlnaGx5IGN1c3RvbWl6YWJsZSwKYW5kIHN1cHBvcnRzIE9wZW5BUEkgMy4wLnggYW5kIDMuMS54IGRvY3VtZW50cy4KVGhlIHRvb2wgYWxzbyBzdXBwb3J0cyBhIG51bWJlciBvZiBydWxlcyBmcm9tIFtTcGVjdHJhbF0oaHR0cHM6Ly9zdG9wbGlnaHQuaW8vb3Blbi1zb3VyY2Uvc3BlY3RyYWwvKS4gWW91IGNhbiBlYXNpbHkgZXh0ZW5kIHRoZSB0b29sIHdpdGggY3VzdG9tIHJ1bGVzIHRvIG1lZXQgeW91ciBzcGVjaWZpYyBuZWVkcyBhbmQgZW5zdXJlIGNvbXBsaWFuY2UgdG8geW91ciBzdGFuZGFyZHMuCgpHZXQgc3RhcnRlZCBieSBbaW5zdGFsbGluZyB0aGUgdG9vbF0oI2luc3RhbGxhdGlvbiksIHRoZW4gW3J1biB0aGUgdG9vbF0oI3VzYWdlKSBvbiB5b3VyIEFQSSBkZWZpbml0aW9uLgoKIyMjIFJ1bGVzZXQKQnkgZGVmYXVsdCwgdGhlIHZhbGlkYXRvciB3aWxsIHVzZSB0aGUgW0lCTSBDbG91ZCBWYWxpZGF0aW9uIFJ1bGVzZXRdKGRvY3MvaWJtLWNsb3VkLXJ1bGVzLm1kKSAobnBtIHBhY2thZ2UgYEBpYm0tY2xvdWQvb3BlbmFwaS1ydWxlc2V0YCkuCkhvd2V2ZXIsIGlmIHRoZSB2YWxpZGF0b3IgZGV0ZWN0cyB0aGUgcHJlc2VuY2Ugb2YgYW55IG9mIHRoZSBzdGFuZGFyZCBTcGVjdHJhbCBydWxlc2V0IGZpbGVzIChgc3BlY3RyYWwueWFtbGAsIGBzcGVjdHJhbC55bWxgLCBgc3BlY3RyYWwuanNvbmAsCm9yIGBzcGVjdHJhbC5qc2ApIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSAoZnJvbSB3aGljaCB0aGUgdmFsaWRhdG9yIGlzIGJlaW5nIHJ1bikgb3IgaW4gYW55IGNvbnRhaW5pbmcgZGlyZWN0b3J5IHdpdGhpbiB0aGUgZmlsZSBzeXN0ZW0sCnRoZW4gdGhhdCBydWxlc2V0IGZpbGUgd2lsbCBiZSB1c2VkIGluc3RlYWQuClRvIGV4cGxpY2l0bHkgc3BlY2lmeSBhbiBhbHRlcm5hdGUgcnVsZXNldCwgeW91IGNhbiB1c2UgdGhlIGAtcmAvYC0tcnVsZXNldGAgb3B0aW9uIChvciB0aGUgYHJ1bGVzZXRgIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkpCnRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgeW91ciBjdXN0b20gcnVsZXNldCBmaWxlLgoKSWYgb25lIG9mIHRoZSBzdGFuZGFyZCBTcGVjdHJhbCBydWxlc2V0IGZpbGVzIGFyZSBwcmVzZW50IGFuZCB5b3UnZCBsaWtlIHRvIGZvcmNlIHRoZSB1c2Ugb2YgdGhlIElCTSBDbG91ZCBWYWxpZGF0aW9uIFJ1bGVzZXQgaW5zdGVhZCwKeW91IGNhbiB1c2UgYC1yIGRlZmF1bHRgIG9yIGAtLXJ1bGVzZXQgZGVmYXVsdGAgKG9yIHNldCB0aGUgYHJ1bGVzZXRgIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgdG8gdGhlIHZhbHVlIGAnZGVmYXVsdCdgKS4KCkRldGFpbHMgYWJvdXQgdGhlc2Ugb3B0aW9ucyBhcmUgcHJvdmlkZWQgYmVsb3cgaW4gdGhlIFtVc2FnZV0oI3VzYWdlKSBzZWN0aW9uLgoKIyMjIEN1c3RvbWl6YXRpb24KCllvdSBjYW4gbW9kaWZ5IHRoZSBiZWhhdmlvciBvZiB0aGUgdmFsaWRhdG9yIGZvciB5b3VyIHByb2plY3QgdG8gbWVldCB5b3VyIHByZWZlcnJlZCBzdGFuZGFyZHMuIFNlZSB0aGUgW2N1c3RvbWl6YXRpb24gZG9jdW1lbnRhdGlvbl0oZG9jcy9pYm0tY2xvdWQtcnVsZXMubWQjY3VzdG9taXphdGlvbikgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgojIyBJbnN0YWxsYXRpb24KVGhlcmUgYXJlIHRocmVlIHdheXMgdG8gaW5zdGFsbCB0aGUgdmFsaWRhdG9yOiB1c2luZyBOUE0sIGRvd25sb2FkaW5nIGEgcGxhdGZvcm0tc3BlY2lmaWMgYmluYXJ5LCBvciBidWlsZGluZyBmcm9tIHNvdXJjZS4KCiMjIyBJbnN0YWxsIHdpdGggTlBNIChyZWNvbW1lbmRlZCkKCmBucG0gaW5zdGFsbCAtZyBpYm0tb3BlbmFwaS12YWxpZGF0b3JgCgpUaGUgYC1nYCBmbGFnIGluc3RhbGxzIHRoZSB0b29sIGdsb2JhbGx5IHNvIHRoYXQgdGhlIHZhbGlkYXRvciBjYW4gYmUgcnVuIGZyb20gYW55d2hlcmUgaW4gdGhlIGZpbGUgc3lzdGVtLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHBhc3Mgbm8gZmxhZyBvciB0aGUgYC0tc2F2ZS1kZXZgIGZsYWcgdG8gYWRkIHRoZSB2YWxpZGF0b3IgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgcHJvamVjdCBhbmQgcnVuIGl0IGZyb20geW91ciBOUE0gc2NyaXB0cyBvciBKYXZhU2NyaXB0IGNvZGUuCgojIyMgRG93bmxvYWQgYW4gZXhlY3V0YWJsZSBiaW5hcnkKClBsYXRmb3JtLXNwZWNpZmljIGJpbmFyeSBmaWxlcyBhcmUgcGFja2FnZWQgd2l0aCBlYWNoIHJlbGVhc2UgZm9yIE1hY09TLCBMaW51eCwgYW5kIFdpbmRvd3MuIFNlZSBbdGhlIHJlbGVhc2VzXShodHRwczovL2dpdGh1Yi5jb20vSUJNL29wZW5hcGktdmFsaWRhdG9yL3JlbGVhc2VzKSBwYWdlIHRvIGRvd25sb2FkIHRoZSBleGVjdXRhYmxlIGZvciB5b3VyIHBsYXRmb3JtLiBUaGVzZSBkbyBub3QgZGVwZW5kIG9uIE5vZGUuSlMgYmVpbmcgaW5zdGFsbGVkLgoKIyMjIEJ1aWxkIGZyb20gc291cmNlCjEuIENsb25lIG9yIGRvd25sb2FkIHRoaXMgcmVwb3NpdG9yeQoyLiBOYXZpZ2F0ZSB0byB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LgozLiBJbnN0YWxsIHRoZSBkZXBlbmRlbmNpZXMgdXNpbmcgYG5wbSBpbnN0YWxsYAo0LiBCdWlsZCB0aGUgY29tbWFuZCBsaW5lIHRvb2wgYnkgcnVubmluZyBgbnBtIHJ1biBsaW5rYC4KCl9JZiB5b3UgaW5zdGFsbGVkIHRoZSB2YWxpZGF0b3IgdXNpbmcgYG5wbSBpbnN0YWxsIC1nIGlibS1vcGVuYXBpLXZhbGlkYXRvcmAsIHlvdSB3aWxsIG5lZWQgdG8gcnVuIGBucG0gdW5pbnN0YWxsIC1nIGlibS1vcGVuYXBpLXZhbGlkYXRvcmAgYmVmb3JlIHJ1bm5pbmcgYG5wbSBydW4gbGlua2AuXwoKIyMjIyBCdWlsZCBwbGF0Zm9ybS1zcGVjaWZpYyBiaW5hcmllcwpJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGJ1aWxkIHBsYXRmb3JtIHNwZWNpZmljIGJpbmFyaWVzIGZyb20gdGhlIHNvdXJjZSBjb2RlIGJ5IHJ1bm5pbmcgYG5wbSBydW4gcGtnYCBpbiB0aGUgcHJvamVjdCByb290IGRpcmVjdG9yeS4gIFRoZSBiaW5hcmllcyAobGludC1vcGVuYXBpLW1hY29zLCBsaW50LW9wZW5hcGktbGludXgsIGxpbnQtb3BlbmFwaS13aW5kb3dzLmV4ZSkgd2lsbCBiZSBpbiB0aGUgcHJvamVjdCdzIGBwYWNrYWdlcy92YWxpZGF0b3IvYmluYCBkaXJlY3RvcnkuCgojIyMgQ29udGFpbmVyIGltYWdlCgpSdW4gdGhlIHZhbGlkYXRvciB3aXRoIHRoZSBjb250YWluZXIgaW1hZ2UgYnkgbW91bnRpbmcgeW91ciBBUEkgZGVmaW5pdGlvbi4KCklmIGl0IGlzIG5hbWVkIGBvcGVuYXBpLnlhbWxgIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgdGhlbiBydW46CmBgYGJhc2gKZG9ja2VyIHJ1biBcCiAgLS1ybSAtLXR0eSBcCiAgLS12b2x1bWUgIiRQV0Q6L2RhdGE6cm8iIFwKICBpYm1kZXZ4c2RrL29wZW5hcGktdmFsaWRhdG9yOmxhdGVzdCBcCiAgICBvcGVuYXBpLnlhbWwKYGBgCgpZb3Ugc2hvdWxkICoqcmVwbGFjZSBgbGF0ZXN0YCB3aXRoIGEgc3BlY2lmaWMgdGFnZ2VkIHZlcnNpb24qKiB0byBhdm9pZCBhbnkgc3VycHJpc2VzIHdoZW4gbmV3IHJlbGVhc2VzIGFyZSBwdWJsaXNoZWQuCgpGbGFnIGFuZCBhcmd1bWVudCBzeW50YXggaXMgdGhlIHNhbWUgYXMgZGVzY3JpYmVkIGluIFtVc2FnZV0oI3VzYWdlKSwgYnV0IGZpbGUgcGF0aHMgYXJlIHJlbGF0aXZlIHRvIGAvZGF0YWAuCgpUbyB1c2UgYSBjdXN0b20gcnVsZXNldCBuYW1lZCBgcnVsZXNldC55YW1sYCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnksIHJ1bjoKYGBgYmFzaApkb2NrZXIgcnVuIFwKICAtLXJtIC0tdHR5IFwKICAtLXZvbHVtZSAiJFBXRDovZGF0YTpybyIgXAogIGlibWRldnhzZGsvb3BlbmFwaS12YWxpZGF0b3I6bGF0ZXN0IFwKICAgIC0tcnVsZXNldCBydWxlc2V0LnlhbWwgXAogICAgb3BlbmFwaS55YW1sCmBgYAoKIyMjIyBCdWlsZGluZyB5b3VyIG93bgoKSWYgdGhlIGV4aXN0aW5nIGltYWdlIGRvZXNuJ3Qgc3VpdCB5b3VyIG5lZWRzLCB5b3UgY291bGQgZXh0ZW5kIGl0IGFuZCBidWlsZCB5b3VyIG93bi4KCkZvciBleGFtcGxlLCB0byBidWlsZCBhIHZhbGlkYXRvciBpbWFnZSB3aXRoIHlvdXIgb3duIGN1c3RvbSBydWxlc2V0IHBhY2thZ2UgaW5zdGFsbGVkLCBtYWtlIGEgYERvY2tlcmZpbGVgIGxpa2UgdGhpczoKCmBgYERvY2tlcmZpbGUKRlJPTSBpYm1kZXZ4c2RrL29wZW5hcGktdmFsaWRhdG9yOmxhdGVzdApSVU4gbnBtIGluc3RhbGwgLWcgJHt5b3VyLXJ1bGVzZXQtcGtnLWhlcmV9CmBgYAoKIyMgVXNhZ2UKIyMjIENvbW1hbmQgU3ludGF4CmBgYGJhc2gKVXNhZ2U6IGxpbnQtb3BlbmFwaSBbb3B0aW9uc10gW2ZpbGUuLi5dCgpSdW4gdGhlIHZhbGlkYXRvciBvbiBvbmUgb3IgbW9yZSBPcGVuQVBJIDMueCBkb2N1bWVudHMKCk9wdGlvbnM6CiAgLWMsIC0tY29uZmlnIDxmaWxlPiAgICAgICAgICAgIHVzZSBjb25maWd1cmF0aW9uIHN0b3JlZCBpbiA8ZmlsZT4gKCouanNvbiwgKi55YW1sLCAqLmpzKQogIC1lLCAtLWVycm9ycy1vbmx5ICAgICAgICAgICAgICBpbmNsdWRlIG9ubHkgZXJyb3JzIGluIHRoZSBvdXRwdXQgYW5kIHNraXAgd2FybmluZ3MgKGRlZmF1bHQgaXMgZmFsc2UpCiAgLWksIC0taWdub3JlIDxmaWxlPiAgICAgICAgICAgIGF2b2lkIHZhbGlkYXRpbmcgPGZpbGU+IChlLmcuIC1pIC9kaXIxL2lnbm9yZS1maWxlMS5qc29uIC0taWdub3JlIC9kaXIyL2lnbm9yZS1maWxlMi55YW1sIC4uLikgKGRlZmF1bHQgaXMgW10pIChkZWZhdWx0OiBbXSkKICAtaiwgLS1qc29uICAgICAgICAgICAgICAgICAgICAgcHJvZHVjZSBKU09OIG91dHB1dCAoZGVmYXVsdCBpcyB0ZXh0KQogIC1sLCAtLWxvZy1sZXZlbCA8bG9nbGV2ZWw+ICAgICBzZXQgdGhlIGxvZyBsZXZlbCBmb3Igb25lIG9yIG1vcmUgbG9nZ2VycyAoZS5nLiAtbCByb290PWluZm8gLWwgaWJtLXNjaGVtYS1kZXNjcmlwdGlvbi1leGlzdHM9ZGVidWcgLi4uKSAgKGRlZmF1bHQ6IFtdKQogIC1uLCAtLW5vLWNvbG9ycyAgICAgICAgICAgICAgICBkaXNhYmxlIGNvbG9yaXppbmcgb2YgdGhlIG91dHB1dCAoZGVmYXVsdCBpcyBmYWxzZSkKICAtciwgLS1ydWxlc2V0IDxmaWxlPiAgICAgICAgICAgdXNlIFNwZWN0cmFsIHJ1bGVzZXQgY29udGFpbmVkIGluIGA8ZmlsZT5gICgiZGVmYXVsdCIgZm9yY2VzIHVzZSBvZiBkZWZhdWx0IElCTSBDbG91ZCBWYWxpZGF0aW9uIFJ1bGVzZXQpCiAgLXMsIC0tc3VtbWFyeS1vbmx5ICAgICAgICAgICAgIGluY2x1ZGUgb25seSB0aGUgc3VtbWFyeSBpbmZvcm1hdGlvbiBhbmQgc2tpcCBpbmRpdmlkdWFsIGVycm9ycyBhbmQgd2FybmluZ3MgKGRlZmF1bHQgaXMgZmFsc2UpCiAgLXEsIC0taW1wYWN0LXNjb3JlICAgICAgICAgICAgIGNvbXB1dGUgc2NvcmVzIHJlcHJlc2VudGluZyB0aGUgQVBJIGltcGFjdCBvZiBydWxlIHZpb2xhdGlvbnMgYW5kIGluY2x1ZGUgd2l0aCB0aGUgcmVzdWx0cyAoZGVmYXVsdCBpcyBmYWxzZSkKICAtbSwgLS1tYXJrZG93bi1yZXBvcnQgICAgICAgICAgZ2VuZXJhdGUgYSBNYXJrZG93biBmaWxlIHdpdGggYSByZXBvcnQgb24gYWxsIHZhbGlkYXRvciByZXN1bHRzIChkZWZhdWx0IGlzIGZhbHNlKQogIC13LCAtLXdhcm5pbmdzLWxpbWl0IDxudW1iZXI+ICBzZXQgd2FybmluZ3MgbGltaXQgdG8gPG51bWJlcj4gKGRlZmF1bHQgaXMgLTEpCiAgLS12ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCB0aGUgdmVyc2lvbiBudW1iZXIKICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSBoZWxwIGZvciBjb21tYW5kCmBgYAp3aGVyZSBgW2ZpbGUuLi5dYCBpcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IGNvbnRhaW5pbmcgdGhlIGZpbGVuYW1lcyBvZiBvbmUgb3IgbW9yZSBPcGVuQVBJIDMueCBkb2N1bWVudHMgdG8gYmUgdmFsaWRhdGVkLgpUaGUgdmFsaWRhdG9yIHN1cHBvcnRzIE9wZW5BUEkgZG9jdW1lbnRzIGluIGVpdGhlciBKU09OIG9yIFlBTUwgZm9ybWF0LCB1c2luZyB0aGVzZSBzdXBwb3J0ZWQgZmlsZSBleHRlbnNpb25zOgpgYGAKLmpzb24KLnlhbWwKLnltbApgYGAKQXNzdW1pbmcgeW91ciBjb21tYW5kIHNoZWxsIHN1cHBvcnRzIHRoZSB1c2Ugb2Ygd2lsZGNhcmRzLCB5b3UgY2FuIHVzZSB3aWxkY2FyZHMgd2hlbiBzcGVjaWZ5aW5nIHRoZSBuYW1lcyBvZiBmaWxlcyB0byBiZSB2YWxpZGF0ZWQuCkZvciBleGFtcGxlLCB0byBydW4gdGhlIHZhbGlkYXRvciBvbiBhbGwgYC55YW1sYCBmaWxlcyBjb250YWluZWQgaW4gdGhlIGAvbXkvYXBpc2AgZGlyZWN0b3J5LCB5b3UgY291bGQgdXNlCnRoaXMgY29tbWFuZDoKYGBgYmFzaApsaW50LW9wZW5hcGkgL215L2FwaXMvKi55YW1sCmBgYAoKTm90ZSB0aGF0IHRoZSBgLWlgL2AtLWlnbm9yZWAgb3B0aW9uIGNhbiBiZSBwYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW4gdXNpbmcgd2lsZGNhcmRzIGJlY2F1c2UgaXQgYWxsb3dzIHlvdSB0byBza2lwIHRoZQp2YWxpZGF0aW9uIG9mIHNwZWNpZmljIGZpbGVzIHdoaWNoIG1pZ2h0IG90aGVyd2lzZSBiZSBpbmNsdWRlZCBpbiBhIHZhbGlkYXRpb24gcnVuLgpGb3IgZXhhbXBsZSwgdG8gdmFsaWRhdGUgYWxsIGAueWFtbGAgZmlsZXMgaW4gdGhlIGAvbXkvYXBpc2AgZGlyZWN0b3J5LCBleGNlcHQgZm9yIGAvbXkvYXBpcy9icm9rZW4tYXBpLnlhbWxgIHVzZSB0aGUgY29tbWFuZDoKYGBgYmFzaApsaW50LW9wZW5hcGkgL215L2FwaXMvKi55YW1sIC1pIC9teS9hcGlzL2Jyb2tlbi1hcGkueWFtbApgYGAKCiMjIyBDb25maWd1cmF0aW9uCkluIGFkZGl0aW9uIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zLCB0aGUgdmFsaWRhdG9yIHN1cHBvcnRzIHRoZSB1c2Ugb2YgYSBjb25maWd1cmF0aW9uIGZpbGUgY29udGFpbmluZyBvcHRpb25zIGFzIHdlbGwuCkEgY29uZmlndXJhdGlvbiBmaWxlIGNhbiBiZSBpbiBKU09OLCBZQU1MIG9yIEphdmFzY3JpcHQgZm9ybWF0LCB1c2luZyB0aGVzZSBzdXBwb3J0ZWQgZXh0ZW5zaW9uczogYC5qc29uYCwgYC55YW1sYCwgYC55bWxgLCBhbmQgYC5qc2AuCkl0cyBzdHJ1Y3R1cmUgbXVzdCBjb21wbHkgd2l0aCBbdGhpcyBKU09OIHNjaGVtYV0ocGFja2FnZXMvdmFsaWRhdG9yL3NyYy9zY2hlbWFzL2NvbmZpZy1maWxlLnlhbWwpLgoKWW91IGNhbiBzcGVjaWZ5IHRoZSBuYW1lIG9mIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlIHdpdGggdGhlIGAtY2AvYC0tY29uZmlnYCBvcHRpb24uICBIZXJlJ3MgYW4gZXhhbXBsZToKYGBgYmFzaApsaW50LW9wZW5hcGkgLWMgbXktY29uZmlnLnlhbWwgbXktYXBpLmpzb24KYGBgCndoZXJlIGBteS1jb25maWcueWFtbGAgbWlnaHQgY29udGFpbiB0aGUgZm9sbG93aW5nOgpgYGB5YW1sCmVycm9yc09ubHk6IHRydWUKbGltaXRzOgogIHdhcm5pbmdzOiAyNQpvdXRwdXRGb3JtYXQ6ICdqc29uJwpzdW1tYXJ5T25seTogdHJ1ZQpgYGAKVGhpcyB3b3VsZCBiZSBlcXVpdmFsZW50IHRvIHRoaXMgY29tbWFuZDoKYGBgYmFzaApsaW50LW9wZW5hcGkgLS1lcnJvcnMtb25seSAtLXdhcm5pbmdzLWxpbWl0PTI1IC0tanNvbiAtLXN1bW1hcnktb25seSBteS1hcGkuanNvbgpgYGAKV2hlbiB1c2luZyBib3RoIGEgY29uZmlndXJhdGlvbiBmaWxlIGFuZCB2YXJpb3VzIGNvbW1hbmQtbGluZSBvcHRpb25zLCBiZSBhd2FyZSB0aGF0IHRoZSBvcHRpb25zIHNwZWNpZmllZAp2aWEgdGhlIGNvbW1hbmQtbGluZSB3aWxsIHRha2UgcHJlY2VuZGVuY2UgYW5kIG92ZXJyaWRlIGFueSBjb3JyZXNwb25kaW5nIHByb3BlcnRpZXMgc3BlY2lmaWVkIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCgojIyMjIENvbmZpZ3VyYXRpb24gUHJvcGVydGllcwpUaGlzIHNlY3Rpb24gcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBvZiB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSBzdXBwb3J0ZWQgd2l0aGluIGEgY29uZmlndXJhdGlvbiBmaWxlLgoKIyMjIyMgY29sb3JpemVPdXRwdXQKPHRhYmxlIGJvcmRlcj0xPgo8dHI+Cjx0ZD48Yj5EZXNjcmlwdGlvbjwvYj48L3RkPgo8dGQgd2lkdGg9MjUlPjxiPkRlZmF1bHQ8L2I+PC90ZD4KPC90cj4KPHRyPgo8dGQ+VGhlIDxjb2RlPmNvbG9yaXplT3V0cHV0PC9jb2RlPiBjb25maWd1cmF0aW9uIHByb3BlcnR5IGNvcnJlc3BvbmRzIHRvIHRoZSA8Y29kZT4tbjwvY29kZT4vPGNvZGU+LS1uby1jb2xvcnM8L2NvZGU+CmNvbW1hbmQtbGluZSBvcHRpb24uIElmIHNldCB0byB0cnVlLCB0aGVuIHRoZSB2YWxpZGF0b3Igd2lsbCBjb2xvcml6ZSBpdHMgb3V0cHV0LjwvdGQ+Cjx0ZD48Y29kZT50cnVlPC9jb2RlPjwvdGQ+CjwvdHI+CjwvdGFibGU+CjxiPkV4YW1wbGVzOjwvYj4KPHRhYmxlIGJvcmRlcj0xPgo8dHI+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPi55YW1sLy55bWw8L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi5qc29uPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uanM8L2NvZGU+PC90ZD4KPC90cj4KPHRyPgo8dGQ+CjxwcmU+CmNvbG9yaXplT3V0cHV0OiBmYWxzZQo8L3ByZT4KPC90ZD4KPHRkPgo8cHJlPgp7CiAgImNvbG9yaXplT3V0cHV0IjogZmFsc2UKfQo8L3ByZT4KPC90ZD4KPHRkPgo8cHJlPgptb2R1bGUuZXhwb3J0cyA9IHsKICBjb2xvcml6ZU91dHB1dDogZmFsc2UKfTsKPC9wcmU+CjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMjIyBlcnJvcnNPbmx5Cjx0YWJsZSBib3JkZXI9MT4KPHRyPgo8dGQ+PGI+RGVzY3JpcHRpb248L2I+PC90ZD4KPHRkIHdpZHRoPTI1JT48Yj5EZWZhdWx0PC9iPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPlRoZSA8Y29kZT5lcnJvcnNPbmx5PC9jb2RlPiBjb25maWd1cmF0aW9uIHByb3BlcnR5IGNvcnJlc3BvbmRzIHRvIHRoZSA8Y29kZT4tZTwvY29kZT4vPGNvZGU+LS1lcnJvcnMtb25seTwvY29kZT4gY29tbWFuZC1saW5lIG9wdGlvbi4KSWYgc2V0IHRvIDxjb2RlPnRydWU8L2NvZGU+LCB0aGUgdmFsaWRhdG9yIHdpbGwgaW5jbHVkZSBvbmx5IGVycm9ycyBpbiBpdHMgb3V0cHV0LCB3aGlsZSBtZXNzYWdlcyBvZiBzZXZlcml0eSB3YXJuaW5nLAppbmZvIG9yIGhpbnQgd2lsbCBiZSBza2lwcGVkLjwvdGQ+Cjx0ZD48Y29kZT5mYWxzZTwvY29kZT48L3RkPgo8L3RyPgo8L3RhYmxlPgo8Yj5FeGFtcGxlczo8L2I+Cjx0YWJsZSBib3JkZXI9MT4KPHRyPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT4ueWFtbC8ueW1sPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uanNvbjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LmpzPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPgo8cHJlPgplcnJvcnNPbmx5OiB0cnVlCjwvcHJlPgo8L3RkPgo8dGQ+CjxwcmU+CnsKICAiZXJyb3JzT25seSI6IHRydWUKfQo8L3ByZT4KPC90ZD4KPHRkPgo8cHJlPgptb2R1bGUuZXhwb3J0cyA9IHsKICBlcnJvcnNPbmx5OiB0cnVlCn07CjwvcHJlPgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKIyMjIyMgZmlsZXMKPHRhYmxlIGJvcmRlcj0xPgo8dHI+Cjx0ZD48Yj5EZXNjcmlwdGlvbjwvYj48L3RkPgo8dGQgd2lkdGg9MjUlPjxiPkRlZmF1bHQ8L2I+PC90ZD4KPC90cj4KPHRyPgo8dGQ+VGhlIDxjb2RlPmZpbGVzPC9jb2RlPiBjb25maWd1cmF0aW9uIHByb3BlcnR5IGNvcnJlc3BvbmRzIHRvIHBvc2l0aW9uYWwgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoaS5lLiA8Y29kZT5bZmlsZS4uLl08L2NvZGU+KS4KWW91IGNhbiBzZXQgdGhpcyBwcm9wZXJ0eSB0byB0aGUgbmFtZXMgb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnRzIHRvIGJlIHZhbGlkYXRlZC4gSWYgYW55IGZpbGVuYW1lcyBhcmUgYWxzbyBlbnRlcmVkIGFzIHBvc2l0aW9uYWwgYXJndW1lbnRzCm9uIHRoZSBjb21tYW5kLWxpbmUsIHRoZXkgd2lsbCBvdmVycmlkZSBhbnkgdmFsdWVzIHNwZWNpZmllZCBpbiB0aGlzIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkuPC90ZD4KPHRkPjxjb2RlPltdPC9jb2RlPihlbXB0eSBsaXN0KTwvdGQ+CjwvdHI+CjwvdGFibGU+CjxiPkV4YW1wbGVzOjwvYj4KPHRhYmxlIGJvcmRlcj0xPgo8dHI+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPi55YW1sLy55bWw8L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi5qc29uPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uanM8L2NvZGU+PC90ZD4KPC90cj4KPHRyPgo8dGQ+CjxwcmU+CmZpbGVzOgogIC0gZmlsZTEuanNvbgogIC0gZmlsZTIueWFtbAo8L3ByZT4KPC90ZD4KPHRkPgo8cHJlPgp7CiAgImZpbGVzIjogWwogICAgImZpbGUxLmpzb24iLAogICAgImZpbGUyLnlhbWwiCiAgXQp9CjwvcHJlPgo8L3RkPgo8dGQ+CjxwcmU+Cm1vZHVsZS5leHBvcnRzID0gewogIGZpbGVzOiBbCiAgICAnZmlsZTEuanNvbicsCiAgICAnZmlsZTIueWFtbCcKICBdCn07CjwvcHJlPgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKIyMjIyMgaWdub3JlRmlsZXMKPHRhYmxlIGJvcmRlcj0xPgo8dHI+Cjx0ZD48Yj5EZXNjcmlwdGlvbjwvYj48L3RkPgo8dGQgd2lkdGg9MjUlPjxiPkRlZmF1bHQ8L2I+PC90ZD4KPC90cj4KPHRyPgo8dGQ+VGhlIDxjb2RlPmlnbm9yZUZpbGVzPC9jb2RlPiBjb25maWd1cmF0aW9uIHByb3BlcnR5IGNvcnJlc3BvbmRzIHRvIHRoZSA8Y29kZT4taTwvY29kZT4vPGNvZGU+LS1pZ25vcmU8L2NvZGU+IGNvbW1hbmQtbGluZSBvcHRpb24uClNldCB0aGlzIHByb3BlcnR5IHRvIHRoZSBmdWxseS1xdWFsaWZpZWQgZmlsZW5hbWVzIG9mIE9wZW5BUEkgZG9jdW1lbnRzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdmFsaWRhdGlvbi4KVGhpcyBwcm9wZXJ0eSBjYW4gYmUgcGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuIHVzaW5nIHdpbGRjYXJkcyBmb3Igc3BlY2lmeWluZyB0aGUgT3BlbkFQSSBkb2N1bWVudHMgdG8gYmUgdmFsaWRhdGVkLApiZWNhdXNlIGl0IGFsbG93cyB5b3UgdG8gc2tpcCB0aGUgdmFsaWRhdGlvbiBvZiBzcGVjaWZpYyBmaWxlcyB3aGljaCBtaWdodCBvdGhlcndpc2UgYmUgaW5jbHVkZWQgaW4gYSB2YWxpZGF0aW9uIHJ1bi4KRm9yIGV4YW1wbGUsIHRvIHZhbGlkYXRlIGFsbCA8Y29kZT4ueWFtbDwvY29kZT4gZmlsZXMgaW4gdGhlIDxjb2RlPi9teS9hcGlzPC9jb2RlPiBkaXJlY3RvcnksIGV4Y2VwdCBmb3IKPGNvZGU+L215L2FwaXMvYnJva2VuLWFwaS55YW1sPC9jb2RlPiB1c2UgdGhlIGNvbW1hbmQ6CjxwcmU+CiAgICBsaW50LW9wZW5hcGkgL215L2FwaXMvKi55YW1sIC0taWdub3JlIC9teS9hcGlzL2Jyb2tlbi1hcGkueWFtbAo8L3ByZT4KPC90ZD4KPHRkPjxjb2RlPltdPC9jb2RlPihlbXB0eSBsaXN0KTwvdGQ+CjwvdHI+CjwvdGFibGU+CjxiPkV4YW1wbGVzOjwvYj4KPHRhYmxlIGJvcmRlcj0xPgo8dHI+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPi55YW1sLy55bWw8L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi5qc29uPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uanM8L2NvZGU+PC90ZD4KPC90cj4KPHRyPgo8dGQ+CjxwcmU+Cmlnbm9yZUZpbGVzOgogIC0gL215L2FwaXMvZmlsZTEueW1sCjwvcHJlPgo8L3RkPgo8dGQ+CjxwcmU+CnsKICAiaWdub3JlRmlsZXMiOiBbCiAgICAiL215L2FwaXMvZmlsZTEueW1sIgogIF0KfQo8L3ByZT4KPC90ZD4KPHRkPgo8cHJlPgptb2R1bGUuZXhwb3J0cyA9IHsKICBpZ25vcmVGaWxlczogWwogICAgJy9teS9hcGlzL2ZpbGUxLnltbCcKICBdCn07CjwvcHJlPgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKIyMjIyMgbGltaXRzCjx0YWJsZSBib3JkZXI9MT4KPHRyPgo8dGQ+PGI+RGVzY3JpcHRpb248L2I+PC90ZD4KPHRkIHdpZHRoPTI1JT48Yj5EZWZhdWx0PC9iPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPlRoZSA8Y29kZT5saW1pdHM8L2NvZGU+IGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgY29ycmVzcG9uZHMgdG8gdGhlIDxjb2RlPi13PC9jb2RlPi88Y29kZT4tLXdhcm5pbmdzLWxpbWl0PC9jb2RlPiBjb21tYW5kLWxpbmUgb3B0aW9uLgpVc2UgdGhpcyBwcm9wZXJ0eSB0byBzZXQgdGhlIHdhcm5pbmdzIGxpbWl0LiAgV2hlbiB2YWxpZGF0aW5nIGFuIE9wZW5BUEkgZG9jdW1lbnQsIHRoZSB2YWxpZGF0b3Igd2lsbCBjb21wYXJlIHRoZSBudW1iZXIgb2Ygd2FybmluZ3MKaXQgZW5jb3VudGVycyB3aXRoIHRoZSB3YXJuaW5ncyBsaW1pdC4gIElmIHRoZSBudW1iZXIgb2Ygd2FybmluZ3MgZXhjZWVkcyB0aGUgbGltaXQsIHRoZW4gYW4gZXJyb3Igd2lsbCBiZSBsb2dnZWQgYW5kIHRoZQp2YWxpZGF0b3Igd2lsbCByZXR1cm4gZXhpdENvZGUgMSwgc2ltaWxhciB0byBpZiBhY3R1YWwgZXJyb3JzIHdlcmUgZm91bmQuIElmIHRoZSB3YXJuaW5ncyBsaW1pdCBpcyBzZXQgdG8gYSBuZWdhdGl2ZSBudW1iZXIsCnRoZW4gbm8gd2FybmluZ3MgbGltaXQgY2hlY2sgd2lsbCBiZSBwZXJmb3JtZWQgYnkgdGhlIHZhbGlkYXRvci48L3RkPgo8dGQ+PGNvZGU+eyB3YXJuaW5nczogLTEgfTwvY29kZT4od2FybmluZ3MgbGltaXQgY2hlY2sgZGlzYWJsZWQpPC90ZD4KPC90cj4KPC90YWJsZT4KPGI+RXhhbXBsZXM6PC9iPgo8dGFibGUgYm9yZGVyPTE+Cjx0cj4KPC90cj4KPHRyPgo8dGQ+PGNvZGU+LnlhbWwvLnltbDwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Lmpzb248L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi5qczwvY29kZT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD4KPHByZT4KbGltaXRzOgogIHdhcm5pbmdzOiAyNQo8L3ByZT4KPC90ZD4KPHRkPgo8cHJlPgp7CiAgImxpbWl0cyI6IHsKICAgICJ3YXJuaW5ncyI6IDI1CiAgfQp9CjwvcHJlPgo8L3RkPgo8dGQ+CjxwcmU+Cm1vZHVsZS5leHBvcnRzID0gewogIGxpbWl0czogewogICAgd2FybmluZ3M6IDI1CiAgfQp9Owo8L3ByZT4KPC90ZD4KPC90cj4KPC90YWJsZT4KCiMjIyMjIGxvZ0xldmVscwo8dGFibGUgYm9yZGVyPTE+Cjx0cj4KPHRkPjxiPkRlc2NyaXB0aW9uPC9iPjwvdGQ+Cjx0ZCB3aWR0aD0yNSU+PGI+RGVmYXVsdDwvYj48L3RkPgo8L3RyPgo8dHI+Cjx0ZD5UaGUgPGNvZGU+bG9nTGV2ZWxzPC9jb2RlPiBwcm9wZXJ0eSBpcyBhbiBvYmplY3QgdGhhdCBzcGVjaWZpZXMgdGhlIGxvZ2dpbmcgbGV2ZWwKKDxjb2RlPmVycm9yPC9jb2RlPiwgPGNvZGU+d2FybjwvY29kZT4sIDxjb2RlPmluZm88L2NvZGU+LCBvciA8Y29kZT5kZWJ1ZzwvY29kZT4pCmFzc29jaWF0ZWQgd2l0aCBlYWNoIGxvZ2dlciB3aXRoaW4gdGhlIHZhbGlkYXRvci4gIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSA8Y29kZT4tbDwvY29kZT4vPGNvZGU+LS1sb2ctbGV2ZWw8L2NvZGU+IGNvbW1hbmQtbGluZSBvcHRpb24uPC90ZD4KPHRkPjxjb2RlPnsgcm9vdDogJ2luZm8nIH08L2NvZGU+PC90ZD4KPC90cj4KPC90YWJsZT4KPGI+RXhhbXBsZXM6PC9iPgo8dGFibGUgYm9yZGVyPTE+Cjx0cj4KPC90cj4KPHRyPgo8dGQ+PGNvZGU+LnlhbWwvLnltbDwvY29kZT48L3RkPgo8dGQ+PGNvZGU+Lmpzb248L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi5qczwvY29kZT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD4KPHByZT4KbG9nTGV2ZWxzOgogIHJvb3Q6IGVycm9yCiAgaWJtLXNjaGVtYS1kZXNjcmlwdGlvbi1leGlzdHM6IGRlYnVnCjwvcHJlPgo8L3RkPgo8dGQ+CjxwcmU+CnsKICAibG9nTGV2ZWxzIjogewogICAgInJvb3QiOiAiZXJyb3IiLAogICAgImlibS1zY2hlbWEtZGVzY3JpcHRpb24tZXhpc3RzIjogImRlYnVnIgogIH0KfQo8L3ByZT4KPC90ZD4KPHRkPgo8cHJlPgptb2R1bGUuZXhwb3J0cyA9IHsKICBsb2dMZXZlbHM6IHsKICAgIHJvb3Q6ICdlcnJvcicsCiAgICAnaWJtLXNjaGVtYS1kZXNjcmlwdGlvbi1leGlzdHMnOiAnZGVidWcnCiAgfQp9Owo8L3ByZT4KPC90ZD4KPC90cj4KPC90YWJsZT4KCiMjIyMjIG91dHB1dEZvcm1hdAo8dGFibGUgYm9yZGVyPTE+Cjx0cj4KPHRkPjxiPkRlc2NyaXB0aW9uPC9iPjwvdGQ+Cjx0ZCB3aWR0aD0yNSU+PGI+RGVmYXVsdDwvYj48L3RkPgo8L3RyPgo8dHI+Cjx0ZD5Zb3UgY2FuIHNldCB0aGUgPGNvZGU+b3V0cHV0Rm9ybWF0PC9jb2RlPiBjb25maWd1cmF0aW9uIHByb3BlcnR5IHRvIGVpdGhlciA8Y29kZT50ZXh0PC9jb2RlPiBvciA8Y29kZT5qc29uPC9jb2RlPgp0byBpbmRpY2F0ZSB0aGUgdHlwZSBvZiBvdXRwdXQgeW91IHdhbnQgdGhlIHZhbGlkYXRvciB0byBwcm9kdWNlLgpUaGlzIHByb3BlcnR5IGNvcnJlc3BvbmRzIHRvIHRoZSA8Y29kZT4tajwvY29kZT4vPGNvZGU+LS1qc29uPC9jb2RlPiBjb21tYW5kLWxpbmUgb3B0aW9uLjwvdGQ+Cjx0ZD48Y29kZT50ZXh0PC9jb2RlPjwvdGQ+CjwvdHI+CjwvdGFibGU+CjxiPkV4YW1wbGVzOjwvYj4KPHRhYmxlIGJvcmRlcj0xPgo8dHI+CjwvdHI+Cjx0cj4KPHRkPjxjb2RlPi55YW1sLy55bWw8L2NvZGU+PC90ZD4KPHRkPjxjb2RlPi5qc29uPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uanM8L2NvZGU+PC90ZD4KPC90cj4KPHRyPgo8dGQ+CjxwcmU+Cm91dHB1dEZvcm1hdDoganNvbgo8L3ByZT4KPC90ZD4KPHRkPgo8cHJlPgp7CiAgIm91dHB1dEZvcm1hdCI6ICJqc29uIgp9CjwvcHJlPgo8L3RkPgo8dGQ+CjxwcmU+Cm1vZHVsZS5leHBvcnRzID0gewogIG91dHB1dEZvcm1hdDogJ2pzb24nCn07CjwvcHJlPgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKIyMjIyMgcnVsZXNldAo8dGFibGUgYm9yZGVyPTE+Cjx0cj4KPHRkPjxiPkRlc2NyaXB0aW9uPC9iPjwvdGQ+Cjx0ZCB3aWR0aD0yNSU+PGI+RGVmYXVsdDwvYj48L3RkPgo8L3RyPgo8dHI+Cjx0ZD5Zb3UgY2FuIHVzZSB0aGUgPGNvZGU+cnVsZXNldDwvY29kZT4gY29uZmlndXJhdGlvbiBwcm9wZXJ0eSB0byBzcGVjaWZ5IGEgY3VzdG9tIHJ1bGVzZXQgdG8gYmUgdXNlZCBieSB0aGUgdmFsaWRhdG9yLgpUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSA8Y29kZT4tcjwvY29kZT4vPGNvZGU+LS1ydWxlc2V0PC9jb2RlPiBjb21tYW5kLWxpbmUgb3B0aW9uLgoKQnkgZGVmYXVsdCwgdGhlIHZhbGlkYXRvciB3aWxsIGxvb2sgZm9yIHRoZSBzdGFuZGFyZCBTcGVjdHJhbCBydWxlc2V0IGZpbGVzICg8Y29kZT4uc3BlY3RyYWwueWFtbDwvY29kZT4sIDxjb2RlPi5zcGVjdHJhbC55bWw8L2NvZGU+LAo8Y29kZT4uc3BlY3RyYWwuanNvbjwvY29kZT4sIG9yIDxjb2RlPi5zcGVjdHJhbC5qczwvY29kZT4pIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGFuZAppdHMgcGFyZW50IGRpcmVjdG9yaWVzIHdpdGhpbiB0aGUgZmlsZXN5c3RlbS4gIElmIG5vbmUgYXJlIGZvdW5kLCB0aGVuIHRoZSBJQk0gQ2xvdWQgVmFsaWRhdGlvbiBSdWxlc2V0CndpbGwgYmUgdXNlZC4KCklmIHlvdSB3YW50IHRvIGZvcmNlIHRoZSB1c2Ugb2YgdGhlIElCTSBDbG91ZCBWYWxpZGF0aW9uIFJ1bGVzZXQgZXZlbiBpZiBvbmUgb2YgdGhlIHN0YW5kYXJkIFNwZWN0cmFsIHJ1bGVzZXQgZmlsZXMgYXJlIHByZXNlbnQsCnlvdSBjYW4gc3BlY2lmeSA8Y29kZT4nZGVmYXVsdCc8L2NvZGU+IGZvciB0aGUgPGNvZGU+cnVsZXNldDwvY29kZT4gY29uZmlndXJhdGlvbiBwcm9wZXJ0eS4KPC90ZD4KPHRkPjxjb2RlPm51bGw8L2NvZGU+LCB3aGljaCBpbXBsaWVzIHRoYXQgYSBzdGFuZGFyZCBTcGVjdHJhbCBydWxlc2V0IGZpbGUgd2lsbCBiZSB1c2VkIChpZiBwcmVzZW50KSwKb3RoZXJ3aXNlIHRoZSBJQk0gQ2xvdWQgVmFsaWRhdGlvbiBSdWxlc2V0IHdpbGwgYmUgdXNlZC48L3RkPgo8L3RyPgo8L3RhYmxlPgo8Yj5FeGFtcGxlczo8L2I+Cjx0YWJsZSBib3JkZXI9MT4KPHRyPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT4ueWFtbC8ueW1sPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uanNvbjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LmpzPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPgo8cHJlPgpydWxlc2V0OiBteS1jdXN0b20tcnVsZXMueWFtbAo8L3ByZT4KPC90ZD4KPHRkPgo8cHJlPgp7CiAgInJ1bGVzZXQiOiAibXktY3VzdG9tLXJ1bGVzLnlhbWwiCn0KPC9wcmU+CjwvdGQ+Cjx0ZD4KPHByZT4KbW9kdWxlLmV4cG9ydHMgPSB7CiAgcnVsZXNldDogJ215LWN1c3RvbS1ydWxlcy55YW1sJwp9Owo8L3ByZT4KPC90ZD4KPC90cj4KPC90YWJsZT4KCiMjIyMjIHN1bW1hcnlPbmx5Cjx0YWJsZSBib3JkZXI9MT4KPHRyPgo8dGQ+PGI+RGVzY3JpcHRpb248L2I+PC90ZD4KPHRkIHdpZHRoPTI1JT48Yj5EZWZhdWx0PC9iPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPlRoZSA8Y29kZT5zdW1tYXJ5T25seTwvY29kZT4gY29uZmlndXJhdGlvbiBwcm9wZXJ0eSBjb3JyZXNwb25kcyB0byB0aGUgPGNvZGU+LXM8L2NvZGU+Lzxjb2RlPi0tc3VtbWFyeS1vbmx5PC9jb2RlPiBjb21tYW5kLWxpbmUgb3B0aW9uLgpJZiBzZXQgdG8gdHJ1ZSwgdGhlIHZhbGlkYXRvciB3aWxsIGluY2x1ZGUgb25seSB0aGUgc3VtbWFyeSBzZWN0aW9uIGluIGl0cyBvdXRwdXQuCjwvdGQ+Cjx0ZD48Y29kZT5mYWxzZTwvY29kZT48L3RkPgo8L3RyPgo8L3RhYmxlPgo8Yj5FeGFtcGxlczo8L2I+Cjx0YWJsZSBib3JkZXI9MT4KPHRyPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT4ueWFtbC8ueW1sPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uanNvbjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LmpzPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPgo8cHJlPgpzdW1tYXJ5T25seTogdHJ1ZQo8L3ByZT4KPC90ZD4KPHRkPgo8cHJlPgp7CiAgInN1bW1hcnlPbmx5IjogdHJ1ZQp9CjwvcHJlPgo8L3RkPgo8dGQ+CjxwcmU+Cm1vZHVsZS5leHBvcnRzID0gewogIHN1bW1hcnlPbmx5OiB0cnVlCn07CjwvcHJlPgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKIyMjIyMgcHJvZHVjZUltcGFjdFNjb3JlCjx0YWJsZSBib3JkZXI9MT4KPHRyPgo8dGQ+PGI+RGVzY3JpcHRpb248L2I+PC90ZD4KPHRkIHdpZHRoPTI1JT48Yj5EZWZhdWx0PC9iPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPlRoZSA8Y29kZT5wcm9kdWNlSW1wYWN0U2NvcmU8L2NvZGU+IGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgY29ycmVzcG9uZHMgdG8gdGhlCjxjb2RlPi1xPC9jb2RlPi88Y29kZT4tLWltcGFjdC1zY29yZTwvY29kZT4gY29tbWFuZC1saW5lIG9wdGlvbi4gSWYgc2V0IHRvIHRydWUsCnRoZSB2YWxpZGF0b3Igd2lsbCwgaW4gYWRkaXRpb24gdG8gcmVwb3J0aW5nIGluZGl2aWR1YWwgcnVsZSB2aW9sYXRpb25zLCB1c2UgdGhlCnJ1bGUgdmlvbGF0aW9uIGRhdGEgdG8gcHJvZHVjZSBBUEkgaW1wYWN0IHNjb3JlcyBiYXNlZCBvbiB0aGUgY2F0ZWdvcmllcyBvZiB1c2FiaWxpdHksCnNlY3VyaXR5LCByb2J1c3RuZXNzLCBhbmQgY29zdCBvZiBldm9sdXRpb24uIEJ5IGRlZmF1bHQsIHRoZSBkYXRhIGRlbW9uc3RyYXRpbmcgaG93CnRoZSBzY29yZXMgYXJlIGNhbGN1bGF0ZWQgZnJvbSBlYWNoIHJ1bGUgaXMgZGlzcGxheWVkLiBJZiB0aGlzIG9wdGlvbiBpcyBjb21iaW5lZCB3aXRoCnRoZSAic3VtbWFyeSBvbmx5IiBjb25maWd1cmF0aW9uIG9wdGlvbiwgb25seSB0aGUgY2F0ZWdvcml6ZWQgaW1wYWN0IHNjb3JlcyBhcmUgZGlzcGxheWVkLgpUaGVzZSBzY29yZXMgYXJlIHVzZWZ1bCBmb3IgIkF1dG9tYXRlZCBRdWFsaXR5IFNjcmVlbmluZyIuIFNlZSBbdGhpcyBkb2N1bWVudGF0aW9uXShkb2NzL2F1dG9tYXRlZC1xdWFsaXR5LXNjcmVlbmluZy5tZCkKZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHB1cnBvc2Ugb2YgdGhlc2Ugc2NvcmVzIGFuZCBob3cgdGhleSBhcmUgY29tcHV0ZWQuCjwvdGQ+Cjx0ZD48Y29kZT5mYWxzZTwvY29kZT48L3RkPgo8L3RyPgo8L3RhYmxlPgo8Yj5FeGFtcGxlczo8L2I+Cjx0YWJsZSBib3JkZXI9MT4KPHRyPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT4ueWFtbC8ueW1sPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uanNvbjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LmpzPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPgo8cHJlPgpwcm9kdWNlSW1wYWN0U2NvcmU6IHRydWUKPC9wcmU+CjwvdGQ+Cjx0ZD4KPHByZT4KewogICJwcm9kdWNlSW1wYWN0U2NvcmUiOiB0cnVlCn0KPC9wcmU+CjwvdGQ+Cjx0ZD4KPHByZT4KbW9kdWxlLmV4cG9ydHMgPSB7CiAgcHJvZHVjZUltcGFjdFNjb3JlOiB0cnVlCn07CjwvcHJlPgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKIyMjIyMgbWFya2Rvd25SZXBvcnQKPHRhYmxlIGJvcmRlcj0xPgo8dHI+Cjx0ZD48Yj5EZXNjcmlwdGlvbjwvYj48L3RkPgo8dGQgd2lkdGg9MjUlPjxiPkRlZmF1bHQ8L2I+PC90ZD4KPC90cj4KPHRyPgo8dGQ+VGhlIDxjb2RlPm1hcmtkb3duUmVwb3J0PC9jb2RlPiBjb25maWd1cmF0aW9uIHByb3BlcnR5IGNvcnJlc3BvbmRzIHRvIHRoZQo8Y29kZT4tbTwvY29kZT4vPGNvZGU+LS1tYXJrZG93bi1yZXBvcnQ8L2NvZGU+IGNvbW1hbmQtbGluZSBvcHRpb24uCklmIHNldCB0byB0cnVlLCB0aGUgdmFsaWRhdG9yIHdpbGwgZ2VuZXJhdGUgYSBNYXJrZG93biBmaWxlIGNvbnRhaW5pbmcgYSByZXBvcnQgb24gYWxsIG9mIHRoZSB2YWxpZGF0b3IgcmVzdWx0cywKaW5jbHVkaW5nIHRoZSBpbmRpdmlkdWFsIHJ1bGUgdmlvbGF0aW9ucywgdGhlIGltcGFjdCBzY29yZXMsIGFuZCB0aGUgZGF0YSB1c2VkIHRvIGNvbXB1dGUgdGhlIGltcGFjdCBzY29yZXMuCkl0IHByb3ZpZGVzIGEgc2luZ2xlIGxvY2F0aW9uIHRvIHNlZSBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIHByb2R1Y2VkIGJ5IHRoZSB2YWxpZGF0b3IuCkEgZGVmYXVsdCBmaWxlbmFtZSBpcyBhbHdheXMgdXNlZCBhbmQgaXMgYmFzZWQgb24gdGhlIG5hbWUgb2YgdGhlIEFQSSBkZWZpbml0aW9uIGZpbGUgcHJvdmlkZWQgdG8gdGhlIHZhbGlkYXRvci4KSWYgYSBmaWxlIG9mIHRoZSBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgZGVmYXVsdC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBwcmltYXJ5IHVzZS1jYXNlCm9mIHRoaXMgZmVhdHVyZSBpcyBwdWJsaXNoaW5nIHJlcG9ydHMgZHVyaW5nIENJL0NEIGJ1aWxkcywgd2hlcmUgYSBzaW5nbGUgcmVwb3J0IHdpbGwgbmVlZCB0byBiZSB1cGRhdGVkIGZyZXF1ZW50bHkuCjwvdGQ+Cjx0ZD48Y29kZT5mYWxzZTwvY29kZT48L3RkPgo8L3RyPgo8L3RhYmxlPgo8Yj5FeGFtcGxlczo8L2I+Cjx0YWJsZSBib3JkZXI9MT4KPHRyPgo8L3RyPgo8dHI+Cjx0ZD48Y29kZT4ueWFtbC8ueW1sPC9jb2RlPjwvdGQ+Cjx0ZD48Y29kZT4uanNvbjwvY29kZT48L3RkPgo8dGQ+PGNvZGU+LmpzPC9jb2RlPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPgo8cHJlPgptYXJrZG93blJlcG9ydDogdHJ1ZQo8L3ByZT4KPC90ZD4KPHRkPgo8cHJlPgp7CiAgIm1hcmtkb3duUmVwb3J0IjogdHJ1ZQp9CjwvcHJlPgo8L3RkPgo8dGQ+CjxwcmU+Cm1vZHVsZS5leHBvcnRzID0gewogIG1hcmtkb3duUmVwb3J0OiB0cnVlCn07CjwvcHJlPgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKIyMjIFByb2dyYW1tYXRpYyBVc2FnZQpXaGlsZSB0aGUgdmFsaWRhdG9yIGRvZXMgbm90IGV4cG9zZSBhbiBBUEkgZm9yIHVzYWdlIHdpdGhpbiBhIE5vZGUuanMgcHJvZ3JhbSwgeW91IGNhbiBhY2hpZXZlIHByb2dyYW1tYXRpYyBiZWhhdmlvcgpjb25zaXN0ZW50IHdpdGggdGhlIENMSSBieSB1c2luZyB0aGUgb3Blbi1zb3VyY2UgdG9vbCBbU3BlY3RyYWwncyBOb2RlIEFQSV0oaHR0cHM6Ly9tZXRhLnN0b3BsaWdodC5pby9kb2NzL3NwZWN0cmFsL2ViNjhlN2FmZDQ2M2Utc3BlY3RyYWwtaW4tamF2YS1zY3JpcHQpCmFuZCB0aGUgW0lCTSBPcGVuQVBJIFJ1bGVzZXQgcGFja2FnZV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQGlibS1jbG91ZC9vcGVuYXBpLXJ1bGVzZXQpLgpIZXJlIGlzIGEgc2ltcGxlIGV4YW1wbGUgb2Ygd2hhdCB0aGF0IG1pZ2h0IGxvb2sgbGlrZToKYGBganMKY29uc3QgaWJtT3BlbmFwaVJ1bGVzZXQgPSByZXF1aXJlKCdAaWJtLWNsb3VkL29wZW5hcGktcnVsZXNldCcpOwpjb25zdCB7IFNwZWN0cmFsIH0gPSByZXF1aXJlKCdAc3RvcGxpZ2h0L3NwZWN0cmFsLWNvcmUnKTsKCmZ1bmN0aW9uIGFzeW5jIHJ1blNwZWN0cmFsKG9wZW5hcGlEb2N1bWVudCkgewogIGNvbnN0IHNwZWN0cmFsID0gbmV3IFNwZWN0cmFsKCk7CiAgc3BlY3RyYWwuc2V0UnVsZXNldChpYm1PcGVuYXBpUnVsZXNldCk7CiAgcmVzdWx0cyA9IGF3YWl0IHNwZWN0cmFsLnJ1bihvcGVuYXBpRG9jdW1lbnQpOwogIGNvbnNvbGUubG9nKHJlc3VsdHMpOwp9CmBgYAoKIyMgVmFsaWRhdG9yIE91dHB1dApUaGUgdmFsaWRhdG9yIGNhbiBwcm9kdWNlIG91dHB1dCBpbiBlaXRoZXIgdGV4dCBvciBKU09OIGZvcm1hdC4gIFRoZSBkZWZhdWx0IGlzIGB0ZXh0YCBvdXRwdXQsIGFuZCB0aGlzIGNhbiBiZQpjb250cm9sbGVkIHdpdGggdGhlIGAtamAvYC0tanNvbmAgY29tbWFuZC1saW5lIG9wdGlvbiBvciBgb3V0cHV0Rm9ybWF0YCBjb25maWd1cmF0aW9uIHByb3BlcnR5LgoKKipOT1RFKiogVGhlIHRleHQgKGkuZS4gImh1bWFuIHJlYWRhYmxlIikgb3V0cHV0IGlzIG5vdCBhIHBhcnQgb2YgdGhlIHRvb2wncyBjb250cmFjdCBhbmQgbWF5IGNoYW5nZSBpbiBhIG1pbm9yCm9yIHBhdGNoIHJlbGVhc2UuIElmIHlvdSBhcmUgYnVpbGRpbmcgYXV0b21hdGlvbiBvciBzY3JpcHRzIHdpdGggdGhpcyB0b29sLCB1c2UgdGhlIEpTT04gb3V0cHV0LCB3aGljaCBpcyBzdGFibGUKYW5kIHN1YmplY3QgdG8gc2VtYW50aWMgdmVyc2lvbmluZy4KCiMjIyBUZXh0CkhlcmUgaXMgYW4gZXhhbXBsZSBvZiB0ZXh0IG91dHB1dDoKYGBgCklCTSBPcGVuQVBJIFZhbGlkYXRvciAodmFsaWRhdG9yOiAwLjk3LjU7IHJ1bGVzZXQ6IDAuNDUuNSksIEBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMTcsIDIwMjMuCgpWYWxpZGF0aW9uIFJlc3VsdHMgZm9yIC9teS9kaXJlY3RvcnkvbXktYXBpLnlhbWw6CgpFcnJvcnM6CgogIE1lc3NhZ2UgOiAgIFBhdGggY29udGFpbnMgdHdvIG9yIG1vcmUgY29uc2VjdXRpdmUgcGF0aCBwYXJhbWV0ZXIgcmVmZXJlbmNlczogL3YxL2Nsb3Vkcy97Y2xvdWRfaWR9L3tyZWdpb25faWR9CiAgUnVsZSAgICA6ICAgaWJtLW5vLWNvbnNlY3V0aXZlLXBhdGgtcGFyYW1ldGVyLXNlZ21lbnRzCiAgUGF0aCAgICA6ICAgcGF0aHMuL3YxL2Nsb3Vkcy97Y2xvdWRfaWR9L3tyZWdpb25faWR9CiAgTGluZSAgICA6ICAgMzMyCgpXYXJuaW5nczoKCiAgTWVzc2FnZSA6ICAgT3BlcmF0aW9uIHN1bW1hcmllcyBzaG91bGQgbm90IGhhdmUgYSB0cmFpbGluZyBwZXJpb2QKICBSdWxlICAgIDogICBpYm0tc3VtbWFyeS1zZW50ZW5jZS1zdHlsZQogIFBhdGggICAgOiAgIHBhdGhzLi92MS9jbG91ZHMucG9zdC5zdW1tYXJ5CiAgTGluZSAgICA6ICAgNDYKCiAgTWVzc2FnZSA6ICAgT3BlcmF0aW9uIHN1bW1hcmllcyBzaG91bGQgbm90IGhhdmUgYSB0cmFpbGluZyBwZXJpb2QKICBSdWxlICAgIDogICBpYm0tc3VtbWFyeS1zZW50ZW5jZS1zdHlsZQogIFBhdGggICAgOiAgIHBhdGhzLi92MS9jbG91ZHMuZ2V0LnN1bW1hcnkKICBMaW5lICAgIDogICA5MwoKU3VtbWFyeToKCiAgVG90YWwgbnVtYmVyIG9mIGVycm9ycyAgIDogMQogIFRvdGFsIG51bWJlciBvZiB3YXJuaW5ncyA6IDIKCiAgRXJyb3JzOgogICAxICgxMDAlKSA6IFBhdGggY29udGFpbnMgdHdvIG9yIG1vcmUgY29uc2VjdXRpdmUgcGF0aCBwYXJhbWV0ZXIgcmVmZXJlbmNlcwoKICBXYXJuaW5nczoKICAgMiAoMTAwJSkgOiBPcGVyYXRpb24gc3VtbWFyaWVzIHNob3VsZCBub3QgaGF2ZSBhIHRyYWlsaW5nIHBlcmlvZApgYGAKQXMgeW91IGNhbiBzZWUsIGFueSBlcnJvcnMgZGV0ZWN0ZWQgYnkgdGhlIHZhbGlkYXRvciBhcmUgbGlzdGVkIGZpcnN0LCB0aGVuCndhcm5pbmdzLCBhbmQgZmluYWxseSBhIHN1bW1hcnkgc2VjdGlvbi4KCiMjIyMgQWRkaXRpb25hbCBDdXN0b21pemF0aW9uCi0gVGhlIGAtc2AvYC0tc3VtbWFyeS1vbmx5YCBjb21tYW5kLWxpbmUgb3B0aW9uIG9yIHRoZSBgc3VtbWFyeU9ubHlgIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgY2F1c2VzIG9ubHkgdGhlIHN1bW1hcnkgdG8gYmUgZGlzcGxheWVkLgotIFRoZSBgLWVgL2AtLWVycm9ycy1vbmx5YCBvcHRpb24gb3IgYGVycm9yc09ubHlgIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgY2F1c2VzIG9ubHkgZXJyb3ItbGV2ZWwgdmlvbGF0aW9ucyB0byBiZSBkaXNwbGF5ZWQuCi0gVGhlIGAtcWAvYC0taW1wYWN0LXNjb3JlYCBvcHRpb24gb3IgYHByb2R1Y2VJbXBhY3RTY29yZWAgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSBjYXVzZXMgdGhlIHZhbGlkYXRvciB0byBzaG93IGFnZ3JlZ2F0ZWQgaW1wYWN0IHNjb3Jlcy4gU2VlIHRoZSBleGFtcGxlIGJlbG93OgoKRXhhbXBsZSBvZiBpbXBhY3Qgc2NvcmUgdGFibGVzIHRoYXQgYXJlIGFwcGVuZGVkIHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQ6CmBgYArilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAK4pSCICAgICAgIGNhdGVnb3J5IOKUgiBtYXggc2NvcmUg4pSCCuKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpArilIIgICAgICB1c2FiaWxpdHkg4pSCICAgOTggLzEwMCDilIIK4pSCICAgICAgIHNlY3VyaXR5IOKUgiAgMTAwIC8xMDAg4pSCCuKUgiAgICAgcm9idXN0bmVzcyDilIIgICA5NyAvMTAwIOKUggrilIIgICAgICBldm9sdXRpb24g4pSCICAgNjcgLzEwMCDilIIK4pSCIG92ZXJhbGwgKG1lYW4pIOKUgiAgIDkxIC8xMDAg4pSCCuKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmArilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAK4pSCICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUg4pSCIGNvdW50IOKUgiAgICAgICAgICAgIGZ1bmMg4pSCIHVzYWJpbGl0eSBpbXBhY3Qg4pSCIHNlY3VyaXR5IGltcGFjdCDilIIgcm9idXN0bmVzcyBpbXBhY3Qg4pSCIGV2b2x1dGlvbiBpbXBhY3Qg4pSCIHJ1bGUgdG90YWwg4pSCCuKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpArilIIgb3BlcmF0aW9uLW9wZXJhdGlvbklkLXVuaXF1ZSDilIIgICAgIDEg4pSCICAxw5czw7dvcGVyYXRpb25zIOKUgiAgICAgICAgICAgICAgICAxIOKUgiAgICAgICAgICAgICAgICAg4pSCICAgICAgICAgICAgICAgICAyIOKUgiAgICAgICAgICAgICAgICAzIOKUgiAgICAgICAgICA2IOKUggrilIIgICAgICAgaWJtLW5vLWFycmF5LXJlc3BvbnNlcyDilIIgICAgIDIg4pSCIDLDlzEww7dvcGVyYXRpb25zIOKUgiAgICAgICAgICAgICAgICAgIOKUgiAgICAgICAgICAgICAgICAg4pSCICAgICAgICAgICAgICAgICAgIOKUgiAgICAgICAgICAgICAgIDIwIOKUgiAgICAgICAgIDIwIOKUggrilIIgICAgICAgICAgICAgbm8tJHJlZi1zaWJsaW5ncyDilIIgICAgIDEg4pSCICAxw5cxw7dvcGVyYXRpb25zIOKUgiAgICAgICAgICAgICAwLjMzIOKUgiAgICAgICAgICAgICAgICAg4pSCICAgICAgICAgICAgICAgICAgIOKUgiAgICAgICAgICAgICAgICAgIOKUgiAgICAgICAwLjMzIOKUggrilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgKYGBgCgojIyMgSlNPTgpXaGVuIGRpc3BsYXlpbmcgSlNPTiBvdXRwdXQsIHRoZSB2YWxpZGF0b3Igd2lsbCBwcm9kdWNlIGEgSlNPTiBvYmplY3Qgd2hpY2ggY29tcGxpZXMgd2l0aApbdGhpcyBKU09OIHNjaGVtYV0ocGFja2FnZXMvdmFsaWRhdG9yL3NyYy9zY2hlbWFzL3Jlc3VsdHMtb2JqZWN0LnlhbWwpLiBUaGUgSlNPTiBkYXRhIHdpbGwgaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCBhbGwgcnVsZSB2aW9sYXRpb25zLAphcyB3ZWxsIGFzIGFsbCBpbXBhY3Qgc2NvcmUgaW5mb3JtYXRpb24gY29tcHV0ZWQgZnJvbSB0aGUgcnVsZSB2aW9sYXRpb25zLgpIZXJlIGlzIGFuIGV4YW1wbGUgb2YgSlNPTiBvdXRwdXQ6CmBgYGpzb24KewogICJlcnJvciI6IHsKICAgICJyZXN1bHRzIjogWwogICAgICB7CiAgICAgICAgIm1lc3NhZ2UiOiAiUGF0aCBjb250YWlucyB0d28gb3IgbW9yZSBjb25zZWN1dGl2ZSBwYXRoIHBhcmFtZXRlciByZWZlcmVuY2VzOiAvdjEvY2xvdWRzL3tjbG91ZF9pZH0ve3JlZ2lvbl9pZH0iLAogICAgICAgICJwYXRoIjogWwogICAgICAgICAgInBhdGhzIiwKICAgICAgICAgICIvdjEvY2xvdWRzL3tjbG91ZF9pZH0ve3JlZ2lvbl9pZH0iCiAgICAgICAgXSwKICAgICAgICAicnVsZSI6ICJpYm0tbm8tY29uc2VjdXRpdmUtcGF0aC1wYXJhbWV0ZXItc2VnbWVudHMiLAogICAgICAgICJsaW5lIjogMzMyCiAgICAgIH0KICAgIF0sCiAgICAic3VtbWFyeSI6IHsKICAgICAgInRvdGFsIjogMSwKICAgICAgImVudHJpZXMiOiBbCiAgICAgICAgewogICAgICAgICAgImdlbmVyYWxpemVkTWVzc2FnZSI6ICJQYXRoIGNvbnRhaW5zIHR3byBvciBtb3JlIGNvbnNlY3V0aXZlIHBhdGggcGFyYW1ldGVyIHJlZmVyZW5jZXMiLAogICAgICAgICAgImNvdW50IjogMSwKICAgICAgICAgICJwZXJjZW50YWdlIjogMTAwCiAgICAgICAgfQogICAgICBdCiAgICB9CiAgfSwKICAid2FybmluZyI6IHsKICAgICJyZXN1bHRzIjogWwogICAgICB7CiAgICAgICAgIm1lc3NhZ2UiOiAiT3BlcmF0aW9uIHN1bW1hcmllcyBzaG91bGQgbm90IGhhdmUgYSB0cmFpbGluZyBwZXJpb2QiLAogICAgICAgICJwYXRoIjogWwogICAgICAgICAgInBhdGhzIiwKICAgICAgICAgICIvdjEvY2xvdWRzIiwKICAgICAgICAgICJwb3N0IiwKICAgICAgICAgICJzdW1tYXJ5IgogICAgICAgIF0sCiAgICAgICAgInJ1bGUiOiAiaWJtLXN1bW1hcnktc2VudGVuY2Utc3R5bGUiLAogICAgICAgICJsaW5lIjogNDYKICAgICAgfSwKICAgICAgewogICAgICAgICJtZXNzYWdlIjogIk9wZXJhdGlvbiBzdW1tYXJpZXMgc2hvdWxkIG5vdCBoYXZlIGEgdHJhaWxpbmcgcGVyaW9kIiwKICAgICAgICAicGF0aCI6IFsKICAgICAgICAgICJwYXRocyIsCiAgICAgICAgICAiL3YxL2Nsb3VkcyIsCiAgICAgICAgICAiZ2V0IiwKICAgICAgICAgICJzdW1tYXJ5IgogICAgICAgIF0sCiAgICAgICAgInJ1bGUiOiAiaWJtLXN1bW1hcnktc2VudGVuY2Utc3R5bGUiLAogICAgICAgICJsaW5lIjogOTMKICAgICAgfQogICAgXSwKICAgICJzdW1tYXJ5IjogewogICAgICAidG90YWwiOiAyLAogICAgICAiZW50cmllcyI6IFsKICAgICAgICB7CiAgICAgICAgICAiZ2VuZXJhbGl6ZWRNZXNzYWdlIjogIk9wZXJhdGlvbiBzdW1tYXJpZXMgc2hvdWxkIG5vdCBoYXZlIGEgdHJhaWxpbmcgcGVyaW9kIiwKICAgICAgICAgICJjb3VudCI6IDIsCiAgICAgICAgICAicGVyY2VudGFnZSI6IDEwMAogICAgICAgIH0KICAgICAgXQogICAgfQogIH0sCiAgImluZm8iOiB7CiAgICAicmVzdWx0cyI6IFtdLAogICAgInN1bW1hcnkiOiB7CiAgICAgICJ0b3RhbCI6IDAsCiAgICAgICJlbnRyaWVzIjogW10KICAgIH0KICB9LAogICJoaW50IjogewogICAgInJlc3VsdHMiOiBbXSwKICAgICJzdW1tYXJ5IjogewogICAgICAidG90YWwiOiAwLAogICAgICAiZW50cmllcyI6IFtdCiAgICB9CiAgfSwKICAiaGFzUmVzdWx0cyI6IHRydWUKICAiaW1wYWN0U2NvcmUiOiB7CiAgICAiY2F0ZWdvcml6ZWRTdW1tYXJ5IjogewogICAgICAidXNhYmlsaXR5IjogOTQsCiAgICAgICJzZWN1cml0eSI6IDEwMCwKICAgICAgInJvYnVzdG5lc3MiOiAxMDAsCiAgICAgICJldm9sdXRpb24iOiAxMDAsCiAgICAgICJvdmVyYWxsIjogOTkKICAgIH0sCiAgICAic2NvcmluZ0RhdGEiOiBbCiAgICAgIHsKICAgICAgICAicnVsZSI6ICJpYm0tbm8tY29uc2VjdXRpdmUtcGF0aC1wYXJhbWV0ZXItc2VnbWVudHMiLAogICAgICAgICJjb3VudCI6IDEsCiAgICAgICAgImZ1bmMiOiAiMcOXMTDDt29wZXJhdGlvbnMiLAogICAgICAgICJkZW1lcml0cyI6IHsKICAgICAgICAgICJ1c2FiaWxpdHkiOiAzLjMzLAogICAgICAgICAgInRvdGFsIjogMy4zMwogICAgICAgIH0KICAgICAgfSwKICAgICAgewogICAgICAgICJydWxlIjogImlibS1zdW1tYXJ5LXNlbnRlbmNlLXN0eWxlIiwKICAgICAgICAiY291bnQiOiAyLAogICAgICAgICJmdW5jIjogIjLDlzHDt29wZXJhdGlvbnMiLAogICAgICAgICJkZW1lcml0cyI6IHsKICAgICAgICAgICJ1c2FiaWxpdHkiOiAwLjY3LAogICAgICAgICAgInRvdGFsIjogMC42NwogICAgICAgIH0KICAgICAgfQogICAgXQogIH0KfQpgYGAKVGhlIEpTT04gb3V0cHV0IGlzIGFsc28gYWZmZWN0ZWQgYnkgdGhlIGAtc2AvYC0tc3VtbWFyeS1vbmx5YCBhbmQgYC1lYC9gLS1lcnJvcnMtb25seWAgb3B0aW9ucyBhcyB3ZWxsIGFzIHRoZSBgc3VtbWFyeU9ubHlgIGFuZCBgZXJyb3JzT25seWAKY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzLiBJdCBpcyBfbm90XyBhZmZlY3RlZCBieSB0aGUgYC1xYC9gLS1pbXBhY3Qtc2NvcmVgIG9wdGlvbiBvciBgcHJvZHVjZUltcGFjdFNjb3JlYCBwcm9wZXJ0eS4KCiMjIExvZ2dpbmcKVGhlIHZhbGlkYXRvciB1c2VzIGEgKmxvZ2dlciogZm9yIGRpc3BsYXlpbmcgbWVzc2FnZXMgb24gdGhlIGNvbnNvbGUuClRoZSBjb3JlIHZhbGlkYXRvciB1c2VzIGEgc2luZ2xlIGxvZ2dlciBuYW1lZCBgcm9vdGAsIHdoaWxlIGVhY2ggb2YgdGhlIHJ1bGVzIGNvbnRhaW5lZCBpbiB0aGUKSUJNIENsb3VkIFZhbGlkYXRpb24gUnVsZXNldCB1c2VzIHRoZWlyIG93biB1bmlxdWUgbG9nZ2VyIHdob3NlIG5hbWUgd2lsbCBtYXRjaCB0aGUgcnVsZSdzIGlkCihlLmcuIGBpYm0tYWNjZXB0LWhlYWRlcmAsIGBpYm0tc2NoZW1hLWRlc2NyaXB0aW9uLWV4aXN0c2AsIGV0Yy4pLgoKRWFjaCBsb2dnZXIgaGFzIGEgbG9nZ2luZyBsZXZlbCBhc3NvY2lhdGVkIHdpdGggaXQ6IGBlcnJvcmAsIGB3YXJuYCwgYGluZm9gLCBhbmQgYGRlYnVnYC4KRWFjaCBvZiB0aGVzZSBsZXZlbHMgaW1wbGljaXRseSBpbmNsdWRlcyB0aGUgbGV2ZWxzIHRoYXQgcHJlY2VkZSBpdCBpbiB0aGUgbGlzdC4KRm9yIGV4YW1wbGUsIGlmIHlvdSBzZXQgdGhlIGxvZ2dpbmcgbGV2ZWwgb2YgYSBsb2dnZXIgdG8gYGluZm9gLCB0aGVuIGFsbCBtZXNzYWdlcyBvZiB0eXBlCmBpbmZvYCwgYHdhcm5gLCBhbmQgYGVycm9yYCB3aWxsIGJlIGRpc3BsYXllZCwgYnV0IGBkZWJ1Z2AgbWVzc2FnZXMgd2lsbCBub3QuCgpUbyBzZXQgdGhlIGxldmVsIG9mIHRoZSBgcm9vdGAgbG9nZ2VyIHRvIGBpbmZvYCwgeW91IGNvdWxkIHVzZSB0aGlzIG9wdGlvbjogYC0tbG9nLWxldmVsIHJvb3Q9aW5mb2AuCgpUbyBzZXQgdGhlIGxldmVsIG9mIHRoZSBsb2dnZXIgdXNlZCBieSB0aGUgYGlibS1hY2NlcHQtaGVhZGVyYCBydWxlIHRvIGBkZWJ1Z2AsCnlvdSBjb3VsZCB1c2UgdGhpcyBvcHRpb246IGAtbCBpYm0tYWNjZXB0LWhlYWRlcj1kZWJ1Z2AuCgpZb3UgY2FuIGFsc28gdXNlIGEgZ2xvYi1saWtlIHZhbHVlIGZvciBhIGxvZ2dlciBuYW1lIHRvIHNldCB0aGUgbGV2ZWwgb24gbXVsdGlwbGUgbG9nZ2Vycy4KRm9yIGV4YW1wbGUsIHRvIHNldCB0aGUgbGV2ZWwgZm9yICphbGwqIGxvZ2dlcnMgd2hvc2UgbmFtZSBzdGFydHMgd2l0aCBgaWJtLXByb3BlcnR5YCwgdHJ5IHRoaXM6CmAtbCBpYm0tcHJvcGVydHkqPWRlYnVnYC4KCkVuYWJsaW5nIGRlYnVnIGxvZ2dpbmcgZm9yIGEgc3BlY2lmaWMgcnVsZSBtaWdodCBiZSB1c2VmdWwgaW4gYSBzaXR1YXRpb24gd2hlcmUgdGhlIHJ1bGUgaXMKcmVwb3J0aW5nIHZpb2xhdGlvbnMgd2hpY2ggc2VlbSB0byBiZSBpbmV4cGxpY2FibGUuIEluIHRoaXMgY2FzZSwgYWRkaXRpb25hbCBkZWJ1ZyBpbmZvcm1hdGlvbgptaWdodCBiZSBoZWxwZnVsIGluIGRldGVybWluaW5nIHdoeSB0aGUgdmlvbGF0aW9ucyBhcmUgb2NjdXJyaW5nLCBhbmQgY291bGQgcG9zc2libHkgbGVhZCB0byBhIHNvbHV0aW9uLgpGb3IgZXhhbXBsZSwgc3VwcG9zZSB0aGUgYGlibS1wYWdpbmF0aW9uLXN0eWxlYCBydWxlIGlzIHJlcG9ydGluZyBzZXZlcmFsIHZpb2xhdGlvbnMsCmJ1dCB5ZXQgYXQgZmlyc3QgZ2xhbmNlIGl0J3Mgbm90IG9idmlvdXMgd2h5IHRoZXNlIHZpb2xhdGlvbnMgYXJlIG9jY3VycmluZy4KVG8gZW5hYmxlIGRlYnVnIGxvZ2dpbmcgZm9yIHRoaXMgcnVsZSwgdXNlIGEgY29tbWFuZCBsaWtlIHRoaXM6CmBgYApsaW50X29wZW5hcGkgLWwgaWJtLXBhZ2luYXRpb24tc3R5bGU9ZGVidWcgbXktbmV3LWFwaS55YW1sCmBgYAoKVGhlIGRlZmF1bHQgbG9nIGxldmVsIGZvciB0aGUgYHJvb3RgIGxvZ2dlciBpcyBgaW5mb2AsIHdoaWxlIHRoZSBkZWZhdWx0IGxvZyBsZXZlbCBmb3IKcnVsZS1zcGVjaWZpYyBsb2dnZXJzIGlzIGB3YXJuYC4KCiMjIENvbnRyaWJ1dGluZwoKU2VlIFtDT05UUklCVVRJTkddKENPTlRSSUJVVElORy5tZCkuCgojIyBMaWNlbnNlCgpUaGlzIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIgQXBhY2hlIDIuMC4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBpbiBbTElDRU5TRV0oTElDRU5TRSkuCg== readmeEtag: '"b9fd7f5eb697153217217e8c1c99cc446d6370b8"' readmeLastModified: Fri, 10 Jan 2025 22:00:33 GMT repositoryId: 153173690 description: Configurable and extensible validator/linter for OpenAPI documents created: '2018-10-15T19:59:22Z' updated: '2026-02-05T18:07:15Z' language: JavaScript archived: false stars: 610 watchers: 21 forks: 93 owner: IBM logo: https://avatars.githubusercontent.com/u/1459110?v=4 license: Apache-2.0 repoEtag: '"6c3fb24b5b609943caa4f82abb7d07a55050a83e815f9b8b06419ee39072cf26"' repoLastModified: Thu, 05 Feb 2026 18:07:15 GMT foundInMaster: true id: 0bf7dd29a9d07232135bb00764928296 v3_1: true - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags repository: https://github.com/redocly/redocly-cli v3: true v3_1: true id: dc53a7154c15667d6f54d47cdb300949 repositoryMetadata: base64Readme: >- IyBSZWRvY2x5IENMSQoKW0BSZWRvY2x5XShodHRwczovL3JlZG9jbHkuY29tKSBDTEkgaXMgeW91ciBhbGwtaW4tb25lIEFQSSBkb2N1bWVudGF0aW9uIHV0aWxpdHkuCkl0IGJ1aWxkcywgbWFuYWdlcywgaW1wcm92ZXMsIGFuZCBxdWFsaXR5LWNoZWNrcyB5b3VyIEFQSSBkZXNjcmlwdGlvbnMsIGFsbCBvZiB3aGljaCBjb21lcyBpbiBoYW5keSBmb3IgdmFyaW91cyBwaGFzZXMgb2YgdGhlIEFQSSBMaWZlY3ljbGUuCkNyZWF0ZSB5b3VyIG93biBydWxlc2V0cyB0byBtYWtlIEFQSSBnb3Zlcm5hbmNlIGVhc3ksIHB1Ymxpc2ggYmVhdXRpZnVsIEFQSSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiwgYW5kIG1vcmUuClN1cHBvcnRzIE9wZW5BUEkgMy4yLCAzLjEsIDMuMCBhbmQgT3BlbkFQSSAyLjAgKGxlZ2FjeSBTd2FnZ2VyKSwgQXN5bmNBUEkgMy4wIGFuZCAyLjYsIEFyYXp6byAxLjAuCgohW2J1aWxkIGFuZCB0ZXN0XShodHRwczovL2dpdGh1Yi5jb20vcmVkb2NseS9yZWRvY2x5LWNsaS9hY3Rpb25zL3dvcmtmbG93cy90ZXN0cy55YW1sL2JhZGdlLnN2ZykKIVtucG0gKHNjb3BlZCldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQHJlZG9jbHkvY2xpKQohW05QTV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9AcmVkb2NseS9jbGkpCgohW09wZW5BUEkgQ0xJIHRvb2xzZXRdKC4vbWVkaWEvcmVkb2NseS1jbGkuZ2lmKQoKIyMgTWlncmF0aW9uCgpNaWdyYXRpbmcgZnJvbSBSZWRvY2x5IENMSSB2MSB0byB2Mj8KSGVyZSdzIHRoZSBbZ3VpZGVdKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9jbGkvZ3VpZGVzL21pZ3JhdGUtdG8tdjIpIHRvIG1ha2UgdGhlIHRyYW5zaXRpb24gc21vb3RoZXIuCgojIyBVc2FnZQoKIyMjIE5vZGUKCmBgYHNoCm5weCBAcmVkb2NseS9jbGlAbGF0ZXN0IGxpbnQgcGF0aC10by1yb290LWZpbGUueWFtbApgYGAKCkFsdGVybmF0aXZlbHksIGluc3RhbGwgaXQgZ2xvYmFsbHkgd2l0aCBgbnBtYDoKCmBgYHNoCm5wbSBpbnN0YWxsIEByZWRvY2x5L2NsaSAtZwpgYGAKClRoZW4geW91IGNhbiB1c2UgaXQgYXMgYHJlZG9jbHkgW2NvbW1hbmRdIFtvcHRpb25zXWAsIGZvciBleGFtcGxlOgoKYGBgc2gKcmVkb2NseSBsaW50IHBhdGgtdG8tcm9vdC1maWxlLnlhbWwKYGBgCgpUaGUgbWluaW11bSByZXF1aXJlZCB2ZXJzaW9ucyBvZiBOb2RlLmpzIGFuZCBOUE0gYXJlIDIyLjEyLjAgYW5kIDEwLjkuMiByZXNwZWN0aXZlbHkuCgojIyMgRG9ja2VyCgpUbyBnaXZlIHRoZSBEb2NrZXIgY29udGFpbmVyIGFjY2VzcyB0byB0aGUgT3BlbkFQSSBkZXNjcmlwdGlvbiBmaWxlcywgeW91IG5lZWQgdG8gbW91bnQgdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5IGFzIGEgdm9sdW1lLgpBc3N1bWluZyB0aGUgQVBJIGRlc2NyaXB0aW9uIGlzIHJvb3RlZCBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwgeW91IG5lZWQgdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgc2gKZG9ja2VyIHJ1biAtLXJtIC12ICRQV0Q6L3NwZWMgcmVkb2NseS9jbGkgbGludCBwYXRoLXRvLXJvb3QtZmlsZS55YW1sCmBgYAoKVG8gYnVpbGQgYW5kIHJ1biB3aXRoIGEgbG9jYWwgaW1hZ2UsIHJ1biB0aGUgZm9sbG93aW5nIGZyb20gdGhlIHByb2plY3Qgcm9vdDoKCmBgYHNoCmRvY2tlciBidWlsZCAtdCByZWRvY2x5L2NsaSAuCmRvY2tlciBydW4gLS1ybSAtdiAkUFdEOi9zcGVjIHJlZG9jbHkvY2xpIGxpbnQgcGF0aC10by1yb290LWZpbGUueWFtbApgYGAKCiMjIENvbW1vbiB0YXNrcwoKIyMjIEdlbmVyYXRlIEFQSSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbgoKUmVkb2NseSBDTEkgaXMgYSBncmVhdCB3YXkgdG8gcmVuZGVyIEFQSSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbi4KSXQgdXNlcyBvcGVuIHNvdXJjZSBbUmVkb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9yZWRvY2x5L3JlZG9jKSB0byBidWlsZCB5b3VyIGRvY3VtZW50YXRpb24uClVzZSBhIGNvbW1hbmQgbGlrZSB0aGlzOgoKYGBgc2gKcmVkb2NseSBidWlsZC1kb2NzIG9wZW5hcGkueWFtbApgYGAKCllvdXIgQVBJIHJlZmVyZW5jZSBkb2NzIGFyZSBpbiBgcmVkb2Mtc3RhdGljLmh0bWxgIGJ5IGRlZmF1bHQuCllvdSBjYW4gY3VzdG9taXplIHRoaXMgaW4gbWFueSB3YXlzLgpbUmVhZCB0aGUgbWFpbiBkb2NzXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL2NvbW1hbmRzL2J1aWxkLWRvY3MpIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKPiA6YnVsYjogUmVkb2NseSBhbHNvIGhhcyBbaG9zdGVkIEFQSSBtYW5hZ2VtZW50IHNvbHV0aW9uXShodHRwczovL3JlZG9jbHkuY29tL3JldW5pdGUvKSwgYSAoY29tbWVyY2lhbCkgYWx0ZXJuYXRpdmUgdG8gUmVkb2MuCj4gUmVkb2MsIFJldmVsLCBSZWVmLCBhbmQgUmVhbG0gY2FuIGJlIHdvcmtlZCBvbiBsb2NhbGx5IHVzaW5nIHRoZSBgcHJldmlld2AgY29tbWFuZC4KCiMjIyBCdW5kbGUgbXVsdGlwbGUgT3BlbkFQSSBkb2N1bWVudHMKCkhhdmluZyBvbmUgbWFzc2l2ZSBPcGVuQVBJIGRlc2NyaXB0aW9uIGNhbiBiZSBhbm5veWluZywgc28gbW9zdCBwZW9wbGUgc3BsaXQgdGhlbSB1cCBpbnRvIG11bHRpcGxlIGRvY3VtZW50cyB2aWEgYCRyZWZgLCBvbmx5IHRvIGxhdGVyIGZpbmQgb3V0IHNvbWUgdG9vbHMgZG9uJ3Qgc3VwcG9ydCBgJHJlZmAgb3IgZG9uJ3Qgc3VwcG9ydCBtdWx0aXBsZSBkb2N1bWVudHMuClJlZG9jbHkgQ0xJIHRvIHRoZSByZXNjdWUhIEl0IGhhcyBhIGBidW5kbGVgIGNvbW1hbmQgeW91IGNhbiB1c2UgdG8gcmVjb21iaW5lIGFsbCBvZiB0aG9zZSBkb2N1bWVudHMgYmFjayBpbnRvIG9uZSBzaW5nbGUgZG9jdW1lbnQuClRoZSBidW5kbGVkIG91dHB1dCB0aGF0IFJlZG9jbHkgQ0xJIHByb3ZpZGVzIGlzIGNsZWFuLCB0aWR5LCBhbmQgbG9va3MgbGlrZSBhIGh1bWFuIG1hZGUgaXQuCgojIyMgQXV0b21hdGUgQVBJIGd1aWRlbGluZXMgd2l0aCBMaW50aW5nCgpDaGVjayB0aGF0IHlvdXIgQVBJIG1hdGNoZXMgdGhlIGV4cGVjdGVkIEFQSSBndWlkZWxpbmVzIGJ5IHVzaW5nIHRoZSBgbGludGAgY29tbWFuZC4KQVBJIGd1aWRlbGluZXMgYXJlIGFuIGltcG9ydGFudCBwaWVjZSBvZiBBUEkgZ292ZXJuYW5jZS4gVGhleSBoZWxwIHRvIGtlZXAgQVBJcyBjb25zaXN0ZW50IGJ5IGVuZm9yY2luZyB0aGUgc2FtZSBzdGFuZGFyZHMgYW5kIG5hbWluZyBjb252ZW50aW9ucywgYW5kIHRoZXkgY2FuIGFsc28gZ3VpZGUgQVBJIHRlYW1zIHRocm91Z2ggcG90ZW50aWFsIHNlY3VyaXR5IGhhemFyZHMgYW5kIG90aGVyIHBpdGZhbGxzLgpBdXRvbWF0aW5nIEFQSSBndWlkZWxpbmVzIG1lYW5zIHlvdSBjYW4ga2VlcCBBUElzIGNvbnNpc3RlbnQgYW5kIHNlY3VyZSB0aHJvdWdob3V0IHRoZWlyIGxpZmVjeWNsZS4KRXZlbiBiZXR0ZXIsIHlvdSBjYW4gc2hhcGUgdGhlIGRlc2lnbiBvZiB0aGUgQVBJIGJlZm9yZSBpdCBldmVuIGV4aXN0cyBieSBjb21iaW5pbmcgQVBJIGxpbnRpbmcgd2l0aCBhIGRlc2lnbi1maXJzdCBBUEkgd29ya2Zsb3cuCgpPdXIgQVBJIGxpbnRlciBpcyBkZXNpZ25lZCBmb3Igc3BlZWQgb24gZXZlbiBsYXJnZSBkb2N1bWVudHMsIGFuZCBpdCdzIGVhc3kgdG8gcnVuIGxvY2FsbHksIGluIENJLCBvciBhbnl3aGVyZSB5b3UgbmVlZCBpdC4KSXQncyBhbHNvIGRlc2lnbmVkIGZvciBodW1hbnMsIHdpdGggbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlcyB0byBoZWxwIHlvdSBnZXQgeW91ciBBUEkgcmlnaHQgZXZlcnkgdGltZS4KClRyeSBpdCBsaWtlIHRoaXM6CgpgYGBzaApyZWRvY2x5IGxpbnQgb3BlbmFwaS55YW1sCmBgYAoKKipDb25maWd1cmUgdGhlIHJ1bGVzKiogYXMgeW91IHdpc2guCk90aGVyIEFQSSBMaW50ZXJzIHVzZSBjb21wbGljYXRlZCBpZGVudGlmaWVycyBsaWtlIEpTT05QYXRoLCBidXQgUmVkb2NseSBtYWtlcyBsaWZlIGVhc3kgd2l0aCBzaW1wbGUgZXhwcmVzc2lvbnMgdGhhdCB1bmRlcnN0YW5kIHRoZSBBUEkgc3BlY2lmaWNhdGlvbiBzdHJ1Y3R1cmUuCllvdSBjYW4gZWl0aGVyIHVzZSB0aGUgW2J1aWx0LWluIHJ1bGVzXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL3J1bGVzKSB0byBtaXgtYW5kLW1hdGNoIHlvdXIgaWRlYWwgQVBJIGd1aWRlbGluZXMsIG9yIGJyZWFrIG91dCB0aGUgdG9vbHMgdG8gW2J1aWxkIHlvdXIgb3duXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL3J1bGVzI3J1bGUtaWRlYXMpLgoKKipGb3JtYXQgdGhlIG91dHB1dCoqIGluIHdoYXRldmVyIHdheSB5b3UgbmVlZC4KVGhlIGBzdHlsaXNoYCBvdXRwdXQgaXMgYXMgZ29vZCBhcyBpdCBzb3VuZHMsIGJ1dCBpZiB5b3UgbmVlZCBKU09OLCBNYXJrZG93biwgQ2hlY2tzdHlsZSBhbmQgb3RoZXIgb3V0cHV0cyB0byBpbnRlZ3JhdGUgd2l0aCBvdGhlciB0b29scywgdGhlIGBsaW50YCBjb21tYW5kIGNhbiBvdXRwdXQgdGhvc2UgdG9vLgoKKipNdWx0aXBsZSBmaWxlcyBzdXBwb3J0ZWQqKiBzbyB5b3UgZG9uJ3QgbmVlZCB0byBidW5kbGUgeW91ciBBUEkgZGVzY3JpcHRpb24gdG8gbGludCBpdDsganVzdCBwb2ludCBSZWRvY2x5IENMSSBhdCB0aGUgImVudHJ5IHBvaW50IiAoZS5nLjogYG9wZW5hcGkueWFtbGApIGFuZCBpdCBoYW5kbGVzIHRoZSByZXN0LgoKW0xlYXJuIG1vcmUgYWJvdXQgQVBJIHN0YW5kYXJkcyBhbmQgY29uZmlndXJpbmcgUmVkb2NseSBydWxlc10oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2NsaS9hcGktc3RhbmRhcmRzKS4KCkxvb2tpbmcgZm9yIG1vcmUgZXhhbXBsZXM/IENoZWNrIG91dCBvdXIgW0Nvb2tib29rXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvY2x5LWNsaS1jb29rYm9vaykuCgojIyMgQVBJIGNvbnRyYWN0IHRlc3Rpbmcgd2l0aCBSZXNwZWN0CgpFbnN1cmUgeW91ciBBUElzIG1hdGNoIHRoZWlyIE9wZW5BUEkgZGVzY3JpcHRpb25zIHdpdGggKipSZXNwZWN0KiosIFJlZG9jbHkncyBBUEkgY29udHJhY3QgdGVzdGluZyBzeXN0ZW0uIFJlc3BlY3Qgc2VuZHMgcmVhbCBIVFRQIHJlcXVlc3RzIHRvIHlvdXIgQVBJIHNlcnZlciBhbmQgdmFsaWRhdGVzIHRoYXQgcmVzcG9uc2VzIG1hdGNoIHRoZSBleHBlY3RhdGlvbnMgZGVmaW5lZCBpbiB5b3VyIE9wZW5BUEkgZGVzY3JpcHRpb24gYW5kIEFyYXp6byB3b3JrZmxvd3MuCgotIFZlcmlmeSBBUEkgcmVzcG9uc2VzIG1hdGNoIHlvdXIgT3BlbkFQSSBzY2hlbWEKLSBUZXN0IGNvbXBsZXggQVBJIHNlcXVlbmNlcyB1c2luZyBPcGVuQVBJIEFyYXp6byBmb3JtYXQKLSBDYXRjaCBBUEkgZHJpZnQgZWFybHkgaW4gZGV2ZWxvcG1lbnQgYW5kIENJL0NECi0gRW5zdXJlIGV4dGVybmFsIEFQSXMgeW91IGRlcGVuZCBvbiBiZWhhdmUgYXMgZXhwZWN0ZWQKLSBUcmFjayByZXNwb25zZSB0aW1lcyBhbmQgZGV0ZWN0IGFub21hbGllcwoKIyMjIyBRdWljayBzdGFydAoKYGBgc2gKIyBHZW5lcmF0ZSB0ZXN0IHdvcmtmbG93cyBmcm9tIHlvdXIgT3BlbkFQSSBzcGVjCnJlZG9jbHkgZ2VuZXJhdGUtYXJhenpvIG9wZW5hcGkueWFtbAoKIyBSdW4gY29udHJhY3QgdGVzdHMgYWdhaW5zdCB5b3VyIEFQSQpyZWRvY2x5IHJlc3BlY3QgYXV0by1nZW5lcmF0ZWQuYXJhenpvLnlhbWwgLS12ZXJib3NlCmBgYAoKIyMjIyBSZXNwZWN0IHZzLiBSZXNwZWN0IE1vbml0b3JpbmcKClJlc3BlY3QgaXMgUmVkb2NseSdzIGNvbW11bml0eS1lZGl0aW9uIHByb2R1Y3QuIExvb2tpbmcgZm9yIHNvbWV0aGluZyBtb3JlPyBXZSBhbHNvIG9mZmVyIGNvbnRpbnVvdXMgQVBJIG1vbml0b3Jpbmcgd2l0aCBhZGRpdGlvbmFsIGZlYXR1cmVzIGluY2x1ZGluZzoKCi0gUmVhbC10aW1lIGluc2lnaHRzCi0gQXV0b21hdGVkIGFsZXJ0cyB2aWEgZW1haWwgb3IgU2xhY2sKLSBBdXRvbWF0ZWQgQVBJIGNoZWNrcwotIFByb2FjdGl2ZSBBUEkgcXVhbGl0eSBhc3N1cmFuY2UKCkxlYXJuIG1vcmUgYWJvdXQgW1Jlc3BlY3RdKGh0dHBzOi8vcmVkb2NseS5jb20vcmVzcGVjdCkgYW5kIFtnZXQgc3RhcnRlZCB3aXRoIEFQSSBjb250cmFjdCB0ZXN0aW5nXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvcmVzcGVjdC9nZXQtc3RhcnRlZCkuCgojIyMgVHJhbnNmb3JtIGFuIE9wZW5BUEkgZGVzY3JpcHRpb24KCklmIHlvdXIgT3BlbkFQSSBkZXNjcmlwdGlvbiBpc24ndCBldmVyeXRoaW5nIHlvdSBob3BlZCBpdCB3b3VsZCBiZSwgZW5oYW5jZSBpdCB3aXRoIHRoZSBSZWRvY2x5IFtkZWNvcmF0b3JzXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL2RlY29yYXRvcnMpIGZlYXR1cmUuClRoaXMgYWxsb3dzIHlvdSB0bzoKCi0gUHVibGlzaCByZWZlcmVuY2UgZG9jcyB3aXRoIGEgc3Vic2V0IG9mIGVuZHBvaW50cyBmb3IgcHVibGljIHVzZQotIEltcHJvdmUgdGhlIGRvY3MgYnkgYWRkaW5nIGV4YW1wbGVzIGFuZCBkZXNjcmlwdGlvbnMKLSBBZGFwdCBhbiBleGlzdGluZyBPcGVuQVBJIGRlc2NyaXB0aW9uLCBhbmQgcmVwbGFjZSBkZXRhaWxzIGxpa2UgVVJMcyBmb3IgdXNlIG9uIHN0YWdpbmcgcGxhdGZvcm1zCgojIyBEYXRhIGNvbGxlY3Rpb24KClRoaXMgdG9vbCBbY29sbGVjdHMgZGF0YV0oLi9kb2NzL3VzYWdlLWRhdGEubWQpIHRvIGhlbHAgUmVkb2NseSBpbXByb3ZlIG91ciBwcm9kdWN0cyBhbmQgc2VydmljZXMuCllvdSBjYW4gb3B0IG91dCBieSBzZXR0aW5nIHRoZSBgUkVET0NMWV9URUxFTUVUUllgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGBvZmZgLgoKIyMgVXBkYXRlIG5vdGlmaWNhdGlvbnMKClJlZG9jbHkgQ0xJIGNoZWNrcyBmb3IgdXBkYXRlcyBvbiBzdGFydHVwLgpZb3UgY2FuIGRpc2FibGUgdGhpcyBieSBzZXR0aW5nIHRoZSBgUkVET0NMWV9TVVBQUkVTU19VUERBVEVfTk9USUNFYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgdHJ1ZWAuCgojIyBNb3JlIHJlc291cmNlcwoKW1JlYWQgdGhlIGRldGFpbGVkIGRvY3NdKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9jbGkvKS4KCiMjIENyZWRpdHMKClRoYW5rcyB0byBbZ3JhcGhxbC1qc10oaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcykgYW5kIFtlc2xpbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9lc2xpbnQvZXNsaW50KSBmb3IgaW5zcGlyYXRpb24gb2YgdGhlIEFQSSBkZXNjcmlwdGlvbiB0cmF2ZXJzYWwgYXBwcm9hY2ggYW5kIHRvIFtTd2FnZ2VyXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1lZGl0b3IpLCBbU3BlY3RyYWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9wbGlnaHRpby9zcGVjdHJhbCksIGFuZCBbT0FTLUtpdF0oaHR0cHM6Ly9naXRodWIuY29tL01lcm1hZGUvb2FzLWtpdCkgZm9yIGluc3BpcmluZyB0aGUgcmVjb21tZW5kZWQgcnVsZXNldC4KCiMjIERldmVsb3BtZW50CgpDb250cmlidXRpb25zIGFyZSB3ZWxjb21lIQpBbGwgdGhlIGluZm9ybWF0aW9uIHlvdSBuZWVkIGlzIGluIFtDT05UUklCVVRJTkcubWRdKENPTlRSSUJVVElORy5tZCkuCg== readmeEtag: '"7ffb8715b2fa243155ea86555b3f5f1101452039"' readmeLastModified: Fri, 21 Nov 2025 09:28:04 GMT repositoryId: 207588519 description: >- ⚒️ Redocly CLI makes OpenAPI easy. Lint/validate to any standard, generate beautiful docs, and more. created: '2019-09-10T14:56:25Z' updated: '2026-02-05T16:31:10Z' language: TypeScript archived: false stars: 1357 watchers: 21 forks: 201 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT repoEtag: '"7c057fdc1397f54938320009028afb65dbddcb572cf7b50c12c210b467c56d82"' repoLastModified: Thu, 05 Feb 2026 16:31:10 GMT category: - Description Validators - Documentation - Server Implementations foundInMaster: true oldLocations: - https://github.com/redocly/openapi-cli name: Redocly CLI link: https://redocly.com/redocly-cli/ language: - CLI - TypeScript source_description: > Bring versatile OpenAPI validation, linting & bundling to your command line with this open-source Swiss-army knife. v2: true - source: https://openapi.tools/ name: - openapi-validator-middleware - fastify-openapi-glue category: - Data Validators - Server link: - https://www.npmjs.com/package/openapi-validator-middleware - https://www.npmjs.com/package/fastify-openapi-glue repository: https://github.com/payu/openapi-validator-middleware language: Node.js source_description: - > Provides data validation within an Express, Koa or Fastify app according to a OpenAPI definition. It uses Ajv under the hood for validation. - >- A plugin for the Fastify webserver to autogenerate a Fastify configuration based on a OpenApi description. v2: true v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXZhbGlkYXRvci1taWRkbGV3YXJlCgpbIVtOUE0gVmVyc2lvbl1bbnBtLWltYWdlXV1bbnBtLXVybF0KIVttYWluIHdvcmtmbG93XShodHRwczovL2dpdGh1Yi5jb20vUGF5VS9vcGVuYXBpLXZhbGlkYXRvci1taWRkbGV3YXJlL2FjdGlvbnMvd29ya2Zsb3dzL21haW4ueW1sL2JhZGdlLnN2ZykKWyFbTlBNIERvd25sb2Fkc11bZG93bmxvYWRzLWltYWdlXV1bZG93bmxvYWRzLXVybF0KWyFbVGVzdCBDb3ZlcmFnZV1bY292ZXJhbGxzLWltYWdlXV1bY292ZXJhbGxzLXVybF0KWyFbS25vd24gVnVsbmVyYWJpbGl0aWVzXVtzbnlrLWltYWdlXV1bc255ay11cmxdClshW0FwYWNoZSAyLjAgTGljZW5zZV1bbGljZW5zZS1pbWFnZV1dW2xpY2Vuc2UtdXJsXQoKVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGRhdGEgdmFsaWRhdGlvbiB3aXRoaW4gYW4gRXhwcmVzcywgS29hIG9yIEZhc3RpZnkgYXBwIGFjY29yZGluZyB0byBhIFtTd2FnZ2VyL09wZW5BUEkgZGVmaW5pdGlvbl0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vKS4gSXQgdXNlcyBbQWp2XShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9hanYpIHVuZGVyIHRoZSBob29kIGZvciB2YWxpZGF0aW9uLgoKTk9USUNFOiBBcyB0aGlzIHBhY2thZ2UgZ29uZSB0aHJvdWdoIGEgbG9uZyB3YXksIGFzIHdlIGFkZGVkIHN1cHBvcnQgZm9yIE9wZW5BUEkgZGVmaW5pdGlvbnMsIHdoaWxlIGFsc28gYWRkaW5nIHN1cHBvcnQgZm9yIG1vcmUgZnJhbWV3b3JrcyBzdWNoIGFzIEtvYSBhbmQgRmFzdGlmeSwgd2UgZmluYWxseSB0b29rIHRoZSBzdGVwIG9mIGNoYW5naW5nIFtleHByZXNzLWFqdi1zd2FnZ2VyLXZhbGlkYXRpb25dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2V4cHJlc3MtYWp2LXN3YWdnZXItdmFsaWRhdGlvbikgbmFtZSB0byBzb21ldGhpbmcgdGhhdCBkZXNjcmliZXMgaXQgYmV0dGVyLiBBcyBvZiBub3cgd2UnbGwgYmUgdXNpbmcgdGhlIG5hbWUgW29wZW5hcGktdmFsaWRhdG9yLW1pZGRsZXdhcmVdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktdmFsaWRhdG9yLW1pZGRsZXdhcmUpIGluc3RlYWQuICAKVGhlcmUgYXJlIG5vIGNvZGUgY2hhbmdlcyBpbiBgb3BlbmFwaS12YWxpZGF0b3ItbWlkZGxld2FyZUAyLjAuMGAgY29tcGFyZWQgdG8gYGV4cHJlc3MtYWp2LXN3YWdnZXItdmFsaWRhdGlvbkAxLjIuMGAgYXBhcnQgZnJvbSB0aGUgbmFtZSBjaGFuZ2UuCgo8IS0tIFNUQVJUIGRvY3RvYyBnZW5lcmF0ZWQgVE9DIHBsZWFzZSBrZWVwIGNvbW1lbnQgaGVyZSB0byBhbGxvdyBhdXRvIHVwZGF0ZSAtLT4KPCEtLSBET04nVCBFRElUIFRISVMgU0VDVElPTiwgSU5TVEVBRCBSRS1SVU4gZG9jdG9jIFRPIFVQREFURSAtLT4KKipUYWJsZSBvZiBDb250ZW50cyoqICA8IS0tICpnZW5lcmF0ZWQgd2l0aCBbRG9jVG9jXShodHRwczovL2dpdGh1Yi5jb20vdGhsb3JlbnovZG9jdG9jKSogLS0+CgotIFtvcGVuYXBpLXZhbGlkYXRvci1taWRkbGV3YXJlXSgjb3BlbmFwaS12YWxpZGF0b3ItbWlkZGxld2FyZSkKICAtIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCiAgLSBbQVBJXSgjYXBpKQogICAgLSBbb3BlbmFwaS12YWxpZGF0b3ItbWlkZGxld2FyZS52YWxpZGF0ZShmYXN0aWZ5T3B0aW9ucyldKCNvcGVuYXBpLXZhbGlkYXRvci1taWRkbGV3YXJldmFsaWRhdGVmYXN0aWZ5b3B0aW9ucykKICAgICAgLSBbZmFzdGlmeU9wdGlvbnNdKCNmYXN0aWZ5b3B0aW9ucykKICAgIC0gW29wZW5hcGktdmFsaWRhdG9yLW1pZGRsZXdhcmUuaW5pdChwYXRoVG9Td2FnZ2VyRmlsZSwgb3B0aW9ucyldKCNvcGVuYXBpLXZhbGlkYXRvci1taWRkbGV3YXJlaW5pdHBhdGh0b3N3YWdnZXJmaWxlLW9wdGlvbnMpCiAgICAtIFtvcGVuYXBpLXZhbGlkYXRvci1taWRkbGV3YXJlLmluaXRBc3luYyhwYXRoVG9Td2FnZ2VyRmlsZSwgb3B0aW9ucyldKCNvcGVuYXBpLXZhbGlkYXRvci1taWRkbGV3YXJlaW5pdGFzeW5jcGF0aHRvc3dhZ2dlcmZpbGUtb3B0aW9ucykKICAgICAgLSBbT3B0aW9uc10oI29wdGlvbnMpCiAgLSBbVXNhZ2UgRXhhbXBsZV0oI3VzYWdlLWV4YW1wbGUpCiAgICAtIFtFeHByZXNzXSgjZXhwcmVzcykKICAgIC0gW0tvYV0oI2tvYSkKICAgIC0gW0Zhc3RpZnldKCNmYXN0aWZ5KQogICAgLSBbTXVsdGlwbGUtaW5zdGFuY2VzXSgjbXVsdGlwbGUtaW5zdGFuY2VzKQogIC0gW0ltcG9ydGFudCBOb3Rlc10oI2ltcG9ydGFudC1ub3RlcykKICAgIC0gW1NjaGVtYSBPYmplY3RzXSgjc2NoZW1hLW9iamVjdHMpCiAgICAtIFtNdWx0aXBhcnQvZm9ybS1kYXRhIChmaWxlcyldKCNtdWx0aXBhcnRmb3JtLWRhdGEtZmlsZXMpCiAgICAtIFtGYXN0aWZ5IHN1cHBvcnRdKCNmYXN0aWZ5LXN1cHBvcnQpCiAgICAtIFtLb2Egc3VwcG9ydF0oI2tvYS1zdXBwb3J0KQogICAgLSBbS29hIHBhY2thZ2VzXSgja29hLXBhY2thZ2VzKQogIC0gW0tub3duIElzc3VlcyB3aXRoIE9wZW5BUEkgM10oI2tub3duLWlzc3Vlcy13aXRoLW9wZW5hcGktMykKICAtIFtSdW5uaW5nIFRlc3RzXSgjcnVubmluZy10ZXN0cykKCjwhLS0gRU5EIGRvY3RvYyBnZW5lcmF0ZWQgVE9DIHBsZWFzZSBrZWVwIGNvbW1lbnQgaGVyZSB0byBhbGxvdyBhdXRvIHVwZGF0ZSAtLT4KCiMjIEluc3RhbGxhdGlvbgoKSW5zdGFsbCB1c2luZyB0aGUgbm9kZSBwYWNrYWdlIHJlZ2lzdHJ5OgoKYGBgYmFzaApucG0gaW5zdGFsbCAtLXNhdmUgb3BlbmFwaS12YWxpZGF0b3ItbWlkZGxld2FyZQpgYGAKClRoZW4gaW1wb3J0IHRoZSBtb2R1bGUgaW4geW91ciBjb2RlOgoKYGBganMKY29uc3Qgc3dhZ2dlclZhbGlkYXRpb24gPSByZXF1aXJlKCdvcGVuYXBpLXZhbGlkYXRvci1taWRkbGV3YXJlJyk7CmBgYAoKIyMgQVBJCgojIyMgb3BlbmFwaS12YWxpZGF0b3ItbWlkZGxld2FyZS52YWxpZGF0ZShmYXN0aWZ5T3B0aW9ucykKClRoaXMgbWlkZGxld2FyZSBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIHJlcXVlc3QgYm9keSwgaGVhZGVycywgcGF0aCBwYXJhbWV0ZXJzIGFuZCBxdWVyeSBwYXJhbWV0ZXJzIGFjY29yZGluZyB0byB0aGUgX3BhdGhzXyBkZWZpbml0aW9uIG9mIHRoZSBzd2FnZ2VyIGZpbGUuIE1ha2Ugc3VyZSB0byB1c2UgdGhpcyBtaWRkbGV3YXJlIGluc2lkZSBhIHJvdXRlIGRlZmluaXRpb24gaW4gb3JkZXIgdG8gaGF2ZSBgcmVxLnJvdXRlLnBhdGhgIGFzc2lnbmVkIHRvIHRoZSBtb3N0IGFjY3VyYXRlIGV4cHJlc3Mgcm91dGUuCgotIGBmYXN0aWZ5T3B0aW9uc2A6IE9ubHkgYXBwbGljYWJsZSBmb3IgYGZhc3RpZnlgIGZyYW1ld29yay4gU2VlIGJlbG93LgoKIyMjIyBmYXN0aWZ5T3B0aW9ucwoKLSBgc2tpcGxpc3RgOiBFbmRwb2ludCBwYXRocyBmb3Igd2hpY2ggdmFsaWRhdGlvbiBzaG91bGQgbm90IGJlIGFwcGxpZWQuIEFuIGFycmF5IG9mIHN0cmluZ3MgaW4gUmVnRXhwIGZvcm1hdCwgZS4gZy4gYFsnXi9wZXRzJCddYCAKCiMjIyBvcGVuYXBpLXZhbGlkYXRvci1taWRkbGV3YXJlLmluaXQocGF0aFRvU3dhZ2dlckZpbGUsIG9wdGlvbnMpCgpJbml0aWFsaXplIHRoZSBtaWRkbGV3YXJlIHVzaW5nIGEgc3dhZ2dlciBkZWZpbml0aW9uLgpUaGUgZnVuY3Rpb24gZXhlY3V0ZXMgc3luY2hyb25vdXNseSBhbmQgZG9lcyBub3QgcmV0dXJuIGFueXRoaW5nLgoKLSBgcGF0aFRvU3dhZ2dlckZpbGVgOiBQYXRoIHRvIHRoZSBzd2FnZ2VyIGRlZmluaXRpb24uCi0gYG9wdGlvbnNgOiBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBtaWRkbGV3YXJlIChbc2VlIGJlbG93XSgjb3B0aW9ucykpLgoKIyMjIG9wZW5hcGktdmFsaWRhdG9yLW1pZGRsZXdhcmUuaW5pdEFzeW5jKHBhdGhUb1N3YWdnZXJGaWxlLCBvcHRpb25zKQoKSW5pdGlhbGl6ZSB0aGUgbWlkZGxld2FyZSB1c2luZyBhIHN3YWdnZXIgZGVmaW5pdGlvbi4KVGhlIGZ1bmN0aW9uIGV4ZWN1dGVzIGFzeW5jaHJvbm91c2x5IGFuZCB0aGUgcmVzb2x2ZWQgcHJvbWlzZSBkb2VzIG5vdCByZXR1cm4gYW55dGhpbmcuCgpUaGlzIEluaXRpbGF6dGlvbiBmdW5jdGlvbiBhbHNvIHN1cHBvcnRzIHNjaGVtYSB3aXRoIHJlZmVyZW5jZXMgdG8gZXh0ZXJuYWwgZmlsZXMuIAoKLSBgcGF0aFRvU3dhZ2dlckZpbGVgOiBQYXRoIHRvIHRoZSBzd2FnZ2VyIGRlZmluaXRpb24uCi0gYG9wdGlvbnNgOiBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBtaWRkbGV3YXJlIChbc2VlIGJlbG93XSgjb3B0aW9ucykpLgoKIyMjIyBPcHRpb25zCgpPcHRpb25zIGN1cnJlbnRseSBzdXBwb3J0ZWQ6Ci0gYGZyYW1ld29ya2AgLSBEZWZpbmVzIGluIHdoaWNoIGZyYW1ld29yayB0aGUgbWlkZGxld2FyZSBpcyB3b3JraW5nICgnZmFzdGlmeScsICdrb2EnIG9yICdleHByZXNzJykuIEFzIGRlZmF1bHQsIHNldCB0byAnZXhwcmVzcycuCi0gYGZvcm1hdHNgIC0gQXJyYXkgb2YgZm9ybWF0cyB0aGF0IGNhbiBiZSBhZGRlZCB0byBgYWp2YCBjb25maWd1cmF0aW9uLCBlYWNoIGVsZW1lbnQgaW4gdGhlIGFycmF5IHNob3VsZCBpbmNsdWRlIGBuYW1lYCBhbmQgYHBhdHRlcm5gLgogICAgYGBganMKICAgIGZvcm1hdHM6IFsKICAgICAgICB7IG5hbWU6ICdkb3VibGUnLCBwYXR0ZXJuOiAvXGQrXC4oXGQrKSsvIH0sCiAgICAgICAgeyBuYW1lOiAnaW50NjQnLCBwYXR0ZXJuOiAvXlxkezEsMTl9JC8gfSwKICAgICAgICB7IG5hbWU6ICdpbnQzMicsIHBhdHRlcm46IC9eXGR7MSwxMH0kLyB9CiAgICBdCiAgICBgYGAKCi0gYGtleXdvcmRzYCAtIEFycmF5IG9mIGtleXdvcmRzIHRoYXQgY2FuIGJlIGFkZGVkIHRvIGBhanZgIGNvbmZpZ3VyYXRpb24sIGVhY2ggZWxlbWVudCBpbiB0aGUgYXJyYXkgY2FuIGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgYSBmdW5jdGlvbi4gCklmIHRoZSBlbGVtZW50IGlzIGFuIG9iamVjdCwgaXQgbXVzdCBpbmNsdWRlIGBuYW1lYCBhbmQgYGRlZmluaXRpb25gLiBJZiB0aGUgZWxlbWVudCBpcyBhIGZ1bmN0aW9uLCBpdCBzaG91bGQgYWNjZXB0IGBhanZgIGFzIGl0cyBmaXJzdCBhcmd1bWVudCBhbmQgaW5zaWRlIHRoZSBmdW5jdGlvbiB5b3UgbmVlZCB0byBjYWxsIGBhanYuYWRkS2V5d29yZGAgdG8gYWRkIHlvdXIgY3VzdG9tIGtleXdvcmQgCi0gYGJlYXV0aWZ5RXJyb3JzYC0gQm9vbGVhbiB0aGF0IGluZGljYXRlcyBpZiB0byBiZWF1dGlmeSB0aGUgZXJyb3JzLCBpbiB0aGlzIGNhc2UgaXQgd2lsbCBjcmVhdGUgYSBzdHJpbmcgZnJvbSB0aGUgQWp2IGVycm9yLgogICAgLSBFeGFtcGxlczoKICAgICAgICAtIGBxdWVyeS9saW1pdCBzaG91bGQgYmUgPD0gMTAwYCAtIHF1ZXJ5IHBhcmFtCiAgICAgICAgLSBgcGF0aC9wZXRJZCBzaG91bGQgTk9UIGJlIHNob3J0ZXIgdGhhbiAzIGNoYXJhY3RlcnNgIC0gcGF0aCBwYXJhbSBub3QgaW4gZm9ybWF0CiAgICAgICAgLSBgYm9keS9bMF0udGVzdC5maWVsZDEgc2hvdWxkIGJlIHN0cmluZ2AgLSBJdGVtIGluIGFuIGFycmF5IGJvZHkKICAgICAgICAtIGBib2R5L3Rlc3Qgc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgJ2ZpZWxkMSdgIC0gbmVzdGVkIGZpZWxkCiAgICAgICAgLSBgYm9keSBzaG91bGQgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSAnbmFtZSdgIC0gTWlzc2luZyBmaWVsZCBpbiBib2R5CgogICAgWW91IGNhbiBzZWUgbW9yZSBleGFtcGxlcyBpbiB0aGUgW3Rlc3RzXSguL3Rlc3QpLgoKLSBgZmlyc3RFcnJvcmAgLSBCb29sZWFuIHRoYXQgaW5kaWNhdGVzIGlmIHRvIHJldHVybiBvbmx5IHRoZSBmaXJzdCBlcnJvci4KLSBgbWFrZU9wdGlvbmFsQXR0cmlidXRlc051bGxhYmxlYCAtIEJvb2xlYW4gdGhhdCBmb3JjZXMgcHJlcHJvY2Vzc2luZyBvZiBTd2FnZ2VyIHNjaGVtYSB0byBpbmNsdWRlICdudWxsJyBhcyBwb3NzaWJsZSB0eXBlIGZvciBhbGwgbm9uLXJlcXVpcmVkIHByb3BlcnRpZXMuIE1haW4gdXNlLWNhc2UgZm9yIHRoaXMgaXMgdG8gZW5zdXJlIGNvcnJlY3QgaGFuZGxpbmcgb2YgbnVsbCB2YWx1ZXMgd2hlbiBBanYgdHlwZSBjb2VyY2lvbiBpcyBlbmFibGVkCi0gYGFqdkNvbmZpZ0JvZHlgIC0gT2JqZWN0IHRoYXQgd2lsbCBiZSBwYXNzZWQgYXMgY29uZmlnIHRvIG5ldyBBanYgaW5zdGFuY2Ugd2hpY2ggd2lsbCBiZSB1c2VkIGZvciB2YWxpZGF0aW5nIHJlcXVlc3QgYm9keS4gQ2FuIGJlIHVzZWZ1bCB0byBlLiBnLiBlbmFibGUgdHlwZSBjb2VyY2lvbiAodG8gYXV0b21hdGljYWxseSBjb252ZXJ0IHN0cmluZ3MgdG8gbnVtYmVycyBldGMpLiBTZWUgQWp2IGRvY3VtZW50YXRpb24gZm9yIHN1cHBvcnRlZCB2YWx1ZXMuCi0gYGFqdkNvbmZpZ1BhcmFtc2AgLSBPYmplY3QgdGhhdCB3aWxsIGJlIHBhc3NlZCBhcyBjb25maWcgdG8gbmV3IEFqdiBpbnN0YW5jZSB3aGljaCB3aWxsIGJlIHVzZWQgZm9yIHZhbGlkYXRpbmcgcmVxdWVzdCBib2R5LiBTZWUgQWp2IGRvY3VtZW50YXRpb24gZm9yIHN1cHBvcnRlZCB2YWx1ZXMuCi0gYGNvbnRlbnRUeXBlVmFsaWRhdGlvbmAgLSBCb29sZWFuIHRoYXQgaW5kaWNhdGVzIGlmIHRvIHBlcmZvcm0gY29udGVudCB0eXBlIHZhbGlkYXRpb24gaW4gY2FzZSBgY29uc3VtZWAgZmllbGQgaXMgc3BlY2lmaWVkIGFuZCB0aGUgcmVxdWVzdCBib2R5IGlzIG5vdCBlbXB0eS4KLSBgZXhwZWN0Rm9ybUZpZWxkc0luQm9keWAgLSBCb29sZWFuIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgZm9ybSBmaWVsZHMgb2Ygbm9uLWZpbGUgdHlwZSB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIHNjaGVtYSBzaG91bGQgYmUgdmFsaWRhdGVkIGFnYWluc3QgcmVxdWVzdCBib2R5IChlLiBnLiBNdWx0ZXIgaXMgY29weWluZyB0ZXh0IGZvcm0gZmllbGRzIHRvIGJvZHkpCi0gYGVycm9yRm9ybWF0dGVyYCAtIG9wdGlvbmFsIGN1c3RvbSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgaW52b2tlZCB0byBjcmVhdGUgYSB2YWxpZGF0aW9uIGVycm9yIHRoYXQgd2lsbCBiZSB0aHJvd24gaWYgQWp2IHZhbGlkYXRpb24gZmFpbHMuIEZ1bmN0aW9uIHNob3VsZCBhY2NlcHQgdHdvIHBhcmFtZXRlcnM6IGAoZXJyb3JzLCBtaWRkbGV3YXJlT3B0aW9ucylgIGFuZCByZXR1cm4gYW4gZXJyb3IgdGhhdCB3aWxsIGJlIHRocm93bi4KCiMjIFVzYWdlIEV4YW1wbGUKIyMjIEV4cHJlc3MKYGBganMKc3dhZ2dlclZhbGlkYXRpb24uaW5pdCgndGVzdC91bml0LXRlc3RzL2lucHV0LXZhbGlkYXRpb24vcGV0LXN0b3JlLXN3YWdnZXIueWFtbCcpOwpjb25zdCBhcHAgPSBleHByZXNzKCk7CmFwcC51c2UoYm9keVBhcnNlci5qc29uKCkpOwphcHAuZ2V0KCcvcGV0cycsIHN3YWdnZXJWYWxpZGF0aW9uLnZhbGlkYXRlLCAocmVxLCByZXMsIG5leHQpID0+IHsKICAgIHJldHVybiByZXMuanNvbih7IHJlc3VsdDogJ09LJyB9KTsKfSk7CmFwcC5wb3N0KCcvcGV0cycsIHN3YWdnZXJWYWxpZGF0aW9uLnZhbGlkYXRlLCAocmVxLCByZXMsIG5leHQpID0+IHsKICAgIHJldHVybiByZXMuanNvbih7IHJlc3VsdDogJ09LJyB9KTsKfSk7CmFwcC5nZXQoJy9wZXRzLzpwZXRJZCcsIHN3YWdnZXJWYWxpZGF0aW9uLnZhbGlkYXRlLCAocmVxLCByZXMsIG5leHQpID0+IHsKICAgIHJldHVybiByZXMuanNvbih7IHJlc3VsdDogJ09LJyB9KTsKfSk7CgphcHAudXNlKChlcnIsIHJlcSwgcmVzLCBuZXh0KSA9PiB7CiAgICBpZiAoZXJyIGluc3RhbmNlb2Ygc3dhZ2dlclZhbGlkYXRpb24uSW5wdXRWYWxpZGF0aW9uRXJyb3IpIHsKICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oeyBtb3JlX2luZm86IEpTT04uc3RyaW5naWZ5KGVyci5lcnJvcnMpIH0pOwogICAgfQp9KTsKCmNvbnN0IHNlcnZlciA9IGFwcC5saXN0ZW4oc2VydmVyUG9ydCwgKCkgPT4ge30pOwpgYGAKCiMjIyBLb2EKYGBganMKJ3VzZSBzdHJpY3QnOwpjb25zdCBLb2EgPSByZXF1aXJlKCdrb2EnKTsKY29uc3QgUm91dGVyID0gcmVxdWlyZSgna29hLXJvdXRlcicpOwpjb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgna29hLWJvZHlwYXJzZXInKTsKY29uc3QgaW5wdXRWYWxpZGF0aW9uID0gcmVxdWlyZSgnb3BlbmFwaS12YWxpZGF0b3ItbWlkZGxld2FyZScpOwpjb25zdCBhcHAgPSBuZXcgS29hKCk7CmNvbnN0IHJvdXRlciA9IG5ldyBSb3V0ZXIoKTsKYXBwLnVzZShib2R5UGFyc2VyKCkpOwphcHAudXNlKHJvdXRlci5yb3V0ZXMoKSk7CmlucHV0VmFsaWRhdGlvbi5pbml0KCd0ZXN0L3BldC1zdG9yZS1zd2FnZ2VyLnlhbWwnLCB7IGZyYW1ld29yazogJ2tvYScgfSk7Cgpyb3V0ZXIuZ2V0KCcvcGV0cycsIGlucHV0VmFsaWRhdGlvbi52YWxpZGF0ZSwgYXN5bmMgKGN0eCwgbmV4dCkgPT4gewogICAgY3R4LnN0YXR1cyA9IDIwMDsKICAgIGN0eC5ib2R5ID0geyByZXN1bHQ6ICdPSycgfTsKfSk7CnJvdXRlci5wb3N0KCcvcGV0cycsIGlucHV0VmFsaWRhdGlvbi52YWxpZGF0ZSwgYXN5bmMgKGN0eCwgbmV4dCkgPT4gewogICAgY3R4LnN0YXR1cyA9IDIwMDsKICAgIGN0eC5ib2R5ID0geyByZXN1bHQ6ICdPSycgfTsKfSk7CnJvdXRlci5nZXQoJy9wZXRzLzpwZXRJZCcsIGlucHV0VmFsaWRhdGlvbi52YWxpZGF0ZSwgYXN5bmMgKGN0eCwgbmV4dCkgPT4gewogICAgY3R4LnN0YXR1cyA9IDIwMDsKICAgIGN0eC5ib2R5ID0geyByZXN1bHQ6ICdPSycgfTsKfSk7CnJvdXRlci5wdXQoJy9wZXRzJywgaW5wdXRWYWxpZGF0aW9uLnZhbGlkYXRlLCBhc3luYyAoY3R4LCBuZXh0KSA9PiB7CiAgICBjdHguc3RhdHVzID0gMjAwOwogICAgY3R4LmJvZHkgPSB7IHJlc3VsdDogJ09LJyB9Owp9KTsKCmFwcC51c2UoYXN5bmMgKGN0eCwgbmV4dCkgPT4gewogICAgdHJ5IHsKICAgICAgICByZXR1cm4gYXdhaXQgbmV4dCgpOwogICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIGlucHV0VmFsaWRhdGlvbi5JbnB1dFZhbGlkYXRpb25FcnJvcikgewogICAgICAgICAgICBjdHguc3RhdHVzID0gNDAwOwogICAgICAgICAgICBjdHguYm9keSA9IGVyci5lcnJvcnM7CiAgICAgICAgfQogICAgICAgIHRocm93IGVycjsKICAgIH0KfSkKYXBwLmxpc3Rlbihwcm9jZXNzLmVudi5QT1JUIHx8IDg4ODgsIGZ1bmN0aW9uICgpIHsKICAgIGNvbnNvbGUubG9nKCdsaXN0ZW5pbmcgb24nLCB0aGlzLmFkZHJlc3MoKSk7Cn0pOwpgYGAKCiMjIyBGYXN0aWZ5CmBgYGpzCid1c2Ugc3RyaWN0JzsKY29uc3QgZmFzdGlmeSA9IHJlcXVpcmUoJ2Zhc3RpZnknKTsKY29uc3QgaW5wdXRWYWxpZGF0aW9uID0gcmVxdWlyZSgnb3BlbmFwaS12YWxpZGF0b3ItbWlkZGxld2FyZScpOwoKYXN5bmMgZnVuY3Rpb24gZ2V0QXBwKCkgewogICAgaW5wdXRWYWxpZGF0aW9uLmluaXQoJ3Rlc3QvcGV0LXN0b3JlLXN3YWdnZXIueWFtbCcsIHsgCiAgICAgICAgZnJhbWV3b3JrOiAnZmFzdGlmeScKICAgIH0pOwogICAgY29uc3QgYXBwID0gZmFzdGlmeSh7IGxvZ2dlcjogdHJ1ZSB9KTsKCiAgICBhcHAucmVnaXN0ZXIoaW5wdXRWYWxpZGF0aW9uLnZhbGlkYXRlKHsKICAgICAgc2tpcGxpc3Q6IFsnXi9fbWV0cmljcyQnXQogICAgfSkpOwogICAgYXBwLnNldEVycm9ySGFuZGxlcihhc3luYyAoZXJyLCByZXEsIHJlcGx5KSA9PiB7CiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIGlucHV0VmFsaWRhdGlvbi5JbnB1dFZhbGlkYXRpb25FcnJvcikgewogICAgICAgICAgICAgcmV0dXJuIHJlcGx5LnN0YXR1cyg0MDApLnNlbmQoeyBtb3JlX2luZm86IEpTT04uc3RyaW5naWZ5KGVyci5lcnJvcnMpIH0pOwogICAgICAgIH0KCiAgICAgICAgcmVwbHkuc3RhdHVzKDUwMCk7CiAgICAgICAgcmVwbHkuc2VuZCgpOwogICAgfSk7CgogICAgYXBwLmdldCgnL3BldHMnLCAocmVxLCByZXBseSkgPT4gewogICAgICAgIHJlcGx5LnN0YXR1cygyMDQpLnNlbmQoKTsKICAgIH0pOwoKICAgIGF3YWl0IGFwcC5yZWFkeSgpOwogICAgcmV0dXJuIGFwcDsKfQpgYGAKCiMjIyBtdWx0aXBsZS1pbnN0YW5jZXMKYGBganMKY29uc3QgaW5wdXRWYWxpZGF0aW9uID0gcmVxdWlyZSgnb3BlbmFwaS12YWxpZGF0b3ItbWlkZGxld2FyZScpOwpjb25zdCB2YWxpZGF0b3JBID0gaW5wdXRWYWxpZGF0aW9uLmdldE5ld01pZGRsZXdhcmUoJ3Rlc3QvcGV0LXN0b3JlLXN3YWdnZXJBLnlhbWwnLCB7ZnJhbWV3b3JrOiAnZXhwcmVzcyd9KTsKY29uc3QgdmFsaWRhdG9yQiA9IGlucHV0VmFsaWRhdGlvbi5nZXROZXdNaWRkbGV3YXJlKCd0ZXN0L3BldC1zdG9yZS1zd2FnZ2VyQi55YW1sJywge2ZyYW1ld29yazogJ2V4cHJlc3MnfSk7CgphcHAuZ2V0KCcvcGV0cycsIHZhbGlkYXRvckEudmFsaWRhdGUsIChyZXEsIHJlcywgbmV4dCkgPT4gewogICAgcmV0dXJuIHJlcy5qc29uKHsgcmVzdWx0OiAnT0snIH0pOwp9KTsKCmFwcC5wb3N0KCcvcGV0cycsIHZhbGlkYXRvckIudmFsaWRhdGUsIChyZXEsIHJlcywgbmV4dCkgPT4gewogICAgcmV0dXJuIHJlcy5qc29uKHsgcmVzdWx0OiAnT0snIH0pOwp9KTsKCmBgYAojIyBJbXBvcnRhbnQgTm90ZXMKCiMjIyBTY2hlbWEgT2JqZWN0cwoKSXQgaXMgaW1wb3J0YW50IHRvIHNldCB0aGUgYHR5cGVgIHByb3BlcnR5IG9mIGFueSBbU2NoZW1hIE9iamVjdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCNzY2hlbWEtb2JqZWN0KSBleHBsaWNpdGx5IHRvIGBvYmplY3RgLiBBbHRob3VnaCBpdCBpc24ndCByZXF1aXJlZCBpbiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLCBpdCBpcyBuZWNlc3NhcnkgaW4gb3JkZXIgZm9yIFtBanZdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2FqdikgdG8gd29yayBjb3JyZWN0bHkuCgojIyMgTXVsdGlwYXJ0L2Zvcm0tZGF0YSAoZmlsZXMpIAoKTXVsdGlwYXJ0L2Zvcm0tZGF0YSAoZmlsZXMpIHN1cHBvcnQgaXMgYmFzZWQgb24gW2BleHByZXNzL211bHRlcmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9leHByZXNzanMvbXVsdGVyKS4KCiMjIyBGYXN0aWZ5IHN1cHBvcnQKCkZhc3RpZnkgc3VwcG9ydCByZXF1aXJlcyBgdXJpLWpzYCBkZXBlbmRlbmN5IHRvIGJlIGluc3RhbGxlZC4gTWFrZSBzdXJlIHRvIHJ1biBgbnBtIGluc3RhbGwgdXJpLWpzYC4KV2hlbiB1c2luZyB0aGlzIHBhY2thZ2UgYXMgYSBtaWRkbGV3YXJlIGZvciBmYXN0aWZ5LCB0aGUgdmFsaWRhdGlvbnMgZXJyb3JzIHdpbGwgYmUgdGhyb3duLgoKIyMjIEtvYSBzdXBwb3J0CgpXaGVuIHVzaW5nIHRoaXMgcGFja2FnZSBhcyBtaWRkbGV3YXJlIGZvciBrb2EsIHRoZSB2YWxpZGF0aW9ucyBlcnJvcnMgd2lsbCBiZSB0aHJvd24uCgojIyMgS29hIHBhY2thZ2VzCgpUaGlzIHBhY2thZ2Ugc3VwcG9ydHMgS29hIHNlcnZlcnMgdGhhdCB1c2UgW2Brb2Etcm91dGVyYF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uva29hLXJvdXRlciksIFtga29hLWJvZHlwYXJzZXJgXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9rb2EtYm9keXBhcnNlcikgYW5kIFtga29hLW11bHRlcmBdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2tvYS1tdWx0ZXIpLgoKIyMgS25vd24gSXNzdWVzIHdpdGggT3BlbkFQSSAzIAoKLSBJbmhlcml0YW5jZSB3aXRoIGEgZGlzY3JpbWluYXRvciBpcyBzdXBwb3J0ZWQgb25seSBpZiB0aGUgYW5jZXN0b3Igb2JqZWN0IGlzIHRoZSBkaXNjcmltaW5hdG9yLgotIFRoZSBkaXNjcmltaW5hdG9yIHN1cHBvcnQgaW4gdGhlIGluaGVyaXRhbmNlIGNoYWluIHN0b3BzIHdoZW4gZ2V0dGluZyB0byBhIGNoaWxkIHdpdGhvdXQgYSBkaXNjcmltaW5hdG9yIChhIGxlYWYgaW4gdGhlIGluaGVyaXRhbmNlIHRyZWUpLCBtZWFuaW5nIGEgY2hpbGQgd2l0aG91dCBhIGRpc2NyaW1pbmF0b3IgY2Fubm90IHBvaW50IHRvIGFub3RoZXIgY2hpbGQgd2l0aCBhIGRpc2NyaW1pbmF0b3IuCgojIyBSdW5uaW5nIFRlc3RzCgpUaGUgdGVzdHMgdXNlIG1vY2hhLCBpc3RhbmJ1bCBhbmQgbW9jaGF3ZXNvbWUuIFJ1biB0aGVtIHVzaW5nIHRoZSBub2RlIHRlc3Qgc2NyaXB0OgoKYGBgYmFzaApucG0gdGVzdApgYGAKCltucG0taW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L29wZW5hcGktdmFsaWRhdG9yLW1pZGRsZXdhcmUuc3ZnP3N0eWxlPWZsYXQKW25wbS11cmxdOiBodHRwczovL25wbWpzLm9yZy9wYWNrYWdlL29wZW5hcGktdmFsaWRhdG9yLW1pZGRsZXdhcmUKW2NvdmVyYWxscy1pbWFnZV06IGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi9QYXlVL29wZW5hcGktdmFsaWRhdG9yLW1pZGRsZXdhcmUvYmFkZ2Uuc3ZnP2JyYW5jaD1tYXN0ZXIKW2NvdmVyYWxscy11cmxdOiBodHRwczovL2NvdmVyYWxscy5pby9naXRodWIvUGF5VS9vcGVuYXBpLXZhbGlkYXRvci1taWRkbGV3YXJlP2JyYW5jaD1tYXN0ZXIKW2Rvd25sb2Fkcy1pbWFnZV06IGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vb3BlbmFwaS12YWxpZGF0b3ItbWlkZGxld2FyZS5zdmc/c3R5bGU9ZmxhdApbZG93bmxvYWRzLXVybF06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL29wZW5hcGktdmFsaWRhdG9yLW1pZGRsZXdhcmUuc3ZnCltsaWNlbnNlLWltYWdlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLUFwYWNoZV8yLjAtZ3JlZW4uc3ZnP3N0eWxlPWZsYXQKW2xpY2Vuc2UtdXJsXTogTElDRU5TRQpbc255ay1pbWFnZV06IGh0dHBzOi8vc255ay5pby90ZXN0L2dpdGh1Yi9QYXlVL29wZW5hcGktdmFsaWRhdG9yLW1pZGRsZXdhcmUvYmFkZ2Uuc3ZnP3RhcmdldEZpbGU9cGFja2FnZS5qc29uCltzbnlrLXVybF06IGh0dHBzOi8vc255ay5pby90ZXN0L2dpdGh1Yi9QYXlVL29wZW5hcGktdmFsaWRhdG9yLW1pZGRsZXdhcmU/dGFyZ2V0RmlsZT1wYWNrYWdlLmpzb24K readmeEtag: '"9c580833b662962db48b0e4df553ad32e2707add"' readmeLastModified: Thu, 24 Mar 2022 08:37:29 GMT repositoryId: 107256133 description: Input validation using Swagger (Open API) and ajv created: '2017-10-17T10:56:52Z' updated: '2025-08-27T13:21:55Z' language: JavaScript archived: false stars: 144 watchers: 30 forks: 50 owner: PayU logo: https://avatars.githubusercontent.com/u/10152107?v=4 license: Apache-2.0 repoEtag: '"ba986b052dbdcc3a8f648065d2bfeb6ae56a9670e0834936d1ebc0a6e057c870"' repoLastModified: Wed, 27 Aug 2025 13:21:55 GMT foundInMaster: true id: a412c258fff439cbb6458a2a341038f9 v3_1: true - source: https://openapi.tools/ name: committee category: Data Validators repository: https://github.com/interagent/committee language: Ruby source_description: >- Validation middleware for Rack server. This gem validates request and response using an OpenAPI Description. And convert parameter string to specific Ruby object (e.g. convert datetime string to DateTime class). v2: true v3: true repositoryMetadata: base64Readme: >- IyBDb21taXR0ZWUgIFshW2NpXShodHRwczovL2dpdGh1Yi5jb20vaW50ZXJhZ2VudC9jb21taXR0ZWUvYWN0aW9ucy93b3JrZmxvd3MvY2kueWFtbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vaW50ZXJhZ2VudC9jb21taXR0ZWUvYWN0aW9ucy93b3JrZmxvd3MvY2kueWFtbCkgWyFbR2VtIFZlcnNpb25dKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9yYi9jb21taXR0ZWUuc3ZnKV0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL3JiL2NvbW1pdHRlZSkKCkEgY29sbGVjdGlvbiBvZiBtaWRkbGV3YXJlIHRvIGhlbHAgYnVpbGQgc2VydmljZXMgd2l0aCBKU09OIFNjaGVtYSwgT3BlbkFQSSAyLCBPcGVuQVBJIDMuCgojIyBTdXBwb3J0ZWQgUnVieSBWZXJzaW9ucwoKQ29tbWl0dGVlIGlzIHRlc3RlZCBvbiB0aGUgZm9sbG93aW5nIE1SSSB2ZXJzaW9uczoKCi0gMi43Ci0gMy4wCi0gMy4xCi0gMy4yCi0gMy4zCi0gMy40CgojIyBDb21taXR0ZWU6Ok1pZGRsZXdhcmU6OlJlcXVlc3RWYWxpZGF0aW9uCgpUaGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IGFsbCBvZiBIeXBlci1TY2hlbWEsIE9wZW5BUEkgMiwgYW5kIE9wZW5BUEkgMy4KCmBgYCBydWJ5CnVzZSBDb21taXR0ZWU6Ok1pZGRsZXdhcmU6OlJlcXVlc3RWYWxpZGF0aW9uLCBzY2hlbWFfcGF0aDogJ2RvY3Mvc2NoZW1hLmpzb24nLCBjb2VyY2VfZGF0ZV90aW1lczogdHJ1ZQpgYGAKClRoaXMgcGllY2Ugb2YgbWlkZGxld2FyZSB2YWxpZGF0ZXMgdGhlIHBhcmFtZXRlcnMgb2YgaW5jb21pbmcgcmVxdWVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhleSdyZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjb25zdHJhaW50cyBpbXBvc2VkIGJ5IGEgcGFydGljdWxhciBzY2hlbWEuCgojIyMgQ29uZmlndXJhdGlvbiBPcHRpb25zCgp8IG5hbWUgfCBIeXBlci1TY2hlbWEgfCBPcGVuQVBJIDMgfCBEZXNjcmlwdGlvbiB8CnwtLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tOnwtLS0tLS0tLS0tLS06fCA6LS0tLS0tLS0tLS0tIHwKfGFsbG93X2JsYW5rX3N0cnVjdHVyZXMgfCBmYWxzZSB8IGFsd2F5cyB0cnVlIHwgQWxsb3cgRW1wdHkgUmVzcG9uc2UgQm9keS4gc3VwcG9ydGVkIG9uIEh5cGVyLXNjaGVtYSBwYXJzZXIgYnV0IHdpbGwgZGVmYXVsdCB0byB0cnVlIGluIG5leHQgbWFqb3IgdmVyc2lvbi4gfAp8YWxsb3dfZm9ybV9wYXJhbXMgfCB0cnVlIHwgdHJ1ZSB8IFNwZWNpZmllcyB0aGF0IGlucHV0IGNhbiBhbHRlcm5hdGl2ZWx5IGJlIHNwZWNpZmllZCBhcyBgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBwYXJhbWV0ZXJzIHdoZW4gcG9zc2libGUuIFRoaXMgd29uJ3Qgd29yayBmb3IgbW9yZSBjb21wbGV4IHNjaGVtYSB2YWxpZGF0aW9ucy4gfAp8YWxsb3dfZ2V0X2JvZHkgfCB0cnVlIHwgZmFsc2UgfCBBbGxvdyBHRVQgcmVxdWVzdCBib2R5LCB3aGljaCBtZXJnZSB0byByZXF1ZXN0IHBhcmFtZXRlci4gU2VlICgjMjExKSB8CnxhbGxvd19xdWVyeV9wYXJhbXMgfCB0cnVlIHwgdHJ1ZSB8IFNwZWNpZmllcyB0aGF0IHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXJzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uIHdoZW4gZG9pbmcgdmFsaWRhdGlvbi4gfAp8YWxsb3dfbm9uX2dldF9xdWVyeV9wYXJhbXMgfCBmYWxzZSB8IGZhbHNlIHwgQWxsb3cgR0VUIGFuZCBub24tR0VUIHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXJzIHRvIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIGRvaW5nIHZhbGlkYXRpb24uIHwKfGNoZWNrX2NvbnRlbnRfdHlwZSB8IHRydWUgfCB0cnVlIHwgU3BlY2lmaWVzIHRoYXQgYENvbnRlbnQtVHlwZWAgc2hvdWxkIGJlIHZlcmlmaWVkIGFjY29yZGluZyB0byBKU09OIEh5cGVyLXNjaGVtYSBvciBPcGVuQVBJIDMgZGVmaW5pdGlvbi4gfAp8Y2hlY2tfaGVhZGVyIHwgdHJ1ZSB8IHRydWUgfCBDaGVjayBoZWFkZXIgZGF0YSB1c2luZyBKU09OIEh5cGVyLXNjaGVtYSBvciBPcGVuQVBJIDMgZGVmaW5pdGlvbi4gfAp8Y29lcmNlX2RhdGVfdGltZXMgfCBmYWxzZSB8IHRydWUgfCBDb252ZXJ0IHRoZSBzdHJpbmcgd2l0aCBgImZvcm1hdCI6ICJkYXRlLXRpbWUiYCBwYXJhbWV0ZXIgdG8gRGF0ZVRpbWUgb2JqZWN0LiB8Cnxjb2VyY2VfZm9ybV9wYXJhbXN8IGZhbHNlIHwgdHJ1ZSB8IFRyaWVzIHRvIGNvbnZlcnQgUE9TVCBkYXRhIGVuY29kZWQgaW50byBhbiBgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBib2R5ICh3aGVyZSB2YWx1ZXMgYXJlIGFsbCBzdHJpbmdzKSBpbnRvIGNvbmNyZXRlIHR5cGVzIHJlcXVpcmVkIGJ5IHRoZSBzY2hlbWEuIFRoaXMgd29ya3MgZm9yIGBudWxsYCAoZW1wdHkgdmFsdWUpLCBgaW50ZWdlcmAgKG51bWVyaWMgdmFsdWUgd2l0aG91dCBkZWNpbWFscyksIGBudW1iZXJgIChudW1lcmljIHZhbHVlKSBhbmQgYGJvb2xlYW5gICgidHJ1ZSIgaXMgY29udmVydGVkIHRvIGB0cnVlYCBhbmQgImZhbHNlIiB0byBgZmFsc2VgKS4gSWYgY29lcmNpb24gaXMgbm90IHBvc3NpYmxlLCB0aGUgb3JpZ2luYWwgdmFsdWUgaXMgcGFzc2VkIHVuY2hhbmdlZCB0byBzY2hlbWEgdmFsaWRhdGlvbi4gfAp8Y29lcmNlX3BhdGhfcGFyYW1zfCBmYWxzZSB8IHRydWUgfCBUaGUgc2FtZSBhcyBgY29lcmNlX2Zvcm1fcGFyYW1zYCwgYnV0IHRyaWVzIHRvIGNvZXJjZSBwYXJhbWV0ZXJzIGVuY29kZWQgaW4gYSByZXF1ZXN0J3MgVVJMIHBhdGguIHwKfGNvZXJjZV9xdWVyeV9wYXJhbXN8IGZhbHNlIHwgdHJ1ZSAgfCBUaGUgc2FtZSBhcyBgY29lcmNlX2Zvcm1fcGFyYW1zYCwgYnV0IHRyaWVzIHRvIGNvZXJjZSBgR0VUYCBwYXJhbWV0ZXJzIGVuY29kZWQgaW4gYSByZXF1ZXN0J3MgcXVlcnkgc3RyaW5nLiB8Cnxjb2VyY2VfcmVjdXJzaXZlfCBmYWxzZSB8IGFsd2F5cyB0cnVlIHwgQ29lcmNlIGRhdGEgaW4gYXJyYXlzIGFuZCBvdGhlciBuZXN0ZWQgb2JqZWN0cyB8Cnxjb2VyY2VfcmVzcG9uc2VfdmFsdWVzfCBmYWxzZSB8IGZhbHNlIHwgRW5hYmxlIHR5cGUgY29lcmNpb24gZm9yIHJlc3BvbnNlIGJvZHkgdmFsaWRhdGlvbi4gV2hlbiBgdHJ1ZWAsIGFsbG93cyBzdHJpbmcgdmFsdWVzIGxpa2UgYCI3MjYiYCB0byBiZSBjb2VyY2VkIHRvIG51bWJlcnMuIFdoZW4gYGZhbHNlYCAoZGVmYXVsdCksIHJlc3BvbnNlIGJvZGllcyBtdXN0IG1hdGNoIGV4YWN0IHR5cGVzIGRlZmluZWQgaW4gdGhlIHNjaGVtYS4gfAp8b3B0aW1pc3RpY19qc29ufCBmYWxzZSB8IGZhbHNlIHwgV2lsbCBhdHRlbXB0IHRvIHBhcnNlIEpTT04gaW4gdGhlIHJlcXVlc3QgYm9keSBldmVuIHdpdGhvdXQgYSBgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uYCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIG90aGVyIG9wdGlvbnMuIHwKfHJhaXNlfCBmYWxzZSB8IGZhbHNlIHwgUmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yIGluc3RlYWQgb2YgcmVzcG9uZGluZyB3aXRoIGEgZ2VuZXJpYyBlcnJvciBib2R5LiB8CnxzdHJpY3R8IGZhbHNlIHwgZmFsc2UgfCBQdXRzIHRoZSBtaWRkbGV3YXJlIGludG8gc3RyaWN0IG1vZGUsIG1lYW5pbmcgdGhhdCBwYXRocyB3aGljaCBhcmUgbm90IGRlZmluZWQgaW4gdGhlIHNjaGVtYSB3aWxsIGJlIHJlc3BvbmRlZCB0byB3aXRoIGEgNDA0IGluc3RlYWQgb2YgYmVpbmcgcnVuLiB8CnxzdHJpY3RfcXVlcnlfcGFyYW1zfCBub3Qgc3VwcG9ydGVkIHwgZmFsc2UgfCBSZWplY3RzIHJlcXVlc3RzIHdpdGggcXVlcnkgcGFyYW1ldGVycyBub3QgZGVmaW5lZCBpbiB0aGUgc2NoZW1hLiBXaGVuIGVuYWJsZWQsIGFueSBxdWVyeSBwYXJhbWV0ZXIgbm90IGV4cGxpY2l0bHkgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIHdpbGwgcmVzdWx0IGluIGEgNDAwIGVycm9yLiB8CnxzdHJpY3RfcmVmZXJlbmNlX3ZhbGlkYXRpb258IGFsd2F5cyBmYWxzZSB8IGZhbHNlIHwgUmFpc2VzIGFuIGV4Y2VwdGlvbiAoYE9wZW5BUElQYXJzZXI6Ok1pc3NpbmdSZWZlcmVuY2VFcnJvcmApIG9uIG1pZGRsZXdhcmUgbG9hZCBpZiB0aGUgcHJvdmlkZWQgc2NoZW1hIGZpbGUgY29udGFpbnMgdW5yZXNvbHZhYmxlIHJlZmVyZW5jZXMgKGAkcmVmOiIjL3NvbWV0aGluZy9ub3QvaGVyZSJgKS4gTm90IHN1cHBvcnRlZCBvbiBIeXBlci1zY2hlbWEgcGFyc2VyLiBEZWZhdWx0cyB0byBgZmFsc2VgIG9uIE9wZW5BUEkzIGJ1dCB3aWxsIGRlZmF1bHQgdG8gYHRydWVgIGluIG5leHQgbWFqb3IgdmVyc2lvbi4gfAp8aWdub3JlX2Vycm9yfCBmYWxzZSB8IGZhbHNlIHwgVmFsaWRhdGUgYW5kIGlnbm9yZSByZXN1bHQgZXZlbiBpZiB2YWxpZGF0aW9uIGlzIGVycm9yLiBTbyBhbHdheXMgcmV0dXJuIG9yaWdpbmFsIGRhdGEuIHwKCk5vbi1ib29sZWFuIG9wdGlvbnM6Cgp8IG5hbWUgfCBhbGxvd2VkIG9iamVjdCB0eXBlIHwgSHlwZXItU2NoZW1hIHwgT3BlbkFQSSAzIHwgRGVzY3JpcHRpb24gfAp8LS0tLS0tLS0tLS06fC0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tOnwtLS0tLS0tLS0tLS06fCA6LS0tLS0tLS0tLS0tIHwKfGVycm9yX2NsYXNzfCBTdGFuZGFyZEVycm9yIHwgc3VwcG9ydGVkIHwgc3VwcG9ydGVkIHwgQ2hhbmdlIHZhbGlkYXRpb24gZXJyb3JzIGZyb20gYENvbW1pdHRlZTo6VmFsaWRhdGlvbkVycm9yYCkuIHwKfHByZWZpeHwgU3RyaW5nIHwgc3VwcG9ydGVkIHwgc3VwcG9ydGVkIHwgTW91bnRzIHRoZSBtaWRkbGV3YXJlIHRvIHJlc3BvbmQgYXQgYSBjb25maWd1cmVkIHByZWZpeC4gKGUuZy4gcHJlZml4IGlzICcvdjEnIGFuZCByZXF1ZXN0IHBhdGggaXMgJy92MS90ZXN0JyB1c2UgJy90ZXN0JyBkZWZpbml0aW9uKS4gfAp8c2NoZW1hX3BhdGh8IFN0cmluZyB8IHN1cHBvcnRlZCB8IHN1cHBvcnRlZCB8IERlZmluZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBzY2hlbWEgZmlsZSB0byB1c2UgZm9yIHZhbGlkYXRpb24uIHwKfGVycm9yX2hhbmRsZXJ8IFByb2MgT2JqZWN0IHwgc3VwcG9ydGVkIHwgc3VwcG9ydGVkIHwgQSBwcm9jIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdoZW4gZXJyb3Igb2NjdXJzLiBUYWtlIGFuIEVycm9yIGluc3RhbmNlIGFzIGZpcnN0IGFyZ3VtZW50LCBhbmQgcmVxdWVzdC5lbnYgYXMgc2Vjb25kIGFyZ3VtZW50LiAoZS5nLiBgLT4gKGV4LCBlbnYpIHsgUmF2ZW4uY2FwdHVyZV9leGNlcHRpb24oZXgsIGV4dHJhOiB7IHJhY2tfZW52OiBlbnYgfSkgfWApIHwKfGFjY2VwdF9yZXF1ZXN0X2ZpbHRlciAgfCBQcm9jIE9iamVjdCB8IHN1cHBvcnRlZCB8IHN1cHBvcnRlZCB8IEEgcHJvYyB0aGF0IGFjY2VwdHMgYSBSZXF1ZXN0IGFuZCByZXR1cm5zIGEgYm9vbGVhbi4gSXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gdmFsaWRhdGUgdGhlIGN1cnJlbnQgcmVxdWVzdCwgb3Igbm90LiAoZS5nLiBgLT4gKHJlcXVlc3QpIHsgcmVxdWVzdC5wYXRoLnN0YXJ0X3dpdGg/KCcvc29tZXRoaW5nJykgfWApIHwKfHBhcmFtc19rZXl8IFN0cmluZyB8IHN1cHBvcnRlZCB8IHN1cHBvcnRlZCB8IFNhdmUgY2hlY2tlZCBhbmQgbWVyZ2VkIHBhcmFtZXRlciB2YWx1ZSB0byByZXF1ZXN0LmVudiB1c2luZyB0aGlzIGtleS4gRGVmYXVsdCB2YWx1ZSBpcyBgY29tbWl0dGVlLnBhcmFtc2AgfAp8aGVhZGVyc19rZXl8IFN0cmluZyB8IHN1cHBvcnRlZCB8IHN1cHBvcnRlZCB8IFNhdmUgY2hlY2tlZCBoZWFkZXIgdmFsdWUgdG8gcmVxdWVzdC5lbnYgdXNpbmcgdGhpcyBrZXkuIERlZmF1bHQgdmFsdWUgaXMgYGNvbW1pdHRlZS5oZWFkZXJzYCB8CnxxdWVyeV9oYXNoX2tleXwgU3RyaW5nIHwgc3VwcG9ydGVkIHwgc3VwcG9ydGVkIHwgU2F2ZSBjaGVja2VkIHF1ZXJ5IHBhcmFtZXRlciB2YWx1ZSB0byByZXF1ZXN0LmVudiB1c2luZyB0aGlzIGtleS4gRGVmYXVsdCB2YWx1ZSBpcyBgcmFjay5yZXF1ZXN0LnF1ZXJ5X2hhc2hgIGJ1dCB3ZSB3aWxsIGNoYW5nZSAgYGNvbW1pdHRlZS5xdWVyeV9oYXNoYCBpbiBuZXh0IHZlcnNpb24gfAp8cGF0aF9oYXNoX2tleXwgU3RyaW5nIHwgc3VwcG9ydGVkIHwgc3VwcG9ydGVkIHwgU2F2ZSBjaGVja2VkIHBhdGggcGFyYW1ldGVyIHZhbHVlIHRvIHJlcXVlc3QuZW52IHVzaW5nIHRoaXMga2V5LiBEZWZhdWx0IHZhbHVlIGlzIGBjb21taXR0ZWUucGF0aF9oYXNoYCB8CnxyZXF1ZXN0X2JvZHlfaGFzaF9rZXl8IFN0cmluZyB8IHN1cHBvcnRlZCB8IHN1cHBvcnRlZCB8IFNhdmUgY2hlY2tlZCByZXF1ZXN0IGJvZHkgcGFyYW1ldGVyIChqc29uLCBmb3JtKSB2YWx1ZSB0byByZXF1ZXN0LmVudiB1c2luZyB0aGlzIGtleS4gRGVmYXVsdCB2YWx1ZSBpcyBgY29tbWl0dGVlLnJlcXVlc3RfYm9keV9oYXNoYCB8CgoKTm90ZSB0aGF0IEh5cGVyLVNjaGVtYSBhbmQgT3BlbkFQSSAyIGdldCB0aGUgc2FtZSBkZWZhdWx0cyBmb3Igb3B0aW9ucy4KClNvbWUgZXhhbXBsZXMgb2YgdXNlOgoKYGBgIGJhc2gKIyBtaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcgokIGN1cmwgLVggUE9TVCBodHRwOi8vbG9jYWxob3N0OjkyOTIvYWNjb3VudC9hcHAtdHJhbnNmZXJzIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIC1kICd7ImFwcCI6Imhlcm9rdS1hcGkifScKeyJpZCI6ImJhZF9yZXF1ZXN0IiwibWVzc2FnZSI6IiMvcGF0aHMvfjFhY2NvdW50fjFhcHAtdHJhbnNmZXJzL3Bvc3QvcmVxdWVzdEJvZHkvY29udGVudC9hcHBsaWNhdGlvbn4xanNvbi9zY2hlbWEgbWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXJzOiByZWNpcGllbnQifQoKIyBtaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlciAoc2hvdWxkIGhhdmUgJnF1ZXJ5PS4uLikKJCBjdXJsIC1YIEdFVCBodHRwOi8vbG9jYWxob3N0OjkyOTIvc2VhcmNoP2NhdGVnb3J5PWFsbAp7ImlkIjoiYmFkX3JlcXVlc3QiLCJtZXNzYWdlIjoiIy9wYXRocy9+MXNlYXJjaC9nZXQgbWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXJzOiBxdWVyeSJ9CgojIGNvbnRhaW5zIGFuIHVua25vd24gcGFyYW1ldGVyCiQgY3VybCAtWCBQT1NUIGh0dHA6Ly9sb2NhbGhvc3Q6OTI5Mi9hY2NvdW50L2FwcC10cmFuc2ZlcnMgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgLWQgJ3siYXBwIjoiaGVyb2t1LWFwaSIsInJlY2lwaWVudCI6ImFwaUBoZXJva3UuY29tIiwic2VuZGVyIjoiYXBpQGhlcm9rdS5jb20ifScKeyJpZCI6ImJhZF9yZXF1ZXN0IiwibWVzc2FnZSI6IiMvcGF0aHMvfjFhY2NvdW50fjFhcHAtdHJhbnNmZXJzL3Bvc3QvcmVxdWVzdEJvZHkvY29udGVudC9hcHBsaWNhdGlvbn4xanNvbi9zY2hlbWEgZG9lcyBub3QgZGVmaW5lIHByb3BlcnRpZXM6IHNlbmRlciJ9CgojIGludmFsaWQgdHlwZQokIGN1cmwgLVggUE9TVCBodHRwOi8vbG9jYWxob3N0OjkyOTIvYWNjb3VudC9hcHAtdHJhbnNmZXJzIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIC1kICd7ImFwcCI6Imhlcm9rdS1hcGkiLCJyZWNpcGllbnQiOjd9Jwp7ImlkIjoiYmFkX3JlcXVlc3QiLCJtZXNzYWdlIjoiIy9wYXRocy9+MWFjY291bnR+MWFwcC10cmFuc2ZlcnMvcG9zdC9yZXF1ZXN0Qm9keS9jb250ZW50L2FwcGxpY2F0aW9ufjFqc29uL3NjaGVtYS9wcm9wZXJ0aWVzL3JlY2lwaWVudCBleHBlY3RlZCBzdHJpbmcsIGJ1dCByZWNlaXZlZCBJbnRlZ2VyOiA3In0KCiMgaW52YWxpZCBmb3JtYXQgKHN1cHBvcnRzIGRhdGUtdGltZSwgZW1haWwsIHV1aWQpCiQgY3VybCAtWCBQT1NUIGh0dHA6Ly9sb2NhbGhvc3Q6OTI5Mi9hY2NvdW50L2FwcC10cmFuc2ZlcnMgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgLWQgJ3siYXBwIjoiaGVyb2t1LWFwaSIsInJlY2lwaWVudCI6Im1hdHoifScKeyJpZCI6ImJhZF9yZXF1ZXN0IiwibWVzc2FnZSI6IiMvcGF0aHMvfjFhY2NvdW50fjFhcHAtdHJhbnNmZXJzL3Bvc3QvcmVxdWVzdEJvZHkvY29udGVudC9hcHBsaWNhdGlvbn4xanNvbi9zY2hlbWEvcHJvcGVydGllcy9yZWNpcGllbnQgZW1haWwgYWRkcmVzcyBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggdmFsdWU6IG1hdHoifQoKIyBpbnZhbGlkIHBhdHRlcm4KJCBjdXJsIC1YIFBPU1QgaHR0cDovL2xvY2FsaG9zdDo5MjkyL2FwcHMgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgLWQgJ3sibmFtZSI6IiQjJSJ9Jwp7ImlkIjoiYmFkX3JlcXVlc3QiLCJtZXNzYWdlIjoiIy9wYXRocy9+MWFwcHMvcG9zdC9yZXF1ZXN0Qm9keS9jb250ZW50L2FwcGxpY2F0aW9ufjFqc29uL3NjaGVtYS9wcm9wZXJ0aWVzL25hbWUgcGF0dGVybiBeW2Etel1bYS16MC05LV17Myw1MH0kIGRvZXMgbm90IG1hdGNoIHZhbHVlOiAkIyUifQpgYGAKCiMjIENvbW1pdHRlZTo6TWlkZGxld2FyZTo6U3R1YgoKKipOb3RlOioqIFRoaXMgZmVhdHVyZSBpcyBub3QgeWV0IGF2YWlsYWJsZSBmb3IgT3BlbkFQSSAzLgoKYGBgIHJ1YnkKdXNlIENvbW1pdHRlZTo6TWlkZGxld2FyZTo6U3R1Yiwgc2NoZW1hX3BhdGg6ICdkb2NzL3NjaGVtYS5qc29uJwpgYGAKClRoaXMgcGllY2Ugb2YgbWlkZGxld2FyZSBpbnRlcmNlcHRzIGFueSByb3V0ZXMgdGhhdCBhcmUgaW4gdGhlIEpTT04gU2NoZW1hLCB0aGVuIGJ1aWxkcyBhbmQgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSByZXNwb25zZSBmb3IgdGhlbS4KCmBgYCBiYXNoCiQgY3VybCAtWCBHRVQgaHR0cDovL2xvY2FsaG9zdDo5MjkyL2FwcHMKWwogIHsKICAgICJhcmNoaXZlZF9hdCI6IjIwMTItMDEtMDFUMTI6MDA6MDBaIiwKICAgICJidWlsZHBhY2tfcHJvdmlkZWRfZGVzY3JpcHRpb24iOiJSdWJ5L1JhY2siLAogICAgImNyZWF0ZWRfYXQiOiIyMDEyLTAxLTAxVDEyOjAwOjAwWiIsCiAgICAiZ2l0X3VybCI6ImdpdEBoZXJva3UuY29tL2V4YW1wbGUuZ2l0IiwKICAgICJpZCI6IjAxMjM0NTY3LTg5YWItY2RlZi0wMTIzLTQ1Njc4OWFiY2RlZiIsCiAgICAibWFpbnRlbmFuY2UiOmZhbHNlLAogICAgIm5hbWUiOiJleGFtcGxlIiwKICAgICJvd25lciI6WwogICAgICB7CiAgICAgICAgImVtYWlsIjoidXNlcm5hbWVAZXhhbXBsZS5jb20iLAogICAgICAgICJpZCI6IjAxMjM0NTY3LTg5YWItY2RlZi0wMTIzLTQ1Njc4OWFiY2RlZiIKICAgICAgfQogICAgXSwKICAgICJyZWdpb24iOlsKICAgICAgewogICAgICAgICJpZCI6IjAxMjM0NTY3LTg5YWItY2RlZi0wMTIzLTQ1Njc4OWFiY2RlZiIsCiAgICAgICAgIm5hbWUiOiJ1cyIKICAgICAgfQogICAgXSwKICAgICJyZWxlYXNlZF9hdCI6IjIwMTItMDEtMDFUMTI6MDA6MDBaIiwKICAgICJyZXBvX3NpemUiOjAsCiAgICAic2x1Z19zaXplIjowLAogICAgInN0YWNrIjpbCiAgICAgIHsKICAgICAgICAiaWQiOiIwMTIzNDU2Ny04OWFiLWNkZWYtMDEyMy00NTY3ODlhYmNkZWYiLAogICAgICAgICJuYW1lIjoiY2VkYXIiCiAgICAgIH0KICAgIF0sCiAgICAidXBkYXRlZF9hdCI6IjIwMTItMDEtMDFUMTI6MDA6MDBaIiwKICAgICJ3ZWJfdXJsIjoiaHR0cDovL2V4YW1wbGUuaGVyb2t1YXBwLmNvbSIKICB9Cl0KYGBgCgojIyMgY29tbWl0dGVlLXN0dWIKCkEgYnVuZGxlZCBleGVjdXRhYmxlIGlzIGFsc28gYXZhaWxhYmxlIHRvIGVhc2lseSBzdGFydCB1cCBhIHNlcnZlciB0aGF0IHdpbGwgc2VydmUgdGhlIHN0dWIgZm9yIHNvbWUgcGFydGljdWxhciBKU09OIFNjaGVtYSBmaWxlOgoKYGBgIGJhc2gKY29tbWl0dGVlLXN0dWIgLXAgPHBvcnQ+IDxwYXRoIHRvIEpTT04gc2NoZW1hPgpgYGAKCiMjIENvbW1pdHRlZTo6TWlkZGxld2FyZTo6UmVzcG9uc2VWYWxpZGF0aW9uCgpUaGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IGFsbCBvZiBIeXBlci1TY2hlbWEsIE9wZW5BUEkgMiwgYW5kIE9wZW5BUEkgMy4KCmBgYCBydWJ5CnVzZSBDb21taXR0ZWU6Ok1pZGRsZXdhcmU6OlJlc3BvbnNlVmFsaWRhdGlvbiwgc2NoZW1hX3BhdGg6ICdkb2NzL3NjaGVtYS5qc29uJwpgYGAKClRoaXMgcGllY2Ugb2YgbWlkZGxld2FyZSB2YWxpZGF0ZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSByZXNwb25zZSByZWNlaXZlZCBmcm9tIHVwIHRoZSBzdGFjayBmb3IgYW55IHJvdXRlIHRoYXQgbWF0Y2hlcyB0aGUgSlNPTiBTY2hlbWEuIEEgaHlwZXItc2NoZW1hIGxpbmsncyBgdGFyZ2V0U2NoZW1hYCBwcm9wZXJ0eSBpcyB1c2VkIHRvIGRldGVybWluZSB3aGF0IGEgdmFsaWQgcmVzcG9uc2UgbG9va3MgbGlrZS4KCiMjIyBDb25maWd1cmF0aW9uIE9wdGlvbnMKCnwgbmFtZSB8IEh5cGVyLVNjaGVtYSB8IE9wZW5BUEkgMyB8IERlc2NyaXB0aW9uIHwKfC0tLS0tLS0tLS0tOnwtLS0tLS0tLS0tLS06fC0tLS0tLS0tLS0tLTp8IDotLS0tLS0tLS0tLS0gfAp8cmFpc2V8IGZhbHNlIHwgZmFsc2UgfCBSYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IgaW5zdGVhZCBvZiByZXNwb25kaW5nIHdpdGggYSBnZW5lcmljIGVycm9yIGJvZHkuIHwKfHZhbGlkYXRlX3N1Y2Nlc3Nfb25seXwgdHJ1ZSB8IGZhbHNlIHwgQWxzbyB2YWxpZGF0ZSBub24tMnh4IHJlc3BvbnNlcyBvbmx5LiB8CnxpZ25vcmVfZXJyb3J8IGZhbHNlIHwgZmFsc2UgfCBWYWxpZGF0ZSBhbmQgaWdub3JlIHJlc3VsdCBldmVuIGlmIHZhbGlkYXRpb24gaXMgZXJyb3IuIFNvIGFsd2F5cyByZXR1cm4gb3JpZ2luYWwgZGF0YS4gfAp8cGFyc2VfcmVzcG9uc2VfYnlfY29udGVudF90eXBlfCB0cnVlIHwgdHJ1ZSB8IFBhcnNlIHJlc3BvbnNlIGJvZHkgdG8gSlNPTiBvbmx5IGlmIENvbnRlbnQtVHlwZSBoZWFkZXIgaXMgJ2FwcGxpY2F0aW9uL2pzb24nLiBXaGVuIGZhbHNlLCB0aGlzIGFsd2F5cyBvcHRpbWlzdGljYWxseSBwYXJzZXMgYXMgSlNPTiB3aXRob3V0IGNoZWNraW5nIGZvciBDb250ZW50LVR5cGUgaGVhZGVyLiB8CnxzdHJpY3R8IGZhbHNlIHwgZmFsc2UgfCBQdXRzIHRoZSBtaWRkbGV3YXJlIGludG8gc3RyaWN0IG1vZGUsIG1lYW5pbmcgdGhhdCByZXNwb25zZSBjb2RlIGFuZCBjb250ZW50IHR5cGUgZG9lcyBub3QgZGVmaW5lZCBpbiB0aGUgc2NoZW1hIHdpbGwgYmUgcmVzcG9uZGVkIHRvIHdpdGggYSA1MDAgaW5zdGVhZCBvZiBhcHBsaWNhdGlvbidzIHN0YXR1cyBjb2RlLiB8CnxzdHJpY3RfcmVmZXJlbmNlX3ZhbGlkYXRpb258IGFsd2F5cyBmYWxzZSB8IGZhbHNlIHwgUmFpc2VzIGFuIGV4Y2VwdGlvbiAoYE9wZW5BUElQYXJzZXI6Ok1pc3NpbmdSZWZlcmVuY2VFcnJvcmApIG9uIG1pZGRsZXdhcmUgbG9hZCBpZiB0aGUgcHJvdmlkZWQgc2NoZW1hIGZpbGUgY29udGFpbnMgdW5yZXNvbHZhYmxlIHJlZmVyZW5jZXMgKGAkcmVmOiIjL3NvbWV0aGluZy9ub3QvaGVyZSJgKS4gTm90IHN1cHBvcnRlZCBvbiBIeXBlci1zY2hlbWEgcGFyc2VyLiBEZWZhdWx0cyB0byBgZmFsc2VgIG9uIE9wZW5BUEkzIGJ1dCB3aWxsIGRlZmF1bHQgdG8gYHRydWVgIGluIG5leHQgbWFqb3IgdmVyc2lvbi4gfAoKTm8gYm9vbGVhbiBvcHRpb24gdmFsdWVzOgoKfCBuYW1lIHwgYWxsb3dlZCBvYmplY3QgdHlwZSB8IEh5cGVyLVNjaGVtYSB8IE9wZW5BUEkgMyB8IERlc2NyaXB0aW9uIHwKfC0tLS0tLS0tLS0tOnwtLS0tLS0tLS0tLS06fC0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tOnwgOi0tLS0tLS0tLS0tLSB8CnxwcmVmaXh8IFN0cmluZyB8IHN1cHBvcnQgfCBzdXBwb3J0IHwgTW91bnRzIHRoZSBtaWRkbGV3YXJlIHRvIHJlc3BvbmQgYXQgYSBjb25maWd1cmVkIHByZWZpeC4gfAp8ZXJyb3JfY2xhc3N8IFN0YW5kYXJkRXJyb3IgfCBzdXBwb3J0IHwgc3VwcG9ydCB8IFNwZWNpZmllcyB0aGUgY2xhc3MgdG8gdXNlIGZvciBmb3JtYXR0aW5nIGFuZCBvdXRwdXR0aW5nIHZhbGlkYXRpb24gZXJyb3JzIChkZWZhdWx0cyB0byBgQ29tbWl0dGVlOjpWYWxpZGF0aW9uRXJyb3JgKS4gfAp8ZXJyb3JfaGFuZGxlcnwgUHJvYyBPYmplY3QgfCBzdXBwb3J0IHwgc3VwcG9ydCB8IEEgcHJvYyB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aGVuIGVycm9yIG9jY3Vycy4gVGFrZSBhbiBFcnJvciBpbnN0YW5jZSBhcyBmaXJzdCBhcmd1bWVudCwgYW5kIHJlcXVlc3QuZW52IGFzIHNlY29uZCBhcmd1bWVudC4gKGUuZy4gYC0+IChleCwgZW52KSB7IFJhdmVuLmNhcHR1cmVfZXhjZXB0aW9uKGV4LCBleHRyYTogeyByYWNrX2VudjogZW52IH0pIH1gKSB8CnxzdHJlYW1pbmdfY29udGVudF9wYXJzZXJzfCBIYXNoW1N0cmluZywgUHJvY10gfCBzdXBwb3J0IHwgc3VwcG9ydCB8IEEgaGFzaCBtYXBwaW5nIGNvbnRlbnQgdHlwZXMgdG8gY3VzdG9tIHBhcnNlciBsYW1iZGFzIGZvciBzdHJlYW1pbmcgcmVzcG9uc2VzIChlLmcuIGB7ICd0ZXh0L2V2ZW50LXN0cmVhbScgPT4gLT4oYm9keSkgeyBib2R5IH0gfWApLiBVc2VkIGZvciB2YWxpZGF0aW5nIHN0cmVhbWluZyByZXNwb25zZSBmb3JtYXRzIGxpa2UgU2VydmVyLVNlbnQgRXZlbnRzLiB8CgpHaXZlbiBhIHNpbXBsZSBTaW5hdHJhIGFwcCB0aGF0IHJlc3BvbmRzIGZvciBhbiBlbmRwb2ludCBpbiBhbiBpbmNvbXBsZXRlIGZhc2hpb246CgpgYGAgcnVieQpyZXF1aXJlICJjb21taXR0ZWUiCnJlcXVpcmUgInNpbmF0cmEiCgp1c2UgQ29tbWl0dGVlOjpNaWRkbGV3YXJlOjpSZXNwb25zZVZhbGlkYXRpb24sIHNjaGVtYV9wYXRoOiAnZG9jcy9zY2hlbWEuanNvbicKCmdldCAiL2FwcHMiIGRvCiAgY29udGVudF90eXBlIDpqc29uCiAgIlt7fV0iCmVuZApgYGAKClRoZSBtaWRkbGV3YXJlIHdpbGwgcmFpc2UgYW4gZXJyb3IgdG8gaW5kaWNhdGUgd2hhdCB0aGUgcHJvYmxlbXMgYXJlOgoKYGBgIGJhc2gKIyBtaXNzaW5nIGtleXMgaW4gcmVzcG9uc2UKJCBjdXJsIC1YIEdFVCBodHRwOi8vbG9jYWxob3N0OjkyOTIvYXBwcwp7ImlkIjoiaW52YWxpZF9yZXNwb25zZSIsIm1lc3NhZ2UiOiJNaXNzaW5nIGtleXMgaW4gcmVzcG9uc2U6IGFyY2hpdmVkX2F0LCBidWlsZHBhY2tfcHJvdmlkZWRfZGVzY3JpcHRpb24sIGNyZWF0ZWRfYXQsIGdpdF91cmwsIGlkLCBtYWludGVuYW5jZSwgbmFtZSwgb3duZXI6ZW1haWwsIG93bmVyOmlkLCByZWdpb246aWQsIHJlZ2lvbjpuYW1lLCByZWxlYXNlZF9hdCwgcmVwb19zaXplLCBzbHVnX3NpemUsIHN0YWNrOmlkLCBzdGFjazpuYW1lLCB1cGRhdGVkX2F0LCB3ZWJfdXJsLiJ9CmBgYAoKSWYgeW91IHdhbnQgdG8gdGFrZSBsb2cgb25seSAoZm9yIGV4YW1wbGUgYXZvaWRpbmcgZmFsc2UtcG9zaXRpdmUgaW4gcHJvZHVjdGlvbiksIHVzZSBgaWdub3JlX2Vycm9yYCBhbmQgYGVycm9yX2hhbmRsZXJgIG9wdGlvbi4KCiMjIFZhbGlkYXRpb24gRXJyb3JzCgpDb21taXR0ZWUgd2lsbCBieSBkZWZhdWx0IHJlc3BvbmQgd2l0aCBhIGdlbmVyaWMgZXJyb3IgSlNPTiBib2R5IGZvciB2YWxpZGF0aW9uIGVycm9ycyAod2hlbiB0aGUgYHJhaXNlYCBtaWRkbGV3YXJlIG9wdGlvbiBpcyBgZmFsc2VgKS4KCkhlcmUncyBhbiBleGFtcGxlIGVycm9yIHRvIHNob3cgdGhlIGRlZmF1bHQgZm9ybWF0OgoKYGBganNvbgp7CiAgImlkIjoiaW52YWxpZF9yZXNwb25zZSIsCiAgIm1lc3NhZ2UiOiJNaXNzaW5nIGtleXMgaW4gcmVzcG9uc2U6IGFyY2hpdmVkX2F0LCBidWlsZHBhY2tfcHJvdmlkZWRfZGVzY3JpcHRpb24sIGNyZWF0ZWRfYXQsIGdpdF91cmwsIGlkLCBtYWludGVuYW5jZSwgbmFtZSwgb3duZXI6ZW1haWwsIG93bmVyOmlkLCByZWdpb246aWQsIHJlZ2lvbjpuYW1lLCByZWxlYXNlZF9hdCwgcmVwb19zaXplLCBzbHVnX3NpemUsIHN0YWNrOmlkLCBzdGFjazpuYW1lLCB1cGRhdGVkX2F0LCB3ZWJfdXJsLiIKfQpgYGAKCllvdSBjYW4gY3VzdG9taXplIHRoaXMgSlNPTiBib2R5IGJ5IHNldHRpbmcgdGhlIGBlcnJvcl9jbGFzc2AgbWlkZGxld2FyZSBvcHRpb24uIFRoZSBgZXJyb3JfY2xhc3NgIHdpbGwgYmUgaW5zdGFudGlhdGVkIHdpdGg6IGBzdGF0dXNgLCBgaWRgLCBhbmQgYG1lc3NhZ2VgLgoKKiBgc3RhdHVzYDogSFRUUCBzdGF0dXMgY29kZQoqIGBpZGA6IEhUVFAgc3RhdHVzIG5hbWUvc3RyaW5nCiogYG1lc3NhZ2VgOiBlcnJvciBtZXNzYWdlCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBhIGNsYXNzIHRvIGZvcm1hdCBlcnJvcnMgYWNjb3JkaW5nIHRvIFtKU09OIEFQSV0oaHR0cDovL2pzb25hcGkub3JnL2Zvcm1hdC8jZXJyb3JzKToKCmBgYHJ1YnkKbW9kdWxlIE15QVBJCiAgY2xhc3MgVmFsaWRhdGlvbkVycm9yIDwgQ29tbWl0dGVlOjpWYWxpZGF0aW9uRXJyb3IKICAgIGRlZiBlcnJvcl9ib2R5CiAgICAgIHsKICAgICAgICBlcnJvcnM6IFsKICAgICAgICAgIHsgc3RhdHVzOiBpZCwgZGV0YWlsOiBtZXNzYWdlIH0KICAgICAgICBdCiAgICAgIH0KICAgIGVuZAoKICAgIGRlZiByZW5kZXIKICAgICAgWwogICAgICAgIHN0YXR1cywKICAgICAgICB7ICJDb250ZW50LVR5cGUiID0+ICJhcHBsaWNhdGlvbi92bmQuYXBpK2pzb24iIH0sCiAgICAgICAgW0pTT04uZ2VuZXJhdGUoZXJyb3JfYm9keSldCiAgICAgIF0KICAgIGVuZAogIGVuZAplbmQKYGBgCgojIyBUZXN0IEFzc2VydGlvbnMKClN1cHBvcnRlZCBpbiBIeXBlclNjaGVtYSBhbmQgT3BlbkFQSSAzLgoKQ29tbWl0dGVlIHNoaXBzIHdpdGggYSBzbWFsbCBzZXQgb2Ygc2NoZW1hIHZhbGlkYXRpb24gdGVzdCBhc3NlcnRpb25zIGRlc2lnbmVkIHRvIGJlIHVzZWQgYWxvbmcgd2l0aCBgcmFjay10ZXN0YC4KCkhlcmUncyBhIHNpbXBsZSB0ZXN0IHRvIGRlbW9uc3RyYXRlOgoKYGBgIHJ1YnkKZGVzY3JpYmUgQ29tbWl0dGVlOjpNaWRkbGV3YXJlOjpTdHViIGRvCiAgaW5jbHVkZSBDb21taXR0ZWU6OlRlc3Q6Ok1ldGhvZHMKICBpbmNsdWRlIFJhY2s6OlRlc3Q6Ok1ldGhvZHMKCiAgZGVmIGFwcAogICAgU2luYXRyYS5uZXcgZG8KICAgICAgZ2V0ICIvIiBkbwogICAgICAgIGNvbnRlbnRfdHlwZSA6anNvbgogICAgICAgIEpTT04uZ2VuZXJhdGUoeyAiZm9vIiA9PiAiYmFyIiB9KQogICAgICBlbmQKICAgIGVuZAogIGVuZAoKICBkZWYgY29tbWl0dGVlX29wdGlvbnMKICAgIEBjb21taXR0ZWVfb3B0aW9ucyB8fD0geyBzY2hlbWE6IENvbW1pdHRlZTo6RHJpdmVyczo6bG9hZF9mcm9tX2ZpbGUoJ2RvY3Mvc2NoZW1hLmpzb24nKSwgcHJlZml4OiAiL3YxIiB9CiAgZW5kCgogIGRlZiByZXF1ZXN0X29iamVjdAogICAgbGFzdF9yZXF1ZXN0CiAgZW5kCgogIGRlZiByZXNwb25zZV9kYXRhCiAgICBbbGFzdF9yZXNwb25zZS5zdGF0dXMsIGxhc3RfcmVzcG9uc2UuaGVhZGVycywgbGFzdF9yZXNwb25zZS5ib2R5XQogIGVuZAoKICBkZXNjcmliZSAiR0VUIC8iIGRvCiAgICBpdCAiY29uZm9ybXMgdG8gc2NoZW1hIHdpdGggMjAwIHJlc3BvbnNlIGNvZGUiIGRvCiAgICAgIGdldCAiLyIKICAgICAgYXNzZXJ0X3NjaGVtYV9jb25mb3JtKDIwMCkKICAgIGVuZAoKICAgIGl0ICJjb25mb3JtcyB0byByZXF1ZXN0IHNjaGVtYSIgZG8KICAgICAgZ2V0ICIvIgogICAgICBhc3NlcnRfcmVxdWVzdF9zY2hlbWFfY29uZmlybQogICAgZW5kCgogICAgaXQgImNvbmZvcm1zIHRvIHJlc3BvbnNlIHNjaGVtYSB3aXRoIDIwMCByZXNwb25zZSBjb2RlIiBkbwogICAgICBnZXQgIi8iCiAgICAgIGFzc2VydF9yZXNwb25zZV9zY2hlbWFfY29uZmlybSgyMDApCiAgICBlbmQKCiAgICBpdCAiY29uZm9ybXMgdG8gcmVzcG9uc2UgYW5kIHJlcXVlc3Qgc2NoZW1hIHdpdGggMjAwIHJlc3BvbnNlIGNvZGUiIGRvCiAgICAgIEBjb21taXR0ZWVfb3B0aW9uc1s6b2xkX2Fzc2VydF9iZWhhdmlvcl0gPSBmYWxzZQogICAgICBnZXQgIi8iCiAgICAgIGFzc2VydF9zY2hlbWFfY29uZm9ybSgyMDApCiAgICBlbmQKICBlbmQKZW5kCmBgYAoKCiMjIFRpcHMKCiMjIyBVc2UgUnVieSBvbiBSYWlscyB3aXRoIGNvZXJjZSBvcHRpb24KUGxlYXNlIHNldCBgJ2FjdGlvbl9kaXNwYXRjaC5yZXF1ZXN0LnJlcXVlc3RfcGFyYW1ldGVycydgIHRvIGBwYXJhbXNfa2V5YCBvcHRpb24uCgpgYGAKdXNlIENvbW1pdHRlZTo6TWlkZGxld2FyZTo6UmVxdWVzdFZhbGlkYXRpb24sCiAgICAgIHNjaGVtYV9wYXRoOiAnZG9jcy9zY2hlbWEuanNvbicsCiAgICAgIGNvZXJjZV9kYXRlX3RpbWVzOiB0cnVlLAogICAgICBwYXJhbXNfa2V5OiAnYWN0aW9uX2Rpc3BhdGNoLnJlcXVlc3QucmVxdWVzdF9wYXJhbWV0ZXJzJwpgYGAKCkNvbW1pdHRlZSBoYXMgZmV3IG9wdGlvbnMgd2hpY2ggZW5hYmxlIGNvbnZlcnQgcmVxdWVzdCBkYXRhLgpCeSBkZWZhdWx0IGNvbW1pdHRlZSBzYXZlIGNvbnZlcnRlZCBkYXRhIHRvIGBjb21taXR0ZWUucGFyYW1zYCBhbmQgcmFpbHMgZG9lcyBub3QgcmVhZCBpdC4KU28gd2UgbmVlZCB0byBzYXZlIGNvbnZlcnRlZCB2YWx1ZSB0byBgJ2FjdGlvbl9kaXNwYXRjaC5yZXF1ZXN0LnJlcXVlc3RfcGFyYW1ldGVycydgIGJlY2F1c2UgcmFpbHMgY3JlYXRlIHBhcmFtZXRlciBmcm9tIHRoaXMgdmFsdWUuCgojIyMgU3RyZWFtaW5nIFJlc3BvbnNlIFZhbGlkYXRpb24KCkNvbW1pdHRlZSBzdXBwb3J0cyB2YWxpZGF0aW5nIHN0cmVhbWluZyByZXNwb25zZXMgbGlrZSBTZXJ2ZXItU2VudCBFdmVudHMgb3IgY3VzdG9tIHN0cmVhbWluZyBmb3JtYXRzIHVzaW5nIHRoZSBgc3RyZWFtaW5nX2NvbnRlbnRfcGFyc2Vyc2Agb3B0aW9uOgoKYGBgcnVieQp1c2UgQ29tbWl0dGVlOjpNaWRkbGV3YXJlOjpSZXNwb25zZVZhbGlkYXRpb24sCiAgc2NoZW1hX3BhdGg6ICdkb2NzL3NjaGVtYS5qc29uJywKICBzdHJlYW1pbmdfY29udGVudF9wYXJzZXJzOiB7CiAgICAndGV4dC9ldmVudC1zdHJlYW0nID0+IC0+KGJvZHkpIHsgYm9keSB9LCAgIyBQYXNzIHRocm91Z2ggU1NFIGFzIHN0cmluZwogICAgJ2FwcGxpY2F0aW9uL3gtanNvbi1zdHJlYW0nID0+IC0+KGJvZHkpIHsgSlNPTi5wYXJzZShib2R5KSB9ICAjIFBhcnNlIGN1c3RvbSBKU09OIHN0cmVhbQogIH0KYGBgCgpUaGlzIGFsbG93cyB5b3UgdG8gdmFsaWRhdGUgc3RyZWFtaW5nIHJlc3BvbnNlIGZvcm1hdHMgYnkgcHJvdmlkaW5nIGN1c3RvbSBwYXJzZXJzIGZvciBzcGVjaWZpYyBjb250ZW50IHR5cGVzLiBUaGUgcGFyc2VyIGxhbWJkYSByZWNlaXZlcyB0aGUgY29tcGxldGUgcmVzcG9uc2UgYm9keSBhcyBhIHN0cmluZyBhbmQgc2hvdWxkIHJldHVybiB0aGUgcGFyc2VkIGRhdGEgZm9yIHZhbGlkYXRpb24uCgoqKk5vdGU6KiogVGhpcyBmZWF0dXJlIHVzZXMgYFJhY2s6OkJvZHlQcm94eWAgaW50ZXJuYWxseSwgd2hpY2ggYnVmZmVycyB0aGUgZW50aXJlIHJlc3BvbnNlIGJvZHkgaW4gbWVtb3J5IGJlZm9yZSB2YWxpZGF0aW9uLiBUaGlzIGNhbiBjb25zdW1lIHNpZ25pZmljYW50IG1lbW9yeSBmb3IgbGFyZ2Ugc3RyZWFtaW5nIHJlc3BvbnNlcy4gQ29uc2lkZXIgdGhpcyBsaW1pdGF0aW9uIHdoZW4gdmFsaWRhdGluZyBsYXJnZSBkYXRhIHN0cmVhbXMuCgpMaW1pdGF0aW9uOiBGb3Igc3RhbmRhcmQgQ29udGVudC1UeXBlcywgaXQgaXMgcG9zc2libGUgdG8gaW50ZXJ2ZW5lIGluIHRoZSBhY3R1YWwgcmVzcG9uc2Ugd2hlbiB2YWxpZGF0aW9uIGZhaWxzIChlLmcuLCBieSBzZXR0aW5nIHRoZSBIVFRQIHN0YXR1cyBjb2RlIHRvIDUwMCkuIEhvd2V2ZXIsIGZvciBDb250ZW50LVR5cGVzIHNwZWNpZmllZCB2aWEgdGhlIGBzdHJlYW1pbmdfY29udGVudF9wYXJzZXJzYCBvcHRpb24sIHZhbGlkYXRpb24gaXMgcGVyZm9ybWVkIG9ubHkgYWZ0ZXIgdGhlIGVudGlyZSByZXNwb25zZSBib2R5IGhhcyBiZWVuIHJlYWTigJR0aGF0IGlzLCBhZnRlciBpdCBoYXMgYWxyZWFkeSBiZWVuIHJldHVybmVkIHRvIHRoZSBjbGllbnTigJRtYWtpbmcgaXQgaW1wb3NzaWJsZSB0byBtb2RpZnkgdGhlIHJlc3BvbnNlLiBJbiBzdWNoIGNhc2VzLCBvbmx5IGBoYW5kbGVfZXhjZXB0aW9uYCBpcyBjYWxsZWQsIGFuZCBhbiBlcnJvciBpcyByYWlzZWQgaWYgbmVjZXNzYXJ5LgoKIyMgVXNpbmcgT3BlbkFQSSAzCgpDb21taXR0ZWUgY2FuIGRldGVjdCB0aGUgdHlwZSBvZiBzY2hlbWEgKEh5cGVyLVNjaGVtYSwgT3BlbkFQSSAzLCBldGMuKSBmcm9tIHRoZSBwcm92aWRlZCBmaWxlLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gcGFzcyBpbiBhbnkgYWRkaXRpb25hbCBvcHRpb25zOgoKYGBgcnVieQp1c2UgQ29tbWl0dGVlOjpNaWRkbGV3YXJlOjpSZXF1ZXN0VmFsaWRhdGlvbiwgc2NoZW1hX3BhdGg6ICdvcGVuX2FwaV8zL3NjaGVtYS55YW1sJwpgYGAKCklmIHlvdSB3YW50IHRvIHNlbGVjdCB0aGUgdHlwZSBtYW51YWxseSwgcGFzcyBhbiBgT3BlbkFQSSAzYCBvYmplY3QgdG8gdGhlIGBzY2hlbWFgIG9wdGlvbiBtYW51YWxseToKCmBgYHJ1YnkKb3Blbl9hcGkgPSBPcGVuQVBJUGFyc2VyLnBhcnNlKFlBTUwubG9hZF9maWxlKCdvcGVuX2FwaV8zL3NjaGVtYS55YW1sJykpCnNjaGVtYSA9IENvbW1pdHRlZTo6RHJpdmVyczo6T3BlbkFQSTM6OkRyaXZlci5uZXcucGFyc2Uob3Blbl9hcGkpCnVzZSBDb21taXR0ZWU6Ok1pZGRsZXdhcmU6OlJlcXVlc3RWYWxpZGF0aW9uLCBzY2hlbWE6IHNjaGVtYQpgYGAKCiMjIyBMaW1pdGF0aW9ucyBvZiBPcGVuQVBJIDMgc3VwcG9ydAoKKiBTdHViIHNlcnZlcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLCBzbyBuZWl0aGVyIGBDb21taXR0ZWU6Ok1pZGRsZXdhcmU6OlN0dWJgIG9yIGBDb21taXR0ZWU6OkJpbjo6Q29tbWl0dGVlU3R1YmAgYXJlIGZ1bmN0aW9uYWwuCiogQ2hhbmdpbmcgYGNvZXJjZV9yZWN1cnNpdmVgIGlzbid0IHN1cHBvcnRlZC4gVGhpcyBvcHRpb24gaXMgYWx3YXlzIG9uLgoKIyMjIFVwZ3JhZGluZyBmcm9tIENvbW1pdHRlZSAyLiogdG8gMy4qCgpDb21taXR0ZWUgMy4qIGhhcyBtYW55IGJyZWFraW5nIGNoYW5nZXMgc28gd2UgcmVjb21tZW5kIHVwZ3JhZGluZyB0byB0aGUgbGF0ZXN0IHJlbGVhc2Ugb24gMi4qIGFuZCBmaXhpbmcgYW55IGRlcHJlY2F0aW9uIGVycm9ycyB5b3Ugc2VlIGJlZm9yZSB1cGdyYWRpbmcgdG8gMy4qLiBUaGUgc3RlcHMgd291bGQgYmUgcm91Z2hseSBhcyBmb2xsb3dzOgoKMS4gVXBkYXRlIHRvIHRoZSBsYXRlc3QgMi4qIHJlbGVhc2UgKHVzdWFsbHkgYnkgbW9kaWZ5aW5nIHRoZSBzdGF0ZW1lbnQgaW4geW91ciBgR2VtZmlsZWAgYW5kIHJ1bm5pbmcgYGJ1bmRsZSB1cGRhdGVgKS4KMi4gUnVuIHlvdXIgdGVzdCBzdWl0ZSBhbmQgZml4IGFueSBkZXByZWNhdGlvbiB3YXJuaW5ncyB0aGF0IGFwcGVhci4KMy4gVXBkYXRlIHRvIHRoZSBsYXRlc3QgMy4qIHJlbGVhc2UuCjQuIFN3aXRjaCB0byBPcGVuQVBJIDMgaWYgeW91J2QgbGlrZSB0byBkbyBzby4KCkltcG9ydGFudCBjaGFuZ2VzIGFyZSBhbHNvIGRlc2NyaWJlZCBiZWxvdy4KCiMjIyBVcGdyYWRpbmcgZnJvbSBDb21taXR0ZWUgNC4qIHRvIDUuKgoKQ29tbWl0dGVlIDUuKiBoYXMgZmV3IGJyZWFraW5nIGNoYW5nZXMgc28gd2UgcmVjb21tZW5kIHVwZ3JhZGluZyB0byB0aGUgbGF0ZXN0IHJlbGVhc2Ugb24gNC4qIGFuZCBmaXhpbmcgYW55IGRlcHJlY2F0aW9uIGVycm9ycyB5b3Ugc2VlIGJlZm9yZSB1cGdyYWRpbmcuCgotIHNldCBgcGFyc2VfcmVzcG9uc2VfYnlfY29udGVudF90eXBlPXRydWVgIGJ5IGRlZmF1bHQgKG9sZCB2ZXJzaW9ucyBzZXQgYGZhbHNlYCkKLSBzZXQgYHBhcmFtZXRlcl9vdmVyd3JpdGVfYnlfcmFpbHNfcnVsZT10cnVlYCBieSBkZWZhdWx0IChvbGQgdmVyc2lvbiBzZXQgYGZhbHNlYCkKCiMjIyMgRnV0dXJlIFVwZGF0ZXMgKDUuKn4pCk9wZW5BUEkzIFNjaGVtYSBVc2VyczogTmV3bHktYWRkZWQgYHN0cmljdF9yZWZlcmVuY2VfdmFsaWRhdGlvbmAgb3B0aW9uIGRlZmF1bHRzIHRvIGBmYWxzZWAgaWYgbm90IHNldC4KRnJvbSBhIGxhdGVyIG1ham9yIHZlcnNpb24gb2YgQ29tbWl0dGVlLCB3ZSB3YW50IHRvIGNoYW5nZSBpdCB0byBgdHJ1ZWAgKG9yIHJlbW92ZSB0aGUgb3B0aW9uIGVudGlyZWx5IGFuZCBmb3JjZQpgdHJ1ZWAgdG8gYmUgcGFzc2VkIHRvIHRoZSBPcGVuQVBJMyBwYXJzZXIgKHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ludGVyYWdlbnQvY29tbWl0dGVlL2lzc3Vlcy8zNDMpLgoKVG8gcmVtb3ZlIGRlcHJlY2F0aW9uIHdhcm5pbmdzLCBwYXNzIGBzdHJpY3RfcmVmZXJlbmNlX3ZhbGlkYXRpb246IHRydWVgIGFzIGFuIG9wdGlvbiB3aGVuIGxvYWRpbmcgdGhlIG1pZGRsZXdhcmUKKGJlY2F1c2UgdGhpcyBpcyBhYm91dCBzY2hlbWEgcGFyc2luZy9pbml0aWFsaXphdGlvbiwgdGhlIHNldHRpbmcgaXMgdmFsaWQgZm9yIGJvdGggcmVxdWVzdCBhbmQgcmVzcG9uc2UgdmFsaWRhdGlvbikuCgojIyMgU2V0dGluZyBzY2hlbWFzIGluIG1pZGRsZXdhcmUKCkNvbW1pdHRlZSAyLiogc3VwcG9ydGVkIHNldHRpbmcgYHNjaGVtYWAgdG8gYSBzdHJpbmcgb3IgYSBoYXNoIGxpa2UgdGhpczoKCmBgYHJ1YnkKIyB2YWxpZAp1c2UgQ29tbWl0dGVlOjpNaWRkbGV3YXJlOjpSZXF1ZXN0VmFsaWRhdGlvbiwgc2NoZW1hOiBKU09OLnBhcnNlKEZpbGUucmVhZCguLi4pKQoKIyB2YWxpZAp1c2UgQ29tbWl0dGVlOjpNaWRkbGV3YXJlOjpSZXF1ZXN0VmFsaWRhdGlvbiwgc2NoZW1hOiB7anNvbjogJ2pzb25fZGF0YS4uLid9CgojIHZhbGlkCnVzZSBDb21taXR0ZWU6Ok1pZGRsZXdhcmU6OlJlcXVlc3RWYWxpZGF0aW9uLCBzY2hlbWE6ICdqc29uIHN0cmluZycKCmBgYAoKVGhhdCB1c2FnZSBpcyBubyBsb25nZXIgc3VwcG9ydGVkIGluIDMuKiBJbnN0ZWFkLCB1c2UgZWl0aGVyIGBzY2hlbWFfcGF0aGAgb3Igc2V0IGEgcGFyc2VkIHNjaGVtYSBvYmplY3QgdG8gYHNjaGVtYWA6CgpgYGBydWJ5CiMgYXV0by1zZWxlY3QgSHlwZXItU2NoZW1hL09wZW5BUEkgMi9PcGVuQVBJIDMgZnJvbSBmaWxlCnVzZSBDb21taXR0ZWU6Ok1pZGRsZXdhcmU6OlJlcXVlc3RWYWxpZGF0aW9uLCBzY2hlbWFfcGF0aDogJ2RvY3Mvc2NoZW1hLmpzb24nICMgdXNpbmcgZmlsZSBleHRlbnNpb24KCiMgYXV0by1zZWxlY3QgSHlwZXItU2NoZW1hL09wZW5BUEkgMi9PcGVuQVBJIDMgZnJvbSBoYXNoCmpzb24gPSBKU09OLnBhcnNlKEZpbGUucmVhZCgnZG9jcy9zY2hlbWEuanNvbicpKQp1c2UgQ29tbWl0dGVlOjpNaWRkbGV3YXJlOjpSZXF1ZXN0VmFsaWRhdGlvbiwgc2NoZW1hOiBDb21taXR0ZWU6OkRyaXZlcnM6OmxvYWRfZGF0YShqc29uKQoKIyBtYW51YWxseSBzZWxlY3QKanNvbiA9IEpTT04ucGFyc2UoRmlsZS5yZWFkKC4uLikpCnNjaGVtYSA9IENvbW1pdHRlZTo6RHJpdmVyczo6SHlwZXJTY2hlbWE6OkRyaXZlci5uZXcucGFyc2UoanNvbikKdXNlIENvbW1pdHRlZTo6TWlkZGxld2FyZTo6UmVxdWVzdFZhbGlkYXRpb24sIHNjaGVtYTogc2NoZW1hCmBgYAoKVGhlIGF1dG8tc2VsZWN0IGFsZ29yaXRobSB3b3JrcyByb3VnaGx5IGxpa2UgdGhpcyAoc28gbWFrZSBzdXJlIHRoYXQgeW91ciBmaWxlIHNldHMgb25lIG9mIHRoZXNlIGF0dHJpYnV0ZXMgY29ycmVjdGx5KToKCmBgYHJ1YnkKaGFzaCA9IEpTT04ubG9hZChqc29uX3BhdGgpCgojIE9wZW5BUEkgMyByZXF1aXJlcyB0aGUgYG9wZW5hcGlgIGtleSBhbmQgYSB2ZXJzaW9uCmlmIGhhc2hbJ29wZW5hcGknXSYuc3RhcnRfd2l0aD8oJzMuJykKICByZXR1cm4gQ29tbWl0dGVlOjpEcml2ZXJzOjpPcGVuQVBJMzo6RHJpdmVyLm5ldy5wYXJzZShoYXNoKQoKIyBPcGVuQVBJIDIgcmVxdWlyZXMgdGhlIGBzd2FnZ2VyYCBrZXkKZWxzaWYgaGFzaFsnc3dhZ2dlciddID09ICcyLjAnCiAgcmV0dXJuIENvbW1pdHRlZTo6RHJpdmVyczo6T3BlbkFQSTI6OkRyaXZlci5uZXcucGFyc2UoaGFzaCkKCmVsc2UKICByZXR1cm4gQ29tbWl0dGVlOjpEcml2ZXJzOjpIeXBlclNjaGVtYTo6RHJpdmVyLm5ldy5wYXJzZShoYXNoKQplbmQKYGBgCgojIyMgVGVzdCBhc3NlcnRpb25zCgpDb21taXR0ZWUgMy4qIGRyb3BzIG1hbnkgb2YgdGhlIG1ldGhvZHMgdGhhdCB3ZXJlCnByZXZpb3VzbHkgYXZhaWxhYmxlIGZyb20gdGhlIGBDb21taXR0ZWU6OlRlc3Q6Ok1ldGhvZHNgCm1peGluLgoKVXNlIGl0IGJ5IGRlZmluaW5nIGEgYGNvbW1pdHRlZV9vcHRpb25zYCBtZXRob2QgYW5kIGhhdmluZwppdCByZXR1cm4gYSBzY2hlbWEgYW5kIG90aGVyIG9wdGlvbnMgeW91J2QgbGlrZSB0byB1c2U6CgpgYGBydWJ5CmRlZiBjb21taXR0ZWVfb3B0aW9ucwogIEBjb21taXR0ZWVfb3B0aW9ucyB8fD0geyBzY2hlbWE6IENvbW1pdHRlZTo6RHJpdmVyczo6bG9hZF9mcm9tX2ZpbGUoJ2RvY3Mvc2NoZW1hLmpzb24nKSwgcHJlZml4OiAiL3YxIiwgdmFsaWRhdGVfc3VjY2Vzc19vbmx5OiB0cnVlIH0KZW5kCmBgYAoKVGhlIGRlZmF1bHQgYXNzZXJ0aW9uIG9wdGlvbiBpbiAyLiogd2FzIGB2YWxpZGF0ZV9zdWNjZXNzX29ubHk9dHJ1ZWAsIGJ1dCB0aGlzIGJlY29tZXMgYHZhbGlkYXRlX3N1Y2Nlc3Nfb25seT1mYWxzZWAgaW4gMy4qLiBGb3IgdGhlIHNtb290aGVzdCBwb3NzaWJsZSB1cGdyYWRlLCB5b3Ugc2hvdWxkIHNldCBpdCB0byBgZmFsc2VgIGluIHlvdXIgdGVzdCBzdWl0ZSBiZWZvcmUgdXBncmFkaW5nIHRvIDMuKi4KCiMjIyBUZXN0IHNjaGVtYSBjb3ZlcmFnZQpZb3UgY2FuIGNoZWNrIGhvdyBtdWNoIG9mIHlvdXIgQVBJIHNjaGVtYSB5b3VyIHRlc3RzIGhhdmUgY292ZXJlZC4KTk9USUNFOiBDdXJyZW50bHkgY29tbWl0dGVlIG9ubHkgc3VwcG9ydHMgc2NoZW1hIGNvdmVyYWdlIGZvciAqKm9wZW5hcGkqKiBzY2hlbWFzLCBhbmQgb25seSBjaGVja3MgY292ZXJhZ2Ugb24gcmVzcG9uc2VzLCB2aWEgYGFzc2VydF9yZXNwb25zZV9zY2hlbWFfY29uZmlybWAgb3IgYGFzc2VydF9zY2hlbWFfY29uZm9ybWAgbWV0aG9kcy4KVXNhZ2U6CjEuIFNldCBzY2hlbWFfY292ZXJhZ2Ugb3B0aW9uIG9mIGBjb21taXR0ZWVfb3B0aW9uc2AKMi4gVXNlIGBhc3NlcnRfcmVzcG9uc2Vfc2NoZW1hX2NvbmZpcm1gIG9yIGBhc3NlcnRfc2NoZW1hX2NvbmZvcm1gCjMuIFRoZW4gdXNlIGBTY2hlbWFDb3ZlcmFnZSNyZXBvcnRgIG9yIGBTY2hlbWFDb3ZlcmFnZSNyZXBvcnRfZmxhdHRlbmAgdG8gZ2V0IGNvdmVyYWdlIHJlcG9ydAoKRXhhbXBsZToKYGBgcnVieQpiZWZvcmUgZG8KICBzY2hlbWFfY292ZXJhZ2UgPSBDb21taXR0ZWU6OlRlc3Q6OlNjaGVtYUNvdmVyYWdlLm5ldyhvcGVuYXBpX3NjaGVtYSkKICBAY29tbWl0dGVlX29wdGlvbnNbOnNjaGVtYV9jb3ZlcmFnZV0gPSBzY2hlbWFfY292ZXJhZ2UKZW5kCml0ICdjb3ZlcnMgL3NvbWVfYXBpJyBkbwogIGdldCAnL3NvbWVfYXBpJwogIGFzc2VydF9yZXNwb25zZV9zY2hlbWFfY29uZmlybSAjIG9yIGFzc2VydF9zY2hlbWFfY29uZm9ybQogIGNvdmVyYWdlX3JlcG9ydCA9IHNjaGVtYV9jb3ZlcmFnZS5yZXBvcnQKICAjIGNoZWNrIGNvdmVyYWdlIGV4cGVjdGF0aW9ucyBvZiAvc29tZV9hcGkgaGVyZQplbmQKaXQgJ2NvdmVycyAvb3RoZXJfYXBpIHNjaGVtYScgZG8KICBnZXQgJy9vdGhlcl9hcGknCiAgYXNzZXJ0X3Jlc3BvbnNlX3NjaGVtYV9jb25maXJtICMgb3IgYXNzZXJ0X3NjaGVtYV9jb25mb3JtCiAgY292ZXJhZ2VfcmVwb3J0ID0gc2NoZW1hX2NvdmVyYWdlLnJlcG9ydAogICMgY2hlY2sgY292ZXJhZ2UgZXhwZWN0YXRpb25zIG9mIC9vdGhlcl9hcGkgaGVyZQplbmQKYWZ0ZXIgZG8KICBjb3ZlcmFnZV9yZXBvcnQgPSBzY2hlbWFfY292ZXJhZ2UucmVwb3J0CiAgIyBjaGVjayBjb3ZlcmFnZSBleHBlY3RhdGlvbnMgb2YgYWxsIGFwaXMgaGVyZQplbmQKYGBgCgpDb3ZlcmFnZSByZXBvcnQgc3RydWN0dXJlOgpgYGAKLyogdXNpbmcgI3JlcG9ydCAqLwp7CiAgPHBhdGg+ID0+IHsKICAgIDxtZXRob2Q+ID0+IHsKICAgICAgJ3Jlc3BvbnNlcycgPT4gewogICAgICAgIDxzdGF0dXM+ID0+IDx0cnVlfGZhbHNlPgogICAgICB9CiAgICB9CiAgfQp9Ci8qIHVzaW5nICNyZXBvcnRfZmxhdHRlbiAqLwp7CiAgcmVzcG9uc2VzOiBbCiAgICB7IHBhdGg6IDxwYXRoPiwgbWV0aG9kOiA8bWV0aG9kPiwgc3RhdHVzOiA8c3RhdHVzPiwgaXNfY292ZXJlZDogPHRydWV8ZmFsc2U+IH0sCiAgXQp9CmBgYAoKT3RoZXIgaGVscGVyIG1ldGhvZHM6CiogYENvbW1pdHRlZTo6VGVzdDo6U2NoZW1hQ292ZXJhZ2UubWVyZ2VfcmVwb3J0KDxIYXNoPiwgPEhhc2g+KWA6IG1lcmdlIDIgY292ZXJhZ2UgcmVwb3J0cyB0b2dldGhlcgoqIGBDb21taXR0ZWU6OlRlc3Q6OlNjaGVtYUNvdmVyYWdlLmZsYXR0ZW5fcmVwb3J0KDxIYXNoPilgOiBmbGF0dGVuIGEgY292ZXJhZ2UgcmVwb3J0IEhhc2ggaW50byBmbGF0dGVuIHN0cnVjdHVyZQoKIyMjIE90aGVyIGNoYW5nZXMKCiogYEdFVGAgcmVxdWVzdCBib2RpZXMgYXJlIGlnbm9yZWQgaW4gT3BlbkFQSSAzIGJ5IGRlZmF1bHQuIElmIHlvdSB3YW50IHRvIHVzZSB0aGVtLCBzZXQgdGhlIGBhbGxvd19nZXRfYm9keWAgb3B0aW9uIHRvIGB0cnVlYC4KCiMjIERldmVsb3BtZW50CgpSdW4gdGVzdHMgd2l0aCB0aGUgZm9sbG93aW5nOgoKYGBgCmJ1bmRsZSBpbnN0YWxsCmJ1bmRsZSBleGVjIHJha2UKYGBgCgpSdW4gYSBwYXJ0aWN1bGFyIHRlc3Qgc3VpdGUgb3IgdGVzdDoKCmBgYApidW5kbGUgZXhlYyBydWJ5IC1JbGliIC1JdGVzdCB0ZXN0L3JvdXRlcl90ZXN0LnJiCmJ1bmRsZSBleGVjIHJ1YnkgLUlsaWIgLUl0ZXN0IHRlc3Qvcm91dGVyX3Rlc3QucmIgLW4gL3ByZWZpeC8KYGBgCgojIyBSZWxlYXNlCgoxLiBVcGRhdGUgdGhlIHZlcnNpb24gaW4gYGxpYi9jb21taXR0ZWUvdmVyc2lvbi5yYmAgYXMgYXBwcm9wcmlhdGUgZm9yIFtzZW1hbnRpYwogICB2ZXJzaW9uaW5nXShodHRwOi8vc2VtdmVyLm9yZykgYW5kIGFkZCBkZXRhaWxzIHRvIGBDSEFOR0VMT0cubWRgLgoyLiBDb21taXQgdGhvc2UgY2hhbmdlcy4gVXNlIGEgY29tbWl0IG1lc3NhZ2UgbGlrZSBgQnVtcCB2ZXJzaW9uIHRvIDEuMi4zYC4KMy4gUnVuIHRoZSBgcmVsZWFzZWAgdGFzazoKCiAgICBgYGAKICAgIGJ1bmRsZSBleGVjIHJha2UgcmVsZWFzZQogICAgYGBgCgojIyBUdXRvcmlhbHMKCi0gW1ZhbGlkYXRpbmcgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyB1c2luZyBPcGVuQVBJIHNwZWNpZmljYXRpb24gd2l0aCBDb21taXR0ZWVdKGh0dHBzOi8vbmljb2xhc2llbnNlbi5naXRodWIuaW8vMjAyMi0wNC0xOC12YWxpZGF0aW5nLXJlcXVlc3RzLWFuZC1yZXNwb25zZXMtdXNpbmctb3BlbmFwaS1zcGVjaWZpY2F0aW9uLXdpdGgtY29tbWl0dGVlLykK readmeEtag: '"dc647be71a2a55e00a72cc7d7939a9cf2484d0c6"' readmeLastModified: Tue, 06 Jan 2026 03:19:53 GMT repositoryId: 14134534 description: A collection of Rack middleware to support JSON Schema. created: '2013-11-05T07:05:45Z' updated: '2026-02-06T00:31:50Z' language: Ruby archived: false stars: 940 watchers: 14 forks: 140 owner: interagent logo: https://avatars.githubusercontent.com/u/7388387?v=4 license: MIT repoEtag: '"47f3d8d33beb4003d17d98788021b5579e49a0dc9249e876be38f2dd44bad220"' repoLastModified: Fri, 06 Feb 2026 00:31:50 GMT foundInMaster: true id: 64f8f7a816e2d8825abd1a213d9e3fb5 - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/ahx/openapi_first v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpX2ZpcnN0CgpvcGVuYXBpX2ZpcnN0IGlzIGEgUnVieSBnZW0gZm9yIHJlcXVlc3QgLyByZXNwb25zZSB2YWxpZGF0aW9uIGFuZCBjb250cmFjdC10ZXN0aW5nIGFnYWluc3QgYW4gW09wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pIDMuMCBvciAzLjEgT3BlbmFwaSBBUEkgZGVzY3JpcHRpb24gKE9BRCkuIEl0IG1ha2VzIGFuIEFQSUZpcnN0IHdvcmtmbG93IGVhc3kgYW5kIHJlbGlhYmxlLgoKIyMgVXNhZ2UKCkNvbmZpZ3VyZQpgYGBydWJ5Ck9wZW5hcGlGaXJzdC5yZWdpc3Rlcignb3BlbmFwaS9vcGVuYXBpLnlhbWwnKQpgYGAKClVzZSBhbiBPQUQgdG8gdmFsaWRhdGUgaW5jb21pbmcgcmVxdWVzdHM6CmBgYHJ1YnkKdXNlIE9wZW5hcGlGaXJzdDo6TWlkZGxld2FyZXM6OlJlcXVlc3RWYWxpZGF0aW9uCmBgYAoKVHVybiB5b3VyIHJlcXVlc3QgdGVzdHMgaW50byBbY29udHJhY3QgdGVzdHNdKCNjb250cmFjdC10ZXN0aW5nKSBhZ2FpbnN0IGFuIE9BRDoKYGBgcnVieQojIHNwZWNfaGVscGVyLnJiCnJlcXVpcmUgJ29wZW5hcGlfZmlyc3QnCk9wZW5hcGlGaXJzdDo6VGVzdC5zZXR1cAoKcmVxdWlyZSAnbXlfYXBwJwpSU3BlYy5jb25maWd1cmUgZG8gfGNvbmZpZ3wKICBjb25maWcuaW5jbHVkZSBPcGVuYXBpRmlyc3Q6OlRlc3Q6Ok1ldGhvZHNbTXlBcHBdLCB0eXBlOiA6cmVxdWVzdAplbmQKYGBgCgojIyBDb250ZW50cwoKPCEtLSBUT0MgLS0+CgotIFtDb25maWd1cmF0aW9uXSgjY29uZmlndXJhdGlvbikKLSBbUmFjayBNaWRkbGV3YXJlc10oI3JhY2stbWlkZGxld2FyZXMpCiAgLSBbUmVxdWVzdCB2YWxpZGF0aW9uXSgjcmVxdWVzdC12YWxpZGF0aW9uKQogIC0gW1Jlc3BvbnNlIHZhbGlkYXRpb25dKCNyZXNwb25zZS12YWxpZGF0aW9uKQotIFtDb250cmFjdCB0ZXN0aW5nXSgjY29udHJhY3QtdGVzdGluZykKICAtIFtUZXN0IGFzc2VydGlvbnNdKCN0ZXN0LWFzc2VydGlvbnMpCi0gW01hbnVhbCB1c2VdKCNtYW51YWwtdXNlKQotIFtGcmFtZXdvcmsgaW50ZWdyYXRpb25dKCNmcmFtZXdvcmstaW50ZWdyYXRpb24pCi0gW0hvb2tzXSgjaG9va3MpCi0gW0FsdGVybmF0aXZlc10oI2FsdGVybmF0aXZlcykKLSBbRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnNdKCNmcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucykKLSBbRGV2ZWxvcG1lbnRdKCNkZXZlbG9wbWVudCkKICAtIFtCZW5jaG1hcmtzXSgjYmVuY2htYXJrcykKICAtIFtDb250cmlidXRpbmddKCNjb250cmlidXRpbmcpCgo8IS0tIC9UT0MgLS0+CgojIyBDb25maWd1cmF0aW9uCgpZb3Ugc2hvdWxkIHJlZ2lzdGVyIE9BRHMgZ2xvYmFsbHkgc28geW91IGRvbid0IGhhdmUgdG8gbG9hZCB0aGUgZmlsZSBtdWx0aXBsZSB0aW1lcyBvciB0byByZWZlcm5jZSB0aGVtIGJ5IFN5bWJvbCAobGlrZSA6djEgaW4gdGhpcyBleGFtcGxlKS4KYGBgcnVieQpPcGVuYXBpRmlyc3QuY29uZmlndXJlIGRvIHxjb25maWd8CiAgY29uZmlnLnJlZ2lzdGVyKCdvcGVuYXBpL29wZW5hcGkueWFtbCcpICMgOmRlZmF1bHQKICBjb25maWcucmVnaXN0ZXIoJ29wZW5hcGkvdjEub3BlbmFwaS55YW1sJywgYXM6IDp2MSkKZW5kCmBgYAoKWW91IGNhbiBjb25maWd1cmUgZGVmYXVsdCBvcHRpb25zIGdsb2JhbGx5OgoKYGBgcnVieQpPcGVuYXBpRmlyc3QuY29uZmlndXJlIGRvIHxjb25maWd8CiAgIyBTcGVjaWZ5IHdoaWNoIHBsdWdpbiBpcyB1c2VkIHRvIHJlbmRlciBlcnJvciByZXNwb25zZXMgcmV0dXJuZWQgYnkgdGhlIHJlcXVlc3QgdmFsaWRhdGlvbiBtaWRkbGV3YXJlIChkZWZhdWx0cyB0byA6ZGVmYXVsdCkKICBjb25maWcucmVxdWVzdF92YWxpZGF0aW9uX2Vycm9yX3Jlc3BvbnNlID0gOmpzb25hcGkKZW5kCmBgYAoKb3IgY29uZmlndXJlIHBlciBpbnN0YW5jZToKCmBgYHJ1YnkKT3BlbmFwaUZpcnN0LmxvYWQoJ29wZW5hcGkueWFtbCcpIGRvIHxjb25maWd8CiAgY29uZmlnLnJlcXVlc3RfdmFsaWRhdGlvbl9lcnJvcl9yZXNwb25zZSA9IDpqc29uYXBpCmVuZApgYGAKCiMjIFJhY2sgTWlkZGxld2FyZXMKCiMjIyBSZXF1ZXN0IHZhbGlkYXRpb24KClRoZSByZXF1ZXN0IHZhbGlkYXRpb24gbWlkZGxld2FyZSByZXR1cm5zIGEgNHh4IGlmIHRoZSByZXF1ZXN0IGlzIGludmFsaWQgb3Igbm90IGRlZmluZWQgaW4gdGhlIEFQSSBkZXNjcmlwdGlvbi4gSXQgYWRkcyBhIHJlcXVlc3Qgb2JqZWN0IHRvIHRoZSBjdXJyZW50IFJhY2sgZW52aXJvbm1lbnQgYXQgYGVudltPcGVuYXBpRmlyc3Q6OlJFUVVFU1RdYCB3aXRoIHRoZSByZXF1ZXN0IHBhcmFtZXRlcnMgcGFyc2VkIGV4YWN0bHkgYXMgZGVzY3JpYmVkIGluIHlvdXIgQVBJIGRlc2NyaXB0aW9uIHBsdXMgYWNjZXNzIHRvIG1ldGEgaW5mb3JtYXRpb24gZnJvbSB5b3VyIEFQSSBkZXNjcmlwdGlvbi4gU2VlIF9bTWFudWFsIHVzZV0oI21hbnVhbC11c2UpXyBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoYXQgb2JqZWN0LgoKYGBgcnVieQp1c2UgT3BlbmFwaUZpcnN0OjpNaWRkbGV3YXJlczo6UmVxdWVzdFZhbGlkYXRpb24KCiMgUGFzcyBgcmFpc2VfZXJyb3I6IHRydWVgIHRvIHJhaXNlIGFuIGVycm9yIGlmIHJlcXVlc3QgaXMgaW52YWxpZDoKdXNlIE9wZW5hcGlGaXJzdDo6TWlkZGxld2FyZXM6OlJlcXVlc3RWYWxpZGF0aW9uLCByYWlzZV9lcnJvcjogdHJ1ZQpgYGAKCiMjIyMgRXJyb3IgcmVzcG9uc2VzCgpvcGVuYXBpX2ZpcnN0IHByb2R1Y2VzIGEgdXNlZnVsIG1hY2hpbmUgcmVhZGFibGUgZXJyb3IgcmVzcG9uc2UgdGhhdCBjYW4gYmUgY3VzdG9taXplZC4KVGhlIGRlZmF1bHQgcmVzcG9uc2UgbG9va3MgbGlrZSB0aGlzLiBTZWUgYWxzbyBbUkZDIDk0NTddKGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM5NDU3KS4KCmBgYGpzb24KaHR0cC1zdGF0dXM6IDQwMApjb250ZW50LXR5cGU6ICJhcHBsaWNhdGlvbi9wcm9ibGVtK2pzb24iCgp7CiAgInRpdGxlIjogIkJhZCBSZXF1ZXN0IEJvZHkiLAogICJzdGF0dXMiOiA0MDAsCiAgImVycm9ycyI6IFsKICAgIHsKICAgICAgIm1lc3NhZ2UiOiAidmFsdWUgYXQgYC9kYXRhL25hbWVgIGlzIG5vdCBhIHN0cmluZyIsCiAgICAgICJwb2ludGVyIjogIi9kYXRhL25hbWUiLAogICAgICAiY29kZSI6ICJzdHJpbmciCiAgICB9LAogICAgewogICAgICAibWVzc2FnZSI6ICJudW1iZXIgYXQgYC9kYXRhL251bWJlck9mTGVnc2AgaXMgbGVzcyB0aGFuOiAyIiwKICAgICAgInBvaW50ZXIiOiAiL2RhdGEvbnVtYmVyT2ZMZWdzIiwKICAgICAgImNvZGUiOiAibWluaW11bSIKICAgIH0sCiAgICB7CiAgICAgICJtZXNzYWdlIjogIm9iamVjdCBhdCBgL2RhdGFgIGlzIG1pc3NpbmcgcmVxdWlyZWQgcHJvcGVydGllczogbWFuZGF0b3J5IiwKICAgICAgInBvaW50ZXIiOiAiL2RhdGEiLAogICAgICAiY29kZSI6ICJyZXF1aXJlZCIKICAgIH0KICBdCn0KYGBgCgpvcGVuYXBpX2ZpcnN0IG9mZmVycyBhIFtKU09OOkFQSV0oaHR0cHM6Ly9qc29uYXBpLm9yZy8pIGVycm9yIHJlc3BvbnNlIGJ5IHBhc3NpbmcgYGVycm9yX3Jlc3BvbnNlOiA6anNvbmFwaWA6CgpgYGBydWJ5CnVzZSBPcGVuYXBpRmlyc3Q6Ok1pZGRsZXdhcmVzOjpSZXF1ZXN0VmFsaWRhdGlvbiwgJ29wZW5hcGkueWFtbCcsIGVycm9yX3Jlc3BvbnNlOiA6anNvbmFwaQpgYGAKCjxkZXRhaWxzPgo8c3VtbWFyeT5TZWUgZGV0YWlscyBvZiBKU09OOkFQSSBlcnJvciByZXNwb25zZTwvc3VtbWFyeT4KCmBgYGpzb24KLy8gaHR0cC1zdGF0dXM6IDQwMAovLyBjb250ZW50LXR5cGU6ICJhcHBsaWNhdGlvbi92bmQuYXBpK2pzb24iCgp7CiAgImVycm9ycyI6IFsKICAgIHsKICAgICAgInN0YXR1cyI6ICI0MDAiLAogICAgICAic291cmNlIjogewogICAgICAgICJwb2ludGVyIjogIi9kYXRhL25hbWUiCiAgICAgIH0sCiAgICAgICJ0aXRsZSI6ICJ2YWx1ZSBhdCBgL2RhdGEvbmFtZWAgaXMgbm90IGEgc3RyaW5nIiwKICAgICAgImNvZGUiOiAic3RyaW5nIgogICAgfSwKICAgIHsKICAgICAgInN0YXR1cyI6ICI0MDAiLAogICAgICAic291cmNlIjogewogICAgICAgICJwb2ludGVyIjogIi9kYXRhL251bWJlck9mTGVncyIKICAgICAgfSwKICAgICAgInRpdGxlIjogIm51bWJlciBhdCBgL2RhdGEvbnVtYmVyT2ZMZWdzYCBpcyBsZXNzIHRoYW46IDIiLAogICAgICAiY29kZSI6ICJtaW5pbXVtIgogICAgfSwKICAgIHsKICAgICAgInN0YXR1cyI6ICI0MDAiLAogICAgICAic291cmNlIjogewogICAgICAgICJwb2ludGVyIjogIi9kYXRhIgogICAgICB9LAogICAgICAidGl0bGUiOiAib2JqZWN0IGF0IGAvZGF0YWAgaXMgbWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0aWVzOiBtYW5kYXRvcnkiLAogICAgICAiY29kZSI6ICJyZXF1aXJlZCIKICAgIH0KICBdCn0KYGBgCgo8L2RldGFpbHM+CgojIyMjIEN1c3RvbSBlcnJvciByZXNwb25zZXMKCllvdSBjYW4gYnVpbGQgeW91ciBvd24gY3VzdG9tIGVycm9yIHJlc3BvbnNlIHdpdGggYGVycm9yX3Jlc3BvbnNlOiBNeUN1c3RvbUNsYXNzYCB0aGF0IGltcGxlbWVudHMgYE9wZW5hcGlGaXJzdDo6RXJyb3JSZXNwb25zZWAuCllvdSBjYW4gZGVmaW5lIGN1c3RvbSBlcnJvciByZXNwb25zZXMgZ2xvYmFsbHkgYnkgaW5jbHVkaW5nIC8gaW1wbGVtZW50aW5nIGBPcGVuYXBpRmlyc3Q6OkVycm9yUmVzcG9uc2VgIGFuZCByZWdpc3RlciBpdCB2aWEgYE9wZW5hcGlGaXJzdC5yZWdpc3Rlcl9lcnJvcl9yZXNwb25zZShteV9uYW1lLCBNeUN1c3RvbUVycm9yUmVzcG9uc2UpYCBhbmQgc2V0IGBlcnJvcl9yZXNwb25zZTogbXlfbmFtZWAuCgojIyMgUmVzcG9uc2UgdmFsaWRhdGlvbgoKVGhpcyBtaWRkbGV3YXJlIHJhaXNlcyBhbiBlcnJvciBieSBkZWZhdWx0IGlmIHRoZSByZXNwb25zZSBpcyBub3QgdmFsaWQuClRoaXMgY2FuIGJlIHVzZWZ1bCBpbiBhIHRlc3Qgb3Igc3RhZ2luZyBlbnZpcm9ubWVudCwgZXNwZWNpYWxseSBpZiB5b3UgYXJlIGFkb3B0aW5nIE9wZW5BUEkgZm9yIGFuIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uLgoKYGBgcnVieQp1c2UgT3BlbmFwaUZpcnN0OjpNaWRkbGV3YXJlczo6UmVzcG9uc2VWYWxpZGF0aW9uIGlmIEVOVlsnUkFDS19FTlYnXSA9PSAndGVzdCcKCiMgUGFzcyBgcmFpc2VfZXJyb3I6IGZhbHNlYCB0byBub3QgcmFpc2UgYW4gZXJyb3I6CnVzZSBPcGVuYXBpRmlyc3Q6Ok1pZGRsZXdhcmVzOjpSZXNwb25zZVZhbGlkYXRpb24sIHJhaXNlX2Vycm9yOiBmYWxzZQpgYGAKCklmIHlvdSBhcmUgYWRvcHRpbmcgT3BlbkFQSSB5b3UgY2FuIHVzZSB0aGVzZSBvcHRpb25zIHRvZ2V0aGVyIHdpdGggW2hvb2tzXSgjaG9va3MpIHRvIGdldCBub3RpZmllZCBhYm91dCByZXF1ZXN0cy9yZXNwb25zZXMgdGhhdCBkbyBtYXRjaCB5b3VyIEFQSSBkZXNjcmlwdGlvbi4KCiMjIENvbnRyYWN0IFRlc3RpbmcKCllvdSBjYW4gc2VlIHlvdXIgT3BlbkFQSSBBUEkgZGVzY3JpcHRpb24gYXMgYSBjb250cmFjdCB0aGF0IHlvdXIgY2xpZW50cyBjYW4gcmVseSBvbiBhcyBob3cgeW91ciBBUEkgYmVoYXZlcy4gVGhlcmUgYXJlIHR3byBhc3BlY3RzIG9mIGNvbnRyYWN0IHRlc3Rpbmc6IFZhbGlkYXRpb24gYW5kIENvdmVyYWdlLiBCeSB2YWxpZGF0aW5nIHJlcXVlc3RzIGFuZCByZXNwb25zZXMsIHlvdSBjYW4gYXZvaWQgdGhhdCB5b3VyIEFQSSBpbXBsZW1lbnRhdGlvbiBwcm9jZXNzZXMgcmVxdWVzdHMgb3IgcmV0dXJucyByZXNwb25zZXMgdGhhdCBkb24ndCBtYXRjaCB5b3VyIEFQSSBkZXNjcmlwdGlvbi4gVG8gbWFrZSBzdXJlIHlvdXIgX3dob2xlXyBBUEkgZGVzY3JpcHRpb24gaXMgaW1wbGVtZW50ZWQsIG9wZW5hcGlfZmlyc3QgY2FuIGNoZWNrIHRoYXQgYWxsIG9mIHlvdXIgQVBJIGRlc2NyaXB0aW9uIGlzIGNvdmVyZWQgd2hlbiB5b3UgdGVzdCB5b3VyIEFQSSB3aXRoIFtyYWNrLXRlc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9yYWNrL3JhY2stdGVzdCkuCgpIZXJlIGlzIGhvdyB0byBzZXQgaXQgdXA6CgoxLiBTZXR1cCB0aGUgdGVzdCBtb2RlCiAgICBgYGBydWJ5CiAgICAjIHNwZWNfaGVscGVyLnJiCiAgICByZXF1aXJlICdvcGVuYXBpX2ZpcnN0JwogICAgT3BlbmFwaUZpcnN0OjpUZXN0LnNldHVwCiAgICBgYGAKMi4gT2JzZXJ2ZSB5b3VyIGFwcGxpY2F0aW9uLiBZb3UgY2FuIGRvIHRoaXMgaW4gbXVsdGlwbGUgd2F5czoKICAgIC0gQWRkIGFuIGBhcHBgIG1ldGhvZCB0byB5b3VyIHRlc3RzICh3aGljaCBpcyBjYWxsZWQgYnkgcmFjay10ZXN0KSB0aGF0IHdyYXBzIHlvdXIgYXBwbGljYXRpb24gd2l0aCBzaWxlbnQgcmVxdWVzdCAvIHJlc3BvbnNlIHZhbGlkYXRpb24uCiAgICAgIGBgYHJ1YnkKICAgICAgbW9kdWxlIFJlcXVlc3RTcGVjSGVscGVycwogICAgICAgIGRlZiBhcHAKICAgICAgICAgIE9wZW5hcGlGaXJzdDo6VGVzdC5hcHAoTXlBcHApCiAgICAgICAgZW5kCiAgICAgIGVuZAoKICAgICAgUlNwZWMuY29uZmlndXJlIGRvIHxjb25maWd8CiAgICAgICAgY29uZmlnLmluY2x1ZGUgUmVxdWVzdFNwZWNIZWxwZXJzLCB0eXBlOiA6cmVxdWVzdAogICAgICBlbmQKICAgICAgYGBgCgogICAgICBPciBkbyB0aGlzIGJ5IGNyZWF0aW5nIGEgTW9kdWxlIGFuZCBpbmNsdWRpbmcgaXQgdG8gYWRkIGFuICJhcHAiIG1ldGhvZC4KCiAgICAgIGBgYHJ1YnkKICAgICAgUlNwZWMuY29uZmlndXJlIGRvIHxjb25maWd8CiAgICAgICAgY29uZmlnLmluY2x1ZGUgT3BlbmFwaUZpcnN0OjpUZXN0OjpNZXRob2RzW015QXBwXSwgdHlwZTogOnJlcXVlc3QKICAgICAgZW5kCiAgICAgIGBgYAozLiBSdW4geW91ciB0ZXN0cy4gVGhlIENvdmVyYWdlIGZlYXR1cmUgd2lsbCB0ZWxsIHlvdSBhYm91dCBtaXNzaW5nIG9yIGludmFsaWQgcmVxdWVzdHMvcmVzcG9uc2VzOgogICAgICBgYGAKICAgICAg4pyTIEdFVCAvc3RhdGlvbnMKICAgICAgICDinJMgMjAwKGFwcGxpY2F0aW9uL2pzb24pCiAgICAgICAg4p2MIDIwMChhcHBsaWNhdGlvbi94bWwpIOKAkyBObyByZXNwb25zZXMgdHJhY2tlZCEKICAgICAgICDinYwgNDAwKGFwcGxpY2F0aW9uL3Byb2JsZW0ranNvbikg4oCTIE5vIHJlc3BvbnNlcyB0cmFja2VkIQogICAgICBgYGAKCiAgICAgIE5vdyBhZGQgdGVzdHMgZm9yIGFsbCB0aG9zZSAi4p2MIiB0byBtYWtlIHRoZW0gIuKckyIgYW5kIHlvdSdyZSBncmVlbiEKCj4gWyFOT1RFXQo+IENoZWNrIG91dCBbZmFyYWRheS1vcGVuYXBpXShodHRwczovL2NvZGViZXJnLm9yZy9haHgvZmFyYWRheS1vcGVuYXBpKSB0byBoYXZlIHlvdXIgQVBJIF9jbGllbnRfIHZhbGlkYXRlIHJlcXVlc3QvcmVzcG9uc2VzIGFnYWluc3QgYW4gT0FELCB3aGljaCBpcyB1c2VmdWwgdG8gdmFsaWRhdGUgSFRUUCBtb2NrcyBkdXJpbmcgdGVzdGluZy4KCiMjIyBDb25maWd1cmUgdGVzdCBjb3ZlcmFnZQoKWW91IGNhbiBpZ25vcmUgZXJyb3JzIGZvciBjZXJ0YWluIHJlcXVlc3RzL3Jlc3BvbnNlcy4gVGhpcyB3aWxsIHN0b3AgYE9wZW5hcGlGaXJzdDo6VGVzdGAgZnJvbSByYWlzaW5nIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYmxvY2sgcmV0dXJucyB0cnVlLiAKCmBgYHJ1YnkKT3BlbmFwaUZpcnN0OjpUZXN0LnNldHVwIGRvIHx0ZXN0fAogIHRlc3QuaWdub3JlX3JlcXVlc3RfZXJyb3IgZG8gfHZhbGlkYXRlZF9yZXF1ZXN0fAogICAgIyBJZ25vcmUgdW5rbm93biByZXF1ZXN0cyBvbiBjZXJ0YWluIHBhdGhzCiAgICB2YWxpZGF0ZWRfcmVxdWVzdC5wYXRoLnN0YXJ0X3dpdGg/KCcvYXBpL3YxJykgJiYgdmFsaWRhdGVkX3JlcXVlc3QudW5rbm93bj8KICBlbmQKICAKICB0ZXN0Lmlnbm9yZV9yZXNwb25zZV9lcnJvciBkbyB8dmFsaWRhdGVkX3Jlc3BvbnNlLCByYWNrX3JlcXVlc3R8CiAgICAjIElnbm9yZSBpbnZhbGlkIHJlc3BvbnNlIGJvZGllcyBvbiBjZXJ0YWluIHBhdGhzCiAgICB2YWxpZGF0ZWRfcmVxdWVzdC5wYXRoLnN0YXJ0X3dpdGg/KCcvYXBpL2xlZ2FjeS9zdHVmZicpICYmIHZhbGlkYXRlZF9yZXF1ZXN0LmVycm9yLnR5cGUgPT0gIDppbnZhbGlkX2JvZHkgICAgICAKICBlbmQKZW5kCmBgYAoKCk9wZW5hcGlGaXJzdDo6VGVzdCByYWlzZXMgYW4gZXJyb3Igd2hlbiBhIHJlc3BvbnNlIHN0YXR1cyBpcyBub3QgZGVmaW5lZCBleGNlcHQgZm9yIDQwNCBhbmQgNTAwLiBZb3UgY2FuIGNoYW5nZSB0aGlzOgoKYGBgcnVieQpPcGVuYXBpRmlyc3Q6OlRlc3Quc2V0dXAgZG8gfHRlc3R8CiAgdGVzdC5pZ25vcmVkX3Vua25vd25fc3RhdHVzIDw8IDQwMwplbmQKYGBgCgpPciB5b3UgY2FuIGlnbm9yZSBhbGwgdW5rbm93biByZXNwb25zZSBzdGF0dXM6CgpgYGBydWJ5Ck9wZW5hcGlGaXJzdDo6VGVzdC5zZXR1cCBkbyB8dGVzdHwKICB0ZXN0Lmlnbm9yZV91bmtub3duX3Jlc3BvbnNlX3N0YXR1cyA9IHRydWUKZW5kCmBgYAoKRXhjbHVkZSBjZXJ0YWluIF9yZXNwb25zZXNfIGZyb20gY292ZXJhZ2Ugd2l0aCBgc2tpcF9jb3ZlcmFnZWA6CgpgYGBydWJ5Ck9wZW5hcGlGaXJzdDo6VGVzdC5zZXR1cCBkbyB8dGVzdHwKICB0ZXN0LnNraXBfcmVzcG9uc2VfY292ZXJhZ2UgZG8gfHJlc3BvbnNlX2RlZmluaXRpb258CiAgICByZXNwb25zZV9kZWZpbml0aW9uLnN0YXR1cyA9PSAnNVhYJwogIGVuZAplbmQKYGBgCgpTa2lwIGNvdmVyYWdlIGZvciBhIHJlcXVlc3QgYW5kIGFsbCByZXNwb25zZXMgYWxsdG9nZXRoZXIgb2YgYSByb3V0ZSB3aXRoIGBza2lwX2NvdmVyYWdlYDoKCmBgYHJ1YnkKT3BlbmFwaUZpcnN0OjpUZXN0LnNldHVwIGRvIHx0ZXN0fAogIHRlc3Quc2tpcF9jb3ZlcmFnZSBkbyB8cGF0aCwgcmVxdWVzdF9tZXRob2R8CiAgICBwYXRoID09ICcvYm9va2luZ3Mve2Jvb2tpbmdJZH0nICYmIHJlcXVlc3RzX21ldGhvZCA9PSAnREVMRVRFJwogIGVuZAplbmQKYGBgCgpPcGVuYXBpRmlyc3Q6OlRlc3QgcmFpc2VzIGFuIGVycm9yIHdoZW4gYSByZXF1ZXN0IGlzIG5vdCBkZWZpbmVkLiBZb3UgY2FuIGRlYWN0aXZhdGUgdGhpcyB3aXRoOgoKYGBgcnVieQpPcGVuYXBpRmlyc3Q6OlRlc3Quc2V0dXAgZG8gfHRlc3R8CiAgdGVzdC5pZ25vcmVfdW5rbm93bl9yZXF1ZXN0cyA9IHRydWUKZW5kCmBgYAoKIyMjIFRlc3QgYXNzZXJ0aW9ucwoKPiBbIVdBUk5JTkddCj4gWW91IHByb2JhYmx5IGRvbid0IG5lZWQgdGhpcy4gSnVzdCBzZXR1cCBbQ29udHJhY3QgdGVzdGluZyBhbmQgQVBJIGNvdmVyYWdlXSgjY29udHJhY3QtdGVzdGluZykgYW5kIHVzZSB5b3VyIG5vcm1hbCBhc3NlcnRpb25zLgoKb3BlbmFwaV9maXJzdCBzaGlwcyB3aXRoIGEgc2ltcGxlIGJ1dCBwb3dlcmZ1bCBUZXN0IG1ldGhvZCBgYXNzZXJ0X2FwaV9jb25mb3JtYCB0byBydW4gcmVxdWVzdCBhbmQgcmVzcG9uc2UgdmFsaWRhdGlvbiBpbiB5b3VyIHRlc3RzIHdpdGhvdXQgdXNpbmcgdGhlIG1pZGRsZXdhcmVzLiBUaGlzIGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgd2l0aCByYWNrLXRlc3QuCgpIZXJlIGlzIGhvdyB0byB1c2UgaXQgd2l0aCBSU3BlYywgYnV0IE1pbmlUZXN0IHdvcmtzIGp1c3QgYXMgZ29vZDoKCmBgYHJ1YnkKIyBzcGVjX2hlbHBlci5yYgpPcGVuYXBpRmlyc3Q6OlRlc3Quc2V0dXAgZG8gfHRlc3R8CiAgdGVzdC5yZWdpc3RlcihGaWxlLmpvaW4oX19kaXJfXywgJy4uL2V4YW1wbGVzL29wZW5hcGkueWFtbCcpLCBhczogOmV4YW1wbGVfYXBwKQplbmQKYGBgCgoKSW5zaWRlIHlvdXIgdGVzdCA6CmBgYHJ1YnkKUlNwZWMuZGVzY3JpYmUgJ0V4YW1wbGUgQXBwJyBkbwogIGluY2x1ZGUgUmFjazo6VGVzdDo6TWV0aG9kcwogIGluY2x1ZGUgT3BlbmFwaUZpcnN0OjpUZXN0OjpNZXRob2RzW0FwcF0KCiAgaXQgJ2lzIEFQSSBjb25mb3JtJyBkbwogICAgZ2V0ICcvJwogICAgYXNzZXJ0X2FwaV9jb25mb3JtKHN0YXR1czogMjAwKQogIGVuZAplbmQKYGBgCgojIyBNYW51YWwgdXNlCgpMb2FkIHRoZSBBUEkgZGVzY3JpcHRpb246CgpgYGBydWJ5CnJlcXVpcmUgJ29wZW5hcGlfZmlyc3QnCgpkZWZpbml0aW9uID0gT3BlbmFwaUZpcnN0LmxvYWQoJ29wZW5hcGkueWFtbCcpCmBgYAoKIyMjIFZhbGlkYXRlIHJlcXVlc3QKCmBgYHJ1YnkKdmFsaWRhdGVkX3JlcXVlc3QgPSBkZWZpbml0aW9uLnZhbGlkYXRlX3JlcXVlc3QocmFja19yZXF1ZXN0KQoKIyBJbnNwZWN0IHRoZSByZXF1ZXN0IGFuZCBhY2Nlc3MgcGFyc2VkIHBhcmFtZXRlcnMKdmFsaWRhdGVkX3JlcXVlc3QudmFsaWQ/CnZhbGlkYXRlZF9yZXF1ZXN0LmludmFsaWQ/CnZhbGlkYXRlZF9yZXF1ZXN0LmVycm9yICMgPT4gRmFpbHVyZSBvYmplY3Qgb3IgbmlsCnZhbGlkYXRlZF9yZXF1ZXN0LnBhcnNlZF9ib2R5ICMgPT4gVGhlIHBhcnNlZCByZXF1ZXN0IGJvZHkgKEhhc2gpCnZhbGlkYXRlZF9yZXF1ZXN0LnBhcnNlZF9xdWVyeSAjIEEgSGFzaCBvZiBxdWVyeSBwYXJhbWV0ZXJzIHRoYXQgYXJlIGRlZmluZWQgaW4gdGhlIEFQSSBkZXNjcmlwdGlvbiwgcGFyc2VkIGV4YWN0bHkgYXMgZGVzY3JpYmVkLgp2YWxpZGF0ZWRfcmVxdWVzdC5wYXJzZWRfcGF0aF9wYXJhbWV0ZXJzCnZhbGlkYXRlZF9yZXF1ZXN0LnBhcnNlZF9oZWFkZXJzCnZhbGlkYXRlZF9yZXF1ZXN0LnBhcnNlZF9jb29raWVzCnZhbGlkYXRlZF9yZXF1ZXN0LnBhcnNlZF9wYXJhbXMgIyBNZXJnZWQgcGFyc2VkIHBhdGgsIHF1ZXJ5IHBhcmFtZXRlcnMgYW5kIHJlcXVlc3QgYm9keQojIEFjY2VzcyB0aGUgT3BlbmFwaSAzIE9wZXJhdGlvbiBPYmplY3QgSGFzaAp2YWxpZGF0ZWRfcmVxdWVzdC5vcGVyYXRpb25bJ3gtZm9vJ10KdmFsaWRhdGVkX3JlcXVlc3Qub3BlcmF0aW9uWydvcGVyYXRpb25JZCddID0+ICJnZXRTdHVmZiIKIyBvciB0aGUgd2hvbGUgcmVxdWVzdCBkZWZpbml0aW9uCnZhbGlkYXRlZF9yZXF1ZXN0LnJlcXVlc3RfZGVmaW5pdGlvbi5wYXRoICMgPT4gIi9wZXRzL3twZXRJZH0iCnZhbGlkYXRlZF9yZXF1ZXN0LnJlcXVlc3RfZGVmaW5pdGlvbi5vcGVyYXRpb25faWQgIyA9PiAic2hvd1BldEJ5SWQiCgojIE9yIHlvdSBjYW4gcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHZhbGlkYXRpb24gZmFpbHM6CmRlZmluaXRpb24udmFsaWRhdGVfcmVxdWVzdChyYWNrX3JlcXVlc3QsIHJhaXNlX2Vycm9yOiB0cnVlKSAjIFJhaXNlcyBPcGVuYXBpRmlyc3Q6OlJlcXVlc3RJbnZhbGlkRXJyb3Igb3IgT3BlbmFwaUZpcnN0OjpOb3RGb3VuZEVycm9yIGlmIHJlcXVlc3QgaXMgaW52YWxpZApgYGAKCiMjIyBWYWxpZGF0ZSByZXNwb25zZQoKYGBgcnVieQp2YWxpZGF0ZWRfcmVzcG9uc2UgPSBkZWZpbml0aW9uLnZhbGlkYXRlX3Jlc3BvbnNlKHJhY2tfcmVxdWVzdCwgcmFja19yZXNwb25zZSkKCiMgSW5zcGVjdCB0aGUgcmVzcG9uc2UgYW5kIGFjY2VzcyBwYXJzZWQgcGFyYW1ldGVycyBhbmQKdmFsaWRhdGVkX3Jlc3BvbnNlLnZhbGlkPwp2YWxpZGF0ZWRfcmVzcG9uc2UuaW52YWxpZD8KdmFsaWRhdGVkX3Jlc3BvbnNlLmVycm9yICMgPT4gRmFpbHVyZSBvYmplY3Qgb3IgbmlsCnZhbGlkYXRlZF9yZXNwb25zZS5zdGF0dXMgIyA9PiAyMDAKdmFsaWRhdGVkX3Jlc3BvbnNlLnBhcnNlZF9ib2R5CnZhbGlkYXRlZF9yZXNwb25zZS5wYXJzZWRfaGVhZGVycwoKIyBPciB5b3UgY2FuIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB2YWxpZGF0aW9uIGZhaWxzOgpkZWZpbml0aW9uLnZhbGlkYXRlX3Jlc3BvbnNlKHJhY2tfcmVxdWVzdCxyYWNrX3Jlc3BvbnNlLCByYWlzZV9lcnJvcjogdHJ1ZSkgIyBSYWlzZXMgT3BlbmFwaUZpcnN0OjpSZXNwb25zZUludmFsaWRFcnJvciBvciBPcGVuYXBpRmlyc3Q6OlJlc3BvbnNlTm90Rm91bmRFcnJvcgpgYGAKCiMjIEhvb2tzCgpZb3UgY2FuIGludGVncmF0ZSB5b3VyIGNvZGUgYXQgY2VydGFpbiBwb2ludHMgZHVyaW5nIHJlcXVlc3QvcmVzcG9uc2UgdmFsaWRhdGlvbiB2aWEgaG9va3MuCgpBdmFpbGFibGUgaG9va3M6CgotIGBhZnRlcl9yZXF1ZXN0X3ZhbGlkYXRpb25gCi0gYGFmdGVyX3Jlc3BvbnNlX3ZhbGlkYXRpb25gCi0gYGFmdGVyX3JlcXVlc3RfcGFyYW1ldGVyX3Byb3BlcnR5X3ZhbGlkYXRpb25gCi0gYGFmdGVyX3JlcXVlc3RfYm9keV9wcm9wZXJ0eV92YWxpZGF0aW9uYAotIGBhZnRlcl9yZXNwb25zZV9ib2R5X3Byb3BlcnR5X3ZhbGlkYXRpb25gCgpTZXR1cCBwZXIgcGVyIGluc3RhbmNlOgoKYGBgcnVieQpPcGVuYXBpRmlyc3QubG9hZCgnb3BlbmFwaS55YW1sJykgZG8gfGNvbmZpZ3wKICBjb25maWcuYWZ0ZXJfcmVxdWVzdF92YWxpZGF0aW9uIGRvIHx2YWxpZGF0ZWRfcmVxdWVzdHwKICAgIHZhbGlkYXRlZF9yZXF1ZXN0LnZhbGlkPyAjID0+IHRydWUgLyBmYWxzZQogIGVuZAogIGNvbmZpZy5hZnRlcl9yZXNwb25zZV92YWxpZGF0aW9uIGRvIHx2YWxpZGF0ZWRfcmVzcG9uc2UsIHJlcXVlc3R8CiAgICBpZiB2YWxpZGF0ZWRfcmVzcG9uc2UuaW52YWxpZD8KICAgICAgd2FybiAiI3tyZXF1ZXN0LnJlcXVlc3RfbWV0aG9kfSAje3JlcXVlc3QucGF0aH06ICN7dmFsaWRhdGVkX3Jlc3BvbnNlLmVycm9yLm1lc3NhZ2V9IgogICAgZW5kCiAgZW5kCmVuZApgYGAKClNldHVwIGdsb2JhbGx5OgoKYGBgcnVieQpPcGVuYXBpRmlyc3QuY29uZmlndXJlIGRvIHxjb25maWd8CiAgY29uZmlnLmFmdGVyX3JlcXVlc3RfcGFyYW1ldGVyX3Byb3BlcnR5X3ZhbGlkYXRpb24gZG8gfGRhdGEsIHByb3BlcnR5LCBwcm9wZXJ0eV9zY2hlbWF8CiAgICBkYXRhW3Byb3BlcnR5XSA9IERhdGUuaXNvODYwMShkYXRhW3Byb3BlcnR5XSkgaWYgcHJvcGVydHlfc2NoZW1hWydmb3JtYXQnXSA9PSAnZGF0ZScKICBlbmQKZW5kCmBgYAoKIyMgRnJhbWV3b3JrIGludGVncmF0aW9uCgpVc2luZyByYWNrIG1pZGRsZXdhcmVzIGlzIHN1cHBvcnRlZCBpbiBwcm9iYWJseSBhbGwgUnVieSB3ZWIgZnJhbWV3b3Jrcy4KClRoZSBjb250cmFjdCB0ZXN0aW5nIGZlYXR1cmUgaXMgZGVzaWduZWQgdG8gYmUgdXNlZCB2aWEgcmFjay10ZXN0LCB3aGljaCBzaG91bGQgYmUgY29tcGF0aWJsZSBhbGwgUnVieSB3ZWIgZnJhbWV3b3JrcyBhcyB3ZWxsLgoKVGhhdCBhc2lkZSwgY2xvc2VyIGludGVncmF0aW9uIHdpdGggc3BlY2lmaWMgZnJhbWV3b3JrcyBsaWtlIFNpbmF0cmEsIEhhbmFtaSwgUm9kYSBvciBvdGhlcnMgd291bGQgYmUgZ3JlYXQuIElmIHlvdSBoYXZlIGlkZWFzLCBwYWluIHBvaW50cyBvciBQUnMsIHBsZWFzZSBkb24ndCBoZXNpdGF0ZSB0byBbc2hhcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9haHgvb3BlbmFwaV9maXJzdC9kaXNjdXNzaW9ucykuCgojIyBBbHRlcm5hdGl2ZXMKClRoaXMgZ2VtIHdhcyBpbnNwaXJlZCBieSBbY29tbWl0dGVlXShodHRwczovL2dpdGh1Yi5jb20vaW50ZXJhZ2VudC9jb21taXR0ZWUpIChSdWJ5KSBhbmQgW0Nvbm5leGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3NwZWMtZmlyc3QvY29ubmV4aW9uKSAoUHl0aG9uKS4KSGVyZSBpcyBhIFtmZWF0dXJlIGNvbXBhcmlzb24gYmV0d2VlbiBvcGVuYXBpX2ZpcnN0IGFuZCBjb21taXR0ZWVdKGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FoeC8xNTM4YzMxZjA2NTJmNDU5ODYxNzEzYjUyNTllMzY2YSkuCgojIyBGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9ucwoKIyMjIEhvdyBjYW4gSSBhZGFwdCByZXF1ZXN0IHBhdGhzIHRoYXQgZG9uJ3QgbWF0Y2ggbXkgc2NoZW1hPwoKTGV0J3Mgc2F5IHlvdSBoYXZlIGBvcGVuYXBpLnlhbWxgIGxpa2UgdGhpczoKCmBgYHlhbWwKc2VydmVyczoKICAtIHVybDogaHR0cHM6Ly95b3VyaG9zdC9hcGkKcGF0aHM6CiAgIyBUaGUgYWN0dWFsIGVuZHBvaW50IFVSTCBpcyBodHRwczovL3lvdXJob3N0L2FwaS9yZXNvdXJjZQogIC9yZXNvdXJjZToKYGBgCgpIZXJlIHlvdXIgT3BlbkFQSSBzY2hlbWEgZGVmaW5lcyBlbmRwb2ludHMgc3RhcnRpbmcgd2l0aCBgL3Jlc291cmNlYCBidXQgeW91ciBhY3R1YWwgYXBwbGljYXRpb24gaXMgbW91bnRlZCBhdCBgL2FwaS9yZXNvdXJjZWAuIFlvdSBjYW4gYnJpZGdlIHRoZSBnYXAgYnkgdHJhbnNmb3JtaW5nIHRoZSBwYXRoIHZpYSB0aGUgYHBhdGg6YCBjb25maWd1cmF0aW9uOgoKYGBgcnVieQpvYWQgPSBPcGVuYXBpRmlyc3QubG9hZCgnb3BlbmFwaS55YW1sJykgZG8gfGNvbmZpZ3wKICBjb25maWcucGF0aCA9IC0+KHJlcSkgeyByZXF1ZXN0LnBhdGguZGVsZXRlX3ByZWZpeCgnL2FwaScpIH0KZW5kCnVzZSBPcGVuYXBpRmlyc3Q6Ok1pZGRsZXdhcmVzOjpSZXF1ZXN0VmFsaWRhdGlvbiwgb2FkCmBgYAoKIyMgRGV2ZWxvcG1lbnQKClJ1biBgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0YCB0byBpbml0aWFsaXplIHRoZSBnaXQgc3VibW9kdWxlcy4KClJ1biBgYmluL3NldHVwYCB0byBpbnN0YWxsIGRlcGVuZGVuY2llcy4KClNlZSBgYnVuZGxlIGV4ZWMgcmFrZWAgdG8gcnVuIHRoZSBsaW50ZXIgYW5kIHRoZSB0ZXN0cy4KClJ1biBgYnVuZGxlIGV4ZWMgcnNwZWNgIHRvIHJ1biB0aGUgdGVzdHMgb25seS4KCiMjIyBCZW5jaG1hcmtzCgpbUmVzdWx0c10oaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vYWh4L2U2ZmZjZWQ1OGJkMmU4ZDViYWZmYjJmNGQyYzFmODIzKQoKUnVuIGJlbmNobWFya3M6CgpgYGBzaApjZCBiZW5jaG1hcmtzCmJ1bmRsZQpidW5kbGUgZXhlYyBydWJ5IGJlbmNobWFya3MucmIKYGBgCgojIyMgQ29udHJpYnV0aW5nCgpJZiB5b3UgaGF2ZSBhIHF1ZXN0aW9uIG9yIGFuIGlkZWEgb3IgZm91bmQgYSBidWcsIGRvbid0IGhlc2l0YXRlIHRvIGNyZWF0ZSBhbiBpc3N1ZSBbb24gR2l0aHViXShodHRwczovL2dpdGh1Yi5jb20vYWh4L29wZW5hcGlfZmlyc3QpIG9yIFtDb2RlYmVyZ10oaHR0cHM6Ly9jb2RlYmVyZy5vcmcvYWh4L29wZW5hcGlfZmlyc3QpIG9yIHNheSBoaSBvbiBbTWFzdG9kb24gKHJ1Ynkuc29jaWFsKV0oaHR0cHM6Ly9ydWJ5LnNvY2lhbC9AYWh4KS4KClB1bGwgcmVxdWVzdHMgYXJlIHZlcnkgd2VsY29tZSBhcyB3ZWxsLCBvZiBjb3Vyc2UuIEZlZWwgZnJlZSB0byBjcmVhdGUgYSAiZHJhZnQiIHB1bGwgcmVxdWVzdCBlYXJseSBvbiwgZXZlbiBpZiB5b3VyIGNoYW5nZSBpcyBzdGlsbCB3b3JrIGluIHByb2dyZXNzLiDwn6SXCg== readmeEtag: '"bc951a2a1156ca6e4ec76f803900d4031a088d0c"' readmeLastModified: Wed, 07 Jan 2026 12:44:41 GMT repositoryId: 171639126 description: >- openapi_first is a Ruby gem for request / response validation and contract-testing against an OpenAPI API description. It makes APIFirst easy and reliable. created: '2019-02-20T09:11:47Z' updated: '2026-01-27T06:59:30Z' language: Ruby archived: false stars: 208 watchers: 3 forks: 23 owner: ahx logo: https://avatars.githubusercontent.com/u/8669?v=4 license: MIT repoEtag: '"7fa48c8f5a915c257030a3af138fbd91b6430fd43e83db5b233efc7f36f67abc"' repoLastModified: Tue, 27 Jan 2026 06:59:30 GMT foundInMaster: true category: Data Validators id: d8781910209a542c2f846aa8c740baf2 name: openapi_first language: Ruby source_description: >- It validates requests and responses against your API description using rack middlewares or a low-level interface. It gives you access to request parameters that are parsed exactly as described in your API description and produces useful customizable error responses if request validation fails. v3_1: true - source: https://openapi.tools/ name: openVALIDATION category: - Description Validators - Data Validators - Parsers repository: https://github.com/openvalidation/openvalidation-openapi link: https://docs.openvalidation.io/openapi/openapi-specification language: Java source_description: >- Allows complex validation rules to be specified in openAPI spec files using natural language. v3: true repositoryMetadata: base64Readme: >- WyFbQnVpbGQgU3RhdHVzXShodHRwczovL2Rldi5henVyZS5jb20vdmFsaWRhcmlhL29wZW52YWxpZGF0aW9uL19hcGlzL2J1aWxkL3N0YXR1cy9vcGVuVkFMSURBVElPTiUyME9wZW5BUEkvb3BlblZBTElEQVRJT04lMjBPcGVuQVBJJTIwbWFzdGVyP2JyYW5jaE5hbWU9bWFzdGVyKV0oaHR0cHM6Ly9kZXYuYXp1cmUuY29tL3ZhbGlkYXJpYS9vcGVudmFsaWRhdGlvbi9fYnVpbGQvbGF0ZXN0P2RlZmluaXRpb25JZD0zJmJyYW5jaE5hbWU9bWFzdGVyKQohW0F6dXJlIERldk9wcyB0ZXN0cyAoY29tcGFjdCldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYXp1cmUtZGV2b3BzL3Rlc3RzL3ZhbGlkYXJpYS9vcGVudmFsaWRhdGlvbi8zP2NvbXBhY3RfbWVzc2FnZSkKWyFbTWF2ZW4gQ2VudHJhbF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9tYXZlbi1jZW50cmFsL3YvaW8ub3BlbnZhbGlkYXRpb24vb3BlbnZhbGlkYXRpb24tb3BlbmFwaS1nZW5lcmF0b3IpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9Zzppby5vcGVudmFsaWRhdGlvbikKWyFbRm9sbG93IHVzIG9uIFR3aXR0ZXJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdHdpdHRlci9mb2xsb3cvb3BlblZBTElEQVRJT04/c3R5bGU9c29jaWFsKV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9vcGVuVkFMSURBVElPTikKCgojIE9wZW5BUEkgR2VuZXJhdG9yIGZvciBvcGVuVkFMSURBVElPTgoKVGhpcyBwcm9qZWN0IHByb3ZpZGVzIGFuIG9wZW5hcGktZ2VuZXJhdG9yIGludGVncmF0aW9uIHRvIGdlbmVyYXRlIHNlcnZpY2VzIHdpdGggdmFsaWRhdGlvbiBsb2dpYyBwcm92aWRlZCBieSBvcGVuVkFMSURBVElPTi4KCiMjIFdoYXQncyBPcGVuQVBJClRoZSBnb2FsIG9mIE9wZW5BUEkgaXMgdG8gZGVmaW5lIGEgc3RhbmRhcmQsIGxhbmd1YWdlLWFnbm9zdGljIGludGVyZmFjZSB0byBSRVNUIEFQSXMgd2hpY2ggYWxsb3dzIGJvdGggaHVtYW5zIGFuZCBjb21wdXRlcnMgdG8gZGlzY292ZXIgYW5kIHVuZGVyc3RhbmQgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgc2VydmljZSB3aXRob3V0IGFjY2VzcyB0byBzb3VyY2UgY29kZSwgZG9jdW1lbnRhdGlvbiwgb3IgdGhyb3VnaCBuZXR3b3JrIHRyYWZmaWMgaW5zcGVjdGlvbi4KV2hlbiBwcm9wZXJseSBkZXNjcmliZWQgd2l0aCBPcGVuQVBJLCBhIGNvbnN1bWVyIGNhbiB1bmRlcnN0YW5kIGFuZCBpbnRlcmFjdCB3aXRoIHRoZSByZW1vdGUgc2VydmljZSB3aXRoIGEgbWluaW1hbCBhbW91bnQgb2YgaW1wbGVtZW50YXRpb24gbG9naWMuClNpbWlsYXIgdG8gd2hhdCBpbnRlcmZhY2VzIGhhdmUgZG9uZSBmb3IgbG93ZXItbGV2ZWwgcHJvZ3JhbW1pbmcsIE9wZW5BUEkgcmVtb3ZlcyB0aGUgZ3Vlc3N3b3JrIGluIGNhbGxpbmcgdGhlIHNlcnZpY2UuCgpDaGVjayBvdXQgW09wZW5BUEktU3BlY10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24pIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBPcGVuQVBJIHByb2plY3QsIGluY2x1ZGluZyBhZGRpdGlvbmFsIGxpYnJhcmllcyB3aXRoIHN1cHBvcnQgZm9yIG90aGVyIGxhbmd1YWdlcyBhbmQgbW9yZS4gCgojIyBXaGF0J3Mgb3BlblZBTElEQVRJT04KCkNoZWNrIG91dCBbb3BlblZBTElEQVRJT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVudmFsaWRhdGlvbi9vcGVudmFsaWRhdGlvbikgdG8gbGVhcm4gYWJvdXQgaHVtYW4gcmVhZGFibGUgdmFsaWRhdGlvbiBydWxlcyBmb3Igc29mdHdhcmUgc29sdXRpb25zLgoKIyMgb3BlblZBTElEQVRJT04gT3BlbkFQSSBDb2RlZ2VuIERvY3VtZW50YXRpb24KCltEb2N1bWVudGF0aW9uXShodHRwczovL2RvY3Mub3BlbnZhbGlkYXRpb24uaW8vb3BlbmFwaS9vcGVuYXBpLXNwZWNpZmljYXRpb24pCgpbVHV0b3JpYWxdKGh0dHBzOi8vZG9jcy5vcGVudmFsaWRhdGlvbi5pby9vcGVuYXBpL29wZW5hcGktdHV0b3JpYWwpCgojIyBIb3cgZG8gSSB1c2UgdGhpcz8KCkRvd25sb2FkIHRoZSBbb3BlblZBTElEQVRJT04gT3BlbkFQSSBnZW5lcmF0b3IgQ0xJXShodHRwczovL2Rvd25sb2FkYXJjaGl2ZS5ibG9iLmNvcmUud2luZG93cy5uZXQvb3BlbnZhbGlkYXRpb24tb3BlbmFwaS1nZW5lcmF0b3Ivb3Ytb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphcikgKHJlcXVpcmVzIHRoZSBKYXZhIFNFIDggcnVudGltZSBlbnZpcm9ubWVudCkuClVzZSBgb3Ytb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphcmAgYXMgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciB0aGUgYG9wZW5hcGktZ2VuZXJhdG9yLWNsaS5qYXJgCgpOb3cgeW91IGNhbiB1c2Ugb3BlblZBTElEQVRJT04gcnVsZXMgaW4geW91ciBzZXJ2aWNlIGNvbnRyYWN0OgpgYGB5YW1sCnBhdGhzOgogIC86IAogICBwb3N0OgogICAgICByZXF1ZXN0Qm9keToKICAgICAgICBjb250ZW50OgogICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9hcHBsaWNhbnQnCiAgICAgICAgICAgIHgtb3YtcnVsZXM6CiAgICAgICAgICAgICAgY3VsdHVyZTogZW4KICAgICAgICAgICAgICBydWxlOiB8CiAgICAgICAgICAgICAgICB0aGUgbG9jYXRpb24gb2YgdGhlIGFwcGxpY2FudCBtdXN0IGJlIERvcnRtdW5kCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdWNjZXNzCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIGFwcGxpY2FudDoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgbmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIGFnZToKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICBsb2NhdGlvbjoKICAgICAgICAgIHR5cGU6IHN0cmluZwpgYGAKKihGb3IgZnVydGhlciBkZXRhaWxzIGNoZWNrIHRoZSBhYm92ZS1tZW50aW9uZWQgZG9jdW1lbnRhdGlvbiBvciB0aGUgb3BlblZBTElEQVRJT04gcHJvamVjdCBpdHNlbGYuKSoKCkFsdGVybmF0aXZlbHksIHRoZSBgb3BlbnZhbGlkYXRpb24tb3BlbmFwaS1nZW5lcmF0b3JgIGphciBpdHNlbGYgY2FuIGJlIGNhbGxlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBPcGVuQVBJIGdlbmVyYXRvci4KCkZvciBtYWMvbGludXg6CmBgYApqYXZhIC1jcCAvcGF0aC90by9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyOi9wYXRoL3RvL29wZW52YWxpZGF0aW9uLW9wZW5hcGktZ2VuZXJhdG9yLmphciBvcmcub3BlbmFwaXRvb2xzLmNvZGVnZW4uT3BlbkFQSUdlbmVyYXRvciBnZW5lcmF0ZSAtZyBvdi1qYXZhLXNwcmluZy1zZXJ2ZXIgLWkgL3BhdGgvdG8vb3BlbmFwaS55YW1sIC1vIC4vdGVzdApgYGAKKERvIG5vdCBmb3JnZXQgdG8gcmVwbGFjZSB0aGUgdmFsdWVzIGAvcGF0aC90by9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyYCwgYC9wYXRoL3RvL29wZW52YWxpZGF0aW9uLW9wZW5hcGktZ2VuZXJhdG9yLmphcmAgYW5kIGAvcGF0aC90by9vcGVuYXBpLnlhbWxgIGluIHRoZSBwcmV2aW91cyBjb21tYW5kKQoKRm9yIFdpbmRvd3MgdXNlcnMsIHlvdSB3aWxsIG5lZWQgdG8gdXNlIGA7YCBpbnN0ZWFkIG9mIGA6YCBpbiB0aGUgY2xhc3NwYXRoLCBlLmcuCmBgYApqYXZhIC1jcCAvcGF0aC90by9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyOy9wYXRoL3RvL29wZW52YWxpZGF0aW9uLW9wZW5hcGktZ2VuZXJhdG9yLmphciBvcmcub3BlbmFwaXRvb2xzLmNvZGVnZW4uT3BlbkFQSUdlbmVyYXRvciBnZW5lcmF0ZSAtZyBvdi1qYXZhLXNwcmluZy1zZXJ2ZXIgLWkgL3BhdGgvdG8vb3BlbmFwaS55YW1sIC1vIC4vdGVzdApgYGAKCk9yIHVzZSBvcGVuVkFMSURBVElPTiBHZW5lcmF0b3IgYXMgTWF2ZW4gUGx1Z2luOgpgYGB4bWwKICAgIDxidWlsZD4KICAgICAgICA8cGx1Z2lucz4KICAgICAgICAgICAgPHBsdWdpbj4KICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5vcGVuYXBpdG9vbHM8L2dyb3VwSWQ+CiAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICAgICA8dmVyc2lvbj4zLjMuNDwvdmVyc2lvbj4KICAgICAgICAgICAgICAgIDxleGVjdXRpb25zPgogICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPmdlbmVyYXRlPC9nb2FsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPgogICAgICAgICAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFNwZWM+JHtwcm9qZWN0LmJhc2VkaXJ9L215LnNwZWMueWFtbDwvaW5wdXRTcGVjPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdlbmVyYXRvck5hbWU+b3YtamF2YS1ydWxlczwvZ2VuZXJhdG9yTmFtZT4gPCEtIHJ1bGVzIG9ubHkgZ2VuZXJhdGlvbiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb25maWdPcHRpb25zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnZva2VyUGFja2FnZT5teS5jdXN0b20ucGFja2FnZTwvaW52b2tlclBhY2thZ2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1vZGVsUGFja2FnZT5teS5jdXN0b20ucGFja2FnZS5tb2RlbDwvbW9kZWxQYWNrYWdlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWdPcHRpb25zPgogICAgICAgICAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CiAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+CiAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbnM+CiAgICAgICAgICAgICAgICA8ZGVwZW5kZW5jaWVzPgogICAgICAgICAgICAgICAgICAgIDxkZXBlbmRlbmN5PgogICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5pby5vcGVudmFsaWRhdGlvbjwvZ3JvdXBJZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+b3BlbnZhbGlkYXRpb24tb3BlbmFwaS1nZW5lcmF0b3I8L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjAuMC4xPC92ZXJzaW9uPgogICAgICAgICAgICAgICAgICAgIDwvZGVwZW5kZW5jeT4KICAgICAgICAgICAgICAgIDwvZGVwZW5kZW5jaWVzPgogICAgICAgICAgICA8L3BsdWdpbj4KICAgICAgICA8L3BsdWdpbnM+CiAgICA8L2J1aWxkPgpgYGAKCgojIyBHZXR0aW5nIGludm9sdmVkCgpQbGVhc2UgcmVmZXIgdG8gb3VyIFtjb250cmlidXRpb24gZ3VpZGVsaW5lc10oQ09OVFJJQlVUSU5HLm1kKS4KCiMjIENvbnRhY3QKCllvdSBjYW4gd3JpdGUgYW4gW0UtTWFpbF0obWFpbHRvOnZhbGlkYXJpYUBvcGVudmFsaWRhdGlvbi5pbykgb3IgbWVudGlvbiBvdXIgdHdpdHRlciBhY2NvdW50IFtAb3BlblZBTElEQVRJT05dKGh0dHBzOi8vdHdpdHRlci5jb20vb3BlbnZhbGlkYXRpb24pLgo= readmeEtag: '"ff79107deef69e96cf5810a882930e2902173b98"' readmeLastModified: Thu, 05 Mar 2020 16:36:31 GMT repositoryId: 204974336 description: >- Generate OpenAPI service stubs with complete validation layer using this openVALIDATION adapter. created: '2019-08-28T16:18:50Z' updated: '2025-04-18T19:35:30Z' language: Java archived: false stars: 5 watchers: 1 forks: 2 owner: openvalidation logo: https://avatars.githubusercontent.com/u/50744669?v=4 license: Apache-2.0 repoEtag: '"7dca9dc961f12ee437efcaf6b1816a4ef03bc188d8a24cce5ad35debaa54c1fd"' repoLastModified: Fri, 18 Apr 2025 19:35:30 GMT foundInMaster: true id: 7a685d5b3cc00e5c26420228fb5f8f00 - source: - https://openapi.tools/ - openapi3 tags name: swagger-parser homepage: https://github.com/swagger-api/swagger-parser language: Java source_description: Swagger Parser reads OpenAPI definitions into current Java POJOs. category: Parsers repository: https://github.com/swagger-api/swagger-parser v2: true v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIFBhcnNlciA8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N3YWdnZXItYXBpL3N3YWdnZXIuaW8vd29yZHByZXNzL2ltYWdlcy9hc3NldHMvU1ctbG9nby1jbHIucG5nIiBoZWlnaHQ9IjUwIiBhbGlnbj0icmlnaHQiPgoKKipOT1RFOioqIElmIHlvdSdyZSBsb29raW5nIGZvciBgc3dhZ2dlci1wYXJzZXJgIDEuWCBhbmQgT3BlbkFQSSAyLjAsIHBsZWFzZSByZWZlciB0byBbdjEgYnJhbmNoXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1wYXJzZXIvdHJlZS92MSkKCioqTk9URToqKiBTaW5jZSB2ZXJzaW9uIDIuMS4wIFN3YWdnZXIgUGFyc2VyIHN1cHBvcnRzIE9wZW5BUEkgMy4xOyBzZWUgW3RoaXMgcGFnZV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS93aWtpL1N3YWdnZXItMi5YLS0tT3BlbkFQSS0zLjEpIGZvciBkZXRhaWxzCgohW0J1aWxkIE1hc3RlciAtIEphdmEgMTEsIDE0IGFuZCAxN10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItcGFyc2VyL3dvcmtmbG93cy9CdWlsZCUyMFRlc3QlMjBEZXBsb3klMjBtYXN0ZXIvYmFkZ2Uuc3ZnP2JyYW5jaD1tYXN0ZXIpCgojIFRhYmxlIG9mIGNvbnRlbnRzCgogIC0gW092ZXJ2aWV3XSgjb3ZlcnZpZXcpCiAgLSBbVGFibGUgb2YgQ29udGVudHNdKCN0YWJsZS1vZi1jb250ZW50cykKICAtIFtVc2FnZV0oI3VzYWdlKQogIC0gW0FkZGluZyB0byB5b3VyIHByb2plY3RdKCNhZGRpbmctdG8teW91ci1wcm9qZWN0KQogICAgLSBbUHJlcmVxdWlzaXRlc10oI3ByZXJlcXVpc2l0ZXMpCiAgLSBbQXV0aGVudGljYXRpb25dKCNhdXRoZW50aWNhdGlvbikgIAogIC0gW09wdGlvbnNdKCNvcHRpb25zKQogICAgLSBbUmVzb2x2ZV0oIzEtcmVzb2x2ZSkKICAgIC0gW1Jlc29sdmVGdWxseV0oIzItcmVzb2x2ZWZ1bGx5KQogICAgLSBbRmxhdHRlbl0oIzMtZmxhdHRlbikKICAgIC0gW1Jlc29sdmVDb21iaW5hdG9yc10oIzQtcmVzb2x2ZWNvbWJpbmF0b3JzKQogIC0gW0V4dGVuc2lvbnNdKCNleHRlbnNpb25zKQogIC0gW09wZW5BUEkgMy4xIFN1cHBvcnRdKCNvcGVuYXBpLTMxLXN1cHBvcnQpCiAgLSBbTGljZW5zZV0oI2xpY2Vuc2UpCiAgIAojIyBPdmVydmlldyAKClRoaXMgaXMgdGhlIFN3YWdnZXIgUGFyc2VyIHByb2plY3QsIHdoaWNoIHBhcnNlcyBPcGVuQVBJIGRlZmluaXRpb25zIGluIEpTT04gb3IgWUFNTCBmb3JtYXQgaW50byBbc3dhZ2dlci1jb3JlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlKSByZXByZXNlbnRhdGlvbiBhcyBbSmF2YSBQT0pPXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL2Jsb2IvbWFzdGVyL21vZHVsZXMvc3dhZ2dlci1tb2RlbHMvc3JjL21haW4vamF2YS9pby9zd2FnZ2VyL3YzL29hcy9tb2RlbHMvT3BlbkFQSS5qYXZhI0wzNiksIHJldHVybmluZyBhbnkgdmFsaWRhdGlvbiB3YXJuaW5ncy9lcnJvcnMuICAKCkl0IGFsc28gcHJvdmlkZXMgYSBzaW1wbGUgZnJhbWV3b3JrIHRvIGFkZCBhZGRpdGlvbmFsIGNvbnZlcnRlcnMgZnJvbSBkaWZmZXJlbnQgZm9ybWF0cyBpbnRvIHRoZSBTd2FnZ2VyIG9iamVjdHMsIG1ha2luZyB0aGUgZW50aXJlIHRvb2xjaGFpbiBhdmFpbGFibGUuCgoKIyMjIFVzYWdlClVzaW5nIHRoZSBTd2FnZ2VyIFBhcnNlciBpcyBzaW1wbGUuICBPbmNlIGluY2x1ZGVkIGluIHlvdXIgcHJvamVjdCwgeW91IGNhbiByZWFkIGEgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIGZyb20gYW55IGxvY2F0aW9uOgoKYGBgamF2YQppbXBvcnQgaW8uc3dhZ2dlci5wYXJzZXIuT3BlbkFQSVBhcnNlcjsKaW1wb3J0IGlvLnN3YWdnZXIudjMucGFyc2VyLk9wZW5BUElWM1BhcnNlcjsKaW1wb3J0IGlvLnN3YWdnZXIudjMucGFyc2VyLmNvcmUubW9kZWxzLlN3YWdnZXJQYXJzZVJlc3VsdDsKaW1wb3J0IGlvLnN3YWdnZXIudjMub2FzLm1vZGVscy5PcGVuQVBJOwoKLy8gLi4uIHlvdXIgY29kZQoKICAvLyBwYXJzZSBhIHN3YWdnZXIgZGVzY3JpcHRpb24gZnJvbSB0aGUgcGV0c3RvcmUgYW5kIGdldCB0aGUgcmVzdWx0CiAgU3dhZ2dlclBhcnNlUmVzdWx0IHJlc3VsdCA9IG5ldyBPcGVuQVBJUGFyc2VyKCkucmVhZExvY2F0aW9uKCJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92My9vcGVuYXBpLmpzb24iLCBudWxsLCBudWxsKTsKICAKICAvLyBvciBmcm9tIGEgZmlsZQogIC8vICAgU3dhZ2dlclBhcnNlUmVzdWx0IHJlc3VsdCA9IG5ldyBPcGVuQVBJUGFyc2VyKCkucmVhZExvY2F0aW9uKCIuL3BhdGgvdG8vb3BlbmFwaS55YW1sIiwgbnVsbCwgbnVsbCk7CiAgCiAgLy8gdGhlIHBhcnNlZCBQT0pPCiAgT3BlbkFQSSBvcGVuQVBJID0gcmVzdWx0LmdldE9wZW5BUEkoKTsKICAKICBpZiAocmVzdWx0LmdldE1lc3NhZ2VzKCkgIT0gbnVsbCkgcmVzdWx0LmdldE1lc3NhZ2VzKCkuZm9yRWFjaChTeXN0ZW0uZXJyOjpwcmludGxuKTsgLy8gdmFsaWRhdGlvbiBlcnJvcnMgYW5kIHdhcm5pbmdzCiAgCiAgaWYgKG9wZW5BUEkgIT0gbnVsbCkgewogICAgLi4uCiAgfQogIApgYGAKCm9yIGZyb20gYSBzdHJpbmc6CgpgYGBqYXZhCmltcG9ydCBpby5zd2FnZ2VyLnBhcnNlci5PcGVuQVBJUGFyc2VyOwppbXBvcnQgaW8uc3dhZ2dlci52My5wYXJzZXIuT3BlbkFQSVYzUGFyc2VyOwppbXBvcnQgaW8uc3dhZ2dlci52My5wYXJzZXIuY29yZS5tb2RlbHMuU3dhZ2dlclBhcnNlUmVzdWx0OwppbXBvcnQgaW8uc3dhZ2dlci52My5vYXMubW9kZWxzLk9wZW5BUEk7CgovLyAuLi4geW91ciBjb2RlCgogIC8vIHBhcnNlIGEgc3dhZ2dlciBkZXNjcmlwdGlvbiBmcm9tIHRoZSBwZXRzdG9yZSBhbmQgZ2V0IHRoZSByZXN1bHQKICBTd2FnZ2VyUGFyc2VSZXN1bHQgcmVzdWx0ID0gbmV3IE9wZW5BUElQYXJzZXIoKS5yZWFkQ29udGVudHMoImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzL29wZW5hcGkuanNvbiIsIG51bGwsIG51bGwpOwogIAogIC8vIG9yIGZyb20gYSBmaWxlCiAgLy8gICBTd2FnZ2VyUGFyc2VSZXN1bHQgcmVzdWx0ID0gbmV3IE9wZW5BUElQYXJzZXIoKS5yZWFkQ29udGVudHMoIi4vcGF0aC90by9vcGVuYXBpLnlhbWwiLCBudWxsLCBudWxsKTsKICAKICAvLyB0aGUgcGFyc2VkIFBPSk8KICBPcGVuQVBJIG9wZW5BUEkgPSByZXN1bHQuZ2V0T3BlbkFQSSgpOwogIAogIGlmIChyZXN1bHQuZ2V0TWVzc2FnZXMoKSAhPSBudWxsKSByZXN1bHQuZ2V0TWVzc2FnZXMoKS5mb3JFYWNoKFN5c3RlbS5lcnI6OnByaW50bG4pOyAvLyB2YWxpZGF0aW9uIGVycm9ycyBhbmQgd2FybmluZ3MKICAKICBpZiAob3BlbkFQSSAhPSBudWxsKSB7CiAgICAuLi4KICB9CiAgCmBgYAoKSWYgeW91IGFyZSBwcm92aWRpbmcgYSBTd2FnZ2VyL09wZW5BUEkgMi4wIGRvY3VtZW50IHRvIHRoZSBwYXJzZXIgLCBlLmcuOgoKYGBgamF2YQpTd2FnZ2VyUGFyc2VSZXN1bHQgcmVzdWx0ID0gbmV3IE9wZW5BUElQYXJzZXIoKS5yZWFkQ29udGVudHMoIi4vcGF0aC90by9zd2FnZ2VyLnlhbWwiLCBudWxsLCBudWxsKTsKYGBgCgp0aGUgU3dhZ2dlci9PcGVuQVBJIDIuMCBkb2N1bWVudCB3aWxsIGJlIGZpcnN0IGNvbnZlcnRlZCBpbnRvIGEgY29tcGFyYWJsZSBPcGVuQVBJIDMuMCBvbmUuCgpZb3UgY2FuIGFsc28gZGlyZWN0bHkgdXNlIGBPcGVuQVBJVjNQYXJzZXJgIHdoaWNoIG9ubHkgaGFuZGxlcyBPcGVuQVBJIDMuMCBkb2N1bWVudHMsIGFuZCBwcm92aWRlcyBhIGNvbnZlbmllbmNlIG1ldGhvZCB0byBnZXQgZGlyZWN0bHkgdGhlIHBhcnNlZCBgT3BlbkFQSSBvYmplY3Q6CgpgYGBqYXZhCmltcG9ydCBpby5zd2FnZ2VyLnYzLnBhcnNlci5PcGVuQVBJVjNQYXJzZXI7CmltcG9ydCBpby5zd2FnZ2VyLnYzLm9hcy5tb2RlbHMuT3BlbkFQSTsKCi8vIC4uLiB5b3VyIGNvZGUKCiAgLy8gcmVhZCBhIHN3YWdnZXIgZGVzY3JpcHRpb24gZnJvbSB0aGUgcGV0c3RvcmUKICAgIAogIE9wZW5BUEkgb3BlbkFQSSA9IG5ldyBPcGVuQVBJVjNQYXJzZXIoKS5yZWFkKCJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92My9vcGVuYXBpLmpzb24iKTsKICAKYGBgCgojIyMgQWRkaW5nIHRvIHlvdXIgcHJvamVjdApZb3UgY2FuIGluY2x1ZGUgdGhpcyBsaWJyYXJ5IGZyb20gU29uYXR5cGUgT1NTIGZvciBTTkFQU0hPVFMsIG9yIE1hdmVuIGNlbnRyYWwgZm9yIHJlbGVhc2VzLiAgSW4geW91ciBkZXBlbmRlbmNpZXM6CgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgPGdyb3VwSWQ+aW8uc3dhZ2dlci5wYXJzZXIudjM8L2dyb3VwSWQ+CiAgPGFydGlmYWN0SWQ+c3dhZ2dlci1wYXJzZXI8L2FydGlmYWN0SWQ+CiAgPHZlcnNpb24+Mi4xLjM3PC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CmBgYAoKIyMjIyBQcmVyZXF1aXNpdGVzCllvdSBuZWVkIHRoZSBmb2xsb3dpbmcgaW5zdGFsbGVkIGFuZCBhdmFpbGFibGUgaW4geW91ciAkUEFUSDoKCiogSmF2YSAxMQoqIFtBcGFjaGUgbWF2ZW4gMy54XShodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy8pCgpBZnRlciBjbG9uaW5nIHRoZSBwcm9qZWN0LCB5b3UgY2FuIGJ1aWxkIGl0IGZyb20gc291cmNlIHdpdGggdGhpcyBjb21tYW5kOgoKYGBgCm12biBwYWNrYWdlCmBgYAoKIyMjIEF1dGhlbnRpY2F0aW9uCgpJZiB5b3VyIE9wZW5BUEkgZGVmaW5pdGlvbiBpcyBwcm90ZWN0ZWQsIHlvdSBjYW4gcGFzcyBoZWFkZXJzIGluIHRoZSByZXF1ZXN0OgpgYGBqYXZhCmltcG9ydCBpby5zd2FnZ2VyLnYzLnBhcnNlci5jb3JlLm1vZGVscy5BdXRob3JpemF0aW9uVmFsdWU7CgovLyAuLi4geW91ciBjb2RlCgogIC8vIGJ1aWxkIGEgYXV0aG9yaXphdGlvbiB2YWx1ZQogIEF1dGhvcml6YXRpb25WYWx1ZSBteVNwZWNpYWxIZWFkZXIgPSBuZXcgQXV0aG9yaXphdGlvblZhbHVlKCkKICAgIC5rZXlOYW1lKCJ4LXNwZWNpYWwtYWNjZXNzIikgIC8vICB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yaXphdGlvbiB0byBwYXNzCiAgICAudmFsdWUoImktYW0tc3BlY2lhbCIpICAgICAgICAvLyAgdGhlIHZhbHVlIG9mIHRoZSBhdXRob3JpemF0aW9uCiAgICAudHlwZSgiaGVhZGVyIik7ICAgICAgICAgICAgICAvLyAgdGhlIGxvY2F0aW9uLCBhcyBlaXRoZXIgYGhlYWRlcmAgb3IgYHF1ZXJ5YAoKICAvLyBvciBpbiBhIHNpbmdsZSBjb25zdHJ1Y3RvcgogIEF1dGhvcml6YXRpb25WYWx1ZSBhcGlLZXkgPSBuZXcgQXV0aG9yaXphdGlvblZhbHVlKCJhcGlfa2V5IiwgInNwZWNpYWwta2V5IiwgImhlYWRlciIpOwogIE9wZW5BUEkgb3BlbkFQSSA9IG5ldyBPcGVuQVBJVjNQYXJzZXIoKS5yZWFkV2l0aEluZm8oCiAgICAiaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uIiwKICAgIEFycmF5cy5hc0xpc3QobXlTcGVjaWFsSGVhZGVyLCBhcGlLZXkpCiAgKTsKYGBgCgojIyMjIERlYWxpbmcgd2l0aCBzZWxmLXNpZ25lZCBTU0wgY2VydGlmaWNhdGVzCklmIHlvdSdyZSBkZWFsaW5nIHdpdGggc2VsZi1zaWduZWQgU1NMIGNlcnRpZmljYXRlcywgb3IgdGhvc2Ugc2lnbmVkIGJ5IEdvRGFkZHksIHlvdSdsbCBuZWVkIHRvIGRpc2FibGUgU1NMIFRydXN0IApNYW5hZ2VyLiAgVGhhdCdzIGRvbmUgYnkgc2V0dGluZyBhIHN5c3RlbSBlbnZpcm9ubWVudCB2YXJpYWJsZSBhcyBzdWNoOgoKYGBgCmV4cG9ydCBUUlVTVF9BTEw9dHJ1ZQpgYGAKCkFuZCB0aGVuIHRoZSBTd2FnZ2VyIFBhcnNlciB3aWxsIF9pZ25vcmVfIGludmFsaWQgY2VydGlmaWNhdGVzLiAgT2YgY291cnNlIHRoaXMgaXMgZ2VuZXJhbGx5IGEgYmFkIGlkZWEsIGJ1dCBpZiB5b3UncmUgCndvcmtpbmcgaW5zaWRlIGEgZmlyZXdhbGwgb3IgcmVhbGx5IGtub3cgd2hhdCB5b3UncmUgZG9pbmcsIHdlbGwsIHRoZXJlJ3MgeW91ciByb3BlLgoKIyMjIyBEZWFsaW5nIHdpdGggTGV0J3MgRW5jcnlwdApEZXBlbmRpbmcgb24gdGhlIHZlcnNpb24gb2YgSmF2YSB0aGF0IHlvdSB1c2UsIGNlcnRpZmljYXRlcyBzaWduZWQgYnkgdGhlIFtMZXQncyBFbmNyeXB0XShodHRwczovL2xldHNlbmNyeXB0Lm9yZykgY2VydGlmaWNhdGUgYXV0aG9yaXR5IF9tYXkgbm90IHdvcmtfIGJ5IGRlZmF1bHQuICBJZiB5b3UgYXJlIHVzaW5nIGFueSB2ZXJzaW9uIG9mIEphdmEgcHJpb3IgdG8gMS44dTEwMSwgeW91IG1vc3QgbGlrZWx5IF9tdXN0XyBpbnN0YWxsIGFuIGFkZGl0aW9uYWwgQ0EgaW4geW91cgpKVk0uICBBbHNvIG5vdGUgdGhhdCAxLjh1MTAxIG1heSBfbm90XyBiZSBzdWZmaWNpZW50IG9uIGl0J3Mgb3duLiAgU29tZSB1c2VycyBoYXZlIHJlcG9ydGVkIHRoYXQgY2VydGFpbiBvcGVyYXRpbmcgc3lzdGVtcyBhcmUgCm5vdCBhY2NlcHRpbmcgTGV0J3MgRW5jcnlwdCBzaWduZWQgY2VydGlmaWNhdGVzLgoKWW91ciBvcHRpb25zIGluY2x1ZGU6CgoqIEFjY2VwdGluZyBhbGwgY2VydGlmaWNhdGVzIHBlciBhYm92ZQoqIEluc3RhbGxpbmcgdGhlIGNlcnRpZmljYXRlIG1hbnVhbGx5IGluIHlvdXIgSlZNIHVzaW5nIHRoZSBrZXlzdG9yZSB1c2luZyB0aGUgYGtleXRvb2xgIGNvbW1hbmQKKiBDb25maWd1cmluZyB0aGUgSlZNIG9uIHN0YXJ0dXAgdG8gbG9hZCB5b3VyIGNlcnRpZmljYXRlCgpCdXQuLi4gdGhpcyBpcyBhbGwgc3RhbmRhcmQgU1NMIGNvbmZpZ3VyYXRpb24gc3R1ZmYgYW5kIGlzIHdlbGwgZG9jdW1lbnRlZCBhY3Jvc3MgdGhlIHdlYi4KCgojIyMgT3B0aW9ucwpQYXJzZXIgdXNlcyBvcHRpb25zIGFzIGEgd2F5IHRvIGN1c3RvbWl6ZSB0aGUgYmVoYXZpb3Igd2hpbGUgcGFyc2luZzoKCiMjIyMgMS4gcmVzb2x2ZToKCmBgYGphdmEKUGFyc2VPcHRpb25zIHBhcnNlT3B0aW9ucyA9IG5ldyBQYXJzZU9wdGlvbnMoKTsKcGFyc2VPcHRpb25zLnNldFJlc29sdmUodHJ1ZSk7IApmaW5hbCBPcGVuQVBJIG9wZW5BUEkgPSBuZXcgT3BlbkFQSVYzUGFyc2VyKCkucmVhZCgiYS55YW1sIiwgbnVsbCwgcGFyc2VPcHRpb25zKTsKYGBgCgoKLSBXaGVuIHJlbW90ZSBvciByZWxhdGl2ZSByZWZlcmVuY2VzIGFyZSBmb3VuZCBpbiB0aGUgcGFyc2VkIGRvY3VtZW50LCBwYXJzZXIgd2lsbCBhdHRlbXB0IHRvOgoKMS4gcmVzb2x2ZSB0aGUgcmVmZXJlbmNlIGluIHRoZSByZW1vdGUgb3IgcmVsYXRpdmUgbG9jYXRpb24gCjEuIHBhcnNlIHRoZSByZXNvbHZlZCByZWZlcmVuY2UKMS4gYWRkIHRoZSByZXNvbHZlZCAiY29tcG9uZW50IiAoZS5nLiBwYXJhbWV0ZXIsIHNjaGVtYSwgcmVzcG9uc2UsIGV0Yy4pIHRvIHRoZSByZXNvbHZlZCBgT3BlbkFQSWAgUE9KTyBjb21wb25lbnRzIHNlY3Rpb24KMS4gcmVwbGFjZSB0aGUgcmVtb3RlL3JlbGF0aXZlIHJlZmVyZW5jZSB3aXRoIGEgbG9jYWwgcmVmZXJlbmNlLCAgZS5nLiA6IGAjL2NvbXBvbmVudHMvc2NoZW1hcy9OYW1lT2ZSZW1vdGVTY2hlbWFgLiAKClRoaXMgYXBwbGllcyB0byBzY2hlbWFzLCBwYXJhbWV0ZXJzLCByZXNwb25zZXMsIHByZXR0eSBtdWNoIGV2ZXJ5dGhpbmcgY29udGFpbmluZyBhIHJlZi4KCiMjIyMgMi4gcmVzb2x2ZUZ1bGx5OgoKYGBgamF2YQpQYXJzZU9wdGlvbnMgcGFyc2VPcHRpb25zID0gbmV3IFBhcnNlT3B0aW9ucygpOwpwYXJzZU9wdGlvbnMuc2V0UmVzb2x2ZSh0cnVlKTsgLy8gaW1wbGljaXQKcGFyc2VPcHRpb25zLnNldFJlc29sdmVGdWxseSh0cnVlKTsKZmluYWwgT3BlbkFQSSBvcGVuQVBJID0gbmV3IE9wZW5BUElWM1BhcnNlcigpLnJlYWQoImEueWFtbCIsIG51bGwsIHBhcnNlT3B0aW9ucyk7CmBgYAoKLSBJbiBzb21lIHNjZW5hcmlvcywgYWZ0ZXIgcmVmZXJlbmNlcyBhcmUgcmVzb2x2ZWQgKHdpdGggYHJlc29sdmVgLCBzZWUgYWJvdmUpLCB5b3UgbWlnaHQgbmVlZCB0byBoYXZlIGFsbCBsb2NhbCByZWZlcmVuY2VzIHJlbW92ZWQgcmVwbGFjaW5nIHRoZSByZWZlcmVuY2Ugd2l0aCB0aGUgY29udGVudCBvZiB0aGUgcmVmZXJlbmNlZCBlbGVtZW50LiBUaGlzIGlzIGZvciBleGFtcGxlIHVzZWQgaW4gW1N3YWdnZXIgSW5mbGVjdG9yXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1pbmZsZWN0b3IpLiBCZSBhd2FyZSB0aGF0IHRoZSByZXN1bHQgY291bGQgYmUgbW9yZSBoZWF2eS9sb25nIGR1ZSB0byBkdXBsaWNhdGlvbgogICAgCk9yaWdpbmFsIGRvY3VtZW50OgoKYGEueWFtbGAgCmBgYApvcGVuYXBpOiAzLjAuMQpwYXRoczoKICAiL25ld1BlcnNvbiI6CiAgICBwb3N0OgogICAgICBzdW1tYXJ5OiBDcmVhdGUgbmV3IHBlcnNvbgogICAgICBkZXNjcmlwdGlvbjogQ3JlYXRlIG5ldyBwZXJzb24KICAgICAgcmVzcG9uc2VzOgogICAgICAgICcyMDAnOgogICAgICAgICAgZGVzY3JpcHRpb246IG9rCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICAiKi8qIjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAiJHJlZiI6ICIuL3JlZi13aXRob3V0LWNvbXBvbmVudC9iLnlhbWwjL2NvbXBvbmVudHMvc2NoZW1hcy9DdXN0b21lclR5cGUiCmBgYApgYi55YW1sYApgYGAKb3BlbmFwaTogMy4wLjEKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgQ3VzdG9tZXJUeXBlOgogICAgICB0eXBlOiBzdHJpbmcKICAgICAgZXhhbXBsZTogRXhhbXBsZSB2YWx1ZQpgYGAKClNlcmlhbGl6ZWQgcmVzdWx0IGFmdGVyIHBhcnNpbmcgd2l0aCBvcHRpb24gYHJlc29sdmVGdWxseSh0cnVlKWAKCmBhLnlhbWxgCmBgYApvcGVuYXBpOiAzLjAuMQpzZXJ2ZXJzOgotIHVybDogLwpwYXRoczoKICAvbmV3UGVyc29uOgogICAgcG9zdDoKICAgICAgc3VtbWFyeTogQ3JlYXRlIG5ldyBwZXJzb24KICAgICAgZGVzY3JpcHRpb246IENyZWF0ZSBuZXcgcGVyc29uCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAyMDA6CiAgICAgICAgICBkZXNjcmlwdGlvbjogb2sKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICcqLyonOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgZXhhbXBsZTogRXhhbXBsZSB2YWx1ZQpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBDdXN0b21lclR5cGU6CiAgICAgIHR5cGU6IHN0cmluZwogICAgICBleGFtcGxlOiBFeGFtcGxlIHZhbHVlCmBgYAoKIyMjIyAzLiBmbGF0dGVuOiAKCmBgYGphdmEKUGFyc2VPcHRpb25zIHBhcnNlT3B0aW9ucyA9IG5ldyBQYXJzZU9wdGlvbnMoKTsKcGFyc2VPcHRpb25zLnNldEZsYXR0ZW4odHJ1ZSk7IApmaW5hbCBPcGVuQVBJIG9wZW5BUEkgPSBuZXcgT3BlbkFQSVYzUGFyc2VyKCkucmVhZCgiYS55YW1sIiwgbnVsbCwgcGFyc2VPcHRpb25zKTsKYGBgCgoKVGhpcyBpcyBraW5kIG9mIHRoZSBvcHBvc2l0ZSBvZiByZXNvbHZlRnVsbHksIGxpbWl0ZWQgdG8gZGVmaW5lZCBzY2hlbWFzLgoKSW4gc29tZSBzY2VuYXJpb3MsIHlvdSBtaWdodCBuZWVkIHRvIGhhdmUgYWxsIHNjaGVtYXMgZGVmaW5lZCBpbmxpbmUgKGUuZy4gYSByZXNwb25zZSBzY2hlbWEpIG1vdmVkIHRvIHRoZSBgY29tcG9uZW50cy9zY2hlbWFzYCBzZWN0aW9uIGFuZCByZXBsYWNlZCB3aXRoIGEgcmVmZXJlbmNlIHRvIHRoZSBuZXdseSBhZGRlZCBzY2hlbWEgd2l0aGluIGBjb21wb25lbnRzL3NjaGVtYXNgLiBUaGlzIGlzIGZvciBleGFtcGxlIHVzZWQgaW4gW1N3YWdnZXIgQ29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikuCgpPcmlnaW5hbCBkb2N1bWVudDoKCmBmbGF0dGVuLnlhbWxgCgpgYGAKb3BlbmFwaTogMy4wLjAKaW5mbzoKICB2ZXJzaW9uOiAxLjAuMAogIHRpdGxlOiBTd2FnZ2VyIFBldHN0b3JlCiAgbGljZW5zZToKICAgIG5hbWU6IE1JVApwYXRoczoKICAvcGV0czoKICAgIGdldDoKICAgICAgc3VtbWFyeTogTGlzdCBhbGwgcGV0cwogICAgICBvcGVyYXRpb25JZDogbGlzdFBldHMKICAgICAgcmVzcG9uc2VzOgogICAgICAgICcyMDAnOgogICAgICAgICAgZGVzY3JpcHRpb246IEFuIHBhZ2VkIGFycmF5IG9mIHBldHMKICAgICAgICAgIGhlYWRlcnM6CiAgICAgICAgICAgIHgtbmV4dDoKICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogQSBsaW5rIHRvIHRoZSBuZXh0IHBhZ2Ugb2YgcmVzcG9uc2VzCiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgICAgIGlkOgogICAgICAgICAgICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiBpbnQ2NAogICAgICAgICAgICAgICAgICAgIG5hbWU6CiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgICB0YWc6CiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKYGBgCgpTZXJpYWxpemVkIHJlc3VsdCBhZnRlciBwYXJzaW5nIHdpdGggb3B0aW9uIGBmbGF0dGVuKHRydWUpYAoKYGBgCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgdGl0bGU6IFN3YWdnZXIgUGV0c3RvcmUKICBsaWNlbnNlOgogICAgbmFtZTogTUlUCiAgdmVyc2lvbjogMS4wLjAKc2VydmVyczoKLSB1cmw6IC8KcGF0aHM6CiAgL3BldHM6CiAgICBnZXQ6CiAgICAgIHRhZ3M6CiAgICAgIC0gcGV0cwogICAgICBzdW1tYXJ5OiBMaXN0IGFsbCBwZXRzCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAyMDA6CiAgICAgICAgICBkZXNjcmlwdGlvbjogQW4gcGFnZWQgYXJyYXkgb2YgcGV0cwogICAgICAgICAgaGVhZGVyczoKICAgICAgICAgICAgeC1uZXh0OgogICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBBIGxpbmsgdG8gdGhlIG5leHQgcGFnZSBvZiByZXNwb25zZXMKICAgICAgICAgICAgICBzdHlsZTogc2ltcGxlCiAgICAgICAgICAgICAgZXhwbG9kZTogZmFsc2UKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL2lubGluZV9yZXNwb25zZV8yMDAnCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIGlubGluZV9yZXNwb25zZV8yMDA6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGlkOgogICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgZm9ybWF0OiBpbnQ2NAogICAgICAgIG5hbWU6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICB0YWc6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKYGBgCgojIyMjIDQuIHJlc29sdmVDb21iaW5hdG9yczogCgpgYGBqYXZhClBhcnNlT3B0aW9ucyBwYXJzZU9wdGlvbnMgPSBuZXcgUGFyc2VPcHRpb25zKCk7CnBhcnNlT3B0aW9ucy5zZXRSZXNvbHZlKHRydWUpOyAvLyBpbXBsaWNpdApwYXJzZU9wdGlvbnMuc2V0UmVzb2x2ZUZ1bGx5KHRydWUpOwpwYXJzZU9wdGlvbnMuc2V0UmVzb2x2ZUNvbWJpbmF0b3JzKGZhbHNlKTsgLy8gZGVmYXVsdCBpcyB0cnVlIApmaW5hbCBPcGVuQVBJIG9wZW5BUEkgPSBuZXcgT3BlbkFQSVYzUGFyc2VyKCkucmVhZCgiYS55YW1sIiwgbnVsbCwgcGFyc2VPcHRpb25zKTsKYGBgCgpUaGlzIG9wdGlvbiAob25seSBhdmFpbGFibGUgd2l0aCBgcmVzb2x2ZUZ1bGx5ID0gdHJ1ZWApIGFsbG93cyB0byBjdXN0b21pemUgYmVoYXZpb3VyIHJlbGF0ZWQgdG8gYGFsbE9mL2FueU9mL29uZU9mYCAoY29tcG9zZWQgc2NoZW1hcykgIHByb2Nlc3NpbmcuIFdpdGggb3B0aW9uIHNldCB0byBgdHJ1ZWAgKGRlZmF1bHQpLCBjb21wb3NlZCBzY2hlbWFzIGFyZSB0cmFuc2Zvcm1lZCBpbnRvICJub24gY29tcG9zZWQiIG9uZXMsIGJ5IGhhdmluZyBhbGwgcHJvcGVydGllcyBtZXJnZWQgaW50byBhIHNpbmdsZSByZXN1bHRpbmcgc2NoZW1hIChzZWUgZXhhbXBsZSBiZWxvdykuCklmIG9wdGlvbiBpcyBzZXQgdG8gYGZhbHNlYCwgdGhlIHJlc3VsdGluZyBzY2hlbWEgd2lsbCBpbnN0ZWFkIG1haW50YWluIGl0cyAiY29tcG9zZWQiIG5hdHVyZSwga2VlcGluZyBwcm9wZXJ0aWVzIHdpdGhpbiBlLmcuIHRoZSBgYWxsT2ZgIG1lbWJlcnMuCgpQbGVhc2Ugc2VlIGV4YW1wbGVzIGJlbG93OgoKKipVbnJlc29sdmVkIHlhbWwqKgoKYGBgCm9wZW5hcGk6IDMuMC4xCnNlcnZlcnM6Ci0gdXJsOiBodHRwOi8vcGV0c3RvcmUuc3dhZ2dlci5pby9hcGkKCmluZm86CiAgZGVzY3JpcHRpb246ICdUaGlzIGlzIGEgc2FtcGxlIHNlcnZlciBQZXRzdG9yZScKICB2ZXJzaW9uOiAxLjAuMAogIHRpdGxlOiB0ZXN0aW5nIHNvdXJjZSBmaWxlCiAgdGVybXNPZlNlcnZpY2U6IGh0dHA6Ly9zd2FnZ2VyLmlvL3Rlcm1zLwoKcGF0aHM6CiAgIi93aXRoSW52YWxpZENvbXBvc2VkTW9kZWwiOgogICAgcG9zdDoKICAgICAgb3BlcmF0aW9uSWQ6IHdpdGhJbnZhbGlkQ29tcG9zZWRNb2RlbAogICAgICByZXF1ZXN0Qm9keToKICAgICAgICBjb250ZW50OgogICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iOgogICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgIiRyZWYiOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvRXh0ZW5kZWRBZGRyZXNzIgogICAgICAgIHJlcXVpcmVkOiBmYWxzZQogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogc3VjY2VzcyEKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgRXh0ZW5kZWRBZGRyZXNzOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgYWxsT2Y6CiAgICAgICAgLSAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvQWRkcmVzcycKICAgICAgICAtIHR5cGU6IG9iamVjdAogICAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgICAtIGdwcwogICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgZ3BzOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgQWRkcmVzczoKICAgICAgcmVxdWlyZWQ6CiAgICAgIC0gc3RyZWV0CiAgICAgIHR5cGU6IG9iamVjdAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIHN0cmVldDoKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZXhhbXBsZTogMTIzNDUgRWwgTW9udGUgUm9hZAogICAgICAgIGNpdHk6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGV4YW1wbGU6IExvcyBBbHRvcyBIaWxscwogICAgICAgIHN0YXRlOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiBDQQogICAgICAgIHppcDoKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZXhhbXBsZTogJzk0MDIyJwpgYGAKCioqcmVzb2x2ZWRDb21iaW5hdG9yID0gdHJ1ZSAoZGVmYXVsdCkgLSBUZXN0IGNhc2UqKgoKYGBgCkBUZXN0CiAgICBwdWJsaWMgdm9pZCByZXNvbHZlQWxsT2ZXaXRob3V0QWdncmVnYXRpbmdQYXJhbWV0ZXJzKEBJbmplY3RhYmxlIGZpbmFsIExpc3Q8QXV0aG9yaXphdGlvblZhbHVlPiBhdXRocykgewogICAgICAgIFBhcnNlT3B0aW9ucyBvcHRpb25zID0gbmV3IFBhcnNlT3B0aW9ucygpOwogICAgICAgIG9wdGlvbnMuc2V0UmVzb2x2ZUZ1bGx5KHRydWUpOwogICAgICAgIG9wdGlvbnMuc2V0UmVzb2x2ZUNvbWJpbmF0b3JzKHRydWUpOwoKICAgICAgICAvLyBUZXN0aW5nIGNvbXBvbmVudHMvc2NoZW1hcwogICAgICAgIE9wZW5BUEkgb3BlbkFQSSA9IG5ldyBPcGVuQVBJVjNQYXJzZXIoKS5yZWFkTG9jYXRpb24oInNyYy90ZXN0L3Jlc291cmNlcy9jb21wb3NlZC55YW1sIixhdXRocyxvcHRpb25zKS5nZXRPcGVuQVBJKCk7CiAgICAgICAgCiAgICAgICAgQ29tcG9zZWRTY2hlbWEgYWxsT2YgPSAoQ29tcG9zZWRTY2hlbWEpIG9wZW5BUEkuZ2V0Q29tcG9uZW50cygpLmdldFNjaGVtYXMoKS5nZXQoIkV4dGVuZGVkQWRkcmVzcyIpOwogICAgICAgIGFzc2VydEVxdWFscyhhbGxPZi5nZXRBbGxPZigpLnNpemUoKSwgMik7CgogICAgICAgIGFzc2VydFRydWUoYWxsT2YuZ2V0QWxsT2YoKS5nZXQoMCkuZ2V0JHJlZigpICE9IG51bGwpOwogICAgICAgIGFzc2VydFRydWUoYWxsT2YuZ2V0QWxsT2YoKS5nZXQoMSkuZ2V0UHJvcGVydGllcygpLmNvbnRhaW5zS2V5KCJncHMiKSk7CgoKICAgICAgICAvLyBUZXN0aW5nIHBhdGggaXRlbQogICAgICAgIE9iamVjdFNjaGVtYSBzY2hlbWEgPSAoT2JqZWN0U2NoZW1hKSBvcGVuQVBJLmdldFBhdGhzKCkuZ2V0KCIvd2l0aEludmFsaWRDb21wb3NlZE1vZGVsIikuZ2V0UG9zdCgpLmdldFJlcXVlc3RCb2R5KCkuZ2V0Q29udGVudCgpLmdldCgiYXBwbGljYXRpb24vanNvbiIpLmdldFNjaGVtYSgpOwoKICAgICAgICBhc3NlcnRFcXVhbHMoc2NoZW1hLmdldFByb3BlcnRpZXMoKS5zaXplKCksIDUpOwogICAgICAgIGFzc2VydFRydWUoc2NoZW1hLmdldFByb3BlcnRpZXMoKS5jb250YWluc0tleSgic3RyZWV0IikpOwogICAgICAgIGFzc2VydFRydWUoc2NoZW1hLmdldFByb3BlcnRpZXMoKS5jb250YWluc0tleSgiZ3BzIikpOwoKICAgIH0KYGBgCgoqKnJlc29sdmVkQ29tYmluYXRvciA9IHRydWUgKGRlZmF1bHQpIC0gUmVzb2x2ZWQgWWFtbCoqCgpgYGAKb3BlbmFwaTogMy4wLjEKaW5mbzoKICB0aXRsZTogdGVzdGluZyBzb3VyY2UgZmlsZQogIGRlc2NyaXB0aW9uOiBUaGlzIGlzIGEgc2FtcGxlIHNlcnZlciBQZXRzdG9yZQogIHRlcm1zT2ZTZXJ2aWNlOiBodHRwOi8vc3dhZ2dlci5pby90ZXJtcy8KICB2ZXJzaW9uOiAxLjAuMApzZXJ2ZXJzOgotIHVybDogaHR0cDovL3BldHN0b3JlLnN3YWdnZXIuaW8vYXBpCnBhdGhzOgogIC93aXRoSW52YWxpZENvbXBvc2VkTW9kZWw6CiAgICBwb3N0OgogICAgICBvcGVyYXRpb25JZDogd2l0aEludmFsaWRDb21wb3NlZE1vZGVsCiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgICAgICAgLSBncHMKICAgICAgICAgICAgICAtIHN0cmVldAogICAgICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICBzdHJlZXQ6CiAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICBleGFtcGxlOiAxMjM0NSBFbCBNb250ZSBSb2FkCiAgICAgICAgICAgICAgICBjaXR5OgogICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgZXhhbXBsZTogTG9zIEFsdG9zIEhpbGxzCiAgICAgICAgICAgICAgICBzdGF0ZToKICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgICAgIGV4YW1wbGU6IENBCiAgICAgICAgICAgICAgICB6aXA6CiAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICBleGFtcGxlOiAiOTQwMjIiCiAgICAgICAgICAgICAgICBncHM6CiAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIHJlcXVpcmVkOiBmYWxzZQogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgZGVzY3JpcHRpb246IHN1Y2Nlc3MhCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIEV4dGVuZGVkQWRkcmVzczoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIGFsbE9mOgogICAgICAtICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9BZGRyZXNzJwogICAgICAtIHJlcXVpcmVkOgogICAgICAgIC0gZ3BzCiAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgIGdwczoKICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICBBZGRyZXNzOgogICAgICByZXF1aXJlZDoKICAgICAgLSBzdHJlZXQKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgc3RyZWV0OgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiAxMjM0NSBFbCBNb250ZSBSb2FkCiAgICAgICAgY2l0eToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZXhhbXBsZTogTG9zIEFsdG9zIEhpbGxzCiAgICAgICAgc3RhdGU6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGV4YW1wbGU6IENBCiAgICAgICAgemlwOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiAiOTQwMjIiCiBgYGAKIAogKipyZXNvbHZlZENvbWJpbmF0b3IgPSBmYWxzZSAtIFRlc3QgY2FzZSoqCiAKIGBgYAogQFRlc3QKICAgIHB1YmxpYyB2b2lkIHJlc29sdmVBbGxPZldpdGhvdXRBZ2dyZWdhdGluZ1BhcmFtZXRlcnMoQEluamVjdGFibGUgZmluYWwgTGlzdDxBdXRob3JpemF0aW9uVmFsdWU+IGF1dGhzKSB7CiAgICAgICAgUGFyc2VPcHRpb25zIG9wdGlvbnMgPSBuZXcgUGFyc2VPcHRpb25zKCk7CiAgICAgICAgb3B0aW9ucy5zZXRSZXNvbHZlRnVsbHkodHJ1ZSk7CiAgICAgICAgb3B0aW9ucy5zZXRSZXNvbHZlQ29tYmluYXRvcnMoZmFsc2UpOwoKICAgICAgICAvLyBUZXN0aW5nIGNvbXBvbmVudHMvc2NoZW1hcwogICAgICAgIE9wZW5BUEkgb3BlbkFQSSA9IG5ldyBPcGVuQVBJVjNQYXJzZXIoKS5yZWFkTG9jYXRpb24oInNyYy90ZXN0L3Jlc291cmNlcy9jb21wb3NlZC55YW1sIixhdXRocyxvcHRpb25zKS5nZXRPcGVuQVBJKCk7CiAgICAgICAKICAgICAgICBDb21wb3NlZFNjaGVtYSBhbGxPZiA9IChDb21wb3NlZFNjaGVtYSkgb3BlbkFQSS5nZXRDb21wb25lbnRzKCkuZ2V0U2NoZW1hcygpLmdldCgiRXh0ZW5kZWRBZGRyZXNzIik7CiAgICAgICAgYXNzZXJ0RXF1YWxzKGFsbE9mLmdldEFsbE9mKCkuc2l6ZSgpLCAyKTsKICAgICAgICBhc3NlcnRUcnVlKGFsbE9mLmdldEFsbE9mKCkuZ2V0KDApLmdldFByb3BlcnRpZXMoKS5jb250YWluc0tleSgic3RyZWV0IikpOwogICAgICAgIGFzc2VydFRydWUoYWxsT2YuZ2V0QWxsT2YoKS5nZXQoMSkuZ2V0UHJvcGVydGllcygpLmNvbnRhaW5zS2V5KCJncHMiKSk7CgogICAgICAgIC8vIFRlc3RpbmcgcGF0aCBpdGVtCiAgICAgICAgQ29tcG9zZWRTY2hlbWEgc2NoZW1hID0gKENvbXBvc2VkU2NoZW1hKSBvcGVuQVBJLmdldFBhdGhzKCkuZ2V0KCIvd2l0aEludmFsaWRDb21wb3NlZE1vZGVsIikuZ2V0UG9zdCgpLmdldFJlcXVlc3RCb2R5KCkuZ2V0Q29udGVudCgpLmdldCgiYXBwbGljYXRpb24vanNvbiIpLmdldFNjaGVtYSgpOwogICAgICAgIC8vIEluIGZhY3QgdGhlIHNjaGVtYSByZXNvbHZlZCBwcmV2aW91c2x5IGlzIHRoZSBzYW1lIG9mIC93aXRoSW52YWxpZENvbXBvc2VkTW9kZWwKICAgICAgICBhc3NlcnRFcXVhbHMoc2NoZW1hLCBhbGxPZik7CiAgICAgICAgYXNzZXJ0RXF1YWxzKHNjaGVtYS5nZXRBbGxPZigpLnNpemUoKSwgMik7CiAgICAgICAgYXNzZXJ0VHJ1ZShzY2hlbWEuZ2V0QWxsT2YoKS5nZXQoMCkuZ2V0UHJvcGVydGllcygpLmNvbnRhaW5zS2V5KCJzdHJlZXQiKSk7CiAgICAgICAgYXNzZXJ0VHJ1ZShzY2hlbWEuZ2V0QWxsT2YoKS5nZXQoMSkuZ2V0UHJvcGVydGllcygpLmNvbnRhaW5zS2V5KCJncHMiKSk7CgogICAgfQogIGBgYAogIAogICoqcmVzb2x2ZWRDb21iaW5hdG9yID0gZmFsc2UgLSBSZXNvbHZlZCBZYW1sKioKICAKICBgYGAKb3BlbmFwaTogMy4wLjEKaW5mbzoKICB0aXRsZTogdGVzdGluZyBzb3VyY2UgZmlsZQogIGRlc2NyaXB0aW9uOiBUaGlzIGlzIGEgc2FtcGxlIHNlcnZlciBQZXRzdG9yZQogIHRlcm1zT2ZTZXJ2aWNlOiBodHRwOi8vc3dhZ2dlci5pby90ZXJtcy8KICB2ZXJzaW9uOiAxLjAuMApzZXJ2ZXJzOgotIHVybDogaHR0cDovL3BldHN0b3JlLnN3YWdnZXIuaW8vYXBpCnBhdGhzOgogIC93aXRoSW52YWxpZENvbXBvc2VkTW9kZWw6CiAgICBwb3N0OgogICAgICBvcGVyYXRpb25JZDogd2l0aEludmFsaWRDb21wb3NlZE1vZGVsCiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgICAgYWxsT2Y6CiAgICAgICAgICAgICAgLSByZXF1aXJlZDoKICAgICAgICAgICAgICAgIC0gc3RyZWV0CiAgICAgICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgIHN0cmVldDoKICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgICBleGFtcGxlOiAxMjM0NSBFbCBNb250ZSBSb2FkCiAgICAgICAgICAgICAgICAgIGNpdHk6CiAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgZXhhbXBsZTogTG9zIEFsdG9zIEhpbGxzCiAgICAgICAgICAgICAgICAgIHN0YXRlOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICAgIGV4YW1wbGU6IENBCiAgICAgICAgICAgICAgICAgIHppcDoKICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgICBleGFtcGxlOiAiOTQwMjIiCiAgICAgICAgICAgICAgLSByZXF1aXJlZDoKICAgICAgICAgICAgICAgIC0gZ3BzCiAgICAgICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgIGdwczoKICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICByZXF1aXJlZDogZmFsc2UKICAgICAgcmVzcG9uc2VzOgogICAgICAgIDIwMDoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdWNjZXNzIQpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBFeHRlbmRlZEFkZHJlc3M6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICBhbGxPZjoKICAgICAgLSByZXF1aXJlZDoKICAgICAgICAtIHN0cmVldAogICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICBzdHJlZXQ6CiAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICBleGFtcGxlOiAxMjM0NSBFbCBNb250ZSBSb2FkCiAgICAgICAgICBjaXR5OgogICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgZXhhbXBsZTogTG9zIEFsdG9zIEhpbGxzCiAgICAgICAgICBzdGF0ZToKICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgIGV4YW1wbGU6IENBCiAgICAgICAgICB6aXA6CiAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICBleGFtcGxlOiAiOTQwMjIiCiAgICAgIC0gcmVxdWlyZWQ6CiAgICAgICAgLSBncHMKICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgZ3BzOgogICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgIEFkZHJlc3M6CiAgICAgIHJlcXVpcmVkOgogICAgICAtIHN0cmVldAogICAgICB0eXBlOiBvYmplY3QKICAgICAgcHJvcGVydGllczoKICAgICAgICBzdHJlZXQ6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGV4YW1wbGU6IDEyMzQ1IEVsIE1vbnRlIFJvYWQKICAgICAgICBjaXR5OgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiBMb3MgQWx0b3MgSGlsbHMKICAgICAgICBzdGF0ZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZXhhbXBsZTogQ0EKICAgICAgICB6aXA6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGV4YW1wbGU6ICI5NDAyMiIKYGBgCiMjIyMgNS4gZXhwbGljaXRPYmplY3RTY2hlbWE6CgpgYGBqYXZhClBhcnNlT3B0aW9ucyBwYXJzZU9wdGlvbnMgPSBuZXcgUGFyc2VPcHRpb25zKCk7CnBhcnNlT3B0aW9ucy5zZXRSZXNvbHZlKHRydWUpOyAvLyBpbXBsaWNpdApwYXJzZU9wdGlvbnMuc2V0UmVzb2x2ZUZ1bGx5KHRydWUpOwpwYXJzZU9wdGlvbnMuc2V0UmVzb2x2ZUNvbWJpbmF0b3JzKGZhbHNlKTsKcGFyc2VPcHRpb25zLnNldEV4cGxpY2l0T2JqZWN0U2NoZW1hKGZhbHNlKTsgLy8gZGVmYXVsdCBpcyB0cnVlCmZpbmFsIE9wZW5BUEkgb3BlbkFQSSA9IG5ldyBPcGVuQVBJVjNQYXJzZXIoKS5yZWFkKCJhLnlhbWwiLCBudWxsLCBwYXJzZU9wdGlvbnMpOwpgYGAKClRoaXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gY3VzdG9taXplIHRoZSBwcm9jZXNzaW5nIG9mIHNjaGVtYSBwcm9wZXJ0aWVzIHdoZW4gdGhlIHR5cGUgaXMgbm90IHNwZWNpZmllZC4gQnkgZGVmYXVsdCBpdCBpcyBzZXQgdG8gYHRydWVgLgotIGB0cnVlYCA6IHdoZW4gdGhlIHR5cGUgaXMgbm90IGRlZmluZWQgZm9yIHByb3BlcnR5LCDigJhvYmplY3TigJkgaXMgc2V0LgotIGBmYWxzZWAgOiB0aGUgcHJvcGVydHkgcmVtYWlucyB1bmRlZmluZWQgd2hlbiBubyB0eXBlIGlzIHNwZWNpZmllZApJdCdzIG9ubHkgYXBwbGllZCB3aGVuIGByZXNvbHZlRnVsbHlgIGlzIHNldCB0byBgdHJ1ZWAuCgojIyMgRXh0ZW5zaW9ucwpUaGlzIHByb2plY3QgaGFzIGEgY29yZSBhcnRpZmFjdC0tYHN3YWdnZXItcGFyc2VyYCwgd2hpY2ggdXNlcyBKYXZhIFNlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlIChTUEkpIHNvIGFkZGl0aW9uYWwgZXh0ZW5zaW9ucyBjYW4gYmUgYWRkZWQuIAoKVG8gYnVpbGQgeW91ciBvd24gZXh0ZW5zaW9uLCB5b3Ugc2ltcGx5IG5lZWQgdG8gY3JlYXRlIGEgYHNyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9zZXJ2aWNlcy9pby5zd2FnZ2VyLnYzLnBhcnNlci5jb3JlLmV4dGVuc2lvbnMuU3dhZ2dlclBhcnNlckV4dGVuc2lvbmAgZmlsZSB3aXRoIHRoZSBmdWxsIGNsYXNzbmFtZSBvZiB5b3VyIGltcGxlbWVudGF0aW9uLiAgWW91ciBjbGFzcyBtdXN0IGFsc28gaW1wbGVtZW50IHRoZSBgaW8uc3dhZ2dlci52My5wYXJzZXIuY29yZS5leHRlbnNpb25zLlN3YWdnZXJQYXJzZXJFeHRlbnNpb25gIGludGVyZmFjZS4gIFRoZW4sIGluY2x1ZGluZyB5b3VyIGxpYnJhcnkgd2l0aCB0aGUgYHN3YWdnZXItcGFyc2VyYCBtb2R1bGUgd2lsbCBjYXVzZSBpdCB0byBiZSB0cmlnZ2VyZWQgYXV0b21hdGljYWxseS4KCiMjIyBPcGVuQVBJIDMuMSBzdXBwb3J0CgpTaW5jZSB2ZXJzaW9uIDIuMS4wIFN3YWdnZXIgUGFyc2VyIHN1cHBvcnRzIE9wZW5BUEkgMy4xOyBzZWUgW3RoaXMgcGFnZV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS93aWtpL1N3YWdnZXItMi5YLS0tT3BlbkFQSS0zLjEpIGZvciBkZXRhaWxzCgojIyBTZWN1cml0eSBjb250YWN0CgpQbGVhc2UgZGlzY2xvc2UgYW55IHNlY3VyaXR5LXJlbGF0ZWQgaXNzdWVzIG9yIHZ1bG5lcmFiaWxpdGllcyBieSBlbWFpbGluZyBbc2VjdXJpdHlAc3dhZ2dlci5pb10obWFpbHRvOnNlY3VyaXR5QHN3YWdnZXIuaW8pLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBwdWJsaWMgaXNzdWUgdHJhY2tlci4K readmeEtag: '"89cc138da6fc9ccbbf5df1cfa9c2dc963a38dd3d"' readmeLastModified: Thu, 18 Dec 2025 13:31:56 GMT repositoryId: 18997610 description: Swagger Spec to Java POJOs created: '2014-04-21T16:00:22Z' updated: '2026-02-04T09:37:17Z' language: Java archived: false stars: 851 watchers: 43 forks: 539 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 repoEtag: '"64e7360ad64407cba021be68c30e0045fd0047e36d7b35d9c0c965844023dba7"' repoLastModified: Wed, 04 Feb 2026 09:37:17 GMT foundInMaster: true id: 45f46a8f7ac698cfe3926303bf3dff9d v3_1_link: https://github.com/swagger-api/swagger-parser/pull/1730 v3_1: true - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/apidevtools/swagger-parser v3: true id: 18a1495e6591ba141a4db34b3ae36f32 repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIDIuMCBhbmQgT3BlbkFQSSAzLjAgcGFyc2VyL3ZhbGlkYXRvcgoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vQVBJRGV2VG9vbHMvc3dhZ2dlci1wYXJzZXIvd29ya2Zsb3dzL0NJLUNEL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9naXRodWIuY29tL0FQSURldlRvb2xzL3N3YWdnZXItcGFyc2VyL2FjdGlvbnMpClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvZ2l0aHViL0FQSURldlRvb2xzL3N3YWdnZXItcGFyc2VyL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL0FQSURldlRvb2xzL3N3YWdnZXItcGFyc2VyKQpbIVtUZXN0ZWQgb24gQVBJcy5ndXJ1XShodHRwczovL2FwaS5hcGlzLmd1cnUvYmFkZ2VzL3Rlc3RlZF9vbi5zdmcpXShodHRwczovL2FwaXMuZ3VydS9icm93c2UtYXBpcy8pCgpbIVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGFwaWRldnRvb2xzL3N3YWdnZXItcGFyc2VyLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BhcGlkZXZ0b29scy9zd2FnZ2VyLXBhcnNlcikKWyFbRGVwZW5kZW5jaWVzXShodHRwczovL2RhdmlkLWRtLm9yZy9BUElEZXZUb29scy9zd2FnZ2VyLXBhcnNlci5zdmcpXShodHRwczovL2RhdmlkLWRtLm9yZy9BUElEZXZUb29scy9zd2FnZ2VyLXBhcnNlcikKWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9AYXBpZGV2dG9vbHMvc3dhZ2dlci1wYXJzZXIuc3ZnKV0oTElDRU5TRSkKWyFbQnV5IHVzIGEgdHJlZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9UcmVld2FyZS0lRjAlOUYlOEMlQjMtbGlnaHRncmVlbildKGh0dHBzOi8vc2hvcC5wcm90ZWN0LmVhcnRoLykKClshW09TIGFuZCBCcm93c2VyIENvbXBhdGliaWxpdHldKGh0dHBzOi8vYXBpZGV2dG9vbHMuY29tL2ltZy9iYWRnZXMvY2ktYmFkZ2VzLXdpdGgtaWUuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL0FQSURldlRvb2xzL3N3YWdnZXItcGFyc2VyL2FjdGlvbnMpCgojIyBGZWF0dXJlcwoKLSBQYXJzZXMgU3dhZ2dlciBzcGVjcyBpbiAqKkpTT04qKiBvciAqKllBTUwqKiBmb3JtYXQKLSBWYWxpZGF0ZXMgYWdhaW5zdCB0aGUgW1N3YWdnZXIgMi4wIHNjaGVtYV0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvc2NoZW1hcy92Mi4wL3NjaGVtYS5qc29uKSBvciBbT3BlbkFQSSAzLjAgU2NoZW1hXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci9zY2hlbWFzL3YzLjAvc2NoZW1hLmpzb24pCi0gW1Jlc29sdmVzXShodHRwczovL2FwaWRldnRvb2xzLmNvbS9zd2FnZ2VyLXBhcnNlci9kb2NzL3N3YWdnZXItcGFyc2VyLmh0bWwjcmVzb2x2ZWFwaS1vcHRpb25zLWNhbGxiYWNrKSBhbGwgYCRyZWZgIHBvaW50ZXJzLCBpbmNsdWRpbmcgZXh0ZXJuYWwgZmlsZXMgYW5kIFVSTHMKLSBDYW4gW2J1bmRsZV0oaHR0cHM6Ly9hcGlkZXZ0b29scy5jb20vc3dhZ2dlci1wYXJzZXIvZG9jcy9zd2FnZ2VyLXBhcnNlci5odG1sI2J1bmRsZWFwaS1vcHRpb25zLWNhbGxiYWNrKSBhbGwgeW91ciBTd2FnZ2VyIGZpbGVzIGludG8gYSBzaW5nbGUgZmlsZSB0aGF0IG9ubHkgaGFzIF9pbnRlcm5hbF8gYCRyZWZgIHBvaW50ZXJzCi0gQ2FuIFtkZXJlZmVyZW5jZV0oaHR0cHM6Ly9hcGlkZXZ0b29scy5jb20vc3dhZ2dlci1wYXJzZXIvZG9jcy9zd2FnZ2VyLXBhcnNlci5odG1sI2RlcmVmZXJlbmNlYXBpLW9wdGlvbnMtY2FsbGJhY2spIGFsbCBgJHJlZmAgcG9pbnRlcnMsIGdpdmluZyB5b3UgYSBub3JtYWwgSmF2YVNjcmlwdCBvYmplY3QgdGhhdCdzIGVhc3kgdG8gd29yayB3aXRoCi0gKipbVGVzdGVkXShodHRwczovL2dpdGh1Yi5jb20vQVBJRGV2VG9vbHMvc3dhZ2dlci1wYXJzZXIvYWN0aW9ucykqKiBpbiBOb2RlLmpzIGFuZCBhbGwgbW9kZXJuIHdlYiBicm93c2VycyBvbiBNYWMsIFdpbmRvd3MsIGFuZCBMaW51eAotIFRlc3RlZCBvbiAqKltvdmVyIDEsNTAwIHJlYWwtd29ybGQgQVBJc10oaHR0cHM6Ly9hcGlzLmd1cnUvYnJvd3NlLWFwaXMvKSoqIGZyb20gR29vZ2xlLCBNaWNyb3NvZnQsIEZhY2Vib29rLCBTcG90aWZ5LCBldGMuCi0gU3VwcG9ydHMgW2NpcmN1bGFyIHJlZmVyZW5jZXNdKGh0dHBzOi8vYXBpZGV2dG9vbHMuY29tL3N3YWdnZXItcGFyc2VyL2RvY3MvI2NpcmN1bGFyLXJlZnMpLCBuZXN0ZWQgcmVmZXJlbmNlcywgYmFjay1yZWZlcmVuY2VzLCBhbmQgY3Jvc3MtcmVmZXJlbmNlcwotIE1haW50YWlucyBvYmplY3QgcmVmZXJlbmNlIGVxdWFsaXR5ICZtZGFzaDsgYCRyZWZgIHBvaW50ZXJzIHRvIHRoZSBzYW1lIHZhbHVlIGFsd2F5cyByZXNvbHZlIHRvIHRoZSBzYW1lIG9iamVjdCBpbnN0YW5jZQoKIyMgUmVsYXRlZCBQcm9qZWN0cwoKLSBbU3dhZ2dlciBDTEldKGh0dHBzOi8vZ2l0aHViLmNvbS9BUElEZXZUb29scy9zd2FnZ2VyLWNsaSkKLSBbU3dhZ2dlciBFeHByZXNzIE1pZGRsZXdhcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9BUElEZXZUb29scy9zd2FnZ2VyLWV4cHJlc3MtbWlkZGxld2FyZSkKCiMjIEV4YW1wbGUKCmBgYGphdmFzY3JpcHQKU3dhZ2dlclBhcnNlci52YWxpZGF0ZShteUFQSSwgKGVyciwgYXBpKSA9PiB7CiAgaWYgKGVycikgewogICAgY29uc29sZS5lcnJvcihlcnIpOwogIH0gZWxzZSB7CiAgICBjb25zb2xlLmxvZygiQVBJIG5hbWU6ICVzLCBWZXJzaW9uOiAlcyIsIGFwaS5pbmZvLnRpdGxlLCBhcGkuaW5mby52ZXJzaW9uKTsKICB9Cn0pOwpgYGAKCk9yIHVzZSBgYXN5bmNgL2Bhd2FpdGAgb3IgW1Byb21pc2VdKGh0dHA6Ly9qYXZhc2NyaXB0cGxheWdyb3VuZC5jb20vYmxvZy8yMDE1LzAyL3Byb21pc2VzLykgc3ludGF4IGluc3RlYWQuIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpcyB0aGUgc2FtZSBhcyBhYm92ZToKCmBgYGphdmFzY3JpcHQKdHJ5IHsKICBsZXQgYXBpID0gYXdhaXQgU3dhZ2dlclBhcnNlci52YWxpZGF0ZShteUFQSSk7CiAgY29uc29sZS5sb2coIkFQSSBuYW1lOiAlcywgVmVyc2lvbjogJXMiLCBhcGkuaW5mby50aXRsZSwgYXBpLmluZm8udmVyc2lvbik7Cn0gY2F0Y2ggKGVycikgewogIGNvbnNvbGUuZXJyb3IoZXJyKTsKfQpgYGAKCkZvciBtb3JlIGRldGFpbGVkIGV4YW1wbGVzLCBwbGVhc2Ugc2VlIHRoZSBbQVBJIERvY3VtZW50YXRpb25dKGh0dHBzOi8vYXBpZGV2dG9vbHMuY29tL3N3YWdnZXItcGFyc2VyL2RvY3MvKQoKIyMgSW5zdGFsbGF0aW9uCgpJbnN0YWxsIHVzaW5nIFtucG1dKGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vYWJvdXQtbnBtLyk6CgpgYGBiYXNoCm5wbSBpbnN0YWxsIEBhcGlkZXZ0b29scy9zd2FnZ2VyLXBhcnNlcgpgYGAKCiMjIFVzYWdlCgpXaGVuIHVzaW5nIFN3YWdnZXIgUGFyc2VyIGluIE5vZGUuanMgYXBwcywgeW91J2xsIHByb2JhYmx5IHdhbnQgdG8gdXNlICoqQ29tbW9uSlMqKiBzeW50YXg6CgpgYGBqYXZhc2NyaXB0CmNvbnN0IFN3YWdnZXJQYXJzZXIgPSByZXF1aXJlKCJAYXBpZGV2dG9vbHMvc3dhZ2dlci1wYXJzZXIiKTsKYGBgCgpXaGVuIHVzaW5nIGEgdHJhbnNwaWxlciBzdWNoIGFzIFtCYWJlbF0oaHR0cHM6Ly9iYWJlbGpzLmlvLykgb3IgW1R5cGVTY3JpcHRdKGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy8pLCBvciBhIGJ1bmRsZXIgc3VjaCBhcyBbV2VicGFja10oaHR0cHM6Ly93ZWJwYWNrLmpzLm9yZy8pIG9yIFtSb2xsdXBdKGh0dHBzOi8vcm9sbHVwanMub3JnLyksIHlvdSBjYW4gdXNlICoqRUNNQVNjcmlwdCBtb2R1bGVzKiogc3ludGF4IGluc3RlYWQ6CgpgYGBqYXZhc2NyaXB0CmltcG9ydCAqIGFzIFN3YWdnZXJQYXJzZXIgZnJvbSAiQGFwaWRldnRvb2xzL3N3YWdnZXItcGFyc2VyIjsKYGBgCgojIyBCcm93c2VyIHN1cHBvcnQKClN3YWdnZXIgUGFyc2VyIHN1cHBvcnRzIHJlY2VudCB2ZXJzaW9ucyBvZiBldmVyeSBtYWpvciB3ZWIgYnJvd3Nlci4gT2xkZXIgYnJvd3NlcnMgbWF5IHJlcXVpcmUgW0JhYmVsXShodHRwczovL2JhYmVsanMuaW8vKSBhbmQvb3IgW3BvbHlmaWxsc10oaHR0cHM6Ly9iYWJlbGpzLmlvL2RvY3MvZW4vbmV4dC9iYWJlbC1wb2x5ZmlsbCkuCgpUbyB1c2UgU3dhZ2dlciBQYXJzZXIgaW4gYSBicm93c2VyLCB5b3UnbGwgbmVlZCB0byB1c2UgYSBidW5kbGluZyB0b29sIHN1Y2ggYXMgW1dlYnBhY2tdKGh0dHBzOi8vd2VicGFjay5qcy5vcmcvKSwgW1JvbGx1cF0oaHR0cHM6Ly9yb2xsdXBqcy5vcmcvKSwgW1BhcmNlbF0oaHR0cHM6Ly9wYXJjZWxqcy5vcmcvKSwgb3IgW0Jyb3dzZXJpZnldKGh0dHA6Ly9icm93c2VyaWZ5Lm9yZy8pLiBTb21lIGJ1bmRsZXJzIG1heSByZXF1aXJlIGEgYml0IG9mIGNvbmZpZ3VyYXRpb24sIHN1Y2ggYXMgc2V0dGluZyBgYnJvd3NlcjogdHJ1ZWAgaW4gW3JvbGx1cC1wbHVnaW4tcmVzb2x2ZV0oaHR0cHM6Ly9naXRodWIuY29tL3JvbGx1cC9yb2xsdXAtcGx1Z2luLW5vZGUtcmVzb2x2ZSkuCgojIyBBUEkgRG9jdW1lbnRhdGlvbgoKRnVsbCBBUEkgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgW3JpZ2h0IGhlcmVdKGh0dHBzOi8vYXBpZGV2dG9vbHMuY29tL3N3YWdnZXItcGFyc2VyL2RvY3MvKQoKIyMgU2VjdXJpdHkKClRoZSBsaWJyYXJ5LCBieSBkZWZhdWx0LCBhdHRlbXB0cyB0byByZXNvbHZlIGFueSBmaWxlcyByZWZlcmVuY2VkIHVzaW5nIGAkcmVmYCwgd2l0aG91dCBjb25zaWRlcmluZyBmaWxlIGV4dGVuc2lvbnMgb3IgdGhlIGxvY2F0aW9uIG9mIHRoZSBmaWxlcy4gVGhpcyBjYW4gcmVzdWx0IGluIExvY2FsIEZpbGUgSW5jbHVzaW9uIChMRkkpLCB0aHVzLCBwb3RlbnRpYWxseSBzZW5zaXRpdmUgaW5mb3JtYXRpb24gZGlzY2xvc3VyZS4gRGV2ZWxvcGVycyBtdXN0IGJlIGNhdXRpb3VzIHdoZW4gd29ya2luZyB3aXRoIGRvY3VtZW50cyBmcm9tIHVudHJ1c3RlZCBzb3VyY2VzLiBTZWUgW2hlcmVdKFNFQ1VSSVRZLm1kKSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gbWl0aWdhdGUgTEZJLgoKIyMgQ29udHJpYnV0aW5nCgpJIHdlbGNvbWUgYW55IGNvbnRyaWJ1dGlvbnMsIGVuaGFuY2VtZW50cywgYW5kIGJ1Zy1maXhlcy4gW09wZW4gYW4gaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9BUElEZXZUb29scy9zd2FnZ2VyLXBhcnNlci9pc3N1ZXMpIG9uIEdpdEh1YiBhbmQgW3N1Ym1pdCBhIHB1bGwgcmVxdWVzdF0oaHR0cHM6Ly9naXRodWIuY29tL0FQSURldlRvb2xzL3N3YWdnZXItcGFyc2VyL3B1bGxzKS4KClRvIHRlc3QgdGhlIHByb2plY3QgbG9jYWxseSBvbiB5b3VyIGNvbXB1dGVyOgoKMS4gKipDbG9uZSB0aGlzIHJlcG8qKjxicj4KICAgYGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vQVBJRGV2VG9vbHMvc3dhZ2dlci1wYXJzZXIuZ2l0YAoKMi4gKipJbnN0YWxsIGRlcGVuZGVuY2llcyoqPGJyPgogICBgbnBtIGluc3RhbGxgCgozLiAqKlJ1biB0aGUgdGVzdHMqKjxicj4KICAgYG5wbSB0ZXN0YAoKNC4gKipDaGVjayB0aGUgY29kZSBjb3ZlcmFnZSoqPGJyPgogICBgbnBtIHJ1biBjb3ZlcmFnZWAKCiMjIExpY2Vuc2UKClN3YWdnZXIgUGFyc2VyIGlzIDEwMCUgZnJlZSBhbmQgb3Blbi1zb3VyY2UsIHVuZGVyIHRoZSBbTUlUIGxpY2Vuc2VdKExJQ0VOU0UpLiBVc2UgaXQgaG93ZXZlciB5b3Ugd2FudC4KClRoaXMgcGFja2FnZSBpcyBbVHJlZXdhcmVdKGh0dHA6Ly90cmVld2FyZS5lYXJ0aCkuIElmIHlvdSB1c2UgaXQgaW4gcHJvZHVjdGlvbiwgdGhlbiB3ZSBhc2sgdGhhdCB5b3UgWyoqYnV5IHRoZSB3b3JsZCBhIHRyZWUqKl0oaHR0cHM6Ly9zaG9wLnByb3RlY3QuZWFydGgpIHRvIHRoYW5rIHVzIGZvciBvdXIgd29yay4KCiMjIEJpZyBUaGFua3MgVG8KClRoYW5rcyB0byB0aGVzZSBhd2Vzb21lIGNvbXBhbmllcyBmb3IgdGhlaXIgc3VwcG9ydCBvZiBPcGVuIFNvdXJjZSBkZXZlbG9wZXJzIOKdpAoKWyFbR2l0SHViXShodHRwczovL2FwaWRldnRvb2xzLmNvbS9pbWcvYmFkZ2VzL2dpdGh1Yi5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vb3Blbi1zb3VyY2UpClshW05QTV0oaHR0cHM6Ly9hcGlkZXZ0b29scy5jb20vaW1nL2JhZGdlcy9ucG0uc3ZnKV0oaHR0cHM6Ly93d3cubnBtanMuY29tLykKWyFbQ292ZXJhbGxzXShodHRwczovL2FwaWRldnRvb2xzLmNvbS9pbWcvYmFkZ2VzL2NvdmVyYWxscy5zdmcpXShodHRwczovL2NvdmVyYWxscy5pbykK readmeEtag: '"d2e8b27c72ae4bdcdfdc2e480ad8aff868226cb0"' readmeLastModified: Tue, 03 Jun 2025 19:01:44 GMT repositoryId: 25453221 description: Swagger 2.0 and OpenAPI 3.0 parser/validator created: '2014-10-20T06:14:51Z' updated: '2026-02-03T15:44:03Z' language: JavaScript archived: false stars: 1181 watchers: 19 forks: 165 owner: APIDevTools logo: https://avatars.githubusercontent.com/u/43750074?v=4 license: MIT repoEtag: '"5a2662277896a5ff5392ed5525b3531f199df1e6cee0ba75759c65368468dd99"' repoLastModified: Tue, 03 Feb 2026 15:44:03 GMT category: Parsers foundInMaster: true name: APIDevTools/swagger-parser language: Node.js source_description: >- OpenAPI 2.0 and 3.0 parser and validator. Can also bundle multiple documents into one via `$ref`. v2: true oldLocations: - https://github.com/bigstickcarpet/swagger-parser - source: - https://openapi.tools/ - openapi3 tags name: openapi-snippet category: Parsers repository: https://github.com/erikwittern/openapi-snippet language: Node.js source_description: >- Generates code snippets in various languages & tools (cURL, Node, Python, Ruby, Java, Go, C#...), from OpenAPI documents. v2: true v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNuaXBwZXQKKipHZW5lcmF0ZXMgY29kZSBzbmlwcGV0cyBmcm9tIE9wZW4gQVBJIChwcmV2aW91c2x5IFN3YWdnZXIpIGRvY3VtZW50cy4qKgoKVGhpcyBwYWNrYWdlIHRha2VzIGFzIGlucHV0IGFuIE9wZW5BUEkgdjIuMCBvciB2My4wLnggZG9jdW1lbnQuIEl0IHRyYW5zbGF0ZXMgdGhlIGRvY3VtZW50IGludG8gYW4gW0hUVFAgQXJjaGl2ZSAxLjIgcmVxdWVzdCBvYmplY3RdKGh0dHA6Ly93d3cuc29mdHdhcmVpc2hhcmQuY29tL2Jsb2cvaGFyLTEyLXNwZWMvI3JlcXVlc3QpLiBJdCB1c2VzIHRoZSBbSFRUUCBTbmlwcGV0XShodHRwczovL2dpdGh1Yi5jb20vTWFzaGFwZS9odHRwc25pcHBldCkgbGlicmFyeSB0byBnZW5lcmF0ZSBjb2RlIHNuaXBwZXRzIGZvciBldmVyeSBBUEkgZW5kcG9pbnQgKFVSTCBwYXRoICsgSFRUUCBtZXRob2QpIGRlZmluZWQgaW4gdGhlIHNwZWNpZmljYXRpb24gaW4gdmFyaW91cyBsYW5ndWFnZXMgJiB0b29scyAoYGNVUkxgLCBgTm9kZWAsIGBQeXRob25gLCBgUnVieWAsIGBKYXZhYCwgYEdvYCwgYEMjYC4uLiksIG9yIGZvciBzZWxlY3RlZCBlbmRwb2ludHMuCgojIyBJbnN0YWxsYXRpb24KCmBgYGJhc2gKbnBtIGkgb3BlbmFwaS1zbmlwcGV0CmBgYAoKIyMgQnVpbGQgT3BlbkFQSSBTbmlwcGV0IChmb3IgdXNlIGluIGJyb3dzZXIpCkNsb25lIHRoaXMgcmVwb3NpdG9yeS4gSW5zdGFsbCByZXF1aXJlZCBkZXBlbmRlbmNpZXM6CgpgYGBiYXNoCm5wbSBpCmBgYAoKQnVpbGQgYSBtaW5pZmllZCB2ZXJzaW9uIG9mIE9wZW5BUEkgU25pcHBldCAoYG9wZW5hcGlzbmlwcGV0Lm1pbi5qc2ApOgoKYGBgYmFzaApucG0gcnVuIGJ1aWxkCmBgYAoKIyMgVXNhZ2UKCiMjIyBBcyBhIG1vZHVsZQoKYGBgamF2YXNjcmlwdApjb25zdCBPcGVuQVBJU25pcHBldCA9IHJlcXVpcmUoJ29wZW5hcGktc25pcHBldCcpCgovLyBkZWZpbmUgaW5wdXQ6CmNvbnN0IG9wZW5BcGkgPSAuLi4gLy8gT3BlbiBBUEkgZG9jdW1lbnQKY29uc3QgdGFyZ2V0cyA9IFsnbm9kZV91bmlyZXN0JywgJ2MnXSAvLyBhcnJheSBvZiB0YXJnZXRzIGZvciBjb2RlIHNuaXBwZXRzLiBTZWUgbGlzdCBiZWxvdy4uLgoKdHJ5IHsKICAvLyBlaXRoZXIsIGdldCBzbmlwcGV0cyBmb3IgQUxMIGVuZHBvaW50czoKICBjb25zdCByZXN1bHRzID0gT3BlbkFQSVNuaXBwZXQuZ2V0U25pcHBldHMob3BlbkFwaSwgdGFyZ2V0cykgLy8gcmVzdWx0cyBpcyBub3cgYXJyYXkgb2Ygc25pcHBldHMsIHNlZSAiT3V0cHV0IiBiZWxvdy4KCiAgLy8gLi4ub3IsIGdldCBzbmlwcGV0cyBmb3IgYSBzaW5nbGUgZW5kcG9pbnQ6CiAgY29uc3QgcmVzdWx0czIgPSBPcGVuQVBJU25pcHBldC5nZXRFbmRwb2ludFNuaXBwZXRzKG9wZW5BcGksICcvdXNlcnMve3VzZXItaWR9L3JlbGF0aW9uc2hpcCcsICdnZXQnLCB0YXJnZXRzKQp9IGNhdGNoIChlcnIpIHsKICAvLyBkbyBzb21ldGhpbmcgd2l0aCBwb3RlbnRpYWwgZXJyb3JzLi4uCn0KYGBgCgojIyMgV2l0aGluIHRoZSBicm93c2VyCgpJbmNsdWRlIHRoZSBgb3BlbmFwaXNuaXBwZXQubWluLmpzYCBmaWxlIGNyZWF0ZWQgYWZ0ZXIgYnVpbGRpbmcgdGhlIHRoZSBsaWJyYXJ5IChzZWUgYWJvdmUpIGluIHlvdXIgSFRNTCBwYWdlOgoKYGBgaHRtbAo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJwYXRoL3RvL29wZW5hcGlzbmlwcGV0Lm1pbi5qcyI+PC9zY3JpcHQ+CmBgYAoKVXNlIE9wZW5BUEkgU25pcHBldCwgd2hpY2ggbm93IGRlZmluZXMgdGhlIGdsb2JhbCB2YXJpYWJsZSBgT3BlbkFQSVNuaXBwZXRgLgoKCiMjIE91dHB1dApUaGUgb3V0cHV0IGZvciBldmVyeSBlbmRwb2ludCBpcyBhbiBvYmplY3QsIGNvbnRhaW5pbmcgdGhlIGBtZXRob2RgLCBgdXJsYCwgYSBodW1hbi1yZWFkYWJsZSBgZGVzY3JpcHRpb25gLCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYHJlc291cmNlYCAtIGFsbCBvZiB0aGVzZSB2YWx1ZXMgc3RlbSBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LiBJbiBhZGRpdGlvbiwgd2l0aGluIHRoZSBgc25pcHBldHNgIGxpc3QsIGFuIG9iamVjdCBjb250YWluaW5nIGEgY29kZSBzbmlwcGV0IGZvciBldmVyeSBjaG9zZW4gdGFyZ2V0IGlzIHByb3ZpZGVkLiBBcyBvZiB2ZXJzaW9uIGAwLjQuMGAsIHRoZSBzbmlwcGV0cyBpbmNsdWRlIGV4ZW1wbGFyeSBwYXlsb2FkIGRhdGEuCgpJZiBgZ2V0U25pcHBldHNgIGlzIHVzZWQsIGFuIGFycmF5IG9mIHRoZSBhYm92ZSBkZXNjcmliZWQgb2JqZWN0cyBpcyByZXR1cm5lZC4KCkZvciBleGFtcGxlOgoKYGBganMKWwogIC8vIC4uLgogIHsKICAgICJtZXRob2QiOiAiR0VUIiwKICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuaW5zdGFncmFtLmNvbS92MS91c2Vycy97dXNlci1pZH0vcmVsYXRpb25zaGlwIiwKICAgICJkZXNjcmlwdGlvbiI6ICJHZXQgaW5mb3JtYXRpb24gYWJvdXQgYSByZWxhdGlvbnNoaXAgdG8gYW5vdGhlciB1c2VyLiIsCiAgICAicmVzb3VyY2UiOiAicmVsYXRpb25zaGlwIiwKICAgICJzbmlwcGV0cyI6IFsKICAgICAgewogICAgICAgICJpZCI6ICJub2RlIiwKICAgICAgICAibWltZVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIsICAvLyBPbmx5IHNldCBmb3IgbWV0aG9kcyB3aXRoIGEgcmVxdWVzdCBib2R5CiAgICAgICAgInRpdGxlIjogIk5vZGUgKyBOYXRpdmUiLAogICAgICAgICJjb250ZW50IjogInZhciBodHRwID0gcmVxdWlyZShcImh0dHBzXCIpO1xuXG52YXIgb3B0aW9ucyA9IHsuLi4iCiAgICAgIH0KICAgIF0KICB9CiAgLy8gLi4uCl0KYGBgCgojIyBUYXJnZXRzCkN1cnJlbnRseSwgT3BlbkFQSSBTbmlwcGV0IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgW3RhcmdldHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9Lb25nL2h0dHBzbmlwcGV0L3RyZWUvbWFzdGVyL3NyYy90YXJnZXRzKSAoZGVwZW5kaW5nIG9uIHRoZSBIVFRQIFNuaXBwZXQgbGlicmFyeSk6CgoqIGBjX2xpYmN1cmxgIChkZWZhdWx0KQoqIGBjc2hhcnBfcmVzdHNoYXJwYCAoZGVmYXVsdCkKKiBgY3NoYXJwX2h0dHBjbGllbnRgCiogYGdvX25hdGl2ZWAgKGRlZmF1bHQpCiogYGphdmFfb2todHRwYAoqIGBqYXZhX3VuaXJlc3RgIChkZWZhdWx0KQoqIGBqYXZhc2NyaXB0X2pxdWVyeWAKKiBgamF2YXNjcmlwdF94aHJgIChkZWZhdWx0KQoqIGBub2RlX25hdGl2ZWAgKGRlZmF1bHQpCiogYG5vZGVfcmVxdWVzdGAKKiBgbm9kZV91bmlyZXN0YAoqIGBvYmpjX25zdXJsc2Vzc2lvbmAgKGRlZmF1bHQpCiogYG9jYW1sX2NvaHR0cGAgKGRlZmF1bHQpCiogYHBocF9jdXJsYCAoZGVmYXVsdCkKKiBgcGhwX2h0dHAxYAoqIGBwaHBfaHR0cDJgCiogYHB5dGhvbl9weXRob24zYCAoZGVmYXVsdCkKKiBgcHl0aG9uX3JlcXVlc3RzYAoqIGBydWJ5X25hdGl2ZWAgKGRlZmF1bHQpCiogYHNoZWxsX2N1cmxgIChkZWZhdWx0KQoqIGBzaGVsbF9odHRwaWVgCiogYHNoZWxsX3dnZXRgCiogYHN3aWZ0X25zdXJsc2Vzc2lvbmAgKGRlZmF1bHQpCgpJZiBvbmx5IHRoZSBsYW5ndWFnZSBpcyBwcm92aWRlZCAoZS5nLiwgYGNgKSwgdGhlIGRlZmF1bHQgbGlicmFyeSB3aWxsIGJlIHNlbGVjdGVkLgoKCkxpY2Vuc2U6IE1JVAo= readmeEtag: '"7e8dcc103099999269c433a3422041583fb19760"' readmeLastModified: Wed, 13 Jul 2022 18:36:58 GMT repositoryId: 66855599 description: Generates code snippets for given Swagger / Open API documents created: '2016-08-29T15:24:00Z' updated: '2026-01-01T17:57:57Z' language: JavaScript archived: false stars: 128 watchers: 4 forks: 69 owner: ErikWittern logo: https://avatars.githubusercontent.com/u/1745998?v=4 license: MIT repoEtag: '"69eec6c1e3ff357d06f373f037d928bd27534d61387fe7a9cc08e0cee46b1e95"' repoLastModified: Thu, 01 Jan 2026 17:57:57 GMT foundInMaster: true id: fbf76c5bdaef3297eb35739ca2ca0954 - source: https://openapi.tools/ name: openapi-snippet-cli category: Parsers repository: https://github.com/richardkabiling/openapi-snippet-cli language: Node.js source_description: >- Adds code snippets in redoc style (x-codeSamples) to OpenAPI documents. This is a CLI wrapper for the "openapi-snippet". v2: true v3: true repositoryMetadata: base64Readme: >- b3BlbmFwaS1zbmlwcGV0LWNsaQo9PT09PT09PT09PT09PT09PT09CgpBZGRzIG9wZW5hcGkgc25pcHBldHMgdXNpbmcgYG9wZW5hcGktc25pcHBldGAgbW9kdWxlIGluIHJlZG9jIHN0eWxlICh4LWNvZGVTYW1wbGVzKS4gVGhpcyBpcyBhIENMSSB3cmFwcGVyIG9uIFtvcGVuYXBpLXNuaXBwZXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9FcmlrV2l0dGVybi9vcGVuYXBpLXNuaXBwZXQpCgpbIVtvY2xpZl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jbGktb2NsaWYtYnJpZ2h0Z3JlZW4uc3ZnKV0oaHR0cHM6Ly9vY2xpZi5pbykKWyFbVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9vcGVuYXBpLXNuaXBwZXQtY2xpLnN2ZyldKGh0dHBzOi8vbnBtanMub3JnL3BhY2thZ2Uvb3BlbmFwaS1zbmlwcGV0LWNsaSkKWyFbRG93bmxvYWRzL3dlZWtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2R3L29wZW5hcGktc25pcHBldC1jbGkuc3ZnKV0oaHR0cHM6Ly9ucG1qcy5vcmcvcGFja2FnZS9vcGVuYXBpLXNuaXBwZXQtY2xpKQpbIVtMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9sL29wZW5hcGktc25pcHBldC1jbGkuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3JpY2hhcmRrYWJpbGluZy9vcGVuYXBpLXNuaXBwZXQtY2xpL2Jsb2IvbWFzdGVyL3BhY2thZ2UuanNvbikKCiogW0dldHRpbmcgU3RhcnRlZF0oI2dldHRpbmctc3RhcnRlZCkKKiBbVXNhZ2VdKCN1c2FnZSkKKiBbQXJndW1lbnRzXSgjYXJndW1lbnRzKQoqIFtPcHRpb25zXSgjb3B0aW9ucykKCiMgR2V0dGluZyBTdGFydGVkClRvIGluc3RhbGw6CgpgYGBzaC1zZXNzaW9uCiQgbnBtIGluc3RhbGwgLWcgb3BlbmFwaS1zbmlwcGV0LWNsaQpgYGAKCiMgVXNhZ2UKIyMgQWRkaW5nIFNuaXBwZXRzIHRvIGEgU2NoZW1hCmBgYHNoLXNlc3Npb24KJCBvcGVuYXBpLXNuaXBwZXQgc2NoZW1hLnlhbWwgLW8gZGlzdC9zY2hlbWEueWFtbApgYGAKClRoZSBleGFtcGxlIGFib3ZlIHNob3VsZCBhZGQgc25pcHBldHMgdG8gYHNjaGVtYS55YW1sYCBhbmQgb3V0cHV0IHRoZSBtb2RpZmllZCBzY2hlbWEgdG8gYSBuZXcgZmlsZSBgZGlzdC9zY2hlbWEueWFtbGAuCgojIyBPdXRwdXR0aW5nIEpTT04KYGBgc2gtc2Vzc2lvbgokIG9wZW5hcGktc25pcHBldCBzY2hlbWEueWFtbCAtZSBqc29uIC1vIGRpc3Qvc2NoZW1hLmpzb24KYGBgCgojIyBDaG9vc2luZyBUYXJnZXRzCmBgYHNoLXNlc3Npb24KJCBvcGVuYXBpLXNuaXBwZXQgc2NoZW1hLnlhbWwgLXQgamF2YSAtdCBjIC1vIGRpc3Qvc2NoZW1hLmpzb24KYGBgCgpUaGUgZXhhbXBsZSBhYm92ZSBzaG91bGQgYWRkIHNuaXBwZXRzIGZvciBgamF2YWAgYW5kIGBjYCB1c2luZyB0aGVpciBkZWZhdWx0IGZyYW1ld29ya3MKCmBgYHNoLXNlc3Npb24KJCBvcGVuYXBpLXNuaXBwZXQgc2NoZW1hLnlhbWwgLXQgamF2YV9va2h0dHAgLW8gZGlzdC9zY2hlbWEuanNvbgpgYGAKClRoaXMgc2hvdWxkIGFkZCBzbmlwcGV0cyBmb3IgJ2phdmFgIHVzaW5nIE9rSHR0cC4KCiMgQXJndW1lbnRzCmBgYApVU0FHRQogICQgb3BlbmFwaS1zbmlwcGV0IFtGSUxFXQoKQVJHVU1FTlRTCiAgRklMRSAgaW5wdXQgb3BlbmFwaSBkb2N1bWVudC4gSXQgd2lsbCBhdHRlbXB0IHRvIHJlc29sdmUgcmVmZXJlbmNlcyAoaW5jbHVkaW5nIGJvdGggaW50ZXJuYWwgYWRuIGV4dGVybmFsIG9uZXMpCmBgYAoKIyBPcHRpb25zCgpgYGAKT1BUSU9OUwogIC1lLCAtLWV4dD15YW1sfGpzb24gICAgW2RlZmF1bHQ6IHlhbWxdIG91dHB1dCBmb3JtYXQKICAtaCwgLS1oZWxwICAgICAgICAgICAgIHNob3cgQ0xJIGhlbHAKICAtbywgLS1vdXRwdXQ9b3V0cHV0ICAgIFtkZWZhdWx0OiBvdXRwdXQueWFtbF0gb3V0cHV0IGZpbGUgbmFtZQoKICAtdCwgLS10YXJnZXRzPXRhcmdldHMgIHRhcmdldCBzbmlwcGV0IGxhbmd1YWdlcyArIGZyYW1ld29ya3MuIENhbiBiZSBwcm92aWRlZCBtdWx0aXBsZSB0aW1lcy4gSWYgaW5wdXR0aW5nIGxhbmd1YWdlIG9ubHksIGRlZmF1bHRzIHRvIG9uZSBvZiB0aGUgZnJhbWV3b3Jrcy4gU3VwcG9ydHMKICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlcyBzdXBwb3J0ZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL0VyaWtXaXR0ZXJuL29wZW5hcGktc25pcHBldC4gRGVmYXVsdHMgdG8gYWRkaW5nIHNuaXBwZXRzIGZvciBBTEwgc3VwcG9ydGVkIGxhbmd1YWdlcy4KCiAgLXYsIC0tdmVyc2lvbiAgICAgICAgICBzaG93IENMSSB2ZXJzaW9uCmBgYAo= readmeEtag: '"66f502da67823c809b038892e9a42d544b64900a"' readmeLastModified: Fri, 05 Jun 2020 08:06:30 GMT repositoryId: 269371079 description: null created: '2020-06-04T13:45:15Z' updated: '2024-09-17T19:57:16Z' language: TypeScript archived: false stars: 9 watchers: 1 forks: 3 owner: richardkabiling logo: https://avatars.githubusercontent.com/u/2498349?v=4 repoEtag: '"04d1f75d45a9e629c7f1a58d1ab9eccd754d3f60978448e535bf057da749975c"' repoLastModified: Tue, 17 Sep 2024 19:57:16 GMT foundInMaster: true id: e96651ada1af40ecd2c2595e9341e5ea - source: - https://openapi.tools/ - openapi3 tags name: KaiZen OpenAPI Parser repository: https://github.com/reprezen/kaizen-openapi-parser owner: RepreZen category: Parsers language: Java source_description: High-performance Parser, Validator, and Java Object Model for OpenAPI 3.x v3: true repositoryMetadata: base64Readme: >- PGltZyBzcmM9Imh0dHBzOi8vY2RuMi5odWJzcG90Lm5ldC9odWJmcy81OTc2MTEvQXNzZXRzX1N3YWdnZXIvS2FpWmVuJTIwT3BlbkFQSSUyMFBhcnNlciUyMExvZ28lMjAobWVkaXVtKS5wbmciIGhlaWdodD0iNTAlIiB3aWR0aD0iNTAlIiBhbHQ9IkthaVplbiBPcGVuQVBJIFBhcnNlciBMb2dvIiAvPgoKIyBLYWlaZW4gT3BlbkFQSSBQYXJzZXIKCiMjIE92ZXJ2aWV3ICMjCgpUaGUgS2FpWmVuIE9wZW5BcGkgUGFyc2VyIGZyb20gUmVwcmVaZW4gaXMgYSBKYXZhLWJhc2VkIHZhbGlkYXRpbmcKcGFyc2VyIGZvciBPcGVuQVBJIDMuMCBvZmZlcmluZyBmdWxsIGNvbXBsaWFuY2Ugd2l0aCB0aGUKW09wZW5BUEkgMy4wIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kKSwKYW5kIGEgaGlnaGx5IHVuaWZvcm0gcmVhZC93cml0ZSBwcm9ncmFtbWluZyBBUEkuCltPcGVuQVBJXShodHRwOi8vb3BlbmFwaXMub3JnKSwgZm9ybWVybHkga25vd24gYXMgdGhlIFN3YWdnZXIKc3BlY2lmaWNhdGlvbiwgaXMgdGhlIGluZHVzdHJ5LXN0YW5kYXJkIGZvcm1hdCBmb3IgbWFjaGluZS1yZWFkYWJsZQpSRVNUIEFQSSBkZXNjcmlwdGlvbnMuCgpGZWF0dXJlIGhpZ2hsaWdodHMgb2YgS2FpWmVuIE9wZW5BUEkgUGFyc2VyIGluY2x1ZGU6CiogKipIaWdoIFBlcmZvcm1hbmNlKiogLSBJbmZvcm1hbCB0ZXN0aW5nIHNob3dzIGEgM3gtNHggcGVyZm9ybWFuY2UKICBpbXByb3ZlbWVudCBvdmVyIHRoZSBjdXJyZW50IEphdmEgU3dhZ2dlciAyLjAgcGFyc2VyLiBUaGlzIGlzCiAgbGFyZ2VseSBhdHRyaWJ1dGFibGUgdG8gYSBkZXNpZ24gYmFzZWQgb24gYWRhcHRpbmcgSmFja3NvbgogIGBKc29uTm9kZWAgb2JqZWN0cywgcmF0aGVyIHRoYW4gZGVzZXJpYWxpemluZyB0byBpbnRlcm5hbCBQT0pPcy4KICAKKiAqKlJlYWQvV3JpdGUgQVBJKiogLSBBbGwgYXNwZWN0cyBvZiBhIG1vZGVsIG1heSBiZSBpbnRlcnJvZ2F0ZWQgYW5kCiAgbW9kaWZpZWQuIFdlIGFsc28gcGxhbiB0byBwcm92aWRlIGZsdWVudCBidWlsZGVycyBmb3IgYWxsCiAgbW9kZWwgb2JqZWN0IHR5cGVzLiBXZSBwcm92aWRlIGJpZGlyZWN0aW9uYWwgbmF2aWdhdGlvbiB0aHJvdWdob3V0IHRoZQogIG1vZGVsLCBhbmQgZXZlcnkgb2JqZWN0IHRoYXQgaXMgYSBwcm9wZXJ0eSB2YWx1ZSBvZiBpdHMgY29udGFpbmluZwogIG9iamVjdCAod2hldGhlciBhcyBhIG5hbWVkIGZpZWxkIG9yIGEgbWFwIGVudHJ5KSBrbm93cyBpdHMgb3duIG5hbWUuCiAgCiogKipUb2xlcmFudCBSZWFkZXIqKiAtIFRoZSBwYXJzZXIgeWllbGRzIGEgZnVsbHkgYWNjZXNzaWJsZSByZXN1bHQKICBmcm9tIGFueSB2YWxpZCBKU09OIG9yIFlBTUwgaW5wdXQgLSB3aGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQgaXMgYQogIHZhbGlkIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4KICAKKiAqKlNlcGFyYXRlIHZhbGlkYXRpb24qKiAtIEFsbCB2YWxpZGF0aW9uIGJleW9uZCBiYXNpYwogIEpTT04vWUFNTCBwYXJzaW5nIGlzIHBlcmZvcm1lZCBhZnRlciB0aGUgaW5pdGlhbCBwYXJzZSwgYW5kIGl0IGNhbgogIGJlIGRpc2FibGVkIGZvciBzcGVlZC4gVmFsaWRhdGlvbiBnb2VzIGJleW9uZCBjaGVja2luZyB3aGF0IGNhbiBiZQogIGV4cHJlc3NlZCBpbiBKU09OIFNjaGVtYSwgdG8gaW5jbHVkZSBhbGwgcmVxdWlyZW1lbnRzIGRlc2NyaWJlZCBpbgogIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24uCgoqICoqU2VyaWFsaXphdGlvbioqIC0gU2VyaWFsaXphdGlvbiB0byBKU09OIG9yIFlBTUwgaXMgc3VwcG9ydGVkLCBhbmQKICBieSBkZWZhdWx0LCByb3VuZC10cmlwcGluZyB3aWxsIG5vdCBjYXVzZSBhbnkgcmVvcmRlcmluZyBvZiBtb2RlbAogIGNvbnRlbnQuCiAgCiogKipFYXN5IEV2b2x1dGlvbioqIC0gQSBZQU1MLWJhc2VkIERTTCBpcyB1c2VkIHRvIGNhcHR1cmUgbW9zdCBvZiB0aGUKICBkZXRhaWxzIG9mIHRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24uIFdlIHVzZSBjb2RlIGdlbmVyYXRpb24gdG8KICBjcmVhdGUgaW50ZXJmYWNlcyBhbmQgaW1wbGVtZW50YXRpb24gY2xhc3Nlcy4gTWVtYmVyLWxldmVsCiAgYEBHZW5lcmF0ZWRgIGFubm90YXRpb25zIG1ha2UgaXQgcG9zc2libGUgdG8gYXVnbWVudCB0aGUgZ2VuZXJhdGVkCiAgc291cmNlcyB3aXRoIG1hbnVhbCBjb2RlIHRoYXQgaXMgcHJlc2VydmVkIGR1cmluZyByZS1nZW5lcmF0aW9uLgogIAoqICoqRmxleGlibGUgUmVmZXJlbmNlIEhhbmRsaW5nKiogLSBBbGwgcmVmZXJlbmNlcyBhcmUgZGV0ZWN0ZWQgYW5kCiAgZHVyaW5nIHBhcnNpbmcsIGluY2x1ZGluZyByZWZlcmVuY2VzIG5vdCB0ZWNobmljYWxseSBwZXJtaXR0ZWQgYnkKICB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLiBSZWZlcmVuY2VzIGFyZSBub3JtYWxseSB0cmF2ZXJzZWQgCiAgYXV0b21hdGljYWxseSBieSB0aGUgQVBJLCBidXQgZnVsbCBkZXRhaWxzIG9mIHJlZmVyZW5jZXMgYW5kIAogIHRoZWlyIHJlc29sdXRpb24gc3RhdHVzIGFyZSBhbHNvIGF2YWlsYWJsZS4KICAKKiAqKlVucG9sbHV0ZWQgQVBJKiogLSBNYW55IGZlYXR1cmVzIG9mIHRoZSBwYXJzZXIgQVBJIGFyZSBub3QgZGlyZWN0bHkKICBhY2Nlc3NpYmxlIGZyb20gbW9kZWxlZCBvYmplY3RzLCBidXQgYXJlIGFjY2Vzc2VkIHZpYSBhZGFwdGVyIG9iamVjdHMuCiAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlc2UgZmVhdHVyZXMgd2lsbCBub3QgY29sbGlkZSB3aXRoIGdlbmVyYXRlZAogIG1ldGhvZHMgb2YgdGhlIG1vZGVsIEFQSSwgZXZlbiBhcyBuZXcgZmVhdHVyZXMgYXJlIGFkZGVkIHRvIHRoZQogIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZnV0dXJlLgogICAgCiMjIERvY3VtZW50YXRpb24KClRoZSBbR2V0dGluZyBTdGFydGVkIEd1aWRlXShHZXR0aW5nU3RhcnRlZC5tZCkgc2hvd3MgaG93IHRvIGJ1aWxkIHRoZSAKc29mdHdhcmUgbG9jYWxseSwgYW5kIGNvbnRhaW5zIGEgc2ltcGxlIHNhbXBsZSBwcm9ncmFtIHRoYXQgc2hvd3MgaG93IAp0byB1c2UgdGhlIHBhcnNlci4KClRoZSBbQVBJIE92ZXJ2aWV3XShBUEktT3ZlcnZpZXcubWQpIGRlc2NyaWJlcyB0aGUgQVBJcyBwcmVzZW50ZWQgaW4KdGhlIHByb2plY3QsIGluY2x1ZGluZyB0aGUgcGFyc2VyLCB0aGUgc2VyaWFsaXplciwgdGhlIHJlYWQvd3JpdGUKbW9kZWwsIGFuZCB0aGUgdHJlYXRtZW50IG9mIHJlZmVyZW5jZXMuCgojIyBXaG8ncyB1c2luZyBLYWlaZW4gUGFyc2VyPwoKSGVyZSdzIGEgc3RhcnRpbmcgbGlzdCBvZiBwcm9qZWN0cyB0aGF0IGFyZSBjdXJyZW50bHkgdXNpbmcgS2FpWmVuIE9wZW5BUEkgUGFyc2VyLiBJZiB5b3UgZG9uJ3Qgc2VlIHlvdXIgcHJvamVjdCBoZXJlLCBwbGVhc2Ugb3BlbiBhbiBpc3N1ZSBvciBwdWxsIHJlcXVlc3QgdG8gYWRkIGl0OgoKfCBQcm9qZWN0IExpbmsgfCBEZXNjcmlwdGlvbiB8CnwgLS0tIHwgLS0tIHwgCnwgW0VjbGlwc2UgVmVydC54XShodHRwOi8vdmVydHguaW8vKSB8IEVjbGlwc2UgVmVydC54IGlzIGEgdG9vbC1raXQgZm9yIGJ1aWxkaW5nIHJlYWN0aXZlIGFwcGxpY2F0aW9ucyBvbiB0aGUgSlZNLiB8IAp8IFtMaWdodC1yZXN0LTRqXShodHRwczovL2dpdGh1Yi5jb20vbmV0d29ya250L2xpZ2h0LXJlc3QtNGopIHwgTGlnaHQtNGogUkVTVGZ1bCBmcmFtZXdvcmsgZm9yIGJ1aWxkaW5nIGZhc3QsIGxpZ2h0d2VpZ2h0IG1pY3Jvc2VydmljZXMgb24gdGhlIEpWTS4gfCAKfCBbUmVwcmVaZW4gQVBJIFN0dWRpb10oaHR0cDovL3JlcHJlemVuLmNvbS9PcGVuQVBJKSB8IFJlcHJlWmVuIEFQSSBTdHVkaW8gaXMgYW4gaW50ZWdyYXRlZCB3b3JrYmVuY2ggZm9yIEFQSSBkZXNpZ24sIGRvY3VtZW50YXRpb24gYW5kIGRldmVsb3BtZW50LCBidWlsdCBvbiB0aGUgRWNsaXBzZSBwbGF0Zm9ybS4gfCAKCgojIyBDdXJyZW50IFN0YXRlCgoqIFRoZSBwYXJzZXIgaXMgY3VycmVudGx5IGJhc2VkIG9uIHRoZSBwcmUtcmVsZWFzZSBbcmV2aXNpb24gMy4wLjAtcmMwXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL2QyMzJlNmQzZTFlYTQwMzhhNTMzMzI5YTgyODc2YWU4NjhlOWNmMTMvdmVyc2lvbnMvMy4wLm1kKS4gV2UgYXJlIG5lYXJseSByZWFkeSB3aXRoIGFuIHVwZ3JhZGUgdG8gdGhlIFszLjAuMiBkcmFmdCByZXZpc2lvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi92My4wLjItZGV2L3ZlcnNpb25zLzMuMC4yLm1kKS4KCiogVGhlIFtKc29uT3ZlcmxheSBQcm9qZWN0XShodHRwczovL2dpdGh1Yi5jb20vUmVwcmVaZW4vSnNvbk92ZXJsYXkpIGlzIGEgZnJhbWV3b3JrIGZvciBjcmVhdGluZyBwYXJzZXJzIGFuZCBBUElzIGZvciBZQU1ML0pTT04gYmFzZWQgRFNMcy4gSXQgaXMgdGhlIGJhY2tib25lIG9mIHRoZSBLYWlaZW4gT3BlbkFwaSBQYXJzZXIuIEZlYXR1cmVzIHRoYXQgdGhhdCBpdCBwcm92aWRlcyBpbmNsdWRlOgogCiAgKiBSZWFkLVdyaXRlIEFQSSBmb3IgYWxsIG1vZGVsIG9iamVjdHMsIGJhc2VkIG9uIGEgWUFNTCBkb2N1bWVudCB0aGF0IGRlc2NyaWJlcyB0aGUgT3BlbkFQSSBtb2RlbCBzdHJ1Y3R1cmUKICAqIEZhY3RvcmllcyBmb3IgbW9kZWwgb2JqZWN0cyAodXNlZCBpbnRlcm5hbGx5LCBidXQgbm90IGN1cnJlbnRseSB3ZWxsIGV4cG9zZWQgdG8gdXNlciBjb2RlOyB0aGF0IHdpbGwgY2hhbmdlIHNob3J0bHkpCiAgKiBGdWxsIGhhbmRsaW5nIG9mIGFsbCByZWZlcmVuY2VzLgogICogU2VyaWFsaXphdGlvbiwgcmVmZXJlbmNlIGluc3BlY3Rpb24sIG5hdmlnYXRpb24sIGFuZCBudW1lcm91cyBvdGhlciBmZWF0dXJlcyB2aWEgaXRzIGBPdmVybGF5YCBhZGFwdGVyIGNsYXNzZXMuCiAgKiBQb3NpdGlvbi1hd2FyZSBwYXJzZXIgcHJvdmlkaW5nIFVSTCwgbGluZSBhbmQgZmlsZSBudW1iZXIgZm9yIGFsbCBwYXJzZWQgb2JqZWN0cywgYXZhaWxhYmxlIHRocm91Z2ggYE92ZXJsYXlgIGFkYXB0ZXJzIGFuZCB1c2VkIGJ5IHRoZSBLYWlaZW4gcGFyc2VyIGluIGl0cyB2YWxpZGF0aW9uIG1lc3NhZ2VzLgoKKiBWYWxpZGF0aW9ucyBhcmUgY3VycmVudGx5IGFsbCBjb250YWluZWQgd2l0aGluIHRoaXMgcHJvamVjdCwgaG93ZXZlciBtYW55IHJvdXRpbmUgdmFsaWRhdGlvbnMgKGUuZy4gdmFsaWRhdGluZyBwcm9wZXIgSlNPTiB0eXBlcyB0aHJvdWdob3V0IGEgbW9kZWwgZG9jdW1lbnQsIGNoZWNraW5nIHRoYXQgcmVxdWlyZWQgcHJvcGVydGllcyBhcmUgcHJlc2VudCwgZXRjLikgd2lsbCBhdCBzb21lIHBvaW50IGJlIG1vdmVkIGludG8gdGhlIEpzb25PdmVybGF5IHByb2plY3QuCgoqIE1vc3QgdmFsaWRhdGlvbnMgYXJlIHByZXNlbnQsIGJ1dCB0aGVyZSBhcmUgYSBudW1iZXIgdGhhdCBhcmUgY3VycmVudGx5IG1pc3NpbmcsIGFuZCBzb21lIGV4aXN0aW5nIHZhbGlkYXRpb25zIHN0aWxsIHJlZmxlY3QgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBpbiBpdHMgcHJlLXJlbGVhc2UgcmV2aXNpb24gMy4wLjAtcmMwLiBXb3JrIGlzIHVuZGVyd2F5IG9uIElzc3VlICMyNl0oaHR0cHM6Ly9naXRodWIuY29tL1JlcHJlWmVuL0thaVplbi1PcGVuQXBpLVBhcnNlci9pc3N1ZXMvMjYpLCB3aGljaCBzaG91bGQgcmVzdWx0IGluIGEgY29tcGxldGUgYW5kIHJvYnVzdCBpbXBsZW1lbnRhdGlvbiBvZiBhbGwgbW9kZWwgdmFsaWRhdGlvbnMsIHVwZGF0ZWQgdG8gdGhlIDMuMC4yIHJldmlzaW9uIChjdXJyZW50bHkgaW4gZHJhZnQgc3RhdHVzKS4KCiogU2VyaWFsaXphdGlvbiBpcyBhdmFpbGFibGUgdmlhIHRoZSBgT3ZlcmxheWAgYWRhcHRlcidzIGB0b0pzb25gIG1ldGhvZC4gQnkgZGVmYXVsdCByZWZlcmVuY2VzIGFwcGVhciBpbiB0aGUgc2VyaWFsaXplZCBvdXRwdXQsIGJ1dCBhbiBvcHRpb24gY2F1c2VzIHJlZmVyZW5jZXMgdG8gYmUgZm9sbG93ZWQgYW5kIGlubGluZWQgaW4gdGhlIG91dHB1dC4gUmVjdXJzaXZlIHJlZmVyZW5jZXMgY2F1c2Ugc2VyaWFsaXphdGlvbiB0byBibG93IHVwIGlmIHRoaXMgb3B0aW9uIGlzIHVzZWQuCiAgLSBBIHNlcGFyYXRlIGNvbXBvbmVudCwgY2FsbGVkICJPcGVuQVBJIE5vcm1hbGl6ZXIsIiB3aWxsIHNvb24gYmUgbWFkZSBhdmFpbGFibGUgdGhhdCB3aWxsIHByb3ZpZGUgbXVjaCBncmVhdGVyIGNvbnRyb2wgb3ZlciB0aGUgdHJlYXRtZW50IG9mIHJlZmVyZW5jZXMuIFRoaXMgaXMgY3VycmVudGx5IGEgcHJpdmF0ZSBmZWF0dXJlIGVtYmVkZGVkIGluIFtSZXByZVplbiBBUEkgU3R1ZGlvXShodHRwczovL3d3dy5yZXByZXplbi5jb20vKS4gSXRzIHByaW1hcnkgZnVuY3Rpb24gaXMgdG8gdHVybiBhbiBPcGVuQVBJIG1vZGVsIHNwcmVhZCBhY3Jvc3MgbXVsdGlwbGUgZmlsZXMgaW50byBhbiBlcXVpdmFsZW50IHNpbmdsZS1maWxlIG1vZGVsLiBPcHRpb25zIGNvbnRyb2wgd2hpY2ggcmVmZXJlbmNlcyBhcmUgaW5saW5lZCwgYW5kIHdoaWNoIGFyZSBfbG9jYWxpemVkXyBhcyBuYW1lZCBjb21wb25lbnQgb2JqZWN0cyBpbiB0aGUgY29uc3RydWN0ZWQgc2luZ2xlLWZpbGUgbW9kZWwuCiAgCiogQSBoYW5kZnVsIG9mIGhpZ2gtbGV2ZWwgdGVzdHMgaGF2ZSBiZWVuIGltcGxlbWVudGVkOgogIC0gKkJpZ1BhcnNlVGVzdCogcGFyc2VzIGEgbGFyZ2UgbW9kZWwgd2l0aG91dCB2YWxpZGF0aW9uIGFuZCBjaGVja3MKICAgIHRoYXQgZXZlcnkgdmFsdWUgbm9kZSBpbiB0aGUgaW5wdXQgaXMgYWNjZXNzaWJsZSBpbiB0aGUgZXhwZWN0ZWQKICAgIGZhc2hpb24gaW4gdGhlIHJlc3VsdGluZyBtb2RlbCBvYmplY3QuCiAgLSAqRXhhbXBsZXNUZXN0KiAtIFBhcnNlcyBhbmQgdmFsaWRhdGVzIGFsbCBleGFtcGxlIG1vZGVscyBjdXJyZW50bHkKICAgIGluIHRoZSB0aGUgYE9BSS9PcGVuQVBJLVNwZWNpZmljYXRpb25gIEdpdEh1YiByZXBvLgoKICAgIE1hbnkgbW9yZSB0ZXN0cyBhcmUgcmVxdWlyZWQhCgoqIEZldyBKYXZhRG9jcyBleGlzdCBhdCBwcmVzZW50LCB1bmZvcnR1bmF0ZWx5LiBUaGVyZSdzIGFuIG9wZW4gaXNzdWUKICB0byBjb3JyZWN0IHRoYXQuCgojIyMgUGFja2FnZXMKCl9Tb21lIG9mIHRoZXNlIHBhY2thZ2VzIGFyZSBsaWtlbHkgdG8gYmUgcmVmYWN0b3JlZCBvdXQgaW50byBzZXBhcmF0ZQpjb21wb25lbnQgTWF2ZW4gcHJvamVjdHMuXwoKQWxsIHBhY2thZ2VzIGFyZSBwcmVmaXhlZCBieSBgY29tLnJlcHJlemVuLmthaXplbmAKCiogYG9hc3BhcnNlcmA6IFRvcC1sZXZlbCBwYWNrYWdlLCBkaXJlY3RseSBpbmNsdWRlcwogIGBPcGVuQXBpUGFyc2VyYCBjbGFzcyBhbmQgc29tZSB0aGluZ3MgcmVsYXRlZCB0byBjb2RlIGdlbmVyYXRpb24uCiAgCiogYG9hc3BhcnNlci5tb2RlbDNgOiBHZW5lcmF0ZWQgbW9kZWwgaW50ZXJmYWNlcyAoZ2VuZXJhdGVkIGJ5IEpzb25PdmVybGF5KQoKKiBgb2FzcGFyc2VyLm92bDNgOiBHZW5lcmF0ZWQgbW9kZWwgaW1wbGVtZW50YXRpb24gY2xhc3NlcyAoZ2VuZXJhdGVkIGJ5IEpzb25PdmVybGF5KQoKKiBgb2FzcGFyc2VyLnZhbGA6IEJhc2UgY2xhc3NlcyBmb3IgdmFsaWRhdG9ycwoKKiBgb2FzcGFyc2VyLnZhbDNgOiBWYWxpZGF0b3JzIGZvciBhbGwgT3BlbkFQSSBvYmplY3RzLgoKKiBgb2FzcGFyc2VyLnRlc3RgOiBUaGUgaGFuZGZ1bCBvZiB0ZXN0cyB0aGF0IGhhdmUgYmVlbgogIGltcGxlbWVudGVkIHNvIGZhci4gTW9yZSBuZWVkZWQKCgojIyBMaWNlbnNlCkthaVplbiBPcGVuQVBJIFBhcnNlciBpcyBwcm92aWRlZCB1bmRlciB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAoaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sKQoKIyMgQ29udHJpYnV0aW5nCgpXZSB3ZWxjb21lIHNlcmlvdXMgY29udHJpYnV0b3JzLiBIb3dldmVyLCB3ZSBhcmUgYXQgYW4gZWFybHkgYW5kCmZhc3QtY2hhbmdpbmcgcGhhc2UgaW4gdGhpcyBwcm9qZWN0LCBzbyB3ZSByZWNvbW1lbmQgY29vcmRpbmF0aW5nCndpdGggdXMgYmVmb3JlIGRpdmluZyBpbnRvIGEganVpY3kgYml0IG9mIGNvZGluZy4gVGhpcyBtaWdodCBzcGFyZSAKeW91IHRoZSBmcnVzdHJhdGlvbiBvZiBmaW5kaW5nIHRoYXQgc29tZSBzd2VlcGluZyBsb3ctbGV2ZWwgY2hhbmdlCmhhcyByZW5kZXJlZCB5b3VyIGVmZm9ydHMgdW51c2FibGUuCgpJZiB5b3Ugd291bGQgbGlrZSB0byB3b3JrIHdpdGggdXMsIHBsZWFzZSBkcm9wIHVzIGEgbGluZSBhdApBUEkuQ29tbXVuaXR5QFJlcHJlWmVuLmNvbSwgb3Igb3BlbiBhIG5ldyBpc3N1ZSBpZiB5b3UgaGF2ZQphIHN1Z2dlc3Rpb24gb3Igd2FudCB0byByZXBvcnQgYSBidWcgb3Igb21pc3Npb24uCgojIyBSZXNvdXJjZXMKKiBCbG9nIFBvc3Q6IFtJbnRyb2R1Y2luZyBLYWlaZW4gT3BlbkFQSSAzLjAgUGFyc2VyOiBmYXN0LCBmbGV4aWJsZSBKYXZhIHBhcnNpbmcgJiB2YWxpZGF0aW9uXShodHRwOi8vd3d3LnJlcHJlemVuLmNvbS9ibG9nL2thaXplbi1vcGVuYXBpLTNfMC1wYXJzZXItc3dhZ2dlci1qYXZhLW9wZW4tc291cmNlKQoqIFtHZXR0aW5nIFN0YXJ0ZWQgR3VpZGVdKEdldHRpbmdTdGFydGVkLm1kKQoqIFtBUEkgT3ZlcnZpZXddKEFQSS1PdmVydmlldy5tZCkK readmeEtag: '"65b773015321acdbf3de73891ebfec4619170091"' readmeLastModified: Wed, 17 Jul 2019 13:54:46 GMT repositoryId: 86403618 description: High-performance Parser, Validator, and Java Object Model for OpenAPI 3.x created: '2017-03-28T02:00:01Z' updated: '2025-12-29T02:11:01Z' language: Java archived: false stars: 132 watchers: 8 forks: 31 owner: RepreZen logo: https://avatars.githubusercontent.com/u/15205934?v=4 repoEtag: '"dcd33228a9773935b801365f177c9f5623361cc908aaa7520f1ee73208aa322f"' repoLastModified: Mon, 29 Dec 2025 02:11:01 GMT foundInMaster: true homepage: https://github.com/RepreZen/KaiZen-OpenAPI-Parser id: f542543d6021da9cbce2c66599690853 - source: https://openapi.tools/ name: OpenAPI-TS homepage: https://github.com/metadevpro/openapi3-ts language: TypeScript source_description: TS Model & utils for OpenAPI 3.0.x contracts category: Parsers repository: https://github.com/metadevpro/openapi3-ts v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQXBpMy1UUwoKVHlwZVNjcmlwdCBsaWJyYXJ5IHRvIGhlbHAgYnVpbGRpbmcgT3BlbkFQSSAzLnggY29tcGxpYW50IEFQSSBjb250cmFjdHMuCgpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi9tZXRhZGV2cHJvL29wZW5hcGkzLXRzL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL21ldGFkZXZwcm8vb3BlbmFwaTMtdHM/YnJhbmNoPW1hc3RlcikKWyFbS25vd24gVnVsbmVyYWJpbGl0aWVzXShodHRwczovL3NueWsuaW8vdGVzdC9naXRodWIvbWV0YWRldnByby9vcGVuYXBpMy10cy9iYWRnZS5zdmc/dGFyZ2V0RmlsZT1wYWNrYWdlLmpzb24pXShodHRwczovL3NueWsuaW8vdGVzdC9naXRodWIvbWV0YWRldnByby9vcGVuYXBpMy10cz90YXJnZXRGaWxlPXBhY2thZ2UuanNvbikKWyFbbnBtIHZlcnNpb25dKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9qcy9vcGVuYXBpMy10cy5zdmcpXShodHRwOi8vYmFkZ2UuZnVyeS5pby9qcy9vcGVuYXBpMy10cykKClshW05QTV0oaHR0cHM6Ly9ub2RlaS5jby9ucG0vb3BlbmFwaTMtdHMucG5nP2Rvd25sb2Fkcz10cnVlJmRvd25sb2FkUmFuaz10cnVlJnN0YXJzPXRydWUpXShodHRwczovL25vZGVpLmNvL25wbS9vcGVuYXBpMy10cy8pCgojIyBWZXJzaW9uIDQKCipCcmVha2luZyBjaGFuZ2Ugbm90aWNlOioKClZlcnNpb24gNC4wIEFkZHMgZXhwbGljaXQgc3VwcG9ydCBmb3IgT0FTIDMuMCBhbmQgT0FTIDMuMSBhcyBzZXBhcmF0ZSBpbXBsZW1lbnRhdGlvbnMuCgojIyMgVG8gdXNlIHZlcnNpb24gMy4xIGltcG9ydAoKYGBganMKaW1wb3J0IHsgb2FzMzEgfSBmcm9tICdvcGVuYXBpMy10cyc7CmBgYAoKT3IgZGlyZWN0bHkgaW1wb3J0IGZyb20gc3VicGF0aDoKCmBgYGpzCmltcG9ydCB7IE9wZW5BUElPYmplY3QsIE9wZW5BcGlCdWlsZGVyIH0gZnJvbSAnb3BlbmFwaTMtdHMvb2FzMzEnOwpgYGAKCiMjIyBUbyB1c2UgdmVyc2lvbiAzLjAgaW1wb3J0CgpgYGBqcwppbXBvcnQgeyBvYXMzMCB9IGZyb20gJ29wZW5hcGkzLXRzJzsKYGBgCgpPciBkaXJlY3RseSBpbXBvcnQgZnJvbSBzdWJwYXRoOgoKYGBganMKaW1wb3J0IHsgT3BlbkFQSU9iamVjdCwgT3BlbkFwaUJ1aWxkZXIgfSBmcm9tICdvcGVuYXBpMy10cy9vYXMzMCc7CmBgYAoKIyMgSW5jbHVkZXMKCiogYC9zcmMvbW9kZWxgIFRTIHR5cGVkIGludGVyZmFjZXMgZm9yIGhlbHBpbmcgYnVpbGRpbmcgYSBjb250cmFjdC4KKiBgL3NyYy9kc2xgIEZsdWVudCBEU0wgZm9yIGJ1aWxkaW5nIGEgY29udHJhY3QuCgojIyBJbnN0YWxsCgpJbnN0YWxsIHBhY2thZ2UgdmlhICoqbnBtKio6CgpgYGBiYXNoCm5wbSBpIC0tc2F2ZSBvcGVuYXBpMy10cwpgYGAKCiMjIERvY3VtZW50YXRpb24sIFZlcnNpb25zLCBhbmQgQ2hhbmdlbG9nCgoqIFtEb2N1bWVudGF0aW9uXShkb2NzL2luZGV4Lm1kKS4KKiBTZWUgW2NoYW5nZWxvZ10oQ2hhbmdlbG9nLm1kKSBmb3IgdmVyc2lvbiBhbmQgY2hhbmdlcy4KCiMjIFJlZmVyZW5jZXMKCiogT3BlbkFQSSBzcGVjIDMuMS4wLiBbaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4xLjAubWRdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMS4wLm1kKQoKIyMgTGljZW5zZQoKTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgoKIyMgQ3JlZGl0cwoKKipDb250YWN0OioqIFBlZHJvIEouIE1vbGluYSB8IGdpdGh1YjogW3BqbW9saW5hXShodHRwczovL2dpdGh1Yi5jb20vcGptb2xpbmEpIHwgdHdpdHRlcjogW3Btb2xpbmFtXShodHRwczovL3R3aXR0ZXIuY29tL3Btb2xpbmFtKQoKKGMpIDIwMTctMjAyNC4gW1BlZHJvIEouIE1vbGluYV0oaHR0cDovL3BqbW9saW5hLmNvbSkgYXQgTWV0YWRldiBTLkwuIFtodHRwczovL21ldGFkZXYucHJvXShodHRwczovL21ldGFkZXYucHJvKSAmIGNvbnRyaWJ1dG9ycy4K readmeEtag: '"12f647d08b21592b28224cc4ed886b16d9bc840f"' readmeLastModified: Mon, 10 Jun 2024 15:05:07 GMT repositoryId: 84108450 description: TS Model & utils for creating and exposing OpenAPI 3.x contracts. created: '2017-03-06T18:47:56Z' updated: '2026-02-02T17:17:07Z' language: TypeScript archived: false stars: 540 watchers: 6 forks: 63 owner: metadevpro logo: https://avatars.githubusercontent.com/u/24300914?v=4 license: MIT repoEtag: '"02d25ab98b83f3d4bdd142b6a6434f81fb20907fa8ce4a8f05059e298f10d98f"' repoLastModified: Mon, 02 Feb 2026 17:17:07 GMT foundInMaster: true id: 390339b2a28f2e5660519a2422c29196 - source: - https://openapi.tools/ - openapi3 tags name: kin-openapi homepage: https://github.com/getkin/kin-openapi language: Go source_description: >- OpenAPI 3.0 (and Swagger v2) implementation for Go (parsing, converting, validation, and more) category: - Parsers - Data Validators repository: https://github.com/getkin/kin-openapi v3: true repositoryMetadata: base64Readme: >- WyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvd29ya2Zsb3dzL2dvL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvYWN0aW9ucykKWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaSldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpClshW0dvRG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaT9zdGF0dXMuc3ZnKV0oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpClshW0pvaW4gR2l0dGVyIENoYXQgQ2hhbm5lbCAtXShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vZ2V0a2luL2tpbi5zdmcpXShodHRwczovL2dpdHRlci5pbS9nZXRraW4va2luP3V0bV9zb3VyY2U9YmFkZ2UmdXRtX21lZGl1bT1iYWRnZSZ1dG1fY2FtcGFpZ249cHItYmFkZ2UmdXRtX2NvbnRlbnQ9YmFkZ2UpCgojIEludHJvZHVjdGlvbgpBIFtHb10oaHR0cHM6Ly9nb2xhbmcub3JnKSBwcm9qZWN0IGZvciBoYW5kbGluZyBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgZmlsZXMuIFdlIHRhcmdldDoKKiBbT3BlbkFQSSBgdjIuMGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8yLjAubWQpIChmb3JtZXJseSBrbm93biBhcyBTd2FnZ2VyKQoqIFtPcGVuQVBJIGB2My4wYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMC4zLm1kKQoqIFtPcGVuQVBJIGB2My4xYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kKSBTb29uISBbVHJhY2tpbmcgaXNzdWUgaGVyZS5dKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvaXNzdWVzLzIzMCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBbTUlUIExpY2Vuc2VdKC4vTElDRU5TRSkuCgojIyBDb250cmlidXRvcnMsIHVzZXJzIGFuZCBzcG9uc29ycwpUaGUgcHJvamVjdCBoYXMgcmVjZWl2ZWQgcHVsbCByZXF1ZXN0cyBbZnJvbSBtYW55IHBlb3BsZV0oaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9ncmFwaHMvY29udHJpYnV0b3JzKS4gVGhhbmtzIHRvIGV2ZXJ5b25lIQoKUGxlYXNlLCBbZ2l2ZSBiYWNrIHRvIHRoaXMgcHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL2Zlbm9sbHApIGJ5IGJlY29taW5nIGEgc3BvbnNvci4KCkhlcmUncyBzb21lIHByb2plY3RzIHRoYXQgZGVwZW5kIG9uIF9raW4tb3BlbmFwaV86CiAgKiBbZ2l0aHViLmNvbS9nby1mdWVnby9mdWVnb10oaHR0cHM6Ly9naXRodWIuY29tL2dvLWZ1ZWdvL2Z1ZWdvKSAtICJGcmFtZXdvcmsgZ2VuZXJhdGluZyBPcGVuQVBJIDMgc3BlYyBmcm9tIHNvdXJjZSBjb2RlIgogICogW2dpdGh1Yi5jb20vYS1oL3Jlc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9hLWgvcmVzdCkgLSAiR2VuZXJhdGUgT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbnMgZnJvbSBHbyBjb2RlIHdpdGhvdXQgYW5ub3RhdGlvbnMgb3IgbWFnaWMgY29tbWVudHMiCiAgKiBbZ2l0aHViLmNvbS9UdWZpbi9vYXNkaWZmXShodHRwczovL2dpdGh1Yi5jb20vVHVmaW4vb2FzZGlmZikgLSAiQSBkaWZmIHRvb2wgZm9yIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAzIgogICogW2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9hcGlzcHJvdXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL2FwaXNwcm91dCkgLSAiTGlnaHR3ZWlnaHQsIGJsYXppbmcgZmFzdCwgY3Jvc3MtcGxhdGZvcm0gT3BlbkFQSSAzIG1vY2sgc2VydmVyIHdpdGggdmFsaWRhdGlvbiIKICAqIFtnaXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuKSAtICJHZW5lcmF0ZSBHbyBjbGllbnQgYW5kIHNlcnZlciBib2lsZXJwbGF0ZSBmcm9tIE9wZW5BUEkgMyBzcGVjaWZpY2F0aW9ucyIKICAqIFtnaXRodWIuY29tL2R1bmdsYXMvdnVsY2Fpbl0oaHR0cHM6Ly9naXRodWIuY29tL2R1bmdsYXMvdnVsY2FpbikgLSAiVXNlIEhUVFAvMiBTZXJ2ZXIgUHVzaCB0byBjcmVhdGUgZmFzdCBhbmQgaWRpb21hdGljIGNsaWVudC1kcml2ZW4gUkVTVCBBUElzIgogICogW2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9yZXN0aXNoXShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9yZXN0aXNoKSAtICIuLi5hIENMSSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBSRVNULWlzaCBIVFRQIEFQSXMgd2l0aCBzb21lIG5pY2UgZmVhdHVyZXMgYnVpbHQtaW4iCiAgKiBbZ2l0aHViLmNvbS9nb2FkZXNpZ24vZ29hXShodHRwczovL2dpdGh1Yi5jb20vZ29hZGVzaWduL2dvYSkgLSAiRGVzaWduLWJhc2VkIEFQSXMgYW5kIG1pY3Jvc2VydmljZXMgaW4gR28iCiAgKiBbZ2l0aHViLmNvbS9oYXNoaWNvcnAvbm9tYWQtb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC9ub21hZC1vcGVuYXBpKSAtICJOb21hZCBpcyBhbiBlYXN5LXRvLXVzZSwgZmxleGlibGUsIGFuZCBwZXJmb3JtYW50IHdvcmtsb2FkIG9yY2hlc3RyYXRvciB0aGF0IGNhbiBkZXBsb3kgYSBtaXggb2YgbWljcm9zZXJ2aWNlLCBiYXRjaCwgY29udGFpbmVyaXplZCwgYW5kIG5vbi1jb250YWluZXJpemVkIGFwcGxpY2F0aW9ucy4gTm9tYWQgaXMgZWFzeSB0byBvcGVyYXRlIGFuZCBzY2FsZSBhbmQgaGFzIG5hdGl2ZSBDb25zdWwgYW5kIFZhdWx0IGludGVncmF0aW9ucy4iCiAgKiBbZ2l0bGFiLmNvbS9qYW1pZXRhbm5hL2h0dHB0ZXN0LW9wZW5hcGldKGh0dHBzOi8vZ2l0bGFiLmNvbS9qYW1pZXRhbm5hL2h0dHB0ZXN0LW9wZW5hcGkpIChbKmJsb2cgcG9zdCpdKGh0dHBzOi8vd3d3Lmp2dC5tZS9wb3N0cy8yMDIyLzA1LzIyL2dvLW9wZW5hcGktY29udHJhY3QtdGVzdC8pKSAtICJHbyBPcGVuQVBJIENvbnRyYWN0IFZlcmlmaWNhdGlvbiBmb3IgdXNlIHdpdGggYG5ldC9odHRwYCIKICAqIFtnaXRodWIuY29tL1NJTUlUR1JPVVAvb3BlbmFwaWdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL1NJTUlUR1JPVVAvb3BlbmFwaWdlbmVyYXRvcikgLSAiT3BlbmFwaSB2MyBtaWNyb3NlcnZpY2VzIGdlbmVyYXRvciIKICAqIFtodHRwczovL2dpdGh1Yi5jb20vcHJvamVjdHN2ZWx0b3MvYWRkb24tY29udHJvbGxlcl0oaHR0cHM6Ly9naXRodWIuY29tL3Byb2plY3RzdmVsdG9zL2FkZG9uLWNvbnRyb2xsZXIpIC0gIkt1YmVybmV0ZXMgYWRkLW9uIGNvbnRyb2xsZXIgZGVzaWduZWQgdG8gbWFuYWdlIHRlbnMgb2YgY2x1c3RlcnMuIgogICogKEZlZWwgZnJlZSB0byBhZGQgeW91ciBwcm9qZWN0IGJ5IFtjcmVhdGluZyBhbiBpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9pc3N1ZXMvbmV3KSBvciBhIHB1bGwgcmVxdWVzdCkKCiMjIEFsdGVybmF0aXZlcwoqIFtsaWJvcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vcGIzM2YvbGlib3BlbmFwaSkgYSBmdWxseSBmZWF0dXJlZCwgaGlnaCBwZXJmb3JtYW5jZSBPcGVuQVBJIDMuMSwgMy4wIGFuZCBTd2FnZ2VyIHBhcnNlciwgbGlicmFyeSwgdmFsaWRhdG9yIGFuZCB0b29sa2l0CiogW2dvLXN3YWdnZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1zd2FnZ2VyL2dvLXN3YWdnZXIpIHN0YXRlZCBbKk9wZW5BUEl2MyB3b24ndCBiZSBzdXBwb3J0ZWQqXShodHRwczovL2dpdGh1Yi5jb20vZ28tc3dhZ2dlci9nby1zd2FnZ2VyL2lzc3Vlcy8xMTIyI2lzc3VlY29tbWVudC01NzU5Njg0OTkpCiogW3N3YWdnb10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnby9zd2FnKSBoYXMgYW4gW29wZW4gaXNzdWUgb24gT3BlbkFQSXYzXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dvL3N3YWcvaXNzdWVzLzM4NikKKiBbZ28tb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL2dvLW9wZW5hcGkpJ3MgW3NwZWMzXShodHRwczovL2dpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjMykKCSogYW4gaXRlcmF0aW9uIG9uIFtzcGVjXShodHRwczovL2dpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjKSAoZm9yIE9wZW5BUEl2MikKCSogc2VlIFtSRUFETUVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWMzL3RyZWUvM2ZhYjlmYWE5MDk0ZTA2ZWJkMTlkZWQ3ZWE5NmQxNTZjMjI4M2RjYSNvYWktb2JqZWN0LW1vZGVsLS0tKSBmb3IgdGhlIG1pc3NpbmcgcGFydHMKCkJlIHN1cmUgdG8gY2hlY2sgW09wZW5BUEkgSW5pdGlhdGl2ZV0oaHR0cHM6Ly9naXRodWIuY29tL09BSSkncyBbZ3JlYXQgdG9vbGluZyBsaXN0XShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci9JTVBMRU1FTlRBVElPTlMubWQpIGFzIHdlbGwgYXMgW09wZW5BUEkuVG9vbHNdKGh0dHBzOi8vb3BlbmFwaS50b29scy8pLgoKIyBTdHJ1Y3R1cmUKICAqIF9vcGVuYXBpMl8gKFtnb2RvY10oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTIpKQogICAgKiBTdXBwb3J0IGZvciBPcGVuQVBJIDIgZmlsZXMsIGluY2x1ZGluZyBzZXJpYWxpemF0aW9uLCBkZXNlcmlhbGl6YXRpb24sIGFuZCB2YWxpZGF0aW9uLgogICogX29wZW5hcGkyY29udl8gKFtnb2RvY10oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTJjb252KSkKICAgICogQ29udmVydHMgT3BlbkFQSSAyIGZpbGVzIGludG8gT3BlbkFQSSAzIGZpbGVzLgogICogX29wZW5hcGkzXyAoW2dvZG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpMykpCiAgICAqIFN1cHBvcnQgZm9yIE9wZW5BUEkgMyBmaWxlcywgaW5jbHVkaW5nIHNlcmlhbGl6YXRpb24sIGRlc2VyaWFsaXphdGlvbiwgYW5kIHZhbGlkYXRpb24uCiAgKiBfb3BlbmFwaTNmaWx0ZXJfIChbZ29kb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkzZmlsdGVyKSkKICAgICogVmFsaWRhdGVzIEhUVFAgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcwogICAgKiBQcm92aWRlcyBhIFtnb3JpbGxhL211eF0oaHR0cHM6Ly9naXRodWIuY29tL2dvcmlsbGEvbXV4KSByb3V0ZXIgZm9yIE9wZW5BUEkgb3BlcmF0aW9ucwogICogX29wZW5hcGkzZ2VuXyAoW2dvZG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpM2dlbikpCiAgICAqIEdlbmVyYXRlcyBgKm9wZW5hcGkzLlNjaGVtYWAgdmFsdWVzIGZvciBHbyB0eXBlcy4KCiMgU29tZSByZWNpcGVzCiMjIFZhbGlkYXRpbmcgYW4gT3BlbkFQSSBkb2N1bWVudApgYGBzaGVsbApnbyBydW4gZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvY21kL3ZhbGlkYXRlQGxhdGVzdCBbLS1jaXJjdWxhcl0gWy0tZGVmYXVsdHNdIFstLWV4YW1wbGVzXSBbLS1leHRdIFstLXBhdHRlcm5zXSAtLSA8bG9jYWwgWUFNTCBvciBKU09OIGZpbGU+CmBgYAoKIyMgTG9hZGluZyBPcGVuQVBJIGRvY3VtZW50ClVzZSBgb3BlbmFwaTMuTG9hZGVyYCwgd2hpY2ggcmVzb2x2ZXMgYWxsIHJlZmVyZW5jZXM6CmBgYGdvCmxvYWRlciA6PSBvcGVuYXBpMy5OZXdMb2FkZXIoKQpkb2MsIGVyciA6PSBsb2FkZXIuTG9hZEZyb21GaWxlKCJteS1vcGVuYXBpLXNwZWMuanNvbiIpCmBgYAoKIyMgR2V0dGluZyBPcGVuQVBJIG9wZXJhdGlvbiB0aGF0IG1hdGNoZXMgcmVxdWVzdApgYGBnbwpsb2FkZXIgOj0gb3BlbmFwaTMuTmV3TG9hZGVyKCkKZG9jLCBfIDo9IGxvYWRlci5Mb2FkRnJvbURhdGEoW11ieXRlKGAuLi5gKSkKXyA9IGRvYy5WYWxpZGF0ZShsb2FkZXIuQ29udGV4dCkKcm91dGVyLCBfIDo9IGdvcmlsbGFtdXguTmV3Um91dGVyKGRvYykKcm91dGUsIHBhdGhQYXJhbXMsIF8gOj0gcm91dGVyLkZpbmRSb3V0ZShodHRwUmVxdWVzdCkKLy8gRG8gc29tZXRoaW5nIHdpdGggcm91dGUuT3BlcmF0aW9uCmBgYAoKIyMgVmFsaWRhdGluZyBIVFRQIHJlcXVlc3RzL3Jlc3BvbnNlcwpgYGBnbwpwYWNrYWdlIG1haW4KCmltcG9ydCAoCgkiY29udGV4dCIKCSJmbXQiCgkibmV0L2h0dHAiCgoJImdpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkzIgoJImdpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkzZmlsdGVyIgoJImdpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL3JvdXRlcnMvZ29yaWxsYW11eCIKKQoKZnVuYyBtYWluKCkgewoJY3R4IDo9IGNvbnRleHQuQmFja2dyb3VuZCgpCglsb2FkZXIgOj0gJm9wZW5hcGkzLkxvYWRlcntDb250ZXh0OiBjdHgsIElzRXh0ZXJuYWxSZWZzQWxsb3dlZDogdHJ1ZX0KCWRvYywgXyA6PSBsb2FkZXIuTG9hZEZyb21GaWxlKCIuLi4vTXktT3BlbkFQSXYzLUFQSS55bWwiKQoJLy8gVmFsaWRhdGUgZG9jdW1lbnQKCV8gPSBkb2MuVmFsaWRhdGUoY3R4KQoJcm91dGVyLCBfIDo9IGdvcmlsbGFtdXguTmV3Um91dGVyKGRvYykKCWh0dHBSZXEsIF8gOj0gaHR0cC5OZXdSZXF1ZXN0KGh0dHAuTWV0aG9kR2V0LCAiL2l0ZW1zIiwgbmlsKQoKCS8vIEZpbmQgcm91dGUKCXJvdXRlLCBwYXRoUGFyYW1zLCBfIDo9IHJvdXRlci5GaW5kUm91dGUoaHR0cFJlcSkKCgkvLyBWYWxpZGF0ZSByZXF1ZXN0CglyZXF1ZXN0VmFsaWRhdGlvbklucHV0IDo9ICZvcGVuYXBpM2ZpbHRlci5SZXF1ZXN0VmFsaWRhdGlvbklucHV0ewoJCVJlcXVlc3Q6ICAgIGh0dHBSZXEsCgkJUGF0aFBhcmFtczogcGF0aFBhcmFtcywKCQlSb3V0ZTogICAgICByb3V0ZSwKCX0KCV8gPSBvcGVuYXBpM2ZpbHRlci5WYWxpZGF0ZVJlcXVlc3QoY3R4LCByZXF1ZXN0VmFsaWRhdGlvbklucHV0KQoKCS8vIEhhbmRsZSB0aGF0IHJlcXVlc3QKCS8vIC0tPiBZT1VSIENPREUgR09FUyBIRVJFIDwtLQoJcmVzcG9uc2VIZWFkZXJzIDo9IGh0dHAuSGVhZGVyeyJDb250ZW50LVR5cGUiOiBbXXN0cmluZ3siYXBwbGljYXRpb24vanNvbiJ9fQoJcmVzcG9uc2VDb2RlIDo9IDIwMAoJcmVzcG9uc2VCb2R5IDo9IFtdYnl0ZShge31gKQoKCS8vIFZhbGlkYXRlIHJlc3BvbnNlCglyZXNwb25zZVZhbGlkYXRpb25JbnB1dCA6PSAmb3BlbmFwaTNmaWx0ZXIuUmVzcG9uc2VWYWxpZGF0aW9uSW5wdXR7CgkJUmVxdWVzdFZhbGlkYXRpb25JbnB1dDogcmVxdWVzdFZhbGlkYXRpb25JbnB1dCwKCQlTdGF0dXM6ICAgICAgICAgICAgICAgICByZXNwb25zZUNvZGUsCgkJSGVhZGVyOiAgICAgICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzLAoJfQoJcmVzcG9uc2VWYWxpZGF0aW9uSW5wdXQuU2V0Qm9keUJ5dGVzKHJlc3BvbnNlQm9keSkKCV8gPSBvcGVuYXBpM2ZpbHRlci5WYWxpZGF0ZVJlc3BvbnNlKGN0eCwgcmVzcG9uc2VWYWxpZGF0aW9uSW5wdXQpCn0KYGBgCgojIyBDdXN0b20gY29udGVudCB0eXBlIGZvciBib2R5IG9mIEhUVFAgcmVxdWVzdC9yZXNwb25zZQoKQnkgZGVmYXVsdCwgdGhlIGxpYnJhcnkgcGFyc2VzIGEgYm9keSBvZiB0aGUgSFRUUCByZXF1ZXN0IGFuZCByZXNwb25zZSBvZiBbYSBmZXcgY29udGVudCB0eXBlc10oaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9ibG9iLzZkYTg3MWUwZTE3MGI3NjM3ZWI1NjhjMjY1YzA4YmMyYjVkNmU3YTMvb3BlbmFwaTNmaWx0ZXIvcmVxX3Jlc3BfZGVjb2Rlci5nbyNMMTI2NCkgZS5nLiBgInRleHQvcGxhaW4iYCBvciBgImFwcGxpY2F0aW9uL2pzb24iYC4KVG8gc3VwcG9ydCBvdGhlciBjb250ZW50IHR5cGVzIHlvdSBtdXN0IHJlZ2lzdGVyIGRlY29kZXJzIGZvciB0aGVtOgoKYGBgZ28KZnVuYyBtYWluKCkgewoJLy8gLi4uCgoJLy8gUmVnaXN0ZXIgYSBib2R5J3MgZGVjb2RlciBmb3IgY29udGVudCB0eXBlICJhcHBsaWNhdGlvbi94bWwiLgoJb3BlbmFwaTNmaWx0ZXIuUmVnaXN0ZXJCb2R5RGVjb2RlcigiYXBwbGljYXRpb24veG1sIiwgeG1sQm9keURlY29kZXIpCgoJLy8gTm93IHlvdSBjYW4gdmFsaWRhdGUgSFRUUCByZXF1ZXN0IHRoYXQgY29udGFpbnMgYSBib2R5IHdpdGggY29udGVudCB0eXBlICJhcHBsaWNhdGlvbi94bWwiLgoJcmVxdWVzdFZhbGlkYXRpb25JbnB1dCA6PSAmb3BlbmFwaTNmaWx0ZXIuUmVxdWVzdFZhbGlkYXRpb25JbnB1dHsKCQlSZXF1ZXN0OiAgICBodHRwUmVxLAoJCVBhdGhQYXJhbXM6IHBhdGhQYXJhbXMsCgkJUm91dGU6ICAgICAgcm91dGUsCgl9CglpZiBlcnIgOj0gb3BlbmFwaTNmaWx0ZXIuVmFsaWRhdGVSZXF1ZXN0KGN0eCwgcmVxdWVzdFZhbGlkYXRpb25JbnB1dCk7IGVyciAhPSBuaWwgewoJCXBhbmljKGVycikKCX0KCgkvLyAuLi4KCgkvLyBBbmQgeW91IGNhbiB2YWxpZGF0ZSBIVFRQIHJlc3BvbnNlIHRoYXQgY29udGFpbnMgYSBib2R5IHdpdGggY29udGVudCB0eXBlICJhcHBsaWNhdGlvbi94bWwiLgoJaWYgZXJyIDo9IG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRlUmVzcG9uc2UoY3R4LCByZXNwb25zZVZhbGlkYXRpb25JbnB1dCk7IGVyciAhPSBuaWwgewoJCXBhbmljKGVycikKCX0KfQoKZnVuYyB4bWxCb2R5RGVjb2Rlcihib2R5IGlvLlJlYWRlciwgaCBodHRwLkhlYWRlciwgc2NoZW1hICpvcGVuYXBpMy5TY2hlbWFSZWYsIGVuY0ZuIG9wZW5hcGkzZmlsdGVyLkVuY29kaW5nRm4pIChkZWNvZGVkIGFueSwgZXJyIGVycm9yKSB7CgkvLyBEZWNvZGUgYm9keSB0byBhIHByaW1pdGl2ZSwgW11hbnksIG9yIG1hcFtzdHJpbmddYW55Lgp9CmBgYAoKIyMgQ3VzdG9tIGZ1bmN0aW9uIHRvIGNoZWNrIHVuaXF1ZW5lc3Mgb2YgYXJyYXkgaXRlbXMKCkJ5IGRlZmF1bHQsIHRoZSBsaWJyYXJ5IGNoZWNrcyB1bmlxdWUgaXRlbXMgdXNpbmcgdGhlIGZvbGxvd2luZyBwcmVkZWZpbmVkIGZ1bmN0aW9uOgoKYGBgZ28KZnVuYyBpc1NsaWNlT2ZVbmlxdWVJdGVtcyh4cyBbXWFueSkgYm9vbCB7CglzIDo9IGxlbih4cykKCW0gOj0gbWFrZShtYXBbc3RyaW5nXXN0cnVjdHt9LCBzKQoJZm9yIF8sIHggOj0gcmFuZ2UgeHMgewoJCWtleSwgXyA6PSBqc29uLk1hcnNoYWwoJngpCgkJbVtzdHJpbmcoa2V5KV0gPSBzdHJ1Y3R7fXt9Cgl9CglyZXR1cm4gcyA9PSBsZW4obSkKfQpgYGAKCkluIHRoZSBwcmVkZWZpbmVkIGZ1bmN0aW9uIGBqc29uLk1hcnNoYWxgIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBzdHJpbmcgdGhhdCBjYW4KYmUgdXNlZCBhcyBhIG1hcCBrZXkgd2hpY2ggaXMgdG8gY2hlY2sgdGhlIHVuaXF1ZW5lc3Mgb2YgYW4gYXJyYXkKd2hlbiB0aGUgYXJyYXkgaXRlbXMgYXJlIG9iamVjdHMgb3IgYXJyYXlzLiBZb3UgY2FuIHJlZ2lzdGVyCnlvdSBvd24gZnVuY3Rpb24gYWNjb3JkaW5nIHRvIHlvdXIgaW5wdXQgZGF0YSB0byBnZXQgYmV0dGVyIHBlcmZvcm1hbmNlOgoKYGBgZ28KZnVuYyBtYWluKCkgewoJLy8gLi4uCgoJLy8gUmVnaXN0ZXIgYSBjdXN0b21pemVkIGZ1bmN0aW9uIHVzZWQgdG8gY2hlY2sgdW5pcXVlbmVzcyBvZiBhcnJheS4KCW9wZW5hcGkzLlJlZ2lzdGVyQXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIoYXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIpCgoJLy8gLi4uIG90aGVyIHZhbGlkYXRlIGNvZGVzCn0KCmZ1bmMgYXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIoaXRlbXMgW11hbnkpIGJvb2wgewoJLy8gQ2hlY2sgdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIGlucHV0IHNsaWNlCn0KYGBgCgojIyBDdXN0b20gZnVuY3Rpb24gdG8gY2hhbmdlIHNjaGVtYSBlcnJvciBtZXNzYWdlcwoKQnkgZGVmYXVsdCwgdGhlIGVycm9yIG1lc3NhZ2UgcmV0dXJuZWQgd2hlbiB2YWxpZGF0aW5nIGEgdmFsdWUgaW5jbHVkZXMgdGhlIGVycm9yIHJlYXNvbiwgdGhlIHNjaGVtYSwgYW5kIHRoZSBpbnB1dCB2YWx1ZS4KCkZvciBleGFtcGxlLCBnaXZlbiB0aGUgZm9sbG93aW5nIHNjaGVtYToKCmBgYGpzb24KewogICJ0eXBlIjogInN0cmluZyIsCiAgImFsbE9mIjogWwogICAgeyAicGF0dGVybiI6ICJbQS1aXSIgfSwKICAgIHsgInBhdHRlcm4iOiAiW2Etel0iIH0sCiAgICB7ICJwYXR0ZXJuIjogIlswLTldIiB9LAogICAgeyAicGF0dGVybiI6ICJbIUAjJCVeJiooKV8rPS0/fl0iIH0KICBdCn0KYGBgCgpQYXNzaW5nIHRoZSBpbnB1dCB2YWx1ZSBgInNlY3JldCJgIHRvIHRoaXMgc2NoZW1hIHdpbGwgcHJvZHVjZSB0aGUgZm9sbG93aW5nIGVycm9yIG1lc3NhZ2U6CgpgYGAKc3RyaW5nIGRvZXNuJ3QgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAiW0EtWl0iClNjaGVtYToKICB7CiAgICAicGF0dGVybiI6ICJbQS1aXSIKICB9CgpWYWx1ZToKICAic2VjcmV0IgpgYGAKCkluY2x1ZGluZyB0aGUgb3JpZ2luYWwgdmFsdWUgaW4gdGhlIGVycm9yIG1lc3NhZ2UgY2FuIGJlIGhlbHBmdWwgZm9yIGRlYnVnZ2luZywgYnV0IGl0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBzdWNoIGFzIHNlY3JldHMuCgpUbyBkaXNhYmxlIHRoZSBleHRyYSBkZXRhaWxzIGluIHRoZSBzY2hlbWEgZXJyb3IgbWVzc2FnZSwgeW91IGNhbiBzZXQgdGhlIGBvcGVuYXBpMy5TY2hlbWFFcnJvckRldGFpbHNEaXNhYmxlZGAgb3B0aW9uIHRvIGB0cnVlYDoKCmBgYGdvCmZ1bmMgbWFpbigpIHsKCS8vIC4uLgoKCS8vIERpc2FibGUgc2NoZW1hIGVycm9yIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzCglvcGVuYXBpMy5TY2hlbWFFcnJvckRldGFpbHNEaXNhYmxlZCA9IHRydWUKCgkvLyAuLi4gb3RoZXIgdmFsaWRhdGUgY29kZXMKfQpgYGAKClRoaXMgd2lsbCBzaG9ydGVuIHRoZSBlcnJvciBtZXNzYWdlIHRvIHByZXNlbnQgb25seSB0aGUgcmVhc29uOgoKYGBgCnN0cmluZyBkb2Vzbid0IG1hdGNoIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gIltBLVpdIgpgYGAKCkZvciBtb3JlIGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXIgdGhlIGVycm9yIG1lc3NhZ2UsIHlvdSBjYW4gcGFzcyBhIGN1c3RvbSBgb3BlbmFwaTNmaWx0ZXIuT3B0aW9uc2Agb2JqZWN0IHRvIGBvcGVuYXBpM2ZpbHRlci5SZXF1ZXN0VmFsaWRhdGlvbklucHV0YCB0aGF0IGluY2x1ZGVzIGEgYG9wZW5hcGkzZmlsdGVyLkN1c3RvbVNjaGVtYUVycm9yRnVuY2AuCgpgYGBnbwpmdW5jIHZhbGlkYXRpb25PcHRpb25zKCkgKm9wZW5hcGkzZmlsdGVyLk9wdGlvbnMgewoJb3B0aW9ucyA6PSAmb3BlbmFwaTNmaWx0ZXIuT3B0aW9uc3t9CglvcHRpb25zLldpdGhDdXN0b21TY2hlbWFFcnJvckZ1bmMoc2FmZUVycm9yTWVzc2FnZSkKCXJldHVybiBvcHRpb25zCn0KCmZ1bmMgc2FmZUVycm9yTWVzc2FnZShlcnIgKm9wZW5hcGkzLlNjaGVtYUVycm9yKSBzdHJpbmcgewoJcmV0dXJuIGVyci5SZWFzb24KfQpgYGAKClRoaXMgd2lsbCBjaGFuZ2UgdGhlIHNjaGVtYSB2YWxpZGF0aW9uIGVycm9ycyB0byByZXR1cm4gb25seSB0aGUgYFJlYXNvbmAgZmllbGQsIHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gbm90IGluY2x1ZGUgdGhlIG9yaWdpbmFsIHZhbHVlLgoKIyMgUmVjb25jaWxpbmcgY29tcG9uZW50ICRyZWYgdHlwZXMKCmBSZWZlcmVuY2VzQ29tcG9uZW50SW5Sb290RG9jdW1lbnRgIGlzIGEgdXNlZnVsIGhlbHBlciBmdW5jdGlvbiB0byBjaGVjayBpZiBhIGNvbXBvbmVudCByZWZlcmVuY2UKY29pbmNpZGVzIHdpdGggYSByZWZlcmVuY2UgaW4gdGhlIHJvb3QgZG9jdW1lbnQncyBjb21wb25lbnQgb2JqZWN0cyBmaXhlZCBmaWVsZHMuCgpUaGlzIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSBpZiB0d28gc2NoZW1hIGRlZmluaXRpb25zIGFyZSBvZiB0aGUgc2FtZSBzdHJ1Y3R1cmUsIGhlbHBmdWwgZm9yCmNvZGUgZ2VuZXJhdGlvbiB0b29scyB3aGVuIGdlbmVyYXRpbmcgZ28gdHlwZSBtb2RlbHMuCgpgYGBnbwpkb2MsIGVyciA9IGxvYWRlci5Mb2FkRnJvbUZpbGUoIm9wZW5hcGkueW1sIikKCmZvciBfLCBwYXRoIDo9IHJhbmdlIGRvYy5QYXRocy5Jbk1hdGNoaW5nT3JkZXIoKSB7CglwYXRoSXRlbSA6PSBkb2MuUGF0aHMuRmluZChwYXRoKQoKCWlmIHBhdGhJdGVtLkdldCA9PSBuaWwgfHwgcGF0aEl0ZW0uR2V0LlJlc3BvbnNlcy5TdGF0dXMoMjAwKSB7CgkJY29udGludWUKCX0KCglmb3IgXywgcyA6PSByYW5nZSBwYXRoSXRlbS5HZXQuUmVzcG9uc2VzLlN0YXR1cygyMDApLlZhbHVlLkNvbnRlbnQgewoJCW5hbWUsIG1hdGNoIDo9IFJlZmVyZW5jZXNDb21wb25lbnRJblJvb3REb2N1bWVudChkb2MsIHMuU2NoZW1hKQoJCWZtdC5QcmludGxuKHBhdGgsIG1hdGNoLCBuYW1lKSAvLyAvcmVjb3JkIHRydWUgIy9jb21wb25lbnRzL3NjaGVtYXMvQm9va1JlY29yZAoJfQp9CmBgYAoKIyMgQ0hBTkdFTE9HOiBTdWItdjEgYnJlYWtpbmcgQVBJIGNoYW5nZXMKCiMjIyB2MC4xMzEuMAoqIE5vIGxvbmdlciBgb3BlbmFwaTNmaWx0ZXIuUmVnaXN0ZXJCb2R5RGVjb2RlcmAgdGhlIGBvcGVuYXBpM2ZpbHRlci5aaXBGaWxlQm9keURlY29kZXJgIGJ5IGRlZmF1bHQuCgojIyMgdjAuMTI5LjAKKiBgb3BlbmFwaTMuRGlzY3JpbWluYXRvci5NYXBwaW5nYCBhbmQgYG9wZW5hcGkzLk9BdXRoRmxvdy5TY29wZXNgIGZpZWxkcyB3ZW50IGZyb20gYSBgbWFwW3N0cmluZ11zdHJpbmdgIHRvIHRoZSBuZXcgdHlwZSBgU3RyaW5nTWFwYAoKIyMjIHYwLjEyNy4wCiogRG93bmdyYWRlZCBgZ2l0aHViLmNvbS9nb3JpbGxhL211eGAgZGVwIGZyb20gYDEuOC4xYCB0byBgMS44LjBgLgoKIyMjIHYwLjEyNi4wCiogYG9wZW5hcGkzLkNpcmN1bGFyUmVmZXJlbmNlRXJyb3JgIGFuZCBgb3BlbmFwaTMuQ2lyY3VsYXJSZWZlcmVuY2VDb3VudGVyYCBhcmUgcmVtb3ZlZC4gYG9wZW5hcGkzLkxvYWRlcmAgbm93IGltcGxlbWVudHMgcmVmZXJlbmNlIGJhY2t0cmFja2luZywgc28gYW55IGtpbmQgb2YgY2lyY3VsYXIgcmVmZXJlbmNlcyBzaG91bGQgYmUgcHJvcGVybHkgcmVzb2x2ZWQuCiogYEludGVybmFsaXplUmVmc2Agbm93IHRha2VzIGEgcmVmTmFtZVJlc29sdmVyIHRoYXQgaGFzIGFjY2VzcyB0byBgb3BlbmFwaTMuVGAgYW5kIG1vcmUgcHJvcGVydGllcyBvZiB0aGUgcmVmZXJlbmNlIG5lZWRpbmcgcmVzb2x2aW5nLgoqIFRoZSBgRGVmYXVsdFJlZk5hbWVSZXNvbHZlcmAgaGFzIGJlZW4gdXBkYXRlZCwgY2hvb3NpbmcgbmFtZXMgdGhhdCB3aWxsIGJlIGxlc3MgbGlrZWx5IHRvIGNvbGxpZGUgd2l0aCBlYWNoIG90aGVyLiBCZWNhdXNlIG9mIHRoaXMgaW50ZXJuYWxpemVkIHNwZWNzIHdpbGwgbGlrZWx5IGNoYW5nZSBzbGlnaHRseS4KKiBgb3BlbmFwaTMuRm9ybWF0YCBhbmQgYG9wZW5hcGkzLkZvcm1hdENhbGxiYWNrYCBhcmUgcmVtb3ZlZCBhbmQgdGhlIHR5cGUgb2YgYG9wZW5hcGkzLlNjaGVtYVN0cmluZ0Zvcm1hdHNgIGhhcyBjaGFuZ2VkLgoKIyMjIHYwLjEyNS4wCiogVGhlIGBvcGVuYXBpM2ZpbHRlci5FcnJGdW5jYCBhbmQgYG9wZW5hcGkzZmlsdGVyLkxvZ0Z1bmNgIGZ1bmMgdHlwZXMgbm93IHRha2UgdGhlIHZhbGlkYXRlZCByZXF1ZXN0J3MgY29udGV4dCBhcyBmaXJzdCBhcmd1bWVudC4KCiMjIyB2MC4xMjQuMAoqIGBvcGVuYXBpMy5TY2hlbWEuVHlwZWAgJiBgb3BlbmFwaTIuUGFyYW1ldGVyLlR5cGVgIGZpZWxkcyB3ZW50IGZyb20gYSBgc3RyaW5nYCB0byB0aGUgdHlwZSBgKlR5cGVgIHdpdGggbWV0aG9kczogYEluY2x1ZGVzYCwgYElzYCwgYFBlcm1pdHNgICYgYFNsaWNlYC4KCiMjIyB2MC4xMjIuMAoqIGBQYXRoc2AgZmllbGQgb2YgYG9wZW5hcGkzLlRgIGlzIG5vdyBhIHBvaW50ZXIKKiBgUmVzcG9uc2VzYCBmaWVsZCBvZiBgb3BlbmFwaTMuT3BlcmF0aW9uYCBpcyBub3cgYSBwb2ludGVyCiogYG9wZW5hcGkzLlBhdGhzYCB3ZW50IGZyb20gYG1hcFtzdHJpbmddKlBhdGhJdGVtYCB0byBhIHN0cnVjdCB3aXRoIGFuIGBFeHRlbnNpb25zYCBmaWVsZCBhbmQgbWV0aG9kczogYFNldGAsIGBWYWx1ZWAsIGBMZW5gLCBgTWFwYCwgYW5kIGBOZXcqYC4KKiBgb3BlbmFwaTMuQ2FsbGJhY2tgIHdlbnQgZnJvbSBgbWFwW3N0cmluZ10qUGF0aEl0ZW1gIHRvIGEgc3RydWN0IHdpdGggYW4gYEV4dGVuc2lvbnNgIGZpZWxkIGFuZCBtZXRob2RzOiBgU2V0YCwgYFZhbHVlYCwgYExlbmAsIGBNYXBgLCBhbmQgYE5ldypgLgoqIGBvcGVuYXBpMy5SZXNwb25zZXNgIHdlbnQgZnJvbSBgbWFwW3N0cmluZ10qUmVzcG9uc2VSZWZgIHRvIGEgc3RydWN0IHdpdGggYW4gYEV4dGVuc2lvbnNgIGZpZWxkIGFuZCBtZXRob2RzOiBgU2V0YCwgYFZhbHVlYCwgYExlbmAsIGBNYXBgLCBhbmQgYE5ldypgLgoqIGAob3BlbmFwaTMuUmVzcG9uc2VzKS5HZXQoaW50KWAgcmVuYW1lZCB0byBgKCpvcGVuYXBpMy5SZXNwb25zZXMpLlN0YXR1cyhpbnQpYAoKIyMjIHYwLjEyMS4wCiogSW50cm9kdWNlIGBvcGVuYXBpMy5SZXF1ZXN0Qm9kaWVzYCAoYW4gYWxpYXMgb24gYG1hcFtzdHJpbmddKm9wZW5hcGkzLlJlc3BvbnNlUmVmYCkgYW5kIHVzZSBpdCBpbiBwbGFjZSBvZiBgb3BlbmFwaTMuUmVzcG9uc2VzYCBmb3IgZmllbGQgYG9wZW5hcGkzLkNvbXBvbmVudHMuUmVzcG9uc2VzYC4KCiMjIyB2MC4xMTYuMAoqIERyb3BwZWQgYG9wZW5hcGkzZmlsdGVyLkRlZmF1bHRPcHRpb25zYC4gVXNlIGAmb3BlbmFwaTNmaWx0ZXIuT3B0aW9uc3t9YCBkaXJlY3RseSBpbnN0ZWFkLgoKIyMjIHYwLjExMy4wCiogVGhlIHN0cmluZyBmb3JtYXQgYGVtYWlsYCBoYXMgYmVlbiByZW1vdmVkIGJ5IGRlZmF1bHQuIFRvIHVzZSBpdCBwbGVhc2UgY2FsbCBgb3BlbmFwaTMuRGVmaW5lU3RyaW5nRm9ybWF0KCJlbWFpbCIsIG9wZW5hcGkzLkZvcm1hdE9mU3RyaW5nRm9yRW1haWwpYC4KKiBGaWVsZCBgb3BlbmFwaTMuVC5Db21wb25lbnRzYCBpcyBub3cgYSBwb2ludGVyLgoqIEZpZWxkcyBgb3BlbmFwaTMuU2NoZW1hLkFkZGl0aW9uYWxQcm9wZXJ0aWVzYCBhbmQgYG9wZW5hcGkzLlNjaGVtYS5BZGRpdGlvbmFsUHJvcGVydGllc0FsbG93ZWRgIGFyZSByZXBsYWNlZCBieSBgb3BlbmFwaTMuU2NoZW1hLkFkZGl0aW9uYWxQcm9wZXJ0aWVzLlNjaGVtYWAgYW5kIGBvcGVuYXBpMy5TY2hlbWEuQWRkaXRpb25hbFByb3BlcnRpZXMuSGFzYCByZXNwZWN0aXZlbHkuCiogVHlwZSBgb3BlbmFwaTMuRXh0ZW5zaW9uUHJvcHNgIGlzIG5vdyBqdXN0IGBtYXBbc3RyaW5nXWFueWAgYW5kIGV4dGVuc2lvbnMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgYEV4dGVuc2lvbnNgIGZpZWxkLgoKIyMjIHYwLjExMi4wCiogYChvcGVuYXBpMy5WYWxpZGF0aW9uT3B0aW9ucykuRXhhbXBsZXNWYWxpZGF0aW9uRGlzYWJsZWRgIGhhcyBiZWVuIHVuZXhwb3J0ZWQuCiogYChvcGVuYXBpMy5WYWxpZGF0aW9uT3B0aW9ucykuU2NoZW1hRm9ybWF0VmFsaWRhdGlvbkVuYWJsZWRgIGhhcyBiZWVuIHVuZXhwb3J0ZWQuCiogYChvcGVuYXBpMy5WYWxpZGF0aW9uT3B0aW9ucykuU2NoZW1hUGF0dGVyblZhbGlkYXRpb25EaXNhYmxlZGAgaGFzIGJlZW4gdW5leHBvcnRlZC4KCiMjIyB2MC4xMTEuMAoqIENoYW5nZWQgYGZ1bmMgKCpfKSBWYWxpZGF0ZShjdHggY29udGV4dC5Db250ZXh0KSBlcnJvcmAgdG8gYGZ1bmMgKCpfKSBWYWxpZGF0ZShjdHggY29udGV4dC5Db250ZXh0LCBvcHRzIC4uLlZhbGlkYXRpb25PcHRpb24pIGVycm9yYC4KKiBgb3BlbmFwaTMuV2l0aFZhbGlkYXRpb25PcHRpb25zKGN0eCBjb250ZXh0LkNvbnRleHQsIG9wdHMgKlZhbGlkYXRpb25PcHRpb25zKSBjb250ZXh0LkNvbnRleHRgIHByb3RvdHlwZSBjaGFuZ2VkIHRvIGBvcGVuYXBpMy5XaXRoVmFsaWRhdGlvbk9wdGlvbnMoY3R4IGNvbnRleHQuQ29udGV4dCwgb3B0cyAuLi5WYWxpZGF0aW9uT3B0aW9uKSBjb250ZXh0LkNvbnRleHRgLgoKIyMjIHYwLjEwMS4wCiogYG9wZW5hcGkzLlNjaGVtYUZvcm1hdFZhbGlkYXRpb25EaXNhYmxlZGAgaGFzIGJlZW4gcmVtb3ZlZCBpbiBmYXZvdXIgb2YgYW4gb3B0aW9uIGBvcGVuYXBpMy5FbmFibGVTY2hlbWFGb3JtYXRWYWxpZGF0aW9uKClgIHBhc3NlZCB0byBgb3BlbmFwaTMuVC5WYWxpZGF0ZWAuIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBpcyBhbHNvIG5vdyB0byBub3QgdmFsaWRhdGUgZm9ybWF0cywgYXMgdGhlIE9wZW5BUEkgc3BlYyBtZW50aW9ucyB0aGUgYGZvcm1hdGAgaXMgYW4gb3BlbiB2YWx1ZS4KCiMjIyB2MC44NC4wCiogVGhlIHByb3RvdHlwZSBvZiBgb3BlbmFwaTNnZW4uTmV3U2NoZW1hUmVmRm9yVmFsdWVgIGNoYW5nZWQ6CgkqIEl0IG5vIGxvbmdlciByZXR1cm5zIGEgbWFwIGJ1dCB0aGF0IGlzIHN0aWxsIGFjY2Vzc2libGUgdW5kZXIgdGhlIGZpZWxkIGAoKkdlbmVyYXRvcikuU2NoZW1hUmVmc2AuCgkqIEl0IG5vdyB0YWtlcyBpbiBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IChiYXNpY2FsbHkgYGRvYy5Db21wb25lbnRzLlNjaGVtYXNgKSB3aGljaCBnZXRzIHdyaXR0ZW4gdG8gc28gYCRyZWZgIGN5Y2xlcyBjYW4gYmUgcHJvcGVybHkgaGFuZGxlZC4KCiMjIyB2MC42MS4wCiogUmVuYW1lZCBgb3BlbmFwaTIuU3dhZ2dlcmAgdG8gYG9wZW5hcGkyLlRgLgoqIFJlbmFtZWQgYG9wZW5hcGkyY29udi5Gcm9tVjNTd2FnZ2VyYCB0byBgb3BlbmFwaTJjb252LkZyb21WM2AuCiogUmVuYW1lZCBgb3BlbmFwaTJjb252LlRvVjNTd2FnZ2VyYCB0byBgb3BlbmFwaTJjb252LlRvVjNgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLkxvYWRTd2FnZ2VyRnJvbURhdGFgIHRvIGBvcGVuYXBpMy5Mb2FkRnJvbURhdGFgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLkxvYWRTd2FnZ2VyRnJvbURhdGFXaXRoUGF0aGAgdG8gYG9wZW5hcGkzLkxvYWRGcm9tRGF0YVdpdGhQYXRoYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5Mb2FkU3dhZ2dlckZyb21GaWxlYCB0byBgb3BlbmFwaTMuTG9hZEZyb21GaWxlYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5Mb2FkU3dhZ2dlckZyb21VUklgIHRvIGBvcGVuYXBpMy5Mb2FkRnJvbVVSSWAuCiogUmVuYW1lZCBgb3BlbmFwaTMuTmV3U3dhZ2dlckxvYWRlcmAgdG8gYG9wZW5hcGkzLk5ld0xvYWRlcmAuCiogUmVuYW1lZCBgb3BlbmFwaTMuU3dhZ2dlcmAgdG8gYG9wZW5hcGkzLlRgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLlN3YWdnZXJMb2FkZXJgIHRvIGBvcGVuYXBpMy5Mb2FkZXJgLgoqIFJlbmFtZWQgYG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRpb25IYW5kbGVyLlN3YWdnZXJGaWxlYCB0byBgb3BlbmFwaTNmaWx0ZXIuVmFsaWRhdGlvbkhhbmRsZXIuRmlsZWAuCiogUmVuYW1lZCBgcm91dGVycy5Sb3V0ZS5Td2FnZ2VyYCB0byBgcm91dGVycy5Sb3V0ZS5TcGVjYC4KCiMjIyB2MC41MS4wCiogVHlwZSBgb3BlbmFwaTNmaWx0ZXIuUm91dGVgIG1vdmVkIHRvIGByb3V0ZXJzYCAoYW5kIGBSb3V0ZS5IYW5kbGVyYCB3YXMgZHJvcHBlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvaXNzdWVzLzMyOSkKKiBUeXBlIGBvcGVuYXBpM2ZpbHRlci5Sb3V0ZUVycm9yYCBtb3ZlZCB0byBgcm91dGVyc2AgKHNvIGRpZCBgRXJyUGF0aE5vdEZvdW5kYCBhbmQgYEVyck1ldGhvZE5vdEFsbG93ZWRgIHdoaWNoIGFyZSBub3cgYFJvdXRlRXJyb3JgcykKKiBSb3V0ZXJzJyBgRmluZFJvdXRlKC4uLilgIG1ldGhvZCBub3cgdGFrZXMgb25seSBvbmUgYXJndW1lbnQ6IGAqaHR0cC5SZXF1ZXN0YAoqIGBnZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTNmaWx0ZXIuUm91dGVyYCBtb3ZlZCB0byBgZ2V0a2luL2tpbi1vcGVuYXBpL3JvdXRlcnMvbGVnYWN5YAoqIGBvcGVuYXBpM2ZpbHRlci5OZXdSb3V0ZXIoKWAgYW5kIGl0cyByZWxhdGVkIGBXaXRoU3dhZ2dlckZyb21GaWxlKHN0cmluZylgLCBgV2l0aFN3YWdnZXIoKm9wZW5hcGkzLlN3YWdnZXIpYCwgYEFkZFN3YWdnZXJGcm9tRmlsZShzdHJpbmcpYCBhbmQgYEFkZFN3YWdnZXIoKm9wZW5hcGkzLlN3YWdnZXIpYCBhcmUgYWxsIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUgYDxyb3V0ZXIgcGFja2FnZT4uTmV3Um91dGVyKCpvcGVuYXBpMy5Td2FnZ2VyKWAKCSogTk9URTogdGhlIGBOZXdSb3V0ZXIoZG9jKWAgY2FsbCBub3cgcmVxdWlyZXMgdGhhdCB0aGUgdXNlciBlbnN1cmVzIGBkb2NgIGlzIHZhbGlkIChgZG9jLlZhbGlkYXRlKCkgIT0gbmlsYCkuIFRoaXMgdXNlZCB0byBiZSBhc3NlcnRlZC4KCiMjIyB2MC40Ny4wCkZpZWxkIGAoKm9wZW5hcGkzLlN3YWdnZXJMb2FkZXIpLkxvYWRTd2FnZ2VyRnJvbVVSSUZ1bmNgIG9mIHR5cGUgYGZ1bmMoKm9wZW5hcGkzLlN3YWdnZXJMb2FkZXIsICp1cmwuVVJMKSAoKm9wZW5hcGkzLlN3YWdnZXIsIGVycm9yKWAgd2FzIHJlbW92ZWQgYWZ0ZXIgdGhlIGFkZGl0aW9uIG9mIHRoZSBmaWVsZCBgKCpvcGVuYXBpMy5Td2FnZ2VyTG9hZGVyKS5SZWFkRnJvbVVSSUZ1bmNgIG9mIHR5cGUgYGZ1bmMoKm9wZW5hcGkzLlN3YWdnZXJMb2FkZXIsICp1cmwuVVJMKSAoW11ieXRlLCBlcnJvcilgLgo= readmeEtag: '"58a612844fadf6ce6b7e728d11bac7728a83b36e"' readmeLastModified: Thu, 02 Oct 2025 09:23:15 GMT repositoryId: 94029207 description: >- OpenAPI 3.0 (and Swagger v2) implementation for Go (parsing, converting, validation, and more) created: '2017-06-11T20:12:06Z' updated: '2026-02-05T19:43:42Z' language: Go archived: false stars: 3153 watchers: 20 forks: 488 owner: getkin logo: https://avatars.githubusercontent.com/u/40365715?v=4 license: MIT repoEtag: '"57777eff14dbf6dc3bc0813ef59dc76c21d4f08a54741639a1e708c7d02868f6"' repoLastModified: Thu, 05 Feb 2026 19:43:42 GMT foundInMaster: true v2: true id: f6838ce08e87fa4c3dc813c97193ece3 oldLocations: - https://github.com/jban332/kin-openapi - source: https://openapi.tools/ name: openapi.tanna.dev/go/validator category: Data Validators repository: https://gitlab.com/jamietanna/httptest-openapi/ language: Go source_description: >- A Go library for making it easier to validate that your OpenAPI contracts match your HTTP request/responses used in your tests. Based on kin-openapi. v3: true id: 839cc8f67fdfb81f410fbc29ab770cc8 foundInMaster: true - source: https://openapi.tools/ name: openapi-psr7-validator category: Data Validators repository: https://github.com/thephpleague/openapi-psr7-validator language: PHP source_description: >- Using a PHP framework that supports PSR-7? Get free validation without writing a bunch of code, by registering this middleware and pointing it at your API description document. v3: true repositoryMetadata: base64Readme: >- WyFbTGF0ZXN0IFN0YWJsZSBWZXJzaW9uXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL2xlYWd1ZS9vcGVuYXBpLXBzcjctdmFsaWRhdG9yL3Yvc3RhYmxlKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2xlYWd1ZS9vcGVuYXBpLXBzcjctdmFsaWRhdG9yKQpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy90aGVwaHBsZWFndWUvb3BlbmFwaS1wc3I3LXZhbGlkYXRvci5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy90aGVwaHBsZWFndWUvb3BlbmFwaS1wc3I3LXZhbGlkYXRvcikKWyFbTGljZW5zZV0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9sZWFndWUvb3BlbmFwaS1wc3I3LXZhbGlkYXRvci9saWNlbnNlKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2xlemhuZXY3NC9vcGVuYXBpLXBzcjctdmFsaWRhdG9yKQohW2NvbnRyaWJ1dGlvbnMgd2VsY29tZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb250cmlidXRpb25zLXdlbGNvbWUtYnJpZ2h0Z3JlZW4uc3ZnKQoKIyBPcGVuQVBJIFBTUi03IE1lc3NhZ2UgKEhUVFAgUmVxdWVzdC9SZXNwb25zZSkgVmFsaWRhdG9yClRoaXMgcGFja2FnZSBjYW4gdmFsaWRhdGUgUFNSLTcgbWVzc2FnZXMgYWdhaW5zdCBPcGVuQVBJICgzLjAueCkgc3BlY2lmaWNhdGlvbnMgCmV4cHJlc3NlZCBpbiBZQU1MIG9yIEpTT04uIAoKIVtdKGltYWdlLmpwZykKCiMjIEluc3RhbGxhdGlvbgpgYGAKY29tcG9zZXIgcmVxdWlyZSBsZWFndWUvb3BlbmFwaS1wc3I3LXZhbGlkYXRvcgpgYGAKCiMjIE9wZW5BUEkgKE9BUykgVGVybXMKVGhlcmUgYXJlIHNvbWUgc3BlY2lmaWMgdGVybXMgdGhhdCBhcmUgdXNlZCBpbiB0aGUgcGFja2FnZS4gVGhlc2UgdGVybXMgY29tZSAKZnJvbSBPcGVuQVBJOgotIGBzcGVjaWZpY2F0aW9uYCAtIGFuIE9wZW5BUEkgZG9jdW1lbnQgZGVzY3JpYmluZyBhbiBBUEksIGV4cHJlc3NlZCBpbiBKU09OIG9yIFlBTUwgZmlsZQotIGBkYXRhYCAtIGFjdHVhbCB0aGluZyB0aGF0IHdlIHZhbGlkYXRlIGFnYWluc3QgYSBzcGVjaWZpY2F0aW9uLCBpbmNsdWRpbmcgYm9keSBhbmQgbWV0YWRhdGEKLSBgc2NoZW1hYCAtIHRoZSBwYXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uIHRoYXQgZGVzY3JpYmVzIHRoZSBib2R5IG9mIHRoZSByZXF1ZXN0IC8gcmVzcG9uc2UKLSBga2V5d29yZGAgLSBwcm9wZXJ0aWVzIHRoYXQgYXJlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGluc3RhbmNlIGFyZSBjYWxsZWQga2V5CndvcmRzLCBvciBzY2hlbWEga2V5d29yZHMKLSBgcGF0aGAgLSBhIHJlbGF0aXZlIHBhdGggdG8gYW4gaW5kaXZpZHVhbCBlbmRwb2ludAotIGBvcGVyYXRpb25gIC0gYSBtZXRob2QgdGhhdCB3ZSBhcHBseSBvbiB0aGUgcGF0aCAobGlrZSBgZ2V0IC9wYXNzd29yZGApCi0gYHJlc3BvbnNlYCAtIGRlc2NyaWJlZCByZXNwb25zZSAoaW5jbHVkZXMgc3RhdHVzIGNvZGUsIGNvbnRlbnQgdHlwZXMgZXRjKQoKCiMjIEhvdyBUbyBWYWxpZGF0ZQoKIyMjIFNlcnZlclJlcXVlc3QgTWVzc2FnZQpZb3UgY2FuIHZhbGlkYXRlIGBcUHNyXEh0dHBcTWVzc2FnZVxTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlYCBpbnN0YW5jZSBsaWtlIHRoaXM6CgpgYGBwaHAKJHlhbWxGaWxlID0gImFwaS55YW1sIjsKJGpzb25GaWxlID0gImFwaS5qc29uIjsKCiR2YWxpZGF0b3IgPSAobmV3IFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyKS0+ZnJvbVlhbWxGaWxlKCR5YW1sRmlsZSktPmdldFNlcnZlclJlcXVlc3RWYWxpZGF0b3IoKTsKI29yCiR2YWxpZGF0b3IgPSAobmV3IFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyKS0+ZnJvbVlhbWwoZmlsZV9nZXRfY29udGVudHMoJHlhbWxGaWxlKSktPmdldFNlcnZlclJlcXVlc3RWYWxpZGF0b3IoKTsKI29yCiR2YWxpZGF0b3IgPSAobmV3IFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyKS0+ZnJvbUpzb24oZmlsZV9nZXRfY29udGVudHMoJGpzb25GaWxlKSktPmdldFNlcnZlclJlcXVlc3RWYWxpZGF0b3IoKTsKI29yCiR2YWxpZGF0b3IgPSAobmV3IFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyKS0+ZnJvbUpzb25GaWxlKCRqc29uRmlsZSktPmdldFNlcnZlclJlcXVlc3RWYWxpZGF0b3IoKTsKI29yCiRzY2hlbWEgPSBuZXcgXGNlYmVcb3BlbmFwaVxzcGVjXE9wZW5BcGkoKTsgLy8gZ2VuZXJhdGUgc2NoZW1hIG9iamVjdCBieSBoYW5kCiR2YWxpZGF0b3IgPSAobmV3IFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyKS0+ZnJvbVNjaGVtYSgkc2NoZW1hKS0+Z2V0U2VydmVyUmVxdWVzdFZhbGlkYXRvcigpOwoKJG1hdGNoID0gJHZhbGlkYXRvci0+dmFsaWRhdGUoJHJlcXVlc3QpOwpgYGAKCkFzIGEgcmVzdWx0IHlvdSB3b3VsZCBnZXQgYW5kIGBPcGVyYXRpb25BZGRyZXNzICRtYXRjaGAgd2hpY2ggaGFzIG1hdGNoZWQgdGhlIGdpdmVuIHJlcXVlc3QuIElmIHlvdSBhbHJlYWR5IGtub3cKdGhlIG9wZXJhdGlvbiB3aGljaCBzaG91bGQgbWF0Y2ggeW91ciByZXF1ZXN0IChpLmUgeW91IGhhdmUgcm91dGluZyBpbiB5b3VyIHByb2plY3QpLCB5b3UgY2FuIHVzZSAKYFJvdXRlclJlcXVlc3RWYWxpZGF0b3JgCgpgYGBwaHAKJGFkZHJlc3MgPSBuZXcgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XE9wZXJhdGlvbkFkZHJlc3MoJy9zb21lL29wZXJhdGlvbicsICdwb3N0Jyk7CgokdmFsaWRhdG9yID0gKG5ldyBcTGVhZ3VlXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdG9yQnVpbGRlciktPmZyb21TY2hlbWEoJHNjaGVtYSktPmdldFJvdXRlZFJlcXVlc3RWYWxpZGF0b3IoKTsKCiR2YWxpZGF0b3ItPnZhbGlkYXRlKCRhZGRyZXNzLCAkcmVxdWVzdCk7CmBgYAoKVGhpcyB3b3VsZCBzaW1wbGlmeSB2YWxpZGF0aW9uIGEgbG90IGFuZCBnaXZlIHlvdSBtb3JlIHBlcmZvcm1hbmNlLgoKIyMjIFJlcXVlc3QgTWVzc2FnZQpZb3UgY2FuIHZhbGlkYXRlIGBcUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlYCBpbnN0YW5jZSBsaWtlIHRoaXM6CgpgYGBwaHAKJHlhbWxGaWxlID0gImFwaS55YW1sIjsKJGpzb25GaWxlID0gImFwaS5qc29uIjsKCiR2YWxpZGF0b3IgPSAobmV3IFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyKS0+ZnJvbVlhbWxGaWxlKCR5YW1sRmlsZSktPmdldFJlcXVlc3RWYWxpZGF0b3IoKTsKI29yCiR2YWxpZGF0b3IgPSAobmV3IFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyKS0+ZnJvbVlhbWwoZmlsZV9nZXRfY29udGVudHMoJHlhbWxGaWxlKSktPmdldFJlcXVlc3RWYWxpZGF0b3IoKTsKI29yCiR2YWxpZGF0b3IgPSAobmV3IFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyKS0+ZnJvbUpzb24oZmlsZV9nZXRfY29udGVudHMoJGpzb25GaWxlKSktPmdldFJlcXVlc3RWYWxpZGF0b3IoKTsKI29yCiR2YWxpZGF0b3IgPSAobmV3IFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyKS0+ZnJvbUpzb25GaWxlKCRqc29uRmlsZSktPmdldFJlcXVlc3RWYWxpZGF0b3IoKTsKI29yCiRzY2hlbWEgPSBuZXcgXGNlYmVcb3BlbmFwaVxzcGVjXE9wZW5BcGkoKTsgLy8gZ2VuZXJhdGUgc2NoZW1hIG9iamVjdCBieSBoYW5kCiR2YWxpZGF0b3IgPSAobmV3IFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyKS0+ZnJvbVNjaGVtYSgkc2NoZW1hKS0+Z2V0UmVxdWVzdFZhbGlkYXRvcigpOwoKJG1hdGNoID0gJHZhbGlkYXRvci0+dmFsaWRhdGUoJHJlcXVlc3QpOwpgYGAKCiMjIyBSZXNwb25zZSBNZXNzYWdlClZhbGlkYXRpb24gb2YgYFxQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlYCBpcyBhIGJpdCBtb3JlIGNvbXBsaWNhdGVkCi4gQmVjYXVzZSB5b3UgbmVlZCBub3Qgb25seSBZQU1MIGZpbGUgYW5kIFJlc3BvbnNlIGl0c2VsZiwgYnV0IGFsc28geW91IG5lZWQgCnRvIGtub3cgd2hpY2ggb3BlcmF0aW9uIHRoaXMgcmVzcG9uc2UgYmVsb25ncyB0byAoaW4gdGVybXMgb2YgT3BlbkFQSSkuCgpFeGFtcGxlOgoKYGBgcGhwCiR5YW1sRmlsZSA9ICJhcGkueWFtbCI7CiRqc29uRmlsZSA9ICJhcGkuanNvbiI7CgokdmFsaWRhdG9yID0gKG5ldyBcTGVhZ3VlXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdG9yQnVpbGRlciktPmZyb21ZYW1sRmlsZSgkeWFtbEZpbGUpLT5nZXRSZXNwb25zZVZhbGlkYXRvcigpOwojb3IKJHZhbGlkYXRvciA9IChuZXcgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XFZhbGlkYXRvckJ1aWxkZXIpLT5mcm9tWWFtbChmaWxlX2dldF9jb250ZW50cygkeWFtbEZpbGUpKS0+Z2V0UmVzcG9uc2VWYWxpZGF0b3IoKTsKI29yCiR2YWxpZGF0b3IgPSAobmV3IFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyKS0+ZnJvbUpzb24oZmlsZV9nZXRfY29udGVudHMoJGpzb25GaWxlKSktPmdldFJlc3BvbnNlVmFsaWRhdG9yKCk7CiNvcgokdmFsaWRhdG9yID0gKG5ldyBcTGVhZ3VlXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdG9yQnVpbGRlciktPmZyb21Kc29uRmlsZSgkanNvbkZpbGUpLT5nZXRSZXNwb25zZVZhbGlkYXRvcigpOwojb3IKJHNjaGVtYSA9IG5ldyBcY2ViZVxvcGVuYXBpXHNwZWNcT3BlbkFwaSgpOyAvLyBnZW5lcmF0ZSBzY2hlbWEgb2JqZWN0IGJ5IGhhbmQKJHZhbGlkYXRvciA9IChuZXcgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XFZhbGlkYXRvckJ1aWxkZXIpLT5mcm9tU2NoZW1hKCRzY2hlbWEpLT5nZXRSZXNwb25zZVZhbGlkYXRvcigpOwoKJG9wZXJhdGlvbiA9IG5ldyBcTGVhZ3VlXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcT3BlcmF0aW9uQWRkcmVzcygnL3Bhc3N3b3JkL2dlbicsICdnZXQnKSA7CgokdmFsaWRhdG9yLT52YWxpZGF0ZSgkb3BlcmF0aW9uLCAkcmVzcG9uc2UpOwpgYGAKCiMjIyBSZXVzZSBTY2hlbWEgQWZ0ZXIgVmFsaWRhdGlvbgoKYFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyYCByZWFkcyBhbmQgY29tcGlsZXMgc2NoZW1hIGluIG1lbW9yeSBhcyBpbnN0YW5jZSBvZiBgXGNlYmVcb3BlbmFwaVxzcGVjXE9wZW5BcGlgLiBWYWxpZGF0b3JzIHVzZSB0aGlzIGluc3RhbmNlIHRvIHBlcmZvcm0gdmFsaWRhdGlvbiBsb2dpYy4gWW91IGNhbiByZXVzZSB0aGlzIGluc3RhbmNlIGFmdGVyIHRoZSB2YWxpZGF0aW9uIGxpa2UgdGhpczoKCmBgYHBocAokdmFsaWRhdG9yID0gKG5ldyBcTGVhZ3VlXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdG9yQnVpbGRlciktPmZyb21ZYW1sRmlsZSgkeWFtbEZpbGUpLT5nZXRTZXJ2ZXJSZXF1ZXN0VmFsaWRhdG9yKCk7CiMgb3IKJHZhbGlkYXRvciA9IChuZXcgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XFZhbGlkYXRvckJ1aWxkZXIpLT5mcm9tWWFtbEZpbGUoJHlhbWxGaWxlKS0+Z2V0UmVzcG9uc2VWYWxpZGF0b3IoKTsKCi8qKiBAdmFyIFxjZWJlXG9wZW5hcGlcc3BlY1xPcGVuQXBpICovCiRvcGVuQXBpID0gJHZhbGlkYXRvci0+Z2V0U2NoZW1hKCk7CmBgYAoKIyMjIFBTUi0xNSBNaWRkbGV3YXJlClBTUi0xNSBtaWRkbGV3YXJlIGNhbiBiZSB1c2VkIGxpa2UgdGhpczoKCmBgYHBocAokeWFtbEZpbGUgPSAnYXBpLnlhbWwnOwokanNvbkZpbGUgPSAnYXBpLmpzb24nOwoKJHBzcjE1TWlkZGxld2FyZSA9IChuZXcgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1IxNVxWYWxpZGF0aW9uTWlkZGxld2FyZUJ1aWxkZXIpLT5mcm9tWWFtbEZpbGUoJHlhbWxGaWxlKS0+Z2V0VmFsaWRhdGlvbk1pZGRsZXdhcmUoKTsKI29yCiRwc3IxNU1pZGRsZXdhcmUgPSAobmV3IFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSMTVcVmFsaWRhdGlvbk1pZGRsZXdhcmVCdWlsZGVyKS0+ZnJvbVlhbWwoZmlsZV9nZXRfY29udGVudHMoJHlhbWxGaWxlKSktPmdldFZhbGlkYXRpb25NaWRkbGV3YXJlKCk7CiNvcgokcHNyMTVNaWRkbGV3YXJlID0gKG5ldyBcTGVhZ3VlXE9wZW5BUElWYWxpZGF0aW9uXFBTUjE1XFZhbGlkYXRpb25NaWRkbGV3YXJlQnVpbGRlciktPmZyb21Kc29uRmlsZSgkanNvbkZpbGUpLT5nZXRWYWxpZGF0aW9uTWlkZGxld2FyZSgpOwojb3IKJHBzcjE1TWlkZGxld2FyZSA9IChuZXcgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1IxNVxWYWxpZGF0aW9uTWlkZGxld2FyZUJ1aWxkZXIpLT5mcm9tSnNvbihmaWxlX2dldF9jb250ZW50cygkanNvbkZpbGUpKS0+Z2V0VmFsaWRhdGlvbk1pZGRsZXdhcmUoKTsKI29yCiRzY2hlbWEgPSBuZXcgXGNlYmVcb3BlbmFwaVxzcGVjXE9wZW5BcGkoKTsgLy8gZ2VuZXJhdGUgc2NoZW1hIG9iamVjdCBieSBoYW5kCiR2YWxpZGF0b3IgPSAobmV3IFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0aW9uTWlkZGxld2FyZUJ1aWxkZXIpLT5mcm9tU2NoZW1hKCRzY2hlbWEpLT5nZXRWYWxpZGF0aW9uTWlkZGxld2FyZSgpOwpgYGAKCiMjIyBTbGltRnJhbWV3b3JrIE1pZGRsZXdhcmUKU2xpbSBmcmFtZXdvcmsgdXNlcyBzbGlnaHRseSBkaWZmZXJlbnQgbWlkZGxld2FyZSBpbnRlcmZhY2UsIHNvIGhlcmUgaXMgYW4gCmFkYXB0ZXIgd2hpY2ggeW91IGNhbiB1c2UgbGlrZSB0aGlzOgoKYGBgcGhwCiR5YW1sRmlsZSA9ICdhcGkueWFtbCc7CiRqc29uRmlsZSA9ICdhcGkuanNvbic7CgokcHNyMTVNaWRkbGV3YXJlID0gKG5ldyBcTGVhZ3VlXE9wZW5BUElWYWxpZGF0aW9uXFBTUjE1XFZhbGlkYXRpb25NaWRkbGV3YXJlQnVpbGRlciktPmZyb21ZYW1sRmlsZSgkeWFtbEZpbGUpLT5nZXRWYWxpZGF0aW9uTWlkZGxld2FyZSgpOwojb3IKJHBzcjE1TWlkZGxld2FyZSA9IChuZXcgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1IxNVxWYWxpZGF0aW9uTWlkZGxld2FyZUJ1aWxkZXIpLT5mcm9tWWFtbChmaWxlX2dldF9jb250ZW50cygkeWFtbEZpbGUpKS0+Z2V0VmFsaWRhdGlvbk1pZGRsZXdhcmUoKTsKI29yCiRwc3IxNU1pZGRsZXdhcmUgPSAobmV3IFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSMTVcVmFsaWRhdGlvbk1pZGRsZXdhcmVCdWlsZGVyKS0+ZnJvbUpzb25GaWxlKCRqc29uRmlsZSktPmdldFZhbGlkYXRpb25NaWRkbGV3YXJlKCk7CiNvcgokcHNyMTVNaWRkbGV3YXJlID0gKG5ldyBcTGVhZ3VlXE9wZW5BUElWYWxpZGF0aW9uXFBTUjE1XFZhbGlkYXRpb25NaWRkbGV3YXJlQnVpbGRlciktPmZyb21Kc29uKGZpbGVfZ2V0X2NvbnRlbnRzKCRqc29uRmlsZSkpLT5nZXRWYWxpZGF0aW9uTWlkZGxld2FyZSgpOwojb3IKJHNjaGVtYSA9IG5ldyBcY2ViZVxvcGVuYXBpXHNwZWNcT3BlbkFwaSgpOyAvLyBnZW5lcmF0ZSBzY2hlbWEgb2JqZWN0IGJ5IGhhbmQKJHZhbGlkYXRvciA9IChuZXcgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XFZhbGlkYXRpb25NaWRkbGV3YXJlQnVpbGRlciktPmZyb21TY2hlbWEoJHNjaGVtYSktPmdldFZhbGlkYXRpb25NaWRkbGV3YXJlKCk7Cgokc2xpbU1pZGRsZXdhcmUgPSBuZXcgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1IxNVxTbGltQWRhcHRlcigkcHNyMTVNaWRkbGV3YXJlKTsKCi8qKiBAdmFyIFxTbGltXEFwcCAkYXBwICovCiRhcHAtPmFkZCgkc2xpbU1pZGRsZXdhcmUpOwpgYGAKCiMjIyBDYWNoaW5nIExheWVyIC8gUFNSLTYgU3VwcG9ydApQU1ItNyBWYWxpZGF0b3IgaGFzIGEgYnVpbHQtaW4gY2FjaGluZyBsYXllciAoYmFzZWQgb24gW1BTUi02XShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTYvKSBpbnRlcmZhY2VzKSB3aGljaCBzYXZlcyB0aW1lIG9uIHBhcnNpbmcgT3BlbkFQSSBzcGVjcy4gSXQgaXMgb3B0aW9uYWwuCllvdSBlbmFibGUgY2FjaGluZyBpZiB5b3UgcGFzcyBhIGNvbmZpZ3VyZWQgQ2FjaGUgUG9vbCBPYmplY3QgdG8gdGhlIHN0YXRpYyBjb25zdHJ1Y3RvciBsaWtlIHRoaXM6CmBgYHBocAovLyBDb25maWd1cmUgYSBQU1ItNiBDYWNoZSBQb29sCiRjYWNoZVBvb2wgPSBuZXcgQXJyYXlDYWNoZVBvb2woKTsKCi8vIFBhc3MgaXQgYXMgYSAybmQgYXJndW1lbnQKJHZhbGlkYXRvciA9IChuZXcgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XFZhbGlkYXRvckJ1aWxkZXIpCiAgICAtPmZyb21ZYW1sRmlsZSgkeWFtbEZpbGUpCiAgICAtPnNldENhY2hlKCRjYWNoZVBvb2wpCiAgICAtPmdldFJlc3BvbnNlVmFsaWRhdG9yKCk7CiMgb3IKJHBzcjE1TWlkZGxld2FyZSA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjE1XFZhbGlkYXRpb25NaWRkbGV3YXJlQnVpbGRlcikKICAgIC0+ZnJvbVlhbWxGaWxlKCR5YW1sRmlsZSkKICAgIC0+c2V0Q2FjaGUoJGNhY2hlUG9vbCkKICAgIC0+Z2V0VmFsaWRhdGlvbk1pZGRsZXdhcmUoKTsKYGBgCgpZb3UgY2FuIHVzZSBgLT5zZXRDYWNoZSgkcG9vbCwgJHR0bClgIGNhbGwgZm9yIGJvdGggUFNSLTcgYW5kIFBTUi0xNSBidWlsZGVyIGluIG9yZGVyIHRvIHNldCAKW3Byb3BlciBleHBpcmF0aW9uIHR0bCBpbiBzZWNvbmRzIChvciBleHBsaWNpdCBgbnVsbGApXShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTYvI2RlZmluaXRpb25zKQoKSWYgeW91IHdhbnQgdGFrZSBjb250cm9sIG92ZXIgdGhlIGNhY2hlIGtleSBmb3Igc2NoZW1hIGl0ZW0sIG9yIHlvdXIgY2FjaGUgZG9lcyBub3Qgc3VwcG9ydCBjYWNoZSBrZXkgZ2VuZXJhdGlvbiBieSBpdHNlbGYKeW91IGNhbiBgLT5vdmVycmlkZUNhY2hlS2V5KCdteV9jdXN0b21fa2V5JylgIHRvIGVuc3VyZSBjYWNoZSB1c2VzIGtleSB5b3Ugd2FudC4KCiMjIyBTdGFuZGFsb25lIE9wZW5BUEkgVmFsaWRhdG9yClRoZSBwYWNrYWdlIGNvbnRhaW5zIGEgc3RhbmRhbG9uZSB2YWxpZGF0b3Igd2hpY2ggY2FuIHZhbGlkYXRlIGFueSBkYXRhIAphZ2FpbnN0IGFuIE9wZW5BUEkgc2NoZW1hIGxpa2UgdGhpczoKCmBgYHBocAokc3BlYyA9IDw8PFNQRUMKc2NoZW1hOgogIHR5cGU6IHN0cmluZwogIGVudW06CiAgLSBhCiAgLSBiClNQRUM7CiRkYXRhID0gImMiOwoKJHNwZWMgICA9IGNlYmVcb3BlbmFwaVxSZWFkZXI6OnJlYWRGcm9tWWFtbCgkc3BlYyk7CiMgKG9wdGlvbmFsKSByZWZlcmVuY2UgcmVzb2x2aW5nCiRzcGVjLT5yZXNvbHZlUmVmZXJlbmNlcyhuZXcgUmVmZXJlbmNlQ29udGV4dCgkc3BlYywgIi8iKSk7CiRzY2hlbWEgPSBuZXcgY2ViZVxvcGVuYXBpXHNwZWNcU2NoZW1hKCRzcGVjLT5zY2hlbWEpOwoKdHJ5IHsKICAgIChuZXcgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxTY2hlbWFcU2NoZW1hVmFsaWRhdG9yKCkpLT52YWxpZGF0ZSgkZGF0YSwgJHNjaGVtYSk7Cn0gY2F0Y2goXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxTY2hlbWFcRXhjZXB0aW9uXEtleXdvcmRNaXNtYXRjaCAkZSkgewogICAgLy8geW91IGNhbiBldmFsdWF0ZSBmYWlsdXJlIGRldGFpbHMKICAgIC8vICRlLT5rZXl3b3JkKCkgPT0gImVudW0iCiAgICAvLyAkZS0+ZGF0YSgpID09ICJjIgogICAgLy8gJGUtPmRhdGFCcmVhZENydW1iKCktPmJ1aWxkQ2hhaW4oKSAtLSBvbmx5IGZvciBuZXN0ZWQgZGF0YQp9CmBgYAoKIyMgQ3VzdG9tIFR5cGUgRm9ybWF0cwpBcyB5b3Uga25vdywgT3BlbkFQSSBhbGxvd3MgeW91IHRvIGFkZCBmb3JtYXRzIHRvIHR5cGVzOgoKYGBgeWFtbApzY2hlbWE6CiAgdHlwZTogc3RyaW5nCiAgZm9ybWF0OiBiaW5hcnkKYGBgCgpUaGlzIHBhY2thZ2UgY29udGFpbnMgYSBidW5jaCBvZiBidWlsdC1pbiBmb3JtYXQgdmFsaWRhdG9yczoKLSBgc3RyaW5nYCB0eXBlOgogICAgLSBgYnl0ZWAKICAgIC0gYGRhdGVgCiAgICAtIGBkYXRlLXRpbWVgCiAgICAtIGBlbWFpbGAKICAgIC0gYGhvc3RuYW1lYAogICAgLSBgaXB2NGAKICAgIC0gYGlwdjZgCiAgICAtIGB1cmlgCiAgICAtIGB1dWlkYCAodXVpZDQpCi0gYG51bWJlcmAgdHlwZQogICAgLSBgZmxvYXRgCiAgICAtIGBkb3VibGVgCgpZb3UgY2FuIGFsc28gYWRkIHlvdXIgb3duIGZvcm1hdHMuIExpa2UgdGhpczoKYGBgcGhwCiMgQSBmb3JtYXQgdmFsaWRhdG9yIG11c3QgYmUgYSBjYWxsYWJsZQojIEl0IG11c3QgcmV0dXJuIGJvb2wgdmFsdWUgKHRydWUgaWYgZm9ybWF0IG1hdGNoZWQgdGhlIGRhdGEsIGZhbHNlIG90aGVyd2lzZSkKCiMgQSBjYWxsYWJsZSBjbGFzczoKJGN1c3RvbUZvcm1hdCA9IG5ldyBjbGFzcygpCnsKICAgIGZ1bmN0aW9uIF9faW52b2tlKCR2YWx1ZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHZhbHVlID09PSAiZ29vZCB2YWx1ZSI7CiAgICB9Cn07CgojIE9yIGp1c3QgYSBjbG9zdXJlOgokY3VzdG9tRm9ybWF0ID0gZnVuY3Rpb24gKCR2YWx1ZSk6IGJvb2wgewogICAgcmV0dXJuICR2YWx1ZSA9PT0gImdvb2QgdmFsdWUiOwp9OwoKIyBSZWdpc3RlciB5b3VyIGNhbGxhYmxlIGxpa2UgdGhpcyBiZWZvcmUgdmFsaWRhdGluZyB5b3VyIGRhdGEKXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxTY2hlbWFcVHlwZUZvcm1hdHNcRm9ybWF0c0NvbnRhaW5lcjo6cmVnaXN0ZXJGb3JtYXQoJ3N0cmluZycsICdjdXN0b20nLCAkY3VzdG9tRm9ybWF0KTsKYGBgCgojIyBFeGNlcHRpb25zClRoZSBwYWNrYWdlIHRocm93cyBhIGxpc3Qgb2YgdmFyaW91cyBleGNlcHRpb25zIHdoaWNoIHlvdSBjYW4gY2F0Y2ggYW5kIGhhbmRsZS4gVGhlcmUgYXJlIHNvbWUgb2YgdGhlbToKLSBTY2hlbWEgcmVsYXRlZDoKICAgIC0gYFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cU2NoZW1hXEV4Y2VwdGlvblxLZXl3b3JkTWlzbWF0Y2hgIC0gSW5kaWNhdGVzIHRoYXQgZGF0YSB3YXMgbm90IG1hdGNoZWQgYWdhaW5zdCBhIHNjaGVtYSdzIGtleXdvcmQKICAgICAgICAtIGBcTGVhZ3VlXE9wZW5BUElWYWxpZGF0aW9uXFNjaGVtYVxFeGNlcHRpb25cVHlwZU1pc21hdGNoYCAtIFZhbGlkYXRpb24gZm9yIGB0eXBlYCBrZXl3b3JkIGZhaWxlZCBhZ2FpbnN0IGEgZ2l2ZW4gZGF0YS4gRm9yIGV4YW1wbGUgYHR5cGU6c3RyaW5nYCBhbmQgdmFsdWUgaXMgYDEyYAogICAgICAgIC0gYFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cU2NoZW1hXEV4Y2VwdGlvblxGb3JtYXRNaXNtYXRjaGAgLSBkYXRhIG1pc21hdGNoZWQgYSBnaXZlbiB0eXBlIGZvcm1hdC4gRm9yIGV4YW1wbGUgYHR5cGU6IHN0cmluZywgZm9ybWF0OiBlbWFpbGAgd29uJ3QgbWF0Y2ggYG5vdC1lbWFpbGAuCi0gUFNSNyBNZXNzYWdlcyByZWxhdGVkOgogICAgLSBgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XEV4Y2VwdGlvblxOb0NvbnRlbnRUeXBlYCAtIEhUVFAgbWVzc2FnZShyZXF1ZXN0L3Jlc3BvbnNlKSBjb250YWlucyBubyBDb250ZW50LVR5cGUgaGVhZGVyLiBHZW5lcmFsIEhUVFAgZXJyb3JzLgogICAgLSBgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XEV4Y2VwdGlvblxOb1BhdGhgIC0gcGF0aCBpcyBub3QgZm91bmQgaW4gdGhlIHNwZWMKICAgIC0gYFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xFeGNlcHRpb25cTm9PcGVyYXRpb25gIC0gb3BlcmF0aW9uIG9zIG5vdCBmb3VuZCBpbiB0aGUgcGF0aAogICAgLSBgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XEV4Y2VwdGlvblxOb1Jlc3BvbnNlQ29kZWAgLSByZXNwb25zZSBjb2RlIG5vdCBmb3VuZCB1bmRlciB0aGUgb3BlcmF0aW9uIGluIHRoZSBzcGVjCiAgICAtIFZhbGlkYXRpb24gZXhjZXB0aW9ucyAoY2hlY2sgcGFyZW50IGV4Y2VwdGlvbiBmb3IgcG9zc2libGUgcm9vdCBjYXVzZXMpOgogICAgICAgIC0gYFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xFeGNlcHRpb25cVmFsaWRhdGlvbkZhaWxlZGAgLSBnZW5lcmljIGV4Y2VwdGlvbiBmb3IgZmFpbGVkIFBTUi03IG1lc3NhZ2UKICAgICAgICAtIGBcTGVhZ3VlXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcRXhjZXB0aW9uXFZhbGlkYXRpb25cSW52YWxpZEJvZHlgIC0gYm9keSBkb2VzIG5vdCBtYXRjaCBzY2hlbWEKICAgICAgICAtIGBcTGVhZ3VlXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcRXhjZXB0aW9uXFZhbGlkYXRpb25cSW52YWxpZENvb2tpZXNgIC0gY29va2llcyBkb2VzIG5vdCBtYXRjaCBzY2hlbWEgb3IgbWlzc2luZyByZXF1aXJlZCBjb29raWUKICAgICAgICAtIGBcTGVhZ3VlXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcRXhjZXB0aW9uXFZhbGlkYXRpb25cSW52YWxpZEhlYWRlcnNgIC0gaGVhZGVyIGRvZXMgbm90IG1hdGNoIHNjaGVtYSBvciBtaXNzaW5nIHJlcXVpcmVkIGhlYWRlcgogICAgICAgIC0gYFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xFeGNlcHRpb25cVmFsaWRhdGlvblxJbnZhbGlkUGF0aGAgLSBwYXRoIGRvZXMgbm90IG1hdGNoIHBhdHRlcm4gb3IgcGF0dGVybiB2YWx1ZXMgZG9lcyBub3QgbWF0Y2ggc2NoZW1hCiAgICAgICAgLSBgXExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XEV4Y2VwdGlvblxWYWxpZGF0aW9uXEludmFsaWRRdWVyeUFyZ3NgIC0gcXVlcnkgYXJncyBkb2VzIG5vdCBtYXRjaCBzY2hlbWEgb3IgbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudAogICAgICAgIC0gYFxMZWFndWVcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xFeGNlcHRpb25cVmFsaWRhdGlvblxJbnZhbGlkU2VjdXJpdHlgIC0gcmVxdWVzdCBkb2VzIG5vdCBtYXRjaCBzZWN1cml0eSBzY2hlbWEgb3IgaW52YWxpZCBzZWN1cml0eSBoZWFkZXJzCiAgICAtIFJlcXVlc3QgcmVsYXRlZDoKICAgICAgICAtIGBcTGVhZ3VlXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcRXhjZXB0aW9uXE11bHRpcGxlT3BlcmF0aW9uc01pc21hdGNoRm9yUmVxdWVzdGAgLSByZXF1ZXN0IG1hdGNoZWQgbXVsdGlwbGUgb3BlcmF0aW9ucyBpbiB0aGUgc3BlYywgCiAgICAgICAgYnV0IHZhbGlkYXRpb24gZmFpbGVkIGZvciBhbGwgb2YgdGhlbS4KCiMjIFRlc3RpbmcKWW91IGNhbiBydW4gdGhlIHRlc3RzIHdpdGg6CgpgYGAKdmVuZG9yL2Jpbi9waHB1bml0CmBgYAoKIyMgQ29udHJpYnV0aW9uIEd1aWRlCkZlZWwgZnJlZSB0byBvcGVuIGFuIElzc3VlIG9yIGFkZCBhIFB1bGwgcmVxdWVzdC4gClRoZXJlIGlzIGEgY2VydGFpbiBjb2RlIHN0eWxlIHRoYXQgdGhpcyBwYWNrYWdlIGZvbGxvd3M6IFtkb2N0cmluZS9jb2Rpbmctc3RhbmRhcmRdKGh0dHBzOi8vd3d3LmRvY3RyaW5lLXByb2plY3Qub3JnL3Byb2plY3RzL2RvY3RyaW5lLWNvZGluZy1zdGFuZGFyZC9lbi9sYXRlc3QvcmVmZXJlbmNlL2luZGV4Lmh0bWwjaW50cm9kdWN0aW9uKS4KClRvIGNvbmZvcm0gdG8gdGhpcyBzdHlsZSBwbGVhc2UgdXNlIGEgZ2l0IGhvb2ssIHNoaXBwZWQgd2l0aCB0aGlzIHBhY2thZ2UgYXQgYC5naXRob29rcy9wcmUtY29tbWl0YC4KCkhvdyB0byB1c2UgaXQ6CjEuIENsb25lIHRoZSBwYWNrYWdlIGxvY2FsbHkgYW5kIG5hdmlnYXRlIHRvIHRoZSBmb2xkZXIKMi4gQ3JlYXRlIGEgc3ltbGluayB0byB0aGUgaG9vayBsaWtlIHRoaXM6IGBsbiAtcyAtZiAuLi8uLi8uZ2l0aG9va3MvcHJlLWNvbW1pdCAuZ2l0L2hvb2tzL3ByZS1jb21taXRgCjMuIEFkZCBleGVjdXRpb24gcmlnaHRzOiBgY2htb2QgK3ggLmdpdC9ob29rcy9wcmUtY29tbWl0YAo0LiBOb3cgY29tbWl0IGFueSBuZXcgY2hhbmdlcyBhbmQgdGhlIGNvZGUgd2lsbCBiZSBjaGVja2VkIGFuZCBmb3JtYXR0ZWQgYWNjb3JkaW5nbHkuCjUuIElmIHRoZXJlIGFyZSBhbnkgaXNzdWVzIHdpdGggeW91ciBjb2RlLCBjaGVjayB0aGUgbG9nIGhlcmU6IGAucGhwY3MtcmVwb3J0LnR4dGAKCiMjIENyZWRpdHMKUGVvcGxlOgotIFtEbWl0cnkgTGV6aG5ldl0oaHR0cHM6Ly9naXRodWIuY29tL2xlemhuZXY3NCkKLSBbQ2Fyc3RlbiBCcmFuZHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9jZWJlKQotIFtTYW11ZWwgTmVsYV0oaHR0cHM6Ly9naXRodWIuY29tL3NhbW5lbGEpCi0gW1BhdmVsIEJhdGFub3ZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2F5dHJhc2UpCi0gW0NocmlzdG9waGVyIEwgQnJheV0oaHR0cHM6Ly9naXRodWIuY29tL2JyYXluaXZlcnNlKQotIFtEYXZpZCBQYXVsaV0oaHR0cHM6Ly9naXRodWIuY29tL2RwYXVsaSkKLSBbSmFzb24gSnVkZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9qdWRnZWopCi0gW1lhbm5pY2sgQ2hlbm90XShodHRwczovL2dpdGh1Yi5jb20vb3N0ZWVsKQotIFtUYXJhc0JLXShodHRwczovL2dpdGh1Yi5jb20vVGFyYXNCSykKLSBbSmFzb24gQi4gU3RhbmRpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9qYXNvbmJzdGFuZGluZykKLSBbRG15dHJvIERlbWNoeW5hXShodHRwczovL2dpdGh1Yi5jb20vZG15dHJvLWRlbWNoeW5hKQotIFtXaWxsIENoYW1iZXJzXShodHRwczovL2dpdGh1Yi5jb20vd2lsbGNoYW1iZXJzOTkpCi0gW0lnbmFjaW9dKGh0dHBzOi8vZ2l0aHViLmNvbS9pbWVmaXN0bykKLSBBIGJpZyB0aGFuayB5b3UgdG8gW0hlbnJpayBLYXJsc3Ryw7ZtXShodHRwczovL2dpdGh1Yi5jb20vaGthcmxzdHJvbSkgd2hvIGtpbmQgb2YgaW5zcGlyZWQgbWUgdG8gd29yayBvbiB0aGlzIHBhY2thZ2UuIAoKUmVzb3VyY2VzOgotIEljb25zIG1hZGUgYnkgRnJlZXBpaywgbGljZW5zZWQgYnkgQ0MgMy4wIEJZCi0gW2NlYmUvcGhwLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9jZWJlL3BocC1vcGVuYXBpKSBwYWNrYWdlIGZvciBSZWFkaW5nIE9wZW5BUEkgZmlsZXMKLSBbc2xpbTMtcHNyMTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ibmYvc2xpbTMtcHNyMTUpIHBhY2thZ2UgZm9yIFNsaW0gbWlkZGxld2FyZSBhZGFwdGVyCiAKIyMgTGljZW5zZQpUaGUgTUlUIExpY2Vuc2UgKE1JVCkuIFBsZWFzZSBzZWUgYExpY2Vuc2UubWRgIGZpbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgojIyBUT0RPCi0gWyBdIFN1cHBvcnQgRGlzY3JpbWluYXRvciBPYmplY3QgKG5vdGU6IGFwcGFyZW50bHksIHRoaXMgaXMgbm90IHNvIHN0cmFpZ2h0Zm9yd2FyZCwgYXMgZGlzY3JpbWluYXRvciBjYW4gcG9pbnQgdG8gYW55IGV4dGVybmFsIHNjaGVtZSkK readmeEtag: '"bb4441fcf3a344c1448c23f38f6b5d2b6242e9ce"' readmeLastModified: Wed, 10 Jan 2024 19:11:09 GMT repositoryId: 209473440 description: >- It validates PSR-7 messages (HTTP request/response) against OpenAPI specifications created: '2019-09-19T05:57:05Z' updated: '2026-01-28T14:59:59Z' language: PHP archived: false stars: 553 watchers: 21 forks: 107 owner: thephpleague logo: https://avatars.githubusercontent.com/u/527621?v=4 license: MIT repoEtag: '"54ce419a2bd836e74252536fe0971a769e25c1c8d3c52eca2365c8ee6dddcc61"' repoLastModified: Wed, 28 Jan 2026 14:59:59 GMT foundInMaster: true v3_1_link: https://github.com/thephpleague/openapi-psr7-validator/issues/163 id: 5db76a91d3b4f650045f409b9e0f4e9b v3_1: true - source: - https://openapi.tools/ - openapi3 tags name: php-openapi category: - Parsers - Description Validators repository: https://github.com/cebe/php-openapi language: PHP source_description: A PHP library for manipulating and validating OpenAPI 3.0 Descriptions v3: true repositoryMetadata: base64Readme: >- IyBwaHAtb3BlbmFwaQoKUmVhZCBhbmQgd3JpdGUgW09wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pIDMuMC54IFlBTUwgYW5kIEpTT04gZmlsZXMgYW5kIG1ha2UgdGhlIGNvbnRlbnQgYWNjZXNzaWJsZSBpbiBQSFAgb2JqZWN0cy4KCkl0IGFsc28gcHJvdmlkZXMgYSBDTEkgdG9vbCBmb3IgdmFsaWRhdGluZyBhbmQgY29udmVydGluZyBPcGVuQVBJIDMuMC54IERlc2NyaXB0aW9uIGZpbGVzLgoKWyFbTGF0ZXN0IFN0YWJsZSBWZXJzaW9uXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL2NlYmUvcGhwLW9wZW5hcGkvdi9zdGFibGUpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvY2ViZS9waHAtb3BlbmFwaSkKWyFbVG90YWwgRG93bmxvYWRzXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL2NlYmUvcGhwLW9wZW5hcGkvZG93bmxvYWRzKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2NlYmUvcGhwLW9wZW5hcGkpClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL2NlYmUvcGhwLW9wZW5hcGkvd29ya2Zsb3dzL0NJL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9jZWJlL3BocC1vcGVuYXBpL2FjdGlvbnMpCgoKIyMgSW5zdGFsbAoKICAgIGNvbXBvc2VyIHJlcXVpcmUgY2ViZS9waHAtb3BlbmFwaQoKIyMgUmVxdWlyZW1lbnRzCgotIFBIUCA3LjEgb3IgaGlnaGVyICh3b3JrcyBmaW5lIHdpdGggUEhQIDgpCgojIyBVc2VkIGJ5CgpUaGlzIGxpYnJhcnkgcHJvdmlkZXMgYSBsb3cgbGV2ZWwgQVBJIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIE9wZW5BUEkgZmlsZXMuIEl0IGlzIHVzZWQgYnkgaGlnaGVyIGxldmVsIHRvb2xzIHRvCmRvIGF3ZXNvbWUgd29yazoKCi0gW2NlYmUveWlpMi1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vY2ViZS95aWkyLW9wZW5hcGkpIENvZGUgR2VuZXJhdG9yIGZvciBSRVNUIEFQSSBmcm9tIE9wZW5BUEkgMyBEZXNjcmlwdGlvbnMsIGluY2x1ZGVzIGZha2UgZGF0YSBnZW5lcmF0b3IuCi0gW2NlYmUveWlpMi1hcHAtYXBpXShodHRwczovL2dpdGh1Yi5jb20vY2ViZS95aWkyLWFwcC1hcGkpIFlpaSBmcmFtZXdvcmsgYXBwbGljYXRpb24gdGVtcGxhdGUgZm9yIGRldmVsb3BpbmcgQVBJLWZpcnN0IGFwcGxpY2F0aW9ucy4KLSBbbGVhZ3VlL29wZW5hcGktcHNyNy12YWxpZGF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGVwaHBsZWFndWUvb3BlbmFwaS1wc3I3LXZhbGlkYXRvcikgdmFsaWRhdGVzIFBTUi03IG1lc3NhZ2VzIChIVFRQIHJlcXVlc3QvcmVzcG9uc2UpIGFnYWluc3QgT3BlbkFQSSBkZXNjcmlwdGlvbnMuCi0gW2RzdXVybGFudC9yZXNwb25zZTJzY2hlbWFdKGh0dHBzOi8vZ2l0aHViLmNvbS9kc3V1cmxhbnQvcmVzcG9uc2Uyc2NoZW1hKSBhIHF1aWNrIGFuZCBlYXN5IHRvb2wgZm9yIGdlbmVyYXRpbmcgT3BlbkFQSSBzY2hlbWFzIGJhc2VkIG9uIGV4YW1wbGUgZGF0YS4KLSBbaG90bWV0ZW9yL3NwZWN0YXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL2hvdG1ldGVvci9zcGVjdGF0b3IpIGEgbGlnaHQtd2VpZ2h0IE9wZW5BUEkgdGVzdGluZyB0b29sIGZvciBleGlzdGluZyBMYXJhdmVsIHRlc3Qgc3VpdGUuCi0gW2dvb2dvb2dham9vYi9vcGVuYXBpLXNsaW00XShodHRwczovL2dpdGh1Yi5jb20vZ29vZ29vZ2Fqb29iL29wZW5hcGktc2xpbTQpIENvbmZpZ3VyZSB0aGUgcGF0aHMgb2YgYSBzbGltNCBhcHBsaWNhdGlvbiBmcm9tIGFuIG9wZW5hcGkgZGVmaW5pdGlvbi4KLSAuLi4gKFthZGQgeW91cnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9jZWJlL3BocC1vcGVuYXBpL2VkaXQvbWFzdGVyL1JFQURNRS5tZCNMMjQpKQoKIyMgVXNhZ2UKCiMjIyBDTEkgVG9vbAoKICAgICQgdmVuZG9yL2Jpbi9waHAtb3BlbmFwaSBoZWxwCiAgICBQSFAgT3BlbkFQSSAzIHRvb2wKICAgIC0tLS0tLS0tLS0tLS0tLS0tLQogICAgYnkgQ2Fyc3RlbiBCcmFuZHQgPG1haWxAY2ViZS5jYz4KCiAgICBVc2FnZToKICAgICAgcGhwLW9wZW5hcGkgPGNvbW1hbmQ+IFs8b3B0aW9ucz5dIFtpbnB1dC55bWx8aW5wdXQuanNvbl0gW291dHB1dC55bWx8b3V0cHV0Lmpzb25dCgogICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGFyZSBhdmFpbGFibGU6CgogICAgICAgIHZhbGlkYXRlICAgVmFsaWRhdGUgdGhlIEFQSSBEZXNjcmlwdGlvbiBpbiB0aGUgc3BlY2lmaWVkIGlucHV0IGZpbGUgYWdhaW5zdCB0aGUgT3BlbkFQSSB2My4wIHNjaGVtYS4KICAgICAgICAgICAgICAgICAgIE5vdGU6IHRoZSB2YWxpZGF0aW9uIGlzIHBlcmZvcm1lZCBpbiB0d28gc3RlcHMuIFRoZSByZXN1bHRzIGFyZSBjb21wb3NlZCBvZgogICAgICAgICAgICAgICAgICAgICgxKSBzdHJ1Y3R1cmFsIGVycm9ycyBmb3VuZCB3aGlsZSByZWFkaW5nIHRoZSBBUEkgRGVzY3JpcHRpb24gZmlsZSwgYW5kCiAgICAgICAgICAgICAgICAgICAgKDIpIHZpb2xhdGlvbnMgb2YgdGhlIE9wZW5BUEkgdjMuMCBzY2hlbWEuCgogICAgICAgICAgICAgICAgICAgSWYgbm8gaW5wdXQgZmlsZSBpcyBzcGVjaWZpZWQgaW5wdXQgd2lsbCBiZSByZWFkIGZyb20gU1RESU4uCiAgICAgICAgICAgICAgICAgICBUaGUgdG9vbCB3aWxsIHRyeSB0byBhdXRvLWRldGVjdCB0aGUgY29udGVudCB0eXBlIG9mIHRoZSBpbnB1dCwgYnV0IG1heSBmYWlsCiAgICAgICAgICAgICAgICAgICB0byBkbyBzby4gWW91IG1heSBzcGVjaWZ5IC0tcmVhZC15YW1sIG9yIC0tcmVhZC1qc29uIHRvIGZvcmNlIHRoZSBmaWxlIHR5cGUuCgogICAgICAgICAgICAgICAgICAgRXhpdHMgd2l0aCBjb2RlIDIgb24gdmFsaWRhdGlvbiBlcnJvcnMsIDEgb24gb3RoZXIgZXJyb3JzIGFuZCAwIG9uIHN1Y2Nlc3MuCgogICAgICAgIGNvbnZlcnQgICAgQ29udmVydCBhIEpTT04gb3IgWUFNTCBpbnB1dCBmaWxlIHRvIEpTT04gb3IgWUFNTCBvdXRwdXQgZmlsZS4KCiAgICAgICAgICAgICAgICAgICBJZiBubyBpbnB1dCBmaWxlIGlzIHNwZWNpZmllZCBpbnB1dCB3aWxsIGJlIHJlYWQgZnJvbSBTVERJTi4KICAgICAgICAgICAgICAgICAgIElmIG5vIG91dHB1dCBmaWxlIGlzIHNwZWNpZmllZCBvdXRwdXQgd2lsbCBiZSB3cml0dGVuIHRvIFNURE9VVC4KICAgICAgICAgICAgICAgICAgIFRoZSB0b29sIHdpbGwgdHJ5IHRvIGF1dG8tZGV0ZWN0IHRoZSBjb250ZW50IHR5cGUgb2YgdGhlIGlucHV0IGFuZCBvdXRwdXQgZmlsZSwgYnV0IG1heSBmYWlsCiAgICAgICAgICAgICAgICAgICB0byBkbyBzby4gWW91IG1heSBzcGVjaWZ5IC0tcmVhZC15YW1sIG9yIC0tcmVhZC1qc29uIHRvIGZvcmNlIHRoZSBpbnB1dCBmaWxlIHR5cGUuCiAgICAgICAgICAgICAgICAgICBhbmQgLS13cml0ZS15YW1sIG9yIC0td3JpdGUtanNvbiB0byBmb3JjZSB0aGUgb3V0cHV0IGZpbGUgdHlwZS4KCiAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0IGFsbCByZWZlcmVuY2VzIGFyZSByZXNvbHZlZCAocmVwbGFjZWQgd2l0aCB0aGUgb2JqZWN0IHJlZmVycmVkIHRvKS4gWW91IGNhbiBjb250cm9sCiAgICAgICAgICAgICAgICAgICBoYW5kbGluZyBvZiByZWZlcmVuY2VzIHdpdGggdGhlIGZvbGxvd2luZyBhcmd1bWVudHM6CgogICAgICAgICAgICAgICAgICAgLS1yZXNvbHZlLW5vbmUgICAgICBEbyBub3QgcmVzb2x2ZSByZWZlcmVuY2VzLgogICAgICAgICAgICAgICAgICAgLS1yZXNvbHZlLWV4dGVybmFsICBPbmx5IHJlc29sdmUgcmVmZXJlbmNlcyB0aGF0IHBvaW50IHRvIGV4dGVybmFsIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHByb2Nlc3MgaXMgb2Z0ZW4gcmVmZXJyZWQgdG8gYXMgImlubGluaW5nIi4KICAgICAgICAgICAgICAgICAgIC0tcmVzb2x2ZS1hbGwgICAgICAgUmVzb2x2ZSBhbGwgcmVmZXJlbmNlcyAoZGVmYXVsdCkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY3Vyc2l2ZSBwb2ludGVycyB3aWxsIHN0YXkgcmVmZXJlbmNlcy4KCiAgICAgICAgaW5saW5lICAgICBDb252ZXJ0IGEgSlNPTiBvciBZQU1MIGlucHV0IGZpbGUgdG8gSlNPTiBvciBZQU1MIG91dHB1dCBmaWxlIGFuZAogICAgICAgICAgICAgICAgICAgcmVzb2x2ZSBhbGwgZXh0ZXJuYWwgcmVmZXJlbmNlcy4gVGhlIG91dHB1dCB3aWxsIGJlIGEgc2luZ2xlIEFQSSBEZXNjcmlwdGlvbiBmaWxlLgogICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhIHNob3J0Y3V0IGZvciBjYWxsaW5nIGNvbnZlcnQgLS1yZXNvbHZlLWV4dGVybmFsLgoKICAgICAgICBoZWxwICAgICAgIFNob3dzIHRoaXMgdXNhZ2UgaW5mb3JtYXRpb24uCgogICAgICBPcHRpb25zOgoKICAgICAgICAtLXJlYWQtanNvbiAgIGZvcmNlIHJlYWRpbmcgaW5wdXQgYXMgSlNPTi4gQXV0by1kZXRlY3QgaWYgbm90IHNwZWNpZmllZC4KICAgICAgICAtLXJlYWQteWFtbCAgIGZvcmNlIHJlYWRpbmcgaW5wdXQgYXMgWUFNTC4gQXV0by1kZXRlY3QgaWYgbm90IHNwZWNpZmllZC4KICAgICAgICAtLXdyaXRlLWpzb24gIGZvcmNlIHdyaXRpbmcgb3V0cHV0IGFzIEpTT04uIEF1dG8tZGV0ZWN0IGlmIG5vdCBzcGVjaWZpZWQuCiAgICAgICAgLS13cml0ZS15YW1sICBmb3JjZSB3cml0aW5nIG91dHB1dCBhcyBZQU1MLiBBdXRvLWRldGVjdCBpZiBub3Qgc3BlY2lmaWVkLgogICAgICAgIC1zLCAtLXNpbGVudCAgc2lsZW50IG1vZGUuIFdpbGwgaGlkZSBhbGwgc3VjY2Vzcy9pbmZvcm1hdGlvbiBtZXNzYWdlcyBhbmQgb25seSBwcmludCBlcnJvcnMuCgoKIyMjIFJlYWRpbmcgQVBJIERlc2NyaXB0aW9uIEZpbGVzCgpSZWFkIE9wZW5BUEkgRGVzY3JpcHRpb24gZnJvbSBKU09OIGZpbGU6CgpgYGBwaHAKdXNlIGNlYmVcb3BlbmFwaVxSZWFkZXI7CgovLyByZWFscGF0aCBpcyBuZWVkZWQgZm9yIHJlc29sdmluZyByZWZlcmVuY2VzIHdpdGggcmVsYXRpdmUgUGF0aHMgb3IgVVJMcwokb3BlbmFwaSA9IFJlYWRlcjo6cmVhZEZyb21Kc29uRmlsZShyZWFscGF0aCgnb3BlbmFwaS5qc29uJykpOwpgYGAKClJlYWQgT3BlbkFQSSBEZXNjcmlwdGlvbiBmcm9tIFlBTUw6CgpgYGBwaHAKdXNlIGNlYmVcb3BlbmFwaVxSZWFkZXI7CgovLyByZWFscGF0aCBpcyBuZWVkZWQgZm9yIHJlc29sdmluZyByZWZlcmVuY2VzIHdpdGggcmVsYXRpdmUgUGF0aHMgb3IgVVJMcwokb3BlbmFwaSA9IFJlYWRlcjo6cmVhZEZyb21ZYW1sRmlsZShyZWFscGF0aCgnb3BlbmFwaS55YW1sJykpOwovLyB5b3UgbWF5IGFsc28gc3BlY2lmeSB0aGUgVVJMIHRvIHlvdXIgQVBJIERlc2NyaXB0aW9uIGZpbGUKJG9wZW5hcGkgPSBSZWFkZXI6OnJlYWRGcm9tWWFtbEZpbGUoJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uLzMuMC4yL2V4YW1wbGVzL3YzLjAvcGV0c3RvcmUtZXhwYW5kZWQueWFtbCcpOwpgYGAKCkFjY2VzcyBBUEkgRGVzY3JpcHRpb24gZGF0YToKCmBgYHBocAplY2hvICRvcGVuYXBpLT5vcGVuYXBpOyAvLyBvcGVuQVBJIHZlcnNpb24sIGUuZy4gMy4wLjAKZWNobyAkb3BlbmFwaS0+aW5mby0+dGl0bGU7IC8vIEFQSSB0aXRsZQpmb3JlYWNoKCRvcGVuYXBpLT5wYXRocyBhcyAkcGF0aCA9PiAkZGVmaW5pdGlvbikgewogICAgLy8gaXRlcmF0ZSBwYXRoIGRlZmluaXRpb25zCn0KYGBgCgpPYmplY3QgcHJvcGVydGllcyBhcmUgZXhhY3RseSBsaWtlIGluIHRoZSBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iLzMuMC4yL3ZlcnNpb25zLzMuMC4yLm1kI29wZW5hcGktc3BlY2lmaWNhdGlvbikuCllvdSBtYXkgYWxzbyBhY2Nlc3MgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGFkZGVkIGJ5IFtzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvMy4wLjIvdmVyc2lvbnMvMy4wLjIubWQjc3BlY2lmaWNhdGlvbkV4dGVuc2lvbnMpLgoKUmVhZCBhIGNvbXBvbmVudCBzY2hlbWEgYW5kIGl0cyBwcm9wZXJ0aWVzIGZvciBiZWxvdyBzcGVjOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogIHRpdGxlOiBUZXN0IEFQSQogIHZlcnNpb246IDEuMC4wCnBhdGhzOgogIC9mb286CiAgICBwdXQ6CiAgICAgIGRlc2NyaXB0aW9uOiBjcmVhdGUgZm9vCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiByZXF1ZXN0IHN1Y2NlZWRlZCAgICAgICAgICAKY29tcG9uZW50czogIAogIHNjaGVtYXM6CiAgICBGb286CiAgICAgIGRlc2NyaXB0aW9uOiBUaGlzIGlzIGFuIGRlc2NyaXB0aW9uCiAgICAgIHR5cGU6IG9iamVjdAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIG1lc3NhZ2U6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICBjb2RlOgogICAgICAgICAgdHlwZTogbnVtYmVyCmBgYAoKYGBgcGhwCiMgcmVhZCBhIGNvbXBvbmVudCBzY2hlbWEKJGZvbyA9ICRvcGVuYXBpLT5jb21wb25lbnRzLT5zY2hlbWFzWydGb28nXTsKCiMgcmVhZCBhIHByb3BlcnR5IG9mIHNjaGVtYQokZm9vLT5wcm9wZXJ0aWVzWydtZXNzYWdlJ10KYGBgCgojIyMgV3JpdGluZyBBUEkgRGVzY3JpcHRpb24gRmlsZXMKCmBgYHBocAp1c2UgY2ViZVxvcGVuYXBpXHNwZWNcT3BlbkFwaTsKdXNlIGNlYmVcb3BlbmFwaVxzcGVjXFBhdGhJdGVtOwoKLy8gY3JlYXRlIGJhc2UgQVBJIERlc2NyaXB0aW9uCiRvcGVuYXBpID0gbmV3IE9wZW5BcGkoWwogICAgJ29wZW5hcGknID0+ICczLjAuMicsCiAgICAnaW5mbycgPT4gWwogICAgICAgICd0aXRsZScgPT4gJ1Rlc3QgQVBJJywKICAgICAgICAndmVyc2lvbicgPT4gJzEuMC4wJywKICAgIF0sCiAgICAncGF0aHMnID0+IFtdLApdKTsKLy8gbWFuaXB1bGF0ZSBkZXNjcmlwdGlvbiBhcyBuZWVkZWQKJG9wZW5hcGktPnBhdGhzWycvdGVzdCddID0gbmV3IFBhdGhJdGVtKFsKICAgICdkZXNjcmlwdGlvbicgPT4gJ3NvbWV0aGluZycKXSk7Ci8vIC4uLgoKJGpzb24gPSBcY2ViZVxvcGVuYXBpXFdyaXRlcjo6d3JpdGVUb0pzb24oJG9wZW5hcGkpOwpgYGAKCnJlc3VsdHMgaW4gdGhlIGZvbGxvd2luZyBKU09OIGRhdGE6CgpgYGBqc29uCnsKICAgICJvcGVuYXBpIjogIjMuMC4wIiwKICAgICJpbmZvIjogewogICAgICAgICJ0aXRsZSI6ICJUZXN0IEFQSSIsCiAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiCiAgICB9LAogICAgInBhdGhzIjogewogICAgICAgICIvdGVzdCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNvbWV0aGluZyIKICAgICAgICB9CiAgICB9Cn0KYGBgCgojIyMgV3JpdGluZyBBUEkgRGVzY3JpcHRpb24gRmlsZXMgdXNpbmcgcHJlcGFyZWQgT2JqZWN0cwoKU2luY2UgdmVyc2lvbiAxLjIuMCwgdGhlIGFib3ZlIGV4YW1wbGUgY2FuIGFsc28gYmUgd3JpdHRlbiBsaWtlIHRoaXMgKHBhc3Npbmcgb2JqZWN0cyBpbnN0ZWFkIG9mIGFycmF5cyk6CgpgYGBwaHAKdXNlIGNlYmVcb3BlbmFwaVxzcGVjXE9wZW5BcGk7CnVzZSBjZWJlXG9wZW5hcGlcc3BlY1xQYXRoSXRlbTsKdXNlIGNlYmVcb3BlbmFwaVxzcGVjXEluZm87CgoKLy8gY3JlYXRlIGJhc2UgQVBJIERlc2NyaXB0aW9uCiRvcGVuYXBpID0gbmV3IE9wZW5BcGkoWwogICAgJ29wZW5hcGknID0+ICczLjAuMicsCiAgICAnaW5mbycgPT4gbmV3IEluZm8oWwogICAgICAgICd0aXRsZScgPT4gJ1Rlc3QgQVBJJywKICAgICAgICAndmVyc2lvbicgPT4gJzEuMC4wJywKICAgIF0pLAogICAgJ3BhdGhzJyA9PiBbCiAgICAgICAgJy90ZXN0JyA9PiBuZXcgUGF0aEl0ZW0oWwogICAgICAgICAgICAnZGVzY3JpcHRpb24nID0+ICdzb21ldGhpbmcnCiAgICAgICAgXSksCiAgICBdLApdKTsKJGpzb24gPSBcY2ViZVxvcGVuYXBpXFdyaXRlcjo6d3JpdGVUb0pzb24oJG9wZW5hcGkpOwpgYGAKCiMjIyBSZWFkaW5nIEFQSSBEZXNjcmlwdGlvbiBGaWxlcyBhbmQgUmVzb2x2aW5nIFJlZmVyZW5jZXMKCkluIHRoZSBhYm92ZSB3ZSBoYXZlIHBhc3NlZCB0aGUgcmF3IEpTT04gb3IgWUFNTCBkYXRhIHRvIHRoZSBSZWFkZXIuIEluIG9yZGVyIHRvIGJlIGFibGUgdG8gcmVzb2x2ZQpyZWZlcmVuY2VzIHRvIHN0cnVjdHVyZXMgaW4gZXh0ZXJuYWwgZmlsZXMsIHdlIG11c3QgcHJvdmlkZSB0aGUgZnVsbCBjb250ZXh0LgoKYGBgcGhwCnVzZSBjZWJlXG9wZW5hcGlcUmVhZGVyOwp1c2UgY2ViZVxvcGVuYXBpXHNwZWNcT3BlbkFQSTsKdXNlIGNlYmVcb3BlbmFwaVxSZWZlcmVuY2VDb250ZXh0OwoKLy8gdGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgbW9kZXMgZm9yIHJlc29sdmluZyByZWZlcmVuY2VzOgovLyBBTEw6IHJlc29sdmUgYWxsIHJlZmVyZW5jZXMsIHdoaWNoIHdpbGwgcmVzdWx0IGluIGEgbGFyZ2UgZGVzY3JpcHRpb24gd2l0aCBhIGxvdCBvZiByZXBldGl0aW9uCi8vIGJ1dCBubyByZWZlcmVuY2VzIChleGNlcHQgaWYgdGhlcmUgYXJlIHJlY3Vyc2l2ZSByZWZlcmVuY2VzLCB0aGVzZSB3aWxsIHN0b3AgYXQgc29tZSBsZXZlbCkKJG1vZGUgPSBSZWZlcmVuY2VDb250ZXh0OjpSRVNPTFZFX01PREVfQUxMOwovLyBJTkxJTkU6IG9ubHkgcmVmZXJlbmNlcyB0byBleHRlcm5hbCBmaWxlcyBhcmUgcmVzb2x2ZWQsIHJlZmVyZW5jZXMgdG8gcGxhY2VzIGluIHRoZSBjdXJyZW50IGZpbGUKLy8gYXJlIHN0aWxsIFJlZmVyZW5jZSBvYmplY3RzLgokbW9kZSA9IFJlZmVyZW5jZUNvbnRleHQ6OlJFU09MVkVfTU9ERV9JTkxJTkU7CgovLyBhbiBhYnNvbHV0ZSBVUkwgb3IgZmlsZSBwYXRoIGlzIG5lZWRlZCB0byBhbGxvdyByZXNvbHZpbmcgZXh0ZXJuYWwgcmVmZXJlbmNlcwokb3BlbmFwaSA9IFJlYWRlcjo6cmVhZEZyb21Kc29uRmlsZSgnaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vYXBpL29wZW5hcGkuanNvbicsIE9wZW5BUEk6OmNsYXNzLCAkbW9kZSk7CiRvcGVuYXBpID0gUmVhZGVyOjpyZWFkRnJvbVlhbWxGaWxlKCdodHRwczovL3d3dy5leGFtcGxlLmNvbS9hcGkvb3BlbmFwaS55YW1sJywgT3BlbkFQSTo6Y2xhc3MsICRtb2RlKTsKYGBgCgpJZiBkYXRhIGhhcyBiZWVuIGxvYWRlZCBpbiBhIGRpZmZlcmVudCB3YXkgeW91IGNhbiBtYW51YWxseSByZXNvbHZlIHJlZmVyZW5jZXMgbGlrZSB0aGlzIGJ5IGdpdmluZyBhIGNvbnRleHQ6CgpgYGBwaHAKJG9wZW5hcGktPnJlc29sdmVSZWZlcmVuY2VzKAogICAgbmV3IFxjZWJlXG9wZW5hcGlcUmVmZXJlbmNlQ29udGV4dCgkb3BlbmFwaSwgJ2h0dHBzOi8vd3d3LmV4YW1wbGUuY29tL2FwaS9vcGVuYXBpLnlhbWwnKQopOwpgYGAKCiMjIyBWYWxpZGF0aW9uCgpUaGUgbGlicmFyeSBwcm92aWRlcyBzaW1wbGUgdmFsaWRhdGlvbiBvcGVyYXRpb25zLCB0aGF0IGNoZWNrIGJhc2ljIE9wZW5BUEkgc3BlYyByZXF1aXJlbWVudHMuClRoaXMgaXMgdGhlIHNhbWUgYXMgInN0cnVjdHVyYWwgZXJyb3JzIGZvdW5kIHdoaWxlIHJlYWRpbmcgdGhlIEFQSSBEZXNjcmlwdGlvbiBmaWxlIiBmcm9tIHRoZSBDTEkgdG9vbC4KVGhpcyB2YWxpZGF0aW9uIGRvZXMgbm90IGluY2x1ZGUgY2hlY2tpbmcgYWdhaW5zdCB0aGUgT3BlbkFQSSB2My4wIEpTT04gc2NoZW1hLCB0aGlzIGlzIG9ubHkgaW1wbGVtZW50ZWQgaW4gdGhlIENMSS4KCmBgYAovLyByZXR1cm4gYHRydWVgIGluIGNhc2Ugbm8gZXJyb3JzIGhhdmUgYmVlbiBmb3VuZCwgYGZhbHNlYCBpbiBjYXNlIG9mIGVycm9ycy4KJHNwZWNWYWxpZCA9ICRvcGVuYXBpLT52YWxpZGF0ZSgpOwovLyBhZnRlciB2YWxpZGF0aW9uIGdldEVycm9ycygpIGNhbiBiZSB1c2VkIHRvIHJldHJpZXZlIHRoZSBsaXN0IG9mIGVycm9ycyBmb3VuZC4KJGVycm9ycyA9ICRvcGVuYXBpLT5nZXRFcnJvcnMoKTsKYGBgCgo+ICoqTm90ZToqKiBWYWxpZGF0aW9uIGlzIGRvbmUgb24gYSB2ZXJ5IGJhc2ljIGxldmVsIGFuZCBpcyBub3QgY29tcGxldGUuIFNvIGEgZmFpbGluZyB2YWxpZGF0aW9uIHdpbGwgc2hvdyBzb21lIGVycm9ycywKPiBidXQgdGhlIGxpc3Qgb2YgZXJyb3JzIGdpdmVuIG1heSBub3QgYmUgY29tcGxldGUuIEFsc28gYSBwYXNzaW5nIHZhbGlkYXRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgaW5kaWNhdGUgYSBjb21wbGV0ZWx5Cj4gdmFsaWQgc3BlYy4KCgojIyBDb21wbGV0ZW5lc3MKClRoaXMgbGlicmFyeSBpcyBjdXJyZW50bHkgd29yayBpbiBwcm9ncmVzcywgdGhlIGZvbGxvd2luZyBsaXN0IHRyYWNrcyBjb21wbGV0ZW5lc3M6CgotIFt4XSByZWFkIE9wZW5BUEkgMy4wIEpTT04KLSBbeF0gcmVhZCBPcGVuQVBJIDMuMCBZQU1MCi0gWyBdIE9wZW5BUEkgMy4wIFNjaGVtYQogIC0gW3hdIE9wZW5BUEkgT2JqZWN0CiAgLSBbeF0gSW5mbyBPYmplY3QKICAtIFt4XSBDb250YWN0IE9iamVjdAogIC0gW3hdIExpY2Vuc2UgT2JqZWN0CiAgLSBbeF0gU2VydmVyIE9iamVjdAogIC0gW3hdIFNlcnZlciBWYXJpYWJsZSBPYmplY3QKICAtIFt4XSBDb21wb25lbnRzIE9iamVjdAogIC0gW3hdIFBhdGhzIE9iamVjdAogIC0gW3hdIFBhdGggSXRlbSBPYmplY3QKICAtIFt4XSBPcGVyYXRpb24gT2JqZWN0CiAgLSBbeF0gRXh0ZXJuYWwgRG9jdW1lbnRhdGlvbiBPYmplY3QKICAtIFt4XSBQYXJhbWV0ZXIgT2JqZWN0CiAgLSBbeF0gUmVxdWVzdCBCb2R5IE9iamVjdAogIC0gW3hdIE1lZGlhIFR5cGUgT2JqZWN0CiAgLSBbeF0gRW5jb2RpbmcgT2JqZWN0CiAgLSBbeF0gUmVzcG9uc2VzIE9iamVjdAogIC0gW3hdIFJlc3BvbnNlIE9iamVjdAogIC0gW3hdIENhbGxiYWNrIE9iamVjdAogIC0gW3hdIEV4YW1wbGUgT2JqZWN0CiAgLSBbeF0gTGluayBPYmplY3QKICAgIC0gWyBdIFtSdW50aW1lIEV4cHJlc3Npb25zXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iLzMuMC4yL3ZlcnNpb25zLzMuMC4yLm1kI3J1bnRpbWUtZXhwcmVzc2lvbnMpCiAgLSBbeF0gSGVhZGVyIE9iamVjdAogIC0gW3hdIFRhZyBPYmplY3QKICAtIFt4XSBSZWZlcmVuY2UgT2JqZWN0CiAgLSBbeF0gU2NoZW1hIE9iamVjdAogICAgLSBbeF0gbG9hZC9yZWFkCiAgICAtIFsgXSB2YWxpZGF0aW9uCiAgLSBbeF0gRGlzY3JpbWluYXRvciBPYmplY3QKICAtIFt4XSBYTUwgT2JqZWN0CiAgLSBbeF0gU2VjdXJpdHkgU2NoZW1lIE9iamVjdAogIC0gW3hdIE9BdXRoIEZsb3dzIE9iamVjdAogIC0gW3hdIE9BdXRoIEZsb3cgT2JqZWN0CiAgLSBbeF0gU2VjdXJpdHkgUmVxdWlyZW1lbnQgT2JqZWN0CgojIERldmVsb3BtZW50CgpZb3UgbWF5IHVzZSB0aGUgZG9ja2VyIGVudmlyb25tZW50IGZvciBsb2NhbCBkZXZlbG9wbWVudDoKCiAgICBkb2NrZXItY29tcG9zZSBidWlsZAogICAgbWFrZSBJTl9ET0NLRVI9MSBpbnN0YWxsCiAgICBtYWtlIElOX0RPQ0tFUj0xIHRlc3QKICAgIC4uLgoKCiMgU3VwcG9ydAoKKipOZWVkIGhlbHAgd2l0aCB5b3VyIEFQSSBwcm9qZWN0PyoqCgpQcm9mZXNzaW9uYWwgc3VwcG9ydCwgY29uc3VsdGluZyBhcyB3ZWxsIGFzIHNvZnR3YXJlIGRldmVsb3BtZW50IHNlcnZpY2VzIGFyZSBhdmFpbGFibGU6CgpodHRwczovL3d3dy5jZWJlLmNjL2VuL2NvbnRhY3QKCkRldmVsb3BtZW50IG9mIHRoaXMgbGlicmFyeSBpcyBzcG9uc29yZWQgYnkgW2NlYmUuOmNsb3VkOiAiWW91ciBQcm9mZXNzaW9uYWwgRGVwbG95bWVudCBQbGF0Zm9ybSJdKGh0dHBzOi8vY2ViZS5jbG91ZCkuCg== readmeEtag: '"d7cd07151e5836fb93b11e7879828520ef036777"' readmeLastModified: Fri, 07 Feb 2025 11:28:04 GMT repositoryId: 154310978 description: >- Read and write OpenAPI yaml/json files and make the content accessible in PHP objects. created: '2018-10-23T10:46:11Z' updated: '2026-01-19T07:05:22Z' language: PHP archived: false stars: 498 watchers: 17 forks: 98 owner: cebe logo: https://avatars.githubusercontent.com/u/189796?v=4 license: MIT repoEtag: '"bc3824ecc2198f528aa28459b8630f661c76b4284027b95346306c2732106176"' repoLastModified: Mon, 19 Jan 2026 07:05:22 GMT foundInMaster: true v3_1_link: https://github.com/cebe/php-openapi/pull/128 id: 3a26d5049f03c42cb9771c179db0f35f - source: https://openapi.tools/ name: Object Oriented OpenAPI Specification homepage: https://github.com/goldspecdigital/oooas language: PHP source_description: >- An object oriented approach to generating OpenAPI Descriptions, implemented in PHP category: Parsers repository: https://github.com/goldspecdigital/oooas v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ29sZHNwZWNkaWdpdGFsL29vb2FzIj48aW1nIAogICAgICAgIGFsdD0iT2JqZWN0IE9yaWVudGVkIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiIKICAgICAgICBzcmM9Imh0dHBzOi8vc3Znc2hhcmUuY29tL2kvRDcwLnN2ZyIgd2lkdGg9IjQwMHB4IgogICAgPjwvYT4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ29sZHNwZWNkaWdpdGFsL29vb2FzIj48aW1nIAogICAgICAgIGFsdD0iR2l0SHViIHN0YXJzIiAKICAgICAgICBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL2dvbGRzcGVjZGlnaXRhbC9vb29hcy5zdmc/c3R5bGU9c29jaWFsIgogICAgPjwvYT4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ29sZHNwZWNkaWdpdGFsL29vb2FzL3RhZ3MiPjxpbWcgCiAgICAgICAgYWx0PSJHaXRIdWIgdGFnIChsYXRlc3QgU2VtVmVyKSIgCiAgICAgICAgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi90YWcvZ29sZHNwZWNkaWdpdGFsL29vb2FzLnN2ZyIKICAgID48L2E+CiAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ29sZHNwZWNkaWdpdGFsL29vb2FzL2FjdGlvbnMiPjxpbWcgCiAgICAgICAgYWx0PSJCdWlsZCBzdGF0dXMiCiAgICAgICAgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vZ29sZHNwZWNkaWdpdGFsL29vb2FzL3dvcmtmbG93cy9UZXN0cy9iYWRnZS5zdmciIAogICAgPjwvYT4KICAgIDxhIGhyZWY9Imh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9nb2xkc3BlY2RpZ2l0YWwvb29vYXMiPjxpbWcgCiAgICAgICAgYWx0PSJQYWNrYWdpc3QiIAogICAgICAgIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9wYWNrYWdpc3QvZHQvZ29sZHNwZWNkaWdpdGFsL29vb2FzLnN2ZyIKICAgID48L2E+CiAgICA8aW1nIAogICAgICAgIGFsdD0iUEhQIGZyb20gUGFja2FnaXN0IiAKICAgICAgICBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L3BocC12L2dvbGRzcGVjZGlnaXRhbC9vb29hcy5zdmciCiAgICA+CiAgICA8aW1nIAogICAgICAgIGFsdD0iRGVwZW5kZW5jeSBjb3VudCIKICAgICAgICBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGVwZW5kZW5jaWVzLTAtYnJpZ2h0Z3JlZW4uc3ZnIiAKICAgID4KICAgIDxpbWcgCiAgICAgICAgYWx0PSJQYWNrYWdpc3QiIAogICAgICAgIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9wYWNrYWdpc3QvbC9nb2xkc3BlY2RpZ2l0YWwvb29vYXMuc3ZnIgogICAgPgo8L3A+CgojIyBJbnRyb2R1Y3Rpb24KCkFuIG9iamVjdCBvcmllbnRlZCBhcHByb2FjaCB0byBnZW5lcmF0aW5nIE9wZW5BUEkgc3BlY3MsIGltcGxlbWVudGVkIGluIFBIUC4gCgpZb3UgY2FuIGJ1aWxkIHVwIHlvdXIgQVBJIHNwZWMgdXNpbmcgaW1tdXRhYmxlIFBIUCBjbGFzc2VzLCBhbmQgdGhlbiBleHBvcnQgdGhlIApzcGVjIHRvIEpTT04gKG9yIFlBTUwgd2l0aCB0aGUgaGVscCBvZiBhbm90aGVyIHBhY2thZ2UpLgoKVGhpcyBwYWNrYWdlIGlzICoqZGVwZW5kZW5jeSBmcmVlKiogYW5kIG1ha2VzIGhlYXZ5IHVzZSBvZiAqKlBIUCA3IGZlYXR1cmVzKiosIAptYWlubHkgYmVpbmcgKip0eXBlIGhpbnRzKiogYW5kIGVuYWJsaW5nICoqc3RyaWN0IHR5cGVzKiouIFRoaXMgc2hvdWxkIG1ha2UgeW91ciAKbGlmZSBhIGxvdCBlYXNpZXIgd2hlbiB3b3JraW5nIHdpdGggYSBnb29kIElERSB0aGF0IGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbi4KCiMjIEluc3RhbGxpbmcKCllvdSBjYW4gaW5zdGFsbCB0aGUgcGFja2FnZSB2aWEgY29tcG9zZXI6CmBgYGJhc2gKY29tcG9zZXIgcmVxdWlyZSBnb2xkc3BlY2RpZ2l0YWwvb29vYXMKYGBgCgojIyBFeGFtcGxlCgpTZWUgdGhlIGNvZGUgc2FtcGxlIGJlbG93IGZvciB0aGUgbW9zdCBiYXNpYyB1c2FnZToKCmBgYHBocAp1c2UgR29sZFNwZWNEaWdpdGFsXE9iamVjdE9yaWVudGVkT0FTXE9iamVjdHNcewogICAgSW5mbywgTWVkaWFUeXBlLCBPcGVyYXRpb24sIFBhdGhJdGVtLCBSZXNwb25zZSwgU2NoZW1hLCBUYWcKfTsKdXNlIEdvbGRTcGVjRGlnaXRhbFxPYmplY3RPcmllbnRlZE9BU1xPcGVuQXBpOwoKLy8gQ3JlYXRlIGEgdGFnIGZvciBhbGwgdGhlIHVzZXIgZW5kcG9pbnRzLgokdXNlcnNUYWcgPSBUYWc6OmNyZWF0ZSgpCiAgICAtPm5hbWUoJ1VzZXJzJykKICAgIC0+ZGVzY3JpcHRpb24oJ0FsbCB1c2VyIHJlbGF0ZWQgZW5kcG9pbnRzJyk7CgovLyBDcmVhdGUgdGhlIGluZm8gc2VjdGlvbi4KJGluZm8gPSBJbmZvOjpjcmVhdGUoKQogICAgLT50aXRsZSgnQVBJIFNwZWNpZmljYXRpb24nKQogICAgLT52ZXJzaW9uKCd2MScpCiAgICAtPmRlc2NyaXB0aW9uKCdGb3IgdXNpbmcgdGhlIEV4YW1wbGUgQXBwIEFQSScpOwogICAgCi8vIENyZWF0ZSB0aGUgdXNlciBzY2hlbWEuCiR1c2VyU2NoZW1hID0gU2NoZW1hOjpvYmplY3QoKQogICAgLT5wcm9wZXJ0aWVzKAogICAgICAgIFNjaGVtYTo6c3RyaW5nKCdpZCcpLT5mb3JtYXQoU2NoZW1hOjpGT1JNQVRfVVVJRCksCiAgICAgICAgU2NoZW1hOjpzdHJpbmcoJ25hbWUnKSwKICAgICAgICBTY2hlbWE6OmludGVnZXIoJ2FnZScpLT5leGFtcGxlKDIzKSwKICAgICAgICBTY2hlbWE6OnN0cmluZygnY3JlYXRlZF9hdCcpLT5mb3JtYXQoU2NoZW1hOjpGT1JNQVRfREFURV9USU1FKQogICAgKTsKICAgIAovLyBDcmVhdGUgdGhlIHVzZXIgcmVzcG9uc2UuCiR1c2VyUmVzcG9uc2UgPSBSZXNwb25zZTo6Y3JlYXRlKCkKICAgIC0+c3RhdHVzQ29kZSgyMDApCiAgICAtPmRlc2NyaXB0aW9uKCdPSycpCiAgICAtPmNvbnRlbnQoCiAgICAgICAgTWVkaWFUeXBlOjpqc29uKCktPnNjaGVtYSgkdXNlclNjaGVtYSkKICAgICk7CiAgICAKLy8gQ3JlYXRlIHRoZSBvcGVyYXRpb24gZm9yIHRoZSByb3V0ZSAoaS5lLiBHRVQsIFBPU1QsIGV0Yy4pLgokc2hvd1VzZXIgPSBPcGVyYXRpb246OmdldCgpCiAgICAtPnJlc3BvbnNlcygkdXNlclJlc3BvbnNlKQogICAgLT50YWdzKCR1c2Vyc1RhZykKICAgIC0+c3VtbWFyeSgnR2V0IGFuIGluZGl2aWR1YWwgdXNlcicpCiAgICAtPm9wZXJhdGlvbklkKCd1c2Vycy5zaG93Jyk7CiAgICAKLy8gRGVmaW5lIHRoZSAvdXNlcnMgcGF0aCBhbG9uZyB3aXRoIHRoZSBzdXBwb3J0ZWQgb3BlcmF0aW9ucy4KJHVzZXJzUGF0aCA9IFBhdGhJdGVtOjpjcmVhdGUoKQogICAgLT5yb3V0ZSgnL3VzZXJzJykKICAgIC0+b3BlcmF0aW9ucygkc2hvd1VzZXIpOwogICAgCi8vIENyZWF0ZSB0aGUgbWFpbiBPcGVuQVBJIG9iamVjdCBjb21wb3NlZCBvZmYgZXZlcnl0aGluZyBjcmVhdGVkIGFib3ZlLgokb3BlbkFwaSA9IE9wZW5BcGk6OmNyZWF0ZSgpCiAgICAtPm9wZW5hcGkoT3BlbkFwaTo6T1BFTkFQSV8zXzBfMikKICAgIC0+aW5mbygkaW5mbykKICAgIC0+cGF0aHMoJHVzZXJzUGF0aCkKICAgIC0+dGFncygkdXNlcnNUYWcpOwogICAgCmhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJyk7CmVjaG8gJG9wZW5BcGktPnRvSnNvbigpOwpgYGAKCiMjIyBZQU1MIG91dHB1dAoKVXNpbmcgdGhlIHNhbWUgY29kZSBhYm92ZSB3aWxsIG91dHB1dCB0aGUgZm9sbG93aW5nIFlBTUw6Cgo+IEluIHRoaXMgZXhhbXBsZSwgdGhlIFlBTUwgbWF5IHNlZW0gc2ltcGxlciB0byBsb29rIGF0LCBob3dldmVyIG9uY2UgdGhlIHNwZWMKc3RhcnRzIHRvIGluY3JlYXNlIGluIHNpemUgLSB0aGUgYWJpbGl0eSB0byByZXVzZSBvYmplY3RzIGFuZCBzcGxpdCB0aGVtIGludG8Kc2VwYXJhdGUgZmlsZXMgZWFzaWx5IHdpbGwgYmUgYSBtYXNzaXZlIGhlbHAuCgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4yCmluZm86CiAgdGl0bGU6IEFQSSBTcGVjaWZpY2F0aW9uCiAgZGVzY3JpcHRpb246IEZvciB1c2luZyB0aGUgRXhhbXBsZSBBcHAgQVBJCiAgdmVyc2lvbjogdjEKcGF0aHM6CiAgIi91c2VycyI6CiAgICBnZXQ6CiAgICAgIHRhZ3M6CiAgICAgIC0gVXNlcnMKICAgICAgc3VtbWFyeTogR2V0IGFuIGluZGl2aWR1YWwgdXNlcgogICAgICBvcGVyYXRpb25JZDogdXNlcnMuc2hvdwogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogT0sKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgICBpZDoKICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IHV1aWQKICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgbmFtZToKICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgYWdlOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgICAgICAgICAgICBleGFtcGxlOiAyMwogICAgICAgICAgICAgICAgICBjcmVhdGVkX2F0OgogICAgICAgICAgICAgICAgICAgIGZvcm1hdDogZGF0ZS10aW1lCiAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCnRhZ3M6Ci0gbmFtZTogVXNlcnMKICBkZXNjcmlwdGlvbjogQWxsIHVzZXIgcmVsYXRlZCBlbmRwb2ludHMKYGBgCgojIyMgT3V0cHV0dGluZyBhcyBKU09OIG9yIFlBTUwKCkJ1aWx0IGluIG91dHB1dCB0byBZQU1MIGhhcyBiZWVuIG9taXR0ZWQgb24gcHVycG9zZSB0byBrZWVwIHRoaXMgcGFja2FnZQpkZXBlbmRlbmN5IGZyZWUuIEhvd2V2ZXIsIHlvdSBjYW4gZWFzaWx5IGNvbnZlcnQgdGhlIGFycmF5IHRvIGEgWUFNTCBzdHJpbmcgCnVzaW5nIHNldmVyYWwgb3BlbiBzb3VyY2UgcGFja2FnZXMuIFNlZSBiZWxvdyBmb3IgYW4gZXhhbXBsZSBvZiAgb3V0cHV0dGluZyB0byAKYm90aCBKU09OIGFuZCBZQU1MOgoKYGBgcGhwCnVzZSBHb2xkU3BlY0RpZ2l0YWxcT2JqZWN0T3JpZW50ZWRPQVNcT3BlbkFwaTsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XFlhbWxcWWFtbDsKCiRvcGVuQXBpID0gT3BlbkFwaTo6Y3JlYXRlKCk7CgokanNvbiA9ICRvcGVuQXBpLT50b0pzb24oKTsKJGFycmF5ID0gJG9wZW5BcGktPnRvQXJyYXkoKTsKJHlhbWwgPSBZYW1sOjpkdW1wKCRhcnJheSk7CmBgYAoKIyMgR3VpZGFuY2UKCklmIHlvdSB3YW50IHRvIGxlYXJuIG1vcmUgYWJvdXQgdGhlIE9wZW5BUEkgc2NoZW1hLCB0aGVuIGhhdmUgYSBsb29rIGF0IHRoZSAKb2ZmaWNpYWwgW09wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjIubWQpLgoKQWx0ZXJuYXRpdmVseSwgaWYgeW91IHdvdWxkIGxpa2UgYSBxdWljayByZWZlcmVuY2UsIHRoZW4gY2hlY2sgb3V0IHRoZSAKW09wZW5BUEkgTWFwXShodHRwczovL29wZW5hcGktbWFwLmFwaWhhbmR5bWFuLmlvLz92ZXJzaW9uPTMuMCkgcHJvamVjdCBjcmVhdGVkIApieSBbQXJuYXVkIExhdXJldF0oaHR0cDovL2FwaWhhbmR5bWFuLmlvLykuCgpZb3UgY2FuIHVzZSB0aGlzIGludGVyYWN0aXZlIHRvb2wgdG8gZmlndXJlIG91dCB3aGF0IG9iamVjdHMgZ28gd2hlcmUgYW5kIGhvdwp0aGV5IHJlbGF0ZSB0byBvbmUgYW5vdGhlci4KCiMjIFVzYWdlCgojIyMgU2V0dGluZyBhbmQgdW5zZXR0aW5nIHByb3BlcnRpZXMKCkVhY2ggb2JqZWN0IGhhcyBzZXR0ZXIgbWV0aG9kcyBmb3IgaXQncyBzdXBwb3J0ZWQgcHJvcGVydGllcy4gTW9zdCBvZiB0aGVzZSAKbWV0aG9kcyBhbGxvdyBgbnVsbGAgdmFsdWVzIHdoaWNoIHdpbGwgbmVlZCB0byBiZSBleHBsaWNpdGx5IHBhc3NlZCAoc2VlIHRoZSAKbmV4dCBleGFtcGxlIGZvciBob3cgdG8gdW5zZXQgdXNpbmcgdmFyaWFkaWMgc2V0dGVyIG1ldGhvZHMpLiBUaGlzIHdpbGwgaGF2ZSB0aGUgCmVmZmVjdCBvZiB1bnNldHRpbmcgdGhlIHByb3BlcnR5OgoKYGBgcGhwCiRpbmZvID0gSW5mbzo6Y3JlYXRlKCkKICAgIC0+dGl0bGUoJ0V4YW1wbGUgQVBJJyk7Cgokb3BlbkFwaSA9IE9wZW5BcGk6OmNyZWF0ZSgpCiAgICAtPmluZm8oJGluZm8pOwplY2hvICRvcGVuQXBpLT50b0pzb24oKTsgLy8gJ3siaW5mbyI6IHsidGl0bGUiOiAiRXhhbXBsZSBBUEkifX0nCgokb3BlbkFwaSA9ICRvcGVuQXBpLT5pbmZvKG51bGwpOwplY2hvICRvcGVuQXBpLT50b0pzb24oKTsgLy8gJ3t9JwpgYGAKCkZvciB2YXJpYWRpYyBzZXR0ZXIgbWV0aG9kcywgaWYgeW91IGNhbGwgdGhlIG1ldGhvZCBhbmQgZG9uJ3Qgc3VwcGx5IGFueQpwYXJhbWV0ZXJzLCB0aGVuIHRoaXMgd2lsbCBoYXZlIHRoZSBlZmZlY3Qgb2YgdW5zZXR0aW5nIHRoZSBwcm9wZXJ0eToKCmBgYHBocAokcGF0aCA9IFBhdGhJdGVtOjpjcmVhdGUoKQogICAgLT5yb3V0ZSgnL3VzZXJzJyk7Cgokb3BlbkFwaSA9IE9wZW5BcGk6OmNyZWF0ZSgpCiAgICAtPnBhdGhzKCRwYXRoKTsKZWNobyAkb3BlbkFwaS0+dG9Kc29uKCk7IC8vICd7InBhdGhzIjogeyIvdXNlcnMiOiBbXX19JwoKJG9wZW5BcGkgPSAkb3BlbkFwaS0+cGF0aHMoKTsKZWNobyAkb3BlbkFwaS0+dG9Kc29uKCk7IC8vICd7fScKYGBgCgojIyMgUmV0cmlldmluZyBwcm9wZXJ0aWVzCgpZb3UgY2FuIGVhc2lseSByZXRyaWV2ZSBhIHByb3BlcnR5IHVzaW5nIGEgbWFnaWMgZ2V0dGVyLiBUaGVzZSBoYXZlIGJlZW4KaW1wbGVtZW50ZWQgZm9yIGFsbCBwcm9wZXJ0aWVzIGZvciBldmVyeSBvYmplY3QuIERvY0Jsb2NrcyBoYXZlIGJlZW4gcHJvdmlkZWQKdG8gZ2l2ZSBiZXR0ZXIgYXV0by1jb21wbGV0aW9uIGluIElERXM6CgpgYGBwaHAKJGluZm8gPSBJbmZvOjpjcmVhdGUoKS0+dGl0bGUoJ0V4YW1wbGUgQVBJJyk7CgplY2hvICRpbmZvLT50aXRsZTsgLy8gJ0V4YW1wbGUgQVBJJwpgYGAKCiMjIyBPYmplY3QgSUQKCkV2ZXJ5IG9iamVjdCBoYXMgYW4gb3B0aW9uYWwgYCRvYmplY3RJZGAgcHJvcGVydHkgd2hpY2ggaXMgYSBgc3RyaW5nYCBhbmQgY2FuIAplaXRoZXIgYmUgc2V0IGluIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBvciB0aGUgcHJlZmVycmVkIGBjcmVhdGUoKWAgbWV0aG9kLiBUaGlzIApwcm9wZXJ0eSBpcyB1c2VkIHdoZW4gYSBwYXJlbnQgb2JqZWN0IG5lZWRzIHRvIHVzZSBhIG5hbWUgZm9yIHRoZSBjaGlsZHJlbi4KCkFuIGV4YW1wbGUgb2YgdGhpcyBpbiB1c2UgaXMgd2hlbiBhIHNjaGVtYSBvYmplY3QgaXMgY29tcG9zZWQgb2Ygb3RoZXIgc2NoZW1hCnByb3BlcnRpZXM6CgpgYGBwaHAKJHNjaGVtYSA9IFNjaGVtYTo6Y3JlYXRlKCkKICAgIC0+dHlwZShTY2hlbWE6OlRZUEVfT0JKRUNUKQogICAgLT5wcm9wZXJ0aWVzKAogICAgICAgIFNjaGVtYTo6Y3JlYXRlKCd1c2VybmFtZScpLT50eXBlKFNjaGVtYTo6VFlQRV9TVFJJTkcpLAogICAgICAgIFNjaGVtYTo6Y3JlYXRlKCdhZ2UnKS0+dHlwZShTY2hlbWE6OlRZUEVfSU5URUdFUikKICAgICk7CiAgICAKZWNobyAkc2NoZW1hLT50b0pzb24oKTsKLyogCnsKICAidHlwZSI6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIjogewogICAgInVzZXJuYW1lIjogewogICAgICAidHlwZSI6ICJzdHJpbmciCiAgICB9LAogICAgImFnZSI6IHsKICAgICAgInR5cGUiOiAiaW50ZWdlciIKICAgIH0KICB9Cn0gCiovCmBgYCAKCklmIGFuIG9iamVjdCBjb250YWlucyBhbnkgaGVscGVyIGNyZWF0aW9uIG1ldGhvZHMsIHRoZW4gdGhlc2UgbWV0aG9kcyBhbHNvIGFsbG93CnlvdSB0byBzcGVjaWZ5IHRoZSBgJG9iamVjdElkYCBwcm9wZXJ0eSBhcyBhIHBhcmFtZXRlci4gVGhlIGNvZGUgc2FtcGxlIGJlbG93IGlzCmZ1bmN0aW9uYWxseSBpZGVudGljYWwgdG8gdGhlIG9uZSBhYm92ZToKCmBgYHBocAokc2NoZW1hID0gU2NoZW1hOjpvYmplY3QoKQogICAgLT5wcm9wZXJ0aWVzKAogICAgICAgIFNjaGVtYTo6c3RyaW5nKCd1c2VybmFtZScpLAogICAgICAgIFNjaGVtYTo6aW50ZWdlcignYWdlJykKICAgICk7CiAgICAKZWNobyAkc2NoZW1hLT50b0pzb24oKTsKLyogCnsKICAidHlwZSI6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIjogewogICAgInVzZXJuYW1lIjogewogICAgICAidHlwZSI6ICJzdHJpbmciCiAgICB9LAogICAgImFnZSI6IHsKICAgICAgInR5cGUiOiAiaW50ZWdlciIKICAgIH0KICB9Cn0gCiovCmBgYCAKCiMjIyAkcmVmCgpUaGUgdXNlIG9mIGAkcmVmYCBoYXMgYmVlbiBhcHBsaWVkIHRvIGV2ZXJ5IHNpbmdsZSBvYmplY3QgdG8gdXNlIGFzIHlvdSB3aXNoLgpZb3UgbWF5IHN1YnN0aXR1dGUgYW55IG9iamVjdCBmb3IgYSBgJHJlZmAgYnkgaW52b2tpbmcgdGhlIGByZWYoKWAgc3RhdGljIG1ldGhvZCAKb24gdGhlIG9iamVjdCBjbGFzczogCgpgYGBwaHAKJHNjaGVtYSA9IEFsbE9mOjpjcmVhdGUoKQogICAgLT5zY2hlbWFzKAogICAgICAgIFNjaGVtYTo6cmVmKCcjL2NvbXBvbmVudHMvc2NoZW1hcy9FeGFtcGxlU2NoZW1hJykKICAgICk7CiAgICAKZWNobyAkc2NoZW1hLT50b0pzb24oKTsKLyoKewogICJhbGxPZiI6IFsKICAgIFsiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9FeGFtcGxlU2NoZW1hIl0KICBdCn0KKi8KYGBgCgojIyMgU3BlY2lmaWNhdGlvbiBleHRlbnNpb25zCgpZb3UgY2FuIGFkZCBbc3BlY2lmaWNhdGlvbiBleHRlbnNpb25zXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMi5tZCNzcGVjaWZpY2F0aW9uRXh0ZW5zaW9ucykKdG8gYWxsIG9iamVjdHM6CgpgYGBwaHAKJHNjaGVtYSA9IFNjaGVtYTo6Y3JlYXRlKCkKICAgIC0+eCgnZm9vJywgJ2JhcicpCiAgICAtPngoJ2l0ZW1zJywgU2NoZW1hOjphcnJheSgpLT5pdGVtcyhTY2hlbWE6OnN0cmluZygpKSk7CiAgICAKZWNobyAkc2NoZW1hLT50b0pzb24oKTsKLyoKewogICJ4LWZvbyI6ICJiYXIiLAogICJ4LWl0ZW1zIjogewogICAgInR5cGUiOiAiYXJyYXkiLAogICAgIml0ZW1zIjogewogICAgICAidHlwZSI6ICJzdHJpbmciCiAgICB9CiAgfQp9CiovCgplY2hvICRzY2hlbWEtPnsneC1mb28nfTsgLy8gJ2JhcicKYGBgCgpZb3UgY2FuIGFsc28gdW5zZXQgc3BlY2lmaWNhdGlvbiBleHRlbnNpb25zIGJ5IGludm9raW5nIHRoZSBgeCgpYCBtZXRob2QgYW5kCm9ubHkgcHJvdmlkaW5nIHRoZSBrZXk6CgpgYGBwaHAKJHNjaGVtYSA9IFNjaGVtYTo6Y3JlYXRlKCkKICAgIC0+eCgnZm9vJywgJ2JhcicpCiAgICAtPngoJ2l0ZW1zJywgU2NoZW1hOjphcnJheSgpLT5pdGVtcyhTY2hlbWE6OnN0cmluZygpKSk7Cgokc2NoZW1hID0gJHNjaGVtYS0+eCgnZm9vJyk7CiAgICAKZWNobyAkc2NoZW1hLT50b0pzb24oKTsKLyoKewogICJ4LWl0ZW1zIjogewogICAgInR5cGUiOiAiYXJyYXkiLAogICAgIml0ZW1zIjogewogICAgICAidHlwZSI6ICJzdHJpbmciCiAgICB9CiAgfQp9CiovCmBgYAoKVG8gcmV0cmlldmUgYW4gYXJyYXkgb2YgYWxsIHRoZSBzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbnMgeW91IGNhbiBjYWxsIHRoZSBgJHhgCnByb3BlcnR5OgoKYGBgcGhwCiRzY2hlbWEgPSBTY2hlbWE6OmNyZWF0ZSgpCiAgICAtPngoJ2ZvbycsICdiYXInKQogICAgLT54KCdpdGVtcycsIFNjaGVtYTo6YXJyYXkoKS0+aXRlbXMoU2NoZW1hOjpzdHJpbmcoKSkpOwoKZWNobyBqc29uX2VuY29kZSgkc2NoZW1hLT54KTsKLyoKewogICJ4LWZvbyI6ICJiYXIiLAogICJ4LWl0ZW1zIjogewogICAgInR5cGUiOiAiYXJyYXkiLAogICAgIml0ZW1zIjogewogICAgICAidHlwZSI6ICJzdHJpbmciCiAgICB9CiAgfQp9CiovCmBgYAoKIyMjIFZhbGlkYXRpb24KCkluIG9yZGVyIHRvIHBlcmZvcm0gc2NoZW1hIHZhbGlkYXRpb24geW91IG11c3QgZmlyc3QgaW5zdGFsbCB0aGUKYGp1c3RpbnJhaW5ib3cvanNvbi1zY2hlbWFgIHBhY2thZ2U6CgpgYGBiYXNoCmNvbXBvc2VyIHJlcXVpcmUganVzdGlucmFpbmJvdy9qc29uLXNjaGVtYTpeNS4yCmBgYAoKT25jZSBpbnN0YWxsZWQsIHlvdSBtYXkgbm93IG1ha2UgdXNlIG9mIHRoZSBgdmFsaWRhdGUoKWAgbWV0aG9kIG9uIHRoZSBgT3BlbkFwaWAKb2JqZWN0OgoKYGBgcGhwCiRvcGVuQXBpID0gT3BlbkFwaTo6Y3JlYXRlKCk7CiRvcGVuQXBpLT52YWxpZGF0ZSgpOwpgYGAKCl9JZiB5b3UgaGF2ZW4ndCBpbnN0YWxsZWQgdGhlIGBqdXN0aW5yYWluYm93L2pzb24tc2NoZW1hYCBwYWNrYWdlIGFuZCBhdHRlbXB0IHRvIAp1c2UgdGhlIGB2YWxpZGF0ZSgpYCBtZXRob2QsIHRoZW4gYSBgUnVudGltZUV4Y2VwdGlvbmAgd2lsbCBiZSB0aHJvd24uXwoKSWYgdmFsaWRhdGlvbiBmYWlscyBmb3IgdGhlIHNjaGVtYSwgdGhlbiBhIApgR29sZFNwZWNEaWdpdGFsXE9iamVjdE9yaWVudGVkT0FTXEV4Y2VwdGlvbnNcVmFsaWRhdGlvbkV4Y2VwdGlvbmAgd2lsbCBiZSAKdGhyb3duLiBZb3UgY2FuIHVzZSB0aGUgYGdldEVycm9ycygpYCBtZXRob2Qgb24gdGhpcyBleGNlcHRpb24gdG8gcmV0cmlldmUgYWxsCm9mIHRoZSB2YWxpZGF0aW9uIGVycm9ycy4KCiMjIFJ1bm5pbmcgdGhlIHRlc3RzCgpUbyBydW4gdGhlIHRlc3Qgc3VpdGUgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKCmBgYGJhc2gKIyBUbyBydW4gYm90aCBzdHlsZSBhbmQgdW5pdCB0ZXN0cy4KY29tcG9zZXIgdGVzdAoKIyBUbyBydW4gb25seSBzdHlsZSB0ZXN0cy4KY29tcG9zZXIgdGVzdDpzdHlsZQoKIyBUbyBydW4gb25seSB1bml0IHRlc3RzLgpjb21wb3NlciB0ZXN0OnVuaXQKYGBgCgpJZiB5b3UgcmVjZWl2ZSBhbnkgZXJyb3JzIGZyb20gdGhlIHN0eWxlIHRlc3RzLCB5b3UgY2FuIGF1dG9tYXRpY2FsbHkgZml4IG1vc3QsCmlmIG5vdCBhbGwgb2YgdGhlIGlzc3VlcyB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYGJhc2gKY29tcG9zZXIgZml4OnN0eWxlCmBgYAoKIyMgQ29udHJpYnV0aW5nCgpQbGVhc2UgcmVhZCBbQ09OVFJJQlVUSU5HLm1kXShDT05UUklCVVRJTkcubWQpIGZvciBkZXRhaWxzIG9uIG91ciBjb2RlIG9mIApjb25kdWN0LCBhbmQgdGhlIHByb2Nlc3MgZm9yIHN1Ym1pdHRpbmcgcHVsbCByZXF1ZXN0cyB0byB1cy4KCiMjIFZlcnNpb25pbmcKCldlIHVzZSBbU2VtVmVyXShodHRwOi8vc2VtdmVyLm9yZy8pIGZvciB2ZXJzaW9uaW5nLiBGb3IgdGhlIHZlcnNpb25zIGF2YWlsYWJsZSwgCnNlZSB0aGUgW3RhZ3Mgb24gdGhpcyByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vZ29sZHNwZWNkaWdpdGFsL29vb2FzL3RhZ3MpLiAKCiMjIEF1dGhvcnMKCiogW0dvbGRTcGVjIERpZ2l0YWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb2xkc3BlY2RpZ2l0YWwpCgpTZWUgYWxzbyB0aGUgbGlzdCBvZiBbY29udHJpYnV0b3JzXShodHRwczovL2dpdGh1Yi5jb20vZ29sZHNwZWNkaWdpdGFsL29vb2FzL2NvbnRyaWJ1dG9ycykgCndobyBwYXJ0aWNpcGF0ZWQgaW4gdGhpcyBwcm9qZWN0LgoKIyMgTGljZW5zZQoKVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAtIHNlZSB0aGUgW0xJQ0VOU0UubWRdKExJQ0VOU0UubWQpIApmaWxlIGZvciBkZXRhaWxzLgo= readmeEtag: '"b4d5d56bfb406f0b47465e5ba6a2ab4341aad3e9"' readmeLastModified: Wed, 20 Jul 2022 09:57:04 GMT repositoryId: 150484399 description: >- An object oriented approach to generating OpenAPI specs, implemented in PHP. created: '2018-09-26T20:11:56Z' updated: '2025-11-23T05:30:36Z' language: PHP archived: false stars: 232 watchers: 7 forks: 25 owner: goldspecdigital logo: https://avatars.githubusercontent.com/u/31162012?v=4 license: MIT repoEtag: '"a1568657c4dbaf21a26310f3cf78af18829e271ef155e00dcbc00662aff6c003"' repoLastModified: Sun, 23 Nov 2025 05:30:36 GMT foundInMaster: true id: b572581c8e045165d5121ee9c5bc361e - source: https://openapi.tools/ name: OpenAPI3-Rust category: Parsers repository: https://github.com/adwhit/openapi3-rust language: Rust source_description: Rust serialization library for OpenAPI v3 v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJdjMKClNwZWM6IGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvT3BlbkFQSS5uZXh0L3ZlcnNpb25zLzMuMC5tZAo= readmeEtag: '"ce669f4ef3578a7762c5d175c06a9368bee7d84c"' readmeLastModified: Sun, 09 Dec 2018 15:37:14 GMT repositoryId: 97812110 description: Rust serialization library for OpenAPIv3 created: '2017-07-20T08:43:25Z' updated: '2024-04-22T10:18:12Z' language: Rust archived: true stars: 13 watchers: 1 forks: 4 owner: adwhit logo: https://avatars.githubusercontent.com/u/3189554?v=4 license: MIT repoEtag: '"dfdbb54d520ed1c9508c22b6fb0154f9ba5278ab6165a27890b49205733ca2bd"' repoLastModified: Mon, 22 Apr 2024 10:18:12 GMT foundInMaster: true id: 000be8d50bcd3022727597e652c33e7f - source: https://openapi.tools/ name: psx-api category: Parsers link: https://phpsx.org repository: https://github.com/apioo/psx-api language: PHP source_description: Parse and generate API specification formats v2: true v3: true repositoryMetadata: base64Readme: >- CiMgQVBJCgpUaGlzIGxpYnJhcnkgcHJvdmlkZXMgYW4gYXR0cmlidXRlIHBhcnNlciB0byBkeW5hbWljYWxseSBnZW5lcmF0ZSBhIFtUeXBlQVBJXShodHRwczovL3R5cGVhcGkub3JnLykgc3BlY2lmaWNhdGlvbgpmcm9tIGFueSBjb250cm9sbGVyIChjb2RlLWZpcnN0KS4gQmFzZWQgb24gdGhlIHNwZWNpZmljYXRpb24gaXQgaXMgdGhlbiBwb3NzaWJsZSB0byBnZW5lcmF0ZSBjbGllbnQgU0RLcyBvcgphbiBPcGVuQVBJIHNwZWNpZmljYXRpb24uCgpXZSBwcm92aWRlIGFsc28gYSBob3N0ZWQgdmVyc2lvbiBvZiB0aGlzIFtjb2RlIGdlbmVyYXRvcl0oaHR0cHM6Ly90eXBlYXBpLm9yZy9nZW5lcmF0b3IpLgpGb3IgbW9yZSBpbnRlZ3JhdGlvbiBvcHRpb25zIHlvdSBjYW4gYWxzbyB0YWtlIGEgbG9vayBhdCB0aGUgW1NES2dlbl0oaHR0cHM6Ly9zZGtnZW4uYXBwLykgcHJvamVjdAp3aGljaCBwcm92aWRlcyBhIENMSSBiaW5hcnkgb3IgR2l0SHViIGFjdGlvbiB0byBpbnRlZ3JhdGUgdGhlIGNvZGUgZ2VuZXJhdG9yLgoKIyMgVXNhZ2UKClRoZSByb290IG1vZGVsIG9iamVjdCBpcyBjYWxsZWQgYSBgU3BlY2lmaWNhdGlvbmAgd2hpY2ggY29udGFpbnMgYE9wZXJhdGlvbnNgIGFuZCBgRGVmaW5pdGlvbnNgLiBFYWNoIG9wZXJhdGlvbgptYXBzIHRvIGEgc3BlY2lmaWMgUkVTVCBBUEkgZW5kcG9pbnQgYW5kIHRoZSBkZWZpbml0aW9ucyByZXByZXNlbnQgdGhlIHNjaGVtYXMgdG8gZGVzY3JpYmUgdGhlIEpTT04gcmVxdWVzdCBvciByZXNwb25zZQpwYXlsb2FkLgoKIyMjIEZyYW1ld29yawoKWW91IGNhbiB1c2UgUEhQIGF0dHJpYnV0ZXMgdG8gZGVzY3JpYmUgdGhlIHN0cnVjdHVyZSBvZiB5b3VyIGVuZHBvaW50cy4gWW91IGNhbiB0aGVuIHVzZSB0aGUgYXR0cmlidXRlIHBhcnNlciAoYFBTWFxBcGlcUGFyc2VyXEF0dHJpYnV0ZWApCnRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBzcGVjaWZpY2F0aW9uIGZvciB5b3VyIGNvbnRyb2xsZXIuIEEgY29udHJvbGxlciBjbGFzcyBjb3VsZCB0aGVuIGxvb2sgbGlrZToKCmBgYHBocAo8P3BocAoKY2xhc3MgTXlDb250cm9sbGVyCnsKICAgICNbR2V0XQogICAgI1tQYXRoKCcvbXkvZW5kcG9pbnQvOmlkJyldCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TW9kZWwoI1tQYXJhbV0gaW50ICRpZCwgI1tRdWVyeV0gaW50ICR5ZWFyKTogXE15XFJlc3BvbnNlXE1vZGVsCiAgICB7CiAgICAgICAgLy8gQFRPRE8gaW1wbGVtZW50CiAgICB9CiAgICAKICAgICNbUG9zdF0KICAgICNbUGF0aCgnL215L2VuZHBvaW50JyldCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5zZXJ0TW9kZWwoI1tCb2R5XSBcTXlcUmVxdWVzdFxNb2RlbCAkbW9kZWwpOiBcTXlcUmVzcG9uc2VcTW9kZWwKICAgIHsKICAgICAgICAvLyBAVE9ETyBpbXBsZW1lbnQKICAgIH0KfQoKYGBgCgpUaGlzIHdvdWxkIGJlIGVub3VnaCBmb3IgdGhlIEFQSSBjb21wb25lbnQgdG8gZ2VuZXJhdGUgZWl0aGVyIGFuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBvciBhIGNsaWVudCBTREsuCk5vdGUgdGhpcyBsaWJyYXJ5IG9ubHkgbmVlZHMgdGhlIG1ldGEgaW5mb3JtYXRpb24sIGlmIHlvdSBjYW4gZ2V0IHRob3NlIG1ldGEgaW5mb3JtYXRpb24gYXQgeW91ciBmcmFtZXdvcmsgaW4gYW5vdGhlcgp3YXkgeW91IGNhbiBhbHNvIGltcGxlbWVudCBhIGN1c3RvbSBgUGFyc2VySW50ZXJmYWNlYC4KCiMjIyBTdGFuZGFsb25lCgpCZXNpZGUgdGhlIGZyYW1ld29yayBpbnRlZ3JhdGlvbiB5b3UgY2FuIHVzZSB0aGlzIGNvbXBvbmVudCBhbHNvIHRvIHNpbXBseSBwYXJzZSBleGlzdGluZyBUeXBlQVBJIHNwZWNpZmljYXRpb24gYW5kCmdlbmVyYXRlIHNwZWNpZmljIG91dHB1dC4gVGhlIGZvbGxvd2luZyBpcyBhIHNpbXBsZSBleGFtcGxlIGhvdyB0byB1c2UgdGhlIFBIUCBBUEkgYW5kIGhvdyB0byBnZW5lcmF0ZSBjb2RlLgoKYGBgcGhwCjw/cGhwCgovLyB1c2UgdGhlIEFQSSBtYW5hZ2VyIHRvIG9idGFpbiBhIHNwZWNpZmljYXRpb24gZnJvbSBkaWZmZXJlbnQgc291cmNlcwokbWFuYWdlciA9IG5ldyBcUFNYXEFwaVxBcGlNYW5hZ2VyKG5ldyBcUFNYXFNjaGVtYVxTY2hlbWFNYW5hZ2VyKCkpOwoKLy8gcmVhZHMgdGhlIFR5cGVBUEkgc3BlY2lmaWNhdGlvbiBhbmQgZ2VuZXJhdGVzIGEgc3BlY2lmaWNhdGlvbgokc3BlY2lmaWNhdGlvbiA9ICRtYW5hZ2VyLT5nZXRBcGkoJy4vdHlwZWFwaS5qc29uJyk7CgovLyBjb250YWlucyBhbGwgc2NoZW1hIHR5cGUgZGVmaW5pdGlvbnMKJGRlZmluaXRpb25zID0gJHNwZWNpZmljYXRpb24tPmdldERlZmluaXRpb25zKCk7CgovLyByZXR1cm5zIHRoZSByZXNvdXJjZSBmb28gZnJvbSB0aGUgc3BlY2lmaWNhdGlvbgokb3BlcmF0aW9uID0gJHNwZWNpZmljYXRpb24tPmdldE9wZXJhdGlvbnMoKS0+Z2V0KCdteS5vcGVyYXRpb24nKTsKCi8vIHJldHVybnMgYWxsIGF2YWlsYWJsZSBhcmd1bWVudHMKJG9wZXJhdGlvbi0+Z2V0QXJndW1lbnRzKCk7CgovLyByZXR1cm5zIHRoZSByZXR1cm4gdHlwZQokb3BlcmF0aW9uLT5nZXRSZXR1cm4oKTsKCi8vIHJldHVybnMgYWxsIGV4Y2VwdGlvbnMgd2hpY2ggYXJlIGRlc2NyaWJlZAokb3BlcmF0aW9uLT5nZXRUaHJvd3MoKTsKCi8vIHJldHVybnMgdGhlIGFzc2lnbmVkIEhUVFAgbWV0aG9kCiRvcGVyYXRpb24tPmdldE1ldGhvZCgpOwoKLy8gcmV0dXJucyB0aGUgYXNzaWduZWQgSFRUUCBwYXRoCiRvcGVyYXRpb24tPmdldFBhdGgoKTsKCi8vIGNyZWF0ZXMgYSBQSFAgY2xpZW50IHdoaWNoIGNvbnN1bWVzIHRoZSBkZWZpbmVkIG9wZXJhdGlvbnMKJHJlZ2lzdHJ5ID0gXFBTWFxBcGlcR2VuZXJhdG9yRmFjdG9yeTo6ZnJvbUxvY2FsKCktPmZhY3RvcnkoKTsKJGdlbmVyYXRvciA9ICRyZWdpc3RyeS0+Z2V0R2VuZXJhdG9yKFxQU1hcQXBpXFJlcG9zaXRvcnlcTG9jYWxSZXBvc2l0b3J5OjpDTElFTlRfUEhQKQoKJHNvdXJjZSA9ICRnZW5lcmF0b3ItPmdlbmVyYXRlKCRyZXNvdXJjZSk7CgpgYGAK readmeEtag: '"772703306d3dceaf7bbc89fff64bcff0f5edad2f"' readmeLastModified: Fri, 11 Oct 2024 18:49:31 GMT repositoryId: 55149439 description: TypeAPI parser and SDK code generator created: '2016-03-31T12:39:05Z' updated: '2025-12-13T17:30:03Z' language: PHP archived: false stars: 36 watchers: 1 forks: 9 owner: apioo logo: https://avatars.githubusercontent.com/u/18172950?v=4 license: Apache-2.0 repoEtag: '"e91c25f35b76b7078696572153f2e8255fcce63b27128bd9035ba0ec997fcde9"' repoLastModified: Sat, 13 Dec 2025 17:30:03 GMT foundInMaster: true id: ee32e280cf10ca5103c9b9e144021b91 - source: https://openapi.tools/ name: Microsoft/OpenAPI.NET category: Parsers repository: https://github.com/microsoft/openapi.net language: .NET source_description: >- C# based parser with OpenAPI Description validation and migration support from V2 v2: true v3: true repositoryMetadata: base64Readme: >- PCEtLSB1c2luZyB0aGUgcmF3IGltYWdlIFVSTCBzbyBpdCBkaXNwbGF5cyBjb3JyZWN0bHkgb24gbnVnZXQub3JnIC0tPgohW0NhdGVnb3J5IG92ZXJ2aWV3IHNjcmVlbnNob3RdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9taWNyb3NvZnQvT3BlbkFQSS5ORVQvbWFpbi9kb2NzL2ltYWdlcy9vYWluZXQucG5nICJNaWNyb3NvZnQgKyBPcGVuQVBJID0gTG92ZSIpCgojIE9wZW5BUEkuTkVUCgp8UGFja2FnZXxOdWdldHwKfC0tfC0tfAp8TW9kZWxzIGFuZCBXcml0ZXJzfFshW251Z2V0XShodHRwczovL2ltZy5zaGllbGRzLmlvL251Z2V0L3YvTWljcm9zb2Z0Lk9wZW5BcGkuc3ZnKV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5PcGVuQXBpLykgfAp8WWFtbFJlYWRlciB8IFshW251Z2V0XShodHRwczovL2ltZy5zaGllbGRzLmlvL251Z2V0L3YvTWljcm9zb2Z0Lk9wZW5BcGkuWWFtbFJlYWRlci5zdmcpXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lk9wZW5BcGkuWWFtbFJlYWRlci8pIHwKfEhpZGl8WyFbbnVnZXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvdi9NaWNyb3NvZnQuT3BlbkFwaS5IaWRpLnN2ZyldKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuT3BlbkFwaS5IaWRpLykKClRoZSAqKk9wZW5BUEkuTkVUKiogU0RLIGNvbnRhaW5zIGEgdXNlZnVsIG9iamVjdCBtb2RlbCBmb3IgT3BlbkFQSSBkb2N1bWVudHMgaW4gLk5FVCBhbG9uZyB3aXRoIGNvbW1vbiBzZXJpYWxpemVycyB0byBleHRyYWN0IHJhdyBPcGVuQVBJIEpTT04gYW5kIFlBTUwgZG9jdW1lbnRzIGZyb20gdGhlIG1vZGVsLgoKKipTZWUgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGFuZCBpdHMgaGlzdG9yeSBoZXJlOiA8YSBocmVmPSJodHRwczovL3d3dy5vcGVuYXBpcy5vcmciPk9wZW5BUEkgSW5pdGlhdGl2ZTwvYT4qKgoKUHJvamVjdCBPYmplY3RpdmVzOgoKLSBQcm92aWRlIGEgc2luZ2xlIHNoYXJlZCBvYmplY3QgbW9kZWwgaW4gLk5FVCBmb3IgT3BlbkFQSSBkZXNjcmlwdGlvbnMuCi0gSW5jbHVkZSB0aGUgbW9zdCBwcmltaXRpdmUgUmVhZGVyIGZvciBpbmdlc3RpbmcgT3BlbkFQSSBKU09OIGFuZCBZQU1MIGRvY3VtZW50cyBpbiBib3RoIFYyIGFuZCBWMyBmb3JtYXRzLgotIFByb3ZpZGUgT3BlbkFQSSBkZXNjcmlwdGlvbiB3cml0ZXJzIGZvciBib3RoIFYyIGFuZCBWMyBzcGVjaWZpY2F0aW9uIGZvcm1hdHMuCi0gRW5hYmxlIGRldmVsb3BlcnMgdG8gY3JlYXRlIFJlYWRlcnMgdGhhdCB0cmFuc2xhdGUgZGlmZmVyZW50IGRhdGEgZm9ybWF0cyBpbnRvIE9wZW5BUEkgZGVzY3JpcHRpb25zLgoKIyBJbnN0YWxsYXRpb24KCi0gSW5zdGFsbCBjb3JlIE51Z2V0IHBhY2thZ2UgWyoqTWljcm9zb2Z0Lk9wZW5BcGkqKl0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5PcGVuQXBpKQotIEluc3RhbGwgWWFtbCBSZWFkZXIgTnVnZXQgcGFja2FnZSBbKipNaWNyb3NvZnQuT3BlbkFwaS5ZYW1sUmVhZGVyKipdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuT3BlbkFwaS5ZYW1sUmVhZGVyKQoKPiBOb3RlOiB3ZSBqdXN0IHJlbGVhc2VkIGEgbmV3IG1ham9yIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIGJyaW5ncyBzdXBwb3J0IGZvciBPcGVuQVBJIDMuMiEKPiBZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCB0aGUgY2hhbmdlcyBvZiB0aGlzIHVwY29taW5nIHZlcnNpb24gW2luIHRoZSB1cGdyYWRlIGd1aWRlXSguL2RvY3MvdXBncmFkZS1ndWlkZS0zLm1kKS4KCiMgUHJvY2Vzc29ycwpUaGUgT3BlbkFQSS5ORVQgcHJvamVjdCBob2xkcyB0aGUgYmFzZSBvYmplY3QgbW9kZWwgZm9yIHJlcHJlc2VudGluZyBPcGVuQVBJIGRvY3VtZW50cyBhcyAuTkVUIG9iamVjdHMuIFNvbWUgZGV2ZWxvcGVycyBoYXZlIGZvdW5kIHRoZSBuZWVkIHRvIHdyaXRlIHByb2Nlc3NvcnMgdGhhdCBjb252ZXJ0IG90aGVyIGRhdGEgZm9ybWF0cyBpbnRvIHRoaXMgT3BlbkFQSS5ORVQgb2JqZWN0IG1vZGVsLiBXZSdkIGxpa2UgdG8gY3VyYXRlIHRoYXQgbGlzdCBvZiBwcm9jZXNzb3JzIGluIHRoaXMgc2VjdGlvbiBvZiB0aGUgcmVhZG1lLiAKClRoZSBiYXNlIEpTT04gYW5kIFlBTUwgcHJvY2Vzc29ycyBhcmUgYnVpbHQgaW50byB0aGlzIHByb2plY3QuIEJlbG93IGlzIHRoZSBsaXN0IG9mIHRoZSBvdGhlciBzdXBwb3J0ZWQgcHJvY2Vzc29yIHByb2plY3RzLgoKLSBbKipDIyBDb21tZW50IC8gQW5ub3RhdGlvbiBQcm9jZXNzb3IqKl0oaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9PcGVuQVBJLk5FVC5DU2hhcnBBbm5vdGF0aW9ucykgOiBDb252ZXJ0cyBzdGFuZGFyZCAuTkVUIGFubm90YXRpb25zICggLy8vIGNvbW1lbnRzICkgZW1pdHRlZCBmcm9tIHlvdXIgYnVpbGQgKE1TQnVpbGQuZXhlKSBpbnRvIE9wZW5BUEkuTkVUIGRvY3VtZW50IG9iamVjdC4gCgotIFsqKk9EYXRhIENTREwgUHJvY2Vzc29yKipdKGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvT3BlbkFQSS5ORVQuT0RhdGEpIDogQ29udmVydHMgdGhlIFhNTCByZXByZXNlbnRhdGlvbiBvZiB0aGUgRW50aXR5IERhdGEgTW9kZWwgKEVETSkgZGVzY3JpYmluZyBhbiBPRGF0YSBTZXJ2aWNlIGludG8gT3BlbkFQSS5ORVQgZG9jdW1lbnQgb2JqZWN0LiAKCiMgRXhhbXBsZSBVc2FnZQoKQ3JlYXRpbmcgYW4gT3BlbkFQSSBEb2N1bWVudAoKYGBgQyMKdmFyIGRvY3VtZW50ID0gbmV3IE9wZW5BcGlEb2N1bWVudAp7CiAgICBJbmZvID0gbmV3IE9wZW5BcGlJbmZvCiAgICB7CiAgICAgICAgVmVyc2lvbiA9ICIxLjAuMCIsCiAgICAgICAgVGl0bGUgPSAiU3dhZ2dlciBQZXRzdG9yZSAoU2ltcGxlKSIsCiAgICB9LAogICAgU2VydmVycyA9IG5ldyBMaXN0PE9wZW5BcGlTZXJ2ZXI+CiAgICB7CiAgICAgICAgbmV3IE9wZW5BcGlTZXJ2ZXIgeyBVcmwgPSAiaHR0cDovL3BldHN0b3JlLnN3YWdnZXIuaW8vYXBpIiB9CiAgICB9LAogICAgUGF0aHMgPSBuZXcgT3BlbkFwaVBhdGhzCiAgICB7CiAgICAgICAgWyIvcGV0cyJdID0gbmV3IE9wZW5BcGlQYXRoSXRlbQogICAgICAgIHsKICAgICAgICAgICAgT3BlcmF0aW9ucyA9IG5ldygpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFtIdHRwTWV0aG9kLkdldF0gPSBuZXcgT3BlbkFwaU9wZXJhdGlvbgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0gIlJldHVybnMgYWxsIHBldHMgZnJvbSB0aGUgc3lzdGVtIHRoYXQgdGhlIHVzZXIgaGFzIGFjY2VzcyB0byIsCiAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2VzID0gbmV3IE9wZW5BcGlSZXNwb25zZXMKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFsiMjAwIl0gPSBuZXcgT3BlbkFwaVJlc3BvbnNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0gIk9LIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9OwpgYGAKClJlYWRpbmcgYW5kIHdyaXRpbmcgYW4gT3BlbkFQSSBkZXNjcmlwdGlvbgoKYGBgQyMKdmFyIChvcGVuQXBpRG9jdW1lbnQsIF8pID0gYXdhaXQgT3BlbkFwaURvY3VtZW50LkxvYWRBc3luYygiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vcmVmcy9oZWFkcy9tYWluL19hcmNoaXZlXy9zY2hlbWFzL3YzLjAvcGFzcy9wZXRzdG9yZS55YW1sIik7CgovLyBXcml0ZSBWMiBhcyBKU09OCnZhciBvdXRwdXRTdHJpbmcgPSBhd2FpdCBvcGVuQXBpRG9jdW1lbnQuU2VyaWFsaXplQXNKc29uQXN5bmMoT3BlbkFwaVNwZWNWZXJzaW9uLk9wZW5BcGkyXzApOwpgYGAKCiMgVmFsaWRhdGluZy9UZXN0aW5nIE9wZW5BUEkgZGVzY3JpcHRpb25zCkluIG9yZGVyIHRvIHRlc3QgdGhlIHZhbGlkaXR5IG9mIGFuIE9wZW5BcGkgZG9jdW1lbnQsIHdlIGF2YWlsIHRoZSBmb2xsb3dpbmcgdG9vbHM6Ci0gW01pY3Jvc29mdC5PcGVuQXBpLkhpZGldKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuT3BlbkFwaS5IaWRpKQoKICAgIEEgY29tbWFuZGxpbmUgdG9vbCBmb3IgdmFsaWRhdGluZyBhbmQgdHJhbnNmb3JtaW5nIE9wZW5BUEkgZGVzY3JpcHRpb25zLiBbSW5zdGFsbGF0aW9uIGd1aWRlbGluZXMgYW5kIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvT3BlbkFQSS5ORVQvYmxvYi9tYWluL3NyYy9NaWNyb3NvZnQuT3BlbkFwaS5IaWRpL3JlYWRtZS5tZCkKCi0gTWljcm9zb2Z0Lk9wZW5BcGkuV29ya2JlbmNoCgogICAgQSB3b3JrYmVuY2ggdG9vbCBjb25zaXN0aW5nIG9mIGEgR1VJIHdoZXJlIHlvdSBjYW4gdGVzdCBhbmQgY29udmVydCBPcGVuQVBJIGRlc2NyaXB0aW9ucyBpbiBib3RoIEpTT04gYW5kIFlBTUwgZnJvbSB2Mi0tPnYzIGFuZCB2aWNlIHZlcnNhLgoKICAgICMjIyMgSW5zdGFsbGF0aW9uIGd1aWRlbGluZXM6CiAgICAxLiBDbG9uZSB0aGUgcmVwbyBsb2NhbGx5IGJ5IHJ1bm5pbmcgdGhpcyBjb21tYW5kOgogICAgICAgIGBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9PcGVuQVBJLk5FVC5naXRgCiAgICAyLiBPcGVuIHRoZSBzb2x1dGlvbiBmaWxlIGAoLnNsbilgIGluIHRoZSByb290IG9mIHRoZSBwcm9qZWN0IHdpdGggVmlzdWFsIFN0dWRpbwogICAgMy4gTmF2aWdhdGUgdG8gdGhlIGBzcmMvTWljcm9zb2Z0Lk9wZW5BcGkuV29ya2JlbmNoYCBkaXJlY3RvcnkgYW5kIHNldCBpdCBhcyB0aGUgc3RhcnR1cCBwcm9qZWN0CiAgICA0LiBSdW4gdGhlIHByb2plY3QgYW5kIHlvdSdsbCBzZWUgYSBHVUkgcG9wIHVwIHJlc2VtYmxpbmcgdGhlIG9uZSBiZWxvdzoKICAgIAogICAgCiAgICAhW3dvcmtiZW5jaCBwcmV2aWV3XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbWljcm9zb2Z0L09wZW5BUEkuTkVUL21haW4vZG9jcy9pbWFnZXMvd29ya2JlbmNoLnBuZyAiYSBzY3JlZW5zaG90IG9mIHRoZSB3b3JrYmVuY2ggYXBwbGljYXRpb24iKQogICAgCiAgICA1LiBDb3B5IGFuZCBwYXN0ZSB5b3VyIE9wZW5BUEkgZGVzY3JpcHRpb25zIGluIHRoZSAqKklucHV0IENvbnRlbnQqKiB3aW5kb3cgb3IgcGFzdGUgdGhlIHBhdGggdG8gdGhlIGRlc2NyaXB0aW9ucyBmaWxlIGluIHRoZSAqKklucHV0IEZpbGUqKiB0ZXh0Ym94IGFuZCBjbGljayBvbiBgQ29udmVydGAgdG8gcmVuZGVyIHRoZSByZXN1bHRzLgoKIyBDb250cmlidXRpbmcKClRoaXMgcHJvamVjdCB3ZWxjb21lcyBjb250cmlidXRpb25zIGFuZCBzdWdnZXN0aW9ucy4gIE1vc3QgY29udHJpYnV0aW9ucyByZXF1aXJlIHlvdSB0byBhZ3JlZSB0byBhCkNvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50IChDTEEpIGRlY2xhcmluZyB0aGF0IHlvdSBoYXZlIHRoZSByaWdodCB0bywgYW5kIGFjdHVhbGx5IGRvLCBncmFudCB1cwp0aGUgcmlnaHRzIHRvIHVzZSB5b3VyIGNvbnRyaWJ1dGlvbi4gRm9yIGRldGFpbHMsIHZpc2l0IGh0dHBzOi8vY2xhLm1pY3Jvc29mdC5jb20uCgpXaGVuIHlvdSBzdWJtaXQgYSBwdWxsIHJlcXVlc3QsIGEgQ0xBLWJvdCB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIHdoZXRoZXIgeW91IG5lZWQgdG8gcHJvdmlkZQphIENMQSBhbmQgZGVjb3JhdGUgdGhlIFBSIGFwcHJvcHJpYXRlbHkgKGUuZy4sIGxhYmVsLCBjb21tZW50KS4gU2ltcGx5IGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zCnByb3ZpZGVkIGJ5IHRoZSBib3QuIFlvdSB3aWxsIG9ubHkgbmVlZCB0byBkbyB0aGlzIG9uY2UgYWNyb3NzIGFsbCByZXBvcyB1c2luZyBvdXIgQ0xBLgoKVGhpcyBwcm9qZWN0IGhhcyBhZG9wdGVkIHRoZSBbTWljcm9zb2Z0IE9wZW4gU291cmNlIENvZGUgb2YgQ29uZHVjdF0oaHR0cHM6Ly9vcGVuc291cmNlLm1pY3Jvc29mdC5jb20vY29kZW9mY29uZHVjdC8pLgpGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIFtDb2RlIG9mIENvbmR1Y3QgRkFRXShodHRwczovL29wZW5zb3VyY2UubWljcm9zb2Z0LmNvbS9jb2Rlb2Zjb25kdWN0L2ZhcS8pIG9yCmNvbnRhY3QgW29wZW5jb2RlQG1pY3Jvc29mdC5jb21dKG1haWx0bzpvcGVuY29kZUBtaWNyb3NvZnQuY29tKSB3aXRoIGFueSBhZGRpdGlvbmFsIHF1ZXN0aW9ucyBvciBjb21tZW50cy4KClRvIHByb3ZpZGUgZmVlZGJhY2sgYW5kIGFzayBxdWVzdGlvbnMgeW91IGNhbiB1c2UgU3RhY2sgT3ZlcmZsb3cgd2l0aCB0aGUgW09wZW5BUEkuTkVUXShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy90YWdnZWQvb3BlbmFwaS5uZXQpIHRhZy4K readmeEtag: '"6a7f787f8e6cf6076b83186b54e46c10ddfc4c94"' readmeLastModified: Tue, 11 Nov 2025 21:58:29 GMT repositoryId: 97175798 description: >- The OpenAPI.NET SDK contains a useful object model for OpenAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model. created: '2017-07-14T00:24:14Z' updated: '2026-02-05T12:17:03Z' language: C# archived: false stars: 1575 watchers: 62 forks: 282 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT repoEtag: '"02e87e29122fea6641bc92d47b69eb0c7a7bdcb9421082dddf2cc5f1bb1d11d0"' repoLastModified: Thu, 05 Feb 2026 12:17:03 GMT foundInMaster: true id: 1066748bb5b1f114a70856a29fee4aa7 - source: - https://openapi.tools/ - openapi3 tags name: oas_parser homepage: https://github.com/Nexmo/oas_parser language: Ruby source_description: A Ruby parser for OpenAPI 3.0+ descriptions. category: Parsers repository: https://github.com/nexmo/oas_parser v2: false v3: true repositoryMetadata: base64Readme: >- IyDimqDvuI8gVGhpcyByZXBvc2l0b3J5IGlzIG5vIGxvbmdlciBtYWludGFpbmVkLgoKLS0tCgojIE9wZW4gQVBJIERlZmluaXRpb24gUGFyc2VyCgo8aW1nIHNyYz0iaHR0cHM6Ly9kZXZlbG9wZXIubmV4bW8uY29tL2Fzc2V0cy9pbWFnZXMvVm9uYWdlX05leG1vLnN2ZyIgaGVpZ2h0PSI0OHB4IiBhbHQ9Ik5leG1vIGlzIG5vdyBrbm93biBhcyBWb25hZ2UiIC8+CgpBIFJ1YnkgcGFyc2VyIGZvciBPcGVuIEFQSSBTcGVjIDMuMCsgZGVmaW5pdGlvbnMuCgojIyMgSW5zdGFsbAoKSW5zdGFsbCB0aGUgZ2VtOgoKYGBgCiQgZ2VtIGluc3RhbGwgb2FzX3BhcnNlcgpgYGAKCk9yIGFkZCBpdCB0byB5b3VyIEdlbWZpbGU6CgpgYGBydWJ5CmdlbSAnb2FzX3BhcnNlcicKYGBgCgojIyMgVXNhZ2UKCkhlcmUgaXMgYSBiYXNpYyBleGFtcGxlIG9mIGhvdyB5b3UgY2FuIHRyYXZlcnNlIHRocm91Z2ggYW4gT3BlbiBBUEkgU3BlYyAzIERlZmluaXRpb246CgpgYGBydWJ5CnJlcXVpcmUgJ29hc19wYXJzZXInCgpkZWZpbml0aW9uID0gT2FzUGFyc2VyOjpEZWZpbml0aW9uLnJlc29sdmUoJ3BldHN0b3JlLnltbCcpCiMgPT4gIzxPYXNQYXJzZXI6OkRlZmluaXRpb24+CgojIEdldCBhIHNwZWNpZmljIHBhdGgKcGF0aCA9IGRlZmluaXRpb24ucGF0aF9ieV9wYXRoKCcvcGV0cycpCiMgPT4gIzxPYXNQYXJzZXI6OlBhdGg+CgojIEdldCBhbGwgcGF0aHMuCmRlZmluaXRpb24ucGF0aHMKIyA9PiBbIzxPYXNQYXJzZXI6OlBhdGg+LCAuLi5dCgojIEdldCBhIHNwZWNpZmljIGVuZHBvaW50IGJ5IG1ldGhvZAplbmRwb2ludCA9IHBhdGguZW5kcG9pbnRfYnlfbWV0aG9kKCdnZXQnKQojID0+ICM8T2FzUGFyc2VyOjpFbmRwb2ludD4KCiMgR2V0IGFsbCBlbmRwb2ludHMKcGF0aC5lbmRwb2ludHMKIyA9PiBbIzxPYXNQYXJzZXI6OkVuZHBvaW50PiwgLi4uXQoKIyBHZXQgZW5kcG9pbnQgZGVzY3JpcHRpb24KZW5kcG9pbnQuZGVzY3JpcHRpb24KIyA9PiAiUmV0dXJucyBhbGwgcGV0cyBmcm9tIHRoZSBzeXN0ZW0gdGhhdCB0aGUgdXNlciBoYXMgYWNjZXNzIHRvIgpgYGAKCkNoZWNrb3V0IHRoZSB0ZXN0cyBhbmQgYGxpYmAgZGlyZWN0b3J5IGZvciBtb3JlIGNsYXNzZXMgYW5kIG1ldGhvZHMuCgojIyMgRGV2ZWxvcG1lbnQKClJ1biB0ZXN0czoKCmBgYAokIHJzcGVjCmBgYAoKIyMjIFB1Ymxpc2hpbmcKCkNsb25lIHRoZSByZXBvIGFuZCBuYXZpZ2F0ZSB0byBpdHMgZGlyZWN0b3J5OgoKYGBgCiQgY2Qgb2FzLXBhcnNlcgpgYGAKCkJ1bXAgdGhlIGxhdGVzdCB2ZXJzaW9uIGluIGBvYXNfcGFyc2VyL2xpYi9vYXNfcGFyc2VyL3ZlcnNpb24ucmJgOgoKYGBgCi8vb2xkCm1vZHVsZSBPYXNQYXJzZXIKICBWRVJTSU9OID0gJzEuMC4wJy5mcmVlemUKZW5kCgovL25ldwptb2R1bGUgT2FzUGFyc2VyCiAgVkVSU0lPTiA9ICcxLjEuMCcuZnJlZXplCmVuZApgYGAKCkJ1aWxkIHRoZSBnZW06CgpgYGAKJCBnZW0gYnVpbGQgb2FzX3BhcnNlci5nZW1zcGVjCmBgYAoKX1RoaXMgd2lsbCBjcmVhdGUgYSBgb2FzX3BhcnNlci0xLjEuMC5nZW1gIGZpbGUuXwoKUHVzaCB0aGUgZ2VtIHRvIHJ1YnlnZW1zLm9yZzoKCmBgYAokIGdlbSBwdXNoIG9hc19wYXJzZXItMS4xLjAuZ2VtCmBgYAoKVmVyaWZ5IHRoZSBjaGFuZ2Ugd2FzIG1hZGUgYnkgY2hlY2tpbmcgZm9yIHRoZSBbbmV3IHZlcnNpb24gb24gcnVieWdlbXMub3JnXShodHRwczovL3J1YnlnZW1zLm9yZy9nZW1zL29hc19wYXJzZXIpCgoKCiMjIENvbnRyaWJ1dGluZwoKQ29udHJpYnV0aW9ucyBhcmUgd2VsY29tZSwgcGxlYXNlIGZvbGxvdyBbR2l0SHViIEZsb3ddKGh0dHBzOi8vZ3VpZGVzLmdpdGh1Yi5jb20vaW50cm9kdWN0aW9uL2Zsb3cvaW5kZXguaHRtbCkK readmeEtag: '"c585d4ba158489b3abc75240e2a9651e74086477"' readmeLastModified: Thu, 06 Jul 2023 13:35:37 GMT repositoryId: 114796887 description: An open source Open API Spec 3 Definition Parser created: '2017-12-19T18:12:33Z' updated: '2023-07-06T13:35:44Z' language: Ruby archived: false stars: 51 watchers: 14 forks: 14 owner: Nexmo logo: https://avatars.githubusercontent.com/u/551057?v=4 license: MIT repoEtag: '"0a35a24ca8893655a51b51c53f6728aed92ecabe23fd68115e401f7d963f8aba"' repoLastModified: Thu, 06 Jul 2023 13:35:44 GMT foundInMaster: true id: f2aacc6ec161af737088d825023eb174 - source: https://openapi.tools/ name: openapi3 category: Parsers repository: https://github.com/dorthu/openapi3 language: Python source_description: >- An OpenAPI 3 Specification client, and validator, covering both description validation and limited data validation for Python 3. v2: false v3: true repositoryMetadata: base64Readme: >- b3BlbmFwaTMKPT09PT09PT0KCkEgUHl0aG9uIGBPcGVuQVBJIDMgU3BlY2lmaWNhdGlvbmBfIGNsaWVudCBhbmQgdmFsaWRhdG9yIGZvciBQeXRob24gMy4KCi4uIGltYWdlOjogaHR0cHM6Ly9naXRodWIuY29tL0RvcnRodS9vcGVuYXBpMy9hY3Rpb25zL3dvcmtmbG93cy9tYWluLnltbC9iYWRnZS5zdmcKICAgOmFsdDogR2l0SHViIEFjdGlvbnMgQnVpbGQgQmFkZ2UKCi4uIGltYWdlOjogaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL3B5L29wZW5hcGkzLnN2ZwogICA6dGFyZ2V0OiBodHRwczovL2JhZGdlLmZ1cnkuaW8vcHkvb3BlbmFwaTMKCgpWYWxpZGF0aW9uIE1vZGUKLS0tLS0tLS0tLS0tLS0tCgpUaGlzIG1vZHVsZSBjYW4gYmUgcnVuIGFnYWluc3QgYSBzcGVjIGZpbGUgdG8gdmFsaWRhdGUgaXQgbGlrZSBzbzo6CgogICBweXRob24zIC1tIG9wZW5hcGkzIC9wYXRoL3RvL3NwZWMKClVzYWdlIGFzIGEgQ2xpZW50Ci0tLS0tLS0tLS0tLS0tLS0tCgpUaGlzIGxpYnJhcnkgYWxzbyBmdW5jdGlvbnMgYXMgYW4gaW50ZXJhY3RpdmUgY2xpZW50IGZvciBhcmJpdHJhcnkgT3BlbkFQSSAzCnNwZWNzLiBGb3IgZXhhbXBsZSwgdXNpbmcgYExpbm9kZSdzIE9wZW5BUEkgMyBTcGVjaWZpY2F0aW9uYF8gZm9yIHJlZmVyZW5jZTo6CgogICBmcm9tIG9wZW5hcGkzIGltcG9ydCBPcGVuQVBJCiAgIGltcG9ydCB5YW1sCgogICAjIGxvYWQgdGhlIHNwZWMgZmlsZSBhbmQgcmVhZCB0aGUgeWFtbAogICB3aXRoIG9wZW4oJ29wZW5hcGkueWFtbCcpIGFzIGY6CiAgICAgICBzcGVjID0geWFtbC5zYWZlX2xvYWQoZi5yZWFkKCkpCgogICAjIHBhcnNlIHRoZSBzcGVjIGludG8gcHl0aG9uIC0gdGhpcyB3aWxsIHJhaXNlIGlmIHRoZSBzcGVjIGlzIGludmFsaWQKICAgYXBpID0gT3BlbkFQSShzcGVjKQoKICAgIyBjYWxsIG9wZXJhdGlvbnMgYW5kIHJlY2VpdmUgcmVzdWx0IG1vZGVscwogICByZWdpb25zID0gYXBpLmNhbGxfZ2V0UmVnaW9ucygpCgogICAjIGF1dGhlbnRpY2F0ZSB1c2luZyBhIHNlY3VyaXR5U2NoZW1lIGRlZmluZWQgaW4gdGhlIHNwZWMncyBjb21wb25lbnRzLnNlY3VyaXR5U2NoZW1lcwogICBhcGkuYXV0aGVudGljYXRlKCdwZXJzb25hbEFjY2Vzc1Rva2VuJywgbXlfdG9rZW4pCgogICAjIGNhbGwgYW4gb3BlcmF0aW9uIHRoYXQgcmVxdWlyZXMgYXV0aGVudGljYXRpb24KICAgbGlub2RlcyAgPSBhcGkuY2FsbF9nZXRMaW5vZGVJbnN0YW5jZXMoKQoKICAgIyBjYWxsIGFuIG9wZXJhdGlvbiB3aXRoIHBhcmFtZXRlcnMKICAgbGlub2RlID0gYXBpLmNhbGxfZ2V0TGlub2RlSW5zdGFuY2UocGFyYW1ldGVycz17Imxpbm9kZUlkIjogMTIzfSkKCiAgICMgdGhlIG1vZGVscyByZXR1cm5zIGFyZSBhbGwgb2YgdGhlIHNhbWUgKGdlbmVyYXRlZCkgdHlwZQogICBwcmludCh0eXBlKGxpbm9kZSkpICAgICAgICAgICAgICAgICAgICAgICMgb3BlbmFwaS5zY2hlbWFzLkxpbm9kZQogICB0eXBlKGxpbm9kZSkgPT0gdHlwZShsaW5vZGVzLmRhdGFbMF0pICAgICMgVHJ1ZQoKICAgIyBjYWxsIGFuIG9wZXJhdGlvbiB3aXRoIGEgcmVxdWVzdCBib2R5CiAgIG5ld19saW5vZGUgPSBhcGkuY2FsbF9jcmVhdGVMaW5vZGVJbnN0YW5jZShkYXRhPXsicmVnaW9uIjoidXMtZWFzdCIsInR5cGUiOiJnNi1zdGFuZGFyZC0yIn0pCgogICAjIHRoZSByZXR1cm5lZCBtb2RlbHMgaXMgc3RpbGwgb2YgdGhlIGNvcnJlY3QgdHlwZQogICB0eXBlKG5ld19saW5vZGUpID09IHR5cGUobGlub2RlKSAgICAgIyBUcnVlCgpIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uIGFuZCBIVFRQIGRpZ2VzdCBhdXRoZW50aWNhdGlvbiB3b3JrcyBsaWtlIHRoaXM6OgoKICAgIyBhdXRoZW50aWNhdGUgdXNpbmcgYSBzZWN1cml0eVNjaGVtZSBkZWZpbmVkIGluIHRoZSBzcGVjJ3MgY29tcG9uZW50cy5zZWN1cml0eVNjaGVtZXMKICAgIyBUdXBsZSB3aXRoICh1c2VybmFtZSwgcGFzc3dvcmQpIGFzIHNlY29uZCBhcmd1bWVudAogICBhcGkuYXV0aGVudGljYXRlKCdiYXNpY0F1dGgnLCAoJ3VzZXJuYW1lJywgJ3Bhc3N3b3JkJykpCgpSdW5uaW5nIFRlc3RzCi0tLS0tLS0tLS0tLS0KClRoaXMgcHJvamVjdCBpbmNsdWRlcyBhIHRlc3Qgc3VpdGUsIHJ1biB2aWEgYGBweXRlc3RgYC4gIFRvIHJ1biB0aGUgdGVzdCBzdWl0ZSwKZW5zdXJlIHRoYXQgeW91J3ZlIGluc3RhbGxlZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGVuIHJ1biBgYHB5dGVzdGBgIGluIHRoZSByb290Cm9mIHRoaXMgcHJvamVjdC4KClJvYWRtYXAKLS0tLS0tLQoKVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgcGxhbm5lZCBmb3IgdGhlIGZ1dHVyZToKCiogUmVxdWVzdCBib2R5IG1vZGVscywgY3JlYXRpb24sIGFuZCB2YWxpZGF0aW9uLgoqIFBhcmFtZXRlcnMgaW50ZXJmYWNlIHdpdGggdmFsaWRhdGlvbiBhbmQgZXhwbGljaXQgdHlwaW5nLgoqIFN1cHBvcnQgZm9yIG1vcmUgYXV0aGVudGljYXRpb24gdHlwZXMuCiogU3VwcG9ydCBmb3Igbm9uLWpzb24gcmVxdWVzdC9yZXNwb25zZSBjb250ZW50LgoqIEZ1bGwgc3VwcG9ydCBmb3IgYWxsIG9iamVjdHMgZGVmaW5lZCBpbiB0aGUgc3BlY2lmaWNhdGlvbi4KCi4uIF9PcGVuQVBJIDMgU3BlY2lmaWNhdGlvbjogaHR0cHM6Ly9vcGVuYXBpcy5vcmcKLi4gX0xpbm9kZSdzIE9wZW5BUEkgMyBTcGVjaWZpY2F0aW9uOiBodHRwczovL2RldmVsb3BlcnMubGlub2RlLmNvbS9hcGkvdjQKCg== readmeEtag: '"53e8b32a8eaf9d75e4b358be541b0006e16edabc"' readmeLastModified: Tue, 29 Aug 2023 17:12:35 GMT repositoryId: 132167773 description: A Python3 OpenAPI 3 Spec Parser created: '2018-05-04T17:08:13Z' updated: '2025-11-08T18:47:05Z' language: Python archived: false stars: 121 watchers: 3 forks: 46 owner: Dorthu logo: https://avatars.githubusercontent.com/u/7172953?v=4 license: BSD-3-Clause repoEtag: '"9a83d0d16070a638cc124d3427b374b87d7052603b21952a3ffefce26651661a"' repoLastModified: Sat, 08 Nov 2025 18:47:05 GMT foundInMaster: true id: c4167980072f8c84fc27a9160da0380a - source: https://openapi.tools/ name: openapi3_parser homepage: https://github.com/kevindew/openapi3_parser language: Ruby source_description: >- A Ruby implementation of parser and validator for the OpenAPI 3 Specification. category: Parsers repository: https://github.com/kevindew/openapi3_parser v2: false v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIDMgUGFyc2VyCgohW2NpIHdvcmtmbG93XShodHRwczovL2dpdGh1Yi5jb20va2V2aW5kZXcvb3BlbmFwaTNfcGFyc2VyL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpCgpUaGlzIGEgUnVieSBiYXNlZCBwYXJzZXIvdmFsaWRhdG9yIGZvciBbT3BlbkFQSSAzXVtvcGVuYXBpLTNdLiBJdCBpcyB1c2VkIHRvCmNvbnZlcnQgYW4gT3BlbkFQSSBmaWxlIChjYW4gYmUgYSBsb2NhbCBmaWxlLCBhIFVSTCwgYSBzdHJpbmcgb3IgZXZlbiBhIFJ1YnkKaGFzaCkgaW50byBhbiBvYmplY3QgZ3JhcGggd2l0aCBhIHNpbXBsZSBBUEkgdGhhdCBmb2xsb3dzIHRoZSBbT3BlbkFQSQpzcGVjaWZpY2F0aW9uXVtvcGVuYXBpLTMtc3BlY10uCgpCYXNpYyBleGFtcGxlOgoKYGBgcnVieQpyZXF1aXJlICJvcGVuYXBpM19wYXJzZXIiCgpkb2N1bWVudCA9IE9wZW5hcGkzUGFyc2VyLmxvYWRfdXJsKCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9tYXN0ZXIvZXhhbXBsZXMvdjMuMC9wZXRzdG9yZS55YW1sIikKCmRvY3VtZW50LnBhdGhzWyIvcGV0cyJdLmdldC5zdW1tYXJ5CiMgPT4gIkxpc3QgYWxsIHBldHMiCmBgYAoKSXQgYWltcyB0byBzdXBwb3J0IDEwMCUgb2YgdGhlIE9wZW5BUEkgMy4wIHNwZWNpZmljYXRpb24sIHdpdGgga2V5IGZlYXR1cmVzCmJlaW5nOgoKLSBTdXBwb3J0cyBsb2FkaW5nIGEgc3BlY2lmaWNhdGlvbiBieSBwYXRoIHRvIGEgZmlsZSwgVVJMLCBSdWJ5IGZpbGUgb2JqZWN0cywKICBhbmQgc3RyaW5ncyBpbiBZQU1MIGFuZCBKU09OIGZvcm1hdHMsIGl0IGV2ZW4gc3VwcG9ydHMgbG9hZGluZyB2aWEgYSBSdWJ5IGhhc2g7Ci0gU3VwcG9ydCBmb3IgbG9hZGluZyByZWZlcmVuY2VzIGZyb20gZXh0ZXJuYWwgZmlsZXMgaW5jbHVkaW5nIFVSTHM7Ci0gSGFuZGxlcyByZWN1cnNpdmUgcmVmZXJlbmNlczsKLSBBbGwgb2YgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIG1hcHBlZCB0byBSdWJ5IG9iamVjdHMsIHByb3ZpZGluZyBhIG5hdHVyYWwKICBSdWJ5IGludGVyZmFjZSB0aGF0IG1hcHMgY2xlYXJseSB0byB0aGUgc3BlY2lmaWNhdGlvbjsKLSBPcGVuQVBJIGZpbGVzIHZhbGlkYXRlZCB3aXRoIGEgc2ltcGxlIEFQSSB0byBxdWlja2x5IGFuZCBzaW1wbHkgc2VlIGFsbAogIHByb2JsZW1zIHdpdGggYSBmaWxlCi0gQnVpbHQtaW4gTWFya2Rvd24gdG8gSFRNTCBjb252ZXJzaW9uOwotIERvY3VtZW50YXRpb24gZm9yIHRoZSBBUEkgdG8gbmF2aWdhdGUgdGhlIE9wZW5BUEkgbm9kZXMgaXMgYXZhaWxhYmxlIG9uCiAgW3J1Ynlkb2MuaW5mb11bZG9jc10uCgpJJ3ZlIHdyb3RlIGEgYmxvZyBwb3N0IHJlZmxlY3Rpbmcgb24gdGhlIGRlY2lzaW9ucyBpbnZvbHZlZCBpbiBidWlsZGluZyB0aGlzCnBhcnNlciBpbiBbSG93IHRvIHdyaXRlIGFuIE9wZW5BUEkgMyBwYXJzZXJdW2Jsb2ddLgoKW29wZW5hcGktM106IGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uCltvcGVuYXBpLTMtc3BlY106IGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4yLm1kI3NwZWNpZmljYXRpb24KW2RvY3NdOiBodHRwOi8vd3d3LnJ1Ynlkb2MuaW5mby9naXRodWIva2V2aW5kZXcvb3BlbmFwaTNfcGFyc2VyL09wZW5hcGkzUGFyc2VyL05vZGUvT3BlbmFwaQpbYmxvZ106IGh0dHBzOi8va2V2aW5kZXcubWUvcG9zdC8xODg2MTE0MjMyMzEvaG93LXRvLXdyaXRlLWFuLW9wZW5hcGktMy1wYXJzZXIKCiMjIFVzYWdlCgojIyMgTG9hZGluZyBhIHNwZWNpZmljYXRpb24KCmBgYHJ1YnkKIyBieSBVUkwKT3BlbmFwaTNQYXJzZXIubG9hZF91cmwoImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9rZXZpbmRldy9vcGVuYXBpM19wYXJzZXIvbWFpbi9zcGVjL3N1cHBvcnQvZXhhbXBsZXMvcGV0c3RvcmUtZXhwYW5kZWQueWFtbCIpCgojIGJ5IHBhdGggdG8gZmlsZQpPcGVuYXBpM1BhcnNlci5sb2FkX2ZpbGUoInNwZWMvc3VwcG9ydC9leGFtcGxlcy91YmVyLnlhbWwiKQoKIyBieSBGaWxlCk9wZW5hcGkzUGFyc2VyLmxvYWQoRmlsZS5vcGVuKCJzcGVjL3N1cHBvcnQvZXhhbXBsZXMvdWJlci55YW1sIikpCgojIGJ5IFN0cmluZwpPcGVuYXBpM1BhcnNlci5sb2FkKCd7ICJvcGVuYXBpIjogIjMuMC4wIiwgImluZm8iOiB7ICJ0aXRsZSI6ICJBUEkiLCAidmVyc2lvbiI6ICIxLjAuMCIgfSwgInBhdGhzIjoge30gIH0nKQoKIyBieSBIYXNoCk9wZW5hcGkzUGFyc2VyLmxvYWQob3BlbmFwaTogIjMuMC4wIiwgaW5mbzogeyB0aXRsZTogIkFQSSIsIHZlcnNpb246ICIxLjAuMCIgfSwgcGF0aHM6IHt9KQoKYGBgCgojIyMgVmFsaWRhdGluZwoKYGBgcnVieQpkb2N1bWVudCA9IE9wZW5hcGkzUGFyc2VyLmxvYWQob3BlbmFwaTogIjMuMC4wIiwgaW5mbzoge30sIHBhdGhzOiB7fSkKZG9jdW1lbnQudmFsaWQ/CiMgPT4gZmFsc2UKZG9jdW1lbnQuZXJyb3JzCiPCoD0+IE9wZW5hcGkzUGFyc2VyOjpWYWxpZGF0aW9uOjpFcnJvckNvbGxlY3Rpb24oZXJyb3JzOiB7IiMvaW5mbyI9PlsiTWlzc2luZyByZXF1aXJlZCBmaWVsZHM6IHRpdGxlIGFuZCB2ZXJzaW9uIl19KQpgYGAKCiMjIyBUcmF2ZXJzaW5nCgpgYGBydWJ5CmRvY3VtZW50ID0gT3BlbmFwaTNQYXJzZXIubG9hZF91cmwoImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9rZXZpbmRldy9vcGVuYXBpM19wYXJzZXIvbWFpbi9zcGVjL3N1cHBvcnQvZXhhbXBsZXMvcGV0c3RvcmUtZXhwYW5kZWQueWFtbCIpCgojIGJ5IG9iamVjdHMKCmRvY3VtZW50LmluZm8udGVybXNfb2Zfc2VydmljZQojID0+ICJodHRwOi8vc3dhZ2dlci5pby90ZXJtcy8iCgpkb2N1bWVudC5wYXRocy5rZXlzCiMgPT4gWyIvcGV0cyIsICIvcGV0cy97aWR9Il0KCmRvY3VtZW50LnBhdGhzWyIvcGV0cyJdLmdldC5wYXJhbWV0ZXJzLm1hcCgmOm5hbWUpCiMgPT4gWyJ0YWdzIiwgImxpbWl0Il0KCiMgYnkgaGFzaCBzeW50YXgKCmRvY3VtZW50WyJpbmZvIl1bInRlcm1zT2ZTZXJ2aWNlIl0KPT4gImh0dHA6Ly9zd2FnZ2VyLmlvL3Rlcm1zLyIKCmRvY3VtZW50WyJwYXRocyJdLmtleXMKIyA9PiBbIi9wZXRzIiwgIi9wZXRzL3tpZH0iXQoKZG9jdW1lbnRbInBhdGhzIl1bIi9wZXRzIl1bImdldCJdWyJwYXJhbWV0ZXJzIl0ubWFwKCY6bmFtZSkKIyA9PiBbInRhZ3MiLCAibGltaXQiXQoKIyBieSBhIHBhdGggdG8gYSBub2RlCmRvY3VtZW50Lm5vZGVfYXQoIiMvcGF0aHMvJTJGcGV0cy9nZXQvb3BlcmF0aW9uSWQiKQo9PiAiZmluZFBldHMiCgpkb2N1bWVudC5ub2RlX2F0KCIjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXQvYWxsT2YvMC9yZXF1aXJlZC8wIikKPT4gIm5hbWUiCgojIG9yIGNvbWJpbmluZwoKZG9jdW1lbnQuY29tcG9uZW50cy5zY2hlbWFzWyJQZXQiXS5ub2RlX2F0KCIjLi4vTmV3UGV0IikKPT4gT3BlbmFwaTNQYXJzZXI6Ok5vZGU6OlNjaGVtYSgjL2NvbXBvbmVudHMvc2NoZW1hcy9OZXdQZXQpCmBgYAoKWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IHRoZSBBUEkgb24gW3J1Ynlkb2MuaW5mb11bZG9jc10KCiMjIEluc3RhbGxhdGlvbgoKWW91IGNhbiBpbnN0YWxsIHRoaXMgZ2VtIGludG8geW91ciBidW5kbGVyIGFwcGxpY2F0aW9uIGJ5IGFkZGluZyB0aGlzIGxpbmUgdG8KeW91ciBHZW1maWxlOgoKYGBgCmdlbSAib3BlbmFwaTNfcGFyc2VyIiwgIn4+IDAuMTAuMCIKYGBgCgphbmQgdGhlbiBydW5uaW5nIGAkIGJ1bmRsZSBpbnN0YWxsYAoKT3IgaW5zdGFsbCB0aGUgZ2VtIG9udG8geW91ciBtYWNoaW5lIHZpYSBgJCBnZW0gaW5zdGFsbCBvcGVuYXBpM19wYXJzZXJgCgojIyBTdGF0dXMKClRoaXMgaXMgY3VycmVudGx5IGEgd29yayBpbiBwcm9ncmVzcyBhbmQgd2lsbCByZW1haW4gc28gdW50aWwgaXQgcmVhY2hlcyAxLjAuCgpTZWUgW1RPRE9dKFRPRE8ubWQpIGZvciBkZXRhaWxzIG9mIHRoZSBmZWF0dXJlcyBzdGlsbCB0byBpbXBsZW1lbnQuCgojIyBMaWNlbmNlCgpbTUlUIExpY2Vuc2VdKExJQ0VOQ0UpCg== readmeEtag: '"91b00fb70c82fca634eb45633bb90a4ba8e6349d"' readmeLastModified: Tue, 21 May 2024 08:42:03 GMT repositoryId: 107609542 description: Open API 3 Parser/Validator for Ruby created: '2017-10-19T23:33:52Z' updated: '2025-12-04T15:12:11Z' language: Ruby archived: false stars: 105 watchers: 7 forks: 15 owner: kevindew logo: https://avatars.githubusercontent.com/u/282717?v=4 license: MIT repoEtag: '"4d6aae8751087d6ef04362730b600fd7a1f5d467de0bfa20c74a27e72db2f200"' repoLastModified: Thu, 04 Dec 2025 15:12:11 GMT foundInMaster: true id: 609fe191ac5d7b1b89c772e47fd2deb8 - source: https://openapi.tools/ name: APIMatic Generate category: - Code Generators - SDK language: SaaS link: https://www.apimatic.io/product/generate source_description: >- Bring in your API description (OAI v2/v3, RAML, API Blueprint, WSDL, etc.) to generate fully functional SDKs in over 10 languages. v2: true v3: true v3_1: true id: 7cbb02fd80f5559ac1fd392da1417abe foundInMaster: true - source: https://openapi.tools/ name: docler-labs/api-client-generator category: SDK language: PHP repository: https://github.com/doclerlabs/api-client-generator source_description: >- API client generator is a console application capable of auto-generating a PSR18/PSR7 API client based on OpenAPI specification according to PHP best practices and your code style standards. v3: true id: 0c78f909fbd7707b739560ebfa258b81 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNESyBnZW5lcmF0b3IgLSBBUEkgY2xpZW50IGdlbmVyYXRvcgoKQVBJIGNsaWVudCBnZW5lcmF0b3IgaXMgYSBjb25zb2xlIGFwcGxpY2F0aW9uIGNhcGFibGUgb2YgYXV0by1nZW5lcmF0aW5nIGEgW1BTUjE4XShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTE4LykvW1BTUjddKGh0dHBzOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItNy8pIGNvbXBsaWFudCBBUEkgY2xpZW50IGJhc2VkIG9uIFtPcGVuQVBJIHYzXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIHNwZWNpZmljYXRpb24gYWNjb3JkaW5nIHRvIFBIUCBiZXN0IHByYWN0aWNlcyBhbmQgeW91ciBjb2RlIHN0eWxlIHN0YW5kYXJkcy4KClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL0RvY2xlckxhYnMvYXBpLWNsaWVudC1nZW5lcmF0b3Iuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvRG9jbGVyTGFicy9hcGktY2xpZW50LWdlbmVyYXRvcikKWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIvRG9jbGVyTGFicy9hcGktY2xpZW50LWdlbmVyYXRvci9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9Eb2NsZXJMYWJzL2FwaS1jbGllbnQtZ2VuZXJhdG9yP2JyYW5jaD1tYXN0ZXIpClshW1BIUFN0YW4gTGV2ZWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvUEhQU3Rhbi1sZXZlbCUyMDgtYnJpZ2h0Z3JlZW4uc3ZnP3N0eWxlPWZsYXQpXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1BIUFN0YW4tbGV2ZWwlMjA4LWJyaWdodGdyZWVuLnN2Zz9zdHlsZT1mbGF0KQoKIyMgUmVxdWlyZW1lbnRzCi0gT3BlbkFQSSA+PSAzLjAKLSBQSFAgPj0gNy4wCgojIyBXaHkgdXNpbmcgaXQ/Ci0gV2l0aCBnZW5lcmF0ZWQgY2xpZW50IHlvdSBhcmUgYWx3YXlzIHN1cmUgdGhhdCB5b3VyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBpcyB1cC10by1kYXRlLgotIFdvcmsgd2l0aCBvYmplY3RzIGluc3RlYWQgb2YgcmF3IGRhdGEsIGl0IGlzIE9PUCBmcmllbmRseS4KLSBTYXZlcyB5b3VyIHRpbWUuIFlvdSBkb24ndCBuZWVkIHRvIHdyaXRlIGRhdGEgbWFwcGVycyB5b3Vyc2VsZiB0byBwb3B1bGF0ZSB0aG9zZSBvYmplY3RzIHdpdGggdGhlIGRhdGEgZnJvbSB0aGUgcmVzcG9uc2UuCi0gQWxsIHRoZSBiYXNpYyB0eXBlIHZhbGlkYXRpb25zIGluIHRoZSByZXF1ZXN0IGFuZCB0aGUgcmVzcG9uc2UgZG9uZSBhdXRvbWF0aWNhbGx5LgotIERlc3BpdGUgdGhlIGZhY3QgdGhlIGNvZGUgaXMgZ2VuZXJhdGVkIGl0J3MgY2xlYXIgYW5kIHJlYWRhYmxlLCBzaW1wbGUgdG8gZGVidWcgYW5kIHRvIHJlYXNvbiBhYm91dC4KLSBIaWdobHkgY29uZmlndXJhYmxlIGFuZCBleHRlbnNpYmxlLgotIFJlbGlhYmxlIGFuZCB3ZWxsIHRlc3RlZC4KLSBTaW1wbHksICoqaWYgc29tZXRoaW5nIGNhbiBiZSBhdXRvbWF0ZWQgaXQgc2hvdWxkIGJlIGF1dG9tYXRlZC4qKiAgRm9jdXMgb24gaW1wb3J0YW50IHN0dWZmLgoKIyMgRmVhdHVyZXMKLSBTdXBwb3J0cyB5YW1sIG9yIGpzb24gc3BlY2lmaWNhdGlvbiBmaWxlIGZvcm1hdHMuCi0gVmFsaWRhdGVzIHlvdXIgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgotIFN1cHBvcnRzIG11bHRpcGxlIGNvbnRlbnQgdHlwZXM6CiAgICAqIGFwcGxpY2F0aW9uL2pzb24KICAgICogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCiAgICAqIGFwcGxpY2F0aW9uL3htbAotIFN1cHBvcnRzIG5ldyBQSFAgdmVyc2lvbnMgc3ludGF4IGZlYXR1cmVzLgotIEl0IGlzIGJhc2UgY2xpZW50IGluZGVwZW5kZW50LCB5b3UgYXJlIGZyZWUgdG8gY2hvb3NlIGFueSBbZXhpc3RpbmcgUFNSLTE4IGNvbXBsaWFudCBjbGllbnRdKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wcm92aWRlcnMvcHNyL2h0dHAtY2xpZW50LWltcGxlbWVudGF0aW9uKS4gSnVzdCBjaG9vc2UgdGhlIG9uZSB3aGljaCB5b3UgYWxyZWFkeSB1c2UsIHNvIGdlbmVyYXRlZCBjbGllbnQgd291bGQgbm90IGNhdXNlIGFueSBjb25mbGljdHMgd2l0aCB5b3VyIGRlcGVuZGVuY2llcy4gQWx0aG91Z2ggbm90IHJlY29tbWVuZGVkLCB5b3UgY2FuIGFsc28gdXNlIG9yIGJ1aWxkIHlvdXIgb3duIFBTUi0xOCBpbXBsZW1lbnRhdGlvbiwgYXMgdGhlIGdlbmVyYXRlZCBjbGllbnQgZGVwZW5kcyBvbiBQU1IgaW50ZXJmYWNlcyBvbmx5LgotIEFwcGxpZXMgY29kZSBzdHlsZSBydWxlcyB0byBnZW5lcmF0ZWQgY29kZSwgeW91IGNhbiBzcGVjaWZ5IHlvdXIgb3duLgotIEdlbmVyYXRlcyBSRUFETUUgYW5kIGNvbXBvc2VyLmpzb24gZmlsZXMgd2l0aCBwb3NzaWJpbGl0eSB0byB1c2UgeW91ciBvd24gdGVtcGxhdGUuCi0gU3VwcG9ydHMgYGFsbE9mYCwgYG9uZU9mYCwgYGFueU9mYCBPcGVuQVBJIHBhcmFtZXRlcnMuCi0gU3VwcG9ydHMgbnVsbGFibGUgb3B0aW9uYWwgc2NoZW1lIHByb3BlcnR5LgoKIyMgRXhhbXBsZQpDaGVjayBvdXQgW2V4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9Eb2NsZXJMYWJzL2FwaS1jbGllbnQtZ2VuZXJhdG9yL3RyZWUvbWFzdGVyL2V4YW1wbGUpIGRpcmVjdG9yeSB0byBzZWUgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IGFwaS1jbGllbnQtZ2VuZXJhdG9yLgoKVHJ5IGl0IG91dDoKYGBgYmFzaApjZCBleGFtcGxlICYmIFwKY29tcG9zZXIgaW5zdGFsbCAmJiBcCnBocCB0ZXN0LWV4YW1wbGUucGhwCmBgYAoKIyMgVXNhZ2UKIyMjIFdpdGggRG9ja2VyCmBgYGJhc2gKJCBkb2NrZXIgcnVuIC1pdCBcCi12IHtwYXRoLXRvLXNwZWNpZmljYXRpb259L29wZW5hcGkueWFtbDovb3BlbmFwaS55YW1sOnJvIFwKLXYge3BhdGgtdG8tY2xpZW50fS9zb21lLWFwaS1jbGllbnQ6L2NsaWVudCBcCi1lIE5BTUVTUEFDRT1Hcm91cFxcU29tZUFwaUNsaWVudCBcCi1lIE9QRU5BUEk9L29wZW5hcGkueWFtbCBcCi1lIE9VVFBVVF9ESVI9L2NsaWVudCBcCi1lIFBBQ0tBR0U9Z3JvdXAvc29tZS1hcGktY2xpZW50IFwKZGhsYWJzL2FwaS1jbGllbnQtZ2VuZXJhdG9yCmBgYAoKPiBpZiB5b3UncmUgcnVubmluZyB0aGlzIGNvbW1hbmQgb24gV2luZG93cyB5b3UgbWlnaHQgbmVlZCB0byB1c2Ugc2luZ2xlIGJhY2tzbGFzaCBpbnN0ZWFkIGluIC1lIE5BTUVTUEFDRQoKIyMjIFdpdGhvdXQgRG9ja2VyClByZWNvbmRpdGlvbnM6IFBIUCA3LjQKCkNsb25lIHRoZSByZXBvc2l0b3J5IGFuZCBydW46CmBgYGJhc2ggCk9QRU5BUEk9e3BhdGgtdG8tc3BlY2lmaWNhdGlvbn0vb3BlbmFwaS55YW1sIE5BTUVTUEFDRT1Hcm91cFxTb21lQXBpQ2xpZW50IFBBQ0tBR0U9Z3JvdXAvc29tZS1hcGktY2xpZW50IE9VVFBVVF9ESVI9e3BhdGgtdG8tY2xpZW50fS9nZW5lcmF0ZWQgLi9iaW4vYXBpLWNsaWVudC1nZW5lcmF0b3IgZ2VuZXJhdGUKYGBgIAoKIyMgQ29uZmlndXJhdGlvbgpUaGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlOgoKfCBWYXJpYWJsZSB8IFJlcXVpcmVkIHwgRGVmYXVsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFbnVtIHwgRXhhbXBsZSAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiB8CnwtLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYE5BTUVTUEFDRWAgfCB5ZXMgfCB8IHwgR3JvdXBcXFNvbWVBcGlDbGllbnQgfAp8IGBQQUNLQUdFYCB8IHllcyB8IHwgfCBncm91cC9zb21lLWFwaS1jbGllbnQgfAp8IGBPUEVOQVBJIGAgfCB5ZXMgfCB8IHwgL2FwaS9vcGVuYXBpLnlhbWwgfAp8IGBPVVRQVVRfRElSYCB8IHllcyB8IHwgfCAvY2xpZW50IHwKfCBgQ09ERV9TVFlMRWAgfCBubyB8IHtwYXRoLXRvLXJlcG9zaXRvcnl9Ly5waHAtY3MtZml4ZXIucGhwLmRpc3QgfCB8IC9jbGllbnQvbXlDb2RlU3R5bGUucGhwIHwKfCBgU09VUkNFX0RJUmAgfCBubyB8IHNyYyB8IHwgc3JjIHwKfCBgQ0xJRU5UX1BIUF9WRVJTSU9OYCB8IG5vIHwgNy40IHwgNy4wLCA3LjEsIDcuMiwgNy4zLCA3LjQsIDguMCwgOC4xLCA4LjIsIDguMyB8IDcuNCB8CnwgYENPTVBPU0VSX0pTT05fVEVNUExBVEVfRElSYCB8IG5vIHwge3BhdGgtdG8tcmVwb3NpdG9yeX0vdGVtcGxhdGUvY29tcG9zZXIuanNvbi50d2lnIHwgfCAvcGF0aC9jb21wb3Nlci5qc29uLnR3aWcgfAp8IGBSRUFETUVfTURfVEVNUExBVEVfRElSYCB8IG5vIHwge3BhdGgtdG8tcmVwb3NpdG9yeX0vdGVtcGxhdGUvUkVBRE1FLm1kLnR3aWcgfCB8IC9wYXRoL1JFQURNRS5tZC50d2lnIHwKfCBgSFRUUF9NRVNTQUdFYCB8IG5vIHwgZ3V6emxlIHwgZ3V6emxlLCBueWhvbG0gfCBueWhvbG0gfAp8IGBDT05UQUlORVJgIHwgbm8gfCBwaW1wbGUgfCBwaW1wbGUgfCBwaW1wbGUgfAp8IGBJTkNMVURFX1RBR1NgIHwgbm8gfCB8IHwgdGFnMSx0YWcyLHRhZzMgfCB0YWcgd2hpdGVsaXN0IHRvIHNlbGVjdCBnZW5lcmF0ZWQgb3BlcmF0aW9ucyB8CnwgYEVYQ0xVREVfVEFHU2AgfCBubyB8IHwgfCB0YWcxLHRhZzIsdGFnMyB8IHRhZyBibGFja2xpc3QgdG8gc2VsZWN0IGdlbmVyYXRlZCBvcGVyYXRpb25zIHwKCiMjIFJ1bm5pbmcgdGVzdHMKCmBgYGJhc2gKJCBjb21wb3NlciBpbnN0YWxsCiQgbWFrZSB0ZXN0CmBgYAoKKGNoZWNrIGBtYWtlYCBmb3IgYWxsIGF2YWlsYWJsZSByb3V0aW5lcykuCg== readmeEtag: '"8c1ca279271af3a1c6567ccf856aaafbb88b6cb5"' readmeLastModified: Tue, 14 Jan 2025 11:11:53 GMT repositoryId: 267043092 description: >- API client generator is a console application capable of generating an API client based on OpenAPI(Swagger) specification. created: '2020-05-26T12:57:31Z' updated: '2026-01-29T15:01:51Z' language: PHP archived: false stars: 39 watchers: 13 forks: 22 owner: DoclerLabs logo: https://avatars.githubusercontent.com/u/12913135?v=4 license: MIT repoEtag: '"204baae5d50e4d630edb064482cf9222d95af7f77b4cdd154f280dc88dbec52f"' repoLastModified: Thu, 29 Jan 2026 15:01:51 GMT foundInMaster: true - source: https://openapi.tools/ name: janephp/open-api category: SDK language: PHP repository: https://github.com/janephp/open-api source_description: Generate a PHP Client API (PSR-7 compatible) given a OpenAPI specification. v2: true v3: true repositoryMetadata: base64Readme: >- IyBKYW5lIE9wZW5BUEkKCkdlbmVyYXRlIGEgUEhQIENsaWVudCBBUEkgKFBTUjcgY29tcGF0aWJsZSkgZ2l2ZW4gYSBbT3BlbkFQSSAoU3dhZ2dlcikgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMi4wLm1kKS4KCiMjIExpY2Vuc2UKClZpZXcgdGhlIFtMSUNFTlNFXShMSUNFTlNFKSBmaWxlIGF0dGFjaCB0byB0aGlzIHByb2plY3QuCgojIyBSZXNvdXJjZXMKCiAqIFtEb2N1bWVudGF0aW9uXShodHRwOi8vamFuZS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvKQogKiBbQ29udHJpYnV0aW5nXShodHRwczovL2dpdGh1Yi5jb20vamFuZXBocC9qYW5lcGhwL2Jsb2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCkKICogW1JlcG9ydCBJc3N1ZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lcGhwL2phbmVwaHAvaXNzdWVzKSBhbmQgW3NlbmQgUHVsbCBSZXF1ZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL2phbmVwaHAvamFuZXBocC9wdWxscykgCiBpbiB0aGUgW21haW4gSmFuZSBSZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vamFuZXBocC9qYW5lcGhwKQogCiMjIFNwb25zb3IKClshW0pvbGlDb2RlXShodHRwczovL2pvbGljb2RlLmNvbS9pbWFnZXMvbG9nby5zdmcpXShodHRwczovL2pvbGljb2RlLmNvbSkKCk9wZW4gU291cmNlIHRpbWUgc3BvbnNvcmVkIGJ5IEpvbGlDb2RlCgojIyBDcmVkaXRzCgoqIFtBbGwgY29udHJpYnV0b3JzXShodHRwczovL2dpdGh1Yi5jb20vam9saWNvZGUvamFuZS9ncmFwaHMvY29udHJpYnV0b3JzKQo= readmeEtag: '"a1df2b781a7f621d4ed7f6708fa220b5d61ab794"' readmeLastModified: Fri, 20 Mar 2020 07:42:44 GMT repositoryId: 112961308 description: '[READ-ONLY] Subtree split of Jane OpenAPI library' created: '2017-12-03T20:30:50Z' updated: '2025-10-16T12:59:10Z' language: PHP archived: true stars: 45 watchers: 2 forks: 10 owner: janephp logo: https://avatars.githubusercontent.com/u/21155132?v=4 license: MIT repoEtag: '"8640d6f648e0b8f363db6299989faf2085237240df43d1e9e7180395faccad4c"' repoLastModified: Thu, 16 Oct 2025 12:59:10 GMT foundInMaster: true id: 6db70c053b88f67063720245f841e5a6 - source: https://openapi.tools/ name: go-swagger category: - Parsers - SDK - Converters link: https://goswagger.io/ repository: https://github.com/go-swagger/go-swagger language: Go source_description: >- Unmaintained v2.0 only project seeking new maintainer, or probably a fork. Parser, validator, generates descriptions from code, or code from descriptions! v2: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIDIuMAoKPCEtLSBCYWRnZXM6IHN0YXR1cyAgLS0+ClshW1Rlc3RzXVt0ZXN0LWJhZGdlXV1bdGVzdC11cmxdIFshW0NvdmVyYWdlXVtjb3YtYmFkZ2VdXVtjb3YtdXJsXSBbIVtDSSB2dWxuIHNjYW5dW3Z1bG4tc2Nhbi1iYWRnZV1dW3Z1bG4tc2Nhbi11cmxdIFshW0NvZGVRTF1bY29kZXFsLWJhZGdlXV1bY29kZXFsLXVybF0KPCEtLSBCYWRnZXM6IHJlbGVhc2UgJiBkb2NrZXIgaW1hZ2VzICAtLT4KWyFbUmVsZWFzZV1bcmVsZWFzZS1iYWRnZV1dW3JlbGVhc2UtdXJsXSBbIVtDb250YWluZXIgUmVnaXN0cnkgb24gUXVheS5pb11bcXVheS1iYWRnZV1dW3F1YXktdXJsXSBbIVtDb250YWluZXIgUmVnaXN0cnkgb24gR2l0aHViXVtnaGNyLWJhZGdlXV1bZ2hjci11cmxdCjwhLS0gQmFkZ2VzOiBjb2RlIHF1YWxpdHkgIC0tPgpbIVtHbyBSZXBvcnQgQ2FyZF1bZ29jYXJkLWJhZGdlXV1bZ29jYXJkLXVybF0gWyFbQ29kZUZhY3RvciBHcmFkZV1bY29kZWZhY3Rvci1iYWRnZV1dW2NvZGVmYWN0b3ItdXJsXQo8IS0tIEJhZGdlczogbGljZW5zZSAmIGNvbXBsaWFuY2UgLS0+ClshW0xpY2Vuc2VdW2xpY2Vuc2UtYmFkZ2VdXVtsaWNlbnNlLXVybF0gWyFbT3BlbiBTU0YgU2NvcmVjYXJkXVtvc3NmLWJhZGdlXV1bb3NzZi11cmxdIFshW09wZW5TU0YgQmVzdCBQcmFjdGljZXNdW29zc2YtY2NpLWJhZGdlXV1bb3NzZi1jY2ktdXJsXSBbIVtPU1MgbGljZW5jZXMgc3RhdHVzXVtmb3NzYS1iYWRnZV1dW2Zvc3NhLXVybF0KPCEtLSBCYWRnZXM6IGRvY3VtZW50YXRpb24gJiBzdXBwb3J0IC0tPgo8IS0tIEJhZGdlczogb3RoZXJzICYgc3RhdHMgLS0+ClshW0RvY3VtZW50YXRpb25dW2RvYy1iYWRnZV1dW2RvYy11cmxdIFshW0dvRG9jXVtnb2RvYy1iYWRnZV1dW2dvZG9jLXVybF0gWyFbU2xhY2sgQ2hhbm5lbF1bc2xhY2stYmFkZ2VdXVtzbGFjay11cmxdIFshW2dvIHZlcnNpb25dW2dvdmVyc2lvbi1iYWRnZV1dW2dvdmVyc2lvbi11cmxdICFbVG9wIGxhbmd1YWdlXVt0b3AtYmFkZ2VdICFbQ29tbWl0cyBzaW5jZSBsYXRlc3QgcmVsZWFzZV1bY29tbWl0cy1iYWRnZV0KCi0tLQoKVGhpcyBwcm9qZWN0IGNvbnRhaW5zIGEgZ29sYW5nIGltcGxlbWVudGF0aW9uIG9mIFN3YWdnZXIgMi4wIChha2EgW09wZW5BUEkgMi4wXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL29sZC12My4yLjAtZGV2L3ZlcnNpb25zLzIuMC5tZCkpLgpJdCBwcm92aWRlIHRvb2xzIHRvIHdvcmsgd2l0aCBzd2FnZ2VyIHNwZWNpZmljYXRpb25zLgoKW1N3YWdnZXJdKGh0dHBzOi8vc3dhZ2dlci5pby8pIGlzIGEgc2ltcGxlIHlldCBwb3dlcmZ1bCByZXByZXNlbnRhdGlvbiBvZiB5b3VyIFJFU1RmdWwgQVBJLjxicj4KCiMjIERvY3VtZW50YXRpb24KCjxodHRwczovL2dvc3dhZ2dlci5pbz4KCiMjICBGZWF0dXJlcwoKYGdvLXN3YWdnZXJgIGJyaW5ncyB0byB0aGUgZ28gY29tbXVuaXR5IGEgY29tcGxldGUgc3VpdGUgb2YgZnVsbHktZmVhdHVyZWQsIGhpZ2gtcGVyZm9ybWFuY2UsIEFQSSBjb21wb25lbnRzIHRvICB3b3JrIHdpdGggYSBTd2FnZ2VyIEFQSTogc2VydmVyLCBjbGllbnQgYW5kIGRhdGEgbW9kZWwuCgoqIEdlbmVyYXRlcyBhIHNlcnZlciBmcm9tIGEgc3dhZ2dlciBzcGVjaWZpY2F0aW9uCiogR2VuZXJhdGVzIGEgY2xpZW50IGZyb20gYSBzd2FnZ2VyIHNwZWNpZmljYXRpb24KKiBHZW5lcmF0ZXMgYSBDTEkgKGNvbW1hbmQgbGluZSB0b29sKSBmcm9tIGEgc3dhZ2dlciBzcGVjaWZpY2F0aW9uIChhbHBoYSBzdGFnZSkKKiBTdXBwb3J0cyBtb3N0IGZlYXR1cmVzIG9mZmVyZWQgYnkganNvbnNjaGVtYSBhbmQgc3dhZ2dlciwgaW5jbHVkaW5nIHBvbHltb3JwaGlzbQoqIEdlbmVyYXRlcyBhIHN3YWdnZXIgc3BlY2lmaWNhdGlvbiBmcm9tIGFubm90YXRlZCBnbyBjb2RlCiogQWRkaXRpb25hbCB0b29scyB0byB3b3JrIHdpdGggYSBzd2FnZ2VyIHNwZWMKKiBHcmVhdCBjdXN0b21pemF0aW9uIGZlYXR1cmVzLCB3aXRoIHZlbmRvciBleHRlbnNpb25zIGFuZCBjdXN0b21pemFibGUgdGVtcGxhdGVzCgpPdXIgZm9jdXMgd2l0aCBjb2RlIGdlbmVyYXRpb24gaXMgdG8gcHJvZHVjZSBpZGlvbWF0aWMsIGZhc3QgZ28gY29kZSwgd2hpY2ggcGxheXMgbmljZSB3aXRoIGdvbGludCwgZ28gdmV0IGV0Yy4KCltNb3JlIGRldGFpbHNdKGh0dHBzOi8vZ29zd2FnZ2VyLmlvL2dvLXN3YWdnZXIvZmVhdHVyZXMpLgoKIyMgIFByb2plY3Qgc3RhdHVzCgpUaGlzIHByb2plY3Qgc3VwcG9ydHMgT3BlbkFQSSAyLjAuICoqQXQgdGhpcyBtb21lbnQgaXQgZG9lcyBub3Qgc3VwcG9ydCBPcGVuQVBJIDMueCoqLgoKYGdvLXN3YWdnZXJgIGlzIG5vdyBmZWF0dXJlIGNvbXBsZXRlIGFuZCBoYXMgc3RhYmlsaXplZCBpdHMgQVBJLgoKTW9zdCBmZWF0dXJlcyBhbmQgYnVpbGRpbmcgYmxvY2tzIGFyZSBub3cgaW4gYSBzdGFibGUgc3RhdGUsIHdpdGggYSByaWNoIHNldCBvZiBDSSB0ZXN0cy4KClRoZSBnby1vcGVuYXBpIGNvbW11bml0eSBhY3RpdmVseSBjb250aW51ZXMgYnJpbmdpbmcgZml4ZXMgYW5kIGVuaGFuY2VtZW50cyB0byB0aGlzIGNvZGUgYmFzZS4KClRoZXJlIGlzIHN0aWxsIG11Y2ggcm9vbSBmb3IgaW1wcm92ZW1lbnQ6IGNvbnRyaWJ1dG9ycyBhbmQgUFIncyBhcmUgd2VsY29tZS4gWW91IG1heSBhbHNvIGdldCBpbiB0b3VjaCB3aXRoIG1haW50YWluZXJzIG9uIFtvdXIgc2xhY2sgY2hhbm5lbF0oaHR0cHM6Ly9zbGFja2luLmdvc3dhZ2dlci5pbykuCgojIyBJbnN0YWxsaW5nCgpgYGBzaApnbyBpbnN0YWxsIGdpdGh1Yi5jb20vZ28tc3dhZ2dlci9nby1zd2FnZ2VyL2NtZC9zd2FnZ2VyQGxhdGVzdApgYGAKCmBnby1zd2FnZ2VyYCBpcyBhbHNvIGF2YWlsYWJsZSBhcyBiaW5hcnkgb3IgZG9ja2VyIHJlbGVhc2VzIGFzIHdlbGwgYXMgZnJvbSBzb3VyY2U6IFttb3JlIGRldGFpbHNdKGh0dHBzOi8vZ29zd2FnZ2VyLmlvL2dvLXN3YWdnZXIvaW5zdGFsbCkuCgojIyBUcnkgaXQKClRyeSBgZ28tc3dhZ2dlcmAgaW4gYSBmcmVlIG9ubGluZSB3b3Jrc3BhY2UgdXNpbmcgR2l0cG9kOgoKWyFbT3BlbiBpbiBHaXRwb2RdKGh0dHBzOi8vZ2l0cG9kLmlvL2J1dHRvbi9vcGVuLWluLWdpdHBvZC5zdmcpXShodHRwczovL2dpdHBvZC5pbyNodHRwczovL2dpdGh1Yi5jb20vZ28tc3dhZ2dlci9nby1zd2FnZ2VyKQoKIyMgTGljZW5zaW5nCgpUaGUgdG9vbGtpdCBpdHNlbGYgaXMgbGljZW5zZWQgdW5kZXIgYW4gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMi4wOgpbU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBdKC4vTElDRU5TRSkuCgpKdXN0IGxpa2Ugc3dhZ2dlciwgdGhpcyBkb2VzIG5vdCBjb3ZlciBjb2RlIGdlbmVyYXRlZCBieSB0aGUgdG9vbGtpdC4gVGhhdCBjb2RlIGlzIGVudGlyZWx5IHlvdXJzIHRvIGxpY2Vuc2UgaG93ZXZlciB5b3Ugc2VlIGZpdC4KCiMjIyBMaWNlbmNlIHNjYW4gb24gZGVwZW5kZW5jaWVzIAoKWyFbRk9TU0EgU3RhdHVzXVtmb3NzYS1iYWRnZS1sYXJnZV1dW2Zvc3NhLXVybC1sYXJnZV0KCjwhLS0gQmFkZ2VzOiBzdGF0dXMgIC0tPgpbdGVzdC1iYWRnZV06IGh0dHBzOi8vZ2l0aHViLmNvbS9nby1zd2FnZ2VyL2dvLXN3YWdnZXIvYWN0aW9ucy93b3JrZmxvd3MvdGVzdC55YW1sL2JhZGdlLnN2ZwpbdGVzdC11cmxdOiBodHRwczovL2dpdGh1Yi5jb20vZ28tc3dhZ2dlci9nby1zd2FnZ2VyL2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3QueWFtbApbY292LWJhZGdlXTogaHR0cHM6Ly9jb2RlY292LmlvL2doL2dvLXN3YWdnZXIvZ28tc3dhZ2dlci9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2ZwpbY292LXVybF06IGh0dHBzOi8vY29kZWNvdi5pby9naC9nby1zd2FnZ2VyL2dvLXN3YWdnZXIKW3Z1bG4tc2Nhbi1iYWRnZV06IGh0dHBzOi8vZ2l0aHViLmNvbS9nby1zd2FnZ2VyL2dvLXN3YWdnZXIvYWN0aW9ucy93b3JrZmxvd3Mvc2Nhbm5lci55YW1sL2JhZGdlLnN2ZwpbdnVsbi1zY2FuLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9nby1zd2FnZ2VyL2dvLXN3YWdnZXIvYWN0aW9ucy93b3JrZmxvd3Mvc2Nhbm5lci55YW1sCltjb2RlcWwtYmFkZ2VdOiBodHRwczovL2dpdGh1Yi5jb20vZ28tc3dhZ2dlci9nby1zd2FnZ2VyL2FjdGlvbnMvd29ya2Zsb3dzL2NvZGVxbC55YW1sL2JhZGdlLnN2ZwpbY29kZXFsLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9nby1zd2FnZ2VyL2dvLXN3YWdnZXIvYWN0aW9ucy93b3JrZmxvd3MvY29kZXFsLnlhbWwKPCEtLSBCYWRnZXM6IHJlbGVhc2UgJiBkb2NrZXIgaW1hZ2VzICAtLT4KW3JlbGVhc2UtYmFkZ2VdOiBodHRwczovL2JhZGdlLmZ1cnkuaW8vZ2gvZ28tc3dhZ2dlciUyRmdvLXN3YWdnZXIuc3ZnCltyZWxlYXNlLXVybF06IGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9naC9nby1zd2FnZ2VyJTJGZ28tc3dhZ2dlcgpbcXVheS1iYWRnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZHluYW1pYy9qc29uP3VybD1odHRwcyUzQSUyRiUyRnF1YXkuaW8lMkZhcGklMkZ2MSUyRnJlcG9zaXRvcnklMkZnb3N3YWdnZXIlMkZzd2FnZ2VyJTJGdGFnJTJGJTNGbGltaXQlM0QxJTI2b25seUFjdGl2ZVRhZ3MlM0R0cnVlJTI2ZmlsdGVyX3RhZ19uYW1lJTNEbGlrZSUzQXYmbGFiZWw9Q29udGFpbmVyJTIwUmVnaXN0cnklMjBvbiUyMHF1YXkuaW8mcXVlcnk9JTI0LnRhZ3NbOjFdLm5hbWUmbG9nbz1yZWRoYXRvcGVuc2hpZnQmbG9nb0NvbG9yPSNFRTAwMDA/Y29sb3I9Z3JlZW4KW3F1YXktdXJsXTogaHR0cHM6Ly9xdWF5LmlvL3JlcG9zaXRvcnkvZ29zd2FnZ2VyL3N3YWdnZXI/dGFiPXRhZ3MKW2doY3ItYmFkZ2VdOiBodHRwczovL2doY3ItYmFkZ2UtaXB2Mi5vbnJlbmRlci5jb20vZ28tc3dhZ2dlci9nby1zd2FnZ2VyL2xhdGVzdF90YWc/aWdub3JlPXNoYS0qLGVkZ2UsbWFzdGVyJmxhYmVsPUNvbnRhaW5lciUyMFJlZ2lzdHJ5JTIwb24lMjBHaXRodWIKW2doY3ItdXJsXTogaHR0cHM6Ly9naXRodWIuY29tL29yZ3MvZ28tc3dhZ2dlci9wYWNrYWdlcy9jb250YWluZXIvZ28tc3dhZ2dlci92ZXJzaW9ucz9maWx0ZXJzW3ZlcnNpb25fdHlwZV09dGFnZ2VkCjwhLS0gQmFkZ2VzOiBjb2RlIHF1YWxpdHkgIC0tPgpbZ29jYXJkLWJhZGdlXTogaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vZ28tc3dhZ2dlci9nby1zd2FnZ2VyCltnb2NhcmQtdXJsXTogaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL2dvLXN3YWdnZXIvZ28tc3dhZ2dlcgpbY29kZWZhY3Rvci1iYWRnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY29kZWZhY3Rvci9ncmFkZS9naXRodWIvZ28tc3dhZ2dlci9nby1zd2FnZ2VyCltjb2RlZmFjdG9yLXVybF06IGh0dHBzOi8vd3d3LmNvZGVmYWN0b3IuaW8vcmVwb3NpdG9yeS9naXRodWIvZ28tc3dhZ2dlci9nby1zd2FnZ2VyCjwhLS0gQmFkZ2VzOiBkb2N1bWVudGF0aW9uICYgc3VwcG9ydCAtLT4KW2RvYy1iYWRnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZG9jLXNpdGUtYmx1ZT9saW5rPWh0dHBzJTNBJTJGJTJGZ29zd2FnZ2VyLmlvJTJGZ28tc3dhZ2dlciUyRgpbZG9jLXVybF06IGh0dHBzOi8vZ29zd2FnZ2VyLmlvL2dvLXN3YWdnZXIKW2dvZG9jLWJhZGdlXTogaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nby1zd2FnZ2VyL2dvLXN3YWdnZXI/c3RhdHVzLnN2ZwpbZ29kb2MtdXJsXTogaHR0cDovL2dvZG9jLm9yZy9naXRodWIuY29tL2dvLXN3YWdnZXIvZ28tc3dhZ2dlcgpbc2xhY2stYmFkZ2VdOiBodHRwczovL3NsYWNraW4uZ29zd2FnZ2VyLmlvL2JhZGdlLnN2Zwpbc2xhY2stdXJsXTogaHR0cHM6Ly9zbGFja2luLmdvc3dhZ2dlci5pbwo8IS0tIEJhZGdlczogbGljZW5zZSAmIGNvbXBsaWFuY2UgLS0+CltsaWNlbnNlLWJhZGdlXTogaHR0cDovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtQXBhY2hlJTIwdjItb3JhbmdlLnN2ZwpbbGljZW5zZS11cmxdOiBodHRwczovL2dpdGh1Yi5jb20vZ28tc3dhZ2dlci9nby1zd2FnZ2VyLz90YWI9QXBhY2hlLTIuMC0xLW92LWZpbGUjcmVhZG1lCltvc3NmLWJhZGdlXTogaHR0cHM6Ly9hcGkuc2VjdXJpdHlzY29yZWNhcmRzLmRldi9wcm9qZWN0cy9naXRodWIuY29tL2dvLXN3YWdnZXIvZ28tc3dhZ2dlci9iYWRnZQpbb3NzZi11cmxdOiBodHRwczovL3NlY3VyaXR5c2NvcmVjYXJkcy5kZXYvdmlld2VyLz91cmk9Z2l0aHViLmNvbS9nby1zd2FnZ2VyL2dvLXN3YWdnZXIKW29zc2YtY2NpLWJhZGdlXTogaHR0cHM6Ly93d3cuYmVzdHByYWN0aWNlcy5kZXYvcHJvamVjdHMvMTEzNTkvYmFkZ2UKW29zc2YtY2NpLXVybF06IGh0dHBzOi8vd3d3LmJlc3RwcmFjdGljZXMuZGV2L3Byb2plY3RzLzExMzU5Cltmb3NzYS1iYWRnZV06IGh0dHBzOi8vYXBwLmZvc3NhLmlvL2FwaS9wcm9qZWN0cy9naXQlMkJnaXRodWIuY29tJTJGZ28tc3dhZ2dlciUyRmdvLXN3YWdnZXIuc3ZnP3R5cGU9c2hpZWxkCltmb3NzYS11cmxdOiBodHRwczovL2FwcC5mb3NzYS5pby9wcm9qZWN0cy9naXQlMkJnaXRodWIuY29tJTJGZ28tc3dhZ2dlciUyRmdvLXN3YWdnZXI/cmVmPWJhZGdlX3NoaWVsZApbZm9zc2EtYmFkZ2UtbGFyZ2VdOiBodHRwczovL2FwcC5mb3NzYS5pby9hcGkvcHJvamVjdHMvZ2l0JTJCZ2l0aHViLmNvbSUyRmdvLXN3YWdnZXIlMkZnby1zd2FnZ2VyLnN2Zz90eXBlPWxhcmdlCltmb3NzYS11cmwtbGFyZ2VdOiBodHRwczovL2FwcC5mb3NzYS5pby9wcm9qZWN0cy9naXQlMkJnaXRodWIuY29tJTJGZ28tc3dhZ2dlciUyRmdvLXN3YWdnZXI/cmVmPWJhZGdlX2xhcmdlCltvYWktdXJsXTogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItc3BlYy9tYXN0ZXIvTElDRU5TRQo8IS0tIEJhZGdlczogb3RoZXJzICYgc3RhdHMgLS0+Cltnb3ZlcnNpb24tYmFkZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9nby1tb2QvZ28tdmVyc2lvbi9nby1zd2FnZ2VyL2dvLXN3YWdnZXIKW2dvdmVyc2lvbi11cmxdOiBodHRwczovL2dpdGh1Yi5jb20vZ28tc3dhZ2dlci9nby1zd2FnZ2VyL2Jsb2IvbWFzdGVyL2dvLm1vZApbdG9wLWJhZGdlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGFuZ3VhZ2VzL3RvcC9nby1zd2FnZ2VyL2dvLXN3YWdnZXIKW2NvbW1pdHMtYmFkZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9jb21taXRzLXNpbmNlL2dvLXN3YWdnZXIvZ28tc3dhZ2dlci9sYXRlc3QK readmeEtag: '"74f6d1cd7718c8461a573dd85cbdd7876beba7ad"' readmeLastModified: Sun, 09 Nov 2025 20:29:42 GMT repositoryId: 26726495 description: Swagger 2.0 implementation for go created: '2014-11-16T20:13:15Z' updated: '2026-02-05T16:28:58Z' language: Go archived: false stars: 9936 watchers: 112 forks: 1293 owner: go-swagger logo: https://avatars.githubusercontent.com/u/10362650?v=4 license: Apache-2.0 repoEtag: '"2854fd5bea806a164e813794ed0f7d4ef9c71abe1e682b9e641fe12f21b5d7c9"' repoLastModified: Thu, 05 Feb 2026 16:28:58 GMT foundInMaster: true id: ef136df9ffb40bb33ccbd76665d8f5b4 - source: https://openapi.tools/ name: docs category: - Parsers - Converters - SDK link: https://github.com/go-oas/docs repository: https://github.com/go-oas/docs source_description: >- A modern alternative to `go-swagger`. Offers generation and parsing of OpenAPI Specs, depending on the usage. v3: true v3_1: true id: 421481e00ec1f8e0df0d1e7806edbe2d repositoryMetadata: base64Readme: >- IyBkb2NzCgojIyMgQXV0b21hdGljYWxseSBnZW5lcmF0ZSBSRVNUZnVsIEFQSSBkb2N1bWVudGF0aW9uIGZvciBHTyBwcm9qZWN0cyAtIGFsaWduZWQgd2l0aCBbT3BlbiBBUEkgU3BlY2lmaWNhdGlvbiBzdGFuZGFyZF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjMubWQpLgoKPGltZyBhbGlnbj0icmlnaHQiIHdpZHRoPSIxODBweCIgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20va2F5bmV0aWsvZG90ZmlsZXMvbWFzdGVyL3N2Zy1yZXNvdXJjZXMvZ28tZ3JwYy13ZWIuc3ZnIj4KCiFbR29sYW5nQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1vYXMvZG9jcy93b3JrZmxvd3MvZ29sYW5nY2kvYmFkZ2Uuc3ZnP2JyYW5jaD1tYWluKQohW0J1aWxkXShodHRwczovL2dpdGh1Yi5jb20vZ28tb2FzL2RvY3Mvd29ya2Zsb3dzL0J1aWxkL2JhZGdlLnN2Zz9icmFuY2g9bWFpbikKWyFbVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS92ZXJzaW9uLXYxLjAuNS1zdWNjZXNzLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1vYXMvZG9jcy9yZWxlYXNlcykKWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL2dvLW9hcy9kb2NzKV0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL2dvLW9hcy9kb2NzKQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi9nby1vYXMvZG9jcy9iYWRnZS5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL2NvdmVyYWxscy5pby9naXRodWIvZ28tb2FzL2RvY3M/YnJhbmNoPW1haW4pClshW2NvZGViZWF0IGJhZGdlXShodHRwczovL2NvZGViZWF0LmNvL2JhZGdlcy8zMmI4NjU1Ni04NGUzLTRkYjktOWYxMS05MjNkMTI5OTRmOTApXShodHRwczovL2NvZGViZWF0LmNvL3Byb2plY3RzL2dpdGh1Yi1jb20tZ28tb2FzLWRvY3MtbWFpbikKWyFbR28gUmVmZXJlbmNlXShodHRwczovL3BrZy5nby5kZXYvYmFkZ2UvZ2l0aHViLmNvbS9nby1vYXMvZG9jcy5zdmcpXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9nby1vYXMvZG9jcykKWyFbTWVudGlvbmVkIGluIEF3ZXNvbWUgR29dKGh0dHBzOi8vYXdlc29tZS5yZS9tZW50aW9uZWQtYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9hd2Vzb21lLWdvLmNvbSkKCmdvLU9BUyBEb2NzIGNvbnZlcnRzIHN0cnVjdHVyZWQgT0FTMyAoU3dhZ2dlcjMpIG9iamVjdHMgaW50byB0aGUgT3BlbiBBUEkgU3BlY2lmaWNhdGlvbiAmIGF1dG9tYXRpY2FsbHkgc2VydmVzIGl0IG9uCmNob3NlbiByb3V0ZSBhbmQgcG9ydC4gSXQncyBleHRyZW1lbHkgZmxleGlibGUgYW5kIHNpbXBsZSwgc28gYmFzaWNhbGx5IGl0IGNhbiBiZSBpbnRlZ3JhdGVkIGludG8gYW55IGZyYW1ld29yayBvcgpleGlzdGluZyBwcm9qZWN0LgoKV2UgaW52aXRlIGFueW9uZSBpbnRlcmVzdGVkIHRvIGpvaW4gb3VyICoqW0dIIERpc2N1c3Npb25zIGJvYXJkXShodHRwczovL2dpdGh1Yi5jb20vZ28tb2FzL2RvY3MvZGlzY3Vzc2lvbnMpKiouIEhvbmVzdApmZWVkYmFjayB3aWxsIGVuYWJsZSB1cyB0byBidWlsZCBiZXR0ZXIgcHJvZHVjdCBhbmQgYXQgdGhlIHNhbWUgdGltZSBub3Qgd2FzdGUgdmFsdWFibGUgdGltZSBhbmQgZWZmb3J0IG9uIHNvbWV0aGluZwp0aGF0IG1pZ2h0IG5vdCBmaXQgaW50ZW5kZWQgdXNhZ2UuIFNvIGlmIHlvdSBjYW4sIHBsZWFzZSBzcGFyZSBmZXcgbWludXRlcyB0byBnaXZlIHlvdXIgb3BpbmlvbiBvZiB3aGF0IHNob3VsZCBiZSBkb25lCm5leHQsIG9yIHdoYXQgc2hvdWxkIGJlIHRoZSBwcmlvcml0eSBmb3Igb3VyIHJvYWRtYXAuIDptdXNjbGU6IDp0YWRhOgoKLS0tLQoKIyMgVGFibGUgb2YgQ29udGVudHMKCi0gW0dldHRpbmcgU3RhcnRlZF0oI2dldHRpbmctc3RhcnRlZCkKLSBbSG93IHRvIHVzZV0oI2hvdy10by11c2UpCiAgICAqIFtFeGFtcGxlc10oI2V4YW1wbGVzKQotIFtDb250YWN0XSgjY29udGFjdCkKLSBbVGhlIGN1cnJlbnQgcm9hZG1hcCAocGxhbm5lZCBmZWF0dXJlcyldKCNyb2FkbWFwKQoKIyMgR2V0dGluZyBTdGFydGVkCgoxLiBEb3dubG9hZCAqKl9kb2NzXyoqIGJ5IHVzaW5nOgogICBgYGBzaAogICAkIGdvIGdldCAtdSBnaXRodWIuY29tL2dvLW9hcy9kb2NzCiAgIGBgYCAKMi4gQWRkIG9uZSBsaW5lIGFubm90YXRpb24gdG8gdGhlIGhhbmRsZXIgeW91IHdpc2ggdG8gdXNlIGluIHRoZSBmb2xsb3dpbmcKICAgZm9ybWF0OiBgLy8gQE9BUyA8RlVOQ19OQU1FPiA8Uk9VVEU+IDxIVFRQX01FVEhPRD5gCiAgIEV4YW1wbGVzOgogICBgYGAKICAgLy8gQE9BUyBoYW5kbGVDcmVhdGVVc2VyIC91c2VycyBQT1NUCiAgIC8vIEBPQVMgaGFuZGxlR2V0VXNlciAvdXNlcnMgR0VUCiAgIGBgYAozLiBEZWNsYXJlIGFsbCByZXF1aXJlZCBkb2N1bWVudGF0aW9uIGVsZW1lbnRzIHRoYXQgYXJlIHNoYXJlZC4gT3IgcmV1c2Ugb25lcyB0aGF0IGFscmVhZHkgZXhpc3QgaW4gdGhlIGV4YW1wbGVzCiAgIGRpcmVjdG9yeS4KNC4gRGVjbGFyZSBzcGVjaWZpYyBkb2NzIGVsZW1lbnRzIHBlciByb3V0ZS4KCi0tLS0KCiMjIEhvdyB0byB1c2UKCkZvciBtb3JlIGV4cGxpY2l0IGV4YW1wbGUsIHBsZWFzZSByZWZlciB0byBbZG9jcy9leGFtcGxlc10oaHR0cHM6Ly9naXRodWIuY29tL2dvLW9hcy9kb2NzL2V4YW1wbGVzKQoKQWRkIE9BUyBUQUcgdG8geW91ciBleGlzdGluZyBoYW5kbGVyIHRoYXQgaGFuZGxlcyBmZXRjaGluZyBvZiBhIFVzZXI6CgpgYGBnbwpwYWNrYWdlIHVzZXJzCgppbXBvcnQgIm5ldC9odHRwIgoKLy8gQE9BUyBoYW5kbGVHZXRVc2VyIC91c2VycyBHRVQKZnVuYyAocyAqc2VydmljZSkgaGFuZGxlR2V0VXNlcigpIGh0dHAuSGFuZGxlckZ1bmMgewoJcmV0dXJuIGZ1bmModyBodHRwLlJlc3BvbnNlV3JpdGVyLCByICpodHRwLlJlcXVlc3QpIHsKCX0KfQpgYGAKCkNyZWF0ZSBhIHVuaXF1ZSBBUEkgZG9jdW1lbnRhdGlvbiBmdW5jdGlvbiBmb3IgdGhhdCBlbmRwb2ludDoKCmBgYGdvCnBhY2thZ2UgbWFpbgoKaW1wb3J0ICJnaXRodWIuY29tL2dvLW9hcy9kb2NzIgoKZnVuYyBoYW5kbGVHZXRVc2VyUm91dGUob2FzUGF0aEluZGV4IGludCwgb2FzICpkb2NzLk9BUykgewoJcGF0aCA6PSBvYXMuR2V0UGF0aEJ5SW5kZXgob2FzUGF0aEluZGV4KQoKCXBhdGguU3VtbWFyeSA9ICJHZXQgYSBVc2VyIgoJcGF0aC5PcGVyYXRpb25JRCA9ICJnZXRVc2VyIgoJcGF0aC5SZXF1ZXN0Qm9keSA9IGRvY3MuUmVxdWVzdEJvZHl7fQoJcGF0aC5SZXNwb25zZXMgPSBkb2NzLlJlc3BvbnNlc3sKCQlnZXRSZXNwb25zZU9LKCksCgl9CgoJcGF0aC5UYWdzID0gYXBwZW5kKHBhdGguVGFncywgInBldCIpCn0KYGBgCgpCZWFyIGluIG1pbmQgdGhhdCBjcmVhdGluZyBhIHVuaXF1ZSBmdW5jdGlvbiBwZXIgZW5kcG9pbnQgaGFuZGxlciBpcyBub3QgcmVxdWlyZWQsIGJ1dCBzaW1wbHkgcHJvdmlkZXMgZ29vZCB2YWx1ZSBpbgp1c2FiaWxpdHkgb2Ygc2hhcmVkIGRvY3VtZW50YXRpb24gZWxlbWVudHMuCgpPbmNlIHlvdSBjcmVhdGVkIHRoZSBmdW5jdGlvbiwgc2ltcGx5IHJlZ2lzdGVyIGl0IGZvciBwYXJzaW5nIGJ5IHVzaW5nIGBBdHRhY2hSb3V0ZXMoKWAgZGVmaW5lZCB1cG9uIGBPQVNgIHN0cnVjdHVyZS4KRS5nLjoKCmBgYGdvCgpwYWNrYWdlIG1haW4KCmltcG9ydCAoCgkiZ2l0aHViLmNvbS9nby1vYXMvZG9jcyIKKQoKZnVuYyBtYWluKCkgewoJYXBpRG9jIDo9IGRvY3MuTmV3KCkKCWFwaURvYy5BdHRhY2hSb3V0ZXMoW11pbnRlcmZhY2V7fXsKCQloYW5kbGVHZXRVc2VyUm91dGUsCgl9KQpgYGAKCklmIHRoaXMgYXBwcm9hY2ggaXMgdG9vIGZsZXhpYmxlIGZvciB5b3UsIHlvdSBhcmUgYWx3YXlzIGxlZnQgd2l0aCB0aGUgcG9zc2liaWxpdHkgdG8gY3JlYXRlIHlvdXIgb3duIGF0dGFjaGVyIC0gb3IgYW55Cm90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0gZm9yIHRoYXQgbWF0dGVyLgoKIyMjIEV4YW1wbGVzCgpUbyBydW4gZXhhbXBsZXMsIGFuZCBjaGVja291dCBob3N0ZWQgZG9jdW1lbnRhdGlvbiB2aWEgU3dhZ2dlciBVSSwgaXNzdWUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgc2gKJCBnbyBydW4gLi9leGFtcGxlcy9maWxlX291dHB1dC8qLmdvCiMgb3IgdW5jb21tZW50IGxpbmUgNDAgYW5kIGNvbW1lbnQgbGluZSAzOCBpbiBpbnRlcm5hbC9kaXN0L2luZGV4Lmh0bWwgYmVmb3JlIHJ1bm5pbmc6CiQgZ28gcnVuIC4vZXhhbXBsZXMvc3RyZWFtX291dHB1dC8qLmdvCmBgYAoKQW5kIG5hdmlnYXRlIHRvIGBodHRwOi8vbG9jYWxob3N0OjMwMDUvZG9jcy9hcGkvYCBpbiBjYXNlIHRoYXQgeW91IGRpZG4ndCBjaGFuZ2UgYW55dGhpbmcgYmVmb3JlIHJ1bm5pbmcgdGhlIGV4YW1wbGUKYWJvdmUuCgotLS0tCgojIyBDb250YWN0CgpDaGVjayBvdXQgdGhlIGN1cnJlbnQgW1Byb2plY3QgYm9hcmRdKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1vYXMvZG9jcy9wcm9qZWN0cy8xKSBvcgpvdXIgKipbR0ggRGlzY3Vzc2lvbnMgYm9hcmRdKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1vYXMvZG9jcy9kaXNjdXNzaW9ucykqKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCllvdSBjYW4gam9pbiBvdXIgVGVsZWdyYW0gZ3JvdXAgYXQ6IFtodHRwczovL3QubWUvZ29fb2FzXShodHRwczovL3QubWUvZ29fb2FzKQoKIyMgUm9hZG1hcAoKfCBGZWF0dXJlIChHSCBpc3N1ZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVsZWFzZSB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfAp8IFtWYWxpZGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vZ28tb2FzL2RvY3MvaXNzdWVzLzE3KSAgICAgICAgICB8IEFkZCB2YWxpZGF0aW9uIHRvIGFsbCBzdHJ1Y3R1cmVzIGJhc2VkIG9uIE9BUzMuMC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB2MS4xLjAgIHwKfCBbQ0xJXShodHRwczovL2dpdGh1Yi5jb20vZ28tb2FzL2RvY3MvaXNzdWVzLzE4KSAgICAgICAgICAgICAgICAgfCBBZGQgQ0xJIHN1cHBvcnQgLSBtYWtlIGl0IENMSSBmcmllbmRseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdjEuMi4wICB8CnwgW1Bvc3RtYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1vYXMvZG9jcy9pc3N1ZXMvMTkpICAgICAgICAgICAgIHwgQWRkIHBvc3RtYW4gc3VwcG9ydCB2aWEgUE0gQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHYxLjMuMCAgfAp8IFtSZURvY10oaHR0cHM6Ly9naXRodWIuY29tL2dvLW9hcy9kb2NzL2lzc3Vlcy8yMCkgICAgICAgICAgICAgICB8IEFkZCBSZURvYyBzdXBwb3J0IGFzIGFuIGFsdGVybmF0aXZlIHRvIFN3YWdnZXJVSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB2MS40LjAgIHwKfCBbRTJFIEF1dG8tZ2VuZXJhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL2dvLW9hcy9kb2NzL2lzc3Vlcy8yMSkgfCBHbyB0ZXN0cyBjb252ZXJzaW9uIHRvIEN5cHJlc3MvS2F0YWxvbiBzdWl0ZXMgKGNvbnZlcnQgbW9ja2VkIHVuaXQgdGVzdHMgaW50byBlMmUgdGVzdHMpIHwgdjEuNS4wICB8Cgo= readmeEtag: '"815b19fa38654d6cd804e799ef507047e040dc05"' readmeLastModified: Wed, 15 Mar 2023 07:41:11 GMT repositoryId: 333859606 description: >- Automatically generate RESTful API documentation for GO projects - aligned with Open API Specification standard created: '2021-01-28T18:51:47Z' updated: '2025-09-27T15:33:34Z' language: Go archived: false stars: 48 watchers: 1 forks: 6 owner: go-oas logo: https://avatars.githubusercontent.com/u/78081803?v=4 license: MIT repoEtag: '"be1e6c936790de5db538901397f449f859142b6359f479eb5c47ba3c931b96b1"' repoLastModified: Sat, 27 Sep 2025 15:33:34 GMT foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags name: restful-react homepage: https://github.com/contiamo/restful-react language: React (Typescript) source_description: >- Generate React hooks with appropriate type-signatures from OpenAPI descriptions category: SDK link: https://github.com/contiamo/restful-react repository: https://github.com/contiamo/restful-react v2: true v3: true repositoryMetadata: base64Readme: >- IyBgcmVzdGZ1bC1yZWFjdGAKClshW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9yZXN0ZnVsLXJlYWN0LnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3Jlc3RmdWwtcmVhY3QpCgrimqDvuI8gKipyZXN0ZnVsLXJlYWN0IGhhcyBiZWVuIGRlcHJlY2F0ZWQ6KiogV2UgYXJlIGZvY3VzaW5nIG9uIGEgbmV3IG9wZW4gYXBpIGdlbmVyYXRvciB0aGF0IGdlbmVyYXRlcyBgcmVhY3QtcXVlcnlgIGNvbXBvbmVudHM6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWJpZW4wMTAyL29wZW5hcGktY29kZWdlbiDimqDvuI8KCkJ1aWxkaW5nIFJlYWN0IGFwcHMgdGhhdCBpbnRlcmFjdCB3aXRoIGEgUkVTVGZ1bCBBUEkgcHJlc2VudHMgYSBzZXQgb2YgcXVlc3Rpb25zLCBjaGFsbGVuZ2VzIGFuZCBwb3RlbnRpYWwgZ290Y2hhcy4gVGhpcyBwcm9qZWN0IGFpbXMgdG8gcmVtb3ZlIHN1Y2ggcGl0ZmFsbHMsIGFuZCBwcm92aWRlIGEgcGxlYXNhbnQgZGV2ZWxvcGVyIGV4cGVyaWVuY2Ugd2hlbiBjcmFmdGluZyBzdWNoIGFwcGxpY2F0aW9ucy4KCkl0IGNhbiBiZSBjb25zaWRlcmVkICoqYSB0aGluIHdyYXBwZXIgYXJvdW5kIHRoZSBbZmV0Y2ggQVBJXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9kb2NzL1dlYi9BUEkvRmV0Y2hfQVBJKSBpbiB0aGUgZm9ybSBvZiBSZWFjdCBjb21wb25lbnRzIGFuZCBob29rcy4qKgoKV2hlbiB1c2VkIGluIGEgc2V0dXAgd2l0aCBbT3BlbkFQSSAvIFN3YWdnZXJdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZW5BUElfU3BlY2lmaWNhdGlvbikgc3BlY3MgYW5kIFtUeXBlc2NyaXB0XShodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvKSwgKipyZXN0ZnVsLXJlYWN0IGVuc3VyZXMgYSByZWxpYWJsZSBhbmQgYWx3YXlzIHVwIHRvIGRhdGUgY29udHJhY3QgYmV0d2VlbiBiYWNrZW5kIGFuZCBmcm9udGVuZC4qKiBJdCBnZW5lcmF0ZXMgY29tcG9uZW50cyBhbmQgdHlwZXMgZnJvbSB5b3VyIHNwZWNzIGFuZCBjYW4gYmUgaW50ZWdyYXRlZCBxdWl0ZSBjb21mb3J0YWJseSBpbnRvIHlvdXIgZGV2ZWxvcG1lbnQgd29ya2Zsb3dzIChmZWF0dXJpbmcgZm9yIGV4YW1wbGUgdGhlIGltcG9ydCBvZiBPcGVuQVBJIHNwZWNzIGZyb20geW91ciBnaXRodWIgcmVwb3MpLgoKcmVzdGZ1bC1yZWFjdCBpcyAqKnZlcnkgd2VsbCB0ZXN0ZWQsIHByb2R1Y3Rpb24gcmVhZHkqKiBhbmQgcG93ZXJzIGFsbCBvZiBvdXIgcHJvamVjdHMgYXQgQ29udGlhbW8uCgo8IS0tIFNUQVJUIGRvY3RvYyBnZW5lcmF0ZWQgVE9DIHBsZWFzZSBrZWVwIGNvbW1lbnQgaGVyZSB0byBhbGxvdyBhdXRvIHVwZGF0ZSAtLT4KPCEtLSBET04nVCBFRElUIFRISVMgU0VDVElPTiwgSU5TVEVBRCBSRS1SVU4gZG9jdG9jIFRPIFVQREFURSAtLT4KCi0gW092ZXJ2aWV3XSgjb3ZlcnZpZXcpCi0gW0dldHRpbmcgU3RhcnRlZF0oI2dldHRpbmctc3RhcnRlZCkKLSBbRmVhdHVyZXNdKCNmZWF0dXJlcykKICAtIFtHbG9iYWwgQ29uZmlndXJhdGlvbl0oI2dsb2JhbC1jb25maWd1cmF0aW9uKQogICAgLSBbYFJlc3RmdWxQcm92aWRlcmAgQVBJXSgjcmVzdGZ1bHByb3ZpZGVyLWFwaSkKICAtIFtMb2FkaW5nIGFuZCBFcnJvciBTdGF0ZXNdKCNsb2FkaW5nLWFuZC1lcnJvci1zdGF0ZXMpCiAgLSBbTGF6eSBGZXRjaGluZ10oI2xhenktZmV0Y2hpbmcpCiAgLSBbUmVzcG9uc2UgUmVzb2x1dGlvbl0oI3Jlc3BvbnNlLXJlc29sdXRpb24pCiAgLSBbRGVib3VuY2luZyBSZXF1ZXN0c10oI2RlYm91bmNpbmctcmVxdWVzdHMpCiAgLSBbVHlwZVNjcmlwdCBJbnRlZ3JhdGlvbl0oI3R5cGVzY3JpcHQtaW50ZWdyYXRpb24pCiAgLSBbUXVlcnkgUGFyYW1ldGVyc10oI3F1ZXJ5LXBhcmFtZXRlcnMpCiAgLSBbTXV0YXRpb25zIHdpdGggYHVzZU11dGF0ZWBdKCNtdXRhdGlvbnMtd2l0aC11c2VtdXRhdGUpCiAgLSBbTW9ja3NdKCNtb2NrcykKICAtIFtQb2xsaW5nIHdpdGggYFBvbGxgXSgjcG9sbGluZy13aXRoLXBvbGwpCiAgICAtIFtMb25nIFBvbGxpbmddKCNsb25nLXBvbGxpbmcpCiAgICAtIFtGdWxsIGBQb2xsYCBDb21wb25lbnQgQVBJXSgjZnVsbC1wb2xsLWNvbXBvbmVudC1hcGkpCiAgICAtIFtQb2xsaW5nIGFuZCBDb2RlIEdlbmVyYXRpb25dKCNwb2xsaW5nLWFuZC1jb2RlLWdlbmVyYXRpb24pCiAgLSBbQ29kZSBHZW5lcmF0aW9uIGZyb20gT3BlbkFQSSAvIFN3YWdnZXIgc3BlY3NdKCNjb2RlLWdlbmVyYXRpb24tZnJvbS1vcGVuYXBpLS1zd2FnZ2VyLXNwZWNzKQogICAgLSBbVXNhZ2VdKCN1c2FnZSkKICAgIC0gW1ZhbGlkYXRpb24gb2YgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbl0oI3ZhbGlkYXRpb24tb2YtdGhlLW9wZW5hcGktc3BlY2lmaWNhdGlvbikKICAgIC0gW0FQSSBWZXJzaW9uaW5nXSgjYXBpLXZlcnNpb25pbmcpCiAgICAtIFtJbXBvcnQgZnJvbSBVUkxdKCNpbXBvcnQtZnJvbS11cmwpCiAgICAtIFtJbXBvcnQgZnJvbSBHaXRIdWJdKCNpbXBvcnQtZnJvbS1naXRodWIpCiAgICAtIFtUcmFuc2Zvcm1pbmcgYW4gT3JpZ2luYWwgU3BlY10oI3RyYW5zZm9ybWluZy1hbi1vcmlnaW5hbC1zcGVjKQogICAgLSBbQWR2YW5jZWQgY29uZmlndXJhdGlvbl0oI2FkdmFuY2VkLWNvbmZpZ3VyYXRpb24pCiAgICAgIC0gW0NvbmZpZyBGaWxlIEZvcm1hdF0oI2NvbmZpZy1maWxlLWZvcm1hdCkKICAgICAgLSBbQ29uZmlnIEZpbGUgRXhhbXBsZV0oI2NvbmZpZy1maWxlLWV4YW1wbGUpCiAgICAgIC0gW0N1c3RvbSBnZW5lcmF0b3JdKCNjdXN0b20tZ2VuZXJhdG9yKQogICAgICAtIFtPbmx5IGdlbmVyYXRpbmcgY3VzdG9tIGNvZGUgKG5vIHJlYWN0IGhvb2tzL2NvbXBvbmVudHMpXSgjb25seS1nZW5lcmF0aW5nLWN1c3RvbS1jb2RlLW5vLXJlYWN0LWhvb2tzY29tcG9uZW50cykKLSBbQ29udHJpYnV0aW5nXSgjY29udHJpYnV0aW5nKQogIC0gW0NvZGVdKCNjb2RlKQogIC0gW0hvdyB0byBwdWJsaXNoIHRvIG5wbV0oI2hvdy10by1wdWJsaXNoLXRvLW5wbSkKLSBbYEB3aXRob3V0LWNsaWAgbnBtIHBhY2thZ2VdKCN3aXRob3V0LWNsaS1ucG0tcGFja2FnZSkKLSBbTmV4dCBTdGVwc10oI25leHQtc3RlcHMpCgo8IS0tIEVORCBkb2N0b2MgZ2VuZXJhdGVkIFRPQyBwbGVhc2Uga2VlcCBjb21tZW50IGhlcmUgdG8gYWxsb3cgYXV0byB1cGRhdGUgLS0+CgojIyBPdmVydmlldwoKQXQgaXRzIGNvcmUsIGByZXN0ZnVsLXJlYWN0YCBleHBvc2VzIGEgW2hvb2tdKGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9ob29rcy1pbnRyby5odG1sKSwgY2FsbGVkIGB1c2VHZXRgLiBUaGlzIGNvbXBvbmVudCByZXRyaWV2ZXMgZGF0YSwgZWl0aGVyIG9uIG1vdW50IG9yIGxhdGVyLCBhbmQgdGhlbiBoYW5kbGVzIGVycm9yIHN0YXRlcywgbG9hZGluZyBzdGF0ZXMsIGFuZCBvdGhlciBjYXNlcyBmb3IgeW91LiBBcyBzdWNoLCB5b3UgZ2V0IGEgY29tcG9uZW50IHRoYXQgX2dldHMgc3R1ZmZfIGFuZCB0aGVuIGRvZXMgc3R1ZmYgd2l0aCBpdC4gSGVyZSdzIGEgcXVpY2sgb3ZlcnZpZXcgd2hhdCBpdCBsb29rcyBsaWtlLgoKWyFbRWRpdCByZXN0ZnVsLXJlYWN0IGRlbW9zXShodHRwczovL2NvZGVzYW5kYm94LmlvL3N0YXRpYy9pbWcvcGxheS1jb2Rlc2FuZGJveC5zdmcpXShodHRwczovL2NvZGVzYW5kYm94LmlvL3MvcmVzdGZ1bC1yZWFjdC1kZW1vcy12amV0cykKCmBgYGpzeAppbXBvcnQgUmVhY3QgZnJvbSAicmVhY3QiOwppbXBvcnQgeyB1c2VHZXQgfSBmcm9tICJyZXN0ZnVsLXJlYWN0IjsKCmNvbnN0IE15Q29tcG9uZW50ID0gKCkgPT4gewogIGNvbnN0IHsgZGF0YTogcmFuZG9tRG9nSW1hZ2UgfSA9IHVzZUdldCh7CiAgICBwYXRoOiAiaHR0cHM6Ly9kb2cuY2VvL2FwaS9icmVlZHMvaW1hZ2UvcmFuZG9tIiwKICB9KTsKCiAgcmV0dXJuIDxpbWcgYWx0PSJIZXJlJ3MgYSBnb29kIGJveWUhIiBzcmM9e3JhbmRvbURvZ0ltYWdlICYmIHJhbmRvbURvZ0ltYWdlLm1lc3NhZ2V9IC8+Owp9OwoKZXhwb3J0IGRlZmF1bHQgTXlDb21wb25lbnQ7CmBgYAoKYW5kIG9uIFJlYWN0IE5hdGl2ZSwKW0VkaXQgcmVzdGZ1bC1yZWFjdCBiYXNpYyBkZW1vIG9uIEV4cG9dKGh0dHBzOi8vc25hY2suZXhwby5pby9TSmFTQWo0OXIpCgpgYGBqc3gKaW1wb3J0IHsgQXBwUmVnaXN0cnksIEltYWdlIH0gZnJvbSAicmVhY3QtbmF0aXZlIjsKaW1wb3J0IFJlYWN0IGZyb20gInJlYWN0IjsKCmltcG9ydCB7IHVzZUdldCB9IGZyb20gInJlc3RmdWwtcmVhY3QiOwoKY29uc3QgQXBwID0gKCkgPT4gewogIGNvbnN0IHsgZGF0YTogcmFuZG9tRG9nSW1hZ2UgfSA9IHVzZUdldCh7CiAgICBwYXRoOiAiaHR0cHM6Ly9kb2cuY2VvL2FwaS9icmVlZHMvaW1hZ2UvcmFuZG9tIiwKICB9KTsKICByZXR1cm4gKAogICAgPD4KICAgICAge3JhbmRvbURvZ0ltYWdlICYmICgKICAgICAgICA8SW1hZ2UKICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiAyNTAsIGhlaWdodDogMjUwIH19CiAgICAgICAgICBzb3VyY2U9e3sKICAgICAgICAgICAgdXJpOiByYW5kb21Eb2dJbWFnZS5tZXNzYWdlLAogICAgICAgICAgfX0KICAgICAgICAvPgogICAgICApfQogICAgPC8+CiAgKTsKfTsKCkFwcFJlZ2lzdHJ5LnJlZ2lzdGVyQ29tcG9uZW50KCJyZWFjdC1uYXRpdmUtYXBwIiwgKCkgPT4gQXBwKTsKYGBgCgojIyBHZXR0aW5nIFN0YXJ0ZWQKClRvIGluc3RhbGwgYW5kIHVzZSB0aGlzIGxpYnJhcnksIGluc3RhbGwgaXQgYnkgcnVubmluZyBgeWFybiBhZGQgcmVzdGZ1bC1yZWFjdGAsIG9yIGBucG0gaSByZXN0ZnVsLXJlYWN0IC0tc2F2ZWAgYW5kIHlvdSBzaG91bGQgYmUgZ29vZCB0byBnby4gRG9uJ3QgZm9yZ2V0IHRvIGBpbXBvcnQgeyB1c2VHZXQgfSBmcm9tICJyZXN0ZnVsLXJlYWN0ImAgb3Igc2ltaWxhciB3aGVyZXZlciB5b3UgbmVlZCBpdCEKCiMjIEZlYXR1cmVzCgpgcmVzdGZ1bC1yZWFjdGAgc2hpcHMgd2l0aCB0aGUgZm9sbG93aW5nIGZlYXR1cmVzIHRoYXQgd2UgdGhpbmsgbWlnaHQgYmUgdXNlZnVsLgoKIyMjIEdsb2JhbCBDb25maWd1cmF0aW9uCgpSRVNUIEFQSSBlbmRwb2ludHMgdXN1YWxseSBzaXQgYWxvbmdzaWRlIGEgYmFzZSwgZ2xvYmFsIFVSTC4gQXMgYSBjb252ZW5pZW5jZSwgdGhlIGBSZXN0ZnVsUHJvdmlkZXJgIGFsbG93cyB0b3AtbGV2ZWwgY29uZmlndXJhdGlvbiBvZiB5b3VyIHJlcXVlc3RzLCB0aGF0IGFyZSB0aGVuIHBhc3NlZCBkb3duIHRoZSBSZWFjdCB0cmVlIHRvIGB1c2VHZXRgIGhvb2tzLgoKQ29uc2lkZXIsCgpbIVtFZGl0IHJlc3RmdWwtcmVhY3QgZGVtb3NdKGh0dHBzOi8vY29kZXNhbmRib3guaW8vc3RhdGljL2ltZy9wbGF5LWNvZGVzYW5kYm94LnN2ZyldKGh0dHBzOi8vY29kZXNhbmRib3guaW8vcy9yZXN0ZnVsLXJlYWN0LWRlbW9zLXZqZXRzKQoKYGBganN4Ci8vIGluZGV4LmpzCgppbXBvcnQgUmVhY3QgZnJvbSAicmVhY3QiOwppbXBvcnQgeyBSZXN0ZnVsUHJvdmlkZXIgfSBmcm9tICJyZXN0ZnVsLXJlYWN0IjsKCmltcG9ydCBBcHAgZnJvbSAiLi9BcHAuanN4IjsKCmNvbnN0IE15UmVzdGZ1bEFwcCA9ICgpID0+ICgKICA8UmVzdGZ1bFByb3ZpZGVyIGJhc2U9Imh0dHBzOi8vZG9nLmNlby9hcGkiPgogICAgPEFwcCAvPgogIDwvUmVzdGZ1bFByb3ZpZGVyPgopOwoKZXhwb3J0IGRlZmF1bHQgTXlSZXN0ZnVsQXBwOwpgYGAKCk1lYW53aGlsZSwgaW4gYC4vQXBwLmpzeGAsCgpgYGBqc3gKLy8gQXBwLmpzeAoKaW1wb3J0IFJlYWN0IGZyb20gInJlYWN0IjsKaW1wb3J0IHsgdXNlR2V0IH0gZnJvbSAicmVzdGZ1bC1yZWFjdCI7Cgpjb25zdCBNeUNvbXBvbmVudCA9ICgpID0+IHsKICBjb25zdCB7IGRhdGE6IHJhbmRvbURvZ0ltYWdlIH0gPSB1c2VHZXQoewogICAgLy8gSW5mZXJyZWQgZnJvbSBSZXN0ZnVsUHJvdmlkZXIgaW4gaW5kZXguanMKICAgIHBhdGg6ICJicmVlZHMvaW1hZ2UvcmFuZG9tIiwKICB9KTsKCiAgcmV0dXJuIDxpbWcgYWx0PSJIZXJlJ3MgYSBnb29kIGJveWUhIiBzcmM9e3JhbmRvbURvZ0ltYWdlICYmIHJhbmRvbURvZ0ltYWdlLm1lc3NhZ2V9IC8+Owp9OwoKZXhwb3J0IGRlZmF1bHQgTXlDb21wb25lbnQ7CmBgYAoKTmF0dXJhbGx5LCB0aGUgcmVxdWVzdCB3aWxsIGJlIHNlbnQgdG8gdGhlIGZ1bGwgcGF0aCBgaHR0cHM6Ly9kb2cuY2VvL2FwaS9icmVlZHMvaW1hZ2UvcmFuZG9tYC4gVGhlIGZ1bGwgQVBJIG9mIHRoZSBgUmVzdGZ1bFByb3ZpZGVyYCBpcyBvdXRsaW5lZCBiZWxvdy4gRWFjaCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBjb21wb3NhYmxlIGFuZCBfY2FuIGJlXyBvdmVycmlkZGVuIGJ5IGBHZXRgIGNvbXBvbmVudHMgZnVydGhlciBkb3duIHRoZSB0cmVlLgoKIyMjIyBgUmVzdGZ1bFByb3ZpZGVyYCBBUEkKCkhlcmUncyBhIGZ1bGwgb3ZlcnZpZXcgb2YgdGhlIEFQSSBhdmFpbGFibGUgdGhyb3VnaCB0aGUgYFJlc3RmdWxQcm92aWRlcmAsIGFsb25nIHdpdGggaXRzIGRlZmF1bHRzLgoKYGBgdHN4Ci8vIEludGVyZmFjZQpleHBvcnQgaW50ZXJmYWNlIFJlc3RmdWxSZWFjdFByb3ZpZGVyUHJvcHM8VCA9IGFueT4gewogIC8qKiBUaGUgYmFja2VuZCBVUkwgd2hlcmUgdGhlIFJFU1RmdWwgcmVzb3VyY2VzIGxpdmUuICovCiAgYmFzZTogc3RyaW5nOwogIC8qKgogICAqIFRoZSBwYXRoIHRoYXQgZ2V0cyBhY2N1bXVsYXRlZCBmcm9tIGVhY2ggbGV2ZWwgb2YgbmVzdGluZwogICAqIHRha2luZyB0aGUgYWJzb2x1dGUgYW5kIHJlbGF0aXZlIG5hdHVyZSBvZiBlYWNoIHBhdGggaW50byBjb25zaWRlcmF0aW9uCiAgICovCiAgcGFyZW50UGF0aD86IHN0cmluZzsKICAvKioKICAgKiBBIGZ1bmN0aW9uIHRvIHJlc29sdmUgZGF0YSByZXR1cm4gZnJvbSB0aGUgYmFja2VuZCwgbW9zdCB0eXBpY2FsbHkKICAgKiB1c2VkIHdoZW4gdGhlIGJhY2tlbmQgcmVzcG9uc2UgbmVlZHMgdG8gYmUgYWRhcHRlZCBpbiBzb21lIHdheS4KICAgKi8KICByZXNvbHZlPzogUmVzb2x2ZUZ1bmN0aW9uPFQ+OwogIC8qKgogICAqIE9wdGlvbnMgcGFzc2VkIHRvIHRoZSBmZXRjaCByZXF1ZXN0LgogICAqLwogIHJlcXVlc3RPcHRpb25zPzogKCh1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHJlcXVlc3RCb2R5Pzogc3RyaW5nKSA9PiBQYXJ0aWFsPFJlcXVlc3RJbml0PikgfCBQYXJ0aWFsPFJlcXVlc3RJbml0PjsKICAvKioKICAgKiBUcmlnZ2VyIG9uIGVhY2ggZXJyb3IuCiAgICogRm9yIGBHZXRgIGFuZCBgTXV0YXRpb25gIGNhbGxzLCB5b3UgY2FuIGFsc28gY2FsbCBgcmV0cnlgIHRvIHJldHJ5IHRoZSBleGFjdCBzYW1lIHJlcXVlc3QuCiAgICogUGxlYXNlIG5vdGUgdGhhdCBpdCdzIHF1aXRlIGhhcmQgdG8gcmV0cmlldmUgdGhlIHJlc3BvbnNlIGRhdGEgYWZ0ZXIgYSByZXRyeSBtdXRhdGlvbiBpbiB0aGlzIGNhc2UuCiAgICogRGVwZW5kaW5nIG9mIHlvdXIgY2FzZSwgaXQgY2FuIGJlIGVhc2llciB0byBhZGQgYSBgbG9jYWxFcnJvck9ubHlgIG9uIHlvdXIgYE11dGF0ZWAgY29tcG9uZW50CiAgICogdG8gZGVhbCB3aXRoIHlvdXIgcmV0cnkgbG9jYWxseSBpbnN0ZWFkIG9mIGluIHRoZSBwcm92aWRlciBzY29wZS4KICAgKi8KICBvbkVycm9yPzogKGVycjogYW55LCByZXRyeTogKCkgPT4gUHJvbWlzZTxUIHwgbnVsbD4sIHJlc3BvbnNlPzogUmVzcG9uc2UpID0+IHZvaWQ7CiAgLyoqCiAgICogVHJpZ2dlciBvbiBlYWNoIHJlcXVlc3QuCiAgICovCiAgb25SZXF1ZXN0PzogKHJlcTogUmVxdWVzdCkgPT4gdm9pZDsKICAvKioKICAgKiBUcmlnZ2VyIG9uIGVhY2ggcmVzcG9uc2UuCiAgICovCiAgb25SZXNwb25zZT86IChyZXE6IFJlc3BvbnNlKSA9PiB2b2lkOwogIC8qKgogICAqIFF1ZXJ5IHBhcmFtZXRlcnMgcGFzc2VkIHRvIGVhY2ggcmVxdWVzdC4KICAgKi8KICBxdWVyeVBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogYW55IH07CiAgLyoqCiAgICogUXVlcnkgcGFyYW1ldGVyIHN0cmluZ2lmeSBvcHRpb25zIGFwcGxpZWQgZm9yIGVhY2ggcmVxdWVzdC4KICAgKi8KICBxdWVyeVBhcmFtU3RyaW5naWZ5T3B0aW9ucz86IElTdHJpbmdpZnlPcHRpb25zOwp9CgovLyBVc2FnZQo8UmVzdGZ1bFByb3ZpZGVyCiAgYmFzZT0iU3RyaW5nISIKICByZXNvbHZlPXtkYXRhID0+IGRhdGF9CiAgcmVxdWVzdE9wdGlvbnM9eyh1cmwsIG1ldGhvZCwgcmVxdWVzdEJvZHkpID0+ICh7IGhlYWRlcnM6IHsgQXV0aG9yaXphdGlvbjogYXV0aFRva2VuIH0gfSl9Ci8+OwpgYGAKCkhlcmUncyBzb21lIGRvY3MgYWJvdXQgdGhlIFtSZXF1ZXN0SW5pdF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1JlcXVlc3QvUmVxdWVzdCkgdHlwZSBvZiByZXF1ZXN0IG9wdGlvbnMuCgojIyMgTG9hZGluZyBhbmQgRXJyb3IgU3RhdGVzCgpgdXNlR2V0YCBob29rcyByZXR1cm4gYW4gb2JqZWN0IHdpdGggbG9hZGluZyBhbmQgZXJyb3Igc3RhdGVzLCB0byBhbGxvdyBmb3Igc3RhdGUgaGFuZGxpbmcuIENvbnNpZGVyLAoKWyFbRWRpdCByZXN0ZnVsLXJlYWN0IGRlbW9zXShodHRwczovL2NvZGVzYW5kYm94LmlvL3N0YXRpYy9pbWcvcGxheS1jb2Rlc2FuZGJveC5zdmcpXShodHRwczovL2NvZGVzYW5kYm94LmlvL3MvcmVzdGZ1bC1yZWFjdC1kZW1vcy12amV0cykKCmBgYGpzeAppbXBvcnQgUmVhY3QgZnJvbSAicmVhY3QiOwppbXBvcnQgeyB1c2VHZXQgfSBmcm9tICJyZXN0ZnVsLXJlYWN0IjsKCmNvbnN0IE15Q29tcG9uZW50ID0gKCkgPT4gewogIGNvbnN0IHsgZGF0YTogcmFuZG9tRG9nSW1hZ2UsIGxvYWRpbmcgfSA9IHVzZUdldCh7CiAgICBwYXRoOiAiaHR0cHM6Ly9kb2cuY2VvL2FwaS9icmVlZHMvaW1hZ2UvcmFuZG9tIiwKICB9KTsKCiAgcmV0dXJuIGxvYWRpbmcgPyA8aDE+TG9hZGluZy4uLjwvaDE+IDogPGltZyBhbHQ9IkhlcmUncyBhIGdvb2QgYm95ZSEiIHNyYz17cmFuZG9tRG9nSW1hZ2UubWVzc2FnZX0gLz47Cn07CgpleHBvcnQgZGVmYXVsdCBNeUNvbXBvbmVudDsKYGBgCgojIyMgTGF6eSBGZXRjaGluZwoKSXQgaXMgcG9zc2libGUgdG8gdXNlIGEgYHVzZUdldGAgaG9vayBhbmQgZGVmZXIgdGhlIGZldGNoIHRvIGEgbGF0ZXIgc3RhZ2UuIFRoaXMgaXMgZG9uZSB3aXRoIHRoZSBgbGF6eWAgYm9vbGVhbiBwcm9wZXJ0eS4gVGhpcyBpcyBncmVhdCBmb3IgZGlzcGxheWluZyBVSSBpbW1lZGlhdGVseSwgYW5kIHRoZW4gYWxsb3dpbmcgcGFydHMgb2YgaXQgdG8gYmUgZmV0Y2hlZCBhcyBhIHJlc3BvbnNlIHRvIGFuIGV2ZW50OiBsaWtlIHRoZSBjbGljayBvZiBhIGJ1dHRvbiwgZm9yIGluc3RhbmNlLiBDb25zaWRlciwKClshW0VkaXQgcmVzdGZ1bC1yZWFjdCBkZW1vc10oaHR0cHM6Ly9jb2Rlc2FuZGJveC5pby9zdGF0aWMvaW1nL3BsYXktY29kZXNhbmRib3guc3ZnKV0oaHR0cHM6Ly9jb2Rlc2FuZGJveC5pby9zL3Jlc3RmdWwtcmVhY3QtZGVtb3MtdmpldHMpCgpgYGBqc3gKaW1wb3J0IFJlYWN0IGZyb20gInJlYWN0IjsKaW1wb3J0IHsgdXNlR2V0IH0gZnJvbSAicmVzdGZ1bC1yZWFjdCI7Cgpjb25zdCBNeUNvbXBvbmVudCA9ICgpID0+IHsKICBjb25zdCB7IGRhdGE6IHJhbmRvbURvZ0ltYWdlLCBsb2FkaW5nLCByZWZldGNoIH0gPSB1c2VHZXQoewogICAgcGF0aDogImh0dHBzOi8vZG9nLmNlby9hcGkvYnJlZWRzL2ltYWdlL3JhbmRvbSIsCiAgICBsYXp5OiB0cnVlLAogIH0pOwoKICByZXR1cm4gIXJhbmRvbURvZ0ltYWdlICYmIGxvYWRpbmcgPyAoCiAgICA8aDE+TG9hZGluZyE8L2gxPgogICkgOiAoCiAgICA8ZGl2PgogICAgICA8ZGl2PgogICAgICAgIDxoMT5XZWxjb21lIHRvIG15IGltYWdlIGdldHRlciE8L2gxPgogICAgICAgIDxidXR0b24gb25DbGljaz17KCkgPT4gcmVmZXRjaCgpfT5HZXQgYSBnb29kIGJveWUhPC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2PntyYW5kb21Eb2dJbWFnZSAmJiA8aW1nIGFsdD0iSGVyZSdzIGEgZ29vZCBib3llISIgc3JjPXtyYW5kb21Eb2dJbWFnZS5tZXNzYWdlfSAvPn08L2Rpdj4KICAgIDwvZGl2PgogICk7Cn07CgpleHBvcnQgZGVmYXVsdCBNeUNvbXBvbmVudDsKYGBgCgpUaGUgYWJvdmUgZXhhbXBsZSB3aWxsIGRpc3BsYXkgeW91ciBVSSwgYW5kIHRoZW4gbG9hZCBnb29kIGJveWVzIG9uIGRlbWFuZC4KCiMjIyBSZXNwb25zZSBSZXNvbHV0aW9uCgpTb21ldGltZXMsIHlvdXIgYmFja2VuZCByZXNwb25zZXMgYXJyaXZlIGluIGEgc2hhcGUgdGhhdCB5b3UgbWlnaHQgd2FudCB0byBhZGFwdCwgdmFsaWRhdGUsIG9yIHJlc3RydWN0dXJlLiBPdGhlciB0aW1lcywgbWF5YmUgeW91ciBkYXRhIGNvbnNpc3RlbnRseSBhcnJpdmVzIGluIGEgYHsgZGF0YToge30gfWAgc2hhcGUsIHdpdGggYGRhdGFgIGNvbnRhaW5pbmcgdGhlIHN0dWZmIHlvdSB3YW50LgoKQXQgdGhlIGBSZXN0ZnVsUHJvdmlkZXJgIGxldmVsLCBfb3JfIG9uIHRoZSBgdXNlR2V0YCBsZXZlbCwgYSBgcmVzb2x2ZWAgcHJvcCB3aWxsIHRha2UgdGhlIGRhdGEgYW5kIF9kbyBzdHVmZl8gdG8gaXQsIHByb3ZpZGluZyB0aGUgZmluYWwgcmVzb2x2ZWQgb3IgdW53cmFwcGVkIGRhdGEgdG8gdGhlIGNoaWxkcmVuLiBDb25zaWRlciwKClshW0VkaXQgcmVzdGZ1bC1yZWFjdCBkZW1vc10oaHR0cHM6Ly9jb2Rlc2FuZGJveC5pby9zdGF0aWMvaW1nL3BsYXktY29kZXNhbmRib3guc3ZnKV0oaHR0cHM6Ly9jb2Rlc2FuZGJveC5pby9zL3Jlc3RmdWwtcmVhY3QtZGVtb3MtdmpldHMpCgpgYGBqc3gKaW1wb3J0IFJlYWN0IGZyb20gInJlYWN0IjsKaW1wb3J0IHsgdXNlR2V0IH0gZnJvbSAicmVzdGZ1bC1yZWFjdCI7Cgpjb25zdCBNeUNvbXBvbmVudCA9ICgpID0+IHsKICBjb25zdCB7IGRhdGE6IGltYWdlVXJsIH0gPSB1c2VHZXQoewogICAgcGF0aDogImh0dHBzOi8vZG9nLmNlby9hcGkvYnJlZWRzL2ltYWdlL3JhbmRvbSIsCiAgICByZXNvbHZlOiBpbWFnZSA9PiBpbWFnZSAmJiBpbWFnZS5tZXNzYWdlLAogIH0pOwoKICByZXR1cm4gaW1hZ2VVcmwgJiYgPGltZyBhbHQ9IkhlcmUncyBhIGdvb2QgYm95ZSEiIHNyYz17aW1hZ2VVcmx9IC8+Owp9OwoKZXhwb3J0IGRlZmF1bHQgTXlDb21wb25lbnQ7CmBgYAoKIyMjIERlYm91bmNpbmcgUmVxdWVzdHMKClNvbWUgcmVxdWVzdHMgZmlyZSBpbiByZXNwb25zZSB0byBhIHJhcGlkIHN1Y2Nlc3Npb24gb2YgdXNlciBldmVudHM6IHRoaW5ncyBsaWtlIGF1dG9jb21wbGV0ZSBvciByZXNpemluZyBhIHdpbmRvdy4gRm9yIHRoaXMgcmVhc29uLCB1c2VycyBzb21ldGltZXMgbmVlZCB0byB3YWl0IHVudGlsIGFsbCB0aGUga2V5c3Ryb2tlcyBhcmUgdHlwZWQgKHVudGlsIGV2ZXJ5dGhpbmcncyBfZG9uZV8pLCBiZWZvcmUgc2VuZGluZyBhIHJlcXVlc3QuCgpgcmVzdGZ1bC1yZWFjdGAgZXhwb3NlcyBhIGBkZWJvdW5jZWAgcHJvcCBvbiBgR2V0YCB0aGF0IGRvZXMgZXhhY3RseSB0aGlzLgoKSGVyZSdzIGFuIGV4YW1wbGU6CgpgYGBqc3gKY29uc3QgU2VhcmNoVGhpcyA9IHByb3BzID0+IHsKICBjb25zdCB7IGRhdGEgfSA9IHVzZUdldCh7CiAgICBwYXRoOiAiL2hlbGxvL3dvcmxkIiwKICAgIGRlYm91bmNlOiB0cnVlLAogIH0pOwoKICByZXR1cm4gKAogICAgPGRpdj4KICAgICAgPGgxPkhlcmUncyBhbGwgdGhlIHRoaW5ncyBJIHNlYXJjaDwvaDE+CiAgICAgIDx1bD4KICAgICAgICB7ZGF0YS5tYXAodGhpbmcgPT4gKAogICAgICAgICAgPGxpPnt0aGluZ308L2xpPgogICAgICAgICkpfQogICAgICA8L3VsPgogICAgPC9kaXY+CiAgKTsKfTsKYGBgCgpEZWJvdW5jZSBhbHNvIGFjY2VwdHMgYSBudW1iZXIsIHdoaWNoIHRlbGxzIGB1c2VHZXRgIGhvdyBsb25nIHRvIHdhaXQgdW50aWwgZG9pbmcgdGhlIHJlcXVlc3QuCgpgYGBkaWZmCmNvbnN0IFNlYXJjaFRoaXMgPSBwcm9wcyA9PiB7CiAgY29uc3QgeyBkYXRhIH0gPSB1c2VHZXQoewogICAgcGF0aDogIi9oZWxsby93b3JsZCIsCi0gICAgZGVib3VuY2U6IHRydWUsCisgICAgZGVib3VuY2U6IDIwMCAvKiBtcyAqLywKICB9KQoKICByZXR1cm4gPGRpdj4KICAgICAgICA8aDE+SGVyZSdzIGFsbCB0aGUgdGhpbmdzIEkgc2VhcmNoPC9oMT4KICAgICAgICA8dWw+CiAgICAgICAgICB7ZGF0YS5tYXAodGhpbmcgPT4gKAogICAgICAgICAgICA8bGk+e3RoaW5nfTwvbGk+CiAgICAgICAgICApKX0KICAgICAgICA8L3VsPgogICAgICA8L2Rpdj4KfQpgYGAKCkl0IHVzZXMgW2xvZGFzaCdzIGRlYm91bmNlXShodHRwczovL2xvZGFzaC5jb20vZG9jcy80LjE3LjEwI2RlYm91bmNlKSBmdW5jdGlvbiB1bmRlciB0aGUgaG9vZCwgc28geW91IGdldCBhbGwgdGhlIGJlbmVmaXRzIG9mIGl0IG91dCBvZiB0aGUgYm94IGxpa2Ugc28hCgpgYGBkaWZmCgpjb25zdCBTZWFyY2hUaGlzID0gcHJvcHMgPT4gewogIGNvbnN0IHsgZGF0YSB9ID0gdXNlR2V0KHsKICAgIHBhdGg6ICIvaGVsbG8vd29ybGQiLAotICAgIGRlYm91bmNlOiAyMDAsCisgICAgZGVib3VuY2U6IHsgd2FpdDogMjAwLCBvcHRpb25zOiB7IGxlYWRpbmc6IHRydWUsIG1heFdhaXQ6IDMwMCwgdHJhaWxpbmc6IGZhbHNlIH0gfSAvKiBtcyAqLywKICB9KQoKICByZXR1cm4gPGRpdj4KICAgICAgICA8aDE+SGVyZSdzIGFsbCB0aGUgdGhpbmdzIEkgc2VhcmNoPC9oMT4KICAgICAgICA8dWw+CiAgICAgICAgICB7ZGF0YS5tYXAodGhpbmcgPT4gKAogICAgICAgICAgICA8bGk+e3RoaW5nfTwvbGk+CiAgICAgICAgICApKX0KICAgICAgICA8L3VsPgogICAgICA8L2Rpdj4KfQpgYGAKCiMjIyBUeXBlU2NyaXB0IEludGVncmF0aW9uCgpPbmUgb2YgdGhlIG1vc3QgcG93ZXJmdWwgZmVhdHVyZXMgb2YgYHJlc3RmdWwtcmVhY3RgIGlzIHRoYXQgZWFjaCBjb21wb25lbnQgZXhwb3J0ZWQgaXMgc3Ryb25nbHkgdHlwZWQsIGVtcG93ZXJpbmcgZGV2ZWxvcGVycyB0aHJvdWdoIHNlbGYtZG9jdW1lbnRpbmcgQVBJcy4KCiFbVXNpbmcgcmVzdGZ1bC1yZWFjdCBpbiBWUyBDb2RlXShhc3NldHMvbGFicy5naWYpCgojIyMgUXVlcnkgUGFyYW1ldGVycwoKQWxsIGNvbXBvbmVudHMgaW4gdGhpcyBsaWJyYXJ5IHN1cHBvcnQgcXVlcnkgcGFyYW1zIChgaHR0cHM6Ly9teS5zaXRlLz9xdWVyeT1wYXJhbWApIHZpYSBhIGBxdWVyeVBhcmFtc2AgcHJvcC4gRWFjaCBgdXNlR2V0YCwgYHVzZU11dGF0ZWAgYW5kIGBQb2xsYCBpbnN0YW5jZSBpcyBfZ2VuZXJpY18sIGhhdmluZyBhIHR5cGUgc2lnbmF0dXJlIG9mIGB1c2VHZXQ8VERhdGEsIFRFcnJvciwgVFF1ZXJ5UGFyYW1zPmAuIElmIGRlc2NyaWJlZCwgdGhlIGBxdWVyeVBhcmFtc2AgcHJvcCBpcyBfZnVsbHlfIHR5cGUtc2FmZSBpbiB1c2FnZSBhbmQgcHJvdmlkZXMgYXV0b2NvbXBsZXRlIGZ1bmN0aW9uYWxpdHkuCgohW0F1dG9jb21wbGV0aW9uIG9uIFF1ZXJ5UGFyYW1zXShhc3NldHMvaWRwLmdpZikKClBsZWFzZSBub3RlIHRoYXQgdGhlIGFib3ZlIGV4YW1wbGUgd2FzIGJ1aWx0IHVzaW5nIG91ciBbT3BlbkFQSSBnZW5lcmF0b3JdKCNjb2RlLWdlbmVyYXRpb24pIGluIG9yZGVyIHRvIGluZmVyIHRoZSB0eXBlIG9mIGNvbXBvbmVudCBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIHRoZSBlbnRpcmUgdHlwZS1zYWZlIGNvbXBvbmVudCBpbiBhIF92ZXJ5XyBxdWljayBhbmQgZWFzeSB3YXkuCgojIyMgTXV0YXRpb25zIHdpdGggYHVzZU11dGF0ZWAKCmByZXN0ZnVsLXJlYWN0YCBleHBvc2VzIGFuIGFkZGl0aW9uYWwgaG9vayBjYWxsZWQgYHVzZU11dGF0ZWAuIFRoZXNlIGNvbXBvbmVudHMgYWxsb3cgc2VuZGluZyByZXF1ZXN0cyB3aXRoIG90aGVyIEhUVFAgdmVyYnMgaW4gb3JkZXIgdG8gbXV0YXRlIGJhY2tlbmQgcmVzb3VyY2VzLgoKWyFbRWRpdCByZXN0ZnVsLXJlYWN0IGRlbW9zXShodHRwczovL2NvZGVzYW5kYm94LmlvL3N0YXRpYy9pbWcvcGxheS1jb2Rlc2FuZGJveC5zdmcpXShodHRwczovL2NvZGVzYW5kYm94LmlvL3MvcmVzdGZ1bC1yZWFjdC1kZW1vcy12amV0cykKCmBgYGpzeAppbXBvcnQgUmVhY3QgZnJvbSAicmVhY3QiOwppbXBvcnQgeyB1c2VHZXQsIHVzZU11dGF0ZSB9IGZyb20gInJlc3RmdWwtcmVhY3QiOwoKY29uc3QgYmFzZSA9ICJodHRwczovL2pzb25wbGFjZWhvbGRlci50eXBpY29kZS5jb20iOwoKY29uc3QgTGlzdEl0ZW0gPSAoeyBpZCwgY2hpbGRyZW4gfSkgPT4gewogIGNvbnN0IHsgbXV0YXRlOiBkZWwsIGxvYWRpbmcgfSA9IHVzZU11dGF0ZSh7CiAgICB2ZXJiOiAiREVMRVRFIiwKICAgIHBhdGg6IGAvcG9zdHMvYCwKICAgIGJhc2UsCiAgfSk7CgogIHJldHVybiAoCiAgICA8bGkga2V5PXtpZH0+CiAgICAgIHtsb2FkaW5nID8gKAogICAgICAgICJEZWxldGluZy4uLiIKICAgICAgKSA6ICgKICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9eygpID0+IGRlbChpZCkudGhlbigoKSA9PiBhbGVydCgiRGVsZXRlZCBzdWNjZXNzZnVsbHkuIFByZXRlbmQgaXQgZ290IHJlbW92ZWQgZnJvbSB0aGUgRE9NLiIpKX0+CiAgICAgICAgICDinYwKICAgICAgICA8L2J1dHRvbj4KICAgICAgKX0KICAgICAgJm5ic3A7e2NoaWxkcmVufQogICAgPC9saT4KICApOwp9OwoKY29uc3QgTXlIdWdlTGlzdCA9ICgpID0+IHsKICBjb25zdCB7IGRhdGE6IHBvc3RzIH0gPSB1c2VHZXQoewogICAgcGF0aDogIi9wb3N0cyIsCiAgICBiYXNlLAogIH0pOwogIHJldHVybiAoCiAgICA8ZGl2PgogICAgICA8aDE+UG9zdHM8L2gxPgogICAgICA8dWw+CiAgICAgICAge3Bvc3RzICYmCiAgICAgICAgICBwb3N0cy5tYXAocG9zdCA9PiAoCiAgICAgICAgICAgIDxMaXN0SXRlbSBrZXk9e3Bvc3QuaWR9IGlkPXtwb3N0LmlkfT4KICAgICAgICAgICAgICB7cG9zdC50aXRsZX0KICAgICAgICAgICAgPC9MaXN0SXRlbT4KICAgICAgICAgICkpfQogICAgICA8L3VsPgogICAgPC9kaXY+CiAgKTsKfTsKZXhwb3J0IGRlZmF1bHQgTXlIdWdlTGlzdDsKYGBgCgpgdXNlTXV0YXRlYCBpcyBzdHJvbmdseSB0eXBlZCwgYW5kIHByb3ZpZGVzIGludGVsbGlnZW50IGF1dG9jb21wbGV0aW9uIG91dCBvZiB0aGUgYm94LCBjb21wbGV0ZSB3aXRoIG90aGVyIGF2YWlsYWJsZSBbSFRUUCB2ZXJic10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZGUvZG9jcy9XZWIvSFRUUC9NZXRob2RzKS4KCiFbTXV0YXRlXShhc3NldHMvbXV0YXRlLnBuZykKCkVhY2ggbXV0YXRpb24gcmV0dXJucyBhIHByb21pc2UgdGhhdCBjYW4gdGhlbiBiZSB1c2VkIHRvIHVwZGF0ZSBsb2NhbCBjb21wb25lbnQgc3RhdGUsIGRpc3BhdGNoIGFuIGFjdGlvbiwgb3IgZG8gc29tZXRoaW5nIGVsc2UgZGVwZW5kaW5nIG9uIHlvdXIgdXNlIGNhc2UuCgojIyMgTW9ja3MKCk5vIGJhY2tlbmQgc3VwcG9ydCB5ZXQgZm9yIHlvdXIgYW1hemluZyBmZWF0dXJlPyBOZWVkIHRvIGlzb2xhdGUgYW4gZWRnZSBjYXNlPyBZb3UgY2FuIGVhc2lseSBwcm92aWRlIGEgbW9jayB0byBgdXNlTXV0YXRlYCBhbmQgYHVzZUdldGAgdG8gYnlwYXNzIHRoZSBjbGFzc2ljIGZsb3cuCgovIVwgSWYgYG1vY2tgIG9wdGlvbiBpcyBwcm92aWRlZCwgbm8gcmVxdWVzdHMgd2lsbCBiZSBzZW5kIHRvIHRoZSBzZXJ2ZXIuIC8hXAoKYGBganN4CmltcG9ydCBSZWFjdCBmcm9tICJyZWFjdCI7CmltcG9ydCB7IHVzZUdldCwgdXNlTXV0YXRlIH0gZnJvbSAicmVzdGZ1bC1yZWFjdCI7Cgpjb25zdCBiYXNlID0gImh0dHBzOi8vanNvbnBsYWNlaG9sZGVyLnR5cGljb2RlLmNvbSI7CgovLyBNb2NrIHRoZSBgbXV0YXRlYCBoYW5kbGVyCmNvbnN0IHsgbXV0YXRlOiBkZWwsIGxvYWRpbmcgfSA9IHVzZU11dGF0ZSh7CiAgdmVyYjogIkRFTEVURSIsCiAgcGF0aDogYC9wb3N0cy9gLAogIGJhc2UsCiAgLy8gVGhpcyB3aWxsIGF2b2lkIGFueSBzZXJ2ZXIgY2FsbCBpbiBmYXZvciBvZiBtb2NrIHJlc3BvbnNlCiAgbW9jazogewogICAgbXV0YXRlOiBpZCA9PiBjb25zb2xlLmxvZyhgVGhlIGl0ZW0gJHtpZH0gd2FzIGRlbGV0ZWRgKSwKICB9LAp9KTsKCi8vIE1vY2sgdGhlIGBsb2FkaW5nYCwgc28gaXQncyBlYXN5IHRvIGlzb2xhdGUgdGhlIGxvYWRpbmcgc3RhdGUKY29uc3QgeyBkYXRhOiBwb3N0cyB9ID0gdXNlR2V0KHsKICBwYXRoOiAiL3Bvc3RzIiwKICBiYXNlLAogIC8vIFRoaXMgd2lsbCBhdm9pZCBhbnkgc2VydmVyIGNhbGwgaW4gZmF2b3Igb2YgbW9jayByZXNwb25zZQogIG1vY2s6IHsKICAgIGxvYWRpbmc6IHRydWUsCiAgfSwKfSk7CgovLyBNb2NrIHRoZSBgZXJyb3JgLCBzbyBpdCdzIGVhc3kgdG8gaXNvbGF0ZSB0aGUgZXJyb3Igc3RhdGUKY29uc3QgeyBkYXRhOiBwb3N0cyB9ID0gdXNlR2V0KHsKICBwYXRoOiAiL3Bvc3RzIiwKICBiYXNlLAogIC8vIFRoaXMgd2lsbCBhdm9pZCBhbnkgc2VydmVyIGNhbGwgaW4gZmF2b3Igb2YgbW9jayByZXNwb25zZQogIG1vY2s6IHsKICAgIGVycm9yOiAib2ggbm8hIiwKICB9LAp9KTsKYGBgCgojIyMgUG9sbGluZyB3aXRoIGBQb2xsYAoKYHJlc3RmdWwtcmVhY3RgIGFsc28gZXhwb3J0cyBhIGBQb2xsYCByZW5kZXIgcHJvcHMgY29tcG9uZW50IHRoYXQgd2lsbCBwb2xsIGEgYmFja2VuZCBlbmRwb2ludCBvdmVyIGEgcHJlZGV0ZXJtaW5lZCBpbnRlcnZhbCB1bnRpbCBhIHN0b3AgY29uZGl0aW9uIGlzIG1ldC4gQ29uc2lkZXIsCgpgYGBqc3gKaW1wb3J0IHsgUG9sbCB9IGZyb20gInJlc3RmdWwtcmVhY3QiCgo8UG9sbCBwYXRoPSIvZGVwbG95TG9ncyIgcmVzb2x2ZT17ZGF0YSA9PiBkYXRhICYmIGRhdGEuZGF0YX0+CiAgeyhkZXBsb3lMb2dzOiBEZXBsb3lMb2dbXSwgeyBsb2FkaW5nIH0pID0+CiAgICBsb2FkaW5nID8gKAogICAgICA8UGFnZVNwaW5uZXIgLz4KICAgICkgOiAoCiAgICAgIDxEYXRhVGFibGUKICAgICAgICBjb2x1bW5zPXtbImNyZWF0ZWRBdCIsICJkZXBsb3lJZCIsICJzdGF0dXMiLCAic2hhIiwgIm1lc3NhZ2UiXX0KICAgICAgICBvcmRlckJ5PSJjcmVhdGVkQXQiCiAgICAgICAgZGF0YT17ZGVwbG95TG9nc30KICAgICAgICBmb3JtYXR0ZXJzPXt7CiAgICAgICAgICBjcmVhdGVkQXQ6IChkOiBEZXBsb3lMb2dbImNyZWF0ZWRBdCJdKSA9PiB0aXRsZShmb3JtYXRSZWxhdGl2ZShkLCBEYXRlLm5vdygpKSksCiAgICAgICAgICBzaGE6IChpOiBEZXBsb3lMb2dbInNoYSJdKSA9PiBpICYmIGkuc2xpY2UoMCwgNyksCiAgICAgICAgfX0KICAgICAgLz4KICAgICkKICB9CjwvUG9sbD4KYGBgCgpgUG9sbGAgc3VwcG9ydHM6CgotIGFuIGBpbnRlcnZhbGAgcHJvcCB0aGF0IHdpbGwgcG9sbCBhdCBhIHNwZWNpZmllZCBpbnRlcnZhbCAoZGVmYXVsdHMgdG8gcG9sbGluZyAxIHNlY29uZCksIGFuZAotIGFuIGB1bnRpbGAgcHJvcCB0aGF0IGFjY2VwdHMgYSBjb25kaXRpb24gZXhwcmVzc2VkIGFzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZS4gV2hlbiB0aGlzIGNvbmRpdGlvbiBpcyBtZXQsIHBvbGxpbmcgd2lsbCBzdG9wLgoKICBUaGUgc2lnbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gaXMgYChkYXRhOiBULCByZXNwb25zZTogUmVzcG9uc2VJbml0KSA9PiBib29sZWFuYC4gQXMgYSBkZXZlbG9wZXIsIHlvdSBoYXZlIGFjY2VzcyB0byB0aGUgcmV0dXJuZWQgZGF0YSwgYWxvbmcgd2l0aCB0aGUgcmVzcG9uc2Ugb2JqZWN0IGluIGNhc2UgeW91J2QgbGlrZSB0byBzdG9wIHBvbGxpbmcgaWYgYHJlc3BvbnNlLm9rID09PSBmYWxzZWAsIGZvciBleGFtcGxlLgoKQmVsb3cgaXMgYSBtb3JlIGNvbnZvbHV0ZWQgZXhhbXBsZSB0aGF0IGVtcGxveXMgbmVhcmx5IHRoZSBmdWxsIHBvd2VyIG9mIHRoZSBgUG9sbGAgY29tcG9uZW50LgoKYGBganN4CjxQb2xsIHBhdGg9Ii9zdGF0dXMiIHVudGlsPXsoXywgcmVzcG9uc2UpID0+IHJlc3BvbnNlICYmIHJlc3BvbnNlLm9rfSBpbnRlcnZhbD17MH0gbGF6eT4KICB7KF8sIHsgbG9hZGluZywgZXJyb3IsIGZpbmlzaGVkLCBwb2xsaW5nIH0sIHsgc3RhcnQgfSkgPT4gewogICAgcmV0dXJuIGxvYWRpbmcgPyAoCiAgICAgIDxQcm9ncmVzcyBlcnJvcj17ZXJyb3J9IC8+CiAgICApIDogKAogICAgICA8QnV0dG9uCiAgICAgICAgbG9hZGluZz17ZWRpdG9yTG9hZGluZyB8fCBwb2xsaW5nfQogICAgICAgIGNvbmRlbnNlZAogICAgICAgIGljb249IkV4dGVybmFsTGluayIKICAgICAgICBjb2xvcj0iZ2hvc3QiCiAgICAgICAgb25DbGljaz17KCkgPT4gewogICAgICAgICAgaWYgKGZpbmlzaGVkKSB7CiAgICAgICAgICAgIHJldHVybiB3aW5kb3cub3BlbihlZGl0b3IudXJsKTsKICAgICAgICAgIH0KICAgICAgICAgIHJlcXVlc3RFZGl0b3IoKTsKICAgICAgICAgIHN0YXJ0KCk7CiAgICAgICAgfX0KICAgICAgPgogICAgICAgIHtmaW5pc2hlZCA/ICJMYXVuY2ggRWRpdG9yIiA6ICJSZXF1ZXN0IEVkaXRvciJ9CiAgICAgIDwvQnV0dG9uPgogICAgKTsKICB9fQo8L1BvbGw+CmBgYAoKTm90ZSBmcm9tIHRoZSBwcmV2aW91cyBleGFtcGxlLCBgUG9sbGAgYWxzbyBleHBvc2VzIG1vcmUgc3RhdGVzOiBgZmluaXNoZWRgLCBhbmQgYHBvbGxpbmdgIHRoYXQgYWxsb3cgYmV0dGVyIGZsb3cgY29udHJvbCwgYXMgd2VsbCBhcyBsYXp5LXN0YXJ0IHBvbGxzIHRoYXQgY2FuIGFsc28gYmUgcHJvZ3JhbW1hdGljYWxseSBzdG9wcGVkIGF0IGEgbGF0ZXIgc3RhZ2UuCgojIyMjIExvbmcgUG9sbGluZwoKQXQgQ29udGlhbW8sIHdlIGhhdmUgYSBbcG93ZXJmdWwgTG9uZyBQb2xsaW5nIHNwZWNpZmljYXRpb25dKGRvY3MvY29udGlhbW8tbG9uZy1wb2xsLm1kKSBpbiBwbGFjZSB0aGF0IGFsbG93cyB1cyB0byBidWlsZCByZWFsLXRpbWUgYXBwcyBvdmVyIEhUVFBTLCBhcyBvcHBvc2VkIHRvIFdlYlNvY2tldHMuIEF0IGEgZ2xhbmNlIHRoZSBzcGVjaWZpY2F0aW9uIGNhbiBiZSBkaXN0aWxsZWQgaW50bzoKCi0gV2ViIFVJIHNlbmRzIGEgcmVxdWVzdCB3aXRoIGEgYFByZWZlcmAgaGVhZGVyIHRoYXQgY29udGFpbnM6CiAgLSBhIHRpbWUsIGluIHNlY29uZHMsIHRvIGtlZXAgcmVxdWVzdHMgb3BlbiAoYDYwc2ApLCBhbmQKICAtIGEgKipwb2xsaW5nIGluZGV4KiogdGhhdCBpcyBhIHNlcnZlci1zZW50IGhhc2ggYGFocGllZ2hgLgogIC0gYWxsIHRvZ2V0aGVyLCB0aGUgY2xpZW50IHNlbmRzIGEgcmVxdWVzdCB3aXRoIGEgaGVhZGVyIGBQcmVmZXI6IHdhaXQ9NjBzO2luZGV4PTkzOTE5MmAuCi0gVGhlIGJhY2tlbmQgc2VydmVyIHJlc3BvbmRzLCBlaXRoZXIgd2l0aDoKICAtIGFuIGVtcHR5IHJlc3BvbnNlIHdpdGggc3RhdHVzIGAzMDQgTm90IE1vZGlmaWVkYAogIC0gYSBzdWNjZXNzZnVsIHJlc3BvbnNlIHdpdGggZGF0YSBhbmQgYSBuZXcgKipwb2xsaW5nIGluZGV4KiouCgpUaGUgcG9sbGluZyBpbmRleCBhbGxvdyB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyIHRvIHN0YXkgaW4gc3luYzogdGhlIGNsaWVudCBzYXlzICJ0aGUgbGFzdCBzdHVmZiBJIGdvdCB3YXMgYXQgdGhpcyBpbmRleCIuIFRoZSBzZXJ2ZXIgc2F5cyAib2gsIGxldCBtZSBnZXQgeW91IHVwIHRvIHNwZWVkIGFuZCBzZW5kIHlvdSBhIG5ldyBpbmRleCIuCgpWaXN1YWxseSwgdGhpcyBpcyByZXByZXNlbnRlZCBhcyBiZWxvdy4KCiFbQ29udGlhbW8gUG9sbF0oZG9jcy9sb25nLXBvbGwtZmxvdy5wbmcpLgoKVG8gZ2V0IHRoaXMgZnVuY3Rpb25hbGl0eSBpbiBgcmVzdGZ1bC1yZWFjdGAsIHRoaXMgbWVhbnMgc3BlY2lmeWluZyBhIGB3YWl0YCBwcm9wIG9uIHlvdXIgYFBvbGxgIGNvbXBvbmVudCwgcHJvdmlkZWQgeW91ciBzZXJ2ZXIgaW1wbGVtZW50cyB0aGlzIHNwZWNpZmljYXRpb24gYXMgd2VsbC4KCiMjIyMgW0Z1bGwgYFBvbGxgIENvbXBvbmVudCBBUEldKHNyYy9Qb2xsLnRzeCNMNTMtTDEwMSkKCiMjIyMgUG9sbGluZyBhbmQgQ29kZSBHZW5lcmF0aW9uCgpCeSBkZWZhdWx0IHdlIGdlbmVyYXRlIGEgYFBvbGxgIGNvbXBvbmVudCB3aGVuIHRoZSBgcHJlZmVyYCBoZWFkZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBPcGVuQVBJL1N3YWdnZXIgc3BlY3MgKG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBkZXNpZ24gZGVjaXNpb24gaGVyZSAtPiBodHRwczovL2dpdGh1Yi5jb20vY29udGlhbW8vcmVzdGZ1bC1yZWFjdCNsb25nLXBvbGxpbmcpLgoKV2UgZG8gbm90IGdlbmVyYXRlIGFuIGVxdWl2YWxlbnQgaG9vayB2ZXJzaW9uLiBQb2xsaW5nIGlzIHF1aXRlIHRyaXZpYWwgaW4gYSByZWFjdCBob29rLCBzbyB3ZSB1c3VhbGx5IGp1c3QgdXNlIGB1c2VFZmZlY3RgIHdoZW4gd2UgbmVlZCBzb21lIHBvbGxpbmcgZmVhdHVyZS4KCkV4YW1wbGU6CgpgYGB0cwovLyBQb2xsIGRhdGEgaWYgbm8gY29tcGxldGVkQXQKdXNlRWZmZWN0KCgpID0+IHsKICBpZiAoZXJyb3IpIHsKICAgIHJldHVybiBvbkVycm9yKCk7CiAgfSBlbHNlIGlmIChkYXRhICYmICFkYXRhLmNvbXBsZXRlZEF0KSB7CiAgICBjb25zdCB0aW1lcklkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gcmVmZXRjaCgpLCAxMDAwKTsKICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVySWQpOwogIH0gZWxzZSB7CiAgICByZXR1cm47CiAgfQp9LCBbZGF0YSwgcmVmZXRjaCwgZXJyb3JdKTsKYGBgCgojIyMgQ29kZSBHZW5lcmF0aW9uIGZyb20gT3BlbkFQSSAvIFN3YWdnZXIgc3BlY3MKCmByZXN0ZnVsLXJlYWN0YCBpcyBhYmxlIHRvIGdlbmVyYXRlIFJlYWN0IGhvb2tzIHdpdGggYXBwcm9wcmlhdGUgdHlwZS1zaWduYXR1cmVzIChUeXBlU2NyaXB0KSBmcm9tIGFueSB2YWxpZCBPcGVuQVBJIHYzIG9yIFN3YWdnZXIgdjIgc3BlY2lmaWNhdGlvbiwgZWl0aGVyIGluIGB5YW1sYCBvciBganNvbmAgZm9ybWF0cy4KCiMjIyMgVXNhZ2UKClR5cGUtc2FmZSBSZWFjdCBkYXRhIGZldGNoZXJzIGNhbiBiZSBnZW5lcmF0ZWQgZnJvbSBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKLSBgcmVzdGZ1bC1yZWFjdCBpbXBvcnQgLS1maWxlIE1ZX09QRU5BUElfU1BFQy55YW1sIC0tb3V0cHV0IG15LWF3ZXNvbWUtZ2VuZXJhdGVkLXR5cGVzLnRzeGAKClRoaXMgY29tbWFuZCBjYW4gYmUgaW52b2tlZCBieSBfZWl0aGVyXzoKCi0gSW5zdGFsbGluZyBgcmVzdGZ1bC1yZWFjdGAgZ2xvYmFsbHkgYW5kIHJ1bm5pbmcgaXQgaW4gdGhlIHRlcm1pbmFsOiBgbnBtIGkgLWcgcmVzdGZ1bC1yZWFjdGAsIG9yCi0gQWRkaW5nIGEgYHNjcmlwdGAgdG8geW91ciBgcGFja2FnZS5qc29uYCBsaWtlIHNvOgoKYGBgZGlmZgogICAgICAic2NyaXB0cyI6IHsKICAgICAgICAic3RhcnQiOiAid2VicGFjay1kZXYtc2VydmVyIiwKICAgICAgICAiYnVpbGQiOiAid2VicGFjayAtcCIsCisgICAgICAgImdlbmVyYXRlLWZldGNoZXIiOiAicmVzdGZ1bC1yZWFjdCBpbXBvcnQgLS1maWxlIE1ZX1NXQUdHRVJfRE9DUy5qc29uIC0tb3V0cHV0IEZFVENIRVJTLnRzeCIKICAgICAgfQpgYGAKCllvdXIgY29tcG9uZW50cyBjYW4gdGhlbiBiZSBnZW5lcmF0ZWQgYnkgcnVubmluZyBgbnBtIHJ1biBnZW5lcmF0ZS1mZXRjaGVyYC4gT3B0aW9uYWxseSwgd2UgcmVjb21tZW5kIGxpbnRpbmcvcHJldHRpZnlpbmcgdGhlIG91dHB1dCBmb3IgcmVhZGFiaWxpdHkgbGlrZSBzbzoKCmBgYGRpZmYKICAgICAgInNjcmlwdHMiOiB7CiAgICAgICAgInN0YXJ0IjogIndlYnBhY2stZGV2LXNlcnZlciIsCiAgICAgICAgImJ1aWxkIjogIndlYnBhY2sgLXAiLAogICAgICAgICJnZW5lcmF0ZS1mZXRjaGVyIjogInJlc3RmdWwtcmVhY3QgaW1wb3J0IC0tZmlsZSBNWV9TV0FHR0VSX0RPQ1MuanNvbiAtLW91dHB1dCBGRVRDSEVSUy50c3giLAorICAgICAgICJwb3N0Z2VuZXJhdGUtZmV0Y2hlciI6ICJwcmV0dGllciBGRVRDSEVSUy5kLnRzeCAtLXdyaXRlIgogICAgICB9CmBgYAoKIyMjIyBWYWxpZGF0aW9uIG9mIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24KClRvIGVuZm9yY2UgdGhlIGJlc3QgcXVhbGl0eSBhcyBwb3NzaWJsZSBvZiBzcGVjaWZpY2F0aW9uLCB3ZSBoYXZlIGludGVncmF0ZWQgdGhlIGFtYXppbmcgW09wZW5BUEkgbGludGVyIGZyb20gSUJNXShodHRwczovL2dpdGh1Yi5jb20vSUJNL29wZW5hcGktdmFsaWRhdG9yKS4gV2Ugc3Ryb25nbHkgZW5jb3VyYWdlIHlvdSB0byBzZXR1cCB5b3VyIGN1c3RvbSBydWxlcyB3aXRoIGEgYC52YWxpZGF0ZXJjYCBmaWxlLCB5b3UgY2FuIGZpbmQgYWxsIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGNvbmZpZ3VyYXRpb24gW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9JQk0vb3BlbmFwaS12YWxpZGF0b3IvI2NvbmZpZ3VyYXRpb24pLgoKVG8gYWN0aXZhdGUgdGhpcywgYWRkIGEgYC0tdmFsaWRhdGlvbmAgZmxhZyB0byB5b3VyIGByZXN0ZnVsLXJlYWN0YCBjYWxsLgoKIyMjIyBBUEkgVmVyc2lvbmluZwoKVGhlIGdlbmVyYXRlZCBmaWxlIHdpbGwgaW5jbHVkZSBhbiBleHBvcnRlZCBjb25zdGFudCBgU1BFQ19WRVJTSU9OYCB0aGF0IHdpbGwgY29udGFpbiB0byB0aGUgT3BlbkFQSSBgaW5mby52ZXJzaW9uYCBwcm9wZXJ0eSdzIHZhbHVlLgoKIyMjIyBJbXBvcnQgZnJvbSBVUkwKCkFkZGluZyB0aGUgYC0tdXJsYCBmbGFnIHRvIGByZXN0ZnVsLXJlYWN0IGltcG9ydGAgaW5zdGVhZCBvZiB1c2luZyB0aGUgYC0tZmlsZWAgZmxhZyB3aWxsIGF0dGVtcHQgdG8gZmV0Y2ggdGhlIHNwZWMgZnJvbSB0aGF0IGVuZHBvaW50LgoKLSBgcmVzdGZ1bC1yZWFjdCBpbXBvcnQgLS11cmwgaHR0cHM6Ly9hcGkubWluZS5jb20vb3BlbmFwaS5qc29uIC0tb3V0cHV0IG15LWF3ZXNvbWUtZ2VuZXJhdGVkLXR5cGVzLnRzeGAKCiMjIyMgSW1wb3J0IGZyb20gR2l0SHViCgpBZGRpbmcgdGhlIGAtLWdpdGh1YmAgZmxhZyB0byBgcmVzdGZ1bC1yZWFjdCBpbXBvcnRgIGluc3RlYWQgb2YgdXNpbmcgdGhlIGAtLWZpbGVgIGZsYWcgYWxsb3dzIHVzIHRvICoqY3JlYXRlIFJlYWN0IGNvbXBvbmVudHMgZnJvbSBhbiBPcGVuQVBJIHNwZWMgX3JlbW90ZWx5IGhvc3RlZCBvbiBHaXRIdWIuXyoqIDxzdXA+Xyhob3cgaXMgdGhpcyByZWFsIGxpZmVfIPCflKUgXylfPC9zdXA+CgpUbyBnZW5lcmF0ZSBjb21wb25lbnRzIGZyb20gcmVtb3RlIHNwZWNpZmljYXRpb25zLCB5b3UnbGwgbmVlZCB0byBmb2xsb3cgdGhlIGZvbGxvd2luZyBzdGVwczoKCjEuICBWaXNpdCBbeW91ciBHaXRIdWIgc2V0dGluZ3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9zZXR0aW5ncy90b2tlbnMpLgoxLiAgQ2xpY2sgKipHZW5lcmF0ZSBOZXcgVG9rZW4qKiBhbmQgY2hvb3NlIHRoZSBmb2xsb3dpbmc6CgogICAgICAgIFRva2VuIERlc2NyaXB0aW9uOiAoZW50ZXIgYW55dGhpbmcpCiAgICAgICAgU2NvcGVzOgogICAgICAgICAgICBbWF0gcmVwbwogICAgICAgICAgICAgICAgW1hdIHJlcG86c3RhdHVzCiAgICAgICAgICAgICAgICBbWF0gcmVwb19kZXBsb3ltZW50CiAgICAgICAgICAgICAgICBbWF0gcHVibGljX3JlcG8KICAgICAgICAgICAgICAgIFtYXSByZXBvOmludml0ZQogICAgICAgICAgICAgICAgW1hdIHNlY3VyaXR5X2V2ZW50cwoKMS4gIENsaWNrICoqR2VuZXJhdGUgdG9rZW4qKi4KMS4gIENvcHkgdGhlIGdlbmVyYXRlZCBzdHJpbmcuCjEuICBPcGVuIGEgdGVybWluYWwgYW5kIHJ1biBgcmVzdGZ1bC1yZWFjdCBpbXBvcnQgLS1naXRodWIgdXNlcm5hbWU6cmVwbzpicmFuY2g6cGF0aC90by9vcGVuYXBpLnlhbWwgLS1vdXRwdXQgTVlfRkVUQ0hFUlMudHN4YCwgc3Vic3RpdHV0aW5nIHRoaW5ncyB3aGVyZSBuZWNlc3NhcnkuCjEuICBZb3Ugd2lsbCBiZSBwcm9tcHRlZCBmb3IgYSB0b2tlbi4KMS4gIFBhc3RlIHlvdXIgdG9rZW4uCjEuICBZb3Ugd2lsbCBiZSBhc2tlZCBpZiB5b3UnZCBsaWtlIHRvIHNhdmUgaXQgZm9yIGxhdGVyLiBUaGlzIGlzIF9lbnRpcmVseV8gdXAgdG8geW91IGFuZCBjb21wbGV0ZWx5IHNhZmU6IGl0IGlzIHNhdmVkIGluIHlvdXIgaG9tZSBkaXJlY3RvcnkuCjEuICBZb3UncmUgZG9uZSEg8J+OiQoKTm90ZTogRm9yIENJIGVudmlyb25tZW50LCB5b3UgY2FuIGFsc28gcHJvdmlkZSB0aGUgZ2l0aHViIHRva2VuIHdpdGggdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbGxlZCBgR0lUSFVCX1RPS0VOYAoKIyMjIyBUcmFuc2Zvcm1pbmcgYW4gT3JpZ2luYWwgU3BlYwoKSW4gc29tZSBjYXNlcywgeW91IG1pZ2h0IG5lZWQgdG8gYXVnbWVudCBhbiBleGlzdGluZyBPcGVuQVBJIHNwZWNpZmljYXRpb24gb24gdGhlIGZseSwgZm9yIGNvZGUtZ2VuZXJhdGlvbiBwdXJwb3Nlcy4gT3VyIENMSSBtYWtlcyB0aGlzIHF1aXRlIHN0cmFpZ2h0Zm9yd2FyZDoKCmBgYGJhc2gKICByZXN0ZnVsLXJlYWN0IGltcG9ydCAtLWZpbGUgbXlzcGVjLnlhbWwgLS1vdXRwdXQgbXliZXR0ZXJjb21wb25lbnRzLnRzeCAtLXRyYW5zZm9ybWVyIHBhdGgvdG8vbXktdHJhbnNmb3JtZXIuanMKYGBgCgpUaGUgZnVuY3Rpb24gc3BlY2lmaWVkIGluIGAtLXRyYW5zZm9ybWVyYCBpcyBwdXJlOiBpdCBpbXBvcnRzIHlvdXIgYC0tZmlsZWAsIHRyYW5zZm9ybXMgaXQsIGFuZCBwYXNzZXMgdGhlIGF1Z21lbnRlZCBPcGVuQVBJIHNwZWNpZmljYXRpb24gdG8gYHJlc3RmdWwtcmVhY3RgJ3MgZ2VuZXJhdG9yLiBIZXJlJ3MgaG93IGl0IGNhbiBiZSB1c2VkOgoKYGBgdHMKLy8gL3BhdGgvdG8vbXktdHJhbnNmb3JtZXIuanMKCi8qKgogKiBUcmFuc2Zvcm1lciBmdW5jdGlvbiBmb3IgcmVzdGZ1bC1yZWFjdC4KICoKICogQHBhcmFtIHtPcGVuQVBJT2JqZWN0fSBzY2hlbWEKICogQHJldHVybiB7T3BlbkFQSU9iamVjdH0KICovCm1vZHVsZS5leHBvcnRzID0gaW5wdXRTY2hlbWEgPT4gKHsKICAuLi5pbnB1dFNjaGVtYSwKICAvLyBQbGFjZSB5b3VyIGF1Z21lbnRhdGlvbnMgaGVyZQogIHBhdGhzOiBPYmplY3QuZW50cmllcyhzY2hlbWEucGF0aHMpLnJlZHVjZSgKICAgIChtZW0sIFtwYXRoLCBwYXRoSXRlbV0pID0+ICh7CiAgICAgIC4uLm1lbSwKICAgICAgW3BhdGhdOiBPYmplY3QuZW50cmllcyhwYXRoSXRlbSkucmVkdWNlKAogICAgICAgIChwYXRoSXRlbU1lbSwgW3ZlcmIsIG9wZXJhdGlvbl0pID0+ICh7CiAgICAgICAgICAuLi5wYXRoSXRlbU1lbSwKICAgICAgICAgIFt2ZXJiXTogewogICAgICAgICAgICAuLi5maXhPcGVyYXRpb25JZChwYXRoLCB2ZXJiLCBvcGVyYXRpb24pLAogICAgICAgICAgfSwKICAgICAgICB9KSwKICAgICAgICB7fSwKICAgICAgKSwKICAgIH0pLAogICAge30sCiAgKSwKfSk7CmBgYAoKIyMjIyBBZHZhbmNlZCBjb25maWd1cmF0aW9uCgpgcmVzdGZ1bC1yZWFjdGAgc3VwcG9ydHMgdGhlIGNvbmNlcHQgb2YgInNjaGVtYSBzdGl0Y2hpbmciIGluIGEgUkVTVGZ1bCBlY29zeXN0ZW0gYXMgd2VsbC4gV2UgYXJlIGFibGUgdG8gdGllIG11bHRpcGxlIGJhY2tlbmRzIHRvZ2V0aGVyIGFuZCBnZW5lcmF0ZSBjb2RlIHVzaW5nIGEgc2luZ2xlIGNvbmZpZ3VyYXRpb24gZmlsZSwgYHJlc3RmdWwtcmVhY3QuY29uZmlnLmpzYAoKVG8gYWN0aXZhdGUgdGhpcyAiYWR2YW5jZWQgbW9kZSIsIHJlcGxhY2UgYWxsIGZsYWdzIGZyb20geW91ciBgcmVzdGZ1bC1yZWFjdGAgY2FsbCB3aXRoIHRoZSBjb25maWcgZmxhZzogYC0tY29uZmlnIHJlc3RmdWwtcmVhY3QuY29uZmlnLmpzYCAob3IgYW55IGZpbGVuYW1lIHRoYXQgeW91IHdhbnQpLgoK4pqg77iPICoqTm90ZToqKiB1c2luZyBhIGNvbmZpZyBmaWxlIG1ha2VzIHVzZSBvZiBhbGwgb2YgdGhlIG9wdGlvbnMgY29udGFpbmVkIHRoZXJlaW4sIGFuZCBpZ25vcmVzIGFsbCBvdGhlciBDTEkgZmxhZ3MuCgojIyMjIyBDb25maWcgRmlsZSBGb3JtYXQKCmBgYHRzCmludGVyZmFjZSBSZXN0ZnVsUmVhY3RDb25maWcgewogIFtiYWNrZW5kOiBzdHJpbmddOiB7CiAgICAvLyBjbGFzc2ljIGNvbmZpZ3VyYXRpb24KICAgIG91dHB1dDogc3RyaW5nOwogICAgZmlsZT86IHN0cmluZzsKICAgIGdpdGh1Yj86IHN0cmluZzsKICAgIHRyYW5zZm9ybWVyPzogc3RyaW5nOwogICAgdmFsaWRhdGlvbj86IGJvb2xlYW47CiAgICBza2lwUmVhY3Q/OiBib29sZWFuOwoKICAgIC8vIGFkdmFuY2VkIGNvbmZpZ3VyYXRpb24KICAgIGN1c3RvbUltcG9ydD86IHN0cmluZzsKICAgIGN1c3RvbVByb3BzPzogewogICAgICBiYXNlPzogc3RyaW5nOwogICAgfTsKICAgIHBhdGhQYXJhbWV0ZXJzRW5jb2RpbmdNb2RlPzogInVyaUNvbXBvbmVudCIgfCAicmZjMzk4NiI7CiAgICBjdXN0b21HZW5lcmF0b3I/OiAoZGF0YTogewogICAgICBjb21wb25lbnROYW1lOiBzdHJpbmc7CiAgICAgIHZlcmI6IHN0cmluZzsKICAgICAgcm91dGU6IHN0cmluZzsKICAgICAgZGVzY3JpcHRpb246IHN0cmluZzsKICAgICAgZ2VuZXJpY3NUeXBlczogc3RyaW5nOwogICAgICBvcGVyYXRpb246IE9wZXJhdGlvbk9iamVjdDsKICAgICAgcGFyYW1zSW5QYXRoOiBzdHJpbmdbXTsKICAgICAgcGFyYW1zVHlwZXM6IHN0cmluZzsKICAgIH0pID0+IHN0cmluZzsKICB9Owp9CmBgYAoKIyMjIyMgQ29uZmlnIEZpbGUgRXhhbXBsZQoKYGBganMKLy8gcmVzdGZ1bC1yZWFjdC5jb25maWcuanMKLyoqCiAqIFJlc3RmdWwtcmVhY3QgY29uZmlndXJhdGlvbi4KICoKICogQHR5cGUge2ltcG9ydCgicmVzdGZ1bC1yZWFjdC9kaXN0L2Jpbi9jb25maWciKS5SZXN0ZnVsUmVhY3RBZHZhbmNlZENvbmZpZ3VyYXRpb259CiAqLwptb2R1bGUuZXhwb3J0cyA9IHsKICBteUZpcnN0QmFja2VuZDogewogICAgb3V0cHV0OiAic3JjL3F1ZXJpZXMvbXlGaXJzdEJhY2tlbmQudHN4IiwKICAgIGZpbGU6ICJzcGVjcy9teS1maXJzdC1iYWNrZW5kLnlhbWwiLAogICAgY3VzdG9tUHJvcHM6IHsKICAgICAgYmFzZTogYCJodHRwOi8vbXktZmlyc3QtYmFja2VuZC5jb20iYCwKICAgIH0sCiAgfSwKICBjb25maWd1cmFibGVCYWNrZW5kOiB7CiAgICBvdXRwdXQ6ICJzcmMvcXVlcmllcy9jb25maWd1cmFibGVCYWNrZW5kLnRzeCIsCiAgICBnaXRodWI6ICJjb250aWFtbzpyZXN0ZnVsLXJlYWN0Om1hc3Rlcjpkb2NzL3N3YWdnZXIuanNvbiIsCiAgICBjdXN0b21JbXBvcnQ6IGBpbXBvcnQgeyBnZXRDb25maWcgfSBmcm9tICIuLi9jb21wb25lbnRzL0NvbmZpZy50c3giO2AsCiAgICBjdXN0b21Qcm9wczogewogICAgICBiYXNlOiBge2dldENvbmZpZygiYmFja2VuZEJhc2VQYXRoIil9YCwKICAgIH0sCiAgfSwKfTsKYGBgCgpgYGBqc29uCi8vIHBhY2thZ2UuanNvbgp7CiAgInNjcmlwdHMiOiB7CiAgICAiZ2VuIjogInJlc3RmdWwtcmVhY3QgaW1wb3J0IC0tY29uZmlnIHJlc3RmdWwtcmVhY3QuY29uZmlnLmpzIiwKICAgICJnZW4tZmlyc3QiOiAicmVzdGZ1bC1yZWFjdCBpbXBvcnQgLS1jb25maWcgcmVzdGZ1bC1yZWFjdC5jb25maWcuanMgbXlGaXJzdEJhY2tlbmQiCiAgfQp9CmBgYAoKIyMjIyMgQ3VzdG9tIGdlbmVyYXRvcgoKVG8gc3VwcG9ydCBldmVuIG1vcmUgYWR2YW5jZWQgdXNlY2FzZXMgKGxpa2UgYSBwcm9taXNlIGJhc2UgQVBJLCBtb2NrIGdlbmVyYXRvciBvciBhbnl0aGluZyBlbHNlIHRoYXQgY2FuIGluZmVyIGZyb20geW91ciBzcGVjcyksIHlvdSBjYW4gZGVmaW5lIHlvdXIgb3duIHRlbXBsYXRlIGluIGBjdXN0b21HZW5lcmF0b3JgLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbCBmb3IgZWFjaCByb3V0ZSB3aXRoIHNvbWUgdXNlZnVsIGNvbXB1dGVkIHZhbHVlcyAoc2VlIHRoZSB0eXBlcyBhYm92ZSkgYW5kIHRoZSByZXN1bHRlZCBzdHJpbmcgd2lsbCBiZSBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIGZpbGUuCgpZb3UgY2FuIHNlZSBhIGNvbmNyZXRlIHVzYWdlIGluc2lkZSB0aGUgYGV4YW1wbGVzYCBmb2xkZXIgYW5kIHRyeSB5b3Vyc2VsZiBpbiB0aGlzIHJlcG9zaXRvcnkgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgotIGB5YXJuIGJ1aWxkYAotIGB5YXJuIGV4YW1wbGU6YWR2YW5jZWQgcGV0c3RvcmUtY3VzdG9tLWZldGNoYAoKWW91IGNhbiBpbnNwZWN0IHRoZSByZXN1bHQgaW5zaWRlIGAvZXhhbXBsZXMvcGV0c3RvcmVGcm9tRmlsZVNwZWNXaXRoQ3VzdG9tRmV0Y2gudHN4YAoKIyMjIyMgT25seSBnZW5lcmF0aW5nIGN1c3RvbSBjb2RlIChubyByZWFjdCBob29rcy9jb21wb25lbnRzKQoKSW4gc29tZSBjYXNlcyB5b3UgbWlnaHQgd2FudCB0byB1c2UgdGhlIGZhbWlsaWFyIHJlc3RmdWwtcmVhY3QgdG8gZ2VuZXJhdGUgY29kZSBmb3Igbm9uLXJlYWN0IGVudmlyb25tZW50cyAoZS5nLiBwcm9taXNlLWJhc2VkIGZldGNoZXJzIGZvciBub2RlanMgb3Igb3RoZXIgZnJhbWV3b3JrcykuIEluIHRoaXMgY2FzZSwgeW91IGNhbiBkaXNhYmxlIHJlYWN0IGNvZGUgZ2VuZXJhdGlvbiBhbHRvZ2V0aGVyIGJ5IHBhc3NpbmcgdGhlIGAtLXNraXBSZWFjdGAgZmxhZyBvciwgaWYgeW91IGFyZSB1c2luZyBhIGNvbmZpZ3VyYXRpb24gZmlsZSwgc2V0dGluZyBgc2tpcFJlYWN0OiB0cnVlYC4KCldoZW4gc2V0LCBvbmx5IHlvdXIgY3VzdG9tIGdlbmVyYXRvcnMgd2lsbCBiZSBleGVjdXRlZC4KCiMjIENvbnRyaWJ1dGluZwoKQWxsIGNvbnRyaWJ1dGlvbnMgYXJlIHdlbGNvbWUg4oCTIGVzcGVjaWFsbHk6CgotIGRvY3VtZW50YXRpb24sCi0gYnVnIHJlcG9ydHMgYW5kIGlzc3VlcywKLSBjb2RlIGNvbnRyaWJ1dGlvbnMuCgojIyMgQ29kZQoKSWYgeW91J2QgbGlrZSB0byBhY3RpdmVseSBkZXZlbG9wIG9yIGhlbHAgbWFpbnRhaW4gdGhpcyBwcm9qZWN0IHRoZW4gdGhlcmUgYXJlIGV4aXN0aW5nIHRlc3RzIGFnYWluc3Qgd2hpY2ggeW91IGNhbiB0ZXN0IHRoZSBsaWJyYXJ5IHdpdGguIFR5cGljYWxseSwgdGhpcyBsb29rcyBsaWtlCgotIGBnaXQgY2xvbmUgZ2l0QGdpdGh1Yi5jb206Y29udGlhbW8vcmVzdGZ1bC1yZWFjdC5naXRgCi0gYGNkIHJlc3RmdWwtcmVhY3RgCi0gYHlhcm4gaW5zdGFsbGAKLSBgeWFybiB0ZXN0IC0td2F0Y2hgCgpGcm9tIHRoZXJlLCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gc3RhcnQgZGV2ZWxvcGluZyB3aXRob3V0IHByb2JsZW1zLgoKIyMjIEhvdyB0byBwdWJsaXNoIHRvIG5wbQoKSnVzdCB1cGRhdGUgdGhlIGB2ZXJzaW9uYCBpbiBgcGFja2FnZS5qc29uYCEKCkFzIHNvb24gYXMgeW91ciBicmFuY2ggd2lsbCBiZSBtZXJnZWQgdG8gbWFzdGVyLCBhIG5ldyBucG0gdmVyc2lvbiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcHVibGlzaGVkIGZvciB5b3UuCgojIyBgQHdpdGhvdXQtY2xpYCBucG0gcGFja2FnZQoKSWYgZm9yIGFueSByZWFzb25zIHlvdSBkb24ndCB3YW50IHRvIHVzZSBvdXIgQ0xJIHRvIGdlbmVyYXRlIHJlc3RmdWwtcmVhY3QgY29tcG9uZW50cywgd2UgcHJvdmlkZSBhIGB3aXRob3V0LWNsaWAgdmVyc2lvbiBvZiB0aGUgcGFja2FnZS4KCkp1c3QgYG5wbSBpbnN0YWxsIHJlc3RmdWwtcmVhY3RAd2l0aG91dC1jbGlgIHRvIGhhdmUgdGhpcyBsaWdodCB2ZXJzaW9uLgoKVGhpcyB2ZXJzaW9uIHdpbGwgZm9sbG93IGBsYXRlc3RgIGJ1dCB3aXRob3V0IHRoZSBjbGkgcGFydCAobW9yZSBkZXRhaWxzIGludG8gYHB1Ymxpc2gtd2l0aG91dC1jbGkuanNgKS4KCiMjIE5leHQgU3RlcHMKCldlJ3JlIGFjdGl2ZWx5IGRldmVsb3BpbmcgdGhpcyBhdCBDb250aWFtbyB0byBtZWV0IG91ciB1c2UgY2FzZXMgYXMgdGhleSBhcmlzZS4gSWYgeW91IGhhdmUgYSB1c2UgY2FzZSB0aGF0IHlvdSdkIGxpa2UgdG8gaW1wbGVtZW50LCBkbyBpdCEgT3BlbiBhbiBpc3N1ZSwgc3VibWl0IGEgUHVsbCBSZXF1ZXN0LCBoYXZlIGZ1biEgV2UncmUgZnJpZW5kbHkuCg== readmeEtag: '"177e8cd0afe6c2003d24e3c25e1f3b437abba9d3"' readmeLastModified: Thu, 16 Jun 2022 12:35:09 GMT repositoryId: 139149148 description: >- A consistent, declarative way of interacting with RESTful backends, featuring code-generation from Swagger and OpenAPI specs 🔥 created: '2018-06-29T12:52:25Z' updated: '2026-01-26T12:50:12Z' language: TypeScript archived: true stars: 1863 watchers: 16 forks: 108 owner: contiamo logo: https://avatars.githubusercontent.com/u/862286?v=4 license: MIT repoEtag: '"32c54086e52e0578ecf6f40463596fd7a4246a729a47f8962472b52f6695d6d0"' repoLastModified: Mon, 26 Jan 2026 12:50:12 GMT foundInMaster: true id: 7fa6fa97d3fc13594a92cd5594506906 - source: https://openapi.tools/ name: NSwag category: SDK link: https://NSwag.org repository: https://github.com/ricosuter/nswag language: .NET source_description: OpenAPI toolchain for .NET, Web API and TypeScript v2: true v3: true repositoryMetadata: base64Readme: >- IyMgTlN3YWc6IFRoZSBTd2FnZ2VyL09wZW5BUEkgdG9vbGNoYWluIGZvciAuTkVULCBBU1AuTkVUIENvcmUgYW5kIFR5cGVTY3JpcHQKCk5Td2FnIHwgW05Kc29uU2NoZW1hXShodHRwOi8vbmpzb25zY2hlbWEub3JnKSB8IFtBcGltdW5kb10oaHR0cHM6Ly9hcGltdW5kby5jb20pIHwgW05hbW90aW9uLlJlZmxlY3Rpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTmFtb3Rpb24uUmVmbGVjdGlvbikKClshW051R2V0IFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvdi9OU3dhZy5Db3JlLnN2ZyldKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcz9xPU5Td2FnKQpbIVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvbnN3YWcuc3ZnKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbnN3YWcpClshW051R2V0IFZlcnNpb24gUHJldmlld10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9udWdldC92cHJlL05Td2FnLkNvcmUuc3ZnKV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzP3E9TlN3YWcpClshW2J1aWxkXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbCkKWyFbRGlzY29yZF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9EaXNjb3JkLWpvaW4lMjBjaGF0LTFkY2U3My5zdmcpXShodHRwczovL2Rpc2NvcmQuZ2cvQnhRTnkyNVdGNikKWyFbU3RhY2tPdmVyZmxvd10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9xdWVzdGlvbnMtb24lMjBTdGFja092ZXJmbG93LW9yYW5nZS5zdmc/c3R5bGU9ZmxhdCldKGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvdGFnZ2VkL25zd2FnKQpbIVtXaWtpXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2RvY3MtaW4lMjB3aWtpLW9yYW5nZS5zdmc/c3R5bGU9ZmxhdCldKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvbnN3YWcvd2lraSkKWyFbQmFja2VycyBvbiBPcGVuIENvbGxlY3RpdmVdKGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL05Td2FnL2JhY2tlcnMvYmFkZ2Uuc3ZnKV0oI2JhY2tlcnMpIApbIVtTcG9uc29ycyBvbiBPcGVuIENvbGxlY3RpdmVdKGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL05Td2FnL3Nwb25zb3JzL2JhZGdlLnN2ZyldKCNzcG9uc29ycykKCjpwb2ludF9yaWdodDogWyoqQW5ub3VuY2luZyBBcGltdW5kbzoqKiBBbiBBUEkgZG9jdW1lbnRhdGlvbiBzeXN0ZW0gYmFzZWQgb24gTlN3YWcgYW5kIE5Kc29uU2NoZW1hXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL2lzc3Vlcy8zMDc3KSA6cG9pbnRfbGVmdDoKCk5Td2FnIGlzIGEgU3dhZ2dlci9PcGVuQVBJIDIuMCBhbmQgMy4wIHRvb2xjaGFpbiBmb3IgLk5FVCwgLk5FVCBDb3JlLCBXZWIgQVBJLCBBU1AuTkVUIENvcmUsIFR5cGVTY3JpcHQgKGpRdWVyeSwgQW5ndWxhckpTLCBBbmd1bGFyIDIrLCBBdXJlbGlhLCBLbm9ja291dEpTIGFuZCBtb3JlKSBhbmQgb3RoZXIgcGxhdGZvcm1zLCB3cml0dGVuIGluIEMjLiBUaGUgW09wZW5BUEkvU3dhZ2dlciBzcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgdXNlcyBKU09OIGFuZCBKU09OIFNjaGVtYSB0byBkZXNjcmliZSBhIFJFU1RmdWwgd2ViIEFQSS4gVGhlIE5Td2FnIHByb2plY3QgcHJvdmlkZXMgdG9vbHMgdG8gZ2VuZXJhdGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBmcm9tIGV4aXN0aW5nIEFTUC5ORVQgV2ViIEFQSSBjb250cm9sbGVycyBhbmQgY2xpZW50IGNvZGUgZnJvbSB0aGVzZSBPcGVuQVBJIHNwZWNpZmljYXRpb25zLiAKClRoZSBwcm9qZWN0IGNvbWJpbmVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIFN3YXNoYnVja2xlIChPcGVuQVBJL1N3YWdnZXIgZ2VuZXJhdGlvbikgYW5kIEF1dG9SZXN0IChjbGllbnQgZ2VuZXJhdGlvbikgaW4gb25lIHRvb2xjaGFpbiAodGhlc2UgdHdvIGxpYnMgYXJlIG5vdCBuZWVkZWQpLiBUaGlzIHdheSBhIGxvdCBvZiBpbmNvbXBhdGliaWxpdGVzIGNhbiBiZSBhdm9pZGVkIGFuZCBmZWF0dXJlcyB3aGljaCBhcmUgbm90IHdlbGwgZGVzY3JpYmVkIGJ5IHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gb3IgSlNPTiBTY2hlbWEgYXJlIGJldHRlciBzdXBwb3J0ZWQgKGUuZy4gW2luaGVyaXRhbmNlXShodHRwczovL2dpdGh1Yi5jb20vTkpzb25TY2hlbWEvTkpzb25TY2hlbWEvd2lraS9Jbmhlcml0YW5jZSksIFtlbnVtXShodHRwczovL2dpdGh1Yi5jb20vTkpzb25TY2hlbWEvTkpzb25TY2hlbWEvd2lraS9FbnVtcykgYW5kIHJlZmVyZW5jZSBoYW5kbGluZykuIFRoZSBOU3dhZyBwcm9qZWN0IGhlYXZpbHkgdXNlcyBbTkpzb25TY2hlbWEgZm9yIC5ORVRdKGh0dHA6Ly9uanNvbnNjaGVtYS5vcmcpIGZvciBKU09OIFNjaGVtYSBoYW5kbGluZyBhbmQgQyMvVHlwZVNjcmlwdCBjbGFzcy9pbnRlcmZhY2UgZ2VuZXJhdGlvbi4gCgohW1Rvb2xjaGFpbkRpYWdyYW1dKGFzc2V0cy9Ub29sY2hhaW5EaWFncmFtLnBuZykgCgpUaGUgcHJvamVjdCBpcyBkZXZlbG9wZWQgYW5kIG1haW50YWluZWQgYnkgW1JpY28gU3V0ZXJdKGh0dHA6Ly9yc3V0ZXIuY29tKSBhbmQgb3RoZXIgY29udHJpYnV0b3JzLgoKIyMjIEZlYXR1cmVzCgotIFtHZW5lcmF0ZSBTd2FnZ2VyIDIuMCBhbmQgT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbnMgZnJvbSBDIyBBU1AuTkVUIChDb3JlKSBjb250cm9sbGVyc10oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy93aWtpL01pZGRsZXdhcmVzKQotIFNlcnZlIHRoZSBzcGVjcyB2aWEgQVNQLk5FVCAoQ29yZSkgbWlkZGxld2FyZSwgb3B0aW9uYWxseSB3aXRoIFtTd2FnZ2VyIFVJXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aSkgb3IgW1JlRG9jXShodHRwczovL2dpdGh1Yi5jb20vUmViaWxseS9SZURvYykKLSBHZW5lcmF0ZSBDIyBvciBUeXBlU2NyaXB0IGNsaWVudHMvcHJveGllcyBmcm9tIHRoZXNlIHNwZWNzCi0gRXZlcnl0aGluZyBjYW4gYmUgYXV0b21hdGVkIHZpYSBDTEkgKGRpc3RyaWJ1dGVkIHZpYSBOdUdldCB0b29sIG9yIGJ1aWxkIHRhcmdldDsgb3IgTlBNKQotIENMSSBjb25maWd1cmVkIHZpYSBKU09OIGZpbGUgb3IgTlN3YWdTdHVkaW8gV2luZG93cyBVSQoKIyMjIFdheXMgdG8gdXNlIHRoZSB0b29sY2hhaW4KCi0gU2ltcGxlIHRvIHVzZSBXaW5kb3dzIEdVSSwgW05Td2FnU3R1ZGlvXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pCi0gQnkgdXNpbmcgdGhlIFtPcGVuQVBJIG9yIE9wZW5BUEkgVUkgT1dJTiBhbmQgQVNQLk5FVCBDb3JlIE1pZGRsZXdhcmVzXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvTWlkZGxld2FyZXMpIChhbHNvIHNlcnZlcyB0aGUgW1N3YWdnZXIgVUldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpKSkgKHJlY29tbWVuZGVkKQotIFZpYSBbY29tbWFuZCBsaW5lXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvQ29tbWFuZExpbmUpIChXaW5kb3dzLCBNYWMgYW5kIExpbnV4IHN1cHBvcnQgdGhyb3VnaCBbTW9ub10oaHR0cDovL3d3dy5tb25vLXByb2plY3QuY29tLykgb3IgLk5FVCBDb3JlIGNvbnNvbGUgYmluYXJ5LCBhbHNvIHZpYSBbTlBNIHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL25zd2FnKSkKLSBJbiB5b3VyIEMjIGNvZGUsIHZpYSBbTnVHZXRdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcz9xPU5Td2FnKQotIEluIHlvdXIgW01TQnVpbGQgdGFyZ2V0c10oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy93aWtpL05Td2FnLk1TQnVpbGQpCi0gV2l0aCBbU2VydmljZVByb2plY3RSZWZlcmVuY2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcvd2lraS9TZXJ2aWNlUHJvamVjdFJlZmVyZW5jZSkgdGFncyBpbiB5b3VyIC5jc3Byb2ogKHByZXZpZXcpCi0gSW4geW91ciBbQXp1cmUgVjIgRnVuY3Rpb25zXShodHRwczovL2dpdGh1Yi5jb20vSnVzYXMvTlN3YWcuQXp1cmVGdW5jdGlvbnNWMikgKGV4dGVybmFsIHByb2plY3QsIG1pZ2h0IG5vdCB1c2UgbGF0ZXN0IE5Td2FnIHZlcnNpb24pCgojIyMgVHV0b3JpYWxzCgotIFtBZGQgTlN3YWcgdG8geW91ciBBU1AuTkVUIENvcmUgYXBwXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvQXNwTmV0Q29yZS1NaWRkbGV3YXJlKQotIFtJbnRlZ3JhdGUgdGhlIE5Td2FnIHRvb2xjaGFpbiBpbnRvIHlvdXIgQVNQLk5FVCBXZWIgQVBJIHByb2plY3RdKGh0dHBzOi8vYmxvZy5yc3V0ZXIuY29tL25zd2FnLXR1dG9yaWFsLWludGVncmF0ZS10aGUtbnN3YWctdG9vbGNoYWluLWludG8teW91ci1hc3AtbmV0LXdlYi1hcGktcHJvamVjdC8pCi0gW0dlbmVyYXRlIGFuIEFuZ3VsYXIgVHlwZVNjcmlwdCBjbGllbnQgZnJvbSBhbiBleGlzdGluZyBBU1AuTkVUIFdlYiBBUEkgd2ViIGFzc2VtYmx5XShodHRwczovL2Jsb2cucnN1dGVyLmNvbS9uc3dhZy10dXRvcmlhbC1nZW5lcmF0ZS1hbi1hbmd1bGFyLTItdHlwZXNjcmlwdC1jbGllbnQtZnJvbS1hbi1leGlzdGluZy1hc3AtbmV0LXdlYi1hcGktd2ViLWFzc2VtYmx5LykKLSBbVmlkZW8gVHV0b3JpYWw6IEhvdyB0byBpbnRlZ3JhdGUgTlN3YWcgaW50byB5b3VyIEFTUC5ORVQgQ29yZSBXZWIgQVBJIHByb2plY3QgKDUgbWlucyldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9bEY5Wlo4cDJDaXcpCgojIyMgT3BlbkFQSS9Td2FnZ2VyIEdlbmVyYXRvcnMKCi0gQVNQLk5FVCBXZWIgQVBJIGFzc2VtYmx5IHRvIE9wZW5BUEkgKHN1cHBvcnRzIC5ORVQgQ29yZSkKICAgIC0gW0FzcE5ldENvcmVPcGVuQXBpRG9jdW1lbnRHZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcvd2lraS9Bc3BOZXRDb3JlT3BlbkFwaURvY3VtZW50R2VuZXJhdG9yKQogICAgLSBbV2ViQXBpT3BlbkFwaURvY3VtZW50R2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvV2ViQXBpT3BlbkFwaURvY3VtZW50R2VuZXJhdG9yKQogICAgICAgIC0gR2VuZXJhdGVzIGFuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmb3IgV2ViIEFQSSBjb250cm9sbGVycwogICAgLSBbV2ViQXBpVG9PcGVuQXBpQ29tbWFuZF0oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy93aWtpL1dlYkFwaVRvT3BlbkFwaUNvbW1hbmQpCiAgICAgICAgLSBHZW5lcmF0ZXMgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZvciBjb250cm9sbGVycyBpbiBhbiBleHRlcm5hbCBXZWIgQVBJIGFzc2VtYmx5CiAgICAgICAgLSBbQWxzbyBzdXBwb3J0cyBsb2FkaW5nIG9mIC5ORVQgQ29yZSBhc3NlbWJsaWVzXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvQXNzZW1ibHktbG9hZGluZykKICAgIC0gW1R5cGVzVG9PcGVuQXBpQ29tbWFuZF0oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy93aWtpL1R5cGVzVG9PcGVuQXBpQ29tbWFuZCkKICAgICAgICAtIEdlbmVyYXRlcyBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gY29udGFpbmluZyBvbmx5IHR5cGVzIGZyb20gLk5FVCBhc3NlbWJsaWVzCgojIyMgQ29kZSBHZW5lcmF0b3JzCgotICoqQ1NoYXJwIENsaWVudCoqCgktIFtDU2hhcnBDbGllbnRHZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcvd2lraS9DU2hhcnBDbGllbnRHZW5lcmF0b3IpCgkJLSBHZW5lcmF0ZXMgQyMgY2xpZW50cyBmcm9tIGFuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbgoJCS0gR2VuZXJhdGVzIFBPQ09zIG9yIGNsYXNzZXMgaW1wbGVtZW50aW5nIFtJTm90aWZ5UHJvcGVydHlDaGFuZ2VkXShodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3N5c3RlbS5jb21wb25lbnRtb2RlbC5pbm90aWZ5cHJvcGVydHljaGFuZ2VkKHY9dnMuMTEwKS5hc3B4KSBzdXBwb3J0aW5nIERUT3MKCQktIFRoZSBnZW5lcmF0ZWQgY2xpZW50cyBjYW4gYmUgdXNlZCB3aXRoIGZ1bGwgLk5FVCwgLk5FVCBDb3JlLCBYYW1hcmluIGFuZCAuTkVUIFN0YW5kYXJkIDEuNCBpbiBnZW5lcmFsCi0gKipDU2hhcnAgQ29udHJvbGxlcnMqKiAoY29udHJhY3QgZmlyc3Qvc2NoZW1hIGZpcnN0IGRldmVsb3BtZW50KQoJLSBbQ1NoYXJwQ29udHJvbGxlckdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy93aWtpL0NTaGFycENvbnRyb2xsZXJHZW5lcmF0b3IpCgkgICAgLSBHZW5lcmF0ZXMgV2ViIEFQSSBDb250cm9sbGVycyBiYXNlZCBvbiBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gKEFTUC5ORVQgV2ViIEFQSSBhbmQgQVNQLk5FVCBDb3JlKQotICoqVHlwZVNjcmlwdCBDbGllbnQqKgoJLSBbVHlwZVNjcmlwdENsaWVudEdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy93aWtpL1R5cGVTY3JpcHRDbGllbnRHZW5lcmF0b3IpCgkJLSBHZW5lcmF0ZXMgVHlwZVNjcmlwdCBjbGllbnRzIGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uCgkJLSBBdmFpbGFibGUgdGVtcGxhdGVzL3N1cHBvcnRlZCBsaWJyYXJpZXM6IAoJCQktIEpRdWVyeSB3aXRoIENhbGxiYWNrcywgYEpRdWVyeUNhbGxiYWNrc2AKCQkJLSBKUXVlcnkgd2l0aCBwcm9taXNlcyBgSlF1ZXJ5UHJvbWlzZXNgCgkJCS0gQW5ndWxhckpTIHVzaW5nICRodHRwLCBgQW5ndWxhckpTYAoJCQktIEFuZ3VsYXIgKHYyKykgdXNpbmcgdGhlIGh0dHAgc2VydmljZSwgYEFuZ3VsYXJgCgkJCS0gd2luZG93LmZldGNoIEFQSSBhbmQgRVM2IHByb21pc2VzLCBgRmV0Y2hgICh1c2UgdGhpcyB0ZW1wbGF0ZSBpbiB5b3VyIFJlYWN0L1JlZHV4IGFwcCkKCQkJLSBBdXJlbGlhIHVzaW5nIHRoZSBIdHRwQ2xpZW50IGZyb20gYXVyZWxpYS1mZXRjaC1jbGllbnQsIGBBdXJlbGlhYCAoYmFzZWQgb24gdGhlIEZldGNoIHRlbXBsYXRlKQoJCQktIGBBeGlvc2AgKHByZXZpZXcpCgkgICAgCiMjIyBEb3dubG9hZHMKCi0gW0Rvd25sb2FkIGxhdGVzdCAqKk5Td2FnU3R1ZGlvIE1TSSBpbnN0YWxsZXIgKE5Td2FnU3R1ZGlvLm1zaSkqKl0oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy9yZWxlYXNlcykgKFdpbmRvd3MgRGVza3RvcCBhcHBsaWNhdGlvbikKLSBbRG93bmxvYWQgbGF0ZXN0ICoqTlN3YWcgY29tbWFuZCBsaW5lIHRvb2xzKiogYW5kIE5Td2FnU3R1ZGlvIChOU3dhZy56aXApXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3JlbGVhc2VzKQoKIyMjIE5QTSBQYWNrYWdlcwoKLSBbTlN3YWddKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL25zd2FnKTogQ29tbWFuZCBsaW5lIHRvb2xzICguTkVUIGFuZCAuTkVUIENvcmUpIGRpc3RyaWJ1dGVkIGFzIE5QTSBwYWNrYWdlCgojIyMgTnVHZXQgUGFja2FnZXMKCiMjIyMgU3BlY2lmaWNhdGlvbgoKLSAqKltOU3dhZy5Db3JlXShodHRwczovL2FwaW11bmRvLmNvbS9vcmdhbml6YXRpb25zL251Z2V0LW9yZy9udWdldC1mZWVkcy9wdWJsaWMvcGFja2FnZXMvTlN3YWcuQ29yZS92ZXJzaW9ucy9sYXRlc3QpKioKICAgIC0gVGhlIE9wZW5BUEkvU3dhZ2dlciByZWFkZXIgYW5kIHdyaXRlciBjbGFzc2VzLCBzZWUgW09wZW5BcGlEb2N1bWVudF0oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy93aWtpL09wZW5BcGlEb2N1bWVudCkgKC5ORVQgU3RhbmRhcmQgMS4wIC8gMi4wIGFuZCAuTkVUIDQuNSkKLSAqKltOU3dhZy5Db3JlLllhbWxdKGh0dHBzOi8vYXBpbXVuZG8uY29tL29yZ2FuaXphdGlvbnMvbnVnZXQtb3JnL251Z2V0LWZlZWRzL3B1YmxpYy9wYWNrYWdlcy9OU3dhZy5Db3JlLllhbWwvdmVyc2lvbnMvbGF0ZXN0KSoqICguTkVUIFN0YW5kYXJkIDEuMyAvIDIuMCBhbmQgLk5FVCA0LjUpCiAgICAtIEV4dGVuc2lvbnMgdG8gcmVhZCBhbmQgd3JpdGUgWUFNTCBPcGVuQVBJIHNwZWNpZmljYXRpb25zCi0gKipbTlN3YWcuQW5ub3RhdGlvbnNdKGh0dHBzOi8vYXBpbXVuZG8uY29tL29yZ2FuaXphdGlvbnMvbnVnZXQtb3JnL251Z2V0LWZlZWRzL3B1YmxpYy9wYWNrYWdlcy9OU3dhZy5Bbm5vdGF0aW9ucy92ZXJzaW9ucy9sYXRlc3QpKiogKC5ORVQgU3RhbmRhcmQgMS4wIC8gMi4wIGFuZCAuTkVUIDQuNSkKICAgIC0gQXR0cmlidXRlcyB0byBkZWNvcmF0ZSBXZWIgQVBJIGNvbnRyb2xsZXJzIHRvIGNvbnRyb2wgdGhlIE9wZW5BUEkgZ2VuZXJhdGlvbgoKIyMjIyBPcGVuQVBJIGdlbmVyYXRpb24KCi0gKipbTlN3YWcuR2VuZXJhdGlvbl0oaHR0cHM6Ly9hcGltdW5kby5jb20vb3JnYW5pemF0aW9ucy9udWdldC1vcmcvbnVnZXQtZmVlZHMvcHVibGljL3BhY2thZ2VzL05Td2FnLkdlbmVyYXRpb24vdmVyc2lvbnMvbGF0ZXN0LykqKiAoLk5FVCBTdGFuZGFyZCAxLjAgLyAyLjAgYW5kIC5ORVQgNC41KQogICAgLSBDbGFzc2VzIHRvIGdlbmVyYXRlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMKLSAqKltOU3dhZy5HZW5lcmF0aW9uLldlYkFwaV0oaHR0cHM6Ly9hcGltdW5kby5jb20vb3JnYW5pemF0aW9ucy9udWdldC1vcmcvbnVnZXQtZmVlZHMvcHVibGljL3BhY2thZ2VzL05Td2FnLkdlbmVyYXRpb24uV2ViQXBpL3ZlcnNpb25zL2xhdGVzdCkqKiAoLk5FVCBTdGFuZGFyZCAxLjAgLyAyLjAgYW5kIC5ORVQgNC41KQogICAgLSBDbGFzc2VzIHRvIGdlbmVyYXRlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgZnJvbSBXZWIgQVBJIGNvbnRyb2xsZXJzLCBzZWUgW1dlYkFwaU9wZW5BcGlEb2N1bWVudEdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy93aWtpL1dlYkFwaU9wZW5BcGlEb2N1bWVudEdlbmVyYXRvcikKLSAqKltOU3dhZy5HZW5lcmF0aW9uLkFzcE5ldENvcmVdKGh0dHBzOi8vYXBpbXVuZG8uY29tL29yZ2FuaXphdGlvbnMvbnVnZXQtb3JnL251Z2V0LWZlZWRzL3B1YmxpYy9wYWNrYWdlcy9OU3dhZy5HZW5lcmF0aW9uLkFzcE5ldENvcmUvdmVyc2lvbnMvbGF0ZXN0KSoqICguTkVUIFN0YW5kYXJkIDEuNiAvIDIuMCBhbmQgLk5FVCA0LjUuMSkKICAgIC0gKEV4cGVyaW1lbnRhbCkgQ2xhc3NlcyB0byBnZW5lcmF0ZSBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGZyb20gQVNQLk5FVCBDb3JlIE1WQyBjb250cm9sbGVycyB1c2luZyB0aGUgQXBpRXhwbG9yZXIKCiMjIyMgQ29kZSBnZW5lcmF0aW9uCgotICoqW05Td2FnLkNvZGVHZW5lcmF0aW9uXShodHRwczovL2FwaW11bmRvLmNvbS9vcmdhbml6YXRpb25zL251Z2V0LW9yZy9udWdldC1mZWVkcy9wdWJsaWMvcGFja2FnZXMvTlN3YWcuQ29kZUdlbmVyYXRpb24vdmVyc2lvbnMvbGF0ZXN0KSoqICguTkVUIFN0YW5kYXJkIDEuMyAvIDIuMCAvIC5ORVQgNC41LjEpCiAgICAtIEJhc2UgY2xhc3NlcyB0byBnZW5lcmF0ZSBjbGllbnRzIGZyb20gT3BlbkFQSSBzcGVjaWZpY2F0aW9ucwotICoqW05Td2FnLkNvZGVHZW5lcmF0aW9uLkNTaGFycF0oaHR0cHM6Ly9hcGltdW5kby5jb20vb3JnYW5pemF0aW9ucy9udWdldC1vcmcvbnVnZXQtZmVlZHMvcHVibGljL3BhY2thZ2VzL05Td2FnLkNvZGVHZW5lcmF0aW9uLkNTaGFycC92ZXJzaW9ucy9sYXRlc3QpKiogKC5ORVQgU3RhbmRhcmQgMS4zIGFuZCAuTkVUIDQuNS4xKQogICAgLSBDbGFzc2VzIHRvIGdlbmVyYXRlIEMjIGNsaWVudHMgZnJvbSBPcGVuQVBJIHNwZWNpZmljYXRpb25zLCBzZWUgW0NTaGFycENsaWVudEdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy93aWtpL0NTaGFycENsaWVudEdlbmVyYXRvcikgYW5kIFtDU2hhcnBDb250cm9sbGVyR2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvQ1NoYXJwQ29udHJvbGxlckdlbmVyYXRvcikKLSAqKltOU3dhZy5Db2RlR2VuZXJhdGlvbi5UeXBlU2NyaXB0XShodHRwczovL2FwaW11bmRvLmNvbS9vcmdhbml6YXRpb25zL251Z2V0LW9yZy9udWdldC1mZWVkcy9wdWJsaWMvcGFja2FnZXMvTlN3YWcuQ29kZUdlbmVyYXRpb24uVHlwZVNjcmlwdC92ZXJzaW9ucy9sYXRlc3QpKiogKC5ORVQgU3RhbmRhcmQgMS4zIGFuZCAuTkVUIDQuNS4xKQogICAgLSBDbGFzc2VzIHRvIGdlbmVyYXRlIFR5cGVTY3JpcHQgY2xpZW50cyBmcm9tIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMsIHNlZSBbVHlwZVNjcmlwdENsaWVudEdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy93aWtpL1R5cGVTY3JpcHRDbGllbnRHZW5lcmF0b3IpCgojIyMjIEFTUC5ORVQgYW5kIEFTUC5ORVQgQ29yZQoKLSAqKltOU3dhZy5Bc3BOZXRDb3JlXShodHRwczovL2FwaW11bmRvLmNvbS9vcmdhbml6YXRpb25zL251Z2V0LW9yZy9udWdldC1mZWVkcy9wdWJsaWMvcGFja2FnZXMvTlN3YWcuQXNwTmV0Q29yZS92ZXJzaW9ucy9sYXRlc3QpKiogKC5ORVQgU3RhbmRhcmQgMS42IC8gMi4wIGFuZCAuTkVUIDQuNS4xKykKLSAqKltOU3dhZy5Bc3BOZXQuT3dpbl0oaHR0cHM6Ly9hcGltdW5kby5jb20vb3JnYW5pemF0aW9ucy9udWdldC1vcmcvbnVnZXQtZmVlZHMvcHVibGljL3BhY2thZ2VzL05Td2FnLkFzcE5ldC5Pd2luL3ZlcnNpb25zL2xhdGVzdCkqKiAoLk5FVCA0LjUrKQogICAgLSBbQVNQLk5FVCBDb3JlL09XSU4gbWlkZGxld2FyZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcvd2lraS9NaWRkbGV3YXJlcykgZm9yIHNlcnZpbmcgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBhbmQgU3dhZ2dlciBVSQotICoqW05Td2FnLkFzcE5ldC5XZWJBcGldKGh0dHBzOi8vYXBpbXVuZG8uY29tL29yZ2FuaXphdGlvbnMvbnVnZXQtb3JnL251Z2V0LWZlZWRzL3B1YmxpYy9wYWNrYWdlcy9OU3dhZy5Bc3BOZXQuV2ViQXBpL3ZlcnNpb25zL2xhdGVzdCkqKiAoLk5FVCA0LjUrKQogICAgLSBBU1AuTkVUIFdlYiBBUEkgZmlsdGVyIHdoaWNoIHNlcmlhbGl6ZXMgZXhjZXB0aW9ucyAoW0pzb25FeGNlcHRpb25GaWx0ZXJBdHRyaWJ1dGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcvd2lraS9Kc29uRXhjZXB0aW9uRmlsdGVyQXR0cmlidXRlKSkKCiMjIyMgRnJvbnRlbmRzCgotICoqW05Td2FnLkFzc2VtYmx5TG9hZGVyXShodHRwczovL2FwaW11bmRvLmNvbS9vcmdhbml6YXRpb25zL251Z2V0LW9yZy9udWdldC1mZWVkcy9wdWJsaWMvcGFja2FnZXMvTlN3YWcuQXNzZW1ibHlMb2FkZXIvdmVyc2lvbnMvbGF0ZXN0KSoqICguTkVUIFN0YW5kYXJkIDEuNiAvIDIuMCBhbmQgLk5FVCA0LjUuMSk6IAogICAgLSBDbGFzc2VzIHRvIGxvYWQgYXNzZW1ibGllcyBpbiBhbiBpc29sYXRlZCBBcHBEb21haW4gYW5kIGdlbmVyYXRlIE9wZW5BUEkgc3BlY3MgZnJvbSBXZWIgQVBJIGNvbnRyb2xsZXJzCi0gKipbTlN3YWcuQ29tbWFuZHNdKGh0dHBzOi8vYXBpbXVuZG8uY29tL29yZ2FuaXphdGlvbnMvbnVnZXQtb3JnL251Z2V0LWZlZWRzL3B1YmxpYy9wYWNrYWdlcy9OU3dhZy5Db21tYW5kcy92ZXJzaW9ucy9sYXRlc3QpKiogKC5ORVQgU3RhbmRhcmQgMS42IC8gMi4wIGFuZCAuTkVUIDQuNS4xKyk6IAogICAgLSBDb21tYW5kcyBmb3IgdGhlIGNvbW1hbmQgbGluZSB0b29sIGltcGxlbWVudGF0aW9ucyBhbmQgVUkKLSAqKltOU3dhZy5NU0J1aWxkXShodHRwczovL2FwaW11bmRvLmNvbS9vcmdhbml6YXRpb25zL251Z2V0LW9yZy9udWdldC1mZWVkcy9wdWJsaWMvcGFja2FnZXMvTlN3YWcuTVNCdWlsZC92ZXJzaW9ucy9sYXRlc3QpKiogKE1TQnVpbGQgLnRhcmdldHMpOiAKICAgIC0gQWRkcyBhIC50YXJnZXRzIGZpbGUgdG8geW91ciBWaXN1YWwgU3R1ZGlvIHByb2plY3QsIHNvIHRoYXQgeW91IGNhbiBydW4gdGhlIE5Td2FnIGNvbW1hbmQgbGluZSB0b29sIGluIGFuIE1TQnVpbGQgdGFyZ2V0LCBzZWUgW01TQnVpbGRdKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcvd2lraS9NU0J1aWxkKQotICoqW05Td2FnLkNvbnNvbGVDb3JlXShodHRwczovL2FwaW11bmRvLmNvbS9vcmdhbml6YXRpb25zL251Z2V0LW9yZy9udWdldC1mZWVkcy9wdWJsaWMvcGFja2FnZXMvTlN3YWcuQ29uc29sZUNvcmUvdmVyc2lvbnMvbGF0ZXN0KSoqICguTkVUIENvcmUgMS4wLCAxLjEsIDIuMCwgMi4xIGFuZCAyLjIpOiAKICAgIC0gQ29tbWFuZCBsaW5lIHRvb2wgZm9yIC5ORVQgQ29yZSAoYGRvdG5ldCBuc3dhZ2ApCiAgICAtIGA8RG90TmV0Q2xpVG9vbFJlZmVyZW5jZSBJbmNsdWRlPSJOU3dhZy5Db25zb2xlQ29yZSIgVmVyc2lvbj0iLi4uIiAvPmAKLSAqKltOU3dhZ1N0dWRpb10oaHR0cHM6Ly9jaG9jb2xhdGV5Lm9yZy9wYWNrYWdlcy9uc3dhZ3N0dWRpbykqKiAoQ2hvY29sYXRleSwgV2luZG93cyk6IAogICAgLSBQYWNrYWdlIHRvIGluc3RhbGwgdGhlIE5Td2FnU3R1ZGlvIGFuZCBjb21tYW5kIGxpbmUgdG9vbHMgdmlhIENob2NvbGF0ZXkKCiMjIyMgQ0kgTnVHZXQgRmVlZAoKaHR0cHM6Ly93d3cubXlnZXQub3JnL0YvbnN3YWcvYXBpL3YzL2luZGV4Lmpzb24KClRoZSBOdUdldCBwYWNrYWdlcyBtYXkgcmVxdWlyZSB0aGUgKipNaWNyb3NvZnQuTkVUQ29yZS5Qb3J0YWJsZS5Db21wYXRpYmlsaXR5KiogcGFja2FnZSBvbiAuTkVUIENvcmUvVVdQIHRhcmdldHMgKGlmIG1zY29ybGliIGlzIG1pc3NpbmcpLiAKCiFbTGF5ZXJEaWFncmFtXShhc3NldHMvTGF5ZXJEaWFncmFtLnBuZykKCiMjIyBVc2FnZSBpbiBDJiMzNTsKClRvIHJlZ2lzdGVyIHRoZSBbbWlkZGxld2FyZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcvd2lraS9Bc3BOZXRDb3JlLU1pZGRsZXdhcmUpIHRvIGdlbmVyYXRlIGFuIE9wZW5BUEkgc3BlYyBhbmQgcmVuZGVyIHRoZSBVSSwgcmVnaXN0ZXIgTlN3YWcgaW4gYFN0YXJ0dXAuY3NgOiAKCmBgYGNzaGFycApwdWJsaWMgY2xhc3MgU3RhcnR1cAp7CiAgICAuLi4KCiAgICBwdWJsaWMgdm9pZCBDb25maWd1cmVTZXJ2aWNlcyhJU2VydmljZUNvbGxlY3Rpb24gc2VydmljZXMpCiAgICB7CiAgICAgICAgc2VydmljZXMuQWRkT3BlbkFwaURvY3VtZW50KCk7IC8vIGFkZCBPcGVuQVBJIHYzIGRvY3VtZW50Ci8vICAgICAgc2VydmljZXMuQWRkU3dhZ2dlckRvY3VtZW50KCk7IC8vIGFkZCBTd2FnZ2VyIHYyIGRvY3VtZW50CiAgICB9CgogICAgcHVibGljIHZvaWQgQ29uZmlndXJlKElBcHBsaWNhdGlvbkJ1aWxkZXIgYXBwLCBJSG9zdGluZ0Vudmlyb25tZW50IGVudiwgSUxvZ2dlckZhY3RvcnkgbG9nZ2VyRmFjdG9yeSkKICAgIHsKICAgICAgICAuLi4KCiAgICAgICAgYXBwLlVzZU9wZW5BcGkoKTsgLy8gc2VydmUgT3BlbkFQSS9Td2FnZ2VyIGRvY3VtZW50cwogICAgICAgIGFwcC5Vc2VTd2FnZ2VyVWkoKTsgLy8gc2VydmUgU3dhZ2dlciBVSQogICAgICAgIGFwcC5Vc2VSZURvYygpOyAvLyBzZXJ2ZSBSZURvYyBVSQogICAgfQp9CmBgYAoKVGhlIGZvbGxvd2luZyBjb2RlIHNob3dzIGhvdyB0byByZWFkIGFuIE9wZW5BUEkvU3dhZ2dlciBzcGVjaWZpY2F0aW9uIGFuZCBnZW5lcmF0ZSBDIyBjbGllbnQgY2xhc3NlcyB0byBjYWxsIHRoZSBkZXNjcmliZWQgd2ViIHNlcnZpY2VzOiAKCQpgYGBjcwp2YXIgZG9jdW1lbnQgPSBhd2FpdCBPcGVuQXBpRG9jdW1lbnQuRnJvbUZpbGVBc3luYygib3BlbmFwaS5qc29uIik7CnZhciBjbGllbnRTZXR0aW5ncyA9IG5ldyBDU2hhcnBDbGllbnRHZW5lcmF0b3JTZXR0aW5ncyAKewogICAgQ2xhc3NOYW1lID0gIk15Q2xhc3MiLAogICAgQ1NoYXJwR2VuZXJhdG9yU2V0dGluZ3MgPSAKICAgIHsKICAgICAgICBOYW1lc3BhY2UgPSAiTXlOYW1lc3BhY2UiCiAgICB9Cn07Cgp2YXIgY2xpZW50R2VuZXJhdG9yID0gbmV3IENTaGFycENsaWVudEdlbmVyYXRvcihkb2N1bWVudCwgY2xpZW50U2V0dGluZ3MpOwp2YXIgY29kZSA9IGNsaWVudEdlbmVyYXRvci5HZW5lcmF0ZUZpbGUoKTsKYGBgCgpDaGVjayBvdXQgdGhlIFtwcm9qZWN0IFdpa2ldKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcvd2lraSkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgojIyMgTlN3YWdTdHVkaW8KClRoZSBnZW5lcmF0b3JzIGNhbiBiZSB1c2VkIGluIGEgY29tZm9ydGFibGUgYW5kIHNpbXBsZSBXaW5kb3dzIEdVSSBjYWxsZWQgW05Td2FnU3R1ZGlvXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pOiAKClshW10oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1JpY29TdXRlci9OU3dhZy9tYXN0ZXIvYXNzZXRzL3NjcmVlbnNob3RzLzAzX1dlYkFQSV9DU2hhcnAucG5nKV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1JpY29TdXRlci9OU3dhZy9tYXN0ZXIvYXNzZXRzL3NjcmVlbnNob3RzLzAzX1dlYkFQSV9DU2hhcnAucG5nKQoKIyMgU3BvbnNvcnMsIHN1cHBvcnQgYW5kIGNvbnN1bHRpbmcKCkNvbXBhbmllcyBvciBpbmRpdmlkdWFscyB3aGljaCBwYWlkIGEgc3Vic3RhbnRpYWwgYW1vdW50IGZvciBpbXBsZW1lbnRpbmcsIGZpeGluZyBpc3N1ZXMsIHN1cHBvcnQgb3Igc3BvbnNvcmluZyBhcmUgbGlzdGVkIGJlbG93LiBUaGFuayB5b3UgZm9yIHN1cHBvcnRpbmcgdGhpcyBwcm9qZWN0ISBZb3UgY2FuIGFsc28gYmVjb21lIGEgZmluYW5jaWFsIGNvbnRyaWJ1dG9yOgoKLSBbU3BvbnNvciBtYWluIGNvbnRyaWJ1dG9yIFJpY28gU3V0ZXIgdmlhIEdpdEh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL1JpY29TdXRlcikKLSBbU3BvbnNvciBwcm9qZWN0IHZpYSBPcGVuIENvbGxlY3RpdmUgZm9yIE5Td2FnXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9uc3dhZykKClBsZWFzZSBjb250YWN0IFtSaWNvIFN1dGVyXShodHRwczovL3JzdXRlci5jb20pIGZvciBwYWlkIGNvbnN1bHRpbmcgYW5kIHN1cHBvcnQuIAoKIyMgQ29udHJpYnV0b3JzCgpUaGlzIHByb2plY3QgZXhpc3RzIHRoYW5rcyB0byBhbGwgdGhlIHBlb3BsZSB3aG8gY29udHJpYnV0ZS4gW1tDb250cmlidXRlXShDT05UUklCVVRJTkcubWQpXS4KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy9ncmFwaHMvY29udHJpYnV0b3JzIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vTlN3YWcvY29udHJpYnV0b3JzLnN2Zz93aWR0aD04OTAmYnV0dG9uPWZhbHNlIiAvPjwvYT4KCiMjIFNwb25zb3JzCgpTdXBwb3J0IHRoaXMgcHJvamVjdCBieSBiZWNvbWluZyBhIHNwb25zb3IuIFlvdXIgbG9nbyB3aWxsIHNob3cgdXAgaGVyZSB3aXRoIGEgbGluayB0byB5b3VyIHdlYnNpdGUuIAoKKipUb3Agc3BvbnNvcnM6KioKClshW10oaHR0cHM6Ly9pbWFnZXMuZ290b3dlYmluYXIuY29tLzMwZGNjNDJkMzM5NDU2ODRiZTljZjY2ODUyMzAwZDFhKV0oaHR0cHM6Ly9waWN0dXJlcGFyay5jb20pCgoqKlNwb25zb3JzOioqCgo8YSBocmVmPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzAvd2Vic2l0ZSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzAvYXZhdGFyLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzEvd2Vic2l0ZSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzEvYXZhdGFyLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzIvd2Vic2l0ZSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzIvYXZhdGFyLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzMvd2Vic2l0ZSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzMvYXZhdGFyLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzQvd2Vic2l0ZSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzQvYXZhdGFyLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzUvd2Vic2l0ZSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzUvYXZhdGFyLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzYvd2Vic2l0ZSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzYvYXZhdGFyLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzcvd2Vic2l0ZSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzcvYXZhdGFyLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzgvd2Vic2l0ZSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzgvYXZhdGFyLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzkvd2Vic2l0ZSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9OU3dhZy9zcG9uc29yLzkvYXZhdGFyLnN2ZyI+PC9hPgoKIyMgQmFja2VycwoKVGhhbmsgeW91IHRvIGFsbCBvdXIgYmFja2VycyEKCjxhIGhyZWY9Imh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL05Td2FnI2JhY2tlcnMiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vTlN3YWcvYmFja2Vycy5zdmc/d2lkdGg9ODkwIj48L2E+CiAK readmeEtag: '"642164cf56d36dea29ee9425fb719d6e41d0c01c"' readmeLastModified: Wed, 17 Jul 2024 15:18:44 GMT repositoryId: 41822320 description: 'The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript. ' created: '2015-09-02T19:11:57Z' updated: '2026-02-05T16:28:23Z' language: C# archived: false stars: 7267 watchers: 159 forks: 1346 owner: RicoSuter logo: https://avatars.githubusercontent.com/u/2603405?v=4 license: MIT repoEtag: '"bc483187fe7dfa43fefae93a58240b0af28a1f3e2d084710c58caf4e05646dce"' repoLastModified: Thu, 05 Feb 2026 16:28:23 GMT foundInMaster: true id: 93636e95435e95198d7d15c9d507f0d3 - source: https://openapi.tools/ name: api-codegen-ts category: - SDK - Data Validators - Parsers link: https://www.npmjs.com/package/@nll/api-codegen-ts repository: https://github.com/nullpub/api-codegen-ts language: TypeScript source_description: >- Generates TypeScript models, response validators, and operation controllers from OpenAPI descriptions v2: true v3: true repositoryMetadata: base64Readme: >- IyBhcGktY29kZWdlbi10cwoKQSBnZW5lcmFsIHR5cGVzY3JpcHQgY29kZSBnZW5lcmF0aW9uIGxpYnJhcnkuIEN1cnJlbnRseSBpdCBjYW4gdGFrZSBzd2FnZ2VyIDIuMCBhbmQgb3BlbmFwaSAzLjAuMCsganNvbiBzcGVjcyBhbmQgdHVybiB0aGVtIGludG8gdHlwZXNjcmlwdCBjb250cm9sbGVycyB0aGF0IHZhbGlkYXRlIGFwaSByZXNwb25zZXMuCgojIyBJbnN0YWxsYXRpb24KCmBucG0gaSAtRCBAbmxsL2FwaS1jb2RlZ2VuLXRzYAoKIyMgQ29uZmlndXJhdGlvbgoKQWRkIGFuIGFwaUNvZGVnZW4gc2VjdGlvbiB0byBgcGFja2FnZS5qc29uYC4KCmBgYGpzb24KewogICJhcGlDb2RlZ2VuIjogewogICAgInNyYyI6ICIuL3BhdGgvdG8veW91ci9zd2FnZ2VyLXNwZWMuanNvbiIsCiAgICAiZHN0IjogIi4vcGF0aC90by95b3VyL2NvZGVnZW4vZGVzdGluYXRpb24iCiAgfQp9CmBgYAoKIyMgVXNhZ2UKCkFmdGVyIGNvbmZpZ3VyaW5nIGFwaS1jb2RlZ2VuLXRzIHlvdSBjYW4gZ2VuZXJhdGUgY29kZSBsaWtlIHNvOgoKYG5weCBAbmxsL2FwaS1jb2RlZ2VuLXRzYAoKQW5kIGl0IHdpbGwgb3V0cHV0IGl0cyBwcm9ncmVzcyBhbmQgb3V0cHV0IGNvZGUuCgojIyBBZHZhbmNlZCB1c2FnZQoKVGhpcyBjb2RlZ2VuIGxpYnJhcnkgYWJzdHJhY3RzIHBhcnNlcnMgYW5kIHByaW50ZXJzLiBBIHBhcnNlciBpcyByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIGFuIGlucHV0IHN0cmluZyAoYSBzcGVjaWZpY2F0aW9uKSBhbmQgZ2VuZXJhdGluZyBhbnkgaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uLiBDdXJyZW50bHksIHRoZXJlIGFyZSBwcmltaXRpdmUgc3dhZ2dlciAyLjAgYW5kIG9wZW5hcGkgMy4wLjAgcGFyc2Vycy4gQSBwcmludGVyIHRha2VzIGFuIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbiAoaXQgbXVzdCBtYXRjaCB3aGF0ZXZlciB0aGUgcGFyc2VyIG91dHB1dHMpIGFuZCByZXR1cm5zIHRoZSBmaWxlIHN0cmluZ3MgdG8gd3JpdGUgdG8gZGlzay4gVGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiBhcGktY29kZWdlbi10cyBpcyBtYW5hZ2luZyB0aGlzIHdvcmtmbG93LCBpdCBoYW5kbGVzIHRoZSByZWFkaW5nIG9mIHRoZSBzb3VyY2UgZmlsZXMgYW5kIHRoZSBwcmludGluZyBvZiB0aGUgZ2VuZXJhdGVkIGZpbGVzLgoKIyMgU3VwcG9ydAoKVGhpcyBpcyBteSBmaXJzdCBhdHRlbXB0IGF0IGEgY29kZWdlbiBsaWJyYXJ5LiBJZiB5b3UgZmluZCBidWdzIG9yIHNvbWUgc2V0IG9mIGZlYXR1cmVzIHRoYXQgYXJlbid0IHN1cHBvcnRlZCBwbGVhc2UgY3JlYXRlIGEgZ2l0aHViIGlzc3VlLiBUaGFua3MhCg== readmeEtag: '"406840cedd6d31bf4b9ac20d6743f83bec5c3f59"' readmeLastModified: Wed, 28 Aug 2019 04:48:19 GMT repositoryId: 190281420 description: >- A generalized codegen library by default setup to go from swagger 2.0 to typescript. created: '2019-06-04T21:23:53Z' updated: '2024-11-19T13:06:48Z' language: TypeScript archived: true stars: 6 watchers: 0 forks: 1 owner: nullpub logo: https://avatars.githubusercontent.com/u/22160158?v=4 repoEtag: '"9de8a8fa7ebb7e6b4868e8bef59f6377ab2b5792d49109c60aab7e348a2d0680"' repoLastModified: Tue, 19 Nov 2024 13:06:48 GMT foundInMaster: true id: 753c3c0a8c4ef510d178b3a4a5ff35ca - source: - https://openapi.tools/ - openapi3 tags name: Swagger-Codegen category: Code Generators link: https://swagger.io/swagger-codegen/ repository: https://github.com/swagger-api/swagger-codegen language: Java source_description: >- Swagger Codegen enables generating server stubs and client SDKs for APIs described in OpenAPI v2: true v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIENvZGVnZW4KIVtTd2FnZ2VyIENvZGVnZW4gTG9nb10oLi9kb2NzL1N3YWdnZXItQ29kZWdlbi1Mb2dvLnBuZykKClRoaXMgaXMgdGhlIFN3YWdnZXIgQ29kZWdlbiBwcm9qZWN0LCB3aGljaCBhbGxvd3MgZ2VuZXJhdGlvbiBvZiBBUEkgY2xpZW50IGxpYnJhcmllcyAoU0RLIGdlbmVyYXRpb24pLCBzZXJ2ZXIgc3R1YnMgYW5kIGRvY3VtZW50YXRpb24gYXV0b21hdGljYWxseSBnaXZlbiBhbiBbT3BlbkFQSSBTcGVjXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikuCgrwn5KaIElmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUsIHBsZWFzZSByZWZlciB0byBbZ3VpZGVsaW5lc10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQpIGFuZCBhIGxpc3Qgb2YgW29wZW4gdGFza3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4vaXNzdWVzP3E9aXMlM0FvcGVuK2lzJTNBaXNzdWUrbGFiZWwlM0ElMjJoZWxwK3dhbnRlZCUyMiku8J+SmgoK8J+TlCBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvIHRoZSBbV2lraSBwYWdlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuL3dpa2kpIGFuZCBbRkFRXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuL3dpa2kvRkFRKSDwn5OUCgrimqDvuI8gSWYgdGhlIE9wZW5BUEkgRGVzY3JpcHRpb24gb3IgU3dhZ2dlciBmaWxlIGlzIG9idGFpbmVkIGZyb20gYW4gdW50cnVzdGVkIHNvdXJjZSwgcGxlYXNlIG1ha2Ugc3VyZSB5b3UndmUgcmV2aWV3ZWQgdGhlIGFydGVmYWN0IGJlZm9yZSB1c2luZyBTd2FnZ2VyIENvZGVnZW4gdG8gZ2VuZXJhdGUgdGhlIEFQSSBjbGllbnQsIHNlcnZlciBzdHViIG9yIGRvY3VtZW50YXRpb24gYXMgW2NvZGUgaW5qZWN0aW9uXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db2RlX2luamVjdGlvbikgbWF5IG9jY3VyLiDimqDvuI8KCiMjIFZlcnNpb25pbmcKCj4g4pqg77iPIHRoaXMgZG9jdW1lbnQgcmVmZXJzIHRvIHZlcnNpb24gMi5YLCBjaGVjayBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi90cmVlLzMuMC4wKSBmb3IgMy5YLgoKQm90aCAqKjIuWCoqIGFuZCAqKjMuWCoqIHZlcnNpb24gbGluZXMgb2YgU3dhZ2dlciBDb2RlZ2VuIGFyZSBhdmFpbGFibGUgYW5kIGFyZSBpbmRlcGVuZGVudGx5IG1haW50YWluZWQuCgoqKk5PVEVTOioqCgotIFZlcnNpb25zIDIuWCAoYGlvLnN3YWdnZXJgKSBhbmQgMy5YIChgaW8uc3dhZ2dlci5jb2RlZ2VuLnYzYCkgaGF2ZSAqKmRpZmZlcmVudCoqIGdyb3VwIGlkcy4KLSBPcGVuQVBJIDMuMC5YIGlzIHN1cHBvcnRlZCBmcm9tIHRoZSAzLlggdmVyc2lvbiBvbmx5LgoKRm9yIGZ1bGwgdmVyc2lvbmluZyBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvIHRoZSBbdmVyc2lvbmluZyBkb2N1bWVudGF0aW9uXSguL2RvY3MvdmVyc2lvbmluZy5tZCkuCgojIyBTdXBwb3J0ZWQgTGFuZ3VhZ2VzIGFuZCBGcmFtZXdvcmtzCgpDdXJyZW50bHksIHRoZSBmb2xsb3dpbmcgbGFuZ3VhZ2VzL2ZyYW1ld29ya3MgYXJlIHN1cHBvcnRlZDoKCi0gKipBUEkgY2xpZW50cyoqOiAqKkFjdGlvblNjcmlwdCoqLCAqKkFkYSoqLCAqKkFwZXgqKiwgKipCYXNoKiosICoqQyMqKiAoLm5ldCAyLjAsIDMuNSBvciBsYXRlciksICoqQysrKiogKGNwcHJlc3QsIFF0NSwgVGl6ZW4pLCAqKkNsb2p1cmUqKiwgKipEYXJ0KiosICoqRWxpeGlyKiosICoqRWxtKiosICoqRWlmZmVsKiosICoqRXJsYW5nKiosICoqR28qKiwgKipHcm9vdnkqKiwgKipIYXNrZWxsKiogKGh0dHAtY2xpZW50LCBTZXJ2YW50KSwgKipKYXZhKiogKEplcnNleTEueCwgSmVyc2V5Mi54LCBPa0h0dHAsIFJldHJvZml0MS54LCBSZXRyb2ZpdDIueCwgRmVpZ24sIFJlc3RUZW1wbGF0ZSwgUkVTVEVhc3ksIFZlcnR4LCBHb29nbGUgQVBJIENsaWVudCBMaWJyYXJ5IGZvciBKYXZhLCBSZXN0LWFzc3VyZWQpLCAqKktvdGxpbioqLCAqKkx1YSoqLCAqKk5vZGUuanMqKiAoRVM1LCBFUzYsIEFuZ3VsYXJKUyB3aXRoIEdvb2dsZSBDbG9zdXJlIENvbXBpbGVyIGFubm90YXRpb25zKSAqKk9iamVjdGl2ZS1DKiosICoqUGVybCoqLCAqKlBIUCoqLCAqKlBvd2VyU2hlbGwqKiwgKipQeXRob24qKiwgKipSKiosICoqUnVieSoqLCAqKlJ1c3QqKiAocnVzdCwgcnVzdC1zZXJ2ZXIpLCAqKlNjYWxhKiogKGFra2EsIGh0dHA0cywgc3dhZ2dlci1hc3luYy1odHRwY2xpZW50KSwgKipTd2lmdCoqICgyLngsIDMueCwgNC54LCA1LngpLCAqKlR5cGVzY3JpcHQqKiAoQW5ndWxhcjEueCwgQW5ndWxhcjIueCwgRmV0Y2gsIGpRdWVyeSwgTm9kZSkKLSAqKlNlcnZlciBzdHVicyoqOiAqKkFkYSoqLCAqKkMjKiogKEFTUC5ORVQgQ29yZSwgTmFuY3lGeCksICoqQysrKiogKFBpc3RhY2hlLCBSZXN0YmVkKSwgKipFcmxhbmcqKiwgKipHbyoqLCAqKkhhc2tlbGwqKiAoU2VydmFudCksICoqSmF2YSoqIChNU0Y0SiwgU3ByaW5nLCBVbmRlcnRvdywgSkFYLVJTOiBDREksIENYRiwgSW5mbGVjdG9yLCBSZXN0RWFzeSwgUGxheSBGcmFtZXdvcmssIFtQS01TVF0oaHR0cHM6Ly9naXRodWIuY29tL1Byb0thcm1hLUluYy9wa21zdC1nZXR0aW5nLXN0YXJ0ZWQtZXhhbXBsZXMpKSwgKipLb3RsaW4qKiwgKipQSFAqKiAoTHVtZW4sIFNsaW0sIFNpbGV4LCBbU3ltZm9ueV0oaHR0cHM6Ly9zeW1mb255LmNvbS8pLCBbWmVuZCBFeHByZXNzaXZlXShodHRwczovL2dpdGh1Yi5jb20vemVuZGZyYW1ld29yay96ZW5kLWV4cHJlc3NpdmUpKSwgKipQeXRob24qKiAoRmxhc2spLCAqKk5vZGVKUyoqLCAqKlJ1YnkqKiAoU2luYXRyYSwgUmFpbHM1KSwgKipSdXN0KiogKHJ1c3Qtc2VydmVyKSwgKipTY2FsYSoqIChbRmluY2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9maW5hZ2xlL2ZpbmNoKSwgW0xhZ29tXShodHRwczovL2dpdGh1Yi5jb20vbGFnb20vbGFnb20pLCBTY2FsYXRyYSkKLSAqKkFQSSBkb2N1bWVudGF0aW9uIGdlbmVyYXRvcnMqKjogKipIVE1MKiosICoqQ29uZmx1ZW5jZSBXaWtpKioKLSAqKkNvbmZpZ3VyYXRpb24gZmlsZXMqKjogWyoqQXBhY2hlMioqXShodHRwczovL2h0dHBkLmFwYWNoZS5vcmcvKQotICoqT3RoZXJzKio6ICoqSk1ldGVyKioKCkNoZWNrIG91dCBbT3BlbkFQSS1TcGVjXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIE9wZW5BUEkgcHJvamVjdC4KCiMjIFRhYmxlIG9mIGNvbnRlbnRzCgotIFtWZXJzaW9uaW5nXSgjdmVyc2lvbmluZykKLSBbQ29tcGF0aWJpbGl0eV0oI2NvbXBhdGliaWxpdHkpCi0gW0dldHRpbmcgU3RhcnRlZF0oI2dldHRpbmctc3RhcnRlZCkKLSBbR2VuZXJhdG9yc10oI2dlbmVyYXRvcnMpCiAgLSBbVG8gZ2VuZXJhdGUgYSBzYW1wbGUgY2xpZW50IGxpYnJhcnldKCN0by1nZW5lcmF0ZS1hLXNhbXBsZS1jbGllbnQtbGlicmFyeSkKICAtIFtHZW5lcmF0aW5nIGxpYnJhcmllcyBmcm9tIHlvdXIgc2VydmVyXSgjZ2VuZXJhdGluZy1saWJyYXJpZXMtZnJvbS15b3VyLXNlcnZlcikKICAtIFtWYWxpZGF0aW5nIHlvdXIgT3BlbkFQSSBTcGVjXSgjdmFsaWRhdGluZy15b3VyLW9wZW5hcGktc3BlYykKICAtIFtHZW5lcmF0aW5nIGR5bmFtaWMgaHRtbCBhcGkgZG9jdW1lbnRhdGlvbl0oI2dlbmVyYXRpbmctZHluYW1pYy1odG1sLWFwaS1kb2N1bWVudGF0aW9uKQogIC0gW0dlbmVyYXRpbmcgc3RhdGljIGh0bWwgYXBpIGRvY3VtZW50YXRpb25dKCNnZW5lcmF0aW5nLXN0YXRpYy1odG1sLWFwaS1kb2N1bWVudGF0aW9uKQotIFtXb3JrZmxvdyBJbnRlZ3JhdGlvbl0oI3dvcmtmbG93LWludGVncmF0aW9uKQotIFtPbmxpbmUgR2VuZXJhdG9yc10oI29ubGluZS1nZW5lcmF0b3JzKQotIFtDb250cmlidXRpb25dKCNjb250cmlidXRpbmcpCi0gW1N3YWdnZXIgQ29kZWdlbiBDb3JlIFRlYW1dKCNzd2FnZ2VyLWNvZGVnZW4tY29yZS10ZWFtKQoKCiMjIENvbXBhdGliaWxpdHkKClRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gaGFzIHVuZGVyZ29uZSAzIHJldmlzaW9ucyBzaW5jZSBpbml0aWFsIGNyZWF0aW9uIGluIDIwMTAuICBUaGUgKipjdXJyZW50IHN0YWJsZSoqIHZlcnNpb25zIG9mIFN3YWdnZXIgQ29kZWdlbiBwcm9qZWN0IGhhdmUgdGhlIGZvbGxvd2luZyBjb21wYXRpYmlsaXRpZXMgd2l0aCB0aGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uOgoKU3dhZ2dlciBDb2RlZ2VuIFZlcnNpb24gICAgfCBSZWxlYXNlIERhdGUgfCBTd2FnZ2VyIC8gT3BlbkFQSSBTcGVjIGNvbXBhdGliaWxpdHkgfCBOb3RlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8LS0tLS0tLS0tLS0tLS18IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0KWzMuMC43MV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi9yZWxlYXNlcy90YWcvdjMuMC43MSkgKCoqY3VycmVudCBzdGFibGUqKikgfCAyMDI1LTA3LTAzICAgfCAxLjAsIDEuMSwgMS4yLCAyLjAsIDMuMCAgIHwgW3RhZyB2My4wLjcxXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuL3RyZWUvdjMuMC43MSkKWzIuNC40Nl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi9yZWxlYXNlcy90YWcvdjIuNC40NikgKCoqY3VycmVudCBzdGFibGUqKikgfCAyMDI1LTA2LTMwICAgfCAxLjAsIDEuMSwgMS4yLCAyLjAgICB8IFt0YWcgdjIuNC40Nl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi90cmVlL3YyLjQuNDYpCgrwn5KBIEhlcmUncyBhbHNvIGFuIG92ZXJ2aWV3IG9mIHdoYXQncyBjb21pbmcgYXJvdW5kIHRoZSBjb3JuZXI6CgpTd2FnZ2VyIENvZGVnZW4gVmVyc2lvbiAgICB8IFJlbGVhc2UgRGF0ZSB8IFN3YWdnZXIgLyBPcGVuQVBJIFNwZWMgY29tcGF0aWJpbGl0eSB8IE5vdGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwtLS0tLS0tLS0tLS0tLXwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLQozLjAuNzItU05BUFNIT1QgKGN1cnJlbnQgMy4wLjAsIHVwY29taW5nIG1pbm9yIHJlbGVhc2UpIFtTTkFQU0hPVF0oaHR0cHM6Ly9jZW50cmFsLnNvbmF0eXBlLmNvbS9zZXJ2aWNlL3Jlc3QvcmVwb3NpdG9yeS9icm93c2UvbWF2ZW4tc25hcHNob3RzL2lvL3N3YWdnZXIvY29kZWdlbi92My9zd2FnZ2VyLWNvZGVnZW4tY2xpLzMuMC43Mi1TTkFQU0hPVC8pfCBUQkQgICAgICAgICAgfCAxLjAsIDEuMSwgMS4yLCAyLjAsIDMuMCB8IE1pbm9yIHJlbGVhc2UKMi40LjQ3LVNOQVBTSE9UIChjdXJyZW50IG1hc3RlciwgdXBjb21pbmcgbWlub3IgcmVsZWFzZSkgW1NOQVBTSE9UXShodHRwczovL2NlbnRyYWwuc29uYXR5cGUuY29tL3NlcnZpY2UvcmVzdC9yZXBvc2l0b3J5L2Jyb3dzZS9tYXZlbi1zbmFwc2hvdHMvaW8vc3dhZ2dlci9zd2FnZ2VyLWNvZGVnZW4tY2xpLzIuNC40Ny1TTkFQU0hPVC8pfCBUQkQgICAgICAgICAgfCAxLjAsIDEuMSwgMS4yLCAyLjAgICB8IE1pbm9yIHJlbGVhc2UKCkZvciBkZXRhaWxlZCBicmVha2Rvd24gb2YgYWxsIHZlcnNpb25zLCBwbGVhc2Ugc2VlIHRoZSBbZnVsbCBjb21wYXRpYmlsaXR5IGxpc3RpbmddKC4vZG9jcy9jb21wYXRpYmlsaXR5Lm1kKS4KCiMjIyBHZXR0aW5nIFN0YXJ0ZWQKClRvIGdldCB1cCBhbmQgcnVubmluZyB3aXRoIFN3YWdnZXIgQ29kZWdlbiwgY2hlY2sgb3V0IHRoZSBmb2xsb3dpbmcgZ3VpZGVzIGFuZCBpbnN0cnVjdGlvbnM6CgotIFtQcmVyZXF1aXNpdGVzXSguL2RvY3MvcHJlcmVxdWlzaXRlcy5tZCkKLSBbQnVpbGRpbmddKC4vZG9jcy9idWlsZGluZy5tZCkKLSBbVXNpbmcgRG9ja2VyXSguL2RvY3MvZG9ja2VyLm1kKQoKT25jZSB5b3UndmUgeW91ciBlbnZpcm9ubWVudCBzZXR1cCwgeW91J3JlIHJlYWR5IHRvIHN0YXJ0IGdlbmVyYXRpbmcgY2xpZW50cyBhbmQvb3Igc2VydmVycy4KCkFzIGEgcXVpY2sgZXhhbXBsZSwgdG8gZ2VuZXJhdGUgYSBQSFAgY2xpZW50IGZvciBodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uLCB5b3UgY2FuIHJ1biB0aGUgZm9sbG93aW5nOgoKYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4KY2Qgc3dhZ2dlci1jb2RlZ2VuCm12biBjbGVhbiBwYWNrYWdlCmphdmEgLWphciBtb2R1bGVzL3N3YWdnZXItY29kZWdlbi1jbGkvdGFyZ2V0L3N3YWdnZXItY29kZWdlbi1jbGkuamFyIGdlbmVyYXRlIFwKICAgLWkgaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YyL3N3YWdnZXIuanNvbiBcCiAgIC1sIHBocCBcCiAgIC1vIC92YXIvdG1wL3BocF9hcGlfY2xpZW50CmBgYAoKKipOb3RlOioqIGlmIHlvdSdyZSBvbiBXaW5kb3dzLCByZXBsYWNlIHRoZSBsYXN0IGNvbW1hbmQgd2l0aAoKYGBgc2gKamF2YSAtamFyIG1vZHVsZXNcc3dhZ2dlci1jb2RlZ2VuLWNsaVx0YXJnZXRcc3dhZ2dlci1jb2RlZ2VuLWNsaS5qYXIgZ2VuZXJhdGUgLWkgaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YyL3N3YWdnZXIuanNvbiAtbCBwaHAgLW8gYzpcdGVtcFxwaHBfYXBpX2NsaWVudApgYGAKCllvdSBjYW4gYWxzbyBkb3dubG9hZCB0aGUgSkFSIChsYXRlc3QgcmVsZWFzZSkgZGlyZWN0bHkgZnJvbSBbbWF2ZW4ub3JnXShodHRwczovL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIvaW8vc3dhZ2dlci9zd2FnZ2VyLWNvZGVnZW4tY2xpLzIuNC40Ni9zd2FnZ2VyLWNvZGVnZW4tY2xpLTIuNC40Ni5qYXIpCgpUbyBnZXQgYSBsaXN0IG9mICoqZ2VuZXJhbCoqIG9wdGlvbnMgYXZhaWxhYmxlLCB5b3UgY2FuIHJ1biB0aGUgZm9sbG93aW5nOgoKYGBgc2gKamF2YSAtamFyIG1vZHVsZXMvc3dhZ2dlci1jb2RlZ2VuLWNsaS90YXJnZXQvc3dhZ2dlci1jb2RlZ2VuLWNsaS5qYXIgaGVscCBnZW5lcmF0ZQpgYGAKClRvIGdldCBhIGxpc3Qgb2YgUEhQIHNwZWNpZmllZCBvcHRpb25zICh3aGljaCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBnZW5lcmF0b3Igd2l0aCBhIGNvbmZpZyBmaWxlIHZpYSB0aGUgYC1jYCBvcHRpb24pLCBwbGVhc2UgcnVuCgpgYGBzaApqYXZhIC1qYXIgbW9kdWxlcy9zd2FnZ2VyLWNvZGVnZW4tY2xpL3RhcmdldC9zd2FnZ2VyLWNvZGVnZW4tY2xpLmphciBjb25maWctaGVscCAtbCBwaHAKYGBgCgojIyBHZW5lcmF0b3JzCgojIyMgVG8gZ2VuZXJhdGUgYSBzYW1wbGUgY2xpZW50IGxpYnJhcnkKCllvdSBjYW4gYnVpbGQgYSBjbGllbnQgYWdhaW5zdCB0aGUgc3dhZ2dlciBzYW1wbGUgW3BldHN0b3JlXShodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8pIEFQSSBhcyBmb2xsb3dzOgoKYGBgc2gKLi9iaW4vamF2YS1wZXRzdG9yZS5zaApgYGAKCihPbiBXaW5kb3dzLCBydW4gYC5cYmluXHdpbmRvd3NcamF2YS1wZXRzdG9yZS5iYXRgIGluc3RlYWQpCgpUaGlzIHdpbGwgcnVuIHRoZSBnZW5lcmF0b3Igd2l0aCB0aGlzIGNvbW1hbmQ6CgpgYGBzaApqYXZhIC1qYXIgbW9kdWxlcy9zd2FnZ2VyLWNvZGVnZW4tY2xpL3RhcmdldC9zd2FnZ2VyLWNvZGVnZW4tY2xpLmphciBnZW5lcmF0ZSBcCiAgLWkgaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YyL3N3YWdnZXIuanNvbiBcCiAgLWwgamF2YSBcCiAgLW8gc2FtcGxlcy9jbGllbnQvcGV0c3RvcmUvamF2YQpgYGAKCndpdGggYSBudW1iZXIgb2Ygb3B0aW9ucy4gWW91IGNhbiBnZXQgdGhlIG9wdGlvbnMgd2l0aCB0aGUgYGhlbHAgZ2VuZXJhdGVgIGNvbW1hbmQgKGJlbG93IG9ubHkgc2hvd3MgcGFydGlhbCByZXN1bHRzKToKCmBgYHRleHQKTkFNRQogICAgICAgIHN3YWdnZXItY29kZWdlbi1jbGkgZ2VuZXJhdGUgLSBHZW5lcmF0ZSBjb2RlIHdpdGggY2hvc2VuIGxhbmcKClNZTk9QU0lTCiAgICAgICAgc3dhZ2dlci1jb2RlZ2VuLWNsaSBnZW5lcmF0ZQogICAgICAgICAgICAgICAgWygtYSA8YXV0aG9yaXphdGlvbj4gfCAtLWF1dGggPGF1dGhvcml6YXRpb24+KV0KICAgICAgICAgICAgICAgIFstLWFkZGl0aW9uYWwtcHJvcGVydGllcyA8YWRkaXRpb25hbCBwcm9wZXJ0aWVzPi4uLl0KICAgICAgICAgICAgICAgIFstLWFwaS1wYWNrYWdlIDxhcGkgcGFja2FnZT5dIFstLWFydGlmYWN0LWlkIDxhcnRpZmFjdCBpZD5dCiAgICAgICAgICAgICAgICBbLS1hcnRpZmFjdC12ZXJzaW9uIDxhcnRpZmFjdCB2ZXJzaW9uPl0KICAgICAgICAgICAgICAgIFsoLWMgPGNvbmZpZ3VyYXRpb24gZmlsZT4gfCAtLWNvbmZpZyA8Y29uZmlndXJhdGlvbiBmaWxlPildCiAgICAgICAgICAgICAgICBbLUQgPHN5c3RlbSBwcm9wZXJ0aWVzPi4uLl0gWy0tZ2l0LXJlcG8taWQgPGdpdCByZXBvIGlkPl0KICAgICAgICAgICAgICAgIFstLWdpdC11c2VyLWlkIDxnaXQgdXNlciBpZD5dIFstLWdyb3VwLWlkIDxncm91cCBpZD5dCiAgICAgICAgICAgICAgICBbLS1odHRwLXVzZXItYWdlbnQgPGh0dHAgdXNlciBhZ2VudD5dCiAgICAgICAgICAgICAgICAoLWkgPHNwZWMgZmlsZT4gfCAtLWlucHV0LXNwZWMgPHNwZWMgZmlsZT4pCiAgICAgICAgICAgICAgICBbLS1pZ25vcmUtZmlsZS1vdmVycmlkZSA8aWdub3JlIGZpbGUgb3ZlcnJpZGUgbG9jYXRpb24+XQogICAgICAgICAgICAgICAgWy0taW1wb3J0LW1hcHBpbmdzIDxpbXBvcnQgbWFwcGluZ3M+Li4uXQogICAgICAgICAgICAgICAgWy0taW5zdGFudGlhdGlvbi10eXBlcyA8aW5zdGFudGlhdGlvbiB0eXBlcz4uLi5dCiAgICAgICAgICAgICAgICBbLS1pbnZva2VyLXBhY2thZ2UgPGludm9rZXIgcGFja2FnZT5dCiAgICAgICAgICAgICAgICAoLWwgPGxhbmd1YWdlPiB8IC0tbGFuZyA8bGFuZ3VhZ2U+KQogICAgICAgICAgICAgICAgWy0tbGFuZ3VhZ2Utc3BlY2lmaWMtcHJpbWl0aXZlcyA8bGFuZ3VhZ2Ugc3BlY2lmaWMgcHJpbWl0aXZlcz4uLi5dCiAgICAgICAgICAgICAgICBbLS1saWJyYXJ5IDxsaWJyYXJ5Pl0gWy0tbW9kZWwtbmFtZS1wcmVmaXggPG1vZGVsIG5hbWUgcHJlZml4Pl0KICAgICAgICAgICAgICAgIFstLW1vZGVsLW5hbWUtc3VmZml4IDxtb2RlbCBuYW1lIHN1ZmZpeD5dCiAgICAgICAgICAgICAgICBbLS1tb2RlbC1wYWNrYWdlIDxtb2RlbCBwYWNrYWdlPl0KICAgICAgICAgICAgICAgIFsoLW8gPG91dHB1dCBkaXJlY3Rvcnk+IHwgLS1vdXRwdXQgPG91dHB1dCBkaXJlY3Rvcnk+KV0KICAgICAgICAgICAgICAgIFstLXJlbGVhc2Utbm90ZSA8cmVsZWFzZSBub3RlPl0gWy0tcmVtb3ZlLW9wZXJhdGlvbi1pZC1wcmVmaXhdCiAgICAgICAgICAgICAgICBbLS1yZXNlcnZlZC13b3Jkcy1tYXBwaW5ncyA8cmVzZXJ2ZWQgd29yZCBtYXBwaW5ncz4uLi5dCiAgICAgICAgICAgICAgICBbKC1zIHwgLS1za2lwLW92ZXJ3cml0ZSldCiAgICAgICAgICAgICAgICBbKC10IDx0ZW1wbGF0ZSBkaXJlY3Rvcnk+IHwgLS10ZW1wbGF0ZS1kaXIgPHRlbXBsYXRlIGRpcmVjdG9yeT4pXQogICAgICAgICAgICAgICAgWy0tdHlwZS1tYXBwaW5ncyA8dHlwZSBtYXBwaW5ncz4uLi5dIFsoLXYgfCAtLXZlcmJvc2UpXQoKT1BUSU9OUwogICAgICAgIC1hIDxhdXRob3JpemF0aW9uPiwgLS1hdXRoIDxhdXRob3JpemF0aW9uPgogICAgICAgICAgICBhZGRzIGF1dGhvcml6YXRpb24gaGVhZGVycyB3aGVuIGZldGNoaW5nIHRoZSBzd2FnZ2VyIGRlZmluaXRpb25zCiAgICAgICAgICAgIHJlbW90ZWx5LiBQYXNzIGluIGEgVVJMLWVuY29kZWQgc3RyaW5nIG9mIG5hbWU6aGVhZGVyIHdpdGggYSBjb21tYQogICAgICAgICAgICBzZXBhcmF0aW5nIG11bHRpcGxlIHZhbHVlcwoKLi4uLi4uIChyZXN1bHRzIG9taXR0ZWQpCgogICAgICAgIC12LCAtLXZlcmJvc2UKICAgICAgICAgICAgdmVyYm9zZSBtb2RlCgpgYGAKCllvdSBjYW4gdGhlbiBjb21waWxlIGFuZCBydW4gdGhlIGNsaWVudCwgYXMgd2VsbCBhcyB1bml0IHRlc3RzIGFnYWluc3QgaXQ6CgpgYGBzaApjZCBzYW1wbGVzL2NsaWVudC9wZXRzdG9yZS9qYXZhCm12biBwYWNrYWdlCmBgYAoKT3RoZXIgbGFuZ3VhZ2VzIGhhdmUgcGV0c3RvcmUgc2FtcGxlcywgdG9vOgpgYGBzaAouL2Jpbi9hbmRyb2lkLXBldHN0b3JlLnNoCi4vYmluL2phdmEtcGV0c3RvcmUuc2gKLi9iaW4vb2JqYy1wZXRzdG9yZS5zaApgYGAKCiMjIyBHZW5lcmF0aW5nIGxpYnJhcmllcyBmcm9tIHlvdXIgc2VydmVyCkl0J3MganVzdCBhcyBlYXN5LS1qdXN0IHVzZSB0aGUgYC1pYCBmbGFnIHRvIHBvaW50IHRvIGVpdGhlciBhIHNlcnZlciBvciBmaWxlLgoK8J+UpyBTd2FnZ2VyIENvZGVnZW4gY29tZXMgd2l0aCBhIHRvbm5lIG9mIGZsZXhpYmlsaXR5IHRvIHN1cHBvcnQgeW91ciBjb2RlIGdlbmVyYXRpb24gcHJlZmVyZW5jZXMuIENoZWNrb3V0IHRoZSBbZ2VuZXJhdG9ycyBkb2N1bWVudGF0aW9uXSguL2RvY3MvZ2VuZXJhdG9ycy5tZCkgd2hpY2ggdGFrZXMgeW91IHRocm91Z2ggc29tZSBvZiB0aGUgcG9zc2liaWxpdGllcyBhcyB3ZWxsIGFzIHNob3djYXNpbmcgaG93IHRvIGdlbmVyYXRlIGZyb20gbG9jYWwgZmlsZXMgYW5kIGlnbm9yZSBmaWxlIGZvcm1hdHMuCgojIyMgU2VsZWN0aXZlIGdlbmVyYXRpb24KCllvdSBtYXkgbm90IHdhbnQgdG8gZ2VuZXJhdGUgKmFsbCogbW9kZWxzIGluIHlvdXIgcHJvamVjdC4gIExpa2V3aXNlIHlvdSBtYXkgd2FudCBqdXN0IG9uZSBvciB0d28gYXBpcyB0byBiZSB3cml0dGVuLiBJZiB0aGF0J3MgdGhlIGNhc2UgY2hlY2sgdGhlIFtzZWxlY3RpdmUgZ2VuZXJhdGlvbl0oLi9kb2NzL2dlbmVyYXRpb24tc2VsZWN0aXZlLm1kKSBpbnN0cnVjdGlvbnMuCgoKIyMjIEFkdmFuY2VkIEdlbmVyYXRvciBDdXN0b21pemF0aW9uCgpUaGVyZSBhcmUgZGlmZmVyZW50IGFzcGVjdHMgb2YgY3VzdG9taXppbmcgdGhlIGNvZGUgZ2VuZXJhdG9yIGJleW9uZCBqdXN0IGNyZWF0aW5nIG9yIG1vZGlmeWluZyB0ZW1wbGF0ZXMuICBFYWNoIGxhbmd1YWdlIGhhcyBhIHN1cHBvcnRpbmcgY29uZmlndXJhdGlvbiBmaWxlIHRvIGhhbmRsZSBkaWZmZXJlbnQgdHlwZSBtYXBwaW5ncywgb3IgYnJpbmcgeW91ciBvd24gbW9kZWxzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBjaGVjayBvdXQgdGhlIFthZHZhbmNlZCBjb25maWd1cmF0aW9uIGRvY3NdKC4vZG9jcy9nZW5lcmF0b3JzLWNvbmZpZ3VyYXRpb24ubWQpLgoKIyMjIFZhbGlkYXRpbmcgeW91ciBPcGVuQVBJIFNwZWMKCllvdSBoYXZlIG9wdGlvbnMuICBUaGUgZWFzaWVzdCBpcyB0byB1c2Ugb3VyIFtvbmxpbmUgdmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvdmFsaWRhdG9yLWJhZGdlKSB3aGljaCBub3Qgb25seSB3aWxsIGxldCB5b3UgdmFsaWRhdGUgeW91ciBzcGVjLCBidXQgd2l0aCB0aGUgZGVidWcgZmxhZywgeW91IGNhbiBzZWUgd2hhdCdzIHdyb25nIHdpdGggeW91ciBzcGVjLiAgRm9yIGV4YW1wbGUgY2hlY2sgb3V0IFtTd2FnZ2VyIFZhbGlkYXRvcl0oaHR0cDovL29ubGluZS5zd2FnZ2VyLmlvL3ZhbGlkYXRvci9kZWJ1Zz91cmw9aHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YyL3N3YWdnZXIuanNvbikuCgpJZiB5b3Ugd2FudCB0byBoYXZlIHZhbGlkYXRpb24gZGlyZWN0bHkgb24geW91ciBvd24gbWFjaGluZSwgdGhlbiBbU3BlY3RyYWxdKGh0dHBzOi8vc3RvcGxpZ2h0LmlvL29wZW4tc291cmNlL3NwZWN0cmFsKSBpcyBhbiBleGNlbGxlbnQgb3B0aW9uLgoKIyMjIEdlbmVyYXRpbmcgZHluYW1pYyBodG1sIGFwaSBkb2N1bWVudGF0aW9uCgpUbyBkbyBzbywganVzdCB1c2UgdGhlIGAtbCBkeW5hbWljLWh0bWxgIGZsYWcgd2hlbiByZWFkaW5nIGEgc3BlYyBmaWxlLiAgVGhpcyBjcmVhdGVzIEhUTUwgZG9jdW1lbnRhdGlvbiB0aGF0IGlzIGF2YWlsYWJsZSBhcyBhIHNpbmdsZS1wYWdlIGFwcGxpY2F0aW9uIHdpdGggQUpBWC4gIFRvIHZpZXcgdGhlIGRvY3VtZW50YXRpb246CgpgYGBzaApjZCBzYW1wbGVzL2R5bmFtaWMtaHRtbC8KbnBtIGluc3RhbGwKbm9kZSAuCmBgYAoKV2hpY2ggbGF1bmNoZXMgYSBub2RlLmpzIHNlcnZlciBzbyB0aGUgQUpBWCBjYWxscyBoYXZlIGEgcGxhY2UgdG8gZ28uCgojIyMgR2VuZXJhdGluZyBzdGF0aWMgaHRtbCBhcGkgZG9jdW1lbnRhdGlvbgoKVG8gZG8gc28sIGp1c3QgdXNlIHRoZSBgLWwgaHRtbGAgZmxhZyB3aGVuIHJlYWRpbmcgYSBzcGVjIGZpbGUuICBUaGlzIGNyZWF0ZXMgYSBzaW5nbGUsIHNpbXBsZSBIVE1MIGZpbGUgd2l0aCBlbWJlZGRlZCBjc3Mgc28geW91IGNhbiBzaGlwIGl0IGFzIGFuIGVtYWlsIGF0dGFjaG1lbnQsIG9yIGxvYWQgaXQgZnJvbSB5b3VyIGZpbGVzeXN0ZW06CgpgYGBzaApjZCBzYW1wbGVzL2h0bWwvCm9wZW4gaW5kZXguaHRtbApgYGAKCiMjIFdvcmtmbG93IEludGVncmF0aW9uCgpJdCdzIHBvc3NpYmxlIHRvIGxldmVyYWdlIFN3YWdnZXIgQ29kZWdlbiBkaXJlY3RseSB3aXRoaW4geW91ciBwcmVmZXJyZWQgQ0kvQ0Qgd29ya2Zsb3dzIHRvIHN0cmVhbWxpbmUgeW91ciBhdXRvLWdlbmVyYXRpb24gcmVxdWlyZW1lbnRzLiBDaGVjayBvdXQgdGhlIFt3b3JrZmxvd3MgaW50ZWdyYXRpb25dKC4vZG9jcy93b3JrZmxvdy1pbnRlZ3JhdGlvbi5tZCkgZ3VpZGUgdG8gc2VlIGluZm9ybWF0aW9uIG9uIG91ciBNYXZlbiwgR3JhZGxlLCBhbmQgR2l0SHViIGludGVncmF0aW9uIG9wdGlvbnMuIPCfmoAKCiMjIE9ubGluZSBHZW5lcmF0b3JzCgpJZiB5b3UgZG9uJ3Qgd2FudCB0byBydW4gYW5kIGhvc3QgeW91ciBvd24gY29kZSBnZW5lcmF0aW9uIGluc3RhbmNlLCBjaGVjayBvdXIgb3VyIFtvbmxpbmUgZ2VuZXJhdG9yc10oLi9kb2NzL29ubGluZS1nZW5lcmF0b3JzLm1kKSBpbmZvcm1hdGlvbi4KCiMjIENvbnRyaWJ1dGluZwoKUGxlYXNlIHJlZmVyIHRvIHRoaXMgW3BhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4vYmxvYi9tYXN0ZXIvQ09OVFJJQlVUSU5HLm1kKQoKIyMgU3dhZ2dlciBDb2RlZ2VuIENvcmUgVGVhbQoKU3dhZ2dlciBDb2RlZ2VuIGNvcmUgdGVhbSBtZW1iZXJzIGFyZSBjb250cmlidXRvcnMgd2hvIGhhdmUgYmVlbiBtYWtpbmcgc2lnbmlmaWNhbnQgY29udHJpYnV0aW9ucyAocmV2aWV3IGlzc3VlcywgZml4IGJ1Z3MsIG1ha2UgZW5oYW5jZW1lbnRzLCBldGMpIHRvIHRoZSBwcm9qZWN0IG9uIGEgcmVndWxhciBiYXNpcy4KCk1lbWJlcnMgb2YgdGhlIGNvcmUgdGVhbSBzaG91bGRlciB0aGUgZm9sbG93aW5nIHJlc3BvbnNpYmlsaXRpZXM6CgotIFByb3ZpZGVzIGd1aWRhbmNlIGFuZCBkaXJlY3Rpb24gdG8gb3RoZXIgdXNlcnMKLSBSZXZpZXdzIHB1bGwgcmVxdWVzdHMgYW5kIGlzc3VlcwotIEltcHJvdmVzIHRoZSBnZW5lcmF0b3IgYnkgbWFraW5nIGVuaGFuY2VtZW50cywgZml4aW5nIGJ1Z3Mgb3IgdXBkYXRpbmcgZG9jdW1lbnRhdGlvbnMKLSBTZXRzIHRoZSB0ZWNobmljYWwgZGlyZWN0aW9uIG9mIHRoZSBnZW5lcmF0b3IKCiMjIFNlY3VyaXR5IGNvbnRhY3QKClBsZWFzZSBkaXNjbG9zZSBhbnkgc2VjdXJpdHktcmVsYXRlZCBpc3N1ZXMgb3IgdnVsbmVyYWJpbGl0aWVzIGJ5IGVtYWlsaW5nIFtzZWN1cml0eUBzd2FnZ2VyLmlvXShtYWlsdG86c2VjdXJpdHlAc3dhZ2dlci5pbyksIGluc3RlYWQgb2YgdXNpbmcgdGhlIHB1YmxpYyBpc3N1ZSB0cmFja2VyLgoKIyMgTGljZW5zZSBpbmZvcm1hdGlvbiBvbiBHZW5lcmF0ZWQgQ29kZQoKVGhlIFN3YWdnZXIgQ29kZWdlbiBwcm9qZWN0IGlzIGludGVuZGVkIGFzIGEgYmVuZWZpdCBmb3IgdXNlcnMgb2YgdGhlIFN3YWdnZXIgLyBPcGVuIEFQSSBTcGVjaWZpY2F0aW9uLiAgVGhlIHByb2plY3QgaXRzZWxmIGhhcyB0aGUgW0xpY2Vuc2VdKC4vTElDRU5TRSkgYXMgc3BlY2lmaWVkLiAgSW4gYWRkaXRpb24sIHBsZWFzZSB1bmRlcnN0YW5kIHRoZSBmb2xsb3dpbmcgcG9pbnRzOgoKLSBUaGUgdGVtcGxhdGVzIGluY2x1ZGVkIHdpdGggdGhpcyBwcm9qZWN0IGFyZSBzdWJqZWN0IHRvIHRoZSBbTGljZW5zZV0oLi9MSUNFTlNFKS4KLSBHZW5lcmF0ZWQgY29kZSBpcyBpbnRlbnRpb25hbGx5IF9ub3RfIHN1YmplY3QgdG8gdGhlIHBhcmVudCBwcm9qZWN0IGxpY2Vuc2UKCldoZW4gY29kZSBpcyBnZW5lcmF0ZWQgZnJvbSB0aGlzIHByb2plY3QsIGl0IHNoYWxsIGJlIGNvbnNpZGVyZWQgKipBUyBJUyoqIGFuZCBvd25lZCBieSB0aGUgdXNlciBvZiB0aGUgc29mdHdhcmUuICBUaGVyZSBhcmUgbm8gd2FycmFudGllcy0tZXhwcmVzc2VkIG9yIGltcGxpZWQtLWZvciBnZW5lcmF0ZWQgY29kZS4gIFlvdSBjYW4gZG8gd2hhdCB5b3Ugd2lzaCB3aXRoIGl0LCBhbmQgb25jZSBnZW5lcmF0ZWQsIHRoZSBjb2RlIGlzIHlvdXIgcmVzcG9uc2liaWxpdHkgYW5kIHN1YmplY3QgdG8gdGhlIGxpY2Vuc2luZyB0ZXJtcyB0aGF0IHlvdSBkZWVtIGFwcHJvcHJpYXRlLgoKIyMgVGhhbmsgWW91Cgrwn5Ka8J+SmvCfkpogV2UnZCBsaWtlIHRvIGdpdmUgYSBiaWcgc2hvdXQgb3V0IHRvIGFsbCB0aG9zZSB3aG8ndmUgY29udHJpYnV0ZWQgdG8gU3dhZ2dlciBDb2RlZ2VuLCBiZSB0aGF0IGluIHJhaXNpbmcgaXNzdWVzLCBmaXhpbmcgYnVncywgW2F1dGhvcmluZyB0ZW1wbGF0ZXNdKC4vZG9jcy90ZW1wbGF0ZS1jcmVhdG9ycy5tZCksIG9yIGNyYWZ0aW5nIHVzZWZ1bCBbY29udGVudF0oLi9kb2NzL3B1YmxpYy1jb250ZW50Lm1kKSBmb3Igb3RoZXJzIHRvIGJlbmVmaXQgZnJvbS4g8J+SmvCfkprwn5KaCg== readmeEtag: '"c5c0eb28c6157dee157f929125a23b9ddfc057e6"' readmeLastModified: Fri, 04 Jul 2025 13:44:09 GMT repositoryId: 2006876 description: >- swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. created: '2011-07-06T14:26:48Z' updated: '2026-02-05T19:25:26Z' language: Mustache archived: false stars: 17694 watchers: 407 forks: 6034 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 repoEtag: '"66407fef137d53f5d5f72d0ed5d0dc8fb3215ec3f8d4b2aea4efc81d6ca35931"' repoLastModified: Thu, 05 Feb 2026 19:25:26 GMT foundInMaster: true id: eda1e66e1b7805496e42f57851791a32 - source: https://openapi.tools/ name: Azure AutoRest category: SDK repository: https://github.com/azure/autorest/ language: TypeScript source_description: >- Generates client libraries for accessing RESTful web services from an OpenAPI document. Supports C#, PowerShell, Go, Java, Node.js, TypeScript, Python, and Ruby. v2: true v3: true repositoryMetadata: base64Readme: >- IyA8aW1nIGFsaWduPSJjZW50ZXIiIHNyYz0iLi9kb2NzL2ltYWdlcy9sb2dvLnBuZyI+IEF1dG9SZXN0CgpUaGUgKipBdXRvUmVzdCoqIHRvb2wgZ2VuZXJhdGVzIGNsaWVudCBsaWJyYXJpZXMgZm9yIGFjY2Vzc2luZyBSRVNUZnVsIHdlYiBzZXJ2aWNlcy4gSW5wdXQgdG8gX0F1dG9SZXN0XyBpcyBhIHNwZWMgdGhhdCBkZXNjcmliZXMgdGhlIFJFU1QgQVBJIHVzaW5nIHRoZSBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgZm9ybWF0LgoKW1JlbGVhc2Ugbm90ZXNdKC4vZG9jcy9yZWxlYXNlcykKCiMjIFBhY2thZ2VzCgp8IE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2hhbmdlbG9nICAgICAgICAgICAgICAgICAgICAgICB8IExhdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5leHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgQ29yZSBmdW5jdGlvbmFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFthdXRvcmVzdF1bYXV0b3Jlc3Rfc3JjXSAgICAgICAgICAgICAgICAgICAgICAgIHwgW0NoYW5nZWxvZ11bYXV0b3Jlc3RfY2hnXSAgICAgICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L2F1dG9yZXN0KSAgICAgICAgICAgICAgICAgICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L2F1dG9yZXN0L25leHQpICAgICAgICAgICAgICAgICAgIHwKfCBbQGF1dG9yZXN0L2NvcmVdW2NvcmVfc3JjXSAgICAgICAgICAgICAgICAgICAgICB8IFtDaGFuZ2Vsb2ddW2NvcmVfY2hnXSAgICAgICAgICAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXV0b3Jlc3QvY29yZSkgICAgICAgICAgICAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXV0b3Jlc3QvY29yZS9uZXh0KSAgICAgICAgICAgICB8CnwgW0BhdXRvcmVzdC9tb2RlbGVyZm91cl1bbW9kZWxlcmZvdXJfc3JjXSAgICAgICAgfCBbQ2hhbmdlbG9nXVttb2RlbGVyZm91cl9jaGddICAgIHwgIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGF1dG9yZXN0L21vZGVsZXJmb3VyKSAgICAgIHwgIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGF1dG9yZXN0L21vZGVsZXJmb3VyL25leHQpICAgICAgfAp8IExhbmd1YWdlIGdlbmVyYXRvcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBbQGF1dG9yZXN0L2NzaGFycF1bY3NoYXJwX3NyY10gICAgICAgICAgICAgICAgICB8IFtDaGFuZ2Vsb2ddW2NzaGFycF9jaGddICAgICAgICAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXV0b3Jlc3QvY3NoYXJwKSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgW0BhdXRvcmVzdC9nb11bZ29fc3JjXSAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbQ2hhbmdlbG9nXVtnb19jaGddICAgICAgICAgICAgIHwgIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGF1dG9yZXN0L2dvKSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFtAYXV0b3Jlc3QvamF2YV1bamF2YV9zcmNdICAgICAgICAgICAgICAgICAgICAgIHwgW0NoYW5nZWxvZ11bamF2YV9jaGddICAgICAgICAgICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0BhdXRvcmVzdC9qYXZhKSAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBbQGF1dG9yZXN0L3Bvd2Vyc2hlbGxdW3Bvd2Vyc2hlbGxfc3JjXSAgICAgICAgICB8IFtDaGFuZ2Vsb2ddW3Bvd2Vyc2hlbGxfY2hnXSAgICAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXV0b3Jlc3QvcG93ZXJzaGVsbCkgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgW0BhdXRvcmVzdC9weXRob25dW3B5dGhvbl9zcmNdICAgICAgICAgICAgICAgICAgfCBbQ2hhbmdlbG9nXVtweXRob25fY2hnXSAgICAgICAgIHwgIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGF1dG9yZXN0L3B5dGhvbikgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFtAYXV0b3Jlc3Qvc3dpZnRdW3N3aWZ0X3NyY10gICAgICAgICAgICAgICAgICAgIHwgW0NoYW5nZWxvZ11bc3dpZnRfY2hnXSAgICAgICAgICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0BhdXRvcmVzdC9zd2lmdCkgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBbQGF1dG9yZXN0L3R5cGVzY3JpcHRdW3R5cGVzY3JpcHRfc3JjXSAgICAgICAgICB8IFtDaGFuZ2Vsb2ddW3R5cGVzY3JpcHRfY2hnXSAgICAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXV0b3Jlc3QvdHlwZXNjcmlwdCkgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSW50ZXJuYWwgcGFja2FnZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFtAYXV0b3Jlc3QvY29kZW1vZGVsXVtjb2RlbW9kZWxfc3JjXSAgICAgICAgICAgIHwgW0NoYW5nZWxvZ11bY29kZW1vZGVsX2NoZ10gICAgICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0BhdXRvcmVzdC9jb2RlbW9kZWwpICAgICAgICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0BhdXRvcmVzdC9jb2RlbW9kZWwvbmV4dCkgICAgICAgIHwKfCBbQGF1dG9yZXN0L2NvbW1vbl1bY29tbW9uX3NyY10gICAgICAgICAgICAgICAgICB8IFtDaGFuZ2Vsb2ddW2NvbW1vbl9jaGddICAgICAgICAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXV0b3Jlc3QvY29tbW9uKSAgICAgICAgICAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXV0b3Jlc3QvY29tbW9uL25leHQpICAgICAgICAgICB8CnwgW0BhdXRvcmVzdC9jb25maWd1cmF0aW9uXVtjb25maWd1cmF0aW9uX3NyY10gICAgfCBbQ2hhbmdlbG9nXVtjb25maWd1cmF0aW9uX2NoZ10gIHwgIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGF1dG9yZXN0L2NvbmZpZ3VyYXRpb24pICAgIHwgIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGF1dG9yZXN0L2NvbmZpZ3VyYXRpb24vbmV4dCkgICAgfAp8IFtAYXV0b3Jlc3QvZXh0ZW5zaW9uLWJhc2VdW2V4dGVuc2lvbl9iYXNlX3NyY10gIHwgW0NoYW5nZWxvZ11bZXh0ZW5zaW9uX2Jhc2VfY2hnXSB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0BhdXRvcmVzdC9leHRlbnNpb24tYmFzZSkgICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0BhdXRvcmVzdC9leHRlbnNpb24tYmFzZS9uZXh0KSAgIHwKfCBbQGF6dXJlLXRvb2xzL2V4dGVuc2lvbl1bZXh0ZW5zaW9uX3NyY10gICAgICAgICB8IFtDaGFuZ2Vsb2ddW2V4dGVuc2lvbl9jaGddICAgICAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXp1cmUtdG9vbHMvZXh0ZW5zaW9uKSAgICAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXp1cmUtdG9vbHMvZXh0ZW5zaW9uL25leHQpICAgICB8CnwgW0BhenVyZS10b29scy9jb2RlZ2VuXVtjb2RlZ2VuX3NyY10gICAgICAgICAgICAgfCBbQ2hhbmdlbG9nXVtjb2RlbW9kZWxfY2hnXSAgICAgIHwgIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGF6dXJlLXRvb2xzL2NvZGVnZW4pICAgICAgIHwgIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGF6dXJlLXRvb2xzL2NvZGVnZW4vbmV4dCkgICAgICAgfAp8IFtAYXp1cmUtdG9vbHMvb3BlbmFwaV1bb3BlbmFwaV9zcmNdICAgICAgICAgICAgIHwgW0NoYW5nZWxvZ11bb3BlbmFwaV9jaGddICAgICAgICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0BhenVyZS10b29scy9vcGVuYXBpKSAgICAgICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0BhenVyZS10b29scy9vcGVuYXBpL25leHQpICAgICAgIHwKfCBbQGF6dXJlLXRvb2xzL2RlZHVwbGljYXRpb25dW2RlZHVwbGljYXRpb25fc3JjXSB8IFtDaGFuZ2Vsb2ddW2RlZHVwbGljYXRpb25fY2hnXSAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXp1cmUtdG9vbHMvZGVkdXBsaWNhdGlvbikgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXp1cmUtdG9vbHMvZGVkdXBsaWNhdGlvbi9uZXh0KSB8CnwgW0BhenVyZS10b29scy9kYXRhc3RvcmVdW2RhdGFzdG9yZV9zcmNdICAgICAgICAgfCBbQ2hhbmdlbG9nXVtkYXRhc3RvcmVfY2hnXSAgICAgIHwgIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGF6dXJlLXRvb2xzL2RhdGFzdG9yZSkgICAgIHwgIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGF6dXJlLXRvb2xzL2RhdGFzdG9yZS9uZXh0KSAgICAgfAp8IFtAYXp1cmUtdG9vbHMvb2FpMi10by1vYWkzXVtvYWkyLXRvLW9haTNfc3JjXSAgIHwgW0NoYW5nZWxvZ11bb2FpMi10by1vYWkzX2NoZ10gICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0BhenVyZS10b29scy9vYWkyLXRvLW9haTMpICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0BhenVyZS10b29scy9vYWkyLXRvLW9haTMvbmV4dCkgIHwKfCBbQGF6dXJlLXRvb2xzL2pzb25zY2hlbWFdW2pzb25zY2hlbWFfc3JjXSAgICAgICB8IFtDaGFuZ2Vsb2ddW2pzb25zY2hlbWFfY2hnXSAgICAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXp1cmUtdG9vbHMvanNvbnNjaGVtYSkgICAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXp1cmUtdG9vbHMvanNvbnNjaGVtYS9uZXh0KSAgICB8CgpbYXV0b3Jlc3Rfc3JjXTogcGFja2FnZXMvYXBwcy9hdXRvcmVzdApbY29yZV9zcmNdOiBwYWNrYWdlcy9leHRlbnNpb25zL2NvcmUKW21vZGVsZXJmb3VyX3NyY106IHBhY2thZ2VzL2V4dGVuc2lvbnMvbW9kZWxlcmZvdXIKW2NzaGFycF9zcmNdOiBodHRwczovL2dpdGh1Yi5jb20vQXp1cmUvYXV0b3Jlc3QuY3NoYXJwCltweXRob25fc3JjXTogaHR0cHM6Ly9naXRodWIuY29tL0F6dXJlL2F1dG9yZXN0LnB5dGhvbgpbZ29fc3JjXTogaHR0cHM6Ly9naXRodWIuY29tL0F6dXJlL2F1dG9yZXN0LmdvCltqYXZhX3NyY106IGh0dHBzOi8vZ2l0aHViLmNvbS9BenVyZS9hdXRvcmVzdC5qYXZhCltzd2lmdF9zcmNdOiBodHRwczovL2dpdGh1Yi5jb20vQXp1cmUvYXV0b3Jlc3Quc3dpZnQKW3R5cGVzY3JpcHRfc3JjXTogaHR0cHM6Ly9naXRodWIuY29tL0F6dXJlL2F1dG9yZXN0LnR5cGVzY3JpcHQKW3Bvd2Vyc2hlbGxfc3JjXTogaHR0cHM6Ly9naXRodWIuY29tL0F6dXJlL2F1dG9yZXN0LnBvd2Vyc2hlbGwKW2NvZGVtb2RlbF9zcmNdOiBwYWNrYWdlcy9saWJzL2NvZGVtb2RlbApbY29tbW9uX3NyY106IHBhY2thZ2VzL2xpYnMvY29tbW9uCltjb25maWd1cmF0aW9uX3NyY106IHBhY2thZ2VzL2xpYnMvY29uZmlndXJhdGlvbgpbZXh0ZW5zaW9uX2Jhc2Vfc3JjXTogcGFja2FnZXMvbGlicy9leHRlbnNpb24tYmFzZQpbb2FpMi10by1vYWkzX3NyY106IHBhY2thZ2VzL2xpYnMvb2FpMi10by1vYWkzX3NyYwpbZXh0ZW5zaW9uX3NyY106IHBhY2thZ2VzL2xpYnMvZXh0ZW5zaW9uCltjb2RlZ2VuX3NyY106IHBhY2thZ2VzL2xpYnMvY29kZWdlbgpbb3BlbmFwaV9zcmNdOiBwYWNrYWdlcy9saWJzL29wZW5hcGkKW2RlZHVwbGljYXRpb25fc3JjXTogcGFja2FnZXMvbGlicy9kZWR1cGxpY2F0aW9uCltkYXRhc3RvcmVfc3JjXTogcGFja2FnZXMvbGlicy9kYXRhc3RvcmUKW2pzb25zY2hlbWFfc3JjXTogcGFja2FnZXMvbGlicy9vYWkyLXRvLW9haTMKW2F1dG9yZXN0X2NoZ106IHBhY2thZ2VzL2FwcHMvYXV0b3Jlc3QvQ0hBTkdFTE9HLm1kCltjb3JlX2NoZ106IHBhY2thZ2VzL2V4dGVuc2lvbnMvY29yZS9DSEFOR0VMT0cubWQKW21vZGVsZXJmb3VyX2NoZ106IHBhY2thZ2VzL2V4dGVuc2lvbnMvbW9kZWxlcmZvdXIvQ0hBTkdFTE9HLm1kCltjc2hhcnBfY2hnXTogaHR0cHM6Ly9naXRodWIuY29tL0F6dXJlL2F1dG9yZXN0LmNzaGFycApbcHl0aG9uX2NoZ106IGh0dHBzOi8vZ2l0aHViLmNvbS9BenVyZS9hdXRvcmVzdC5weXRob24vYmxvYi9tYWluL3BhY2thZ2VzL2F1dG9yZXN0LnB5dGhvbi9DaGFuZ2VMb2cubWQKW2dvX2NoZ106IGh0dHBzOi8vZ2l0aHViLmNvbS9BenVyZS9hdXRvcmVzdC5nbwpbamF2YV9jaGddOiBodHRwczovL2dpdGh1Yi5jb20vQXp1cmUvYXV0b3Jlc3QuamF2YS9yZWxlYXNlcwpbc3dpZnRfY2hnXTogaHR0cHM6Ly9naXRodWIuY29tL0F6dXJlL2F1dG9yZXN0LnN3aWZ0Clt0eXBlc2NyaXB0X2NoZ106IGh0dHBzOi8vZ2l0aHViLmNvbS9BenVyZS9hdXRvcmVzdC50eXBlc2NyaXB0Cltwb3dlcnNoZWxsX2NoZ106IGh0dHBzOi8vZ2l0aHViLmNvbS9BenVyZS9hdXRvcmVzdC5wb3dlcnNoZWxsL3JlbGVhc2VzCltjb2RlbW9kZWxfY2hnXTogcGFja2FnZXMvbGlicy9jb2RlbW9kZWwvQ0hBTkdFTE9HLm1kCltjb21tb25fY2hnXTogcGFja2FnZXMvbGlicy9jb21tb24vQ0hBTkdFTE9HLm1kCltjb25maWd1cmF0aW9uX2NoZ106IHBhY2thZ2VzL2xpYnMvY29uZmlndXJhdGlvbi9DSEFOR0VMT0cubWQKW2V4dGVuc2lvbl9iYXNlX2NoZ106IHBhY2thZ2VzL2xpYnMvZXh0ZW5zaW9uLWJhc2UvQ0hBTkdFTE9HLm1kCltleHRlbnNpb25fY2hnXTogcGFja2FnZXMvbGlicy9leHRlbnNpb24vQ0hBTkdFTE9HLm1kCltjb2RlZ2VuX2NoZ106IHBhY2thZ2VzL2xpYnMvY29kZWdlbi9DSEFOR0VMT0cubWQKW29wZW5hcGlfY2hnXTogcGFja2FnZXMvbGlicy9vcGVuYXBpL0NIQU5HRUxPRy5tZApbZGVkdXBsaWNhdGlvbl9jaGddOiBwYWNrYWdlcy9saWJzL2RlZHVwbGljYXRpb24vQ0hBTkdFTE9HLm1kCltkYXRhc3RvcmVfY2hnXTogcGFja2FnZXMvbGlicy9kYXRhc3RvcmUvQ0hBTkdFTE9HLm1kCltvYWkyLXRvLW9haTNfY2hnXTogcGFja2FnZXMvbGlicy9vYWkyLXRvLW9haTMvQ0hBTkdFTE9HLm1kCltqc29uc2NoZW1hX2NoZ106IHBhY2thZ2VzL2xpYnMvanNvbnNjaGVtYS9DSEFOR0VMT0cubWQKCiMjIFN1cHBvcnQgUG9saWN5CgpBdXRvUmVzdCBpcyBhbiBvcGVuIHNvdXJjZSB0b29sIC0tIGlmIHlvdSBuZWVkIGFzc2lzdGFuY2UsIGZpcnN0IGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uLiBJZiB5b3UgZmluZCBhIGJ1ZyBvciBuZWVkIHNvbWUgaGVscCwgZmVlbCBmcmVlIHRvIHN1Ym1pdCBhbiBbaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9BenVyZS9hdXRvcmVzdC9pc3N1ZXMpCgojIyBHZXR0aW5nIFN0YXJ0ZWQgdXNpbmcgQXV0b1Jlc3QgIVtpbWFnZV0oLi9kb2NzL2ltYWdlcy9ub3JtYWwucG5nKQoKVmlldyBvdXIgW2RvY3MgcmVhZG1lXVtkb2NzX3JlYWRtZV0gYXMgYSBzdGFydGluZyBwb2ludCB0byBmaW5kIGJvdGggZ2VuZXJhbCBpbmZvcm1hdGlvbiBhbmQgbGFuZ3VhZ2UtZ2VuZXJhdG9yIHNwZWNpZmljIGluZm9ybWF0aW9uCgojIyBDb250cmlidXRpbmcKCiMjIyBDb250cmlidXRpbmcgZ3VpZGUKCkNoZWNrIG91ciBbaW50ZXJuYWwgZGV2ZWxvcGVyIGRvY3NdKC4vZG9jcy9kZXZlbG9wZXIvcmVhZG1lLm1kKSB0byBsZWFybiBhYm91dCBvdXIgZGV2ZWxvcG1lbnQgcHJvY2VzcywgaG93IHRvIHByb3Bvc2UgYnVnZml4ZXMgYW5kIGltcHJvdmVtZW50cywgYW5kIGhvdyB0byBidWlsZCBhbmQgdGVzdCB5b3VyIGNoYW5nZXMgdG8gQXV0b3Jlc3QuCgojIyMgQ29kZSBvZiBDb25kdWN0CgpUaGlzIHByb2plY3QgaGFzIGFkb3B0ZWQgdGhlIFtNaWNyb3NvZnQgT3BlbiBTb3VyY2UgQ29kZSBvZiBDb25kdWN0XShodHRwczovL29wZW5zb3VyY2UubWljcm9zb2Z0LmNvbS9jb2Rlb2Zjb25kdWN0LykuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgW0NvZGUgb2YgQ29uZHVjdCBGQVFdKGh0dHBzOi8vb3BlbnNvdXJjZS5taWNyb3NvZnQuY29tL2NvZGVvZmNvbmR1Y3QvZmFxLykgb3IgY29udGFjdCBbb3BlbmNvZGVAbWljcm9zb2Z0LmNvbV0obWFpbHRvOm9wZW5jb2RlQG1pY3Jvc29mdC5jb20pIHdpdGggYW55IGFkZGl0aW9uYWwgcXVlc3Rpb25zIG9yIGNvbW1lbnRzLgoKPCEtLUxJTktTLS0+CgpbZG9jc19yZWFkbWVdOiBkb2NzL3JlYWRtZS5tZAo= readmeEtag: '"f205b0054148c6362d9b9a5d930c27da17b36eca"' readmeLastModified: Tue, 13 Aug 2024 07:26:42 GMT repositoryId: 31089461 description: >- OpenAPI (f.k.a Swagger) Specification code generator. Supports C#, PowerShell, Go, Java, Node.js, TypeScript, Python created: '2015-02-20T23:02:54Z' updated: '2026-02-05T03:06:15Z' language: TypeSpec archived: false stars: 4801 watchers: 964 forks: 737 owner: Azure logo: https://avatars.githubusercontent.com/u/6844498?v=4 license: MIT repoEtag: '"365392cb2abe4bd2aabbfd42a3a1da9cb8187795b3613fe8162b69a5ea9e2827"' repoLastModified: Thu, 05 Feb 2026 03:06:15 GMT foundInMaster: true id: 648d92bca90bf58cd74407e0bcad2936 - source: https://openapi.tools/ name: spring-openapi homepage: https://github.com/jrcodeza/spring-openapi language: Java source_description: >- OpenAPI v3 generator for Java Spring. Includes also client generation. Supports inheritance with discriminators, Jackson annotations and custom interceptors. category: SDK repository: https://github.com/jrcodeza/spring-openapi v3: true repositoryMetadata: base64Readme: >- IyBzcHJpbmctb3BlbmFwaSAoT3BlbkFQSSAzIGdlbmVyYXRvcikKIVtKYXZhIENJXShodHRwczovL2dpdGh1Yi5jb20vanJjb2RlemEvc3ByaW5nLW9wZW5hcGkvd29ya2Zsb3dzL0phdmElMjBDSS9iYWRnZS5zdmcpCgpTcHJpbmcgQm9vdCBPcGVuQVBJIDMgZ2VuZXJhdG9yLiBJdCBzY2FucyBwcm92aWRlZCBwYWNrYWdlcyAKKG1vZGVsIGFuZCBjb250cm9sbGVyKSBhbmQgZ2VuZXJhdGVzIGJhc2VkIG9uIHJlZmxlY3Rpb24sIGphdmF4IHZhbGlkYXRpb24KYW5kIHNwcmluZyBhbm5vdGF0aW9ucyB0aGUgT3BlbkFQSSAzIGpzb24uIEl0IGlzIGFibGUgdG8gaGFuZGxlIGFsc28KaW5oZXJpdGFuY2UgdXNpbmcgT3BlbkFQSSAzIGRpc2NyaW1pbmF0b3IgcG9zc2liaWxpdGllcy4gVGhlIGluaGVyaXRhbmNlCmdlbmVyYXRpb24gaXMgYWNoaWV2ZWQgdXNpbmcgamFja3NvbiBhbm5vdGF0aW9ucy4KCkdlbmVyYXRvciBhbGxvd3MgeW91IHRvIGFsc28gaW50ZXJjZXB0IHNjaGVtYSwgc2NoZW1hIGZpZWxkLCBvcGVyYXRpb24KYW5kIG9wZXJhdGlvbiBwYXJhbWV0ZXIgcHJvY2Vzcywgc28geW91IGNhbiBpbmNsdWRlIHlvdXIgb3duIGJlaGF2aW9yCnRvIGVucmljaCBhbHJlYWR5IG1hcHBlZCBzZWN0aW9ucyAoZS5nLiBpbmNsdWRlIG93biBhbm5vdGF0aW9uIGJlaGF2aW9yCnRvIGRlc2NyaXB0aW9ucyBldGMuKS4KClNvIGZhciB0aGVyZSBpcyBjb3JlIGdlbmVyYXRvciBmdW5jdGlvbmFsaXR5IAoqKnNwcmluZy1vcGVuYXBpLXNjaGVtYS1nZW5lcmF0b3IqKiBhbmQgbWF2ZW4gcGx1Z2luCioqc3ByaW5nLW9wZW5hcGktc2NoZW1hLWdlbmVyYXRvci1wbHVnaW4qKiBhdmFpbGFibGUuU29vbiB0aGVyZSB3aWxsIGJlIAphbHNvIGphdmEgY2xpZW50IGdlbmVyYXRvciBmaW5hbGl6ZWQsIGJlY2F1c2UgY3VycmVudCB0b29saW5nIGlzIHN0aWxsIApub3QgYWJsZSB0byBnZW5lcmF0ZSBjbGllbnQgd2l0aCBmdWxsIE9wZW5BUEkgMyBkaXNjcmltaW5hdG9yIGZlYXR1cmVzCihqYWNrc29uIGFubm90YXRpb25zKS4KClRoZXJlIGlzIGFsc28gc2hvcnQgYXJ0aWNsZSBkZXNjcmliaW5nIHVzYWdlIG9mIHNwcmluZy1vcGVuYXBpIGdlbmVyYXRvciBoZXJlOiAKaHR0cHM6Ly9tZWRpdW0uY29tL0ByZW1lbmVjLmpha3ViL29wZW5hcGktMy1zcGVjLWFuZC1jbGllbnQtZ2VuZXJhdGlvbi1vbi1qYXZhLXNwcmluZy1hcHBsaWNhdGlvbi0zOGE5YmE1YTI5MzIuCgojIyBDdXJyZW50IHZlcnNpb24KKioxLjQuNioqCgpOb3cgZ2VuZXJhdG9yIHN1cHBvcnRzIGFsc28gT3BlbkFQSSB2ZXJzaW9uIDIgZ2VuZXJhdGlvbi4KClJlbGVhc2Ugbm90ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9qcmNvZGV6YS9zcHJpbmctb3BlbmFwaS9ibG9iL21hc3Rlci9DSEFOR0VMT0cubWQgCgoxLjIuMSAtIHRvIGVuc3VyZSBjb21wYXRpYmxpdHkgd2l0aCBzd2FnZ2VyIHVpIGZvciBiaWdnZXIgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcy4KVGhpcyB2ZXJzaW9uIG1vZGVscyBpbmhlcml0YW5jZSB1c2luZyBhbGxPZiBvbmx5IGlmIGRpc2NyaW1pbmF0b3IgKEpzb25TdWJUeXBlcykgaXMgZm91bmQKaW4gaW5oZXJpdGFuY2UgaGllcmFyY2h5LiBJZiBub3QsIGl0IHRha2VzIGFsbCBhdHRyaWJ1dGVzIGZyb20gcGFyZW50IGNsYXNzZXMKYW5kIGFkZHMgdGhlbSB0byB0aGUgY3VycmVudCBvbmUuIFNlZSB0ZXN0cyBmb3IgbW9yZSBpbmZvLgoKIyMgRXhhbXBsZSBwcm9qZWN0CllvdSBjYW4gY2hlY2sgdGhpcyByZXBvc2l0b3J5IGh0dHBzOi8vZ2l0aHViLmNvbS9qcmNvZGV6YS9zcHJpbmctb3BlbmFwaS1leGFtcGxlIGZvciBhbiBleGFtcGxlCnVzYWdlLiBJdCBzaG93cyBzcGVjIHRvIGNvZGUgYW5kIGFsc28gY29kZSB0byBzcGVjIGdlbmVyYXRpb24gdXNpbmcgbWF2ZW4gcGx1Z2lucy4gSXQgY29udGFpbnMKc2ltcGxlIFJFU1QgcmVzb3VyY2VzLCBtb2RlbCAoaW5jbHVkaW5nIGluaGVyaXRhbmNlKSwgaW50ZXJjZXB0b3JzIGFuZCBleGFtcGxlcyByZXNvbHZlci4KCiMjIE9wZW5BUEkgVUkgaW50ZXJwcmV0ZXIKSWYgeW91IG5lZWQgdG8gZGlzcGxheSBPcGVuQVBJIHYzIHNwZWMgaW4gYnJvd3NlciB5b3UgY2FuIGhhdmUgYSBsb29rIGFsc28gb24gKipvYXMtdWkqKgpwbHVnaW4gaHR0cHM6Ly9naXRodWIuY29tL3ZhaGFuaXRvL29hcy11aSAod2hpY2ggd2FzIGRldmVsb3BlZCB0b2dldGhlciB3aXRoIHNwcmluZy1vcGVuYXBpKSAuIApJdCBzdXBwb3J0cyBzZWFyY2hpbmcgb2YgY29tcG9uZW50cyBhbmQgcmVzb3VyY2VzLiBDb3JyZWN0bHkgZGlzcGxheXMgaW5oZXJpdGFuY2UgYWxzbyAKd2l0aCBkaXNjcmltaW5hdG9yIGluZm8uIFlvdSBjYW4gdXNlIGl0IGluIHJlYWN0IGFzIHBsdWdpbiBvciBhbHNvIGFzIHN0YW5kYWxvbmUgYnVuZGxlIGpzLiAKCiMjIEFubm90YXRpb25zCiMjIyBAT3BlbkFwaUV4YW1wbGUKWW91IGNhbiBkZWZpbmUgaXQgb24gY2xhc3MsIG1ldGhvZCwgcGFyYW1ldGVyIG9yIGZpZWxkLiBUaGVyZSBhcmUgMiBtYWluIHVzZSBjYXNlczoKCi0gUHJvdmlkaW5nIHRoZSBleGFtcGxlIHZhbHVlICoqaW4gcGxhY2UqKgpgYGBqYXZhCkBPcGVuQXBpRXhhbXBsZShuYW1lID0gIlN0YW5kYXJkRXhhbXBsZSIsIHZhbHVlID0gInN0YW5kYXJkRXhhbXBsZVZhbHVlIikKYGBgCi0gcHJvdmlkaW5nICoqa2V5KiogdG8gZXhhbXBsZS4gWW91IGhhdmUgdG8gbWFuYWdlIHRoYXQga2V5IGlzIGhhbmRsZWQgYnkgZXhhbXBsZXMgcmVzb2x2ZXIKYGBgamF2YQpAT3BlbkFwaUV4YW1wbGUobmFtZSA9ICJLZXlFeGFtcGxlIiwga2V5ID0gIktFWSIpCmBgYApFeGFtcGxlIHJlc29sdmVyIGlzIGEgc2ltcGxlIGludGVyZmFjZToKYGBgamF2YQpwdWJsaWMgaW50ZXJmYWNlIE9wZW5BcGlFeGFtcGxlUmVzb2x2ZXIgewoJCiAgICBTdHJpbmcgcmVzb2x2ZUV4YW1wbGUoU3RyaW5nIGV4YW1wbGVLZXkpOwoKfQpgYGAKVGhlICoqZXhhbXBsZUtleSoqIHBhcmFtZXRlciBpcyBhIGtleSBmb3Igd2hpY2ggZXhhbXBsZSB2YWx1ZSBzaG91bGQgYmUgcHJvdmlkZWQgYnkgcmVzb2x2ZXIuIEl0IGNhbiBiZSAKZm9yIGV4YW1wbGUgYSBmaWxlIG5hbWUgd2l0aCBleGFtcGxlIHJlcXVlc3QgLSB0aGVuIGdvYWwgb2YgdGhlIHJlc29sdmVyIGlzIHRvIHJlYWQgZmlsZSBjb250ZW50IGFuZCBwcm92aWRlCml0LiAKCkl0J3MgcG9zc2libGUgdG8gZGVmaW5lIG1vcmUgZXhhbXBsZXMgZm9yIG9uZSBlbGVtZW50IGJ5IHdyYXBwaW5nIEBPcGVuQXBpRXhhbXBsZSBhbm5vdGF0aW9uIHRvICoqQE9wZW5BcGlFeGFtcGxlcyoqCm9uZS4gTmFtZSBvZiB0aGUgZXhhbXBsZSBiZWNvbWVzIGltcG9ydGFudCBpbiB0aGlzIGNhc2UsIGJlY2F1c2UgaXQgd2lsbCBiZSBzdG9yZWQgdG8gc3BlYyBhcyBleGFtcGxlIG5hbWUuCgojIyMgQE9wZW5BcGlJZ25vcmUKRWxlbWVudCBhbm5vdGF0ZWQgd2l0aCB0aGlzIGFubm90YXRpb24gd2lsbCBub3QgYmUgZ2VuZXJhdGVkIHRvIHNwZWMuCgojIyMgQFJlc3BvbnNlClNvbWV0aW1lcyB5b3UgbmVlZCB0byBzcGVjaWZ5IG1ldGhvZCAob3BlcmF0aW9uKSByZXNwb25zZSBpbiB5b3VyIG93biB3YXkuIEl0IGNhbiAKYmUgbmVjZXNzYXJ5IHdoZW4geW91IGhhdmUgc2V2ZXJhbCByZXR1cm4gc3RhdHVzZXMgb3IgcmVzcG9uc2UgdHlwZXMuIEFsc28gd2hlbiAKeW91IHdhbnQgdG8gc3BlY2lmeSByZXNwb25zZSBoZWFkZXJzLiBGb3IgdGhpcyBwdXJwb3NlIHlvdSBjYW4gdXNlIHRoaXMgYW5ub3RhdGlvbi4KCkl0J3MgYWxzbyBwb3NzaWJsZSB0byB3cmFwIG11bHRpcGxlIEBSZXNwb25zZSBhbm5vdGF0aW9ucyB0byAqKkBSZXNwb25zZXMqKiBhbm5vdGF0aW9ucy4gRS5nLjoKYGBgamF2YQpAUmVzcG9uc2VzKHsKCUBSZXNwb25zZShyZXNwb25zZUNvZGUgPSAyMDEsIGRlc2NyaXB0aW9uID0gIkNyZWF0ZWQiLCByZXNwb25zZUJvZHkgPSBWYWxpZGF0aW9uRHVtbXkuY2xhc3MsCgkJCWhlYWRlcnMgPSBASGVhZGVyKG5hbWUgPSAiU29tZUhlYWRlciIsIGRlc2NyaXB0aW9uID0gIlRlc3RIZWFkZXIiKSksCglAUmVzcG9uc2UocmVzcG9uc2VDb2RlID0gMjAwLCBkZXNjcmlwdGlvbiA9ICJSZXBsYWNlZCIsIHJlc3BvbnNlQm9keSA9IFZhbGlkYXRpb25EdW1teS5jbGFzcykKfSkgCmBgYApASGVhZGVyIGFubm90YXRpb24gaXMgYWxzbyBjdXN0b20gc3ByaW5nLW9wZW5hcGkgYW5ub3RhdGlvbi4KCiMjIEdlbmVyYXRlIHNwZWMgZnJvbSBjb2RlCiMjIyBSdW50aW1lIHVzYWdlCkluY2x1ZGUgZGVwZW5kZW5jeQoKYGBgamF2YQo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPmNvbS5naXRodWIuanJjb2RlemE8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5zcHJpbmctb3BlbmFwaS1zY2hlbWEtZ2VuZXJhdG9yPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+MS40LjY8L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgCgpJbnN0YW50aWF0ZSAqKk9wZW5BUElHZW5lcmF0b3IqKgoKYGBgamF2YQpPcGVuQVBJR2VuZXJhdG9yIG9wZW5BUElHZW5lcmF0b3IgPSBuZXcgT3BlbkFQSUdlbmVyYXRvcigKICAgICAgICAgICAgICAgIHNpbmdsZXRvbkxpc3QoIm9yZy5zcHJpbmcub3BlbmFwaS5zY2hlbWEuZ2VuZXJhdG9yLnBsdWdpbi5tb2RlbC4qIiksCiAgICAgICAgICAgICAgICBzaW5nbGV0b25MaXN0KCJvcmcuc3ByaW5nLm9wZW5hcGkuc2NoZW1hLmdlbmVyYXRvci5wbHVnaW4uY29udHJvbGxlci4qIiksCiAgICAgICAgICAgICAgICBjcmVhdGVUZXN0SW5mbygpCiAgICAgICAgKTsKYGBgClRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbW9kZWwgcGFja2FnZSBhbmQgdGhlIHNlY29uZCBpcyBjb250cm9sbGVyIHBhY2thZ2UuIEl0CmlzIHBvc3NpYmxlIHRvIGRlZmluZSBtdWx0aXBsZSBwYWNrYWdlcyBmb3IgZWFjaC4gVGhlIHRoaXJkIHBhcmFtZXRlcgppcyBPcGVuQVBJIGJhc2ljIGluZm8gbGlrZSBwcm9qZWN0IHRpdGxlLCBkZXNjcmlwdGlvbiwgdmVyc2lvbiBldGMuIEl0IGlzCnJlcXVpcmVkIGluIG9yZGVyIHRvIGNyZWF0ZSB2YWxpZCBPcGVuQVBJIDMgb3V0cHV0LgpBZGRpdGlvbmFsbHkgeW91IGNhbiBkZWZpbmUgaW50ZXJjZXB0b3JzCiogKipPcGVyYXRpb25JbnRlcmNlcHRvcioqIC0gZXhlY3V0ZWQgYWZ0ZXIgY29udHJvbGxlciBtZXRob2QgaXMgbWFwcGVkCiogKipPcGVyYXRpb25QYXJhbWV0ZXJJbnRlcmNlcHRvcioqIC0gZXhlY3V0ZWQgYWZ0ZXIgZWFjaCBtZXRob2QgcGFyYW1ldGVyIGlzIG1hcHBlZAoqICoqUmVxdWVzdEJvZHlJbnRlcmNlcHRvcioqIC0gZXhlY3V0ZWQgYWZ0ZXIgUmVxdWVzdEJvZHkgYW5ub3RhdGVkIHBhcmFtZXRlciBvZiBhIG1ldGhvZCBpcyBtYXBwZWQKKiAqKlNjaGVtYUZpZWxkSW50ZXJjZXB0b3IqKiAtIGV4ZWN1dGVkIGFmdGVyIGNsYXNzIGZpZWxkIGlzIG1hcHBlZAoqICoqU2NoZW1hSW50ZXJjZXB0b3IqKiAtIGV4ZWN1dGVkIGFmdGVyIGVhY2ggY2xhc3MgaXMgbWFwcGVkCgpZb3UgY2FuIGFkZCB0aGVzZSBpbnRlcmNlcHRvcnMgZWl0aGVyIHRvIGNvbnN0cnVjdG9yIGFmdGVyIGluZm8gcGFyYW1ldGVyIG9yCmJ5IGNhbGxpbmcgYWRkICsgaW50ZXJjZXB0b3JOYW1lIG1ldGhvZCBvbiBPcGVuQVBJR2VuZXJhdG9yIGNsYXNzLiBFLmcuOgoKYGBgamF2YQpvcGVuQVBJR2VuZXJhdG9yLmFkZE9wZXJhdGlvbkludGVyY2VwdG9yKG9wZXJhdGlvbkludGVyY2VwdG9yKTsKb3BlbkFQSUdlbmVyYXRvci5hZGRPcGVyYXRpb25QYXJhbWV0ZXJJbnRlcmNlcHRvcihvcGVyYXRpb25QYXJhbWV0ZXJJbnRlcmNlcHRvcik7Cm9wZW5BUElHZW5lcmF0b3IuYWRkUmVxdWVzdEJvZHlJbnRlcmNlcHRvcihyZXF1ZXN0Qm9keUludGVyY2VwdG9yKTsKb3BlbkFQSUdlbmVyYXRvci5hZGRTY2hlbWFGaWVsZEludGVyY2VwdG9yKHNjaGVtYUZpZWxkSW50ZXJjZXB0b3IpOwpvcGVuQVBJR2VuZXJhdG9yLmFkZFNjaGVtYUludGVyY2VwdG9yKHNjaGVtYUludGVyY2VwdG9yKTsKYGBgCgpZb3UgY2FuIGRlZmluZSB5b3VyIG93biBpbnRlcmNlcHRvciBhcyBmb2xsb3dzOgpgYGBqYXZhCnBhY2thZ2UgY29tLmdpdGh1Yi5qcmNvZGV6YS5zY2hlbWEuZ2VuZXJhdG9yLnBsdWdpbi5pbnRlcmNlcHRvcnM7CgppbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOwoKaW1wb3J0IGNvbS5naXRodWIuanJjb2RlemEuc2NoZW1hLmdlbmVyYXRvci5pbnRlcmNlcHRvcnMuT3BlcmF0aW9uSW50ZXJjZXB0b3I7CgppbXBvcnQgaW8uc3dhZ2dlci52My5vYXMubW9kZWxzLk9wZXJhdGlvbjsKCnB1YmxpYyBjbGFzcyBUZXN0T3BlcmF0aW9uSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBPcGVyYXRpb25JbnRlcmNlcHRvciB7CgoJQE92ZXJyaWRlCglwdWJsaWMgdm9pZCBpbnRlcmNlcHQoTWV0aG9kIG1ldGhvZCwgT3BlcmF0aW9uIHRyYW5zZm9ybWVkT3BlcmF0aW9uKSB7CgkJdHJhbnNmb3JtZWRPcGVyYXRpb24uc2V0U3VtbWFyeSgiSW50ZXJjZXB0b3Igc3VtbWFyeSIpOwoJfQoKfQpgYGAKCkl0J3MgcG9zc2libGUgdG8gZGVmaW5lIGFsc28gZ2xvYmFsIGhlYWRlcnMgd2hpY2ggYXJlIGFwcGxpY2FibGUgZm9yIGFsbCByZXNvdXJjZXMuCmBgYGphdmEKb3BlbkFQSUdlbmVyYXRvci5hZGRHbG9iYWxIZWFkZXIoIlRlc3QtR2xvYmFsLUhlYWRlciIsICJTb21lIGRlc2MiLCBmYWxzZSk7CmBgYAoKT3BlbkFQSUdlbmVyYXRvciBtZXRob2QgKipnZW5lcmF0ZSoqIGNhbiBhbHNvIHRha2UgT3BlbkFwaUdlbmVyYXRvckNvbmZpZyBhcyBwYXJhbWV0ZXIuCkluIHRoaXMgY29uZmlnIHlvdSBjYW4gZGVmaW5lIGlmIGdlbmVyYXRpb24gb2YgZXhhbXBsZXMgaXMgZW5hYmxlZC4gWW91IGNhbiBhbHNvIGRlZmluZQpleGFtcGxlIHJlc29sdmVyLCB3aGljaCBjYW4gYmUgdXNlZnVsIGlmIGZvciBleGFtcGxlIHlvdSBoYXZlIGJpZ2dlciBleGFtcGxlcyBvZiBQT1NUIGJvZHkgcmVxdWVzdHMKc3RvcmVkIGluIGZpbGVzLiBZb3UgY2FuIGRlZmluZSBpdCBhcyBmb2xsb3dzOgoKYGBgamF2YQpPcGVuQXBpR2VuZXJhdG9yQ29uZmlnQnVpbGRlci5kZWZhdWx0Q29uZmlnKCkKICAgICAgICAgICAgICAgICAgICAgICAgLndpdGhHZW5lcmF0ZUV4YW1wbGVzKHRydWUpCiAgICAgICAgICAgICAgICAgICAgICAgIC53aXRoT3BlbkFwaUV4YW1wbGVSZXNvbHZlcihjcmVhdGVFeGFtcGxlUmVzb2x2ZXIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgLmJ1aWxkKCkKYGBgCgpGaW5hbGx5IHdoZW4geW91IHdhbnQgdG8gKipnZW5lcmF0ZSBPcGVuQVBJIDMgc3BlYyoqIHlvdSBoYXZlIHRvIGV4ZWN1dGUKZ2VuZXJhdGUgbWV0aG9kIG9uIE9wZW5BUElHZW5lcmF0b3IgaW5zdGFuY2UuCmBgYGphdmEKT3BlbkFQSSBvcGVuQVBJID0gb3BlbkFQSUdlbmVyYXRvci5nZW5lcmF0ZSgpOwpgYGAKYW5kIHlvdSB3aWxsIHJlY2VpdmUgT3BlbkFQSSBvYmplY3QgKGZyb20gc3dhZ2dlciBBUEkpIHdoaWNoIGNhbiBiZSBzZXJpYWxpemVkCnRvIHN0cmluZyBsaWtlIHRoaXMKYGBgamF2YQpPYmplY3RNYXBwZXIgb2JqZWN0TWFwcGVyID0gbmV3IE9iamVjdE1hcHBlcigpOwpvYmplY3RNYXBwZXIuc2V0U2VyaWFsaXphdGlvbkluY2x1c2lvbihKc29uSW5jbHVkZS5JbmNsdWRlLk5PTl9OVUxMKTsKdHJ5IHsKICAgIFN0cmluZyBnZW5lcmF0ZWQgPSBvYmplY3RNYXBwZXIud3JpdGVWYWx1ZUFzU3RyaW5nKG9wZW5BUEkpOwogICAgSlNPTkFzc2VydC5hc3NlcnRFcXVhbHMoZ2V0UmVzb3VyY2VGaWxlQXNTdHJpbmcoKSwgZ2VuZXJhdGVkLCBmYWxzZSk7Cn0gY2F0Y2ggKEpzb25Qcm9jZXNzaW5nRXhjZXB0aW9uIHwgSlNPTkV4Y2VwdGlvbiBlKSB7CiAgICBlLnByaW50U3RhY2tUcmFjZSgpOwp9CmBgYAoKIyMjIE1hdmVuIHBsdWdpbiB1c2FnZQpNYXZlbiBwbHVnaW4gd3JhcHMgYmVmb3JlIG1lbnRpb25lZCBmdW5jdGlvbmFsaXR5IGludG8gbWF2ZW4gcGx1Z2luLgoKYGBgeG1sCjxidWlsZD4KICAgIDxwbHVnaW5zPgogICAgICAgIDxwbHVnaW4+CiAgICAgICAgICAgIDxncm91cElkPmNvbS5naXRodWIuanJjb2RlemE8L2dyb3VwSWQ+CiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1vcGVuYXBpLXNjaGVtYS1nZW5lcmF0b3ItcGx1Z2luPC9hcnRpZmFjdElkPgogICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KICAgICAgICAgICAgICAgIDx0aXRsZT5UZXN0IHRpdGxlPC90aXRsZT4KICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj5UZXN0IGRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjEuMC4wLVRFU1Q8L3ZlcnNpb24+CiAgICAgICAgICAgICAgICA8bW9kZWxQYWNrYWdlcz4KICAgICAgICAgICAgICAgICAgICA8bW9kZWxQYWNrYWdlPm9yZy5zcHJpbmcub3BlbmFwaS5zY2hlbWEuZ2VuZXJhdG9yLnRlc3QubW9kZWwuKjwvbW9kZWxQYWNrYWdlPgogICAgICAgICAgICAgICAgPC9tb2RlbFBhY2thZ2VzPgogICAgICAgICAgICAgICAgPGNvbnRyb2xsZXJCYXNlUGFja2FnZXM+CiAgICAgICAgICAgICAgICAgICAgPGNvbnRyb2xsZXJCYXNlUGFja2FnZT5vcmcuc3ByaW5nLm9wZW5hcGkuc2NoZW1hLmdlbmVyYXRvci50ZXN0LmNvbnRyb2xsZXIuKjwvY29udHJvbGxlckJhc2VQYWNrYWdlPgogICAgICAgICAgICAgICAgPC9jb250cm9sbGVyQmFzZVBhY2thZ2VzPgogICAgICAgICAgICAgICAgPG91dHB1dERpcmVjdG9yeT50YXJnZXQvb3BlbmFwaTwvb3V0cHV0RGlyZWN0b3J5PgogICAgICAgICAgICAgICAgPHNjaGVtYUZpZWxkSW50ZXJjZXB0b3JzPgogICAgICAgICAgICAgICAgICAgIDxzY2hlbWFGaWVsZEludGVyY2VwdG9yPmNvbS5naXRodWIuanJjb2RlemEuc2NoZW1hLmdlbmVyYXRvci5wbHVnaW4uaW50ZXJjZXB0b3IuVGVzdFNjaGVtYUZpZWxkSW50ZXJjZXB0b3I8L3NjaGVtYUZpZWxkSW50ZXJjZXB0b3I+CiAgICAgICAgICAgICAgICA8L3NjaGVtYUZpZWxkSW50ZXJjZXB0b3JzPgogICAgICAgICAgICAgICAgPG9wZXJhdGlvbkludGVyY2VwdG9ycz4KICAgICAgICAgICAgICAgICAgICA8b3BlcmF0aW9uSW50ZXJjZXB0b3I+Y29tLmdpdGh1Yi5qcmNvZGV6YS5zY2hlbWEuZ2VuZXJhdG9yLnBsdWdpbi5pbnRlcmNlcHRvci5UZXN0T3BlcmF0aW9uSW50ZXJjZXB0b3I8L29wZXJhdGlvbkludGVyY2VwdG9yPgogICAgICAgICAgICAgICAgPC9vcGVyYXRpb25JbnRlcmNlcHRvcnM+CiAgICAgICAgICAgICAgICA8Z2VuZXJhdGVFeGFtcGxlcz50cnVlPC9nZW5lcmF0ZUV4YW1wbGVzPgogICAgICAgICAgICAgICAgPG9wZW5BcGlFeGFtcGxlc1Jlc29sdmVyPmNvbS5naXRodWIuanJjb2RlemEuc2NoZW1hLmdlbmVyYXRvci5wbHVnaW4uZXhhbXBsZS5UZXN0RXhhbXBsZVJlc29sdmVyPC9vcGVuQXBpRXhhbXBsZXNSZXNvbHZlcj4KICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgogICAgICAgIDwvcGx1Z2luPgogICAgPC9wbHVnaW5zPgo8L2J1aWxkPgpgYGAKCllvdSBjYW4gc2VlIHRoYXQgdGl0bGUsIGRlc2NyaXB0aW9uIGFuZCB2ZXJzaW9uIGFyZSB0aGUgT3BlbkFQSSBpbmZvIHBhcmFtZXRlcnMuClRoZW4geW91IGhhdmUgdG8gZGVmaW5lIGFsc28gbW9kZWxQYWNrYWdlcyBhbmQgY29udHJvbGxlclBhY2thZ2VzLiBBZGRpdGlvbmFsbHkKeW91IHNob3VsZCBkZWZpbmUgYWxzbyBvdXRwdXREaXJlY3RvcnksIGluIG91ciBjYXNlIHRhcmdldC9vcGVuYXBpIHdpbGwgYmUgdGhlIHRhcmdldCBmb2xkZXIKd2hlcmUgdGhlIHN3YWdnZXIuanNvbiB3aWxsIGJlIHNhdmVkLgoKRnJvbSAxLjIuMCB2ZXJzaW9uIGl0IGlzIGFsc28gcG9zc2libGUgdG8gZGVmaW5lIGFsbCBpbnRlcmNlcHRvcnMgYWxzbyBpbiBwbHVnaW4uIEFkZGl0aW9uYWxseSB0aGVyZQppcyBhbHNvIG9wdGlvbiB0byB0dXJuIG9uL29mZiBnZW5lcmF0ZUV4YW1wbGVzIGFuZCBvZiBjb3Vyc2Ugc3BlY2lmeSBvcGVuQXBpRXhhbXBsZXNSZXNvbHZlci4KCiMjIEdlbmVyYXRlIGNsaWVudCBmcm9tIHNwZWMKCiMjIyBSdW50aW1lIHVzYWdlCkluY2x1ZGUgZGVwZW5kZW5jeQoKYGBgamF2YQo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPmNvbS5naXRodWIuanJjb2RlemE8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5zcHJpbmctb3BlbmFwaS1jbGllbnQtZ2VuZXJhdG9yPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+MS40LjY8L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgCgpVc2UgZ2VuZXJhdG9yIGluIGNvZGUKCmBgYGphdmEKbmV3IE9wZW5BcGlDbGllbnRHZW5lcmF0b3IoKS5nZW5lcmF0ZUNsaWVudCgKCQkJCSJ0YXJnZXQucGFja2FnZSIsCgkJCQkicGF0aFRvT3BlbkFwaTNTcGVjIiwKCQkJCSJ0YXJnZXRGb2xkZXIiLCAvLyBlLmcuIC90YXJnZXQvZ2VuZXJhdGVkU291cmNlcy9vYXMKCQkJCXRydWUpOyAvLyBzaG91bGQgZ2VuZXJhdGUgaW50ZXJmYWNlCmBgYAoKIyMjIE1hdmVuIHBsdWdpbiB1c2FnZQoKMS4gSW5jbHVkZSBkZXBlbmRlbmN5CmBgYGphdmEKPGRlcGVuZGVuY3k+CiAgICA8Z3JvdXBJZD5jb20uZ2l0aHViLmpyY29kZXphPC9ncm91cElkPgogICAgPGFydGlmYWN0SWQ+c3ByaW5nLW9wZW5hcGktY2xpZW50LWdlbmVyYXRvci1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICA8dmVyc2lvbj4xLjQuNjwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKCjIuIEFkZCBwbHVnaW4gdG8gbWF2ZW4gcGx1Z2lucyBzZWN0aW9uCmBgYHhtbAo8cGx1Z2luPgogICAgPGdyb3VwSWQ+Y29tLmdpdGh1Yi5qcmNvZGV6YTwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPnNwcmluZy1vcGVuYXBpLWNsaWVudC1nZW5lcmF0b3ItcGx1Z2luPC9hcnRpZmFjdElkPgogICAgPGV4ZWN1dGlvbnM+CiAgICAgICAgPGV4ZWN1dGlvbj4KICAgICAgICAgICAgPGdvYWxzPgogICAgICAgICAgICAgICAgPGdvYWw+Z2VuZXJhdGVDbGllbnRGcm9tT3BlbkFwaTwvZ29hbD4KICAgICAgICAgICAgPC9nb2Fscz4KICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CiAgICAgICAgICAgICAgICA8b3V0cHV0UGFja2FnZT50ZXN0LnBhY2thZ2U8L291dHB1dFBhY2thZ2U+CiAgICAgICAgICAgICAgICA8b3V0cHV0UGF0aD50YXJnZXQvZ2VuZXJhdGVkLXNvdXJjZXM8L291dHB1dFBhdGg+CiAgICAgICAgICAgICAgICA8c2NoZW1hUGF0aD5zcmMvbWFpbi9yZXNvdXJjZXMvb2FzMy5qc29uPC9zY2hlbWFQYXRoPgogICAgICAgICAgICAgICAgPGdlbmVyYXRlUmVzb3VyY2VJbnRlcmZhY2U+dHJ1ZTwvZ2VuZXJhdGVSZXNvdXJjZUludGVyZmFjZT4KICAgICAgICAgICAgICAgIDxnZW5lcmF0ZURpc2NyaW1pbmF0b3JQcm9wZXJ0eT50cnVlPC9nZW5lcmF0ZURpc2NyaW1pbmF0b3JQcm9wZXJ0eT4KICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgogICAgICAgIDwvZXhlY3V0aW9uPgogICAgPC9leGVjdXRpb25zPgo8L3BsdWdpbj4KYGBgCioqZ2VuZXJhdGVSZXNvdXJjZUludGVyZmFjZSoqIG9wdGlvbiBhbGxvd3MgeW91IHRvIHR1cm4gb24vb2ZmIGdlbmVyYXRpb24gb2YgaW50ZXJmYWNlCndpdGggbWV0aG9kcyB0aGF0IHJlcHJlc2VudCBvcGVyYXRpb25zIG9mIHRoZSBBUEkuCgoqKmdlbmVyYXRlRGlzY3JpbWluYXRvclByb3BlcnR5KiogYWxsb3dzIHlvdSB0byB0dXJuIG9uL29mZiBmdW5jdGlvbmFsaXR5IHdoZXJlCnBsdWdpbiBnZW5lcmF0ZXMgdGhlIGRpc2NyaW1pbmF0b3IgcHJvcGVydHkgZXhwbGljaXRseSB0byBjbGFzcyAoc2V0dGluZyBpdCB2aXNpYmxlPXRydWUgaW4gamFja3NvbikuClRoaXMgaXMgaGFuZHkgd2hlbiB5b3UgbmVlZCB0byBzZWUgdGhlIGRpc2NyaW1pbmF0b3IgcHJvcGVydHkgaW5zaWRlIHRoZSBjbGFzcwphbmQgYmVpbmcgYWJsZSB0byBhY2Nlc3MgaXQgdXNpbmcgc2V0dGVyIG9yIGdldHRlci4gCgojIyBDb250cmlidXRpb25zClB1bGwgcmVxdWVzdHMgYXJlIHdlbGNvbWUuIElmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbGxhYm9yYXRlIG1vcmUgZmVlbCBmcmVlIHRvIGNvbnRhY3QKbWUgb24gcmVtZW5lYy5qYWt1YkBnbWFpbC5jb20gLgoKIyMgTGljZW5zZQpMaWNlbnNlIGZvciB0aGlzIHRvb2wgaXMgR05VIEdQTCBWMy4K readmeEtag: '"76b9a39260eb7d089c5fffd6deb2e95d164440cf"' readmeLastModified: Tue, 23 Jun 2020 10:13:33 GMT repositoryId: 199309560 description: Spring Boot OpenAPI generator, container and UI. created: '2019-07-28T16:13:05Z' updated: '2025-12-07T19:24:59Z' language: Java archived: false stars: 58 watchers: 8 forks: 21 owner: jrcodeza logo: https://avatars.githubusercontent.com/u/25500422?v=4 license: MIT repoEtag: '"2117ce7ce165b372ceace4d842357b7087014fa8edf921af82a94b3963792588"' repoLastModified: Sun, 07 Dec 2025 19:24:59 GMT foundInMaster: true id: e66e43593ee243e46c820555721612a7 - source: https://openapi.tools/ name: - oas - oas-normalize language: - JavaScript - TypeScript link: https://openap.is repository: https://github.com/readmeio/oas source_description: - Comprehensive tooling for working with OpenAPI definitions - Comprehensive tooling for working with OpenAPI definitions. v2: true v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9ucG0uaW0vb2FzIj4KICAgIDxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcmVhZG1laW8vb2FzL21haW4vLmdpdGh1Yi9oZXJvLnBuZyIgYWx0PSJvYXMiIC8+CiAgPC9hPgo8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICBDb21wcmVoZW5zaXZlIHRvb2xpbmcgZm9yIHdvcmtpbmcgd2l0aCBPcGVuQVBJIGRlZmluaXRpb25zCjwvcD4KCjxwIGFsaWduPSJjZW50ZXIiPgogIDxhIGhyZWY9Imh0dHBzOi8vbnBtLmltL29hcyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3Yvb2FzP3N0eWxlPWZvci10aGUtYmFkZ2UiIGFsdD0iTlBNIFZlcnNpb24iIC8+PC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vbnBtLmltL29hcyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbm9kZS92L29hcz9zdHlsZT1mb3ItdGhlLWJhZGdlIiBhbHQ9Ik5vZGUgVmVyc2lvbiIgLz48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9ucG0uaW0vb2FzIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9vYXM/c3R5bGU9Zm9yLXRoZS1iYWRnZSIgYWx0PSJNSVQgTGljZW5zZSIgLz48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JlYWRtZWlvL29hcyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL3JlYWRtZWlvL29hcy9jaS55bWw/YnJhbmNoPW1haW4mc3R5bGU9Zm9yLXRoZS1iYWRnZSIgYWx0PSJCdWlsZCBzdGF0dXMiIC8+PC9hPgo8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL3JlYWRtZS5jb20iPjxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcmVhZG1laW8vLmdpdGh1Yi9tYWluL29zcy1iYWRnZS5zdmciIC8+PC9hPgo8L3A+Cgpgb2FzYCBpcyB0aGUgbGlicmFyeSB0aGF0IHdlJ3ZlIGJ1aWx0IGF0IFtSZWFkTWVdKGh0dHBzOi8vcmVhZG1lLmNvbSkgZm9yIHBvd2VyaW5nIGV2ZXJ5dGhpbmcgd2UgZG8gcmVsYXRlZCB0byBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLyk7IGZyb20gb3VyIFtSZWZlcmVuY2UgR3VpZGVzXShodHRwczovL3JlYWRtZS5jb20vZG9jdW1lbnRhdGlvbiksIHRvIG91ciBbTWV0cmljcyBwcm9kdWN0XShodHRwczovL3JlYWRtZS5jb20vbWV0cmljcyksIG9yIG90aGVyIGluLWhvdXNlIHRvb2xpbmcgbGlrZSBbY29kZSBnZW5lcmF0aW9uXShodHRwczovL25wbS5pbS9AcmVhZG1lL29hcy10by1zbmlwcGV0KSwgW3JlcXVlc3QgZXhlY3V0aW9uXShodHRwczovL25wbS5pbS9AcmVhZG1lL29hcy10by1oYXIpLCBhbmQgW1NESyBjb2RlIGdlbmVyYXRpb25dKGh0dHBzOi8vYXBpLnJlYWRtZS5kZXYvKS4KCi0tLQoKLSBbSW5zdGFsbGF0aW9uXSgjaW5zdGFsbGF0aW9uKQotIFtVc2FnZV0oI3VzYWdlKQogIC0gW09wZW5BUEkgZGVmaW5pdGlvbnNdKCNvcGVuYXBpLWRlZmluaXRpb25zKQogICAgLSBbR2VuZXJhbF0oI2dlbmVyYWwpCiAgICAtIFtPcGVyYXRpb25zXSgjb3BlcmF0aW9ucykKICAgIC0gW1NlcnZlcnNdKCNzZXJ2ZXJzKQogICAgLSBbU3BlY2lmaWNhdGlvbiBFeHRlbnNpb25zXSgjc3BlY2lmaWNhdGlvbi1leHRlbnNpb25zKQogICAgLSBbVXNlciBBdXRoZW50aWNhdGlvbl0oI3VzZXItYXV0aGVudGljYXRpb24pCiAgLSBbT3BlcmF0aW9uc10oI29wZXJhdGlvbnMtMSkKICAgIC0gW0dlbmVyYWxdKCNnZW5lcmFsLTEpCiAgICAtIFtDYWxsYmFja3NdKCNjYWxsYmFja3MpCiAgICAtIFtSZXF1ZXN0IEJvZHldKCNyZXF1ZXN0LWJvZHkpCiAgICAtIFtSZXNwb25zZXNdKCNyZXNwb25zZXMpCiAgICAtIFtTZWN1cml0eV0oI3NlY3VyaXR5KQogICAgLSBbU3BlY2lmaWNhdGlvbiBFeHRlbnNpb25zXSgjc3BlY2lmaWNhdGlvbi1leHRlbnNpb25zLTEpCiAgLSBbQ2FsbGJhY2tzXSgjY2FsbGJhY2tzKQogICAgLSBbR2VuZXJhbF0oI2dlbmVyYWwtMikKICAtIFtXZWJob29rc10oI3dlYmhvb2tzKQotIFtGQVFdKCNmYXEpCgojIyBJbnN0YWxsYXRpb24KCmBgYApucG0gaW5zdGFsbCBvYXMKYGBgCgojIyBVc2FnZQoKPiBbIU5PVEVdCj4gSWYgeW91IG5lZWQgdG8gdXNlIHRoaXMgbGlicmFyeSB3aXRoaW4gYSBicm93c2VyIHlvdSdsbCBsaWtlbHkgbmVlZCB0byB1c2UgYSBidW5kbGVyIGxpa2UgW1dlYnBhY2tdKGh0dHBzOi8vd2VicGFjay5qcy5vcmcvKSBvciBbUm9sbHVwXShodHRwczovL3JvbGx1cGpzLm9yZy8pLgoKYG9hc2Agb2ZmZXJzIGEgbWFpbiBgT2FzYCBjbGFzcywgd2hpY2ggd2lsbCBiZSB5b3VyIG1haW4gZW50cnlwb2ludCBmb3IgdXNpbmcgdGhlIGxpYnJhcnkuCgpgYGBqcwppbXBvcnQgT2FzIGZyb20gJ29hcyc7CmltcG9ydCBwZXRzdG9yZVNwZWMgZnJvbSAnQHJlYWRtZS9vYXMtZXhhbXBsZXMvMy4wL2pzb24vcGV0c3RvcmUuanNvbicgd2l0aCB7IHR5cGU6ICdqc29uJyB9OwoKY29uc3QgcGV0c3RvcmUgPSBuZXcgT2FzKHBldHN0b3JlU3BlYyk7CmBgYAoKSGVyZSB0aGUgYE9hc2AgY29uc3RydWN0b3IgdGFrZXMgYSBKU09OIEFQSSBkZWZpbml0aW9uIChgcGV0c3RvcmVTcGVjYCkuIEFsbCBBUEkgZGVmaW5pdGlvbnMgeW91IGZlZWQgaXQgbXVzdCBiZSBKU09OIGFuZCBtdXN0IGJlIGFuIE9wZW5BUEkgZGVmaW5pdGlvbi4gSWYgeW91IGhhdmUgYSBZQU1MIG9yIFN3YWdnZXIgZGVmaW5pdGlvbiB5b3Ugd2lsbCBuZWVkIHRvIGNvbnZlcnQgaXQgKG91ciBbb2FzLW5vcm1hbGl6ZV0oaHR0cHM6Ly9ucG0uaW0vb2FzLW5vcm1hbGl6ZSkgbGlicmFyeSBjYW4gZG8gdGhpcyBmb3IgeW91KS4gQW5kIGlmIHlvdSdyZSBpbiBhIENKUyBvciBub24tYGltcG9ydGAgZW52aXJvbm1lbnQgeW91IGNhbiBwdWxsIHRoZSBsaWJyYXJ5IGluIHdpdGggYHJlcXVpcmUoJ29hcycpLmRlZmF1bHRgLgoKRnJvbSBoZXJlLCB0aGUgZm9sbG93aW5nIEFQSXMgYXJlIGF0IHlvdXIgZGlzcG9zYWwuCgojIyMgT3BlbkFQSSBkZWZpbml0aW9ucwoKQmVjYXVzZSB0aGlzIGxpYnJhcnkgaGFzIGZ1bGwgVHlwZVNjcmlwdCB0eXBlcyBhbmQgZG9jYmxvY2tzIHRoaXMgUkVBRE1FIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBmdWxsIGRvY3VtZW50YXRpb24gc28gY29uc3VsdCB0aGUgaW5kaXZpZHVhbCBtZXRob2QgZG9jYmxvY2tzIGlmIHlvdSBuZWVkIG1vcmUgaW5mb3JtYXRpb24gb24gYSBzcGVjaWZpYyBtZXRob2QuCgojIyMjIEdlbmVyYWwKCjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgp8IE1ldGhvZCB8IERlc2NyaXB0aW9uIHwKfCA6LS0tIHwgOi0tLSB8CnwgYC5kZXJlZmVyZW5jZSgpYCB8IERlcmVmZXJlbmNlIHRoZSBjdXJyZW50IE9wZW5BUEkgZGVmaW5pdGlvbi4gTm90ZSB0aGF0IHRoaXMgd2lsbCBpZ25vcmUgY2lyY3VsYXIgcmVmZXJlbmNlcy4gfAp8IGAuZ2V0Q2lyY3VsYXJSZWZlcmVuY2VzKClgIHwgUmV0cmlldmUgYW4gYXJyYXkgb2YgYW55IGNpcmN1bGFyIGAkcmVmYCBwb2ludGVyIHRoYXQgbWF5IGV4aXN0IHd0aGluIHRoZSBPcGVuQVBJIGRlZmluaXRpb24uIE5vdGUgdGhhdCB0aGlzIHJlcXVpcmVzIGAuZGVyZWZlcmVuY2UoKWAgdG8gYmUgY2FsbGVkIGZpcnN0LiB8CnwgYC5nZXREZWZpbml0aW9uKClgIHwgUmV0cmlldmUgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbiB0aGF0IHdhcyBmZWQgaW50byB0aGUgYE9hc2AgY29uc3RydWN0b3IuIHwKfCBgLmdldFRhZ3MoKWAgfCBSZXRyaWV2ZSBhbiBhcnJheSBvZiBhbGwgdGFncyB0aGF0IGV4aXN0IHdpdGhpbiB0aGUgQVBJIGRlZmluaXRpb24gYW5kIGFyZSBzZXQgb24gb3BlcmF0aW9ucy4gfAp8IGAuZ2V0UGF0aHMoKWAgfCBSZXRyaWV2ZSBldmVyeSBvcGVyYXRpb24gdGhhdCBleGlzdHMgd2l0aGluIHRoZSBBUEkgZGVmaW5pdGlvbi4gVGhpcyByZXR1cm5zIGFuIGFycmF5IG9mIGluc3RhbmNlcyBvZiB0aGUgYE9wZXJhdGlvbmAgY2xhc3MuIHwKfCBgLmdldFZlcnNpb24oKWAgfCBSZXRyaWV2ZSB0aGUgT3BlbkFQSSB2ZXJzaW9uIHRoYXQgdGhpcyBBUEkgZGVmaW5pdGlvbiBpcyB0YXJnZXRlZCBmb3IuIHwKfCBgLmdldFdlYmhvb2tzKClgIHwgUmV0cmlldmUgZXZlcnkgd2ViaG9vayBvcGVyYXRpb24gdGhhdCBleGlzdHMgd2l0aGluIHRoZSBBUEkgZGVmaW5pdGlvbi4gVGhpcyByZXR1cm5zIGFuIGFycmF5IG9mIGluc3RhbmNlcyBvZiB0aGUgYFdlYmhvb2tgIGNsYXNzLiB8CnwgYCNpbml0KClgIHwgQW4gYWx0ZXJuYXRpdmUgZm9yIGBuZXcgT2FzKClgIHRoYXQgeW91IGNhbiB1c2UgaWYgdGhlIHR5cGluZyBvbiB0aGUgYE9hc2AgY29uc3RydWN0b3IgZ2l2ZXMgeW91IHRyb3VibGUuIFR5cGluZyBPcGVuQVBJIGRlZmluaXRpb25zIGlzIGhhcmQhIHwKPCEtLSBwcmV0dGllci1pZ25vcmUtZW5kIC0tPgoKIyMjIyBPcGVyYXRpb25zCgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KfCBNZXRob2QgfCBEZXNjcmlwdGlvbiB8CnwgOi0tLSB8IDotLS0gfAp8IGAuZmluZE9wZXJhdGlvbigpYCB8IERpc2NvdmVyIGFuIG9wZXJhdGlvbiB3aXRoIHRoZSBjdXJyZW50IE9wZW5BUEkgZGVmaW5pdGlvbiB0aGF0IG1hdGNoZXMgYSBnaXZlbiBVUkwgYW5kIEhUVFAgbWV0aG9kLiB8CnwgYC5maW5kT3BlcmF0aW9uV2l0aG91dE1ldGhvZCgpYCB8IExpa2UgYC5maW5kT3BlcmF0aW9uKClgIGJ1dCB3aXRob3V0IHN1cHBseWluZyBhbiBIVFRQIG1ldGhvZC4gfAp8IGAuZ2V0T3BlcmF0aW9uKClgIHwgU2FtZSBhcyBgLmZpbmRPcGVyYXRpb24oKWAgYnV0IHRoaXMgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiB0aGUgYE9wZXJhdGlvbmAgY2xhc3MuIHwKfCBgLmdldE9wZXJhdGlvbkJ5SWQoKWAgfCBSZXRyaWV2ZSBhbiBvcGVyYXRpb24gaW4gYW4gT3BlbkFQSSBkZWZpbml0aW9uIGJ5IGFuIGBvcGVyYXRpb25JZGAuIHwKfCBgLm9wZXJhdGlvbigpYCB8IFJldHJpZXZlIGFuIGluc3RhbmNlIG9mIHRoZSBgT3BlcmF0aW9uYCBvciBgV2ViaG9va2AgY2xhc3NlcyBmb3IgYSBnaXZlbiBwYXRoIGFuZCBIVFRQIG1ldGhvZC4gfAo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+CgojIyMjIFNlcnZlcnMKCjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgp8IE1ldGhvZCB8IERlc2NyaXB0aW9uIHwKfCA6LS0tIHwgOi0tLSB8CnwgYC5kZWZhdWx0VmFyaWFibGVzKClgIHwgUmV0cmlldmUgdGhlIGRlZmF1bHQgc2VydmVyIHZhcmlhYmxlcyBmb3IgYSBzcGVjaWZpYyBzZXJ2ZXIgVVJMLCB3aGlsZSBhbHNvIHBvdGVudGlhbGx5IGZhY3RvcmluZyBpbiB1c2VyIGRhdGEuIFlvdSBjYW4gc3BlY2lmeSB1c2VyIHZhcmlhYmxlIGRhdGEgdG8gdGhlIGBPYXNgIGNvbnN0cnVjdG9yLiBDaGVjayBvdXQgW1VzaW5nIFZhcmlhYmxlcyBpbiBEb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MucmVhZG1lLmNvbS9kb2NzL3VzZXItZGF0YS1vcHRpb25zI3VzaW5nLXZhcmlhYmxlcy1pbi1kb2N1bWVudGF0aW9uKSBmb3Igc29tZSBiYWNrZ3JvdW5kIG9uIGhvdyB3ZSB1c2UgdGhpcy4gfAp8IGAucmVwbGFjZVVybCgpYCB8IFJlcGxhY2UgYSBnaXZlbiB0ZW1wbGF0ZWQgc2VydmVyIFVSTCB3aXRoIHN1cHBsaWVkIHNlcnZlciB2YXJpYWJsZSBkYXRhLiB8CnwgYC5zcGxpdFVybCgpYCB8IENodW5rIG91dCBhIHNwZWNpZmljIHNlcnZlciBVUkwgaW50byBpdHMgaW5kaXZpZHVhbCBwYXJ0cy4gfAp8IGAuc3BsaXRWYXJpYWJsZXNgIHwgQ2h1bmsgb3V0IGEgZ2l2ZW4gVVJMIGFuZCBpZiBpdCBtYXRjaGVzIGEgc2VydmVyIFVSTCBpbiB0aGUgT3BlbkFQSSBmaWxlLCBleHRyYWN0IHRoZSBtYXRjaGVkIHNlcnZlciB2YXJpYWJsZXMgdGhhdCBhcmUgcHJlc2VudCBpbiB0aGUgVVJMLiB8CnwgYC51cmwoKWAgfCBSZXRyaWV2ZSBhIGZ1bGx5IGNvbXBvc2VkIHNlcnZlciBVUkwuIFlvdSBjYW4gb3B0aW9uYWxseSBzZWxlY3Qgd2hpY2ggb2YgdGhlIGRlZmluZWQgc2VydmVyIFVSTHMgdG8gdXNlIGFzIHdlbGwgYXMgc3BlY2lmeSBzZXJ2ZXIgdmFyaWFibGUgaW5mb3JtYXRpb24uIHwKfCBgLnZhcmlhYmxlcygpYCB8IFJldHJpZXZlIGFsbCBzZXJ2ZXIgdmFyaWFibGVzIHRoYXQgYSBzcGVjaWZpYyBzZXJ2ZXIgVVJMIGluIHRoZSBkZWZpbml0aW9uIGhhcy4gfAo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+CgojIyMjIFNwZWNpZmljYXRpb24gRXh0ZW5zaW9ucwoKPiBbIU5PVEVdCj4gT3B0aW9uYWxseSB5b3UgY2FuIGFsc28gc3VwcGx5IGFuIGluc3RhbmNlIG9mIHRoZSBgT3BlcmF0aW9uYCB0byBib3RoIG9mIHRoZXNlIG1ldGhvZHMgdG8gc2VlIG9yIHJldHJpZXZlIGEgZ2l2ZW4gZXh0ZW5zaW9uIGlmIGl0IGV4aXN0cyBvbiB0aGF0IG9wZXJhdGlvbiBidXQgaWYgaXQgZXhpc3RzIGluIGJvdGggdGhlIG9wZXJhdGlvbiBhbmQgYXQgdGhlIHJvb3QgdGhlIG9wZXJhdGlvbi1sZXZlbCBleHRlbnNpb24gd2lsbCBiZSBwcmlvcml0aXplZC4KCjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgp8IE1ldGhvZCB8IERlc2NyaXB0aW9uIHwKfCA6LS0tIHwgOi0tLSB8CnwgYC5nZXRFeHRlbnNpb24oKWAgfCBSZXRyaWV2ZSBhIGdpdmVuIFtzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kI3NwZWNpZmljYXRpb24tZXh0ZW5zaW9ucykgaWYgaXQgZXhpc3RzIGF0IHRoZSByb290IG9mIHRoZSBBUEkgZGVmaW5pdGlvbi4gIHwKfCBgLmhhc0V4dGVuc2lvbigpYCB8IERldGVybWluZSBpZiBhIGdpdmVuIFtzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kI3NwZWNpZmljYXRpb24tZXh0ZW5zaW9ucykgZXhpc3RzIG9uIHRoZSByb290IG9mIHRoZSBBUEkgZGVmaW5pdGlvbi4gfAp8IGAudmFsaWRhdGVFeHRlbnNpb24oKWAgfCBEZXRlcm1pbmUgaWYgYSBnaXZlbiBbUmVhZE1lIGN1c3RvbSBPcGVuQVBJIGV4dGVuc2lvbl0oaHR0cHM6Ly9kb2NzLnJlYWRtZS5jb20vZG9jcy9vcGVuYXBpLWV4dGVuc2lvbnMpIGlzIHZhbGlkIG9yIG5vdC4gfAp8IGAudmFsaWRhdGVFeHRlbnNpb25zKClgIHwgVmFsaWRhdGUgYWxsIG9mIG91ciBbUmVhZE1lIGN1c3RvbSBPcGVuQVBJIGV4dGVuc2lvbl0oaHR0cHM6Ly9kb2NzLnJlYWRtZS5jb20vZG9jcy9vcGVuYXBpLWV4dGVuc2lvbnMpLCB0aHJvd2luZyBleGNlcHRpb25zIHdoZW4gbmVjZXNzYXJ5LiB8CjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4KCkluZm9ybWF0aW9uIGFib3V0IFJlYWRNZSdzIHN1cHBvcnRlZCBPcGVuQVBJIGV4dGVuc2lvbnMgYXQgaHR0cHM6Ly9kb2NzLnJlYWRtZS5jb20vZG9jcy9vcGVuYXBpLWV4dGVuc2lvbnMuCgojIyMjIFVzZXIgQXV0aGVudGljYXRpb24KCjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgp8IE1ldGhvZCB8IERlc2NyaXB0aW9uIHwKfCA6LS0tIHwgOi0tLSB8CnwgYC5nZXRBdXRoKClgIHwgUmV0cmlldmUgdGhlIGFwcHJvcHJpYXRlIEFQSSBrZXlzIGZvciB0aGUgY3VycmVudCBPcGVuQVBJIGRlZmluaXRpb24gZnJvbSBhbiBvYmplY3Qgb2YgdXNlciBkYXRhLiBDaGVjayBvdXQgW1VzaW5nIFZhcmlhYmxlcyBpbiBEb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MucmVhZG1lLmNvbS9kb2NzL3VzZXItZGF0YS1vcHRpb25zI3VzaW5nLXZhcmlhYmxlcy1pbi1kb2N1bWVudGF0aW9uKSBmb3Igc29tZSBiYWNrZ3JvdW5kIG9uIGhvdyB3ZSB1c2UgdGhpcy4gfAo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+CgojIyMgT3BlcmF0aW9ucwoKRm9yIHlvdXIgY29udmVuaWVuY2UsIHRoZSBlbnRyeXBvaW50IGludG8gdGhlIGBPcGVyYXRpb25gIGNsYXNzIHNob3VsZCBnZW5lcmFsbHkgYWx3YXlzIGJlIHRocm91Z2ggYC5vcGVyYXRpb24oKWAuIEZvciBleGFtcGxlOgoKYGBganMKaW1wb3J0IE9hcyBmcm9tICdvYXMnOwppbXBvcnQgcGV0c3RvcmVTcGVjIGZyb20gJ0ByZWFkbWUvb2FzLWV4YW1wbGVzLzMuMC9qc29uL3BldHN0b3JlLmpzb24nIHdpdGggeyB0eXBlOiAnanNvbicgfTsKCmNvbnN0IHBldHN0b3JlID0gbmV3IE9hcyhwZXRzdG9yZVNwZWMpOwpjb25zdCBvcGVyYXRpb24gPSBwZXRzdG9yZS5vcGVyYXRpb24oJy9wZXQnLCAncG9zdCcpOwpgYGAKCiMjIyMgR2VuZXJhbAoKPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CnwgTWV0aG9kIHwgRGVzY3JpcHRpb24gfAp8IDotLS0gfCA6LS0tIHwKfCBgLmdldENvbnRlbnRUeXBlKClgIHwgUmV0cmlldmUgdGhlIHByaW1hcnkgcmVxdWVzdCBib2R5IGNvbnRlbnQgdHlwZS4gSWYgbXVsdGlwbGUgYXJlIHByZXNlbnQsIHByZWZlciB3aGljaGV2ZXIgaXMgSlNPTi1jb21wbGlhbnQuIHwKfCBgLmdldERlc2NyaXB0aW9uKClgIHwgUmV0cmlldmUgdGhlIGBkZXNjcmlwdGlvbmAgdGhhdCdzIHNldCBvbiB0aGlzIG9wZXJhdGlvbi4gVGhpcyBzdXBwb3J0cyBjb21tb24gZGVzY3JpcHRpb25zIHRoYXQgbWF5IGJlIHNldCBhdCB0aGUgW3BhdGggaXRlbSBsZXZlbF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kI3BhdGgtaXRlbS1vYmplY3QpLiB8CnwgYC5nZXRPcGVyYXRpb25JZCgpYCB8IFJldHJpZXZlIHRoZSBgb3BlcmF0aW9uSWRgIHRoYXQncyBwcmVzZW50IG9uIHRoZSBvcGVyYXRpb24sIGFuZCBpZiBvbmUgaXMgbm90IHByZXNlbnQgb25lIHdpbGwgYmUgY3JlYXRlZCBiYXNlZCBvZmYgdGhlIG1ldGhvZCArIHBhdGggYW5kIHJldHVybmVkIGluc3RlYWQuIHwKfCBgLmhhc09wZXJhdGlvbklkKClgIHwgRGV0ZXJtaW5lIGlmIHRoZSBvcGVyYXRpb24gaGFzIGFuIGBvcGVyYXRpb25JZGAgcHJlc2VudC4gfAp8IGAuaXNEZXByZWNhdGVkKClgIHwgRGV0ZXJtaW5lIGlmIHRoaXMgb3BlcmF0aW9uIGlzIG1hcmtlZCBhcyBkZXByZWNhdGVkLiB8CnwgYC5pc0Zvcm1VcmxFbmNvZGVkKClgIHwgRGV0ZXJtaW5lIGlmIHRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIGl0cyBwYXlsb2FkIHRvIGJlIGRlbGl2ZXJlZCBhcyBgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYC4gfAp8IGAuaXNKc29uKClgIHwgRGV0ZXJtaW5lIGlmIHRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIGl0cyBwYXlsb2FkIHRvIGJlIGRlbGl2ZXJlZCBhcyBKU09OLiB8CnwgYC5pc011bHRpcGFydCgpYCB8IERldGVybWluZSBpZiB0aGlzIG9wZXJhdGlvbiByZXF1aXJlcyBpdHMgZGF0YSB0byBiZSBzZW50IGFzIGEgbXVsdGlwYXJ0IHBheWxvYWQuIHwKfCBgLmlzWG1sKClgIHwgRGV0ZXJtaW5lIGlmIHRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIGl0cyBkYXRhIHRvIGJlIHNlbnQgYXMgWE1MLiB8CnwgYC5pc1dlYmhvb2soKWAgfCBEZXRlcm1pbmUgaWYgdGhpcyBvcGVyYXRpb24gaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGBXZWJob29rYCBjbGFzcy4gfAp8IGAuZ2V0RXhhbXBsZUdyb3VwcygpYCB8IFJldHVybnMgYW4gb2JqZWN0IHdpdGggZ3JvdXBzIG9mIGFsbCBleGFtcGxlIGRlZmluaXRpb25zIChib2R5L2hlYWRlci9xdWVyeS9wYXRoL3Jlc3BvbnNlL2V0Yy4pLiBUaGUgZXhhbXBsZXMgYXJlIGdyb3VwZWQgYnkgdGhlaXIga2V5IHdoZW4gZGVmaW5lZCB2aWEgdGhlIGBleGFtcGxlc2AgbWFwLiB8CnwgYC5nZXRIZWFkZXJzKClgIHwgUmV0cmlldmUgYWxsIGhlYWRlcnMgdGhhdCBjYW4gZWl0aGVyIGJlIHNlbnQgZm9yIG9yIHJldHVybmVkIGZyb20gdGhpcyBvcGVyYXRpb24uIFRoaXMgaW5jbHVkZXMgaGVhZGVyLWJhc2VkIGF1dGhlbnRpY2F0aW9uIHNjaGVtZXMsIGNvbW1vbiBoZWFkZXIgcGFyYW1ldGVycywgYW5kIHJlcXVlc3QgYm9keSBhbmQgcmVzcG9uc2UgY29udGVudCB0eXBlcy4gfAp8IGAuZ2V0U3VtbWFyeSgpYCB8IFJldHJpZXZlIHRoZSBgc3VtbWFyeWAgdGhhdCdzIHNldCBvbiB0aGlzIG9wZXJhdGlvbi4gVGhpcyBzdXBwb3J0cyBjb21tb24gc3VtbWFyaWVzIHRoYXQgbWF5IGJlIHNldCBhdCB0aGUgW3BhdGggaXRlbSBsZXZlbF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kI3BhdGgtaXRlbS1vYmplY3QpLiB8CnwgYC5nZXRUYWdzKClgIHwgUmV0cmlldmUgYWxsIHRhZ3MsIGFuZCBbdGhlaXIgbWV0YWRhdGFdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjEuMC5tZCN0YWctb2JqZWN0KSwgdGhhdCBleGlzdCBvbiB0aGlzIG9wZXJhdGlvbi4gfAo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+CgojIyMjIENhbGxiYWNrcwoKPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CnwgTWV0aG9kIHwgRGVzY3JpcHRpb24gfAp8IDotLS0gfCA6LS0tIHwKfCBgLmdldENhbGxiYWNrKClgIHwgUmV0cmlldmUgYSBzcGVjaWZpYyBjYWxsYmFjayBvbiB0aGlzIG9wZXJhdGlvbi4gVGhpcyB3aWxsIHJldHVybiBhbiBpbnN0YW5jZSBvZiB0aGUgYENhbGxiYWNrYCBjbGFzcy4gfAp8IGAuZ2V0Q2FsbGJhY2tFeGFtcGxlcygpYCB8IFJldHJpZXZlIGFuIGFycmF5IG9mIGFsbCBjYWxiYWNrIGV4YW1wbGVzIHRoYXQgdGhpcyBvcGVyYXRpb24gaGFzIGRlZmluZWQuIHwKfCBgLmdldENhbGxiYWNrcygpYCB8IFJldHJpZXZlIGFsbCBjYWxsYmFja3MgdGhhdCB0aGlzIG9wZXJhdGlvbiBoYXMuIFNpbWlsYXIgdG8gYC5nZXRQYXRocygpYCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgYE9wZXJhdGlvbmAgaW5zdGFuY2VzIHRoaXMgd2lsbCByZXR1cm4gYW4gYXJyYXkgb2YgYENhbGxiYWNrYCBpbnN0YW5jZXMuIHwKfCBgLmhhc0NhbGxiYWNrcygpYCB8IERldGVybWluZSBpZiB0aGlzIG9wZXJhdGlvbiBoYXMgYW55IGNhbGxiYWNrcyBkZWZpbmVkLiB8CjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4KCiMjIyMgUGFyYW1ldGVycwoKPiBbIU5PVEVdCj4gQWxsIHBhcmFtZXRlciBhY2Nlc3NvcnMgaGVyZSBzdXBwb3J0LCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHJldHJpZXZlIGFuZCBoYW5kbGUsIGNvbW1vbiBwYXJhbWV0ZXJzIHRoYXQgbWF5IGJlIHNldCBhdCB0aGUgW3BhdGggaXRlbSBsZXZlbF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kI3BhdGgtaXRlbS1vYmplY3QpLgoKPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CnwgTWV0aG9kIHwgRGVzY3JpcHRpb24gfAp8IDotLS0gfCA6LS0tIHwKfCBgLmdldFBhcmFtZXRlcnMoKWAgfCBSZXRyaWV2ZSBhbGwgcGFyYW1ldGVycyB0aGF0IG1heSBiZSB1c2VkIHdpdGggb24gdGhpcyBvcGVyYXRpb24uIHwKfCBgLmdldFBhcmFtZXRlcnNBc0pTT05TY2hlbWEoKWAgfCBSZXRyaWV2ZSBhbmQgY29udmVydCB0aGUgb3BlcmF0aW9ucyBwYXJhbWV0ZXJzIGludG8gYW4gYXJyYXkgb2YgSlNPTiBTY2hlbWEgc2NoZW1hcyBmb3IgZWFjaCBhdmFpbGFibGUgdHlwZSBvZiBwYXJhbWV0ZXIgYXZhaWxhYmxlIG9uIHRoZSBvcGVyYXRpb246IGBwYXRoYCwgYHF1ZXJ5YCwgYGJvZHlgLCBgY29va2llYCwgYGZvcm1EYXRhYCwgYW5kIGBoZWFkZXJgLiB8CnwgYC5oYXNQYXJhbWV0ZXJzKClgIHwgRGV0ZXJtaW5lIGlmIHRoZSBvcGVyYXRpb24gaGFzIGFueSBwYXJhbWV0ZXJzIHRvIHNlbmQuIHwKfCBgLmhhc1JlcXVpcmVkUGFyYW1ldGVycygpYCB8IERldGVybWluZSBpZiBhbnkgb2YgdGhlIHBhcmFtZXRlcnMgb24gdGhpcyBvcGVyYXRpb24gYXJlIHJlcXVpcmVkLiB8CjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4KCiMjIyMgUmVxdWVzdCBCb2R5Cgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KfCBNZXRob2QgfCBEZXNjcmlwdGlvbiB8CnwgOi0tLSB8IDotLS0gfAp8IGAuZ2V0UmVxdWVzdEJvZHkoKWAgfCBSZXRyaWV2ZSB0aGUgcmF3IHJlcXVlc3QgYm9keSBvYmplY3QgZm9yIGEgZ2l2ZW4gY29udGVudCB0eXBlLiBJZiBub25lIGlzIHNwZWNpZmllZCBpdCB3aWxsIHJldHVybiBlaXRoZXIgdGhlIGZpcnN0IHRoYXQncyBKU09OLWxpa2UsIG9yIHRoZSBmaXJzdCBkZWZpbmVkLiB8CnwgYC5nZXRSZXF1ZXN0Qm9keUV4YW1wbGVzKClgIHwgUmV0cmlldmUgYW4gYXJyYXkgb2YgYWxsIHJlcXVlc3QgYm9keSBleGFtcGxlcyB0aGF0IHRoaXMgb3BlcmF0aW9uIGhhcyBkZWZpbmVkLiB8CnwgYC5nZXRSZXF1ZXN0Qm9keU1lZGlhVHlwZXMoKWAgfCBSZXRyaWV2ZSBhIGxpc3Qgb2YgYWxsIHRoZSBtZWRpYS9jb250ZW50IHR5cGVzIHRoYXQgdGhlIG9wZXJhdGlvbiBjYW4gYWNjZXB0IGEgcmVxdWVzdCBib2R5IHBheWxvYWQgZm9yLiB8CnwgYC5oYXNSZXF1ZXN0Qm9keSgpYCB8IERldGVybWluZSBpZiB0aGlzIG9wZXJhdGlvbiBoYXMgYSByZXF1ZXN0IGJvZHkgZGVmaW5lZC4gfAp8IGAuaGFzUmVxdWlyZWRSZXF1ZXN0Qm9keSgpYCB8IERldGVybWluZSBpZiB0aGlzIG9wZXJhdGlvbiBoYXMgYSByZXF1aXJlZCByZXF1ZXN0IGJvZHkuIHwKPCEtLSBwcmV0dGllci1pZ25vcmUtZW5kIC0tPgoKIyMjIyBSZXNwb25zZXMKCjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgp8IE1ldGhvZCB8IERlc2NyaXB0aW9uIHwKfCA6LS0tIHwgOi0tLSB8CnwgYC5nZXRSZXNwb25zZUFzSlNPTlNjaGVtYSgpYCB8IFJldHJpdmUgYW5kIGNvbnZlcnQgYSByZXNwb25zZSBvbiB0aGlzIG9wZXJhdGlvbiBpbnRvIEpTT04gU2NoZW1hLiB8CnwgYC5nZXRSZXNwb25zZUJ5U3RhdHVzQ29kZSgpYCB8IFJldHJpZXZlIHRoZSByYXcgcmVzcG9uc2Ugb2JqZWN0IGZvciBhIGdpdmVuIHN0YXR1cyBjb2RlLiB8CnwgYC5nZXRSZXNwb25zZUV4YW1wbGVzKClgIHwgUmV0cmlldmUgYW4gYXJyYXkgb2YgYWxsIHJlc3BvbnNlIGV4YW1wbGVzIHRoYXQgdGhpcyBvcGVyYXRpb24gaGFzIGRlZmluZWQuIHwKfCBgLmdldFJlc3BvbnNlU3RhdHVzQ29kZXMoKWAgfCBSZXRyaWV2ZSBhbGwgc3RhdHVzIGNvZGVzIHRoYXQgdGhpcyBvcGVyYXRpb24gbWF5IHJlc3BvbmQgd2l0aC4gfAo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+CgojIyMjIFNlY3VyaXR5Cgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KfCBNZXRob2QgfCBEZXNjcmlwdGlvbiB8CnwgOi0tLSB8IDotLS0gfAp8IGAuZ2V0U2VjdXJpdHkoKWAgfCBSZXR1cm4gYWxsIHNlY3VyaXR5IHJlcXVpcmVtZW50cyB0aGF0IGFyZSBhcHBsaWNhYmxlIGZvciBlaXRoZXIgdGhpcyBvcGVyYXRpb24sIG9yIGlmIHRoZSBvcGVyYXRpb24gaGFzIG5vbmUgc3BlY2lmaWMgdG8gaXQsIHRoZW4gZm9yIHRoZSBlbnRpcmUgQVBJLiB8CnwgYC5nZXRTZWN1cml0eVdpdGhUeXBlcygpYCB8IFJldHVybiBhIGNvbGxlY3Rpb24gb2YgYWxsIHNlY3VyaXR5IHNjaGVtZXMgYXBwbGljYWJsZSB0byB0aGlzIG9wZXJhdGlvbiAodXNpbmcgYC5nZXRTZWN1cml0eSgpYCksIGdyb3VwZWQgYnkgaG93IHRoZSBzZWN1cml0eSBzaG91bGQgYmUgaGFuZGxlZCAoZWl0aGVyIEFORCBvciBPUiBhdXRoIHJlcXVpcmVtZW50cykuIHwKfCBgLnByZXBhcmVTZWN1cml0eWAgfCBSZXR1cm4gYW4gb2JqZWN0IG9mIGV2ZXJ5IHNlY3VyaXR5IHNjaGVtZSB0aGF0IF9jYW5fIGJlIHVzZWQgb24gdGhpcyBvcGVyYXRpb24sIGluZGV4ZWQgYnkgdGhlIHR5cGUgb2Ygc2VjdXJpdHkgc2NoZW1lIGl0IGlzIChlZy4gYEJhc2ljYCwgYE9BdXRoMmAsIGBBUElLZXlgLCBldGMuKS4gfAo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+CgojIyMjIFNwZWNpZmljYXRpb24gRXh0ZW5zaW9ucwoKPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CnwgTWV0aG9kIHwgRGVzY3JpcHRpb24gfAp8IDotLS0gfCA6LS0tIHwKfCBgLmhhc0V4dGVuc2lvbigpYCB8IERldGVybWluZSBpZiBhIGdpdmVuIFtzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kI3NwZWNpZmljYXRpb24tZXh0ZW5zaW9ucykgZXhpc3RzIG9uIHRoaXMgb3BlcmF0aW9uLiB8CjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4KCkluZm9ybWF0aW9uIGFib3V0IFJlYWRNZSdzIHN1cHBvcnRlZCBPcGVuQVBJIGV4dGVuc2lvbnMgYXQgaHR0cHM6Ly9kb2NzLnJlYWRtZS5jb20vZG9jcy9vcGVuYXBpLWV4dGVuc2lvbnMuCgojIyMgQ2FsbGJhY2tzCgpUaGUgYENhbGxiYWNrYCBjbGFzcyBpbmhlcml0cyBgT3BlcmF0aW9uYCBzbyBldmVyeSBBUEkgYXZhaWxhYmxlIG9uIGluc3RhbmNlcyBvZiBgT3BlcmF0aW9uYCBpcyBhdmFpbGFibGUgaGVyZSB0b28uIE11Y2ggbGlrZSBgT3BlcmF0aW9uYCwgd2UgYWxzbyBzdXBwb3J0IGNvbW1vbiBwYXJhbWV0ZXJzLCBzdW1tYXJpZXMsIGFuZCBkZXNjcmlwdGlvbnMgdGhhdCBtYXkgYmUgc2V0IGF0IHRoZSBbcGF0aCBpdGVtIGxldmVsXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21haW4vdmVyc2lvbnMvMy4xLjAubWQjcGF0aC1pdGVtLW9iamVjdCkgd2l0aGluIGEgYGNhbGxiYWNrc2AgZGVmaW5pdGlvbi4KCiMjIyMgR2VuZXJhbAoKPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CnwgTWV0aG9kIHwgRGVzY3JpcHRpb24gfAp8IDotLS0gfCA6LS0tIHwKfCBgLmdldElkZW50aWZpZXIoKWAgfCBSZXRyaWV2ZSB0aGUgcHJpbWFyeSBpZGVudGlmaWVyIG9mIHRoaXMgY2FsbGJhY2suIHwKPCEtLSBwcmV0dGllci1pZ25vcmUtZW5kIC0tPgoKIyMjIFdlYmhvb2tzCgpCZWNhdXNlIG91ciBgV2ViaG9va2AgY2xhc3MgZXh0ZW5kcyBgT3BlcmF0aW9uYCwgZXZlcnkgQVBJIHRoYXQncyBhdmFpbGFibGUgb24gdGhlIFtPcGVyYXRpb25dKCNvcGVyYXRpb24pIGNsYXNzIGlzIGF2YWlsYWJsZSBvbiB3ZWJob29rcy4KCiMjIyBBZGRpdGlvbmFsIFV0aWxpdGllcwoKQmV5b25kIHRoZSBgT2FzYCwgYE9wZXJhdGlvbmAsIGBDYWxsYmFja2AgYW5kIGBXZWJob29rYCBpbnRlcmZhY2VzLCB0aGUgYG9hc2AgbGlicmFyeSBhbHNvIG9mZmVycyBhZGRpdGlvbmFsIHRvb2xpbmcgZm9yIGFuYWx5emluZyBhbmQgdHJvdWJsZXNob290aW5nIE9wZW5BUEkgZGVmaW5pdGlvbnMuCgojIyMjIEFuYWx5emVyCgpUaGUgYW5hbHl6ZXIsIGBvYXMvYW5hbHl6ZXJgLCBhbGxvd3MgeW91IHRvIHJ1biBhIHNldCBvZiBxdWVyeSBhbmFseXNlcyBvbiB5b3VyIEFQSSBkZWZpbml0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXhpdHkgb2YgeW91ciBBUEkgZGVmaW5pdGlvbi4KCmBgYHRzCmltcG9ydCBwZXRzdG9yZSBmcm9tICdAcmVhZG1lL29hcy1leGFtcGxlcy8zLjAvanNvbi9wZXRzdG9yZS5qc29uJyB3aXRoIHsgdHlwZTogJ2pzb24nIH07CmltcG9ydCBhbmFseXplciBmcm9tICdvYXMvYW5hbHl6ZXInOwoKY29uc29sZS5sb2coYXdhaXQgYW5hbHl6ZXIocGV0c3RvcmUpKTsKYGBgCgojIyMjIyBHZW5lcmFsCgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KfCBNZXRyaWMgfCBEZXNjcmlwdGlvbiB8CnwgOi0tLSB8IDotLS0gfAp8IGBkZXJlZmVyZW5jZWRGaWxlU2l6ZWAgfCBTaXplIG9mIHRoZSBkZWZpbml0aW9uIGFmdGVyIHJlc29sdmluZyBhbGwgcmVmZXJlbmNlcy4gfAp8IGBtZWRpYVR5cGVzYCB8IFdoYXQgYXJlIHRoZSBkaWZmZXJlbnQgbWVkaWEgdHlwZSBzaGFwZXMgdGhhdCB5b3VyIEFQSSBvcGVyYXRpb25zIHN1cHBvcnQ/IHwKfCBgb3BlcmF0aW9uVG90YWxgIHwgVGhlIHRvdGFsIGFtb3VudCBvZiBvcGVyYXRpb25zIGluIHlvdXIgZGVmaW5pdGlvbi4gfAp8IGByYXdGaWxlU2l6ZWAgfCBTaXplIG9mIHRoZSBkZWZpbml0aW9uIGluIGl0cyByYXcgZm9ybS4gfAp8IGBzZWN1cml0eVR5cGVzYCB8IFRoZSBkaWZmZXJlbnQgdHlwZXMgb2Ygc2VjdXJpdHkgdGhhdCB5b3VyIEFQSSBjb250YWlucy4gfAo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+CgojIyMjIyBPcGVuQVBJIEZlYXR1cmVzCgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KfCBNZXRyaWMgfCBEZXNjcmlwdGlvbiB8CnwgOi0tLSB8IDotLS0gfAp8IGBhZGRpdGlvbmFsUHJvcGVydGllc2AgfCBEb2VzIHlvdXIgQVBJIHVzZSBgYWRkaXRpb25hbFByb3BlcnRpZXNgPyB8CnwgYGNhbGxiYWNrc2AgfCBEb2VzIHlvdXIgQVBJIHVzZSBbY2FsbGJhY2tzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21haW4vdmVyc2lvbnMvMy4xLjAubWQjY2FsbGJhY2stb2JqZWN0KT8gfAp8IGBjaXJjdWxhclJlZnNgIHwgRG9lcyB5b3VyIEFQSSBoYXZlIGFueSBjaXJjdWxhciBgJHJlZmAgcG9pbnRlcnMsIGFuZCBpZiBzbyB3aGVyZSBhcmUgdGhleSBsb2NhdGVkPyB8CnwgYGNvbW1vblBhcmFtZXRlcnNgIHwgRG9lcyB5b3VyIEFQSSB1dGlsaXplIFtjb21tb24gcGFyYW1ldGVyc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kI3BhdGgtaXRlbS1vYmplY3QpPyB8CnwgYGRpc2NyaW1pbmF0b3JzYCB8IERvZXMgeW91ciBBUEkgdXNlIHBvbHltb3JwaGljIFtkaXNjcmltaW5hdG9yc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kI2Rpc2NyaW1pbmF0b3Itb2JqZWN0KT8gfAp8IGBsaW5rc2AgfCBEb2VzIHlvdXIgQVBJIHVzZSBbbGlua3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjAuMy5tZCNsaW5rLW9iamVjdCk/IHwKfCBgc3R5bGVgIHwgRG8gYW55IHBhcmFtZXRlcnMgaW4geW91ciBBUEkgcmVxdWlyZSBbc3R5bGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjEuMC5tZCN1c2VyLWNvbnRlbnQtcGFyYW1ldGVyc3R5bGUpIHNlcmlhbGl6YXRpb24/CnwgYHBvbHltb3JwaGlzbWAgfCBEb2VzIHlvdXIgQVBJIHVzZSBbcG9seW1vcnBoaXNtXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21haW4vdmVyc2lvbnMvMy4xLjAubWQjY29tcG9zaXRpb24tYW5kLWluaGVyaXRhbmNlLXBvbHltb3JwaGlzbSkgKGBhbnlPZmAsIGBvbmVPZmAsIGBhbGxPZmApPyB8CnwgYHNlcnZlclZhcmlhYmxlc2AgfCBEb2VzIHlvdXIgQVBJIHVzZSBbc2VydmVyIHZhcmlhYmxlc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kI3NlcnZlci12YXJpYWJsZS1vYmplY3QpPyB8CnwgYHdlYmhvb2tzYCB8IERvZXMgeW91ciBBUEkgdXNlIFt3ZWJob29rc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kI29hc1dlYmhvb2tzKT8KfCBgeG1sYCB8IERvZXMgYW55IHBhcmFtZXRlciBvciBzY2hlbWEgaW4geW91ciBBUEkgdXNlIHRoZSBbWE1MIG9iamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kI3htbC1vYmplY3QpIGZvciBkZWNsYXJpbmcgaG93IGEgc2NoZW1hIHNob3VsZCBiZSB0cmVhdGVkIGluIFhNTD8gfAo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+CgojIyMjIFJlZHVjZXIKCj4gWyFXQVJOSU5HXQo+IFRoaXMgQVBJIGlzIHN0aWxsIHZlcnkgZXhwZXJpbWVudGFsIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMhCgpUaGUgcmVkdWNlciwgYG9hcy9yZWR1Y2VyYCwgY2FuIGJlIHVzZWQgdG8gcmVkdWNlIGFuIE9wZW5BUEkgZGVmaW5pdGlvbiBkb3duIHRvIG9ubHkgdGhlIGluZm9ybWF0aW9uIG5lY2Vzc2FyeSBmb3IgYSBzcGVjaWZpYyBzZXQgb2YgdGFncywgcGF0aHMsIG9yIG9wZXJhdGlvbnMuIE9wZW5BUEkgcmVkdWN0aW9uIGNhbiBiZSBoZWxwZnVsIHRvIGlzb2xhdGUgYW5kIHRyb3VibGVzaG9vdCBpc3N1ZXMgd2l0aCBhIHZlcnkgbGFyZ2UgQVBJIGRlZmluaXRpb24gLS0gYWxsIHdoaWxlIHN0aWxsIGhhdmluZyBhIGZ1bGx5IGZ1bmN0aW9uYWwgYW5kIHZhbGlkIE9wZW5BUEkgZGVmaW5pdGlvbi4KCmBgYHRzCmltcG9ydCBwZXRzdG9yZSBmcm9tICdAcmVhZG1lL29hcy1leGFtcGxlcy8zLjAvanNvbi9wZXRzdG9yZS5qc29uJyB3aXRoIHsgdHlwZTogJ2pzb24nIH07CmltcG9ydCByZWR1Y2VyIGZyb20gJ29hcy9yZWR1Y2VyJzsKCi8vIFRoaXMgd2lsbCByZWR1Y2UgdGhlIGBwZXRzdG9yZWAgQVBJIGRlZmluaXRpb24gZG93biB0byBvbmx5IG9wZXJhdGlvbnMsIGFuZAovLyBhbnkgcmVmZXJlbmNlZCBzY2hlbWFzLCB0aGF0IGFyZSBhIHBhcnQgb2YgdGhlIGBTdG9yZWAgdGFnLgpjb25zb2xlLmxvZyhyZWR1Y2VyKHBldHN0b3JlLCB7IHRhZ3M6IFsnU3RvcmUnXSB9KSk7CgovLyBSZWR1Y2VzIHRoZSBgcGV0c3RvcmVgIGRvd24gdG8gb25seSB0aGUgYFBPU1QgL3BldGAgb3BlcmF0aW9uLgpjb25zb2xlLmxvZyhyZWR1Y2VyKHBldHN0b3JlLCB7IHBhdGhzOiB7ICcvcGV0JzogWydwb3N0J10gfSB9KTsKCi8vIFlvdSBjYW4gYWxzbyBzZWxlY3QgYWxsIG9mIHRoZSBtZXRob2RzIG9mIGEgZ2l2ZW4gcGF0aCBieSB1c2luZyB0aGUgYCpgCi8vIHdpbGRjYXJkLiBUaGUgcmVzdWx0aW5nIHJlZHVjZWQgQVBJIGRlZmluaXRpb24gaGVyZSB3aWxsIGNvbnRhaW4gYFBPU1QgL3BldGAKLy8gYW5kIGBQVVQgL3B1dGAuCmNvbnNvbGUubG9nKHJlZHVjZXIocGV0c3RvcmUsIHsgcGF0aHM6IHsgJy9wZXQnOiBbJyonXSB9IH0pOwpgYGAKCj4gWyFOT1RFXQo+IFRob3VnaCB0aGUgcmVkdWNlciBkb2VzIG5vdCByZXF1aXJlIHlvdSB0byBmaXJzdCBkZXJlZmVyZW5jZSB5b3VyIEFQSSBkZWZpbml0aW9uIGl0IGN1cnJlbnRseSB1bmZvcnR1bmF0ZWx5IGNhbm5vdCwgZGVwZW5kaW5nIG9uIHRoZSBjaXJjdW1zdGFuY2VzLCBiZSB1c2VkIHRvIGRlcmVmZXJlbmNlIGFuIEFQSSBvcGVyYXRpb24gdGhhdCBoYXMgY2lyY3VsYXIgYCRyZWZgIHBvaW50ZXJzLgoKIyMgRkFRCgojIyMjIENhbiBJIGNyZWF0ZSBhbiBPcGVuQVBJIGRlZmluaXRpb24gd2l0aCB0aGlzPwoKVGhvdWdoIGBvYXNgIHVzZWQgdG8gb2ZmZXIgZnVuY3Rpb25hbGl0eSByZWxhdGVkIHRvIHRoaXMsIGl0IGRvZXMgbm8gbG9uZ2VyLiBJZiB5b3UgbmVlZCBhbiBPcGVuQVBJIChvciBTd2FnZ2VyKSBkZWZpbml0aW9uIGZvciB5b3VyIEFQSSB3ZSByZWNvbW1lbmQgY2hlY2tpbmcgb3V0IHRoZSBBUEkgZWRpdGluZyBleHBlcmllbmNlIHdpdGhpbiBbUmVhZE1lXShodHRwczovL3JlYWRtZS5jb20pLCBtYW51YWxseSBtYWludGFpbmluZyBKU09OL1lBTUwgZmlsZXMgKGl0IHNvdW5kcyB3b3JzZSB0aGFuIGl0IGFjdHVhbGx5IGlzKSwgb3IgdGhlIGxhbmd1YWdlLWFnbm9zdGljIFtzd2FnZ2VyLWlubGluZV0oaHR0cHM6Ly9ucG0uaW0vc3dhZ2dlci1pbmxpbmUpLgo= readmeEtag: '"d62d6dfd8f5bf3fb15ea42bbb03a9a87561232ce"' readmeLastModified: Thu, 31 Jul 2025 02:44:03 GMT repositoryId: 84146520 description: Comprehensive tooling for working with OpenAPI definitions. created: '2017-03-07T02:46:31Z' updated: '2026-02-05T02:21:40Z' language: TypeScript archived: false stars: 373 watchers: 18 forks: 38 owner: readmeio logo: https://avatars.githubusercontent.com/u/6878153?v=4 license: MIT repoEtag: '"20dadbe29e21e1da87b3ce76f1c0592de2393e880dba055a0cbd72f01d54fab1"' repoLastModified: Thu, 05 Feb 2026 02:21:40 GMT foundInMaster: true id: 362a4b56c90877840a8032f920389bf6 v3_1: true category: - Parsers - Description Validators - Converters - source: https://openapi.tools/ name: api category: - Parsers - Description Validators - Converters language: - JavaScript - TypeScript repository: https://github.com/readmeio/api link: https://api.readme.dev source_description: Magical SDK generation from an OpenAPI definition v2: true v3: true v3_1: true id: fe3a10e114b8e1a8d9f03e70c963b89e repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyB3aWR0aD0iNDAwIiBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9yZWFkbWVpby9hcGkvbWFpbi9kb2NzL2ltYWdlcy9sb2dvLnN2ZyIgLz4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgTWFnaWNhbCBTREsgZ2VuZXJhdGlvbiBmcm9tIGFuIE9wZW5BUEkgZGVmaW5pdGlvbiDwn6qECjwvcD4KCjxwIGFsaWduPSJjZW50ZXIiPgogIDxhIGhyZWY9Imh0dHBzOi8vbnBtLmltL2FwaSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvYXBpP3N0eWxlPWZvci10aGUtYmFkZ2UiIGFsdD0iTlBNIFZlcnNpb24iPjwvYT4KICA8YSBocmVmPSJodHRwczovL25wbS5pbS9hcGkiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL25vZGUvdi9hcGk/c3R5bGU9Zm9yLXRoZS1iYWRnZSIgYWx0PSJOb2RlIFZlcnNpb24iPjwvYT4KICA8YSBocmVmPSJodHRwczovL25wbS5pbS9hcGkiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9sL2FwaT9zdHlsZT1mb3ItdGhlLWJhZGdlIiBhbHQ9Ik1JVCBMaWNlbnNlIj48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JlYWRtZWlvL2FwaSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL3JlYWRtZWlvL2FwaS9jaS55bWw/YnJhbmNoPW1haW4mc3R5bGU9Zm9yLXRoZS1iYWRnZSIgYWx0PSJCdWlsZCBzdGF0dXMiPjwvYT4KPC9wPgoKLSBbSW5zdGFsbGF0aW9uXShodHRwczovL2FwaS5yZWFkbWUuZGV2L2RvY3MvaW5zdGFsbGF0aW9uKQotIFtVc2FnZV0oaHR0cHM6Ly9hcGkucmVhZG1lLmRldi9kb2NzL3VzYWdlKQogIC0gW0F1dGhlbnRpY2F0aW9uXShodHRwczovL2FwaS5yZWFkbWUuZGV2L2RvY3MvYXV0aGVudGljYXRpb24pCiAgLSBbUGFyYW1ldGVycyBhbmQgUGF5bG9hZHNdKGh0dHBzOi8vYXBpLnJlYWRtZS5kZXYvZG9jcy9wYXJhbWV0ZXJzLWFuZC1wYXlsb2FkcykKICAtIFtNYWtpbmcgcmVxdWVzdHNdKGh0dHBzOi8vYXBpLnJlYWRtZS5kZXYvZG9jcy9tYWtpbmctcmVxdWVzdHMpCiAgLSBbU2VydmVyIGNvbmZpZ3VyYXRpb25zXShodHRwczovL2FwaS5yZWFkbWUuZGV2L2RvY3Mvc2VydmVyLWNvbmZpZ3VyYXRpb25zKQotIFtIb3cgZG9lcyBpdCB3b3JrP10oaHR0cHM6Ly9hcGkucmVhZG1lLmRldi9kb2NzL2hvdy1pdC13b3JrcykKLSBbRkFRXShodHRwczovL2FwaS5yZWFkbWUuZGV2L2RvY3MvZmFxKQoKYGFwaWAgaXMgYSBsaWJyYXJ5IHRoYXQgZmFjaWxpdGF0ZXMgY3JlYXRpbmcgYW4gU0RLIGZyb20gYW4gT3BlbkFQSSBkZWZpbml0aW9uLiBZb3UgY2FuIHVzZSBpdHMgY29kZWdlbiBvZmZlcmluZyB0byBjcmVhdGUgYW4gb3BpbmlvbmF0ZWQgU0RLIGZvciBUeXBlU2NyaXB0IG9yIEpTICgrIFR5cGVTY3JpcHQgdHlwZXMpLgoKYGBgc2gKJCBucHggYXBpIGluc3RhbGwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vbWFpbi9leGFtcGxlcy92My4wL3BldHN0b3JlLmpzb24KYGBgCgpgYGBqcwpjb25zdCBwZXRzdG9yZSA9IHJlcXVpcmUoJ0BhcGkvcGV0c3RvcmUnKTsKCnBldHN0b3JlLmxpc3RQZXRzKCkudGhlbigoeyBkYXRhIH0pID0+IHsKICBjb25zb2xlLmxvZyhgTXkgcGV0cyBuYW1lIGlzICR7ZGF0YVswXS5uYW1lfSFgKTsKfSk7CmBgYAoKVGhlIEVTTSBzeW50YXggaXMgc3VwcG9ydGVkIGFzIHdlbGw6CgpgYGBqcwppbXBvcnQgcGV0c3RvcmUgZnJvbSAnQGFwaS9wZXRzdG9yZSc7CgpwZXRzdG9yZS5saXN0UGV0cygpLnRoZW4oKHsgZGF0YSB9KSA9PiB7CiAgY29uc29sZS5sb2coYE15IHBldHMgbmFtZSBpcyAke2RhdGFbMF0ubmFtZX0hYCk7Cn0pOwpgYGAK readmeEtag: '"2fcc971cbd1848188ddab0a4634dc071390696a0"' readmeLastModified: Thu, 01 Aug 2024 17:08:22 GMT repositoryId: 81140437 description: 🚀 Automatic SDK generation from an OpenAPI definition created: '2017-02-06T22:31:07Z' updated: '2026-02-04T01:09:16Z' language: TypeScript archived: false stars: 675 watchers: 18 forks: 28 owner: readmeio logo: https://avatars.githubusercontent.com/u/6878153?v=4 license: MIT repoEtag: '"a08669db019bf17b4b22312788190a35b691bc68392aacc85b2a9c971201dfd2"' repoLastModified: Wed, 04 Feb 2026 01:09:16 GMT foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags name: openapi-cli-tool link: https://pypi.org/project/openapi-cli-tool/ repository: https://github.com/hakopako/openapi-cli-tool language: Python source_description: >- Can list up defined API paths and bundle multi-file into one. Supports multiple file extensions. v2: false v3: true repositoryMetadata: base64Readme: >- IVtvcGVuYXBpLWNsaS10b29sXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vaGFrb3Bha28vb3BlbmFwaS1jbGktdG9vbC9tYXN0ZXIvZG9jL2xvZ28ucG5nKQoKClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kuY29tL2hha29wYWtvL29wZW5hcGktY2xpLXRvb2wuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5jb20vaGFrb3Bha28vb3BlbmFwaS1jbGktdG9vbCkKIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3ZlcnNpb24tdjAuMy4wLWdyZWVuLnN2ZyI+CiA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1saWdodGdyYXkuc3ZnIj4gIAo8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9weXRob24tMi43LDMuNDw9LWJsdWUuc3ZnIj4gPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvc3dhZ2dlci0zLngteWVsbG93LnN2ZyI+CgojIG9wZW5hcGktY2xpLXRvb2wKT3BlbkFQSSAoU3dhZ2dlciAzLngpIENMSSBUb29sLiAgCgotIFN1cHBvcnRzIG11bHRpcGxlIGZpbGUgZXh0ZW5zaW9ucyAoanNvbnx5YW1sfHltbCkuCi0gQ2FuIGxpc3QgdXAgZGVmaW5lZCBBUEkgcGF0aHMuCi0gRGlzcGxheSBhbiBBUEkgc3BlY2lmaWNhdGlvbiB3aGljaCBpcyByZXNvbHZlZCAoYCRyZWZgKS4KLSBCdW5kbGUgbXVsdGktZmlsZSBpbnRvIG9uZSAob3V0cHV0IHRvIGpzb258eWFtbHxodG1sKS4KLSBPQVMgaW50ZXJhY3RpdmUgc2NhZmZvbGRpbmcuICAKCiMgUmVxdWlyZW1lbnRzCgpQeXRob24gMi43LCAzLjQgPD0uCgojIEluc3RhbGxhdGlvbgoKV2l0aCBwaXA6CgpgYGBiYXNoCiQgcGlwIGluc3RhbGwgb3BlbmFwaS1jbGktdG9vbApgYGAKTWFudWFsbHk6ICAKQ2xvbmUgdGhlIHJlcG9zaXRvcnkgYW5kIGV4ZWN1dGUgdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gY29tbWFuZCBvbiB5b3VyIG1hY2hpbmUuICAKCmBgYGJhc2gKJCBwaXAgLXIgcmVxdWlyZW1lbnRzLnR4dCBpbnN0YWxsCiQgcHl0aG9uIHNldHVwLnB5IGluc3RhbGwKYGBgCgpUaGVuIGBvcGVuYXBpLWNsaS10b29sYCBjb21tYW5kIGlzIGluc3RhbGxlZC4KCiMgVXNhZ2UKCmBgYAokIG9wZW5hcGktY2xpLXRvb2wgLS1oZWxwClVzYWdlOiBvcGVuYXBpLWNsaS10b29sIFtPUFRJT05TXSBDT01NQU5EIFtBUkdTXS4uLgoKT3B0aW9uczoKICAtLWhlbHAgIFNob3cgdGhpcyBtZXNzYWdlIGFuZCBleGl0LgoKQ29tbWFuZHM6CiAgYnVuZGxlICAgIEJ1bmRsZSBtdWx0aXBsZSBmaWxlcyBpbnRvIG9uZS4KICBsaXN0ICAgICAgTGlzdCB1cCBBUEkgcGF0aHMgaW4gYSBmaWxlIG9yIGRpcmVjdG9yeS4KICByZXNvbHZlICAgRGlzcGxheSBgJHJlZmAgcmVzb2x2ZWQgQVBJIHNwZWNpZmljYXRpb24uCiAgc2NhZmZvbGQgIEludGVyYWN0aXZlbHkgY3JlYXRlIGEgc2ltcGxlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbi4KYGBgCgojIyBCdW5kbGUKCkJ1bmRsZSBtdWx0aS1maWxlIHNwZWNpZmljYXRpb25zIGludG8gb25lLCByZWdhcmRsZXNzIG9mIGZpbGUgZXh0ZW5zaW9uIChqc29ufHlhbWx8eW1sKS4KCmBgYAokIG9wZW5hcGktY2xpLXRvb2wgYnVuZGxlIC0taGVscApVc2FnZTogb3BlbmFwaS1jbGktdG9vbCBidW5kbGUgW09QVElPTlNdIEZJTEVfUEFUSFMKCiAgQnVuZGxlIG11bHRpcGxlIGZpbGVzIGludG8gb25lLgoKT3B0aW9uczoKICAtZiwgLS1maWxlIFRFWFQgIExvYWQgY29tbW9uIG9iamVjdHMgc3VjaCBhcyBpbmZvIGFuZCBzZXJ2ZXJzIGZyb20gYQogICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgZmlsZS4gRGVmYXVsdCBpcyBhIGZpbGUgd2hpY2ggaXMgdGhlIHRvcCBvZiBsaXN0CiAgICAgICAgICAgICAgICAgICBjb21tYW5kIHJlc3VsdC4KICAtdCwgLS10eXBlIFRFWFQgIEV4cG9ydCBkYXRhIHR5cGUuIHtqc29ufHlhbWx8aHRtbH0gIFtkZWZhdWx0OiBqc29uXQogIC0taGVscCAgICAgICAgICAgU2hvdyB0aGlzIG1lc3NhZ2UgYW5kIGV4aXQuCmBgYAoKZXhhbXBsZToKYGBgCiQgb3BlbmFwaS1jbGktdG9vbCBidW5kbGUgLXQgaHRtbCBmaWxlMS5qc29uIGZpbGUyLnlhbWxgID4gLi9zcGVjaWZpY2F0aW9uLmh0bWwKYGBgCgpJbiB0aGUgaHRtbCBmaWxlLCBhbiB1bnBrZyB2ZXJzaW9uIG9mIFtzd2FnZ2VyLXVpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aSkgaXMgZW1iZWRkZWQuIFJlbmRlcmVkIHNjcmVlbnNob3QgYmVsb3c6ICAKCgohW2J1bmRsZS1odG1sLWltZ10oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2hha29wYWtvL29wZW5hcGktY2xpLXRvb2wvbWFzdGVyL2RvYy9idW5kbGUtaHRtbC5wbmcpCgoKIyMgTGlzdAoKTGlzdCB1cCBBUEkgcGF0aHMgZnJvbSBhIGZpbGUvZGlyZWN0b3J5IHJlZ2FyZGxlc3Mgb2YgdGhlIGZpbGUgZXh0ZW5zaW9uIChqc29ufHlhbWx8eW1sKS4KCmBgYGJhc2gKJCBvcGVuYXBpLWNsaS10b29sIGxpc3QgYGZpbmQgLi9zcGVjYAoKTWV0aG9kICAgIFBhdGggICAgICAgRmlsZQotLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUFVUICAgICAgIC9hdmF0YXIgICAgLi90ZXN0cy9yZXNvdXJjZXMvc3BlYy9zYW1wbGUueW1sCkdFVCAgICAgICAvZm9sbHdlcnMgIC4vdGVzdHMvcmVzb3VyY2VzL3NwZWMvZm9sZGVyMS9zYW1wbGUyLnlhbWwKUE9TVCAgICAgIC9mb2xsd2VycyAgLi90ZXN0cy9yZXNvdXJjZXMvc3BlYy9mb2xkZXIxL3NhbXBsZTIueWFtbApQVVQgICAgICAgL2ZvbGx3ZXJzICAuL3Rlc3RzL3Jlc291cmNlcy9zcGVjL2ZvbGRlcjEvc2FtcGxlMi55YW1sClBPU1QgICAgICAvcGV0cyAgICAgIC4vdGVzdHMvcmVzb3VyY2VzL3NwZWMvc2FtcGxlLnltbApHRVQgICAgICAgL3Bvc3RzICAgICAuL3Rlc3RzL3Jlc291cmNlcy9zcGVjL2ZvbGRlcjEvc2FtcGxlLmpzb24KUE9TVCAgICAgIC9wb3N0cyAgICAgLi90ZXN0cy9yZXNvdXJjZXMvc3BlYy9mb2xkZXIxL3NhbXBsZS5qc29uCkdFVCAgICAgICAvdXNlcnMgICAgIC4vdGVzdHMvcmVzb3VyY2VzL3NwZWMvZm9sZGVyMS9zYW1wbGUuanNvbgpQT1NUICAgICAgL3VzZXJzICAgICAuL3Rlc3RzL3Jlc291cmNlcy9zcGVjL2ZvbGRlcjEvc2FtcGxlLmpzb24KYGBgCgoKIyMgUmVzb2x2ZQoKRGlzcGxheSBhbiBBUEkgc3BlY2lmaWNhdGlvbiB3aGljaCBpcyByZXNvbHZlZCBmcm9tICBhIG11bHRpLWZpbGUgQVBJIHNwZWNpZmljYXRpb24gdmlhICRyZWYgcG9pbnRlcnMuICAKCmBgYApVc2FnZTogb3BlbmFwaS1jbGktdG9vbCByZXNvbHZlIFtPUFRJT05TXSBNRVRIT0QgUEFUSCBGSUxFX1BBVEhTCgogIERpc3BsYXkgYCRyZWZgIHJlc29sdmVkIEFQSSBzcGVjaWZpY2F0aW9uLgoKT3B0aW9uczoKICAtdCwgLS10eXBlIFRFWFQgIEV4cG9ydCBkYXRhIHR5cGUuIHtqc29ufHlhbWx9ICBbZGVmYXVsdDoganNvbl0KICAtLWhlbHAgICAgICAgICAgIFNob3cgdGhpcyBtZXNzYWdlIGFuZCBleGl0LgpgYGAKCmV4YW1wbGU6CmBgYGJhc2gKJCBvcGVuYXBpLWNsaS10b29sIHJlc29sdmUgcG9zdCAvY2F0cyBgZmluZCAuL3Rlc3RzL3Jlc291cmNlcy9zcGVjYApgYGAKCgojIyBTY2FmZm9sZAoKSW50ZXJhY3RpdmVseSBpbnB1dCBpbmZvcm1hdGlvbiBvZiB5b3VyIEFQSS4gIApBIHNpbXBsZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gaXMgZ2VuZXJhdGVkIGZyb20geW91ciBwcm9tcHQuCgpgYGBiYXNoCiQgb3BlbmFwaS1jbGktdG9vbCBzY2FmZm9sZAoKUGxlYXNlIGVudGVyIHRpdGxlIFsiIl06IHNhbXBsZQpQbGVhc2UgZW50ZXIgdmVyc2lvbiBbdjEuMF06ClBsZWFzZSBlbnRlciBsaWNlbnNlIFtBcGFjaGUgMi4wXToKUGxlYXNlIGVudGVyIHNlcnZlciB1cmwgW2h0dHA6Ly9leGFtcGxlLmNvbV06ClBsZWFzZSBlbnRlciBwYXRoIFsvXTogL2V4YW1wbGUKUGxlYXNlIGVudGVyIG1ldGhvZCBmb3IgL2V4YW1wbGUgW2dldHxwb3N0fHB1dHxkZWxldGV8aGVhZHxvcHRpb258dHJhY2VdOiBnZXQKUGxlYXNlIGVudGVyIGRlc2NyaXB0aW9uIGZvciBnZXQgL2V4YW1wbGUgWyIiXTogc2FtcGxlIGdldCBlbmRwb2ludApQbGVhc2UgZW50ZXIgcmVzcG9uc2UgY29kZSBmb3IgZ2V0IC9leGFtcGxlIFsyMDBdOgpgYGAK readmeEtag: '"4160acff531aee88dd1cb97794807f5b79204ae4"' readmeLastModified: Fri, 13 Dec 2019 15:18:01 GMT repositoryId: 189242303 description: >- OpenAPI (Swagger 3.x) CLI Tool. Supports multiple file extensions. Can list up defined API paths and bundle multi-file into one. created: '2019-05-29T14:31:14Z' updated: '2025-10-06T09:27:54Z' language: Python archived: false stars: 23 watchers: 1 forks: 5 owner: hakopako logo: https://avatars.githubusercontent.com/u/4510192?v=4 license: MIT repoEtag: '"881dfb9e91ef90149249b19fcdf3566470ec23614f0da8ae1d05fe1d6777f605"' repoLastModified: Mon, 06 Oct 2025 09:27:54 GMT foundInMaster: true id: 74cfd1a51e146dbdbfccbf999d194eae category: Parsers - source: https://openapi.tools/ name: laravel-openapi category: - Converters - Testing language: PHP repository: https://github.com/vyuldashev/laravel-openapi source_description: Generate OpenAPI 3 specification for Laravel Applications. v2: false v3: true repositoryMetadata: base64Readme: >- IyBHZW5lcmF0ZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gZm9yIExhcmF2ZWwgQXBwbGljYXRpb25zCgpbIVtMYXRlc3QgVmVyc2lvbiBvbiBQYWNrYWdpc3RdKGh0dHBzOi8vcG9zZXIucHVneC5vcmcvdnl1bGRhc2hldi9sYXJhdmVsLW9wZW5hcGkvdi9zdGFibGU/Zm9ybWF0PWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL3Z5dWxkYXNoZXYvbGFyYXZlbC1vcGVuYXBpKQpbIVtNSVQgTGljZW5zZWRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1NSVQtYnJpZ2h0Z3JlZW4uc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oTElDRU5TRS5tZCkKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vdnl1bGRhc2hldi9sYXJhdmVsLW9wZW5hcGkvd29ya2Zsb3dzL1Rlc3RzL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS92eXVsZGFzaGV2L2xhcmF2ZWwtb3BlbmFwaS9hY3Rpb25zKQpbIVtUb3RhbCBEb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L2R0L3Z5dWxkYXNoZXYvbGFyYXZlbC1vcGVuYXBpLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSldKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy92eXVsZGFzaGV2L2xhcmF2ZWwtb3BlbmFwaSkKCiMjIERvY3VtZW50YXRpb24KCllvdSdsbCBmaW5kIHRoZSBkb2N1bWVudGF0aW9uIG9uIGh0dHBzOi8vdnl1bGRhc2hldi5naXRodWIuaW8vbGFyYXZlbC1vcGVuYXBpLgoKIyMgTGljZW5zZQoKVGhlIE1JVCBMaWNlbnNlIChNSVQpLiBQbGVhc2Ugc2VlIFtMaWNlbnNlIEZpbGVdKExJQ0VOU0UubWQpIGZvciBtb3JlIGluZm9ybWF0aW9uLgo= readmeEtag: '"5f41c782107174831f4d9482f6f3a2dfecec277b"' readmeLastModified: Thu, 04 May 2023 10:01:53 GMT repositoryId: 182520856 description: Generate OpenAPI specification for Laravel Applications created: '2019-04-21T10:45:45Z' updated: '2026-01-12T10:02:16Z' language: PHP archived: false stars: 456 watchers: 12 forks: 111 owner: vyuldashev logo: https://avatars.githubusercontent.com/u/1809081?v=4 license: MIT repoEtag: '"303550c881afeaeaae1f2683ac987fe27d1c6346406538e0b34fd90919c3495a"' repoLastModified: Mon, 12 Jan 2026 10:02:16 GMT foundInMaster: true id: ee05a2f19f3fd6fc886e5e4711ef400f - source: https://openapi.tools/ name: Flotiq - headless CMS with OpenAPI support category: - SDK - GUI Editors link: https://flotiq.com source_description: >- Visually define your Content Types, Flotiq automatically generates your own OpenAPI v3 compatible endpoints, SDKs and Postman collections. v3: true foundInMaster: true id: 478d41ac500dd9ce23e0f0213a656154 - source: https://openapi.tools/ name: Chai OpenAPI Response Validator category: Testing language: Node.js repository: >- https://github.com/openapi-library/openapivalidators/tree/master/packages/chai-openapi-response-validator source_description: >- Simple Chai support for asserting that HTTP responses satisfy an OpenAPI spec. v2: true v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFZhbGlkYXRvcnMKCiFbYnVpbGQgc3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpCiFbc3R5bGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLWFpcmJuYi1mZjVhNWYuc3ZnKQpbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycykKWyFbTUlUIExpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2wvb3BlbmFwaS12YWxpZGF0b3Iuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9ibG9iL21hc3Rlci9MSUNFTlNFKQpbIVtjb250cmlidXRpb25zIHdlbGNvbWVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29udHJpYnV0aW9ucy13ZWxjb21lLWJyaWdodGdyZWVuLnN2Zz9zdHlsZT1mbGF0KV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQpCgpVc2UgSmVzdCBvciBDaGFpIHRvIGFzc2VydCB0aGF0IEhUVFAgcmVzcG9uc2VzIHNhdGlzZnkgYW4gT3BlbkFQSSBzcGVjLgoKIyMgUHJvYmxlbSDwn5iVCgpJZiB5b3VyIHNlcnZlcidzIGJlaGF2aW91ciBkb2Vzbid0IG1hdGNoIHlvdXIgQVBJIGRvY3VtZW50YXRpb24sIHRoZW4geW91IG5lZWQgdG8gY29ycmVjdCB5b3VyIHNlcnZlciwgeW91ciBkb2N1bWVudGF0aW9uLCBvciBib3RoLiBUaGUgc29vbmVyIHlvdSBrbm93IHRoZSBiZXR0ZXIuCgojIyBTb2x1dGlvbiDwn5iECgpUaGVzZSB0ZXN0IHBsdWdpbnMgbGV0IHlvdSBhdXRvbWF0aWNhbGx5IHRlc3Qgd2hldGhlciB5b3VyIHNlcnZlcidzIGJlaGF2aW91ciBhbmQgZG9jdW1lbnRhdGlvbiBtYXRjaC4gVGhleSBleHRlbmQgSmVzdCBhbmQgQ2hhaSB0byBzdXBwb3J0IHRoZSBbT3BlbkFQSSBzdGFuZGFyZF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9hYm91dC8pIGZvciBkb2N1bWVudGluZyBSRVNUIEFQSXMuIEluIHlvdXIgSmF2YVNjcmlwdCB0ZXN0cywgeW91IGNhbiBzaW1wbHkgYXNzZXJ0IGBleHBlY3QocmVzcG9uc2VPYmplY3QpLnRvU2F0aXNmeUFwaVNwZWMoKWAKCiMjIyBbamVzdC1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL3RyZWUvbWFzdGVyL3BhY2thZ2VzL2plc3Qtb3BlbmFwaSNyZWFkbWUpCgpbIVtkb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL2plc3Qtb3BlbmFwaSldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2plc3Qtb3BlbmFwaSkKWyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L2plc3Qtb3BlbmFwaS5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9qZXN0LW9wZW5hcGkpCgojIyMgW0NoYWkgT3BlbkFQSSBSZXNwb25zZSBWYWxpZGF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvdHJlZS9tYXN0ZXIvcGFja2FnZXMvY2hhaS1vcGVuYXBpLXJlc3BvbnNlLXZhbGlkYXRvciNyZWFkbWUpCgpbIVtkb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL2NoYWktb3BlbmFwaS1yZXNwb25zZS12YWxpZGF0b3IpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9jaGFpLW9wZW5hcGktcmVzcG9uc2UtdmFsaWRhdG9yKQpbIVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvY2hhaS1vcGVuYXBpLXJlc3BvbnNlLXZhbGlkYXRvci5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9jaGFpLW9wZW5hcGktcmVzcG9uc2UtdmFsaWRhdG9yKQoKIyMgQ29udHJpYnV0b3JzIOKcqAoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6U1RBUlQgLSBEbyBub3QgcmVtb3ZlIG9yIG1vZGlmeSB0aGlzIHNlY3Rpb24gLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgo8IS0tIG1hcmtkb3dubGludC1kaXNhYmxlIC0tPgo8dGFibGU+CiAgPHRyPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yd2FsbGU2MSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTgxNzAxNjk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+UmljaGFyZCBXYWxsZXI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNtYWludGVuYW5jZS1yd2FsbGU2MSIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPXJ3YWxsZTYxIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9jb21taXRzP2F1dGhvcj1yd2FsbGU2MSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBcndhbGxlNjEiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0pvbm55U3BydWNlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMDgxMjI3Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5Kb25ueSBTcHJ1Y2U8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvY29tbWl0cz9hdXRob3I9Sm9ubnlTcHJ1Y2UiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPUpvbm55U3BydWNlIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FKb25ueVNwcnVjZSIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQWxleERvYmVjayI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA1MTkzODg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+QWxleCBEb2JlY2s8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvY29tbWl0cz9hdXRob3I9QWxleERvYmVjayIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvaXNzdWVzP3E9YXV0aG9yJTNBQWxleERvYmVjayIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0Jlbkd1MyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzEwNTg1Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5CZW4gR3V0aHJpZTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9jb21taXRzP2F1dGhvcj1CZW5HdTMiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2lzc3Vlcz9xPWF1dGhvciUzQUJlbkd1MyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9tYXJ0aWpudmVndGVyLmNvbS8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI1MTM0NDc3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPk1hcnRpam4gVmVndGVyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPW12ZWd0ZXIiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2x1ZGVrbm92eSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM2MTA2MTI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+THVkZWs8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvY29tbWl0cz9hdXRob3I9bHVkZWtub3Z5IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9pc3N1ZXM/cT1hdXRob3IlM0FsdWRla25vdnkiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90Z2lhcmRpbmEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMxLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM3NDU5MTA0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPlRvbW15IEdpYXJkaW5hPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPXRnaWFyZGluYSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvaXNzdWVzP3E9YXV0aG9yJTNBdGdpYXJkaW5hIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL3hvdGFidTQuZ2l0aHViLmlvLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzAzMzk3Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5PbGVrc2FuZHIgS2hvdGVtc2t5aTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9jb21taXRzP2F1dGhvcj1Yb3RhYnU0IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbWl0a2VpbmFuOSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjU3NzMzNT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5BbWl0IEtlaW5hbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9jb21taXRzP2F1dGhvcj1hbWl0a2VpbmFuOSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRGV0YWNoSGVhZCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NzAyODMzNj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5EZXRhY2hIZWFkPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2lzc3Vlcz9xPWF1dGhvciUzQURldGFjaEhlYWQiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly9rYXJsc3NvbmtyaXN0b2ZmZXIuY29tLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMDQ5MDIwMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5LcmlzdG9mZmVyIEthcmxzc29uPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPWtyaXN0b2ZmZXJrYXJsc3NvbjkzIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8IS0tIG1hcmtkb3dubGludC1yZXN0b3JlIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+Cgo8IS0tIEFMTC1DT05UUklCVVRPUlMtTElTVDpFTkQgLS0+Cg== readmeEtag: '"4d5a529f7a19b52fab62aaf17e9c5263bd765e2d"' readmeLastModified: Tue, 29 Mar 2022 10:12:21 GMT repositoryId: 199614125 description: Use Jest or Chai to assert that HTTP responses satisfy an OpenAPI spec created: '2019-07-30T08:56:01Z' updated: '2025-12-11T11:06:52Z' language: TypeScript archived: false stars: 194 watchers: 11 forks: 38 owner: openapi-library logo: https://avatars.githubusercontent.com/u/53815441?v=4 license: MIT repoEtag: '"982859aab5b874db7602c4d6d41812452f2b57b69b87a00845a5040995271994"' repoLastModified: Thu, 11 Dec 2025 11:06:52 GMT foundInMaster: true id: b5cd9eb978510085ded374f60b8e1486 - source: https://openapi.tools/ name: jest-openapi category: Testing language: Node.js repository: >- https://github.com/openapi-library/openapivalidators/tree/master/packages/jest-openapi source_description: >- Additional Jest matchers for asserting that HTTP responses satisfy an OpenAPI spec. v2: true v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFZhbGlkYXRvcnMKCiFbYnVpbGQgc3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpCiFbc3R5bGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLWFpcmJuYi1mZjVhNWYuc3ZnKQpbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycykKWyFbTUlUIExpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2wvb3BlbmFwaS12YWxpZGF0b3Iuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9ibG9iL21hc3Rlci9MSUNFTlNFKQpbIVtjb250cmlidXRpb25zIHdlbGNvbWVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29udHJpYnV0aW9ucy13ZWxjb21lLWJyaWdodGdyZWVuLnN2Zz9zdHlsZT1mbGF0KV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQpCgpVc2UgSmVzdCBvciBDaGFpIHRvIGFzc2VydCB0aGF0IEhUVFAgcmVzcG9uc2VzIHNhdGlzZnkgYW4gT3BlbkFQSSBzcGVjLgoKIyMgUHJvYmxlbSDwn5iVCgpJZiB5b3VyIHNlcnZlcidzIGJlaGF2aW91ciBkb2Vzbid0IG1hdGNoIHlvdXIgQVBJIGRvY3VtZW50YXRpb24sIHRoZW4geW91IG5lZWQgdG8gY29ycmVjdCB5b3VyIHNlcnZlciwgeW91ciBkb2N1bWVudGF0aW9uLCBvciBib3RoLiBUaGUgc29vbmVyIHlvdSBrbm93IHRoZSBiZXR0ZXIuCgojIyBTb2x1dGlvbiDwn5iECgpUaGVzZSB0ZXN0IHBsdWdpbnMgbGV0IHlvdSBhdXRvbWF0aWNhbGx5IHRlc3Qgd2hldGhlciB5b3VyIHNlcnZlcidzIGJlaGF2aW91ciBhbmQgZG9jdW1lbnRhdGlvbiBtYXRjaC4gVGhleSBleHRlbmQgSmVzdCBhbmQgQ2hhaSB0byBzdXBwb3J0IHRoZSBbT3BlbkFQSSBzdGFuZGFyZF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9hYm91dC8pIGZvciBkb2N1bWVudGluZyBSRVNUIEFQSXMuIEluIHlvdXIgSmF2YVNjcmlwdCB0ZXN0cywgeW91IGNhbiBzaW1wbHkgYXNzZXJ0IGBleHBlY3QocmVzcG9uc2VPYmplY3QpLnRvU2F0aXNmeUFwaVNwZWMoKWAKCiMjIyBbamVzdC1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL3RyZWUvbWFzdGVyL3BhY2thZ2VzL2plc3Qtb3BlbmFwaSNyZWFkbWUpCgpbIVtkb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL2plc3Qtb3BlbmFwaSldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2plc3Qtb3BlbmFwaSkKWyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L2plc3Qtb3BlbmFwaS5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9qZXN0LW9wZW5hcGkpCgojIyMgW0NoYWkgT3BlbkFQSSBSZXNwb25zZSBWYWxpZGF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvdHJlZS9tYXN0ZXIvcGFja2FnZXMvY2hhaS1vcGVuYXBpLXJlc3BvbnNlLXZhbGlkYXRvciNyZWFkbWUpCgpbIVtkb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL2NoYWktb3BlbmFwaS1yZXNwb25zZS12YWxpZGF0b3IpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9jaGFpLW9wZW5hcGktcmVzcG9uc2UtdmFsaWRhdG9yKQpbIVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvY2hhaS1vcGVuYXBpLXJlc3BvbnNlLXZhbGlkYXRvci5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9jaGFpLW9wZW5hcGktcmVzcG9uc2UtdmFsaWRhdG9yKQoKIyMgQ29udHJpYnV0b3JzIOKcqAoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6U1RBUlQgLSBEbyBub3QgcmVtb3ZlIG9yIG1vZGlmeSB0aGlzIHNlY3Rpb24gLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgo8IS0tIG1hcmtkb3dubGludC1kaXNhYmxlIC0tPgo8dGFibGU+CiAgPHRyPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yd2FsbGU2MSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTgxNzAxNjk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+UmljaGFyZCBXYWxsZXI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNtYWludGVuYW5jZS1yd2FsbGU2MSIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPXJ3YWxsZTYxIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9jb21taXRzP2F1dGhvcj1yd2FsbGU2MSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBcndhbGxlNjEiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0pvbm55U3BydWNlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMDgxMjI3Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5Kb25ueSBTcHJ1Y2U8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvY29tbWl0cz9hdXRob3I9Sm9ubnlTcHJ1Y2UiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPUpvbm55U3BydWNlIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FKb25ueVNwcnVjZSIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQWxleERvYmVjayI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA1MTkzODg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+QWxleCBEb2JlY2s8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvY29tbWl0cz9hdXRob3I9QWxleERvYmVjayIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvaXNzdWVzP3E9YXV0aG9yJTNBQWxleERvYmVjayIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0Jlbkd1MyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzEwNTg1Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5CZW4gR3V0aHJpZTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9jb21taXRzP2F1dGhvcj1CZW5HdTMiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2lzc3Vlcz9xPWF1dGhvciUzQUJlbkd1MyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9tYXJ0aWpudmVndGVyLmNvbS8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI1MTM0NDc3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPk1hcnRpam4gVmVndGVyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPW12ZWd0ZXIiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2x1ZGVrbm92eSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM2MTA2MTI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+THVkZWs8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvY29tbWl0cz9hdXRob3I9bHVkZWtub3Z5IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9pc3N1ZXM/cT1hdXRob3IlM0FsdWRla25vdnkiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90Z2lhcmRpbmEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMxLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM3NDU5MTA0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPlRvbW15IEdpYXJkaW5hPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPXRnaWFyZGluYSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvaXNzdWVzP3E9YXV0aG9yJTNBdGdpYXJkaW5hIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL3hvdGFidTQuZ2l0aHViLmlvLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzAzMzk3Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5PbGVrc2FuZHIgS2hvdGVtc2t5aTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9jb21taXRzP2F1dGhvcj1Yb3RhYnU0IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbWl0a2VpbmFuOSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjU3NzMzNT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5BbWl0IEtlaW5hbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9jb21taXRzP2F1dGhvcj1hbWl0a2VpbmFuOSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRGV0YWNoSGVhZCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NzAyODMzNj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5EZXRhY2hIZWFkPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2lzc3Vlcz9xPWF1dGhvciUzQURldGFjaEhlYWQiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly9rYXJsc3NvbmtyaXN0b2ZmZXIuY29tLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMDQ5MDIwMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5LcmlzdG9mZmVyIEthcmxzc29uPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPWtyaXN0b2ZmZXJrYXJsc3NvbjkzIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8IS0tIG1hcmtkb3dubGludC1yZXN0b3JlIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+Cgo8IS0tIEFMTC1DT05UUklCVVRPUlMtTElTVDpFTkQgLS0+Cg== readmeEtag: '"4d5a529f7a19b52fab62aaf17e9c5263bd765e2d"' readmeLastModified: Tue, 29 Mar 2022 10:12:21 GMT repositoryId: 199614125 description: Use Jest or Chai to assert that HTTP responses satisfy an OpenAPI spec created: '2019-07-30T08:56:01Z' updated: '2025-12-11T11:06:52Z' language: TypeScript archived: false stars: 194 watchers: 11 forks: 38 owner: openapi-library logo: https://avatars.githubusercontent.com/u/53815441?v=4 license: MIT repoEtag: '"982859aab5b874db7602c4d6d41812452f2b57b69b87a00845a5040995271994"' repoLastModified: Thu, 11 Dec 2025 11:06:52 GMT foundInMaster: true id: e77dbc0bddfdcddf31c2fb1cff63cb6c - source: https://openapi.tools/ name: hikaku category: Testing language: Kotlin repository: https://github.com/codecentric/hikaku source_description: >- A library that tests if the implementation of a REST-API meets its specification. v2: false v3: true repositoryMetadata: base64Readme: >- IyBoaWtha3UKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2FwaS50cmF2aXMtY2kub3JnL2NvZGVjZW50cmljL2hpa2FrdS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9jb2RlY2VudHJpYy9oaWtha3UpIFshW01hdmVuIENlbnRyYWwgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9tYXZlbi1jZW50cmFsL3YvZGUuY29kZWNlbnRyaWMuaGlrYWt1L2hpa2FrdS1jb3JlLnN2ZyldKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9zZWFyY2g/cT1nOmRlLmNvZGVjZW50cmljLmhpa2FrdSkKCjxwIGFsaWduPSJjZW50ZXIiPgogIDxpbWcgc3JjPSJkb2NzL2ltYWdlcy9oaWtha3UtbG9nby1zbWFsbC5wbmciPgo8L3A+CgpIaWtha3UgKOavlOi8gykgaXMgamFwYW5lc2UgYW5kIG1lYW5zICJjb21wYXJpc29uIi4gVGhpcyBsaWJyYXJ5IHRlc3RzIGlmIGEgUkVTVC1BUEkgaW1wbGVtZW50YXRpb24gbWVldHMgaXRzIHNwZWNpZmljYXRpb24uCgpJZiB5b3UgY3JlYXRlIHlvdXIgUkVTVC1BUEkgY29udHJhY3QtZmlyc3Qgd2l0aG91dCB1c2luZyBhbnkgdHlwZSBvZiBnZW5lcmF0aW9uLCB5b3UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBzcGVjaWZpY2F0aW9uIGFuZCBpbXBsZW1lbnRhdGlvbiBkb24ndCBkaXZlcmdlLgpUaGUgYWltIG9mIHRoaXMgcHJvamVjdCBpcyB0byBtZWV0IHRoaXMgbmVlZCBhbmQgb2ZmZXIgYSBtZWNoYW5pc20gdG8gY2hlY2sgc3BlY2lmaWNhdGlvbiBhbmQgaW1wbGVtZW50YXRpb24gZm9yIGVxdWFsaXR5IHdpdGhvdXQgaGF2aW5nIHRvIGNyZWF0ZSByZXF1ZXN0cyB3aGljaCBhcmUgZmlyZWQgYWdhaW5zdCBhIG1vY2sgc2VydmVyLiBTbyB0aGlzIGxpYnJhcnkgd29uJ3QgY2hlY2sgdGhlIGJlaGF2aW9yIG9mIHRoZSBBUEksIGJ1dCB0aGUgc3RydWN0dXJhbCBjb3JyZWN0bmVzcy4gUGxlYXNlIHNlZSBhbHNvIHRoZSBzZWN0aW9uIFtsaW1pdGF0aW9uc10oI2xpbWl0YXRpb25zKQoKIyMgQ3VycmVudGx5IHN1cHBvcnRlZAoKKyAqKlNwZWNpZmljYXRpb25zKioKICArIFtPcGVuQVBJIDMuMC5YXShvcGVuYXBpL1JFQURNRS5tZCkKICArIFtSQU1MIDEuWF0ocmFtbC9SRUFETUUubWQpCiAgKyBbV0FETF0od2FkbC9SRUFETUUubWQpCisgKipJbXBsZW1lbnRhdGlvbnMqKgogICsgW1NwcmluZyBNVkMgNS4zLlhdKHNwcmluZy9SRUFETUUubWQpCiAgKyBbTWljcm9uYXV0XShtaWNyb25hdXQvUkVBRE1FLm1kKQogICsgW0pBWC1SUyAzLjAuWF0oamF4LXJzL1JFQURNRS5tZCkKICAgICsgW0FwYWNoZSBDWEZdKGh0dHA6Ly9jeGYuYXBhY2hlLm9yZykKICAgICsgW0Ryb3B3aXphcmRdKGh0dHBzOi8vd3d3LmRyb3B3aXphcmQuaW8pCiAgICArIFtKZXJzZXldKGh0dHBzOi8vamVyc2V5LmdpdGh1Yi5pbykKICAgICsgW1Jlc3RlYXN5XShodHRwczovL3Jlc3RlYXN5LmdpdGh1Yi5pbykKICAgICsgW1Jlc3RsZXRdKGh0dHBzOi8vcmVzdGxldC5jb20vb3Blbi1zb3VyY2UvZG9jdW1lbnRhdGlvbi91c2VyLWd1aWRlLzIuMy9leHRlbnNpb25zL2pheHJzKQogICAgKyBbUXVhcmt1c10oaHR0cHM6Ly9xdWFya3VzLmlvKQogIApQbGVhc2UgcmVmZXIgdG8gdGhlIGxpc3Qgb2YgW2FsbCBmZWF0dXJlc10oZG9jcy9mZWF0dXJlcy5tZCkuIFRvIGNoZWNrIHRoZSBmZWF0dXJlIHN1cHBvcnQgZm9yIGVhY2ggY29udmVydGVyLgpJdCBpcyBwb3NzaWJsZSB0aGF0IG5vdCBldmVyeSBjb252ZXJ0ZXIgc3VwcG9ydHMgZXZlcnkgZmVhdHVyZS4gT25seSB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSBmZWF0dXJlcyBvZiB0d28gYEVuZHBvaW50Q29udmVydGVyYHMgaXMgdXNlZCBmb3IgdGhlIG1hdGNoaW5nLiBQbGVhc2Uga2VlcCB0aGF0IGluIG1pbmQgcmVnYXJkaW5nIHRoZSBlcXVhbGl0eSBvZiBpbXBsZW1lbnRhdGlvbiBhbmQgc3BlY2lmaWNhdGlvbi4KICAKIyMgVXNhZ2UKClNldHRpbmcgdXAgYSB0ZXN0IHdpdGggaGlrYWt1IGlzIHZlcnkgc2ltcGxlLiBZb3UganVzdCBpbnN0YW50aWF0ZSB0aGUgYEhpa2FrdWAgY2xhc3MgYW5kIHByb3ZpZGUgYW4gYEVuZHBvaW50Q29udmVydGVyYCBmb3IgdGhlIHNwZWNpZmljYXRpb24gYW5kIGFub3RoZXIgb25lIGZvciB0aGUgaW1wbGVtZW50YXRpb24uIE9wdGlvbmFsbHksIHlvdSBjYW4gYWxzbyBwYXNzIGFuIGluc3RhbmNlIG9mIGBIaWtha3VDb25maWdgLiBDaGVjayB0aGUgbGlzdCBvZiBvcHRpb25zIGFuZCBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgW2NvbmZpZ10oZG9jcy9jb25maWcubWQpLiBUaGVuIHlvdSBjYWxsIGBtYXRjaCgpYCBvbiB0aGUgYEhpa2FrdWAgY2xhc3MuClRoZSBtYXRjaCByZXN1bHQgaXMgc2VudCB0byBvbmUgb3IgbXVsdGlwbGUgYFJlcG9ydGVyYC4gSWYgdGhlIHRlc3QgZmFpbHMga290bGluJ3MgYERlZmF1bHRBc3NlcnRlci5mYWlsKClgIG1ldGhvZCBpcyBjYWxsZWQuCgojIyMgRXhhbXBsZQoKVGhlcmUgaXMgYW4gYXJ0aWZhY3QgZm9yIGVhY2ggY29udmVydGVyLiBTbyB3ZSBuZWVkIG9uZSBkZXBlbmRlbmN5IGZvciB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgb25lIGZvciB0aGUgaW1wbGVtZW50YXRpb24uIEluIHRoaXMgZXhhbXBsZSBvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gYW5kIGEgU3ByaW5nIGltcGxlbWVudGF0aW9uLiBUaGUgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBjb250YWluIHRoZSBfL2Vycm9yXyBlbmRwb2ludHMgY3JlYXRlZCBieSBzcHJpbmcsIHNvIHdlIHdhbnQgdG8gb21pdCB0aG9zZS4KRmlyc3QgYWRkIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBjb252ZXJ0ZXJzLCB0aGF0IHdlIHdhbnQgdG8gdXNlLiBJbiB0aGlzIGNhc2UgYGhpa2FrdS1vcGVuYXBpYCBhbmQgYGhpa2FrdS1zcHJpbmdgLgoKYGBgZ3JhZGxlCmRlcGVuZGVuY2llcyB7CiAgICB0ZXN0SW1wbGVtZW50YXRpb24gImRlLmNvZGVjZW50cmljLmhpa2FrdTpoaWtha3Utb3BlbmFwaTokaGlrYWt1VmVyc2lvbiIKICAgIHRlc3RJbXBsZW1lbnRhdGlvbiAiZGUuY29kZWNlbnRyaWMuaGlrYWt1Omhpa2FrdS1zcHJpbmc6JGhpa2FrdVZlcnNpb24iCn0KYGBgCgojIyMjIEtvdGxpbgoKQW5kIG5vdyB3ZSBjYW4gY3JlYXRlIHRoZSB0ZXN0IGNhc2U6CgpgYGBrb3RsaW4KQFNwcmluZ0Jvb3RUZXN0CmNsYXNzIFNwZWNpZmljYXRpb25UZXN0IHsKCiAgICBAQXV0b3dpcmVkCiAgICBwcml2YXRlIGxhdGVpbml0IHZhciBzcHJpbmdDb250ZXh0OiBBcHBsaWNhdGlvbkNvbnRleHQKCiAgICBAVGVzdAogICAgZnVuIGBzcGVjaWZpY2F0aW9uIG1hdGNoZXMgaW1wbGVtZW50YXRpb25gKCkgewogICAgICAgIEhpa2FrdSgKICAgICAgICAgICAgICAgIHNwZWNpZmljYXRpb24gPSBPcGVuQXBpQ29udmVydGVyKFBhdGhzLmdldCgib3BlbmFwaS55YW1sIikpLAogICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gPSBTcHJpbmdDb252ZXJ0ZXIoc3ByaW5nQ29udGV4dCksCiAgICAgICAgICAgICAgICBjb25maWcgPSBIaWtha3VDb25maWcoCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnMgPSBsaXN0T2YoU3ByaW5nQ29udmVydGVyLklHTk9SRV9FUlJPUl9FTkRQT0lOVCkKICAgICAgICAgICAgICAgICkKICAgICAgICApCiAgICAgICAgLm1hdGNoKCkKICAgIH0KfQpgYGAKCiMjIyMgSmF2YQoKU2FtZSBleGFtcGxlIGluIEphdmE6CgpgYGBqYXZhCkBTcHJpbmdCb290VGVzdApwdWJsaWMgY2xhc3MgU3BlY2lmaWNhdGlvblRlc3QgewoKICBAQXV0b3dpcmVkCiAgcHJpdmF0ZSBBcHBsaWNhdGlvbkNvbnRleHQgc3ByaW5nQ29udGV4dDsKCiAgQFRlc3QKICBwdWJsaWMgdm9pZCBzcGVjaWZpY2F0aW9uX21hdGNoZXNfaW1wbGVtZW50YXRpb24oKSB7CiAgICBMaXN0PEZ1bmN0aW9uMTxFbmRwb2ludCwgQm9vbGVhbj4+IGZpbHRlcnMgPSBuZXcgQXJyYXlMaXN0PD4oKTsKICAgIGZpbHRlcnMuYWRkKFNwcmluZ0NvbnZlcnRlci5JR05PUkVfRVJST1JfRU5EUE9JTlQpOwoKICAgIExpc3Q8UmVwb3J0ZXI+IHJlcG9ydGVycyA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgcmVwb3J0ZXJzLmFkZChuZXcgQ29tbWFuZExpbmVSZXBvcnRlcigpKTsKCiAgICBuZXcgSGlrYWt1KAogICAgICAgICAgICBuZXcgT3BlbkFwaUNvbnZlcnRlcihQYXRocy5nZXQoIm9wZW5hcGkuanNvbiIpKSwKICAgICAgICAgICAgbmV3IFNwcmluZ0NvbnZlcnRlcihzcHJpbmdDb250ZXh0KSwKICAgICAgICAgICAgbmV3IEhpa2FrdUNvbmZpZygKICAgICAgICAgICAgICAgICAgICByZXBvcnRlcnMsCiAgICAgICAgICAgICAgICAgICAgZmlsdGVycwogICAgICAgICAgICApCiAgICApCiAgICAubWF0Y2goKTsKICB9Cn0KYGBgCgojIyBMaW1pdGF0aW9ucwpIaWtha3UgY2hlY2tzIHRoZSBpbXBsZW1lbnRhdGlvbiB3aXRoIHN0YXRpYyBjb2RlIGFuYWx5c2lzLiBTbyBldmVyeXRoaW5nIHRoYXQgaXMgaGlnaGx5IGR5bmFtaWMgaXMgbm90IGNvdmVyZWQgYnkgaGlrYWt1LiBUaGVyZSBtaWdodCBiZSBvdGhlciBsaWJyYXJpZXMgYW5kIGZyYW1ld29ya3MgdGhhdCBjYW4gY292ZXIgdGhlc2UgYXNwZWN0cyBieSBjaGVja2luZyB0aGUgYmVoYXZpb3IuCgojIyMgaHR0cCBzdGF0dXMgY29kZXMKRm9yIGltcGxlbWVudGF0aW9ucyB0aGUgc3RhdHVzIGNvZGVzIGFyZSB2ZXJ5IGR5bmFtaWMuIFRoZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gc2V0IGEgaHR0cCBzdGF0dXMuIEZvciBleGFtcGxlIHVzaW5nIGEgYFJlc3BvbnNlRW50aXR5YCBvYmplY3QgaW4gc3ByaW5nIG9yIHVzaW5nIGFkZGl0aW9uYWwgZmlsdGVycyBhbmQgc28gb24uIFRoYXQncyB3aHkgaGlrYWt1IGRvZXMgbm90IHN1cHBvcnQgaHR0cCBzdGF0dXMgY29kZXMuCgojIyMgUmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0CkZvciBpbXBsZW1lbnRhdGlvbnMgYm90aCByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzIGFyZSBoaWdobHkgZHluYW1pYy4gRm9yIHJlc3BvbnNlIG9iamVjdHMgdGhlcmUgbWlnaHQgYmUgYSBnZW5lcmljIGBSZXNwb25zZUVudGl0eWAgYXMgd2VsbCBvciBpbnRlcmZhY2VzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBjYW4gYmUgdXNlZC4gSW4gYm90aCBjYXNlcyAocmVxdWVzdCBhbmQgcmVzcG9uc2UpIHRoZSBvYmplY3RzIGNhbiBiZSBhbHRlcmVkIGJ5IGEgc2VyaWFsaXphdGlvbiBsaWJyYXJ5IGFuZCB0aGVyZSBhIGxvdCBvZiBkaWZmZXJlbnQgbGlicyBvdXQgdGhlcmUuIFRoYXQncyB3aHkgaGlrYWt1IG5laXRoZXIgc3VwcG9ydHMgcmVxdWVzdCBub3IgcmVzcG9uc2Ugb2JqZWN0cy4KCiMjIE1vcmUgSW5mbwoKKiAqKkJsb2cgKGVuZ2xpc2gpOioqIFtTcG90dGluZyBtaXNtYXRjaGVzIGJldHdlZW4geW91ciBzcGVjIGFuZCB5b3VyIFJFU1QtQVBJIHdpdGggaGlrYWt1XShodHRwczovL2Jsb2cuY29kZWNlbnRyaWMuZGUvZW4vMjAxOS8wMy9zcG90LW1pc21hdGNoZXMtYmV0d2Vlbi15b3VyLXNwZWMtYW5kLXlvdXItcmVzdC1hcGkvKQoqICoqQmxvZyAoZ2VybWFuKToqKiBbIEFid2VpY2h1bmdlbiB6d2lzY2hlbiBTcGV6aWZpa2F0aW9uIHVuZCBSRVNULUFQSSBtaXQgaGlrYWt1IGVya2VubmVuXShodHRwczovL2Jsb2cuY29kZWNlbnRyaWMuZGUvMjAxOS8wMy9hYndlaWNodW5nZW4tendpc2NoZW4tcmVzdC1hcGktc3BlemlmaWthdGlvbi1lcmtlbm5lbi8pCiogKipTYW1wbGUgcHJvamVjdCoqIFtBIGNvbXBsZXRlIHNhbXBsZSBwcm9qZWN0XShodHRwczovL2dpdGh1Yi5jb20vY2MtamhyL2hpa2FrdS1zYW1wbGUpCg== readmeEtag: '"9552177ad0f534c779e456e00de9b84f2e23f7b9"' readmeLastModified: Thu, 19 Aug 2021 18:39:18 GMT repositoryId: 167929609 description: >- A library that tests if the implementation of a REST-API meets its specification. created: '2019-01-28T08:54:05Z' updated: '2026-02-02T11:38:29Z' language: Kotlin archived: false stars: 200 watchers: 6 forks: 16 owner: codecentric logo: https://avatars.githubusercontent.com/u/1009716?v=4 license: Apache-2.0 repoEtag: '"58d17b1521736ba35aeab9eccf15c1a744574470963e7e5c7859394624f5540e"' repoLastModified: Mon, 02 Feb 2026 11:38:29 GMT foundInMaster: true id: 0724d08c486c3cc69b4e067f07cdabd8 - source: https://openapi.tools/ name: Tcases for OpenAPI category: Testing language: Java repository: https://github.com/cornutum/tcases/blob/master/tcases-openapi/readme.md source_description: >- Generates test cases directly from an OpenAPI v3 description of your API. Creates tests executable using various test frameworks. Bonus: Semantic linter reports elements that are inconsistent, superfluous, or dubious. v2: false v3: true repositoryMetadata: base64Readme: >- IyBUY2FzZXM6IEEgTW9kZWwtQmFzZWQgVGVzdCBDYXNlIEdlbmVyYXRvciAjCgpbIVtNYXZlbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9tYXZlbi00LjEuMS1ncmVlbi5zdmcpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9dGNhc2VzLXNoZWxsKQpbIVtKYXZhZG9jXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2phdmFkb2MtNC4xLjEtZ3JlZW4uc3ZnKV0oaHR0cHM6Ly9qYXZhZG9jLmlvL2RvYy9vcmcuY29ybnV0dW0udGNhc2VzL3RjYXNlcy1zaGVsbCkKCiMjIFdoYXQncyBOZXc/ICMjCiAgKiBUaGUgbGF0ZXN0IHZlcnNpb24gKFtUY2FzZXMgNC4xLjFdKFJlbGVhc2VOb3Rlcy5tZCM0MTEpKSBpcyBub3cgYXZhaWxhYmxlIGF0IHRoZSBNYXZlbiBDZW50cmFsIFJlcG9zaXRvcnkuCiAgICBTZWUgWypIb3cgVG8gRG93bmxvYWQgVGNhc2VzKl0oSG93VG9Eb3dubG9hZC5tZCkgZm9yIGRvd25sb2FkIGluc3RydWN0aW9ucy4KCiAgKiBIYXZpbmcgdHJvdWJsZSB3aXRoIFRjYXNlcz8gQ2hlY2sgb3V0IFt0aGVzZSB0aXBzXSguL1Ryb3VibGVzaG9vdGluZy1GQVFzLm1kKS4KCiAgKiBHb3QgYSBxdWVzdGlvbj8gTmVlZCBzb21lIGd1aWRhbmNlPyBTdGFydCBhIFtkaXNjdXNzaW9uXShodHRwczovL2dpdGh1Yi5jb20vQ29ybnV0dW0vdGNhc2VzL2Rpc2N1c3Npb25zKS4KCiMjIFdoYXQgRG9lcyBJdCBEbz8gIyMKClRjYXNlcyBpcyBhIHRvb2wgZm9yIGRlc2lnbmluZyB0ZXN0cy4gSXQgZG9lc24ndCBtYXR0ZXIgd2hhdCBraW5kIG9mIHN5c3RlbSB5b3UgYXJlIHRlc3RpbmcgLS0gVUksIGNvbW1hbmQgbGluZSwKW1JFU1QtZnVsIEFQSV0odGNhc2VzLW9wZW5hcGkvUkVBRE1FLm1kI3RjYXNlcy1mb3Itb3BlbmFwaS1mcm9tLXJlc3QtZnVsLXRvLXRlc3QtZnVsKSwgb3IgYmFja2VuZC4gIE5vciBkb2VzIGl0IG1hdHRlcgp3aGF0IGxldmVsIG9mIHRoZSBzeXN0ZW0geW91IGFyZSB0ZXN0aW5nIC0tIHVuaXQsIHN1YnN5c3RlbSwgb3IgZnVsbCBzeXN0ZW0uIFlvdSBjYW4gdXNlIFRjYXNlcyB0byBkZXNpZ24geW91ciB0ZXN0cyBpbiBhbnkgb2YKdGhlc2Ugc2l0dWF0aW9ucy4gV2l0aCBUY2FzZXMsIHlvdSBkZWZpbmUgdGhlIGlucHV0IHNwYWNlIGZvciB5b3VyIHN5c3RlbS11bmRlci10ZXN0IGFuZCB0aGUgbGV2ZWwgb2YgY292ZXJhZ2UgdGhhdCB5b3UKd2FudC4gVGhlbiBUY2FzZXMgZ2VuZXJhdGVzIGEgbWluaW1hbCBzZXQgb2YgdGVzdCBjYXNlcyB0aGF0IG1lZXRzIHlvdXIgcmVxdWlyZW1lbnRzLgoKVGNhc2VzIGlzIHByaW1hcmlseSBhIHRvb2wgZm9yIGJsYWNrLWJveCB0ZXN0IGRlc2lnbi4gRm9yIHN1Y2ggdGVzdHMsIHRoZSBjb25jZXB0IG9mICJjb3ZlcmFnZSIgaXMgZGlmZmVyZW50IGZyb20gc3RydWN0dXJhbAp0ZXN0aW5nIGNyaXRlcmlhIHN1Y2ggYXMgbGluZSBjb3ZlcmFnZSwgYnJhbmNoIGNvdmVyYWdlLCBldGMuIEluc3RlYWQsIFRjYXNlcyBpcyBndWlkZWQgYnkgY292ZXJhZ2Ugb2YgdGhlIGlucHV0IHNwYWNlIG9mIHlvdXIKc3lzdGVtLgoKVGNhc2VzIGdpdmVzIHlvdSBhIHdheSB0byBkZWZpbmUgdGhlIGlucHV0IHNwYWNlIGZvciB5b3VyIHN5c3RlbSBpbiBhIGZvcm0gdGhhdCBpcyBjb25jaXNlIGJ1dCBjb21wcmVoZW5zaXZlLiBUaGVuIFRjYXNlcyBhbGxvd3MKeW91IHRvIGNvbnRyb2wgdGhlIG51bWJlciBvZiB0ZXN0IGNhc2VzIGluIHlvdXIgc2FtcGxlIHN1YnNldCBieSBzcGVjaWZ5aW5nIHRoZSBsZXZlbCBvZiBjb3ZlcmFnZSB5b3Ugd2FudC4gWW91IGNhbiBzdGFydCB3aXRoIGEKYmFzaWMgbGV2ZWwgb2YgY292ZXJhZ2UsIGFuZCBUY2FzZXMgd2lsbCBnZW5lcmF0ZSBhIHNtYWxsIHNldCBvZiB0ZXN0IGNhc2VzIHRoYXQgdG91Y2hlcyBldmVyeSBzaWduaWZpY2FudCBlbGVtZW50IG9mIHRoZSBpbnB1dApzcGFjZS4gVGhlbiB5b3UgY2FuIGltcHJvdmUgeW91ciB0ZXN0cyBieSBzZWxlY3RpdmVseSBhZGRpbmcgY292ZXJhZ2UgaW4gc3BlY2lmaWMgaGlnaC1yaXNrIGFyZWFzLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBzcGVjaWZ5CnBhaXJ3aXNlIGNvdmVyYWdlIG9yIGhpZ2hlci1vcmRlciBjb21iaW5hdGlvbnMgb2Ygc2VsZWN0ZWQgaW5wdXQgdmFyaWFibGVzLgoKIyMgSG93IERvZXMgSXQgV29yaz8gIyMKCkZpcnN0LCB5b3UgY3JlYXRlIGEgc3lzdGVtIGlucHV0IGRlZmluaXRpb24sIGEgZG9jdW1lbnQgdGhhdCBkZWZpbmVzIHlvdXIgc3lzdGVtIGFzIGEgc2V0IG9mIGZ1bmN0aW9ucy4gRm9yIGVhY2ggc3lzdGVtCmZ1bmN0aW9uLCB0aGUgc3lzdGVtIGlucHV0IGRlZmluaXRpb24gZGVmaW5lcyB0aGUgdmFyaWFibGVzIHRoYXQgY2hhcmFjdGVyaXplIHRoZSBmdW5jdGlvbiBpbnB1dCBzcGFjZS4gSWYgeW91IGFyZSB0ZXN0aW5nIGEgV2ViCnNlcnZpY2UgQVBJLCB5b3UgY2FuIGV2ZW4gW2dlbmVyYXRlIGEgc3lzdGVtIGlucHV0IGRlZmluaXRpb24gYXV0b21hdGljYWxseV0odGNhc2VzLW9wZW5hcGkvUkVBRE1FLm1kI3RjYXNlcy1mb3Itb3BlbmFwaS1mcm9tLXJlc3QtZnVsLXRvLXRlc3QtZnVsKQpmcm9tIGFuIE9wZW5BUEkgZGVmaW5pdGlvbi4KClRoZW4sIHlvdSBjYW4gY3JlYXRlIGEgZ2VuZXJhdG9yIGRlZmluaXRpb24uIFRoYXQncyBhbm90aGVyIGRvY3VtZW50IHRoYXQgZGVmaW5lcyB0aGUgY292ZXJhZ2UgeW91IHdhbnQgZm9yIGVhY2ggc3lzdGVtCmZ1bmN0aW9uLiBUaGUgZ2VuZXJhdG9yIGRlZmluaXRpb24gaXMgb3B0aW9uYWwuIFlvdSBjYW4gc2tpcCB0aGlzIHN0ZXAgYW5kIHN0aWxsIGdldCBhIGJhc2ljIGxldmVsIG9mIGNvdmVyYWdlLgoKRmluYWxseSwgeW91IHJ1biBUY2FzZXMuIFRjYXNlcyBpcyBhIEphdmEgcHJvZ3JhbSB0aGF0IHlvdSBjYW4gcnVuIGZyb20gdGhlIGNvbW1hbmQgbGluZSBvciB1c2luZyB0aGUKW1RjYXNlcyBNYXZlbiBQbHVnaW5dKGh0dHA6Ly93d3cuY29ybnV0dW0ub3JnL3RjYXNlcy9kb2NzL3RjYXNlcy1tYXZlbi1wbHVnaW4vKS4gVGhlIGNvbW1hbmQgbGluZSB2ZXJzaW9uIG9mIFRjYXNlcyBjb21lcyB3aXRoIGJ1aWx0LWluCnN1cHBvcnQgZm9yIHJ1bm5pbmcgdXNpbmcgYSBzaGVsbCBzY3JpcHQgb3IgYW4gYW50IHRhcmdldC4gVXNpbmcgeW91ciBpbnB1dCBkZWZpbml0aW9uIGFuZCB5b3VyIGdlbmVyYXRvciBkZWZpbml0aW9uLCBUY2FzZXMKZ2VuZXJhdGVzIGEgc3lzdGVtIHRlc3QgZGVmaW5pdGlvbi4gVGhlIHN5c3RlbSB0ZXN0IGRlZmluaXRpb24gaXMgYSBkb2N1bWVudCB0aGF0IGxpc3RzLCBmb3IgZWFjaCBzeXN0ZW0gZnVuY3Rpb24sIGEgc2V0IG9mIHRlc3QKY2FzZXMgdGhhdCBwcm92aWRlcyB0aGUgc3BlY2lmaWVkIGxldmVsIG9mIGNvdmVyYWdlLiBFYWNoIHRlc3QgY2FzZSBkZWZpbmVzIGEgc3BlY2lmaWMgdmFsdWUgZm9yIGV2ZXJ5IGZ1bmN0aW9uIGlucHV0CnZhcmlhYmxlLiBUY2FzZXMgZ2VuZXJhdGVzIG5vdCBvbmx5IHZhbGlkIGlucHV0IHZhbHVlcyB0aGF0IGRlZmluZSBzdWNjZXNzZnVsIHRlc3QgY2FzZXMgYnV0IGFsc28gaW52YWxpZCB2YWx1ZXMgZm9yIHRoZSB0ZXN0cwpjYXNlcyB0aGF0IGFyZSBuZWVkZWQgdG8gdmVyaWZ5IGV4cGVjdGVkIGVycm9yIGhhbmRsaW5nLgoKT2YgY291cnNlLCB0aGUgc3lzdGVtIHRlc3QgZGVmaW5pdGlvbiBpcyBub3Qgc29tZXRoaW5nIHlvdSBjYW4gZXhlY3V0ZSBkaXJlY3RseS4gKFVubGVzcyBpdCB3YXMKW2Rlcml2ZWQgYXV0b21hdGljYWxseSBmcm9tIGFuIE9wZW5BUEkgZGVmaW5pdGlvbl0odGNhc2VzLW9wZW5hcGkvUkVBRE1FLm1kI2hvdy1kby15b3UtcnVuLWdlbmVyYXRlZC1hcGktdGVzdC1jYXNlcykhKQpCdXQgaXQgZm9sbG93cyBhIHdlbGwtZGVmaW5lZCBzY2hlbWEsIHdoaWNoIG1lYW5zIHlvdSBjYW4gdXNlIGEgdmFyaWV0eSBvZiB0cmFuc2Zvcm1hdGlvbiB0b29scyB0byBjb252ZXJ0IGl0IGludG8gYSBmb3JtIHRoYXQKaXMgc3VpdGFibGUgZm9yIHRlc3RpbmcgeW91ciBzeXN0ZW0uIEZvciBleGFtcGxlLCBUY2FzZXMgY29tZXMgd2l0aCBhIGJ1aWx0LWluIHRyYW5zZm9ybWVyIHRoYXQgY29udmVydHMgYSBzeXN0ZW0gdGVzdApkZWZpbml0aW9uIGludG8gYSBKYXZhIHNvdXJjZSBjb2RlIHRlbXBsYXRlIGZvciBhIEpVbml0IG9yIFRlc3RORyB0ZXN0IGNsYXNzLgoKIyMgR2V0IFN0YXJ0ZWQhICMjCgogICogKipUaGUgTG93ZG93bioqCiAgICAqIFtUY2FzZXM6IFRoZSBDb21wbGV0ZSBHdWlkZV0oLi9UY2FzZXMtR3VpZGUubWQjdGNhc2VzLXRoZS1jb21wbGV0ZS1ndWlkZSkKICAgICogW1RjYXNlcyBmb3IgT3BlbkFQSV0odGNhc2VzLW9wZW5hcGkvUkVBRE1FLm1kI3RjYXNlcy1mb3Itb3BlbmFwaS1mcm9tLXJlc3QtZnVsLXRvLXRlc3QtZnVsKTogVGVzdGluZyBhIFJFU1QtZnVsIEFQST8gR2VuZXJhdGUgdGVzdCBjYXNlcyBkaXJlY3RseSBmcm9tIHlvdXIgT3BlbkFQSSB2MyBkZWZpbml0aW9uLgogICAgKiBbVGhlIFRjYXNlcyBNYXZlbiBQbHVnaW5dKGh0dHA6Ly93d3cuY29ybnV0dW0ub3JnL3RjYXNlcy9kb2NzL3RjYXNlcy1tYXZlbi1wbHVnaW4vKQoKICAqICoqSGVscGZ1bCBHdWlkZXMqKgogICAgKiBbSG93IFRvIERvd25sb2FkIFVzaW5nIE1hdmVuXShIb3dUb0Rvd25sb2FkLm1kKQogICAgKiBbSG93IFRvIFNldHVwIGEgVGNhc2VzIFdlYiBTZXJ2aWNlXSguL1RjYXNlcy1XZWItU2VydmljZS5tZCkKICAgICogW1VzaW5nIFRoZSBUY2FzZXMgQVBJXSguL1VzaW5nLVRjYXNlcy1BUEkubWQpCiAgICAqIFtUcm91Ymxlc2hvb3RpbmcgRkFRXSguL1Ryb3VibGVzaG9vdGluZy1GQVFzLm1kI3Ryb3VibGVzaG9vdGluZy1mYXFzKQogICAgKiBbUmVsZWFzZSBOb3Rlc10oUmVsZWFzZU5vdGVzLm1kKQoKICAqICoqTW9yZSBJbmZvKioKICAgICogW01vZGVsLURyaXZlbiBUZXN0aW5nIFVzaW5nIFRjYXNlc10oTW9kZWxEcml2ZW5UZXN0aW5nRm9yQWdpbGVUZWFtcy5tZCkKICAgICogSmF2YWRvYzogW1RjYXNlcyBBUEldKGh0dHA6Ly93d3cuY29ybnV0dW0ub3JnL3RjYXNlcy9kb2NzL2FwaS9pbmRleC5odG1sKQoKIyMgQ29udHJpYnV0b3JzICMjCgpUaGFua3MgdG8gdGhlIGZvbGxvd2luZyBwZW9wbGUsIHdobyBoYXZlIGNvbnRyaWJ1dGVkIHNpZ25pZmljYW50IGltcHJvdmVtZW50cyB0byBUY2FzZXMuCgogICogW0tlcnJ5IEtpbWJyb3VnaF0oaHR0cHM6Ly9naXRodWIuY29tL2tlcnJ5a2ltYnJvdWdoKSAocHJvamVjdCBmb3VuZGVyKQogICogW0p1Z2xhcl0oaHR0cHM6Ly9naXRodWIuY29tL2p1Z2xhcikKICAqIFtUaGliYXVsdCBLcnVzZV0oaHR0cHM6Ly9naXRodWIuY29tL3RrcnVzZSkK readmeEtag: '"ca9a75dabe602853f00d0e6ee6f9a7326d7f4433"' readmeLastModified: Thu, 27 Nov 2025 22:47:20 GMT repositoryId: 32223373 description: A model-based test case generator created: '2015-03-14T17:22:38Z' updated: '2025-12-18T16:57:03Z' language: Java archived: false stars: 236 watchers: 16 forks: 56 owner: Cornutum logo: https://avatars.githubusercontent.com/u/11477145?v=4 license: MIT repoEtag: '"a1d286eef641716d283e62ff50d46ad41827aaf523f41391a8f106f17a7d330b"' repoLastModified: Thu, 18 Dec 2025 16:57:03 GMT foundInMaster: true id: 64dc602f01798a9a39aba18c09d655ae - source: https://openapi.tools/ name: StackHawk HawkScan category: Security language: SaaS repository: https://github.com/stackhawk source_description: >- StackHawk is an application vulnerability scanner purpose built for developers to use in the DevOps pipeline. It leverages a provided OpenAPI v2 or v3 spec file for route discovery and enhanced scanning. link: https://stackhawk.com/ v2: true v3: true foundInMaster: true id: d27194a62778c331d662fae462dc8045 - source: https://openapi.tools/ name: FireTail category: Security language: SaaS repository: https://github.com/firetail-io source_description: >- FireTail provides discovery, logging, posture management and in-line enforcement of APIs using OpenAPI. API governance is backed by cloud provider integrations and a suite of open-source application libraries. link: https://www.firetail.io/ v2: true v3: true id: cbc88089f856e67eed142049e8a38063 foundInMaster: true - source: https://openapi.tools/ name: 42crunch category: Security language: SaaS source_description: >- A unique set of integrated API security tools that allow discovery, remediation of OpenAPI vulnerabilities and runtime protection against API attacks. link: https://42crunch.com/ v2: true v3: true foundInMaster: true id: 1b7c824e66c86452d1843ccac1465b71 - source: https://openapi.tools/ name: openapi-fuzzer category: - Security - Parsers language: Rust source_description: >- Based on OpenAPI specification, openapi-fuzzer provides random data as inputs to the API endpoints in order to find bugs. link: https://github.com/matusf/openapi-fuzzer v2: false v3: true foundInMaster: true repository: https://github.com/matusf/openapi-fuzzer repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIGZ1enplcgoKIVtjaV0oaHR0cHM6Ly9naXRodWIuY29tL21hdHVzZi9vcGVuYXBpLWZ1enplci9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwvYmFkZ2Uuc3ZnKQoKQmxhY2stYm94IGZ1enplciB0aGF0IGZ1enplcyBBUElzIGJhc2VkIG9uIFtPcGVuQVBJIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uLykuIEFsbCB5b3UgbmVlZCB0byBkbyBpcyB0byBzdXBwbHkgVVJMIG9mIHRoZSBBUEkgYW5kIGl0cyBzcGVjaWZpY2F0aW9uLiBGaW5kIGJ1Z3MgZm9yIGZyZWUhCgohW2ltYWdlXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xODIyODk5NS8yMjU0MTMzMTUtZWFiMDhkZjItZWQ1Ni00YjdhLThjOGEtMDI3YzE4ZDlhMTA2LnBuZykKCiMjIEZpbmRpbmdzCgpUaGUgZnV6emVyIGhhcyBiZWVuIHVzZWQgdG8gZmluZCBidWdzIGluIG51bWVyb3VzIHNvZnR3YXJlLiBTb21lIG9mIHRoZSB3ZWxsLWtub3duIGZ1enplZCBzb2Z0d2FyZSBpbmNsdWRlW14xXToKCjxkZXRhaWxzPjxzdW1tYXJ5PjxiPkt1YmVybmV0ZXM8L2I+PC9zdW1tYXJ5PgoKLSBba3ViZW5ldGVzIzEwMTM1MF0oaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMva3ViZXJuZXRlcy9pc3N1ZXMvMTAxMzUwKQotIFtrdWJlbmV0ZXMjMTAxMzQ4XShodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rdWJlcm5ldGVzL2lzc3Vlcy8xMDEzNDgpCi0gW2t1YmVuZXRlcyMxMDEzNTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9rdWJlcm5ldGVzL2t1YmVybmV0ZXMvaXNzdWVzLzEwMTM1NSkKCjwvZGV0YWlscz4KCjxkZXRhaWxzPjxzdW1tYXJ5PjxiPkdpdGVhPC9iPjwvc3VtbWFyeT4KCi0gW2dpdGVhIzE1MzU3XShodHRwczovL2dpdGh1Yi5jb20vZ28tZ2l0ZWEvZ2l0ZWEvaXNzdWVzLzE1MzU3KQotIFtnaXRlYSMxNTM1Nl0oaHR0cHM6Ly9naXRodWIuY29tL2dvLWdpdGVhL2dpdGVhL2lzc3Vlcy8xNTM1NikKLSBbZ2l0ZWEjMTUzNDZdKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1naXRlYS9naXRlYS9pc3N1ZXMvMTUzNDYpCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz48c3VtbWFyeT48Yj5WYXVsdDwvYj48L3N1bW1hcnk+CgotIFt2YXVsdCMxMTMxMF0oaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC92YXVsdC9pc3N1ZXMvMTEzMTApCi0gW3ZhdWx0IzExMzExXShodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3ZhdWx0L2lzc3Vlcy8xMTMxMSkKLSBbdmF1bHQjMTEzMTNdKGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdmF1bHQvaXNzdWVzLzExMzEzKQoKPC9kZXRhaWxzPgoKVGhlIGNhdGVnb3J5IG9mIGJ1Z3MgZGlmZmVyLCBidXQgc29tZSBvZiB0aGUgY29tbW9uIGFyZSBwYXJzaW5nIGJ1Z3MsIGludmFsaWQgZm9ybWF0IGJ1Z3MgYW5kIHF1ZXJ5aW5nIG5vbi1leGlzdGVudCBlbnRpdGllcy4gKipJZiB5b3UgaGF2ZSBmb3VuZCBidWdzIHdpdGggdGhpcyBmdXp6ZXIsIHBsZWFzZSByZWFjaCBvdXQgdG8gbWUuIEkgd291bGQgbG92ZSB0byBoZWFyIGZyb20geW91LioqIEZlZWwgZnJlZSB0byBzdWJtaXQgYSBQUiBhbmQgYWRkIHlvdXIgZmluZGluZyB0byB0aGUgbGlzdCBhYm92ZS4KCiMjIEJ1aWxkaW5nICYgaW5zdGFsbGluZwoKIyMjIEZyb20gY3JhdGVzLmlvCgpUbyBidWlsZCB0aGUgZnV6emVyLCB5b3Ugd2lsbCBuZWVkIHRvIGhhdmUgW3J1c3QgaW5zdGFsbGVkXShodHRwczovL3d3dy5ydXN0LWxhbmcub3JnL2xlYXJuL2dldC1zdGFydGVkKS4KCmBgYHNoCmNhcmdvIGluc3RhbGwgb3BlbmFwaS1mdXp6ZXIKYGBgCgojIyMgRnJvbSBzb3VyY2UKCmBgYHNoCmdpdCBjbG9uZSBnaXRAZ2l0aHViLmNvbTptYXR1c2Yvb3BlbmFwaS1mdXp6ZXIuZ2l0CmNkIG9wZW5hcGktZnV6emVyCgojIEluc3RhbGwgdG8gdGhlICRQQVRICmNhcmdvIGluc3RhbGwgLS1wYXRoIC4KCiMgT3IgYnVpbGQgaW5zaWRlIHRoZSByZXBvCmNhcmdvIGJ1aWxkIC0tcmVsZWFzZQpgYGAKCiMjIyBVc2luZyBjb250YWluZXJzCgpgYGBzaApwb2RtYW4gcHVsbCBnaGNyLmlvL21hdHVzZi9vcGVuYXBpLWZ1enplcgpgYGAKCiMjIFVzYWdlCgpBZnRlciBpbnN0YWxsYXRpb24geW91IHdpbGwgaGF2ZSB0aGUgYG9wZW5hcGktZnV6emVyYCBiaW5hcnkgYXZhaWxhYmxlIHRvIHlvdSwgd2hpY2ggb2ZmZXJzIHR3byBzdWJjb21tYW5kcyAtIGBydW5gIGFuZCBgcmVzZW5kYC4gIFRoZSBgcnVuYCBzdWJjb21tYW5kIHdpbGwgZnV6eiB0aGUgQVBJIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgcmVwb3J0IGFueSBmaW5kaW5ncy4gQWxsIGZpbmRpbmdzIHdpbGwgYmUgc3RvcmVkIGluIGEgSlNPTiBmb3JtYXQgaW4gYSBgcmVzdWx0c2AgZGlyZWN0b3J5ICh0aGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IGNhbiBiZSBzcGVjaWZpZWQgYnkgYC0tcmVzdWx0cy1kaXJgIGZsYWcpLgoKSWYgdGhlIGZ1enplciBmaW5kcyBhIGJ1ZyBpdCB3aWxsIHNhdmUgdGhlIHNlZWQgdGhhdCBsZWFkcyB0byB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgcGF5bG9hZCB0cmlnZ2VyaW5nIHRoZSBidWcuIFRob3NlIHNlZWRzIGFyZSBzYXZlZCBpbiBhIHJlZ3Jlc3Npb25zIGZpbGUgY2FsbGVkIGBvcGVuYXBpLWZ1enplci5yZWdyZXNzaW9uc2AuIFRoZSBzZWVkcyB3aWxsIGJlIHVzZWQgaW4gdGhlIG5leHQgcnVucyBvZiB0aGUgZnV6emVyIHRvIGNoZWNrIGlmIHRoZSBidWcgcGVyc2lzdHMuIFlvdSBzaGFsbCBzYXZlIGl0IGFsb25nc2lkZSB5b3VyIHByb2plY3QuCgpXaGVuIHlvdSBhcmUgZG9uZSB3aXRoIGZ1enppbmcsIHlvdSBjYW4gdXNlIGBvcGVuYXBpLWZ1enplciByZXNlbmRgIHRvIHJlc2VuZCBwYXlsb2FkcyB0aGF0IHRyaWdnZXJlZCBidWdzIGFuZCBleGFtaW5lIHRoZSBjYXVzZSBpbiBkZXB0aC4KCk9wZW5BUEkgZnV6emVyIHN1cHBvcnRzIHZlcnNpb24gMyBvZiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGluIFlBTUwgb3IgSlNPTiBmb3JtYXQuIFlvdSBjYW4gY29udmVydCBvbGRlciB2ZXJzaW9ucyBhdCBbZWRpdG9yLnN3YWdnZXIuaW9dKGh0dHBzOi8vZWRpdG9yLnN3YWdnZXIuaW8vKS4KCiMjIyBUaXBzCgotIFdoZW4gdGhlIGZ1enplciByZWNlaXZlcyBhbiB1bmV4cGVjdGVkIHN0YXR1cyBjb2RlLCBpdCB3aWxsIHJlcG9ydCBpdCBhcyBhIGZpbmRpbmcuIEhvd2V2ZXIsIG1hbnkgQVBJcyBkbyBub3Qgc3BlY2lmeSBjbGllbnQgZXJyb3Igc3RhdHVzIGNvZGVzIGluIHRoZSBzcGVjaWZpY2F0aW9uLiBUbyBtaW5pbWl6ZSBmYWxzZSBwb3NpdGl2ZSBmaW5kaW5ncyBpZ25vcmUgc3RhdHVzIGNvZGVzIHRoYXQgeW91IGFyZSBub3QgaW50ZXJlc3RlZCBpbiB3aXRoIGAtaWAgZmxhZy4gSXQgaXMgYWR2aXNlZCB0byBmdXp6IGl0IGluIHR3byBzdGFnZXMuIEZpcnN0bHksIHJ1biB0aGUgZnV6emVyIHdpdGhvdXQgYC1pYCBmbGFnLiBUaGVuIGNoZWNrIHRoZSBgcmVzdWx0c2AgZm9sZGVyIGZvciB0aGUgcmVwb3J0ZWQgZmluZGluZ3MuIElmIHRoZXJlIGFyZSByZXBvcnRzIGZyb20gc3RhdHVzIGNvZGVzIHlvdSBkbyBub3QgY2FyZSBhYm91dCwgYWRkIHRoZW0gdmlhIGAtaWAgZmxhZyBhbmQgcmVydW4gdGhlIGZ1enplci4KLSBNb3N0IEFQSXMgdXNlIHNvbWUgYmFzZSBwcmVmaXggZm9yIGVuZHBvaW50cyBsaWtlIGAvdjFgIG9yIGAvYXBpYCwgaG93ZXZlciwgdGhlIHNwZWNpZmljYXRpb25zIGFyZSBzb21ldGltZXMgd3JpdHRlbiB3aXRob3V0IGl0LiBEbyBub3QgZm9yZ2V0IHRvICoqaW5jbHVkZSB0aGUgcGF0aCBwcmVmaXggaW4gdGhlIHVybCoqLgotIFlvdSBtYXkgYWRkIGFuIGV4dHJhIGhlYWRlciB3aXRoIGAtSGAgZmxhZy4gSXQgbWF5IGJlIHVzZWZ1bCB3aGVuIHlvdSB3b3VsZCBsaWtlIHRvIGluY3JlYXNlIGNvdmVyYWdlIGJ5IHByb3ZpZGluZyBzb21lIHNvcnQgb2YgYXV0aG9yaXphdGlvbi4gWW91IGNhbiB1c2UgdGhlIGAtSGAgZmxhZyB0byBhZGQgY29va2llcyB0b28uIGUuZy4gYC1IICJDb29raWU6IEE9MTsiYC4gVXNlIGEgc2luZ2xlIGAtSGAgZmxhZyB3aGVuIGFkZGluZyBtdWx0aXBsZSBjb29raWVzIGFzIHdlbGwuIGUuZy4gYC1IICJDb29raWU6IEE9MTsgQj0yOyBDPTM7ImAuCi0gQ3VycmVudGx5LCB0aGUgZnV6emVyIG1ha2VzIDI1NiByZXF1ZXN0cyBwZXIgZW5kcG9pbnQuIElmIGFsbCByZWNlaXZlZCByZXNwb25zZXMgYXJlIGV4cGVjdGVkLCBpdCBkZWNsYXJlcyB0aGUgZW5kcG9pbnQgYXMgb2sgYW5kIGNvbnRpbnVlcyB0byBmdXp6IHRoZSBuZXh0IG9uZS4gWW91IGNhbiBhZGp1c3QgdGhpcyBudW1iZXIgYnkgc2V0dGluZyBhIGAtLW1heC10ZXN0LWNhc2UtY291bnRgIGZsYWcuCi0gVG8gZGlzYWJsZSB0aGUgdmVyaWZpY2F0aW9uIG9mIFRMUyBjZXJ0aWZpY2F0ZXMgYW5kIHRodXMgdXNlLCBmb3IgZXhhbXBsZSwgc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzLCB5b3UgY2FuIHVzZSB0aGUgYC0tc2tpcC10bHMtdmVyaWZ5YCBmbGFnLgotIEJ5IGRlZmF1bHQsIHRoZSBmdXp6ZXIgdXNlcyByYXRlIGxpbWl0aW5nLiBJZiBpdCByZWNlaXZlcyBhbiBIVFRQIHN0YXR1cyBjb2RlIG9mIDQyOSBvciA1MDMsIGl0IHdpbGwgd2FpdCBmb3IgYSBudW1iZXIgb2Ygc2Vjb25kcyBzcGVjaWZpZWQgYnkgdGhlIGBSZXRyeS1BZnRlcmAgaGVhZGVyLiBJZiB0aGUgaGVhZGVyIGlzIG5vdCBwcmVzZW50LCBpdCB3aWxsIHVzZSBhbiBleHBvbmVudGlhbCBiYWNrb2ZmIGFsZ29yaXRobSB3aXRoIGEgc3RhcnRpbmcgdmFsdWUgb2YgMSBzZWNvbmQuIEFmdGVyIDEwIHVuc3VjY2Vzc2Z1bCByZXRyaWVzLCBmdXp6aW5nIG9mIHRoZSBlbmRwb2ludCBpcyBhYm9ydGVkLgoKYGBgY29uc29sZQokIG9wZW5hcGktZnV6emVyIHJ1biAtLWhlbHAKVXNhZ2U6IG9wZW5hcGktZnV6emVyIHJ1biAtcyA8c3BlYz4gLXUgPHVybD4gWy1pIDxpZ25vcmUtc3RhdHVzLWNvZGU+XSBbLUggPGhlYWRlcj5dIFstLW1heC10ZXN0LWNhc2UtY291bnQgPG1heC10ZXN0LWNhc2UtY291bnQ+XSBbLW8gPHJlc3VsdHMtZGlyPl0gWy0tc3RhdHMtZGlyIDxzdGF0cy1kaXI+XSBbLS1za2lwLXRscy12ZXJpZnldIFstLW5vLXJhdGUtbGltaXRpbmddCgpydW4gb3BlbmFwaS1mdXp6ZXIKCk9wdGlvbnM6CiAgLXMsIC0tc3BlYyAgICAgICAgcGF0aCB0byBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZQogIC11LCAtLXVybCAgICAgICAgIHVybCBvZiBhcGkgdG8gZnV6egogIC1pLCAtLWlnbm9yZS1zdGF0dXMtY29kZQogICAgICAgICAgICAgICAgICAgIHN0YXR1cyBjb2RlcyB0aGF0IHdpbGwgbm90IGJlIGNvbnNpZGVyZWQgYXMgZmluZGluZwogIC1ILCAtLWhlYWRlciAgICAgIGFkZGl0aW9uYWwgaGVhZGVyIHRvIHNlbmQKICAtLW1heC10ZXN0LWNhc2UtY291bnQKICAgICAgICAgICAgICAgICAgICBtYXhpbXVtIG51bWJlciBvZiB0ZXN0IGNhc2VzIHRoYXQgd2lsbCBydW4gZm9yIGVhY2gKICAgICAgICAgICAgICAgICAgICBjb21iaW5hdGlvbiBvZiBlbmRwb2ludCBhbmQgbWV0aG9kIChkZWZhdWx0OiAyNTYpCiAgLW8sIC0tcmVzdWx0cy1kaXIgZGlyZWN0b3J5IGZvciByZXN1bHRzIHdpdGggbWluaW1hbCBnZW5lcmF0ZWQgcGF5bG9hZCB1c2VkCiAgICAgICAgICAgICAgICAgICAgZm9yIHJlc2VuZGluZyByZXF1ZXN0cyAoZGVmYXVsdDogcmVzdWx0cykuCiAgLS1zdGF0cy1kaXIgICAgICAgZGlyZWN0b3J5IGZvciByZXF1ZXN0IHRpbWVzIHN0YXRpc3RpY3MuIGlmIG5vIHZhbHVlIGlzCiAgICAgICAgICAgICAgICAgICAgc3VwcGxpZWQsIHN0YXRpc3RpY3Mgd2lsbCBub3QgYmUgc2F2ZWQKICAtLXNraXAtdGxzLXZlcmlmeSBkaXNhYmxlIHZlcmlmaWNhdGlvbiBvZiBUTFMgY2VydGlmaWNhdGVzCiAgLS1uby1yYXRlLWxpbWl0aW5nCiAgICAgICAgICAgICAgICAgICAgZG8gbm90IHVzZSByYXRlIGxpbWl0aW5nCiAgLS1oZWxwICAgICAgICAgICAgZGlzcGxheSB1c2FnZSBpbmZvcm1hdGlvbgoKJCBvcGVuYXBpLWZ1enplciBydW4gLXMgLi9zcGVjLnlhbWwgLXUgaHR0cDovLzEyNy4wLjAuMTo4MjAwL3YxLyAtaSA0MDQgLWkgNDAwIC1IICAiQXV0aG9yaXphdGlvbjogQmFzaWMgUVd4aFpHUnBianB2Y0dWdUlITmxjMkZ0WlE9PSIKYGBgCgojIyMgUmVwbGF5aW5nIGZpbmRpbmdzCgpXaGVuIHlvdSBhcmUgZG9uZSBmdXp6aW5nIHlvdSBjYW4gcmVwbGF5IHRoZSBmaW5kaW5ncy4gQWxsIGZpbmRpbmdzIGFyZSBzdG9yZWQgaW4gdGhlIGByZXN1bHRzYCBmb2xkZXIuIE5hbWUgb2YgZWFjaCBmaWxlIGNvbnNpc3RzIG9mIGNvbmNhdGVuYXRlZCBlbmRwb2ludCwgSFRUUCBtZXRob2QgYW5kIHJlY2VpdmVkIHN0YXR1cyBjb2RlLiBUbyByZXNlbmQgdGhlIHNhbWUgcGF5bG9hZCB0byBBUEksIHlvdSBuZWVkIHRvIHJ1biBgb3BlbmFwaS1mdXp6ZXIgcmVzZW5kYCBhbmQgc3BlY2lmeSBhIHBhdGggdG8gdGhlIGZpbmRpbmcgZmlsZSBhcyBhbiBhcmd1bWVudCBhbmQgYSB1cmwgb2YgdGhlIGFwaS4gWW91IGNhbiBvdmVyd3JpdGUgdGhlIGhlYWRlcnMgd2l0aCBgLUhgIGZsYWcgYXMgd2VsbCwgd2hpY2ggaXMgdXNlZnVsLCB3aGVuIHlvdSBuZWVkIGF1dGhvcml6YXRpb24uCgpgYGBjb25zb2xlCiQgbHMgLTEgcmVzdWx0cy8KYXBpLXYxLWNvbXBvbmVudHN0YXR1c2VzLXtuYW1lfS1HRVQtNTAwLmpzb24KYXBpLXYxLW5hbWVzcGFjZXMte25hbWVzcGFjZX0tY29uZmlnbWFwcy1HRVQtNTAwLmpzb24KYXBpLXYxLW5hbWVzcGFjZXMte25hbWVzcGFjZX0tZW5kcG9pbnRzLUdFVC01MDAuanNvbgphcGktdjEtbmFtZXNwYWNlcy17bmFtZXNwYWNlfS1ldmVudHMtR0VULTUwMC5qc29uCmFwaS12MS1uYW1lc3BhY2VzLXtuYW1lc3BhY2V9LWxpbWl0cmFuZ2VzLUdFVC01MDAuanNvbgphcGktdjEtbmFtZXNwYWNlcy17bmFtZXNwYWNlfS1wZXJzaXN0ZW50dm9sdW1lY2xhaW1zLUdFVC01MDAuanNvbgphcGktdjEtbmFtZXNwYWNlcy17bmFtZXNwYWNlfS1wb2RzLUdFVC01MDAuanNvbgphcGktdjEtbmFtZXNwYWNlcy17bmFtZXNwYWNlfS1wb2R0ZW1wbGF0ZXMtR0VULTUwMC5qc29uCmFwaS12MS1uYW1lc3BhY2VzLXtuYW1lc3BhY2V9LXJlcGxpY2F0aW9uY29udHJvbGxlcnMtR0VULTUwMC5qc29uCmFwaS12MS1uYW1lc3BhY2VzLXtuYW1lc3BhY2V9LXJlc291cmNlcXVvdGFzLUdFVC01MDAuanNvbgphcGktdjEtbmFtZXNwYWNlcy17bmFtZXNwYWNlfS1zZWNyZXRzLUdFVC01MDAuanNvbgphcGktdjEtbmFtZXNwYWNlcy17bmFtZXNwYWNlfS1zZXJ2aWNlYWNjb3VudHMtR0VULTUwMC5qc29uCmFwaS12MS1uYW1lc3BhY2VzLXtuYW1lc3BhY2V9LXNlcnZpY2VzLUdFVC01MDAuanNvbgphcGktdjEtd2F0Y2gtbmFtZXNwYWNlcy17bmFtZX0tR0VULTUwMC5qc29uCi4uLgoKJCBvcGVuYXBpLWZ1enplciByZXNlbmQgLS1oZWxwClVzYWdlOiBvcGVuYXBpLWZ1enplciByZXNlbmQgPGZpbGU+IFstSCA8aGVhZGVyLi4uPl0gLXUgPHVybD4KCnJlc2VuZCBwYXlsb2FkIGdlbmVyZXRlZCBieSBmdXp6ZXIKClBvc2l0aW9uYWwgQXJndW1lbnRzOgogIGZpbGUgICAgICAgICAgICAgIHBhdGggdG8gcmVzdWx0IGZpbGUgZ2VuZXJhdGVkIGJ5IGZ1enplcgoKT3B0aW9uczoKICAtSCwgLS1oZWFkZXIgICAgICBleHRyYSBoZWFkZXIKICAtdSwgLS11cmwgICAgICAgICB1cmwgb2YgYXBpCiAgLS1oZWxwICAgICAgICAgICAgZGlzcGxheSB1c2FnZSBpbmZvcm1hdGlvbgoKJCBvcGVuYXBpLWZ1enplciByZXNlbmQgLS11cmwgaHR0cHM6Ly9taW5pa3ViZWNhOjg0NDMgcmVzdWx0cy9hcGktdjEtY29tcG9uZW50c3RhdHVzZXMtXHtuYW1lXH0tR0VULTUwMC5qc29uIC1IICJBdXRob3JpemF0aW9uOiBCZWFyZXIgJEtVQkVfVE9LRU4iIHwganEKNTAwIChJbnRlcm5hbCBTZXJ2ZXIgRXJyb3IpCnsKICAia2luZCI6ICJTdGF0dXMiLAogICJhcGlWZXJzaW9uIjogInYxIiwKICAibWV0YWRhdGEiOiB7fSwKICAic3RhdHVzIjogIkZhaWx1cmUiLAogICJtZXNzYWdlIjogIkNvbXBvbmVudCBub3QgZm91bmQ6IOGKijAiLAogICJjb2RlIjogNTAwCn0KYGBgCgpbXjFdOiBub3QgYWxsIGZvdW5kIGJ1Z3MgYXJlIGxpbmtlZAo= readmeEtag: '"c9b6f61b75afa2e8df985085f45893790dd4841b"' readmeLastModified: Mon, 16 Oct 2023 16:56:16 GMT repositoryId: 324014659 description: >- Black-box fuzzer that fuzzes APIs based on OpenAPI specification. Find bugs for free! created: '2020-12-23T22:33:38Z' updated: '2026-01-31T14:18:25Z' language: Rust archived: false stars: 574 watchers: 8 forks: 24 owner: matusf logo: https://avatars.githubusercontent.com/u/18228995?v=4 license: AGPL-3.0 repoEtag: '"69ef901b1f62c0be6d950eb8b44891d1e3485c2b732290f9dd1b87f607499eda"' repoLastModified: Sat, 31 Jan 2026 14:18:25 GMT id: 9e0191ba47403298459b30242dbfe9ad - source: https://openapi.tools/ name: cats category: - Security - Server Implementations language: Java source_description: >- CATS is a REST API Fuzzer and negative testing tool for OpenAPI endpoints. CATS automatically generates, runs and reports tests with minimum configuration and no coding effort. Tests are self-healing and do not require maintenance. link: https://github.com/Endava/cats v2: true v3: true v3_1: true repository: https://github.com/endava/cats id: a6ff4bc9abd488fc56bf9b04747b4051 repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CjxwaWN0dXJlPgogIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0VuZGF2YS9jYXRzL21hc3Rlci9pbWFnZXMvY2F0c19sb2dvX2Rhcmsuc3ZnIiAvPgogIDxpbWcgYWx0PSJDQVRTIGxvZ28iIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0VuZGF2YS9jYXRzL21hc3Rlci9pbWFnZXMvY2F0c19sb2dvX2xpZ2h0LnN2ZyIgd2lkdGg9IjQwMCI+CjwvcGljdHVyZT4KPC9wPgo8cCBhbGlnbj0iY2VudGVyIj4KCiFbQ0ldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL0VuZGF2YS9jYXRzL21haW4ueW1sP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1naXQmbG9nb0NvbG9yPXdoaXRlKQpbIVtDb21taXRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9jb21taXQtYWN0aXZpdHkvbS9FbmRhdmEvY2F0cz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289Z2l0JmxvZ29Db2xvcj13aGl0ZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9FbmRhdmEvY2F0cy9wdWxzZSkKClshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGljZW5zZS1BcGFjaGUlMjAyLjAtYmx1ZS5zdmcpXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0FwYWNoZS0yLjApClshW0phdmEgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9KYXZhLTI1Ky1ibHVlLnN2ZyldKGh0dHBzOi8vb3Blbmpkay5vcmcpClshW0dyYWFsVk1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvR3JhYWxWTS1OYXRpdmUtb3JhbmdlLnN2ZyldKGh0dHBzOi8vd3d3LmdyYWFsdm0ub3JnKQpbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jYXRzJm1ldHJpYz1hbGVydF9zdGF0dXMpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNhdHMpClshW0NvdmVyYWdlXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jYXRzJm1ldHJpYz1jb3ZlcmFnZSldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9Y2F0cykKWyFbQnVnc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2F0cyZtZXRyaWM9YnVncyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9Y2F0cykKWyFbQ29kZSBTbWVsbHNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNhdHMmbWV0cmljPWNvZGVfc21lbGxzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jYXRzKQoKPC9wPgoKPiBDQVRTIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0IFtodHRwczovL2VuZGF2YS5naXRodWIuaW8vY2F0cy9dKGh0dHBzOi8vZW5kYXZhLmdpdGh1Yi5pby9jYXRzLykKCioqUkVTVCBBUEkgZnV6emVyIGFuZCBuZWdhdGl2ZSB0ZXN0aW5nIHRvb2wuIFJ1biB0aG91c2FuZHMgb2Ygc2VsZi1oZWFsaW5nIEFQSSB0ZXN0cyB3aXRoaW4gbWludXRlcyB3aXRoIG5vIGNvZGluZyBlZmZvcnQhKioKCi0gKipDb21wcmVoZW5zaXZlKio6IHRlc3RzIGFyZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBiYXNlZCBvbiBhIGxhcmdlIG51bWJlciBzY2VuYXJpb3MgYW5kIGNvdmVyICoqZXZlcnkqKiBmaWVsZCBhbmQgaGVhZGVyCi0gKipJbnRlbGxpZ2VudCoqOiB0ZXN0cyBhcmUgZ2VuZXJhdGVkIGJhc2VkIG9uIGRhdGEgdHlwZXMgYW5kIGNvbnN0cmFpbnRzOyBlYWNoIEZ1enplciBoYXMgc3BlY2lmaWMgZXhwZWN0YXRpb25zIGRlcGVuZGluZyBvbiB0aGUgc2NlbmFyaW8gdW5kZXIgdGVzdAotICoqSGlnaGx5IENvbmZpZ3VyYWJsZSoqOiBoaWdoIGFtb3VudCBvZiBjdXN0b21pemF0aW9uOiB5b3UgY2FuIGZpbHRlciBzcGVjaWZpYyBGdXp6ZXJzLCBIVFRQIHJlc3BvbnNlIGNvZGVzLCBIVFRQIG1ldGhvZHMsIHJlcXVlc3QgcGF0aHMsIHByb3ZpZGUgYnVzaW5lc3MgY29udGV4dCBhbmQgYSBsb3QgbW9yZQotICoqU2VsZi1IZWFsaW5nKio6IGFzIHRlc3RzIGFyZSBnZW5lcmF0ZWQsIGFueSBPcGVuQVBJIHNwZWMgY2hhbmdlIGlzIHBpY2tlZCB1cCBhdXRvbWF0aWNhbGx5Ci0gKipTaW1wbGUgdG8gTGVhcm4qKjogZmxhdCBsZWFybmluZyBjdXJ2ZSwgd2l0aCBpbnR1aXRpdmUgY29uZmlndXJhdGlvbiBhbmQgc3ludGF4Ci0gKipGYXN0Kio6IGF1dG9tYXRpYyBwcm9jZXNzIGZvciB3cml0ZSwgcnVuIGFuZCByZXBvcnQgdGVzdHMgd2hpY2ggY292ZXJzIHRob3VzYW5kcyBvZiBzY2VuYXJpb3Mgd2l0aGluIG1pbnV0ZXMKCjxwIGFsaWduPSJjZW50ZXIiPjwvcD4KCj4gU2hvcnQgb24gdGltZT8gQ2hlY2sgb3V0IHRoZSBbMS1taW51dGUgUXVpY2sgU3RhcnQgR3VpZGVdKGh0dHBzOi8vZW5kYXZhLmdpdGh1Yi5pby9jYXRzL2RvY3MvaW50cm8pIQoKIyBPdmVydmlldwpCeSB1c2luZyBhIHNpbXBsZSBhbmQgbWluaW1hbCBzeW50YXgsIHdpdGggYSBmbGF0IGxlYXJuaW5nIGN1cnZlLCBDQVRTICgqKkMqKm9udHJhY3QgKipBKipQSSAqKlQqKmVzdGluZyBhbmQgKipTKiplY3VyaXR5KSBlbmFibGVzIHlvdSB0byBnZW5lcmF0ZSB0aG91c2FuZHMgb2YgQVBJIHRlc3RzIHdpdGhpbiBtaW51dGVzIHdpdGggKipubyBjb2RpbmcgZWZmb3J0KiouCkFsbCB0ZXN0cyBhcmUgKipnZW5lcmF0ZWQsIHJ1biBhbmQgcmVwb3J0ZWQgYXV0b21hdGljYWxseSoqIGJhc2VkIG9uIGEgcHJlLWRlZmluZWQgc2V0IG9mICoqMTAwKyBGdXp6ZXJzKiouIApUaGUgRnV6emVycyBjb3ZlciBhIHdpZGUgcmFuZ2Ugb2YgYm91bmRhcnkgdGVzdGluZyBhbmQgbmVnYXRpdmUgc2NlbmFyaW9zIGZyb20gZnVsbHkgcmFuZG9tIGxhcmdlIFVuaWNvZGUgdmFsdWVzIHRvIHdlbGwgY3JhZnRlZCwgY29udGV4dCBkZXBlbmRhbnQgdmFsdWVzIGJhc2VkIG9uIHRoZSByZXF1ZXN0IGRhdGEgdHlwZXMgYW5kIGNvbnN0cmFpbnRzLiAKRXZlbiBtb3JlLCB5b3UgY2FuIGxldmVyYWdlIHRoZSBmYWN0IHRoYXQgQ0FUUyBnZW5lcmF0ZXMgcmVxdWVzdCBwYXlsb2FkcyBkeW5hbWljYWxseSBhbmQgd3JpdGUgc2ltcGxlIGVuZC10by1lbmQgZnVuY3Rpb25hbCB0ZXN0cy4KCiMjIEhUTUwgUmVwb3J0Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPgogIDxpbWcgYWx0PSJDQVRTIiB3aWR0aD0iMTAwJSIgc3JjPSJpbWFnZXMvdGVzdHNfcmVzdWx0LnBuZyIvPgo8L2Rpdj4KCiMjIENvbW1hbmQgTGluZQoKPGRpdiBhbGlnbj0iY2VudGVyIj4KICA8aW1nIGFsdD0iQ0FUUyIgd2lkdGg9IjEwMCUiIHNyYz0iaW1hZ2VzL3J1bl9yZXN1bHQucG5nIi8+CjwvZGl2PgoKIyBUdXRvcmlhbHMgb24gaG93IHRvIHVzZSBDQVRTCgpUaGlzIGlzIGEgbGlzdCBvZiBhcnRpY2xlcyB3aXRoIHN0ZXAtYnktc3RlcCBndWlkZXMgb24gaG93IHRvIHVzZSBDQVRTOgoqIFtUZXN0aW5nIHRoZSBHaXRIdWIgQVBJIHdpdGggQ0FUU10oaHR0cHM6Ly9sdWRvdmljaWFudWwuZ2l0aHViLmlvL3Bvc3RzL2dpdGh1Yi1hcGktdGVzdGluZy8pCiogW0hvdyB0byB3cml0ZSBzZWxmLWhlYWxpbmcgZnVuY3Rpb25hbCB0ZXN0cyB3aXRoIG5vIGNvZGluZyBlZmZvcnRdKGh0dHBzOi8vbHVkb3ZpY2lhbnVsLmdpdGh1Yi5pby9wb3N0cy9zZWxmLWhlYWxpbmctYXBpLXRlc3RzLykKCiMgU29tZSBidWdzIGZvdW5kIGJ5IENBVFMKCi0gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC92YXVsdC9pc3N1ZXMvMTMyNzQgfCBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3ZhdWx0L2lzc3Vlcy8xMzI3MwotIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdmF1bHQvaXNzdWVzLzEzMjI1IHwgaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC92YXVsdC9pc3N1ZXMvMTMyMzIKLSBodHRwczovL2dpdGh1Yi5jb20vZ28tZ2l0ZWEvZ2l0ZWEvaXNzdWVzLzE5Mzk3ICB8IGh0dHBzOi8vZ2l0aHViLmNvbS9nby1naXRlYS9naXRlYS9pc3N1ZXMvMTkzOTgKLSBodHRwczovL2dpdGh1Yi5jb20vZ28tZ2l0ZWEvZ2l0ZWEvaXNzdWVzLzE5Mzk5CgojIEluc3RhbGxhdGlvbgoKIyMgSG9tZWJyZXcKCmBgYHNoZWxsCj4gYnJldyB0YXAgZW5kYXZhL3RhcAo+IGJyZXcgaW5zdGFsbCBjYXRzCmBgYAoKIyMgTWFudWFsCkNBVFMgaXMgYnVuZGxlZCBib3RoIGFzIGFuIGV4ZWN1dGFibGUgSkFSIG9yIGEgbmF0aXZlIGJpbmFyeS4gVGhlIG5hdGl2ZSBiaW5hcmllcyBkbyBub3QgbmVlZCBKYXZhIGluc3RhbGxlZC4gCgpBZnRlciBkb3dubG9hZGluZyB5b3VyIE9TIG5hdGl2ZSBiaW5hcnksIHlvdSBjYW4gYWRkIGl0IHRvIFBBVEggc28gdGhhdCB5b3UgY2FuIGV4ZWN1dGUgaXQgYXMgYW55IG90aGVyIGNvbW1hbmQgbGluZSB0b29sOgoKYGBgc2hlbGwKc3VkbyBjcCBjYXRzIC91c3IvbG9jYWwvYmluL2NhdHMKYGBgCgpZb3UgY2FuIGFsc28gZ2V0IGF1dG9jb21wbGV0ZSBieSBkb3dubG9hZGluZyB0aGUgW2NhdHNfYXV0b2NvbXBsZXRlXShjYXRzX2F1dG9jb21wbGV0ZSkgc2NyaXB0IGFuZCBkbzoKCmBgYHNoZWxsCnNvdXJjZSBjYXRzX2F1dG9jb21wbGV0ZQpgYGAKClRvIGdldCBwZXJzaXN0ZW50IGF1dG9jb21wbGV0ZSwgYWRkIHRoZSBhYm92ZSBsaW5lIGluIGAuenNocmNgIG9yIGAuYmFzaHJjYCwgYnV0IG1ha2Ugc3VyZSB5b3UgcHV0IHRoZSBmdWxseSBxdWFsaWZpZWQgcGF0aCBmb3IgdGhlIGBjYXRzX2F1dG9jb21wbGV0ZWAgc2NyaXB0LgoKWW91IGNhbiBhbHNvIGNoZWNrIHRoZSBgY2F0c19hdXRvY29tcGxldGVgIHNvdXJjZSBmb3IgYWx0ZXJuYXRpdmUgc2V0dXAuCgpUaGVyZSBpcyBubyBuYXRpdmUgYmluYXJ5IGZvciBXaW5kb3dzLCBidXQgeW91IGNhbiB1c2UgdGhlIHViZXJqYXIgdmVyc2lvbi4gVGhpcyByZXF1aXJlcyBKYXZhIDI1KyB0byBiZSBpbnN0YWxsZWQuCgpZb3UgY2FuIHJ1biBpdCBhcyBgamF2YSAtamFyIGNhdHMuamFyYC4KCkhlYWQgdG8gdGhlIHJlbGVhc2VzIHBhZ2UgdG8gZG93bmxvYWQgdGhlIGxhdGVzdCB2ZXJzaW9uOiBbaHR0cHM6Ly9naXRodWIuY29tL0VuZGF2YS9jYXRzL3JlbGVhc2VzXShodHRwczovL2dpdGh1Yi5jb20vRW5kYXZhL2NhdHMvcmVsZWFzZXMpLgoKIyMgQnVpbGQgZnJvbSBzb3VyY2VzCgpZb3UgY2FuIGJ1aWxkIENBVFMgZnJvbSBzb3VyY2VzIG9uIHlvdSBsb2NhbCBib3guIFlvdSBuZWVkIFtKYXZhIDIxK10oaHR0cHM6Ly9zZGttYW4uaW8vamRrcykuIE1hdmVuIGlzIGFscmVhZHkgYnVuZGxlZC4KCj4gQmVmb3JlIHJ1bm5pbmcgdGhlIGZpcnN0IGJ1aWxkLCBwbGVhc2UgbWFrZSBzdXJlIHlvdSBkbyBhIGAuL212bncgY2xlYW5gLiBDQVRTIHVzZXMgYSBmb3JrIG9mIFtPS0h0dHBdKGh0dHBzOi8vc3F1YXJlLmdpdGh1Yi5pby9va2h0dHAvKSB3aGljaCB3aWxsIGluc3RhbGwgbG9jYWxseQp1bmRlciB0aGUgYDQuMTEuMC1DQVRTYCB2ZXJzaW9uLCBzbyBkb24ndCB3b3JyeSBhYm91dCBvdmVycmlkaW5nIHRoZSBvZmZpY2lhbCB2ZXJzaW9ucy4KCgpZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIE1hdmVuIGNvbW1hbmQgdG8gYnVpbGQgdGhlIHByb2plY3QgYXMgYW4gdWJlcmphcjoKCmAuL212bncgcGFja2FnZSAtRHF1YXJrdXMucGFja2FnZS50eXBlPXViZXItamFyYAoKCllvdSB3aWxsIGVuZCB1cCB3aXRoIGEgYGNhdHMtcnVubmVyLmphcmAgaW4gdGhlIGB0YXJnZXRgIGZvbGRlci4gWW91IGNhbiBydW4gaXQgd2l0aCBgamF2YSAtamFyIGNhdHMtcnVubmVyLmphciAuLi5gLgoKWW91IGNhbiBhbHNvIGJ1aWxkIG5hdGl2ZSBpbWFnZXMgdXNpbmcgYSBbR3JhYWxWTSBKYXZhIHZlcnNpb25dKGh0dHBzOi8vd3d3LmdyYWFsdm0ub3JnLykuCgpgLi9tdm53IHBhY2thZ2UgLVBuYXRpdmVgCgojIyMgTm90ZXMgb24gVW5pdCBUZXN0cwoKWW91IG1heSBzZWUgc29tZSBgZXJyb3JgIGxvZyBtZXNzYWdlcyB3aGlsZSBydW5uaW5nIHRoZSBVbml0IFRlc3RzLiBUaG9zZSBhcmUgZXhwZWN0ZWQgYmVoYXZpb3VyIGZvciB0ZXN0aW5nIHRoZSBuZWdhdGl2ZSBzY2VuYXJpb3Mgb2YgdGhlIEZ1enplcnMuCgojIyBFeHBlcmltZW50YWw6IE1hdmVuIGRlcGVuZGVuY3kgZm9yIHByb2dyYW1tYXRpYyB1c2UKQ0FUUyBkb2Vzbid0IGhhdmUgZXhwbGljaXQgc3VwcG9ydCAoeWV0KSBmb3IgcHJvZ3JhbW1hdGljIHVzZSB2aWEgSlVuaXQgb3IgVGVzdE5HLiAKWW91IGNhbiBob3dldmVyIGV4cGVyaW1lbnQgd2l0aCBydW5uaW5nIHRoZSBgQ2F0c01haW5gIGNsYXNzIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzIGFzIHlvdSB3b3VsZCBydW4gaW4gdGhlIGNvbW1hbmQgbGluZS4KCllvdSBtdXN0IGFkZCB0aGVzZSAyIGRlcGVuZGVuY2llczoKCmBgYHhtbAo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPmNvbS5zcXVhcmV1cC5va2h0dHAzPC9ncm91cElkPgogICAgPGFydGlmYWN0SWQ+b2todHRwPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+NC4xMS4wPC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+Y29tLmVuZGF2YTwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPmNhdHM8L2FydGlmYWN0SWQ+CiAgICA8dmVyc2lvbj45LjAuMzwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKCj4gUGxlYXNlIG5vdCB0aGF0IHlvdSBhbHNvIG5lZWQgdG8gZXhwbGljaXRseSBhZGQgdGhlIGBva2h0dHBgIGRlcGVuZGVuY3kuIAo+IENBVFMgdXNlcyBhIGZvcmsgb2Ygb2todHRwIHRoYXQgaXMgbm90IHB1Ymxpc2hlZCBpbiBNYXZlbiBjZW50cmFsLgo+IFdoZW4gdXNpbmcgQ0FUUyBhcyBhIGRlcGVuZGVuY3ksIEhUVFAgaGVhZGVyIGZ1enplcnMgdGhhdCBwcmVmaXgvc3VmZml4IGhlYWRlciB2YWx1ZXMgd2l0aCBzcGFjZXMgd29uJ3QgcHJvcGVybHkgd29yay4KCiMgQ29udHJpYnV0aW5nClBsZWFzZSByZWZlciB0byBbQ09OVFJJQlVUSU5HLm1kXShDT05UUklCVVRJTkcubWQpLiAK readmeEtag: '"5d0117aed79f3ba2392f1c634fd683e55d18d9b0"' readmeLastModified: Tue, 03 Feb 2026 21:15:13 GMT repositoryId: 252459854 description: >- CATS is a REST API Fuzzer and negative testing tool for OpenAPI endpoints. CATS automatically generates, runs and reports tests with minimum configuration and no coding effort. Tests are self-healing and do not require maintenance. created: '2020-04-02T13:14:39Z' updated: '2026-02-05T18:42:13Z' language: Java archived: false stars: 1339 watchers: 10 forks: 86 owner: Endava logo: https://avatars.githubusercontent.com/u/19396140?v=4 license: Apache-2.0 repoEtag: '"b312a91f917e4fe64705828560fad085dbcc717bb452463fc63c1bd49df4c934"' repoLastModified: Thu, 05 Feb 2026 18:42:13 GMT foundInMaster: true - source: https://openapi.tools/ name: API Insights category: Security language: SaaS source_description: >- RestCase executes hundrends of security and quality checks against the API definition, the API insights report provides detailed security scoring for prioritization, and remediation advice to help developers define the best API definition possible. link: https://restcase.com/platform/security v2: true v3: true foundInMaster: true id: aab65db9be3090f79ce65c7fc9808dce - source: https://openapi.tools/ name: OpenAPI Schema to JSON Schema category: - Converters - Parsers language: TypeScript source_description: >- Due to the OpenAPI v3.0 and JSON Schema discrepancy, you can use this JS library to convert OpenAPI Schema objects to proper JSON Schema. link: https://www.npmjs.com/package/@openapi-contrib/openapi-schema-to-json-schema repository: https://github.com/openapi-contrib/openapi-schema-to-json-schema v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNjaGVtYSB0byBKU09OIFNjaGVtYQoKQSBsaXR0bGUgTm9kZUpTIHBhY2thZ2UgdG8gY29udmVydCBPcGVuQVBJIFNjaGVtYSBPYmplY3Qgb3IgUGFyYW1ldGVyIE9iamVjdCB0byBKU09OIFNjaGVtYS4KCkN1cnJlbnRseSBjb252ZXJ0cyBmcm9tIFtPcGVuQVBJIDMuMF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwpIHRvIFtKU09OIFNjaGVtYSBEcmFmdCA0XShodHRwOi8vanNvbi1zY2hlbWEub3JnL3NwZWNpZmljYXRpb24tbGlua3MuaHRtbCNkcmFmdC00KS4KClshW1RyZWV3YXJlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2R5bmFtaWMvanNvbj9jb2xvcj1icmlnaHRncmVlbiZsYWJlbD1UcmVld2FyZSZxdWVyeT0lMjQudG90YWwmdXJsPWh0dHBzJTNBJTJGJTJGcHVibGljLm9mZnNldC5lYXJ0aCUyRnVzZXJzJTJGdHJlZXdhcmUlMkZ0cmVlcyldKGh0dHBzOi8vdHJlZXdhcmUuZWFydGgpCgojIyBXaHk/CgpPcGVuQVBJIGlzIGEgc3BlY2lmaWNhdGlvbiBmb3IgZGVzY3JpYmluZyBSRVNUZnVsIEFQSXMuIE9wZW5BUEkgdjMuMCBhbGxvd3MgdXMgdG8gZGVzY3JpYmUgdGhlIHN0cnVjdHVyZXMgb2YgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcGF5bG9hZHMgaW4gYSBkZXRhaWxlZCBtYW5uZXIuIFRoaXMgd291bGQsIHRoZW9yZXRpY2FsbHksIG1lYW4gdGhhdCB3ZSBzaG91bGQgYmUgYWJsZSB0byBhdXRvbWF0aWNhbGx5IHZhbGlkYXRlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHBheWxvYWRzLiBIb3dldmVyLCBhcyBvZiB3cml0aW5nIHRoZXJlIGFyZW4ndCBtYW55IHZhbGlkYXRvcnMgYXJvdW5kLgoKVGhlIGdvb2QgbmV3cyBpcyB0aGF0IHRoZXJlIGFyZSBtYW55IHZhbGlkYXRvcnMgZm9yIEpTT04gU2NoZW1hIGZvciBkaWZmZXJlbnQgbGFuZ3VhZ2VzLiBUaGUgYmFkIG5ld3MgaXMgdGhhdCBPcGVuQVBJIHYzLjAgaXMgW25vdCBlbnRpcmVseSBjb21wYXRpYmxlIHdpdGggSlNPTiBTY2hlbWFdKGh0dHBzOi8vc3RvcGxpZ2h0LmlvL2Jsb2cvb3BlbmFwaS1qc29uLXNjaGVtYS8pLiBUaGUgU2NoZW1hIE9iamVjdCBvZiBPcGVuQVBJIHYzLjAgaXMgYW4gZXh0ZW5kZWQgc3Vic2V0IG9mIEpTT04gU2NoZW1hIFNwZWNpZmljYXRpb24gV3JpZ2h0IERyYWZ0IDAwIHdpdGggc29tZSBkaWZmZXJlbmNlcy4gVGhpcyB3aWxsIGJlIHJlc29sdmVkIGluIE9wZW5BUEkgdjMuMSwgYnV0IHVudGlsIHRoZW4uLi4gdGhpcyB0b29sIHdpbGwgZmlsbCB0aGF0IGdhcC4KClRoZXJlIGlzIGFsc28gYSBbQ0xJIHRvb2xdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWt1bm4vb3BlbmFwaTJzY2hlbWEpIGZvciBjcmVhdGluZyBhIEpTT04gb2Ygc2NoZW1hcyBmcm9tIHRoZSB3aG9sZSBBUEkgc3BlY2lmaWNhdGlvbi4KCklmIHlvdSBuZWVkIHRvIGRvIHRoZSBjb252ZXJzaW9uIGluIHJldmVyc2UsIGNoZWNrb3V0IFtqc29uLXNjaGVtYS10by1vcGVuYXBpLXNjaGVtYV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktY29udHJpYi9qc29uLXNjaGVtYS10by1vcGVuYXBpLXNjaGVtYSkuCgojIyBGZWF0dXJlcwoKLSBjb252ZXJ0cyBPcGVuQVBJIHYzLjAgU2NoZW1hIE9iamVjdCB0byBKU09OIFNjaGVtYSBEcmFmdCA0Ci0gY29udmVydHMgT3BlbkFQSSB2My4wIFBhcmFtZXRlciBPYmplY3QgdG8gSlNPTiBTY2hlbWEgRHJhZnQgNAotIGRlbGV0ZXMgYG51bGxhYmxlYCBhbmQgYWRkcyBgIm51bGwiYCB0byBgdHlwZWAgYXJyYXkgaWYgYG51bGxhYmxlYCBpcyBgdHJ1ZWAKLSBzdXBwb3J0cyBkZWVwIHN0cnVjdHVyZXMgd2l0aCBuZXN0ZWQgYGFsbE9mYHMgZXRjLgotIHJlbW92ZXMgW09wZW5BUEkgc3BlY2lmaWMgcHJvcGVydGllc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjZml4ZWQtZmllbGRzLTIwKSBzdWNoIGFzIGBkaXNjcmltaW5hdG9yYCwgYGRlcHJlY2F0ZWRgIGV0Yy4gdW5sZXNzIHNwZWNpZmllZCBvdGhlcndpc2UKLSBvcHRpb25hbGx5IHN1cHBvcnRzIGBwYXR0ZXJuUHJvcGVydGllc2Agd2l0aCBgeC1wYXR0ZXJuUHJvcGVydGllc2AgaW4gdGhlIFNjaGVtYSBPYmplY3QKCioqTk9URSoqOiBgJHJlZmBzIGFyZSBub3QgaGFuZGxlZCBpbiBhbnkgd2F5LCBzbyBwbGVhc2UgdXNlIGEgcmVzb2x2ZXIgc3VjaCBhcyBbanNvbi1zY2hlbWEtcmVmLXBhcnNlcl0oaHR0cHM6Ly9naXRodWIuY29tL0FQSURldlRvb2xzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIpIG9yIFtzd2FnZ2VyLWNsaSBidW5kbGVdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3N3YWdnZXItY2xpKSBwcmlvciB0byB1c2luZyB0aGlzIHBhY2thZ2UuCgojIyBJbnN0YWxsYXRpb24KCmBgYApucG0gaW5zdGFsbCAtLXNhdmUgQG9wZW5hcGktY29udHJpYi9vcGVuYXBpLXNjaGVtYS10by1qc29uLXNjaGVtYQpgYGAKCiMjIyBDTEkKCmBgYGJhc2gKbnB4ICJAb3BlbmFwaS1jb250cmliL29wZW5hcGktc2NoZW1hLXRvLWpzb24tc2NoZW1hIiAtLWlucHV0IG9wZW5hcGkuanNvbiAtLW91dHB1dCBqc29uLXNjaGVtYS5qc29uCmBgYAoKIyMgQ29udmVydGluZyBPcGVuQVBJIHNjaGVtYQoKSGVyZSdzIGEgc21hbGwgZXhhbXBsZSB0byBnZXQgdGhlIGlkZWE6CgpgYGBqcwp2YXIgeyBvcGVuYXBpU2NoZW1hVG9Kc29uU2NoZW1hOiB0b0pzb25TY2hlbWEgfSA9IHJlcXVpcmUoIkBvcGVuYXBpLWNvbnRyaWIvb3BlbmFwaS1zY2hlbWEtdG8tanNvbi1zY2hlbWEiKTsKCnZhciBzY2hlbWEgPSB7CiAgdHlwZTogInN0cmluZyIsCiAgZm9ybWF0OiAiZGF0ZS10aW1lIiwKICBudWxsYWJsZTogdHJ1ZSwKfTsKCnZhciBjb252ZXJ0ZWRTY2hlbWEgPSB0b0pzb25TY2hlbWEoc2NoZW1hKTsKCmNvbnNvbGUubG9nKGNvbnZlcnRlZFNjaGVtYSk7CmBgYAoKVGhlIGV4YW1wbGUgcHJpbnRzIG91dAoKYGBganMKewogIHR5cGU6IFsnc3RyaW5nJywgJ251bGwnXSwKICBmb3JtYXQ6ICdkYXRlLXRpbWUnLAogICckc2NoZW1hJzogJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIycKfQpgYGAKClByb3ZpZGUgdGhlIGZ1bmN0aW9uIHRoZSBzY2hlbWEgb2JqZWN0IHdpdGggcG9zc2libGUgb3B0aW9ucy4KCiMjIyBPcHRpb25zCgpUaGUgZnVuY3Rpb24gYWNjZXB0cyBgb3B0aW9uc2Agb2JqZWN0IGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuCgojIyMjIGBjbG9uZVNjaGVtYWAgKGJvb2xlYW4pCgpJZiBzZXQgdG8gYGZhbHNlYCwgY29udmVydHMgdGhlIHByb3ZpZGVkIHNjaGVtYSBpbiBwbGFjZS4gSWYgYHRydWVgLCBjbG9uZXMgdGhlIHNjaGVtYSBieSBjb252ZXJ0aW5nIGl0IHRvIEpTT04gYW5kIGJhY2suIFRoZSBvdmVyaGVhZCBvZiB0aGUgY2xvbmluZyBpcyB1c3VhbGx5IG5lZ2xpZ2libGUuIERlZmF1bHRzIHRvIGB0cnVlYC4KCiMjIyMgYGRhdGVUb0RhdGVUaW1lYCAoYm9vbGVhbikKClRoaXMgaXMgYGZhbHNlYCBieSBkZWZhdWx0IGFuZCBsZWF2ZXMgYGRhdGVgIGZvcm1hdCBhcyBpcy4gSWYgc2V0IHRvIGB0cnVlYCwgc2V0cyBgZm9ybWF0OiAnZGF0ZSdgIHRvIGBmb3JtYXQ6ICdkYXRlLXRpbWUnYC4KCkZvciBleGFtcGxlCgpgYGBqcwp2YXIgc2NoZW1hID0gewogIHR5cGU6ICJzdHJpbmciLAogIGZvcm1hdDogImRhdGUiLAp9OwoKdmFyIGNvbnZlcnRlZFNjaGVtYSA9IHRvSnNvblNjaGVtYShzY2hlbWEsIHsgZGF0ZVRvRGF0ZVRpbWU6IHRydWUgfSk7Cgpjb25zb2xlLmxvZyhjb252ZXJ0ZWRTY2hlbWEpOwpgYGAKCnByaW50cwoKYGBganMKewogIHR5cGU6ICdzdHJpbmcnLAogIGZvcm1hdDogJ2RhdGUtdGltZScsCiAgJyRzY2hlbWEnOiAnaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjJwp9CmBgYAoKIyMjIyBga2VlcE5vdFN1cHBvcnRlZGAgKGFycmF5KQoKQnkgZGVmYXVsdCwgdGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgcmVzdWx0IHNjaGVtYTogYG51bGxhYmxlYCwgYGRpc2NyaW1pbmF0b3JgLCBgcmVhZE9ubHlgLCBgd3JpdGVPbmx5YCwgYHhtbGAsIGBleHRlcm5hbERvY3NgLCBgZXhhbXBsZWAgYW5kIGBkZXByZWNhdGVkYCBhcyB0aGV5IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IEpTT04gU2NoZW1hIERyYWZ0IDQuIFByb3ZpZGUgYW4gYXJyYXkgb2YgdGhlIG9uZXMgeW91IHdhbnQgdG8ga2VlcCAoYXMgc3RyaW5ncykgYW5kIHRoZXkgd29uJ3QgYmUgcmVtb3ZlZC4KCiMjIyMgYHJlbW92ZVJlYWRPbmx5YCAoYm9vbGVhbikKCklmIHNldCB0byBgdHJ1ZWAsIHdpbGwgcmVtb3ZlIHByb3BlcnRpZXMgc2V0IGFzIGByZWFkT25seWAuIElmIHRoZSBwcm9wZXJ0eSBpcyBzZXQgYXMgYHJlcXVpcmVkYCwgaXQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGByZXF1aXJlZGAgYXJyYXkgYXMgd2VsbC4gVGhlIHByb3BlcnR5IHdpbGwgYmUgcmVtb3ZlZCBldmVuIGlmIGByZWFkT25seWAgaXMgc2V0IHRvIGJlIGtlcHQgd2l0aCBga2VlcE5vdFN1cHBvcnRlZGAuCgojIyMjIGByZW1vdmVXcml0ZU9ubHlgIChib29sZWFuKQoKU2ltaWxhciB0byBgcmVtb3ZlUmVhZE9ubHlgLCBidXQgZm9yIGB3cml0ZU9ubHlgIHByb3BlcnRpZXMuCgojIyMjIGBzdXBwb3J0UGF0dGVyblByb3BlcnRpZXNgIChib29sZWFuKQoKSWYgc2V0IHRvIGB0cnVlYCBhbmQgYHgtcGF0dGVyblByb3BlcnRpZXNgIHByb3BlcnR5IGlzIHByZXNlbnQsIGNoYW5nZSBgeC1wYXR0ZXJuUHJvcGVydGllc2AgdG8gYHBhdHRlcm5Qcm9wZXJ0aWVzYCBhbmQgY2FsbCBgcGF0dGVyblByb3BlcnRpZXNIYW5kbGVyYC4gSWYgYHBhdHRlcm5Qcm9wZXJ0aWVzSGFuZGxlcmAgaXMgbm90IGRlZmluZWQsIGNhbGwgdGhlIGRlZmF1bHQgaGFuZGxlci4gU2VlIGBwYXR0ZXJuUHJvcGVydGllc0hhbmRsZXJgIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKIyMjIyBgcGF0dGVyblByb3BlcnRpZXNIYW5kbGVyYCAoZnVuY3Rpb24pCgpQcm92aWRlIGEgZnVuY3Rpb24gdG8gaGFuZGxlIHBhdHRlcm4gcHJvcGVydGllcyBhbmQgc2V0IGBzdXBwb3J0UGF0dGVyblByb3BlcnRpZXNgIHRvIHRha2UgZWZmZWN0LiBUaGUgZnVuY3Rpb24gdGFrZXMgdGhlIHNjaGVtYSB3aGVyZSBgeC1wYXR0ZXJuUHJvcGVydGllc2AgaXMgZGVmaW5lZCBvbiB0aGUgcm9vdCBsZXZlbC4gQXQgdGhpcyBwb2ludCBgeC1wYXR0ZXJuUHJvcGVydGllc2AgaXMgY2hhbmdlZCB0byBgcGF0dGVyblByb3BlcnRpZXNgLiBJdCBtdXN0IHJldHVybiB0aGUgbW9kaWZpZWQgc2NoZW1hLgoKSWYgdGhlIGhhbmRsZXIgaXMgbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBoYW5kbGVyIGlzIHVzZWQuIElmIGBhZGRpdGlvbmFsUHJvcGVydGllc2AgaXMgc2V0IGFuZCBpcyBhbiBvYmplY3QsIHRoZSBkZWZhdWx0IGhhbmRsZXIgc2V0cyBpdCB0byBmYWxzZSBpZiB0aGUgYGFkZGl0aW9uYWxQcm9wZXJ0aWVzYCBvYmplY3QgaGFzIGRlZXAgZXF1YWxpdHkgd2l0aCBhIHBhdHRlcm4gb2JqZWN0IGluc2lkZSBgcGF0dGVyblByb3BlcnRpZXNgLiBUaGlzIGlzIGJlY2F1c2Ugd2UgbWlnaHQgd2FudCB0byBkZWZpbmUgYGFkZGl0aW9uYWxQcm9wZXJ0aWVzYCBpbiBPcGVuQVBJIHNwZWMgZmlsZSwgYnV0IHdhbnQgdG8gdmFsaWRhdGUgYWdhaW5zdCBhIHBhdHRlcm4uIFRoZSBwYXR0ZXJuIHdvdWxkIHR1cm4gb3V0IHRvIGJlIHVzZWxlc3MgaWYgYGFkZGl0aW9uYWxQcm9wZXJ0aWVzYCBvZiB0aGUgc2FtZSBzdHJ1Y3R1cmUgd2VyZSBhbGxvd2VkLiBDcmVhdGUgeW91IG93biBoYW5kbGVyIHRvIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb25hbGl0eS4KClNlZSBgdGVzdC9wYXR0ZXJuX3Byb3BlcnRpZXMudGVzdC5qc2AgZm9yIGV4YW1wbGVzIGhvdyB0aGlzIHdvcmtzLgoKIyMjIyBgZGVmaW5pdGlvbktleXdvcmRzYCAoYXJyYXkpCgpCeSBkZWZhdWx0LCBkZWZpbml0aW9ucyBhcmUgbm90IGNvbnZlcnRlZC4gSWYgeW91ciBkb2N1bWVudHMgZm9sbG93IHRoZSBjb252ZW50aW9uIG9mIGhhdmluZyBhIGRlZmluaXRpb25zIG9iamVjdCBhdCB0aGUgcm9vdCBvZiBhIChzdWIpc2NoZW1hLCB5b3UgY2FuIHNldCBkZWZpbml0aW9uS2V5d29yZHMgdG8gYFsnZGVmaW5pdGlvbnMnXWAuCgpgYGBqcwp2YXIgc2NoZW1hID0gewogIGRlZmluaXRpb25zOiB7CiAgICBzaGFyZWREZWZpbml0aW9uOiB7CiAgICAgIHR5cGU6ICJvYmplY3QiLAogICAgICBwcm9wZXJ0aWVzOiB7CiAgICAgICAgZm9vOiB7CiAgICAgICAgICB0eXBlOiAic3RyaW5nIiwKICAgICAgICAgIG51bGxhYmxlOiB0cnVlLAogICAgICAgIH0sCiAgICAgIH0sCiAgICB9LAogIH0sCn07CnZhciBjb252ZXJ0ZWRTY2hlbWEgPSB0b0pzb25TY2hlbWEoc2NoZW1hLCB7CiAgZGVmaW5pdGlvbktleXdvcmRzOiBbImRlZmluaXRpb25zIl0sCn0pOwpjb25zb2xlLmxvZyhjb252ZXJ0ZWRTY2hlbWEpOwpgYGAKCnByaW50cwoKYGBganMKewogICRzY2hlbWE6ICdodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMnLAogIGRlZmluaXRpb25zOiB7CiAgICBzaGFyZWREZWZpbml0aW9uOiB7CiAgICAgIHR5cGU6ICdvYmplY3QnLAogICAgICBwcm9wZXJ0aWVzOiB7CiAgICAgICAgZm9vOiB7CiAgICAgICAgICB0eXBlOiBbJ3N0cmluZycsICdudWxsJ10KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9Cn0KYGBgCgojIyBDb252ZXJ0aW5nIE9wZW5BUEkgcGFyYW1ldGVycwoKT3BlbkFQSSBwYXJhbWV0ZXJzIGNhbiBiZSBjb252ZXJ0ZWQ6CgpgYGBqcwp2YXIgeyBmcm9tUGFyYW1ldGVyIH0gPSByZXF1aXJlKCJAb3BlbmFwaS1jb250cmliL29wZW5hcGktc2NoZW1hLXRvLWpzb24tc2NoZW1hIik7Cgp2YXIgcGFyYW0gPSB7CiAgbmFtZTogInBhcmFtZXRlciBuYW1lIiwKICBpbjogInF1ZXJ5IiwKICBzY2hlbWE6IHsKICAgIHR5cGU6ICJzdHJpbmciLAogICAgZm9ybWF0OiAiZGF0ZSIsCiAgfSwKfTsKCnZhciBjb252ZXJ0ZWRTY2hlbWEgPSBmcm9tUGFyYW1ldGVyKHBhcmFtKTsKCmNvbnNvbGUubG9nKGNvbnZlcnRlZFNjaGVtYSk7CmBgYAoKVGhlIHJlc3VsdCBpcyBhcyBmb2xsb3dzOgoKYGBganMKewogIHR5cGU6ICdzdHJpbmcnLAogIGZvcm1hdDogJ2RhdGUnLAogICckc2NoZW1hJzogJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIycKfQpgYGAKCldoZW4gYSBwYXJhbWV0ZXIgaGFzIHNldmVyYWwgc2NoZW1hcyAob25lIHBlciBNSU1FIHR5cGUpIGEgbWFwIGlzIHJldHVybmVkIGluc3RlYWQuCgpgYGBqcwp7CiAgbmFtZTogJ3BhcmFtZXRlciBuYW1lJywKICBpbjogJ3F1ZXJ5JywKICBjb250ZW50OiB7CiAgICAnYXBwbGljYXRpb24vamF2YXNjcmlwdCc6IHsKICAgICAgc2NoZW1hOiB7CiAgICAgICAgdHlwZTogJ3N0cmluZycKICAgICAgfQogICAgfSwKICAgICd0ZXh0L2Nzcyc6IHsKICAgICAgc2NoZW1hOiB7CiAgICAgICAgdHlwZTogJ3N0cmluZycKICAgICAgfQogICAgfQogIH0KfQpgYGAKCndvdWxkIGJlIGNvbnZlcnRlZCB0bzoKCmBgYGpzCnsKICAnYXBwbGljYXRpb24vamF2YXNjcmlwdCc6IHsKICAgIHR5cGU6ICdzdHJpbmcnLAogICAgJyRzY2hlbWEnOiAnaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjJwogIH0sCiAgJ3RleHQvY3NzJzogewogICAgdHlwZTogJ3N0cmluZycsCiAgICAnJHNjaGVtYSc6ICdodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMnCiAgfQp9CmBgYAoKIyMgVHJlZXdhcmUKClRoaXMgcGFja2FnZSBpcyBbVHJlZXdhcmVdKGh0dHBzOi8vdHJlZXdhcmUuZWFydGgpLiBJZiB5b3UgdXNlIGl0IGluIHByb2R1Y3Rpb24sIHRoZW4gd2UgYXNrIHRoYXQgeW91IFsqKmJ1eSB0aGUgd29ybGQgYSB0cmVlKipdKGh0dHBzOi8vcGxhbnQudHJlZXdhcmUuZWFydGgve3ZlbmZvcn0ve3BhY2thZ2V9KSB0byB0aGFuayB1cyBmb3Igb3VyIHdvcmsuIEJ5IGNvbnRyaWJ1dGluZyB0byB0aGUgVHJlZXdhcmUgZm9yZXN0IHlvdeKAmWxsIGJlIGNyZWF0aW5nIGVtcGxveW1lbnQgZm9yIGxvY2FsIGZhbWlsaWVzIGFuZCByZXN0b3Jpbmcgd2lsZGxpZmUgaGFiaXRhdHMuCgojIyBUaGFua3MKCi0gW1N0b3BsaWdodF1bXSBmb3IgZG9uYXRpbmcgdGltZSBhbmQgZWZmb3J0IHRvIHRoaXMgcHJvamVjdCwgYW5kIG1hbnkgbW9yZS4KLSBbbWlrdW5uXVtdIGZvciBvcmlnaW5hbGx5IGNyZWF0aW5nIHRoaXMgcGFja2FnZS4KLSBbQWxsIENvbnRyaWJ1dG9yc11bbGluay1jb250cmlidXRvcnNdCgpbc3RvcGxpZ2h0XTogaHR0cHM6Ly9zdG9wbGlnaHQuaW8vClttaWt1bm5dOiBodHRwczovL2dpdGh1Yi5jb20vbWlrdW5uCltsaW5rLWNvbnRyaWJ1dG9yc106IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWNvbnRyaWIvb3BlbmFwaS1zY2hlbWEtdG8tanNvbi1zY2hlbWEvZ3JhcGhzL2NvbnRyaWJ1dG9ycwoKIyMgQ29weXJpZ2h0CgpDb3B5cmlnaHQgMjAyMyB0aGUgW09wZW5BUEkgQ29udHJpYiBvcmdhbml6YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWNvbnRyaWIpLiBDb2RlIHJlbGVhc2VkIHVuZGVyIHRoZSBbTUlUIExpY2Vuc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWNvbnRyaWIvb3BlbmFwaS1zY2hlbWEtdG8tanNvbi1zY2hlbWEvYmxvYi9tYWluL0xJQ0VOU0UpLgo= readmeEtag: '"48037924913e4772a488531513892eaf0a796630"' readmeLastModified: Tue, 11 Jul 2023 22:18:10 GMT repositoryId: 234640931 description: >- Due to the OpenAPI v3.0 and JSON Schema discrepancy, you can use this JS library to convert OpenAPI Schema objects to proper JSON Schema. created: '2020-01-17T21:37:32Z' updated: '2026-01-15T20:55:18Z' language: TypeScript archived: false stars: 268 watchers: 4 forks: 21 owner: openapi-contrib logo: https://avatars.githubusercontent.com/u/49447320?v=4 license: MIT repoEtag: '"a9d1a4d7a0246ba9828f031cb60de411257add82e0dbcf3d5d728b037f7bd43d"' repoLastModified: Thu, 15 Jan 2026 20:55:18 GMT foundInMaster: true id: f6608d418f20d73a1e15b74206edd45a - source: https://openapi.tools/ name: JSON Schema to OpenAPI Schema category: - Converters - Parsers language: TypeScript source_description: >- Due to the OpenAPI v3.0 and JSON Schema discrepancy, you can use this JS library to convert JSON Schema objects to OpenAPI Schema. link: https://www.npmjs.com/package/@openapi-contrib/json-schema-to-openapi-schema repository: https://github.com/openapi-contrib/json-schema-to-openapi-schema v3: true repositoryMetadata: base64Readme: >- IyBKU09OIFNjaGVtYSB0byBPcGVuQVBJIFNjaGVtYQoKQSBsaXR0bGUgTm9kZUpTIHBhY2thZ2UgdG8gY29udmVydCBKU09OIFNjaGVtYSB0byBhIFtPcGVuQVBJIFNjaGVtYSBPYmplY3RdKGh0dHA6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjc2NoZW1hLW9iamVjdCkuCgpbIVtUcmVld2FyZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9keW5hbWljL2pzb24/Y29sb3I9YnJpZ2h0Z3JlZW4mbGFiZWw9VHJlZXdhcmUmcXVlcnk9JTI0LnRvdGFsJnVybD1odHRwcyUzQSUyRiUyRnB1YmxpYy5vZmZzZXQuZWFydGglMkZ1c2VycyUyRnRyZWV3YXJlJTJGdHJlZXMpXShodHRwczovL3RyZWV3YXJlLmVhcnRoKQoKIyMgRmVhdHVyZXMKCi0gY29udmVydHMgSlNPTiBTY2hlbWEgRHJhZnQgMDQgdG8gT3BlbkFQSSAzLjAgU2NoZW1hIE9iamVjdAotIHN3aXRjaGVzIGB0eXBlOiBbJ2ZvbycsICdudWxsJ11gIHRvIGB0eXBlOiBmb29gIGFuZCBgbnVsbGFibGU6IHRydWVgCi0gc3VwcG9ydHMgZGVlcCBzdHJ1Y3R1cmVzIHdpdGggbmVzdGVkIGBhbGxPZmBzIGV0Yy4KLSBzd2l0Y2hlcyBgcGF0dGVyblByb3BlcnRpZXNgIHRvIGB4LXBhdHRlcm5Qcm9wZXJ0aWVzYAotIGNvbnZlcnRzIGBkZXBlbmRlbmNpZXNgIHRvIGFuIGFsbE9mICsgb25lT2YgT3BlbkFQSS12YWxpZCBlcXVpdmFsZW50CgojIyBJbnN0YWxsYXRpb24KCmBgYHNoZWxsCm5wbSBpbnN0YWxsIC0tc2F2ZSBAb3BlbmFwaS1jb250cmliL2pzb24tc2NoZW1hLXRvLW9wZW5hcGktc2NoZW1hCmBgYAoKUmVxdWlyZXMgTm9kZUpTIHYxMCBvciBncmVhdGVyLgoKIyMgVXNhZ2UKCkhlcmUncyBhIHNtYWxsIGV4YW1wbGUgdG8gZ2V0IHRoZSBpZGVhOgoKYGBgdHMKaW1wb3J0IHsgY29udmVydCB9IGZyb20gJ0BvcGVuYXBpLWNvbnRyaWIvanNvbi1zY2hlbWEtdG8tb3BlbmFwaS1zY2hlbWEnOwoKY29uc3Qgc2NoZW1hID0gewoJJHNjaGVtYTogJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIycsCgl0eXBlOiBbJ3N0cmluZycsICdudWxsJ10sCglmb3JtYXQ6ICdkYXRlLXRpbWUnLAp9OwoKKGFzeW5jICgpID0+IHsKCWNvbnN0IGNvbnZlcnRlZFNjaGVtYSA9IGF3YWl0IGNvbnZlcnQoc2NoZW1hKTsKCWNvbnNvbGUubG9nKGNvbnZlcnRlZFNjaGVtYSk7Cn0pKCk7CmBgYAoKVGhlIGV4YW1wbGUgcHJpbnRzIG91dAoKYGBganMKewogIHR5cGU6ICdzdHJpbmcnLAogIGZvcm1hdDogJ2RhdGUtdGltZScsCiAgbnVsbGFibGU6IHRydWUKfQpgYGAKCiMjIyBPcHRpb25zCgpUaGUgZnVuY3Rpb24gYWNjZXB0cyBgb3B0aW9uc2Agb2JqZWN0IGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuCgojIyMjIGBjbG9uZVNjaGVtYWAgKGJvb2xlYW4pCgpJZiBzZXQgdG8gYGZhbHNlYCwgY29udmVydHMgdGhlIHByb3ZpZGVkIHNjaGVtYSBpbiBwbGFjZS4gSWYgYHRydWVgLCBjbG9uZXMgdGhlIHNjaGVtYSBieSBjb252ZXJ0aW5nIGl0IHRvIEpTT04gYW5kIGJhY2suIFRoZSBvdmVyaGVhZCBvZiB0aGUgY2xvbmluZyBpcyB1c3VhbGx5IG5lZ2xpZ2libGUuIERlZmF1bHRzIHRvIGB0cnVlYC4KCiMjIyMgYGRlcmVmZXJlbmNlYCAoYm9vbGVhbikKCklmIHNldCB0byBgdHJ1ZWAsIGFsbCBsb2NhbCBhbmQgcmVtb3RlIHJlZmVyZW5jZXMgKGh0dHAvaHR0cHMgYW5kIGZpbGUpICRyZWZzIHdpbGwgYmUgZGVyZWZlcmVuY2VkLiBEZWZhdWx0cyB0byBgZmFsc2VgLgoKIyMjIyBgY29udmVydFVucmVmZXJlbmNlZERlZmluaXRpb25zYCAoYm9vbGVhbikKCkRlZmF1bHRzIHRvIHRydWUuCgpJZiBhIHNjaGVtYSBoYWQgYSBkZWZpbml0aW9ucyBwcm9wZXJ0eSAod2hpY2ggaXMgdmFsaWQgaW4gSlNPTlNjaGVtYSksIGFuZCBvbmx5IHNvbWUgb2YgdGhvc2UgZW50cmllcyBhcmUgcmVmZXJlbmNlZCwgd2UnbGwgc3RpbGwgdHJ5IGFuZCBjb252ZXJ0IHRoZSByZW1haW5pbmcgZGVmaW5pdGlvbnMgdG8gT3BlbkFQSS4gSWYgeW91IGRvIG5vdCB3YW50IHRoaXMgYmVoYXZpb3IsIHNldCB0aGlzIHRvIGBmYWxzZWAuCgojIyMjIGBkZXJlZmVyZW5jZU9wdGlvbnNgIChvYmplY3QgPSAkUmVmUGFyc2VyLk9wdGlvbnMpCgpPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGRlcmVmZXJlbmNlciAoQGFwaWRldnRvb2xzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIpLiBUbyBwcmV2ZW50IGNpcmN1bGFyIHJlZmVyZW5jZXMsIHBhc3MgYHsgZGVyZWZlcmVuY2U6IHsgY2lyY3VsYXI6ICdpZ25vcmUnIH0gfWAuCgojIyBDb21tYW5kIExpbmUKCmBgYHNoClVzYWdlOgogICAganNvbi1zY2hlbWEtdG8tb3BlbmFwaS1zY2hlbWEgPGNvbW1hbmQ+IFtvcHRpb25zXSA8ZmlsZT4KCkNvbW1hbmRzOgogICAgY29udmVydCAgICAgICAgICAgICAgICAgQ29udmVydHMgSlNPTiBTY2hlbWEgRHJhZnQgMDQgdG8gT3BlbkFQSSAzLjAgU2NoZW1hIE9iamVjdAoKT3B0aW9uczoKICAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgIFNob3cgaGVscCBmb3IgYW55IGNvbW1hbmQKICAgIC12LCAtLXZlcnNpb24gICAgICAgICAgIE91dHB1dCB0aGUgQ0xJIHZlcnNpb24gbnVtYmVyCiAgICAtZCwgLS1kZXJlZmVyZW5jZSAgICAgICBJZiBzZXQgYWxsIGxvY2FsIGFuZCByZW1vdGUgcmVmZXJlbmNlcyAoaHR0cC9odHRwcyBhbmQgZmlsZSkgJHJlZnMgd2lsbCBiZSBkZXJlZmVyZW5jZWQKYGBgCgojIyBTeW5jaHJvbm91cyBBUEkKCkZvciBzeW5jaHJvbm91cyBjb252ZXJzaW9uIHdpdGhvdXQgYXN5bmMgb3BlcmF0aW9ucywgdXNlIGBjb252ZXJ0U3luY2A6CgpgYGB0cwppbXBvcnQgeyBjb252ZXJ0U3luYyB9IGZyb20gJ0BvcGVuYXBpLWNvbnRyaWIvanNvbi1zY2hlbWEtdG8tb3BlbmFwaS1zY2hlbWEnOwoKY29uc3Qgc2NoZW1hID0gewoJJHNjaGVtYTogJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIycsCgl0eXBlOiBbJ3N0cmluZycsICdudWxsJ10sCglmb3JtYXQ6ICdkYXRlLXRpbWUnLAp9OwoKY29uc3QgY29udmVydGVkU2NoZW1hID0gY29udmVydFN5bmMoc2NoZW1hKTsKY29uc29sZS5sb2coY29udmVydGVkU2NoZW1hKTsKYGBgCgpUaGlzIHdpbGwgb3V0cHV0IHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUgYXN5bmMgdmVyc2lvbjoKCmBgYGpzCnsKICB0eXBlOiAnc3RyaW5nJywKICBmb3JtYXQ6ICdkYXRlLXRpbWUnLAogIG51bGxhYmxlOiB0cnVlCn0KYGBgCgojIyMgT3B0aW9ucyBmb3IgY29udmVydFN5bmMKCmBjb252ZXJ0U3luY2Agc3VwcG9ydHMgYSBzdWJzZXQgb2YgdGhlIG9wdGlvbnMgYXZhaWxhYmxlIHRvIGBjb252ZXJ0YDoKCiMjIyMgYGNsb25lU2NoZW1hYCAoYm9vbGVhbikKCklmIHNldCB0byBgZmFsc2VgLCBjb252ZXJ0cyB0aGUgcHJvdmlkZWQgc2NoZW1hIGluIHBsYWNlLiBJZiBgdHJ1ZWAsIGNsb25lcyB0aGUgc2NoZW1hIGJ5IGNvbnZlcnRpbmcgaXQgdG8gSlNPTiBhbmQgYmFjay4gVGhlIG92ZXJoZWFkIG9mIHRoZSBjbG9uaW5nIGlzIHVzdWFsbHkgbmVnbGlnaWJsZS4gRGVmYXVsdHMgdG8gYHRydWVgLgoKIyMjIyBgY29udmVydFVucmVmZXJlbmNlZERlZmluaXRpb25zYCAoYm9vbGVhbikKCkRlZmF1bHRzIHRvIGB0cnVlYC4KCklmIGEgc2NoZW1hIGhhcyBhIGBkZWZpbml0aW9uc2AgcHJvcGVydHkgKHZhbGlkIGluIEpTT04gU2NoZW1hKSwgYW5kIG9ubHkgc29tZSBlbnRyaWVzIGFyZSByZWZlcmVuY2VkLCB3ZSdsbCBzdGlsbCB0cnkgdG8gY29udmVydCB0aGUgcmVtYWluaW5nIGRlZmluaXRpb25zIHRvIE9wZW5BUEkuIElmIHlvdSBkbyBub3Qgd2FudCB0aGlzIGJlaGF2aW9yLCBzZXQgdGhpcyB0byBgZmFsc2VgLgoKIyMjIOKaoO+4jyBMaW1pdGF0aW9ucwoKYGNvbnZlcnRTeW5jYCBkb2VzICoqbm90Kiogc3VwcG9ydCBkZXJlZmVyZW5jaW5nIGV4dGVybmFsIHJlZmVyZW5jZXMgKGAkcmVmYCB0byBIVFRQL0hUVFBTIFVSTHMgb3IgZXh0ZXJuYWwgZmlsZXMpLiBJZiB5b3VyIHNjaGVtYSBjb250YWlucyBleHRlcm5hbCByZWZlcmVuY2VzLCB1c2UgdGhlIGFzeW5jIGBjb252ZXJ0YCBmdW5jdGlvbiB3aXRoIHRoZSBgZGVyZWZlcmVuY2U6IHRydWVgIG9wdGlvbiBpbnN0ZWFkLgoKIyMjIyBFeGFtcGxlOgoKYGBgdHMKLy8gU2NoZW1hIHdpdGggZXh0ZXJuYWwgcmVmZXJlbmNlCmNvbnN0IHNjaGVtYSA9IHsKCXR5cGU6ICdvYmplY3QnLAoJcHJvcGVydGllczogewoJCXVzZXI6IHsKCQkJJHJlZjogJ2h0dHBzOi8vZXhhbXBsZS5jb20vc2NoZW1hcy91c2VyLmpzb24nLAoJCX0sCgl9LAp9OwoKLy8gY29udmVydFN5bmMgbGVhdmVzIHRoZSByZWZlcmVuY2UgdW5yZXNvbHZlZApjb25zdCByZXN1bHQgPSBjb252ZXJ0U3luYyhzY2hlbWEpOwovLyBSZXN1bHQ6IHsgdHlwZTogJ29iamVjdCcsIHByb3BlcnRpZXM6IHsgdXNlcjogeyAkcmVmOiAnaHR0cHM6Ly9leGFtcGxlLmNvbS9zY2hlbWFzL3VzZXIuanNvbicgfSB9IH0KCi8vIFVzZSBhc3luYyBjb252ZXJ0IGZvciBwcm9wZXIgcmVzb2x1dGlvbjoKY29uc3QgcmVzb2x2ZWQgPSBhd2FpdCBjb252ZXJ0KHNjaGVtYSwgeyBkZXJlZmVyZW5jZTogdHJ1ZSB9KTsKYGBgCgoqKk5vdGU6KiogRXh0ZXJuYWwgcmVmZXJlbmNlcyB3aWxsIHJlbWFpbiBhcyBgJHJlZmAgcG9pbnRlcnMgaW4gdGhlIG91dHB1dCBzY2hlbWEuIFRoZXkgd2lsbCBub3QgYmUgZXhwYW5kZWQgb3IgdmFsaWRhdGVkLgoKIyMgV2h5PwoKT3BlbkFQSSBpcyBvZnRlbiBkZXNjcmliZWQgYXMgYW4gZXh0ZW5zaW9uIG9mIEpTT04gU2NoZW1hLCBidXQgYm90aCBzcGVjcyBoYXZlIGNoYW5nZWQgb3ZlciB0aW1lIGFuZCBncm93biBpbmRlcGVuZGVudGx5LiBPcGVuQVBJIHYyIHdhcyBiYXNlZCBvbiBKU09OIFNjaGVtYSBkcmFmdCB2NCB3aXRoIGEgbG9uZyBsaXN0IG9mIGRldmlhdGlvbnMsIGJ1dCBPcGVuQVBJIHYzIHNocmFuayB0aGF0IGxpc3QsIHVwcGluZyB0aGVpciBzdXBwb3J0IHRvIGRyYWZ0IHY0IGFuZCBtYWtpbmcgdGhlIGxpc3Qgb2YgZGlzY3JlcGFuY2llcyBzaG9ydGVyLiBUaGlzIGhhcyBiZWVuIHNvbHZlZCBmb3IgT3BlbkFQSSB2My4xLCBidXQgZm9yIHRob3NlIHVzaW5nIE9wZW5BUEkgdjMuMCwgeW91IGNhbiB1c2UgdGhpcyB0b29sIHRvIHNvbHZlIFt0aGUgZGl2ZXJnZW5jZV0oaHR0cHM6Ly9hcGlzeW91d29udGhhdGUuY29tL2Jsb2cvb3BlbmFwaS1hbmQtanNvbi1zY2hlbWEtZGl2ZXJnZW5jZSkuCgohW0RpYWdyYW0gc2hvd2luZyBkYXRhIG1vZGVsICh0aGUgb2JqZWN0cywgcGF5bG9hZCBib2RpZXMsIGV0YykgYW5kIHNlcnZpY2UgbW9kZWwgKGVuZHBvaW50cywgaGVhZGVycywgbWV0YWRhdGEsIGV0YyldKGh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzE2MDAvMCpoaWpJTC0zWGE1RUZaNzgzLnBuZykKClRoaXMgdG9vbCBzZXRzIG91dCB0byBhbGxvdyBmb2xrcyB0byBjb252ZXJ0IGZyb20gSlNPTiBTY2hlbWEgKHRoZWlyIG9uZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGV2ZXJ5dGhpbmcpIHRvIE9wZW5BUEkgKGEgdGhpbmcgZm9yIEhUTUwgZG9jcyBhbmQgbWFraW5nIFNES3MpLgoKIyMgVmVyc2lvbnMKCi0gKipGcm9tOioqIFtKU09OIFNjaGVtYSBEcmFmdCB2NSDigKBdKGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvc3BlY2lmaWNhdGlvbi1saW5rcy5odG1sI2RyYWZ0LTUpCi0gKipUbzoqKiBbT3BlbkFQSSAzLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4zLm1kKQoKX+KAoCBEcmFmdCB2NSBpcyBhbHNvIGtub3duIGFzIERyYWZ0IFdyaWdodCAwMCwgYXMgdGhlIGRyYWZ0cyBhcmUgb2Z0ZW4gbmFtZWQgYWZ0ZXIgdGhlIGF1dGhvciwgYW5kIHRoaXMgd2FzIHRoZSBmaXJzdCBvbmUgYnkgQS4gV3JpZ2h0LiBBbW9uZ3N0IG90aGVyIHRoaW5ncywgZHJhZnQgdjUgYWltZWQgdG8gcmV3cml0ZSB0aGUgbWV0YSBmaWxlcywgYnV0IHRoZSBleHBlcmltZW50IGZhaWxlZCwgbWVhbmluZyB3ZSBuZWVkIHRvIGNvbnRpbnVlIHRvIHVzZSB0aGUgZHJhZnQgdjQgbWV0YWZpbGVzLiBVZ2guXwoKIyMgQ29udmVydGluZyBCYWNrCgpUbyBjb252ZXJ0IHRoZSBvdGhlciB3YXksIGNoZWNrIG91dCBbb3BlbmFwaS1zY2hlbWEtdG8tanNvbi1zY2hlbWFdLCB3aGljaCB0aGlzIHBhY2thZ2Ugd2FzIGJhc2VkIG9uLgoKIyMgVGVzdHMKClRvIHJ1biB0aGUgdGVzdC1zdWl0ZToKCmBgYHNoZWxsCm5wbSB0ZXN0CmBgYAoKIyMgVHJlZXdhcmUKClRoaXMgcGFja2FnZSBpcyBbVHJlZXdhcmVdKGh0dHBzOi8vdHJlZXdhcmUuZWFydGgpLiBJZiB5b3UgdXNlIGl0IGluIHByb2R1Y3Rpb24sIHRoZW4gd2UgYXNrIHRoYXQgeW91IFsqKmJ1eSB0aGUgd29ybGQgYSB0cmVlKipdKGh0dHBzOi8vcGxhbnQudHJlZXdhcmUuZWFydGgve3ZlbmZvcn0ve3BhY2thZ2V9KSB0byB0aGFuayB1cyBmb3Igb3VyIHdvcmsuIEJ5IGNvbnRyaWJ1dGluZyB0byB0aGUgVHJlZXdhcmUgZm9yZXN0IHlvdeKAmWxsIGJlIGNyZWF0aW5nIGVtcGxveW1lbnQgZm9yIGxvY2FsIGZhbWlsaWVzIGFuZCByZXN0b3Jpbmcgd2lsZGxpZmUgaGFiaXRhdHMuCgojIyBUaGFua3MKCi0gW1N0b3BsaWdodF1bXSBmb3IgW2RvbmF0aW5nIHRpbWUgYW5kIGVmZm9ydF0oaHR0cHM6Ly9zdG9wbGlnaHQuaW8vYmxvZy9jb21wYW5pZXMtc3VwcG9ydGluZy1vcGVuLXNvdXJjZS8pIHRvIHRoaXMgcHJvamVjdCwgYW5kIG1hbnkgbW9yZS4KLSBbbWlrdW5uXVtdIGZvciBjcmVhdGluZyBbb3BlbmFwaS1zY2hlbWEtdG8tanNvbi1zY2hlbWFdIHdoaWNoIHRoaXMgaXMgYmFzZWQgb24uCi0gW1BoaWwgU3R1cmdlb25dW10gZm9yIGZsaXBwaW5nIHRoYXQgY29udmVyc2lvbiBzY3JpcHQgYWJvdXQgZmFjZS4KLSBbV2VXb3JrXVtdIGZvciBnaXZpbmcgdGhpcyBhIGhvbWUgZm9yIGEgd2hpbGUuCi0gW0FsbCBDb250cmlidXRvcnNdW2xpbmstY29udHJpYnV0b3JzXQoKW21pa3Vubl06IGh0dHBzOi8vZ2l0aHViLmNvbS9taWt1bm4KW3dld29ya106IGh0dHBzOi8vZ2l0aHViLmNvbS93ZXdvcmsKW3N0b3BsaWdodF06IGh0dHBzOi8vc3RvcGxpZ2h0LmlvLwpbcGhpbCBzdHVyZ2Vvbl06IGh0dHBzOi8vZ2l0aHViLmNvbS9waGlsc3R1cmdlb24KW29wZW5hcGktc2NoZW1hLXRvLWpzb24tc2NoZW1hXTogaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktY29udHJpYi9vcGVuYXBpLXNjaGVtYS10by1qc29uLXNjaGVtYQpbbGluay1jb250cmlidXRvcnNdOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1jb250cmliL2pzb24tc2NoZW1hLXRvLW9wZW5hcGktc2NoZW1hL2dyYXBocy9jb250cmlidXRvcnMK readmeEtag: '"a70d7726cfb7f722c93771e5e2e69f5e783d0caa"' readmeLastModified: Mon, 01 Sep 2025 20:03:04 GMT repositoryId: 212850148 description: >- Due to the OpenAPI v3.0 and JSON Schema discrepancy, you can use this JS library to convert JSON Schema objects to OpenAPI Schema. created: '2019-10-04T15:44:03Z' updated: '2026-01-24T04:05:33Z' language: TypeScript archived: false stars: 122 watchers: 4 forks: 18 owner: openapi-contrib logo: https://avatars.githubusercontent.com/u/49447320?v=4 license: MIT repoEtag: '"401cfab09d727365951bf31322f1f4b9b95c9132c0e9fb3540ab04ce2f65c2f3"' repoLastModified: Sat, 24 Jan 2026 04:05:33 GMT foundInMaster: true id: c443b19d564b9a8e21fe8b6192f75f8f - source: - https://openapi.tools/ - openapi3 tags name: Unchase.OpenAPI.Connectedservice category: - SDK - Code Generators link: https://github.com/unchase/Unchase.OpenAPI.Connectedservice repository: https://github.com/unchase/unchase.openapi.connectedservice language: .NET source_description: >- Visual Studio extension to generate C# (TypeScript) HttpClient (or C# Controllers) code for OpenAPI web service with NSwag. v2: true v3: true repositoryMetadata: base64Readme: >- IVtMb2dvXShpbWcvVW5jaGFzZS1PcGVuQVBJLVN3YWdnZXItQ29ubmVjdGVkLVNlcnZpY2UtTG9nby5wbmcpCgpbVW5jaGFzZSBPcGVuQVBJIChTd2FnZ2VyKSBDb25uZWN0ZWQgU2VydmljZV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPVVuY2hhc2UudW5jaGFzZU9wZW5BUElDb25uZWN0ZWRTZXJ2aWNlKSBpcyBhIFZpc3VhbCBTdHVkaW8gMjAxNy8yMDE5LzIwMjIgZXh0ZW5zaW9uIHRvIGdlbmVyYXRlIGBDI2AgKGBUeXBlU2NyaXB0YCkgYEh0dHBDbGllbnRgIChvciBgQyNgIGBDb250cm9sbGVyc2ApIGNvZGUgZm9yIGBPcGVuQVBJYCAoZm9ybWVybHkgW2BTd2FnZ2VyIEFQSWBdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYWJvdXQvKSkgd2ViIHNlcnZpY2Ugd2l0aCBbTlN3YWddKGh0dHBzOi8vZ2l0aHViLmNvbS9SU3V0ZXIvTlN3YWcpLgoKPiBTdGFydGluZyBmcm9tIFZpc3VhbCBTdHVkaW8gQ29tbXVuaXR5IDIwMTkgdjE2LjEuMyBleHRlbnNpb25zIGJhc2VkIG9uIGBNaWNyb3NvZnQgQ29ubmVjdGVkIFNlcnZpY2VzYCBub3cgd29yayBmaW5lLgoKPiBUaGUgcHJvamVjdCBpcyBkZXZlbG9wZWQgYW5kIG1haW50YWluZWQgYnkgW05pa29sYXkgQ2hlYm90b3YgKCoqVW5jaGFzZSoqKV0oaHR0cHM6Ly9naXRodWIuY29tL3VuY2hhc2UpLgoKIyMgR2V0dGluZyBTdGFydGVkCgojIyMjICoqW1JlYWQgSG93LVRvIG9uIG1lZGl1bS5jb21dKGh0dHBzOi8vbWVkaXVtLmNvbS9AdW5jaGFzZS9ob3ctdG8tZ2VuZXJhdGUtYy1vci10eXBlc2NyaXB0LWNsaWVudC1jb2RlLWZvci1vcGVuYXBpLXN3YWdnZXItc3BlY2lmaWNhdGlvbi1kODgyZDU5ZTNiNzcpKioKCkluc3RhbGwgZnJvbSBgVG9vbHMgLT4gRXh0ZW5zaW9ucyBhbmQgVXBkYXRlc2AgbWVudSBpbnNpZGUgW1Zpc3VhbCBTdHVkaW9dKGh0dHBzOi8vdmlzdWFsc3R1ZGlvLm1pY3Jvc29mdC5jb20vdnMvKSAyMDE3IChmb3IgW1Zpc3VhbFN0dWRpb10oaHR0cHM6Ly92aXN1YWxzdHVkaW8ubWljcm9zb2Z0LmNvbS92cy8pIDIwMTk6IGBFeHRlbnNpb25zIC0+IE1hbmFnZSBFeHRlbnNpb25zYCkgb3IgW2Rvd25sb2FkXShodHRwOi8vdnNpeGdhbGxlcnkuY29tL2V4dGVuc2lvbnMvVW5jaGFzZS5PcGVuQVBJLkNvbm5lY3RlZFNlcnZpY2UuNjMxOTk2MzgtNjIxMS00Mjg1LWJhOGYtNzViMWYwMzI2YzJhL2V4dGVuc2lvbi52c2l4KSAgYXMgYFZTSVhgIHBhY2thZ2UgZnJvbSBWU0dhbGxlcnkgb3IgW2Rvd25sb2FkXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9dW5jaGFzZS51bmNoYXNlT3BlbkFQSUNvbm5lY3RlZFNlcnZpY2UpICBhcyBgVlNJWGAgcGFja2FnZSBmcm9tIFtWaXN1YWwgU3R1ZGlvIE1hcmtldHBsYWNlXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9VW5jaGFzZS51bmNoYXNlb3BlbmFwaWNvbm5lY3RlZHNlcnZpY2UpOgoKIVtBZGRpbmcgVW5jaGFzZSBPcGVuQVBJIChTd2FnZ2VyKSBDb25uZWN0ZWQgU2VydmljZSBpbiBWaXN1YWwgU3R1ZGlvXShpbWcvVW5jaGFzZS1PcGVuQVBJLVN3YWdnZXItQ29ubmVjdGVkLVNlcnZpY2UuZ2lmKQoKIyMgQnVpbGRzIHN0YXR1cwoKfFN0YXR1c3xWYWx1ZXwKfDotLS0tfDotLS06fAp8QnVpbGR8WyFbQnVpbGQgc3RhdHVzXShodHRwczovL2NpLmFwcHZleW9yLmNvbS9hcGkvcHJvamVjdHMvc3RhdHVzLzkwb2V3YW5maDMyZmpjcjYpXShodHRwczovL2NpLmFwcHZleW9yLmNvbS9wcm9qZWN0L3VuY2hhc2UvdW5jaGFzZS5vcGVuYXBpLmNvbm5lY3RlZHNlcnZpY2UpCnxCdWlkIEhpc3Rvcnl8IVtCdWlsZCBoaXN0b3J5XShodHRwczovL2J1aWxkc3RhdHMuaW5mby9hcHB2ZXlvci9jaGFydC91bmNoYXNlL3VuY2hhc2Utb3BlbmFwaS1jb25uZWN0ZWRzZXJ2aWNlKQp8R2l0SHViIFJlbGVhc2V8WyFbR2l0SHViIHJlbGVhc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3JlbGVhc2UvdW5jaGFzZS9VbmNoYXNlLk9wZW5BUEkuQ29ubmVjdGVkc2VydmljZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vdW5jaGFzZS9VbmNoYXNlLk9wZW5BUEkuQ29ubmVjdGVkc2VydmljZS9yZWxlYXNlcy9sYXRlc3QpCnxHaXRIdWIgUmVsZWFzZSBEYXRlfFshW0dpdEh1YiBSZWxlYXNlIERhdGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3JlbGVhc2UtZGF0ZS91bmNoYXNlL1VuY2hhc2UuT3BlbkFQSS5Db25uZWN0ZWRzZXJ2aWNlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS91bmNoYXNlL1VuY2hhc2UuT3BlbkFQSS5Db25uZWN0ZWRzZXJ2aWNlL3JlbGVhc2VzL2xhdGVzdCkKfEdpdEh1YiBSZWxlYXNlIERvd25sb2Fkc3xbIVtHaXRodWIgUmVsZWFzZXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2Rvd25sb2Fkcy91bmNoYXNlL1VuY2hhc2UuT3BlbkFQSS5Db25uZWN0ZWRzZXJ2aWNlL3RvdGFsLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS91bmNoYXNlL1VuY2hhc2UuT3BlbkFQSS5Db25uZWN0ZWRzZXJ2aWNlL3JlbGVhc2VzL2xhdGVzdCkKfFZTIE1hcmtldHBsYWNlfFshW1ZTIE1hcmtldHBsYWNlXShodHRwOi8vdnNtYXJrZXRwbGFjZWJhZGdlLmFwcGhiLmNvbS92ZXJzaW9uLXNob3J0L3VuY2hhc2UuVW5jaGFzZU9wZW5BUElDb25uZWN0ZWRTZXJ2aWNlLnN2ZyldKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT11bmNoYXNlLnVuY2hhc2VPcGVuQVBJQ29ubmVjdGVkU2VydmljZSkKfFZTIE1hcmtldHBsYWNlIERvd25sb2Fkc3xbIVtWUyBNYXJrZXRwbGFjZSBEb3dubG9hZHNdKGh0dHA6Ly92c21hcmtldHBsYWNlYmFkZ2UuYXBwaGIuY29tL2Rvd25sb2Fkcy1zaG9ydC91bmNoYXNlLlVuY2hhc2VPcGVuQVBJQ29ubmVjdGVkU2VydmljZS5zdmcpXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9dW5jaGFzZS51bmNoYXNlT3BlbkFQSUNvbm5lY3RlZFNlcnZpY2UpCnxWUyBNYXJrZXRwbGFjZSBJbnN0YWxsc3xbIVtWUyBNYXJrZXRwbGFjZSBJbnN0YWxsc10oaHR0cDovL3ZzbWFya2V0cGxhY2ViYWRnZS5hcHBoYi5jb20vaW5zdGFsbHMtc2hvcnQvdW5jaGFzZS5VbmNoYXNlT3BlbkFQSUNvbm5lY3RlZFNlcnZpY2Uuc3ZnKV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPXVuY2hhc2UudW5jaGFzZU9wZW5BUElDb25uZWN0ZWRTZXJ2aWNlKQoKIyMgRmVhdHVyZXMKCi0gR2VuZXJhdGUgYEMjYCBvciBgVHlwZVNjcmlwdGAgY2xpZW50cy9wcm94aWVzIChjbGllbnQgY29kZSkgZnJvbSBTd2FnZ2VyIDIuMCBhbmQgT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbnMKLSBHZW5lcmF0ZSBgQyNgIEFTUC5ORVQgQ29udHJvbGxlciBmcm9tIFN3YWdnZXIgMi4wIGFuZCBPcGVuQVBJIDMuMCBzcGVjaWZpY2F0aW9ucwotICoqRXhwZXJpbWVudGFsKio6IEdlbmVyYXRlIGBDI2Agb3IgYFR5cGVTY3JpcHRgIGNsaWVudHMvcHJveGllcyAoY2xpZW50IGNvZGUpIG9yIEFTUC5ORVQgQ29udHJvbGxlciBmcm9tIE9EYXRhIHNwZWNpZmljYXRpb24gY29udmVydGVkIHRvIE9wZW5BUEkgYmFzZWQgb24gW09wZW5BUEkuTkVULk9EYXRhXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L09wZW5BUEkuTkVULk9EYXRhKQotIEdlbmVyYXRlIGAubnN3YWdgIGZpbGUgZm9yIHVzaW5nIGluIFtgTlN3YWdTdHVkaW9gXShodHRwczovL2dpdGh1Yi5jb20vTlN3YWcvTlN3YWcvd2lraS9OU3dhZ1N0dWRpbykgKG5vIG5lZWQgdG8gaW5zdGFsbCBmb3IgZ2VuZXJhdGluZykKLSBBZGQgcmVxdWlyZWQgZGVwZW5kZW5jaWVzIGZvciB0aGUgYEMjYCBjbGllbnQgKGJlZm9yZSBnZW5lcmF0aW5nKToKCS0gTGlicmFyeSB0YXJnZXRpbmcgLk5FVCBTdGFuZGFyZCAxLjQrOgoJCTEuIE5ld3RvbnNvZnQuSnNvbiAoW051R2V0XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTmV3dG9uc29mdC5Kc29uKSkKCQkyLiBTeXN0ZW0uTmV0Lkh0dHAgKFtOdUdldF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1N5c3RlbS5OZXQuSHR0cCkpCgkJMy4gU3lzdGVtLkNvbXBvbmVudE1vZGVsLkFubm90YXRpb25zIChbTnVHZXRdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9TeXN0ZW0uQ29tcG9uZW50TW9kZWwuQW5ub3RhdGlvbnMpKQoJLSBMaWJyYXJ5IHRhcmdldGluZyB0aGUgZnVsbCAuTkVUOgoJCTEuIE5ld3RvbnNvZnQuSnNvbiAoW051R2V0XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTmV3dG9uc29mdC5Kc29uKSkKCQkyLiBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uIChHQUMpCgkJMy4gU3lzdGVtLkNvbXBvbmVudE1vZGVsLkRhdGFBbm5vdGF0aW9ucyAoR0FDKQoJLSBMaWJyYXJ5IHRhcmdldGluZyBQQ0wgMjU5IChQb3J0YWJsZSBDbGFzcyBMaWJyYXJ5KToKCQkxLiBOZXd0b25zb2Z0Lkpzb24gKFtOdUdldF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05ld3RvbnNvZnQuSnNvbikpCgkJMi4gTWljcm9zb2Z0Lk5ldC5IdHRwIChbTnVHZXRdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuTmV0Lkh0dHApKQoJCTMuIFBvcnRhYmxlLkRhdGFBbm5vdGF0aW9ucyAoW051R2V0XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvUG9ydGFibGUuRGF0YUFubm90YXRpb25zKSkKLSBBZGQgUmVxdWlyZWQgZGVwZW5kZW5jZXMgZm9yIHRoZSBgQyNgIGNvbnRyb2xsZXIgKGJlZm9yZSBnZW5lcmF0aW5nKToKCTEuIE1pY3Jvc29mdC5Bc3BOZXRDb3JlLk12YyAoW051R2V0XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0LkFzcE5ldENvcmUuTVZDKSkKLSAqKkNvbW1hbmQqKiB0byBvcGVuIGdlbmVyYXRlZCBgLm5zd2FnYCBhbmQgYC5uc3dhZy5qc29uYCBmaWxlcyBpbiBbTlNXYWdTdHVkaW9dKGh0dHBzOi8vZ2l0aHViLmNvbS9OU3dhZy9OU3dhZy93aWtpL05Td2FnU3R1ZGlvKQotICoqQ29tbWFuZCoqIHRvIGNvbXBhcmUgYC5uc3dhZy5qc29uYCBzcGVjaWZpY2F0aW9uIGZpbGUgd2l0aCBhbm90aGVyIGAubnN3YWcuanNvbmAgc3BlY2lmaWNhdGlvbiBmaWxlIChvciBzcGVjaWZpY2F0aW9uIGdpdmVuIGJ5IGBlbmRwb2ludGApCi0gU3RvcmFnZSBvZiB0aGUgbGFzdCAxMCBlbmRwb2ludHMgKHNwZWNpZmljYXRpb24gcGF0aCkKCiMjIFNldHRpbmdzIE1lYW5pbmcKCk1lYW5pbmcgb2YgdGhlIFVuY2hhc2UgW09wZW5BUEkgKFN3YWdnZXIpIENvbm5lY3RlZCBTZXJ2aWNlXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9dW5jaGFzZS51bmNoYXNlT3BlbkFQSUNvbm5lY3RlZFNlcnZpY2UpIHNldHRpbmdzIGFjY29yZGluZyB0byBbTlN3YWdTdHVkaW9dKGh0dHBzOi8vZ2l0aHViLmNvbS9OU3dhZy9OU3dhZy93aWtpL05Td2FnU3R1ZGlvKToKCiFbVW5jaGFzZSBPcGVuQVBJIChTd2FnZ2VyKSBDb25uZWN0ZWQgU2VydmljZSBzZXR0aW5ncyBtZWFuaW5nXShpbWcvVW5jaGFzZS1PcGVuQVBJLVN3YWdnZXItQ29ubmVjdGVkLVNlcnZpY2UtU2V0dGluZ3MtTWVhbmluZy5wbmcpCgojIyBFeGNsdWRlIHR5cGUgbmFtZXMKClNpbmNlIFt2MS40LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS91bmNoYXNlL1VuY2hhc2UuT3BlbkFQSS5Db25uZWN0ZWRzZXJ2aWNlL3JlbGVhc2VzL3RhZy92MS40LjApIHlvdSBjYW4gZXhjbHVkZSB0eXBlIG5hbWVzIGluIHNlcGFyYXRlIFdpbmRvdyBmb3IgQyMgY2xpZW50IGNvZGUgZ2VuZXJhdGlvbjoKCiFbVW5jaGFzZSBPcGVuQVBJIChTd2FnZ2VyKSBDb25uZWN0ZWQgU2VydmljZSAtIGV4Y2x1ZGUgdHlwZSBuYW1lc10oaW1nL0NzaGFycC1DbGllbnQtR2VuZXJhdGlvbi1FeGNsdWRlLVR5cGUtTmFtZXMucG5nKQoKIyMgR2VuZXJhdGUgY29kZSBmcm9tIE9EYXRhIHNwZWNpZmljYXRpb24gY29udmVydGVkIHRvIE9wZW5BUEkgc3BlY2lmaWNhdGlvbgoKU2luY2UgW3YxLjUuMF0oaHR0cHM6Ly9naXRodWIuY29tL3VuY2hhc2UvVW5jaGFzZS5PcGVuQVBJLkNvbm5lY3RlZHNlcnZpY2UvcmVsZWFzZXMvdGFnL3YxLjQuMCkgeW91IGNhbiBnZW5lcmF0ZSBjb2RlIGZyb20gT0RhdGEgc3BlY2lmaWNhdGlvbiBjb252ZXJ0ZWQgdG8gT3BlbkFQSSBzcGVjaWZpY2F0aW9uOgoKIVtVbmNoYXNlIE9wZW5BUEkgKFN3YWdnZXIpIENvbm5lY3RlZCBTZXJ2aWNlIC0gZ2VuZXJhdGUgZnJvbSBPRGF0YV0oaW1nL0NzaGFycC1DbGllbnQtR2VuZXJhdGlvbi1PRGF0YS5wbmcpCgojIyBDdXN0b20gQ29tbWFuZHMKCiMjIyBgT3BlbiBpbiBOU3dhZ1N0dWRpb2AgQ29tbWFuZAoKU2luY2UgKnYxLjEuKiogaGF2ZSBiZWVuIGFkZGVkIG1lbnUgY29tbWFuZCBlbWJlZGRlZCBpbiBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEV4cGxvcmVyIGNvbnRleHQgbWVudSBsZXRzIHlvdSBvcGVuIGdlbmVyYXRlZCBgLm5zd2FnYCBhbmQgYC5uc3dhZy5qc29uYCBmaWxlcyBpbiBbTlN3YWdTdHVkaW9dKGh0dHBzOi8vZ2l0aHViLmNvbS9OU3dhZy9OU3dhZy93aWtpL05Td2FnU3R1ZGlvKS4KClRoaXMgZXh0ZW5zaW9uIGlzIGZvciB0aG9zZSB0aW1lcyB3aGVyZSB5b3UgZ2VuZXJhdGUgYC5uc3dhZ2AgYW5kIGAubnN3YWcuanNvbmAgZmlsZXMgYW5kIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gcXVpY2tseSBvcGVuIGl0IGluIFtOU3dhZ1N0dWRpb10oaHR0cHM6Ly9naXRodWIuY29tL05Td2FnL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pLgoKIyMjIyBQcmVyZXF1aXNpdGUKCj4gSW4gb3JkZXIgdG8gdXNlIHRoaXMgZXh0ZW5zaW9uLCB5b3UgbXVzdCBoYXZlIFtWaXN1YWwgU3R1ZGlvXShodHRwczovL3Zpc3VhbHN0dWRpby5taWNyb3NvZnQuY29tL3ZzLykgMjAxNy8yMDE5LCB0aGlzIGNvbm5lY3RlZCBzZXJ2aWNlIGFzIHdlbGwgYXMgW05Td2FnU3R1ZGlvXShodHRwczovL2dpdGh1Yi5jb20vTlN3YWcvTlN3YWcvd2lraS9OU3dhZ1N0dWRpbykgaW5zdGFsbGVkLgoKIyMjIyBTb2x1dGlvbiBFeHBsb3JlcgoKWW91IGNhbiBvcGVuIGAubnN3YWdgIGFuZCBgLm5zd2FnLmpzb25gIGZpbGVzIGluIFtOU1dhZ1N0dWRpb10oaHR0cHM6Ly9naXRodWIuY29tL05Td2FnL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pIGJ5IHNpbXBseSByaWdodC1jbGlja2luZyBpdCBpbiBTb2x1dGlvbiBFeHBsb3JlciBhbmQgc2VsZWN0ICoqT3BlbiBpbiBOU3dhZ1N0dWRpbyoqOgoKIVtPcGVuIGluIE5Td2FnU3R1ZGlvIG1lbnUgQ29tbWFuZF0oaW1nL09wZW5XaXRoTlN3YWdDb21tYW5kTWVudS5wbmcpCgojIyMjIFBhdGggdG8gTlN3YWdTdHVkaW8uZXhlCgpJZiB5b3UgaW5zdGFsbGVkIFtOU3dhZ1N0dWRpb10oaHR0cHM6Ly9naXRodWIuY29tL05Td2FnL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pIGF0IGEgbm9uLWRlZmF1bHQgbG9jYXRpb24sIGEgcHJvbXB0IHdpbGwgYXNrIGZvciB0aGUgcGF0aCB0byBgTlN3YWdTdHVkaW8uZXhlYC4KCllvdSBjYW4gYWx3YXlzIGNoYW5nZSB0aGUgbG9jYXRpb24gaW4gKlRvb2xzIC0+IE9wdGlvbnMgLT4gV2ViIC0+IFVuY2hhc2UgT3BlbkFQSSAoU3dhZ2dlcikgQ29ubmVjdGVkIFNlcnZpY2UqOgoKIVtPcGVuIGluIE5Td2FnU3R1ZGlvIE9wdGlvbl0oaW1nL1VuY2hhc2VPcGVuQVBJQ29ubmVjdGVkU2VydmljZUNvbW1hbmRzT3B0aW9uczEucG5nKQoKIyMjIGBDb21wYXJlIE9wZW5BUEktc3BlY2lmaWNhdGlvbnMuLi5gIENvbW1hbmQKClNpbmNlICp2MS4yLioqIGhhdmUgYmVlbiBhZGRlZCBtZW51IGNvbW1hbmQgZW1iZWRkZWQgaW4gVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBFeHBsb3JlciBjb250ZXh0IG1lbnUgbGV0cyB5b3UgY29tcGFyZSBnZW5lcmF0ZWQgYC5uc3dhZy5qc29uYCBzcGVjaWZpY2F0aW9uLWZpbGUgd2l0aCBhbm90aGVyIGAubnN3YWcuanNvbmAgc3BlY2lmaWNhdGlvbi1maWxlIChvciB3aXRoIHNwZWNpZmljYXRpb24gZ2l2ZW4gYnkgYGVuZHBvaW50YCkuCgpUaGlzIGV4dGVuc2lvbiBpcyBmb3IgdGhvc2UgdGltZXMgd2hlcmUgeW91IGdlbmVyYXRlIGAubnN3YWcuanNvbmAgZmlsZSBhbmQgeW91IHdhbnQgdG8gcXVpY2tseSBjb21wYXJlIGl0IHdpdGggYW5vdGhlciBzcGVjaWZpY2F0aW9uIG9yIHNwZWNpZmljYXRpb24gZ2l2ZW4gYnkgYGVuZHBvaW50YC4KCiMjIyMgUHJlcmVxdWlzaXRlCgo+IEluIG9yZGVyIHRvIHVzZSB0aGlzIGV4dGVuc2lvbiwgeW91IG11c3QgaGF2ZSBbVmlzdWFsIFN0dWRpb10oaHR0cHM6Ly92aXN1YWxzdHVkaW8ubWljcm9zb2Z0LmNvbS92cy8pIDIwMTcvMjAxOSBhcyB3ZWxsIGFzIHRoaXMgY29ubmVjdGVkIHNlcnZpY2UuCgojIyMjIFNvbHV0aW9uIEV4cGxvcmVyCgpZb3UgY2FuIGNvbXBhcmUgYC5uc3dhZy5qc29uYCBzcGVjaWZpY2F0aW9uLWZpbGUgd2l0aCBhbm90aGVyIGAubnN3YWcuanNvbmAgc3BlY2lmaWNhdGlvbi1maWxlIChvciB3aXRoIHNwZWNpZmljYXRpb24gZ2l2ZW4gYnkgYGVuZHBvaW50YCkgYnkgc2ltcGx5IHNlbGVjdGluZyBvbmUgb3IgdHdvIGZpbGVzIGFuZCByaWdodC1jbGlja2luZyB0aGVtIGluIFNvbHV0aW9uIEV4cGxvcmVyIGFuZCBzZWxlY3QgKipDb21wYXJlIE9wZW5BUEktc3BlY2lmaWNhdGlvbnMuLi4qKjoKCiFbQ29tcGFyZSBPcGVuQVBJIFNwZWNpZmljYXRpb25zIENvbW1hbmRdKGltZy9Db21wYXJlT3BlbkFQSVNwZWNpZmljYXRpb25zT25lRmlsZUNvbW1hbmRNZW51LnBuZykgIVtDb21wYXJlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbnMgQ29tbWFuZF0oaW1nL0NvbXBhcmVPcGVuQVBJU3BlY2lmaWNhdGlvbnNUd29GaWxlc0NvbW1hbmRNZW51LnBuZykKCiMjIyMgUGF0aCB0byB0aGUgc3BlY2lmaWNhdGlvbiBgRW5kcG9pbnRgCgpZb3UgY2FuIGFsd2F5cyBjaGFuZ2UgdGhlIHNwZWNpZmljYXRpb24gRW5kcG9pbnQgdG8gY29tcGFyZSB3aXRoIGluICpUb29scyAtPiBPcHRpb25zIC0+IFdlYiAtPiBVbmNoYXNlIE9wZW5BUEkgKFN3YWdnZXIpIENvbm5lY3RlZCBTZXJ2aWNlKjoKCiFbQ29tcGFyZSBPcGVuQVBJIFNwZWNpZmljYXRpb25zIE9wdGlvbl0oaW1nL1VuY2hhc2VPcGVuQVBJQ29ubmVjdGVkU2VydmljZUNvbW1hbmRzT3B0aW9uczIucG5nKQoKIyMjIyBDb21wYXJlIFZpZXcKCiFbQ29tcGFyZSBPcGVuQVBJIFNwZWNpZmljYXRpb25zIENvbW1hbmQgcmVzdWx0XShpbWcvQ29tcGFyZU9wZW5BUElTcGVjaWZpY2F0aW9uc0NvbW1hbmRSZXN1bHQucG5nKQoKIyMgSG93VG9zCgotIFsgXSBBZGQgSG93VG9zIGluIGEgZnV0dXJlCi0gWyBdIC4uLiBbcmVxdWVzdCBmb3IgSG93VG8geW91IG5lZWRdKGh0dHBzOi8vZ2l0aHViLmNvbS91bmNoYXNlL1VuY2hhc2UuT3BlbkFQSS5Db25uZWN0ZWRzZXJ2aWNlL2lzc3Vlcy9uZXc/dGl0bGU9RE9DKQoKIyMgVHJvdWJsZXNob290aW5nCgojIyMgQ2FuJ3Qgb3BlbiAubnN3YWcgZmlsZSBpbiBOU3dhZ1N0dWRpbwoKLSBZb3UgY2FuIHVzZSAqKk9wZW4gaW4gTlN3YWdTdHVkaW8qKiBtZW51IGNvbW1hbmQKLSBJZiBnZW5lcmF0ZWQgY29kZSBjb3JydXB0ZWQsIHRyeSB0byBvcGVuIGAubnN3YWdgIGZpbGUgaW4gW2BOU3dhZ1N0dWRpb2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9SU3V0ZXIvTlN3YWcvd2lraS9OU3dhZ1N0dWRpbykgKFdpbmRvd3MgR1VJIGZvciBlZGl0aW5nIC4qbnN3YWcgZmlsZXMpCi0gSWYgaXQgZG9lc24ndCBvcGVuLCB0cnkgdG8gY3JlYXRlIG5ldyBgLm5zd2FnYCBmaWxlIGluIFtgTlN3YWdTdHVkaW9gXShodHRwczovL2dpdGh1Yi5jb20vUlN1dGVyL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pIGZvciB0aGUgc2FtZSBBUEkgc2VydmljZSBsaW5rIGFuZCBjaGVjayB0aGUgZGlmZmVyZW5jZXMKCiMjIyBJbnN0YWxsYXRpb24gY29tcGxldGVzIGJ1dCBJIGNhbid0IHNlZSB0aGUgU2VydmljZSBpbiB0aGUgbGlzdCBvZiBjb25uZWN0ZWQgc2VydmljZXMgKFZpc3VhbCBTdHVkaW8gMjAxOSkKCi0gUmVsZXZhbnQgW2J1ZyByZXBvcnRdKGh0dHBzOi8vZGV2ZWxvcGVyY29tbXVuaXR5LnZpc3VhbHN0dWRpby5jb20vY29udGVudC9wcm9ibGVtLzQ2ODc1MS92czIwMTktcHJldmlldy1jYW5ub3QtaW5zdGFsbC1jb25uZWN0ZWQtc2VydmljZS1leC5odG1sKS4gYENvbm5lY3RlZCBTZXJ2aWNlc2AgcmVzdG9yZWQgaW4gdGhlIHYxNi4xLjMgdXBkYXRlIHRvIFtWaXN1YWwgU3R1ZGlvXShodHRwczovL3Zpc3VhbHN0dWRpby5taWNyb3NvZnQuY29tL3ZzLykgMjAxOS4KCiMjIFJvYWRtYXAKClNlZSB0aGUgW2NoYW5nZWxvZ10oQ0hBTkdFTE9HLm1kKSBmb3IgdGhlIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgcGxhbnMgYW5kIHZlcnNpb24gaGlzdG9yeS4KCiMjIEZlZWRiYWNrCgpQbGVhc2UgZmVlbCBmcmVlIHRvIGFkZCB5b3VyIFtyZXZpZXddKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT11bmNoYXNlLnVuY2hhc2VPcGVuQVBJQ29ubmVjdGVkU2VydmljZSZzc3I9ZmFsc2UjcmV2aWV3LWRldGFpbHMpLCBbcmVxdWVzdCBhIGZlYXR1cmVdKGh0dHBzOi8vZ2l0aHViLmNvbS91bmNoYXNlL1VuY2hhc2UuT3BlbkFQSS5Db25uZWN0ZWRzZXJ2aWNlL2lzc3Vlcy9uZXc/dGl0bGU9RkVBVFVSRSksIFthc2sgYSBxdWVzdGlvbl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPXVuY2hhc2UudW5jaGFzZU9wZW5BUElDb25uZWN0ZWRTZXJ2aWNlJnNzcj1mYWxzZSNxbmEpIG9yIFtyZXBvcnQgYSBidWddKGh0dHBzOi8vZ2l0aHViLmNvbS91bmNoYXNlL1VuY2hhc2UuT3BlbkFQSS5Db25uZWN0ZWRzZXJ2aWNlL2lzc3Vlcy9uZXc/dGl0bGU9QlVHKSBpbmNsdWRpbmcgaW4gY29ubmVjdGVkIHNlcnZpY2U6IAoKIVtVbmNoYXNlIE9wZW5BUEkgQ29ubmVjdGVkIFNlcnZpY2UgUmVwb3J0IGEgQnVnXShpbWcvVW5jaGFzZS1PcGVuQVBJLUNvbm5lY3RlZC1TZXJ2aWNlLVJlcG9ydEJ1Zy5wbmcpCgpUaGFuayB5b3UgaW4gYWR2YW5jZSEKCiMjIFRoYW5rIG1lIQoKSWYgeW91IGxpa2Ugd2hhdCBJIGFtIGRvaW5nIGFuZCB5b3Ugd291bGQgbGlrZSB0byB0aGFuayBtZSwgcGxlYXNlIGNvbnNpZGVyOgoKWyFbQnV5IG1lIGEgY29mZmUhXShpbWcvYnV5bWVhY29mZmUucG5nKV0oaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9uaWtvbGF5Y2hlYm90b3YpCgpUaGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEKCi0tLS0tLS0tLS0KCkNvcHlyaWdodCAmY29weTsgMjAxOSBbTmlrb2xheSBDaGVib3RvdiAoKipVbmNoYXNlKiopXShodHRwczovL2dpdGh1Yi5jb20vdW5jaGFzZSkgLSBQcm92aWRlZCB1bmRlciB0aGUgW0FwYWNoZSBMaWNlbnNlIDIuMF0oTElDRU5TRS5tZCkuCgo= readmeEtag: '"de7939daae9afa578f8259c0e47d0ad3c1d2ccf3"' readmeLastModified: Tue, 20 Jun 2023 19:32:43 GMT repositoryId: 178596119 description: >- :scroll: Visual Studio extension to generate OpenAPI (Swagger) web service reference. created: '2019-03-30T18:26:16Z' updated: '2025-12-21T00:20:36Z' language: C# archived: false stars: 109 watchers: 2 forks: 19 owner: unchase logo: https://avatars.githubusercontent.com/u/29679226?v=4 license: Apache-2.0 repoEtag: '"e2d11d3dd70fa8844aee1283ec9f9f13d1ea4946e3c919e752c8bf3f375bff40"' repoLastModified: Sun, 21 Dec 2025 00:20:36 GMT foundInMaster: true id: b552c4cab06ab1125ad610aaea022ee3 - source: https://openapi.tools/ name: VSCode OpenAPI Preview category: - Documentation - Parsers language: TypeScript link: https://marketplace.visualstudio.com/items?itemName=zoellner.openapi-preview repository: https://github.com/zoellner/openapi-preview source_description: >- Preview OpenAPI v3.0 & v3.1 documents in Visual Studio Code using Spotlight Elements. v2: false v3: true v3_1: true id: b17945a4cfa653f43157e65867d551ec repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXByZXZpZXcKCkludGVncmF0ZWQgV2ViIFBhbmVsIHByZXZpZXcgZm9yIGFuIFtPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKQpPcGVuQVBJIEZvcm1hdCAzLjEKCiMjIEZlYXR1cmVzCgoqIERpc3BsYXlzIEFQSSBkb2NzIGluIGEgYnVpbGQgaW4gd2ViIHBhbmVsIHVzaW5nIFtTcG90bGlnaHQgRWxlbWVudHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9wbGlnaHRpby9lbGVtZW50cykuCgoKIyMgVXNhZ2UKCiogT3BlbiB0aGUgbWFpbiAqT3BlbkFQSSBZQU1MIGZpbGUqLgoqIFJ1biB0aGUgQ29tbWFuZCBg4oen4oyYUGAgKG9uIE1hYykgb3IgYEN0cmwrU2hpZnQrUGAgKG9uIFdpbmRvd3MpICoqT3BlbkFQSSBQcmV2aWV3KiouCg== readmeEtag: '"7cd2c62d79bed77fc8ed34039610334c16c1f1d3"' readmeLastModified: Thu, 11 Jul 2024 06:28:46 GMT repositoryId: 160854009 description: OpenAPI Preview Extension for VS Code created: '2018-12-07T17:16:12Z' updated: '2025-12-25T15:32:08Z' language: TypeScript archived: false stars: 8 watchers: 2 forks: 2 owner: zoellner logo: https://avatars.githubusercontent.com/u/2665319?v=4 license: MIT repoEtag: '"6620f9f2746bfc58297bcdbde9b66dce7ad632a52c91b2c87f260bb9afb589eb"' repoLastModified: Thu, 25 Dec 2025 15:32:08 GMT foundInMaster: true - source: https://openapi.tools/ name: openapi-processor category: Server language: Java link: https://docs.openapiprocessor.io repository: https://github.com/openapi-processor source_description: > Generates java interfaces & model classes for Spring Boot (annotation based, MVC & WebFlux) or Micronaut (annotation based) from an OpenAPI yaml description. Provides powerful type mapping capabilities to adjust the generated code. Gradle & Maven support. Playground. v2: false v3: true v3_1: true id: 8dde59828e2a316fa7a7f1f7f038cea6 foundInMaster: true - source: https://openapi.tools/ name: openapi-processor/openapi-parser category: - Parsers - Schema Validators language: Java link: https://github.com/openapi-processor/openapi-parser repository: https://github.com/openapi-processor/openapi-parser source_description: > OpenAPI parser with (json schema) validation (currently 3.0 only). Separate apis for OpenAPI 3.0 & 3.1. Easily get resolved $ref objects. Pluggable document reader & json/yaml converter. Minimal dependencies. v2: false v3: true v3_1: true id: 22335853514b99484180f312b1db1fa1 repositoryMetadata: base64Readme: >- Om9wZW5hcGk6IGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8KOnBhcnNlcjogaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktcHJvY2Vzc29yL29wZW5hcGktcGFyc2VyL3RyZWUvbWFzdGVyL29wZW5hcGktcGFyc2VyCjpwYXJzZXItYm9tOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1wcm9jZXNzb3Ivb3BlbmFwaS1wYXJzZXIvdHJlZS9tYXN0ZXIvb3BlbmFwaS1wYXJzZXItYm9tCjp2YWxpZGF0b3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLXByb2Nlc3Nvci9vcGVuYXBpLXBhcnNlci90cmVlL21hc3Rlci9qc29uLXNjaGVtYS12YWxpZGF0b3IKOnZhbGlkYXRvci1ib206IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLXByb2Nlc3Nvci9vcGVuYXBpLXBhcnNlci90cmVlL21hc3Rlci9qc29uLXNjaGVtYS12YWxpZGF0b3ItYm9tCjppby1pbnRlcmZhY2VzOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1wcm9jZXNzb3Ivb3BlbmFwaS1wYXJzZXIvdHJlZS9tYXN0ZXIvaW8taW50ZXJmYWNlcwo6Y29udmVydGVyLWphY2tzb246IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLXByb2Nlc3Nvci9vcGVuYXBpLXBhcnNlci90cmVlL21hc3Rlci9pby1qYWNrc29uCjpjb252ZXJ0ZXItc25ha2V5YW1sOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1wcm9jZXNzb3Ivb3BlbmFwaS1wYXJzZXIvdHJlZS9tYXN0ZXIvaW8tc25ha2V5YW1sCjptZW1vcnk6IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLXByb2Nlc3Nvci9vcGVuYXBpLXBhcnNlci90cmVlL21hc3Rlci9tZW1vcnktcHJvdG9jb2wKOmphY2tzb246IGh0dHBzOi8vZ2l0aHViLmNvbS9GYXN0ZXJYTUwvamFja3Nvbgo6c25ha2V5YW1sOiBodHRwczovL2JpdGJ1Y2tldC5vcmcvc25ha2V5YW1sL3NuYWtleWFtbC9zcmMvbWFzdGVyLwoKOmFsbC1jaTogaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktcHJvY2Vzc29yL29wZW5hcGktcGFyc2VyL2FjdGlvbnM/cXVlcnk9d29ya2Zsb3clM0FidWlsZAo6YWxsLWNpLWJhZGdlOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1wcm9jZXNzb3Ivb3BlbmFwaS1wYXJzZXIvd29ya2Zsb3dzL2J1aWxkL2JhZGdlLnN2ZwoKOmNlbnRyYWwtc2VhcmNoOiBodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9aW8ub3BlbmFwaXByb2Nlc3Nvcgo6cGFyc2VyLWNlbnRyYWwtYmFkZ2U6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tY2VudHJhbC92L2lvLm9wZW5hcGlwcm9jZXNzb3Ivb3BlbmFwaS1wYXJzZXI/bGFiZWw9TWF2ZW4lMjBDZW50cmFsCjpwYXJzZXItYm9tLWNlbnRyYWwtYmFkZ2U6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tY2VudHJhbC92L2lvLm9wZW5hcGlwcm9jZXNzb3Ivb3BlbmFwaS1wYXJzZXItYm9tP2xhYmVsPU1hdmVuJTIwQ2VudHJhbAo6dmFsaWRhdG9yLWNlbnRyYWwtYmFkZ2U6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tY2VudHJhbC92L2lvLm9wZW5hcGlwcm9jZXNzb3IvanNvbi1zY2hlbWEtdmFsaWRhdG9yP2xhYmVsPU1hdmVuJTIwQ2VudHJhbAo6dmFsaWRhdG9yLWJvbS1jZW50cmFsLWJhZGdlOiBodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLWNlbnRyYWwvdi9pby5vcGVuYXBpcHJvY2Vzc29yL2pzb24tc2NoZW1hLXZhbGlkYXRvci1ib20/bGFiZWw9TWF2ZW4lMjBDZW50cmFsCjppbnRlcmZhY2VzLWNlbnRyYWwtYmFkZ2U6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tY2VudHJhbC92L2lvLm9wZW5hcGlwcm9jZXNzb3IvaW8taW50ZXJmYWNlcz9sYWJlbD1NYXZlbiUyMENlbnRyYWwKOmphY2tzb24tY2VudHJhbC1iYWRnZTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9tYXZlbi1jZW50cmFsL3YvaW8ub3BlbmFwaXByb2Nlc3Nvci9pby1qYWNrc29uP2xhYmVsPU1hdmVuJTIwQ2VudHJhbAo6c25ha2V5YW1sLWNlbnRyYWwtYmFkZ2U6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tY2VudHJhbC92L2lvLm9wZW5hcGlwcm9jZXNzb3IvaW8tc25ha2V5YW1sP2xhYmVsPU1hdmVuJTIwQ2VudHJhbAoKSXQgaXMgdXNhYmxlLCBpdCBpcyB1c2VkIGFzIHRoZSBpbnRlcm5hbCBvcGVuYXBpIHBhcnNlci92YWxpZGF0b3IgYnkgb3BlbmFwaS1wcm9jZXNzb3IuCgo9PSBvcGVuYXBpLXBhcnNlciAmIHZhbGlkYXRvcgoKYSBKYXZhIDExIGJhc2VkIGxpbms6e29wZW5hcGl9W09wZW5BUEldIDMuMiwgMy4xLCAzLjAgcGFyc2VyIHdpdGggdmFsaWRhdGlvbiBhbmQgcGx1Z2dhYmxlIGRvY3VtZW50IHJlYWRlciAmIGpzb24veWFtbCBjb252ZXJ0ZXIuCgoqIHBhcnNlIE9wZW5BUEkgMy4yLCAzLjEgJiAzLjAKKiB2YWxpZGF0ZSBPcGVuQVBJIDMuMiwgMy4xICYgMy4wIChKU09OIHNjaGVtYSB2YWxpZGF0aW9uLCBjYW4gZm9sbG93ICRyZWYncyBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudCkKKiBzZXBhcmF0ZSBhcGlzIGZvciBPcGVuQVBJIDMuMiwgMy4xICYgMy4wCiogZWFzaWx5IGdldCByZXNvbHZlZCAkcmVmIG9iamVjdAoqIGJ1bmRsZSAmIHdyaXRlIChzaW5nbGUgZmlsZSkgT3BlbkFQSSBkb2N1bWVudAoqIGFwcGx5IG92ZXJsYXkgdG8gKGJ1bmRsZWQpIE9wZW5BUEkgZG9jdW1lbnQgKGV4cGVyaW1lbnRhbCkKKiBtaW5pbWFsIGRlcGVuZGVuY2llcwoqIHBsdWdnYWJsZSBkb2N1bWVudCByZWFkZXIKKiBwbHVnZ2FibGUganNvbi95YW1sIGNvbnZlcnRlcgoqIHBsdWdnYWJsZSBgZm9ybWF0YCB2YWxpZGF0b3JzIChwbGFubmVkKQoKPT0gbW9kdWxlcwoKLy8gYmFkZ2VzCmxpbms6e2FsbC1jaX1baW1hZ2U6e2FsbC1jaS1iYWRnZX1bXV0KCgo9PT0gbGluazp7cGFyc2VyfVtvcGVuYXBpLXBhcnNlcl0KCmxpbms6e2NlbnRyYWwtc2VhcmNofVtpbWFnZTp7cGFyc2VyLWNlbnRyYWwtYmFkZ2V9W11dCmltYWdlOmh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvT3BlbkFQSS0zLjIlMkNfMy4xJTJDXzMuMC0lMjMwMGMwMDA/bGFiZWw9T3BlbkFQSVtTdGF0aWMgQmFkZ2VdCgp0aGUgbGluazp7b3BlbmFwaX1bT3BlbkFQSV0gcGFyc2VyLgoKPT09IGxpbms6e3BhcnNlci1ib219W29wZW5hcGktcGFyc2VyLWJvbV0KCmxpbms6e2NlbnRyYWwtc2VhcmNofVtpbWFnZTp7cGFyc2VyLWJvbS1jZW50cmFsLWJhZGdlfVtdXQoKQSAiYmlsbCBvZiBtYXRlcmlhbHMiIFBPTSBmb3Igb3BlbmFwaS1wYXJzZXIgZGVwZW5kZW5jaWVzLgoKPT09IGxpbms6e3ZhbGlkYXRvcn1banNvbi1zY2hlbWEtdmFsaWRhdG9yXQoKbGluazp7Y2VudHJhbC1zZWFyY2h9W2ltYWdlOnt2YWxpZGF0b3ItY2VudHJhbC1iYWRnZX1bXV0KaW1hZ2U6aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9lbmRwb2ludD91cmw9aHR0cHMlM0ElMkYlMkZib3d0aWUucmVwb3J0JTJGYmFkZ2VzJTJGamF2YS1pby5vcGVuYXBpcHJvY2Vzc29yLmpzb24tc2NoZW1hLXZhbGlkYXRvciUyRnN1cHBvcnRlZF92ZXJzaW9ucy5qc29uW1N1cHBvcnRlZCBEaWFsZWN0c10KCnRoZSBKU09OIFNjaGVtYSB2YWxpZGF0b3IgdXNlZCBieSB0aGUgYG9wZW5hcGktcGFyc2VyYC4KCj09PSBsaW5rOnt2YWxpZGF0b3ItYm9tfVtqc29uLXNjaGVtYS12YWxpZGF0b3ItYm9tXQoKbGluazp7Y2VudHJhbC1zZWFyY2h9W2ltYWdlOnt2YWxpZGF0b3ItYm9tLWNlbnRyYWwtYmFkZ2V9W11dCgpBICJiaWxsIG9mIG1hdGVyaWFscyIgUE9NIGZvciBqc29uLXNjaGVtYS12YWxpZGF0b3IgZGVwZW5kZW5jaWVzLgoKPT09IGxpbms6e2NvbnZlcnRlci1qYWNrc29ufTNbaW8tamFja3NvbjNdCgpsaW5rOntjZW50cmFsLXNlYXJjaH1baW1hZ2U6e2phY2tzb24tY2VudHJhbC1iYWRnZX1bXV0KCmpzb24veWFtbCBgUmVhZGVyYCwgYFdyaXRlcmAgJiBgQ29udmVydGVyYCBiYXNlZCBvbiBsaW5rOntqYWNrc29ufVtKYWNrc29uIDNdLgoKPT09IGxpbms6e2NvbnZlcnRlci1qYWNrc29ufVtpby1qYWNrc29uXQoKbGluazp7Y2VudHJhbC1zZWFyY2h9W2ltYWdlOntqYWNrc29uLWNlbnRyYWwtYmFkZ2V9W11dCgpqc29uL3lhbWwgYFJlYWRlcmAsIGBXcml0ZXJgICYgYENvbnZlcnRlcmAgYmFzZWQgb24gbGluazp7amFja3Nvbn1bSmFja3NvbiAyXS4KCj09PSBsaW5rOntjb252ZXJ0ZXItc25ha2V5YW1sfVtpby1zbmFrZXlhbWxdCgpsaW5rOntjZW50cmFsLXNlYXJjaH1baW1hZ2U6e3NuYWtleWFtbC1jZW50cmFsLWJhZGdlfVtdXQoKeWFtbCBgUmVhZGVyYCwgYFdyaXRlcmAgJiBgQ29udmVydGVyYCBiYXNlZCBvbiBsaW5rOntzbmFrZXlhbWx9W3NuYWtleWFtbF0uCgo9PT0gbGluazp7aW8taW50ZXJmYWNlc31baW8taW50ZXJmYWNlc10KCmxpbms6e2NlbnRyYWwtc2VhcmNofVtpbWFnZTp7aW50ZXJmYWNlcy1jZW50cmFsLWJhZGdlfVtdXQoKZGVmaW5lcyB0aGUgaW50ZXJmYWNlcyBmb3IgdGhlIHBsdWdnYWJsZSBkb2N1bWVudCByZWFkZXIgYW5kIGpzb24veWFtbCBjb252ZXJ0ZXIuIE9ubHkgbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgYWRkaXRpb25hbCByZWFkZXIgb3IgY29udmVydGVyLgo= readmeEtag: '"56deeaec3c4c2f3a75930d6191403c8d72736339"' readmeLastModified: Sun, 23 Nov 2025 23:07:41 GMT repositoryId: 418185783 description: OpenAPI 3.2, 3.1 & 3.0 Parser & JSON Schema Validator, Java created: '2021-10-17T16:14:37Z' updated: '2026-01-31T15:44:49Z' language: Java archived: false stars: 19 watchers: 2 forks: 2 owner: openapi-processor logo: https://avatars.githubusercontent.com/u/66728774?v=4 license: Apache-2.0 repoEtag: '"d4fc348d13915e674b5e3f1cb37d31e6acea3c8342b230a3946ae9b7e23d8580"' repoLastModified: Sat, 31 Jan 2026 15:44:49 GMT foundInMaster: true - source: https://openapi.tools/ name: mitmproxy2swagger category: - Auto Generators - Server Implementations language: Python link: https://github.com/alufers/mitmproxy2swagger repository: https://github.com/alufers/mitmproxy2swagger source_description: >- A tool for automatically converting mitmproxy captures to OpenAPI 3.0 specifications. Automatically reverse-engineer REST APIs by just running the apps and capturing the traffic. v3: true id: 8799f612e2b1a072f59a35691ca68ff3 repositoryMetadata: base64Readme: >- IyBtaXRtcHJveHkyc3dhZ2dlcgoKWyFbUHlQSSB2ZXJzaW9uXShodHRwczovL2JhZGdlLmZ1cnkuaW8vcHkvbWl0bXByb3h5MnN3YWdnZXIuc3ZnKV0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL3B5L21pdG1wcm94eTJzd2FnZ2VyKQpbIVtBcmNoIExpbnV4IHJlcG9zaXRvcnldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvYXJjaGxpbnV4LW1pdG1wcm94eTJzd2FnZ2VyLWJsdWUpXShodHRwczovL2FyY2hsaW51eC5vcmcvcGFja2FnZXMvZXh0cmEvYW55L21pdG1wcm94eTJzd2FnZ2VyLykKCjxodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS81NDAwOTQwLzE2ODA4NjgxOC1jNDhmNjBhYi0zZjk1LTQyZWItYjQzNS1jOGIxYTYzMjZiODEubXA0PgoKQSB0b29sIGZvciBhdXRvbWF0aWNhbGx5IGNvbnZlcnRpbmcgW21pdG1wcm94eV0oaHR0cHM6Ly9taXRtcHJveHkub3JnLykgY2FwdHVyZXMgdG8gW09wZW5BUEkgMy4wXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIHNwZWNpZmljYXRpb25zLiBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBhdXRvbWF0aWNhbGx5IHJldmVyc2UtZW5naW5lZXIgUkVTVCBBUElzIGJ5IGp1c3QgcnVubmluZyB0aGUgYXBwcyBhbmQgY2FwdHVyaW5nIHRoZSB0cmFmZmljLgoKLS0tCgoqKvCfhpUgTkVXISoqCgpBZGRlZCBzdXBwb3J0IGZvciBwcm9jZXNzaW5nIEhBUiBleHBvcnRlZCBmcm9tIHRoZSBicm93c2VyIERldlRvb2xzLiBTZWUgW1VzYWdlIC0gSEFSXSgjaGFyKSBmb3IgbW9yZSBkZXRhaWxzLgoKLS0tCgojIyBJbnN0YWxsYXRpb24KCkZpcnN0IHlvdSB3aWxsIG5lZWQgcHl0aG9uMyBhbmQgcGlwMy4KCmBgYGJhc2gKJCBwaXAgaW5zdGFsbCBtaXRtcHJveHkyc3dhZ2dlcgojIC4uLiBvciAuLi4KJCBwaXAzIGluc3RhbGwgbWl0bXByb3h5MnN3YWdnZXIKIyAuLi4gb3IgLi4uCiQgZ2l0IGNsb25lIGdpdEBnaXRodWIuY29tOmFsdWZlcnMvbWl0bXByb3h5MnN3YWdnZXIuZ2l0CiQgY2QgbWl0bXByb3h5MnN3YWdnZXIKJCBkb2NrZXIgYnVpbGQgLXQgbWl0bXByb3h5MnN3YWdnZXIgLgpgYGAKClRoZW4gY2xvbmUgdGhlIHJlcG8gYW5kIHJ1biBgbWl0bXByb3h5MnN3YWdnZXJgIGFzIHBlciBleGFtcGxlcyBiZWxvdy4KCiMjIFVzYWdlCgojIyMgTWl0bXByb3h5CgpUbyBjcmVhdGUgYSBzcGVjaWZpY2F0aW9uIGJ5IGluc3BlY3RpbmcgSFRUUCB0cmFmZmljIHlvdSB3aWxsIG5lZWQgdG86CgoxLiBDYXB0dXJlIHRoZSB0cmFmZmljIGJ5IHVzaW5nIHRoZSBtaXRtcHJveHkgdG9vbC4gSSBwZXJzb25hbGx5IHJlY29tbWVuZCB1c2luZyBtaXRtd2ViLCB3aGljaCBpcyBhIHdlYiBpbnRlcmZhY2UgYnVpbHQtaW4gdG8gbWl0bXByb3h5LgoKICAgYGBgYmFzaAogICAkIG1pdG13ZWIKICAgV2ViIHNlcnZlciBsaXN0ZW5pbmcgYXQgaHR0cDovLzEyNy4wLjAuMTo4MDgxLwogICBQcm94eSBzZXJ2ZXIgbGlzdGVuaW5nIGF0IGh0dHA6Ly8qOjk5OTkKICAgLi4uCiAgIGBgYAoKICAgKipJTVBPUlRBTlQqKgoKICAgVG8gY29uZmlndXJlIHlvdXIgY2xpZW50IHRvIHVzZSB0aGUgcHJveHkgZXhwb3NlZCBieSBtaXRtIHByb3h5LCBwbGVhc2UgY29uc3VsdCB0aGUgW21pdG1wcm94eSBkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MubWl0bXByb3h5Lm9yZy9zdGFibGUvKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCjIuIFNhdmUgdGhlIHRyYWZmaWMgdG8gYSBmbG93IGZpbGUuCgogICBJbiBtaXRtd2ViIHlvdSBjYW4gZG8gdGhpcyBieSB1c2luZyB0aGUgIkZpbGUiIG1lbnUgYW5kIHNlbGVjdGluZyAiU2F2ZSI6CgogICAhW0Egc2NyZWVuc2hvdCBzaG93aW5nIHRoZSBsb2NhdGlvbiBvZiB0aGUgIlNhdmUiIG9wdGlvbiBpbiB0aGUgIkZpbGUiIG1lbnVdKC4vZG9jcy9taXRtd2ViX3NhdmUucG5nKQoKMy4gUnVuIHRoZSBmaXJzdCBwYXNzIG9mIG1pdG1wcm94eTJzd2FnZ2VyOgoKICAgYGBgYmFzaAogICAkIG1pdG1wcm94eTJzd2FnZ2VyIC1pIDxwYXRoX3RvX21pdG1wdG94eV9mbG93PiAtbyA8cGF0aF90b19vdXRwdXRfc2NoZW1hPiAtcCA8YXBpX3ByZWZpeD4KICAgIyAuLi4gb3IgLi4uCiAgICQgZG9ja2VyIHJ1biAtaXQgLXYgJFBXRDovYXBwIG1pdG1wcm94eTJzd2FnZ2VyIG1pdG1wcm94eTJzd2FnZ2VyIC1pIDxwYXRoX3RvX21pdG1wdG94eV9mbG93PiAtbyA8cGF0aF90b19vdXRwdXRfc2NoZW1hPiAtcCA8YXBpX3ByZWZpeD4KICAgYGBgCgogICBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBjYW4gdXNlIGFuIGV4aXN0aW5nIHNjaGVtYSwgaW4gd2hpY2ggY2FzZSB0aGUgZXhpc3Rpbmcgc2NoZW1hIHdpbGwgYmUgZXh0ZW5kZWQgd2l0aCB0aGUgbmV3IGRhdGEuIFlvdSBjYW4gYWxzbyBydW4gaXQgYSBmZXcgdGltZXMgd2l0aCBkaWZmZXJlbnQgZmxvdyBjYXB0dXJlcywgdGhlIGNhcHR1cmVkIGRhdGEgd2lsbCBiZSBzYWZlbHkgbWVyZ2VkLgoKICAgYDxhcGlfcHJlZml4PmAgaXMgdGhlIGJhc2UgdXJsIG9mIHRoZSBBUEkgeW91IHdpc2ggdG8gcmV2ZXJzZS1lbmdpbmVlci4gWW91IHdpbGwgbmVlZCB0byBvYnRhaW4gaXQgYnkgb2JzZXJ2aW5nIHRoZSByZXF1ZXN0cyBiZWluZyBtYWRlIGluIG1pdG1wcm94eS4KCiAgIEZvciBleGFtcGxlIGlmIGFuIGFwcCBoYXMgbWFkZSByZXF1ZXN0cyBsaWtlIHRoZXNlOgoKICAgYGBgaHR0cAogICBodHRwczovL2FwaS5leGFtcGxlLmNvbS92MS9sb2dpbgogICBodHRwczovL2FwaS5leGFtcGxlLmNvbS92MS91c2Vycy8yCiAgIGh0dHBzOi8vYXBpLmV4YW1wbGUuY29tL3YxL3VzZXJzLzIvcHJvZmlsZQogICBgYGAKCiAgIFRoZSBsaWtlbHkgcHJlZml4IGlzIGBodHRwczovL2FwaS5leGFtcGxlLmNvbS92MWAuCgo0LiBSdW5uaW5nIHRoZSBmaXJzdCBwYXNzIHNob3VsZCBoYXZlIGNyZWF0ZWQgYSBzZWN0aW9uIGluIHRoZSBzY2hlbWEgZmlsZSBsaWtlIHRoaXM6CgogICBgYGB5YW1sCiAgIHgtcGF0aC10ZW1wbGF0ZXM6CiAgICAgIyBSZW1vdmUgdGhlIGlnbm9yZTogcHJlZml4IHRvIGdlbmVyYXRlIGFuIGVuZHBvaW50IHdpdGggaXRzIFVSTAogICAgICMgTGluZXMgdGhhdCBhcmUgY2xvc2VyIHRvIHRoZSB0b3AgdGFrZSBwcmVjZWRlbmNlLCB0aGUgbWF0Y2hpbmcgaXMgZ3JlZWR5CiAgICAgLSBpZ25vcmU6L2FkZHJlc3NlcwogICAgIC0gaWdub3JlOi9iYXNrZXQKICAgICAtIGlnbm9yZTovYmFza2V0L2FkZAogICAgIC0gaWdub3JlOi9iYXNrZXQvY2hlY2tvdXRzCiAgICAgLSBpZ25vcmU6L2Jhc2tldC9jb3Vwb25zL2F0dGFjaC97aWR9CiAgICAgLSBpZ25vcmU6L2Jhc2tldC9jb3Vwb25zL2F0dGFjaC8xMDQ3NTQKICAgYGBgCgogICBZb3Ugc2hvdWxkIGVkaXQgdGhlIHNjaGVtYSBmaWxlIHdpdGggYSB0ZXh0IGVkaXRvciBhbmQgcmVtb3ZlIHRoZSBgaWdub3JlOmAgcHJlZml4IGZyb20gdGhlIHBhdGhzIHlvdSB3aXNoIHRvIGJlIGdlbmVyYXRlZC4gWW91IGNhbiBhbHNvIGFkanVzdCB0aGUgcGFyYW1ldGVycyBhcHBlYXJpbmcgaW4gdGhlIHBhdGhzLgoKNS4gUnVuIHRoZSBzZWNvbmQgcGFzcyBvZiBtaXRtcHJveHkyc3dhZ2dlcjoKCiAgIGBgYGJhc2gKICAgJCBtaXRtcHJveHkyc3dhZ2dlciAtaSA8cGF0aF90b19taXRtcHRveHlfZmxvdz4gLW8gPHBhdGhfdG9fb3V0cHV0X3NjaGVtYT4gLXAgPGFwaV9wcmVmaXg+IFstLWV4YW1wbGVzXQogICAjIC4uLiBvciAuLi4KICAgJCBkb2NrZXIgcnVuIC1pdCAtdiAkUFdEOi9hcHAgbWl0bXByb3h5MnN3YWdnZXIgbWl0bXByb3h5MnN3YWdnZXIgLWkgPHBhdGhfdG9fbWl0bXB0b3h5X2Zsb3c+IC1vIDxwYXRoX3RvX291dHB1dF9zY2hlbWE+IC1wIDxhcGlfcHJlZml4PiBbLS1leGFtcGxlc10KICAgYGBgCgogICBSdW4gdGhlIGNvbW1hbmQgYSBzZWNvbmQgdGltZSAod2l0aCB0aGUgc2FtZSBzY2hlbWEgZmlsZSkuIEl0IHdpbGwgcGljayB1cCB0aGUgZWRpdGVkIGxpbmVzIGFuZCBnZW5lcmF0ZSBlbmRwb2ludCBkZXNjcmlwdGlvbnMuCgogICBQbGVhc2Ugbm90ZSB0aGF0IG1pdG1wcm94eTJzd2FnZ2VyIHdpbGwgbm90IG92ZXJ3cml0ZSBleGlzdGluZyBlbmRwb2ludCBkZXNjcmlwdGlvbnMsIGlmIHlvdSB3YW50IHRvIG92ZXJ3cml0ZSB0aGVtLCB5b3UgY2FuIGRlbGV0ZSB0aGVtIGJlZm9yZSBydW5uaW5nIHRoZSBzZWNvbmQgcGFzcy4KCiAgIFBhc3NpbmcgYC0tZXhhbXBsZXNgIHdpbGwgYWRkIGV4YW1wbGUgZGF0YSB0byByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzLiBUYWtlIGNhdXRpb24gd2hlbiB1c2luZyB0aGlzIG9wdGlvbiwgYXMgaXQgbWF5IGFkZCBzZW5zaXRpdmUgZGF0YSAodG9rZW5zLCBwYXNzd29yZHMsIHBlcnNvbmFsIGluZm9ybWF0aW9uIGV0Yy4pIHRvIHRoZSBzY2hlbWEuCiAgIFBhc3NpbmcgYC0taGVhZGVyc2Agd2lsbCBhZGQgaGVhZGVycyBkYXRhIHRvIHJlcXVlc3RzIGFuZCByZXNwb25zZXMuIFRha2UgY2F1dGlvbiB3aGVuIHVzaW5nIHRoaXMgb3B0aW9uLCBhcyBpdCBtYXkgYWRkIHNlbnNpdGl2ZSBkYXRhICh0b2tlbnMsIHBhc3N3b3JkcywgcGVyc29uYWwgaW5mb3JtYXRpb24gZXRjLikgdG8gdGhlIHNjaGVtYS4KCiMjIyBIQVIKCjEuIENhcHR1cmUgYW5kIGV4cG9ydCB0aGUgdHJhZmZpYyBmcm9tIHRoZSBicm93c2VyIERldlRvb2xzLgoKICAgSW4gdGhlIGJyb3dzZXIgRGV2VG9vbHMsIGdvIHRvIHRoZSBOZXR3b3JrIHRhYiBhbmQgY2xpY2sgdGhlICJFeHBvcnQgSEFSIiBidXR0b24uCgogICAhW0Egc2NyZWVuc2hvdCBzaG93aW5nIHdoZXJlIHRoZSBleHBvcnQgaGFyIGJ1dHRvbiBpcyBsb2NhdGVkXSguL2RvY3MvZXhwb3J0X2hhcl9idXR0b24ucG5nKQoKMi4gQ29udGludWUgdGhlIHNhbWUgd2F5IHlvdSB3b3VsZCBkbyB3aXRoIHRoZSBtaXRtcHJveHkgZHVtcC4gYG1pdG1wcm94eTJzd2FnZ2VyYCB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHRoZSBIQVIgZmlsZSBhbmQgcHJvY2VzcyBpdC4KCiMjIEV4YW1wbGUgb3V0cHV0CgpTZWUgdGhlIFtleGFtcGxlc10oLi9leGFtcGxlX291dHB1dHMvKS4gWW91IHdpbGwgZmluZCBhIGdlbmVyYXRlZCBzY2hlbWEgdGhlcmUgYW5kIGFuIGh0bWwgZmlsZSB3aXRoIHRoZSBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiAodmlhIFtyZWRvYy1jbGldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3JlZG9jLWNsaSkpLgoKU2VlIHRoZSBnZW5lcmF0ZWQgaHRtbCBmaWxlIFtoZXJlXShodHRwczovL3Jhdy5naXRoYWNrLmNvbS9hbHVmZXJzL21pdG1wcm94eTJzd2FnZ2VyL21hc3Rlci9leGFtcGxlX291dHB1dHMvbGlzZWstc3RhdGljLmh0bWwpLgoKIyMgRGV2ZWxvcG1lbnQgYW5kIGNvbnRyaWJ1dGluZwoKVGhpcyBwcm9qZWN0IHVzZXM6CgotIFtwb2V0cnldKGh0dHBzOi8vcHl0aG9uLXBvZXRyeS5vcmcvKSBmb3IgZGVwZW5kZW5jeSBtYW5hZ2VtZW50Ci0gW3ByZS1jb21taXRdKGh0dHBzOi8vcHJlLWNvbW1pdC5jb20vKSBmb3IgY29kZSBmb3JtYXR0aW5nIGFuZCBsaW50aW5nCi0gW3B5dGVzdF0oaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4vc3RhYmxlLykgZm9yIHVuaXQgdGVzdGluZwoKVG8gaW5zdGFsbCB0aGUgZGVwZW5kZW5jaWVzOgoKYGBgYmFzaApwb2V0cnkgaW5zdGFsbApgYGAKClJ1biBsaW50ZXJzOgoKYGBgYmFzaApwcmUtY29tbWl0IHJ1biAtLWFsbC1maWxlcwpgYGAKCkluc3RhbGwgcHJlLWNvbW1pdCBob29rczoKCmBgYGJhc2gKcHJlLWNvbW1pdCBpbnN0YWxsCmBgYAoKUnVuIHRlc3RzOgoKYGBgYmFzaApwb2V0cnkgcnVuIHB5dGVzdApgYGAKClJ1biB0ZXN0cyB3aXRoIGNvdmVyYWdlOgoKYGBgYmFzaApwb2V0cnkgcnVuIHB5dGVzdCAtLWNvdj1taXRtcHJveHkyc3dhZ2dlcgpgYGAKCiMjIExpY2Vuc2UKCk1JVAo= readmeEtag: '"7bc61550d619b1125bbf77e397d6ca00184686ea"' readmeLastModified: Wed, 03 Apr 2024 08:07:41 GMT repositoryId: 491304964 description: Automagically reverse-engineer REST APIs via capturing traffic created: '2022-05-11T23:48:49Z' updated: '2026-02-05T20:53:58Z' language: HTML archived: false stars: 9214 watchers: 27 forks: 344 owner: alufers logo: https://avatars.githubusercontent.com/u/5400940?v=4 repoEtag: '"1c7b9a11bacdf852f9fccc4269d8f350ad79ee66b07f211f81c75cf041eb3e99"' repoLastModified: Thu, 05 Feb 2026 20:53:58 GMT foundInMaster: true - source: https://openapi.tools/ name: har2openapi category: - Auto Generators - Parsers language: TypeScript link: https://github.com/dcarr178/har2openapi repository: https://github.com/dcarr178/har2openapi source_description: >- Automatically generate OpenAPI 3.0 Spec by using network requests captured in one or more HAR files v2: false v3: true repositoryMetadata: base64Readme: >- IyBoYXIyb3BlbmFwaQoKVGhpcyBwcm9ncmFtIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBBUEkgZG9jdW1lbnRhdGlvbiB2aWEgYSBPcGVuQXBpIFNwZWMgKE9BUykgZmlsZSBieSB1c2luZyBuZXR3b3JrIHJlcXVlc3RzIGNhcHR1cmVkIGluIApvbmUgb3IgbW9yZSBIQVIgZmlsZXMuCgojIyBTdGVwIDEgLSBDcmVhdGUgSEFSIGZpbGUocykKVGhlcmUgYXJlIGxvdHMgb2Ygd2F5cyB0byBjcmVhdGUgSEFSIGZpbGVzIHRvIHVzZSBhcyBpbnB1dCBmb3IgdGhpcyBwcm9ncmFtLiBPbmUgd2F5IGlzIHRvIG1hbnVhbGx5IGNsaWNrIHlvdXIgd2F5CnRocm91Z2ggYSB3ZWIgYXBwbGljYXRpb24gYW5kIGNhcHR1cmUgbmV0d29yayByZXF1ZXN0cyBpbiBDaHJvbWUgYXMgaWxsdXN0cmF0ZWQgaW4gdGhpcyBbaGFuZHkgZ3VpZGVdKGh0dHBzOi8vaGVscC5vMi52ZXJpem9ubWVkaWEuY29tL2hjL2VuLXVzL2FydGljbGVzLzM2MDAwMDA3NDUyMy1Ib3ctdG8tU2F2ZS1hLUhBUi1GaWxlLUxvZy1pbi1Hb29nbGUtQ2hyb21lKS4KCkFub3RoZXIgd2F5IHRvIGdlbmVyYXRlIEhBUiBmaWxlcyBpcyB0byBpbnN0YWxsIFtDaGFybGVzIFByb3h5XShodHRwczovL3d3dy5jaGFybGVzcHJveHkuY29tLykgYW5kIHRoZW4gcnVuIGFsbCB5b3VyCmVuZC10by1lbmQgYnJvd3NlciB0ZXN0cy4gQ2hhcmxlcyBQcm94eSBzYXZlcyBpdHMgcmF3IGNhcHR1cmVzIGluIGEgLmNobHMgZmlsZSBidXQgeW91IGNhbiBleHBvcnQgdGhhdCB0byBhIGhhciBmaWxlIGFzIENoYXJsZXMgUHJveHkgCm91dHB1dHMgaGFyIGZpbGVzIGluIGEgY29udmVuaWVudCBqc29uIGZvcm1hdC4gR2VuZXJhdGluZyBIQVIgZmlsZXMgdXNpbmcgeW91ciBlbmQtdG8tZW5kIHRlc3RzIGNhbiBzYXZlIHlvdSBhIGxvdCBvZgptYW51YWwgY2xpY2tpbmchCgpUaGVyZSBhcmUgbWFueSBvdGhlciB3YXlzIHRvIGdlbmVyYXRlIEhBUiBmaWxlcyBzbyBnbyBjcmF6eS4gR29vZ2xlIGlzIHlvdXIgZnJpZW5kLgoKIyMgU3RlcCAyIC0gR2VuZXJhdGUgcmVxdWVzdC9yZXNwb25zZSBleGFtcGxlcwpTdGFydCBieSBjb3B5aW5nIGBjb25maWcuanNvbi50ZW1wbGF0ZWAgdG8gYGNvbmZpZy5qc29uYC4gT25jZSB5b3UgaGF2ZSBhIHZhbGlkIGNvbmZpZy5qc29uIGZpbGUsIHJ1bgpgYGAgYmFzaApub2RlIGluZGV4LmpzIGdlbmVyYXRlIG91dHB1dEZpbGVuYW1lLmpzb24gaW5wdXRIYXJGaWxlMS5qc29uIGlucHV0SGFyRmlsZTIuanNvbiBpbnB1dEhhckZpbGUzLmpzb24uLi4KYGBgCgpUaGlzIGNvbW1hbmQgY29uc3VtZXMgb25lIG9yIG1vcmUgSEFSIGZpbGVzIGFuZCBvdXRwdXRzIGFuIE9BUyBmaWxlLiBBIGZldyBhZGRpdGlvbmFsIGZpbGVzIGFyZSBjcmVhdGVkIGZvciB5b3VyIGNvbnZlbmllbmNlOgoqIGBvdXRwdXQvbWV0aG9kTGlzdC50eHRgIC0gdGhpcyBmaWxlIGNvbnRhaW5zIG9uZSBsaW5lIGZvciBlYWNoIG1ldGhvZC9vcGVyYXRpb24gY3JlYXRlZAoqIGBvdXRwdXQvcGF0aExpc3QudHh0YCAtIHRoaXMgZmlsZSBjb250YWlucyBvbmUgbGluZSBmb3IgZWFjaCBwYXRoIGNyZWF0ZWQKKiBgb3V0cHV0L291dHB1dEZpbGVuYW1lLmpzb24ueWFtbGAgLSB0aGlzIGlzIGEgWUFNTCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2FtZSBPQVMgb2JqZWN0IG91dHB1dCB0byBvdXRwdXRGaWxlbmFtZS5qc29uCgojIyMgSXRlcmF0aXZlbHkgZWRpdCBjb25maWcuanNvbiBhbmQgZ2VuZXJhdGUgT0FTIGFnYWluCgpZb3UnbGwgcHJvYmFibHkgbm90aWNlIHRoYXQgdGhlIE9BUyBmaWxlIHN0YXJ0cyBvdXQgcHJldHR5IG5vaXN5IHdoaWNoIGlzIHdoeSB5b3UnbGwgd2FudCB0byBlZGl0IGBjb25maWcuanNvbmAgYW5kIHRoZW4gcmluc2UgCmFuZCByZXBlYXQgZ2VuZXJhdGluZyB0aGUgT0FTIGZpbGUgYWdhaW4uCgojIyMgUmVwbGFjZSBzdHJpbmdzIGluIHBhdGgKSW4gdGhlIGNvbmZpZyBmaWxlLCB5b3UgY2FuIHNldCB5b3VyIEFQSSBiYXNlIHBhdGggYW5kIGFueSBudW1iZXIgb2Ygc2VhcmNoL3JlcGxhY2UgY29tbWFuZHMuIEZvciBlYWNoIHBhcmFtZXRlciBpbgpgYGBqYXZhc2NyaXB0Ci4uLgogICJwYXRoUmVwbGFjZSI6IHsKICAgICJrZXkiOiAidmFsdWUiLAogICAgImtleSI6ICJ2YWx1ZSIKICB9Ci4uLgpgYGAKVGhlIHByb2dyYW0gZXhlY3V0ZXMgYXMKYGBgCnBhdGggPSBwYXRoLnJlcGxhY2UoL2tleS9nLCB2YWx1ZSkKYGBgCldoeSB3b3VsZCB3ZSB3YW50IHRvIGRvIHRoaXM/IEknbSBnbGFkIHlvdSBhc2tlZC4gVGhlcmUgYXJlIHZhcmlvdXMgYW5zd2VyczoKCiogUmVtb3ZlIHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXJzIGZyb20gdGhlIHBhdGguIFF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXJzIGFyZSBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5IGFuZCBtb3ZlZCB0byBwYXRoIHZhcmlhYmxlcyBpbiB0aGUgT0FTIGZpbGUuCiogU2VhcmNoIGFuZCByZXBsYWNlIElEcyBpbiB0aGUgcGF0aC4gQSBub2lzeSBPQVMgZmlsZSB3aWxsIGNvbnRhaW4gb25lIGVuZHBvaW50IGRlZmluaXRpb24gZm9yIGAvYWNjb3VudC8xYCBhbmQgYW5vdGhlciBlbmRwb2ludCBkZWZpbml0aW9uCmZvciBgL2FjY291bnQvMmAuIEJ5IGFkZGluZyByZXBsYWNlIHN0cmluZ3MgdG8gY29uZmlnLmpzb24geW91IGNhbiBjb2xsYXBzZSBkdXBsaWNhdGUgcGF0aHMgaW50byBvbmUgZW5kcG9pbnQgZGVmaW5pdGlvbgphbmQgYXV0b21hdGljYWxseSBtb3ZlIHRoZSBwYXRoIElEcyBpbnRvIHBhdGggcGFyYW1ldGVycyBpbiB0aGUgT0FTIGZpbGUuCgojIyMgUmVwbGFjZSBzdHJpbmdzIGFueXdoZXJlCkluIGFkZGl0aW9uIHRvIHBhdGggcGFyYW1ldGVycywgdGhlcmUgYXJlIGluc3RhbmNlcyB3aGVuIHdlIHdhbnQgdG8gcmVtb3ZlIGNlcnRhaW4gc3RyaW5ncyBmcm9tIGFueXdoZXJlIGluIHRoZSBlbmRwb2ludCBkZWZpbnRpb24KaW5jbHVkaW5nIHJlcXVlc3QgZXhhbXBsZXMsIHJlc3BvbnNlIGV4YW1wbGVzLCBldGMuIFNwZWNpZmljYWxseSwgeW91IG1heSB3YW50IHRvIHJlbW92ZSBzZWNyZXRzIGxpa2UgcGFzc3dvcmRzLCBzZXNzaW9uSWRzLCBhbmQgb3RoZXIgdGhpbmdzIAp5b3UgcHJvYmFibHkgZG9uJ3Qgd2FudCBpbiB5b3VyIE9BUyBmaWxlLiBUbyBkbyB0aGlzLCBhZGQgc2VhcmNoL3JlcGxhY2UgaXRlbXMgaGVyZToKYGBgamF2YXNjcmlwdAouLi4KICAicmVwbGFjZSI6IHsKICAgICJzZWNyZXQiOiAiIgogIH0KLi4uCmBgYAojIyMgVGFnIGVuZHBvaW50cwpFYWNoIGVuZHBvaW50IGRlZmluaXRpb24gKGFrYSBvcGVyYXRpb24pIGluIHRoZSBPQVMgZmlsZSBjYW4gaGF2ZSBhIHRhZyB3aGljaCBhc3Npc3RzIHJlbmRlcnMgaW4gZ3JvdXBpbmcgcmVsYXRlZCBlbmRwb2ludHMKdG9nZXRoZXIuIENvbmZpZy5qc29uIGFsbG93cyB5b3UgdG8gc2VhcmNoIGZvciB0ZXh0IGluIHRoZSBwYXRoIGFuZCBhc3NpZ24gbWF0Y2hlcyB0byBhIHNwZWNpZmljIFRhZy4KCmBgYGphdmFzY3JpcHQKLi4uCiAgInRhZ3MiOiBbCiAgICBbInNsaWRlcyJdLAogICAgWyJwcm9ncmVzcyIsICJUYXNrIFByb2dyZXNzIl0KICBdCi4uLgpgYGAKClVzaW5nIHRoaXMgZXhhbXBsZSwgaWYgYHBhdGguaW5jbHVkZXMoInNsaWRlcyIpIHRoZW4gdGFnID0gIlNsaWRlcyJgLiBpZiBgcGF0aC5pbmNsdWRlcygicHJvZ3Jlc3MiKSB0aGVuIHRhZyA9ICJUYXNrIFByb2dyZXNzImAgIAoKIyMgU3RlcCAzIC0gTWFudWFsbHkgZWRpdCByZXF1ZXN0IGFuZCByZXNwb25zZSBleGFtcGxlcwpBdCB0aGlzIHBvaW50IGluIHRoZSBwcm9jZXNzIGl0J3MgYmVzdCB0byBtYW51YWxseSByZXZpZXcgdGhlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGV4YW1wbGVzIGluIHRoZSBnZW5lcmF0ZWQgT0FTIGZpbGUgYW5kIHNob3J0ZW4gdGhlbSB3aGVyZSBuZWNlc3NhcnkuIEZvcgpleGFtcGxlLCBpZiBhbiBBUEkgcmVzcG9uc2UgcmV0dXJucyBhbiBhcnJheSBvZiAyLDAwMCBlbGVtZW50cywgcGVyaGFwcyB5b3VyIGFwaSBkb2N1bWVudGF0aW9uIGNvdWxkIHJlc3RyaWN0IGl0c2VsZiB0byBhIGhhbmRmdWwgb2YKZWxlbWVudHMgaW5zdGVhZCBvZiBkaXNwbGF5aW5nIGFsbCAyLDAwMC4gVGhlc2UgZGVzY2lzaW9ucyBuZWVkIHRvIGJlIG1hZGUgb24gYSBjYXNlLWJ5LWNhc2UgYmFzaXMgYW5kIHlvdSBjYW4gCmVkaXQgdGhlIGdlbmVyYXRlZCBPQVMgZmlsZSBkaXJlY3RseS4KCiMjIFN0ZXAgNCAtIEdlbmVyYXRlIGpzb24gc2NoZW1hcyBhbmQgeC1jb2RlLXNhbXBsZXMKQWZ0ZXIgeW91IGhhdmUgbWFudWFsbHkgZWRpdGVkIHlvdXIgT0FTIGZpbGUsIHlvdSBjYW4gZ2VuZXJhdGUganNvbiBzY2hlbWFzIGZvciBhbGwgcmVxdWVzdCBhbmQgcmVzcG9uc2UgZXhhbXBsZXMgYW5kIGdlbmVyYXRlIAp4LWNvZGUtc2FtcGxlcyBieSBydW5uaW5nCmBgYGJhc2gKbm9kZSBpbmRleC5qcyBzYW1wbGVzIG91dHB1dC9nZW5lcmF0ZWQuanNvbiBvdXRwdXQvd2l0aFNjaGVtYS5qc29uCmBgYApUaGlzIGNvbW1hbmQgY29uc3VtZXMgdGhlIChwcmVzdW1hYmx5IGVkaXRlZCkgZ2VuZXJhdGVkLmpzb24gT0FTIGZpbGUgYW5kIG91dHB1dHMgYSBuZXcgT0FTIGZpbGUgY29udGFpbmluZyBqc29uIHNjaGVtYXMgYW5kIHgtY29kZS1zYW1wbGVzLiAKSXQgYWxzbyBjcmVhdGVzIGFuIGFkZGl0aW9uYWwgZmlsZSBmb3IgeW91ciBjb252ZW5pZW5jZToKKiBgb3V0cHV0L3dpdGhTY2hlbWEuanNvbi55YW1sYCAtIHRoaXMgaXMgYSBZQU1MIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzYW1lIE9BUyBvYmplY3Qgb3V0cHV0IHRvIHdpdGhTY2hlbWEuanNvbgoKIyMgU3RlcCA1IC0gTWVyZ2UgZ2VuZXJhdGVkIHBhdGhzL21ldGhvZHMvb3BlcmF0aW9ucyBpbnRvIG1hc3RlciBPQVMgZmlsZQpJZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHlvdSBhcmUgY3JlYXRpbmcgeW91ciBPQVMgZmlsZSB0aGVuIHlvdSB3aWxsIHdhbnQgdG8gc3RhcnQgZWRpdGluZyB3aXRoU2NoZW1hLmpzb24gYW5kIGFkZGluZyB5b3VyIG93bgphcGkgc2VydmVycywgaW5mbyBvYmplY3QsIHNlY3VyaXR5LCBldGMuIFlvdXIgZWRpdGVkIGZpbGUgc2hvdWxkIGJlIGNvbnNpZGVyZWQgeW91ciBtYXN0ZXIgT0FTIGZpbGUuIEhvd2V2ZXIsIGluIHRoZSBmdXR1cmUKeW91IG1heSB3YW50IHRvIHJlLXJ1biBoYXIyb3BlbmFwaSBhZ2FpbnN0IG5ldyBIQVIgZmlsZXMgdG8gaWRlbnRpZnkgZGlmZmVyZW5jZXMgb3IgZGV0ZWN0IG5ldyBhcGkgZW5kcG9pbnRzIHRoYXQKd2VyZW4ndCBwaWNrZWQgdXAgcHJldmlvdXNseS4KCldoZW4gdGhpcyBoYXBwZW5zLCB5b3UnbGwgd2FudCB0byBnZW5lcmF0ZSBhIG5ldyBPQVMgZmlsZSBhbmQgdGhlbiBjYXJlZnVsbHkgbWVyZ2UgaXQgaW50byB5b3VyIG1hc3RlciBPQVMgZmlsZSB3aXRob3V0CmRhbWFnaW5nIHRoZSBlZGl0cyB5b3UgaGF2ZSBjYXJlZnVsbHkgbWFkZS4gVG8gZG8gdGhpcywgcnVuCgpgYGBiYXNoCm5vZGUgaW5kZXguanMgbWVyZ2UgaW5wdXQvbWFzdGVyLmpzb24gb3V0cHV0L3dpdGhTY2hlbWEuanNvbiBvdXRwdXQvb3BlbmFwaS1zcGVjLmpzb24KYGBgClRoaXMgY29tbWFuZCBjb25zdW1lcyB0aGUgZ2VuZXJhdGVkIHdpdGhTY2hlbWEuanNvbiBPQVMgZmlsZSB3aXRoIHlvdXIgbWFzdGVyLmpzb24gZmlsZSBhbmQgb3V0cHV0cyBhIG5ldyBPQVMgZmlsZSB3aXRoIHRoZW0gbWVyZ2VkLiBOZXcgbWV0aG9kcy9vcGVyYXRpb25zIGZvdW5kCmluIHdpdGhTY2hlbWEuanNvbiB3aWxsIGJlIGFkZGVkIHRvIG1hc3Rlci5qc29uIGJ1dCBub3RoaW5nIGluIG1hc3Rlci5qc29uIHdpbGwgYmUgcmVwbGFjZWQuIAoKVGhpcyBwcm9ncmFtIGFsc28gY3JlYXRlcyBhbiBhZGRpdGlvbmFsIGZpbGUgZm9yIHlvdXIgY29udmVuaWVuY2U6CiogYG91dHB1dC9vcGVuLXNwZWMuanNvbi55YW1sYCAtIHRoaXMgaXMgYSBZQU1MIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzYW1lIE9BUyBvYmplY3Qgb3V0cHV0IHRvIG9wZW4tc3BlYy5qc29uCgojIyBIaXN0b3J5CgpJbiBBcHJpbCwgMjAyMCBJIG5lZWRlZCB0byBkb2N1bWVudCBhIHB5dGhvbiBSRVNUIGFwaSB3aXRoIDE1MCBwYXRocyBhbmQgMjUwIGVuZHBvaW50cyAoYWthIG1ldGhvZHMsIG9wZXJhdGlvbnMpLiBNeSAKcHJlZmVycmVkIGFwcHJvYWNoIHdhcyB0byBjcmVhdGUgYW4gW09wZW5BUEkgU3BlYyAzLjAuM10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjMubWQpIApmaWxlIChPQVMpIHNvIGl0IGNvdWxkIGJlIGNvbnN1bWVkIGFuZCByZW5kZXJlZCB1c2luZyBhbnkgbnVtYmVyIG9mIFtkaWZmZXJlbnQgdG9vbHNdKGh0dHBzOi8vb3BlbmFwaS50b29scy8pLgoKVG8gYmVnaW4gY3JlYXRpbmcgbXkgT0FTIGZpbGUsIEkgZmlyZWQgdXAgW1N0b3BsaWdodCBTdHVkaW9dKGh0dHBzOi8vc3RvcGxpZ2h0LmlvL3N0dWRpby8pIGFuZCBiZWdhbiBjcmFua2luZwphd2F5IGF0IGJ1aWxkaW5nIGVuZHBvaW50IGRlZmluaXRpb25zLiBBZnRlciBjcmVhdGluZyA1IG9yIDEwIGVuZHBvaW50cyBieSBoYW5kLCBJIHdhcyBhbHJlYWR5IGJ1cm5lZCBvdXQuIEknbSBqdXN0Cm5vdCBjdXQgb3V0IGZvciBtaW5kLW51bWJpbmcsIHJlcGV0aXRpdmUgd29yay4gQ3JlYXRpbmcgZXZlcnkgcmVxdWVzdCBhbmQgcmVzcG9uc2UgZXhhbXBsZSBieSBoYW5kIHdhcyBtYXNzaXZlbHkgbGFib3Jpb3VzCm5vdCB0byBtZW50aW9uIGNyZWF0aW5nIGpzb24gc2NoZW1hcyBmb3IgZWFjaCBvbmUuIEknbSBhbHNvIHZlcnkgbGF6eS4gQ3JlYXRpbmcgZW5kcG9pbnQgZG9jdW1lbnRhdGlvbiBieSBoYW5kIGNvdWxkIHRha2UgeWVhcnMhCgpCZXNpZGVzLCBJIGhhZCBhIGJpZ2dlciBwcm9ibGVtLiBUaGUgQVBJIEkgd2FzIGRvY3VtZW50aW5nIHdhcyBwb29ybHkgZG9jdW1lbnRlZCAoaGVuY2UgbXkgaW52b2x2ZW1lbnQpIGFuZCBJIGNvdWxkbid0IHJlYWxseSByZWx5IG9uCml0IHRvIGV2ZW4gdGVsbCBtZSB3aGF0IGFsbCB0aGUgcGF0aHMgYW5kIHN1cHBvcnRlZCAoaHR0cCkgbWV0aG9kcyB3ZXJlLiAKCkFzIEkgbGFpZCBhd2FrZSBhdCBuaWdodCB3b25kZXJpbmcgaG93IHRvIGVzY2FwZSBteSBwcmVkaWNhbWVudCwgSSB0aG91Z2h0IHdoeSBub3QgcnVuIGFsbCBvZiBvdXIgW2N5cHJlc3NdKGh0dHBzOi8vY3lwcmVzcy5pbykgZW5kLXRvLWVuZCB0ZXN0cywgY2FwdHVyZSBhbGwgdGhlIG5ldHdvcmsgcmVxdWVzdHMgd2l0aCBzb21ldGhpbmcgbGlrZSAKW0NoYXJsZXMgUHJveHldKGh0dHBzOi8vd3d3LmNoYXJsZXNwcm94eS5jb20vKSwgYW5kIGZpZ3VyZSBvdXQgYSB3YXkgdG8gdXNlIHRoZSBwcm94eSBvdXRwdXQgdG8gYXV0b21hZ2ljYWxseSBjcmVhdGUKbXkgT0FTIGZpbGUgZm9yIG1lIGFuZCB0aHVzIGVzY2FwZSBtb250aHMgb2YgbGlmZS1kcmFpbmluZyBtb25vdG9ueT8KClRoYXQgaXMgaG93IHRoaXMgcHJvamVjdCBiZWdhbi4K readmeEtag: '"2197cf34c6e33a3a32f907d556e6cecd3257128f"' readmeLastModified: Tue, 24 Aug 2021 17:42:44 GMT repositoryId: 262170349 description: Generate openapi spec api documentation from captured har files created: '2020-05-07T22:19:19Z' updated: '2026-01-31T12:13:36Z' language: JavaScript archived: false stars: 161 watchers: 6 forks: 25 owner: dcarr178 logo: https://avatars.githubusercontent.com/u/2379611?v=4 repoEtag: '"f0f92d761ab675cafc3dfd456ed9558edd550f08712d82f90228d2036543fe5c"' repoLastModified: Sat, 31 Jan 2026 12:13:36 GMT foundInMaster: true id: 4df801fc431a2975d8981b7c4879ff7a - source: https://openapi.tools/ name: har-to-openapi category: - Auto Generators - Parsers language: TypeScript link: https://github.com/jonluca/har-to-openapi repository: https://github.com/jonluca/har-to-openapi source_description: >- Automatically generate OpenAPI 3.0 Spec by using network requests captured in one or more HAR files v3: true id: 98cb389f9d59b10647b4a8c30ed2c230 repositoryMetadata: base64Readme: >- IyBIQVIgdG8gT3BlbkFQSQoKWyFbbnBtIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvaGFyLXRvLW9wZW5hcGkuc3ZnKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvaGFyLXRvLW9wZW5hcGkpIFshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2wvaGFyLXRvLW9wZW5hcGkuc3ZnKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvaGFyLXRvLW9wZW5hcGkpCgpDb252ZXJ0IGEgSEFSIGZpbGUgdG8gYW4gT3BlbkFQSSBzcGVjCgojIEludHJvZHVjdGlvbgoKX1RoaXMgbGlicmFyeSBpcyBsb29zZWx5IGJhc2VkIG9uIFtoYXIyb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL2RjYXJyMTc4L2hhcjJvcGVuYXBpKSwgYnV0IGNsZWFuZWQgdXAgYW5kIGNoYW5nZWQgZm9yIHVzYWdlIGluIGEgbW9yZSBwcm9ncmFtbWF0aWMgZmFzaGlvbl8KCiMgR2V0dGluZyBTdGFydGVkCgpgYGAKeWFybiBhZGQgaGFyLXRvLW9wZW5hcGkKYGBgCgpvcgoKYGBgCm5wbSBpIC0tc2F2ZSBoYXItdG8tb3BlbmFwaQpgYGAKCiMgVXNhZ2UKCmBgYHR5cGVzY3JpcHQKaW1wb3J0IHsgZ2VuZXJhdGVTcGVjIH0gZnJvbSAiaGFyLXRvLW9wZW5hcGkiOwoKLy8gcmVhZCBhIGhhciBmaWxlIGZyb20gd2hlcmV2ZXIgeW91IHdhbnQgLSBpbiB0aGlzIGV4YW1wbGUgaXRzIGp1c3QgYSByb290IGpzb24gb2JqZWN0Ci8vIGNvbnN0IGhhciA9IGF3YWl0IGZzLnJlYWRGaWxlKCJteS5oYXIiKTsKCmNvbnN0IGhhciA9IHsKICBsb2c6IHsKICAgIGVudHJpZXM6IFsKICAgICAgewogICAgICAgIGluZGV4OiAwLAogICAgICAgIHJlcXVlc3Q6IHsKICAgICAgICAgIG1ldGhvZDogIkNVU1RPTSIsCiAgICAgICAgICB1cmw6ICJodHRwOi8vdGVzdC5sb2FkaW1wYWN0LmNvbS9sb2dpbiIsCiAgICAgICAgICBoZWFkZXJzOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBuYW1lOiAiQ29udGVudC1UeXBlIiwKICAgICAgICAgICAgICB2YWx1ZTogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICBdLAogICAgICAgICAgcG9zdERhdGE6IHsKICAgICAgICAgICAgbWltZVR5cGU6ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLAogICAgICAgICAgICB0ZXh0OiAiZm9vMD1iYXIwJmZvbzE9YmFyMSIsCiAgICAgICAgICAgIHBhcmFtczogWwogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5hbWU6ICJmb28wIiwKICAgICAgICAgICAgICAgIHZhbHVlOiAiYmFyMCIsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgfSwKICAgIF0sCiAgfSwKfTsKCmNvbnN0IG9wZW5hcGkgPSBhd2FpdCBnZW5lcmF0ZVNwZWMoaGFyLCB7IHJlbGF4ZWRNZXRob2RzOiB0cnVlIH0pOwpjb25zdCB7IHNwZWMsIHlhbWxTcGVjIH0gPSBvcGVuYXBpOwovLyBzcGVjID0geyAuLi4gfSBvcGVuYXBpIHNwZWMgc2NoZW1hIGRvY3VtZW50Ci8vIHlhbWxTcGVjID0gc3RyaW5nLCAiaW5mbzogLi4uIgpgYGAKCiMjIE9wdGlvbnMKCmBgYHR5cGVzY3JpcHQKZXhwb3J0IGludGVyZmFjZSBDb25maWcgewogIC8vIGlmIHRydWUsIHdlJ2xsIHRyZWF0IGV2ZXJ5IHVybCBhcyBoYXZpbmcgdGhlIHNhbWUgZG9tYWluLCByZWdhcmRsZXNzIG9mIHdoYXQgaXRzIGFjdHVhbCBkb21haW4gaXMKICAvLyB0aGUgZmlyc3QgZG9tYWluIHdlIHNlZSBpcyB0aGUgZG9tYWluIHdlJ2xsIHVzZQogIGZvcmNlQWxsUmVxdWVzdHNJblNhbWVTcGVjPzogYm9vbGVhbjsKICAvLyBpZiB0cnVlLCBldmVyeSBwYXRoIG9iamVjdCB3aWxsIGhhdmUgaXRzIG93biBzZXJ2ZXJzIGVudHJ5LCBkZWZpbmluZyBpdHMgYmFzZSBwYXRoLiBUaGlzIGlzIHVzZWZ1bCB3aGVuCiAgLy8gZm9yY2VBbGxSZXF1ZXN0c0luU2FtZVNwZWMgaXMgc2V0CiAgYWRkU2VydmVyc1RvUGF0aHM/OiBib29sZWFuOwogIC8vIHRyeSBhbmQgZ3Vlc3MgY29tbW9uIGF1dGggaGVhZGVycwogIGd1ZXNzQXV0aGVudGljYXRpb25IZWFkZXJzPzogYm9vbGVhbjsKICAvLyBpZiB0aGUgcmVzcG9uc2UgaGFzIHRoaXMgc3RhdHVzIGNvZGUsIGlnbm9yZSB0aGUgYm9keQogIGlnbm9yZUJvZGllc0ZvclN0YXR1c0NvZGVzPzogbnVtYmVyW107CiAgLy8gd2hldGhlciBub24gc3RhbmRhcmQgbWV0aG9kcyBzaG91bGQgYmUgYWxsb3dlZCAobGlrZSBIVFRQIE1ZX0NVU1RPTV9NRVRIT0QpCiAgcmVsYXhlZE1ldGhvZHM/OiBib29sZWFuOwogIC8vIHdoZXRoZXIgd2Ugc2hvdWxkIHRyeSBhbmQgcGFyc2Ugbm9uIGFwcGxpY2F0aW9uL2pzb24gcmVzcG9uc2VzIGFzIGpzb24gLSBkZWZhdWx0cyB0byB0cnVlCiAgcmVsYXhlZENvbnRlbnRUeXBlSnNvblBhcnNlPzogYm9vbGVhbjsKICAvLyBhIGxpc3Qgb2YgdGFncyB0aGF0IG1hdGNoIHBhc3NlZCBvbiB0aGUgcGF0aCwgZWl0aGVyIFttYXRjaF9hbmRfdGFnXSBvciBbbWF0Y2gsIHRhZ10KICB0YWdzPzogKFtzdHJpbmddIHwgW3N0cmluZywgc3RyaW5nXSB8IHN0cmluZylbXSB8ICgodXJsOiBzdHJpbmcpID0+IHN0cmluZyB8IHN0cmluZ1tdIHwgdm9pZCk7CiAgLy8gcmVzcG9uc2UgbWltZSB0eXBlcyB0byBmaWx0ZXIgZm9yCiAgbWltZVR5cGVzPzogc3RyaW5nW107CiAgLy8ga25vd24gc2VjdXJpdHkgaGVhZGVycyBmb3IgdGhpcyBoYXIsIHRvIGFkZCB0byBzZWN1cml0eSBmaWVsZCBpbiBvcGVuYXBpIChlLmcuICJYLUF1dGgtVG9rZW4iKQogIHNlY3VyaXR5SGVhZGVycz86IHN0cmluZ1tdOwogIC8vIFdoZXRoZXIgdG8gZmlsdGVyIG91dCBhbGwgc3RhbmRhcmQgaGVhZGVycyBmcm9tIHRoZSBwYXJhbWV0ZXIgbGlzdCBpbiBvcGVuYXBpCiAgZmlsdGVyU3RhbmRhcmRIZWFkZXJzPzogYm9vbGVhbjsKICAvLyBXaGV0aGVyIHRvIGxvZyBlcnJvcnMgdG8gY29uc29sZQogIGxvZ0Vycm9ycz86IGJvb2xlYW47CiAgLy8gYSBzdHJpbmcsIHJlZ2V4LCBvciBjYWxsYmFjayB0byBmaWx0ZXIgdXJscyBmb3IgaW5jbHVzaW9uCiAgdXJsRmlsdGVyPzogc3RyaW5nIHwgUmVnRXhwIHwgKCh1cmw6IHN0cmluZykgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4pOwogIC8vIHdoZW4gd2UgZW5jb3VudGVyIGEgVVJMLCB0cnkgYW5kIHBhcmFtZXRlcml6ZSBpdCwgc3VjaCB0aGF0IHNvbWV0aGluZyBsaWtlCiAgLy8gR0VUIC91dWlkcy8xMjNlNDU2Ny1lODliLTEyZDMtYTQ1Ni00MjY2NTU0NDAwMDAgYmVjb21lcyBHRVQgL3V1aWRzL3t1dWlkfQogIGF0dGVtcHRUb1BhcmFtZXRlcml6ZVVybD86IGJvb2xlYW47CiAgLy8gd2hlbiB3ZSBlbmNvdW50ZXIgYSBwYXRoIHdpdGhvdXQgYSByZXNwb25zZSBvciB3aXRoIGEgcmVzcG9uc2UgdGhhdCBkb2VzIG5vdCBoYXZlIDJ4eCwgZG9udCBpbmNsdWRlIGl0CiAgZHJvcFBhdGhzV2l0aG91dFN1Y2Nlc3NmdWxSZXNwb25zZT86IGJvb2xlYW47Cn0KYGBgCg== readmeEtag: '"b1c6645596b604d10ba4cf9034427636a80c3dbf"' readmeLastModified: Fri, 11 Aug 2023 17:49:57 GMT repositoryId: 519317344 description: HAR to OpenAPI spec generator created: '2022-07-29T18:43:20Z' updated: '2026-01-24T04:24:53Z' language: TypeScript archived: false stars: 124 watchers: 2 forks: 14 owner: jonluca logo: https://avatars.githubusercontent.com/u/13029040?v=4 license: MIT repoEtag: '"837109d53fc1e63e930738eb7b3d56f203c28bdcf6910d80da250dc84b147c26"' repoLastModified: Sat, 24 Jan 2026 04:24:53 GMT foundInMaster: true - source: https://openapi.tools/ name: GranthAi category: - Auto Generators - Documentation language: Javascript link: https://granthai.com repository: https://www.npmjs.com/package/granthai source_description: >- NodeJs OpenAPI 3 based documentation generator which sits between server APIs and anyone calling the APIs v3: true id: 29fe99d026b8f20572226028e338a960 foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/adawg4/openapi-autospec v3: true id: 87df782257819ac984fca13d011b0283 repositoryMetadata: base64Readme: >- PGEgbmFtZT0icmVhZG1lLXRvcCI+PC9hPgoKPGRpdiBhbGlnbj0iY2VudGVyIj4KPGltZyBoZWlnaHQ9IjEyMCIgc3JjPSJsb2dvLnBuZyI+CgojIE9wZW5BUEkgQXV0b1NwZWMKCk5lZWQgbGFzdC1taW51dGUgZG9jcz8gUXVpY2tseSBjYXB0dXJlIEFQSSBiZWhhdmlvciB3aXRoIGEgc2VydmVyIHByb3h5IHRoYXQgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBpbiByZWFsLXRpbWUgZnJvbSBhbnkgbG9jYWxseSBydW5uaW5nIHdlYnNpdGUgb3Igc2VydmljZS4KCjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWJsdWUiIGFsdD0ibGljZW5zZSIvPiBbIVtKb2luIERpc2NvcmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRGlzY29yZC1Kb2luLWdyZXk/c3R5bGU9ZmxhdCZsb2dvPURpc2NvcmQpXShodHRwczovL2Rpc2NvcmQuZ2cvQ1JueGc3dWR1SCkKPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vaW50ZW50L3R3ZWV0P3RleHQ9T3BlbkFQSSBBdXRvU3BlYyBpcyBhIHByb3h5IHNlcnZlciB0aGF0IGdlbmVyYXRlcyBBUEkgc3BlY3MgZm9yIGFueSBhcHAgb3Igd2Vic2l0ZSBvbiBsb2NhbGhvc3QhIFRyeSBpdCBvdXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hZGF3ZzQvb3BlbmFwaS1hdXRvc3BlYyIgY2xhc3M9Iml0ZW0iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3R3aXR0ZXIvdXJsP2xhYmVsPVR3ZWV0JmFtcDtzdHlsZT1zb2NpYWwmYW1wO3VybD1odHRwczovL2dpdGh1Yi5jb20vYWRhd2c0L29wZW5hcGktYXV0b3NwZWMiPjwvYT4KPC9kaXY+CgojIyBBYm91dAo8cCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+CiAgICA8aW1nIHdpZHRoPSI4MCUiIHNyYz0iYXV0b2dpZi5naWYiPgo8L3A+Ck9wZW5BUEkgQXV0b1NwZWMgaXMgYSBsb2NhbCBzZXJ2ZXIgcHJveHkgdGhhdCBnZW5lcmF0ZXMgbmV3IE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgZnJvbSBuZXR3b3JrIHJlcXVlc3RzLiBXaGVuIHJ1bm5pbmcsIGl0IHdpbGwgY29ubmVjdCB5b3VyIGxvY2FsIEhUVFAgdHJhZmZpYyB0byB0aGUgcHJveHkuIE9uY2UgdGhhdCBoYXBwZW5zLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgY29udmVydCBuZXR3b3JrIHRyYWZmaWMgaW50byB0aGUgc3BlY2lmaWNhdGlvbi4KCipGZWF0dXJlcyo6Ci0gR2VuZXJhdGUgT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbnMgYXV0b21hdGljYWxseSBmb3IgYW55IGxvY2FsIHdlYnNpdGUgb3IgYXBwbGljYXRpb24KLSBDYXB0dXJlIGFuZCBkb2N1bWVudCBuZXcgcmVxdWVzdHMgJiByZXNwb25zZXMsIGluY2x1ZGluZyBoZWFkZXJzLCBib2RpZXMsIGFuZCBxdWVyeSBwYXJhbWV0ZXJzCi0gUmV2aWV3IGdlbmVyYXRlZCBzcGVjaWZpY2F0aW9ucyBpbiByZWFsLXRpbWUgb24geW91ciB0ZXJtaW5hbCBhbmQgZG93bmxvYWQgdGhlbSB3aXRoIGVhc2UKLSBFeHBvcnQgeW91ciBPcGVuQVBJIGZpbGUgZm9yIHNoYXJpbmcKLSBJZ25vcmVzIHN0YXRpYyBmaWxlIFVSTHM6IC5qcywgLmNzcywgLnN2ZywgLnBuZywgLmpwZWcsIC5pY28uCjwvYnI+CgojIyBJbnN0YWxsYXRpb24KClRoaXMgaXMgYSBbTm9kZS5qc10oaHR0cHM6Ly9ub2RlanMub3JnL2VuLykgbW9kdWxlIGF2YWlsYWJsZSB0aHJvdWdoIHRoZQpbbnBtIHJlZ2lzdHJ5XShodHRwczovL3d3dy5ucG1qcy5jb20vKS4KCkJlZm9yZSBpbnN0YWxsaW5nLCBbZG93bmxvYWQgYW5kIGluc3RhbGwgTm9kZS5qc10oaHR0cHM6Ly9ub2RlanMub3JnL2VuL2Rvd25sb2FkLykuCk5vZGUuanMgMC4xMCBvciBoaWdoZXIgaXMgcmVxdWlyZWQuCgpJbnN0YWxsYXRpb24gc3RlcHM6CltgbnBtIGluc3RhbGxgIGNvbW1hbmRdKGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vZ2V0dGluZy1zdGFydGVkL2luc3RhbGxpbmctbnBtLXBhY2thZ2VzLWxvY2FsbHkpOgoKYGBgY29uc29sZQokIG5wbSBpbnN0YWxsIG9wZW5hcGktYXV0b3NwZWMKYGBgCjwvYnI+CgojIyBVc2FnZQpTdGFydCB0aGUgc2VydmVyLCBpdCBnZW5lcmF0ZXMgYSBsaW5rIGZvciB5b3UgdG8gdXNlLCBhbmQgdGhlbiB1c2UgdGhlIG5ldyBsaW5rIGZyb20gdGhlIHByb3h5IHNlcnZlciB0byBjYXRjaCB0cmFmZmljIG9uIGEgdGFyZ2V0IHNlcnZlci4gVG8gZ2VuZXJhdGUgdGhlIGRvY3VtZW50IHlvdSB3YW50OiB2aXNpdCBwYWdlcywgZmlsbCBvdXQgZm9ybXMvYWxsIHRoZSBmaWVsZHMgb3IgZGF0YSB5b3Ugd2lzaCB0byB0cmFjaywgYW5kIHBlcmZvcm0gdGhlIGFjdGlvbnMgeW91IHdhbnQgdG8gZG9jdW1lbnQgZnJvbSB5b3VyIEFQSXMuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGdldHRpbmcgZG9jdW1lbnRhdGlvbiBmcm9tIGEgZnVsbC1zdGFjayBzZXJ2ZXIgdmVyc3VzIGJvdGggZnJvbnRlbmQgYW5kIGJhY2tlbmQgc2VydmVycyAtIDxhIGhyZWY9IiNyZWFkbWUtbWlzYyI+dXNlIHRoaXMgcmVmZXJlbmNlPC9hPi4KClRvIHN0YXJ0IHRoZSBzZXJ2ZXI6CmBgYGNvbnNvbGUKJCBucHggYXV0b3NwZWMgLS1wb3J0VG8gUE9SVCAtLXBvcnRGcm9tIFBPUlQgLS1maWxlUGF0aCBvcGVuYXBpLmpzb24KYGBgCgotIC0tcG9ydFRvIGNob29zZSB0aGUgcG9ydCB5b3VyIGxvY2FsaG9zdCB3ZWJzZXJ2ZXIgaXMgcnVubmluZyBmcm9tLgotIC0tcG9ydEZyb20gKG9wdGlvbmFsKSBpcyBmb3IgaWYgYW5vdGhlciBwb3J0IGlzIGluIHVzZS4KLSAtLWZpbGVQYXRoIGlzIHdoZXJlIHlvdSB3b3VsZCBsaWtlIHRvIGV4cG9ydCB0aGUgc3BlYy4KCjwvYnI+Ck9uY2UgdGhlIHNlcnZlciBpcyBydW5uaW5nLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgYmVnaW4gZG9jdW1lbnRpbmcgdGhlIEFQSSBiZWhhdmlvciBvZiB5b3VyIGxvY2FsIHdlYiBhcHBsaWNhdGlvbnMuIFRoZSBkb2N1bWVudGF0aW9uIHByb2Nlc3MgaXMgYmFzZWQgb24gdGhlIG5ldHdvcmsgcmVxdWVzdHMgb2JzZXJ2ZWQsIHNvIHlvdSBkb24ndCBuZWVkIHRvIGRvIGFueSBjcmF6eSBzZXR1cCB3aXRoaW4geW91ciBhcHBsaWNhdGlvbnMgYmV5b25kIHRoZSBiZWxvdy4KCgpUaGUgc2VydmVyIHByb3ZpZGVzIHJlYWwtdGltZSBwcmludG91dHMgb2YgdGhlIGdlbmVyYXRlZCBPcGVuQVBJIHNwZWNpZmljYXRpb25zLiBGcm9tIGhlcmU6Ci0gRmlsbCBvdXQgYWxsIGZpZWxkcyB5b3Ugd2lzaCB0byBiZSBkb2N1bWVudGVkIGZvciBmb3JtcwotIEV4cG9ydCB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZvciBleHRlcm5hbCB1c2Ugb3Igc2hhcmluZyAoZXhwb3J0cyB3aGVyZSB5b3UgYXJlIGluIHRoZSB0ZXJtaW5hbCBpZiB5b3UgZG9uJ3Qgc3BlY2lmeSB0aGUgLS1maWxlUGF0aCBmbGFnKQotIFlvdSBzaG91bGQgZmluZCBhbmQgcmVwbGFjZSBhbGwgaW5zdGFuY2VzIG9mIOKAmGxvY2FsaG9zdOKAmSBvciDigJgxMjcuMC4wLjE6ODAwMOKAmSBpbiB0aGUgZXhwb3J0ZWQgZG9jIHdpdGggeW91ciBhY3R1YWwgd2Vic2l0ZQotIEZpbHRlciBob3N0cyBhbmQgcGFyYW1ldGVyaXplIHBhdGhzIHRvIGZpbmUtdHVuZSB0aGUgZG9jdW1lbnRhdGlvbiBwcm9wZXJseSBmb3Igc2VydmVyIHN0dWJzCi0gUmVzdGFydCB0aGUgZG9jdW1lbnRhdGlvbiBwcm9jZXNzIGF0IGFueSB0aW1lIHRvIHJlZnJlc2ggdGhlIGdlbmVyYXRlZCBzcGVjaWZpY2F0aW9ucwo8L2JyPgoKIyMgUm9hZG1hcAoKV2FudCBhbiBlYXN5IHdheSB0byBhdXRvbWF0aWNhbGx5IGJ1aWxkIGFuZCBtYW5hZ2UgeW91ciBTREtzLCBaYXBpZXIvTWFrZSBpbnRlZ3JhdGlvbnMsIERvY3MsIFdlYmhvb2tzLCBSUEEgcGx1Z2lucywgYW5kIGN1c3RvbSBwbHVnaW5zIHRvIG1hcmtldHBsYWNlcyBsaWtlIFNhbGVzZm9yY2UsIFpvb20sIEdTdWl0ZSBhbGwgaW4gb25lIHNwb3Qgd2hpbGUgZ2V0dGluZyB5b3VyIGFwcCBBSS1hZ2VudCByZWFkeT8gW0NvbnRhY3QgdXNdKGh0dHBzOi8vY2FsZW5kbHkuY29tL2FpZGFuXy9kZW1vKS4gV2UgY2FuIGN1c3RvbSB0YWlsb3IgdGhpcyBhbmQgbW9yZSB3aXRoIG91ciBwYWlkIHNlcnZpY2UuCgpBcyBmb3IgdGhlIHJlcG86Ci0gW1BhdGggcGFyYW1ldGVyaXphdGlvbl0oaHR0cHM6Ly93d3cuYWJzdHJhY3RhcGkuY29tL2FwaS1nbG9zc2FyeS9wYXRoLXBhcmFtZXRlcnMpIHRvb2xzCi0gSFRUUFMgYW5kIE9wZW5BUEkgMy4xIFNwZWNpZmljYXRpb24gc3VwcG9ydAotIFJ1biBvbiBHQ1AsIEFXUywgQXp1cmUsIERvY2tlciwgYW5kIEt1YmVybmV0ZXMKPC9icj4KCiMjIFdoYXQgaXMgT3BlbkFQST8KT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBwcm92aWRlIGEgc3RhbmRhcmRpemVkIGRlc2NyaXB0aW9uIG9mIGFuIEFQSSdzIGV4cGVjdGVkIHJlcXVlc3RzIGFuZCByZXNwb25zZXMsIG1ha2luZyBBUElzIGVhc2llciB0byB1bmRlcnN0YW5kIGFuZCBpbnRlZ3JhdGUgd2l0aC4gR292ZXJuZWQgYnkgdGhlIE9wZW5BUEkgSW5pdGlhdGl2ZSBhbmQgdGhlIExpbnV4IEZvdW5kYXRpb24sIHRoZXkgYXJlIHRoZSBtb2Rlcm4gc3RhbmRhcmQgZm9yIGRvY3VtZW50aW5nIFJFU1RmdWwgQVBJcy4KPC9icj4KPC9icj4KCiMjIENvbW11bml0eQoKW0pvaW4gb3VyIERpc2NvcmQhXShodHRwczovL2Rpc2NvcmQuZ2cvQ1JueGc3dWR1SCkgV2UgYXJlIGhlcmUgdG8gYW5zd2VyIHF1ZXN0aW9ucyBhbmQgaGVscCB5b3UgZ2V0IHRoZSBtb3N0IG91dCBvZiBvdXIgT3BlbkFQSSB0b29sLgo8L2JyPgo8L2JyPgoKIyMgQ29udHJpYnV0aW5nCgpXZSB3ZWxjb21lIGNvbW11bml0eSBjb250cmlidXRpb25zLiBGb3IgZ3VpZGVsaW5lcywgcmVmZXIgdG8gb3VyIFtDT05UUklCVVRJTkcubWRdKC9DT05UUklCVVRJTkcubWQpLgoKCgpTaG91dG91dHMgdG8gW0F3ZXNvbWUgQVBJIERldlRvb2xzXShodHRwczovL2dpdGh1Yi5jb20veW9zcmlhZHkvYXdlc29tZS1hcGktZGV2dG9vbHMpIGFuZCBbT3BlbkFQSSBEZXZ0b29sc10oaHR0cHM6Ly9jaHJvbWV3ZWJzdG9yZS5nb29nbGUuY29tL2RldGFpbC9vcGVuYXBpLWRldnRvb2xzL2plbGdobmRva25rbGdhYmpnYWVwcGpob21ta2ttZGlpKS4KPC9icj4KCgo8YSBuYW1lPSJyZWFkbWUtbWlzYyI+PC9hPgojIyBSdW5uaW5nIHByb3hpZXMgZm9yIG11bHRpcGxlIHNlcnZlcnMKCiMjIyBGdWxsLVN0YWNrIFdlYiBGcmFtZXdvcmtzIChlLmcuLCBEamFuZ28pCgoxLiBSdW4geW91ciB3ZWJzaXRlIGFuZCBub3RlIGRvd24gdGhlIHBvcnQgYW5kIGxvY2FsaG9zdCBpbmZvcm1hdGlvbi4gRXguIDEyNy4wLjAuMTo4MDAwCjIuIFJ1biB0aGUgc2NyaXB0IGFuZCBzcGVjaWZ5IHRoZSBsb2NhbGhvc3QgaW5mb3JtYXRpb24gd2hlcmUgdHJhZmZpYyBzaG91bGQgYmUgcm91dGVkLiBFeC4gbnB4IGF1dG9zcGVjIC0tcG9ydFRvIDgwMDAuIApgYGAKJCBucHggYXV0b3NwZWMgLS1wb3J0VG8gUE9SVCAtLXBvcnRGcm9tIFBPUlQtLWZpbGVQYXRoIG9wZW5hcGkuanNvbgpgYGAKLSBUaGUgLS1wb3J0VG8gZmxhZyBzaG91bGQgYmUgZm9sbG93ZWQgYnkgdGhlIGxvY2FsaG9zdCBpbmZvcm1hdGlvbiB3aGVyZSB5b3Ugd2FudCB0aGUgdHJhZmZpYyB0byBiZSByb3V0ZWQuIEV4LiAiMTI3LjAuMC4xOjgwMDAiCi0gVGhlIG9wdGlvbmFsIC0tcG9ydEZyb20gZmxhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgZGlmZmVyZW50IHBvcnQgdG8gcnVuIHRoZSBwcm94eSwgaW4gY2FzZSB0aGUgZGVmYXVsdCBwb3J0IGlzIGFscmVhZHkgaW4gdXNlLiBUaGUgdmFsdWUgZm9sbG93aW5nIHRoaXMgd291bGQgYmUgdGhlIHBvcnQgeW91IHdhbnQgdG8gdXNlIGZvciB0aGUgcHJveHkuIEV4LiAiMzAwMCIgCjMuIENvcHkgdGhlIG91dHB1dCBVUkwgKEV4LiBsb2NhbGhvc3Q6NzkyOCkgYW5kIHVzZSB5b3VyIHdlYnNpdGUgb3IgYXBwbGljYXRpb24gYXMgZGVzY3JpYmVkIGFib3ZlLgo0LiBBY2Nlc3MgdGhlIG5ld2x5IGNyZWF0ZWQgZmlsZSAtIG5hbWVkIHdpdGggdGhlIGN1cnJlbnQgdGltZXN0YW1wLgoKIyMjIEZyb250ZW5kIGFuZCBCYWNrZW5kIFNlcGFyYXRlbHkgKGUuZy4sIGEgTm9kZSBiYWNrZW5kIGFuZCBSZWFjdCBmcm9udGVuZCkKCkZvciBhcHBsaWNhdGlvbnMgd2l0aCBhIHNlcGFyYXRlIGZyb250ZW5kIGFuZCBiYWNrZW5kLCBydW4gcHJveGllcyBmb3IgYm90aC4KCjEuIFJ1biB5b3VyIGZyb250ZW5kIGFuZCBub3RlIGRvd24gdGhlIGhvc3QgYW5kIHBvcnQgaW5mb3JtYXRpb24uIEUuZy4sIDEyNy4wLjAuMTozMDAwCgoyLiBPcGVyYXRlIHlvdXIgYmFja2VuZCBvbiBhIGRpZmZlcmVudCBwb3J0IGFuZCBub3RlIHRoZSBob3N0IGFuZCBwb3J0IGluZm9ybWF0aW9uLiBFLmcuLCAxMjcuMC4wLjE6NTAwMCAoRm9yIGRldGFpbGVkIGd1aWRlbGluZXMgb24gaG93IHRvIGNoYW5nZSBwb3J0IGluZm8sIHZpc2l0IDxhIGhyZWY9IiNyZWFkbWUtYm90dG9tIj5oZXJlPC9hPikuCgozLiBSdW4gdGhlIHByb3h5IGZvciB0aGUgZnJvbnRlbmQsIHNwZWNpZnlpbmcgdGhlIGZyb250ZW5kJ3MgaG9zdCBhbmQgcG9ydCBpbmZvcm1hdGlvbiB3aGVyZSB0cmFmZmljIHNob3VsZCBiZSByb3V0ZWQuIElmIG5lY2Vzc2FyeSwgeW91IGNhbiBzcGVjaWZ5IGEgZGlmZmVyZW50IHBvcnQgZm9yIHRoZSBwcm94eSB0byBvcGVyYXRlIGZyb20uCgpgYGBjb25zb2xlCiQgbnB4IGF1dG9zcGVjIC0tcG9ydFRvIEZST05URU5EX1BPUlQgLS1maWxlUGF0aCBmcm9udGVuZC5qc29uCmBgYAoKNC4gU2ltaWxhcmx5LCBydW4gdGhlIHByb3h5IGZvciB0aGUgYmFja2VuZCwgc3BlY2lmeWluZyB0aGUgYmFja2VuZCdzIGhvc3QgYW5kIHBvcnQgd2hlcmUgdGhlIGZyb250ZW5kIG5vcm1hbGx5IHNlbmRzIGluZm9ybWF0aW9uLgoKYGBgY29uc29sZQokIG5weCBhdXRvc3BlYyAtLXBvcnRUbyBORVdfQkFDS0VORF9QT1JUIC0tcG9ydEZyb20gTk9STUFMX0JBQ0tFTkRfUE9SVCAtLWZpbGVQYXRoIGJhY2tlbmQuanNvbgpgYGAKClRoaXMgd2lsbCBpbml0aWF0ZSB0aGUgc2VydmVyIHRoYXQgbGlzdGVucyB0byBuZXR3b3JrIHJlcXVlc3RzIGZyb20geW91ciBsb2NhbGx5IHJ1bm5pbmcgd2Vic2l0ZXMsIGF1dG9tYXRpY2FsbHkgZG9jdW1lbnRpbmcgdGhlaXIgQVBJIGludGVyYWN0aW9ucy4KCiMjIENoYW5naW5nIGJhY2tlbmQgcG9ydHMKCjxhIG5hbWU9InJlYWRtZS1ib3R0b20iPjwvYT4KYGBgbWFya2Rvd24KIyMjIDEuIEV4cHJlc3MuanMgKE5vZGUuanMpClRvIGNoYW5nZSB0aGUgcG9ydCBmb3IgYW4gRXhwcmVzcy5qcyBhcHBsaWNhdGlvbiwgeW91IGNhbiBzZXQgdGhlIHBvcnQgaW4geW91ciBhcHBsaWNhdGlvbiBjb2RlIGJlZm9yZSBzdGFydGluZyB0aGUgc2VydmVyLiBGb3IgZXhhbXBsZToKCmBgYGphdmFzY3JpcHQKY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTsKY29uc3QgYXBwID0gZXhwcmVzcygpOwpjb25zdCBwb3J0ID0gMzAwMTsgLy8gQ2hhbmdlIHRvIHlvdXIgZGVzaXJlZCBwb3J0CgphcHAubGlzdGVuKHBvcnQsICgpID0+IHsKICBjb25zb2xlLmxvZyhgRXhhbXBsZSBhcHAgbGlzdGVuaW5nIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fWApOwp9KTsKYGBgCgojIyMgMi4gRGphbmdvIChQeXRob24pCkZvciBEamFuZ28sIHlvdSBjYW4gc3BlY2lmeSB0aGUgcG9ydCB3aGVuIHlvdSBydW4gdGhlIHJ1bnNlcnZlciBjb21tYW5kIGZyb20gdGhlIGNvbW1hbmQgbGluZToKCmBgYHNoZWxsCnB5dGhvbiBtYW5hZ2UucHkgcnVuc2VydmVyIDgwODAKYGBgClRoaXMgY29tbWFuZCBydW5zIHRoZSBzZXJ2ZXIgb24gcG9ydCA4MDgwLgoKIyMjIDMuIEZsYXNrIChQeXRob24pCkluIEZsYXNrLCB5b3UgY2FuIHNwZWNpZnkgdGhlIHBvcnQgd2hlbiBjYWxsaW5nIHRoZSBhcHAucnVuKCkgbWV0aG9kOgoKYGBgcHl0aG9uCmZyb20gZmxhc2sgaW1wb3J0IEZsYXNrCmFwcCA9IEZsYXNrKF9fbmFtZV9fKQoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIGFwcC5ydW4ocG9ydD01MDAxKSAvLyBDaGFuZ2UgdG8geW91ciBkZXNpcmVkIHBvcnQKYGBgCgojIyMgNC4gUmFpbHMgKFJ1YnkpCkZvciBhIFJhaWxzIGFwcGxpY2F0aW9uLCB5b3UgY2FuIHNwZWNpZnkgdGhlIHBvcnQgd2l0aCB0aGUgLXAgb3B0aW9uIHdoZW4gc3RhcnRpbmcgdGhlIHNlcnZlcjoKCmBgYHNoZWxsCnJhaWxzIHNlcnZlciAtcCA0MDAwCmBgYApUaGlzIGNvbW1hbmQgcnVucyB0aGUgc2VydmVyIG9uIHBvcnQgNDAwMC4KCiMjIyA1LiBTcHJpbmcgQm9vdCAoSmF2YSkKSW4gU3ByaW5nIEJvb3QsIHlvdSBjYW4gc3BlY2lmeSB0aGUgc2VydmVyIHBvcnQgaW4gdGhlIGFwcGxpY2F0aW9uLnByb3BlcnRpZXMgb3IgYXBwbGljYXRpb24ueW1sIGZpbGUgbG9jYXRlZCBpbiB0aGUgc3JjL21haW4vcmVzb3VyY2VzIGRpcmVjdG9yeToKCmBgYApzZXJ2ZXIucG9ydD04MDgxCmBgYAoKIyMjIDYuIEFTUC5ORVQgQ29yZSAoQyMpCkZvciBhbiBBU1AuTkVUIENvcmUgYXBwbGljYXRpb24sIHlvdSBjYW4gc3BlY2lmeSB0aGUgcG9ydCBpbiB0aGUgbGF1bmNoU2V0dGluZ3MuanNvbiBmaWxlIGZvdW5kIGluIHRoZSBQcm9wZXJ0aWVzIGZvbGRlciBvZiB5b3VyIHByb2plY3QuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSAtLXVybHMgY29tbWFuZC1saW5lIGFyZ3VtZW50OgoKYGBgc2hlbGwKZG90bmV0IHJ1biAtLXVybHM9Imh0dHA6Ly9sb2NhbGhvc3Q6NTAwMiIKYGBgClRoaXMgY29tbWFuZCBydW5zIHRoZSBzZXJ2ZXIgb24gcG9ydCA1MDAyLgoKIyMjIDcuIExhcmF2ZWwgKFBIUCkKSW4gTGFyYXZlbCwgeW91IGNhbiBzcGVjaWZ5IHRoZSBwb3J0IHdpdGggdGhlIC0tcG9ydCBvcHRpb24gd2hlbiBzZXJ2aW5nIHRoZSBhcHBsaWNhdGlvbjoKCmBgYHNoZWxsCnBocCBhcnRpc2FuIHNlcnZlIC0tcG9ydD04MDAxCmBgYApUaGlzIGNvbW1hbmQgcnVucyB0aGUgc2VydmVyIG9uIHBvcnQgODAwMS4KCiMjIyA4LiBWdWUuanMgKE5vZGUuanMpCkZvciBhIFZ1ZS5qcyBwcm9qZWN0IGNyZWF0ZWQgd2l0aCB2dWUtY2xpLCB5b3UgY2FuIHNwZWNpZnkgdGhlIHBvcnQgaW4gdGhlIHZ1ZS5jb25maWcuanMgZmlsZToKCmBgYGphdmFzY3JpcHQKbW9kdWxlLmV4cG9ydHMgPSB7CiAgZGV2U2VydmVyOiB7CiAgICBwb3J0OiA4MDgxCiAgfQp9CmBgYAoKIyMjIDkuIFJlYWN0IChOb2RlLmpzKQpGb3IgYSBSZWFjdCBhcHBsaWNhdGlvbiBjcmVhdGVkIHdpdGggY3JlYXRlLXJlYWN0LWFwcCwgeW91IGNhbiBzZXQgdGhlIHBvcnQgYnkgbW9kaWZ5aW5nIHRoZSBzdGFydCBzY3JpcHQgaW4geW91ciBwYWNrYWdlLmpzb24gZmlsZSwgb3IgYnkgc2V0dGluZyB0aGUgUE9SVCBlbnZpcm9ubWVudCB2YXJpYWJsZSBiZWZvcmUgcnVubmluZyB0aGUgbnBtIHN0YXJ0IGNvbW1hbmQ6CgpgYGBzaGVsbApQT1JUPTMwMDEgbnBtIHN0YXJ0CmBgYAoKIyMjIDEwLiBBbmd1bGFyIChOb2RlLmpzKQpGb3IgYW4gQW5ndWxhciBhcHBsaWNhdGlvbiwgeW91IGNhbiBzcGVjaWZ5IHRoZSBwb3J0IHdpdGggdGhlIC0tcG9ydCBvcHRpb24gd2hlbiBzZXJ2aW5nIHRoZSBhcHBsaWNhdGlvbjoKCmBgYHNoZWxsCm5nIHNlcnZlIC0tcG9ydCA0MjAxCmBgYAoKVGhlc2UgYXJlIHJlZmVyZW5jZXMgLSBBbHdheXMgcmVmZXIgdG8gdGhlIG9mZmljaWFsIGRvY3VtZW50YXRpb24gZm9yIHRoZSBtb3N0IGFjY3VyYXRlIGFuZCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgoK readmeEtag: '"c753c9a0e8becf3d65fcff649d634259360122c0"' readmeLastModified: Sat, 04 May 2024 00:18:47 GMT repositoryId: 760891853 description: Proxy server that generates API specs for any app or website on localhost. created: '2024-02-20T21:16:04Z' updated: '2026-02-01T12:21:14Z' language: JavaScript archived: false stars: 663 watchers: 2 forks: 16 owner: Adawg4 logo: https://avatars.githubusercontent.com/u/27599708?v=4 repoEtag: '"d1c2cd26d986480e1aab489fec5863903c41e7965180cdea3c6acb3c8128e525"' repoLastModified: Sun, 01 Feb 2026 12:21:14 GMT category: - Auto Generators - Documentation - Server Implementations foundInMaster: true name: OpenAPI AutoSpec language: JavaScript link: https://www.portway.ai/ source_description: >- Proxy server that generates API descriptions for any app or website on localhost. v2: false v3_1: false - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags repository: https://github.com/andrewwalsh/openapi-devtools v3: true id: 34445bbc3e815731b195a393a2a9d3f4 repositoryMetadata: base64Readme: >- PGEgbmFtZT0icmVhZG1lLXRvcCI+PC9hPgoKWyFbTUlUIExpY2Vuc2VdW2xpY2Vuc2Utc2hpZWxkXV1bbGljZW5zZS11cmxdClshW0Rvd25sb2FkIGluIHRoZSBDaHJvbWUgV2ViIFN0b3JlXVtjaHJvbWUtc2hpZWxkXV1bY2hyb21lLXVybF0KWyFbRG93bmxvYWQgaW4gdGhlIEZpcmVmb3ggQWRkLW9uIFN0b3JlXVtmaXJlZm94LXNoaWVsZF1dW2ZpcmVmb3gtdXJsXQoKCj4gWyFJTVBPUlRBTlRdICAKPiBBIG5ldyBhbmQgZmluYWwgdmVyc2lvbiBvZiB0aGlzIHByb2plY3QgaXMgYXZhaWxhYmxlIGJlbG93LiBJdCBoYXMgYmVlbiByZXdyaXR0ZW4gZnJvbSBzY3JhdGNoIGFuZCBzaWduaWZpY2FudGx5IGV4cGFuZHMgdGhlIGZlYXR1cmUgc2V0IG9mIE9wZW5BUEkgRGV2VG9vbHMuCj4gCj4gTmV3IGZlYXR1cmVzOgo+ICAgLSBJZGVudGlmaWVzIHBhdGggcGFyYW1ldGVycyBhdXRvbWF0aWNhbGx5Cj4gICAtIElzIGF2YWlsYWJsZSBhcyBhIGRlc2t0b3AgYXBwIHRoYXQgdXNlcyBhIHByb3h5IChlLmcuIHNlZSBtaXRtMnN3YWdnZXIpCj4gICAtIEhhcyBhIHdlYnNpdGUgYW5kIGNvbW1hbmQgbGluZSB0b29sIHRoYXQgY2FuIGdlbmVyYXRlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgZnJvbSBIQVIgZmlsZXMgKGUuZy4gaGFyLXRvLW9wZW5hcGkpCj4gICAtIFVzZXMgYSBwdWJsaXNoZWQgbGlicmFyeSB0aGF0IGNhbiBnZW5lcmF0ZSBBUEkgc3BlY2lmaWNhdGlvbnMgZm9yIGFueSBBUEkgaW4gbWlkZGxld2FyZSwgRGV2T3BzIGludGVncmF0aW9ucywgb3IgYW55IGVudmlyb25tZW50Cj4gICAtIENhbiBnZW5lcmF0ZSBjdXJsIGNvbW1hbmRzLCBjbGllbnQgY29kZSwgYW5kIHNlbmQgQVBJIHJlcXVlc3RzIHZpYSBhbiBBUEkgY2xpZW50IHRoYXQgcG9wdWxhdGVzIGF1dG9tYXRpY2FsbHkKPiAgIC0gSXMgYWdub3N0aWMgdG8gQVBJIHNlbWFudGljcyBhbmQgbWF5IHRyYW5zbGF0ZSBpbnRvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBPcGVuQVBJLCBvciByZXZlcnNlIGVuZ2luZWVyIG90aGVyIEhUVFAtYmFzZWQgc3RhbmRhcmRzIHN1Y2ggYXMgR3JhcGhRTAo+ICAgLSBJbmNsdWRlcyBhbGwgb3JpZ2luYWwgZmVhdHVyZXMsIGluY2x1ZGluZyB0aGUgYWJpbGl0eSB0byBpbXBvcnQgYW5kIGV4cG9ydAoKLS0tPiBbQ2hlY2sgb3V0IHRoZSBuZXcgdmVyc2lvbiBvZiBPcGVuQVBJIERldlRvb2xzIGhlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9BbmRyZXdXYWxzaC9kZW15c3RpZnkpCgo8IS0tIFBST0pFQ1QgTE9HTyAtLT4KPGJyIC8+CjxkaXYgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0FuZHJld1dhbHNoL29wZW5hcGktZGV2dG9vbHMiPgogICAgPGltZyBzcmM9InJlc291cmNlcy9sb2dvLnN2ZyIgYWx0PSJPcGVuIEFQSSBkZXYgdG9vbHMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMjUwIj4KICA8L2E+CgoKICA8cCBhbGlnbj0iY2VudGVyIiBzdHlsZT0ibWF4LXdpZHRoOiA2MDBweDsiPgogICAgRWZmb3J0bGVzc2x5IGRpc2NvdmVyIEFQSSBiZWhhdmlvdXIgd2l0aCBhIGJyb3dzZXIgZXh0ZW5zaW9uIHRoYXQgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBpbiByZWFsIHRpbWUgZm9yIGFueSBhcHAgb3Igd2Vic2l0ZS4KICAgIDxiciAvPgogICAgPGJyIC8+CiAgICA8YSBocmVmPSJodHRwczovL2F3YWxzaC5pby9wb3N0cy9vcGVuYXBpLWRldnRvb2xzLyI+UmVhZCBNb3JlPC9hPgogICAgwrcKICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9BbmRyZXdXYWxzaC9vcGVuYXBpLWRldnRvb2xzL2lzc3VlcyI+UmVwb3J0IEJ1ZzwvYT4KICAgIMK3CiAgICA8YSBocmVmPSJodHRwczovL2Zvcm1zLmdsZS9mQTJFdHZhbVVyc1J4WEtZQSI+R2l2ZSBGZWVkYmFjazwvYT4KICA8L3A+CiAgPC9wPgo8L2Rpdj4KCiMjIEFib3V0IFRoZSBQcm9qZWN0Cgo8cCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+CiAgICA8aW1nIHdpZHRoPSI4MCUiIHNyYz0icmVzb3VyY2VzL2RlbW8uZ2lmIj4KPC9wPgoKT3BlbkFQSSBEZXZUb29scyBpcyBhIGJyb3dzZXIgZXh0ZW5zaW9uIHRoYXQgZ2VuZXJhdGVzIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgaW4gcmVhbCB0aW1lIGZyb20gbmV0d29yayByZXF1ZXN0cy4gT25jZSBpbnN0YWxsZWQgaXQgYWRkcyBhIG5ldyB0YWIgdG8gRGV2VG9vbHMgY2FsbGVkIGBPcGVuQVBJYC4gV2hpbGUgdGhlIHRvb2wgaXMgb3BlbiBpdCBhdXRvbWF0aWNhbGx5IGNvbnZlcnRzIG5ldHdvcmsgcmVxdWVzdHMgaW50byBhIHNwZWNpZmljYXRpb24uCgoqRmVhdHVyZXMqOgotIEluc3RhbnRseSBnZW5lcmF0ZSBhbiBPcGVuQVBJIDMuMSBzcGVjaWZpY2F0aW9uIGZvciBhbnkgd2Vic2l0ZSBvciBhcHBsaWNhdGlvbiBqdXN0IGJ5IHVzaW5nIGl0Ci0gQXV0b21hdGljYWxseSBtZXJnZXMgbmV3IHJlcXVlc3QgJiByZXNwb25zZSBoZWFkZXJzLCBib2RpZXMsIGFuZCBxdWVyeSBwYXJhbWV0ZXJzIHBlciBlbmRwb2ludAotIENsaWNrIG9uIGEgW3BhdGggcGFyYW1ldGVyXShodHRwczovL3d3dy5hYnN0cmFjdGFwaS5jb20vYXBpLWdsb3NzYXJ5L3BhdGgtcGFyYW1ldGVycykgYW5kIHRoZSBhcHAgd2lsbCBhdXRvbWF0aWNhbGx5IG1lcmdlIGV4aXN0aW5nIGFuZCBmdXR1cmUgbWF0Y2hpbmcgcmVxdWVzdHMKLSBWaWV3IHRoZSBzcGVjaWZpY2F0aW9uIGluc2lkZSB0aGUgdG9vbCB1c2luZyBbUmVkb2NdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3JlZG9jKSBhbmQgZG93bmxvYWQgd2l0aCBhIGNsaWNrCi0gRXhwb3J0IGFuZCBzYXZlIGEgc2Vzc2lvbiBhdCBhbnkgdGltZSwgb3Igc2hhcmUgaXQgd2l0aCBvdGhlcnMKCjxwIGFsaWduPSJyaWdodCI+KDxhIGhyZWY9IiNyZWFkbWUtdG9wIj5iYWNrIHRvIHRvcDwvYT4pPC9wPgoKIyMgSW5zdGFsbGF0aW9uCgo8cCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAwJSI+CiAgICA8aW1nIHdpZHRoPSI4MCUiIHNyYz0icmVzb3VyY2VzL2RlbW8taW1nLnBuZyI+CjwvcD4KCltEb3dubG9hZCB0aGUgZXh0ZW5zaW9uIGluIHRoZSBDaHJvbWUgV2ViIFN0b3JlXVtjaHJvbWUtdXJsXS4KCltEb3dubG9hZCB0aGUgZXh0ZW5zaW9uIGluIHRoZSBGaXJlZm94IEFkZC1vbiBTdG9yZV1bZmlyZWZveC11cmxdLgoKT3RoZXJ3aXNlLCB0byBpbnN0YWxsIG1hbnVhbGx5OgogIC0gW0Rvd25sb2FkIGFuZCBleHRyYWN0IHRoZSBkaXN0LnppcCBmaWxlIGluIHRoZSBsYXRlc3QgcmVsZWFzZV0oaHR0cHM6Ly9naXRodWIuY29tL0FuZHJld1dhbHNoL29wZW5hcGktZGV2dG9vbHMvcmVsZWFzZXMvbGF0ZXN0L2Rvd25sb2FkL2Rpc3QuemlwKQogIC0gSW4gQ2hyb21lLCBuYXZpZ2F0ZSB0byBgY2hyb21lOi8vZXh0ZW5zaW9uc2AKICAtIEluIHRoZSB0b3AgcmlnaHQgZW5hYmxlIHRoZSBgRGV2ZWxvcGVyIG1vZGVgIHRvZ2dsZQogIC0gSW4gdGhlIHRvcCBsZWZ0IGNsaWNrIGBMb2FkIHVucGFja2VkYCBhbmQgc2VsZWN0IHRoZSBleHRyYWN0ZWQgYGRpc3RgIGRpcmVjdG9yeQogIC0gT3BlbiBhIG5ldyB0YWIgYW5kIHRoZW4gc2VsZWN0IGBPcGVuQVBJYCBpbiB0aGUgZGV2ZWxvcGVyIHRvb2xzIChvcGVuIHdpdGggYGNtZCtpYCBvciBgY3RybCtpYCkKICAtIEZpcmVmb3ggaXMgbW9yZSBjaGFsbGVuZ2luZy4gUGxlYXNlIHVzZSB0aGUgYWRkLW9uIHN0b3JlLgoKPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3JlYWRtZS10b3AiPmJhY2sgdG8gdG9wPC9hPik8L3A+CgojIyBVc2FnZQoKVGhlIHNwZWNpZmljYXRpb24gd2lsbCBhdXRvbWF0aWNhbGx5IHBvcHVsYXRlIGJhc2VkIG9uIEpTT04gcmVxdWVzdHMgdGhhdCBmaXJlIGFzIHlvdSBicm93c2UgdGhlIHdlYi4gSW4gdGhlIHNldHRpbmdzIG1lbnUgeW91IGNhbiBmaWx0ZXIgaG9zdHMgYW5kIHBhcmFtZXRlcmlzZSBwYXRocyBpbiBVUkxzLiBPbmNlIHlvdSBkbyBzbyBhbGwgbWF0Y2hpbmcgZXhpc3RpbmcgYW5kIGZ1dHVyZSByZXF1ZXN0cyB0byB0aGF0IGVuZHBvaW50IHdpbGwgYmUgbWVyZ2VkLiBUaGlzIHByb2Nlc3MgaXMgaXJyZXZlcnNpYmxlLCBidXQgeW91IGNhbiBjbGVhciB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgcmVzdGFydCBhdCBhbnkgdGltZS4KCldoZW4gdGhlIHNhbWUgZW5kcG9pbnQgcmVzcG9uZHMgd2l0aCBkaWZmZXJlbnQgZGF0YSwgc3VjaCBhcyBhIHZhbHVlIHRoYXQgaXMgc29tZXRpbWVzIGEgc3RyaW5nIGFuZCBzb21ldGltZXMgbnVsbCwgdGhlIHNwZWNpZmljYXRpb24gZm9yIHRoYXQgdmFsdWUgd2lsbCBiZSAqZWl0aGVyKiBzdHJpbmcgb3IgbnVsbC4gQWxsIGluZm9ybWF0aW9uIGlzIGFjY291bnRlZCBmb3IgaW4gdGhlIGZpbmFsIHNwZWNpZmljYXRpb24uIElmIHlvdSBzZWUgc29tZXRoaW5nIG1pc3NpbmcgZnJvbSBhIHJlcXVlc3QsIHRyaWdnZXIgYSByZXF1ZXN0IHRoYXQgY29udGFpbnMgdGhlIG1pc3NpbmcgaW5mb3JtYXRpb24uCgpUaGUgc2V0dGluZ3MgbWVudSBjb250YWlucyBzZXZlcmFsIG9wdGlvbnMuIEhlcmUgeW91IGNhbiBlbmFibGUgcmVhbCBleGFtcGxlcyBpbiB0aGUgc3BlY2lmaWNhdGlvbi4gWW91IGNhbiBhbHNvIGV4cG9ydCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXBwIGFzIGEgc3RyaW5nLCBzaGFyZSBvciBzdG9yZSBpdCwgYW5kIGltcG9ydCBpdCBsYXRlci4KCjxwIGFsaWduPSJyaWdodCI+KDxhIGhyZWY9IiNyZWFkbWUtdG9wIj5iYWNrIHRvIHRvcDwvYT4pPC9wPgoKIyMgV2hhdCBpcyBPcGVuQVBJPwoKQW4gW09wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pIHNwZWNpZmljYXRpb24gaXMgYSBkZXNjcmlwdGlvbiBvZiB3aGF0IGFuIEFQSSBleHBlY3RzIHRvIHJlY2VpdmUgYW5kIHdoYXQgaXQgd2lsbCByZXNwb25kIHdpdGguIEl0IGlzIGdvdmVybmVkIGJ5IHRoZSBPcGVuQVBJIEluaXRpYXRpdmUgYW5kIHRoZSBMaW51eCBGb3VuZGF0aW9uLiBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGFyZSB0aGUgbW9kZXJuIHN0YW5kYXJkIGZvciBSRVNUZnVsIEFQSXMsIGFuZCBzeXN0ZW1zIHRoYXQgaGF2ZSB0aGVtIGFyZSBmYXIgZWFzaWVyIHRvIHdvcmsgd2l0aC4KCjxwIGFsaWduPSJyaWdodCI+KDxhIGhyZWY9IiNyZWFkbWUtdG9wIj5iYWNrIHRvIHRvcDwvYT4pPC9wPgoKIyMgQ29udHJpYnV0aW5nCgpUbyBkZXZlbG9wIHRoZSBwcm9qZWN0OgotIGBucG0gaW5zdGFsbGAKLSBgbnBtIHJ1biBkZXZgCgo8cCBhbGlnbj0icmlnaHQiPig8YSBocmVmPSIjcmVhZG1lLXRvcCI+YmFjayB0byB0b3A8L2E+KTwvcD4KCjwhLS0gTUFSS0RPV04gTElOS1MgJiBJTUFHRVMgLS0+CjwhLS0gaHR0cHM6Ly93d3cubWFya2Rvd25ndWlkZS5vcmcvYmFzaWMtc3ludGF4LyNyZWZlcmVuY2Utc3R5bGUtbGlua3MgLS0+CltsaWNlbnNlLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9BbmRyZXdXYWxzaC9vcGVuYXBpLWRldnRvb2xzL2Jsb2IvbWFpbi9MSUNFTlNFLnR4dApbbGljZW5zZS1zaGllbGRdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL0FuZHJld1dhbHNoL29wZW5hcGktZGV2dG9vbHMuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UKW2Nocm9tZS11cmxdOiBodHRwczovL2Nocm9tZS5nb29nbGUuY29tL3dlYnN0b3JlL2RldGFpbC9vcGVuYXBpLWRldnRvb2xzL2plbGdobmRva25rbGdhYmpnYWVwcGpob21ta2ttZGlpCltjaHJvbWUtc2hpZWxkXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9Hb29nbGUlMjBDaHJvbWUtNDI4NUY0P3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1Hb29nbGVDaHJvbWUmbG9nb0NvbG9yPXdoaXRlCltmaXJlZm94LXVybF06IGh0dHBzOi8vYWRkb25zLm1vemlsbGEub3JnL2VuLVVTL2ZpcmVmb3gvYWRkb24vb3BlbmFwaS1kZXZ0b29scy8KW2ZpcmVmb3gtc2hpZWxkXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9GaXJlZm94LUZGNzEzOT9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289RmlyZWZveC1Ccm93c2VyJmxvZ29Db2xvcj13aGl0ZQ== readmeEtag: '"cb00079efb9342440dc77e645e239cd2706e3deb"' readmeLastModified: Wed, 19 Mar 2025 04:42:20 GMT repositoryId: 709571808 description: Browser extension that generates API specs for any app or website created: '2023-10-25T00:36:06Z' updated: '2026-02-03T07:44:21Z' language: TypeScript archived: false stars: 4276 watchers: 22 forks: 89 owner: AndrewWalsh logo: https://avatars.githubusercontent.com/u/15863952?v=4 license: MIT repoEtag: '"c09b44c9d2577a6d3cb3693a0357b34210fa3b5652fa15bdb230832dcaf407fd"' repoLastModified: Tue, 03 Feb 2026 07:44:21 GMT category: - Auto Generators - Documentation categoryByRequestIndicator: true foundInMaster: true v3_1: true name: OpenAPI DevTools language: TypeScript link: >- https://chrome.google.com/webstore/detail/openapi-devtools/jelghndoknklgabjgaeppjhommkkmdii source_description: Browser extension that generates API specs for any app or website v2: false - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/microsoft/typespec v3: true id: 0a49bbbd9d784c681b8eb737004a2eab repositoryMetadata: base64Readme: >- IyBUeXBlU3BlYwoKW09mZmljaWFsIERvY3NdKGh0dHBzOi8vdHlwZXNwZWMuaW8vKSB8IFtUcnkgVHlwZVNwZWMgT25saW5lXShodHRwczovL2FrYS5tcy90cnl0eXBlc3BlYykgfCBbR2V0dGluZyBTdGFydGVkXShodHRwczovL3R5cGVzcGVjLmlvL2RvY3MpIHwgW0xhbmd1YWdlIE92ZXJ2aWV3XShodHRwczovL3R5cGVzcGVjLmlvL2RvY3MvbGFuZ3VhZ2UtYmFzaWNzL292ZXJ2aWV3KQoKVHlwZVNwZWMgaXMgYSBsYW5ndWFnZSBmb3IgZGVmaW5pbmcgY2xvdWQgc2VydmljZSBBUElzIGFuZCBzaGFwZXMuIFR5cGVTcGVjIGlzIGEgaGlnaGx5IGV4dGVuc2libGUgbGFuZ3VhZ2Ugd2l0aCBwcmltaXRpdmVzIHRoYXQgY2FuIGRlc2NyaWJlIEFQSSBzaGFwZXMgY29tbW9uIGFtb25nIFJFU1QsIE9wZW5BUEksIGdSUEMsIGFuZCBvdGhlciBwcm90b2NvbHMuCgpUeXBlU3BlYyBpcyBleGNlbGxlbnQgZm9yIGdlbmVyYXRpbmcgbWFueSBkaWZmZXJlbnQgQVBJIGRlc2NyaXB0aW9uIGZvcm1hdHMsIGNsaWVudCBhbmQgc2VydmljZSBjb2RlLCBkb2N1bWVudGF0aW9uLCBhbmQgb3RoZXIgYXNzZXRzIHdoaWxlIGtlZXBpbmcgeW91ciBUeXBlU3BlYyBkZWZpbml0aW9uIGFzIGEgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aC4KClVzaW5nIFR5cGVTcGVjLCB5b3UgY2FuIGNyZWF0ZSByZXVzYWJsZSBwYXR0ZXJucyBmb3IgYWxsIGFzcGVjdHMgb2YgYW4gQVBJIGFuZCBwYWNrYWdlIHRob3NlIHJldXNhYmxlIHBhdHRlcm5zIGludG8gbGlicmFyaWVzLiBUaGVzZSBwYXR0ZXJucyBlc3RhYmxpc2ggImd1YXJkcmFpbHMiIGZvciBBUEkgZGVzaWduZXJzIGFuZCBtYWtlIGl0IGVhc2llciB0byBmb2xsb3cgYmVzdCBwcmFjdGljZXMgdGhhbiB0byBkZXZpYXRlIGZyb20gdGhlbS4gVHlwZVNwZWMgYWxzbyBoYXMgYSByaWNoIGxpbnRlciBmcmFtZXdvcmsgd2l0aCB0aGUgYWJpbGl0eSB0byBmbGFnIGFudGktcGF0dGVybnMgYXMgd2VsbCBhcyBhbiBlbWl0dGVyIGZyYW1ld29yayB0aGF0IGxldHMgeW91IGNvbnRyb2wgdGhlIG91dHB1dCB0byBlbnN1cmUgaXQgZm9sbG93cyB0aGUgcGF0dGVybnMgeW91IHdhbnQuCgpUeXBlU3BlYyBpcyBhIE1pY3Jvc29mdC1idWlsdCwgY29tbXVuaXR5LXN1cHBvcnRlZCBwcm9qZWN0LiBZb3VyIGlkZWFzLCBmZWVkYmFja3MsIGFuZCBjb2RlIG1ha2UgYWxsIHRoZSBkaWZmZXJlbmNlIGFuZCB3ZSBkZWVwbHkgYXBwcmVjaWF0ZSB0aGUgc3VwcG9ydCBmcm9tIHRoZSBjb21tdW5pdHkuCgojIyBbSW5zdGFsbGF0aW9uXShodHRwczovL3R5cGVzcGVjLmlvL2RvY3MpCgpgYGAKbnBtIGluc3RhbGwgLWcgQHR5cGVzcGVjL2NvbXBpbGVyCmBgYAoKIyMjIyBUb29scwoKVGhlIFtUeXBlU3BlYyBWUyBDb2RlIGV4dGVuc2lvbl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPXR5cGVzcGVjLnR5cGVzcGVjLXZzY29kZSkgY2FuIGJlIGluc3RhbGxlZCBmcm9tIHRoZSBWUyBDb2RlIFttYXJrZXRwbGFjZV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPXR5cGVzcGVjLnR5cGVzcGVjLXZzY29kZSkgb3IgZGlyZWN0bHkgb24gdGhlIGNvbW1hbmQgbGluZToKCmBgYAp0c3AgY29kZSBpbnN0YWxsCmBgYAoKVGhlIFtUeXBlU3BlYyBWUyBFeHRlbnNpb25dKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT10eXBlc3BlYy50eXBlc3BlY3ZzKSBjYW4gYmUgaW5zdGFsbGVkIGZyb20gdGhlIFtWUyBNYXJrZXRwbGFjZV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPXR5cGVzcGVjLnR5cGVzcGVjdnMpIG9yIGRpcmVjdGx5IG9uIHRoZSBjb21tYW5kIGxpbmU6CgpgYGAKdHNwIHZzIGluc3RhbGwKYGBgCgojIyBbVXNhZ2VdKGh0dHBzOi8vdHlwZXNwZWMuaW8vZG9jcyNjcmVhdGUtZmlyc3QtdHlwZXNwZWMtcHJvamVjdCkKCiMjIyBUeXBlU3BlYyB0byBPcGVuQVBJIDMuMCBFeGFtcGxlCgpUaGlzIGV4YW1wbGUgdXNlcyB0aGUgYEB0eXBlc3BlYy9odHRwYCwgYEB0eXBlc3BlYy9yZXN0YCwgYW5kIGBAdHlwZXNwZWMvb3BlbmFwaTNgIGxpYnJhcmllcyB0byBkZWZpbmUgYSBiYXNpYyBSRVNUIHNlcnZpY2UgYW5kIGdlbmVyYXRlIGFuIE9wZW5BUEkgMy4wIGRvY3VtZW50IGZyb20gaXQuCgpSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIGFuZCBzZWxlY3QgIkdlbmVyaWMgUkVTVCBBUEkiOgoKYGBgCnRzcCBpbml0CmBgYAoKSGl0IGVudGVyIGEgZmV3IHRpbWVzIHRvIGNvbmZpcm0gdGhlIGRlZmF1bHRzLgoKQ29weSB0aGUgY29udGVudHMgYmVsb3cgaW50byB5b3VyICoqbWFpbi50c3AqKjoKCmBgYHR5cGVzcGVjCmltcG9ydCAiQHR5cGVzcGVjL2h0dHAiOwppbXBvcnQgIkB0eXBlc3BlYy9yZXN0IjsKaW1wb3J0ICJAdHlwZXNwZWMvb3BlbmFwaTMiOwoKdXNpbmcgSHR0cDsKdXNpbmcgUmVzdDsKCi8qKiBUaGlzIGlzIGEgcGV0IHN0b3JlIHNlcnZpY2UuICovCkBzZXJ2aWNlKCN7IHRpdGxlOiAiUGV0IFN0b3JlIFNlcnZpY2UiIH0pCkBzZXJ2ZXIoImh0dHBzOi8vZXhhbXBsZS5jb20iLCAiVGhlIHNlcnZpY2UgZW5kcG9pbnQiKQpuYW1lc3BhY2UgUGV0U3RvcmU7CgpAcm91dGUoIi9wZXRzIikKaW50ZXJmYWNlIFBldHMgewogIGxpc3QoKTogUGV0W107Cn0KCm1vZGVsIFBldCB7CiAgQG1pbkxlbmd0aCgxMDApCiAgbmFtZTogc3RyaW5nOwoKICBAbWluVmFsdWUoMCkKICBAbWF4VmFsdWUoMTAwKQogIGFnZTogaW50MzI7CgogIGtpbmQ6ICJkb2ciIHwgImNhdCIgfCAiZmlzaCI7Cn0KYGBgCgpJbnN0YWxsIHRoZSBkZXBlbmRlbmNpZXMgb2YgbWFpbi50c3A6CgpgYGAKdHNwIGluc3RhbGwKYGBgCgpDb21waWxlIGl0IHRvIE9wZW5BUEkgMy4wOgoKYGBgCnRzcCBjb21waWxlIG1haW4udHNwIC0tZW1pdCBAdHlwZXNwZWMvb3BlbmFwaTMKYGBgCgpZb3UgY2FuIGZpbmQgdGhlIGVtaXR0ZWQgT3BlbkFQSSBvdXRwdXQgaW4gYC4vdHNwLW91dHB1dC9vcGVuYXBpLmpzb25gLgoKIyMgQWR2YW5jZWQgU2NlbmFyaW9zCgojIyMgSW5zdGFsbGluZyBuaWdodGx5IHZlcnNpb24KCk9uIGV2ZXJ5IGNvbW1pdCB0byB0aGUgbWFpbiBicmFuY2gsIHBhY2thZ2VzIHdpdGggY2hhbmdlcyBhcmUgYXV0b21hdGljYWxseSBwdWJsaXNoZWQgdG8gbnBtIHdpdGggdGhlIGBAbmV4dGAgdGFnLgpUaGUgW3BhY2thZ2VzXSgjcGFja2FnZXMpIHNlY3Rpb24gc2hvd3Mgd2hpY2ggdmVyc2lvbiBjb3JyZXNwb25kcyB0byB0aGUgYG5leHRgIHRhZyBmb3IgZWFjaCBwYWNrYWdlLgoKVG8gdXNlIGEgYG5pZ2h0bHlgIHZlcnNpb24gb2YgdGhlIHBhY2thZ2VzLCBnbyBvdmVyIGVhY2ggb25lIG9mIHRoZSBwYWNrYWdlcyBpbiB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZSBhbmQgdXBkYXRlIGl0IHRvIGVpdGhlciB0aGUgbGF0ZXN0IHB1Ymxpc2hlZCBgQG5leHRgIHZlcnNpb24gb3IgYEBsYXRlc3RgLCB3aGljaGV2ZXIgaXMgdGhlIG5ld2VzdC4gWW91IGNhbiBhbHNvIHVzZSB0aGUgdGFnIGBsYXRlc3RgIG9yIGBuZXh0YCBpbnN0ZWFkIG9mIGFuIGV4cGxpY2l0IHZlcnNpb24uCgpBZnRlciB1cGRhdGluZyB0aGUgcGFja2FnZS5qc29uIGZpbGUgeW91IGNhbiBydW4gYG5wbSB1cGRhdGUgLS1mb3JjZWAuIEZvcmNlIGlzIHJlcXVpcmVkIGFzIHRoZXJlIG1pZ2h0IGJlIHNvbWUgaW5jb21wYXRpYmxlIHZlcnNpb24gcmVxdWlyZW1lbnQuCgpFeGFtcGxlCgpgYGBqc29uNQovLyBTdGFibGUgc2V0dXAKImRlcGVuZGVuY2llcyI6IHsKICAiQHR5cGVzcGVjL2NvbXBpbGVyIjogIn4wLjMwLjAiLAogICJAdHlwZXNwZWMvaHR0cCI6ICJ+MC4xNC4wIiwKICAiQHR5cGVzcGVjL3Jlc3QiOiAifjAuMTQuMCIsCiAgIkB0eXBlc3BlYy9vcGVuYXBpIjogIn4wLjkuMCIsCn0KCi8vIENvbnN1bWUgbmV4dCB2ZXJzaW9uCi8vIEluIHRoaXMgZXhhbXBsZTogY29tcGlsZXIgYW5kIG9wZW5hcGkgaGF2ZSBjaGFuZ2VzIGJ1dCByZXN0IGxpYnJhcnkgaGFzIG5vbmUKImRlcGVuZGVuY2llcyI6IHsKICAiQHR5cGVzcGVjL2NvbXBpbGVyIjogIn4wLjMxLjAtZGV2LjUiLAogICJAdHlwZXNwZWMvaHR0cCI6ICJ+MC4xNC4wIiwKICAiQHR5cGVzcGVjL3Jlc3QiOiAifjAuMTQuMCIsIC8vIE5vIGNoYW5nZXMgdG8gQHR5cGVzcGVjL3Jlc3QgbGlicmFyeSBzbyBuZWVkIHRvIHN0YXkgdGhlIGxhdGVzdC4KICAiQHR5cGVzcGVjL29wZW5hcGkiOiAifjAuMTAuMC1kZXYuMiIsCn0KYGBgCgojIyBQYWNrYWdlcwoKfCBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENoYW5nZWxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwgTGF0ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5leHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgQ29yZSBmdW5jdGlvbmFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBbQHR5cGVzcGVjL2NvbXBpbGVyXVtjb21waWxlcl9zcmNdICAgICAgICAgICAgICAgICB8IFtDaGFuZ2Vsb2ddW2NvbXBpbGVyX2NoZ10gICAgICAgIHwgWyFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0B0eXBlc3BlYy9jb21waWxlcildKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0B0eXBlc3BlYy9jb21waWxlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0B0eXBlc3BlYy9jb21waWxlci9uZXh0KSAgICAgICAgICAgICAgICAgfAp8IFR5cGVTcGVjIExpYnJhcmllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgW0B0eXBlc3BlYy9odHRwXVtodHRwX3NyY10gICAgICAgICAgICAgICAgICAgICAgICAgfCBbQ2hhbmdlbG9nXVtodHRwX2NoZ10gICAgICAgICAgICB8IFshW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AdHlwZXNwZWMvaHR0cCldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0B0eXBlc3BlYy9odHRwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AdHlwZXNwZWMvaHR0cC9uZXh0KSAgICAgICAgICAgICAgICAgICAgIHwKfCBbQHR5cGVzcGVjL3Jlc3RdW3Jlc3Rfc3JjXSAgICAgICAgICAgICAgICAgICAgICAgICB8IFtDaGFuZ2Vsb2ddW3Jlc3RfY2hnXSAgICAgICAgICAgIHwgWyFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0B0eXBlc3BlYy9yZXN0KV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHR5cGVzcGVjL3Jlc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0B0eXBlc3BlYy9yZXN0L25leHQpICAgICAgICAgICAgICAgICAgICAgfAp8IFtAdHlwZXNwZWMvb3BlbmFwaV1bb3BlbmFwaV9zcmNdICAgICAgICAgICAgICAgICAgIHwgW0NoYW5nZWxvZ11bb3BlbmFwaV9jaGddICAgICAgICAgfCBbIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQHR5cGVzcGVjL29wZW5hcGkpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AdHlwZXNwZWMvb3BlbmFwaSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQHR5cGVzcGVjL29wZW5hcGkvbmV4dCkgICAgICAgICAgICAgICAgICB8CnwgW0B0eXBlc3BlYy9vcGVuYXBpM11bb3BlbmFwaTNfc3JjXSAgICAgICAgICAgICAgICAgfCBbQ2hhbmdlbG9nXVtvcGVuYXBpM19jaGddICAgICAgICB8IFshW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AdHlwZXNwZWMvb3BlbmFwaTMpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AdHlwZXNwZWMvb3BlbmFwaTMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AdHlwZXNwZWMvb3BlbmFwaTMvbmV4dCkgICAgICAgICAgICAgICAgIHwKfCBbQHR5cGVzcGVjL3ZlcnNpb25pbmddW3ZlcnNpb25pbmdfc3JjXSAgICAgICAgICAgICB8IFtDaGFuZ2Vsb2ddW3ZlcnNpb25pbmdfY2hnXSAgICAgIHwgWyFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0B0eXBlc3BlYy92ZXJzaW9uaW5nKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHR5cGVzcGVjL3ZlcnNpb25pbmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0B0eXBlc3BlYy92ZXJzaW9uaW5nL25leHQpICAgICAgICAgICAgICAgfAp8IFR5cGVTcGVjIFRvb2xzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgW0B0eXBlc3BlYy9wcmV0dGllci1wbHVnaW4tdHlwZXNwZWNdW3ByZXR0aWVyX3NyY10gfCBbQ2hhbmdlbG9nXVtwcmV0dGllcl9jaGddICAgICAgICB8IFshW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AdHlwZXNwZWMvcHJldHRpZXItcGx1Z2luLXR5cGVzcGVjKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHR5cGVzcGVjL3ByZXR0aWVyLXBsdWdpbi10eXBlc3BlYykgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AdHlwZXNwZWMvcHJldHRpZXItcGx1Z2luLXR5cGVzcGVjL25leHQpIHwKfCBbdHlwZXNwZWMtdnNdW3R5cGVzcGVjLXZzX3NyY10gICAgICAgICAgICAgICAgICAgICB8IFtDaGFuZ2Vsb2ddW3R5cGVzcGVjLXZzX2NoZ10gICAgIHwgWyFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L3R5cGVzcGVjLXZzKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvdHlwZXNwZWMtdnMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L3R5cGVzcGVjLXZzL25leHQpICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFt0eXBlc3BlYy12c2NvZGVdW3R5cGVzcGVjLXZzY29kZV9zcmNdICAgICAgICAgICAgIHwgW0NoYW5nZWxvZ11bdHlwZXNwZWMtdnNjb2RlX2NoZ10gfCBbIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvdHlwZXNwZWMtdnNjb2RlKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvdHlwZXNwZWMtdnNjb2RlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvdHlwZXNwZWMtdnNjb2RlL25leHQpICAgICAgICAgICAgICAgICAgICB8CnwgW3RtbGFuZ3VhZ2UtZ2VuZXJhdG9yXVt0bWxhbmd1YWdlX3NyY10gICAgICAgICAgICAgfCBbQ2hhbmdlbG9nXVt0bWxhbmd1YWdlX2NoZ10gICAgICB8IFshW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi90bWxhbmd1YWdlLWdlbmVyYXRvcildKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3RtbGFuZ3VhZ2UtZ2VuZXJhdG9yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAhW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi90bWxhbmd1YWdlLWdlbmVyYXRvci9uZXh0KSAgICAgICAgICAgICAgIHwKCltjb21waWxlcl9zcmNdOiBwYWNrYWdlcy9jb21waWxlcgpbY29tcGlsZXJfY2hnXTogcGFja2FnZXMvY29tcGlsZXIvQ0hBTkdFTE9HLm1kCltodHRwX3NyY106IHBhY2thZ2VzL2h0dHAKW2h0dHBfY2hnXTogcGFja2FnZXMvaHR0cC9DSEFOR0VMT0cubWQKW3Jlc3Rfc3JjXTogcGFja2FnZXMvcmVzdApbcmVzdF9jaGddOiBwYWNrYWdlcy9yZXN0L0NIQU5HRUxPRy5tZApbb3BlbmFwaV9zcmNdOiBwYWNrYWdlcy9vcGVuYXBpCltvcGVuYXBpX2NoZ106IHBhY2thZ2VzL29wZW5hcGkvQ0hBTkdFTE9HLm1kCltvcGVuYXBpM19zcmNdOiBwYWNrYWdlcy9vcGVuYXBpMwpbb3BlbmFwaTNfY2hnXTogcGFja2FnZXMvb3BlbmFwaTMvQ0hBTkdFTE9HLm1kClt2ZXJzaW9uaW5nX3NyY106IHBhY2thZ2VzL3ZlcnNpb25pbmcKW3ZlcnNpb25pbmdfY2hnXTogcGFja2FnZXMvdmVyc2lvbmluZy9DSEFOR0VMT0cubWQKW3ByZXR0aWVyX3NyY106IHBhY2thZ2VzL3ByZXR0aWVyLXBsdWdpbi10eXBlc3BlYwpbcHJldHRpZXJfY2hnXTogcGFja2FnZXMvcHJldHRpZXItcGx1Z2luLXR5cGVzcGVjL0NIQU5HRUxPRy5tZApbdHlwZXNwZWMtdnNfc3JjXTogcGFja2FnZXMvdHlwZXNwZWMtdnMKW3R5cGVzcGVjLXZzX2NoZ106IHBhY2thZ2VzL3R5cGVzcGVjLXZzL0NIQU5HRUxPRy5tZApbdHlwZXNwZWMtdnNjb2RlX3NyY106IHBhY2thZ2VzL3R5cGVzcGVjLXZzY29kZQpbdHlwZXNwZWMtdnNjb2RlX2NoZ106IHBhY2thZ2VzL3R5cGVzcGVjLXZzY29kZS9DSEFOR0VMT0cubWQKW3RtbGFuZ3VhZ2Vfc3JjXTogcGFja2FnZXMvdG1sYW5ndWFnZS1nZW5lcmF0b3IKW3RtbGFuZ3VhZ2VfY2hnXTogcGFja2FnZXMvdG1sYW5ndWFnZS1nZW5lcmF0b3IvQ0hBTkdFTE9HLm1kCgpgQG5leHRgIHZlcnNpb24gb2YgdGhlIHBhY2thZ2UgYXJlIHRoZSBsYXRlc3QgdmVyc2lvbnMgYXZhaWxhYmxlIG9uIHRoZSBgbWFpbmAgYnJhbmNoLgo= readmeEtag: '"23127df411e8f922adee3f7ea9e15a2710aa145b"' readmeLastModified: Thu, 08 May 2025 00:05:14 GMT repositoryId: 381857226 description: null created: '2021-06-30T23:29:49Z' updated: '2026-02-06T00:30:11Z' language: Java archived: false stars: 5571 watchers: 47 forks: 336 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT repoEtag: '"374c05ff1296ca0f057f7b6e4c3e265cee343485863d6183160ab684509ccc45"' repoLastModified: Fri, 06 Feb 2026 00:30:11 GMT category: - Auto Generators - Server Implementations foundInMaster: true name: TypeSpec language: TypeScript link: https://typespec.io/ source_description: >- Emit OpenAPI specifications from API descriptions defined in the generic, interoperable, and extensible TypeSpec language. - source: - https://openapi.tools/ - openapi3 tags name: oa-client category: - SDK - Parsers language: TypeScript link: https://github.com/ninofiliu/oa-client repository: https://github.com/ninofiliu/oa-client source_description: >- Flexible client helper for making and validating calls to OpenAPI backends. For Node and the browser. Runtime lib - no need for code generation! v2: false v3: true repositoryMetadata: base64Readme: >- IyBvYS1jbGllbnQKCkhhcm5lc3MgYWxsIHRoZSBwb3dlciBvZiB5b3VyIGJhY2tlbmQncyBPcGVuQVBJIHYzIHNwZWMgZmlsZXMgYnkgZ2VuZXJhdGluZyBhIGNsaWVudCBvYmplY3QgaW4gYSBmZXcgbGluZXMKCiMjIEZlYXR1cmVzCgrwn5qAIENyZWF0ZXMgYXQgcnVudGltZSBhIGNsaWVudCBvYmplY3QgaW4gYSBmZXcgbGluZXMgKHJlYWQgbW9yZSBpbiBbR2V0dGluZyBTdGFydGVkXSgjZ2V0dGluZy1zdGFydGVkKSkKCmBgYGpzCi8vIENyZWF0aW9uCmltcG9ydCB7IGNyZWF0ZUNsaWVudCB9IGZyb20gJ29hLWNsaWVudCc7CmNvbnN0IGNsaWVudCA9IGNyZWF0ZUNsaWVudChzcGVjcywgY2FsbGVycywgewogIG9yaWdpbjogJ2h0dHBzOi8vbXkuYXBpLmNvbScsCiAgdmFsaWRhdGlvbkxldmVsOiAnZXJyb3InLAp9KTsKLy8gVXNhZ2UKY2xpZW50Wy8qIHBhdGggKi9dWy8qIG1ldGhvZCAqL10oLyogb3B0aW9uYWwgcGFyYW1zICovKS50aGVuKGFwaVJlc3BvbnNlID0+IHsgLyogLi4uICovIH0pCmBgYAoK8J+agCBPcHRpb25hbGx5IHRocm93cyBmb3IgaW52YWxpZCBwYXRoLCBxdWVyeSwgb3IgYm9keQoKYGBgeWFtbAojIE9wZW5BUEkgc3BlY3MKcGF0aHM6CiAgL3VzZXJzL3t1c2VySWR9OgogICAgZ2V0OgogICAgICBwYXJhbWV0ZXJzOgogICAgICAgIC0gaW46IHBhdGgKICAgICAgICAgIG5hbWU6IHVzZXJJZAogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCmBgYAoKYGBganMKY2xpZW50WyIvdXNlcnMve3VzZXJJZH0iXS5nZXQoeyBwYXRoUGFyYW1zOiB7IHVzZXJJZDogImpvaG4iIH0gfSk7Ci8vIHRocm93cyBbb2EtY2xpZW50OjEwM10gRGF0YSBkb2VzIG5vdCBwYXNzIHZhbGlkYXRpb246IGRhdGEudXNlcklkIHNob3VsZCBiZSBhbiBpbnRlZ2VyCmBgYAoK8J+agCBDb21waWxlcyB0aGUgcGF0aCBhbmQgcXVlcnkgcGFyYW1zCgpgYGBqcwpjbGllbnRbIi9uZXctdXNlci97am9ifSJdLnBvc3QoewogIHBhdGhQYXJhbXM6IHsgam9iOiAiZGlyZWN0b3IiIH0sCiAgcXVlcnlQYXJhbXM6IHsgbmFtZTogIkdhc3BhciBOb8OpIiB9LAp9KTsKLy8gY2FsbHMgL25ldy11c2VyL2RpcmVjdG9yP25hbWU9R2FzcGFyK05vJUMzJUE5CmBgYAoKIyMgR2V0dGluZyBzdGFydGVkCgojIyMgMS4gSW5zdGFsbCB0aGUgcGFja2FnZQoKYGBgc2gKbnBtIGluc3RhbGwgLS1zYXZlIG9hLWNsaWVudApgYGAKCiMjIyAyLiBJbXBvcnQgdGhlIHBhY2thZ2UKClRoaXMgcGFja2FnZSBpcyBpc29tb3JwaGljOiBpdCBjYW4gYmUgdXNlZCBib3RoIGFzIGFuIEVTTSBvciBhIENvbW1vbkpTCgpgYGBqcwovLyBvawppbXBvcnQgeyBjcmVhdGVDbGllbnQgfSBmcm9tICJvYS1jbGllbnQiOwovLyBhbHNvIG9rCmNvbnN0IHsgY3JlYXRlQ2xpZW50IH0gPSByZXF1aXJlKCJvYS1jbGllbnQiKTsKYGBgCgojIyMgMy4gSGF2ZSBzb21ld2hlcmUgeW91ciBPcGVuQVBJIHNwZWNzIGFzIGEgSlMgb2JqZWN0CgpZb3UgZG9uJ3QgbmVlZCB0byBhZGQgYW55dGhpbmcgY29tcGFyZWQgdG8gbm9ybWFsIHNwZWNzLCBleGNlcHQgZm9yIGFuIG9wdGlvbmFsIGAucGF0aHNbcGF0aF1bbWV0aG9kXVsneC10eXBlJ11gLCB0aGF0IGRlZmluZXMgdGhlIF9jYWxsZXJfLCBtb3JlIG9uIHRoZW0gYmVsb3cuIElmIHRoaXMga2V5IGlzIG9taXR0ZWQsIGl0cyB2YWx1ZSBkZWZhdWx0cyB0byB0aGUgcmVxdWVzdCB0eXBlIChlLmcuIGAiZ2V0ImAgb3IgYCJwb3N0ImApLgoKTm90ZSB0aGF0IGBvYS1jbGllbnRgIGRvZXMgbm90IHJlc29sdmUgc3BlY3MgZm9yIHlvdS4gSWYgeW91IGhhdmUgYCRyZWZzYCwgeW91IHNob3VsZCB1c2UgYSBwYWNrYWdlIGxpa2UgW2pzb24tc2NoZW1hLXJlZi1wYXJzZXJdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BhcGlkZXZ0b29scy9qc29uLXNjaGVtYS1yZWYtcGFyc2VyKSB0byByZXNvbHZlIHRoZW0uCgpgYGBqcwpjb25zdCBzcGVjcyA9IHsKICBvcGVuYXBpOiAiMy4wLjAiLAogIGluZm86IHsKICAgIC8qIC4uLiAqLwogIH0sCiAgcGF0aHM6IHsKICAgICIvdXNlcnMve3VzZXJJZH0iOiB7CiAgICAgIGdldDogewogICAgICAgICJ4LXR5cGUiOiAiYXV0aG9yaXplZEdldCIsIC8vIHdpbGwgdXNlIHRoZSAiYXV0aG9yaXplZEdldCIgY2FsbGVyCiAgICAgICAgcGFyYW1ldGVyczogWwogICAgICAgICAgewogICAgICAgICAgICBpbjogInBhdGgiLAogICAgICAgICAgICBuYW1lOiAidXNlcklkIiwKICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICAgIHNjaGVtYTogewogICAgICAgICAgICAgIHR5cGU6ICJpbnRlZ2VyIiwKICAgICAgICAgICAgfSwKICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICByZXNwb25zZXM6IHsKICAgICAgICAgIC8qIC4uLiAqLwogICAgICAgIH0sCiAgICAgIH0sCiAgICB9LAogICAgIi9zdGF0dXMiOiB7CiAgICAgIGdldDogewogICAgICAgIC8vIG5vIHgtdHlwZSAtPiB3aWxsIHVzZSB0aGUgImdldCIgY2FsbGVyCiAgICAgICAgcmVzcG9uc2VzOiB7CiAgICAgICAgICAvKiAuLi4gKi8KICAgICAgICB9LAogICAgICB9LAogICAgfSwKICB9LAp9OwpgYGAKCiMjIyA0LiBXcml0ZSB5b3VyIF9jYWxsZXJzXwoKVGhlc2UgYXJlIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIHJlcXVlc3RzIGF0IHRoZSBIVFRQIGxldmVsLgoKVGhleSBhcmUgbm90IGhhbmRsZWQgYnkgdGhpcyBwYWNrYWdlLCBiZWNhdXNlIHRoZXkgY2FuIGJlIHZlcnkgZGlmZmVyZW50IGZyb20gb25lIGNvZGViYXNlIHRvIGFub3RoZXI7IGJ1dCB1c3VhbGx5IHlvdSBkb24ndCBoYXZlIHRvIHdyaXRlIGEgbG90IG9mIHRoZW0uCgpgdXJsYCBpcyBhbiBbVVJMXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVVJMKSwgYGJvZHlgIGlzIGEgcGxhaW4gSlMgb2JqZWN0LgoKYGBganMKY29uc3QgY2FsbGVycyA9IHsKICBnZXQ6IGFzeW5jICh1cmwpID0+IHsKICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaCh1cmwpOwogICAgY29uc3QganNvbiA9IGF3YWl0IHJlc3AuanNvbigpOwogICAgcmV0dXJuIGpzb247CiAgfSwKICBhdXRob3JpemVkR2V0OiBhc3luYyAodXJsKSA9PiB7CiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTsKICAgIGhlYWRlcnMuYXBwZW5kKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vanNvbiIpOwogICAgaGVhZGVycy5hcHBlbmQoIkF1dGhvcml6YXRpb24iLCBgQmVhcmVyICR7bG9jYWxTdG9yYWdlLnRva2VufWApOwogICAgY29uc3QgcmVzcCA9IGF3YWl0IGZldGNoKHVybCwgeyBoZWFkZXJzIH0pOwogICAgY29uc3QganNvbiA9IGF3YWl0IHJlc3AuanNvbigpOwogICAgcmV0dXJuIGpzb247CiAgfSwKICBhdXRob3JpemVkUG9zdDogYXN5bmMgKHVybCwgYm9keSkgPT4gewogICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKCk7CiAgICBoZWFkZXJzLmFwcGVuZCgiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2pzb24iKTsKICAgIGhlYWRlcnMuYXBwZW5kKCJBdXRob3JpemF0aW9uIiwgYEJlYXJlciAke2xvY2FsU3RvcmFnZS50b2tlbn1gKTsKICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaCh1cmwsIHsKICAgICAgbWV0aG9kOiAiUE9TVCIsCiAgICAgIGhlYWRlcnMsCiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLAogICAgfSk7CiAgICBjb25zdCBqc29uID0gYXdhaXQgcmVzcC5qc29uKCk7CiAgICByZXR1cm4ganNvbjsKICB9LAp9OwpgYGAKCiMjIyA1LiBDcmVhdGUgeW91ciBjbGllbnQKCllvdSBkbyB0aGlzIG9uY2UgYW5kIGBjbGllbnRgIGNhbiBiZSB1c2VkIGluIHRoZSByZXN0IG9mIHlvdXIgY29kZSBhZnRlcndhcmQuCgpgb3JpZ2luYCBkZWZhdWx0cyB0byBgc3BlY3Muc2VydmVyc1swXS51cmxgLiBPcHRpb25hbCBpZiBpdCdzIGRlZmluZWQsIGVsc2UgcmVxdWlyZWQuCgpgdmFsaWRhdGlvbkxldmVsYCBpcyBvbmUgb2YgYCdvZmYnYCAoZGVmYXVsdCksIGAnd2FybidgLCBvciBgJ2Vycm9yJ2AuIEl0IGNoZWNrcyB0aGUgcGF0aCBwYXJhbXMsIHRoZSBxdWVyeSBwYXJhbXMsIGFuZCB0aGUgYm9keSBhZ2FpbnN0IHRoZSBzY2hlbWEgcHJlc2VudCBpbiB0aGUgc3BlY3MuCgpgYGBqcwpjb25zdCBjbGllbnQgPSBjcmVhdGVDbGllbnQoc3BlY3MsIGNhbGxlcnMsIHsKICBvcmlnaW46ICJodHRwczovL215LmFwaS5jb20iLAogIHZhbGlkYXRpb25MZXZlbDogImVycm9yIiwKfSk7CmBgYAoKIyMjIDYuIFVzZSB5b3VyIGNsaWVudAoKVGhlcmVhZnRlciwgYG9hLWNsaWVudGAgZG9lcyBhbGwgdGhlIHdvcmsgb2YgYnVpbGRpbmcgdGhlIGZ1bGwgVVJMIGFuZCB2YWxpZGF0aW5nIGlucHV0IGRhdGEgZm9yIHlvdSEKCkluIHRoaXMgZXhhbXBsZSwgdGhpcwoKYGBganMKY29uc3QgZGF0YSA9IGF3YWl0IGNsaWVudFsiL3VzZXJzL3t1c2VySWR9Il0uZ2V0KHsKICBwYXRoUGFyYW1zOiB7IHVzZXJJZDogMTIzIH0sCn0pOwpgYGAKCmlzIGVxdWl2YWxlbnQgdG8KCmBgYGpzCmNvbnN0IHVybCA9IG5ldyBVUkwoImh0dHBzOi8vbXkuYXBpLmNvbS91c2Vycy8xMjMiKTsKY29uc3QgZGF0YSA9IGF3YWl0IGNhbGxlcnMuYXV0aG9yaXplZEdldCh1cmwpOwpgYGAKCiMjIERpZmZlcmVuY2VzIHdpdGggb3BlbmFwaS1jbGllbnQKClRoZSBbb3BlbmFwaS1jbGllbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWtlc3RlYWQvb3BlbmFwaS1jbGllbnQpIHBhY2thZ2UgaXMgc2ltaWxhciBidXQgYWNjb21wbGlzaGVzIHRoaW5ncyBkaWZmZXJlbnRseS4KCmBvcGVuYXBpLWNsaWVudGAgaXMgYSAqKmNvZGUgZ2VuZXJhdGlvbioqIHBhY2thZ2UuIFlvdSB1c2UgaXQgYXMgYSBjb21tYW5kIGxpbmUgc28gdGhhdCBpdCBjb25zdW1lcyBPcGVuQVBJIHNwZWNzIGFuZCBvdXRwdXRzIGNvZGUgdGhhdCB3aWxsIGNhbGwgeW91ciBzZXJ2ZXIuIEl0IGlzIG5vdCBpZGVhbCBiZWNhdXNlIHlvdSBkb24ndCBvd24gYW5kIGNvbnRyb2wgYWxsIG9mIHlvdXIgY29kZSwgYW5kIGl0IGFkZHMgY29tcGxleGl0eS4KCmBvYS1jbGllbnRgIGlzIHNpbXBsZXIgLSBpdCBleHBvc2VzIGBjcmVhdGVDbGllbnRgLCBhICoqZmFjdG9yeSoqIHRoYXQgdGFrZSBzcGVjcyBhcyBpbnB1dCBhbmQgYnVpbGRzIHRoZSBjbGllbnQgYXQgcnVudGltZS4gSWYgeW91ciBBUEkgdXBkYXRlcywgeW91IGRvbid0IGhhdmUgdG8gd3JpdGUgb3IgZ2VuZXJhdGUgYSBzaW5nbGUgbGluZSBvZiBjb2RlLgoKYG9wZW5hcGktY2xpZW50YCBoYW5kbGVzIGFsbCB0aGUgSFRUUCBjYWxscyBhbmQgYXV0aGVudGljYXRpb24gZm9yIHlvdS4gVGhhdCBjYW4gc2VlbSBwb3dlcmZ1bCwgYnV0IGFjdHVhbGx5IHRoZSBzeXN0ZW0gaXMgX3ZlcnlfIHJpZ2lkLCBldmVuIGZvciBzbWFsbCBjdXN0b21pemF0aW9ucywgYW5kIGRvZXNuJ3QgY292ZXIgYWxsIGNhc2VzIHlvdSdsbCBmYWNlIGFsb25nIHRoZSB3YXkuCgpJbiBgb2EtY2xpZW50YCwgeW91IGZ1bGx5IG93biB5b3VyIGdlbmVyaWMgSFRUUCBjYWxsZXJzOiB5b3Ugd3JpdGUgdGhlbSB5b3Vyc2VsZiwgYnV0IHlvdSBwcm9iYWJseSB3b24ndCB3cml0ZSBtb3JlIHRoYW4gZml2ZSBvZiB0aGVtIGR1cmluZyB5b3VyIHdob2xlIHByb2plY3QgbGlmZXRpbWU6IHdobyBuZWVkcyBtb3JlIHRoYW4gZ2V0LCBwb3N0LCBhdXRob3JpemVkIGdldCwgYXV0aG9yaXplZCBwb3N0IGFuZCBmaWxlIHVwbG9hZD8KCmBgYAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBXcml0dGVuIHdpdGggPDMgYnkgTmlubyBGaWxpdSB8CnwgIENvbnRyaWJ1dGlvbnMgYXJlIHdlbGNvbWVkISAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgXCAgIF5fX14KICAgICAgICAgIFwgIChvbylcX19fX19fXwogICAgICAgICAgICAgKF9fKVwgICAgICAgKVwvXAogICAgICAgICAgICAgICAgIHx8LS0tLXcgfAogICAgICAgICAgICAgICAgIHx8ICAgICB8fApgYGAK readmeEtag: '"6f8355e6d3d524c4d07e934c70a40d077eac6bc1"' readmeLastModified: Fri, 29 Dec 2023 15:35:35 GMT repositoryId: 258327118 description: >- Flexible client helper for making and validating calls to OpenAPI backends. For Node and the browser. Runtime lib - no need for code generation! created: '2020-04-23T20:49:35Z' updated: '2025-08-27T12:23:06Z' language: TypeScript archived: false stars: 50 watchers: 3 forks: 3 owner: ninofiliu logo: https://avatars.githubusercontent.com/u/29477588?v=4 license: MIT repoEtag: '"1fee6f99d107b444c785a8fcb074f7eef90385b937c81d3f411b6c4da339f6b6"' repoLastModified: Wed, 27 Aug 2025 12:23:06 GMT foundInMaster: true id: 90d109eb23c36d0136638c20f8f43cd3 - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags name: Restish category: - Documentation - Testing language: - CLI - Go link: https://rest.sh/ repository: https://github.com/rest-sh/restish source_description: >- A CLI for REST-ish APIs with HTTP/2, built-in auth, content negotiation, caching, and more that understands and can discover OpenAPI descriptions. v3: true repositoryMetadata: base64Readme: >- IVtSZXN0aXNoIExvZ29dKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEwNjgyNi84MjEwOTkxOC1lYzViMjMwMC05NmVlLTExZWEtOWFmMC04NTE1MzI5ZDU5NjUucG5nKQoKWyFbV29ya3MgV2l0aCBSZXN0aXNoXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1dvcmtzJTIwV2l0aC1SZXN0aXNoLWZmNWY4NyldKGh0dHBzOi8vcmVzdC5zaC8pIFshW1VzZXIgR3VpZGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRG9jcy1HdWlkZS01ZmFmZDcpXShodHRwczovL3Jlc3Quc2gvIy9ndWlkZSkgWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0LXNoL3Jlc3Rpc2gvYWN0aW9ucy93b3JrZmxvd3MvY2kueWFtbC9iYWRnZS5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL2dpdGh1Yi5jb20vcmVzdC1zaC9yZXN0aXNoL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnlhbWwpIFshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9yZXN0LXNoL3Jlc3Rpc2gvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3Jlc3Qtc2gvcmVzdGlzaCkgWyFbRG9jc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9nb2RvYy1yZWZlcmVuY2UtNWZhZmQ3KV0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vcmVzdC1zaC9yZXN0aXNoP3RhYj1zdWJkaXJlY3RvcmllcykgWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL3Jlc3Qtc2gvcmVzdGlzaCldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9yZXN0LXNoL3Jlc3Rpc2gpCgpbUmVzdGlzaF0oaHR0cHM6Ly9yZXN0LnNoLykgaXMgYSBDTEkgZm9yIGludGVyYWN0aW5nIHdpdGggW1JFU1RdKGh0dHBzOi8vYXBpc3lvdXdvbnRoYXRlLmNvbS9ibG9nL3Jlc3QtYW5kLWh5cGVybWVkaWEtaW4tMjAxOSktaXNoIEhUVFAgQVBJcyB3aXRoIHNvbWUgbmljZSBmZWF0dXJlcyBidWlsdC1pbiDigJQgbGlrZSBhbHdheXMgaGF2aW5nIHRoZSBsYXRlc3QgQVBJIHJlc291cmNlcywgZmllbGRzLCBhbmQgb3BlcmF0aW9ucyBhdmFpbGFibGUgd2hlbiB0aGV5IGdvIGxpdmUgb24gdGhlIEFQSSB3aXRob3V0IG5lZWRpbmcgdG8gaW5zdGFsbCBvciB1cGRhdGUgYW55dGhpbmcuCkNoZWNrIG91dCBbaG93IFJlc3Rpc2ggY29tcGFyZXMgdG8gY1VSTCAmIEhUVFBpZV0oaHR0cHM6Ly9yZXN0LnNoLyMvY29tcGFyaXNvbikuCgpTZWUgdGhlIFt1c2VyIGd1aWRlXShodHRwczovL3Jlc3Quc2gvIy9ndWlkZSkgZm9yIGhvdyB0byBpbnN0YWxsIFJlc3Rpc2ggYW5kIGdldCBzdGFydGVkLgoKRmVhdHVyZXMgaW5jbHVkZToKCi0gSFRUUC8yIChbUkZDIDc1NDBdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NTQwKSkgd2l0aCBUTFMgYnkgX2RlZmF1bHRfIHdpdGggZmFsbGJhY2sgdG8gSFRUUC8xLjEKLSBHZW5lcmljIGhlYWQvZ2V0L3Bvc3QvcHV0L3BhdGNoL2RlbGV0ZSB2ZXJicyBsaWtlIGBjdXJsYCBvciBbSFRUUGllXShodHRwczovL2h0dHBpZS5vcmcvKQotIEdlbmVyYXRlZCBjb21tYW5kcyBmb3IgQ0xJIG9wZXJhdGlvbnMsIGUuZy4gYHJlc3Rpc2ggbXktYXBpIGxpc3QtdXNlcnNgCiAgLSBBdXRvbWF0aWNhbGx5IGRpc2NvdmVycyBBUEkgZGVzY3JpcHRpb25zCiAgICAtIFtSRkMgODYzMV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzg2MzEpIGBzZXJ2aWNlLWRlc2NgIGxpbmsgcmVsYXRpb24KICAgIC0gW1JGQyA1OTg4XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTk4OCNzZWN0aW9uLTYuMi4yKSBgZGVzY3JpYmVkYnlgIGxpbmsgcmVsYXRpb24KICAtIFN1cHBvcnRlZCBmb3JtYXRzCiAgICAtIE9wZW5BUEkgWzMuMF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjMubWQpIC8gWzMuMV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wLmh0bWwpIGFuZCBbSlNPTiBTY2hlbWFdKGh0dHBzOi8vanNvbi1zY2hlbWEub3JnLykKICAtIEF1dG9tYXRpYyBjb25maWd1cmF0aW9uIG9mIEFQSSBhdXRoIGlmIGFkdmVydGlzZWQgYnkgdGhlIEFQSQogIC0gU2hlbGwgY29tbWFuZCBjb21wbGV0aW9uIGZvciBCYXNoLCBGaXNoLCBac2gsIFBvd2Vyc2hlbGwKLSBBdXRvbWF0aWMgcGFnaW5hdGlvbiBvZiByZXNvdXJjZSBjb2xsZWN0aW9ucyB2aWEgW1JGQyA1OTg4XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTk4OCkgYHByZXZgIGFuZCBgbmV4dGAgaHlwZXJtZWRpYSBsaW5rcwotIEFQSSBlbmRwb2ludC1iYXNlZCBhdXRoIGJ1aWx0LWluIHdpdGggc3VwcG9ydCBmb3IgcHJvZmlsZXM6CiAgLSBIVFRQIEJhc2ljCiAgLSBBUEkga2V5IHZpYSBoZWFkZXIgb3IgcXVlcnkgcGFyYW0KICAtIE9BdXRoMiBjbGllbnQgY3JlZGVudGlhbHMgZmxvdyAobWFjaGluZS10by1tYWNoaW5lLCBbUkZDIDY3NDldKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NzQ5KSkKICAtIE9BdXRoMiBhdXRob3JpemF0aW9uIGNvZGUgKHdpdGggUEtDRSBbUkZDIDc2MzZdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NjM2KSkgZmxvdwogIC0gT24gdGhlIGZseSBhdXRob3JpemF0aW9uIHRocm91Z2ggZXh0ZXJuYWwgdG9vbHMgZm9yIGN1c3RvbSBBUEkgc2lnbmF0dXJlIG1lY2hhbmlzbXMKLSBDb250ZW50IG5lZ290aWF0aW9uLCBkZWNvZGluZyAmIHVubWFyc2hhbGxpbmcgYnVpbHQtaW46CiAgLSBKU09OIChbUkZDIDgyNTldKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MjU5KSwgPGh0dHBzOi8vd3d3Lmpzb24ub3JnLz4pCiAgLSBZQU1MICg8aHR0cHM6Ly95YW1sLm9yZy8+KQogIC0gQ0JPUiAoW1JGQyA3MDQ5XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzA0OSksIDxodHRwOi8vY2Jvci5pby8+KQogIC0gTWVzc2FnZVBhY2sgKDxodHRwczovL21zZ3BhY2sub3JnLz4pCiAgLSBBbWF6b24gSW9uICg8aHR0cDovL2Ftem4uZ2l0aHViLmlvL2lvbi1kb2NzLz4pCiAgLSBHemlwIChbUkZDIDE5NTJdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMxOTUyKSksIERlZmxhdGUgKFtSRkMgMTk1MV0oaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMxOTUxKSksIGFuZCBCcm90bGkgKFtSRkMgNzkzMl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc5MzIpKSBjb250ZW50IGVuY29kaW5nCi0gQXV0b21hdGljIHJldHJpZXMgd2l0aCBzdXBwb3J0IGZvciBbYFJldHJ5LUFmdGVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JldHJ5LUFmdGVyKSBhbmQgYFgtUmV0cnktSW5gIGhlYWRlcnMgd2hlbiBBUElzIGFyZSByYXRlLWxpbWl0ZWQuCi0gU3RhbmRhcmRpemVkIFtoeXBlcm1lZGlhXShodHRwczovL3NtYXJ0YmVhci5jb20vbGVhcm4vYXBpLWRlc2lnbi93aGF0LWlzLWh5cGVybWVkaWEvKSBwYXJzaW5nIGludG8gcXVlcnlhYmxlL2ZvbGxvd2FibGUgcmVzcG9uc2UgbGlua3M6CiAgLSBIVFRQIExpbmsgcmVsYXRpb24gaGVhZGVycyAoW1JGQyA1OTg4XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTk4OCNzZWN0aW9uLTYuMi4yKSkKICAtIFtIQUxdKGh0dHA6Ly9zdGF0ZWxlc3MuY28vaGFsX3NwZWNpZmljYXRpb24uaHRtbCkKICAtIFtTaXJlbl0oaHR0cHM6Ly9naXRodWIuY29tL2tldmluc3dpYmVyL3NpcmVuKQogIC0gW1RlcnJpZmljYWxseSBTaW1wbGUgSlNPTl0oaHR0cHM6Ly9naXRodWIuY29tL21wbmFsbHkvVGVycmlmaWNhbGx5LVNpbXBsZS1KU09OKQogIC0gW0pTT046QVBJXShodHRwczovL2pzb25hcGkub3JnLykKLSBMb2NhbCBjYWNoaW5nIHRoYXQgcmVzcGVjdHMgW1JGQyA3MjM0XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNCkgYENhY2hlLUNvbnRyb2xgIGFuZCBgRXhwaXJlc2AgaGVhZGVycwotIENMSSBbc2hvcnRoYW5kXShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9vcGVuYXBpLWNsaS1nZW5lcmF0b3IvdHJlZS9tYXN0ZXIvc2hvcnRoYW5kI2NsaS1zaG9ydGhhbmQtc3ludGF4KSBmb3Igc3RydWN0dXJlZCBkYXRhIGlucHV0IChlLmcuIGZvciBKU09OKQotIFtTaG9ydGhhbmQgcXVlcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL3Nob3J0aGFuZCNxdWVyeWluZykgcmVzcG9uc2UgZmlsdGVyaW5nICYgcHJvamVjdGlvbgotIENvbG9yaXplZCBwcmV0dGlmaWVkIHJlYWRhYmxlIG91dHB1dAotIEZhc3QgbmF0aXZlIHplcm8tZGVwZW5kZW5jeSBiaW5hcnkKCkFydGljbGVzOgoKLSBbQSBDTEkgZm9yIFJFU1QgQVBJc10oaHR0cHM6Ly9kZXYudG8vZGFuaWVsZ3RheWxvci9hLWNsaS1mb3ItcmVzdC1hcGlzLXBhcnQtMS0xMDRiKQotIFtNYXBwaW5nIE9wZW5BUEkgdG8gdGhlIENMSV0oaHR0cHM6Ly9kZXYudG8vZGFuaWVsZ3RheWxvci9tYXBwaW5nLW9wZW5hcGktdG8tdGhlLWNsaS0zN3BiKQoKVGhpcyBwcm9qZWN0IHN0YXJ0ZWQgbGlmZSBhcyBhIGZvcmsgb2YgW09wZW5BUEkgQ0xJIEdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGd0YXlsb3Ivb3BlbmFwaS1jbGktZ2VuZXJhdG9yKS4K readmeEtag: '"d8995b9baacf83a85ad17f3b566fc1f9a51b34aa"' readmeLastModified: Sun, 04 May 2025 17:37:51 GMT repositoryId: 264117985 description: >- Restish is a CLI for interacting with REST-ish HTTP APIs with some nice features built-in created: '2020-05-15T06:45:59Z' updated: '2026-02-05T19:58:42Z' language: Go archived: false stars: 1203 watchers: 6 forks: 89 owner: rest-sh logo: https://avatars.githubusercontent.com/u/207975437?v=4 license: MIT repoEtag: '"d43f8e270ec990014b5e9bfd6a9158d4196665956c813fa576959c85d77f2e4c"' repoLastModified: Thu, 05 Feb 2026 19:58:42 GMT foundInMaster: true id: 19ff073f2b77ceec34553a5d412e8ba6 v3_1: true oldLocations: - https://github.com/danielgtaylor/restish - source: - https://openapi.tools/ - openapi3 tags name: openapi-examples-validator category: - Description Validators - Data Validators - Parsers repository: https://github.com/codekie/openapi-examples-validator language: JavaScript source_description: Validates embedded JSON-examples in OpenAPI-specs v2: true v3: true repositoryMetadata: base64Readme: >- b3BlbmFwaS1leGFtcGxlcy12YWxpZGF0b3IKPT09PT09PT09PT09PT09PT09PT09PT09PT0KClZhbGlkYXRlcyBlbWJlZGRlZCBKU09OLWV4YW1wbGVzIGluIE9wZW5BUEktc3BlY3MgKHYyIGFuZCB2MyBhcmUgc3VwcG9ydGVkKQoKWyFbbnBtIHZlcnNpb25dKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9qcy9vcGVuYXBpLWV4YW1wbGVzLXZhbGlkYXRvci5zdmcpXShodHRwczovL2JhZGdlLmZ1cnkuaW8vanMvb3BlbmFwaS1leGFtcGxlcy12YWxpZGF0b3IpClshW1N0YW5kYXJkIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcmVsZWFzZS1zdGFuZGFyZCUyMHZlcnNpb24tYnJpZ2h0Z3JlZW4uc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2NvbnZlbnRpb25hbC1jaGFuZ2Vsb2cvc3RhbmRhcmQtdmVyc2lvbikKWyFbUnVuIHRlc3RzXShodHRwczovL2dpdGh1Yi5jb20vY29kZWtpZS9vcGVuYXBpLWV4YW1wbGVzLXZhbGlkYXRvci9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LWFuZC1kZXBsb3ktZG9ja2VyLnltbC9iYWRnZS5zdmc/cXVlcnk9YnJhbmNoJTNBbWFpbildKGh0dHBzOi8vZ2l0aHViLmNvbS9jb2Rla2llL29wZW5hcGktZXhhbXBsZXMtdmFsaWRhdG9yL2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3QtYW5kLWRlcGxveS1kb2NrZXIueW1sP3F1ZXJ5PWJyYW5jaCUzQW1haW4pClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvZ2l0aHViL2NvZGVraWUvb3BlbmFwaS1leGFtcGxlcy12YWxpZGF0b3IvYmFkZ2Uuc3ZnP2JyYW5jaD1tYWluKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL2NvZGVraWUvb3BlbmFwaS1leGFtcGxlcy12YWxpZGF0b3I/YnJhbmNoPW1haW4pClshW011dGF0aW9uIHRlc3RpbmcgYmFkZ2VdKGh0dHBzOi8vYmFkZ2Uuc3RyeWtlci1tdXRhdG9yLmlvL2dpdGh1Yi5jb20vY29kZWtpZS9vcGVuYXBpLWV4YW1wbGVzLXZhbGlkYXRvci9tYWluKV0oaHR0cHM6Ly9zdHJ5a2VyLW11dGF0b3IuZ2l0aHViLmlvKQpbIVtNYWludGFpbmFiaWxpdHldKGh0dHBzOi8vYXBpLmNvZGVjbGltYXRlLmNvbS92MS9iYWRnZXMvNTA5NGY2YWM3NzU0ZTVhMThiMWIvbWFpbnRhaW5hYmlsaXR5KV0oaHR0cHM6Ly9jb2RlY2xpbWF0ZS5jb20vZ2l0aHViL2NvZGVraWUvb3BlbmFwaS1leGFtcGxlcy12YWxpZGF0b3IvbWFpbnRhaW5hYmlsaXR5KQpbIVtLbm93biBWdWxuZXJhYmlsaXRpZXNdKGh0dHBzOi8vc255ay5pby90ZXN0L2dpdGh1Yi9jb2Rla2llL29wZW5hcGktZXhhbXBsZXMtdmFsaWRhdG9yL2JhZGdlLnN2ZyldKGh0dHBzOi8vc255ay5pby90ZXN0L2dpdGh1Yi9jb2Rla2llL29wZW5hcGktZXhhbXBsZXMtdmFsaWRhdG9yKQpbIVtEb2NrZXIgSHViXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2RvY2tlci1yZWFkeS1ibHVlLnN2ZyldKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9jb2Rla2llL29wZW5hcGktZXhhbXBsZXMtdmFsaWRhdG9yKQoKUHJlcmVxdWlzaXRlcwotLS0tLS0tLS0tLS0KCi0gW05vZGUuanNdKGh0dHBzOi8vbm9kZWpzLm9yZy8pID49MTguCgpJbnN0YWxsCi0tLS0tLS0KCkluc3RhbGwgdXNpbmcgW25wbV0oaHR0cHM6Ly9kb2NzLm5wbWpzLmNvbS9nZXR0aW5nLXN0YXJ0ZWQvd2hhdC1pcy1ucG0pOgoKICAgIG5wbSBpbnN0YWxsIC1nIG9wZW5hcGktZXhhbXBsZXMtdmFsaWRhdG9yCgpVc2FnZQotLS0tLQoKYGBgCm9wZW5hcGktZXhhbXBsZXMtdmFsaWRhdG9yIFtvcHRpb25zXSA8ZmlsZXBhdGg+CgpWYWxpZGF0ZSBlbWJlZGRlZCBleGFtcGxlcyBpbiBPcGVuQVBJLXNwZWNzIChKU09OIGFuZCBZQU1MIHN1cHBvcnRlZCkuCiAgVG8gdmFsaWRhdGUgZXh0ZXJuYWwgZXhhbXBsZXMsIHVzZSB0aGUgYC1zYCBhbmQgYC1lYCBvcHRpb24uCiAgVG8gcGFzcyBhIG1hcHBpbmctZmlsZSwgdG8gdmFsaWRhdGUgbXVsdGlwbGUgZXh0ZXJuYWwgZXhhbXBsZXMsIHVzZSB0aGUgYC1tYCBvcHRpb24uCgpPcHRpb25zOgogIC1WLCAtLXZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgdGhlIHZlcnNpb24gbnVtYmVyCiAgLXMsIC0tc2NoZW1hLWpzb25wYXRoIDxzY2hlbWEtanNvbnBhdGg+ICAgIFBhdGggdG8gT3BlbkFQSS1zY2hlbWEsIHRvIHZhbGlkYXRlIHRoZSBleGFtcGxlIGZpbGUgYWdhaW5zdAogIC1lLCAtLWV4YW1wbGUtZmlsZXBhdGggPGV4YW1wbGUtZmlsZXBhdGg+ICBmaWxlIHBhdGggdG8gZXhhbXBsZSBmaWxlLCB0byBiZSB2YWxpZGF0ZWQKICAtbSwgLS1tYXBwaW5nLWZpbGVwYXRoIDxtYXBwaW5nLWZpbGVwYXRoPiAgZmlsZSBwYXRoIHRvIG1hcCwgY29udGFpbmluZyBzY2hlbWEtcGF0aHMgYXMga2V5IGFuZCB0aGUgZmlsZS1wYXRoKHMpIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGVzIGFzIHZhbHVlLiBJZiB3aWxkY2FyZHMgYXJlIHVzZWQsIHRoZSBwYXJhbWV0ZXIgaGFzIHRvIGJlIHB1dCBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZXMuCiAgLWMsIC0tY3dkLXRvLW1hcHBpbmctZmlsZSAgICAgICAgICAgICAgICAgIGNoYW5nZXMgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgbWFwcGluZy1maWxlLCBiZWZvcmUgcmVzb2x2aW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlJ3MgcGF0aHMuIFVzZSB0aGlzIG9wdGlvbiwgaWYgeW91ciBtYXBwaW5nLWZpbGVzIHVzZSByZWxhdGl2ZSBwYXRocwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGV4YW1wbGVzCiAgLW4sIC0tbm8tYWRkaXRpb25hbC1wcm9wZXJ0aWVzICAgICAgICAgICAgIGRvbid0IGFsbG93IHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IGRlc2NyaWJlZCBpbiB0aGUgc2NoZW1hCiAgLXIsIC0tYWxsLXByb3BlcnRpZXMtcmVxdWlyZWQgICAgICAgICAgICAgIG1ha2UgYWxsIHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzY2hlbWEgcmVxdWlyZWQKICAtbywgLS1pZ25vcmUtZm9ybWF0cyA8aWdub3JlZC1mb3JtYXRzLi4uPiAgRGF0YXR5cGUgZm9ybWF0cyB0byBpZ25vcmUgKHRvIHByZXZlbnQgInVua25vd24gZm9ybWF0IiBlcnJvcnMuKQogIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgdXNhZ2UgaW5mb3JtYXRpb24KYGBgYAoKVGhlIHZhbGlkYXRvciB3aWxsIHNlYXJjaCB0aGUgT3BlbkFQSS1zcGVjIGZvciByZXNwb25zZS1leGFtcGxlcyBhbmQgdmFsaWRhdGUgdGhlbSBhZ2FpbnN0IGl0cyBzY2hlbWEuCgpJZiBhbiBleHRlcm5hbCBleGFtcGxlIGhhcyB0byBiZSB2ZXJpZmllZCwgdGhlIGAtc2AgYW5kIGAtZWAgb3B0aW9uIGhhcyB0byBiZSB1c2VkLgoKRm9yIGV4YW1wbGU6CgpgYGAKJCBvcGVuYXBpLWV4YW1wbGVzLXZhbGlkYXRvciAtcyAkLnBhdGhzLi8uZ2V0LnJlc3BvbnNlcy4yMDAuc2NoZW1hIC1lIGV4YW1wbGUuanNvbiBvcGVuYXBpLXNwZWMuanNvbgpgYGAKClRvIHZhbGlkYXRlIG11bHRpcGxlIGV4dGVybmFsIGV4YW1wbGVzLCBwYXNzIGEgbWFwcGluZyBmaWxlIHdpdGggYSBzaW1pbGFyIHN0cnVjdHVyZSBhbG9uZyB3aXRoIHRoZSBgLW1gIG9wdGlvbjoKCmBgYGpzb24KewogICIkLnBhdGhzLi8uZ2V0LnJlc3BvbnNlcy4yMDAuc2NoZW1hIjogWwogICAgInRlc3QvZGF0YS9leHRlcm5hbC1leGFtcGxlcy12YWxpZC1leGFtcGxlMS5qc29uIiwKICAgICJ0ZXN0L2RhdGEvZXh0ZXJuYWwtZXhhbXBsZXMtdmFsaWQtZXhhbXBsZTIuanNvbiIsCiAgICAidGVzdC9kYXRhL2V4dGVybmFsLWV4YW1wbGVzLWludmFsaWQtdHlwZS5qc29uIgogIF0sCiAgIiQucGF0aHMuLy5nZXQucmVzcG9uc2VzLjMwMC5zY2hlbWEiOiAidGVzdC9kYXRhL2V4dGVybmFsLWV4YW1wbGVzLWludmFsaWQtbWlzc2luZy1saW5rLmpzb24iLAogICIkLnBhdGhzLi8ucG9zdC5wYXJhbWV0ZXJzWz8oQC5pbj09PSJib2R5IildLnNjaGVtYSI6ICJ0ZXN0L2RhdGEvdjIvcG9zdC1yZXF1ZXN0LyouanNvbiIKfQpgYGAKSXQgaXMgcG9zc2libGUgdG8gdXNlIHdpbGRjYXJkcyBpbiB0aGUgY29tbWFuZCBsaW5lIHRvIHNlbGVjdCBtdWx0aXBsZSBtYXBwaW5nIGZpbGVzLCBhbmQgaXQgaXMgcG9zc2libGUgdG8gdXNlIHdpbGRjYXJkcyBpbnNpZGUgdGhlIG1hcHBpbmcgZmlsZSB0byBzZWxlY3QgbXVsdGlwbGUgZXhhbXBsZXMuCgpFcnJvcnMgd2lsbCBiZSB3cml0dGVuIHRvIGBzdGRlcnJgLgoKU2FtcGxlIG91dHB1dCBvZiB2YWxpZGF0aW9uIGVycm9yczoKCmBgYGpzb24KWwogICAgewogICAgICAgICJrZXl3b3JkIjogInR5cGUiLAogICAgICAgICJpbnN0YW5jZVBhdGgiOiAiL3ZlcnNpb25zLzAvaWQiLAogICAgICAgICJzY2hlbWFQYXRoIjogIiMvcHJvcGVydGllcy92ZXJzaW9ucy9pdGVtcy9wcm9wZXJ0aWVzL2lkL3R5cGUiLAogICAgICAgICJwYXJhbXMiOiB7CiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICB9LAogICAgICAgICJtZXNzYWdlIjogIm11c3QgYmUgc3RyaW5nIiwKICAgICAgICAiZXhhbXBsZVBhdGgiOiAiL34xL2dldC9yZXNwb25zZXMvMjAwL2V4YW1wbGVzL2FwcGxpY2F0aW9ufjFqc29uIgogICAgfQpdCmBgYAoKRG9ja2VyCi0tLS0tLQoKRXhhbXBsZSB1c2FnZToKCmBgYHNoZWxsCiQgZG9ja2VyIHJ1biAtLXJtIC1pIFwKICAgIC0tdXNlcj0kKGlkIC11KSBcCiAgICAtdiAke1BXRH06L2RhdGEgXAogICAgY29kZWtpZS9vcGVuYXBpLWV4YW1wbGVzLXZhbGlkYXRvcjpsYXRlc3QgXAogICAgL2RhdGEvdGVzdC9kYXRhL3YzL3NpbXBsZS1hcGktd2l0aC1leGFtcGxlcy13aXRoLXJlZnMtaW52YWxpZC55bWwKYGBgCgpDYXZlYXQKLS0tLS0tCgotIFRoZSBmb3JtYXRzIGBpbnQzMmAsIGBmbG9hdGAgYW5kIGBkb3VibGVgIGFyZSBzdXBwb3J0ZWQgZm9yIHRoZSB0eXBlIGBudW1iZXJgLiBUaGUgZm9ybWF0IGBpbnQ2NGAgaXMgb25seSBhdmFpbGFibGUKICBmb3IgdGhlIHR5cGUgYHN0cmluZ2AsIHRob3VnaCAoZHVlIHRvIHRoZSBwcmVjaXNpb24tbGltaXRhdGlvbnMgb2YgSmF2YXNjcmlwdCkuCi0gVGhlIG9wdGlvbnMgYC0tbm8tYWRkaXRpb25hbC1wcm9wZXJ0aWVzYCBhbmQgYC0tYWxsLXByb3BlcnRpZXMtcmVxdWlyZWRgIGFyZSBub3QgY29tcGF0aWJsZSB3aXRoIFtzdWItc2NoZW1hcyBjb21iaW5lciBrZXl3b3JkXShodHRwczovL2pzb24tc2NoZW1hLm9yZy91bmRlcnN0YW5kaW5nLWpzb24tc2NoZW1hL3JlZmVyZW5jZS9jb21iaW5pbmcuaHRtbCkuIEEgd2FybmluZyB3aWxsIGJlIGxvZ2dlZCBpZiBvbmUgbW9kZWwgaXMgc2tpcHBlZCBiZWNhdXNlIGl0IGNvbnRhaW5zIGEgY29tYmluZXIga2V5d29yZC4KClRlc3QKLS0tLQoKVG8gcnVuIHRoZSB0ZXN0cywgZXhlY3V0ZQoKICAgIG5wbSB0ZXN0CgpvciB0byBjaGVjayB0aGUgY292ZXJhZ2UKCiAgICBucG0gcnVuIGNvdmVyYWdlCg== readmeEtag: '"38cd5254578e2dff6458749ef1bbd301ec3c85c2"' readmeLastModified: Wed, 20 Nov 2024 12:08:41 GMT repositoryId: 78840041 description: Validates embedded examples in OpenAPI-files created: '2017-01-13T10:34:47Z' updated: '2025-12-25T09:37:02Z' language: JavaScript archived: false stars: 61 watchers: 2 forks: 14 owner: codekie logo: https://avatars.githubusercontent.com/u/1512840?v=4 license: MIT repoEtag: '"955c7bf3c1b975a7328d5c9b39257ab7a46d352c84c0208f17738408b26eebf5"' repoLastModified: Thu, 25 Dec 2025 09:37:02 GMT foundInMaster: true id: 301e3f380f248daf345a88c8971d2a71 - source: - https://openapi.tools/ - openapi3 tags name: openapi-to-postman category: - Converters - Parsers repository: https://github.com/postmanlabs/openapi-to-postman language: JavaScript source_description: Convert OpenAPI and Swagger specs to the Postman Collection (v2) format v2: true v3: true repositoryMetadata: base64Readme: >- CjxpbWcgc3JjPSJodHRwczovL3ZveWFnZXIucG9zdG1hbi5jb20vbG9nby9wb3N0bWFuLWxvZ28tb3JhbmdlLnN2ZyIgd2lkdGg9IjMyMCIgYWx0PSJUaGUgUG9zdG1hbiBMb2dvIj4KCipTdXBlcmNoYXJnZSB5b3VyIEFQSSB3b3JrZmxvdy4qCipNb2Rlcm4gc29mdHdhcmUgaXMgYnVpbHQgb24gQVBJcy4gUG9zdG1hbiBoZWxwcyB5b3UgZGV2ZWxvcCBBUElzIGZhc3Rlci4qCgojIE9wZW5BUEkgMy4wLCAzLjEgYW5kIFN3YWdnZXIgMi4wIHRvIFBvc3RtYW4gQ29sbGVjdGlvbgoKIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9wb3N0bWFubGFicy9vcGVuYXBpLXRvLXBvc3RtYW4vYWN0aW9ucy93b3JrZmxvd3MvaW50ZWdyYXRpb24ueW1sL2JhZGdlLnN2ZykKCjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktdG8tcG9zdG1hbnYyIiBhbHQ9IkxhdGVzdCBTdGFibGUgVmVyc2lvbiI+IVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3Yvb3BlbmFwaS10by1wb3N0bWFudjIuc3ZnKTwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb3BlbmFwaS10by1wb3N0bWFudjIiIGFsdD0iVG90YWwgRG93bmxvYWRzIj4hW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZHcvb3BlbmFwaS10by1wb3N0bWFudjIuc3ZnKTwvYT4KCiMjIyMgQ29udGVudHMKCjEuIFtHZXR0aW5nIFN0YXJ0ZWRdKCNnZXR0aW5nLXN0YXJ0ZWQpCjIuIFtDb21tYW5kIExpbmUgSW50ZXJmYWNlXSgjY29tbWFuZC1saW5lLWludGVyZmFjZSkKICAgIDEuIFtPcHRpb25zXSgjb3B0aW9ucykKICAgIDIuIFtVc2FnZV0oI3VzYWdlKQogICAgMy4gW1N5bmNpbmcgQ29sbGVjdGlvbnNdKCNzeW5jaW5nLWNvbGxlY3Rpb25zKQozLiBbVXNpbmcgdGhlIGNvbnZlcnRlciBhcyBhIE5vZGVKUyBtb2R1bGVdKCN1c2luZy10aGUtY29udmVydGVyLWFzLWEtbm9kZWpzLW1vZHVsZSkKICAgIDEuIFtDb252ZXJ0IEZ1bmN0aW9uXSgjY29udmVydCkKICAgIDIuIFtTeW5jIENvbGxlY3Rpb24gRnVuY3Rpb25dKCNzeW5jLWNvbGxlY3Rpb24pCiAgICAzLiBbT3B0aW9uc10oI29wdGlvbnMpCiAgICA0LiBbQ29udmVyc2lvblJlc3VsdF0oI2NvbnZlcnNpb25yZXN1bHQpCiAgICA1LiBbU2FtcGxlIHVzYWdlXSgjc2FtcGxlLXVzYWdlKQogICAgNi4gW1ZhbGlkYXRlIGZ1bmN0aW9uXSgjdmFsaWRhdGUtZnVuY3Rpb24pCjQuIFtDb252ZXJzaW9uIFNjaGVtYV0oI2NvbnZlcnNpb24tc2NoZW1hKQoKLS0tCgotLS0KCiMjIyDwn5qAIFdlIG5vdyBhbHNvIHN1cHBvcnQgT3BlbkFQSSAzLjEgYW5kIFN3YWdnZXIgMi4wIGFsb25nIHdpdGggT3BlbkFQSSAzLjAuCi0tLQotLS0KCjxoMiBpZD0iZ2V0dGluZy1zdGFydGVkIj7wn5KtIEdldHRpbmcgU3RhcnRlZDwvaDI+CgpUbyB1c2UgdGhlIGNvbnZlcnRlciBhcyBhIE5vZGUgbW9kdWxlLCB5b3UgbmVlZCB0byBoYXZlIGEgY29weSBvZiB0aGUgTm9kZUpTIHJ1bnRpbWUuIFRoZSBlYXNpZXN0IHdheSB0byBkbyB0aGlzIGlzIHRocm91Z2ggbnBtLiBJZiB5b3UgaGF2ZSBOb2RlSlMgaW5zdGFsbGVkIHlvdSBoYXZlIG5wbSBpbnN0YWxsZWQgYXMgd2VsbC4KCmBgYHRlcm1pbmFsCiQgbnBtIGluc3RhbGwgb3BlbmFwaS10by1wb3N0bWFudjIKYGBgCgpJZiB5b3Ugd2FudCB0byB1c2UgdGhlIGNvbnZlcnRlciBpbiB0aGUgQ0xJLCBpbnN0YWxsIGl0IGdsb2JhbGx5IHdpdGggTlBNOgoKYGBgdGVybWluYWwKJCBucG0gaSAtZyBvcGVuYXBpLXRvLXBvc3RtYW52MgpgYGAKCgo8aDIgaWQ9ImNvbW1hbmQtbGluZS1pbnRlcmZhY2UiPvCfk5YgQ29tbWFuZCBMaW5lIEludGVyZmFjZTwvaDI+CgpUaGUgY29udmVydGVyIGNhbiBiZSB1c2VkIGFzIGEgQ0xJIHRvb2wgYXMgd2VsbC4gVGhlIGZvbGxvd2luZyBbY29tbWFuZCBsaW5lIG9wdGlvbnNdKCNvcHRpb25zKSBhcmUgYXZhaWxhYmxlLgoKYG9wZW5hcGkycG9zdG1hbnYyIFtvcHRpb25zXWAKCiMjIyBPcHRpb25zCgotIGAtcyA8c291cmNlPmAsIGAtLXNwZWMgPHNvdXJjZT5gCiAgVXNlZCB0byBzcGVjaWZ5IHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gKGZpbGUgcGF0aCkgd2hpY2ggaXMgdG8gYmUgY29udmVydGVkCgotIGAtbyA8ZGVzdGluYXRpb24+YCwgYC0tb3V0cHV0IDxkZXN0aW5hdGlvbj5gCiAgVXNlZCB0byBzcGVjaWZ5IHRoZSBkZXN0aW5hdGlvbiBmaWxlIGluIHdoaWNoIHRoZSBjb2xsZWN0aW9uIGlzIHRvIGJlIHdyaXR0ZW4KCi0gYC1wYCwgYC0tcHJldHR5YAogIFVzZWQgdG8gcHJldHR5IHByaW50IHRoZSBjb2xsZWN0aW9uIG9iamVjdCB3aGlsZSB3cml0aW5nIHRvIGEgZmlsZQoKLSBgLWlgLCBgLS1pbnRlcmZhY2UtdmVyc2lvbmAKICBTcGVjaWZpZXMgdGhlIGludGVyZmFjZSB2ZXJzaW9uIG9mIHRoZSBjb252ZXJ0ZXIgdG8gYmUgdXNlZC4gVmFsdWUgY2FuIGJlICd2Micgb3IgJ3YxJy4gRGVmYXVsdCBpcyAndjInLgoKLSBgLU9gLCBgLS1vcHRpb25zYAogIFVzZWQgdG8gc3VwcGx5IG9wdGlvbnMgdG8gdGhlIGNvbnZlcnRlciwgZm9yIGNvbXBsZXRlIG9wdGlvbnMgZGV0YWlscyBzZWUgW2hlcmVdKC9PUFRJT05TLm1kKQoKLSBgLWNgLCBgLS1vcHRpb25zLWNvbmZpZ2AKICBVc2VkIHRvIHN1cHBseSBvcHRpb25zIHRvIHRoZSBjb252ZXJ0ZXIgdGhyb3VnaCBjb25maWcgZmlsZSwgZm9yIGNvbXBsZXRlIG9wdGlvbnMgZGV0YWlscyBzZWUgW2hlcmVdKC9PUFRJT05TLm1kKQoKLSBgLXRgLCBgLS10ZXN0YAogIFVzZWQgdG8gdGVzdCB0aGUgY29sbGVjdGlvbiB3aXRoIGFuIGluLWJ1aWx0IHNhbXBsZSBzcGVjaWZpY2F0aW9uCgotIGAtdmAsIGAtLXZlcnNpb25gCiAgU3BlY2lmaWVzIHRoZSB2ZXJzaW9uIG9mIHRoZSBjb252ZXJ0ZXIKCi0gYC1oYCwgYC0taGVscGAKICBTcGVjaWZpZXMgYWxsIHRoZSBvcHRpb25zIGFsb25nIHdpdGggYSBmZXcgdXNhZ2UgZXhhbXBsZXMgb24gdGhlIHRlcm1pbmFsCgotIGAtLXN5bmMgPGNvbGxlY3Rpb25GaWxlPmAKICBTeW5jIHNwZWMgY2hhbmdlcyB3aXRoIGFuIGV4aXN0aW5nIFBvc3RtYW4gQ29sbGVjdGlvbiBmaWxlCgotIGAtLXN5bmMtb3B0aW9ucyA8c3luY09wdGlvbnM+YAogIENvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHN5bmMgb3B0aW9ucyAoZS5nLiwgYHN5bmNFeGFtcGxlcz10cnVlYCkKCi0gYC0tc3luYy1vcHRpb25zLWNvbmZpZyA8c3luY09wdGlvbnNDb25maWc+YAogIEpTT04gZmlsZSBjb250YWluaW5nIHN5bmMgb3B0aW9ucwoKCiMjIyAgVXNhZ2UKCi0gVGFrZXMgYSBzcGVjaWZpY2F0aW9uIChzcGVjLnlhbWwpIGFzIGFuIGlucHV0IGFuZCB3cml0ZXMgdG8gYSBmaWxlIChjb2xsZWN0aW9uLmpzb24pIHdpdGggcHJldHR5IHByaW50aW5nIGFuZCB1c2luZyBwcm92aWRlZCBvcHRpb25zCmBgYHRlcm1pbmFsCiQgb3BlbmFwaTJwb3N0bWFudjIgLXMgc3BlYy55YW1sIC1vIGNvbGxlY3Rpb24uanNvbiAtcCAtTyBmb2xkZXJTdHJhdGVneT1UYWdzLGluY2x1ZGVBdXRoSW5mb0luRXhhbXBsZT1mYWxzZQpgYGAKCi0gVGFrZXMgYSBzcGVjaWZpY2F0aW9uIChzcGVjLnlhbWwpIGFzIGFuIGlucHV0IGFuZCB3cml0ZXMgdG8gYSBmaWxlIChjb2xsZWN0aW9uLmpzb24pIHdpdGggcHJldHR5IHByaW50aW5nIGFuZCB1c2luZyBwcm92aWRlZCBvcHRpb25zIHZpYSBjb25maWcgZmlsZQpgYGB0ZXJtaW5hbAokIG9wZW5hcGkycG9zdG1hbnYyIC1zIHNwZWMueWFtbCAtbyBjb2xsZWN0aW9uLmpzb24gLXAgIC1jIC4vZXhhbXBsZXMvY2xpLW9wdGlvbnMtY29uZmlnLmpzb24KYGBgCgotIFRha2VzIGEgc3BlY2lmaWNhdGlvbiAoc3BlYy55YW1sKSBhcyBhbiBpbnB1dCBhbmQgd3JpdGVzIHRvIGEgZmlsZSAoY29sbGVjdGlvbi5qc29uKSB3aXRoIHByZXR0eSBwcmludGluZyBhbmQgdXNpbmcgcHJvdmlkZWQgb3B0aW9ucyAoQWxzbyBhdm9pZHMgYW55IGAiPEVycm9yOiBUb28gbWFueSBsZXZlbHMgb2YgbmVzdGluZyB0byBmYWtlIHRoaXMgc2NoZW1hPiJgIGtpbmQgb2YgZXJyb3JzIHByZXNlbnQgaW4gY29udmVydGVkIGNvbGxlY3Rpb24pCmBgYHRlcm1pbmFsCiQgb3BlbmFwaTJwb3N0bWFudjIgLXMgc3BlYy55YW1sIC1vIGNvbGxlY3Rpb24uanNvbiAtcCAtTyBmb2xkZXJTdHJhdGVneT1UYWdzLHJlcXVlc3RQYXJhbWV0ZXJzUmVzb2x1dGlvbj1FeGFtcGxlLG9wdGltaXplQ29udmVyc2lvbj1mYWxzZSxzdGFja0xpbWl0PTUwCmBgYAoKLSBUZXN0aW5nIHRoZSBjb252ZXJ0ZXIKYGBgdGVybWluYWwKJCBvcGVuYXBpMnBvc3RtYW52MiAtLXRlc3QKYGBgCgojIyMgU3luY2luZyBDb2xsZWN0aW9ucwoKVGhlIHN5bmMgZnVuY3Rpb25hbGl0eSBhbGxvd3MgeW91IHRvIHVwZGF0ZSBhbiBleGlzdGluZyBQb3N0bWFuIGNvbGxlY3Rpb24gd2l0aCBjaGFuZ2VzIGZyb20geW91ciBPcGVuQVBJIHNwZWNpZmljYXRpb24uCgojIyMjIEJhc2ljIFN5bmMKCmBgYHRlcm1pbmFsCiQgb3BlbmFwaTJwb3N0bWFudjIgLXMgc3BlYy55YW1sIC0tc3luYyBjb2xsZWN0aW9uLmpzb24gLW8gc3luY2VkLWNvbGxlY3Rpb24uanNvbgpgYGAKCiMjIyMgU3luYyB3aXRoIE9wdGlvbnMKCmBgYHRlcm1pbmFsCiQgb3BlbmFwaTJwb3N0bWFudjIgLXMgc3BlYy55YW1sIC0tc3luYyBjb2xsZWN0aW9uLmpzb24gLS1zeW5jLW9wdGlvbnMgc3luY0V4YW1wbGVzPXRydWUgLW8gc3luY2VkLWNvbGxlY3Rpb24uanNvbgpgYGAKCiMjIyMgU3luYyB3aXRoIENvbmZpZyBGaWxlCgpgYGB0ZXJtaW5hbAokIG9wZW5hcGkycG9zdG1hbnYyIC1zIHNwZWMueWFtbCAtLXN5bmMgY29sbGVjdGlvbi5qc29uIC0tc3luYy1vcHRpb25zLWNvbmZpZyBzeW5jLW9wdGlvbnMuanNvbiAtbyBzeW5jZWQtY29sbGVjdGlvbi5qc29uCmBgYAoKKipzeW5jLW9wdGlvbnMuanNvbjoqKgpgYGBqc29uCnsKICAic3luY0V4YW1wbGVzIjogdHJ1ZQp9CmBgYAoKRm9yIGEgY29tcGxldGUgbGlzdCBvZiBzeW5jIG9wdGlvbnMgYW5kIHRoZWlyIHVzYWdlLCBzZWUgW1NZTkNfT1BUSU9OUy5tZF0oL1NZTkNfT1BUSU9OUy5tZCkKCgo8aDIgaWQ9InVzaW5nLXRoZS1jb252ZXJ0ZXItYXMtYS1ub2RlanMtbW9kdWxlIj7wn5ugIFVzaW5nIHRoZSBjb252ZXJ0ZXIgYXMgYSBOb2RlSlMgbW9kdWxlPC9oMj4KCkluIG9yZGVyIHRvIHVzZSB0aGUgY29udmVydCBpbiB5b3VyIG5vZGUgYXBwbGljYXRpb24sIHlvdSBuZWVkIHRvIGltcG9ydCB0aGUgcGFja2FnZSB1c2luZyBgcmVxdWlyZWAuCgpgYGBqYXZhc2NyaXB0CnZhciBDb252ZXJ0ZXIgPSByZXF1aXJlKCdvcGVuYXBpLXRvLXBvc3RtYW52MicpCmBgYAoKVGhlIGNvbnZlcnRlciBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKCiMjIyBDb252ZXJ0CgpUaGUgY29udmVydCBmdW5jdGlvbiB0YWtlcyBpbiB5b3VyIE9wZW5BUEkgMy4wLCAzLjEgYW5kIFN3YWdnZXIgMi4wIHNwZWNpZmljYXRpb24gKFlBTUwgLyBKU09OKSBhbmQgY29udmVydHMgaXQgdG8gYSBQb3N0bWFuIGNvbGxlY3Rpb24uCgpTaWduYXR1cmU6IGBjb252ZXJ0IChkYXRhLCBvcHRpb25zLCBjYWxsYmFjayk7YAoKKipkYXRhOioqCgpgYGBqYXZhc2NyaXB0CnsgdHlwZTogJ2ZpbGUnLCBkYXRhOiAnZmlsZXBhdGgnIH0KT1IKeyB0eXBlOiAnc3RyaW5nJywgZGF0YTogJzxlbnRpcmUgT3BlbkFQSSBzdHJpbmcgLSBKU09OIG9yIFlBTUw+JyB9Ck9SCnsgdHlwZTogJ2pzb24nLCBkYXRhOiBPcGVuQVBJLUpTLW9iamVjdCB9CmBgYAoKKipvcHRpb25zOioqCmBgYGphdmFzY3JpcHQKewogIHNjaGVtYUZha2VyOiB0cnVlLAogIHJlcXVlc3ROYW1lU291cmNlOiAnZmFsbGJhY2snLAogIGluZGVudENoYXJhY3RlcjogJyAnCn0KLyoKQWxsIHRocmVlIHByb3BlcnRpZXMgYXJlIG9wdGlvbmFsLiBDaGVjayB0aGUgb3B0aW9ucyBzZWN0aW9uIGJlbG93IGZvciBwb3NzaWJsZSB2YWx1ZXMgZm9yIGVhY2ggb3B0aW9uLgoqLwpgYGAKTm90ZTogQWxsIHBvc3NpYmxlIHZhbHVlcyBvZiBvcHRpb25zIGFuZCB0aGVpciB1c2FnZSBjYW4gYmUgZm91bmQgb3ZlciBoZXJlOiBbT1BUSU9OUy5tZF0oL09QVElPTlMubWQpCgoqKmNhbGxiYWNrOioqCmBgYGphdmFzY3JpcHQKZnVuY3Rpb24gKGVyciwgcmVzdWx0KSB7CiAgLyoKICByZXN1bHQgPSB7CiAgICByZXN1bHQ6IHRydWUsCiAgICBvdXRwdXQ6IFsKICAgICAgewogICAgICAgIHR5cGU6ICdjb2xsZWN0aW9uJywKICAgICAgICBkYXRhOiB7Li5jb2xsZWN0aW9uIG9iamVjdC4ufQogICAgICB9CiAgICBdCiAgfQogICovCn0KYGBgCgojIyMgU3luYyBDb2xsZWN0aW9uCgpUaGUgc3luY0NvbGxlY3Rpb24gZnVuY3Rpb24gc3luY3MgY2hhbmdlcyBmcm9tIGFuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiB3aXRoIGFuIGV4aXN0aW5nIFBvc3RtYW4gY29sbGVjdGlvbi4KClNpZ25hdHVyZTogYHN5bmNDb2xsZWN0aW9uIChkYXRhLCBvcHRpb25zLCBjb2xsZWN0aW9uLCBzeW5jT3B0aW9ucywgY2FsbGJhY2spO2AKCioqZGF0YToqKgoKYGBgamF2YXNjcmlwdAp7IHR5cGU6ICdmaWxlJywgZGF0YTogJ2ZpbGVwYXRoJyB9Ck9SCnsgdHlwZTogJ3N0cmluZycsIGRhdGE6ICc8ZW50aXJlIE9wZW5BUEkgc3RyaW5nIC0gSlNPTiBvciBZQU1MPicgfQpPUgp7IHR5cGU6ICdqc29uJywgZGF0YTogT3BlbkFQSS1KUy1vYmplY3QgfQpgYGAKCioqb3B0aW9uczoqKgpgYGBqYXZhc2NyaXB0CnsKICBwYXJhbWV0ZXJzUmVzb2x1dGlvbjogJ0V4YW1wbGUnLAogIGZvbGRlclN0cmF0ZWd5OiAnVGFncycKfQovKgpSZWd1bGFyIGNvbnZlcnNpb24gb3B0aW9ucy4gQ2hlY2sgdGhlIG9wdGlvbnMgc2VjdGlvbiBiZWxvdyBmb3IgcG9zc2libGUgdmFsdWVzLgoqLwpgYGAKCioqY29sbGVjdGlvbjoqKgpgYGBqYXZhc2NyaXB0Ci8vIEV4aXN0aW5nIFBvc3RtYW4gY29sbGVjdGlvbiBvYmplY3QgKEpTT04pCmNvbnN0IGNvbGxlY3Rpb24gPSB7CiAgaW5mbzogeyBuYW1lOiAnTXkgQVBJJywgc2NoZW1hOiAnLi4uJyB9LAogIGl0ZW06IFsuLi5dCn0KYGBgCgoqKnN5bmNPcHRpb25zOioqCmBgYGphdmFzY3JpcHQKewogIHN5bmNFeGFtcGxlczogdHJ1ZQp9Ci8qClN5bmMtc3BlY2lmaWMgb3B0aW9ucyB0aGF0IGNvbnRyb2wgdGhlIG1lcmdlIGJlaGF2aW9yLgpBbGwgc3luYyBvcHRpb25zIGFyZSBvcHRpb25hbC4gQ2hlY2sgU1lOQ19PUFRJT05TLm1kIGZvciBkZXRhaWxzLgoqLwpgYGAKTm90ZTogQWxsIHBvc3NpYmxlIHZhbHVlcyBvZiBzeW5jIG9wdGlvbnMgY2FuIGJlIGZvdW5kIGhlcmU6IFtTWU5DX09QVElPTlMubWRdKC9TWU5DX09QVElPTlMubWQpCgoqKmNhbGxiYWNrOioqCmBgYGphdmFzY3JpcHQKZnVuY3Rpb24gKGVyciwgcmVzdWx0KSB7CiAgLyoKICByZXN1bHQgPSB7CiAgICByZXN1bHQ6IHRydWUsCiAgICBvdXRwdXQ6IFsKICAgICAgewogICAgICAgIHR5cGU6ICdjb2xsZWN0aW9uJywKICAgICAgICBkYXRhOiB7Li5zeW5jZWQgY29sbGVjdGlvbiBvYmplY3QuLn0KICAgICAgfQogICAgXQogIH0KICAqLwp9CmBgYAoKIyMjIE9wdGlvbnMKCkNoZWNrIG91dCBjb21wbGV0ZSBsaXN0IG9mIG9wdGlvbnMgYW5kIHRoZWlyIHVzYWdlIGF0IFtPUFRJT05TLm1kXSgvT1BUSU9OUy5tZCkKCiMjIyBDb252ZXJzaW9uUmVzdWx0CgotIGByZXN1bHRgIC0gRmxhZyByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIGEgc3RhdHVzIHdoZXRoZXIgdGhlIGNvbnZlcnNpb24gd2FzIHN1Y2Nlc3NmdWwgb3Igbm90LgoKLSBgcmVhc29uYCAtIFByb3ZpZGVzIHRoZSByZWFzb24gZm9yIGFuIHVuc3VjY2Vzc2Z1bCBjb252ZXJzaW9uLCBkZWZpbmVkIG9ubHkgaWYgcmVzdWx0IGlmIGBmYWxzZWAuCgotIGBvdXRwdXRgIC0gQ29udGFpbnMgYW4gYXJyYXkgb2YgUG9zdG1hbiBvYmplY3RzLCBlYWNoIG9uZSB3aXRoIGEgYHR5cGVgIGFuZCBgZGF0YWAuIFRoZSBvbmx5IHR5cGUgY3VycmVudGx5IHN1cHBvcnRlZCBpcyBgY29sbGVjdGlvbmAuCgoKCiMjIyBTYW1wbGUgVXNhZ2UKCiMjIyMgQ29udmVydGluZyBhIHNwZWNpZmljYXRpb24KCmBgYGphdmFzY3JpcHQKY29uc3QgZnMgPSByZXF1aXJlKCdmcycpLAogIENvbnZlcnRlciA9IHJlcXVpcmUoJ29wZW5hcGktdG8tcG9zdG1hbnYyJyksCiAgb3BlbmFwaURhdGEgPSBmcy5yZWFkRmlsZVN5bmMoJ3NhbXBsZS1zcGVjLnlhbWwnLCB7ZW5jb2Rpbmc6ICdVVEY4J30pOwoKQ29udmVydGVyLmNvbnZlcnQoeyB0eXBlOiAnc3RyaW5nJywgZGF0YTogb3BlbmFwaURhdGEgfSwKICB7fSwgKGVyciwgY29udmVyc2lvblJlc3VsdCkgPT4gewogICAgaWYgKCFjb252ZXJzaW9uUmVzdWx0LnJlc3VsdCkgewogICAgICBjb25zb2xlLmxvZygnQ291bGQgbm90IGNvbnZlcnQnLCBjb252ZXJzaW9uUmVzdWx0LnJlYXNvbik7CiAgICB9CiAgICBlbHNlIHsKICAgICAgY29uc29sZS5sb2coJ1RoZSBjb2xsZWN0aW9uIG9iamVjdCBpczogJywgY29udmVyc2lvblJlc3VsdC5vdXRwdXRbMF0uZGF0YSk7CiAgICB9CiAgfQopOwpgYGAKCiMjIyMgU3luY2luZyBhIHNwZWNpZmljYXRpb24gd2l0aCBhbiBleGlzdGluZyBjb2xsZWN0aW9uCgpgYGBqYXZhc2NyaXB0CmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKSwKICBDb252ZXJ0ZXIgPSByZXF1aXJlKCdvcGVuYXBpLXRvLXBvc3RtYW52MicpLAogIG9wZW5hcGlEYXRhID0gZnMucmVhZEZpbGVTeW5jKCdzYW1wbGUtc3BlYy55YW1sJywge2VuY29kaW5nOiAnVVRGOCd9KSwKICBleGlzdGluZ0NvbGxlY3Rpb24gPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYygnY29sbGVjdGlvbi5qc29uJywge2VuY29kaW5nOiAnVVRGOCd9KSk7Cgpjb25zdCBzeW5jT3B0aW9ucyA9IHsKICBzeW5jRXhhbXBsZXM6IHRydWUKfTsKCkNvbnZlcnRlci5zeW5jQ29sbGVjdGlvbigKICB7IHR5cGU6ICdzdHJpbmcnLCBkYXRhOiBvcGVuYXBpRGF0YSB9LAogIHt9LCAvLyBjb252ZXJzaW9uIG9wdGlvbnMKICBleGlzdGluZ0NvbGxlY3Rpb24sCiAgc3luY09wdGlvbnMsCiAgKGVyciwgc3luY1Jlc3VsdCkgPT4gewogICAgaWYgKCFzeW5jUmVzdWx0LnJlc3VsdCkgewogICAgICBjb25zb2xlLmxvZygnQ291bGQgbm90IHN5bmMnLCBzeW5jUmVzdWx0LnJlYXNvbik7CiAgICB9CiAgICBlbHNlIHsKICAgICAgY29uc29sZS5sb2coJ1RoZSBjb2xsZWN0aW9uIG9iamVjdCBpczogJywgc3luY1Jlc3VsdC5vdXRwdXRbMF0uZGF0YSk7CiAgICB9CiAgfQopOwpgYGAKCiMjIyBWYWxpZGF0ZSBGdW5jdGlvbgoKVGhlIHZhbGlkYXRlIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0IHRoZSBkYXRhIHRoYXQgaXMgYmVpbmcgcGFzc2VkIHRvIHRoZSBbY29udmVydCBmdW5jdGlvbl0oI2NvbnZlcnQtZnVuY3Rpb24pIGlzIGEgdmFsaWQgSlNPTiBvYmplY3Qgb3IgYSB2YWxpZCAoWUFNTC9KU09OKSBzdHJpbmcuCgpUaGUgdmFsaWRhdGUgZnVuY3Rpb24gaXMgc3luY2hyb25vdXMgYW5kIHJldHVybnMgYSBzdGF0dXMgb2JqZWN0IHdoaWNoIGNvbmZvcm1zIHRvIHRoZSBmb2xsb3dpbmcgc2NoZW1hCgojIyMjIFZhbGlkYXRpb24gb2JqZWN0IHNjaGVtYQoKYGBgamF2YXNjcmlwdAp7CiAgdHlwZTogJ29iamVjdCcsCiAgcHJvcGVydGllczogewogICAgcmVzdWx0OiB7IHR5cGU6ICdib29sZWFuJ30sCiAgICByZWFzb246IHsgdHlwZTogJ3N0cmluZycgfQogIH0sCiAgcmVxdWlyZWQ6IFsncmVzdWx0J10KfQpgYGAKCiMjIyMjIFZhbGlkYXRpb24gb2JqZWN0IGV4cGxhbmF0aW9uCi0gYHJlc3VsdGAgLSB0cnVlIGlmIHRoZSBkYXRhIGxvb2tzIGxpa2UgT3BlbkFQSSBhbmQgY2FuIGJlIHBhc3NlZCB0byB0aGUgY29udmVydCBmdW5jdGlvbgoKLSBgcmVhc29uYCAtIFByb3ZpZGVzIGEgcmVhc29uIGZvciBhbiB1bnN1Y2Nlc3NmdWwgdmFsaWRhdGlvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbgoKPGgyIGlkPSJjb252ZXJzaW9uLXNjaGVtYSI+8J+nrSBDb252ZXJzaW9uIFNjaGVtYTwvaDI+Cgp8ICpwb3N0bWFuKiB8ICpvcGVuYXBpKiB8ICpyZWxhdGVkIG9wdGlvbnMqIHwKfCAtLS0gfCAtLS0gfCA6LS0tOiB8CnwgY29sbGVjdGlvbk5hbWUgfCBpbmZvLnRpdGxlIHwgLSB8CnwgZGVzY3JpcHRpb24gfCBpbmZvLmRlc2NyaXB0aW9uICsgaW5mby5jb250YWN0IHwgLSB8CnwgY29sbGVjdGlvblZhcmlhYmxlc3wgc2VydmVyLnZhcmlhYmxlcyArIHBhdGhWYXJpYWJsZXMgfCAtIHwKfCBmb2xkZXJOYW1lIHwgcGF0aHMucGF0aCAvIHRhZ3MubmFtZSB8IGZvbGRlclN0cmF0ZWd5IHwKfCByZXF1ZXN0TmFtZSB8IG9wZXJhdGlvbkl0ZW0obWV0aG9kKS5zdW1tYXJ5IC8gb3BlcmF0aW9uSXRlbShtZXRob2QpLm9wZXJhdGlvbklkIC8gdXJsIHwgcmVxdWVzdE5hbWVTb3VyY2UgfAp8IHJlcXVlc3QubWV0aG9kIHwgcGF0aC5tZXRob2QgfCAtIHwKfCByZXF1ZXN0LmhlYWRlcnMgfCBwYXJhbWV0ZXIgKGBpbiA9IGhlYWRlcmApIHwgLSB8IFtsaW5rXSgjSGVhZGVyL1BhdGgtcGFyYW0tY29udmVyc2lvbi1leGFtcGxlKSB8CnwgcmVxdWVzdC5ib2R5IHwgb3BlcmF0aW9uSXRlbShtZXRob2QpLnJlcXVlc3RCb2R5IHwgcmVxdWVzdFBhcmFtZXRlcnNSZXNvbHV0aW9uLCBleGFtcGxlUGFyYW1ldGVyc1Jlc29sdXRpb24gfAp8IHJlcXVlc3QudXJsLnJhdyB8IHNlcnZlci51cmwgKHBhdGggbGV2ZWwgc2VydmVyID4+IG9wZW5hcGkgc2VydmVyKSArIHBhdGggfCAtIHwKfCByZXF1ZXN0LnVybC52YXJpYWJsZXMgfCBwYXJhbWV0ZXIgKGBpbiA9IHBhdGhgKSB8IC0gfAp8IHJlcXVlc3QudXJsLnBhcmFtcyB8IHBhcmFtZXRlciAoYGluID0gcXVlcnlgKSB8IC0gfAp8IGFwaV9rZXkgaW4gKHF1ZXJ5IG9yIGhlYWRlcikgfCBjb21wb25lbnRzLnNlY3VyaXR5U2NoZW1lcy5hcGlfa2V5IHwgaW5jbHVkZUF1dGhJbmZvSW5FeGFtcGxlIHwK readmeEtag: '"0e43225da907420b41c2babd5dd293548fdde191"' readmeLastModified: Wed, 28 Jan 2026 13:09:59 GMT repositoryId: 161469924 description: >- Plugin for converting OpenAPI 3.0 specs to the Postman Collection (v2) format created: '2018-12-12T10:13:46Z' updated: '2026-02-02T04:38:45Z' language: JavaScript archived: false stars: 1042 watchers: 20 forks: 233 owner: postmanlabs logo: https://avatars.githubusercontent.com/u/10251060?v=4 license: Apache-2.0 repoEtag: '"355905b4366d13f5a453820b5d4126c9b314f831f305d2b0e0b874a3e88656eb"' repoLastModified: Mon, 02 Feb 2026 04:38:45 GMT foundInMaster: true id: 31b717a2084e3d92f6cda2c33484c789 v3_link: true v3_1: true - source: https://openapi.tools/ name: openapi-format category: - Parsers - Converters repository: https://github.com/thim81/openapi-format link: https://www.npmjs.com/package/openapi-format language: Node.js source_description: > A CLI to format an OpenAPI document by ordering fields in a hierarchical order, with the option to filter out flags, tags, methods, operationIDs; including the option to convert an OpenAPI 3.0 document to an OpenAPI version 3.1. v2: false v3: true repositoryMetadata: base64Readme: >- IVtvcGVuYXBpLWZvcm1hdCBpY29uXSguL2Fzc2V0cy9vcGVuYXBpLWZvcm1hdC1sb2dvLnN2ZykKCjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktZm9ybWF0IiBhbHQ9IkxhdGVzdCBTdGFibGUgVmVyc2lvbiI+IVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3Yvb3BlbmFwaS1mb3JtYXQuc3ZnKTwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb3BlbmFwaS1mb3JtYXQiIGFsdD0iVG90YWwgRG93bmxvYWRzIj4hW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZHcvb3BlbmFwaS1mb3JtYXQuc3ZnKTwvYT4KCiMgb3BlbmFwaS1mb3JtYXQKCkZvcm1hdCBhbiBPcGVuQVBJIGRvY3VtZW50IGJ5IG9yZGVyaW5nLCBmb3JtYXR0aW5nLCBmaWx0ZXJpbmcsIGFuZCBhcHBseWluZyBvdmVybGF5cyB0byBPcGVuQVBJIGRvY3VtZW50cy4KClRoZSBvcGVuYXBpLWZvcm1hdCBDTEkgY2FuIHNvcnQgdGhlIE9wZW5BUEkgZmllbGRzIGJ5IG9yZGVyaW5nIHRoZW0gaW4gYSBoaWVyYXJjaGljYWwgb3JkZXIsIGZvcm1hdCB0aGUgY2FzaW5nIG9mIHRoZSBmaWVsZHMgYW5kCm91dHB1dCBjbGVhbmx5IGluZGVudGVkIEpTT04gb3IgWUFNTC4KCkFkZGl0aW9uYWwgZmVhdHVyZXMgaW5jbHVkZSBwb3dlcmZ1bCBmaWx0ZXJpbmcgb3B0aW9ucyBiYXNlZCBvbiBmbGFncywgdGFncywgbWV0aG9kcywgb3BlcmF0aW9uSURzLCBhbmQgZXZlbiB1bnVzZWQgY29tcG9uZW50cy4KVG8gcXVpY2tseSBzdGFuZGFyZGl6ZSBPcGVuQVBJIGRvY3VtZW50cyB0aGVyZSBpcyBzdXBwb3J0IGZvciBnZW5lcmF0aW5nIHRoZSBvcGVyYXRpb25JZHMgYW5kIGFwcGx5IGNhc2luZyBydWxlcyBmb3IgY29uc2lzdGVuY3kuCgpUaGUgQ0xJIGNhbiBzcGxpdCBsYXJnZSBPcGVuQVBJIGRvY3VtZW50cyBpbnRvIG1vZHVsYXIsIG11bHRpLWZpbGUgc3RydWN0dXJlcyBmb3IgZWFzaWVyIG1hbmFnZW1lbnQuIApGb3IgdXBncmFkZXMsIHRoZSBvcGVuYXBpLWZvcm1hdCBDTEkgb2ZmZXJzIHRoZSBvcHRpb24gdG8gY29udmVydCBhbiBPcGVuQVBJIDMuMCBvciAzLjEgZG9jdW1lbnQgdG8gT3BlbkFQSSAzLjEgb3IgMy4yLgoKV2l0aCB0aGUgbmV3bHkgYWRkZWQgT3BlbkFQSSBPdmVybGF5IHN1cHBvcnQsIHVzZXJzIGNhbiBvdmVybGF5IGNoYW5nZXMgb250byBleGlzdGluZyBPcGVuQVBJIGRvY3VtZW50cywgdG8gZXh0ZW5kIGFuZCBjdXN0b21pemUgdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgojIyBUYWJsZSBvZiBjb250ZW50CiogW1VzZS1jYXNlc10oI3VzZS1jYXNlcykKKiBbRmVhdHVyZXNdKCNmZWF0dXJlcykKKiBbT25saW5lIHBsYXlncm91bmRdKCNvbmxpbmUtcGxheWdyb3VuZCkKKiBbSW5zdGFsbGF0aW9uXSgjaW5zdGFsbGF0aW9uKQogICAgKyBbTG9jYWwgSW5zdGFsbGF0aW9uIChyZWNvbW1lbmRlZCldKCNsb2NhbC1pbnN0YWxsYXRpb24tcmVjb21tZW5kZWQpCiAgICArIFtHbG9iYWwgSW5zdGFsbGF0aW9uXSgjZ2xvYmFsLWluc3RhbGxhdGlvbikKICAgICsgW05QWCB1c2FnZV0oI25weC11c2FnZSkKKiBbQ29tbWFuZCBMaW5lIEludGVyZmFjZV0oI2NvbW1hbmQtbGluZS1pbnRlcmZhY2UpCiogW09wZW5BUEkgZm9ybWF0IENMSSBvcHRpb25zXSgjb3BlbmFwaS1mb3JtYXQtY2xpLW9wdGlvbnMpCiogW09wZW5BUEkgc29ydCBjb25maWd1cmF0aW9uIG9wdGlvbnNdKCNvcGVuYXBpLXNvcnQtY29uZmlndXJhdGlvbi1vcHRpb25zKQoqIFtPcGVuQVBJIGZvcm1hdHRpbmcgY29uZmlndXJhdGlvbiBvcHRpb25zXSgjb3BlbmFwaS1mb3JtYXR0aW5nLWNvbmZpZ3VyYXRpb24tb3B0aW9ucykKKiBbT3BlbkFQSSBmaWx0ZXIgb3B0aW9uc10oI29wZW5hcGktZmlsdGVyLW9wdGlvbnMpCiogW09wZW5BUEkgZ2VuZXJhdGUgZWxlbWVudHNdKCNvcGVuYXBpLWdlbmVyYXRlLW9wdGlvbnMpCiogW0NMSSBzb3J0IHVzYWdlXSgjY2xpLXNvcnQtdXNhZ2UpCiogW0NMSSBmaWx0ZXIgdXNhZ2VdKCNjbGktZmlsdGVyLXVzYWdlKQoqIFtDTEkgT3BlbkFQSSBvdmVybGF5IHVzYWdlXSgjY2xpLW9wZW5hcGktb3ZlcmxheS11c2FnZSkKKiBbQ0xJIGdlbmVyYXRlIHVzYWdlXSgjY2xpLWdlbmVyYXRlLXVzYWdlKQoqIFtDTEkgY2FzaW5nIHVzYWdlXSgjY2xpLWNhc2luZy11c2FnZSkKKiBbQ0xJIHNwbGl0ICYgYnVuZGxlIHVzYWdlXSgjY2xpLWJ1bmRsZS0tc3BsaXQtdXNhZ2UpCiogW0NMSSByZW5hbWUgdXNhZ2VdKCNjbGktcmVuYW1lLXVzYWdlKQoqIFtDTEkgY29udmVydFRvIHVzYWdlXSgjY2xpLWNvbnZlcnR0by11c2FnZSkKKiBbQ0xJIGNvbmZpZ3VyYXRpb24gdXNhZ2VdKCNjbGktY29uZmlndXJhdGlvbi11c2FnZSkKKiBbUHJvZ3JhbW1hdGljIHVzYWdlXSgjcHJvZ3JhbW1hdGljLXVzYWdlKQoqIFtDcmVkaXRzXSgjY3JlZGl0cykKCiMjIFVzZS1jYXNlcwoKKipQdWJsaWMgZG9jdW1lbnRhdGlvbjoqKgpBbiBPcGVuQVBJIGRvY3VtZW50IGlzIGEgc3BlY2lmaWNhdGlvbiB0aGF0IGV2b2x2ZXMgYW5kIGNoYW5nZXMuIFRvIGZhY2lsaXRhdGUgd29ya2luZyB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCBwdWJsaXNoaW5nIHRoZQpkb2N1bWVudCBhcyBwdWJsaWMgZG9jdW1lbnRhdGlvbiwgeW91IHdhbnQgdG8gZGVsaXZlciBhIGNsZWFuIGFuZCBzdHJ1Y3R1cmVkIHNwZWNpZmljYXRpb24uIE9wZW5BUEktZm9ybWF0IGhlbHBzIHlvdSB0bwpvcmdhbml6ZSB0aGUgZmllbGRzIGJ5IHNvcnRpbmcsIGZvcm1hdHRpbmcgYW5kIGZpbHRlcmluZyBzcGVjaWZpYyBlbGVtZW50cyBmcm9tIHRoZSBPcGVuQVBJIGxpa2UgaW50ZXJuYWwgZW5kcG9pbnRzLCBiZXRhIHRhZ3MsIC4uLgphbmQgZXZlbiB1bnVzZWQgc2NoZW1hcywgZXhhbXBsZXMsIHJlc3BvbnNlcywgLi4uIHdpdGggYSBjbGVhbiBhbmQgb3B0aW1pemVkIE9wZW5BUEkgZG9jdW1lbnQgYXMgYSByZXN1bHQuCgoqKk1haW50ZW5hbmNlOioqCldoZW4gd29ya2luZyBvbiBsYXJnZSBPcGVuQVBJIGRvY3VtZW50cyBvciB3aXRoIG11bHRpcGxlIHRlYW0gbWVtYmVycywgdGhlIGZpbGUgY2FuIGJlIGJlY29tZSBtZXNzeSBhbmQgZGlmZmljdWx0IHRvCmNvbXBhcmUgY2hhbmdlcy4gQnkgc29ydGluZyAmIGZvcm1hdHRpbmcgZnJvbSB0aW1lIHRvIHRpbWUsIHRoZSBmaWVsZHMgYXJlIGFsbCBvcmRlcmVkIGluIGEgc3RydWN0dXJlZCBtYW5uZXIgJiBwcm9wZXJseSBjYXNlZCwgd2hpY2ggd2lsbCBoZWxwIHlvdQp0byBtYWludGFpbiB0aGUgZmlsZSB3aXRoIGdyZWF0ZXIgZWFzZS4KCioqQ0kvQ0QgcGlwZWxpbmVzOioqCk9wZW5BUEktZm9ybWF0IGNhbiBiZSB1c2VmdWwgaW4gQ0kvQ0QgcGlwZWxpbmVzLCB3aGVyZSB0aGUgT3BlbkFQSSBpcyB1c2VkIGFzIHRoZSBzb3VyY2UgZm9yIG90aGVyIGRvY3VtZW50cyBsaWtlIFdlYiBkb2N1bWVudGF0aW9uLApQb3N0bWFuIGNvbGxlY3Rpb25zLCB0ZXN0IHN1aXRlcywgLi4uCgojIyBGZWF0dXJlcwoKLSBbeF0gT3JkZXIgT3BlbkFQSSBmaWVsZHMgaW4gYSBkZWZhdWx0IG9yZGVyCi0gW3hdIE9yZGVyIE9wZW5BUEkgZmllbGRzIGluIGEgY3VzdG9tIG9yZGVyCi0gW3hdIE9yZGVyIENvbXBvbmVudHMgZWxlbWVudHMgYnkgYWxwaGFiZXQKLSBbeF0gRm9ybWF0IHRoZSBjYXNpbmcgKGNhbWVsQ2FzZSxQYXNjYWxDYXNlLCAuLi4pIG9mIGNvbXBvbmVudCBlbGVtZW50cwotIFt4XSBGaWx0ZXIgT3BlbkFQSSBmaWxlcyBiYXNlZCBvbiBtZXRob2RzCi0gW3hdIEZpbHRlciBPcGVuQVBJIGZpbGVzIGJhc2VkIG9uIGZsYWdzCi0gW3hdIEZpbHRlciBPcGVuQVBJIGZpbGVzIGJhc2VkIG9uIGZsYWdzIHZhbHVlcwotIFt4XSBGaWx0ZXIgT3BlbkFQSSBmaWxlcyBiYXNlZCBvbiB0YWdzCi0gW3hdIEZpbHRlciBPcGVuQVBJIGZpbGVzIGJhc2VkIG9uIG9wZXJhdGlvbklEJ3MKLSBbeF0gRmlsdGVyIE9wZW5BUEkgZmlsZXMgYmFzZWQgb24gb3BlcmF0aW9ucyBkZWZpbml0aW9uCi0gW3hdIEZpbHRlciBPcGVuQVBJIGZpbGVzIGJhc2VkIG9uIHJlc3BvbnNlIGNvbnRlbnQtdHlwZXMKLSBbeF0gQXBwbHkgT3BlbkFQSSBvdmVybGF5IGFjdGlvbnMKLSBbeF0gU3RyaXAgZmxhZ3MgZnJvbSBPcGVuQVBJIGZpbGVzCi0gW3hdIFN0cmlwIHVudXNlZCBjb21wb25lbnRzIGZyb20gT3BlbkFQSSBmaWxlcwotIFt4XSBHZW5lcmF0ZSBPcGVuQVBJIGVsZW1lbnRzIGZvciBjb25zaXN0ZW5jeQotIFt4XSBCdW5kbGUgbG9jYWwgYW5kIHJlbW90ZSByZWZlcmVuY2VzIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50Ci0gW3hdIFNwbGl0IHRoZSBPcGVuQVBJIGRvY3VtZW50IGludG8gYSBtdWx0aS1maWxlIHN0cnVjdHVyZQotIFt4XSBDb252ZXJ0IE9wZW5BUEkgMy4wIGRvY3VtZW50cyB0byBPcGVuQVBJIDMuMSBvciAzLjIKLSBbeF0gQ29udmVydCBPcGVuQVBJIDMuMSBkb2N1bWVudHMgdG8gT3BlbkFQSSAzLjIKLSBbeF0gUmVuYW1lIHRoZSBPcGVuQVBJIHRpdGxlCi0gW3hdIFN1cHBvcnQgT3BlbkFQSSBkb2N1bWVudHMgaW4gSlNPTiBmb3JtYXQKLSBbeF0gU3VwcG9ydCBPcGVuQVBJIGRvY3VtZW50cyBpbiBZQU1MIGZvcm1hdAotIFt4XSBGb3JtYXQgdmlhIENMSQotIFt4XSBGb3JtYXQgdmlhIGxvY2FsIG9yIHJlbW90ZSBjb25maWcgZmlsZXMKLSBbeF0gVXNlIGFzIGEgTW9kdWxlCi0gW3hdIEFsaWduZWQgWUFNTCBwYXJzaW5nIHN0eWxlIHdpdGggU3RvcGxpZ2h0IFN0dWRpbyBzdHlsZQotIFt4XSBTdXBwb3J0IGZvciBPcGVuQVBJIDMuMAotIFt4XSBTdXBwb3J0IGZvciBPcGVuQVBJIDMuMQotIFt4XSBTdXBwb3J0IGZvciBPcGVuQVBJIDMuMgotIFt4XSBPbmxpbmUgcGxheWdyb3VuZCAoaHR0cHM6Ly9vcGVuYXBpLWZvcm1hdC1wbGF5Z3JvdW5kLnZlcmNlbC5hcHAvKQoKIyMgT25saW5lIHBsYXlncm91bmQKClRoZSBbT3BlbkFQSS1Gb3JtYXQgUGxheWdyb3VuZF0oaHR0cHM6Ly9vcGVuYXBpLWZvcm1hdC1wbGF5Z3JvdW5kLnZlcmNlbC5hcHAvKSBpcyBhIHdlYi1iYXNlZCB0b29sIGZvciBmb3JtYXR0aW5nIGFuZCBzb3J0aW5nIE9wZW5BUEkgZG9jdW1lbnRzLCBwb3dlcmVkIGJ5IHRoZSBvcGVuYXBpLWZvcm1hdCBDTEkuCgo8YSBocmVmPSJodHRwczovL29wZW5hcGktZm9ybWF0LXBsYXlncm91bmQudmVyY2VsLmFwcC8iIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iT3BlbkFQSS1mb3JtYXQgUGxheWdyb3VuZCIgcmVsPSJub2ZvbGxvdyI+CjxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGhpbTgxL29wZW5hcGktZm9ybWF0L21haW4vYXNzZXRzL29wZW5hcGktZm9ybWF0LXBsYXlncm91bmQucG5nIiBhbHQ9Ik9wZW5BUEktZm9ybWF0IFBsYXlncm91bmQiIHdpZHRoPSI1MCUiPjxicj4KPGltZyBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90aGltODEvb3BlbmFwaS1mb3JtYXQvbWFpbi9hc3NldHMvb3BlbmFwaS1mb3JtYXQtcGxheWdyb3VuZC1kaWZmLnBuZyIgYWx0PSJPcGVuQVBJLWZvcm1hdCBQbGF5Z3JvdW5kIERpZmYgdmlld2VyIiB3aWR0aD0iMjUlIj4KPGltZyBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90aGltODEvb3BlbmFwaS1mb3JtYXQvbWFpbi9hc3NldHMvb3BlbmFwaS1mb3JtYXQtcGxheWdyb3VuZC1maWx0ZXIucG5nIiBhbHQ9Ik9wZW5BUEktZm9ybWF0IFBsYXlncm91bmQgRmlsdGVyIFVJIiB3aWR0aD0iMjUlIj4KPC9hPgoKTW9yZSBpbmZvIGFib3V0IHRoZSBmZWF0dXJlcyBhbmQgdXNhZ2UsIGNhbiBiZSBmb3VuZCBpbiB0aGUgW3JlYWRtZV0oaHR0cHM6Ly9naXRodWIuY29tL3RoaW04MS9vcGVuYXBpLWZvcm1hdC1wbGF5Z3JvdW5kP3RhYj1yZWFkbWUtb3YtZmlsZSNmZWF0dXJlcykuCgojIyBJbnN0YWxsYXRpb24KCiMjIyBMb2NhbCBJbnN0YWxsYXRpb24gKHJlY29tbWVuZGVkKQoKV2hpbGUgcG9zc2libGUgdG8gaW5zdGFsbCBnbG9iYWxseSwgd2UgcmVjb21tZW5kIHRoYXQgeW91IGFkZCB0aGUgb3BlbmFwaS1mb3JtYXQgQ0xJIHRvIHRoZSBgbm9kZV9tb2R1bGVzYCBieSB1c2luZzoKCmBgYHNoZWxsCiQgbnBtIGluc3RhbGwgLS1zYXZlIG9wZW5hcGktZm9ybWF0CmBgYAoKb3IgdXNpbmcgeWFybi4uLgoKYGBgc2hlbGwKJCB5YXJuIGFkZCBvcGVuYXBpLWZvcm1hdApgYGAKCk5vdGUgdGhhdCB0aGlzIHdpbGwgcmVxdWlyZSB5b3UgdG8gcnVuIHRoZSBvcGVuYXBpLWZvcm1hdCBDTEkgd2l0aCBgbnB4IG9wZW5hcGktZm9ybWF0IHlvdXItb3BlbmFwaS1maWxlLnlhbWxgIG9yLCBpZgp5b3UgYXJlIHVzaW5nIGFuIG9sZGVyIHZlcnNpb25zIG9mIG5wbSwgYC4vbm9kZV9tb2R1bGVzLy5iaW4vb3BlbmFwaS1mb3JtYXQgeW91ci1vcGVuYXBpLWZpbGUueWFtbGAuCgojIyMgR2xvYmFsIEluc3RhbGxhdGlvbgoKYGBgc2hlbGwKJCBucG0gaW5zdGFsbCAtZyBvcGVuYXBpLWZvcm1hdApgYGAKCiMjIyBOUFggdXNhZ2UKClRvIGV4ZWN1dGUgdGhlIENMSSB3aXRob3V0IGluc3RhbGxpbmcgaXQgdmlhIG5wbSwgdXNlIHRoZSBucHggbWV0aG9kCgpgYGBzaGVsbAokIG5weCBvcGVuYXBpLWZvcm1hdCB5b3VyLW9wZW5hcGktZmlsZS55YW1sCmBgYAoKIyMgQ29tbWFuZCBMaW5lIEludGVyZmFjZQoKYGBgCm9wZW5hcGktZm9ybWF0LmpzIDxpbnB1dC1maWxlPiAtbyBbb3V0cHV0LWZpbGVdIFtvcHRpb25zXQoKQXJndW1lbnRzOgogIGlucHV0LWZpbGUgICB0aGUgT3BlbkFQSSBkb2N1bWVudCBjYW4gYmUgYSBsb2NhbCBvciByZW1vdGUgZmlsZSBpbiBKU09OIG9yIFlBTUwgZm9ybWF0CiAgb3V0cHV0LWZpbGUgIHRoZSBvdXRwdXQgZmlsZSBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIGVpdGhlciBhIC5qc29uIG9yIC55YW1sIGZpbGUuIAoKT3B0aW9uczoKCiAgLS1vdXRwdXQsIC1vICAgICAgICAgIFNhdmUgdGhlIGZvcm1hdHRlZCBPcGVuQVBJIGZpbGUgYXMgSlNPTi9ZQU1MICAgICAgICAgICAgW3BhdGhdCgogIC0tc29ydEZpbGUgICAgICAgICAgICBUaGUgZmlsZSB0byBzcGVjaWZ5IGN1c3RvbSBPcGVuQVBJIGZpZWxkcyBvcmRlcmluZyAgICAgIFtwYXRoXQogIC0tY2FzaW5nRmlsZSAgICAgICAgICBUaGUgZmlsZSB0byBzcGVjaWZ5IGNhc2luZyBydWxlcyAgICAgICAgICAgICAgICAgICAgICAgIFtwYXRoXQogIC0tZ2VuZXJhdGVGaWxlICAgICAgICBUaGUgZmlsZSB0byBzcGVjaWZ5IGdlbmVyYXRlIHJ1bGVzICAgICAgICAgICAgICAgICAgICAgIFtwYXRoXSAgCiAgLS1maWx0ZXJGaWxlICAgICAgICAgIFRoZSBmaWxlIHRvIHNwZWNpZnkgZmlsdGVyIHJ1bGVzICAgICAgICAgICAgICAgICAgICAgICAgW3BhdGhdCiAgLS1vdmVybGF5RmlsZSAgICAgICAgIFRoZSBmaWxlIHRvIHNwZWNpZnkgT3BlbkFQSSBvdmVybGF5IGFjdGlvbnMgICAgICAgICAgICAgW3BhdGhdCgogIC0tbm8tc29ydCAgICAgICAgICAgICBEb24ndCBzb3J0IHRoZSBPcGVuQVBJIGZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXQogIC0ta2VlcENvbW1lbnRzICAgICAgICBEb24ndCByZW1vdmUgdGhlIGNvbW1lbnRzIGZyb20gdGhlIE9wZW5BUEkgWUFNTCBmaWxlIFtib29sZWFuXQogIC0tc29ydENvbXBvbmVudHNGaWxlICBUaGUgZmlsZSB3aXRoIGNvbXBvbmVudHMgdG8gc29ydCBhbHBoYWJldGljYWxseSAgICAgICAgIFtwYXRoXQogIC0tc29ydENvbXBvbmVudHNQcm9wcyBTb3J0IHByb3BlcnRpZXMgd2l0aGluIHNjaGVtYSBjb21wb25lbnRzIGFscGhhYmV0aWNhbGx5IFtib29sZWFuXQoKICAtLW5vLWJ1bmRsZSAgICAgICAgICAgRG9uJ3QgYnVuZGxlIHRoZSBsb2NhbCBhbmQgcmVtb3RlICRyZWYgICAgICAgICAgICAgICBbYm9vbGVhbl0KICAtLXNwbGl0ICAgICAgICAgICAgICAgU3BsaXQgT3BlbkFQSSBkb2N1bWVudCBpbnRvIGEgbXVsdGktZmlsZSBzdHJ1Y3R1cmUgICBbYm9vbGVhbl0KCiAgLS1yZW5hbWUgICAgICAgICAgICAgIFJlbmFtZSB0aGUgT3BlbkFQSSB0aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCgogIC0tY29udmVydFRvICAgICAgICAgICBjb252ZXJ0IHRoZSBPcGVuQVBJIGRvY3VtZW50IHRvIE9wZW5BUEkgdmVyc2lvbiAzLjEgb3IgMy4yICAgW3N0cmluZ10KCiAgLS1jb25maWdGaWxlICAgICAgICAgIFRoZSBmaWxlIHdpdGggdGhlIE9wZW5BUEktZm9ybWF0IENMSSBvcHRpb25zICAgICAgICAgICAgW3BhdGhdCgogIC0tbGluZVdpZHRoICAgICAgICAgICBNYXggbGluZSB3aWR0aCBvZiBZQU1MIG91dHB1dCAgICAgICAgICAgICAgICAgICAgICAgICBbbnVtYmVyXQoKICAtLWpzb24gICAgICAgICAgICAgICAgUHJpbnRzIHRoZSBmaWxlIHRvIHN0ZG91dCBhcyBKU09OICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KICAtLXlhbWwgICAgICAgICAgICAgICAgUHJpbnRzIHRoZSBmaWxlIHRvIHN0ZG91dCBhcyBZQU1MICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KCiAgLS1wbGF5Z3JvdW5kLCAtcCAgICAgIE9wZW4gY29uZmlnIGluIG9ubGluZSBwbGF5Z3JvdW5kCiAgLS1oZWxwICAgICAgICAgICAgICAgIFNob3cgaGVscCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dCiAgLS12ZXJzaW9uICAgICAgICAgICAgIE91dHB1dCB0aGUgdmVyc2lvbiBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgLS12ZXJib3NlICAgICAgICAgICAgIE91dHB1dCBtb3JlIGRldGFpbHMgb2YgdGhlIGZpbHRlciBwcm9jZXNzICAgICAgICAgICAgICBbY291bnRdCmBgYAoKIyMgT3BlbkFQSSBmb3JtYXQgQ0xJIG9wdGlvbnMKCnwgUGFyYW1ldGVyICAgICAgICAgICAgIHwgQWxpYXMgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IElucHV0IHR5cGUgICB8IERlZmF1bHQgICAgICAgICAgICAgICAgICAgIHwgSW5mbyAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLXwKfCBmaWxlICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgdGhlIE9wZW5BUEkgZG9jdW1lbnQgY2FuIGJlIGEgbG9jYWwgb3IgcmVtb3RlIGZpbGUgaW4gSlNPTiBvciBZQU1MIGZvcm1hdCAgIHwgcGF0aCB0byBmaWxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXF1aXJlZCB8CnwgLS1vdXRwdXQgICAgICAgICAgICAgIHwgLW8gICAgICAgICAgICB8IHNhdmUgdGhlIGZvcm1hdHRlZCBPcGVuQVBJIGZpbGUgYXMgSlNPTi9ZQU1MICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhdGggdG8gZmlsZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3B0aW9uYWwgfAp8IC0tc29ydEZpbGUgICAgICAgICAgICB8IC1zICAgICAgICAgICAgfCB0aGUgZmlsZSB0byBzcGVjaWZ5IGN1c3RvbSBPcGVuQVBJIGZpZWxkcyBvcmRlcmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXRoIHRvIGZpbGUgfCBkZWZhdWx0U29ydC5qc29uICAgICAgICAgICB8IG9wdGlvbmFsIHwKfCAtLWZpbHRlckZpbGUgICAgICAgICAgfCAtZiAgICAgICAgICAgIHwgdGhlIGZpbGUgdG8gc3BlY2lmeSBmaWx0ZXIgc2V0dGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgZGVmYXVsdEZpbHRlci5qc29uICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1jYXNpbmdGaWxlICAgICAgICAgIHwgLWsgICAgICAgICAgICB8IHRoZSBmaWxlIHRvIHNwZWNpZnkgY2FzaW5nIHNldHRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhdGggdG8gZmlsZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3B0aW9uYWwgfAp8IC0tZ2VuZXJhdGVGaWxlICAgICAgICB8IC1nICAgICAgICAgICAgfCB0aGUgZmlsZSB0byBzcGVjaWZ5IGdlbmVyYXRlIHJ1bGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXRoIHRvIGZpbGUgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9wdGlvbmFsIHwKfCAtLW92ZXJsYXlGaWxlICAgICAgICAgfCAtbCAgICAgICAgICAgIHwgdGhlIGZpbGUgdG8gc3BlY2lmeSBPcGVuQVBJIG92ZXJsYXkgYWN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1uby1zb3J0ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IGRvbid0IHNvcnQgdGhlIE9wZW5BUEkgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGJvb2xlYW4gICAgICB8IEZBTFNFICAgICAgICAgICAgICAgICAgICAgIHwgb3B0aW9uYWwgfAp8IC0ta2VlcENvbW1lbnRzICAgICAgICB8ICAgICAgICAgICAgICAgfCBkb24ndCByZW1vdmUgdGhlIGNvbW1lbnRzIGZyb20gdGhlIE9wZW5BUEkgWUFNTCBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgfCBib29sZWFuICAgICAgfCBGQUxTRSAgICAgICAgICAgICAgICAgICAgICB8IG9wdGlvbmFsIHwKfCAtLXNvcnRDb21wb25lbnRzRmlsZSAgfCAgICAgICAgICAgICAgIHwgc29ydCB0aGUgaXRlbXMgb2YgdGhlIGNvbXBvbmVudHMgKHNjaGVtYXMsIHBhcmFtZXRlcnMsIC4uLikgYnkgYWxwaGFiZXQgICAgIHwgcGF0aCB0byBmaWxlIHwgZGVmYXVsdFNvcnRDb21wb25lbnRzLmpzb24gfCBvcHRpb25hbCB8CnwgLS1zb3J0Q29tcG9uZW50c1Byb3BzIHwgICAgICAgICAgICAgICB8IHNvcnQgcHJvcGVydGllcyB3aXRoaW4gc2NoZW1hIGNvbXBvbmVudHMgYWxwaGFiZXRpY2FsbHkgICAgICAgICAgICAgICAgICAgICB8IGJvb2xlYW4gICAgICB8IEZBTFNFICAgICAgICAgICAgICAgICAgICAgIHwgb3B0aW9uYWwgfAp8IC0tbm8tYnVuZGxlICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCBkb24ndCBidW5kbGUgdGhlIGxvY2FsIGFuZCByZW1vdGUgJHJlZiBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudCAgICAgICAgICAgICAgfCBib29sZWFuICAgICAgfCBGQUxTRSAgICAgICAgICAgICAgICAgICAgICB8IG9wdGlvbmFsIHwKfCAtLXNwbGl0ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgc3BsaXQgdGhlIE9wZW5BUEkgZG9jdW1lbnQgaW50byBhIG11bHRpLWZpbGUgc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgIHwgYm9vbGVhbiAgICAgIHwgRkFMU0UgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1yZW5hbWUgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IHJlbmFtZSB0aGUgT3BlbkFQSSB0aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3B0aW9uYWwgfAp8IC0tY29udmVydFRvICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCBjb252ZXJ0IHRoZSBPcGVuQVBJIGRvY3VtZW50IHRvIE9wZW5BUEkgdmVyc2lvbiAzLjEgb3IgMy4yICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9wdGlvbmFsIHwKfCAtLWNvbmZpZ0ZpbGUgICAgICAgICAgfCAtYyAgICAgICAgICAgIHwgdGhlIGZpbGUgd2l0aCBhbGwgdGhlIGZvcm1hdCBjb25maWcgb3B0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1saW5lV2lkdGggICAgICAgICAgIHwgICAgICAgICAgICAgICB8IG1heCBsaW5lIHdpZHRoIG9mIFlBTUwgb3V0cHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG51bWJlciAgICAgICB8IC0xIChJbmZpbml0eSkgICAgICAgICAgICAgIHwgb3B0aW9uYWwgfAp8IC0tanNvbiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCBwcmludHMgdGhlIGZpbGUgdG8gc3Rkb3V0IGFzIEpTT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCBGQUxTRSAgICAgICAgICAgICAgICAgICAgICB8IG9wdGlvbmFsIHwKfCAtLXlhbWwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgcHJpbnRzIHRoZSBmaWxlIHRvIHN0ZG91dCBhcyBZQU1MICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgRkFMU0UgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1wbGF5Z3JvdW5kICAgICAgICAgIHwgLXAgICAgICAgICAgICB8IG9wZW4gY29uZmlnIGluIG9ubGluZSBwbGF5Z3JvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3B0aW9uYWwgfAp8IC0tdmVyc2lvbiAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCBvdXRwdXQgdGhlIHZlcnNpb24gbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9wdGlvbmFsIHwKfCAtLXZlcmJvc2UgICAgICAgICAgICAgfCAtdiwgLXZ2LCAtdnZ2IHwgdmVyYm9zaXR5IHRoYXQgY2FuIGJlIGluY3JlYXNlZCwgd2hpY2ggd2lsbCBzaG93IG1vcmUgb3V0cHV0IG9mIHRoZSBwcm9jZXNzIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1oZWxwICAgICAgICAgICAgICAgIHwgaCAgICAgICAgICAgICB8IGRpc3BsYXkgaGVscCBmb3IgY29tbWFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3B0aW9uYWwgfAoKIyMgT3BlbkFQSSBzb3J0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucwoKVGhlIENMSSB3aWxsIHNvcnQgdGhlIE9wZW5BUEkgZG9jdW1lbnQgaW4gdGhlIGRlZmluZWQgb3JkZXIgbGlrZWQgZGVmaW5lZCBwZXIgT3BlbkFQSSBrZXkvZmllbGQvcHJvcGVydHkvZWxlbWVudC4gVGhlIGZpZWxkcyB0aGF0IGFyZQpub3Qgc3BlY2lmaWVkIHdpbGwga2VlcCB0aGVpciBvcmRlciBsaWtlIGl0IGlzIGluIHRoZSBvcmlnaW5hbCBPcGVuQVBJIGRvY3VtZW50LCBzbyBvbmx5IGRlZmluZWQgZmllbGRzIHdpbGwgYmUKcmUtb3JkZXJlZC4KClRoZSBkZWZhdWx0IHNvcnRpbmcgb2YgdGhlIGRpZmZlcmVudCBmaWVsZHMgYmFzZWQgb24gdGhlIGRlZmluZWQgb3JkZXIgKGxpc3RlZCBpbiB0aGUgdGFibGUgYmVsb3cpLCB3aGljaCBpcyBzdG9yZWQgaW4KdGhlIFtkZWZhdWx0U29ydC5qc29uXShodHRwczovL2dpdGh1Yi5jb20vdGhpbTgxL29wZW5hcGktZm9ybWF0L2Jsb2IvbWFpbi9kZWZhdWx0U29ydC5qc29uKSBmaWxlLgoKIyMjIE9wZW5BUEkgc29ydCBmaWVsZHMKCllvdSBjYW4gZWFzaWx5IG1vZGlmeSB0aGlzIGJ5IHNwZWNpZnlpbmcgeW91ciBvd24gb3JkZXJpbmcgcGVyIGtleSwgd2hpY2ggY2FuIGJlIHBhc3NlZCBvbiB0byB0aGUgQ0xJIChzZWUgYmVsb3cgZm9yIGFuCmV4YW1wbGUgb24gaG93IHRvIGRvIHRoaXMpLgoKfCBLZXkgICAgICAgICB8IE9yZGVyZWQgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9wZW5BUEkgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8Cnwgcm9vdCAgICAgICAgfCAtIG9wZW5hcGk8YnI+XC0gaW5mbzxicj5cLSBzZXJ2ZXJzPGJyPlwtIHBhdGhzPGJyPlwtIGNvbXBvbmVudHM8YnI+XC0gdGFnczxicj5cLSB4LXRhZ0dyb3Vwczxicj5cLSBleHRlcm5hbERvY3MgfCBbb3BlbmFwaS1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI29wZW5hcGktb2JqZWN0KSAgICAgICAgICAgICAgICAgIHwKfCBnZXQgICAgICAgICB8IC0gb3BlcmF0aW9uSWQ8YnI+XC0gc3VtbWFyeTxicj5cLSBkZXNjcmlwdGlvbjxicj5cLSBwYXJhbWV0ZXJzPGJyPlwtIHJlcXVlc3RCb2R5PGJyPlwtIHJlc3BvbnNlcyAgICAgICAgICAgICAgICB8IFtvcGVyYXRpb25PYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI29wZXJhdGlvbk9iamVjdCkgICAgICAgICAgICAgICAgfAp8IHBvc3QgICAgICAgIHwgLSBvcGVyYXRpb25JZDxicj5cLSBzdW1tYXJ5PGJyPlwtIGRlc2NyaXB0aW9uPGJyPlwtIHBhcmFtZXRlcnM8YnI+XC0gcmVxdWVzdEJvZHk8YnI+XC0gcmVzcG9uc2VzICAgICAgICAgICAgICAgIHwgW29wZXJhdGlvbk9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjb3BlcmF0aW9uT2JqZWN0KSAgICAgICAgICAgICAgICAgfAp8IHB1dCAgICAgICAgIHwgLSBvcGVyYXRpb25JZDxicj5cLSBzdW1tYXJ5PGJyPlwtIGRlc2NyaXB0aW9uPGJyPlwtIHBhcmFtZXRlcnM8YnI+XC0gcmVxdWVzdEJvZHk8YnI+XC0gcmVzcG9uc2VzICAgICAgICAgICAgICAgIHwgW29wZXJhdGlvbk9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjb3BlcmF0aW9uT2JqZWN0KSAgICAgICAgICAgICAgICAgfAp8IHBhdGNoICAgICAgIHwgLSBvcGVyYXRpb25JZDxicj5cLSBzdW1tYXJ5PGJyPlwtIGRlc2NyaXB0aW9uPGJyPlwtIHBhcmFtZXRlcnM8YnI+XC0gcmVxdWVzdEJvZHk8YnI+XC0gcmVzcG9uc2VzICAgICAgICAgICAgICAgIHwgW29wZXJhdGlvbk9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjb3BlcmF0aW9uT2JqZWN0KSAgICAgICAgICAgICAgICAgfAp8IGRlbGV0ZSAgICAgIHwgLSBvcGVyYXRpb25JZDxicj5cLSBzdW1tYXJ5PGJyPlwtIGRlc2NyaXB0aW9uPGJyPlwtIHBhcmFtZXRlcnM8YnI+XC0gcmVxdWVzdEJvZHk8YnI+XC0gcmVzcG9uc2VzICAgICAgICAgICAgICAgIHwgW29wZXJhdGlvbk9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjb3BlcmF0aW9uT2JqZWN0KSAgICAgICAgICAgICAgICAgfAp8IHBhcmFtZXRlcnMgIHwgLSBuYW1lPGJyPlwtIGluPGJyPlwtIGRlc2NyaXB0aW9uPGJyPlwtIHJlcXVpcmVkPGJyPlwtIHNjaGVtYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW3BhcmFtZXRlck9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcGFyYW1ldGVyT2JqZWN0KSAgICAgICAgICAgICAgICAgfAp8IHJlcXVlc3RCb2R5IHwgLSBkZXNjcmlwdGlvbjxicj5cLSBoZWFkZXJzPGJyPlwtIGNvbnRlbnQ8YnI+XC0gbGlua3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW3JlcXVlc3QtYm9keS1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI3JlcXVlc3QtYm9keS1vYmplY3QpICAgICAgICAgICAgIHwKfCByZXNwb25zZXMgICB8IC0gZGVzY3JpcHRpb248YnI+XC0gaGVhZGVyczxicj5cLSBjb250ZW50PGJyPlwtIGxpbmtzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtyZXNwb25zZXMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNyZXNwb25zZXMtb2JqZWN0KSAgICAgICAgICAgICAgICB8CnwgY29udGVudCAgICAgfCAoQnkgYWxwaGFiZXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbcmVzcG9uc2VzLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcmVzcG9uc2VzLW9iamVjdCkgICAgICAgICAgICAgICAgfAp8IGNvbXBvbmVudHMgIHwgLSBwYXJhbWV0ZXJzPGJyPlwtIHNjaGVtYXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW2NvbXBvbmVudHMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNjb21wb25lbnRzLW9iamVjdCkgICAgICAgICAgICAgICB8Cnwgc2NoZW1hICAgICAgfCAtIGRlc2NyaXB0aW9uPGJyPlwtIHR5cGU8YnI+XC0gaXRlbXM8YnI+XC0gcHJvcGVydGllczxicj5cLSBmb3JtYXQ8YnI+XC0gZXhhbXBsZTxicj5cLSBkZWZhdWx0ICAgICAgICAgICAgICAgICAgfCBbc2NoZW1hT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNzY2hlbWFPYmplY3QpICAgICAgICAgICAgICAgICAgICB8Cnwgc2NoZW1hcyAgICAgfCAtIGRlc2NyaXB0aW9uPGJyPlwtIHR5cGU8YnI+XC0gaXRlbXM8YnI+XC0gcHJvcGVydGllczxicj5cLSBmb3JtYXQ8YnI+XC0gZXhhbXBsZTxicj5cLSBkZWZhdWx0ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBwcm9wZXJ0aWVzICB8IC0gZGVzY3JpcHRpb248YnI+XC0gdHlwZTxicj5cLSBpdGVtczxicj5cLSBmb3JtYXQ8YnI+XC0gZXhhbXBsZTxicj5cLSBkZWZhdWx0PGJyPlwtIGVudW0gICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKSGF2ZSBhIGxvb2sgYXQgdGhlIGZvbGRlciBbeWFtbC1kZWZhdWx0XSh0ZXN0L3lhbWwtZGVmYXVsdCkgYW5kIGNvbXBhcmUgdGhlICJvdXRwdXQueWFtbCIgKHNvcnRlZCBkb2N1bWVudCkgd2l0aCB0aGUgImlucHV0LnlhbWwiIChvcmlnaW5hbCBkb2N1bWVudCksIHRvIHNlZSBob3cgb3BlbmFwaS1mb3JtYXQgaGF2ZSBzb3J0ZWQgdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgojIyMgT3BlbkFQSSBzb3J0IFBhdGhzCgpZb3UgY2FuIGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIHBhdGhzIGRlZmluZWQgaW4gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBhbmQgc29ydCB0aGVtIGFscGhhYmV0aWNhbGx5IChgcGF0aGApIG9yIGJ5IHRoZSBmaXJzdCB0YWcgb2YgdGhlIGZpcnN0IG1ldGhvZCAoYHRhZ3NgKS4KCk9wdGlvbnMgdG8gc29ydCBieToKCi0gYG9yaWdpbmFsYCAoZGVmYXVsdCk6IGtlZXAgdGhlIG9yZGVyIGFzIGRlZmluZWQgaW4gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbgotIGBwYXRoYDogb3JkZXIgdGhlIHBhdGhzIGFscGhhYmV0aWNhbGx5IGJ5IHRoZSBwYXRoIHBhcnRzCi0gYHRhZ3NgOiBvcmRlciBieSB0aGUgZmlyc3QgdGFnIG9mIHRoZSBmaXJzdCBtZXRob2QKCnwgS2V5ICAgICAgICAgfCBPcHRpb25zICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkFQSSByZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cnwgc29ydFBhdGhzQnkgfCAnb3JpZ2luYWwnIC8gJ3BhdGgnIC8gJ3RhZ3MnIHwgW3BhdGhzLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcGF0aHMtb2JqZWN0KSB8CgoKCiMjIE9wZW5BUEkgZmlsdGVyIG9wdGlvbnMKCkJ5IHNwZWNpZnlpbmcgdGhlIGRlc2lyZWQgZmlsdGVyIHZhbHVlcyBmb3IgdGhlIGF2YWlsYWJsZSBmaWx0ZXIgdHlwZXMsIHRoZSBvcGVuYXBpLWZvcm1hdCBDTEkgd2lsbCBzdHJpcCBvdXQgYW55Cm1hdGNoaW5nIGl0ZW0gZnJvbSB0aGUgT3BlbkFQSSBkb2N1bWVudC4gWW91IGNhbiBjb21iaW5lIG11bHRpcGxlIHR5cGVzIHRvIGZpbHRlciBvdXQgYSByYW5nZSBvZiBPcGVuQVBJIGl0ZW1zLgoKfCBUeXBlICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBFeGFtcGxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IG1ldGhvZHMgICAgICAgICAgICAgICAgfCBPcGVuQVBJIG1ldGhvZHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJyYXkgICB8IFsnZ2V0JywncG9zdCcsJ3B1dCddICAgICAgICAgICAgICAgICAgICAgIHwKfCBpbnZlcnNlTWV0aG9kcyAgICAgICAgIHwgT3BlbkFQSSBtZXRob2RzIHRoYXQgd2lsbCBiZSBrZXB0ICAgICAgICAgICB8IGFycmF5ICAgfCBbJ2dldCcsJ3Bvc3QnLCdwdXQnXSAgICAgICAgICAgICAgICAgICAgICB8CnwgdGFncyAgICAgICAgICAgICAgICAgICB8IE9wZW5BUEkgdGFncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcnJheSAgIHwgWydwZXQnLCd1c2VyJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGludmVyc2VUYWdzICAgICAgICAgICAgfCBPcGVuQVBJIHRhZ3MgdGhhdCB3aWxsIGJlIGtlcHQgICAgICAgICAgICAgIHwgYXJyYXkgICB8IFsncGV0JywndXNlciddICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBvcGVyYXRpb25JZHMgICAgICAgICAgIHwgT3BlbkFQSSBvcGVyYXRpb24gSUQncyAgICAgICAgICAgICAgICAgICAgICB8IGFycmF5ICAgfCBbJ2ZpbmRQZXRzQnlTdGF0dXMnLCd1cGRhdGVQZXQnXSAgICAgICAgICB8CnwgaW52ZXJzZU9wZXJhdGlvbklkcyAgICB8IE9wZW5BUEkgb3BlcmF0aW9uIElEJ3MgdGhhdCB3aWxsIGJlIGtlcHQgICAgfCBhcnJheSAgIHwgWydmaW5kUGV0c0J5U3RhdHVzJywndXBkYXRlUGV0J10gICAgICAgICAgfAp8IG9wZXJhdGlvbnMgICAgICAgICAgICAgfCBPcGVuQVBJIG9wZXJhdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJyYXkgICB8IFsnR0VUOjovcGV0cycsJ1BVVDo6L3BldHMnXSAgICAgICAgICAgICAgIHwKfCBmbGFncyAgICAgICAgICAgICAgICAgIHwgQ3VzdG9tIGZsYWdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFycmF5ICAgfCBbJ3gtZXhjbHVkZScsJ3gtaW50ZXJuYWwnXSAgICAgICAgICAgICAgICB8CnwgaW52ZXJzZUZsYWdzICAgICAgICAgICB8IEN1c3RvbSBmbGFncyB0aGF0IHdpbGwga2VwdCAgICAgICAgICAgICAgICAgfCBhcnJheSAgIHwgWyd4LWV4Y2x1ZGUnLCd4LWludGVybmFsJ10gICAgICAgICAgICAgICAgfAp8IGZsYWdWYWx1ZXMgICAgICAgICAgICAgfCBDdXN0b20gZmxhZ3Mgd2l0aCBhIHNwZWNpZmljIHZhbHVlICAgICAgICAgIHwgYXJyYXkgICB8IFsneC12ZXJzaW9uOiAxLjAnLCd4LXZlcnNpb246IDMuMCddICAgICAgIHwKfCBpbnZlcnNlRmxhZ1ZhbHVlcyAgICAgIHwgQ3VzdG9tIGZsYWdzIHdpdGggYSB2YWx1ZSB0aGF0IHdpbGwgYmUga2VwdCB8IGFycmF5ICAgfCBbJ3gtdmVyc2lvbjogMS4wJywneC12ZXJzaW9uOiAzLjAnXSAgICAgICB8CnwgcmVzcG9uc2VDb250ZW50ICAgICAgICB8IFJlc3BvbnNlIENvbnRlbnQgdHlwZXMgICAgICAgICAgICAgICAgICAgICAgfCBhcnJheSAgIHwgWydhcHBsaWNhdGlvbi9qc29uJywnYXBwbGljYXRpb24vaHRtbCddICAgfAp8IGludmVyc2VSZXNwb25zZUNvbnRlbnQgfCBSZXNwb25zZSBDb250ZW50IHR5cGVzIHRoYXQgd2lsbCBrZXB0ICAgICAgIHwgYXJyYXkgICB8IFsnYXBwbGljYXRpb24vbGQranNvbiddICAgICAgICAgICAgICAgICAgIHwKfCByZXF1ZXN0Q29udGVudCAgICAgICAgIHwgUmVxdWVzdCBCb2R5IENvbnRlbnQgdHlwZXMgICAgICAgICAgICAgICAgICB8IGFycmF5ICAgfCBbJ2FwcGxpY2F0aW9uL2pzb24nLCdhcHBsaWNhdGlvbi9odG1sJ10gICB8CnwgaW52ZXJzZVJlcXVlc3RDb250ZW50ICB8IFJlcXVlc3QgQm9keSBDb250ZW50IHR5cGVzIHRoYXQgd2lsbCBrZXB0ICAgfCBhcnJheSAgIHwgWydhcHBsaWNhdGlvbi9sZCtqc29uJ10gICAgICAgICAgICAgICAgICAgfAp8IHVudXNlZENvbXBvbmVudHMgICAgICAgfCBVbnVzZWQgY29tcG9uZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJyYXkgICB8IFsnZXhhbXBsZXMnLCdzY2hlbWFzJ10gICAgICAgICAgICAgICAgICAgIHwKfCBzdHJpcEZsYWdzICAgICAgICAgICAgIHwgQ3VzdG9tIGZsYWdzIHRoYXQgd2lsbCBiZSBzdHJpcHBlZCAgICAgICAgICB8IGFycmF5ICAgfCBbJ3gtZXhjbHVkZScsJ3gtaW50ZXJuYWwnXSAgICAgICAgICAgICAgICB8CnwgcHJlc2VydmVFbXB0eU9iamVjdHMgICB8IFByZXNlcnZlIGVtcHR5IG9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgfCBib29sZWFuIHwgdHJ1ZSBPUiBbJ3NjaGVtYSddICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHRleHRSZXBsYWNlICAgICAgICAgICAgfCBTZWFyY2ggJiByZXBsYWNlIHZhbHVlcyB0byByZXBsYWNlICAgICAgICAgIHwgYXJyYXkgICB8IFt7J3NlYXJjaEZvcic6J1BldCcsJ3JlcGxhY2VXaXRoJzonRG9nJ31dIHwKClNvbWUgbW9yZSBkZXRhaWxzIG9uIHRoZSBhdmFpbGFibGUgZmlsdGVyIHR5cGVzOgoKIyMjIEZpbHRlciAtIG1ldGhvZHMvaW52ZXJzZU1ldGhvZHMKCj0+ICoqbWV0aG9kcyoqOiBSZWZlcnMgdG8gdGhlIFtQYXRoIEl0ZW0gT2JqZWN0XShodHRwOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI29wZXJhdGlvbk9iamVjdCkKClRoaXMgd2lsbCByZW1vdmUgYWxsIGZpZWxkcyBhbmQgYXR0YWNoZWQgZmllbGRzIHRoYXQgbWF0Y2ggdGhlIHZlcmJzLiBJbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhpcyB3b3VsZCBtZWFuIHRoYXQKYWxsIGBnZXRgLCBgcHV0YCwgYHBvc3RgIGl0ZW1zIHdvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogICAgL3BldHM6CiAgICAgICAgZ2V0OgogICAgICAgICAgICBzdW1tYXJ5OiBGaW5kcyBQZXRzIGJ5IHN0YXR1cwogICAgICAgIHB1dDoKICAgICAgICAgICAgc3VtbWFyeTogVXBkYXRlIGFuIGV4aXN0aW5nIHBldApgYGAKCj0+ICoqaW52ZXJzZU1ldGhvZHMqKjogVGhpcyBvcHRpb24gZG9lcyB0aGUgaW52ZXJzZSBmaWx0ZXJpbmcsIGJ5IGtlZXBpbmcgb25seSB0aGUgdmVyYnMgZGVmaW5lZCBhbmQgcmVtb3ZlIGFsbCBvdGhlciB2ZXJicy4KCiMjIyBGaWx0ZXIgLSB0YWdzCgo9PiAqKnRhZ3MqKjogUmVmZXJzIHRvIHRoZSAidGFncyIgZmllbGQgZnJvbSB0aGUgIk9wZXJhdGlvbgogIE9iamVjdCIgaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjb3BlcmF0aW9uT2JqZWN0CgpUaGlzIHdpbGwgcmVtb3ZlIGFsbCBmaWVsZHMgYW5kIGF0dGFjaGVkIGZpZWxkcyB0aGF0IG1hdGNoIHRoZSB0YWdzLiBJbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhpcyB3b3VsZCBtZWFuIHRoYXQgYWxsCml0ZW1zIHdpdGggdGhlIHRhZ3MgYHBldGAgb3IgYHVzZXJgIHdvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCkZvciBleGFtcGxlOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogICAgdGl0bGU6IEFQSQogICAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgICAvcGV0czoKICAgICAgICBwdXQ6CiAgICAgICAgICAgIHRhZ3M6CiAgICAgICAgICAgICAgICAtIHBldAogICAgICAgICAgICBzdW1tYXJ5OiBVcGRhdGUgYW4gZXhpc3RpbmcgcGV0CmBgYAoKPT4gKippbnZlcnNlVGFncyoqOiBUaGlzIG9wdGlvbiBkb2VzIHRoZSBpbnZlcnNlIGZpbHRlcmluZywgYnkga2VlcGluZyBvbmx5IHRoZSB0YWdzIGRlZmluZWQgYW5kIHJlbW92ZSBhbGwgb3RoZXIgdGFncywgaW5jbHVkaW5nIHRoZSBvcGVyYXRpb25zIHdpdGhvdXQgYSB0YWdzLgoKIyMjIEZpbHRlciAtIG9wZXJhdGlvbklkcwoKPT4gKipvcGVyYXRpb25JZHMqKjogUmVmZXJzIHRvIHRoZSAib3BlcmF0aW9uSWQiIGZpZWxkIGZyb20gdGhlIFtPcGVyYXRpb24gT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNvcGVyYXRpb25PYmplY3QpCgpUaGlzIHdpbGwgcmVtb3ZlIHNwZWNpZmljIGZpZWxkcyBhbmQgYXR0YWNoZWQgZmllbGRzIHRoYXQgbWF0Y2ggdGhlIG9wZXJhdGlvbiBJRCdzLiBJbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhpcyB3b3VsZAptZWFuIHRoYXQgdGhlIGl0ZW0gd2l0aCBvcGVyYXRpb25JRCBgZmluZFBldHNCeVN0YXR1c2Agd291bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9yIGV4YW1wbGU6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAgIC9wZXRzOgogICAgICAgIGdldDoKICAgICAgICAgICAgb3BlcmF0aW9uSWQ6IGZpbmRQZXRzQnlTdGF0dXMKYGBgCgo9PiAqKmludmVyc2VUYWdzKio6IFRoaXMgb3B0aW9uIGRvZXMgdGhlIGludmVyc2UgZmlsdGVyaW5nLCBieSBrZWVwaW5nIG9ubHkgdGhlIG9wZXJhdGlvbklkcyBkZWZpbmVkIGFuZCByZW1vdmUgYWxsIG90aGVyIG9wZXJhdGlvbklkcywgaW5jbHVkaW5nIHRoZSBvcGVyYXRpb25zIHdpdGhvdXQgYW4gb3BlcmF0aW9uSWQuCgojIyMgRmlsdGVyIC0gb3BlcmF0aW9ucwoKPT4gKipvcGVyYXRpb25zKio6IFJlZmVycyB0byBhIGNvbWJpbmF0aW9uIG9mIGEgT3BlbkFQSSBtZXRob2QgJiBwYXRoIGZyb20gdGhlIFtQYXRoIE9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcGF0aHMtb2JqZWN0KQomIFtQYXRoIGl0ZW1dKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI3BhdGgtaXRlbS1vYmplY3QpCgpUaGlzIHdpbGwgcmVtb3ZlIHNwZWNpZmljIHBhdGggaXRlbXMgdGhhdCBtYXRjaCB0aGUgb3BlcmF0aW9uIGRlZmluaXRpb24gYFBVVDo6L3BldHNgLiBJbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhpcyB3b3VsZAptZWFuIHRoYXQgdGhlIGl0ZW0gd2l0aCB0aGUgcGF0aCAnL3BldHMnIGFuZCBtZXRob2QgJ1BVVCcgd291bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9yIGV4YW1wbGU6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAgIC9wZXRzOgogICAgICAgIGdldDoKICAgICAgICAgICAgc3VtbWFyeTogRmluZHMgUGV0cyBieSBzdGF0dXMKICAgICAgICBwdXQ6CiAgICAgICAgICAgIHN1bW1hcnk6IFVwZGF0ZSBhbiBleGlzdGluZyBwZXQKYGBgCgpBbiBgb3BlcmF0aW9uSWRgIGlzIGFuIG9wdGlvbmFsIHByb3BlcnR5LiBUbyBvZmZlciBzdXBwb3J0IGZvciBPcGVuQVBJIGRvY3VtZW50cyB0aGF0IGRvbid0IGhhdmUgb3BlcmF0aW9uSWRzLCB3ZSBoYXZlCmFkZGVkIHRoZSBgb3BlcmF0aW9uYCBkZWZpbml0aW9uIHdoaWNoIGlzIHRoZSB1bmlxdWUgY29tYmluYXRpb24gb2YgdGhlIE9wZW5BUEkgbWV0aG9kICYgcGF0aCwgd2l0aCBhIGA6OmAgc2VwYXJhdG9yCnN5bWJvbC4KClRoaXMgd2lsbCBhbGxvdyBmaWx0ZXJpbmcgZm9yIHZlcnkgc3BlY2lmaWMgT3BlbkFQSSBpdGVtcywgd2l0aG91dCB0aGUgbmVlZCBvZiBhZGRpbmcgb3BlcmF0aW9uSWRzIHRvIHRoZSBPcGVuQVBJCmRvY3VtZW50LgoKVG8gZmFjaWxpdGF0ZSBtYW5hZ2luZyB0aGUgZmlsdGVyaW5nLCB3ZSBoYXZlIGluY2x1ZGVkIHdpbGRjYXJkIG9wdGlvbnMgZm9yIHRoZSBgb3BlcmF0aW9uc2Agb3B0aW9uLCBzdXBwb3J0aW5nIHRoZQptZXRob2RzICYgcGF0aCBkZWZpbml0aW9ucy4KClJFTUFSSzogQmUgc3VyZSB0byBwdXQgcXVvdGVzIGFyb3VuZCB0aGUgdGFyZ2V0IGRlZmluaXRpb24uCgpTdHJpY3QgbWF0Y2hpbmcgZXhhbXBsZTogYCJHRVQ6Oi9wZXRzImAKVGhpcyB3aWxsIHRhcmdldCBvbmx5IHRoZSAiR0VUIiBtZXRob2QgYW5kIHRoZSBzcGVjaWZpYyBwYXRoICIvcGV0cyIKCk1ldGhvZCB3aWxkY2FyZCBtYXRjaGluZyBleGFtcGxlOiBgIio6Oi9wZXRzImAKVGhpcyB3aWxsIHRhcmdldCBhbGwgbWV0aG9kcyAoJ2dldCcsICdxdWVyeScsICdwdXQnLCAncG9zdCcsICdkZWxldGUnLCAnb3B0aW9ucycsICdoZWFkJywgJ3BhdGNoJywgJ3RyYWNlJykgYW5kIHRoZSBzcGVjaWZpYwpwYXRoICIvcGV0cyIKClBhdGggd2lsZGNhcmQgbWF0Y2hpbmcgZXhhbXBsZTogYCJHRVQ6Oi9wZXRzLyoiYApUaGlzIHdpbGwgdGFyZ2V0IG9ubHkgdGhlICJHRVQiIG1ldGhvZCBhbmQgYW55IHBhdGggbWF0Y2hpbmcgYW55IGZvbGRlciBiZWhpbmQgdGhlICIvcGV0cyIsIGxpa2UgIi9wZXRzLzEyMyIgYW5kCiIvcGV0cy8xMjMvYnV5Ii4KCk1ldGhvZCAmIFBhdGggd2lsZGNhcmQgbWF0Y2hpbmcgZXhhbXBsZTogYCIqOjovcGV0cy8qImAKQSBjb21iaW5hdGlvbiBvZiB3aWxkY2FyZHMgZm9yIHRoZSBtZXRob2QgYW5kIHBhdGggcGFydHMgaXMgZXZlbiBwb3NzaWJsZS4KCiMjIyBGaWx0ZXIgLSBmbGFncy9pbnZlcnNlRmxhZ3MKCj0+ICoqZmxhZ3MqKjogUmVmZXJzIHRvIGEgY3VzdG9tIHByb3BlcnR5IHRoYXQgY2FuIGJlIHNldCBvbiBhbnkgZmllbGQgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpUaGlzIHdpbGwgcmVtb3ZlIGFsbCBmaWVsZHMgYW5kIGF0dGFjaGVkIGZpZWxkcyB0aGF0IG1hdGNoIHRoZSBmbGFncy4gSW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoaXMgd291bGQgbWVhbiB0aGF0IGFsbAppdGVtcyB3aXRoIHRoZSBmbGFnIGB4LWV4Y2x1ZGVgIHdvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCkZvciBleGFtcGxlOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogICAgdGl0bGU6IEFQSQogICAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgICAvcGV0czoKICAgICAgICBnZXQ6CiAgICAgICAgICAgIHgtZXhjbHVkZTogdHJ1ZQpgYGAKCj0+ICoqaW52ZXJzZUZsYWdzKio6IFRoaXMgb3B0aW9uIGRvZXMgdGhlIGludmVyc2UgZmlsdGVyaW5nLCBieSBrZWVwaW5nIG9ubHkgdGhlIHBhdGggb3BlcmF0aW9ucywgdGFncywgeC10YWdHcm91cHMgdGhhdCBtYXRjaCB0aGUgZmxhZyhzKS4gVGhpcyBpcyBhIHZlcnkgYWdncmVzc2l2ZSBvcHRpb24gdG8ga2VlcCBvbmx5IHRoZSBpdGVtcyB0aGF0IGFyZSBuZWVkZWQgYnV0IGl0IHdpbGwga2VlcCB0aGUgY29tcG9uZW50cy4gVGhlIGNvbXBvbmVudHMgY2FuIGJlc3QgYmUgZmlsdGVyZWQgb3V0LCBieSB1c2luZyB0aGUgIlt1bnVzZWRDb21wb25lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdGhpbTgxL29wZW5hcGktZm9ybWF0I2ZpbHRlci0tLXVudXNlZGNvbXBvbmVudHMpIiBmaWx0ZXIgb3B0aW9uLgoKIyMjIEZpbHRlciAtIGZsYWdWYWx1ZXMvaW52ZXJzZUZsYWdWYWx1ZXMKCj0+ICoqZmxhZ1ZhbHVlcyoqOiBSZWZlcnMgdG8gYSBmbGFnLCBjdXN0b20gcHJvcGVydHkgd2hpY2ggY2FuIGJlIHNldCBvbiBhbnkgZmllbGQgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQsIGFuZCB0aGUgY29tYmluYXRpb24gd2l0aCB0aGUgdmFsdWUgZm9yIHRoYXQgZmxhZy4KClRoaXMgd2lsbCByZW1vdmUgYWxsIGZpZWxkcyBhbmQgYXR0YWNoZWQgZmllbGRzIHRoYXQgbWF0Y2ggdGhlIGZsYWcgd2l0aCB0aGUgc3BlY2lmaWMgdmFsdWUuCgpBIGBmbGFnVmFsdWVzYCBleGFtcGxlOgoKYGBgeWFtbApmbGFnVmFsdWVzOgogICAgLSB4LXZlcnNpb246IDEuMAogICAgLSB4LXZlcnNpb246IDMuMApgYGAKSW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoaXMgd291bGQgbWVhbiB0aGF0IGFsbCBpdGVtcyB3aXRoIHRoZSBmbGFnIGB4LXZlcnNpb25gIHRoYXQgbWF0Y2hlcyBgeC12ZXJzaW9uOiAxLjBgIE9SIGB4LXZlcnNpb246IDMuMGAgd291bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogICAgdGl0bGU6IEFQSQogICAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgICAvcGV0czoKICAgICAgICBnZXQ6CiAgICAgICAgICAgIHgtdmVyc2lvbjogMS4wCmBgYAoKVGhlIGZpbHRlciBvcHRpb24gYGZsYWdWYWx1ZXNgIGFsc28gd2lsbCByZW1vdmUgZmxhZ3MgdGhhdCBjb250YWluIGFuIGFycmF5IG9mIHZhbHVlcyBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCkEgYGZsYWdWYWx1ZXNgIGV4YW1wbGU6CgpgYGB5YW1sCmZsYWdWYWx1ZXM6CiAgICAtIHgtdmVyc2lvbnM6IDEuMAogICAgLSB4LXZlcnNpb25zOiAyLjAKYGBgCgpJbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhpcyB3b3VsZCBtZWFuIHRoYXQgYWxsIGl0ZW1zIHdpdGggdGhlIGZsYWcgYHgtdmVyc2lvbnNgLCB3aGljaCBpcyBhbiBhcnJheSwgdGhhdCBtYXRjaCBgeC12ZXJzaW9uOiAxLjBgIE9SIGB4LXZlcnNpb246IDMuMGAgd291bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogICAgdGl0bGU6IEFQSQogICAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgICAvcGV0czoKICAgICAgICBnZXQ6CiAgICAgICAgICAgIHgtdmVyc2lvbnM6CiAgICAgICAgICAgICAgICAtIDEuMAogICAgICAgICAgICAgICAgLSAzLjAKICAgICAgICAgICAgICAgIC0gNS4wCmBgYAoKSGF2ZSBhIGxvb2sgYXQgW2ZsYWdWYWx1ZXNdKHRlc3QveWFtbC1maWx0ZXItY3VzdG9tLWZsYWdzdmFsdWUtdmFsdWUpIGFuZCBbZmxhZ1ZhbHVlcyBmb3IgYXJyYXkgdmFsdWVzXSh0ZXN0L3lhbWwtZmlsdGVyLWN1c3RvbS1mbGFnc3ZhbHVlLWFycmF5KSBmb3IgYSBwcmFjdGljYWwgZXhhbXBsZS4KCj0+ICoqaW52ZXJzZUZsYWdWYWx1ZXMqKjogVGhpcyBvcHRpb24gZG9lcyB0aGUgaW52ZXJzZSBmaWx0ZXJpbmcsIGJ5IGtlZXBpbmcgb25seSB0aGUgcGF0aCBvcGVyYXRpb25zLCB0YWdzLCB4LXRhZ0dyb3VwcyB0aGF0IG1hdGNoIHRoZSBmbGFnIHdpdGggdGhlIHNwZWNpZmljIHZhbHVlLiBUaGlzIGlzIGEgdmVyeSBhZ2dyZXNzaXZlIG9wdGlvbiB0byBrZWVwIG9ubHkgdGhlIGl0ZW1zIHRoYXQgYXJlIG5lZWRlZCBidXQgaXQgd2lsbCBrZWVwIHRoZSBjb21wb25lbnRzLiBUaGUgY29tcG9uZW50cyBjYW4gYmVzdCBiZSBmaWx0ZXJlZCBvdXQsIGJ5IHVzaW5nIHRoZSAiW3VudXNlZENvbXBvbmVudHNdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGltODEvb3BlbmFwaS1mb3JtYXQjZmlsdGVyLS0tdW51c2VkY29tcG9uZW50cykiIGZpbHRlciBvcHRpb24uCgojIyMgRmlsdGVyIC0gcmVzcG9uc2VDb250ZW50L2ludmVyc2VSZXNwb25zZUNvbnRlbnQKCj0+ICoqUmVzcG9uc2VDb250ZW50Kio6IFJlZmVycyB0byB0aGUgW1Jlc3BvbnNlIE9iamVjdCdzIGNvbnRlbnRdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI3Jlc3BvbnNlLW9iamVjdCkKCkEgcmVzcG9uc2VzIGBjb250ZW50YCBmaWx0ZXIgZXhhbXBsZToKCmBgYHlhbWwKcmVzcG9uc2VDb250ZW50OgogIC0gYXBwbGljYXRpb24vanNvbgpgYGAKClRoaXMgd2lsbCByZW1vdmUgYWxsIHRoZSBjb250ZW50IHRoYXQgbWF0Y2ggdGhlIG1lZGlhIHR5cGVzIGZyb20gdGhlIHJlc3BvbnNlcy4gSW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoaXMgd291bGQgbWVhbiB0aGF0IGFsbCBgYXBwbGljYXRpb24vanNvbmAKY29udGVudCBpdGVtcyB3b3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIE9wZW5BUEkgZG9jdW1lbnQKCkV4YW1wbGUgYmVmb3JlOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogICAgdGl0bGU6IEFQSQogICAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgL3BldDoKICAgIHBvc3Q6CiAgICAgIHRhZ3M6CiAgICAgICAgLSBwZXQKICAgICAgc3VtbWFyeTogQWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmUKICAgICAgZGVzY3JpcHRpb246IEFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlCiAgICAgIG9wZXJhdGlvbklkOiBhZGRQZXQKICAgICAgeC12aXNpYmlsaXR5OiB0cnVlCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBTdWNjZXNzZnVsIG9wZXJhdGlvbgogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24veG1sOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXQnCiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BldCcKICAgICAgICAnNDA1JzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBJbnZhbGlkIGlucHV0CmBgYAoKRXhhbXBsZSBhZnRlcjoKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogIC9wZXQ6CiAgICBwb3N0OgogICAgICB0YWdzOgogICAgICAgIC0gcGV0CiAgICAgIHN1bW1hcnk6IEFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlCiAgICAgIGRlc2NyaXB0aW9uOiBBZGQgYSBuZXcgcGV0IHRvIHRoZSBzdG9yZQogICAgICBvcGVyYXRpb25JZDogYWRkUGV0CiAgICAgIHgtdmlzaWJpbGl0eTogdHJ1ZQogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogU3VjY2Vzc2Z1bCBvcGVyYXRpb24KICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL3htbDoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0JwogICAgICAgICc0MDUnOgogICAgICAgICAgZGVzY3JpcHRpb246IEludmFsaWQgaW5wdXQKYGBgCgo9PiAqKmludmVyc2VSZXNwb25zZUNvbnRlbnQqKjogVGhpcyBvcHRpb24gZG9lcyB0aGUgaW52ZXJzZSBmaWx0ZXJpbmcsIGJ5IGtlZXBpbmcgb25seSB0aGUgY29udGVudCB3aXRoIG1lZGlhIHR5cGVzIGRlZmluZWQgYW5kIHJlbW92ZSBhbGwgb3RoZXIgY29udGVudC4KCiMjIyBGaWx0ZXIgLSByZXF1ZXN0Q29udGVudC9pbnZlcnNlUmVxdWVzdENvbnRlbnQKCj0+ICoqcmVxdWVzdENvbnRlbnQqKjogUmVmZXJzIHRvIHRoZSBbUmVxdWVzdCBCb2R5IE9iamVjdCdzIGNvbnRlbnRdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI3JlcXVlc3QtYm9keS1vYmplY3QpCgpBICByZXF1ZXN0IGJvZHkgYGNvbnRlbnRgIGZpbHRlciBleGFtcGxlOgoKYGBgeWFtbApyZXF1ZXN0Q29udGVudDoKICAtIGFwcGxpY2F0aW9uL2pzb24KYGBgCgpUaGlzIHdpbGwgcmVtb3ZlIGFsbCB0aGUgY29udGVudCB0aGF0IG1hdGNoIHRoZSBtZWRpYSB0eXBlcyBmcm9tIHRoZSByZXF1ZXN0IGJvZHkuIEluIHRoZSBleGFtcGxlIGJlbG93LCB0aGlzIHdvdWxkIG1lYW4gdGhhdCBhbGwgYGFwcGxpY2F0aW9uL2pzb25gCmNvbnRlbnQgaXRlbXMgd291bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRXhhbXBsZSBiZWZvcmU6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAvcGV0OgogICAgcG9zdDoKICAgICAgdGFnczoKICAgICAgICAtIHBldAogICAgICBzdW1tYXJ5OiBBZGQgYSBuZXcgcGV0IHRvIHRoZSBzdG9yZQogICAgICBkZXNjcmlwdGlvbjogQWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmUKICAgICAgb3BlcmF0aW9uSWQ6IGFkZFBldAogICAgICB4LXZpc2liaWxpdHk6IHRydWUKICAgICAgcmVxdWVzdEJvZHk6IAogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24veG1sOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXQnCiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BldCcKCmBgYAoKRXhhbXBsZSBhZnRlcjoKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogIC9wZXQ6CiAgICBwb3N0OgogICAgICB0YWdzOgogICAgICAgIC0gcGV0CiAgICAgIHN1bW1hcnk6IEFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlCiAgICAgIGRlc2NyaXB0aW9uOiBBZGQgYSBuZXcgcGV0IHRvIHRoZSBzdG9yZQogICAgICBvcGVyYXRpb25JZDogYWRkUGV0CiAgICAgIHgtdmlzaWJpbGl0eTogdHJ1ZQogICAgICByZXF1ZXN0Qm9keToKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL3htbDoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0JwpgYGAKCj0+ICoqaW52ZXJzZVJlcXVlc3RDb250ZW50Kio6IFRoaXMgb3B0aW9uIGRvZXMgdGhlIGludmVyc2UgZmlsdGVyaW5nLCBieSBrZWVwaW5nIG9ubHkgdGhlIGNvbnRlbnQgd2l0aCBtZWRpYSB0eXBlcyBkZWZpbmVkIGFuZCByZW1vdmUgYWxsIG90aGVyIGNvbnRlbnQgdHlwZXMgZnJvbSB0aGUgcmVxdWVzdCBib2R5LgoKIyMjIEZpbHRlciAtIHVudXNlZENvbXBvbmVudHMKCj0+ICoqdW51c2VkQ29tcG9uZW50cyoqOiBSZWZlcnMgdG8gYSBsaXN0IG9mIFtyZXVzYWJsZSBjb21wb25lbnQgdHlwZXNdKCBodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNjb21wb25lbnRzLW9iamVjdCksIGZyb20gd2hpY2ggdW51c2VkIGl0ZW1zIHdpbGwgYmUgcmVtb3ZlZC4KClRoaXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gc3RyaXAgdGhlIE9wZW5BUEkgZG9jdW1lbnQgZnJvbSBhbnkgdW51c2VkIGl0ZW1zIG9mIHRoZSB0YXJnZXRlZCBgY29tcG9uZW50c2AgdHlwZXMuCkFueSBpdGVtIGluIHRoZSBsaXN0IG9mIE9wZW5BUEkgYGNvbXBvbmVudHNgIHRoYXQgaXMgbm90IHJlZmVyZW5jZWQgYXMgYCRyZWZgLCB3aWxsIGdldCBtYXJrZWQgYW5kIHJlbW92ZWQgZnJvbSB0aGUgT3BlbkFQSSBkb2N1bWVudC4KClJFTUFSSzogV2Ugd2lsbCByZWN1cnNpdmVseSBzdHJpcCBhbGwgdW51c2VkIGNvbXBvbmVudHMsIHdpdGggYSBtYXhpbXVtIGRlcHRoIG9mIDEwIHRpbWVzLiBUaGlzIG1lYW5zIHRoYXQgIm5lc3RlZCIgY29tcG9uZW50cywgdGhhdCBiZWNvbWUgdW51c2VkLCB3aWxsIGFsc28gZ2V0IHJlbW92ZWQKClN1cHBvcnRlZCBjb21wb25lbnQgdHlwZXMgdGhhdCBjYW4gYmUgbWFya2VkIGFzICJ1bnVzZWQiOgotIHNjaGVtYXMKLSBwYXJhbWV0ZXJzCi0gZXhhbXBsZXMKLSBoZWFkZXJzCi0gcmVxdWVzdEJvZGllcwotIHJlc3BvbnNlcwotIG1lZGlhVHlwZXMKCiMjIyBGaWx0ZXIgLSB0ZXh0UmVwbGFjZQoKPT4gKip0ZXh0UmVwbGFjZSoqOiAic2VhcmNoICYgcmVwbGFjZSIgb3B0aW9uIHRvIHJlcGxhY2UgdGV4dCBpbiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uCgpUaGUgYHRleHRSZXBsYWNlYCBwcm92aWRlcyBhICJzZWFyY2ggJiByZXBsYWNlIiBtZXRob2QsIHRoYXQgd2lsbCBzZWFyY2ggZm9yIGEgdGV4dC93b3JkL2NoYXJhY3RlcnMgaW4gdGhlIE9wZW5BUEkgZGVzY3JpcHRpb24sIHN1bW1hcnksIFVSTCBmaWVsZHMgYW5kIHJlcGxhY2UgaXQgd2l0aCBhbm90aGVyIHRleHQvd29yZC9jaGFyYWN0ZXJzLgpUaGlzIGlzIHZlcnkgdXNlZnVsIHRvIHJlcGxhY2UgZGF0YSBpbiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgoKQSBgdGV4dFJlcGxhY2VgIGV4YW1wbGU6CgpgYGB5YW1sCnRleHRSZXBsYWNlOgogICAgLSBzZWFyY2hGb3I6ICdQZXRzJwogICAgICByZXBsYWNlV2l0aDogJ0RvZ3MnCiAgICAtIHNlYXJjaEZvcjogJ3N3YWdnZXIuaW8nCiAgICAgIHJlcGxhY2VXaXRoOiAnb3BlbmFwaXMub3JnJwpgYGAKClRoaXMgd2lsbCByZXBsYWNlIGFsbCAiUGV0cyIgd2l0aCAiRG9ncyIgJiAic3dhZ2dlci5pbyIgd2l0aCAib3BlbmFwaS5vcmciIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKIyMjIEZpbHRlciAtIHN0cmlwRmxhZ3MKCj0+ICoqc3RyaXBGbGFncyoqOiBSZWZlcnMgdG8gYSBsaXN0IG9mIGN1c3RvbSBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIHNldCBvbiBhbnkgZmllbGQgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpUaGUgYHN0cmlwRmxhZ3NgIHdpbGwgcmVtb3ZlIG9ubHkgdGhlIGZsYWdzLCB0aGUgbGlua2VkIHBhcmVudCBhbmQgcHJvcGVydGllcyB3aWxsIHJlbWFpbi4gSW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoaXMgd291bGQgbWVhbiB0aGF0IGFsbApmbGFncyBgeC1leGNsdWRlYCBpdHNlbGYgd291bGQgYmUgc3RyaXBwZWQgZnJvbSB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCkV4YW1wbGUgYmVmb3JlOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogICAgdGl0bGU6IEFQSQogICAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgICAvcGV0czoKICAgICAgICBnZXQ6CiAgICAgICAgICB4LWV4Y2x1ZGU6IHRydWUKICAgICAgICAgIHN1bW1hcnk6IEZpbmRzIFBldHMgYnkgc3RhdHVzCmBgYAoKRXhhbXBsZSBhZnRlcjoKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogICAgL3BldHM6CiAgICAgICAgZ2V0OgogICAgICAgICAgc3VtbWFyeTogRmluZHMgUGV0cyBieSBzdGF0dXMKYGBgCgojIyMgRmlsdGVyIC0gcHJlc2VydmVFbXB0eU9iamVjdHMKCj0+ICoqcHJlc2VydmVFbXB0eU9iamVjdHMqKjogUmVmZXJzIHRvIGFueSBwcm9wZXJ0aWVzIG9mIHlvdXIgT3BlbkFQSSBkb2N1bWVudCwgZnJvbSB3aGljaCBlbXB0eSBvYmplY3QgdmFsdWVzIHdvdWxkIGJlIGtlcHQuCgpUaGUgYHByZXNlcnZlRW1wdHlPYmplY3RzYCB3aWxsIHByZXNlcnZlIGFsbCBlbXB0eSBvYmplY3RzIGlmIHNldCB0byBgdHJ1ZWAuCgpZb3UgY2FuIGFsc28gcGFzcyBhIGxpc3Qgb2Yga2V5cyBmcm9tIHdoaWNoIHByZXNlcnZlIGVtcHR5IG9iamVjdHMuIEZvciBpbnN0YW5jZSBhIGBbJ3NjaGVtYSddYCB2YWx1ZSB3b3VsZCBvbmx5IHByZXZlbnQgcmVtb3ZhbCBvZiBlbXB0eSBvYmplY3RzIGhhdmluZyBmb3Iga2V5IGBzY2hlbWFgLgoKUkVNQVJLOiBQbGVhc2Ugbm90ZSB0aGF0IG9wZW5hcGktZm9ybWF0IGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gcmVtb3ZlIGFsbCBlbXB0eSBvYmplY3RzIGZyb20geW91ciBkb2N1bWVudCwgZXhjZXB0IGZvciBpdGVtcyBvZiBleGFtcGxlcywgc2VjdXJpdHksIHNjaGVtYXMsIGRlZmF1bHQsIG9uZU9mLCBhbGxPZi4KCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogICAgL3BldHM6CiAgICAgICAgcG9zdDoKICAgICAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgICAgICBkZXNjcmlwdGlvbjogQ3JlYXRlIGEgbmV3IHBldCBpbiB0aGUgc3RvcmUKICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgICAgc2NoZW1hOiB7fQpgYGAKCkV4YW1wbGUgYWZ0ZXIgKHdpdGggYHByZXNlcnZlRW1wdHlPYmplY3RzOiBmYWxzZWApOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogICAgdGl0bGU6IEFQSQogICAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgICAvcGV0czoKICAgICAgICBwb3N0OgogICAgICAgICAgcmVxdWVzdEJvZHk6CiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBDcmVhdGUgYSBuZXcgcGV0IGluIHRoZSBzdG9yZQogICAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246IHt9CmBgYAoKIyMgT3BlbkFQSSBmb3JtYXR0aW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucwoKVG9vbHMgbGlrZSBbc3BlY3RyYWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9wbGlnaHRpby9zcGVjdHJhbCkgb3IgW3NwZWNjeV0oaHR0cHM6Ly9zcGVjY3kuaW8vKSwgb3IgYW55IG9mIHRoZSBbbGludGluZyB0b29sc10oaHR0cHM6Ly9ub3JkaWNhcGlzLmNvbS84LW9wZW5hcGktbGludGVycy8pLCBwcm92aWRlIGEgbWFubmVyIHRvIHZhbGlkYXRlICYgbGludCBPcGVuQVBJIHNwZWNpZmljYXRpb25zIHRvIGJlIHVuaWZvcm0uIFRoZSBsaW50aW5nIHRvb2wgaW5mb3JtcyBhYm91dCB0aGUgaW5jb3JyZWN0IHVzYWdlIG9mIE9wZW5BUEkgcHJvcGVydGllcyAmIGluY29uc2lzdGVudCBmaWVsZCBuYW1lcy4KVGhpcyBpcyB2ZXJ5IHVzZWZ1bCBhbmQgaGVscHMgdG8gZ3VhcmQgdGhlIHF1YWxpdHkgb2YgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4gVGhleSBpbmZvcm0gd2hpY2ggZmllbGRzIHRvIGNvcnJlY3Qgc28gdGhhdCB0aGUgc3BlY2lmaWNhdGlvbiB3aWxsIGNvbXBseSB3aXRoIGFsbCB0aGUgZGVmaW5lZCBsaW50aW5nIHJ1bGVzLgoKVGhlIG9wZW5hcGktZm9ybWF0IENMSSBmb3JtYXR0aW5nIG9wdGlvbiBjYW4gYXNzaXN0IHdpdGgga2VlcGluZyB0aGUgZmllbGQgbmFtZXMgY29uc2lzdGVudCBieSBhdXRvbWF0aWNhbGx5IGNoYW5naW5nIHRoZSBjYXNpbmcgb2YgdGhlIHByb3BlcnRpZXMva2V5cy9uYW1lcyBmb3IgdGhlIGRpZmZlcmVudCBlbGVtZW50cyBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KVGhlIGRlc2lyZWQgY2FzaW5nIGNhbiBiZSBkZWZpbmVkIHBlciBPcGVuQVBJIGtleS9lbGVtZW50IChzZWUgbGlzdCBiZWxvdykuClRoZSBrZXlzIHRoYXQgYXJlIG5vdCBzcGVjaWZpZWQgd2lsbCBrZWVwIHRoZWlyIGNhc2luZyBsaWtlIGl0IGlzIGluIHRoZSBvcmlnaW5hbCBPcGVuQVBJIGRvY3VtZW50LCBzbyBvbmx5IGZvciBkZWZpbmVkIGZpZWxkcywgdGhlIGNhc2luZyB3aWxsIGJlIGNoYW5nZWQuCgp8IEtleSAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9wZW5BUEkgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IG9wZXJhdGlvbklkICAgICAgICAgICAgICAgIHwgQ2hhbmdlcyBvcGVyYXRpb24gSUQncyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBPcGVyYXRpb25zIE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtvcGVyYXRpb24tb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNvcGVyYXRpb24tb2JqZWN0KXwKfCBwcm9wZXJ0aWVzICAgICAgICAgICAgICAgICB8IENoYW5nZXMgcHJvcGVydHkga2V5cyBvZiB0aGUgc2NoZW1hcyBvZiB0aGUgaW5saW5lIHJlc3BvbnNlL3JlcXVlc3RCb2R5ICYgY29tcG9uZW50cyAgICAgICAgICAgICAgICAgfCBbc2NoZW1hT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNzY2hlbWFPYmplY3QpIHwKfCBwYXJhbWV0ZXJzQ29va2llICAgICAgICAgICB8IENoYW5nZXMgdGhlIGNvb2tpZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXJzIGlubGluZSAmIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbcGFyYW1ldGVyLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcGFyYW1ldGVyLW9iamVjdCkgfAp8IHBhcmFtZXRlcnNQYXRoICAgICAgICAgICAgIHwgQ2hhbmdlcyB0aGUgcGF0aCBuYW1lIG9mIHRoZSBwYXJhbWV0ZXJzIGlubGluZSAmIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtwYXJhbWV0ZXItb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNwYXJhbWV0ZXItb2JqZWN0KSB8CnwgcGFyYW1ldGVyc0hlYWRlciAgICAgICAgICAgfCBDaGFuZ2VzIHRoZSBoZWFkZXIgbmFtZSBvZiB0aGUgcGFyYW1ldGVycyBpbmxpbmUgJiBtb2RlbHMgaW4gdGhlIGNvbXBvbmVudHMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW3BhcmFtZXRlci1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI3BhcmFtZXRlci1vYmplY3QpIHwKfCBwYXJhbWV0ZXJzUXVlcnkgICAgICAgICAgICB8IENoYW5nZXMgdGhlIHF1ZXJ5IG5hbWUgb2YgdGhlIHBhcmFtZXRlcnMgaW5saW5lICYgbW9kZWxzIGluIHRoZSBjb21wb25lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbcGFyYW1ldGVyLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcGFyYW1ldGVyLW9iamVjdCkgfAp8IGNvbXBvbmVudHNQYXJhbWV0ZXJzQ29va2llIHwgQ2hhbmdlcyB0aGUga2V5IG9mIHRoZSBjb29raWUgbW9kZWxzIGluIHRoZSBjb21wb25lbnRzIHBhcmFtZXRlcnMgc2VjdGlvbnMgJiAiJHJlZiIgbGlua3MgICAgICAgICAgICB8IFtjb21wb25lbnRzLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjY29tcG9uZW50cy1vYmplY3QpIHwKfCBjb21wb25lbnRzUGFyYW1ldGVyc1BhdGggICB8IENoYW5nZXMgdGhlIGtleSBvZiB0aGUgcGF0aCBtb2RlbHMgaW4gdGhlIGNvbXBvbmVudHMgcGFyYW1ldGVycyBzZWN0aW9ucyAmICIkcmVmIiBsaW5rcyAgICAgICAgICAgICAgfCBbY29tcG9uZW50cy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSB8CnwgY29tcG9uZW50c1BhcmFtZXRlcnNRdWVyeSAgfCBDaGFuZ2VzIHRoZSBrZXkgb2YgdGhlIHF1ZXJ5IG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyBwYXJhbWV0ZXJzIHNlY3Rpb25zICYgIiRyZWYiIGxpbmtzICAgICAgICAgICAgIHwgW2NvbXBvbmVudHMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNjb21wb25lbnRzLW9iamVjdCkgfAp8IGNvbXBvbmVudHNQYXJhbWV0ZXJzSGVhZGVyIHwgQ2hhbmdlcyB0aGUga2V5IG9mIHRoZSBoZWFkZXIgbW9kZWxzIGluIHRoZSBjb21wb25lbnRzIHBhcmFtZXRlcnMgc2VjdGlvbnMgJiAiJHJlZiIgbGlua3MgICAgICAgICAgICB8IFtjb21wb25lbnRzLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjY29tcG9uZW50cy1vYmplY3QpIHwKfCBjb21wb25lbnRzU2NoZW1hcyAgICAgICAgICB8IENoYW5nZXMgdGhlIGtleSBvZiB0aGUgc2NoZW1hIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyBzZWN0aW9ucyAmICIkcmVmIiBsaW5rcyAgICAgICAgICAgICAgICAgICAgICAgfCBbY29tcG9uZW50cy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSB8CnwgY29tcG9uZW50c0V4YW1wbGVzICAgICAgICAgfCBDaGFuZ2VzIHRoZSBrZXkgb2YgdGhlIGV4YW1wbGUgbW9kZWxzIGluIHRoZSBjb21wb25lbnRzIHNlY3Rpb25zICYgIiRyZWYiIGxpbmtzICAgICAgICAgICAgICAgICAgICAgIHwgW2NvbXBvbmVudHMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNjb21wb25lbnRzLW9iamVjdCkgfAp8IGNvbXBvbmVudHNIZWFkZXJzICAgICAgICAgIHwgQ2hhbmdlcyB0aGUga2V5IG9mIHRoZSBoZWFkZXIgbW9kZWxzIGluIHRoZSBjb21wb25lbnRzIHNlY3Rpb25zICYgIiRyZWYiIGxpbmtzICAgICAgICAgICAgICAgICAgICAgICB8IFtjb21wb25lbnRzLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjY29tcG9uZW50cy1vYmplY3QpIHwKfCBjb21wb25lbnRzUmVzcG9uc2VzICAgICAgICB8IENoYW5nZXMgdGhlIGtleSBvZiB0aGUgcmVzcG9uc2UgbW9kZWxzIGluIHRoZSBjb21wb25lbnRzIHNlY3Rpb25zICYgIiRyZWYiIGxpbmtzICAgICAgICAgICAgICAgICAgICAgfCBbY29tcG9uZW50cy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSB8CnwgY29tcG9uZW50c1JlcXVlc3RCb2RpZXMgICAgfCBDaGFuZ2VzIHRoZSBrZXkgb2YgdGhlIHJlcXVlc3QgYm9keSBtb2RlbHMgaW4gdGhlIGNvbXBvbmVudHMgc2VjdGlvbnMgJiAiJHJlZiIgbGlua3MgICAgICAgICAgICAgICAgIHwgW2NvbXBvbmVudHMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNjb21wb25lbnRzLW9iamVjdCkgfAp8IGNvbXBvbmVudHNTZWN1cml0eVNjaGVtZXMgIHwgQ2hhbmdlcyB0aGUga2V5IG9mIHRoZSBzZWN1cml0eSBzY2hlbWVzIGluIHRoZSBjb21wb25lbnRzIHNlY3Rpb25zICYgIiRyZWYiIGxpbmtzICAgICAgICAgICAgICAgICAgICB8IFtjb21wb25lbnRzLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjY29tcG9uZW50cy1vYmplY3QpIHwKCiMjIyBDYXNpbmcgb3B0aW9ucwoKfCBDYXNpbmcgdHlwZSAgICAgIHwgQ2FzaW5nIGFsaWFzIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEV4YW1wbGUgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tIHwKfCDwn5CqIGNhbWVsQ2FzZSAgICAgfCBjYW1lbENhc2UgICAgfCBjb252ZXJ0cyBhIHN0cmluZ3MgdG8gYGNhbWVsQ2FzZWAgICAgICAgICAgICAgICAgIHwgYG9wZW5hcGlGb3JtYXRgICB8Cnwg8J+RqOKAjfCfj6sgUGFzY2FsQ2FzZSAgICB8IFBhc2NhbENhc2UgICB8IGNvbnZlcnRzIGEgc3RyaW5ncyB0byBgUGFzY2FsQ2FzZWAgICAgICAgICAgICAgICAgfCBgT3BlbmFwaUZvcm1hdGAgIHwKfCDwn6WZIGtlYmFiLWNhc2UgICAgfCBrZWJhYkNhc2UgICAgfCBjb252ZXJ0cyBhIHN0cmluZ3MgdG8gYGtlYmFiLWNhc2VgICAgICAgICAgICAgICAgIHwgYG9wZW5hcGktZm9ybWF0YCB8Cnwg8J+agiBUcmFpbi1DYXNlICAgIHwgVHJhaW5DYXNlICAgIHwgY29udmVydHMgYSBzdHJpbmdzIHRvIGBUcmFpbi1DYXNlYCAgICAgICAgICAgICAgICB8IGBPcGVuYXBpLUZvcm1hdGAgfAp8IPCfkI0gc25ha2VfY2FzZSAgICB8IHNuYWtlQ2FzZSAgICB8IGNvbnZlcnRzIGEgc3RyaW5ncyB0byBgc25ha2VfY2FzZWAgICAgICAgICAgICAgICAgfCBgb3BlbmFwaV9mb3JtYXRgIHwKfCDwn5WKIEFkYV9DYXNlICAgICAgfCBBZGFDYXNlICAgICAgfCBjb252ZXJ0cyBhIHN0cmluZ3MgdG8gYEFkYV9DYXNlYCAgICAgICAgICAgICAgICAgIHwgYE9wZW5hcGlfRm9ybWF0YCB8Cnwg8J+ToyBDT05TVEFOVF9DQVNFIHwgY29uc3RhbnRDYXNlIHwgY29udmVydHMgYSBzdHJpbmdzIHRvIGBDT05TVEFOVF9DQVNFYCAgICAgICAgICAgICB8IGBPUEVOQVBJX0ZPUk1BVGAgfAp8IPCfkZQgQ09CT0wtQ0FTRSAgICB8IGNvYm9sQ2FzZSAgICB8IGNvbnZlcnRzIGEgc3RyaW5ncyB0byBgQ09CT0wtQ0FTRWAgICAgICAgICAgICAgICAgfCBgT1BFTkFQSS1GT1JNQVRgIHwKfCDwn5ONIERvdC5ub3RhdGlvbiAgfCBkb3ROb3RhdGlvbiAgfCBjb252ZXJ0cyBhIHN0cmluZ3MgdG8gYERvdC5ub3RhdGlvbmAgICAgICAgICAgICAgIHwgYG9wZW5hcGkuZm9ybWF0YCB8Cnwg8J+bsCBTcGFjZSBjYXNlICAgIHwgc3BhY2VDYXNlICAgIHwgY29udmVydHMgYSBzdHJpbmdzIHRvIGBTcGFjZSBjYXNlYCAod2l0aCBzcGFjZXMpICB8IGBvcGVuYXBpIGZvcm1hdGAgfAp8IPCfj5sgQ2FwaXRhbCBDYXNlICB8IGNhcGl0YWxDYXNlICB8IGNvbnZlcnRzIGEgc3RyaW5ncyB0byBgQ2FwaXRhbCBDYXNlYCAod2l0aCBzcGFjZXMpfCBgT3BlbmFwaSBGb3JtYXRgIHwKfCDwn5ShIGxvd2VyIGNhc2UgICAgfCBsb3dlckNhc2UgICAgfCBjb252ZXJ0cyBhIHN0cmluZ3MgdG8gYGxvd2VyIGNhc2VgICh3aXRoIHNwYWNlcykgIHwgYG9wZW5hcGkgZm9ybWF0YCB8Cnwg8J+UoCBVUFBFUiBDQVNFICAgIHwgdXBwZXJDYXNlICAgIHwgY29udmVydHMgYSBzdHJpbmdzIHRvIGBVUFBFUiBDQVNFYCAod2l0aCBzcGFjZXMpICB8IGBPUEVOQVBJIEZPUk1BVGAgfAoKPiBSRU1BUks6IEFsbCBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIHN0cmlwcGVkIGR1cmluZyBjb252ZXJzaW9uLCBleGNlcHQgZm9yIHRoZSBgQGAgYW5kIGAkYCwgc2luY2UgdGhleSBjYW4gYmUgcGFydCBvZiB0aGUgcXVlcnkgc3RyaW5ncy4KClRoZSBjYXNpbmcgb3B0aW9ucyBhcmUgcHJvdmlkZWQgYnkgdGhlIG5hbm8gTlBNIFtjYXNlLWFueXRoaW5nXShodHRwczovL2dpdGh1Yi5jb20vbWVzcXVlZWIvY2FzZS1hbnl0aGluZykgcGFja2FnZS4KCiMjIyBGb3JtYXQgY2FzaW5nIC0gb3BlcmF0aW9uSWQKCj0+ICoqb3BlcmF0aW9uSWQqKjogUmVmZXJzIHRvIHRoZSBgb3BlcmF0aW9uSWRgIHByb3BlcnRpZXMgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpGb3JtYXR0aW5nIGNhc2luZyBleGFtcGxlOgoKYGBgeWFtbApvcGVyYXRpb25JZDoga2ViYWItY2FzZQpgYGAKCkV4YW1wbGUgYmVmb3JlOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMwpwYXRoczoKICAgIC9wZXRzOgogICAgICAgIGdldDoKICAgICAgICAgIG9wZXJhdGlvbklkOiBnZXRQZXRzCmBgYAoKb3BlbmFwaS1mb3JtYXQgd2lsbCBmb3JtYXQgdGhlICJnZXRQZXRzIiBmcm9tIHRoZSBvcmlnaW5hbCBjYW1lbGNhc2UgdG8ga2ViYWItY2FzZS4KCkV4YW1wbGUgYWZ0ZXI6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4zCnBhdGhzOgogICAgL3BldHM6CiAgICAgICAgZ2V0OgogICAgICAgICAgb3BlcmF0aW9uSWQ6IGdldC1wZXRzCmBgYAoKIyMjIEZvcm1hdCBjYXNpbmcgLSBtb2RlbCAmIHNjaGVtYSBwcm9wZXJ0aWVzCgo9PiAqKnByb3BlcnRpZXMqKjogUmVmZXJzIHRvIGFsbCB0aGUgc2NoZW1hIHByb3BlcnRpZXMsIHRoYXQgYXJlIGRlZmluZWQgaW5saW5lIGluIHRoZSBwYXRocyByZXF1ZXN0IGJvZGllcyAmIHJlc3BvbnNlcyBhbmQgdGhlIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyBzZWN0aW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9ybWF0dGluZyBjYXNpbmcgZXhhbXBsZToKCmBgYHlhbWwKcHJvcGVydGllczogc25ha2VfY2FzZQpgYGAKCkV4YW1wbGUgYmVmb3JlOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMwpjb21wb25lbnRzOgogICAgc2NoZW1hczoKICAgICAgICBVc2VyTW9kZWw6CiAgICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgaWQ6CiAgICAgICAgICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgICAgICAgICAgIGV4YW1wbGU6IDEwCiAgICAgICAgICAgICAgICBlbWFpbEFkZHJlc3M6CiAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgZXhhbXBsZTogam9obkBkb2UuY29tCiAgICAgICAgICAgICAgICBmaXJzdE5hbWU6CiAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgZXhhbXBsZTogSm9obgpgYGAKClRoZSBDTEkgd2lsbCBmb3JtYXQgYWxsIHRoZSBwcm9wZXJ0aWVzIGxpa2U6ICJpZCIsICJ1c2VybmFtZSIsICJmaXJzdE5hbWUiIGZyb20gdGhlIG9yaWdpbmFsIGNhbWVsY2FzZSB0byBzbmFrZV9jYXNlLgoKRXhhbXBsZSBhZnRlcjoKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjMKY29tcG9uZW50czoKICAgIHNjaGVtYXM6CiAgICAgICAgVXNlck1vZGVsOgogICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgICAgIGlkOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgICAgICAgICAgICBleGFtcGxlOiAxMAogICAgICAgICAgICAgICAgZW1haWxfYWRkcmVzczoKICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgICBleGFtcGxlOiBqb2huQGRvZS5jb20KICAgICAgICAgICAgICAgIGZpcnN0X25hbWU6CiAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgZXhhbXBsZTogSm9obgpgYGAKCiMjIyBGb3JtYXQgY2FzaW5nIC0gY29tcG9uZW50IGtleXMKCj0+ICoqY29tcG9uZW50c1NjaGVtYXMgLyBjb21wb25lbnRzRXhhbXBsZXMgLyBjb21wb25lbnRzUGFyYW1ldGVyc0Nvb2tpZSAvIGNvbXBvbmVudHNQYXJhbWV0ZXJzSGVhZGVyIC8gY29tcG9uZW50c1BhcmFtZXRlcnNRdWVyeSAvIGNvbXBvbmVudHNQYXJhbWV0ZXJzUXVlcnkgLyBjb21wb25lbnRzUGFyYW1ldGVyc1BhdGggLyBjb21wb25lbnRzSGVhZGVycyAvIGNvbXBvbmVudHNSZXNwb25zZXMgLyBjb21wb25lbnRzUmVxdWVzdEJvZGllcyAvIGNvbXBvbmVudHNTZWN1cml0eVNjaGVtZXMqKjogUmVmZXJzIHRvIGFsbCB0aGUgbW9kZWwgb2JqZWN0cyB0aGF0IGFyZSBkZWZpbmVkIGluIHRoZSBjb21wb25lbnRzIHNlY3Rpb24gb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpGb3JtYXR0aW5nIGNhc2luZyBleGFtcGxlOgoKYGBgeWFtbApjb21wb25lbnRzU2NoZW1hczogUGFzY2FsQ2FzZQpgYGAKCkV4YW1wbGUgYmVmb3JlOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMwpwYXRoczoKICAgIC9vcmRlcnM6CiAgICAgICAgZ2V0OgogICAgICAgICAgICByZXNwb25zZXM6CiAgICAgICAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9vcmRlci1tb2RlbCcKY29tcG9uZW50czoKICAgIHNjaGVtYXM6CiAgICAgICAgdXNlck1vZGVsOgogICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICBvcmRlci1tb2RlbDoKICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgcGV0X21vZGVsOgogICAgICAgICAgICB0eXBlOiBvYmplY3QKYGBgCgpvcGVuYXBpLWZvcm1hdCB3aWxsIGZvcm1hdCBhbGwgdGhlIGNvbXBvbmVudCBrZXlzIGxpa2U6ICJ1c2VyTW9kZWwiLCAib3JkZXItbW9kZWwiLCAicGV0X21vZGVsIiB0byBQYXNjYWxDYXNlLCBpbmNsdWRpbmcgZm9ybWF0dGluZyBhbGwgdGhlICIkcmVmIiB1c2VkIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRXhhbXBsZSBhZnRlcjoKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjMKcGF0aHM6CiAgICAvb3JkZXJzOgogICAgICAgIGdldDoKICAgICAgICAgICAgcmVzcG9uc2VzOgogICAgICAgICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvT3JkZXJNb2RlbCcKY29tcG9uZW50czoKICAgIHNjaGVtYXM6CiAgICAgICAgVXNlck1vZGVsOgogICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICBPcmRlck1vZGVsOgogICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICBQZXRNb2RlbDoKICAgICAgICAgICAgdHlwZTogb2JqZWN0CmBgYAoKIyMjIEZvcm1hdCBjYXNpbmcgLSBwYXJhbWV0ZXIgbmFtZXMKCj0+ICoqY29tcG9uZW50c1BhcmFtZXRlcnNDb29raWUgLyBjb21wb25lbnRzUGFyYW1ldGVyc1BhdGggLyBjb21wb25lbnRzUGFyYW1ldGVyc1F1ZXJ5IC8gY29tcG9uZW50c1BhcmFtZXRlcnNIZWFkZXIqKjogUmVmZXJzIHRvICJuYW1lIiBpbiB0aGUgUGFyYW1ldGVycyB0eXBlczogUGF0aCwgUXVlcnkgb3IgSGVhZGVyLCB3aGljaCBjYW4gYmUgZGVmaW5lZCBpbmxpbmUgaW4gdGhlIFBhdGggb3IgYXMgYSByZWZlcmVuY2UgaW4gdGhlIGNvbXBvbmVudHMgb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpGb3JtYXR0aW5nIGNhc2luZyBleGFtcGxlOgoKYGBgeWFtbApjb21wb25lbnRzUGFyYW1ldGVyc1BhdGg6IGtlYmFiLWNhc2UKYGBgCgpFeGFtcGxlIGJlZm9yZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjMKcGF0aHM6CiAgICAnL3BldC97cGV0SWR9JzoKICAgICAgICBnZXQ6CiAgICAgICAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgICAgICAgICAtIG5hbWU6IHBldElkCiAgICAgICAgICAgICAgICAgIGluOiBwYXRoCiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBJRCBvZiBwZXQgdG8gcmV0dXJuCiAgICAgICAgICAgICAgICAtICRyZWY6ICcjL2NvbXBvbmVudHMvcGFyYW1ldGVycy9MaW1pdFBhcmFtJwpjb21wb25lbnRzOgogICAgcGFyYW1ldGVyczoKICAgICAgICBMaW1pdFBhcmFtOgogICAgICAgICAgICBuYW1lOiBsaW1pdFBhcmFtCiAgICAgICAgICAgIGluOiBxdWVyeQogICAgICAgICAgICBkZXNjcmlwdGlvbjogbWF4IHJlY29yZHMgdG8gcmV0dXJuCmBgYAoKVGhlIENMSSB3aWxsIGZvcm1hdCB0aGUgIm5hbWUiIG9mIHRoZSBwYXJhbWV0ZXJzOiBQYXRoLCBRdWVyeSBvciBIZWFkZXIgbGlrZTogInBldElkIiwgImxpbWl0UGFyYW0iIHRvIGtlYmFiLWNhc2UgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpFeGFtcGxlIGFmdGVyOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMwpwYXRoczoKICAgICcvcGV0L3twZXRJZH0nOgogICAgICAgIGdldDoKICAgICAgICAgICAgcGFyYW1ldGVyczoKICAgICAgICAgICAgICAgIC0gbmFtZTogcGV0LWlkCiAgICAgICAgICAgICAgICAgIGluOiBwYXRoCiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBJRCBvZiBwZXQgdG8gcmV0dXJuCiAgICAgICAgICAgICAgIC0gJHJlZjogJyMvY29tcG9uZW50cy9wYXJhbWV0ZXJzL0xpbWl0UGFyYW0nCmNvbXBvbmVudHM6CiAgICBwYXJhbWV0ZXJzOgogICAgICAgIExpbWl0UGFyYW06CiAgICAgICAgICAgIG5hbWU6IGxpbWl0LXBhcmFtCiAgICAgICAgICAgIGluOiBxdWVyeQogICAgICAgICAgICBkZXNjcmlwdGlvbjogbWF4IHJlY29yZHMgdG8gcmV0dXJuCmBgYAoKIyMjIE9wZW5BUEkgR2VuZXJhdGUgT3B0aW9ucwoKVGhlIE9wZW5BUEkgZm9ybWF0dGluZyB0b29sIGFsbG93cyB5b3UgdG8gZ2VuZXJhdGUgdmFyaW91cyBlbGVtZW50cyBzdWNoIGFzIGBvcGVyYXRpb25JZGAsIGFuZCBtb3JlIHVzaW5nIGN1c3RvbWl6YWJsZSB0ZW1wbGF0ZXMuIFRoZXNlIHRlbXBsYXRlcyBlbmFibGUgZHluYW1pYyBnZW5lcmF0aW9uIG9mIG1pc3Npbmcgb3IgaW5jb21wbGV0ZSB2YWx1ZXMgaW4geW91ciBPcGVuQVBJIHNwZWNpZmljYXRpb24sIGVuc3VyaW5nIGNvbnNpc3RlbmN5IGFuZCBhZGhlcmVuY2UgdG8geW91ciBjb252ZW50aW9ucy4KCk9wdGlvbnMgZm9yIGdlbmVyYXRpbmcgZWxlbWVudHM6CgotIGBvcGVyYXRpb25JZFRlbXBsYXRlYDogR2VuZXJhdGUgdGhlIGBvcGVyYXRpb25JZGAgdXNpbmcgcGxhY2Vob2xkZXJzIGxpa2UgYDxtZXRob2Q+YCwgYDxwYXRoUGFydDI+YCwgZXRjLgotIGBvdmVyd3JpdGVFeGlzdGluZ2A6IFNldCB0byBgdHJ1ZWAgb3IgYGZhbHNlYCB0byBjb250cm9sIHdoZXRoZXIgZXhpc3RpbmcgdmFsdWVzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiAoZGVmYXVsdDogYGZhbHNlYCkuCgp8IEtleSAgICAgICAgICAgICAgICAgfCBPcHRpb25zICAgICAgICAgICAgICAgICAgICAgICAgfCBPcGVuQVBJIFJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IG9wZXJhdGlvbklkVGVtcGxhdGUgfCBDdXN0b21pemFibGUgd2l0aCBwbGFjZWhvbGRlcnMgfCBbb3BlcmF0aW9uLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjb3BlcmF0aW9uLW9iamVjdCkgfAp8IG92ZXJ3cml0ZUV4aXN0aW5nICAgfCBgdHJ1ZWAgLyBgZmFsc2VgICAgICAgICAgICAgICAgfCBOL0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKU2VlIFtDTEkgZ2VuZXJhdGUgdXNhZ2VdKCNjbGktZ2VuZXJhdGUtdXNhZ2UpIGZvciBhbiBleGFtcGxlIGFuZCB0aGUgYXZhaWxhYmxlIHRlbXBsYXRlIG9wdGlvbnMuCgojIyBDTEkgc29ydCB1c2FnZQoKLSBGb3JtYXQgYSBzcGVjIHdpdGggdGhlIGRlZmF1bHQgc29ydGluZyBhbmQgc2F2ZXMgaXQgYXMgYSBuZXcgSlNPTiBmaWxlCgpgYGBzaGVsbAokIG9wZW5hcGktZm9ybWF0IG9wZW5hcGkuanNvbiAtbyBvcGVuYXBpLWZvcm1hdHRlZC5qc29uCmBgYAoKLSBGb3JtYXQgYSByZW1vdGUgc3BlYyB3aXRoIHRoZSBkZWZhdWx0IHNvcnRpbmcgYW5kIHNhdmVzIGl0IGFzIGEgbmV3IEpTT04gZmlsZQoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9tYWluL2V4YW1wbGVzL3YzLjAvYXBpLXdpdGgtZXhhbXBsZXMuanNvbiAtbyBvcGVuYXBpLWZvcm1hdHRlZC5qc29uCmBgYAoKLSBGb3JtYXQgYW4gT3BlbkFQSSBKU09OIGRvY3VtZW50IHdpdGggdGhlIGRlZmF1bHQgc29ydGluZyBhbmQgc2F2ZXMgaXQgYXMgYSBuZXcgWUFNTCBmaWxlCgpgYGBzaGVsbAokIG9wZW5hcGktZm9ybWF0IG9wZW5hcGkuanNvbiAtbyBvcGVuYXBpLnlhbWwKYGBgCgotIEZvcm1hdCBhbiBPcGVuQVBJIGRvY3VtZW50IHVzaW5nIGEgY29uZmlndXJhdGlvbiBmaWxlIGNvbnRhaW5pbmcgYWxsIHRoZSBvcHRpb25zIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHBhc3NlZCB2aWEgdGhlIENMSS4gCgpgYGBzaGVsbAokIG9wZW5hcGktZm9ybWF0IG9wZW5hcGkueWFtbCAtLWNvbmZpZ0ZpbGUgb3BlbmFwaS1mb3JtYXQtb3B0aW9ucy5qc29uCmBgYAoKVGhlIGZvcm1hdHRpbmcgd2lsbCBoYXBwZW4gYmFzZWQgb24gYWxsIHRoZSBvcHRpb25zIHNldCBpbiB0aGUgYG9wZW5hcGktZm9ybWF0LW9wdGlvbnMuanNvbmAgZmlsZS4gQWxsIHRoZQphdmFpbGFibGUgW09wZW5BUEkgZm9ybWF0IG9wdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGltODEvb3BlbmFwaS1mb3JtYXQjb3BlbmFwaS1mb3JtYXQtb3B0aW9ucykgY2FuIGJlIHVzZWQgaW4gdGhlIGNvbmZpZyBmaWxlLgoKLSBGb3JtYXQgYW4gT3BlbkFQSSBkb2N1bWVudCB3aXRoIHRoZSBkZWZhdWx0IHNvcnRpbmcgYW5kIG91dHB1dCBpdCBhcyBKU09OIHRvIFNURE9VVAoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLS1qc29uCmBgYAoKLSBGb3JtYXQgYW4gT3BlbkFQSSBkb2N1bWVudCB3aXRoIHRoZSBkZWZhdWx0IHNvcnRpbmcgYW5kIG91dHB1dCBpdCBhcyBZQU1MIHRvIFNURE9VVAoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLS15YW1sCmBgYAoKLSBGb3JtYXQgYW4gT3BlbkFQSSBKU09OIGRvY3VtZW50IHdpdGggdGhlIGRlZmF1bHQgc29ydGluZyBhbmQgc2F2ZSBpdCBhcyBZQU1MCgpgYGBzaGVsbAokIG9wZW5hcGktZm9ybWF0IG9wZW5hcGkuanNvbiAtbyBvcGVuYXBpLnlhbWwKYGBgCgotIEZvcm1hdCBhbiBPcGVuQVBJIGRvY3VtZW50IGJ1dCBza2lwIHRoZSBzb3J0aW5nIGFuZCBzYXZlIGl0IGFzIGEgbmV3IEpTT04gZmlsZQoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS1mb3JtYXR0ZWQuanNvbiAtLW5vLXNvcnQKYGBgCgpUaGlzIHNob3VsZCBrZWVwIHRoZSBPcGVuQVBJIGZpZWxkcyBpbiB0aGUgc2FtZSBvcmRlci4gVGhpcyBjYW4gYmUgbmVlZGVkLCB3aGVuIHlvdSBvbmx5IHdhbnQgdG8gZG8gYSBmaWx0ZXJpbmcgb3IKcmVuYW1lIGFjdGlvbi4KCi0gQ29udmVydCB0aGUgT3BlbkFQSSAzLjAgZG9jdW1lbnQgdG8gT3BlbkFQSSAzLjEgYnV0IHNraXAgdGhlIHNvcnRpbmcgYW5kIHNhdmUgaXQgYXMgYSBuZXcgWUFNTCBmaWxlCgpgYGBzaGVsbAokIG9wZW5hcGktZm9ybWF0IG9wZW5hcGkueWFtbCAtbyBvcGVuYXBpLTMuMS55YW1sIC0tbm8tc29ydCAtLWNvbnZlcnRUbyAiMy4xIgpgYGAKClRoaXMgd2lsbCBjb252ZXJ0IHRoZSBPcGVuQVBJIDMuMCBkb2N1bWVudCBpbnRvIHZlcnNpb24gMy4xIG9mIE9wZW5BUEksIHdpdGhvdXQgYW55IG9yZGVyaW5nIG9yIGZpbHRlcmluZy4KRHVyaW5nIHRoZSBjb252ZXJzaW9uLCBvcGVuYXBpLWZvcm1hdCB3aWxsIHRyYW5zZm9ybSBhbGwgT3BlbkFQSSAzLjAgcHJvcGVydGllcyBpbnRvIHRoZSBPcGVuQVBJIDMuMSBwcm9wZXJ0aWVzLCBhcyBkZXNjcmliZWQgaW4gdGhlIFttaWdyYXRpb24gZ3VpZGUgZnJvbQpQaGlsIFN0dXJnZW9uXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvYmxvZy8yMDIxLzAyLzE2L21pZ3JhdGluZy1mcm9tLW9wZW5hcGktMy0wLXRvLTMtMS0wKS4KCi0gRm9ybWF0IGFuIE9wZW5BUEkgZG9jdW1lbnQsIGluY2x1ZGluZyBzb3J0aW5nIGFsbCBlbGVtZW50cyBpbiB0aGUgY29tcG9uZW50cyBzZWN0aW9uCgpgYGBzaGVsbAokIG9wZW5hcGktZm9ybWF0IG9wZW5hcGkuanNvbiAtbyBvcGVuYXBpLWZvcm1hdHRlZC5qc29uIC0tc29ydENvbXBvbmVudHNGaWxlIC4vdGVzdC9qc29uLXNvcnQtY29tcG9uZW50cy9jdXN0b21Tb3J0Q29tcG9uZW50cy5qc29uCmBgYAoKVGhpcyB3aWxsIHNvcnQgYWxsIGVsZW1lbnRzIGluIHRoZSBjb21wb25lbnRzIChjb21wb25lbnRzL3NjaGVtYXMsIGNvbXBvbmVudHMvcGFyYW1ldGVycywgY29tcG9uZW50cy9oZWFkZXJzLApjb21wb25lbnRzL3JlcXVlc3RCb2RpZXMsIGNvbXBvbmVudHMvcmVzcG9uc2VzLCAuLi4pIHNlY3Rpb24gYWxwaGFiZXRpY2FsbHkuIFRoZSBmaWxlIHNwZWNpZmllZCBieSBgLS1zb3J0Q29tcG9uZW50c0ZpbGVgIHNob3VsZCBjb250YWluIGFuIGFycmF5IG9mIGNvbXBvbmVudCB0eXBlcyB0byBzb3J0LgoKRXhhbXBsZSBvZiBhIGN1c3RvbVNvcnRDb21wb25lbnRzLmpzb24gZmlsZToKYGBganNvbgpbInNjaGVtYXMiLCAicGFyYW1ldGVycyIsICJoZWFkZXJzIiwgInJlcXVlc3RCb2RpZXMiLCAicmVzcG9uc2VzIiwgInNlY3VyaXR5U2NoZW1lcyJdCmBgYAoKKipiZWZvcmUqKgpgYGB5YW1sCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIE9yZGVyOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgIyBwcm9wZXJ0aWVzLi4uCiAgICBDdXN0b21lcjoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgICMgcHJvcGVydGllcy4uLgogICAgQWRkcmVzczoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgICMgcHJvcGVydGllcy4uLgogIHNlY3VyaXR5U2NoZW1lczoKICAgIHBldHN0b3JlX2F1dGg6CiAgICAgIHR5cGU6IG9hdXRoMgogICAgICAjIGNvbmZpZ3VyYXRpb24uLi4KICAgIGFwaV9rZXk6CiAgICAgIHR5cGU6IGFwaUtleQogICAgICAjIGNvbmZpZ3VyYXRpb24uLi4KYGBgCgoqKmFmdGVyKioKYGBgeWFtbApjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBBZGRyZXNzOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgIyBwcm9wZXJ0aWVzLi4uCiAgICBDdXN0b21lcjoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgICMgcHJvcGVydGllcy4uLgogICAgT3JkZXI6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICAjIHByb3BlcnRpZXMuLi4KICBzZWN1cml0eVNjaGVtZXM6CiAgICBhcGlfa2V5OgogICAgICB0eXBlOiBhcGlLZXkKICAgICAgIyBjb25maWd1cmF0aW9uLi4uCiAgICBwZXRzdG9yZV9hdXRoOgogICAgICB0eXBlOiBvYXV0aDIKICAgICAgIyBjb25maWd1cmF0aW9uLi4uCmBgYAoKLSBGb3JtYXQgYW4gT3BlbkFQSSBkb2N1bWVudCwgaW5jbHVkaW5nIHNvcnRpbmcgcHJvcGVydGllcyB3aXRoaW4gc2NoZW1hIGNvbXBvbmVudHMgYWxwaGFiZXRpY2FsbHkKCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgb3BlbmFwaS5qc29uIC1vIG9wZW5hcGktZm9ybWF0dGVkLmpzb24gLS1zb3J0Q29tcG9uZW50c1Byb3BzCmBgYAoKVGhpcyB3aWxsIHNvcnQgYWxsIHByb3BlcnRpZXMgd2l0aGluIHNjaGVtYSBjb21wb25lbnRzIGFscGhhYmV0aWNhbGx5LiBGb3IgZXhhbXBsZToKCioqYmVmb3JlKioKYGBgeWFtbApjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBVc2VyRHRvOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcHJvcGVydGllczoKICAgICAgICBsYXN0TmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIGZpcnN0TmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwpgYGAKCioqYWZ0ZXIqKgpgYGB5YW1sCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIFVzZXJEdG86CiAgICAgIHR5cGU6IG9iamVjdAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGZpcnN0TmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIGxhc3ROYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCmBgYAoKIyMgQ0xJIGZpbHRlciB1c2FnZQoKLSBGb3JtYXQgYW4gT3BlbkFQSSBkb2N1bWVudCBieSBmaWx0ZXJpbmcgZmllbGRzLCBkZWZhdWx0IHNvcnRpbmcgYW5kIHNhdmVzIGl0IGFzIGEgbmV3IGZpbGUKCldoZW4geW91IHdhbnQgdG8gc3RyaXAgY2VydGFpbiBtZXRob2RzICx0YWdzLCBvcGVyYXRpb25JZHMsIG9wZXJhdGlvbnMsIGZsYWdzIHlvdSBjYW4gcGFzcyBhIGBmaWx0ZXJGaWxlYCB3aGljaCBjb250YWlucyB0aGUKc3BlY2lmaWMgdmFsdWVzIGZvciB0aGUgbWV0aG9kcyAsdGFncywgb3BlcmF0aW9uSWRzLCBvcGVyYXRpb25zLCBmbGFncy4KClRoaXMgY2FuIGJlIHVzZWZ1bCB0byBjb21iaW5lIHdpdGggdGhlIHNvcnRpbmcsIHRvIGVuZCB1cCB3aXRoIGFuIG9yZGVyIGFuZCBmaWx0ZXJlZCBPcGVuQVBJIGRvY3VtZW50LgoKZXhhbXBsZToKCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgb3BlbmFwaS5qc29uIC1vIG9wZW5hcGktZm9ybWF0dGVkLmpzb24gLS1maWx0ZXJGaWxlIGN1c3RvbUZpbHRlci55YW1sCmBgYAoKd2hlcmUgdGhlIGBjdXN0b21GaWx0ZXIueWFtbGAgd291bGQgY29udGFpbiBhIGNvbWJpbmF0aW9uIG9mIGFsbCB0aGUgZWxlbWVudHMgeW91IHdhbnQgdG8gZmlsdGVyIG91dC4KCmBgYHlhbWwKZmxhZ3M6CiAgICAtIHgtdmlzaWJpbGl0eQpmbGFnVmFsdWVzOiBbIF0KdGFnczogWyBdCm9wZXJhdGlvbklkczoKICAgIC0gYWRkUGV0CiAgICAtIGZpbmRQZXRzQnlTdGF0dXMKYGBgCgojIyBDTEkgT3BlbkFQSSBPdmVybGF5IFVzYWdlCgpUaGUgT3BlbkFQSSBPdmVybGF5IGZ1bmN0aW9uYWxpdHkgYWxsb3dzIHVzZXJzIHRvIGFwcGx5IGFjdGlvbnMgc3VjaCBhcyB1cGRhdGVzIGFuZCByZW1vdmFscyB0byBhbiBPcGVuQVBJIFNwZWNpZmljYXRpb24gKE9BUykuIFRoaXMgZmVhdHVyZSBpcyB1c2VmdWwgZm9yIGR5bmFtaWNhbGx5IG1vZGlmeWluZyBPQVMgZG9jdW1lbnRzIGR1cmluZyBkZXZlbG9wbWVudCwgdGVzdGluZywgb3IgcHVibGlzaGluZyB3b3JrZmxvd3MuCgojIyMgV2hhdCBpcyBhbiBPcGVuQVBJIE92ZXJsYXk/CkFuIFtPcGVuQVBJIE92ZXJsYXldKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb3ZlcmxheS92MS4wLjAuaHRtbCkgaXMgYSBzcGVjaWZpY2F0aW9uIHRoYXQgZGVmaW5lcyBhIHN0cnVjdHVyZWQgc2V0IG9mIGFjdGlvbnMgdG8gYmUgYXBwbGllZCB0byBhbiBleGlzdGluZyBPcGVuQVBJIGRvY3VtZW50LiBJdCBlbmFibGVzOgoKLSBVcGRhdGluZyBleGlzdGluZyBmaWVsZHMsIHN1Y2ggYXMgZGVzY3JpcHRpb25zLCBwYXJhbWV0ZXJzLCBvciBlbmRwb2ludHMuCi0gQWRkaW5nIG5ldyBmaWVsZHMgb3Igb2JqZWN0cyB0byB0aGUgT3BlbkFQSSBkb2N1bWVudC4KLSBSZW1vdmluZyBmaWVsZHMgb3Igb2JqZWN0cyB0aGF0IGFyZSBubyBsb25nZXIgcmVsZXZhbnQuCgpBbiBvdmVybGF5IGRvY3VtZW50IGZvbGxvd3MgdGhlIHN0cnVjdHVyZSBiZWxvdzoKCmBgYApvdmVybGF5OiAxLjAuMAppbmZvOgogIHRpdGxlOiBFeGFtcGxlIE92ZXJsYXkKICB2ZXJzaW9uOiAxLjAuMAphY3Rpb25zOgogIC0gdGFyZ2V0OiAiJCIgICAvLyBKU09OUGF0aCBkZWZpbml0aW9uIG9mIHRoZSB0YXJnZXR0ZWQgZWxlbWVudCBvZiB0aGUgZG9jdW1lbnQKICAgIHVwZGF0ZTogLy8gVGhlIGFjdGlvbiB0byBiZSBhcHBsaWVkOiB1cGRhdGUgb3IgcmVtb3ZlCiAgICAgIGluZm86CiAgICAgICAgZGVzY3JpcHRpb246ICJVcGRhdGVkIGRlc2NyaXB0aW9uIGZvciB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLiIKICAtIHRhcmdldDogIiQucGF0aHNbJy9leGFtcGxlJ10iCiAgICB1cGRhdGU6CiAgICAgIGdldDoKICAgICAgICBkZXNjcmlwdGlvbjogIlVwZGF0ZWQgR0VUIGRlc2NyaXB0aW9uIGZvciAvZXhhbXBsZSBlbmRwb2ludC4iCiAgLSB0YXJnZXQ6ICIkLnBhdGhzWycvZXhhbXBsZSddLmdldC5wYXJhbWV0ZXJzIgogICAgcmVtb3ZlOiB0cnVlICAgIyBFeGFtcGxlIG9mIHJlbW92aW5nIGFuIGVsZW1lbnQKYGBgCgpGb3JlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIE9wZW5BUEkgT3ZlcmxheSBvcHRpb25zLCBzZWUgW09wZW5BUEkgT3ZlcmxheSBTcGVjaWZpY2F0aW9uIDEuMC4wXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvYmxvZy8yMDI0LzEwLzIyL2Fubm91bmNpbmctb3ZlcmxheS1zcGVjaWZpY2F0aW9uKSAKClVzZSB0aGUgYC0tb3ZlcmxheUZpbGVgIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBvdmVybGF5IGZpbGUgYW5kIGFwcGx5IGl0IHRvIHlvdXIgT3BlbkFQSSBkb2N1bWVudC4KCmV4YW1wbGU6CmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgb3BlbmFwaS55YW1sIC0tb3ZlcmxheUZpbGUgb3ZlcmxheS55YW1sIC1vIG9wZW5hcGktdXBkYXRlZC55YW1sCmBgYAoKWW91IGNhbiBhbHNvIGxldCB0aGUgb3ZlcmxheSBkZWNsYXJlIHRoZSBiYXNlIE9wZW5BUEkgZG9jdW1lbnQgdXNpbmcgdGhlIHRvcC1sZXZlbCBgZXh0ZW5kc2AgcHJvcGVydHkuIFdoZW4gYGV4dGVuZHNgIGlzIHByZXNlbnQsIHRoZSBpbnB1dCBmaWxlIGFyZ3VtZW50IGJlY29tZXMgb3B0aW9uYWw6CgpgYGB5YW1sCm92ZXJsYXk6IDEuMC4wCmluZm86CiAgdGl0bGU6IE92ZXJsYXkgZm9yIFRpYyBUYWMgVG9lCiAgdmVyc2lvbjogMS4wLjAKZXh0ZW5kczogJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9PQUkvbGVhcm4ub3BlbmFwaXMub3JnL3JlZnMvaGVhZHMvbWFpbi9leGFtcGxlcy92My4xL3RpY3RhY3RvZS55YW1sJwojIGFjdGlvbnM6IFsuLi5dICAjIG9wdGlvbmFsCmBgYAoKQ0xJIHVzYWdlIHdpdGggYGV4dGVuZHNgIChubyBpbnB1dCBmaWxlIGFyZ3VtZW50KToKCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgLS1vdmVybGF5RmlsZSBvdmVybGF5LnlhbWwgLW8gb3BlbmFwaS11cGRhdGVkLnlhbWwKYGBgCgpOb3RlczoKLSBgZXh0ZW5kc2Agc3VwcG9ydHMgYm90aCBsb2NhbCBwYXRocyBhbmQgcmVtb3RlIGBodHRwKHMpYCBVUkxzLgotIExvY2FsIHJlbGF0aXZlIHBhdGhzIGFyZSByZXNvbHZlZCByZWxhdGl2ZSB0byB0aGUgb3ZlcmxheSBmaWxl4oCZcyBsb2NhdGlvbi4KCiMjIENMSSBnZW5lcmF0ZSB1c2FnZQoKLSBHZW5lcmF0ZSBPcGVuQVBJIGVsZW1lbnRzIGFuZCBzYXZlcyBpdCBhcyBhIG5ldyBmaWxlCgpUaGUgT3BlbkFQSSBmb3JtYXR0aW5nIHRvb2wgYWxsb3dzIHlvdSB0byBnZW5lcmF0ZSBPcGVuQVBJIGVsZW1lbnRzLCBzdWNoIGFzIGBvcGVyYXRpb25JZGAsIGBzdW1tYXJ5YCwgYW5kIG1vcmUsIGJhc2VkIG9uIGNvbmZpZ3VyYWJsZSB0ZW1wbGF0ZXMuIFRoZSBnZW5lcmF0ZWQgZWxlbWVudHMgd2lsbCBiZSBzYXZlZCB0byB0aGUgb3V0cHV0IE9wZW5BUEkgZmlsZS4KCllvdSBjYW4gYWxzbyBjb21iaW5lIGdlbmVyYXRpb24gd2l0aCBmaWx0ZXJpbmcgYW5kIHNvcnRpbmcgdG8gY3VzdG9taXplIHRoZSBvdXRwdXQuCgpleGFtcGxlOgoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS1mb3JtYXR0ZWQuanNvbiAtLWdlbmVyYXRlRmlsZSBjdXN0b21HZW5lcmF0ZS55YW1sCmBgYAoKd2hlcmUgdGhlIGBjdXN0b21HZW5lcmF0ZS55YW1sYCB3b3VsZCBjb250YWluIGEgY29tYmluYXRpb24gb2YgYWxsIHRoZSBlbGVtZW50cyB5b3UgdG8gZ2VuZXJhdGUuCgpgYGB5YW1sCm9wZXJhdGlvbklkVGVtcGxhdGU6ICI8bWV0aG9kPl88cGF0aFBhcnQyPiIKb3ZlcndyaXRlRXhpc3Rpbmc6IGZhbHNlCmBgYAoKKipUZW1wbGF0ZSBPcHRpb25zOioqCkluIHRoZSBjdXN0b21HZW5lcmF0ZS55YW1sLCB5b3UgY2FuIGRlZmluZSB0ZW1wbGF0ZXMgZm9yIHZhcmlvdXMgT3BlbkFQSSBwcm9wZXJ0aWVzIHVzaW5nIGR5bmFtaWMgcGxhY2Vob2xkZXJzLiBUaGVzZSBwbGFjZWhvbGRlcnMgd2lsbCBiZSByZXBsYWNlZCBieSBhY3R1YWwgdmFsdWVzIGZyb20gdGhlIE9wZW5BUEkgb3BlcmF0aW9ucy4gQmVsb3cgaXMgYSBsaXN0IG9mIGF2YWlsYWJsZSBwbGFjZWhvbGRlcnMgYW5kIHdoYXQgdGhleSByZXByZXNlbnQ6CgotIGA8b3BlcmF0aW9uSWQ+YCA6IFRoZSBvcGVyYXRpb25JZCBvZiB0aGUgT3BlbkFQSSBvcGVyYXRpb24uIEV4YW1wbGU6IGxlYWRzQWxsCi0gYDxtZXRob2Q+YCA6IFRoZSBIVFRQIG1ldGhvZCBvZiB0aGUgT3BlbkFQSSBvcGVyYXRpb24uIEV4YW1wbGU6IEdFVAotIGA8cGF0aD5gIDogVGhlIHBhdGggb2YgdGhlIE9wZW5BUEkgb3BlcmF0aW9uLiBFeGFtcGxlOiAvY3JtL2xlYWRzCi0gYDxwYXRoUmVmPmAgOiBUaGUgcGF0aCByZWZlcmVuY2Ugb2YgdGhlIE9wZW5BUEkgb3BlcmF0aW9uLiBFeGFtcGxlOiBHRVQ6Oi9jcm0vbGVhZHMKLSBgPHRhZz5gIDogVGhlIGZpcnN0IHRhZyBuYW1lIG9mIHRoZSBPcGVuQVBJIG9wZXJhdGlvbi4gRXhhbXBsZTogTGVhZHMKLSBgPHRhZzE+YCA6IFRoZSBmaXJzdCB0YWcgbmFtZSBvZiB0aGUgT3BlbkFQSSBvcGVyYXRpb24uIEV4YW1wbGU6IExlYWRzCi0gYDx0YWcyPmAgOiBUaGUgc2Vjb25kIHRhZyBuYW1lIG9mIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiwgaWYgbW9yZSB0aGFuIG9uZSB0YWcgaXMgZGVmaW5lZC4gRXhhbXBsZTogQ1JNCi0gYDx0YWduPmAgOiBUaGUgbnRoIHRhZyBuYW1lIG9mIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiBpZiBtb3JlIHRoYW4gb25lIHRhZyBpcyBkZWZpbmVkLgotIGA8cGF0aFBhcnQxPmAgOiBUaGUgZmlyc3QgcGFydCBvZiB0aGUgcGF0aCBvZiB0aGUgT3BlbkFQSSBvcGVyYXRpb24uIEV4YW1wbGU6IGNybQotIGA8cGF0aFBhcnQyPmAgOiBUaGUgc2Vjb25kIHBhcnQgb2YgdGhlIHBhdGggb2YgdGhlIE9wZW5BUEkgb3BlcmF0aW9uLiBFeGFtcGxlOiBsZWFkcwotIGA8cGF0aFBhcnRuPmAgOiBUaGUgbnRoIHBhcnQgb2YgdGhlIHBhdGggb2YgdGhlIE9wZW5BUEkgb3BlcmF0aW9uLgoKWW91IGNhbiBhbHNvIGluY2x1ZGUgc3RhdGljIHRleHQgaW4gdGhlIHRlbXBsYXRlcywgd2hpY2ggd2lsbCBiZSBtZXJnZWQgd2l0aCB0aGUgZHluYW1pYyBwbGFjZWhvbGRlcnMuIEZvciBleGFtcGxlOgoKYGBgeWFtbApvcGVyYXRpb25JZFRlbXBsYXRlOiAiUHJlZml4XzxtZXRob2Q+XzxwYXRoUGFydDI+X0hhbmRsZXIiCmBgYAoKKipDb25maWd1cmF0aW9uIE9wdGlvbnM6KioKCi0gYG9wZXJhdGlvbklkVGVtcGxhdGVgOiBUZW1wbGF0ZSBmb3IgZ2VuZXJhdGluZyBgb3BlcmF0aW9uSWRgLiBVc2UgZHluYW1pYyBwbGFjZWhvbGRlcnMgbGlrZSA8bWV0aG9kPiBhbmQgPHBhdGhQYXJ0Mj4uCi0gYG92ZXJ3cml0ZUV4aXN0aW5nYDogU2V0IHRvIGB0cnVlYCBvciBgZmFsc2VgIHRvIGNvbnRyb2wgd2hldGhlciBleGlzdGluZyB2YWx1ZXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuLiBEZWZhdWx0OiBgZmFsc2VgLgoKIyMgQ0xJIGNhc2luZyB1c2FnZQoKLSBHZW5lcmF0ZSBPcGVuQVBJIGVsZW1lbnRzIGFuZCBzYXZlcyBpdCBhcyBhIG5ldyBmaWxlCgpUaGUgT3BlbkFQSSBmb3JtYXR0aW5nIHRvb2wgYWxsb3dzIHlvdSB0byBlbmZvcmNlIGNvbnNpc3RlbnQgY2FzaW5nIHN0eWxlcyBhY3Jvc3MgdmFyaW91cyBPcGVuQVBJIGVsZW1lbnRzLCBzdWNoIGFzIGBvcGVyYXRpb25JZGAsIGBzdW1tYXJ5YCwgYHBhcmFtZXRlcnNgLCBhbmQgbW9yZS4gVGhlIHNwZWNpZmllZCBjYXNpbmcgcHJlZmVyZW5jZXMgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSByZWxldmFudCBlbGVtZW50cyBhbmQgc2F2ZWQgdG8gdGhlIG91dHB1dCBPcGVuQVBJIGZpbGUuCgpleGFtcGxlOgoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS1mb3JtYXR0ZWQuanNvbiAtLWNhc2luZ0ZpbGUgY3VzdG9tQ2FzaW5nLnlhbWwKYGBgCgp3aGVyZSB0aGUgYGN1c3RvbUNhc2luZy55YW1sYCB3b3VsZCBjb250YWluIGEgY2FzaW5nIHByZWZlcmVuY2VzIGZvciB0aGUgc3BlY2lmaWVkIG9mIHRoZSBlbGVtZW50cy4KCkluIHRoaXMgZXhhbXBsZSwgdGhlIGN1c3RvbUNhc2luZy55YW1sIGZpbGUgd291bGQgY29udGFpbiB0aGUgZGVzaXJlZCBjYXNpbmcgcHJlZmVyZW5jZXMgZm9yIHNwZWNpZmljIE9wZW5BUEkgZWxlbWVudHMuCgpgYGB5YW1sCm9wZXJhdGlvbklkOiBzbmFrZV9jYXNlCnByb3BlcnRpZXM6IGNhbWVsQ2FzZQoKcGFyYW1ldGVyc1F1ZXJ5OiBrZWJhYi1jYXNlCnBhcmFtZXRlcnNIZWFkZXI6IGtlYmFiLWNhc2UKcGFyYW1ldGVyc1BhdGg6IHNuYWtlX2Nhc2UKCmNvbXBvbmVudHNFeGFtcGxlczogUGFzY2FsQ2FzZQpjb21wb25lbnRzU2NoZW1hczogY2FtZWxDYXNlCmNvbXBvbmVudHNIZWFkZXJzOiBrZWJhYi1jYXNlCmNvbXBvbmVudHNSZXNwb25zZXM6IHNuYWtlX2Nhc2UKY29tcG9uZW50c1JlcXVlc3RCb2RpZXM6IHNuYWtlX2Nhc2UKY29tcG9uZW50c1NlY3VyaXR5U2NoZW1lczogUGFzY2FsQ2FzZQoKY29tcG9uZW50c1BhcmFtZXRlcnNRdWVyeTogc25ha2VfY2FzZQpjb21wb25lbnRzUGFyYW1ldGVyc0hlYWRlcjoga2ViYWItY2FzZQpjb21wb25lbnRzUGFyYW1ldGVyc1BhdGg6IGNhbWVsQ2FzZQpgYGAKCioqQ2FzaW5nIE9wdGlvbnM6KioKSW4gdGhlIGN1c3RvbUNhc2luZy55YW1sLCB5b3UgY2FuIGRlZmluZSB0aGUgY2FzaW5nIHN0eWxlIGZvciB2YXJpb3VzIE9wZW5BUEkgcHJvcGVydGllcywgYWxsb3dpbmcgeW91IHRvIGN1c3RvbWl6ZSB0aGUgYXBwZWFyYW5jZSBvZiB5b3VyIGRvY3VtZW50IGNvbnNpc3RlbnRseS4KCi0gYG9wZXJhdGlvbklkYDogRGVmaW5lcyB0aGUgY2FzaW5nIGZvciBvcGVyYXRpb24gSURzLiBFeGFtcGxlOiBzbmFrZV9jYXNlLCBQYXNjYWxDYXNlLCBvciBjYW1lbENhc2UuCi0gYHByb3BlcnRpZXNgOiBTZXRzIHRoZSBjYXNpbmcgZm9yIHByb3BlcnRpZXMgd2l0aGluIGNvbXBvbmVudHMuIEV4YW1wbGU6IGNhbWVsQ2FzZS4KLSBgcGFyYW1ldGVyc1F1ZXJ5YCwgYHBhcmFtZXRlcnNIZWFkZXJgLCBgcGFyYW1ldGVyc1BhdGhgOiBEZWZpbmUgZGlmZmVyZW50IGNhc2luZyBzdHlsZXMgZm9yIHBhcmFtZXRlcnMgYmFzZWQgb24gdGhlaXIgbG9jYXRpb24gKHF1ZXJ5LCBoZWFkZXIsIHBhdGgpLiBFeGFtcGxlOiBzbmFrZV9jYXNlLCBrZWJhYi1jYXNlLgotIGFuZCBtYW55IG1vcmUKClNlZSBbT3BlbkFQSSBmb3JtYXR0aW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uc10oI29wZW5hcGktZm9ybWF0dGluZy1jb25maWd1cmF0aW9uLW9wdGlvbnMpIGZvciB0aGUgZnVsbCBsaXN0IG9mIGNhc2luZyBvcHRpb25zCgojIyBDTEkgQnVuZGxlICYgU3BsaXQgdXNhZ2UKCi0gKipCdW5kbGluZyoqOiBDcmVhdGUgYSBzZWxmLWNvbnRhaW5lZCBPcGVuQVBJIGZpbGUgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uIG9yIEFQSSB2YWxpZGF0aW9uIHRvb2xzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBleHRlcm5hbCByZWZlcmVuY2VzLgoKLSAqKlNwbGl0dGluZyoqOiBHZW5lcmF0ZSBhIG1vZHVsYXIgT3BlbkFQSSBzdHJ1Y3R1cmUgZHVyaW5nIGRldmVsb3BtZW50IG9yIHRlc3RpbmcsIG1ha2luZyBpdCBlYXNpZXIgdG8gbWFuYWdlIGNoYW5nZXMgdG8gaW5kaXZpZHVhbCBwYXRocyBvciBjb21wb25lbnRzIHdpdGhvdXQgYWx0ZXJpbmcgdGhlIGVudGlyZSBkb2N1bWVudC4KCiMjIyBTcGxpdHRpbmcgdGhlIE9wZW5BUEkgRG9jdW1lbnQKClRoZSBgLS1zcGxpdGAgb3B0aW9uIHNwbGl0cyB0aGUgT3BlbkFQSSBkb2N1bWVudCBpbnRvIGEgbW9kdWxhciBtdWx0aS1maWxlIHN0cnVjdHVyZS4gVGhpcyBzdHJ1Y3R1cmUgbWFrZXMgaXQgZWFzaWVyIHRvIG1hbmFnZSBsYXJnZXIgc3BlY2lmaWNhdGlvbnMgYnkgc2VwYXJhdGluZyBwYXRocywgY29tcG9uZW50cyAoc2NoZW1hcywgcGFyYW1hdGVycywgLi4uKSBpbnRvIGluZGl2aWR1YWwgZmlsZXMuCgpFeGFtcGxlOiBTcGxpdHRpbmcgdGhlIERvY3VtZW50CgpgYGBzaGVsbAokIG9wZW5hcGktZm9ybWF0IG9wZW5hcGkuanNvbiAtbyAuL29wZW5hcGktc3BsaXQvb3BlbmFwaS55YW1sIC0tc3BsaXQKYGBgCgpUaGlzIGNvbW1hbmQgd2lsbCB0YWtlIHRoZSBvcGVuYXBpLmpzb24gYW5kIHNwbGl0IGl0IGludG8gbXVsdGlwbGUgZmlsZXMsIHN0b3JlZCB1bmRlciB0aGUgLi9vcGVuYXBpLXNwbGl0LyBkaXJlY3RvcnkuIAoKVGhlIHJlc3VsdGluZyBzdHJ1Y3R1cmUgbWlnaHQgbG9vayBsaWtlIHRoaXM6CgpgYGBiYXNoCi4vb3BlbmFwaS1zcGxpdC8K4pSc4pSA4pSAIG9wZW5hcGkueWFtbArilJzilIDilIAgcGF0aHMvCuKUgiAgIOKUnOKUgOKUgCAvcGV0cy55YW1sCuKUgiAgIOKUlOKUgOKUgCAvcGV0cy97cGV0SWR9LnlhbWwK4pSc4pSA4pSAIGNvbXBvbmVudHMvCuKUnOKUgOKUgCBzY2hlbWFzLwrilIIgICDilJzilIDilIAgUGV0LnlhbWwK4pSCICAg4pSU4pSA4pSAIEVycm9yLnlhbWwK4pSc4pSA4pSAIHBhcmFtZXRlcnMvCuKUgiAgIOKUlOKUgOKUgCBwZXRJZC55YW1sCmBgYAoKVGhlIG1haW4gb3BlbmFwaS55YW1sIGZpbGUgd2lsbCBjb250YWluIHJlZmVyZW5jZXMgdG8gdGhlc2UgbmV3bHkgY3JlYXRlZCBmaWxlcyB1c2luZyAkcmVmLCBtYWtpbmcgdGhlIHN0cnVjdHVyZSBtb2R1bGFyIGFuZCBlYXNpZXIgdG8gbmF2aWdhdGUuCgojIyMgIEJ1bmRsaW5nIHRoZSBPcGVuQVBJIERvY3VtZW50CgpUaGUgYC0tbm8tYnVuZGxlYCBvcHRpb24gYWxsb3dzIHlvdSB0byBjb250cm9sIHdoZXRoZXIgbG9jYWwgYW5kIHJlbW90ZSAkcmVmIHJlZmVyZW5jZXMgYXJlIGJ1bmRsZWQgaW50byB0aGUgZmluYWwgZG9jdW1lbnQuIAoKQnkgZGVmYXVsdCwgYWxsICRyZWYgcmVmZXJlbmNlcyBhcmUgZGVyZWZlcmVuY2VkLCByZXN1bHRpbmcgaW4gYSBzaW5nbGUsIHNlbGYtY29udGFpbmVkIE9wZW5BUEkgZmlsZS4gSG93ZXZlciwgaW4gc29tZSBjYXNlcywgeW91IG1pZ2h0IHByZWZlciB0byBrZWVwIHRoZSAkcmVmIHJlZmVyZW5jZXMgaW50YWN0LCBlc3BlY2lhbGx5IGlmIHlvdSdyZSB3b3JraW5nIHdpdGggZXh0ZXJuYWwgcmVmZXJlbmNlcyBvciB3YW50IHRvIG1haW50YWluIGEgbW9kdWxhciBzdHJ1Y3R1cmUuCgpFeGFtcGxlOiBEZWZhdWx0IEJ1bmRsaW5nCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgaW5wdXQuanNvbiAtbyBidW5kbGVkLW9wZW5hcGkuanNvbgpgYGAKClRoaXMgZXhhbXBsZSBwcm9kdWNlcyBhIGZ1bGx5IGRlcmVmZXJlbmNlZCBkZXJlZmVyZW5jZWQtb3BlbmFwaS5qc29uLCB3aGVyZSBhbGwgbG9jYWwgYW5kIHJlbW90ZSAkcmVmIHJlZmVyZW5jZXMgYXJlIHJlc29sdmVkIGludG8gdGhlIGZpbGUuClRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLgoKRXhhbXBsZTogTm8gQnVuZGxpbmcKCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgb3BlbmFwaS5qc29uIC1vIG9wZW5hcGkuanNvbiAtLW5vLWJ1bmRsZQpgYGAKCkluIHRoaXMgY2FzZSwgdGhlIHJlc3VsdGluZyBidW5kbGVkLW9wZW5hcGkuanNvbiB3aWxsIHByZXNlcnZlIGFsbCAkcmVmIHJlZmVyZW5jZXMgYXMgdGhleSBhcmUgaW4gdGhlIG9yaWdpbmFsIGRvY3VtZW50LgoKIyMgQ0xJIHJlbmFtZSB1c2FnZQoKLSBGb3JtYXQgYW4gT3BlbkFQSSBkb2N1bWVudCBieSBjaGFuZ2luZyB0aGUgdGl0bGUgYW5kIHNhdmVzIGl0IGFzIGEgbmV3IEpTT04gZmlsZQoKRHVyaW5nIENJL0NEIHBpcGVsaW5lcywgeW91IG1pZ2h0IHdhbnQgdG8gY3JlYXRlIGRpZmZlcmVudCByZXN1bHRzIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50LiBIYXZpbmcgdGhlIG9wdGlvbiB0byByZW5hbWUKdGhlbSBtaWdodCBtYWtlIGl0IGVhc2llciB0byB3b3JrIHdpdGggdGhlIHJlc3VsdHMsIHNvIHRoYXQgaXMgd2h5IHdlIHByb3ZpZGUgdGhpcyBjb21tYW5kIG9wdGlvbi4KCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgb3BlbmFwaS5qc29uIC1vIG9wZW5hcGkuanNvbiAtLXJlbmFtZSAiT3BlbkFQSSBQZXRzdG9yZSAtIE9wZW5BUEkgMy4wIgpgYGAKCndoaWNoIHJlc3VsdHMgaW4KCioqYmVmb3JlKioKCmBgYGpzb24KewogICAgIm9wZW5hcGkiOiAiMy4wLjIiLAogICAgImluZm8iOiB7CiAgICAgICAgInRpdGxlIjogIlBldHN0b3JlIC0gT3BlbkFQSSAzLjAiLApgYGAKCioqYWZ0ZXIqKgoKYGBganNvbgp7CiAgICAib3BlbmFwaSI6ICIzLjAuMiIsCiAgICAiaW5mbyI6IHsKICAgICAgICAidGl0bGUiOiAiT3BlbkFQSSBQZXRzdG9yZSAtIE9wZW5BUEkgMy4wIiwKYGBgCgojIyBDTEkgY29udmVydFRvIHVzYWdlCgotIEZvcm1hdCAmIGNvbnZlcnQgdGhlIE9wZW5BUEkgZG9jdW1lbnQgdG8gT3BlbkFQSSB2ZXJzaW9uIDMuMSBvciAzLjIKCm9wZW5hcGktZm9ybWF0IGNhbiBoZWxwIHlvdSB0byB1cGdyYWRlIHlvdXIgY3VycmVudCBPcGVuQVBJIDMuMC54IGRvY3VtZW50IHRvIE9wZW5BUEkgMy4xIG9yIDMuMi4KCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgb3BlbmFwaS5qc29uIC1vIG9wZW5hcGktMy4xLmpzb24gLS1jb252ZXJ0VG8gIjMuMSIKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS0zLjIuanNvbiAtLWNvbnZlcnRUbyAiMy4yIgpgYGAKClVzaW5nIGAzLjFgIHJlc3VsdHMgaW4gYWxsIHRoZSBjaGFuZ2VzIGRlc2NyaWJlZCBpbiB0aGUgW21pZ3JhdGlvbiBndWlkZSBmcm9tIFBoaWwgU3R1cmdlb25dKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy9ibG9nLzIwMjEvMDIvMTYvbWlncmF0aW5nLWZyb20tb3BlbmFwaS0zLTAtdG8tMy0xLTApLCB3aGlsZSB0aGUgYDMuMmAgdGFyZ2V0IGFsaWducyB3aXRoIHRoZSBuZXcgY2FwYWJpbGl0aWVzIGhpZ2hsaWdodGVkIGluIFtPcGVuQVBJIDMuMiBpcyBoZXJlXShodHRwczovL3F1b2JpeC5jb20vYXJ0aWNsZXMvb3BlbmFwaS0zLjIvKS4KCioqYmVmb3JlKioKCmBgYGpzb24KewogICAgIm9wZW5hcGkiOiAiMy4wLjIiLAogICAgImluZm8iOiB7CiAgICAgICAgInRpdGxlIjogIlBldHN0b3JlIC0gT3BlbkFQSSIsCmBgYAoKKiphZnRlcioqCgpgYGBqc29uCnsKICAgICJvcGVuYXBpIjogIjMuMS4wIiwKICAgICJpbmZvIjogewogICAgICAgICJ0aXRsZSI6ICJPcGVuQVBJIFBldHN0b3JlIC0gT3BlbkFQSSIsCmBgYAoKV2hlbiBjb252ZXJ0aW5nIHRvIDMuMiB0aGUgYG9wZW5hcGlgIGZpZWxkIHdpbGwgYmUgc2V0IHRvIGAzLjIuMGAsIHByZXBhcmluZyB0aGUgZG9jdW1lbnQgZm9yIGZlYXR1cmVzIGxpa2UgaGllcmFyY2hpY2FsIHRhZ3MsIHRoZSBgUVVFUllgIEhUVFAgbWV0aG9kLCBhbmQgcmV1c2FibGUgbWVkaWEgdHlwZXMgaW50cm9kdWNlZCBpbiB0aGUgMy4yIHJlbGVhc2UuCgojIyBDTEkgY29uZmlndXJhdGlvbiB1c2FnZQoKVGhlIG9wZW5hcGktZm9ybWF0IENMSSBzdXBwb3J0cyBidW5kbGluZyBhbGwgb3B0aW9ucyBpbiBhIHNpbmdsZSBjb25maWd1cmF0aW9uIGZpbGUuIFRoaXMgY2FuIHNpbXBsaWZ5IG1hbmFnZW1lbnQsIGVzcGVjaWFsbHkgZm9yIENJL0NEIHBpcGVsaW5lcyB3aGVyZSBjb25maWd1cmF0aW9ucyBhcmUgc3RvcmVkIGluIHZlcnNpb24gY29udHJvbCBzeXN0ZW1zLgoKIyMjIFVzaW5nIHRoZSAtLWNvbmZpZ0ZpbGUgb3B0aW9uCgpZb3UgY2FuIHBhc3MgYSBjb25maWd1cmF0aW9uIGZpbGUgY29udGFpbmluZyBhbGwgdGhlIG9wdGlvbnMgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgcGFzc2VkIHZpYSB0aGUgQ0xJLiBUaGlzIGhlbHBzIGluIGNlbnRyYWxpemluZyB0aGUgY29uZmlndXJhdGlvbiBmb3IgeW91ciBPcGVuQVBJIGZvcm1hdHRpbmcgb3BlcmF0aW9ucy4KCkV4YW1wbGU6CgpgYGBzaGVsbAokIG9wZW5hcGktZm9ybWF0IG9wZW5hcGkuanNvbiAtLWNvbmZpZ0ZpbGUgb3BlbmFwaS1mb3JtYXQtb3B0aW9ucy5qc29uCmBgYApUaGUgZm9ybWF0dGluZyB3aWxsIGhhcHBlbiBiYXNlZCBvbiBhbGwgdGhlIG9wdGlvbnMgc2V0IGluIHRoZSBgb3BlbmFwaS1mb3JtYXQtb3B0aW9ucy5qc29uYCBmaWxlLiBBbGwgdGhlCmF2YWlsYWJsZSBbT3BlbkFQSSBmb3JtYXQgb3B0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL3RoaW04MS9vcGVuYXBpLWZvcm1hdCNvcGVuYXBpLWZvcm1hdC1vcHRpb25zKSBjYW4gYmUgdXNlZCBpbiB0aGUgY29uZmlnIGZpbGUuCgpUaGUgb3BlbmFwaS1mb3JtYXQtb3B0aW9ucy5qc29uIGZpbGUgbWlnaHQgbG9vayBsaWtlIHRoaXM6CgpgYGBqc29uCnsKICAic29ydCI6IHRydWUsCiAgImNhc2luZ1NldCI6IHsKICAgICJvcGVyYXRpb25JZCI6ICJjYW1lbENhc2UiLAogICAgInByb3BlcnRpZXMiOiAic25ha2VfY2FzZSIKICB9LAogICJmaWx0ZXJTZXQiOiB7CiAgICAidGFncyI6IFsiaW50ZXJuYWwiLCAiYmV0YSJdCiAgfSwKICAiZ2VuZXJhdGVTZXQiOiB7CiAgICAib3BlcmF0aW9uSWRUZW1wbGF0ZSI6ICI8bWV0aG9kPl88cGF0aFBhcnQyPl9IYW5kbGVyIgogIH0KfQpgYGAKCkFsdGVybmF0aXZlbHksIHlvdSBjYW4gcmVmZXJlbmNlIGV4dGVybmFsIGZpbGVzIGZvciBlYWNoIHNldHRpbmcgdXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgRmlsZSBwcm9wZXJ0aWVzLgoKYGBganNvbgp7CiAgICAic29ydEZpbGUiOiAiY3VzdG9tU29ydC5qc29uIiwKICAgICJjYXNpbmdGaWxlIjogImNhc2luZy1ydWxlcy5qc29uIiwKICAgICJmaWx0ZXJGaWxlIjogImZpbHRlci1ydWxlcy5qc29uIiwKICAgICJnZW5lcmF0ZUZpbGUiOiAiZ2VuZXJhdGUtcnVsZXMuanNvbiIKfQpgYGAKCkluIHRoaXMgY2FzZSwgdGhlIHNldHRpbmdzIHdpbGwgYmUgbG9hZGVkIGZyb20gdGhlIGV4dGVybmFsIGZpbGVzLCBhbmQgdGhleSBvdmVycmlkZSBhbnkgaW5saW5lIGNvbmZpZ3VyYXRpb25zLgoKKipEZWZpbmUgc29ydCwgZmlsdGVyLCBjYXNpbmcsIGdlbmVyYXRlIG9wdGlvbnMqKgoKWW91IGNhbiBlaXRoZXIgcGFzcyB0aGUgc2V0dGluZ3MgaW5saW5lIG9yIHJlZmVyZW5jZSBhbiBleHRlcm5hbCBmaWxlIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBGaWxlIHByb3BlcnR5OgoKLSAqKnNvcnRTZXQqKiAvICoqc29ydEZpbGUqKjogU29ydCB0aGUgZmllbGRzIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50IGJhc2VkIG9uIHRoZSBvcmRlciBkZWZpbmVkIGluIHRoZSBzb3J0IHNldHRpbmdzLgoKICAtIElubGluZTogUGFzcyB0aGUgc29ydCBvcmRlciBkaXJlY3RseSB1c2luZyBzb3J0U2V0IGluIHRoZSBjb25maWcgZmlsZS4KICAtIEZpbGU6IFVzZSBzb3J0RmlsZSB0byBzcGVjaWZ5IHRoZSBwYXRoIHRvIGEgbG9jYWwgb3IgcmVtb3RlIEpTT04vWUFNTCBmaWxlIGNvbnRhaW5pbmcgY3VzdG9tIHNvcnRpbmcgcnVsZXMuCgotICoqY2FzaW5nU2V0KiogLyAqKmNhc2luZ0ZpbGUqKjogRGVmaW5lIHRoZSBjYXNpbmcgY29udmVudGlvbiBmb3Igb3BlcmF0aW9uSWQsIHBhcmFtZXRlcnMsIHByb3BlcnRpZXMsIGV0Yy4KCiAgLSBJbmxpbmU6CiAgICBgYGBqc29uCiAgICAiY2FzaW5nU2V0IjogewogICAgICAib3BlcmF0aW9uSWQiOiAiY2FtZWxDYXNlIiwKICAgICAgInByb3BlcnRpZXMiOiAiUGFzY2FsQ2FzZSIKICAgIH0KICAgIGBgYAoKICAtIEZpbGU6IFVzZSBjYXNpbmdGaWxlIHRvIHNwZWNpZnkgdGhlIHBhdGggdG8gYSBsb2NhbCBvciByZW1vdGUgSlNPTi9ZQU1MIGZpbGUgY29udGFpbmluZyBjYXNpbmcgcnVsZXMuCgotICoqZmlsdGVyU2V0KiogLyAqKmZpbHRlckZpbGUqKjogRmlsdGVyIG91dCBzcGVjaWZpYyB0YWdzLCBwYXRocywgb3IgY29tcG9uZW50cyBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKICAtIElubGluZToKICAgIGBgYGpzb24KICAgICJmaWx0ZXJTZXQiOiB7CiAgICAgICJ0YWdzIjogWyJpbnRlcm5hbCIsICJiZXRhIl0KICAgIH0KICAgIGBgYAoKICAtIEZpbGU6IFVzZSBmaWx0ZXJGaWxlIHRvIHNwZWNpZnkgdGhlIHBhdGggdG8gYSBsb2NhbCBvciByZW1vdGUgSlNPTi9ZQU1MIGZpbGUgY29udGFpbmluZyBmaWx0ZXIgcnVsZXMuCgotICoqZ2VuZXJhdGVTZXQqKiAvICoqZ2VuZXJhdGVGaWxlKio6IEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3BlcmF0aW9uSWQsIHN1bW1hcnksIGFuZCBvdGhlciBlbGVtZW50cyBiYXNlZCBvbiBwcmVkZWZpbmVkIHRlbXBsYXRlcy4KCiAgLSBJbmxpbmU6CiAgICBgYGBqc29uCiAgICAiZ2VuZXJhdGVTZXQiOiB7CiAgICAgICJvcGVyYXRpb25JZFRlbXBsYXRlIjogIjxtZXRob2Q+XzxwYXRoUGFydDI+X0hhbmRsZXIiCiAgICB9CiAgICBgYGAKCiAgLSBGaWxlOiBVc2UgZ2VuZXJhdGVGaWxlIHRvIHNwZWNpZnkgdGhlIHBhdGggdG8gYSBsb2NhbCBvciByZW1vdGUgSlNPTi9ZQU1MIGZpbGUgY29udGFpbmluZyBnZW5lcmF0ZSBydWxlcy4KCgojIyMgVXNpbmcgLm9wZW5hcGlmb3JtYXRyYwoKSW4gYWRkaXRpb24gdG8gc3BlY2lmeWluZyBhIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2luZyBgLS1jb25maWdGaWxlYCwgb3BlbmFwaS1mb3JtYXQgYWxzbyBzdXBwb3J0cyBhdXRvbWF0aWNhbGx5IGxvYWRpbmcgYSBjb25maWd1cmF0aW9uIGZpbGUgbmFtZWQgYC5vcGVuYXBpZm9ybWF0cmNgIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiBJZiB0aGlzIGZpbGUgaXMgcHJlc2VudCwgaXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBjb25maWd1cmF0aW9uIHNvdXJjZSwgYW5kIGluZGl2aWR1YWwgb3B0aW9ucyBwYXNzZWQgdmlhIHRoZSBDTEkgd2lsbCBvdmVycmlkZSB0aGUgc2V0dGluZ3MgZnJvbSB0aGlzIGZpbGUuCgpFeGFtcGxlIG9mIGEgLm9wZW5hcGlmb3JtYXRyYyBmaWxlOgoKYGBganNvbgp7CiAgIm91dHB1dCI6ICJvcGVuYXBpLWZpbmFsLnlhbWwiLCAgCiAgInNvcnQiOiB0cnVlLAogICJmaWx0ZXJTZXQiOiB7CiAgICAgICJ0YWdzIjogWyJpbnRlcm5hbCIsICJiZXRhIl0KICB9Cn0KYGBgCgojIyBQcm9ncmFtbWF0aWMgdXNhZ2UKClRoZSBDTEkgaXMgdGhlIHByaW1hcnkgaW50ZXJmYWNlLCBidXQgYWxsIGZvcm1hdHRpbmcgdXRpbGl0aWVzIGFyZSBleHBvc2VkIGFzIG1vZHVsZSBmdW5jdGlvbnMgYXMgd2VsbDoKCmBgYGpzCmNvbnN0IHsKICBvcGVuYXBpU29ydCwKICBnZXREZWZhdWx0U29ydFNldCwKICBnZXREZWZhdWx0U29ydENvbXBvbmVudHNTZXQKfSA9IHJlcXVpcmUoJ29wZW5hcGktZm9ybWF0Jyk7Cgpjb25zdCBkb2N1bWVudCA9IC8qIHlvdXIgT3BlbkFQSSBkb2N1bWVudCAqLzsKY29uc3Qgc29ydGVkID0gYXdhaXQgb3BlbmFwaVNvcnQoZG9jdW1lbnQsIHsKICBzb3J0U2V0OiBhd2FpdCBnZXREZWZhdWx0U29ydFNldCgpLAogIHNvcnRDb21wb25lbnRzU2V0OiBhd2FpdCBnZXREZWZhdWx0U29ydENvbXBvbmVudHNTZXQoKQp9KTsKYGBgCgpCb3RoIGBzb3J0U2V0YCBhbmQgYHNvcnRDb21wb25lbnRzU2V0YCBhcmUgb3B0aW9uYWwgd2hlbiB5b3UgY2FsbCBgb3BlbmFwaVNvcnRgLiBXaGVuIG9taXR0ZWQsIG9wZW5hcGktZm9ybWF0IGF1dG9tYXRpY2FsbHkgYXBwbGllcyB0aGUgYnVpbHQtaW4gZGVmYXVsdHMgKHRoZSBzYW1lIG9uZXMgdGhlIENMSSB1c2VzKS4gVGhlIGhlbHBlciBmdW5jdGlvbnMgYGdldERlZmF1bHRTb3J0U2V0YCBhbmQgYGdldERlZmF1bHRTb3J0Q29tcG9uZW50c1NldGAgYXJlIHByb3ZpZGVkIGluIGNhc2UgeW91IHdhbnQgdG8gc3RhcnQgZnJvbSB0aGUgZGVmYXVsdHMgYW5kIHR3ZWFrIHRoZW0gYmVmb3JlIGludm9raW5nIGBvcGVuYXBpU29ydGAgaW4geW91ciBvd24gc2NyaXB0cy4KCiMjIyBTb3J0aW5nIHdpdGggbWluaW1hbCBzZXR1cAoKYGBganMKY29uc3QgewogIHBhcnNlRmlsZSwKICBzdHJpbmdpZnksCiAgd3JpdGVGaWxlLAogIG9wZW5hcGlTb3J0Cn0gPSByZXF1aXJlKCdvcGVuYXBpLWZvcm1hdCcpOwoKY29uc3QgaW5wdXQgPSBhd2FpdCBwYXJzZUZpbGUoJ3NwZWMuanNvbicpOyAvLyBsb2NhbCBwYXRoIG9yIHJlbW90ZSBVUkwKY29uc3Qge2RhdGF9ID0gYXdhaXQgb3BlbmFwaVNvcnQoaW5wdXQsIHtzb3J0OiB0cnVlfSk7Cgpjb25zdCBvdXRwdXQgPSBhd2FpdCBzdHJpbmdpZnkoZGF0YSwge2Zvcm1hdDogJ2pzb24nfSk7CmF3YWl0IHdyaXRlRmlsZSgnc3BlYy5zb3J0ZWQuanNvbicsIG91dHB1dCwge2Zvcm1hdDogJ2pzb24nfSk7CmBgYAoKIyMjIFNvcnRpbmcgd2l0aCBjdXN0b20gdHdlYWtzCgpgYGBqcwpjb25zdCB7CiAgcGFyc2VGaWxlLAogIHN0cmluZ2lmeSwKICB3cml0ZUZpbGUsCiAgb3BlbmFwaVNvcnQsCiAgZ2V0RGVmYXVsdFNvcnRTZXQKfSA9IHJlcXVpcmUoJ29wZW5hcGktZm9ybWF0Jyk7Cgpjb25zdCBkb2N1bWVudCA9IGF3YWl0IHBhcnNlRmlsZSgnc3BlYy5qc29uJyk7Cgpjb25zdCBzb3J0U2V0ID0gYXdhaXQgZ2V0RGVmYXVsdFNvcnRTZXQoKTsKc29ydFNldC5nZXQgPSBbJ3N1bW1hcnknLCAnZGVzY3JpcHRpb24nLCAncmVzcG9uc2VzJ107IC8vIG92ZXJyaWRlIEdFVCBwcmlvcml0eQoKY29uc3Qge2RhdGF9ID0gYXdhaXQgb3BlbmFwaVNvcnQoZG9jdW1lbnQsIHsKICBzb3J0OiB0cnVlLAogIHNvcnRTZXQsCiAgc29ydENvbXBvbmVudHNTZXQ6IFsnc2NoZW1hcycsICdyZXNwb25zZXMnXQp9KTsKCmNvbnN0IG91dHB1dCA9IGF3YWl0IHN0cmluZ2lmeShkYXRhLCB7Zm9ybWF0OiAnanNvbid9KTsKYXdhaXQgd3JpdGVGaWxlKCdzcGVjLnNvcnRlZC5qc29uJywgb3V0cHV0LCB7Zm9ybWF0OiAnanNvbid9KTsKYGBgCgojIyMgTWl4aW5nIGluIG90aGVyIHV0aWxpdGllcwoKYGBganMKY29uc3Qge29wZW5hcGlGaWx0ZXIsIG9wZW5hcGlHZW5lcmF0ZX0gPSByZXF1aXJlKCdvcGVuYXBpLWZvcm1hdCcpOwoKbGV0IGRyYWZ0ID0gYXdhaXQgcGFyc2VGaWxlKCdzcGVjLmpzb24nKTsKZHJhZnQgPSAoYXdhaXQgb3BlbmFwaUZpbHRlcihkcmFmdCwgewogIGZpbHRlclNldDoge3RhZ3M6IFsncHVibGljJ119Cn0pKS5kYXRhOwoKZHJhZnQgPSAoYXdhaXQgb3BlbmFwaUdlbmVyYXRlKGRyYWZ0LCB7CiAgZ2VuZXJhdGVTZXQ6IHsKICAgIG9wZXJhdGlvbklkVGVtcGxhdGU6ICc8bWV0aG9kPl88cGF0aFBhcnQxPl88cGF0aFBhcnQyPicKICB9Cn0pKS5kYXRhOwpgYGAKCiMjIyBVc2luZyB0aGUgZmlsZSBoZWxwZXJzIGZvciBZQU1ML0pTT04gT3BlbkFQSSBkb2N1bWVudHMKClRoZSBtb2R1bGUgYWxzbyBleHBvcnRzIHRoZSBzYW1lIGhlbHBlcnMgdGhlIENMSSByZWxpZXMgb24gZm9yIHNtYXJ0IHBhcnNpbmcvd3JpdGluZyAobGFyZ2UtbnVtYmVyIGhhbmRsaW5nLCBZQU1MIGNvbW1lbnRzLCByZW1vdGUgbG9hZGluZywgZXRjLikgb2YgT3BlbkFQSSBkb2N1bWVudHM6CgpgYGBqcwpjb25zdCB7CiAgcGFyc2VGaWxlLAogIHN0cmluZ2lmeSwKICB3cml0ZUZpbGUsCiAgb3BlbmFwaVNvcnQKfSA9IHJlcXVpcmUoJ29wZW5hcGktZm9ybWF0Jyk7Cgpjb25zdCBpbnB1dCA9IGF3YWl0IHBhcnNlRmlsZSgnb3BlbmFwaS55YW1sJyk7IC8vIGxvY2FsIHBhdGggb3IgcmVtb3RlIFVSTApjb25zdCB7ZGF0YX0gPSBhd2FpdCBvcGVuYXBpU29ydChpbnB1dCwge3NvcnQ6IHRydWV9KTsKCmNvbnN0IG91dHB1dCA9IGF3YWl0IHN0cmluZ2lmeShkYXRhLCB7Zm9ybWF0OiAneWFtbCcsIGxpbmVXaWR0aDogLTF9KTsKYXdhaXQgd3JpdGVGaWxlKCdvcGVuYXBpLnNvcnRlZC55YW1sJywgb3V0cHV0LCB7Zm9ybWF0OiAneWFtbCd9KTsKYGBgCgojIyBBc3luY0FQSSBkb2N1bWVudHMKCkZvciBoYW5kbGluZyBBc3luY0FQSSBkb2N1bWVudHMsIHdlIGhhdmUgY3JlYXRlZCBhIHNlcGFyYXRlCnBhY2thZ2UgW2FzeW5jYXBpLWZvcm1hdF0oaHR0cHM6Ly9naXRodWIuY29tL3RoaW04MS9hc3luY2FwaS1mb3JtYXQpIHRvIGFsbG93IGN1c3RvbWlzYXRpb24gc3BlY2lmaWMgZm9yIEFzeW5jQVBJCnVzZS1jYXNlcy4KCiMjIFN0b3BsaWdodCBTdHVkaW8KCldlIGhhdmUgYWRvcHRlZCB0aGUgWUFNTCBwYXJzaW5nIHN0eWxlIGZyb20gW1N0b3BsaWdodCBTdHVkaW9dKGh0dHBzOi8vc3RvcGxpZ2h0LmlvL3N0dWRpby8pLCBieSBsZXZlcmFnaW5nCnRoZSBbQHN0b3BsaWdodC95YW1sXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ac3RvcGxpZ2h0L3lhbWwpIHBhY2thZ2UgZm9yIGhhbmRsaW5nIHRoZSBwYXJzaW5nIG9mIE9wZW5BUEkgWUFNTApmaWxlcy4KCkJ5IHVzaW5nIHRoZSBTdG9wbGlnaHQgWUFNTCBwYXJzaW5nLCB0aGUgcmVzdWx0cyB3aWxsIGJlIHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIHdoZW4gdXNpbmcgYSBub3JtYWwgWUFNTCBwYXJzaW5nCmxpYnJhcnksIGxpa2UgW2pzLXRvLXlhbWxdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2pzLXlhbWwpLiBXZSBhcHByZWNpYXRlIHRoZSBTdG9wbGlnaHQgU3R1ZGlvIHRvb2wsIHNpbmNlIGl0IGlzCmFuIGV4Y2VsbGVudCBHVUkgZm9yIHdvcmtpbmcgd2l0aCBPcGVuQVBJIGRvY3VtZW50cyBmb3Igbm9uLU9wZW5BUEkgZXhwZXJ0cyB3aG8gd2lsbCBiZSBjb250cmlidXRpbmcgY2hhbmdlcy4gQnkKYWRvcHRpbmcgdGhlIFN0b3BsaWdodCBTdHVkaW8gWUFNTCBwYXJzaW5nLCB0aGUgcG90ZW50aWFsIHJpc2sgb2YgbWVyZ2UgY29uZmxpY3RzIHdpbGwgYmUgbG93ZXJlZCwgd2hpY2ggaXMgdGhlIG1haW4KcmVhc29uIHdoeSB3ZSBvcHRlZCBmb3IgdXNpbmcgdGhlIEBzdG9wbGlnaHQveWFtbCBwYWNrYWdlLgoKIyMgQ3JlZGl0cwoKVGhpcyBwYWNrYWdlIGlzIGluc3BpcmVkIGJ5CnRoZSBbQG1pY3Jvc29mdC5henVyZS9mb3JtYXQtc3BlY10oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQG1pY3Jvc29mdC5henVyZS9mb3JtYXQtc3BlYykgZnJvbSBbQGZlYXJ0aGVjb3dib3ldKGh0dHBzOi8vZ2l0aHViLmNvbS9mZWFydGhlY293Ym95KS4gVGhlCm9yaWdpbmFsIGNvZGUgd2FzIG5vdCBhdmFpbGFibGUgb24gR2l0SHViLCB3aXRoIHRoZSBsYXN0IHVwZGF0ZSBiZWluZyAzIHllYXJzIGFnbywgc28gdG8gaW1wcm92ZSBzdXBwb3J0IGFuZCBleHRlbmQgaXQgd2UKdHJpZWQgdG8gcmVwcm9kdWNlIHRoZSBvcmlnaW5hbCBmdW5jdGlvbmFsaXR5LgoKVGhlIGZpbHRlciBjYXBhYmlsaXRpZXMgZnJvbSBgb3BlbmFwaS1mb3JtYXRgIGFyZSBpbnNwaXJlZCBieSB0aGUgd29yayBmcm9tIFtATWlrZVJhbHBoc29uXShodHRwczovL2dpdGh1Yi5jb20vbWlrZXJhbHBoc29uKSBvbgp0aGUgW29wZW5hcGktZmlsdGVyXShodHRwczovL2dpdGh1Yi5jb20vTWVybWFkZS9vcGVuYXBpLWZpbHRlcikgcGFja2FnZS4KClRoZSBjYXNpbmcgb3B0aW9ucyBhdmFpbGFibGUgaW4gYG9wZW5hcGktZm9ybWF0YCBhcmUgcG93ZXJlZCBieSB0aGUgZXhjZWxsZW50IFtjYXNlLWFueXRoaW5nXShodHRwczovL2dpdGh1Yi5jb20vbWVzcXVlZWIvY2FzZS1hbnl0aGluZykgbmFubyBwYWNrYWdlIGZyb20gTHVjYSBCYW4gKFtAbWVzcXVlZWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9tZXNxdWVlYikpLgoKPGEgaHJlZj0iaHR0cHM6Ly93d3cuamV0YnJhaW5zLmNvbS8iIHRhcmdldD0iX2JsYW5rIj4KPGltZyBzcmM9Imh0dHBzOi8vcmVzb3VyY2VzLmpldGJyYWlucy5jb20vc3RvcmFnZS9wcm9kdWN0cy9jb21wYW55L2JyYW5kL2xvZ29zL2pldGJyYWlucy5wbmciIGFsdD0iSmV0QnJhaW5zIGxvZ28uIiB3aWR0aD0iMjAwcHgiPgo8L2E+CgpTcGVjaWFsIHRoYW5rcyB0byBbSmV0QnJhaW5zXShodHRwczovL3d3dy5qZXRicmFpbnMuY29tLykgZm9yIHRoZWlyIGNvbnRpbnVvdXMgc3BvbnNvcnNoaXAgb2YgdGhpcyBwcm9qZWN0IG92ZXIgdGhlIGxhc3QgMyB5ZWFycywgYW5kIGZvciB0aGVpciBzdXBwb3J0IHRvIG9wZW4tc291cmNlIHNvZnR3YXJlIChPU1MpIGluaXRpYXRpdmVzLgo= readmeEtag: '"e0db0a2877f9376b042fb85613d0f3f56fce33fb"' readmeLastModified: Mon, 22 Dec 2025 11:27:55 GMT repositoryId: 345077537 description: Format an OpenAPI document by ordering, formatting and filtering fields. created: '2021-03-06T11:31:52Z' updated: '2026-01-22T10:41:37Z' language: JavaScript archived: false stars: 152 watchers: 3 forks: 22 owner: thim81 logo: https://avatars.githubusercontent.com/u/952446?v=4 license: MIT repoEtag: '"52003f8b5e97f2f09a3c5c868bc991e0bc06b4d0996b5bdc1c9bcd8c3c6a6ef9"' repoLastModified: Thu, 22 Jan 2026 10:41:37 GMT foundInMaster: true id: 788dd625de099d0d3403fe30067f3743 v3_1: true - source: https://openapi.tools/ name: super-linter category: - Description Validators - Server Implementations repository: https://github.com/github/super-linter language: - CLI - Docker source_description: >- GitHub Action to lint repositories as part of CI/CD. Implements the latest version of Spectral. v2: true v3: true repositoryMetadata: base64Readme: >- ClRoaXMgcmVwb3NpdG9yeSBpcyBhIGZvcmsgb2YgdGhlIHVwc3RyZWFtIGh0dHBzOi8vZ2l0aHViLmNvbS9zdXBlci1saW50ZXIvc3VwZXItbGludGVyLiBQbGVhc2UgZGlyZWN0IGFsbCBwdWxsIHJlcXVlc3RzIGFuZCBpc3N1ZXMgdGhlcmUgYXMgdGhpcyByZXBvc2l0b3J5IHdpbGwgbm90IGFsd2F5cyBiZSB1cCB0byBkYXRlLgo= readmeEtag: '"7939d5a68eedbc0f5647e25027156d13fe577f47"' readmeLastModified: Thu, 29 Aug 2024 18:27:11 GMT repositoryId: 633129333 description: Combination of multiple linters to install as a GitHub Action created: '2023-04-26T21:02:26Z' updated: '2026-01-05T07:14:56Z' language: Shell archived: false stars: 142 watchers: 4 forks: 26 owner: github logo: https://avatars.githubusercontent.com/u/9919?v=4 license: MIT repoEtag: '"8a2efc17f55a7923c163fcbe9e8ee3ed78c55692c36ac4c08d6159d687a7c182"' repoLastModified: Mon, 05 Jan 2026 07:14:56 GMT foundInMaster: true id: ec6a7a1e4a69a9beeb95bdebb88cb36d - source: https://openapi.tools/ name: SpringFox category: Server language: - Java - Kotlin - Groovy - or Ruby link: https://springfox.io repository: https://github.com/springfox/springfox source_description: Automated JSON API documentation for APIs built with Spring and SpringBoot v1: true v2: true v3: true repositoryMetadata: base64Readme: >- IyBTcHJpbmdmb3gKClshW0pvaW4gdGhlIGNoYXQgYXQgaHR0cHM6Ly9naXR0ZXIuaW0vc3ByaW5nZm94L3NwcmluZ2ZveF0oaHR0cHM6Ly9iYWRnZXMuZ2l0dGVyLmltL0pvaW4lMjBDaGF0LnN2ZyldKGh0dHBzOi8vZ2l0dGVyLmltL3NwcmluZ2ZveC9zcHJpbmdmb3g/dXRtX3NvdXJjZT1iYWRnZSZ1dG1fbWVkaXVtPWJhZGdlJnV0bV9jYW1wYWlnbj1wci1iYWRnZSZ1dG1fY29udGVudD1iYWRnZSkKWyFbRk9TU0EgU3RhdHVzXShodHRwczovL2FwcC5mb3NzYS5pby9hcGkvcHJvamVjdHMvZ2l0JTJCZ2l0aHViLmNvbSUyRnNwcmluZ2ZveCUyRnNwcmluZ2ZveC5zdmc/dHlwZT1zaGllbGQpXShodHRwczovL2FwcC5mb3NzYS5pby9wcm9qZWN0cy9naXQlMkJnaXRodWIuY29tJTJGc3ByaW5nZm94JTJGc3ByaW5nZm94P3JlZj1iYWRnZV9zaGllbGQpClsgIVtEb3dubG9hZF0oaHR0cHM6Ly9hcGkuYmludHJheS5jb20vcGFja2FnZXMvc3ByaW5nZm94L21hdmVuLXJlcG8vc3ByaW5nZm94L2ltYWdlcy9kb3dubG9hZC5zdmcpIF0oaHR0cHM6Ly9iaW50cmF5LmNvbS9zcHJpbmdmb3gvbWF2ZW4tcmVwby9zcHJpbmdmb3gvX2xhdGVzdFZlcnNpb24pIApbIVtQcm9qZWN0IFN0YXRzXShodHRwczovL3d3dy5vcGVuaHViLm5ldC9wL3NwcmluZ2ZveC93aWRnZXRzL3Byb2plY3RfdGhpbl9iYWRnZS5naWYpXShodHRwczovL3d3dy5vcGVuaHViLm5ldC9wL3NwcmluZ2ZveCkKCnwgQnVpbGQgU3RhdHVzICB8IENvdmVyYWdlICAgfCBDb2RlIEFuYWx5c2lzIHwKfC0tLXwtLS18LS0tfAp8WyFbQ2lyY2xlIENJXShodHRwczovL2NpcmNsZWNpLmNvbS9naC9zcHJpbmdmb3gvc3ByaW5nZm94L3RyZWUvbWFzdGVyLnN2Zz9zdHlsZT1zdmcpXShodHRwczovL2NpcmNsZWNpLmNvbS9naC9zcHJpbmdmb3gvc3ByaW5nZm94L3RyZWUvbWFzdGVyKXxbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvc3ByaW5nZm94L3NwcmluZ2ZveC9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2ZyldKGh0dHBzOi8vY29kZWNvdi5pby9naC9zcHJpbmdmb3gvc3ByaW5nZm94KSB8WyFbUXVhbGl0eSBHYXRlIFN0YXR1c10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9c3ByaW5nZm94X3NwcmluZ2ZveCZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1zcHJpbmdmb3hfc3ByaW5nZm94KXwKCnwgU29uYXIgQ2xvdWQgfAp8LS0tLS0tLS0tLS0tIHwKfFshW1NlY3VyaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9c3ByaW5nZm94X3NwcmluZ2ZveCZtZXRyaWM9c2VjdXJpdHlfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1zcHJpbmdmb3hfc3ByaW5nZm94KXwKfFshW1Z1bG5lcmFiaWxpdGllc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9c3ByaW5nZm94X3NwcmluZ2ZveCZtZXRyaWM9dnVsbmVyYWJpbGl0aWVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1zcHJpbmdmb3hfc3ByaW5nZm94KXwKfFshW01haW50YWluYWJpbGl0eSBSYXRpbmddKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PXNwcmluZ2ZveF9zcHJpbmdmb3gmbWV0cmljPXNxYWxlX3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9c3ByaW5nZm94X3NwcmluZ2ZveCl8CnxbIVtSZWxpYWJpbGl0eSBSYXRpbmddKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PXNwcmluZ2ZveF9zcHJpbmdmb3gmbWV0cmljPXJlbGlhYmlsaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9c3ByaW5nZm94X3NwcmluZ2ZveCl8CnxbIVtUZWNobmljYWwgRGVidF0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9c3ByaW5nZm94X3NwcmluZ2ZveCZtZXRyaWM9c3FhbGVfaW5kZXgpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPXNwcmluZ2ZveF9zcHJpbmdmb3gpfAp8WyFbQ292ZXJhZ2VdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PXNwcmluZ2ZveF9zcHJpbmdmb3gmbWV0cmljPWNvdmVyYWdlKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1zcHJpbmdmb3hfc3ByaW5nZm94KXwKCiMjIyBBYm91dApGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIHByb2plY3QgdmlzaXQgdGhlIFtTcHJpbmdmb3ggV2Vic2l0ZV0oaHR0cDovL3NwcmluZ2ZveC5pbykgb3IKIFtodHRwOi8vc3ByaW5nZm94LmdpdGh1Yi5pby9zcHJpbmdmb3gvXShodHRwOi8vc3ByaW5nZm94LmdpdGh1Yi5pby9zcHJpbmdmb3gvKQoKIyMjIFVzZWZ1bCBsaW5rcwotIFtSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbl0oaHR0cDovL3NwcmluZ2ZveC5pbykKLSBbRXhhbXBsZXMgcmVwb3NpdG9yeV0oaHR0cHM6Ly9naXRodWIuY29tL3NwcmluZ2ZveC9zcHJpbmdmb3gtZGVtb3MpCi0gW0NvbnRyaWJ1dGlvbiBHdWlkZWxpbmVzXShodHRwczovL2dpdGh1Yi5jb20vc3ByaW5nZm94L3NwcmluZ2ZveC93aWtpL0NvbnRyaWJ1dGlvbi1ndWlkZWxpbmVzKQotIFtDb3JlIGNvbnRyaWJ1dG9yc10oaHR0cDovL3NwcmluZ2ZveC5naXRodWIuaW8vc3ByaW5nZm94L2NvbnRyaWJ1dG9ycy5odG1sKQotIFtEZXZlbG9wbWVudCBhbmQgY29udHJpYnV0aW9uIGd1aWRlbGluZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJ0eXBpdHQvc3dhZ2dlci1zcHJpbmdtdmMvd2lraS9EZXZlbG9wbWVudCkKLSBbQ2hhbmdlIGxvZ10oZG9jcy9yZWxlYXNlLW5vdGVzLm1kKQotIFtEZXZlbG9wbWVudCBFbnZpcm9ubWVudF0oaHR0cDovL3NwcmluZ2ZveC5naXRodWIuaW8vc3ByaW5nZm94L2RvY3MvY3VycmVudC8jZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQpCi0gW1JlbGVhc2UgSW5zdHJ1Y3Rpb25zXShodHRwOi8vc3ByaW5nZm94LmdpdGh1Yi5pby9zcHJpbmdmb3gvZG9jcy9jdXJyZW50LyNyZWxlYXNpbmcpCgojIyMgR2V0dGluZyBTdGFydGVkCgojIyMjIEZvciBuZXcgcHJvamVjdHMKRm9yIE1hdmVuCmBgYHhtbCAKPGRlcGVuZGVuY3k+CiAgICA8Z3JvdXBJZD5pby5zcHJpbmdmb3g8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5zcHJpbmdmb3gtYm9vdC1zdGFydGVyPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+My4wLjA8L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KCmBgYAoKRm9yIEdyYWRsZQpgYGBncmFkbGUgCiAgaW1wbGVtZW50YXRpb24gImlvLnNwcmluZ2ZveDpzcHJpbmdmb3gtYm9vdC1zdGFydGVyOjx2ZXJzaW9uPiIKYGBgCiMjIyMgTWlncmF0aW5nIGZyb20gZWFybGllciBzbmFwc2hvdCAKIyMjIyBTcHJpbmcgQm9vdCBBcHBsaWNhdGlvbnMKTk9URTogV291bGQgbG92ZSBmZWVkYmFjayB0byBtYWtlIHRoaXMgYmV0dGVyCjEuIFJlbW92ZSBleHBsaWNpdCBkZXBlbmRlbmNpZXMgb24gYHNwcmluZ2ZveC1zd2FnZ2VyMmAKMi4gUmVtb3ZlIGFueSBgQEVuYWJsZVN3YWdnZXIyLi4uYCBhbm5vdGF0aW9ucwozLiBBZGQgdGhlIGBzcHJpbmdmb3gtYm9vdC1zdGFydGVyYCBkZXBlbmRlbmN5CjQuIFNwcmluZ2ZveCAzLnggcmVtb3ZlcyBkZXBlbmRlbmNpZXMgb24gZ3VhdmEgYW5kIG90aGVyIDNyZCBwYXJ0eSBsaWJyYXJpZXMgKG5vdCB6ZXJvIGRlcCB5ZXQhIGRlcGVuZHMgb24gc3ByaW5nIHBsdWdpbgphbmQgb3BlbiBhcGkgbGlicmFyaWVzIGZvciBhbm5vdGF0aW9ucyBhbmQgbW9kZWxzKSBzbyBpZiB5b3UgdXNlZCBndWF2YSBwcmVkaWNhdGVzL2Z1bmN0aW9ucyB0aG9zZSB3aWxsIG5lZWQgdG8gCnRyYW5zaXRpb24gdG8gamF2YSA4IGZ1bmN0aW9uIGludGVyZmFjZXMuCgojIyMjIE1pZ3JhdGluZyBmcm9tIGV4aXN0aW5nIDIueCB2ZXJzaW9uCiMjIyMgU3ByaW5nIEJvb3QgQXBwbGljYXRpb25zCk5PVEU6IFdvdWxkIGxvdmUgZmVlZGJhY2sgdG8gbWFrZSB0aGlzIGJldHRlcgoxLiBSZW1vdmUgZXhwbGljaXQgZGVwZW5kZW5jaWVzIG9uIGBzcHJpbmdmb3gtc3dhZ2dlcjJgCjIuIFJlbW92ZSB0aGUgYEBFbmFibGVTd2FnZ2VyMmAgYW5ub3RhdGlvbnMKMy4gQWRkIHRoZSBgc3ByaW5nZm94LWJvb3Qtc3RhcnRlcmAgZGVwZW5kZW5jeQo0LiBTcHJpbmdmb3ggMy54IHJlbW92ZXMgZGVwZW5kZW5jaWVzIG9uIGd1YXZhIGFuZCBvdGhlciAzcmQgcGFydHkgbGlicmFyaWVzIChub3QgemVybyBkZXAgeWV0ISBkZXBlbmRzIG9uIHNwcmluZyBwbHVnaW4KYW5kIG9wZW4gYXBpIGxpYnJhcmllcyBmb3IgYW5ub3RhdGlvbnMgYW5kIG1vZGVscykgc28gaWYgeW91IHVzZWQgZ3VhdmEgcHJlZGljYXRlcy9mdW5jdGlvbnMgdGhvc2Ugd2lsbCBuZWVkIHRvIAp0cmFuc2l0aW9uIHRvIGphdmEgOCBmdW5jdGlvbiBpbnRlcmZhY2VzIAo1LiBJZiB5b3UgYXJlIHVzaW5nIFdlYk12YyBidXQgeW91IGRvbid0IHVzZSB0aGUgW2BARW5hYmxlV2ViTXZjYF0oaHR0cHM6Ly9kb2NzLnNwcmluZy5pby9zcHJpbmctZnJhbWV3b3JrL2RvY3MvY3VycmVudC9qYXZhZG9jLWFwaS9vcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9zZXJ2bGV0L2NvbmZpZy9hbm5vdGF0aW9uL0VuYWJsZVdlYk12Yy5odG1sKSBhbm5vdGF0aW9uIHlldCwgYWRkIHRoaXMgYW5ub3RhdGlvbi4KCiMjIyMgUmVndWxhciBzcHJpbmcgbXZjICAKTk9URTogV291bGQgbG92ZSBmZWVkYmFjayB0byBtYWtlIHRoaXMgZXhwZXJpZW5jZSBiZXR0ZXIKMS4gUmVtb3ZlIGV4cGxpY2l0IGRlcGVuZGVuY2llcyBvbiBgc3ByaW5nZm94LXN3YWdnZXIyYAoyLiBBZGQgYEBFbmFibGVPcGVuQXBpYCBmb3Igb3BlbiBBUEkgKGFuZCBgQEVuYWJsZVN3YWdnZXIyV2ViTXZjYCBvciBgQEVuYWJsZVN3YWdnZXIyV2ViRmx1eGAgZm9yIG9sZGVyIHZlcnNpb25zKSAgCjMuIEFkZGVkIHRoZSBgc3ByaW5nZm94LW9hc2AgbGlicmFyeSAKNC4gU3ByaW5nZm94IDMueCByZW1vdmVzIGRlcGVuZGVuY2llcyBvbiBndWF2YSBhbmQgb3RoZXIgM3JkIHBhcnR5IGxpYnJhcmllcyAobm90IHplcm8gZGVwIHlldCEgZGVwZW5kcyBvbiBzcHJpbmcgcGx1Z2luCmFuZCBvcGVuIGFwaSBsaWJyYXJpZXMgZm9yIGFubm90YXRpb25zIGFuZCBtb2RlbHMpIHNvIGlmIHlvdSB1c2VkIGd1YXZhIHByZWRpY2F0ZXMvZnVuY3Rpb25zIHRob3NlIHdpbGwgbmVlZCB0byAKdHJhbnNpdGlvbiB0byBqYXZhIDggZnVuY3Rpb24gaW50ZXJmYWNlcyAKCgpMaWNlbnNlCi0tLS0tLS0KCkNvcHlyaWdodCAyMDE1IE1hcnR5IFBpdHQgLSBbQG1hcnR5cGl0dF0oaHR0cHM6Ly9naXRodWIuY29tL21hcnR5cGl0dCksIERpbGlwIEtyaXNobmFuIC0gW0BkaWxpcGtyaXNoXShodHRwczovL2dpdGh1Yi5jb20vZGlsaXBrcmlzaCksCkFkcmlhbiBLZWxseSAtICBbQGFkcmlhbmJrXShodHRwczovL2dpdGh1Yi5jb20vYWRyaWFuYmspLAoKTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IFthcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXShodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKCiMjIExpY2Vuc2UKWyFbRk9TU0EgU3RhdHVzXShodHRwczovL2FwcC5mb3NzYS5pby9hcGkvcHJvamVjdHMvZ2l0JTJCZ2l0aHViLmNvbSUyRnNwcmluZ2ZveCUyRnNwcmluZ2ZveC5zdmc/dHlwZT1sYXJnZSldKGh0dHBzOi8vYXBwLmZvc3NhLmlvL3Byb2plY3RzL2dpdCUyQmdpdGh1Yi5jb20lMkZzcHJpbmdmb3glMkZzcHJpbmdmb3g/cmVmPWJhZGdlX2xhcmdlKQo= readmeEtag: '"fd6ee0fdca5a5307c2655e0354220fb22686b380"' readmeLastModified: Wed, 14 Oct 2020 01:49:23 GMT repositoryId: 4238977 description: Automated JSON API documentation for API's built with Spring created: '2012-05-06T06:38:57Z' updated: '2026-02-04T01:24:12Z' language: Java archived: false stars: 5942 watchers: 258 forks: 1518 owner: springfox logo: https://avatars.githubusercontent.com/u/11529357?v=4 license: Apache-2.0 repoEtag: '"b7b624202da9e5570ef99dfc3f9cc547a193672857d3913b5244d926cb540795"' repoLastModified: Wed, 04 Feb 2026 01:24:12 GMT foundInMaster: true id: 2addde4c497bf582f20025ccac2cda86 - source: - https://openapi.tools/ - openapi3 tags name: php-openapi-faker language: PHP repository: https://github.com/canvural/php-openapi-faker source_description: >- Library to generate fake data for OpenAPI 3.x requests, responses and schemas. v2: false v3: true repositoryMetadata: base64Readme: >- IyBwaHAtb3BlbmFwaS1mYWtlcgoKIVtUZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL2NhbnZ1cmFsL3BocC1vcGVuYXBpLWZha2VyL3dvcmtmbG93cy9UZXN0cy9iYWRnZS5zdmcpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9jYW52dXJhbC9waHAtb3BlbmFwaS1mYWtlci9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2ZyldKGh0dHBzOi8vY29kZWNvdi5pby9naC9jYW52dXJhbC9waHAtb3BlbmFwaS1mYWtlcikKWyFbSW5mZWN0aW9uIE1TSV0oaHR0cHM6Ly9iYWRnZS5zdHJ5a2VyLW11dGF0b3IuaW8vZ2l0aHViLmNvbS9jYW52dXJhbC9waHAtb3BlbmFwaS1mYWtlci9tYXN0ZXIpXShodHRwczovL2luZmVjdGlvbi5naXRodWIuaW8pClshW1BIUFN0YW5dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvUEhQU3Rhbi1MZXZlbCUyME1heC1icmlnaHRncmVlbi5zdmc/c3R5bGU9ZmxhdCZsb2dvPXBocCldKGh0dHBzOi8vcGhwc3Rhbi5vcmcpCgpMaWJyYXJ5IHRvIGdlbmVyYXRlIGZha2UgZGF0YSBmb3IgeW91ciBPcGVuQVBJIHJlcXVlc3RzLCByZXNwb25zZXMgYW5kIHNjaGVtYXMuCgpgYGBwaHAKJGZha2VyID0gXFZ1cmFsXE9wZW5BUElGYWtlclxPcGVuQVBJRmFrZXI6OmNyZWF0ZUZyb21Kc29uKCR5b3VyU2NoZW1hQXNKc29uKTsKJGZha2VEYXRhID0gJGZha2VyLT5tb2NrUmVzcG9uc2UoJy90b2RvcycsJ0dFVCcpOwpgYGAKCiMjIEluc3RhbGxhdGlvbgoKWW91IGNhbiBpbnN0YWxsIHRoZSBwYWNrYWdlIHZpYSBjb21wb3NlcjoKCmBgYGJhc2gKY29tcG9zZXIgcmVxdWlyZSAtLWRldiBjYW52dXJhbC9waHAtb3BlbmFwaS1mYWtlcgpgYGAKCiMjIFVzYWdlCgpGaXJzdCB5b3UgbmVlZCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgYE9wZW5BUElGYWtlcmAgd2l0aCB5b3VyIHNjaGVtYSB0aGF0IHlvdSB3YW50IHRvIGZha2UgZGF0YSBmcm9tLiBZb3UgY2FuIHVzZSBgY3JlYXRlRnJvbUpzb25gLCBgY3JlYXRlRnJvbVlhbWxgIG9yIGBjcmVhdGVGcm9tU2NoZW1hYCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgYE9wZW5BUElGYWtlcmAuCmBgYHBocAokZmFrZXIgPSBcVnVyYWxcT3BlbkFQSUZha2VyXE9wZW5BUElGYWtlcjo6Y3JlYXRlRnJvbUpzb24oJHlvdXJTY2hlbWFBc0pzb24pOwpgYGAKClRoZW4geW91IGNhbiB1c2UgYG1vY2tSZXNwb25zZWAsIGBtb2NrUmVzcG9uc2VGb3JFeGFtcGxlYCwgYG1vY2tSZXF1ZXN0YCwgYG1vY2tSZXF1ZXN0Rm9yRXhhbXBsZWAsIGBtb2NrQ29tcG9uZW50U2NoZW1hYCBhbmQgYG1vY2tDb21wb25lbnRTY2hlbWFGb3JFeGFtcGxlYCBtZXRob2RzIG9uIGl0IHRvIGdlbmVyYXRlIGZha2UgZGF0YSBmb3IgeW91ciByZXF1ZXN0cywgcmVzcG9uc2VzIGFuZCBzY2hlbWFzLiBMaWtlIHNvOgoKYGBgcGhwCiRmYWtlRGF0YSA9ICRmYWtlci0+bW9ja1Jlc3BvbnNlKCcvdG9kb3MnLCdHRVQnKTsKYGBgCgojIyMgT3B0aW9ucwoKVGhlcmUgYXJlIHNvbWUgb3B0aW9ucyB5b3UgY2FuIHVzZSB0byBtb2RpZnkgc29tZSBiZWhhdmlvdXIuIFlvdSBjYW4gcGFzcyBvcHRpb25zIGFzIGFuIGFzc29jaWF0aXZlIGFycmF5IHRvIGBzZXRPcHRpb25zYCBtZXRob2QgaW4gYE9wZW5BUElGYWtlcmAuIEZvciBleGFtcGxlOgoKYGBgcGhwCiRmYWtlciA9IFxWdXJhbFxPcGVuQVBJRmFrZXJcT3BlbkFQSUZha2VyOjpjcmVhdGVGcm9tSnNvbigkeW91clNjaGVtYUFzSnNvbikKICAgIC0+c2V0T3B0aW9ucyhbJ21pbkl0ZW1zJyA9PiA1XSk7CmBgYAoKQmVsb3cgeW91IGNhbiBmaW5kIGV4cGxhbmF0aW9uIGZvciBlYWNoIG9wdGlvbi4KCiMjIyMgYG1pbkl0ZW1zYApPdmVycmlkZXMgYG1pbkl0ZW1zYCBwcm9wZXJ0eSBpZiBpdCdzIGxlc3MgdGhhbiB0aGlzIHZhbHVlLgoKIyMjIyBgbWF4SXRlbXNgCk92ZXJyaWRlIGBtYXhJdGVtc2AgaWYgaXQncyBncmVhdGVyIHRoYW4gdGhpcyB2YWx1ZS4KCiMjIyBgYWx3YXlzRmFrZU9wdGlvbmFsc2AKCklmIGVuYWJsZWQsIGV2ZXJ5IHByb3BlcnR5IG9yIGl0ZW0gd2lsbCBiZSBnZW5lcmF0ZWQgcmVnYXJkbGVzcyBpZiB0aGV5IGFyZSByZXF1aXJlZCBvciBub3QuICoqRGVmYXVsdCoqOiBgZmFsc2VgCgojIyMgYHN0cmF0ZWd5YApCeSBkZWZhdWx0LCBgT3BlbkFQSUZha2VyYCB1c2VzIGEgZHluYW1pYyBnZW5lcmF0aW9uIHN0cmF0ZWd5LiBZb3UgY2FuIGVuYWJsZSB0aGUgc3RhdGljIGV4YW1wbGVzIGdlbmVyYXRpb24gYnkgdXNpbmcgdGhlIGBzdGF0aWNgIHN0cmF0ZWd5LgoqKkRlZmF1bHQqKjogYGR5bmFtaWNgCgojIyBDaGFuZ2Vsb2cKClBsZWFzZSBzZWUgW0NIQU5HRUxPR10oQ0hBTkdFTE9HLm1kKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB3aGF0IGhhcyBjaGFuZ2VkIHJlY2VudGx5LgoKIyMgQ29udHJpYnV0aW5nCgpQbGVhc2Ugc2VlIFtDT05UUklCVVRJTkddKENPTlRSSUJVVElORy5tZCkgZm9yIGRldGFpbHMuCgojIyBDcmVkaXRzCgpQZW9wbGU6Ci0gW0NhbiBWdXJhbF0oaHR0cHM6Ly9naXRodWIuY29tL2NhbnZ1cmFsKQotIFtBbGwgQ29udHJpYnV0b3JzXSguLi8uLi9jb250cmlidXRvcnMpCgpSZXNvdXJjZXM6Ci0gW2NlYmUvcGhwLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9jZWJlL3BocC1vcGVuYXBpKQotIFtsZWFndWUvb3BlbmFwaS1wc3I3LXZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL3RoZXBocGxlYWd1ZS9vcGVuYXBpLXBzcjctdmFsaWRhdG9yKQoKIyMgTGljZW5zZQoKVGhlIE1JVCBMaWNlbnNlIChNSVQpLiBQbGVhc2Ugc2VlIFtMaWNlbnNlIEZpbGVdKExJQ0VOU0UubWQpIGZvciBtb3JlIGluZm9ybWF0aW9uLgo= readmeEtag: '"f6d07df0eec133990026e724552ba3c346d964ad"' readmeLastModified: Sun, 07 May 2023 08:42:23 GMT repositoryId: 271818243 description: Library to generate fake data for OpenAPI request/response/schemas created: '2020-06-12T14:31:49Z' updated: '2025-06-26T19:24:11Z' language: PHP archived: false stars: 93 watchers: 3 forks: 2 owner: canvural logo: https://avatars.githubusercontent.com/u/1574232?v=4 license: MIT repoEtag: '"d7e1ebff87f3287fca3412efa8d25191d0c33ffcd48301c6bdf596ba5ceab63d"' repoLastModified: Thu, 26 Jun 2025 19:24:11 GMT foundInMaster: true id: 4fdfc8e7383c27745a0bff820fab179e category: Parsers - source: https://openapi.tools/ name: OWASP ZAP category: - Security - SDK language: Java repository: https://github.com/zaproxy/zaproxy source_description: >- OWASP ZAP is a free and open source web security tool that can be used manually or completely automated. It supports importing OpenAPI v2 and v3 definitions to allow an API to be thoroughly security tested. link: https://www.zaproxy.org/ v2: true v3: true repositoryMetadata: base64Readme: >- IyBbIVtdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS93aWtpL3phcHJveHkvemFwcm94eS9pbWFnZXMvemFwLWJ5LWNoZWNrbWFyeC5wbmcpXShodHRwczovL3d3dy56YXByb3h5Lm9yZykKWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLUFwYWNoZSUyMDItNEVCMUJBLnN2ZyldKGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAuaHRtbCkKWyFbR2l0SHViIHJlbGVhc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3JlbGVhc2UvemFwcm94eS96YXByb3h5LnN2ZyldKGh0dHBzOi8vd3d3LnphcHJveHkub3JnL2Rvd25sb2FkLykKWyFbSmF2YSBDSV0oaHR0cHM6Ly9naXRodWIuY29tL3phcHJveHkvemFwcm94eS9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3phcHJveHkvemFwcm94eS9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwpClshW0NJSSBCZXN0IFByYWN0aWNlc10oaHR0cHM6Ly9iZXN0cHJhY3RpY2VzLmNvcmVpbmZyYXN0cnVjdHVyZS5vcmcvcHJvamVjdHMvMjQvYmFkZ2UpXShodHRwczovL2Jlc3RwcmFjdGljZXMuY29yZWluZnJhc3RydWN0dXJlLm9yZy9wcm9qZWN0cy8yNCkKWyFbR2l0aHViIFJlbGVhc2VzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9kb3dubG9hZHMvemFwcm94eS96YXByb3h5L2xhdGVzdC90b3RhbC5zdmc/bWF4QWdlPTI1OTIwMDApXShodHRwczovL3phcGJvdC5naXRodWIuaW8vemFwLW1nbXQtc2NyaXB0cy9kb3dubG9hZHMuaHRtbCkKWyFbamF2YWRvY10oaHR0cHM6Ly9qYXZhZG9jLmlvL2JhZGdlMi9vcmcuemFwcm94eS96YXAvamF2YWRvYy5zdmcpXShodHRwczovL2phdmFkb2MuaW8vZG9jL29yZy56YXByb3h5L3phcCkKWyFbQ29kZVFMXShodHRwczovL2dpdGh1Yi5jb20vemFwcm94eS96YXByb3h5L2FjdGlvbnMvd29ya2Zsb3dzL2NvZGVxbC55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3phcHJveHkvemFwcm94eS9hY3Rpb25zL3dvcmtmbG93cy9jb2RlcWwueW1sKQpbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD16YXByb3h5X3phcHJveHkmbWV0cmljPWFsZXJ0X3N0YXR1cyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9emFwcm94eV96YXByb3h5KQpbIVtPcGVuIFNvdXJjZSBIZWxwZXJzXShodHRwczovL3d3dy5jb2RldHJpYWdlLmNvbS96YXByb3h5L3phcHJveHkvYmFkZ2VzL3VzZXJzLnN2ZyldKGh0dHBzOi8vd3d3LmNvZGV0cmlhZ2UuY29tL3phcHJveHkvemFwcm94eSkKWyFbVHdpdHRlciBGb2xsb3ddKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdHdpdHRlci9mb2xsb3cvemFwcm94eS5zdmc/c3R5bGU9c29jaWFsJmxhYmVsPUZvbGxvdyZtYXhBZ2U9MjU5MjAwMCldKGh0dHBzOi8vdHdpdHRlci5jb20vemFwcm94eSkKCiFbSW50ZWdyYXRpb24gVGVzdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS96YXByb3h5L3phcHJveHkvYWN0aW9ucy93b3JrZmxvd3MvcnVuLWludGVncmF0aW9uLXRlc3RzLnltbC9iYWRnZS5zdmcpCiFbRG9ja2VyIExpdmUgUmVsZWFzZV0oaHR0cHM6Ly9naXRodWIuY29tL3phcHJveHkvemFwcm94eS9hY3Rpb25zL3dvcmtmbG93cy9yZWxlYXNlLWxpdmUtZG9ja2VyLnltbC9iYWRnZS5zdmcpCgpUaGUgWmVkIEF0dGFjayBQcm94eSAoWkFQKSBieSBDaGVja21hcnggaXMgdGhlIHdvcmxk4oCZcyBtb3N0IHdpZGVseSB1c2VkIHdlYiBhcHAgc2Nhbm5lci4gCkZyZWUgYW5kIG9wZW4gc291cmNlLiBBIGNvbW11bml0eSBiYXNlZCBHaXRIdWIgVG9wIDEwMDAgcHJvamVjdCB0aGF0IGFueW9uZSBjYW4gY29udHJpYnV0ZSB0by4KCkl0IGNhbiBoZWxwIHlvdSBhdXRvbWF0aWNhbGx5IGZpbmQgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGluIHlvdXIgd2ViIGFwcGxpY2F0aW9ucyB3aGlsZSB5b3UgYXJlIGRldmVsb3BpbmcgYW5kIHRlc3RpbmcgeW91ciBhcHBsaWNhdGlvbnMuIApJdCdzIGFsc28gYSBncmVhdCB0b29sIGZvciBleHBlcmllbmNlZCBwZW50ZXN0ZXJzIHRvIHVzZSBmb3IgbWFudWFsIHNlY3VyaXR5IHRlc3RpbmcuCgpbIVtdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS93aWtpL3phcHJveHkvemFwcm94eS9pbWFnZXMvWkFQLURvd25sb2FkLnBuZyldKGh0dHBzOi8vd3d3LnphcHJveHkub3JnL2Rvd25sb2FkLykKCkZvciBtb3JlIGRldGFpbHMgYWJvdXQgWkFQIHNlZSB0aGUgd2Vic2l0ZTogW3phcHJveHkub3JnXShodHRwczovL3d3dy56YXByb3h5Lm9yZy8pCgpbIVtdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS93aWtpL3phcHJveHkvemFwcm94eS9pbWFnZXMvemFwLXdlYnNpdGUucG5nKV0oaHR0cHM6Ly93d3cuemFwcm94eS5vcmcvKQo= readmeEtag: '"e5efcf16bf926466a0dbb8e29f146884df227f05"' readmeLastModified: Tue, 24 Sep 2024 12:03:48 GMT repositoryId: 36817565 description: The ZAP by Checkmarx Core project created: '2015-06-03T16:55:01Z' updated: '2026-02-06T04:24:36Z' language: Java archived: false stars: 14711 watchers: 398 forks: 2502 owner: zaproxy logo: https://avatars.githubusercontent.com/u/6716868?v=4 license: Apache-2.0 repoEtag: '"81e1b53233cc43e7f2cb32f437bde8e1e9d720e5c174149ab15f5d11c6abb46f"' repoLastModified: Fri, 06 Feb 2026 04:24:36 GMT foundInMaster: true id: 9eedc1be44837a65f912bcf562844f39 - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/oxlip-lang/oal v3: true id: fd805efb152540f08abf74a1601a5da0 repositoryMetadata: base64Readme: >- IVtCdWlsZF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvYWN0aW9ucy93b3JrZmxvdy9zdGF0dXMvb3hsaXAtbGFuZy9vYWwvY2kueW1sP2JyYW5jaD1tYXN0ZXIpClshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1BcGFjaGVfMi4wLWJsdWUuc3ZnKV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9BcGFjaGUtMi4wKQoKIyBUaGUgT3hsaXAgQVBJIExhbmd1YWdlCk94bGlwIGlzIGEgaGlnaC1sZXZlbCBmdW5jdGlvbmFsIHByb2dyYW1taW5nIGxhbmd1YWdlIGZvciBkZXNpZ25pbmcgW09wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy93aGF0LWlzLW9wZW5hcGkpIGRlZmluaXRpb25zLgpBcyBhbiBbSW50ZXJmYWNlIERlc2NyaXB0aW9uIExhbmd1YWdlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlcmZhY2VfZGVzY3JpcHRpb25fbGFuZ3VhZ2UpLCBpdCBpcyBub3QgZ2VuZXJhbCBwdXJwb3NlLgpUaGUgbW90aXZhdGlvbiBpcyB0byBhbGxldmlhdGUgdGhlIHBhaW4gb2YgbWFuYWdpbmcgT3BlbkFQSSBpbiBKU09OIG9yIFlBTUwgYnkgaGFuZCBhbmQgYXQgc2NhbGUuCk94bGlwIGRlZmluZXMgYWxnZWJyYWljIGFic3RyYWN0aW9ucyBvdmVyIFtSRVNUXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZXByZXNlbnRhdGlvbmFsX3N0YXRlX3RyYW5zZmVyKSBjb25jZXB0cywgbm90IHRvbyBkaXNzaW1pbGFyIHRvIFtTYXNzL1NDU1Mgb3ZlciBDU1NdKGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS8pLgoKVGhlcmUgYXJlIHByb3MgYW5kIGNvbnMgdG8gYm90aCBfQVBJLWRlc2lnbi1maXJzdF8gYW5kIE9wZW5BUEkgZ2VuZXJhdGVkIGZyb20gaW1wbGVtZW50YXRpb24uCkFzIE9wZW5BUEkgaXMgYmV0dGVyIHByb2R1Y2VkIG9yIGNvbnN1bWVkIGJ5IG1hY2hpbmVzIHJhdGhlciB0aGFuIGh1bWFucywgT3hsaXAgdHJpZXMgdG8gaGVscCBfQVBJLWRlc2lnbi1maXJzdF8gdGVhbXMgd2l0aCBiZXR0ZXIgdG9vbGluZy4KCiMjIFtEb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5veGxpcC1sYW5nLm9yZy8pCgojIyBbUGxheWdyb3VuZF0oaHR0cHM6Ly9veGxpcC1sYW5nLmdpdGh1Yi5pby9veGxpcC1wbGF5Z3JvdW5kKQoKIyMgSW5zdGFsbGF0aW9uClRoaXMgc3RlcCByZXF1aXJlcyBhIFtsb2NhbCBSdXN0IGFuZCBDYXJnbyBpbnN0YWxsYXRpb25dKGh0dHBzOi8vZG9jLnJ1c3QtbGFuZy5vcmcvY2FyZ28vZ2V0dGluZy1zdGFydGVkL2luc3RhbGxhdGlvbi5odG1sKS4KCmBgYAptYWtlIGluc3RhbGwKYGBgCk9wdGlvbmFsOiBhIFtWU0NvZGUgbGFuZ3VhZ2UgZXh0ZW5zaW9uXShodHRwczovL2dpdGh1Yi5jb20vb3hsaXAtbGFuZy9vYWwtdnNjb2RlKSBpcyBhdmFpbGFibGUgZm9yIHN5bnRheCBoaWdobGlnaHRpbmcgYW5kIElERSBjYXBhYmlsaXRpZXMuCgojIyBVc2FnZQpgYGAKICAgIG9hbC1jbGkgW09QVElPTlNdCgpPUFRJT05TOgogICAgLWIsIC0tYmFzZSA8QkFTRT4gICAgICAgIFRoZSByZWxhdGl2ZSBVUkwgdG8gYSBiYXNlIE9wZW5BUEkgZGVzY3JpcHRpb24KICAgIC1jLCAtLWNvbmYgPENPTkZJRz4gICAgICBUaGUgcGF0aCB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlCiAgICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgUHJpbnQgaGVscCBpbmZvcm1hdGlvbgogICAgLW0sIC0tbWFpbiA8TUFJTj4gICAgICAgIFRoZSByZWxhdGl2ZSBVUkwgdG8gdGhlIG1haW4gcHJvZ3JhbQogICAgLXQsIC0tdGFyZ2V0IDxUQVJHRVQ+ICAgIFRoZSByZWxhdGl2ZSBVUkwgdG8gdGhlIHRhcmdldCBPcGVuQVBJIGRlc2NyaXB0aW9uCmBgYAoKIyMjIENvbXBpbGluZyB0aGUgZXhhbXBsZSBwcm9ncmFtCmBgYApvYWwtY2xpIC0tY29uZiBleGFtcGxlcy9vYWwudG9tbApgYGAKCiMjIEV4cGVyaW1lbnRhbDogV2ViQXNzZW1ibHkgc3VwcG9ydApSZWxlYXNlIHRvIFdlYkFzc2VtYmx5IHJlcXVpcmVzIHRoZSBpbnN0YWxsYXRpb24gb2YgW2B3YXNtLXBhY2tgXShodHRwczovL3J1c3R3YXNtLmdpdGh1Yi5pby93YXNtLXBhY2svaW5zdGFsbGVyLykuCgpgYGAKbWFrZSB3YXNtCmBgYA== readmeEtag: '"e4083bdd30e501dd47c14c5a41b6cc7bea2b8257"' readmeLastModified: Sun, 28 Jan 2024 10:24:11 GMT repositoryId: 425256008 description: A high-level language for OpenAPI created: '2021-11-06T13:50:41Z' updated: '2025-10-03T13:24:58Z' language: Rust archived: false stars: 37 watchers: 1 forks: 3 owner: oxlip-lang logo: https://avatars.githubusercontent.com/u/143259218?v=4 license: Apache-2.0 repoEtag: '"bf0822f680d2c83c3c5fc90f30d520ced7d892a44bd13ffa5248d2989fba0767"' repoLastModified: Fri, 03 Oct 2025 13:24:58 GMT category: - DSL - Parsers foundInMaster: true name: Oxlip API Language link: https://www.oxlip-lang.org/ language: OAL source_description: > Oxlip is a high-level functional programming language for designing OpenAPI definitions. It defines algebraic abstractions over REST concepts to alleviate the pain of managing OpenAPI in JSON or YAML by hand and at scale. v2: false v3_1: false - source: https://openapi.tools/ name: OpenAPI3 Fuzzer category: - Security - Parsers link: https://pypi.org/project/openapi3-fuzzer/ repository: https://github.com/vwt-digital/openapi3-fuzzer/tree/master language: Python source_description: >- Simple fuzzer for OpenAPI 3 specification based APIs. Verifies responses and sends various attack patterns. v3: true repositoryMetadata: base64Readme: >- IyBTaW1wbGUgZnV6emVyIGZvciBPcGVuQVBJIDMgc3BlY2lmaWNhdGlvbiBiYXNlZCBBUElzCgojIyBXaGF0IGRvZXMgdGhpcyBmdXp6ZXIgZG8/CgoxLiBTZW5kcyB2YXJpb3VzIGF0dGFjayBwYXR0ZXJucyB0byBhbGwgdGhlIHBhdGhzIGRlZmluZWQgaW4gYW4gT3BlbkFQSSAzIGRlZmluaXRpb24gZmlsZSwgdXNpbmcgdGhlIE9BUzMgZGVmaW5pdGlvbiB0byBjcmVhdGUgcG9wdWxhdGUgcmVxdWVzdHMuCjIuIFZlcmlmaWVzIGlmIHRoZSByZXNwb25zZXMgbWF0Y2hlcyB0aG9zZSBkZWZpbmVkIGluIHRoZSBPQVMzIGRlZmluaXRpb24gZmlsZSwgY29tcGxhaW5zIGFuZCBleGl0KDIpIGlmIGl0IGRvZXNuJ3QuCjMuIENvbXBsYWlucyBsb3VkbHkgYW5kIGV4aXQoMSkgaWYgYSBwYXRoIHJldHVybnMgYW4gaW50ZXJuYWwgc2VydmVyIGVycm9yIChzdGF0dXMgY29kZSA1MDAgYW5kIGhpZ2hlcikKCiMjIFdoeSBkb2VzIHRoaXMgT3BlbkFQSSBmdXp6ZXIgZXhpc3Q/CgpUbyBtYWtlIGl0IGVhc3kgdG8gaW50ZWdyYXRlIGFuIE9wZW5BUEkgMyBmdXp6ZXIgaW4gYW4gZXhpc3RpbmcgQVBJLgoKIyMgSG93IGRvIEkgdXNlIHRoaXM/CgoxLiBJbnN0YWxsIHRoZSBmdXp6ZXIgdXNpbmcgaXRzIFtwaXAgcGFja2FnZV0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L29wZW5hcGkzLWZ1enplci8pCjIuIEFkZCBhdCBsZWFzdCB0aGUgZm9sbG93aW5nIHBhY2thZ2VzIHRvIHJlcXVpcmVtZW50cy10ZXN0LnR4dDoKYGBgYHB5dGhvbgpjb3ZlcmFnZT09NS4wLjMKb3BlbmFwaTMtZnV6emVyCmFkYWw9PTEuMi4yCkZsYXNrLVRlc3Rpbmc9PTAuNy4xCmBgYGAKMy4gR2VuZXJhdGUgT3BlbkFQSSAoaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvcikKNC4gQ3JlYXRlIGEgdGVzdF9mdXp6aW5nIGZpbGUgaW4gdGhlIHRlc3QgbG9jYXRpb24gdXNpbmcgdGhlIHRlbXBsYXRlIGJlbG93OgpgYGBgcHl0aG9uCmltcG9ydCBhZGFsCgppbXBvcnQgY29uZmlnCmZyb20gb3BlbmFwaTNfZnV6emVyIGltcG9ydCBGdXp6SXQKZnJvbSBvcGVuYXBpX3NlcnZlci50ZXN0IGltcG9ydCBCYXNlVGVzdENhc2UKCgpkZWYgZ2V0X3Rva2VuKCk6CiAgICAiIiIKICAgIENyZWF0ZSBhIHRva2VuIGZvciB0ZXN0aW5nCiAgICA6cmV0dXJuOgogICAgIiIiCiAgICBvYXV0aF9leHBlY3RlZF9hdXRoZW50aWNhdG9yID0gYXV0aGVudGljYXRvcnVyaQogICAgY2xpZW50X2lkID0gYXBwaWQKICAgIGNsaWVudF9zZWNyZXQgPSBzZWNyZXQKICAgIHJlc291cmNlID0gcmVzb3VyY2UvYXVkaWVuY2UKCiAgICAjIGdldCBhbiBBenVyZSBhY2Nlc3MgdG9rZW4gdXNpbmcgdGhlIGFkYWwgbGlicmFyeQogICAgY29udGV4dCA9IGFkYWwuQXV0aGVudGljYXRpb25Db250ZXh0KG9hdXRoX2V4cGVjdGVkX2F1dGhlbnRpY2F0b3IpCiAgICB0b2tlbl9yZXNwb25zZSA9IGNvbnRleHQuYWNxdWlyZV90b2tlbl93aXRoX2NsaWVudF9jcmVkZW50aWFscygKICAgICAgICByZXNvdXJjZSwgY2xpZW50X2lkLCBjbGllbnRfc2VjcmV0KQoKICAgIGFjY2Vzc190b2tlbiA9IHRva2VuX3Jlc3BvbnNlLmdldCgnYWNjZXNzVG9rZW4nKQogICAgcmV0dXJuIGFjY2Vzc190b2tlbgoKCmNsYXNzIFRlc3R2QVBJKEJhc2VUZXN0Q2FzZSk6CgogICAgZGVmIHRlc3RfZnV6emluZyhzZWxmKToKICAgICAgICBGdXp6SXQoIm9wZW5hcGkueWFtbCIsIGdldF90b2tlbigpLCBzZWxmKQoKYGBgYAo1LiBSdW4gdXNpbmcgb3VyIFt1bml0dGVzdCBjb250YWluZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS92d3QtZGlnaXRhbC9jbG91ZGJ1aWxkZXItdW5pdHRlc3QpIG9yIHZpYSB0aGUgW1B5dGhvbiBVbml0dGVzdCBGcmFtZXdvcmtdKGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS91bml0dGVzdC5odG1sKQoKIyMgV2hhdCBPQVMzIGl0ZW1zIGFyZSBzdXBwb3J0ZWQ/CgpCYXNlZCBvbiBbT3BlbkFQSSBzcGVjaWZpY2F0aW9uIDMuMC4yXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMi5tZCk6CgpPcGVyYXRpb24gfCBTdXBwb3J0ZWQKLS0tLS0tLS0tLXwtLS0tLS0tLS0tCkdFVCAgICAgICB8IFllcwpQT1NUICAgICAgfCBZZXMKUFVUICAgICAgIHwgWWVzCkRFTEVURSAgICB8IFllcwpIRUFEICAgICAgfCBZZXMKT1BUSU9OUyAgIHwgbm8KUEFUQ0ggICAgIHwgbm8KVFJBQ0UgICAgIHwgbm8KClBhcmFtZXRlciBpbiB8IFN1cHBvcnRlZAotLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0KcGF0aCAgICAgICAgIHwgWWVzCnF1ZXJ5ICAgICAgICB8IG5vCmhlYWRlciAgICAgICB8IG5vCmNvb2tpZSAgICAgICB8IG5vCgpQcm9wZXJ0eSB0eXBlcyB8IFN1cHBvcnRlZAotLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLQpzdHJpbmcgICAgICAgICB8IFllcwppbnRlZ2VyICAgICAgICB8IFllcwpudW1iZXIgICAgICAgICB8IFllcwphcnJheSAgICAgICAgICB8IFllcwpub25lICAgICAgICAgICB8IFllcwpib29sZWFuICAgICAgICB8IG5vCgojIyBFeGFtcGxlIG91dHB1dAoKSW50ZXJuYWwgc2VydmVyIGVycm9yOgoKYGBgYApHRVQgZnV6emluZyAvbWFuYWdlcnMvZXhwZW5zZXMve2V4cGVuc2VzX2lkfS9hdHRhY2htZW50cwoKKiBJTlRFUk5BTCBTRVJWRVIgRVJST1IKICBFbmRwb2ludCByZXR1cm5lZCA1MDAgYnV0IGV4cGVjdGVkIG9uZSBvZiBbMjAwXQogIEdFVCBodHRwczovL2Rldi5teWFwaS5leGFtcGxlL21hbmFnZXJzL2V4cGVuc2VzLzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5L2F0dGFjaG1lbnRzCmBgYGAKClJlc3BvbnNlIGRvZXNuJ3QgY29uZm9ybSB0byB0aGUgT0FTMyBzcGVjOgoKYGBgYAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpHRVQgZnV6emluZyAvZW1wbG95ZWVzL2V4cGVuc2VzL3tleHBlbnNlc19pZH0KCi0gVW5leHBlY3RlZCBzdGF0dXMgY29kZQogIEVuZHBvaW50IHJldHVybmVkIDQwNCBidXQgZXhwZWN0ZWQgb25lIG9mIFsyMDAsICdkZWZhdWx0J10KICBHRVQgaHR0cHM6Ly9kZXYubXlhcGkuZXhhbXBsZS9lbXBsb3llZXMvZXhwZW5zZXMvKSQjKioqXgpgYGBgCgpgYGBgClBPU1QgZnV6emluZyAvZW1wbG95ZWVzL2V4cGVuc2VzL3tleHBlbnNlc19pZH0KCi0gVW5leHBlY3RlZCBzdGF0dXMgY29kZQogIEVuZHBvaW50IHJldHVybmVkIDQwMCBidXQgZXhwZWN0ZWQgb25lIG9mIFsyMDEsICdkZWZhdWx0J10KICBQT1NUIGh0dHBzOi8vZGV2Lm15YXBpLmV4YW1wbGUvZW1wbG95ZWVzL2V4cGVuc2VzCnsKICAgICJhbW91bnQiOiAiMTIzIiwKICAgICJjb3N0X3R5cGUiOiAiMTIzIiwKICAgICJub3RlIjogIjtzbGVlcCAxMCIsCiAgICAidHJhbnNhY3Rpb25fZGF0ZSI6ICIxMjMiCn0KYGBgYAojIyBDb250cmlidXRvcnMKQSBzcGVjaWFsIHRoYW5rcyB0byB0aGUgY29udHJpYnV0b3JzIG91dHNpZGUgb2YgVldUIERpZ2l0YWwuCnxOYW1lfENvbnRyaWJ1dGlvbnwKfC0tLXwtLS18CnxbSm9ycml0IEZvbG1lcl0oaHR0cHM6Ly9naXRodWIuY29tL2pvcnJpdGZvbG1lcil8U3RhcnRlZCB0aGUgcHJvamVjdCBhbmQgY3JlYXRlZCBhIGJhc2UgZm9yIHRoZSBmdXp6ZXIufAojIyBMSUNFTlNFCgpHUEwzCg== readmeEtag: '"ab9290c2f3d5444830a630b4149fbd23f70a443e"' readmeLastModified: Thu, 22 Jul 2021 15:59:51 GMT repositoryId: 244578763 description: Simple fuzzer for OpenAPI 3 specification based APIs created: '2020-03-03T08:15:47Z' updated: '2025-07-25T20:48:07Z' language: Python archived: false stars: 22 watchers: 3 forks: 4 owner: vwt-digital logo: https://avatars.githubusercontent.com/u/51355845?v=4 license: GPL-3.0 repoEtag: '"4eb527c13d22c90e1472028fa8cd3147d28555965fd52be63884e6fd7cce3474"' repoLastModified: Fri, 25 Jul 2025 20:48:07 GMT foundInMaster: true id: f357b9cac35c5789bafaa767f4fc3b50 - source: https://openapi.tools/ name: vREST NG category: Testing language: JavaScript link: https://ng.vrest.io repository: null source_description: >- vREST NG is a simple and powerful application for API Automation. It Allows to use OpenAPI specification into vREST NG to drive your API testing that validates the API responses against JSON Schema and also provides powerful response validation capabilities. v2: true v3: true foundInMaster: true id: ea2266de94cddafe3121aac607d00ec7 - source: https://openapi.tools/ name: openapi-validator-bundle category: - Data Validators - Parsers repository: https://github.com/cydrickn/openapi-validator-bundle language: PHP source_description: Validates Request and Response using Symfony Framework v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQXBpIFZhbGlkYXRvciBCdW5kbGUKClN5bWZvbnkgQnVuZGxlIGZvciB2YWxpZGF0aW5nIFJlcXVlc3QgYW5kIFJlc3BvbnNlIGJhc2VkIG9uIFtvcGVuIGFwaSBzcGVjaWZpY2F0aW9uXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIDMuCgojIyMgUmVxdWlyZW1lbnRzCgotIFN5bWZvbnkgPj0gNQotIFBIUCA+PSA3LjQKLSBQSFAgRXh0ZW5zaW9uIEpTT04KCiMjIyMgT3B0aW9uYWwKCi0gbmVsbWlvL2FwaS1kb2MtYnVuZGxlID49IDQuMCAoQ3VycmVudGx5IGluIEJldGEpCiAgICAtIFdoeSA0LjAsIHZlcnNpb24gMyBhbmQgYmVsb3cgb25seSBzdXBwb3J0cyB2ZXJzaW9uIDIgb2YgT3BlbkFQSSBTcGVjaWZpY2F0aW9uLgoKCiMjIyBJbnN0YWxsYXRpb24KCmBgYGJhc2gKY29tcG9zZXIgcmVxdWlyZSBjeWRyaWNrbi9vcGVuYXBpLXZhbGlkYXRvci1idW5kbGUKYGBgCgojIyMjIFNldHRpbmcgVXAKCkFkZCB0aGUgYnVuZGxlIGluIHlvdXIgYGNvbmZpZy9idW5kbGVzLnBocGAKCmBgYHBocAo8P3BocAoKcmV0dXJuIFsKICAgIC8vIC4uLgogICAgQ3lkcmlja25cT3BlbkFwaVZhbGlkYXRvckJ1bmRsZVxDeWRyaWNrbk9wZW5BcGlWYWxpZGF0b3JCdW5kbGU6OmNsYXNzID0+IFsnYWxsJyA9PiB0cnVlXSwKXTsKYGBgCgpBZGQgY29uZmlndXJhdGlvbiBgY29uZmlnL3BhY2thZ2VzL2N5ZHJpY2tuX29wZW5hcGlfdmFsaWRhdG9yLnltbGAKYGBgeWFtbApjeWRyaWNrbl9vcGVuX2FwaV92YWxpZGF0b3I6CiAgICB2YWxpZGF0ZV9yZXF1ZXN0OiB0cnVlCiAgICB2YWxpZGF0ZV9yZXNwb25zZTogdHJ1ZQogICAgc2NoZW1hOgogICAgICBmYWN0b3J5OiB5YW1sLWZpbGUKICAgICAgZmlsZTogJWtlcm5lbC5wcm9qZWN0X2RpciUvY29uZmlnL29wZW5hcGkvc3BlYy55YW1sCmBgYAoKIyMjIyBDb25maWd1cmF0aW9ucwoKfENvbmZpZyAgICAgICAgICAgfFR5cGUgICB8UmVxdWlyZWR8QWNjZXB0ZWQgVmFsdWUgICAgICAgICAgICAgICAgfERlZmF1bHQgIHxEZXNjcmlwdGlvbnwKfC0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLXwKfHZhbGlkYXRlX3JlcXVlc3QgfEJvb2xlYW58WWVzICAgICB8dHJ1ZSBvciBmYWxzZSAgICAgICAgICAgICAgICAgfHRydWUgICAgIHxFbmFibGUgdmFsaWRhdGluZyBvZiByZXF1ZXN0fAp8dmFsaWRhdGVfcmVzcG9uc2V8Qm9vbGVhbnxZZXMgICAgIHx0cnVlIG9yIGZhbHNlICAgICAgICAgICAgICAgICB8dHJ1ZSAgICAgfEVuYWJsZSB2YWxpZGF0aW5nIG9mIHJlc3BvbnNlfAp8c2NoZW1hLmZhY3RvcnkgICB8U3RyaW5nIHxZZXMgICAgIHx5YW1sLWZpbGUsIGpzb24tZmlsZSBvciBuZWxtaW98eWFtbC1maWxlfEZhY3RvcnkgdG8gdXNlIHRvIGdlbmVyYXRlIHRoZSBzY2hlbWEgZm9yIHZhbGlkYXRpb258CnxzY2hlbWEuZmlsZSAgICAgIHxTdHJpbmcgfFJlcXVpcmVkIG9ubHkgZm9yIHlhbWwtZmlsZSBhbmQganNvbi1maWxlfHx8RmlsZSBwYXRoIG9mIHRoZSBzcGVjaWZpY2F0aW9ufAoKIyMjIFRPRE8KCi0gW3hdIEFkZCBOZWxtaW8gQXBpIFNjaGVtYSBGYWN0b3J5Ci0gW3hdIEFkZCBEeW5hbWljIENvbmZpZ3VyYXRpb24KLSBbeF0gQWRkIGRvY3VtZW50Ci0gWyBdIEFkZCBSb3V0ZSBTY2hlbWEgRmFjdG9yeQotIFsgXSBBZGQgUEhQIGZpbGUgU2NoZW1hIEZhY3RvcnkKLSBbIF0gQ29kZSBjb3ZlcmFnZSBvZiAxMDAlCi0gWyBdIEFkZCBDSQotIFsgXSBTdXBwb3J0IExvd2VyIFBIUCBWZXJzaW9uID49IDcuMQotIFsgXSBTdXBwb3J0IExvd2VyIFN5bWZvbnkgVmVyc2lvbiA+PSAzCg== readmeEtag: '"e050dcb00429047d02dfb59bab01327330eccf73"' readmeLastModified: Thu, 20 Jan 2022 14:37:40 GMT repositoryId: 284669411 description: >- Symfony Bundle for validating Request and Response base on open api specification. created: '2020-08-03T10:21:26Z' updated: '2026-01-16T08:23:57Z' language: PHP archived: false stars: 12 watchers: 1 forks: 6 owner: cydrickn logo: https://avatars.githubusercontent.com/u/6417652?v=4 repoEtag: '"225c696d7c75d0dee742b8b16509bd69cd84be9a67dca6394d924e91d2dbb126"' repoLastModified: Fri, 16 Jan 2026 08:23:57 GMT foundInMaster: true id: 70d091df07cce505a35dbd6fa1789796 - source: https://openapi.tools/ name: Goa category: DSL language: Go source_description: >- Goa provides a holistic approach for developing remote APIs and microservices in Go. implementers don't have to worry about the documentation getting out of sync as Goa takes care of generating OpenAPI specifications for HTTP based services and gRPC protocol buffer files for gRPC based services link: https://goa.design v2: true v3: true foundInMaster: true id: bda876c6645d589b7595411a464db1c3 - source: - https://openapi.tools/ - openapi3 tags name: OpenAPI HttpFoundation Testing category: Data Validators language: PHP source_description: >- Validate your HttpFoundation requests and responses (Symfony, Laravel, Drupal...) against OpenAPI definitions repository: https://github.com/osteel/openapi-httpfoundation-testing v2: false v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIEh0dHBGb3VuZGF0aW9uIFRlc3RpbmcKClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL29zdGVlbC9vcGVuYXBpLWh0dHBmb3VuZGF0aW9uLXRlc3Rpbmcvd29ya2Zsb3dzL0NJL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9vc3RlZWwvb3BlbmFwaS1odHRwZm91bmRhdGlvbi10ZXN0aW5nL2FjdGlvbnMpClshW0xhdGVzdCBTdGFibGUgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9wYWNrYWdpc3Qvdi9vc3RlZWwvb3BlbmFwaS1odHRwZm91bmRhdGlvbi10ZXN0aW5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL29zdGVlbC9vcGVuYXBpLWh0dHBmb3VuZGF0aW9uLXRlc3RpbmcpClshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L2wvb3N0ZWVsL29wZW5hcGktaHR0cGZvdW5kYXRpb24tdGVzdGluZyldKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9vc3RlZWwvb3BlbmFwaS1odHRwZm91bmRhdGlvbi10ZXN0aW5nKQpbIVtEb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L2R0L29zdGVlbC9vcGVuYXBpLWh0dHBmb3VuZGF0aW9uLXRlc3RpbmcpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvb3N0ZWVsL29wZW5hcGktaHR0cGZvdW5kYXRpb24tdGVzdGluZykKCgpWYWxpZGF0ZSBIdHRwRm91bmRhdGlvbiByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzIGFnYWluc3QgT3BlbkFQSSAoMyspIGRlZmluaXRpb25zLgoKU2VlIFt0aGlzIHBvc3RdKGh0dHBzOi8vdGVjaC5vc3RlZWwubWUvcG9zdHMvb3BlbmFwaS1iYWNrZWQtYXBpLXRlc3RpbmctaW4tcGhwLXByb2plY3RzLWEtbGFyYXZlbC1leGFtcGxlICJPcGVuQVBJLWJhY2tlZCBBUEkgdGVzdGluZyBpbiBQSFAgcHJvamVjdHMg4oCTIGEgTGFyYXZlbCBleGFtcGxlIikgZm9yIG1vcmUgZGV0YWlscyBhbmQgW3RoaXMgcmVwb3NpdG9yeV0oaHR0cHM6Ly9naXRodWIuY29tL29zdGVlbC9vcGVuYXBpLWh0dHBmb3VuZGF0aW9uLXRlc3RpbmctbGFyYXZlbC1leGFtcGxlKSBmb3IgYW4gZXhhbXBsZSB1c2UgaW4gYSBMYXJhdmVsIHByb2plY3QuCgo+IFshSU1QT1JUQU5UXQo+IFdoaWxlIHlvdSBjYW4gc2FmZWx5IHVzZSB0aGlzIHBhY2thZ2UgZm9yIHlvdXIgcHJvamVjdHMsIGFzIGxvbmcgYXMgdmVyc2lvbiBgMS4wYCBoYXMgbm90IGJlZW4gcmVsZWFzZWQgIm1pbm9yIiB2ZXJzaW9uIHBhdGNoZXMgY2FuIGNvbnRhaW4gYnJlYWtpbmcgY2hhbmdlcy4gTWFrZSBzdXJlIHRvIGNoZWNrIHRoZSBbcmVsZWFzZSBzZWN0aW9uXSguLi8uLi9yZWxlYXNlcykgYmVmb3JlIHlvdSB1cGdyYWRlLgoKIyMgV2h5PwoKW09wZW5BUEldKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykgaXMgYSBzcGVjaWZpY2F0aW9uIGludGVuZGVkIHRvIGRlc2NyaWJlIFJFU1RmdWwgQVBJcyBpbiBhIHdheSB0aGF0IGNhbiBiZSB1bmRlcnN0b29kIGJ5IGJvdGggaHVtYW5zIGFuZCBtYWNoaW5lcy4KCkJ5IHZhbGlkYXRpbmcgYW4gQVBJJ3MgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBhZ2FpbnN0IHRoZSBPcGVuQVBJIGRlZmluaXRpb24gdGhhdCBkZXNjcmliZXMgaXQsIHdlIGd1YXJhbnRlZSB0aGF0IHRoZSBBUEkgaXMgdXNlZCBjb3JyZWN0bHkgYW5kIGJlaGF2ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBkb2N1bWVudGF0aW9uIHdlIHByb3ZpZGUsIHRodXMgbWFraW5nIHRoZSBPcGVuQVBJIGRlZmluaXRpb24gdGhlIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGguCgpUaGUgW0h0dHBGb3VuZGF0aW9uIGNvbXBvbmVudF0oaHR0cHM6Ly9zeW1mb255LmNvbS9kb2MvY3VycmVudC9jb21wb25lbnRzL2h0dHBfZm91bmRhdGlvbi5odG1sKSBpcyBkZXZlbG9wZWQgYW5kIG1haW50YWluZWQgYXMgcGFydCBvZiB0aGUgW1N5bWZvbnkgZnJhbWV3b3JrXShodHRwczovL3N5bWZvbnkuY29tLykuIEl0IGlzIHVzZWQgdG8gaGFuZGxlIEhUVFAgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBpbiBwcm9qZWN0cyBzdWNoIGFzIFN5bWZvbnksIExhcmF2ZWwsIERydXBhbCwgYW5kIFttYW55IG90aGVyc10oaHR0cHM6Ly9zeW1mb255LmNvbS9jb21wb25lbnRzL0h0dHBGb3VuZGF0aW9uKS4KCiMjIEhvdyBkb2VzIGl0IHdvcms/CgpUaGlzIHBhY2thZ2UgaXMgYnVpbHQgb24gdG9wIG9mIFtPcGVuQVBJIFBTUi03IE1lc3NhZ2UgVmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vdGhlcGhwbGVhZ3VlL29wZW5hcGktcHNyNy12YWxpZGF0b3IpLCB3aGljaCB2YWxpZGF0ZXMgW1BTUi03IG1lc3NhZ2VzXShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTcvKSBhZ2FpbnN0IE9wZW5BUEkgZGVmaW5pdGlvbnMuCgpJdCBjb252ZXJ0cyBIdHRwRm91bmRhdGlvbiByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzIHRvIFBTUi03IG1lc3NhZ2VzIHVzaW5nIFN5bWZvbnkncyBbUFNSLTcgQnJpZGdlXShodHRwczovL3N5bWZvbnkuY29tL2RvYy9jdXJyZW50L2NvbXBvbmVudHMvcHNyNy5odG1sKSBhbmQgW1RvYmlhcyBOeWhvbG1dKGh0dHBzOi8vZ2l0aHViLmNvbS9OeWhvbG0pJ3MgW1BTUi03IGltcGxlbWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vTnlob2xtL3BzcjcpLCBiZWZvcmUgcGFzc2luZyB0aGVtIG9uIHRvIE9wZW5BUEkgUFNSLTcgTWVzc2FnZSBWYWxpZGF0b3IuCgojIyBJbnN0YWxsYXRpb24KCj4gWyFOT1RFXQo+IFRoaXMgcGFja2FnZSBzdXBwb3J0cyBQSFAgOC4wIGFuZCBhYm92ZS4KClZpYSBDb21wb3NlcjoKCmBgYGJhc2gKY29tcG9zZXIgcmVxdWlyZSAtLWRldiBvc3RlZWwvb3BlbmFwaS1odHRwZm91bmRhdGlvbi10ZXN0aW5nCmBgYAoKIyMgVXNhZ2UKCj4gWyFOT1RFXQo+IFRoaXMgcGFja2FnZSBpcyBtb3N0bHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBwYXJ0IG9mIGFuIEFQSSB0ZXN0IHN1aXRlLgoKSW1wb3J0IHRoZSBidWlsZGVyIGNsYXNzOgoKYGBgcGhwCnVzZSBPc3RlZWxcT3BlbkFwaVxUZXN0aW5nXFZhbGlkYXRvckJ1aWxkZXI7CmBgYAoKVXNlIHRoZSBidWlsZGVyIHRvIGNyZWF0ZSBhIFtgXE9zdGVlbFxPcGVuQXBpXFRlc3RpbmdcVmFsaWRhdG9yYF0oL3NyYy9WYWxpZGF0b3IucGhwKSBvYmplY3QsIHVzaW5nIG9uZSBvZiB0aGUgYXZhaWxhYmxlIGZhY3RvcnkgbWV0aG9kcyBmb3IgWUFNTCBvciBKU09OOgoKYGBgcGhwCi8vIEZyb20gYSBsb2NhbCBmaWxlOgoKJHZhbGlkYXRvciA9IFZhbGlkYXRvckJ1aWxkZXI6OmZyb21ZYW1sRmlsZSgkeWFtbEZpbGUpLT5nZXRWYWxpZGF0b3IoKTsKJHZhbGlkYXRvciA9IFZhbGlkYXRvckJ1aWxkZXI6OmZyb21Kc29uRmlsZSgkanNvbkZpbGUpLT5nZXRWYWxpZGF0b3IoKTsKCi8vIEZyb20gYSBzdHJpbmc6CgokdmFsaWRhdG9yID0gVmFsaWRhdG9yQnVpbGRlcjo6ZnJvbVlhbWxTdHJpbmcoJHlhbWxTdHJpbmcpLT5nZXRWYWxpZGF0b3IoKTsKJHZhbGlkYXRvciA9IFZhbGlkYXRvckJ1aWxkZXI6OmZyb21Kc29uU3RyaW5nKCRqc29uU3RyaW5nKS0+Z2V0VmFsaWRhdG9yKCk7CgovLyBGcm9tIGEgVVJMOgoKJHZhbGlkYXRvciA9IFZhbGlkYXRvckJ1aWxkZXI6OmZyb21ZYW1sVXJsKCR5YW1sVXJsKS0+Z2V0VmFsaWRhdG9yKCk7CiR2YWxpZGF0b3IgPSBWYWxpZGF0b3JCdWlsZGVyOjpmcm9tSnNvblVybCgkanNvblVybCktPmdldFZhbGlkYXRvcigpOwoKLy8gQXV0b21hdGljIGRldGVjdGlvbiAoc2xvd2VyKToKCiR2YWxpZGF0b3IgPSBWYWxpZGF0b3JCdWlsZGVyOjpmcm9tWWFtbCgkeWFtbEZpbGVPclN0cmluZ09yVXJsKS0+Z2V0VmFsaWRhdG9yKCk7CiR2YWxpZGF0b3IgPSBWYWxpZGF0b3JCdWlsZGVyOjpmcm9tSnNvbigkanNvbkZpbGVPclN0cmluZ09yVXJsKS0+Z2V0VmFsaWRhdG9yKCk7CmBgYAoKPiBbIVRJUF0KPiBZb3UgY2FuIGFsc28gdXNlIGEgZGVwZW5kZW5jeSBpbmplY3Rpb24gY29udGFpbmVyIHRvIGJpbmQgdGhlIGBWYWxpZGF0b3JCdWlsZGVyYCBjbGFzcyB0byB0aGUgW2BWYWxpZGF0b3JCdWlsZGVySW50ZXJmYWNlYF0oL3NyYy9WYWxpZGF0b3JCdWlsZGVySW50ZXJmYWNlLnBocCkgaW50ZXJmYWNlIGl0IGltcGxlbWVudHMgYW5kIGluamVjdCB0aGUgaW50ZXJmYWNlIGluc3RlYWQsIHdoaWNoIHdvdWxkIGFsc28gYmUgdXNlZnVsIGZvciB0ZXN0aW5nIGFuZCBtb2NraW5nLgoKWW91IGNhbiBub3cgdmFsaWRhdGUgYFxTeW1mb255XENvbXBvbmVudFxIdHRwRm91bmRhdGlvblxSZXF1ZXN0YCBhbmQgYFxTeW1mb255XENvbXBvbmVudFxIdHRwRm91bmRhdGlvblxSZXNwb25zZWAgb2JqZWN0cyBmb3IgYSBnaXZlbiBbcGF0aF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI3BhdGhzLW9iamVjdCkgYW5kIG1ldGhvZDoKCmBgYHBocAokdmFsaWRhdG9yLT52YWxpZGF0ZSgkcmVzcG9uc2UsICcvdXNlcnMnLCAncG9zdCcpOwpgYGAKCj4gWyFUSVBdCj4gRm9yIGNvbnZlbmllbmNlLCBvYmplY3RzIGltcGxlbWVudGluZyBgXFBzclxIdHRwXE1lc3NhZ2VcU2VydmVyUmVxdWVzdEludGVyZmFjZWAgb3IgYFxQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlYCBhcmUgYWxzbyBhY2NlcHRlZC4KCkluIHRoZSBleGFtcGxlIGFib3ZlLCB3ZSBjaGVjayB0aGF0IHRoZSByZXNwb25zZSBtYXRjaGVzIHRoZSBPcGVuQVBJIGRlZmluaXRpb24gZm9yIGEgYFBPU1RgIHJlcXVlc3Qgb24gdGhlIGAvdXNlcnNgIHBhdGguCgpFYWNoIG9mIE9wZW5BUEkncyBbc3VwcG9ydGVkIEhUVFAgbWV0aG9kc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9wYXRocy1hbmQtb3BlcmF0aW9ucy8gIlBhdGhzIGFuZCBPcGVyYXRpb25zIikgKGBERUxFVEVgLCBgR0VUYCwgYEhFQURgLCBgT1BUSU9OU2AsIGBQQVRDSGAsIGBQT1NUYCwgYFBVVGAgYW5kIGBUUkFDRWApIGFsc28gaGFzIGEgc2hvcnRjdXQgbWV0aG9kIHRoYXQgY2FsbHMgYHZhbGlkYXRlYCB1bmRlciB0aGUgaG9vZCwgbWVhbmluZyB0aGUgbGluZSBhYm92ZSBjb3VsZCBhbHNvIGJlIHdyaXR0ZW4gdGhpcyB3YXk6CgpgYGBwaHAKJHZhbGlkYXRvci0+cG9zdCgkcmVzcG9uc2UsICcvdXNlcnMnKTsKYGBgCgpWYWxpZGF0aW5nIGEgcmVxdWVzdCBvYmplY3Qgd29ya3MgZXhhY3RseSB0aGUgc2FtZSB3YXk6CgpgYGBwaHAKJHZhbGlkYXRvci0+cG9zdCgkcmVxdWVzdCwgJy91c2VycycpOwpgYGAKCkluIHRoZSBleGFtcGxlIGFib3ZlLCB3ZSBjaGVjayB0aGF0IHRoZSByZXF1ZXN0IG1hdGNoZXMgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbiBmb3IgYSBgUE9TVGAgcmVxdWVzdCBvbiB0aGUgYC91c2Vyc2AgcGF0aC4KClRoZSBgdmFsaWRhdGVgIG1ldGhvZCByZXR1cm5zIGB0cnVlYCBpbiBjYXNlIG9mIHN1Y2Nlc3MsIGFuZCB0aHJvdyBhIFtgXE9zdGVlbFxPcGVuQXBpXFRlc3RpbmdcRXhjZXB0aW9uc1xWYWxpZGF0aW9uRXhjZXB0aW9uYF0oL3NyYy9FeGNlcHRpb25zL1ZhbGlkYXRpb25FeGNlcHRpb24ucGhwKSBleGNlcHRpb24gaW4gY2FzZSBvZiBlcnJvci4KCiMjIENhY2hpbmcKClRoaXMgcGFja2FnZSBzdXBwb3J0cyBjYWNoaW5nIHRvIHNwZWVkIHVwIHRoZSBwYXJzaW5nIG9mIE9wZW5BUEkgZGVmaW5pdGlvbnMuIFNpbXBseSBwYXNzIHlvdXIgW1BTUi02XShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTYvKSBvciBbUFNSLTE2XShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTE2LykgY2FjaGUgb2JqZWN0IHRvIHRoZSBgc2V0Q2FjaGVgIG1ldGhvZCBvZiB0aGUgW2BWYWxpZGF0b3JCdWlsZGVyYF0oL3NyYy9WYWxpZGF0b3JCdWlsZGVyLnBocCkgY2xhc3MuCgpIZXJlIGlzIGFuIGV4YW1wbGUgdXNpbmcgU3ltZm9ueSdzIFtBcnJheSBDYWNoZSBBZGFwdGVyXShodHRwczovL3N5bWZvbnkuY29tL2RvYy9jdXJyZW50L2NvbXBvbmVudHMvY2FjaGUvYWRhcHRlcnMvYXJyYXlfY2FjaGVfYWRhcHRlci5odG1sICJBcnJheSBDYWNoZSBBZGFwdGVyIik6CgpgYGBwaHAKdXNlIE9zdGVlbFxPcGVuQXBpXFRlc3RpbmdcVmFsaWRhdG9yQnVpbGRlcjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XENhY2hlXEFkYXB0ZXJcQXJyYXlBZGFwdGVyOwoKJGNhY2hlID0gbmV3IEFycmF5QWRhcHRlcigpOwokdmFsaWRhdG9yID0gVmFsaWRhdG9yQnVpbGRlcjo6ZnJvbVlhbWxGaWxlKCR5YW1sRmlsZSktPnNldENhY2hlKCRjYWNoZSktPmdldFZhbGlkYXRvcigpOwpgYGAKCiMjIEV4dGVuZGluZyB0aGUgcGFja2FnZQoKVGhlcmUgYXJlIHR3byBtYWluIGV4dGVuc2lvbiBwb2ludHMg4oCTIG1lc3NhZ2UgYWRhcHRlcnMgYW5kIGNhY2hlIGFkYXB0ZXJzLgoKIyMjIE1lc3NhZ2UgYWRhcHRlcnMKClRoZSBbYFZhbGlkYXRvckJ1aWxkZXJgXSgvc3JjL1ZhbGlkYXRvckJ1aWxkZXIucGhwKSBjbGFzcyB1c2VzIHRoZSBbYEh0dHBGb3VuZGF0aW9uQWRhcHRlcmBdKC9zcmMvQWRhcHRlcnMvSHR0cEZvdW5kYXRpb25BZGFwdGVyLnBocCkgY2xhc3MgYXMgaXRzIGRlZmF1bHQgSFRUUCBtZXNzYWdlIGFkYXB0ZXIuIFRoaXMgY2xhc3MgY29udmVydHMgSHR0cEZvdW5kYXRpb24gcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0cyB0byB0aGVpciBQU1ItNyBjb3VudGVycGFydHMuCgpJZiB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIGFkYXB0ZXIncyBsb2dpYywgb3IgaWYgeW91IG5lZWQgYSBuZXcgYWRhcHRlciBhbHRvZ2V0aGVyLCBjcmVhdGUgYSBjbGFzcyBpbXBsZW1lbnRpbmcgdGhlIFtgTWVzc2FnZUFkYXB0ZXJJbnRlcmZhY2VgXSgvc3JjL0FkYXB0ZXJzL01lc3NhZ2VBZGFwdGVySW50ZXJmYWNlLnBocCkgaW50ZXJmYWNlIGFuZCBwYXNzIGl0IHRvIHRoZSBgc2V0TWVzc2FnZUFkYXB0ZXJgIG1ldGhvZCBvZiB0aGUgW2BWYWxpZGF0b3JCdWlsZGVyYF0oL3NyYy9WYWxpZGF0b3JCdWlsZGVyLnBocCkgY2xhc3M6CgpgYGBwaHAKJHZhbGlkYXRvciA9IFZhbGlkYXRvckJ1aWxkZXI6OmZyb21ZYW1sRmlsZSgkeWFtbEZpbGUpCiAgICAtPnNldE1lc3NhZ2VBZGFwdGVyKCR5b3VyQWRhcHRlcikKICAgIC0+Z2V0VmFsaWRhdG9yKCk7CmBgYAoKIyMjIENhY2hlIGFkYXB0ZXJzCgpUaGUgW2BWYWxpZGF0b3JCdWlsZGVyYF0oL3NyYy9WYWxpZGF0b3JCdWlsZGVyLnBocCkgY2xhc3MgdXNlcyB0aGUgW2BQc3IxNkFkYXB0ZXJgXSgvc3JjL0NhY2hlL1BzcjE2QWRhcHRlci5waHApIGNsYXNzIGFzIGl0cyBkZWZhdWx0IGNhY2hlIGFkYXB0ZXIuIFRoaXMgY2xhc3MgY29udmVydHMgUFNSLTE2IGNhY2hlIG9iamVjdHMgdG8gdGhlaXIgUFNSLTYgY291bnRlcnBhcnRzLgoKSWYgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBhZGFwdGVyJ3MgbG9naWMsIG9yIGlmIHlvdSBuZWVkIGEgbmV3IGFkYXB0ZXIgYWx0b2dldGhlciwgY3JlYXRlIGEgY2xhc3MgaW1wbGVtZW50aW5nIHRoZSBbYENhY2hlQWRhcHRlckludGVyZmFjZWBdKC9zcmMvQ2FjaGUvQ2FjaGVBZGFwdGVySW50ZXJmYWNlLnBocCkgaW50ZXJmYWNlIGFuZCBwYXNzIGl0IHRvIHRoZSBgc2V0Q2FjaGVBZGFwdGVyYCBtZXRob2Qgb2YgdGhlIFtgVmFsaWRhdG9yQnVpbGRlcmBdKC9zcmMvVmFsaWRhdG9yQnVpbGRlci5waHApIGNsYXNzOgoKYGBgcGhwCiR2YWxpZGF0b3IgPSBWYWxpZGF0b3JCdWlsZGVyOjpmcm9tWWFtbEZpbGUoJHlhbWxGaWxlKQogICAgLT5zZXRDYWNoZUFkYXB0ZXIoJHlvdXJBZGFwdGVyKQogICAgLT5nZXRWYWxpZGF0b3IoKTsKYGBgCgojIyMgT3RoZXIgaW50ZXJmYWNlcwoKVGhlIFtgVmFsaWRhdG9yQnVpbGRlcmBdKC9zcmMvVmFsaWRhdG9yQnVpbGRlci5waHApIGFuZCBbYFZhbGlkYXRvcmBdKC9zcmMvVmFsaWRhdG9yLnBocCkgY2xhc3NlcyBhcmUgYGZpbmFsYCBidXQgdGhleSBpbXBsZW1lbnQgdGhlIFtgVmFsaWRhdG9yQnVpbGRlckludGVyZmFjZWBdKC9zcmMvVmFsaWRhdG9yQnVpbGRlckludGVyZmFjZS5waHApIGFuZCBbYFZhbGlkYXRvckludGVyZmFjZWBdKC9zcmMvVmFsaWRhdG9ySW50ZXJmYWNlLnBocCkgaW50ZXJmYWNlcyByZXNwZWN0aXZlbHkgZm9yIHdoaWNoIHlvdSBjYW4gcHJvdmlkZSB5b3VyIG93biBpbXBsZW1lbnRhdGlvbnMgaWYgeW91IG5lZWQgdG8uCgojIyBDaGFuZ2UgbG9nCgpQbGVhc2Ugc2VlIHRoZSBbUmVsZWFzZXMgc2VjdGlvbl0oLi4vLi4vcmVsZWFzZXMpIGZvciBkZXRhaWxzLgoKIyMgQ29udHJpYnV0aW5nCgpQbGVhc2Ugc2VlIFtDT05UUklCVVRJTkddKC8uZ2l0aHViL0NPTlRSSUJVVElORy5tZCkgZm9yIGRldGFpbHMuCgojIyBDcmVkaXRzCgoqKlBlb3BsZSoqCgotIFtZYW5uaWNrIENoZW5vdF0oaHR0cHM6Ly9naXRodWIuY29tL29zdGVlbCkKLSBbUGF0cmljayBSb2RhY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL2xvcmRyaG9kb3MpCi0gW0pvaG5hdGhhbiBNaWNoYWVsIERlbGxdKGh0dHBzOi8vZ2l0aHViLmNvbS9qb2huYXRoYW5tZGVsbCkKLSBbUGF1bCBNaXRjaHVtXShodHRwczovL2dpdGh1Yi5jb20vcGF1bC1tKQotIFtBbGwgQ29udHJpYnV0b3JzXSguLi8uLi9jb250cmlidXRvcnMpCgpTcGVjaWFsIHRoYW5rcyB0byBbUGF2ZWwgQmF0YW5vdl0oaHR0cHM6Ly9naXRodWIuY29tL3NjYXl0cmFzZSkgZm9yIGhpcyBhZHZpY2Ugb24gc3RydWN0dXJpbmcgdGhlIHBhY2thZ2UuCgoqKlBhY2thZ2VzKioKCi0gW09wZW5BUEkgUFNSLTcgTWVzc2FnZSBWYWxpZGF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGVwaHBsZWFndWUvb3BlbmFwaS1wc3I3LXZhbGlkYXRvcikKLSBbVGhlIFBTUi03IEJyaWRnZV0oaHR0cHM6Ly9zeW1mb255LmNvbS9kb2MvY3VycmVudC9jb21wb25lbnRzL3BzcjcuaHRtbCkKLSBbUFNSLTcgaW1wbGVtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9OeWhvbG0vcHNyNykKCiMjIExpY2Vuc2UKClRoZSBNSVQgTGljZW5zZSAoTUlUKS4gUGxlYXNlIHNlZSBbTGljZW5zZSBGaWxlXShMSUNFTlNFLm1kKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4K readmeEtag: '"af0be1a339c00740e84aeec6d6eb2579bf7c638f"' readmeLastModified: Thu, 04 Dec 2025 11:14:59 GMT repositoryId: 306618893 description: >- Validate your HttpFoundation requests and responses against OpenAPI (3+) definitions created: '2020-10-23T11:42:16Z' updated: '2026-01-26T08:55:27Z' language: PHP archived: false stars: 119 watchers: 4 forks: 15 owner: osteel logo: https://avatars.githubusercontent.com/u/436467?v=4 license: MIT repoEtag: '"6039ad8c2d60c64ab412a26e786986ab961cda6d0c474c8b19d470df9ffdb2ce"' repoLastModified: Mon, 26 Jan 2026 08:55:27 GMT foundInMaster: true id: 940ce85dbc99fab7a0ea193ac4ade24c v3_1: true - source: - https://openapi.tools/ - openapi3 tags name: VSCode OpenAPI Snippets category: - Text Editors - Parsers language: Any source_description: >- OpenAPI Snippets for Visual Studio Code editor, includes split file validation v3: true link: https://marketplace.visualstudio.com/items?itemName=proohit.openapi-snippets repository: https://github.com/proohit/openapi-snippets repositoryMetadata: base64Readme: >- IyBPcGVuQXBpIFNuaXBwZXRzCgojIyBVc2FnZQoKIVtzbmlwcGV0LXByZXZpZXddKC4vb3BlbmFwaS1zbmlwcGV0cy1wcmV2aWV3LmdpZikKCiMjIyBzbmlwcGV0cwoKY3VycmVudGx5IHN1cHBvcnRlZCBzbmlwcGV0czoKCnwgICAgICAgICAgICBQcmVmaXggfCBDb250ZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS06IHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCAgICAgICAgIGBwYXRoZ2V0YCB8IEdFVCBwYXRoIG9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgICAgYHBhdGhnZXRwYXJhbWAgfCBHRVQgcGF0aCBvYmplY3Qgd2l0aCByZXF1ZXN0IHBhcmFtZXRlcnMgICAgfAp8ICAgICAgICBgcGF0aHBvc3RgIHwgUE9TVCBwYXRoIG9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgIGBwYXRocHV0YCB8IFBVVCBwYXRoIG9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgICAgYHBhdGhwdXRwYXJhbWAgfCBQVVQgcGF0aCBvYmplY3Qgd2l0aCByZXF1ZXN0IHBhcmFtZXRlcnMgICAgfAp8ICAgICAgYHBhdGhkZWxldGVgIHwgREVMRVRFIHBhdGggb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgcGF0aGRlbGV0ZXBhcmFtYCB8IERFTEVURSBwYXRoIG9iamVjdCB3aXRoIHJlcXVlc3QgcGFyYW1ldGVycyB8CnwgICAgYHNjaGVtYU9iamVjdGAgfCBTY2hlbWEgb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICBgcHJvcGVydHlPYmplY3RgIHwgUHJvcGVydHkgb2JqZWN0IGZvciBwcm9wZXJ0aWVzIG9mIGEgc2NoZW1hIHwKfCAgICAgYGNvbnRlbnRUeXBlYCB8IFNldmVyYWwgY29udGVudCB0eXBlcyAgICAgICAgICAgICAgICAgICAgICB8CgojIyMgVmFsaWRhdGlvbgoKSlNPTiBhbmQgWUFNTC9ZTUwgZmlsZXMgYXJlIGJlaW5nIHZhbGlkYXRlZCBhY2NvcmRpbmcgdG8gdGhlaXIgcmVzcGVjdGl2ZSB1c2FnZSAoZS5nLiBTY2hlbWEgT2JqZWN0cykuIEZvciBzY2hlbWEgc3BlY2lmaWNhdGlvbnMsIHNlZSBbT3BlbkFwaSBTcGVjaWZpY2F0aW9uIHYzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9tYXN0ZXIvc2NoZW1hcy92My4wL3NjaGVtYS5qc29uKQoKKipOb3RlKio6IEZvciBJbnRlbGxpU2Vuc2UgdG8gdmFsaWRhdGUgdGhlIGZpbGVzLCBmaWxlbmFtZXMgaGF2ZSB0byBtYXRjaCB0aGVpciByZXNwZWN0aXZlIHNjaGVtYToKCnwgICAgICAgRmlsZSBuYW1lIHBhdHRlcm4gfCBFeGFtcGxlICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS06IHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBgW2NvbXBvbmVudHMvc2NoZW1hcy9cKiB8IFwqLXNjaGVtYV0uKGpzb24seWFtbCx5bWwpYCB8IGNvbXBvbmVudHMvc2NoZW1hcy91c2Vycy5qc29uIHwKfCAgICAgICAgICAgICAgYFtwYXRocy9cKiB8IFwqLXBhdGhdLihqc29uLHlhbWwseW1sKWAgICB8IHVzZXJzLXBhdGguanNvbiB8CgpZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggcHJlZGVmaW5lZCBhbmNob3IgcG9pbnRzIHdpdGggVEFCIGtleS4gVGhpcyBvbmx5IHdvcmtzIHJpZ2h0IGFmdGVyIGluc2VydGluZyBhIHNuaXBwZXQuCgoqKk5vdGUqKjogRm9yIFlBTUwvWU1MIGZpbGVzIHRvIGJlIHN1cHBvcnRlZCwgdGhlIFtZQU1MIEV4dGVuc2lvbl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPXJlZGhhdC52c2NvZGUteWFtbCkgaGFzIHRvIGJlIGluc3RhbGxlZCEKCiMjIyBLZXliaW5kaW5ncwoKWW91IGNhbiBjb25maWd1cmUgY3VzdG9tIGtleWJpbmRpbmdzIGZvciB0aGUgc25pcHBldHMuIEZvciB0aGlzLCBvcGVuIHRoZSBrZXliaW5kaW5ncy5qc29uIGZpbGUgb2YgVlMgQ29kZSAoU2hvcnRjdXQgYEN0cmwrSyBDdHJsK1NgLCB0aGVuIGNsaWNrIG9uIHRoZSBgT3BlbiBLZXlib2FyZCBTaG9ydGN1dHMgKEpTT04pYCBidXR0b24gaW4gdGhlIHVwcGVyIHJpZ2h0IGNvcm5lcikuCkZvciBhbnkga2V5YmluZGluZywgdXNlIHRoaXMgdGVtcGxhdGUgYW5kIGVkaXQgdGhlIGZpZWxkcyB3aGljaCBhcmUgbWFya2VkIGJ5IGA8PD4+YDoKCmZvciBqc29uIGZpbGVzOgoKYGBganNvbgp7CiAgImtleSI6ICI8PFlvdXIgZGVzaXJlZCBzaG9ydGN1dD4+IiwKICAiY29tbWFuZCI6ICJlZGl0b3IuYWN0aW9uLmluc2VydFNuaXBwZXQiLAogICJ3aGVuIjogImVkaXRvclRleHRGb2N1cyIsCiAgImFyZ3MiOiB7CiAgICAibGFuZ0lkIjogImpzb24iLAogICAgIm5hbWUiOiAiPDxTbmlwcGV0IHByZWZpeD4+IgogIH0KfQpgYGAKCmZvciB5YW1sIGZpbGVzOgoKYGBganNvbgp7CiAgImtleSI6ICI8PFlvdXIgZGVzaXJlZCBzaG9ydGN1dD4+IiwKICAiY29tbWFuZCI6ICJlZGl0b3IuYWN0aW9uLmluc2VydFNuaXBwZXQiLAogICJ3aGVuIjogImVkaXRvclRleHRGb2N1cyIsCiAgImFyZ3MiOiB7CiAgICAibGFuZ0lkIjogInlhbWwiLAogICAgIm5hbWUiOiAiPDxTbmlwcGV0IHByZWZpeD4+IgogIH0KfQpgYGAKCkZvciBgbmFtZWAgeW91IGNhbiB1c2UgYW55IFtzbmlwcGV0IHByZWZpeF0oI3NuaXBwZXRzKS4KCiMjIEluc3RhbGxhdGlvbgoKSnVzdCBkb3dubG9hZCBhbmQgaW5zdGFsbCBpdCBmcm9tIFtWUyBNYXJrZXRwbGFjZV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPXByb29oaXQub3BlbmFwaS1zbmlwcGV0cykuIFRoZXJlIGFyZSBubyBtb3JlIHNldHRpbmdzLCBzbyB0aGUgZXh0ZW5zaW9uIGlzIHJlYWR5IHRvIHVzZSBhZnRlciBpbnN0YWxsYXRpb24uIEl0IGZ1bGx5IHdvcmtzIHdpdGggYW5kIGV4dGVuZHMgW09wZW5BUEkgKFN3YWdnZXIpIEVkaXRvcl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPTQyQ3J1bmNoLnZzY29kZS1vcGVuYXBpKQo= readmeEtag: '"97afdc1cec810f47e55845ecd4340a725323cdb2"' readmeLastModified: Fri, 30 Oct 2020 20:24:53 GMT repositoryId: 256450021 description: OpenAPI snippets and external file validation extension for VSCode created: '2020-04-17T08:46:16Z' updated: '2025-10-06T09:31:09Z' language: null archived: false stars: 9 watchers: 2 forks: 2 owner: proohit logo: https://avatars.githubusercontent.com/u/46965017?v=4 repoEtag: '"db3979142ecacd71ed470732599d89a475839b9fe19ba44a08e49c3ccbcb0649"' repoLastModified: Mon, 06 Oct 2025 09:31:09 GMT foundInMaster: true id: 641631c1edd1eaf61a89b81a4ae7c8eb - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/arbs-io/vscode-openapi-viewer v3: true id: e10b173576edb293957b5e57936fce83 repositoryMetadata: base64Readme: >- IyB2c2NvZGUtb3BlbmFwaS12aWV3ZXIKCiFbVmlzdWFsIFN0dWRpbyBNYXJrZXRwbGFjZSBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2Uvdi9BbmRyZXdCdXRzb24udnNjb2RlLW9wZW5hcGktdmlld2VyKQohWy5naXRodWIvd29ya2Zsb3dzL2NvZGVxbC1hbmFseXNpc10oaHR0cHM6Ly9naXRodWIuY29tL2FyYnMtaW8vdnNjb2RlLW9wZW5hcGktdmlld2VyL2FjdGlvbnMvd29ya2Zsb3dzL2NvZGVxbC1hbmFseXNpcy55bWwvYmFkZ2Uuc3ZnKQohW1Zpc3VhbCBTdHVkaW8gTWFya2V0cGxhY2UgSW5zdGFsbHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdmlzdWFsLXN0dWRpby1tYXJrZXRwbGFjZS9pL0FuZHJld0J1dHNvbi52c2NvZGUtb3BlbmFwaS12aWV3ZXIpClshW0dpdEh1YiBpc3N1ZXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy9hcmJzLWlvL3ZzY29kZS1vcGVuYXBpLXZpZXdlci5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vYXJicy1pby92c2NvZGUtb3BlbmFwaS12aWV3ZXIvaXNzdWVzKQohW1Zpc3VhbCBTdHVkaW8gTWFya2V0cGxhY2UgUmF0aW5nXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2Uvci9BbmRyZXdCdXRzb24udnNjb2RlLW9wZW5hcGktdmlld2VyKQoKWyFbTWFpbnRhaW5hYmlsaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9YXJicy1pb192c2NvZGUtb3BlbmFwaS12aWV3ZXImbWV0cmljPXNxYWxlX3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPWFyYnMtaW9fdnNjb2RlLW9wZW5hcGktdmlld2VyKQpbIVtTZWN1cml0eSBSYXRpbmddKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWFyYnMtaW9fdnNjb2RlLW9wZW5hcGktdmlld2VyJm1ldHJpYz1zZWN1cml0eV9yYXRpbmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1hcmJzLWlvX3ZzY29kZS1vcGVuYXBpLXZpZXdlcikKWyFbUmVsaWFiaWxpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1hcmJzLWlvX3ZzY29kZS1vcGVuYXBpLXZpZXdlciZtZXRyaWM9cmVsaWFiaWxpdHlfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9YXJicy1pb192c2NvZGUtb3BlbmFwaS12aWV3ZXIpClshW0J1Z3NdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWFyYnMtaW9fdnNjb2RlLW9wZW5hcGktdmlld2VyJm1ldHJpYz1idWdzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9YXJicy1pb192c2NvZGUtb3BlbmFwaS12aWV3ZXIpClshW1Z1bG5lcmFiaWxpdGllc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9YXJicy1pb192c2NvZGUtb3BlbmFwaS12aWV3ZXImbWV0cmljPXZ1bG5lcmFiaWxpdGllcyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPWFyYnMtaW9fdnNjb2RlLW9wZW5hcGktdmlld2VyKQoKIyMgV2hhdCBpcyBWaXN1YWwgU3R1ZGlvIENvZGUgT3BlbkFQSSB2aWV3ZXI/CgpUaGlzIGV4dGVuc2lvbiBhbGxvd3MgdXNlcnMgdG8gdmlldyBPcGVuQVBJIHNwZWNpZmljYXRpb25zLiBUaGUgZXh0ZW5zaW9uIHN1cHBvcnQgYm90aCBganNvbmAgYW5kIGB5YW1sYCBmb3JtYXQuIEl0IHByb3ZpZGVzIGEgcHJldmlldyBvZiB0aGUgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybSBvZiBhbiBpbnRlcmFjdGl2ZSBkb2N1bWVudCwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gdGVzdCBhbmQgZGVidWcgQVBJcy4gVGhlIHByZXZpZXcgY2FuIGJlIGFjY2Vzc2VkIGZyb20gd2l0aGluIHRoZSBWaXN1YWwgU3R1ZGlvIGVkaXRvciwgbWFraW5nIGl0IGNvbnZlbmllbnQgZm9yIGRldmVsb3BlcnMgdG8gdmlldyBhbmQgZWRpdCB0aGUgc3BlY2lmaWNhdGlvbiBhcyB0aGV5IHdvcmsgb24gdGhlaXIgY29kZS4KClRoZSBleHRlbnNpb24gaXMgaGFuZHkgZm9yIGRldmVsb3BlcnMgYW5kIGFyY2hpdGVjdHMgd29ya2luZyBvbiBBUEktYmFzZWQgcHJvamVjdHMsIGFsbG93aW5nIHRoZW0gdG8gc2VlIGhvdyB0aGVpciBBUElzIHdpbGwgYmVoYXZlIGFuZCBpbnRlcmFjdCB3aXRoIG90aGVyIGNvbXBvbmVudHMuIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gZ2VuZXJhdGUgZG9jdW1lbnRhdGlvbiBmb3IgQVBJcywgd2hpY2ggY2FuIGJlIGhlbHBmdWwgZm9yIGRldmVsb3BlcnMgd2hvIGFyZSB3b3JraW5nIG9uIHByb2plY3RzIHdpdGggbXVsdGlwbGUgdGVhbXMgb3Igc2hhcmluZyBBUElzIHdpdGggZXh0ZXJuYWwgY2xpZW50cy4KClRoZSB2c2NvZGUtb3BlbmFwaS12aWV3ZXIgZXh0ZW5zaW9uIGlzIGEgdmFsdWFibGUgdG9vbCBmb3IgZGV2ZWxvcGVycyBhbmQgYXJjaGl0ZWN0cyB3b3JraW5nIHdpdGggT3BlbkFQSSBzcGVjaWZpY2F0aW9ucy4gSXQgcHJvdmlkZXMgYSBjb252ZW5pZW50IGFuZCBpbnRlcmFjdGl2ZSB3YXkgdG8gcHJldmlldywgdGVzdCwgYW5kIGRlYnVnIEFQSXMgd2l0aGluIFZpc3VhbCBTdHVkaW8uCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCjEuIEZpcnN0LCBvcGVuIFZpc3VhbCBTdHVkaW8gYW5kIGdvIHRvIHRoZSAiRXh0ZW5zaW9ucyIgdGFiIGluIHRoZSB0b29sYmFyLgoyLiBJbiB0aGUgc2VhcmNoIGJhciwgdHlwZSAidnNjb2RlLW9wZW5hcGktdmlld2VyIiBhbmQgcHJlc3MgZW50ZXIuCjMuIENsaWNrIG9uIHRoZSAidnNjb2RlLW9wZW5hcGktdmlld2VyIiBleHRlbnNpb24gaW4gdGhlIHNlYXJjaCByZXN1bHRzIGFuZCBjbGljayAiRG93bmxvYWQiLgo0LiBPbmNlIHRoZSBleHRlbnNpb24gaGFzIGJlZW4gZG93bmxvYWRlZCwgY2xpY2sgIkluc3RhbGwiIHRvIGluc3RhbGwgaXQuCjUuIEFmdGVyIHRoZSBpbnN0YWxsYXRpb24sIHlvdSB3aWxsIG5lZWQgdG8gcmVzdGFydCBWaXN1YWwgU3R1ZGlvIGZvciB0aGUgY2hhbmdlcyB0byB0YWtlIGVmZmVjdC4KNi4gT25jZSBWaXN1YWwgU3R1ZGlvIGhhcyBiZWVuIHJlc3RhcnRlZCwgeW91IGNhbiBvcGVuIGFuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmaWxlIGJ5IGdvaW5nIHRvICJGaWxlID4gT3BlbiA+IEZpbGUiIGFuZCBzZWxlY3RpbmcgdGhlIG9wZW5hcGkgc3BlY2lmaWNhdGlvbiBmaWxlIGZyb20geW91ciBwcm9qZWN0Lgo3LiBUaGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSBWaXN1YWwgU3R1ZGlvIGVkaXRvci4gSWYgdGhlIHNwZWNpZmljYXRpb24gaXMgdmFsaWQsIGEgcHJldmlldyBidXR0b24gd2lsbCBhcHBlYXIuIFlvdSBjYW4gdXNlIHRoaXMgZG9jdW1lbnQgdG8gdGVzdCBhbmQgZGVidWcgeW91ciBBUElzIGFuZCBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZvciB0aGVtLgoKVGhhdCdzIGl0ISBZb3Ugc2hvdWxkIG5vdyBiZSBhYmxlIHRvIHVzZSB0aGUgdnNjb2RlLW9wZW5hcGktdmlld2VyIGV4dGVuc2lvbiBpbiBWaXN1YWwgU3R1ZGlvIENvZGUgdG8gdmlldyBhbmQgZWRpdCB5b3VyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgdmlzdWFsbHksIGFuZCBpbnR1aXRpdmVseS4KCiFbdnNjb2RlLW9wZW5hcGktdmlld2VyLmdpZl0oaW1hZ2VzL3ZzY29kZS1vcGVuYXBpLXZpZXdlci5naWYpCgojIyAqKkhvdyBjYW4gSSBoZWxwPyoqCgpJZiB5b3UgZW5qb3kgdXNpbmcgdGhlIGV4dGVuc2lvbiwgcGxlYXNlIGdpdmUgaXQgYSByYXRpbmcgb24gdGhlIFtWaXN1YWwgU3R1ZGlvIE1hcmtldHBsYWNlXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9QW5kcmV3QnV0c29uLnZzY29kZS1vcGVuYXBpLXZpZXdlcikuCgpTaG91bGQgeW91IGVuY291bnRlciBidWdzIG9yIGlmIHlvdSBoYXZlIGZlYXR1cmUgcmVxdWVzdHMsIGhlYWQgb24gb3ZlciB0byB0aGUgW0dpdEh1YiByZXBvXShodHRwczovL2dpdGh1Yi5jb20vYXJicy1pby92c2NvZGUtb3BlbmFwaS12aWV3ZXIpIHRvIG9wZW4gYW4gaXNzdWUgaWYgb25lIGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4KUHVsbCByZXF1ZXN0cyBhcmUgYWxzbyB2ZXJ5IHdlbGNvbWUgc2luY2UgSSBjYW4ndCBhbHdheXMgZ2V0IGFyb3VuZCB0byBmaXhpbmcgYWxsIGJ1Z3MgbXlzZWxmLgoKVGhpcyBpcyBhIHBlcnNvbmFsIHBhc3Npb24gcHJvamVjdCwgc28gbXkgdGltZSBpcyBsaW1pdGVkLgoKQW5vdGhlciB3YXkgdG8gaGVscCBvdXQgaXMgdG8gW3Nwb25zb3IgbWUgb24gR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vc3BvbnNvcnMvYXJicy1pbykuCg== readmeEtag: '"b1a9c2222218ea9bd23dc3e0bc9a00fecc8872b8"' readmeLastModified: Mon, 05 Aug 2024 03:59:13 GMT repositoryId: 584545758 description: >- The vscode-openapi-viewer extension is a valuable tool for developers and architects working with OpenAPI specifications, as it provides a convenient and interactive way to preview, test, and debug APIs within Visual Studio Code. created: '2023-01-02T21:56:59Z' updated: '2025-12-17T19:30:01Z' language: TypeScript archived: false stars: 14 watchers: 1 forks: 5 owner: arbs-io logo: https://avatars.githubusercontent.com/u/71968891?v=4 license: MIT repoEtag: '"51baddc412a84a515b774c8f43cadfadbd5e77677cbc8c145c8269577ee9455d"' repoLastModified: Wed, 17 Dec 2025 19:30:01 GMT category: - Documentation - Text Editors - SDK foundInMaster: true name: VSCode OpenAPI Viewer language: TypeScript link: >- https://marketplace.visualstudio.com/items?itemName=AndrewButson.vscode-openapi-viewer source_description: >- Preview and edit JSON or YAML OpenAPI specifications in Visual Studio Code using RapiDoc. v2: true v3_1: true - source: https://openapi.tools/ name: Spectator category: Testing language: PHP source_description: >- Spectator provides light-weight OpenAPI testing tools you can use within your existing Laravel test suite. v2: false v3: true link: https://github.com/hotmeteor/spectator repository: https://github.com/hotmeteor/spectator repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+PGltZyBzcmM9Imh0dHBzOi8vc3BlY3RhdG9yLnMzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL3NwZWN0YXRvci1sb2dvLnBuZyIgd2lkdGg9IjMwMCI+PC9wPgoKIyBTcGVjdGF0b3IKClNwZWN0YXRvciBwcm92aWRlcyBsaWdodC13ZWlnaHQgT3BlbkFQSSB0ZXN0aW5nIHRvb2xzIHlvdSBjYW4gdXNlIHdpdGhpbiB5b3VyIGV4aXN0aW5nIExhcmF2ZWwgdGVzdCBzdWl0ZS4KCldyaXRlIHRlc3RzIHRoYXQgdmVyaWZ5IHlvdXIgQVBJIHNwZWMgZG9lc24ndCBkcmlmdCBmcm9tIHlvdXIgaW1wbGVtZW50YXRpb24uCgohW1Rlc3RzXShodHRwczovL2dpdGh1Yi5jb20vaG90bWV0ZW9yL3NwZWN0YXRvci93b3JrZmxvd3MvVGVzdHMvYmFkZ2Uuc3ZnKQpbIVtMYXRlc3QgVmVyc2lvbiBvbiBQYWNrYWdpc3RdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L3ZwcmUvaG90bWV0ZW9yL3NwZWN0YXRvci5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvaG90bWV0ZW9yL3NwZWN0YXRvcikKIVtQSFAgZnJvbSBQYWNrYWdpc3RdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L3BocC12L2hvdG1ldGVvci9zcGVjdGF0b3IpCgojIyBSZXF1aXJlbWVudHMKCi0gUEhQIDguMSsKLSBMYXJhdmVsIDEwKwoKIyMgSW5zdGFsbGF0aW9uCgpZb3UgY2FuIGluc3RhbGwgdGhlIHBhY2thZ2UgdGhyb3VnaCBDb21wb3Nlci4KCmBgYGJhc2gKY29tcG9zZXIgcmVxdWlyZSBob3RtZXRlb3Ivc3BlY3RhdG9yIC0tZGV2CmBgYAoKVGhlbiwgcHVibGlzaCB0aGUgY29uZmlnIGZpbGUgb2YgdGhpcyBwYWNrYWdlIHdpdGggdGhpcyBjb21tYW5kOgoKYGBgYmFzaApwaHAgYXJ0aXNhbiB2ZW5kb3I6cHVibGlzaCAtLXByb3ZpZGVyPSJTcGVjdGF0b3JcU3BlY3RhdG9yU2VydmljZVByb3ZpZGVyIgpgYGAKClRoZSBjb25maWcgZmlsZSB3aWxsIGJlIHB1Ymxpc2hlZCBpbiBgY29uZmlnL3NwZWN0YXRvci5waHBgLgoKIyMjIFVwZ3JhZGluZyBmcm9tIHYxIHRvIHYyCgoqKkltcG9ydGFudDoqKiBTcGVjdGF0b3IgdjIgcmVxdWlyZXMgUEhQIDguMSBhbmQgTGFyYXZlbCAxMC4gSWYgeW91IGFyZSB1c2luZyBhbiBvbGRlciB2ZXJzaW9uIG9mIFBIUCBvciBMYXJhdmVsLCB5b3Ugc2hvdWxkIG5vdCB1cGdyYWRlIHRvIHYyLgoKV2hpbGUgdGhpcyBzaG91bGQgdHlwaWNhbGx5IGJlIGEgc3RyYWlnaHRmb3J3YXJkIHVwZ3JhZGUsIHlvdSBzaG91bGQgYmUgYXdhcmUgb2Ygc29tZSBvZiB0aGUgY2hhbmdlcyB0aGF0IGhhdmUgYmVlbiBtYWRlLgoKUGxlYXNlIHJlYWQgdGhlIFtVUEdSQURFLm1kXShVUEdSQURFLm1kKSBmaWxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKIyMgQ29uZmlndXJhdGlvbgoKIyMjIFNvdXJjZXMKCioqU291cmNlcyoqIGFyZSByZWZlcmVuY2VzIHRvIHdoZXJlIHlvdXIgQVBJIHNwZWMgbGl2ZXMuIERlcGVuZGluZyBvbiB0aGUgd2F5IHlvdSBvciB5b3VyIHRlYW0gd29ya3MsIG9yIHdoZXJlIHlvdXIgc3BlYyBsaXZlcywgeW91IG1heSB3YW50IHRvIGNvbmZpZ3VyZSBkaWZmZXJlbnQgc291cmNlcyBmb3IgZGlmZmVyZW50IGVudmlyb25tZW50cy4KCkFzIHlvdSBjYW4gc2VlIGZyb20gdGhlIGNvbmZpZywgdGhlcmUncyB0aHJlZSBzb3VyY2UgdHlwZXMgYXZhaWxhYmxlOiBgbG9jYWxgLCBgcmVtb3RlYCwgYW5kIGBnaXRodWJgLiBFYWNoIHNvdXJjZSByZXF1aXJlcyB0aGUgZm9sZGVyIHdoZXJlIHlvdXIgc3BlYyBsaXZlcyB0byBiZSBkZWZpbmVkLCBub3QgdGhlIHNwZWMgZmlsZSBpdHNlbGYuIFRoaXMgcHJvdmlkZXMgZmxleGliaWxpdHkgd2hlbiB3b3JraW5nIHdpdGggbXVsdGlwbGUgQVBJcyBpbiBvbmUgcHJvamVjdCwgb3IgYW4gQVBJIGZyYWdtZW50ZWQgYWNyb3NzIG11bHRpcGxlIHNwZWMgZmlsZXMuCgotLS0KCiMjIyMgTG9jYWwKCmBgYGVudgojIyBTcGVjdGF0b3IgY29uZmlnCgpTUEVDX1NPVVJDRT1sb2NhbApTUEVDX1BBVEg9L3NwZWMvcmVmZXJlbmNlCmBgYAoKLS0tCgojIyMjIFJlbW90ZQoKX1RoaXMgaXMgdXNpbmcgdGhlIHJhdyBhY2Nlc3MgbGluayBmcm9tIEdpdGh1YiwgYnV0IGFueSByZW1vdGUgc291cmNlIGNhbiBiZSBzcGVjaWZpZWQuIFRoZSBTUEVDX1VSTF9QQVJBTVMgY2FuIGJlIHVzZWQgdG8gYXBwZW5kIGFueSBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgcmVxdWlyZWQgZm9yIHRoZSByZW1vdGUgdXJsLl8KCmBgYGVudgojIyBTcGVjdGF0b3IgY29uZmlnCgpTUEVDX1BBVEg9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9wYXRoL3RvL3JlcG8iClNQRUNfVVJMX1BBUkFNUz0iP3Rva2VuPUFCRURDM0U1QVEzSE1VQlBQQ0RUVE1EQUZQTVNNIgpgYGAKCi0tLQoKIyMjIyBHaXRodWIKCl9UaGlzIHVzZXMgdGhlIEdpdGh1YiBQZXJzb25hbCBBY2Nlc3MgVG9rZW4gd2hpY2ggYWxsb3dzIHlvdSBhY2Nlc3MgdG8gYSByZW1vdGUgcmVwbyBjb250YWluaW5nIHlvdXIgY29udHJhY3QuXwoKWW91IGNhbiB2aWV3IGluc3RydWN0aW9ucyBvbiBob3cgdG8gb2J0YWluIHlvdXIgUGVyc29uYWwgQWNjZXNzIFRva2VuIGZyb20gR2l0aHViIGF0IFt0aGlzIGxpbmtdKGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2dpdGh1Yi9hdXRoZW50aWNhdGluZy10by1naXRodWIvY3JlYXRpbmctYS1wZXJzb25hbC1hY2Nlc3MtdG9rZW4pIC4KCioqSW1wb3J0YW50IHRvIG5vdGUgdGhhbiB0aGUgU1BFQ19HSVRIVUJfUEFUSCBtdXN0IGluY2x1ZGVkIHRoZSBicmFuY2ggKGV4OiBtYWluKSBhbmQgdGhlbiB0aGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgeW91ciBjb250cmFjdC4qKgoKYGBgZW52CiMjIFNwZWN0YXRvciBjb25maWcKClNQRUNfR0lUSFVCX1BBVEg9J21haW4vY29udHJhY3RzJwpTUEVDX0dJVEhVQl9SRVBPPSdvcmdPcnVzZXIvcmVwbycKU1BFQ19HSVRIVUJfVE9LRU49J3lvdXIgcGVyc29uYWwgYWNjZXNzIHRva2VuJwpgYGAKCi0tLQoKIyMjIFNwZWNpZnlpbmcgdGhlIFRhcmdldCBTcGVjIEZpbGUKCkluIHlvdXIgdGVzdHMgeW91IHdpbGwgZGVjbGFyZSB0aGUgc3BlYyBmaWxlIHlvdSB3YW50IHRvIHRlc3QgYWdhaW5zdDoKCmBgYHBocApwdWJsaWMgZnVuY3Rpb24gdGVzdEJhc2ljRXhhbXBsZSgpCnsKICAgIFNwZWN0YXRvcjo6dXNpbmcoJ0FwaS52MS5qc29uJyk7CgogICAgLy8gLi4uCmBgYAoKIyMgVGVzdGluZwoKIyMjIFBhcmFkaWdtIFNoaWZ0CgoqKk5vdywgb24gdG8gdGhlIGdvb2Qgc3R1ZmYuKioKCkF0IGZpcnN0LCBzcGVjIHRlc3RpbmcsIG9yIGNvbnRyYWN0IHRlc3RpbmcsIG1heSBzZWVtIGNvdW50ZXItaW50dWl0aXZlLCBlc3BlY2lhbGx5IHdoZW4gY29tcGFyZWQgd2l0aCAiZmVhdHVyZSIgb3IgImZ1bmN0aW9uYWwiIHRlc3RpbmcgYXMgc3VwcG9ydGVkIGJ5IExhcmF2ZWwncyBbSFRUUCBUZXN0c10oaHR0cHM6Ly9sYXJhdmVsLmNvbS9kb2NzLzgueC9odHRwLXRlc3RzKS4gCgpXaGlsZSBfZnVuY3Rpb25hbF8gdGVzdHMgYXJlIGVuc3VyaW5nIHRoYXQgeW91ciByZXF1ZXN0IHZhbGlkYXRpb24sIGNvbnRyb2xsZXIgYmVoYXZpb3IsIGV2ZW50cywgcmVzcG9uc2VzLCBldGMuIGFsbCBiZWhhdmUgdGhlIHdheSB5b3UgZXhwZWN0IHdoZW4gcGVvcGxlIGludGVyYWN0IHdpdGggeW91ciBBUEksIF9jb250cmFjdF8gdGVzdHMgYXJlIGVuc3VyaW5nIHRoYXQgKipyZXF1ZXN0cyBhbmQgcmVzcG9uc2VzIGFyZSBzcGVjLWNvbXBsaWFudCoqIC0gX2FuZCB0aGF0J3MgaXRfLiBUaGUgZGF0YSBpdHNlbGYgY291bGQgYmUgd3JvbmcsIGJ1dCB0aGF0J3Mgb3V0c2lkZSB0aGUgc2NvcGUgb2YgYSBjb250cmFjdCB0ZXN0LgoKIyMjIFdyaXRpbmcgVGVzdHMKClNwZWN0YXRvciBpbnRyb2R1Y2VzIGEgZmV3IHNpbXBsZSB0b29scyB0byBjb21wbGltZW50IHRoZSBleGlzdGluZyBMYXJhdmVsIHRlc3RpbmcgdG9vbGJveC4KCkhlcmUncyBhbiBleGFtcGxlIG9mIGEgdHlwaWNhbCBKU09OIEFQSSB0ZXN0OgoKYGBgcGhwCjw/cGhwCgpjbGFzcyBFeGFtcGxlVGVzdCBleHRlbmRzIFRlc3RDYXNlCnsKICAgIC8qKgogICAgICogQSBiYXNpYyBmdW5jdGlvbmFsIHRlc3QgZXhhbXBsZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RCYXNpY0V4YW1wbGUoKQogICAgewogICAgICAgICRyZXNwb25zZSA9ICR0aGlzLT5wb3N0SnNvbignL3VzZXInLCBbJ25hbWUnID0+ICdTYWxseSddKTsKCiAgICAgICAgJHJlc3BvbnNlCiAgICAgICAgICAgIC0+YXNzZXJ0U3RhdHVzKDIwMSkKICAgICAgICAgICAgLT5hc3NlcnRKc29uKFsKICAgICAgICAgICAgICAgICdjcmVhdGVkJyA9PiB0cnVlLAogICAgICAgICAgICBdKTsKICAgIH0KfQpgYGAKCkFuZCBoZXJlJ3MgYW4gZXhhbXBsZSBvZiBhIGNvbnRyYWN0IHRlc3Q6CgpgYGBwaHAKPD9waHAKCnVzZSBTcGVjdGF0b3JcU3BlY3RhdG9yOwoKY2xhc3MgRXhhbXBsZVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZQp7CiAgICAvKioKICAgICAqIEEgYmFzaWMgZnVuY3Rpb25hbCB0ZXN0IGV4YW1wbGUuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0QmFzaWNFeGFtcGxlKCkKICAgIHsKICAgICAgICBTcGVjdGF0b3I6OnVzaW5nKCdBcGkudjEuanNvbicpOwoKICAgICAgICAkcmVzcG9uc2UgPSAkdGhpcy0+cG9zdEpzb24oJy91c2VyJywgWyduYW1lJyA9PiAnU2FsbHknXSk7CgogICAgICAgICRyZXNwb25zZQogICAgICAgICAgICAtPmFzc2VydFZhbGlkUmVxdWVzdCgpCiAgICAgICAgICAgIC0+YXNzZXJ0VmFsaWRSZXNwb25zZSgyMDEpOwogICAgfQp9CmBgYAoKVGhlIHRlc3QgaXMgdmVyaWZ5aW5nIHRoYXQgYm90aCB0aGUgcmVxdWVzdCBhbmQgdGhlIHJlc3BvbnNlIGFyZSB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWMsIGluIHRoaXMgY2FzZSBsb2NhdGVkIGluIGBBcGkudjEuanNvbmAuIFRoaXMgdHlwZSBvZiB0ZXN0aW5nIHByb21vdGVzIFRERDogeW91IGNhbiB3cml0ZSBlbmRwb2ludCBjb250cmFjdCB0ZXN0cyBhZ2FpbnN0IHlvdXIgZW5kcG9pbnRzIF9maXJzdF8sIGFuZCB0aGVuIGVuc3VyZSB5b3VyIHNwZWMgYW5kIGltcGxlbWVudGF0aW9uIGFyZSBhbGlnbmVkLgoKV2l0aGluIHlvdXIgc3BlYywgZWFjaCBwb3NzaWJsZSByZXNwb25zZSBzaG91bGQgYmUgZG9jdW1lbnRlZC4gRm9yIGV4YW1wbGUsIGEgc2luZ2xlIGBQT1NUYCBlbmRwb2ludCBtYXkgcmVzdWx0IGluIGEgYDJ4eGAsIGA0eHhgLCBvciBldmVuIGA1eHhgIGNvZGUgcmVzcG9uc2UuIEFkZGl0aW9uYWxseSwgeW91ciBlbmRwb2ludHMgd2lsbCBsaWtlbHkgaGF2ZSBwYXJ0aWN1bGFyIHBhcmFtZXRlciB2YWxpZGF0aW9uIHRoYXQgbmVlZHMgdG8gYmUgYWRoZXJlZCB0by4gCgpUaGlzIGlzIHdoYXQgbWFrZXMgY29udHJhY3QgdGVzdGluZyBkaWZmZXJlbnQgZnJvbSBmdW5jdGlvbmFsIHRlc3Rpbmc6CgotIGluICoqZnVuY3Rpb25hbCB0ZXN0aW5nKiosIHN1Y2Nlc3NmdWwgYW5kIGZhaWxlZCByZXNwb25zZXMgYXJlIHRlc3RlZCBmb3Igb3V0Y29tZXMKLSBpbiAqKmNvbnRyYWN0IHRlc3RpbmcqKiwgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBhcmUgdGVzdGVkIGZvciBjb25mb3JtaXR5IGFuZCBvdXRjb21lcyBkb24ndCBtYXR0ZXIuCgojIyMgRGVidWdnaW5nCgpGb3IgY2VydGFpbiB2YWxpZGF0aW9uIGVycm9ycywgYSBzcGVjaWFsIGV4Y2VwdGlvbiBtZXNzYWdlIGlzIHRocm93biB3aGljaCBzaG93cyBlcnJvciBtZXNzYWdlKHMpIGRpc3BsYXllZCBhbG9uZ3NpZGUgdGhlIGV4cGVjdGVkIHNjaGVtYS4gRm9yIGV4YW1wbGU6CgpgYGAKICAtLS0KClRoZSBwcm9wZXJ0aWVzIG11c3QgbWF0Y2ggc2NoZW1hOiBkYXRhCkFsbCBhcnJheSBpdGVtcyBtdXN0IG1hdGNoIHNjaGVtYQpUaGUgcmVxdWlyZWQgcHJvcGVydGllcyAobmFtZSkgYXJlIG1pc3NpbmcKCm9iamVjdCsrIDw9PSBUaGUgcHJvcGVydGllcyBtdXN0IG1hdGNoIHNjaGVtYTogZGF0YQogICAgc3RhdHVzKjogc3RyaW5nCiAgICBkYXRhKjogYXJyYXkgPD09IEFsbCBhcnJheSBpdGVtcyBtdXN0IG1hdGNoIHNjaGVtYQogICAgICAgIG9iamVjdCA8PT0gVGhlIHJlcXVpcmVkIHByb3BlcnRpZXMgKG5hbWUpIGFyZSBtaXNzaW5nCiAgICAgICAgICAgIGlkKjogc3RyaW5nCiAgICAgICAgICAgIG5hbWUqOiBzdHJpbmcKICAgICAgICAgICAgc2x1Zzogc3RyaW5nPwoKICAtLS0KYGBgCgpBIGZldyBjdXN0b20gc3ltYm9scyBhcmUgdXNlZDoKCi0gIisrIjogT2JqZWN0IHN1cHBvcnRzIGBhZGRpdGlvbmFsUHJvcGVydGllc2AKLSAiXCoiOiBJdGVtIGlzIGByZXF1aXJlZGAKLSAiPyI6IEl0ZW0gY2FuIGJlIGBudWxsYWJsZWAKCiMjIFVzYWdlCgojIyMgUHJvdmlkaW5nIGEgU3BlYwoKRGVmaW5lIHRoZSBzcGVjIGZpbGUgdG8gdGVzdCBhZ2FpbnN0LiBUaGlzIGNhbiBiZSBkZWZpbmVkIGluIHlvdXIgYHNldFVwKClgIG1ldGhvZCBvciBpbiBhIHNwZWNpZmljIHRlc3QgbWV0aG9kLgoKYGBgcGhwCjw/cGhwCgp1c2UgU3BlY3RhdG9yXFNwZWN0YXRvcjsKCmNsYXNzIEV4YW1wbGVUZXN0IGV4dGVuZHMgVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHNldFVwKCk6IHZvaWQKICAgIHsKICAgICAgICBwYXJlbnQ6OnNldFVwKCk7CgogICAgICAgIFNwZWN0YXRvcjo6dXNpbmcoJ0FwaS52MS5qc29uJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RBcGlFbmRwb2ludCgpCiAgICB7CiAgICAgICAgLy8gVGVzdCByZXF1ZXN0IGFuZCByZXNwb25zZS4uLgogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RGlmZmVyZW50QXBpRW5kcG9pbnQoKQogICAgewogICAgICAgIFNwZWN0YXRvcjo6dXNpbmcoJ090aGVyLnYxLmpzb24nKTsKCiAgICAgICAgLy8gVGVzdCByZXF1ZXN0IGFuZCByZXNwb25zZS4uLgogICAgfQp9CmBgYAoKIyMjIFRlc3RpbmcgUmVxdWVzdHMKCldoZW4gdGVzdGluZyBlbmRwb2ludHMsIHRoZXJlIGFyZSBhIGZldyBuZXcgbWV0aG9kczoKCmBgYHBocAokdGhpcy0+YXNzZXJ0VmFsaWRSZXF1ZXN0KCk7CiR0aGlzLT5hc3NlcnRWYWxpZFJlc3BvbnNlKCRzdGF0dXMgPSBudWxsKTsKJHRoaXMtPmFzc2VydFZhbGlkYXRpb25NZXNzYWdlKCdFeHBlY3RlZCB2YWxpZGF0aW9uIG1lc3NhZ2UnKTsKJHRoaXMtPmFzc2VydEVycm9yc0NvbnRhaW4oJ0NoZWNrIGZvciBzaW5nbGUgZXJyb3InKTsKJHRoaXMtPmFzc2VydEVycm9yc0NvbnRhaW4oWydDaGVjayBmb3InLCAnTXVsdGlwbGUgRXJyb3JzJ10pOwpgYGAKCk9mIGNvdXJzZSwgeW91IGNhbiBjb250aW51ZSB0byB1c2UgYWxsIGV4aXN0aW5nIEhUVFAgdGVzdCBtZXRob2RzOgoKYGBgcGhwCiR0aGlzCiAgICAtPmFjdGluZ0FzKCR1c2VyKQogICAgLT5wb3N0SnNvbignL2NvbW1lbnRzJywgWwogICAgICAgICdtZXNzYWdlJyA9PiAnSnVzdCBvdmVyIGhlcmUgc3BlY3RhdGluZycsCiAgICBdKQogICAgLT5hc3NlcnRDcmVhdGVkKCkKICAgIC0+YXNzZXJ0VmFsaWRSZXF1ZXN0KCkKICAgIC0+YXNzZXJ0VmFsaWRSZXNwb25zZSgpOwpgYGAKClRoYXQgc2FpZCwgbWl4aW5nIGZ1bmN0aW9uYWwgYW5kIGNvbnRyYWN0IHRlc3RpbmcgbWF5IGJlY29tZSBtb3JlIGRpZmZpY3VsdCB0byBtYW5hZ2UgYW5kIHJlYWQgbGF0ZXIuIEl0J3Mgc3Ryb25nbHkgYWR2aXNlZCB0byBrZWVwIHRoZSB0d28gdHlwZXMgb2YgdGVzdHMgc2VwYXJhdGUuCgojIyMgVGVzdGluZyBSZXNwb25zZXMKCkluc3RlYWQgb2YgdXNpbmcgdGhlIGJ1aWx0LWluIGAtPmFzc2VydFN0YXR1cygkc3RhdHVzKWAgbWV0aG9kLCB5b3UgbWF5IGFsc28gdmVyaWZ5IHRoZSByZXNwb25zZSB0aGF0IGlzIHZhbGlkIGlzIGFjdHVhbGx5IHRoZSByZXNwb25zZSB5b3Ugd2FudCB0byBjaGVjay4gRm9yIGV4YW1wbGUsIHlvdSBtYXkgcmVjZWl2ZSBhIGAyMDBgICoqb3IqKiBhIGAyMDJgIGZyb20gYSBzaW5nbGUgZW5kcG9pbnQsIGFuZCB5b3Ugd2FudCB0byBlbnN1cmUgeW91J3JlIHZhbGlkYXRpbmcgdGhlIGNvcnJlY3QgcmVzcG9uc2UuCgpgYGBwaHAKJHRoaXMKICAgIC0+YWN0aW5nQXMoJHVzZXIpCiAgICAtPnBvc3RKc29uKCcvY29tbWVudHMnLCBbCiAgICAgICAgJ21lc3NhZ2UnID0+ICdKdXN0IG92ZXIgaGVyZSBzcGVjdGF0aW5nJywKICAgIF0pCiAgICAtPmFzc2VydFZhbGlkUmVxdWVzdCgpCiAgICAtPmFzc2VydFZhbGlkUmVzcG9uc2UoMjAxKTsKYGBgCgpXaGVuIGV4Y2VwdGlvbnMgYXJlIHRocm93biB0aGF0IGFyZSBub3Qgc3BlY2lmaWMgdG8gdGhpcyBwYWNrYWdlJ3MgcHVycG9zZSwgZS5nLiB0eXBvcyBvciBtaXNzaW5nIGltcG9ydHMsIHRoZSBvdXRwdXQgd2lsbCBiZSBmb3JtYXR0ZWQgYnkgZGVmYXVsdCB3aXRoIGEgcmF0aGVyIHNob3J0IG1lc3NhZ2UgYW5kIG5vIHN0YWNrIHRyYWNlLgpUaGlzIGNhbiBiZSBjaGFuZ2VkIGJ5IGRpc2FibGluZyBMYXJhdmVsJ3MgYnVpbHQtaW4gdmFsaWRhdGlvbiBoYW5kbGVyIHdoaWNoIGFsbG93cyBmb3IgZWFzaWVyIGRlYnVnZ2luZyB3aGVuIHJ1bm5pbmcgdGVzdHMuCgpUaGlzIGNhbiBiZSBkb25lIGluIGEgZmV3IGRpZmZlcmVudCB3YXlzOgoKYGBgcGhwCmNsYXNzIEV4YW1wbGVUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VXAoKTogdm9pZAogICAgewogICAgICAgIHBhcmVudDo6c2V0VXAoKTsKCiAgICAgICAgU3BlY3RhdG9yOjp1c2luZygnQXBpLnYxLmpzb24nKTsKCiAgICAgICAgLy8gRGlzYWJsZSBleGNlcHRpb24gaGFuZGxpbmcgZm9yIGFsbCB0ZXN0cyBpbiB0aGlzIGZpbGUKICAgICAgICAkdGhpcy0+d2l0aG91dEV4Y2VwdGlvbkhhbmRsaW5nKCk7CiAgICB9CgogICAgLy8gLi4uCn0KYGBgCgpgYGBwaHAKY2xhc3MgRXhhbXBsZVRlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0X3NvbWVfY29udHJhY3RfdGVzdF9leGFtcGxlKCk6IHZvaWQKICAgIHsKICAgICAgICAvLyBPbmx5IGRpc2FibGUgZXhjZXB0aW9uIGhhbmRsaW5nIGZvciB0aGlzIHRlc3QKICAgICAgICAkdGhpcy0+d2l0aG91dGhFeGNlcHRpb25IYW5kbGluZygpOwoKICAgICAgICAvLyBUZXN0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIC4uLgoKICAgIH0KfQpgYGAKCiMjIyBEZWFjdGl2YXRpbmcgU3BlY3RhdG9yCgpJZiB5b3Ugd2FudCB0byBkZWFjdGl2YXRlIFNwZWN0YXRvciBmb3IgYSBzcGVjaWZpYyB0ZXN0LCB5b3UgY2FuIHVzZSB0aGUgYFNwZWN0YXRvcjo6cmVzZXRgIG1ldGhvZDoKCmBgYHBocAo8P3BocAoKdXNlIFNwZWN0YXRvclxTcGVjdGF0b3I7CgpjbGFzcyBFeGFtcGxlVGVzdCBleHRlbmRzIFRlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRVcCgpOiB2b2lkCiAgICB7CiAgICAgICAgcGFyZW50OjpzZXRVcCgpOwoKICAgICAgICBTcGVjdGF0b3I6OnVzaW5nKCdBcGkudjEuanNvbicpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0V2l0aG91dFNwZWN0YXRvcigpCiAgICB7CiAgICAgICAgU3BlY3RhdG9yOjpyZXNldCgpOwogICAgICAgIAogICAgICAgIC8vIFJ1biB5b3VyIHRlc3Qgd2l0aG91dCBTcGVjdGF0b3IKICAgIH0KfQpgYGAKCiMjIENvcmUgQ29uY2VwdHMKCiMjIyBBcHByb2FjaAoKU3BlY3RhdG9yIHdvcmtzIGJ5IHJlZ2lzdGVyaW5nIGEgY3VzdG9tIG1pZGRsZXdhcmUgdGhhdCBwZXJmb3JtcyByZXF1ZXN0IGFuZCByZXNwb25zZSB2YWxpZGF0aW9uIGFnYWluc3QgYSBzcGVjLgoKIyMjIERlcGVuZGVuY2llcwoKRm9yIHRob3NlIGludGVyZXN0ZWQgaW4gY29udHJpYnV0aW5nIHRvIFNwZWN0YXRvciwgaXQgaXMgd29ydGggZmFtaWxpYXJpemluZyB5b3Vyc2VsZiB3aXRoIHRoZSBjb3JlIGRlcGVuZGVuY2llcyB1c2VkIGZvciBzcGVjIHRlc3Rpbmc6CgotIGBjZWJlL3BocC1vcGVuYXBpYDogVXNlZCB0byBwYXJzZSBzcGVjcyBpbnRvIHVzYWJsZSBhcnJheXMKLSBgb3Bpcy9qc29uLXNjaGVtYWA6IFVzZWQgdG8gcGVyZm9ybSB2YWxpZGF0aW9uIG9mIGFuIG9iamVjdC9hcnJheSBhZ2FpbnN0IGEgc3BlYwoKIyMgU3BvbnNvcnMKCkEgaHVnZSB0aGFua3MgdG8gYWxsIG91ciBzcG9uc29ycyB3aG8gaGVscCBwdXNoIFNwZWN0YXRvciBkZXZlbG9wbWVudCBmb3J3YXJkIQoKSWYgeW91J2QgbGlrZSB0byBiZWNvbWUgYSBzcG9uc29yLCBwbGVhc2UgW3NlZSBoZXJlIGZvciBtb3JlIGluZm9ybWF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vc3BvbnNvcnMvaG90bWV0ZW9yKS4g8J+SqgoKIyMgQ3JlZGl0cwoKLSBDcmVhdGVkIGJ5IFtBZGFtIENhbXBiZWxsXShodHRwczovL2dpdGh1Yi5jb20vaG90bWV0ZW9yKQotIE1haW50YWluZWQgYnkgW0Jhc3RpZW4gUGhpbGlwcGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9iYXN0aWVuLXBoaSksIFtKYXJyb2QgUGFya2VzXShodHRwczovL2dpdGh1Yi5jb20vamFycm9kcGFya2VzKSwgYW5kIFtBZGFtIENhbXBiZWxsXShodHRwczovL2dpdGh1Yi5jb20vaG90bWV0ZW9yKQotIEluc3BpcmVkIGJ5IFtMYXJhdmVsIE9wZW5BUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9tZHdoZWVsZS9sYXJhdmVsLW9wZW5hcGkpIHBhY2thZ2UgYnkgW0R1c3RpbiBXaGVlbGVyXShodHRwczovL2dpdGh1Yi5jb20vbWR3aGVlbGUpCi0gW0FsbCBDb250cmlidXRvcnNdKC4uLy4uL2NvbnRyaWJ1dG9ycykKCjxhIGhyZWYgPSAiaHR0cHM6Ly9naXRodWIuY29tL2hvdG1ldGVvci9zcGVjdGF0b3IvZ3JhcGhzL2NvbnRyaWJ1dG9ycyI+CiAgPGltZyBzcmMgPSAiaHR0cHM6Ly9jb250cmliLnJvY2tzL2ltYWdlP3JlcG89aG90bWV0ZW9yL3NwZWN0YXRvciIvPgo8L2E+CgpNYWRlIHdpdGggW2NvbnRyaWJ1dG9ycy1pbWddKGh0dHBzOi8vY29udHJpYi5yb2NrcykuCgojIyBMaWNlbnNlCgpUaGUgTUlUIExpY2Vuc2UgKE1JVCkuIFBsZWFzZSBzZWUgW0xpY2Vuc2UgRmlsZV0oTElDRU5TRS5tZCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCg== readmeEtag: '"37d8d44117659bfd1933755f42a09d42e6fc3c5f"' readmeLastModified: Tue, 19 Mar 2024 11:57:51 GMT repositoryId: 267042343 description: OpenAPI testing for PHP created: '2020-05-26T12:54:10Z' updated: '2026-01-21T10:45:24Z' language: PHP archived: false stars: 299 watchers: 6 forks: 56 owner: hotmeteor logo: https://avatars.githubusercontent.com/u/378585?v=4 license: MIT repoEtag: '"268246589da944b059adda25e57ec70e2c673bffc295e3362cd7abc7b15a7b88"' repoLastModified: Wed, 21 Jan 2026 10:45:24 GMT foundInMaster: true v3_1_link: https://github.com/hotmeteor/spectator/issues/100 id: 21ebf4f7492590e7ac32e77be29af173 - source: https://openapi.tools/ name: APIFuzzer category: Data Validators language: Python source_description: >- Fuzz test your application using your OpenAPI definition without coding. Integrate into CI/CD, get Junit XML test result and JSON report of failures v2: true v3: true link: https://github.com/KissPeter/APIFuzzer repository: https://github.com/kisspeter/apifuzzer repositoryMetadata: base64Readme: >- WyFbSm9pbiB0aGUgY2hhdCBhdCBodHRwczovL2dpdHRlci5pbS9BUEktRnV6emVyL0xvYmJ5XShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vQVBJLUZ1enplci9Mb2JieS5zdmcpXShodHRwczovL2dpdHRlci5pbS9BUEktRnV6emVyL0xvYmJ5P3V0bV9zb3VyY2U9YmFkZ2UmdXRtX21lZGl1bT1iYWRnZSZ1dG1fY2FtcGFpZ249cHItYmFkZ2UmdXRtX2NvbnRlbnQ9YmFkZ2UpClshW1Rlc3QgQ292ZXJhZ2VdKGh0dHBzOi8vYXBpLmNvZGVjbGltYXRlLmNvbS92MS9iYWRnZXMvYmZjOWJkYTAwZGViNTAwMmI2NjUvdGVzdF9jb3ZlcmFnZSldKGh0dHBzOi8vY29kZWNsaW1hdGUuY29tL2dpdGh1Yi9LaXNzUGV0ZXIvQVBJRnV6emVyL3Rlc3RfY292ZXJhZ2UpClshW0NvZGFjeSBCYWRnZV0oaHR0cHM6Ly9hcGkuY29kYWN5LmNvbS9wcm9qZWN0L2JhZGdlL0dyYWRlL2VhYjY0MzRkOWJkNzQyZTM4ODBkOGY1ODlhOWNjMGE2KV0oaHR0cHM6Ly93d3cuY29kYWN5LmNvbS9hcHAvS2lzc1BldGVyL0FQSUZ1enplcj91dG1fc291cmNlPWdpdGh1Yi5jb20mdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY29udGVudD1LaXNzUGV0ZXIvQVBJRnV6emVyJnV0bV9jYW1wYWlnbj1iYWRnZXIpClshW01haW50YWluYWJpbGl0eV0oaHR0cHM6Ly9hcGkuY29kZWNsaW1hdGUuY29tL3YxL2JhZGdlcy9iZmM5YmRhMDBkZWI1MDAyYjY2NS9tYWludGFpbmFiaWxpdHkpXShodHRwczovL2NvZGVjbGltYXRlLmNvbS9naXRodWIvS2lzc1BldGVyL0FQSUZ1enplci9tYWludGFpbmFiaWxpdHkpClshW1B5cGkgZG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvZHcvQVBJRnV6emVyKV0oaHR0cHM6Ly9weXBpc3RhdHMub3JnL3BhY2thZ2VzL2FwaWZ1enplcikKWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9LaXNzUGV0ZXIvQVBJRnV6emVyL2FjdGlvbnMvd29ya2Zsb3dzL3B5dGhvbi1hcHAueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9LaXNzUGV0ZXIvQVBJRnV6emVyL2FjdGlvbnMpCgojIEFQSUZ1enplciDigJQgSFRUUCBBUEkgVGVzdGluZyBGcmFtZXdvcmsKCkFQSUZ1enplciByZWFkcyB5b3VyIEFQSSBkZXNjcmlwdGlvbiBhbmQgc3RlcCBieSBzdGVwIGZ1enplcyB0aGUgZmllbGRzIHRvIHZhbGlkYXRlIAppZiB5b3UgYXBwbGljYXRpb24gY2FuIGNvcGUgd2l0aCB0aGUgZnV6emVkIHBhcmFtZXRlcnMuIERvZXMgbm90IHJlcXVpcmUgY29kaW5nLgoKIyMgQVBJRnV6emVyIG1haW4gZmVhdHVyZXMKCiogUGFyc2UgQVBJIGRlZmluaXRpb24gZnJvbSBsb2NhbCBmaWxlIG9yIHJlbW90ZSBVUkwKKiBKU09OIGFuZCBZQU1MIGZpbGUgZm9ybWF0IHN1cHBvcnQKKiBBbGwgSFRUUCBtZXRob2RzIGFyZSBzdXBwb3J0ZWQKKiBGdXp6aW5nIG9mIHJlcXVlc3QgYm9keSwgcXVlcnkgc3RyaW5nLCBwYXRoIHBhcmFtZXRlciBhbmQgcmVxdWVzdCBoZWFkZXIgYXJlIHN1cHBvcnRlZAoqIFJlbGllcyBvbiByYW5kb20gbXV0YXRpb25zCiogU3VwcG9ydCBDSSBpbnRlZ3JhdGlvbiAKICAgICogR2VuZXJhdGUgSlVuaXQgWE1MIHRlc3QgcmVwb3J0IGZvcm1hdAogICAgKiBTZW5kIHJlcXVlc3QgdG8gYWx0ZXJuYXRpdmUgVVJMCiAgICAqIFN1cHBvcnQgSFRUUCBiYXNpYyBhdXRoIGZyb20gY29uZmlndXJhdGlvbgogICAgKiBTYXZlIHJlcG9ydCBvZiBmYWlsZWQgdGVzdCBpbiBKU09OIGZvcm1hdCBpbnRvIHRoZSBwcmUtY29uZmlndXJlZCBmb2xkZXIKICAgICogTG9nIHRvIHN0ZG91dCBpbnN0ZWFkIG9mIHN5c2xvZwoqIENvbmZpZ3VyYWJsZSBsb2cgbGV2ZWwKCiMjIyBTdXBwb3J0ZWQgQVBJIGRlZmluaXRpb24gZm9ybWF0cwotIFtTd2FnZ2VyXVtdCi0gW09wZW5BUEldW10KCiMjIyBQbGFubmVkCi0gW0dyYXBoUUxdW10KLSBbQVBJIEJsdWVwcmludF1bXQoKIyMgSW5zdGFsbGF0aW9uCgojIyMgV2l0aCBQSVAKCiMjIyMgUHJlLXJlcXVpcmVtZW50cwoxLiBQeXRob24zCjIuIHN1ZG8gYXB0IGluc3RhbGwgbGliY3VybDQtb3BlbnNzbC1kZXYgbGlic3NsLWRldiBsaWJjdXJsNC1uc3MtZGV2IChvbiBVYnVudHUgMTguMDQsIHJlcXVpcmVkIGJ5IHB5Y3VybCkKMy4gc3VkbyBhcHQgaW5zdGFsbCBnY2MgbGliY3VybDQtbnNzLWRldiAob24gVWJ1bnR1IDIwLjA0LCByZXF1aXJlZCBieSBweWN1cmwpCgpMYXRlc3QgdmVyc2lvbjoKCmBgYHNoZWxsCnBpcDMgaW5zdGFsbCBBUElGdXp6ZXIKYGBgCkRldmVsb3BtZW50IHZlcnNpb246IApGZXRjaCB0aGUgbW9zdCByZWNlbnQgY29kZSBmcm9tIEdpdEh1YgpgYGBzaGVsbAokIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vS2lzc1BldGVyL0FQSUZ1enplci5naXQKYGBgCkluc3RhbGwgcmVxdWlyZW1lbnRzLiBJZiB5b3UgZG9uJ3QgaGF2ZSBwaXAgaW5zdGFsbGVkLCB0aGVuIHN1ZG8gYXB0LWdldCBpbnN0YWxsIHB5dGhvbjMtcGlwIC15IApgYGBzaGVsbAokIHBpcDMgaW5zdGFsbCAtciBBUElGdXp6ZXIvcmVxdWlyZW1lbnRzLnR4dApgYGAKCiMjIyBVc2luZyBEb2NrZXIKCmBgYHNoZWxsCiQgZG9ja2VyIHB1bGwga2lzc3BldGVyL2FwaWZ1enplcjpsYXRlc3QKYGBgCgojIyBRdWljayBTdGFydAoKQ2hlY2sgdGhlIGhlbHAgKHNvbWUgb2YgdGhlbSBhcmUgbm90IGltcGxlbWVudGVkIHlldCk6CmBgYHNoZWxsCgokJCB1c2FnZTogQVBJRnV6emVyIFstaF0gWy1zIFNSQ19GSUxFXSBbLS1zcmNfdXJsIFNSQ19VUkxdIFstciBSRVBPUlRfRElSXSBbLS1sZXZlbCBMRVZFTF0gWy11IEFMVEVSTkFURV9VUkxdIFstdCBURVNUX1JFU1VMVF9EU1RdCiAgICAgICAgICAgICAgICAgWy0tbG9nIHtjcml0aWNhbCxmYXRhbCxlcnJvcix3YXJuLHdhcm5pbmcsaW5mbyxkZWJ1Zyxub3RzZXR9XSBbLS1iYXNpY19vdXRwdXQgQkFTSUNfT1VUUFVUXSBbLS1oZWFkZXJzIEhFQURFUlNdIFstdiAsLS12ZXJzaW9uXQoKQVBJRnV6emVyIGNvbmZpZ3VyYXRpb24KCm9wdGlvbmFsIGFyZ3VtZW50czoKICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAogIC1zIFNSQ19GSUxFLCAtLXNyY19maWxlIFNSQ19GSUxFCiAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBkZWZpbml0aW9uIGZpbGUgcGF0aC4gSlNPTiBhbmQgWUFNTCBmb3JtYXQgaXMgc3VwcG9ydGVkCiAgLS1zcmNfdXJsIFNSQ19VUkwgICAgIEFQSSBkZWZpbml0aW9uIHVybC4gSlNPTiBhbmQgWUFNTCBmb3JtYXQgaXMgc3VwcG9ydGVkCiAgLXIgUkVQT1JUX0RJUiwgLS1yZXBvcnRfZGlyIFJFUE9SVF9ESVIKICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5IHdoZXJlIGVycm9yIHJlcG9ydHMgd2lsbCBiZSBzYXZlZC4gRGVmYXVsdCBpcyB0ZW1wb3JhbGx5IGdlbmVyYXRlZCBkaXJlY3RvcnkKICAtLWxldmVsIExFVkVMICAgICAgICAgVGVzdCBkZWVwbmVzczogWzEsMl0sIHRoZSBoaWdoZXIgaXMgdGhlIGRlZXBlciAoSW4gcHJvZ3Jlc3MpCiAgLXUgQUxURVJOQVRFX1VSTCwgLS11cmwgQUxURVJOQVRFX1VSTAogICAgICAgICAgICAgICAgICAgICAgICBVc2UgQ0xJIGRlZmluZWQgdXJsIGluc3RlYWQgY29tcGlsZSB0aGUgdXJsIGZyb20gdGhlIEFQSSBkZWZpbml0aW9uLiBVc2VmdWwgZm9yIHRlc3RpbmcKICAtdCBURVNUX1JFU1VMVF9EU1QsIC0tdGVzdF9yZXBvcnQgVEVTVF9SRVNVTFRfRFNUCiAgICAgICAgICAgICAgICAgICAgICAgIEpVbml0IHRlc3QgcmVzdWx0IHhtbCBzYXZlIHBhdGgKICAtLWxvZyB7Y3JpdGljYWwsZmF0YWwsZXJyb3Isd2Fybix3YXJuaW5nLGluZm8sZGVidWcsbm90c2V0fQogICAgICAgICAgICAgICAgICAgICAgICBVc2UgZGlmZmVyZW50IGxvZyBsZXZlbCB0aGFuIHRoZSBkZWZhdWx0IFdBUk5JTkcKICAtLWJhc2ljX291dHB1dCBCQVNJQ19PVVRQVVQKICAgICAgICAgICAgICAgICAgICAgICAgVXNlIGJhc2ljIG91dHB1dCBmb3IgbG9nZ2luZyAodXNlZnVsIGlmIHJ1bm5pbmcgaW4gamVua2lucykuIEV4YW1wbGUgLS1iYXNpY19vdXRwdXQ9VHJ1ZQogIC0taGVhZGVycyBIRUFERVJTICAgICBIdHRwIHJlcXVlc3QgaGVhZGVycyBhZGRlZCB0byBhbGwgcmVxdWVzdC4gRXhhbXBsZTogJ1t7IkF1dGhvcml6YXRpb24iOiAiU3VwZXJTZWNyZXQifSwgeyJBdXRoMiI6ICJhc2QifV0nCgpgYGAKCiMjIFVzYWdlIGV4YW1wbGVzOgoKIyMjIEluc3RhbGxlZCBwYWNrYWdlCgpTdGFydCB0aGUgc2FtcGxlIGFwcGxpY2F0aW9uIChpbnN0YWxsIHRoZSBuZWNlc3NhcnkgcGFja2FnZXMgbGlzdGVkIGluIHRlc3QvcmVxdWlyZW1lbnRzX2Zvcl90ZXN0LnR4dCk6CgpgYGBzaGVsbAokIHB5dGhvbjMgdGVzdC90ZXN0X2FwcGxpY2F0aW9uLnB5CmBgYApTdGFydCB0aGUgZnV6emVyOgoKYGBgc2hlbGwKJCBBUElGdXp6ZXIgLXMgdGVzdC90ZXN0X2FwaS9vcGVuYXBpX3YyLmpzb24gLXUgaHR0cDovLzEyNy4wLjAuMTo1MDAwLyAtciAvdG1wL3JlcG9ydHMvIC0tbG9nIGRlYnVnIApgYGAKQ2hlY2sgdGhlIHJlcG9ydHM6CgpgYGBzaGVsbAokIGxzIC0xIC90bXAvcmVwb3J0cy8KYGBgClJlcG9ydCBleGFtcGxlOgoKYGBgc2hlbGwKJCBqc29uX3BwIDwgL3RtcC9yZXBvcnRzLzc5XzE1NzM5OTM0ODUuNTM5MTUxNy5qc29uCnsKICAgInJlc3BvbnNlIiA6ICJUZXN0IGFwcGxpY2F0aW9uIGV4Y2VwdGlvbjogaW52YWxpZCBsaXRlcmFsIGZvciBpbnQoKSB3aXRoIGJhc2UgMTA6ICcwXFx4MDBcXHgxMCciLAogICAic3ViX3JlcG9ydHMiIDogW10sCiAgICJwYXJzZWRfc3RhdHVzX2NvZGUiIDogNTAwLAogICAic3RhdGUiIDogIkNPTVBMRVRFRCIsCiAgICJ0ZXN0X251bWJlciIgOiA3OSwKICAgInJlcXVlc3RfYm9keSIgOiBudWxsLAogICAicmVhc29uIiA6ICJmYWlsZWQiLAogICAibmFtZSIgOiAidGFyZ2V0IiwKICAgInJlcXVlc3RfdXJsIiA6ICJodHRwOi8vMTI3LjAuMC4xOjUwMDAvZXhjZXB0aW9uLzBcdTAwMDBcdTAwMTAiLAogICAicmVxdWVzdF9tZXRob2QiIDogIkdFVCIsCiAgICJzdGF0dXMiIDogImZhaWxlZCIsCiAgICJyZXF1ZXN0X2hlYWRlcnMiIDogIntcIlVzZXItQWdlbnRcIjogXCJBUElGdXp6ZXJcIiwgXCJBY2NlcHQtRW5jb2RpbmdcIjogXCJnemlwLCBkZWZsYXRlXCIsIFwiQWNjZXB0XCI6IFwiKi8qXCIsIFwiQ29ubmVjdGlvblwiOiBcImtlZXAtYWxpdmVcIn0iCn0KYGBgCgojIyMgRG9ja2VyCgojIyMjIFRlc3RlZCBzZXJ2aWNlIHJ1bnMgb24gZG9ja2VyIGhvc3QKCk5vdGVzIAo+ICogVXNlICBodHRwOi8vaG9zdC5kb2NrZXIuaW50ZXJuYWwgaW5zdGVhZCBvZiBodHRwOi8vMTI3LjAuMC4xIG9yIGh0dHA6Ly9sb2NhbGhvc3QgaW4gdGhlIHJlZmVyZW5jZXMuIFJlYWQgW0RvY2tlciBjb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9kZXNrdG9wL25ldHdvcmtpbmcvI2ktd2FudC10by1jb25uZWN0LWZyb20tYS1jb250YWluZXItdG8tYS1zZXJ2aWNlLW9uLXRoZS1ob3N0KSBmb3IgZnVydGhlciBleHBsYW5hdGlvbgo+ICogWW91IG5lZWQgdG8gYXR0YWNoIGEgdm9sdW1lIGxpa2UgaW4gdGhpcyBleGFtcGxlIHRvIHNoYXJlIGZpbGVzIGFuZCBmb2xkZXJzIHdpdGggdGhlIGNvbnRhaW5lcjoKCmBgYHNoZWxsCmRvY2tlciBydW4gLS12b2x1bWUgcmVzdWx0czovcmVzdWx0cy8ga2lzc3BldGVyL2FwaWZ1enplciAtLXNyY191cmwgaHR0cDovL2hvc3QuZG9ja2VyLmludGVybmFsOjgwMDAvb3BlbmFwaS5qc29uIC0tdXJsIGh0dHA6Ly9ob3N0LmRvY2tlci5pbnRlcm5hbDo4MDAwIC0tdGVzdF9yZXBvcnQgL3Jlc3VsdHMvanVuaXQueG1sIC0tcmVwb3J0IC9yZXN1bHRzL3JlcG9ydC8gYGBgCmBgYAojIyMjIFRlc3RlZCBzZXJ2aWNlIHJ1bnMgaW4gb3RoZXIgZG9ja2VyIGNvbnRhaW5lcgpOb3RlcyAKPiAqIERlZmluZSBgLS1uZXRgIGF0IHN0YXJ0dXAgdG8gYXR0YWNoIHRoaXMgZG9ja2VyIHRvIGFuIGV4aXN0aW5nIG5ldHdvcmsuIFJlYWQgW0RvY2tlciBjb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9uZXR3b3JrL25ldHdvcmstdHV0b3JpYWwtc3RhbmRhbG9uZS8jdXNlLXVzZXItZGVmaW5lZC1icmlkZ2UtbmV0d29ya3MpIGZvciBmdXJ0aGVyIGV4cGxhbmF0aW9uCj4gKiBVc2UgIGh0dHA6Ly9DT05UQUlORVJOQU1FIGluc3RlYWQgb2YgaHR0cDovLzEyNy4wLjAuMSBvciBodHRwOi8vbG9jYWxob3N0IGluIHRoZSByZWZlcmVuY2VzLiAKPiAqIFlvdSBuZWVkIHRvIGF0dGFjaCBhIHZvbHVtZSBsaWtlIGluIHRoaXMgZXhhbXBsZSB0byBzaGFyZSBmaWxlcyBhbmQgZm9sZGVycyB3aXRoIHRoZSBjb250YWluZXI6CgpgYGBzaGVsbApkb2NrZXIgcnVuIC0tdm9sdW1lIHJlc3VsdHM6L3Jlc3VsdHMvIGtpc3NwZXRlci9hcGlmdXp6ZXIgLS1uZXQgZmFzdGFwaS1wZXJmb3JtYW5jZS1vcHRpbWl6YXRpb25fZGVmYXVsdCBraXNzcGV0ZXIvYXBpZnV6emVyIC0tc3JjX3VybCBodHRwOi8vZmFzdGFwaS1wZXJmb3JtYW5jZS1vcHRpbWl6YXRpb246ODAwMC9vcGVuYXBpLmpzb24gLXUgaHR0cDovL2Zhc3RhcGktcGVyZm9ybWFuY2Utb3B0aW1pemF0aW9uOjgwMDAgLS10ZXN0X3JlcG9ydCAvcmVzdWx0cy9qdW5pdC54bWwgLS1yZXBvcnQgL3Jlc3VsdHMvcmVwb3J0L2BgYApgYGAKCltBUEkgQmx1ZXByaW50XTogaHR0cHM6Ly9hcGlibHVlcHJpbnQub3JnLwpbU3dhZ2dlcl06IGh0dHA6Ly9zd2FnZ2VyLmlvLwpbT3BlbkFQSV06IGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYWJvdXQvCltHcmFwaFFMXTogaHR0cHM6Ly9ncmFwaHFsLm9yZy8K readmeEtag: '"3763bbba6ba5ba662de109a5882d73f11fdd92b9"' readmeLastModified: Tue, 16 Jul 2024 11:41:35 GMT repositoryId: 116009897 description: >- Fuzz test your application using your OpenAPI or Swagger API definition without coding created: '2018-01-02T11:49:13Z' updated: '2026-01-20T02:36:16Z' language: Python archived: false stars: 465 watchers: 7 forks: 69 owner: KissPeter logo: https://avatars.githubusercontent.com/u/19633417?v=4 license: GPL-3.0 repoEtag: '"ac39c7da14869cf027cf3672a477580c5d01553266491c699fc42bd7d3a0c72a"' repoLastModified: Tue, 20 Jan 2026 02:36:16 GMT foundInMaster: true id: bd38b4a53d7dcb21f05b494be14573e6 - source: https://openapi.tools/ name: Django REST Framework language: Python link: https://www.django-rest-framework.org/api-guide/schemas/ repository: https://github.com/encode/django-rest-framework source_description: > Automates generation of OpenAPI 3 description documents either as a static file (via CLI command) or a dynamic view within the Django REST Framework (DRF) application. v2: false v3: true repositoryMetadata: base64Readme: >- IyBbRGphbmdvIFJFU1QgZnJhbWV3b3JrXVtkb2NzXQoKWyFbYnVpbGQtc3RhdHVzLWltYWdlXV1bYnVpbGQtc3RhdHVzXQpbIVtjb3ZlcmFnZS1zdGF0dXMtaW1hZ2VdXVtjb2RlY292XQpbIVtweXBpLXZlcnNpb25dXVtweXBpXQoKKipBd2Vzb21lIHdlYi1icm93c2FibGUgV2ViIEFQSXMuKioKCkZ1bGwgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHByb2plY3QgaXMgYXZhaWxhYmxlIGF0IFtodHRwczovL3d3dy5kamFuZ28tcmVzdC1mcmFtZXdvcmsub3JnL11bZG9jc10uCgotLS0KCiMgT3ZlcnZpZXcKCkRqYW5nbyBSRVNUIGZyYW1ld29yayBpcyBhIHBvd2VyZnVsIGFuZCBmbGV4aWJsZSB0b29sa2l0IGZvciBidWlsZGluZyBXZWIgQVBJcy4KClNvbWUgcmVhc29ucyB5b3UgbWlnaHQgd2FudCB0byB1c2UgUkVTVCBmcmFtZXdvcms6CgoqIFRoZSBXZWIgYnJvd3NhYmxlIEFQSSBpcyBhIGh1Z2UgdXNhYmlsaXR5IHdpbiBmb3IgeW91ciBkZXZlbG9wZXJzLgoqIFtBdXRoZW50aWNhdGlvbiBwb2xpY2llc11bYXV0aGVudGljYXRpb25dIGluY2x1ZGluZyBvcHRpb25hbCBwYWNrYWdlcyBmb3IgW09BdXRoMWFdW29hdXRoMS1zZWN0aW9uXSBhbmQgW09BdXRoMl1bb2F1dGgyLXNlY3Rpb25dLgoqIFtTZXJpYWxpemF0aW9uXVtzZXJpYWxpemVyc10gdGhhdCBzdXBwb3J0cyBib3RoIFtPUk1dW21vZGVsc2VyaWFsaXplci1zZWN0aW9uXSBhbmQgW25vbi1PUk1dW3NlcmlhbGl6ZXItc2VjdGlvbl0gZGF0YSBzb3VyY2VzLgoqIEN1c3RvbWl6YWJsZSBhbGwgdGhlIHdheSBkb3duIC0ganVzdCB1c2UgW3JlZ3VsYXIgZnVuY3Rpb24tYmFzZWQgdmlld3NdW2Z1bmN0aW9udmlldy1zZWN0aW9uXSBpZiB5b3UgZG9uJ3QgbmVlZCB0aGUgW21vcmVdW2dlbmVyaWMtdmlld3NdIFtwb3dlcmZ1bF1bdmlld3NldHNdIFtmZWF0dXJlc11bcm91dGVyc10uCiogW0V4dGVuc2l2ZSBkb2N1bWVudGF0aW9uXVtkb2NzXSwgYW5kIFtncmVhdCBjb21tdW5pdHkgc3VwcG9ydF1bZ3JvdXBdLgoKKipCZWxvdyoqOiAqU2NyZWVuc2hvdCBmcm9tIHRoZSBicm93c2FibGUgQVBJKgoKIVtTY3JlZW5zaG90XVtpbWFnZV0KCi0tLS0KCiMgUmVxdWlyZW1lbnRzCgoqIFB5dGhvbiAzLjEwKwoqIERqYW5nbyA0LjIsIDUuMCwgNS4xLCA1LjIsIDYuMAoKV2UgKipoaWdobHkgcmVjb21tZW5kKiogYW5kIG9ubHkgb2ZmaWNpYWxseSBzdXBwb3J0IHRoZSBsYXRlc3QgcGF0Y2ggcmVsZWFzZSBvZgplYWNoIFB5dGhvbiBhbmQgRGphbmdvIHNlcmllcy4KCiMgSW5zdGFsbGF0aW9uCgpJbnN0YWxsIHVzaW5nIGBwaXBgLi4uCgogICAgcGlwIGluc3RhbGwgZGphbmdvcmVzdGZyYW1ld29yawoKQWRkIGAncmVzdF9mcmFtZXdvcmsnYCB0byB5b3VyIGBJTlNUQUxMRURfQVBQU2Agc2V0dGluZy4KCmBgYHB5dGhvbgpJTlNUQUxMRURfQVBQUyA9IFsKICAgICMgLi4uCiAgICAicmVzdF9mcmFtZXdvcmsiLApdCmBgYAoKIyBFeGFtcGxlCgpMZXQncyB0YWtlIGEgbG9vayBhdCBhIHF1aWNrIGV4YW1wbGUgb2YgdXNpbmcgUkVTVCBmcmFtZXdvcmsgdG8gYnVpbGQgYSBzaW1wbGUgbW9kZWwtYmFja2VkIEFQSSBmb3IgYWNjZXNzaW5nIHVzZXJzIGFuZCBncm91cHMuCgpTdGFydHVwIHVwIGEgbmV3IHByb2plY3QgbGlrZSBzby4uLgoKICAgIHBpcCBpbnN0YWxsIGRqYW5nbwogICAgcGlwIGluc3RhbGwgZGphbmdvcmVzdGZyYW1ld29yawogICAgZGphbmdvLWFkbWluIHN0YXJ0cHJvamVjdCBleGFtcGxlIC4KICAgIC4vbWFuYWdlLnB5IG1pZ3JhdGUKICAgIC4vbWFuYWdlLnB5IGNyZWF0ZXN1cGVydXNlcgoKCk5vdyBlZGl0IHRoZSBgZXhhbXBsZS91cmxzLnB5YCBtb2R1bGUgaW4geW91ciBwcm9qZWN0OgoKYGBgcHl0aG9uCmZyb20gZGphbmdvLmNvbnRyaWIuYXV0aC5tb2RlbHMgaW1wb3J0IFVzZXIKZnJvbSBkamFuZ28udXJscyBpbXBvcnQgaW5jbHVkZSwgcGF0aApmcm9tIHJlc3RfZnJhbWV3b3JrIGltcG9ydCByb3V0ZXJzLCBzZXJpYWxpemVycywgdmlld3NldHMKCgojIFNlcmlhbGl6ZXJzIGRlZmluZSB0aGUgQVBJIHJlcHJlc2VudGF0aW9uLgpjbGFzcyBVc2VyU2VyaWFsaXplcihzZXJpYWxpemVycy5IeXBlcmxpbmtlZE1vZGVsU2VyaWFsaXplcik6CiAgICBjbGFzcyBNZXRhOgogICAgICAgIG1vZGVsID0gVXNlcgogICAgICAgIGZpZWxkcyA9IFsidXJsIiwgInVzZXJuYW1lIiwgImVtYWlsIiwgImlzX3N0YWZmIl0KCgojIFZpZXdTZXRzIGRlZmluZSB0aGUgdmlldyBiZWhhdmlvci4KY2xhc3MgVXNlclZpZXdTZXQodmlld3NldHMuTW9kZWxWaWV3U2V0KToKICAgIHF1ZXJ5c2V0ID0gVXNlci5vYmplY3RzLmFsbCgpCiAgICBzZXJpYWxpemVyX2NsYXNzID0gVXNlclNlcmlhbGl6ZXIKCgojIFJvdXRlcnMgcHJvdmlkZSBhIHdheSBvZiBhdXRvbWF0aWNhbGx5IGRldGVybWluaW5nIHRoZSBVUkwgY29uZi4Kcm91dGVyID0gcm91dGVycy5EZWZhdWx0Um91dGVyKCkKcm91dGVyLnJlZ2lzdGVyKHIidXNlcnMiLCBVc2VyVmlld1NldCkKCiMgV2lyZSB1cCBvdXIgQVBJIHVzaW5nIGF1dG9tYXRpYyBVUkwgcm91dGluZy4KIyBBZGRpdGlvbmFsbHksIHdlIGluY2x1ZGUgbG9naW4gVVJMcyBmb3IgdGhlIGJyb3dzYWJsZSBBUEkuCnVybHBhdHRlcm5zID0gWwogICAgcGF0aCgiIiwgaW5jbHVkZShyb3V0ZXIudXJscykpLAogICAgcGF0aCgiYXBpLWF1dGgvIiwgaW5jbHVkZSgicmVzdF9mcmFtZXdvcmsudXJscyIsIG5hbWVzcGFjZT0icmVzdF9mcmFtZXdvcmsiKSksCl0KYGBgCgpXZSdkIGFsc28gbGlrZSB0byBjb25maWd1cmUgYSBjb3VwbGUgb2Ygc2V0dGluZ3MgZm9yIG91ciBBUEkuCgpBZGQgdGhlIGZvbGxvd2luZyB0byB5b3VyIGBzZXR0aW5ncy5weWAgbW9kdWxlOgoKYGBgcHl0aG9uCklOU1RBTExFRF9BUFBTID0gWwogICAgIyAuLi4gbWFrZSBzdXJlIHRvIGluY2x1ZGUgdGhlIGRlZmF1bHQgaW5zdGFsbGVkIGFwcHMgaGVyZS4KICAgICJyZXN0X2ZyYW1ld29yayIsCl0KClJFU1RfRlJBTUVXT1JLID0gewogICAgIyBVc2UgRGphbmdvJ3Mgc3RhbmRhcmQgYGRqYW5nby5jb250cmliLmF1dGhgIHBlcm1pc3Npb25zLAogICAgIyBvciBhbGxvdyByZWFkLW9ubHkgYWNjZXNzIGZvciB1bmF1dGhlbnRpY2F0ZWQgdXNlcnMuCiAgICAiREVGQVVMVF9QRVJNSVNTSU9OX0NMQVNTRVMiOiBbCiAgICAgICAgInJlc3RfZnJhbWV3b3JrLnBlcm1pc3Npb25zLkRqYW5nb01vZGVsUGVybWlzc2lvbnNPckFub25SZWFkT25seSIsCiAgICBdCn0KYGBgCgpUaGF0J3MgaXQsIHdlJ3JlIGRvbmUhCgogICAgLi9tYW5hZ2UucHkgcnVuc2VydmVyCgpZb3UgY2FuIG5vdyBvcGVuIHRoZSBBUEkgaW4geW91ciBicm93c2VyIGF0IGBodHRwOi8vMTI3LjAuMC4xOjgwMDAvYCwgYW5kIHZpZXcgeW91ciBuZXcgJ3VzZXJzJyBBUEkuIElmIHlvdSB1c2UgdGhlIGBMb2dpbmAgY29udHJvbCBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lciB5b3UnbGwgYWxzbyBiZSBhYmxlIHRvIGFkZCwgY3JlYXRlIGFuZCBkZWxldGUgdXNlcnMgZnJvbSB0aGUgc3lzdGVtLgoKWW91IGNhbiBhbHNvIGludGVyYWN0IHdpdGggdGhlIEFQSSB1c2luZyBjb21tYW5kIGxpbmUgdG9vbHMgc3VjaCBhcyBbYGN1cmxgXShodHRwczovL2N1cmwuaGF4eC5zZS8pLiBGb3IgZXhhbXBsZSwgdG8gbGlzdCB0aGUgdXNlcnMgZW5kcG9pbnQ6CgogICAgJCBjdXJsIC1IICdBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb247IGluZGVudD00JyAtdSBhZG1pbjpwYXNzd29yZCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvdXNlcnMvCiAgICBbCiAgICAgICAgewogICAgICAgICAgICAidXJsIjogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC91c2Vycy8xLyIsCiAgICAgICAgICAgICJ1c2VybmFtZSI6ICJhZG1pbiIsCiAgICAgICAgICAgICJlbWFpbCI6ICJhZG1pbkBleGFtcGxlLmNvbSIsCiAgICAgICAgICAgICJpc19zdGFmZiI6IHRydWUsCiAgICAgICAgfQogICAgXQoKT3IgdG8gY3JlYXRlIGEgbmV3IHVzZXI6CgogICAgJCBjdXJsIC1YIFBPU1QgLWQgdXNlcm5hbWU9bmV3IC1kIGVtYWlsPW5ld0BleGFtcGxlLmNvbSAtZCBpc19zdGFmZj1mYWxzZSAtSCAnQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uOyBpbmRlbnQ9NCcgLXUgYWRtaW46cGFzc3dvcmQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3VzZXJzLwogICAgewogICAgICAgICJ1cmwiOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3VzZXJzLzIvIiwKICAgICAgICAidXNlcm5hbWUiOiAibmV3IiwKICAgICAgICAiZW1haWwiOiAibmV3QGV4YW1wbGUuY29tIiwKICAgICAgICAiaXNfc3RhZmYiOiBmYWxzZSwKICAgIH0KCiMgRG9jdW1lbnRhdGlvbiAmIFN1cHBvcnQKCkZ1bGwgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHByb2plY3QgaXMgYXZhaWxhYmxlIGF0IFtodHRwczovL3d3dy5kamFuZ28tcmVzdC1mcmFtZXdvcmsub3JnL11bZG9jc10uCgpGb3IgcXVlc3Rpb25zIGFuZCBzdXBwb3J0LCB1c2UgdGhlIFtSRVNUIGZyYW1ld29yayBkaXNjdXNzaW9uIGdyb3VwXVtncm91cF0sIG9yIGAjcmVzdGZyYW1ld29ya2Agb24gbGliZXJhLmNoYXQgSVJDLgoKIyBTZWN1cml0eQoKUGxlYXNlIHNlZSB0aGUgW3NlY3VyaXR5IHBvbGljeV1bc2VjdXJpdHktcG9saWN5XS4KCltidWlsZC1zdGF0dXMtaW1hZ2VdOiBodHRwczovL2dpdGh1Yi5jb20vZW5jb2RlL2RqYW5nby1yZXN0LWZyYW1ld29yay9hY3Rpb25zL3dvcmtmbG93cy9tYWluLnltbC9iYWRnZS5zdmcKW2J1aWxkLXN0YXR1c106IGh0dHBzOi8vZ2l0aHViLmNvbS9lbmNvZGUvZGphbmdvLXJlc3QtZnJhbWV3b3JrL2FjdGlvbnMvd29ya2Zsb3dzL21haW4ueW1sCltjb3ZlcmFnZS1zdGF0dXMtaW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRodWIvZW5jb2RlL2RqYW5nby1yZXN0LWZyYW1ld29yay9tYWluLnN2ZwpbY29kZWNvdl06IGh0dHBzOi8vY29kZWNvdi5pby9naXRodWIvZW5jb2RlL2RqYW5nby1yZXN0LWZyYW1ld29yaz9icmFuY2g9bWFpbgpbcHlwaS12ZXJzaW9uXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvZGphbmdvcmVzdGZyYW1ld29yay5zdmcKW3B5cGldOiBodHRwczovL3B5cGkub3JnL3Byb2plY3QvZGphbmdvcmVzdGZyYW1ld29yay8KW2dyb3VwXTogaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8/ZnJvbWdyb3VwcyMhZm9ydW0vZGphbmdvLXJlc3QtZnJhbWV3b3JrCgpbZnVuZGluZ106IGh0dHBzOi8vZnVuZC5kamFuZ28tcmVzdC1mcmFtZXdvcmsub3JnL3RvcGljcy9mdW5kaW5nLwpbc3BvbnNvcnNdOiBodHRwczovL2Z1bmQuZGphbmdvLXJlc3QtZnJhbWV3b3JrLm9yZy90b3BpY3MvZnVuZGluZy8jb3VyLXNwb25zb3JzCgpbb2F1dGgxLXNlY3Rpb25dOiBodHRwczovL3d3dy5kamFuZ28tcmVzdC1mcmFtZXdvcmsub3JnL2FwaS1ndWlkZS9hdXRoZW50aWNhdGlvbi8jZGphbmdvLXJlc3QtZnJhbWV3b3JrLW9hdXRoCltvYXV0aDItc2VjdGlvbl06IGh0dHBzOi8vd3d3LmRqYW5nby1yZXN0LWZyYW1ld29yay5vcmcvYXBpLWd1aWRlL2F1dGhlbnRpY2F0aW9uLyNkamFuZ28tb2F1dGgtdG9vbGtpdApbc2VyaWFsaXplci1zZWN0aW9uXTogaHR0cHM6Ly93d3cuZGphbmdvLXJlc3QtZnJhbWV3b3JrLm9yZy9hcGktZ3VpZGUvc2VyaWFsaXplcnMvI3NlcmlhbGl6ZXJzClttb2RlbHNlcmlhbGl6ZXItc2VjdGlvbl06IGh0dHBzOi8vd3d3LmRqYW5nby1yZXN0LWZyYW1ld29yay5vcmcvYXBpLWd1aWRlL3NlcmlhbGl6ZXJzLyNtb2RlbHNlcmlhbGl6ZXIKW2Z1bmN0aW9udmlldy1zZWN0aW9uXTogaHR0cHM6Ly93d3cuZGphbmdvLXJlc3QtZnJhbWV3b3JrLm9yZy9hcGktZ3VpZGUvdmlld3MvI2Z1bmN0aW9uLWJhc2VkLXZpZXdzCltnZW5lcmljLXZpZXdzXTogaHR0cHM6Ly93d3cuZGphbmdvLXJlc3QtZnJhbWV3b3JrLm9yZy9hcGktZ3VpZGUvZ2VuZXJpYy12aWV3cy8KW3ZpZXdzZXRzXTogaHR0cHM6Ly93d3cuZGphbmdvLXJlc3QtZnJhbWV3b3JrLm9yZy9hcGktZ3VpZGUvdmlld3NldHMvCltyb3V0ZXJzXTogaHR0cHM6Ly93d3cuZGphbmdvLXJlc3QtZnJhbWV3b3JrLm9yZy9hcGktZ3VpZGUvcm91dGVycy8KW3NlcmlhbGl6ZXJzXTogaHR0cHM6Ly93d3cuZGphbmdvLXJlc3QtZnJhbWV3b3JrLm9yZy9hcGktZ3VpZGUvc2VyaWFsaXplcnMvClthdXRoZW50aWNhdGlvbl06IGh0dHBzOi8vd3d3LmRqYW5nby1yZXN0LWZyYW1ld29yay5vcmcvYXBpLWd1aWRlL2F1dGhlbnRpY2F0aW9uLwpbaW1hZ2VdOiBodHRwczovL3d3dy5kamFuZ28tcmVzdC1mcmFtZXdvcmsub3JnL2ltZy9xdWlja3N0YXJ0LnBuZwoKW2RvY3NdOiBodHRwczovL3d3dy5kamFuZ28tcmVzdC1mcmFtZXdvcmsub3JnLwpbc2VjdXJpdHktcG9saWN5XTogaHR0cHM6Ly9naXRodWIuY29tL2VuY29kZS9kamFuZ28tcmVzdC1mcmFtZXdvcmsvc2VjdXJpdHkvcG9saWN5Cg== readmeEtag: '"f875f65dd65e244aff200dfcc120d70c3fcb87b7"' readmeLastModified: Fri, 05 Dec 2025 12:01:25 GMT repositoryId: 1431547 description: Web APIs for Django. 🎸 created: '2011-03-02T17:13:56Z' updated: '2026-02-06T04:32:07Z' language: Python archived: false stars: 29857 watchers: 607 forks: 7063 owner: encode logo: https://avatars.githubusercontent.com/u/19159390?v=4 license: NOASSERTION repoEtag: '"28b7808305d74fab8ed0e721bb335c043395feade6734ac216abae4463282ae5"' repoLastModified: Fri, 06 Feb 2026 04:32:07 GMT foundInMaster: true id: fb8994c078a380cc3510b024f6ed1202 category: Server Implementations - source: https://openapi.tools/ name: RESTest category: Testing language: Java source_description: > RESTest is a framework for automated black-box testing of RESTful web APIs. It follows a model-based approach, where test cases are automatically derived from the OpenAPI description document (OAS) of the API under test. v2: true v3: true v3_1: false link: https://github.com/isa-group/RESTest repository: https://github.com/isa-group/restest repositoryMetadata: base64Readme: >- PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9pc2EtZ3JvdXAvUkVTVGVzdC9ibG9iL21hc3Rlci9SRVNUTG9nb19CbGFjay5wbmc/cmF3PXRydWUiIGFsdD0iUkVTVGVzdCBMb2dvIiB3aWR0aD0iMjAwcHgiLz4KClshW01hdmVuIENlbnRyYWxdKGh0dHBzOi8vbWF2ZW4tYmFkZ2VzLmhlcm9rdWFwcC5jb20vbWF2ZW4tY2VudHJhbC9lcy51cy5pc2EvcmVzdGVzdC9iYWRnZS5zdmcpXShodHRwczovL21hdmVuLWJhZGdlcy5oZXJva3VhcHAuY29tL21hdmVuLWNlbnRyYWwvZXMudXMuaXNhL3Jlc3Rlc3QpClshW2phdmFkb2NdKGh0dHBzOi8vamF2YWRvYy5pby9iYWRnZTIvZXMudXMuaXNhL3Jlc3Rlc3QvamF2YWRvYy5zdmcpXShodHRwczovL2phdmFkb2MuaW8vZG9jL2VzLnVzLmlzYS9yZXN0ZXN0KQo8IS0tClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvaXNhLWdyb3VwL1JFU1Rlc3Quc3ZnP3N0eWxlPXN2ZyldKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL2lzYS1ncm91cC9SRVNUZXN0KQpbIVtUZXN0IGNvdmVyYWdlXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1pc2EtZ3JvdXBfUkVTVGVzdCZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vY29tcG9uZW50X21lYXN1cmVzP2lkPWlzYS1ncm91cF9SRVNUZXN0Jm1ldHJpYz1Db3ZlcmFnZSkKWyFbTWFpbnRhaW5hYmlsaXR5XShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1pc2EtZ3JvdXBfUkVTVGVzdCZtZXRyaWM9c3FhbGVfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2NvbXBvbmVudF9tZWFzdXJlcz9pZD1pc2EtZ3JvdXBfUkVTVGVzdCZtZXRyaWM9TWFpbnRhaW5hYmlsaXR5KQpbIVtSZWxpYWJpbGl0eV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9aXNhLWdyb3VwX1JFU1Rlc3QmbWV0cmljPXJlbGlhYmlsaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9jb21wb25lbnRfbWVhc3VyZXM/aWQ9aXNhLWdyb3VwX1JFU1Rlc3QmbWV0cmljPVJlbGlhYmlsaXR5KQpbIVtTZWN1cml0eV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9aXNhLWdyb3VwX1JFU1Rlc3QmbWV0cmljPXNlY3VyaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9jb21wb25lbnRfbWVhc3VyZXM/aWQ9aXNhLWdyb3VwX1JFU1Rlc3QmbWV0cmljPVNlY3VyaXR5KQotLT4KClJFU1Rlc3QgaXMgYSBmcmFtZXdvcmsgZm9yIGF1dG9tYXRlZCBibGFjay1ib3ggdGVzdGluZyBvZiBSRVNUZnVsIHdlYiBBUElzLiBJdCBmb2xsb3dzIGEgbW9kZWwtYmFzZWQgYXBwcm9hY2gsIHdoZXJlIHRlc3QgY2FzZXMgYXJlIGF1dG9tYXRpY2FsbHkgZGVyaXZlZCBmcm9tIHRoZSBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uIChPQVMpXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKSBvZiB0aGUgQVBJIHVuZGVyIHRlc3QuIE5vIGFjY2VzcyB0byB0aGUgc291cmNlIGNvZGUgaXMgcmVxdWlyZWQsIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHRlc3QgQVBJcyB3cml0dGVuIGluIGFueSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgcnVubmluZyBpbiBsb2NhbCBvciByZW1vdGUgc2VydmVycy4KCiMjIEluZGV4CjEuIFtSRVNUZXN0IFdpa2ldKGh0dHBzOi8vZ2l0aHViLmNvbS9pc2EtZ3JvdXAvUkVTVGVzdCNyZXN0ZXN0LXdpa2kpCgoyLiBbUXVpY2sgZXhhbXBsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9pc2EtZ3JvdXAvUkVTVGVzdCNxdWljay1leGFtcGxlcykKICAgMS4gW1VzaW5nIHRoZSBzeXN0ZW0gcHJvZ3JhbW1hdGljYWxseV0oaHR0cHM6Ly9naXRodWIuY29tL2lzYS1ncm91cC9SRVNUZXN0I3VzaW5nLXRoZS1zeXN0ZW0tcHJvZ3JhbW1hdGljYWxseSkKICAgICAgMS4gW0dlbmVyYXRpbmcgdGVzdCBjYXNlc10oaHR0cHM6Ly9naXRodWIuY29tL2lzYS1ncm91cC9SRVNUZXN0I2dlbmVyYXRpbmctdGVzdC1jYXNlcykKICAgICAgMi4gW0dlbmVyYXRpbmcgYW5kIHJ1bm5pbmcgdGVzdCBjYXNlc10oaHR0cHM6Ly9naXRodWIuY29tL2lzYS1ncm91cC9SRVNUZXN0I2dlbmVyYXRpbmctYW5kLXJ1bm5pbmctdGVzdC1jYXNlcykKICAgICAgMy4gW0dlbmVyYXRpbmcgYW5kIHJ1bm5pbmcgdGVzdCBjYXNlc10oaHR0cHM6Ly9naXRodWIuY29tL2lzYS1ncm91cC9SRVNUZXN0I3J1bm5pbmctdGVzdC1jYXNlcykKICAgMi4gW1VzaW5nIHRoZSBzeXN0ZW0gdmlhIHRoZSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlXShodHRwczovL2dpdGh1Yi5jb20vaXNhLWdyb3VwL1JFU1Rlc3QjdXNpbmctdGhlLXN5c3RlbS12aWEtdGhlLWNvbW1hbmQtbGluZS1pbnRlcmZhY2UpCiAgICAgIDEuIFtHZW5lcmF0ZSwgRXhlY3V0ZSwgYW5kIEdlbmVyYXRlIFJlcG9ydHMgYmFzZWQgb24gT3BlbkFQSSBzcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vaXNhLWdyb3VwL1JFU1Rlc3QjZ2VuZXJhdGUsLWV4ZWN1dGUsLWFuZC1nZW5lcmF0ZS1yZXBvcnRzLWJhc2VkLW9uLW9wZW5hcGktc3BlY2lmaWNhdGlvbikKICAgICAgMi4gW0NyZWF0ZSBhIFRlc3QgQ29uZmlndXJhdGlvbiBGaWxlXShodHRwczovL2dpdGh1Yi5jb20vaXNhLWdyb3VwL1JFU1Rlc3QjY3JlYXRlLWEtdGVzdC1jb25maWd1cmF0aW9uLWZpbGUpCiAgICAgIDMuIFtHZW5lcmF0ZSBUZXN0IENhc2VzXShodHRwczovL2dpdGh1Yi5jb20vaXNhLWdyb3VwL1JFU1Rlc3QjZ2VuZXJhdGUtdGVzdC1jYXNlcykKICAgICAgNC4gW0V4ZWN1dGUgVGVzdCBDYXNlc10oaHR0cHM6Ly9naXRodWIuY29tL2lzYS1ncm91cC9SRVNUZXN0I2V4ZWN1dGUtdGVzdC1jYXNlcykKICAgICAgNS4gW0dlbmVyYXRlIGFuZCBFeGVjdXRlIFRlc3QgQ2FzZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9pc2EtZ3JvdXAvUkVTVGVzdCNnZW5lcmF0ZS1hbmQtZXhlY3V0ZS10ZXN0LWNhc2VzKQozLiBbSG93IGRvZXMgaXQgd29yaz9dKGh0dHBzOi8vZ2l0aHViLmNvbS9pc2EtZ3JvdXAvUkVTVGVzdCNob3ctZG9lcy1pdC13b3JrKQo0LiBbV2hhdCBjYW4gSSBkbyB3aXRoIFJFU1Rlc3Q/XShodHRwczovL2dpdGh1Yi5jb20vaXNhLWdyb3VwL1JFU1Rlc3Qjd2hhdC1jYW4taS1kby13aXRoLXJlc3Rlc3QpCjUuIFtSdW5uaW5nIFJFU1Rlc3QgYXMgYSBKQVJdKGh0dHBzOi8vZ2l0aHViLmNvbS9pc2EtZ3JvdXAvUkVTVGVzdCNydW5uaW5nLXJlc3Rlc3QtYXMtYS1qYXIpCiAgIDEuIFtPcHRpb24gMTogQnVpbGQgUkVTVGVzdCBmcm9tIHNvdXJjZV0oaHR0cHM6Ly9naXRodWIuY29tL2lzYS1ncm91cC9SRVNUZXN0I29wdGlvbi0xLWJ1aWxkLXJlc3Rlc3QtZnJvbS1zb3VyY2UpCiAgIDIuIFtPcHRpb24gMjogRG93bmxvYWQgdGhlIGxhdGVzdCByZWxlYXNlXShodHRwczovL2dpdGh1Yi5jb20vaXNhLWdyb3VwL1JFU1Rlc3Qjb3B0aW9uLTItZG93bmxvYWQtdGhlLWxhdGVzdC1yZWxlYXNlKQo2LiBbQ2l0aW5nIFJFU1Rlc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9pc2EtZ3JvdXAvUkVTVGVzdCNjaXRpbmctcmVzdGVzdCkKNy4gW0xpY2Vuc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9pc2EtZ3JvdXAvUkVTVGVzdCNsaWNlbnNlKQogICAxLiBbSWNvbiBjcmVkaXRzXShodHRwczovL2dpdGh1Yi5jb20vaXNhLWdyb3VwL1JFU1Rlc3QjaWNvbi1jcmVkaXRzKQoKIyMgUkVTVGVzdCBXaWtpCkluIHRoaXMgcGFnZSB5b3UgY2FuIGZpbmQgYSBicmllZiBkZXNjcmlwdGlvbiBvZiBob3cgUkVTVGVzdCB3b3JrcyBhbmQgYW4gaWxsdXN0cmF0aW5nIGV4YW1wbGUuIElmIHlvdSB3YW50IHRvIHJlYWQgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHZpc2l0IHRoZSBbV2lraV0oaHR0cHM6Ly9naXRodWIuY29tL2lzYS1ncm91cC9SRVNUZXN0L3dpa2kpLgoKCgoKIyMgUXVpY2sgZXhhbXBsZXM6CgojIyMgVXNpbmcgdGhlIHN5c3RlbSBwcm9ncmFtbWF0aWNhbGx5CgojIyMjIEdlbmVyYXRpbmcgdGVzdCBjYXNlcyAKCkluIHRoaXMgZXhhbXBsZSwgd2UgaWxsdXN0cmF0ZSBob3cgdG8gZ2VuZXJhdGUgYSBzZXQgb2YgdGVzdCBjYXNlcyB1c2luZyB0aGUgQ29uc3RyYWludC1CYXNlZCB0ZXN0IGNhc2UgZ2VuZXJhdG9yIGFuZCB3cml0ZSB0aGVtIHRvIGEgZmlsZSB1c2luZyB0aGUgUkVTVEFzc3VyZWQgd3JpdGVyLiBUZXN0IGNhc2VzIGFyZSBnZW5lcmF0ZWQgYnkgcmFuZG9tbHkgc2VsZWN0aW5nIHZhbHVlcyBmb3IgZWFjaCBpbnB1dCBwYXJhbWV0ZXIsIGVuc3VyaW5nIHRoYXQgZGVwZW5kZW5jaWVzIGJldHdlZW4gcGFyYW1ldGVycyBhcmUgbWV0IChvciBpbnRlbnRpb25hbGx5IHZpb2xhdGVkKS4gVGhpcyBpcyBtYWRlIHBvc3NpYmxlIHRocm91Z2ggdGhlIHVzZSBvZiBhIGNvbnN0cmFpbnQgc29sdmVyIChDaG9jbykgYW5kIElETCwgYSBkb21haW4tc3BlY2lmaWMgbGFuZ3VhZ2UgZm9yIHNwZWNpZnlpbmcgZGVwZW5kZW5jaWVzIGJldHdlZW4gcGFyYW1ldGVycyBhcyBwYXJ0IG9mIHRoZSBPQVMgc3BlY2lmaWNhdGlvbi4KClRoZSBjb21wbGV0ZSBjb2RlIG9mIHRoZSBleGFtcGxlIGlzIHByb3ZpZGVkIGFib3ZlLgoKYGBgamF2YSAKcHVibGljIGNsYXNzIEV4M19DQlRHZW5lcmF0aW9uIHsKCiAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBwcm9wZXJ0eUZpbGVQYXRoPSJzcmMvbWFpbi9yZXNvdXJjZXMvRXhhbXBsZXMvRXgzX0NCVEdlbmVyYXRpb24vdXNlcl9jb25maWcucHJvcGVydGllcyI7IAkJLy8gUGF0aCB0byB1c2VyIHByb3BlcnRpZXMgZmlsZSB3aXRoIGNvbmZpZ3VyYXRpb24gb3B0aW9ucwoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBSRVNUZXN0RXhjZXB0aW9uIHsKICAgICAgICAvLyBMb2FkIHByb3BlcnRpZXMKICAgICAgICBSRVNUZXN0TG9hZGVyIGxvYWRlciA9IG5ldyBSRVNUZXN0TG9hZGVyKHByb3BlcnR5RmlsZVBhdGgpOwoKICAgICAgICAvLyBDcmVhdGUgdGVzdCBjYXNlIGdlbmVyYXRvcgogICAgICAgIENvbnN0cmFpbnRCYXNlZFRlc3RDYXNlR2VuZXJhdG9yIGdlbmVyYXRvciA9IChDb25zdHJhaW50QmFzZWRUZXN0Q2FzZUdlbmVyYXRvcikgbG9hZGVyLmNyZWF0ZUdlbmVyYXRvcigpOwogICAgICAgIENvbGxlY3Rpb248VGVzdENhc2U+IHRlc3RDYXNlcyA9IGdlbmVyYXRvci5nZW5lcmF0ZSgpOwoKICAgICAgICAvLyBDcmVhdGUgdGFyZ2V0IGRpcmVjdG9yeSBmb3IgdGVzdCBjYXNlcyBpZiBpdCBkb2VzIG5vdCBleGlzdAogICAgICAgIGNyZWF0ZURpcihsb2FkZXIuZ2V0VGFyZ2V0RGlySmF2YSgpKTsKCiAgICAgICAgLy8gV3JpdGUgKFJlc3RBc3N1cmVkKSB0ZXN0IGNhc2VzCiAgICAgICAgUkVTVEFzc3VyZWRXcml0ZXIgd3JpdGVyID0gKFJFU1RBc3N1cmVkV3JpdGVyKSBsb2FkZXIuY3JlYXRlV3JpdGVyKCk7CiAgICAgICAgd3JpdGVyLndyaXRlKHRlc3RDYXNlcyk7CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0ZXN0Q2FzZXMuc2l6ZSgpICsgIiB0ZXN0IGNhc2VzIGdlbmVyYXRlZCBhbmQgd3JpdHRlbiB0byAiICsgbG9hZGVyLmdldFRhcmdldERpckphdmEoKSk7CiAgICB9Cn0KCmBgYAoKVGhpcyBjb2RlIGRlbW9uc3RyYXRlcyBob3cgdG8gbG9hZCB0aGUgcHJvcGVydGllcywgY3JlYXRlIGEgY29uc3RyYWludC1iYXNlZCB0ZXN0IGNhc2UgZ2VuZXJhdG9yLCBnZW5lcmF0ZSB0ZXN0IGNhc2VzLCBhbmQgd3JpdGUgdGhlbSB1c2luZyB0aGUgUkVTVEFzc3VyZWQgd3JpdGVyLiBOb3csIGxldCdzIGV4YW1pbmUgb25lIG9mIHRoZSB0ZXN0IGNhc2VzIGdlbmVyYXRlZCB1c2luZyBSRVNUQXNzdXJlZC4KYGBgamF2YQoKaW1wb3J0IGlvLnJlc3Rhc3N1cmVkLlJlc3RBc3N1cmVkOwppbXBvcnQgaW8ucmVzdGFzc3VyZWQucmVzcG9uc2UuUmVzcG9uc2U7CmltcG9ydCBvcmcuanVuaXQuVGVzdDsKaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmZhaWw7CgpwdWJsaWMgY2xhc3MgRXgzX0NCVEdlbmVyYXRpb24gewoKICAgLy8gLi4uIFByZXZpb3VzIGNvZGUgLi4uCgogICBAVGVzdAogICBwdWJsaWMgdm9pZCB0ZXN0X3FlYzRuNGN1eXZjal9nZXRNdWx0aUhvdGVsT2ZmZXJzKCkgewogICAgICBTdHJpbmcgdGVzdFJlc3VsdElkID0gInRlc3RfcWVjNG40Y3V5dmNqX2dldE11bHRpSG90ZWxPZmZlcnMiOwoKICAgICAgLy8gRmlsdGVyIHNldHRpbmdzIGZvciBzcGVjaWZpYyB0ZXN0IGNhc2UKICAgICAgbm9taW5hbE9yRmF1bHR5VGVzdENhc2VGaWx0ZXIudXBkYXRlRmF1bHR5RGF0YSh0cnVlLCB0cnVlLCAiaW5kaXZpZHVhbF9wYXJhbWV0ZXJfY29uc3RyYWludDpWaW9sYXRlZCAnbWluJyBjb25zdHJhaW50IG9mIGludGVnZXIgcGFyYW1ldGVyIHJhZGl1cyIpOwogICAgICBzdGF0dXNDb2RlNVhYRmlsdGVyLnVwZGF0ZUZhdWx0eURhdGEodHJ1ZSwgdHJ1ZSwgImluZGl2aWR1YWxfcGFyYW1ldGVyX2NvbnN0cmFpbnQ6VmlvbGF0ZWQgJ21pbicgY29uc3RyYWludCBvZiBpbnRlZ2VyIHBhcmFtZXRlciByYWRpdXMiKTsKICAgICAgY3N2RmlsdGVyLnNldFRlc3RSZXN1bHRJZCh0ZXN0UmVzdWx0SWQpOwogICAgICBzdGF0dXNDb2RlNVhYRmlsdGVyLnNldFRlc3RSZXN1bHRJZCh0ZXN0UmVzdWx0SWQpOwogICAgICBub21pbmFsT3JGYXVsdHlUZXN0Q2FzZUZpbHRlci5zZXRUZXN0UmVzdWx0SWQodGVzdFJlc3VsdElkKTsKICAgICAgdmFsaWRhdGlvbkZpbHRlci5zZXRUZXN0UmVzdWx0SWQodGVzdFJlc3VsdElkKTsKCiAgICAgIHRyeSB7CiAgICAgICAgIC8vIEJ1aWxkIGFuZCBzZW5kIHJlcXVlc3QgdXNpbmcgUmVzdEFzc3VyZWQKICAgICAgICAgUmVzcG9uc2UgcmVzcG9uc2UgPSBSZXN0QXNzdXJlZAogICAgICAgICAgICAgICAgIC5naXZlbigpCiAgICAgICAgICAgICAgICAgLnF1ZXJ5UGFyYW0oInBhZ2VbbGltaXRdIiwgIjI1IikKICAgICAgICAgICAgICAgICAucXVlcnlQYXJhbSgiYW1lbml0aWVzIiwgIkJBQlktU0lUVElORyxBSVJfQ09ORElUSU9OSU5HIikKICAgICAgICAgICAgICAgICAucXVlcnlQYXJhbSgiaG90ZWxJZHMiLCAiSFNGRUxBQUYiKQogICAgICAgICAgICAgICAgIC5xdWVyeVBhcmFtKCJyb29tUXVhbnRpdHkiLCAiNSIpCiAgICAgICAgICAgICAgICAgLnF1ZXJ5UGFyYW0oImNoYWlucyIsICJXVixFQyxXVyIpCiAgICAgICAgICAgICAgICAgLnF1ZXJ5UGFyYW0oImluY2x1ZGVDbG9zZWQiLCAiZmFsc2UiKQogICAgICAgICAgICAgICAgIC5xdWVyeVBhcmFtKCJyYWRpdXMiLCAiLTMiKQogICAgICAgICAgICAgICAgIC5xdWVyeVBhcmFtKCJyYWRpdXNVbml0IiwgIk1JTEUiKQogICAgICAgICAgICAgICAgIC5xdWVyeVBhcmFtKCJjaGVja0luRGF0ZSIsICIyMDIzLTExLTE0IikKICAgICAgICAgICAgICAgICAucXVlcnlQYXJhbSgicmF0ZUNvZGVzIiwgIldLRCxTVFAsVFVSIikKICAgICAgICAgICAgICAgICAucXVlcnlQYXJhbSgicGF5bWVudFBvbGljeSIsICJERVBPU0lUIikKICAgICAgICAgICAgICAgICAuZmlsdGVyKGFsbHVyZUZpbHRlcikKICAgICAgICAgICAgICAgICAuZmlsdGVyKHN0YXR1c0NvZGU1WFhGaWx0ZXIpCiAgICAgICAgICAgICAgICAgLmZpbHRlcihub21pbmFsT3JGYXVsdHlUZXN0Q2FzZUZpbHRlcikKICAgICAgICAgICAgICAgICAuZmlsdGVyKHZhbGlkYXRpb25GaWx0ZXIpCiAgICAgICAgICAgICAgICAgLmZpbHRlcihjc3ZGaWx0ZXIpCiAgICAgICAgICAgICAgICAgLndoZW4oKQogICAgICAgICAgICAgICAgIC5nZXQoIi9zaG9wcGluZy9ob3RlbC1vZmZlcnMiKTsKCiAgICAgICAgIC8vIFZlcmlmeSB0aGUgcmVzcG9uc2UKICAgICAgICAgcmVzcG9uc2UudGhlbigpOwogICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVsIGNhc28gZGUgcHJ1ZWJhIHBhc8OzIGV4aXRvc2FtZW50ZS4iKTsKICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleCkgewogICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oZXguZ2V0TWVzc2FnZSgpKTsKICAgICAgICAgZmFpbChleC5nZXRNZXNzYWdlKCkpOwogICAgICB9CiAgIH0KfQpgYGAKCiMjIyMgUnVubmluZyB0ZXN0IGNhc2VzIApUaGlzIGV4YW1wbGUgd2lsbCBpbGx1c3RyYXRlIGhvdyB0byBleGVjdXRlIGEgc2V0IG9mIHRlc3RzIHRoYXQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgZ2VuZXJhdGVkIHVzaW5nIFJlc1Rlc3RFeGVjdXRvci4gQmVsb3cgaXMgYW4gZXhhbXBsZSBvZiBob3cgdGhpcyBwcm9jZXNzIHdvdWxkIGJlIGNhcnJpZWQgb3V0LgpgYGAKcHVibGljIGNsYXNzIEV4OF9UZXN0RXhlY3V0aW9uIHsKCgogICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJPUEVSVFlfRklMRV9QQVRIID0gInNyYy9tYWluL3Jlc291cmNlcy9FeGFtcGxlcy9FeDhfVGVzdEV4ZWN1dGlvbi91c2VyX2NvbmZpZy5wcm9wZXJ0aWVzIjsgCQkvLyBQYXRoIHRvIHVzZXIgcHJvcGVydGllcyBmaWxlIHdpdGggY29uZmlndXJhdGlvbiBvcHRpb25zCgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIFJFU1Rlc3RFeGNlcHRpb24gewoKICAgICAgICAvLyBFeGVjdXRlIHRlc3RzCgogICAgICAgIFJFU1Rlc3RFeGVjdXRvciBleGVjdXRvciA9IG5ldyBSRVNUZXN0RXhlY3V0b3IoUFJPUEVSVFlfRklMRV9QQVRIKTsKICAgICAgICBleGVjdXRvci5leGVjdXRlKCk7CgoKICAgIH0KfQpgYGAKCgojIyMjIEdlbmVyYXRpbmcgYW5kIHJ1bm5pbmcgdGVzdCBjYXNlcwpJbiB0aGlzIGV4YW1wbGUsIHdlIHdpbGwgZXhwbG9yZSB0aGUgZ2VuZXJhdGlvbiBhbmQgZXhlY3V0aW9uIG9mIHRlc3QgY2FzZXMgdXNpbmcgUkVTVGVzdFJ1bm5lciwgYSB0b29sIHRoYXQgZW5hYmxlcyB0aGUgY3JlYXRpb24gb2YgYW4gYXV0b21hdGVkIHdvcmtmbG93IHRvIG1hbmFnZSB0aGUgZW50aXJlIHRlc3RpbmcgcHJvY2Vzcy4gQmVsb3cgaXMgYW4gZXhhbXBsZSBpbGx1c3RyYXRpbmcgaG93IHRoaXMgd29ya2Zsb3cgd291bGQgYmUgZXhlY3V0ZWQuCgpgYGBqYXZhCgpwdWJsaWMgY2xhc3MgRXg5X0dlbmVyYXRpb25fRXhlY3V0aW9uIHsKCiAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BFUlRZX0ZJTEVfUEFUSCA9ICJzcmMvbWFpbi9yZXNvdXJjZXMvRXhhbXBsZXMvRXg5X0dlbmVyYXRpb25fRXhlY3V0aW9uL3VzZXJfY29uZmlnLnByb3BlcnRpZXMiOyAJCS8vIFBhdGggdG8gdXNlciBwcm9wZXJ0aWVzIGZpbGUgd2l0aCBjb25maWd1cmF0aW9uIG9wdGlvbnMKCiAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZ2dlciA9IExvZ2dlci5nZXRMb2dnZXIoRXg5X0dlbmVyYXRpb25fRXhlY3V0aW9uLmNsYXNzLmdldE5hbWUoKSk7CgogICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgUkVTVGVzdEV4Y2VwdGlvbiB7CiAgICAgIC8vIExvYWQgcHJvcGVydGllcwogICAgICBSRVNUZXN0UnVubmVyIHJ1bm5lciA9IG5ldyBSRVNUZXN0UnVubmVyKFBST1BFUlRZX0ZJTEVfUEFUSCk7CgogICAgICAvLyBSdW4gd29ya2Zsb3cKICAgICAgcnVubmVyLnJ1bigpOwoKICAgICAgaWYgKGxvZ2dlci5pc0xvZ2dhYmxlKGphdmEudXRpbC5sb2dnaW5nLkxldmVsLklORk8pKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlMSA9IFN0cmluZy5mb3JtYXQoIiVkIHRlc3QgY2FzZXMgZ2VuZXJhdGVkIGFuZCB3cml0dGVuIHRvICVzIiwgcnVubmVyLmdldE51bWJlck9mVGVzdENhc2VzKCksIHJ1bm5lci5nZXRUYXJnZXREaXJKYXZhKCkpOwogICAgICAgICBTdHJpbmcgbWVzc2FnZTIgPSBTdHJpbmcuZm9ybWF0KCJBbGx1cmUgcmVwb3J0IGF2YWlsYWJsZSBhdCAlcyIsIHJ1bm5lci5nZXRBbGx1cmVSZXBvcnRzUGF0aCgpKTsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UzID0gU3RyaW5nLmZvcm1hdCgiQ1NWIHN0YXRzIGF2YWlsYWJsZSBhdCAlcy8lcyIsIFByb3BlcnR5TWFuYWdlci5yZWFkUHJvcGVydHkoImRhdGEudGVzdHMuZGlyIiksIHJ1bm5lci5nZXRFeHBlcmltZW50TmFtZSgpKTsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2U0ID0gU3RyaW5nLmZvcm1hdCgiQ292ZXJhZ2UgcmVwb3J0IGF2YWlsYWJsZSBhdCAlcy8lcyIsIFByb3BlcnR5TWFuYWdlci5yZWFkUHJvcGVydHkoImRhdGEuY292ZXJhZ2UuZGlyIiksIHJ1bm5lci5nZXRFeHBlcmltZW50TmFtZSgpKTsKICAgICAgICAgbG9nZ2VyLmluZm8obWVzc2FnZTEpOwogICAgICAgICBsb2dnZXIuaW5mbyhtZXNzYWdlMik7CiAgICAgICAgIGxvZ2dlci5pbmZvKG1lc3NhZ2UzKTsKICAgICAgICAgbG9nZ2VyLmluZm8obWVzc2FnZTQpOwogICAgICB9CgogICB9Cn0KCgpgYGAKClVwb24gY29tcGxldGlvbiwgdGhlIHByb2dyYW0gd2lsbCBkaXNwbGF5IGRldGFpbGVkIGluZm9ybWF0aW9uIGluIHRoZSBjb25zb2xlLiBUaGlzIHdpbGwgaW5jbHVkZSB0aGUgbnVtYmVyIG9mIGdlbmVyYXRlZCB0ZXN0IGNhc2VzLCB0aGUgbG9jYXRpb24gb2YgQWxsdXJlIHJlcG9ydHMsIENTViBzdGF0aXN0aWNzLCBhbmQgdGhlIGNvdmVyYWdlIHJlcG9ydCwgcHJvdmlkaW5nIGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyBvZiB0aGUgcmVzdWx0cyBvYnRhaW5lZCBkdXJpbmcgdGhlIGV4ZWN1dGlvbi4KCkZpbmFsbHksIHRlc3QgZmFpbHVyZXMgYXJlIGNvbGxlY3RlZCBhbmQgdGhleSBjYW4gYmUgZWFzaWx5IHNwb3R0ZWQgYW5kIGFuYWx5emVkIGluIGEgdXNlci1mcmllbmRseSBHVUksIGJ1aWx0IHdpdGggW0FsbHVyZV0oaHR0cDovL2FsbHVyZS5xYXRvb2xzLnJ1LykuIFRvIGRvIHNvLCBvcGVuIHRoZSBmaWxlIGBzcmMvbWFpbi9yZXNvdXJjZXMvRXhhbXBsZXMvRXg4X0dlbmVyYXRpb25fRXhlY3V0aW9uL2FsbHVyZV9yZXBvcnQvYW5BcGlPZkljZUFuZEZpcmUvaW5kZXguaHRtbGAgaW4geW91ciBicm93c2VyOgoKIVtBbGx1cmVdKGRvY3MvaW1nLnBuZykKCiMjIyBVc2luZyB0aGUgc3lzdGVtIHZpYSB0aGUgY29tbWFuZC1saW5lIGludGVyZmFjZQoKVGhlIFJFU1Rlc3QgQ0xJIHN1cHBvcnRzIHZhcmlvdXMgb3B0aW9ucyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc3lzdGVtLiBIZXJlIGFyZSB0aGUgYXZhaWxhYmxlIG9wdGlvbnM6IAoKKiAqKi1oLCAtLWhlbHA6KiogRGlzcGxheSBoZWxwIGluZm9ybWF0aW9uIGFib3V0IGF2YWlsYWJsZSBvcHRpb25zIGFuZCB1c2FnZS4gCiogKiotbywgLS1vcGVuYXBpIFtwYXRoXToqKiBHZW5lcmF0ZXMgYW5kIGV4ZWN1dGVzIGEgc2VyaWVzIG9mIHRlc3RzIGJhc2VkIG9uIGFuIE9wZW5BUEkgZmlsZS4gCiogKiotYywgLS1jcmVhdGUtY29uZiBbcGF0aF06KiogR2VuZXJhdGUgYSB0ZXN0IGNvbmZpZ3VyYXRpb24gZmlsZSBmcm9tIHRoZSBwcm92aWRlZCBPcGVuQVBJIGZpbGUuIAoqICoqLWcsIC0tZ2VuZXJhdGUgW3BhdGhdOioqIEdlbmVyYXRlIHRlc3QgY2FzZXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24gZmlsZS4gCiogKiotZSwgLS1leGVjdXRlIFtwYXRoXToqKiBFeGVjdXRlIHRoZSB0ZXN0IGNhc2VzIGRlZmluZWQgaW4gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24gZmlsZS4gCgpIZXJlIGFyZSBzb21lIHF1aWNrIGV4YW1wbGVzIG9mIHVzaW5nIHRoZSBSRVNUZXN0IENMSTogCgojIyMjIEdlbmVyYXRlLCBFeGVjdXRlLCBhbmQgR2VuZXJhdGUgUmVwb3J0cyBiYXNlZCBvbiBPcGVuQVBJIHNwZWNpZmljYXRpb246IAoKYGBgCmphdmEgLWphciAuXHRhcmdldFxyZXN0ZXN0LWNsaS5qYXIgLW8gW3BhdGhfdG9fb2FzX2ZpbGVdIApgYGAKICAKCiMjIyMgQ3JlYXRlIGEgVGVzdCBDb25maWd1cmF0aW9uIEZpbGU6IAoKYGBgCmphdmEgLWphciAuXHRhcmdldFxyZXN0ZXN0LWNsaS5qYXIgLWMgW3BhdGhfdG9fb2FzX2ZpbGVdIApgYGAKICAKCiMjIyMgR2VuZXJhdGUgVGVzdCBDYXNlczogCgpgYGAKamF2YSAtamFyIC5cdGFyZ2V0XHJlc3Rlc3QtY2xpLmphciAtZyBbcGF0aF90b19wcm9wZXJ0aWVzX2ZpbGVdIApgYGAKICAKCiMjIyMgRXhlY3V0ZSBUZXN0IENhc2VzOiAKCmBgYApqYXZhIC1qYXIgLlx0YXJnZXRccmVzdGVzdC1jbGkuamFyIC1lIFtwYXRoX3RvX3Byb3BlcnRpZXNfZmlsZV0gCmBgYAogIAoKIyMjIyBHZW5lcmF0ZSBhbmQgRXhlY3V0ZSBUZXN0IENhc2VzOiAKCmBgYApqYXZhIC1qYXIgLlx0YXJnZXRccmVzdGVzdC1jbGkuamFyIC1nIC1lIFtwYXRoX3RvX3Byb3BlcnRpZXNfZmlsZV0KYGBgCgoKIyMgRGV0YWlsZWQgZXhhbXBsZQoKSW4gdGhpcyBzZWN0aW9uLCB3ZSB3aWxsIGRlbHZlIGludG8gYSBzcGVjaWZpYyBleGFtcGxlIHRvIGlsbHVzdHJhdGUgaW4gZGV0YWlsIGhvdyBSRVNURVNUIG9wZXJhdGVzLiBUaHJvdWdob3V0IHRoZSBmb2xsb3dpbmcgc3RlcHMsIHdlIHdpbGwgYnJlYWsgZG93biBhIHByYWN0aWNhbCBzY2VuYXJpbywgcHJvdmlkaW5nIHN0ZXAtYnktc3RlcCBleHBsYW5hdGlvbnMgb2YgaG93IHRoZSBzeXN0ZW0gZnVuY3Rpb25zLgoKSW4gdGhpcyBleGFtcGxlLCB3ZSB3aWxsIGNvbmR1Y3QgdGVzdHMgb24gdGhlIEljZSBhbmQgRmlyZSBBUEkgdXNpbmcgUkVTVGVzdC4gVG8gcGVyZm9ybSB0aGVzZSB0ZXN0cywgd2Ugd2lsbCByZWx5IG9uIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gb2YgdGhlIEFQSSwgd2hpY2ggaXMgYXZhaWxhYmxlIGF0IHRoZSBmb2xsb3dpbmcgW2xpbmtdKHNyYy9tYWluL3Jlc291cmNlcy9FeGFtcGxlcy9FeDEwX0l0ZXJhdGl2ZV9HZW5lcmF0aW9uX0V4ZWN1dGlvbi9zcGVjX2ljZWFuZGZpcmUueWFtbCkuCgpJbiB0aGUgbmV4dCBzdGVwLCB3ZSB3aWxsIHByb2NlZWQgdG8gb2J0YWluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCB3aWxsIGVuY29tcGFzcyBhbGwgdGhlIGVzc2VudGlhbCBzZXR0aW5ncyBmb3Igb3VyIHRlc3RzLiBUaGlzIGZpbGUgcGxheXMgYSBmdW5kYW1lbnRhbCByb2xlIGFzIGl0IHNldHMga2V5IHBhcmFtZXRlcnMsIHN1Y2ggYXMgdGhlIHR5cGVzIG9mIGdlbmVyYXRvcnMgdG8gdXNlLCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgdGhlIEljZSBhbmQgRmlyZSBBUEksIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIHRoZSBzdWNjZXNzZnVsIGV4ZWN1dGlvbiBvZiB0ZXN0cyB3aXRoIFJFU1Rlc3QuClRoaXMgaXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhpcyBleGFtcGxlOgoKYGBgeWFtbAotLS0KYXV0aDoKICByZXF1aXJlZDogdHJ1ZQogIHF1ZXJ5UGFyYW1zOiB7fQogIGhlYWRlclBhcmFtczoge30KICBhcGlLZXlzUGF0aDogbnVsbAogIGhlYWRlcnNQYXRoOiBudWxsCnRlc3RDb25maWd1cmF0aW9uOgogIG9wZXJhdGlvbnM6CiAgLSB0ZXN0UGF0aDogL2FwaQogICAgb3BlcmF0aW9uSWQ6IGdldFJvb3QKICAgIG1ldGhvZDogZ2V0CiAgICB0ZXN0UGFyYW1ldGVyczogbnVsbAogICAgZXhwZWN0ZWRSZXNwb25zZTogMjAwCiAgLSB0ZXN0UGF0aDogIi9hcGkvYm9va3Mve2Jvb2staWR9IgogICAgb3BlcmF0aW9uSWQ6IGZpbmRCb29rQnlJZAogICAgbWV0aG9kOiBnZXQKICAgIHRlc3RQYXJhbWV0ZXJzOgogICAgLSBuYW1lOiBib29rLWlkCiAgICAgIGluOiBwYXRoCiAgICAgIHdlaWdodDogbnVsbAogICAgICBnZW5lcmF0b3JzOgogICAgICAtIHR5cGU6IFJhbmRvbU51bWJlcgogICAgICAgIGdlblBhcmFtZXRlcnM6CiAgICAgICAgLSBuYW1lOiB0eXBlCiAgICAgICAgICB2YWx1ZXM6CiAgICAgICAgICAtIGludGVnZXIKICAgICAgICAgIG9iamVjdFZhbHVlczogbnVsbAogICAgICAgIC0gbmFtZTogbWluCiAgICAgICAgICB2YWx1ZXM6CiAgICAgICAgICAtIDEKICAgICAgICAgIG9iamVjdFZhbHVlczogbnVsbAogICAgICAgIC0gbmFtZTogbWF4CiAgICAgICAgICB2YWx1ZXM6CiAgICAgICAgICAtIDEwMAogICAgICAgICAgb2JqZWN0VmFsdWVzOiBudWxsCiAgICAgICAgdmFsaWQ6IHRydWUKICAgIGV4cGVjdGVkUmVzcG9uc2U6IDIwMAogIC0gdGVzdFBhdGg6ICIvYXBpL2NoYXJhY3RlcnMve2NoYXJhY3Rlci1pZH0iCiAgICBvcGVyYXRpb25JZDogZmluZENoYXJhY3RlckJ5SWQKICAgIG1ldGhvZDogZ2V0CiAgICB0ZXN0UGFyYW1ldGVyczoKICAgIC0gbmFtZTogY2hhcmFjdGVyLWlkCiAgICAgIGluOiBwYXRoCiAgICAgIHdlaWdodDogbnVsbAogICAgICBnZW5lcmF0b3JzOgogICAgICAtIHR5cGU6IFJhbmRvbU51bWJlcgogICAgICAgIGdlblBhcmFtZXRlcnM6CiAgICAgICAgLSBuYW1lOiB0eXBlCiAgICAgICAgICB2YWx1ZXM6CiAgICAgICAgICAtIGludGVnZXIKICAgICAgICAgIG9iamVjdFZhbHVlczogbnVsbAogICAgICAgIC0gbmFtZTogbWluCiAgICAgICAgICB2YWx1ZXM6CiAgICAgICAgICAtIDEKICAgICAgICAgIG9iamVjdFZhbHVlczogbnVsbAogICAgICAgIC0gbmFtZTogbWF4CiAgICAgICAgICB2YWx1ZXM6CiAgICAgICAgICAtIDEwMAogICAgICAgICAgb2JqZWN0VmFsdWVzOiBudWxsCiAgICAgICAgdmFsaWQ6IHRydWUKICAgIGV4cGVjdGVkUmVzcG9uc2U6IDIwMAogIC0gdGVzdFBhdGg6ICIvYXBpL2hvdXNlcy97aG91c2UtaWR9IgogICAgb3BlcmF0aW9uSWQ6IGZpbmRIb3VzZUJ5SWQKICAgIG1ldGhvZDogZ2V0CiAgICB0ZXN0UGFyYW1ldGVyczoKICAgIC0gbmFtZTogaG91c2UtaWQKICAgICAgaW46IHBhdGgKICAgICAgd2VpZ2h0OiBudWxsCiAgICAgIGdlbmVyYXRvcnM6CiAgICAgIC0gdHlwZTogUmFuZG9tTnVtYmVyCiAgICAgICAgZ2VuUGFyYW1ldGVyczoKICAgICAgICAtIG5hbWU6IHR5cGUKICAgICAgICAgIHZhbHVlczoKICAgICAgICAgIC0gaW50ZWdlcgogICAgICAgICAgb2JqZWN0VmFsdWVzOiBudWxsCiAgICAgICAgLSBuYW1lOiBtaW4KICAgICAgICAgIHZhbHVlczoKICAgICAgICAgIC0gMQogICAgICAgICAgb2JqZWN0VmFsdWVzOiBudWxsCiAgICAgICAgLSBuYW1lOiBtYXgKICAgICAgICAgIHZhbHVlczoKICAgICAgICAgIC0gMTAwCiAgICAgICAgICBvYmplY3RWYWx1ZXM6IG51bGwKICAgICAgICB2YWxpZDogdHJ1ZQogICAgZXhwZWN0ZWRSZXNwb25zZTogMjAwCgpgYGAKCgpUaGUgZm9sbG93aW5nIFtsaW5rXShzcmMvbWFpbi9qYXZhL2VzL3VzL2lzYS9yZXN0ZXN0L2V4YW1wbGVzL0V4Ml9DcmVhdGVUZXN0Q29uZi5qYXZhKSBwcm92aWRlcyBhbiBleGFtcGxlIG9mIGhvdyB3ZSBjYW4gb2J0YWluIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlLgoKT25jZSB3ZSBoYXZlIGJvdGggZmlsZXMsIHRoZSBPQVMgc3BlY2lmaWNhdGlvbiwgYW5kIHRoZSBjb25maWd1cmF0aW9uIGZpbGUsIHdlIHdpbGwgY3JlYXRlIGEgbmV3IC5wcm9wZXJ0aWVzIGZpbGUgaW4gd2hpY2ggd2Ugd2lsbCBzcGVjaWZ5IHRoZSBwYXRoIHdoZXJlIHRoZXNlIGZpbGVzIGFyZSBsb2NhdGVkLCBhbG9uZyB3aXRoIG90aGVyIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgZ2VuZXJhdGlvbiBhbmQgZXhlY3V0aW9uIG9mIHRlc3RzLiBUaGlzIGZpbGUgbG9va3MgbGlrZSB0aGUgZm9sbG93aW5nOgpgYGBgamF2YQoKIyBPQVMgc3BlY2lmaWNhdGlvbgpvYXMucGF0aD1zcmMvbWFpbi9yZXNvdXJjZXMvRXhhbXBsZXMvRXg5X0l0ZXJhdGl2ZV9HZW5lcmF0aW9uX0V4ZWN1dGlvbi9zcGVjX2ljZWFuZGZpcmUueWFtbAoKIyBUZXN0IGNvbmZpZ3VyYXRpb24gZmlsZQpjb25mLnBhdGg9c3JjL21haW4vcmVzb3VyY2VzL0V4YW1wbGVzL0V4OV9JdGVyYXRpdmVfR2VuZXJhdGlvbl9FeGVjdXRpb24vdGVzdF9jb25mLnlhbWwKCiMgRGlyZWN0b3J5IHdoZXJlIHRoZSB0ZXN0IGNhc2VzIHdpbGwgYmUgZ2VuZXJhdGVkCnRlc3QudGFyZ2V0LmRpcj1zcmMvZ2VuZXJhdGlvbi9qYXZhL2FuQXBpT2ZJY2VBbmRGaXJlCgojIFBhY2thZ2UgbmFtZQp0ZXN0LnRhcmdldC5wYWNrYWdlPWFuQXBpT2ZJY2VBbmRGaXJlCgojIEV4cGVyaW1lbnQgbmFtZSAoZm9yIG5hbWluZyByZWxhdGVkIGZvbGRlcnMgYW5kIGZpbGVzKQpleHBlcmltZW50Lm5hbWU9YW5BcGlPZkljZUFuZEZpcmUKCiMgU2V0IHRydWUgZm9yIHJ1bm5pbmcgdGhlIGdlbmVyYXRlZCB0ZXN0IGNhc2VzCmV4cGVyaW1lbnQuZXhlY3V0ZT10cnVlCgojIE5hbWUgb2YgdGhlIHRlc3QgY2xhc3MgdG8gYmUgZ2VuZXJhdGVkCnRlc3RjbGFzcy5uYW1lPUFuQXBpT2ZJY2VBbmRGaXJlVGVzdAoKIyBSYXRpbyBvZiBmYXVsdHkgdGVzdCBjYXNlcyB0byBiZSBnZW5lcmF0ZWQgZG9lIHRvIGJyb2tlbiBpbmRpdmlkdWFsIGRlcGVuZGVuY2llcyAoZXguIG1pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyKS4gSGVscGZ1bCBmb3IgbmVnYXRpdmUgdGVzdGluZwpmYXVsdHkucmF0aW89MC4wNQoKIyBOdW1iZXIgb2YgdGVzdCBjYXNlcyB0byBiZSBnZW5lcmF0ZWQgcGVyIG9wZXJhdGlvbgp0ZXN0c3Blcm9wZXJhdGlvbj01CgojIE1heGltdW0gbnVtYmVyIG9mIHRlc3QgY2FzZXMgdG8gYmUgZ2VuZXJhdGVkIChhcHByb3hpbWF0ZWx5KQpudW10b3RhbHRlc3RjYXNlcz0xMDAKCiMgRGVsYXkgYmV0d2VlbiByZXF1ZXN0cyBpbiBzZWNvbmRzICgtMSBmb3Igbm8gZGVsYXkpCmRlbGF5PTMwCgojIFNldCB0byB0cnVlIGZvciB2YWxpZGF0aW5nIHRoZSB0ZXN0IGNhc2VzIHdpdGggT0FTVmFsaWRhdG9yIGJlZm9yZSBleGVjdXRpbmcgdGhlbQp0ZXN0Y2FzZXMuY2hlY2s9dHJ1ZQoKCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgQ09OU1RSQUlOVC1CQVNFRCBURVNUSU5HIChDQlQpCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgojIFRlc3QgY2FzZSBnZW5lcmF0b3IKZ2VuZXJhdG9yPUNCVAoKIyBSYXRpbyBvZiBmYXVsdHkgdGVzdCBjYXNlcyB0byBnZW5lcmF0ZSBkdWUgdG8gdGhlIHZpb2xhdGlvbiBvZiBpbnRlci1wYXJhbWV0ZXIgZGVwZW5kZW5jaWVzCmZhdWx0eS5kZXBlbmRlbmN5LnJhdGlvPTAuNAoKIyBOdW1iZXIgb2YgcmVxdWVzdHMgdXNpbmcgdGhlIHNhbWUgcmFuZG9tbHkgZ2VuZXJhdGVkIGlucHV0IGRhdGEKcmVsb2FkaW5wdXRkYXRhZXZlcnk9MTAKCiMgTnVtYmVyIG9mIHZhbHVlcyB1c2VkIGZvciBlYWNoIHBhcmFtZXRlciB3aGVuIHJlbG9hZGluZyBpbnB1dCBkYXRhCmlucHV0ZGF0YW1heHZhbHVlcz0xMDAKCiMgPT09PT09PT09PT09PT09PT0KIyBBTExVUkUgUkVQT1JUUwojID09PT09PT09PT09PT09PT09CgojIFNldCB0byB0cnVlIGZvciBnZW5lcmF0aW5nIEFsbHVyZSByZXBvcnRzCmFsbHVyZS5yZXBvcnQ9dHJ1ZQoKIyBQYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgQWxsdXJlIHdpbGwgc2F2ZSB0aGUgcmVwb3J0CmFsbHVyZS5yZXBvcnQuZGlyPXNyYy9tYWluL3Jlc291cmNlcy9FeGFtcGxlcy9FeDlfSXRlcmF0aXZlX0dlbmVyYXRpb25fRXhlY3V0aW9uL2FsbHVyZV9yZXBvcnQKCiMgPT09PT09PT09PT09PT09PT09CiMgQ1NWIFNUQVRTIFJFUE9SVFMKIyA9PT09PT09PT09PT09PT09PT0KCiMgU2V0IHRvIHRydWUgZm9yIGdlbmVyYXRpbmcgQ1NWIHN0YXRzCnN0YXRzLmNzdj10cnVlCgojID09PT09PT09PT09PT09PT09PT0KIyBDT1ZFUkFHRSBSRVBPUlRTCiMgPT09PT09PT09PT09PT09PT09PQoKIyBTZXQgdG8gdHJ1ZSBmb3IgY29tcHV0aW5nIGlucHV0IGNvdmVyYWdlCmNvdmVyYWdlLmlucHV0PXRydWUKCiMgU2V0IHRvIHRydWUgZm9yIGNvbXB1dGluZyBvdXRwdXQgY292ZXJhZ2UKY292ZXJhZ2Uub3V0cHV0PXRydWUKCiMgUGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIGNvdmVyYWdlIHJlc3VsdHMgd2lsbCBiZSBzYXZlZApkYXRhLmNvdmVyYWdlLmRpcj10YXJnZXQvY292ZXJhZ2UtZGF0YQoKCmBgYGAKCk9uY2Ugd2UgaGF2ZSB0aGlzIGZpbGUsIHdlIHdpbGwgYmUgcmVhZHkgdG8gY2Fycnkgb3V0IHRoZSBnZW5lcmF0aW9uIGFuZCBleGVjdXRpb24gb2Ygb3VyIHRlc3RzLiBUbyBhY2hpZXZlIHRoaXMsIHdlIHdpbGwgdXNlIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSBhcyBhIGd1aWRlOgoKYGBgamF2YQoKcHVibGljIGNsYXNzIEV4OV9HZW5lcmF0aW9uX0V4ZWN1dGlvbiB7CgogICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9QRVJUWV9GSUxFX1BBVEggPSAic3JjL21haW4vcmVzb3VyY2VzL0V4YW1wbGVzL0V4OV9HZW5lcmF0aW9uX0V4ZWN1dGlvbi91c2VyX2NvbmZpZy5wcm9wZXJ0aWVzIjsgCQkvLyBQYXRoIHRvIHVzZXIgcHJvcGVydGllcyBmaWxlIHdpdGggY29uZmlndXJhdGlvbiBvcHRpb25zCgogICBwdWJsaWMgc3RhdGljIGZpbmFsIExvZ2dlciBsb2dnZXIgPSBMb2dnZXIuZ2V0TG9nZ2VyKEV4OV9HZW5lcmF0aW9uX0V4ZWN1dGlvbi5jbGFzcy5nZXROYW1lKCkpOwoKICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIFJFU1Rlc3RFeGNlcHRpb24gewogICAgICAvLyBMb2FkIHByb3BlcnRpZXMKICAgICAgUkVTVGVzdFJ1bm5lciBydW5uZXIgPSBuZXcgUkVTVGVzdFJ1bm5lcihQUk9QRVJUWV9GSUxFX1BBVEgpOwoKICAgICAgLy8gUnVuIHdvcmtmbG93CiAgICAgIHJ1bm5lci5ydW4oKTsKCiAgICAgIGlmIChsb2dnZXIuaXNMb2dnYWJsZShqYXZhLnV0aWwubG9nZ2luZy5MZXZlbC5JTkZPKSkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZTEgPSBTdHJpbmcuZm9ybWF0KCIlZCB0ZXN0IGNhc2VzIGdlbmVyYXRlZCBhbmQgd3JpdHRlbiB0byAlcyIsIHJ1bm5lci5nZXROdW1iZXJPZlRlc3RDYXNlcygpLCBydW5uZXIuZ2V0VGFyZ2V0RGlySmF2YSgpKTsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UyID0gU3RyaW5nLmZvcm1hdCgiQWxsdXJlIHJlcG9ydCBhdmFpbGFibGUgYXQgJXMiLCBydW5uZXIuZ2V0QWxsdXJlUmVwb3J0c1BhdGgoKSk7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlMyA9IFN0cmluZy5mb3JtYXQoIkNTViBzdGF0cyBhdmFpbGFibGUgYXQgJXMvJXMiLCBQcm9wZXJ0eU1hbmFnZXIucmVhZFByb3BlcnR5KCJkYXRhLnRlc3RzLmRpciIpLCBydW5uZXIuZ2V0RXhwZXJpbWVudE5hbWUoKSk7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlNCA9IFN0cmluZy5mb3JtYXQoIkNvdmVyYWdlIHJlcG9ydCBhdmFpbGFibGUgYXQgJXMvJXMiLCBQcm9wZXJ0eU1hbmFnZXIucmVhZFByb3BlcnR5KCJkYXRhLmNvdmVyYWdlLmRpciIpLCBydW5uZXIuZ2V0RXhwZXJpbWVudE5hbWUoKSk7CiAgICAgICAgIGxvZ2dlci5pbmZvKG1lc3NhZ2UxKTsKICAgICAgICAgbG9nZ2VyLmluZm8obWVzc2FnZTIpOwogICAgICAgICBsb2dnZXIuaW5mbyhtZXNzYWdlMyk7CiAgICAgICAgIGxvZ2dlci5pbmZvKG1lc3NhZ2U0KTsKICAgICAgfQoKICAgfQp9CgpgYGAKCkFzIHdlIGNhbiBzZWUsIGJ5IHByb3ZpZGluZyB0aGUgcGF0aCB3aGVyZSB0aGUgLnByb3BlcnRpZXMgZmlsZSBpcyBsb2NhdGVkLCB0aGUgc3lzdGVtIHdpbGwgY3JlYXRlIGEgd29ya2Zsb3cgdGhhdCB3aWxsIHBlcmZvcm0gdGhlIGdlbmVyYXRpb24gb2YgdGVzdCBjYXNlcywgdGhlaXIgZXhlY3V0aW9uLCBhbmQgdGhlIGdlbmVyYXRpb24gb2YgcmVwb3J0cyBhbmQgc3VtbWFyaWVzIGFib3V0IHRoZSB0ZXN0cy4gQWRkaXRpb25hbGx5LCBhZnRlciBleGVjdXRpbmcgdGhlIHdvcmtmbG93LCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHdpbGwgYmUgcHJpbnRlZCBvbiB0aGUgc2NyZWVuOgoKKiBOdW1iZXIgb2YgdGVzdCBjYXNlcyBnZW5lcmF0ZWQgYW5kIHdyaXR0ZW4gdG8gYSBzcGVjaWZpYyBsb2NhdGlvbi4KKiBMb2NhdGlvbiBvZiB0aGUgQWxsdXJlIHJlcG9ydC4KKiBDU1Ygc3RhdHMgYXZhaWxhYmxlIGF0IGEgc3BlY2lmaWMgcGF0aC4KKiBDb3ZlcmFnZSByZXBvcnQgYXZhaWxhYmxlIGF0IGFub3RoZXIgc3BlY2lmaWMgcGF0aC4KClRoZXNlIGRldGFpbHMgcHJvdmlkZSBhIHF1aWNrIGFuZCB1c2VmdWwgaW5zaWdodCBpbnRvIHRoZSBzdWNjZXNzIGFuZCByZXN1bHRzIG9mIHRoZSBjb25kdWN0ZWQgdGVzdHMsIGZhY2lsaXRhdGluZyB0aGUgdHJhY2tpbmcgYW5kIGV2YWx1YXRpb24gb2YgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBnZW5lcmF0ZWQgdGVzdCBjYXNlcy4KCiMjIEhvdyBkb2VzIGl0IHdvcms/ClRoZSBmaWd1cmUgYmVsb3cgc2hvd3MgaG93IFJFU1Rlc3Qgd29ya3M6CgoxLiAqKlRlc3QgbW9kZWwgZ2VuZXJhdGlvbioqOiBSRVNUZXN0IHRha2VzIGFzIGlucHV0IHRoZSBPQVMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgQVBJIHVuZGVyIHRlc3QsIGNvbnNpZGVyZWQgdGhlICpzeXN0ZW0gbW9kZWwqLiBBIFsqdGVzdCBtb2RlbCpdKGh0dHBzOi8vZ2l0aHViLmNvbS9pc2EtZ3JvdXAvUkVTVGVzdC93aWtpL1Rlc3QtY29uZmlndXJhdGlvbi1maWxlcykgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0aGUgc3lzdGVtIG1vZGVsIGluY2x1ZGluZyB0ZXN0LXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZGF0YS4gVGhlIGRlZmF1bHQgdGVzdCBtb2RlbCBjYW4gYmUgbWFudWFsbHkgZW5yaWNoZWQgd2l0aCBmaW5lLWdyYWluZWQgY29uZmlndXJhdGlvbiBkZXRhaWxzIHN1Y2ggYXMgdGVzdCBkYXRhIGdlbmVyYXRpb24gc2V0dGluZ3MuCgoyLiAqKkFic3RyYWN0IHRlc3QgY2FzZSBnZW5lcmF0aW9uKio6IFRoZSBzeXN0ZW0gYW5kIHRoZSB0ZXN0IG1vZGVscyBkcml2ZSB0aGUgZ2VuZXJhdGlvbiBvZiBhYnN0cmFjdCB0ZXN0IGNhc2VzIGZvbGxvd2luZyB1c2VyLWRlZmluZWQgdGVzdCBjYXNlIGdlbmVyYXRpb24gc3RyYXRlZ2llcyBzdWNoIGFzIHJhbmRvbSB0ZXN0aW5nLiBJZiB0aGUgQVBJIHVuZGVyIHRlc3QgY29udGFpbnMgW2ludGVyLXBhcmFtZXRlciBkZXBlbmRlbmNpZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9pc2EtZ3JvdXAvUkVTVGVzdC93aWtpL0ludGVyLXBhcmFtZXRlci1kZXBlbmRlbmNpZXMpLCB0aGVuIGNvbnN0cmFpbnQtYmFzZWQgdGVzdGluZyBjYW4gYmUgYXBwbGllZCwgc3BlY2lmeWluZyB0aGUgZGVwZW5kZW5jaWVzIGluIHRoZSBPQVMgc3BlY2lmaWNhdGlvbiB1c2luZyB0aGUgSURMNE9BUyBleHRlbnNpb24gKHNlZSBleGFtcGxlcyBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2lzYS1ncm91cC9JRExSZWFzb25lci9ibG9iL21hc3Rlci9zcmMvdGVzdC9yZXNvdXJjZXMvT0FTX2V4YW1wbGUueWFtbCNMNDUpIGFuZCBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2lzYS1ncm91cC9JRExSZWFzb25lci90cmVlL21hc3Rlci9zcmMvdGVzdC9yZXNvdXJjZXMpKS4gUmVxdWVzdHMgc2F0aXNmeWluZyBhbGwgaW50ZXItcGFyYW1ldGVyIGRlcGVuZGVuY2llcyBhcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgdGhhbmtzIHRvIFtJRExSZWFzb25lcl0oaHR0cHM6Ly9naXRodWIuY29tL2lzYS1ncm91cC9JRExSZWFzb25lcikuCgozLiAqKlRlc3QgY2FzZSBnZW5lcmF0aW9uKio6IFRoZSBhYnN0cmFjdCB0ZXN0IGNhc2VzIGFyZSBpbnN0YW50aWF0ZWQgaW50byBhIHNwZWNpZmljIHByb2dyYW1taW5nIGxhbmd1YWdlIG9yIHRlc3RpbmcgZnJhbWV3b3JrIHVzaW5nIGEgW3Rlc3Qgd3JpdGVyXShodHRwczovL2dpdGh1Yi5jb20vaXNhLWdyb3VwL1JFU1Rlc3Qvd2lraS9UZXN0LXdyaXRlcnMpLiBSRVNUZXN0IGN1cnJlbnRseSBzdXBwb3J0cyB0aGUgZ2VuZXJhdGlvbiBvZiBbUkVTVCBBc3N1cmVkXShodHRwOi8vcmVzdC1hc3N1cmVkLmlvLykgYW5kIFtQb3N0bWFuXShodHRwczovL3d3dy5wb3N0bWFuLmNvbS8pIHRlc3QgY2FzZXMuCgo0LiAqKlRlc3QgY2FzZSBleGVjdXRpb24qKjogVGhlIHRlc3QgY2FzZXMgYXJlIGV4ZWN1dGVkIGFuZCBhIHNldCBvZiByZXBvcnRzIGFuZCBzdGF0cyBhcmUgZ2VuZXJhdGVkLiBTdGF0cyBhcmUgbWFjaGluZS1yZWFkYWJsZSwgYW5kIHRoZSB0ZXN0IHJlcG9ydHMgY2FuIGJlIGdyYXBoaWNhbGx5IHZpc3VhbGl6ZWQgdGhhbmtzIHRvIFtBbGx1cmVdKGh0dHA6Ly9hbGx1cmUucWF0b29scy5ydS8pLgoKNS4gKipGZWVkYmFjayBjb2xsZWN0aW9uKio6IFtUZXN0IGNhc2UgZ2VuZXJhdG9yc10oaHR0cHM6Ly9naXRodWIuY29tL2lzYS1ncm91cC9SRVNUZXN0L3dpa2kvVGVzdC1jYXNlLWdlbmVyYXRvcnMpIGFuZCBvdGhlciBjb21wb25lbnRzIGNhbiByZWFjdCB0byB0aGUgdGVzdCBvdXRwdXRzIChpLmUuLCB0aGUgc3RhdHMgZ2VuZXJhdGVkIGluIHRoZSBwcmV2aW91cyBzdGVwKSB0byBjcmVhdGUgbW9yZSBzb3BoaXN0aWNhdGVkIHRlc3QgY2FzZXMuIEV4YW1wbGVzIG9mIHRoaXMgYXJlIHRoZSBzdGF0ZWZ1bCBkYXRhIGdlbmVyYXRvcnMgKGUuZy4sIHRoZSBbQm9keUdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL2lzYS1ncm91cC9SRVNUZXN0L2Jsb2IvbWFzdGVyL3NyYy9tYWluL2phdmEvZXMvdXMvaXNhL3Jlc3Rlc3QvaW5wdXRzL3N0YXRlZnVsL0JvZHlHZW5lcmF0b3IuamF2YSkpIGFuZCB0aGUgW1N0YXRzUmVwb3J0TWFuYWdlcl0oaHR0cHM6Ly9naXRodWIuY29tL2lzYS1ncm91cC9SRVNUZXN0L2Jsb2IvbWFzdGVyL3NyYy9tYWluL2phdmEvZXMvdXMvaXNhL3Jlc3Rlc3QvcmVwb3J0aW5nL1N0YXRzUmVwb3J0TWFuYWdlci5qYXZhKSwgYm90aCBvZiB3aGljaCBnZW5lcmF0ZSBuZXcgdGVzdCBkYXRhIGJhc2VkIG9uIHByZXZpb3VzIEFQSSByZXNwb25zZXMuCgohW1JFU1Rlc3RdKGRvY3MvUkVTVGVzdF92My5wbmcpCgojIyBXaGF0IGNhbiBJIGRvIHdpdGggUkVTVGVzdD8KQ2hlY2sgb3V0IHRoZSBmb2xsb3dpbmcgZGVtbyB2aWRlbywgd2hlcmUgd2UgZGlzY3VzcyBzb21lIG9mIHRoZSB0aGluZ3MgdGhhdCB5b3UgY2FuIGRvIHdpdGggUkVTVGVzdCwgYm90aCBmcm9tIHRoZSB1c2VyIGFuZCB0aGUgZGV2ZWxvcGVyIHBvaW50IG9mIHZpZXcuIFRoZSBzaG93Y2FzZSBzaG93biBpbiB0aGUgdmlkZW8gaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9iZXR0eS51cy5lcy9yZXN0ZXN0LXNob3djYXNlLWRlbW8vLgoKPGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS9Ubkdrd01EQkR0NCIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJkb2NzL3BsYXlfdmlkZW8ucG5nIiBhbHQ9IlJFU1Rlc3QgZGVtbyB2aWRlbyIgd2lkdGg9IjMwMCIgLz48L2E+CgojIyBSdW5uaW5nIFJFU1Rlc3QgYXMgYSBKQVIKSW5zdGVhZCBvZiBmcm9tIGFuIElERSBsaWtlIEludGVsbGlKIElERUEsIHlvdSBjYW4gYWxzbyBydW4gUkVTVGVzdCBhcyBhIGZhdCBKQVIuIFlvdSBoYXZlIHR3byBvcHRpb25zOgoKIyMjIE9wdGlvbiAxOiBCdWlsZCBSRVNUZXN0IGZyb20gc291cmNlCgpUbyBwYWNrYWdlIFJFU1Rlc3QgYXMgYSBmYXQgSkFSIGZpbGUsIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgaW4gdGhlIHJvb3QgZGlyZWN0b3J5OgoKYGBgCm12biBjbGVhbiBpbnN0YWxsIC1Ec2tpcFRlc3RzCmBgYAoKVGhlbiwgcnVuIHRoZSBKQVIgZmlsZSBwYXNzaW5nIGFzIGFyZ3VtZW50IHRoZSBwYXRoIHRvIHRoZSBwcm9wZXJ0aWVzIGZpbGUsIGZvciBleGFtcGxlOgoKYGBgCmphdmEgLWphciB0YXJnZXQvcmVzdGVzdC5qYXIgc3JjL3Rlc3QvcmVzb3VyY2VzL1Jlc3Rjb3VudHJpZXMvcmVzdGNvdW50cmllc19kZW1vLnByb3BlcnRpZXMKYGBgCgojIyMgT3B0aW9uIDI6IERvd25sb2FkIHRoZSBsYXRlc3QgcmVsZWFzZQoKR28gdG8gdGhlIFtyZWxlYXNlcyBwYWdlXShodHRwczovL2dpdGh1Yi5jb20vaXNhLWdyb3VwL1JFU1Rlc3QvcmVsZWFzZXMpIGFuZCBkb3dubG9hZCB0aGUgbGF0ZXN0IG9uZS4gUkVTVGVzdCByZWxlYXNlcyBjb25zaXN0IG9mIFpJUCBmaWxlcyB3aGljaCwgb25jZSB1bmNvbXByZXNzZWQsIHByb3ZpZGUgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgYW5kIHRoZSBuZWNlc3NhcnkgcmVzb3VyY2VzIHRvIHJ1biBSRVNUZXN0IGFzIGEgSkFSLiBZb3UgY2FuIHRlc3QgdGhlIHNhbWUgZXhhbXBsZSBzaG93biBpbiB0aGUgcXVpY2tzdGFydCBndWlkZSBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYApqYXZhIC1qYXIgcmVzdGVzdC5qYXIgc3JjL3Rlc3QvcmVzb3VyY2VzL0ZvbGRlci9hcGkucHJvcGVydGllcwpgYGAKCiMjIENpdGluZyBSRVNUZXN0CgpJZiB5b3Ugd2FudCB0byBjaXRlIFJFU1Rlc3QgaW4geW91ciByZXNlYXJjaCwgcGxlYXNlIHVzZSB0aGUgQmliVGVYIGVudHJ5IGJlbG93LiBbSGVyZSdzIGEgbGluayB0byBhIHByZXByaW50IG9mIHRoZSBwYXBlcl0oaHR0cHM6Ly93d3cucmVzZWFyY2hnYXRlLm5ldC9wdWJsaWNhdGlvbi8zNTI4MzU1NzBfUkVTVGVzdF9BdXRvbWF0ZWRfQmxhY2stQm94X1Rlc3Rpbmdfb2ZfUkVTVGZ1bF9XZWJfQVBJcykuCgoKYGBgYmlidGV4CkBpbnByb2NlZWRpbmdze01hcnRpbkxvcGV6MjAyMVJlc3Rlc3QsCgl0aXRsZT0ge3tSRVNUZXN0OiBBdXRvbWF0ZWQgQmxhY2stQm94IFRlc3Rpbmcgb2YgUkVTVGZ1bCBXZWIgQVBJc319LAoJYXV0aG9yPSB7QWxiZXJ0byBNYXJ0aW4tTG9wZXogYW5kIFNlcmdpbyBTZWd1cmEgYW5kIEFudG9uaW8gUnVpei1Db3J0XCd7ZX1zfSwKCWJvb2t0aXRsZT0ge1Byb2NlZWRpbmdzIG9mIHRoZSAzMHRoIEFDTSBTSUdTT0ZUIEludGVybmF0aW9uYWwgU3ltcG9zaXVtIG9uIFNvZnR3YXJlIFRlc3RpbmcgYW5kIEFuYWx5c2lzfSwKCXNlcmllcz0ge0lTU1RBICcyMX0sCglwdWJsaXNoZXI9IHtBc3NvY2lhdGlvbiBmb3IgQ29tcHV0aW5nIE1hY2hpbmVyeX0sCgl5ZWFyPSB7MjAyMX0KfQpgYGAKCiMjIExpY2Vuc2UKUkVTVGVzdCBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgW0dOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2My4wXShMSUNFTlNFKS4KClJFU1Rlc3QgaW5jbHVkZXMgQWxsdXJlIEZyYW1ld29yayAmY29weTsgMjAxOSBRYW1ldGEgU29mdHdhcmUgT8OcLiBJdCBpcyB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIDIuMCBMaWNlbnNlLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAuCgojIyMgSWNvbiBjcmVkaXRzClRoaXMgUkVBRE1FIGFuZCBzb21lIHBhZ2VzIG9mIHRoZSBXaWtpIHVzZSBpY29ucyBwcm92aWRlZCBieSBbRnJlZXBpa10oaHR0cHM6Ly93d3cuZmxhdGljb24uY29tL2F1dGhvcnMvZnJlZXBpayksIGF2YWlsYWJsZSBhdCBbRmxhdGljb25dKGh0dHBzOi8vd3d3LmZsYXRpY29uLmNvbS8pLgo= readmeEtag: '"b09720e784cd44db9643aeb2c84cdff066cd0ce3"' readmeLastModified: Fri, 21 Nov 2025 15:02:25 GMT repositoryId: 120752811 description: 'RESTest: Automated Black-Box Testing of RESTful Web APIs' created: '2018-02-08T11:27:45Z' updated: '2026-01-27T21:33:06Z' language: Java archived: false stars: 228 watchers: 15 forks: 37 owner: isa-group logo: https://avatars.githubusercontent.com/u/2708867?v=4 license: LGPL-3.0 repoEtag: '"aa92ff2525218ec50daa6291be9576ea788432b9a087e9669042bbc35a34fcb1"' repoLastModified: Tue, 27 Jan 2026 21:33:06 GMT foundInMaster: true id: 9115f26fa9e7b17b844a0f10b9814db7 - source: https://openapi.tools/ name: ReadyAPI category: Testing language: Java source_description: > an end to end API functional, security, performance and virtualization tool where OAS description documents can be utilized to automate the creation and validation of end to end tests, running them manually or at any point in your CI/CD pipeline. pipelines. v2: true v3: true v3_1: false link: https://smartbear.com/product/ready-api/overview/ foundInMaster: true id: 2e4959c1f56a5c235f1e82b2d4cbc505 - source: https://openapi.tools/ name: DeveloperHub category: Documentation link: https://developerhub.io language: SaaS source_description: Collaboration platform for product and API documentation v2: true v3: true v3_1: true foundInMaster: true id: 9c4871865101e2bb2ee5a4e48084b75e - source: https://openapi.tools/ name: OAuth2 as OpenAPI Spec 3.0 components language: Any repository: https://github.com/ybelenko/oauth2_as_oas3_components source_description: >- OAuth2 token endpoint described with OAS3 schema. All grants documented. Can be installed as NPM or Composer package. v2: false v3: true repositoryMetadata: base64Readme: >- IyBPQXV0aDIgYXMgT3BlbkFQSSBTcGVjIDMuMCBjb21wb25lbnRzCgpUaGUgZXhhbXBsZSBmaWxlIHdoaWNoIGRlc2NyaWJlcyBPQXV0aDIgdG9rZW4gZW5kcG9pbnRzIGxvY2F0ZWQgW2Rpc3Qvb2F1dGgyX2VuZHBvaW50cy55bWxdKGRpc3Qvb2F1dGgyX2VuZHBvaW50cy55bWwpLgoKIyMgV2h5IHRoaXMgcGFja2FnZSBleGlzdHMKU2luY2UgW1JGQyA2NzQ5IE9BdXRoMl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY3NDkpIHNlcnZlciBpbXBsZW1lbnRhdGlvbiBtYXkgYmUgdmVyeSBkaWZmZXJlbnQob3B0aW9uYWwvcmVjb21tZW5kZWQgcmVzcG9uc2UgZmllbGRzLCBleHRlbmRlZCBncmFudCkgaXQgbWlnaHQgbWUgdXNlZnVsIHRvIGRlc2NyaWJlIHlvdXIgdW5pcXVlIGltcGxlbWVudGF0aW9uIHdpdGhpbiB5b3VyIE9BUzMgZmlsZS4gSXQncyBhbHNvIHZlcnkgaGFuZHkgdG8gc2VlIGV4YW1wbGVzIG9mIHlvdXIgdG9rZW4gYW5kIGVycm9yIHJlc3BvbnNlLCBiZWNhdXNlIFJGQzY3NDkgaXMgYSB0ZXh0IGRvY3VtZW50IHdpdGhvdXQgYW55IHBpY3R1cmVzIG9yIGdyYXBocy4gVGhlIGV4YW1wbGUgZmlsZSBtZW50aW9uZWQgYmVmb3JlIGNvbnRhaW5zIGRlc2NyaXB0aW9uIG9mIHRva2VuIGVuZHBvaW50cyBmb3IgZWFjaCBhdXRob3JpemF0aW9uIGdyYW50LCBjb25zaWRlciBpdCBhcyBzdGFydGluZyBwb2ludC4KCkV4YW1wbGUgZmlsZSBvbWl0cyBbYXV0aG9yaXphdGlvbiBlbmRwb2ludF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY3NDkjc2VjdGlvbi0zLjEpIGVuZHBvaW50IG9uIHB1cnBvc2UuIEkgZG9uJ3Qga25vdyBob3cgdG8gZGVzY3JpYmUgaXQgd2l0aCBPQVMzIHNpbmNlIGVuZHBvaW50IHJlc3BvbnNlIGlzbid0IEpTT04oaHRtbCBwYWdlKS4gSWYgeW91IGhhdmUgYW55IHN1Z2dlc3Rpb24gcGxlYXNlIHN1Ym1pdCBhbiBpc3N1ZSB0byB0aGlzIHJlcG8uCgpTaW5jZSBbUkZDIDY3NDkgLSBUaGUgT0F1dGgyLjAgQXV0aG9yaXphdGlvbiBGcmFtZXdvcmsgLSAyLjMuMS4gQ2xpZW50IFBhc3N3b3JkXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjc0OSNzZWN0aW9uLTIuMy4xKSBkb2Vzbid0IHJlY29tbWVuZCB0byBzZW5kIGNsaWVudCBwYXNzd29yZCBpbiByZXF1ZXN0IGJvZHkgdGhlbiBvdXIgZXhhbXBsZSBleHBlY3RzIGJhc2ljIGF1dGhvcml6YXRpb24gaW4gYWxsIGVuZHBvaW50cy4KCiMjIEluc3RhbGxhdGlvbgoKIyMjIENvcHkgUGFzdGUKU2luY2UgaXQncyBub3QgYWN0dWFsbHkgYSBjb2RlLCBidXQgbWFya3VwIHlvdSBjYW4ganVzdCBjb3B5IGFueXRoaW5nIHlvdSB3YW50IGZyb20gW2Rpc3Qvb2F1dGgyX2VuZHBvaW50cy55bWxdKGRpc3Qvb2F1dGgyX2VuZHBvaW50cy55bWwpLgoKVGhlcmUgaXMgYWxzbyBlbmhhbmNlZCBleGFtcGxlIHdpdGggcG9seW1vcnBoaXNtIGF0IFtkaXN0L29hdXRoMl9lbmRwb2ludHNfcG9seW1vcnBoaXNtLnltbF0oZGlzdC9vYXV0aDJfZW5kcG9pbnRzX3BvbHltb3JwaGlzbS55bWwpLiAqKlBsZWFzZSwgbWFrZSBzdXJlIHRoYXQgeW91ciB0b29scyBzdXBwb3J0cyBwb2x5bW9ycGhpc20uIFRoaXMgZXhhbXBsZSBjb250YWlucyBuZXcgZmVhdHVyZXMgbm90IGhpZ2hseSBhZG9wdGVkIHlldC4gQ2hlY2sgYXQgbGVhc3QgYG9uZU9mYCBwcm9wZXJ0eSBzdXBwb3J0LiBJIHdvdWxkbid0IHVzZSBpdCBteXNlbGYgYmVjYXVzZSBtb3N0IG9mIHRoZSBPcGVuQVBJIHRvb2xzIGhhdmUgaXNzdWVzIHdpdGggcG9seW1vcnBoaXNtIG5vdywgYnV0IHRoaXMgZXhhbXBsZSBtYXkgYmUgdXNlZnVsIGluIGZvcnNlZWFibGUgZnV0dXJlLioqCgojIyMgQ29tcG9zZXIKSW5zdGFsbCBbQ29tcG9zZXIgLSBEZXBlbmRlbmN5IE1hbmFnZXIgZm9yIFBIUF0oaHR0cHM6Ly9nZXRjb21wb3Nlci5vcmcvZG93bmxvYWQvKQoKVGhlbiBydW4gaW4gdGVybWluYWw6CmBgYGNvbnNvbGUKY29tcG9zZXIgcmVxdWlyZSB5YmVsZW5rby9vYXV0aDJfYXNfb2FzM19jb21wb25lbnRzCmBgYAoKVXNlIHByb3ZpZGVkIGNvbXBvbmVudHMgdmlhIGAkcmVmYCBhdHRyaWJ1dGUgbGlrZToKCmBgYHlhbWwKcGF0aHM6CiAgL3Rva2VuOgogICAgcG9zdDoKICAgICAgc3VtbWFyeTogT2J0YWluIGFjY2VzcyB0b2tlbiB3aXRoICJhdXRob3JpemF0aW9uX2NvZGUiIGdyYW50LgogICAgICByZXF1ZXN0Qm9keToKICAgICAgICAkcmVmOiAnLi92ZW5kb3IveWJlbGVua28vb2F1dGgyX2FzX29hczNfY29tcG9uZW50cy9kaXN0L2NvbXBvbmVudHMvcmVxdWVzdEJvZGllcy9Ub2tlblJlcXVlc3RDb2RlR3JhbnQueW1sJwogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICAkcmVmOiAnLi92ZW5kb3IveWJlbGVua28vb2F1dGgyX2FzX29hczNfY29tcG9uZW50cy9kaXN0L2NvbXBvbmVudHMvcmVzcG9uc2VzL09BdXRoMlRva2VuU3VjY2Vzc1Jlc3BvbnNlLnltbCcKICAgICAgICAnNFhYJzoKICAgICAgICAgICRyZWY6ICcuL3ZlbmRvci95YmVsZW5rby9vYXV0aDJfYXNfb2FzM19jb21wb25lbnRzL2Rpc3QvY29tcG9uZW50cy9yZXNwb25zZXMvT0F1dGgyVG9rZW5FcnJvclJlc3BvbnNlLnltbCcKYGBgCgpFeHRlbmRlZCBleGFtcGxlIHdpdGggcmVmcyBbZGlzdC9vYXV0aDJfZW5kcG9pbnRzX3dpdGhfcmVmcy55bWxdKGRpc3Qvb2F1dGgyX2VuZHBvaW50c193aXRoX3JlZnMueW1sKQoKIyMjIE5QTQpbSW5zdGFsbCBOUE0gYW5kIE5vZGUuanNdKGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vZG93bmxvYWRpbmctYW5kLWluc3RhbGxpbmctbm9kZS1qcy1hbmQtbnBtKQoKVGhlbiBydW4gaW4gdGVybWluYWw6CmBgYGNvbnNvbGUKbnBtIGkgLS1zYXZlIG9hdXRoMl9hc19vYXMzX2NvbXBvbmVudHMKYGBgCgpVc2UgcHJvdmlkZWQgY29tcG9uZW50cyB2aWEgYCRyZWZgIGF0dHJpYnV0ZSBsaWtlOgoKYGBgeWFtbApwYXRoczoKICAvdG9rZW46CiAgICBwb3N0OgogICAgICBzdW1tYXJ5OiBPYnRhaW4gYWNjZXNzIHRva2VuIHdpdGggImF1dGhvcml6YXRpb25fY29kZSIgZ3JhbnQuCiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgICRyZWY6ICcuL25vZGVfbW9kdWxlcy9vYXV0aDJfYXNfb2FzM19jb21wb25lbnRzL2Rpc3QvY29tcG9uZW50cy9yZXF1ZXN0Qm9kaWVzL1Rva2VuUmVxdWVzdENvZGVHcmFudC55bWwnCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgICRyZWY6ICcuL25vZGVfbW9kdWxlcy9vYXV0aDJfYXNfb2FzM19jb21wb25lbnRzL2Rpc3QvY29tcG9uZW50cy9yZXNwb25zZXMvT0F1dGgyVG9rZW5TdWNjZXNzUmVzcG9uc2UueW1sJwogICAgICAgICc0WFgnOgogICAgICAgICAgJHJlZjogJy4vbm9kZV9tb2R1bGVzL29hdXRoMl9hc19vYXMzX2NvbXBvbmVudHMvZGlzdC9jb21wb25lbnRzL3Jlc3BvbnNlcy9PQXV0aDJUb2tlbkVycm9yUmVzcG9uc2UueW1sJwpgYGAKCkV4dGVuZGVkIGV4YW1wbGUgd2l0aCByZWZzIFtkaXN0L29hdXRoMl9lbmRwb2ludHNfd2l0aF9yZWZzLnltbF0oZGlzdC9vYXV0aDJfZW5kcG9pbnRzX3dpdGhfcmVmcy55bWwpCgojIyBDb250cmlidXRpbmcKCklmIHlvdSBoYXZlIGFueSBzdWdnZXN0aW9ucyBwbGVhc2Ugc3VibWl0IGFuIGlzc3VlLgoKIyMgTGljZW5zZQpbTUlUIExpY2Vuc2VdKExJQ0VOU0UpCg== readmeEtag: '"6c8026d25e06120124e8248435017d4bb49efc43"' readmeLastModified: Tue, 20 Apr 2021 20:45:12 GMT repositoryId: 358547893 description: OAuth2 definitions as OpenAPI Spec 3.0 components created: '2021-04-16T09:35:37Z' updated: '2025-09-09T01:57:05Z' language: null archived: false stars: 9 watchers: 2 forks: 1 owner: ybelenko logo: https://avatars.githubusercontent.com/u/5541023?v=4 license: MIT repoEtag: '"aefdc7f7ef586b8ac321161e8314413e23d909d5eef5df2aeb5ed2916c4de4e6"' repoLastModified: Tue, 09 Sep 2025 01:57:05 GMT foundInMaster: true id: 943b84998524f65e45768ca73ecb3841 category: Parsers - source: https://openapi.tools/ name: Mayhem for API category: - Testing - Data Validators - Security - Server Implementations link: https://forallsecure.com/mayhem-for-api repository: https://github.com/forallsecure/mapi-action language: Any source_description: >- Probe your REST API with an infinite stream of test cases generated automatically from your OpenAPI specification. v2: true v3: true id: ce2ef79e2c9f1a119ca823d0afd8258b repositoryMetadata: base64Readme: >- IyBNYXloZW0gZm9yIEFQSSBHaXRIdWIgQWN0aW9uCgpbIVtNYXloZW0gZm9yIEFQSV0oLi9pbWdzL21hcGktbG9nby1mdWxsLWNvbG9yLnN2ZyldKGh0dHBzOi8vd3d3Lm1heWhlbS5zZWN1cml0eS9hcGktc2VjdXJpdHkpCgpBIEdpdEh1YiBBY3Rpb24gZm9yIHVzaW5nIE1heWhlbSBmb3IgQVBJIHRvIGNoZWNrIGZvciByZWxpYWJpbGl0eSwKcGVyZm9ybWFuY2UgYW5kIHNlY3VyaXR5IGlzc3VlcyBpbiB5b3VyIEFQSXMuCgojIyBBYm91dCBNYXloZW0gZm9yIEFQSQoK8J+nqiBNb2Rlcm4gQXBwIFRlc3Rpbmc6IE1heWhlbSBmb3IgQVBJIGlzIGEgZHluYW1pYyB0ZXN0aW5nIHRvb2wgdGhhdApjYXRjaGVzIHJlbGlhYmlsaXR5LCBwZXJmb3JtYW5jZSBhbmQgc2VjdXJpdHkgYnVncyBiZWZvcmUgdGhleSBoaXQKcHJvZHVjdGlvbi4KCvCfp5HigI3wn5K7IEZvciBEZXZlbG9wZXJzLCBieSBkZXZlbG9wZXJzOiBUaGUgZW5naW5lZXJzIGJ1aWxkaW5nCnNvZnR3YXJlIGFyZSB0aGUgYmVzdCBlcXVpcHBlZCB0byBmaXggYnVncywgaW5jbHVkaW5nIHNlY3VyaXR5IGJ1Z3MuIEFzCmVuZ2luZWVycyBvdXJzZWx2ZXMsIHdlJ3JlIGJ1aWxkaW5nIHRvb2xzIHRoYXQgd2Ugd2lzaCBleGlzdGVkIHRvIG1ha2UKb3VyIGpvYiBlYXNpZXIhCgrwn6SWIFNpbXBsZSB0byBBdXRvbWF0ZSBpbiBDSTogVGVzdHMgYmVsb25nIGluIENJLCBydW5uaW5nIG9uIGV2ZXJ5IGNvbW1pdAphbmQgUFJzLiBXZSBtYWtlIGl0IGVhc3ksIGFuZCBwcm92aWRlIHJlc3VsdHMgcmlnaHQgaW4geW91ciBQUnMgd2hlcmUKeW91IHdhbnQgdGhlbS4gQWRkaW5nIE1heWhlbSBmb3IgQVBJIHRvIGEgRGV2T3BzIHBpcGVsaW5lIGlzIGVhc3kuCgpXYW50IHRvIHRyeSBpdD8gW1NpZ24gdXAgZm9yIGZyZWVdKGh0dHBzOi8vd3d3Lm1heWhlbS5zZWN1cml0eS9hcGktc2VjdXJpdHkpIHRvZGF5IQoKIyMgVXNhZ2UKCjEuIEdldCBhIE1heWhlbSBmb3IgQVBJIHRva2VuCgogICAgYS4gW1NpZ24gdXAgZm9yIE1heWhlbSBmb3IgZnJlZSBhbmQgaW5zdGFsbCBgbWFwaWBdKGh0dHBzOi8vYXBwLm1heWhlbS5zZWN1cml0eSkKCiAgICBiLiBDcmVhdGUgYW4gW0FQSSB0b2tlbl0oaHR0cHM6Ly9hcHAubWF5aGVtLnNlY3VyaXR5L2RvY3MvYXBpLXRlc3RpbmcvZ2V0dGluZy1zZXQtdXAvZ2VuZXJhdGluZy1hcGktdG9rZW5zLykKCiAgICBjLiBBZGQgeW91ciBBUEkgdG9rZW4gd2l0aCBuYW1lIGBNQVlIRU1fVE9LRU5gIG9uIHlvdXIgcmVwb3NpdG9yeSdzIEdpdEh1YiBwYWdlIGF0CiAgICAgICBgU2V0dGluZ3NgIOKGkiBgU2VjcmV0c2Ag4oaSIGBOZXcgcmVwb3NpdG9yeSBzZWNyZXRgCgoyLiBDcmVhdGUgYSBmaWxlIGluIF95b3VyXyBHaXRIdWIgcmVwb3NpdG9yeSBhdDoKYGBgCiAgICAuZ2l0aHViL3dvcmtmbG93cy9Gb3JBbGxTZWN1cmUtTWF5aGVtLWZvci1BUEkueW1sCmBgYAoKMy4gQWRkIHRoZSBmb2xsb3dpbmcgdGV4dCB0byB0aGUgZmlsZSBhbmQgdHdlYWsgaXQgZm9yIHlvdXIgY29kZWJhc2UuCgogICAgKipOb3RlKio6IFRvIGF1dG8tZGV0ZWN0IGRpZmZzLCBNYXloZW0gbmVlZHMgYSBkZWVwZXIgcmVwb3NpdG9yeSBjbG9uZSB0aGFuIHRoZSBkZWZhdWx0IG9mIGFjdGlvbnMvY2hlY2tvdXRAdjMuICBTZXQgYGZldGNoLWRlcHRoYCB0byAwIGZvciBhIGZ1bGwgY2xvbmUsIG9yIGRlZXBlciBjbG9uZXMgdG8gZmV0Y2ggZW5vdWdoIGNvbW1pdCBoaXN0b3J5IHRvIGNvbXB1dGUgYSBtZXJnZSBiYXNlIGZvciB0aGUgYnJhbmNoLgoKYGBgeWFtbApuYW1lOiBNYXloZW0gZm9yIEFQSQpvbjoKICAgIHB1c2g6CiAgICBwdWxsX3JlcXVlc3Q6CmpvYnM6CiAgc2VjdXJpdHk6CiAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CiAgICBzdGVwczoKICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MwogICAgICB3aXRoOgogICAgICAgICMgZmV0Y2ggZW50aXJlIGhpc3RvcnkgdG8gY29tcHV0ZSBkaWZmcyBiZXR3ZWVuIGpvYnMKICAgICAgICBmZXRjaC1kZXB0aDogMAoKICAgIC0gbmFtZTogU3RhcnQgeW91ciBBUEkKICAgICAgcnVuOiAuL3J1bl95b3VyX2FwaS5zaCAmICMgPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFVQREFURSBUSElTCgogICAgLSBuYW1lOiBSdW4gTWF5aGVtIGZvciBBUEkgdG8gY2hlY2sgZm9yIHZ1bG5lcmFiaWxpdGllcwogICAgICB1c2VzOiBGb3JBbGxTZWN1cmUvbWFwaS1hY3Rpb25AdjIKICAgICAgd2l0aDoKICAgICAgICBtYXloZW0tdG9rZW46ICR7eyBzZWNyZXRzLk1BWUhFTV9UT0tFTiB9fQogICAgICAgIGFwaS11cmw6IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCAjIDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVVBEQVRFIFRISVMKICAgICAgICBhcGktc3BlYzogeW91ci1vcGVuYXBpLXNwZWMtb3ItcG9zdG1hbi1jb2xsZWN0aW9uLmpzb24gIyA8LS0tIFVQREFURSBUSElTCmBgYAoKNC4gQ29tbWl0IHRoZSBuZXcgZmlsZSBhbmQgcHVzaCBpdCB1cCB0byBHaXRIdWIKCjUuIFlvdXIgbmV3IE1heWhlbSBmb3IgQVBJIGFjdGlvbiB3aWxsIGJlIHZpc2libGUgYXQKCiAgICBgaHR0cHM6Ly9naXRodWIuY29tLzxVU0VSTkFNRT4vPFJFUE9fTkFNRT4vYWN0aW9uc2AKCi0tLQoKVGhpcyByZXBvIGNvbnRhaW5zIGEgW2Z1bGwgZXhhbXBsZV0od29ya2Zsb3cueW1sKSBmb3IgcmVmZXJlbmNlLgoKVGhlIGFjdGlvbiBhY2NlcHRzIHRoZSBmb2xsb3cgaW5wdXRzOgoKfCBSZXF1aXJlZCB8IElucHV0IE5hbWUgfCBUeXBlIHwgRGVzY3JpcHRpb24gfCBEZWZhdWx0CnwgLS0tIHwgLS0tIHwgLS0tIHwgLS0tIHwgLS0tCnwg4pyU77iPIHwgYG1heWhlbS10b2tlbmAgfCBzdHJpbmcgfCBNYXloZW0gQVBJIHRva2VuIHwKfCDinJTvuI8gfCBgYXBpLXVybGAgfCBzdHJpbmcgfCBVUkwgdG8geW91ciBydW5uaW5nIEFQSS4gKkV4YW1wbGU6KiBodHRwOi8vbG9jYWxob3N0OjgwMDAvYXBpL3YxIHwKfCDinJTvuI8gfCBgYXBpLXNwZWNgIHwgc3RyaW5nIHwgUGF0aCBvciBVUkwgdG8geW91ciBTd2FnZ2VyIHNwZWMsIE9wZW5BUEkgc3BlYywgb3IgUG9zdG1hbiBjb2xsZWN0aW9uIGZpbGUsIG9yIFBvc3RtYW4gW2NvbGxlY3Rpb24gaWRdKGh0dHBzOi8vc3VwcG9ydC5wb3N0bWFuLmNvbS9oYy9lbi11cy9hcnRpY2xlcy81MDYzNzg1MDk1MzE5LUhvdy10by1maW5kLXRoZS1JRC1vZi1hbi1lbGVtZW50LWluLVBvc3RtYW4pLnwKfCAgIHwgYHRhcmdldGAgfCBzdHJpbmcgfCBUaGUgb3JnYW5pemF0aW9uLXNjb3BlZCBuYW1lIG9mIHlvdXIgdGFyZ2V0LCBzdWNoIGFzIGBmb3JhbGxzZWN1cmUvbWFwaS1hY3Rpb24tZXhhbXBsZWAgfCBhdXRvLWdlbmVyYXRlZCBmcm9tIHlvdXIgR2l0SHViIFJlcG9zaXRvcnkgbmFtZQp8ICAgfCBgcG9zdG1hbi1hcGkta2V5YCB8IHN0cmluZyB8IFBvc3RtYW4gW0FQSSBrZXldKGh0dHBzOi8vbGVhcm5pbmcucG9zdG1hbi5jb20vZG9jcy9kZXZlbG9wZXIvaW50cm8tYXBpLykgZm9yIGFwaSBzcGVjcyB0aGF0IGFyZSBwcml2YXRlIHBvc3RtYW4gY29sbGVjdGlvbiBpZHMuCnwgICB8IGBwb3N0bWFuLWVudmlyb25tZW50YCB8IHN0cmluZyB8IFBhdGggb3IgaWQgb2YgYSBQb3N0bWFuIFtFbnZpcm9ubWVudF0oaHR0cHM6Ly9sZWFybmluZy5wb3N0bWFuLmNvbS9kb2NzL3NlbmRpbmctcmVxdWVzdHMvbWFuYWdpbmctZW52aXJvbm1lbnRzLykuCnwgICB8IGB6YXAtYXBpLXNjYW5gIHwgYm9vbGVhbiB8IEluY2x1ZGUgcmVzdWx0cyBmcm9tIFtaQVAgLSBBUEkgU2Nhbl0oaHR0cHM6Ly93d3cuemFwcm94eS5vcmcvZG9jcy9kb2NrZXIvYXBpLXNjYW4vKSB8IGZhbHNlIHwKfCAgIHwgYGR1cmF0aW9uYCB8IG51bWJlci9zdHJpbmcgfCBEdXJhdGlvbiBvZiBzY2FuLiAnYXV0bycgZm9yIGF1dG9tYXRpYyBkdXJhdGlvbi4gT3RoZXJ3aXNlIHRpbWUgKGllOiAnMzBzZWMnLCAnNW1pbicsICcxaCcsICcxaDMwbScpIHwgYXV0bwp8ICAgfCBgaHRtbC1yZXBvcnRgIHwgc3RyaW5nIHwgUGF0aCB0byB0aGUgZ2VuZXJhdGVkIFNBUklGIHJlcG9ydCB8CnwgICB8IGBzYXJpZi1yZXBvcnRgIHwgc3RyaW5nIHwgUGF0aCB0byB0aGUgZ2VuZXJhdGVkIEhUTUwgcmVwb3J0IHwKfCAgIHwgYHJ1bi1hcmdzYCB8IHN0cmluZyB8IEFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHByb3ZpZGUgdG8gdGhlIGBtYXBpIHJ1bmAgY29tbWFuZC4gIEFyZ3VtZW50IHZhbHVlcyBzaG91bGQgYmUgc2VwYXJhdGVkIG9uIG5ldyBsaW5lcy4gPGJyPjxicj5lLmcuPGJyPiA8cHJlPiAgcnVuLWFyZ3M6IFx8PGJyPiAgICAjIEJhc2ljIEF1dGg8YnI+ICAgIC0tYmFzaWMtYXV0aDxicj4gICAgbG9naW46cGFzc3dvcmQ8L3ByZT48YnI+4pqg77iPIEF2b2lkIHdyYXBwaW5nIHZhbHVlcyBpbiBxdW90ZXMsIGFzIHRoZXNlIHdpbGwgYmUgZXNjYXBlZCBhbmQgaW5jbHVkZWQgaW4gdGhlIHZhbHVlIHBhc3NlZCB0byBgbWFwaWAuPGJyPjxicj7im5TvuI8gYCJsb2dpbjpwYXNzd29yZCJgIDxicj7inIUgYGxvZ2luOnBhc3N3b3JkYCB8CnwgICB8IGBtYXloZW0tdXJsYCB8IHN0cmluZyB8IE1heWhlbSBBUEkgb3ZlcnJpZGUgfCBodHRwczovL2FwcC5tYXloZW0uc2VjdXJpdHkKCgojIyMgQ29udGludWluZyBvbiBlcnJvcgoKVGhlIGFib3ZlIGV4YW1wbGVzIHdpbGwgZmFpbCB0aGUgd29ya2Zsb3cgd2hlbiBpc3N1ZXMgYXJlIGZvdW5kLiBJZiB5b3UKd2FudCB0byBlbnN1cmUgdGhlIEFjdGlvbiBjb250aW51ZXMsIGV2ZW4gaWYgTWF5aGVtIGZvciBBUEkgZm91bmQKaXNzdWVzLCB0aGVuIGNvbnRpbnVlLW9uLWVycm9yIGNhbiBiZSB1c2VkLgoKYGBgeWFtbApuYW1lOiBNYXloZW0gZm9yIEFQSQpvbjoKICAgIHB1c2g6CiAgICBwdWxsX3JlcXVlc3Q6CmpvYnM6CiAgc2VjdXJpdHk6CiAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CiAgICBzdGVwczoKICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MwogICAgICB3aXRoOgogICAgICAgICMgZmV0Y2ggYSBncmVhdGVyIG51bWJlciBvZiBjb21taXRzIGZvciBjb21wdXRpbmcgZGlmZnMgYmV0d2VlbiBqb2JzCiAgICAgICAgZmV0Y2gtZGVwdGg6IDUwCgogICAgLSBuYW1lOiBTdGFydCB5b3VyIEFQSQogICAgICBydW46IC4vcnVuX3lvdXJfYXBpLnNoICYKCiAgICAtIG5hbWU6IFJ1biBNYXloZW0gZm9yIEFQSSB0byBjaGVjayBmb3IgdnVsbmVyYWJpbGl0aWVzCiAgICAgIHVzZXM6IEZvckFsbFNlY3VyZS9tYXBpLWFjdGlvbkB2MQogICAgICBjb250aW51ZS1vbi1lcnJvcjogdHJ1ZSAjIDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICB3aXRoOgogICAgICAgIG1heWhlbS10b2tlbjogJHt7IHNlY3JldHMuTUFZSEVNX1RPS0VOIH19CiAgICAgICAgYXBpLXVybDogaHR0cDovL2xvY2FsaG9zdDo4MDAwICMgPC0gdXBkYXRlIHRoaXMKICAgICAgICBhcGktc3BlYzogeW91ci1vcGVuYXBpLXNwZWMtb3ItcG9zdG1hbi1jb2xsZWN0aW9uLmpzb24KICAgICAgICAjIEFkZGl0aW9uYWwgJ21hcGkgcnVuJyBhcmd1bWVudHMKICAgICAgICBydW4tYXJnczogfAogICAgICAgICAgIyBCYXNpYyBBdXRoCiAgICAgICAgICAtLWJhc2ljLWF1dGgKICAgICAgICAgIGxvZ2luOnBhc3N3b3JkCiAgICAgICAgICAjIERvIG5vdCBmdXp6IHRoZSAnL2xvZ291dCcgZW5kcG9pbnQKICAgICAgICAgIC0taWdub3JlLWVuZHBvaW50CiAgICAgICAgICAvbG9nb3V0CiAgICAgICAgICAjIFRyZWF0IGFsbCB3YXJuaW5ncyBhcyBlcnJvcnMKICAgICAgICAgIC0td2FybmFzZXJyb3IKCmBgYAoKIyBSZXBvcnRzCgpNYXloZW0gZm9yIEFQSSBnZW5lcmF0ZSByZXBvcnRzIHdoZW4geW91IHBhc3MgYHNhcmlmLXJlcG9ydGAgb3IKYGh0bWwtcmVwb3J0YCB0byB0aGUgaW5wdXQuIE1ha2Ugc3VyZSB0byBwYXNzIGBjb250aW51ZS1vbi1lcnJvcmAgdG8gdGhlCk1heWhlbSBmb3IgQVBJIHN0ZXAgaWYgeW91IHdhbnQgdG8gcHJvY2VzcyB0aGUgcmVwb3J0cyBpbiBmb2xsb3ctdXAKc3RlcHMuCgojIyBBcnRpZmFjdCBIVE1MIFJlcG9ydAoKIVtIVE1MIFJlcG9ydF0oLi9pbWdzL3NhbXBsZS1yZXBvcnQucG5nKQoKVG8gY3JlYXRlIGFuIGFydGlmYWN0IG9mIHRoZSByZXBvcnQgaW4geW91ciBidWlsZCwgYWRkIHRoaXMgc3RlcCB0byB5b3VyIHBpcGVsaW5lOgoKYGBgeWFtbAotIG5hbWU6IFJ1biBNYXloZW0gZm9yIEFQSSB0byBjaGVjayBmb3IgdnVsbmVyYWJpbGl0aWVzCiAgdXNlczogRm9yQWxsU2VjdXJlL21hcGktYWN0aW9uQHYxCiAgY29udGludWUtb24tZXJyb3I6IHRydWUKICB3aXRoOgogICAgbWF5aGVtLXRva2VuOiAke3sgc2VjcmV0cy5NQVlIRU1fVE9LRU4gfX0KICAgIGFwaS11cmw6IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCAjIDwtIHVwZGF0ZSB0aGlzCiAgICBhcGktc3BlYzogeW91ci1vcGVuYXBpLXNwZWMtb3ItcG9zdG1hbi1jb2xsZWN0aW9uLmpzb24gIyA8LSB1cGRhdGUgdGhpcwogICAgaHRtbC1yZXBvcnQ6IG1hcGkuaHRtbAoKIyBBcmNoaXZlIEhUTUwgcmVwb3J0Ci0gbmFtZTogQXJjaGl2ZSBNYXloZW0gZm9yIEFQSSByZXBvcnQKICB1c2VzOiBhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEB2NAogIHdpdGg6CiAgICBuYW1lOiBtYXBpLXJlcG9ydAogICAgcGF0aDogbWFwaS5odG1sCmBgYAoKIyMgR2l0SHViIENvZGUgU2Nhbm5pbmcgc3VwcG9ydAoKIVtNYXloZW0gZm9yIEFQSSBpc3N1ZSBpbiB5b3VyClBSXSguL2ltZ3Mvc2FyaWYtZ2l0aHViLnBuZykKClVwbG9hZGluZyBTQVJJRiByZXBvcnRzIHRvIEdpdEh1YiBhbGxvd3MgeW91IHRvIHNlZSBhbnkgaXNzdWUgZm91bmQgYnkKTWF5aGVtIGZvciBBUEkgcmlnaHQgb24geW91ciBQUiwgYXMgd2VsbCBhcyBpbiB0aGUgIlNlY3VyaXR5IiB0YWIgb2YKeW91ciByZXBvc2l0b3J5LiBUaGlzIGN1cnJlbnRseSByZXF1aXJlcyB5b3UgdG8gaGF2ZSBhIEdpdEh1YiBFbnRlcnByaXNlClBsYW4gb3IgaGF2ZSBhIHB1YmxpYyByZXBvc2l0b3J5LiBUbyB1cGxvYWQgdGhlIFNBUklGIHJlcG9ydCwgYWRkIHRoaXMKc3RlcCB0byB5b3VyIHBpcGVsaW5lOgoKYGBgeWFtbAotIG5hbWU6IFJ1biBNYXloZW0gZm9yIEFQSSB0byBjaGVjayBmb3IgdnVsbmVyYWJpbGl0aWVzCiAgdXNlczogRm9yQWxsU2VjdXJlL21hcGktYWN0aW9uQHYxCiAgY29udGludWUtb24tZXJyb3I6IHRydWUKICB3aXRoOgogICAgbWF5aGVtLXRva2VuOiAke3sgc2VjcmV0cy5NQVlIRU1fVE9LRU4gfX0KICAgIGFwaS11cmw6IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCAjIDwtIHVwZGF0ZSB0aGlzCiAgICBhcGktc3BlYzogeW91ci1vcGVuYXBpLXNwZWMtb3ItcG9zdG1hbi1jb2xsZWN0aW9uLmpzb24gIyA8LSB1cGRhdGUgdGhpcwogICAgc2FyaWYtcmVwb3J0OiBtYXBpLnNhcmlmCgojIFVwbG9hZCBTQVJJRiBmaWxlIChvbmx5IGF2YWlsYWJsZSBvbiBwdWJsaWMgcmVwb3Mgb3IgZ2l0aHViIGVudGVycHJpc2UpCi0gbmFtZTogVXBsb2FkIFNBUklGIGZpbGUKICB1c2VzOiBnaXRodWIvY29kZXFsLWFjdGlvbi91cGxvYWQtc2FyaWZAdjEKICB3aXRoOgogICAgc2FyaWZfZmlsZTogbWFwaS5zYXJpZgpgYGAKCklmIHlvdXIgQVBJIHNlcnZlciBzZW5kcyBiYWNrIHN0YWNrdHJhY2VzIGluIHRoZSA1MDAgSW50ZXJuYWwgU2VydmVyCkVycm9yIChvbmx5IGRvIHRoaXMgaW4gYSB0ZXN0IGVudmlyb25tZW50IC0tIG5ldmVyIGluIHByb2R1Y3Rpb24hKSwKTWF5aGVtIGZvciBBUEkgd2lsbCB0cnkgdG8gbWFwIGlzc3VlcyBpdCBmaW5kcyB0byB0aGUgZXhhY3QgbGluZSBvZiBjb2RlCnRoYXQgdHJpZ2dlcmVkIHRoZSBpc3N1ZS4K readmeEtag: '"a93412e0937a08badd3215d4241c37032454cc01"' readmeLastModified: Mon, 25 Nov 2024 10:11:51 GMT repositoryId: 355229366 description: ' 🤖 Run a Mayhem for API scan in GitHub Actions' created: '2021-04-06T14:58:24Z' updated: '2025-05-31T15:36:41Z' language: TypeScript archived: false stars: 24 watchers: 8 forks: 4 owner: ForAllSecure logo: https://avatars.githubusercontent.com/u/12204221?v=4 license: MIT repoEtag: '"311115291cf4e9b073bfc09632ca25884080d7d777cc88a63c559bfb3f9f4efe"' repoLastModified: Sat, 31 May 2025 15:36:41 GMT foundInMaster: true v3_1: true - source: https://openapi.tools/ name: JSONSchema::Validator category: Data Validators language: Perl link: https://metacpan.org/pod/JSONSchema::Validator repository: https://github.com/skbkontur/perl-jsonschema-validator source_description: >- A Perl library which validates request/response according to an OpenAPI specification v3: true repositoryMetadata: base64Readme: >- IyBOQU1FCgpKU09OU2NoZW1hOjpWYWxpZGF0b3IgLSBWYWxpZGF0b3IgZm9yIEpTT04gU2NoZW1hIERyYWZ0NC9EcmFmdDYvRHJhZnQ3IGFuZCBPcGVuQVBJIFNwZWNpZmljYXRpb24gMy4wCgojIFZFUlNJT04KCnZlcnNpb24gMC4wMTEKCiMgU1lOT1BTSVMKCiAgICAjIHRvIGdldCBPcGVuQVBJIHZhbGlkYXRvciBpbiBZQU1MIGZvcm1hdAogICAgJHZhbGlkYXRvciA9IEpTT05TY2hlbWE6OlZhbGlkYXRvci0+bmV3KHJlc291cmNlID0+ICdmaWxlOi8vL3NvbWUvcGF0aC90by9vYXMzMC55bWwnKTsKICAgIG15ICgkcmVzdWx0LCAkZXJyb3JzLCAkd2FybmluZ3MpID0gJHZhbGlkYXRvci0+dmFsaWRhdGVfcmVxdWVzdCgKICAgICAgICBtZXRob2QgPT4gJ0dFVCcsCiAgICAgICAgb3BlbmFwaV9wYXRoID0+ICcvdXNlci97aWR9L3Byb2ZpbGUnLAogICAgICAgIHBhcmFtZXRlcnMgPT4gewogICAgICAgICAgICBwYXRoID0+IHsKICAgICAgICAgICAgICAgIGlkID0+IDEyMzQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcXVlcnkgPT4gewogICAgICAgICAgICAgICAgZGV0YWlscyA9PiAnc2hvcnQnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGhlYWRlciA9PiB7CiAgICAgICAgICAgICAgICBoZWFkZXIgPT4gJ2hlYWRlciB2YWx1ZScKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY29va2llID0+IHsKICAgICAgICAgICAgICAgIG5hbWUgPT4gJ3ZhbHVlJwogICAgICAgICAgICB9LAogICAgICAgICAgICBib2R5ID0+IFskaXNfZXhpc3RzLCAkY29udGVudF90eXBlLCAkZGF0YV0KICAgICAgICB9CiAgICApOwogICAgbXkgKCRyZXN1bHQsICRlcnJvcnMsICR3YXJuaW5ncykgPSAkdmFsaWRhdG9yLT52YWxpZGF0ZV9yZXNwb25zZSgKICAgICAgICBtZXRob2QgPT4gJ0dFVCcsCiAgICAgICAgb3BlbmFwaV9wYXRoID0+ICcvdXNlci97aWR9L3Byb2ZpbGUnLAogICAgICAgIHN0YXR1cyA9PiAnMjAwJywKICAgICAgICBwYXJhbWV0ZXJzID0+IHsKICAgICAgICAgICAgaGVhZGVyID0+IHsKICAgICAgICAgICAgICAgIGhlYWRlciA9PiAnaGVhZGVyIHZhbHVlJwogICAgICAgICAgICB9LAogICAgICAgICAgICBib2R5ID0+IFskaXNfZXhpc3RzLCAkY29udGVudF90eXBlLCAkZGF0YV0KICAgICAgICB9CiAgICApCgogICAgIyB0byBnZXQgSlNPTiBTY2hlbWEgRHJhZnQ0L0RyYWZ0Ni9EcmFmdDcgdmFsaWRhdG9yIGluIEpTT04gZm9ybWF0CiAgICAkdmFsaWRhdG9yID0gSlNPTlNjaGVtYTo6VmFsaWRhdG9yLT5uZXcocmVzb3VyY2UgPT4gJ2h0dHA6Ly9leGFtcGxlLmNvbS9kcmFmdDQvc2NoZW1hLmpzb24nKQogICAgbXkgKCRyZXN1bHQsICRlcnJvcnMpID0gJHZhbGlkYXRvci0+dmFsaWRhdGVfc2NoZW1hKCRvYmplY3RfdG9fdmFsaWRhdGUpCgojIERFU0NSSVBUSU9OCgpPcGVuQVBJIHNwZWNpZmljYXRpb24gYW5kIEpTT04gU2NoZW1hIERyYWZ0NC9EcmFmdDYvRHJhZnQ3IHZhbGlkYXRvcnMgd2l0aCBtaW5pbXVtIGRlcGVuZGVuY2llcy4KCiMgTUVUSE9EUwoKIyMgbmV3CgpDcmVhdGVzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbGlkYXRvcnM6IEpTT05TY2hlbWE6OlZhbGlkYXRvcjo6RHJhZnQ0LCBKU09OU2NoZW1hOjpWYWxpZGF0b3I6OkRyYWZ0NiwgSlNPTlNjaGVtYTo6VmFsaWRhdG9yOjpEcmFmdDcsIEpTT05TY2hlbWE6OlZhbGlkYXRvcjo6T0FTMzAuCgogICAgbXkgJHZhbGlkYXRvciA9IEpTT05TY2hlbWE6OlZhbGlkYXRvci0+bmV3KHJlc291cmNlID0+ICdmaWxlOi8vL3NvbWUvcGF0aC90by9vYXMzMC55bWwnKTsKICAgIG15ICR2YWxpZGF0b3IgPSBKU09OU2NoZW1hOjpWYWxpZGF0b3ItPm5ldyhyZXNvdXJjZSA9PiAnaHR0cDovL2V4YW1wbGUuY29tL2RyYWZ0NC9zY2hlbWEuanNvbicpOwogICAgbXkgJHZhbGlkYXRvciA9IEpTT05TY2hlbWE6OlZhbGlkYXRvci0+bmV3KHNjaGVtYSA9PiB7JyRzY2hlbWEnID0+ICdwYXRoL3RvL3NjaGVtYScsIC4uLn0pOwogICAgbXkgJHZhbGlkYXRvciA9IEpTT05TY2hlbWE6OlZhbGlkYXRvci0+bmV3KHNjaGVtYSA9PiB7Li4ufSwgc3BlY2lmaWNhdGlvbiA9PiAnRHJhZnQ0Jyk7CgppZiBwYXJhbWV0ZXIgYHNwZWNpZmljYXRpb25gIGlzIG5vdCBzcGVjaWZpZWQgdGhlbiB0eXBlIG9mIHZhbGlkYXRvciB3aWxsIGJlIGRldGVybWluZWQgYnkgYCRzY2hlbWFgIGtleQpmb3IgSlNPTiBTY2hlbWEgRHJhZnQ0L0RyYWZ0Ni9EcmFmdDcgYW5kIGJ5IGBvcGVuYXBpYCBrZXkgZm9yIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAzLjAgaW4gYHNjaGVtYWAgcGFyYW1ldGVyLgoKUGFyYW1ldGVyczoKCi0gcmVzb3VyY2VzCgogICAgVG8gZ2V0IHNjaGVtYSBieSB1cmkKCi0gc2NoZW1hCgogICAgVG8gZ2V0IGV4cGxpY2l0bHkgc3BlY2lmaWVkIHNjaGVtYQoKLSBzcGVjaWZpY2F0aW9uCgogICAgVG8gc3BlY2lmeSBzcGVjaWZpY2F0aW9uIG9mIHNjaGVtYQoKLSB2YWxpZGF0ZVxfc2NoZW1hCgogICAgRG8gbm90IHZhbGlkYXRlIHNwZWNpZmllZCBzY2hlbWEKCi0gYmFzZVxfdXJpCgogICAgVG8gc3BlY2lmeSBiYXNlIHVyaSBvZiBzY2hlbWEuCiAgICBUaGlzIHBhcmFtZXRlciB1c2VkIHRvIGJ1aWxkIGFic29sdXRlIHBhdGggYnkgcmVsYXRpdmUgcmVmZXJlbmNlIGluIHNjaGVtYS4KICAgIEJ5IGRlZmF1bHQgYGJhc2VfdXJpYCBpcyBlcXVhbCB0byB0aGUgcmVzb3VyY2UgcGF0aCBpZiB0aGUgcmVzb3VyY2UgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBvdGhlcndpc2UgdGhlIGAkaWRgIGtleSBpbiB0aGUgc2NoZW1hLgoKQWRkaXRpb25hbCBwYXJhbWV0ZXJzIG5lZWQgdG8gYmUgbG9va2VkIGF0IGluIGEgc3BlY2lmaWMgdmFsaWRhdG9yIGNsYXNzLgpDdXJyZW50bHkgdGhlcmUgYXJlIHZhbGlkYXRvcnM6IEpTT05TY2hlbWE6OlZhbGlkYXRvcjo6RHJhZnQ0LCBKU09OU2NoZW1hOjpWYWxpZGF0b3I6OkRyYWZ0NiwgSlNPTlNjaGVtYTo6VmFsaWRhdG9yOjpEcmFmdDcsIEpTT05TY2hlbWE6OlZhbGlkYXRvcjo6T0FTMzAuCgojIyB2YWxpZGF0ZVxfcGF0aHMKClZhbGlkYXRlcyBhbGwgZmlsZXMgc3BlY2lmaWVkIGJ5IHBhdGggZ2xvYnMuCgogICAgbXkgJHJlc3VsdCA9IEpTT05TY2hlbWE6OlZhbGlkYXRvci0+dmFsaWRhdGVfcGF0aHMoWycvc29tZS9wYXRoL3RvL29wZW5hcGkuKi55YW1sJywgJy9zb21lL3BhdGgvdG8vanNvbnNjaGVtYS4qLmpzb24nXSk7CiAgICBmb3IgbXkgJGZpbGUgKGtleXMgJSRyZXN1bHQpIHsKICAgICAgICBteSAoJHJlcywgJGVycm9ycykgPSBAeyRyZXN1bHQtPnskZmlsZX19OwogICAgfQoKIyMgdmFsaWRhdGVcX3Jlc291cmNlCgojIyB2YWxpZGF0ZVxfcmVzb3VyY2VcX3NjaGVtYQoKIyBDQVZFQVRTCgojIyBZQU1MICYgYm9vbGVhbnMKCldoZW4gcmVhZGluZyBzY2hlbWEgZGVmaW5pdGlvbnMgZnJvbSBZQU1MLCBwbGVhc2Ugbm90ZSB0aGF0IHRoZSBzdGFuZGFyZApiZWhhdmlvdXIgb2YgW1lBTUw6OlBQXShodHRwczovL21ldGFjcGFuLm9yZy9wb2QvWUFNTCUzQSUzQVBQKSBhbmQgW1lBTUw6OlhTXShodHRwczovL21ldGFjcGFuLm9yZy9wb2QvWUFNTCUzQSUzQVhTKSBpcyB0byByZWFkIHZhbHVlcyB3aGljaCBldmFsdWF0ZQp0byBgdHJ1ZWAgb3IgYGZhbHNlYCBpbiBhIHBlcmwgY29udGV4dC4gVGhlc2UgdmFsdWVzIGhhdmUgbm8gcmVjb2duaXphYmxlCidib29sZWFuIHR5cGUnLiBUaGlzIGlzIGluc3VmZmljaWVudCBmb3IgSlNPTiBzY2hlbWEgdmFsaWRhdGlvbi4KClRvIG1ha2UgdGhlIFlBTUwgcmVhZGVycyBhbmQgYm9vbGVhbnMgd29yayB3aXRoIGBKU09OU2NoZW1hOjpWYWxpZGF0b3JgLAp5b3UgbmVlZCB0byB1c2UgdGhlIGBKU09OOjpQUGAgKGluY2x1ZGVkIGluIFBlcmwncyBzdGFuZGFyZCBsaWJyYXJ5KSBtb2R1bGUKYXMgZm9sbG93czoKCiAgICAjIGZvciBZQU1MOjpQUAogICAgdXNlIFlBTUw6OlBQOwoKICAgIG15ICRyZWFkZXIgPSBZQU1MOjpQUC0+bmV3KCBib29sZWFuID0+ICdKU09OOjpQUCcgKTsKICAgICMgZnJvbSBoZXJlLCB5b3UgY2FuIGZyZWVseSB1c2UgdGhlIHJlYWRlciB0bwogICAgIyByZWFkICYgd3JpdGUgYm9vbGVhbnMgYXMgJ3RydWUnIGFuZCAnZmFsc2UnCgoKICAgICMgZm9yIFlBTUw6OlhTCiAgICB1c2UgWUFNTDo6WFM7CgogICAgbXkgJHJlYWRlciA9IFlBTUw6OlhTLT5uZXc7CgogICAgIyBhbmQgd2hlbmV2ZXIgeW91IHJlYWQgWUFNTCB3aXRoIHRoaXMgcmVhZGVyLCBkbzoKICAgIG15ICR5YW1sID0gZG8gewogICAgICBsb2NhbCAkWUFNTDo6WFM6OkJvb2xlYW4gPSAnSlNPTjo6UFAnOwogICAgICAkcmVhZGVyLT5Mb2FkKCRzdHJpbmcpOyAjIG9yICRyZWFkZXItPkxvYWRGaWxlKCdmaWxlbmFtZScpOwogICAgfTsKClRoaXMgaXNuJ3QgYSBwcm9ibGVtIHdoZW4geW91IHVzZSB0aGUgYHJlc291cmNlYCBhcmd1bWVudCB0byB0aGUKYEpTT05TY2hlbWE6OlZhbGlkYXRvcjo6bmV3YCBjb25zdHJ1Y3RvciwgYnV0IGlmIHlvdSByZWFkIHlvdXIgb3duCnNjaGVtYSBhbmQgdXNlIHRoZSBgc2NoZW1hYCBhcmd1bWVudCwgdGhpcyBpcyBzb21ldGhpbmcgdG8gYmUgYXdhcmUgb2YuCgojIyBhbGxvd1xfYmlnbnVtID0+IDEKClRoZSBgYWxsb3dfYmlnbnVtID1gIDE+IHNldHRpbmcgKGF2YWlsYWJsZSBvbiBbSlNPTjo6WFNdKGh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9KU09OJTNBJTNBWFMpIGFuZApbQ3BhbmVsOjpKU09OOjpYU10oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL0NwYW5lbCUzQSUzQUpTT04lM0ElM0FYUykpIG9uIGRlc2VyaWFsaXplcnMgaXMgbm90IHN1cHBvcnRlZC4KCldoZW4gZGVzZXJpYWxpemluZyBhIHJlcXVlc3QgYm9keSB3aXRoIGEgSlNPTiBwYXJzZXIgY29uZmlndXJlZCB3aXRoCmBhbGxvd19iaWdudW0gPWAgMT4sIGZsb2F0cyAtIGV2ZW4gb25lcyB3aGljaCBmaXQgaW50byB0aGUgcmVndWxhcgpmbG9hdCByYW5nZXMgLSB3aWxsIGJlIGRlc2VyaWFsaXplZCBhcyBgTWF0aDo6QmlnRmxvYXRgLiBTaW1pbGFybHksCmludGVnZXJzIG91dHNpZGUgb2YgdGhlIGludGVybmFsIGludGVnZXIgcmFuZ2UgYXJlIGRlc2VyaWFsaXplZCBhcwpgTWF0aDo6QmlnSW50YC4gTnVtYmVycyByZXByZXNlbnRlZCBhcyBgTWF0aDo6QmlnKmAgb2JqZWN0cyBhcmUgbm90CnJlY29nbml6ZWQgYXMgYWN0dWFsIG51bWJlcnMgYW5kIHdpbGwgZmFpbCB2YWxpZGF0aW9uLgoKIyBBVVRIT1JTCgotIEFsZXhleSBTdGF2cm92IDxsb2dpb25pekB5YS5ydT4KLSBJdmFuIFB1dGludHNldiA8dWlkQHJ5ZGxhYi5ydT4KLSBBbnRvbiBGZWRvdG92IDx0b3NoYS5mZWRvdG92LjIwMDBAZ21haWwuY29tPgotIERlbmlzIEliYWV2IDxkaW9ueXNAZ21haWwuY29tPgotIEFuZHJleSBLaG96b3YgPGFuZHJleUByeWRsYWIucnU+CgojIENPTlRSSUJVVE9SUwoKLSBFcmlrIEh1ZWxzbWFubiA8ZWh1ZWxzQGdtYWlsLmNvbT4KLSBKYW1lcyBXYXRlcnMgPGphbWVzQGpjd2F0ZXJzLmNvLnVrPgoKIyBDT1BZUklHSFQgQU5EIExJQ0VOU0UKClRoaXMgc29mdHdhcmUgaXMgQ29weXJpZ2h0IChjKSAyMDIxIGJ5IEFsZXhleSBTdGF2cm92LgoKVGhpcyBpcyBmcmVlIHNvZnR3YXJlLCBsaWNlbnNlZCB1bmRlcjoKCiAgICBUaGUgTUlUIChYMTEpIExpY2Vuc2UK readmeEtag: '"32131c216eadce854b63f2683e969d148b8f6a5b"' readmeLastModified: Fri, 09 Sep 2022 20:43:45 GMT repositoryId: 382338785 description: JSON Schema and OpenAPI data validator for Perl created: '2021-07-02T12:25:14Z' updated: '2025-08-22T15:27:27Z' language: Perl archived: false stars: 7 watchers: 7 forks: 4 owner: skbkontur logo: https://avatars.githubusercontent.com/u/5087073?v=4 license: NOASSERTION repoEtag: '"6bff7480de4e1f12236d8fbd8da528b861b6c3fdf205d487bac073d7c142f5fe"' repoLastModified: Fri, 22 Aug 2025 15:27:27 GMT foundInMaster: true id: 66dd4d5692dee0c9db5adb6f7788057a - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags name: openapi-python-client category: - Converters - Parsers link: https://github.com/openapi-generators/openapi-python-client repository: https://github.com/openapi-generators/openapi-python-client language: Python source_description: Generate modern Python clients from OpenAPI 3.0 documents. v2: false v3: true repositoryMetadata: base64Readme: >- IVtSdW4gQ2hlY2tzXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1nZW5lcmF0b3JzL29wZW5hcGktcHl0aG9uLWNsaWVudC93b3JrZmxvd3MvUnVuJTIwQ2hlY2tzL2JhZGdlLnN2ZykKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL29wZW5hcGktZ2VuZXJhdG9ycy9vcGVuYXBpLXB5dGhvbi1jbGllbnQvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3RyaWF4dGVjL29wZW5hcGktcHl0aG9uLWNsaWVudCkKWyFbTUlUIGxpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGljZW5zZS1NSVQtYmx1ZS5zdmcpXShodHRwczovL2xiZXNzb24ubWl0LWxpY2Vuc2Uub3JnLykKWyFbR2VuZXJpYyBiYWRnZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS90eXBlX2NoZWNrZWQtbXlweS1pbmZvcm1hdGlvbmFsLnN2ZyldKGh0dHBzOi8vbXlweS5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvaW50cm9kdWN0aW9uLmh0bWwpClshW1B5UEkgdmVyc2lvbiBzaGllbGRzLmlvXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9vcGVuYXBpLXB5dGhvbi1jbGllbnQuc3ZnKV0oaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9vcGVuYXBpLXB5dGhvbi1jbGllbnQvKQpbIVtEb3dubG9hZHNdKGh0dHBzOi8vc3RhdGljLnBlcHkudGVjaC9wZXJzb25hbGl6ZWQtYmFkZ2Uvb3BlbmFwaS1weXRob24tY2xpZW50P3BlcmlvZD10b3RhbCZ1bml0cz1pbnRlcm5hdGlvbmFsX3N5c3RlbSZsZWZ0X2NvbG9yPWJsdWUmcmlnaHRfY29sb3I9Z3JlZW4mbGVmdF90ZXh0PURvd25sb2FkcyldKGh0dHBzOi8vcGVweS50ZWNoL3Byb2plY3Qvb3BlbmFwaS1weXRob24tY2xpZW50KQoKIyBvcGVuYXBpLXB5dGhvbi1jbGllbnQKCkdlbmVyYXRlIG1vZGVybiBQeXRob24gY2xpZW50cyBmcm9tIE9wZW5BUEkgMy4wIGFuZCAzLjEgZG9jdW1lbnRzLgoKX1RoaXMgZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBvcnQgT3BlbkFQSSAyLnggRktBIFN3YWdnZXIuIElmIHlvdSBuZWVkIHRvIHVzZSBhbiBvbGRlciBkb2N1bWVudCwgdHJ5IHVwZ3JhZGluZyBpdCB0bwp2ZXJzaW9uIDMgZmlyc3Qgd2l0aCBvbmUgb2YgbWFueSBhdmFpbGFibGUgY29udmVydGVycy5fCgoqKlRoaXMgcHJvamVjdCBpcyBzdGlsbCBpbiBkZXZlbG9wbWVudCBhbmQgZG9lcyBub3Qgc3VwcG9ydCBhbGwgT3BlbkFQSSBmZWF0dXJlcyoqCgojIyBXaHkgVGhpcz8KClRoaXMgdG9vbCBmb2N1c2VzIG9uIGNyZWF0aW5nIHRoZSBiZXN0IGRldmVsb3BlciBleHBlcmllbmNlIGZvciBQeXRob24gZGV2ZWxvcGVycyBieToKCjEuIFVzaW5nIGFsbCB0aGUgbGF0ZXN0IGFuZCBncmVhdGVzdCBQeXRob24gZmVhdHVyZXMgbGlrZSB0eXBlIGFubm90YXRpb25zIGFuZCBkYXRhY2xhc3Nlcy4KMi4gSGF2aW5nIGRvY3VtZW50YXRpb24gYW5kIHVzYWdlIGluc3RydWN0aW9ucyBzcGVjaWZpYyB0byB0aGlzIG9uZSBnZW5lcmF0b3IuCjMuIEJlaW5nIHdyaXR0ZW4gaW4gUHl0aG9uIHdpdGggSmluamEyIHRlbXBsYXRlcywgbWFraW5nIGl0IGVhc2llciB0byBpbXByb3ZlIGFuZCBleHRlbmQgZm9yIFB5dGhvbiBkZXZlbG9wZXJzLiBJdCdzIGFsc28gbXVjaCBlYXNpZXIgdG8gaW5zdGFsbCBhbmQgdXNlIGlmIHlvdSBhbHJlYWR5IGhhdmUgUHl0aG9uLgoKIyMgSW5zdGFsbGF0aW9uCgpJIHJlY29tbWVuZCB5b3UgaW5zdGFsbCB3aXRoIFtwaXB4XShodHRwczovL3BpcHhwcm9qZWN0LmdpdGh1Yi5pby9waXB4Lykgc28geW91IGRvbid0IGNvbmZsaWN0IHdpdGggYW55IG90aGVyIHBhY2thZ2VzIHlvdSBtaWdodCBoYXZlOiBgcGlweCBpbnN0YWxsIG9wZW5hcGktcHl0aG9uLWNsaWVudCAtLWluY2x1ZGUtZGVwc2AuCgo+IE5vdGUgdGhlIGAtLWluY2x1ZGUtZGVwc2Agb3B0aW9uIG1ha2VzIGBydWZmYCBhdmFpbGFibGUgaW4geW91ciBwYXRoIHNvIHRoYXQgYG9wZW5hcGktcHl0aG9uLWNsaWVudGAgY2FuIHVzZSBpdCB0byBjbGVhbiB1cCB0aGUgZ2VuZXJhdGVkIGNvZGUuCgoqKklmIHlvdSB1c2UgYHBpcHggcnVuYCB0aGVuIHRoZSBwb3N0LWdlbmVyYXRpb24gaG9va3Mgd2lsbCBub3QgYmUgYXZhaWxhYmxlIHVubGVzcyB5b3UgaW5zdGFsbCB0aGVtIG1hbnVhbGx5LioqCgpZb3UgY2FuIGFsc28gaW5zdGFsbCB3aXRoIG5vcm1hbCBwaXA6IGBwaXAgaW5zdGFsbCBvcGVuYXBpLXB5dGhvbi1jbGllbnRgCgpUaGVuLCBpZiB5b3Ugd2FudCB0YWIgY29tcGxldGlvbjogYG9wZW5hcGktcHl0aG9uLWNsaWVudCAtLWluc3RhbGwtY29tcGxldGlvbmAKCiMjIFVzYWdlCgojIyMgQ3JlYXRlIGEgbmV3IGNsaWVudAoKYG9wZW5hcGktcHl0aG9uLWNsaWVudCBnZW5lcmF0ZSAtLXVybCBodHRwczovL215LmFwaS5jb20vb3BlbmFwaS5qc29uYAoKVGhpcyB3aWxsIGdlbmVyYXRlIGEgbmV3IGNsaWVudCBsaWJyYXJ5IG5hbWVkIGJhc2VkIG9uIHRoZSB0aXRsZSBpbiB5b3VyIE9wZW5BUEkgc3BlYy4gRm9yIGV4YW1wbGUsIGlmIHRoZSB0aXRsZQpvZiB5b3VyIEFQSSBpcyAiTXkgQVBJIiwgdGhlIGV4cGVjdGVkIG91dHB1dCB3aWxsIGJlICJteS1hcGktY2xpZW50Ii4gWW91IGNhbiBjaGFuZ2UgdGhhdCBkaXJlY3RvcnkgbmFtZSB3aXRoIHRoZSBjb25maWcgZmlsZSAoZG9jdW1lbnRlZCBiZWxvdykgb3Igd2l0aCBgLS1vdXRwdXQtcGF0aGAuCgpJZiB0aGUgZGlyZWN0b3J5IHRvIGdlbmVyYXRlIGFscmVhZHkgZXhpc3RzLCB5b3UnbGwgZ2V0IGFuIGVycm9yIHVubGVzcyB5b3UgdXNlIGAtLW92ZXJ3cml0ZWAuCgpZb3UgY2FuIHVzZSBhbiBPcGVuQVBJIGZpbGUgaW5zdGVhZCBvZiBhIFVSTCBsaWtlIGBvcGVuYXBpLXB5dGhvbi1jbGllbnQgZ2VuZXJhdGUgLS1wYXRoIGxvY2F0aW9uL29uL2Rpc2svb3BlbmFwaS5qc29uYC4KCiMjIyBVc2luZyBjdXN0b20gdGVtcGxhdGVzCgpUaGlzIGZlYXR1cmUgbGV2ZXJhZ2VzIEppbmphMidzIFtDaG9pY2VMb2FkZXJdKGh0dHBzOi8vamluamEucGFsbGV0c3Byb2plY3RzLmNvbS9lbi8yLjExLngvYXBpLyNqaW5qYTIuQ2hvaWNlTG9hZGVyKSBhbmQgW0ZpbGVTeXN0ZW1Mb2FkZXJdKGh0dHBzOi8vamluamEucGFsbGV0c3Byb2plY3RzLmNvbS9lbi8yLjExLngvYXBpLyNqaW5qYTIuRmlsZVN5c3RlbUxvYWRlcikuIFRoaXMgbWVhbnMgeW91IGRvIF9ub3RfIG5lZWQgdG8gY3VzdG9taXplIGV2ZXJ5IHRlbXBsYXRlLiBTaW1wbHkgY29weSB0aGUgdGVtcGxhdGUocykgeW91IHdhbnQgdG8gY3VzdG9taXplIGZyb20gW3RoZSBkZWZhdWx0IHRlbXBsYXRlIGRpcmVjdG9yeV0ob3BlbmFwaV9weXRob25fY2xpZW50L3RlbXBsYXRlcykgdG8geW91ciBvd24gY3VzdG9tIHRlbXBsYXRlIGRpcmVjdG9yeSAoZmlsZSBuYW1lcyBfbXVzdF8gbWF0Y2ggZXhhY3RseSkgYW5kIHBhc3MgdGhlIHRlbXBsYXRlIGRpcmVjdG9yeSB0aHJvdWdoIHRoZSBgY3VzdG9tLXRlbXBsYXRlLXBhdGhgIGZsYWcgdG8gdGhlIGBnZW5lcmF0ZWAgY29tbWFuZDoKCmBgYApvcGVuYXBpLXB5dGhvbi1jbGllbnQgZ2VuZXJhdGUgXAogIC0tdXJsIGh0dHBzOi8vbXkuYXBpLmNvbS9vcGVuYXBpLmpzb24gXAogIC0tY3VzdG9tLXRlbXBsYXRlLXBhdGg9cmVsYXRpdmUvcGF0aC90by9teXRlbXBsYXRlcwpgYGAKCl9CZSBmb3Jld2FybmVkLCB0aGlzIGlzIGEgYmV0YS1sZXZlbCBmZWF0dXJlIGluIHRoZSBzZW5zZSB0aGF0IHRoZSBBUEkgZXhwb3NlZCBpbiB0aGUgdGVtcGxhdGVzIGlzIHVuZG9jdW1lbnRlZCBhbmQgdW5zdGFibGUuXwoKIyMgV2hhdCBZb3UgR2V0CgoxLiBBIGBweXByb2plY3QudG9tbGAgZmlsZSwgb3B0aW9uYWxseSB3aXRoIFtQb2V0cnldIG1ldGFkYXRhIChkZWZhdWx0KSwgW1BETV0gKHdpdGggYC0tbWV0YT1wZG1gKSwgb3Igb25seSBbUnVmZl0gY29uZmlnLgoyLiBBIGBSRUFETUUubWRgIHlvdSdsbCBtb3N0IGRlZmluaXRlbHkgbmVlZCB0byB1cGRhdGUgd2l0aCB5b3VyIHByb2plY3QncyBkZXRhaWxzCjMuIEEgUHl0aG9uIG1vZHVsZSBuYW1lZCBqdXN0IGxpa2UgdGhlIGF1dG8tZ2VuZXJhdGVkIHByb2plY3QgbmFtZSAoZS5nLiAibXlfYXBpX2NsaWVudCIpIHdoaWNoIGNvbnRhaW5zOgogICAxLiBBIGBjbGllbnRgIG1vZHVsZSB3aGljaCB3aWxsIGhhdmUgYm90aCBhIGBDbGllbnRgIGNsYXNzIGFuZCBhbiBgQXV0aGVudGljYXRlZENsaWVudGAgY2xhc3MuIFlvdSdsbCBuZWVkIHRoZXNlCiAgICAgIGZvciBjYWxsaW5nIHRoZSBmdW5jdGlvbnMgaW4gdGhlIGBhcGlgIG1vZHVsZS4KICAgMi4gQW4gYGFwaWAgbW9kdWxlIHdoaWNoIHdpbGwgY29udGFpbiBvbmUgbW9kdWxlIGZvciBlYWNoIHRhZyBpbiB5b3VyIE9wZW5BUEkgc3BlYywgYXMgd2VsbCBhcyBhIGBkZWZhdWx0YCBtb2R1bGUKICAgICAgZm9yIGVuZHBvaW50cyB3aXRob3V0IGEgdGFnLiBFYWNoIG9mIHRoZXNlIG1vZHVsZXMgaW4gdHVybiBjb250YWlucyBvbmUgZnVuY3Rpb24gZm9yIGNhbGxpbmcgZWFjaCBlbmRwb2ludC4KICAgMy4gQSBgbW9kZWxzYCBtb2R1bGUgd2hpY2ggaGFzIGFsbCB0aGUgY2xhc3NlcyBkZWZpbmVkIGJ5IHRoZSB2YXJpb3VzIHNjaGVtYXMgaW4geW91ciBPcGVuQVBJIHNwZWMKNC4gQSBgc2V0dXAucHlgIGZpbGUgX2lmXyB5b3UgdXNlIGAtLW1ldGE9c2V0dXBgIChkZWZhdWx0IGlzIGAtLW1ldGE9cG9ldHJ5YCkKCkZvciBhIGZ1bGwgZXhhbXBsZSB5b3UgY2FuIGxvb2sgYXQgdGhlIGBlbmRfdG9fZW5kX3Rlc3RzYCBkaXJlY3Rvcnkgd2hpY2ggaGFzIGBiYXNlbGluZV9vcGVuYXBpXzMuMC5qc29uYCBhbmQgYGJhc2VsaW5lX29wZW5hcGlfMy4xLnlhbWxgIGZpbGVzLgpUaGUgImdvbGRlbi1yZWNvcmQiIGluIHRoYXQgc2FtZSBkaXJlY3RvcnkgaXMgdGhlIGdlbmVyYXRlZCBjbGllbnQgZnJvbSBlaXRoZXIgb2YgdGhvc2UgT3BlbkFQSSBkb2N1bWVudHMuCgojIyBDb25maWd1cmF0aW9uCgpZb3UgY2FuIHBhc3MgYSBZQU1MIChvciBKU09OKSBmaWxlIHRvIG9wZW5hcGktcHl0aG9uLWNsaWVudCB3aXRoIHRoZSBgLS1jb25maWdgIG9wdGlvbiBpbiBvcmRlciB0byBjaGFuZ2Ugc29tZSBiZWhhdmlvci4KVGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIGFyZSBzdXBwb3J0ZWQ6CgojIyMgY2xhc3Nfb3ZlcnJpZGVzCgpVc2VkIHRvIGNoYW5nZSB0aGUgbmFtZSBvZiBnZW5lcmF0ZWQgbW9kZWwgY2xhc3Nlcy4gVGhpcyBwYXJhbSBzaG91bGQgYmUgYSBtYXBwaW5nIG9mIGV4aXN0aW5nIGNsYXNzIG5hbWUKKHVzdWFsbHkgYSBrZXkgaW4gdGhlICJzY2hlbWFzIiBzZWN0aW9uIG9mIHlvdXIgT3BlbkFQSSBkb2N1bWVudCkgdG8gY2xhc3NfbmFtZSBhbmQgbW9kdWxlX25hbWUuIEFzIGFuIGV4YW1wbGUsIGlmIHRoZQpuYW1lIG9mIGEgbW9kZWwgaW4gT3BlbkFQSSAoYW5kIHRoZXJlZm9yZSB0aGUgZ2VuZXJhdGVkIGNsYXNzIG5hbWUpIHdhcyBzb21ldGhpbmcgbGlrZSAiX1ByaXZhdGVJbnRlcm5hbExvbmdOYW1lIgphbmQgeW91IHdhbnQgdGhlIGdlbmVyYXRlZCBjbGllbnQncyBtb2RlbCB0byBiZSBjYWxsZWQgIlNob3J0TmFtZSIgaW4gYSBtb2R1bGUgY2FsbGVkICJzaG9ydF9uYW1lIiB5b3UgY291bGQgZG8gdGhpczoKCkV4YW1wbGU6CgpgYGB5YW1sCmNsYXNzX292ZXJyaWRlczoKICBfUHJpdmF0ZUludGVybmFsTG9uZ05hbWU6CiAgICBjbGFzc19uYW1lOiBTaG9ydE5hbWUKICAgIG1vZHVsZV9uYW1lOiBzaG9ydF9uYW1lCmBgYAoKVGhlIGVhc2llc3Qgd2F5IHRvIGZpbmQgd2hhdCBuZWVkcyB0byBiZSBvdmVycmlkZGVuIGlzIHByb2JhYmx5IHRvIGdlbmVyYXRlIHlvdXIgY2xpZW50IGFuZCBnbyBsb29rIGF0IGV2ZXJ5dGhpbmcgaW4gdGhlIGBtb2RlbHNgIGZvbGRlci4KCiMjIyBkb2NzdHJpbmdzX29uX2F0dHJpYnV0ZXMKCkJ5IGRlZmF1bHQsIHdoZW4gYG9wZW5hcGktcHl0aG9uLWNsaWVudGAgZ2VuZXJhdGVzIGEgbW9kZWwgY2xhc3MsIGl0IGluY2x1ZGVzIGEgbGlzdCBvZiBhdHRyaWJ1dGVzIGFuZCB0aGVpcgpkZXNjcmlwdGlvbnMgaW4gdGhlIGRvY3N0cmluZyBmb3IgdGhlIGNsYXNzLiBJZiB5b3Ugc2V0IHRoaXMgb3B0aW9uIHRvIGB0cnVlYCwgdGhlbiB0aGUgYXR0cmlidXRlIGRlc2NyaXB0aW9ucwp3aWxsIGJlIHB1dCBpbiBkb2NzdHJpbmdzIGZvciB0aGUgYXR0cmlidXRlcyB0aGVtc2VsdmVzLCBhbmQgd2lsbCBub3QgYmUgaW4gdGhlIGNsYXNzIGRvY3N0cmluZy4KCmBgYHlhbWwKZG9jc3RyaW5nc19vbl9hdHRyaWJ1dGVzOiB0cnVlCmBgYAoKIyMjIGxpdGVyYWxfZW51bXMKCkJ5IGRlZmF1bHQsIGBvcGVuYXBpLXB5dGhvbi1jbGllbnRgIGdlbmVyYXRlcyBjbGFzc2VzIGluaGVyaXRpbmcgZm9yIGBFbnVtYCBmb3IgZW51bXMuIEl0IGNhbiBpbnN0ZWFkIHVzZSBgTGl0ZXJhbGAgCnZhbHVlcyBmb3IgZW51bXMgYnkgc2V0dGluZyB0aGlzIHRvIGB0cnVlYDoKCmBgYHlhbWwKbGl0ZXJhbF9lbnVtczogdHJ1ZQpgYGAKClRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgaWYgZW51bSB2YWx1ZXMsIHdoZW4gdHJhbnNmb3JtZWQgdG8gdGhlaXIgUHl0aG9uIG5hbWVzLCBlbmQgdXAgY29uZmxpY3RpbmcgZHVlIHRvIGNhc2Ugc2Vuc2l0aXZpdHkgb3Igc3BlY2lhbCBzeW1ib2xzLgoKIyMjIGdlbmVyYXRlX2FsbF90YWdzCgpgb3BlbmFwaS1weXRob24tY2xpZW50YCBnZW5lcmF0ZXMgbW9kdWxlIG5hbWVzIHdpdGhpbiB0aGUgYGFwaWAgbW9kdWxlIGJhc2VkIG9uIHRoZSBPcGVuQVBJIGB0YWdzYCBvZiBlYWNoIGVuZHBvaW50LiAKQnkgZGVmYXVsdCwgb25seSB0aGUgX2ZpcnN0XyB0YWcgaXMgZ2VuZXJhdGVkLiBJZiB5b3Ugd2FudCB0byBnZW5lcmF0ZSAqKmR1cGxpY2F0ZSoqIGVuZHBvaW50IGZ1bmN0aW9ucyB1c2luZyBfZXZlcnlfIHRhZyAKbGlzdGVkLCB5b3UgY2FuIGVuYWJsZSB0aGlzIG9wdGlvbjoKCmBgYHlhbWwKZ2VuZXJhdGVfYWxsX3RhZ3M6IHRydWUKYGBgCgojIyMgcHJvamVjdF9uYW1lX292ZXJyaWRlIGFuZCBwYWNrYWdlX25hbWVfb3ZlcnJpZGUKClVzZWQgdG8gY2hhbmdlIHRoZSBuYW1lIG9mIGdlbmVyYXRlZCBjbGllbnQgbGlicmFyeSBwcm9qZWN0L3BhY2thZ2UuIElmIHRoZSBwcm9qZWN0IG5hbWUgaXMgY2hhbmdlZCBidXQgYW4gb3ZlcnJpZGUgZm9yIHRoZSBwYWNrYWdlIG5hbWUKaXNuJ3QgcHJvdmlkZWQsIHRoZSBwYWNrYWdlIG5hbWUgd2lsbCBiZSBjb252ZXJ0ZWQgZnJvbSB0aGUgcHJvamVjdCBuYW1lIHVzaW5nIHRoZSBzdGFuZGFyZCBjb252ZW50aW9uIChyZXBsYWNpbmcgYC1gJ3Mgd2l0aCBgX2AncykuCgpFeGFtcGxlOgoKYGBgeWFtbApwcm9qZWN0X25hbWVfb3ZlcnJpZGU6IG15LXNwZWNpYWwtcHJvamVjdC1uYW1lCnBhY2thZ2VfbmFtZV9vdmVycmlkZTogbXlfZXh0cmFfc3BlY2lhbF9wYWNrYWdlX25hbWUKYGBgCgojIyMgZmllbGRfcHJlZml4CgpXaGVuIGdlbmVyYXRpbmcgcHJvcGVydGllcywgdGhlIGBuYW1lYCBhdHRyaWJ1dGUgb2YgdGhlIE9wZW5BUEkgc2NoZW1hIHdpbGwgYmUgdXNlZC4gV2hlbiB0aGUgYG5hbWVgIGlzIG5vdCBhIHZhbGlkIFB5dGhvbiBpZGVudGlmaWVyIChlLmcuIGJlZ2lucyB3aXRoIGEgbnVtYmVyKSB0aGlzIHN0cmluZyB3aWxsIGJlIHByZXBlbmRlZC4gRGVmYXVsdHMgdG8gImZpZWxkXF8iLiBJdCB3aWxsIGFsc28gYmUgdXNlZCB0byBwcmVmaXggZmllbGRzIGluIHNjaGVtYSBzdGFydGluZyB3aXRoICJfIiBpbiBvcmRlciB0byBhdm9pZCBhbWJpZ3VvdXMgc2VtYW50aWNzLgoKRXhhbXBsZToKCmBgYHlhbWwKZmllbGRfcHJlZml4OiBhdHRyXwpgYGAKCiMjIyBwYWNrYWdlX3ZlcnNpb25fb3ZlcnJpZGUKClNwZWNpZnkgdGhlIHBhY2thZ2UgdmVyc2lvbiBvZiB0aGUgZ2VuZXJhdGVkIGNsaWVudC4gSWYgdW5zZXQsIHRoZSBjbGllbnQgd2lsbCB1c2UgdGhlIHZlcnNpb24gb2YgdGhlIE9wZW5BUEkgc3BlYy4KCkV4YW1wbGU6CgpgYGB5YW1sCnBhY2thZ2VfdmVyc2lvbl9vdmVycmlkZTogMS4yLjMKYGBgCgojIyMgcG9zdF9ob29rcwoKSW4gdGhlIGNvbmZpZyBmaWxlLCB0aGVyZSdzIGFuIGVhc3kgd2F5IHRvIHRlbGwgYG9wZW5hcGktcHl0aG9uLWNsaWVudGAgdG8gcnVuIGFkZGl0aW9uYWwgY29tbWFuZHMgYWZ0ZXIgZ2VuZXJhdGlvbi4gSGVyZSdzIGFuIGV4YW1wbGUgc2hvd2luZyB0aGUgZGVmYXVsdCBjb21tYW5kcyAodXNpbmcgW1J1ZmZdKSB0aGF0IHdpbGwgcnVuIGlmIHlvdSBkb24ndCBvdmVycmlkZSB0aGVtIGluIGNvbmZpZzoKCmBgYHlhbWwKcG9zdF9ob29rczoKICAgLSAicnVmZiBjaGVjayAuIC0tZml4LW9ubHkiCiAgIC0gInJ1ZmYgZm9ybWF0IC4iCmBgYAoKIyMjIHVzZV9wYXRoX3ByZWZpeGVzX2Zvcl90aXRsZV9tb2RlbF9uYW1lcwoKQnkgZGVmYXVsdCwgYG9wZW5hcGktcHl0aG9uLWNsaWVudGAgZ2VuZXJhdGVzIGNsYXNzIG5hbWVzIHdoaWNoIGluY2x1ZGUgdGhlIGZ1bGwgcGF0aCB0byB0aGUgc2NoZW1hLCBpbmNsdWRpbmcgYW55IHBhcmVudC10eXBlcy4gVGhpcyBjYW4gcmVzdWx0IGluIHZlcnkgbG9uZyBjbGFzcyBuYW1lcyBsaWtlIGBNeVJvdXRlU29tZUNsYXNzQW5vdGhlckNsYXNzUmVzcG9uc2Vg4oCUd2hpY2ggaXMgdmVyeSB1bmlxdWUgYW5kIHVubGlrZWx5IHRvIGNhdXNlIGNvbmZsaWN0cyB3aXRoIGZ1dHVyZSBBUEkgYWRkaXRpb25zLCBidXQgYWxzbyBzdXBlciB2ZXJib3NlLgoKSWYgeW91IGFyZSBjYXJlZnVsbHkgY3VyYXRpbmcgeW91ciBgdGl0bGVgIHByb3BlcnRpZXMgYWxyZWFkeSB0byBlbnN1cmUgbm8gZHVwbGljYXRlIGNsYXNzIG5hbWVzLCB5b3UgY2FuIHR1cm4gb2ZmIHRoaXMgcHJlZml4aW5nIGZlYXR1cmUgYnkgc2V0dGluZyBgdXNlX3BhdGhfcHJlZml4ZXNfZm9yX3RpdGxlX21vZGVsX25hbWVzYCB0byBgZmFsc2VgIGluIHlvdXIgY29uZmlnIGZpbGUuIFRoaXMgd2lsbCB1c2UgdGhlIGB0aXRsZWAgcHJvcGVydHkgb2YgYW55IG9iamVjdCB0aGF0IGhhcyBpdCBzZXQgX3dpdGhvdXRfIHByZWZpeGluZy4KCklmIHRoaXMgb3B0aW9uIHJlc3VsdHMgaW4gY29uZmxpY3RzLCB5b3Ugd2lsbCBuZWVkIHRvIG1hbnVhbGx5IG92ZXJyaWRlIGNsYXNzIG5hbWVzIGluc3RlYWQgdmlhIHRoZSBgY2xhc3Nfb3ZlcnJpZGVzYCBvcHRpb24uCgojIyMgaHR0cF90aW1lb3V0CgpCeSBkZWZhdWx0LCB0aGUgdGltZW91dCBmb3IgcmV0cmlldmluZyB0aGUgc2NoZW1hIGZpbGUgdmlhIEhUVFAgaXMgNSBzZWNvbmRzLiBJbiBjYXNlIHRoZXJlIGlzIGFuIGVycm9yIHdoZW4gcmV0cmlldmluZyB0aGUgc2NoZW1hLCB5b3UgbWlnaHQgdHJ5IGFuZCBpbmNyZWFzZSB0aGlzIHNldHRpbmcgdG8gYSBoaWdoZXIgdmFsdWUuCgojIyMgY29udGVudF90eXBlX292ZXJyaWRlcwoKTm9ybWFsbHksIGBvcGVuYXBpLXB5dGhvbi1jbGllbnRgIHdpbGwgc2tpcCBhbnkgYm9kaWVzIG9yIHJlc3BvbnNlcyB0aGF0IGl0IGRvZXNuJ3QgcmVjb2duaXplIHRoZSBjb250ZW50IHR5cGUgZm9yLgpUaGlzIGNvbmZpZyB0ZWxscyB0aGUgZ2VuZXJhdG9yIHRvIHRyZWF0IGEgZ2l2ZW4gY29udGVudCB0eXBlIGxpa2UgYW5vdGhlci4KCmBgYHlhbWwKY29udGVudF90eXBlX292ZXJyaWRlczoKICBhcHBsaWNhdGlvbi96aXA6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpgYGAKCiMjIFN1cHBvcnRlZCBFeHRlbnNpb25zCgojIyMgeC1lbnVtLXZhcm5hbWVzCgpUaGlzIGV4dGVuc2lvbiBoYXMgYmVlbiBhZG9wdGVkIGJ5IHNpbWlsYXIgcHJvamVjdHMgc3VjaCBhcyBbT3BlbkFQSSBUb29sc10oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9wdWxsLzkxNykuCkl0IGlzIGludGVuZGVkIHRvIHByb3ZpZGUgdXNlci1mcmllbmRseSBuYW1lcyBmb3IgaW50ZWdlciBFbnVtIG1lbWJlcnMgdGhhdCBnZXQgZ2VuZXJhdGVkLgpJdCBpcyBjcml0aWNhbCB0aGF0IHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IG1hdGNoZXMgdGhhdCBvZiB0aGUgZW51bSB2YWx1ZXMuCgpgYGAKIkNvbG9ycyI6IHsKICAgInR5cGUiOiAiaW50ZWdlciIsCiAgICJmb3JtYXQiOiAiaW50MzIiLAogICAiZW51bSI6IFsKICAgICAgIDAsCiAgICAgICAxLAogICAgICAgMgogICBdLCAKICAieC1lbnVtLXZhcm5hbWVzIjogWwogICAgICAiUmVkIiwKICAgICAgIkdyZWVuIiwKICAgICAgIkJsdWUiCiAgIF0KfQpgYGAKClJlc3VsdHMgaW46CmBgYApjbGFzcyBDb2xvcihJbnRFbnVtKToKICAgIFJFRCA9IDAKICAgIEdSRUVOID0gMQogICAgQkxVRSA9IDIKYGBgCgpbY2hhbmdlbG9nLm1kXTogQ0hBTkdFTE9HLm1kCltwb2V0cnldOiBodHRwczovL3B5dGhvbi1wb2V0cnkub3JnLwpbUERNXTogaHR0cHM6Ly9wZG0tcHJvamVjdC5vcmcvbGF0ZXN0LwpbUnVmZl06IGh0dHBzOi8vZG9jcy5hc3RyYWwuc2gvcnVmZi8K readmeEtag: '"4a886d2992f16a1e5b0ca8c63868476618a80829"' readmeLastModified: Tue, 04 Nov 2025 01:05:20 GMT repositoryId: 240776275 description: Generate modern Python clients from OpenAPI created: '2020-02-15T19:33:46Z' updated: '2026-02-05T23:16:31Z' language: Python archived: false stars: 1901 watchers: 15 forks: 264 owner: openapi-generators logo: https://avatars.githubusercontent.com/u/84925606?v=4 license: MIT repoEtag: '"99c7fe952f1471f600eb315d73c3507b13bbc181550da324693e3b77b4cd9f71"' repoLastModified: Thu, 05 Feb 2026 23:16:31 GMT foundInMaster: true id: 784ec4adac4e47e4211ea74ef36dd5a5 v3_1: true - source: - https://openapi.tools/ - openapi3 tags name: Elements category: Documentation link: https://stoplight.io/open-source/elements repository: https://github.com/stoplightio/elements language: - Javascript - Custom Element source_description: >- Build beautiful, interactive API Docs with embeddable React or Web Components, powered by OpenAPI and Markdown v2: true v3: true v3_1: true repositoryMetadata: base64Readme: >- WyFbRWxlbWVudHMgLSBPcGVuQVBJIFBvd2VyZWQgQVBJIERvY3VtZW50YXRpb25dKGRvY3MvaW1hZ2VzL3JlYWRtZS1oZWFkZXIuc3ZnKV1bZWxlbWVudHNfbGFuZGluZ19wYWdlXQoKWyFbU3Rvcnlib29rXShodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvc3Rvcnlib29ranMvYnJhbmRAbWFzdGVyL2JhZGdlL2JhZGdlLXN0b3J5Ym9vay5zdmcpXShodHRwczovL3N0b3BsaWdodC1lbGVtZW50cy5uZXRsaWZ5LmFwcCkKWyFbQ2lyY2xlQ0ldW2NpcmNsZV9jaV9pbWFnZV1dW2NpcmNsZV9jaV0KWyFbTlBNIERvd25sb2Fkc11bY2lyY2xlX2NpX2ltYWdlXV1bbnBtXQpbIVtTdG9wbGlnaHQgRm9yZXN0XShodHRwczovL2ltZy5zaGllbGRzLmlvL2Vjb2xvZ2kvdHJlZXMvc3RvcGxpZ2h0aW5jKV1bc3RvcGxpZ2h0X2ZvcmVzdF0KCkJlYXV0aWZ1bCBBUEkgZG9jdW1lbnRhdGlvbiBwb3dlcmVkIGJ5IE9wZW5BUEkgYW5kIE1hcmtkb3duLiBVc2UgdGhlc2UgVUkgY29tcG9uZW50cyB0byBjcmVhdGUgQVBJIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uLCBvciBtb3JlIGNvbXBsZXRlIGRvY3VtZW50YXRpb24gd2l0aCBNYXJrZG93biBhcnRpY2xlcyBjb3ZlcmluZyB0dXRvcmlhbHMsIGhvdy10byBndWlkZXMsIGV0Yy4KCkF2YWlsYWJsZSBhcyBSZWFjdCBDb21wb25lbnRzLCBvciBXZWIgQ29tcG9uZW50cywgeW91IGNhbiB1c2UgRWxlbWVudHMgYWxsIHRvZ2V0aGVyIHRvIGJ1aWxkIGJlYXV0aWZ1bCB0aHJlZS1jb2x1bW4gIlN0cmlwZS1lc3F1ZSIgZG9jdW1lbnRhdGlvbiwgb3Igc3RhY2tlZCBkb2N1bWVudGF0aW9uIHRoYXRzIGVhc2llciBmb3IgaW50ZWdyYXRpbmcgaW50byBleGlzdGluZyBDb250ZW50IE1hbmFnZW1lbnQgU3lzdGVtcyB3aXRoIHRoZWlyIG93biBuYXZpZ2F0aW9uLgoKIyBPdmVydmlldwoKLSBbT3ZlcnZpZXddKCNvdmVydmlldykKICAtIFvwn5OWIENvbW11bml0eV0oIy1jb21tdW5pdHkpCiAgLSBb8J+Rge+4j/Cfl6gg77iP77iPRXhhbXBsZXNdKCPvuI8t77iP77iPZXhhbXBsZXMpCiAgLSBb8J+PgSBVc2FnZV0oIy11c2FnZSkKICAgIC0gW1JlYWN0IENvbXBvbmVudF0oI3JlYWN0LWNvbXBvbmVudCkKICAgIC0gW1dlYiBDb21wb25lbnRdKCN3ZWItY29tcG9uZW50KQogIC0gW/CfmqcgUm9hZG1hcF0oIy1yb2FkbWFwKQogIC0gW+Kame+4jyBJbnRlZ3JhdGlvbnNdKCPvuI8taW50ZWdyYXRpb25zKQogIC0gW/Cfj4EgSGVscCBPdGhlcnMgVXRpbGl6ZSBFbGVtZW50c10oIy1oZWxwLW90aGVycy11dGlsaXplLWVsZW1lbnRzKQogIC0gW/CfkY8gQ29udHJpYnV0aW5nXSgjLWNvbnRyaWJ1dGluZykKICAtIFvwn46JIFRoYW5rc10oIy10aGFua3MpCiAgLSBb8J+MsiBTcG9uc29yIEVsZW1lbnRzIGJ5IFBsYW50aW5nIGEgVHJlZV0oIy1zcG9uc29yLWVsZW1lbnRzLWJ5LXBsYW50aW5nLWEtdHJlZSkKCiMjIPCfk5YgQ29tbXVuaXR5CgpMZXQncyBjaGF0IGFib3V0IGZlYXR1cmVzLCBpZGVhcywgd2hhdCB5b3UncmUgZG9pbmcgd2l0aCBFbGVtZW50cywgb24gW0dpdEh1YiBEaXNjdXNzaW9uc10oaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvL2VsZW1lbnRzL2Rpc2N1c3Npb25zKS4KCiMjIPCfkYHvuI/wn5eoIO+4j++4j0V4YW1wbGVzCgpTdG9wbGlnaHQgRWxlbWVudHMgY29tZXMgd2l0aCBhIGZldyBleGFtcGxlIGludGVncmF0aW9uIHByb2plY3RzLCBzaG93aW5nIHlvdSBob3cgdG8gdXRpbGl6ZSBFbGVtZW50cyB3aXRoIGRpZmZlcmVudCBmcmFtZXdvcmtzLgotICoqW3JlYWN0LWNyYV0oLi9leGFtcGxlcy9yZWFjdC1jcmEpKiogLSBBbiBleGFtcGxlIGFwcCBidWlsdCB1c2luZyBDcmVhdGUgUmVhY3QgQXBwIHV0aWxpemluZyBTdG9wbGlnaHQgRWxlbWVudHMuCi0gKipbYW5ndWxhcl0oLi9leGFtcGxlcy9hbmd1bGFyKSoqIC0gQW4gYW5ndWxhciBhcHAgdXRpbGl6aW5nIHRoZSBXZWIgQ29tcG9uZW50cyBkaXN0cmlidXRpb24gb2YgRWxlbWVudHMuCi0gKipbYm9vdHN0cmFwXSguL2V4YW1wbGVzL2Jvb3RzdHJhcCkqKiAtIEEgc2luZ2xlIEhUTUwgcGFnZSB1dGlsaXppbmcgdGhlIFdlYiBDb21wb25lbnRzIGRpc3RyaWJ1dGlvbiB2aWEgYSBnbG9iYWwgc2NyaXB0IHRhZy4KClRvIHJ1biB0aGVzZSBleGFtcGxlcyB5b3Vyc2VsZjoKMS4gQ2xvbmUgdGhpcyByZXBvLgoyLiBHbyB0byBgZXhhbXBsZXNgIGZvbGRlciBhbmQgb3BlbiBhbiBleGFtcGxlLCBlLmcuOiBgZXhhbXBsZXMvYW5ndWxhcmAuCjMuIFJ1biBgeWFybmAgdG8gaW5zdGFsbCBhbGwgZGVwZW5kZW5jaWVzLgo0LiBSdW4gYHlhcm4gc3RhcnRgIHRvIHJ1biB0aGUgZXhhbXBsZS4KCj4gKipOb3RlOioqIGZvciAqKmJvb3RzdHJhcCoqIGV4YW1wbGUganVzdCBnbyBzdHJhaWdodCB0byBpdHMgZGlyZWN0b3J5IGFuZCBvcGVuIHRoZSBIVE1MIGZpbGUuCgojIyDwn4+BIFVzYWdlCgpUaGUgZXhhbXBsZXMgd2lsbCBob3BlZnVsbHkgaGVscCBzaG93IEVsZW1lbnRzIHdvcmtpbmcgaW4gY2xvc2UgdG8gcmVhbCB3b3JsZCBzaXR1YXRpb25zLCBidXQgdGhlIG1vc3QgYmFyZSBib25lcyBleGFtcGxlcyBvZiBFbGVtZW50cyBjYW4gYmUgZm91bmQgYmVsb3cuCgojIyMgUmVhY3QgQ29tcG9uZW50CgpgYGBiYXNoCiQgbnBtIGluc3RhbGwgQHN0b3BsaWdodC9lbGVtZW50cwpgYGAKCmBgYGpzCmltcG9ydCB7IEFQSSB9IGZyb20gIkBzdG9wbGlnaHQvZWxlbWVudHMiOwoKPEFQSQogIGFwaURlc2NyaXB0aW9uVXJsPSJodHRwczovL2FwaS5hcGlzLmd1cnUvdjIvc3BlY3MvZ2l0aHViLmNvbS8xLjEuNC9vcGVuYXBpLnlhbWwiCiAgcm91dGVyPSJoaXN0b3J5IgovPgpgYGAKCkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIEVsZW1lbnRzIGFzIGEgUmVhY3QgY29tcG9uZW50LCBoZWFkIG92ZXIgdG8gb3VyIFtSZWFjdCBkb2N1bWVudGF0aW9uXShkb2NzL2dldHRpbmctc3RhcnRlZC9lbGVtZW50cy9yZWFjdC5tZCkuCiMjIyBXZWIgQ29tcG9uZW50CgpgYGBodG1sCjwhZG9jdHlwZSBodG1sPgo8aHRtbCBsYW5nPSJlbiI+CiAgPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iPgogICAgPHRpdGxlPkVsZW1lbnRzIGluIEhUTUw8L3RpdGxlPgogICAgPCEtLSBFbWJlZCBlbGVtZW50cyBFbGVtZW50cyB2aWEgV2ViIENvbXBvbmVudCAtLT4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3VucGtnLmNvbS9Ac3RvcGxpZ2h0L2VsZW1lbnRzL3dlYi1jb21wb25lbnRzLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vdW5wa2cuY29tL0BzdG9wbGlnaHQvZWxlbWVudHMvc3R5bGVzLm1pbi5jc3MiPgogIDwvaGVhZD4KICA8Ym9keT4KCiAgICA8ZWxlbWVudHMtYXBpCiAgICAgIGFwaURlc2NyaXB0aW9uVXJsPSJodHRwczovL2FwaS5hcGlzLmd1cnUvdjIvc3BlY3MvZ2l0aHViLmNvbS8xLjEuNC9vcGVuYXBpLnlhbWwiCiAgICAgIHJvdXRlcj0iaGFzaCIKICAgICAgbGF5b3V0PSJzaWRlYmFyIgogICAgLz4KCiAgPC9ib2R5Pgo8L2h0bWw+CmBgYAoKTG9hZCB0aGlzIHBhZ2UgdXAgaW4geW91ciBicm93c2VyIGFuZCB5b3Ugc2hvdWxkIHNlZSB0aGUgW0dpdEh1YiBSRVNUIEFQSV0oaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vcmVzdCkgZG9jdW1lbnRlZCBpbiBTdG9wbGlnaHQgRWxlbWVudHMuCgpGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyBFbGVtZW50cyBhcyBhIFdlYiBDb21wb25lbnQsIGhlYWQgb3ZlciB0byBvdXIgW1dlYiBDb21wb25lbnQgZG9jdW1lbnRhdGlvbl0oZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvZWxlbWVudHMvaHRtbC5tZCkuCgojIyDwn5qnIFJvYWRtYXAKCi0gW3hdIEFQSSBDb25zb2xlIChhLmsuYSAiVHJ5IGl0ISIpCi0gW3hdIEF1dG9tYXRpYyBDb2RlIFNhbXBsZXMKLSBbeF0gQXV0b21hdGljIEV4YW1wbGVzCi0gW3hdIFJlYWN0ICYgV2ViIENvbXBvbmVudCBTdXBwb3J0Ci0gW3hdIE9wZW5BUEkgU3VwcG9ydAogIC0gW3hdIE9wZW5BUEkgdjMuMQogIC0gW3hdIE9wZW5BUEkgdjMuMAogIC0gW3hdIE9wZW5BUEkgdjIuMAotIFt4XSBDYWxsYmFja3MKLSBbeF0gV2ViaG9va3MKLSBbeF0gTXVsdGlwbGUgQVBJcyAoYS5rLmEgIkRldiBQb3J0YWwiKQoKU3VibWl0IHlvdXIgaWRlYXMgZm9yIG5ldyBmdW5jdGlvbmFsaXR5IG9uIHRoZSBbU3RvcGxpZ2h0IFJvYWRtYXBdKGh0dHBzOi8vcm9hZG1hcC5zdG9wbGlnaHQuaW8vP3V0bV9zb3VyY2U9Z2l0aHViJnV0bV9tZWRpdW09ZWxlbWVudHMmdXRtX2NhbXBhaWduPXJlYWRtZSkuCgojIyDimpnvuI8gSW50ZWdyYXRpb25zCgotIFtTdG9wbGlnaHQgU3R1ZGlvXShodHRwczovL3N0b3BsaWdodC5pby9zdHVkaW8vP3V0bV9zb3VyY2U9Z2l0aHViLmNvbSZ1dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9jYW1wYWlnbj1naXRodWJfcmVwb19lbGVtZW50cykgLSBGcmVlIHZpc3VhbCBPcGVuQVBJIGRlc2lnbmVyIHRoYXQgdXNlcyBFbGVtZW50cyB0byBwcmV2aWV3IHlvdXIgQVBJIGRlc2NyaXB0aW9ucyBvbiB0aGUgZmx5LgotIFtTdG9wbGlnaHQgUGxhdGZvcm1dKGh0dHBzOi8vc3RvcGxpZ2h0LmlvLz91dG1fc291cmNlPWdpdGh1Yi5jb20mdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249Z2l0aHViX3JlcG9fZWxlbWVudHMpIC0gQ29sbGFib3JhdGl2ZSBBUEkgRGVzaWduIFBsYXRmb3JtIGZvciBkZXNpZ25pbmcsIGRldmVsb3BpbmcgYW5kIGRvY3VtZW50aW5nIEFQSXMgd2l0aCBob3N0ZWQgZG9jdW1lbnRhdGlvbiBwb3dlcmVkIGJ5IEVsZW1lbnRzLgotIFtMYXJhdmVsUEhQIEVsZW1lbnRzXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvanVzdHN0ZXZla2luZy9sYXJhdmVsLXN0b3BsaWdodC1lbGVtZW50cykgLSBBIHNpbXBsZSBBUEkgZG9jdW1lbnRhdGlvbiBwYWNrYWdlIGZvciBMYXJhdmVsIHVzaW5nIE9wZW5BUEkgYW5kIFN0b3BsaWdodCBFbGVtZW50cy4KCiMjIPCfj4EgSGVscCBPdGhlcnMgVXRpbGl6ZSBFbGVtZW50cwoKSWYgeW91J3JlIHVzaW5nIEVsZW1lbnRzIGZvciBhbiBpbnRlcmVzdGluZyB1c2UgY2FzZSwgW2NvbnRhY3QgdXNdKG1haWx0bzpncm93dGhAc3RvcGxpZ2h0LmlvKSBmb3IgYSBjYXNlIHN0dWR5LiBXZSdsbCBhZGQgaXQgdG8gYSBsaXN0IGhlcmUuIFNwcmVhZCB0aGUgZ29vZG5lc3Mg8J+OiQoKIyMg8J+RjyBDb250cmlidXRpbmcKCklmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBjb250cmlidXRpbmcgdG8gRWxlbWVudHMgaXRzZWxmLCBjaGVjayBvdXQgb3VyIFtjb250cmlidXRpbmcgZG9jcyDih5ddW2NvbnRyaWJ1dGluZ10gYW5kIFtjb2RlIG9mIGNvbmR1Y3Qg4oeXXVtjb2RlX29mX2NvbmR1Y3RdIHRvIGdldCBzdGFydGVkLgoKIyMg8J+OiSBUaGFua3MKCkVsZW1lbnRzIGlzIGJ1aWx0IG9uIHRvcCBvZiBsb3RzIG9mIGV4Y2VsbGVudCBwYWNrYWdlcywgYW5kIGhlcmUgYXJlIGEgZmV3IHdlJ2QgbGlrZSB0byBzYXkgYSBzcGVjaWFsIHRoYW5rcyB0by4KCi0gW2h0dHBzbmlwcGV0XShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9odHRwc25pcHBldCkgYnkgW0tvbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9Lb25nKS4KLSBbb3BlbmFwaS1zYW1wbGVyXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vcGVuYXBpLXNhbXBsZXIpIGJ5IFtSZURvY2x5XShodHRwczovL3JlZG9jLmx5LykuCgpDaGVjayB0aGVzZSBwcm9qZWN0cyBvdXQhCgojIyDwn4yyIFNwb25zb3IgRWxlbWVudHMgYnkgUGxhbnRpbmcgYSBUcmVlCgpJZiB5b3Ugd291bGQgbGlrZSB0byB0aGFuayB1cyBmb3IgY3JlYXRpbmcgRWxlbWVudHMsIHdlIGFzayB0aGF0IHlvdSBbKipidXkgdGhlIHdvcmxkIGEgdHJlZSoqXVtzdG9wbGlnaHRfZm9yZXN0XS4KCltzdG9wbGlnaHRfZm9yZXN0XTogaHR0cHM6Ly9lY29sb2dpLmNvbS9zdG9wbGlnaHRpbmMKCltjb2RlX29mX2NvbmR1Y3RdOiBDT0RFX09GX0NPTkRVQ1QubWQKW2NvbnRyaWJ1dGluZ106IENPTlRSSUJVVElORy5tZApbZG93bmxvYWQtcmVsZWFzZV06IGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9wbGlnaHRpby9lbGVtZW50cy9yZWxlYXNlcy9sYXRlc3QKW2VsZW1lbnRzX2xhbmRpbmdfcGFnZV06IGh0dHBzOi8vZWxlbWVudHMtZGVtby5zdG9wbGlnaHQuaW8/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT1lbGVtZW50cyZ1dG1fY2FtcGFpZ249cmVhZG1lCltjaXJjbGVfY2ldOiBodHRwczovL2NpcmNsZWNpLmNvbS9naC9zdG9wbGlnaHRpby9lbGVtZW50cwpbY2lyY2xlX2NpX2ltYWdlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jaXJjbGVjaS9idWlsZC9naXRodWIvc3RvcGxpZ2h0aW8vZWxlbWVudHMvbWFpbgpbbnBtXTogaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHN0b3BsaWdodC9lbGVtZW50cwpbbnBtX2ltYWdlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZHcvQHN0b3BsaWdodC9lbGVtZW50cz9jb2xvcj1ibHVlCltzdG9wbGlnaHRfZm9yZXN0XTogaHR0cHM6Ly9lY29sb2dpLmNvbS9zdG9wbGlnaHRpbmMK readmeEtag: '"3efe9d7f56d3a16ec93c29aea6e06b56789631a6"' readmeLastModified: Fri, 16 Aug 2024 12:21:04 GMT repositoryId: 184680614 description: >- Build beautiful, interactive API Docs with embeddable React or Web Components, powered by OpenAPI and Markdown. created: '2019-05-03T01:05:01Z' updated: '2026-02-05T11:18:58Z' language: TypeScript archived: false stars: 2349 watchers: 17 forks: 253 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 repoEtag: '"4c1900b2a60cc9a614f73da86711109405382cd001ab450feebc70f62f0b6263"' repoLastModified: Thu, 05 Feb 2026 11:18:58 GMT foundInMaster: true id: 2f94cc1fc980953b17a9979d4ff2e7ec - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/nfroidure/whook v3: true repositoryMetadata: base64Readme: >- Wy8vXTogIyAoICkKWy8vXTogIyAoVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGEgYG1ldGFwYWtgKQpbLy9dOiAjIChtb2R1bGUuIERvIG5vdCBjaGFuZ2UgaXQgIGV4Y2VwdCBiZXR3ZWVuIHRoZSkKWy8vXTogIyAoYGNvbnRlbnQ6c3RhcnQvZW5kYCBmbGFncywgeW91ciBjaGFuZ2VzIHdvdWxkKQpbLy9dOiAjIChiZSBvdmVycmlkZGVuLikKWy8vXTogIyAoICkKIyB3aG9vawo+IEJ1aWxkIHN0cm9uZyBhbmQgZWZmaWNpZW50IFJFU1Qgd2ViIHNlcnZpY2VzLgoKWyFbR2l0SHViIGxpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1NSVQtYmx1ZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbmZyb2lkdXJlL3dob29rL2Jsb2IvbWFpbi9MSUNFTlNFKQoKClsvL106ICMgKDo6Y29udGVudHM6c3RhcnQpCgpXaHkgd3JpdGUgY29kZSB3aGVuIHlvdSBoYXZlIGFuIE9wZW5BUEkgMy4xIGRlZmluaXRpb24/CgohW1RoZSBXaG9vaydzIGxvZ29dKC4vd2hvb2suc3ZnKQoKIyMgU3VtbWFyeQoKV2hvb2sgZWF0cyB5b3VyIGRvY3VtZW50YXRpb24gYW5kIHByb3ZpZGVzIHlvdSB3aXRoIGEgcGVyZm9ybWFudCByb3V0ZXIgdGhhdAp0YWtlcyBjYXJlIG9mIHJ1bm5pbmcgdGhlIHJpZ2h0IGNvZGUgZm9yIHRoZSByaWdodCBvcGVyYXRpb24uCgpCeSB1c2luZyB0aGUgW09wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pIHN0YW5kYXJkIGFuZCB0aGUgZGVwZW5kZW5jeQppbmplY3Rpb24gcGF0dGVybiwgV2hvb2sgcHJvdmlkZXMgYSBjb252ZW5pZW50LCBoaWdobHkgbW9kdWxhciBhbmQgZWFzaWx5CnRlc3RhYmxlIGJhY2sgZW5kIGZyYW1ld29yay4KCiMjIFF1aWNrc3RhcnQKClRvIHN0YXJ0IGEgbmV3IFdob29rIHByb2plY3Q6CgpgYGBzaAojIEluaXRpYWxpemUgdGhlIHByb2plY3QKbnBtIGluaXQgQHdob29rOwpjZCBteV9wcm9qZWN0X25hbWU7CgojIENoZWNrIGluc3RhbGwgd2l0aCBhIGRyeSBydW4gb2YgdGhlIHNlcnZlcgpucG0gcnVuIGRldiAtLSBfX2luamVjdCBodHRwU2VydmVyLHByb2Nlc3MsZHJ5UnVuCgojIFJ1biB0ZXN0cwpucG0gdAoKIyBTdGFydCBkZXZlbG9waW5nCm5wbSBydW4gd2F0Y2gKCiMgQnVpbGQgdGhlIHByb2plY3QKbnBtIHJ1biBidWlsZAoKIyBTdGFydCB0aGUgY29tcGlsZWQgcHJvamVjdApucG0gc3RhcnQKCiMgU3RhcnQgdGhlIGJ1aWx0IHByb2plY3QKbm9kZSBidWlsZHMvbG9jYWwvc2VydmVyL3N0YXJ0LmpzCgojIENyZWF0ZSBhIG5ldyBoYW5kbGVyL3NlcnZpY2UvcHJvdmlkZXIKbnBtIHJ1biB3aG9vayAtLSBjcmVhdGUKYGBgCgojIyBXaHkgdXNlIFdob29rPwoKLSByb2J1c3Q6IHR5cGVzLCBmdW5jdGlvbmFsIHByb2dyYW1taW5nCi0gaGlnaGx5IG1vZHVsYXIsIGV4dGVuZGFibGUgYW5kIHJldXNhYmxlCi0gZnVsbHkgaW50ZWdyYXRlZCBhbmQgcHJvZHVjdGlvbiByZWFkeQotIGNhbiBiZSBkZXBsb3llZCBhbnl3aGVyZSAoc2VydmVybGVzcywgZG9ja2VyLCBtaWNyb3NlcnZpY2VzKTogZW50ZXIgdGhlCiAgYW55bGl0aCBlcmEKLSBlYXN5IHRvIHRlc3Q6IFRERCwgRTJFIHRlc3RzIG1hZGUgZWFzeQotIGZlYXR1cmUgY29tcGxldGUgZm9yIG1vc3QgQVBJIHVzZSBjYXNlcwotIGVhc2UgeW91ciB3b3JrIGJ1dCBlbWJyYWNlIHByb2plY3RzIGNvbXBsZXhpdHkKCiMjIFVzYWdlCgpBIHR1dG9yaWFsIGlzIHN0aWxsIHRvIGJlIHdyaXR0ZW4sIGV4cGVjdCBpdCB0byBjb21lIHZlcnkgc29vbi4gVGhlIGFib3ZlCltxdWlja3N0YXJ0IGNvbW1hbmRdKCNxdWlja3N0YXJ0KSBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgpUaGF0IHNhaWQgeW91IGNhbiBjaGVjayB0aGUgZm9sbG93aW5nICJIb3cgdG8iIFBSczoKCi0gW2FkZCBHcmFwaFFMXShodHRwczovL2dpdGh1Yi5jb20vbmZyb2lkdXJlL3dob29rL3B1bGwvNjIpCi0gW2RlcGxveSB3aXRoIERvY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL25mcm9pZHVyZS93aG9vay9wdWxsLzE2NCkKLSBbZGVwbG95IG9uIEFXUyBMYW1iZGFdKGh0dHBzOi8vZ2l0aHViLmNvbS9uZnJvaWR1cmUvd2hvb2svcHVsbC81NCkKLSBbZGVwbG95IHdpdGggR0NQIENsb3VkIEZ1bmN0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL25mcm9pZHVyZS93aG9vay9wdWxsLzY2KQoKQWxzbywgdGhlIFtgcGFja2FnZXMvYCBmb2xkZXJdKC4vcGFja2FnZXMpIGNvbnRhaW5zIGEgbG90IG9mIGVhc3kgdG8gc2V0dXAKbW9kdWxlcyB3aXRoIHdlbGwgZGV0YWlsZWQgcmVhZG1lcyBhbmQgc2V0dXAgaW5zdHJ1Y3Rpb25zLgoKRmluYWxseSwgc2VhcmNoIGZvciBXaG9vaydzIHBhY2thZ2UgZWFzaWx5IHdpdGggdGhlCltOUE0ncyBXaG9vayB0YWddKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9zZWFyY2g/cT1rZXl3b3Jkczp3aG9vaykuIEFsc28gdGhlCltLbmlmZWN5Y2xlIHRhZ10oaHR0cHM6Ly93d3cubnBtanMuY29tL3NlYXJjaD9xPWtleXdvcmRzOmtuaWZlY3ljbGUpIGNhbiBiZQp1c2VmdWwgdG8gZmluZCBwcm9qZWN0cyB1c2luZyB0aGUgc2FtZSBkZXBlbmRlbmN5IGluamVjdGlvbiBsaWJyYXJ5LgoKSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9uIG9yIGlzc3VlIHVzaW5nIFdob29rLCBwb3N0IHlvdXIgaGVscCByZXF1ZXN0IHRvIHN0YWNrCm92ZXJmbG93IHdpdGggdGhlCltXaG9vayB0YWddKGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zL2Fzaz90YWdzPXdob29rKS4gUXVlc3Rpb25zIHdpdGgKdGhpcyB0YWcgd2lsbCBiZSByZWd1bGFybHkgY2hlY2tlZCBieSBXaG9vaydzIGF1dGhvcnMuCgpGaW5hbGx5LCBpZiB5b3UgZW5jb3VudGVyIGFueSBidWcgKHVuZXhwZWN0ZWQgZXJyb3IsIGZlYXR1cmUgcmVxdWVzdHMsIE9wZW5BUEkKc3BlY2lmaWNhdGlvbiB2aW9sYXRpb24pLCBwbGVhc2UgZmlsbCBhbiBpc3N1ZSEKCiMjIFByaW5jaXBsZXMKCltDaGVjayB0aGlzIGRlY2tdKGh0dHBzOi8vc2xpZGVzLmNvbS9uZnJvaWR1cmUvaW50cm9kdWNpbmctd2hvb2spIGZvciBhIGNvbXBsZXRlCmludHJvZHVjdGlvbiB0byBXaG9vaydzIHByaW5jaXBsZXMhCgojIyMgR2xvYmFsIG92ZXJ2aWV3CgpUaGlzIHByb2plY3RzIGFpbXMgdG8gbWFrZSBjcmVhdGluZyB3ZWxsIGRvY3VtZW50ZWQgYW5kIGhpZ2hseSBjdXN0b21pemFibGUgUkVTVApBUElzIGEgYnJlZXplLiBJdCBpcyBiYXNlZCBvbiB5ZWFycyBvZiBleHBlcmllbmNlCltidWlsZGluZyBSRVNUIEFQSXMgd2l0aCBOb2RlSlNdKGh0dHBzOi8vaW5zZXJ0YWZ0ZXIuY29tL2VuL2Jsb2cvaHR0cF9yZXN0X2FwaXNfd2l0aF9ub2RlanMuaHRtbCkuCgpCeSByZWx5aW5nIG9uIHRoZSBbT3BlbkFQSSBzY2hlbWFzXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKSB0byBkZWNsYXJlIGEgbmV3CmVuZHBvaW50LCB0aGlzIHByb2plY3QgZm9yY2VzIGRvY3VtZW50YXRpb24gYmVmb3JlIGNvZGUuIEl0IGFsc28gaXMgaGlnaGx5CmN1c3RvbWl6YWJsZSBzaW5jZSBiYXNlZCBvbiB0aGUgZGVwZW5kZW5jeSBpbmplY3Rpb24gd2l0aCBpbnZlcnNpb24gb2YgY29udHJvbApwYXR0ZXJuIGFsbG93aW5nIHlvdSB0byBvdmVycmlkZSBvciB3cmFwIGl0cyBtYWluIGNvbnN0aXR1ZW50cy4KCiFbQXJjaGl0ZWN0dXJlIE92ZXJ2aWV3XSguL292ZXJ2aWV3LnN2ZykKClRoZSBXaG9vayByb3V0ZSBoYW5kbGluZyBmbG93IGlzIHZlcnkgc2ltcGxlLgoKRmlyc3QsIHdlIGhhdmUgYSBIVFRQU2VydmVyIHRoYXQgaGFuZGxlcyByZXF1ZXN0cyBhbmQgc2VydmVzIHJlc3BvbnNlcyAodGhlCmBodHRwU2VydmVyYCBzZXJ2aWNlKS4KClRoZW4sIHRoZSBgaHR0cFRyYW5zYWN0aW9uYCB0cmFuc2Zvcm0gdGhlIE5vZGVKUyByZXF1ZXN0cyBpbnRvIHJhdyBzZXJpYWxpemFibGUKb25lcyAocmF3IG9iamVjdHMgd2l0aCBubyBtZXRob2RzIG5vciBpbnRlcm5hbCBzdGF0ZXMsIHVzZWZ1bCBmb3IgdGVzdGluZykuCgpUaGVuIHRoZSByb3V0ZXIgKGBodHRwUm91dGVyYCkgZGVhbCB3aXRoIHRoYXQgcmVxdWVzdCB0byB0ZXN0IHdoaWNoIGhhbmRsZXIKbmVlZHMgdG8gYmUgcnVuIGJ5IGNvbXBhcmluZyB0aGUgbWV0aG9kL3BhdGggY291cGxlIHdpdGggdGhlIE9wZW5BUEkgb3BlcmF0aW9ucwpkZWNsYXJhdGlvbnMuCgpPbmNlIGZvdW5kLCBpdCBzaW1wbHkgcnVucyB0aGUgcmlnaHQgcm91dGUgaGFuZGxlciB3aXRoIHRoZSBPcGVuQVBJIHBhcmFtZXRlcnMKdmFsdWUgZmlsbGVkIGZyb20gdGhlIHNlcmlhbGl6YWJsZSByZXF1ZXN0LiBUaGUgaGFuZGxlciBzaW1wbHkgaGF2ZSB0byByZXR1cm4gYQpzZXJpYWxpemFibGUgcmVzcG9uc2Ugb2JqZWN0IGluIHR1cm4uCgpJZiBhbnkgZXJyb3Igb2NjdXJzIHdpdGhpbiB0aGlzIHByb2Nlc3MsIHRoYW4gdGhlIGBlcnJvckhhbmRsZXJgIGlzIHJlc3BvbnNpYmxlCmZvciBwcm92aWRpbmcgdGhlIG5vdyBsYWNraW5nIHJlc3BvbnNlIG9iamVjdCBiYXNlZCBvbiB0aGUgZXJyb3IgaXQgY2F0Y2hlcy4KCkFuZCB0aGF0J3MgaXQsIHlvdSBoYXZlIHlvdXIgUkVTVCBBUEkuIFdlIGhhdmUKW25vIG1pZGRsZXdhcmVdKGh0dHA6Ly9pbnNlcnRhZnRlci5jb20vZW4vYmxvZy9ub19tb3JlX21pZGRsZXdhcmVzLmh0bWwpIGNvbmNlcHQKaGVyZS4gSW5zdGVhZCwgZXZlcnkgaGFuZGxlciBpcyBhIHNpbXBsZSBmdW5jdGlvbiB0YWtpbmcgcGFyYW1ldGVycyBhbmQKcmV0dXJuaW5nIGEgcmVzcG9uc2UuIEl0IG1ha2VzIHRob3NlIGZ1bmN0aW9ucyB2ZXJ5IGVhc2lseSBjb21wb3NhYmxlIChpbiBhCmZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcgc2Vuc2UpLgoKWW91IG1heSBhZGQgZ2xvYmFsIHdyYXBwZXJzIHRvIGNoYW5nZSBldmVyeSByb3V0ZXMgaW5wdXQvb3V0cHV0IG9uIHRoZSBmbHkgb3IKYWRkIGEgbG9jYWwgd3JhcHBlciBzcGVjaWZpY2FsbHkgdG8gb25lIG9yIGEgZmV3IHJvdXRlcy4KCiMjIyBDb3JlIGNvbmNlcHRzCgpXaG9vayB3b3JrIGJ5IGFkZGluZyBpbmdyZWRpZW50cyB0byB5b3UgQVBJOgoKLSAqKmNvbmZpZ3VyYXRpb24qKjogV2hvb2sgbG9vayB1cHMgZm9yIGBjb25maWcve05PREVfRU5WfS9jb25maWcuanNgIGZpbGVzLiBJdAogIGNyZWF0ZXMgY29uc3RhbnRzIHlvdSBjYW4gaW5qZWN0IGluIHlvdXIgcm91dGVzIGFuZCBzZXJ2aWNlcy4KLSAqKkFQSSoqOiBJdCBkZWZpbmVzIHRoZSB2YXJpb3VzIGVuZHBvaW50IG9mIHlvdXIgQVBJIGFuZCBob3cgdG8gbWFwIHRoZXNlIHRvCiAgcm91dGVzIHRoYW5rcyB0byB0aGUgd2VsbCBrbm93biBPcGVuQVBJIGZvcm1hdCAoZm9ybWVybHkgU3dhZ2dlciksCi0gKipyb3V0ZXMqKjogdG8gZGVmaW5lIGFuIGltcGxlbWVudCBBUEkgZW5kcG9pbnRzLAotICoqY3JvbnMqKjogdG8gZGVmaW5lIGFuZCBpbXBsZW1lbnQgcGVyaW9kaWMgdGFza3MsCi0gKipjb25zdW1lcnMqKjogdG8gaW1wbGVtZW50IHF1ZXVlcy9zdHJlYW1zIGNvbnN1bWVycywKLSAqKnNlcnZpY2VzKio6IHZhcmlvdXMgc2VydmljZXMgdGhhdCBkZWFsIHdpdGggc2lkZSBlZmZlY3RzLAotICoqd3JhcHBlcnMqKjogaGlnaGVyIG9yZGVyIGZ1bmN0aW9ucyB5b3UgY2FuIGFwcGx5IHRvIHJvdXRlcywgY3JvbnMgb3IKICBjb25zdW1lcnMgKENPUlMsIGF1dGhlbnRpY2F0aW9uLi4uKS4KCllvdSBjYW4gc2VlIGEgbG90IG9mIHRob3NlIGNvbmNlcHRzIGltcGxlbWVudGVkIGluIHRoZQpbV2hvb2sgZXhhbXBsZV0oLi9wYWNrYWdlcy93aG9vay1leGFtcGxlKSBmb2xkZXIuCgpXaG9vaydzIERJIHN5c3RlbSByZWxpZXMgb24gdGhlCltLbmlmZWN5bGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9uZnJvaWR1cmUva25pZmVjeWNsZSkgbW9kdWxlLiBJdCBpcyBncmVhdCBmb3IKYWRkaW5nIG9yIGVhc2lseSBvdmVycmlkZS93cmFwIGEgbG90IG9mIGl0cyBjb3JlIGNvbXBvbmVudCBhbmQgYnJpbmdzCmluc3RydW1lbnRhdGlvbiBhbmQgdGVzdGFiaWxpdHkgdG8geW91ciBjb2RlIGJhc2VzLgoKIyMgQ29udHJpYnV0aW5nCgpDb250cmlidXRvcnMgYXJlIHZlcnkgd2VsY29tZSB0byBoZWxwIHB1c2hpbmcgV2hvb2sgZm9yd2FyZCEKCkNsb25lIHRoaXMgcHJvamVjdCdzIHJlcG9zaXRvcnkgYW5kIHJ1bjoKCmBgYHNoCm5wbSBpCm5wbSBydW4gYnVpbGQKbnBtIHJ1biBtZXRhcGFrCm5wbSB0CmBgYAoKVGhlIHJlcG9zaXRvcnkgaXMgYmFzZWQgb24gTGVybmFKUyB0aGF0IGFsbG93cyB0byBob3N0IHNldmVyYWwgTlBNIHBhY2thZ2VzIGluIGEKc2luZ2xlIHJlcG9zaXRvcnkuIFRoYXQgc2FpZCwgdG8ga2VlcCBpdCBzaW1wbGUgaXQgb25seSBwcm94aWVzIHRoZSBwYWNrYWdlcwpjb21tYW5kcy4KCkluc3RhbGwgdGhvc2UKW1ZTQ29kZSBleHRlbnNpb25zXShodHRwczovL2luc2VydGFmdGVyLmNvbS9lbi9ibG9nL215X3ZzY29kZV9jb25maWd1cmF0aW9uLmh0bWwpCnRvIGdldCBhIHNtb290aCBkZXZlbG9wZXIgZXhwZXJpZW5jZS4KCkZvciBjb21taXR0aW5nIHJ1bjoKCmBgYHNoCm5wbSBydW4gY3oKYGBgCgojIyBQdWJsaXNoaW5nCgpgYGBzaApOT0RFX0VOVj1jbGkgbnBtIHJ1biBsZXJuYSAgLS0gcHVibGlzaApgYGAKClsvL106ICMgKDo6Y29udGVudHM6ZW5kKQoKIyBBdXRob3JzCi0gW05pY29sYXMgRnJvaWR1cmVdKGh0dHA6Ly9pbnNlcnRhZnRlci5jb20vZW4vaW5kZXguaHRtbCkKLSBbVmluY2VudCBEYSBTaWx2YV0oaHR0cHM6Ly9kYXNpbHZhdmluY2VudC5naXRodWIuaW8vUG9ydEZvbGlvLykKLSBbQXlvdWIgSEFELURBRF0oaHR0cHM6Ly9naXRodWIuY29tL0F1YkhhZGRhZCkKCiMgTGljZW5zZQpbTUlUXShodHRwczovL2dpdGh1Yi5jb20vbmZyb2lkdXJlL3dob29rL2Jsb2IvbWFpbi9MSUNFTlNFKQo= readmeEtag: '"79803fe7c304e5b2f2c416e68718b90702127c1f"' readmeLastModified: Mon, 17 Mar 2025 15:50:52 GMT repositoryId: 33482446 description: Build strong and efficient REST web services. created: '2015-04-06T13:09:13Z' updated: '2025-11-25T13:20:56Z' language: TypeScript archived: false stars: 33 watchers: 4 forks: 6 owner: nfroidure logo: https://avatars.githubusercontent.com/u/229633?v=4 license: MIT repoEtag: '"558794ecbffee93df824153cce5fccda5fb1635b8f496d2ab2aa27d5c55b8ccc"' repoLastModified: Tue, 25 Nov 2025 13:20:56 GMT foundInMaster: true name: Whook homepage: https://github.com/nfroidure/whook language: - Javascript - TypeScript source_description: OpenAPI 3 based NodeJS server. category: - Server - Server Implementations id: 939a255e49c264ce8bc1417d3621a5e5 link: https://github.com/nfroidure/whook v2: false v3_1: true - source: https://openapi.tools/ name: openapi-ts-sdk-builder homepage: https://github.com/nfroidure/openapi-ts-sdk-builder language: - Javascript - TypeScript source_description: Generate a TypeScript SDK from OpenAPI 3 definitions. category: SDK foundInMaster: true repository: https://github.com/nfroidure/openapi-ts-sdk-builder repositoryMetadata: base64Readme: >- Wy8vXTogIyAoICkKWy8vXTogIyAoVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGEgYG1ldGFwYWtgKQpbLy9dOiAjIChtb2R1bGUuIERvIG5vdCBjaGFuZ2UgaXQgIGV4Y2VwdCBiZXR3ZWVuIHRoZSkKWy8vXTogIyAoYGNvbnRlbnQ6c3RhcnQvZW5kYCBmbGFncywgeW91ciBjaGFuZ2VzIHdvdWxkKQpbLy9dOiAjIChiZSBvdmVycmlkZGVuLikKWy8vXTogIyAoICkKIyBvcGVuYXBpLXRzLXNkay1idWlsZGVyCj4gQ3JlYXRlIGEgVHlwZVNjcmlwdCBTREsgZnJvbSBhbiBPcGVuQVBJIDMgZGVmaW5pdGlvbgoKWyFbR2l0SHViIGxpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1NSVQtYmx1ZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbmZyb2lkdXJlL29wZW5hcGktdHMtc2RrLWJ1aWxkZXIvYmxvYi9tYWluL0xJQ0VOU0UpCgoKWy8vXTogIyAoOjpjb250ZW50czpzdGFydCkKCkEgVHlwZVNjcmlwdCByZXdyaXRlIG9mCltvcGVuYXBpLWpzLXNkay1idWlsZGVyXShodHRwczovL2dpdGh1Yi5jb20vc2VuY3JvcC9vcGVuYXBpLWpzLXNkay1idWlsZGVyKS4KCkl0IGJhc2ljYWxseSBicmluZ3MgYSBtaW5pbWFsIFR5cGVTY3JpcHQgU0RLIGZyb20gYW4gT3BlbkFQSTMgZmlsZSB3aXRoIG5vIE9PUAppbnNpZGUuIEl0IHdvcmtzIHdpdGggYW55IEhUVFAgY2xpZW50LgoKIyBVc2FnZQoKV2l0aCBhIHJhdyBOb2RlIHNjcmlwdDoKCmBgYGpzCmltcG9ydCB7IGdlbmVyYXRlU0RLRnJvbU9wZW5BUEkgfSBmcm9tICdvcGVuYXBpLXRzLXNkay1idWlsZGVyJzsKaW1wb3J0IHsgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSAnZnMnOwoKY29uc3Qgb3BlbkFQSUNvbnRlbnRzID0gcmVhZEZpbGVTeW5jKCdvcGVuYXBpLmpzb24nLCAndXRmLTgnKTsKY29uc3Qgc2RrQ29udGVudHMgPSBnZW5lcmF0ZVNES0Zyb21PcGVuQVBJKAogIG9wZW5BUElDb250ZW50cywKICB7CiAgICBzZGtWZXJzaW9uOiAndjEuMS4xJywKICAgIGlnbm9yZWRQYXJhbWV0ZXJzTmFtZXM6IFsnY29va2llJywgJ1gtQVBJLVZlcnNpb24nLCAnWC1TREstVmVyc2lvbiddLAogICAgdW5kb2N1bWVudGVkUGFyYW1ldGVyc05hbWVzOiBbJ1gtQXBwbGljYXRpb24tVmVyc2lvbiddLAogIH0sCiAgewogICAgZ2VuZXJhdGVVbnVzZWRTY2hlbWFzOiB0cnVlLAogICAgYnJhbmRlZFR5cGVzOiBbCiAgICAgICdTZW5zb3JVVUlEJywKICAgICAgJ1VVSUQnLAogICAgICAnTG9jYWxlJywKICAgICAgJ1RpbWVab25lJywKICAgICAgJ1ZhbHVlTmFtZScsCiAgICAgICdTZW5zb3JWYXJpYWJsZScsCiAgICBdLAogICAgZ2VuZXJhdGVSZWFsRW51bXM6IHRydWUsCiAgICBleHBvcnROYW1lc3BhY2VzOiB0cnVlLAogIH0sCik7Cgp3cml0ZUZpbGVTeW5jKCdzcmMvc2RrLnRzJywgc2RrQ29udGVudHMsICd1dGYtOCcpOwpgYGAKClNhbXBsZSB1c2FnZSB3aXRoIGBheGlvc2A6CgpgYGB0cwppbXBvcnQgQmFzZUFQSSwgeyBBUElTdGF0dXNlcyB9IGZyb20gJy4vc2RrLnRzJzsKaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJzsKaW1wb3J0IHF1ZXJ5c3RyaW5nIGZyb20gJ3F1ZXJ5c3RyaW5nJzsKaW1wb3J0IHR5cGUgeyBSZXF1ZXN0RXhlY3V0b3IgfSBmcm9tICcuL3Nkay50cyc7CmltcG9ydCB0eXBlIHsgQXhpb3NSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnYXhpb3MnOwoKY29uc3QgZXhlY3V0ZVJlcXVlc3Q6IFJlcXVlc3RFeGVjdXRvcjxBeGlvc1JlcXVlc3RDb25maWc+ID0gYXN5bmMgKAogIGh0dHBSZXF1ZXN0LAogIG9wZXJhdGlvbklkLAogIG9wdGlvbnMsCikgPT4gewogIGNvbnN0IGNhbGxPcHRpb25zID0gewogICAgLi4ub3B0aW9ucywKICAgIGJhc2VVUkw6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAnLAogICAgdXJsOiBodHRwUmVxdWVzdC5wYXRoLAogICAgbWV0aG9kOiBodHRwUmVxdWVzdC5tZXRob2QsCiAgICBoZWFkZXJzOiB7CiAgICAgIC4uLihvcHRpb25zLmhlYWRlcnMgfHwge30pLAogICAgICAuLi4oaHR0cFJlcXVlc3QuaGVhZGVycyB8fCB7fSksCiAgICB9LAogICAgcGFyYW1zOiBodHRwUmVxdWVzdC5wYXJhbXMsCiAgICBkYXRhOiBodHRwUmVxdWVzdC5ib2R5LAogICAgcGFyYW1zU2VyaWFsaXplcjogcXVlcnlzdHJpbmcuc3RyaW5naWZ5LmJpbmQocXVlcnlzdHJpbmcpLAogICAgdmFsaWRhdGVTdGF0dXM6IChzdGF0dXM6IG51bWJlcikgPT4KICAgICAgQVBJU3RhdHVzZXNbb3BlcmF0aW9uSWRdLmluY2x1ZGVzKHN0YXR1cyksCiAgfTsKICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zKGNhbGxPcHRpb25zKTsKCiAgcmV0dXJuIHsKICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLAogICAgaGVhZGVyczogcmVzcG9uc2UuaGVhZGVycywKICAgIGJvZHk6IHJlc3BvbnNlLmRhdGEsCiAgfTsKfTsKCi8vIFVzZSB0aGUgQVBJCmF3YWl0IEJhc2VBUEkuZ2V0UGluZyhleGVjdXRlUmVxdWVzdCk7CmF3YWl0IEJhc2VBUEkuZ2V0VXNlcihleGVjdXRlUmVxdWVzdCwgeyB1c2VySWQ6ICcxMjMnIH0pOwoKLy8gR2VuZXJhdGUgVVJJcyBvbmx5IHVzZSB0aGUgQVBJIHRoZW4KYXdhaXQgQVBJVVJJQnVpbGRlcnMuYnVpbGRHZXRQaW5nVVJJKHsKICAvKi4uLiovCn0pOwoKLy8gVG8ga25vdyB3aGljaCBtZXRob2QgaXMgdXNlZCBieSBhbiBlbmRwb2ludApBUElNZXRob2RzLmdldFBpbmc7IC8vID0+IGdldAoKLy8gVG8ga25vdyB3aGljaCBzdGF0dXMgY29kZXMgY2FuIGJlIHJldHVybmVkIGJ5IGFuIGVuZHBvaW50CkFQSVN0YXR1c2VzLmdldFBpbmc7IC8vID0+IFsiZGVmYXVsdCIsIDIwMF0KCi8vIEdlbmVyYXRlIGEgY29tcGxldGUgZW5kcG9pbnQgaW5wdXQKLy8gKG1heSBiZSB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBwYXNzCi8vIEhUVFAgcmVxdWVzdHMgdG8gYW5vdGhlciBwcm9jZXNzICkKQVBJSW5wdXRCdWlsZGVycy5idWlsZEdldFBpbmdJbnB1dCh7CiAgLyouLi4qLwp9KTsKYGBgCgpZb3UgY2FuIGFsc28gc2FmZWx5IG9wZXJhdGUgb24gdGhlIEFQSSBieSBkb2luZyBzbzoKCmBgYHRzCmltcG9ydCBCYXNlQVBJLCB7IEFQSVN0YXR1c2VzIH0gZnJvbSAnLi9zZGsudHMnOwppbXBvcnQgY29uZmlnIGZyb20gJy4vY29uZmlnJzsKaW1wb3J0IFlFcnJvciBmcm9tICd5ZXJyb3InOwppbXBvcnQgdHlwZSB7IFJlcXVlc3RFeGVjdXRvciwgQ29tcG9uZW50cyB9IGZyb20gJy4vc2RrLnRzJzsKaW1wb3J0IHR5cGUgeyBBeGlvc1JlcXVlc3RDb25maWcgfSBmcm9tICdheGlvcyc7CgpleHBvcnQgeyBFbnVtcyB9OwpleHBvcnQgdHlwZSB7IENvbXBvbmVudHMgfTsKCnR5cGUgQXV0aFRva2VuSW5wdXQgPSB7IHRva2VuPzogc3RyaW5nIH07Cgpjb25zdCBBUEkgPSBPYmplY3Qua2V5cyhCYXNlQVBJKS5yZWR1Y2UoKEZpbmFsQVBJLCBvcGVyYXRpb25JZCkgPT4gewogIEZpbmFsQVBJW29wZXJhdGlvbklkXSA9IGFzeW5jICgKICAgIHsgdG9rZW4sIC4uLmlucHV0IH06IHVua25vd24gJiBBdXRoVG9rZW5JbnB1dCwKICAgIG9wdGlvbnM6IEF4aW9zUmVxdWVzdENvbmZpZyA9IHt9LAogICkgPT4gewogICAgdHJ5IHsKICAgICAgY29uc3QgcmVzcG9uc2UgPSAgYXdhaXQgQmFzZUFQSVtvcGVyYXRpb25JZF0oCiAgICAgICAgZXhlY3V0ZVJlcXVlc3QsCiAgICAgICAgewogICAgICAgICAgLi4uaW5wdXQsCiAgICAgICAgICB4QXBwbGljYXRpb25WZXJzaW9uOiBjb25maWcuYXBwbGljYXRpb25WZXJzaW9uLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgLi4ub3B0aW9ucywKICAgICAgICAgIGJhc2VVUkw6IGNvbmZpZy5hcGlVUkwsCiAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgIC4uLm9wdGlvbnMuaGVhZGVycywKICAgICAgICAgICAgLi4uKHRva2VuCiAgICAgICAgICAgICAgPyB7CiAgICAgICAgICAgICAgICAgIGF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIDoge30pLAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICApOwogICAgICByZXR1cm4gcmVzcG9uc2U7CiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgY29uc29sZS5lcnJvcignR290IGFuIEFQSSBlcnJvcjonLCBlcnIuc3RhY2spOwogICAgICB0aHJvdyBuZXcgWUVycm9yKAogICAgICAgIGVyci5yZXNwb25zZT8uZGF0YT8uZXJyb3IgPyAnRV9BUElfRVJST1InIDogJ0VfVU5FWFBFQ1RFRF9FUlJPUicsCiAgICAgICAgZXJyLnJlc3BvbnNlPy5kYXRhLAogICAgICApOwogICAgfQogIH07CiAgcmV0dXJuIEZpbmFsQVBJOwp9LCB7fSkgYXMgewogIFtQIGluIGtleW9mIHR5cGVvZiBCYXNlQVBJXTogKAogICAgaW5wdXQ6IFBhcmFtZXRlcnM8dHlwZW9mIEJhc2VBUElbUF0+WzFdICYgQXV0aFRva2VuSW5wdXQsCiAgICBjb25maWc/OiBBeGlvc1JlcXVlc3RDb25maWcsCiAgKSA9PiBQcm9taXNlPFJldHVyblR5cGU8dHlwZW9mIEJhc2VBUElbUF0+PjsKfTsKCmV4cG9ydCBkZWZhdWx0IEFQSTsKYGBgCgpGaW5hbGx5LCB5b3UgbWF5IGFwcHJlY2lhdGUgdXNpbmcgaXQgd2l0aCB0aGUKW2B1c2VTU1JgIFJlYWN0IGhvb2tdKGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvc3dyKSB0byBiZW5lZml0IGZyb20geW91ciBTREsKdHlwZXM6CgpgYGB0cwppbXBvcnQgdXNlU1dSIGZyb20gJ3N3cic7CmltcG9ydCBBUEkgZnJvbSAnLi9hcGknOwoKdHlwZSBIYW5kbGVyPEksIE8+ID0gKGlucHV0OiBJKSA9PiBQcm9taXNlPE8+Owp0eXBlIEhhbmRsZXJJbnB1dDxUPiA9IFQgZXh0ZW5kcyBIYW5kbGVyPGluZmVyIEksIHVua25vd24+ID8gSSA6IG5ldmVyOwp0eXBlIEhhbmRsZXJPdXRwdXQ8VD4gPSBUIGV4dGVuZHMgSGFuZGxlcjx1bmtub3duLCBpbmZlciBJPiA/IEkgOiBuZXZlcjsKCmNvbnN0IEFQSV9LRVlTOiBSZWNvcmQ8YW55LCBzdHJpbmc+ID0gT2JqZWN0LmtleXMoQVBJKS5yZWR1Y2UoKGhhc2gsIGtleSkgPT4gewogIGhhc2hbQVBJW2tleV1dID0ga2V5OwogIHJldHVybiBoYXNoOwp9LCB7fSk7CgpleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VBUElTV1I8VCBleHRlbmRzIEhhbmRsZXI8YW55LCBhbnk+PigKICBzd3JDb3VwbGU6IFtULCBIYW5kbGVySW5wdXQ8VD5dLAogIG9wdGlvbnM/OiBQYXJhbWV0ZXJzPHR5cGVvZiB1c2VTV1I+WzJdLAopIHsKICBjb25zdCB1bmlxdWVLZXkgPSBzd3JDb3VwbGUKICAgID8gT2JqZWN0LmtleXMoc3dyQ291cGxlWzFdKS5yZWR1Y2UoCiAgICAgICAgKGZpbmFsS2V5LCBrZXkpID0+IGZpbmFsS2V5ICsga2V5ICsgSlNPTi5zdHJpbmdpZnkoc3dyQ291cGxlWzFdW2tleV0pLAogICAgICAgIC8vIFNhZGx5LCBoZXJlLCB3ZSBjYW5ub3QgcmVseSBvbiBgc3dyQ291cGxlWzBdLm5hbWVgIHRvCiAgICAgICAgLy8gYnVpbGQgdGhlIHVuaWNpdHkga2V5IHNpbmNlIHRoZSBidWlsZCBkZXN0cm95cyBpdAogICAgICAgIEFQSV9LRVlTW3N3ckNvdXBsZVswXV0gKyAnLScsCiAgICAgICkKICAgIDogbnVsbDsKCiAgcmV0dXJuIHVzZVNXUjwKICAgIEF3YWl0ZWQ8SGFuZGxlck91dHB1dDxUPj4gZXh0ZW5kcyB7IGJvZHk6IGluZmVyIEQgfSA/IEQgOiBuZXZlcgogID4oCiAgICB1bmlxdWVLZXksCiAgICBhc3luYyAoKSA9PiAoYXdhaXQgc3dyQ291cGxlWzBdKHN3ckNvdXBsZVsxXSkpLmJvZHksCiAgICBvcHRpb25zIGFzIGFueSwKICApOwp9CmBgYAoKWy8vXTogIyAoOjpjb250ZW50czplbmQpCgojIEFQSQo8YSBuYW1lPSJtb2R1bGVfb3BlbmFwaS10cy1zZGstYnVpbGRlciI+PC9hPgoKIyMgb3BlbmFwaS10cy1zZGstYnVpbGRlcgo8YSBuYW1lPSJtb2R1bGVfb3BlbmFwaS10cy1zZGstYnVpbGRlci4uZ2VuZXJhdGVTREtGcm9tT3BlbkFQSSI+PC9hPgoKIyMjIG9wZW5hcGktdHMtc2RrLWJ1aWxkZXJ+Z2VuZXJhdGVTREtGcm9tT3BlbkFQSShvcGVuQVBJQ29udGVudCwgb3B0aW9ucywgW3R5cGVPcHRpb25zXSkg4oeSIDxjb2RlPlByb21pc2UuJmx0O3N0cmluZyZndDs8L2NvZGU+CkJ1aWxkIGEgSlMgU0RLIGZyb20gYW4gT3BlbkFQSSBmaWxlCgoqKktpbmQqKjogaW5uZXIgbWV0aG9kIG9mIFs8Y29kZT5vcGVuYXBpLXRzLXNkay1idWlsZGVyPC9jb2RlPl0oI21vZHVsZV9vcGVuYXBpLXRzLXNkay1idWlsZGVyKSAgCioqUmV0dXJucyoqOiA8Y29kZT5Qcm9taXNlLiZsdDtzdHJpbmcmZ3Q7PC9jb2RlPiAtIFRoZSBTREsgSlMgY29kZSAgCgp8IFBhcmFtIHwgVHlwZSB8IERlc2NyaXB0aW9uIHwKfCAtLS0gfCAtLS0gfCAtLS0gfAp8IG9wZW5BUElDb250ZW50IHwgPGNvZGU+c3RyaW5nPC9jb2RlPiB8ICB8Cnwgb3B0aW9ucyB8IDxjb2RlPk9iamVjdDwvY29kZT4gfCAgfAp8IG9wdGlvbnMuc2RrVmVyc2lvbiB8IDxjb2RlPnN0cmluZzwvY29kZT4gfCBUaGUgU0RLIHZlcnNpb24gfAp8IFtvcHRpb25zLnNka05hbWVdIHwgPGNvZGU+c3RyaW5nPC9jb2RlPiB8IFRoZSBTREsgbmFtZSAoZGVmYXVsdCB0byBBUEkpIHwKfCBbb3B0aW9ucy5pZ25vcmVkUGFyYW1ldGVyc05hbWVzXSB8IDxjb2RlPkFycmF5LiZsdDtzdHJpbmcmZ3Q7PC9jb2RlPiB8IFByb3ZpZGUgYSBsaXN0IG9mIHBhcmFtZXRlcnMgdG8gaWdub3JlIHwKfCBbb3B0aW9ucy51bmRvY3VtZW50ZWRQYXJhbWV0ZXJzTmFtZXNdIHwgPGNvZGU+QXJyYXkuJmx0O3N0cmluZyZndDs8L2NvZGU+IHwgUHJvdmlkZSBhIGxpc3Qgb2YgcGFyYW1ldGVycyB0byBrZWVwIHVuZG9jdW1lbnRlZCB8CnwgW3R5cGVPcHRpb25zXSB8IDxjb2RlPk9iamVjdDwvY29kZT4gfCBPcHRpb25zIHRvIGJlIHBhc3NlZCB0byB0aGUgdHlwZSBnZW5lcmF0b3IgfAoKCiMgQXV0aG9ycwotIFtOaWNvbGFzIEZyb2lkdXJlXShodHRwczovL2luc2VydGFmdGVyLmNvbS9lbi9pbmRleC5odG1sKQoKIyBMaWNlbnNlCltNSVRdKGh0dHBzOi8vZ2l0aHViLmNvbS9uZnJvaWR1cmUvb3BlbmFwaS10cy1zZGstYnVpbGRlci9ibG9iL21haW4vTElDRU5TRSkK readmeEtag: '"bed392d8c61f5f5b070e1f5c5a763a419fec90a4"' readmeLastModified: Thu, 18 Jul 2024 12:08:27 GMT repositoryId: 292779894 description: Create a TypeScript SDK from an OpenAPI 3 definition created: '2020-09-04T07:26:46Z' updated: '2025-11-06T15:55:32Z' language: TypeScript archived: false stars: 16 watchers: 1 forks: 2 owner: nfroidure logo: https://avatars.githubusercontent.com/u/229633?v=4 license: MIT repoEtag: '"fc2733554b45b28722a8dd2769019e28371806b32f67dd1ef4c7ef8037f8ab69"' repoLastModified: Thu, 06 Nov 2025 15:55:32 GMT id: 6d4b61a2ffce070a86ca3005371b8050 link: https://github.com/nfroidure/openapi-ts-sdk-builder v2: false v3: true v3_1: true - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/nfroidure/schema2dts v3: true repositoryMetadata: base64Readme: >- Wy8vXTogIyAoICkKWy8vXTogIyAoVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGEgYG1ldGFwYWtgKQpbLy9dOiAjIChtb2R1bGUuIERvIG5vdCBjaGFuZ2UgaXQgIGV4Y2VwdCBiZXR3ZWVuIHRoZSkKWy8vXTogIyAoYGNvbnRlbnQ6c3RhcnQvZW5kYCBmbGFncywgeW91ciBjaGFuZ2VzIHdvdWxkKQpbLy9dOiAjIChiZSBvdmVycmlkZGVuLikKWy8vXTogIyAoICkKIyBzY2hlbWEyZHRzCj4gQSB2ZXJ5IHNpbXBsZSBKU09OU2NoZW1hNy9PcGVuQVBJMyB0byBUeXBlU2NyaXB0IHR5cGVzIGRlZmluaXRpb25zIGdlbmVyYXRvcgoKCgpbLy9dOiAjICg6OmNvbnRlbnRzOnN0YXJ0KQoKSXQgaXMgaW50ZW5kZWQgdG8gc3VwcG9ydCBKU09OU2NoZW1hNy9PcGVuQVBJMyBidXQgbWF5IHdvcmsgZm9yIHNvbWUgaWYgbm90IG1vc3QKSlNPTlNjaGVtYSB2ZXJzaW9ucy4KClRoaXMgbW9kdWxlIGFzc3VtZXMgeW91ciBKU09OU2NoZW1hIC8gT3BlbkFQSTMgZG9jdW1lbnRzIGFyZSB2YWxpZC4gSXQgYWxzbwpkb2Vzbid0IHN1cHBvcnQgZXh0ZXJuYWwgcmVmZXJlbmNlcyBhdCB0aGUgbW9tZW50IChhbmQgcHJvYmFibHkgZm9yIGV2ZXIpIGFuZApleHBlY3QgYSBzaW5nbGUgb2JqZWN0IHdob3NlIGRlZmluaXRpb25zIGFyZSBhbGwgcmVsYXRpdmUgdG8gdGhlIHJvb3Qgb2JqZWN0LgoKSXQgaXMgYWxzbyBtZWFudCB0byBiZSBhIGJ1aWxkaW5nIGJsb2NrIGZvciBoaWdoZXIgbGV2ZWwgZ2VuZXJhdG9ycy4KCiMjIFVzYWdlCgpgYGB0cwppbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7CmltcG9ydCB7CiAgZ2VuZXJhdGVKU09OU2NoZW1hVHlwZXMsCiAgZ2VuZXJhdGVPcGVuQVBJVHlwZXMsCiAgdG9Tb3VyY2UsCn0gZnJvbSAnc2NoZW1hMmR0cyc7CgovLyBPcGVuIEFQSQpjb25zdCBvcGVuQVBJU2NoZW1hID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMoJ29wZW5hcGkuanNvbicpLnRvU3RyaW5nKCkpOwoKYXdhaXQgd3JpdGVGaWxlKAogICdBUEkuZC50cycsCiAgdG9Tb3VyY2UoYXdhaXQgZ2VuZXJhdGVPcGVuQVBJVHlwZXMob3BlbkFQSVNjaGVtYSkpLAopOwoKLy8gSlNPTiBTY2hlbWEKY29uc3QganNvblNjaGVtYSA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKCdzY2hlbWEuanNvbicpLnRvU3RyaW5nKCkpOwoKYXdhaXQgd3JpdGVGaWxlKAogICdBUEkuZC50cycsCiAgdG9Tb3VyY2UoYXdhaXQgZ2VuZXJhdGVKU09OU2NoZW1hVHlwZXMoanNvblNjaGVtYSkpLAopOwpgYGAKCklmIHlvdSBmaW5kIHNvbWUgY2FzZXMgd2l0aCB1bmV4cGVjdGVkIHJlc3VsdHMsIHBsZWFzZSBhZGQgdGhlIGZpeHR1cmVzIHRvIHRoaXMKcmVwb3NpdG9yeSBpbiBhIHB1bGwgcmVxdWVzdCBhbmQgZGVzY3JpYmUgdGhlIHByb2JsZW0geW91IGVuY291bnRlci4KCiMjIE9wdGlvbnMKCllvdSBjYW4gY2hhbmdlIHRoZSBBUEkgbWFpbiBuYW1lc3BhY2UgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byB1c2Ugc2V2ZXJhbApnZW5lcmF0ZWQgdHlwZXMgaW4gdGhlIHNhbWUgcmVwb3NpdG9yeS4gSnVzdCBwcm92aWRlIGl0cyBuYW1lc3BhY2UgYSB0aGUgc2Vjb25kCmFyZ3VtZW50IHRvIGBnZW5lcmF0ZU9wZW5BUElUeXBlc2AuCgpUaGUgdGhpcmQgYXJndW1lbnQgaXMgZm9yIG9wdGlvbnM6CgotIHlvdSBjYW4gZ2VuZXJhdGUgdGhlIHVudXNlZCBzY2hlbWFzIChlc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIGluIGRldmVsb3BtZW50CiAgbW9kZSkgdG8gYmUgYWJsZSB0byB1c2UgdGhlbSBpbiB5b3VyIGNvZGUgZGVzcGl0ZSB0aGUgZmFjdCB0aGV5IGFpbid0IHVzZWQgaW4KICB5b3UgQVBJIGF0IHRoYXQgbW9tZW50LiBKdXN0IHNldCBgZ2VuZXJhdGVVbnVzZWRTY2hlbWFzYCB0byBgdHJ1ZWAuCi0geW91IGNhbiBhbHNvIGZpbHRlciB0aGUgc3RhdHVzZXMgeW91IHdpc2ggdG8gZ2VuZXJhdGUgYnkgc2V0dGluZwogIGBmaWx0ZXJTdGF0dXNlc2AgdG8gYFsyMDAsIDIwMSwgMjAyLCAzMDBdYCBmb3IgZXhhbXBsZSBzbyB0aGF0IHRoZSA1MDAgZXJyb3JzCiAgcmVzcG9uc2VzIGFpbid0IHRha2VuIGluIGNvdW50LgoKIyMgS25vd24gaXNzdWVzCgpUaGVyZSBpcyBzb21lIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIEpTT05TY2hlbWEgYGFueU9mYCwgYGFsbE9mYCBhbmQgYG9uZU9mYAprZXl3b3JkcyAobGVhcm4KW21vcmUgaGVyZSBvbiBjb21iaW5pbmcgc2NoZW1hc10oaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvdW5kZXJzdGFuZGluZy1qc29uLXNjaGVtYS9yZWZlcmVuY2UvY29tYmluaW5nLmh0bWwpKS4KClRoZSBjdXJyZW50IHdheSB0byBoYW5kbGUgdGhpcyBpbiB0aGlzIGxpYnJhcnkgaXMgdG86CgotIGNvbnZlcnQgYG9uZU9mYCB0byBhbgogIFt1bmlvbiB0eXBlXShodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay91bmlvbnMtYW5kLWludGVyc2VjdGlvbnMuaHRtbCN1bmlvbi10eXBlcykKICB3aGljaCBpcyB2YWxpZAotIGNvbnZlcnQgYGFueU9mYCB0byBhbiB1bmlvbiB0eXBlIHRvbyB3aGljaCBpcyBub3QgcmVhbGx5IHdoYXQgaXQgbWVhbnMgaW4gSlNPTgogIFNjaGVtYQotIGNvbnZlcnQgYGFsbE9mYCB0byBhbgogIFtpbnRlcnNlY3Rpb24gdHlwZV0oaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svdW5pb25zLWFuZC1pbnRlcnNlY3Rpb25zLmh0bWwjaW50ZXJzZWN0aW9uLXR5cGVzKQogIHdoaWNoIGlzIGNvbXBsZXRseSB3cm9uZyBhbmQgd2lsbCB3b3JrIG9ubHkgd2l0aCBKU09OIFNjaGVtYXMgbWVhbnQgdG8gYmUgdXNlZAogIHRoYXQgd2F5LiBCeSBleGFtcGxlLCBjb21iaW5pbmcgYW4gZXhpc3Rpbmcgb2JqZWN0IHNjaGVtYSB3aXRoIGFub3RoZXIgb2JqZWN0CiAgdG8gbWFrZSBzb21lIHByb3BlcnRpZXMgcmVxdWlyZWQgd2lsbCBvbmx5IHdvcmsgaWYgeW91IHNldCBpdHMgdHlwZSB0bwogIGBvYmplY3RgIGluIGJvdGggc2NoZW1hcyBleHBsaWNpdGx5OgoKYGBganNvbgp7CiAgImFsbE9mIjogWwogICAgewogICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL1VzZXIiCiAgICB9LAogICAgeyAidHlwZSI6ICJvYmplY3QiLCAicmVxdWlyZWQiOiBbImlkIl0gfQogIF0KfQpgYGAKCkN1cnJlbnRseSwgdGhlIGBpZmAvYHRoZW5gIGtleXdvcmRzIG9mIEpTT05TY2hlbWEgZG8gbm90IHdvcmsuIFlvdSBzaG91bGQgYmUKYWJsZSB0byByZXBsYWNlIG1vc3Qgb2YgaXRzIHVzZSBwZXIgYSBgb25lT2ZgIGZvcm0uCgpbLy9dOiAjICg6OmNvbnRlbnRzOmVuZCkKCiMgQVBJCiMjIEZ1bmN0aW9ucwoKPGRsPgo8ZHQ+PGEgaHJlZj0iI2dlbmVyYXRlT3BlbkFQSVR5cGVzIj5nZW5lcmF0ZU9wZW5BUElUeXBlcyhzY2hlbWEsIG9wdGlvbnMpPC9hPiDih5IgPGNvZGU+VHlwZVNjcmlwdC5Ob2RlQXJyYXk8L2NvZGU+PC9kdD4KPGRkPjxwPkNyZWF0ZSB0aGUgVHlwZVNjcmlwdCB0eXBlcyBkZWNsYXJhdGlvbnMgZnJvbSBhbiBPcGVuIEFQSSBkb2N1bWVudDwvcD4KPC9kZD4KPGR0PjxhIGhyZWY9IiNnZW5lcmF0ZUpTT05TY2hlbWFUeXBlcyI+Z2VuZXJhdGVKU09OU2NoZW1hVHlwZXMoc2NoZW1hLCBvcHRpb25zKTwvYT4g4oeSIDxjb2RlPlR5cGVTY3JpcHQuTm9kZUFycmF5PC9jb2RlPjwvZHQ+CjxkZD48cD5DcmVhdGUgdGhlIFR5cGVTY3JpcHQgdHlwZXMgZGVjbGFyYXRpb25zIGZyb20gYSBKU09OU2NoZW1hIGRvY3VtZW50PC9wPgo8L2RkPgo8ZHQ+PGEgaHJlZj0iI3RvU291cmNlIj50b1NvdXJjZShub2Rlcyk8L2E+IOKHkjwvZHQ+CjxkZD48cD5SZXR1cm5zIHNvdXJjZSBmcm9tIGEgbGlzdCBvZiBUeXBlU2NyaXB0IHN0YXRlbWVudHM8L3A+CjwvZGQ+CjwvZGw+Cgo8YSBuYW1lPSJnZW5lcmF0ZU9wZW5BUElUeXBlcyI+PC9hPgoKIyMgZ2VuZXJhdGVPcGVuQVBJVHlwZXMoc2NoZW1hLCBvcHRpb25zKSDih5IgPGNvZGU+VHlwZVNjcmlwdC5Ob2RlQXJyYXk8L2NvZGU+CkNyZWF0ZSB0aGUgVHlwZVNjcmlwdCB0eXBlcyBkZWNsYXJhdGlvbnMgZnJvbSBhbiBPcGVuIEFQSSBkb2N1bWVudAoKKipLaW5kKio6IGdsb2JhbCBmdW5jdGlvbiAgCgp8IFBhcmFtIHwgVHlwZSB8IERlc2NyaXB0aW9uIHwKfCAtLS0gfCAtLS0gfCAtLS0gfAp8IHNjaGVtYSB8IDxjb2RlPkpTT05TY2hlbWEuRG9jdW1lbnQ8L2NvZGU+IHwgIHwKfCBvcHRpb25zIHwgPGNvZGU+T2JqZWN0PC9jb2RlPiB8ICB8Cnwgb3B0aW9ucy5iYXNlTmFtZSB8IDxjb2RlPnN0cmluZzwvY29kZT4gfCAgfAp8IG9wdGlvbnMuZmlsdGVyU3RhdHVzZXMgfCA8Y29kZT5BcnJheS4mbHQ7bnVtYmVyJmd0OzwvY29kZT4gfCAgfAp8IG9wdGlvbnMuZ2VuZXJhdGVVbnVzZWRTY2hlbWFzIHwgPGNvZGU+Ym9vbGVhbjwvY29kZT4gfCAgfAp8IG9wdGlvbnMuY2FtZWxpemVJbnB1dHMgfCA8Y29kZT5ib29sZWFuPC9jb2RlPiB8ICB8Cnwgb3B0aW9ucy5icmFuZGVkVHlwZXMgfCA8Y29kZT5BcnJheS4mbHQ7c3RyaW5nJmd0OzwvY29kZT4gfCBCcmFuZCB0eXBlcyBieSBuYW1lcyB8Cnwgb3B0aW9ucy5icmFuZGVkRm9ybWF0cyB8IDxjb2RlPkFycmF5LiZsdDtzdHJpbmcmZ3Q7PC9jb2RlPiB8IEJyYW5kIGZvcm1hdHMgYnkgbmFtZXMgfAp8IG9wdGlvbnMudHlwZWRGb3JtYXRzIHwgPGNvZGU+T2JqZWN0PC9jb2RlPiB8IFN1YnN0aXR1dGUgc3RyaW5nIGZvcm1hdCBieSBhIHR5cGUgfAp8IG9wdGlvbnMuZ2VuZXJhdGVSZWFsRW51bXMgfCA8Y29kZT5ib29sZWFuPC9jb2RlPiB8ICB8Cnwgb3B0aW9ucy50dXBsZXNGcm9tRml4ZWRBcnJheXNMZW5ndGhMaW1pdCB8IDxjb2RlPm51bWJlcjwvY29kZT4gfCAgfAp8IG9wdGlvbnMuZXhwb3J0TmFtZXNwYWNlcyB8IDxjb2RlPmJvb2xlYW48L2NvZGU+IHwgIHwKfCBvcHRpb25zLnJlcXVpcmVDbGVhbkFQSSB8IDxjb2RlPmJvb2xlYW48L2NvZGU+IHwgIHwKCjxhIG5hbWU9ImdlbmVyYXRlSlNPTlNjaGVtYVR5cGVzIj48L2E+CgojIyBnZW5lcmF0ZUpTT05TY2hlbWFUeXBlcyhzY2hlbWEsIG9wdGlvbnMpIOKHkiA8Y29kZT5UeXBlU2NyaXB0Lk5vZGVBcnJheTwvY29kZT4KQ3JlYXRlIHRoZSBUeXBlU2NyaXB0IHR5cGVzIGRlY2xhcmF0aW9ucyBmcm9tIGEgSlNPTlNjaGVtYSBkb2N1bWVudAoKKipLaW5kKio6IGdsb2JhbCBmdW5jdGlvbiAgCgp8IFBhcmFtIHwgVHlwZSB8IERlc2NyaXB0aW9uIHwKfCAtLS0gfCAtLS0gfCAtLS0gfAp8IHNjaGVtYSB8IDxjb2RlPkpTT05TY2hlbWEuRG9jdW1lbnQ8L2NvZGU+IHwgIHwKfCBvcHRpb25zIHwgPGNvZGU+T2JqZWN0PC9jb2RlPiB8ICB8Cnwgb3B0aW9ucy5iYXNlTmFtZSB8IDxjb2RlPnN0cmluZzwvY29kZT4gfCAgfAp8IG9wdGlvbnMuYnJhbmRlZFR5cGVzIHwgPGNvZGU+QXJyYXkuJmx0O3N0cmluZyZndDs8L2NvZGU+IHwgQnJhbmQgdHlwZXMgYnkgbmFtZXMgfAp8IG9wdGlvbnMuYnJhbmRlZEZvcm1hdHMgfCA8Y29kZT5BcnJheS4mbHQ7c3RyaW5nJmd0OzwvY29kZT4gfCBCcmFuZCBmb3JtYXRzIGJ5IG5hbWVzIHwKfCBvcHRpb25zLnR5cGVkRm9ybWF0cyB8IDxjb2RlPk9iamVjdDwvY29kZT4gfCBTdWJzdGl0dXRlIHN0cmluZyBmb3JtYXQgYnkgYSB0eXBlIHwKfCBvcHRpb25zLmdlbmVyYXRlUmVhbEVudW1zIHwgPGNvZGU+Ym9vbGVhbjwvY29kZT4gfCAgfAp8IG9wdGlvbnMudHVwbGVzRnJvbUZpeGVkQXJyYXlzTGVuZ3RoTGltaXQgfCA8Y29kZT5udW1iZXI8L2NvZGU+IHwgIHwKfCBvcHRpb25zLmV4cG9ydE5hbWVzcGFjZXMgfCA8Y29kZT5ib29sZWFuPC9jb2RlPiB8ICB8Cgo8YSBuYW1lPSJ0b1NvdXJjZSI+PC9hPgoKIyMgdG9Tb3VyY2Uobm9kZXMpIOKHkgpSZXR1cm5zIHNvdXJjZSBmcm9tIGEgbGlzdCBvZiBUeXBlU2NyaXB0IHN0YXRlbWVudHMKCioqS2luZCoqOiBnbG9iYWwgZnVuY3Rpb24gIAoqKlJldHVybnMqKjogc3RyaW5nICAKCnwgUGFyYW0gfCBUeXBlIHwKfCAtLS0gfCAtLS0gfAp8IG5vZGVzIHwgPGNvZGU+VHlwZWRQcm9wZXJ0eURlc2NyaXB0b3IuTm9kZUFycmF5PC9jb2RlPiB8IAoKCiMgQXV0aG9ycwotIFtOaWNvbGFzIEZyb2lkdXJlXShodHRwczovL2luc2VydGFmdGVyLmNvbS9lbi9pbmRleC5odG1sKQoKIyBMaWNlbnNlCltJU0NdKGh0dHBzOi8vZ2l0aHViLmNvbS9uZnJvaWR1cmUvc2NoZW1hMmR0cy9ibG9iL21haW4vTElDRU5TRSkK readmeEtag: '"2e904c7ebb830489a6a7901975088936aa231174"' readmeLastModified: Tue, 06 May 2025 11:42:18 GMT repositoryId: 291741148 description: A very simple JSONSchema to TypeScript types generator created: '2020-08-31T14:41:10Z' updated: '2025-11-06T15:40:42Z' language: TypeScript archived: false stars: 7 watchers: 2 forks: 2 owner: nfroidure logo: https://avatars.githubusercontent.com/u/229633?v=4 license: MIT repoEtag: '"cb3c72b5d4f636f3bbafab9c453a85cc5e50484acc0108bf43ddbe6fd2271e1a"' repoLastModified: Thu, 06 Nov 2025 15:40:42 GMT foundInMaster: true name: schema2dts homepage: https://github.com/nfroidure/schema2dts language: - Javascript - TypeScript source_description: Create types definitions from an OpenAPI schema. id: 8dbfb11a57e76d28203908d316294149 link: https://github.com/nfroidure/schema2dts v2: false category: Parsers - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/blst-security/cherrybomb v3: true repositoryMetadata: base64Readme: >- CjxkaXYgIGFsaWduPSJjZW50ZXIiPgoKIVtjaGVycnlfYm9tYl92MS4wXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmxzdC1zZWN1cml0eS9jaGVycnlib21iL21haW4vaW1hZ2VzL2NoZXJyeWJvbWJfZ2l0aHViX2FydF92Mi0xJTIwKDEpLnBuZykKCiAgCgo8aDE+U3RvcCBoYWxmLWRvbmUgQVBJIHNwZWNpZmljYXRpb25zPC9oMT4KClshW01haW50YWluZWQgYnkgYmxzdCBzZWN1cml0eV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9tYWludGFpbmVkJTIwYnktYmxzdCUyMHNlY3VyaXR5LTRGNDZFNSldKCkKClshW2RvY3NdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZG9jcy1wYXNzaW5nLWJyaWdodGdyZWVuKV0oKQoKWyFbRGlzY29yZCBTaGllbGRdKGh0dHBzOi8vZGlzY29yZGFwcC5jb20vYXBpL2d1aWxkcy85MTQ4NDY5MzczMjc0OTczMDcvd2lkZ2V0LnBuZz9zdHlsZT1zaGllbGQpXShodHRwczovL2Rpc2NvcmQuZ2cvV2RIaHY0RHF3VSkKCjwvZGl2PgoKICAKCiMg8J+SoyBXaGF0IGlzIENoZXJyeWJvbWI/CgpDaGVycnlib21iIGlzIGFuIENMSSB0b29sIHdyaXR0ZW4gIGluIFJ1c3QgdGhhdCBoZWxwcyBwcmV2ZW50IGluY29ycmVjdCBjb2RlIGltcGxlbWVudGF0aW9uIGVhcmx5IGluIGRldmVsb3BtZW50LiBJdCB3b3JrcyBieSB2YWxpZGF0aW5nIGFuZCB0ZXN0aW5nIHlvdXIgQVBJIHVzaW5nIGFuIE9wZW5BUEkgZmlsZS4gSXRzIG1haW4gZ29hbCBpcyB0byByZWR1Y2Ugc2VjdXJpdHkgZXJyb3JzIGFuZCBlbnN1cmUgeW91ciBBUEkgZnVuY3Rpb25zIGFzIGludGVuZGVkLgoKICAKICAKCiMg8J+UqCBIb3cgZG9lcyBpdCB3b3JrPwoKCkNoZXJyeWJvbWIgbWFrZXMgc3VyZSB5b3VyIEFQSSBpcyB3b3JraW5nIGNvcnJlY3RseS4gSXQgY2hlY2tzIHlvdXIgQVBJJ3Mgc3BlYyBmaWxlIChPcGVuQVBJIFNwZWNpZmljYXRpb24pIGZvciBnb29kIHByYWN0aWNlcyBhbmQgbWFrZXMgc3VyZSBpdCBmb2xsb3dzIHRoZSBPQVMgcnVsZXMuIFRoZW4sIGl0IHRlc3RzIHlvdXIgQVBJIGZvciBjb21tb24gaXNzdWVzIGFuZCB2dWxuZXJhYmlsaXRpZXMuIElmIGFueSBwcm9ibGVtcyBhcmUgZm91bmQsIENoZXJyeWJvbWIgZ2l2ZXMgeW91IGEgZGV0YWlsZWQgcmVwb3J0IHdpdGggdGhlIGV4YWN0IGxvY2F0aW9uIG9mIHRoZSBwcm9ibGVtIHNvIHlvdSBjYW4gZml4IGl0IGVhc2lseS4KCiAgCgojIPCfkL4gR2V0IFN0YXJ0ZWQKCiMjIEluc3RhbGxhdGlvbgoKCgojIyMjIyBMaW51eC9NYWNPUzoKCmBgYAoKREVQUkVDQVRFRCBGT1IgTk9XCmBgYAoKVGhlIHNjcmlwdCByZXF1aXJlcyBzdWRvIHBlcm1pc3Npb25zIHRvIG1vdmUgdGhlIGNoZXJyeWJvbWIgYmluIGludG8gPGI+L3Vzci9sb2NhbC9iaW4vPC9iPi48L2JyPgoKKElmIHlvdSB3YW50IHRvIHZpZXcgdGhlIHNoZWxsIHNjcmlwdChvciBldmVuIGhlbHAgdG8gaW1wcm92aW5nIGl0IC0gWy9zY3JpcHRzL2luc3RhbGwuc2hdKC9zY3JpcHRzL2luc3RhbGwuc2gpKQoKICMjIyMjIENvbnRhaW5lcml6ZWQgdmVyc2lvbgogWW91IGNhbiBnZXQgQ2hlcnJ5Ym9tYiB0aHJvdWdoIGl0cyBjb250YWluZXJpemVkIHZlcnNpb24gd2hpY2ggaXMgaG9zdGVkIG9uIEFXUyBFQ1IsIGFuZCByZXF1aXJlcyBhbiBBUEkga2V5IHRoYXQgeW91IGNhbiBnZXQgb24gdGhhdCBhZGRyZXNzKHRoZSBsb2FkaW5nIGlzIGEgYml0IHNsb3cpIC0gREVQUkVDQVRFRCBGT1IgTk9XCgpgYGAKZG9ja2VyIHJ1biAtLW1vdW50IHR5cGU9YmluZCxzb3VyY2U9W1BBVEggVE8gT0FTXSxkZXN0aW5hdGlvbj0vaG9tZSBwdWJsaWMuZWNyLmF3cy9ibHN0LXNlY3VyaXR5L2NoZXJyeWJvbWI6bGF0ZXN0IGNoZXJyeWJvbWIgLWYgL2hvbWUvW09BUyBOQU1FXSAtLWFwaS1rZXk9W0FQSS1LRVldCmBgYAoKIyMjIyBHZXQgaXQgZnJvbSBjcmF0ZXMuaW8KCmBgYGJhc2gKCmNhcmdvIGluc3RhbGwgY2hlcnJ5Ym9tYgoKYGBgCgpJZiB5b3UgZG9uJ3QgaGF2ZSBjYXJnbyBpbnN0YWxsZWQsIHlvdSBjYW4gaW5zdGFsbCBpdCBmcm9tIFtoZXJlXShodHRwczovL2RvYy5ydXN0LWxhbmcub3JnL2NhcmdvL2dldHRpbmctc3RhcnRlZC9pbnN0YWxsYXRpb24uaHRtbCkKCgoKIyMjIyBCdWlsZGluZyBmcm9tIFNvdXJjZXMKCllvdSBjYW4gYWxzbyBidWlsZCBDaGVycnlib21iIGZyb20gc291cmNlcyBieSBjbG9uaW5nIHRoaXMgcmVwbywgYW5kIGJ1aWxkaW5nIGl0IHVzaW5nIGNhcmdvLgoKYGBgCgpnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2Jsc3Qtc2VjdXJpdHkvY2hlcnJ5Ym9tYiAmJiBjZCBjaGVycnlib21iCgpgYGAKVGhlIG1haW4gYnJhbmNoJ3MgQ2FyZ28udG9tbCBmaWxlIHVzZXMgYGNoZXJyeWJvbWItZW5naW5lYCBhbmQgYGNoZXJyeWJvbWItb2FzYCBmcm9tIGNyYXRlcy5pby4gCgppZiB5b3Ugd2FudCBidWlsZCB0aG9zZSBmcm9tIHNvdXJjZSB0b28sIHlvdSBjYW4gY2hhbmdlIHRoZSBmb2xsb3dpbmcgZmlsZXM6CgoocmVtb3ZlIHRoZSB2ZXJzaW9uIG51bWJlciBhbmQgcmVwbGFjZSB3aXRoIHRoZSBwYXRoIHRvIHRoZSBsb2NhbCByZXBvKQoKCgpgYGAKY2hlcnJ5Ym9tYi9DYXJnby50b21sOgpjaGVycnlib21iLWVuZ2luZSA9IHZlcnNpb24gPT4geyBwYXRoID0gImNoZXJyeWJvbWItZW5naW5lIiB9CmBgYAogCmBgYApjaGVycnlib21iL2NoZXJyeWJvbWItZW5naW5lL0NhcmdvLnRvbWw6CmNoZXJyeWJvbWItb2FzID0gdmVyc2lvbiA9PiB7IHBhdGggPSAiLi4vY2hlcnJ5Ym9tYi1vYXMiIH0KYGBgCgpgYGAKY2FyZ28gYnVpbGQgLS1yZWxlYXNlCnN1ZG8gbXYgLi90YXJnZXQvcmVsZWFzZS9jaGVycnlib21iIC91c3IvbG9jYWwvYmluICMgb3IgYW55IG90aGVyIGRpcmVjdG9yeSBpbiB5b3VyIFBBVEgKYGBgCiAgCgogIAojIyMgUHJvZmlsZSAKIApQcm9maWxlcyBhbGxvdyB5b3UgdG8gY2hvb3NlIHRoZSB0eXBlIG9mIGNoZWNrIHlvdSB3YW50IHRvIHVzZS4KYGBgCi0gaW5mbzogb25seSBnZW5lcmF0ZXMgcGFyYW0gYW5kIGVuZHBvaW50IHRhYmxlcwotIG5vcm1hbDogIGJvdGggYWN0aXZlIGFuZCBwYXNzaXZlCi0gaW50cnVzaXZlOiBhY3RpdmUgYW5kIGludHJ1c2l2ZSBbaW4gZGV2ZWxvcG1lbnRdCi0gcGFzc2l2ZTogb25seSBwYXNzaXZlIHRlc3RzCi0gZnVsbDogYWxsIHRoZSBvcHRpb25zCmBgYAoKIyMjIENvbmZpZyAKCgoKV2l0aCBhIGNvbmZpZ3VyYXRpb24gZmlsZSwgeW91IGNhbiBlYXNpbHkgZWRpdCwgdmlldywgQ2hlcnJ5Ym9tYidzIG9wdGlvbnMuClRoZSBjb25maWcgZmlsZSBhbGxvd3MgeW91IHRvIHNldCB0aGUgcnVubmluZyBwcm9maWxlLCBsb2NhdGlvbiBvZiB0aGUgb2FzIGZpbGUsIHRoZSB2ZXJib3NpdHkgYW5kIGlnbm9yZSB0aGUgVExTIGVycm9yLgoKQ29uZmlnIGFsc28gYWxsb3dzIHlvdSB0byBvdmVycmlkZSB0aGUgc2VydmVyJ3MgVVJMIHdpdGggYW4gYXJyYXkgb2Ygc2VydmVycywgYW5kIGFkZCBzZWN1cml0eSB0byB0aGUgcmVxdWVzdCBbaW4gZGV2ZWxvcG1lbnRdLiAKCk5vdGljZSB0aGF0IENMSSBhcmd1bWVudHMgcGFyYW1ldGVyIHdpbGwgb3ZlcnJpZGUgY29uZmlnIG9wdGlvbnMgaWYgYm90aCBhcmUgc2V0LgoKWW91IGNhbiBhbHNvIGFkZCBvciByZW1vdmUgY2hlY2tzIGZyb20gYSBwcm9maWxlIHVzaW5nIGBwYXNzaXZlL2FjdGl2ZS1pbmNsdWRlL2V4Y2x1ZGVgLiBbaW4gZGV2ZWxvcG1lbnRdCgpgYGAKY2hlcnJ5Ym9tYiAtLWNvbmZpZyAgPENPTkZJR19GSUxFPgpgYGAKCgpTdHJ1Y3R1cmUgb2YgY29uZmlnIGZpbGU6CmBgYAp7CiJmaWxlIiA6ICJvcGVuLWFwaS5qc29uIiwKInZlcmJvc2l0eSIgOiAibm9ybWFsLCAKInByb2ZpbGUiIDogIiAiTm9ybWFsIiwKInBhc3NpdmVfaW5jbHVkZSIgOiBbImNoZWNrMSwgY2hlY2tzMiJdLAoiYWN0aXZlX2luY2x1ZGUiOiBbImNoZWNrMywgY2hlY2s0Il0sCiJzZXJ2ZXJzX292ZXJyaWRlIiAsIFsiaHR0cDovL3NlcnZlci8iXSwKInNlY3VyaXR5IjogIFt7CiAgICAiYXV0aF90eXBlIjogIkJhc2ljIiwKICAgICJhdXRoX3ZhbHVlIiA6IHRva2VuX3ZhbHVlLAogICAgImF1dGhfc2NvcGUiIDogc2NvcGVfbmFtZQogICAgfV0sCiJpZ25vcmVfdGxzX2Vycm9ycyIgOiB0cnVlLCAKIm5vX2NvbG9yIiA6IGZhbHNlLAp9CmBgYAoKCgojIFVzYWdlCgpBZnRlciBpbnN0YWxsaW5nLCB2ZXJpZnkgaXQncyB3b3JraW5nIGJ5IHJ1bm5pbmcKCmBgYApjaGVycnlib21iIC0tdmVyc2lvbgoKYGBgCgojIyMgT3BlbkFQSSBzcGVjaWZpY2F0aW9uCgoKYGBgIGNoZXJyeWJvbWIgLS1maWxlIDxQQVRIPiAtLXByb2ZpbGUgcGFzc2l2ZSBgYGAKClBhc3NpdmUgT3V0cHV0IGV4YW1wbGU6CgohW3Bhc3NpdmVfb3V0cHV0XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmxzdC1zZWN1cml0eS9jaGVycnlib21iL21haW4vaW1hZ2VzL3Bhc3NpdmUxXzAucG5nKQoKCiMjIyBHZW5lcmF0ZSBJbmZvIFRhYmxlCgoKYGBgCmNoZXJyeWJvbWIgLS1maWxlIDxQQVRIPiAtLXByb2ZpbGUgaW5mbwoKYGBgClBhcmFtZXRlciB0YWJsZSBvdXRwdXQ6CgogICFbcGFyYW1ldGVyX291dHB1dF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Jsc3Qtc2VjdXJpdHkvY2hlcnJ5Ym9tYi9tYWluL2ltYWdlcy9wYXJhbV92MS5wbmcpCgpFbmRwb2ludCB0YWJsZSBvdXRwdXQ6CgogICFbZW5kcG9pbnRfb3V0cHV0XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmxzdC1zZWN1cml0eS9jaGVycnlib21iL21haW4vaW1hZ2VzL2VuZHBvaW50X3YxLnBuZykKCgoKCiMg8J+NuyBJbnRlZ3JhdGlvbgoKREVQUkVDQVRFRCBGT1IgTk9XIC0gV0lMTCBCRSBSRVBMQUNFRCBTT09OCgpZb3UgY2FuIGVtYmVkIGl0IGludG8geW91ciBDSSBwaXBlbGluZSwgYW5kIElmIHlvdSBwbGFuIG9uIGRvaW5nIHRoYXQgSSB3b3VsZCByZWNvbW1lbmQgdGhhdCB5b3UgZ28gdG8gb3VyIFt3ZWJzaXRlXSgpLCBzaWduIHVwLCBnbyB0aHJvdWdoIHRoZSBbQ0kgcGlwZWxpbmUgaW50ZWdyYXRpb24gd2l6YXJkXSgpLCBhbmQgY29weSB0aGUgZ3Jvb3Z5L0dpdEh1YiBhY3Rpb25zIHNuaXBwZXQgYnVpbHQgZm9yIHlvdS4KCjwvYnI+RXhhbXBsZToKCiFbQ0kgcGlwZWxpbmUgYnVpbGRlciBvdXRwdXRdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9ibHN0LXNlY3VyaXR5L2NoZXJyeWJvbWIvbWFpbi9pbWFnZXMvY2lfb3V0cHV0LnBuZykKCiMg8J+SqiBTdXBwb3J0CgogIAoKIyMjIEdldCBoZWxwCgpJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIHlvdSBjYW4gYXNrIHVzIG9uIG91ciBbZGlzY29yZCBzZXJ2ZXJdKGh0dHBzOi8vZGlzY29yZC5nZy9XZEhodjREcXdVKS4KCgpZb3UgYXJlIGFsc28gd2VsY29tZSB0byBvcGVuIGFuIElzc3VlIGhlcmUgb24gR2l0SHViLgo= readmeEtag: '"1d2f3098a3e03c3c375f1ee43b453d76587fa2ae"' readmeLastModified: Fri, 25 Oct 2024 10:03:59 GMT repositoryId: 428941557 description: >- Stop half-done APIs! Cherrybomb is a CLI tool that helps you avoid undefined user behaviour by auditing your API specifications, validating them and running API security tests. created: '2021-11-17T07:02:22Z' updated: '2026-02-03T20:06:51Z' language: Rust archived: false stars: 1231 watchers: 12 forks: 82 owner: blst-security logo: https://avatars.githubusercontent.com/u/54233087?v=4 license: Apache-2.0 repoEtag: '"674d6fcd3b7aeb8fbbb80d8f12fe2f2f62184c225cfe9d3611eff833fe4da3ff"' repoLastModified: Tue, 03 Feb 2026 20:06:51 GMT foundInMaster: true name: Cherrybomb category: - Description Validators - Server Implementations language: Rust link: https://www.blstsecurity.com/cherrybomb source_description: >- A CLI tool that helps avoid undefined user behaviour by validating your API descriptions, to make sure key parts are not missing or vague. v2: false v3_1: true id: ddbbcb536a870b27a61df0b41529385d - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/ignatandrei/blocklyautomation v3: true repositoryMetadata: base64Readme: >- IyBWaXN1YWxBUEkgLSBBZGQgKCB0byB5b3VyIHwgIGluc2lkZSB5b3VyICkgYXBwbGljYXRpb24gTG93Q29kZSBNYWNyb3MgZm9yIFlPVVIgQVBJIC8gSFRUUCBDYWxscwoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUJBREdFOlNUQVJUIC0gRG8gbm90IHJlbW92ZSBvciBtb2RpZnkgdGhpcyBzZWN0aW9uIC0tPgpbIVtBbGwgQ29udHJpYnV0b3JzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2FsbF9jb250cmlidXRvcnMtMi1vcmFuZ2Uuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oI2NvbnRyaWJ1dG9ycy0pCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1CQURHRTpFTkQgLS0+CgpCbG9ja2x5IEF1dG9tYXRpb24gOiAgaXMgYSB0b29sIGZvciBMb3dDb2RlIC8gYXV0b21hdGlvbiBvZiBzaXRlcyAoU3dhZ2dlciAvIE9wZW5BUEkgLyBSUEEgKSBhbmQgUEMgbWFkZSBvZiBCbG9ja2x5LiAKCiMgSG93IHRvIHVzZSBpZiB5b3UgYXJlCgojIyBhIGJhY2tlbmQgZGV2ZWxvcGVyIHdpdGggYW4gUkVTVCAvIE9wZW5BUEkgLyBTd2FnZ2VyIGVuYWJsZWQgc2l0ZSBhbmQgSSB3YW50IHRvIHNob3cgdGhlIHVzZSBvZiBteSBzaXRlCgoKVXNlIHRoZSBhcHByb3BpYXRlIHBhY2thZ2U6IAoKIyMjIFtOZXRDb3JlXShodHRwczovL2dpdGh1Yi5jb20vaWduYXRhbmRyZWkvbmV0Y29yZWJsb2NrbHkvKSAgLCBtYWRlIGJ5IEFuZHJlaSBJZ25hdAoKLk5FVCBDb3JlOiBbIVtOdWdldF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9udWdldC9kdC9OZXRDb3JlMkJsb2NrbHkpXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTmV0Q29yZTJCbG9ja2x5LykKCk1vcmUgZGV0YWlscyBhdCBodHRwczovL2dpdGh1Yi5jb20vaWduYXRhbmRyZWkvbmV0Y29yZWJsb2NrbHkvCgoKIyMjIFtKYXZhXShodHRwczovL2dpdGh1Yi5jb20vZWNpdWNhL2Jsb2NrbHktYXV0b21hdGlvbi1zdGFydGVyLXdlYm12Yy11aSkgLCBGdWxsIGV4YW1wbGUgYnkgRW1hbnVlbCBDaXVjYSAKCkphdmEgU3ByaW5nIDogWyFbTWF2ZW4gQ2VudHJhbF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9tYXZlbi1jZW50cmFsL3YvaW8uZ2l0aHViLmVjaXVjYS5ibG9ja2x5L2Jsb2NrbHktYXV0b21hdGlvbi1zdGFydGVyLXdlYm12Yy11aSldKGh0dHBzOi8vY2VudHJhbC5zb25hdHlwZS5jb20vYXJ0aWZhY3QvaW8uZ2l0aHViLmVjaXVjYS5ibG9ja2x5L2Jsb2NrbHktYXV0b21hdGlvbi1zdGFydGVyLXdlYm12Yy11aS8pCgpUaGUgTWF2ZW4gaXMgaHR0cHM6Ly9jZW50cmFsLnNvbmF0eXBlLmNvbS9hcnRpZmFjdC9pby5naXRodWIuZWNpdWNhLmJsb2NrbHkvYmxvY2tseS1hdXRvbWF0aW9uLXN0YXJ0ZXItd2VibXZjLXVpLwoKVGhlIHJlcG8gd2l0aCBleGFtcGxlIGlzIGh0dHBzOi8vZ2l0aHViLmNvbS9lY2l1Y2EvYmxvY2tseS1hdXRvbWF0aW9uLXN0YXJ0ZXItd2VibXZjLXVpIAoKCiMjIyBbTm9kZV0oaHR0cHM6Ly9naXRodWIuY29tL2lnbmF0YW5kcmVpL0Jsb2NrbHlBdXRvbWF0aW9uL3dpa2kvbm9kZSkgLCBtYWRlIGJ5IEFuZHJlaSBJZ25hdAoKTm9kZTogWyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L25vZGUyLWJsb2NrbHkpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9ub2RlLWJsb2NrbHk/KQoKTW9yZSBkZXRhaWxzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9pZ25hdGFuZHJlaS9CbG9ja2x5QXV0b21hdGlvbi93aWtpL25vZGUKCiMjIyBbUEhQXShodHRwczovL2dpdGh1Yi5jb20vVHluYWVsL2xhcmF2ZWwtYmxvY2tseS1hdXRvbWF0aW9uKSAsIG1hZGUgYnkgQ2Fyb2wgUGVsdQoKCgpQYWNrYWdpc3QgOiBbIVtwaHBdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L3YvY2Fyb2xwZWx1L2Jsb2NrbHktYXV0b21hdGlvbildKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9jYXJvbHBlbHUvYmxvY2tseS1hdXRvbWF0aW9uKQoKTW9yZSBkZXRhaWxzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9UeW5hZWwvbGFyYXZlbC1ibG9ja2x5LWF1dG9tYXRpb24KCgoKCiMjIERvY2tlciBFeHRlbnNpb24KCmh0dHBzOi8vb3Blbi5kb2NrZXIuY29tL2V4dGVuc2lvbnMvbWFya2V0cGxhY2U/ZXh0ZW5zaW9uSWQ9aWduYXRhbmRyZWkvYmxvY2tseS1hdXRvbWF0aW9uCgoKIyMjIE1hbnVhbAoKRG93bmxvYWQgdGhlIEhUTUwgcmVsZWFzZSBbQmxvY2tseUF1dG9tYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9pZ25hdGFuZHJlaS9CbG9ja2x5QXV0b21hdGlvbi9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVsZWFzZUJsb2NrbHlBdXRvbWF0aW9uLnppcC8pIC4KCkZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSB3aWtpIGZpbGUuICAKCiMjIyMgW01hbnVhbCBKYXZhXShodHRwczovL2dpdGh1Yi5jb20vY29zbWlucG9wZXNjdTE0L21hdGgtb3BlcmF0aW9ucy1zd2FnZ2VyKSAsIE1hbnVhbCBleGFtcGxlIGJ5IENvc21pbiBQb3Blc2N1IAoKRXhhbXBsZSBieSBDb3NtaW4gUG9wZXNjdSBhdCBodHRwczovL2dpdGh1Yi5jb20vY29zbWlucG9wZXNjdTE0L21hdGgtb3BlcmF0aW9ucy1zd2FnZ2VyCgoKCiMjIGEgZnJvbnRlbmQgIGRldmVsb3BlciB0aGF0IGZpbmRzIGEgYnVnIGluIGEgUkVTVCAvIE9wZW5BUEkgLyBTd2FnZ2VyIGVuYWJsZWQgc2l0ZQoKWW91IHdhbnQgdG8gc2hvdyB0byB0aGUgYmFja2VuZCBkZXZlbG9wZXIgaG93IHRvIHJlcHJvZHVjZSB0aGUgcHJvYmxlbSAuCgpJZiB5b3UgY29udHJvbCB0aGUgc2l0ZSAsIHRoZW4geW91IGNhbiB1c2UgdGhlIFtCbG9ja2x5QXV0b21hdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL2lnbmF0YW5kcmVpL0Jsb2NrbHlBdXRvbWF0aW9uL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC9yZWxlYXNlQmxvY2tseUF1dG9tYXRpb24uemlwLykgdG8gcmVwcm9kdWNlIHRoZSBwcm9ibGVtLgoKRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhlIHdpa2kgZmlsZS4gIAoKSWYgeW91IGRvIG5vdCBjb250cm9sIHRoZSBzaXRlLCB0aGVuIGluc3RhbGwgdGhlIGFwcGxpY2F0aW9uIGZyb20gaHR0cDovL2JhLnNlcnZpY2lpcGV3ZWIucm8vIGFuZCB0aGVuIHVzZSBpdCB0byByZXByb2R1Y2UgdGhlIHByb2JsZW0uICggd2lraSBzaXRlIGNvbWluZyB3aXRoIGRldGFpbHMpIAoKIyMgYSB3ZWIgc2l0ZSBhcHBsaWNhdGlvbiB0ZXN0ZXIKSWYgeW91IGNvbnRyb2wgdGhlIHNpdGUgLCB0aGVuIGNhbiB1c2UgdGhlIGh0dHBzOi8vZ2l0aHViLmNvbS9pZ25hdGFuZHJlaS9CbG9ja2x5QXV0b21hdGlvbi9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVsZWFzZUJsb2NrbHlBdXRvbWF0aW9uLnppcC8gIGFuZCB0aGVuIHVzZSBpdCB0byByZXByb2R1Y2UgdGhlIHByb2JsZW0uICggd2lraSBzaXRlIGNvbWluZyB3aXRoIGRldGFpbHMpIC4KCklmIHlvdSBkb2VzIG5vdCBjb250cm9sIHRoZSBzaXRlLCB0aGVuIGluc3RhbGwgdGhlIGFwcGxpY2F0aW9uIGZyb20gaHR0cDovL2JhLnNlcnZpY2lpcGV3ZWIucm8vIGFuZCB0aGVuIHVzZSBpdCB0byBtYWtlIHRlc3QgY2FzZXMuICggd2lraSBzaXRlIGNvbWluZyB3aXRoIGRldGFpbHMpIAoKCiMjIFtEb2NrZXIgRXh0ZW5zaW9uXShodHRwczovL2dpdGh1Yi5jb20vaWduYXRhbmRyZWkvQmxvY2tseUF1dG9tYXRpb24vd2lraS9Eb2NrZXJFeHRlbnNpb24pCgpQbGVhc2Ugc2VlIFtEb2NrZXIgRXh0ZW5zaW9uXShodHRwczovL2dpdGh1Yi5jb20vaWduYXRhbmRyZWkvQmxvY2tseUF1dG9tYXRpb24vd2lraS9Eb2NrZXJFeHRlbnNpb24pClNlZSAKIyMgbm90IGEgcHJvZ3JhbW1lci4gIEkgd2FudCB0byBhdXRvbWF0ZS9nYXRoZXIgZGF0YSBmcm9tIHNldmVyYWwgc2l0ZXMgKCBwdWJsaWMgb3IgcHJpdmF0ZSApCgpZb3Ugd2FudCB0byBvYnRhaW4gc29tZSBkYXRhIGZyb20gdGhlIHdlYi4gRm9yIGV4YW1wbGUsIGV4dHJhY3QgdGhlIGV4Y2hhbmdlIGJldHdlZW4gRVVSIC8gUk9OIC4KCkluc3RhbGwgdGhlIGFwcGxpY2F0aW9uIGZyb20gaHR0cDovL2JhLnNlcnZpY2lpcGV3ZWIucm8vIC4KCkZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSB3aWtpIGZpbGUuCgoKIyMgbm90IGEgcHJvZ3JhbW1lciBhbmRJIHdhbnQgdG8gYXV0b21hdGUgdGhpbmdzIG9uIG15IFBDLiAKCllvdSB3YW50IHRvIG9idGFpbiBzb21lIGRhdGEgZnJvbSB5b3VyIFBDLiBGb3IgZXhhbXBsZSwgZXh0cmFjdCBhbmQgZXhwb3J0IHRvIENTViB0aGUgQ2hyb21lIEJvb2ttYXJrcy4KCkluc3RhbGwgdGhlIGFwcGxpY2F0aW9uIGZyb20gaHR0cDovL2JhLnNlcnZpY2lpcGV3ZWIucm8vIC4KCkZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSB3aWtpIGZpbGUuCgoKCiMjIFN1Z2dlc3QgYSBwdWJsaWMgQVBJIGZvciBCbG9ja2x5QXV0b21hdGlvbgoKSWYgeW91IGhhdmUgYSBwdWJsaWMgQVBJL3NpdGUgdGhhdCB5b3Ugd2FudCB0byBhdXRvbWF0ZSwgcGxlYXNlIHNlbmQgZmlsZSBhbiBpc3N1ZSBhdCBodHRwczovL2dpdGh1Yi5jb20vaWduYXRhbmRyZWkvQmxvY2tseUF1dG9tYXRpb24vaXNzdWVzIAoKCiMjIEhvdyB0byBzZWUgYSBwcmV2aWV3CgoKVG8gc2VlIHRoZSB3aG9sZSBwb3RlbnRpYWwgLCBwbGVhc2UgZ28gdG8gaHR0cDovL2JhLnNlcnZpY2lpcGV3ZWIucm8vIGFuZCBjbGljayBMYXVuY2ggLgoKSWYgeW91IHdhbnQgdG8gc2VlIHNvbWUgd2ViIERlbW8gLCBwbGVhc2UgZ28gdG8gaHR0cHM6Ly9pZ25hdGFuZHJlaS5naXRodWIuaW8vQmxvY2tseUF1dG9tYXRpb24vIGFuZCB0ZXN0IHZhcmlvdXMgSFRUUCByZXF1ZXN0LCBTd2FnZ2VycyBhbmQgbW9yZQoKIyMgSG93IHRvIGluc3RhbGwgb24geW91ciBQQwoKU2VlIFtyZWxlYXNlcyB0YWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9pZ25hdGFuZHJlaS9CbG9ja2x5QXV0b21hdGlvbi9yZWxlYXNlcykKCllvdSBjYW4gZmluZCB0aGUgCgoxLiBBbmd1bGFyIHNpdGUgLCByZWFkeSB0byBiZSBkZXBsb3llZCB0byBhbnkgc2VydmVyCjIuIElJUyBzaXRlICAgLCByZWFkeSB0byBiZSBkZXBsb3llZCBvbiBJSVMKMy4gQSAuTkVUIENvcmUgc2l0ZSwgcmVhZHkgdG8gYmUgZGVwbG95ZWQgb24gTGludXggb3IgV2luZG93cywgc3RhbmRhbG9uZSAoIGFzIGEgc2VydmljZSApCgojIFlvdSBoYXZlIGEgc2l0ZSB3aXRoIE9wZW5BUEkgLyBTd2FnZ2VyLiBXaGF0IHNob3VsZCBJIGRvICA/CgpEb3dubG9hZCBmcm9tIFtyZWxlYXNlcyB0YWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9pZ25hdGFuZHJlaS9CbG9ja2x5QXV0b21hdGlvbi9yZWxlYXNlcykgdGhlIEFuZ3VsYXIgc2l0ZS4gUHV0IGluZGV4Lmh0bWwgYW5kIGFsbCBvdGhlciBmaWxlcyBpbnRvIGEgQkxvY2tseUF1dG9tYXRpb24gZm9sZGVyIGluc2lkZSB5b3VyIHd3d3Jvb3QgIGZvbGRlciAoIG9yIGluIHlvdXIgcHJvamVjdCByb290ICkgYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KCjEuIEl0IGNvdWxkIGJlIGFuIGlkZWEgdG8gbWFwIGV2ZXJ5dGhpbmcgdGhhdCBzdGFydCB3aXRoIC9CbG9ja2x5QXV0b21hdGlvbiB0byAvQmxvY2tseUF1dG9tYXRpb24vaW5kZXguaHRtbCAtIHNlZSBzcmNcTG9hZGVyc1xTaW1wbGVTaXRlIHRvIGhhdmUgYW4gQyMgZXhhbXBsZSAKICAgCjIuIE1vZGlmeSBhc3NldHMvc2V0dGluZ3MuanNvbiB0byBjaGFuZ2UgdGhlIG5hbWUgYW5kIHRoZSBzdGFydGluZyBibG9ja3MKICAgCjMuIE1vZGlmeSBhc3NldHMvbG9hZEF0U3RhcnR1cC9zd2FnZ2Vycy5qc29uIHRvIGFkZCB5b3VyIHN3YWdnZXJzCgo0LiBNb2RpZnkgYXNzZXRzL3Nob3dVc2FnZS9kZW1vQmxvY2tzL2FsbC50eHQgdG8gYWRkIHlvdXIgZGVtbyBmb3IgdGhlIGJsb2NrcyAuIAogICAoIFlvdSBjYW4gY29uc3RydWN0IGFuZCB0aGVuIGRvd25sb2FkIGFuZCBzYXZlIGFzIGZpbGVzKQoKNS4gU2VuZCBtZSBhbiBlbWFpbCB0byBoZWxwIHlvdSAgaWYgc29tZXRoaW5nICBpcyBub3Qgd29ya2luZy4KIyMgSG93IHRvIGN1c3RvbWl6ZQoKVG8gY3VzdG9taXplIHRoZSB0aXRsZSAsIGludHJvZHVjdGlvbiBhbmQgc3RhcnQgYmxvY2tzICwgc2VlIGFzc2V0cy9zZXR0aW5ncy5qc29uCgpUbyBsb2FkIHN3YWdnZXJzIGF0IHN0YXJ0dXAsIHNlZSAgYXNzZXRzL2xvYWRBdFN0YXJ0dXAvc3dhZ2dlcnMuanNvbgoKVG8gY3VzdG9taXplIGRlbW8gYmxvY2tzLGRvd25sb2FkIHlvdXIgYmxvY2tzLCBwdXQgdGhlIHR4dCBmaWxlIGluICBhc3NldHMvc2hvd1VzYWdlL2RlbW9CbG9ja3MvIGFuZCBtb2RpZnkgYXNzZXRzL3Nob3dVc2FnZS9kZW1vQmxvY2tzL2FsbC50eHQKCiMjICBIb3cgdG8gY29udHJpYnV0ZQoKSWYgeW91IGFyZSBhIGJlZ2lubmVyIHRvIGJsb2NrbHksIHNlZSAKCmh0dHBzOi8vZ2l0aHViLmNvbS9pZ25hdGFuZHJlaS9CbG9ja2x5QXV0b21hdGlvbi9pc3N1ZXM/cT1pcyUzQWlzc3VlK2lzJTNBb3BlbitsYWJlbCUzQSUyMmdvb2QrZmlyc3QraXNzdWUlMjIKCiFbR2l0SHViIGlzc3VlcyBieS1sYWJlbF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvaXNzdWVzL2lnbmF0YW5kcmVpL0Jsb2NrbHlBdXRvbWF0aW9uL2dvb2QlMjBmaXJzdCUyMGlzc3VlKQoKWW91IHdpbGwgYmUgbWVudGlvbmVkIGJlbG93IDstKQoKCiMjIENvbnRyaWJ1dG9ycyDinKgKClRoYW5rcyBnb2VzIHRvIHRoZXNlIHdvbmRlcmZ1bCBwZW9wbGUgKFtlbW9qaSBrZXldKGh0dHBzOi8vYWxsY29udHJpYnV0b3JzLm9yZy9kb2NzL2VuL2Vtb2ppLWtleSkpOgoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6U1RBUlQgLSBEbyBub3QgcmVtb3ZlIG9yIG1vZGlmeSB0aGlzIHNlY3Rpb24gLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgo8IS0tIG1hcmtkb3dubGludC1kaXNhYmxlIC0tPgo8dGFibGU+CiAgPHRyPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vYWVueXgtZGVzaWducy5jb20vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMzMTk2MzQxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPkJvZ2RhbiBCb2JlPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjZGVzaWduLWFyZWFsc2hhZG93IiB0aXRsZT0iRGVzaWduIj7wn46oPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaWduYXRhbmRyZWkvQmxvY2tseUF1dG9tYXRpb24vY29tbWl0cz9hdXRob3I9YXJlYWxzaGFkb3ciIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Fkcmlhbi1iYWR1bGVzY3UiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDk0OTA5NDY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+QWRyaWFuIEJhZHVsZXNjdTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2V4YW1wbGUtYWRyaWFuLWJhZHVsZXNjdSIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgPC90cj4KPC90YWJsZT4KCjwhLS0gbWFya2Rvd25saW50LXJlc3RvcmUgLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4KCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1MSVNUOkVORCAtLT4KClRoaXMgcHJvamVjdCBmb2xsb3dzIHRoZSBbYWxsLWNvbnRyaWJ1dG9yc10oaHR0cHM6Ly9naXRodWIuY29tL2FsbC1jb250cmlidXRvcnMvYWxsLWNvbnRyaWJ1dG9ycykgc3BlY2lmaWNhdGlvbi4gQ29udHJpYnV0aW9ucyBvZiBhbnkga2luZCB3ZWxjb21lIQ== readmeEtag: '"0b8a3b0a75a8247f4625843bda3826f655a7eb35"' readmeLastModified: Tue, 23 Jul 2024 17:48:16 GMT repositoryId: 427082891 description: >- VisualAPI - LowCode Macros for YOUR API / HTTP Calls : https://visualapi.azurewebsites.net/ created: '2021-11-11T17:14:47Z' updated: '2025-03-23T17:11:34Z' language: JavaScript archived: false stars: 40 watchers: 3 forks: 10 owner: ignatandrei logo: https://avatars.githubusercontent.com/u/153982?v=4 license: MIT repoEtag: '"b66fb339c972682afb29c2a3b793dd7f021da2db621a9b899a2fe2e1025a692a"' repoLastModified: Sun, 23 Mar 2025 17:11:34 GMT foundInMaster: true category: - Code Generators - SDK - Documentation - Testing id: 44b9d7b1e68471c05b67c3ff6c02172a name: BlocklyAutomation link: https://ignatandrei.github.io/BlocklyAutomation/ language: - Javascript - .NET source_description: >- Input any OpenAPI document to have generated Blocks in Blockly form to test and generate documentation. v3_1: true - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags repository: https://github.com/embraser01/typoas v3: true repositoryMetadata: base64Readme: >- IyBUeXBvYXMKCiFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0B0eXBvYXMvY2xpP2xhYmVsPWNsaSU0MG5wbSkgIAohW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AdHlwb2FzL2dlbmVyYXRvcj9sYWJlbD1nZW5lcmF0b3IlNDBucG0pICAKIVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQHR5cG9hcy9ydW50aW1lP2xhYmVsPXJ1bnRpbWUlNDBucG0pICAKIVtHaXRIdWJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvZW1icmFzZXIwMS90eXBvYXMpICAKIVtucG0gYnVuZGxlIHNpemVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYnVuZGxlcGhvYmlhL21pbnppcC9AdHlwb2FzL3J1bnRpbWUpCgpUeXBvYXMgaXMgYW4gT3BlbkFQSSAzLlggZ2VuZXJhdG9yIGZvciBUeXBlc2NyaXB0LiBJdCdzIGluc3BpcmVkIGJ5IFtvcGVuYXBpLWdlbmVyYXRvcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoLykgIApidXQgaXMgd3JpdHRlbiBpbiBUeXBlc2NyaXB0IGZvciBUeXBlc2NyaXB0LiBUaGUgZ2VuZXJhdG9yIHVzZXMgdGhlIFR5cGVzY3JpcHQgQVNUIHRvIGdlbmVyYXRlIGNvZGUgaW5zdGVhZCBvbiByZWxheWluZyAgCm9uIHRlbXBsYXRlcyB3aGljaCBhbGxvd3MgYmV0dGVyIHNjaGVtYXMgZGVmaW5pdGlvbnMgYW5kIG90aGVyIGNvb2wgc3R1ZmYuCgpNYWluIGZlYXR1cmVzIGFyZToKCi0gRnVsbHkgdHlwZWQgYW5kIGZ1bGx5IGN1c3RvbWl6YWJsZQotIFJlZmVyZW5jZXMgYCRyZWZgIGhhbmRsaW5nIChpbmNsdWRpbmcgY3ljbGljIHJlZnMpCi0gKipUcmVlIFNoYWtpbmcqKiBvdXQgb2YgdGhlIGJveAotICoqUmVhY3QgUXVlcnkqKiBpbnRlZ3JhdGlvbgotIFN1cHBvcnQgZm9yIGBhbGxPZmAsIGBvbmVPZmAgYW5kIGBhbnlPZmAgc2NoZW1hcy4KLSBBdXRvbWF0aWNhbGx5IGNvbnZlcnQgYGZvcm1hdDogJ2RhdGUtdGltZSdgIHRvIEpTIGBEYXRlYAotIEhhbmRsZSAqKkFQSSBLZXkqKiwgKipIVFRQIENvbmZpZyoqLCAqKk9BdXRoMioqPHN1cD4xPC9zdXA+IGFuZCAqKk9JREMqKjxzdXA+MTwvc3VwPiBhdXRoIHNlY3VyaXR5IHNjaGVtZXMKLSBKU0RvYyBmb3Igc2NoZW1hcyBhbmQgb3BlcmF0aW9ucwotIE92ZXJyaWRlIHN5c3RlbSBmb3IgZ2VuZXJhdGVkIHR5cGVzCi0gVXNlcyBgZmV0Y2hgIGFwaSAoY2FuIGJlIGN1c3RvbWl6ZWQpCi0gTm9uIEpTT04gY29udGVudCB0eXBlIHN1cHBvcnQKLSBTbWFsbCBidW5kbGUgc2l6ZQotIEFuZCBtb3JlLi4uCgo+IDxzdXA+MTwvc3VwPjogT0F1dGgyIGFuZCBPcGVuSURDb25uZWN0IHNjaGVtZSBkbyBub3QgaGFuZGxlIGZsb3dzIHRvIHJldHJpZXZlIGFuIGBhY2Nlc3NUb2tlbmAuICAKPiBZb3UgbmVlZCB0byBwcm92aWRlIHlvdXIgb3duIGBhY2Nlc3NUb2tlbmAgdGhyb3VnaCB0aGUgYHByb3ZpZGVyLmdldENvbmZpZygpYCBmdW5jdGlvbi4KClRoZSBwcm9qZWN0IGlzIHNwbGl0IGludG8gNCBwYWNrYWdlczoKCi0gW2BAdHlwb2FzL2dlbmVyYXRvcmBdKC4vcGFja2FnZXMvdHlwb2FzLWdlbmVyYXRvcikgaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgQVBJIHNwZWNpZmljIGNvZGUuCi0gW2BAdHlwb2FzL2NsaWBdKC4vcGFja2FnZXMvdHlwb2FzLWNsaSkgaXMgYSBDTEkgZW50cnkgcG9pbnQgYnVpbHQgb24gdG9wIG9mIGBAdHlwb2FzL2dlbmVyYXRvcmAuCi0gW2BAdHlwb2FzL3J1bnRpbWVgXSguL3BhY2thZ2VzL3R5cG9hcy1ydW50aW1lKSBpcyB0aGUgcGFja2FnZSB0aGF0IHdpbGwgYmUgdXNlZCBieSB0aGUgZ2VuZXJhdGVkIGNvZGUuCi0gW2BAdHlwb2FzL3JlYWN0LXF1ZXJ5YF0oLi9wYWNrYWdlcy90eXBvYXMtcmVhY3QtcXVlcnkpIGludGVncmF0ZXMgX1R5cG9hc18gd2l0aCBbUmVhY3QgUXVlcnldKGh0dHBzOi8vdGFuc3RhY2suY29tL3F1ZXJ5L2xhdGVzdCkuCgotLS0KCi0gW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKLSBbVXNhZ2VdKCN1c2FnZSkKICAtIFtVc2UgdGhlIGdlbmVyYXRvciBmcm9tIHRoZSBDTEldKCN1c2UtdGhlLWdlbmVyYXRvci1mcm9tLXRoZS1jbGkpCiAgLSBbVXNlIHRoZSBnZW5lcmF0b3IgZnJvbSB0aGUgQVBJXSgjdXNlLXRoZS1nZW5lcmF0b3ItZnJvbS10aGUtYXBpKQogIC0gW1VzZSB0aGUgZ2VuZXJhdGVkIGNvZGVdKCN1c2UtdGhlLWdlbmVyYXRlZC1jb2RlKQogICAgLSBbQ3VzdG9taXplIHNlcnZlciBjb25maWd1cmF0aW9uXSgjY3VzdG9taXplLXNlcnZlci1jb25maWd1cmF0aW9uKQogICAgLSBbQ3VzdG9taXplIGZldGNoIGltcGxlbWVudGF0aW9uXSgjY3VzdG9taXplLWZldGNoLWltcGxlbWVudGF0aW9uKQogICAgLSBbSGFuZGxpbmcgYXV0aGVudGlmaWNhdGlvbl0oI2hhbmRsaW5nLWF1dGhlbnRpZmljYXRpb24pCiAgICAtIFtDdXN0b21pemluZyB0aGUgc2VyaWFsaXphdGlvbl0oI2N1c3RvbWl6aW5nLXRoZS1zZXJpYWxpemF0aW9uKQogIC0gW1VzaW5nIHdpdGggUmVhY3QgUXVlcnldKCN1c2luZy13aXRoLXJlYWN0LXF1ZXJ5KQotIFtFeGFtcGxlc10oI2V4YW1wbGVzKQotIFtOb3Rlc10oI25vdGVzKQogIC0gW092ZXJyaWRlc10oI292ZXJyaWRlcykKICAtIFtFeHRlcm5hbCByZWZlcmVuY2VzXSgjZXh0ZXJuYWwtcmVmZXJlbmNlcykKICAtIFtQYXJhbWV0ZXJzIHNlcmlhbGl6YXRpb25dKCNwYXJhbWV0ZXJzLXNlcmlhbGl6YXRpb24pCiAgLSBbTWlncmF0aW5nIGZyb20gdjEgdG8gdjJdKCNtaWdyYXRpbmctZnJvbS12MS10by12MikKLSBbQ29udHJpYnV0aW5nXSgjY29udHJpYnV0aW5nKQotIFtMaWNlbnNlXSgjbGljZW5zZSkKCiMjIEluc3RhbGxhdGlvbgoKSXQgd2lsbCBnZW5lcmF0ZSBhIHNpbmdsZSBUUyBmaWxlIGNvbnRhaW5pbmcgYWxsIHRoZSBjb2RlIHNwZWNpZmljIHRvIHRoZSB1bmRlcmx5aW5nIEFQSS4gIApUaGlzIGZpbGUgb25seSBoYXMgYSBzaW5nbGUgZGVwZW5kZW5jeSBvbiBgQHR5cG9hcy9ydW50aW1lYC4gIAoqKllvdSBuZWVkIHRvIG1hbnVhbGx5KiogYWRkIGBAdHlwb2FzL3J1bnRpbWVgIHRvIHlvdXIgYGRlcGVuZGVuY2llc2AuICAKSXQgaGFuZGxlcyBjb21tb24gdGhpbmdzIGxpa2Ugc2VyaWFsaXphdGlvbi9hdXRoZW50aWZpY2F0aW9uCgojIyBVc2FnZQoKIyMjIFVzZSB0aGUgZ2VuZXJhdG9yIGZyb20gdGhlIENMSQoKWW91IGNhbiBnZW5lcmF0ZSB0aGUgVFMgY2xpZW50IGZyb20gdGhlIHNwZWMgZnJvbSB0aGUgY29tbWFuZCBsaW5lOgoKYGBgYmFzaAp5YXJuIGRseCBAdHlwb2FzL2NsaSBnZW5lcmF0ZSAtaSBteS1zcGVjLmpzb24gLW8gc3JjL2NsaWVudC50cwpucHggQHR5cG9hcy9jbGkgZ2VuZXJhdGUgLWkgbXktc3BlYy5qc29uIC1vIHNyYy9jbGllbnQudHMKYGBgCgpIZXJlIGlzIGEgc2hvcnQgbGlzdCBvZiBzdXBwb3J0ZWQgY29tbWFuZCBsaW5lIG9wdGlvbnM6CgpgYGAKICAgIC1pLCAtLWlucHV0IFtwYXRoL3VybF0gICAgICAgICBQYXRoIG9yIFVSTCB0byB0aGUgT3BlbkFQSSBKU09OIHNwZWNpZmljYXRpb24gKHlhbWwvanNvbiBmb3JtYXQpCiAgICAtbywgLS1vdXRwdXQgW3BhdGhdICAgICAgICAgICAgUGF0aCB3aGVyZSB0byB3cml0ZSB0aGUgZ2VuZXJhdGVkIFRTIGZpbGUKICAgIC1lLC0tZ2VuZXJhdGUtZW51bXMgICAgICAgICAgICBHZW5lcmF0ZSBlbnVtcyBpbnN0ZWFkIG9mIGxpdGVyYWwgc3RyaW5nIHR5cGVzIHdoZXJlIHBvc3NpYmxlCiAgICAtcCwtLXByZXR0aWVyICAgICAgICAgICAgICAgICAgSWYgc2V0LCB0aGUgZ2VuZXJhdGVkIGZpbGUgd2lsbCBiZSBmb3JtYXR0ZWQgd2l0aCBQcmV0dGllcgogICAgLXIsLS1mdWxsLXJlc3BvbnNlLW1vZGUgICAgICAgIEVuYWJsZWQgYnkgZGVmYXVsdCwgZ2VuZXJhdGUgZnVuY3Rpb25zIHRoYXQgb25seSB0aHJvd3Mgb24gbmV0d29yayBlcnJvcnMsIGNhbiBiZSBkaXNhYmxlZCB1c2luZyAtLW5vLWZ1bGwtcmVzcG9uc2UtbW9kZQogICAgLS1qcy1kb2MsIC0tbm8tanMtZG9jICAgICAgICAgIFdoZXRoZXIgdG8gYWRkIEpTIERvYyB0byB0aGUgZ2VuZXJhdGVkIGNvZGUgKGRlZmF1bHQ6IHRydWUpCiAgICAtLXdyYXAtbGluZXMtYXQgICAgICAgICAgICAgICAgRGVmaW5lIGEgbWF4aW11bSB3aWR0aCBmb3IgSlMgRG9jIGNvbW1lbnRzLCAwIHRvIGRpc2FibGUgKGRlZmF1bHQ6IDEyMCkKICAgIC0tb25seS10eXBlcyAgICAgICAgICAgICAgICAgICBVc2UgaXQgdG8gb25seSBnZW5lcmF0ZSB0eXBlcyBpbiAjY29tcG9uZW50cy9zY2hlbWFzLwogICAgLS1uby1mZXRjaGVyLW9wdGlvbnMgICAgICAgICAgIFVzZSBpdCB0byBkaXNhYmxlIHRoZSBhZGRpdGlvbmFsIHBhcmFtIGFkZGVkIHRvIGV2ZXJ5IG9wZXJhdGlvbnMKICAgIC0tb3ZlcnJpZGUgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRlZmluZSBhIGxpc3Qgb2YgdHlwZXMgdGhhdCB3aWxsIGJlIGltcG9ydGVkIGZyb20gYSBjdXN0b20gZmlsZSBpbnN0ZWFkIG9mIGJlaW5nIGdlbmVyYXRlZC4gTXVzdCBiZSB1c2VkIHdpdGggLS1vdmVycmlkZS1pbXBvcnQKICAgIC0tb3ZlcnJpZGUtaW1wb3J0ICAgICAgICAgICAgICBQYXRoIHRvIHRoZSBmaWxlIHRoYXQgd2lsbCBiZSBpbXBvcnRlZCB0byByZXNvbHZlIG92ZXJyaWRlcwogICAgLS12ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgIE91dHB1dCB0aGUgdmVyc2lvbiBudW1iZXIKICAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5IGhlbHAgZm9yIGNvbW1hbmQKYGBgCgpvciB5b3UgY2FuIHVzZSBpdCBpbiBjb2RlOgoKYGBgdHMKaW1wb3J0IGNsaSBmcm9tICdAdHlwb2FzL2NsaSc7Cgphd2FpdCBjbGkucnVuKAogIFsKICAgICdnZW5lcmF0ZScsCiAgICAnLWknLAogICAgJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9naXRodWIvcmVzdC1hcGktZGVzY3JpcHRpb24vbWFpbi9kZXNjcmlwdGlvbnMvYXBpLmdpdGh1Yi5jb20vYXBpLmdpdGh1Yi5jb20ueWFtbCcsCiAgICAnLW8nLAogICAgYC4vc3JjL2dpdGh1Yi50c2AsCiAgXSwKICB7CiAgICBzdGRpbjogcHJvY2Vzcy5zdGRpbiwKICAgIHN0ZG91dDogcHJvY2Vzcy5zdGRvdXQsCiAgICBzdGRlcnI6IHByb2Nlc3Muc3RkZXJyLAogIH0sCik7CmBgYAoKIyMjIFVzZSB0aGUgZ2VuZXJhdG9yIGZyb20gdGhlIEFQSQoKPiBUaGUgQVBJIGlzIHN0aWxsIGF0IGFuICoqYWxwaGEqKiBzdGFnZSwgc28gaXQgbWF5IGJyZWFrIGJldHdlZW4gbWlub3JzLgoKSXQgdXNlcyBgdHlwZXNjcmlwdGAgQVBJIHRvIGdlbmVyYXRlIHVzYWJsZSBjb2RlOgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgeyByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tICdmcyc7CmltcG9ydCB7IGNyZWF0ZVByaW50ZXIsIE5ld0xpbmVLaW5kLCBTb3VyY2VGaWxlIH0gZnJvbSAndHlwZXNjcmlwdCc7CmltcG9ydCB7IGdlbmVyYXRlQ2xpZW50LCBnZXRTdHJpbmdGcm9tU291cmNlRmlsZSB9IGZyb20gJ0B0eXBvYXMvZ2VuZXJhdG9yJzsKCmNvbnN0IHNwZWNzID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMoJ3BhdGgvdG8vZ2l0aHViLW9wZW5hcGkuanNvbicsICd1dGY4JykpOwpjb25zdCBzcmMgPSBnZW5lcmF0ZUNsaWVudChzcGVjcywgewogIC8qIG9wdGlvbnMgKi8KfSk7CmNvbnN0IGRhdGEgPSBnZXRTdHJpbmdGcm9tU291cmNlRmlsZShzcmMpOwoKd3JpdGVGaWxlU3luYygnLi9zcmMvY2xpZW50LnRzJywgZGF0YSwgJ3V0ZjgnKTsKYGBgCgojIyMgVXNlIHRoZSBnZW5lcmF0ZWQgY29kZQoKT25jZSB0aGUgZmlsZSBpcyBnZW5lcmF0ZWQgeW91J2xsIGJlIGFibGUgdG8gdXNlIGl0IGxpa2UgdGhpczoKCmBgYHR5cGVzY3JpcHQKaW1wb3J0IHsgU2VydmVyQ29uZmlndXJhdGlvbiwgb2sgfSBmcm9tICdAdHlwb2FzL3J1bnRpbWUnOwovLyBDbGllbnQgZ2VuZXJhdGVkIGZyb206Ci8vIHlhcm4gZGx4IEB0eXBvYXMvY2xpIGdlbmVyYXRlIC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9naXRodWIvcmVzdC1hcGktZGVzY3JpcHRpb24vbWFpbi9kZXNjcmlwdGlvbnMvYXBpLmdpdGh1Yi5jb20vYXBpLmdpdGh1Yi5jb20ueWFtbCAtbyBjbGllbnQudHMKaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgcHVsbHNMaXN0IH0gZnJvbSAnLi9jbGllbnQnOwoKY29uc3QgY3R4ID0gY3JlYXRlQ29udGV4dCgpOwoKLy8gQnkgZGVmYXVsdCwgcmV0dXJucyBhIFN0YXR1c1Jlc3BvbnNlIHRoYXQgY29udGFpbnMgc3RhdHVzQ29kZSwgZGF0YSBhbmQgaGVhZGVycy4KY29uc3QgcmVzID0gYXdhaXQgcHVsbHNMaXN0KGN0eCwgeyByZXBvOiAndHlwb2FzJywgb3duZXI6ICdlbWJyYXNlcjAxJyB9KTsKaWYgKHJlcy5vaykgewogIHJlcy5kYXRhLmZvckVhY2goKHByKSA9PiBjb25zb2xlLmxvZyhwci50aXRsZSkpOwp9CgovLyBBbiBoZWxwZXIgYG9rYCBmdW5jdGlvbiBjYW4gaGVscCB0aHJvdyBvbiBub24gMnh4IHN0YXR1cyBjb2RlIGFuZCByZXR1cm4gdGhlIGRhdGEKLy8gVGhlIHNlY29uZCBhcmd1bWVudCBpcyBhbiBvcHRpb25hbCBleHBlY3RlZCBzdGF0dXMgY29kZSAodXNlZnVsIHdoZW4gbXVsdGlwbGUgc3VjY2VzcyBzdGF0dXMgY29kZSBhcmUgcG9zc2libGUpCmNvbnN0IHBycyA9IGF3YWl0IG9rKAogIHB1bGxzTGlzdChjdHgsIHsgcmVwbzogJ3R5cG9hcycsIG93bmVyOiAnZW1icmFzZXIwMScgfSksCiAgMjAwLAopOwpgYGAKCj4gWW91IGNhbiBkaXJlY3RseSBnZW5lcmF0ZSBmdW5jdGlvbnMgdGhhdCB0aHJvdyBvbiBub24gMnh4IHN0YXR1cyBjb2RlIGJ5IHVzaW5nIHRoZSBgLS1uby1mdWxsLXJlc3BvbnNlLW1vZGVgIG9wdGlvbi4KPiBUaGlzIGZlYXR1cmUgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZSBhbmQgaXNuJ3QgdGhlIHJlY29tbWVuZGVkIHdheS4KCllvdSBjYW4gY3VzdG9taXplIG11bHRpcGxlIHRoaW5ncyBpbiB0aGUgYGNyZWF0ZUNvbnRleHRgIGZ1bmN0aW9uLgoKIyMjIyBDdXN0b21pemUgc2VydmVyIGNvbmZpZ3VyYXRpb24KCkJ5IGRlZmF1bHQsIHRoZSBgY3JlYXRlQ29udGV4dGAgZnVuY3Rpb24gd2lsbCB1c2UgdGhlIGZpcnN0IGBzZXJ2ZXJzYCBlbnRyeSBpbiB0aGUgc3BlYy4KWW91IGNhbiBvdmVycmlkZSB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24gYnkgcGFzc2luZyBhIGBTZXJ2ZXJDb25maWd1cmF0aW9uYCBvYmplY3Q6CgpgYGB0eXBlc2NyaXB0CmltcG9ydCB7IFNlcnZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICdAdHlwb2FzL3J1bnRpbWUnOwppbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSAnLi9jbGllbnQnOwoKY29uc3QgY3R4ID0gY3JlYXRlQ29udGV4dCh7CiAgc2VydmVyQ29uZmlndXJhdGlvbjogbmV3IFNlcnZlckNvbmZpZ3VyYXRpb24oCiAgICAnaHR0cHM6Ly97ZW52fS5hcGkuZXhhbXBsZS5jb20nLAogICAgewogICAgICBlbnY6ICdzdGFnaW5nJywKICAgIH0sCiAgKSwKfSk7CmBgYAoKPiBUaGUgd2F5IGl0J3MgZG9uZSBjdXJyZW50bHkgaXMgbm90IHRoZSBiZXN0LiBJdCB3aWxsIGJlIGltcHJvdmVkIGluIHRoZSBmdXR1cmUuCgojIyMjIEN1c3RvbWl6ZSBmZXRjaCBpbXBsZW1lbnRhdGlvbgoKVGhlIGRlZmF1bHQgZmV0Y2hlciBpbXBsZW1lbnRhdGlvbiBbdXNlc10oLi9wYWNrYWdlcy90eXBvYXMtcnVudGltZS9zcmMvZmV0Y2hlci9pbmRleC50cykgdGhlIGBmZXRjaGAgQVBJLgpZb3UgY2FuIG92ZXJyaWRlIHRoZSBmZXRjaGVyIGltcGxlbWVudGF0aW9uIGlmIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSB0aGluZ3MgKGxpa2UgYWRkaW5nIGEgcmV0cnkgcG9saWN5LCBoZWFkZXJzLCBldGMuKS4KCkZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSBgYXhpb3NgIGluc3RlYWQgb2YgdGhlIGBmZXRjaGAgQVBJOgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgYXhpb3MsIHsgQXhpb3NFcnJvciwgQXhpb3NSZXNwb25zZSwgTWV0aG9kIH0gZnJvbSAnYXhpb3MnOwppbXBvcnQgewogIEZldGNoZXIsCiAgUmVxdWVzdENvbnRleHQsCiAgUmVzcG9uc2VDb250ZXh0LAogIEJhc2VGZXRjaGVyRGF0YSwKfSBmcm9tICdAdHlwb2FzL3J1bnRpbWUnOwppbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSAnLi9jbGllbnQnOwoKY2xhc3MgQXhpb3NIdHRwTGlicmFyeSBpbXBsZW1lbnRzIEZldGNoZXI8QmFzZUZldGNoZXJEYXRhPiB7CiAgYXN5bmMgc2VuZChyZXF1ZXN0OiBSZXF1ZXN0Q29udGV4dCk6IFByb21pc2U8UmVzcG9uc2VDb250ZXh0PiB7CiAgICBsZXQgcmVzcDogQXhpb3NSZXNwb25zZTsKICAgIHRyeSB7CiAgICAgIHJlc3AgPSBhd2FpdCBheGlvcy5yZXF1ZXN0KHsKICAgICAgICB1cmw6IHJlcXVlc3QuZ2V0VXJsKCksCiAgICAgICAgbWV0aG9kOiByZXF1ZXN0LmdldEh0dHBNZXRob2QoKSBhcyBNZXRob2QsCiAgICAgICAgaGVhZGVyczogcmVxdWVzdC5nZXRIZWFkZXJzKCksCiAgICAgICAgZGF0YTogcmVxdWVzdC5nZXRCb2R5KCksCiAgICAgIH0pOwogICAgfSBjYXRjaCAoZSkgewogICAgICBjb25zdCBlcnIgPSBlIGFzIEF4aW9zRXJyb3I7CiAgICAgIGlmICghZXJyLnJlc3BvbnNlKSB7CiAgICAgICAgdGhyb3cgZTsKICAgICAgfQogICAgICAvLyBUeXBvYXMgaGFuZGxlcyBlcnJvcnMgaXRzZWxmCiAgICAgIHJlc3AgPSBlcnIucmVzcG9uc2U7CiAgICB9CgogICAgcmV0dXJuIG5ldyBSZXNwb25zZUNvbnRleHQocmVzcC5zdGF0dXMsIHJlc3AuaGVhZGVycywgewogICAgICB0ZXh0OiBhc3luYyAoKSA9PiByZXNwLmRhdGEgYXMgc3RyaW5nLAogICAgICBiaW5hcnk6IGFzeW5jICgpID0+IHJlc3AuZGF0YSBhcyBCbG9iLAogICAgICBqc29uOiBhc3luYyAoKSA9PiByZXNwLmRhdGEsCiAgICB9KTsKICB9Cn0KCmNvbnN0IGN0eCA9IGNyZWF0ZUNvbnRleHQoeyBmZXRjaGVyOiBuZXcgQXhpb3NIdHRwTGlicmFyeSgpIH0pOwpgYGAKCj4gTm9kZS5qcyA+PSAxOC4wLjAgaW5jbHVkZXMgdGhlIGBmZXRjaGAgaW1wbGVtZW50YXRpb24sIHNvIFR5cG9hcyBzaG91bGQgd29yayBvdXQgb2YgdGhlIGJveC4KCiMjIyMgSGFuZGxpbmcgYXV0aGVudGlmaWNhdGlvbgoKVGhlIGBjcmVhdGVDb250ZXh0YCBmdW5jdGlvbiBjYW4gdGFrZSBhbiBgYXV0aFByb3ZpZGVyc2Agb2JqZWN0IHRvIGhhbmRsZSBhdXRoZW50aWZpY2F0aW9uLgoKRm9yIGV4YW1wbGUsIGZvciB0aGUgcGV0c3RvcmUgc2FtcGxlOgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSAnLi9wZXRzdG9yZSc7Cgpjb25zdCBjdHggPSBjcmVhdGVDb250ZXh0KHsKICBhdXRoUHJvdmlkZXJzOiB7CiAgICBhcGlfa2V5OiB7CiAgICAgIGFzeW5jIGdldENvbmZpZygpIHsKICAgICAgICByZXR1cm4gJ015QVBJS2V5JzsKICAgICAgfSwKICAgIH0sCiAgICBwZXRzdG9yZV9hdXRoOiB7CiAgICAgIGdldENvbmZpZygpIHsKICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGdsb2JhbFN0b3JlLmdldEFjY2Vzc1Rva2VuKCk7CgogICAgICAgIGlmIChhY2Nlc3NUb2tlbikgewogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIHJldHVybiB7IGFjY2Vzc1Rva2VuIH07CiAgICAgIH0sCiAgICB9LAogIH0sCn0pOwpgYGAKCkl0IHN1cHBvcnRzIDUgdHlwZXMgb2Ygc2VjdXJpdHkgc2NoZW1lczoKCi0gYGFwaUtleWAgbW9kZQotIGBodHRwYCBiZWFyZXIgYW5kIGJhc2ljIG1vZGUKLSBgb2F1dGgyYCBtb2RlCi0gYG9wZW5JZENvbm5lY3RgIG1vZGUKClRoZSBgZ2V0Q29uZmlnYCBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIG5lZWRlZCB0byBhdXRoZW50aWNhdGUgdGhlIHJlcXVlc3QuIFJldHVybmluZyBgbnVsbGAgd2lsbCBza2lwIHRoZSBhdXRoZW50aWZpY2F0aW9uLgoKIyMjIyBDdXN0b21pemluZyB0aGUgc2VyaWFsaXphdGlvbgoKWW91IGNhbiBzd2l0Y2ggc29tZSBzZXJpYWxpemF0aW9uIG9wdGlvbnMgYnkgcGFzc2luZyBhIGBzZXJpYWxpemVyT3B0aW9uc2Agb2JqZWN0IHRvIHRoZSBgY3JlYXRlQ29udGV4dGAgZnVuY3Rpb24uCgo+IE5vdCBldmVyeSBzZXJpYWxpemF0aW9uIG9wdGlvbiBpcyBzdXBwb3J0ZWQuIFNlZSBbIzExXShodHRwczovL2dpdGh1Yi5jb20vRW1icmFzZXIwMS90eXBvYXMvaXNzdWVzLzExKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiMjIyBVc2luZyB3aXRoIFJlYWN0IFF1ZXJ5CgpEb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgW2BAdHlwb2FzL3JlYWN0LXF1ZXJ5YF0oLi9wYWNrYWdlcy90eXBvYXMtcmVhY3QtcXVlcnkpIHBhY2thZ2UuCgojIyBFeGFtcGxlcwoKWW91IGNhbiBmaW5kIGV4YW1wbGVzIGluIHRoZSBbYGV4YW1wbGVzYF0oLi9leGFtcGxlcykgZm9sZGVyLgoKIyMgTm90ZXMKCkhlcmUgaXMgc29tZSBub3RlcyBvbiBzb21lIGtub3duIGlzc3Vlcy4KCiMjIyBPdmVycmlkZXMKClNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gb3ZlcnJpZGUgc29tZSBvZiB0aGUgZ2VuZXJhdGVkIHR5cGVzLgpGb3IgZXhhbXBsZSwgVHlwb2FzIHdpbGwgbm90IGdlbmVyYXRlIFRlbXBsYXRlIExpdGVyYWwgVHlwZXMgb3IgR2VuZXJpY3MgYXMgaXQncyBoYXJkIHRvIGJlIGRlZmluZWQgaW4gYW4gT3BlbkFQSSBzcGVjLgoKVGhpcyB3b3JrcyBieSBsaXN0aW5nIHRoZSB0eXBlcyB5b3Ugd2FudCB0byBvdmVycmlkZSBhbmQgZ2l2aW5nIHRoZSBpbXBvcnQgcGF0aCB5b3Ugd2FudCB0byB1c2UuCgpGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gb3ZlcnJpZGUgdGhlIFBldFN0b3JlIGBDYXRlZ29yeWAgdHlwZSBvZiB5b3VyIHNwZWM6CgpgYGB0eXBlc2NyaXB0Ci8vIG15LW92ZXJyaWRlcy50cwpleHBvcnQgdHlwZSBDYXRlZ29yeSA9IHsKICBpZD86IG51bWJlcjsKICBuYW1lPzogc3RyaW5nOwogIGRlc2NyaXB0aW9uPzogc3RyaW5nOwp9OwpgYGAKCldoZW4geW91IGdlbmVyYXRlIHRoZSBjbGllbnQsIHlvdSBjYW4gcGFzcyB0aGUgYC0tb3ZlcnJpZGVzYCBvcHRpb246CgpgYGBiYXNoCnlhcm4gZGx4IEB0eXBvYXMvY2xpIGdlbmVyYXRlIC1pIG15LXNwZWMuanNvbiAtbyBzcmMvY2xpZW50LnRzIC0tb3ZlcnJpZGUtaW1wb3J0IG15LW92ZXJyaWRlcy50cyAtLW92ZXJyaWRlIENhdGVnb3J5CmBgYAoKVGhpcyB3aWxsIG5vdCBnZW5lcmF0ZSB0aGUgYENhdGVnb3J5YCB0eXBlIGJ1dCBpbXBvcnQgaXQgZnJvbSB0aGUgYG15LW92ZXJyaWRlcy50c2AgZmlsZS4gVGhpcyBhbGxvd3MgZWFzeSBjdXN0b21pemF0aW9uIG9mIGdlbmVyYXRlZCB0eXBlcy4KClRoZXJlIGFyZSBhIGNvdXBsZSBvZiB0aGluZ3MgdG8gbm90ZToKCi0gVGhlIG92ZXJyaWRlIG5hbWUgaXMgdGhlICoqc2FuaXRpemVkKiogbmFtZSBvZiB0aGUgdHlwZS4gWW91IGNhbiBmaXJzdCBnZW5lcmF0ZSB0aGUgY2xpZW50IGFuZCBzZWUgdGhlIGdlbmVyYXRlZCB0eXBlcyB0byBrbm93IHRoZSBuYW1lLgotIF9UeXBvYXNfIHdpbGwgbm90IGNoZWNrIHRoZSBvdmVycmlkZSBmaWxlLiBJZiB0aGUgZmlsZSBpc24ndCB0aGVyZSBvciB0aGUgdHlwZSBpc24ndCBleHBvcnRlZCwgaXQgd2lsbCB0aHJvdyBhIFR5cGVTY3JpcHQgZXJyb3IuCi0gWW91IHdpbGwgaGF2ZSB0byBleHBvcnQgdGhlIHR5cGUgeW91cnNlbGYsIF9UeXBvYXNfIHdpbGwgbm90IGRvIGl0IGZvciB5b3UgKGNvbnRyYXJ5IHRvIHRoZSBnZW5lcmF0ZWQgdHlwZXMpLgoKIyMjIEV4dGVybmFsIHJlZmVyZW5jZXMKCkV4dGVybmFsIHJlZmVyZW5jZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIEV2ZXJ5IGAkcmVmYCBtdXN0IGJlIGluIHRoZSBzcGVjLiAgCkFuIGlzc3VlIGlzIG9wZW4gW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9FbWJyYXNlcjAxL3R5cG9hcy9pc3N1ZXMvMzcpLgoKIyMjIFBhcmFtZXRlcnMgc2VyaWFsaXphdGlvbgoKX1R5cG9hc18gaGFzIHBhcnRpYWwgc3VwcG9ydCBmb3Igc2VyaWFsaXphdGlvbiBzcGVjaWZpZWQgaGVyZTogaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9zZXJpYWxpemF0aW9uLwoKLSBJdCAqKmRvZXMqKiBzdXBwb3J0IGFycmF5IHNlcmlhbGl6YXRpb24gZm9yICoqcXVlcnkqKi4KLSBJdCAqKmRvZXMgTk9UKiogc3VwcG9ydCBzZXJpYWxpemF0aW9uIGZvciAqKnBhdGgqKiBwYXJhbWV0ZXJzIHdpdGggYHN0eWxlYCBgbGFiZWxgIG9yIGBtYXRyaXhgLgotIEl0ICoqZG9lcyBOT1QqKiBzdXBwb3J0IHNlcmlhbGl6YXRpb24gZm9yICoqcXVlcnkqKiBwYXJhbWV0ZXJzIHdpdGggbmVzdGVkIG9iamVjdHMuIEl0IHdpbGwgYmUgSlNPTi5zdHJpbmdpZnkKLSBJdCAqKmRvZXMgTk9UKiogc3VwcG9ydCBzZXJpYWxpemF0aW9uIGZvciAqKmhlYWRlcnMqKiBvciAqKmNvb2tpZSoqIHBhcmFtZXRlcnMuCgpPbiBxdWVyeSBzZXJpYWxpemF0aW9uLCB0aGVyZSBjYW4gb25seSBiZSBvbmUgc3R5bGUgZm9yIGEgZnVsbCBvcGVyYXRpb24uIFRoZSBmaXJzdCBxdWVyeSBwYXJhbSB3aWxsIHNldCB0aGUgc3R5bGUgZm9yICAKdGhlIHdob2xlIG9wZXJhdGlvbi4KCiMjIyBNaWdyYXRpbmcgZnJvbSB2MSB0byB2MgoKSW4gdjEsIHRoZSB3aG9sZSBBUEkgd2FzIGdlbmVyYXRlZCBpbiBhIHNpbmdsZSBjbGFzcy4gSW4gVjIgdGhpcyB3YXMgcmVwbGFjZWQgYnkgaW5kaXZpZHVhbCBmdW5jdGlvbiAgCndoaWNoIGFsbG93IFtUcmVlIFNoYWtpbmddKGh0dHBzOi8vd2VicGFjay5qcy5vcmcvZ3VpZGVzL3RyZWUtc2hha2luZy8pLiBUbyBnZXQgYSBzaW1pbGFyIHJlc3VsdCwgIAp5b3UgY2FuIHVzZSBgd3JhcEFwaWAgaGVscGVyOgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgeyBTZXJ2ZXJDb25maWd1cmF0aW9uLCB3cmFwQXBpIH0gZnJvbSAnQHR5cG9hcy9ydW50aW1lJzsKaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgcHVsbHNMaXN0LCBpc3N1ZXNMaXN0IH0gZnJvbSAnLi9jbGllbnQnOwoKY29uc3QgY3R4ID0gY3JlYXRlQ29udGV4dCgpOwpjb25zdCBnaENsaWVudCA9IHdyYXBBcGkoY3R4LCB7CiAgcHVsbHNMaXN0LAogIGlzc3Vlc0xpc3QsCiAgLy8gLi4uCn0pOwoKZ2hDbGllbnQKICAucHVsbHNMaXN0KGN0eCwgewogICAgcmVwbzogJ3R5cG9hcycsCiAgICBvd25lcjogJ2VtYnJhc2VyMDEnLAogIH0pCiAgLnRoZW4oKGxpc3QpID0+IGNvbnNvbGUubG9nKCdMaXN0IG9mIFBScycsIGxpc3QpKQogIC5jYXRjaCgoZXJyKSA9PiBjb25zb2xlLmVycm9yKCdFcnJvciB3aGlsZSBnZXR0aW5nIFBScycsIGVycikpOwpgYGAKCiMjIENvbnRyaWJ1dGluZwoKUHVsbCByZXF1ZXN0cyBhcmUgd2VsY29tZS4gRm9yIG1ham9yIGNoYW5nZXMsIHBsZWFzZSBvcGVuIGFuIGlzc3VlIGZpcnN0IHRvIGRpc2N1c3Mgd2hhdCB5b3Ugd291bGQgbGlrZSB0byBjaGFuZ2UuCgojIyBMaWNlbnNlCgpbTUlUXShodHRwczovL2Nob29zZWFsaWNlbnNlLmNvbS9saWNlbnNlcy9taXQvKQo= readmeEtag: '"3730b83a6017f2e5a05be738dfc73fa5ee07a56a"' readmeLastModified: Mon, 10 Feb 2025 11:03:02 GMT repositoryId: 350501832 description: Open API (OAS 3.0) Typescript generator created: '2021-03-22T22:01:11Z' updated: '2025-08-11T20:51:42Z' language: TypeScript archived: false stars: 43 watchers: 2 forks: 6 owner: Embraser01 logo: https://avatars.githubusercontent.com/u/8802277?v=4 license: MIT repoEtag: '"f81f97d79406aca7cc292a310d6311b9e84fed87a27b9d508a6105775e9495d5"' repoLastModified: Mon, 11 Aug 2025 20:51:42 GMT foundInMaster: true category: - SDK - Parsers id: daab13b9706c2ce0fb810cc426f403b1 name: Typoas link: https://github.com/Embraser01/typoas language: Typescript source_description: Fully typed OpenAPI Typescript generator v2: false v3_1: true - source: https://openapi.tools/ name: Zuplo (OpenAPI-based gateway and documentation) category: - GUI Editors - Gateway - Documentation language: - Web - SaaS link: https://www.zuplo.com source_description: >- Zuplo is an API gateway designed for developers. Natively powered by OpenAPI (3.1 or 3.0), zuplo offers an OpenAPI design surface, API documentation and a serverless, programmable edge gateway that includes request validation, auth, rate-limiting and more. v2: false v3: true v3_1: true id: 94f410082dd5e91b5d75df09846e8687 foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags name: kotlin-openapi3-dsl category: - DSL - Parsers language: Kotlin source_description: >- kotlin-openapi3-dsl is a DSL written in Kotlin to write OpenAPI descriptions in plain Kotlin. link: https://github.com/derveloper/kotlin-openapi3-dsl v2: false v3: true repository: https://github.com/derveloper/kotlin-openapi3-dsl id: f4ab0e00ab487873f90c7f20db81bf8b repositoryMetadata: base64Readme: >- IyBrb3RsaW4tb3BlbmFwaTMtZHNsCgohW0phdmEgQ0kgd2l0aCBHcmFkbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9kZXJ2ZWxvcGVyL2tvdGxpbi1vcGVuYXBpMy1kc2wvd29ya2Zsb3dzL0phdmElMjBDSSUyMHdpdGglMjBHcmFkbGUvYmFkZ2Uuc3ZnKQpbIVtNYXZlbiBDZW50cmFsXShodHRwczovL21hdmVuLWJhZGdlcy5oZXJva3VhcHAuY29tL21hdmVuLWNlbnRyYWwvY2MudmlsZWRhL2tvdGxpbi1vcGVuYXBpMy1kc2wvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9tYXZlbi1iYWRnZXMuaGVyb2t1YXBwLmNvbS9tYXZlbi1jZW50cmFsL2NjLnZpbGVkYS9rb3RsaW4tb3BlbmFwaTMtZHNsKQoKQnVpbGQgeW91ciBPcGVuQXBpMyBzcGVjIGluIGtvdGxpbiEKCiMjIGltcG9ydAoKa290bGluLW9wZW5hcGkzLWRzbCBpcyBhdmFpbGFibGUgb24gbWF2ZW4gY2VudHJhbAoKIyMjIGdyYWRsZQoKYGBgZ3Jvb3Z5CmNvbXBpbGUgImNjLnZpbGVkYTprb3RsaW4tb3BlbmFwaTMtZHNsOjEuNS4wIgpgYGAKCiMjIyBtYXZlbgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgICA8Z3JvdXBJZD5jYy52aWxlZGE8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5rb3RsaW4tb3BlbmFwaTMtZHNsPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+MS41LjA8L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgCgojIyBleGFtcGxlCgpmb3IgYSBjb21wbGV0ZSBleGFtcGxlIFtsb29rIGF0IHRoZSB0ZXN0XShzcmMvdGVzdC9rb3RsaW4vY2MvdmlsZWRhL29wZW5hcGkvZHNsL09wZW5BcGlEc2xUZXN0Lmt0KQoKIyMgbGljZW5zZQpgYGAKQ29weXJpZ2h0IDIwMTcgVHJpc3RhbiBMZW8KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgpgYGAK readmeEtag: '"65dd1080cc18c6cc7b4e4129e2bccf8d1d3456ad"' readmeLastModified: Wed, 14 Aug 2024 18:07:02 GMT repositoryId: 108694147 description: Build your OpenApi3 spec in kotlin! created: '2017-10-29T00:33:35Z' updated: '2026-02-05T13:40:14Z' language: Kotlin archived: false stars: 68 watchers: 4 forks: 6 owner: derveloper logo: https://avatars.githubusercontent.com/u/18556?v=4 license: Apache-2.0 repoEtag: '"eb078af0dc6fb3ed1aa7df04352e445e05254f8b28d1ae8483a662b0767491dd"' repoLastModified: Thu, 05 Feb 2026 13:40:14 GMT foundInMaster: true - source: https://openapi.tools/ name: Mintlify category: - Documentation - Server Implementations language: - Web - SaaS link: https://mintlify.com repository: https://github.com/mintlify/starter source_description: >- Modern standard for API documentation. Beautiful and easy-to-maintain UI components and interactive playground. v2: false v3: true v3_1: true id: eadde2613f7d452d5370b68ef15882bc repositoryMetadata: base64Readme: >- IyBNaW50bGlmeSBTdGFydGVyIEtpdAoKVXNlIHRoZSBzdGFydGVyIGtpdCB0byBnZXQgeW91ciBkb2NzIGRlcGxveWVkIGFuZCByZWFkeSB0byBjdXN0b21pemUuCgpDbGljayB0aGUgZ3JlZW4gKipVc2UgdGhpcyB0ZW1wbGF0ZSoqIGJ1dHRvbiBhdCB0aGUgdG9wIG9mIHRoaXMgcmVwbyB0byBjb3B5IHRoZSBNaW50bGlmeSBzdGFydGVyIGtpdC4gVGhlIHN0YXJ0ZXIga2l0IGNvbnRhaW5zIGV4YW1wbGVzIHdpdGgKCi0gR3VpZGUgcGFnZXMKLSBOYXZpZ2F0aW9uCi0gQ3VzdG9taXphdGlvbnMKLSBBUEkgcmVmZXJlbmNlIHBhZ2VzCi0gVXNlIG9mIHBvcHVsYXIgY29tcG9uZW50cwoKKipbRm9sbG93IHRoZSBmdWxsIHF1aWNrc3RhcnQgZ3VpZGVdKGh0dHBzOi8vc3RhcnRlci5taW50bGlmeS5jb20vcXVpY2tzdGFydCkqKgoKIyMgRGV2ZWxvcG1lbnQKCkluc3RhbGwgdGhlIFtNaW50bGlmeSBDTEldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21pbnQpIHRvIHByZXZpZXcgeW91ciBkb2N1bWVudGF0aW9uIGNoYW5nZXMgbG9jYWxseS4gVG8gaW5zdGFsbCwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYApucG0gaSAtZyBtaW50CmBgYAoKUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBhdCB0aGUgcm9vdCBvZiB5b3VyIGRvY3VtZW50YXRpb24sIHdoZXJlIHlvdXIgYGRvY3MuanNvbmAgaXMgbG9jYXRlZDoKCmBgYAptaW50IGRldgpgYGAKClZpZXcgeW91ciBsb2NhbCBwcmV2aWV3IGF0IGBodHRwOi8vbG9jYWxob3N0OjMwMDBgLgoKIyMgUHVibGlzaGluZyBjaGFuZ2VzCgpJbnN0YWxsIG91ciBHaXRIdWIgYXBwIGZyb20geW91ciBbZGFzaGJvYXJkXShodHRwczovL2Rhc2hib2FyZC5taW50bGlmeS5jb20vc2V0dGluZ3Mvb3JnYW5pemF0aW9uL2dpdGh1Yi1hcHApIHRvIHByb3BhZ2F0ZSBjaGFuZ2VzIGZyb20geW91ciByZXBvIHRvIHlvdXIgZGVwbG95bWVudC4gQ2hhbmdlcyBhcmUgZGVwbG95ZWQgdG8gcHJvZHVjdGlvbiBhdXRvbWF0aWNhbGx5IGFmdGVyIHB1c2hpbmcgdG8gdGhlIGRlZmF1bHQgYnJhbmNoLgoKIyMgTmVlZCBoZWxwPwoKIyMjIFRyb3VibGVzaG9vdGluZwoKLSBJZiB5b3VyIGRldiBlbnZpcm9ubWVudCBpc24ndCBydW5uaW5nOiBSdW4gYG1pbnQgdXBkYXRlYCB0byBlbnN1cmUgeW91IGhhdmUgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24gb2YgdGhlIENMSS4KLSBJZiBhIHBhZ2UgbG9hZHMgYXMgYSA0MDQ6IE1ha2Ugc3VyZSB5b3UgYXJlIHJ1bm5pbmcgaW4gYSBmb2xkZXIgd2l0aCBhIHZhbGlkIGBkb2NzLmpzb25gLgoKIyMjIFJlc291cmNlcwotIFtNaW50bGlmeSBkb2N1bWVudGF0aW9uXShodHRwczovL21pbnRsaWZ5LmNvbS9kb2NzKQo= readmeEtag: '"055c983adbe012e7990378a0d2f784a6379aa0d6"' readmeLastModified: Wed, 17 Sep 2025 18:19:57 GMT repositoryId: 581018208 description: 📖 The starter kit for your Mintlify docs created: '2022-12-22T03:50:30Z' updated: '2026-02-05T04:44:47Z' language: MDX archived: false stars: 1617 watchers: 10 forks: 509 owner: mintlify logo: https://avatars.githubusercontent.com/u/93011474?v=4 license: MIT repoEtag: '"f896e004e3d91a3d307ec38927213db0f05894258f4b05830e51d7283c04b8d4"' repoLastModified: Thu, 05 Feb 2026 04:44:47 GMT foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/blueswen/mkdocs-redoc-tag v3: true id: 04369ce76dd1df0b16316691678f55bd repositoryMetadata: base64Readme: >- IyBNa0RvY3MgUmVkb2MgVGFnIAoKPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9ta2RvY3MtcmVkb2MtdGFnIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvbWtkb2NzLXJlZG9jLXRhZy5zdmciIGFsdD0iUHlQSSB2ZXJzaW9uIi8+PC9hPgo8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L21rZG9jcy1yZWRvYy10YWciPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvZG0vbWtkb2NzLXJlZG9jLXRhZy5zdmciIGFsdD0iUHlQSSBkb3dubG9hZHMiLz48L2E+CjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL2NvZGVjb3YuaW8vZ2gvYmx1ZXN3ZW4vbWtkb2NzLXJlZG9jLXRhZyI+PGltZyBzcmM9Imh0dHBzOi8vY29kZWNvdi5pby9naC9ibHVlc3dlbi9ta2RvY3MtcmVkb2MtdGFnL2JyYW5jaC9tYWluL2dyYXBoL2JhZGdlLnN2ZyIgYWx0PSJDb2RlY292Ii8+PC9hPgoKQSBNa0RvY3MgcGx1Z2luIHN1cHBvcnRzIGFkZGluZyBbUmVkb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jKSB0byB0aGUgcGFnZS4KCiMjIEZlYXR1cmVzCgoxLiBPcGVuQVBJIFNwZWNpZmljYXRpb24gZmlsZSBmcm9tIG9ubGluZSBvdmVyIFVSTCBvciBzdGF0aWMgZmlsZSBpbiBkb2NzCjIuIEFsbCBkZXBlbmRlbmNpZXMgYXJlIHVzaW5nIHN0YXRpYyBmaWxlcyBoYW5kbGVkIGJ5IHRoZSBwbHVnaW4gbm90IGZyb20gQ0ROLCBlc3BlY2lhbGx5IHN1aXRhYmxlIGZvciB0aG9zZSBkb2N1bWVudHMgYmVlbiBkZXBsb3llZCBpbiB0aGUgaW50cmFuZXQKMy4gU3luY2hyb25pemVkIGRhcmsgbW9kZSB3aXRoIFtNYXRlcmlhbCBmb3IgTWtEb2NzXShodHRwczovL3NxdWlkZnVuay5naXRodWIuaW8vbWtkb2NzLW1hdGVyaWFsLykKCiMjIERlcGVuZGVuY3kKCjEuIFB5dGhvbiBQYWNrYWdlCiAgICAxLiBiZWF1dGlmdWxzb3VwND49NC4xMS4xCjIuIFJlZG9jIHN0YW5kYWxvbmUgamF2YXNjcmlwdCBmcm9tIFtvZmZpY2lhbCBDRE5dKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jP3RhYj1yZWFkbWUtb3YtZmlsZSNyZWxlYXNlcykKICAgIDEuIHJlZG9jPT0yLjQuMAoKIyMgVXNhZ2UKCjEuIEluc3RhbGwgdGhlIHBsdWdpbiBmcm9tIFB5cGkKCiAgICBgYGBiYXNoCiAgICBwaXAgaW5zdGFsbCBta2RvY3MtcmVkb2MtdGFnCiAgICBgYGAKCjIuIEFkZCBgYGByZWRvYy10YWdgYGAgcGx1Z2luIGludG8geW91ciBta2RvY3MueW1sIHBsdWdpbnMgc2VjdGlvbnM6CgogICAgYGBgeWFtbAogICAgcGx1Z2luczoKICAgICAgIC0gcmVkb2MtdGFnCiAgICBgYGAKMy4gQWRkIGBgYHJlZG9jYGBgIHRhZyBpbiBtYXJrZG93biB0byBpbmNsdWRlIFJlZG9jOgoKICAgIGBgYGh0bWwKICAgIDxyZWRvYyBzcmM9Imh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby92Mi9zd2FnZ2VyLmpzb24iLz4KICAgIGBgYAoKICAgICFbUmVkb2MgU2FtcGxlIEltYWdlXShodHRwczovL2JsdWVzd2VuLmdpdGh1Yi5pby9ta2RvY3MtcmVkb2MtdGFnL3NhbXBsZS5wbmcpCgo0LiBZb3UgbWF5IGN1c3RvbWl6ZSB0aGUgcGx1Z2luIGJ5IHBhc3Npbmcgb3B0aW9ucyBpbiBta2RvY3MueW1sOgoKICAgIGBgYHlhbWwKICAgIHBsdWdpbnM6CiAgICAgICAtIHJlZG9jLXRhZzoKICAgICAgICAgICAgYmFja2dyb3VuZDogV2hpdGUKICAgIGBgYAoKICAgIHwgT3B0aW9ucyB8IFR5cGUgfCBEZXNjcmlwdGlvbiB8CiAgICB8LS0tfC0tLXwtLS18CiAgICB8IGJhY2tncm91bmQgfCBTdHJpbmcgfCBEZWZhdWx0OiAiIi4gUmVkb2MgaWZyYW1lIGJvZHkgYmFja2dyb3VuZCBhdHRyaWJ1dGUgdmFsdWUuIFlvdSBjYW4gdXNlIGFueSBjc3MgdmFsdWUgZm9yIGJhY2tncm91bmQgZm9yIGV4YW1wbGUgIiM3NGI5ZmYiIG9yICJHYWluc2Jvcm8iIG9yICIiIGZvciBub3RoaW5nLiB8CiAgICB8IGhlaWdodCB8IFN0cmluZyB8IERlZmF1bHQ6ICI4MHZoIi4gSGVpZ2h0IG9mIFJlZG9jIGlmcmFtZS4gfAoKIyMgSG93IGl0IHdvcmtzCgoxLiBDb3B5IFJlZG9jIHNjcmlwdCBmaWxlIGludG8gYHNpdGUvYXNzZXRzL2phdmFzY3JpcHRzL2AgZGlyZWN0b3J5CjIuIFNlYXJjaCBhbGwgcmVkb2MgdGFncywgdGhlbiBjb252ZXJ0IHRoZW0gdG8gYW4gaWZyYW1lIHRhZyBhbmQgZ2VuZXJhdGUgdGhlIGlmcmFtZSB0YXJnZXQgaHRtbCB3aXRoIHRoZSBnaXZlbiBPcGVuQVBJIFNwZWNpZmljYXRpb24gc3JjIHBhdGgKCiMjIExpY2Vuc2UKClRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgLSBzZWUgdGhlIFtMSUNFTlNFLm1kXShodHRwczovL2dpdGh1Yi5jb20vQmx1ZXN3ZW4vbWtkb2NzLXJlZG9jLXRhZy9ibG9iL21haW4vTElDRU5TRSkgZmlsZSBmb3IgZGV0YWlscy4KCiMjIFJlZmVyZW5jZQoKMS4gW3JlZGFya10oaHR0cHM6Ly9naXRodWIuY29tL2RpbGFueC9yZWRhcmspOiBzb3VyY2Ugb2YgZGFyayBtb2RlIGphdmFzY3JpcHQgYW5kIGNzcwo= readmeEtag: '"ee6a42e7fafc56ed9967f8e240890449107a7ddc"' readmeLastModified: Sat, 05 Apr 2025 14:56:11 GMT repositoryId: 727734575 description: A MkDocs plugin supports adding Redoc to the page. created: '2023-12-05T13:20:17Z' updated: '2025-05-31T04:21:30Z' language: Python archived: false stars: 3 watchers: 1 forks: 2 owner: blueswen logo: https://avatars.githubusercontent.com/u/1564148?v=4 license: MIT repoEtag: '"1479cf8df39f4e8e8d2180c26726e228f79bbe5ba8cc4b73b63e88f45c37cd3c"' repoLastModified: Sat, 31 May 2025 04:21:30 GMT category: Documentation foundInMaster: true name: MkDocs Redoc Tag language: Python link: https://blueswen.github.io/mkdocs-redoc-tag/ source_description: A MkDocs plugin supports adding Redoc to the page. v2: true v3_1: true - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/blueswen/mkdocs-swagger-ui-tag v3: true id: 210c459f395c1a11f8160fc69bd12fee repositoryMetadata: base64Readme: >- IyBNa0RvY3MgU3dhZ2dlciBVSSBUYWcKCjxwIGFsaWduPSJjZW50ZXIiPgo8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L21rZG9jcy1zd2FnZ2VyLXVpLXRhZyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L21rZG9jcy1zd2FnZ2VyLXVpLXRhZy5zdmciIGFsdD0iUHlQSSB2ZXJzaW9uIi8+PC9hPgo8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L21rZG9jcy1zd2FnZ2VyLXVpLXRhZyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9kbS9ta2RvY3Mtc3dhZ2dlci11aS10YWcuc3ZnIiBhbHQ9IlB5UEkgZG93bmxvYWRzIi8+PC9hPgo8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9jb2RlY292LmlvL2doL2JsdWVzd2VuL21rZG9jcy1zd2FnZ2VyLXVpLXRhZyI+PGltZyBzcmM9Imh0dHBzOi8vY29kZWNvdi5pby9naC9ibHVlc3dlbi9ta2RvY3Mtc3dhZ2dlci11aS10YWcvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPTFEMUIwR0FRTjEiIGFsdD0iQ29kZWNvdiIvPjwvYT4KPC9wPgoKQSBNa0RvY3MgcGx1Z2luIHN1cHBvcnRzIGFkZGluZyBbU3dhZ2dlciBVSV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkpIHRvIHRoZSBwYWdlLgoKW0xpdmUgZGVtb10oaHR0cHM6Ly9ibHVlc3dlbi5naXRodWIuaW8vbWtkb2NzLXN3YWdnZXItdWktdGFnLykgd2l0aCBbTWF0ZXJpYWwgZm9yIE1rRG9jc10oaHR0cHM6Ly9zcXVpZGZ1bmsuZ2l0aHViLmlvL21rZG9jcy1tYXRlcmlhbC8pLgoKIyMgRmVhdHVyZXMKCjEuIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBmaWxlIGZyb20gb25saW5lIG92ZXIgVVJMIG9yIHN0YXRpYyBmaWxlIGluIGRvY3MKMi4gQWxsIGRlcGVuZGVuY2llcyBhcmUgdXNpbmcgc3RhdGljIGZpbGVzIGhhbmRsZWQgYnkgdGhlIHBsdWdpbiBub3QgZnJvbSBDRE4sIGVzcGVjaWFsbHkgc3VpdGFibGUgZm9yIHRob3NlIGRvY3VtZW50cyBiZWVuIGRlcGxveWVkIGluIHRoZSBpbnRyYW5ldAozLiBNdWx0aXBsZSBTd2FnZ2VyIFVJIG9uIHRoZSBzYW1lIHBhZ2UKNC4gU3luY2hyb25pemVkIGRhcmsgbW9kZSB3aXRoIFtNYXRlcmlhbCBmb3IgTWtEb2NzXShodHRwczovL3NxdWlkZnVuay5naXRodWIuaW8vbWtkb2NzLW1hdGVyaWFsLykKNS4gQ29uZmlndXJlIFtTd2FnZ2VyIFVJIGNvbmZpZ3VyYXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL29wZW4tc291cmNlLXRvb2xzL3N3YWdnZXItdWkvdXNhZ2UvY29uZmlndXJhdGlvbi8pIHRocm91Z2ggcGx1Z2luIG9wdGlvbnMgYW5kIHRhZyBhdHRyaWJ1dGVzCjYuIFN1cHBvcnQgbXVsdGlwbGUgT0FTIGluIGEgc2luZ2xlIFN3YWdnZXIgVUkgd2l0aCBhIHRvcCBiYXIgc2VsZWN0b3IKNy4gU3VwcG9ydCBTd2FnZ2VyIFVJIFtpbml0T0F1dGhdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL29wZW4tc291cmNlLXRvb2xzL3N3YWdnZXItdWkvdXNhZ2Uvb2F1dGgyLykgbWV0aG9kCgojIyBEZXBlbmRlbmN5CgoxLiBQeXRob24gUGFja2FnZQogICAgMS4gYmVhdXRpZnVsc291cDQ+PTQuMTMuMwoyLiBbU3dhZ2dlciBVSSBkaXN0XShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zd2FnZ2VyLXVpLWRpc3QpIGphdmFzY3JpcHQgZmlsZSBhbmQgQ1NTIGZpbGUKICAgIDEuIHN3YWdnZXItdWktZGlzdD09NS4yNy4xCgojIyBVc2FnZQoKMS4gSW5zdGFsbCB0aGUgcGx1Z2luIGZyb20gUHlQSQoKICAgIGBgYGJhc2gKICAgIHBpcCBpbnN0YWxsIG1rZG9jcy1zd2FnZ2VyLXVpLXRhZwogICAgYGBgCgoyLiBBZGQgYGBgc3dhZ2dlci11aS10YWdgYGAgcGx1Z2luIHRvIHlvdXIgbWtkb2NzLnltbCBwbHVnaW5zIHNlY3Rpb25zOgoKICAgIGBgYHlhbWwKICAgIHBsdWdpbnM6CiAgICAgICAtIHN3YWdnZXItdWktdGFnCiAgICBgYGAKCjMuIEFkZCBgYGBzd2FnZ2VyLXVpYGBgIHRhZyBpbiBtYXJrZG93biB0byBpbmNsdWRlIFN3YWdnZXIgVUkKCiAgICBgYGBtYXJrZG93bgogICAgPHN3YWdnZXItdWkgc3JjPSJodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uIi8+CiAgICBgYGAKCiAgICAhW1N3YWdnZXIgVUkgU2FtcGxlIEltYWdlXShodHRwczovL2JsdWVzd2VuLmdpdGh1Yi5pby9ta2RvY3Mtc3dhZ2dlci11aS10YWcvc2FtcGxlLnBuZykKCjQuIFlvdSBtYXkgY3VzdG9taXplIHRoZSBwbHVnaW4gYnkgcGFzc2luZyBvcHRpb25zIGluIG1rZG9jcy55bWwsIGNoZWNrIG1vcmUgZGV0YWlscyBvbiBbb3B0aW9uc10oaHR0cHM6Ly9ibHVlc3dlbi5naXRodWIuaW8vbWtkb2NzLXN3YWdnZXItdWktdGFnL29wdGlvbnMvKToKCiAgICBgYGB5YW1sCiAgICBwbHVnaW5zOgogICAgICAgLSBzd2FnZ2VyLXVpLXRhZzoKICAgICAgICAgICAgYmFja2dyb3VuZDogV2hpdGUKICAgICAgICAgICAgZG9jRXhwYW5zaW9uOiBub25lCiAgICAgICAgICAgIGZpbHRlcjogIiIKICAgICAgICAgICAgc3ludGF4SGlnaGxpZ2h0VGhlbWU6IG1vbm9rYWkKICAgICAgICAgICAgdHJ5SXRPdXRFbmFibGVkOiBbJ2dldCcsICdwb3N0J10KICAgIGBgYAoKICAgIHwgT3B0aW9ucyB8IFR5cGUgfCBEZXNjcmlwdGlvbiB8CiAgICB8LS0tfC0tLXwtLS18CiAgICB8IGJhY2tncm91bmQgfCBTdHJpbmcgfCBEZWZhdWx0OiAiIi4gU3dhZ2dlciBVSSBpZnJhbWUgYm9keSBiYWNrZ3JvdW5kIGF0dHJpYnV0ZSB2YWx1ZS4gWW91IGNhbiB1c2UgYW55IGNzcyB2YWx1ZSBmb3IgYmFja2dyb3VuZCBmb3IgZXhhbXBsZSAiIzc0YjlmZiIgb3IgIkdhaW5zYm9ybyIgb3IgIiIgZm9yIG5vdGhpbmcuIHwKICAgIHwgZG9jRXhwYW5zaW9uIHwgU3RyaW5nIHwgRGVmYXVsdDogImxpc3QiLiBDb250cm9scyB0aGUgZGVmYXVsdCBleHBhbnNpb24gc2V0dGluZyBmb3IgdGhlIG9wZXJhdGlvbnMgYW5kIHRhZ3MuIEl0IGNhbiBiZSAibGlzdCIgKGV4cGFuZHMgb25seSB0aGUgdGFncyksICJmdWxsIiAoZXhwYW5kcyB0aGUgdGFncyBhbmQgb3BlcmF0aW9ucykgb3IgIm5vbmUiIChleHBhbmRzIG5vdGhpbmcpLiB8CiAgICB8IGZpbHRlciB8IFN0cmluZyBvciBCb29sZWFuIHwgRGVmYXVsdDogRmFsc2UuIElmIHNldCwgZW5hYmxlcyBmaWx0ZXJpbmcuIFRoZSB0b3AgYmFyIHdpbGwgc2hvdyBhbiBlZGl0IGJveCB0aGF0IHlvdSBjYW4gdXNlIHRvIGZpbHRlciB0aGUgdGFnZ2VkIG9wZXJhdGlvbnMgdGhhdCBhcmUgc2hvd24uIENhbiBiZSBCb29sZWFuIHRvIGVuYWJsZSBvciBkaXNhYmxlLCBvciBhIHN0cmluZywgaW4gd2hpY2ggY2FzZSBmaWx0ZXJpbmcgd2lsbCBiZSBlbmFibGVkIHVzaW5nIHRoYXQgc3RyaW5nIGFzIHRoZSBmaWx0ZXIgZXhwcmVzc2lvbi4gRmlsdGVyaW5nIGlzIGNhc2Ugc2Vuc2l0aXZlIG1hdGNoaW5nIHRoZSBmaWx0ZXIgZXhwcmVzc2lvbiBhbnl3aGVyZSBpbnNpZGUgdGhlIHRhZy4gfAogICAgfCBzeW50YXhIaWdobGlnaHRUaGVtZSB8IFN0cmluZyB8IERlZmF1bHQ6ICJhZ2F0ZSIuIFtIaWdobGlnaHQuanNdKGh0dHBzOi8vaGlnaGxpZ2h0anMub3JnL3N0YXRpYy9kZW1vLykgc3ludGF4IGNvbG9yaW5nIHRoZW1lIHRvIHVzZS4gSXQgY2FuIGJlICJhZ2F0ZSIsICJhcnRhIiwgIm1vbm9rYWkiLCAibm9yZCIsICJvYnNpZGlhbiIgb3IgInRvbW9ycm93LW5pZ2h0IiB8CiAgICB8IHRyeUl0T3V0RW5hYmxlZCB8IEJvb2xlYW4gfCBEZWZhdWx0OiBGYWxzZS4gVGhpcyBzZXR0aW5nIGRldGVybWluZXMgdGhlIGRlZmF1bHQgZWRpdGFiaWxpdHkgb2YgdGhlICJUcnkgaXQgb3V0IiBzZWN0aW9uLCBpbmNsdWRpbmcgcGFyYW1ldGVycyBvciBib2R5LiB8CiAgICB8IG9hdXRoMlJlZGlyZWN0VXJsIHwgU3RyaW5nIHwgRGVmYXVsdDogQWJzb2x1dGUgVVJMIG9mICIvYXNzZXRzL3N3YWdnZXItdWkvb2F1dGgyLXJlZGlyZWN0Lmh0bWwiIHJlbGF0aXZlIHdpdGggc2l0ZV91cmwgaW4gbWtkb2NzLnltbCBvciBkb2N1bWVudCByb290IHBhdGggb24gc2l0ZSB3aXRob3V0IHNpdGVfdXJsLCBlLmcuICJbaHR0cHM6Ly9ibHVlc3dlbi5naXRodWIuaW8vbWtkb2NzLXN3YWdnZXItdWktdGFnL2Fzc2V0cy9zd2FnZ2VyLXVpL29hdXRoMi1yZWRpcmVjdC5odG1sXShodHRwczovL2JsdWVzd2VuLmdpdGh1Yi5pby9ta2RvY3Mtc3dhZ2dlci11aS10YWcvYXNzZXRzL3N3YWdnZXItdWkvb2F1dGgyLXJlZGlyZWN0Lmh0bWwpIi4gT0F1dGggcmVkaXJlY3QgVVJMLiB8CiAgICB8IHN1cHBvcnRlZFN1Ym1pdE1ldGhvZHMgfCBBcnJheSB8IERlZmF1bHQ6IEFsbCBIdHRwIE1ldGhvZHMuIEFycmF5PVsiZ2V0IiwgInB1dCIsICJwb3N0IiwgImRlbGV0ZSIsICJvcHRpb25zIiwgImhlYWQiLCAicGF0Y2giLCAidHJhY2UiXS4gTGlzdCBvZiBIVFRQIG1ldGhvZHMgdGhhdCBoYXZlIHRoZSAiVHJ5IGl0IG91dCIgZmVhdHVyZSBlbmFibGVkLiBBbiBlbXB0eSBhcnJheSBkaXNhYmxlcyAiVHJ5IGl0IG91dCIgZm9yIGFsbCBvcGVyYXRpb25zLiBUaGlzIGRvZXMgbm90IGZpbHRlciB0aGUgb3BlcmF0aW9ucyBmcm9tIHRoZSBkaXNwbGF5LiB8CiAgICB8IHZhbGlkYXRvclVybCB8IFN0cmluZyB8IERlZmF1bHQ6ICJodHRwczovL3ZhbGlkYXRvci5zd2FnZ2VyLmlvL3ZhbGlkYXRvciIuIEJ5IGRlZmF1bHQsIFN3YWdnZXIgVUkgYXR0ZW1wdHMgdG8gdmFsaWRhdGUgc3BlY3MgYWdhaW5zdCBzd2FnZ2VyLmlvJ3Mgb25saW5lIHZhbGlkYXRvciBpbiBtdWx0aXBsZSBPQVMgU3dhZ2dlciBVSS4gWW91IGNhbiB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gc2V0IGEgZGlmZmVyZW50IHZhbGlkYXRvciBVUkwsIGZvciBleGFtcGxlIGZvciBsb2NhbGx5IGRlcGxveWVkIHZhbGlkYXRvcnMgKFtWYWxpZGF0b3IgQmFkZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS92YWxpZGF0b3ItYmFkZ2UpKS4gU2V0dGluZyBpdCAibm9uZSIgdG8gZGlzYWJsZSB2YWxpZGF0aW9uLiB8CiAgICB8IGV4dHJhX2NzcyB8IEFycmF5IHwgRGVmYXVsdDogW10uIExpc3Qgb2YgYWRkaXRpb25hbCBDU1MgZmlsZXMgdG8gaW5jbHVkZSBpbiBTd2FnZ2VyIFVJIGlmcmFtZXMuIHwKICAgIHwgZGFya19zY2hlbWVfbmFtZSB8IFN0cmluZyB8IERlZmF1bHQ6ICJzbGF0ZSIuIFRoZSBjb2xvciBzY2hlbWUgbmFtZSB1c2VkIGZvciBkYXJrIG1vZGUgZGV0ZWN0aW9uIHdpdGggTWF0ZXJpYWwgZm9yIE1rRG9jcyB0aGVtZS4gfAogICAgfCBmaWx0ZXJfZmlsZXMgfCBBcnJheSB8IERlZmF1bHQ6IFtdLiBMaXN0IG9mIGZpbGUgcGF0aHMgdG8gZmlsdGVyIHByb2Nlc3NpbmcuIElmIHNwZWNpZmllZCwgb25seSBmaWxlcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBwcm9jZXNzZWQgZm9yIHN3YWdnZXItdWkgdGFncy4gfAoKIyMgSG93IGl0IHdvcmtzCgoxLiBDb3BpZXMgdGhlIFN3YWdnZXIgVUkgc2NyaXB0IGZpbGUgaW50byBgc2l0ZS9hc3NldHMvamF2YXNjcmlwdHMvYCBkaXJlY3RvcnksIHRoZSBDU1MgZmlsZSBpbnRvIGBzaXRlL2Fzc2V0cy9zdHlsZXNoZWV0cy9gIGRpcmVjdG9yeSwgYW5kIHRoZSBbZGVmYXVsdCBPYXV0aDIgcmVkaXJlY3QgaHRtbF0oaHR0cHM6Ly9naXRodWIuY29tL2JsdWVzd2VuL21rZG9jcy1zd2FnZ2VyLXVpLXRhZy9ibG9iL21haW4vbWtkb2NzX3N3YWdnZXJfdWlfdGFnL3N3YWdnZXItdWkvb2F1dGgyLXJlZGlyZWN0Lmh0bWwpIGludG8gYHNpdGUvYXNzZXRzL3N3YWdnZXItdWkvYCBkaXJlY3RvcnkKMi4gU2VhcmNoIGFsbCBzd2FnZ2VyLXVpIHRhZ3MsIHRoZW4gY29udmVydCB0aGVtIHRvIGFuIGlmcmFtZSB0YWcgYW5kIGdlbmVyYXRlIHRoZSBpZnJhbWUgdGFyZ2V0IEhUTUwgd2l0aCB0aGUgZ2l2ZW4gT3BlbkFQSSBTcGVjaWZpY2F0aW9uIHNyYyBwYXRoIGFuZCBvcHRpb25zCgojIyBEZXZlbG9wbWVudAoKIyMjIFVwZ3JhZGluZyB0aGUgU3dhZ2dlci1VSSB2ZXJzaW9uCgpUbyB1cGdyYWRlIHRoZSB2ZXJzaW9uIG9mIGBzd2FnZ2VyLXVpLWRpc3RgIHVwZGF0ZSB0aGUgdmVyc2lvbiBpbiB0aGUgW3BhY2thZ2UuanNvbl0oLi9wYWNrYWdlLmpzb24pIGFuZCBpbnN0YWxsIHdpdGggYG5wbSBpYC4gCgpBZnRlciB0aGlzLCBydW4gdGhlIHByb3ZpZGVkIFt1cGRhdGUgc3dhZ2dlciB1aSBzY3JpcHRdKC4vdXBkYXRlLXN3YWdnZXItdWkuc2gpIHRvIG1vdmUgdGhlIGZpbGVzIHRvIHRoZSBhcHByb3ByaWF0ZSBmb2xkZXJzIGFuZCBjb21taXQgdGhlIGNoYW5nZXMuCgojIyBMaWNlbnNlCgpUaGlzIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIC0gc2VlIHRoZSBbTElDRU5TRS5tZF0oaHR0cHM6Ly9naXRodWIuY29tL0JsdWVzd2VuL21rZG9jcy1zd2FnZ2VyLXVpLXRhZy9ibG9iL21haW4vTElDRU5TRSkgZmlsZSBmb3IgZGV0YWlscy4KCiMjIFJlZmVyZW5jZQoKMS4gW0Ftb2VudXMgU3dhZ2dlciBEYXJrIFRoZW1lXShodHRwczovL2dpdGh1Yi5jb20vQW1vZW51cy9Td2FnZ2VyRGFyay8pOiBzb3VyY2Ugb2YgZGFyayBtb2RlIGNzcwo= readmeEtag: '"d23373e86ef64551840d459e9bd2be30e46f89e2"' readmeLastModified: Sat, 23 Aug 2025 16:23:37 GMT repositoryId: 502576077 description: A MkDocs plugin supports adding Swagger UI to the page. created: '2022-06-12T09:49:37Z' updated: '2026-02-03T15:44:15Z' language: CSS archived: false stars: 109 watchers: 1 forks: 13 owner: blueswen logo: https://avatars.githubusercontent.com/u/1564148?v=4 license: MIT repoEtag: '"20aeb8caae282cc246e87adaeb66c51e8cff2aaf1dddbb5bc68f8fc8e01690d7"' repoLastModified: Tue, 03 Feb 2026 15:44:15 GMT category: - Documentation - Parsers foundInMaster: true name: MkDocs Swagger UI Tag language: Python link: https://blueswen.github.io/mkdocs-swagger-ui-tag/ source_description: A MkDocs plugin supports for add Swagger UI in page. v2: true v3_1: true - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/bcoughlan/openapi-commander v3: true id: 182561588480789f47720cb799634f03 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIENvbW1hbmRlcgoKR2VuZXJhdGUgYSBOb2RlLmpzIGNvbW1hbmQgbGluZSB0b29sIGZyb20gYW4gT3BlbkFQSSBkZWZpbml0aW9uIHVzaW5nIHRoZQpbY29tbWFuZGVyXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9jb21tYW5kZXIpIGxpYnJhcnkuCgpgYGAKJCBub2RlIHBldHN0b3JlLmpzCgpVc2FnZTogcGV0c3RvcmUgW29wdGlvbnNdIFtjb21tYW5kXQoKT3B0aW9uczoKICAtcCwgLS1wcmludCA8bW9kZT4gICAgIFByaW50IHRoZSBIVFRQIHJlcXVlc3QgaW5zdGVhZCBvZiBzZW5kaW5nIGl0LiAoY2hvaWNlczogImN1cmwiLCAicGxhaW4iKQogIC1zLCAtLXNlcnZlciA8c2VydmVyPiAgU2VydmVyIHRvIHVzZQogIC1hLCAtLWF1dGggPGF1dGg+ICAgICAgQXV0aG9yaXphdGlvbiBoZWFkZXIgdG8gc2VuZAogIC1oLCAtLWhlbHAgICAgICAgICAgICAgZGlzcGxheSBoZWxwIGZvciBjb21tYW5kCgpDb21tYW5kczoKICBwZXQgICAgICAgICAgICAgICAgICAgIEV2ZXJ5dGhpbmcgYWJvdXQgeW91ciBQZXRzCiAgdXNlciAgICAgICAgICAgICAgICAgICBPcGVyYXRpb25zIGFib3V0IHVzZXIKICBoZWxwIFtjb21tYW5kXSAgICAgICAgIGRpc3BsYXkgaGVscCBmb3IgY29tbWFuZAoKJCBub2RlIHBldHN0b3JlLmpzIHBldCBnZXRQZXRCeUlkIDEKU3RhdHVzOiAyMDAKewogICJpZCI6IDEsCiAgImNhdGVnb3J5IjogewogICAgImlkIjogMSwKICAgICJuYW1lIjogIkhvbGEiCiAgfSwKfQpgYGAKCkl0IGNhbiBiZSB1c2VkIGFzIGEgc3RhcnRlciBmb3Igd3JpdGluZyBjb21tYW5kIGxpbmUgdG9vbHMgdGhhdCB0YWxrIHRvIEFQSXMsCm9yIGFzIGFuIGFsdGVybmF0aXZlIHRvIHVzaW5nIGN1cmwgdG8gd29yayB3aXRoIEFQSXMuCgo8IS0tIGdlbmVyYXRlZCB3aXRoICJtYXJrZG93bi10b2MgLWkgUkVBRE1FLm1kIiAtLT4KPCEtLSB0b2MgLS0+CgotIFtGZWF0dXJlc10oI2ZlYXR1cmVzKQotIFtTZXR1cF0oI3NldHVwKQotIFtFeGFtcGxlc10oI2V4YW1wbGVzKQogICogW0NvbW1hbmRzIGdyb3VwZWQgYnkgdGFnXSgjY29tbWFuZHMtZ3JvdXBlZC1ieS10YWcpCiAgKiBbQmFzaWMgR0VUIGV4YW1wbGVdKCNiYXNpYy1nZXQtZXhhbXBsZSkKICAqIFtHbG9iYWwgb3B0aW9uc10oI2dsb2JhbC1vcHRpb25zKQogICAgKyBbQ3VzdG9tIHNlcnZlcl0oI2N1c3RvbS1zZXJ2ZXIpCiAgICArIFtTZXQgQXV0aG9yaXphdGlvbiBoZWFkZXJdKCNzZXQtYXV0aG9yaXphdGlvbi1oZWFkZXIpCiAgICArIFtQcmludCByZXF1ZXN0IHdpdGhvdXQgc2VuZGluZ10oI3ByaW50LXJlcXVlc3Qtd2l0aG91dC1zZW5kaW5nKQogICAgKyBbUHJpbnQgYSBjdXJsIGNvbW1hbmQgb2YgdGhlIHJlcXVlc3RdKCNwcmludC1hLWN1cmwtY29tbWFuZC1vZi10aGUtcmVxdWVzdCkKICAqIFtQcmludCBleGFtcGxlIHJlcXVlc3QgYm9kaWVzXSgjcHJpbnQtZXhhbXBsZS1yZXF1ZXN0LWJvZGllcykKLSBbQnVpbGQgc3RhbmRhbG9uZSBiaW5hcmllc10oI2J1aWxkLXN0YW5kYWxvbmUtYmluYXJpZXMpCi0gW0EgdmVyeSBpbmNvbXBsZXRlIFRPRE8gbGlzdC4uLl0oI2EtdmVyeS1pbmNvbXBsZXRlLXRvZG8tbGlzdCkKLSBbQ29udHJpYnV0aW5nXSgjY29udHJpYnV0aW5nKQoKPCEtLSB0b2NzdG9wIC0tPgoKCiMgRmVhdHVyZXMKCi0gR2VuZXJhdGUgY2xlYW4gY29kZSBmcm9tIHlvdXIgc3BlYy4KLSBTdXBwb3J0cyBTd2FnZ2VyIDIsIE9wZW5BUEkgMy4wIGFuZCAzLjEuCi0gU2hvdyBleGFtcGxlcyBvZiByZXF1ZXN0IGJvZGllcywgdXNpbmcgZXhhbXBsZXMgZnJvbSB0aGUgc3BlYyBvciBnZW5lcmF0ZWQgd2l0aCBbb3BlbmFwaS1zYW1wbGVyXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9vcGVuYXBpLXNhbXBsZXIpLgotIFZlcmJvc2UgbW9kZSB0byBzZWUgcmVzcG9uc2UgaGVhZGVycy4KLSBQcmludCBhIGN1cmwgY29tbWFuZCBvZiB0aGUgcmVxdWVzdC4KCiMgU2V0dXAKCjEuIENyZWF0ZSBhbiBucG0gcHJvamVjdCB3aXRoIGBucG0gaW5pdGAgb3IgdXNlIGFuIGV4aXN0aW5nIG9uZS4gWW91ciBOb2RlLmpzIHZlcnNpb24gbXVzdCBiZSAxNisKCjIuIEluc3RhbGwgZGVwZW5kZW5jaWVzCgoqKiBOb3RlOiBJZiB5b3VyIHByb2plY3Qgc3RpbGwgdXNlcyBDb21tb25KUywgaW5zdGFsbCBgb3BlbmFwaS1jb21tYW5kZXJAM2AgYW5kIHVzZSBgLmpzYCBmb3IgdGhlIG91dHB1dCBleHRlbnNpb24uKioKCmBgYApucG0gaW5zdGFsbCBjb21tYW5kZXIKbnBtIGluc3RhbGwgLS1zYXZlLWRldiBvcGVuYXBpLWNvbW1hbmRlcgpgYGAKCjMuIEdlbmVyYXRlIHRoZSBDTEkgY29kZQoKYGBgCm5weCBvcGVuYXBpLWNvbW1hbmRlciBnZW5lcmF0ZSA8cGF0aCBvciBVUkwgdG8gc3BlYz4gPG91dHB1dCBmaWxlPgpgYGAKCmUuZy4KCmBgYApucHggb3BlbmFwaS1jb21tYW5kZXIgZ2VuZXJhdGUgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vb2xkLXYzLjAuNC1kZXYvZXhhbXBsZXMvdjMuMC9wZXRzdG9yZS55YW1sIHBldHN0b3JlLm1qcwpgYGAKCjQuIFJ1bgoKYGBgCm5vZGUgcGV0c3RvcmUuanMgLi4uCmBgYAoKIyBFeGFtcGxlcwoKIyMgU3ViY29tbWFuZHMKClRoZSBjb21tYW5kcyBhcmUgZ3JvdXBlZCBieSB0aGVpciBmaXJzdCB0YWcgaW4gdGhlIE9wZW5BUEkgc3BlYyAodGhlIHNhbWUgbG9naWMKdGhhdCBTd2FnZ2VyIFVJIHVzZXMpLgoKYGBgCn4vcGV0c3RvcmUkIG5vZGUgcGV0c3RvcmUuanMgcGV0ClVzYWdlOiBwZXRzdG9yZSBwZXQgW29wdGlvbnNdIFtjb21tYW5kXQoKRXZlcnl0aGluZyBhYm91dCB5b3VyIFBldHMKCk9wdGlvbnM6CiAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgaGVscCBmb3IgY29tbWFuZAoKQ29tbWFuZHM6CiAgdXBkYXRlUGV0IFtvcHRpb25zXSA8Ym9keT4gICAgICAgICAgIFVwZGF0ZSBhbiBleGlzdGluZyBwZXQKICBhZGRQZXQgW29wdGlvbnNdIDxib2R5PiAgICAgICAgICAgICAgQWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmUKICBmaW5kUGV0c0J5U3RhdHVzIFtvcHRpb25zXSAgICAgICAgICAgRmluZHMgUGV0cyBieSBzdGF0dXMKICBmaW5kUGV0c0J5VGFncyBbb3B0aW9uc10gICAgICAgICAgICAgKkRFUFJFQ0FURUQqIEZpbmRzIFBldHMgYnkgdGFncwogIGdldFBldEJ5SWQgPHBldElkPiAgICAgICAgICAgICAgICAgICBGaW5kIHBldCBieSBJRAogIHVwZGF0ZVBldFdpdGhGb3JtIFtvcHRpb25zXSA8cGV0SWQ+ICBVcGRhdGVzIGEgcGV0IGluIHRoZSBzdG9yZSB3aXRoIGZvcm0gZGF0YQogIGRlbGV0ZVBldCBbb3B0aW9uc10gPHBldElkPiAgICAgICAgICBEZWxldGVzIGEgcGV0CiAgdXBsb2FkRmlsZSBbb3B0aW9uc10gPHBldElkPiAgICAgICAgIHVwbG9hZHMgYW4gaW1hZ2UKICBoZWxwIFtjb21tYW5kXSAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSBoZWxwIGZvciBjb21tYW5kCmBgYAoKCiMjIEJhc2ljIEdFVCBleGFtcGxlCgpgYGAKfi9wZXRzdG9yZSQgbm9kZSBwZXRzdG9yZS5qcyBwZXQgZ2V0UGV0QnlJZCAxClN0YXR1czogMjAwCnsKICAiaWQiOiAxLAogICJjYXRlZ29yeSI6IHsKICAgICJpZCI6IDEsCiAgICAibmFtZSI6ICJIb2xhIgogIH0sCiAgIm5hbWUiOiAiUGVycml0byIsCiAgInBob3RvVXJscyI6IFsKICAgICIvdG1wL2luZmxlY3Rvcjk5NTU5NjAwNzIyMjcyNTk0NC50bXAiCiAgXSwKICAidGFncyI6IFsKICAgIHsKICAgICAgImlkIjogMSwKICAgICAgIm5hbWUiOiAiQml6Y29jaG8iCiAgICB9CiAgXSwKICAic3RhdHVzIjogImF2YWlsYWJsZSIKfQpgYGAKCllvdSBjYW4gYWxzbyBhZGQgdGhlIGAtdmAgZmxhZyB0byBzaG93IHJlc3BvbnNlIGhlYWRlcnMuCgojIyBHbG9iYWwgb3B0aW9ucwoKIyMjIEN1c3RvbSBzZXJ2ZXIKCmBgYAp+L3BldHN0b3JlJCBub2RlIHBldHN0b3JlLmpzIC1zIGh0dHBzOi8vbXlwZXRzdG9yZS5leGFtcGxlIHBldCBnZXRQZXRCeUlkIDEKYGBgCgpBbHRlcm5hdGl2ZWx5IHlvdSBjYW4gb3ZlcnJpZGUgaXQgYnkgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYHtDT01NQU5ETkFNRX1fU0VSVkVSYCwgZS5nLiBgUEVUU1RPUkVfU0VSVkVSYC4KCiMjIyBTZXQgQXV0aG9yaXphdGlvbiBoZWFkZXIKCmBgYAp+L3BldHN0b3JlJCBub2RlIHBldHN0b3JlLmpzIC1hICdCZWFyZXIgbXl0b2tlbicgZ2V0UGV0QnlJZCAxCmBgYAoKQWx0ZXJuYXRpdmVseSB5b3UgY2FuIG92ZXJyaWRlIGl0IGJ5IHNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGB7Q09NTUFORE5BTUV9X0FVVEhgLCBlLmcuIGBQRVRTVE9SRV9BVVRIYC4KCiMjIyBQcmludCByZXF1ZXN0IHdpdGhvdXQgc2VuZGluZwoKYGBgCn4vcGV0c3RvcmUkIG5vZGUgcGV0c3RvcmUuanMgcGV0IC1hICdCZWFyZXIgbXl0b2tlbicgLXMgaHR0cHM6Ly9teXBldHN0b3JlLmV4YW1wbGUgZ2V0UGV0QnlJZCAxIC0tcHJpbnQgcGxhaW4KR0VUIGh0dHBzOi8vbXlwZXRzdG9yZS5leGFtcGxlL3BldC8xCkF1dGhvcml6YXRpb246IEJlYXJlciBteXRva2VuCkFjY2VwdDogYXBwbGljYXRpb24vanNvbgpgYGAKCiMjIyBQcmludCBhIGN1cmwgY29tbWFuZCBvZiB0aGUgcmVxdWVzdAoKYGBgCn4vcGV0c3RvcmUkIG5vZGUgcGV0c3RvcmUuanMgcGV0IC1hICdCZWFyZXIgbXl0b2tlbicgLXMgaHR0cHM6Ly9teXBldHN0b3JlLmV4YW1wbGUgZ2V0UGV0QnlJZCAxIC0tcHJpbnQgY3VybApjdXJsIC1YIEdFVCAtSCAnQXV0aG9yaXphdGlvbjogQmVhcmVyIG15dG9rZW4nIC1IICdBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24nICdodHRwczovL215cGV0c3RvcmUuZXhhbXBsZS9wZXQvMScKYGBgCgojIyBQcmludCBleGFtcGxlIHJlcXVlc3QgYm9kaWVzCgpgYGAKfi9wZXRzdG9yZSQgbm9kZSBwZXRzdG9yZS5qcyBwZXQgdXBkYXRlUGV0IGV4YW1wbGVzCkV4YW1wbGUgZm9yIGFwcGxpY2F0aW9uL2pzb246CnsKICAiaWQiOiAxMCwKICAibmFtZSI6ICJkb2dnaWUiLAogICJjYXRlZ29yeSI6IHsKICAgICJpZCI6IDEsCiAgICAibmFtZSI6ICJEb2dzIgogIH0sCiAgInBob3RvVXJscyI6IFsKICAgICJzdHJpbmciCiAgXSwKICAidGFncyI6IFsKICAgIHsKICAgICAgImlkIjogMCwKICAgICAgIm5hbWUiOiAic3RyaW5nIgogICAgfQogIF0sCiAgInN0YXR1cyI6ICJhdmFpbGFibGUiCn0KYGBgCgojIEJ1aWxkIHN0YW5kYWxvbmUgYmluYXJpZXMKClRvIGJ1aWxkIG11bHRpLXBsYXRmb3JtIHN0YW5kYWxvbmUgYmluYXJpZXMgcGxhdGZvcm0gSSByZWNvbW1lbmQgW3ZlcmNlbC9wa2ddKGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvcGtnKS4KCiMgQSB2ZXJ5IGluY29tcGxldGUgVE9ETyBsaXN0Li4uCgpUaGUgdG9wIHByaW9yaXR5IGlzIHRvIGJlZWYgdXAgdGhlIHRlc3Qgc3VpdGUuCgotIFN5bnRheCBoaWdobGlnaHRpbmcgb2YgZXhhbXBsZXMKLSBJbXBsZW1lbnQgZGlmZmVyZW50IHNlY3VyaXR5L2F1dGggdHlwZXMuCi0gQXV0by1kZXRlY3QgcmVxdWVzdCBib2R5IHR5cGUgZnJvbSBmaWxlLgotIFNob3cgSlNPTiAmIFlBTUwgZXhhbXBsZXMgd2l0aCBjb21tZW50cyBmb3IgZmllbGQgZGVzY3JpcHRpb25zLgogIC0+IFN0cmlwIGNvbW1lbnRzIGZyb20gSlNPTiB3aGVuIHBhc3NpbmcgaW4KLSBTdHJpcCBodG1sL21hcmtkb3duIGZyb20gZGVzY3JpcHRpb24KLSBNb3JlIHNlcmlhbGl6YXRpb24gb3B0aW9ucyBodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL3NlcmlhbGl6YXRpb24vCi0gYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIGNvbnRlbnQgdHlwZXMuCi0gU2VydmVyIHRlbXBsYXRpbmcuCi0gQXV0b2NvbXBsZXRlLgoKIyBDb250cmlidXRpbmcKClRoaXMgaXMgYSBob2JieSBzaWRlIHByb2plY3Qgc28gSSBoYXZlIGxpbWl0ZWQgdGltZSB0byB3b3JrIG9uIGlzc3VlcyBidXQgSSB3aWxsIApkbyBteSBiZXN0IHRvIGRpc2N1c3MgaXNzdWVzLCByZXZpZXcgUFJzIGFuZCBrZWVwIHRoZSBwcm9qZWN0IG1haW50YWluZWQuIFBsZWFzZQpvcGVuIGFuIGlzc3VlIGZvciBkaXNjdXNzaW9uIGJlZm9yZSBvcGVuaW5nIGFueSBzaWduaWZpY2FudCBQUnMgdG8gYXZvaWQgYW55CmRpc2FwcG9pbnRtZW50IGFib3V0IHByb2plY3Qgc2NvcGUuCg== readmeEtag: '"2377cc967c9ee21b8d079ca47e1e0cef0afa81e4"' readmeLastModified: Mon, 18 Aug 2025 15:15:15 GMT repositoryId: 497158492 description: Generate a Node.js command line tool from an OpenAPI definition created: '2022-05-27T22:55:07Z' updated: '2025-11-04T09:25:13Z' language: TypeScript archived: false stars: 29 watchers: 1 forks: 4 owner: bcoughlan logo: https://avatars.githubusercontent.com/u/421683?v=4 license: MIT repoEtag: '"9ec184fae1141dbab3241601d3a9b48ccb7a047f695206e8926f0c690a685730"' repoLastModified: Tue, 04 Nov 2025 09:25:13 GMT category: - Code Generators - SDK - Parsers foundInMaster: true name: OpenAPI Commander language: - Node.js - CLI link: https://www.npmjs.com/package/openapi-commander source_description: Generate a Node.js command line tool from an OpenAPI definition. v2: false v3_1: true - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/pmcelhaney/counterfact v3: true id: 2c27ee61398c89f17aa5be7ffa08c72a repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIiBtYXJrZG93bj0iMSI+Cgo8aW1nIHNyYz0iLi9jb3VudGVyZmFjdC5zdmciIGFsdD0iQ291bnRlcmZhY3QiIGJvcmRlcj0wPgo8YnI+PGJyPjxicj4KPC9kaXY+CgoqKlNwaW4gdXAgYSBtb2NrIHNlcnZlciBpbnN0YW50bHkuIE5vIGNvbmZpZywgbm8gZnVzcy4gVHJ5IGl0IG5vdzoqKgoKYGBgc2ggY29weQpucHggY291bnRlcmZhY3RAbGF0ZXN0IGh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzL29wZW5hcGkuanNvbiBtb2NrLWFwaQpgYGAKClRoaXMgY29tbWFuZCByZWFkcyBhbiBPcGVuQVBJIHNwZWMgKHRoZSBbU3dhZ2dlciBQZXRzdG9yZV0oaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvKSksIGdlbmVyYXRlcyBUeXBlU2NyaXB0IGNvZGUgZm9yIGEgbW9jayBzZXJ2ZXIgaW4gYG1vY2stYXBpYCwgYW5kIHN0YXJ0cyB0aGUgc2VydmVyLgoKPGRldGFpbHM+CjxzdW1tYXJ5PkV4YW1wbGUgb2YgZ2VuZXJhdGVkIGNvZGU8L3N1bW1hcnk+CgpgYGB0cwovLyAuL21vY2stYXBpL3JvdXRlcy9zdG9yZS9vcmRlci97b3JkZXJJRH0udHMKaW1wb3J0IHR5cGUgeyBIVFRQX0dFVCB9IGZyb20gIi4uLy4uLy4uL3R5cGVzL3BhdGhzL3N0b3JlL29yZGVyL3tvcmRlcklkfS50eXBlcy5qcyI7CmltcG9ydCB0eXBlIHsgSFRUUF9ERUxFVEUgfSBmcm9tICIuLi8uLi8uLi90eXBlcy9wYXRocy9zdG9yZS9vcmRlci97b3JkZXJJZH0udHlwZXMuanMiOwoKZXhwb3J0IGNvbnN0IEdFVDogSFRUUF9HRVQgPSAoJCkgPT4gewogIHJldHVybiAkLnJlc3BvbnNlWzIwMF0ucmFuZG9tKCk7Cn07CgpleHBvcnQgY29uc3QgREVMRVRFOiBIVFRQX0RFTEVURSA9ICgkKSA9PiB7CiAgcmV0dXJuICQucmVzcG9uc2VbMjAwXTsKfTsKYGBgCgo8L2RldGFpbHM+CgpXYW50IGNvbnRyb2w/IEVkaXQgdGhlIGdlbmVyYXRlZCByb3V0ZSBmaWxlcyAoZS5nLiBgLi9tb2NrLWFwaS9yb3V0ZXMvc3RvcmUvb3JkZXIve29yZGVySUR9LnRzYCkgYW5kIGRlZmluZSByZXNwb25zZXMgZGlyZWN0bHkuIEEgdHlwZS1zYWZlIEFQSSBmcm9tIHlvdXIgc3BlYyBzcGVlZHMgdXAgcHJvdG90eXBpbmcuCgo8ZGV0YWlscz4KPHN1bW1hcnk+RWRpdCB0aGUgY29kZSB0byBkZWZpbmUgY3VzdG9tIGJlaGF2aW9yIGFuZCByZXNwb25zZXM8L3N1bW1hcnk+CgpgYGB0cwovLyAuL21vY2stYXBpL3JvdXRlcy9zdG9yZS9vcmRlci97b3JkZXJJRH0udHMKaW1wb3J0IHsgT3JkZXIgfSBmcm9tICIuLi8uLi8uLi90eXBlcy9jb21wb25lbnRzL3NjaGVtYXMvT3JkZXIuanMiOwppbXBvcnQgdHlwZSB7IEhUVFBfR0VUIH0gZnJvbSAiLi4vLi4vLi4vdHlwZXMvcGF0aHMvc3RvcmUvb3JkZXIve29yZGVySWR9LnR5cGVzLmpzIjsKaW1wb3J0IHR5cGUgeyBIVFRQX0RFTEVURSB9IGZyb20gIi4uLy4uLy4uL3R5cGVzL3BhdGhzL3N0b3JlL29yZGVyL3tvcmRlcklkfS50eXBlcy5qcyI7CgpleHBvcnQgY29uc3QgR0VUOiBIVFRQX0dFVCA9ICgkKSA9PiB7CiAgY29uc3Qgb3JkZXJzOiBSZWNvcmQ8bnVtYmVyLCBPcmRlcj4gPSB7CiAgICAxOiB7CiAgICAgIHBldElkOiAxMDAsCiAgICAgIHN0YXR1czogInBsYWNlZCIsCiAgICB9LAogICAgMjogewogICAgICBwZXRJZDogOTk5LAogICAgICBzdGF0dXM6ICJhcHByb3ZlZCIsCiAgICB9LAogICAgMzogewogICAgICBwZXRJZDogMTIzNCwKICAgICAgc3RhdHVzOiAiZGVsaXZlcmVkIiwKICAgIH0sCiAgfTsKCiAgY29uc3Qgb3JkZXIgPSBvcmRlcnNbJC5yZXF1ZXN0Lm9yZGVySURdOwoKICBpZiAob3JkZXIgPT09IHVuZGVmaW5lZCkgewogICAgcmV0dXJuICQucmVzcG9uc2VbNDA0XTsKICB9CgogIHJldHVybiAkLnJlc3BvbnNlWzIwMF0uanNvbihvcmRlcik7Cn07CgpleHBvcnQgY29uc3QgREVMRVRFOiBIVFRQX0RFTEVURSA9ICgkKSA9PiB7CiAgcmV0dXJuICQucmVzcG9uc2VbMjAwXTsKfTsKYGBgCgo8L2RldGFpbHM+CgpZb3UgY2FuIGFsc28gKipwcm94eSBzb21lIHBhdGhzIHRvIHRoZSByZWFsIEFQSSoqIHdoaWxlIG1vY2tpbmcgb3RoZXJzIOKAlCBwZXJmZWN0IHdoZW4gcGFydCBvZiB0aGUgYmFja2VuZCBpc27igJl0IGZpbmlzaGVkIG9yIHlvdSBuZWVkIHRvIHNpbXVsYXRlIHRyaWNreSBzY2VuYXJpb3MuIFNlZSBbUHJveHlpbmddKC4vZG9jcy91c2FnZS5tZCNwcm94eWluZy10by1hLXJlYWwtYXBpKSBmb3IgZGV0YWlscy4KClVzZSBgbnB4IGNvdW50ZXJmYWN0IC0taGVscGAgdG8gdmlldyBDTEkgZmxhZ3MgZm9yIGN1c3RvbWl6aW5nIGJlaGF2aW9yIChlLmcuIGAtLXBvcnRgLCBgLS1wcm94eWAsIGAtLXdhdGNoYCkuCgpHbyBmdXJ0aGVyIHdpdGggc3RhdGVmdWwgbW9ja3M6IFBPU1QgZGF0YSwgdGhlbiBHRVQgaXQgYmFjay4gVHdlYWsgYmFja2VuZCBkYXRhIGxpdmUgd2l0aCBhIFJFUEwuIFVwZGF0ZSBjb2RlIHdpdGhvdXQgcmVzdGFydGluZyB0aGUgc2VydmVyIG9yIGxvc2luZyBzdGF0ZS4KCldlIGJlbGlldmUgc3Ryb25nbHkgaW4gQVBJLWZpcnN0IGRldmVsb3BtZW50IGFuZCB0aGUgRGVwZW5kZW5jeSBJbnZlcnNpb24gUHJpbmNpcGxlLiBXaGVuIGZyb250ZW5kIGFuZCBiYWNrZW5kIGltcGxlbWVudCB0aGUgc2FtZSBBUEkgc3BlYywgdGhleSBjYW4gYmUgYnVpbHQgYW5kIHRlc3RlZCBpbmRlcGVuZGVudGx5LiBNb3N0IG9mIHRoZSB0aW1lLCBpdOKAmXMgYmVzdCB0byB0ZXN0IHRoZSBmcm9udCBlbmQgYWdhaW5zdCB0aGUgcmVhbCBBUEkgYW5kIGZ1bGwgc3RhY2suIEJ1dCB0aGVyZSdzIGFsd2F5cyBzb21lIHBhcnQgb2YgdGhlIGJhY2tlbmQgdGhhdCBpc24ndCBmaW5pc2hlZCB5ZXQsIG9yIGEgc2NlbmFyaW8gdGhhdCdzIGN1bWJlcnNvbWUgdG8gcmVwcm9kdWNlLiBGb3IgdGhpcyByZWFzb24sIENvdW50ZXJmYWN0IHN1cHBvcnRzIHByb3h5aW5nIHRvIHRoZSByZWFsIEFQSSBmb3Igc29tZSBwYXRocyBhbmQgdXNpbmcgbW9ja3MgZm9yIG90aGVycy4KCkNvdW50ZXJmYWN0IHdhcyBieSBidWlsdCBhbiBlbmdpbmVlciB3aG8gc3BlbnQgZGVjYWRlcyB3cml0aW5nIGZyb250ZW5kIGNvZGUgYW5kIGdvdCB0aXJlZCBvZiBiZWluZyBzbG93ZWQgZG93biBieSB1bmZpbmlzaGVkIG9yIHVud2llbGR5IGJhY2tlbmQgQVBJcy4gVGhpcyBpcyB0aGUgZmFzdGVzdCB3YXkgdG8gZ2V0IHVuYmxvY2tlZCwgcHJvdG90eXBlIGlkZWFzLCBhbmQgcmVtZW1iZXIgd2hhdCBpdCBmZWVscyBsaWtlIHRvIGVuam95IGNyZWF0aW5nIHN0dWZmLgoKPiBSZXF1aXJlcyBOb2RlIOKJpSAxNy4wLjAKCjxkaXYgYWxpZ249ImNlbnRlciIgbWFya2Rvd249IjEiPgoKW0RvY3VtZW50YXRpb25dKC4vZG9jcy91c2FnZS5tZCkgfCBbQ2hhbmdlbG9nXSguL0NIQU5HRUxPRy5tZCkgfCBbQ29udHJpYnV0aW5nXSguL0NPTlRSSUJVVElORy5tZCkKCjwvZGl2PgoKPGJyPgo8ZGl2IGFsaWduPSJjZW50ZXIiICBtYXJrZG93bj0iMSI+CgohW01JVCBMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWJsdWUpIFshW1R5cGVTY3JpcHRdKC4vdHlwZXNjcmlwdC1iYWRnZS5wbmcpXShodHRwczovL2dpdGh1Yi5jb20vZWxsZXJicm9jay90eXBlc2NyaXB0LWJhZGdlcy8pIFshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvZ2l0aHViL3BtY2VsaGFuZXkvY291bnRlcmZhY3QvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL3BtY2VsaGFuZXkvY291bnRlcmZhY3QpCgo8L2Rpdj4K readmeEtag: '"d9d1d66eb27316e77fead24c60c5e5e753aec596"' readmeLastModified: Sat, 11 Oct 2025 20:06:16 GMT repositoryId: 479515560 description: OpenAPI / Swagger to TypeScript generator and mock server created: '2022-04-08T19:32:15Z' updated: '2026-02-06T02:25:18Z' language: TypeScript archived: false stars: 135 watchers: 4 forks: 17 owner: pmcelhaney logo: https://avatars.githubusercontent.com/u/51504?v=4 license: MIT repoEtag: '"ee3b42e13abd23b75be1b3e6e7339fec212ec58894df3f1e36362148becb45cc"' repoLastModified: Fri, 06 Feb 2026 02:25:18 GMT category: - Mock - SDK - Server Implementations foundInMaster: true name: Counterfact link: https://counterfact.dev language: - TypeScript - Node source_description: >- Counterfact is a revolutionary free and open source mock server. If you have Node installed, all you have to do is run `npx counterfact@latest path-or-url-to-your-openapi-document`. Out of the box, you'll get a mock server that returns random data. With a TypeScript API that's optimized for mocking, you can add more realistic behavior. It supports mix and matching mocks with calls to the real API (sans CORS headaches). With hot reloading and a REPL, you can change things up on the fly. v3_1: true v2: true - source: https://openapi.tools/ name: Atlassian OpenAPI Request Validators category: Testing language: Java link: https://bitbucket.org/atlassian/swagger-request-validator/src/master/ repository: https://bitbucket.org/atlassian/swagger-request-validator/src/master/ v2: true v3: true source_description: >- A set of Java libraries which allow you to integrate OpenAPI Description Document validation into your testing or clients with tools like WireMock/RestAssured/MockMVC/etc... id: 1c4a1d5d85bbfdfa72511b0d14337f06 foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags repository: https://github.com/daveshanley/vacuum v3: true repositoryMetadata: base64Readme: >- IVtsb2dvXShsb2dvLnBuZykKCiMgdmFjdXVtIC0gVGhlIHdvcmxkJ3MgZmFzdGVzdCBPcGVuQVBJICYgU3dhZ2dlciBsaW50ZXIuCgohW2J1aWxkXShodHRwczovL2dpdGh1Yi5jb20vZGF2ZXNoYW5sZXkvdmFjdXVtL3dvcmtmbG93cy9CdWlsZC9iYWRnZS5zdmcpClshW0dvIFJlcG9ydCBDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9kYXZlc2hhbmxleS92YWN1dW0pXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vZGF2ZXNoYW5sZXkvdmFjdXVtKQpbIVtkaXNjb3JkXShodHRwczovL2ltZy5zaGllbGRzLmlvL2Rpc2NvcmQvOTIzMjU4MzYzNTQwODE1OTEyKV0oaHR0cHM6Ly9kaXNjb3JkLmdnL1VBY1VGNzhNUU4pClshW0RvY3NdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZ29kb2MtcmVmZXJlbmNlLTVmYWZkNyldKGh0dHBzOi8tL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9kYXZlc2hhbmxleS92YWN1dW0pClshW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vQHF1b2JpeC92YWN1dW0/c3R5bGU9ZmxhdC1zcXVhcmUmbGFiZWw9bnBtJTIwZG93bmxvYWRzKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHF1b2JpeC92YWN1dW0pClshW0RvY2tlciBQdWxsc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvcHVsbHMvZHNoYW5sZXkvdmFjdXVtP3N0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2RzaGFubGV5L3ZhY3V1bSkKWyFbTWVudGlvbmVkIGluIEF3ZXNvbWUgR29dKGh0dHBzOi8vYXdlc29tZS5yZS9tZW50aW9uZWQtYmFkZ2UtZmxhdC5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vYXZlbGluby9hd2Vzb21lLWdvKQoKQW4gKip1bHRyYS1zdXBlci1mYXN0KiosIGxpZ2h0d2VpZ2h0IE9wZW5BUEkgbGludGVyIGFuZCBxdWFsaXR5IGNoZWNraW5nIHRvb2wsIHdyaXR0ZW4gaW4gZ29sYW5nIGFuZCBpbnNwaXJlZCBieSBbU3BlY3RyYWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9wbGlnaHRpby9zcGVjdHJhbCkuCgpJdCdzICoqZnVsbHkgY29tcGF0aWJsZSoqIHdpdGggZXhpc3RpbmcgW1NwZWN0cmFsXShodHRwczovL2dpdGh1Yi5jb20vc3RvcGxpZ2h0aW8vc3BlY3RyYWwpIHJ1bGVzZXRzLgoKIyMgSW5zdGFsbCB1c2luZyBbaG9tZWJyZXddKGh0dHBzOi8vYnJldy5zaCkgdGFwCgpgYGAKYnJldyBpbnN0YWxsIGRhdmVzaGFubGV5L3ZhY3V1bS92YWN1dW0KYGBgCgojIyBJbnN0YWxsIHVzaW5nIFtucG1dKGh0dHBzOi8vbnBtanMuY29tKQoKYGBgCm5wbSBpIC1nIEBxdW9iaXgvdmFjdXVtCmBgYAoKIyMgSW5zdGFsbCB1c2luZyBbeWFybl0oaHR0cHM6Ly95YXJucGtnLmNvbS8pCgpgYGAKeWFybiBnbG9iYWwgYWRkIEBxdW9iaXgvdmFjdXVtCmBgYAoKIyMgSW5zdGFsbCB1c2luZyBjdXJsCgpgYGBiYXNoCmN1cmwgLWZzU0wgaHR0cHM6Ly9xdW9iaXguY29tL3NjcmlwdHMvaW5zdGFsbF92YWN1dW0uc2ggfCBzaApgYGAKCiMjIyBGb3IgQ0kvQ0QgZW52aXJvbm1lbnRzIAoKVG8gYXZvaWQgR2l0SHViIEFQSSByYXRlIGxpbWl0aW5nIGluIGF1dG9tYXRlZCBlbnZpcm9ubWVudHMsIHNldCBhIEdpdEh1YiB0b2tlbjoKCmBgYGJhc2gKIyBVc2luZyByZXBvc2l0b3J5IHRva2VuIChHaXRIdWIgQWN0aW9ucykKR0lUSFVCX1RPS0VOPSR7eyBzZWNyZXRzLkdJVEhVQl9UT0tFTiB9fSBjdXJsIC1mc1NMIGh0dHBzOi8vcXVvYml4LmNvbS9zY3JpcHRzL2luc3RhbGxfdmFjdXVtLnNoIHwgc2gKCiMgVXNpbmcgcGVyc29uYWwgYWNjZXNzIHRva2VuCkdJVEhVQl9UT0tFTj15b3VyX2dpdGh1Yl90b2tlbiBjdXJsIC1mc1NMIGh0dHBzOi8vcXVvYml4LmNvbS9zY3JpcHRzL2luc3RhbGxfdmFjdXVtLnNoIHwgc2gKYGBgCgojIyMjIEdpdEh1YiBBY3Rpb25zIGV4YW1wbGUKCmBgYHlhbWwKLSBuYW1lOiBJbnN0YWxsIHZhY3V1bQogIGVudjoKICAgIEdJVEhVQl9UT0tFTjogJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19ICAjIEluY3JlYXNlcyByYXRlIGxpbWl0IGZyb20gNjAgdG8gNTAwMCByZXF1ZXN0cy9ob3VyCiAgcnVuOiB8CiAgICBjdXJsIC1mc1NMIGh0dHBzOi8vcXVvYml4LmNvbS9zY3JpcHRzL2luc3RhbGxfdmFjdXVtLnNoIHwgc2gKYGBgCgo+ICoqTm90ZSoqOiBUaGUgR2l0SHViIHRva2VuIHByZXZlbnRzIGludGVybWl0dGVudCBpbnN0YWxsYXRpb24gZmFpbHVyZXMgaW4gQ0kvQ0QgZW52aXJvbm1lbnRzIGNhdXNlZCBieSBBUEkgcmF0ZSBsaW1pdGluZy4gCj4gTm8gYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBhcmUgcmVxdWlyZWQsIHRoZSB0b2tlbiBvbmx5IGFjY2Vzc2VzIHB1YmxpYyByZXBvc2l0b3J5IGluZm9ybWF0aW9uLgoKIyMgSW5zdGFsbCB1c2luZyBbRG9ja2VyXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvZHNoYW5sZXkvdmFjdXVtKQoKVGhlIGltYWdlIGlzIGF2YWlsYWJsZSBhdDogaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2RzaGFubGV5L3ZhY3V1bQoKYGBgCmRvY2tlciBwdWxsIGRzaGFubGV5L3ZhY3V1bQpgYGAKCj4gKipNdWx0aS1wbGF0Zm9ybSBzdXBwb3J0Kio6IERvY2tlciBpbWFnZXMgYXJlIGF2YWlsYWJsZSBmb3IgYm90aCBgbGludXgvYW1kNjRgIGFuZCBgbGludXgvYXJtNjRgIGFyY2hpdGVjdHVyZXMsIGluY2x1ZGluZyBuYXRpdmUgQVJNNjQgc3VwcG9ydCBmb3IgQXBwbGUgU2lsaWNvbiBNYWNzLgoKVG8gcnVuLCBtb3VudCB0aGUgY3VycmVudCB3b3JraW5nIGRpciB0byB0aGUgY29udGFpbmVyIGFuZCB1c2UgYSByZWxhdGl2ZSBwYXRoIHRvIHlvdXIgc3BlYywgbGlrZSBzbwoKYGBgCmRvY2tlciBydW4gLS1ybSAtdiAkUFdEOi93b3JrOnJvIGRzaGFubGV5L3ZhY3V1bSBsaW50IDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPgpgYGAKQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBwdWxsIGl0IGZyb20KW0dpdGh1YiBwYWNrYWdlc10oaHR0cHM6Ly9naXRodWIuY29tL2RhdmVzaGFubGV5L3ZhY3V1bS9wa2dzL2NvbnRhaW5lci92YWN1dW0pLgpUbyBkbyB0aGF0LCByZXBsYWNlIGBkc2hhbmxleS92YWN1dW1gIHdpdGggYGdoY3IuaW8vZGF2ZXNoYW5sZXkvdmFjdXVtYCBpbiB0aGUgYWJvdmUgY29tbWFuZHMuCgojIyBSdW4gd2l0aCBHbwoKSWYgeW91IGhhdmUgZ28gPj0gMS4xNiBpbnN0YWxsZWQsIHlvdSBjYW4gdXNlIGBnbyBydW5gIHRvIGJ1aWxkIGFuZCBydW4gaXQ6CgpgYGAKZ28gcnVuIGdpdGh1Yi5jb20vZGF2ZXNoYW5sZXkvdmFjdXVtQGxhdGVzdCBsaW50IDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPgpgYGAKCi0tLQoKIyMgU3BvbnNvcnMKSWYgeW91ciBjb21wYW55IGlzIHVzaW5nIGB2YWN1dW1gLCBwbGVhc2UgY29uc2lkZXJpbmcgW3N1cHBvcnRpbmcgdGhpcyBwcm9qZWN0XShodHRwczovL2dpdGh1Yi5jb20vc3BvbnNvcnMvZGF2ZXNoYW5sZXkpLApsaWtlIG91ciBfdmVyeSBraW5kXyBzcG9uc29ycywgcGFzdCBhbmQgcHJlc2VudDoKCgo8YSBocmVmPSJodHRwczovL3NwZWFrZWFzeWFwaS5kZXYvP3V0bV9zb3VyY2U9dmFjdXVtK3JlcG8mdXRtX21lZGl1bT1naXRodWIrc3BvbnNvcnNoaXAiPgo8cGljdHVyZT4KICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Ii5naXRodWIvc3BvbnNvcnMvc3BlYWtlYXN5LWdpdGh1Yi1zcG9uc29yLWRhcmsuc3ZnIj4KICA8aW1nIGFsdD0ic3BlYWtlYXN5JyIgc3JjPSIuZ2l0aHViL3Nwb25zb3JzL3NwZWFrZWFzeS1naXRodWItc3BvbnNvci1saWdodC5zdmciPgo8L3BpY3R1cmU+CjwvYT4KCltTcGVha2Vhc3ldKGh0dHBzOi8vc3BlYWtlYXN5YXBpLmRldi8/dXRtX3NvdXJjZT12YWN1dW0rcmVwbyZ1dG1fbWVkaXVtPWdpdGh1YitzcG9uc29yc2hpcCkKCjxhIGhyZWY9Imh0dHBzOi8vc2NhbGFyLmNvbSI+CjxwaWN0dXJlPgogIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iLmdpdGh1Yi9zcG9uc29ycy9zY2FsYXItZGFyay5wbmciPgogIDxpbWcgYWx0PSJzY2FsYXIiIHNyYz0iLmdpdGh1Yi9zcG9uc29ycy9zY2FsYXItbGlnaHQucG5nIj4KPC9waWN0dXJlPgo8L2E+Cgpbc2NhbGFyXShodHRwczovL3NjYWxhci5jb20pCgo8YSBocmVmPSJodHRwczovL2FwaWRlY2suY29tIj4KPHBpY3R1cmU+CiAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSIuZ2l0aHViL3Nwb25zb3JzL2FwaWRlY2stZGFyay5wbmciPgogIDxpbWcgYWx0PSJhcGlkZWNrJyIgc3JjPSIuZ2l0aHViL3Nwb25zb3JzL2FwaWRlY2stbGlnaHQucG5nIj4KPC9waWN0dXJlPgo8L2E+CgpbYXBpZGVja10oaHR0cHM6Ly9hcGlkZWNrLmNvbSkKCi0tLQoKIyMgQ29tZSBjaGF0IHdpdGggdXMKCk5lZWQgaGVscD8gSGF2ZSBhIHF1ZXN0aW9uPyBXYW50IHRvIHNoYXJlIHlvdXIgd29yaz8gW0pvaW4gb3VyIGRpc2NvcmRdKGh0dHBzOi8vZGlzY29yZC5nZy9VQWNVRjc4TVFOKSBhbmQKY29tZSBzYXkgaGkhCgojIyBEb2N1bWVudGF0aW9uCgrwn5SlICoqTmV3IGluKiogYHYwLjIzYCDwn5SlOiAqKk9wZW5BUEkgT3ZlcmxheSBTdXBwb3J0KioKCkV2ZXIgbmVlZGVkIHRvIHR3ZWFrIGFuIE9wZW5BUEkgc3BlYyBmb3IgZGlmZmVyZW50IGVudmlyb25tZW50cyB3aXRob3V0IG1haW50YWluaW5nIG11bHRpcGxlIGNvcGllcz8gCgpNYXliZSBzd2FwIG91dCBzZXJ2ZXIgVVJMcyBiZXR3ZWVuIGRldiwgc3RhZ2luZywgYW5kIHByb2R1Y3Rpb24/IE9yIHBlcmhhcHMgc3RyaXAgb3V0IGludGVybmFsIGVuZHBvaW50cyBiZWZvcmUgcHVibGlzaGluZyB0aGUgQVBJIGRvY3M/CgpPcGVuQVBJIE92ZXJsYXlzIGFyZSB0aGUgYW5zd2VyLiBUaGV5IGxldCB1cyBtYWtlIG5vbi1kZXN0cnVjdGl2ZSBtb2RpZmljYXRpb25zIHRvIHNwZWNzIHVzaW5nIEpTT05QYXRoIGV4cHJlc3Npb25zIHRvIAp0YXJnZXQgZXhhY3RseSB3aGF0IHdlIHdhbnQgdG8gY2hhbmdlLiB2YWNjdW0gbm93IHN1cHBvcnRzIGEgbmV3IGBhcHBseS1vdmVybGF5YCBjb21tYW5kLgoKLSBbTGVhcm4gbW9yZSBhYm91dCB0aGUgYXBwbHktb3ZlcmxheSBjb21tYW5kXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2NvbW1hbmRzL2FwcGx5LW92ZXJsYXkpCgotLS0KCgpgdjAuMjJgOiAqKkFzeW5jIEZ1bmN0aW9ucyAvIFByb21pc2VzLCBGZXRjaCAmIEJhdGNoIG1vZGUgaW4gQ3VzdG9tIEpTIEZ1bmN0aW9ucyoqCgpEbyB5b3Ugd2FudCB0byBjYWxsIHJlbW90ZSBBUElzIGluIHlvdXIgdmFjdXVtIGphdmFzY3JpcHQgZnVuY3Rpb25zPyBXaGF0IGFib3V0IGFzeW5jIHByb2Nlc3Npbmcgb3IgdGhlIGFiaWxpdHkgdG8gdXNlIFByb21pc2VzPwoKdmFjdXVtIG5vdyBoYXMgaXRzIG93biBldmVudCBsb29wIGFuZCB3aWxsIGhhcHBpbHkgc3VwcG9ydCBgYXN5bmNgIGFuZCBgYXdhaXRgLiBDb21iaW5lZCB3aXRoIGEgZnVsbCBpbXBsZW1lbnRhdGlvbiBvZiBbRmV0Y2hdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9GZXRjaF9BUEkpLgoKQWxzbyBhZGRlZCAqKkJhdGNoIE1vZGUqKi4gVGhpcyBhbGxvd3MgY3VzdG9tIGZ1bmN0aW9ucyB0byByZWNlaXZlIHRoZSBlbnRpcmUgbGlzdCBvZiBub2RlcywgaW5zdGVhZCBvZiBmaXJpbmcgdGhlIGZ1bmN0aW9uIApmb3IgZWFjaCByZXN1bHQsIHNvIHlvdSBjYW4gc2VuZCBhbGwgeW91ciBkYXRhIG9mZiB0byBhbiBBUEkgb3IgYW4gTExNLCBhbmQgaGF2ZSB0aGUgYWJpbGl0eSBwYXJzZSBhbmQgcHJvY2VzcyBldmVyeXRoaW5nIGF0IG9uY2UKdnMgaW5kaXZpZHVhbGx5LiAKCi0gW1JlYWQgYWxsIGFib3V0IGFzeW5jIEpTIGZ1bmN0aW9ucyBpbiB2YWN1dW1dKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vYXBpL2N1c3RvbS1qYXZhc2NyaXB0LWZ1bmN0aW9ucy8jYXN5bmMtZnVuY3Rpb25zLS1wcm9taXNlcykKLSBbTGVhcm4gYWJvdXQgdXNpbmcgZmV0Y2ggaW4gdmFjdXVtXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2FwaS9jdXN0b20tamF2YXNjcmlwdC1mdW5jdGlvbnMvI2ZldGNoLWFwaSkKLSBbZmluZCBvdXQgaG93IGJhdGNoIG1vZGUgd29ya3NdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vYXBpL2N1c3RvbS1qYXZhc2NyaXB0LWZ1bmN0aW9ucy8jYmF0Y2gtbW9kZS1wcm9jZXNzaW5nKQoKLS0tCgpgdjAuMjFgOiAqKkNoYW5nZSBkZXRlY3Rpb24gZmlsdGVyaW5nKioKCldhbnQgdG8gc2VlIGxpbnRpbmcgcmVzdWx0cyBvbiAqKmp1c3QqKiB0aGUgY2hhbmdlcyB5b3UgaGF2ZSBtYWRlIHRvIGFuIE9wZW5BUEkgZG9jdW1lbnQ/IE9yIHdhbnQgdG8gc2VlIGp1c3QgdGhlIHJlc3VsdHMgb24gdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdHdvIGRvY3VtZW50cz8gCmNvbWVzIHdpdGggYSAqKndoYXQgY2hhbmdlZCoqIG1vZGUuIFVzaW5nIHRoZSBuZXcgYC0tb3JpZ2luYWxgIGFuZCBgLS1jaGFuZ2VzLXN1bW1hcnlgIGdsb2JhbCBmbGFncywgeW91IGNhbiBmaWx0ZXIgb3V0IGFsbCB0aGUgbm9pc2UuIAoKW2RvY3VtZW50YXRpb24gZm9yIGNoYW5nZSBkZXRlY3Rpb25dKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vY29tbWFuZHMvY2hhbmdlLWRldGVjdGlvbi8pIGlzIGF2YWlsYWJsZSB0byBsZWFybiBtb3JlLgoKdmFjdXVtIG5vdyBzdXBwb3J0cyBbSlNPTiBQYXRoIFBsdXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9KU09OUGF0aC1QbHVzL0pTT05QYXRoKSBhbm5vdGF0aW9ucy4gVGhpcyBtZWFucyB0aGF0IHZhY3V1bSBpcyAKY29tcGxpYW50IHdpdGggKipBbGwgU3BlY3RyYWwgUGF0aHMqKi4gT25lIG9mIHRoZSBsYXN0IHJlbWFpbmluZyBnYXBzIGJldHdlZW4gdmFjdXVtIGFuZCBzcGVjdHJhbCBoYXMgYmVlbiBjbG9zZWQuIAoKW1NlZSBhbGwgdGhlIG5ld2x5IHN1cHBvcnRlZCBhbm5vdGF0aW9uc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlc2V0cy9jdXN0b20tcnVsZXNldHMvI2FuYXRvbXktb2YtYS1ydWxlKQoKLS0tCgpgdjAuMjBgOiAqKlN1cHBvcnQgZm9yIGF1dG8gZml4aW5nIGN1c3RvbSBydWxlcyoqCgpHb3Qgc29tZSBydWxlcyB0aGF0IGRvbid0IHJlYWxseSBuZWVkIGEgaHVtYW4gdG8gbG9vayBhdD8KCldlbGwgbm93IHlvdSBjYW4gZGVmaW5lIGFuIGBBdXRvRml4RnVuY3Rpb25gIGZvciB5b3VyIHJ1bGVzLCBhbmQgd2hlbiB5b3UgcnVuIHdpdGggdGhlIGAtLWZpeGAgZmxhZywgdGhlIGZpeGVzIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgZmlsZSwgb3IgdXNlIGAtLWZpeC1maWxlYCB0byB3cml0ZSB0aGVtIHRvIGEgZGlmZmVyZW50IGZpbGUuCgpTZWUgW0F1dG8tRml4aW5nIFJ1bGUgVmlvbGF0aW9uc10oI2F1dG8tZml4aW5nLXJ1bGUtdmlvbGF0aW9ucykgZm9yIG1vcmUgc3BlY2lmaWNzLgoKLS0tCgpgdjAuMTlgOiAqKklnbm9yZSBydWxlcyB3aXRoIGB4LWxpbnQtaWdub3JlYCoqCgpHb3QgYW4gZXJyb3IgaW4geW91ciBzcGVjIHlvdSBrbm93IGFib3V0IGJ1dCBjYW4ndCBnZXQgcm91bmQgdG8gZml4aW5nIHlldD8KTWlncmF0aW5nIGZyb20gemFsbHkgYW5kIHdhbnRpbmcgdG8ga2VlcCB5b3VyIGV4aXN0aW5nIGB4LXphbGx5LWlnbm9yZWAgaXNzdWVzIHNpbGVuY2VkPwoKTm93IHlvdSBjYW4hIEp1c3QgYWRkIGB4LWxpbnQtaWdub3JlOiBydWxlLWlkYCB0byB0aGUgeWFtbCBub2RlIHJlcG9ydGluZyB0aGUgZmFpbHVyZSAob3IgYHgtbGludC1pZ25vcmU6IFtydWxlLW9uZSwgcnVsZS10d29dYCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgaXNzdWVzIHRvIGlnbm9yZSkuCgotLS0KCmB2MC4xOGA6ICoqTmV3IGRhc2hib2FyZCwgbmV3IGxpbnQgY29tbWFuZCwgbmV3IHJ1bGVzISoqLgoKVXBncmFkZXMgYWxsIGFyb3VuZC4gVGhlcmUgaXMgYSBjb21wbGV0ZWx5IG5ldyBgZGFzaGJvYXJkYCBjb21tYW5kIHdpdGggYSBjb21wbGV0ZWx5IG5ldyBkYXNoYm9hcmQgdGVybWluYWwgVUkuIEl0J3MgCmNvbXBsZXRlbHkgaW50ZXJhY3RpdmUgYW5kIGFsbG93cyB5b3UgdG8gZXhwbG9yZSwgYW5kIGZpbHRlciB2aW9sYXRpb25zLCB2aWV3IGZ1bGwgZG9jcyBhbmQgc2VlIGNvZGUuIFRoZSBgZGFzaGJvYXJkYCBjb21tYW5kCmFsc28gYWRkcyBhIG5ldyBgLXdgIC8gYC0td2F0Y2hgIGZsYWcgdGhhdCB3aWxsIHdhdGNoIHlvdXIgT3BlbkFQSSBmaWxlIGZvciBjaGFuZ2VzIGFuZCByZS1saW50IGFuZCByZS1yZW5kZXIgcmVzdWx0cyBhdXRvbWF0aWNhbGx5LgoKQSByZS13cml0dGVuIGBsaW50YCBjb21tYW5kIHRoYXQgaGFzIGEgd2hvbGUgbmV3IHJlbmRlcmluZyBlbmdpbmUgYW5kIG91dHB1dC4gRXZlcnl0aGluZyBpcyBtdWNoIG1vcmUgcmVhZGFibGUsIAplYXNpZXIgdG8gc2VlIG9uIGEgc2NyZWVuLCBtYXRjaGVzIHRoZSBuZXcgYGRhc2hib2FyZGAgc3R5bGUuIEl0J3MgMTAwJSBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoIHByZXZpb3VzIHZlcnNpb25zLCBhbGwgZmxhZ3MgYXMgdGhleSB3ZXJlLiAKCk5ldyBydWxlczoKCiAtIFtuby1yZXF1ZXN0LWJvZHldKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXMvb3BlcmF0aW9ucy9uby1yZXF1ZXN0LWJvZHkvKSAtIEVuc3VyZXMgYEdFVGAgYW5kIGBERUxFVEVgIG9wZXJhdGlvbnMgZG8gbm90IGhhdmUgcmVxdWVzdCBib2RpZXMuCiAtIFtkdXBsaWNhdGUtcGF0aHNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXMvb3BlcmF0aW9ucy9kdXBsaWNhdGUtcGF0aHMvKSAtIEVuc3VyZXMgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBwYXRocyBleGlzdAogLSBbbm8tdW5uZWNlc3NhcnktY29tYmluYXRvcl0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlcy9zY2hlbWFzL25vLXVubmVjZXNzYXJ5LWNvbWJpbmF0b3IvKSAtIEVuc3VyZXMgbm8gYGFsbE9mYCwgYG9uZU9mYCBvciBgYW55T2ZgIGNvbWJpbmF0b3JzIGV4aXN0IHdpdGggYSBzaW5nbGUgc2NoZW1hIGluc2lkZSB0aGVtLgogLSBbY2FtZWwtY2FzZS1wcm9wZXJ0aWVzXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzL3NjaGVtYXMvY2FtZWwtY2FzZS1wcm9wZXJ0aWVzLykgLSBFbnN1cmVzIGFsbCBzY2hlbWEgcHJvcGVydGllcyBhcmUgYGNhbWVsQ2FzZWAuCgotLS0KCmB2MC4xN2A6ICoqR2l0aHViIEFjdGlvbioqLgoKdmFjdXVtIG5vdyBoYXMgYW4gb2ZmaWNpYWwgR2l0aHViIEFjdGlvbi4gW1JlYWQgdGhlIGRvY3NdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vZ2l0aHViLWFjdGlvbi8pLCBvciBjaGVjayBpdCBvdXQKaW4gdGhlIFtHaXRIdWIgTWFya2V0cGxhY2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZXRwbGFjZS9hY3Rpb25zL3ZhY3V1bS1vcGVuYXBpLWxpbnRlci1hbmQtcXVhbGl0eS1hbmFseXNpcy10b29sKS4KCi0tLQoKCmB2MC4xNi4xMWA6ICoqQ29tcG9zZWQgYnVuZGxpbmcgbW9kZSoqLgoKQSBkaWZmZXJlbnQgd2F5IHRvIGJ1bmRsZSBleHBsb2RlZCBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGludG8gYSBzaW5nbGUgZmlsZS4gW1JlYWQgdGhlIGRvY3NdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vY29tbWFuZHMvYnVuZGxlLykuCgotLS0KCmB2MC4xNitgIDogKipSRkMgOTUzNSBDb21wbGlhbnQqKi4KCmB2MC4yMStgIDogKipKU09OIFBhdGggUGx1cyBTdXBwb3J0KiouCgp2YWN1dW0gbm93IHN1cHBvcnRzIGJvdGggW1JGQyA5NTM1XShodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjOTUzNSkgSlNPTlBhdGggYW5kICoqSlNPTiBQYXRoIFBsdXMqKiBleHRlbnNpb25zIC0gZnVsbCBTcGVjdHJhbCBjb21wYXRpYmlsaXR5IQoKLS0tCgpgdjAuMTUrYDogKipGaXhlcywgTmV3IFJ1bGVzLCBGdW5jdGlvbnMgYW5kIENvbW1hbmQqKi4KClRoZXJlIGlzIGEgbmV3IGNvbW1hbmQgYGdlbmVyYXRlLWlnbm9yZWZpbGVgIHRoYXQgd2lsbCBnZW5lcmF0ZSBhbiBpZ25vcmUgZmlsZSBmcm9tIGEgbGludGluZyByZXBvcnQuCgpOZXcgcnVsZSBgbm8tcmVxdWVzdC1ib2R5YCBjaGVja3MgZm9yIGluY29ycmVjdCByZXF1ZXN0IGJvZGllcyBpbiBvcGVyYXRpb25zLCBhbmQgYHBhdGgtaXRlbS1yZWZzYCBjaGVja3MgZm9yCiRyZWZzIGJlaW5nIHVzZWQgaW4gcGF0aCBpdGVtcy4KCi0tLQoKIyMjIFtRdWljayBTdGFydCBHdWlkZSDwn5qAXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3N0YXJ0KQoKU2VlIGFsbCB0aGUgZG9jdW1lbnRhdGlvbiBhdCBodHRwczovL3F1b2JpeC5jb20vdmFjdXVtCgotIFtJbnN0YWxsaW5nIHZhY3V1bV0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9pbnN0YWxsaW5nLykKLSBbQWJvdXQgdmFjdXVtXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2Fib3V0LykKLSBbV2h5IHNob3VsZCB5b3UgY2FyZT9dKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vd2h5LykKLSBbQ29uY2VwdHNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vY29uY2VwdHMvKQotIFtGQVFdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vZmFxLykKLSBbQ0xJIENvbW1hbmRzXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2NvbW1hbmRzLykKICAtIFtsaW50XShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2NvbW1hbmRzL2xpbnQvKQogIC0gW3ZhY3V1bSByZXBvcnRdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vY29tbWFuZHMvcmVwb3J0LykKICAtIFtkYXNoYm9hcmRdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vY29tbWFuZHMvZGFzaGJvYXJkLykKICAtIFtodG1sLXJlcG9ydF0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9jb21tYW5kcy9odG1sLXJlcG9ydC8pCiAgLSBbYnVuZGxlXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2NvbW1hbmRzL2J1bmRsZS8pCiAgLSBbc3BlY3RyYWwtcmVwb3J0XShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2NvbW1hbmRzL3NwZWN0cmFsLXJlcG9ydC8pCiAgLSBbbGFuZ3VhZ2Utc2VydmVyXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2NvbW1hbmRzL2xhbmd1YWdlLXNlcnZlci8pCiAgLSBbYXBwbHktb3ZlcmxheV0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9jb21tYW5kcy9hcHBseS1vdmVybGF5LykKICAtIFtDaGFuZ2UgRGV0ZWN0aW9uXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2NvbW1hbmRzL2NoYW5nZS1kZXRlY3Rpb24vKQotIFtEZXZlbG9wZXIgQVBJXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2FwaS9nZXR0aW5nLXN0YXJ0ZWQvKQogIC0gW1VzaW5nIFRoZSBJbmRleF0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9hcGkvc3BlYy1pbmRleC8pCiAgLSBbUnVsZVJlc3VsdFNldF0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9hcGkvcnVsZS1yZXN1bHRzZXQvKQogIC0gW0xvYWRpbmcgYSBSdWxlU2V0XShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2FwaS9sb2FkaW5nLXJ1bGVzZXQvKQogIC0gW0xpbnRpbmcgTm9uLU9wZW5BUEkgRmlsZXNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vYXBpL25vbi1vcGVuYXBpLykKICAtIFtDdXN0b20gR29sYW5nIEZ1bmN0aW9uc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9hcGkvY3VzdG9tLWZ1bmN0aW9ucy8pCiAgLSBbQ3VzdG9tIEphdmFTY3JpcHQgRnVuY3Rpb25zXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2FwaS9jdXN0b20tamF2YXNjcmlwdC1mdW5jdGlvbnMvKQotIFtSdWxlc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlcy8pCiAgLSBbRXhhbXBsZXNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXMvZXhhbXBsZXMvKQogIC0gW1RhZ3NdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXMvdGFncy8pCiAgLSBbRGVzY3JpcHRpb25zXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzL2Rlc2NyaXB0aW9ucy8pCiAgLSBbU2NoZW1hc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlcy9zY2hlbWFzLykKICAtIFtTcGVjIEluZm9ybWF0aW9uXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzL2luZm9ybWF0aW9uLykKICAtIFtPcGVyYXRpb25zICYgUGF0aHNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXMvb3BlcmF0aW9ucy8pCiAgLSBbVmFsaWRhdGlvbl0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlcy92YWxpZGF0aW9uLykKICAtIFtTZWN1cml0eV0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlcy9zZWN1cml0eS8pCiAgLSBbT1dBU1BdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXMvb3dhc3AvKQotIFtGdW5jdGlvbnNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vZnVuY3Rpb25zLykKICAtIFtDb3JlIEZ1bmN0aW9uc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9mdW5jdGlvbnMvY29yZS8pIAogIC0gW09wZW5BUEkgRnVuY3Rpb25zXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2Z1bmN0aW9ucy9vcGVuYXBpLykKICAtIFtPV0FTUCBGdW5jdGlvbnNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vZnVuY3Rpb25zL293YXNwLykKLSBbVW5kZXJzdGFuZGluZyBSdWxlU2V0c10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlc2V0cy91bmRlcnN0YW5kaW5nLykKICAtIFtTaGFyaW5nIFJ1bGVTZXRzXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzZXRzL3NoYXJpbmcvKQogIC0gW0FsbCBSdWxlc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlc2V0cy9hbGwvKQogIC0gW05vIFJ1bGVzXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzZXRzL25vLXJ1bGVzLykKICAtIFtSZWNvbW1lbmRlZCBSdWxlc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlc2V0cy9yZWNvbW1lbmRlZC8pCiAgLSBbQ3VzdG9tIFJ1bGVzXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzZXRzL2N1c3RvbS1ydWxlc2V0cy8pCgotLS0KCj4gKip2YWN1dW0gY2FuIHN1Y2sgYWxsIHRoZSBsaW50IG9mIGEgNW1iIE9wZW5BUEkgc3BlYyBpbiBtaWxsaXNlY29uZHMuKioKCkRlc2lnbmVkIHRvIHJlbGlhYmx5IGxpbnQgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucywgKip2ZXJ5LCB2ZXJ5IHF1aWNrbHkqKi4gSW5jbHVkaW5nIF92ZXJ5IGxhcmdlXyBvbmVzLiBTcGVjdHJhbCBjYW4gYmUgcXVpdGUgc2xvdwp3aGVuIHVzZWQgYXMgYW4gQVBJIGFuZCBkb2VzIG5vdCBzY2FsZSBmb3IgZW50ZXJwcmlzZSBhcHBsaWNhdGlvbnMuCgp2YWN1dW0gd2lsbCB0ZWxsIHlvdSB3aGF0IGlzIHdyb25nIHdpdGggeW91ciBzcGVjLCB3aHksIHdoZXJlLCBhbmQgaG93IHRvIGZpeCBpdC4gCgp2YWN1dW0gd2lsbCB3b3JrIGF0IHNjYWxlIGFuZCBpcyBkZXNpZ25lZCBhcyBhIENMSSAod2l0aCBhIHdlYiBvciBjb25zb2xlIFVJKSBhbmQgYSBsaWJyYXJ5IHRvIGJlIGNvbnN1bWVkIGluIG90aGVyIGFwcGxpY2F0aW9ucy4KCiMjIyBEYXNoYm9hcmQKCnZhY3V1bSBjb21lcyB3aXRoIGFuIGludGVyYWN0aXZlIGRhc2hib2FyZCAoYHZhY3V1bSBkYXNoYm9hcmQgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWw+YCkgYWxsb3dpbmcgeW91IHRvIGV4cGxvcmUKcnVsZXMgYW5kIHZpb2xhdGlvbnMgaW4gYSBjb25zb2xlLCB3aXRob3V0IGhhdmluZyB0byBzY3JvbGwgdGhyb3VnaCB0aG91c2FuZHMgb2YgcmVzdWx0cy4KCjxhIGhyZWY9Imh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vY29tbWFuZHMvZGFzaGJvYXJkLyI+CjxwaWN0dXJlPgogIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iLmdpdGh1Yi9hc3NldHMvZGFzaGJvYXJkLmdpZiI+CiAgPGltZyBhbHQ9InNwZWFrZWFzeSciIHNyYz0iLmdpdGh1Yi9zcG9uc29ycy9zcGVha2Vhc3ktZ2l0aHViLXNwb25zb3ItbGlnaHQuc3ZnIj4KPC9waWN0dXJlPgo8L2E+CgpUbyByZWFkIGFib3V0IHRoZSBkYXNoYm9hcmQsIHNlZSB0aGUgW2Rhc2hib2FyZCBjb21tYW5kIGRvY3NdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vY29tbWFuZHMvZGFzaGJvYXJkLykuCgojIyMgSFRNTCBSZXBvcnQKCnZhY3V1bSBjYW4gZ2VuZXJhdGUgYW4gZWFzeSB0byBuYXZpZ2F0ZSBhbmQgdW5kZXJzdGFuZCBIVE1MIHJlcG9ydC4gTGlrZSB0aGUgZGFzaGJvYXJkCnlvdSBjYW4gZXhwbG9yZSBicm9rZW4gcnVsZXMgYW5kIHZpb2xhdGlvbnMsIGJ1dCBpbiB5b3VyIGJyb3dzZXIuCgpObyBleHRlcm5hbCBkZXBlbmRlbmNpZXMsIHRoZSBIVE1MIHJlcG9ydCB3aWxsIHJ1biBjb21wbGV0ZWx5IG9mZmxpbmUuCgohW3ZhY3V1bSBodG1sLXJlcG9ydF0oaHRtbC1yZXBvcnQtc2NyZWVuc2hvdC5wbmcpCgotLS0KCj4gKipfU3VwcG9ydHMgT3BlbkFQSSBWZXJzaW9uIDIgKFN3YWdnZXIpIGFuZCBWZXJzaW9uIDMrXyoqCgpZb3UgY2FuIHVzZSBlaXRoZXIgKipZQU1MKiogb3IgKipKU09OKiosIHZhY3V1bSBzdXBwb3J0cyBib3RoIGZvcm1hdHMuCgojIyBVc2luZyB2YWN1dW0gd2l0aCBwcmUtY29tbWl0CgpWYWN1dW0gY2FuIGJlIHVzZWQgd2l0aCBbcHJlLWNvbW1pdF0oaHR0cHM6Ly9wcmUtY29tbWl0LmNvbSkuCgpUbyBkbyB0aGF0LCBhZGQgdG8geW91ciBgLnByZS1jb21taXQtY29uZmlnLnlhbWxgOgoKYGBgeWFtbApyZXBvczoKICAtIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZlc2hhbmxleS92YWN1dW0KICAgIHJldjogIyBhIHRhZyBvciBhIGNvbW1pdCBoYXNoIGZyb20gdGhpcyByZXBvLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2RhdmVzaGFubGV5L3ZhY3V1bS9yZWxlYXNlcwogICAgaG9va3M6CiAgICAgIC0gaWQ6IHZhY3V1bQpgYGAKClNlZSB0aGUgW2hvb2sgZGVmaW5pdGlvbl0oLi8ucHJlLWNvbW1pdC1ob29rcy55YW1sKSBoZXJlIGZvciBkZXRhaWxzIG9uIHdoYXQgb3B0aW9ucyB0aGUgaG9vayB1c2VzIGFuZCB3aGF0IGZpbGVzIGl0IGNoZWNrcyBieSBkZWZhdWx0LgoKSWYgbm8gZmlsZW5hbWVzIG9yIG1vcmUgdGhhbiBvbmUgZmlsZW5hbWUgaW4geW91ciByZXBvc2l0b3J5IG1hdGNoZXMgdGhlIGRlZmF1bHQgYGZpbGVzYCBwYXR0ZXJuIGluIHRoZSBob29rIGRlZmluaXRpb24sCnRoZSBwYXR0ZXJuIG5lZWRzIHRvIGJlIG92ZXJyaWRkZW4gaW4geW91ciBjb25maWcgc28gdGhhdCBpdCBtYXRjaGVzIGV4YWN0bHkgb25lIGZpbGVuYW1lIHRvIGxpbnQgYXQgYSB0aW1lLgpUbyBsaW50IG11bHRpcGxlIGZpbGVzLCBzcGVjaWZ5IHRoZSBob29rIG11bHRpcGxlIHRpbWVzIHdpdGggdGhlIGFwcHJvcHJpYXRlIG92ZXJyaWRlcy4KCiMjIEJ1aWxkIGFuIGludGVyYWN0aXZlIEhUTUwgcmVwb3J0IAoKYGBgCi4vdmFjdXVtIGh0bWwtcmVwb3J0IDx5b3VyLW9wZW5hcGktc3BlYy55YW1sIHwgdmFjdXVtLXJlcG9ydC5qc29uLmd6PiA8cmVwb3J0LW5hbWUuaHRtbD4KYGBgCgpZb3UgY2FuIHJlcGxhY2UgYHJlcG9ydC1uYW1lLmh0bWxgIHdpdGggeW91ciBvd24gY2hvaWNlIG9mIGZpbGVuYW1lLiBPcGVuIHRoZSByZXBvcnQKaW4geW91ciBmYXZvcml0ZSBicm93c2VyIGFuZCBleHBsb3JlIHRoZSByZXN1bHRzLiAKCgojIyBTZWUgZnVsbCBsaW50aW5nIHJlcG9ydCAKCmBgYAouL3ZhY3V1bSBsaW50IC1kIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPgpgYGAKCgojIyBMaW50IG11bHRpcGxlIGZpbGVzIGF0IG9uY2UKCmBgYAouL3ZhY3V1bSBsaW50IC1kIDxzcGVjMS55YW1sPiA8c3BlYzIueWFtbD4gPHNwZWMzLnlhbWw+CmBgYAoKIyMgTGludCBtdWx0aXBsZSBmaWxlcyB1c2luZyBhIGdsb2IgcGF0dGVybgoKYGBgCi4vdmFjdXVtIGxpbnQgLWQgc29tZS9wYXRoLyoqLyoueWFtbApgYGAKCiMjIFNlZSBmdWxsIGxpbnRpbmcgcmVwb3J0IHdpdGggaW5saW5lIGNvZGUgc25pcHBldHMKCmBgYAouL3ZhY3V1bSBsaW50IC1kIC1zIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPgpgYGAKCiMjIFNlZSBqdXN0IHRoZSBsaW50aW5nIGVycm9ycwoKYGBgCi4vdmFjdXVtIGxpbnQgLWQgLWUgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWw+CmBgYAoKIyMgU2VlIGp1c3QgYSBzcGVjaWZpYyBjYXRlZ29yeSBvZiByZXBvcnQKCgpgYGAKLi92YWN1dW0gbGludCAtZCAtYyBzY2hlbWFzIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPgpgYGAKClRoZSBvcHRpb25zIGhlcmUgYXJlOgoKLSBgZXhhbXBsZXNgCi0gYG9wZXJhdGlvbnNgCi0gYGluZm9ybWF0aW9uYAotIGBkZXNjcmlwdGlvbnNgCi0gYHNjaGVtYXNgCi0gYHNlY3VyaXR5YAotIGB0YWdzYAotIGB2YWxpZGF0aW9uYAotIGBvd2FzcGAKCiMjIEdlbmVyYXRlIGEgU3BlY3RyYWwgY29tcGF0aWJsZSByZXBvcnQKCklmIHlvdSdyZSBhbHJlYWR5IHVzaW5nIFNwZWN0cmFsIEpTT04gcmVwb3J0cywgYW5kIHlvdSB3YW50IHRvIHVzZSB2YWN1dW0gaW5zdGVhZCwgdXNlIHRoZSBgc3BlY3RyYWwtcmVwb3J0YCBjb21tYW5kCgpgYGAKLi92YWN1dW0gc3BlY3RyYWwtcmVwb3J0IDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPiA8cmVwb3J0LW91dHB1dC1uYW1lLmpzb24+CmBgYAoKVGhlIHJlcG9ydCBmaWxlIG5hbWUgaXMgX29wdGlvbmFsXy4gVGhlIGRlZmF1bHQgcmVwb3J0IG91dHB1dCBuYW1lIGlzIGB2YWN1dW0tc3BlY3RyYWwtcmVwb3J0Lmpzb25gCgoKIyMgR2VuZXJhdGUgYSBgdmFjdXVtIHJlcG9ydGAKClZhY3V1bSByZXBvcnRzIGFyZSBjb21wbGV0ZSBzbmFwc2hvdHMgaW4gdGltZSBvZiBhIGxpbnRpbmcgcmVwb3J0IGZvciBhIHNwZWNpZmljYXRpb24uIFRoZXNlIHJlcG9ydHMgY2FuIGJlICdyZXBsYXllZCcgCmJhY2sgdGhyb3VnaCB2YWN1dW0uIFVzZSB0aGUgYGRhc2hib2FyZGAgb3IgdGhlIGBodG1sLXJlcG9ydGAgY29tbWFuZHMgdG8gJ3JlcGxheScgdGhlIHJlcG9ydCBhbmQgZXhwbG9yZSB0aGUgcmVzdWx0cwphcyB0aGV5IHdlcmUgd2hlbiB0aGUgcmVwb3J0IHdhcyBnZW5lcmF0ZWQuCgpgYGAKLi92YWN1dW0gcmVwb3J0IC1jIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPiA8cmVwb3J0LXByZWZpeD4KYGBgCgpUaGUgZGVmYXVsdCBuYW1lIG9mIHRoZSByZXBvcnQgd2lsbCBiZSBgdmFjdXVtLXJlcG9ydC1NTS1ERC1ZWS1ISF9NTV9TUy5qc29uYC4gWW91IGNhbiBjaGFuZ2UgdGhlIHByZWZpeCBieSBzdXBwbHlpbmcKaXQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgYHJlcG9ydGAgY29tbWFuZC4gCgpJZGVhbGx5LCAqKnlvdSBzaG91bGQgY29tcHJlc3MgdGhlIHJlcG9ydCB1c2luZyBgLWNgKiouIFRoaXMgc2hyaW5rcyBkb3duIHRoZSBzaXplIHNpZ25pZmljYW50bHkuIHZhY3V1bSBhdXRvbWF0aWNhbGx5CnJlY29nbml6ZXMgYSBjb21wcmVzc2VkIHJlcG9ydCBmaWxlIGFuZCB3aWxsIGRlYWwgd2l0aCBpdCBhdXRvbWF0aWNhbGx5IHdoZW4gcmVhZGluZy4KCj4gV2hlbiB1c2luZyBjb21wcmVzc2lvbiwgdGhlIGZpbGUgbmFtZSB3aWxsIGJlIGB2YWN1dW0tcmVwb3J0LU1NLURELVlZLUhIX01NX1NTLmpzb24uZ3pgLiB2YWN1dW0gdXNlcyBnemlwIGludGVybmFsbHkuCgojIyBJZ25vcmluZyBzcGVjaWZpYyBsaW50aW5nIGVycm9ycwoKWW91IGNhbiBpZ25vcmUgc3BlY2lmaWMgbGludGluZyBlcnJvcnMgYnkgcHJvdmlkaW5nIGFuIGAtLWlnbm9yZS1maWxlYCBhcmd1bWVudCB0byB0aGUgYGxpbnRgIGFuZCBgcmVwb3J0YCBjb21tYW5kcy4KCmBgYAouL3ZhY3V1bSBsaW50IC0taWdub3JlLWZpbGUgPHBhdGgtdG8taWdub3JlLWZpbGUueWFtbD4gLWQgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWw+CmBgYAoKYGBgCi4vdmFjdXVtIHJlcG9ydCAtLWlnbm9yZS1maWxlIDxwYXRoLXRvLWlnbm9yZS1maWxlLnlhbWw+IC1jIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPiA8cmVwb3J0LXByZWZpeD4KYGBgCgpUaGUgaWdub3JlLWZpbGUgc2hvdWxkIHBvaW50IHRvIGEgLnlhbWwgZmlsZSB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZiBlcnJvcnMgdG8gYmUgaWdub3JlZCBieSB2YWN1dW0uIFRoZSBzdHJ1Y3R1cmUgb2YgdGhlCnlhbWwgZmlsZSBpcyBhcyBmb2xsb3dzOgoKYGBgCjxydWxlLWlkLTE+OgogIC0gPGpzb25fcGF0aF90b19lcnJvcl9vcl93YXJuaW5nXzE+CiAgLSA8anNvbl9wYXRoX3RvX2Vycm9yX29yX3dhcm5pbmdfMj4KPHJ1bGUtaWQtMj46CiAgLSA8anNvbl9wYXRoX3RvX2Vycm9yX29yX3dhcm5pbmdfMT4KICAtIDxqc29uX3BhdGhfdG9fZXJyb3Jfb3Jfd2FybmluZ18yPgogIC4uLgpgYGAKCklnbm9yaW5nIGVycm9ycyBpcyB1c2VmdWwgZm9yIHdoZW4geW91IHdhbnQgdG8gaW1wbGVtZW50IG5ldyBydWxlcyB0byBleGlzdGluZyBwcm9kdWN0aW9uIEFQSXMuIEluIHNvbWUgY2FzZXMsIApjb3JyZWN0aW5nIHRoZSBsaW50IGVycm9ycyB3b3VsZCByZXN1bHQgaW4gYSBicmVha2luZyBjaGFuZ2UuIEhhdmluZyBhIHdheSB0byBpZ25vcmUgdGhlc2UgZXJyb3JzIGFsbG93cyB5b3UgdG8gaW1wbGVtZW50CnRoZSBuZXcgcnVsZXMgZm9yIG5ldyBBUElzIHdoaWxlIG1haW50YWluaW5nIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBleGlzdGluZyBvbmVzLgoKLS0tCgojIyBUcnkgb3V0IHRoZSBkYXNoYm9hcmQKClRoaXMgaXMgYW4gZWFybHksIGJ1dCB3b3JraW5nIGNvbnNvbGUgVUkgZm9yIHZhY3V1bS4gVGhlIGNvZGUgaXNuJ3QgZ3JlYXQsIGl0IG5lZWRzIGEgbG90IG9mIGNsZWFuIHVwLCBidXQKaWYgeW91J3JlIGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyB0aGluZ3MgYXJlIHByb2dyZXNzaW5nLCBpdCdzIGF2YWlsYWJsZS4KCmBgYAouL3ZhY3V1bSBkYXNoYm9hcmQgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWwgfCB2YWN1dW0tcmVwb3J0Lmpzb24uZ3o+CmBgYAoKLS0tCiMjIFN1cHBseSB5b3VyIG93biBTcGVjdHJhbCBjb21wYXRpYmxlIHJ1bGVzZXQKCklmIHlvdSdyZSBhbHJlYWR5IHVzaW5nIFNwZWN0cmFsIGFuZCB5b3UgaGF2ZSB5b3VyIG93biBbY3VzdG9tIHJ1bGVzZXRdKGh0dHBzOi8vbWV0YS5zdG9wbGlnaHQuaW8vZG9jcy9zcGVjdHJhbC9lNWI5NjE2ZDZkNTBjLWN1c3RvbS1ydWxlc2V0cyNjdXN0b20tcnVsZXNldHMpLAp0aGVuIHlvdSBjYW4gdXNlIGl0IHdpdGggdmFjdXVtISAKClRoZSBgbGludGAsIGBkYXNoYm9hcmRgIGFuZCBgc3BlY3RyYWwtcmVwb3J0YCBjb21tYW5kcyBhbGwgYWNjZXB0IGEgYC1yYCBvciBgLS1ydWxlc2V0YCBmbGFnLCBkZWZpbmluZyB0aGUgcGF0aCB0byB5b3VyIHJ1bGVzZXQgZmlsZS4KCiMjIyBIZXJlIGFyZSBzb21lIGV4YW1wbGVzIHlvdSBjYW4gdHJ5CgoqKl9BbGwgcnVsZXMgdHVybmVkIG9mZl8qKgpgYGAKLi92YWN1dW0gbGludCAtciBydWxlc2V0cy9leGFtcGxlcy9ub3J1bGVzLXJ1bGVzZXQueWFtbCA8eW91ci1vcGVuYXBpLXNwZWMueWFtbD4KYGBgCgoqKl9Pbmx5IHJlY29tbWVuZGVkIHJ1bGVzXyoqCmBgYAouL3ZhY3V1bSBsaW50IC1yIHJ1bGVzZXRzL2V4YW1wbGVzL3JlY29tbWVuZGVkLXJ1bGVzZXQueWFtbCA8eW91ci1vcGVuYXBpLXNwZWMueWFtbD4KYGBgCgoqKl9FbmFibGUgc3BlY2lmaWMgcnVsZXMgb25seV8qKgpgYGAKLi92YWN1dW0gbGludCAtciBydWxlc2V0cy9leGFtcGxlcy9zcGVjaWZpYy1ydWxlc2V0LnlhbWwgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWw+CmBgYAoKKipfQ3VzdG9tIHJ1bGVzXyoqCmBgYAouL3ZhY3V1bSBsaW50IC1yIHJ1bGVzZXRzL2V4YW1wbGVzL2N1c3RvbS1ydWxlc2V0LnlhbWwgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWw+CmBgYAoKKipfQWxsIHJ1bGVzLCBhbGwgb2YgdGhlbSEqKgpgYGAKLi92YWN1dW0gbGludCAtciBydWxlc2V0cy9leGFtcGxlcy9hbGwtcnVsZXNldC55YW1sIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPgpgYGAKCi0tLQoKIyMgQ29uZmlndXJhdGlvbgoKIyMjIEZpbGUKWW91IGNhbiBjb25maWd1cmUgdmFjdXVtIHVzaW5nIGEgY29uZmlndXJhdGlvbiBmaWxlIG5hbWVkIGB2YWN1dW0uY29uZi55YW1sYAoKQnkgZGVmYXVsdCwgdmFjdXVtIHNlYXJjaGVzIGZvciB0aGlzIGZpbGUgaW4gdGhlIGZvbGxvd2luZyBkaXJlY3RvcmllcwoxLiBXb3JraW5nIGRpcmVjdG9yeQoyLiBgJFhER19DT05GSUdfSE9NRWAKMy4gYCR7SE9NRX0vLmNvbmZpZ2AKCllvdSBjYW4gYWxzbyBzcGVjaWZ5IGEgcGF0aCB0byBhIGZpbGUgdXNpbmcgdGhlIGAtLWNvbmZpZ2AgZmxhZwoKR2xvYmFsIGZsYWdzIGFyZSBjb25maWd1cmVkIGFzIHRvcCBsZXZlbCBub2RlcwpgYGB5YW1sCnRpbWU6IHRydWUKYmFzZTogJ2h0dHA6Ly9leGFtcGxlLmNvbScKLi4uCmBgYApDb21tYW5kIHNwZWNpZmljIGZsYWdzIGFyZSBjb25maWd1cmVkIHVuZGVyIGEgbm9kZSB3aXRoIHRoZSBjb21tYW5kcyBuYW1lCmBgYHlhbWwKLi4uCmxpbnQ6CiAgc2lsZW50OiB0cnVlCiAgLi4uCmBgYAoKIyMjIEVudmlyb25tZW50YWwgdmFyaWFibGVzCgpZb3UgY2FuIGNvbmZpZ3VyZSBnbG9iYWwgdmFjdXVtIGZsYWdzIHVzaW5nIGVudmlyb25tZW50YWwgdmFyaWFibGVzIGluIHRoZSBmb3JtIG9mOiBgVkFDVVVNXzxmbGFnPmAKCklmIGEgZmxhZywgaGFzIGEgYC1gIGluIGl0LCByZXBsYWNlIHdpdGggYF9gCgoKIyMgQXV0by1maXhpbmcgcnVsZSB2aW9sYXRpb25zCgpJZiB5b3UgaGF2ZSBhIHJ1bGUgdGhhdCBkb2Vzbid0IG5lZWQgYSBodW1hbiB0byBsb29rIGF0IGl0LCBhbmQgdGhlIGNoYW5nZSBjYW4gYmUgcmVsaWFibHkgYXV0b21hdGVkIHlvdSBjYW4gY29uZmlndXJlIGFuIGBBdXRvRml4RnVuY3Rpb25gIG9uIHRoZSBydWxlLiBXaGVuIHlvdSB0aGVuIHJ1biB0aGUgYGxpbnRgIGNvbW1hbmQgeW91IGNhbiBwYXNzIHRoZSBgLS1maXhgIGZsYWcgYW5kIHRoZSB2aW9sYXRpb24gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGZpeGVkLgoKIyMjIFNldCB1cAoKMS4gRGVmaW5lIGEgcnVsZSB0aGF0IGhhcyBhbiBgYXV0b0ZpeEZ1bmN0aW9uYCwgZS5nLjoKYGBgeWFtbApydWxlczoKICB1c2UtY29tcGF0aWJsZS1leHRlbnNpb25zOgogICAgYXV0b0ZpeEZ1bmN0aW9uOiB1c2VFeHRlbnNpYmxlRW51bQogICAgZGVzY3JpcHRpb246IFByZWZlciBjb21wYXRpYmxlIGV4dGVuc2lvbnMKICAgIGlkOiB1c2UtY29tcGF0aWJsZS1leHRlbnNpb25zCiAgICBnaXZlbjogIiQuY29tcG9uZW50cy5zY2hlbWFzWz9ALmVudW1dIgogICAgc2V2ZXJpdHk6IHdhcm4KICAgIG1lc3NhZ2U6IFVzZSB4LWV4dGVuc2libGUtZW51bSBpbnN0ZWFkIG9mIGVudW0gZm9yIGJldHRlciBjb21wYXRpYmlsaXR5CiAgICB0aGVuOgogICAgICBmaWVsZDogZW51bQogICAgICBmdW5jdGlvbjogZmFsc3kKYGBgCgpUaGlzIHJ1bGUgZmxhZ3MgYW55IHVzYWdlIG9mIGBlbnVtYCBhbmQgcmVjb21tZW5kcyB0aGV5IGFyZSB1cGRhdGVkIHRvIGB4LWV4dGVuc2libGUtZW51bWAuCkEgc2ltcGxlIGNoYW5nZSB3aGljaCBjYW4gYmUgZWFzaWx5IGF1dG8gZml4ZWQhCgoyLiBDcmVhdGUgYSBmdW5jdGlvbiB3aGljaCBwZXJmb3JtcyB0aGUgYXV0by1maXguCmBgYGdvCmZ1bmMgdXNlRXh0ZW5zaWJsZUVudW0oCglub2RlICp5YW1sLk5vZGUsCglkb2N1bWVudCAqeWFtbC5Ob2RlLAoJY29udGV4dCAqbW9kZWwuUnVsZUZ1bmN0aW9uQ29udGV4dCwKKSAoKnlhbWwuTm9kZSwgZXJyb3IpIHsKCWlmIG5vZGUuS2luZCAhPSB5YW1sLk1hcHBpbmdOb2RlIHsKCQlyZXR1cm4gbm9kZSwgbmlsCgl9CgoJZm9yIGkgOj0gMDsgaSA8IGxlbihub2RlLkNvbnRlbnQpOyBpICs9IDIgewoJCWlmIGkrMSA+PSBsZW4obm9kZS5Db250ZW50KSB7CgkJCWJyZWFrCgkJfQoKCQlrZXlOb2RlIDo9IG5vZGUuQ29udGVudFtpXQoKCQlpZiBrZXlOb2RlLlZhbHVlID09ICJlbnVtIiB7CgkJCWtleU5vZGUuVmFsdWUgPSAieC1leHRlbnNpYmxlLWVudW0iCgoJCQlyZXR1cm4gbm9kZSwgbmlsCgkJfQoJfQoKCXJldHVybiBub2RlLCBuaWwKfQpgYGAKCj4gWyFOT1RFXQo+IFRoZSBhdXRvIGZpeCBmdW5jdGlvbiBtdXN0IHNhdGlzZnkgdGhlIGBBdXRvRml4RnVuY3Rpb25gIHR5cGUuCj4gSXQgc2hvdWxkIHRha2UgaW4gdGhlIGAqeWFtbC5Ob2RlYCBvZiB0aGUgdmlvbGF0aW9uLCB0aGUgcm9vdCBgKnlhbWwuTm9kZWAgb2YgdGhlIGRvY3VtZW50IGFuZCB0aGUgYFJ1bGVGdW5jdGlvbkNvbnRleHRgLgo+IEl0IHNob3VsZCByZXR1cm4gdGhlIGZpeGVkIGAqeWFtbC5Ob2RlYCBhbmQgYW4gZXJyb3IuCgozLiBDb25maWd1cmUgeW91ciBgUnVsZVNldEV4ZWN1dGlvbmAgdG8gdXNlIHRoZSBhdXRvIGZpeCBmdW5jdGlvbi4KYGBgZ28KZnVuYyBMaW50KHJ1bGVzRmlsZSBzdHJpbmcsIHNwZWNGaWxlIHN0cmluZykgZXJyb3IgewoJcnVsZXMsIGVyciA6PSBydWxlc2V0cy5Mb2FkTG9jYWxSdWxlU2V0KGN0eCwgcnVsZXNGaWxlKQoJaWYgZXJyICE9IG5pbCB7CgkJcmV0dXJuIGZtdC5FcnJvcmYoImVycm9yIGxvYWRpbmcgcnVsZXNldDogJXciLCBlcnIpCgl9CgoJcnMgOj0gcnVsZXNldHMuQnVpbGREZWZhdWx0UnVsZVNldHNXaXRoTG9nZ2VyKHNsb2cuTG9nZ2VyKS4KCQlHZW5lcmF0ZVJ1bGVTZXRGcm9tU3VwcGxpZWRSdWxlU2V0KHJ1bGVzKQoKCS8vIE5PVEU6IG9ubHkgc2hvd2luZyB0aGUgZmllbGRzIG9uIHRoZSBSdWxlU2V0RXhlY3V0aW9uIHJlbGV2YW50IHRvIGF1dG8tZml4aW5nLgoJcmVzdWx0cyA6PSBtb3Rvci5BcHBseVJ1bGVzVG9SdWxlU2V0KCZtb3Rvci5SdWxlU2V0RXhlY3V0aW9uewoJCUF1dG9GaXhGdW5jdGlvbnM6IG1hcFtzdHJpbmddbW9kZWwuQXV0b0ZpeEZ1bmN0aW9uewoJCQkidXNlRXh0ZW5zaWJsZUVudW0iOiB1c2VFeHRlbnNpYmxlRW51bSwKCQl9LAoJCUFwcGx5QXV0b0ZpeGVzOiAgICAgICAgIHRydWUsCgkJUnVsZVNldDogICAgICAgICAgICAgICAgcnMsCgl9KQoKCS8vIFdyaXRlIGJhY2sgdG8gZmlsZSBpZiBmaXhlcyB3ZXJlIGFwcGxpZWQKCWlmIGxlbihsaW50UmVzdWx0cy5GaXhlZFJlc3VsdHMpID4gMCAmJiBhdXRvRml4IHsKCQlmaWxlSW5mbywgXyA6PSBvcy5TdGF0KHNwZWNGaWxlKQoKCQllcnIgPSBvcy5Xcml0ZUZpbGUoc3BlY0ZpbGUsIHJlc3VsdC5Nb2RpZmllZFNwZWMsIGZpbGVJbmZvLk1vZGUoKSkKCQlpZiBlcnIgIT0gbmlsIHsKCQkJcmV0dXJuIGZtdC5FcnJvcmYoImZhaWxlZCB0byB3cml0ZSBmaWxlICVzOiAldyIsIGMuZmlsZSwgZXJyKQoJCX0KCX0KCglyZXR1cm4gbmlsCn0KYGBgCgpXaGVuIHRoZSBhdXRvIGZpeCBmdW5jdGlvbiBydW5zLCBpZiBpdCByZXR1cm5zIGFuIGVycm9yIHRoZSBmaXggd2lsbCBub3QgYmUgYXBwbGllZCwgdGhlIGVycm9yIHdpbGwgYmUgbG9nZ2VkLCBhbmQgdGhlIHZpb2xhdGlvbiB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBzdGFuZGFyZCByZXN1bHRzLgoKSWYgdGhlIGF1dG8gZml4IGZ1bmN0aW9uIHN1Y2NlZWRzIHRoZSB5YW1sIG5vZGUgZmxhZ2dlZCBieSB0aGUgdmlvbGF0aW9uIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgdHJhbnNmb3JtZWQgdmVyc2lvbiByZXR1cm5lZCBieSB0aGUgYXV0byBmaXggZnVuY3Rpb24uCgo+IFshVElQXQo+IFdoZW4gdXNpbmcgYHZhY3V1bWAgYXMgYSBsaWJyYXJ5IFlvdSBjYW4gYWNjZXNzIHRoZSBmaXhlZCB5YW1sIGNvbnRlbnQgaW4gdGhlIGBSdWxlU2V0RXhlY3V0aW9uUmVzdWx0Lk1vZGlmaWVkU3BlY2AsIGFuZCBjaG9vc2Ugd2hlcmUgdG8gd3JpdGUgdGhlIGZpbGUuCj4gCj4gV2hlbiB1c2luZyBgdmFjdXVtYCBhcyBhIGNsaSwgdGhlIGAtLWZpeGAgZmxhZyB3aWxsIG92ZXJ3cml0ZSB0aGUgc3BlYyBmaWxlIGluIHBsYWNlLCBhbmQgYC0tZml4LWZpbGVgIGZsYWcgbGV0cyB5b3Ugc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBmaWxlIHRvIHdyaXRlIHRoZSBjb250ZW50IHRvLCBpZiB5b3Ugd2FudCB0byBjb21wYXJlIHRoZSBvdXRwdXRzLgoKIyMjIFVzYWdlCgoKPiBMb2dvIGdvcGhlciBpcyBtb2RpZmllZCwgb3JpZ2luYWxseSBmcm9tIFtlZ29uZWxicmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9lZ29uZWxicmUvZ29waGVycykK readmeEtag: '"3e7ab3c5c4e90dbd0d92a5f63ef807f6c33078a5"' readmeLastModified: Wed, 31 Dec 2025 01:30:28 GMT repositoryId: 415667153 description: >- vacuum is the worlds fastest OpenAPI 3, OpenAPI 2 / Swagger linter and quality analysis tool. Built in go, it tears through API specs faster than you can think. vacuum is compatible with Spectral rulesets and generates compatible reports. created: '2021-10-10T18:24:19Z' updated: '2026-02-05T21:44:57Z' language: Go archived: false stars: 999 watchers: 7 forks: 77 owner: daveshanley logo: https://avatars.githubusercontent.com/u/187345?v=4 license: MIT repoEtag: '"7a02b6ea4a797ba2fc1f554a4f9f80693158407a45ec8503061978bfe5538872"' repoLastModified: Thu, 05 Feb 2026 21:44:57 GMT foundInMaster: true category: - Description Validators - Data Validators id: 45eaedfa8d8b1fcb106649241c2929d6 name: vacuum link: https://quobix.com/vacuum language: go source_description: >- A blazing fast OpenAPI linter and validator that is compatible with Spectral rulesets, and designed for enterprise-grade speed and scale. v2: true v3_1: true - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags repository: https://github.com/vladkens/apigen-ts v3: true v3_1: true id: fe23c57d8d96bc45f44ec987d4758ed9 repositoryMetadata: base64Readme: >- IyBhcGlnZW4tdHMKCjxkaXYgYWxpZ249ImNlbnRlciI+CgpbPGltZyBzcmM9Imh0dHBzOi8vYmFkZ2VzLndzL25wbS92L2FwaWdlbi10cyIgYWx0PSJ2ZXJzaW9uIiAvPl0oaHR0cHM6Ly9ucG1qcy5vcmcvcGFja2FnZS9hcGlnZW4tdHMpCls8aW1nIHNyYz0iaHR0cHM6Ly9iYWRnZXMud3MvcGFja2FnZXBob2JpYS9wdWJsaXNoL2FwaWdlbi10cyIgYWx0PSJzaXplIiAvPl0oaHR0cHM6Ly9wYWNrYWdlcGhvYmlhLm5vdy5zaC9yZXN1bHQ/cD1hcGlnZW4tdHMpCls8aW1nIHNyYz0iaHR0cHM6Ly9iYWRnZXMud3MvbnBtL2RtL2FwaWdlbi10cyIgYWx0PSJkb3dubG9hZHMiIC8+XShodHRwczovL25wbWpzLm9yZy9wYWNrYWdlL2FwaWdlbi10cykKWzxpbWcgc3JjPSJodHRwczovL2JhZGdlcy53cy9naXRodWIvbGljZW5zZS92bGFka2Vucy9hcGlnZW4tdHMiIGFsdD0ibGljZW5zZSIgLz5dKGh0dHBzOi8vZ2l0aHViLmNvbS92bGFka2Vucy9hcGlnZW4tdHMvYmxvYi9tYWluL0xJQ0VOU0UpCls8aW1nIHNyYz0iaHR0cHM6Ly9iYWRnZXMud3MvYmFkZ2UvLS9idXklMjBtZSUyMGElMjBjb2ZmZWUvZmY4MTNmP2ljb249YnV5bWVhY29mZmVlJmxhYmVsIiBhbHQ9ImRvbmF0ZSIgLz5dKGh0dHBzOi8vYnV5bWVhY29mZmVlLmNvbS92bGFka2VucykKCjwvZGl2PgoKPGRpdiBhbGlnbj0iY2VudGVyIj4KICA8aW1nIHNyYz0iLi9sb2dvLnN2ZyIgYWx0PSJhcGlnZW4tdHMgbG9nbyIgaGVpZ2h0PSI4MCIgLz4KPC9kaXY+CgojIyBGZWF0dXJlcwoKLSBHZW5lcmF0ZXMgcmVhZHkgdG8gdXNlIGBBcGlDbGllbnRgIHdpdGggdHlwZXMgKHVzaW5nIGBmZXRjaGApCi0gU2luZ2xlIG91dHB1dCBmaWxlLCBtaW5pbWFsIHRoaXJkLXBhcnR5IGNvZGUKLSBMb2FkcyBzY2hlbWFzIGZyb20gSlNPTiAvIFlBTUwsIGxvY2FsbHkgYW5kIHJlbW90ZQotIEFiaWxpdHkgdG8gY3VzdG9taXplIGBmZXRjaGAgd2l0aCB5b3VyIGN1c3RvbSBmdW5jdGlvbgotIEF1dG9tYXRpYyBmb3JtYXRpbmcgd2l0aCBQcmV0dGllcgotIENhbiBwYXJzZSBkYXRlcyBmcm9tIGRhdGUtdGltZSBmb3JtYXQgKGAtLXBhcnNlLWRhdGVzYCBmbGFnKQotIFN1cHBvcnQgT3BlbkFQSSB2MiwgdjMsIHYzLjEKLSBDYW4gYmUgdXNlZCB3aXRoIG5weCBhcyB3ZWxsCgojIyBJbnN0YWxsCgpgYGBzaApucG0gaW5zdGFsbCBhcGlnZW4tdHMgLS1zYXZlLWRldgpgYGAKCmBgYHNoCnlhcm4gYWRkIC1EIGFwaWdlbi10cwpgYGAKCiMjIFVzYWdlCgojIyMgMS4gR2VuZXJhdGUKCmBgYHNoCiMgRnJvbSBmaWxlCm5weCBhcGlnZW4tdHMgLi9vcGVuYXBpLmpzb24gLi9hcGktY2xpZW50LnRzCgojIEZyb20gdXJsCm5weCBhcGlnZW4tdHMgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uIC4vYXBpLWNsaWVudC50cwoKIyBGcm9tIHByb3RlY3RlZCB1cmwKbnB4IGFwaWdlbi10cyBodHRwczovL3NlY3JldC1hcGkuZXhhbXBsZS5jb20gLi9hcGktY2xpZW50LnRzIC1IICJ4LWFwaS1rZXk6IHNlY3JldC1rZXkiCmBgYAoKUnVuIGBucHggYXBpZ2VuLXRzIC0taGVscGAgZm9yIG1vcmUgb3B0aW9ucy4gRXhhbXBsZXMgb2YgZ2VuZXJhdGVkIGNsaWVudHMgW2hlcmVdKC4vZXhhbXBsZXMvKS4KCiMjIyAyLiBJbXBvcnQKCmBgYHRzCmltcG9ydCB7IEFwaUNsaWVudCB9IGZyb20gIi4vYXBpLWNsaWVudCIKCmNvbnN0IGFwaSA9IG5ldyBBcGlDbGllbnQoewogIGJhc2VVcmw6ICJodHRwczovL2V4YW1wbGUuY29tL2FwaSIsCiAgaGVhZGVyczogeyBBdXRob3JpemF0aW9uOiAic2VjcmV0LXRva2VuIiB9LAp9KQpgYGAKCiMjIyAzLiBVc2UKCmBgYHRzCi8vIEdFVCAvcGV0L3twZXRJZH0KYXdhaXQgYXBpLnBldC5nZXRQZXRCeUlkKDEpIC8vIC0+IFBldAoKLy8gR0VUIC9wZXQvZmluZEJ5U3RhdHVzP3N0YXR1cz1zb2xkCmF3YWl0IGFwaS5wZXQuZmluZFBldHNCeVN0YXR1cyh7IHN0YXR1czogInNvbGQiIH0pIC8vIC0+IFBldHNbXQoKLy8gUFVUIC91c2VyL3t1c2VybmFtZX07IHNlY29uZCBhcmcgYm9keSB3aXRoIHR5cGUgVXNlcgphd2FpdCBhcGkudXNlci51cGRhdGVVc2VyKCJ1c2VybmFtZSIsIHsgZmlyc3ROYW1lOiAiSm9obiIgfSkKYGBgCgojIyBBZHZhbmNlZAoKIyMjIExvZ2luIGZsb3cKCmBgYHRzCmNvbnN0IHsgdG9rZW4gfSA9IGF3YWl0IGFwaS5hdXRoLmxvZ2luKHsgdXNlbmFtZSwgcGFzc3dvcmQgfSkKYXBpLkNvbmZpZy5oZWFkZXJzID0geyBBdXRob3JpemF0aW9uOiB0b2tlbiB9Cgphd2FpdCBhcGkucHJvdGVjdGVkUm91dGUuZ2V0KCkgLy8gaGVyZSBhdXRoZW50aWNhdGVkCmBgYAoKIyMjIEF1dG9tYXRpYyBkYXRlIHBhcnNpbmcKCmBgYHNoCm5weCBhcGlnZW4tdHMgLi9vcGVuYXBpLmpzb24gLi9hcGktY2xpZW50LnRzIC0tcGFyc2UtZGF0ZXMKYGBgCgpgYGB0cwpjb25zdCBwZXQgPSBhd2FpdCBhcGkucGV0LmdldFBldEJ5SWQoMSkKY29uc3QgY3JlYXRlZEF0OiBEYXRlID0gcGV0LmNyZWF0ZWRBdCAvLyBkYXRlIHBhcnNlZCBmcm9tIHN0cmluZyB3aXRoIGZvcm1hdD1kYXRlLXRpbWUKYGBgCgojIyMgU3RyaW5nIHVuaW9uIGFzIGVudW1zCgpZb3UgY2FuIGdlbmVyYXRlIHN0cmluZyBsaXRlcmFsIHVuaW9uIGluc3RlYWQgb2YgbmF0aXZlIGVudW1zIGluIGNhc2UgeW91IHdhbnQgdG8gcnVuIGluIE5vZGUuanMgZW52aXJvbm1lbnQgd2l0aCBbdHlwZS1zdHJpcHBpbmddKGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvdHlwZXNjcmlwdC5odG1sI3R5cGUtc3RyaXBwaW5nKS4gVG8gYWNoaXZlIHRoaXMgcGFzcyBgLS1pbmxpbmUtZW51bXNgIGNvbW1hbmQgbGluZSBhcmd1bWVudCBvciB1c2UgYGlubGluZUVudW1zOiB0cnVlYCBpbiBOb2RlLmpzIEFQSS4KCmBgYHNoCm5weCBhcGlnZW4tdHMgLi9vcGVuYXBpLmpzb24gLi9hcGktY2xpZW50LnRzIC0taW5saW5lLWVudW1zCmBgYAoKVGhpcyB3aWxsIGdlbmVyYXRlOgoKYGBgdHMKdHlwZSBNeUVudW0gPSAiT3B0aW9uQSIgfCAiT3B0aW9uQiIKCi8vIGluc3RlYWQgb2YKZW51bSBNeUVudW0gPSB7CiAgT3B0aW9uQSA9ICJPcHRpb25BIiwKICBPcHRpb25CID0gIk9wdGlvbkIiCn0KYGBgCgojIyMgRXJyb3JzIGhhbmRsaW5nCgpBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gZm9yIGFsbCB1bnN1Y2Nlc3NmdWwgcmV0dXJuIGNvZGVzLgoKYGBgdHMKdHJ5IHsKICBjb25zdCBwZXQgPSBhd2FpdCBhcGkucGV0LmdldFBldEJ5SWQoNDA0KQp9IGNhdGNoIChlKSB7CiAgY29uc29sZS5sb2coZSkgLy8gcGFyc2UgZXJyb3IgZGVwZW5kIG9mIHlvdXIgZG9tYWluIG1vZGVsLCBlIGlzIGF3YWl0ZWQgcmVzcG9uc2UuanNvbigpCn0KYGBgCgpBbHNvIHlvdSBjYW4gZGVmaW5lIGN1c3RvbSBmdW5jdGlvbiB0byBwYXJzZSBlcnJvcjoKCmBgYHRzCmNsYXNzIE15Q2xpZW50IGV4dGVuZHMgQXBpQ2xpZW50IHsKICBhc3luYyBQYXJzZUVycm9yKHJlcDogUmVzcG9uc2UpIHsKICAgIC8vIGRvIHdoYXQgeW91IHdhbnQKICAgIHJldHVybiB7IGNvZGU6ICJBUElfRVJST1IiIH0KICB9Cn0KCnRyeSB7CiAgY29uc3QgYXBpID0gbmV3IE15Q2xpZW50KCkKICBjb25zdCBwZXQgPSBhd2FpdCBhcGkucGV0LmdldFBldEJ5SWQoNDA0KQp9IGNhdGNoIChlKSB7CiAgY29uc29sZS5sb2coZSkgLy8gZSBpcyB7IGNvZGU6ICJBUElfRVJST1IiIH0KfQpgYGAKCiMjIyBCYXNlIHVybCByZXNvbHZpbmcKCllvdSBjYW4gbW9kaWZ5IGhvdyB0aGUgZW5kcG9pbnQgdXJsIGlzIGNyZWF0ZWQuIEJ5IGRlZmF1bHQgW1VSTCBjb25zdHJ1Y3Rvcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1VSTC9VUkwpIHVzZWQgdG8gcmVzb2x2ZSBlbmRwb2ludCB1cmwgbGlrZTogYG5ldyBVUkwocGF0aCwgYmFzZVVybClgIHdoaWNoIGhhcyBzcGVjaWZpYyByZXNvbHZpbmcgW3J1bGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVVJMX0FQSS9SZXNvbHZpbmdfcmVsYXRpdmVfcmVmZXJlbmNlcykuIEUuZy46CgotIGBuZXcgVVJMKCIvdjIvY2F0cyIsICJodHRwczovL2V4YW1wbGUuY29tL3YxLyIpIC8vIC0+IGh0dHBzOi8vZXhhbXBsZS5jb20vdjIvY2F0c2AKLSBgbmV3IFVSTCgidjIvY2F0cyIsICJodHRwczovL2V4YW1wbGUuY29tL3YxLyIpIC8vIC0+IGh0dHBzOi8vZXhhbXBsZS5jb20vdjEvdjIvY2F0c2AKCklmIHlvdSB3YW50IHRvIGhhdmUgY3VzdG9tIGVuZHBvaW50IHVybCByZXNvbHZpbmcgcnVsZXMsIHlvdSBjYW4gb3ZlcnJpZGUgYFByZXBhcmVGZXRjaFVybGAgbWV0aG9kLiBGb3IgbW9yZSBkZXRhaWxzIHNlZSBbaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS92bGFka2Vucy9hcGlnZW4tdHMvaXNzdWVzLzIpLgoKYGBgdHMKY2xhc3MgTXlDbGllbnQgZXh0ZW5kcyBBcGlDbGllbnQgewogIFByZXBhcmVGZXRjaFVybChwYXRoOiBzdHJpbmcpIHsKICAgIHJldHVybiBuZXcgVVJMKGAke3RoaXMuQ29uZmlnLmJhc2VVcmx9LyR7cGF0aH1gLnJlcGxhY2UoL1wvezIsfS9nLCAiLyIpKQogIH0KfQoKY29uc3QgYXBpID0gbmV3IE15Q2xpZW50KHsgYmFzZVVybDogImh0dHBzOi8vZXhhbXBsZS5jb20vdjEiIH0pCi8vIHdpbGwgY2FsbDogaHR0cHM6Ly9leGFtcGxlLmNvbS92MS9wZXQvIGluc3RlYWQgb2YgaHR0cHM6Ly9leGFtcGxlLmNvbS9wZXQvCmNvbnN0IHBldCA9IGF3YWl0IGFwaS5wZXQuZ2V0UGV0QnlJZCg0MDQpCmBgYAoKIyMjIE5vZGUuanMgQVBJCgpDcmVhdGUgZmlsZSBsaWtlIGBhcGlnZW4ubWpzYCB3aXRoIGNvbnRlbnQ6CgpgYGBqcwppbXBvcnQgeyBhcGlnZW4gfSBmcm9tICJhcGlnZW4tdHMiCgphd2FpdCBhcGlnZW4oewogIHNvdXJjZTogImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzL29wZW5hcGkuanNvbiIsCiAgb3V0cHV0OiAiLi9hcGktY2xpZW50LnRzIiwKICAvLyBldmVyeXRoaW5nIGJlbG93IGlzIG9wdGlvbmFsCiAgbmFtZTogIk15QXBpQ2xpZW50IiwgLy8gZGVmYXVsdCAiQXBpQ2xpZW50IgogIHBhcnNlRGF0ZXM6IHRydWUsIC8vIGRlZmF1bHQgZmFsc2UKICBpbmxpbmVFbnVtczogZmFsc2UsIC8vIGRlZmF1bHQgZmFsc2UsIHVzZSBzdHJpbmcgbGl0ZXJhbCB1bmlvbiBpbnN0ZWFkIG9mIGVudW0KICBoZWFkZXJzOiB7ICJ4LWFwaS1rZXkiOiAic2VjcmV0LWtleSIgfSwgLy8gQ3VzdG9tIEhUVFAgaGVhZGVycyB0byB1c2Ugd2hlbiBmZXRjaGluZyBzY2hlbWEKICByZXNvbHZlTmFtZShjdHgsIG9wLCBwcm9wb3NhbCkgewogICAgLy8gcHJvcG9zYWwgaXMgW3N0cmluZywgc3RyaW5nXSB3aGljaCByZXByZXNlbnRzIG1vZHVsZS5mdW5jTmFtZQogICAgaWYgKHByb3Bvc2FsWzBdID09PSAidXNlcnMiKSByZXR1cm4gLy8gd2lsbCB1c2UgZGVmYXVsdCBwcm9wb3NhbAoKICAgIGNvbnN0IFthLCBiXSA9IG9wLm5hbWUuc3BsaXQoIi8iKS5zbGljZSgzLCA1KSAvLyBlZy4gL2FwaS92MS9zdG9yZS9pdGVtcy9zZWFyY2gKICAgIHJldHVybiBbYSwgYCR7b3AubWV0aG9kfV8ke2J9YF0gLy8gW3N0b3JlLCAnZ2V0X2l0ZW1zJ10gLT4gYXBpQ2xpZW50LnN0b3JlLmdldF9pdGVtcygpCiAgfSwKfSkKYGBgCgpUaGVuIHJ1biB3aXRoOiBgbm9kZSBhcGlnZW4ubWpzYAoKIyMgVXNhZ2Ugd2l0aCBkaWZmZXJlbnQgYmFja2VuZCBmcmFtZXdvcmtzCgojIyMgRmFzdEFQSQoKQnkgZGVmYXVsdCBgYXBpZ2VuLXRzYCBnZW5lcmF0ZXMgbm9pc3kgbWV0aG9kIG5hbWVzIHdoZW4gdXNlZCB3aXRoIEZhc3RBUEkuIFRoaXMgY2FuIGJlIGZpeGVkIGJ5IFtjdXN0b20gcmVzb2x2aW5nXShodHRwczovL2Zhc3RhcGkudGlhbmdvbG8uY29tL2FkdmFuY2VkL3BhdGgtb3BlcmF0aW9uLWFkdmFuY2VkLWNvbmZpZ3VyYXRpb24vI3VzaW5nLXRoZS1wYXRoLW9wZXJhdGlvbi1mdW5jdGlvbi1uYW1lLWFzLXRoZS1vcGVyYXRpb25pZCkgZm9yIG9wZXJhdGlvbnMgaWRzLgoKYGBgcHkKZnJvbSBmYXN0YXBpIGltcG9ydCBGYXN0QVBJCmZyb20gZmFzdGFwaS5yb3V0aW5nIGltcG9ydCBBUElSb3V0ZQoKYXBwID0gRmFzdEFQSSgpCgojIGFkZCB5b3VyIHJvdXRlcyBoZXJlCgpkZWYgdXBkYXRlX29wZXJhdGlvbl9pZHMoYXBwOiBGYXN0QVBJKSAtPiBOb25lOgogICAgZm9yIHJvdXRlIGluIGFwcC5yb3V0ZXM6CiAgICAgICAgaWYgaXNpbnN0YW5jZShyb3V0ZSwgQVBJUm91dGUpOgogICAgICAgICAgICBucyA9IHJvdXRlLnRhZ3NbMF0gaWYgcm91dGUudGFncyBlbHNlICJnZW5lcmFsIgogICAgICAgICAgICByb3V0ZS5vcGVyYXRpb25faWQgPSBmIntuc31fe3JvdXRlLm5hbWV9Ii5sb3dlcigpCgoKIyB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBhZnRlciBhbGwgcm91dGVzIGFkZGVkCnVwZGF0ZV9vcGVyYXRpb25faWRzKGFwcCkKYGBgCgpfTm90ZTogSWYgeW91IHdhbnQgRmFzdEFQSSB0byBiZSBhZGRlZCBhcyBwcmVzZXQsIG9wZW4gUFIgcGxlYXNlLl8KCiMjIENvbXBhcmUKCi0gW29wZW5hcGktdHlwZXNjcmlwdC1jb2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vZmVyZGlrb29tZW4vb3BlbmFwaS10eXBlc2NyaXB0LWNvZGVnZW4pIChbbnBtXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZWdlbikpOiBubyBzaW5nbGUgZmlsZSBtb2RlIFsjMTI2M10oaHR0cHM6Ly9naXRodWIuY29tL2ZlcmRpa29vbWVuL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlZ2VuL2lzc3Vlcy8xMjYzI2lzc3VlY29tbWVudC0xNTAyODkwODM4KQotIFtvcGVuYXBpLXR5cGVzY3JpcHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9kcndwb3cvb3BlbmFwaS10eXBlc2NyaXB0KSAoW25wbV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb3BlbmFwaS10eXBlc2NyaXB0KSk6IGxvdyBsZXZlbCBhcGk7IG5vIG5hbWVkIHR5cGVzIGV4cG9ydCB0byB1c2UgaW4gY2xpZW50IGNvZGUKLSBbb3BlbmFwaS1nZW5lcmF0b3ItY2xpXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSkgKFtucG1dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpKSk6IHdyYXBwZXIgYXJvdW5kIGphdmEgbGliCi0gW3N3YWdnZXItdHlwZXNjcmlwdC1hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9hY2Fjb2RlL3N3YWdnZXItdHlwZXNjcmlwdC1hcGkpIChbbnBtXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zd2FnZ2VyLXR5cGVzY3JpcHQtYXBpKSk6IGNvbXBsaWNhdGVkIGNvbmZpZ3VyYXRpb247IHVzZXItYXBpIGJyZWFraW5nIGNoYW5nZXMgYmV0d2VlbiB2ZXJzaW9ucwoKIyMgRGV2ZWxvcG1lbnQKCi0gaHR0cHM6Ly90cy1hc3Qtdmlld2VyLmNvbQotIGh0dHBzOi8vanNvbnNjaGVtYWxpbnQuY29tCi0gaHR0cHM6Ly9yZWRvY2x5LmdpdGh1Yi5pby9yZWRvYy8KLSBodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2Jhc2ljLXN0cnVjdHVyZS8K readmeEtag: '"023a9604086f0838eb5f7dacaa9674e90c3c74c7"' readmeLastModified: Thu, 15 May 2025 01:33:23 GMT repositoryId: 725796572 description: >- Typed, single-file API client generator for OpenAPI schemas with minimal dependencies and maximum type safety. created: '2023-11-30T22:25:17Z' updated: '2026-01-05T22:51:13Z' language: TypeScript archived: false stars: 53 watchers: 3 forks: 10 owner: vladkens logo: https://avatars.githubusercontent.com/u/825754?v=4 license: MIT repoEtag: '"b88a00dbcfa131dda0f3d67813274fbe08090f85eebc981aef4550459c5d732b"' repoLastModified: Mon, 05 Jan 2026 22:51:13 GMT category: SDK foundInMaster: true name: apigen-ts language: TypeScript link: https://www.npmjs.com/package/apigen-ts source_description: Typed HTTP client generator as single file without extra dependencies v2: true - source: https://openapi.tools/ name: APIGit category: - Documentation - Mock - GUI Editors - Testing language: SaaS repository: https://github.com/apigitlabs link: https://apigit.com source_description: >- the native Git based collaboration platform for API design, document, mock, testing and share. v2: true v3: true v3_1: true id: eff815e9a2d41cfd4464f36c69bc11ce foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags repository: https://github.com/pb33f/libopenapi v3: true id: 78ab0e104df30dd8b36325f7708a55ae repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+Cgk8aW1nIHNyYz0ibGlib3BlbmFwaS1sb2dvLnBuZyIgYWx0PSJsaWJvcGVuYXBpIiBoZWlnaHQ9IjMwMHB4IiB3aWR0aD0iNDUwcHgiLz4KPC9wPgoKIyBsaWJvcGVuYXBpIC0gZW50ZXJwcmlzZSBncmFkZSBPcGVuQVBJIHRvb2xzIGZvciBnb2xhbmcuCgoKIVtQaXBlbGluZV0oaHR0cHM6Ly9naXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGkvd29ya2Zsb3dzL0J1aWxkL2JhZGdlLnN2ZykKWyFbR29SZXBvcnRDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9wYjMzZi9saWJvcGVuYXBpKV0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGkpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9wYjMzZi9saWJvcGVuYXBpL2JyYW5jaC9tYWluL2dyYXBoL2JhZGdlLnN2Zz8pXShodHRwczovL2NvZGVjb3YuaW8vZ2gvcGIzM2YvbGlib3BlbmFwaSkKWyFbZGlzY29yZF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kaXNjb3JkLzkyMzI1ODM2MzU0MDgxNTkxMildKGh0dHBzOi8vZGlzY29yZC5nZy94N1ZBQ1Z1RUdQKQpbIVtEb2NzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2dvZG9jLXJlZmVyZW5jZS01ZmFmZDcpXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9wYjMzZi9saWJvcGVuYXBpKQoKbGlib3BlbmFwaSBoYXMgZnVsbCBzdXBwb3J0IGZvciBPcGVuQVBJIDMsIDMuMSBhbmQgMy4yLiBJdCBjYW4gaGFuZGxlIHRoZSBsYXJnZXN0IGFuZCBtb3N0CmNvbXBsZXggc3BlY2lmaWNhdGlvbnMgeW91IGNhbiB0aGluayBvZi4KCi0tLQoKIyMgU3BvbnNvcnMgJiB1c2VycwpJZiB5b3VyIGNvbXBhbnkgaXMgdXNpbmcgYGxpYm9wZW5hcGlgLCBwbGVhc2UgY29uc2lkZXJpbmcgW3N1cHBvcnRpbmcgdGhpcyBwcm9qZWN0XShodHRwczovL2dpdGh1Yi5jb20vc3BvbnNvcnMvZGF2ZXNoYW5sZXkpLCAKbGlrZSBvdXIgX3Zlcnkga2luZF8gc3BvbnNvcnM6Cgo8YSBocmVmPSJodHRwczovL3NwZWFrZWFzeS5jb20vZWRpdG9yP3V0bV9zb3VyY2U9bGlib3BlbmFwaStyZXBvJnV0bV9tZWRpdW09Z2l0aHViK3Nwb25zb3JzaGlwIj4KPHBpY3R1cmU+CiAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSIuZ2l0aHViL3Nwb25zb3JzL3NwZWFrZWFzeS1naXRodWItc3BvbnNvci1kYXJrLnN2ZyI+CiAgPGltZyBhbHQ9InNwZWFrZWFzeSciIHNyYz0iLmdpdGh1Yi9zcG9uc29ycy9zcGVha2Vhc3ktZ2l0aHViLXNwb25zb3ItbGlnaHQuc3ZnIj4KPC9waWN0dXJlPgo8L2E+CgpbU3BlYWtlYXN5XShodHRwczovL3NwZWFrZWFzeS5jb20vZWRpdG9yP3V0bV9zb3VyY2U9bGlib3BlbmFwaStyZXBvJnV0bV9tZWRpdW09Z2l0aHViK3Nwb25zb3JzaGlwKQoKPGEgaHJlZj0iaHR0cHM6Ly9zY2FsYXIuY29tIj4KPHBpY3R1cmU+CiAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSIuZ2l0aHViL3Nwb25zb3JzL3NjYWxhci1kYXJrLnBuZyI+CiAgPGltZyBhbHQ9InNjYWxhciciIHNyYz0iLmdpdGh1Yi9zcG9uc29ycy9zY2FsYXItbGlnaHQucG5nIj4KPC9waWN0dXJlPgo8L2E+Cgpbc2NhbGFyXShodHRwczovL3NjYWxhci5jb20pCgo8YSBocmVmPSJodHRwczovL2FwaWRlY2suY29tIj4KPHBpY3R1cmU+CiAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSIuZ2l0aHViL3Nwb25zb3JzL2FwaWRlY2stZGFyay5wbmciPgogIDxpbWcgYWx0PSJhcGlkZWNrJyIgc3JjPSIuZ2l0aHViL3Nwb25zb3JzL2FwaWRlY2stbGlnaHQucG5nIj4KPC9waWN0dXJlPgo8L2E+CgpbYXBpZGVja10oaHR0cHM6Ly9hcGlkZWNrLmNvbSkKCi0tLQoKIyMgQ29tZSBjaGF0IHdpdGggdXMKCk5lZWQgaGVscD8gSGF2ZSBhIHF1ZXN0aW9uPyBXYW50IHRvIHNoYXJlIHlvdXIgd29yaz8gW0pvaW4gb3VyIGRpc2NvcmRdKGh0dHBzOi8vZGlzY29yZC5nZy94N1ZBQ1Z1RUdQKSBhbmQKY29tZSBzYXkgaGkhCgojIyBDaGVjayBvdXQgdGhlIGBsaWJvcGVuYXBpLXZhbGlkYXRvcmAKCk5lZWQgdG8gdmFsaWRhdGUgcmVxdWVzdHMsIHJlc3BvbnNlcywgcGFyYW1ldGVycyBvciBzY2hlbWFzPyBVc2UgdGhlIG5ldyAKW2xpYm9wZW5hcGktdmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vcGIzM2YvbGlib3BlbmFwaS12YWxpZGF0b3IpIG1vZHVsZS4KCiMjIERvY3VtZW50YXRpb24KClNlZSBhbGwgdGhlIGRvY3VtZW50YXRpb24gYXQgaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpLwoKLSBbSW5zdGFsbGluZyBsaWJvcGVuYXBpXShodHRwczovL3BiMzNmLmlvL2xpYm9wZW5hcGkvaW5zdGFsbGluZy8pCi0gW1VzaW5nIE9wZW5BUEldKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS9vcGVuYXBpLykKLSBbVXNpbmcgU3dhZ2dlcl0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL3N3YWdnZXIvKQotIFtUaGUgRGF0YSBNb2RlbF0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL21vZGVsLykKLSBbVmFsaWRhdGlvbl0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL3ZhbGlkYXRpb24vKQotIFtNb2RpZnlpbmcgLyBNdXRhdGluZyB0aGUgT3BlbkFQSSBNb2RlbF0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL21vZGlmeWluZy8pCi0gW01vY2tpbmcgLyBDcmVhdGluZyBFeGFtcGxlc10oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL21vY2tzLykKLSBbVXNpbmcgVmVuZG9yIEV4dGVuc2lvbnNdKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS9leHRlbnNpb25zLykKLSBbVGhlIEluZGV4XShodHRwczovL3BiMzNmLmlvL2xpYm9wZW5hcGkvaW5kZXgvKQotIFtUaGUgUmVzb2x2ZXJdKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS9yZXNvbHZlci8pCi0gW1RoZSBSb2xvZGV4XShodHRwczovL3BiMzNmLmlvL2xpYm9wZW5hcGkvcm9sb2RleC8pCi0gW0NpcmN1bGFyIFJlZmVyZW5jZXNdKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS9jaXJjdWxhci1yZWZlcmVuY2VzLykKLSBbQnVuZGxpbmcgU3BlY3NdKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS9idW5kbGluZy8pCi0gW1doYXQgQ2hhbmdlZCAvIERpZmYgRW5naW5lXShodHRwczovL3BiMzNmLmlvL2xpYm9wZW5hcGkvd2hhdC1jaGFuZ2VkLykKLSBbT3ZlcmxheXNdKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS9vdmVybGF5cy8pCi0gW0ZBUV0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL2ZhcS8pCi0gW0Fib3V0IGxpYm9wZW5hcGldKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS9hYm91dC8pCi0tLQoKIyMjIFF1aWNrLXN0YXJ0IHR1dG9yaWFsCgrwn5GAICoqR2V0IHJvbGxpbmcgZmFzdCB1c2luZyBgbGlib3BlbmFwaWAgd2l0aCB0aGUgCltQYXJzaW5nIE9wZW5BUEkgZmlsZXMgdXNpbmcgZ29dKGh0dHBzOi8vcXVvYml4LmNvbS9hcnRpY2xlcy9wYXJzaW5nLW9wZW5hcGktdXNpbmctZ28vKSoqIGd1aWRlIPCfkYAKCk9yLCBmb2xsb3cgdGhlc2Ugc3RlcHMgYW5kIHNlZSBzb21ldGhpbmcgaW4gYSBmZXcgc2Vjb25kcy4KCiMjIyMgU3RlcCAxOiBHcmFiIHRoZSBwZXRzdG9yZQoKYGBgYmFzaApjdXJsIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL21haW4vX2FyY2hpdmVfL3NjaGVtYXMvdjMuMC9wYXNzL3BldHN0b3JlLnlhbWwgPiBwZXRzdG9yZXYzLmpzb24KYGBgCgojIyMjIFN0ZXAgMjogR3JhYiBsaWJvcGVuYXBpCgpgYGBiYXNoCmdvIGdldCBnaXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGkKYGBgCgojIyMjIFN0ZXAgMzogUGFyc2UgdGhlIHBldHN0b3JlIHVzaW5nIGxpYm9wZW5hcGkKCkNvcHkgYW5kIHBhc3RlIHRoaXMgY29kZSBpbnRvIGEgYG1haW4uZ29gIGZpbGUuCgpgYGBnbwpwYWNrYWdlIG1haW4KCmltcG9ydCAoCgkiZm10IgoJIm9zIgoJImdpdGh1Yi5jb20vcGIzM2YvbGlib3BlbmFwaSIKKQoKZnVuYyBtYWluKCkgewoJcGV0c3RvcmUsIF8gOj0gb3MuUmVhZEZpbGUoInBldHN0b3JldjMuanNvbiIpCglkb2N1bWVudCwgZXJyIDo9IGxpYm9wZW5hcGkuTmV3RG9jdW1lbnQocGV0c3RvcmUpCglpZiBlcnIgIT0gbmlsIHsKCQlwYW5pYyhmbXQuU3ByaW50ZigiY2Fubm90IGNyZWF0ZSBuZXcgZG9jdW1lbnQ6ICVlIiwgZXJyKSkKCX0KCWRvY01vZGVsLCBlcnIgOj0gZG9jdW1lbnQuQnVpbGRWM01vZGVsKCkKCWlmIGVyciAhPSBuaWwgewoJCXBhbmljKGZtdC5TcHJpbnRmKCJjYW5ub3QgY3JlYXRlIHYzIG1vZGVsIGZyb20gZG9jdW1lbnQ6ICVlIiwgZXJyKSkKCX0KCgkvLyBUaGUgZm9sbG93aW5nIGZhaWxzIGFmdGVyIHRoZSBmaXJzdCBpdGVyYXRpb24KCWZvciBzY2hlbWFOYW1lLCBzY2hlbWEgOj0gcmFuZ2UgZG9jTW9kZWwuTW9kZWwuQ29tcG9uZW50cy5TY2hlbWFzLkZyb21PbGRlc3QoKSB7CgkJaWYgc2NoZW1hLlNjaGVtYSgpLlByb3BlcnRpZXMgIT0gbmlsIHsKCQkJZm10LlByaW50ZigiU2NoZW1hICclcycgaGFzICVkIHByb3BlcnRpZXNcbiIsIHNjaGVtYU5hbWUsIHNjaGVtYS5TY2hlbWEoKS5Qcm9wZXJ0aWVzLkxlbigpKQoJCX0KCX0KfQpgYGAKClJ1biBpdCwgd2hpY2ggc2hvdWxkIHByaW50IG91dDoKCmBgYGJhc2gKU2NoZW1hICdQZXQnIGhhcyAzIHByb3BlcnRpZXMKU2NoZW1hICdFcnJvcicgaGFzIDIgcHJvcGVydGllcwpgYGAKCgo+IFJlYWQgdGhlIGZ1bGwgZG9jcyBhdCBbaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL10oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpLykKCi0tLQoKTG9nbyBnb3BoZXIgaXMgbW9kaWZpZWQsIG9yaWdpbmFsbHkgZnJvbSBbZWdvbmVsYnJlXShodHRwczovL2dpdGh1Yi5jb20vZWdvbmVsYnJlL2dvcGhlcnMpCg== readmeEtag: '"ec9efa6a77bec2aee6aaad4273b44a8e96b01760"' readmeLastModified: Tue, 23 Dec 2025 16:03:54 GMT repositoryId: 514939258 description: >- libopenapi is a fully featured, high performance OpenAPI 3.2, 3.1, 3.0 and Swagger parser, library, validator and toolkit for golang applications. created: '2022-07-17T19:41:10Z' updated: '2026-02-05T15:16:47Z' language: Go archived: false stars: 780 watchers: 7 forks: 98 owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: MIT repoEtag: '"6f231ea9757392b8a3fabe5c51e95dd8d73c62f1c5b49dc55f3b96d76f0b038f"' repoLastModified: Thu, 05 Feb 2026 15:16:47 GMT category: Parsers foundInMaster: true name: libopenapi link: https://pb33f.io/libopenapi language: go source_description: >- Enterprise grade, fully featured OpenAPI 3.1, 3.0 and Swagger parser library for go. A complete toolset for reading and parsing OpenAPI and Swagger specifications. Comes complete with high and low-level APIs, diff engine, index and resolver. v2: true v3_1: true - source: https://openapi.tools/ name: go-openapi-spec-code-diffs category: - Validator - Parsers link: https://github.com/RHEcosystemAppEng/go-openapi-spec-code-diffs language: go repository: https://github.com/rhecosystemappeng/go-openapi-spec-code-diffs source_description: >- A golang validation tool that compares given OpenAPI specs (e.g. openapi.yaml) vis-a-vis routes (e.g. /api/v1/customer/:id) defined in golang source code and reports differences. This is useful in scenarios where you want to keep the OpenAPI specs and Code in synch. v3: true v3_1: true id: e7024c0e9e4e358fa3a62d42b0f1b052 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNwZWNzIFZhbGlkYXRvcgoKIyMgU3VtbWFyeQpBIHZhbGlkYXRpb24gdG9vbCB0aGF0IGNvbXBhcmVzIE9wZW5BUEkgc3BlY3MgdmlzLWEtdmlzIHJvdXRlcyAoZS5nLiAvYXBpL3YxL2N1c3RvbWVyLzppZCkgZGVmaW5lZCBpbiBnb2xhbmcgc291cmNlIGNvZGUuIFVzZWZ1bCBpbiBzY2VuYXJpb3Mgd2hlcmUgeW91IHdhbnQgdG8gZW5zdXJlIHRoZSBPcGVuQVBJIHNwZWNzIGFuZCBDb2RlIGFyZSBpbiBzeW5jaC4KCiMjIFdoYXQKVGhpcyB2YWxpZGF0b3IgdmFsaWRhdGVzIEFQSSBFbmRwb2ludHMgZGVmaW5lZCBpbiBnb2xhbmcgc291cmNlIGNvZGUgd2l0aCBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGFuZCByZXBvcnRzIGZvbGxvd2luZyBkaWZmZXJlbmNlcy4KKiBPcGVuQVBJIHNwZWNzIGZvdW5kIGluIHNwZWNpZmljYXRpb25zIGJ1dCBub3QgZm91bmQgaW4gZ29sYW5nIHNvdXJjZSBjb2RlCiogUm91dGVzIGZvdW5kIGluIGdvbGFuZyBzb3VyY2UgY29kZSBidXQgbm90IGZvdW5kIGluIE9wZW5BUEkgc3BlY3MuCgojIyBXaHkKKiBIZWxwcyB0byBrZWVwIE9wZW5BUEkgc3BlY3MgYW5kIGdvbGFuZyBzb3VyY2UgY29kZSBpbiBzeW5jaC4KKiBEbyBub3QgZm9yZ2V0IHRvIGltcGxlbWVudCBwYXRocyBkZWZpbmVkIGluIE9wZW5BUEkgc3BlY3MgaW4gZ29sYW5nIHNvdXJjZSBjb2RlLgoqIERvIG5vdCBmb3JnZXQgdG8gaW5jbHVkZSBBUElzIGltcGxlbWVudGVkIGluIGdvbGFuZyBzb3VyY2UgY29kZSBpbiBPcGVuQVBJIHNwZWNzIGluLgoKIyMgSG93CiogVGhpcyB0b29sIHRha2VzIGdvbGFuZyBzb3VyY2Ugcm9vdCBkaXJlY3Rvcnkgd2hpY2ggaW1wbGVtZW50cyB5b3VyIEFQSSBhbmQgT3BlbkFQSSBzcGVjcyBmaWxlIGFzIGlucHV0cy4KKiBUaGUgdG9vbCBlc3NlbnRpYWxseSBidWlsZHMgdHdvIGxpc3RzOiAKICAxLiBMaXN0IG9mIHJvdXRlcy9wYXRocyBmb3VuZCBpbiBnb2xhbmcgc291cmNlIGNvZGUuCiAgMi4gTGlzdCBvZiByb3V0ZXMvcGF0aHMgZGVmaW5lZCBpbiB5b3VyIE9wZW5BUEkgc3BlY3MgZmlsZS4KICAqIEJvdGggdGhlIGxpc3RzIHNob3VsZCBtYXRjaCBpZiBub3QgdGhlIHRvb2wgd2lsbCByZXBvcnQgZGlmZmVyZW5jZXMuCiogVGhlIHRvb2wgdXNlcyByZWd1bGFyIGV4cHJlc3Npb25zIHRvIGZpbmQgcGF0aHMgZGVmaW5lZCBpbiBnb2xhbmcgc291cmNlIGNvZGUgZS5nLiAiL2hlYWx0aC9yZWFkeSIsICIvdXNlcnMiIGV0Yy4KICAqIE9uY2Ugc3VjaCBhIHBhdGggaXMgZm91bmQsIHRoZSBjb3JyZXNwb25kaW5nIGxpbmUgaXMgc2Nhbm5lZCB0byBsb29rIGZvciBhIGh0dHBtZXRob2Qgc3VjaCBhcyBHRVQsIFBVVCwgUE9TVCwgREVMRVRFLCBIRUFELCBPUFRJT05TIGFuZCBQQVRDSC4KICAqIElmIHRoZSBodHRwbWV0aG9kIGlzIGZvdW5kIG9uIHRoZSBsaW5lIHRoZW4gdG9vbCBjb25zaWRlcnMgdGhlIHBhdGggZm91bmQgaW4gdGhlIGxpbmUgYXMgYSB2YWxpZCByb3V0ZS9wYXRoIGRlZmluaXRpb24uCiAgKiBUaHVzIGZvbGxvd2luZyBjb2RlIGlzIGNvbnNpZGVyZWQgYSB2YWxpZCByb3V0ZS9wYXRoIGRlZmluaXRpb24gYnkgdGhlIHRvb2wuCmBgYGdvCnJvdXRlIDo9IHJvdXRlUmVnaXN0cmF0aW9ueyJQVVQiLCAiL3VzZXIvOmlkL2FkbWluLzppc0FkbWluIiwgaGFuZGxlcnMuU2V0QWRtaW5TdGF0dXN9CmBgYAogICogSG93ZXZlciB0aGUgZm9sbG93aW5nIGxpbmUgaXMgbm90IGNvbnNpZGVyZWQgYSB2YWxpZCByb3V0ZS9wYXRoIGRlZmluaXRpb24gYXMgdGhpcyBpcyB0aGUgbGluZSBoYXZpbmcgYSBnb2xhbmcga2V5d29yZCAnaWYnLgpgYGBnbwppZiAiL3RoaXMvaXMvbm90L2NvbnNpZGVyZWQvYS9wYXRoL2RlZmluaXRpb24iID09ICJERUxFVEUiIHsKYGBgCiAgKiBZb3UgY2FuIG1ha2UgdXNlIG9mIHRoZSBmb2xsb3dpbmcgaWdub3JlIGVsZW1lbnRzIHdoaWxlIHNjYW5uaW5nIGdvbGFuZyBzb3VyY2UgY29kZSwgdG8gZnVydGhlciBmaW5lIHR1bmUgdGhlIHJ1biBvZiB0aGUgdG9vbC4gCgp8IEVsZW1lbnQgICAgICAgfCBEZXNjcmlwdGlvbiB8CnwtLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwKfCBpZ25vcmVkRGlyc0ZpbGUgIHwgRGlyZWN0b3JpZXMgdG8gYmUgaWdub3JlZCB3aGVuIHNjYW5uaW5nIGdvbGFuZyBzb3VyY2UgY29kZSB8CnwgaWdub3JlZEZpbGVzRmlsZSB8IEZpbGVzIHRvIGJlIGlnbm9yZWQgfAp8IGlnbm9yZWRMaW5lc0ZpbGUgfCBMaW5lcyB0byBiZSBpZ25vcmVkIHwKfCBpZ25vcmVkUGF0aHNGaWxlIHwgQVBJIFBhdGhzIHRvIGJlIGlnbm9yZWQgZnJvbSBjb21wYXJpc29uIHN1Y2ggYXMgL2hlYWx0aC9yZWFkeSBvciAvaGVhbHRoL2xpdmUgfAoKIyMgV2h5IHRoZSBpZ25vcmVkIGVsZW1lbnRzIGFib3ZlIGFyZSBuZWVkZWQ/CiogVGhlIHRvb2wgcmVjdXJzaXZlbHkgd29ya3Mgb24gLmdvIGZpbGVzIGZvdW5kIGluIGdvbGFuZyBzb3VyY2UgY29kZSBkaXJlY3RvcnkuCiogWW91IGNhbiBzbGlnaHRseSBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBieSBzcGVjaWZ5aW5nIGRpcmVjdG9yaWVzIHdoaWNoIHR5cGljYWxseSBkbyBub3QgY29udGFpbiAuZ28gZmlsZXMgc3VjaCBhcyBiaW4sIG91dCBhbmQgLmdpdCBlLmcuCiogWW91IGNhbiB1c2UgaWdub3JlZEZpbGVzRmlsZSB0byBmdXJ0aGVyIGV4Y2x1ZGUgc3BlY2lmaWMgZmlsZXMgZnJvbSBzY2FubmluZy4KKiBJZiB0aGUgaWdub3JlZCBkaXJlY3RvcmllcyBhbmQgZmlsZXMgYXJlIG5vdCBzdWZmaWNpZW50LCBpZiB0b29sIGNvbmZ1c2VzIGNlcnRhaW4gY29kZSBsaW5lcyB0byBjb250YWluIHZhbGlkIHBhdGhzL3JvdXRlcyBidXQgaWYgdGhleSBhcmUgbm90IHZhbGlkIHBhdGhzL3JvdXRlcywgc2ltcGx5IGNvcHkgdGhvc2UgbGluZSBpbiBpZ25vcmVkTGluZXNGaWxlIGFuZCB0aG9zZSBsaW5lcyB3aWxsIGJlIGlnbm9yZWQgZnJvbSBzY2FuLgoKIyMgVXNhZ2UKIyMjIEFzIHNoZWxsIGNvbW1hbmQKKiBUaGUgY29tbWFuZCBsaW5lIHZlcnNpb24gbWFrZXMgdXNlIG9mIG5hbWVkIGFyZ3VtZW50cy4gCiogQXQgYW55IHBvaW50IHRvIHNlZSB0aGUgaGVscCBmb3IgdGhlIGNvbW1hbmQgdXNlIHRoZSBmb2xsb3dpbmcKYGBgc2hlbGwKb3BlbmFwaV9zcGVjX2NvZGVfZGlmZnMgLS1oZWxwCmBgYAoqIEZvcm1hdApgYGBzaGVsbApvcGVuYXBpX3NwZWNfY29kZV9kaWZmcyAvCiAgICAtb3BlbkFQSVNwZWNzRmlsZSAncGF0aC90by9vcGVuYXBpL3NwZWNzL2ZpbGVuYW1lJyAvCiAgICAtZ29Tb3VyY2VEaXIgJ3BhdGgvdG8vZ29sYW5nL3NvdXJjZS9kaXInIC8KICAgIC1pZ25vcmVkRGlyc0ZpbGUgJ3BhdGgvdG8vaWdub3JlZC9kaXJlY3Rvcmllcy9maWxlbmFtZScgLyAKICAgIC1pZ25vcmVkRmlsZXNGaWxlICdwYXRoL3RvL2lnbm9yZWQvZmlsZXMvZmlsZW5hbWUnIC8KICAgIC1pZ25vcmVkTGluZXNGaWxlICdwYXRoL3RvL2lnbm9yZWQvbGluZXMvZmlsZW5hbWUnIC8gCiAgICAtaWdub3JlZFBhdGhzRmlsZSAncGF0aC90by9pZ25vcmVkL3BhdGhzL2ZpbGVuYW1lJyAvIAogICAgLWxvZ0xldmVsICdsb2ctbGV2ZWwgY2FuIGJlIG9uZSBvZjogZGlzYWJsZWQsIGluZm8sIGRlYnVnLCBlcnJvcicKYGBgCgojIyMgQXMgYSBwYWNrYWdlL2xpYnJhcnkgaW4gZ29sYW5nIHNvdXJjZSBjb2RlCiogSW1wb3J0IHRoZSBwYWNrYWdlL2xpYnJhcnkKYGBgZ28KaW1wb3J0ICJnaXRodWIuY29tL1JIRWNvc3lzdGVtQXBwRW5nL29wZW5hcGlfc3BlY19jb2RlX2RpZmZzL3ZhbGlkYXRvciIKYGBgCgoqIFVzZSB0aGUgdmFsaWRhdG9yIGUuZy4gaW4gdGVzdCBjb2RlIGFzIGZvbGxvd3MuIFBhdGhzIGJlbG93IGFyZSByZWxhdGl2ZSB0byB0aGUgcGF0aCBvZiB0aGUgdGVzdCBmaWxlIGZyb20gd2hpY2ggdGVzdHMgYXJlIGdvaW5nIHRvIGJlIGV4ZWN1dGVkIGZyb20uCmBgYGdvCmZ1bmMgdmFsaWRhdGVPcGVuQVBJU3BlY3ModCAqdGVzdGluZy5UKSB7CglvYXNTdGF0aWNWYWxpZGF0b3IgOj0gdmFsaWRhdG9yLk5ld09wZW5BUElTcGVjQ29kZURpZmZzVmFsaWRhdG9yKCIuL29hc1N0YXRpY1ZhbGlkYXRvci8uZGlyaWdub3JlIiwgIi4vb2FzU3RhdGljVmFsaWRhdG9yLy5zcGVjaWdub3JlIiwgIi4uLy4uLyIsICIuLi8uLi9vcGVuYXBpLnlhbWwiKQoJZXJyLCByZXN1bHQgOj0gb2FzU3RhdGljVmFsaWRhdG9yLlZhbGlkYXRlKCkKCglhc3NlcnQuTmlsKHQsIGVyciwgIk5vIGVycm9ycyByZXR1cm5lZCBmcm9tIG9wZW5hcGkgdmFsaWRhdGlvbiIpCglhc3NlcnQuRXF1YWwodCwgMCwgbGVuKHJlc3VsdC5TcGVjRGVmc05vdEluQ29kZSksICJGb3VuZCBzcGVjIGRlZnMgbm90IGltcGxlbWVudGVkIGluIGNvZGUiLCBsZW4ocmVzdWx0LlNwZWNEZWZzTm90SW5Db2RlKSkKCWFzc2VydC5FcXVhbCh0LCAwLCBsZW4ocmVzdWx0LkNvZGVEZWZzTm90U3BlYyksICJGb3VuZCBjb2RlIGRlZnMgbm90IHJlZmxlY3RlZCBpbiBzcGVjcyIsIGxlbihyZXN1bHQuQ29kZURlZnNOb3RTcGVjKSkKfQpgYGAKCiMjIFJ1bm5pbmcgdGVzdHMKKiBVc2UgdGhlIHN0YW5kYXJkIGdvIGNvbW1hbmQgdG8gcnVuIHRlc3RzIGFzIGZvbGxvd3MsIHdoaWNoIGFyZSBkaXZpZGVkIGFzIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB0ZXN0czoKYGBgc2hlbGwKIGdvIHRlc3QgLXYgLi90ZXN0cy9wb3NpdGl2ZSAuL3Rlc3RzL25lZ2F0aXZlCmBgYA== readmeEtag: '"bab8c8dd6a236ec5043056e8f9d10c2f4320c0b1"' readmeLastModified: Mon, 24 Jul 2023 20:40:53 GMT repositoryId: 666011427 description: null created: '2023-07-13T13:55:40Z' updated: '2025-09-18T23:39:10Z' language: Go archived: false stars: 3 watchers: 2 forks: 1 owner: RHEcosystemAppEng logo: https://avatars.githubusercontent.com/u/82061998?v=4 license: Apache-2.0 repoEtag: '"d26e9f4c10363c1e23401780a2c3bc12ef66d0dc143b0f03c2305a20259fe59c"' repoLastModified: Thu, 18 Sep 2025 23:39:10 GMT foundInMaster: true - source: https://openapi.tools/ name: draig category: SDK link: https://gitlab.com/robarago/draig language: Java repository: https://gitlab.com/robarago/draig source_description: >- DRAIG is an OpenAPI3 based design-first custom generator that creates fully functional microservices from an OAS API description document. You can use DRAIG with openapi-generator as a backend generator or use DRAIG CLI or REPL to generate your microservices. With simple user-customizable templates, you can extended and improve implementation code so that generated code can be compiled and deployed immediatelly. v2: false v3: true v3_1: false id: 3a9dfe0c9cec65c2ce3c97d0b8e8186f foundInMaster: true - source: https://openapi.tools/ name: draig-car category: - Server - Testing - Text Editors link: https://gitlab.com/robarago/draig-car language: TypeScript repository: https://gitlab.com/robarago/draig-car source_description: >- This is a REPL OpenAPI3 description document text editor. It provides both a CLI and and a REPL you can use to test your APIs, but you can also test database queries, start and stop database (containers), generate fake data automatically, start your test microservice and much more. You don't have to exit from your REPL! Or you can use the CLI to do the same if you want, giving you the option to automatize your contract-first based dev cycles. v2: false v3: true v3_1: false id: ce0dc163dc2b30744344ee24800647a0 foundInMaster: true - source: https://openapi.tools/ name: ABAP OpenAPI Client & Server Generator category: - SDK - Server - Parsers language: ABAP repository: https://github.com/abap-openapi/abap-openapi link: https://abap-openapi.github.io/web-openapi-client/ source_description: >- ABAP OpenAPI Client & Server Generator written in ABAP. Code generation runs also in the Browser and on command line using NodeJS. v3: true id: 9f36fdafa836d6b231bd4fe0cd2b34b7 repositoryMetadata: base64Readme: >- IyBBQkFQIE9wZW5BUEkgQ2xpZW50ICYgU2VydmVyIEdlbmVyYXRvcgoKQUJBUCBPcGVuQVBJIGlzIGFuIFtPcGVuQVBJXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcpIGdlbmVyYXRvciB0b29sIGRlc2lnbmVkIHRvIGNyZWF0ZSBBUEkgY2xpZW50cywgSUNGIHNlcnZlciBoYW5kbGVycywgYW5kIElDRiBzZXJ2ZXIgaW1wbGVtZW50YXRpb24gc3R1YnMgZnJvbSBPcGVuQVBJIGRvY3VtZW50cy4KCiMjIEdlbmVyYXRlCgpJdCBpcyBwb3NzaWJsZSB0byBnZW5lcmF0ZSB0aGUgb2JqZWN0cyB1c2luZyBkaWZmZXJlbnQgcHJvY2Vzc2VzOgotIEdlbmVyYXRlIHZpYSBvdXIgW3dlYiBjbGllbnRdKGh0dHBzOi8vYWJhcC1vcGVuYXBpLmdpdGh1Yi5pby93ZWItb3BlbmFwaS1jbGllbnQvKQotIEdlbmVyYXRlIHZpYSBjb21tYW5kIGxpbmUgKE5vZGVKUykKLSBHZW5lcmF0ZSB2aWEgQUJBUAoKIyMgRmVhdHVyZXMKCnwgRmVhdHVyZSB8ICB8CnwgLS0tIHwgLS0tIHwKfCBPcGVuQVBJIEZpbGUgVHlwZXMgfCBKU09OIHwKfCBPcGVuQVBJIFZlcnNpb25zIHwgdjJcKiwgdjMgfAp8IEFCQVAgVmVyc2lvbnMgfCB2NzAyIGFuZCB1cCAgfAp8IE9iamVjdCBDcmVhdGlvbiB8IG9uZSBzZWxmLWNvbnRhaW5lZCBnbG9iYWwgY2xhc3MgJiBpbnRlcmZhY2UgcGVyIE9wZW5BUEkgZGVmaW5pdGlvbiB8CgpcKiBPcGVuQVBJIHYyIGlzIGN1cnJlbnRseSBvbmx5IGNhcGFibGUgYnkgY29udmVydGluZyB0aGUgdjIgZmlsZSB0byBhIHYzIGZpbGUuIFRoaXMgY2FuIGJlIGRvbmUgbWFudWFsbHkgdXNpbmcgdGhlIFtTd2FnZ2VyIEVkaXRvcl0oaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pby8pLCBvciBwcm9ncmFtbWF0aWNhbGx5IHVzaW5nIFtTd2FnZ2VyIENvbnZlcnRlcl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29udmVydGVyKQoKTk9URTogZ2VuZXJhdGVkIGNvZGUgY3VycmVudGx5IHVzZXMgWkNMX09BUElfSlNPTiwgc3VnZ2VzdCBjb3B5aW5nIHRoZSBpbXBsZW1lbnRhdGlvbiB0byBhIGxvY2FsIGNsYXNzIGluIHRoZSBnZW5lcmF0ZWQgZ2xvYmFsIGNsYXNzCgojIyBVc2UgQ2FzZXMKIyMjIEFQSSBDcmVhdG9yCi0gV3JpdGUgdGhlIE9wZW5BUEkgZG9jdW1lbnQgZm9yIHlvdXIgQVBJIHNvIHRoYXQgeW91IGNhbiBnZW5lcmF0ZSB0aGUgSUNGIGhhbmRsZXIgYW5kIFNlcnZlciBJbXBsZW1lbnRhdGlvbiBib2lsZXJwbGF0ZQotIFVzZSB0aGUgT3BlbkFQSSBkb2N1bWVudCB0byBjcmVhdGUgYXV0b21hdGljIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgQVBJCgojIyMgQVBJIFVzZXIKLSBVc2UgYW55IE9wZW5BUEkgZG9jdW1lbnQgdG8gY3JlYXRlIHRoZSBjbGllbnQgY2xhc3MgdG8gY29uc3VtZSBleHRlcm5hbCBBUElzCgojIyBCdWlsZGluZy9EZXZlbG9waW5nCiMjIyBQcmVyZXF1aXNpdGVzCltOb2RlSlNdKGh0dHBzOi8vbm9kZWpzLm9yZykgMTYrCgojIyMgU2V0dXAgCi0gY2xvbmUgdGhpcyByZXBvc2l0b3J5Ci0gcnVuIGBucG0gaW5zdGFsbGAKCiMjIyBUZXN0aW5nClVuaXQgVGVzdHM6IGBucG0gdGVzdGAKSW50ZXJncmF0aW9uIFRlc3RzOiBgbnBtIHJ1biBpbnRlZ3JhdGlvbl90ZXN0YAoKWW91IGNhbiB0cnkgb3V0IHRoZSBnZW5lcmF0aW9uIHVzaW5nIFN3YWdnZXIncyBQZXRzdG9yZSBFeGFtcGxlOgotIEp1c3QgcnVuIGBucG0gcnVuIHBldHN0b3JlYAotIFRoZSBvdXRwdXQgZmlsZXMgd2lsbCBiZSBnZW5lcmF0ZWQgaW4gYC4vdGVzdF92MS9nZW5lcmF0ZWQvYAoKIyMgRXhhbXBsZQoKYGBgc2gKIyEvdXNyL2Jpbi9lbnYgYmFzaAoKcm0gLXJmIGFiYXAtb3BlbmFwaQpnaXQgY2xvbmUgLS1kZXB0aD0xIGh0dHBzOi8vZ2l0aHViLmNvbS9hYmFwLW9wZW5hcGkvYWJhcC1vcGVuYXBpCnJtIC1yZiBhYmFwLW9wZW5hcGkvLmdpdApjZCBhYmFwLW9wZW5hcGkKbnBtIGNpCm5wbSBydW4gdHJhbnNwaWxlCnJtIC4uL3NyYy9hcGkvKi5hYmFwCm5vZGUgdGVzdF92Mi9pbmRleC5tanMgPGZpbGVuYW1lPiAuLi9zcmMvYXBpIDxuYW1lPgpgYGAK readmeEtag: '"62f0f75d0377e6de12a6bf5a97fd9b67cb12f236"' readmeLastModified: Thu, 12 Sep 2024 13:07:42 GMT repositoryId: 331034649 description: ABAP OpenAPI Client and Server generator in ABAP created: '2021-01-19T16:03:52Z' updated: '2026-01-22T02:59:45Z' language: ABAP archived: false stars: 94 watchers: 11 forks: 17 owner: abap-openapi logo: https://avatars.githubusercontent.com/u/77685491?v=4 license: MIT repoEtag: '"4642426452f19e7e9341a60793b110bb5ea810a8e6a579ad4bf9ce3ed0f7062c"' repoLastModified: Thu, 22 Jan 2026 02:59:45 GMT foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/kubeshop/kusk-gateway v3: true repositoryMetadata: base64Readme: >- PiBEZWFyIHVzZXJzIGFuZCBjb250cmlidXRvcnMgb2YgS3VzayBhbmQgS3VzayBHYXRld2F5IQo+Cj4gV2UgY29udGludWUgdG8gYmVsaWV2ZSBpbiB0aGUgaWRlYSBvZiBPcGVuQVBJIGRyaXZlbiBHYXRld2F5LiBIb3dldmVyLCB3ZSBoYXZlIGRlY2lkZWQgdG8gcGF1c2Ugb25nb2luZyBhY3RpdmUgZGV2ZWxvcG1lbnQgYW5kIHN1cHBvcnQgZm9yIHRoZSB0aW1lIGJlaW5nLgo+IAo+IFdlIHdhbnQgdG8gZXhwcmVzcyBvdXIgc2luY2VyZSBncmF0aXR1ZGUgdG8gZXZlcnlvbmUgd2hvIGhhcyBjb250cmlidXRlZCB0byBLdXNrLCB3aGV0aGVyIGJ5IHN1Ym1pdHRpbmcgY29kZSwgcmVwb3J0aW5nIGlzc3Vlcywgb3Igc2ltcGx5IHVzaW5nIGl0LiBXZSBhcmUgcHJvdWQgb2YgdGhlIHdvcmsgd2UgYWNjb21wbGlzaGVkIHRvZ2V0aGVyLCBhbmQgaG9wZSB0aGF0IG91ciBlZmZvcnRzIGhhdmUgaGFkIGEgcG9zaXRpdmUgaW1wYWN0IG9uIHlvdXIgd29yayBhbmQgeW91ciBjb21tdW5pdHkuCj4gCj4gSWYgeW91J3JlIHdpbGxpbmcgdG8gaW1wcm92ZSB0aGUgcHJvamVjdCwgcGxlYXNlIGZlZWwgZnJlZSB0byBjb250cmlidXRlLiBXZSB3aWxsIGRvIG91ciBiZXN0IHRvIHJldmlldyBhbmQgYXBwcm92ZSBpbmNvbWluZyBQUnMgYXMgb3VyIHRpbWUgYW5kIHJlc291cmNlcyBhbGxvdy4KPiAKPiBUaGFuayB5b3UgZm9yIHlvdXIgdW5kZXJzdGFuZGluZyBhbmQgc3VwcG9ydCEKPiAKPiBUaGUgS3VzayBUZWFtIGF0IEt1YmVzaG9wCgo8cCBhbGlnbj0iY2VudGVyIj4KICA8aW1nIHN0eWxlPSJ3aWR0aDo2NiUiIHNyYz0iYXNzZXRzL2t1c2stY29sb3ItbGcucG5nI2doLWxpZ2h0LW1vZGUtb25seSIgYWx0PSJLdXNrIExvZ28gTGlnaHQiLz4KICA8aW1nIHN0eWxlPSJ3aWR0aDo2NiUiIHNyYz0iYXNzZXRzL2t1c2std2hpdGUtbGcucG5nI2doLWRhcmstbW9kZS1vbmx5IiBhbHQ9Ikt1c2sgTG9nbyBEYXJrIiAvPgo8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICBXZWxjb21lIHRvIEt1c2sgR2F0ZXdheSAtIGEgc2VsZi1zZXJ2aWNlIEFQSSBnYXRld2F5IHBvd2VyZWQgYnkgPGEgaHJlZj0iaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLyI+T3BlbkFQSTwvYT4gYW5kIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmVudm95cHJveHkuaW8iPkVudm95PC9hPgo8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL2t1c2suaW8iPldlYnNpdGU8L2E+Jm5ic3A7fCZuYnNwOwogIDxhIGhyZWY9Imh0dHBzOi8va3ViZXNob3AuZ2l0aHViLmlvL2t1c2stZ2F0ZXdheSI+RG9jdW1lbnRhdGlvbjwvYT4mbmJzcDt8Jm5ic3A7CiAgPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9LdXNrX2lvIj5Ud2l0dGVyPC9hPiZuYnNwO3wmbmJzcDsKICA8YSBocmVmPSJodHRwczovL2Rpc2NvcmQuZ2cvaGZxNDR3dFI2USI+RGlzY29yZDwvYT4mbmJzcDt8Jm5ic3A7CiAgPGEgaHJlZj0iaHR0cHM6Ly9rdWJlc2hvcC5pby9jYXRlZ29yeS9rdXNrIj5CbG9nPC9hPgo8L3A+Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPgogIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJlc2hvcC9rdXNrLWdhdGV3YXkvcmVsZWFzZXMiPjxpbWcgdGl0bGU9IlJlbGVhc2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvdi9yZWxlYXNlL2t1YmVzaG9wL2t1c2stZ2F0ZXdheSIvPjwvYT4KICA8YSBocmVmPSIiPjxpbWcgdGl0bGU9IkdvIHZlcnNpb24iIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvZ28tbW9kL2dvLXZlcnNpb24va3ViZXNob3Ava3Vzay1nYXRld2F5Ii8+PC9hPgogIDxhIGhyZWY9IiI+PGltZyB0aXRsZT0iQ29kZSBidWlsZHMiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvd29ya2Zsb3cvc3RhdHVzL2t1YmVzaG9wL2t1c2stZ2F0ZXdheS9idWlsZCUyMGFuZCUyMHRlc3QiLz48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmVzaG9wL2t1c2stZ2F0ZXdheS9yZWxlYXNlcyI+PGltZyB0aXRsZT0iUmVsZWFzZSBkYXRlIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3JlbGVhc2UtZGF0ZS9rdWJlc2hvcC9rdXNrLWdhdGV3YXkiLz48L2E+CiAgPGEgaHJlZj0iIj48aW1nIHRpdGxlPSJTdGFycyIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9zdGFycy9rdWJlc2hvcC9rdXNrLWdhdGV3YXk/Y29sb3I9Ymx1ZXZpb2xldCZsYWJlbD1TdGFyZ2F6ZXJzIi8+PC9hPgoKICBbIVtTbGFja10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9zbGFjay1qb2luJTIwY2hhdC1lMDE1NjMuc3ZnP2xvZ289c2xhY2spXShodHRwczovL2t1YmVzaG9wLW9zcy5zbGFjay5jb20vYXJjaGl2ZXMvQzAzUjRKQlRNVVopCiAgWyFbRGlzY29yZF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kaXNjb3JkLzg4NDQ2NDU0OTM0NzA3NDA0OT9sYWJlbD1kaXNjb3JkJmxvZ289ZGlzY29yZCldKGh0dHBzOi8vZGlzY29yZC5jb20vY2hhbm5lbHMvODg0NDY0NTQ5MzQ3MDc0MDQ5KQo8L2Rpdj4KCiMgV2VsY29tZSB0byBLdXNrIEdhdGV3YXkKCkt1c2sgR2F0ZXdheSBlbmFibGVzIHlvdSB0byBkZXNpZ24gYW5kIGNvbmZpZ3VyZSB5b3VyIEFQSXMgZnJvbSBzaW5nbGUgT3BlbkFQSSBtYW5pZmVzdCBhbmQgeW91IGNhbjoKCi0g4pqhICoqUmFwaWRseSBwcm90b3R5cGUgeW91ciBBUElzKiogYnkgbW9ja2luZyB5b3VyIEFQSSByZXNwb25zZXMsIGFsbG93aW5nIHlvdXIgdGVhbXMgdG8gaW5zdGFudGx5IHN0YXJ0IGJ1aWxkaW5nIG9uIHRvcCBvZiB5b3VyIEFQSXMgd2l0aG91dCB5b3VyIHNlcnZpY2VzIGJlaW5nIGltcGxlbWVudGVkCi0g8J+UkiBQcm90ZWN0IHlvdXIgZW5kcG9pbnRzIHdpdGggKiphdXRvbWF0aWMgcmVxdWVzdCBhbmQgcmVzcG9uc2UgdmFsaWRhdGlvbnMqKgotIOKaoO+4jyBDb25maWd1cmUgY3JpdGljYWwgcG9saWNpZXMgbGlrZSByZXF1ZXN0IHRpbWVvdXRzIGFuZCBDT1JTIHdpdGggKipubyBjb2RpbmcgcmVxdWlyZWQqKgotIPCfp5AgQ2VudHJhbGx5IGNvbnRyb2wgeW91ciBBUElzIGZyb20gYW4gT3BlbiBTb3VyY2UgZGFzaGJvYXJkCgojIyBHZXQgU3RhcnRlZAoKQ2hlY2sgb3V0IG91ciBbR2V0dGluZyBTdGFydGVkIHNlY3Rpb25dKGh0dHBzOi8va3ViZXNob3AuZ2l0aHViLmlvL2t1c2stZ2F0ZXdheS9nZXR0aW5nLXN0YXJ0ZWQpIHRvIGluc3RhbGwgS3VzayBHYXRld2F5LCBkZXBsb3kgYW4gZXhhbXBsZSBBUEkgYW5kIGNvbm5lY3QgYSBzZXJ2aWNlIHRvIHRoZSBBUEkuCgojIyBDb250cmlidXRpbmcKCkdvIHRvIGNvbnRyaWJ1dGlvbiBkb2N1bWVudCB0byByZWFkIG1vcmUgaG93IGNhbiB5b3UgaGVscCB1cyDwn5SlCgojIyBGZWVkYmFjawoKV2hldGhlciBpdCBoZWxwcyB5b3Ugb3Igbm90IC0gd2UnZCBMT1ZFIHRvIGhlYXIgZnJvbSB5b3UuIFBsZWFzZSBsZXQgdXMga25vdyB3aGF0IHlvdSB0aGluayBhbmQgb2YgY291cnNlLCBob3cgd2UgY2FuIG1ha2UgaXQgYmV0dGVyLiBQbGVhc2Ugam9pbiBvdXIgZ3Jvd2luZyBjb21tdW5pdHkgb24gW0Rpc2NvcmRdKGh0dHBzOi8vZGlzY29yZC5jb20vaW52aXRlLzZ6dXBDWkZRYmUpLgoKIyMgRGV2ZWxvcG1lbnQKClNlZSBbYFNLQUZGT0xELm1kYF0oLi9TS0FGRk9MRC5tZCkuCg== readmeEtag: '"eed208d1215ce66a8cf64443577e0139c5ff56aa"' readmeLastModified: Tue, 21 Feb 2023 10:07:52 GMT repositoryId: 408727871 description: Kusk-gateway is an OpenAPI-driven API Gateway for Kubernetes created: '2021-09-21T07:33:29Z' updated: '2025-12-16T18:21:00Z' language: Go archived: false stars: 281 watchers: 15 forks: 24 owner: kubeshop logo: https://avatars.githubusercontent.com/u/82541796?v=4 license: MIT repoEtag: '"3ca431cd28a98dc4733017d0d8fcb5c242f1faf0b0cd020193699d349cb6f1d2"' repoLastModified: Tue, 16 Dec 2025 18:21:00 GMT foundInMaster: true category: - Documentation - Mock - Gateway - Server Implementations id: b0e18adcd3ab375ea18858db2f04ec17 name: Kusk Gateway link: https://docs.kusk.io/ language: Kubernetes source_description: >- Kusk-Gateway is an OpenAPI-driven API Gateway for Kubernetes. It empowers you to develop, validate, mock and deploy your APIs in a matter of minutes using both manual and automated GitOps/APIOps workflows. v2: true v3_1: false - source: https://openapi.tools/ name: openapi-comparator language: C# repository: https://github.com/criteo/openapi-comparator link: https://github.com/criteo/openapi-comparator source_description: C# library for comparing two OpenAPI specifications. v3: true id: 01c7663c51ca9c29913eec0e1c6ccd8c repositoryMetadata: base64Readme: >- IyBPcGVuIEFQSSBDb21wYXJhdG9yCgpBbiBPcGVuQVBJIHRvb2wgdG8gY29tcGFyZSBPcGVuQVBJIFNwZWNpZmljYXRpb25zLgoKIyMgQyMgTGlicmFyeQoKVGhlIHRvb2wgaXMgYXZhaWxhYmxlIGFzIGEgW251Z2V0IHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9Dcml0ZW8uT3BlbkFwaS5Db21wYXJhdG9yKSwgZGlyZWN0bHkgdXNhYmxlIGludG8geW91ciBDIyBhcHBsaWNhdGlvbi4KClRvIGluc3RhbGwgaXQgcnVuIHRoZSBjb21tYW5kOgpgYGBiYXNoCmRvdG5ldCBhZGQgcGFja2FnZSBDcml0ZW8uT3BlbkFwaS5Db21wYXJhdG9yCmBgYAoKSGVyZSBpcyBhbiBleGFtcGxlIG9mIGhvdyB0byB1c2UgdGhlIENvbXBhcmF0b3I6CmBgYEMjCnZhciBkaWZmZXJlbmNlcyA9IE9wZW5BcGlDb21wYXJhdG9yLkNvbXBhcmUoCiAgICBvbGRPcGVuQXBpU3BlYywKICAgIG5ld09wZW5BcGlTcGVjCik7CmBgYAoKIyMgQ29tbWFuZCBsaW5lIHRvb2wKClRoZSBjb21wYXJhdG9yIGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgW2NvbW1hbmQgbGluZSB0b29sXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvQ3JpdGVvLk9wZW5BcGkuQ29tcGFyYXRvci5DbGkvMC4xLjApLgoKVG8gaW5zdGFsbCBpdCwgcnVuIHRoZSBjb21tYW5kOgpgYGBiYXNoCmRvdG5ldCB0b29sIGluc3RhbGwgLWcgQ3JpdGVvLk9wZW5BcGkuQ29tcGFyYXRvci5DbGkKYGBgCgpZb3UgY2FuIHRoZW4gdXNlIHRoZSB0b29sIHRocm91Z2ggdGhlIGBvcGVuYXBpLWNvbXBhcmVgIGNvbW1hbmQ6CmBgYGJhc2gKb3BlbmFwaS1jb21wYXJlIC1vIG5ld19vYXMuanNvbiAtbiBvbGRfb2FzLmpzb24gLWYgSnNvbgpgYGAKCkF2YWlsYWJsZSBvcHRpb25zOgp8IE9wdGlvbiAgICAgICAgICAgfCBTbWFsbCAgIHwgUmVxdWlyZWQgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYC0tb2xkYCAgICAgICAgICB8IGAtb2AgICAgfCBgdHJ1ZWAgICB8IFBhdGggb3IgVVJMIHRvIG9sZCBPcGVuQVBJIFNwZWNpZmljYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGAtLW5ld2AgICAgICAgICAgfCBgLW5gICAgIHwgYHRydWVgICAgfCBQYXRoIG9yIFVSTCB0byBuZXcgT3BlbkFQSSBTcGVjaWZpY2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgLS1vdXRwdXRGb3JtYXRgIHwgYC1mYCAgICB8IGBmYWxzZWAgIHwgKERlZmF1bHQ6IGBKc29uYCkgU3BlY2lmaWVzIGluIHdoaWNoIGZvcm1hdCB0aGUgZGlmZmVyZW5jZXMgc2hvdWxkIGJlIGRpc3BsYXllZC4gUG9zc2libGUgdmFsdWVzOiBgSnNvbmAgXHwgYFRleHRgLiB8CnwgYC0tc3RyaWN0YCAgICAgICB8IGAtc2AgICAgfCBgZmFsc2VgICB8IChEZWZhdWx0OiBgZmFsc2VgKSBFbmFibGUgc3RyaWN0IG1vZGU6IGJyZWFraW5nIGNoYW5nZXMgYXJlIGVycm9ycyBpbnN0ZWFkIG9mIHdhcm5pbmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGAtLWhlbHBgICAgICAgICAgfCBgLWhgICAgIHwgYGZhbHNlYCAgfCBMb2cgYXZhaWxhYmxlIG9wdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCiMjIENvbXBhcmlzb24gcnVsZXMKCkVhY2ggY29tcGFyaXNvbiBydWxlIGlzIGRvY3VtZW50ZWQgaW4gdGhlIFtkb2N1bWVudGF0aW9uIHNlY3Rpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9jcml0ZW8vb3BlbmFwaS1jb21wYXJhdG9yL3RyZWUvbWFpbi9kb2N1bWVudGF0aW9uKS4KCiMjIE9wZW5BUEkgdmVyc2lvbiBzdXBwb3J0CgpJbnRlcm5hbGx5LCB0aGUgY29tcGFyYXRvciB1c2VzIFttaWNyb3NvZnQvT3BlbkFQSS5ORVRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvT3BlbkFQSS5ORVQvKSB3aGljaCBjdXJyZW50bHkgc3VwcG9ydHMgT3BlbkFQSSAyLjAgdG8gMy4wLjAuCgojIyBDb250cmlidXRpbmcKCkFueSBjb250cmlidXRpb24gaXMgbW9yZSB0aGFuIHdlbGNvbWVkLiBGb3Igbm93LCBubyBzcGVjaWZpYyBydWxlIG11c3QgYmUgYXBwbGllZCB0byBjb250cmlidXRlLCBqdXN0IGNyZWF0ZSBhbiBJc3N1ZSBvciBhIFB1bGwgUmVxdWVzdCBhbmQgd2UnbGwgdHJ5IHRvIGhhbmRsZSBpdCBBU0FQLgoKIyMgTGljZW5zZQoKT3BlbkFwaSBDb21wYXJhdG9yIGlzIGFuIE9wZW4gU291cmNlIHNvZnR3YXJlIHJlbGVhc2VkIHVuZGVyIHRoZSBbQXBhY2hlIDIuMCBsaWNlbnNlXShodHRwczovL2dpdGh1Yi5jb20vY3JpdGVvL29wZW5hcGktY29tcGFyYXRvci9ibG9iL21haW4vTElDRU5DRSkuCgojIyBEZXZlbG9wZXIgZ3VpZGUKClNpbXBseSB1c2UgdGhlIGRvdG5ldCBjbGkuIEZvciBleGFtcGxlLCB0byBydW4gdGhlIHRlc3RzOgpgYGBiYXNoCmRvdG5ldCB0ZXN0CmBgYAo= readmeEtag: '"84b46d434f5d40f40d7d37729fcb5d742da5e9ec"' readmeLastModified: Thu, 20 Feb 2025 16:43:16 GMT repositoryId: 506186592 description: null created: '2022-06-22T09:46:19Z' updated: '2026-02-06T02:49:51Z' language: C# archived: false stars: 35 watchers: 8 forks: 12 owner: criteo logo: https://avatars.githubusercontent.com/u/1713646?v=4 license: Apache-2.0 repoEtag: '"e9d161ecd235a74308cc87418df9a2d11079e15086a7e5dfa7e520ccf5bf8b4a"' repoLastModified: Fri, 06 Feb 2026 02:49:51 GMT foundInMaster: true category: Parsers - source: https://openapi.tools/ name: openapi-validator-junit category: - Description Validators - Parsers link: https://github.com/stefankoppier/openapi-validator repository: https://github.com/stefankoppier/openapi-validator language: Kotlin source_description: >- A JUnit extension for validating a wide range of properties of a specification. v2: true v3: true v3_1: true id: 2d3fe34fda3d9de22ff8948b50e4617d repositoryMetadata: base64Readme: >- WyFbR3JhZGxlIFBsdWdpbiBQb3J0YWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ3JhZGxlLXBsdWdpbi1wb3J0YWwvdi9pby5naXRodWIuc3RlZmFua29wcGllci5vcGVuYXBpLnZhbGlkYXRvcildKGh0dHBzOi8vcGx1Z2lucy5ncmFkbGUub3JnL3BsdWdpbi9pby5naXRodWIuc3RlZmFua29wcGllci5vcGVuYXBpLnZhbGlkYXRvcikKWyFbTWF2ZW4gQ2VudHJhbF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9tYXZlbi1jZW50cmFsL3YvaW8uZ2l0aHViLnN0ZWZhbmtvcHBpZXIub3BlbmFwaS52YWxpZGF0b3IvY29yZSldKGh0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vYXJ0aWZhY3QvaW8uZ2l0aHViLnN0ZWZhbmtvcHBpZXIub3BlbmFwaS52YWxpZGF0b3IpClshW1F1YWxpdHkgR2F0ZSBTdGF0dXNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PXN0ZWZhbmtvcHBpZXJfb3BlbmFwaS12YWxpZGF0b3ImbWV0cmljPWFsZXJ0X3N0YXR1cyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPXN0ZWZhbmtvcHBpZXJfb3BlbmFwaS12YWxpZGF0b3IpClshW0NvdmVyYWdlXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1zdGVmYW5rb3BwaWVyX29wZW5hcGktdmFsaWRhdG9yJm1ldHJpYz1jb3ZlcmFnZSldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPXN0ZWZhbmtvcHBpZXJfb3BlbmFwaS12YWxpZGF0b3IpCgojIE9wZW5BUEkgVmFsaWRhdG9yCgpUaGUgT3BlbkFQSSBWYWxpZGF0b3IgYWxsb3dzIHlvdSB0byB2YWxpZGF0ZSB5b3VyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBieSB3cml0aW5nIGEgZGVzY3JpcHRpdmUgcnVsZXNldCBpbiBLb3RsaW4hClRoZXJlIGlzIGFuIGV4dGVuc2l2ZSBzZXQgb2YgYnVpbHQtaW4gcnVsZXMgYW5kIGlzIGV4dGVuc2libGUsIGFzIGl0IGFsbG93cyB5b3UgdG8gYWRkIGN1c3RvbSBydWxlcyBlYXNpbHkuIAoKVmlzaXQgW3RoZSBwcm9qZWN0IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vc3RlZmFua29wcGllci5naXRodWIuaW8vb3BlbmFwaS12YWxpZGF0b3IvKSBmb3IgYSBjb21wbGV0ZSBvdmVydmlldyBvZiB0aGUgCmZ1bmN0aW9uYWxpdHkuCgojIyBGZWF0dXJlcwoKIyMjIFJ1bGVzCkFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gaGF2ZSBhIGNvcnJlc3BvbmRpbmcgcnVsZS4gRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIHZhbGlkYXRlIHRoYXQgdGhlCnBhdGggYC9wZXQvZmluZEJ5U3RhdHVzYCBoYXMgYSBnZXQgb3BlcmF0aW9uIHdpdGggdGhlIHJlcXVpcmVkIHF1ZXJ5IHBhcmFtZXRlciBgc3RhdHVzYCB5b3UgY2FuIHdyaXRlCmBgYGtvdGxpbgpvcGVuQVBJIHsKICAgIHBhdGhzIHsKICAgICAgICByZXF1aXJlZCgpCiAgICAgICAgcGF0aChuYW1lZCA9ICIvcGV0L2ZpbmRCeVN0YXR1cyIpIHsKICAgICAgICAgICAgZ2V0IHsgCiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzIHsKICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIobmFtZWQgPSAic3RhdHVzIikgewogICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQoKQogICAgICAgICAgICAgICAgICAgICAgYGluYCB7IGV4YWN0bHkoInF1ZXJ5IikgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpgYGAKCiMjIyBRdWFudGlmaWVyIFJ1bGVzClRoZXJlIGlzIHN1cHBvcnQgZm9yIHF1bnRpZmljYXRpb24gb24gdGhlIHJlbGV2YW50IHR5cGVzLiBGb3IgZXhhbXBsZQpgYGBrb3RsaW4Kb3BlbkFQSSB7CiAgICBwYXRocyB7CiAgICAgICAgYWxsIHsKICAgICAgICAgICAgc3RhcnRzV2l0aCgicHJlZml4IikKICAgICAgICB9CiAgICB9Cn0KYGBgCnN0YXRlcyB0aGF0IGFsbCBwYXRocyBtdXN0IHN0YXJ0IHdpdGggdGhlIHN0cmluZyBgcHJlZml4YC4KCiMjIyBQcmVjb25kaXRpb25zClRoZXJlIGlzIHN1cHBvcnQgZm9yIHByZWNvbmRpdGlvbnMuIFRoZSBnZW5lcmFsIHByZWNvbmRpdGlvbiBgZ2l2ZW5gIHZhbGlkYXRlcyBhIGdpdmVuIHJ1bGUgb25seSBpZgp0aGUgcHJlZGljYXRlIGlzIHRydWUuIEZvciBleGFtcGxlCmBgYGtvdGxpbgpvcGVuQVBJIHsKICAgIGluZm8gewogICAgICAgIGdpdmVuKHsgaXQgIT0gbnVsbCAmJiBpdC5sZW5ndGggPiAyMCB9KSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uIHsgbG93ZXJjYXNlKCkgfQogICAgICAgIH0KICAgIH0KfQpgYGAKc3RhdGVzIHRoYXQgdGhlIGZpZWxkIGBkZXNjcmlwdGlvbmAgb2YgdGhlIGBpbmZvYCBmaWVsZCBtdXN0IGxvd2VyY2FzZSB3aGVuIGl0IGlzIG5vdCBudWxsLCBhbmQgaXQncyBsZW5ndGggaXMKZ3JlYXRlciB0aGFuIDIwLgoKVGhlcmUgaXMgYWxzbyB0aGUgYHNpbmNlYCBwcmVjb25kaXRpb24sIHdoaWNoIHN0YXRlcyB0aGF0IHNvbWV0aGluZyBzaG91bGQgaG9sZCBvbmx5IGlmIHRoZSBnaXZlbiBkYXRlIGlzIGluCnRoZSBwYXN0LiBGb3IgZXhhbXBsZQpgYGBrb3RsaW4Kb3BlbkFQSSB7CiAgICBpbmZvIHsKICAgICAgICBzaW5jZShMb2NhbERhdGUub2YoMjAyNCwgMSwgMSkpIHsKICAgICAgICAgICAgdGl0bGUgeyBsb3dlcmNhc2UoKSB9CiAgICAgICAgfQogICAgfQp9CmBgYApzdGF0ZXMgdGhhdCB0aGUgZmllbGQgYHRpdGxlYCBvZiB0aGUgYGluZm9gIGZpZWxkIG11c3QgYmUgaW4gbG93ZXJjYXNlIGFmdGVyIEphbnVhcnkgMcui4bWXIG9mIDIwMjQuICAKCiMjIFVzYWdlCgpUaGUgT3BlbkFQSSBWYWxpZGF0b3IgYWxsb3dzIGZvciB0d28gd2F5cyB0byBleGVjdXRlIHRoZSB2YWxpZGF0aW9uOiB2aWEgR3JhZGxlIG9yIHZpYSBKVW5pdC4KCiMjIyBHcmFkbGUgSW50ZWdyYXRpb24KCkFwcGx5IHRoZSBwbHVnaW4KYGBga290bGluCnBsdWdpbnMgewogICAgaWQoImlvLmdpdGh1Yi5zdGVmYW5rb3BwaWVyLm9wZW5hcGkudmFsaWRhdG9yIikgdmVyc2lvbiAieC55LnoiCn0KYGBgCmFuZCB0aGVuIGNvbmZpZ3VyZSB0aGUgZG9jdW1lbnQgdG8gYmUgdmVyaWZpZWQgdXNpbmcgdGhlIGdpdmVuIHJ1bGVzIHVzaW5nCmBgYGtvdGxpbgpvcGVuQVBJVmFsaWRhdGUgewogICAgZG9jdW1lbnQuc2V0KHVyaSgicGV0c3RvcmUueWFtbCIpKQogICAgcnVsZXMuc2V0KAogICAgICAgIG9wZW5BUEkgewogICAgICAgICAgICBpbmZvIHsKICAgICAgICAgICAgICAgIHRpdGxlIHsgZXhhY3RseSgiT3BlbkFQSSBQZXRzdG9yZSIpIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICkKfQpgYGAKCiMjIyBKVW5pdCBJbnRlZ3JhdGlvbgoKQWRkIHRoZSBwYWNrYWdlIHRvIHlvdXIgZGVwZW5kZW5jaWVzLgoKVGhlbiBleHRlbmQgeW91ciB0ZXN0IGNsYXNzIHdpdGggYEBFeHRlbmRXaXRoKE9wZW5BUElWYWxpZGF0aW9uRXh0ZW5zaW9uOjpjbGFzcylgIHRvIGFkZCBsb2FkaW5nIG9mIGEgc3BlY2lmaWNhdGlvbi4gClRoZSBzcGVjaWZpY2F0aW9uIGNhbiBiZSBsb2FkZWQgdXNpbmcgdGhlIGFubm90YXRpb24gYEBPcGVuQVBJVGVzdChyZWxhdGl2ZVVybCA9ICJzcmMvdGVzdC9yZXNvdXJjZXMvcGV0c3RvcmUueWFtbCIpYCB0byAKc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgdGhlIHNwZWNpZmljYXRpb24uIEZvciBleGFtcGxlCmBgYGtvdGxpbgpARXh0ZW5kV2l0aChPcGVuQVBJVmFsaWRhdGlvbkV4dGVuc2lvbjo6Y2xhc3MpCkBPcGVuQVBJVGVzdChyZWxhdGl2ZVVybCA9ICJzcmMvdGVzdC9yZXNvdXJjZXMvcGV0c3RvcmUueWFtbCIpCmNsYXNzIE9wZW5BUElWYWxpZGF0aW9uRXh0ZW5zaW9uVGVzdCB7CgogICAgQFRlc3QKICAgIGZ1biBgbXkgcGV0c3RvcmUgdGVzdGAoKSB7CiAgICAgICAgYXNzZXJ0RG9jdW1lbnRJc1ZhbGlkRm9yIHsKICAgICAgICAgICAgb3BlbkFQSSgiTXkgc3BlY2lmaWNhdGlvbiIpIHsKICAgICAgICAgICAgICAgIGluZm8gewogICAgICAgICAgICAgICAgICAgIHRpdGxlIHsgZXhhY3RseSgiT3BlbkFQSSBQZXRzdG9yZSIpIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpgYGAK readmeEtag: '"418b10cd8b745efa68624d45799c241e01f3a0f0"' readmeLastModified: Wed, 01 Nov 2023 06:30:02 GMT repositoryId: 646046176 description: Library for validating OpenAPI specifications created: '2023-05-27T05:41:25Z' updated: '2024-08-01T11:03:01Z' language: Kotlin archived: false stars: 2 watchers: 1 forks: 0 owner: stefankoppier logo: https://avatars.githubusercontent.com/u/5744697?v=4 license: Apache-2.0 repoEtag: '"6e46560abb476ec775203698e454e4ae07dca69d3e33330e045b30e4d1126db6"' repoLastModified: Thu, 01 Aug 2024 11:03:01 GMT foundInMaster: true - source: https://openapi.tools/ name: Hot Potato category: - Data Validators - Description Validators - Server - Testing language: C# link: https://github.com/davidmbillie/Hot-Potato repository: https://github.com/davidmbillie/hot-potato source_description: >- A reverse proxy that validates responses against an OpenAPI description. It can be used as either a standalone .NET tool, or installed as NuGet packages for an ASP.NET Core integration testing project. id: bdfcf4d5e833ed87ca9e7a80a42cd36d repositoryMetadata: base64Readme: >- IyBIb3QgUG90YXRvIFByb3h5CgohW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL0h5bGFuZFNvZnR3YXJlL0hvdC1Qb3RhdG8vd29ya2Zsb3dzL2hvdC1wb3RhdG8tY2kvYmFkZ2Uuc3ZnKQoKVGhlIEhvdCBQb3RhdG8gaXMgYW4gQVNQLk5FVCBDb3JlIHJldmVyc2UgcHJveHkgdGhhdCB3aWxsIHZhbGlkYXRlIGFuIEFQSSdzIGNvbmZvcm1hbmNlIHRvIGFuIE9wZW5BUEkgc3BlYy4KCiMjIFNldHVwCgpUbyB1c2UgdGhlIGNvbXBsZXRlIHRvb2wgeW91IHdpbGwgbmVlZCB0byBkb3dubG9hZCB0aGUgYEhvdFBvdGF0by5Bc3BOZXRDb3JlLkhvc3RgIE51R2V0IHBhY2thZ2UgZnJvbSBodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvSG90UG90YXRvLkFzcE5ldENvcmUuSG9zdC8uIFNpbmNlIEhvdCBQb3RhdG8gaXMgYSBkb3RuZXQgZ2xvYmFsIHRvb2wgeW91IGNhbiBlYXNpbHkgZG93bmxvYWQgaXQgZnJvbSBQb3dlcnNoZWxsIG9yIENvbW1hbmQgUHJvbXB0LiBUaGUgbW9zdCBjb21tb24gd2F5IG9mIHV0aWxpemluZyB0aGlzIHRvb2wgY2FuIGJlIGZvdW5kIGluIHRoZSBbUG9zdG1hbl0oI3Bvc3RtYW4pIHNlY3Rpb24gYmVsb3cuCgpJZiB5b3UgaGF2ZSBhbiBhdXRvbWF0ZWQgQVBJIHRlc3RpbmcgcHJvamVjdCB3aXRoIGEgbW9jayBzZXJ2ZXIgeW91IHdvdWxkIGxpa2UgdG8gY29uZm9ybWFuY2UgdGVzdCwgeW91IGFsc28gaGF2ZSB0aGUgb3B0aW9uIG9mIGluc3RhbGxpbmcgdGhlIGBIb3RQb3RhdG8uQXNwTmV0Q29yZS5NaWRkbGV3YXJlYCBOdUdldCBwYWNrYWdlIGZyb20gaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL0hvdFBvdGF0by5Bc3BOZXRDb3JlLk1pZGRsZXdhcmUvLiBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHdyaXRpbmcgY29uZm9ybWFuY2UgdGVzdHMgd2l0aCBhIG1vY2sgc2VydmVyIGNhbiBiZSBmb3VuZCBiZWxvdyBpbiB0aGUgW01pZGRsZXdhcmVdKCNtaWRkbGV3YXJlKSBzZWN0aW9uLgoKIyMjIEluc3RhbGwgLk5FVCBUb29sCgpUbyBpbnN0YWxsIEhvdCBQb3RhdG8gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKYGBgc2gKZG90bmV0IHRvb2wgaW5zdGFsbCAtZyBob3Rwb3RhdG8uYXNwbmV0Y29yZS5ob3N0CmBgYApUaGVyZSBhcmUgb3RoZXIgb3B0aW9ucyB0aGF0IGNhbiBiZSB1dGlsaXplZCB3aGVuIGRvd25sb2FkaW5nIGEgZG90bmV0IHRvb2wuIEEgY29tcGxldGUgbGlzdCBvZiBvcHRpb25zIGNhbiBiZSBmb3VuZCBoZXJlOiBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9kb3RuZXQvY29yZS90b29scy9kb3RuZXQtdG9vbC1pbnN0YWxsCgpJZiB0aGUgaW5zdGFsbCBpcyBzdWNjZXNzZnVsIHlvdSB3aWxsIHNlZSBhIG1lc3NhZ2UgbGlrZSB0aGlzOiAgCmBgYHNoCllvdSBjYW4gaW52b2tlIHRoZSB0b29sIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDogSG90UG90YXRvClRvb2wgJ2hvdHBvdGF0by5hc3BuZXRjb3JlLmhvc3QnICh2ZXJzaW9uICcyLjAuMCcpIHdhcyBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkLgpgYGAKIyMjIFN0YXJ0IEhvdCBQb3RhdG8KCllvdSBjYW4gbm93IHN0YXJ0IHRoZSB0b29sIGJ5IHVzaW5nIHRoZSBjb21tYW5kIGBIb3RQb3RhdG9gLiBBZGQgdGhlIGFyZ3VtZW50cyBmb3IgeW91ciB0ZXN0aW5nIHNpdHVhdGlvbiBhbmQgeW91IGNhbiB1dGlsaXplIGBIb3RQb3RhdG9gIGZyb20gdGhlIGNvbW1hbmQgbGluZS4KYGBgc2gKSG90UG90YXRvIC0tUmVtb3RlRW5kcG9pbnQgaHR0cDovL2V4YW1wbGUuY29tL215L2VuZHBvaW50IC0tU3BlY0xvY2F0aW9uIGh0dHA6Ly9leGFtcGxlLmNvbS9teS9zcGVjaWZpY2F0aW9uLnlhbWwKYGBgCgojIyMgU1NMIFZhbGlkYXRpb24gSXNzdWVzCgpXZSBoYXZlIGFsc28gYWxzbyBwcm92aWRlZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lZCBgSHR0cENsaWVudFNldHRpbmdzX19JZ25vcmVDbGllbnRIdHRwc0NlcnRpZmljYXRlVmFsaWRhdGlvbkVycm9yc2AgdGhhdCBjYW4gYmUgc2V0IHRvIGB0cnVlYCBpbiB0aGUgY2FzZSBvZiBvZiBwZXJzaXN0ZW50IFNTTCBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGlzc3Vlcy4gCgojIyMgU3BlY3Mgd2l0aCBUb2tlbiBWYWxpZGF0aW9uCgpJbiB0aGUgY2FzZSBvZiBzb21ldGhpbmcgbGlrZSBhY2Nlc3NpbmcgYSByYXcgZmlsZSBpbiBhIHByaXZhdGUgcmVwbyBvbiBHaXRodWIsIGEgdG9rZW4gaXMgbmVlZGVkIHRvIGFjY2VzcyBhIHNwZWNpZmljYXRpb24uIEZvciBjYXNlcyBsaWtlIHRoaXMsIHdlIGhhdmUgaW5jbHVkZWQgYSBgU3BlY1Rva2VuYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgc2VjcmV0LiBJZiB5b3UncmUgcnVubmluZyBIb3QgUG90YXRvIGxvY2FsbHkgdmlhIFZpc3VhbCBTdHVkaW8sIGFuIGVhc3kgd2F5IG9mIHNldHRpbmcgdGhlIHNlY3JldCBjYW4gYmUgZm91bmQgaGVyZTogW01hbmFnZSBVc2VyIFNlY3JldHNdKGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL2FzcG5ldC9jb3JlL3NlY3VyaXR5L2FwcC1zZWNyZXRzP3ZpZXc9YXNwbmV0Y29yZS01LjAmdGFicz13aW5kb3dzI2pzb24tc3RydWN0dXJlLWZsYXR0ZW5pbmctaW4tdmlzdWFsLXN0dWRpbykuCgo8YSBuYW1lPSJyZXN1bHRzIj48L2E+CiMjIFJlc3VsdHMKCkluIG9yZGVyIHRvIHJldHJpZXZlIHJlc3VsdHMgZnJvbSB0aGUgcHJveHksIHdlIGhhdmUgZXhwb3NlZCBhIGAvcmVzdWx0c2AgZW5kcG9pbnQuIFRoaXMgZW5kcG9pbnQgd2lsbCByZXR1cm4gYSBKU09OLWZvcm1hdHRlZCBvYmplY3QgdGhhdCBzaG93cyBhbGwgb2YgdGhlIHJlcXVlc3RzIHRoYXQgaGF2ZSBjb21lIHRocm91Z2ggYW5kIHdoZXRoZXIgb3Igbm90IHRoZXkncmUgY29uZm9ybWFudC4gVGhlIHJlc3BvbnNlIHdpbGwgYWxzbyBpbmNsdWRlIGEgYFgtU3RhdHVzYCBoZWFkZXIgd2hpY2ggd2lsbCBiZSBlaXRoZXIgYFBhc3NgLCBgRmFpbGAsIG9yIGBJbmNvbmNsdXNpdmVgLgoKX19QYXNzIFJlc3VsdF9fCmBgYGpzb24KWwogICAgewogICAgICAgICJQYXRoIjoiL2VuZHBvaW50IiwKICAgICAgICAiTWV0aG9kIjoiR0VUIiwKICAgICAgICAiU3RhdHVzQ29kZSI6MjAwLAogICAgICAgICJTdGF0ZSI6IlBhc3MiCiAgICB9Cl0KYGBgCgpfX0ZhaWwgUmVzdWx0X18KYGBganNvbgpbCiAgICB7ICAgICAgICAKICAgICAgICAiUGF0aCI6Ii9lbmRwb2ludCIsCiAgICAgICAgIk1ldGhvZCI6IkdFVCIsCiAgICAgICAgIlN0YXR1c0NvZGUiOjQwNCwKICAgICAgICAiU3RhdGUiOiJGYWlsIiwKICAgICAgICAiUmVhc29ucyI6WyJJbnZhbGlkQm9keSJdLAogICAgICAgICJWYWxpZGF0aW9uRXJyb3JzIjoKICAgICAgICBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJNZXNzYWdlIjoiRXJyb3IiLAogICAgICAgICAgICAgICAgIktpbmQiOiJVbmtub3duIiwKICAgICAgICAgICAgICAgICJQcm9wZXJ0eSI6IlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICJMaW5lTnVtYmVyIjo1LAogICAgICAgICAgICAgICAgIkxpbmVQb3NpdGlvbiI6MTAKICAgICAgICAgICAgfQogICAgICAgIF0KICAgIH0KXQpgYGAKCiMjIyBDdXN0b20gUmVzdWx0IEhlYWRlcnMKCkhvdCBQb3RhdG8gYWxzbyBhbGxvd3MgdXNlcnMgdG8gYWRkIGN1c3RvbSBoZWFkZXJzIHRvIHJlc3VsdHMgb2JqZWN0cy4gVG8gZG8gc28sIHVzZXJzIGNhbiBjYW4gYWRkIHRoZSBwcmVmaXggIlgtSFAtIiB0byBhIGhlYWRlciBrZXkgaW4gYSByZXF1ZXN0LCBhbmQgaXQgd2lsbCBhcHBlYXIgYXQgdGhlIHRvcCBvZiB0aGUgcmVzdWx0IGluIGEgImN1c3RvbSIgYXJyYXkuIFRoZSBjdXN0b20gYXJyYXkgb25seSBhcHBlYXJzIGlmIGN1c3RvbSBoZWFkZXJzIGFyZSBwcm92aWRlZC4KCmBgYGpzb24KWwoJewogICAgICAgICJjdXN0b20iOiB7CiAgICAgICAgICAgICJYLUhQLU5hbWUiOiBbCiAgICAgICAgICAgICAgICAiTGFuZGluZ1BhZ2UiCiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJzdGF0ZSI6ICJQYXNzIiwKICAgICAgICAicGF0aCI6ICIvIiwKICAgICAgICAibWV0aG9kIjogImdldCIsCiAgICAgICAgInN0YXR1c0NvZGUiOiAyMDAKICAgIH0KXQpgYGAKCiMjIFN0cnVjdHVyZQoKVGhlIHByb3h5IGlzIGJyb2tlbiBkb3duIGludG8gYSBudW1iZXIgb2YgY29tcG9uZW50cyB0byBhbGxvdyBmbGV4aWJpbGl0eSBmb3IgZGV2ZWxvcGVycy4KCiMjIyBIb3RQb3RhdG8uQXNwTmV0Q29yZS5Ib3N0CgpUaGlzIGlzIGFuIEFTUC5ORVQgQ29yZSBob3N0IGNvbmZpZ3VyZWQgdG8gdXNlIHRoZSBIb3QgUG90YXRvIE1pZGRsZXdhcmUuIEl0IGlzIHN0b29kIHVwIGFzIGEgc2VwYXJhdGUgc2VydmVyIHRoYXQgbGlzdGVucyBieSBkZWZhdWx0IG9uIHBvcnQgYDMyMzJgLiBUaGVyZSBpcyBhbiBgYXBwc2V0dGluZ3MuanNvbmAgdG8gYWxsb3cgdGhlIGRldmVsb3BlciB0byBzZXQgdGhlIHJlbW90ZSBlbmRwb2ludCB0byBmb3J3YXJkIHJlcXVlc3RzIHRvIGFuZCB0aGUgbG9jYXRpb24gb2YgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiB0byB2YWxpZGF0ZSBjb25mb3JtYW5jZS4gVGhlc2UgdmFsdWVzIGNhbiBhbHNvIGJlIHBhc3NlZCBpbnRvIHRoZSBjb21tYW5kIGxpbmUgdmlhIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBob3Rwb3RhdG8gLS1SZW1vdGVFbmRwb2ludCBodHRwOi8vZXhhbXBsZS5jb20vbXkvZW5kcG9pbnQgLS1TcGVjTG9jYXRpb24gaHR0cDovL2V4YW1wbGUuY29tL215L3NwZWNpZmljYXRpb24ueWFtbGAKCiMjIyBIb3RQb3RhdG8uQ29yZQoKYEhvdFBvdGF0by5Db3JlYCBjb250YWlucyBhbGwgb2YgdGhlIG1vZGVscywgSFRUUCBsb2dpYywgdGhlIHByb3h5IGZvcndhcmRlciwgYW5kIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBwcm94eSBwcm9jZXNzb3IuIFRoaXMgbGlicmFyeSBpcyBhIGRlcGVuZGVuY3kgb2YgYEhvdFBvdGF0by5Bc3BOZXRDb3JlLk1pZGRsZXdhcmVgIGJ1dCB3aWxsIGxpa2VseSBuZXZlciBuZWVkIHRvIGJlIGRpcmVjdGx5IGNvbnN1bWVkLgoKIyMjIEhvdFBvdGF0by5PcGVuQXBpCgpgSG90UG90YXRvLk9wZW5BcGlgIGNvbnRhaW5zIGFsbCBvZiB0aGUgT3BlbkFQSSBmdW5jdGlvbmFsaXR5IGluY2x1ZGluZyB0aGUgcHJvY2Vzc29yIGltcGxlbWVudGF0aW9uIHRoYXQgdmFsaWRhdGVzIGFuIEhUVFAgcmVxdWVzdC9yZXNwb25zZSBwYWlyIGFnYWluc3QgYSBzcGVjLCBhIHJlc3VsdCBjb2xsZWN0aW9uLCBsb2dpYyB0byBmaW5kIHBhdGhzLCBhbmQgc28gb24uIEN1cnJlbnRseSwgd2UgYXJlIHVzaW5nIHRoZSBwYWNrYWdlcyBgTlN3YWdgLCBgTkpzb25TY2hlbWFgLCBhbmQgYE5Kc29uU2NoZW1hLllhbWxgIHRvIGNvbnN1bWUgYSBzcGVjIGFuZCB0byB2YWxpZGF0ZSB0aGUgY29udGFpbmVkIHNjaGVtYXMuCgo8YSBuYW1lPSJtaWRkbGV3YXJlIj48L2E+CiMjIyBIb3RQb3RhdG8uQXNwTmV0Q29yZS5NaWRkbGV3YXJlCgpUaGlzIGlzIGFuIEFTUC5ORVQgQ29yZSBtaWRkbGV3YXJlIHRoYXQgY2FuIGJlIHVzZWQgaW4gc2l0dWF0aW9ucyB3aGVyZSB0ZXN0IHN1aXRlcyBhcmUgZGlyZWN0bHkgc3RhcnRpbmcgdXAgdGhlIHNlcnZlciBzdGFydHVwIG9yIHVzaW5nIFtgVGVzdFNlcnZlcmBdKGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL2RvdG5ldC9hcGkvbWljcm9zb2Z0LmFzcG5ldGNvcmUudGVzdGhvc3QudGVzdHNlcnZlcikuCgpUaGUgbWFpbiBmYWN0b3IgaW4gc2V0dGluZyB1cCBhIHRlc3Qgc3VpdGUgdG8gdXNlIHRoZSBpc29sYXRlZCBtaWRkbGV3YXJlIGlzIHRoYXQgYmVjYXVzZSBIb3QgUG90YXRvJ3MgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBjcmVhdGUgaXRzIG93biBjbGllbnQgdGhyb3VnaCBESSBzZXR1cCwgYW4gaW5zdGFuY2Ugb2YgdGhlIEFQSSBVbmRlciBUZXN0J3MgY2xpZW50IG11c3QgYmUgY3JlYXRlZCBmaXJzdCB0byBiZSBhYmxlIHRvIGJlIGluamVjdGVkIGludG8gREkuCgojIyMjIFVzaW5nIHRoZSBNaWRkbGV3YXJlIHdpdGggVGVzdFNlcnZlcgoKSW4gb3VyIGV4YW1wbGUgW3Rlc3QgZml4dHVyZV0oaHR0cHM6Ly9naXRodWIuY29tL0h5bGFuZFNvZnR3YXJlL0hvdC1Qb3RhdG8vYmxvYi9tYXN0ZXIvdGVzdC9Ib3RQb3RhdG8uVGVzdFNlcnZlci5UZXN0L1Rlc3RGaXh0dXJlLmNzKSwgd2UgdXNlIHR3byBpbnN0YW5jZXMgb2YgVGVzdFNlcnZlcjogb25lIHRvIGNyZWF0ZSB0aGUgY2xpZW50IHJlcHJlc2VudGluZyB0aGUgQVBJIFVuZGVyIFRlc3QsIGFuZCBvbmUgdGhhdCBjb25zdW1lcyB0aGlzIGNsaWVudCB0byBjcmVhdGUgYSBuZXcgY2xpZW50IGhvdXNpbmcgdGhlIEhvdCBQb3RhdG8gcHJveHkuCgpGaXJzdCwgd2UgZGVmaW5lIGEgVGVzdEZpeHR1cmUgY2xhc3MgdG8gdXNlIGEgZ2VuZXJpYyBTdGFydHVwIHJlZmVyZW5jZSB0eXBlOgogYGBgY3NoYXJwCnB1YmxpYyBjbGFzcyBUZXN0Rml4dHVyZTxUU3RhcnR1cD4gOiBJRGlzcG9zYWJsZSB3aGVyZSBUU3RhcnR1cCA6IGNsYXNzCiBgYGAKCk5leHQsIFRlc3RTZXJ2ZXIgZG9lc24ndCBhY3R1YWxseSBsaXN0ZW4gb24gYW4gYWRkcmVzcywgYnV0IGl0IG5lZWRzIGEgcGxhY2Vob2xkZXIgQmFzZUFkZHJlc3MgdG8gYmUgdXNlZCBieSB0aGUgSHR0cFJlcXVlc3QgY29uc3RydWN0b3JzLiBJbiBvdXIgZXhhbXBsZSwgd2UgdXNlIGxvY2FsaG9zdDo1MDAwIGZvciB0aGUgVGVzdFNlcnZlciBob3VzaW5nIHRoZSBBUEkgYW5kIGxvY2FsaG9zdDozMjMyIGZvciB0aGUgVGVzdFNlcnZlciBob3VzaW5nIHRoZSBIb3QgUG90YXRvIHByb3h5IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgcmVzdCBvZiBvdXIgdGVzdGluZy4gVGhlc2UgY2FuIGJlIHNldCB0byBhbnl0aGluZyBhcyBsb25nIGFzIHRoZXkgYXJlIHZhbGlkIFVSSXMuCgpgYGAKcHJpdmF0ZSBjb25zdCBzdHJpbmcgQXBpU2VydmVyQWRkcmVzcyA9ICJodHRwOi8vbG9jYWxob3N0OjUwMDAiOwpwcml2YXRlIGNvbnN0IHN0cmluZyBIb3RQb3RhdG9BZGRyZXNzID0gImh0dHA6Ly9sb2NhbGhvc3Q6MzIzMiI7CmBgYAoKVGhlbiB3ZSBjcmVhdGUgYSBUZXN0U2VydmVyIGluc3RhbmNlIHVzaW5nIHRoZSBTdGFydHVwIHR5cGUgdG8gY3JlYXRlIGEgY2xpZW50OgpgYGBjc2hhcnAKdmFyIGFwaUJ1aWxkZXIgPSBuZXcgV2ViSG9zdEJ1aWxkZXIoKQogICAgLlVzZVN0YXJ0dXA8VFN0YXJ0dXA+KCk7CgphcGlTZXJ2ZXIgPSBuZXcgVGVzdFNlcnZlcihhcGlCdWlsZGVyKTsKYXBpU2VydmVyLkJhc2VBZGRyZXNzID0gbmV3IFVyaShUZXN0U2VydmVyQWRkcmVzcyk7CgpIb3RQb3RhdG9DbGllbnQgYXBpQ2xpZW50ID0gbmV3IEhvdFBvdGF0b0NsaWVudChhcGlTZXJ2ZXIuQ3JlYXRlQ2xpZW50KCkpOwpgYGAKCk5vdyB0aGF0IHdlIGhhdmUgYSBjbGllbnQgY3JlYXRlZCBmb3IgdGhlIEFQSSBVbmRlciBUZXN0LCB3ZSBjYW4gYnVpbGQgb3VyIHdlYiBob3N0IGFuZCBpbmplY3QgaXQgaW50byB0aGUgVGVzdCBTZXJ2ZXIuClRoaXMgaXMgZG9uZSBpbiBvdXIgZml4dHVyZSBzZXR1cCwgYnV0IGNhbiBhbHNvIGJlIHBsYWNlZCBpbiBhIGN1c3RvbSBTdGFydHVwIGNsYXNzOgoKYGBgY3NoYXJwCnZhciBob3RQb3RhdG9CdWlsZGVyID0gbmV3IFdlYkhvc3RCdWlsZGVyKCkKICAgIC8vU2V0dGluZyB0aGlzIGhlcmUgaW5zdGVhZCBvZiBpbiBhcHBzZXR0aW5ncy5qc29uIHNvIGl0IGFsd2F5cyBtYXRjaGVzIHRoZSBCYXNlQWRkcmVzcyBvbiBUZXN0U2VydmVyCiAgICAuVXNlU2V0dGluZygiUmVtb3RlRW5kcG9pbnQiLCBUZXN0U2VydmVyQWRkcmVzcykKICAgIC5Db25maWd1cmVBcHBDb25maWd1cmF0aW9uKChob3N0aW5nQ29udGV4dCwgY29uZmlnKSA9PgogICAgewogICAgICAgIGNvbmZpZy5TZXRCYXNlUGF0aChob3N0aW5nQ29udGV4dC5Ib3N0aW5nRW52aXJvbm1lbnQuQ29udGVudFJvb3RQYXRoKQogICAgICAgICAgICAuQWRkSnNvbkZpbGUoImFwcHNldHRpbmdzLmpzb24iLCBvcHRpb25hbDogdHJ1ZSk7CiAgICB9KQogICAgLkNvbmZpZ3VyZVNlcnZpY2VzKHNlcnZpY2VzID0+CiAgICB7CiAgICAgICAgc2VydmljZXMuQ29uZmlndXJlTWlkZGxld2FyZVNlcnZpY2VzKGFwaUNsaWVudCk7CiAgICB9KQogICAgLkNvbmZpZ3VyZShidWlsZGVyID0+CiAgICB7CiAgICAgICAgYnVpbGRlci5Vc2VNaWRkbGV3YXJlPEhvdFBvdGF0b01pZGRsZXdhcmU+KCk7CiAgICB9KTsKCiAgICBob3RQb3RhdG9TZXJ2ZXIgPSBuZXcgVGVzdFNlcnZlcihob3RQb3RhdG9CdWlsZGVyKTsKICAgIGhvdFBvdGF0b1NlcnZlci5CYXNlQWRkcmVzcyA9IG5ldyBVcmkoSG90UG90YXRvQWRkcmVzcyk7CmBgYAoKQW4gaW1wb3J0YW50IHBhcnQgb2YgdGhpcyBidWlsZGVyIGlzIHRoZSBsaW5lOgpgYGBjc2hhcnAKc2VydmljZXMuQ29uZmlndXJlTWlkZGxld2FyZVNlcnZpY2VzKGFwaUNsaWVudCk7CmBgYApgQ29uZmlndXJlTWlkZGxld2FyZVNlcnZpY2VzYCBpcyBhbiBleHRlbnNpb24gbWV0aG9kIGZvdW5kIGluIHRoZSBBc3BOZXRDb3JlLk1pZGRsZXdhcmUgcHJvamVjdCB0aGF0IGFkZHMgdGhlIGNsaWVudCB0byBESSBhcyB3ZWxsIGFzIGFsbCB0aGUgc2VydmljZXMgbmVjZXNzYXJ5IHRvIHVzZSB0aGUgTWlkZGxld2FyZS4KClRoZXNlIHNlcnZpY2VzIGFyZSBgSVByb3h5YCwgYElTcGVjaWZpY2F0aW9uUHJvaXZkZXJgLCBgSVJlc3VsdENvbGxlY3RvcmAsIGFuZCBgSVByb2Nlc3NvcmAuCgpXZSBzZXQgdGhlIGZpeHR1cmUncyBwdWJsaWMgbWVtYmVycyBvZiBSZXN1bHRzIHRvIHRoZSBMaXN0PFJlc3VsdD4gbWVtYmVyIG9mIHRoZSBJUmVzdWx0Q29sbGVjdG9yIGFuZCBDbGllbnQgdG8gdGhlIGNsaWVudCBjcmVhdGVkIHdpdGggdGhlIEhvdCBQb3RhdG8gVGVzdFNlcnZlcjoKYGBgY3NoYXJwClJlc3VsdHMgPSBob3RQb3RhdG9TZXJ2ZXIuSG9zdC5TZXJ2aWNlcy5HZXRTZXJ2aWNlPElSZXN1bHRDb2xsZWN0b3I+KCkuUmVzdWx0czsKQ2xpZW50ID0gbmV3IEhvdFBvdGF0b0NsaWVudChob3RQb3RhdG9TZXJ2ZXIuQ3JlYXRlQ2xpZW50KCkpOwpgYGAKClRoZW4gd2UgdXNlIHRoZW0gbGlrZSBzbyBpbiBhIHRlc3QgdG8gc2VuZCByZXF1ZXN0cyBhbmQgdmVyaWZ5IHRoZSB2YWxpZGF0aW9uIHJlc3VsdHM6CmBgYGNzaGFycAphd2FpdCBjbGllbnQuU2VuZEFzeW5jKHJlcSk7CgpSZXN1bHQgcmVzdWx0ID0gcmVzdWx0cy5FbGVtZW50QXQoMCk7CgpBc3NlcnQuRXF1YWwoU3RhdGUuUGFzcywgcmVzdWx0LlN0YXRlKTsKYGBgCgpNYWtlIHN1cmUgdG8gY2FsbCBgcmVzdWx0cy5DbGVhcigpYCBpbiBhIGBEaXNwb3NlKClgIG1ldGhvZCBpbiBYVW5pdCBvciBhIGBbVGVhcmRvd25dYCBtZXRob2QgaW4gTlVuaXQuIEFub3RoZXIgb3B0aW9uIGlzIHRvIGNhbGwgYHJlc3VsdHMuQ2xlYXJgIGluIHRoZSBgZmluYWxseWAgYmxvY2sgb2YgYSB0cnktZmluYWxseSBzdGF0ZW1lbnQgY29udGFpbmluZyB0aGUgdGVzdCBmaXh0dXJlLiAKClRoZSBmdWxsIGV4YW1wbGUgdGVzdCBjYW4gYmUgZm91bmQgYXQgW1Jhd1BvdGF0b1Rlc3QuY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9IeWxhbmRTb2Z0d2FyZS9Ib3QtUG90YXRvL2Jsb2IvbWFzdGVyL3Rlc3QvSG90UG90YXRvLlRlc3RTZXJ2ZXIuVGVzdC9SYXdQb3RhdG9UZXN0LmNzKS4KCiMjIyMgVXNpbmcgTWlkZGxld2FyZS9UZXN0U2VydmVyIHdpdGggU3RhcnR1cHMgaW4gc2VwYXJhdGUgdGVzdCBwcm9qZWN0cwoKQXMgbWVudGlvbmVkIGFib3ZlLCB0aGUgZml4dHVyZSBzZXR1cCBjYW4gYmUgZG9uZSBpbiBhIFN0YXJ0dXAgY2xhc3MsIGFuZCB0byBhdm9pZCByZS13cml0aW5nIHRoZSBzYW1lIGNvZGUgaW4gbXVsdGlwbGUgdGVzdCBwcm9qZWN0cywgdGhlIFN0YXJ0dXAgY2xhc3MgZnJvbSBvbmUgdGVzdCBwcm9qZWN0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IGFub3RoZXIuIFdoZW4gY2hvb3NpbmcgdGhpcyByb3V0ZSwgdGhlIHRlc3QgU3RhcnR1cCBjbGFzcyB3aWxsIG5lZWQgdG8gYmUgcmVnaXN0ZXJlZCBhcyBhIE1WQyBBcHBsaWNhdGlvbiBQYXJ0IHdpdGggdGhlIGxpbmUgYHNlcnZpY2VzLkFkZE12YygpLkFkZEFwcGxpY2F0aW9uUGFydCh0eXBlb2YoU3RhcnR1cCkuQXNzZW1ibHkpO2AuCgpgYGBjc2hhcnAKcHVibGljIG92ZXJyaWRlIHZvaWQgQ29uZmlndXJlU2VydmljZXMoSVNlcnZpY2VDb2xsZWN0aW9uIHNlcnZpY2VzKQp7CiAgICBzdGFydHVwLkNvbmZpZ3VyZVNlcnZpY2VzKHNlcnZpY2VzKTsKCiAgICBzZXJ2aWNlcy5BZGRNdmMoKS5BZGRBcHBsaWNhdGlvblBhcnQodHlwZW9mKFN0YXJ0dXApLkFzc2VtYmx5KTsKCiAgICAvL2N1c3RvbSBjb2RlIGhlcmUKfQpgYGAKCjxhIG5hbWU9InBvc3RtYW4iPjwvYT4KIyMgVGVzdGluZyB3aXRoIFBvc3RtYW4KCkVuZC10by1FbmQgdGVzdHMgdXNpbmcgSG90IFBvdGF0byBjYW4gYmUgcnVuIHdpdGggUG9zdG1hbiBib3RoIGxvY2FsbHkgYW5kIHRocm91Z2ggYSBwaXBlbGluZSBhbHNvIHVzaW5nIE5ld21hbi4KClRvIHVzZSBQb3N0bWFuIGxvY2FsbHksIHlvdSBtdXN0IGhhdmUgaW5zdGFuY2VzIG9mIGJvdGggdGhlIEhvdCBQb3RhdG8gc2VydmVyIGFuZCB5b3VyIEFQSSBzZXJ2ZXIgcnVubmluZy4KCkZvciBvdXIgdGVzdCBwcm9qZWN0LCB3ZSBwcm92aWRlZCBvdXIgb3duIHNhbXBsZSBIb3QgUG90YXRvIEFQSSwgd2hpY2ggY2FuIGJlIGZvdW5kIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vSHlsYW5kU29mdHdhcmUvSG90LVBvdGF0by90cmVlL21hc3Rlci90ZXN0L0hvdFBvdGF0by5BcGkpLgoKT25jZSB5b3VyIFN5c3RlbSBVbmRlciBUZXN0IGlzIHJlYWR5LCB5b3UgbWF5IHN0YXJ0IHdyaXRpbmcgUG9zdG1hbiByZXF1ZXN0cyB3aXRoIHRoZSBiYXNlIGFkZHJlc3Mgb2YgbG9jYWxob3N0OjMyMzIuClRvIGNoZWNrIHRoZSByZXN1bHRzIG9mIHRoZXNlIHJlcXVlc3RzLCB5b3UgY2FuIHF1ZXJ5IHRoZSByZXN1bHRzIGVuZHBvaW50IGFzIHNob3duIGluIHRoZSBbUmVzdWx0c10oI3Jlc3VsdHMpIHNlY3Rpb24gYWJvdmUuCgpZb3UgbWF5IGFsc28gY3JlYXRlIHRoZXNlIHJlcXVlc3RzIGFzIHBhcnQgb2YgYSBjb2xsZWN0aW9uLCB3aGljaCB3aWxsIGFsbG93IGZvciB0aGUgY3JlYXRpb24gb2YgdGVzdCBzZXRzLCBhbmQgdGhlIGFiaWxpdHkgZm9yIHRoZW0gdG8gYmUgZXhwb3J0ZWQgYW5kIHJ1biBieSBhIHBpcGVsaW5lLgoKSWYgeW91IGFyZSBub3QgZmFtaWxpYXIgd2l0aCBjcmVhdGluZyBjb2xsZWN0aW9ucyBhbmQgd3JpdGluZyB0ZXN0cyBpbiBQb3N0bWFuLCBtb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgbGlua3MgYmVsb3c6CgpbQ29sbGVjdGlvbnNdKGh0dHBzOi8vbGVhcm5pbmcuZ2V0cG9zdG1hbi5jb20vZG9jcy9wb3N0bWFuL2NvbGxlY3Rpb25zL2NyZWF0aW5nLWNvbGxlY3Rpb25zLykKCltUZXN0c10oaHR0cHM6Ly9sZWFybmluZy5nZXRwb3N0bWFuLmNvbS9kb2NzL3Bvc3RtYW4vc2NyaXB0cy90ZXN0X3NjcmlwdHMvKQoKVGVzdHMgd2lsbCB1c3VhbGx5IGNoZWNrIGZvciBjcml0aWNhbCBpbmZvcm1hdGlvbiBzdWNoIGFzIGlmIHRoZSBjb3JyZWN0IHN0YXR1cyBjb2RlIGFuZCBib2R5IGFyZSBiZWluZyByZXR1cm5lZCBjb3JyZWN0bHkgaW4gdGhlIHJlc3BvbnNlLgoKRXhhbXBsZXMgY2FuIGJlIGZvdW5kIGluIG91ciBIYXBweVBhdGggY29sbGVjdGlvbiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL0h5bGFuZFNvZnR3YXJlL0hvdC1Qb3RhdG8vYmxvYi9tYXN0ZXIvdGVzdC9IYXBweVBhdGhUZXN0cy5wb3N0bWFuX2NvbGxlY3Rpb24uanNvbikuCgoqKkNoZWNrIHRoYXQgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIHRoZSBjb3JyZWN0IHN0YXR1cyBjb2RlIGFuZCBleHBlY3RlZCBib2R5KioKYGBgamF2YXNjcmlwdApwbS50ZXN0KFwiTGFuZGluZ1BhZ2UgcmV0dXJucyAyMDAgT0tcIiwgZnVuY3Rpb24gKCkgewoJcG0ucmVzcG9uc2UudG8uaGF2ZS5zdGF0dXMoMjAwKQp9KQoKcG0udGVzdChcIkxhbmRpbmdQYWdlIHJldHVybnMgZXhwZWN0ZWQgYm9keSBcIiwgZnVuY3Rpb24gKCkgewoJcG0ucmVzcG9uc2UudG8uaGF2ZS5ib2R5KFwiaHR0cHM6Ly9naXRodWIuY29tL0h5bGFuZFNvZnR3YXJlL0hvdC1Qb3RhdG9cIikKfSkKYGBgCgpBdCB0aGUgZW5kIG9mIGVhY2ggY29sbGVjdGlvbiwgYSBHRVQgcmVxdWVzdCBjYW4gYmUgc2VudCB0byB0aGUgL3Jlc3VsdHMgZW5kcG9pbnQgc28gdGhhdCB0aGUgbGlzdCBvZiByZXN1bHRzIGNhbiBiZSB0ZXN0ZWQuCldlIHNwbGl0IG91ciB0ZXN0IHN1aXRlIGludG8gdGhyZWUgZGlmZmVyZW50IGNvbGxlY3Rpb25zIG9mIEhhcHB5UGF0aCwgTm9uLUNvbmZvcm1hbnQsIGFuZCBOb3RJblNwZWMgdGVzdHMsIHNvIHRoYXQgd2UgY291bGQgZWFzaWx5IGNoZWNrIGlmIGVhY2ggY29sbGVjdGlvbiBvbmx5IGNvbnRhaW5lZCBlaXRoZXIgYWxsICdQYXNzJyBvciBhbGwgJ0ZhaWwnIHJlc3VsdHMuCgoqKkNoZWNrIHRoYXQgdGhlIEhhcHB5UGF0aCByZXN1bHRzIGRvIG5vdCBjb250YWluIGZhaWwgcmVzdWx0cyoqCmBgYGphdmFzY3JpcHQKcG0udGVzdChcIlJlc3VsdHMgc2hvdWxkIG5vdCBjb250YWluIEZhaWxcIiwgZnVuY3Rpb24gKCkgewoJcG0uZXhwZWN0KHBtLnJlc3BvbnNlLnRleHQoKSkudG8ubm90LmluY2x1ZGUoXCJGYWlsXCIpCn0pCmBgYAoKTWFrZSBzdXJlIHRvIHNlbmQgYSBERUxFVEUgcmVxdWVzdCBhdCB0aGUgZW5kIG9mIHlvdXIgY29sbGVjdGlvbiBzbyB0aGF0IHRoZSByZXN1bHRzIGZyb20gY29sbGVjdGlvbiBkbyBub3QgY2Fycnkgb3ZlciB0byB0aGUgbmV4dC4K readmeEtag: '"b6e9c3c9fc8432ca35d8f53c2db9cfcf8ff39fa2"' readmeLastModified: Fri, 15 Sep 2023 01:15:45 GMT repositoryId: 623048998 description: >- ASP.NET Core proxy that will validate an API's conformance to an OpenAPI spec. created: '2023-04-03T15:34:48Z' updated: '2025-11-09T08:05:40Z' language: C# archived: false stars: 6 watchers: 1 forks: 1 owner: davidmbillie logo: https://avatars.githubusercontent.com/u/13511813?v=4 license: MIT-0 repoEtag: '"e026b9988d49f45bb8bef94e106dadb18c5f34565920c269323e20b60144b40a"' repoLastModified: Sun, 09 Nov 2025 08:05:40 GMT foundInMaster: true - source: https://openapi.tools/ name: Specmatic category: - Mock - Testing language: - Any - CLI repository: https://github.com/specmatic/specmatic link: https://specmatic.in/ source_description: >- Specmatic enables teams to practice Contract-Driven Development by leveraging OpenAPI specifications as Executable Contracts to reduce time-to-market by allowing teams to build, test and deploy their MicroServices and MicroFrontends independently and Shift-Left the identification of compatibility issues between Components / Services in complex interdependent systems such as those built with MicroServices architecture. In the process it reduces / removes the need for Integration Testing. v3: true id: 8b74578a6a8f45ec1dd9606eac23cc1a repositoryMetadata: base64Readme: >- U3BlY21hdGljCj09PT09PT09PQpbIVtNYXZlbiBDZW50cmFsXShodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLWNlbnRyYWwvdi9pby5zcGVjbWF0aWMvc3BlY21hdGljLWNvcmUuc3ZnKV0oaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9pby5zcGVjbWF0aWMvc3BlY21hdGljLWNvcmUpIFshW0dpdEh1YiByZWxlYXNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi92L3JlbGVhc2Uvc3BlY21hdGljL3NwZWNtYXRpYy5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc3BlY21hdGljL3NwZWNtYXRpYy9yZWxlYXNlcykgIVtDSSBCdWlsZF0oaHR0cHM6Ly9naXRodWIuY29tL3NwZWNtYXRpYy9zcGVjbWF0aWMvd29ya2Zsb3dzL0NJJTIwQnVpbGQvYmFkZ2Uuc3ZnKSBbIVtUd2l0dGVyIEZvbGxvd10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90d2l0dGVyL2ZvbGxvdy9zcGVjbWF0aWMuc3ZnP3N0eWxlPXNvY2lhbCZsYWJlbD1Gb2xsb3cpXShodHRwczovL3R3aXR0ZXIuY29tL3NwZWNtYXRpYykgWyFbRG9ja2VyIFB1bGxzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2RvY2tlci9wdWxscy9zcGVjbWF0aWMvc3BlY21hdGljLnN2ZyldKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9zcGVjbWF0aWMvc3BlY21hdGljKQoKIyMjIyMgU2hpcCBBSS1SZWFkeSBBUElzIDEweCBGYXN0ZXIgd2l0aCBaZXJvIEludGVncmF0aW9uIEhlYWRhY2hlcwpFbGltaW5hdGUgQVBJIGludGVncmF0aW9uIGhlYWRhY2hlcyB3aXRoIFNwZWNtYXRpYydzIG5vLWNvZGUgQUktcG93ZXJlZCBBUEkgZGV2ZWxvcG1lbnQgc3VpdGUuIFRlYW1zIHNoaXAgQVBJcyAxMHggZmFzdGVyIGJ5IHRyYW5zZm9ybWluZyBzcGVjaWZpY2F0aW9ucyBpbnRvIGV4ZWN1dGFibGUgY29udHJhY3RzIGluc3RhbnRseeKAlG5vIGNvZGluZyByZXF1aXJlZCwgbm8gaW50ZWdyYXRpb24gc3VycHJpc2VzLgoKIyMjIENvbnRleHQKCkluIGEgY29tcGxleCwgaW50ZXJkZXBlbmRlbnQgZWNvc3lzdGVtLCB3aGVyZSBlYWNoIHNlcnZpY2UgaXMgZXZvbHZpbmcgcmFwaWRseSwgd2Ugd2FudCB0byBtYWtlIHRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGVtIGV4cGxpY2l0IGluIHRoZSBmb3JtIG9mIGV4ZWN1dGFibGUgY29udHJhY3RzLiBbQ29udHJhY3QgRHJpdmVuIERldmVsb3BtZW50XShodHRwczovL3NwZWNtYXRpYy5pby9jb250cmFjdF9kcml2ZW5fZGV2ZWxvcG1lbnQuaHRtbCkgbGV2ZXJhZ2VzIEFQSSBzcGVjaWZpY2F0aW9ucyBsaWtlIFtPcGVuQVBJXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnLyNvcGVuYXBpLXNwZWNpZmljYXRpb24pLCBbQXN5bmNBUEldKGh0dHBzOi8vd3d3LmFzeW5jYXBpLmNvbS8pLCBbR3JhcGhRTF0oaHR0cHM6Ly9ncmFwaHFsLm9yZy8pIFNETCBmaWxlcywgW2dSUENdKGh0dHBzOi8vZ3JwYy5pby8pIFByb3RvIGZpbGVzLCBldGMuIGFzIGV4ZWN1dGFibGUgY29udHJhY3RzIGFsbG93aW5nIHRlYW1zIHRvIGdldCBpbnN0YW50YW5lb3VzIGZlZWRiYWNrIHdoaWxlIG1ha2luZyBjaGFuZ2VzIHRvIGF2b2lkIGFjY2lkZW50YWwgYnJlYWthZ2UuCgpXaXRoIHRoaXMgYWJpbGl0eSwgd2UgY2FuIG5vdyBpbmRlcGVuZGVudGx5IGRlcGxveSwgYXQgd2lsbCwgYW55IHNlcnZpY2UgYXQgYW55IHRpbWUgd2l0aG91dCBoYXZpbmcgdG8gZGVwZW5kIG9uIGV4cGVuc2l2ZSBhbmQgZnJhZ2lsZSBpbnRlZ3JhdGlvbiB0ZXN0cy4KCkxlYXJuIG1vcmUgYXQgW3NwZWNtYXRpYy5pb10oaHR0cHM6Ly9zcGVjbWF0aWMuaW8vI2ZlYXR1cmVzKSDwn4yQCgpbR2V0IHN0YXJ0ZWQgbm93XShodHRwczovL3NwZWNtYXRpYy5pby9nZXR0aW5nX3N0YXJ0ZWQuaHRtbCkg8J+agAoKWyFbU3BlY21hdGljIC0gQ29udHJhY3QgRHJpdmVuIERldmVsb3BtZW50IC0gWW91VHViZSBwbGF5bGlzdF0oaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvSzVCWXhvT05nWG8vMC5qcGcpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUs1Qll4b09OZ1hvJmxpc3Q9UEw5Wi1KZ2lUc09ZUkVSY3N5OW8zeTZuc2k1eUszSUJfdykKCltZb3VUdWJlIHBsYXlsaXN0XShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUs1Qll4b09OZ1hvJmxpc3Q9UEw5Wi1KZ2lUc09ZUkVSY3N5OW8zeTZuc2k1eUszSUJfdykg8J+Tugo= readmeEtag: '"e77d844b6a4cbce952f6e840284e016189dbf7b6"' readmeLastModified: Wed, 03 Sep 2025 11:34:09 GMT repositoryId: 247710440 description: >- Eliminate API integration headaches with Specmatic's no-code AI-powered API development suite. Teams ship APIs 10x faster by transforming specifications into executable contracts instantly—no coding required, no integration surprises. created: '2020-03-16T13:33:07Z' updated: '2026-02-05T05:38:36Z' language: Kotlin archived: false stars: 354 watchers: 10 forks: 60 owner: specmatic logo: https://avatars.githubusercontent.com/u/80689899?v=4 license: MIT repoEtag: '"1f72b1d2b4f721ad303d9d1c55792c320125a13e94ac40b2797e113ed61d9236"' repoLastModified: Thu, 05 Feb 2026 05:38:36 GMT foundInMaster: true oldLocations: - https://github.com/znsio/specmatic - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/pb33f/openapi-changes v3: true id: fc8c62141b92d4a5935d734bb4b51767 repositoryMetadata: base64Readme: >- CiFbbG9nb10ob3BlbmFwaS1jaGFuZ2VzLWxvZ28ud2VicCkKClshW2Rpc2NvcmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZGlzY29yZC85MjMyNTgzNjM1NDA4MTU5MTIpXShodHRwczovL2Rpc2NvcmQuZ2cveDdWQUNWdUVHUCkKWyFbR2l0SHViIGRvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvZG93bmxvYWRzL3BiMzNmL29wZW5hcGktY2hhbmdlcy90b3RhbD9sYWJlbD1naXRodWIlMjBkb3dubG9hZHMmc3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL2dpdGh1Yi5jb20vcGIzM2Yvd2lyZXRhcC9yZWxlYXNlcykKWyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kbS9AcGIzM2Yvb3BlbmFwaS1jaGFuZ2VzP3N0eWxlPWZsYXQtc3F1YXJlJmxhYmVsPW5wbSUyMGRvd25sb2FkcyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BwYjMzZi9vcGVuYXBpLWNoYW5nZXMpClshW0RvY2tlciBQdWxsc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvcHVsbHMvcGIzM2Yvb3BlbmFwaS1jaGFuZ2VzP3N0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL3BiMzNmL29wZW5hcGktY2hhbmdlcykKCiMgT3BlbkFQSSBDaGFuZ2VzCgojIyBUaGUgd29ybGQncyAqKl9zZXhpZXN0XyoqIE9wZW5BUEkgZGlmZiB0b29sLgoKV2Ugd2lsbCBnZXQgdG8gdGhlIHNleHkgcGFydCBpbiBhIG1vbWVudCwgYnV0IGluIGEgbnV0c2hlbGwgYG9wZW5hcGktY2hhbmdlc2AgYWxsb3dzIHlvdSAKdG8gc2VlIGFuZCBleHBsb3JlIHdoYXQgaGFzIGNoYW5nZWQgd2l0aCB5b3VyIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiwgYmV0d2VlbiBhIHNpbmdsZSBjaGFuZ2UsIApvciBmb3IgYWxsIHRpbWUhIAoKRXhwbG9yZSBPcGVuQVBJIGNoYW5nZSBoaXN0b3J5IHVzaW5nIGEgdGVybWluYWwgb3IgYSBicm93c2VyLCB5b3UgZGVjaWRlIHdoaWNoIGV4cGVyaWVuY2Ugc3VpdHMgeW91LiBQZXJmZWN0IGZvcgppbmRpdmlkdWFsIHVzZSwgb3IgaW4gYSBDSS9DRCBwaXBlbGluZSBmb3IgYXV0b21hdGlvbi4KCj4gVGhpcyBpcyBhbiBlYXJseSB0b29sIGFuZCBpcyBhY3RpdmUsIGRhaWx5IGRldmVsb3BtZW50CgojIyBIb3cgaXMgaXQgdGhlICdzZXhpZXN0Jz8KCkhhdmUgeW91IGV2ZXIgc2VlbiBhbiBPcGVuQVBJIGRpZmYgcmVwb3J0IGxvb2sgbGlrZSB0aGlzPwoKIVtdKGh0dHBzOi8vZ2l0aHViLmNvbS9wYjMzZi9vcGVuYXBpLWNoYW5nZXMvYmxvYi9tYWluLy5naXRodWIvYXNzZXRzL3VpLmdpZikKCldoYXQgYWJvdXQgYSB0ZXJtaW5hbCBVSSB0aGF0IGRvZXMgdGhlIHNhbWU/CgohW10oaHR0cHM6Ly9naXRodWIuY29tL3BiMzNmL29wZW5hcGktY2hhbmdlcy9ibG9iL21haW4vLmdpdGh1Yi9hc3NldHMvY29uc29sZS5naWYpCgotLS0KCgojIyBEb2N1bWVudGF0aW9uCgojIyMg8J+RiSBb4pqhIFRyeSB0aGUgb25saW5lIERlbW8g4pqhXShodHRwczovL3BiMzNmLmlvL29wZW5hcGktY2hhbmdlcy9kZW1vLykg8J+RiAoKIyMjIFtRdWljayBTdGFydCBHdWlkZSDwn5qAXShodHRwczovL3BiMzNmLmlvL29wZW5hcGktY2hhbmdlcy9xdWlja3N0YXJ0LykKClNlZSBhbGwgdGhlIGRvY3VtZW50YXRpb24gYXQgaHR0cHM6Ly9wYjMzZi5pby9vcGVuYXBpLWNoYW5nZXMvCgotIFtJbnN0YWxsaW5nIG9wZW5hcGktY2hhbmdlc10oaHR0cHM6Ly9wYjMzZi5pby9vcGVuYXBpLWNoYW5nZXMvaW5zdGFsbGluZy8pCi0gW0NvbmZpZ3VyaW5nIGJyZWFraW5nIGNoYW5nZXNdKGh0dHBzOi8vcGIzM2YuaW8vb3BlbmFwaS1jaGFuZ2VzL2NvbmZpZ3VyaW5nLykKLSBbQ29tbWFuZCBhcmd1bWVudHNdKGh0dHBzOi8vcGIzM2YuaW8vb3BlbmFwaS1jaGFuZ2VzL2NvbW1hbmQtYXJndW1lbnRzLykKLSBDTEkgQ29tbWFuZHMKICAgIC0gW2Bjb25zb2xlYCBjb21tYW5kXShodHRwczovL3BiMzNmLmlvL29wZW5hcGktY2hhbmdlcy9jb25zb2xlLykKICAgIC0gW2BodG1sLXJlcG9ydGAgY29tbWFuZF0oaHR0cHM6Ly9wYjMzZi5pby9vcGVuYXBpLWNoYW5nZXMvaHRtbC1yZXBvcnQvKQogICAgLSBbYHJlcG9ydGAgY29tbWFuZF0oaHR0cHM6Ly9wYjMzZi5pby9vcGVuYXBpLWNoYW5nZXMvcmVwb3J0LykKICAgIC0gW2BzdW1tYXJ5YCBjb21tYW5kXShodHRwczovL3BiMzNmLmlvL29wZW5hcGktY2hhbmdlcy9zdW1tYXJ5LykKLSBbQWJvdXQgb3BlbmFwaS1jaGFuZ2VzXShodHRwczovL3BiMzNmLmlvL29wZW5hcGktY2hhbmdlcy9hYm91dC8pCgotLS0KIApBcmUgeW91IHJlYWR5IHRvIHRyeSBpdCBvdXQ/CgojIyBJbnN0YWxsIHVzaW5nIGhvbWVicmV3IHRhcAoKYGBgYmFzaApicmV3IGluc3RhbGwgcGIzM2YvdGFwcy9vcGVuYXBpLWNoYW5nZXMKYGBgCgotLS0KCiMjIEluc3RhbGwgdXNpbmcgbnBtIG9yIHlhcm4KCmBgYGJhc2gKbnBtIGkgLWcgQHBiMzNmL29wZW5hcGktY2hhbmdlcwpgYGAKCklmIHlvdSBwcmVmZXIgeWFybiBfKHJlY29tbWVuZGVkKV8KCmBgYGJhc2gKeWFybiBnbG9iYWwgYWRkIEBwYjMzZi9vcGVuYXBpLWNoYW5nZXMKYGBgCgotLS0KCiMjIEluc3RhbGwgdXNpbmcgY1VSTAoKYGBgYmFzaApjdXJsIC1mc1NMIGh0dHBzOi8vcGIzM2YuaW8vb3BlbmFwaS1jaGFuZ2VzL2luc3RhbGwuc2ggfCBzaCAKYGBgCi0tLQoKIyMgSW5zdGFsbC9ydW4gdXNpbmcgRG9ja2VyCgpgYGBiYXNoCmRvY2tlciBwdWxsIHBiMzNmL29wZW5hcGktY2hhbmdlcwpgYGAKCkRvY2tlciBpbWFnZXMgYXJlIGF2YWlsYWJsZSBmb3IgYm90aCBgbGludXgvYW1kNjRgIGFuZCBgbGludXgvYXJtNjRgIGFyY2hpdGVjdHVyZXMuCgpUbyBydW4sIG1vdW50IHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyIHRvIHRoZSBjb250YWluZXIgbGlrZSBzbzoKCmBgYApkb2NrZXIgcnVuIC0tcm0gLXYgJFBXRDovd29yazpydyBwYjMzZi9vcGVuYXBpLWNoYW5nZXMgc3VtbWFyeSAuIHNhbXBsZS1zcGVjcy9wZXRzdG9yZXYzLmpzb24KYGBgCj4gVGhlIGBjb25zb2xlYCBjYW5ub3QgcnVuIHZpYSBkb2NrZXIuCgotLS0KCiMjIEN1c3RvbSBCcmVha2luZyBSdWxlcyBDb25maWd1cmF0aW9uCgo+IFN1cHBvcnRlZCBpbiBgdjAuOTErYAoKb3BlbmFwaS1jaGFuZ2VzIHVzZXMgW2xpYm9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9wYjMzZi9saWJvcGVuYXBpKSdzIGNvbmZpZ3VyYWJsZSBicmVha2luZyBjaGFuZ2UKZGV0ZWN0aW9uIHN5c3RlbS4gWW91IGNhbiBjdXN0b21pemUgd2hpY2ggY2hhbmdlcyBhcmUgY29uc2lkZXJlZCAiYnJlYWtpbmciIGJ5IHByb3ZpZGluZyBhIGNvbmZpZ3VyYXRpb24gZmlsZS4KCiMjIyBVc2luZyBhIENvbmZpZyBGaWxlCgpgYGBiYXNoCiMgVXNlIGV4cGxpY2l0IGNvbmZpZyBmaWxlCm9wZW5hcGktY2hhbmdlcyBzdW1tYXJ5IC1jIG15LXJ1bGVzLnlhbWwgb2xkLnlhbWwgbmV3LnlhbWwKCiMgT3IgcGxhY2UgY2hhbmdlcy1ydWxlcy55YW1sIGluIGN1cnJlbnQgZGlyZWN0b3J5IChhdXRvLWRldGVjdGVkKQpvcGVuYXBpLWNoYW5nZXMgc3VtbWFyeSBvbGQueWFtbCBuZXcueWFtbApgYGAKCiMjIyBEZWZhdWx0IENvbmZpZyBMb2NhdGlvbnMKCm9wZW5hcGktY2hhbmdlcyBzZWFyY2hlcyBmb3IgYGNoYW5nZXMtcnVsZXMueWFtbGAgaW46CjEuIEN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgKGAuL2NoYW5nZXMtcnVsZXMueWFtbGApCjIuIFVzZXIgY29uZmlnIGRpcmVjdG9yeSAoYH4vLmNvbmZpZy9jaGFuZ2VzLXJ1bGVzLnlhbWxgKQoKIyMjIEV4YW1wbGUgQ29uZmlndXJhdGlvbgoKQ3JlYXRlIGEgYGNoYW5nZXMtcnVsZXMueWFtbGAgZmlsZToKCmBgYHlhbWwKIyBDdXN0b20gYnJlYWtpbmcgcnVsZXMgY29uZmlndXJhdGlvbgojIE9ubHkgc3BlY2lmeSBvdmVycmlkZXMgLSB1bnNwZWNpZmllZCBydWxlcyB1c2UgZGVmYXVsdHMKCiMgTWFrZSBvcGVyYXRpb24gcmVtb3ZhbCBub24tYnJlYWtpbmcgKGZvciBkZXByZWNhdGlvbiB3b3JrZmxvd3MpCnBhdGhJdGVtOgogIGdldDoKICAgIHJlbW92ZWQ6IGZhbHNlCiAgcG9zdDoKICAgIHJlbW92ZWQ6IGZhbHNlCiAgcHV0OgogICAgcmVtb3ZlZDogZmFsc2UKICBkZWxldGU6CiAgICByZW1vdmVkOiBmYWxzZQoKIyBNYWtlIGVudW0gdmFsdWUgcmVtb3ZhbCBub24tYnJlYWtpbmcKc2NoZW1hOgogIGVudW06CiAgICByZW1vdmVkOiBmYWxzZQoKIyBNYWtlIHBhcmFtZXRlciBjaGFuZ2VzIG5vbi1icmVha2luZwpwYXJhbWV0ZXI6CiAgcmVxdWlyZWQ6CiAgICBtb2RpZmllZDogZmFsc2UKYGBgCgojIyMgQ29uZmlndXJhdGlvbiBTdHJ1Y3R1cmUKCkVhY2ggcnVsZSBoYXMgdGhyZWUgb3B0aW9uczoKLSBgYWRkZWRgOiBJcyBhZGRpbmcgdGhpcyBwcm9wZXJ0eSBhIGJyZWFraW5nIGNoYW5nZT8gKHRydWUvZmFsc2UpCi0gYG1vZGlmaWVkYDogSXMgbW9kaWZ5aW5nIHRoaXMgcHJvcGVydHkgYSBicmVha2luZyBjaGFuZ2U/ICh0cnVlL2ZhbHNlKQotIGByZW1vdmVkYDogSXMgcmVtb3ZpbmcgdGhpcyBwcm9wZXJ0eSBhIGJyZWFraW5nIGNoYW5nZT8gKHRydWUvZmFsc2UpCgojIyMgQXZhaWxhYmxlIENvbXBvbmVudHMKCllvdSBjYW4gY29uZmlndXJlIHJ1bGVzIGZvciB0aGVzZSBPcGVuQVBJIGNvbXBvbmVudHM6Cgp8IENvbXBvbmVudCAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYHBhdGhzYCAgICAgICAgICAgICAgIHwgUGF0aCBkZWZpbml0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBwYXRoSXRlbWAgICAgICAgICAgICB8IE9wZXJhdGlvbnMgKGdldCwgcG9zdCwgcHV0LCBkZWxldGUsIGV0Yy4pICAgICAgICAgIHwKfCBgb3BlcmF0aW9uYCAgICAgICAgICAgfCBPcGVyYXRpb24gZGV0YWlscyAob3BlcmF0aW9uSWQsIHJlcXVlc3RCb2R5LCBldGMuKSB8CnwgYHBhcmFtZXRlcmAgICAgICAgICAgIHwgUGFyYW1ldGVyIHByb3BlcnRpZXMgKG5hbWUsIHJlcXVpcmVkLCBzY2hlbWEpICAgICAgfAp8IGBzY2hlbWFgICAgICAgICAgICAgICB8IFNjaGVtYSBwcm9wZXJ0aWVzICh0eXBlLCBmb3JtYXQsIGVudW0sIHByb3BlcnRpZXMpIHwKfCBgcmVzcG9uc2VgICAgICAgICAgICAgfCBSZXNwb25zZSBkZWZpbml0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYHNlY3VyaXR5U2NoZW1lYCAgICAgIHwgU2VjdXJpdHkgc2NoZW1lIHByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBzZWN1cml0eVJlcXVpcmVtZW50YCB8IFNlY3VyaXR5IHJlcXVpcmVtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCkZvciB0aGUgY29tcGxldGUgbGlzdCBvZiBjb25maWd1cmFibGUgcHJvcGVydGllcyBhbmQgbW9yZSBleGFtcGxlcywgc2VlIHRoZQpbZnVsbCBjb25maWd1cmF0aW9uIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vcGIzM2YuaW8vb3BlbmFwaS1jaGFuZ2VzL2NvbmZpZ3VyaW5nLykuCgotLS0KCkNoZWNrIG91dCBhbGwgdGhlIGRvY3MgYXQgaHR0cHM6Ly9wYjMzZi5pby9vcGVuYXBpLWNoYW5nZXMvCg== readmeEtag: '"b36e97124926c37ce46b0755e31b2562975be300"' readmeLastModified: Wed, 17 Dec 2025 19:05:44 GMT repositoryId: 571681922 description: >- The world's sexiest OpenAPI breaking changes detector. Discover what changed between two OpenAPI specs, or a single spec over time. Supports OpenAPI 3.1, 3.0 and Swagger created: '2022-11-28T16:53:14Z' updated: '2026-02-01T08:45:55Z' language: Go archived: false stars: 323 watchers: 2 forks: 29 owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: NOASSERTION repoEtag: '"e57aaac704d91090e81b912238fac7272ab84f76de0ae61dcaddfb48fa1e029e"' repoLastModified: Sun, 01 Feb 2026 08:45:55 GMT category: - Data Validators - Testing - Documentation foundInMaster: true name: openapi-changes link: https://pb33f.io/openapi-changes language: go source_description: >- The world's fastest, most beautiful, powerful and detailed OpenAPI change detection tool on earth. Explore every change in An OpenAPI spec. See changes over time, go back into history and see what changed with each commit. Identifies all breaking changes, Powered by libopenapi. v2: true v3_1: true - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/tuwilof/fitting v3: true id: f0e56305d3796a01c1c2b5a5166bc11b repositoryMetadata: base64Readme: >- IyBGaXR0aW5nCgo8aW1nIGFsaWduPSJyaWdodCIgd2lkdGg9IjE5MiIgaGVpZ2h0PSIxOTIiCmFsdD0iRml0dGluZyBhdmF0YXI6IERvY3VtZW50cyB3aXRoIGhhbmdlcnMiCnNyYz0iLi9pbWFnZXMvbG9nby5wbmciPgoKCgpMaWJyYXJ5IGFkZCBpbXByb3ZlIHRlc3QgbG9nLCB2YWxpZGF0ZSBpdHMgYWNjb3JkaW5nIHRvIHlvdXIgQVBJIGRvY3VtZW50YXRpb24sIHNob3cgdGhlIGRvY3VtZW50YXRpb24gY292ZXJhZ2Ugd2l0aCBsb2cuCgpUZXN0IGxvZyBzZXR0aW5nIHN1cHBvcnRzIFJTcGVjIHRlc3QgYW5kIFdlYk1vY2sgc3R1YmJpbmcgZm9yIFJ1YnkgT24gUmFpbHMgYXBwbGljYXRpb24sIEFQSSBkb2N1bWVudGF0aW9uIHN1cHBvcnRzIEFQSSBCbHVlcHJpbnQgYW5kIE9wZW5BUEkuCgpUaGlzIHJlZHVjZXMgdGhlIGNvc3RzIG9mIHN1cHBvcnQsIHRlc3RlcnMgYW5kIGFuYWx5c3RzLgoKW1RlbGVncmFtIGNvbW11bml0eSBmb3IgYW55IEZpdHRpbmcgcmVsYXRlZCBxdWVzdGlvbnNdKGh0dHBzOi8vdC5tZS8rTkZvak1UQ0ZKLTFpTkRZeSkKCkxvZwpgYGB0ZXh0CkZJVFRJTkcgaW5jb21pbmcgcmVxdWVzdCB7Im1ldGhvZCI6IlBPU1QiLCJwYXRoIjoiL3B1YmxpYy9hcGkvdjEvaW5ib3hlcy90RVg1SmlaeWNlaXd1S01pMW9OOVNmOFMvY29udGFjdHMiLCJib2R5Ijp7fSwicmVzcG9uc2UiOnsic3RhdHVzIjoyMDAsImNvbnRlbnRfdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLCJib2R5Ijp7InNvdXJjZV9pZCI6IjAwZGJmMThkLTg3OWUtNDdjYi1hYzQ1LWU5YWVjZTI2NmViMSIsInB1YnN1Yl90b2tlbiI6Imt0bjZZd1B1czU3SkRmNGU1OWVGUG9tNSIsImlkIjozMjkxLCJuYW1lIjoic2h5LXN1cmYtNDAxIiwiZW1haWwiOm51bGwsInBob25lX251bWJlciI6bnVsbH19LCJ0aXRsZSI6Ii4vc3BlYy9jb250cm9sbGVycy9wdWJsaWMvYXBpL3YxL2luYm94L2NvbnRhY3RzX2NvbnRyb2xsZXJfc3BlYy5yYjo5IiwiZ3JvdXAiOiIuL3NwZWMvY29udHJvbGxlcnMvcHVibGljL2FwaS92MS9pbmJveC9jb250YWN0c19jb250cm9sbGVyX3NwZWMucmIiLCJob3N0Ijoid3d3LmV4YW1wbGUuY29tIn0KRklUVElORyBvdXRnb2luZyByZXF1ZXN0IHsibWV0aG9kIjoiUE9TVCIsInBhdGgiOiIvdjEvb3JnYW5pemF0aW9ucy9vcmdfaWQvbWVldGluZyIsImJvZHkiOnt9LCJyZXNwb25zZSI6eyJzdGF0dXMiOjIwMCwiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24vanNvbiIsImJvZHkiOnsic3VjY2VzcyI6dHJ1ZSwiZGF0YSI6eyJtZWV0aW5nIjp7ImlkIjoibWVldGluZ19pZCIsInJvb21OYW1lIjoicm9vbV9uYW1lIn19fX0sInRpdGxlIjoiLi9zcGVjL2NvbnRyb2xsZXJzL2FwaS92MS9hY2NvdW50cy9pbnRlZ3JhdGlvbnMvZHl0ZV9jb250cm9sbGVyX3NwZWMucmI6NTAiLCJncm91cCI6Ii4vc3BlYy9jb250cm9sbGVycy9hcGkvdjEvYWNjb3VudHMvaW50ZWdyYXRpb25zL2R5dGVfY29udHJvbGxlcl9zcGVjLnJiIiwiaG9zdCI6ImFwaS5jbHVzdGVyLmR5dGUuaW4ifQpgYGAKCnZhbGlkYXRpb24KYGBgY29uc29sZQpGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYuRkZGLi5GRkZGRkZGRkZGLi4uLkYuLi4uLi4uRi4uLkZGLi4uLi5GLi4uRi4uLi5GLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYuLkZGLkYuLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uRkYuLi4uLi4uLkZGRi4uLkZGRkYuLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uLi4uLi4uRkZGRkZGRkZGRkYuLkZGRkZGRi4uRkZGRkZGRkZGRkZGRkZGRkYuLi4uLi4uRkZGRkZGLi4uLi4uLi4uLi4uLkZGRkZGRkZGRkZGRi4uLi5GLi4uLi4uLi5GRkYuRi4uLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uLi4uLi4uLi4uLkZGLi4uLi4uLi5GRkYuLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi4uLkZGRkZGRi4uLi4uLkYuLi4uLi4uLi4uLi5GRkZGLi4uLi4uLi5GRkZGRkZGRkZGRkZGRi4uLi4uRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYuLkZGLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uLi4uRkYuLi4uLi4uLi4uRkZGRkZGRkZGRkZGRkZGRkZGLi4uRkZGRi4uLi4uLi4uLi4uLi4uLkYuRi4uLi5GRi4uRkZGRkZGRkYKCiAgMSkgRml0dGluZzo6RG9jOjpOb3RGb3VuZCBsb2cgZXJyb3I6Cgpob3N0OiB3d3cuZXhhbXBsZS5jb20KbWV0aG9kOiBQT1NUCnBhdGg6IC9wdWJsaWMvYXBpL3YxL2luYm94ZXMve2luYm94X2lkZW50aWZpZXJ9L2NvbnRhY3RzCmNvZGU6IDIwMAoKY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uCgpqc29uLXNjaGVtYTogewogICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyIsCiAgInR5cGUiOiAib2JqZWN0IiwKICAicHJvcGVydGllcyI6IHsKICAgICJpZCI6IHsKICAgICAgInR5cGUiOiAiaW50ZWdlciIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgY29udGFjdCIKICAgIH0sCiAgICAic291cmNlX2lkIjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHNlc3Npb24gaWRlbnRpZmllciBvZiB0aGUgY29udGFjdCIKICAgIH0sCiAgICAibmFtZSI6IHsKICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgImRlc2NyaXB0aW9uIjogIk5hbWUgb2YgdGhlIGNvbnRhY3QiCiAgICB9LAogICAgImVtYWlsIjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiRW1haWwgb2YgdGhlIGNvbnRhY3QiCiAgICB9LAogICAgInB1YnN1Yl90b2tlbiI6IHsKICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSB0b2tlbiB0byBiZSB1c2VkIHRvIGNvbm5lY3QgdG8gY2hhdHdvb3Qgd2Vic29ja2V0IgogICAgfQogIH0KfQoKYm9keTogewogICJzb3VyY2VfaWQiOiAiYzllOGMzMWYtMDZkZi00OWI0LThmYjktNDQ2NjQ1N2FlNjViIiwKICAicHVic3ViX3Rva2VuIjogIlpnYzdERXZhajVUa2daMWE0QzdBdkpYbyIsCiAgImlkIjogMzI5MywKICAibmFtZSI6ICJyZXN0bGVzcy1zbm93Zmxha2UtNjcwIiwKICAiZW1haWwiOiBudWxsLAogICJwaG9uZV9udW1iZXIiOiBudWxsCn0KCmVycm9yIFsKICAiVGhlIHByb3BlcnR5ICcjL2VtYWlsJyBvZiB0eXBlIG51bGwgZGlkIG5vdCBtYXRjaCB0aGUgZm9sbG93aW5nIHR5cGU6IHN0cmluZyBpbiBzY2hlbWEgZTU2YjdlNjUtZDcwYy01ZjdhLWE5NmMtOTgyZGY1ZjhmMmY3IgpdCgouLi4KCjgwNCBleGFtcGxlcywgNTY1IGZhaWx1cmUsIDAgcGVuZGluZwoKQ292ZXJhZ2U6IDY1LjUxJQpgYGAKCmFuZCBjb3ZlcgohW2V4bWFwbGVdKGltYWdlcy9iMS5wbmcpCgohW2V4bWFwbGVdKGltYWdlcy9iMi5wbmcpCgohW2V4bWFwbGVdKGltYWdlcy93MS5wbmcpCgohW2V4bWFwbGVdKGltYWdlcy93Mi5wbmcpCgojIyBJbnN0YWxsYXRpb24KQWRkIHRoaXMgbGluZSB0byB5b3VyIGFwcGxpY2F0aW9uJ3MgR2VtZmlsZToKYGBgcnVieQpnZW0gJ2ZpdHRpbmcnCmBgYAoKQWZ0ZXIgdGhhdCBleGVjdXRlOgpgYGBiYXNoCiQgYnVuZGxlCmBgYAoKT3IgaW5zdGFsbCB0aGUgZ2VtIGJ5IHlvdXJzZWxmOgpgYGBiYXNoCiQgZ2VtIGluc3RhbGwgZml0dGluZwpgYGAKCiMjIFVzYWdlCiMjIyBMb2cKRmlyc3RseSwgaW1wcm92ZSBgdGVzdC5sb2dgLgoKVG8geW91ciBgc3BlY19oZWxwZXIucmJgOgoKYGBgcnVieQpyZXF1aXJlICdmaXR0aW5nJwoKRml0dGluZy5sb2dnZXIKYGBgCgpEZWxldGUgYWxsIGZpbGVzIGBsb2cvKi5sb2dgIGFuZCBydW4gcnNwZWMKCllvdSBnZXQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBpbmNvbWluZyBhbmQgb3V0Z29pbmcgcmVxdWVzdCBpbiBgbG9nL2ZpdHRpbmcqLmxvZ2AuCgpgYGB0ZXh0CkZJVFRJTkcgaW5jb21pbmcgcmVxdWVzdCB7Im1ldGhvZCI6IlBPU1QiLCJwYXRoIjoiL3B1YmxpYy9hcGkvdjEvaW5ib3hlcy90RVg1SmlaeWNlaXd1S01pMW9OOVNmOFMvY29udGFjdHMiLCJib2R5Ijp7fSwicmVzcG9uc2UiOnsic3RhdHVzIjoyMDAsImNvbnRlbnRfdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLCJib2R5Ijp7InNvdXJjZV9pZCI6IjAwZGJmMThkLTg3OWUtNDdjYi1hYzQ1LWU5YWVjZTI2NmViMSIsInB1YnN1Yl90b2tlbiI6Imt0bjZZd1B1czU3SkRmNGU1OWVGUG9tNSIsImlkIjozMjkxLCJuYW1lIjoic2h5LXN1cmYtNDAxIiwiZW1haWwiOm51bGwsInBob25lX251bWJlciI6bnVsbH19LCJ0aXRsZSI6Ii4vc3BlYy9jb250cm9sbGVycy9wdWJsaWMvYXBpL3YxL2luYm94L2NvbnRhY3RzX2NvbnRyb2xsZXJfc3BlYy5yYjo5IiwiZ3JvdXAiOiIuL3NwZWMvY29udHJvbGxlcnMvcHVibGljL2FwaS92MS9pbmJveC9jb250YWN0c19jb250cm9sbGVyX3NwZWMucmIiLCJob3N0Ijoid3d3LmV4YW1wbGUuY29tIn0KRklUVElORyBvdXRnb2luZyByZXF1ZXN0IHsibWV0aG9kIjoiUE9TVCIsInBhdGgiOiIvdjEvb3JnYW5pemF0aW9ucy9vcmdfaWQvbWVldGluZyIsImJvZHkiOnt9LCJyZXNwb25zZSI6eyJzdGF0dXMiOjIwMCwiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24vanNvbiIsImJvZHkiOnsic3VjY2VzcyI6dHJ1ZSwiZGF0YSI6eyJtZWV0aW5nIjp7ImlkIjoibWVldGluZ19pZCIsInJvb21OYW1lIjoicm9vbV9uYW1lIn19fX0sInRpdGxlIjoiLi9zcGVjL2NvbnRyb2xsZXJzL2FwaS92MS9hY2NvdW50cy9pbnRlZ3JhdGlvbnMvZHl0ZV9jb250cm9sbGVyX3NwZWMucmI6NTAiLCJncm91cCI6Ii4vc3BlYy9jb250cm9sbGVycy9hcGkvdjEvYWNjb3VudHMvaW50ZWdyYXRpb25zL2R5dGVfY29udHJvbGxlcl9zcGVjLnJiIiwiaG9zdCI6ImFwaS5jbHVzdGVyLmR5dGUuaW4ifQpgYGAKCiMjIyBWYWxpZGF0aW9uClNlY29uZGx5LCB2YWxpZGF0ZSB0aGUgbG9nIHRvIHRoZSBkb2N1bWVudGF0aW9uLgoKQWRkIHRoaXMgdG8geW91ciBgLmZpdHRpbmcueW1sYDoKCmBgYHlhbWwKQVBJczoKICAtIGhvc3Q6IHd3dy5leGFtcGxlLmNvbQogICAgdHlwZTogb3BlbmFwaTIKICAgIHBhdGg6IHN3YWdnZXIvc3dhZ2dlci5qc29uCmBgYAoKUnVuIApgYGBiYXNoCmJ1bmRsZSBlIHJha2UgZml0dGluZzp2YWxpZGF0ZQpgYGAKCkNvbnNvbGUgb3V0cHV0CgpgYGBjb25zb2xlCkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi5GRkYuLkZGRkZGRkZGRkYuLi4uRi4uLi4uLi5GLi4uRkYuLi4uLkYuLi5GLi4uLkYuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uRkYuRi4uRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi5GRi4uLi4uLi4uRkZGLi4uRkZGRi4uLi4uLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi4uLi4uLi5GRkZGRkZGRkZGRi4uRkZGRkZGLi5GRkZGRkZGRkZGRkZGRkZGRi4uLi4uLi5GRkZGRkYuLi4uLi4uLi4uLi4uRkZGRkZGRkZGRkZGLi4uLkYuLi4uLi4uLkZGRi5GLi4uRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi4uLi4uLi4uLi4uRkYuLi4uLi4uLkZGRi4uLi4uLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYuLi4uRkZGRkZGLi4uLi4uRi4uLi4uLi4uLi4uLkZGRkYuLi4uLi4uLkZGRkZGRkZGRkZGRkZGLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uRkYuLi4uLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi4uLi5GRi4uLi4uLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkYuLi5GRkZGLi4uLi4uLi4uLi4uLi4uRi5GLi4uLkZGLi5GRkZGRkZGRgoKICAxKSBGaXR0aW5nOjpEb2M6Ok5vdEZvdW5kIGxvZyBlcnJvcjoKCmhvc3Q6IHd3dy5leGFtcGxlLmNvbQptZXRob2Q6IFBPU1QKcGF0aDogL3B1YmxpYy9hcGkvdjEvaW5ib3hlcy97aW5ib3hfaWRlbnRpZmllcn0vY29udGFjdHMKY29kZTogMjAwCgpjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb24KCmpzb24tc2NoZW1hOiB7CiAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIiwKICAidHlwZSI6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIjogewogICAgImlkIjogewogICAgICAidHlwZSI6ICJpbnRlZ2VyIiwKICAgICAgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBjb250YWN0IgogICAgfSwKICAgICJzb3VyY2VfaWQiOiB7CiAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgc2Vzc2lvbiBpZGVudGlmaWVyIG9mIHRoZSBjb250YWN0IgogICAgfSwKICAgICJuYW1lIjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiTmFtZSBvZiB0aGUgY29udGFjdCIKICAgIH0sCiAgICAiZW1haWwiOiB7CiAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJFbWFpbCBvZiB0aGUgY29udGFjdCIKICAgIH0sCiAgICAicHVic3ViX3Rva2VuIjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHRva2VuIHRvIGJlIHVzZWQgdG8gY29ubmVjdCB0byBjaGF0d29vdCB3ZWJzb2NrZXQiCiAgICB9CiAgfQp9Cgpib2R5OiB7CiAgInNvdXJjZV9pZCI6ICJjOWU4YzMxZi0wNmRmLTQ5YjQtOGZiOS00NDY2NDU3YWU2NWIiLAogICJwdWJzdWJfdG9rZW4iOiAiWmdjN0RFdmFqNVRrZ1oxYTRDN0F2SlhvIiwKICAiaWQiOiAzMjkzLAogICJuYW1lIjogInJlc3RsZXNzLXNub3dmbGFrZS02NzAiLAogICJlbWFpbCI6IG51bGwsCiAgInBob25lX251bWJlciI6IG51bGwKfQoKZXJyb3IgWwogICJUaGUgcHJvcGVydHkgJyMvZW1haWwnIG9mIHR5cGUgbnVsbCBkaWQgbm90IG1hdGNoIHRoZSBmb2xsb3dpbmcgdHlwZTogc3RyaW5nIGluIHNjaGVtYSBlNTZiN2U2NS1kNzBjLTVmN2EtYTk2Yy05ODJkZjVmOGYyZjciCl0KCi4uLgoKODA0IGV4YW1wbGVzLCA1NjUgZmFpbHVyZSwgMCBwZW5kaW5nCgpDb3ZlcmFnZTogNjUuNTElCmBgYAoKIyMjIENvdmVyYWdlCkFuZCB0YXNrIHdpbGwgY3JlYXRlIEhUTUwgKGBjb3ZlcmFnZS9maXR0aW5nLmh0bWxgKSByZXBvcnRzLgoKIVtleG1hcGxlXShpbWFnZXMvYjEucG5nKQoKIVtleG1hcGxlXShpbWFnZXMvYjIucG5nKQoKTW9yZSBpbmZvcm1hdGlvbiBvbiBhY3Rpb24gY292ZXJhZ2UKCiFbZXhtYXBsZTJdKGltYWdlcy93MS5wbmcpCgohW2V4bWFwbGUyXShpbWFnZXMvdzIucG5nKQoKIyMgU2V0dGluZ3MKCiMjIyBBUElzCgojIyMjIHR5cGUKCiMjIyMjIE9wZW5BUEkgMi4wClN3YWdnZXIKCmBgYHlhbWwKQVBJczoKICAtIGhvc3Q6IHd3dy5leGFtcGxlLmNvbQogICAgdHlwZTogb3BlbmFwaTIKICAgIHBhdGg6IGRvYy9hcGkuanNvbgpgYGAKCiMjIyMjIE9wZW5BUEkgMy4wCkFsc28gT3BlbkFQSQoKYGBgeWFtbApBUElzOgogIC0gaG9zdDogd3d3LmV4YW1wbGUuY29tCiAgICB0eXBlOiBvcGVuYXBpMwogICAgcGF0aDogZG9jL2FwaS5qc29uCmBgYAoKIyMjIyMgQVBJIEJsdWVwcmludApGaXJzdCB5b3UgbmVlZCB0byBpbnN0YWxsIFtkcmFmdGVyXShodHRwczovL2dpdGh1Yi5jb20vYXBpYXJ5aW8vZHJhZnRlcikgb3IgW2NyYWZ0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9mdW5ib3gvY3JhZnRlcikuCldvcmtzIGFmdGVyIGNvbnZlcnNpb24gZnJvbSBBUEkgQmx1ZXByaW50IHRvIEFQSSBFbGVtZW50cyAoaW4gWUFNTCBmaWxlKSB3aXRoIERyYWZ0ZXIgb3IgQ3JhZnRlci4KClRoYXQgaXMsIEkgbWVhbiB0aGF0IHlvdSBmaXJzdCBuZWVkIHRvIGRvIHRoaXMKCmBgYGJhc2gKZHJhZnRlciBkb2MuYXBpYiAtbyBkb2MueWFtbApgYGAKCm9yCgpgYGBiYXNoCm5vZGVfbW9kdWxlcy8uYmluL2NyYWZ0ZXIgZG9jLmFwaWIgPiBkb2MueWFtbApgYGAKCmFuZCB0aGVuCgpgYGB5YW1sCkFQSXM6CiAgLSBob3N0OiB3d3cuZXhhbXBsZS5jb20KICAgIHR5cGU6IGRyYWZ0ZXIKICAgIHBhdGg6IGRvYy9hcGkueWFtbApgYGAKCm9yCgpgYGB5YW1sCkFQSXM6CiAgLSBob3N0OiB3d3cuZXhhbXBsZS5jb20KICAgIHR5cGU6IGNyYWZ0ZXIKICAgIHBhdGg6IGRvYy9hcGkueWFtbApgYGAKCiMjIyMjIFRvbW9ncmFwaAoKVG8gdXNlIGFkZGl0aW9uYWwgZmVhdHVyZXMgb2YgdGhlIHByZS1jb252ZXJ0ZWQgW3RvbW9ncmFwaF0oaHR0cHM6Ly9naXRodWIuY29tL3R1d2lsb2YvdG9tb2dyYXBoKQoKZXhhbXBsZQoKYGBgYmFzaApidW5kbGUgZXhlYyB0b21vZ3JhcGggLWQgY3JhZnRlciAtLWV4Y2x1ZGUtZGVzY3JpcHRpb24gZG9jL2FwaS55bWwgZG9jL2FwaS5qc29uCmBgYAoKYW5kIHRoZW4KCmBgYHlhbWwKQVBJczoKICAtIGhvc3Q6IHd3dy5leGFtcGxlLmNvbQogICAgdHlwZTogdG9tb2dyYW0KICAgIHBhdGg6IGRvYy9hcGkuanNvbgpgYGAKCiMjIyMgcHJlZml4CgpTZXR0aW5nIHRoZSBwcmVmaXggbmFtZSBpcyBvcHRpb25hbC4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gZG8gdGhpczoKCmBgYHlhbWwKQVBJczoKICAtIGhvc3Q6IHd3dy5leGFtcGxlLmNvbQogICAgcHJlZml4OiAvYXBpL3YzCiAgICB0eXBlOiBvcGVuYXBpMgogICAgcGF0aDogc3dhZ2dlci9zd2FnZ2VyLmpzb24KYGBgCgojIyMgU2tpcFZhbGlkYXRpb24KCiMjIyMgaG9zdAoKSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBpbW1lZGlhdGVseSBkZXNjcmliZSBlYWNoIGhvc3QgaW4gZGV0YWlsLCB5b3UgY2FuIG9ubHkgc3BlY2lmeSBpdHMgbmFtZSBhbmQgc2tpcCBpdCB1bnRpbCB5b3UgYXJlIHJlYWR5IHRvIGRvY3VtZW50ZWQgaXQKCmBgYHlhbWwKU2tpcFZhbGlkYXRpb246CiAgLSBob3N0OiBhcGkuY2x1c3Rlci5keXRlLmluCmBgYAoKIyMjIyBwcmVmaXgKCklmIHlvdSB3YW50IHRvIHNraXAgYSBzcGVjaWZpYyBwcmVmaXggaW4gdGhlIGhvc3QKCmBgYHlhbWwKU2tpcFZhbGlkYXRpb246CiAgLSBob3N0OiBhcGkuY2x1c3Rlci5keXRlLmluCiAgICBwcmVmaXg6IC9hZG1pbi9hcGkKYGBgCgojIyMjIG1ldGhvZCBhbmQgcGF0aAoKSWYgeW91IHdhbnQgdG8gc2tpcCBhIHNwZWNpZmljIHJlcXVlc3QgaW4gdGhlIGhvc3QKCmBgYHlhbWwKU2tpcFZhbGlkYXRpb246CiAgLSBob3N0OiBhcGkuY2x1c3Rlci5keXRlLmluCiAgICBtZXRob2Q6IEdFVAogICAgcGF0aDogL2FwaS92MS9jYXJzCmBgYAoKIyMjIE5vQ292CgpJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGltbWVkaWF0ZWx5IHRlc3QgZWFjaCBkb2MgaW4gZGV0YWlsLCB5b3UgY2FuIG9ubHkgc3BlY2lmeSBpdHMgbmFtZSBhbmQgc2tpcCBpdCB1bnRpbCB5b3UgYXJlIHJlYWR5IHRvIHRlc3QgaXQKCiMjIyMgaG9zdApgYGB5YW1sCk5vQ292OgogIC0gaG9zdDogc3NvLnRlc3QKYGBgCgojIyMjIG1ldGhvZApgYGB5YW1sCk5vQ292OgogIC0gaG9zdDogc3NvLnRlc3QKICAgIG1ldGhvZDogR0VUCmBgYAoKIyMjIyBwYXRoCmBgYHlhbWwKTm9Db3Y6CiAgLSBob3N0OiBzc28udGVzdAogICAgbWV0aG9kOiBHRVQKICAgIHBhdGg6IC91c2Vycy97dXNlcklkfQpgYGAKCiMjIyMgY29kZQpgYGB5YW1sCk5vQ292OgogIC0gaG9zdDogc3NvLnRlc3QKICAgIG1ldGhvZDogR0VUCiAgICBwYXRoOiAvdXNlcnMve3VzZXJJZH0KICAgIGNvZGU6IDIwMApgYGAKCiMjIyMgY29udGVudC10eXBlCmBgYHlhbWwKTm9Db3Y6CiAgLSBob3N0OiBzc28udGVzdAogICAgbWV0aG9kOiBHRVQKICAgIHBhdGg6IC91c2Vycy97dXNlcklkfQogICAgY29kZTogMjAwCiAgICBjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb24KYGBgCgojIyMjIGNvbWJpbmF0aW9uCmBgYHlhbWwKTm9Db3Y6CiAgLSBob3N0OiBzc28udGVzdAogICAgbWV0aG9kOiBHRVQKICAgIHBhdGg6IC91c2Vycy97dXNlcklkfQogICAgY29kZTogMjAwCiAgICBjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb24KICAgIGNvbWJpbmF0aW9uOiBvbmVPZi4wCmBgYAoKIyMjIyBjb21iaW5hdGlvbl9uZXh0CmBgYHlhbWwKTm9Db3Y6CiAgLSBob3N0OiBzc28udGVzdAogICAgbWV0aG9kOiBHRVQKICAgIHBhdGg6IC91c2Vycy97dXNlcklkfQogICAgY29kZTogMjAwCiAgICBjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb24KICAgIGNvbWJpbmF0aW9uOiBvbmVPZi4wCiAgICBjb21iaW5hdGlvbl9uZXh0OiBvbmVPZi4wLnJlcXVpcmVkLnVzZXJzCmBgYAoKIyMjIERlYnVnCgpJZiB5b3UgZmluZCBidWcsIHlvdSBjYW4gZGVidWcgaXQgb3IgY3JlYXRlIHRhc2sgaW4gdGhpcyBnaXRodWIgcHJvamVjdCAgd2l0aCBuZXcgZmlsZSBgY292ZXJhZ2UvZml0dGluZy5kZWJ1Zy55bWxgCgpgYGB5YW1sCkRlYnVnOgogIC0gaG9zdDogd3d3LmV4YW1wbGUuY29tCiAgICBtZXRob2Q6IEdFVAogICAgcGF0aDogL2FwaS92My91c2VycwogICAgY29kZTogMjAwCiAgICBjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb24KYGBgCgojIyBDb21tdW5pdHkKCkpvaW4gdXMgb24gW1RlbGVncmFtXShodHRwczovL3QubWUvK05Gb2pNVENGSi0xaU5EWXkpLgoKIyMgQ29udHJpYnV0aW5nCgpCdWcgcmVwb3J0cyBhbmQgcHVsbCByZXF1ZXN0cyBhcmUgd2VsY29tZSBvbiBHaXRIdWIgYXQgW2dpdGh1Yi5jb20vdHV3aWxvZi9maXR0aW5nXShodHRwczovL2dpdGh1Yi5jb20vdHV3aWxvZi9maXR0aW5nKS4KVGhpcyBwcm9qZWN0IGlzIGludGVuZGVkIHRvIGJlIGEgc2FmZSwgd2VsY29taW5nIHNwYWNlIGZvciBjb2xsYWJvcmF0aW9uLCBhbmQgY29udHJpYnV0b3JzIGFyZSBleHBlY3RlZCB0byBhZGhlcmUgdG8gdGhlIFtDb250cmlidXRvciBDb3ZlbmFudF0oaHR0cDovL2NvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZykgY29kZSBvZiBjb25kdWN0LgoKIyMgTGljZW5zZQoKVGhlIGdlbSBpcyBhdmFpbGFibGUgYXMgb3BlbiBzb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBbTUlUIExpY2Vuc2VdKGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQpLgoKW1Nwb25zb3JlZCBieSBGdW5Cb3hdKGh0dHBzOi8vZnVuYm94LnJ1KQo= readmeEtag: '"39b0d151f49626ae338174765093384ce3b6f35c"' readmeLastModified: Tue, 09 Jul 2024 20:36:02 GMT repositoryId: 81070703 description: >- Library add improve test log for RSpec and WebMock, validate its according to API Blueprint and Open API, show the documentation coverage with log. created: '2017-02-06T09:32:39Z' updated: '2025-12-02T08:48:15Z' language: Ruby archived: false stars: 64 watchers: 6 forks: 9 owner: tuwilof logo: https://avatars.githubusercontent.com/u/5956924?v=4 license: MIT repoEtag: '"1d22576b181eb532a0b7893ea9d842877f176a8ebedeba05c7efce774adbbe21"' repoLastModified: Tue, 02 Dec 2025 08:48:15 GMT category: - Testing - Data Validators - Learning foundInMaster: true name: Fitting language: Ruby link: https://github.com/tuwilof/fitting source_description: >- Library add improve test log for RSpec and WebMock, validate its according to API Blueprint and Open API, show the documentation coverage with log. v2: true v3_1: true - source: https://openapi.tools/ name: KrakenD API Gateway category: - Documentation - Gateway link: https://www.krakend.io/enterprise/ language: Golang source_description: >- KrakenD is a high-performance, stateless API Gateway, seamlessly integrated with OpenAPI. It facilitates automatic API documentation and provides the capability to import existing specifications for generating configuration and mock servers. v2: true v3: true id: 1c349424400e28e0b3ed6ddc2a675c45 foundInMaster: true - source: https://openapi.tools/ name: Serverless API Gateway category: - Gateway - Server Implementations link: https://serverlessapigateway.com repository: https://github.com/irensaltali/serverlessapigateway language: TypeScript source_description: >- Serverless API Gateway is a serverless, open-source, and free API Gateway that is designed to be used with any HTTP source. v2: true v3: true v3_1: true id: 2cad52c6f066edce2de23d8b28481995 repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KCTxpbWcgIHNyYz0iZG9jcy9pbWcvaGVyby5qcGciPgogICAgPGgxPiAKICAgICAgICA8c3Ryb25nPlNlcnZlcmxlc3MgQVBJIEdhdGV3YXk8L3N0cm9uZz4KICAgIDwvaDE+CjwvZGl2PgoKWzxpbWcgc3JjPSJodHRwczovL2FwaS5naXRzcG9uc29ycy5jb20vYXBpL2JhZGdlL2ltZz9pZD03Mzc1MjYyNzQiIGhlaWdodD0iMjAiPl0oaHR0cHM6Ly9hcGkuZ2l0c3BvbnNvcnMuY29tL2FwaS9iYWRnZS9saW5rP3A9ekdGMG12QjRFVnV1TGNHMjBhSmNHY2JZWU10UjIwL1JHOC9uOFVxNkFxM2NQZ1VjRTVNK0JEU2Y5RzhseS9EREJQVmk4ZWNKM05UK0dJdWoyK2g4Ky90YTJOdGg0OVNKQW5FOTZzVFlzazcwQmhhZU1NTXBvSE51OFI5eWM4aG9kR3BFNW1sU0luUEMvdUVBSklkd0VRPT0pCgpbIVtKV1QgQ09NUEFUSUJMRV0oaHR0cHM6Ly9qd3QuaW8vaW1nL2JhZGdlLWNvbXBhdGlibGUuc3ZnKV0oKQoKV2VsY29tZSB0byB0aGUgU2VydmVybGVzcyBBUEkgR2F0ZXdheSwgYW4gaW5ub3ZhdGl2ZSB0b29sIGRlc2lnbmVkIHRvIHN0cmVhbWxpbmUgeW91ciBBUEkgbWFuYWdlbWVudCB0YXNrcyB1c2luZyB0aGUgcG93ZXJmdWwgY2FwYWJpbGl0aWVzIG9mIENsb3VkZmxhcmUgV29ya2Vycy4KCiMjIEZlYXR1cmVzCgotICoqSlMgV29ya2VycyoqOiBXcml0ZSBzZXJ2ZXJsZXNzIEphdmFTY3JpcHQgd29ya2VycyB0aGF0IGludGVyY2VwdCBhbmQgbW9kaWZ5IHlvdXIgQVBJIHJlcXVlc3RzIGFuZCByZXNwb25zZXMgb24gdGhlIGZseS4KLSAqKlJvdXRpbmcgKFBhdGggYW5kIE1ldGhvZCkqKjogU2ltcGxpZnkgeW91ciBBUEkgYXJjaGl0ZWN0dXJlIHdpdGggZmxleGlibGUgcGF0aCBhbmQgbWV0aG9kLWJhc2VkIHJvdXRpbmcgZm9yIGRpcmVjdGluZyB0cmFmZmljIHRvIHRoZSBhcHByb3ByaWF0ZSBlbmRwb2ludHMuCi0gKipDT1JTIChCYXNpYykqKjogTWFuYWdlIGNyb3NzLW9yaWdpbiByZXNvdXJjZSBzaGFyaW5nIHNldHRpbmdzIHdpdGggZWFzZSwgZW5zdXJpbmcgeW91ciBBUElzIGNhbiBzZWN1cmVseSBoYW5kbGUgcmVxdWVzdHMgZnJvbSBkaWZmZXJlbnQgb3JpZ2lucy4KLSAqKkF1dGggKEpXVCkqKjogU2VjdXJlIHlvdXIgQVBJcyBieSBpbXBsZW1lbnRpbmcgSlNPTiBXZWIgVG9rZW4gKEpXVCkgYmFzZWQgYXV0aGVudGljYXRpb24gdG8gdmFsaWRhdGUgYW5kIG1hbmFnZSB1c2VyIGFjY2VzcyBlZmZpY2llbnRseS4KLSAqKlNlcnZpY2UgQmluZGluZyoqOiBCaW5kIHlvdXIgQVBJIHRvIGEgc2VydmljZSBhcyBXb3JrZXJzLCBzbyB5b3UgY2FuIHVzZSB0aGUgV29ya2VycyBjYXBhYmlsaXRpZXMgd2l0aGluIHlvdXIgQVBJLgotICoqVmFsdWUgTWFwcGluZyoqOiBNYXAgdmFsdWVzIGZyb20gc291cmNlcyB0byBkZXN0aW5hdGlvbnMsIGFsbG93aW5nIHlvdSB0byBlYXNpbHkgdHJhbnNmb3JtIHlvdXIgZGF0YS4KCiMjIE1vdGl2YXRpb24KCkFQSXMgYXJlIHBpdm90YWwgaW4gdGhlIGxhbmRzY2FwZSBvZiBtb2Rlcm4gYXBwbGljYXRpb25zLCBidXQgdGhleSBicmluZyBmb3J0aCBhIHVuaXF1ZSBzZXQgb2YgY2hhbGxlbmdlcyByZWdhcmRpbmcgc2VjdXJpdHksIHJvdXRpbmcsIGFuZCBvdmVyYWxsIG1hbmFnZW1lbnQuIFRoZSBTZXJ2ZXJsZXNzIEFQSSBHYXRld2F5IGVtZXJnZWQgZnJvbSB0aGUgbmVlZCB0byBhZGRyZXNzIHRoZXNlIGlzc3VlcyBpbiBhIHJlbGlhYmxlLCBtYW5hZ2VhYmxlLCBhbmQgY29zdC1lZmZlY3RpdmUgd2F5LiBCdWlsdCB1cG9uIENsb3VkZmxhcmUncyBzZXJ2ZXJsZXNzIGluZnJhc3RydWN0dXJlLCB0aGlzIHByb2plY3QgcHJvdmlkZXMgZGV2ZWxvcGVycyB3aXRoIGEgbGlnaHR3ZWlnaHQgeWV0IHJvYnVzdCB0b29sa2l0IHRoYXQgYWRhcHRzIHRvIHRoZSB1bnByZWRpY3RhYmlsaXR5IG9mIGludGVybmV0IHNjYWxlIGFuZCB0cmFmZmljLiBPdXIgbWlzc2lvbiBpcyB0byBlbXBvd2VyIGRldmVsb3BlcnMgdG8gc2VjdXJlbHkgYW5kIGVmZmljaWVudGx5IG1hbmFnZSB0aGVpciBBUElzIHdpdGhvdXQgdGhlIG92ZXJoZWFkIG9mIG1hbmFnaW5nIGluZnJhc3RydWN0dXJlLgoKCkZvciBkZXRhaWxlZCBzZXR1cCBhbmQgdXNhZ2UgaW5zdHJ1Y3Rpb25zLCBwbGVhc2Ugc2VlIHRoZSBbU2VydmVybGVzcyBBUEkgR2F0ZXdheSBkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3Muc2VydmVybGVzc2FwaWdhdGV3YXkuY29tKS4KCiMjIENvbnRyaWJ1dGluZwoKSWYgeW91IHdhbnQgdG8gY29udHJpYnV0ZSB0byB0aGUgcHJvamVjdCwgeW91IGNhbiBzdGFydCBieSBjaGVja2luZyB0aGUgW2NvbnRyaWJ1dGluZyBndWlkZWxpbmVzXShDT05UUklCVVRJTkcubWQpLgoKCiMjIEFja25vd2xlZGdtZW50cwoKQSBzaG91dG91dCB0byB0aGUgY29udHJpYnV0b3JzLCBjb21tdW5pdHkgbWVtYmVycywgYW5kIHRoZSBtYWludGFpbmVycyBvZiBDbG91ZGZsYXJlIFdvcmtlcnMgZm9yIHRoZWlyIHN1cHBvcnQgYW5kIGluc3BpcmF0aW9uIGluIG1ha2luZyB0aGlzIHByb2plY3QgYSByZWFsaXR5LgoKVGhlIFNlcnZlcmxlc3MgQVBJIEdhdGV3YXkgaXMgbm90IGp1c3QgYW5vdGhlciBBUEkgdG9vbDsgaXQncyBjcmVhdGVkIGJ5IGRldmVsb3BlcnMsIGZvciBkZXZlbG9wZXJzLCB3aXRoIHRoZSB2aXNpb24gb2YgbWFraW5nIEFQSSBtYW5hZ2VtZW50IGEgYnJlZXplLiBMZXQncyBidWlsZCB0b2dldGhlci4KCgojIyBTdXBwb3J0CgpJJ20gYWx3YXlzIGhhcHB5IHRvIGhlbHAgd2l0aCBhbnkgcXVlc3Rpb25zIG9yIGNvbmNlcm5zIHlvdSBtYXkgaGF2ZS4gRmVlbCBmcmVlIHRvIHJlYWNoIG91dCB0byBtZSBmcm9tIG9uIFtUd2l0dGVyXShodHRwczovL3R3aXR0ZXIuY29tL2lyZW5zYWx0YWxpKSBvciBbTGlua2VkSW5dKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9pcmVuc2FsdGFsaS8pLgoKSWYgeW91IG5lZWQgYSBtb3JlIGV4dGVuc2l2ZSBzdXBwb3J0IHlvdSBjYW4gYWx3YXlzIGJvb2sgb24gW1N1cGVycGVlcl0oaHR0cHM6Ly9zdXBlcnBlZXIuY29tL2lyZW5zYWx0YWxpLy0vc2VydmVybGVzcy1hcGktZ2F0ZXdheSkKCiMgQ29tcGFuaWVzIHRoYXQgdXNlIFNlcnZlcmxlc3MgQVBJIEdhdGV3YXkKCjxkaXYgYWxpZ249ImNlbnRlciI+Cgk8YSBocmVmPSJodHRwczovL3dvcGUuY29tIj4gPGltZyB3aWR0aD0iMjAwIiBzcmM9ImRvY3MvaW1nL3dvcGUucG5nIj4gPC9hPgo8L2Rpdj4KCkxldCB1cyBrbm93IGlmIHlvdSBhcmUgdXNpbmcgU2VydmVybGVzcyBBUEkgR2F0ZXdheSBhbmQgd2UgY2FuIGFkZCB5b3VyIGNvbXBhbnkgaGVyZS4KCiMgQ29udHJpYnV0b3JzCgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaXJlbnNhbHRhbGkvc2VydmVybGVzc2FwaWdhdGV3YXkvZ3JhcGhzL2NvbnRyaWJ1dG9ycyI+CiAgPGltZyBzcmM9Imh0dHBzOi8vY29udHJpYi5yb2Nrcy9pbWFnZT9yZXBvPWlyZW5zYWx0YWxpL3NlcnZlcmxlc3NhcGlnYXRld2F5IiAvPgo8L2E+CgoKIyBGZWViYWNrIFN1cnZleQoKUGxlYXNlIHRha2UgYSBmZXcgbWludXRlcyB0byBmaWxsIG91dCB0aGUgW2ZlZWRiYWNrIHN1cnZleV0oaHR0cHM6Ly9yMzlyYTU1YjBzbC50eXBlZm9ybS5jb20vdG8vZXg4SE15VEgpIHRvIGhlbHAgdXMgaW1wcm92ZSB0aGUgU2VydmVybGVzcyBBUEkgR2F0ZXdheS4K readmeEtag: '"02b85dddb7a806618da9c9c0adb921ec81bf65a7"' readmeLastModified: Sat, 18 Jan 2025 15:10:12 GMT repositoryId: 737526274 description: Serverless API Gateway created: '2023-12-31T11:37:10Z' updated: '2026-02-02T12:25:15Z' language: JavaScript archived: false stars: 70 watchers: 2 forks: 11 owner: irensaltali logo: https://avatars.githubusercontent.com/u/6968747?v=4 license: NOASSERTION repoEtag: '"35cc1066280a2a5e0e6ded7b5e9435d23ba525ddf90e4d2403ebb5b8823fc41f"' repoLastModified: Mon, 02 Feb 2026 12:25:15 GMT foundInMaster: true - source: https://openapi.tools/ name: Treblle category: - Documentation - Security - Monitoring link: https://www.treblle.com/ source_description: >- Treblle is a lightweight SDK that helps Engineering and Product teams build, ship, and maintain REST based APIs faster. v3: true v3_1: true id: cee984cf9c829d96ef1ec921ff5b8db2 foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags name: openapi-request-response-validation category: - Data Validators - Parsers repository: https://github.com/gcatanese/openapi-request-response-validation language: Java source_description: >- Runtime validation of requests and responses of your API according to the OpenAPI specs, returning (if any) the list of errors found. It is integrated via a simple REST API therefore usable by Java and non-Java applications and CI/CD. v2: true v3: true v3_1: true id: 9c4692fcf610859bb87b0e09cf848e83 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIHZhbGlkYXRvcgoKVGhpcyB0b29sIGFsbG93cyB0aGUgdmFsaWRhdGlvbiBhdCBydW50aW1lIG9mIHRoZSBBUEkgcmVxdWVzdHMgcmVzcG9uc2VzIGFjY29yZGluZyB0byB0aGUgT3BlbkFQSSBzcGVjcy4gIAoKVGhlcmUgYXJlIHNldmVyYWwgdG9vbHMgdGhhdCBjYW4gdmFsaWRhdGUgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uLCBidXQgdGhlcmUgYXJlIG5vIG1hbnkgb3B0aW9ucyB0byBlbnN1cmUgdGhhdCB0aGUgQVBJIGNvbnRyYWN0cyBhcmUgaG9ub3VyZWQgYnkgdGhlIEFQSSB3ZSBhcmUgZGV2ZWxvcGluZy4KClRoaXMgdG9vbCBtYWtlIHN1cmUgdGhhdCB0aGUgQVBJIHJlcXVlc3RzIGFuZCByZXNwb25zZXMgYXJlIHZhbGlkIGFjY29yZGluZyB0byB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIG9mIHRoZSBBUEkuCgpNb3JlIG9uIFtWYWxpZGF0aW5nIEFQSSByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzXShodHRwczovL2JlcHBlY2F0YW5lc2UuaGFzaG5vZGUuZGV2L3ZhbGlkYXRpbmctYXBpLXJlcXVlc3RzLWFuZC1yZXNwb25zZXMpCgpUaGUgYG9wZW5hcGktcmVxdWVzdC1yZXNwb25zZS12YWxpZGF0b3JgIGlzIGEgU3ByaW5nQm9vdCAoSmF2YSkgYXBwbGljYXRpb24gaW1wbGVtZW50aW5nIGEgUkVTVCBjb250cm9sbGVyIHRvIGFsbG93IFBvc3RtYW4gc2NyaXB0cyAob3Igb3RoZXIgY2xpZW50cykgdG8gc2VuZCB0aGUgcGF5bG9hZCB0byBiZSB2YWxpZGF0ZWQuIFRoZSBPcGVuQVBJIGZpbGUgY2FuIGJlIHN1cHBsaWVkIGF0IHN0YXJ0dXAuCgojIyBIb3cgZG9lcyBpdCB3b3JrPwoKWW91IHdvcmsgd2l0aCBQb3N0bWFuIHRvIHRlc3QgdGhlIEFQSSBlbmRwb2ludHMsIHNlbmRpbmcgYSByZXF1ZXN0IGFuZCB2ZXJpZnkgdGhlIHJlc3BvbnNlLiBUaGFua3MgdG8gUG9zdG1hbiBbVGVzdCBTY3JpcHRzXShodHRwczovL2xlYXJuaW5nLnBvc3RtYW4uY29tL2RvY3Mvd3JpdGluZy1zY3JpcHRzL3Rlc3Qtc2NyaXB0cy8pIGl0IGlzIHBvc3NpYmxlIHRvIGFkZCBjdXN0b20gc2NyaXB0cyB0byBhY2Nlc3MgdGhlICBgcmVxdWVzdGAsIGByZXNwb25zZWAgYW5kIGBoZWFkZXJzYCBwcm9ncmFtbWF0aWNhbGx5IGFuZCBzZW5kIHRoZW0gdG8gdGhlIE9wZW5BUEkgUmVxdWVzdC1SZXNwb25zZSBWYWxpZGF0b3IuClBvc3RtYW4gdGVzdHMgKHdpdGggYXNzZXJ0aW9ucykgY2FuIGJlIGRlZmluZWQgdG8gY29uZmlybSB0aGUgSlNPTiBwYXlsb2FkcyBhcmUgdmFsaWQgYWNjb3JkaW5nIHRvIHRoZSBBUEkgc3BlY2lmaWNhdGlvbi4KCiFbT3BlbkFQSSBWYWxpZGF0b3JdKGRvYy9vcGVuYXBpLXZhbGlkYXRvci5wbmcpCgpUaGUgb3V0Y29tZSBvZiB0aGUgdmFsaWRhdGlvbiAodG9nZXRoZXIgd2l0aCB0aGUgbGlzdCBvZiBlcnJvcnMg4oCUIGlmIGFueSkgaXMgcmV0dXJuZWQgdG8gUG9zdG1hbiAoZGlzcGxheWVkIGluIHRoZSBQb3N0bWFuIGNvbnNvbGUpIGFuZCBsb2dnZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgoKCiMjIEhvdyB0byBydW4KClN0ZXBzOgoqIGFkZCB0aGUgc25pcHBldCBiZWxvdyBpbiB0aGUgQ29sbGVjdGlvbiBUZXN0cwoqIHByb3ZpZGUgdGhlIE9wZW5BUEkgZmlsZQoqIGxhdW5jaCB0aGUgYG9wZW5hcGktcmVxdWVzdC1yZXNwb25zZS12YWxpZGF0aW9uYCB0b29sIChbSmF2YSBhcHBdKCNzdGFydC10aGUtdG9vbC1qYXZhKSBvciB1c2luZyBbRG9ja2VyXSgjc3RhcnQtdGhlLXRvb2wtZG9ja2VyKSkgCiogcnVuIHRoZSBQb3N0bWFuIHJlcXVlc3RzIGFnYWluc3QgeW91ciBzZXJ2aWNlIG9yIGFwcGxpY2F0aW9uIAoKIyMjIENvbGxlY3Rpb24gVGVzdCBzbmlwcGV0CgpJbiB0aGUgKipDb2xsZWN0aW9uIFRlc3RzKiogYWRkIHRoZSBzbmlwcGV0IGJlbG93LiBJdCB3aWxsIHJ1biBhZnRlciBldmVyeSByZXF1ZXN0IGluIHRoZSBjb2xsZWN0aW9uLiAgCgpXaGF0IGRvZXMgaXQgZG8/IEFmdGVyIGV4ZWN1dGluZyB0aGUgcmVxdWVzdCB0aGUgVGVzdCBTY3JpcHQgd2lsbCBzZW5kIGByZXF1ZXN0YCwgYHJlc3BvbnNlYCBhbmQgYGhlYWRlcnNgIHRvIHRoZSB2YWxpZGF0b3IuCgpgYGAKb3BlbmFwaVJlcXVlc3RSZXNwb25zZVZhbGlkYXRpb24gPSB7CiAgICB2YWxpZGF0ZTogZnVuY3Rpb24ocG0pIHsKICAgIAogICAgICAgIC8vIGJ1aWxkIHBhdGggd2l0aG91dCBiYXNlVXJsCiAgICAgICAgdmFyIGJhc2VVcmwgPSBwbS5jb2xsZWN0aW9uVmFyaWFibGVzLmdldCgiYmFzZVVybCIpOwogICAgICAgIGJhc2VVcmwgPSBiYXNlVXJsLnJlcGxhY2UoJ2h0dHBzOi8vJywnJyk7CiAgICAgICAgYmFzZVVybCA9IGJhc2VVcmwucmVwbGFjZShwbS5yZXF1ZXN0LnVybC5nZXRIb3N0KCksJycpOwoKICAgICAgICB2YXIgcGF0aCA9IHBtLnJlcXVlc3QudXJsLmdldFBhdGgoKS5yZXBsYWNlKGJhc2VVcmwsJycpOwoKICAgICAgICBjb25zb2xlLmxvZygnVmFsaWRhdGlvbiBmb3IgJyArIHBhdGgpOwoKICAgICAgICBjb25zdCBwb3N0UmVxdWVzdCA9IHsKICAgICAgICAgICAgdXJsOiAnaHR0cDovL2xvY2FsaG9zdDo4MDgwL3ZhbGlkYXRlJywKICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgIGhlYWRlcjogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbid9LAogICAgICAgICAgICBib2R5OiB7CiAgICAgICAgICAgIG1vZGU6ICdyYXcnLAogICAgICAgICAgICByYXc6IEpTT04uc3RyaW5naWZ5KHsgCiAgICAgICAgICAgICAgICBtZXRob2Q6IHBtLnJlcXVlc3QubWV0aG9kLCAKICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgsCiAgICAgICAgICAgICAgICBoZWFkZXJzOiBwbS5yZXF1ZXN0LmhlYWRlcnMsCiAgICAgICAgICAgICAgICByZXF1ZXN0QXNKc29uOiAocG0ucmVxdWVzdC5ib2R5ICE9ICIiKSA/IHBtLnJlcXVlc3QuYm9keS5yYXcgOiBudWxsLAogICAgICAgICAgICAgICAgcmVzcG9uc2VBc0pzb246IHBtLnJlc3BvbnNlLnRleHQoKSwKICAgICAgICAgICAgICAgIHN0YXR1c0NvZGU6IHBtLnJlc3BvbnNlLmNvZGUKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBwbS5zZW5kUmVxdWVzdChwb3N0UmVxdWVzdCwgKGVycm9yLCByZXNwb25zZSkgPT4gewogICAgICAgICAgICBpZihlcnJvciAhPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIHBtLmV4cGVjdC5mYWlsKCdVbmV4cGVjdGVkIGVycm9yICcgKyBlcnJvcik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHJlc3BvbnNlLmpzb24oKTsKCiAgICAgICAgICAgICAgICBpZihkYXRhLnZhbGlkID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YS5lcnJvcnMpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHBtLnRlc3QoIk9wZW5BUEkgdmFsaWRhdGlvbiIsICgpID0+IHsKICAgICAgICAgICAgICAgICAgICBwbS5leHBlY3QoZGF0YS52YWxpZCwgIkludmFsaWQgcmVxdWVzdC9yZXNwb25zZSAoY2hlY2sgQ29uc29sZSkiKS50by5lcXVhbCh0cnVlKTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgfQogICAgICAgIH0pOyAgCiAgICB9Cgp9OwoKb3BlbmFwaVJlcXVlc3RSZXNwb25zZVZhbGlkYXRpb24udmFsaWRhdGUocG0pOwpgYGAKCiMjIyBQcm92aWRlIHRoZSBPcGVuQVBJIHNwZWMgZmlsZQoKQ29weS9yZW5hbWUgeW91ciBPcGVuQVBJIHNwZWNzIHRvIGBvcGVuYXBpL29wZW5hcGkueWFtbGAgb3IgYG9wZW5hcGkvb3BlbmFwaS5qc29uYAoKIyMjIFN0YXJ0IHRoZSB0b29sIChKYXZhKQoKUnVuIHRoZSBKYXZhIGFwcGxpY2F0aW9uIApgYGBzaGVsbApqYXZhIC1qYXIgdGFyZ2V0L29wZW5hcGktcmVxdWVzdC1yZXNwb25zZS12YWxpZGF0b3IuamFyCmBgYAoKUnVuIHRoZSBKYXZhIGFwcGxpY2F0aW9uIHdpdGggY3VzdG9tIHBvcnQgYW5kIHNwZWMgZmlsZQpgYGBzaGVsbApqYXZhIC1qYXIgdGFyZ2V0L29wZW5hcGktcmVxdWVzdC1yZXNwb25zZS12YWxpZGF0b3IuamFyIC0tc2VydmVyLnBvcnQ9ODg4OCAtLUlOUFVUX1NQRUNTPS9wYXRoL3RvL215b3BlbmFwaS55YW1sCmBgYAoKIyMjIFN0YXJ0IHRoZSB0b29sIChEb2NrZXIpCgpZb3UgY2FuIHJ1biB0aGUgdG9vbCBvbiBEb2NrZXIKCmBgYAojIHJ1biB1c2luZyBkZWZhdWx0IG9wZW5hcGkvb3BlbmFwaS55YW1sIG9yIG9wZW5hcGkvb3BlbmFwaS5qc29uCmRvY2tlciBydW4gLXYgJChwd2QpOi9vcGVuYXBpIC1pdCAtLXJtIC0tbmFtZSBvcGVuYXBpLXJlcXVlc3QtcmVzcG9uc2UtdmFsaWRhdGlvbiBcCiBnY2F0YW5lc2Uvb3BlbmFwaS1yZXF1ZXN0LXJlc3BvbnNlLXZhbGlkYXRpb24KCiMgcnVuIHVzaW5nIGN1c3RvbSBsb2NhdGlvbiBvZiB0aGUgT3BlbkFQSSBmaWxlCmRvY2tlciBydW4gLXYgJChwd2QpOi9vcGVuYXBpIC1lIElOUFVUX1NQRUNTPS90bXAvb3BlbmFwaS55YW1sIFwKICAtaXQgLS1ybSAtLW5hbWUgb3BlbmFwaS1yZXF1ZXN0LXJlc3BvbnNlLXZhbGlkYXRpb24gXAogICAgZ2NhdGFuZXNlL29wZW5hcGktcmVxdWVzdC1yZXNwb25zZS12YWxpZGF0aW9uCmBgYAoKIyMjIFJ1biBQb3N0bWFuIHJlcXVlc3RzCgpSdW4gdGhlIFBvc3RtYW4gcmVxdWVzdHMgYW5kIGNoZWNrIHRoZSBUZXN0IHRhYgoKIVtQb3N0bWFuIFRlc3QgUmVzdWx0c10oZG9jL3Bvc3RtYW4tdGVzdC1yZXN1bHRzLnBuZykKCgoKLS0tClVzaW5nIFtBdGxhc3NpYW4gU3dhZ2dlciBWYWxpZGF0b3JdKGh0dHBzOi8vYml0YnVja2V0Lm9yZy9hdGxhc3NpYW4vc3dhZ2dlci1yZXF1ZXN0LXZhbGlkYXRvci8pLCBbUG9zdG1hbl0oaHR0cHM6Ly9wb3N0bWFuLmNvbSkgCmFuZCBbRG9ja2VyXShodHRwczovL2RvY2tlci5jb20pCgo= readmeEtag: '"4282cd24432d1a248aeb1c3855592bf8ff3360cb"' readmeLastModified: Wed, 04 Dec 2024 19:53:44 GMT repositoryId: 584163624 description: Validation of request/response according to OpenAPI specs created: '2023-01-01T16:44:30Z' updated: '2025-08-29T12:16:18Z' language: Java archived: false stars: 15 watchers: 1 forks: 2 owner: gcatanese logo: https://avatars.githubusercontent.com/u/1771700?v=4 license: Apache-2.0 repoEtag: '"4e5316c503bc6030926c2aefd366cd6418b41aec026fb969146b561d963286a3"' repoLastModified: Fri, 29 Aug 2025 12:16:18 GMT foundInMaster: true - source: https://openapi.tools/ name: api-smart-diff repository: https://github.com/udamir/api-smart-diff language: TypeScript source_description: >- Compare two Json based API documents (OpenAPI, AsyncAPI, JsonSchema, GraphAPI) v2: true v3: true v3_1: true id: d4a9b510fa698579d4641e0190f532af repositoryMetadata: base64Readme: >- IyBhcGktc21hcnQtZGlmZgo8aW1nIGFsdD0ibnBtIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvYXBpLXNtYXJ0LWRpZmYiPiA8aW1nIGFsdD0ibnBtIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL2FwaS1zbWFydC1kaWZmP2xhYmVsPW5wbSI+IDxpbWcgYWx0PSJucG0gdHlwZSBkZWZpbml0aW9ucyIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS90eXBlcy9hcGktc21hcnQtZGlmZiI+IDxpbWcgYWx0PSJHaXRIdWIiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS91ZGFtaXIvYXBpLXNtYXJ0LWRpZmYiPgoKVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHV0aWxzIHRvIGNvbXB1dGUgdGhlIGRpZmYgYmV0d2VlbiB0d28gSnNvbiBiYXNlZCBBUEkgZG9jdW1lbnRzIC0gW29ubGluZSBkZW1vXShodHRwczovL3VkYW1pci5naXRodWIuaW8vYXBpLXNtYXJ0LWRpZmYvKQoKIyMgUHVycG9zZQotIEdlbmVyYXRlIEFQSSBjaGFuZ2Vsb2cKLSBJZGVudGlmeSBicmVha2luZyBjaGFuZ2VzCi0gRW5zdXJlIEFQSSB2ZXJzaW9uaW5nIGNvbnNpc3RlbmN5CgojIyBTdXBwb3J0ZWQgQVBJIHNwZWNpZmljYXRpb25zCgotIFtPcGVuQXBpIDMuMF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMC4zLm1kKQotIFtBc3luY0FwaSAyLnhdKGh0dHBzOi8vdjIuYXN5bmNhcGkuY29tL2RvY3MvcmVmZXJlbmNlKQotIFtKc29uU2NoZW1hXShodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDIwLTEyL2pzb24tc2NoZW1hLWNvcmUuaHRtbCkKLSBHcmFwaFFMIHZpYSBbR3JhcGhBcGldKGh0dHBzOi8vZ2l0aHViLmNvbS91ZGFtaXIvZ3JhcGhhcGkpCi0gfn5bU3dhZ2dlciAyLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXNwZWMvYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMi4wLm1kKX5+Ci0gfn5bQXN5bmNBcGkgMy54XShodHRwczovL3d3dy5hc3luY2FwaS5jb20vZG9jcy9zcGVjaWZpY2F0aW9ucy8pfn4gKFJvYWRtYXApCi0gfn5nUlBDfn4gKFJvYWRtYXApCgojIyBGZWF0dXJlcwotIEdlbmVyYXRlIGRpZmYgZm9yIHN1cHBvcnRlZCBzcGVjaWZpY2F0aW9ucwotIEdlbmVyYXRlIG1lcmdlZCBkb2N1bWVudCB3aXRoIGNoYW5nZXMgaW4gbWV0YWRhdGEgCi0gQ2xhc3NpZnkgYWxsIGNoYW5nZXMgYXMgYnJlYWtpbmcsIG5vbi1icmVha2luZywgZGVwcmVjYXRlZCBhbmQgYW5ub3RhdGlvbgotIEh1bWFuLXJlYWRhYmxlIGNoYW5nZSBkZXNjcmlwdGlvbgotIFN1cHBvcnRzIGN1c3RvbSBjbGFzc2lmaWNhdGlvbiBydWxlcwotIFN1cHBvcnRzIGN1c3RvbSBjb21wYXJpc29uIG9yIG1hdGNoIHJ1bGVzCi0gU3VwcG9ydHMgY3VzdG9tIHRyYW5zZm9ybWF0aW9ucwotIFN1cHBvcnRzIGN1c3RvbSBodW1hbi1yZWFkYWJsZSBjaGFuZ2VzIGFubm90YXRpb24KLSBSZXNvbHZlcyBhbGwgJHJlZiBwb2ludGVycywgaW5jbHVkaW5nIGNpcmN1bGFyCi0gVHlwZXNjcmlwdCBzeW50YXggc3VwcG9ydCBvdXQgb2YgdGhlIGJveAotIENhbiBiZSB1c2VkIGluIG5vZGVqcyBvciBicm93c2VyCgojIyBFeHRlcm5hbCAkcmVmCklmIHNjaGVtYSBjb250YWlucyBhbiBleHRlcm5hbCAkcmVmLCB5b3Ugc2hvdWxkIGJ1bmRsZSBpdCB2aWEgW2FwaS1yZWYtYnVuZGxlcl0oaHR0cHM6Ly9naXRodWIuY29tL3VkYW1pci9hcGktcmVmLWJ1bmRsZXIpIGZpcnN0LgoKIyMgSW5zdGFsbGF0aW9uCmBgYFNICm5wbSBpbnN0YWxsIGFwaS1zbWFydC1kaWZmIC0tc2F2ZQpgYGAKb3IKYGBgU0gKeWFybiBhZGQgYXBpLXNtYXJ0LWRpZmYKYGBgCgojIyBVc2FnZQoKIyMjIE5vZGVqcwpgYGB0cwppbXBvcnQgeyBhcGlDb21wYXJlIH0gZnJvbSAnYXBpLXNtYXJ0LWRpZmYnCgpjb25zdCB7IGRpZmZzLCBtZXJnZWQgfSA9IGFwaUNvbXBhcmUoYmVmb3JlLCBhZnRlcikKLy8gZGlmZjogCi8vIHsKLy8gICBhY3Rpb246ICJhZGQiIHwgInJlbW92ZSIgfCAicmVwbGFjZSIgfCAicmVuYW1lIiwKLy8gICBhZnRlcjogJ3ZhbHVlIGluIGFmdGVyJywKLy8gICBiZWZvcmU6ICd2YWx1ZSBpbiBiZWZvcmUnLAovLyAgIGRlc2NyaXB0aW9uOiAnaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24nCi8vICAgcGF0aDogWydwYXRoLCAnaW4nLCAnYXJyYXknLCAnZm9ybWF0J10sCi8vICAgdHlwZTogImFubm90YXRpb24iIHwgImJyZWFraW5nIiB8ICJub24tYnJlYWtpbmciIHwgInVuY2xhc3NpZmllZCIgfCAiZGVwcmVjYXRlZCIKLy8gfSAKCi8vIG1lcmdlZCBtZXRhOgovLyB7Ci8vICAgYWN0aW9uOiAiYWRkIiB8ICJyZW1vdmUiIHwgInJlcGxhY2UiIHwgInJlbmFtZSIsCi8vICAgdHlwZTogImFubm90YXRpb24iIHwgImJyZWFraW5nIiB8ICJub24tYnJlYWtpbmciIHwgInVuY2xhc3NpZmllZCIgfCAiZGVwcmVjYXRlZCIsCi8vICAgcmVwbGFjZWQ6ICJ2YWx1ZSBpbiBiZWZvcmUiLAovLyB9CgpgYGAKCiMjIyBCcm93c2VycwoKQSBicm93c2VyIHZlcnNpb24gb2YgYGFwaS1zbWFydC1kaWZmYCBpcyBhbHNvIGF2YWlsYWJsZSB2aWEgQ0ROOgpgYGBodG1sCjxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2FwaS1zbWFydC1kaWZmQGxhdGVzdC9kaXN0L2FwaS1zbWFydC1kaWZmLm1pbi5qcyI+PC9zY3JpcHQ+CmBgYAoKUmVmZXJlbmNlIGBhcGktc21hcnQtZGlmZi5taW4uanNgIGluIHlvdXIgSFRNTCBhbmQgdXNlIHRoZSBnbG9iYWwgdmFyaWFibGUgYEFwaVNtYXJ0RGlmZmAuCmBgYEhUTUwKPHNjcmlwdD4KICB2YXIgeyBkaWZmcywgbWVyZ2VkIH0gPSBBcGlTbWFydERpZmYuYXBpQ29tcGFyZShiZWZvcmUsIGFmdGVyKQo8L3NjcmlwdD4KYGBgCgojIyBEb2N1bWVudGF0aW9uCgpQYWNrYWdlIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgcHVibGljIGZ1bmN0aW9uczoKCmBhcGlDb21wYXJlIChiZWZvcmUsIGFmdGVyLCBvcHRpb25zPzogQ29tcGFyZU9wdGlvbnMpOiB7IGRpZmZzOiBEaWZmW10sIG1lcmdlZDogb2JqZWN0IH1gCj4gQ2FsY3VsYXRlcyB0aGUgZGlmZmVyZW5jZSBhbmQgbWVyZ2UgdHdvIG9iamVjdHMgYW5kIGNsYXNzaWZ5IGRpZmZlcmVuY2UgaW4gYWNjb3JkaW5hbmNlIHdpdGggYmVmb3JlIGRvY3VtZW50IHR5cGUKCgojIyMgKiphcGlDb21wYXJlKGJlZm9yZSwgYWZ0ZXIsIG9wdGlvbnMpKioKVGhlIGFwaURpZmYgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBvYmplY3RzLgoKIyMjIyAqQXJndW1lbnRzKgotIGBiZWZvcmU6IGFueWAgLSB0aGUgb3JpZ2luIG9iamVjdAotIGBhZnRlcjogYW55YCAtIHRoZSBvYmplY3QgYmVpbmcgY29tcGFyZWQgc3RydWN0dXJhbGx5IHdpdGggdGhlIG9yaWdpbiBvYmplY3RcCi0gYG9wdGlvbnM6IENvbXBhcmVPcHRpb25zYCBbb3B0aW9uYWxdIC0gY29tcGFyaXNvbiBvcHRpb25zCgpgYGB0cwpleHBvcnQgdHlwZSBDb21hcHJlT3B0aW9ucyA9IHsKICBydWxlcz86IENvbXBhcmVSdWxlcyAgICAgICAgICAgICAgLy8gY3VzdG9tIHJ1bGVzIGZvciBjb21wYXJlCgogIG1ldGFLZXk/OiBzdHJpbmcgfCBzeW1ib2wgICAgICAgICAvLyBtZXRha2V5IGZvciBtZXJnZSBjaGFuZ2VzCiAgYXJyYXlNZXRhPzogYm9vbGVhbiAgICAgICAgICAgICAgIC8vIGFkZCBjaGFuZ2VzIHRvIGFycmF5cyB2aWEgbWV0YWtleQogIGFubm90YXRlSG9vaz86IEFubm90YXRlSG9vayAgICAgICAvLyBjdXN0b20gZm9ybWF0IGhvb2sKCiAgZXh0ZXJuYWxTb3VyY2VzPzogeyAgICAgICAgICAgICAgIC8vIHJlc29sdmVkIGV4dGVybmFsICRyZWYgc291cmNlcwogICAgYmVmb3JlPzogUmVjb3JkPHN0cmluZywgb2JqZWN0PgogICAgYWZ0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+CiAgfQp9CmBgYAojIyMjICpSZXN1bHQqCkZ1bmN0aW9uIHJldHVybnMgb2JqZWN0IHdpdGggYGRpZmZzYCBhcnJheSBhbmQgYG1lcmdlZGAgb2JqZWN0IHdpdGggbWV0YWRhdGEKYGBgdHMKdHlwZSBEaWZmID0gewogIGFjdGlvbjogImFkZCIgfCAicmVtb3ZlIiB8ICJyZXBsYWNlIiB8ICJyZW5hbWUiCiAgcGF0aDogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPgogIGRlc2NyaXB0aW9uPzogc3RyaW5nIAogIGJlZm9yZT86IGFueQogIGFmdGVyPzogYW55CiAgdHlwZTogImJyZWFraW5nIiB8ICJub24tYnJlYWtpbmciIHwgImFubm90YXRpb24iIHwgInVuY2xhc3NpZmllZCIgfCAiZGVwcmVjYXRlZCIKfQoKdHlwZSBNZXJnZU1ldGEgPSBEaWZmTWV0YSB8IE1lcmdlQXJyYXlNZXRhCnR5cGUgTWVyZ2VBcnJheU1ldGEgPSB7IGFycmF5OiBSZWNvcmQ8bnVtYmVyLCBNZXJnZU1ldGE+IH0KCmV4cG9ydCB0eXBlIERpZmZNZXRhID0gewogIGFjdGlvbjogImFkZCIgfCAicmVtb3ZlIiB8ICJyZXBsYWNlIiB8ICJyZW5hbWUiCiAgdHlwZTogImJyZWFraW5nIiB8ICJub24tYnJlYWtpbmciIHwgImFubm90YXRpb24iIHwgInVuY2xhc3NpZmllZCIgfCAiZGVwcmVjYXRlZCIKICByZXBsYWNlZD86IGFueQp9CmBgYAoKIyMjIyAqRXhhbXBsZSoKYGBgdHMKY29uc3QgbWV0YUtleSA9IFN5bWJvbCgiZGlmZiIpCmNvbnN0IHsgZGlmZnMsIG1lcmdlZCB9ID0gYXBpQ29tcGFyZShiZWZvcmUsIGFmdGVyLCB7IG1ldGFLZXkgfSkKCi8vIGRvIHNvbWV0aGluZyB3aXRoIGRpZmZzIG9yIG1lcmdlZCBvYmplY3QKYGBgCgojIyMgKipDdXN0b20gcnVsZXMqKgpDdXN0b20gY29tcGFyZSBydWxlcyBjYW4gYmUgZGVmaW5lZCBhcyBDcmF3bFJ1bGVzOgpgYGB0cwppbXBvcnQgeyBDcmF3bFJ1bGVzIH0gZnJvbSAianNvbi1jcmF3bCIKCnR5cGUgQ29tcGFyZVJ1bGVzID0gQ3Jhd2xSdWxlczxDb21wYXJlUnVsZT4KCnR5cGUgQ29tcGFyZVJ1bGUgPSB7CiAgJD86IENsYXNzaWZ5UnVsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGFzc2lmaWVyIGZvciBjdXJyZW50IG5vZGUKICBjb21wYXJlPzogQ29tcGFyZVJlc29sdmVyICAgICAgICAgICAgICAgICAgIC8vIGNvbXBhcmUgaGFuZGxlciBmb3IgY3VycmVudCBub2RlCiAgdHJhbnNmb3JtPzogQ29tcGFyZVRyYW5zZm9ybVJlc29sdmVyW10gICAgICAvLyB0cmFuc2Zvcm1hdGlvbnMgYmVmb3JlIGNvbXBhcmUvbWVyZ2UKICBtYXBwaW5nPzogTWFwcGluZ1Jlc29sdmVyPHN0cmluZyB8IG51bWJlcj4gIC8vIGtleXMgbWFwcGluZyBydWxlcwogIGFubm90YXRlPzogQ2hhbmdlQW5ub3RhdGlvblJlc29sdmVyICAgICAgICAgLy8gcmVzb2x2ZXIgZm9yIGFubm90YXRpb24gdGVtcGxhdGUKfQoKLy8gQ2hhbmdlIGNsYXNzaWZpZXIKdHlwZSBDbGFzc2lmeVJ1bGUgPSBbIAogIERpZmZUeXBlIHwgKGN0eDogQ29tYXByZUNvbnRleHQpID0+IERpZmZUeXBlLCAvLyBhZGQKICBEaWZmVHlwZSB8IChjdHg6IENvbWFwcmVDb250ZXh0KSA9PiBEaWZmVHlwZSwgLy8gcmVtb3ZlCiAgRGlmZlR5cGUgfCAoY3R4OiBDb21hcHJlQ29udGV4dCkgPT4gRGlmZlR5cGUsIC8vIHJlcGxhY2UgKHJlbmFtZSkKICBEaWZmVHlwZSB8IChjdHg6IENvbWFwcmVDb250ZXh0KSA9PiBEaWZmVHlwZSwgLy8gKG9wdGlvbmFsKSByZXZlcnNlZCBydWxlIGZvciBhZGQKICBEaWZmVHlwZSB8IChjdHg6IENvbWFwcmVDb250ZXh0KSA9PiBEaWZmVHlwZSwgLy8gKG9wdGlvbmFsKSByZXZlcnNlZCBydWxlIGZvciByZW1vdmUKICBEaWZmVHlwZSB8IChjdHg6IENvbWFwcmVDb250ZXh0KSA9PiBEaWZmVHlwZSAgLy8gKG9wdGlvbmFsKSByZXZlcnNlZCBydWxlIGZvciByZXBsYWNlIChyZW5hbWUpCl0KCi8vIENvbXBhcmUgY29udGV4dAp0eXBlIENvbWFwcmVDb250ZXh0ID0gewogIGJlZm9yZTogTm9kZUNvbnRleHQgICAgICAgLy8gYmVmb3JlIG5vZGUgY29udGV4dAogIGFmdGVyOiBOb2RlQ29udGV4dCAgICAgICAgLy8gYWZ0ZXIgbm9kZSBjb250ZXh0CiAgcnVsZXM6IENvbXBhcmVSdWxlcyAgICAgICAvLyBydWxlcyBmb3IgY29tcGFyZWQgbm9kZXMKICBvcHRpb25zOiBDb21hcHJlT3B0aW9ucyAgIC8vIGNvbXBhcmUgb3B0aW9ucwp9CgovLyBOb2RlIGNvbnRleHQKdHlwZSBOb2RlQ29udGV4dCA9ICB7CiAgcGF0aDogSnNvblBhdGgKICBrZXk6IHN0cmluZyB8IG51bWJlcgogIHZhbHVlOiB1bmtub3duCiAgcGFyZW50PzogdW5rbm93bgogIHJvb3Q6IHVua25vd24KfQoKLy8gQ3VzdG9tIGNvbXBhcmUgcmVzb2x2ZXIKdHlwZSBDb21wYXJlUmVzb2x2ZXIgPSAoY3R4OiBDb21hcHJlQ29udGV4dCkgPT4gQ29tcGFyZVJlc3VsdCB8IHZvaWQKCi8vIFRyYW5zZm9ybWF0aW9uIHJ1bGVzCnR5cGUgQ29tcGFyZVRyYW5zZm9ybVJlc29sdmVyPFQgPSB1bmtub3duPiA9IChiZWZvcmU6IFQsIGFmdGVyOiBUKSA9PiBbVCwgVF0KCi8vIE1hcHBpbmcgcnVsZXMKdHlwZSBNYXBwaW5nUmVzb2x2ZXIgPSAoCiAgYmVmb3JlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVua25vd25bXSwKICBhZnRlcjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmtub3duW10sIAogIGN0eDogQ29tYXByZUNvbnRleHQKKSA9PiBNYXBLZXlzUmVzdWx0Cgp0eXBlIE1hcEtleXNSZXN1bHQ8VCBleHRlbmRzIHN0cmluZyB8IG51bWJlcj4gPSB7CiAgYWRkZWQ6IEFycmF5PFQ+CiAgcmVtb3ZlZDogQXJyYXk8VD4KICBtYXBwZWQ6IFJlY29yZDxULCBUPgp9CgovLyBBbm5vdGF0aW9uIHRlbXBhbHRlIHJlc29sdmVyCnR5cGUgQ2hhbmdlQW5ub3RhdGlvblJlc29sdmVyID0gKGRpZmY6IERpZmYsIGN0eDogQ29tYXByZUNvbnRleHQpID0+IEFubm90YXRlVGVtcGxhdGUgfCB1bmRlZmluZWQKCnR5cGUgQW5ub3RhdGVUZW1wbGF0ZSA9IHsKICB0ZW1wbGF0ZTogc3RyaW5nLAogIHBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogQW5ub3RhdGVUZW1wbGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCB9Cn0KCmBgYAoKIyMgQ29udHJpYnV0aW5nCldoZW4gY29udHJpYnV0aW5nLCBrZWVwIGluIG1pbmQgdGhhdCBpdCBpcyBhbiBvYmplY3RpdmUgb2YgYGFwaS1zbWFydC1kaWZmYCB0byBoYXZlIG5vIGFkZGl0aW9uYWwgcGFja2FnZSBkZXBlbmRlbmNpZXMuIFRoaXMgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLCBidXQgZm9yIG5vdywgbm8gbmV3IGRlcGVuZGVuY2llcy4KClBsZWFzZSBydW4gdGhlIHVuaXQgdGVzdHMgYmVmb3JlIHN1Ym1pdHRpbmcgeW91ciBQUjogYHlhcm4gdGVzdGAuIEhvcGVmdWxseSB5b3VyIFBSIGluY2x1ZGVzIGFkZGl0aW9uYWwgdW5pdCB0ZXN0cyB0byBpbGx1c3RyYXRlIHlvdXIgY2hhbmdlL21vZGlmaWNhdGlvbiEKCiMjIExpY2Vuc2UKCk1JVAo= readmeEtag: '"2f695b5df20c0bcd2d6d97fd8b70107d7261b15e"' readmeLastModified: Sun, 07 Jul 2024 20:59:48 GMT repositoryId: 474422137 description: >- Compare two Json based API documents (OpenAPI, AsyncAPI, JsonSchema, GraphAPI) created: '2022-03-26T17:42:23Z' updated: '2026-01-02T01:51:03Z' language: TypeScript archived: false stars: 22 watchers: 1 forks: 7 owner: udamir logo: https://avatars.githubusercontent.com/u/29271460?v=4 license: MIT repoEtag: '"815755f9d9db6e2138379085f2742b1a1543037e4a282880a42df2ce829b48db"' repoLastModified: Fri, 02 Jan 2026 01:51:03 GMT foundInMaster: true category: Parsers - source: https://openapi.tools/ name: api-diff-viewer category: - Documentation repository: https://github.com/udamir/api-diff-viewer language: TypeScript source_description: > React component to view the difference between two Json based API documents. Supported specifications: JsonSchema, OpenAPI 3.x, AsyncAPI 2.x. v2: true v3: true v3_1: true id: 37f68f73312ab0e2f2b71f6def3e1bbf repositoryMetadata: base64Readme: >- IyBhcGktZGlmZi12aWV3ZXIKPGltZyBhbHQ9Im5wbSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L2FwaS1kaWZmLXZpZXdlciI+IDxpbWcgYWx0PSJucG0iIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vYXBpLWRpZmYtdmlld2VyP2xhYmVsPW5wbSI+IDxpbWcgYWx0PSJucG0gdHlwZSBkZWZpbml0aW9ucyIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS90eXBlcy9hcGktZGlmZi12aWV3ZXIiPiA8aW1nIGFsdD0iR2l0SHViIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvdWRhbWlyL2FwaS1kaWZmLXZpZXdlciI+CgpSZWFjdCBjb21wb25lbnQgdG8gdmlldyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBKc29uIGJhc2VkIEFQSSBkb2N1bWVudHMuIFN1cHBvcnRlZCBzcGVjaWZpY2F0aW9uczogSnNvblNjaGVtYSwgT3BlbkFQSSAzLngsIEFzeW5jQVBJIDIueC4KClZpZXcgW29ubGluZSBkZW1vXShodHRwczovL3VkYW1pci5naXRodWIuaW8vYXBpLWRpZmYtdmlld2VyLykgYW5kIFshW1N0b3J5Ym9va10oaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL3N0b3J5Ym9va2pzL2JyYW5kQG1hc3Rlci9iYWRnZS9iYWRnZS1zdG9yeWJvb2suc3ZnKV0oaHR0cHM6Ly9hcGktZGlmZi12aWV3ZXIudmVyY2VsLmFwcC8pCgojIyBDdXJyZW50IHN0YXR1cyBhbmQgcGxhbnM6Ci0gW3hdIEpzb25TY2hlbWEgc3VwcG9ydAotIFt4XSBPcGVuQXBpIDMueCBzdXBwb3J0Ci0gWyBdIFN3YWdnZXIgc3VwcG9ydAotIFt4XSBBc3luY0FwaSAyLnggc3VwcG9ydAotIFt4XSBTaWRlLWJ5LXNpZGUgY29tcGFyZSB2aWV3Ci0gW3hdIElubGluZSBjb21wYXJlIHZpZXcKLSBbeF0gWWFtbCBvdXRwdXQKLSBbeF0gSnNvbiBvdXRwdXQKLSBbeF0gQ29tcGFyZSB0ZXh0IGJ5IHdvcmRzCi0gW3hdIENvbGxhcHNlL2V4cGFuZCBibG9ja3MKLSBbeF0gVmlldyBjaGFuZ2Ugc3VtbWFyeSBvbiBjb2xsYXBlZCBibG9ja3MKLSBbeF0gQ29sbGFwc2UvZXhwYW5kIGFsbAotIFt4XSBGaWx0ZXIgY2hhbmdlcyBieSB0eXBlIChIaWRlIHVuY2hhbmdlZC9ub3QgZmlsdGVyZWQgbGluZXMpCi0gW3hdIE5hdmlnYXRpb24gc2lkZWJhcgotIFt4XSBOb24tYmxvY2tpbmcgbG9hZGluZyAodmlhIFdlYldvcmtlcikKLSBbeF0gQ3VzdG9tIHRoZW1lcyBzdXBwb3J0Ci0gWyBdIERlZmF1bHQgdGhlbWVzCi0gWyBdIFdlYkNvbXBvbmVudAotIFsgXSBQZXJmb3JtYW5jZSBpbXByb3ZlbWVudAotIFsgXSBUZXN0cwoKIyMgRG9jdW1lbnRhdGlvbgoKIyMjIEluc3RhbGxhdGlvbgoKYGBgc2gKIyBZYXJuCnlhcm4gYWRkIGFwaS1kaWZmLXZpZXdlcgoKIyBOUE0KbnBtIGluc3RhbGwgYXBpLWRpZmYtdmlld2VyCmBgYAoKPiDinKggQ2hlY2tvdXQgdGhlIHN0b3JpZXMgW2hlcmVdKGh0dHBzOi8vYXBpLWRpZmYtdmlld2VyLnZlcmNlbC5hcHAvKSBmb3IgYSBkZXRhaWxlZCBkb2N1bWVudGF0aW9uLgoKIyMgRGV2ZWxvcG1lbnQKCiMjIyBJbnN0YWxsCgpgYGBzaAp5YXJuIGluc3RhbGwKYGBgCgojIyMgRGV2ZWxvcAoKYGBgc2gKeWFybiBzdG9yeWJvb2sKYGBgCgojIyBMaWNlbnNlCgpNSVQK readmeEtag: '"2af341c9b3e71aaff92b29cf34ac7989839dca15"' readmeLastModified: Sat, 22 Jun 2024 18:54:28 GMT repositoryId: 487499674 description: React component to view difference between two Json based API documents created: '2022-05-01T09:49:52Z' updated: '2026-01-27T23:21:51Z' language: TypeScript archived: false stars: 44 watchers: 1 forks: 1 owner: udamir logo: https://avatars.githubusercontent.com/u/29271460?v=4 license: MIT repoEtag: '"c719df0ef10a12b8a22e96da7e49059c6e59ee7207164d8c97e0daa4e0ae08c3"' repoLastModified: Tue, 27 Jan 2026 23:21:51 GMT foundInMaster: true - source: https://openapi.tools/ name: allof-merge category: - Converters repository: https://github.com/udamir/allof-merge language: TypeScript source_description: Simplify your JsonSchema by combining allOf safely v3: true v3_1: true id: a2e0064b2092b9d31f862f193256ada8 repositoryMetadata: base64Readme: >- IyBhbGxvZi1tZXJnZQo8aW1nIGFsdD0ibnBtIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvYWxsb2YtbWVyZ2UiPiA8aW1nIGFsdD0ibnBtIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL2FsbG9mLW1lcmdlP2xhYmVsPW5wbSI+ICFbR2l0SHViIFdvcmtmbG93IFN0YXR1cyAod2l0aCBldmVudCldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL3VkYW1pci9hbGxvZi1tZXJnZS9jaS55bWwpCiA8aW1nIGFsdD0ibnBtIHR5cGUgZGVmaW5pdGlvbnMiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdHlwZXMvYWxsb2YtbWVyZ2UiPiAhW0NvdmVyYWxscyBicmFuY2hdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY292ZXJhbGxzQ292ZXJhZ2UvZ2l0aHViL3VkYW1pci9hbGxvZi1tZXJnZSkgPGltZyBhbHQ9IkdpdEh1YiIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL3VkYW1pci9hbGxvZi1tZXJnZSI+CgpNZXJnZSBzY2hlbWFzIHdpdGggYWxsT2YgaW50byBhIG1vcmUgcmVhZGFibGUgY29tcG9zZWQgc2NoZW1hIGZyZWUgZnJvbSBhbGxPZi4KCiMjIEZlYXR1cmVzCi0gU2FmZSBtZXJnaW5nIG9mIHNjaGVtYXMgY29tYmluZWQgd2l0aCBhbGxPZiBpbiB3aG9sZSBkb2N1bWVudAotIEZhc3Rlc3QgaW1wbG1lbnRhdGlvbiAtIHVwIHRvIHgzIHRpbWVzIGZhc3RlciB0aGVuIG90aGVyIHBvcHVsYXIgbGlicmFyaWVzCi0gTWVyZ2VkIHNjaGVtYSBkb2VzIG5vdCB2YWxpZGF0ZSBtb3JlIG9yIGxlc3MgdGhhbiB0aGUgb3JpZ2luYWwgc2NoZW1hCi0gUmVtb3ZlcyBhbG1vc3QgYWxsIGxvZ2ljYWwgaW1wb3NzaWJpbGl0aWVzCi0gQ29ycmVjdGx5IG1lcmdlIGFkZGl0aW9uYWxQcm9wZXJ0aWVzLCBwYXR0ZXJuUHJvcGVydGllcyBhbmQgcHJvcGVydGllcyB0YWtpbmcgaW50byBhY2NvdW50IGNvbW1vbiB2YWxpZGF0aW9ucwotIENvcnJlY3RseSBtZXJnZSBpdGVtcyBhbmQgYWRkaXRpb25hbEl0ZW1zIHRha2luZyBpbnRvIGFjY291bnQgY29tbW9uIHZhbGlkYXRpb25zCi0gU3VwcG9ydHMgY3VzdG9tIHJ1bGVzIHRvIG1lcmdlIG90aGVyIGRvY3VtZW50IHR5cGVzIGFuZCBKc29uU2NoZW1hIHZlcnNpb25zCi0gU3VwcG9ydHMgaW5wdXQgd2l0aCBjaXJjdWxhciByZWZlcmVuY2VzIChqYXZhU2NyaXB0IHJlZmVyZW5jZXMpCi0gU3VwcG9ydHMgJHJlZnMgYW5kIGNpcmN1bGFyICRyZWZzIGVpdGhlciAoaW50ZXJuYWwgcmVmZXJlbmNlcyBvbmx5KQotIENvcnJlY3RseSBtZXJnZSBvZiAkcmVmcyB3aXRoIHNpYmxpbmcgY29udGVudCAob3B0aW9uYWxseSkKLSBDb3JyZWN0bHkgbWVyZ2Ugb2YgY29tYmluYXJpZXMgKGFueU9mLCBvbmVPZikgd2l0aCBzaWJsaW5nIGNvbnRlbnQgKG9wdGlvbmFsbHkpCi0gVHlwZXNjcmlwdCBzeW50YXggc3VwcG9ydCBvdXQgb2YgdGhlIGJveAotIE5vIGRlcGVuZGVuY2llcyAoZXhjZXB0IGpzb24tY3Jhd2wpLCBjYW4gYmUgdXNlZCBpbiBub2RlanMgb3IgYnJvd3NlcgoKIyMgV29ya3MgcGVyZmVjdGx5IHdpdGggc3BlY2lmaWNhdGlvbnM6CgotIFtKc29uU2NoZW1hXShodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDIwLTEyL2pzb24tc2NoZW1hLWNvcmUuaHRtbCkKLSBbT3BlbkFwaSAzLnhdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjAuMy5tZCkKLSBbR3JhcGhBcGldKGh0dHBzOi8vZ2l0aHViLmNvbS91ZGFtaXIvZ3JhcGhhcGkpCi0gfn5Td2FnZ2VyIDIueH5+IChyb2FkbWFwKQotIH5+QXN5bmNBcGkgMi54fn4gKHJvYWRtYXApCi0gfn5Bc3luY0FwaSAzLnh+fiAocm9hZG1hcCkKCiMjIE90aGVyIGxpYnJhcmllcwpUaGVyZSBhcmUgc29tZSBsaWJyYXJpZXMgdGhhdCBjYW4gbWVyZ2Ugc2NoZW1hcyBjb21iaW5lZCB3aXRoIGFsbE9mLiBPbmUgb2YgdGhlIG1vc3QgcG9wdWxhciBpcyBbbW9ra2Fib25uYS9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZl0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvanNvbi1zY2hlbWEtbWVyZ2UtYWxsb2YpLCBidXQgaXQgaGFzIHNvbWUgbGltaXRhdG9uczogRG9lcyBub3Qgc3VwcG9ydCBjaXJjdWxhciAkcmVmcyBhbmQgbm8gVHlwZXNjcmlwdCBzeW50YXggb3V0IG9mIHRoZSBib3guCgojIyBFeHRlcm5hbCAkcmVmCklmIHNjaGVtYSBjb250YWlucyBhbiBleHRlcm5hbCAkcmVmLCB5b3Ugc2hvdWxkIGJ1bmRsZSBpdCB2aWEgW2FwaS1yZWYtYnVuZGxlcl0oaHR0cHM6Ly9naXRodWIuY29tL3VkYW1pci9hcGktcmVmLWJ1bmRsZXIpIGZpcnN0LgoKIyMgSW5zdGFsbGF0aW9uCmBgYFNICm5wbSBpbnN0YWxsIGFsbG9mLW1lcmdlIC0tc2F2ZQpgYGAKCiMjIFVzYWdlCgojIyMgTm9kZWpzCmBgYHRzCmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnYWxsb2YtbWVyZ2UnCgpjb25zdCBkYXRhID0gewogIHR5cGU6IFsnb2JqZWN0JywgJ251bGwnXSwKICBhZGRpdGlvbmFsUHJvcGVydGllczogewogICAgdHlwZTogJ3N0cmluZycsCiAgICBtaW5MZW5ndGg6IDUKICB9LAogIGFsbE9mOiBbewogICAgdHlwZTogWydhcnJheScsICdvYmplY3QnXSwKICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7CiAgICAgIHR5cGU6ICdzdHJpbmcnLAogICAgICBtaW5MZW5ndGg6IDEwLAogICAgICBtYXhMZW5ndGg6IDIwCiAgICB9CiAgfV0KfQoKY29uc3Qgb25NZXJnZUVycm9yID0gKG1zZykgPT4gewogIHRocm93IG5ldyBFcnJvcihtc2cpCn0KCmNvbnN0IG1lcmdlZCA9IG1lcmdlKGRhdGEsIHsgb25NZXJnZUVycm9yIH0pCgpjb25zb2xlLmxvZyhtZXJnZWQpCi8vIHsKLy8gICB0eXBlOiAnb2JqZWN0JywKLy8gICBhZGRpdGlvbmFsUHJvcGVydGllczogewovLyAgICAgdHlwZTogJ3N0cmluZycsCi8vICAgICBtaW5MZW5ndGg6IDEwLAovLyAgICAgbWF4TGVuZ3RoOiAyMAovLyAgIH0KLy8gfQoKYGBgCgojIyMgQnJvd3NlcnMKCkEgYnJvd3NlciB2ZXJzaW9uIG9mIGBhbGxvZi1tZXJnZWAgaXMgYWxzbyBhdmFpbGFibGUgdmlhIENETjoKYGBgaHRtbAo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9hbGxvZi1tZXJnZUBsYXRlc3QvYnJvd3Nlci9hbGxvZi1tZXJnZS5taW4uanMiPjwvc2NyaXB0PgpgYGAKClJlZmVyZW5jZSBgYWxsb2YtbWVyZ2UubWluLmpzYCBpbiB5b3VyIEhUTUwgYW5kIHVzZSB0aGUgZ2xvYmFsIHZhcmlhYmxlIGBBbGxPZk1lcmdlYC4KYGBgSFRNTAo8c2NyaXB0PgogIHZhciBtZXJnZWQgPSBBbGxPZk1lcmdlLm1lcmdlKHsgLyogLi4uICovIH0pCjwvc2NyaXB0PgpgYGAKCiMjIERvY3VtZW50YXRpb24KCiMjIyBgbWVyZ2UoZGF0YTogYW55LCBvcHRpb25zPzogTWVyZ2VPcHRpb25zKWAKQ3JlYXRlIGEgY29weSBvZiBgZGF0YWAgd2l0aCBtZXJnZWQgYWxsT2Ygc2NoZW1hczoKCgojIyMgTWVyZ2Ugb3B0aW9ucwpgYGB0cwppbnRlcmZhY2UgTWVyZ2VPcHRpb25zIHsKICAvLyBzb3VyY2UgZG9jdW1lbnQgaWYgbWVyZ2luZyBvbmx5IHBhcnQgb2YgaXQKICAvLyAob3B0aW9uYWwpIGRlZmF1bHQgPSBkYXRhCiAgc291cmNlPzogYW55ICAgICAgICAgIAogIAogIC8vIGN1c3RvbSBtZXJnZSBydWxlcwogIC8vIChvcHRpb25hbCkgZGVmYXVsdCA9IGF1dG8gc2VsZWN0IGJhc2VkIG9uIHRoZSBpbnB1dCAoanNvblNjaGVtYU1lcmdlUnVsZXMsIG9wZW5BcGlNZXJnZVJ1bGVzLCBncmFwaGFwaU1lcmdlUnVsZXMpCiAgcnVsZXM/OiBNZXJnZVJ1bGVzICAgIAoKICAvLyBtZXJnZSAkcmVmIHdpdGggc2libGluZyBjb250ZW50CiAgLy8gKG9wdGlvbmFsKSBkZWZhdWx0ID0gZmFsc2UKICBtZXJnZVJlZlNpYmxpbmc/OiBib29sZWFuICAKCiAgLy8gbWVyZ2UgYW55T2Yvb25lT2Ygd2l0aCBzaWJsaW5nIGNvbnRlbnQKICAvLyAob3B0aW9uYWwpIGRlZmF1bHQgPSBmYWxzZQogIG1lcmdlQ29tYmluYXJ5U2libGluZz86IGJvb2xlYW4gIAoKICAvLyBNZXJnZSBlcnJvciBob29rLCBjYWxsZWQgb24gYW55IG1lcmdlIGNvbmZsaWN0cwogIG9uTWVyZ2VFcnJvcj86IChtZXNzYWdlOiBzdHJpbmcsIHBhdGg6IEpzb25QYXRoLCB2YWx1ZXM6IGFueVtdKSA9PiB2b2lkCgogIC8vIFJlZiByZXNvbHZlIGVycm9yIGhvb2ssIGNhbGxlZCBvbiBicm9rZW4gcmVmCiAgb25SZWZSZXNvbHZlRXJyb3I/OiAobWVzc2FnZTogc3RyaW5nLCBwYXRoOiBKc29uUGF0aCwgcmVmOiBzdHJpbmcpID0+IHZvaWQKfQpgYGAKCiMjIyBTdXBwb3J0ZWQgcnVsZXMKWW91IGNhbiBmaW5kIHN1cHBvcnRlZCBydWxlcyBpbiB0aGUgc3JjL3J1bGVzIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnk6Ci0gYGpzb25TY2hlbWFNZXJnZVJ1bGVzKHZlcnNpb246ICJkcmFmdC0wNCIgfCAiZHJhZnQtMDYiKWAKLSBgb3BlbkFwaU1lcmdlUnVsZXModmVyc2lvbjogIjMuMC54IiB8ICIzLjEueCIpYAotIGBncmFwaGFwaU1lcmdlUnVsZXNgCgojIyBCZW5jaG1hcmsKYGBgCmFsbG9mLW1lcmdlIHggNjU3IG9wcy9zZWMgwrEyLjM1JSAoOTAgcnVucyBzYW1wbGVkKQpqc29uLXNjaGVtYS1tZXJnZS1hbGxvZiB4IDIxNyBvcHMvc2VjIMKxMi4wMyUgKDg2IHJ1bnMgc2FtcGxlZCkKRmFzdGVzdCBpcyBhbGxvZi1tZXJnZQpgYGAKCkNoZWNrIHlvdXJzZWxmOgpgYGBTSApucG0gcnVuIGJlbmNobWFyawpgYGAKCiMjIENvbnRyaWJ1dGluZwpXaGVuIGNvbnRyaWJ1dGluZywga2VlcCBpbiBtaW5kIHRoYXQgaXQgaXMgYW4gb2JqZWN0aXZlIG9mIGBhbGxvZi1tZXJnZWAgdG8gaGF2ZSBubyBhZGRpdGlvbmFsIHBhY2thZ2UgZGVwZW5kZW5jaWVzLgoKUGxlYXNlIHJ1biB0aGUgdW5pdCB0ZXN0cyBiZWZvcmUgc3VibWl0dGluZyB5b3VyIFBSOiBgeWFybiB0ZXN0YC4gSG9wZWZ1bGx5IHlvdXIgUFIgaW5jbHVkZXMgYWRkaXRpb25hbCB1bml0IHRlc3RzIHRvIGlsbHVzdHJhdGUgeW91ciBjaGFuZ2UvbW9kaWZpY2F0aW9uIQoKIyMgTGljZW5zZQoKTUlUCg== readmeEtag: '"33ef5b45f625c0c210b5b8c8af011fc0d12150ca"' readmeLastModified: Wed, 02 Apr 2025 21:59:15 GMT repositoryId: 654923338 description: Simplify your JsonSchema by combining allOf safely. created: '2023-06-17T10:45:41Z' updated: '2026-02-01T19:22:14Z' language: TypeScript archived: false stars: 22 watchers: 2 forks: 8 owner: udamir logo: https://avatars.githubusercontent.com/u/29271460?v=4 license: MIT repoEtag: '"e5841e1959b7a0eebf319363c42fe213b219394ec0b93ff242982ca7b847e652"' repoLastModified: Sun, 01 Feb 2026 19:22:14 GMT foundInMaster: true - source: https://openapi.tools/ name: api-ref-bundler category: - Converters repository: https://github.com/udamir/api-ref-bundler language: TypeScript source_description: Bundle all external $ref in Json based API document into single document v2: true v3: true v3_1: true id: 2ad0c45112ccac96da3d99c14521db3b repositoryMetadata: base64Readme: >- IyBhcGktcmVmLWJ1bmRsZXIKPGltZyBhbHQ9Im5wbSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L2FwaS1yZWYtYnVuZGxlciI+IDxpbWcgYWx0PSJucG0iIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vYXBpLXJlZi1idW5kbGVyP2xhYmVsPW5wbSI+ICFbR2l0SHViIFdvcmtmbG93IFN0YXR1cyAod2l0aCBldmVudCldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL3VkYW1pci9hcGktcmVmLWJ1bmRsZXIvbm9kZS5qcy55bWwpIDxpbWcgYWx0PSJucG0gdHlwZSBkZWZpbml0aW9ucyIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS90eXBlcy9hcGktcmVmLWJ1bmRsZXIiPiA8aW1nIGFsdD0iR2l0SHViIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvdWRhbWlyL2FwaS1yZWYtYnVuZGxlciI+CgpUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdXRpbHMgdG8gcmVzb2x2ZSBhbGwgZXh0ZXJuYWwvaW50ZXJuYWwgcmVmZXJlbmNlcyBpbiBKc29uIGJhc2VkIEFQSSBkb2N1bWVudCBhbmQgYnVuZGxlL2RlcmVmZXJlbmNlIGludG8gc2luZ2xlIGRvY3VtZW50CgojIyBXb3JrcyBwZXJmZWN0bHkgd2l0aCBBUEkgc3BlY2lmaWNhdGlvbnMKCi0gW0pzb25TY2hlbWFdKGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvanNvbi1zY2hlbWEtY29yZS5odG1sKQotIFtTd2FnZ2VyIDIueF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItc3BlYy9ibG9iL21hc3Rlci92ZXJzaW9ucy8yLjAubWQpCi0gW09wZW5BcGkgMy54XShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21haW4vdmVyc2lvbnMvMy4wLjMubWQpCi0gW0FzeW5jQXBpIDIueF0oaHR0cHM6Ly93d3cuYXN5bmNhcGkuY29tL2RvY3Mvc3BlY2lmaWNhdGlvbnMvdjIuNC4wKQotIFtBc3luY0FwaSAzLnhdKGh0dHBzOi8vd3d3LmFzeW5jYXBpLmNvbS9kb2NzL3JlZmVyZW5jZS9zcGVjaWZpY2F0aW9uL3YzLjAuMCkKCiMjIEZlYXR1cmVzCi0gYnVuZGxlIGFsbCBleHRlcm5hbCByZWZzIGluIHNpZ25sZSBkb2N1bWVudAotIGNvbnZlcnRzIGV4dGVybmFsIHJlZmVyZW5jZXMgaW50byBpbnRlcm5hbAotIHN1cHBvcnQgZnVsbCBhbmQgcGFydGlhbCBkZXJlZmVyZW5jZQotIHN1cHBvcnQgZXh0ZXJuYWwgJy5tZCcgcmVmZXJlbmNlcwotIHN1cHBvcnQgZm9yIGFsbCBraW5kcyBvZiBjaXJjdWxhcml0eQotIG5vIGNvbmNlcHQgb2YgcmVzb2x2ZXJzIC0geW91IGFyZSBpbiBjaGFyZ2Ugb2YgdGhlIHdob2xlIHJlYWRpbmcgJiBwYXRoIHBhcnNpbmcgcHJvY2VzcwotIG5vIHBhcnNlciBpbmNsdWRlZCAtIGJyaW5nIHlvdXIgb3duIQotIFR5cGVzY3JpcHQgc3ludGF4IHN1cHBvcnQgb3V0IG9mIHRoZSBib3gKLSBObyBkZXBlbmRlbmNpZXMsIGNhbiBiZSB1c2VkIGluIG5vZGVqcyBvciBicm93c2VyCgojIyBJbnN0YWxsYXRpb24KYGBgU0gKbnBtIGluc3RhbGwgYXBpLXJlZi1idW5kbGVyIC0tc2F2ZQpgYGAKCiMjIFVzYWdlCgojIyMgTm9kZWpzCmBgYHRzCmltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnCmltcG9ydCB7IGJ1bmRsZSwgZGVyZWZlcmVuY2UgfSBmcm9tICdhcGktcmVmLWJ1bmRsZXInCgpjb25zdCByZXNvbHZlciA9IGFzeW5jIChzb3VyY2VQYXRoKSA9PiB7CiAgY29uc3QgZGF0YSA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGguam9pbihfX2Rpcm5hbWUsICIuLyIsIHNvdXJjZVBhdGgpLCAidXRmOCIpCiAgcmV0dXJuIHNvdXJjZVBhdGguc2xpY2UoLTMpID09PSAiLm1kIiA/IGRhdGEgOiBKU09OLnBhcnNlKGRhdGEpICAgICAgCn0KCi8vIGJ1bmRsZSAoY29udmVydCBhbGwgZXh0ZXJuYWwgcmVmcyB0byBpbnRlcm5hbCkKYnVuZGxlKCJzY2hlbWEuanNvbiIsIHJlc29sdmVyLCB7IGlnbm9yZVNpYmxpbmc6IHRydWUgfSkudGhlbihzY2hlbWEgPT4gewogIGNvbnNvbGUubG9nKHNjaGVtYSkKfSkuY2F0Y2goZXJyb3JzID0+IHsKICBjb25zb2xlLmxvZyhlcnJvcnMpCn0pCgpjb25zdCBvbkVycm9ySG9vayA9IChtc2c6IHN0cmluZykgPT4gewogIHRocm93IG5ldyBFcnJvcihtc2cpCn0KCi8vIGZ1bGwgZGVyZWZlcmVuY2UgKHJlbW92ZSBhbGwgcmVmcykKZGVyZWZlcmVuY2UoInNjaGVtYS5qc29uIiwgcmVzb2x2ZXIsIHsgaG9va3M6IHsgb25FcnJvcjogb25FcnJvckhvb2sgfX0pLnRoZW4oc2NoZW1hID0+IHsKICBjb25zb2xlLmxvZyhzY2hlbWEpCn0pLmNhdGNoKGVycm9ycyA9PiB7CiAgY29uc29sZS5sb2coZXJyb3JzKQp9KQoKLy8gcGFydGlhbCBkZXJlZmVyZW5jZSAocmVtb3ZlIGFsbCByZWZzIGluIHBhdGggJy9wcm9wZXJ0aWVzL2ZvbycpCmRlcmVmZXJlbmNlKCJzY2hlbWEuanNvbiMvcHJvcGVydGllcy9mb28iLCByZXNvbHZlcikudGhlbihmb28gPT4gewogIGNvbnNvbGUubG9nKGZvbykKfSkuY2F0Y2goZXJyb3JzID0+IHsKICBjb25zb2xlLmxvZyhlcnJvcnMpCn0pCgpgYGAKCiMjIyMgQnVuZGxlIG9wdGlvbnMKYGBgdHMKaW50ZXJmYWNlIEJ1bmRsZU9wdGlvbnMgewogIGlnbm9yZVNpYmxpbmc/OiBib29sZWFuICAgICAvLyBpZ25vcmUgJHJlZiBzaWJsaW5nIGNvbnRlbnQKICBob29rcz86IHsKICAgIG9uRXJyb3I/OiAobWVzc2FnZTogc3RyaW5nLCBjdHg6IEJ1bmRsZUNvbnRleHQpID0+IHZvaWQgLy8gZXJyb3IgaG9vawogICAgb25SZWY/OiAocmVmOiBzdHJpbmcsIGN0eDogQnVuZGxlQ29udGV4dCkgPT4gdm9pZCAgICAgICAvLyByZWYgaG9vawogICAgb25DcmF3bD86ICh2YWx1ZTogYW55LCBjdHg6IEJ1bmRsZUNvbnRleHQpID0+IHZvaWQgICAgICAvLyBub2RlIGNyYXdsIGhvb2sKICAgIG9uRXhpdD86ICh2YWx1ZTogYW55LCBjdHg6IEJ1bmRsZUNvbnRleHQpID0+IHZvaWQgICAgICAvLyBub2RlIGNyYXdsIGV4aXQgaG9vawogIH0KfQpgYGAKCiMjIyMgRGVyZWZlcmVuY2Ugb3B0aW9ucwpgYGB0cwppbnRlcmZhY2UgRGVyZWZlcmVuY2VPcHRpb25zIHsKICBpZ25vcmVTaWJsaW5nPzogYm9vbGVhbiAgIC8vIGlnbm9yZSAkcmVmIHNpYmxpbmcgY29udGVudAogIGZ1bGxDcmF3bD86IGJvb2xlYW4gICAgICAgLy8gY3Jhd2wgYWxsIG5vZGVzIGluY2x1ZGluIGNhY2hlZAogIGVuYWJsZUNpcmN1bGFyPzogYm9vbGVhbiAgLy8gY29udmVydCBjaXJjdWxhciAkcmVmcyB0byBub2RlcwogIGhvb2tzPzogewogICAgb25FcnJvcj86IChtZXNzYWdlOiBzdHJpbmcsIGN0eDogRGVyZWZlcmVuY2VDb250ZXh0KSA9PiB2b2lkICAvLyBlcnJvciBob29rCiAgICBvblJlZj86IChyZWY6IHN0cmluZywgY3R4OiBEZXJlZmVyZW5jZUNvbnRleHQpID0+IHZvaWQgICAgICAgIC8vIHJlZiBob29rCiAgICBvbkNyYXdsPzogKHZhbHVlOiBhbnksIGN0eDogRGVyZWZlcmVuY2VDb250ZXh0KSA9PiB2b2lkICAgICAgIC8vIG5vZGUgY3Jhd2wgaG9vawogICAgb25FeGl0PzogKHZhbHVlOiBhbnksIGN0eDogRGVyZWZlcmVuY2VDb250ZXh0KSA9PiB2b2lkICAgICAgIC8vIG5vZGUgY3Jhd2wgZXhpdCBob29rCiAgICBvbkN5Y2xlPzogKHJlZjogc3RyaW5nLCBjdHg6IERlcmVmZXJlbmNlQ29udGV4dCkgPT4gdm9pZCAgICAgIC8vIGN5Y2xlIHJlZnMgaG9vawogIH0KfQpgYGAKCiMjIyBCcm93c2VycwoKQSBicm93c2VyIHZlcnNpb24gb2YgYGFwaS1yZWYtYnVuZGxlcmAgaXMgYWxzbyBhdmFpbGFibGUgdmlhIENETjoKYGBgaHRtbAo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9hcGktcmVmLWJ1bmRsZXJAbGF0ZXN0Ij48L3NjcmlwdD4KYGBgCgpSZWZlcmVuY2UgYGFwaS1yZWYtYnVuZGxlcmAgaW4geW91ciBIVE1MIGFuZCB1c2UgdGhlIGdsb2JhbCB2YXJpYWJsZSBgQXBpUmVmQnVuZGxlcmAuCmBgYEhUTUwKPHNjcmlwdD4KICBjb25zdCByZXNvbHZlciA9IGFzeW5jIChzb3VyY2VQYXRoKSA9PiB7CiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2goc291cmNlUGF0aCkKICAgIHJldHVybiBzb3VyY2VQYXRoLnNsaWNlKC0zKSA9PT0gIi5tZCIgPyBkYXRhLnRleHQoKSA6IGRhdGEuanNvbigpCiAgfQoKICBBcGlSZWZCdW5kbGVyLmJ1bmRsZSgiaHR0cDovL2V4YW1wbGUuY29tL3NjaGVtYSIsIHJlc29sdmVyKS50aGVuKHNjaGVtYSA9PiB7CiAgICBjb25zb2xlLmxvZyhzY2hlbWEpCiAgfSkuY2F0Y2goZXJyb3JzID0+IHsKICAgIGNvbnNvbGUubG9nKGVycm9ycykKICB9KSAgCjwvc2NyaXB0PgpgYGAKCiMjIENvbnRyaWJ1dGluZwpXaGVuIGNvbnRyaWJ1dGluZywga2VlcCBpbiBtaW5kIHRoYXQgaXQgaXMgYW4gb2JqZWN0aXZlIG9mIGBhcGktcmVmLWJ1bmRsZXJgIHRvIGhhdmUgbm8gcGFja2FnZSBkZXBlbmRlbmNpZXMuIFRoaXMgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLCBidXQgZm9yIG5vdywgbm8tZGVwZW5kZW5jaWVzLgoKUGxlYXNlIHJ1biB0aGUgdW5pdCB0ZXN0cyBiZWZvcmUgc3VibWl0dGluZyB5b3VyIFBSOiBgbnBtIHRlc3RgLiBIb3BlZnVsbHkgeW91ciBQUiBpbmNsdWRlcyBhZGRpdGlvbmFsIHVuaXQgdGVzdHMgdG8gaWxsdXN0cmF0ZSB5b3VyIGNoYW5nZS9tb2RpZmljYXRpb24hCgojIyBMaWNlbnNlCgpNSVQK readmeEtag: '"19d26c4d80c7c463689c9624cbbdd9f99c3650db"' readmeLastModified: Sun, 01 Feb 2026 23:05:45 GMT repositoryId: 507419359 description: Bundle all external $ref in Json based API document into single document created: '2022-06-25T21:21:05Z' updated: '2026-02-01T23:06:26Z' language: TypeScript archived: false stars: 26 watchers: 1 forks: 4 owner: udamir logo: https://avatars.githubusercontent.com/u/29271460?v=4 license: MIT repoEtag: '"40450937f2def194f2bacdae72a3d9005822ec51a20b436b07dcef47cf0ed923"' repoLastModified: Sun, 01 Feb 2026 23:06:26 GMT foundInMaster: true - source: https://openapi.tools/ name: rswag category: - DSL - Parsers language: ruby repository: https://github.com/rswag/rswag source_description: >- Rswag extends rspec-rails request specs with a Swagger-based DSL for describing and testing API operations. link: https://github.com/rswag/rswag v2: false v3: true v3_1: false id: deff653b64eefc96f65009006866b9a2 repositoryMetadata: base64Readme: >- PCEtLSBjc3BlbGw6aWdub3JlIGFsbG9mIGFueW9mIG9uZW9mIHNwZWNpZnlpbmd0ZXN0aW5nIC0tPgoKcnN3YWcKPT09PT09PT09ClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL3Jzd2FnL3Jzd2FnL2FjdGlvbnMvd29ya2Zsb3dzL3J1YnkueW1sL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9naXRodWIuY29tL3Jzd2FnL3Jzd2FnL2FjdGlvbnMvd29ya2Zsb3dzL3J1YnkueW1sP3F1ZXJ5PWJyYW5jaCUzQW1hc3RlcispClshW01haW50YWluYWJpbGl0eV0oaHR0cHM6Ly9hcGkuY29kZWNsaW1hdGUuY29tL3YxL2JhZGdlcy8xMTc1Yjk4NGVkYzQ2MTBmODJhYi9tYWludGFpbmFiaWxpdHkpXShodHRwczovL2NvZGVjbGltYXRlLmNvbS9naXRodWIvcnN3YWcvcnN3YWcvbWFpbnRhaW5hYmlsaXR5KQoKT3BlbkFwaSAzLjAgY29tcGF0aWJsZSEKClNlZWtpbmcgbWFpbnRhaW5lcnMhIEdvdCBhIHBldC1idWcgdGhhdCBuZWVkcyBmaXhpbmc/IEp1c3QgbGV0IHVzIGtub3cgaW4geW91ciBpc3N1ZS9wciB0aGF0IHlvdSdkIGxpa2UgdG8gc3RlcCB1cCB0byBoZWxwLgoKUnN3YWcgZXh0ZW5kcyByc3BlYy1yYWlscyAicmVxdWVzdCBzcGVjcyIgd2l0aCBhIFN3YWdnZXItYmFzZWQgRFNMIGZvciBkZXNjcmliaW5nIGFuZCB0ZXN0aW5nIEFQSSBvcGVyYXRpb25zLiBZb3UgZGVzY3JpYmUgeW91ciBBUEkgb3BlcmF0aW9ucyB3aXRoIGEgc3VjY2luY3QsIGludHVpdGl2ZSBzeW50YXgsIGFuZCBpdCBhdXRvbWF0aWNhbGx5IHJ1bnMgdGhlIHRlc3RzLiBPbmNlIHlvdSBoYXZlIGdyZWVuIHRlc3RzLCBydW4gYSByYWtlIHRhc2sgdG8gYXV0by1nZW5lcmF0ZSBjb3JyZXNwb25kaW5nIE9wZW5BUEkgZmlsZXMgYW5kIGV4cG9zZSB0aGVtIGFzIFlBTUwgb3IgSlNPTiBlbmRwb2ludHMuIFJzd2FnIGFsc28gcHJvdmlkZXMgYW4gZW1iZWRkZWQgdmVyc2lvbiBvZiB0aGUgYXdlc29tZSBbc3dhZ2dlci11aV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkpIHRoYXQncyBwb3dlcmVkIGJ5IHRoZSBleHBvc2VkIGZpbGUuIFRoaXMgdG9vbGNoYWluIG1ha2VzIGl0IHNlYW1sZXNzIHRvIGdvIGZyb20gaW50ZWdyYXRpb24gc3BlY3MsIHdoaWNoIHlvdSdyZSBwcm9iYWJseSBkb2luZyBpbiBzb21lIGZvcm0gYWxyZWFkeSwgdG8gbGl2aW5nIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgQVBJIGNvbnN1bWVycy4KCkFwaSBSc3dhZyBjcmVhdGVzIFtTd2FnZ2VyXShodHRwOi8vc3dhZ2dlci5pbykgdG9vbGluZyBmb3IgUmFpbHMgQVBJJ3MuIEdlbmVyYXRlIGJlYXV0aWZ1bCBBUEkgZG9jdW1lbnRhdGlvbiwgaW5jbHVkaW5nIGEgVUkgdG8gZXhwbG9yZSBhbmQgdGVzdCBvcGVyYXRpb25zLCBkaXJlY3RseSBmcm9tIHlvdXIgcnNwZWMgaW50ZWdyYXRpb24gdGVzdHMuCgoKQW5kIHRoYXQncyBub3QgYWxsIC4uLgoKT25jZSB5b3UgaGF2ZSBhbiBBUEkgdGhhdCBjYW4gZGVzY3JpYmUgaXRzZWxmIGluIFN3YWdnZXIsIHlvdSd2ZSBvcGVuZWQgdGhlIHRyZWFzdXJlIGNoZXN0IG9mIFN3YWdnZXItYmFzZWQgdG9vbHMgaW5jbHVkaW5nIGEgY2xpZW50IGdlbmVyYXRvciB0aGF0IGNhbiBiZSB0YXJnZXRlZCB0byBhIHdpZGUgcmFuZ2Ugb2YgcG9wdWxhciBwbGF0Zm9ybXMuIFNlZSBbc3dhZ2dlci1jb2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuKSBmb3IgbW9yZSBkZXRhaWxzLgoKPCEtLSBTVEFSVCBkb2N0b2MgZ2VuZXJhdGVkIFRPQyBwbGVhc2Uga2VlcCBjb21tZW50IGhlcmUgdG8gYWxsb3cgYXV0byB1cGRhdGUgLS0+CioqVGFibGUgb2YgQ29udGVudHMqKgoKLSBbcnN3YWddKCNyc3dhZykKICAtIFtHZXR0aW5nIFN0YXJ0ZWRdKCNnZXR0aW5nLXN0YXJ0ZWQpCiAgLSBbVGhlIHJzcGVjIERTTF0oI3RoZS1yc3BlYy1kc2wpCiAgICAtIFtQYXRocywgT3BlcmF0aW9ucyBhbmQgUmVzcG9uc2VzXSgjcGF0aHMtb3BlcmF0aW9ucy1hbmQtcmVzcG9uc2VzKQogICAgLSBbTnVsbCBWYWx1ZXNdKCNudWxsLXZhbHVlcykKICAgIC0gW1N1cHBvcnQgZm9yIG9uZU9mLCBhbnlPZiBvciBBbGxPZiBzY2hlbWFzXSgjc3VwcG9ydC1mb3Itb25lb2YtYW55b2Ytb3ItYWxsb2Ytc2NoZW1hcykKICAgIC0gW0dsb2JhbCBNZXRhZGF0YV0oI2dsb2JhbC1tZXRhZGF0YSkKICAgICAgLSBbU3VwcG9ydGluZyBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBBUEldKCNzdXBwb3J0aW5nLW11bHRpcGxlLXZlcnNpb25zLW9mLWFwaSkKICAgICAgLSBbRm9ybWF0dGluZyB0aGUgZGVzY3JpcHRpb24gbGl0ZXJhbHM6XSgjZm9ybWF0dGluZy10aGUtZGVzY3JpcHRpb24tbGl0ZXJhbHMpCiAgICAtIFtTcGVjaWZ5aW5nL1Rlc3RpbmcgQVBJIFNlY3VyaXR5XSgjc3BlY2lmeWluZ3Rlc3RpbmctYXBpLXNlY3VyaXR5KQogIC0gW0NvbmZpZ3VyYXRpb24gJiBDdXN0b21pemF0aW9uXSgjY29uZmlndXJhdGlvbi0tY3VzdG9taXphdGlvbikKICAgIC0gW091dHB1dCBMb2NhdGlvbiBmb3IgR2VuZXJhdGVkIE9wZW5BUEkgRmlsZXNdKCNvdXRwdXQtbG9jYXRpb24tZm9yLWdlbmVyYXRlZC1vcGVuYXBpLWZpbGVzKQogICAgLSBbSW5wdXQgTG9jYXRpb24gZm9yIFJzcGVjIFRlc3RzXSgjaW5wdXQtbG9jYXRpb24tZm9yLXJzcGVjLXRlc3RzKQogICAgLSBbUmVmZXJlbmNlZCBQYXJhbWV0ZXJzIGFuZCBTY2hlbWEgRGVmaW5pdGlvbnNdKCNyZWZlcmVuY2VkLXBhcmFtZXRlcnMtYW5kLXNjaGVtYS1kZWZpbml0aW9ucykKICAgIC0gW1JlcXVlc3QgZXhhbXBsZXNdKCNyZXF1ZXN0LWV4YW1wbGVzKQogICAgLSBbUmVzcG9uc2UgaGVhZGVyc10oI3Jlc3BvbnNlLWhlYWRlcnMpCiAgICAgIC0gW051bGxhYmxlIG9yIE9wdGlvbmFsIFJlc3BvbnNlIEhlYWRlcnNdKCNudWxsYWJsZS1vci1vcHRpb25hbC1yZXNwb25zZS1oZWFkZXJzKQogICAgLSBbUmVzcG9uc2UgZXhhbXBsZXNdKCNyZXNwb25zZS1leGFtcGxlcykKICAgIC0gW0VuYWJsZSBhdXRvIGdlbmVyYXRpb24gZXhhbXBsZXMgZnJvbSByZXNwb25zZXNdKCNlbmFibGUtYXV0by1nZW5lcmF0aW9uLWV4YW1wbGVzLWZyb20tcmVzcG9uc2VzKQogICAgICAtIFtEcnkgUnVuIE9wdGlvbl0oI2RyeS1ydW4tb3B0aW9uKQogICAgICAtIFtSdW5uaW5nIHRlc3RzIHdpdGhvdXQgZG9jdW1lbnRpbmddKCNydW5uaW5nLXRlc3RzLXdpdGhvdXQtZG9jdW1lbnRpbmcpCiAgICAgICAgLSBbcnN3YWcgaGVscGVyIG1ldGhvZHNdKCNyc3dhZy1oZWxwZXItbWV0aG9kcykKICAgIC0gW1JvdXRlIFByZWZpeCBmb3IgT3BlbkFQSSBKU09OIEVuZHBvaW50c10oI3JvdXRlLXByZWZpeC1mb3Itb3BlbmFwaS1qc29uLWVuZHBvaW50cykKICAgIC0gW1Jvb3QgTG9jYXRpb24gZm9yIE9wZW5BUEkgRmlsZXNdKCNyb290LWxvY2F0aW9uLWZvci1vcGVuYXBpLWZpbGVzKQogICAgLSBbRHluYW1pYyBWYWx1ZXMgZm9yIE9wZW5BUEkgSlNPTl0oI2R5bmFtaWMtdmFsdWVzLWZvci1vcGVuYXBpLWpzb24pCiAgICAtIFtDdXN0b20gSGVhZGVycyBmb3IgT3BlbkFQSSBGaWxlc10oI2N1c3RvbS1oZWFkZXJzLWZvci1vcGVuYXBpLWZpbGVzKQogICAgLSBbRW5hYmxlIFN3YWdnZXIgRW5kcG9pbnRzIGZvciBzd2FnZ2VyLXVpXSgjZW5hYmxlLXN3YWdnZXItZW5kcG9pbnRzLWZvci1zd2FnZ2VyLXVpKQogICAgLSBbRW5hYmxlIFNpbXBsZSBCYXNpYyBBdXRoIGZvciBzd2FnZ2VyLXVpXSgjZW5hYmxlLXNpbXBsZS1iYXNpYy1hdXRoLWZvci1zd2FnZ2VyLXVpKQogICAgLSBbUm91dGUgUHJlZml4IGZvciB0aGUgc3dhZ2dlci11aV0oI3JvdXRlLXByZWZpeC1mb3ItdGhlLXN3YWdnZXItdWkpCiAgICAtIFtDdXN0b21pemluZyB0aGUgc3dhZ2dlci11aV0oI2N1c3RvbWl6aW5nLXRoZS1zd2FnZ2VyLXVpKQogICAgLSBbU2VydmUgVUkgQXNzZXRzIERpcmVjdGx5IGZyb20geW91ciBXZWIgU2VydmVyXSgjc2VydmUtdWktYXNzZXRzLWRpcmVjdGx5LWZyb20teW91ci13ZWItc2VydmVyKQoKPCEtLSBFTkQgZG9jdG9jIGdlbmVyYXRlZCBUT0MgcGxlYXNlIGtlZXAgY29tbWVudCBoZXJlIHRvIGFsbG93IGF1dG8gdXBkYXRlIC0tPgoKCgojIyBHZXR0aW5nIFN0YXJ0ZWQgIyMKCjEuIEFkZCB0aGlzIGxpbmUgdG8geW91ciBhcHBsaWNhdGlvbnMgX0dlbWZpbGVfOgoKICAgIGBgYHJ1YnkKICAgIGdlbSAncnN3YWcnCiAgICBgYGAKCiAgICBvciBpZiB5b3UgbGlrZSB0byBhdm9pZCBsb2FkaW5nIHJzcGVjIGluIG90aGVyIGJ1bmRsZXIgZ3JvdXBzIGxvYWQgdGhlIHJzd2FnLXNwZWNzIGNvbXBvbmVudCBzZXBhcmF0ZWx5LgogICAgTm90ZTogQWRkaW5nIGl0IHRvIHRoZSA6ZGV2ZWxvcG1lbnQgZ3JvdXAgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSwgYnV0IHdpdGhvdXQgaXQsIGdlbmVyYXRvcnMgYW5kIHJha2UgdGFza3MgbXVzdCBiZSBwcmVjZWRlZCBieSBSQUlMU19FTlY9dGVzdC4KCiAgICBgYGBydWJ5CiAgICAjIEdlbWZpbGUKICAgIGdlbSAncnN3YWctYXBpJwogICAgZ2VtICdyc3dhZy11aScKCiAgICBncm91cCA6ZGV2ZWxvcG1lbnQsIDp0ZXN0IGRvCiAgICAgIGdlbSAncnNwZWMtcmFpbHMnCiAgICAgIGdlbSAncnN3YWctc3BlY3MnCiAgICBlbmQKICAgIGBgYAoKMi4gUnVuIHRoZSBpbnN0YWxsIGdlbmVyYXRvcgoKICAgIGBgYHJ1YnkKICAgIHJhaWxzIGcgcnN3YWc6aW5zdGFsbAogICAgYGBgCgogICAgT3IgcnVuIHRoZSBpbnN0YWxsIGdlbmVyYXRvcnMgZm9yIGVhY2ggcGFja2FnZSBzZXBhcmF0ZWx5IGlmIHlvdSBpbnN0YWxsZWQgUnN3YWcgYXMgc2VwYXJhdGUgZ2VtcywgYXMgaW5kaWNhdGVkIGFib3ZlOgoKICAgIGBgYHJ1YnkKICAgIHJhaWxzIGcgcnN3YWc6YXBpOmluc3RhbGwKICAgIHJhaWxzIGcgcnN3YWc6dWk6aW5zdGFsbAogICAgUkFJTFNfRU5WPXRlc3QgcmFpbHMgZyByc3dhZzpzcGVjczppbnN0YWxsCiAgICBgYGAKCjMuIENyZWF0ZSBhbiBpbnRlZ3JhdGlvbiBzcGVjIHRvIGRlc2NyaWJlIGFuZCB0ZXN0IHlvdXIgQVBJLgpUaGVyZSBpcyBhbHNvIGEgZ2VuZXJhdG9yIHdoaWNoIGNhbiBoZWxwIGdldCB5b3Ugc3RhcnRlZCBgcmFpbHMgZ2VuZXJhdGUgcnNwZWM6c3dhZ2dlciBBUEk6Ok15Q29udHJvbGxlcmAKCiAgICBgYGBydWJ5CiAgICAjIHNwZWMvcmVxdWVzdHMvYmxvZ3Nfc3BlYy5yYgogICAgcmVxdWlyZSAnb3BlbmFwaV9oZWxwZXInCgogICAgZGVzY3JpYmUgJ0Jsb2dzIEFQSScgZG8KCiAgICAgIHBhdGggJy9ibG9ncycgZG8KCiAgICAgICAgcG9zdCAnQ3JlYXRlcyBhIGJsb2cnIGRvCiAgICAgICAgICB0YWdzICdCbG9ncycKICAgICAgICAgIGNvbnN1bWVzICdhcHBsaWNhdGlvbi9qc29uJwogICAgICAgICAgcGFyYW1ldGVyIG5hbWU6ICdibG9nJywgaW46IDpib2R5LCBzY2hlbWE6IHsKICAgICAgICAgICAgdHlwZTogOm9iamVjdCwKICAgICAgICAgICAgcHJvcGVydGllczogewogICAgICAgICAgICAgIHRpdGxlOiB7IHR5cGU6IDpzdHJpbmcgfSwKICAgICAgICAgICAgICBjb250ZW50OiB7IHR5cGU6IDpzdHJpbmcgfQogICAgICAgICAgICB9LAogICAgICAgICAgICByZXF1aXJlZDogWyAndGl0bGUnLCAnY29udGVudCcgXQogICAgICAgICAgfQoKICAgICAgICAgIHJlc3BvbnNlICcyMDEnLCAnYmxvZyBjcmVhdGVkJyBkbwogICAgICAgICAgICBsZXQoOnJlcXVlc3RfcGFyYW1zKSB7IHsgJ2Jsb2cnID0+IHsgdGl0bGU6ICdmb28nLCBjb250ZW50OiAnYmFyJyB9IH0gfSB9CiAgICAgICAgICAgIHJ1bl90ZXN0IQogICAgICAgICAgZW5kCgogICAgICAgICAgcmVzcG9uc2UgJzQyMicsICdpbnZhbGlkIHJlcXVlc3QnIGRvCiAgICAgICAgICAgIGxldCg6cmVxdWVzdF9wYXJhbXMpIHsgeyAnYmxvZycgPT4geyB0aXRsZTogJ2ZvbycgfSB9IH0KICAgICAgICAgICAgcnVuX3Rlc3QhCiAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgICAgZW5kCgogICAgICBwYXRoICcvYmxvZ3Mve2lkfScgZG8KCiAgICAgICAgZ2V0ICdSZXRyaWV2ZXMgYSBibG9nJyBkbwogICAgICAgICAgdGFncyAnQmxvZ3MnLCAnQW5vdGhlciBUYWcnCiAgICAgICAgICBwcm9kdWNlcyAnYXBwbGljYXRpb24vanNvbicsICdhcHBsaWNhdGlvbi94bWwnCiAgICAgICAgICBwYXJhbWV0ZXIgbmFtZTogJ2lkJywgaW46IDpwYXRoLCB0eXBlOiA6c3RyaW5nCiAgICAgICAgICByZXF1ZXN0X2JvZHlfZXhhbXBsZSB2YWx1ZTogeyBzb21lX2ZpZWxkOiAnRm9vJyB9LCBuYW1lOiAnYmFzaWMnLCBzdW1tYXJ5OiAnUmVxdWVzdCBleGFtcGxlIGRlc2NyaXB0aW9uJwoKICAgICAgICAgIHJlc3BvbnNlICcyMDAnLCAnYmxvZyBmb3VuZCcgZG8KICAgICAgICAgICAgc2NoZW1hIHR5cGU6IDpvYmplY3QsCiAgICAgICAgICAgICAgcHJvcGVydGllczogewogICAgICAgICAgICAgICAgaWQ6IHsgdHlwZTogOmludGVnZXIgfSwKICAgICAgICAgICAgICAgIHRpdGxlOiB7IHR5cGU6IDpzdHJpbmcgfSwKICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogOnN0cmluZyB9CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICByZXF1aXJlZDogWyAnaWQnLCAndGl0bGUnLCAnY29udGVudCcgXQoKICAgICAgICAgICAgbGV0KDpyZXF1ZXN0X3BhcmFtcykgeyAnaWQnID0+IHsgQmxvZy5jcmVhdGUodGl0bGU6ICdmb28nLCBjb250ZW50OiAnYmFyJykuaWQgfSB9CiAgICAgICAgICAgIHJ1bl90ZXN0IQogICAgICAgICAgZW5kCgogICAgICAgICAgcmVzcG9uc2UgJzQwNCcsICdibG9nIG5vdCBmb3VuZCcgZG8KICAgICAgICAgICAgbGV0KDpyZXF1ZXN0X3BhcmFtcykgeyB7ICdpZCcgPT4gJ2ludmFsaWQnIH0gfQogICAgICAgICAgICBydW5fdGVzdCEKICAgICAgICAgIGVuZAoKICAgICAgICAgIHJlc3BvbnNlICc0MDYnLCAndW5zdXBwb3J0ZWQgYWNjZXB0IGhlYWRlcicgZG8KICAgICAgICAgICAgbGV0KDpyZXF1ZXN0X2hlYWRlcnMpIHsgeyAnQWNjZXB0JyA9PiAnYXBwbGljYXRpb24vZm9vJyB9IH0KICAgICAgICAgICAgcnVuX3Rlc3QhCiAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKICAgIGBgYApCeSBkZWZhdWx0LCB0aGUgYWJvdmUgY29tbWFuZCB3aWxsIGNyZWF0ZSBzcGVjIHVuZGVyIF9zcGVjL3JlcXVlc3RzXyBmb2xkZXIuIFlvdSBjYW4gcGFzcyBhbiBvcHRpb24gdG8gY2hhbmdlIHRoaXMgZGVmYXVsdCBwYXRoIGFzIGluIGByYWlscyBnZW5lcmF0ZSByc3BlYzpzd2FnZ2VyIEFQSTo6QmxvZ3NDb250cm9sbGVyIC0tc3BlY19wYXRoIGludGVncmF0aW9uYC4KVGhpcyB3aWxsIGNyZWF0ZSB0aGUgc3BlYyBmaWxlIF9zcGVjL2ludGVncmF0aW9uL2Jsb2dzX3NwZWMucmJfCgo0LiBHZW5lcmF0ZSB0aGUgT3BlbkFQSSBKU09OIGZpbGUocykKCiAgICBgYGBydWJ5CiAgICByYWtlIHJzd2FnOnNwZWNzOnN3YWdnZXJpemUKICAgIGBgYAoKICAgIFRoaXMgY29tbW9uIGNvbW1hbmQgaXMgYWxzbyBhbGlhc2VkIGFzIGByYWtlIHJzd2FnYC4KCiAgICBPciBpZiB5b3UgaW5zdGFsbGVkIHlvdXIgZ2VtcyBzZXBhcmF0ZWx5OgogICAgYGBgCiAgICBSQUlMU19FTlY9dGVzdCByYWlscyByc3dhZwogICAgYGBgCgo1LiBTcGluIHVwIHlvdXIgYXBwIGFuZCBjaGVjayBvdXQgdGhlIGF3ZXNvbWUsIGF1dG8tZ2VuZXJhdGVkIGRvY3MgYXQgXy9hcGktZG9jc18hCgojIyBUaGUgcnNwZWMgRFNMICMjCgojIyMgUGF0aHMsIE9wZXJhdGlvbnMgYW5kIFJlc3BvbnNlcyAjIyMKCklmIHlvdSd2ZSB1c2VkIFtTd2FnZ2VyXShodHRwOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uKSBiZWZvcmUsIHRoZW4gdGhlIHN5bnRheCBzaG91bGQgYmUgdmVyeSBmYW1pbGlhci4gVG8gZGVzY3JpYmUgeW91ciBBUEkgb3BlcmF0aW9ucywgc3RhcnQgYnkgc3BlY2lmeWluZyBhIHBhdGggYW5kIHRoZW4gbGlzdCB0aGUgc3VwcG9ydGVkIG9wZXJhdGlvbnMgKGkuZS4gSFRUUCB2ZXJicykgZm9yIHRoYXQgcGF0aC4gUGF0aCBwYXJhbWV0ZXJzIG11c3QgYmUgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXMgKHt9KS4gV2l0aGluIGFuIG9wZXJhdGlvbiBibG9jayAoc2VlICJwb3N0IiBvciAiZ2V0IiBpbiB0aGUgZXhhbXBsZSBhYm92ZSksIG1vc3Qgb2YgdGhlIGZpZWxkcyBzdXBwb3J0ZWQgYnkgdGhlIFtTd2FnZ2VyICJPcGVyYXRpb24iIG9iamVjdF0oaHR0cDovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jb3BlcmF0aW9uT2JqZWN0KSBhcmUgYXZhaWxhYmxlIGFzIG1ldGhvZHMgb24gdGhlIGV4YW1wbGUgZ3JvdXAuIFRvIGxpc3QgKGFuZCB0ZXN0KSB0aGUgdmFyaW91cyByZXNwb25zZXMgZm9yIGFuIG9wZXJhdGlvbiwgY3JlYXRlIG9uZSBvciBtb3JlIHJlc3BvbnNlIGJsb2Nrcy4gQWdhaW4sIHlvdSBjYW4gcmVmZXJlbmNlIHRoZSBbU3dhZ2dlciAiUmVzcG9uc2UiIG9iamVjdF0oaHR0cDovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jcmVzcG9uc2VPYmplY3QpIGZvciBhdmFpbGFibGUgZmllbGRzLgoKVGFrZSBzcGVjaWFsIG5vdGUgb2YgdGhlIF9fcnVuX3Rlc3QhX18gbWV0aG9kIHRoYXQncyBjYWxsZWQgd2l0aGluIGVhY2ggcmVzcG9uc2UgYmxvY2suIFRoaXMgdGVsbHMgcnN3YWcgdG8gY3JlYXRlIGFuZCBleGVjdXRlIGEgY29ycmVzcG9uZGluZyBleGFtcGxlLiBJdCBidWlsZHMgYW5kIHN1Ym1pdHMgYSByZXF1ZXN0IGJhc2VkIG9uIHBhcmFtZXRlciBkZXNjcmlwdGlvbnMgYW5kIGNvcnJlc3BvbmRpbmcgdmFsdWVzIHRoYXQgaGF2ZSBiZWVuIHByb3ZpZGVkIHVzaW5nIHRoZSBgcmVxdWVzdF9wYXJhbXNgIHJzcGVjIHZhcmlhYmxlLiBGb3IgZXhhbXBsZSwgdGhlICJwb3N0IiBkZXNjcmlwdGlvbiBpbiB0aGUgZXhhbXBsZSBhYm92ZSBzcGVjaWZpZXMgYSAiYm9keSIgcGFyYW1ldGVyIGNhbGxlZCAiYmxvZyIuIEl0IGFsc28gbGlzdHMgMiBkaWZmZXJlbnQgcmVzcG9uc2VzLiBGb3IgdGhlIHN1Y2Nlc3MgY2FzZSAoaS5lLiB0aGUgMjAxIHJlc3BvbnNlKSwgbm90aWNlIGhvdyBgcmVxdWVzdF9wYXJhbXNgIGlzIHVzZWQgdG8gc2V0IHRoZSBibG9nIHBhcmFtZXRlciB0byBhIHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgcHJvdmlkZWQgc2NoZW1hLiBGb3IgdGhlIGZhaWx1cmUgY2FzZSAoaS5lLiB0aGUgNDIyIHJlc3BvbnNlKSwgbm90aWNlIGhvdyBpdCdzIHNldCB0byBhIHZhbHVlIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHByb3ZpZGVkIHNjaGVtYS4gV2hlbiB0aGUgdGVzdCBpcyBleGVjdXRlZCwgcnN3YWcgYWxzbyB2YWxpZGF0ZXMgdGhlIGFjdHVhbCByZXNwb25zZSBjb2RlIGFuZCwgd2hlcmUgYXBwbGljYWJsZSwgdGhlIHJlc3BvbnNlIGJvZHkgYWdhaW5zdCB0aGUgcHJvdmlkZWQgW0pTT04gU2NoZW1hXShodHRwczovL2pzb24tc2NoZW1hLm9yZy9zcGVjaWZpY2F0aW9uKS4KCklmIHlvdSB3YW50IHRvIGFkZCBtZXRhZGF0YSB0byB0aGUgZXhhbXBsZSwgeW91IGNhbiBwYXNzIGtleXdvcmQgYXJndW1lbnRzIHRvIHRoZSBfX3J1bl90ZXN0IV9fIG1ldGhvZDoKCmBgYHJ1YnkKIyB0byBydW4gcGFydGljdWxhciB0ZXN0IGNhc2UKcmVzcG9uc2UgJzIwMScsICdibG9nIGNyZWF0ZWQnIGRvCiAgcnVuX3Rlc3QhIGZvY3VzOiB0cnVlCmVuZAoKIyB0byB3cml0ZSB2Y3IgY2Fzc2V0dGUKcmVzcG9uc2UgJzIwMScsICdibG9nIGNyZWF0ZWQnIGRvCiAgcnVuX3Rlc3QhIHZjcjogdHJ1ZQplbmQKYGBgCgpJZiB5b3Ugd2FudCB0byBjdXN0b21pemUgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBnZW5lcmF0ZWQgc3BlY2lmaWNhdGlvbiwgYSBkZXNjcmlwdGlvbiBjYW4gYmUgcGFzc2VkIHRvICoqcnVuX3Rlc3QhKioKCmBgYHJ1YnkKcmVzcG9uc2UgJzIwMScsICdibG9nIGNyZWF0ZWQnIGRvCiAgcnVuX3Rlc3QhICJjdXN0b20gc3BlYyBkZXNjcmlwdGlvbiIKZW5kCmBgYAoKSWYgeW91IHdhbnQgdG8gZG8gYWRkaXRpb25hbCB2YWxpZGF0aW9uIG9uIHRoZSByZXNwb25zZSwgcGFzcyBhIGJsb2NrIHRvIHRoZSBfX3J1bl90ZXN0IV9fIG1ldGhvZDoKCmBgYHJ1YnkKcmVzcG9uc2UgJzIwMScsICdibG9nIGNyZWF0ZWQnIGRvCiAgcnVuX3Rlc3QhIGRvIHxyZXNwb25zZXwKICAgIGRhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlLmJvZHkpCiAgICBleHBlY3QoZGF0YVsndGl0bGUnXSkudG8gZXEoJ2ZvbycpCiAgZW5kCmVuZApgYGAKCklmIHlvdSdkIGxpa2UgeW91ciBzcGVjcyB0byBiZSBhIGxpdHRsZSBtb3JlIGV4cGxpY2l0IGFib3V0IHdoYXQncyBnb2luZyBvbiBoZXJlLCB5b3UgY2FuIHJlcGxhY2UgdGhlIGNhbGwgdG8gX19ydW5fdGVzdCFfXyB3aXRoIGVxdWl2YWxlbnQgImJlZm9yZSIgYW5kICJpdCIgYmxvY2tzOgoKYGBgcnVieQpyZXNwb25zZSAnMjAxJywgJ2Jsb2cgY3JlYXRlZCcgZG8KICBsZXQoOnJlcXVlc3RfcGFyYW1zKSB7IHsgJ2Jsb2cnID0+IHsgdGl0bGU6ICdmb28nLCBjb250ZW50OiAnYmFyJyB9IH0gfQoKICBiZWZvcmUgZG8gfGV4YW1wbGV8CiAgICBzdWJtaXRfcmVxdWVzdChleGFtcGxlLm1ldGFkYXRhKQogIGVuZAoKICBpdCAncmV0dXJucyBhIHZhbGlkIDIwMSByZXNwb25zZScgZG8gfGV4YW1wbGV8CiAgICBhc3NlcnRfcmVzcG9uc2VfbWF0Y2hlc19tZXRhZGF0YShleGFtcGxlLm1ldGFkYXRhKQogIGVuZAplbmQKYGBgCgpBbHNvIG5vdGUgdGhhdCB0aGUgZXhhbXBsZXMgZ2VuZXJhdGVkIHdpdGggX19ydW5fdGVzdCFfXyBhcmUgdGFnZ2VkIHdpdGggdGhlIGA6cnN3YWdgIHNvIHRoZXkgY2FuIGVhc2lseSBiZSBmaWx0ZXJlZC4gRS5nLiBgcnNwZWMgLS10YWcgcnN3YWdgCgojIyMgZGF0ZS10aW1lIGluIHF1ZXJ5IHBhcmFtZXRlcnMKCklucHV0IHNlbnQgaW4gcXVlcmllcyBvZiBSc3BlYyB0ZXN0cyBpcyBIVE1MIHNhZmUsIGluY2x1ZGluZyBkYXRlLXRpbWUgc3RyaW5ncy4KCmBgYHJ1YnkKcGFyYW1ldGVyIG5hbWU6ICdkYXRlX3RpbWUnLCBpbjogOnF1ZXJ5LCB0eXBlOiA6c3RyaW5nCgpyZXNwb25zZSAnMjAwJywgJ2Jsb2cgZm91bmQnIGRvCiAgbGV0KDpkYXRlX3RpbWUpIHsgRGF0ZVRpbWUubmV3KDIwMDEsIDIsIDMsIDQsIDUsIDYsICctNycpLnRvX3MgfQogIGxldCg6cmVxdWVzdF9wYXJhbXMpIHsgeyAnZGF0ZV90aW1lJyA9PiBkYXRlX3RpbWUgfSB9CgogIHJ1bl90ZXN0ISBkbwogICAgZXhwZWN0KHJlcXVlc3RbOnBhdGhdKS50byBlcSgnL2Jsb2dzP2RhdGVfdGltZT0yMDAxLTAyLTAzVDA0JTNBMDUlM0EwNi0wNyUzQTAwJykKICBlbmQKZW5kCmBgYAoKIyMjIEVudW0gZGVzY3JpcHRpb24gIyMjCklmIHlvdSB3YW50IHRvIG91dHB1dCBhIGRlc2NyaXB0aW9uIG9mIGVhY2ggZW51bSB2YWx1ZSwgdGhlIGRlc2NyaXB0aW9uIGNhbiBiZSBwYXNzZWQgdG8gZWFjaCB2YWx1ZToKYGBgcnVieQpwYXJhbWV0ZXIgbmFtZTogJ3N0YXR1cycsIGluOiA6cXVlcnksCiAgICAgICAgICBlbnVtOiB7ICdkcmFmdCc6ICdSZXRyaWV2ZXMgZHJhZnQgYmxvZ3MnLCAncHVibGlzaGVkJzogJ1JldHJpZXZlcyBwdWJsaXNoZWQgYmxvZ3MnLCAnYXJjaGl2ZWQnOiAnUmV0cmlldmVzIGFyY2hpdmVkIGJsb2dzJyB9LAogICAgICAgICAgZGVzY3JpcHRpb246ICdGaWx0ZXIgYnkgc3RhdHVzJwoKcmVzcG9uc2UgJzIwMCcsICdzdWNjZXNzJyBkbwogIGxldCg6cmVxdWVzdF9wYXJhbXMpIHsgeydzdGF0dXMnID0+ICdwdWJsaXNoZWQnfSB9CgogIHJ1bl90ZXN0IQplbmQKYGBgCgojIyMgU2NoZW1hIHZhbGlkYXRpb25zCgojIyMjIEFkZGl0aW9uYWwgcHJvcGVydGllcwpJZiB5b3Ugd2FudCB0byBkaXNhbGxvdyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgaW4gcmVzcG9uc2UgYm9keSwgeW91IGNhbiBzZXQgdGhlIG9wdGlvbiBgb3BlbmFwaV9ub19hZGRpdGlvbmFsX3Byb3BlcnRpZXNgIHRvIHRydWU6CgpgYGBydWJ5CiMgc3BlYy9zd2FnZ2VyX2hlbHBlci5yYgpSU3BlYy5jb25maWd1cmUgZG8gfGNvbmZpZ3wKICBjb25maWcub3BlbmFwaV9ub19hZGRpdGlvbmFsX3Byb3BlcnRpZXMgPSB0cnVlICMgZGVmYXVsdCBmYWxzZQplbmQKYGBgCgpZb3UgY2FuIHNldCBzaW1pbGFybHkgdGhlIG9wdGlvbiBwZXIgaW5kaXZpZHVhbCBleGFtcGxlIGFzIHNob3duIGluIFN0cmljdCAoZGVwcmVjYXRlZCkgc2VjdGlvbnMuCgpgYGBydWJ5CiAgICAgIHJlc3BvbnNlICcyMDAnLCAnYmxvZyBmb3VuZCcsIDpvcGVuYXBpX25vX2FkZGl0aW9uYWxfcHJvcGVydGllcyBkbwpgYGAKYGBgcnVieQogICAgICByZXNwb25zZSAnMjAwJywgJ2Jsb2cgZm91bmQnLCBvcGVuYXBpX25vX2FkZGl0aW9uYWxfcHJvcGVydGllczogdHJ1ZSBkbwpgYGAKCiMjIyMgQWxsIHJlcXVpcmVkIHByb3BlcnRpZXMKSWYgeW91IHdhbnQgdG8gZGlzYWxsb3cgbWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0aWVzIGluIHJlc3BvbnNlIGJvZHksIHlvdSBjYW4gc2V0IHRoZSBgb3BlbmFwaV9hbGxfcHJvcGVydGllc19yZXF1aXJlZGAgb3B0aW9uIHRvIHRydWU6CioqSW1wb3J0YW50KiogaXQgd2lsbCBhbGxvdyB0aGUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzCgpgYGBydWJ5CiMgc3BlYy9zd2FnZ2VyX2hlbHBlci5yYgpSU3BlYy5jb25maWd1cmUgZG8gfGNvbmZpZ3wKICBjb25maWcub3BlbmFwaV9hbGxfcHJvcGVydGllc19yZXF1aXJlZCA9IHRydWUgIyBkZWZhdWx0IGZhbHNlCmVuZApgYGAKCllvdSBjYW4gc2V0IHNpbWlsYXJseSB0aGUgb3B0aW9uIHBlciBpbmRpdmlkdWFsIGV4YW1wbGUgYXMgc2hvd24gaW4gU3RyaWN0IChkZXByZWNhdGVkKSBzZWN0aW9ucy4KCmBgYHJ1YnkKICAgICAgcmVzcG9uc2UgJzIwMCcsICdibG9nIGZvdW5kJywgOm9wZW5hcGlfYWxsX3Byb3BlcnRpZXNfcmVxdWlyZWQgZG8KYGBgCmBgYHJ1YnkKICAgICAgcmVzcG9uc2UgJzIwMCcsICdibG9nIGZvdW5kJywgb3BlbmFwaV9hbGxfcHJvcGVydGllc19yZXF1aXJlZDogdHJ1ZSBkbwpgYGAKCiMjIyBOdWxsIFZhbHVlcyAjIyMKClRoaXMgbGlicmFyeSBpcyBjdXJyZW50bHkgdXNpbmcgSlNPTjo6RHJhZnQ0IGZvciB2YWxpZGF0aW9uIG9mIHJlc3BvbnNlIG1vZGVscy4gTnVsbGFibGUgcHJvcGVydGllcyBjYW4gYmUgc3VwcG9ydGVkIHdpdGggdGhlIG5vbi1zdGFuZGFyZCBwcm9wZXJ0eSAneC1udWxsYWJsZScgdG8gYSBkZWZpbml0aW9uIHRvIGFsbG93IG51bGwvbmlsIHZhbHVlcyB0byBwYXNzLiBPciB5b3UgY2FuIGFkZCB0aGUgbmV3IHN0YW5kYXJkIGBgYG51bGxhYmxlYGBgIHByb3BlcnR5IHRvIGEgZGVmaW5pdGlvbi4KYGBgcnVieQpkZXNjcmliZSAnQmxvZ3MgQVBJJyBkbwogIHBhdGggJy9ibG9ncycgZG8KICAgIHBvc3QgJ0NyZWF0ZXMgYSBibG9nJyBkbwogICAgICAuLi4KCiAgICAgIHJlc3BvbnNlICcyMDAnLCAnYmxvZyBmb3VuZCcgZG8KICAgICAgICBzY2hlbWEgdHlwZTogOm9iamVjdCwKICAgICAgICAgIHByb3BlcnRpZXM6IHsKICAgICAgICAgICAgaWQ6IHsgdHlwZTogOmludGVnZXIgfSwKICAgICAgICAgICAgdGl0bGU6IHsgdHlwZTogOnN0cmluZywgbnVsbGFibGU6IHRydWUgfSwgIyBwcmVmZXJyZWQgc3ludGF4CiAgICAgICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogOnN0cmluZywgJ3gtbnVsbGFibGUnOiB0cnVlIH0gIyBsZWdhY3kgc3ludGF4LCBidXQgc3RpbGwgd29ya3MKICAgICAgICAgIH0KICAgICAgICAuLi4uCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCmVuZApgYGAKCiMjIyBTdXBwb3J0IGZvciBvbmVPZiwgYW55T2Ygb3IgQWxsT2Ygc2NoZW1hcyAjIyMKCk9wZW5BUEkgMy4wIHN1cHBvcnRzIG1vcmUgZmxleGlibGUgc2NoZW1hIHZhbGlkYXRpb24gd2l0aCB0aGUgYGBgb25lT2ZgYGAsIGBgYGFueU9mYGBgIGFuZCBgYGBhbGxPZmBgYCBkaXJlY3RpdmVzLiByc3dhZyB3aWxsIGhhbmRsZSB0aGVzZSBkZWZpbml0aW9ucyBhbmQgdmFsaWRhdGUgdGhlbSBwcm9wZXJseS4KCgpOb3RpY2UgdGhlIGBgYHNjaGVtYWBgYCBpbnNpZGUgdGhlIGBgYHJlc3BvbnNlYGBgIHNlY3Rpb24uIFBsYWNpbmcgYSBgYGBzY2hlbWFgYGAgbWV0aG9kIGluc2lkZSB0aGUgcmVzcG9uc2Ugd2lsbCB2YWxpZGF0ZSAoYW5kIGZhaWwgdGhlIHRlc3RzKQppZiBkdXJpbmcgdGhlIGludGVncmF0aW9uIHRlc3QgcnVuIHRoZSBlbmRwb2ludCByZXNwb25zZSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVzcG9uc2Ugc2NoZW1hLiBUaGlzIHRlc3QgdmFsaWRhdGlvbiBjYW4gaGFuZGxlIGFueU9mIGFuZCBhbGxPZiBhcyB3ZWxsLiBTZWUgYmVsb3c6CgpgYGBydWJ5CgogIHBhdGggJy9ibG9ncy9mbGV4aWJsZScgZG8KICAgIHBvc3QgJ0NyZWF0ZXMgYSBibG9nIGZsZXhpYmxlIGJvZHknIGRvCiAgICAgIHRhZ3MgJ0Jsb2dzJwogICAgICBkZXNjcmlwdGlvbiAnQ3JlYXRlcyBhIGZsZXhpYmxlIGJsb2cgZnJvbSBwcm92aWRlZCBkYXRhJwogICAgICBvcGVyYXRpb25JZCAnY3JlYXRlRmxleGlibGVCbG9nJwogICAgICBjb25zdW1lcyAnYXBwbGljYXRpb24vanNvbicKICAgICAgcHJvZHVjZXMgJ2FwcGxpY2F0aW9uL2pzb24nCgogICAgICBwYXJhbWV0ZXIgbmFtZTogJ2Jsb2cnLCBpbjogOmJvZHksIHNjaGVtYTogewogICAgICAgICAgb25lT2Y6IFsKICAgICAgICAgICAgeyAnJHJlZicgPT4gJyMvY29tcG9uZW50cy9zY2hlbWFzL2Jsb2cnIH0sCiAgICAgICAgICAgIHsgJyRyZWYnID0+ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9mbGV4aWJsZV9ibG9nJyB9CiAgICAgICAgICBdCiAgICAgICAgfQoKICAgICAgcmVzcG9uc2UgJzIwMScsICdmbGV4aWJsZSBibG9nIGNyZWF0ZWQnIGRvCiAgICAgICAgc2NoZW1hIG9uZU9mOiBbeyAnJHJlZicgPT4gJyMvY29tcG9uZW50cy9zY2hlbWFzL2Jsb2cnIH0sIHsgJyRyZWYnID0+ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9mbGV4aWJsZV9ibG9nJyB9XQogICAgICAgIHJ1bl90ZXN0IQogICAgICBlbmQKICAgIGVuZAogIGVuZAoKYGBgClRoaXMgYXV0b21hdGljIHNjaGVtYSB2YWxpZGF0aW9uIGlzIGEgcG93ZXJmdWwgZmVhdHVyZSBvZiByc3dhZy4KCiMjIyBHbG9iYWwgTWV0YWRhdGEgIyMjCgpJbiBhZGRpdGlvbiB0byBwYXRocywgb3BlcmF0aW9ucyBhbmQgcmVzcG9uc2VzLCBPcGVuQVBJIGFsc28gc3VwcG9ydHMgZ2xvYmFsIEFQSSBtZXRhZGF0YS4gV2hlbiB5b3UgaW5zdGFsbCByc3dhZywgYSBmaWxlIGNhbGxlZCBfb3BlbmFwaV9oZWxwZXIucmJfIGlzIGFkZGVkIHRvIHlvdXIgc3BlYyBmb2xkZXIuIFRoaXMgaXMgd2hlcmUgeW91IGRlZmluZSBvbmUgb3IgbW9yZSBPcGVuQVBJIGRvY3VtZW50cyBhbmQgcHJvdmlkZSBnbG9iYWwgbWV0YWRhdGEuIEFnYWluLCB0aGUgZm9ybWF0IGlzIGJhc2VkIG9uIE9wZW5BUEkgc28gbW9zdCBvZiB0aGUgZ2xvYmFsIGZpZWxkcyBzdXBwb3J0ZWQgYnkgdGhlIHRvcCBsZXZlbCBbIlN3YWdnZXIiIG9iamVjdF0oaHR0cDovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jc3dhZ2dlck9iamVjdCkgY2FuIGJlIHByb3ZpZGVkIHdpdGggZWFjaCBkb2N1bWVudCBkZWZpbml0aW9uLiBBcyBhbiBleGFtcGxlLCB5b3UgY291bGQgZGVmaW5lIGFuIE9wZW5BUEkgZG9jdW1lbnQgZm9yIGVhY2ggdmVyc2lvbiBvZiB5b3VyIEFQSSBhbmQgaW4gZWFjaCBjYXNlIHNwZWNpZnkgYSB0aXRsZSwgdmVyc2lvbiBzdHJpbmcuCgpgYGBydWJ5CiMgc3BlYy9vcGVuYXBpX2hlbHBlci5yYgpSU3BlYy5jb25maWd1cmUgZG8gfGNvbmZpZ3wKICBjb25maWcub3BlbmFwaV9yb290ID0gUmFpbHMucm9vdC50b19zICsgJy9vcGVuYXBpJwoKICBjb25maWcub3BlbmFwaV9zcGVjcyA9IHsKICAgICd2MS9vcGVuYXBpLmpzb24nID0+IHsKICAgICAgb3BlbmFwaTogJzMuMC4xJywKICAgICAgaW5mbzogewogICAgICAgIHRpdGxlOiAnQVBJIFYxJywKICAgICAgICB2ZXJzaW9uOiAndjEnLAogICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgZmlyc3QgdmVyc2lvbiBvZiBteSBBUEknCiAgICAgIH0sCiAgICAgIHNlcnZlcnM6IFsKICAgICAgICB7CiAgICAgICAgICB1cmw6ICdodHRwczovL3tkZWZhdWx0SG9zdH0nLAogICAgICAgICAgdmFyaWFibGVzOiB7CiAgICAgICAgICAgIGRlZmF1bHRIb3N0OiB7CiAgICAgICAgICAgICAgICBkZWZhdWx0OiAnd3d3LmV4YW1wbGUuY29tJwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdCiAgICB9LAoKICAgICd2Mi9vcGVuYXBpLnlhbWwnID0+IHsKICAgICAgb3BlbmFwaTogJzMuMC4xJywKICAgICAgaW5mbzogewogICAgICAgIHRpdGxlOiAnQVBJIFYyJywKICAgICAgICB2ZXJzaW9uOiAndjInLAogICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgc2Vjb25kIHZlcnNpb24gb2YgbXkgQVBJJwogICAgICB9LAogICAgICBzZXJ2ZXJzOiBbCiAgICAgICAgewogICAgICAgICAgdXJsOiAne3Byb3RvY29sfTovL3tkZWZhdWx0SG9zdH0nLAogICAgICAgICAgdmFyaWFibGVzOiB7CiAgICAgICAgICAgIHByb3RvY29sOiB7CiAgICAgICAgICAgICAgZGVmYXVsdDogOmh0dHBzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRlZmF1bHRIb3N0OiB7CiAgICAgICAgICAgICAgICBkZWZhdWx0OiAnd3d3LmV4YW1wbGUuY29tJwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdCiAgICB9CiAgfQplbmQKYGBgCgojIyMjIFN1cHBvcnRpbmcgbXVsdGlwbGUgdmVyc2lvbnMgb2YgQVBJICMjIyMKQnkgZGVmYXVsdCwgdGhlIHBhdGhzLCBvcGVyYXRpb25zIGFuZCByZXNwb25zZXMgZGVmaW5lZCBpbiB5b3VyIHNwZWMgZmlsZXMgd2lsbCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZpcnN0IE9wZW5BUEkgZG9jdW1lbnQgaW4gX29wZW5hcGlfaGVscGVyLnJiXy4gSWYgeW91ciBBUEkgaGFzIG11bHRpcGxlIHZlcnNpb25zLCB5b3Ugc2hvdWxkIGJlIHVzaW5nIHNlcGFyYXRlIGRvY3VtZW50cyB0byBkZXNjcmliZSBlYWNoIG9mIHRoZW0uIEluIG9yZGVyIHRvIGFzc2lnbiBhIGZpbGUgd2l0aCBhIGdpdmVuIHZlcnNpb24gb2YgQVBJLCB5b3UnbGwgbmVlZCB0byBhZGQgdGhlIGBgYG9wZW5hcGlfc3BlY2BgYCB0YWcgdG8gZWFjaCBzcGVjIHNwZWNpZnlpbmcgaXRzIHRhcmdldCBkb2N1bWVudCBuYW1lOgoKYGBgcnVieQojIHNwZWMvcmVxdWVzdHMvdjIvYmxvZ3Nfc3BlYy5yYgpkZXNjcmliZSAnQmxvZ3MgQVBJJywgb3BlbmFwaV9zcGVjOiAndjIvb3BlbmFwaS55YW1sJyBkbwoKICBwYXRoICcvYmxvZ3MnIGRvCiAgLi4uCgogIHBhdGggJy9ibG9ncy97aWR9JyBkbwogIC4uLgplbmQKYGBgCgojIyMjIFN1cHBvcnRpbmcgWUFNTCBmb3JtYXQgIyMjIwoKQnkgZGVmYXVsdCwgdGhlIE9wZW5BUEkgc3BlY3MgYXJlIGdlbmVyYXRlZCBpbiBKU09OIGZvcm1hdC4gSWYgeW91IHdhbnQgdG8gZ2VuZXJhdGUgdGhlbSBpbiBZQU1MIGZvcm1hdCwgeW91IGNhbiBzcGVjaWZ5IHRoZSBPcGVuQVBJIGZvcm1hdCBpbiB0aGUgYG9wZW5hcGlfaGVscGVyLnJiYCBmaWxlOgoKYGBgcnVieQojIHNwZWMvb3BlbmFwaV9oZWxwZXIucmIKUlNwZWMuY29uZmlndXJlIGRvIHxjb25maWd8CiAgY29uZmlnLm9wZW5hcGlfcm9vdCA9IFJhaWxzLnJvb3QudG9fcyArICcvb3BlbmFwaScKCiAgIyBVc2UgaWYgeW91IHdhbnQgdG8gc2VlIHdoaWNoIHRlc3QgaXMgcnVubmluZwogICMgY29uZmlnLmZvcm1hdHRlciA9IDpkb2N1bWVudGF0aW9uCgogICMgR2VuZXJhdGUgT3BlbkFQSSBkb2NzIGluIFlBTUwgZm9ybWF0CiAgY29uZmlnLm9wZW5hcGlfZm9ybWF0ID0gOnlhbWwKCiAgY29uZmlnLm9wZW5hcGlfc3BlY3MgPSB7CiAgICAndjEvb3BlbmFwaS55YW1sJyA9PiB7CiAgICAgIG9wZW5hcGk6ICczLjAuMScsCiAgICAgIGluZm86IHsKICAgICAgICB0aXRsZTogJ0FQSSBWMScsCiAgICAgICAgdmVyc2lvbjogJ3YxJywKICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIGZpcnN0IHZlcnNpb24gb2YgbXkgQVBJJwogICAgICB9LAogICAgICBzZXJ2ZXJzOiBbCiAgICAgICAgewogICAgICAgICAgdXJsOiAnaHR0cHM6Ly97ZGVmYXVsdEhvc3R9JywKICAgICAgICAgIHZhcmlhYmxlczogewogICAgICAgICAgICBkZWZhdWx0SG9zdDogewogICAgICAgICAgICAgICAgZGVmYXVsdDogJ3d3dy5leGFtcGxlLmNvbScKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXQogICAgfSwKICB9CmVuZApgYGAKCiMjIyMgRm9ybWF0dGluZyB0aGUgZGVzY3JpcHRpb24gbGl0ZXJhbHM6ICMjIyMKT3BlbkFQSSBzdXBwb3J0cyB0aGUgTWFya2Rvd24gc3ludGF4IHRvIGZvcm1hdCBzdHJpbmdzLiBUaGlzIGNhbiBiZSBlc3BlY2lhbGx5IGhhbmR5IGlmIHlvdSB3ZXJlIHRvIHByb3ZpZGUgYSBsb25nIGRlc2NyaXB0aW9uIG9mIGEgZ2l2ZW4gQVBJIHZlcnNpb24gb3IgZW5kcG9pbnQuIFVzZSBbdGhpcyBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL2FkYW0tcC9tYXJrZG93bi1oZXJlL3dpa2kvTWFya2Rvd24tQ2hlYXRzaGVldCkgZm9yIHJlZmVyZW5jZS4KCl9fTk9URTpfXyBUaGVyZSBpcyBvbmUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBvZmZpY2lhbCBNYXJrZG93biBzeW50YXggYW5kIE9wZW5BUEkgaW50ZXJwcmV0YXRpb24sIG5hbWVseSB0YWJsZXMuIFRvIGNyZWF0ZSBhIHRhYmxlIGxpa2UgdGhpczoKCnwgQ29sdW1uMSB8IENvbHVtbjIgfAp8IC0tLS0tLS0gfCAtLS0tLS0tIHwKfCBjZWxsMSAgIHwgY2VsbDIgICB8Cgp5b3Ugc2hvdWxkIHVzZSB0aGUgZm9sbG93aW5nIHN5bnRheCwgbWFraW5nIHN1cmUgdGhlcmUgaXMgbm8gd2hpdGVzcGFjZSBhdCB0aGUgc3RhcnQgb2YgYW55IG9mIHRoZSBsaW5lczoKCmBgYAomIzEzOwp8IENvbHVtbjEgfCBDb2x1bW4yIHwgJiMxMzsgfAp8IC0tLS0tLS0gfCAtLS0tLS0tIHwmIzEzOwp8IGNlbGwxICAgfCBjZWxsMiAgICB8JiMxMzsKJiMxMzsKYGBgCgojIyMgU3BlY2lmeWluZy9UZXN0aW5nIEFQSSBTZWN1cml0eSAjIyMKCk9wZW5BUEkgYWxsb3dzIGZvciB0aGUgc3BlY2lmaWNhdGlvbiBvZiBkaWZmZXJlbnQgc2VjdXJpdHkgc2NoZW1lcyBhbmQgdGhlaXIgYXBwbGljYWJpbGl0eSB0byBvcGVyYXRpb25zIGluIGFuIEFQSS4KVG8gbGV2ZXJhZ2UgdGhpcyBpbiByc3dhZywgeW91IGRlZmluZSB0aGUgc2NoZW1lcyBnbG9iYWxseSBpbiBfb3BlbmFwaV9oZWxwZXIucmJfIGFuZCB0aGVuIHVzZSB0aGUgInNlY3VyaXR5IiBhdHRyaWJ1dGUgYXQgdGhlIG9wZXJhdGlvbiBsZXZlbCB0byBzcGVjaWZ5IHdoaWNoIHNjaGVtZXMsIGlmIGFueSwgYXJlIGFwcGxpY2FibGUgdG8gdGhhdCBvcGVyYXRpb24uCk9wZW5BUEkgc3VwcG9ydHMgOmJhc2ljLCA6YmVhcmVyLCA6YXBpS2V5IGFuZCA6b2F1dGgyIGFuZCA6b3BlbklkQ29ubmVjdCBzY2hlbWUgdHlwZXMuIFNlZSBbdGhlIHNwZWNdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYXV0aGVudGljYXRpb24vKSBmb3IgbW9yZSBpbmZvLgoKYGBgcnVieQojIHNwZWMvb3BlbmFwaV9oZWxwZXIucmIKUlNwZWMuY29uZmlndXJlIGRvIHxjb25maWd8CiAgY29uZmlnLm9wZW5hcGlfcm9vdCA9IFJhaWxzLnJvb3QudG9fcyArICcvb3BlbmFwaScKCiAgY29uZmlnLm9wZW5hcGlfc3BlY3MgPSB7CiAgICAndjEvb3BlbmFwaS5qc29uJyA9PiB7CiAgICAgIC4uLiAgIyBub3RlIHRoZSBuZXcgT3BlbiBBUEkgMy4wIGNvbXBsaWFudCBzZWN1cml0eSBzdHJ1Y3R1cmUgaGVyZSwgdW5kZXIgImNvbXBvbmVudHMiCiAgICAgIGNvbXBvbmVudHM6IHsKICAgICAgICBzZWN1cml0eVNjaGVtZXM6IHsKICAgICAgICAgIGJhc2ljX2F1dGg6IHsKICAgICAgICAgICAgdHlwZTogOmh0dHAsCiAgICAgICAgICAgIHNjaGVtZTogOmJhc2ljCiAgICAgICAgICB9LAogICAgICAgICAgYXBpX2tleTogewogICAgICAgICAgICB0eXBlOiA6YXBpS2V5LAogICAgICAgICAgICBuYW1lOiAnYXBpX2tleScsCiAgICAgICAgICAgIGluOiA6aGVhZGVyCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQplbmQKCiMgc3BlYy9yZXF1ZXN0cy9ibG9nc19zcGVjLnJiCmRlc2NyaWJlICdCbG9ncyBBUEknIGRvCgogIHBhdGggJy9ibG9ncycgZG8KCiAgICBwb3N0ICdDcmVhdGVzIGEgYmxvZycgZG8KICAgICAgdGFncyAnQmxvZ3MnCiAgICAgIHNlY3VyaXR5IFsgYmFzaWNfYXV0aDogW10gXQogICAgICAuLi4KCiAgICAgIHJlc3BvbnNlICcyMDEnLCAnYmxvZyBjcmVhdGVkJyBkbwogICAgICAgIGxldCg6cmVxdWVzdF9oZWFkZXJzKSB7IHsgJ0F1dGhvcml6YXRpb24nID0+ICJCYXNpYyAjezo6QmFzZTY0LnN0cmljdF9lbmNvZGU2NCgnanNtaXRoOmpzcGFzcycpfSIgfSB9CiAgICAgICAgcnVuX3Rlc3QhCiAgICAgIGVuZAoKICAgICAgcmVzcG9uc2UgJzQwMScsICdhdXRoZW50aWNhdGlvbiBmYWlsZWQnIGRvCiAgICAgICAgbGV0KDpyZXF1ZXN0X2hlYWRlcnMpIHsgeyAnQXV0aG9yaXphdGlvbicgPT4gIkJhc2ljICN7OjpCYXNlNjQuc3RyaWN0X2VuY29kZTY0KCdib2d1czpib2d1cycpfSIgfSB9CiAgICAgICAgcnVuX3Rlc3QhCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCmVuZAoKIyBleGFtcGxlIG9mIGRvY3VtZW50aW5nIGFuIGVuZHBvaW50IHRoYXQgaGFuZGxlcyBiYXNpYyBhdXRoIGFuZCBhcGkga2V5IGJhc2VkIHNlY3VyaXR5CmRlc2NyaWJlICdBdXRoIGV4YW1wbGVzIEFQSScgZG8KICBwYXRoICcvYXV0aC10ZXN0cy9iYXNpYy1hbmQtYXBpLWtleScgZG8KICAgIHBvc3QgJ0F1dGhlbnRpY2F0ZXMgd2l0aCBiYXNpYyBhdXRoIGFuZCBhcGkga2V5JyBkbwogICAgICB0YWdzICdBdXRoIFRlc3RzJwogICAgICBvcGVyYXRpb25JZCAndGVzdEJhc2ljQW5kQXBpS2V5JwogICAgICBzZWN1cml0eSBbeyBiYXNpY19hdXRoOiBbXSwgYXBpX2tleTogW10gfV0KCiAgICAgIHJlc3BvbnNlICcyMDQnLCAnVmFsaWQgY3JlZGVudGlhbHMnIGRvCiAgICAgICAgbGV0KDpyZXF1ZXN0X2hlYWRlcnMpIHsKICAgICAgICAgIHsKICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nID0+ICJCYXNpYyAjezo6QmFzZTY0LnN0cmljdF9lbmNvZGU2NCgnanNtaXRoOmpzcGFzcycpfSIKICAgICAgICAgICAgJ2FwaV9rZXknID0+ICdmb29iYXInLAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBydW5fdGVzdCEKICAgICAgZW5kCgogICAgICByZXNwb25zZSAnNDAxJywgJ0ludmFsaWQgY3JlZGVudGlhbHMnIGRvCiAgICAgICAgbGV0KDpyZXF1ZXN0X2hlYWRlcnMpIHsKICAgICAgICAgIHsKICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nID0+ICJCYXNpYyAjezo6QmFzZTY0LnN0cmljdF9lbmNvZGU2NCgnanNtaXRoOmpzcGFzcycpfSIKICAgICAgICAgICAgJ2FwaV9rZXknID0+ICdiYXItZm9vJywKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcnVuX3Rlc3QhCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCmVuZAoKCmBgYAoKX19OT1RFOl9fIERlcGVuZGluZyBvbiB0aGUgc2NoZW1lIHR5cGVzLCB5b3UnbGwgYmUgcmVxdWlyZWQgdG8gYXNzaWduIGEgY29ycmVzcG9uZGluZyBwYXJhbWV0ZXIgdmFsdWUgd2l0aCBlYWNoIGV4YW1wbGUuCkZvciBleGFtcGxlLCA6YmFzaWMgYXV0aCBpcyByZXF1aXJlZCBhYm92ZSBhbmQgc28gdGhlIDpBdXRob3JpemF0aW9uIChoZWFkZXIpIHBhcmFtZXRlciBtdXN0IGJlIHNldCBhY2NvcmRpbmdseQoKIyMgQ29uZmlndXJhdGlvbiAmIEN1c3RvbWl6YXRpb24gIyMKClRoZSBzdGVwcyBkZXNjcmliZWQgYWJvdmUgd2lsbCBnZXQgeW91IHVwIGFuZCBydW5uaW5nIHdpdGggbWluaW1hbCBzZXR1cC4gSG93ZXZlciwgcnN3YWcgb2ZmZXJzIGEgbG90IG9mIGZsZXhpYmlsaXR5IHRvIGN1c3RvbWl6ZSBhcyB5b3Ugc2VlIGZpdC4gQmVmb3JlIGV4cGxvcmluZyB0aGUgdmFyaW91cyBvcHRpb25zLCB5b3UnbGwgbmVlZCB0byBiZSBhd2FyZSBvZiBpdHMgZGlmZmVyZW50IGNvbXBvbmVudHMuIFRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgZWFjaCBvZiB0aGVtIGFuZCB0aGUgZmlsZXMgdGhhdCBnZXQgYWRkZWQvdXBkYXRlZCBhcyBwYXJ0IG9mIGEgc3RhbmRhcmQgaW5zdGFsbC4KCnwgR2VtICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFkZGVkL1VwZGF0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBfX3Jzd2FnLXNwZWNzX18gfCBTd2FnZ2VyLWJhc2VkIERTTCBmb3IgcnNwZWMgJiBhY2NvbXBhbnlpbmcgcmFrZSB0YXNrIGZvciBnZW5lcmF0aW5nIE9wZW5BUEkgZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgX3NwZWMvb3BlbmFwaV9oZWxwZXIucmJfICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgX19yc3dhZy1hcGlfXyAgIHwgUmFpbHMgRW5naW5lIHRoYXQgZXhwb3NlcyB5b3VyIE9wZW5BUEkgZmlsZXMgYXMgSlNPTiBlbmRwb2ludHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF9jb25maWcvaW5pdGlhbGl6ZXJzL3Jzd2FnX2FwaS5yYiwgY29uZmlnL3JvdXRlcy5yYl8gfAp8IF9fcnN3YWctdWlfXyAgICB8IFJhaWxzIEVuZ2luZSB0aGF0IGluY2x1ZGVzIFtzd2FnZ2VyLXVpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aSkgYW5kIHBvd2VycyBpdCBmcm9tIHlvdXIgU3dhZ2dlciBlbmRwb2ludHMgfCBfY29uZmlnL2luaXRpYWxpemVycy9yc3dhZ191aS5yYiwgY29uZmlnL3JvdXRlcy5yYl8gIHwKCiMjIyBPdXRwdXQgTG9jYXRpb24gZm9yIEdlbmVyYXRlZCBPcGVuQVBJIEZpbGVzICMjIwoKWW91IGNhbiBhZGp1c3QgdGhpcyBpbiB0aGUgX29wZW5hcGlfaGVscGVyLnJiXyB0aGF0J3MgaW5zdGFsbGVkIHdpdGggX19yc3dhZy1zcGVjc19fOgoKYGBgcnVieQojIHNwZWMvb3BlbmFwaV9oZWxwZXIucmIKUlNwZWMuY29uZmlndXJlIGRvIHxjb25maWd8CiAgY29uZmlnLm9wZW5hcGlfcm9vdCA9IFJhaWxzLnJvb3QudG9fcyArICcveW91ci1jdXN0b20tZm9sZGVyLW5hbWUnCiAgLi4uCmVuZApgYGAKCl9fTk9URV9fOiBJZiB5b3UgZG8gY2hhbmdlIHRoaXMsIHlvdSdsbCBhbHNvIG5lZWQgdG8gdXBkYXRlIHRoZSByc3dhZ19hcGkucmIgaW5pdGlhbGl6ZXIgKGFzc3VtaW5nIHlvdSdyZSB1c2luZyByc3dhZy1hcGkpLiBNb3JlIG9uIHRoaXMgbGF0ZXIuCgojIyMgSW5wdXQgTG9jYXRpb24gZm9yIFJzcGVjIFRlc3RzICMjIwoKQnkgZGVmYXVsdCwgcnN3YWcgd2lsbCBzZWFyY2ggZm9yIGludGVncmF0aW9uIHRlc3RzIGluIF9zcGVjL3JlcXVlc3RzXywgX3NwZWMvYXBpXyBhbmQgX3NwZWMvaW50ZWdyYXRpb25fLiBJZiB5b3Ugd2FudCB0byB1c2UgdGVzdHMgZnJvbSBvdGhlciBsb2NhdGlvbnMsIHByb3ZpZGUgdGhlIFBBVFRFUk4gYXJndW1lbnQgdG8gcmFrZToKCmBgYHJ1YnkKIyBzZWFyY2ggZm9yIHRlc3RzIGluIHNwZWMvb3BlbmFwaQpyYWtlIHJzd2FnOnNwZWNzOnN3YWdnZXJpemUgUEFUVEVSTj0ic3BlYy9vcGVuYXBpLyoqLypfc3BlYy5yYiIKYGBgCgojIyMgQWRkaXRpb25hbCByc3BlYyBvcHRpb25zCgpZb3UgY2FuIGFkZCBhZGRpdGlvbmFsIHJzcGVjIHBhcmFtZXRlcnMgdXNpbmcgdGhlIEFERElUSU9OQUxfUlNQRUNfT1BUUyBlbnYgdmFyaWFibGU6CgpgYGBydWJ5CiMgT25seSBpbmNsdWRlIHRlc3RzIHRhZ2dlZCAicnN3YWciCnJha2UgcnN3YWc6c3BlY3M6c3dhZ2dlcml6ZSBBRERJVElPTkFMX1JTUEVDX09QVFM9Ii0tdGFnIHJzd2FnIgpgYGAKCiMjIyBSZWZlcmVuY2VkIFBhcmFtZXRlcnMgYW5kIFNjaGVtYSBEZWZpbml0aW9ucyAjIyMKCk9wZW5BUEkgYWxsb3dzIHlvdSB0byBkZXNjcmliZSBKU09OIHN0cnVjdHVyZXMgaW5saW5lIHdpdGggeW91ciBvcGVyYXRpb24gZGVzY3JpcHRpb25zIE9SIGFzIHJlZmVyZW5jZWQgZ2xvYmFscy4KRm9yIGV4YW1wbGUsIHlvdSBtaWdodCBoYXZlIGEgc3RhbmRhcmQgcmVzcG9uc2Ugc3RydWN0dXJlIGZvciBhbGwgZmFpbGVkIG9wZXJhdGlvbnMuClJhdGhlciB0aGFuIHJlcGVhdGluZyB0aGUgc2NoZW1hIGluIGV2ZXJ5IG9wZXJhdGlvbiBzcGVjLCB5b3UgY2FuIGRlZmluZSBpdCBnbG9iYWxseSBhbmQgcHJvdmlkZSBhIHJlZmVyZW5jZSB0byBpdCBpbiBlYWNoIHNwZWM6CgpgYGBydWJ5CiMgc3BlYy9vcGVuYXBpX2hlbHBlci5yYgpjb25maWcub3BlbmFwaV9zcGVjcyA9IHsKICAndjEvb3BlbmFwaS5qc29uJyA9PiB7CiAgICBvcGVuYXBpOiAnMy4wLjAnLAogICAgaW5mbzogewogICAgICB0aXRsZTogJ0FQSSBWMScKICAgIH0sCiAgICBjb21wb25lbnRzOiB7CiAgICAgIHNjaGVtYXM6IHsKICAgICAgICBlcnJvcnNfb2JqZWN0OiB7CiAgICAgICAgICB0eXBlOiAnb2JqZWN0JywKICAgICAgICAgIHByb3BlcnRpZXM6IHsKICAgICAgICAgICAgZXJyb3JzOiB7ICckcmVmJyA9PiAnIy9jb21wb25lbnRzL3NjaGVtYXMvZXJyb3JzX21hcCcgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZXJyb3JzX21hcDogewogICAgICAgICAgdHlwZTogJ29iamVjdCcsCiAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogewogICAgICAgICAgICB0eXBlOiAnYXJyYXknLAogICAgICAgICAgICBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBibG9nOiB7CiAgICAgICAgICB0eXBlOiAnb2JqZWN0JywKICAgICAgICAgIHByb3BlcnRpZXM6IHsKICAgICAgICAgICAgaWQ6IHsgdHlwZTogJ2ludGVnZXInIH0sCiAgICAgICAgICAgIHRpdGxlOiB7IHR5cGU6ICdzdHJpbmcnIH0sCiAgICAgICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogJ3N0cmluZycsIG51bGxhYmxlOiB0cnVlIH0sCiAgICAgICAgICAgIHRodW1ibmFpbDogeyB0eXBlOiAnc3RyaW5nJywgbnVsbGFibGU6IHRydWUgfQogICAgICAgICAgfSwKICAgICAgICAgIHJlcXVpcmVkOiAld1tpZCB0aXRsZV0KICAgICAgICB9LAogICAgICAgIG5ld19ibG9nOiB7CiAgICAgICAgICB0eXBlOiAnb2JqZWN0JywKICAgICAgICAgIHByb3BlcnRpZXM6IHsKICAgICAgICAgICAgdGl0bGU6IHsgdHlwZTogJ3N0cmluZycgfSwKICAgICAgICAgICAgY29udGVudDogeyB0eXBlOiAnc3RyaW5nJywgbnVsbGFibGU6IHRydWUgfSwKICAgICAgICAgICAgdGh1bWJuYWlsOiB7IHR5cGU6ICdzdHJpbmcnLCBmb3JtYXQ6ICdiaW5hcnknLCBudWxsYWJsZTogdHJ1ZSB9CiAgICAgICAgICB9LAogICAgICAgICAgcmVxdWlyZWQ6ICV3W3RpdGxlXQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KfQoKIyBzcGVjL3JlcXVlc3RzL2Jsb2dzX3NwZWMucmIKZGVzY3JpYmUgJ0Jsb2dzIEFQSScgZG8KCiAgcGF0aCAnL2Jsb2dzJyBkbwoKICAgIHBvc3QgJ0NyZWF0ZXMgYSBibG9nJyBkbwoKICAgICAgcGFyYW1ldGVyIG5hbWU6ICduZXdfYmxvZycsIGluOiA6Ym9keSwgc2NoZW1hOiB7ICckcmVmJyA9PiAnIy9jb21wb25lbnRzL3NjaGVtYXMvbmV3X2Jsb2cnIH0KCiAgICAgIHJlc3BvbnNlIDQyMiwgJ2ludmFsaWQgcmVxdWVzdCcgZG8KICAgICAgICBzY2hlbWEgJyRyZWYnID0+ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9lcnJvcnNfb2JqZWN0JwogIC4uLgplbmQKCiMgc3BlYy9yZXF1ZXN0cy9jb21tZW50c19zcGVjLnJiCmRlc2NyaWJlICdCbG9ncyBBUEknIGRvCgogIHBhdGggJy9ibG9ncy97YmxvZ19pZH0vY29tbWVudHMnIGRvCgogICAgcG9zdCAnQ3JlYXRlcyBhIGNvbW1lbnQnIGRvCgogICAgICByZXNwb25zZSA0MjIsICdpbnZhbGlkIHJlcXVlc3QnIGRvCiAgICAgICAgc2NoZW1hICckcmVmJyA9PiAnIy9jb21wb25lbnRzL3NjaGVtYXMvZXJyb3JzX29iamVjdCcKICAuLi4KZW5kCmBgYAoKIyMjIFJlcXVlc3QgZXhhbXBsZXMgIyMjCgpgYGBydWJ5CiMgc3BlYy9pbnRlZ3JhdGlvbi9ibG9nc19zcGVjLnJiCmRlc2NyaWJlICdCbG9ncyBBUEknIGRvCgogIHBhdGggJy9ibG9ncy97YmxvZ19pZH0nIGRvCgogICAgZ2V0ICdSZXRyaWV2ZXMgYSBibG9nJyBkbwoKICAgICAgcmVxdWVzdF9ib2R5X2V4YW1wbGUgdmFsdWU6IHsgc29tZV9maWVsZDogJ0ZvbycgfSwgbmFtZTogJ3JlcXVlc3RfZXhhbXBsZV8xJywgc3VtbWFyeTogJ0EgcmVxdWVzdCBleGFtcGxlJwoKICAgICAgcmVzcG9uc2UgMjAwLCAnYmxvZyBmb3VuZCcgZG8KICAgICAgICAuLi4KYGBgCgp0byB1c2UgdGhlIGFjdHVhbCByZXF1ZXN0IGZyb20gdGhlIHNwZWMgYXMgdGhlIGV4YW1wbGU6CgpgYGBydWJ5CmNvbmZpZy5hZnRlcig6ZWFjaCwgb3BlcmF0aW9uOiB0cnVlLCB1c2VfYXNfcmVxdWVzdF9leGFtcGxlOiB0cnVlKSBkbyB8c3BlY3wKICBzcGVjLm1ldGFkYXRhWzpvcGVyYXRpb25dWzpyZXF1ZXN0X2V4YW1wbGVzXSB8fD0gW10KCiAgZXhhbXBsZSA9IHsKICAgIHZhbHVlOiBKU09OLnBhcnNlKHJlcXVlc3QuYm9keS5zdHJpbmcsIHN5bWJvbGl6ZV9uYW1lczogdHJ1ZSksCiAgICBuYW1lOiAncmVxdWVzdF9leGFtcGxlXzEnLAogICAgc3VtbWFyeTogJ0EgcmVxdWVzdCBleGFtcGxlJwogIH0KCiAgc3BlYy5tZXRhZGF0YVs6b3BlcmF0aW9uXVs6cmVxdWVzdF9leGFtcGxlc10gPDwgZXhhbXBsZQplbmQKYGBgCgojIyMgUmVzcG9uc2UgaGVhZGVycyAjIyMKCkluIFJzd2FnLCB5b3UgY291bGQgdXNlIGBoZWFkZXJgIG1ldGhvZCBpbnNpZGUgdGhlIHJlc3BvbnNlIGJsb2NrIHRvIHNwZWNpZnkgaGVhZGVyIG9iamVjdHMgZm9yIHRoaXMgcmVzcG9uc2UuClJzd2FnIHdpbGwgdmFsaWRhdGUgeW91ciByZXNwb25zZSBoZWFkZXJzIHdpdGggdGhvc2UgaGVhZGVyIG9iamVjdHMgYW5kIGluamVjdCB0aGVtIGludG8gdGhlIGdlbmVyYXRlZCBPcGVuQVBJIHNwZWM6CgpgYGBydWJ5CiMgc3BlYy9yZXF1ZXN0cy9jb21tZW50c19zcGVjLnJiCmRlc2NyaWJlICdCbG9ncyBBUEknIGRvCgogIHBhdGggJy9ibG9ncy97YmxvZ19pZH0vY29tbWVudHMnIGRvCgogICAgcG9zdCAnQ3JlYXRlcyBhIGNvbW1lbnQnIGRvCgogICAgICByZXNwb25zZSA0MjIsICdpbnZhbGlkIHJlcXVlc3QnIGRvCiAgICAgICAgaGVhZGVyICdYLVJhdGUtTGltaXQtTGltaXQnLCBzY2hlbWE6IHsgdHlwZTogOmludGVnZXIgfSwgZGVzY3JpcHRpb246ICdUaGUgbnVtYmVyIG9mIGFsbG93ZWQgcmVxdWVzdHMgaW4gdGhlIGN1cnJlbnQgcGVyaW9kJwogICAgICAgIGhlYWRlciAnWC1SYXRlLUxpbWl0LVJlbWFpbmluZycsIHNjaGVtYTogeyB0eXBlOiA6aW50ZWdlciB9LCBkZXNjcmlwdGlvbjogJ1RoZSBudW1iZXIgb2YgcmVtYWluaW5nIHJlcXVlc3RzIGluIHRoZSBjdXJyZW50IHBlcmlvZCcKICAuLi4KZW5kCmBgYAoKIyMjIyBOdWxsYWJsZSBvciBPcHRpb25hbCBSZXNwb25zZSBIZWFkZXJzICMjIyMKCllvdSBjYW4gaW5jbHVkZSBgbnVsbGFibGVgIG9yIGByZXF1aXJlZGAgdG8gc3BlY2lmeSB3aGV0aGVyIGEgcmVzcG9uc2UgaGVhZGVyIG11c3QgYmUgcHJlc2VudCBvciBtYXkgYmUgbnVsbC4gV2hlbiBgbnVsbGFibGVgIGlzIG5vdCBpbmNsdWRlZCwgdGhlIGhlYWRlcnMgdmFsaWRhdGlvbiB2YWxpZGF0ZXMgdGhhdCB0aGUgaGVhZGVyIHJlc3BvbnNlIGlzIG5vbi1udWxsLiBXaGVuIGByZXF1aXJlZGAgaXMgbm90IGluY2x1ZGVkLCB0aGUgaGVhZGVycyB2YWxpZGF0aW9uIHZhbGlkYXRlcyB0aGUgdGhlIGhlYWRlciByZXNwb25zZSBpcyBwYXNzZWQuCgpgYGBydWJ5CiMgc3BlYy9pbnRlZ3JhdGlvbi9jb21tZW50c19zcGVjLnJiCmRlc2NyaWJlICdCbG9ncyBBUEknIGRvCgogIHBhdGggJy9ibG9ncy97YmxvZ19pZH0vY29tbWVudHMnIGRvCgogICAgZ2V0ICdHZXRzIGEgbGlzdCBvZiBjb21tZW50cycgZG8KCiAgICAgIHJlc3BvbnNlIDIwMCwgJ2Jsb2cgZm91bmQnIGRvCiAgICAgICAgaGVhZGVyICdYLUN1cnNvcicsIHNjaGVtYTogeyB0eXBlOiA6c3RyaW5nLCBudWxsYWJsZTogdHJ1ZSB9LCBkZXNjcmlwdGlvbjogJ1RoZSBjdXJzb3IgdG8gZ2V0IHRoZSBuZXh0IHBhZ2Ugb2YgY29tbWVudHMuJwogICAgICAgIGhlYWRlciAnWC1QZXItUGFnZScsIHNjaGVtYTogeyB0eXBlOiA6aW50ZWdlciB9LCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnVGhlIG51bWJlciBvZiBjb21tZW50cyBwZXIgcGFnZS4nCiAgLi4uCmVuZApgYGAKCiMjIyBSZXNwb25zZSBleGFtcGxlcyAjIyMKCllvdSBjYW4gcHJvdmlkZSBjdXN0b20gcmVzcG9uc2UgZXhhbXBsZXMgdG8gdGhlIGdlbmVyYXRlZCBPcGVuQVBJIHNwZWMgYnkgY2FsbGluZyB0aGUgbWV0aG9kIGBleGFtcGxlc2AgaW5zaWRlIHRoZSByZXNwb25zZSBibG9jazoKSG93ZXZlciwgYXV0byBnZW5lcmF0ZWQgZXhhbXBsZSByZXNwb25zZXMgYXJlIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gcnN3YWcuIFNlZSBiZWxvdy4KCmBgYHJ1YnkKIyBzcGVjL3JlcXVlc3RzL2Jsb2dzX3NwZWMucmIKZGVzY3JpYmUgJ0Jsb2dzIEFQSScgZG8KCiAgcGF0aCAnL2Jsb2dzL3tibG9nX2lkfScgZG8KCiAgICBnZXQgJ1JldHJpZXZlcyBhIGJsb2cnIGRvCgogICAgICByZXNwb25zZSAyMDAsICdibG9nIGZvdW5kJyBkbwogICAgICAgIGV4YW1wbGUgJ2FwcGxpY2F0aW9uL2pzb24nLCA6ZXhhbXBsZV9rZXksIHsKICAgICAgICAgICAgaWQ6IDEsCiAgICAgICAgICAgIHRpdGxlOiAnSGVsbG8gd29ybGQhJywKICAgICAgICAgICAgY29udGVudDogJy4uLicKICAgICAgICAgIH0KICAgICAgICBleGFtcGxlICdhcHBsaWNhdGlvbi9qc29uJywgOmV4YW1wbGVfa2V5XzIsIHsKICAgICAgICAgICAgaWQ6IDEsCiAgICAgICAgICAgIHRpdGxlOiAnSGVsbG8gd29ybGQhJywKICAgICAgICAgICAgY29udGVudDogJy4uLicKICAgICAgICAgIH0sICJTdW1tYXJ5IG9mIHRoZSBleGFtcGxlIiwgIkxvbmdlciBkZXNjcmlwdGlvbiBvZiB0aGUgZXhhbXBsZSIKICAuLi4KZW5kCmBgYAoKCiMjIyBFbmFibGUgYXV0byBnZW5lcmF0aW9uIGV4YW1wbGVzIGZyb20gcmVzcG9uc2VzICMjIwoKClRvIGVuYWJsZSBleGFtcGxlcyBnZW5lcmF0aW9uIGZyb20gcmVzcG9uc2VzIGFkZCBjYWxsYmFjayBhYm92ZSBydW5fdGVzdCEgbGlrZToKCmBgYHJ1YnkKYWZ0ZXIgZG8gfGV4YW1wbGV8CiAgY29udGVudCA9IGV4YW1wbGUubWV0YWRhdGFbOnJlc3BvbnNlXVs6Y29udGVudF0gfHwge30KICBleGFtcGxlX3NwZWMgPSB7CiAgICAiYXBwbGljYXRpb24vanNvbiI9PnsKICAgICAgZXhhbXBsZXM6IHsKICAgICAgICB0ZXN0X2V4YW1wbGU6IHsKICAgICAgICAgIHZhbHVlOiBKU09OLnBhcnNlKHJlc3BvbnNlLmJvZHksIHN5bWJvbGl6ZV9uYW1lczogdHJ1ZSkKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9CiAgZXhhbXBsZS5tZXRhZGF0YVs6cmVzcG9uc2VdWzpjb250ZW50XSA9IGNvbnRlbnQuZGVlcF9tZXJnZShleGFtcGxlX3NwZWMpCmVuZApgYGAKCk5vdGUgeW91IHdpbGwgbmVlZCB0byBkaXNhYmxlIHRoZSBgLS1kcnktcnVuYCBvcHRpb24gZm9yIFJzcGVjIDMuMC4wIG9yIGhpZ2hlciB0bwpydW4gdGhlIGFmdGVyIGNhbGxiYWNrLiBTZWUgYmVsb3cgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgojIyMjIERyeSBSdW4gT3B0aW9uICMjIyMKClRoZSBgLS1kcnktcnVuYCBvcHRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0IGZvciBSc3BlYyAzLCBidXQgaWYgeW91IG5lZWQgdG8KZGlzYWJsZSBpdCB5b3UgY2FuIHVzZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYFJTV0FHX0RSWV9SVU49MGAgZHVyaW5nIHRoZQpnZW5lcmF0aW9uIGNvbW1hbmQgb3IgYWRkIHRoZSBmb2xsb3dpbmcgdG8geW91ciBgY29uZmlnL2Vudmlyb25tZW50cy90ZXN0LnJiYDoKCmBgYHJ1YnkKUlNwZWMuY29uZmlndXJlIGRvIHxjb25maWd8CiAgY29uZmlnLnJzd2FnX2RyeV9ydW4gPSBmYWxzZQplbmQKYGBgCgojIyMjIFJ1bm5pbmcgdGVzdHMgd2l0aG91dCBkb2N1bWVudGluZyAjIyMjCgpJZiB5b3Ugd2FudCB0byB1c2UgUnN3YWcgZm9yIHRlc3Rpbmcgd2l0aG91dCBhZGRpbmcgaXQgdG8geW91IE9wZW5BUEkgc3BlY3MsIHlvdSBjYW4gcHJvdmlkZSB0aGUgZG9jdW1lbnQgdGFnOgpgYGBydWJ5CmRlc2NyaWJlICdCbG9ncyBBUEknIGRvCiAgcGF0aCAnL2Jsb2dzL3tibG9nX2lkfScgZG8KICAgIGdldCAnUmV0cmlldmVzIGEgYmxvZycgZG8KICAgICAgIyBkb2N1bWVudGF0aW9uIGlzIG5vdyBkaXNhYmxlZCBmb3IgdGhpcyByZXNwb25zZSBvbmx5CiAgICAgIHJlc3BvbnNlIDIwMCwgJ2Jsb2cgZm91bmQnLCBkb2N1bWVudDogZmFsc2UgZG8KICAgICAgICAuLi4KYGBgCgpZb3UgY2FuIGFsc28gcmVlbmFibGUgZG9jdW1lbnRhdGlvbiBmb3Igc3BlY2lmaWMgcmVzcG9uc2VzIG9ubHk6CmBgYHJ1YnkKIyBkb2N1bWVudGF0aW9uIGlzIG5vdyBkaXNhYmxlZApkZXNjcmliZSAnQmxvZ3MgQVBJJywgZG9jdW1lbnQ6IGZhbHNlIGRvCiAgcGF0aCAnL2Jsb2dzL3tibG9nX2lkfScgZG8KICAgIGdldCAnUmV0cmlldmVzIGEgYmxvZycgZG8KICAgICAgIyBkb2N1bWVudGF0aW9uIGlzIHJlZW5hYmxlZCBmb3IgdGhpcyByZXNwb25zZSBvbmx5CiAgICAgIHJlc3BvbnNlIDIwMCwgJ2Jsb2cgZm91bmQnLCBkb2N1bWVudDogdHJ1ZSBkbwogICAgICAgIC4uLgogICAgICBlbmQKCiAgICAgIHJlc3BvbnNlIDQwMSwgJ3NwZWNpYWwgY2FzZScgZG8KICAgICAgICAuLi4KICAgICAgZW5kCmBgYAoKIyMjIyMgcnN3YWcgaGVscGVyIG1ldGhvZHMgIyMjIyMKPCEtLQpUaGVyZSBhcmUgc29tZSBoZWxwZXIgbWV0aG9kcyB0byBoZWxwIHdpdGggZG9jdW1lbnRpbmcgcmVxdWVzdCBib2RpZXMuCmBgYHJ1YnkKZGVzY3JpYmUgJ0Jsb2dzIEFQSScsIHR5cGU6IDpyZXF1ZXN0LCBvcGVuYXBpX3NwZWM6ICd2MS9vcGVuYXBpLmpzb24nIGRvCiAgbGV0KDpyZXF1ZXN0X2hlYWRlcnMpIHsgeyAnYXBpX2tleScgPT4gJ2Zha2Vfa2V5JyB9IH0KCiAgcGF0aCAnL2Jsb2dzJyBkbwogICAgcG9zdCAnQ3JlYXRlcyBhIGJsb2cnIGRvCiAgICAgIHRhZ3MgJ0Jsb2dzJwogICAgICBkZXNjcmlwdGlvbiAnQ3JlYXRlcyBhIG5ldyBibG9nIGZyb20gcHJvdmlkZWQgZGF0YScKICAgICAgb3BlcmF0aW9uSWQgJ2NyZWF0ZUJsb2cnCiAgICAgIGNvbnN1bWVzICdhcHBsaWNhdGlvbi9qc29uJwogICAgICBwcm9kdWNlcyAnYXBwbGljYXRpb24vanNvbicKCiAgICAgIHJlcXVlc3RfYm9keV9qc29uIHNjaGVtYTogeyAnJHJlZicgPT4gJyMvY29tcG9uZW50cy9zY2hlbWFzL2Jsb2cnIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGVzOiA6YmxvZwoKICAgICAgcmVxdWVzdF9ib2R5X3RleHRfcGxhaW4KICAgICAgcmVxdWVzdF9ib2R5X3htbCBzY2hlbWE6IHsgJyRyZWYnID0+ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9ibG9nJyB9CgogICAgICBsZXQoOmJsb2cpIHsgeyBibG9nOiB7IHRpdGxlOiAnZm9vJywgY29udGVudDogJ2JhcicgfSB9IH0KCiAgICAgIHJlc3BvbnNlICcyMDEnLCAnYmxvZyBjcmVhdGVkJyBkbwogICAgICAgIHNjaGVtYSAnJHJlZicgPT4gJyMvY29tcG9uZW50cy9zY2hlbWFzL2Jsb2cnCiAgICAgICAgcnVuX3Rlc3QhCiAgICAgIGVuZAoKICAgICAgcmVzcG9uc2UgJzQyMicsICdpbnZhbGlkIHJlcXVlc3QnIGRvCiAgICAgICAgc2NoZW1hICckcmVmJyA9PiAnIy9jb21wb25lbnRzL3NjaGVtYXMvZXJyb3JzX29iamVjdCcKICAgICAgICBsZXQoOmJsb2cpIHsgeyBibG9nOiB7IHRpdGxlOiAnZm9vJyB9IH0gfQoKICAgICAgICBydW5fdGVzdCEgZG8gfHJlc3BvbnNlfAogICAgICAgICAgZXhwZWN0KHJlc3BvbnNlLmJvZHkpLnRvIGluY2x1ZGUoImNhbid0IGJlIGJsYW5rIikKICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKICBlbmQKZW5kCmBgYAoKSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHdlIHNlZSBtZXRob2RzIGBgYHJlcXVlc3RfYm9keV9qc29uYGBgIGBgYHJlcXVlc3RfYm9keV9wbGFpbmBgYCBgYGByZXF1ZXN0X2JvZHlfeG1sYGBgLgpUaGVzZSBtZXRob2RzIGNhbiBiZSB1c2VkIHRvIGRlc2NyaWJlIGpzb24sIHBsYWluIHRleHQgYW5kIHhtbCBib2R5LiBUaGV5IGFyZSBqdXN0IHdyYXBwZXIgbWV0aG9kcyB0byBzZXR1cCBwb3N0aW5nIEpTT04sIHBsYWluIHRleHQgb3IgeG1sIGludG8geW91ciBlbmRwb2ludC4KVGhlIHNpbXBsZXN0IG1vc3QgY29tbW9uIHVzYWdlIGlzIGZvciBqc29uIGZvcm1hdHRlZCBib2R5IHRvIHVzZSB0aGUgc2NoZW1hOiB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiB0aGUgc2NoZW1hIGZvciB0aGUgcmVxdWVzdCBib2R5CmFuZCB0aGUgZXhhbXBsZXM6IDpibG9nIHdoaWNoIHdpbGwgY3JlYXRlIGEgbmFtZWQgZXhhbXBsZSAiYmxvZyIgdW5kZXIgdGhlICJyZXF1ZXN0Qm9keSAvIGNvbnRlbnQgLyBhcHBsaWNhdGlvbi9qc29uIC8gZXhhbXBsZXMiIHNlY3Rpb24uCkFnYWluLCBkb2N1bWVudGluZyByZXF1ZXN0IHJlc3BvbnNlIGV4YW1wbGVzIGNoYW5nZWQgaW4gT3BlbkFQSSAzLjAuIFRoZSBleGFtcGxlIGFib3ZlIHdvdWxkIGdlbmVyYXRlIGEgb3BlbmFwaS5qc29uIHNuaXBwZXQgdGhhdCBsb29rcyBsaWtlIHRoaXM6CgpgYGBqc29uCiAgICAgICAgLi4uCiAgICAgICAgeyJyZXF1ZXN0Qm9keSI6IHsKICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsCiAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iOiB7CiAgICAgICAgICAgICAgImV4YW1wbGVzIjogewogICAgICAgICAgICAgICAgImJsb2ciOiB7ICAvLyB0YWtlcyB0aGUgbmFtZSBmcm9tICBleGFtcGxlczogOmJsb2cgYWJvdmUKICAgICAgICAgICAgICAgICAgInZhbHVlIjogeyAgLy8gdGhpcyBpcyBPcGVuQVBJIDMuMCBzdHJ1Y3R1cmUgLT4gaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9hZGRpbmctZXhhbXBsZXMvCiAgICAgICAgICAgICAgICAgICAgImJsb2ciOiB7IC8vIGhlcmUgaXMgdGhlIGFjdHVhbCBKU09OIHBheWxvYWQgdGhhdCBpcyBzdWJtaXR0ZWQgdG8gdGhlIHNlcnZpY2UsIGFuZCBzaG93cyB1cCBpbiBzd2FnZ2VyIFVJIGFzIGFuIGV4YW1wbGUKICAgICAgICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJmb28iLAogICAgICAgICAgICAgICAgICAgICAgImNvbnRlbnQiOiAiYmFyIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAgICIkcmVmIjogIiMvY29tcG9uZW50cy9zY2hlbWFzL2Jsb2ciCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAidGVzdC9wbGFpbiI6IHsKICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImFwcGxpY2F0aW9uL3htbCI6IHsKICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvYmxvZyIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIH0KYGBgCgoqTk9URToqIGZvciB0aGlzIGV4YW1wbGUgcmVxdWVzdCBib2R5IHRvIHdvcmsgaW4gdGhlIHRlc3RzIHByb3Blcmx5LCB5b3UgbmVlZCB0byBgYGxldGBgIGEgdmFyaWFibGUgbmFtZWQgKmJsb2cqLgpUaGUgdmFyaWFibGUgd2l0aCB0aGUgbWF0Y2hpbmcgbmFtZSAoYmxvZyBpbiB0aGlzIGNhc2UpIGlzIGV2YWwtZWQgYW5kIGNhcHR1cmVkIHRvIGJlIHBsYWNlZCBpbiB0aGUgZXhhbXBsZXMgc2VjdGlvbi4KVGhpcyBgYGBsZXRgYGAgdmFsdWUgaXMgdXNlZCBpbiB0aGUgaW50ZWdyYXRpb24gdGVzdCB0byBydW4gdGhlIHRlc3QgQU5EIGNhcHR1cmVkIGFuZCBpbmplY3RlZCBpbnRvIHRoZSByZXF1ZXN0Qm9keSBzZWN0aW9uLgoKIyMjIyMgcnN3YWcgcmVzcG9uc2UgZXhhbXBsZXMgIyMjIyMKCkluIHRoZSBzYW1lIHdheSB0aGF0IHJlcXVlc3RCb2R5IGV4YW1wbGVzIGNhbiBiZSBjYXB0dXJlZCBhbmQgaW5qZWN0ZWQgaW50byB0aGUgb3V0cHV0LCByZXNwb25zZSBleGFtcGxlcyBjYW4gYWxzbyBiZSBjYXB0dXJlZC4KVXNpbmcgdGhlIGFib3ZlIGV4YW1wbGUsIHdoZW4gdGhlIGludGVncmF0aW9uIHRlc3QgaXMgcnVuIC0gdGhlIE9wZW5BUEkgc3BlYyB3b3VsZCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgc25pcHBldCBwcm92aWRpbmcgbW9yZSB1c2VmdWwgcmVhbCB3b3JsZCBleGFtcGxlcwpjYXB0dXJpbmcgdGhlIHJlc3BvbnNlIGZyb20gdGhlIGV4ZWN1dGlvbiBvZiB0aGUgaW50ZWdyYXRpb24gdGVzdC4KCmBgYGpzb24KICAgICAgIC4uLiAgInJlc3BvbnNlcyI6IHsKICAgICAgICAgICIyMDEiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJibG9nIGNyZWF0ZWQiLAogICAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICAgICAgICAgICJleGFtcGxlIjogewogICAgICAgICAgICAgICAgICAiaWQiOiAxLAogICAgICAgICAgICAgICAgICAidGl0bGUiOiAiZm9vIiwKICAgICAgICAgICAgICAgICAgImNvbnRlbnQiOiAiYmFyIiwKICAgICAgICAgICAgICAgICAgInRodW1ibmFpbCI6IG51bGwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9ibG9nIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MjIiOiB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJpbnZhbGlkIHJlcXVlc3QiLAogICAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICAgICAgICAgICJleGFtcGxlIjogewogICAgICAgICAgICAgICAgICAiZXJyb3JzIjogewogICAgICAgICAgICAgICAgICAgICJjb250ZW50IjogWwogICAgICAgICAgICAgICAgICAgICAgImNhbid0IGJlIGJsYW5rIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAgICIkcmVmIjogIiMvY29tcG9uZW50cy9zY2hlbWFzL2Vycm9yc19vYmplY3QiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQpgYGAKIC0tPgojIyMgUm91dGUgUHJlZml4IGZvciBPcGVuQVBJIEpTT04gRW5kcG9pbnRzICMjIwoKVGhlIGZ1bmN0aW9uYWxpdHkgdG8gZXhwb3NlIE9wZW5BUEkgZmlsZXMsIHN1Y2ggYXMgdGhvc2UgZ2VuZXJhdGVkIGJ5IHJzd2FnLXNwZWNzLCBhcyBKU09OIGVuZHBvaW50cyBpcyBpbXBsZW1lbnRlZCBhcyBhIFJhaWxzIEVuZ2luZS4gQXMgd2l0aCBhbnkgRW5naW5lLCB5b3UgY2FuIGNoYW5nZSBpdHMgbW91bnQgcHJlZml4IGluIF9yb3V0ZXMucmJfOgoKYGBgcnVieQpUZXN0QXBwOjpBcHBsaWNhdGlvbi5yb3V0ZXMuZHJhdyBkbwogIC4uLgoKICBtb3VudCBSc3dhZzo6QXBpOjpFbmdpbmUgPT4gJ3lvdXItY3VzdG9tLXByZWZpeCcKZW5kCmBgYAoKQXNzdW1pbmcgYSBPcGVuQVBJIGZpbGUgZXhpc3RzIGF0ICZsdDtvcGVuYXBpX3Jvb3QmZ3Q7L3YxL29wZW5hcGkuanNvbiwgdGhpcyBjb25maWd1cmF0aW9uIHdvdWxkIGV4cG9zZSB0aGUgZmlsZSBhcyB0aGUgZm9sbG93aW5nIEpTT04gZW5kcG9pbnQ6CgpgYGAKR0VUIGh0dHA6Ly88aG9zdG5hbWU+L3lvdXItY3VzdG9tLXByZWZpeC92MS9vcGVuYXBpLmpzb24KYGBgCgojIyMgUm9vdCBMb2NhdGlvbiBmb3IgT3BlbkFQSSBGaWxlcyAjIyMKCllvdSBjYW4gYWRqdXN0IHRoaXMgaW4gdGhlIF9yc3dhZ19hcGkucmJfIGluaXRpYWxpemVyIHRoYXQncyBpbnN0YWxsZWQgd2l0aCBfX3JzcGVjLWFwaV9fOgoKYGBgcnVieQpSc3dhZzo6QXBpLmNvbmZpZ3VyZSBkbyB8Y3wKICBjLm9wZW5hcGlfcm9vdCA9IFJhaWxzLnJvb3QudG9fcyArICcveW91ci1jdXN0b20tZm9sZGVyLW5hbWUnCiAgLi4uCmVuZApgYGAKCl9fTk9URV9fOiBJZiB5b3UncmUgdXNpbmcgcnN3YWctc3BlY3MgdG8gZ2VuZXJhdGUgT3BlbkFQSSBmaWxlcywgeW91J2xsIHdhbnQgdG8gZW5zdXJlIHRoZXkgYm90aCB1c2UgdGhlIHNhbWUgJmx0O29wZW5hcGlfcm9vdCZndDsuIFRoZSByZWFzb24gZm9yIHNlcGFyYXRlIHNldHRpbmdzIGlzIHRvIG1haW50YWluIGluZGVwZW5kZW5jZSBiZXR3ZWVuIHRoZSB0d28gZ2Vtcy4gRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCBpbnN0YWxsIHJzd2FnLWFwaSBpbmRlcGVuZGVudGx5IGFuZCBjcmVhdGUgeW91ciBPcGVuQVBJIGZpbGVzIG1hbnVhbGx5LgoKIyMjIER5bmFtaWMgVmFsdWVzIGZvciBPcGVuQVBJIEpTT04gIyMKClRoZXJlIG1heSBiZSBjYXNlcyB3aGVyZSB5b3UgbmVlZCB0byBhZGQgZHluYW1pYyB2YWx1ZXMgdG8gdGhlIE9wZW5BUEkgSlNPTiB0aGF0J3MgcmV0dXJuZWQgYnkgcnN3YWctYXBpLiBGb3IgZXhhbXBsZSwgeW91IG1heSB3YW50IHRvIHByb3ZpZGUgYW4gZXhwbGljaXQgaG9zdCBuYW1lLiBSYXRoZXIgdGhhbiBoYXJkY29kaW5nIGl0LCB5b3UgY2FuIGNvbmZpZ3VyZSBhIGZpbHRlciB0aGF0J3MgZXhlY3V0ZWQgcHJpb3IgdG8gc2VyaWFsaXppbmcgZXZlcnkgT3BlbkFQSSBkb2N1bWVudDoKCmBgYHJ1YnkKUnN3YWc6OkFwaS5jb25maWd1cmUgZG8gfGN8CiAgLi4uCgogIGMub3BlbmFwaV9maWx0ZXIgPSBsYW1iZGEgeyB8b3BlbmFwaSwgZW52fCBvcGVuYXBpWydob3N0J10gPSBlbnZbJ0hUVFBfSE9TVCddIH0KZW5kCmBgYAoKTm90ZSBob3cgdGhlIGZpbHRlciBpcyBwYXNzZWQgdGhlIHJhY2sgZW52IGZvciB0aGUgY3VycmVudCByZXF1ZXN0LiBUaGlzIHByb3ZpZGVzIGEgbG90IG9mIGZsZXhpYmlsaXR5LiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhc3NpZ24gdGhlICJob3N0IiBwcm9wZXJ0eSAoYXMgc2hvd24pIG9yIHlvdSBjb3VsZCBpbnNwZWN0IHNlc3Npb24gaW5mb3JtYXRpb24gb3IgYW4gQXV0aG9yaXphdGlvbiBoZWFkZXIgYW5kIHJlbW92ZSBvcGVyYXRpb25zIGJhc2VkIG9uIHVzZXIgcGVybWlzc2lvbnMuCgojIyMgQ3VzdG9tIEhlYWRlcnMgZm9yIE9wZW5BUEkgRmlsZXMgIyMjCgpZb3UgY2FuIHNwZWNpZnkgY3VzdG9tIGhlYWRlcnMgZm9yIHNlcnZpbmcgeW91ciBnZW5lcmF0ZWQgT3BlbkFQSSBKU09OLiBGb3IgZXhhbXBsZSB5b3UgbWF5IHdhbnQgdG8gZm9yY2UgYSBzcGVjaWZpYyBjaGFyc2V0IGZvciB0aGUgJ0NvbnRlbnQtVHlwZScgaGVhZGVyLiBZb3UgY2FuIGNvbmZpZ3VyZSBhIGhhc2ggb2YgaGVhZGVycyB0byBiZSBzZW50IHdpdGggdGhlIHJlcXVlc3Q6CgpgYGBydWJ5ClJzd2FnOjpBcGkuY29uZmlndXJlIGRvIHxjfAogIC4uLgoKICBjLm9wZW5hcGlfaGVhZGVycyA9IHsgJ0NvbnRlbnQtVHlwZScgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLTgnIH0KZW5kCmBgYAoKVGFrZSBjYXJlIHdoZW4gb3ZlcnJpZGluZyBDb250ZW50LVR5cGUgaWYgeW91IHNlcnZlIGJvdGggWUFNTCBhbmQgSlNPTiBmaWxlcyBhcyBpdCB3aWxsIG5vIGxvbmdlciBzd2l0Y2ggdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIgY29ycmVjdGx5LgoKCiMjIyBFbmFibGUgU3dhZ2dlciBFbmRwb2ludHMgZm9yIHN3YWdnZXItdWkgIyMjCgpZb3UgY2FuIHVwZGF0ZSB0aGUgX3Jzd2FnX3VpLnJiXyBpbml0aWFsaXplciwgaW5zdGFsbGVkIHdpdGggcnN3YWctdWksIHRvIHNwZWNpZnkgd2hpY2ggU3dhZ2dlciBlbmRwb2ludHMgc2hvdWxkIGJlIGF2YWlsYWJsZSB0byBwb3dlciB0aGUgZG9jdW1lbnRhdGlvbiBVSS4gSWYgeW91J3JlIHVzaW5nIHJzd2FnLWFwaSwgdGhlc2Ugc2hvdWxkIGNvcnJlc3BvbmQgdG8gdGhlIFN3YWdnZXIgZW5kcG9pbnRzIGl0IGV4cG9zZXMuIFdoZW4gdGhlIFVJIGlzIHJlbmRlcmVkLCB5b3UnbGwgc2VlIHRoZXNlIGxpc3RlZCBpbiBhIGRyb3AtZG93biB0byB0aGUgdG9wIHJpZ2h0IG9mIHRoZSBwYWdlOgoKYGBgcnVieQpSc3dhZzo6VWkuY29uZmlndXJlIGRvIHxjfAogIGMub3BlbmFwaV9lbmRwb2ludCAnL2FwaS1kb2NzL3YxL29wZW5hcGkuanNvbicsICdBUEkgVjEgRG9jcycKICBjLm9wZW5hcGlfZW5kcG9pbnQgJy9hcGktZG9jcy92Mi9vcGVuYXBpLmpzb24nLCAnQVBJIFYyIERvY3MnCmVuZApgYGAKCiMjIyBFbmFibGUgU2ltcGxlIEJhc2ljIEF1dGggZm9yIHN3YWdnZXItdWkKCllvdSBjYW4gYWxzbyB1cGRhdGUgdGhlIF9yc3dhZ191aS5yYl8gaW5pdGlhbGl6ZXIsIGluc3RhbGxlZCB3aXRoIHJzd2FnLXVpIHRvIHNwZWNpZnkgYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgc2hvdWxkIHlvdSB3YW50IHRvIGtlZXAgeW91ciBkb2N1bWVudGF0aW9uIHByaXZhdGUuCgpgYGBydWJ5ClJzd2FnOjpVaS5jb25maWd1cmUgZG8gfGN8CiAgYy5iYXNpY19hdXRoX2VuYWJsZWQgPSB0cnVlCiAgYy5iYXNpY19hdXRoX2NyZWRlbnRpYWxzICd1c2VybmFtZScsICdwYXNzd29yZCcKZW5kCmBgYAoKIyMjIFJvdXRlIFByZWZpeCBmb3IgdGhlIHN3YWdnZXItdWkgIyMjCgpTaW1pbGFyIHRvIHJzd2FnLWFwaSwgeW91IGNhbiBjdXN0b21pemUgdGhlIHN3YWdnZXItdWkgcGF0aCBieSBjaGFuZ2luZyBpdHMgbW91bnQgcHJlZml4IGluIF9yb3V0ZXMucmJfOgoKYGBgcnVieQpUZXN0QXBwOjpBcHBsaWNhdGlvbi5yb3V0ZXMuZHJhdyBkbwogIC4uLgoKICBtb3VudCBSc3dhZzo6QXBpOjpFbmdpbmUgPT4gJ2FwaS1kb2NzJwogIG1vdW50IFJzd2FnOjpVaTo6RW5naW5lID0+ICd5b3VyLWN1c3RvbS1wcmVmaXgnCmVuZApgYGAKCiMjIyBDdXN0b21pemluZyB0aGUgc3dhZ2dlci11aSAjIyMKClRoZSBzd2FnZ2VyLXVpIHByb3ZpZGVzIHNldmVyYWwgb3B0aW9ucyBmb3IgY3VzdG9taXppbmcgaXRzIGJlaGF2aW9yLCBhbGwgb2Ygd2hpY2ggYXJlIGRvY3VtZW50ZWQgaGVyZSBodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS90cmVlLzIueCNzd2FnZ2VydWkuIElmIHlvdSBuZWVkIHRvIHR3ZWFrIHRoZXNlIG9yIGN1c3RvbWl6ZSB0aGUgb3ZlcmFsbCBsb29rIGFuZCBmZWVsIG9mIHlvdXIgc3dhZ2dlci11aSwgdGhlbiB5b3UnbGwgbmVlZCB0byBwcm92aWRlIHlvdXIgb3duIHZlcnNpb24gb2YgaW5kZXguaHRtbC4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGZvbGxvd2luZyBnZW5lcmF0b3IuCgpgYGBydWJ5CnJhaWxzIGcgcnN3YWc6dWk6Y3VzdG9tCgpgYGAKClRoaXMgd2lsbCBhZGQgYSBsb2NhbCB2ZXJzaW9uIHRoYXQgeW91IGNhbiBtb2RpZnkgYXQgX2FwcC92aWV3cy9yc3dhZy91aS9ob21lL2luZGV4Lmh0bWwuZXJiXy4gRm9yIGV4YW1wbGUsIGl0IHdpbGwgbGV0IHlvdSB0byBhZGQgeW91ciBvd24gYDx0aXRsZT5gIGFuZCBmYXZpY29uLgoKVG8gcmVwbGFjZSB0aGUgKiJTd2FnZ2VyIHNwb25zb3JlZCBieSIqIGJyYW5kIGltYWdlLCB5b3UgY2FuIGFkZCB0aGUgZm9sbG93aW5nIHNjcmlwdCB0byB0aGUgZ2VuZXJhdGVkIGZpbGU6CgpgYGBodG1sCjxzY3JpcHQ+CiAgKGZ1bmN0aW9uICgpIHsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uICgpIHsKICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CgogICAgICAgICAgdmFyIGxvZ28gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5rJyk7CgogICAgICAgICAgbG9nb1swXS5jaGlsZHJlblswXS5hbHQgPSAiTXkgQVBJIjsKICAgICAgICAgIGxvZ29bMF0uY2hpbGRyZW5bMF0uc3JjID0gIi9mYXZpY29uLnBuZyI7CiAgICAgIH0pOwogIH0pOyB9KSgpOwo8L3NjcmlwdD4KYGBgCgpUaGUgYWJvdmUgc2NyaXB0IHdvdWxkIGV4cGVjdCB0byBmaW5kIGFuIGltYWdlIG5hbWVkIGBmYXZpY29uLnBuZ2AgaW4gdGhlIHB1YmxpYyBmb2xkZXIuCgpZb3UgY2FuIGFsc28gY3VzdG9taXplIHRoZSBzd2FnZ2VyIHVpIHdpdGggX2NvbmZpZ3VyYXRpb24gb2JqZWN0cy5fIFJzd2FnJ3MgYGNvbmZpZ19vYmplY3RgIGNhbiBiZSB1c2VkIHdpdGggc3dhZ2dlcidzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmb3VuZCBoZXJlOiBodHRwczovL3N3YWdnZXIuaW8vZG9jcy9vcGVuLXNvdXJjZS10b29scy9zd2FnZ2VyLXVpL3VzYWdlL2NvbmZpZ3VyYXRpb24vClRoZSB1aSBjYW4gYmUgY29uZmlndXJlZCBpbiB0aGUgX2NvbmZpZy9pbml0aWFsaXplcnMvcnN3YWctdWkucmJfIGZpbGUgbGlrZSBzbzoKCmBgYHJ1YnkKUnN3YWc6OlVpLmNvbmZpZ3VyZSBkbyB8Y3wKICBjLmNvbmZpZ19vYmplY3RbJ2RlZmF1bHRNb2RlbHNFeHBhbmREZXB0aCddID0gMQplbmQKCmBgYAoKIyMjIFNlcnZlIFVJIEFzc2V0cyBEaXJlY3RseSBmcm9tIHlvdXIgV2ViIFNlcnZlcgoKUnN3YWcgc2hpcHMgd2l0aCBhbiBlbWJlZGRlZCB2ZXJzaW9uIG9mIHRoZSBbc3dhZ2dlci11aV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkpLCB3aGljaCBpcyBhIHN0YXRpYyBjb2xsZWN0aW9uIG9mIEphdmFTY3JpcHQgYW5kIENTUyBmaWxlcy4gVGhlc2UgYXNzZXRzIGFyZSBzZXJ2ZWQgYnkgdGhlIHJzd2FnLXVpIG1pZGRsZXdhcmUuIEhvd2V2ZXIsIGZvciBvcHRpbWFsIHBlcmZvcm1hbmNlIHlvdSBtYXkgd2FudCB0byBzZXJ2ZSB0aGVtIGRpcmVjdGx5IGZyb20geW91ciB3ZWIgc2VydmVyIChlLmcuIEFwYWNoZSBvciBOR0lOWCkuIFRvIGRvIHRoaXMsIHlvdSdsbCBuZWVkIHRvIGNvcHkgdGhlbSB0byB0aGUgd2ViIHNlcnZlciByb290LiBUaGlzIGlzIHRoZSAicHVibGljIiBmb2xkZXIgaW4gYSB0eXBpY2FsIFJhaWxzIGFwcGxpY2F0aW9uLgoKYGBgCmJ1bmRsZSBleGVjIHJha2UgcnN3YWc6dWk6Y29weV9hc3NldHNbcHVibGljL2FwaS1kb2NzXQpgYGAKCl9fTk9URTpfXzogVGhlIHByb3ZpZGVkIHN1YmZvbGRlciBNVVNUIGNvcnJlc3BvbmQgdG8gdGhlIFVJIG1vdW50IHByZWZpeCAtICJhcGktZG9jcyIgYnkgZGVmYXVsdC4KCgpOb3RlcyB0byB0ZXN0IE9wZW5BUEkgb3V0cHV0IGxvY2FsbHkgd2l0aCBTd2FnZ2VyIGVkaXRvcgpgYGAKZG9ja2VyIHB1bGwgc3dhZ2dlcmFwaS9zd2FnZ2VyLWVkaXRvcgpgYGAKYGBgCmRvY2tlciBydW4gLWQgLXAgODA6ODA4MCBzd2FnZ2VyYXBpL3N3YWdnZXItZWRpdG9yCmBgYApUaGlzIHdpbGwgcnVuIHRoZSBzd2FnZ2VyIGVkaXRvciBpbiB0aGUgZG9ja2VyIGRhZW1vbiBhbmQgY2FuIGJlIGFjY2Vzc2VkCmF0IGBgYGh0dHA6Ly9sb2NhbGhvc3RgYGAuIEZyb20gaGVyZSwgeW91IGNhbiB1c2UgdGhlIFVJIHRvIGxvYWQgdGhlIGdlbmVyYXRlZCBvcGVuYXBpLmpzb24gdG8gdmFsaWRhdGUgdGhlIG91dHB1dC4KCiMjIyBMaW50aW5nIHdpdGggUnVib0NvcCBSU3BlYwoKV2hlbiB5b3UgbGludCB5b3VyIFJTcGVjIHNwZWMgZmlsZXMgd2l0aCBgcnVib2NvcC1yc3BlY2AsIGl0IHdpbGwgZmFpbCB0byBkZXRlY3QgUlNwZWMgYWxpYXNlcyB0aGF0IFJzd2FnIGRlZmluZXMuCk1ha2Ugc3VyZSB0byB1c2UgYHJ1Ym9jb3AtcnNwZWNgIDIuMCBvciBuZXdlciBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgdG8geW91ciBgLnJ1Ym9jb3AueW1sYDoKCmBgYHlhbWwKaW5oZXJpdF9nZW06CiAgcnN3YWctc3BlY3M6IC5ydWJvY29wX3JzcGVjX2FsaWFzX2NvbmZpZy55bWwKYGBgCg== readmeEtag: '"11d1ce2d520cb69736023d1b6a072ddb2fb5ca9a"' readmeLastModified: Wed, 09 Apr 2025 20:54:02 GMT repositoryId: 29151578 description: Seamlessly adds a Swagger to Rails-based API's created: '2015-01-12T19:08:10Z' updated: '2026-02-03T00:50:07Z' language: Ruby archived: false stars: 2181 watchers: 28 forks: 458 owner: rswag logo: https://avatars.githubusercontent.com/u/55741034?v=4 license: MIT repoEtag: '"035e8dbe3f87f592411bb584f749b6317d5ab04e03bf9f162dbcf3769673f4e5"' repoLastModified: Tue, 03 Feb 2026 00:50:07 GMT foundInMaster: true v3_1_link: https://github.com/rswag/rswag/pull/714 - source: https://openapi.tools/ name: 🌿 Fern category: - Code Generators - SDK - Documentation - Server link: https://buildwithfern.com language: - TypeScript - Java - Python - Go - Ruby - C# - PHP - Swift - and Rust - Express.js - FastAPI - Spring Boot source_description: - >- Generate SDKs in popular languages and publish them to package managers (like npm). - null - >- Generate server-side boilerplate code from OpenAPI and then implement your business logic. v2: true v3: true repository: https://github.com/fern-api/fern id: 9a06b3cc23e65a92ab1f012b26743de1 repositoryMetadata: base64Readme: >- PGJyLz4KPGRpdiBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL3d3dy5idWlsZHdpdGhmZXJuLmNvbS8/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT1yZWFkbWUmdXRtX2NhbXBhaWduPWZlcm4mdXRtX2NvbnRlbnQ9bG9nbyI+CiAgICA8cGljdHVyZT4KICAgICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSIvZmVybi9pbWFnZXMvbG9nby13aGl0ZS5zdmciPgogICAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KSIgc3Jjc2V0PSIvZmVybi9pbWFnZXMvbG9nby1wcmltYXJ5LnN2ZyI+CiAgICAgIDxpbWcgYWx0PSJsb2dvIiBzcmM9Ii9mZXJuL2ltYWdlcy9sb2dvLXByaW1hcnkuc3ZnIiBoZWlnaHQ9IjgwIiBhbGlnbj0iY2VudGVyIj4KICAgIDwvcGljdHVyZT4KICA8L2E+Cjxici8+Cgo8YnIvPgoKWyFbMjAyMyBZIENvbWJpbmF0b3IgU3RhcnR1cF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9ZJTIwQ29tYmluYXRvci0yMDIzLW9yYW5nZSldKGh0dHBzOi8vd3d3Lnljb21iaW5hdG9yLmNvbS9jb21wYW5pZXMvZmVybikKIVtMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtQXBhY2hlJTIwMi4wLWJsdWUpCgpbIVtTbGFja10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9zbGFjay1waW5rLnN2ZyldKGh0dHBzOi8vam9pbi5zbGFjay5jb20vdC9mZXJuLWNvbW11bml0eS9zaGFyZWRfaW52aXRlL3p0LTJkcGZ0Zm1pZi1NdUFlZ2w4QWZQX1BLOHMydHgzNTBRKQpbIVtEb2N1bWVudGF0aW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1JlYWQlMjBvdXIlMjBEb2N1bWVudGF0aW9uLWJsYWNrP2xvZ289Ym9vayldKGh0dHBzOi8vYnVpbGR3aXRoZmVybi5jb20vbGVhcm4vaG9tZT91dG1fc291cmNlPWZlcm4tYXBpL2Zlcm4vcmVhZG1lLXJlYWQtb3VyLWRvY3VtZW50YXRpb24pCgo8L2Rpdj4KCiMg8J+MvyBXaGF0IGlzIEZlcm4/CgpGZXJuIGlzIGEgcGxhdGZvcm0gdGhhdCB0cmFuc2Zvcm1zIHlvdXIgQVBJIGRlZmluaXRpb25zIGludG8gcHJvZHVjdGlvbi1yZWFkeSBTREtzIGFuZCBiZWF1dGlmdWwgZG9jdW1lbnRhdGlvbiBpbiBtaW51dGVzLiAKCldpdGggRmVybiwgeW91IGNhbiBvZmZlciB5b3VyIHVzZXJzOgoKLSDwn6epICoqVHlwZS1zYWZlIFNES3MqKiBpbiBtdWx0aXBsZSBsYW5ndWFnZXMsIGluY2x1ZGluZyBUeXBlU2NyaXB0LCBQeXRob24sIEphdmEsIEdvLCBSdWJ5LCBQSFAsIGFuZCBDIwotIPCfk5ggKipEZXZlbG9wZXIgZG9jdW1lbnRhdGlvbioqIGZlYXR1cmluZyBhbiBpbnRlcmFjdGl2ZSBVSSBhbmQgYXV0by1nZW5lcmF0ZWQgQVBJICsgU0RLIHJlZmVyZW5jZXMKLSDinKggKipBSSBTZWFyY2gqKiBwb3dlcmVkIGJ5IGFuIGFzc2lzdGFudCB0cmFpbmVkIG9uIHlvdXIgZG9jcywgQVBJcywgYW5kIFNES3MgdGhhdCBjYW4gaW5zdGFudGx5IGFuc3dlciBhIGRldmVsb3BlcidzIHF1ZXN0aW9ucwoKRmVybiBzdXBwb3J0cyBsZWFkaW5nIEFQSSBzcGVjaWZpY2F0aW9ucyBpbmNsdWRpbmcgT3BlbkFQSSAoUkVTVCwgV2ViaG9va3MpLCBBc3luY0FQSSAoV2ViU29ja2V0cyksIFByb3RvYnVmIChnUlBDKSwgYW5kIE9wZW5SUEMuCgo8ZGl2IGFsaWduPSJjZW50ZXIiPgogICAgPGEgaHJlZj0iL2Zlcm4vaW1hZ2VzL292ZXJ2aWV3LWRhcmsucG5nIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgPHBpY3R1cmU+CiAgICAgICAgICAgIDxzb3VyY2Ugc3Jjc2V0PSIvZmVybi9pbWFnZXMvb3ZlcnZpZXctZGFyay5wbmciIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIj4KICAgICAgICAgICAgPHNvdXJjZSBzcmNzZXQ9Ii9mZXJuL2ltYWdlcy9vdmVydmlldy1saWdodC5wbmciIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KSI+CiAgICAgICAgICAgIDxpbWcgc3JjPSIvZmVybi9pbWFnZXMvb3ZlcnZpZXctbGlnaHQucG5nIiB3aWR0aD0iNzAwIiBhbHQ9Ik92ZXJ2aWV3IERpYWdyYW0iPgogICAgICAgIDwvcGljdHVyZT4KICAgIDwvYT4KPC9kaXY+CgojIyDwn4y/IFNES3MKClRoZSBGZXJuIHBsYXRmb3JtIGlzIGF2YWlsYWJsZSB2aWEgYSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIChDTEkpIGFuZCByZXF1aXJlcyBOb2RlIDE4Ky4gVG8gaW5zdGFsbCBpdCwgcnVuOgoKYGBgYmFzaApucG0gaW5zdGFsbCAtZyBmZXJuLWFwaQpgYGAKCkluaXRpYWxpemUgRmVybiB3aXRoIHlvdXIgT3BlbkFQSSBzcGVjOgoKYGBgYmFzaApmZXJuIGluaXQgLS1vcGVuYXBpIC4vcGF0aC90by9vcGVuYXBpLnltbAojIG9yCmZlcm4gaW5pdCAtLW9wZW5hcGkgaHR0cHM6Ly9saW5rLmJ1aWxkd2l0aGZlcm4uY29tL3BsYW50c3RvcmUtb3BlbmFwaQpgYGAKCllvdXIgZGlyZWN0b3J5IHNob3VsZCBsb29rIGxpa2UgdGhlIGZvbGxvd2luZzoKCmBgYHlhbWwKZmVybi8K4pSc4pSAIGZlcm4uY29uZmlnLmpzb24K4pSc4pSAIGdlbmVyYXRvcnMueW1sICMgZ2VuZXJhdG9ycyB5b3UncmUgdXNpbmcK4pSU4pSAIG9wZW5hcGkvCiAg4pSU4pSAIG9wZW5hcGkuanNvbiAjIHlvdXIgb3BlbmFwaSBkb2N1bWVudApgYGAKCkZpbmFsbHksIHRvIGludm9rZSB0aGUgZ2VuZXJhdG9yLCBydW46CgpgYGBiYXNoCmZlcm4gZ2VuZXJhdGUKYGBgCgrwn46JIE9uY2UgdGhlIGNvbW1hbmQgY29tcGxldGVzLCB5b3UnbGwgc2VlIHlvdXIgU0RLIGluIGAvZ2VuZXJhdGVkL3Nka3MvdHlwZXNjcmlwdGAuCgojIyDwn4y/IEFQSSBEb2N1bWVudGF0aW9uCgpGZXJuIGNhbiBhbHNvIGJ1aWxkIGFuZCBob3N0IGEgZG9jdW1lbnRhdGlvbiB3ZWJzaXRlIHdpdGggYW4gYXV0by1nZW5lcmF0ZWQgQVBJIHJlZmVyZW5jZS4gV3JpdGUgYWRkaXRpb25hbCBwYWdlcyBpbiBtYXJrZG93biBhbmQgaGF2ZSB0aGVtIHZlcnNpb25lZCB3aXRoIGdpdC4gClNlYXJjaCwgU0VPLCBkYXJrIG1vZGUsIGFuZCBwb3B1bGFyIGNvbXBvbmVudHMgYXJlIHByb3ZpZGVkIG91dC1vZi10aGUtYm94LiBQbHVzLCB5b3UgY2FuIGN1c3RvbWl6ZSB0aGUgY29sb3JzLCBmb250LCBsb2dvLCBhbmQgZG9tYWluIG5hbWUuCgpDaGVjayBvdXQgZG9jcyBidWlsdCB3aXRoIEZlcm46CgotIFtlbGV2ZW5sYWJzLmlvL2RvY3NdKGh0dHBzOi8vZWxldmVubGFicy5pby9kb2NzKQotIFtsYXVuY2hkYXJrbHkuY29tL2RvY3NdKGh0dHBzOi8vbGF1bmNoZGFya2x5LmNvbS9kb2NzL2hvbWUpCi0gW2RvY3MuaHVtZS5haV0oaHR0cHM6Ly9kb2NzLmh1bWUuYWkvKQoKR2V0IHN0YXJ0ZWQgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJuLWFwaS9kb2NzLXN0YXJ0ZXIpLgoKIyMg8J+MvyBHZW5lcmF0b3JzCgpHZW5lcmF0b3JzIGFyZSBwcm9jZXNzIHRoYXQgdGFrZSB5b3VyIEFQSSBEZWZpbml0aW9uIGFzIGlucHV0IGFuZCBvdXRwdXQgYXJ0aWZhY3RzIChTREtzLApQb3N0bWFuIENvbGxlY3Rpb25zLCBTZXJ2ZXIgYm9pbGVycGxhdGUsIGV0Yy4pLiBUbyBhZGQgYSBnZW5lcmF0b3IsIHJ1biBgZmVybiBhZGQgPGdlbmVyYXRvciBpZD5gLgoKIyMjIFNESyBHZW5lcmF0b3JzCgp8IEdlbmVyYXRvciBJRCAgICAgICAgICAgICAgICAgICAgICAgfCBMYXRlc3QgVmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRW50cnlwb2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IGBmZXJuYXBpL2Zlcm4tdHlwZXNjcmlwdC1zZGtgICAgICAgfCAhW1R5cGVzY3JpcHQgR2VuZXJhdG9yIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3YvZmVybmFwaS9mZXJuLXR5cGVzY3JpcHQtc2RrKSAgICAgIHwgW2NsaS50c10oLi9nZW5lcmF0b3JzL3R5cGVzY3JpcHQvc2RrL2NsaS9zcmMvY2xpLnRzKSAgICAgICAgICAgICAgICAgICAgICB8CnwgYGZlcm5hcGkvZmVybi1weXRob24tc2RrYCAgICAgICAgICB8ICFbUHl0aG9uIEdlbmVyYXRvciBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2RvY2tlci92L2Zlcm5hcGkvZmVybi1weXRob24tc2RrKSAgICAgICAgICAgICAgfCBbY2xpLnB5XSguL2dlbmVyYXRvcnMvcHl0aG9uL3NyYy9mZXJuX3B5dGhvbi9nZW5lcmF0b3JzL3Nkay9jbGkucHkpICAgICAgICAgICB8CnwgYGZlcm5hcGkvZmVybi1qYXZhLXNka2AgICAgICAgICAgICB8ICFbSmF2YSBHZW5lcmF0b3IgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvdi9mZXJuYXBpL2Zlcm4tamF2YS1zZGspICAgICAgICAgICAgICAgICAgfCBbQ2xpLmphdmFdKC4vZ2VuZXJhdG9ycy9qYXZhL3Nkay9zcmMvbWFpbi9qYXZhL2NvbS9mZXJuL2phdmEvY2xpZW50L0NsaS5qYXZhKSB8CnwgYGZlcm5hcGkvZmVybi1ydWJ5LXNka2AgICAgICAgICAgICB8ICFbUnVieSBHZW5lcmF0b3IgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvdi9mZXJuYXBpL2Zlcm4tcnVieS1zZGspICAgICAgICAgICAgICAgICAgfCBbY2xpLnRzXSguL2dlbmVyYXRvcnMvcnVieS9zZGsvc3JjL2NsaS50cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGZlcm5hcGkvZmVybi1nby1zZGtgICAgICAgICAgICAgICB8ICFbR28gR2VuZXJhdG9yIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3YvZmVybmFwaS9mZXJuLWdvLXNkaykgICAgICAgICAgICAgICAgICAgICAgfCBbbWFpbi5nb10oLi9nZW5lcmF0b3JzL2dvL2NtZC9mZXJuLWdvLXNkay9tYWluLmdvKSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGZlcm5hcGkvZmVybi1jc2hhcnAtc2RrYCAgICAgICAgICB8ICFbQyMgR2VuZXJhdG9yIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3YvZmVybmFwaS9mZXJuLWNzaGFycC1zZGspICAgICAgICAgICAgICAgICAgfCBbY2xpLnRzXSguL2dlbmVyYXRvcnMvY3NoYXJwL3Nkay9zcmMvY2xpLnRzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGZlcm5hcGkvZmVybi1waHAtc2RrYCAgICAgICAgICAgICB8ICFbUEhQIEdlbmVyYXRvciBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2RvY2tlci92L2Zlcm5hcGkvZmVybi1waHAtc2RrKSAgICAgICAgICAgICAgICAgICAgfCBbY2xpLnRzXSguL2dlbmVyYXRvcnMvcGhwL3Nkay9zcmMvY2xpLnRzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGZlcm5hcGkvZmVybi1zd2lmdC1zZGtgICAgICAgICAgICB8ICFbU3dpZnQgR2VuZXJhdG9yIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3YvZmVybmFwaS9mZXJuLXN3aWZ0LXNkaykgICAgICAgICAgICAgICAgfCBbY2xpLnRzXSguL2dlbmVyYXRvcnMvc3dpZnQvc2RrL3NyYy9jbGkudHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGZlcm5hcGkvZmVybi1ydXN0LXNka2AgICAgICAgICAgICB8ICFbUnVzdCBHZW5lcmF0b3IgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvdi9mZXJuYXBpL2Zlcm4tcnVzdC1zZGspICAgICAgICAgICAgICAgICAgfCBbY2xpLnRzXSguL2dlbmVyYXRvcnMvcnVzdC9zZGsvc3JjL2NsaS50cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKIyMjIFNlcnZlci1zaWRlIEdlbmVyYXRvcnMKCkZlcm4ncyBzZXJ2ZXItc2lkZSBnZW5lcmF0b3JzIG91dHB1dCBib2lsZXJwbGF0ZSBhcHBsaWNhdGlvbiBjb2RlIChtb2RlbHMgYW5kIG5ldHdvcmtpbmcgbG9naWMpLiBUaGlzIGlzIGludGVuZGVkIGZvciBzcGVjLWZpcnN0IG9yIEFQSS1maXJzdCBkZXZlbG9wZXJzLCB3aG8gd3JpdGUgdGhlaXIgQVBJIGRlZmluaXRpb24gKGFzIGFuIE9wZW5BUEkgc3BlYyBvciBGZXJuIGRlZmluaXRpb24pIGFuZCB3YW50IHRvIGdlbmVyYXRlIGJhY2tlbmQgY29kZS4KCnwgR2VuZXJhdG9yIElEICAgICAgICAgICAgICAgICAgICAgIHwgTGF0ZXN0IFZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRW50cnlwb2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBgZmVybmFwaS9mZXJuLXR5cGVzY3JpcHQtZXhwcmVzc2AgfCAhW1R5cGVzY3JpcHQgRXhwcmVzcyBTZXJ2ZXIgR2VuZXJhdG9yIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3YvZmVybmFwaS9mZXJuLXR5cGVzY3JpcHQtZXhwcmVzcykgfCBbY2xpLnRzXSguL2dlbmVyYXRvcnMvdHlwZXNjcmlwdC9leHByZXNzL2NsaS9zcmMvY2xpLnRzKSAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGZlcm5hcGkvZmVybi1mYXN0YXBpLXNlcnZlcmAgICAgIHwgIVtQeXRob24gRmFzdEFQSSBTZXJ2ZXIgR2VuZXJhdG9yIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3YvZmVybmFwaS9mZXJuLWZhc3RhcGktc2VydmVyKSAgICAgICAgIHwgW2NsaS5weV0oLi9nZW5lcmF0b3JzL3B5dGhvbi9zcmMvZmVybl9weXRob24vZ2VuZXJhdG9ycy9zZGsvY2xpLnB5KSAgICAgICAgICAgICAgfAp8IGBmZXJuYXBpL2Zlcm4tamF2YS1zcHJpbmdgICAgICAgICB8ICFbSmF2YSBTcHJpbmcgU2VydmVyIEdlbmVyYXRvciBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2RvY2tlci92L2Zlcm5hcGkvZmVybi1qYXZhLXNwcmluZykgICAgICAgICAgICAgICB8IFtDbGkuamF2YV0oLi9nZW5lcmF0b3JzL2phdmEvc3ByaW5nL3NyYy9tYWluL2phdmEvY29tL2Zlcm4vamF2YS9zcHJpbmcvQ2xpLmphdmEpIHwKCiMjIyBNb2RlbCBHZW5lcmF0b3JzCgpGZXJuJ3MgbW9kZWwgZ2VuZXJhdG9ycyB3aWxsIG91dHB1dCBzY2hlbWFzIG9yIHR5cGVzIGRlZmluZWQgaW4geW91ciBPcGVuQVBJIHNwZWMgb3IgRmVybiBEZWZpbml0aW9uLgoKfCBHZW5lcmF0b3IgSUQgICAgICAgICAgICAgICAgICB8IExhdGVzdCBWZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVudHJ5cG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBgZmVybmFwaS9mZXJuLXB5ZGFudGljLW1vZGVsYCB8ICFbUHlkYW50aWMgTW9kZWwgR2VuZXJhdG9yIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3YvZmVybmFwaS9mZXJuLXB5ZGFudGljLW1vZGVsKSB8IFtjbGkucHldKC4vZ2VuZXJhdG9ycy9weXRob24vc3JjL2Zlcm5fcHl0aG9uL2dlbmVyYXRvcnMvc2RrL2NsaS5weSkgICAgICAgICAgIHwKfCBgZmVybmFwaS9mZXJuLWphdmEtbW9kZWxgICAgICB8ICFbSmF2YSBNb2RlbCBHZW5lcmF0b3IgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvdi9mZXJuYXBpL2Zlcm4tamF2YS1tb2RlbCkgICAgICAgICB8IFtDbGkuamF2YV0oLi9nZW5lcmF0b3JzL2phdmEvc2RrL3NyYy9tYWluL2phdmEvY29tL2Zlcm4vamF2YS9jbGllbnQvQ2xpLmphdmEpIHwKfCBgZmVybmFwaS9mZXJuLXJ1YnktbW9kZWxgICAgICB8ICFbUnVieSBNb2RlbCBHZW5lcmF0b3IgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvdi9mZXJuYXBpL2Zlcm4tcnVieS1tb2RlbCkgICAgICAgICB8IFtjbGkudHNdKC4vZ2VuZXJhdG9ycy9ydWJ5L21vZGVsL3NyYy9jbGkudHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgZmVybmFwaS9mZXJuLWdvLW1vZGVsYCAgICAgICB8ICFbR28gTW9kZWwgR2VuZXJhdG9yIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3YvZmVybmFwaS9mZXJuLWdvLW1vZGVsKSAgICAgICAgICAgICB8IFttYWluLmdvXSguL2dlbmVyYXRvcnMvZ28vY21kL2Zlcm4tZ28tbW9kZWwvbWFpbi5nbykgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCiMjIyBTcGVjIEdlbmVyYXRvcnMKCkZlcm4ncyBzcGVjIGdlbmVyYXRvcnMgY2FuIG91dHB1dCBhbiBPcGVuQVBJIHNwZWMgb3IgYSBQb3N0bWFuIGNvbGxlY3Rpb24uCgo+ICoqTm90ZSoqOiBUaGUgT3BlbkFQSSBzcGVjIGdlbmVyYXRvciBpcyBwcmltYXJpbHkgaW50ZW5kZWQgZm9yIEZlcm4gRGVmaW5pdGlvbiB1c2Vycy4gVGhpcyBwcmV2ZW50cyBsb2NrLWluIHNvIHRoYXQgb25lIGNhbiBhbHdheXMgZXhwb3J0IHRvIE9wZW5BUEkuCgp8IEdlbmVyYXRvciBJRCAgICAgICAgICAgfCBMYXRlc3QgVmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRW50cnlwb2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IGBmZXJuYXBpL2Zlcm4tb3BlbmFwaWAgfCAhW09wZW5BUEkgR2VuZXJhdG9yIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3YvZmVybmFwaS9mZXJuLW9wZW5hcGkpIHwgW2NsaS50c10oLi9nZW5lcmF0b3JzL29wZW5hcGkvc3JjL2NsaS50cykgfAp8IGBmZXJuYXBpL2Zlcm4tcG9zdG1hbmAgfCAhW1Bvc3RtYW4gR2VuZXJhdG9yIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3YvZmVybmFwaS9mZXJuLXBvc3RtYW4pIHwgW2NsaS50c10oLi9nZW5lcmF0b3JzL3Bvc3RtYW4vc3JjL2NsaS50cykgfAoKIyMg8J+MvyBDTEkgQ29tbWFuZHMKCkhlcmUncyBhIHF1aWNrIGxvb2sgYXQgdGhlIG1vc3QgcG9wdWxhciBDTEkgY29tbWFuZHMuIFZpZXcgdGhlIGRvY3VtZW50YXRpb24gZm9yIFthbGwgQ0xJIGNvbW1hbmRzXShodHRwczovL2J1aWxkd2l0aGZlcm4uY29tL2xlYXJuL2NsaS1hcGkvY2xpLXJlZmVyZW5jZS9jb21tYW5kcykuCgpgZmVybiBpbml0YDogYWRkcyBhIG5ldyBzdGFydGVyIEFQSSB0byB5b3VyIHJlcG9zaXRvcnkuCgpgZmVybiBjaGVja2A6IHZhbGlkYXRlIHlvdXIgQVBJIGRlZmluaXRpb24gYW5kIEZlcm4gY29uZmlndXJhdGlvbi4KCmBmZXJuIGdlbmVyYXRlYDogcnVuIHRoZSBnZW5lcmF0b3JzIHNwZWNpZmllZCBpbiBgZ2VuZXJhdG9ycy55bWxgIGluIHRoZSBjbG91ZC4KCmBmZXJuIGdlbmVyYXRlIC0tbG9jYWxgOiBydW4gdGhlIGdlbmVyYXRvcnMgc3BlY2lmaWVkIGluIGBnZW5lcmF0b3JzLnltbGAgaW4gZG9ja2VyIGxvY2FsbHkuCgpgZmVybiBhZGQgPGdlbmVyYXRvcj5gOiBpbmNsdWRlIGEgbmV3IGdlbmVyYXRvciBpbiB5b3VyIGBnZW5lcmF0b3JzLnltbGAuIEZvciBleGFtcGxlLCBgZmVybiBhZGQgZmVybi1weXRob24tc2RrYC4KCiMjIEFkdmFuY2VkCgojIyMgQVBJIEZpcnN0CgpGZXJuIHN1cHBvcnRzIGRldmVsb3BlcnMgYW5kIHRlYW1zIHRoYXQgd2FudCB0byBiZSBBUEktZmlyc3Qgb3IgU3BlYy1maXJzdC4KCkRlZmluZSB5b3VyIEFQSSwgYW5kIHVzZSBGZXJuIHRvIGdlbmVyYXRlIG1vZGVscywgbmV0d29ya2luZyBjb2RlIGFuZCBib2lsZXJwbGF0ZSBhcHBsaWNhdGlvbiBjb2RlLiBUaGUgZ2VuZXJhdGVkIGNvZGUgYWRkcwp0eXBlIHNhZmV0eSB0byB5b3VyIEFQSSBpbXBsZW1lbnRhdGlvbiAtIGlmIHlvdXIgYmFja2VuZCBkb2Vzbid0IGltcGxlbWVudCB0aGUgQVBJIGNvcnJlY3RseSwgaXQgd29uJ3QgY29tcGlsZS4KCkZyYW1ld29ya3MgY3VycmVudGx5IHN1cHBvcnRlZDoKCi0gW0V4cHJlc3NdKC4vZ2VuZXJhdG9ycy90eXBlc2NyaXB0KQotIFtTcHJpbmcgQm9vdF0oLi9nZW5lcmF0b3JzL2phdmEpCi0gW0Zhc3RBUEldKC4vZ2VuZXJhdG9ycy9weXRob24pCgojIyMgRmVybiBEZWZpbml0aW9uCgpXaGlsZSB3ZSBhcmUgYmlnIGZhbnMgb2YgT3BlbkFQSSwgd2Uga25vdyBpdCBpc24ndCB0aGUgX2Vhc2llc3RfIGZvcm1hdCB0byByZWFkIGFuZCB3cml0ZS4gSWYgeW91J3JlIGxvb2tpbmcgZm9yIGFuIGFsdGVybmF0aXZlLApnaXZlIHRoZSBGZXJuIERlZmluaXRpb24gYSB0cnkuCgpJbnN0YWxsIHRoZSBGZXJuIENMSSBhbmQgaW5pdGlhbGl6ZSBhIEZlcm4gUHJvamVjdC4KCmBgYGJhc2gKbnBtIGluc3RhbGwgLWcgZmVybi1hcGkKZmVybiBpbml0CmBgYAoKVGhpcyB3aWxsIGNyZWF0ZSB0aGUgZm9sbG93aW5nIGZvbGRlciBzdHJ1Y3R1cmUgaW4geW91ciBwcm9qZWN0OgoKYGBgeWFtbApmZXJuLwrilJzilIAgZmVybi5jb25maWcuanNvbiAjIHJvb3QtbGV2ZWwgY29uZmlndXJhdGlvbgrilJzilIAgZ2VuZXJhdG9ycy55bWwgIyBnZW5lcmF0b3JzIHlvdSdyZSB1c2luZwrilJTilIAgZGVmaW5pdGlvbi8KICDilJzilIAgYXBpLnltbCAgIyBBUEktbGV2ZWwgY29uZmlndXJhdGlvbgogIOKUlOKUgCBpbWRiLnltbCAjIGVuZHBvaW50cywgdHlwZXMsIGFuZCBlcnJvcnMKYGBgCgpIZXJlJ3Mgd2hhdCB0aGUgYGltZGIueW1sYCBzdGFydGVyIGZpbGUgbG9va3MgbGlrZToKCmBgYHlhbWwKdHlwZXM6CiAgTW92aWVJZDogc3RyaW5nCgogIE1vdmllOgogICAgcHJvcGVydGllczoKICAgICAgaWQ6IE1vdmllSWQKICAgICAgdGl0bGU6IHN0cmluZwogICAgICByYXRpbmc6CiAgICAgICAgdHlwZTogZG91YmxlCiAgICAgICAgZG9jczogVGhlIHJhdGluZyBzY2FsZSBpcyBvbmUgdG8gZml2ZSBzdGFycwoKICBDcmVhdGVNb3ZpZVJlcXVlc3Q6CiAgICBwcm9wZXJ0aWVzOgogICAgICB0aXRsZTogc3RyaW5nCiAgICAgIHJhdGluZzogZG91YmxlCgpzZXJ2aWNlOgogIGF1dGg6IGZhbHNlCiAgYmFzZS1wYXRoOiAvbW92aWVzCiAgZW5kcG9pbnRzOgogICAgY3JlYXRlTW92aWU6CiAgICAgIGRvY3M6IEFkZCBhIG1vdmllIHRvIHRoZSBkYXRhYmFzZQogICAgICBtZXRob2Q6IFBPU1QKICAgICAgcGF0aDogL2NyZWF0ZS1tb3ZpZQogICAgICByZXF1ZXN0OiBDcmVhdGVNb3ZpZVJlcXVlc3QKICAgICAgcmVzcG9uc2U6IE1vdmllSWQKCiAgICBnZXRNb3ZpZToKICAgICAgbWV0aG9kOiBHRVQKICAgICAgcGF0aDogL3ttb3ZpZUlkfQogICAgICBwYXRoLXBhcmFtZXRlcnM6CiAgICAgICAgbW92aWVJZDogTW92aWVJZAogICAgICByZXNwb25zZTogTW92aWUKICAgICAgZXJyb3JzOgogICAgICAgIC0gTW92aWVEb2VzTm90RXhpc3RFcnJvcgoKZXJyb3JzOgogIE1vdmllRG9lc05vdEV4aXN0RXJyb3I6CiAgICBzdGF0dXMtY29kZTogNDA0CiAgICB0eXBlOiBNb3ZpZUlkCmBgYAoKQ2hlY2tvdXQgb3BlbiBzb3VyY2UgcHJvamVjdHMgdGhhdCBhcmUgdXNpbmcgRmVybiBEZWZpbml0aW9uczoKCi0gW01ldHJpcG9ydF0oaHR0cHM6Ly9naXRodWIuY29tL21ldHJpcG9ydC9tZXRyaXBvcnQvdHJlZS9kZXZlbG9wL2Zlcm4vZGVmaW5pdGlvbikKLSBbUml2ZXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9yaXZldC1nZy9yaXZldC90cmVlL21haW4vc2Rrcy9hcGkvZmVybi9kZWZpbml0aW9uKQoKIyMgSW5zcGlyYXRpb24KCkZlcm4gaXMgaW5zcGlyZWQgYnkgaW50ZXJuYWwgdG9vbGluZyBidWlsdCB0byBlbmhhbmNlIHRoZSBkZXZlbG9wZXIgZXhwZXJpZW5jZS4gV2Ugc3RhbmQgb24gdGhlIHNob3VsZGVycyBvZiBnaWFudHMuIFdoaWxlIHRlYW1zIHdlcmUgcmVzcG9uc2libGUgZm9yIGJ1aWxkaW5nIHRoZSBmb2xsb3dpbmcgdG9vbHMsIHdlIHdhbnQgdG8gZ2l2ZSBhIHNob3V0IG91dCB0byBNYXJrIEVsbGlvdCAoY3JlYXRvciBvZiBDb25qdXJlIGF0IFBhbGFudGlyKSwgTWljaGFlbCBEb3dsaW5nIChjcmVhdG9yIG9mIFNtaXRoeSBhdCBBV1MpLCBhbmQgSWFuIE1jQ3J5c3RhbCAoY3JlYXRvciBvZiBTdHJpcGUgRG9jcykuCgojIyBDb21tdW5pdHkKCltKb2luIG91ciBTbGFjayFdKGh0dHBzOi8vam9pbi5zbGFjay5jb20vdC9mZXJuLWNvbW11bml0eS9zaGFyZWRfaW52aXRlL3p0LTJxN2V2NG1raS1taE81YW5Lc2x3Um93cDRvRXhXZjRBKSBXZSBhcmUgaGVyZSB0byBhbnN3ZXIgcXVlc3Rpb25zIGFuZCBoZWxwIHlvdSBnZXQgdGhlIG1vc3Qgb3V0IG9mIEZlcm4uCgojIyBDb250cmlidXRpbmcKCldlIHdlbGNvbWUgY29tbXVuaXR5IGNvbnRyaWJ1dGlvbnMuIEZvciBndWlkZWxpbmVzLCByZWZlciB0byBvdXIgW0NPTlRSSUJVVElORy5tZF0oL0NPTlRSSUJVVElORy5tZCkuIFRvIGNvbnRyaWJ1dGUgdG8gb3VyIGRvY3VtZW50YXRpb24sIHJlZmVyIHRvIG91ciBbZG9jc10oaHR0cHM6Ly9naXRodWIuY29tL2Zlcm4tYXBpL2RvY3MpIHJlcG8uCgojIyMgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQKClRoaXMgcmVwb3NpdG9yeSB1c2VzIFtEZXZCb3hdKGh0dHBzOi8vd3d3LmpldGlmeS5jb20vZGV2Ym94KSBmb3IgcmVwcm9kdWNpYmxlIGRldmVsb3BtZW50IGVudmlyb25tZW50cy4gRGV2Qm94IHByb3ZpZGVzIGNyb3NzLXBsYXRmb3JtIHN1cHBvcnQgKE1hYywgTGludXgsIFdpbmRvd3MgdmlhIFdTTCkgd2l0aCBleGFjdCB2ZXJzaW9uIHBpbm5pbmcgYmFzZWQgb24gTml4LgoKVG8gZ2V0IHN0YXJ0ZWQ6CgpgYGBiYXNoCiMgSW5zdGFsbCBEZXZCb3ggKGh0dHBzOi8vd3d3LmpldGlmeS5jb20vZGV2Ym94L2RvY3MvaW5zdGFsbGluZ19kZXZib3gvKQpjdXJsIC1mc1NMIGh0dHBzOi8vZ2V0LmpldGlmeS5jb20vZGV2Ym94IHwgYmFzaAoKIyBFbnRlciB0aGUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQKZGV2Ym94IHNoZWxsCmBgYAoKRGV2Qm94IGF1dG9tYXRpY2FsbHkgaW5zdGFsbHMgYWxsIHJlcXVpcmVkIGRlcGVuZGVuY2llcyBpbmNsdWRpbmcgTm9kZS5qcywgcG5wbSwgR28sIFB5dGhvbiwgUG9ldHJ5LCBKREssIGFuZCBidWYgd2l0aCBwaW5uZWQgdmVyc2lvbnMgbWF0Y2hpbmcgQ0kuCgohW0Zlcm4gQ29udHJpYnV0b3JzXShodHRwczovL2NvbnRyaWIucm9ja3MvaW1hZ2U/cmVwbz1mZXJuLWFwaS9mZXJuKQo= readmeEtag: '"0e9e04b35a2450d798deb7ab092ee26686bbf82f"' readmeLastModified: Fri, 16 Jan 2026 03:24:36 GMT repositoryId: 476820102 description: Input OpenAPI. Output SDKs and Docs. created: '2022-04-01T17:56:54Z' updated: '2026-02-06T03:21:46Z' language: TypeScript archived: false stars: 3495 watchers: 17 forks: 277 owner: fern-api logo: https://avatars.githubusercontent.com/u/102944815?v=4 license: Apache-2.0 repoEtag: '"84735dee9f9411a3e7edaad9a2b057d20e0af5e6d5d4ccc148899c8e7ffca108"' repoLastModified: Fri, 06 Feb 2026 03:21:46 GMT foundInMaster: true sponsored: true testimonial: > I'm a huge fan of Fern. It's a force multiplier for API teams - Mike Bifulco, APIs You Won't Hate cofounder v3_1: true sponsoredDate: - 2023-11-01T06:00:00.000Z - 2023-11-01T06:00:00.000Z - 2023-11-01T06:00:00.000Z - source: https://openapi.tools/ name: ✨ Stainless sponsored: true sponsoredDate: 2024-01-01T06:00:00.000Z category: - SDK - Parsers repository: https://github.com/stainless-api/stl-api link: https://stainlessapi.com language: - TypeScript - Python - Go - Java - and Kotlin source_description: >- Generate SDKs in popular languages and publish them to package managers (like npm). v2: false v3: true v3_1: true id: 585753eb5cd634d1a8d2d02cff7e371e repositoryMetadata: base64Readme: >- IyBTdGFpbmxlc3M6IGEgZnJhbWV3b3JrIGZvciByb2J1c3QgJiBwb2xpc2hlZCBSRVNUIEFQSXMKClN0YWlubGVzcyBoZWxwcyB5b3Ugc2hpcCBxdWFsaXR5LCB0eXBlc2FmZSBSRVNUIEFQSXMgZnJvbSBhbnkgVHlwZVNjcmlwdCBiYWNrZW5kLgoKWW91IGRlY2xhcmUgdGhlIHNoYXBlIGFuZCBiZWhhdmlvciBvZiB5b3VyIEFQSSBpbiBvbmUgcGxhY2UsCmFuZCBnZXQgYW4gT3BlbkFQSSBzcGVjLCBkb2NzLCBhbmQgdHlwZWQgZnJvbnRlbmQgY2xpZW50IHdpdGhvdXQgYSBidWlsZCBzdGVwLgoKWW91IGNhbiB1c2UgaXQgYXMgYSBwbHVnZ2FibGUsIGJhdHRlcmllcy1pbmNsdWRlZCB3ZWIgZnJhbWV3b3JrIGZvciBBUElzIChtYW5hZ2luZyBhdXRoLCBwYWdpbmF0aW9uLCBvYnNlcnZhYmlsaXR5LCBldGMpIG9yIHNwcmlua2xlIGl0IG9uIHRvcCBvZiB5b3VyIGV4aXN0aW5nIEFQSSBpbiBhbnkgZnJhbWV3b3JrIGZvciBiZXR0ZXIgT3BlbkFQSSBzdXBwb3J0IGFuZC9vciBmdWxsLXN0YWNrIHR5cGVzYWZldHkuCgpZb3UgY2FuIGFsc28gb3B0IGludG8gU3RhaW5sZXNzJ3MgU3RyaXBlLWluc3BpcmVkIFtwcmlzdGluZSBBUEkgZGVzaWduIGNvbnZlbnRpb25zXSgjcHJpc3RpbmUpIGFuZCBnZXQgcmljaCBwYWdpbmF0aW9uLCBjb25zaXN0ZW50IGVycm9ycywgZmllbGQgaW5jbHVzaW9uICYgc2VsZWN0aW9uLCBhbmQgKFdJUCkgbm9ybWFsaXplZCBjYWNoaW5nIG9uIHRoZSBmcm9udGVuZCBmb3IgZnJlZS4KClN0YWlubGVzcyBkcmF3cyBpbnNwaXJhdGlvbiB3aXRoIGdyYXRpdHVkZSBmcm9tIHRSUEMsIEZhc3RBUEksIEdyYXBoUUwvUmVsYXksIGFuZCAoaGVhdmlseSkgZnJvbSB0aGUgaW50ZXJuYWwgQVBJIEZyYW1ld29yayB3ZSB3b3JrZWQgb24gYXQgU3RyaXBlLgoKPiAqKk5vdGUqKgo+IFRoaXMgcHJvamVjdCBpcyBjdXJyZW50bHkgaW4gaXRzICoqYWxwaGEgc3RhZ2Ugb2YgZGV2ZWxvcG1lbnQqKi4KPiBGZWF0dXJlcyBtYXkgYmUgY2hhbmdlZCBvciByZW1vdmVkIGF0IGFueSB0aW1lIHdpdGhvdXQgd2FybmluZywgYW5kIHByb2R1Y3Rpb24gdXNlIGlzIG5vdCByZWNvbW1lbmRlZC4KPiBIb2JieWlzdHMgd2VsY29tZSEKCkZvciBleGFtcGxlOgoKPCEtLSBUT0RPOiB0aGlzIGlzIHRvbyBsb25nIC8gdG9vIG11Y2ggY29kZeKApiAtLT4KCmBgYHRzCi8vIHNlcnZlci50cwppbXBvcnQgeyBTdGwgfSBmcm9tICJzdGFpbmxlc3MiOwppbXBvcnQgeyBtYWtlUHJpc21hUGx1Z2luIH0gZnJvbSAiQHN0bC1hcGkvcHJpc21hIjsKaW1wb3J0IHsgbWFrZU5leHRQbHVnaW4gfSBmcm9tICJAc3RsLWFwaS9uZXh0IjsKaW1wb3J0IHsgbWFrZU5leHRBdXRoUGx1Z2luIH0gZnJvbSAiQHN0bC1hcGkvbmV4dC1hdXRoIjsKaW1wb3J0IHsgYXV0aE9wdGlvbnMgfSBmcm9tICJ+L3BhZ2VzL2FwaS9hdXRoL1suLi5uZXh0YXV0aF0iOwppbXBvcnQgcHJpc21hIGZyb20gIn4vbGlicy9wcmlzbWEiOwppbXBvcnQgeyB6IH0gZnJvbSAic3RhaW5sZXNzIjsKCmNvbnN0IHBsdWdpbnMgPSB7CiAgbmV4dDogbWFrZU5leHRQbHVnaW4oKSwKICBuZXh0QXV0aDogbWFrZU5leHRBdXRoUGx1Z2luKHsgYXV0aE9wdGlvbnMgfSksCiAgcHJpc21hOiBtYWtlUHJpc21hUGx1Z2luKCksCn07CgpleHBvcnQgY29uc3Qgc3RsID0gbmV3IFN0bCh7CiAgcGx1Z2lucywKfSk7Cgpjb25zdCBVc2VyID0gei5vYmplY3QoewogIGlkOiB6LnN0cmluZygpLAogIG5hbWU6IHouc3RyaW5nKCksCn0pOwoKY29uc3QgdXBkYXRlID0gc3RsLmVuZHBvaW50KHsKICBlbmRwb2ludDogIlBPU1QgL3VzZXJzLzppZCIsCiAgZGVzY3JpcHRpb246ICJVcGRhdGUgYSB1c2VyLiBDdXJyZW50bHkgb25seSB1cGRhdGluZyB0aGUgbmFtZSBpcyBzdXBwb3J0ZWQuIiwKICBhdXRoZW50aWNhdGVkOiB0cnVlLAogIHJlc3BvbnNlOiBVc2VyLAoKICBwYXRoOiB6Lm9iamVjdCh7CiAgICBpZDogei5zdHJpbmcoKSwKICB9KSwKICBib2R5OiB6Lm9iamVjdCh7CiAgICBuYW1lOiB6LnN0cmluZygpLAogIH0pLAoKICBhc3luYyBoYW5kbGVyKHsgaWQsIG5hbWUgfSkgewogICAgcmV0dXJuIGF3YWl0IHByaXNtYS51c2Vycy51cGRhdGVPbmUoaWQsIHsgbmFtZSB9KTsKICB9LAp9KTsKCmV4cG9ydCBjb25zdCBhcGkgPSBzdGwuYXBpKHsKICBvcGVuYXBpOiB7CiAgICBlbmRwb2ludDogIkdFVCAvYXBpL29wZW5hcGkiLAogIH0sCiAgcmVzb3VyY2VzOiB7CiAgICB1c2Vyczogc3RsLnJlc291cmNlKHsKICAgICAgYWN0aW9uczogewogICAgICAgIHVwZGF0ZSwKICAgICAgfSwKICAgICAgbW9kZWxzOiB7CiAgICAgICAgVXNlciwKICAgICAgfSwKICAgIH0pLAogIH0sCn0pOwoKLy8gY2xpZW50LnRzCmltcG9ydCB7IGNyZWF0ZUNsaWVudCB9IGZyb20gInN0YWlubGVzcyI7CmltcG9ydCB0eXBlIHsgYXBpIH0gZnJvbSAiLi9zZXJ2ZXIiOwoKY29uc3QgY2xpZW50ID0gY3JlYXRlQ2xpZW50PHR5cGVvZiBhcGk+KCJodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpIik7CgovLyBwYXJhbXMgYXJlIGZ1bGx5IHR5cGVkOgpjb25zdCB1c2VyID0gYXdhaXQgY2xpZW50LnVzZXJzLnVwZGF0ZSgiaWQiLCB7IG5hbWU6ICJteSBuZXcgbmFtZSIgfSk7Ci8vIHVzZXIgb2JqZWN0IGlzIGZ1bGx5IHR5cGVkLgoKLy8gQSBmdWxsIE9wZW5BUEkgc3BlYyBpcyBhdmFpbGFibGUgYnkgZGVmYXVsdCBhdCAiZ2V0IC9vcGVuYXBpIjoKY29uc3Qgb3BlbmFwaSA9IGF3YWl0IGNsaWVudC5nZXRPcGVuYXBpKCk7CmNvbnNvbGUubG9nKG9wZW5hcGkucGF0aHNbIi91c2Vycy86aWQiXS5wb3N0KTsKY29uc29sZS5sb2cob3BlbmFwaS5jb21wb25lbnRzLnNjaGVtYXMuVXNlcik7CmBgYAoKIyBHZXR0aW5nIHN0YXJ0ZWQKClNlZSBbYHN0YWlubGVzc2AgcGFja2FnZSBkb2NzXSgvcGFja2FnZXMvc3RhaW5sZXNzL1JFQURNRS5tZCNnZXR0aW5nLXN0YXJ0ZWQpIHRvIGdldCBzdGFydGVkIQoKIyBQYWNrYWdlcwoKLSBbc3RhaW5sZXNzXSgvcGFja2FnZXMvc3RhaW5sZXNzKQotIFtAc3RsLWFwaS9leHByZXNzXSgvcGFja2FnZXMvZXhwcmVzcykKLSBbQHN0bC1hcGkvbmV4dF0oL3BhY2thZ2VzL25leHQpCi0gW0BzdGwtYXBpL25leHQtYXV0aF0oL3BhY2thZ2VzL25leHQtYXV0aCkKLSBbQHN0bC1hcGkvcHJpc21hXSgvcGFja2FnZXMvcHJpc21hKQoKIyBQcmlzdGluZQoKUHJpc3RpbmUgaXMgYW4gQVBJIFN0YW5kYXJkIGJ5IFN0YWlubGVzcywgcHJvdmlkaW5nIG9waW5pb25zIG9uIEFQSSBkZXNpZ24gc28gdGVhbXMgZG9uJ3QgaGF2ZSB0byBiaWtlc2hlZCwgYW5kIHNvIHRvb2xzIGNhbiBleHBlY3QgY29uc2lzdGVudCBBUEkgc2hhcGVzLgoKRm9sbG93aW5nIHRoZSBQcmlzdGluZSBTdGFuZGFyZCBoZWxwcyB5b3VyIEFQSSBvZmZlciBhbiBpbnRlcmZhY2UgbGlrZSBTdHJpcGUncywKd2l0aCBiZXN0LXByYWN0aWNlcyBiYWtlZCBpbi4gTGlrZSB0aGUgUmVsYXkgc3RhbmRhcmQgZm9yIEdRTCwgUHJpc3RpbmUgY2FuIGFsc28gaGVscCB0b29saW5nIGxpa2UgZnJvbnRlbmQgY2xpZW50cyBjYWNoZSBkYXRhLCBwYWdpbmF0ZSByZXF1ZXN0cywgaGFuZGxlIGVycm9ycywgYW5kIHNvIG9uLgoKPCEtLSBZb3UgY2FuIG9wdCB5b3VyIEFQSSBpbnRvIFByaXN0aW5lIGxpa2Ugc286CgpgYGB0cwpjb25zdCBzdGwgPSBuZXcgU3RhaW5sZXNzKHsgcHJpc3RpbmU6IHRydWUgfSk7CmBgYAoKVGhpcyB3aWxsIGVuZm9yY2UgdGhlIFByaXN0aW5lIGNvbnZlbnRpb25zLCBhbmQgcHJvdmlkZSBlYXNpZXIgYWNjZXNzIHRvIHRvb2xpbmcgd2hpY2ggZGVwZW5kcyBvbiBpdC4KCklmIHlvdSdyZSBzdGFydGluZyB3aXRoIGFuIGV4aXN0aW5nIEFQSSBhbmQgZG9uJ3Qgd2FudCB0byBnbyBzdHJhaWdodCB0byBhIHYyLAp5b3UgY2FuIGdyYWR1YWxseSBhZG9wdCBQcmlzdGluZSBzdGFuZGFyZHMgYW5kIHRvb2xpbmcuIEluIHRoZSBmdXR1cmUsIHdlIHBsYW4gdG8gb2ZmZXIgbGludCBydWxlcyBmb3IgeW91ciBPcGVuQVBJIHNwZWMgYW5kIGFuIG92ZXJhbGwgIkxpZ2h0aG91c2Ugc2NvcmUiIGluZGljYXRpbmcgdGhlIGRlZ3JlZSBvZiBjb21wbGlhbmNlIHlvdXIgQVBJIG9mZmVycy4KIC0tPgoKIyMgUHJpc3RpbmUgQ29udmVudGlvbnMKCkhlcmUgaXMgYSBsaXN0IG9mIFByaXN0aW5lIEFQSSBkZXNpZ24gY29udmVudGlvbnM6CgotIFtQYWdpbmF0aW9uXSgvcGFja2FnZXMvc3RhaW5sZXNzL2RvY3MvcGFnaW5hdGlvbi5tZCkKLSBbSW5jbHVzaW9uXSgvcGFja2FnZXMvc3RhaW5sZXNzL2RvY3MvaW5jbHVzaW9uLm1kKQotIFtTZWxlY3Rpb25dKC9wYWNrYWdlcy9zdGFpbmxlc3MvZG9jcy9zZWxlY3Rpb24ubWQpCgojIFVzaW5nIFN0YWlubGVzcyBpbiBhbiBleGlzdGluZyBjb2RlYmFzZQoKSWYgeW91J2QgbGlrZSBhIG1haW50YWluYWJsZSB3YXkgb2YgZGVjbGFyaW5nIHlvdXIgT3BlbkFQSSBzcGVjCmluIFR5cGVTY3JpcHQsIHJpZ2h0IGFsb25nc2lkZSB5b3VyIGFwcGxpY2F0aW9uIGNvZGUsIGFuZCBnZXR0aW5nCmdyZWF0IGRvY3MsIGVuZC10by1lbmQgdHlwZXNhZmV0eSwgYW5kIGJhY2tlbmQgQVBJIGNsaWVudCBsaWJyYXJpZXMgKFNES3MpLAp5b3UgY2FuIGFkb3B0IHRoZSBgc3RhaW5sZXNzYCBsaWJyYXJ5IGdyYWR1YWxseSBpbiBtaW5pbWFsbHktaW52YXNpdmUgd2F5cy4KCkZvciBleGFtcGxlLCBpbiBhbiBFeHByZXNzIGFwcCwgeW91IGNhbiBhZGQgYW5ub3RhdGlvbnMgbmVhciBhIGhhbmRsZXIgdG8gZ2V0IGFuIE9wZW5BUEkgc3BlYyBhbmQgY2xpZW50OgoKYGBgdHMKLy8gYXBwL3JvdXRlcy91c2Vycy50cwoKY29uc3QgVXNlciA9IHoub2JqZWN0KHsKICBpZDogei5zdHJpbmcoKSwKICBuYW1lOiB6LnN0cmluZygpLAp9KTsKCmNvbnN0IGNyZWF0ZSA9IHN0bC5lbmRwb2ludCh7CiAgZW5kcG9pbnQ6ICJQT1NUIC91c2VycyIsCiAgcmVzcG9uc2U6IFVzZXIsCiAgYm9keTogei5vYmplY3QoeyBuYW1lOiB6LnN0cmluZygpIH0pLAp9KTsKCmFwcC5wb3N0KCIvdXNlcnMiLCBhc3luYyAocmVxLCByc3ApID0+IHsKICBjb25zdCB1c2VyID0gYXdhaXQgZGIudXNlcnMuY3JlYXRlKHsgbmFtZSB9KTsKICByc3Auc3RhdHVzKDIwMCkuanNvbih1c2VyKTsKfSk7CmBgYAoKPHN1bW1hcnk+WW91J2xsIGFsc28gbmVlZCBhIHNtYWxsIGFtb3VudCBvZiBzZXJ2ZXIgY29kZTwvc3VtbWFyeT4KCmBgYHRzCi8vIGFwcC9hcGkudHMKY29uc3QgdXNlcnMgPSBzdGwucmVzb3VyY2UoewogIG1vZGVsczogeyBVc2VyIH0sCiAgYWN0aW9uczogewogICAgY3JlYXRlLAogIH0sCn0pOwoKY29uc3QgYXBpID0gc3RsLmFwaSh7CiAgcmVzb3VyY2VzOiB7CiAgICB1c2VycywKICB9LAp9KTsKCi8vIGFuZCB2b2lsYSwgeW91IGdldCBhbiBPcGVuQVBJIHNwZWMhCmFwcC5nZXQoIi9vcGVuYXBpIiwgKHJlcSwgcnNwKSA9PiB7CiAgcnNwLmpzb24oYXBpLm9wZW5hcGkuc3BlYyk7Cn0pOwpgYGAKCjxzdW1tYXJ5PgpGb3IgdHlwZXNhZmV0eSBhbmQgdmFsaWRhdGlvbiBvZiBwYXJhbWV0ZXJzLCB5b3UgY2FuIGFsc28gc3ByaW5rbGUgaW4KcGFyYW0gcGFyc2luZywgcmVzcG9uc2UgZ2VuZXJhdGlvbiwgYW5kIG1vcmU6Cjwvc3VtbWFyeT4KCmBgYHRzCmFwcC5wb3N0KCIvdXNlcnMiLCBhc3luYyAocmVxLCByc3ApID0+IHsKICBjb25zdCB7IG5hbWUgfSA9IGNyZWF0ZS52YWxpZGF0ZVBhcmFtcyhyZXEpOwoKICBjb25zdCB1c2VyID0gYXdhaXQgZGIudXNlcnMuY3JlYXRlKHsgbmFtZSB9KTsKCiAgcnNwLnNlbmQoY3JlYXRlLm1ha2VSZXNwb25zZSh1c2VyKSk7Cn0pOwpgYGAKCkRvaW5nIHRoaXMgaGVscHMgVHlwZVNjcmlwdCBlbnN1cmUgdGhhdCB5b3VyIE9wZW5BUEkgc3BlYyBpcyBhbiBhY2N1cmF0ZSByZWZsZWN0aW9uIG9mIHlvdXIgcnVudGltZSBiZWhhdmlvci4gSXQgY2FuIGFsc28gaGVscCByZXR1cm4gY29uc2lzdGVudCByZXNwb25zZSBzaGFwZXMgYW5kIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMgdG8gdGhlIHVzZXIuCgpOb3RlIHRoYXQgYHZhbGlkYXRlUGFyYW1zYCByYWlzZXMgYEJhZFJlcXVlc3RFcnJvcmAgaWYgcGFyYW1zIGRvbid0IG1hdGNoLgoKVG8gaGFuZGxlIGVycm9ycyBsaWtlIHRoaXMsIGFkZCBtaWRkbGV3YXJlOgoKYGBgdHMKYXBwLnVzZSgoZXJyLCByZXEsIHJzcCwgbmV4dCkgPT4gewogIGlmIChlcnIgaW5zdGFuY2VvZiBzdGwuRXJyb3IpIHsKICAgIHJzcC5zdGF0dXMoZXJyLnN0YXR1c0NvZGUpLnNlbmQoc3RsLm1ha2VFcnJvcihlcnIpKTsKICB9CiAgLy8g4oCmCn0pOwpgYGAKCmBzdGwubWFrZUVycm9yYCBpcyB3aWxsIHJldHVybiBhIEpTT04gb2JqZWN0IHdpdGggYHR5cGVgLCBgbWVzc2FnZWAsIGFuZCBvdGhlciBpbmZvcm1hdGlvbi4gKFRPRE8gYWRkL2VuY291cmFnZSB0aGluZ3MgbGlrZSByZXF1ZXN0IElEJ3PigKYpCg== readmeEtag: '"a89884d04ce73d65e3e381b34c408a5d4e33f17e"' readmeLastModified: Mon, 29 Apr 2024 17:35:13 GMT repositoryId: 644096733 description: Stainless full-stack API Framework created: '2023-05-22T20:07:58Z' updated: '2026-02-05T23:09:49Z' language: TypeScript archived: false stars: 151 watchers: 7 forks: 7 owner: stainless-api logo: https://avatars.githubusercontent.com/u/88061651?v=4 repoEtag: '"57ed128205ae0625347bbd59ed0a17386444a5c8be0ea41ad75d0a275635d460"' repoLastModified: Thu, 05 Feb 2026 23:09:49 GMT foundInMaster: true - source: https://openapi.tools/ name: // Speakeasy sponsored: true sponsoredDate: 2024-02-09T06:00:00.000Z category: - SDK - Documentation repository: https://github.com/speakeasy-api link: https://speakeasyapi.dev/ language: - TypeScript - Python - Go - Java - Terraform - C# - PHP - Ruby - Swift - Unity source_description: >- Generate & publish SDKs in 10+ languages, Terraform Providers, and docs from your OpenAPI v3: true v3_1: true id: e9c581a8a3595b87ec6837e848852b65 foundInMaster: true - source: https://openapi.tools/ name: Swift OpenAPI Generator category: - SDK - Server language: Swift repository: https://github.com/apple/swift-openapi-generator link: https://github.com/apple/swift-openapi-generator source_description: >- Generate Swift client and server code from an OpenAPI document. Includes support for type-safe JSON event streaming, multipart, Swift concurrency, customizable middlewares, and pluggable HTTP libraries. v2: false v3: true v3_1: true id: 8c9fc3b3b20c0629891b754a2e3c79e8 repositoryMetadata: base64Readme: >- IyBTd2lmdCBPcGVuQVBJIEdlbmVyYXRvcgoKWyFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3Nzd2ctaW5jdWJhdGluZy15ZWxsb3cuc3ZnKV0oaHR0cHM6Ly93d3cuc3dpZnQub3JnL3Nzd2cvKQpbIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZG9jYy1yZWFkX2RvY3VtZW50YXRpb24tYmx1ZSldKGh0dHBzOi8vc3dpZnRwYWNrYWdlaW5kZXguY29tL2FwcGxlL3N3aWZ0LW9wZW5hcGktZ2VuZXJhdG9yL2RvY3VtZW50YXRpb24pClshW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvdi9yZWxlYXNlL2FwcGxlL3N3aWZ0LW9wZW5hcGktZ2VuZXJhdG9yKV0oaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL3N3aWZ0LW9wZW5hcGktZ2VuZXJhdG9yL3JlbGVhc2VzKQpbIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZW5kcG9pbnQ/dXJsPWh0dHBzJTNBJTJGJTJGc3dpZnRwYWNrYWdlaW5kZXguY29tJTJGYXBpJTJGcGFja2FnZXMlMkZhcHBsZSUyRnN3aWZ0LW9wZW5hcGktZ2VuZXJhdG9yJTJGYmFkZ2UlM0Z0eXBlJTNEc3dpZnQtdmVyc2lvbnMpXShodHRwczovL3N3aWZ0cGFja2FnZWluZGV4LmNvbS9hcHBsZS9zd2lmdC1vcGVuYXBpLWdlbmVyYXRvcikKCkdlbmVyYXRlIFN3aWZ0IGNsaWVudCBhbmQgc2VydmVyIGNvZGUgZnJvbSBhbiBPcGVuQVBJIGRvY3VtZW50LgoKIyMgT3ZlcnZpZXcKCltPcGVuQVBJXVtvcGVuYXBpXSBpcyBhIHNwZWNpZmljYXRpb24gZm9yIGRvY3VtZW50aW5nIEhUVFAgc2VydmljZXMuIEFuIE9wZW5BUEkgZG9jdW1lbnQgaXMgd3JpdHRlbiBpbiBlaXRoZXIgWUFNTCBvciBKU09OLCBhbmQgY2FuIGJlIHJlYWQgYnkgdG9vbHMgdG8gaGVscCBhdXRvbWF0ZSB3b3JrZmxvd3MsIHN1Y2ggYXMgZ2VuZXJhdGluZyB0aGUgbmVjZXNzYXJ5IGNvZGUgdG8gc2VuZCBhbmQgcmVjZWl2ZSBIVFRQIHJlcXVlc3RzLgoKU3dpZnQgT3BlbkFQSSBHZW5lcmF0b3IgaXMgYSBTd2lmdCBwYWNrYWdlIHBsdWdpbiB0aGF0IGNhbiBnZW5lcmF0ZSB0aGUgY2VyZW1vbnkgY29kZSByZXF1aXJlZCB0byBtYWtlIEFQSSBjYWxscywgb3IgaW1wbGVtZW50IEFQSSBzZXJ2ZXJzLgoKVGhlIGNvZGUgaXMgZ2VuZXJhdGVkIGF0IGJ1aWxkLXRpbWUsIHNvIGl0J3MgYWx3YXlzIGluIHN5bmMgd2l0aCB0aGUgT3BlbkFQSSBkb2N1bWVudCBhbmQgZG9lc24ndCBuZWVkIHRvIGJlIGNvbW1pdHRlZCB0byB5b3VyIHNvdXJjZSByZXBvc2l0b3J5LgoKIyMgRmVhdHVyZXMKCi0gV29ya3Mgd2l0aCBPcGVuQVBJIFNwZWNpZmljYXRpb24gdmVyc2lvbnMgMy4wIGFuZCAzLjEgYW5kIGhhcyBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciB2ZXJzaW9uIDMuMi4KLSBTdHJlYW1pbmcgcmVxdWVzdCBhbmQgcmVzcG9uc2UgYm9kaWVzIGVuYWJsaW5nIHVzZSBjYXNlcyBzdWNoIGFzIEpTT04gZXZlbnQgc3RyZWFtcywgYW5kIGxhcmdlIHBheWxvYWRzIHdpdGhvdXQgYnVmZmVyaW5nLgotIFN1cHBvcnQgZm9yIEpTT04sIG11bHRpcGFydCwgVVJMLWVuY29kZWQgZm9ybSwgYmFzZTY0LCBwbGFpbiB0ZXh0LCBhbmQgcmF3IGJ5dGVzLCByZXByZXNlbnRlZCBhcyB2YWx1ZSB0eXBlcyB3aXRoIHR5cGUtc2FmZSBwcm9wZXJ0aWVzLgotIENsaWVudCwgc2VydmVyLCBhbmQgbWlkZGxld2FyZSBhYnN0cmFjdGlvbnMsIGRlY291cGxpbmcgdGhlIGdlbmVyYXRlZCBjb2RlIGZyb20gdGhlIEhUVFAgY2xpZW50IGxpYnJhcnkgYW5kIHdlYiBmcmFtZXdvcmsuCgpUbyBzZWUgdGhlc2UgZmVhdHVyZXMgaW4gYWN0aW9uLCBjaGVjayBvdXQgdGhlIGxpc3Qgb2YgW2V4YW1wbGUgcHJvamVjdHNdW2V4YW1wbGVzLWdlbmVyYXRvcl0uCgojIyBVc2FnZQoKU3dpZnQgT3BlbkFQSSBHZW5lcmF0b3IgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgQVBJIGNsaWVudHMgYW5kIHNlcnZlciBzdHVicy4KCkJlbG93IHlvdSBjYW4gc2VlIHNvbWUgZXhhbXBsZSBjb2RlLCBvciB5b3UgY2FuIGZvbGxvdyBvbmUgb2YgdGhlIFtzdGVwLWJ5LXN0ZXAgdHV0b3JpYWxzXVt0dXRvcmlhbHMtZ2VuZXJhdG9yXS4KCiMjIyBVc2luZyBhIGdlbmVyYXRlZCBBUEkgY2xpZW50CgpUaGUgZ2VuZXJhdGVkIGBDbGllbnRgIHR5cGUgcHJvdmlkZXMgYSBtZXRob2QgZm9yIGVhY2ggSFRUUCBvcGVyYXRpb24gZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudFteZXhhbXBsZS1vcGVuYXBpLXlhbWxdIGFuZCBjYW4gYmUgdXNlZCB3aXRoIGFueSBIVFRQIGxpYnJhcnkgdGhhdCBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgQ2xpZW50VHJhbnNwb3J0YC4KCmBgYHN3aWZ0CmltcG9ydCBPcGVuQVBJVVJMU2Vzc2lvbgppbXBvcnQgRm91bmRhdGlvbgoKbGV0IGNsaWVudCA9IENsaWVudCgKICAgIHNlcnZlclVSTDogVVJMKHN0cmluZzogImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkiKSEsCiAgICB0cmFuc3BvcnQ6IFVSTFNlc3Npb25UcmFuc3BvcnQoKQopCmxldCByZXNwb25zZSA9IHRyeSBhd2FpdCBjbGllbnQuZ2V0R3JlZXRpbmcoKQpwcmludCh0cnkgcmVzcG9uc2Uub2suYm9keS5qc29uLm1lc3NhZ2UpCmBgYAoKIyMjIFVzaW5nIGdlbmVyYXRlZCBBUEkgc2VydmVyIHN0dWJzCgpUbyBpbXBsZW1lbnQgYSBzZXJ2ZXIsIGRlZmluZSBhIHR5cGUgdGhhdCBjb25mb3JtcyB0byB0aGUgZ2VuZXJhdGVkIGBBUElQcm90b2NvbGAsIHByb3ZpZGluZyBhIG1ldGhvZCBmb3IgZWFjaCBIVFRQIG9wZXJhdGlvbiBkZWZpbmVkIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50W15leGFtcGxlLW9wZW5hcGkteWFtbF0uCgpUaGUgc2VydmVyIGNhbiBiZSB1c2VkIHdpdGggYW55IHdlYiBmcmFtZXdvcmsgdGhhdCBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgU2VydmVyVHJhbnNwb3J0YCwgd2hpY2ggYWxsb3dzIHlvdSB0byByZWdpc3RlciB5b3VyIEFQSSBoYW5kbGVycyB3aXRoIHRoZSBIVFRQIHNlcnZlci4KCmBgYHN3aWZ0CmltcG9ydCBPcGVuQVBJUnVudGltZQppbXBvcnQgT3BlbkFQSVZhcG9yCmltcG9ydCBWYXBvcgoKc3RydWN0IEhhbmRsZXI6IEFQSVByb3RvY29sIHsKICAgIGZ1bmMgZ2V0R3JlZXRpbmcoXyBpbnB1dDogT3BlcmF0aW9ucy5HZXRHcmVldGluZy5JbnB1dCkgYXN5bmMgdGhyb3dzIC0+IE9wZXJhdGlvbnMuR2V0R3JlZXRpbmcuT3V0cHV0IHsKICAgICAgICBsZXQgbmFtZSA9IGlucHV0LnF1ZXJ5Lm5hbWUgPz8gIlN0cmFuZ2VyIgogICAgICAgIHJldHVybiAub2soLmluaXQoYm9keTogLmpzb24oLmluaXQobWVzc2FnZTogIkhlbGxvLCBcKG5hbWUpISIpKSkpCiAgICB9Cn0KCkBtYWluIHN0cnVjdCBIZWxsb1dvcmxkVmFwb3JTZXJ2ZXIgewogICAgc3RhdGljIGZ1bmMgbWFpbigpIGFzeW5jIHRocm93cyB7CiAgICAgICAgbGV0IGFwcCA9IHRyeSBhd2FpdCBBcHBsaWNhdGlvbi5tYWtlKCkKICAgICAgICBsZXQgdHJhbnNwb3J0ID0gVmFwb3JUcmFuc3BvcnQocm91dGVzQnVpbGRlcjogYXBwKQogICAgICAgIGxldCBoYW5kbGVyID0gSGFuZGxlcigpCiAgICAgICAgdHJ5IGhhbmRsZXIucmVnaXN0ZXJIYW5kbGVycyhvbjogdHJhbnNwb3J0LCBzZXJ2ZXJVUkw6IFVSTChzdHJpbmc6ICIvYXBpIikhKQogICAgICAgIHRyeSBhd2FpdCBhcHAuZXhlY3V0ZSgpCiAgICB9Cn0KYGBgCgojIyBQYWNrYWdlIGVjb3N5c3RlbQoKVGhlIFN3aWZ0IE9wZW5BUEkgR2VuZXJhdG9yIHByb2plY3QgaXMgc3BsaXQgYWNyb3NzIG11bHRpcGxlIHJlcG9zaXRvcmllcyB0byBlbmFibGUgZXh0ZW5zaWJpbGl0eSBhbmQgbWluaW1pemUgZGVwZW5kZW5jaWVzIGluIHlvdXIgcHJvamVjdC4KCnwgUmVwb3NpdG9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFthcHBsZS9zd2lmdC1vcGVuYXBpLWdlbmVyYXRvcl1bcmVwby1nZW5lcmF0b3JdICAgICAgICAgICAgfCBTd2lmdCBwYWNrYWdlIHBsdWdpbiBhbmQgQ0xJICAgICAgICAgICAgICAgICAgICAgICB8CnwgW2FwcGxlL3N3aWZ0LW9wZW5hcGktcnVudGltZV1bcmVwby1ydW50aW1lXSAgICAgICAgICAgICAgICB8IFJ1bnRpbWUgbGlicmFyeSB1c2VkIGJ5IHRoZSBnZW5lcmF0ZWQgY29kZSAgICAgICAgIHwKfCBbYXBwbGUvc3dpZnQtb3BlbmFwaS11cmxzZXNzaW9uXVtyZXBvLXVybHNlc3Npb25dICAgICAgICAgIHwgYENsaWVudFRyYW5zcG9ydGAgdXNpbmcgW1VSTFNlc3Npb25dW3VybHNlc3Npb25dICAgfAp8IFtzd2lmdC1zZXJ2ZXIvc3dpZnQtb3BlbmFwaS1hc3luYy1odHRwLWNsaWVudF1bcmVwby1haGNdICAgfCBgQ2xpZW50VHJhbnNwb3J0YCB1c2luZyBbQXN5bmNIVFRQQ2xpZW50XVthaGNdICAgICB8CnwgW3ZhcG9yL3N3aWZ0LW9wZW5hcGktdmFwb3JdW3JlcG8tdmFwb3JdICAgICAgICAgICAgICAgICAgICB8IGBTZXJ2ZXJUcmFuc3BvcnRgIHVzaW5nIFtWYXBvcl1bdmFwb3JdICAgICAgICAgICAgIHwKfCBbaHVtbWluZ2JpcmQtcHJvamVjdC9zd2lmdC1vcGVuYXBpLWh1bW1pbmdiaXJkXVtyZXBvLWhiXSAgIHwgYFNlcnZlclRyYW5zcG9ydGAgdXNpbmcgW0h1bW1pbmdiaXJkXVtoYl0gICAgICAgICAgfAp8IFthd3NsYWJzL3N3aWZ0LW9wZW5hcGktbGFtYmRhXVtyZXBvLWxhbWJkYV0gICAgICAgICAgICAgICAgfCBgU2VydmVyVHJhbnNwb3J0YCB1c2luZyBbQVdTIExhbWJkYV1bbGFtYmRhXSAgICAgICB8CgojIyBSZXF1aXJlbWVudHMgYW5kIHN1cHBvcnRlZCBmZWF0dXJlcwoKfCBHZW5lcmF0b3IgdmVyc2lvbnMgfCBTdXBwb3J0ZWQgT3BlbkFQSSB2ZXJzaW9ucyAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgYDEuMC4wYCAuLi4gYG1haW5gIHwgMy4wLCAzLjEsIDMuMiAocHJlbGltaW5hcnkpIHwKClNlZSBhbHNvIFtTdXBwb3J0ZWQgT3BlbkFQSSBmZWF0dXJlc11bc3VwcG9ydGVkLW9wZW5hcGktZmVhdHVyZXNdLgoKIyMjIFN1cHBvcnRlZCBwbGF0Zm9ybXMgYW5kIG1pbmltdW0gdmVyc2lvbnMKClRoZSBnZW5lcmF0b3IgaXMgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQgYW5kIGlzIHN1cHBvcnRlZCBvbiBtYWNPUywgTGludXgsIGFuZCBXaW5kb3dzLgoKVGhlIGdlbmVyYXRlZCBjb2RlLCBydW50aW1lIGxpYnJhcnksIGFuZCB0cmFuc3BvcnRzIGFyZSBzdXBwb3J0ZWQgb24gbW9yZQpwbGF0Zm9ybXMsIGxpc3RlZCBiZWxvdy4KCnwgQ29tcG9uZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtYWNPUyAgICAgfCBMaW51eCwgV2luZG93cyB8IGlPUyAgICB8IHR2T1MgICB8IHdhdGNoT1MgfCB2aXNpb25PUyB8IEFuZHJvaWQgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06IHwgOi0tLSAgICAgIHwgOi0tLS0tLS0tLS0tLSAgfCA6LSAgICAgfCA6LS0gICAgfCA6LS0tLS0gIHwgOi0tLS0tLSAgfCA6LS0tLS0tIHwKfCBHZW5lcmF0b3IgcGx1Z2luIGFuZCBDTEkgICAgICAgICAgICB8IOKchSAxMC4xNSsgfCDinIUgICAgICAgICAgICAgIHwg4pyW77iPICAgICB8IOKclu+4jyAgICAgfCDinJbvuI8gICAgICB8IOKclu+4jyAgICAgICAgfCDinJbvuI8gICAgICB8CnwgR2VuZXJhdGVkIGNvZGUgYW5kIHJ1bnRpbWUgbGlicmFyeSAgfCDinIUgMTAuMTUrIHwg4pyFICAgICAgICAgICAgICB8IOKchSAxMysgfCDinIUgMTMrIHwg4pyFIDYrICAgfCDinIUgMSsgICAgIHwg4pyFICAgICAgfAoKIyMgRG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZSBwcm9qZWN0cwoKVG8gZ2V0IHN0YXJ0ZWQsIGNoZWNrIG91dCB0aGUgW2RvY3VtZW50YXRpb25dW2RvY3MtZ2VuZXJhdG9yXSwgd2hpY2ggY29udGFpbnMKW3N0ZXAtYnktc3RlcCB0dXRvcmlhbHNdW3R1dG9yaWFscy1nZW5lcmF0b3JdLgoKWW91IGNhbiBhbHNvIGV4cGVyaW1lbnQgd2l0aCBbZXhhbXBsZSBwcm9qZWN0c11bZXhhbXBsZXMtZ2VuZXJhdG9yXSB0aGF0IHVzZQpTd2lmdCBPcGVuQVBJIEdlbmVyYXRvciBhbmQgaW50ZWdyYXRlIHdpdGggb3RoZXIgcGFja2FnZXMgaW4gdGhlIGVjb3N5c3RlbS4KCk9yIGlmIHlvdSBwcmVmZXIgdG8gd2F0Y2ggYSB2aWRlbywgY2hlY2sgb3V0IFtNZWV0IFN3aWZ0IE9wZW5BUEkKR2VuZXJhdG9yXShodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vd3dkYzIzLzEwMTcxKSBmcm9tIFdXREMyMy4KCltvcGVuYXBpXTogaHR0cHM6Ly9vcGVuYXBpcy5vcmcKW3JlcG8tZ2VuZXJhdG9yXTogaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL3N3aWZ0LW9wZW5hcGktZ2VuZXJhdG9yCltkb2NzLWdlbmVyYXRvcl06IGh0dHBzOi8vc3dpZnRwYWNrYWdlaW5kZXguY29tL2FwcGxlL3N3aWZ0LW9wZW5hcGktZ2VuZXJhdG9yL2RvY3VtZW50YXRpb24KW3R1dG9yaWFscy1nZW5lcmF0b3JdOiBodHRwczovL3N3aWZ0cGFja2FnZWluZGV4LmNvbS9hcHBsZS9zd2lmdC1vcGVuYXBpLWdlbmVyYXRvci90dXRvcmlhbHMvc3dpZnQtb3BlbmFwaS1nZW5lcmF0b3IKW3N1cHBvcnRlZC1vcGVuYXBpLWZlYXR1cmVzXTogaHR0cHM6Ly9zd2lmdHBhY2thZ2VpbmRleC5jb20vYXBwbGUvc3dpZnQtb3BlbmFwaS1nZW5lcmF0b3IvZG9jdW1lbnRhdGlvbi9zd2lmdC1vcGVuYXBpLWdlbmVyYXRvci9zdXBwb3J0ZWQtb3BlbmFwaS1mZWF0dXJlcwpbZXhhbXBsZXMtZ2VuZXJhdG9yXTogaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL3N3aWZ0LW9wZW5hcGktZ2VuZXJhdG9yL2Jsb2IvbWFpbi9FeGFtcGxlcy9SRUFETUUubWQKW3JlcG8tcnVudGltZV06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9zd2lmdC1vcGVuYXBpLXJ1bnRpbWUKW3JlcG8tdXJsc2Vzc2lvbl06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9zd2lmdC1vcGVuYXBpLXVybHNlc3Npb24KW3VybHNlc3Npb25dOiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi9mb3VuZGF0aW9uL3VybHNlc3Npb24KW3JlcG8tYWhjXTogaHR0cHM6Ly9naXRodWIuY29tL3N3aWZ0LXNlcnZlci9zd2lmdC1vcGVuYXBpLWFzeW5jLWh0dHAtY2xpZW50ClthaGNdOiBodHRwczovL2dpdGh1Yi5jb20vc3dpZnQtc2VydmVyL2FzeW5jLWh0dHAtY2xpZW50CltyZXBvLXZhcG9yXTogaHR0cHM6Ly9naXRodWIuY29tL3ZhcG9yL3N3aWZ0LW9wZW5hcGktdmFwb3IKW3ZhcG9yXTogaHR0cHM6Ly9naXRodWIuY29tL3ZhcG9yL3ZhcG9yCltyZXBvLWhiXTogaHR0cHM6Ly9naXRodWIuY29tL2h1bW1pbmdiaXJkLXByb2plY3Qvc3dpZnQtb3BlbmFwaS1odW1taW5nYmlyZApbaGJdOiBodHRwczovL2dpdGh1Yi5jb20vaHVtbWluZ2JpcmQtcHJvamVjdC9odW1taW5nYmlyZApbcmVwby1sYW1iZGFdOiBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9zd2lmdC1vcGVuYXBpLWxhbWJkYQpbbGFtYmRhXTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvd2VsY29tZS5odG1sClteZXhhbXBsZS1vcGVuYXBpLXlhbWxdOiA8ZGV0YWlscz48c3VtbWFyeT5FeGFtcGxlIE9wZW5BUEkgZG9jdW1lbnQgKGNsaWNrIHRvIGV4cGFuZCk8L3N1bW1hcnk+CgogICAgYGBgeWFtbAogICAgb3BlbmFwaTogJzMuMS4wJwogICAgaW5mbzoKICAgICAgdGl0bGU6IEdyZWV0aW5nU2VydmljZQogICAgICB2ZXJzaW9uOiAxLjAuMAogICAgc2VydmVyczoKICAgICAgLSB1cmw6IGh0dHBzOi8vZXhhbXBsZS5jb20vYXBpCiAgICAgICAgZGVzY3JpcHRpb246IEV4YW1wbGUgc2VydmljZSBkZXBsb3ltZW50LgogICAgcGF0aHM6CiAgICAgIC9ncmVldDoKICAgICAgICBnZXQ6CiAgICAgICAgICBvcGVyYXRpb25JZDogZ2V0R3JlZXRpbmcKICAgICAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgICAgIC0gbmFtZTogbmFtZQogICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZQogICAgICAgICAgICAgIGluOiBxdWVyeQogICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBUaGUgbmFtZSB1c2VkIGluIHRoZSByZXR1cm5lZCBncmVldGluZy4KICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgICAgJzIwMCc6CiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IEEgc3VjY2VzcyByZXNwb25zZSB3aXRoIGEgZ3JlZXRpbmcuCiAgICAgICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvR3JlZXRpbmcnCiAgICBjb21wb25lbnRzOgogICAgICBzY2hlbWFzOgogICAgICAgIEdyZWV0aW5nOgogICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICBkZXNjcmlwdGlvbjogQSB2YWx1ZSB3aXRoIHRoZSBncmVldGluZyBjb250ZW50cy4KICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIG1lc3NhZ2U6CiAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdyZWV0aW5nLgogICAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgICAgIC0gbWVzc2FnZQogICAgYGBgCiAgICA8L2RldGFpbHM+Cg== readmeEtag: '"c6f2863a66c1f46cb9332a1b677a4c0e02389e6b"' readmeLastModified: Thu, 11 Dec 2025 01:51:52 GMT repositoryId: 630566794 description: Generate Swift client and server code from an OpenAPI document. created: '2023-04-20T16:50:53Z' updated: '2026-01-30T00:10:47Z' language: Swift archived: false stars: 1834 watchers: 114 forks: 153 owner: apple logo: https://avatars.githubusercontent.com/u/10639145?v=4 license: Apache-2.0 repoEtag: '"fe4e8a0ac4a0f12b4035a87291a37c4a2727e17876227007555a1c923d1c951f"' repoLastModified: Fri, 30 Jan 2026 00:10:47 GMT foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/pb33f/wiretap v3: true id: 2dbdc7a84f951a79e04f72967a3342be repositoryMetadata: base64Readme: >- IyB3aXJldGFwCgohW2xvZ29dKC5naXRodWIvd2lyZXRhcC1oZXJvLnBuZykKClshW2Rpc2NvcmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZGlzY29yZC85MjMyNTgzNjM1NDA4MTU5MTIpXShodHRwczovL2Rpc2NvcmQuZ2cveDdWQUNWdUVHUCkKWyFbR2l0SHViIGRvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvZG93bmxvYWRzL3BiMzNmL3dpcmV0YXAvdG90YWw/bGFiZWw9Z2l0aHViJTIwZG93bmxvYWRzJnN0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9naXRodWIuY29tL3BiMzNmL3dpcmV0YXAvcmVsZWFzZXMpClshW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vQHBiMzNmL3dpcmV0YXA/c3R5bGU9ZmxhdC1zcXVhcmUmbGFiZWw9bnBtJTIwZG93bmxvYWRzKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHBiMzNmL3dpcmV0YXApClshW0RvY2tlciBQdWxsc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvcHVsbHMvcGIzM2Yvd2lyZXRhcD9zdHlsZT1mbGF0LXNxdWFyZSldKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9wYjMzZi93aXJldGFwKQoKQSBsb2NhbCBhbmQgcGlwZWxpbmUgYmFzZWQgdG9vbCB0byBzbmlmZiBBUEkgcmVxdWVzdCBhbmQgcmVzcG9uc2VzIGZyb20gY2xpZW50cyBhbmQgc2VydmVycwp0byBkZXRlY3QgT3BlbkFQSSBjb250cmFjdCB2aW9sYXRpb25zIGFuZCBjb21wbGlhbmNlLgoKQSBzaGlmdCBsZWZ0IHRvb2wsIGZvciB0aG9zZSB3aG8gd2FudCB0byBrbm93IGlmIHRoZWlyIGFwcGxpY2F0aW9ucwphcmUgYWN0dWFsbHkgY29tcGxpYW50IHdpdGggYW4gQVBJLgoKPiBUaGlzIGlzIGFuIGVhcmx5IHRvb2wgYW5kIGluIGFjdGl2ZSBkZXZlbG9wbWVudCwgV2h5IG5vdCB0cnkgaXQgb3V0IGFuZCBnaXZlIHVzIHNvbWUgZmVlZGJhY2s/CgohW10oaHR0cHM6Ly9naXRodWIuY29tL3BiMzNmL3dpcmV0YXAvYmxvYi9tYWluLy5naXRodWIvYXNzZXRzL3dpcmV0YXAtcHJldmlldy5naWYpCgotLS0KIyBSZWFkIHRoZSBxdWlja3N0YXJ0IGd1aWRlCgpb8J+agCBRdWljayBTdGFydCBHdWlkZSDwn5qAXShodHRwczovL3BiMzNmLmlvL3dpcmV0YXAvcXVpY2tzdGFydC8pCgotLS0KIyBJbnN0YWxsIHdpcmV0YXAgZm9yIHlvdXIgcGxhdGZvcm0KCiMjIEluc3RhbGxpbmcgdXNpbmcgaG9tZWJyZXcKClRoZSBlYXNpZXN0IHdheSB0byBpbnN0YWxsIGB3aXJldGFwYCBpcyB0byB1c2UgKipbaG9tZWJyZXddKGh0dHBzOi8vYnJldy5zaCkqKiBpZiB5b3UncmUgb24gT1NYIG9yIExpbnV4LgoKV2UgaGF2ZSBvdXIgb3duIHRhcCBhdmFpbGFibGUgdGhhdCBnaXZlcyB0aGUgbGF0ZXN0IGFuZCBncmVhdGVzdCB2ZXJzaW9uLgoKYGBgc2hlbGwKYnJldyBpbnN0YWxsIHBiMzNmL3RhcHMvd2lyZXRhcApgYGAKCi0tLQoKIyMgSW5zdGFsbGluZyB1c2luZyBucG0gb3IgeWFybgoKQnVpbGRpbmcgYSBKYXZhU2NyaXB0IC8gVHlwZVNjcmlwdCBhcHBsaWNhdGlvbj8gTm8gcHJvYmxlbSwgZ3JhYiB5b3VyIGNvcHkgb2YgYHdpcmV0YXBgIHVzaW5nIHlvdXIgcHJlZmVyZW5jZQpvZiAqKlt5YXJuXShodHRwczovL3lhcm5wa2cuY29tLykqKiBvciAqKltucG1dKGh0dHBzOi8vbnBtanMuY29tKSoqLgoKYGBgc2hlbGwKeWFybiBhZGQgZ2xvYmFsIEBwYjMzZi93aXJldGFwCmBgYAoKb3IuLi4KCmBgYHNoZWxsCm5wbSAtaSAtZyBAcGIzM2Yvd2lyZXRhcApgYGAKCi0tLQoKIyMgSW5zdGFsbGluZyB1c2luZyBjVVJMCgpEbyB5b3Ugd2FudCB0byB1c2UgYHdpcmV0YXBgIGluIGEgbGludXggb25seSBvciBDSS9DRCBwaXBlbGluZSBvciB3b3JrZmxvdz8gT3IgeW91IGRvbid0IHdhbnQgdG8vY2FuJ3QgdXNlCmEgcGFja2FnZSBtYW5hZ2VyIGxpa2UgYnJldz8KCk5vIHByb2JsZW0uIFVzZSAqKmNVUkwqKiB0byBkb3dubG9hZCBhbmQgcnVuIG91ciBpbnN0YWxsZXIgc2NyaXB0LgoKYGBgc2hlbGwKY3VybCAtZnNTTCBodHRwczovL3BiMzNmLmlvL3dpcmV0YXAvaW5zdGFsbC5zaCB8IHNoCmBgYAoKLS0tCgojIyBJbnN0YWxsaW5nL3J1bm5pbmcgdXNpbmcgRG9ja2VyCgpMb3ZlIGNvbnRhaW5lcnM/IERvbid0IHdhbnQgdG8gaW5zdGFsbCBhbnl0aGluZz8gTm8gcHJvYmxlbSwgdXNlIG91ciBEb2NrZXIgaW1hZ2UuCgpgYGBzaGVsbApkb2NrZXIgcHVsbCBwYjMzZi93aXJldGFwCmBgYAoKYGBgCmRvY2tlciBydW4gLXAgOTA5MDo5MDkwIC1wIDkwOTE6OTA5MSAtcCA5MDkyOjkwOTIgLS1ybSAtdiAgXAogICAgJFBXRDovd29yazpydyBwYjMzZi93aXJldGFwIC11IGh0dHBzOi8vc29tZWhvc3RvdXR0aGVyZS5jb20KYGBgCgpXZSBlbmFibGUgdGhlIGZvbGxvd2luZyBkZWZhdWx0IHBvcnRzIGA5MDkwYCwgYDkwOTFgLCBhbmQgYDkwOTJgIGZvciB0aGUgZGFlbW9uLCBtb25pdG9yLCBhbmQgd2Vic29ja2V0cyB1c2VkCmJ5IFtyYW5jaF0oaHR0cHM6Ly9naXRodWIuY29tL3BiMzNmL3JhbmNoKSByZXNwZWN0aXZlbHkuCgotLS0KCiMjIEluc3RhbGxpbmcgb24gV2luZG93cwoKVG8gZ3JhYiB5b3VyIGNvcHkgb2YgYHdpcmV0YXBgIGZvciBXaW5kb3dzLCB5b3UgY2FuIHB1bGwgaXQgZnJvbSB0aGUKKipbbGF0ZXN0IHJlbGVhc2VzIG9uIGdpdGh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL3BiMzNmL3dpcmV0YXAvcmVsZWFzZXMpKioKYW5kIGRvd25sb2FkIHRoZSBXaW5kb3dzIHZlcnNpb24gZm9yIHlvdXIgQ1BVIHR5cGUuCgotLS0KCiMgUnVubmluZyB3aXJldGFwCgpUbyBnZXQgdXAgYW5kIHJ1bm5pbmcgd2l0aCB0aGUgYWJzb2x1dGUgZGVmYXVsdHMgKHdoaWNoIGlzIHRvIHNuaWZmIGFsbCB0cmFmZmljIG9uIHBvcnQgOTA5MCkKYW5kIHByb3h5IHRvIGBodHRwczovL2FwaS5wYjMzZi5jb21gIHlvdSBjYW4gcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZC4KCmBgYHNoZWxsCndpcmV0YXAgLXUgaHR0cHM6Ly9hcGkucGIzM2YuY29tCmBgYAoKIyMgQWRkaW5nIGFuIE9wZW5BUEkgY29udHJhY3QKCmBgYHNoZWxsCndpcmV0YXAgLXUgaHR0cHM6Ly9hcGkucGIzM2YuY29tIC1zIG15LW9wZW5hcGktc3BlYy55YW1sCmBgYAoKIyBEb2N1bWVudGF0aW9uCgotIPCfmoAgW1F1aWNrIFN0YXJ0XShodHRwczovL3BiMzNmLmlvL3dpcmV0YXAvcXVpY2tzdGFydC8pIPCfmoAKLSBbSW5zdGFsbGluZ10oaHR0cHM6Ly9wYjMzZi5pby93aXJldGFwL3F1aWNrc3RhcnQvKQotIFtDb25maWd1cmluZ10oaHR0cHM6Ly9wYjMzZi5pby93aXJldGFwL2NvbmZpZ3VyaW5nLykKLSBbTW9uaXRvciBVSV0oaHR0cHM6Ly9wYjMzZi5pby93aXJldGFwL21vbml0b3IvKQotIFtTZXJ2aW5nIHN0YXRpYyBjb250ZW50XShodHRwczovL3BiMzNmLmlvL3dpcmV0YXAvc3RhdGljLWNvbnRlbnQvKQotIFtHaWZ0U2hvcCBleGFtcGxlIEFQSV0oaHR0cHM6Ly9wYjMzZi5pby93aXJldGFwL2dpZnRzaG9wLWFwaS8pCi0gW0NvbnRyaWJ1dGluZ10oaHR0cHM6Ly9wYjMzZi5pby93aXJldGFwL2NvbnRyaWJ1dGluZy8pCgo= readmeEtag: '"696e61108aedfbfbb4a75332f5ed6eac2e5e3baa"' readmeLastModified: Thu, 08 Aug 2024 13:12:05 GMT repositoryId: 634974410 description: >- The world's coolest API Validation and compliance tool. Validate APIs against OpenAPI specifications and much more created: '2023-05-01T17:19:15Z' updated: '2026-01-12T10:12:50Z' language: Go archived: false stars: 205 watchers: 2 forks: 26 owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: NOASSERTION repoEtag: '"1dd4b7398834c7813447fab1a5877db102efc37187bdda6d5775fb192b735b1c"' repoLastModified: Mon, 12 Jan 2026 10:12:50 GMT category: - Testing Tools - Testing - Data Validators - Gateway foundInMaster: true name: wiretap link: https://pb33f.io/wiretap/ language: go source_description: >- Wiretap is a feature packed OpenAPI compliance testing tool. Validate that a client and server are compliant with an OpenAPI spec. Rewrite paths, inject headers, and even host a UI locally to test an OpenAPI implementation. v2: true v3_1: true - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/seriousme/openapi-schema-validator v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIHNjaGVtYSB2YWxpZGF0b3IKClshW0NJIHN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL3NlcmlvdXNtZS9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3Ivd29ya2Zsb3dzL05vZGUuanMlMjBDSS9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc2VyaW91c21lL29wZW5hcGktc2NoZW1hLXZhbGlkYXRvci9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBJTIyTm9kZS5qcytDSSUyMikKWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvZGVjb3YuaW8vZ2l0aHViL3NlcmlvdXNtZS9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3IvZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPTJMSktOR1UwTjYpXShodHRwczovL2NvZGVjb3YuaW8vZ2l0aHViL3NlcmlvdXNtZS9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3IpClshW05QTSB2ZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0BzZXJpb3VzbWUvb3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BzZXJpb3VzbWUvb3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yKQohW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vQHNlcmlvdXNtZS9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3IpClshW1Rlc3RlZCBvbiBBUElzLmd1cnVdKGh0dHBzOi8vYXBpLmFwaXMuZ3VydS9iYWRnZXMvdGVzdGVkX29uLnN2ZyldKGh0dHBzOi8vYXBpcy5ndXJ1L2Jyb3dzZS1hcGlzLykKCkEgSlNPTiBzY2hlbWEgdmFsaWRhdG9yIGZvciBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgc3BlY2lmaWNhdGlvbnMsCml0IGN1cnJlbnRseSBzdXBwb3J0czoKCi0gWzIuMF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjIuMCkKLSBbMy4wLnhdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMykKLSBbMy4xLnhdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCkKLSBbMy4yLnhdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjIuMCkKClRlc3RlZCBvbiBbb3ZlciAyLDAwMCByZWFsLXdvcmxkIEFQSXNdKGh0dHBzOi8vYXBpcy5ndXJ1KSBmcm9tIEFXUywKTWljcm9zb2Z0LCBHb29nbGUgZXRjLgoKPGEgbmFtZT0iaW5zdGFsbCI+PC9hPgoKIyMgSW5zdGFsbAoKYGBgYmFzaApucG0gaW5zdGFsbCBAc2VyaW91c21lL29wZW5hcGktc2NoZW1hLXZhbGlkYXRvcgpgYGAKCjxhIG5hbWU9IlVzYWdlIj48L2E+CgojIyBVc2FnZQoKVGhpcyBtb2R1bGUgaXMgRVNNIG9ubHksIGlmIHlvdSBuZWVkIHRvIHVzZSBjb21tb25KUyBwbGVhc2Ugc2VlIGJlbG93LgoKYGBgamF2YXNjcmlwdAovLyBFU00KaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSAiQHNlcmlvdXNtZS9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3IiOwoKY29uc29sZS5sb2coVmFsaWRhdG9yLnN1cHBvcnRlZFZlcnNpb25zLmhhcygiMy4yIikpOwovLyBwcmludHMgdHJ1ZQoKY29uc3QgdmFsaWRhdG9yID0gbmV3IFZhbGlkYXRvcigpOwpjb25zdCByZXMgPSBhd2FpdCB2YWxpZGF0b3IudmFsaWRhdGUoIi4vcGV0c3RvcmUuanNvbiIpOwpjb25zdCBzcGVjaWZpY2F0aW9uID0gdmFsaWRhdG9yLnNwZWNpZmljYXRpb247Ci8vIHNwZWNpZmljYXRpb24gbm93IGNvbnRhaW5zIGEgSmF2YXNjcmlwdCBvYmplY3QgY29udGFpbmluZyB0aGUgc3BlY2lmaWNhdGlvbgppZiAocmVzLnZhbGlkKSB7CiAgY29uc29sZS5sb2coIlNwZWNpZmljYXRpb24gbWF0Y2hlcyBzY2hlbWEgZm9yIHZlcnNpb24iLCB2YWxpZGF0b3IudmVyc2lvbik7CiAgY29uc3Qgc2NoZW1hID0gdmFsaWRhdG9yLnJlc29sdmVSZWZzKCk7CiAgLy8gc2NoZW1hIG5vdyBjb250YWlucyBhIEphdmFzY3JpcHQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRlcmVmZXJlbmNlZCBzY2hlbWEKfSBlbHNlIHsKICBjb25zb2xlLmxvZygiU3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBtYXRjaCBTY2hlbWEiKTsKICBjb25zb2xlLmxvZyhyZXMuZXJyb3JzKTsKfQpgYGAKClRoaXMgbW9kdWxlIGNhbiBiZSB1c2VkIGluIENvbW1vbkpTIGNvZGUgdmlhOgoKYGBgamF2YXNjcmlwdAovLyBDb21tb25KUwpjb25zdCB7IFZhbGlkYXRvciB9ID0gYXdhaXQgKGltcG9ydCgiQHNlcmlvdXNtZS9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3IiKSk7CmBgYAoKU2VlIGFsc28gdGhlIFt1cGdyYWRpbmcgZ3VpZGVdKFVQR1JBRElORy5tZCkgaWYgeW91IGNvbWUgZnJvbSBhIHByZXZpb3VzIG1ham9yIHZlcnNpb24uCgo8YSBuYW1lPSJDTEkiPjwvYT4KCiMjIyBDTEkgZm9yIEFQSSB2YWxpZGF0aW9uCgpSdW4gd2l0aCBnbG9iYWwgaW5zdGFsbDoKCmBgYGJhc2gKbnBtIGluc3RhbGwgQHNlcmlvdXNtZS9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3IgLWcKdmFsaWRhdGUtYXBpIDxmaWxlbmFtZT4KYGBgCgpSdW4gd2l0aG91dCBpbnN0YWxsOgoKYGBgYmFzaApucHggLXAgQHNlcmlvdXNtZS9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3IgdmFsaWRhdGUtYXBpIDxmaWxlbmFtZT4KYGBgCgpXaGVyZSBgPGZpbGVuYW1lPmAgcmVmZXJzIHRvIGEgWUFNTCBvciBKU09OIGZpbGUgY29udGFpbmluZyB0aGUgc3BlY2lmaWNhdGlvbi4KCiMjIyBDTEkgZm9yIEFQSSBidW5kbGluZwoKVG8gbWFrZSBpdCBlYXNpZXIgdG8gY29tYmluZSBtdWx0aXBsZSBZQU1MIG9yIEpTT04gZmlsZXMgaW50byBhIHNpbmdsZSBzcGVjaWZpY2F0aW9uIGZpbGUgdGhlcmUgaXMgdGhlIGBidW5kbGUtYXBpYCBjb21tYW5kLgooc2VlIHRoZSBbdmFsaWRhdGVCdW5kbGVdKCN2YWxpZGF0ZUJ1bmRsZSkgc2VjdGlvbiBiZWxvdykKCmBgYGJhc2gKbnBtIGluc3RhbGwgQHNlcmlvdXNtZS9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3IgLWcKYnVuZGxlLWFwaSA8c3BlY0ZpbGVzPiAKYGBgCgpSdW4gd2l0aG91dCBpbnN0YWxsOgoKYGBgYmFzaApucHggLXAgQHNlcmlvdXNtZS9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3IgYnVuZGxlLWFwaSA8c3BlYyBmaWxlcz4gCmBgYAoKVGhlIG91dHB1dCB3aWxsIGJlIGEgdmFsaWRhdGVkIEpTT04gc3BlY2lmaWNhdGlvbi4KT3B0aW9uczoKICAtbyAgLS1vdXRwdXQgPGZpbGVuYW1lPiAgIHRoZSBmaWxlbmFtZSB0byBzYXZlIHRoZSBvdXRwdXQgdG8sIGRlZmF1bHQgaXMgU1RET1VULgogIC10ICAtLXR5cGUgIFtKU09OfFlBTUxdICAgdGhlIG91dHB1dCBmb3JtYXQsIGRlZmF1bHQgaXMgSlNPTi4KCjxhIG5hbWU9IkFQSSI+PC9hPgoKIyMgQVBJCgotIFtgbmV3IFZhbGlkYXRvcihhanZPcHRpb25zKWBdKCNuZXdWYWxpZGF0b3IpCi0gW2A8aW5zdGFuY2U+LnZhbGlkYXRlKHNwZWNpZmljYXRpb24pYF0oI3ZhbGlkYXRlKQotIFtgPGluc3RhbmNlPi5zcGVjaWZpY2F0aW9uYF0oI3NwZWNpZmljYXRpb24pCi0gW2A8aW5zdGFuY2U+LnZlcnNpb25gXSgjdmVyc2lvbikKLSBbYDxpbnN0YW5jZT4ucmVzb2x2ZVJlZnMob3B0aW9ucylgXSgjcmVzb2x2ZVJlZnMpCi0gW2A8aW5zdGFuY2U+LmFkZFNwZWNSZWYoc3ViU3BlY2lmaWNhdGlvbiwgdXJpKWBdKCNhZGRTcGVjUmVmKQotIFtgPGluc3RhbmNlPi52YWxpZGF0ZUJ1bmRsZShbc3BlY2lmaWNhdGlvbixzdWJzcGVjaWZpY2F0aW9uLCAuLi5dKWBdKCN2YWxpZGF0ZUJ1bmRsZSkKLSBbYFZhbGlkYXRvci5zdXBwb3J0ZWRWZXJzaW9uc2BdKCNzdXBwb3J0ZWRWZXJzaW9ucykKCjxhIG5hbWU9Im5ld1ZhbGlkYXRvciI+PC9hPgoKIyMjIGBuZXcgVmFsaWRhdG9yKGFqdk9wdGlvbnMpYAoKVGhlIGNvbnN0cnVjdG9yIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYFZhbGlkYXRvcmAuIEJ5IHBhc3NpbmcgYW4gYWp2IG9wdGlvbnMKb2JqZWN0IGl0IGlzIHBvc3NpYmxlIHRvIGluZmx1ZW5jZSB0aGUgYmVoYXZpb3Igb2YgdGhlCltBSlYgc2NoZW1hIHZhbGlkYXRvcl0oaHR0cHM6Ly9hanYuanMub3JnLykuIEFKViBmYWlscyB0byBwcm9jZXNzIHRoZSBvcGVuQXBpCnNjaGVtYXMgaWYgeW91IHNldCBgc3RyaWN0OnRydWVgIHRoZXJlZm9yZSB0aGlzIHNldCB0byBgZmFsc2VgIGlmIHByZXNlbnQuIFRoaXMKaXMgbm90IGEgYnVnIGJ1dCBhIHJlc3VsdCBvZiB0aGUgY29tcGxleGl0eSBvZiB0aGUgb3BlbkFwaSBKU09OIHNjaGVtYXMuCgo8YSBuYW1lPSJ2YWxpZGF0ZSI+PC9hPgoKIyMjIGA8aW5zdGFuY2U+LnZhbGlkYXRlKHNwZWNpZmljYXRpb24pYAoKVGhpcyBmdW5jdGlvbiB0cmllcyB0byB2YWxpZGF0ZSBhIHNwZWNpZmljYXRpb24gYWdhaW5zdCB0aGUgT3BlbkFwaSBzY2hlbWFzLgpgc3BlY2lmaWNhdGlvbmAgY2FuIGJlIG9uZSBvZjoKCi0gYSBKU09OIG9iamVjdAotIGEgSlNPTiBvYmplY3QgZW5jb2RlZCBhcyBzdHJpbmcKLSBhIFlBTUwgc3RyaW5nCi0gYSBmaWxlbmFtZQoKRXh0ZXJuYWwgcmVmZXJlbmNlcyBhcmUgX25vdF8gYXV0b21hdGljYWxseSByZXNvbHZlZCBzbyB5b3UgbmVlZCB0byBpbmxpbmUgdGhlbQp5b3Vyc2VsZiBpZiByZXF1aXJlZCBlLmcgYnkgdXNpbmcgYDxpbnN0YW5jZT4uYWRkU3BlY1JlZigpYCBUaGUgcmVzdWx0IGlzIGFuCm9iamVjdDoKCmBgYAp7CiAgdmFsaWQ6IDxib29sZWFuPiwKICBlcnJvcnM6IDxhbnk+ICAvLyBvbmx5IHByZXNlbnQgaWYgdmFsaWQgaXMgZmFsc2UKfQpgYGAKCjxhIG5hbWU9InNwZWNpZmljYXRpb24iPjwvYT4KCiMjIyBgPGluc3RhbmNlPi5zcGVjaWZpY2F0aW9uYAoKSWYgdGhlIHZhbGlkYXRvciBtYW5hZ2VkIHRvIGV4dHJhY3QgZGF0YSBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uIHBhcmFtZXRlciB0aGVuCnRoZSBleHRyYWN0ZWQgc3BlY2lmaWNhdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhpcyBwcm9wZXJ0eSBhcyBqYXZhc2NyaXB0IG9iamVjdC4KRS5nLiBpZiB5b3Ugc3VwcGxpZWQgYSBmaWxlbmFtZSBvZiBhIFlBTUwgZmlsZSBhbmQgdGhlIGZpbGUgd2FzIHN1Y2Nlc3NmdWxseSByZWFkCmFuZCBpdHMgWUFNTCBkZWNvZGVkIHRoZW4gdGhlIGNvbnRlbnRzIGlzIGhlcmUuIEV2ZW4gaWYgdmFsaWRhdGlvbiBmYWlsZWQuCgo8YSBuYW1lPSJ2ZXJzaW9uIj48L2E+CgojIyMgYDxpbnN0YW5jZT4udmVyc2lvbmAKCklmIHZhbGlkYXRpb24gaXMgc3VjY2Vzc2Z1bCB0aGlzIHdpbGwgcmV0dXJuIHRoZSBvcGVuQXBpIHZlcnNpb24gZm91bmQgZS5nLgooIjIuMCIsIjMuMCIsIjMuMSIsIjMuMiIpLiBUaGUgb3BlbkFwaSBzcGVjaWZpY2F0aW9uIG9ubHkgc3BlY2lmaWVzIG1ham9yL21pbm9yCnZlcnNpb25zIGFzIHNlcGFyYXRlIHNjaGVtYXMuIFNvICIzLjAuMyIgcmVzdWx0cyBpbiAiMy4wIi4KCjxhIG5hbWU9InJlc29sdmVSZWZzIj48L2E+CgojIyMgYDxpbnN0YW5jZT4ucmVzb2x2ZVJlZnMob3B0aW9ucylgCgpUaGlzIGZ1bmN0aW9uIHRyaWVzIHRvIHJlc29sdmUgYWxsIGludGVybmFsIHJlZmVyZW5jZXMuIEV4dGVybmFsIHJlZmVyZW5jZXMgYXJlCl9ub3RfIGF1dG9tYXRpY2FsbHkgcmVzb2x2ZWQgc28geW91IG5lZWQgdG8gaW5saW5lIHRoZW0geW91cnNlbGYgaWYgcmVxdWlyZWQgZS5nCmJ5IHVzaW5nIGA8aW5zdGFuY2U+LmFkZFNwZWNSZWYoKWAuIEJ5IGRlZmF1bHQgaXQgd2lsbCB1c2UgdGhlIGxhc3QKc3BlY2lmaWNhdGlvbiBwYXNzZWQgdG8gYDxpbnN0YW5jZT4udmFsaWRhdGUoKWAgYnV0IHlvdSBjYW4gZXhwbGljaXRseSBwYXNzIGEKc3BlY2lmaWNhdGlvbiBieSBwYXNzaW5nIGB7c3BlY2lmaWNhdGlvbjo8b2JqZWN0Pn1gIGFzIG9wdGlvbnMuIFRoZSByZXN1bHQgaXMgYW4KYG9iamVjdGAgd2hlcmUgYWxsIHJlZmVyZW5jZXMgaGF2ZSBiZWVuIHJlc29sdmVkLiBSZXNvbHV0aW9uIG9mIHJlZmVyZW5jZXMgaXMKYHNoYWxsb3dgIFRoaXMgc2hvdWxkIG5vcm1hbGx5IG5vdCBiZSBhIHByb2JsZW0gZm9yIHRoaXMgdXNlIGNhc2UuCgo8YSBuYW1lPSJhZGRTcGVjUmVmIj48L2E+CgojIyMgYDxpbnN0YW5jZT4uYWRkU3BlY1JlZihzdWJTcGVjaWZpY2F0aW9uLCB1cmkpYAoKYHN1YlNwZWNpZmljYXRpb25gIGNhbiBiZSBvbmUgb2Y6CgotIGEgSlNPTiBvYmplY3QKLSBhIEpTT04gb2JqZWN0IGVuY29kZWQgYXMgc3RyaW5nCi0gYSBZQU1MIHN0cmluZwotIGEgZmlsZW5hbWUKCmB1cmlgIG11c3QgYmUgYSBzdHJpbmcgKGUuZy4gYGh0dHA6Ly93d3cuZXhhbXBsZS5jb20vc3Vic3BlY2ApLCBidXQKICBpcyBub3QgcmVxdWlyZWQgaWYgdGhlIHN1YlNwZWNpZmljYXRpb24gaG9sZHMgYSBgJGlkYCBhdHRyaWJ1dGUgYXQgdG9wIGxldmVsLgogIElmIHlvdSBzcGVjaWZ5IGEgdmFsdWUgZm9yIGB1cmlgIGl0IHdpbGwgb3ZlcndyaXRlIHRoZSBkZWZpbml0aW9uIGluIHRoZSBgJGlkYAogIGF0dHJpYnV0ZSBhdCB0b3AgbGV2ZWwuCgpTb21ldGltZXMgYSBzcGVjaWZpY2F0aW9uIGlzIGNvbXBvc2VkIG9mIG11bHRpcGxlIGZpbGVzIHRoYXQgZWFjaCBjb250YWluIHBhcnRzCm9mIHRoZSBzcGVjaWZpY2F0aW9uLiBUaGUgc3BlY2lmaWNhdGlvbiByZWZlcnMgdG8gdGhlc2Ugc3ViIHNwZWNpZmljYXRpb25zIHVzaW5nCmBleHRlcm5hbCByZWZlcmVuY2VzYC4gU2luY2UgcmVmZXJlbmNlcyBhcmUgYmFzZWQgb24gVVJJJ3MgKHNvIGBJZGVudGlmaWVyYCBhbmQgbm90CmBMb2NhdGlvbmAgYXMgaW4gVVJMJ3MhKSB0aGVyZSBuZWVkcyB0byBiZSBhIHdheSB0byB0ZWxsIHRoZSB2YWxpZGF0b3IgaG93IHRvCnJlc29sdmUgdGhvc2UgcmVmZXJlbmNlcy4gVGhpcyBpcyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGNvbWVzIGluOgoKRS5nLjogd2UgaGF2ZSBhIG1haW4gc3BlY2lmaWNhdGlvbiBpbiBgbWFpbi1zcGVjLnlhbWxgIGNvbnRhaW5pbmc6CgpgYGB5YW1sCi4uLgpwYXRoczoKICAvcGV0OgogICAgcG9zdDoKICAgICAgdGFnczoKICAgICAgICAtIHBldAogICAgICBzdW1tYXJ5OiBBZGQgYSBuZXcgcGV0IHRvIHRoZSBzdG9yZQogICAgICBkZXNjcmlwdGlvbjogJycKICAgICAgb3BlcmF0aW9uSWQ6IGFkZFBldAogICAgICByZXNwb25zZXM6CiAgICAgICAgJzQwNSc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogSW52YWxpZCBpbnB1dAogICAgICByZXF1ZXN0Qm9keToKICAgICAgICAkcmVmOiAnaHR0cDovL3d3dy5leGFtcGxlLmNvbS9zdWJzcGVjIy9jb21wb25lbnRzL3JlcXVlc3RCb2RpZXMvUGV0JwpgYGAKCkFuZCB0aGUgcmVmZXJlbmNlIGlzIGluIGBzdWItc3BlYy55YW1sYCwgY29udGFpbmluZzoKCmBgYHlhbWwKY29tcG9uZW50czoKICByZXF1ZXN0Qm9kaWVzOgogICAgUGV0OgogICAgICBjb250ZW50OgogICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXQnCiAgICAgICAgYXBwbGljYXRpb24veG1sOgogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0JwogICAgICBkZXNjcmlwdGlvbjogUGV0IG9iamVjdCB0aGF0IG5lZWRzIHRvIGJlIGFkZGVkIHRvIHRoZSBzdG9yZQogICAgICByZXF1aXJlZDogdHJ1ZQogIC4uLgpgYGAKClRoZW4gdGhlIHZhbGlkYXRpb24gY2FuIGJlIHBlcmZvcm1lZCBhcyBmb2xsb3dzOgoKYGBgamF2YXNjcmlwdAppbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tICJAc2VyaW91c21lL29wZW5hcGktc2NoZW1hLXZhbGlkYXRvciI7CmNvbnN0IHZhbGlkYXRvciA9IG5ldyBWYWxpZGF0b3IoKTsKYXdhaXQgdmFsaWRhdG9yLmFkZFNwZWNSZWYoIi4vc3ViLXNwZWMueWFtbCIsICJodHRwOi8vd3d3LmV4YW1wbGUuY29tL3N1YnNwZWMiKTsKY29uc3QgcmVzID0gYXdhaXQgdmFsaWRhdG9yLnZhbGlkYXRlKCIuL21haW4tc3BlYy55YW1sIik7Ci8vIHJlcyBub3cgY29udGFpbnMgdGhlIHJlc3VsdHMgb2YgdGhlIHZhbGlkYXRpb24gYWNyb3NzIG1haW4tc3BlYyBhbmQgc3ViLXNwZWMKY29uc3Qgc3BlY2lmaWNhdGlvbiA9IHZhbGlkYXRvci5zcGVjaWZpY2F0aW9uOwovLyBzcGVjaWZpY2F0aW9uIG5vdyBjb250YWlucyBhIEphdmFzY3JpcHQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHNwZWNpZmljYXRpb24KLy8gd2l0aCB0aGUgc3Vic3BlYyBpbmxpbmVkCmBgYAoKPGEgbmFtZT0idmFsaWRhdGVCdW5kbGUiPjwvYT4KCiMjIyBgPGluc3RhbmNlPi52YWxpZGF0ZUJ1bmRsZShbc3BlY2lmaWNhdGlvbixzdWJzcGVjaWZpY2F0aW9uLCAuLi5dKWAKClRoaXMgb2ZmZXJzIGFuIGFsdGVybmF0aXZlIHRvIHRoZSBjb21iaW5hdGlvbiBvZiBgYWRkU3BlY1JlZmAgYW5kIGB2YWxpZGF0ZWAuCllvdSBjYW4gcGFzcyBhbiBhcnJheSBvZiAoc3ViKXNwZWNpZmljYXRpb25zIHdoZXJlIGVhY2ggY2FuIGJlIG9uZSBvZjoKCi0gYSBKU09OIG9iamVjdAotIGEgSlNPTiBvYmplY3QgZW5jb2RlZCBhcyBzdHJpbmcKLSBhIFlBTUwgc3RyaW5nCi0gYSBmaWxlbmFtZQoKVGhlcmUgY2FuIG9ubHkgYmUgb25lIG1haW4gc3BlY2lmaWNhdGlvbiBwcmVzZW50IChzdGFydGluZyB3aXRoIHN3YWdnZXIvb3BlbmFwaSkgYnV0IGl0IGRvZXMgbm90IGhhdmUgdG8gYmUgdGhlIGZpcnN0IG9uZS4gSWYgeW91IHByb3ZpZGUgZmlsZW5hbWVzIGFuZCB0aGUgZmlsZXMgZG8gbm90IGhhdmUgYCRpZGAgYXR0cmlidXRlcywgdGhlbiB0aGUgYCRpZGAgYXR0cmlidXRlIHdpbGwgYmUgZ2VuZXJhdGVkIGZyb20gdGhlIGZpbGVuYW1lLgoKSWYgd2UgdGFrZSB0aGUgWUFNTCBzcGVjaWZpY2F0aW9ucyBmcm9tIHRoZSBwcmV2aW91cyBleGFtcGxlIHRoZW4gdmFsaWRhdGlvbiBjYW4gYmUgcGVyZm9ybWVkIGFzIGZvbGxvd3M6CgpgYGBqYXZhc2NyaXB0CmltcG9ydCB7IFZhbGlkYXRvciB9IGZyb20gIkBzZXJpb3VzbWUvb3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yIjsKY29uc3QgdmFsaWRhdG9yID0gbmV3IFZhbGlkYXRvcigpOwpjb25zdCByZXMgPSBhd2FpdCB2YWxpZGF0b3IudmFsaWRhdGVCdW5kbGUoWyAiLi9zdWItc3BlYy55YW1sIiwgIi4vbWFpbi1zcGVjLnlhbWwiXSk7Ci8vIHJlcyBub3cgY29udGFpbnMgdGhlIHJlc3VsdHMgb2YgdGhlIHZhbGlkYXRpb24gYWNyb3NzIG1haW4tc3BlYyBhbmQgc3ViLXNwZWMKY29uc3Qgc3BlY2lmaWNhdGlvbiA9IHZhbGlkYXRvci5zcGVjaWZpY2F0aW9uOwovLyBzcGVjaWZpY2F0aW9uIG5vdyBjb250YWlucyBhIEphdmFzY3JpcHQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHNwZWNpZmljYXRpb24KLy8gd2l0aCB0aGUgc3Vic3BlYyBpbmxpbmVkCmBgYAoKPGEgbmFtZT0ic3VwcG9ydGVkVmVyc2lvbnMiPjwvYT4KCiMjIyBgVmFsaWRhdG9yLnN1cHBvcnRlZFZlcnNpb25zYAoKVGhpcyBzdGF0aWMgcHJvcGVydHkgcmV0dXJucyB0aGUgT3BlbkFwaSB2ZXJzaW9ucyBzdXBwb3J0ZWQgYnkgdGhpcyBwYWNrYWdlIGFzIGEKYFNldGAuIElmIHByZXNlbnQsIHRoZSByZXN1bHQgb2YgYDxpbnN0YW5jZT4udmVyc2lvbmAgaXMgYSBtZW1iZXIgb2YgdGhpcyBgU2V0YC4KCjxhIG5hbWU9Im5vdGVzIj48L2E+CgojIE5vdGVzCgpUaGUgW0pTT05zY2hlbWFzXSgvc2NoZW1hcy8pIGFyZSBjb3BpZWQgZnJvbSB0aGUgW09wZW5BUEkgc3BlY2lmaWNhdGlvbiBKU09Oc2NoZW1hc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vdHJlZS9naC1wYWdlcykgd2hpY2ggbWlnaHQgZGlmZmVyIGZyb20gdGhlIFtPcGVuQVBJIHNwZWNpZmljYXRpb24gSFRNTCBwYWdlc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvbGF0ZXN0Lmh0bWwpISAKSWYgeW91IGZpbmQgYSBidWcgaW4gYSBzY2hlbWEgKGUuZy4gYmVjYXVzZSBpdCBiZWhhdmVzIGRpZmZlcmVudGx5IHRoYW4gc3BlY2lmaWVkIGluIHRoZSBIVE1MKSB0aGVuIApwbGVhc2UgcmFpc2UgYW4gaXNzdWUgYXQgaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24uClNob3J0bHkgYWZ0ZXIgdGhlIHNwZWNpZmljYXRpb24gd3JpdGVycyB1cGRhdGUgdGhlaXIgc2NoZW1hIHRoZSBhdXRvbWF0aW9uIHdpbGwgcGljayBpdCB1cCAKYW5kIGluY2x1ZGUgdGhlIHVwZGF0ZWQgdmVyc2lvbiBpbiB0aGlzIG1vZHVsZS4KCjxhIG5hbWU9ImxpY2Vuc2UiPjwvYT4KCiMgTGljZW5zZQoKTGljZW5zZWQgdW5kZXIgdGhlIFtNSVQgbGljZW5zZV0oTElDRU5TRS50eHQpCg== readmeEtag: '"b4d7c96284cd0679313186812440fdaa248e90e1"' readmeLastModified: Fri, 26 Sep 2025 13:19:54 GMT repositoryId: 365588968 description: OpenApi schema validation for OpenApi versions v2, v3.0.x and v3.1.x created: '2021-05-08T18:50:37Z' updated: '2026-02-05T16:56:06Z' language: JavaScript archived: false stars: 63 watchers: 2 forks: 10 owner: seriousme logo: https://avatars.githubusercontent.com/u/3322396?v=4 license: MIT repoEtag: '"166b01cc0ce444882e86c9707bd7dba2896b10e856360b3d14d43ab849f87a09"' repoLastModified: Thu, 05 Feb 2026 16:56:06 GMT foundInMaster: true id: 983210df2c4289b2210365de0362ab66 name: openapi-schema-validator category: Description Validators link: https://www.npmjs.com/package/@seriousme/openapi-schema-validator language: Javascript source_description: OpenApi description validation v2: true v3_1: true - source: https://openapi.tools/ name: typeconv category: - Converters - Parsers link: https://github.com/grantila/typeconv/ language: typescript repository: https://github.com/grantila/typeconv/ source_description: >- typeconv is an extremely fast silver bullet type conversion utility. It converts between any of its supported types, bidirectionally. typeconv lets you convert between type systems which have core-types converters, such as JSON Schema, TypeScript, GraphQL, Open API and SureType. This package can be used as an API programatically or as an application (installed in node_modules/.bin or by using e.g. npx). v3: true id: 5a1209f6c9dd70a9f9d904b0db5924f4 repositoryMetadata: base64Readme: >- WyFbbnBtIHZlcnNpb25dW25wbS1pbWFnZV1dW25wbS11cmxdClshW2Rvd25sb2Fkc11bZG93bmxvYWRzLWltYWdlXV1bbnBtLXVybF0KWyFbYnVpbGQgc3RhdHVzXVtidWlsZC1pbWFnZV1dW2J1aWxkLXVybF0KWyFbY292ZXJhZ2Ugc3RhdHVzXVtjb3ZlcmFnZS1pbWFnZV1dW2NvdmVyYWdlLXVybF0KWyFbTm9kZS5KUyB2ZXJzaW9uXVtub2RlLXZlcnNpb25dXVtub2RlLXVybF0KCgo8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2dyYW50aWxhL3R5cGVjb252L21hc3Rlci9hc3NldHMvbG9nby5zdmciIHdpZHRoPSIxMDAlIiAvPgoKKip0eXBlY29udioqIGlzIGFuIGV4dHJlbWVseSBmYXN0ICpzaWx2ZXIgYnVsbGV0KiB0eXBlIGNvbnZlcnNpb24gdXRpbGl0eS4KCkl0IGNvbnZlcnRzIGJldHdlZW4gYW55IG9mIGl0cyBzdXBwb3J0ZWQgdHlwZXMsIGJpZGlyZWN0aW9uYWxseS4KCnR5cGVjb252IGxldHMgeW91IGNvbnZlcnQgYmV0d2VlbiB0eXBlIHN5c3RlbXMgd2hpY2ggaGF2ZSBbYGNvcmUtdHlwZXNgXVtjb3JlLXR5cGVzLWdpdGh1Yi11cmxdIGNvbnZlcnRlcnMsIHN1Y2ggYXMgSlNPTiBTY2hlbWEsIFR5cGVTY3JpcHQsIEdyYXBoUUwsIE9wZW4gQVBJIGFuZCBbU3VyZVR5cGVdW3N1cmV0eXBlLWdpdGh1Yi11cmxdLiBUaGlzIHBhY2thZ2UgY2FuIGJlIHVzZWQgYXMgYW4gQVBJIHByb2dyYW1hdGljYWxseSBvciBhcyBhbiBhcHBsaWNhdGlvbiAoaW5zdGFsbGVkIGluIGBub2RlX21vZHVsZXMvLmJpbmAgb3IgYnkgdXNpbmcgZS5nLiBbYG5weGBdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL25weCkpLgoKQnkgdGFraW5nIGFkdmFudGFnZSBvZiB0aGUgW2Bjb3JlLXR5cGVzYF1bY29yZS10eXBlcy1naXRodWItdXJsXSAoW25wbV1bY29yZS10eXBlcy1ucG0tdXJsXSkgdG9vbGJveCBmb3IgZ2VuZXJpYyB0eXBlIGhhbmRsaW5nLCB0eXBlY29udiBjYW4gY29udmVydCBhbmQgbWFpbnRhaW4gc291cmNlIGNvZGUgbG9jYXRpb24gaW5mb3JtYXRpb24sIGNvbW1lbnRzLCBkZXNjcmlwdGlvbnMgZXRjLiB3aGVuIGNvbnZlcnRpbmcgYmV0d2VlbiB0aGUgZGlmZmVyZW50IHR5cGUgc3lzdGVtcy4gSXQgaXMgdXNpbmcgdGhlIGZvbGxvd2luZyBjb252ZXJ0ZXIgcGFja2FnZXM6CiAqIFtgY29yZS10eXBlcy1qc29uLXNjaGVtYWBdW2NvcmUtdHlwZXMtanNvbi1zY2hlbWEtZ2l0aHViLXVybF0gKFtucG1dW2NvcmUtdHlwZXMtanNvbi1zY2hlbWEtbnBtLXVybF0pCiAqIFtgY29yZS10eXBlcy10c2BdW2NvcmUtdHlwZXMtdHMtZ2l0aHViLXVybF0gKFtucG1dW2NvcmUtdHlwZXMtdHMtbnBtLXVybF0pCiAqIFtgY29yZS10eXBlcy1ncmFwaHFsYF1bY29yZS10eXBlcy1ncmFwaHFsLWdpdGh1Yi11cmxdIChbbnBtXVtjb3JlLXR5cGVzLWdyYXBocWwtbnBtLXVybF0pCiAqIFtgY29yZS10eXBlcy1zdXJldHlwZWBdW2NvcmUtdHlwZXMtc3VyZXR5cGUtZ2l0aHViLXVybF0gKFtucG1dW2NvcmUtdHlwZXMtc3VyZXR5cGUtbnBtLXVybF0pCgpUaGVzZSB0eXBlIHN5c3RlbXMgZG9uJ3Qgc2hhcmUgdGhlIHNhbWUgc2V0IG9mIHR5cGVzIGFuZCBjb25zdHJhaW50cy4gRm9yIGV4YW1wbGUsIEpTT04gU2NoZW1hIGhhcyAqdmFsdWUqIGNvbnN0cmFpbnRzIChsaWtlICoiYSBzdHJpbmcgbXVzdCBiZSBsb25nZXIgdGhhbiA1IGNoYXJhY3RlcnMqIikgYW5kIEdyYXBoUUwgZG9lc24ndCBoYXZlIGBudWxsYCBvciBrZXktdmFsdWUgb2JqZWN0cyBhcyBhIGZpcnN0LWNsYXNzIHR5cGUuIENvbnZlcnRpb25zIHdpbGwgdGhlcmVmb3JlIHByb2R1Y2UgdGhlIHNtYWxsZXN0IGNvbW1vbiBkZW5vbWluYXRvciBvZiB0eXBlIGluZm9ybWF0aW9uLCBidXQgc3RpbGwgYmUgdmVyeSB1c2VmdWwuIFNlZSBbYGNvcmUtdHlwZXNgXVtjb3JlLXR5cGVzLWdpdGh1Yi11cmxdIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGl0cyBzdXBwb3J0ZWQgdHlwZXMsIGFuZCB3aHkgbm90IGltcGxlbWVudCBhIG5ldyBjb252ZXJzaW9uIHBhY2thZ2UgeW91cnNlbGYhCgoKIyBUTDtEUiBDTEkKCkNvbnZlcnQgZmlsZXMgZnJvbSBUeXBlU2NyaXB0ICgqInRzIiopIHRvIEdyYXBoUUwgKCoiZ3FsIiopLCBwdXQgdGhlIGdlbmVyYXRlZCBmaWxlcyBpbiB0aGUgYGdxbC1zY2hlbWFzYCBkaXJlY3RvcnkgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHN0cnVjdHVyZSBhcyB0aGUgc291cmNlIGZpbGVzOgoKYGBgenNoCiQgdHlwZWNvbnYgLWYgdHMgLXQgZ3FsIC1vIGdxbC1zY2hlbWFzICd0eXBlcy8qKi8qLnRzJwpgYGAKClRoaXMgZ2VuZXJhdGVzIGBncWwtc2NoZW1hcy8qLmdyYXBocWxgIGZvciBlYWNoIGAudHNgIGZpbGUgaW4gYHR5cGVzL2AgKGFuZCBzdWItZGlyZWN0b3JpZXMpLgoKKk5vdGUgdGhhdCB3aGVuIHVzaW5nIGdsb2IgcGF0dGVybnMsIHB1dCB0aGVtIGluIHF1b3RlcyB0byBub3QgaGF2ZSB0aGUgc2hlbGwgdHJ5IHRvIGV4cGFuZCB0aGUgcGF0dGVybiAtIHR5cGVjb252IHdpbGwgZG8gaXQgYSBsb3QgYmV0dGVyISoKCgojIyBTdXJlVHlwZQoKV2hlbiBjb252ZXJ0aW5nICpmcm9tKiBTdXJlVHlwZSwgdHlwZWNvbnYgd2lsbCBleHRyYWN0IGFsbCAqZXhwb3J0ZWQqIHZhbGlkYXRvcnMuCgoKIyMgVmVyc2lvbnMKClNpbmNlIHYyOgogKiBUaGUgcGFja2FnZSBpcyBhIHB1cmUgRVNNIG1vZHVsZSwgbm8gbW9yZSBDb21tb25KUyBzdXBwb3J0LiBUaGlzIHdpbGwgbGlrZWx5IG5vdCBhZmZlY3QgQ0xJIHVzYWdlcy4KICogTm9kZSAxMiBzdXBwb3J0IGlzIGRyb3BwZWQuCgoKIyBDb250ZW50cwoKICogW0NvbnZlcnNpb24gZXhhbXBsZV0oI2NvbnZlcnNpb24tZXhhbXBsZSkKICogW1VzYWdlXSgjdXNhZ2UpCiAgICogW0NvbW1hbmQgbGluZV0oI2NvbW1hbmQtbGluZSkKICAgKiBbQXMgQVBJXSgjYXMtYXBpKQogICAgICogW0pTT04gU2NoZW1hXSgjanNvbi1zY2hlbWEpCiAgICAgKiBbT3BlbiBBUEldKCNvcGVuLWFwaSkKICAgICAqIFtUeXBlU2NyaXB0XSgjdHlwZXNjcmlwdCkKICAgICAqIFtHcmFwaFFMXSgjZ3JhcGhxbCkKICAgICAqIFtTdXJlVHlwZV0oI3N1cmV0eXBlKQoKCiMgQ29udmVyc2lvbiBleGFtcGxlCgo8ZGV0YWlscyBzdHlsZT0icGFkZGluZy1sZWZ0OiAzMnB4O2JvcmRlci1sZWZ0OiA0cHggc29saWQgZ3JheTsiPgo8c3VtbWFyeT5Db252ZXJ0aW5nIHRoZSBmb2xsb3dpbmcgSlNPTiBTY2hlbWE6PC9zdW1tYXJ5Pgo8cD4KCmBgYGpzb24KewoJImRlZmluaXRpb25zIjogewoJCSJVc2VyIjogewoJCQkidHlwZSI6ICJvYmplY3QiLAoJCQkidGl0bGUiOiAiVXNlciB0eXBlIiwKCQkJImRlc2NyaXB0aW9uIjogIlRoaXMgdHlwZSBob2xkcyB0aGUgdXNlciBpbmZvcm1hdGlvbiwgc3VjaCBhcyBuYW1lIiwKCQkJInByb3BlcnRpZXMiOiB7ICJuYW1lIjogeyAidHlwZSI6ICJzdHJpbmciLCAidGl0bGUiOiAiVGhlIHJlYWwgbmFtZSIgfSB9LAoJCQkicmVxdWlyZWQiOiBbICJuYW1lIiBdCgkJfSwKCQkiQ2hhdExpbmUiOiB7CgkJCSJ0eXBlIjogIm9iamVjdCIsCgkJCSJ0aXRsZSI6ICJBIGNoYXQgbGluZSIsCgkJCSJwcm9wZXJ0aWVzIjogewoJCQkJInVzZXIiOiB7ICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvVXNlciIgfSwKCQkJCSJsaW5lIjogeyAidHlwZSI6ICJzdHJpbmciIH0KCQkJfSwKCQkJInJlcXVpcmVkIjogWyAidXNlciIsICJsaW5lIiBdCgkJfQoJfQp9CmBgYAoKPC9wPgo8L2RldGFpbHM+Cgo8ZGV0YWlscyBzdHlsZT0icGFkZGluZy1sZWZ0OiAzMnB4O2JvcmRlci1sZWZ0OiA0cHggc29saWQgZ3JheTsiPgo8c3VtbWFyeT4uLi4gdG8gVHlwZVNjcmlwdCB3aWxsIHByb2R1Y2U6PC9zdW1tYXJ5Pgo8cD4KCmBgYHRzCi8qVXNlciB0eXBlCgpUaGlzIHR5cGUgaG9sZHMgdGhlIHVzZXIgaW5mb3JtYXRpb24sIHN1Y2ggYXMgbmFtZSovCmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7CgkvKlRoZSByZWFsIG5hbWUqLwoJbmFtZTogc3RyaW5nOwp9CgovKkEgY2hhdCBsaW5lKi8KZXhwb3J0IGludGVyZmFjZSBDaGF0TGluZSB7Cgl1c2VyOiBVc2VyOwoJbGluZTogc3RyaW5nOwp9CmBgYAoKb3IgaWYgY29udmVydGVkIGludG8gVHlwZVNjcmlwdCBfZGVjbGFyYXRpb25zXyAoZm9yIGAuZC50c2AgZmlsZXMpLCBgZXhwb3J0IGludGVyZmFjZWAgd2lsbCBiZSBgZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlYC4KCjwvcD4KPC9kZXRhaWxzPgoKPGRldGFpbHMgc3R5bGU9InBhZGRpbmctbGVmdDogMzJweDtib3JkZXItbGVmdDogNHB4IHNvbGlkIGdyYXk7Ij4KPHN1bW1hcnk+Li4uIGFuZCB0byBHcmFwaFFMIHdpbGwgcHJvZHVjZTo8L3N1bW1hcnk+CjxwPgoKYGBgZ3JhcGhxbAoiIiIKIyBVc2VyIHR5cGUKClRoaXMgdHlwZSBob2xkcyB0aGUgdXNlciBpbmZvcm1hdGlvbiwgc3VjaCBhcyBuYW1lCiIiIgp0eXBlIFVzZXIgewoJIlRoZSByZWFsIG5hbWUiCgluYW1lOiBTdHJpbmchCn0KCiJBIGNoYXQgbGluZSIKdHlwZSBDaGF0TGluZSB7Cgl1c2VyOiBVc2VyIQoJbGluZTogU3RyaW5nIQp9CmBgYAoKPC9wPgo8L2RldGFpbHM+CgpDb252ZXJzaW9ucyBhcmUgYmktZGlyZWN0aW9uYWwsIHNvIGFueSBvZiB0aGVzZSB0eXBlIHN5c3RlbXMgY2FuIGNvbnZlcnQgdG8gYW55IG90aGVyLgoKCiMgVXNhZ2UKCgojIyBDb21tYW5kIGxpbmUKCllvdSBjYW4gZGVwZW5kIG9uIGB0eXBlY29udmAsIGFuZCBpZiBzbywgeW91J2xsIGhhdmUgYG5vZGVfbW9kdWxlcy8uYmluL3R5cGVjb252YCBpbnN0YWxsZWQuIE9yIHlvdSBydW4gaXQgd2l0aCBvbi10aGUtZmx5IGluc3RhbGxhdGlvbiB1c2luZyBgbnB4YCwgYXMgYG5weCB0eXBlY29udiBhcmdzLi4uYC4KClVzZSBgLWZgIChvciBgLS1mcm9tLXR5cGVgKSB0byBzcGVjaWZ5ICpmcm9tKiB3aGljaCB0eXBlIHN5c3RlbSB0byBjb252ZXJ0LCBhbmQgYC10YCAob3IgYC0tdG8tdHlwZWApIHRvIHNwZWNpZnkgd2hpY2ggdHlwZSBzeXN0ZW0gdG8gY29udmVydCAqdG8qLiBPdGhlciBvcHRpb25zIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSBlYWNoIGNvbmZpZ3VyYXRpb24gKGJvdGggdGhlICpmcm9tKiBhbmQgdGhlICp0byopIGFuZCB0aGVzZSBvcHRpb25zIGFyZSB1c3VhbGx5IG9ubHkgYXZhaWxhYmxlIGZvciBhIHNwZWNpZmljIHR5cGUgc3lzdGVtLgoKVGhlIHR5cGVzIHN1cHBvcnRlZCBhcmUgYGdxbGAgKEdyYXBoUUwpLCBgdHNgIChUeXBlU2NyaXB0KSwgYGpzY2AgKEpTT04gU2NoZW1hKSwgYG9hcGlgIChPcGVuIEFQSSkgYW5kIGBzdGAgKFN1cmVUeXBlKS4KCjxkZXRhaWxzIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDMycHg7Ym9yZGVyLWxlZnQ6IDRweCBzb2xpZCBncmF5OyI+CjxzdW1tYXJ5Pjxjb2RlPiQgdHlwZWNvbnYgLS1oZWxwPC9jb2RlPjwvc3VtbWFyeT4KPHA+CgpgYGAKVXNhZ2U6IHR5cGVjb252IFtvcHRpb25zXSBmaWxlIC4uLgoKICAgT3B0aW9uczoKCiAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgIFByaW50ICh0aGlzKSBoZWxwIHNjcmVlbgogICAtLXZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICBQcmludCB0aGUgcHJvZ3JhbSB2ZXJzaW9uCiAgIC12LCAtLXZlcmJvc2UgICAgICAgICAgICAgICAgICAgIFZlcmJvc2UgaW5mb3JtYXRpb25hbCBvdXRwdXQgKGRlZmF1bHQ6IGZhbHNlKQogICAtLWRyeS1ydW4gICAgICAgICAgICAgICAgICAgICAgICBQcmVwYXJlIGFuZCBwZXJmb3JtIGNvbnZlcnNpb24sIGJ1dCB3cml0ZSBubyBvdXRwdXQgKGRlZmF1bHQ6IGZhbHNlKQogICAtLShuby0paGlkZGVuICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIGhpZGRlbiBmaWxlcywgaS5lLiBmaWxlcyBpbiAuZ2l0aWdub3JlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyBiZWdpbm5pbmcgd2l0aCAnLicgYW5kIHRoZSAnLmdpdCcgZGlyZWN0b3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdDogdHJ1ZSkKICAgLWYsIC0tZnJvbS10eXBlIDx0eXBlPiAgICAgICAgICAgVHlwZSBzeXN0ZW0gdG8gY29udmVydCBmcm9tCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzICAgIFR5cGVTY3JpcHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNjICAgSlNPTiBTY2hlbWEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3FsICAgR3JhcGhRTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYXBpICBPcGVuIEFQSQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdCAgICBTdXJlVHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdCAgICBjb3JlLXR5cGVzCgogICAtdCwgLS10by10eXBlIDx0eXBlPiAgICAgICAgICAgICBUeXBlIHN5c3RlbSB0byBjb252ZXJ0IHRvCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzICAgIFR5cGVTY3JpcHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNjICAgSlNPTiBTY2hlbWEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3FsICAgR3JhcGhRTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYXBpICBPcGVuIEFQSQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdCAgICBTdXJlVHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdCAgICBjb3JlLXR5cGVzCgogICAtLShuby0pc2hvcnRjdXQgICAgICAgICAgICAgICAgICBTaG9ydGN1dCBjb252ZXJzaW9uIGlmIHBvc3NpYmxlIChieXBhc3NpbmcgY29yZS10eXBlcykuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgcG9zc2libGUgYmV0d2VlbiBTdXJlVHlwZSwgSlNPTiBTY2hlbWEgYW5kIE9wZW4gQVBJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHByZXNlcnZlIGFsbCBmZWF0dXJlcyB3aGljaCB3b3VsZCBvdGhlcndpc2UgYmUgZXJhc2VkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6IHRydWUpCiAgIC1vLCAtLW91dHB1dC1kaXJlY3RvcnkgPGRpcj4gICAgIE91dHB1dCBkaXJlY3RvcnkuIERlZmF1bHRzIHRvIHRoZSBzYW1lIGFzIHRoZSBpbnB1dCBmaWxlcy4KICAgLU8sIC0tb3V0cHV0LWV4dGVuc2lvbiA8ZXh0PiAgICAgT3V0cHV0IGZpbGVuYW1lIGV4dGVuc2lvbiB0byB1c2UuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvICd0cycvJ2QudHMnLCAnanNvbicsICd5YW1sJyBhbmQgJ2dyYXBocWwnLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgJy0nIHRvIG5vdCBzYXZlIGEgZmlsZSwgYnV0IG91dHB1dCB0byBzdGRvdXQgaW5zdGVhZC4KICAgLS0obm8tKXN0cmlwLWFubm90YXRpb25zICAgICAgICAgUmVtb3ZlcyBhbGwgYW5ub3RhdGlvbnMgKGRlc2NyaXB0aW9ucywgY29tbWVudHMsIC4uLikgKGRlZmF1bHQ6IGZhbHNlKQogICBUeXBlU2NyaXB0CiAgICAgLS0obm8tKXRzLWRlY2xhcmF0aW9uICAgICAgICAgIE91dHB1dCBUeXBlU2NyaXB0IGRlY2xhcmF0aW9ucyAoZGVmYXVsdDogZmFsc2UpCiAgICAgLS0obm8tKXRzLWRpc2FibGUtbGludC1oZWFkZXIgIE91dHB1dCBjb21tZW50cyBmb3IgZGlzYWJsaW5nIGxpbnRpbmcgKGRlZmF1bHQ6IHRydWUpCiAgICAgLS0obm8tKXRzLWRlc2NyaXB0aXZlLWhlYWRlciAgIE91dHB1dCB0aGUgaGVhZGVyIGNvbW1lbnQgKGRlZmF1bHQ6IHRydWUpCiAgICAgLS0obm8tKXRzLXVzZS11bmtub3duICAgICAgICAgIFVzZSAndW5rbm93bicgdHlwZSBpbnN0ZWFkIG9mICdhbnknIChkZWZhdWx0OiB0cnVlKQogICAgIC0tdHMtbm9uLWV4cG9ydGVkIDxtZXRob2Q+ICAgICBTdHJhdGVneSBmb3Igbm9uLWV4cG9ydGVkIHR5cGVzIChkZWZhdWx0OiBpbmNsdWRlLWlmLXJlZmVyZW5jZWQpCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwgICAgICAgICAgICAgICAgICAgRmFpbCBjb252ZXJzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSAgICAgICAgICAgICAgICAgRG9uJ3QgaW5jbHVkZSBub24tZXhwb3J0ZWQgdHlwZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbiBpZiByZWZlcmVuY2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgICAgICAgICAgICAgICAgSW5jbHVkZSBub24tZXhwb3J0ZWQgdHlwZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lICAgICAgICAgICAgICAgICBEb24ndCBpbmNsdWRlIG5vbi1leHBvcnRlZCB0eXBlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmUgdGhlbSBpZiBuZWNlc3NhcnkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lsbCBmYWlsIG9uIGN5Y2xpYyB0eXBlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlLWlmLXJlZmVyZW5jZWQgIEluY2x1ZGUgbm9uLWV4cG9ydGVkIHR5cGVzIG9ubHkgaWYgdGhleQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSByZWZlcmVuY2VkIGZyb20gZXhwb3J0ZWQgdHlwZXMKCiAgICAgLS10cy1uYW1lc3BhY2VzIDxtZXRob2Q+ICAgICAgIE5hbWVzcGFjZSBzdHJhdGVneS4gKGRlZmF1bHQ6IGlnbm9yZSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlICAgICAgICAgICBJZ25vcmUgbmFtZXNwYWNlcyBlbnRpcmVseSAoZGVmYXVsdCkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBXaGVuIGNvbnZlcnRpbmcgZnJvbSBUeXBlU2NyaXB0LCB0eXBlcyBpbiBuYW1lc3BhY2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlbid0IGV4cG9ydGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gV2hlbiBjb252ZXJ0aW5nIHRvIFR5cGVTY3JpcHQsIG5vIGF0dGVtcHQgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvbnN0cnVjdCBuYW1lc3BhY2VzIGlzIHBlcmZvcm1lZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9pc3QgICAgICAgICAgICBXaGVuIGNvbnZlcnRpbmcgZnJvbSBUeXBlU2NyaXB0LCBob2lzdCB0eXBlcyBpbnNpZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2VzIHRvIHRvcC1sZXZlbCwgc28gdGhhdCB0aGUgdHlwZXMgYXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZWQsIGJ1dCB3aXRob3V0IHRoZWlyIG5hbWVzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNhbiBjYXVzZSBjb25mbGljdHMsIGluIHdoaWNoIGNhc2UgZGVlcGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbGFyYXRpb25zIHdpbGwgYmUgZHJvcHBlZCBpbiBmYXZvciBvZiBtb3JlIHRvcC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCBkZWNsYXJhdGlvbnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gY2FzZSBvZiBzYW1lLWxldmVsIChuYW1lc3BhY2UgZGVwdGgpIGRlY2xhcmF0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIHNhbWUgbmFtZSwgb25seSBvbmUgd2lsbCBiZSBleHBvcnRlZCBpbiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uLWRldGVybWluaXN0aWMgbWFubmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QgICAgICAgICAgICAgIFdoZW4gY29udmVydGluZyBmcm9tIFR5cGVTY3JpcHQsIGpvaW4gdGhlIG5hbWVzcGFjZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGV4cG9ydGVkIHR5cGUgd2l0aCBhIGRvdCAoLikuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBjb252ZXJ0aW5nIHRvIFR5cGVTY3JpcHQsIHRyeSB0byByZWNvbnN0cnVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZXMgYnkgc3BsaXR0aW5nIHRoZSBuYW1lIG9uIGRvdCAoLikuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyc2NvcmUgICAgICAgV2hlbiBjb252ZXJ0aW5nIGZyb20gVHlwZVNjcmlwdCwgam9pbiB0aGUgbmFtZXNwYWNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgZXhwb3J0ZWQgdHlwZSB3aXRoIGFuIHVuZGVyc2NvcmUgKF8pLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gY29udmVydGluZyB0byBUeXBlU2NyaXB0LCB0cnkgdG8gcmVjb25zdHJ1Y3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2VzIGJ5IHNwbGl0dGluZyB0aGUgbmFtZSBvbiB1bmRlcnNjb3JlIChfKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb25zdHJ1Y3QtYWxsICBXaGVuIGNvbnZlcnRpbmcgdG8gVHlwZVNjcmlwdCwgdHJ5IHRvIHJlY29uc3RydWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlcyBieSBzcGxpdHRpbmcgdGhlIG5hbWUgb24gYm90aCBkb3QgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXJzY29yZS4KCiAgIEdyYXBoUUwKICAgICAtLWdxbC11bnN1cHBvcnRlZCA8bWV0aG9kPiAgICAgTWV0aG9kIHRvIHVzZSBmb3IgdW5zdXBwb3J0ZWQgdHlwZXMKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlICBJZ25vcmUgKHNraXApIHR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiAgICBJZ25vcmUgdHlwZSwgYnV0IHdhcm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgICBUaHJvdyBhbiBlcnJvcgoKICAgICAtLWdxbC1udWxsLXR5cGVuYW1lIDxuYW1lPiAgICAgQ3VzdG9tIHR5cGUgbmFtZSB0byB1c2UgZm9yIG51bGwKICAgT3BlbiBBUEkKICAgICAtLW9hcGktZm9ybWF0IDxmbXQ+ICAgICAgICAgICAgT3V0cHV0IGZvcm1hdCBmb3IgT3BlbiBBUEkgKGRlZmF1bHQ6IHlhbWwpCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gIEpTT04KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWFtbCAgWUFNTCAoJ3ltbCcgaXMgYWxzbyBhbGxvd2VkKQoKICAgICAtLW9hcGktdGl0bGUgPHRpdGxlPiAgICAgICAgICAgT3BlbiBBUEkgdGl0bGUgdG8gdXNlIGluIG91dHB1dCBkb2N1bWVudC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gdGhlIGlucHV0IGZpbGVuYW1lLgogICAgIC0tb2FwaS12ZXJzaW9uIDx2ZXJzaW9uPiAgICAgICBPcGVuIEFQSSBkb2N1bWVudCB2ZXJzaW9uIHRvIHVzZSBpbiBvdXRwdXQgZG9jdW1lbnQuIChkZWZhdWx0OiAxKQogICBTdXJlVHlwZQogICAgIC0tc3QtcmVmLW1ldGhvZCA8bWV0aG9kPiAgICAgICBTdXJlVHlwZSByZWZlcmVuY2UgZXhwb3J0IG1ldGhvZCAoZGVmYXVsdDogcHJvdmlkZWQpCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vLXJlZnMgICBEb24ndCByZWYgYW55dGhpbmcsIGlubGluZSBhbGwgdHlwZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgIFJlZmVyZW5jZSB0eXBlcyB0aGF0IGFyZSBleHBsaWNpdGx5IGV4cG9ydGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZi1hbGwgICBSZWYgYWxsIHByb3ZpZGVkIHR5cGVzIGFuZCB0aG9zZSB3aXRoIG5hbWVzCgogICAgIC0tc3QtbWlzc2luZy1yZWYgPG1ldGhvZD4gICAgICBXaGF0IHRvIGRvIHdoZW4gZGV0ZWN0aW5nIGFuIHVucmVzb2x2YWJsZSByZWZlcmVuY2UgKGRlZmF1bHQ6IHdhcm4pCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSAgSWdub3JlOyBza2lwIHR5cGUgb3IgY2FzdCB0byBhbnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiAgICBTYW1lIGFzICdpZ25vcmUnLCBidXQgd2FybgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciAgIEZhaWwgY29udmVyc2lvbgoKICAgICAtLShuby0pc3QtaW5saW5lLXR5cGVzICAgICAgICAgSW5saW5lIHByZXR0eSB0eXBlc2NyaXB0IHR5cGVzIGFzaWRlIHZhbGlkYXRvciBjb2RlIChkZWZhdWx0OiB0cnVlKQogICAgIC0tKG5vLSlzdC1leHBvcnQtdHlwZSAgICAgICAgICBFeHBvcnQgdGhlIGRlZHVjZWQgdHlwZXMgKG9yIHRoZSBwcmV0dHkgdHlwZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiAtLXN0LWlubGluZS10eXBlcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiB0cnVlKQogICAgIC0tKG5vLSlzdC1leHBvcnQtc2NoZW1hICAgICAgICBFeHBvcnQgdmFsaWRhdG9yIHNjaGVtYXMgKGRlZmF1bHQ6IGZhbHNlKQogICAgIC0tKG5vLSlzdC1leHBvcnQtdmFsaWRhdG9yICAgICBFeHBvcnQgcmVndWxhciB2YWxpZGF0b3JzIChkZWZhdWx0OiB0cnVlKQogICAgIC0tKG5vLSlzdC1leHBvcnQtZW5zdXJlciAgICAgICBFeHBvcnQgJ2Vuc3VyZXInIHZhbGlkYXRvcnMgKGRlZmF1bHQ6IHRydWUpCiAgICAgLS0obm8tKXN0LWV4cG9ydC10eXBlLWd1YXJkICAgIEV4cG9ydCB0eXBlIGd1YXJkcyAoaXMqIHZhbGlkYXRvcnMpIChkZWZhdWx0OiB0cnVlKQogICAgIC0tKG5vLSlzdC11c2UtdW5rbm93biAgICAgICAgICBVc2UgJ3Vua25vd24nIHR5cGUgaW5zdGVhZCBvZiAnYW55JyAoZGVmYXVsdDogdHJ1ZSkKICAgICAtLShuby0pc3QtZm9yd2FyZC1zY2hlbWEgICAgICAgRm9yd2FyZCB0aGUgSlNPTiBTY2hlbWEsIGFuZCBjcmVhdGUgYW4gdW50eXBlZCB2YWxpZGF0b3Igc2NoZW1hCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIHJhdyBKU09OIFNjaGVtYSB1bmRlciB0aGUgaG9vZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6IGZhbHNlKQpgYGAKCjwvcD4KPC9kZXRhaWxzPgoKCiMjIEFzIEFQSQoKVG8gY29udmVydCBmcm9tIG9uZSB0eXBlIHN5c3RlbSB0byBhbm90aGVyLCB5b3UgY3JlYXRlIGEgKnJlYWRlciogZm9yIHRoZSB0eXBlIHN5c3RlbSB0byBjb252ZXJ0ICoqZnJvbSoqIGFuZCBhICp3cml0ZXIqIGZvciB0aGUgdHlwZSBzeXN0ZW0gdG8gY29udmVydCAqKnRvKiouIFRoZSByZWFkZXJzIGFuZCB3cml0ZXJzIGZvciB0aGUgZGlmZmVyZW50IHR5cGUgc3lzdGVtcyBoYXZlIHRoZWlyIG93biBzZXQgb2Ygb3B0aW9ucy4gU29tZSBoYXZlIG5vIG9wdGlvbnMgKGxpa2UgdGhlIEpTT04gU2NoZW1hIHJlYWRlciksIHNvbWUgcmVxdWlyZSBvcHRpb25zIChsaWtlIHRoZSBPcGVuIEFQSSB3cml0ZXIpLgoKCiMjIyBtYWtlQ29udmVydGVyCgpNYWtpbmcgYSBjb252ZXJ0ZXIgaXMgZG9uZSB1c2luZyBgbWFrZUNvbnZlcnRlcihyZWFkZXIsIHdyaXRlciwgb3B0aW9ucz8pYCwgd2hpY2ggdGFrZXMgYSByZWFkZXIgYW5kIGEgd3JpdGVyLCBhbmQgb3B0aW9uYWxseSBvcHRpb25zOgoKIyMjIyAqKmN3ZCoqIChzdHJpbmcpCgpUaGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwgb25seSB1c2VmdWwgd2hlbiB3b3JraW5nIHdpdGggZmlsZXMuCgojIyMjICoqc2ltcGxpZnkqKiAoYm9vbGVhbikgKGRlZmF1bHQgdHJ1ZSkKCldoZW4gc2ltcGxpZnkgaXMgdHJ1ZSwgdGhlIGNvbnZlcnRlciB3aWxsIGxldCBjb3JlLXR5cGVzClsqY29tcHJlc3MqXShodHRwczovL2dpdGh1Yi5jb20vZ3JhbnRpbGEvY29yZS10eXBlcyNzaW1wbGlmeSkgdGhlCnR5cGVzIGFmdGVyIGhhdmluZyBjb252ZXJ0ZWQgZnJvbSB7cmVhZGVyfSBmb3JtYXQgdG8gY29yZS10eXBlcy4KVGhpcyBpcyB1c3VhbGx5IHJlY29tbWVuZGVkLCBidXQgbWF5IGNhdXNlIHNvbWUgYW5ub3RhdGlvbnMgKGNvbW1lbnRzKQp0byBiZSBkcm9wcGVkLgoKIyMjIyAqKm1hcCoqIChDb252ZXJ0TWFwRnVuY3Rpb24pCgpDdXN0b20gbWFwIGZ1bmN0aW9uIGZvciB0cmFuc2Zvcm1pbmcgZWFjaCB0eXBlIGFmdGVyIGl0IGhhcyBiZWVuCmNvbnZlcnRlZCAqZnJvbSogdGhlIHNvdXJjZSB0eXBlIChhbmQgYWZ0ZXIgaXQgaGFzIGJlZW4gc2ltcGxpZmllZCksCmJ1dCBiZWZvcmUgaXQncyB3cml0dGVuIHRvIHRoZSB0YXJnZXQgdHlwZSBzeXN0ZW0uCgpUeXBlOiBgKG5vZGU6IE5hbWVkVHlwZSwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFJlYWRvbmx5QXJyYXk8TmFtZWRUeXBlPikgPT4gTmFtZWRUeXBlYAooW05hbWVkVHlwZSByZWZdKGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS9jb3JlLXR5cGVzI3NwZWNpZmljYXRpb24pKQoKSWYgYGZpbHRlcmAgaXMgdXNlZCBhcyB3ZWxsLCB0aGlzIHJ1bnMgYmVmb3JlIGBmaWx0ZXJgLgoKSWYgYHRyYW5zZm9ybWAgaXMgdXNlZCBhcyB3ZWxsLCB0aGlzIHJ1bnMgYmVmb3JlIGB0cmFuc2Zvcm1gLgoKIyMjIyAqKmZpbHRlcioqIChDb252ZXJ0RmlsdGVyRnVuY3Rpb24pCgpDdXN0b20gZmlsdGVyIGZ1bmN0aW9uIGZvciBmaWx0ZXJpbmcgdHlwZXMgYWZ0ZXIgdGhleSBoYXZlIGJlZW4KY29udmVydGVkICpmcm9tKiB0aGUgc291cmNlIHR5cGUuCgpUeXBlOiBgKG5vZGU6IE5hbWVkVHlwZSwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFJlYWRvbmx5QXJyYXk8TmFtZWRUeXBlPikgPT4gYm9vbGVhbmAKKFtOYW1lZFR5cGUgcmVmXShodHRwczovL2dpdGh1Yi5jb20vZ3JhbnRpbGEvY29yZS10eXBlcyNzcGVjaWZpY2F0aW9uKSkKCklmIGBtYXBgIGlzIHVzZWQgYXMgd2VsbCwgdGhpcyBydW5zIGFmdGVyIGBtYXBgLgoKSWYgYHRyYW5zZm9ybWAgaXMgdXNlZCBhcyB3ZWxsLCB0aGlzIHJ1bnMgYmVmb3JlIGB0cmFuc2Zvcm1gLgoKIyMjIyAqKnRyYW5zZm9ybSoqIChDb252ZXJ0VHJhbnNmb3JtRnVuY3Rpb24pCgpDdXN0b20gZmlsdGVyIGZ1bmN0aW9uIGZvciBmaWx0ZXJpbmcgdHlwZXMgYWZ0ZXIgdGhleSBoYXZlIGJlZW4KY29udmVydGVkICpmcm9tKiB0aGUgc291cmNlIHR5cGUuCgpUeXBlOiBgKCBkb2M6IE5vZGVEb2N1bWVudCApID0+IE5vZGVEb2N1bWVudGAKKFtOb2RlRG9jdW1lbnQgcmVmXShodHRwczovL2dpdGh1Yi5jb20vZ3JhbnRpbGEvY29yZS10eXBlcyNzcGVjaWZpY2F0aW9uKSkKCklmIGBtYXBgIGlzIHVzZWQgYXMgd2VsbCwgdGhpcyBydW5zIGFmdGVyIGBtYXBgLgoKSWYgYGZpbHRlcmAgaXMgdXNlZCBhcyB3ZWxsLCB0aGlzIHJ1bnMgYWZ0ZXIgYGZpbHRlcmAuCgojIyMjICoqc2hvcnRjdXQqKiAoYm9vbGVhbikgKGRlZmF1bHQgdHJ1ZSkKClNob3J0Y3V0IHJlYWRlciBhbmQgd3JpdGVyIGlmIHBvc3NpYmxlIChieXBhc3NpbmcgY29yZS10eXBlcykuCgoKCiMjIyBCYXNpYyBleGFtcGxlIGNvbnZlcnNpb24KCmBgYHRzCmltcG9ydCB7CiAgZ2V0VHlwZVNjcmlwdFJlYWRlciwKICBnZXRPcGVuQXBpV3JpdGVyLAogIG1ha2VDb252ZXJ0ZXIsCn0gZnJvbSAndHlwZWNvbnYnCgpjb25zdCByZWFkZXIgPSBnZXRUeXBlU2NyaXB0UmVhZGVyKCApOwpjb25zdCB3cml0ZXIgPSBnZXRPcGVuQXBpV3JpdGVyKCB7IGZvcm1hdDogJ3lhbWwnLCB0aXRsZTogJ015IEFQSScsIHZlcnNpb246ICd2MScgfSApOwpjb25zdCB7IGNvbnZlcnQgfSA9IG1ha2VDb252ZXJ0ZXIoIHJlYWRlciwgd3JpdGVyICk7CmNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgY29udmVydCggeyBkYXRhOiAiZXhwb3J0IHR5cGUgRm9vID0gc3RyaW5nIHwgbnVtYmVyOyIgfSApOwpkYXRhOyAvLyBUaGlzIGlzIHRoZSBPcGVuIEFQSSB5YW1sIGFzIGEgc3RyaW5nCmBgYAoKCiMjIyBKU09OIFNjaGVtYQoKVGhlcmUgYXJlIHR3byBleHBvcnRlZCBmdW5jdGlvbnMgZm9yIEpTT04gU2NoZW1hOgoKYGBgdHMKaW1wb3J0IHsgZ2V0SnNvblNjaGVtYVJlYWRlciwgZ2V0SnNvblNjaGVtYVdyaXRlciB9IGZyb20gJ3R5cGVjb252JwoKY29uc3QgcmVhZGVyID0gZ2V0SnNvblNjaGVtYVJlYWRlciggKTsKY29uc3Qgd3JpdGVyID0gZ2V0SnNvblNjaGVtYVdyaXRlciggKTsKYGBgCgpUaGV5IGRvbid0IGhhdmUgYW55IG9wdGlvbnMuCgp0eXBlY29udiBleHBlY3RzIHRoZSBKU09OIFNjaGVtYSB0byBjb250YWluICoqZGVmaW5pdGlvbnMqKiwgaS5lLiB0byBiZSBpbiB0aGUgZm9ybToKCjxkZXRhaWxzIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDMycHg7Ym9yZGVyLWxlZnQ6IDRweCBzb2xpZCBncmF5OyI+CjxzdW1tYXJ5PkpTT04gU2NoZW1hPC9zdW1tYXJ5Pgo8cD4KCmBgYGpzb24KewoJImRlZmluaXRpb25zIjogewoJCSJVc2VyIjogewoJCQkidHlwZSI6ICJvYmplY3QiLAoJCQkicHJvcGVydGllcyI6IHsgIm5hbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSB9LAoJCQkicmVxdWlyZWQiOiBbICJuYW1lIiBdCgkJfSwKCQkiQ2hhdExpbmUiOiB7CgkJCSJ0eXBlIjogIm9iamVjdCIsCgkJCSJwcm9wZXJ0aWVzIjogewoJCQkJInVzZXIiOiB7ICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvVXNlciIgfSwKCQkJCSJsaW5lIjogeyAidHlwZSI6ICJzdHJpbmciIH0KCQkJfSwKCQkJInJlcXVpcmVkIjogWyAidXNlciIsICJsaW5lIiBdCgkJfQoJfQp9CmBgYAoKPC9wPgo8L2RldGFpbHM+Cgp0eXBlY29udiBkb2Vzbid0IHN1cHBvcnQgZXh0ZXJuYWwgcmVmZXJlbmNlcyAodG8gb3RoZXIgZmlsZXMpLiBJZiB5b3UgaGF2ZSB0aGF0LCB5b3UgbmVlZCB0byB1c2UgYSByZWZlcmVuY2UgcGFyc2VyIGFuZCBtZXJnZSBpdCBpbnRvIG9uZSBpbmxpbmUtcmVmZXJlbmNlZCBmaWxlIGJlZm9yZSB1c2luZyB0eXBlY29udi4KCgojIyMgT3BlbiBBUEkKCkNvbnZlcnRpbmcgdG8gb3IgZnJvbSBPcGVuIEFQSSBjYW4gYmUgZG9uZSB3aXRoIGJvdGggSlNPTiBhbmQgWUFNTC4gVGhlIGRlZmF1bHQgaXMgSlNPTi4KCldoZW4gcmVhZGluZywgaWYgdGhlIGZpbGVuYW1lIGVuZHMgd2l0aCBgLnltbGAgb3IgYC55YW1sYCwgdHlwZWNvbnYgd2lsbCBpbnRlcnByZXQgdGhlIGlucHV0IGFzIFlBTUwuCgpXcml0aW5nIGhvd2V2ZXIsIGlzIGRlY2lkZWQgaW4gdGhlIHdyaXRlciBmYWN0b3J5IGFuZCBwcm92aWRlZCB0byBgZ2V0T3BlbkFwaVdyaXRlcmAuCgpgYGB0cwppbXBvcnQgeyBnZXRPcGVuQXBpUmVhZGVyLCBnZXRPcGVuQXBpV3JpdGVyIH0gZnJvbSAndHlwZWNvbnYnCgpjb25zdCByZWFkZXIgPSBnZXRPcGVuQXBpUmVhZGVyKCApOwpjb25zdCB3cml0ZXIgPSBnZXRPcGVuQXBpV3JpdGVyKCB7CiAgZm9ybWF0OiAneWFtbCcsCiAgdGl0bGU6ICdNeSBBUEknLAogIHZlcnNpb246ICd2MScsCiAgc2NoZW1hVmVyc2lvbjogJzMuMC4wJywKfSApOwpgYGAKClRoZSBvcHRpb25zIHRvIGBnZXRPcGVuQXBpV3JpdGVyYCBpczoKCmBgYHRzCmludGVyZmFjZSB7CiAgZm9ybWF0Pzogc3RyaW5nOwogIHRpdGxlOiBzdHJpbmc7CiAgdmVyc2lvbjogc3RyaW5nOwogIHNjaGVtYVZlcnNpb24/OiBzdHJpbmc7Cn0KYGBgCgoKIyMjIFR5cGVTY3JpcHQKClR5cGVTY3JpcHQgY29udmVyc2lvbiBpcyBkb25lIHVzaW5nOgoKYGBgdHMKaW1wb3J0IHsgZ2V0VHlwZVNjcmlwdFJlYWRlciwgZ2V0VHlwZVNjcmlwdFdyaXRlciB9IGZyb20gJ3R5cGVjb252JwoKY29uc3QgcmVhZGVyID0gZ2V0VHlwZVNjcmlwdFJlYWRlciggKTsKY29uc3Qgd3JpdGVyID0gZ2V0VHlwZVNjcmlwdFdyaXRlciggKTsKYGBgCgpCb3RoIHRoZXNlIHRha2UgYW4gb3B0aW9uYWwgYXJndW1lbnQuCgpUaGUgYGdldFR5cGVTY3JpcHRSZWFkZXJgIHRha2VzIGFuIG9wdGlvbmFsCltgRnJvbVRzT3B0aW9uc2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS9jb3JlLXR5cGVzLXRzI3R5cGVzY3JpcHQtdG8tY29yZS10eXBlcykKb2JqZWN0IGZyb20gW2Bjb3JlLXR5cGVzLXRzYF1bY29yZS10eXBlcy10cy1naXRodWItdXJsXSwgYWx0aG91Z2ggYHdhcm5gIGlzbid0IG5lY2Vzc2FyeSBzaW5jZSBpdCdzIHNldCBieSB0eXBlY29udiBpbnRlcm5hbGx5LgoKVGhlIGBnZXRUeXBlU2NyaXB0V3JpdGVyYCB0YWtlcyBhbiBvcHRpb25hbApbYFRvVHNPcHRpb25zYF0oaHR0cHM6Ly9naXRodWIuY29tL2dyYW50aWxhL2NvcmUtdHlwZXMtdHMjY29yZS10eXBlcy10by10eXBlc2NyaXB0KQpvYmplY3QgZnJvbSBbYGNvcmUtdHlwZXMtdHNgXVtjb3JlLXR5cGVzLXRzLWdpdGh1Yi11cmxdLCBhbHRob3VnaCBgd2FybmAsIGBmaWxlbmFtZWAsIGBzb3VyY2VGaWxlbmFtZWAsIGB1c2VyUGFja2FnZWAgYW5kIGB1c2VyUGFja2FnZVVybGAgYXJlbid0IG5lY2Vzc2FyeSBzaW5jZSB0aGV5J3JlIHNldCBieSB0eXBlY29udiBpbnRlcm5hbGx5LgoKCiMjIyBHcmFwaFFMCgpHcmFwaFFMIGNvbnZlcnNpb24gaXMgZG9uZSB1c2luZzsKCmBgYHRzCmltcG9ydCB7IGdldEdyYXBoUUxSZWFkZXIsIGdldEdyYXBoUUxXcml0ZXIgfSBmcm9tICd0eXBlY29udicKCmNvbnN0IHJlYWRlciA9IGdldEdyYXBoUUxSZWFkZXIoICk7CmNvbnN0IHdyaXRlciA9IGdldEdyYXBoUUxXcml0ZXIoICk7CmBgYAoKQm90aCB0aGVzZSB0YWtlIGFuIG9wdGlvbmFsIGFyZ3VtZW50LgoKVGhlIGBnZXRHcmFwaFFMUmVhZGVyYCB0YWtlcyBhbiBvcHRpb25hbApbYEdyYXBocWxUb0NvcmVUeXBlc09wdGlvbnNgXShodHRwczovL2dpdGh1Yi5jb20vZ3JhbnRpbGEvY29yZS10eXBlcy1ncmFwaHFsI2dyYXBocWwtdG8tY29yZS10eXBlcykKb2JqZWN0IGZyb20gW2Bjb3JlLXR5cGVzLWdyYXBocWxgXVtjb3JlLXR5cGVzLWdyYXBocWwtZ2l0aHViLXVybF0sIGFsdGhvdWdoIGB3YXJuYCBpc24ndCBuZWNlc3Nhcnkgc2luY2UgaXQncyBzZXQgYnkgdHlwZWNvbnYgaW50ZXJuYWxseS4KClRoZSBgZ2V0R3JhcGhRTFdyaXRlcmAgdGFrZXMgYW4gb3B0aW9uYWwKW2BDb3JlVHlwZXNUb0dyYXBocWxPcHRpb25zYF0oaHR0cHM6Ly9naXRodWIuY29tL2dyYW50aWxhL2NvcmUtdHlwZXMtZ3JhcGhxbCNjb3JlLXR5cGVzLXRvLWdyYXBocWwpCm9iamVjdCBmcm9tIFtgY29yZS10eXBlcy1ncmFwaHFsYF1bY29yZS10eXBlcy1ncmFwaHFsLWdpdGh1Yi11cmxdLCBhbHRob3VnaCBgd2FybmAsIGBmaWxlbmFtZWAsIGBzb3VyY2VGaWxlbmFtZWAsIGB1c2VyUGFja2FnZWAgYW5kIGB1c2VyUGFja2FnZVVybGAgYXJlbid0IG5lY2Vzc2FyeSBzaW5jZSB0aGV5J3JlIHNldCBieSB0eXBlY29udiBpbnRlcm5hbGx5LgoKCiMjIyBTdXJlVHlwZQoKU3VyZVR5cGUgY29udmVyc2lvbiBpcyBkb25lIHVzaW5nOwoKYGBgdHMKaW1wb3J0IHsgZ2V0U3VyZVR5cGVSZWFkZXIsIGdldFN1cmVUeXBlV3JpdGVyIH0gZnJvbSAndHlwZWNvbnYnCgpjb25zdCByZWFkZXIgPSBnZXRTdXJlVHlwZVJlYWRlciggKTsKY29uc3Qgd3JpdGVyID0gZ2V0U3VyZVR5cGVXcml0ZXIoICk7CmBgYAoKQm90aCB0aGVzZSB0YWtlIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGZyb20gdGhlIFtgY29yZS10eXBlcy1zdXJldHlwZWBdW2NvcmUtdHlwZXMtc3VyZXR5cGUtZ2l0aHViLXVybF0gcGFja2FnZS4KClRoZSBgZ2V0U3VyZVR5cGVSZWFkZXJgIHRha2VzIGFuIG9wdGlvbmFsCltgU3VyZXR5cGVUb0pzb25TY2hlbWFPcHRpb25zYF0oaHR0cHM6Ly9naXRodWIuY29tL2dyYW50aWxhL2NvcmUtdHlwZXMtc3VyZXR5cGUjc3VyZXR5cGUtdG8tY29yZS10eXBlcykuCgpUaGUgYGdldFN1cmVUeXBlV3JpdGVyYCB0YWtlcyBhbiBvcHRpb25hbApbYEpzb25TY2hlbWFUb1N1cmV0eXBlT3B0aW9uc2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS9jb3JlLXR5cGVzLXN1cmV0eXBlI2NvcmUtdHlwZXMtdG8tc3VyZXR5cGUpLgoKCltucG0taW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L3R5cGVjb252LnN2ZwpbbnBtLXVybF06IGh0dHBzOi8vbnBtanMub3JnL3BhY2thZ2UvdHlwZWNvbnYKW2Rvd25sb2Fkcy1pbWFnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL3R5cGVjb252LnN2ZwpbYnVpbGQtaW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9hY3Rpb25zL3dvcmtmbG93L3N0YXR1cy9ncmFudGlsYS90eXBlY29udi9tYXN0ZXIueW1sP2JyYW5jaD1tYXN0ZXIKW2J1aWxkLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS90eXBlY29udi9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBTWFzdGVyCltjb3ZlcmFnZS1pbWFnZV06IGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi9ncmFudGlsYS90eXBlY29udi9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcgpbY292ZXJhZ2UtdXJsXTogaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL2dyYW50aWxhL3R5cGVjb252P2JyYW5jaD1tYXN0ZXIKW25vZGUtdmVyc2lvbl06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbm9kZS92L3R5cGVjb252Cltub2RlLXVybF06IGh0dHBzOi8vbm9kZWpzLm9yZy9lbi8KCltjb3JlLXR5cGVzLW5wbS11cmxdOiBodHRwczovL25wbWpzLm9yZy9wYWNrYWdlL2NvcmUtdHlwZXMKW2NvcmUtdHlwZXMtZ2l0aHViLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS9jb3JlLXR5cGVzCltjb3JlLXR5cGVzLWpzb24tc2NoZW1hLW5wbS11cmxdOiBodHRwczovL25wbWpzLm9yZy9wYWNrYWdlL2NvcmUtdHlwZXMtanNvbi1zY2hlbWEKW2NvcmUtdHlwZXMtanNvbi1zY2hlbWEtZ2l0aHViLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS9jb3JlLXR5cGVzLWpzb24tc2NoZW1hCltjb3JlLXR5cGVzLXRzLW5wbS11cmxdOiBodHRwczovL25wbWpzLm9yZy9wYWNrYWdlL2NvcmUtdHlwZXMtdHMKW2NvcmUtdHlwZXMtdHMtZ2l0aHViLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS9jb3JlLXR5cGVzLXRzCltjb3JlLXR5cGVzLWdyYXBocWwtbnBtLXVybF06IGh0dHBzOi8vbnBtanMub3JnL3BhY2thZ2UvY29yZS10eXBlcy1ncmFwaHFsCltjb3JlLXR5cGVzLWdyYXBocWwtZ2l0aHViLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS9jb3JlLXR5cGVzLWdyYXBocWwKW2NvcmUtdHlwZXMtc3VyZXR5cGUtbnBtLXVybF06IGh0dHBzOi8vbnBtanMub3JnL3BhY2thZ2UvY29yZS10eXBlcy1zdXJldHlwZQpbY29yZS10eXBlcy1zdXJldHlwZS1naXRodWItdXJsXTogaHR0cHM6Ly9naXRodWIuY29tL2dyYW50aWxhL2NvcmUtdHlwZXMtc3VyZXR5cGUKW3N1cmV0eXBlLWdpdGh1Yi11cmxdOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhbnRpbGEvc3VyZXR5cGUK readmeEtag: '"b7043a416d92ebe262c0d06cc82bc8aae498de44"' readmeLastModified: Sun, 04 Jun 2023 08:11:37 GMT repositoryId: 293245471 description: Convert between JSON Schema, TypeScript, GraphQL, Open API and SureType created: '2020-09-06T09:40:04Z' updated: '2026-01-11T08:51:56Z' language: TypeScript archived: false stars: 447 watchers: 2 forks: 10 owner: grantila logo: https://avatars.githubusercontent.com/u/5362579?v=4 license: MIT repoEtag: '"a2c72fd4df09b1e3588fded6157437d93dc8af2aec098fd5b275c952c0451cac"' repoLastModified: Sun, 11 Jan 2026 08:51:56 GMT foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/traefik/traefik-hub-helm-chart v3: true id: a37e8ac9d7a778549392a1f379fc7529 repositoryMetadata: base64Readme: >- PGEgbmFtZT0icmVhZG1lLXRvcCI+PC9hPgoKPiBTaW5jZSB0aGUgZW5kIG9mIE1heSAyMDI0LCBUcmFlZmlrIEh1YiBhbmQgVHJhZWZpayBQcm94eSBoYXZlIGJlZW4gdXNpbmcgdGhlIHNhbWUgW1RyYWVmaWsgSGVsbSBDaGFydF0oaHR0cHM6Ly9naXRodWIuY29tL3RyYWVmaWsvdHJhZWZpay1oZWxtLWNoYXJ0KSBmb3IgaW5zdGFsbGF0aW9uLgoKPGJyLz4KCjxkaXYgYWxpZ249ImNlbnRlciIgc3R5bGU9Im1hcmdpbjogMzBweDsiPgo8YSBocmVmPSJodHRwczovL2h1Yi50cmFlZmlrLmlvLyI+CiAgPGltZyBzcmM9Imh0dHBzOi8vZG9jLnRyYWVmaWsuaW8vdHJhZWZpay1odWIvaW1nL2h1Yi1sb2dvLWxpZ2h0LnN2ZyIgc3R5bGU9IndpZHRoOjI1MHB4OyIgYWxpZ249ImNlbnRlciIgLz4KPC9hPgo8YnIgLz4KPGJyIC8+Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly90cmFlZmlrLmlvL3RyYWVmaWstaHViLyI+IFdlYnNpdGU8L2E+IHwKICAgIDxhIGhyZWY9Imh0dHBzOi8vaHViLnRyYWVmaWsuaW8iPkxvZyBJbjwvYT4gfAogICAgPGEgaHJlZj0iaHR0cHM6Ly9kb2MudHJhZWZpay5pby90cmFlZmlrLWh1Yi8iPkRvY3VtZW50YXRpb248L2E+CjwvZGl2Pgo8L2Rpdj4KCjxiciAvPgoKPGRpdiBhbGlnbj0iY2VudGVyIj48c3Ryb25nPlRyYWVmaWsgSHViIEhlbG0gQ2hhcnQ8L3N0cm9uZz4KCjxiciAvPgo8YnIgLz4KPC9kaXY+CgojIyBJbnRyb2R1Y3Rpb24KClRoaXMgY2hhcnQgaW5zdGFsbHMgdGhlIFRyYWVmaWsgSHViIGFnZW50IGluICpJbmdyZXNzIENvbnRyb2xsZXIqIG1vZGUgb24gYSBLdWJlcm5ldGVzIGNsdXN0ZXIuCgojIyBJbnN0YWxsYXRpb24KCiMjIyBQcmVyZXF1aXNpdGVzCgoxLiBbeF0gSGVsbSAqKnYzKiogW2luc3RhbGxlZF0oaHR0cHM6Ly9oZWxtLnNoL2RvY3MvdXNpbmdfaGVsbS8jaW5zdGFsbGluZy1oZWxtKTogYGhlbG0gdmVyc2lvbmAKMi4gW3hdIFRyYWVmaWsgTGFicyBjaGFydCByZXBvc2l0b3J5OiBgaGVsbSByZXBvIGFkZCB0cmFlZmlrIGh0dHBzOi8vdHJhZWZpay5naXRodWIuaW8vY2hhcnRzYAoKIyMjIERlcGxveWluZyBIdWIgSW5ncmVzIENvbnRyb2xsZXIgZm9yIEt1YmVybmV0ZXMKCmBgYHNoZWxsCmt1YmVjdGwgY3JlYXRlIHNlY3JldCBnZW5lcmljIGh1Yi1hZ2VudC10b2tlbiAtLWZyb20tbGl0ZXJhbD10b2tlbj1YWFhYCgpoZWxtIHVwZ3JhZGUgLS1pbnN0YWxsIHRyYWVmaWstaHViIHRyYWVmaWsvdHJhZWZpay1odWIKYGBgCgpZb3UgY2FuIGN1c3RvbWl6ZSB0aGUgaW5zdGFsbGF0aW9uIHdpdGggYSBgdmFsdWVzYCBmaWxlLgpGaW5kIHRoZSBjb21wbGV0ZSBkb2N1bWVudGF0aW9uIG9uIGFsbCBwYXJhbWV0ZXJzIGluIHRoZSBbZGVmYXVsdCB2YWx1ZSBmaWxlXSguL3RyYWVmaWstaHViL3ZhbHVlcy55YW1sKS4KCjxwIGFsaWduPSJyaWdodCI+KDxhIGhyZWY9IiNyZWFkbWUtdG9wIj5iYWNrIHRvIHRvcDwvYT4pPC9wPgoKIyMgVXBncmFkaW5nIEh1YiBBZ2VudCBmb3IgS3ViZXJuZXRlcwoKT25lIGNhbiBjaGVjayB3aGF0IGhhcyBjaGFuZ2VkIGluIHRoZSBbcmVsZWFzZV0oaHR0cHM6Ly9naXRodWIuY29tL3RyYWVmaWsvdHJhZWZpay1odWItaGVsbS1jaGFydC9yZWxlYXNlcykgb3ZlcnZpZXcgcGFnZS4KClVwZGF0ZSB0aGUgcmVwb3NpdG9yeToKCmBgYHNoZWxsCmhlbG0gcmVwbyB1cGRhdGUKYGBgCgpDaGVjayB0aGUgY3VycmVudCBDaGFydCAmIFRyYWVmaWsgSHViIHZlcnNpb246CgpgYGBzaGVsbApoZWxtIHNlYXJjaCByZXBvIHRyYWVmaWsvdHJhZWZpay1odWIKYGBgCgpVcGdyYWRlIFRyYWVmaWsgSHViOgoKYGBgc2hlbGwKaGVsbSB1cGdyYWRlIHRyYWVmaWstaHViIHRyYWVmaWsvdHJhZWZpay1odWIKYGBgCgo8cCBhbGlnbj0icmlnaHQiPig8YSBocmVmPSIjcmVhZG1lLXRvcCI+YmFjayB0byB0b3A8L2E+KTwvcD4KCiMjIFVwZ3JhZGluZyBDUkRzCgpXaXRoIEhlbG0gdjMsIENSRHMgY3JlYXRlZCBieSB0aGlzIGNoYXJ0IGNhbiBub3QgYmUgdXBkYXRlZCwgY29uc3VsdCB0aGUgW0hlbG0gRG9jdW1lbnRhdGlvbiBvbiBDUkRzXShodHRwczovL2hlbG0uc2gvZG9jcy9jaGFydF9iZXN0X3ByYWN0aWNlcy9jdXN0b21fcmVzb3VyY2VfZGVmaW5pdGlvbnMpIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKPiBQbGVhc2UgcmVhZCBjYXJlZnVsbHkgdGhlIFtyZWxlYXNlIG5vdGVzXShodHRwczovL2dpdGh1Yi5jb20vdHJhZWZpay90cmFlZmlrLWh1Yi1oZWxtLWNoYXJ0L3JlbGVhc2VzKSBvZiB0aGlzIGNoYXJ0IGJlZm9yZSB1cGdyYWRpbmcgQ1JEcyEKCmBgYHNoZWxsCmt1YmVjdGwgYXBwbHkgLS1zZXJ2ZXItc2lkZSAtLWZvcmNlLWNvbmZsaWN0cyAtayBodHRwczovL2dpdGh1Yi5jb20vdHJhZWZpay90cmFlZmlrLWh1Yi1oZWxtLWNoYXJ0L3RyYWVmaWstaHViL2NyZHMvCmBgYAoKPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3JlYWRtZS10b3AiPmJhY2sgdG8gdG9wPC9hPik8L3A+CgojIyBVcGdyYWRpbmcgZnJvbSB2MS54LngKClRvIHVwZ3JhZGUgZnJvbSB2MS54LngsIGEgc2VjcmV0IG5lZWRzIHRvIGJlIG1hbnVhbGx5IHJlbW92ZWQgZmlyc3Q6CgpgYGBzaGVsbAprdWJlY3RsIGRlbGV0ZSBzZWNyZXQgaHViLWFnZW50LWNlcnQgLW4gdHJhZWZpay1odWIKYGBgCgo8cCBhbGlnbj0icmlnaHQiPig8YSBocmVmPSIjcmVhZG1lLXRvcCI+YmFjayB0byB0b3A8L2E+KTwvcD4KCiMjIFVuaW5zdGFsbAoKYGBgc2hlbGwKaGVsbSB1bmluc3RhbGwgdHJhZWZpay1odWIKYGBgCgpJZiBUcmFlZmlrIEh1YiB3YXMgaW5zdGFsbGVkIGluIGEgc3BlY2lmaWMgbmFtZXNwYWNlOgoKYGBgc2hlbGwKaGVsbSB1bmluc3RhbGwgdHJhZWZpay1odWIgLS1uYW1lc3BhY2UgbXktbmFtZXNwYWNlCmBgYAoKPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3JlYWRtZS10b3AiPmJhY2sgdG8gdG9wPC9hPik8L3A+CgojIyBDb250cmlidXRpbmcKCiMjIyBWZXJzaW9uaW5nCgpXZSB1c2UgW1NlbWFudGljIFZlcnNpb25pbmddKGh0dHBzOi8vc2VtdmVyLm9yZy8pLgoKUHVsbCByZXF1ZXN0cyBtdXN0IGJ1bXAgdGhlIGB2ZXJzaW9uYCBvZiB0aGUgY2hhcnQgc3BlY2lmaWVkIGluIHRoZSBbQ2hhcnQueWFtbF0oLi90cmFlZmlrLWh1Yi9DaGFydC55YW1sKSBmaWxlOgoKLSBUaGUgbmV3IHZlcnNpb24gbXVzdCBiZSBhbiBhbHBoYSBwcmUtcmVsZWFzZSAoZS5nLiAxLjYuMC1hbHBoYS4xKQotIFRoZSBuZXcgdmVyc2lvbiBtdXN0IHJlZmxlY3QgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBhY2NvcmRpbmcgdG8gdGhlIFNlbVZlciBzcGVjaWZpY2F0aW9uCgpBIGNoYXJ0IGNhbiBiZSBtYWRlIGF2YWlsYWJsZSBwdWJsaWNseSBieSByZW1vdmluZyB0aGUgcHJlLXJlbGVhc2Ugc3VmZml4LCB0aGlzIG11c3QgYmUgZG9uZSBvbiBhIHNlcGFyYXRlIFBSIGJ5IGEgbWFpbnRhaW5lci4KCkV2ZXJ5IHZlcnNpb24gYnVtcCBpcyBwdWJsaXNoZWQgb24gdGhlIEhlbG0gQ2hhcnQgUmVnaXN0cnkuCgpUaGUgbGF0ZXN0IHByZS1yZWxlYXNlIHZlcnNpb24gb2YgdGhlIENoYXJ0IGNhbiBiZSB1c2VkIGJ5IHNwZWNpZnlpbmcgYC0tZGV2ZWxgIG9uIHRoZSBgaW5zdGFsbGAgYW5kIGB1cGdyYWRlYCBjb21tYW5kcy4KCiMjIyBMYXVuY2ggdW5pdCB0ZXN0cwoKYGBgc2hlbGwKbWFrZSB0ZXN0CmBgYAoKPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3JlYWRtZS10b3AiPmJhY2sgdG8gdG9wPC9hPik8L3A+CgojIyBMaWNlbnNlCgpEaXN0cmlidXRlZCB1bmRlciB0aGUgQXBhY2hlIHYyIExpY2Vuc2UuClNlZSBbTElDRU5TRV0oLi9MSUNFTlNFKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCjxwIGFsaWduPSJyaWdodCI+KDxhIGhyZWY9IiNyZWFkbWUtdG9wIj5iYWNrIHRvIHRvcDwvYT4pPC9wPgo= readmeEtag: '"d1162fe3e633bee28072ea733ca6e3a8da73eb55"' readmeLastModified: Tue, 28 May 2024 13:30:11 GMT repositoryId: 662208402 description: >- Traefik Hub is a Kubernetes-native API Management solution for publishing, securing, and managing APIs. Configuration is driven by Kubernetes CRDs, labels, and selectors for effective GitOps. created: '2023-07-04T15:34:00Z' updated: '2025-08-17T20:16:49Z' language: Makefile archived: true stars: 2 watchers: 8 forks: 9 owner: traefik logo: https://avatars.githubusercontent.com/u/14280338?v=4 license: Apache-2.0 repoEtag: '"811466cdb1bec02914af4a77eb5886a7a49cf9663a02e3beb49063687f5ef16b"' repoLastModified: Sun, 17 Aug 2025 20:16:49 GMT category: - Documentation - Gateway - Server Implementations foundInMaster: true name: Traefik Hub link: https://doc.traefik.io/traefik-hub language: Go source_description: >- Traefik Hub is a Kubernetes-native API Management solution for publishing, securing, and managing APIs. Configuration is driven by Kubernetes CRDs, labels, and selectors for effective GitOps. v2: true - source: https://openapi.tools/ name: HopFront category: - Documentation link: https://github.com/hopfront/hopfront repository: https://github.com/hopfront/hopfront language: TypeScript source_description: >- HopFront automatically builds an user friendly UI from a collection of OpenAPI specifications. You can setup custom dashboard tailored to the way your interact with your APIs. v3: true id: 3b8ac40bdadbc38647a04c95f45fb3bf repositoryMetadata: base64Readme: >- PGJyLz4gIAo8cGljdHVyZT4KICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS9ob3Bmcm9udC9ob3Bmcm9udC9hc3NldHMvMjc0MzU0MS9mNmY0MjU3My1kNDZjLTRkY2MtYjIzZS0zOTMzYTIwN2JmNzIiPgogIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vaG9wZnJvbnQvaG9wZnJvbnQvYXNzZXRzLzI3NDM1NDEvODFiNzljZTctNzE0OC00N2JjLWFiZDctZDRjYTMwZWYyMGQyIiBoZWlnaHQ9IjYwIj4KPC9waWN0dXJlPgoKLS0tCgpbSG9wRnJvbnRdKGh0dHBzOi8vaG9wZnJvbnQuY29tLykgaXMgdGhlIGJlc3Qgd2F5IHRvIGludGVyYWN0IHdpdGggQVBJcy4KCiFbSG9wRnJvbnQgU2NyZWVuc2hvdF0oaHR0cHM6Ly9hc3NldHMtZ2xvYmFsLndlYnNpdGUtZmlsZXMuY29tLzY1MDljYTExZTNiNmRhNTNiZjRmYzVmMy82NTU3NTliY2E4NzBhNTg4MjM3ZGQyNDhfR3JvdXAlMjAzMC1wLTEwODAucG5nKQoKIyMgRmVhdHVyZXMKLSBTZXQgdXAgaW4gX2xpdGVyYWxseV8gMiBtaW51dGVzLgogIC0geW91IGp1c3QgbmVlZCBhbiBbT3BlbkFQSSBzcGVjXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy9sYXRlc3QuaHRtbCkgKHdoaWNoIGNhbiBiZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBpZiB5b3UgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZSkuCi0gQnJvd3NlICYgcXVlcnkgeW91ciBBUEkgaW4gYSBIdW1hbi1mcmllbmRseSB3YXkuCiAgLSBIb3BGcm9udCB1bmRlcnN0YW5kcyByZWxhdGlvbnNoaXBzIGJldHdlZW4geW91ciBlbmRwb2ludHMsIG5vIG1vcmUgY29weS9wYXN0aW5nIHlvdXIgaWRzIGV2ZXJ5d2hlcmUhCi0gQnVpbGQgY3VzdG9tIGFuZCBkeW5hbWljIGRhc2hib2FyZHMuCiAgLSBVc2VmdWwgZm9yIHJhcGlkbHkgYnVpbGRpbmcgaW50ZXJuYWwgdG9vbHMgb3IgcGVyc29uYWxpemVkIFVJcyBiYXNlZCBvbiB5b3VyIGRhaWx5IEFQSSBpbnRlcmFjdGlvbnMuCgojIyBJbnN0YWxsYXRpb24KVEw7RFI6IGBkb2NrZXIgcnVuIC1wIDMwMDA6MzAwMCAtdiBob3Bmcm9udDovZXRjL2hvcGZyb250IGhvcGZyb250L2hvcGZyb250OmxhdGVzdGAKCkhvcEZyb250IGlzIGN1cnJlbnRseSBhdmFpbGFibGUgYXMgYSBEb2NrZXIgaW1hZ2UsIGZvbGxvdyB0aGUgaW5zdGFsbGF0aW9uIGd1aWRlIFtoZXJlXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvaG9wZnJvbnQvaG9wZnJvbnQpLgoK readmeEtag: '"888912d465217f6cbd07184684969595dc8f39f9"' readmeLastModified: Thu, 14 Mar 2024 08:26:16 GMT repositoryId: 703097382 description: Turn any API into a workable app in 2 minutes created: '2023-10-10T15:33:01Z' updated: '2026-02-03T22:08:17Z' language: TypeScript archived: false stars: 79 watchers: 2 forks: 6 owner: hopfront logo: https://avatars.githubusercontent.com/u/147492760?v=4 license: NOASSERTION repoEtag: '"14f691b5665e3f7148a67ae18b90d45b524b716702b6b03ce7d7d3be8a3ec9ae"' repoLastModified: Tue, 03 Feb 2026 22:08:17 GMT foundInMaster: true - source: https://openapi.tools/ name: Xapi Platform category: - GUI Editors - Text Editors - Testing language: Saas link: https://xapihub.io/ source_description: >- Xapi is an integrated platform that enables you to implement a streamlined API-first design strategy with standardized API artifacts and collaborative teams. v2: false v3: false v3_1: true id: a899f827ee5c657acd105a5110757e0a foundInMaster: true - source: https://openapi.tools/ name: Fuego category: - Auto Generators - Data Validators - Server language: Go link: https://go-fuego.github.io/fuego/ repository: https://github.com/go-fuego/fuego source_description: >- Golang Fuego - web & API framework generating OpenAPI 3 spec from source code v3: true id: 4be418d9c134b194919087fc1e16a8cf repositoryMetadata: base64Readme: >- PCEtLSBtYXJrZG93bmxpbnQtZGlzYWJsZSBNRDA0MSAtLT4KPHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyBzcmM9Ii4vc3RhdGljL2Z1ZWdvLnN2ZyIgaGVpZ2h0PSIyMDAiIGFsdD0iRnVlZ28gTG9nbyIgLz4KPC9wPgoKIyBGdWVnbyDwn5SlCgpbIVtHbyBSZWZlcmVuY2VdKGh0dHBzOi8vcGtnLmdvLmRldi9iYWRnZS9naXRodWIuY29tL2dvLWZ1ZWdvL2Z1ZWdvLnN2ZyldKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL2dvLWZ1ZWdvL2Z1ZWdvKQpbIVtHbyBSZXBvcnQgQ2FyZF0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vZ28tZnVlZ28vZnVlZ28pXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vZ28tZnVlZ28vZnVlZ28pClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvZ2l0aHViL2dvLWZ1ZWdvL2Z1ZWdvL2JhZGdlLnN2Zz9icmFuY2g9bWFpbildKGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9nby1mdWVnby9mdWVnbz9icmFuY2g9bWFpbikKWyFbQ29kU3BlZWQgQmFkZ2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZW5kcG9pbnQ/dXJsPWh0dHBzOi8vY29kc3BlZWQuaW8vYmFkZ2UuanNvbildKGh0dHBzOi8vY29kc3BlZWQuaW8vZ28tZnVlZ28vZnVlZ28/dXRtX3NvdXJjZT1iYWRnZSkKWyFbRGlzY29yZCBHb3BoZXJzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0Rpc2NvcmQlMjBHb3BoZXJzLSUyM2Z1ZWdvLSUyMzcyODlkYT8pXShodHRwczovL2Rpc2NvcmQuZ2cvOWNzdUI2V05zcSkKCj4gVGhlIGZyYW1ld29yayBmb3IgYnVzeSBHbyBkZXZlbG9wZXJzCgrwn5qAICoqRXhwbG9yZSBhbmQgY29udHJpYnV0ZSB0byBvdXIgWzIwMjUgUm9hZG1hcF0oaHR0cHM6Ly9naXRodWIuY29tL2dvLWZ1ZWdvL2Z1ZWdvL2Rpc2N1c3Npb25zLzI2MykhKiog8J+agAoKUHJvZHVjdGlvbi1yZWFkeSBHbyBBUEkgZnJhbWV3b3JrIGdlbmVyYXRpbmcgT3BlbkFQSSBkb2N1bWVudGF0aW9uIGZyb20gY29kZS4KSW5zcGlyZWQgYnkgTmVzdCwgYnVpbHQgZm9yIEdvIGRldmVsb3BlcnMuCgpBbHNvIGVtcG93ZXJzIHRlbXBsYXRpbmcgd2l0aCBgaHRtbC90ZW1wbGF0ZWAsIGBhLWgvdGVtcGxgIGFuZCBgbWFyYWd1ZGsvZ29tcG9uZW50c2A6CnNlZSBbdGhlIGV4YW1wbGVdKC4vZXhhbXBsZXMvZnVsbC1hcHAtZ291cm1ldCkgW3J1bm5pbmcgbGl2ZV0oaHR0cHM6Ly9nb3VybWV0LnF1aW1lcmNoLmNvbSkuCgojIyBXaHkgRnVlZ28/CgpDaGksIEdpbiwgRmliZXIgYW5kIEVjaG8gYXJlIGdyZWF0IGZyYW1ld29ya3MuCkJ1dCBzaW5jZSB0aGV5IHdlcmUgZGVzaWduZWQgYSBsb25nIHRpbWUgYWdvLApbdGhlaXIgY3VycmVudCBBUEkgZG9lcyBub3QgYWxsb3cgdGhlbV1bZ2luLWdvbmljLWlzc3VlXSB0byBkZWR1Y2UKT3BlbkFQSSB0eXBlcyBmcm9tIHNpZ25hdHVyZXMsIHRoaW5ncyB0aGF0IGFyZSBub3cgcG9zc2libGUgd2l0aCBnZW5lcmljcy4KRnVlZ28gb2ZmZXJzIGEgbG90IG9mICJtb2Rlcm4gR28gYmFzZWQiIGZlYXR1cmVzIHRoYXQgbWFrZSBpdCBlYXN5CnRvIGRldmVsb3AgQVBJcyBhbmQgd2ViIGFwcGxpY2F0aW9ucy4KCiMjIEZlYXR1cmVzCgotICoqT3BlbkFQSSoqOiBGdWVnbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlcyBPcGVuQVBJIGRvY3VtZW50YXRpb24KICBmcm9tICoqY29kZSoqIC0gX25vdCBmcm9tIGNvbW1lbnRzIG5vciBZQU1MIGZpbGVzIV8KLSAqKjEwMCUgYG5ldC9odHRwYCBjb21wYXRpYmxlKiogKG5vIGxvY2staW4pOiBGdWVnbyBpcyBidWlsdCBvbiB0b3Agb2YgYG5ldC9odHRwYCwKICBzbyB5b3UgY2FuIHVzZSBhbnkgYGh0dHAuSGFuZGxlcmAgbWlkZGxld2FyZSBvciBoYW5kbGVyISBGdWVnbyBhbHNvIHN1cHBvcnRzCiAgYGxvZy9zbG9nYCwgYGNvbnRleHRgIGFuZCBgaHRtbC90ZW1wbGF0ZWAuCi0gKipSb3V0aW5nKio6IEZ1ZWdvIHJvdXRlciBpcyBiYXNlZCBvbiBHbyAxLjIyIGBuZXQvaHR0cGAsIHdpdGggZ3JvdXBpbmcgYW5kCiAgbWlkZGxld2FyZSBzdXBwb3J0Ci0gKipTZXJpYWxpemF0aW9uL0Rlc2VyaWFsaXphdGlvbioqOiBGdWVnbyBhdXRvbWF0aWNhbGx5IHNlcmlhbGl6ZXMgYW5kCiAgZGVzZXJpYWxpemVzIEpTT04sIFhNTCBhbmQgSFRNTCBGb3JtcyBiYXNlZCBvbiB1c2VyLXByb3ZpZGVkIHN0cnVjdHMKICAob3Igbm90LCBpZiB5b3Ugd2FudCB0byBkbyBpdCB5b3Vyc2VsZikKLSAqKlZhbGlkYXRpb24qKjogRnVlZ28gcHJvdmlkZXMgYSBzaW1wbGUgYW5kIGZhc3QgdmFsaWRhdG9yIGJhc2VkIG9uIGBnby1wbGF5Z3JvdW5kL3ZhbGlkYXRvcmAKLSAqKlRyYW5zZm9ybWF0aW9uKio6IGVhc2lseSB0cmFuc2Zvcm0geW91ciBkYXRhIGJ5IGltcGxlbWVudGluZyB0aGUKICBgZnVlZ28uSW5UcmFuc2Zvcm1gIGFuZCBgZnVlZ28uT3V0VHJhbnNmb3JtYCBpbnRlcmZhY2VzIC0gYWxzbyB1c2VmdWwgZm9yCiAgY3VzdG9tICoqdmFsaWRhdGlvbioqCi0gKipNaWRkbGV3YXJlcyoqOiBlYXNpbHkgYWRkIGEgY3VzdG9tIGBuZXQvaHR0cGAgbWlkZGxld2FyZQogIG9yIHVzZSB0aGUgcHJvdmlkZWQgbWlkZGxld2FyZXMuCi0gKipFcnJvciBoYW5kbGluZyoqOiBGdWVnbyBwcm92aWRlcyBjZW50cmFsaXplZCBlcnJvciBoYW5kbGluZyB3aXRoCiAgdGhlIHN0YW5kYXJkIFtSRkMgOTQ1N10oaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzk0NTcpLgotICoqUmVuZGVyaW5nKio6IEZ1ZWdvIHByb3ZpZGVzIGEgc2ltcGxlIGFuZCBmYXN0IHJlbmRlcmluZyBzeXN0ZW0gYmFzZWQgb24KICBgaHRtbC90ZW1wbGF0ZWAgLSB5b3UgY2FuIHN0aWxsIGFsc28gdXNlIHlvdXIgb3duIHRlbXBsYXRlIHN5c3RlbSBsaWtlCiAgYHRlbXBsYCBvciBgZ29tcG9uZW50c2AKLSAqKkFkYXB0b3JzKio6IEZ1ZWdvIGNhbiBiZSBwbHVnZ2VkIHRvIGFuIGV4aXN0aW5nIEdpbiBvciBFY2hvIHNlcnZlciB0bwogIGdlbmVyYXRlIE9wZW5BUEkgZG9jdW1lbnRhdGlvbgoKIyMgRXhhbXBsZXMKCiMjIyBIZWxsbyBXb3JsZAoKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgImdpdGh1Yi5jb20vZ28tZnVlZ28vZnVlZ28iCgpmdW5jIG1haW4oKSB7CglzIDo9IGZ1ZWdvLk5ld1NlcnZlcigpCgoJZnVlZ28uR2V0KHMsICIvIiwgZnVuYyhjIGZ1ZWdvLkNvbnRleHROb0JvZHkpIChzdHJpbmcsIGVycm9yKSB7CgkJcmV0dXJuICJIZWxsbywgV29ybGQhIiwgbmlsCgl9KQoKCXMuUnVuKCkKfQpgYGAKCiMjIyBTaW1wbGUgUE9TVAoKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgImdpdGh1Yi5jb20vZ28tZnVlZ28vZnVlZ28iCgp0eXBlIE15SW5wdXQgc3RydWN0IHsKCU5hbWUgc3RyaW5nIGBqc29uOiJuYW1lIiB2YWxpZGF0ZToicmVxdWlyZWQiYAp9Cgp0eXBlIE15T3V0cHV0IHN0cnVjdCB7CglNZXNzYWdlIHN0cmluZyBganNvbjoibWVzc2FnZSJgCn0KCmZ1bmMgbWFpbigpIHsKCXMgOj0gZnVlZ28uTmV3U2VydmVyKCkKCgkvLyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlcyBPcGVuQVBJIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgcm91dGUKCWZ1ZWdvLlBvc3QocywgIi91c2VyL3t1c2VyfSIsIG15Q29udHJvbGxlcikKCglzLlJ1bigpCn0KCmZ1bmMgbXlDb250cm9sbGVyKGMgZnVlZ28uQ29udGV4dFdpdGhCb2R5W015SW5wdXRdKSAoKk15T3V0cHV0LCBlcnJvcikgewoJYm9keSwgZXJyIDo9IGMuQm9keSgpCglpZiBlcnIgIT0gbmlsIHsKCQlyZXR1cm4gbmlsLCBlcnIKCX0KCglyZXR1cm4gJk15T3V0cHV0e01lc3NhZ2U6ICJIZWxsbywgIiArIGJvZHkuTmFtZX0sIG5pbAp9CmBgYAoKIyMjIFdpdGggdHJhbnNmb3JtYXRpb24gJiBjdXN0b20gdmFsaWRhdGlvbgoKYGBgZ28KdHlwZSBNeUlucHV0IHN0cnVjdCB7CglOYW1lIHN0cmluZyBganNvbjoibmFtZSIgdmFsaWRhdGU6InJlcXVpcmVkImAKfQoKLy8gV2lsbCBiZSBjYWxsZWQganVzdCBiZWZvcmUgcmV0dXJuaW5nIGMuQm9keSgpCmZ1bmMgKHIgKk15SW5wdXQpIEluVHJhbnNmb3JtKGNvbnRleHQuQ29udGV4dCkgZXJyb3IgewoJci5OYW1lID0gc3RyaW5ncy5Ub0xvd2VyKHIuTmFtZSkKCglpZiByLk5hbWUgPT0gImZ1ZWdvIiB7CgkJcmV0dXJuIGVycm9ycy5OZXcoImZ1ZWdvIGlzIG5vdCBhIHZhbGlkIG5hbWUgZm9yIHRoaXMgaW5wdXQiKQoJfQoKCXJldHVybiBuaWwKfQpgYGAKCiMjIyBNb3JlIE9wZW5BUEkgZG9jdW1lbnRhdGlvbgoKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAoJImdpdGh1Yi5jb20vZ28tZnVlZ28vZnVlZ28iCgkiZ2l0aHViLmNvbS9nby1mdWVnby9mdWVnby9vcHRpb24iCgkiZ2l0aHViLmNvbS9nby1mdWVnby9mdWVnby9wYXJhbSIKKQoKZnVuYyBtYWluKCkgewoJcyA6PSBmdWVnby5OZXdTZXJ2ZXIoKQoKCS8vIEN1c3RvbSBPcGVuQVBJIG9wdGlvbnMKCWZ1ZWdvLlBvc3QocywgIi8iLCBteUNvbnRyb2xsZXIsCgkJb3B0aW9uLkRlc2NyaXB0aW9uKCJUaGlzIHJvdXRlIGRvZXMgc29tZXRoaW5nLi4uIiksCgkJb3B0aW9uLlN1bW1hcnkoIlRoaXMgaXMgbXkgc3VtbWFyeSIpLAoJCW9wdGlvbi5UYWdzKCJNeVRhZyIpLCAvLyBBIHRhZyBpcyBzZXQgYnkgZGVmYXVsdCBhY2NvcmRpbmcgdG8gdGhlIHJldHVybiB0eXBlIChjYW4gYmUgZGVhY3RpdmF0ZWQpCgkJb3B0aW9uLkRlcHJlY2F0ZWQoKSwgIC8vIE1hcmtzIHRoZSByb3V0ZSBhcyBkZXByZWNhdGVkIGluIHRoZSBPcGVuQVBJIHNwZWMKCgkJb3B0aW9uLlF1ZXJ5KCJuYW1lIiwgIkRlY2xhcmVzIGEgcXVlcnkgcGFyYW1ldGVyIHdpdGggZGVmYXVsdCB2YWx1ZSIsIHBhcmFtLkRlZmF1bHQoIkNhcm1hY2siKSksCgkJb3B0aW9uLkhlYWRlcigiQXV0aG9yaXphdGlvbiIsICJCZWFyZXIgdG9rZW4iLCBwYXJhbS5SZXF1aXJlZCgpKSwKCQlvcHRpb25QYWdpbmF0aW9uLAoJCW9wdGlvbkN1c3RvbUJlaGF2aW9yLAoJKQoKCXMuUnVuKCkKfQoKdmFyIG9wdGlvblBhZ2luYXRpb24gPSBvcHRpb24uR3JvdXAoCglvcHRpb24uUXVlcnlJbnQoInBhZ2UiLCAiUGFnZSBudW1iZXIiLCBwYXJhbS5EZWZhdWx0KDEpLCBwYXJhbS5FeGFtcGxlKCIxc3QgcGFnZSIsIDEpLCBwYXJhbS5FeGFtcGxlKCI0Mm5kIHBhZ2UiLCA0MikpLAoJb3B0aW9uLlF1ZXJ5SW50KCJwZXJQYWdlIiwgIk51bWJlciBvZiBpdGVtcyBwZXIgcGFnZSIpLAopCgp2YXIgb3B0aW9uQ3VzdG9tQmVoYXZpb3IgPSBmdW5jKHIgKmZ1ZWdvLkJhc2VSb3V0ZSkgewoJci5YWFggPSAiWVlZIgp9CmBgYAoKIyMjIFN0ZCBsaWIgY29tcGF0aWJpbGl0eQoKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAoJIm5ldC9odHRwIgoKCSJnaXRodWIuY29tL2dvLWZ1ZWdvL2Z1ZWdvIgopCgpmdW5jIG1haW4oKSB7CglzIDo9IGZ1ZWdvLk5ld1NlcnZlcigpCgoJLy8gU3RhbmRhcmQgbmV0L2h0dHAgbWlkZGxld2FyZQoJZnVlZ28uVXNlKHMsIGZ1bmMobmV4dCBodHRwLkhhbmRsZXIpIGh0dHAuSGFuZGxlciB7CgkJcmV0dXJuIGh0dHAuSGFuZGxlckZ1bmMoZnVuYyh3IGh0dHAuUmVzcG9uc2VXcml0ZXIsIHIgKmh0dHAuUmVxdWVzdCkgewoJCQl3LkhlYWRlcigpLlNldCgiWC1IZWxsbyIsICJXb3JsZCIpCgkJCW5leHQuU2VydmVIVFRQKHcsIHIpCgkJfSkKCX0pCgoJLy8gU3RhbmRhcmQgbmV0L2h0dHAgaGFuZGxlciB3aXRoIGF1dG9tYXRpYyBPcGVuQVBJIHJvdXRlIGRlY2xhcmF0aW9uCglmdWVnby5HZXRTdGQocywgIi9zdGQiLCBmdW5jKHcgaHR0cC5SZXNwb25zZVdyaXRlciwgciAqaHR0cC5SZXF1ZXN0KSB7CgkJdy5Xcml0ZShbXWJ5dGUoIkhlbGxvLCBXb3JsZCEiKSkKCX0pCgoJcy5SdW4oKQp9CmBgYAoKIyMjIFJlYWwtd29ybGQgZXhhbXBsZXMKClBsZWFzZSBzZWUgdGhlIFtgL2V4YW1wbGVzYCBmb2xkZXJdKC4vZXhhbXBsZXMvKSBmb3IgbW9yZSBleGFtcGxlcy4KCi0gW1NpbXBsZSBDUlVEIHdpdGggT3BlbkFQSV0oLi9leGFtcGxlcy9wZXRzdG9yZSkKLSBbRnVsbCBhcHAgd2l0aCBIVE1MIHJlbmRlcmluZ10oLi9leGFtcGxlcy9mdWxsLWFwcC1nb3VybWV0KQoKPGRldGFpbHM+CjxzdW1tYXJ5PkFsbCBmZWF0dXJlczwvc3VtbWFyeT4KCmBgYGdvCnBhY2thZ2UgbWFpbgoKaW1wb3J0ICgKCSJjb250ZXh0IgoJImVycm9ycyIKCSJuZXQvaHR0cCIKCSJzdHJpbmdzIgoKCWNoaU1pZGRsZXdhcmUgImdpdGh1Yi5jb20vZ28tY2hpL2NoaS92NS9taWRkbGV3YXJlIgoJImdpdGh1Yi5jb20vZ28tZnVlZ28vZnVlZ28iCgkiZ2l0aHViLmNvbS9ycy9jb3JzIgopCgp0eXBlIFJlY2VpdmVkIHN0cnVjdCB7CglOYW1lIHN0cmluZyBganNvbjoibmFtZSIgdmFsaWRhdGU6InJlcXVpcmVkImAKfQoKdHlwZSBNeVJlc3BvbnNlIHN0cnVjdCB7CglNZXNzYWdlICAgICAgIHN0cmluZyBganNvbjoibWVzc2FnZSJgCglCZXN0RnJhbWV3b3JrIHN0cmluZyBganNvbjoiYmVzdCJgCn0KCmZ1bmMgbWFpbigpIHsKCXMgOj0gZnVlZ28uTmV3U2VydmVyKAoJCWZ1ZWdvLldpdGhBZGRyKCJsb2NhbGhvc3Q6ODA4OCIpLAoJKQoKCWZ1ZWdvLlVzZShzLCBjb3JzLkRlZmF1bHQoKS5IYW5kbGVyKQoJZnVlZ28uVXNlKHMsIGNoaU1pZGRsZXdhcmUuQ29tcHJlc3MoNSwgInRleHQvaHRtbCIsICJ0ZXh0L2NzcyIpKQoKCS8vIEZ1ZWdvIPCflKUgaGFuZGxlciB3aXRoIGF1dG9tYXRpYyBPcGVuQVBJIGdlbmVyYXRpb24sIHZhbGlkYXRpb24sIChkZSlzZXJpYWxpemF0aW9uIGFuZCBlcnJvciBoYW5kbGluZwoJZnVlZ28uUG9zdChzLCAiLyIsIGZ1bmMoYyBmdWVnby5Db250ZXh0V2l0aEJvZHlbUmVjZWl2ZWRdKSAoTXlSZXNwb25zZSwgZXJyb3IpIHsKCQlkYXRhLCBlcnIgOj0gYy5Cb2R5KCkKCQlpZiBlcnIgIT0gbmlsIHsKCQkJcmV0dXJuIE15UmVzcG9uc2V7fSwgZXJyCgkJfQoKCQljLlJlc3BvbnNlKCkuSGVhZGVyKCkuU2V0KCJYLUhlbGxvIiwgIldvcmxkIikKCgkJcmV0dXJuIE15UmVzcG9uc2V7CgkJCU1lc3NhZ2U6ICAgICAgICJIZWxsbywgIiArIGRhdGEuTmFtZSwKCQkJQmVzdEZyYW1ld29yazogIkZ1ZWdvISIsCgkJfSwgbmlsCgl9KQoKCS8vIFN0YW5kYXJkIG5ldC9odHRwIGhhbmRsZXIgd2l0aCBhdXRvbWF0aWMgT3BlbkFQSSByb3V0ZSBkZWNsYXJhdGlvbgoJZnVlZ28uR2V0U3RkKHMsICIvc3RkIiwgZnVuYyh3IGh0dHAuUmVzcG9uc2VXcml0ZXIsIHIgKmh0dHAuUmVxdWVzdCkgewoJCXcuV3JpdGUoW11ieXRlKCJIZWxsbywgV29ybGQhIikpCgl9KQoKCXMuUnVuKCkKfQoKLy8gSW5UcmFuc2Zvcm0gd2lsbCBiZSBjYWxsZWQgd2hlbiB1c2luZyBjLkJvZHkoKS4KLy8gSXQgY2FuIGJlIHVzZWQgdG8gdHJhbnNmb3JtIHRoZSBlbnRpdHkgYW5kIHJhaXNlIGN1c3RvbSBlcnJvcnMKZnVuYyAociAqUmVjZWl2ZWQpIEluVHJhbnNmb3JtKGNvbnRleHQuQ29udGV4dCkgZXJyb3IgewoJci5OYW1lID0gc3RyaW5ncy5Ub0xvd2VyKHIuTmFtZSkKCWlmIHIuTmFtZSA9PSAiZnVlZ28iIHsKCQlyZXR1cm4gZXJyb3JzLk5ldygiZnVlZ28gaXMgbm90IGEgbmFtZSIpCgl9CglyZXR1cm4gbmlsCn0KCi8vIE91dFRyYW5zZm9ybSB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgc2VuZGluZyBkYXRhCmZ1bmMgKHIgKk15UmVzcG9uc2UpIE91dFRyYW5zZm9ybShjb250ZXh0LkNvbnRleHQpIGVycm9yIHsKCXIuTWVzc2FnZSA9IHN0cmluZ3MuVG9VcHBlcihyLk1lc3NhZ2UpCglyZXR1cm4gbmlsCn0KYGBgCgpgYGBiYXNoCmN1cmwgaHR0cDovL2xvY2FsaG9zdDo4MDg4L3N0ZAojIEhlbGxvLCBXb3JsZCEKY3VybCBodHRwOi8vbG9jYWxob3N0OjgwODggLVggUE9TVCAtZCAneyJuYW1lIjogIllvdXIgTmFtZSJ9JyAtSCAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJwojIHsibWVzc2FnZSI6IkhFTExPLCBZT1VSIE5BTUUiLCJiZXN0IjoiRnVlZ28hIn0KY3VybCBodHRwOi8vbG9jYWxob3N0OjgwODggLVggUE9TVCAtZCAneyJuYW1lIjogIkZ1ZWdvIn0nIC1IICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nCiMgeyJlcnJvciI6ImNhbm5vdCB0cmFuc2Zvcm0gcmVxdWVzdCBib2R5OiBjYW5ub3QgdHJhbnNmb3JtIHJlcXVlc3QgYm9keTogZnVlZ28gaXMgbm90IGEgbmFtZSJ9CmBgYAoKPC9kZXRhaWxzPgoKIyMgRnJvbSBuZXQvaHR0cCB0byBGdWVnbyBpbiAxMHMKCjxodHRwczovL2dpdGh1Yi5jb20vZ28tZnVlZ28vZnVlZ28vYXNzZXRzLzQ2OTkzOTM5Lzc0MzhhNzFjLTc1YTQtNGU4OC1hNTg0LTcxZGE2MzYyYzU3NT4KCjxkZXRhaWxzPgo8c3VtbWFyeT5WaWV3czwvc3VtbWFyeT4KCiMjIyBCZWZvcmUKCjxpbWcgd2lkdGg9Ijk0NiIgYWx0PSJpbWFnZSIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vZ28tZnVlZ28vZnVlZ28vYXNzZXRzLzQ2OTkzOTM5LzM5NGZlZDE3LWExZTItNGI2Ny04OWIyLThlNmM5ZWViNzcxYiI+CgojIyMjIEFmdGVyCgo8aW1nIHdpZHRoPSIxMDEwIiBhbHQ9ImltYWdlIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9nby1mdWVnby9mdWVnby9hc3NldHMvNDY5OTM5MzkvMzIxMDg4ZDctYmVjNC00NmNjLWE3ZWUtOWEwZmE0NWQ3NzExIj4KCiMjIyMgRGlmZgoKPGltZyB3aWR0aD0iMTQxMyIgYWx0PSJpbWFnZSIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vZ28tZnVlZ28vZnVlZ28vYXNzZXRzLzQ2OTkzOTM5LzE4Nzk2YTU5LWIyZTQtNGUwMS04MWQxLTg4YzU4MWRlMzQ2NiI+CgojIyMjIEJlbmVmaXRzIG9mIHVzaW5nIEZ1ZWdvIHZpZXdzIChjb250cm9sbGVycyByZXR1cm5pbmcgSFRNTCkKCi0gTmV2ZXIgZm9yZ2V0IHRvIHJldHVybiBhZnRlciBhbiBlcnJvcgotIE9wZW5BUEkgc2NoZW1hIGdlbmVyYXRlZCwgbGlzdGluZyBhbGwgdGhlIHJvdXRlcwotIERlc2VyaWFsaXphdGlvbiBhbmQgdmFsaWRhdGlvbiBhcmUgZWFzaWVyCi0gVHJhbnNpdGlvbiB0byBGdWVnbyBpcyBlYXN5IGFuZCBmYXN0Cgo8L2RldGFpbHM+CgojIyBDb250cmlidXRpbmcKClNlZSB0aGUgW2NvbnRyaWJ1dGluZyBndWlkZV0oQ09OVFJJQlVUSU5HLm1kKS4KVGhhbmtzIHRvIFtldmVyeW9uZSB3aG8gaGFzIGNvbnRyaWJ1dGVkXVtjb250cmlidXRvcnMtdXJsXSB0byB0aGlzIHByb2plY3QhIOKdpO+4jwoKPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvLWZ1ZWdvL2Z1ZWdvL2dyYXBocy9jb250cmlidXRvcnMiPgogIDxpbWcgc3JjPSJodHRwczovL2NvbnRyaWIucm9ja3MvaW1hZ2U/cmVwbz1nby1mdWVnby9mdWVnbyIgYWx0PSJHcmFwaCBvZiBjb250cmlidXRvcnMiIC8+CjwvYT4KCjxzbWFsbD5NYWRlIHdpdGggW2NvbnRyaWIucm9ja3NdKGh0dHBzOi8vY29udHJpYi5yb2Nrcyk8L3NtYWxsPgoKIyMgUm9hZG1hcAoKU2VlIHRoZSBbYm9hcmRdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdzL2dvLWZ1ZWdvL3Byb2plY3RzLzEpLgoKIyMgRGlzY2xhaW1lciBmb3IgZXhwZXJpZW5jZWQgZ29waGVycwoKSSBrbm93IHlvdSBtaWdodCBwcmVmZXIgdG8gdXNlIGBuZXQvaHR0cGAgZGlyZWN0bHksCmJ1dCBpZiBoYXZpbmcgYSBmcmFtZSBjYW4gY29udmluY2UgbXkgY29tcGFueSB0byB1c2UKR28gaW5zdGVhZCBvZiBOb2RlLCBJJ20gaGFwcHkgdG8gdXNlIGl0LgoKIyMgTGljZW5zZQoKW01JVF0oLi9MSUNFTlNFLnR4dCkKCltnaW4tZ29uaWMtaXNzdWVdOiBodHRwczovL2dpdGh1Yi5jb20vZ2luLWdvbmljL2dpbi9pc3N1ZXMvMTU1Cltjb250cmlidXRvcnMtdXJsXTogaHR0cHM6Ly9naXRodWIuY29tL2dvLWZ1ZWdvL2Z1ZWdvL2dyYXBocy9jb250cmlidXRvcnMK readmeEtag: '"86f196c41e91d5188f299ad5aba305b84ec0d81e"' readmeLastModified: Wed, 03 Dec 2025 18:40:14 GMT repositoryId: 706256859 description: >- Golang Fuego - Web framework generating OpenAPI 3 spec from source code - Pluggable to existing Gin & Echo APIs created: '2023-10-17T15:36:43Z' updated: '2026-02-05T23:37:43Z' language: Go archived: false stars: 1657 watchers: 12 forks: 122 owner: go-fuego logo: https://avatars.githubusercontent.com/u/148255240?v=4 license: MIT repoEtag: '"f19fab8b8d85ce36aaf95bc4397b730d3c911eb85d37a9916800f1953b704dd8"' repoLastModified: Thu, 05 Feb 2026 23:37:43 GMT foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags - openapi31 tags repository: https://github.com/danielgtaylor/huma v3: true repositoryMetadata: base64Readme: >- PGEgaHJlZj0iIyI+Cgk8cGljdHVyZT4KCQk8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vaHVtYS5yb2Nrcy9odW1hLWRhcmsucG5nIiAvPgoJCTxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vaHVtYS5yb2Nrcy9odW1hLnBuZyIgLz4KCQk8aW1nIGFsdD0iSHVtYSBMb2dvIiBzcmM9Imh0dHBzOi8vaHVtYS5yb2Nrcy9odW1hLnBuZyIgLz4KCTwvcGljdHVyZT4KPC9hPgoKWyFbSFVNQSBQb3dlcmVkXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1Bvd2VyZWQlMjBCeS1IVU1BLWY0MDI3MyldKGh0dHBzOi8vaHVtYS5yb2Nrcy8pIFshW0NJXShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9odW1hL3dvcmtmbG93cy9DSS9iYWRnZS5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9odW1hL2FjdGlvbnM/cXVlcnk9d29ya2Zsb3clM0FDSSticmFuY2glM0FtYWluKyspIFshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9kYW5pZWxndGF5bG9yL2h1bWEvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2RhbmllbGd0YXlsb3IvaHVtYSkgWyFbRG9jc10oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL2h1bWEvdjI/c3RhdHVzLnN2ZyldKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL2RhbmllbGd0YXlsb3IvaHVtYS92Mj90YWI9ZG9jKSBbIVtHbyBSZXBvcnQgQ2FyZF0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9odW1hL3YyKV0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL2RhbmllbGd0YXlsb3IvaHVtYS92MikKClsqKvCfjI7kuK3mlofmlofmoaMqKl0oLi9SRUFETUVfQ04ubWQpClsqKvCfh6/wn4e15pel5pys6Kqe44OJ44Kt44Ol44Oh44Oz44OIKipdKC4vUkVBRE1FX0pBLm1kKQoKLSBbV2hhdCBpcyBodW1hP10oI2ludHJvKQotIFtJbnN0YWxsXSgjaW5zdGFsbCkKLSBbRXhhbXBsZV0oI2V4YW1wbGUpCi0gW0RvY3VtZW50YXRpb25dKCNkb2N1bWVudGF0aW9uKQoKPGEgbmFtZT0iaW50cm8iPjwvYT4KQSBtb2Rlcm4sIHNpbXBsZSwgZmFzdCAmIGZsZXhpYmxlIG1pY3JvIGZyYW1ld29yayBmb3IgYnVpbGRpbmcgSFRUUCBSRVNUL1JQQyBBUElzIGluIEdvIGJhY2tlZCBieSBPcGVuQVBJIDMgYW5kIEpTT04gU2NoZW1hLiBQcm9ub3VuY2VkIElQQTogWy8naGp1y5BtyZEvXShodHRwczovL2VuLndpa3Rpb25hcnkub3JnL3dpa2kvV2lrdGlvbmFyeTpJbnRlcm5hdGlvbmFsX1Bob25ldGljX0FscGhhYmV0KS4gVGhlIGdvYWxzIG9mIHRoaXMgcHJvamVjdCBhcmUgdG8gcHJvdmlkZToKCi0gSW5jcmVtZW50YWwgYWRvcHRpb24gZm9yIHRlYW1zIHdpdGggZXhpc3Rpbmcgc2VydmljZXMKICAtIEJyaW5nIHlvdXIgb3duIHJvdXRlciAoaW5jbHVkaW5nIEdvIDEuMjIrKSwgbWlkZGxld2FyZSwgYW5kIGxvZ2dpbmcvbWV0cmljcwogIC0gRXh0ZW5zaWJsZSBPcGVuQVBJICYgSlNPTiBTY2hlbWEgbGF5ZXIgdG8gZG9jdW1lbnQgZXhpc3Rpbmcgcm91dGVzCi0gQSBtb2Rlcm4gUkVTVCBvciBIVFRQIFJQQyBBUEkgYmFja2VuZCBmcmFtZXdvcmsgZm9yIEdvIGRldmVsb3BlcnMKICAtIERlc2NyaWJlZCBieSBbT3BlbkFQSSAzLjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMS4wLm1kKSAmIFtKU09OIFNjaGVtYV0oaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvKQotIEd1YXJkIHJhaWxzIHRvIHByZXZlbnQgY29tbW9uIG1pc3Rha2VzCi0gRG9jdW1lbnRhdGlvbiB0aGF0IGNhbid0IGdldCBvdXQgb2YgZGF0ZQotIEhpZ2gtcXVhbGl0eSBnZW5lcmF0ZWQgZGV2ZWxvcGVyIHRvb2xpbmcKCkZlYXR1cmVzIGluY2x1ZGU6CgotIERlY2xhcmF0aXZlIGludGVyZmFjZSBvbiB0b3Agb2YgeW91ciByb3V0ZXIgb2YgY2hvaWNlOgogIC0gT3BlcmF0aW9uICYgbW9kZWwgZG9jdW1lbnRhdGlvbgogIC0gUmVxdWVzdCBwYXJhbXMgKHBhdGgsIHF1ZXJ5LCBoZWFkZXIsIG9yIGNvb2tpZSkKICAtIFJlcXVlc3QgYm9keQogIC0gUmVzcG9uc2VzIChpbmNsdWRpbmcgZXJyb3JzKQogIC0gUmVzcG9uc2UgaGVhZGVycwotIEpTT04gRXJyb3JzIHVzaW5nIFtSRkM5NDU3XShodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzk0NTcpIGFuZCBgYXBwbGljYXRpb24vcHJvYmxlbStqc29uYCBieSBkZWZhdWx0IChidXQgY2FuIGJlIGNoYW5nZWQpCi0gUGVyLW9wZXJhdGlvbiByZXF1ZXN0IHNpemUgbGltaXRzIHdpdGggc2FuZSBkZWZhdWx0cwotIFtDb250ZW50IG5lZ290aWF0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0NvbnRlbnRfbmVnb3RpYXRpb24pIGJldHdlZW4gc2VydmVyIGFuZCBjbGllbnQKICAtIFN1cHBvcnQgZm9yIEpTT04gKFtSRkMgODI1OV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzgyNTkpKSBhbmQgb3B0aW9uYWxseSBDQk9SIChbUkZDIDcwNDldKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MDQ5KSkgY29udGVudCB0eXBlcyB2aWEgdGhlIGBBY2NlcHRgIGhlYWRlciB3aXRoIHRoZSBkZWZhdWx0IGNvbmZpZy4KLSBDb25kaXRpb25hbCByZXF1ZXN0cyBzdXBwb3J0LCBlLmcuIGBJZi1NYXRjaGAgb3IgYElmLVVubW9kaWZpZWQtU2luY2VgIGhlYWRlciB1dGlsaXRpZXMuCi0gT3B0aW9uYWwgYXV0b21hdGljIGdlbmVyYXRpb24gb2YgYFBBVENIYCBvcGVyYXRpb25zIHRoYXQgc3VwcG9ydDoKICAtIFtSRkMgNzM4Nl0oaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzczODYpIEpTT04gTWVyZ2UgUGF0Y2gKICAtIFtSRkMgNjkwMl0oaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzY5MDIpIEpTT04gUGF0Y2gKICAtIFtTaG9ydGhhbmRdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL3Nob3J0aGFuZCkgcGF0Y2hlcwotIEFubm90YXRlZCBHbyB0eXBlcyBmb3IgaW5wdXQgYW5kIG91dHB1dCBtb2RlbHMKICAtIEdlbmVyYXRlcyBKU09OIFNjaGVtYSBmcm9tIEdvIHR5cGVzCiAgLSBTdGF0aWMgdHlwaW5nIGZvciBwYXRoL3F1ZXJ5L2hlYWRlciBwYXJhbXMsIGJvZGllcywgcmVzcG9uc2UgaGVhZGVycywgZXRjLgogIC0gQXV0b21hdGljIGlucHV0IG1vZGVsIHZhbGlkYXRpb24gJiBlcnJvciBoYW5kbGluZwotIERvY3VtZW50YXRpb24gZ2VuZXJhdGlvbiB1c2luZyBbU3RvcGxpZ2h0IEVsZW1lbnRzXShodHRwczovL3N0b3BsaWdodC5pby9vcGVuLXNvdXJjZS9lbGVtZW50cykKLSBPcHRpb25hbCBDTEkgYnVpbHQtaW4sIGNvbmZpZ3VyZWQgdmlhIGFyZ3VtZW50cyBvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMKICAtIFNldCB2aWEgZS5nLiBgLXAgODAwMGAsIGAtLXBvcnQ9ODAwMGAsIG9yIGBTRVJWSUNFX1BPUlQ9ODAwMGAKICAtIFN0YXJ0dXAgYWN0aW9ucyAmIGdyYWNlZnVsIHNodXRkb3duIGJ1aWx0LWluCi0gR2VuZXJhdGVzIE9wZW5BUEkgZm9yIGFjY2VzcyB0byBhIHJpY2ggZWNvc3lzdGVtIG9mIHRvb2xzCiAgLSBNb2NrcyB3aXRoIFtBUEkgU3Byb3V0XShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9hcGlzcHJvdXQpIG9yIFtQcmlzbV0oaHR0cHM6Ly9zdG9wbGlnaHQuaW8vb3Blbi1zb3VyY2UvcHJpc20pCiAgLSBTREtzIHdpdGggW09wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKSBvciBbb2FwaS1jb2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vZGVlcG1hcC9vYXBpLWNvZGVnZW4pCiAgLSBDTEkgd2l0aCBbUmVzdGlzaF0oaHR0cHM6Ly9yZXN0LnNoLykKICAtIEFuZCBbcGxlbnR5XShodHRwczovL29wZW5hcGkudG9vbHMvKSBbbW9yZV0oaHR0cHM6Ly9hcGlzLmd1cnUvYXdlc29tZS1vcGVuYXBpMy9jYXRlZ29yeS5odG1sKQotIEdlbmVyYXRlcyBKU09OIFNjaGVtYSBmb3IgZWFjaCByZXNvdXJjZSB1c2luZyBvcHRpb25hbCBgZGVzY3JpYmVkYnlgIGxpbmsgcmVsYXRpb24gaGVhZGVycyBhcyB3ZWxsIGFzIG9wdGlvbmFsIGAkc2NoZW1hYCBwcm9wZXJ0aWVzIGluIHJldHVybmVkIG9iamVjdHMgdGhhdCBpbnRlZ3JhdGUgaW50byBlZGl0b3JzIGZvciB2YWxpZGF0aW9uICYgY29tcGxldGlvbi4KClRoaXMgcHJvamVjdCB3YXMgaW5zcGlyZWQgYnkgW0Zhc3RBUEldKGh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vKS4gTG9nbyAmIGJyYW5kaW5nIGRlc2lnbmVkIGJ5IEthcmkgVGF5bG9yLgoKIyMgU3BvbnNvcnMKCkEgYmlnIHRoYW5rIHlvdSB0byBvdXIgY3VycmVudCAmIGZvcm1lciBzcG9uc29ycyEKCjxkaXY+CgkJCQkJPGltZyB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIwIiAvPgoJCQkJCTxhIGhyZWY9Imh0dHBzOi8venVwbG8ubGluay9odW1hLWdoICI+CgkJCQkJPHBpY3R1cmU+CgkJCQkJCQk8IS0tIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iZG9jcy96dXBsby1kYXJrLnBuZyI+IC0tPgoJCQkJCQkJPGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy9hYWNlNWFhNy0zMmJkLTQ1Y2YtYThmOC0yZTM1MmZlYWYwMTciIGFsdD0iWnVwbG8iIHdpZHRoPSIyNjAiIGFsaWduPSJyaWdodCI+CgkJCQkJPC9waWN0dXJlPgoJCQkJCTwvYT4KCQkJCQk8aDM+WnVwbG86IFNjYWxlLCBQcm90ZWN0LCBhbmQgUHJvZHVjdGl6ZSB5b3VyIEh1bWEgQVBJPC9oMz4KCQkJCQk8cD4KCQkJCQkJCU91ciBBUEkgR2F0ZXdheSBhbGxvd3MgeW91IHRvIHNlY3VyZSB5b3VyIEFQSSwgc2NhbGUgaXQgZ2xvYmFsbHksIGdlbmVyYXRlIGRvY3VtZW50YXRpb24gZnJvbSB5b3VyIE9wZW5BUEksIGFuZCBtb25ldGl6ZSB5b3VyIHVzZXJzLgoJCQkJCTwvcD4KCQkJCQk8YSBocmVmPSJodHRwczovL3p1cGxvLmxpbmsvaHVtYS1naCAiPlN0YXJ0IGZvciBGcmVlPC9hPgo8L2Rpdj4KPGhyLz4KCi0gW0BiY2xlbWVudHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9iY2xlbWVudHMpCi0gW0BiZWthYmF6XShodHRwczovL2dpdGh1Yi5jb20vYmVrYWJheikKLSBbQHZpY3RvcmF1Z3VzdG9sbHNdKGh0dHBzOi8vZ2l0aHViLmNvbS92aWN0b3JhdWd1c3RvbGxzKQotIFtAcGhvZW5peHRlY2hub2xvZ2llcy1pb10oaHR0cHM6Ly9naXRodWIuY29tL3Bob2VuaXh0ZWNobm9sb2dpZXMtaW8pCi0gW0BjaGVuanIwNzE5XShodHRwczovL2dpdGh1Yi5jb20vY2hlbmpyMDcxOSkKLSBbQHZpbm9ncmFkb3Zrb25zdF0oaHR0cHM6Ly9naXRodWIuY29tL3Zpbm9ncmFkb3Zrb25zdCkKLSBbQG1peWFtbzJdKGh0dHBzOi8vZ2l0aHViLmNvbS9taXlhbW8yKQotIFtAbmllbHNrcmlqZ2VyXShodHRwczovL2dpdGh1Yi5jb20vbmllbHNrcmlqZ2VyKQoKIyMgVGVzdGltb25pYWxzCgo+IFRoaXMgaXMgYnkgZmFyIG15IGZhdm9yaXRlIHdlYiBmcmFtZXdvcmsgZm9yIEdvLiBJdCBpcyBpbnNwaXJlZCBieSBGYXN0QVBJLCB3aGljaCBpcyBhbHNvIGFtYXppbmcsIGFuZCBjb25mb3JtcyB0byBtYW55IFJGQ3MgZm9yIGNvbW1vbiB3ZWIgdGhpbmdzIC4uLiBJIHJlYWxseSBsaWtlIHRoZSBmZWF0dXJlIHNldCwgdGhlIGZhY3QgdGhhdCBpdCBbY2FuIHVzZV0gQ2hpLCBhbmQgdGhlIGZhY3QgdGhhdCBpdCBpcyBzdGlsbCBzb21laG93IHJlbGF0aXZlbHkgc2ltcGxlIHRvIHVzZS4gSSd2ZSB0cmllZCBvdGhlciBmcmFtZXdvcmtzIGFuZCB0aGV5IGRvIG5vdCBzcGFyayBqb3kgZm9yIG1lLiAtIFtKZWJfSmVua3ldKGh0dHBzOi8vd3d3LnJlZGRpdC5jb20vci9nb2xhbmcvY29tbWVudHMvemhpdGNnL2NvbW1lbnQvaXptZzZ2ay8/dXRtX3NvdXJjZT1yZWRkaXQmdXRtX21lZGl1bT13ZWIyeCZjb250ZXh0PTMpCgo+IEFmdGVyIHdvcmtpbmcgd2l0aCAjR29sYW5nIGZvciBvdmVyIGEgeWVhciwgSSBzdHVtYmxlZCB1cG9uIEh1bWEsIHRoZSAjRmFzdEFQSS1pbnNwaXJlZCB3ZWIgZnJhbWV3b3JrLiBJdOKAmXMgdGhlIENocmlzdG1hcyBtaXJhY2xlIEnigJl2ZSBiZWVuIGhvcGluZyBmb3IhIFRoaXMgZnJhbWV3b3JrIGhhcyBldmVyeXRoaW5nISAtIFtIYW5hIE1vaGFuXShodHRwczovL3R3aXR0ZXIuY29tL3VuYW1hc2hhbmEvc3RhdHVzLzE3MzMwODgwNjYwNTM1ODMxOTcpCgo+IEkgbG92ZSBIdW1hLiBUaGFuayB5b3UsIHNpbmNlcmVseSwgZm9yIHRoaXMgYXdlc29tZSBwYWNrYWdlLiBJ4oCZdmUgYmVlbiB1c2luZyBpdCBmb3Igc29tZSB0aW1lIG5vdyBhbmQgaXTigJlzIGJlZW4gZ3JlYXQhIC0gW3Bsc2NvdHRdKGh0dHBzOi8vd3d3LnJlZGRpdC5jb20vci9nb2xhbmcvY29tbWVudHMvMWFvc2hleS9jb21tZW50L2txNmhjcGQvP3V0bV9zb3VyY2U9cmVkZGl0JnV0bV9tZWRpdW09d2ViMngmY29udGV4dD0zKQoKPiBUaGFuayB5b3UgRGFuaWVsIGZvciBIdW1hLiBTdXBlcmJseSB1c2VmdWwgcHJvamVjdCBhbmQgc2F2ZXMgdXMgYSBsb3Qgb2YgdGltZSBhbmQgaGFzc2xlIHRoYW5rcyB0byB0aGUgT3BlbkFQSSBnZW4g4oCUIHNpbWlsYXIgdG8gRmFzdEFQSSBpbiBQeXRob24uIC0gW1dvbHZlc09mQWxsU3RyZWV0c10oaHR0cHM6Ly93d3cucmVkZGl0LmNvbS9yL2dvbGFuZy9jb21tZW50cy8xYXFqOTlkL2NvbW1lbnQva3FmcWNtbC8/dXRtX3NvdXJjZT1yZWRkaXQmdXRtX21lZGl1bT13ZWIyeCZjb250ZXh0PTMpCgo+IEh1bWEgaXMgd29uZGVyZnVsLCBJJ3ZlIHN0YXJ0ZWQgd29ya2luZyB3aXRoIGl0IHJlY2VudGx5LCBhbmQgaXQncyBhIHBsZWFzdXJlLCBzbyB0aGFuayB5b3UgdmVyeSBtdWNoIGZvciB5b3VyIGVmZm9ydHMg8J+ZjyAtIFtjYWxsbWVtaWNhaF0oaHR0cHM6Ly93d3cucmVkZGl0LmNvbS9yL2dvbGFuZy9jb21tZW50cy8xYjMydHM0L2NvbW1lbnQva3N2cjloNy8/dXRtX3NvdXJjZT1yZWRkaXQmdXRtX21lZGl1bT13ZWIyeCZjb250ZXh0PTMpCgo+IEl0IHRvb2sgdXMgMyBtb250aHMgdG8gYnVpbGQgb3VyIHBsYXRmb3JtIGluIFB5dGhvbiB3aXRoIEZhc3RBUEksIFNRTCBBbGNoZW15IGFuZCBvbmx5IDMgd2Vla3MgdG8gcmV3cml0ZSBpdCBpbiBHbyB3aXRoIEh1bWEgYW5kIFNRTCBDLiBUaGluZ3MganVzdCB3b3JrIGFuZCBJIHNlbGRvbWx5IGhhdmUgdG8gZGVidWcgd2hlcmUgaW4gUHl0aG9uIEkgc3BlbnQgYSBtYWpvcml0eSBvZiBteSB0aW1lIGRlYnVnZ2luZy4gLSBbQml0Y2xpY2tcX10oaHR0cHM6Ly93d3cucmVkZGl0LmNvbS9yL2dvbGFuZy9jb21tZW50cy8xY2oyem5iL2NvbW1lbnQvbDJlNHU2eS8pCgo+IExvb2sgYXQgSHVtYSwgaXQncyBncmVhdC4gQSBuaWNlIHNsaW0gbGF5ZXIgb24gdG9wIG9mIHN0ZGxpYiBtdXgvY2hpIGFuZCBhdXRvbWF0aWMgYm9keSBhbmQgcGFyYW1ldGVyIHNlcmlhbGl6YXRpb24sIGtpbmRhIGZlZWxzIGxpa2UgZG9pbmcgZG90bmV0IHdlYiBBUElzLCBidXQgZm9yY2VzIHlvdSB0byBhY3R1YWxseSBkZXNpZ24gcmVxdWVzdCBhbmQgcmVzcG9uc2Ugc3RydWN0cywgd2hpY2ggaXMgZ3JlYXQgaW1vLiAtIFtLaXJpZGVzXShodHRwczovL3d3dy5yZWRkaXQuY29tL3IvZ29sYW5nL2NvbW1lbnRzLzFmbm41YzIvY29tbWVudC9sb2t1dnBvLykKCiMgSW5zdGFsbAoKSW5zdGFsbCB2aWEgYGdvIGdldGAuIE5vdGUgdGhhdCBHbyAxLjIzIG9yIG5ld2VyIGlzIHJlcXVpcmVkLgoKYGBgc2gKIyBBZnRlcjogZ28gbW9kIGluaXQgLi4uCmdvIGdldCAtdSBnaXRodWIuY29tL2RhbmllbGd0YXlsb3IvaHVtYS92MgpgYGAKCiMgRXhhbXBsZQoKSGVyZSBpcyBhIGNvbXBsZXRlIGJhc2ljIGhlbGxvIHdvcmxkIGV4YW1wbGUgaW4gSHVtYSwgdGhhdCBzaG93cyBob3cgdG8gaW5pdGlhbGl6ZSBhIEh1bWEgYXBwIGNvbXBsZXRlIHdpdGggQ0xJLCBkZWNsYXJlIGEgcmVzb3VyY2Ugb3BlcmF0aW9uLCBhbmQgZGVmaW5lIGl0cyBoYW5kbGVyIGZ1bmN0aW9uLgoKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAoJImNvbnRleHQiCgkiZm10IgoJIm5ldC9odHRwIgoKCSJnaXRodWIuY29tL2RhbmllbGd0YXlsb3IvaHVtYS92MiIKCSJnaXRodWIuY29tL2RhbmllbGd0YXlsb3IvaHVtYS92Mi9hZGFwdGVycy9odW1hY2hpIgoJImdpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9odW1hL3YyL2h1bWFjbGkiCgkiZ2l0aHViLmNvbS9nby1jaGkvY2hpL3Y1IgoKCV8gImdpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9odW1hL3YyL2Zvcm1hdHMvY2JvciIKKQoKLy8gT3B0aW9ucyBmb3IgdGhlIENMSS4gUGFzcyBgLS1wb3J0YCBvciBzZXQgdGhlIGBTRVJWSUNFX1BPUlRgIGVudiB2YXIuCnR5cGUgT3B0aW9ucyBzdHJ1Y3QgewoJUG9ydCBpbnQgYGhlbHA6IlBvcnQgdG8gbGlzdGVuIG9uIiBzaG9ydDoicCIgZGVmYXVsdDoiODg4OCJgCn0KCi8vIEdyZWV0aW5nT3V0cHV0IHJlcHJlc2VudHMgdGhlIGdyZWV0aW5nIG9wZXJhdGlvbiByZXNwb25zZS4KdHlwZSBHcmVldGluZ091dHB1dCBzdHJ1Y3QgewoJQm9keSBzdHJ1Y3QgewoJCU1lc3NhZ2Ugc3RyaW5nIGBqc29uOiJtZXNzYWdlIiBleGFtcGxlOiJIZWxsbywgd29ybGQhIiBkb2M6IkdyZWV0aW5nIG1lc3NhZ2UiYAoJfQp9CgpmdW5jIG1haW4oKSB7CgkvLyBDcmVhdGUgYSBDTEkgYXBwIHdoaWNoIHRha2VzIGEgcG9ydCBvcHRpb24uCgljbGkgOj0gaHVtYWNsaS5OZXcoZnVuYyhob29rcyBodW1hY2xpLkhvb2tzLCBvcHRpb25zICpPcHRpb25zKSB7CgkJLy8gQ3JlYXRlIGEgbmV3IHJvdXRlciAmIEFQSQoJCXJvdXRlciA6PSBjaGkuTmV3TXV4KCkKCQlhcGkgOj0gaHVtYWNoaS5OZXcocm91dGVyLCBodW1hLkRlZmF1bHRDb25maWcoIk15IEFQSSIsICIxLjAuMCIpKQoKCQkvLyBBZGQgdGhlIG9wZXJhdGlvbiBoYW5kbGVyIHRvIHRoZSBBUEkuCgkJaHVtYS5HZXQoYXBpLCAiL2dyZWV0aW5nL3tuYW1lfSIsIGZ1bmMoY3R4IGNvbnRleHQuQ29udGV4dCwgaW5wdXQgKnN0cnVjdHsKCQkJTmFtZSBzdHJpbmcgYHBhdGg6Im5hbWUiIG1heExlbmd0aDoiMzAiIGV4YW1wbGU6IndvcmxkIiBkb2M6Ik5hbWUgdG8gZ3JlZXQiYAoJCX0pICgqR3JlZXRpbmdPdXRwdXQsIGVycm9yKSB7CgkJCXJlc3AgOj0gJkdyZWV0aW5nT3V0cHV0e30KCQkJcmVzcC5Cb2R5Lk1lc3NhZ2UgPSBmbXQuU3ByaW50ZigiSGVsbG8sICVzISIsIGlucHV0Lk5hbWUpCgkJCXJldHVybiByZXNwLCBuaWwKCQl9KQoKCQkvLyBUZWxsIHRoZSBDTEkgaG93IHRvIHN0YXJ0IHlvdXIgcm91dGVyLgoJCWhvb2tzLk9uU3RhcnQoZnVuYygpIHsKCQkJaHR0cC5MaXN0ZW5BbmRTZXJ2ZShmbXQuU3ByaW50ZigiOiVkIiwgb3B0aW9ucy5Qb3J0KSwgcm91dGVyKQoJCX0pCgl9KQoKCS8vIFJ1biB0aGUgQ0xJLiBXaGVuIHBhc3NlZCBubyBjb21tYW5kcywgaXQgc3RhcnRzIHRoZSBzZXJ2ZXIuCgljbGkuUnVuKCkKfQpgYGAKCj4gWyFUSVBdCj4gUmVwbGFjZSBgY2hpLk5ld011eCgpYCDihpIgYGh0dHAuTmV3U2VydmVNdXgoKWAgYW5kIGBodW1hY2hpLk5ld2Ag4oaSIGBodW1hZ28uTmV3YCB0byB1c2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgcm91dGVyIGZyb20gR28gMS4yMisuIEp1c3QgbWFrZSBzdXJlIHlvdXIgYGdvLm1vZGAgaGFzIGBnbyAxLjIyYCBvciBuZXdlciBsaXN0ZWQgaW4gaXQuIEV2ZXJ5dGhpbmcgZWxzZSBzdGF5cyB0aGUgc2FtZSEgU3dpdGNoIHdoZW5ldmVyIHlvdSBhcmUgcmVhZHkuCgpZb3UgY2FuIHRlc3QgaXQgd2l0aCBgZ28gcnVuIGdyZWV0LmdvYCAob3B0aW9uYWxseSBwYXNzIGAtLXBvcnRgIHRvIGNoYW5nZSB0aGUgZGVmYXVsdCkgYW5kIG1ha2UgYSBzYW1wbGUgcmVxdWVzdCB1c2luZyBbUmVzdGlzaF0oaHR0cHM6Ly9yZXN0LnNoLykgKG9yIGBjdXJsYCk6CgpgYGBzaAojIEdldCB0aGUgbWVzc2FnZSBmcm9tIHRoZSBzZXJ2ZXIKJCByZXN0aXNoIDo4ODg4L2dyZWV0aW5nL3dvcmxkCkhUVFAvMS4xIDIwMCBPSwouLi4KewoJJHNjaGVtYTogImh0dHA6Ly9sb2NhbGhvc3Q6ODg4OC9zY2hlbWFzL0dyZWV0aW5nT3V0cHV0Qm9keS5qc29uIiwKCW1lc3NhZ2U6ICJIZWxsbywgd29ybGQhIgp9CmBgYAoKRXZlbiB0aG91Z2ggdGhlIGV4YW1wbGUgaXMgdGlueSB5b3UgY2FuIGFsc28gc2VlIHNvbWUgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24gYXQgaHR0cDovL2xvY2FsaG9zdDo4ODg4L2RvY3MuIFRoZSBnZW5lcmF0ZWQgT3BlbkFQSSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL2xvY2FsaG9zdDo4ODg4L29wZW5hcGkuanNvbiBvciBodHRwOi8vbG9jYWxob3N0Ojg4ODgvb3BlbmFwaS55YW1sLgoKQ2hlY2sgb3V0IHRoZSBbSHVtYSB0dXRvcmlhbF0oaHR0cHM6Ly9odW1hLnJvY2tzL3R1dG9yaWFsL2luc3RhbGxhdGlvbi8pIGZvciBhIHN0ZXAtYnktc3RlcCBndWlkZSB0byBnZXQgc3RhcnRlZC4KCiMgRG9jdW1lbnRhdGlvbgoKU2VlIHRoZSBbaHR0cHM6Ly9odW1hLnJvY2tzL10oaHR0cHM6Ly9odW1hLnJvY2tzLykgd2Vic2l0ZSBmb3IgZnVsbCBkb2N1bWVudGF0aW9uIGluIGEgcHJlc2VudGF0aW9uIHRoYXQncyBlYXNpZXIgdG8gbmF2aWdhdGUgYW5kIHNlYXJjaCB0aGVuIHRoaXMgUkVBRE1FLiBZb3UgY2FuIGZpbmQgdGhlIHNvdXJjZSBmb3IgdGhlIHNpdGUgaW4gdGhlIGBkb2NzYCBkaXJlY3Rvcnkgb2YgdGhpcyByZXBvLgoKT2ZmaWNpYWwgR28gcGFja2FnZSBkb2N1bWVudGF0aW9uIGNhbiBhbHdheXMgYmUgZm91bmQgYXQgaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9odW1hL3YyLgoKIyBBcnRpY2xlcyAmIE1lbnRpb25zCgotIFtBUElzIGluIEdvIHdpdGggSHVtYSAyLjBdKGh0dHBzOi8vZGd0Lmhhc2hub2RlLmRldi9hcGlzLWluLWdvLXdpdGgtaHVtYS0yMCkKLSBbUmVkdWNpbmcgR28gRGVwZW5kZW5jaWVzOiBBIGNhc2Ugc3R1ZHkgb2YgZGVwZW5kZW5jeSByZWR1Y3Rpb24gaW4gSHVtYV0oaHR0cHM6Ly9kZ3QuaGFzaG5vZGUuZGV2L3JlZHVjaW5nLWdvLWRlcGVuZGVuY2llcykKLSBbR29sYW5nIE5ld3MgJiBMaWJzICYgSm9icyBzaGFyZWQgb24gVHdpdHRlci9YXShodHRwczovL3R3aXR0ZXIuY29tL2dvbGFuZ2NoL3N0YXR1cy8xNzUyMTc1NDk5NzAxMjY0NTMyKQotIEZlYXR1cmVkIGluIEdvIFdlZWtseSBbIzQ5NV0oaHR0cHM6Ly9nb2xhbmd3ZWVrbHkuY29tL2lzc3Vlcy80OTUpICYgWyM0OThdKGh0dHBzOi8vZ29sYW5nd2Vla2x5LmNvbS9pc3N1ZXMvNDk4KQotIFtCdW1wLnNoIERlcGxveWluZyBEb2NzIGZyb20gSHVtYV0oaHR0cHM6Ly9kb2NzLmJ1bXAuc2gvZ3VpZGVzL2J1bXAtc2gtdHV0b3JpYWxzL2h1bWEvKQotIE1lbnRpb25lZCBpbiBbQ29tcG9zYWJsZSBIVFRQIEhhbmRsZXJzIFVzaW5nIEdlbmVyaWNzXShodHRwczovL3d3dy53aWxsZW0uZGV2L2FydGljbGVzL2dlbmVyaWMtaHR0cC1oYW5kbGVycy8pCgpCZSBzdXJlIHRvIHN0YXIgdGhlIHByb2plY3QgaWYgeW91IGZpbmQgaXQgdXNlZnVsIQoKPGEgaHJlZj0iaHR0cHM6Ly9zdGFyLWhpc3RvcnkuY29tLyNkYW5pZWxndGF5bG9yL2h1bWEmRGF0ZSI+Cgk8cGljdHVyZT4KCQk8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vYXBpLnN0YXItaGlzdG9yeS5jb20vc3ZnP3JlcG9zPWRhbmllbGd0YXlsb3IvaHVtYSZ0eXBlPURhdGUmdGhlbWU9ZGFyayIgLz4KCQk8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KSIgc3Jjc2V0PSJodHRwczovL2FwaS5zdGFyLWhpc3RvcnkuY29tL3N2Zz9yZXBvcz1kYW5pZWxndGF5bG9yL2h1bWEmdHlwZT1EYXRlIiAvPgoJCTxpbWcgYWx0PSJTdGFyIEhpc3RvcnkgQ2hhcnQiIHNyYz0iaHR0cHM6Ly9hcGkuc3Rhci1oaXN0b3J5LmNvbS9zdmc/cmVwb3M9ZGFuaWVsZ3RheWxvci9odW1hJnR5cGU9RGF0ZSIgLz4KCTwvcGljdHVyZT4KPC9hPgo= readmeEtag: '"448a830b5adc390545662eeea6de85aee9b681dc"' readmeLastModified: Fri, 12 Sep 2025 04:54:47 GMT repositoryId: 245763170 description: Huma REST/HTTP API Framework for Golang with OpenAPI 3.1 created: '2020-03-08T06:19:51Z' updated: '2026-02-05T23:40:20Z' language: Go archived: false stars: 3795 watchers: 27 forks: 242 owner: danielgtaylor logo: https://avatars.githubusercontent.com/u/106826?v=4 license: MIT repoEtag: '"8b235155914ed233e5b619eacdd2fb7b971173885b1942302bc602caebf38499"' repoLastModified: Thu, 05 Feb 2026 23:40:20 GMT foundInMaster: true category: - Auto Generators - Data Validators - Server id: 96ae035d7b486f67e7bae7f6208179f9 v3_1: true name: Huma language: Go link: https://huma.rocks/ source_description: >- A modern, simple, fast & flexible micro framework for building HTTP REST/RPC APIs in Go backed by OpenAPI 3 and JSON Schema. - source: https://openapi.tools/ name: openapi-merge category: - Converters - Server Implementations language: TypeScript repository: https://github.com/robertmassaioli/openapi-merge link: https://github.com/robertmassaioli/openapi-merge source_description: >- A simple tool to merge multiple independent OpenAPI description files into one file. Useful when you have a number of microservices and you decide to expose them through a gateway. v2: false v3: true v3_1: false id: d02b4c51ae616ca5f33e3d4d36dab531 repositoryMetadata: base64Readme: >- IyMgVGhlIG9wZW5hcGktbWVyZ2UgcmVwb3NpdG9yeQoKV2VsY29tZSB0byB0aGUgb3BlbmFwaS1tZXJnZSByZXBvc2l0b3J5LiBUaGlzIGxpYnJhcnkgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbWVyZ2luZyBtdWx0aXBsZSBPcGVuQVBJIDMuMCBmaWxlcyB0b2dldGhlci4gVGhlIG1vc3QgY29tbW9uIHJlYXNvbiB0aGF0IGRldmVsb3BlcnMgd2FudCB0byBkbyB0aGlzIGlzIGJlY2F1c2UgdGhleSBoYXZlIG11bHRpcGxlIHNlcnZpY2VzIHRoYXQgdGhleSB3aXNoIHRvIGV4cG9zZSB1bmRlcm5lYXRoIGEgc2luZ2xlIEFQSSBHYXRld2F5LiBUaGVyZWZvcmUsIGV2ZW4gdGhvdWdoIHRoaXMgbWVyZ2luZyBsb2dpYyBpcyBzdWZmaWNpZW50bHkgZ2VuZXJpYyB0byBiZSB1c2VkIGZvciBtb3N0IHVzZSBjYXNlcywgc29tZSBvZiB0aGUgZmVhdHVyZSBkZWNpc2lvbnMgYXJlIHRhaWxvcmVkIGZvciB0aGF0IHNwZWNpZmljIHVzZSBjYXNlLgoKIyMjIFNjcmVlbnNob3RzCgohW0ltZ3VyXShodHRwczovL2kuaW1ndXIuY29tL0dqblNYQ1MucG5nKQooQW4gZXhhbXBsZSBvZiBjcmVhdGluZyBhbiBvcGVuYXBpLW1lcmdlLmpzb24gY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgQ0xJIHRvb2wpCgojIyMgQWJvdXQgdGhpcyByZXBvc2l0b3J5CgpUaGlzIGlzIGEgbXVsdGktcGFja2FnZSByZXBvc2l0b3J5IHRoYXQgY29udGFpbnM6CgoqIFRoZSBvcGVuYXBpLW1lcmdlIGxpYnJhcnk6IFshW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9vcGVuYXBpLW1lcmdlP2xhYmVsPW9wZW5hcGktbWVyZ2UmbG9nbz1ucG0pXShodHRwczovL2JpdC5seS8yV25JeXRGKQoqIFRoZSBvcGVuYXBpLW1lcmdlIENMSSB0b29sOiBbIVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3Yvb3BlbmFwaS1tZXJnZS1jbGk/bGFiZWw9b3BlbmFwaS1tZXJnZS1jbGkmbG9nbz1ucG0pXShodHRwczovL2JpdC5seS8zYkVWcTNmKQoKRGVwZW5kaW5nIG9uIHlvdXIgdXNlLWNhc2UsIHlvdSBtYXkgd2lzaCB0byB1c2UgdGhlIENMSSB0b29sIG9yIHRoZSBsaWJyYXJ5IGluIHlvdXIgcHJvamVjdC4gUGxlYXNlIHNlZSB0aGUgcmVhZG1lIGZpbGUgb2YgdGhlIHNwZWNpZmljIHBhY2thZ2UgZm9yIG1vcmUgZGV0YWlscy4KCiMjIyBEZXZlbG9waW5nIG9uIG9wZW5hcGktbWVyZ2UKClRoaXMgcHJvamVjdCBpcyBhIG11bHRpLXBhY2thZ2UgcmVwb3NpdG9yeSBhbmQgdXNlcyB0aGUgW2JvbHRdWzFdIHRvb2wgdG8gbWFuYWdlIHRoZXNlIHBhY2thZ2VzIGluIG9uZSBkZXZlbG9wbWVudCBleHBlcmllbmNlLgoKQWZ0ZXIgY2hlY2tpbmcgb3V0IHRoaXMgcmVwb3NpdG9yeSwgeW91IGNhbiBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGluc3RhbGwgdGhlIHJlcXVpcmVkIGRlcGVuZGVuY2llczoKCmBgYCBzaGVsbApib2x0IGluc3RhbGwKYGBgCgpZb3UgY2FuIHRoZW4gdGVzdCBydW5uaW5nIHRoZSBDTEkgdG9vbCBieSBydW5uaW5nOgoKYGBgIHNoZWxsCnlhcm4gY2xpCmBgYAoKSWYgeW91IHdpc2ggdG8gZW5zdXJlIHRoYXQgeW91IGNhbiBkZXZlbG9wIG9uIHRoZSBgb3BlbmFwaS1tZXJnZWAgbGlicmFyeSBpbiBwYXJhbGxlbCB0byB0aGUgYG9wZW5hcGktbWVyZ2UtY2xpYCB0b29sCnRoZW4geW91IG11c3QgcnVuIHRoZSBUeXBlc2NyaXB0IGJ1aWxkIGZvciBgb3BlbmFwaS1tZXJnZWAgaW4gd2F0Y2ggbW9kZS4gWW91IGNhbiBkbyB0aGlzIGJ5OgoKYGBgIHNoZWxsCmJvbHQgdyBvcGVuYXBpLW1lcmdlIGJ1aWxkIC13CmBgYAoKVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHRoZSBUeXBlc2NyaXB0IGlzIGNvbXBpbGVkIGludG8gSmF2YVNjcmlwdCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGJ5IHRoZSBgb3BlbmFwaS1tZXJnZS1jbGlgIHRvb2wuCgpGb3IgdGhlIG90aGVyIG9wZXJhdGlvbnMgdGhhdCB5b3Ugd2lzaCB0byBwZXJmb3JtLCBwbGVhc2Ugc2VlIHRoZSBwYWNrYWdlLmpzb24gb2YgdGhlIG90aGVyIHBhY2thZ2VzIGluIHRoaXMgcmVwb3NpdG9yeS4KCiBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9ib2x0cGtnL2JvbHQ= readmeEtag: '"97186676a02261a5d5d40f2f90071c23a7a68751"' readmeLastModified: Thu, 06 Jun 2024 04:47:59 GMT repositoryId: 369944083 description: >- Merge multiple OpenAPI 3.0 (Swagger) files together via a library or CLI tool. created: '2021-05-23T02:23:17Z' updated: '2026-01-26T13:59:55Z' language: TypeScript archived: false stars: 171 watchers: 3 forks: 31 owner: robertmassaioli logo: https://avatars.githubusercontent.com/u/149178?v=4 license: MIT repoEtag: '"15898bc072f9db7569c6d0f83ee6d643a8e3de71b04cb23ba2040ff3788fa36d"' repoLastModified: Mon, 26 Jan 2026 13:59:55 GMT foundInMaster: true - source: https://openapi.tools/ name: OpenAPI::Modern category: - Description Validators - Data Validators repository: https://github.com/karenetheridge/openapi-modern link: https://metacpan.org/dist/OpenAPI-Modern language: Perl source_description: >- OpenAPI v3.1 validator and JSON Schema validator (draft7, draft2019-09, draft2020-12) v3_1: true id: ca155f2693c6aa619365c0854c0125f5 repositoryMetadata: base64Readme: >- PXBvZAoKPWVuY29kaW5nIFVURi04Cgo9aGVhZDEgTkFNRQoKT3BlbkFQSTo6TW9kZXJuIC0gVmFsaWRhdGUgSFRUUCByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzIGFnYWluc3QgYW4gT3BlbkFQSSB2My4wLCB2My4xIG9yIHYzLjIgZG9jdW1lbnQKCj1oZWFkMSBWRVJTSU9OCgp2ZXJzaW9uIDAuMTI2Cgo9aGVhZDEgU1lOT1BTSVMKCiAgbXkgJG9wZW5hcGkgPSBPcGVuQVBJOjpNb2Rlcm4tPm5ldygKICAgIG9wZW5hcGlfdXJpID0+ICdodHRwczovL3Byb2QuZXhhbXBsZS5jb20nLCAgIyBhZGp1c3QgZm9yIGVhY2ggZGVwbG95bWVudCBlbnZpcm9ubWVudAogICAgb3BlbmFwaV9zY2hlbWEgPT4gWUFNTDo6UFAtPm5ldyhib29sZWFuID0+ICdKU09OOjpQUCcpLT5sb2FkX3N0cmluZyg8PCdZQU1MJykpOwogICRzZWxmOiAvYXBpICAgICAgICAgIyBjYW5vbmljYWxfdXJpIHdpbGwgYmVjb21lIGh0dHBzOi8vcHJvZC5leGFtcGxlLmNvbS9hcGkKICBvcGVuYXBpOiAzLjIuMAogIGluZm86CiAgICB0aXRsZTogVGVzdCBBUEkKICAgIHZlcnNpb246IDEuMi4zCiAgcGF0aHM6CiAgICAvZm9vL3tmb29faWR9OgogICAgICBzZXJ2ZXJzOgogICAgICAgIC0gdXJsOiBodHRwczovL3tob3N0fS5leGFtcGxlLmNvbQogICAgICAgICAgdmFyaWFibGVzOgogICAgICAgICAgICBob3N0OgogICAgICAgICAgICAgIGRlZmF1bHQ6IHByb2QKICAgICAgICAgICAgICBlbnVtOiBbZGV2LCBzdGcsIHByb2RdCiAgICAgIHBhcmFtZXRlcnM6CiAgICAgIC0gbmFtZTogZm9vX2lkCiAgICAgICAgaW46IHBhdGgKICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgIHNjaGVtYToKICAgICAgICAgIHBhdHRlcm46IF5bYS16XSskCiAgICAgIC0gbmFtZTogYmFyX2lkCiAgICAgICAgaW46IHBhdGgKICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgIHNjaGVtYToKICAgICAgICAgIHBhdHRlcm46IF5cZCskCiAgICAgIHBvc3Q6CiAgICAgICAgb3BlcmF0aW9uSWQ6IG15X2Zvb19yZXF1ZXN0CiAgICAgICAgcGFyYW1ldGVyczoKICAgICAgICAtIG5hbWU6IE15LVJlcXVlc3QtSGVhZGVyCiAgICAgICAgICBpbjogaGVhZGVyCiAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICBwYXR0ZXJuOiBeWzAtOV0rJAogICAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgICBoZWxsbzoKICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiBeWzAtOV0rJAogICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgIDIwMDoKICAgICAgICAgICAgZGVzY3JpcHRpb246IHN1Y2Nlc3MKICAgICAgICAgICAgaGVhZGVyczoKICAgICAgICAgICAgICBNeS1SZXNwb25zZS1IZWFkZXI6CiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgICBwYXR0ZXJuOiBeWzAtOV0rJAogICAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgICAgICAgICByZXF1aXJlZDogWyBzdGF0dXMgXQogICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgICAgIHN0YXR1czoKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0OiBvawogIFlBTUwKCiAgc2F5ICdyZXF1ZXN0Oic7CiAgbXkgJHJlcXVlc3QgPSBNb2pvOjpNZXNzYWdlOjpSZXF1ZXN0LT5uZXc7CiAgJHJlcXVlc3QtPnVybC0+cGFyc2UoImh0dHBzOi8vZGV2LmV4YW1wbGUuY29tL2Zvby9iYXIiKTsKICAkcmVxdWVzdC0+aGVhZGVycygnTXktUmVxdWVzdC1IZWFkZXInID0+ICcxMjMnKTsKICAkcmVxdWVzdC0+aGVhZGVycygnQ29udGVudC1UeXBlJyA9PiAnYXBwbGljYXRpb24vanNvbicpOwogICRyZXF1ZXN0LT5ib2R5KCd7ImhlbGxvIjogMTIzfScpOwogIG15ICRyZXN1bHRzID0gJG9wZW5hcGktPnZhbGlkYXRlX3JlcXVlc3QoJHJlcXVlc3QpOwogIHNheSAkcmVzdWx0czsKICBzYXkgJyc7ICMgbmV3bGluZQogIHNheSBKU09OOjpNYXliZVhTLT5uZXcoY29udmVydF9ibGVzc2VkID0+IDEsIGNhbm9uaWNhbCA9PiAxLCBwcmV0dHkgPT4gMSwgaW5kZW50X2xlbmd0aCA9PiAyKS0+ZW5jb2RlKCRyZXN1bHRzKTsKCiAgc2F5ICdyZXNwb25zZTonOwogIG15ICRyZXNwb25zZSA9IE1vam86Ok1lc3NhZ2U6OlJlc3BvbnNlLT5uZXcoY29kZSA9PiAyMDAsIG1lc3NhZ2UgPT4gJ09LJyk7CiAgJHJlc3BvbnNlLT5oZWFkZXJzLT5jb250ZW50X3R5cGUoJ2FwcGxpY2F0aW9uL2pzb24nKTsKICAkcmVzcG9uc2UtPmhlYWRlcnMtPmhlYWRlcignTXktUmVzcG9uc2UtSGVhZGVyJywgJzEyMycpOwogICRyZXNwb25zZS0+Ym9keSgneyJzdGF0dXMiOiAib2sifScpOwogICRyZXN1bHRzID0gJG9wZW5hcGktPnZhbGlkYXRlX3Jlc3BvbnNlKCRyZXNwb25zZSwgeyByZXF1ZXN0ID0+ICRyZXF1ZXN0IH0pOwogIHNheSAkcmVzdWx0czsKICBzYXkgJyc7ICMgbmV3bGluZQogIHNheSBKU09OOjpNYXliZVhTLT5uZXcoY29udmVydF9ibGVzc2VkID0+IDEsIGNhbm9uaWNhbCA9PiAxLCBwcmV0dHkgPT4gMSwgaW5kZW50X2xlbmd0aCA9PiAyKS0+ZW5jb2RlKCRyZXN1bHRzKTsKCnByaW50czoKCiAgcmVxdWVzdDoKICAnL3JlcXVlc3QvYm9keS9oZWxsbyc6IGdvdCBpbnRlZ2VyLCBub3Qgc3RyaW5nCiAgJy9yZXF1ZXN0L2JvZHknOiBub3QgYWxsIHByb3BlcnRpZXMgYXJlIHZhbGlkCgogIHsKICAgICJlcnJvcnMiIDogWwogICAgICB7CiAgICAgICAgImFic29sdXRlS2V5d29yZExvY2F0aW9uIiA6ICJodHRwczovL3Byb2R1Y3Rpb24uZXhhbXBsZS5jb20vYXBpIy9wYXRocy9+MWZvb34xJTdCZm9vX2lkJTdEfjFiYXJ+MSU3QmJhcl9pZCU3RC9wb3N0L3JlcXVlc3RCb2R5L2NvbnRlbnQvYXBwbGljYXRpb25+MWpzb24vc2NoZW1hL3Byb3BlcnRpZXMvaGVsbG8vdHlwZSIsCiAgICAgICAgImVycm9yIiA6ICJnb3QgaW50ZWdlciwgbm90IHN0cmluZyIsCiAgICAgICAgImluc3RhbmNlTG9jYXRpb24iIDogIi9yZXF1ZXN0L2JvZHkvaGVsbG8iLAogICAgICAgICJrZXl3b3JkTG9jYXRpb24iIDogIi9wYXRocy9+MWZvb34xe2Zvb19pZH1+MWJhcn4xJTdCYmFyX2lkJTdEL3Bvc3QvcmVxdWVzdEJvZHkvY29udGVudC9hcHBsaWNhdGlvbn4xanNvbi9zY2hlbWEvcHJvcGVydGllcy9oZWxsby90eXBlIgogICAgICB9LAogICAgICB7CiAgICAgICAgImFic29sdXRlS2V5d29yZExvY2F0aW9uIiA6ICJodHRwczovL3Byb2R1Y3Rpb24uZXhhbXBsZS5jb20vYXBpIy9wYXRocy9+MWZvb34xJTdCZm9vX2lkJTdEfjFiYXJ+MSU3QmJhcl9pZCU3RC9wb3N0L3JlcXVlc3RCb2R5L2NvbnRlbnQvYXBwbGljYXRpb25+MWpzb24vc2NoZW1hL3Byb3BlcnRpZXMiLAogICAgICAgICJlcnJvciIgOiAibm90IGFsbCBwcm9wZXJ0aWVzIGFyZSB2YWxpZCIsCiAgICAgICAgImluc3RhbmNlTG9jYXRpb24iIDogIi9yZXF1ZXN0L2JvZHkiLAogICAgICAgICJrZXl3b3JkTG9jYXRpb24iIDogIi9wYXRocy9+MWZvb34xe2Zvb19pZH1+MWJhcn4xJTdCYmFyX2lkJTdEL3Bvc3QvcmVxdWVzdEJvZHkvY29udGVudC9hcHBsaWNhdGlvbn4xanNvbi9zY2hlbWEvcHJvcGVydGllcyIKICAgICAgfQogICAgXSwKICAgICJ2YWxpZCIgOiBmYWxzZQogIH0KCiAgcmVzcG9uc2U6CiAgdmFsaWQKCiAgewogICAgInZhbGlkIiA6IHRydWUKICB9Cgo9aGVhZDEgREVTQ1JJUFRJT04KClRoaXMgbW9kdWxlIHByb3ZpZGVzIHZhcmlvdXMgdG9vbHMgZm9yIHdvcmtpbmcgd2l0aCBhbgpMPE9wZW5BUEkgU3BlY2lmaWNhdGlvbiB2My4xIG9yIHYzLjIgZG9jdW1lbnR8aHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvbGF0ZXN0I29wZW5hcGktZG9jdW1lbnQ+IHdpdGhpbgp5b3VyIGFwcGxpY2F0aW9uLiBUaGUgSlNPTiBTY2hlbWEgZXZhbHVhdG9yIGlzIGZ1bGx5IHNwZWNpZmljYXRpb24tY29tcGxpYW50OyB0aGUgT3BlbkFQSSBldmFsdWF0b3IKYWltcyB0byBiZSBidXQgc29tZSBmZWF0dXJlcyBhcmUgbm90IHlldCBhdmFpbGFibGUuCgo9Zm9yIFBvZDo6Q292ZXJhZ2UgQlVJTERBUkdTIEZSRUVaRSBUSEFXCgo9Zm9yIHN0b3B3b3JkcyBzY2hlbWEganNvblNjaGVtYURpYWxlY3QgbWV0YXNjaGVtYSBzdWJzY2hlbWEgcGVybGlzaCBvcGVyYXRpb25JZCBvcGVuYXBpIE1vam9saWNpb3VzCgo9aGVhZDEgQ09OU1RSVUNUT1IgQVJHVU1FTlRTCgpJZiBjb25zdHJ1Y3Rpb24gb2YgdGhlIG9iamVjdCBpcyBub3Qgc3VjY2Vzc2Z1bCwgZm9yIGV4YW1wbGUgdGhlIGRvY3VtZW50IGhhcyBhIHN5bnRheCBlcnJvciwgdGhlCmNhbGwgdG8gQzxuZXcoKT4gd2lsbCB0aHJvdyBhbiBleGNlcHRpb24sIHdoaWNoIHdpbGwgbGlrZWx5IGJlIGEgTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6UmVzdWx0PgpvYmplY3QgY29udGFpbmluZyBkZXRhaWxzLgoKVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgdGhlc2UgYXJlIGFsc28gYXZhaWxhYmxlIGFzIHJlYWQtb25seSBhY2Nlc3NvcnMuCgo9aGVhZDIgb3BlbmFwaV91cmkKCk9wdGlvbmFsLgoKVGhlIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIE9wZW5BUEkgZG9jdW1lbnQ7IGFuIGFsaWFzIHRvIEM8PCAtPm9wZW5hcGlfZG9jdW1lbnQtPmNhbm9uaWNhbF91cmkgPj4uClNlZSBMPEpTT046OlNjaGVtYTo6TW9kZXJuOjpEb2N1bWVudDo6T3BlbkFQSS9jYW5vbmljYWxfdXJpPi4KSWdub3JlZCBpZiBMPC9vcGVuYXBpX2RvY3VtZW50PiBpcyBwcm92aWRlZC4KClRoaXMgVVJJIHdpbGwgYmUgdXNlZCBhdCBydW50aW1lIHRvIHJlc29sdmUgcmVsYXRpdmUgVVJJcyB1c2VkIGluCnRoZSBPcGVuQVBJIGRvY3VtZW50LCBzdWNoIGFzIGZvciBDPGpzb25TY2hlbWFEaWFsZWN0PiBvciBDPHNlcnZlcnMgdXJsPiB2YWx1ZXMgYW5kIEM8JHJlZj4KbG9jYXRpb25zLCBhcyB3ZWxsIGFzIHVzZWQgZm9yIGxvY2F0aW9ucyBpbiBMPEpTT046OlNjaGVtYTo6TW9kZXJuOjpSZXN1bHQ+IG9iamVjdHMgKHNlZSBiZWxvdykuCgpUaGUgdmFsdWUgb2YgQzwkc2VsZj4gaW4gdGhlIGRvY3VtZW50IChpZiBwcmVzZW50KSBpcyByZXNvbHZlZCBhZ2FpbnN0IHRoaXMgdmFsdWUuCkl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgdGhpcyByZXN1bHRpbmcgVVJJIGlzIGFic29sdXRlLgoKPWhlYWQyIG9wZW5hcGlfc2NoZW1hCgpUaGUgZGF0YSBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgT3BlbkFQSSBkb2N1bWVudCAoYXMgc3BlY2lmaWVkIGF0Ckw8aHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvbGF0ZXN0PjsgYW4gYWxpYXMgdG8gQzw8IC0+b3BlbmFwaV9kb2N1bWVudC0+c2NoZW1hID4+LgpTZWUgTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6RG9jdW1lbnQ6Ok9wZW5BUEkvc2NoZW1hPi4KSWdub3JlZCBpZiBMPC9vcGVuYXBpX2RvY3VtZW50PiBpcyBwcm92aWRlZCwgb3RoZXJ3aXNlIHJlcXVpcmVkLgoKPWhlYWQyIG9wZW5hcGlfZG9jdW1lbnQKClRoZSBMPEpTT046OlNjaGVtYTo6TW9kZXJuOjpEb2N1bWVudDo6T3BlbkFQST4gZG9jdW1lbnQgdGhhdCBob2xkcyB0aGUgT3BlbkFQSSBpbmZvcm1hdGlvbiB0byBiZQp1c2VkIGZvciB2YWxpZGF0aW9uLiBJZiBpdCBpcyBub3QgcHJvdmlkZWQgdG8gdGhlIGNvbnN0cnVjdG9yLCB0aGVuCkw8L29wZW5hcGlfc2NoZW1hPiBCPE1VU1Q+IGJlIHByb3ZpZGVkLCBhbmQgTDwvZXZhbHVhdG9yPiB3aWxsIGFsc28gYmUgdXNlZCBpZiBwcm92aWRlZC4KCj1oZWFkMiBldmFsdWF0b3IKClRoZSBMPEpTT046OlNjaGVtYTo6TW9kZXJuPiBvYmplY3QgdG8gdXNlIGZvciBhbGwgVVJJIHJlc29sdXRpb24gYW5kIEpTT04gU2NoZW1hIGV2YWx1YXRpb24uCk9wdGlvbmFsIChhIGRlZmF1bHQgaXMgY29uc3RydWN0ZWQgd2hlbiBvbWl0dGVkKS4KClRoaXMgbXVzdCBiZSBwcmVwYXJlZCBpbiBhZHZhbmNlIGlmIGN1c3RvbSBtZXRhc2NoZW1hcyBhcmUgdG8gYmUgdXNlZCwgYXMgdGhlIGV2YWx1YXRvciBpcyB3aGF0CmhvbGRzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhbGwgYXZhaWxhYmxlIHNjaGVtYXMgKHdoaWNoIGFyZSB1c2VkIGJ5IGtleXdvcmRzIHN1Y2ggYXMKQzxqc29uU2NoZW1hRGlhbGVjdD4gYW5kIEM8JHJlZj4uCgo9aGVhZDIgZGVidWcKCkJvb2xlYW47IGRlZmF1bHRzIHRvIGZhbHNlIChjYW4gYWxzbyBiZSBzZXQgdmlhIEM8JERFQlVHPikuCgpXaGVuIHNldCwgdXNlZnVsIGRpYWdub3N0aWMgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGluIHRoZSBDPCRvcHRpb25zPiBoYXNoIHVzZWQgaW4gcHVibGljIG1ldGhvZHMKZGVzY3JpYmVkIGJlbG93LgoKPWhlYWQxIE1FVEhPRFMKCj1oZWFkMiBkb2N1bWVudF9nZXQKCiAgbXkgJHBhcmFtZXRlcl9kYXRhID0gJG9wZW5hcGktPmRvY3VtZW50X2dldCgnL3BhdGhzL34xZm9vfjF7Zm9vX2lkfX4xYmFyfjElN0JiYXJfaWQlN0QvcG9zdC9wYXJhbWV0ZXJzLzAnKTsKCkZldGNoZXMgdGhlIHBvcnRpb24gb2YgdGhlIG1haW4gT3BlbkFQSSBkb2N1bWVudCBsb2NhdGVkIGF0IHRoZSBwcm92aWRlZCBKU09OIHBvaW50ZXIuClByb3hpZXMgdG8gTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6RG9jdW1lbnQ6Ok9wZW5BUEkvZ2V0Pi4KVGhpcyBpcyBub3QgcmVjdXJzaXZlIChkb2VzIG5vdCBmb2xsb3cgQzwkcmVmPiBjaGFpbnMpIC0tIGZvciB0aGF0LCB1c2UKQzw8ICRvcGVuYXBpLT5yZWN1cnNpdmVfZ2V0KE1vam86OlVSTC0+bmV3LT5mcmFnbWVudCgkanNvbl9wb2ludGVyKSkgPj4sIHNlZQpMPC9yZWN1cnNpdmVfZ2V0Pi4KCj1oZWFkMiB2YWxpZGF0ZV9yZXF1ZXN0CgogICRyZXN1bHQgPSAkb3BlbmFwaS0+dmFsaWRhdGVfcmVxdWVzdCgKICAgICRyZXF1ZXN0LAogICAgIyBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgY2FuIGNvbnRhaW4gYW55IGNvbWJpbmF0aW9uIG9mIHRoZXNlIGtleXMrdmFsdWVzOgogICAgbXkgJG9wdGlvbnMgPSB7CiAgICAgIHBhdGhfdGVtcGxhdGUgPT4gJy9mb28ve2Zvb19pZH0vYmFyL3tiYXJfaWR9JywKICAgICAgb3BlcmF0aW9uX2lkID0+ICdteV9mb29fcmVxdWVzdCcsCiAgICAgIHBhdGhfY2FwdHVyZXMgPT4geyBmb29faWQgPT4gJ2FiYycsIGJhcl9pZCA9PiAyIH0sCiAgICAgIG1ldGhvZCA9PiAnUE9TVCcsCiAgICB9LAogICk7CgpWYWxpZGF0ZXMgYW4gTDxIVFRQOjpSZXF1ZXN0PiwgTDxQbGFjazo6UmVxdWVzdD4sIEw8Q2F0YWx5c3Q6OlJlcXVlc3Q+LApMPERhbmNlcjI6OkNvcmU6OlJlcXVlc3Q+IG9yIEw8TW9qbzo6TWVzc2FnZTo6UmVxdWVzdD4Kb2JqZWN0IGFnYWluc3QgdGhlIGNvcnJlc3BvbmRpbmcgT3BlbkFQSSBkb2N1bWVudCwgcmV0dXJuaW5nIGEKTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6UmVzdWx0PiBvYmplY3QuCgpBYnNvbHV0ZSBVUklzIGluIHRoZSByZXN1bHQgb2JqZWN0IGFyZSBjb25zdHJ1Y3RlZCBieSByZXNvbHZpbmcgdGhlIG9wZW5hcGkgZG9jdW1lbnQgcGF0aCBhZ2FpbnN0CnRoZSBMPC9vcGVuYXBpX3VyaT4gKHdoaWNoIGlzIGRlcml2ZWQgZnJvbSB0aGUgZG9jdW1lbnQncyBDPCRzZWxmPiBrZXl3b3JkIGFzIHdlbGwgYXMgdGhlIFVSSQpwcm92aWRlZCB0byB0aGUgZG9jdW1lbnQgY29uc3RydWN0b3IpLgoKVGhlIHNlY29uZCBhcmd1bWVudCBpcyBhbiBvcHRpb25hbCBoYXNocmVmIHRoYXQgY29udGFpbnMgZXh0cmEgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QsCmNvcnJlc3BvbmRpbmcgdG8gdGhlIHZhbHVlcyBleHBlY3RlZCBieSBMPC9maW5kX3BhdGhfaXRlbT4gYmVsb3cuIFRoZSBtZXRob2QgcG9wdWxhdGVzIHRoZSBoYXNocmVmCndpdGggc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVxdWVzdDoKc2F2ZSBpdCBhbmQgcGFzcyBpdCB0byBhIGxhdGVyIEw8L3ZhbGlkYXRlX3Jlc3BvbnNlPiBjYWxsICh0aGF0IGNvcnJlc3BvbmRzIHRvIGEgcmVzcG9uc2UgZm9yIHRoaXMgcmVxdWVzdCkKdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4KCj1oZWFkMiB2YWxpZGF0ZV9yZXNwb25zZQoKICAkcmVzdWx0ID0gJG9wZW5hcGktPnZhbGlkYXRlX3Jlc3BvbnNlKAogICAgJHJlc3BvbnNlLAogICAgewogICAgICByZXF1ZXN0ID0+ICRyZXF1ZXN0LAogICAgfSwKICApOwoKVmFsaWRhdGVzIGFuIEw8SFRUUDo6UmVzcG9uc2U+LCBMPFBsYWNrOjpSZXNwb25zZT4sIEw8Q2F0YWx5c3Q6OlJlc3BvbnNlPiwKTDxEYW5jZXIyOjpDb3JlOjpSZXNwb25zZT4gb3IgTDxNb2pvOjpNZXNzYWdlOjpSZXNwb25zZT4Kb2JqZWN0IGFnYWluc3QgdGhlIGNvcnJlc3BvbmRpbmcgT3BlbkFQSSBkb2N1bWVudCwgcmV0dXJuaW5nIGEKTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6UmVzdWx0PiBvYmplY3QuCgpBYnNvbHV0ZSBVUklzIGluIHRoZSByZXN1bHQgb2JqZWN0IGFyZSBjb25zdHJ1Y3RlZCBieSByZXNvbHZpbmcgdGhlIG9wZW5hcGkgZG9jdW1lbnQgcGF0aCBhZ2FpbnN0CnRoZSBMPC9vcGVuYXBpX3VyaT4gKHdoaWNoIGlzIGRlcml2ZWQgZnJvbSB0aGUgZG9jdW1lbnQncyBDPCRzZWxmPiBrZXl3b3JkIGFzIHdlbGwgYXMgdGhlIFVSSQpwcm92aWRlZCB0byB0aGUgZG9jdW1lbnQgY29uc3RydWN0b3IpLgoKVGhlIHNlY29uZCBhcmd1bWVudCBpcyBhbiBvcHRpb25hbCBoYXNocmVmIHRoYXQgY29udGFpbnMgZXh0cmEgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QKY29ycmVzcG9uZGluZyB0byB0aGUgcmVzcG9uc2UsIGFzIGluIEw8L3ZhbGlkYXRlX3JlcXVlc3Q+IGFuZCBMPC9maW5kX3BhdGhfaXRlbT4uCgpDPHJlcXVlc3Q+IGluIHRoZSBoYXNocmVmIHJlcHJlc2VudHMgdGhlIG9yaWdpbmFsIHJlcXVlc3Qgb2JqZWN0IHRoYXQKY29ycmVzcG9uZHMgdG8gdGhpcyByZXNwb25zZSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbiBvZiB0aGUgZG9jdW1lbnQgaWYKb3RoZXIgdmFsdWVzIChzdWNoIGFzIEM8b3BlcmF0aW9uSWQ+KSBhcmUgbm90IGtub3duLgoKSW4gYWRkaXRpb24sIHRoaXMgdmFsdWVzIGFyZSBwb3B1bGF0ZWQgaW50byB0aGUgaGFzaHJlZjoKCj1mb3IgOml0ZW1zICogQzxyZXNwb25zZT46IHRoZSBMPE1vam86Ok1lc3NhZ2U6OlJlc3BvbnNlPiBvYmplY3QgdGhhdCB3YXMgcHJvdmlkZWQgb3IgY29udmVydGVkIGZyb20gdGhlCiAgcHJvdmlkZWQgcmVzcG9uc2UKCj1oZWFkMiBmaW5kX3BhdGhfaXRlbQoKPWZvciBQb2Q6OkNvdmVyYWdlIGZpbmRfcGF0aAoKICAkcmVzdWx0ID0gJHNlbGYtPmZpbmRfcGF0aF9pdGVtKCRvcHRpb25zKTsKCkZpbmRzIHRoZSBhcHByb3ByaWF0ZSBMPHBhdGgtaXRlbXxodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy9sYXRlc3QjcGF0aC1pdGVtLW9iamVjdD4gZW50cnkKaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQgY29ycmVzcG9uZGluZyB0byBhIHJlcXVlc3QuIENhbGxlZAppbnRlcm5hbGx5IGJ5IGJvdGggTDwvdmFsaWRhdGVfcmVxdWVzdD4gYW5kIEw8L3ZhbGlkYXRlX3Jlc3BvbnNlPi4KClRoZSBzaW5nbGUgYXJndW1lbnQgaXMgYSBoYXNocmVmIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QuIFZhcmlvdXMgY29tYmluYXRpb25zCm9mIHZhbHVlcyBjYW4gYmUgcHJvdmlkZWQ7IHBvc3NpYmxlIHZhbHVlcyBhcmU6Cgo9b3ZlciA0Cgo9aXRlbSAqCgpDPHJlcXVlc3Q+OiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgSFRUUCByZXF1ZXN0LiBTdXBwb3J0ZWQgdHlwZXMgYXJlOiBMPEhUVFA6OlJlcXVlc3Q+LCBMPFBsYWNrOjpSZXF1ZXN0PiwgTDxDYXRhbHlzdDo6UmVxdWVzdD4sIEw8RGFuY2VyMjo6Q29yZTo6UmVxdWVzdD4sIEw8TW9qbzo6TWVzc2FnZTo6UmVxdWVzdD4uIENvbnZlcnRlZCB0byBhIEw8TW9qbzo6TWVzc2FnZTo6UmVxdWVzdD4gKHRoZSB2YWx1ZSBpbiB0aGlzIGhhc2hyZWYgd2lsbCBiZSBvdmVyd3JpdHRlbikuCgo9aXRlbSAqCgpDPHVyaT46IHRoZSBVUkkgb2YgdGhlIEhUVFAgcmVxdWVzdC4gQ29udmVydGVkIGZyb20gYW55IHN0cmluZy1jb21wYXRpYmxlIHR5cGUgdG8gYSBMPE1vam86OlVSTD4uCgo9aXRlbSAqCgpDPG1ldGhvZD46IHRoZSBIVFRQIG1ldGhvZCB1c2VkIGJ5IHRoZSByZXF1ZXN0IChjYXNlLXNlbnNpdGl2ZSkKCj1pdGVtICoKCkM8cGF0aF90ZW1wbGF0ZT46IGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgKHBvc3NpYmx5IHBhcnRpYWwpIHBhdGggcG9ydGlvbiBvZiB0aGUgcmVxdWVzdCBVUkksIHdpdGggcGxhY2Vob2xkZXJzIGluIGJyYWNlcyAoZS5nLiBDPC9wZXRzL3twZXRJZH0+KTsgc2VlIEw8aHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvbGF0ZXN0I3BhdGhzLW9iamVjdD4uCgo9aXRlbSAqCgpDPG9wZXJhdGlvbl9pZD46IGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhlIEw8b3BlcmF0aW9uSWR8aHR0cHM6Ly9sZWFybi5vcGVuYXBpcy5vcmcvc3BlY2lmaWNhdGlvbi9wYXRocy5odG1sI3RoZS1lbmRwb2ludHMtbGlzdD4gYXQgYSBwYXJ0aWN1bGFyIHBhdGgtdGVtcGxhdGUgYW5kIEhUVFAgbG9jYXRpb24gdW5kZXIgQzwvcGF0aHM+LiBJbiB0aGUgY2FzZSBvZiBhbWJpZ3VvdXMgbWF0Y2hlcyAoc3VjaCBhcyB0aGUgcG9zc2liaWxpdHkgb2YgbW9yZSB0aGFuIG9uZSBDPHBhdGhfdGVtcGxhdGU+IG1hdGNoaW5nIHRoZSByZXF1ZXN0IFVSSSksIHByb3ZpZGluZyB0aGlzIHZhbHVlIHdpbGwgc2VydmUgdG8gdW5hbWJpZ3VvdXNseSBzdGF0ZSB3aGljaCBwYXRoLWl0ZW0gYW5kIG9wZXJhdGlvbiBhcmUgaW50ZW5kZWQsIGFuZCBpcyBhbHNvIG1vcmUgZWZmaWNpZW50IGFzIG5vdCBhbGwgcGF0aC1pdGVtIGVudHJpZXMgbmVlZCB0byBiZSBzZWFyY2hlZCB0byBmaW5kIGEgbWF0Y2guCgo9aXRlbSAqCgpDPHBhdGhfY2FwdHVyZXM+OiBhIGhhc2hyZWYgbWFwcGluZyBwbGFjZWhvbGRlcnMgaW4gdGhlIHBhdGggdGVtcGxhdGUgdG8gdGhlaXIgbGl0ZXJhbCB2YWx1ZXMgaW4gdGhlIHJlcXVlc3QgVVJJIChub3QgcGVyY2VudC1kZWNvZGVkOyBub3QgcmVjb21tZW5kZWQgdG8gYmUgcHJvdmlkZWQgZm9yIHVzZSBpbiBwYXRoIG1hdGNoaW5nIGR1ZSB0byBpbmNvbnNpc3RlbmNpZXMgd2l0aCB1cmwtZXNjYXBpbmcsIGFuZCB0aGlzIGNhcGFiaWxpdHkgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZSkKCj1iYWNrCgpBbGwgdmFsdWVzIGFyZSBvcHRpb25hbCwgYW5kIHdpbGwgYmUgZGVyaXZlZCBmcm9tIGVhY2ggb3RoZXIgYXMgbmVlZGVkIChhbGJlaXQgbGVzcwplZmZpY2llbnRseSB0aGFuIGlmIHRoZXkgd2VyZSBwcm92aWRlZCkuIEFsbCBwYXNzZWQtaW4gdmFsdWVzIE1VU1QgYmUgY29uc2lzdGVudCB3aXRoIGVhY2ggb3RoZXIgYW5kCnRoZSByZXF1ZXN0IG9yIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGlzIG1ldGhvZCBpcyBmYWxzZSBhbmQgYXBwcm9wcmlhdGUgZXJyb3JzIHdpbGwgYmUgaW5jbHVkZWQKaW4gdGhlIEM8JG9wdGlvbnM+IGhhc2guCgpXaGVuIHN1Y2Nlc3NmdWwsIHRoZSBvcHRpb25zIGhhc2ggd2lsbCBiZSBwb3B1bGF0ZWQgKG9yIHVwZGF0ZWQpIHdpdGggYWxsIHRoZSBhYm92ZSBrZXlzLAphbmQgdGhlIHJldHVybiB2YWx1ZSBpcyB0cnVlLgpXaGVuIG5vdCBzdWNjZXNzZnVsLCB0aGUgb3B0aW9ucyBoYXNoIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGgga2V5IEM8ZXJyb3JzPiwgYW4gYXJyYXlyZWYgY29udGFpbmluZwphIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm46OkVycm9yPiBvYmplY3QsIGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIGZhbHNlLgoKSW4gYWRkaXRpb24sIHRoZXNlIHZhbHVlcyBhcmUgYWxzbyBwb3B1bGF0ZWQgaW4gdGhlIG9wdGlvbnMgaGFzaCAod2hlbiBhdmFpbGFibGUpOgoKPWZvciBzdG9wd29yZHMgcHVueWNvZGUKCj1vdmVyIDQKCj1pdGVtICoKCkM8dXJpX2NhcHR1cmVzPjogYSBoYXNocmVmIG1hcHBpbmcgcGxhY2Vob2xkZXJzIGluIHRoZSBlbnRpcmUgdXJpIHRlbXBsYXRlIChzZXJ2ZXIgdXJsIHBsdXMgcGF0aCB0ZW1wbGF0ZSkgdG8gdGhlaXIgYWN0dWFsIHZhbHVlcyBpbiB0aGUgcmVxdWVzdCBVUkk7IGZvciB2YWx1ZXMgY29taW5nIGZyb20gdGhlIGhvc3QsIHRoZXNlIHdpbGwgYmUgcHVueS1kZWNvZGVkOyBmb3IgdmFsdWVzIGNvbWluZyBmcm9tIHRoZSBwYXRoIHZpYSBhIHNlcnZlciB1cmwgdGhlc2Ugd2lsbCBiZSB1cmwtdW5lc2NhcGVkLCBidXQgcGF0aCB2YWx1ZXMgY29taW5nIGZyb20gdGhlIHBhdGggdGVtcGxhdGUgYXJlIEI8Tk9UPiB1cmwtdW5lc2NhcGVkLgoKPWl0ZW0gKgoKQzxvcGVyYXRpb25fdXJpPjogYSBVUkkgaW5kaWNhdGluZyB0aGUgZG9jdW1lbnQgbG9jYXRpb24gb2YgdGhlIG9wZXJhdGlvbiBvYmplY3QgZm9yIHRoZSByZXF1ZXN0LCBhZnRlciBmb2xsb3dpbmcgYW55IHJlZmVyZW5jZXMgKHVzdWFsbHkgc29tZXRoaW5nIHVuZGVyIEM8L3BhdGhzLz4sIGJ1dCBtYXkgYmUgaW4gYW5vdGhlciBkb2N1bWVudCkuIFVzZSBDPDwgJG9wZW5hcGktPmV2YWx1YXRvci0+Z2V0KCR1cmkpID4+IHRvIGZldGNoIHRoaXMgY29udGVudCAoc2VlIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm4vZ2V0PikuIE5vdGUgdGhhdCB0aGlzIGlzIHRoZSBzYW1lIGFzOgoKICAgICRvcGVuYXBpLT5kb2N1bWVudF9nZXQoTW9qbzo6VVJMLT5uZXcoJG9wZW5hcGktPm9wZW5hcGlfdXJpKS0+ZnJhZ21lbnQoJHBhdGhfdG9fb3BlcmF0aW9uKTsKCihTZWUgdGhlIEw8ZG9jdW1lbnRhdGlvbiBmb3IgYW4gb3BlcmF0aW9ufGh0dHBzOi8vbGVhcm4ub3BlbmFwaXMub3JnL3NwZWNpZmljYXRpb24vcGF0aHMuaHRtbCN0aGUtZW5kcG9pbnRzLWxpc3Q+Cm9yIGluCkw8wqc0LjEwIG9mIHRoZSBzcGVjaWZpY2F0aW9ufGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL2xhdGVzdCNvcGVyYXRpb24tb2JqZWN0Pi4pCgo9aXRlbSAqCgpDPGRlYnVnPjogd2hlbiBDPCRPcGVuQVBJOjpNb2Rlcm46OkRFQlVHPiBvciBMPC9kZWJ1Zz4gaXMgc2V0IG9uIHRoZSBPcGVuQVBJOjpNb2Rlcm4gb2JqZWN0LCBhZGRpdGlvbmFsIGRpYWdub3N0aWMgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGhlcmUgaW4gc2VwYXJhdGUga2V5czoKCj1vdmVyIDQKCj1pdGVtICoKCkM8dXJpX3BhdHRlcm5zPjogYW4gYXJyYXlyZWYgb2YgcGF0dGVybnMgdGhhdCB3ZXJlIGF0dGVtcHRlZCB0byBiZSBtYXRjaGVkIGFnYWluc3QgdGhlIFVSSSwgaW4gbWF0Y2ggb3JkZXIKCj1iYWNrCgo9YmFjawoKWW91IGNhbiBmaW5kIHRoZSBhc3NvY2lhdGVkIG9wZXJhdGlvbiBvYmplY3QgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQgYnkgdXNpbmcgZWl0aGVyIEM8b3BlcmF0aW9uX3VyaT4sCm9yIGJ5IGNhbGxpbmcgQzw8ICRvcGVuYXBpLT5vcGVuYXBpX2RvY3VtZW50LT5vcGVyYXRpb25JZF9wYXRoKCRvcGVyYXRpb25faWQpID4+CihzZWUgTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6RG9jdW1lbnQ6Ok9wZW5BUEkvb3BlcmF0aW9uSWRfcGF0aD4pIChub3RlIHRoYXQgdGhlIGxhdHRlciB3aWxsCmJlIGNoYW5nZWQgaW4gYSBzdWJzZXF1ZW50IHJlbGVhc2UsIGluIG9yZGVyIHRvIHN1cHBvcnQgb3BlcmF0aW9ucyBleGlzdGluZyBpbiBvdGhlciBkb2N1bWVudHMpLgoKPWhlYWQyIHJlY3Vyc2l2ZV9nZXQKCkdpdmVuIGEgdXJpIG9yIHVyaS1yZWZlcmVuY2UgKHJlc29sdmVkIGFnYWluc3QgdGhlIG1haW4gT3BlbkFQSSBkb2N1bWVudCdzIEM8Y2Fub25pY2FsX3VyaT4pLApnZXQgdGhlIGRlZmluaXRpb24gYXQgdGhhdCBsb2NhdGlvbiwgZm9sbG93aW5nIGFueSBDPCRyZWY+cyBhbG9uZyB0aGUKd2F5LiBJbmNsdWRlIHRoZSBleHBlY3RlZCBkZWZpbml0aW9uIHR5cGUKKG9uZSBvZiBDPHNjaGVtYT4sIEM8cmVzcG9uc2U+LCBDPHBhcmFtZXRlcj4sIEM8ZXhhbXBsZT4sIEM8cmVxdWVzdC1ib2R5PiwgQzxoZWFkZXI+LApDPHNlY3VyaXR5LXNjaGVtZT4sIEM8bGluaz4sIEM8Y2FsbGJhY2tzPiwgb3IgQzxwYXRoLWl0ZW0+KQpmb3IgdmFsaWRhdGlvbiBvZiB0aGUgZW50aXJlIHJlZmVyZW5jZSBjaGFpbi4KClJldHVybnMgdGhlIGRhdGEgaW4gc2NhbGFyIGNvbnRleHQsIG9yIGEgdHVwbGUgb2YgdGhlIGRhdGEgYW5kIHRoZSBjYW5vbmljYWwgVVJJIG9mIHRoZQpyZWZlcmVuY2VkIGxvY2F0aW9uIGluIGxpc3QgY29udGV4dC4KCklmIHRoZSBwcm92aWRlZCBsb2NhdGlvbiBpcyByZWxhdGl2ZSwgdGhlIG1haW4gT3BlbkFQSSBkb2N1bWVudCBpcyB1c2VkIGZvciB0aGUgYmFzZSBVUkkuCklmIHlvdSBoYXZlIGEgbG9jYWwganNvbiBwb2ludGVyIHlvdSB3YW50IHRvIHJlc29sdmUsIHlvdSBjYW4gdHVybiBpdCBpbnRvIGEgdXJpLXJlZmVyZW5jZSBieQpwcmVwZW5kaW5nIEM8Iz4gYW5kIHVybC1lbmNvZGluZyBpdCwgZS5nLiBDPDwgTW9qbzo6VVJMLT5uZXctPmZyYWdtZW50KCRqc29ucCkgPj4uCgogIG15ICRwYXJhbSA9ICRvcGVuYXBpLT5yZWN1cnNpdmVfZ2V0KCcjL2NvbXBvbmVudHMvcGFyYW1ldGVycy9Db250ZW50LUVuY29kaW5nJywgJ3BhcmFtZXRlcicpOwogIG15ICRvcGVyYXRpb25fc2NoZW1hID0gJG9wZW5hcGktPnJlY3Vyc2l2ZV9nZXQoTW9qbzo6VVJMLT5uZXcoJ2h0dHBzOi8vZXhhbXBsZS5jb20vYXBpLmpzb24nKQogICAgLT5mcmFnbWVudChqc29ucChxdygvcGF0aHMgL2Zvby97Zm9vX2lkfSBnZXQgcmVxdWVzdEJvZHkgY29udGVudCBhcHBsaWNhdGlvbi9qc29uIHNjaGVtYSkpKTsKCj1oZWFkMiBjYW5vbmljYWxfdXJpCgpBbiBhY2Nlc3NvciB0aGF0IGRlbGVnYXRlcyB0byBMPEpTT046OlNjaGVtYTo6TW9kZXJuOjpEb2N1bWVudC9jYW5vbmljYWxfdXJpPi4KCj1oZWFkMiBzY2hlbWEKCkFuIGFjY2Vzc29yIHRoYXQgZGVsZWdhdGVzIHRvIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm46OkRvY3VtZW50L3NjaGVtYT4uCgo9aGVhZDIgZ2V0X21lZGlhX3R5cGUKCkFuIGFjY2Vzc29yIHRoYXQgZGVsZWdhdGVzIHRvIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm4vZ2V0X21lZGlhX3R5cGU+LgoKPWhlYWQyIGFkZF9tZWRpYV90eXBlCgpBIHNldHRlciB0aGF0IGRlbGVnYXRlcyB0byBMPEpTT046OlNjaGVtYTo6TW9kZXJuL2FkZF9tZWRpYV90eXBlPi4KCj1oZWFkMSBDQUNISU5HCgo9Zm9yIHN0b3B3b3JkcyBwcmVmb3JraW5nCgpWZXJ5IGxhcmdlIE9wZW5BUEkgZG9jdW1lbnRzIG1heSB0YWtlIGEgbm90aWNlYWJsZSB0aW1lIHRvIGJlCmxvYWRlZCBhbmQgcGFyc2VkLiBZb3UgY2FuIHJlZHVjZSB0aGUgaW1wYWN0IHRvIHlvdXIgcHJlZm9ya2luZyBhcHBsaWNhdGlvbiBieSBsb2FkaW5nIGFsbCBuZWNlc3NhcnkKZG9jdW1lbnRzIGF0IHN0YXJ0dXAsIGFuZCBpbXBhY3QgY2FuIGJlIGZ1cnRoZXIgcmVkdWNlZCBieSBzYXZpbmcgb2JqZWN0cyB0byBjYWNoZSBhbmQgdGhlbgpyZWxvYWRpbmcgdGhlbSAocGVyaGFwcyBieSB1c2luZyBhIHRpbWVzdGFtcCBvciBjaGVja3N1bSB0byBkZXRlcm1pbmUgaWYgYSBmcmVzaCByZWxvYWQgaXMgbmVlZGVkKS4KCiAgc3ViIGdldF9vcGVuYXBpICguLi4pIHsKICAgIG15ICRzZXJpYWxpemVkX2ZpbGUgPSBNb2pvOjpGaWxlLT5uZXcoJHNlcmlhbGl6ZWRfZmlsZW5hbWUpOwogICAgbXkgJG9wZW5hcGlfZmlsZSA9IE1vam86OkZpbGUtPm5ldygkb3BlbmFwaV9maWxlbmFtZSk7CiAgICBteSAkb3BlbmFwaTsKICAgIGlmICgkc2VyaWFsaXplZF9maWxlLT5zdGF0LT5tdGltZSA8ICRvcGVuYXBpX2ZpbGUtPnN0YXQtPm10aW1lKSkgewogICAgICAkb3BlbmFwaSA9IE9wZW5BUEk6Ok1vZGVybi0+bmV3KAogICAgICAgIG9wZW5hcGlfdXJpID0+ICcvYXBpJywKICAgICAgICBvcGVuYXBpX3NjaGVtYSA9PiBkZWNvZGVfanNvbigkb3BlbmFwaV9maWxlLT5zbHVycF9yYXcpLCAjIHlvdXIgb3BlbmFwaSBkb2N1bWVudAogICAgICApOwogICAgICAkb3BlbmFwaS0+ZXZhbHVhdG9yLT5hZGRfc2NoZW1hKGRlY29kZV9qc29uKC4uLikpOyAgIyBhbnkgb3RoZXIgbmVlZGVkIHNjaGVtYXMKICAgICAgbXkgJGZyb3plbiA9IFNlcmVhbDo6RW5jb2Rlci0+bmV3KHsgZnJlZXplX2NhbGxiYWNrcyA9PiAxIH0pLT5lbmNvZGUoJG9wZW5hcGkpOwogICAgICAkc2VyaWFsaXplZF9maWxlLT5zcGV3X3JhdygkZnJvemVuKTsKICAgIH0KICAgIGVsc2UgewogICAgICBteSAkZnJvemVuID0gJHNlcmlhbGl6ZWRfZmlsZS0+c2x1cnBfcmF3OwogICAgICAkb3BlbmFwaSA9IFNlcmVhbDo6RGVjb2Rlci0+bmV3LT5kZWNvZGUoJGZyb3plbik7CiAgICB9CgogICAgIyBhZGQgY3VzdG9tIGZvcm1hdCB2YWxpZGF0aW9ucywgbWVkaWEgdHlwZXMgYW5kIGVuY29kaW5ncyBoZXJlCiAgICAkb3BlbmFwaS0+ZXZhbHVhdG9yLT5hZGRfbWVkaWFfdHlwZSguLi4pOwoKICAgIHJldHVybiAkb3BlbmFwaTsKICB9CgpTZWUgYWxzbyBMPEpTT046OlNjaGVtYTo6TW9kZXJuL0NBQ0hJTkc+LgoKPWhlYWQxIEJVTkRMRUQgU0NIRU1BIERPQ1VNRU5UUwoKVGhpcyBkaXN0cmlidXRpb24gY29tZXMgYnVuZGxlZCB3aXRoIGFsbCB0aGUgbWV0YXNjaGVtYSBkb2N1bWVudHMgeW91IG5lZWQgdG8gYnVpbGQgeW91cgphcHBsaWNhdGlvbiwgb3IgYnVpbGQgY3VzdG9tIHNjaGVtYXMgb24gdG9wIG9mLiBUaGVzZSBjYW4gYmUgcmVmZXJlbmNlZCB2aWEgY29uc3RhbnRzIGluCkw8T3BlbkFQSTo6TW9kZXJuOjpVdGlsaXRpZXM+IGlmIHlvdSBhcmUgYnVpbGRpbmcgY29tcGxleCBjcm9zcy1yZWZlcmVuY2luZyBkb2N1bWVudHMuCldlIGFsd2F5cyB1c2UgdGhlIGxhdGVzdCB2ZXJzaW9ucyBvZiB0aGUgZG9jdW1lbnRzIHRoYXQgYXJlIHB1Ymxpc2hlZCBmb3IgZWFjaCBtaW5vciBzcGVjaWZpY2F0aW9uCnZlcnNpb247IGlmIHlvdSBuZWVkIGVhcmxpZXIgdmVyc2lvbnMgKGJ1dCB5b3Ugc2hvdWxkIGFzayB5b3Vyc2VsZiB3aHkpLCB5b3UgY2FuIGZpbmQgdGhlbSBhdApMPGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvI29wZW5hcGktc3BlY2lmaWNhdGlvbi1zY2hlbWFzPi4KClRoZSBkZWZhdWx0IG1ldGFzY2hlbWEgdXNlZCBieSB0aGlzIHRvb2wgZG9lcyBub3QgcGVybWl0IHRoZSB1c2Ugb2YgQzwkc2NoZW1hPiBrZXl3b3JkcwppbiBzdWJzY2hlbWFzICh1bmxlc3MgdGhlIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBkZWZhdWx0IE9BUyBkaWFsZWN0KSwgYnV0IGEgbW9yZSBwZXJtaXNzaXZlCmRpYWxlY3QgaXMgYWxzbyBhdmFpbGFibGUgKG9yIHlvdSBjYW4gZGVmaW5lIHlvdXIgb3duKSwgd2hpY2ggeW91IGRlY2xhcmUgYnkgcHJvdmlkaW5nIHRoZQpMPEM8anNvblNjaGVtYURpYWxlY3Q+fGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL2xhdGVzdCNvcGVuYXBpLW9iamVjdD4gcHJvcGVydHkgaW4geW91ciBPcGVuQVBJCkRvY3VtZW50LgoKVGhlIHNjaGVtYXMgYXJlIGFsc28gYXZhaWxhYmxlIHVuZGVyIHRoZSBVUklzIEM8PCBzLzxkYXRlPi9sYXRlc3QvID4+IHNvIHlvdSBkb24ndCBoYXZlIHRvIGNoYW5nZSB5b3VyCmNvZGUgb3IgY29uZmlndXJhdGlvbnMgdG8ga2VlcCBwYWNlIHdpdGggaW50ZXJuYWwgY2hhbmdlcy4KCkFuIGV2ZW4gc3RyaWN0ZXIgc2NoZW1hIGFuZCBkaWFsZWN0IGFyZSBhdmFpbGFibGUsIHZpYSB0aGUgbWV0YXNjaGVtYV91cmkKQzxodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20va2FyZW5ldGhlcmlkZ2UvT3BlbkFQSS1Nb2Rlcm4vbWFzdGVyL3NoYXJlLzMuMi9zdHJpY3Qtc2NoZW1hLmpzb24+LAp3aGljaCB0cmVhdHMgdGhlIGBmb3JtYXRgIGtleXdvcmQgYXMgYW4gYXNzZXJ0aW9uLCBhbmQgYWxzbyBwcmV2ZW50cyBhbnkgdW5rbm93biBrZXl3b3JkcyBmcm9tIGJlaW5nCnVzZWQgaW4gSlNPTiBTY2hlbWFzLiBUaGlzIGlzIHVzZWZ1bCB0byBhdm9pZApzcGVsbGluZyBtaXN0YWtlcyBmcm9tIGdvaW5nIHVubm90aWNlZCBhbmQgcmVzdWx0aW5nIGluIGZhbHNlIHBvc2l0aXZlIHJlc3VsdHMuCgpUaGUgT3BlbkFQSSB2My4wIHNjaGVtYSBkb2N1bWVudCBpcyBhbHNvIGF2YWlsYWJsZSwgZm9yIHVzZSBpbiB2YWxpZGF0aW5nIHYzLjAueCBPcGVuQVBJCmRlc2NyaXB0aW9ucywgYnV0IHBhcnNpbmcgb2YgdGhlIGRlc2NyaXB0aW9uIChlLmcuIGZvciB1c2UgaW4gcmVxdWVzdCBhbmQgcmVzcG9uc2UgdmFsaWRhdGlvbikgaXMKbm90IHN1cHBvcnRlZC4gSXQgY2FuIGJlIHVzZWQgZGlyZWN0bHkgYXMgYSBzY2hlbWEgKGUuZy4gYnkgdXNpbmcgaXRzIFVSSSBpbiBhIEM8JHNjaGVtYT4gb3IgQzwkcmVmPgprZXl3b3JkKSBhZnRlciBjYWxsaW5nIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm46OlV0aWxpdGllcy9sb2FkX2NhY2hlZF9kb2N1bWVudD4uCgo9aGVhZDEgT04gVEhFIFVTRSBPRiBKU09OIFNDSEVNQVMKCkVtYmVkZGVkIEpTT04gU2NoZW1hcywgdGhyb3VnaCB0aGUgdXNlIG9mIHRoZSBDPHNjaGVtYT4ga2V5d29yZCwgYXJlIGZ1bGx5IGRyYWZ0MjAyMC0xMi1jb21wbGlhbnQsCmFzIHBlciB0aGUgc3BlYywgYW5kIGltcGxlbWVudGVkIHdpdGggTDxKU09OOjpTY2hlbWE6Ok1vZGVybj4uIFVubGVzcyBvdmVycmlkZGVuIHdpdGggdGhlIHVzZSBvZiB0aGUKTDxqc29uU2NoZW1hRGlhbGVjdHxodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy9sYXRlc3Qjc3BlY2lmeWluZy1zY2hlbWEtZGlhbGVjdHM+IGtleXdvcmQsIHRoZWlyCm1ldGFzY2hlbWEgaXMgdGhlICJkaWFsZWN0IiBzY2hlbWEgbGlzdGVkIGF0IEw8aHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvI3NjaGVtYS1pdGVyYXRpb25zPiwgd2hpY2ggYWxsb3dzIGZvciB1c2Ugb2YgdGhlCk9wZW5BUEktc3BlY2lmaWMga2V5d29yZHMgKEM8ZGlzY3JpbWluYXRvcj4sIEM8eG1sPiwgQzxleHRlcm5hbERvY3M+LCBhbmQgQzxleGFtcGxlPiksIGFzIGRlZmluZWQgaW4KTDx0aGUgc3BlY2lmaWNhdGlvbnxodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy9sYXRlc3Qjc2NoZW1hLW9iamVjdD4uIEZvcm1hdCB2YWxpZGF0aW9uIGlzIHR1cm5lZApCPG9uPiwgYW5kIHRoZSB1c2Ugb2YgY29udGVudCoga2V5d29yZHMgaXMgb2ZmIChzZWUKTDxKU09OOjpTY2hlbWE6Ok1vZGVybi92YWxpZGF0ZV9jb250ZW50X3NjaGVtYXM+KS4KCkFzIHJlZmVyZW5jZXMgKHdpdGggdGhlIEM8JHJlZj4ga2V5d29yZCkgbWF5IHJlZmVyZW5jZSBhbnkgcG9zaXRpb24gd2l0aGluIHRoZSBlbnRpcmUgT3BlbkFQSQpkb2N1bWVudCwganNvbiBwb2ludGVycyBhcmUgcmVsYXRpdmUgdG8gdGhlIEI8cm9vdD4gb2YgdGhlIGRvY3VtZW50LCBub3QgdGhlIHJvb3Qgb2YgdGhlIHN1YnNjaGVtYQppdHNlbGYuIFJlZmVyZW5jZXMgdG8gb3RoZXIgZG9jdW1lbnRzIGFyZSBhbHNvIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhvc2UgZG9jdW1lbnRzIGhhdmUgYmVlbiBsb2FkZWQKaW50byB0aGUgZXZhbHVhdG9yIGluIGFkdmFuY2UgKHNlZSBMPEpTT046OlNjaGVtYTo6TW9kZXJuL2FkZF9zY2hlbWE+KS4KCldoZW4gZGVzZXJpYWxpemluZyBwYXJhbWV0ZXIgdmFsdWVzICh3aG9zZSBkZWNvZGluZyBpcyBub3Qgc3RyaWN0bHkgZGVmaW5lZCB3aXRoIGEgbWVkaWEtdHlwZSksCnZhbHVlcyBhcmUgdHJlYXRlZCBhcyBzdHJpbmdzIGJ5IGRlZmF1bHQuIEhvd2V2ZXIsIGlmIHRoZSBzY2hlbWEgY29udGFpbnMgYSBDPHR5cGU+LCBDPGNvbnN0PiBvcgpDPGVudW0+IGtleXdvcmQsIHRoZSB2YWx1ZSB3aWxsCihhdHRlbXB0ZWQgdG8gYmUpIGNvZXJjZWQgaW50byB0aGF0IHR5cGUgYmVmb3JlIGJlaW5nIHBhc3NlZCB0byB0aGUgSlNPTiBTY2hlbWEgZXZhbHVhdG9yLiBDPGFsbE9mPiwKQzxhbnlPZj4sIEM8b25lT2Y+LCBDPG5vdD4sIEM8JHJlZj4gYW5kIEM8JGR5bmFtaWNSZWY+IGtleXdvcmRzIGFyZSBhbHNvIGZvbGxvd2VkIGluIGFuIGF0dGVtcHQgdG8KaW5mZXIgdGhlIGNvcnJlY3QgZGVzaXJlZCB0eXBlLCBhbmQgQzwkaWQ+IGFuZCBDPCRzY2hlbWE+IGFyZSByZXNwZWN0ZWQuClRoaXMgcHJvY2VzcyBpbmNsdWRlcyBpbnNwZWN0aW9uIG9mIHN1YnNjaGVtYXMgZm9yIG9iamVjdCB2YWx1ZXMgb3IgYXJyYXkgaXRlbXMsIGZvciBwYXJhbWV0ZXIKdmFsdWVzIHRoYXQgYXJlIGRlc2VyaWFsaXplZCBpbnRvIHRob3NlIHR5cGVzLgpXaGVuIG5vIHR5cGUgY29uc3RyYWludCBpcyBwcmVzZW50LCB0aGUgdmFsdWUgd2lsbCByZW1haW4gYXMgYSBzdHJpbmc7IG90aGVyd2lzZSB3aGVuIG11bHRpcGxlIHR5cGVzCmFyZSBwZXJtaXR0ZWQsIGRlc2VyaWFsaXphdGlvbiBpcyBhdHRlbXB0ZWQgaW4gdGhpcyBvcmRlcjogQzxvYmplY3Q+LCBDPGFycmF5PiwgQzxudWxsPiwgQzxib29sZWFuPiwKQzxudW1iZXI+LCBDPHN0cmluZz4uCgo9aGVhZDEgTElNSVRBVElPTlMKCkFsbCBtZXNzYWdlIHZhbGlkYXRpb24gaXMgZG9uZSB1c2luZyBMPE1vam9saWNpb3VzPiBvYmplY3RzIChMPE1vam86Ok1lc3NhZ2U6OlJlcXVlc3Q+IGFuZApMPE1vam86Ok1lc3NhZ2U6OlJlc3BvbnNlPikuIElmIG1lc3NhZ2VzIG9mIG90aGVyIHR5cGVzIGFyZSBwYXNzZWQsIGNvbnZlcnNpb24gaXMgZG9uZSBvbiBhCmJlc3QtZWZmb3J0IGJhc2lzLCBidXQgc2luY2UgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBoYXZlIGRpZmZlcmVudCBsZXZlbHMgb2YgYWRoZXJlbmNlIHRvIHRoZSBSRkMKc3BlY3MsIHNvbWUgdmFsaWRhdGlvbiBlcnJvcnMgbWF5IG9jY3VyIGUuZy4gaWYgYSBjZXJ0YWluIHJlcXVpcmVkIGhlYWRlciBpcyBtaXNzaW5nIG9uIHRoZQpvcmlnaW5hbC4gRm9yIGJlc3QgcmVzdWx0cyBpbiB2YWxpZGF0aW5nIHJlYWwgbWVzc2FnZXMgZnJvbSB0aGUgbmV0d29yaywgcGFyc2UgdGhlbSBkaXJlY3RseSBpbnRvCk1vam9saWNpb3VzIG1lc3NhZ2VzIChzZWUgTDxNb2pvOjpNZXNzYWdlL3BhcnNlPikuCgpPbmx5IGNlcnRhaW4gcGVybXV0YXRpb25zIG9mIE9wZW5BUEkgZG9jdW1lbnRzIGFyZSBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lOgoKPW92ZXIgNAoKPWl0ZW0gKgoKZm9yIHF1ZXJ5IHBhcmFtZXRlcnMsIG9ubHkgQzxzdHlsZTogZm9ybT4gYW5kIEM8ZXhwbG9kZTogdHJ1ZT4gaXMgc3VwcG9ydGVkLCBvbmx5IHRoZSBmaXJzdCB2YWx1ZSBvZiBlYWNoIHBhcmFtZXRlciBuYW1lIGlzIGNvbnNpZGVyZWQsIGFuZCBDPGFsbG93RW1wdHlWYWx1ZT4gYW5kIEM8YWxsb3dSZXNlcnZlZD4gYXJlIG5vdCBjaGVja2VkCgo9aXRlbSAqCgpjb29raWUgcGFyYW1ldGVycyBhcmUgbm90IGNoZWNrZWQgYXQgYWxsIHlldAoKPWl0ZW0gKgoKQzxtdWx0aXBhcnQvKj4gbWVzc2FnZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCgo9aXRlbSAqCgpPcGVuQVBJIGRlc2NyaXB0aW9ucyBtdXN0IGJlIGNvbnRhaW5lZCBpbiBhIHNpbmdsZSBkb2N1bWVudDsgd2hpbGUgQzwkcmVmPmVyZW5jZXMgdG8gb3RoZXIgZG9jdW1lbnRzIChzdWNoIGFzIHdpdGhpbiBhIEM8L2NvbXBvbmVudHM+IHN0cnVjdHVyZSkgYXJlIHN1cHBvcnRlZCwgQzwvcGF0aHM+IGVudHJpZXMgaW4gb3RoZXIgZG9jdW1lbnRzIGFyZSBub3QgY29uc2lkZXJlZCBhdCB0aGlzIHRpbWUuCgo9aXRlbSAqCgpUaGUgdXNlIG9mIEM8JHJlZj4gd2l0aGluIGEgcGF0aC1pdGVtIG9iamVjdCBpcyBvbmx5IGFsbG93ZWQgd2hlbiBub3QgYWRqYWNlbnQgdG8gYW55IG90aGVyIHBhdGgtaXRlbSBwcm9wZXJ0aWVzIChDPHBhcmFtZXRlcnM+LCBDPHNlcnZlcnM+LCByZXF1ZXN0IG1ldGhvZHMpCgo9aXRlbSAqCgpTZWN1cml0eSBzY2hlbWVzIGluIHRoZSBPcGVuQVBJIGRlc2NyaXB0aW9uLCBhbmQgdGhlIHVzZSBvZiBhbnkgQzxBdXRob3JpemF0aW9uPiBoZWFkZXJzIGluIHJlcXVlc3RzLCBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuCgo9YmFjawoKPWhlYWQxIFNFRSBBTFNPCgo9b3ZlciA0Cgo9aXRlbSAqCgpMPE1vam9saWNpb3VzOjpQbHVnaW46Ok9wZW5BUEk6Ok1vZGVybj4KCj1pdGVtICoKCkw8VGVzdDo6TW9qbzo6Um9sZTo6T3BlbkFQSTo6TW9kZXJuPgoKPWl0ZW0gKgoKTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6RG9jdW1lbnQ6Ok9wZW5BUEk+Cgo9aXRlbSAqCgpMPEpTT046OlNjaGVtYTo6TW9kZXJuPgoKPWl0ZW0gKgoKTDxodHRwczovL2pzb24tc2NoZW1hLm9yZz4KCj1pdGVtICoKCkw8aHR0cHM6Ly93d3cub3BlbmFwaXMub3JnPgoKPWl0ZW0gKgoKTDxodHRwczovL2xlYXJuLm9wZW5hcGlzLm9yZz4KCj1pdGVtICoKCkw8aHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMD4KCj1pdGVtICoKCkw8aHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMT4KCj1pdGVtICoKCkw8aHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMj4KCj1pdGVtICoKCkw8aHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXM+Cgo9YmFjawoKPWhlYWQxIEdJVklORyBUSEFOS1MKCj1mb3Igc3RvcHdvcmRzIE1ldGFDUEFOIEdpdEh1YgoKSWYgeW91IGZvdW5kIHRoaXMgbW9kdWxlIHRvIGJlIHVzZWZ1bCwgcGxlYXNlIHNob3cgeW91ciBhcHByZWNpYXRpb24gYnkKYWRkaW5nIGEgKzEgaW4gTDxNZXRhQ1BBTnxodHRwczovL21ldGFjcGFuLm9yZy9kaXN0L09wZW5BUEktTW9kZXJuPgphbmQgYSBzdGFyIGluIEw8R2l0SHVifGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJlbmV0aGVyaWRnZS9PcGVuQVBJLU1vZGVybj4uCgo9aGVhZDEgU1VQUE9SVAoKQnVncyBtYXkgYmUgc3VibWl0dGVkIHRocm91Z2ggTDxodHRwczovL2dpdGh1Yi5jb20va2FyZW5ldGhlcmlkZ2UvT3BlbkFQSS1Nb2Rlcm4vaXNzdWVzPi4KCkkgYW0gYWxzbyB1c3VhbGx5IGFjdGl2ZSBvbiBpcmMsIGFzICdldGhlcicgYXQgQzxpcmMucGVybC5vcmc+IGFuZCBDPGlyYy5saWJlcmEuY2hhdD4uCgo9Zm9yIHN0b3B3b3JkcyBPcGVuQVBJCgpZb3UgY2FuIGFsc28gZmluZCBtZSBvbiB0aGUgTDxKU09OIFNjaGVtYSBTbGFjayBzZXJ2ZXJ8aHR0cHM6Ly9qc29uLXNjaGVtYS5zbGFjay5jb20+IGFuZCBMPE9wZW5BUEkKU2xhY2sgc2VydmVyfGh0dHBzOi8vb3Blbi1hcGkuc2xhY2suY29tPiwgd2hpY2ggYXJlIGFsc28gZ3JlYXQgcmVzb3VyY2VzIGZvciBmaW5kaW5nIGhlbHAuCgo9aGVhZDEgQVVUSE9SCgpLYXJlbiBFdGhlcmlkZ2UgPGV0aGVyQGNwYW4ub3JnPgoKPWhlYWQxIENPUFlSSUdIVCBBTkQgTElDRU5DRQoKVGhpcyBzb2Z0d2FyZSBpcyBjb3B5cmlnaHQgKGMpIDIwMjEgYnkgS2FyZW4gRXRoZXJpZGdlLgoKVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCnRoZSBzYW1lIHRlcm1zIGFzIHRoZSBQZXJsIDUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugc3lzdGVtIGl0c2VsZi4KClNvbWUgc2NoZW1hIGZpbGVzIGhhdmUgdGhlaXIgb3duIGxpY2VuY2UsIGluIHNoYXJlL29hcy9MSUNFTlNFLgoKPWN1dAo= readmeEtag: '"4848954d45b1d4b91bca391d293ff4c7f6a1d109"' readmeLastModified: Sat, 31 Jan 2026 01:05:37 GMT repositoryId: 422955010 description: >- Validate HTTP requests and responses against an OpenAPI v3.0, v3.1 or v3.2 document created: '2021-10-30T18:01:46Z' updated: '2026-01-31T01:05:43Z' language: Perl archived: false stars: 8 watchers: 3 forks: 4 owner: karenetheridge logo: https://avatars.githubusercontent.com/u/303051?v=4 license: NOASSERTION repoEtag: '"fd2ffa92a16b5dc0d2f97c0e55a7395f4fd13dce33fdb908cf93f2474df3b1e6"' repoLastModified: Sat, 31 Jan 2026 01:05:43 GMT foundInMaster: true - source: https://openapi.tools/ name: OpenAPI Qraft category: - Code Generators - SDK repository: https://github.com/openapi-qraft/openapi-qraft link: https://openapi-qraft.github.io/openapi-qraft/ language: TypeScript source_description: >- Generate a type-safe TanStack Query client for React from an OpenAPI Document. v2: false v3: true v3_1: true id: c65f9ae24d4cb8721415a8b3b513cce4 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFFyYWZ0CgpUaGlzIHJlcG9zaXRvcnkgaG91c2VzIHRoZSBPcGVuQVBJIFFyYWZ0IHRvb2xzLCBkZXNpZ25lZCB0byBlbmhhbmNlIHRoZSBkZXZlbG9wbWVudCBleHBlcmllbmNlIGJ5IHByb3ZpZGluZwpnZW5lcmF0ZWQgdHlwZXNhZmUgVGFuU3RhY2sgUXVlcnkgd3JhcHBlci4KCiMjIPCfk6YgUGFja2FnZXMKCiMjIyBbYEBvcGVuYXBpLXFyYWZ0L2NsaWAg8J+Ul10oLi9wYWNrYWdlcy9jbGkvUkVBRE1FLm1kKQoKQSBwb3dlcmZ1bCBjb21tYW5kLWxpbmUgdXRpbGl0eSBmb3IgZ2VuZXJhdGluZyBzZXJ2aWNlIGRlY2xhcmF0aW9ucyBhbmQgdHlwZWQgKipUYW5TdGFjayBRdWVyeSoqIGludGVyZmFjZXMgZGlyZWN0bHkgZnJvbSBhbgoqKk9wZW5BUEkgU2NoZW1hKiouCgpbUmVhZCBNb3JlXSguL3BhY2thZ2VzL2NsaS9SRUFETUUubWQpCgojIyMgW2BAb3BlbmFwaS1xcmFmdC9yZWFjdGAg8J+Ul10oLi9wYWNrYWdlcy9yZWFjdC1jbGllbnQvUkVBRE1FLm1kKQoKQSBtb2R1bGFyICoqVHlwZVNjcmlwdCoqIGNsaWVudCB0aGF0IGZhY2lsaXRhdGVzIHR5cGUtc2FmZSBBUEkgcmVxdWVzdHMgaW4gUmVhY3QgYXBwbGljYXRpb25zLCBsZXZlcmFnaW5nICoqVGFuU3RhY2sgUXVlcnkqKi4gSXQKdXNlcyBhIFByb3h5LWJhc2VkIGFyY2hpdGVjdHVyZSB0byBkeW5hbWljYWxseSBjYWxsICoqUmVhY3QgSG9va3Mgd2l0aCB0eXBlZCBwYXJhbWV0ZXJzKiouCgoqKk1haW4gRmVhdHVyZXM6KioKCi0gVHlwZS1zYWZlIEFQSSBSZXF1ZXN0cwotIER5bmFtaWMgUHJveHktQmFzZWQgSG9va3MgZm9yIFRhblN0YWNrIFJlYWN0IFF1ZXJ5Ci0gU2FmZSBhbmQgY29tcGF0aWJsZSBpbnRlZ3JhdGlvbiB3aXRoIFRhblN0YWNrIFF1ZXJ5CgpbUmVhZCBNb3JlXSguL3BhY2thZ2VzL3JlYWN0LWNsaWVudC9SRUFETUUubWQpCgojIyDwn6SdIENvbnRyaWJ1dGluZwoKQ29udHJpYnV0aW9ucyB0byB0aGUgT3BlbkFQSSBRcmFmdCBhcmUgaGlnaGx5IGFwcHJlY2lhdGVkLiBXaGV0aGVyIGl0J3MgaW1wcm92aW5nIGRvY3VtZW50YXRpb24sIGFkZGluZyBuZXcKZmVhdHVyZXMsIG9yIHJlcG9ydGluZyBpc3N1ZXMsIHlvdXIgaGVscCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlIGluIG1ha2luZyB0aGVzZSB0b29scyBiZXR0ZXIgZm9yIGV2ZXJ5b25lLgoKIyMg8J+ThCBMaWNlbnNlCgpBbGwgcGFja2FnZXMgd2l0aGluIHRoaXMgcmVwb3NpdG9yeSBhcmUgbGljZW5zZWQgdW5kZXIgdGhlIFtNSVQgTGljZW5zZV0oLi9MSUNFTlNFLnR4dCkuCg== readmeEtag: '"9861733ebd5f8a8429226a02bda48cfb18d725b9"' readmeLastModified: Wed, 16 Oct 2024 02:01:43 GMT repositoryId: 755634410 description: ⚡ Full TanStack Query power in type-safe OpenAPI hooks for React created: '2024-02-10T19:15:33Z' updated: '2026-02-03T09:38:50Z' language: TypeScript archived: false stars: 94 watchers: 1 forks: 5 owner: OpenAPI-Qraft logo: https://avatars.githubusercontent.com/u/159651230?v=4 license: MIT repoEtag: '"dc4fef8ef98b84282d659d18f15a8a71106aa3b0ad4881c95a5a0bde955496c0"' repoLastModified: Tue, 03 Feb 2026 09:38:50 GMT foundInMaster: true - source: https://openapi.tools/ name: Mojolicious::Plugin::OpenAPI::Modern category: Server repository: https://github.com/karenetheridge/mojolicious-plugin-openapi-modern link: https://metacpan.org/dist/Mojolicious-Plugin-OpenAPI-Modern language: Perl source_description: Mojolicious plugin for OpenAPI::Modern v3_1: true id: 77699d6a49674ab7e178a8ff8bafb2b2 repositoryMetadata: base64Readme: >- PXBvZAoKPWVuY29kaW5nIFVURi04Cgo9aGVhZDEgTkFNRQoKTW9qb2xpY2lvdXM6OlBsdWdpbjo6T3BlbkFQSTo6TW9kZXJuIC0gTW9qb2xpY2lvdXMgcGx1Z2luIHByb3ZpZGluZyBhY2Nlc3MgdG8gYW4gT3BlbkFQSSBkb2N1bWVudCBhbmQgcGFyc2VyCgo9aGVhZDEgVkVSU0lPTgoKdmVyc2lvbiAwLjAxOQoKPWhlYWQxIFNZTk9QU0lTCgogICRhcHAtPmNvbmZpZyh7CiAgICBvcGVuYXBpID0+IHsKICAgICAgZG9jdW1lbnRfZmlsZW5hbWUgPT4gJ2RhdGEvb3BlbmFwaS55YW1sJywKICAgICAgYWZ0ZXJfcmVzcG9uc2UgPT4gc3ViICgkYykgeyAuLi4gfSwKICAgIH0sCiAgICAuLi4KICB9KTsKCiAgIyBvcjoKCiAgJGFwcC0+Y29uZmlnKHsKICAgIG9wZW5hcGkgPT4gewogICAgICBkb2N1bWVudF91cmkgPT4gJ2h0dHBzOi8vZXhhbXBsZS5jb20vYXBpL21haW4uanNvbicsCiAgICAgIHNjaGVtYSA9PiB7CiAgICAgICAgb3BlbmFwaSA9PiAnMy4yLjAnLAogICAgICAgIGluZm8gPT4gewogICAgICAgICAgdGl0bGUgPT4gJ1Rlc3QgQVBJIHdpdGggcmF3IHNjaGVtYScsCiAgICAgICAgICB2ZXJzaW9uID0+ICcxLjIuMycsCiAgICAgICAgfSwKICAgICAgICAuLi4KICAgICAgfSwKICAgIH0sCiAgICAuLi4KICB9KTsKCiAgJGFwcC0+cGx1Z2luKCdPcGVuQVBJOjpNb2Rlcm4nLCAkYXBwLT5jb25maWctPntvcGVuYXBpfSk7CgogICMgaW4gYSBjb250cm9sbGVyLi4uCiAgbXkgJHJlc3VsdCA9ICRjLT5vcGVuYXBpLT52YWxpZGF0ZV9yZXF1ZXN0KCRjLT5yZXEpOwoKPWhlYWQxIERFU0NSSVBUSU9OCgpUaGlzIEw8TW9qb2xpY2lvdXM+IHBsdWdpbiBtYWtlcyBhbiBMPE9wZW5BUEk6Ok1vZGVybj4gb2JqZWN0IGF2YWlsYWJsZSB0byB0aGUgYXBwbGljYXRpb24uCgpUaGVyZSBhcmUgbWFueSBmZWF0dXJlcyB0byBjb21lLgoKPWZvciBzdG9wd29yZHMgb3BlbmFwaSBvcGVyYXRpb25JZCBzdWJyZWYKCj1oZWFkMSBDT05GSUdVUkFUSU9OIE9QVElPTlMKCj1oZWFkMiBzY2hlbWEKClRoZSBsaXRlcmFsLCB1bmJsZXNzZWQgUGVybCBkYXRhIHN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBPcGVuQVBJIGRvY3VtZW50LiBTZWUKTDxPcGVuQVBJOjpNb2Rlcm4vb3BlbmFwaV9zY2hlbWE+OyBwYXNzZWQgdG8gdGhlIEw8T3BlbkFQSTo6TW9kZXJuPiBjb25zdHJ1Y3Rvci4KCk9ubHkgdXNlZCBpZiBMPC9vcGVuYXBpX29iaj4gaXMgbm90IHByb3ZpZGVkLgoKPWhlYWQyIGRvY3VtZW50X3VyaQoKQSB1cmkgKHN0cmluZyBvciBNb2pvOjpVUkwgb2JqZWN0KSB3aGljaCBpZGVudGlmaWVzIHRoZSBPcGVuQVBJIGRvY3VtZW50LCBhbmQgaXMgdXNlZCBmb3IgcmVzb2x2aW5nCmFueSByZWxhdGl2ZSBVUklzIHdpdGhpbiB0aGUgZG9jdW1lbnQgKGFzIHdlbGwgYXMgbG9jYXRpb25zIGluIGFueSBlcnJvciBvYmplY3RzIGZyb20gdmFsaWRhdGlvbikuCk5vdGU6IGFzIG9mIE9wZW5BUEkgMy4yLCB5b3UgY2FuIGFsc28gc2V0IHRoaXMgdmFsdWUgd2l0aGluIHRoZSBkb2N1bWVudCBpdHNlbGYsIHVzaW5nIHRoZSBDPCRzZWxmPgprZXl3b3JkLiBUaGlzIGlzIHBhc3NlZCBhcyBDPG9wZW5hcGlfdXJpPiB0byB0aGUgTDxPcGVuQVBJOjpNb2Rlcm4+IGNvbnN0cnVjdG9yLgoKTm90ZSB0aGF0IGluIHRlc3RzLCB5b3Ugc2hvdWxkIHVzZSBhIHJlbGF0aXZlIFVSSSwgb3RoZXJ3aXNlIHJlcXVlc3QgVVJJcyB3aWxsIG5vdCBtYXRjaC4gVGhpcyBpcwpiZWNhdXNlIEw8VGVzdDo6TW9qbz4gdXNlcyBhIHJhbmRvbWx5LWdlbmVyYXRlZCBwb3J0IGZvciB0ZXN0IHJlcXVlc3RzLCB3aGljaCBjYW5ub3QgYmUgcHJlZGljdGVkIGluCmFkdmFuY2UgdG8gYmUgaW5jbHVkZWQgaW4gQzxvcGVuYXBpX3VyaT4uCgpPbmx5IHVzZWQgaWYgTDwvb3BlbmFwaV9vYmo+IGlzIG5vdCBwcm92aWRlZC4KCj1oZWFkMiBkb2N1bWVudF9maWxlbmFtZQoKQSBmaWxlbmFtZSBpbmRpY2F0aW5nIGZyb20gd2hlcmUgdG8gbG9hZCB0aGUgT3BlbkFQSSBkb2N1bWVudC4gU3VwcG9ydHMgWUFNTCBhbmQganNvbiBmaWxlIGZvcm1hdHMuCk9ubHkgdXNlZCBpZiBMPC9zY2hlbWE+IGlzIG5vdCBwcm92aWRlZDsgdGhpcyB2YWx1ZSB3aWxsIGFsc28gYmUgdXNlZCBhcyB0aGUgTDwvZG9jdW1lbnRfdXJpPiBpZiBvbmUKd2FzIG5vdCBleHBsaWNpdGx5IHByb3ZpZGVkLgoKT25seSB1c2VkIGlmIG5laXRoZXIgTDwvc2NoZW1hPiBub3IgTDwvb3BlbmFwaV9vYmo+IHByb3ZpZGVkLgoKPWhlYWQyIG9wZW5hcGlfb2JqCgpBbiBMPE9wZW5BUEk6Ok1vZGVybj4gb2JqZWN0IHRvIHVzZS4gSWYgcHJvdmlkZWQsIGFsbCBvdGhlciBvcHRpb25zIGFib3ZlIGFyZSBpZ25vcmVkLgoKPWhlYWQyIGFmdGVyX3Jlc3BvbnNlCgpBIHN1YnJlZiB3aGljaCBydW5zIGFmdGVyIHRoZSByZXNwb25zZSBoYXMgYmVlbiBmaW5hbGl6ZWQsIHRvIGFsbG93IHlvdSB0byBwZXJmb3JtIHZhbGlkYXRpb24gb24gaXQuCllvdSBCPG11c3Qgbm90PiBtdXRhdGUgdGhlIHJlc3BvbnNlIGhlcmUsIG5vciBzd2FwIGl0IG91dCBmb3IgYSBkaWZmZXJlbnQgcmVzcG9uc2UsIHNvIHVzZSB0aGlzIG9ubHkKZm9yIHRlbGVtZXRyeSBhbmQgbG9nZ2luZy4KCiAgbXkgJGFmdGVyX3Jlc3BvbnNlID0gc3ViICgkYykgewogICAgbXkgJHJlc3VsdCA9ICRjLT52YWxpZGF0ZV9yZXNwb25zZTsKICAgIGlmICgkcmVzdWx0LT52YWxpZCkgewogICAgICAkYy0+bG9nLT5kZWJ1ZygncmVzcG9uc2UgaXMgdmFsaWQnKTsKICAgIH0KICAgIGVsc2UgewogICAgICAjIHNlZSBKU09OOjpTY2hlbWE6Ok1vZGVybjo6UmVzdWx0IGZvciBkaWZmZXJlbnQgb3V0cHV0IGZvcm1hdHMKICAgICAgJGMtPmxvZy0+ZXJyb3IoInJlc3BvbnNlIGlzIGludmFsaWQ6XG4iLCAkcmVzdWx0KTsKICAgIH0KICB9OwoKPWhlYWQxIE1FVEhPRFMKCj1oZWFkMiByZWdpc3RlcgoKSW5zdGFudGlhdGVzIGFuIEw8T3BlbkFQSTo6TW9kZXJuPiBvYmplY3QgYW5kIHByb3ZpZGVzIGFuIGFjY2Vzc29yIHRvIGl0LgoKPWhlYWQxIEhFTFBFUlMKClRoZXNlIG1ldGhvZHMgYXJlIG1hZGUgYXZhaWxhYmxlIG9uIHRoZSBDPCRjPiBvYmplY3QgKHRoZSBpbnZvY2FudCBvZiBhbGwgY29udHJvbGxlciBtZXRob2RzLAphbmQgdGhlcmVmb3JlIG90aGVyIGhlbHBlcnMpLgoKPWhlYWQyIG9wZW5hcGkKClRoZSBMPE9wZW5BUEk6Ok1vZGVybj4gb2JqZWN0OyBpdCBob2xkcyB5b3VyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBhbmQgaXMgcmV1c2VkIGJldHdlZW4gcmVxdWVzdHMuCgo9aGVhZDIgdmFsaWRhdGVfcmVxdWVzdAoKICBteSAkcmVzdWx0ID0gJGMtPm9wZW5hcGktPnZhbGlkYXRlX3JlcXVlc3Q7CgpQYXNzZXMgQzw8ICRjLT5yZXEgPj4gdG8gTDxPcGVuQVBJOjpNb2Rlcm4vdmFsaWRhdGVfcmVxdWVzdD4gYW5kIHJldHVybnMgYQpMPEpTT046OlNjaGVtYTo6TW9kZXJuOjpSZXN1bHQ+IG9iamVjdC4KCk5vdGUgdGhhdCB0aGUgbWF0Y2hpbmcgTDxNb2pvOjpSb3V0ZXM6OlJvdXRlPiBvYmplY3QgZm9yIHRoaXMgcmVxdWVzdCBpcyBJPG5vdD4gdXNlZCB0byBmaW5kIHRoZQpPcGVuQVBJIHBhdGgtaXRlbSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoaXMgcmVxdWVzdDogb25seSBpbmZvcm1hdGlvbiBpbiB0aGUgcmVxdWVzdCBVUkkgaXRzZWxmIGlzCnVzZWQgKGFsdGhvdWdoIHNvbWUgaW5mb3JtYXRpb24gaW4gdGhlIHJvdXRlIG1heSBiZSB1c2VkIGluIGZ1dHVyZSBmZWF0dXJlcykuCgpZb3UgbWlnaHQgd2FudCB0byBkZWZpbmUgYW4gQzx1bmRlcj4gcm91dGUgYWN0aW9uIHRoYXQgY2FsbHMgQzx2YWxpZGF0ZV9yZXF1ZXN0PiBhbmQgc2hvcnQtY2lyY3VpdHMKd2l0aCBhbiBIVFRQIDQwMCByZXNwb25zZSBvbiB2YWxpZGF0aW9uIGZhaWx1cmUuCgo9aGVhZDIgdmFsaWRhdGVfcmVzcG9uc2UKCiAgbXkgJHJlc3VsdCA9ICRjLT5vcGVuYXBpLT52YWxpZGF0ZV9yZXNwb25zZTsKClBhc3NlcyBDPDwgJGMtPnJlcyA+PiBhbmQgQzw8ICRjLT5yZXEgPj4gdG8gTDxPcGVuQVBJOjpNb2Rlcm4vdmFsaWRhdGVfcmVzcG9uc2U+IGFuZCByZXR1cm5zIGEKTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6UmVzdWx0PiBvYmplY3QuCgpBcyB0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBpbiB0aGUgcGFydHMgb2YgdGhlIGRpc3BhdGNoIGZsb3cgd2hlcmUgdGhlIHJlc3BvbnNlIGhhcyBhbHJlYWR5IGJlZW4KcmVuZGVyZWQgYW5kIGZpbmFsaXplZCwgYSBob29rIGhhcyBiZWVuIHNldCB1cCBmb3IgeW91OyB5b3UgY2FuIGFjY2VzcyBpdCBieSBwcm92aWRpbmcgYSBzdWJyZWYgdG8gdGhlCkw8L2FmdGVyX3Jlc3BvbnNlPiBjb25maWd1cmF0aW9uIHZhbHVlOgoKICAkYXBwLT5jb25maWctPntvcGVuYXBpfXthZnRlcl9yZXNwb25zZX0gLy89IHN1YiAoJGMpIHsKICAgIG15ICRyZXN1bHQgPSAkYy0+dmFsaWRhdGVfcmVzcG9uc2U7CiAgICAjIC4uLiBkbyBzb21ldGhpbmcgd2l0aCB0aGUgdmFsaWRhdGlvbiByZXN1bHQKICB9OwoKTm90ZSB0aGF0IHRoZSBtYXRjaGluZyBMPE1vam86OlJvdXRlczo6Um91dGU+IG9iamVjdCBmb3IgdGhpcyByZXF1ZXN0IGlzIEk8bm90PiB1c2VkIHRvIGZpbmQgdGhlCk9wZW5BUEkgcGF0aC1pdGVtIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhpcyByZXF1ZXN0IGFuZCByZXNwb25zZTogb25seSBpbmZvcm1hdGlvbiBpbiB0aGUgcmVxdWVzdCBVUkkKaXRzZWxmIGlzIHVzZWQgKGFsdGhvdWdoIHNvbWUgaW5mb3JtYXRpb24gaW4gdGhlIHJvdXRlIG1heSBiZSB1c2VkIGluIGZ1dHVyZSBmZWF0dXJlcykuCgo9aGVhZDEgU1RBU0ggVkFMVUVTCgpUaGlzIHBsdWdpbiBzdG9yZXMgYWxsIGl0cyBkYXRhIHVuZGVyIHRoZSBDPG9wZW5hcGk+IGhhc2hyZWYsIGUuZy46CgogIG15ICRvcGVyYXRpb25faWQgPSAkYy0+c3Rhc2gtPntvcGVuYXBpfXtvcGVyYXRpb25faWR9OwoKS2V5cyBzdGFydGluZyB3aXRoIHVuZGVyc2NvcmUgYXJlIGZvciBJPGludGVybmFsIHVzZSBvbmx5PiBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgdXBvbiB0byBiZWhhdmUKY29uc2lzdGVudGx5IGFjcm9zcyByZWxlYXNlIHZlcnNpb25zLiBWYWx1ZXMgdGhhdCBtYXkgYmUgdXNlZCBieSBjb250cm9sbGVycyBhbmQgdGVtcGxhdGVzIGFyZToKCj1vdmVyIDQKCj1pdGVtICoKCkM8cGF0aF90ZW1wbGF0ZT46IFNldCBieSB0aGUgZmlyc3QgY2FsbCB0byBMPC92YWxpZGF0ZV9yZXF1ZXN0PiBvciBMPC92YWxpZGF0ZV9yZXNwb25zZT4uIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcmVxdWVzdCBVUkksIHdpdGggcGxhY2Vob2xkZXJzIGluIGJyYWNlcyAoZS5nLiBDPC9wZXRzL3twZXRJZH0+KTsgc2VlIEw8aHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvbGF0ZXN0I3BhdGhzLW9iamVjdD4uCgo9aXRlbSAqCgpDPHBhdGhfY2FwdHVyZXM+OiBTZXQgYnkgdGhlIGZpcnN0IGNhbGwgdG8gTDwvdmFsaWRhdGVfcmVxdWVzdD4gb3IgTDwvdmFsaWRhdGVfcmVzcG9uc2U+LiBBIGhhc2hyZWYgbWFwcGluZyBwbGFjZWhvbGRlcnMgaW4gdGhlIHBhdGggdG8gdGhlaXIgYWN0dWFsIHZhbHVlcyBpbiB0aGUgcmVxdWVzdCBVUkkuCgo9aXRlbSAqCgpDPG9wZXJhdGlvbl9pZD46IFNldCBieSB0aGUgZmlyc3QgY2FsbCB0byBMPC92YWxpZGF0ZV9yZXF1ZXN0PiBvciBMPC92YWxpZGF0ZV9yZXNwb25zZT4uIENvbnRhaW5zIHRoZSBjb3JyZXNwb25kaW5nIEw8b3BlcmF0aW9uSWR8aHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9wYXRocy1hbmQtb3BlcmF0aW9ucy8jb3BlcmF0aW9uaWQ+IG9mIHRoZSBjdXJyZW50IGVuZHBvaW50LgoKPWl0ZW0gKgoKQzxtZXRob2Q+OiBTZXQgYnkgdGhlIGZpcnN0IGNhbGwgdG8gTDwvdmFsaWRhdGVfcmVxdWVzdD4gb3IgTDwvdmFsaWRhdGVfcmVzcG9uc2U+LiBUaGUgSFRUUCBtZXRob2QgdXNlZCBieSB0aGUgcmVxdWVzdCwgbG93ZXItY2FzZWQuCgo9YmFjawoKPWhlYWQxIFNFRSBBTFNPCgo9b3ZlciA0Cgo9aXRlbSAqCgpMPE9wZW5BUEk6Ok1vZGVybj4KCj1pdGVtICoKCkw8VGVzdDo6TW9qbzo6Um9sZTo6T3BlbkFQSTo6TW9kZXJuPgoKPWl0ZW0gKgoKTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6RG9jdW1lbnQ6Ok9wZW5BUEk+Cgo9aXRlbSAqCgpMPEpTT046OlNjaGVtYTo6TW9kZXJuPgoKPWl0ZW0gKgoKTDxodHRwczovL2pzb24tc2NoZW1hLm9yZz4KCj1pdGVtICoKCkw8aHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLz4KCj1pdGVtICoKCkw8aHR0cHM6Ly9sZWFybi5vcGVuYXBpcy5vcmcvPgoKPWl0ZW0gKgoKTDxodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy9sYXRlc3QuaHRtbD4KCj1iYWNrCgo9aGVhZDEgR0lWSU5HIFRIQU5LUwoKPWZvciBzdG9wd29yZHMgTWV0YUNQQU4gR2l0SHViCgpJZiB5b3UgZm91bmQgdGhpcyBtb2R1bGUgdG8gYmUgdXNlZnVsLCBwbGVhc2Ugc2hvdyB5b3VyIGFwcHJlY2lhdGlvbiBieQphZGRpbmcgYSArMSBpbiBMPE1ldGFDUEFOfGh0dHBzOi8vbWV0YWNwYW4ub3JnL2Rpc3QvTW9qb2xpY2lvdXMtUGx1Z2luLU9wZW5BUEktTW9kZXJuPgphbmQgYSBzdGFyIGluIEw8R2l0SHVifGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJlbmV0aGVyaWRnZS9Nb2pvbGljaW91cy1QbHVnaW4tT3BlbkFQSS1Nb2Rlcm4+LgoKPWhlYWQxIFNVUFBPUlQKCkJ1Z3MgbWF5IGJlIHN1Ym1pdHRlZCB0aHJvdWdoIEw8aHR0cHM6Ly9naXRodWIuY29tL2thcmVuZXRoZXJpZGdlL01vam9saWNpb3VzLVBsdWdpbi1PcGVuQVBJLU1vZGVybi9pc3N1ZXM+LgoKSSBhbSBhbHNvIHVzdWFsbHkgYWN0aXZlIG9uIGlyYywgYXMgJ2V0aGVyJyBhdCBDPGlyYy5wZXJsLm9yZz4gYW5kIEM8aXJjLmxpYmVyYS5jaGF0Pi4KCllvdSBjYW4gYWxzbyBmaW5kIG1lIG9uIHRoZSBMPEpTT04gU2NoZW1hIFNsYWNrIHNlcnZlcnxodHRwczovL2pzb24tc2NoZW1hLnNsYWNrLmNvbT4gYW5kCkw8T3BlbkFQSSBTbGFjayBzZXJ2ZXJ8aHR0cHM6Ly9vcGVuLWFwaS5zbGFjay5jb20+LCB3aGljaCBhcmUgYWxzbyBncmVhdCByZXNvdXJjZXMgZm9yIGZpbmRpbmcgaGVscC4KCj1oZWFkMSBBVVRIT1IKCkthcmVuIEV0aGVyaWRnZSA8ZXRoZXJAY3Bhbi5vcmc+Cgo9aGVhZDEgQ09QWVJJR0hUIEFORCBMSUNFTkNFCgpUaGlzIHNvZnR3YXJlIGlzIGNvcHlyaWdodCAoYykgMjAyMSBieSBLYXJlbiBFdGhlcmlkZ2UuCgpUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHNhbWUgdGVybXMgYXMgdGhlIFBlcmwgNSBwcm9ncmFtbWluZyBsYW5ndWFnZSBzeXN0ZW0gaXRzZWxmLgoKPWN1dAo= readmeEtag: '"73b37b25194b5cc022f3871656619f847f027860"' readmeLastModified: Thu, 16 Oct 2025 18:06:18 GMT repositoryId: 436109317 description: Mojolicious plugin providing access to an OpenAPI document and parser created: '2021-12-08T03:55:07Z' updated: '2025-10-16T18:06:26Z' language: Perl archived: false stars: 3 watchers: 2 forks: 1 owner: karenetheridge logo: https://avatars.githubusercontent.com/u/303051?v=4 license: NOASSERTION repoEtag: '"6a0077e9413aa94536a19b7231c927be74d5417707e0ea51d256e723486eab4c"' repoLastModified: Thu, 16 Oct 2025 18:06:26 GMT foundInMaster: true - source: - https://openapi.tools/ - openapi3 tags name: widdershins category: - Documentation - Parsers link: https://mermade.github.io/shins repository: https://github.com/mermade/widdershins language: Node.js source_description: Generate Slate/Shins markdown from OpenAPI 2.0/3.0.x v2: true v3: true repositoryMetadata: base64Readme: >- IyB3aWRkZXJzaGlucwpPcGVuQVBJIC8gU3dhZ2dlciAvIEFzeW5jQVBJIC8gU2Vtb2FzYSBkZWZpbml0aW9uIHRvIFtTbGF0ZV0oaHR0cHM6Ly9naXRodWIuY29tL3NsYXRlZG9jcy9zbGF0ZSkgLwpbUmVTbGF0ZV0oaHR0cHM6Ly9naXRodWIuY29tL21lcm1hZGUvcmVzbGF0ZSkgY29tcGF0aWJsZSBtYXJrZG93bgoKIVtCdWlsZF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90cmF2aXMvTWVybWFkZS93aWRkZXJzaGlucy9tYXN0ZXIuc3ZnKSBbIVtUZXN0ZWQgb24gQVBJcy5ndXJ1XShodHRwczovL2FwaS5hcGlzLmd1cnUvYmFkZ2VzL3Rlc3RlZF9vbi5zdmcpXShodHRwczovL0FQSXMuZ3VydSkgWyFbVGVzdGVkIG9uIE1lcm1hZGUgT3BlbkFQSXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQWRkaXRpb25hbCUyMFNwZWNzLTQxOS1icmlnaHRncmVlbi5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbWVybWFkZS9PcGVuQVBJX3NwZWNpZmljYXRpb25zKQpbIVtLbm93biBWdWxuZXJhYmlsaXRpZXNdKGh0dHBzOi8vc255ay5pby90ZXN0L25wbS93aWRkZXJzaGlucy9iYWRnZS5zdmcpXShodHRwczovL3NueWsuaW8vdGVzdC9ucG0vd2lkZGVyc2hpbnMpCgo8aW1nIHNyYz0iaHR0cDovL21lcm1hZGUuZ2l0aHViLmlvL3dpZGRlcnNoaW5zL2xvZ28ucG5nIiB3aWR0aD0iMjQ3cHgiIGhlaWdodD0iMjUwcHgiIC8+CgojIyMgV2lkZGVyc2hpbnMgKmFkdmVyYio6CiogSW4gYSBkaXJlY3Rpb24gY29udHJhcnkgdG8gdGhlIHN1bidzIGNvdXJzZTsKKiBhbnRpY2xvY2t3aXNlOwoqIGhlbHBpbmcgeW91IHByb2R1Y2Ugc3RhdGljIGRvY3VtZW50YXRpb24gZnJvbSB5b3VyIE9wZW5BUEkgMy4wIC8gU3dhZ2dlciAyLjAgLyBBc3luY0FQSSAxLnggLyBTZW1vYXNhIDAuMS4wIGRlZmluaXRpb24KCiFbV2lkZGVyc2hpbnMgc2NyZWVuc2hvdF0oaHR0cHM6Ly9tZXJtYWRlLmdpdGh1Yi5pby93aWRkZXJzaGlucy9zY3JlZW5zaG90LnBuZykKCiMjIyBOZXdzCgoqIFZlcnNpb24gNC4wIGNoYW5nZXM6CiAgKiBOb3cgdXNlcyBQcm9taXNlcyBub3QgY2FsbGJhY2tzCiAgKiBPcHRpb24gdG8gb3V0cHV0IGh0bWwgZGlyZWN0bHksIGFuZCB0byBSZVNwZWMgZm9ybWF0CiAgKiBVbmlmaWVkIEphdmFTY3JpcHQgYW5kIE5vZGUuanMgY29kZS1zYW1wbGVzLCBQSFAgYWRkZWQKICAqIGByZXN0cmljdGlvbnNgIGNvbHVtbiAoYHJlYWRPbmx5YC9gd3JpdGVPbmx5YCkgYWRkZWQgdG8gc2NoZW1hIHRlbXBsYXRlcwogICogTnVtZXJvdXMgYnVnIGZpeGVzCiogQXMgb2YgdjMuMC4wIFdpZGRlcnNoaW5zIG5vIGxvbmdlciBleHBhbmRzIHRoZSBkZWZpbml0aW9uIG9mIE9wZW5BUEkgYm9keSBwYXJhbWV0ZXJzIC8gcmVxdWVzdEJvZGllcyBieSBkZWZhdWx0LCB1bmxlc3MgdGhleSBoYXZlIGFuIGlubGluZSBzY2hlbWEuIFlvdSBjYW4gcmVzdG9yZSB0aGUgb2xkIGJlaGF2aW91ciBieSB1c2luZyB0aGUgYC0tZXhwYW5kQm9keWAgb3B0aW9uLgoqIFlvdSBtYXkgbGltaXQgdGhlIGRlcHRoIG9mIHNjaGVtYSBleGFtcGxlcyB1c2luZyB0aGUgYC0tbWF4RGVwdGhgIG9wdGlvbi4gVGhlIGRlZmF1bHQgaXMgMTAuCiogVG8gb21pdCBzY2hlbWFzIGVudGlyZWx5LCBwbGVhc2UgY29weSBhbmQgY3VzdG9taXNlIHRoZSBgbWFpbi5kb3RgIHRlbXBsYXRlLgoqIEFzIG9mIHYzLjEuMCBXaWRkZXJzaGlucyBpbmNsdWRlcyBhIGdlbmVyYXRlZCBgQXV0aG9yaXphdGlvbmAgaGVhZGVyIGluIE9wZW5BUEkgY29kZSBzYW1wbGVzLiBJZiB5b3Ugd2lzaCB0byBvbWl0IHRoaXMsIHNlZSBbaGVyZV0oL3RlbXBsYXRlcy9vcGVuYXBpMy9SRUFETUUubWQpLgoKIyMjIFRvIGluc3RhbGwKCiogQ2xvbmUgdGhlIGdpdCByZXBvc2l0b3J5LCBhbmQgYG5wbSBpYCB0byBpbnN0YWxsIGRlcGVuZGVuY2llcywgb3IKKiBgbnBtIGluc3RhbGwgLWcgd2lkZGVyc2hpbnNgIHRvIGluc3RhbGwgZ2xvYmFsbHkKCiMjIyBHZXR0aW5nIHN0YXJ0ZWQKCldpZGRlcnNoaW5zIGlzIGdlbmVyYWxseSB1c2VkIGFzIGEgc3RhZ2UgaW4gYW4gQVBJIGRvY3VtZW50YXRpb24gcGlwZWxpbmUuIFRoZSBwaXBlbGluZSBiZWdpbnMgd2l0aCBhbiBBUEkgZGVmaW5pdGlvbiBpbiBPcGVuQVBJIDMueCwgT3BlbkFQSSAyLjAgKGZrYSBTd2FnZ2VyKSwgQVBJIEJsdWVwcmludCwgQXN5bmNBUEkgb3IgU2Vtb2FzYSBmb3JtYXQuIFdpZGRlcnNoaW5zIGNvbnZlcnRzIHRoaXMgZGVzY3JpcHRpb24gaW50byBtYXJrZG93biBzdWl0YWJsZSBmb3IgdXNlIGJ5IGEgKipyZW5kZXJlcioqLCBzdWNoIGFzIFtTbGF0ZV0oaHR0cHM6Ly9naXRodWIuY29tL3NsYXRlZG9jcy9zbGF0ZSksIFtSZVNsYXRlXShodHRwczovL2dpdGh1Yi5jb20vbWVybWFkZS9yZXNsYXRlKSwgW1NoaW5zXShodHRwczovL2dpdGh1Yi5jb20vbWVybWFkZS9zaGlucykgICgqZGVwcmVjYXRlZCopIG9yIGh0bWwgc3VpdGFibGUgZm9yIHVzZSB3aXRoIFtSZVNwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS93M2MvcmVzcGVjKS4KCklmIHlvdSBuZWVkIHRvIGNyZWF0ZSB5b3VyIGlucHV0IEFQSSBkZWZpbml0aW9uLCBbdGhpcyBsaXN0IG9mIGF2YWlsYWJsZSBlZGl0b3JzXShodHRwczovL2FwaXMuZ3VydS9hd2Vzb21lLW9wZW5hcGkzL2NhdGVnb3J5Lmh0bWwjZWRpdG9ycykgbWF5IGJlIHVzZWZ1bC4KCk1vcmUgaW4tZGVwdGggZG9jdW1lbnRhdGlvbiBpcyBbYXZhaWxhYmxlIGhlcmVdKGh0dHBzOi8vbWVybWFkZS5naXRodWIuaW8vd2lkZGVyc2hpbnMpLgoKIyMjIEV4YW1wbGVzCgpgYGAKbm9kZSB3aWRkZXJzaGlucyAtLXNlYXJjaCBmYWxzZSAtLWxhbmd1YWdlX3RhYnMgJ3J1Ynk6UnVieScgJ3B5dGhvbjpQeXRob24nIC0tc3VtbWFyeSBkZWZzL3BldHN0b3JlMy5qc29uIC1vIHBldHN0b3JlMy5tZApgYGAKCiMjIyBPcHRpb25zCgp8IENMSSBwYXJhbWV0ZXIgbmFtZSB8IEphdmFTY3JpcHQgcGFyYW1ldGVyIG5hbWUgfCBUeXBlIHwgRGVmYXVsdCB2YWx1ZSB8IERlc2NyaXB0aW9uIHwKfCAtLS0gfCAtLS0gfCAtLS0gfCAtLS0gfCAtLS0gfAp8IC0tY2xpcGJvYXJkIHwgb3B0aW9ucy5jbGlwYm9hcmQgfCBgYm9vbGVhbmAgfCBgdHJ1ZWAgfCBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgYGNvZGVfY2xpcGJvYXJkYCBwcm9wZXJ0eSBpbiB0aGUgaGVhZGluZywgc28gdGhhdCBtYXJrZG93biBwcm9jZXNzb3JzIGNhbiBpbmNsdWRlIGNsaXBib2FyZCBzdXBwb3J0LiB8CnwgLS1jdXN0b21BcGlLZXlWYWx1ZSB8IG9wdGlvbnMuY3VzdG9tQXBpS2V5VmFsdWUgfCBgc3RyaW5nYCB8IGBBcGlLZXlgIHwgU2V0IGEgY3VzdG9tIEFQSSBrZXkgdmFsdWUgdG8gdXNlIGFzIHRoZSBBUEkga2V5IGluIGdlbmVyYXRlZCBjb2RlIGV4YW1wbGVzLiB8CnwgLS1leHBhbmRCb2R5IHwgb3B0aW9ucy5leHBhbmRCb2R5IHwgYGJvb2xlYW5gIHwgYGZhbHNlYCB8IElmIGEgbWV0aG9kJ3MgcmVxdWVzdEJvZHkgcGFyYW1ldGVyIHJlZmVycyB0byBhIHNjaGVtYSBieSByZWZlcmVuY2UgKG5vdCB3aXRoIGEgaW5saW5lIHNjaGVtYSksIGJ5IGRlZmF1bHQsIFdpZGRlcnNoaW5zIHNob3dzIG9ubHkgYSByZWZlcmVuY2UgdG8gdGhpcyBwYXJhbWV0ZXIuIFNldCB0aGlzIG9wdGlvbiB0byB0cnVlIHRvIGV4cGFuZCB0aGUgc2NoZW1hIGFuZCBzaG93IGFsbCBwcm9wZXJ0aWVzIGluIHRoZSByZXF1ZXN0IGJvZHkuIHwKfCAtLWhlYWRpbmdzIHwgb3B0aW9ucy5oZWFkaW5ncyB8IGBpbnRlZ2VyYCB8IDIgfCBTZXQgdGhlIHZhbHVlIG9mIHRoZSBgaGVhZGluZ0xldmVsYCBwYXJhbWV0ZXIgaW4gdGhlIGhlYWRlciBzbyBtYXJrZG93biBwcm9jZXNzb3JzIGtub3cgaG93IG1hbnkgaGVhZGluZyBsZXZlbHMgdG8gc2hvdyBpbiB0aGUgdGFibGUgb2YgY29udGVudHMuIEN1cnJlbnRseSBzdXBwb3J0ZWQgb25seSBieSBTaGlucywgbm90IGJ5IFNsYXRlLCB3aGljaCBsYWNrcyB0aGlzIGZlYXR1cmUuIHwKfCAtLW9taXRCb2R5IHwgb3B0aW9ucy5vbWl0Qm9keSB8IGBib29sZWFuYCB8IGBmYWxzZWAgfCBCeSBkZWZhdWx0LCBXaWRkZXJzaGlucyBpbmNsdWRlcyB0aGUgYm9keSBwYXJhbWV0ZXIgYXMgYSByb3cgaW4gdGhlIHBhcmFtZXRlcnMgdGFibGUgYmVmb3JlIHRoZSByb3dzIHRoYXQgcmVwcmVzZW50IHRoZSBmaWVsZHMgaW4gdGhlIGJvZHkuIFNldCB0aGlzIHBhcmFtZXRlciB0byBvbWl0IHRoYXQgYm9keSBwYXJhbWV0ZXIgcm93LiB8CnwgLS1vbWl0SGVhZGVyIHwgb3B0aW9ucy5vbWl0SGVhZGVyIHwgYGJvb2xlYW5gIHwgYGZhbHNlYCB8IE9taXQgdGhlIGhlYWRlciAvIFlBTUwgZnJvbnQtbWF0dGVyIGluIHRoZSBnZW5lcmF0ZWQgTWFya2Rvd24gZmlsZS4gfAp8IC0tcmVzb2x2ZSB8IG9wdGlvbnMucmVzb2x2ZSB8IGBib29sZWFuYCB8IGBmYWxzZWAgfCBSZXNvbHZlIGV4dGVybmFsICRyZWZzLCB1c2luZyB0aGUgYHNvdXJjZWAgcGFyYW1ldGVyIG9yIHRoZSBpbnB1dCBmaWxlIGFzIHRoZSBiYXNlIGxvY2F0aW9uLiB8CnwgLS1zaGFsbG93U2NoZW1hcyB8IG9wdGlvbnMuc2hhbGxvd1NjaGVtYXMgfCBgYm9vbGVhbmAgfCBgZmFsc2VgIHwgV2hlbiByZWZlcnJpbmcgdG8gYSBzY2hlbWEgd2l0aCBhICRyZWYsIGRvbid0IHNob3cgdGhlIGZ1bGwgY29udGVudHMgb2YgdGhlIHNjaGVtYS4gfAp8IE4vQSB8IG9wdGlvbnMuc291cmNlIHwgYHN0cmluZ2AgfCBOb25lIHwgVGhlIGFic29sdXRlIGxvY2F0aW9uIG9yIFVSTCBvZiB0aGUgc291cmNlIGZpbGUgdG8gdXNlIGFzIHRoZSBiYXNlIHRvIHJlc29sdmUgcmVsYXRpdmUgcmVmZXJlbmNlcyAoJHJlZnMpIGZyb207IHJlcXVpcmVkIGlmIG9wdGlvbnMucmVzb2x2ZSBpcyBzZXQgdG8gdHJ1ZS4gRm9yIENMSSBjb21tYW5kcywgV2lkZGVyc2hpbnMgdXNlcyB0aGUgaW5wdXQgZmlsZSBhcyB0aGUgYmFzZSBmb3IgdGhlICRyZWZzLiB8CnwgLS1zdW1tYXJ5IHwgb3B0aW9ucy50b2NTdW1tYXJ5IHwgYGJvb2xlYW5gIHwgYGZhbHNlYCB8IFVzZSB0aGUgb3BlcmF0aW9uIHN1bW1hcnkgYXMgdGhlIFRPQyBlbnRyeSBpbnN0ZWFkIG9mIHRoZSBJRC4gfAp8IC0tdXNlQm9keU5hbWUgfCBvcHRpb25zLnVzZUJvZHlOYW1lIHwgYGJvb2xlYW5gIHwgVXNlIG9yaWdpbmFsIHBhcmFtIG5hbWUgZm9yIE9wZW5BUEkgMi4wIGJvZHkgcGFyYW1ldGVyLiB8CnwgLXYsIC0tdmVyYm9zZSB8IG9wdGlvbnMudmVyYm9zZSB8IGBib29sZWFuYCB8IGBmYWxzZWAgfCBJbmNyZWFzZSB2ZXJib3NpdHkuIHwKfCAtaCwgLS1oZWxwIHwgb3B0aW9ucy5oZWxwIHwgYGJvb2xlYW5gIHwgYGZhbHNlYCB8IFNob3cgaGVscC4gfAp8IC0tdmVyc2lvbiB8IG9wdGlvbnMudmVyc2lvbiB8IGBib29sZWFuYCB8IGBmYWxzZWAgfCBTaG93IHZlcnNpb24gbnVtYmVyLiB8CnwgLWMsIC0tY29kZSB8IG9wdGlvbnMuY29kZVNhbXBsZXMgfCBgYm9vbGVhbmAgfCBgZmFsc2VgIHwgT21pdCBnZW5lcmF0ZWQgY29kZSBzYW1wbGVzLiB8CnwgLS1odHRwc25pcHBldCB8IG9wdGlvbnMuaHR0cHNuaXBwZXQgfCBgYm9vbGVhbmAgfCBgZmFsc2VgIHwgVXNlIGh0dHBzbmlwcGV0IHRvIGdlbmVyYXRlIGNvZGUgc2FtcGxlcy4gfAp8IC1kLCAtLWRpc2NvdmVyeSB8IG9wdGlvbnMuZGlzY292ZXJ5IHwgYGJvb2xlYW5gIHwgYGZhbHNlYCB8IEluY2x1ZGUgc2NoZW1hLm9yZyBXZWJBUEkgZGlzY292ZXJ5IGRhdGEuIHwKfCAtZSwgLS1lbnZpcm9ubWVudCB8IE4vQSB8IGBzdHJpbmdgIHwgTm9uZSB8IEZpbGUgdG8gbG9hZCBjb25maWcgb3B0aW9ucyBmcm9tLiB8CnwgLWksIC0taW5jbHVkZXMgfCBvcHRpb25zLmluY2x1ZGVzIHwgYHN0cmluZ2AgfCBOb25lIHwgTGlzdCBvZiBmaWxlcyB0byBwdXQgaW4gdGhlIGBpbmNsdWRlYCBoZWFkZXIgb2YgdGhlIG91dHB1dCBNYXJrZG93bi4gUHJvY2Vzc29ycyBzdWNoIGFzIFNoaW5zIGNhbiB0aGVuIGltcG9ydCB0aGUgY29udGVudHMgb2YgdGhlc2UgZmlsZXMuIHwKfCAtbCwgLS1sYW5nIHwgb3B0aW9ucy5sYW5nIHwgYGJvb2xlYW5gIHwgYGZhbHNlYCB8IEdlbmVyYXRlIHRoZSBsaXN0IG9mIGxhbmd1YWdlcyBmb3IgY29kZSBzYW1wbGVzIGJhc2VkIG9uIHRoZSBsYW5ndWFnZXMgdXNlZCBpbiB0aGUgc291cmNlIGZpbGUncyBgeC1jb2RlLXNhbXBsZXNgIGV4YW1wbGVzLiB8CnwgLS1sYW5ndWFnZV90YWJzIHwgb3B0aW9ucy5sYW5ndWFnZV90YWJzIHwgYHN0cmluZ2AgfCAoRGlmZmVycyBmb3IgZWFjaCBpbnB1dCB0eXBlKSB8IExpc3Qgb2YgbGFuZ3VhZ2UgdGFicyBmb3IgY29kZSBzYW1wbGVzIHVzaW5nIGxhbmd1YWdlWzpsYWJlbFs6Y2xpZW50XV0gZm9ybWF0LCBzdWNoIGFzIGBqYXZhc2NyaXB0OkphdmFTY3JpcHQ6cmVxdWVzdGAuIHwKfCAtbSwgLS1tYXhEZXB0aCB8IG9wdGlvbnMubWF4RGVwdGggfCBgaW50ZWdlcmAgfCAxMCB8IE1heGltdW0gZGVwdGggdG8gc2hvdyBmb3Igc2NoZW1hIGV4YW1wbGVzLiB8CnwgLW8sIC0tb3V0ZmlsZSB8IE4vQSB8IGBzdHJpbmdgIHwgTm9uZSB8IEZpbGUgdG8gd3JpdGUgdGhlIG91dHB1dCBtYXJrZG93biB0by4gSWYgbGVmdCBibGFuaywgV2lkZGVyc2hpbnMgc2VuZHMgdGhlIG91dHB1dCB0byBzdGRvdXQuIHwKfCAtciwgLS1yYXcgfCAqKmludmVyc2UqKiBvZiBvcHRpb25zLnNhbXBsZSB8IGBib29sZWFuYCB8IGBmYWxzZWAgfCBPdXRwdXQgcmF3IHNjaGVtYXMgaW5zdGVhZCBvZiBleGFtcGxlIHZhbHVlcy4gfAp8IC1zLCAtLXNlYXJjaCB8IG9wdGlvbnMuc2VhcmNoIHwgYGJvb2xlYW5gIHwgYHRydWVgIHwgU2V0IHRoZSB2YWx1ZSBvZiB0aGUgYHNlYXJjaGAgcGFyYW1ldGVyIGluIHRoZSBoZWFkZXIgc28gTWFya2Rvd24gcHJvY2Vzc29ycyBsaWtlIFNsYXRlIGluY2x1ZGUgc2VhcmNoIG9yIG5vdCBpbiB0aGVpciBvdXRwdXQuIHwKfCAtdCwgLS10aGVtZSB8IG9wdGlvbnMudGhlbWUgfCBgc3RyaW5nYCB8IGRhcmt1bGEgfCBTeW50YXgtaGlnaGxpZ2h0ZXIgdGhlbWUgdG8gdXNlLiB8CnwgLXUsIC0tdXNlcl90ZW1wbGF0ZXMgfCBvcHRpb25zLnVzZXJfdGVtcGxhdGVzIHwgYHN0cmluZ2AgfCBOb25lIHwgRGlyZWN0b3J5IHRvIGxvYWQgb3ZlcnJpZGUgdGVtcGxhdGVzIGZyb20uIHwKfCAteCwgLS1leHBlcmltZW50YWwgfCBvcHRpb25zLmV4cGVyaW1lbnRhbCB8IGBib29sZWFuYCB8ICB8IFVzZSBodHRwU25pcHBldCBmb3IgbXVsdGlwYXJ0IG1lZGlhdHlwZXMuIHwKfCAteSwgLS15YW1sIHwgb3B0aW9ucy55YW1sIHwgYGJvb2xlYW5gIHwgYGZhbHNlYCB8IERpc3BsYXkgSlNPTiBzY2hlbWFzIGluIFlBTUwgZm9ybWF0LiB8CnwgIHwgb3B0aW9ucy50ZW1wbGF0ZUNhbGxiYWNrIHwgYGZ1bmN0aW9uYCB8IE5vbmUgfCBBIGBmdW5jdGlvbmAgdGhhdCBpcyBjYWxsZWQgYmVmb3JlIGFuZCBhZnRlciBlYWNoIHRlbXBsYXRlIChKYXZhU2NyaXB0IGNvZGUgb25seSkuIHwKfCAgfCBvcHRpb25zLnRvY19mb290ZXJzIHwgYG9iamVjdGAgfCBBIG1hcCBvZiBgdXJsYHMgYW5kIGBkZXNjcmlwdGlvbmBzIHRvIGJlIGFkZGVkIHRvIHRoZSBUb0MgZm9vdGVycyBhcnJheSAoSmF2YVNjcmlwdCBjb2RlIG9ubHkpLiB8CgpJbiBOb2RlLkpTIGNvZGUsIGNyZWF0ZSBhbiBvcHRpb25zIG9iamVjdCBhbmQgcGFzcyBpdCB0byB0aGUgV2lkZGVyc2hpbnMgYGNvbnZlcnRgIGZ1bmN0aW9uLCBhcyBpbiB0aGlzIGV4YW1wbGU6CgpgYGBqYXZhc2NyaXB0CmNvbnN0IGNvbnZlcnRlciA9IHJlcXVpcmUoJ3dpZGRlcnNoaW5zJyk7CmxldCBvcHRpb25zID0ge307IC8vIGRlZmF1bHRzIHNob3duCm9wdGlvbnMuY29kZVNhbXBsZXMgPSB0cnVlOwpvcHRpb25zLmh0dHBzbmlwcGV0ID0gZmFsc2U7Ci8vb3B0aW9ucy5sYW5ndWFnZV90YWJzID0gW107Ci8vb3B0aW9ucy5sYW5ndWFnZV9jbGllbnRzID0gW107Ci8vb3B0aW9ucy5sb2FkZWRGcm9tID0gc291cmNlVXJsOyAvLyBvbmx5IG5lZWRlZCBpZiBpbnB1dCBkb2N1bWVudCBpcyByZWxhdGl2ZQovL29wdGlvbnMudXNlcl90ZW1wbGF0ZXMgPSAnLi91c2VyX3RlbXBsYXRlcyc7Cm9wdGlvbnMudGVtcGxhdGVDYWxsYmFjayA9IGZ1bmN0aW9uKHRlbXBsYXRlTmFtZSxzdGFnZSxkYXRhKSB7IHJldHVybiBkYXRhIH07Cm9wdGlvbnMudGhlbWUgPSAnZGFya3VsYSc7Cm9wdGlvbnMuc2VhcmNoID0gdHJ1ZTsKb3B0aW9ucy5zYW1wbGUgPSB0cnVlOyAvLyBzZXQgZmFsc2UgYnkgLS1yYXcKb3B0aW9ucy5kaXNjb3ZlcnkgPSBmYWxzZTsKb3B0aW9ucy5pbmNsdWRlcyA9IFtdOwpvcHRpb25zLnNoYWxsb3dTY2hlbWFzID0gZmFsc2U7Cm9wdGlvbnMudG9jU3VtbWFyeSA9IGZhbHNlOwpvcHRpb25zLmhlYWRpbmdzID0gMjsKb3B0aW9ucy55YW1sID0gZmFsc2U7Ci8vb3B0aW9ucy5yZXNvbHZlID0gZmFsc2U7Ci8vb3B0aW9ucy5zb3VyY2UgPSBzb3VyY2VVcmw7IC8vIGlmIHJlc29sdmUgaXMgdHJ1ZSwgbXVzdCBiZSBzZXQgdG8gZnVsbCBwYXRoIG9yIFVSTCBvZiB0aGUgaW5wdXQgZG9jdW1lbnQKY29udmVydGVyLmNvbnZlcnQoYXBpT2JqLG9wdGlvbnMpCi50aGVuKHN0ciA9PiB7CiAgLy8gc3RyIGNvbnRhaW5zIHRoZSBjb252ZXJ0ZWQgbWFya2Rvd24KfSkKLmNhdGNoKGVyciA9PiB7CiAgY29uc29sZS5lcnJvcihlcnIpOwp9KTsKYGBgCgpUbyBvbmx5IGluY2x1ZGUgYSBzdWJzZXQgb2YgdGhlIHByZS1kZWZpbmVkIGxhbmd1YWdlLXRhYnMsIG9yIHRvIHJlbmFtZSB0aGVpciBkaXNwbGF5LW5hbWVzLCB5b3UgY2FuIG92ZXJyaWRlIHRoZSBgb3B0aW9ucy5sYW5ndWFnZV90YWJzYDoKCmBgYGphdmFzY3JpcHQKb3B0aW9ucy5sYW5ndWFnZV90YWJzID0gW3sgJ2dvJzogJ0dvJyB9LCB7ICdodHRwJzogJ0hUVFAnIH0sIHsgJ2phdmFzY3JpcHQnOiAnSmF2YVNjcmlwdCcgfSwgeyAnamF2YXNjcmlwdC0tbm9kZSc6ICdOb2RlLkpTJyB9LCB7ICdweXRob24nOiAnUHl0aG9uJyB9LCB7ICdydWJ5JzogJ1J1YnknIH1dOwpgYGAKClRoZSBgLS1lbnZpcm9ubWVudGAgb3B0aW9uIHNwZWNpZmllcyBhIEpTT04gb3IgWUFNTC1mb3JtYXR0ZWQgYG9wdGlvbnNgIG9iamVjdCwgZm9yIGV4YW1wbGU6CgpgYGBqc29uCnsKICAibGFuZ3VhZ2VfdGFicyI6IFt7ICJnbyI6ICJHbyIgfSwgeyAiaHR0cCI6ICJIVFRQIiB9LCB7ICJqYXZhc2NyaXB0IjogIkphdmFTY3JpcHQiIH0sIHsgImphdmFzY3JpcHQtLW5vZGUiOiAiTm9kZS5KUyIgfSwgeyAicHl0aG9uIjogIlB5dGhvbiIgfSwgeyAicnVieSI6ICJSdWJ5IiB9XSwKICAidmVyYm9zZSI6IHRydWUsCiAgInRhZ0dyb3VwcyI6IFsKICAgIHsKICAgICAgInRpdGxlIjogIkNvbXBhbmllcyIsCiAgICAgICJ0YWdzIjogWyJjb21wYW5pZXMiXQogICAgfSwKICAgIHsKICAgICAgInRpdGxlIjogIkJpbGxpbmciLAogICAgICAidGFncyI6IFsiaW52b2ljZS1jcmVhdGUiLCAiaW52b2ljZS1jbG9zZSIsICJpbnZvaWNlLWRlbGV0ZSJdCiAgICB9CiAgXQp9CmBgYAoKWW91IGNhbiBhbHNvIHVzZSB0aGUgZW52aXJvbm1lbnQgZmlsZSB0byBncm91cCBPQVMvU3dhZ2dlciB0YWdnZWQgcGF0aHMgdG9nZXRoZXIgdG8gY3JlYXRlIGEgbW9yZSBlbGVnYW50IHRhYmxlIG9mIGNvbnRlbnRzLCBhbmQgb3ZlcmFsbCBwYWdlIHN0cnVjdHVyZS4KCklmIHlvdSBuZWVkIHRvIHN1cHBvcnQgYSB2ZXJzaW9uIG9mIFNsYXRlIFw8djEuNS4wIChvciBhIHJlbmRlcmVyIHdoaWNoIGFsc28gZG9lc24ndCBzdXBwb3J0IGRpc3BsYXktbmFtZXMgZm9yIGxhbmd1YWdlLXRhYnMsIHN1Y2ggYXMgYG5vZGUtc2xhdGVgLCBgc2xhdGUtbm9kZWAgb3IgYHdoaXRlYm9hcmRgKSwgeW91IGNhbiB1c2UgdGhlIGAtLWVudmlyb25tZW50YCBvcHRpb24gd2l0aCB0aGUgaW5jbHVkZWQgYHdoaXRlYm9hcmRfZW52Lmpzb25gIGZpbGUgdG8gc2ltcGx5IGFjaGlldmUgdGhpcy4KCklmIHlvdSBhcmUgdXNpbmcgdGhlIGBodHRwc25pcHBldGAgb3B0aW9uIHRvIGdlbmVyYXRlIGNvZGUgc2FtcGxlcywgeW91IGNhbiBzcGVjaWZ5IHRoZSBjbGllbnQgbGlicmFyeSB1c2VkIHRvIHBlcmZvcm0gdGhlIHJlcXVlc3RzIGZvciBlYWNoIGxhbmd1YWdlIGJ5IG92ZXJyaWRpbmcgdGhlIGBvcHRpb25zLmxhbmd1YWdlX2NsaWVudHNgOgoKYGBgamF2YXNjcmlwdApvcHRpb25zLmxhbmd1YWdlX2NsaWVudHMgPSBbeyAnc2hlbGwnOiAnY3VybCcgfSwgeyAnbm9kZSc6ICdyZXF1ZXN0JyB9LCB7ICdqYXZhJzogJ3VuaXJlc3QnIH1dOwpgYGAKCklmIHRoZSBsYW5ndWFnZSBuYW1lIGRpZmZlcnMgYmV0d2VlbiB0aGUgbWFya2Rvd24gbmFtZSByZXF1aXJlZCB0byBzeW50YXggaGlnaGxpZ2h0IGFuZCB0aGUgaHR0cHNuaXBwZXQgcmVxdWlyZWQgdGFyZ2V0LCBib3RoIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIGZvcm0gYG1hcmtkb3duLS10YXJnZXRgLgoKVG8gc2VlIHRoZSBsaXN0IG9mIGxhbmd1YWdlcyBhbmQgY2xpZW50cyBzdXBwb3J0ZWQgYnkgaHR0cHNuaXBwZXQsIFtjbGljayBoZXJlXShodHRwczovL2dpdGh1Yi5jb20vS29uZy9odHRwc25pcHBldC90cmVlL21hc3Rlci9zcmMvdGFyZ2V0cykuCgpUaGUgYGxvYWRlZEZyb21gIG9wdGlvbiBpcyBvbmx5IG5lZWRlZCB3aGVyZSB0aGUgT3BlbkFQSSAvIFN3YWdnZXIgZGVmaW5pdGlvbiBkb2VzIG5vdCBzcGVjaWZ5IGEgaG9zdCwgYW5kIChhcyBwZXIgdGhlIE9wZW5BUEkgW3NwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCNmaXhlZC1maWVsZHMpKSB0aGUgQVBJIGVuZHBvaW50IGlzIGRlZW1lZCB0byBiZSBiYXNlZCBvbiB0aGUgc291cmNlIFVSTAp0aGUgZGVmaW5pdGlvbiB3YXMgbG9hZGVkIGZyb20uCgpUbyBzZWUgdGhlIGxpc3Qgb2YgaGlnaGxpZ2h0LWpzIHN5bnRheCBoaWdobGlnaHRpbmcgdGhlbWVzLCBbY2xpY2sgaGVyZV0oaHR0cHM6Ly9oaWdobGlnaHRqcy5vcmcvc3RhdGljL2RlbW8vKS4KClNjaGVtYS5vcmcgV2ViQVBJIGRpc2NvdmVyeSBkYXRhIGlzIGluY2x1ZGVkIGlmIHRoZSBgZGlzY292ZXJ5YCBvcHRpb24gYWJvdmUgaXMgc2V0IGB0cnVlYC4gU2VlIHRoZSBXM0MgW1dlYkFQSSBEaXNjb3ZlcnkgQ29tbXVuaXR5IEdyb3VwXShodHRwczovL3d3dy53My5vcmcvY29tbXVuaXR5L3dlYi1hcGktZGlzY292ZXJ5LykgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgojIyBMYW5ndWFnZSB0YWJzCgpXaWRkZXJzaGlucyBzdXBwb3J0cyB0aGUgYHgtY29kZS1zYW1wbGVzYCBbdmVuZG9yLWV4dGVuc2lvbl0oaHR0cHM6Ly9naXRodWIuY29tL1JlYmlsbHkvUmVEb2MvYmxvYi9tYXN0ZXIvZG9jcy9yZWRvYy12ZW5kb3ItZXh0ZW5zaW9ucy5tZCNvcGVyYXRpb24tb2JqZWN0LXZlbmRvci1leHRlbnNpb25zKSB0byBjb21wbGV0ZWx5IGN1c3RvbWlzZSB5b3VyIGRvY3VtZW50YXRpb24uIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gZWRpdCB0aGUgZGVmYXVsdCBjb2RlLXNhbXBsZXMgaW4gdGhlIGB0ZW1wbGF0ZXNgIHN1Yi1kaXJlY3RvcnksIG9yIG92ZXJyaWRlIHRoZW0gdXNpbmcgdGhlIGB1c2VyX3RlbXBsYXRlc2Agb3B0aW9uIHRvIHNwZWNpZnkgYSBkaXJlY3RvcnkgY29udGFpbmluZyB5b3VyIHRlbXBsYXRlcy4KCldpZGRlcnNoaW5zIHN1cHBvcnRzIHRoZSB1c2Ugb2YgbXVsdGlwbGUgbGFuZ3VhZ2UgdGFicyB3aXRoIHRoZSBzYW1lIGxhbmd1YWdlIChpLmUuIHBsYWluIEphdmFzY3JpcHQgYW5kIE5vZGUuSnMpLiBUbyB1c2UgdGhpcyBzdXBwb3J0IHlvdSBtdXN0IGJlIHVzaW5nIFNsYXRlIChvciBvbmUgb2YgaXRzIHBvcnRzIGNvbXBhdGlibGUgd2l0aCkgdmVyc2lvbiAxLjUuMCBvciBoaWdoZXIuCgojIyBUZW1wbGF0ZXMKCkJ5IGRlZmF1bHQsIFdpZGRlcnNoaW5zIHVzZXMgdGhlIHRlbXBsYXRlcyBpbiBpdHMgYHRlbXBsYXRlcy9gIGZvbGRlciB0byBnZW5lcmF0ZSB0aGUgTWFya2Rvd24gb3V0cHV0LiBUbyBjdXN0b21pemUgdGhlIHRlbXBsYXRlcywgY29weSBzb21lIG9yIGFsbCBvZiB0aGVtIHRvIGEgZm9sZGVyIGFuZCBwYXNzIHRoZWlyIGxvY2F0aW9uIHRvIHRoZSBgdXNlcl90ZW1wbGF0ZXNgIHBhcmFtZXRlci4KClRoZSB0ZW1wbGF0ZXMgaW5jbHVkZSBgLmRvdGAgdGVtcGxhdGVzIGFuZCBgLmRlZmAgcGFydGlhbHMuIFRvIG92ZXJyaWRlIGEgYC5kb3RgIHRlbXBsYXRlLCB5b3UgbXVzdCBjb3B5IGl0IGFuZCB0aGUgY2hpbGQgYC5kZWZgIHBhcnRpYWxzIHRoYXQgdGhlIHRlbXBsYXRlIHJlZmVyZW5jZXMuIFNpbWlsYXJseSwgdG8gb3ZlcnJpZGUgYSBgLmRlZmAgcGFydGlhbCwgeW91IG11c3QgYWxzbyBjb3B5IHRoZSBwYXJlbnQgYC5kb3RgIHRlbXBsYXRlLiBGb3IgT3BlbkFQSSAzLCB0aGUgcHJpbWFyeSB0ZW1wbGF0ZSBpcyBgbWFpbi5kb3RgIGFuZCBpdHMgbWFpbiBjaGlsZCBwYXJ0aWFscyBhcmUgYHBhcmFtZXRlcnMuZGVmYCwgYHJlc3BvbnNlcy5kZWZgLCBhbmQgYGNhbGxiYWNrcy5kZWZgLgoKVGhpcyBtZWFucyB0aGF0IGl0IGlzIHVzdWFsbHkgZWFzaWVzdCB0byBjb3B5IGFsbCBgLmRvdGAgYW5kIGAuZGVmYCBmaWxlcyB0byB5b3VyIHVzZXIgdGVtcGxhdGVzIGRpcmVjdG9yeSBzbyB5b3UgZG9uJ3Qgc2tpcCBhIHRlbXBsYXRlIG9yIHBhcnRpYWwuIFRvIGJyaW5nIGluIGNoYW5nZXMgZnJvbSBXaWRkZXJzaGlucyB1cGRhdGVzLCB5b3UgY2FuIHVzZSBhIHZpc3VhbCBgZGlmZmAgdG9vbCB3aGljaCBjYW4gcnVuIGFjcm9zcyB0d28gZGlyZWN0b3JpZXMsIHN1Y2ggYXMgW01lbGRdKGh0dHA6Ly9tZWxkbWVyZ2Uub3JnLykgb3IgW1dpbk1lcmdlXShodHRwOi8vd2lubWVyZ2Uub3JnKS4KCiMjIyBUZW1wbGF0ZSBzeW50YXgKClRlbXBsYXRlcyBhcmUgY29tcGlsZWQgd2l0aCBbZG9ULmpzXShodHRwczovL2dpdGh1Yi5jb20vb2xhZG8vZG9UI3JlYWRtZSkuCgpUZW1wbGF0ZXMgaGF2ZSBhY2Nlc3MgdG8gYSBgZGF0YWAgb2JqZWN0IHdpdGggYSByYW5nZSBvZiBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRoZSBkb2N1bWVudCBjb250ZXh0LiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBhcmFtZXRlcnMsIHNlZSB0aGUgUkVBRE1FIGZpbGUgZm9yIHRoZSBhcHByb3ByaWF0ZSB0ZW1wbGF0ZXM6CgoqIFtTd2FnZ2VyIDIuMCAvIE9wZW5BUEkgMy4wLnggdGVtcGxhdGUgcGFyYW1ldGVyc10oL3RlbXBsYXRlcy9vcGVuYXBpMy9SRUFETUUubWQpCiogW0FzeW5jQVBJIDEueCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzXSgvdGVtcGxhdGVzL2FzeW5jYXBpMS9SRUFETUUubWQpCiogW1NlbW9hc2EgMC4xLjAgdGVtcGxhdGUgcGFyYW1ldGVyc10oL3RlbXBsYXRlcy9zZW1vYXNhL1JFQURNRS5tZCkKClRvIHByaW50IHRoZSB2YWx1ZSBvZiBhIHBhcmFtZXRlciBvciB2YXJpYWJsZSBpbiBhIHRlbXBsYXRlLCB1c2UgdGhlIGNvZGUgYHt7PXBhcmFtZXRlck5hbWV9fWAuIEZvciBleGFtcGxlLCB0byBwcmludCB0aGUgdGl0bGUgb2YgYW4gT3BlbkFQSSAzIHNwZWMgKGZyb20gaXRzIGBpbmZvLnRpdGxlYCBmaWVsZCksIHVzZSB0aGUgY29kZSBge3s9ZGF0YS5hcGkuaW5mby50aXRsZX19YC4KClRvIGxvb3AgdGhyb3VnaCB2YWx1ZXMgaW4gYW4gYXJyYXksIHVzZSB0aGUgY29kZSBge3t+IGFycmF5TmFtZSA6dGVtcFZhcmlhYmxlfX1gIHRvIHN0YXJ0IHRoZSBsb29wIGFuZCB0aGUgY29kZSBge3t+fX1gIHRvIGNsb3NlIHRoZSBsb29wLiBGb3IgZXhhbXBsZSwgdGhlIE9wZW5BUEkgMyBwYXJ0aWFsIGBwYXJhbWV0ZXJzLmRlZmAgdXNlcyB0aGlzIGNvZGUgdG8gY3JlYXRlIGEgdGFibGUgb2YgdGhlIHBhcmFtZXRlcnMgaW4gYW4gb3BlcmF0aW9uOgpgYGAKfE5hbWV8SW58VHlwZXxSZXF1aXJlZHxEZXNjcmlwdGlvbnwKfC0tLXwtLS18LS0tfC0tLXwtLS18Cnt7fiBkYXRhLnBhcmFtZXRlcnMgOnB9fXx7ez1wLm5hbWV9fXx7ez1wLmlufX18e3s9cC5zYWZlVHlwZX19fHt7PXAucmVxdWlyZWR9fXx7ez1wLnNob3J0RGVzYyB8fCAnbm9uZSd9fXwKe3t+fX0KYGBgCgpGb3IgaWYvdGhlbiBsb2dpYywgdXNlIHRoZSBjb2RlIGB7ez8gYm9vbGVhbkV4cHJlc3Npb259fWAgdG8gc3RhcnQgdGhlIGNvZGUgYmxvY2sgYW5kIHRoZSBjb2RlIGB7ez99fWAgdG8gY2xvc2UgdGhlIGJsb2NrLiBGb3IgZXhhbXBsZSwgdGhlIE9wZW5BUEkgMyBgbWFpbi5kb3RgIHRlbXBsYXRlIGNhbGxzIHRoZSBgc2VjdXJpdHkuZGVmYCBwYXJ0aWFsIHRvIHNob3cgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNlY3VyaXR5IHNjaGVtZXMgaWYgdGhlIE9wZW5BUEkgc3BlYyBpbmNsdWRlcyBhIGBzZWN1cml0eVNjaGVtZXNgIHNlY3Rpb246CmBgYAp7ez8gZGF0YS5hcGkuY29tcG9uZW50cyAmJiBkYXRhLmFwaS5jb21wb25lbnRzLnNlY3VyaXR5U2NoZW1lcyB9fQp7eyNkZWYuc2VjdXJpdHl9fQp7ez99fQpgYGAKCllvdSBjYW4gcnVuIGFyYml0cmFyeSBKYXZhU2NyaXB0IHdpdGhpbiBhIHRlbXBsYXRlIGJ5IGluc2VydGluZyBhIGNvZGUgYmxvY2sgd2l0aGluIGN1cmx5IGJyYWNlcy4gRm9yIGV4YW1wbGUsIHRoaXMgY29kZSBjcmVhdGVzIGEgdmFyaWFibGUgYW5kIHJlZmVyZW5jZXMgaXQgd2l0aCBub3JtYWwgZG9ULmpzIHN5bnRheCBsYXRlciBpbiB0aGUgdGVtcGxhdGU6CmBgYAp7eyB7CmxldCBtZXNzYWdlID0gIkhlbGxvISI7Cn0gfX0KCnt7PW1lc3NhZ2V9fQpgYGAKCiMjIyBUZW1wbGF0ZSBjYWxsYmFja3MKClRoZSBgdGVtcGxhdGVDYWxsYmFja2AgcGFyYW1ldGVyIHBvaW50cyB0byBhIGZ1bmN0aW9uIHRoYXQgV2lkZGVyc2hpbnMgY2FsbHMgYmVmb3JlIGFuZCBhZnRlciBlYWNoIHRlbXBsYXRlIHJ1bnMuIFRoZSBjYWxsYmFjayBmdW5jdGlvbiByZWNlaXZlcyBhIGBkYXRhYCBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgc3BlYyB0aGF0IFdpZGRlcnNoaW5zIGlzIHByb2Nlc3Npbmc7IHRoZSBmdW5jdGlvbiBtdXN0IHJldHVybiB0aGlzIG9iamVjdC4gWW91IGNhbiB1c2UgY2FsbGJhY2sgZnVuY3Rpb25zIG9ubHkgaWYgeW91IGFyZSBjYWxsaW5nIFdpZGRlcnNoaW5zIGZyb20gSmF2YVNjcmlwdCBjb2RlLCBub3QgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgoKV2lkZGVyc2hpbnMgcGFzc2VzIHRoZXNlIHZhcmlhYmxlcyB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb246Ci0gYHRlbXBsYXRlTmFtZWA6IFRoZSBuYW1lIG9mIHRoZSB0ZW1wbGF0ZSwgc3VjaCBhcyBgbWFpbmAuCi0gYHN0YWdlYDogV2hldGhlciBXaWRkZXJzaGlucyBpcyBjYWxsaW5nIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBiZWZvcmUgKGBwcmVgKSBvciBhZnRlciAoYHBvc3RgKSB0aGUgdGVtcGxhdGUuCi0gYGRhdGFgOiBBbiBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgZGF0YSB0aGF0IFdpZGRlcnNoaW5zIGlzIHByb2Nlc3NpbmcuIFlvdSBjYW4gbXV0YXRlIHRoZSBgZGF0YWAgb2JqZWN0IGluIGFueSB3YXkgeW91IHNlZSBmaXQsIGJ1dCB0aGUgZnVuY3Rpb24gbXVzdCByZXR1cm4gaXQgd2hldGhlciBpdCBjaGFuZ2VzIGl0IG9yIG5vdC4gQ29udGVudCB0aGF0IHlvdSBwdXQgaW4gdGhlIGBkYXRhLmFwcGVuZGAgcHJvcGVydHkgaXMgYXBwZW5kZWQgdG8gdGhlIGN1cnJlbnQgb3V0cHV0IHN0cmVhbS4KCkZvciBleGFtcGxlLCB0aGlzIEphdmFTY3JpcHQgY29kZSBwcmludHMgdGhlIG5hbWUgb2YgdGhlIHRlbXBsYXRlIGFuZCB0aGUgcHJvY2Vzc2luZyBzdGFnZSBpbiB0aGUgb3V0cHV0IE1hcmtkb3duOgpgYGBqYXZhc2NyaXB0Cid1c2Ugc3RyaWN0JzsKCmNvbnN0IGNvbnZlcnRlciA9IHJlcXVpcmUoJ3dpZGRlcnNoaW5zJyk7CmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTsKCmxldCBvcHRpb25zID0ge307Cm9wdGlvbnMudGVtcGxhdGVDYWxsYmFjayA9IG15Q2FsbEJhY2tGdW5jdGlvbjsKCmZ1bmN0aW9uIG15Q2FsbEJhY2tGdW5jdGlvbih0ZW1wbGF0ZU5hbWUsIHN0YWdlLCBkYXRhKSB7CiAgbGV0IHN0YXR1c1N0cmluZyA9ICJUZW1wbGF0ZSBuYW1lOiAiICsgdGVtcGxhdGVOYW1lICsgIlxuIjsKICBzdGF0dXNTdHJpbmcgKz0gIlN0YWdlOiAiICsgc3RhZ2UgKyAiXG4iOwogIGRhdGEuYXBwZW5kID0gc3RhdHVzU3RyaW5nOwogIHJldHVybiBkYXRhOwp9Cgpjb25zdCBhcGlPYmogPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYygnZGVmcy9wZXRzdG9yZTMuanNvbicpKTsKCmNvbnZlcnRlci5jb252ZXJ0KGFwaU9iaiwgb3B0aW9ucykKLnRoZW4oc3RyID0+IHsKICBmcy53cml0ZUZpbGVTeW5jKCdwZXRzdG9yZTNPdXRwdXQubWQnLCBzdHIsICd1dGY4Jyk7Cn0pOwpgYGAKCiMjIFRlc3RzCgpUbyBydW4gYSB0ZXN0LXN1aXRlOgoKYGBgCm5vZGUgdGVzdFJ1bm5lciB7cGF0aC10by1BUElzfQpgYGAKClRoZSB0ZXN0IGhhcm5lc3MgY3VycmVudGx5IGV4cGVjdHMgYC55YW1sYCBvciBgLmpzb25gIGZpbGVzIGFuZCBoYXMgYmVlbiB0ZXN0ZWQgYWdhaW5zdAoKKiBbQVBJcy5ndXJ1XShodHRwczovL2dpdGh1Yi5jb20vQVBJcy1ndXJ1L09wZW5BUEktZGlyZWN0b3J5KQoqIFtNZXJtYWRlIE9wZW5BUEkgZGVmaW5pdGlvbnMgY29sbGVjdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL21lcm1hZGUvT3BlbkFQSS1kZWZpbml0aW9ucykKCiMjIyBDb21wYXJpc29uIGJldHdlZW4gdGhpcyBhbmQgb3RoZXIgT3BlbkFQSSAvIFN3YWdnZXIgdG8gU2xhdGUgdG9vbHMKCltCbG9nIHBvc3RpbmddKGh0dHBzOi8vZGV2LnRvL21pa2VyYWxwaHNvbi9jb21wYXJpc29uLW9mLXZhcmlvdXMtb3BlbmFwaXN3YWdnZXItdG8tc2xhdGUtY29udmVyc2lvbi10b29scykgYnkgdGhlIGF1dGhvciBvZiBXaWRkZXJzaGlucy4KCiMjIyBBY2tub3dsZWRnZW1lbnRzCgoqIFtAbGF0Z2Vla10oaHR0cHM6Ly9naXRodWIuY29tL0xhdEdlZWspIGZvciB0aGUgbG9nby4KKiBbQHZmZXJuYW5kZXN0b3B0YWxdKGh0dHBzOi8vZ2l0aHViLmNvbS92ZmVybmFuZGVzdG9wdGFsKSBmb3IgdGhlIGh0dHBzbmlwcGV0IHN1cHBvcnQuCgojIyMgV2lkZGVyc2hpbnMgaW4gdGhlIHdpbGQKClBsZWFzZSBmZWVsIGZyZWUgdG8gYWRkIGEgbGluayB0byB5b3VyIEFQSSBkb2N1bWVudGF0aW9uIGhlcmUuCgoqIFtHT1YuVUsgQ29udGVudCBBUEkgdjEuMC4wXShodHRwczovL2NvbnRlbnQtYXBpLnB1Ymxpc2hpbmcuc2VydmljZS5nb3YudWsvcmVmZXJlbmNlLmh0bWwpCiogW0dPViBVSyBEaWdpdGFsIE1hcmtldHBsYWNlIEFQSSB2MS4wLjBdKGh0dHBzOi8vYWxwaGFnb3YuZ2l0aHViLmlvL2RpZ2l0YWxtYXJrZXRwbGFjZS1hcGktZG9jcy8jZGlnaXRhbC1tYXJrZXRwbGFjZS1hcGktdjEtMC0wKQoqIFtDYXBpdGFsIE9uZSBBUEldKGh0dHBzOi8vd3d3LmNhcGl0YWxvbmUuY28udWsvZGV2ZWxvcGVyL2FwaS8pCiogW0NvZ25pdGUgRGF0YSBBUEldKGh0dHA6Ly9kb2MuY29nbml0ZWRhdGEuY29tLykKKiBbU3BlY2tsZVdvcmtzIEFQSV0oaHR0cHM6Ly9zcGVja2xld29ya3MuZ2l0aHViLmlvL1NwZWNrbGVTcGVjcykKKiBbQmFuayBieSBBUEldKGh0dHBzOi8vdGJpY3IuZ2l0aHViLmlvL2JhbmstYXBpL2JhbmstYXBpLmh0bWwpCiogW09wZW4gRU8gQVBJXShodHRwczovL29wZW4tZW8uZ2l0aHViLmlvL29wZW5lby1hcGktcG9jL2FwaXJlZmVyZW5jZS9pbmRleC5odG1sKQoqIFtTcGxpdCBQYXltZW50cyBBUEldKGh0dHA6Ly9kb2NzLnNwbGl0LmNhc2gvKQoqIFtMZUFwcCBkYWVtb24gQVBJXShodHRwczovL2xlYXBwLXRvLmdpdGh1Yi5pby9zaGlucy9pbmRleC5odG1sKQoqIFtTaHV0dGVyc3RvY2sgQVBJXShodHRwczovL2FwaS1yZWZlcmVuY2Uuc2h1dHRlcnN0b2NrLmNvbS8pCiogW1Nob3RzdGFjayBWaWRlbyBFZGl0aW5nIEFQSV0oaHR0cHM6Ly9zaG90c3RhY2suaW8vZG9jcy9hcGkvaW5kZXguaHRtbCkKKiBbQWRtZXRyaWNrcyBBUEldKGh0dHA6Ly9kZXYuYWRtZXRyaWNrcy5jb20vKQoqIFtFcWl2byBBUEldKGh0dHBzOi8vZXFpdm8ub3JnLykKCiMjIyBXaWRkZXJzaGlucyBhbmQgUmVTbGF0ZQoKKiBgV2lkZGVyc2hpbnNgIHdvcmtzIHdlbGwgd2l0aCBTbGF0ZSwgYnV0IGZvciBhIHNvbGVseSBOb2RlLmpzLWJhc2VkIGV4cGVyaWVuY2UsIHdoeSBub3QgdHJ5IHRoZSBbUmVTbGF0ZV0oaHR0cHM6Ly9naXRodWIuY29tL21lcm1hZGUvcmVzbGF0ZSkgcG9ydD8K readmeEtag: '"ffd46c7c9450860c650ad1506e1cf0f2f9953b28"' readmeLastModified: Fri, 26 Aug 2022 14:47:38 GMT repositoryId: 70106620 description: >- OpenAPI / Swagger, AsyncAPI & Semoasa definitions to (re)Slate compatible markdown created: '2016-10-05T23:09:13Z' updated: '2026-02-02T04:02:59Z' language: JavaScript archived: false stars: 1564 watchers: 15 forks: 321 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: MIT repoEtag: '"87b5c93178e3efdbbc97404d804aab3d5e657af6d3559c2981138606bf0a7c46"' repoLastModified: Mon, 02 Feb 2026 04:02:59 GMT foundInMaster: true homepage: https://github.com/Mermade/widdershins id: ab4fb414065011325683c7b582a9e582 - source: https://openapi.tools/ name: Zudoku category: Documentation link: https://zudoku.dev repository: https://github.com/zuplo/zudoku language: React source_description: >- OpenAPI powered, highly customizable, API reference and documentation framework with CDN packaged and self-hosted options. v2: false v3: true v3_1: true id: c804492e3311ef6b7453d6b28971b1eb repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj1jZW50ZXI+Cgo8YSBocmVmPSJodHRwczovL3p1ZG9rdS5kZXYiIGFsdD0iWnVkb2t1Ij4KICA8aW1nIHNyYz0iLi9hc3NldHMvZ2l0aHViLWhlcm8ucG5nIiB3aWR0aD02MzAgYWx0PSJadWRva3UgRG9jcyAmIERldmVsb3BlciBQb3J0YWwiPgo8L2E+CgpbIVtNSVQgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLW1pdC1ncmVlbj9zdHlsZT1mbGF0JmxhYmVsQ29sb3I9MDAwMDAwKV0oaHR0cHM6Ly9naXRodWIuY29tL3p1cGxvL3p1ZG9rdS9saWNlbnNlLm1kKQpbIVtadWRva3UgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi96dWRva3Uuc3ZnP3N0eWxlPWZsYXQmbGFiZWxDb2xvcj0wMDAwMDApXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS96dWRva3UpClshW0NyZWF0ZSBadWRva3UgQXBwIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvY3JlYXRlLXp1ZG9rdT9sYWJlbD1jbGkmc3R5bGU9ZmxhdCZsYWJlbENvbG9yPTAwMDAwMCldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2NyZWF0ZS16dWRva3UpClshW01hZGUgd2l0aCBsb3ZlIGJ5IFp1cGxvXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL01hZGUlMjBieSUyMFp1cGxvLUZGMDBCRC5zdmc/c3R5bGU9ZmxhdCZsb2dvPWRhdGE6aW1hZ2Uvc3ZnJTJieG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUdacGJHdzlJbTV2Ym1VaUlIWnBaWGRDYjNnOUlqQWdNQ0F6TnlBek1pSWdZWEpwWVMxb2FXUmtaVzQ5SW5SeWRXVWlQZ29nSUR4d1lYUm9JR1pwYkd3OUlpTkdSakF3UWtRaUlHUTlJazB5Tnk0eE5ESWdNVGt1T1RjNFNERTJMall5VERJM0xqZ3pJRGd1TnpRMllTNDNOVGd1TnpVNElEQWdNREF0TGpVek5DMHhMakk1TTBnNUxqUTRPRll3YURFNUxqVXpOR0UzTGpVM015QTNMalUzTXlBd0lEQXhOQzR3TmpVZ01TNHhNalVnTnk0MU9URWdOeTQxT1RFZ01DQXdNVEl1T0RNMklETXVNVEkySURjdU5EQXlJRGN1TkRBeUlEQWdNREV0TVM0ME5qRWdPQzR6T1Roc0xUY3VNeklnTnk0ek1qaDZJaTgrQ2lBZ1BIQmhkR2dnWm1sc2JEMGlJMFpHTURCQ1JDSWdaRDBpVFRrdU5EZzVJREV4TGpBME1tZ3hNQzQxTWpSc0xURXhMakU1SURFeExqSXhZUzQzTnpJdU56Y3lJREFnTURBdU5UUXpJREV1TXpFMmFERTNMamMxT1hZM0xqUTFNa2czTGpZeFlUY3VOVGMwSURjdU5UYzBJREFnTURFdE5DNHdOalV0TVM0eE1qVkJOeTQxT1RNZ055NDFPVE1nTUNBd01TNDNNU0F5Tmk0M05qaGhOeTQwTURNZ055NDBNRE1nTUNBd01URXVORFl5TFRndU16azNiRGN1TXpFNExUY3VNekk1ZWlJdlBnbzhMM04yWno0SyZsYWJlbENvbG9yPTAwMCldKGh0dHBzOi8venVwbG8uY29tKQoKPC9kaXY+CgojIFp1ZG9rdQoKQVBJIGRvY3VtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBiZSBmcmVlLgoKPGEgaHJlZj0iIy1pbnN0YWxsYXRpb24iPjxzdHJvbmc+SW5zdGFsbGF0aW9uPC9zdHJvbmc+PC9hPiDCtwo8YSBocmVmPSJodHRwczovL3p1ZG9rdS5kZXYvZG9jcy9xdWlja3N0YXJ0Ij48c3Ryb25nPkRvY3M8L3N0cm9uZz48L2E+IMK3CjxhIGhyZWY9IiMtZXhhbXBsZXMiPjxzdHJvbmc+RXhhbXBsZXM8L3N0cm9uZz48L2E+IMK3CjxhIGhyZWY9IiMtY29udHJpYnV0aW5nLS1jb21tdW5pdHkiPjxzdHJvbmc+Q29udHJpYnV0aW5nPC9zdHJvbmc+PC9hPiDCtwo8YSBocmVmPSIjLW1vdGl2YXRpb24iPjxzdHJvbmc+TW90aXZhdGlvbjwvc3Ryb25nPjwvYT4KCiMjIEludHJvZHVjdGlvbgoKKipadWRva3UqKiAocHJvbm91bmNlZCAiem9vLWRvaC1rb28iKSBpcyBhbiBvcGVuLXNvdXJjZSwgaGlnaGx5IGN1c3RvbWl6YWJsZSBBUEkgZG9jdW1lbnRhdGlvbgpmcmFtZXdvcmsgZm9yIGJ1aWxkaW5nIHF1YWxpdHkgZGV2ZWxvcGVyIGV4cGVyaWVuY2VzIGFyb3VuZCBPcGVuQVBJIGFuZCwgc29vbiwgR3JhcGhRTCBkb2N1bWVudHMuCgpCZWNhdXNlIGdyZWF0IEFQSSBkb2N1bWVudGF0aW9uIGZyYW1ld29ya3Mgc2hvdWxkIGJlOgoK8J+MjSBGcmVlICYgT3BlbiBTb3VyY2U8YnIgLz4g4pyFIE9wZW5BUEkgcG93ZXJlZDxiciAvPiDwn5SpIEV4dGVuc2libGUgd2l0aCBQbHVnaW5zPGJyIC8+IOKaoSBFYXN5IHRvCnNldHVwICYgYmxhemluZyBmYXN0IHRvIHdvcmsgd2l0aDxiciAvPiDwn5SnIEVhc3kgdG8gbWFpbnRhaW4KCiMjIPCfpKkgVHJ5IGl0LCByaWdodCBub3chCgpZb3UgY2FuIHRlc3QgWnVkb2t1IHdpdGggeW91ciBvd24gT3BlbkFQSSBkb2N1bWVudCBhdApbenVkb2t1LmRldl0oaHR0cHM6Ly96dWRva3UuZGV2P3V0bV9zb3VyY2U9Z2l0aHViJnV0bV9tZWRpdW09d2ViJnV0bV9jb250ZW50PWxpbmsmcmVmPWdpdGh1YikgYW5kCnNlZSBob3cgZ29vZCB5b3VyIGRvY3VtZW50YXRpb24gY2FuIGxvb2shCgojIyDinKggRmVhdHVyZXMKCi0g8J+agCBHZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZyb20gYSBzaW5nbGUgb3IgbXVsdGlwbGUgW09wZW5BUEldKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykKICBzY2hlbWEKLSDwn5OEIENyZWF0ZSBbTURYIHBhZ2VzXShodHRwczovL21keGpzLmNvbS8pIGZvciBhbnl0aGluZyB5b3Ugd2FudCB0byBkb2N1bWVudAotIPCflJAgSW50ZWdyYXRlIHlvdXIgdXNlcnMgd2l0aCBhdXRoZW50aWNhdGlvbiB2aWEgT3BlbklEIG9yIE9BdXRoMgotIPCfp6ogTGV0IHVzZXJzIHRlc3QgdGhlaXIgQVBJIGNhbGxzIHVzaW5nIHRoZSBJbnRlZ3JhdGVkIFBsYXlncm91bmQgKGluY2x1ZGVzIGF1dGhlbnRpY2F0aW9uISkKLSDwn4yRIERhcmsgbW9kZSAob2YgY291cnNlISkKClp1ZG9rdSBpcyBxdWljayB0byBpbXBsZW1lbnQsIGVhc3kgdG8gY29uZmlndXJlIGFuZCBpcyBoaWdobHkgY29tcG9zYWJsZSB3aXRoIHNlbnNpYmxlIGRlZmF1bHRzLgoKIyMg4pqZ77iPIEluc3RhbGxhdGlvbgoKWW91IGNhbiB1c2UgdGhlIENMSSB0byBnZW5lcmF0ZSBhIG5ldyBwcm9qZWN0IG9yIHVzZSBpdCBzdGFuZGFsb25lIHZpYSBDRE4gYXMgYSBSZWFjdCBjb21wb25lbnQuCgojIyMg4pqh77iPIFF1aWNrIHN0YXJ0CgpGaXJlIHVwIHlvdXIgbmV3IEFQSSBkb2NzIHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgZ2VuZXJhdG9yOgoKYGBgCm5wbSBjcmVhdGUgenVkb2t1QGxhdGVzdApgYGAKCiMjIyDwn5OmIFN0YW5kYWxvbmUgdmlhIENETgoKQWRkIHRoZSBwYWNrYWdlIGFuZCBzdHlsZXMgdG8geW91ciBgPGhlYWQ+YCBhbmQgcGFzcyB0aGUgVVJMIGZvciB5b3VyIEFQSSBzY2hlbWEgdG8gdGhlCmBkYXRhLWFwaS11cmxgIHByb3BlcnR5LCBhcyBzaG93biBoZXJlOgoKYGBgaHRtbAo8IWRvY3R5cGUgaHRtbD4KPGh0bWw+CiAgPGhlYWQ+CiAgICA8dGl0bGU+WnVkb2t1IERlbW88L3RpdGxlPgogICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiIC8+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCIgLz4KCiAgICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3N2Zyt4bWwiIGhyZWY9Imh0dHBzOi8vY2RuLnp1ZG9rdS5kZXYvbG9nb3MvZmF2aWNvbi5zdmciIC8+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgc3JjPSJodHRwczovL2Nkbi56dWRva3UuZGV2L2xhdGVzdC9tYWluLmpzIiBjcm9zc29yaWdpbj48L3NjcmlwdD4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG4uenVkb2t1LmRldi9sYXRlc3Qvc3R5bGUuY3NzIiBjcm9zc29yaWdpbiAvPgogIDwvaGVhZD4KICA8Ym9keT4KICAgIDxkaXYgZGF0YS1hcGktdXJsPSJodHRwczovL2FwaS5leGFtcGxlLmNvbS9vcGVuYXBpLmpzb24iPjwvZGl2PgogIDwvYm9keT4KPC9odG1sPgpgYGAKCiMjIyDwn6exIEdldHRpbmcgc3RhcnRlZCB0ZW1wbGF0ZXMKClRvIGdldCBzdGFydGVkIHdpdGggc29tZSBvZiB0aGUgZmVhdHVyZXMgWnVkb2t1IG9mZmVycyB5b3UgY2FuIHVzZSBvbmUgb2YgdGhlc2UKW2V4YW1wbGUgdGVtcGxhdGVzXShodHRwczovL2dpdGh1Yi5jb20venVwbG8venVkb2t1L3RyZWUvbWFpbi9leGFtcGxlcyk6Cgp8IFRlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFdoYXQgaXQgZG9lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgW21hbnktYXBpc10oaHR0cHM6Ly9naXRodWIuY29tL3p1cGxvL3p1ZG9rdS90cmVlL21haW4vZXhhbXBsZXMvbWFueS1hcGlzKSAgICAgICAgICAgICAgIHwgVXNpbmcgbW9yZSB0aGFuIG9uZSBPcGVuQVBJIGRvY3VtZW50IHdpdGggWnVkb2t1ICAgICAgfAp8IFt3aXRoLWF1dGgwXShodHRwczovL2dpdGh1Yi5jb20venVwbG8venVkb2t1L3RyZWUvbWFpbi9leGFtcGxlcy93aXRoLWF1dGgwKSAgICAgICAgICAgICB8IEF1dGhlbnRpY2F0ZSB1c2VycyBpbiBkb2NzIHdpdGggdGhlIEF1dGgwIHBsdWdpbiAgICAgIHwKfCBbd2l0aC1jb25maWddKGh0dHBzOi8vZ2l0aHViLmNvbS96dXBsby96dWRva3UvdHJlZS9tYWluL2V4YW1wbGVzL3dpdGgtY29uZmlnKSAgICAgICAgICAgfCBCYXJlYm9uZXMgY29uZmlnLCByZWFkeSBmb3IgeW91IHRvIHNldHVwIGhvdyB5b3UgbGlrZSB8CnwgW3dpdGgtdml0ZS1jb25maWddKGh0dHBzOi8vZ2l0aHViLmNvbS96dXBsby96dWRva3UvdHJlZS9tYWluL2V4YW1wbGVzL3dpdGgtdml0ZS1jb25maWcpIHwgVXNlIFp1ZG9rdSB3aXRoIHlvdXIgVml0ZSBjb25maWcgKEFkdmFuY2VkKSAgICAgICAgICAgfAoKIyMg8J+OkyBFeGFtcGxlcwoKLSBbUmljayAmIE1vcnR5IEFQSV0oaHR0cHM6Ly96dWRva3UuZGV2L2RlbW8/YXBpLXVybD1odHRwczovL3JpY2thbmRtb3J0eS56dXBsby5pby9vcGVuYXBpLmpzb24pCi0gW1BldCBTdG9yZSBBUEldKGh0dHBzOi8venVkb2t1LmRldi9kZW1vP2FwaS11cmw9aHR0cHM6Ly96dWRva3UuZGV2L3BldHN0b3JlLm9hcy5qc29uKQotIFtadXBsbyBBUEkgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly96dXBsby5jb20vZG9jcykKCiMjIyBadWRva3UgdXNlIGNhc2VzCgpadWRva3UgaXMgYSBmbGV4aWJsZSBhbmQgaGlnaGx5IGN1c3RvbWl6YWJsZSBmcmFtZXdvcmsgdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgbWFueSB0aGluZ3MsCmluY2x1ZGluZzoKCi0gU3RhbmRhbG9uZSBkb2N1bWVudGF0aW9uIHdlYnNpdGVzCi0gT3BlbkFQSSBwb3dlcmVkIEFQSSByZWZlcmVuY2VzCi0gQSBkZXZlbG9wZXIgcG9ydGFsIHdpdGggZG9jdW1lbnRhdGlvbiwgZnVsbHkgZnVuY3Rpb25hbCBBUEkgcmVmZXJlbmNlIGZvciB0ZXN0aW5nIGFuZAogIGF1dGhlbnRpY2F0aW9uIHN1cHBvcnQgZm9yIHlvdXIgdXNlciBhY2NvdW50cy4KLSBJbnRlcm5hbCBkb2N1bWVudGF0aW9uCgojIyDwn5SnIENvbnRyaWJ1dGluZyAmIENvbW11bml0eQoKRm9yIGRldGFpbHMgb24gaG93IHRvIGNvbnRyaWJ1dGUgdG8gWnVkb2t1LCBzZWUgdGhlIFtjb250cmlidXRpbmcgZ3VpZGVdKENPTlRSSUJVVElORy5tZCkuCgojIyBDaGFuZ2Vsb2cKCkRldGFpbHMgb2YgdGhlIGxhdGVzdCB1cGRhdGVzIHRvIFp1ZG9rdSBjYW4gYmUgZm91bmQgaW4gdGhlIFtjaGFuZ2Vsb2ddKENIQU5HRUxPRy5tZCkuCgojIyDwn46vIE1vdGl2YXRpb24KCkF0IFp1cGxvLCB3ZSBjb3VsZG7igJl0IGZpbmQgYW4gb3Blbi1zb3VyY2Ugc29sdXRpb24gdGhhdCBtZXQgb3VyIGhpZ2ggc3RhbmRhcmRzIGZvciBib3RoCnRydXN0d29ydGhpbmVzcyBhbmQgcHJvZ3JhbW1hYmlsaXR5LCBzbyB3ZSBkZWNpZGVkIHRvIGNyZWF0ZSBvdXIgb3duLiBBbmQgc2luY2Ugbm8gb25lIGNob29zZXMgWnVwbG8Kc29sZWx5IGJlY2F1c2Ugb2Ygb3VyIGRvY3VtZW50YXRpb24sIHdlIGZlbHQgZ3JlYXQgYWJvdXQgb3Blbi1zb3VyY2luZyB0aGlzIHRvb2wgYW5kIG1ha2luZyBpdCBlYXN5CmZvciBhbnlvbmUgdG8gc2VsZi1ob3N0LgoKV2UgaG9wZSB0aGF0IGlmIHlvdSB1c2UgaXQsIHlvdeKAmWxsIHRoaW5rIGZvbmRseSBvZiBadXBsbywgYW5kIG9uZSBkYXksIHdoZW4geW914oCZcmUgbG9va2luZyBmb3IgYQpnYXRld2F5IG9yIEFQSSBtYW5hZ2VtZW50IHByb2R1Y3QsIHlvdeKAmWxsIGNvbnNpZGVyIHVzIGFzIGEgdmVuZG9yIHRvIGV2YWx1YXRlLgoKWnVkb2t1IHdpbGwgYWx3YXlzIGJlIG9wZW4tc291cmNlLiBJdCB3aWxsIGFsd2F5cyBiZSBmcmVlLgoKIyMgTGljZW5zZQoKWnVkb2t1IGlzIGxpY2Vuc2VkIHVuZGVyIE1JVC4gU2VlIHRoZSBmdWxsIFtsaWNlbnNlXShMSUNFTlNFLm1kKS4KCjxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20venVwbG8iPgogIDxpbWcgYWx0PSJYIChmb3JtZXJseSBUd2l0dGVyKSBGb2xsb3ciIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90d2l0dGVyL2ZvbGxvdy96dXBsbyI+CjwvYT4K readmeEtag: '"8fc8f14245a1fe95d910a6d892cbace438e41357"' readmeLastModified: Mon, 06 Oct 2025 14:04:39 GMT repositoryId: 843437350 description: Framework for building high quality, interactive API documentation. created: '2024-08-16T14:09:50Z' updated: '2026-02-05T18:35:48Z' language: TypeScript archived: false stars: 445 watchers: 6 forks: 64 owner: zuplo logo: https://avatars.githubusercontent.com/u/85497839?v=4 license: MIT repoEtag: '"d1042fa14291abe0bb816d64e572c46bce32bf5f79faeb56704c09c11b97538f"' repoLastModified: Thu, 05 Feb 2026 18:35:48 GMT foundInMaster: true - source: openapi3 tags name: FastAPI homepage: https://github.com/tiangolo/fastapi language: Python source_description: >- OpenAPI 3 based, high performance, Python 3.6+ API framework with automatic data validation, serialization and great editor support. category: Server Implementations repository: https://github.com/fastapi/fastapi v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbSI+PGltZyBzcmM9Imh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL2xvZ28tbWFyZ2luL2xvZ28tdGVhbC5wbmciIGFsdD0iRmFzdEFQSSI+PC9hPgo8L3A+CjxwIGFsaWduPSJjZW50ZXIiPgogICAgPGVtPkZhc3RBUEkgZnJhbWV3b3JrLCBoaWdoIHBlcmZvcm1hbmNlLCBlYXN5IHRvIGxlYXJuLCBmYXN0IHRvIGNvZGUsIHJlYWR5IGZvciBwcm9kdWN0aW9uPC9lbT4KPC9wPgo8cCBhbGlnbj0iY2VudGVyIj4KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RhcGkvZmFzdGFwaS9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBVGVzdCtldmVudCUzQXB1c2grYnJhbmNoJTNBbWFzdGVyIiB0YXJnZXQ9Il9ibGFuayI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RhcGkvZmFzdGFwaS9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbC9iYWRnZS5zdmc/ZXZlbnQ9cHVzaCZicmFuY2g9bWFzdGVyIiBhbHQ9IlRlc3QiPgo8L2E+CjxhIGhyZWY9Imh0dHBzOi8vY292ZXJhZ2UtYmFkZ2Uuc2FtdWVsY29sdmluLndvcmtlcnMuZGV2L3JlZGlyZWN0L2Zhc3RhcGkvZmFzdGFwaSIgdGFyZ2V0PSJfYmxhbmsiPgogICAgPGltZyBzcmM9Imh0dHBzOi8vY292ZXJhZ2UtYmFkZ2Uuc2FtdWVsY29sdmluLndvcmtlcnMuZGV2L2Zhc3RhcGkvZmFzdGFwaS5zdmciIGFsdD0iQ292ZXJhZ2UiPgo8L2E+CjxhIGhyZWY9Imh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9mYXN0YXBpIiB0YXJnZXQ9Il9ibGFuayI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvZmFzdGFwaT9jb2xvcj0lMjMzNEQwNTgmbGFiZWw9cHlwaSUyMHBhY2thZ2UiIGFsdD0iUGFja2FnZSB2ZXJzaW9uIj4KPC9hPgo8YSBocmVmPSJodHRwczovL3B5cGkub3JnL3Byb2plY3QvZmFzdGFwaSIgdGFyZ2V0PSJfYmxhbmsiPgogICAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL2Zhc3RhcGkuc3ZnP2NvbG9yPSUyMzM0RDA1OCIgYWx0PSJTdXBwb3J0ZWQgUHl0aG9uIHZlcnNpb25zIj4KPC9hPgo8L3A+CgotLS0KCioqRG9jdW1lbnRhdGlvbioqOiA8YSBocmVmPSJodHRwczovL2Zhc3RhcGkudGlhbmdvbG8uY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbTwvYT4KCioqU291cmNlIENvZGUqKjogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RhcGkvZmFzdGFwaSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0YXBpL2Zhc3RhcGk8L2E+CgotLS0KCkZhc3RBUEkgaXMgYSBtb2Rlcm4sIGZhc3QgKGhpZ2gtcGVyZm9ybWFuY2UpLCB3ZWIgZnJhbWV3b3JrIGZvciBidWlsZGluZyBBUElzIHdpdGggUHl0aG9uIGJhc2VkIG9uIHN0YW5kYXJkIFB5dGhvbiB0eXBlIGhpbnRzLgoKVGhlIGtleSBmZWF0dXJlcyBhcmU6CgoqICoqRmFzdCoqOiBWZXJ5IGhpZ2ggcGVyZm9ybWFuY2UsIG9uIHBhciB3aXRoICoqTm9kZUpTKiogYW5kICoqR28qKiAodGhhbmtzIHRvIFN0YXJsZXR0ZSBhbmQgUHlkYW50aWMpLiBbT25lIG9mIHRoZSBmYXN0ZXN0IFB5dGhvbiBmcmFtZXdvcmtzIGF2YWlsYWJsZV0oI3BlcmZvcm1hbmNlKS4KKiAqKkZhc3QgdG8gY29kZSoqOiBJbmNyZWFzZSB0aGUgc3BlZWQgdG8gZGV2ZWxvcCBmZWF0dXJlcyBieSBhYm91dCAyMDAlIHRvIDMwMCUuICoKKiAqKkZld2VyIGJ1Z3MqKjogUmVkdWNlIGFib3V0IDQwJSBvZiBodW1hbiAoZGV2ZWxvcGVyKSBpbmR1Y2VkIGVycm9ycy4gKgoqICoqSW50dWl0aXZlKio6IEdyZWF0IGVkaXRvciBzdXBwb3J0LiA8YWJiciB0aXRsZT0iYWxzbyBrbm93biBhcyBhdXRvLWNvbXBsZXRlLCBhdXRvY29tcGxldGlvbiwgSW50ZWxsaVNlbnNlIj5Db21wbGV0aW9uPC9hYmJyPiBldmVyeXdoZXJlLiBMZXNzIHRpbWUgZGVidWdnaW5nLgoqICoqRWFzeSoqOiBEZXNpZ25lZCB0byBiZSBlYXN5IHRvIHVzZSBhbmQgbGVhcm4uIExlc3MgdGltZSByZWFkaW5nIGRvY3MuCiogKipTaG9ydCoqOiBNaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uLiBNdWx0aXBsZSBmZWF0dXJlcyBmcm9tIGVhY2ggcGFyYW1ldGVyIGRlY2xhcmF0aW9uLiBGZXdlciBidWdzLgoqICoqUm9idXN0Kio6IEdldCBwcm9kdWN0aW9uLXJlYWR5IGNvZGUuIFdpdGggYXV0b21hdGljIGludGVyYWN0aXZlIGRvY3VtZW50YXRpb24uCiogKipTdGFuZGFyZHMtYmFzZWQqKjogQmFzZWQgb24gKGFuZCBmdWxseSBjb21wYXRpYmxlIHdpdGgpIHRoZSBvcGVuIHN0YW5kYXJkcyBmb3IgQVBJczogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24iIGNsYXNzPSJleHRlcm5hbC1saW5rIiB0YXJnZXQ9Il9ibGFuayI+T3BlbkFQSTwvYT4gKHByZXZpb3VzbHkga25vd24gYXMgU3dhZ2dlcikgYW5kIDxhIGhyZWY9Imh0dHBzOi8vanNvbi1zY2hlbWEub3JnLyIgY2xhc3M9ImV4dGVybmFsLWxpbmsiIHRhcmdldD0iX2JsYW5rIj5KU09OIFNjaGVtYTwvYT4uCgo8c21hbGw+KiBlc3RpbWF0aW9uIGJhc2VkIG9uIHRlc3RzIGNvbmR1Y3RlZCBieSBhbiBpbnRlcm5hbCBkZXZlbG9wbWVudCB0ZWFtLCBidWlsZGluZyBwcm9kdWN0aW9uIGFwcGxpY2F0aW9ucy48L3NtYWxsPgoKIyMgU3BvbnNvcnMKCjwhLS0gc3BvbnNvcnMgLS0+CiMjIyBLZXlzdG9uZSBTcG9uc29yCgo8YSBocmVmPSJodHRwczovL2Zhc3RhcGljbG91ZC5jb20iIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iRmFzdEFQSSBDbG91ZC4gQnkgdGhlIHNhbWUgdGVhbSBiZWhpbmQgRmFzdEFQSS4gWW91IGNvZGUuIFdlIENsb3VkLiI+PGltZyBzcmM9Imh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL3Nwb25zb3JzL2Zhc3RhcGljbG91ZC5wbmciPjwvYT4KCiMjIyBHb2xkIGFuZCBTaWx2ZXIgU3BvbnNvcnMKCjxhIGhyZWY9Imh0dHBzOi8vYmxvY2tiZWUuaW8/cmVmPWZhc3RhcGkiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iQmxvY2tCZWUgQ3J5cHRvY3VycmVuY3kgUGF5bWVudCBHYXRld2F5Ij48aW1nIHNyYz0iaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9pbWcvc3BvbnNvcnMvYmxvY2tiZWUucG5nIj48L2E+CjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvc2NhbGFyLz91dG1fc291cmNlPWZhc3RhcGkmdXRtX21lZGl1bT13ZWJzaXRlJnV0bV9jYW1wYWlnbj1tYWluLWJhZGdlIiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IlNjYWxhcjogQmVhdXRpZnVsIE9wZW4tU291cmNlIEFQSSBSZWZlcmVuY2VzIGZyb20gU3dhZ2dlci9PcGVuQVBJIGZpbGVzIj48aW1nIHNyYz0iaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9pbWcvc3BvbnNvcnMvc2NhbGFyLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL3d3dy5wcm9wZWxhdXRoLmNvbS8/dXRtX3NvdXJjZT1mYXN0YXBpJnV0bV9jYW1wYWlnbj0xMjIzJnV0bV9tZWRpdW09bWFpbmJhZGdlIiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IkF1dGgsIHVzZXIgbWFuYWdlbWVudCBhbmQgbW9yZSBmb3IgeW91ciBCMkIgcHJvZHVjdCI+PGltZyBzcmM9Imh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL3Nwb25zb3JzL3Byb3BlbGF1dGgucG5nIj48L2E+CjxhIGhyZWY9Imh0dHBzOi8venVwbG8ubGluay9mYXN0YXBpLWdoIiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9Ilp1cGxvOiBEZXBsb3ksIFNlY3VyZSwgRG9jdW1lbnQsIGFuZCBNb25ldGl6ZSB5b3VyIEZhc3RBUEkiPjxpbWcgc3JjPSJodHRwczovL2Zhc3RhcGkudGlhbmdvbG8uY29tL2ltZy9zcG9uc29ycy96dXBsby5wbmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9saWJsYWIuY29tP3V0bV9zb3VyY2U9ZmFzdGFwaSIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJsaWJsYWIgLSBHZW5lcmF0ZSBTREtzIGZyb20gRmFzdEFQSSI+PGltZyBzcmM9Imh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL3Nwb25zb3JzL2xpYmxhYi5wbmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnJlbmRlci5jb20vZGVwbG95LWZhc3RhcGk/dXRtX3NvdXJjZT1kZXBsb3lkb2MmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249ZmFzdGFwaSIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJEZXBsb3kgJiBzY2FsZSBhbnkgZnVsbC1zdGFjayB3ZWIgYXBwIG9uIFJlbmRlci4gRm9jdXMgb24gYnVpbGRpbmcgYXBwcywgbm90IGluZnJhLiI+PGltZyBzcmM9Imh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL3Nwb25zb3JzL3JlbmRlci5zdmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuY29kZXJhYmJpdC5haS8/dXRtX3NvdXJjZT1mYXN0YXBpJnV0bV9tZWRpdW09YmFkZ2UmdXRtX2NhbXBhaWduPWZhc3RhcGkiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iQ3V0IENvZGUgUmV2aWV3IFRpbWUgJiBCdWdzIGluIEhhbGYgd2l0aCBDb2RlUmFiYml0Ij48aW1nIHNyYz0iaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9pbWcvc3BvbnNvcnMvY29kZXJhYmJpdC5wbmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9zdWJ0b3RhbC5jb20vP3V0bV9zb3VyY2U9ZmFzdGFwaSZ1dG1fbWVkaXVtPXNwb25zb3JzaGlwJnV0bV9jYW1wYWlnbj1vcGVuLXNvdXJjZSIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJUaGUgR29sZCBTdGFuZGFyZCBpbiBSZXRhaWwgQWNjb3VudCBMaW5raW5nIj48aW1nIHNyYz0iaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9pbWcvc3BvbnNvcnMvc3VidG90YWwuc3ZnIj48L2E+CjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5yYWlsd2F5LmNvbS9ndWlkZXMvZmFzdGFwaT91dG1fbWVkaXVtPWludGVncmF0aW9uJnV0bV9zb3VyY2U9ZG9jcyZ1dG1fY2FtcGFpZ249ZmFzdGFwaSIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJEZXBsb3kgZW50ZXJwcmlzZSBhcHBsaWNhdGlvbnMgYXQgc3RhcnR1cCBzcGVlZCI+PGltZyBzcmM9Imh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL3Nwb25zb3JzL3JhaWx3YXkucG5nIj48L2E+CjxhIGhyZWY9Imh0dHBzOi8vc2VycGFwaS5jb20vP3V0bV9zb3VyY2U9ZmFzdGFwaV93ZWJzaXRlIiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IlNlcnBBcGk6IFdlYiBTZWFyY2ggQVBJIj48aW1nIHNyYz0iaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9pbWcvc3BvbnNvcnMvc2VycGFwaS5wbmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ3JlcHRpbGUuY29tLz91dG1fc291cmNlPWZhc3RhcGkmdXRtX21lZGl1bT1zcG9uc29yc2hpcCZ1dG1fY2FtcGFpZ249ZmFzdGFwaV9zcG9uc29yX3BhZ2UiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iR3JlcHRpbGU6IFRoZSBBSSBDb2RlIFJldmlld2VyIj48aW1nIHNyYz0iaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9pbWcvc3BvbnNvcnMvZ3JlcHRpbGUucG5nIj48L2E+CjxhIGhyZWY9Imh0dHBzOi8vZGF0YWJlbnRvLmNvbS8/dXRtX3NvdXJjZT1mYXN0YXBpJnV0bV9tZWRpdW09c3BvbnNvciZ1dG1fY29udGVudD1kaXNwbGF5IiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IlBheSBhcyB5b3UgZ28gZm9yIG1hcmtldCBkYXRhIj48aW1nIHNyYz0iaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9pbWcvc3BvbnNvcnMvZGF0YWJlbnRvLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL3NwZWFrZWFzeS5jb20vZWRpdG9yP3V0bV9zb3VyY2U9ZmFzdGFwaStyZXBvJnV0bV9tZWRpdW09Z2l0aHViK3Nwb25zb3JzaGlwIiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IlNES3MgZm9yIHlvdXIgQVBJIHwgU3BlYWtlYXN5Ij48aW1nIHNyYz0iaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9pbWcvc3BvbnNvcnMvc3BlYWtlYXN5LnBuZyI+PC9hPgo8YSBocmVmPSJodHRwczovL3d3dy5zdml4LmNvbS8iIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iU3ZpeCAtIFdlYmhvb2tzIGFzIGEgc2VydmljZSI+PGltZyBzcmM9Imh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL3Nwb25zb3JzL3N2aXguc3ZnIj48L2E+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LnN0YWlubGVzc2FwaS5jb20vP3V0bV9zb3VyY2U9ZmFzdGFwaSZ1dG1fbWVkaXVtPXJlZmVycmFsIiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IlN0YWlubGVzcyB8IEdlbmVyYXRlIGJlc3QtaW4tY2xhc3MgU0RLcyI+PGltZyBzcmM9Imh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL3Nwb25zb3JzL3N0YWlubGVzcy5wbmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cucGVybWl0LmlvL2Jsb2cvaW1wbGVtZW50LWF1dGhvcml6YXRpb24taW4tZmFzdGFwaT91dG1fc291cmNlPWdpdGh1YiZ1dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9jYW1wYWlnbj1mYXN0YXBpIiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IkZpbmUtR3JhaW5lZCBBdXRob3JpemF0aW9uIGZvciBGYXN0QVBJIj48aW1nIHNyYz0iaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9pbWcvc3BvbnNvcnMvcGVybWl0LnBuZyI+PC9hPgo8YSBocmVmPSJodHRwczovL3d3dy5pbnRlcnZpZXdwYWwuY29tLz91dG1fc291cmNlPWZhc3RhcGkmdXRtX21lZGl1bT1vcGVuLXNvdXJjZSZ1dG1fY2FtcGFpZ249ZGV2LWhpcmluZyIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJJbnRlcnZpZXdQYWwgLSBBSSBJbnRlcnZpZXcgQ29hY2ggZm9yIEVuZ2luZWVycyBhbmQgRGV2cyI+PGltZyBzcmM9Imh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL3Nwb25zb3JzL2ludGVydmlld3BhbC5wbmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9kcmliaWEuY29tL2VuLyIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJEcmliaWEgLSBEYXRhIFNjaWVuY2Ugd2l0aGluIHlvdXIgcmVhY2giPjxpbWcgc3JjPSJodHRwczovL2Zhc3RhcGkudGlhbmdvbG8uY29tL2ltZy9zcG9uc29ycy9kcmliaWEucG5nIj48L2E+Cgo8IS0tIC9zcG9uc29ycyAtLT4KCjxhIGhyZWY9Imh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vZmFzdGFwaS1wZW9wbGUvI3Nwb25zb3JzIiBjbGFzcz0iZXh0ZXJuYWwtbGluayIgdGFyZ2V0PSJfYmxhbmsiPk90aGVyIHNwb25zb3JzPC9hPgoKIyMgT3BpbmlvbnMKCiJfWy4uLl0gSSdtIHVzaW5nICoqRmFzdEFQSSoqIGEgdG9uIHRoZXNlIGRheXMuIFsuLi5dIEknbSBhY3R1YWxseSBwbGFubmluZyB0byB1c2UgaXQgZm9yIGFsbCBvZiBteSB0ZWFtJ3MgKipNTCBzZXJ2aWNlcyBhdCBNaWNyb3NvZnQqKi4gU29tZSBvZiB0aGVtIGFyZSBnZXR0aW5nIGludGVncmF0ZWQgaW50byB0aGUgY29yZSAqKldpbmRvd3MqKiBwcm9kdWN0IGFuZCBzb21lICoqT2ZmaWNlKiogcHJvZHVjdHMuXyIKCjxkaXYgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyBtYXJnaW4tcmlnaHQ6IDEwJTsiPkthYmlyIEtoYW4gLSA8c3Ryb25nPk1pY3Jvc29mdDwvc3Ryb25nPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmFzdGFwaS9mYXN0YXBpL3B1bGwvMjYiIHRhcmdldD0iX2JsYW5rIj48c21hbGw+KHJlZik8L3NtYWxsPjwvYT48L2Rpdj4KCi0tLQoKIl9XZSBhZG9wdGVkIHRoZSAqKkZhc3RBUEkqKiBsaWJyYXJ5IHRvIHNwYXduIGEgKipSRVNUKiogc2VydmVyIHRoYXQgY2FuIGJlIHF1ZXJpZWQgdG8gb2J0YWluICoqcHJlZGljdGlvbnMqKi4gW2ZvciBMdWR3aWddXyIKCjxkaXYgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyBtYXJnaW4tcmlnaHQ6IDEwJTsiPlBpZXJvIE1vbGlubywgWWFyb3NsYXYgRHVkaW4sIGFuZCBTYWkgU3VtYW50aCBNaXJ5YWxhIC0gPHN0cm9uZz5VYmVyPC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vZW5nLnViZXIuY29tL2x1ZHdpZy12MC0yLyIgdGFyZ2V0PSJfYmxhbmsiPjxzbWFsbD4ocmVmKTwvc21hbGw+PC9hPjwvZGl2PgoKLS0tCgoiXyoqTmV0ZmxpeCoqIGlzIHBsZWFzZWQgdG8gYW5ub3VuY2UgdGhlIG9wZW4tc291cmNlIHJlbGVhc2Ugb2Ygb3VyICoqY3Jpc2lzIG1hbmFnZW1lbnQqKiBvcmNoZXN0cmF0aW9uIGZyYW1ld29yazogKipEaXNwYXRjaCoqISBbYnVpbHQgd2l0aCAqKkZhc3RBUEkqKl1fIgoKPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTAlOyI+S2V2aW4gR2xpc3NvbiwgTWFyYyBWaWxhbm92YSwgRm9yZXN0IE1vbnNlbiAtIDxzdHJvbmc+TmV0ZmxpeDwvc3Ryb25nPiA8YSBocmVmPSJodHRwczovL25ldGZsaXh0ZWNoYmxvZy5jb20vaW50cm9kdWNpbmctZGlzcGF0Y2gtZGE0YjhhMmE4MDcyIiB0YXJnZXQ9Il9ibGFuayI+PHNtYWxsPihyZWYpPC9zbWFsbD48L2E+PC9kaXY+CgotLS0KCiJfSeKAmW0gb3ZlciB0aGUgbW9vbiBleGNpdGVkIGFib3V0ICoqRmFzdEFQSSoqLiBJdOKAmXMgc28gZnVuIV8iCgo8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgbWFyZ2luLXJpZ2h0OiAxMCU7Ij5CcmlhbiBPa2tlbiAtIDxzdHJvbmc+PGEgaHJlZj0iaHR0cHM6Ly9weXRob25ieXRlcy5mbS9lcGlzb2Rlcy9zaG93LzEyMy90aW1lLXRvLXJpZ2h0LXRoZS1weS13cm9uZ3M/dGltZV9pbl9zZWM9ODU1IiB0YXJnZXQ9Il9ibGFuayI+UHl0aG9uIEJ5dGVzPC9hPiBwb2RjYXN0IGhvc3Q8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly94LmNvbS9icmlhbm9ra2VuL3N0YXR1cy8xMTEyMjIwMDc5OTcyNzI4ODMyIiB0YXJnZXQ9Il9ibGFuayI+PHNtYWxsPihyZWYpPC9zbWFsbD48L2E+PC9kaXY+CgotLS0KCiJfSG9uZXN0bHksIHdoYXQgeW91J3ZlIGJ1aWx0IGxvb2tzIHN1cGVyIHNvbGlkIGFuZCBwb2xpc2hlZC4gSW4gbWFueSB3YXlzLCBpdCdzIHdoYXQgSSB3YW50ZWQgKipIdWcqKiB0byBiZSAtIGl0J3MgcmVhbGx5IGluc3BpcmluZyB0byBzZWUgc29tZW9uZSBidWlsZCB0aGF0Ll8iCgo8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgbWFyZ2luLXJpZ2h0OiAxMCU7Ij5UaW1vdGh5IENyb3NsZXkgLSA8c3Ryb25nPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9odWdhcGkvaHVnIiB0YXJnZXQ9Il9ibGFuayI+SHVnPC9hPiBjcmVhdG9yPC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vbmV3cy55Y29tYmluYXRvci5jb20vaXRlbT9pZD0xOTQ1NTQ2NSIgdGFyZ2V0PSJfYmxhbmsiPjxzbWFsbD4ocmVmKTwvc21hbGw+PC9hPjwvZGl2PgoKLS0tCgoiX0lmIHlvdSdyZSBsb29raW5nIHRvIGxlYXJuIG9uZSAqKm1vZGVybiBmcmFtZXdvcmsqKiBmb3IgYnVpbGRpbmcgUkVTVCBBUElzLCBjaGVjayBvdXQgKipGYXN0QVBJKiogWy4uLl0gSXQncyBmYXN0LCBlYXN5IHRvIHVzZSBhbmQgZWFzeSB0byBsZWFybiBbLi4uXV8iCgoiX1dlJ3ZlIHN3aXRjaGVkIG92ZXIgdG8gKipGYXN0QVBJKiogZm9yIG91ciAqKkFQSXMqKiBbLi4uXSBJIHRoaW5rIHlvdSdsbCBsaWtlIGl0IFsuLi5dXyIKCjxkaXYgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyBtYXJnaW4tcmlnaHQ6IDEwJTsiPkluZXMgTW9udGFuaSAtIE1hdHRoZXcgSG9ubmliYWwgLSA8c3Ryb25nPjxhIGhyZWY9Imh0dHBzOi8vZXhwbG9zaW9uLmFpIiB0YXJnZXQ9Il9ibGFuayI+RXhwbG9zaW9uIEFJPC9hPiBmb3VuZGVycyAtIDxhIGhyZWY9Imh0dHBzOi8vc3BhY3kuaW8iIHRhcmdldD0iX2JsYW5rIj5zcGFDeTwvYT4gY3JlYXRvcnM8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly94LmNvbS9faW5lc21vbnRhbmkvc3RhdHVzLzExNDQxNzMyMjUzMjIxNDM3NDQiIHRhcmdldD0iX2JsYW5rIj48c21hbGw+KHJlZik8L3NtYWxsPjwvYT4gLSA8YSBocmVmPSJodHRwczovL3guY29tL2hvbm5pYmFsL3N0YXR1cy8xMTQ0MDMxNDIxODU5NjU1NjgwIiB0YXJnZXQ9Il9ibGFuayI+PHNtYWxsPihyZWYpPC9zbWFsbD48L2E+PC9kaXY+CgotLS0KCiJfSWYgYW55b25lIGlzIGxvb2tpbmcgdG8gYnVpbGQgYSBwcm9kdWN0aW9uIFB5dGhvbiBBUEksIEkgd291bGQgaGlnaGx5IHJlY29tbWVuZCAqKkZhc3RBUEkqKi4gSXQgaXMgKipiZWF1dGlmdWxseSBkZXNpZ25lZCoqLCAqKnNpbXBsZSB0byB1c2UqKiBhbmQgKipoaWdobHkgc2NhbGFibGUqKiwgaXQgaGFzIGJlY29tZSBhICoqa2V5IGNvbXBvbmVudCoqIGluIG91ciBBUEkgZmlyc3QgZGV2ZWxvcG1lbnQgc3RyYXRlZ3kgYW5kIGlzIGRyaXZpbmcgbWFueSBhdXRvbWF0aW9ucyBhbmQgc2VydmljZXMgc3VjaCBhcyBvdXIgVmlydHVhbCBUQUMgRW5naW5lZXIuXyIKCjxkaXYgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyBtYXJnaW4tcmlnaHQ6IDEwJTsiPkRlb24gUGlsbHNidXJ5IC0gPHN0cm9uZz5DaXNjbzwvc3Ryb25nPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vcG9zdHMvZGVvbnBpbGxzYnVyeV9jaXNjby1jeC1weXRob24tYWN0aXZpdHktNjk2MzI0MjYyODUzNjQ4NzkzNi10ckFwLyIgdGFyZ2V0PSJfYmxhbmsiPjxzbWFsbD4ocmVmKTwvc21hbGw+PC9hPjwvZGl2PgoKLS0tCgojIyBGYXN0QVBJIG1pbmkgZG9jdW1lbnRhcnkKClRoZXJlJ3MgYSA8YSBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PW1wUjhuZ3RocWlFIiBjbGFzcz0iZXh0ZXJuYWwtbGluayIgdGFyZ2V0PSJfYmxhbmsiPkZhc3RBUEkgbWluaSBkb2N1bWVudGFyeTwvYT4gcmVsZWFzZWQgYXQgdGhlIGVuZCBvZiAyMDI1LCB5b3UgY2FuIHdhdGNoIGl0IG9ubGluZToKCjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9bXBSOG5ndGhxaUUiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9pbWcvZmFzdGFwaS1kb2N1bWVudGFyeS5qcGciIGFsdD0iRmFzdEFQSSBNaW5pIERvY3VtZW50YXJ5Ij48L2E+CgojIyAqKlR5cGVyKiosIHRoZSBGYXN0QVBJIG9mIENMSXMKCjxhIGhyZWY9Imh0dHBzOi8vdHlwZXIudGlhbmdvbG8uY29tIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vdHlwZXIudGlhbmdvbG8uY29tL2ltZy9sb2dvLW1hcmdpbi9sb2dvLW1hcmdpbi12ZWN0b3Iuc3ZnIiBzdHlsZT0id2lkdGg6IDIwJTsiPjwvYT4KCklmIHlvdSBhcmUgYnVpbGRpbmcgYSA8YWJiciB0aXRsZT0iQ29tbWFuZCBMaW5lIEludGVyZmFjZSI+Q0xJPC9hYmJyPiBhcHAgdG8gYmUgdXNlZCBpbiB0aGUgdGVybWluYWwgaW5zdGVhZCBvZiBhIHdlYiBBUEksIGNoZWNrIG91dCA8YSBocmVmPSJodHRwczovL3R5cGVyLnRpYW5nb2xvLmNvbS8iIGNsYXNzPSJleHRlcm5hbC1saW5rIiB0YXJnZXQ9Il9ibGFuayI+KipUeXBlcioqPC9hPi4KCioqVHlwZXIqKiBpcyBGYXN0QVBJJ3MgbGl0dGxlIHNpYmxpbmcuIEFuZCBpdCdzIGludGVuZGVkIHRvIGJlIHRoZSAqKkZhc3RBUEkgb2YgQ0xJcyoqLiDijKjvuI8g8J+agAoKIyMgUmVxdWlyZW1lbnRzCgpGYXN0QVBJIHN0YW5kcyBvbiB0aGUgc2hvdWxkZXJzIG9mIGdpYW50czoKCiogPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhcmxldHRlLmRldi8iIGNsYXNzPSJleHRlcm5hbC1saW5rIiB0YXJnZXQ9Il9ibGFuayI+U3RhcmxldHRlPC9hPiBmb3IgdGhlIHdlYiBwYXJ0cy4KKiA8YSBocmVmPSJodHRwczovL2RvY3MucHlkYW50aWMuZGV2LyIgY2xhc3M9ImV4dGVybmFsLWxpbmsiIHRhcmdldD0iX2JsYW5rIj5QeWRhbnRpYzwvYT4gZm9yIHRoZSBkYXRhIHBhcnRzLgoKIyMgSW5zdGFsbGF0aW9uCgpDcmVhdGUgYW5kIGFjdGl2YXRlIGEgPGEgaHJlZj0iaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS92aXJ0dWFsLWVudmlyb25tZW50cy8iIGNsYXNzPSJleHRlcm5hbC1saW5rIiB0YXJnZXQ9Il9ibGFuayI+dmlydHVhbCBlbnZpcm9ubWVudDwvYT4gYW5kIHRoZW4gaW5zdGFsbCBGYXN0QVBJOgoKPGRpdiBjbGFzcz0idGVybXkiPgoKYGBgY29uc29sZQokIHBpcCBpbnN0YWxsICJmYXN0YXBpW3N0YW5kYXJkXSIKCi0tLT4gMTAwJQpgYGAKCjwvZGl2PgoKKipOb3RlKio6IE1ha2Ugc3VyZSB5b3UgcHV0IGAiZmFzdGFwaVtzdGFuZGFyZF0iYCBpbiBxdW90ZXMgdG8gZW5zdXJlIGl0IHdvcmtzIGluIGFsbCB0ZXJtaW5hbHMuCgojIyBFeGFtcGxlCgojIyMgQ3JlYXRlIGl0CgpDcmVhdGUgYSBmaWxlIGBtYWluLnB5YCB3aXRoOgoKYGBgUHl0aG9uCmZyb20gZmFzdGFwaSBpbXBvcnQgRmFzdEFQSQoKYXBwID0gRmFzdEFQSSgpCgoKQGFwcC5nZXQoIi8iKQpkZWYgcmVhZF9yb290KCk6CiAgICByZXR1cm4geyJIZWxsbyI6ICJXb3JsZCJ9CgoKQGFwcC5nZXQoIi9pdGVtcy97aXRlbV9pZH0iKQpkZWYgcmVhZF9pdGVtKGl0ZW1faWQ6IGludCwgcTogc3RyIHwgTm9uZSA9IE5vbmUpOgogICAgcmV0dXJuIHsiaXRlbV9pZCI6IGl0ZW1faWQsICJxIjogcX0KYGBgCgo8ZGV0YWlscyBtYXJrZG93bj0iMSI+CjxzdW1tYXJ5Pk9yIHVzZSA8Y29kZT5hc3luYyBkZWY8L2NvZGU+Li4uPC9zdW1tYXJ5PgoKSWYgeW91ciBjb2RlIHVzZXMgYGFzeW5jYCAvIGBhd2FpdGAsIHVzZSBgYXN5bmMgZGVmYDoKCmBgYFB5dGhvbiBobF9saW5lcz0iNyAgMTIiCmZyb20gZmFzdGFwaSBpbXBvcnQgRmFzdEFQSQoKYXBwID0gRmFzdEFQSSgpCgoKQGFwcC5nZXQoIi8iKQphc3luYyBkZWYgcmVhZF9yb290KCk6CiAgICByZXR1cm4geyJIZWxsbyI6ICJXb3JsZCJ9CgoKQGFwcC5nZXQoIi9pdGVtcy97aXRlbV9pZH0iKQphc3luYyBkZWYgcmVhZF9pdGVtKGl0ZW1faWQ6IGludCwgcTogc3RyIHwgTm9uZSA9IE5vbmUpOgogICAgcmV0dXJuIHsiaXRlbV9pZCI6IGl0ZW1faWQsICJxIjogcX0KYGBgCgoqKk5vdGUqKjoKCklmIHlvdSBkb24ndCBrbm93LCBjaGVjayB0aGUgXyJJbiBhIGh1cnJ5PyJfIHNlY3Rpb24gYWJvdXQgPGEgaHJlZj0iaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9hc3luYy8jaW4tYS1odXJyeSIgdGFyZ2V0PSJfYmxhbmsiPmBhc3luY2AgYW5kIGBhd2FpdGAgaW4gdGhlIGRvY3M8L2E+LgoKPC9kZXRhaWxzPgoKIyMjIFJ1biBpdAoKUnVuIHRoZSBzZXJ2ZXIgd2l0aDoKCjxkaXYgY2xhc3M9InRlcm15Ij4KCmBgYGNvbnNvbGUKJCBmYXN0YXBpIGRldiBtYWluLnB5Cgog4pWt4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIEZhc3RBUEkgQ0xJIC0gRGV2ZWxvcG1lbnQgbW9kZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDila4KIOKUgiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCCiDilIIgIFNlcnZpbmcgYXQ6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMCAgICAgICAgICAgICAgICAgIOKUggog4pSCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIKIOKUgiAgQVBJIGRvY3M6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9kb2NzICAgICAgICAgICAgICAg4pSCCiDilIIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUggog4pSCICBSdW5uaW5nIGluIGRldmVsb3BtZW50IG1vZGUsIGZvciBwcm9kdWN0aW9uIHVzZTogICDilIIKIOKUgiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCCiDilIIgIGZhc3RhcGkgcnVuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUggog4pSCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIKIOKVsOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKVrwoKSU5GTzogICAgIFdpbGwgd2F0Y2ggZm9yIGNoYW5nZXMgaW4gdGhlc2UgZGlyZWN0b3JpZXM6IFsnL2hvbWUvdXNlci9jb2RlL2F3ZXNvbWVhcHAnXQpJTkZPOiAgICAgVXZpY29ybiBydW5uaW5nIG9uIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMCAoUHJlc3MgQ1RSTCtDIHRvIHF1aXQpCklORk86ICAgICBTdGFydGVkIHJlbG9hZGVyIHByb2Nlc3MgWzIyNDg3NTVdIHVzaW5nIFdhdGNoRmlsZXMKSU5GTzogICAgIFN0YXJ0ZWQgc2VydmVyIHByb2Nlc3MgWzIyNDg3NTddCklORk86ICAgICBXYWl0aW5nIGZvciBhcHBsaWNhdGlvbiBzdGFydHVwLgpJTkZPOiAgICAgQXBwbGljYXRpb24gc3RhcnR1cCBjb21wbGV0ZS4KYGBgCgo8L2Rpdj4KCjxkZXRhaWxzIG1hcmtkb3duPSIxIj4KPHN1bW1hcnk+QWJvdXQgdGhlIGNvbW1hbmQgPGNvZGU+ZmFzdGFwaSBkZXYgbWFpbi5weTwvY29kZT4uLi48L3N1bW1hcnk+CgpUaGUgY29tbWFuZCBgZmFzdGFwaSBkZXZgIHJlYWRzIHlvdXIgYG1haW4ucHlgIGZpbGUsIGRldGVjdHMgdGhlICoqRmFzdEFQSSoqIGFwcCBpbiBpdCwgYW5kIHN0YXJ0cyBhIHNlcnZlciB1c2luZyA8YSBocmVmPSJodHRwczovL3d3dy51dmljb3JuLmRldiIgY2xhc3M9ImV4dGVybmFsLWxpbmsiIHRhcmdldD0iX2JsYW5rIj5Vdmljb3JuPC9hPi4KCkJ5IGRlZmF1bHQsIGBmYXN0YXBpIGRldmAgd2lsbCBzdGFydCB3aXRoIGF1dG8tcmVsb2FkIGVuYWJsZWQgZm9yIGxvY2FsIGRldmVsb3BtZW50LgoKWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgaXQgaW4gdGhlIDxhIGhyZWY9Imh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vZmFzdGFwaS1jbGkvIiB0YXJnZXQ9Il9ibGFuayI+RmFzdEFQSSBDTEkgZG9jczwvYT4uCgo8L2RldGFpbHM+CgojIyMgQ2hlY2sgaXQKCk9wZW4geW91ciBicm93c2VyIGF0IDxhIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pdGVtcy81P3E9c29tZXF1ZXJ5IiBjbGFzcz0iZXh0ZXJuYWwtbGluayIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pdGVtcy81P3E9c29tZXF1ZXJ5PC9hPi4KCllvdSB3aWxsIHNlZSB0aGUgSlNPTiByZXNwb25zZSBhczoKCmBgYEpTT04KeyJpdGVtX2lkIjogNSwgInEiOiAic29tZXF1ZXJ5In0KYGBgCgpZb3UgYWxyZWFkeSBjcmVhdGVkIGFuIEFQSSB0aGF0OgoKKiBSZWNlaXZlcyBIVFRQIHJlcXVlc3RzIGluIHRoZSBfcGF0aHNfIGAvYCBhbmQgYC9pdGVtcy97aXRlbV9pZH1gLgoqIEJvdGggX3BhdGhzXyB0YWtlIGBHRVRgIDxlbT5vcGVyYXRpb25zPC9lbT4gKGFsc28ga25vd24gYXMgSFRUUCBfbWV0aG9kc18pLgoqIFRoZSBfcGF0aF8gYC9pdGVtcy97aXRlbV9pZH1gIGhhcyBhIF9wYXRoIHBhcmFtZXRlcl8gYGl0ZW1faWRgIHRoYXQgc2hvdWxkIGJlIGFuIGBpbnRgLgoqIFRoZSBfcGF0aF8gYC9pdGVtcy97aXRlbV9pZH1gIGhhcyBhbiBvcHRpb25hbCBgc3RyYCBfcXVlcnkgcGFyYW1ldGVyXyBgcWAuCgojIyMgSW50ZXJhY3RpdmUgQVBJIGRvY3MKCk5vdyBnbyB0byA8YSBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvZG9jcyIgY2xhc3M9ImV4dGVybmFsLWxpbmsiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vMTI3LjAuMC4xOjgwMDAvZG9jczwvYT4uCgpZb3Ugd2lsbCBzZWUgdGhlIGF1dG9tYXRpYyBpbnRlcmFjdGl2ZSBBUEkgZG9jdW1lbnRhdGlvbiAocHJvdmlkZWQgYnkgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkiIGNsYXNzPSJleHRlcm5hbC1saW5rIiB0YXJnZXQ9Il9ibGFuayI+U3dhZ2dlciBVSTwvYT4pOgoKIVtTd2FnZ2VyIFVJXShodHRwczovL2Zhc3RhcGkudGlhbmdvbG8uY29tL2ltZy9pbmRleC9pbmRleC0wMS1zd2FnZ2VyLXVpLXNpbXBsZS5wbmcpCgojIyMgQWx0ZXJuYXRpdmUgQVBJIGRvY3MKCkFuZCBub3csIGdvIHRvIDxhIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZWRvYyIgY2xhc3M9ImV4dGVybmFsLWxpbmsiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVkb2M8L2E+LgoKWW91IHdpbGwgc2VlIHRoZSBhbHRlcm5hdGl2ZSBhdXRvbWF0aWMgZG9jdW1lbnRhdGlvbiAocHJvdmlkZWQgYnkgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1JlYmlsbHkvUmVEb2MiIGNsYXNzPSJleHRlcm5hbC1saW5rIiB0YXJnZXQ9Il9ibGFuayI+UmVEb2M8L2E+KToKCiFbUmVEb2NdKGh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL2luZGV4L2luZGV4LTAyLXJlZG9jLXNpbXBsZS5wbmcpCgojIyBFeGFtcGxlIHVwZ3JhZGUKCk5vdyBtb2RpZnkgdGhlIGZpbGUgYG1haW4ucHlgIHRvIHJlY2VpdmUgYSBib2R5IGZyb20gYSBgUFVUYCByZXF1ZXN0LgoKRGVjbGFyZSB0aGUgYm9keSB1c2luZyBzdGFuZGFyZCBQeXRob24gdHlwZXMsIHRoYW5rcyB0byBQeWRhbnRpYy4KCmBgYFB5dGhvbiBobF9saW5lcz0iMiAgNy0xMCAyMy0yNSIKZnJvbSBmYXN0YXBpIGltcG9ydCBGYXN0QVBJCmZyb20gcHlkYW50aWMgaW1wb3J0IEJhc2VNb2RlbAoKYXBwID0gRmFzdEFQSSgpCgoKY2xhc3MgSXRlbShCYXNlTW9kZWwpOgogICAgbmFtZTogc3RyCiAgICBwcmljZTogZmxvYXQKICAgIGlzX29mZmVyOiBib29sIHwgTm9uZSA9IE5vbmUKCgpAYXBwLmdldCgiLyIpCmRlZiByZWFkX3Jvb3QoKToKICAgIHJldHVybiB7IkhlbGxvIjogIldvcmxkIn0KCgpAYXBwLmdldCgiL2l0ZW1zL3tpdGVtX2lkfSIpCmRlZiByZWFkX2l0ZW0oaXRlbV9pZDogaW50LCBxOiBzdHIgfCBOb25lID0gTm9uZSk6CiAgICByZXR1cm4geyJpdGVtX2lkIjogaXRlbV9pZCwgInEiOiBxfQoKCkBhcHAucHV0KCIvaXRlbXMve2l0ZW1faWR9IikKZGVmIHVwZGF0ZV9pdGVtKGl0ZW1faWQ6IGludCwgaXRlbTogSXRlbSk6CiAgICByZXR1cm4geyJpdGVtX25hbWUiOiBpdGVtLm5hbWUsICJpdGVtX2lkIjogaXRlbV9pZH0KYGBgCgpUaGUgYGZhc3RhcGkgZGV2YCBzZXJ2ZXIgc2hvdWxkIHJlbG9hZCBhdXRvbWF0aWNhbGx5LgoKIyMjIEludGVyYWN0aXZlIEFQSSBkb2NzIHVwZ3JhZGUKCk5vdyBnbyB0byA8YSBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvZG9jcyIgY2xhc3M9ImV4dGVybmFsLWxpbmsiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vMTI3LjAuMC4xOjgwMDAvZG9jczwvYT4uCgoqIFRoZSBpbnRlcmFjdGl2ZSBBUEkgZG9jdW1lbnRhdGlvbiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZCwgaW5jbHVkaW5nIHRoZSBuZXcgYm9keToKCiFbU3dhZ2dlciBVSV0oaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9pbWcvaW5kZXgvaW5kZXgtMDMtc3dhZ2dlci0wMi5wbmcpCgoqIENsaWNrIG9uIHRoZSBidXR0b24gIlRyeSBpdCBvdXQiLCBpdCBhbGxvd3MgeW91IHRvIGZpbGwgdGhlIHBhcmFtZXRlcnMgYW5kIGRpcmVjdGx5IGludGVyYWN0IHdpdGggdGhlIEFQSToKCiFbU3dhZ2dlciBVSSBpbnRlcmFjdGlvbl0oaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9pbWcvaW5kZXgvaW5kZXgtMDQtc3dhZ2dlci0wMy5wbmcpCgoqIFRoZW4gY2xpY2sgb24gdGhlICJFeGVjdXRlIiBidXR0b24sIHRoZSB1c2VyIGludGVyZmFjZSB3aWxsIGNvbW11bmljYXRlIHdpdGggeW91ciBBUEksIHNlbmQgdGhlIHBhcmFtZXRlcnMsIGdldCB0aGUgcmVzdWx0cyBhbmQgc2hvdyB0aGVtIG9uIHRoZSBzY3JlZW46CgohW1N3YWdnZXIgVUkgaW50ZXJhY3Rpb25dKGh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL2luZGV4L2luZGV4LTA1LXN3YWdnZXItMDQucG5nKQoKIyMjIEFsdGVybmF0aXZlIEFQSSBkb2NzIHVwZ3JhZGUKCkFuZCBub3csIGdvIHRvIDxhIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZWRvYyIgY2xhc3M9ImV4dGVybmFsLWxpbmsiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVkb2M8L2E+LgoKKiBUaGUgYWx0ZXJuYXRpdmUgZG9jdW1lbnRhdGlvbiB3aWxsIGFsc28gcmVmbGVjdCB0aGUgbmV3IHF1ZXJ5IHBhcmFtZXRlciBhbmQgYm9keToKCiFbUmVEb2NdKGh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL2luZGV4L2luZGV4LTA2LXJlZG9jLTAyLnBuZykKCiMjIyBSZWNhcAoKSW4gc3VtbWFyeSwgeW91IGRlY2xhcmUgKipvbmNlKiogdGhlIHR5cGVzIG9mIHBhcmFtZXRlcnMsIGJvZHksIGV0Yy4gYXMgZnVuY3Rpb24gcGFyYW1ldGVycy4KCllvdSBkbyB0aGF0IHdpdGggc3RhbmRhcmQgbW9kZXJuIFB5dGhvbiB0eXBlcy4KCllvdSBkb24ndCBoYXZlIHRvIGxlYXJuIGEgbmV3IHN5bnRheCwgdGhlIG1ldGhvZHMgb3IgY2xhc3NlcyBvZiBhIHNwZWNpZmljIGxpYnJhcnksIGV0Yy4KCkp1c3Qgc3RhbmRhcmQgKipQeXRob24qKi4KCkZvciBleGFtcGxlLCBmb3IgYW4gYGludGA6CgpgYGBQeXRob24KaXRlbV9pZDogaW50CmBgYAoKb3IgZm9yIGEgbW9yZSBjb21wbGV4IGBJdGVtYCBtb2RlbDoKCmBgYFB5dGhvbgppdGVtOiBJdGVtCmBgYAoKLi4uYW5kIHdpdGggdGhhdCBzaW5nbGUgZGVjbGFyYXRpb24geW91IGdldDoKCiogRWRpdG9yIHN1cHBvcnQsIGluY2x1ZGluZzoKICAgICogQ29tcGxldGlvbi4KICAgICogVHlwZSBjaGVja3MuCiogVmFsaWRhdGlvbiBvZiBkYXRhOgogICAgKiBBdXRvbWF0aWMgYW5kIGNsZWFyIGVycm9ycyB3aGVuIHRoZSBkYXRhIGlzIGludmFsaWQuCiAgICAqIFZhbGlkYXRpb24gZXZlbiBmb3IgZGVlcGx5IG5lc3RlZCBKU09OIG9iamVjdHMuCiogPGFiYnIgdGl0bGU9ImFsc28ga25vd24gYXM6IHNlcmlhbGl6YXRpb24sIHBhcnNpbmcsIG1hcnNoYWxsaW5nIj5Db252ZXJzaW9uPC9hYmJyPiBvZiBpbnB1dCBkYXRhOiBjb21pbmcgZnJvbSB0aGUgbmV0d29yayB0byBQeXRob24gZGF0YSBhbmQgdHlwZXMuIFJlYWRpbmcgZnJvbToKICAgICogSlNPTi4KICAgICogUGF0aCBwYXJhbWV0ZXJzLgogICAgKiBRdWVyeSBwYXJhbWV0ZXJzLgogICAgKiBDb29raWVzLgogICAgKiBIZWFkZXJzLgogICAgKiBGb3Jtcy4KICAgICogRmlsZXMuCiogPGFiYnIgdGl0bGU9ImFsc28ga25vd24gYXM6IHNlcmlhbGl6YXRpb24sIHBhcnNpbmcsIG1hcnNoYWxsaW5nIj5Db252ZXJzaW9uPC9hYmJyPiBvZiBvdXRwdXQgZGF0YTogY29udmVydGluZyBmcm9tIFB5dGhvbiBkYXRhIGFuZCB0eXBlcyB0byBuZXR3b3JrIGRhdGEgKGFzIEpTT04pOgogICAgKiBDb252ZXJ0IFB5dGhvbiB0eXBlcyAoYHN0cmAsIGBpbnRgLCBgZmxvYXRgLCBgYm9vbGAsIGBsaXN0YCwgZXRjKS4KICAgICogYGRhdGV0aW1lYCBvYmplY3RzLgogICAgKiBgVVVJRGAgb2JqZWN0cy4KICAgICogRGF0YWJhc2UgbW9kZWxzLgogICAgKiAuLi5hbmQgbWFueSBtb3JlLgoqIEF1dG9tYXRpYyBpbnRlcmFjdGl2ZSBBUEkgZG9jdW1lbnRhdGlvbiwgaW5jbHVkaW5nIDIgYWx0ZXJuYXRpdmUgdXNlciBpbnRlcmZhY2VzOgogICAgKiBTd2FnZ2VyIFVJLgogICAgKiBSZURvYy4KCi0tLQoKQ29taW5nIGJhY2sgdG8gdGhlIHByZXZpb3VzIGNvZGUgZXhhbXBsZSwgKipGYXN0QVBJKiogd2lsbDoKCiogVmFsaWRhdGUgdGhhdCB0aGVyZSBpcyBhbiBgaXRlbV9pZGAgaW4gdGhlIHBhdGggZm9yIGBHRVRgIGFuZCBgUFVUYCByZXF1ZXN0cy4KKiBWYWxpZGF0ZSB0aGF0IHRoZSBgaXRlbV9pZGAgaXMgb2YgdHlwZSBgaW50YCBmb3IgYEdFVGAgYW5kIGBQVVRgIHJlcXVlc3RzLgogICAgKiBJZiBpdCBpcyBub3QsIHRoZSBjbGllbnQgd2lsbCBzZWUgYSB1c2VmdWwsIGNsZWFyIGVycm9yLgoqIENoZWNrIGlmIHRoZXJlIGlzIGFuIG9wdGlvbmFsIHF1ZXJ5IHBhcmFtZXRlciBuYW1lZCBgcWAgKGFzIGluIGBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaXRlbXMvZm9vP3E9c29tZXF1ZXJ5YCkgZm9yIGBHRVRgIHJlcXVlc3RzLgogICAgKiBBcyB0aGUgYHFgIHBhcmFtZXRlciBpcyBkZWNsYXJlZCB3aXRoIGA9IE5vbmVgLCBpdCBpcyBvcHRpb25hbC4KICAgICogV2l0aG91dCB0aGUgYE5vbmVgIGl0IHdvdWxkIGJlIHJlcXVpcmVkIChhcyBpcyB0aGUgYm9keSBpbiB0aGUgY2FzZSB3aXRoIGBQVVRgKS4KKiBGb3IgYFBVVGAgcmVxdWVzdHMgdG8gYC9pdGVtcy97aXRlbV9pZH1gLCByZWFkIHRoZSBib2R5IGFzIEpTT046CiAgICAqIENoZWNrIHRoYXQgaXQgaGFzIGEgcmVxdWlyZWQgYXR0cmlidXRlIGBuYW1lYCB0aGF0IHNob3VsZCBiZSBhIGBzdHJgLgogICAgKiBDaGVjayB0aGF0IGl0IGhhcyBhIHJlcXVpcmVkIGF0dHJpYnV0ZSBgcHJpY2VgIHRoYXQgaGFzIHRvIGJlIGEgYGZsb2F0YC4KICAgICogQ2hlY2sgdGhhdCBpdCBoYXMgYW4gb3B0aW9uYWwgYXR0cmlidXRlIGBpc19vZmZlcmAsIHRoYXQgc2hvdWxkIGJlIGEgYGJvb2xgLCBpZiBwcmVzZW50LgogICAgKiBBbGwgdGhpcyB3b3VsZCBhbHNvIHdvcmsgZm9yIGRlZXBseSBuZXN0ZWQgSlNPTiBvYmplY3RzLgoqIENvbnZlcnQgZnJvbSBhbmQgdG8gSlNPTiBhdXRvbWF0aWNhbGx5LgoqIERvY3VtZW50IGV2ZXJ5dGhpbmcgd2l0aCBPcGVuQVBJLCB0aGF0IGNhbiBiZSB1c2VkIGJ5OgogICAgKiBJbnRlcmFjdGl2ZSBkb2N1bWVudGF0aW9uIHN5c3RlbXMuCiAgICAqIEF1dG9tYXRpYyBjbGllbnQgY29kZSBnZW5lcmF0aW9uIHN5c3RlbXMsIGZvciBtYW55IGxhbmd1YWdlcy4KKiBQcm92aWRlIDIgaW50ZXJhY3RpdmUgZG9jdW1lbnRhdGlvbiB3ZWIgaW50ZXJmYWNlcyBkaXJlY3RseS4KCi0tLQoKV2UganVzdCBzY3JhdGNoZWQgdGhlIHN1cmZhY2UsIGJ1dCB5b3UgYWxyZWFkeSBnZXQgdGhlIGlkZWEgb2YgaG93IGl0IGFsbCB3b3Jrcy4KClRyeSBjaGFuZ2luZyB0aGUgbGluZSB3aXRoOgoKYGBgUHl0aG9uCiAgICByZXR1cm4geyJpdGVtX25hbWUiOiBpdGVtLm5hbWUsICJpdGVtX2lkIjogaXRlbV9pZH0KYGBgCgouLi5mcm9tOgoKYGBgUHl0aG9uCiAgICAgICAgLi4uICJpdGVtX25hbWUiOiBpdGVtLm5hbWUgLi4uCmBgYAoKLi4udG86CgpgYGBQeXRob24KICAgICAgICAuLi4gIml0ZW1fcHJpY2UiOiBpdGVtLnByaWNlIC4uLgpgYGAKCi4uLmFuZCBzZWUgaG93IHlvdXIgZWRpdG9yIHdpbGwgYXV0by1jb21wbGV0ZSB0aGUgYXR0cmlidXRlcyBhbmQga25vdyB0aGVpciB0eXBlczoKCiFbZWRpdG9yIHN1cHBvcnRdKGh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL3ZzY29kZS1jb21wbGV0aW9uLnBuZykKCkZvciBhIG1vcmUgY29tcGxldGUgZXhhbXBsZSBpbmNsdWRpbmcgbW9yZSBmZWF0dXJlcywgc2VlIHRoZSA8YSBocmVmPSJodHRwczovL2Zhc3RhcGkudGlhbmdvbG8uY29tL3R1dG9yaWFsLyI+VHV0b3JpYWwgLSBVc2VyIEd1aWRlPC9hPi4KCioqU3BvaWxlciBhbGVydCoqOiB0aGUgdHV0b3JpYWwgLSB1c2VyIGd1aWRlIGluY2x1ZGVzOgoKKiBEZWNsYXJhdGlvbiBvZiAqKnBhcmFtZXRlcnMqKiBmcm9tIG90aGVyIGRpZmZlcmVudCBwbGFjZXMgYXM6ICoqaGVhZGVycyoqLCAqKmNvb2tpZXMqKiwgKipmb3JtIGZpZWxkcyoqIGFuZCAqKmZpbGVzKiouCiogSG93IHRvIHNldCAqKnZhbGlkYXRpb24gY29uc3RyYWludHMqKiBhcyBgbWF4aW11bV9sZW5ndGhgIG9yIGByZWdleGAuCiogQSB2ZXJ5IHBvd2VyZnVsIGFuZCBlYXN5IHRvIHVzZSAqKjxhYmJyIHRpdGxlPSJhbHNvIGtub3duIGFzIGNvbXBvbmVudHMsIHJlc291cmNlcywgcHJvdmlkZXJzLCBzZXJ2aWNlcywgaW5qZWN0YWJsZXMiPkRlcGVuZGVuY3kgSW5qZWN0aW9uPC9hYmJyPioqIHN5c3RlbS4KKiBTZWN1cml0eSBhbmQgYXV0aGVudGljYXRpb24sIGluY2x1ZGluZyBzdXBwb3J0IGZvciAqKk9BdXRoMioqIHdpdGggKipKV1QgdG9rZW5zKiogYW5kICoqSFRUUCBCYXNpYyoqIGF1dGguCiogTW9yZSBhZHZhbmNlZCAoYnV0IGVxdWFsbHkgZWFzeSkgdGVjaG5pcXVlcyBmb3IgZGVjbGFyaW5nICoqZGVlcGx5IG5lc3RlZCBKU09OIG1vZGVscyoqICh0aGFua3MgdG8gUHlkYW50aWMpLgoqICoqR3JhcGhRTCoqIGludGVncmF0aW9uIHdpdGggPGEgaHJlZj0iaHR0cHM6Ly9zdHJhd2JlcnJ5LnJvY2tzIiBjbGFzcz0iZXh0ZXJuYWwtbGluayIgdGFyZ2V0PSJfYmxhbmsiPlN0cmF3YmVycnk8L2E+IGFuZCBvdGhlciBsaWJyYXJpZXMuCiogTWFueSBleHRyYSBmZWF0dXJlcyAodGhhbmtzIHRvIFN0YXJsZXR0ZSkgYXM6CiAgICAqICoqV2ViU29ja2V0cyoqCiAgICAqIGV4dHJlbWVseSBlYXN5IHRlc3RzIGJhc2VkIG9uIEhUVFBYIGFuZCBgcHl0ZXN0YAogICAgKiAqKkNPUlMqKgogICAgKiAqKkNvb2tpZSBTZXNzaW9ucyoqCiAgICAqIC4uLmFuZCBtb3JlLgoKIyMjIERlcGxveSB5b3VyIGFwcCAob3B0aW9uYWwpCgpZb3UgY2FuIG9wdGlvbmFsbHkgZGVwbG95IHlvdXIgRmFzdEFQSSBhcHAgdG8gPGEgaHJlZj0iaHR0cHM6Ly9mYXN0YXBpY2xvdWQuY29tIiBjbGFzcz0iZXh0ZXJuYWwtbGluayIgdGFyZ2V0PSJfYmxhbmsiPkZhc3RBUEkgQ2xvdWQ8L2E+LCBnbyBhbmQgam9pbiB0aGUgd2FpdGluZyBsaXN0IGlmIHlvdSBoYXZlbid0LiDwn5qACgpJZiB5b3UgYWxyZWFkeSBoYXZlIGEgKipGYXN0QVBJIENsb3VkKiogYWNjb3VudCAod2UgaW52aXRlZCB5b3UgZnJvbSB0aGUgd2FpdGluZyBsaXN0IPCfmIkpLCB5b3UgY2FuIGRlcGxveSB5b3VyIGFwcGxpY2F0aW9uIHdpdGggb25lIGNvbW1hbmQuCgpCZWZvcmUgZGVwbG95aW5nLCBtYWtlIHN1cmUgeW91IGFyZSBsb2dnZWQgaW46Cgo8ZGl2IGNsYXNzPSJ0ZXJteSI+CgpgYGBjb25zb2xlCiQgZmFzdGFwaSBsb2dpbgoKWW91IGFyZSBsb2dnZWQgaW4gdG8gRmFzdEFQSSBDbG91ZCDwn5qACmBgYAoKPC9kaXY+CgpUaGVuIGRlcGxveSB5b3VyIGFwcDoKCjxkaXYgY2xhc3M9InRlcm15Ij4KCmBgYGNvbnNvbGUKJCBmYXN0YXBpIGRlcGxveQoKRGVwbG95aW5nIHRvIEZhc3RBUEkgQ2xvdWQuLi4KCuKchSBEZXBsb3ltZW50IHN1Y2Nlc3NmdWwhCgrwn5CUIFJlYWR5IHRoZSBjaGlja2VuISBZb3VyIGFwcCBpcyByZWFkeSBhdCBodHRwczovL215YXBwLmZhc3RhcGljbG91ZC5kZXYKYGBgCgo8L2Rpdj4KClRoYXQncyBpdCEgTm93IHlvdSBjYW4gYWNjZXNzIHlvdXIgYXBwIGF0IHRoYXQgVVJMLiDinKgKCiMjIyMgQWJvdXQgRmFzdEFQSSBDbG91ZAoKKio8YSBocmVmPSJodHRwczovL2Zhc3RhcGljbG91ZC5jb20iIGNsYXNzPSJleHRlcm5hbC1saW5rIiB0YXJnZXQ9Il9ibGFuayI+RmFzdEFQSSBDbG91ZDwvYT4qKiBpcyBidWlsdCBieSB0aGUgc2FtZSBhdXRob3IgYW5kIHRlYW0gYmVoaW5kICoqRmFzdEFQSSoqLgoKSXQgc3RyZWFtbGluZXMgdGhlIHByb2Nlc3Mgb2YgKipidWlsZGluZyoqLCAqKmRlcGxveWluZyoqLCBhbmQgKiphY2Nlc3NpbmcqKiBhbiBBUEkgd2l0aCBtaW5pbWFsIGVmZm9ydC4KCkl0IGJyaW5ncyB0aGUgc2FtZSAqKmRldmVsb3BlciBleHBlcmllbmNlKiogb2YgYnVpbGRpbmcgYXBwcyB3aXRoIEZhc3RBUEkgdG8gKipkZXBsb3lpbmcqKiB0aGVtIHRvIHRoZSBjbG91ZC4g8J+OiQoKRmFzdEFQSSBDbG91ZCBpcyB0aGUgcHJpbWFyeSBzcG9uc29yIGFuZCBmdW5kaW5nIHByb3ZpZGVyIGZvciB0aGUgKkZhc3RBUEkgYW5kIGZyaWVuZHMqIG9wZW4gc291cmNlIHByb2plY3RzLiDinKgKCiMjIyMgRGVwbG95IHRvIG90aGVyIGNsb3VkIHByb3ZpZGVycwoKRmFzdEFQSSBpcyBvcGVuIHNvdXJjZSBhbmQgYmFzZWQgb24gc3RhbmRhcmRzLiBZb3UgY2FuIGRlcGxveSBGYXN0QVBJIGFwcHMgdG8gYW55IGNsb3VkIHByb3ZpZGVyIHlvdSBjaG9vc2UuCgpGb2xsb3cgeW91ciBjbG91ZCBwcm92aWRlcidzIGd1aWRlcyB0byBkZXBsb3kgRmFzdEFQSSBhcHBzIHdpdGggdGhlbS4g8J+kkwoKIyMgUGVyZm9ybWFuY2UKCkluZGVwZW5kZW50IFRlY2hFbXBvd2VyIGJlbmNobWFya3Mgc2hvdyAqKkZhc3RBUEkqKiBhcHBsaWNhdGlvbnMgcnVubmluZyB1bmRlciBVdmljb3JuIGFzIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlY2hlbXBvd2VyLmNvbS9iZW5jaG1hcmtzLyNzZWN0aW9uPXRlc3QmcnVuaWQ9NzQ2NGU1MjAtMGRjMi00NzNkLWJkMzQtZGJkZmQ3ZTg1OTExJmh3PXBoJnRlc3Q9cXVlcnkmbD16aWp6ZW4tNyIgY2xhc3M9ImV4dGVybmFsLWxpbmsiIHRhcmdldD0iX2JsYW5rIj5vbmUgb2YgdGhlIGZhc3Rlc3QgUHl0aG9uIGZyYW1ld29ya3MgYXZhaWxhYmxlPC9hPiwgb25seSBiZWxvdyBTdGFybGV0dGUgYW5kIFV2aWNvcm4gdGhlbXNlbHZlcyAodXNlZCBpbnRlcm5hbGx5IGJ5IEZhc3RBUEkpLiAoKikKClRvIHVuZGVyc3RhbmQgbW9yZSBhYm91dCBpdCwgc2VlIHRoZSBzZWN0aW9uIDxhIGhyZWY9Imh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vYmVuY2htYXJrcy8iIGNsYXNzPSJpbnRlcm5hbC1saW5rIiB0YXJnZXQ9Il9ibGFuayI+QmVuY2htYXJrczwvYT4uCgojIyBEZXBlbmRlbmNpZXMKCkZhc3RBUEkgZGVwZW5kcyBvbiBQeWRhbnRpYyBhbmQgU3RhcmxldHRlLgoKIyMjIGBzdGFuZGFyZGAgRGVwZW5kZW5jaWVzCgpXaGVuIHlvdSBpbnN0YWxsIEZhc3RBUEkgd2l0aCBgcGlwIGluc3RhbGwgImZhc3RhcGlbc3RhbmRhcmRdImAgaXQgY29tZXMgd2l0aCB0aGUgYHN0YW5kYXJkYCBncm91cCBvZiBvcHRpb25hbCBkZXBlbmRlbmNpZXM6CgpVc2VkIGJ5IFB5ZGFudGljOgoKKiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSm9zaERhdGEvcHl0aG9uLWVtYWlsLXZhbGlkYXRvciIgdGFyZ2V0PSJfYmxhbmsiPjxjb2RlPmVtYWlsLXZhbGlkYXRvcjwvY29kZT48L2E+IC0gZm9yIGVtYWlsIHZhbGlkYXRpb24uCgpVc2VkIGJ5IFN0YXJsZXR0ZToKCiogPGEgaHJlZj0iaHR0cHM6Ly93d3cucHl0aG9uLWh0dHB4Lm9yZyIgdGFyZ2V0PSJfYmxhbmsiPjxjb2RlPmh0dHB4PC9jb2RlPjwvYT4gLSBSZXF1aXJlZCBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGBUZXN0Q2xpZW50YC4KKiA8YSBocmVmPSJodHRwczovL2ppbmphLnBhbGxldHNwcm9qZWN0cy5jb20iIHRhcmdldD0iX2JsYW5rIj48Y29kZT5qaW5qYTI8L2NvZGU+PC9hPiAtIFJlcXVpcmVkIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uLgoqIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LbHVkZXgvcHl0aG9uLW11bHRpcGFydCIgdGFyZ2V0PSJfYmxhbmsiPjxjb2RlPnB5dGhvbi1tdWx0aXBhcnQ8L2NvZGU+PC9hPiAtIFJlcXVpcmVkIGlmIHlvdSB3YW50IHRvIHN1cHBvcnQgZm9ybSA8YWJiciB0aXRsZT0iY29udmVydGluZyB0aGUgc3RyaW5nIHRoYXQgY29tZXMgZnJvbSBhbiBIVFRQIHJlcXVlc3QgaW50byBQeXRob24gZGF0YSI+InBhcnNpbmciPC9hYmJyPiwgd2l0aCBgcmVxdWVzdC5mb3JtKClgLgoKVXNlZCBieSBGYXN0QVBJOgoKKiA8YSBocmVmPSJodHRwczovL3d3dy51dmljb3JuLmRldiIgdGFyZ2V0PSJfYmxhbmsiPjxjb2RlPnV2aWNvcm48L2NvZGU+PC9hPiAtIGZvciB0aGUgc2VydmVyIHRoYXQgbG9hZHMgYW5kIHNlcnZlcyB5b3VyIGFwcGxpY2F0aW9uLiBUaGlzIGluY2x1ZGVzIGB1dmljb3JuW3N0YW5kYXJkXWAsIHdoaWNoIGluY2x1ZGVzIHNvbWUgZGVwZW5kZW5jaWVzIChlLmcuIGB1dmxvb3BgKSBuZWVkZWQgZm9yIGhpZ2ggcGVyZm9ybWFuY2Ugc2VydmluZy4KKiBgZmFzdGFwaS1jbGlbc3RhbmRhcmRdYCAtIHRvIHByb3ZpZGUgdGhlIGBmYXN0YXBpYCBjb21tYW5kLgogICAgKiBUaGlzIGluY2x1ZGVzIGBmYXN0YXBpLWNsb3VkLWNsaWAsIHdoaWNoIGFsbG93cyB5b3UgdG8gZGVwbG95IHlvdXIgRmFzdEFQSSBhcHBsaWNhdGlvbiB0byA8YSBocmVmPSJodHRwczovL2Zhc3RhcGljbG91ZC5jb20iIGNsYXNzPSJleHRlcm5hbC1saW5rIiB0YXJnZXQ9Il9ibGFuayI+RmFzdEFQSSBDbG91ZDwvYT4uCgojIyMgV2l0aG91dCBgc3RhbmRhcmRgIERlcGVuZGVuY2llcwoKSWYgeW91IGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgYHN0YW5kYXJkYCBvcHRpb25hbCBkZXBlbmRlbmNpZXMsIHlvdSBjYW4gaW5zdGFsbCB3aXRoIGBwaXAgaW5zdGFsbCBmYXN0YXBpYCBpbnN0ZWFkIG9mIGBwaXAgaW5zdGFsbCAiZmFzdGFwaVtzdGFuZGFyZF0iYC4KCiMjIyBXaXRob3V0IGBmYXN0YXBpLWNsb3VkLWNsaWAKCklmIHlvdSB3YW50IHRvIGluc3RhbGwgRmFzdEFQSSB3aXRoIHRoZSBzdGFuZGFyZCBkZXBlbmRlbmNpZXMgYnV0IHdpdGhvdXQgdGhlIGBmYXN0YXBpLWNsb3VkLWNsaWAsIHlvdSBjYW4gaW5zdGFsbCB3aXRoIGBwaXAgaW5zdGFsbCAiZmFzdGFwaVtzdGFuZGFyZC1uby1mYXN0YXBpLWNsb3VkLWNsaV0iYC4KCiMjIyBBZGRpdGlvbmFsIE9wdGlvbmFsIERlcGVuZGVuY2llcwoKVGhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMgeW91IG1pZ2h0IHdhbnQgdG8gaW5zdGFsbC4KCkFkZGl0aW9uYWwgb3B0aW9uYWwgUHlkYW50aWMgZGVwZW5kZW5jaWVzOgoKKiA8YSBocmVmPSJodHRwczovL2RvY3MucHlkYW50aWMuZGV2L2xhdGVzdC91c2FnZS9weWRhbnRpY19zZXR0aW5ncy8iIHRhcmdldD0iX2JsYW5rIj48Y29kZT5weWRhbnRpYy1zZXR0aW5nczwvY29kZT48L2E+IC0gZm9yIHNldHRpbmdzIG1hbmFnZW1lbnQuCiogPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnB5ZGFudGljLmRldi9sYXRlc3QvdXNhZ2UvdHlwZXMvZXh0cmFfdHlwZXMvZXh0cmFfdHlwZXMvIiB0YXJnZXQ9Il9ibGFuayI+PGNvZGU+cHlkYW50aWMtZXh0cmEtdHlwZXM8L2NvZGU+PC9hPiAtIGZvciBleHRyYSB0eXBlcyB0byBiZSB1c2VkIHdpdGggUHlkYW50aWMuCgpBZGRpdGlvbmFsIG9wdGlvbmFsIEZhc3RBUEkgZGVwZW5kZW5jaWVzOgoKKiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaWpsL29yanNvbiIgdGFyZ2V0PSJfYmxhbmsiPjxjb2RlPm9yanNvbjwvY29kZT48L2E+IC0gUmVxdWlyZWQgaWYgeW91IHdhbnQgdG8gdXNlIGBPUkpTT05SZXNwb25zZWAuCiogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Vzbm1lL3VsdHJhanNvbiIgdGFyZ2V0PSJfYmxhbmsiPjxjb2RlPnVqc29uPC9jb2RlPjwvYT4gLSBSZXF1aXJlZCBpZiB5b3Ugd2FudCB0byB1c2UgYFVKU09OUmVzcG9uc2VgLgoKIyMgTGljZW5zZQoKVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIGxpY2Vuc2UuCg== readmeEtag: '"963de51edf98fcdb4aef937697fcce0d623daed6"' readmeLastModified: Wed, 04 Feb 2026 17:36:12 GMT repositoryId: 160919119 description: >- FastAPI framework, high performance, easy to learn, fast to code, ready for production created: '2018-12-08T08:21:47Z' updated: '2026-02-06T04:44:53Z' language: Python archived: false stars: 94838 watchers: 728 forks: 8632 owner: fastapi logo: https://avatars.githubusercontent.com/u/156354296?v=4 license: MIT repoEtag: '"1732ec16ea0224f93388a338b48c407cb8473d68fcfd8612df0fa5db289b3e3a"' repoLastModified: Fri, 06 Feb 2026 04:44:53 GMT foundInMaster: true id: 01f8d446752c39de698f67e8d2352229 oldLocations: - https://github.com/tiangolo/fastapi - source: - openapi3 tags - openapi31 tags repository: https://github.com/swagger-api/swagger-ui v3: true repositoryMetadata: base64Readme: >- IyA8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N3YWdnZXItYXBpL3N3YWdnZXIuaW8vd29yZHByZXNzL2ltYWdlcy9hc3NldHMvU1dVLWxvZ28tY2xyLnBuZyIgd2lkdGg9IjMwMCI+CgpbIVtOUE0gdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL3N3YWdnZXItdWkuc3ZnKV0oaHR0cDovL2JhZGdlLmZ1cnkuaW8vanMvc3dhZ2dlci11aSkKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2plbmtpbnMuc3dhZ2dlci5pby92aWV3L09TUyUyMC0lMjBKYXZhU2NyaXB0L2pvYi9vc3Mtc3dhZ2dlci11aS1tYXN0ZXIvYmFkZ2UvaWNvbj9zdWJqZWN0PWplbmtpbnMlMjBidWlsZCldKGh0dHBzOi8vamVua2lucy5zd2FnZ2VyLmlvL3ZpZXcvT1NTJTIwLSUyMEphdmFTY3JpcHQvam9iL29zcy1zd2FnZ2VyLXVpLW1hc3Rlci8pClshW25wbSBhdWRpdF0oaHR0cHM6Ly9qZW5raW5zLnN3YWdnZXIuaW8vYnVpbGRTdGF0dXMvaWNvbj9qb2I9b3NzLXN3YWdnZXItdWktc2VjdXJpdHktYXVkaXQmc3ViamVjdD1ucG0lMjBhdWRpdCldKGh0dHBzOi8vamVua2lucy5zd2FnZ2VyLmlvL2pvYi9vc3Mtc3dhZ2dlci11aS1zZWN1cml0eS1hdWRpdC9sYXN0QnVpbGQvY29uc29sZSkKWyFbdG90YWwgR2l0SHViIGNvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvY29udHJpYnV0b3JzLWFub24vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS9ncmFwaHMvY29udHJpYnV0b3JzKQoKWyFbbW9udGhseSBucG0gaW5zdGFsbHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL3N3YWdnZXItdWkuc3ZnP2xhYmVsPW5wbSUyMGRvd25sb2FkcyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3N3YWdnZXItdWkpCiFbZG9ja2VyIHJlZ2lzdHJ5XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2RvY2tlci1kb2NrZXIuc3dhZ2dlci5pbyUyRnN3YWdnZXJhcGklMkZzd2FnZ2VyLS11aS1ibHVlKQohW21vbnRobHkgcGFja2FnaXN0IGluc3RhbGxzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3BhY2thZ2lzdC9kbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpLnN2Zz9sYWJlbD1wYWNrYWdpc3QlMjBpbnN0YWxscykKWyFbZ3ppcCBzaXplXShodHRwczovL2ltZy5zaGllbGRzLmlvL2J1bmRsZXBob2JpYS9taW56aXAvc3dhZ2dlci11aS5zdmc/bGFiZWw9Z3ppcCUyMHNpemUpXShodHRwczovL2J1bmRsZXBob2JpYS5jb20vcGFja2FnZS9zd2FnZ2VyLXVpKQoKIyMgSW50cm9kdWN0aW9uCltTd2FnZ2VyIFVJXShodHRwczovL3N3YWdnZXIuaW8vdG9vbHMvc3dhZ2dlci11aS8pIGFsbG93cyBhbnlvbmUg4oCUIGJlIGl0IHlvdXIgZGV2ZWxvcG1lbnQgdGVhbSBvciB5b3VyIGVuZCBjb25zdW1lcnMg4oCUIHRvIHZpc3VhbGl6ZSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgQVBJ4oCZcyByZXNvdXJjZXMgd2l0aG91dCBoYXZpbmcgYW55IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBsb2dpYyBpbiBwbGFjZS4gSXTigJlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20geW91ciBPcGVuQVBJIChmb3JtZXJseSBrbm93biBhcyBTd2FnZ2VyKSBTcGVjaWZpY2F0aW9uLCB3aXRoIHRoZSB2aXN1YWwgZG9jdW1lbnRhdGlvbiBtYWtpbmcgaXQgZWFzeSBmb3IgYmFjayBlbmQgaW1wbGVtZW50YXRpb24gYW5kIGNsaWVudCBzaWRlIGNvbnN1bXB0aW9uLgoKIyMgR2VuZXJhbAoqKvCfkYnwn4+8IFdhbnQgdG8gc2NvcmUgYW4gZWFzeSBvcGVuLXNvdXJjZSBjb250cmlidXRpb24/KiogQ2hlY2sgb3V0IG91ciBbR29vZCBmaXJzdCBpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvaXNzdWVzP3E9aXMlM0Fpc3N1ZStpcyUzQW9wZW4rbGFiZWwlM0ElMjJHb29kK2ZpcnN0K2lzc3VlJTIyKSBsYWJlbC4KCioq8J+VsO+4jyBMb29raW5nIGZvciB0aGUgb2xkZXIgdmVyc2lvbiBvZiBTd2FnZ2VyIFVJPyoqIFJlZmVyIHRvIHRoZSBbKjIueCogYnJhbmNoXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS90cmVlLzIueCkuCgoKVGhpcyByZXBvc2l0b3J5IHB1Ymxpc2hlcyB0aHJlZSBkaWZmZXJlbnQgTlBNIG1vZHVsZXM6CgoqIFtzd2FnZ2VyLXVpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zd2FnZ2VyLXVpKSBpcyBhIHRyYWRpdGlvbmFsIG5wbSBtb2R1bGUgaW50ZW5kZWQgZm9yIHVzZSBpbiBzaW5nbGUtcGFnZSBhcHBsaWNhdGlvbnMgdGhhdCBhcmUgY2FwYWJsZSBvZiByZXNvbHZpbmcgZGVwZW5kZW5jaWVzICh2aWEgV2VicGFjaywgQnJvd3NlcmlmeSwgZXRjLikuCiogW3N3YWdnZXItdWktZGlzdF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvc3dhZ2dlci11aS1kaXN0KSBpcyBhIGRlcGVuZGVuY3ktZnJlZSBtb2R1bGUgdGhhdCBpbmNsdWRlcyBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIHNlcnZlIFN3YWdnZXIgVUkgaW4gYSBzZXJ2ZXItc2lkZSBwcm9qZWN0LCBvciBhIHNpbmdsZS1wYWdlIGFwcGxpY2F0aW9uIHRoYXQgY2FuJ3QgcmVzb2x2ZSBucG0gbW9kdWxlIGRlcGVuZGVuY2llcy4KKiBbc3dhZ2dlci11aS1yZWFjdF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvc3dhZ2dlci11aS1yZWFjdCkgaXMgU3dhZ2dlciBVSSBwYWNrYWdlZCBhcyBhIFJlYWN0IGNvbXBvbmVudCBmb3IgdXNlIGluIFJlYWN0IGFwcGxpY2F0aW9ucy4KCldlIHN0cm9uZ2x5IHN1Z2dlc3QgdGhhdCB5b3UgdXNlIGBzd2FnZ2VyLXVpYCBpbnN0ZWFkIG9mIGBzd2FnZ2VyLXVpLWRpc3RgIGlmIHlvdSdyZSBidWlsZGluZyBhIHNpbmdsZS1wYWdlIGFwcGxpY2F0aW9uLCBzaW5jZSBgc3dhZ2dlci11aS1kaXN0YCBpcyBzaWduaWZpY2FudGx5IGxhcmdlci4KCklmIHlvdSBhcmUgbG9va2luZyBmb3IgcGxhaW4gb2wnIEhUTUwvSlMvQ1NTLCBbZG93bmxvYWQgdGhlIGxhdGVzdCByZWxlYXNlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS9yZWxlYXNlcy9sYXRlc3QpIGFuZCBjb3B5IHRoZSBjb250ZW50cyBvZiB0aGUgYC9kaXN0YCBmb2xkZXIgdG8geW91ciBzZXJ2ZXIuCgoKIyMgQ29tcGF0aWJpbGl0eQpUaGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIGhhcyB1bmRlcmdvbmUgNSByZXZpc2lvbnMgc2luY2UgaW5pdGlhbCBjcmVhdGlvbiBpbiAyMDEwLiAgQ29tcGF0aWJpbGl0eSBiZXR3ZWVuIFN3YWdnZXIgVUkgYW5kIHRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gaXMgYXMgZm9sbG93czoKCnwgU3dhZ2dlciBVSSBWZXJzaW9uIHwgUmVsZWFzZSBEYXRlIHwgT3BlbkFQSSBTcGVjIGNvbXBhdGliaWxpdHkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgNS4xOS4wICAgICAgICAgICAgIHwgMjAyNS0wMi0xNyAgIHwgMi4wLCAzLjAuMCwgMy4wLjEsIDMuMC4yLCAzLjAuMywgMy4wLjQsIDMuMS4wLCAzLjEuMSB8IFt0YWcgdjUuMTkuMF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvdHJlZS92NS4xOS4wKSB8CnwgNS4wLjAgICAgICAgICAgICAgIHwgMjAyMy0wNi0xMiAgIHwgMi4wLCAzLjAuMCwgMy4wLjEsIDMuMC4yLCAzLjAuMywgMy4xLjAgICAgICAgICAgICAgICB8IFt0YWcgdjUuMC4wXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS90cmVlL3Y1LjAuMCkgICB8CnwgNC4wLjAgICAgICAgICAgICAgIHwgMjAyMS0xMS0wMyAgIHwgMi4wLCAzLjAuMCwgMy4wLjEsIDMuMC4yLCAzLjAuMyAgICAgICAgICAgICAgICAgICAgICB8IFt0YWcgdjQuMC4wXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS90cmVlL3Y0LjAuMCkgICB8CnwgMy4xOC4zICAgICAgICAgICAgIHwgMjAxOC0wOC0wMyAgIHwgMi4wLCAzLjAuMCwgMy4wLjEsIDMuMC4yLCAzLjAuMyAgICAgICAgICAgICAgICAgICAgICB8IFt0YWcgdjMuMTguM10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvdHJlZS92My4xOC4zKSB8CnwgMy4wLjIxICAgICAgICAgICAgIHwgMjAxNy0wNy0yNiAgIHwgMi4wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFt0YWcgdjMuMC4yMV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvdHJlZS92My4wLjIxKSB8CnwgMi4yLjEwICAgICAgICAgICAgIHwgMjAxNy0wMS0wNCAgIHwgMS4xLCAxLjIsIDIuMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFt0YWcgdjIuMi4xMF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvdHJlZS92Mi4yLjEwKSB8CnwgMi4xLjUgICAgICAgICAgICAgIHwgMjAxNi0wNy0yMCAgIHwgMS4xLCAxLjIsIDIuMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFt0YWcgdjIuMS41XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS90cmVlL3YyLjEuNSkgICB8CnwgMi4wLjI0ICAgICAgICAgICAgIHwgMjAxNC0wOS0xMiAgIHwgMS4xLCAxLjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFt0YWcgdjIuMC4yNF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvdHJlZS92Mi4wLjI0KSB8CnwgMS4wLjEzICAgICAgICAgICAgIHwgMjAxMy0wMy0wOCAgIHwgMS4xLCAxLjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFt0YWcgdjEuMC4xM10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvdHJlZS92MS4wLjEzKSB8CnwgMS4wLjEgICAgICAgICAgICAgIHwgMjAxMS0xMC0xMSAgIHwgMS4wLCAxLjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFt0YWcgdjEuMC4xXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS90cmVlL3YxLjAuMSkgICB8CgojIyBBbm9ueW1pemVkIGFuYWx5dGljcwoKU3dhZ2dlclVJIHVzZXMgW1NjYXJmXShodHRwczovL3NjYXJmLnNoLykgdG8gY29sbGVjdCBbYW5vbnltaXplZCBpbnN0YWxsYXRpb24gYW5hbHl0aWNzXShodHRwczovL2dpdGh1Yi5jb20vc2NhcmYtc2gvc2NhcmYtanM/dGFiPXJlYWRtZS1vdi1maWxlI2FzLWEtdXNlci1vZi1hLXBhY2thZ2UtdXNpbmctc2NhcmYtanMtd2hhdC1pbmZvcm1hdGlvbi1kb2VzLXNjYXJmLWpzLXNlbmQtYWJvdXQtbWUpLiBUaGVzZSBhbmFseXRpY3MgaGVscCBzdXBwb3J0IHRoZSBtYWludGFpbmVycyBvZiB0aGlzIGxpYnJhcnkgYW5kIE9OTFkgcnVuIGR1cmluZyBpbnN0YWxsYXRpb24uIFRvIFtvcHQgb3V0XShodHRwczovL2dpdGh1Yi5jb20vc2NhcmYtc2gvc2NhcmYtanM/dGFiPXJlYWRtZS1vdi1maWxlI2FzLWEtdXNlci1vZi1hLXBhY2thZ2UtdXNpbmctc2NhcmYtanMtaG93LWNhbi1pLW9wdC1vdXQtb2YtYW5hbHl0aWNzKSwgeW91IGNhbiBzZXQgdGhlIGBzY2FyZlNldHRpbmdzLmVuYWJsZWRgIGZpZWxkIHRvIGBmYWxzZWAgaW4geW91ciBwcm9qZWN0J3MgYHBhY2thZ2UuanNvbmA6CgpgYGAKLy8gcGFja2FnZS5qc29uCnsKICAvLyAuLi4KICAic2NhcmZTZXR0aW5ncyI6IHsKICAgICJlbmFibGVkIjogZmFsc2UKICB9CiAgLy8gLi4uCn0KYGBgCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYFNDQVJGX0FOQUxZVElDU2AgdG8gYGZhbHNlYCBhcyBwYXJ0IG9mIHRoZSBlbnZpcm9ubWVudCB0aGF0IGluc3RhbGxzIHlvdXIgbnBtIHBhY2thZ2VzLCBlLmcuLCBgU0NBUkZfQU5BTFlUSUNTPWZhbHNlIG5wbSBpbnN0YWxsYC4KCiMjIERvY3VtZW50YXRpb24KCiMjIyMgVXNhZ2UKLSBbSW5zdGFsbGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS9ibG9iL0hFQUQvZG9jcy91c2FnZS9pbnN0YWxsYXRpb24ubWQpCi0gW0NvbmZpZ3VyYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpL2Jsb2IvSEVBRC9kb2NzL3VzYWdlL2NvbmZpZ3VyYXRpb24ubWQpCi0gW0NPUlNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpL2Jsb2IvSEVBRC9kb2NzL3VzYWdlL2NvcnMubWQpCi0gW09BdXRoMl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvYmxvYi9IRUFEL2RvY3MvdXNhZ2Uvb2F1dGgyLm1kKQotIFtEZWVwIExpbmtpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpL2Jsb2IvSEVBRC9kb2NzL3VzYWdlL2RlZXAtbGlua2luZy5tZCkKLSBbTGltaXRhdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpL2Jsb2IvSEVBRC9kb2NzL3VzYWdlL2xpbWl0YXRpb25zLm1kKQotIFtWZXJzaW9uIGRldGVjdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvYmxvYi9IRUFEL2RvY3MvdXNhZ2UvdmVyc2lvbi1kZXRlY3Rpb24ubWQpCgojIyMjIEN1c3RvbWl6YXRpb24KLSBbT3ZlcnZpZXddKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpL2Jsb2IvSEVBRC9kb2NzL2N1c3RvbWl6YXRpb24vb3ZlcnZpZXcubWQpCi0gW1BsdWdpbiBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpL2Jsb2IvSEVBRC9kb2NzL2N1c3RvbWl6YXRpb24vcGx1Z2luLWFwaS5tZCkKLSBbQ3VzdG9tIGxheW91dF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvYmxvYi9IRUFEL2RvY3MvY3VzdG9taXphdGlvbi9jdXN0b20tbGF5b3V0Lm1kKQoKIyMjIyBEZXZlbG9wbWVudAotIFtTZXR0aW5nIHVwXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS9ibG9iL0hFQUQvZG9jcy9kZXZlbG9wbWVudC9zZXR0aW5nLXVwLm1kKQotIFtTY3JpcHRzXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS9ibG9iL0hFQUQvZG9jcy9kZXZlbG9wbWVudC9zY3JpcHRzLm1kKQoKIyMjIyBDb250cmlidXRpbmcKLSBbQ29udHJpYnV0aW5nXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvLmdpdGh1Yi9ibG9iL0hFQUQvQ09OVFJJQlVUSU5HLm1kKQoKIyMjIyMgSW50ZWdyYXRpb24gVGVzdHMKCllvdSB3aWxsIG5lZWQgSkRLIG9mIHZlcnNpb24gNyBvciBoaWdoZXIgYXMgaW5zdHJ1Y3RlZCBoZXJlCmh0dHBzOi8vbmlnaHR3YXRjaGpzLm9yZy9ndWlkZS9nZXR0aW5nLXN0YXJ0ZWQvaW5zdGFsbGF0aW9uLmh0bWwjaW5zdGFsbC1zZWxlbml1bS1zZXJ2ZXIKCkludGVncmF0aW9uIHRlc3RzIGNhbiBiZSBydW4gbG9jYWxseSB3aXRoIGBucG0gcnVuIGUyZWAgLSBiZSBzdXJlIHlvdSBhcmVuJ3QgcnVubmluZyBhIGRldiBzZXJ2ZXIgd2hlbiB0ZXN0aW5nIQoKIyMjIEJyb3dzZXIgc3VwcG9ydApTd2FnZ2VyIFVJIHdvcmtzIGluIHRoZSBsYXRlc3QgdmVyc2lvbnMgb2YgQ2hyb21lLCBTYWZhcmksIEZpcmVmb3gsIGFuZCBFZGdlLgoKIyMjIEtub3duIElzc3VlcwoKVG8gaGVscCB3aXRoIHRoZSBtaWdyYXRpb24sIGhlcmUgYXJlIHRoZSBjdXJyZW50bHkga25vd24gaXNzdWVzIHdpdGggMy5YLiBUaGlzIGxpc3Qgd2lsbCB1cGRhdGUgcmVndWxhcmx5LCBhbmQgd2lsbCBub3QgaW5jbHVkZSBmZWF0dXJlcyB0aGF0IHdlcmUgbm90IGltcGxlbWVudGVkIGluIHByZXZpb3VzIHZlcnNpb25zLgoKLSBPbmx5IHBhcnQgb2YgdGhlIHBhcmFtZXRlcnMgcHJldmlvdXNseSBzdXBwb3J0ZWQgYXJlIGF2YWlsYWJsZS4KLSBUaGUgSlNPTiBGb3JtIEVkaXRvciBpcyBub3QgaW1wbGVtZW50ZWQuCi0gU3VwcG9ydCBmb3IgYGNvbGxlY3Rpb25Gb3JtYXRgIGlzIHBhcnRpYWwuCi0gbDEwbiAodHJhbnNsYXRpb25zKSBpcyBub3QgaW1wbGVtZW50ZWQuCi0gUmVsYXRpdmUgcGF0aCBzdXBwb3J0IGZvciBleHRlcm5hbCBmaWxlcyBpcyBub3QgaW1wbGVtZW50ZWQuCgojIyBTZWN1cml0eSBjb250YWN0CgpQbGVhc2UgZGlzY2xvc2UgYW55IHNlY3VyaXR5LXJlbGF0ZWQgaXNzdWVzIG9yIHZ1bG5lcmFiaWxpdGllcyBieSBlbWFpbGluZyBbc2VjdXJpdHlAc3dhZ2dlci5pb10obWFpbHRvOnNlY3VyaXR5QHN3YWdnZXIuaW8pLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBwdWJsaWMgaXNzdWUgdHJhY2tlci4KCiMjIExpY2Vuc2UKClN3YWdnZXJVSSBpcyBsaWNlbnNlZCB1bmRlciBbQXBhY2hlIDIuMCBsaWNlbnNlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS9ibG9iL21hc3Rlci9MSUNFTlNFKS4KU3dhZ2dlclVJIGNvbWVzIHdpdGggYW4gZXhwbGljaXQgW05PVElDRV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvYmxvYi9tYXN0ZXIvTk9USUNFKSBmaWxlCmNvbnRhaW5pbmcgYWRkaXRpb25hbCBsZWdhbCBub3RpY2VzIGFuZCBpbmZvcm1hdGlvbi4K readmeEtag: '"80bca1690eeec3be5fe4c5ca7f0bd4ce57a79b76"' readmeLastModified: Fri, 13 Jun 2025 07:18:33 GMT repositoryId: 2055965 description: >- 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: '2026-02-05T06:37:24Z' language: JavaScript archived: false stars: 28607 watchers: 626 forks: 9256 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 repoEtag: '"d30d31bdf1bdf50bb031210c7904e3e3ff74f8a56282441ade7cd5185ef73b23"' repoLastModified: Thu, 05 Feb 2026 06:37:24 GMT foundInMaster: true name: swagger-ui homepage: https://github.com/swagger-api/swagger-UI language: JavaScript source_description: Web-Based interface for visualizing and testing OpenAPI\Swagger definitions category: - User Interfaces - Code Generators id: ae625180381304ae800725a36dde6320 v3_1: true - source: - openapi3 tags - openapi31 tags name: Redoc homepage: https://github.com/Redocly/redoc language: JavaScript source_description: >- A React-based renderer with deep support for OAS v2 and v3 and zero dev-dependency category: - User Interfaces - Parsers repository: https://github.com/redocly/redoc v3: true repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICA8aW1nIGFsdD0iUmVkb2MgbG9nbyIgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vUmVkb2NseS9yZWRvYy9tYWluLy9kb2NzL2ltYWdlcy9yZWRvYy5wbmciIHdpZHRoPSI0MDBweCIgLz4KCiMgR2VuZXJhdGUgYmVhdXRpZnVsIEFQSSBkb2N1bWVudGF0aW9uIGZyb20gT3BlbkFQSQoKICBbIVtucG1dKGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9yZWRvYy5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9yZWRvYykgWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9yZWRvYy5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvYy9ibG9iL21haW4vTElDRU5TRSkKCiAgWyFbYnVuZGxlIHNpemVdKGh0dHA6Ly9pbWcuYmFkZ2VzaXplLmlvL2h0dHBzOi8vY2RuLnJlZG9jLmx5L3JlZG9jL2xhdGVzdC9idW5kbGVzL3JlZG9jLnN0YW5kYWxvbmUuanM/Y29tcHJlc3Npb249Z3ppcCZtYXg9MzAwMDAwKV0oaHR0cHM6Ly9jZG4ucmVkb2MubHkvcmVkb2MvbGF0ZXN0L2J1bmRsZXMvcmVkb2Muc3RhbmRhbG9uZS5qcykgWyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kbS9yZWRvYy5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9yZWRvYykgWyFbanNEZWxpdnIgc3RhdHVzXShodHRwczovL2RhdGEuanNkZWxpdnIuY29tL3YxL3BhY2thZ2UvbnBtL3JlZG9jL2JhZGdlKV0oaHR0cHM6Ly93d3cuanNkZWxpdnIuY29tL3BhY2thZ2UvbnBtL3JlZG9jKQo8L2Rpdj4KCgojIyBBYm91dCBSZWRvYwoKUmVkb2MgaXMgYW4gb3BlbiBzb3VyY2UgdG9vbCBmb3IgZ2VuZXJhdGluZyBkb2N1bWVudGF0aW9uIGZyb20gT3BlbkFQSSAoZm9ybWVybHkgU3dhZ2dlcikgZGVmaW5pdGlvbnMuCgpCeSBkZWZhdWx0IFJlZG9jIG9mZmVycyBhIHRocmVlLXBhbmVsLCByZXNwb25zaXZlIGxheW91dDoKCi0gVGhlIGxlZnQgcGFuZWwgY29udGFpbnMgYSBzZWFyY2ggYmFyIGFuZCBuYXZpZ2F0aW9uIG1lbnUuCi0gVGhlIGNlbnRyYWwgcGFuZWwgY29udGFpbnMgdGhlIGRvY3VtZW50YXRpb24uCi0gVGhlIHJpZ2h0IHBhbmVsIGNvbnRhaW5zIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGV4YW1wbGVzLgoKIVtSZWRvYyBkZW1vXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vUmVkb2NseS9yZWRvYy9tYWluL2RlbW8vcmVkb2MtZGVtby5wbmcpCgojIyBMaXZlIGRlbW8KCklmIHlvdSB3YW50IHRvIHNlZSBob3cgUmVkb2MgcmVuZGVycyB5b3VyIE9wZW5BUEkgZGVmaW5pdGlvbiwKeW91IGNhbiB0cnkgaXQgb3V0IG9ubGluZSBhdCBodHRwczovL3JlZG9jbHkuZ2l0aHViLmlvL3JlZG9jLy4KCkEgdmVyc2lvbiBvZiB0aGUgU3dhZ2dlciBQZXRzdG9yZSBBUEkgaXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuClRvIHRlc3QgaXQgd2l0aCB5b3VyIG93biBPcGVuQVBJIGRlZmluaXRpb24sCmVudGVyIHRoZSBVUkwgZm9yIHlvdXIgZGVmaW5pdGlvbiBhbmQgc2VsZWN0ICoqVFJZIElUKiouCgojIyBSZWRvYyBmZWF0dXJlcwoKLSBSZXNwb25zaXZlIHRocmVlLXBhbmVsIGRlc2lnbiB3aXRoIG1lbnUvc2Nyb2xsaW5nIHN5bmNocm9uaXphdGlvbgotIFN1cHBvcnQgZm9yIE9wZW5BUEkgMy4xLCBPcGVuQVBJIDMuMCwgYW5kIFN3YWdnZXIgMi4wCi0gQWJpbGl0eSB0byBpbnRlZ3JhdGUgeW91ciBBUEkgaW50cm9kdWN0aW9uIGludG8gdGhlIHNpZGUgbWVudQotIEhpZ2gtbGV2ZWwgZ3JvdXBpbmcgaW4gc2lkZSBtZW51IHdpdGggdGhlIFtgeC10YWdHcm91cHNgXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvYXBpLXJlZmVyZW5jZS1kb2NzL3NwZWNpZmljYXRpb24tZXh0ZW5zaW9ucy94LXRhZy1ncm91cHMvKSBzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbgotIFtTaW1wbGUgaW50ZWdyYXRpb24gd2l0aCBgY3JlYXRlLXJlYWN0LWFwcGBdKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9yZWRvYy9xdWlja3N0YXJ0L3JlYWN0LykKLSBDb2RlIHNhbXBsZXMgc3VwcG9ydCAod2l0aCB2ZW5kb3IgZXh0ZW5zaW9uKSA8YnI+CiAgIVtjb2RlIHNhbXBsZXMgaW4gYWN0aW9uXShkb2NzL2ltYWdlcy9jb2RlLXNhbXBsZXMtZGVtby5naWYpCgojIyBVc2FnZQoKUmVkb2MgaXMgcHJvdmlkZWQgYXMgYSBDTEkgdG9vbCAoYWxzbyBkaXN0cmlidXRlZCBhcyBhIERvY2tlciBpbWFnZSksIEhUTUwgdGFnLCBhbmQgUmVhY3QgY29tcG9uZW50LgoKIyMjIEdlbmVyYXRlIGRvY3VtZW50YXRpb24gZnJvbSB0aGUgQ0xJCgpJZiB5b3UgaGF2ZSBOb2RlIGluc3RhbGxlZCwgcXVpY2tseSBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uIHVzaW5nIGBucHhgOgoKYGBgYmFzaApucHggQHJlZG9jbHkvY2xpIGJ1aWxkLWRvY3Mgb3BlbmFwaS55YW1sCmBgYAoKVGhlIHRvb2wgb3V0cHV0cyBieSBkZWZhdWx0IHRvIGEgZmlsZSBuYW1lZCBgcmVkb2Mtc3RhdGljLmh0bWxgIHRoYXQgeW91IGNhbiBvcGVuIGluIHlvdXIgYnJvd3Nlci4KCj4gW1JlZG9jbHkgQ0xJXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvY2x5LWNsaS8pIGRvZXMgbW9yZSB0aGFuIGRvY3M7IGNoZWNrIGl0IG91dCBhbmQgYWRkIGxpbnRpbmcsIGJ1bmRsaW5nLCBhbmQgbW9yZSB0byB5b3VyIEFQSSB3b3JrZmxvdy4KCiMjIyBBZGQgYW4gSFRNTCBlbGVtZW50IHRvIHRoZSBwYWdlCgpDcmVhdGUgYW4gSFRNTCBwYWdlLCBvciBlZGl0IGFuIGV4aXN0aW5nIG9uZSwgYW5kIGFkZCB0aGUgZm9sbG93aW5nIHdpdGhpbiB0aGUgYm9keSB0YWdzOgoKYGBgaHRtbAogICAgPHJlZG9jIHNwZWMtdXJsPSJodHRwOi8vcGV0c3RvcmUuc3dhZ2dlci5pby92Mi9zd2FnZ2VyLmpzb24iPjwvcmVkb2M+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4ucmVkb2MubHkvcmVkb2MvbGF0ZXN0L2J1bmRsZXMvcmVkb2Muc3RhbmRhbG9uZS5qcyI+IDwvc2NyaXB0PgpgYGAKCk9wZW4gdGhlIEhUTUwgZmlsZSBpbiB5b3VyIGJyb3dzZXIsIGFuZCB5b3VyIEFQSSBkb2N1bWVudGF0aW9uIGlzIHNob3duIG9uIHRoZSBwYWdlLgoKQWRkIHlvdXIgb3duIGBzcGVjLXVybGAgdG8gdGhlIGA8cmVkb2M+YCB0YWc7IHRoaXMgYXR0cmlidXRlIGNhbiBhbHNvIGJlIGEgbG9jYWwgZmlsZS4gVGhlIEphdmFTY3JpcHQgbGlicmFyeSBjYW4gYWxzbyBiZSBpbnN0YWxsZWQgbG9jYWxseSB1c2luZyBgbnBtYCBhbmQgc2VydmVkIGZyb20geW91ciBvd24gc2VydmVyLCBzZWUgdGhlIFtIVE1MIGRlcGxveW1lbnQgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL3JlZG9jL2RlcGxveW1lbnQvaHRtbC8pIGZvciBtb3JlIGRldGFpbHMuCgojIyMgTW9yZSB1c2FnZSBvcHRpb25zCgpDaGVjayBvdXQgdGhlIFtkZXBsb3ltZW50IGRvY3VtZW50YXRpb25dKC4vZG9jcy9kZXBsb3ltZW50L2ludHJvLm1kKSBmb3IgbW9yZSBvcHRpb25zLCBhbmQgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBmb3IgZWFjaC4KCiMjIFJlZG9jIHZzLiBSZWRvY2x5IEFQSSBSZWZlcmVuY2UKClJlZG9jIGlzIFJlZG9jbHkncyBjb21tdW5pdHktZWRpdGlvbiBwcm9kdWN0LiBMb29raW5nIGZvciBzb21ldGhpbmcgbW9yZT8KV2UgYWxzbyBvZmZlciBbaG9zdGVkIEFQSSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2FwaS1yZWdpc3RyeS9ndWlkZXMvYXBpLXJlZ2lzdHJ5LXF1aWNrc3RhcnQvKQp3aXRoIGFkZGl0aW9uYWwgZmVhdHVyZXMgaW5jbHVkaW5nOgoKKiBUcnktaXQgY29uc29sZQoqIEF1dG9tYXRlZCBjb2RlIHNhbXBsZXMKKiBQYWdpbmF0aW9uCiogRXh0cmEgdGhlbWUgb3B0aW9ucwoKIyMjIERvY3VtZW50YXRpb24gYW5kIHJlc291cmNlcwoKLSBbUmVmZXJlbmNlIGRvY3NdKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9hcGktcmVmZXJlbmNlLWRvY3MvZ2V0dGluZy1zdGFydGVkLykgLSB3ZSB0YWtlIGNhcmUgb2YgdGhlIGhvc3RpbmcKLSBbUmVkb2NdKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9yZWRvYy8pIC0gZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBvcGVuIHNvdXJjZSBwcm9qZWN0IChhbHNvIGluIHRoZSBgZG9jcy9gIGZvbGRlcikKLSBbQ29tbWFuZC1saW5lIGludGVyZmFjZSB0byBidW5kbGUgeW91ciBkb2NzIGludG8gYSB3ZWItcmVhZHkgSFRNTCBmaWxlXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL2NvbW1hbmRzL2J1aWxkLWRvY3MvKQotIEFQSSBsaW50aW5nLCBidW5kbGluZywgYW5kIG11Y2ggbW9yZSB3aXRoIG9wZW4gc291cmNlIFtSZWRvY2x5IENMSV0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2NsaSkKCiMjIFNob3djYXNlCgpBIHNhbXBsZSBvZiB0aGUgb3JnYW5pemF0aW9ucyB1c2luZyBSZWRvY2x5IHRvb2xzIGluIHRoZSB3aWxkOgoKLSBbUmViaWxseV0oaHR0cHM6Ly9hcGktcmVmZXJlbmNlLnJlYmlsbHkuY29tLykKLSBbRG9ja2VyIEVuZ2luZV0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL2FwaS92MS4yNS8pCi0gW1p1b3JhXShodHRwczovL3d3dy56dW9yYS5jb20vZGV2ZWxvcGVyL2FwaS1yZWZlcmVuY2UvKQotIFtEaXNjb3Vyc2VdKGh0dHA6Ly9kb2NzLmRpc2NvdXJzZS5vcmcpCi0gW0NvbW1ib3hdKGh0dHBzOi8vd3d3LmNvbW1ib3guaW8vYXBpLykKLSBbQVBJcy5ndXJ1XShodHRwczovL2FwaXMuZ3VydS9hcGktZG9jLykKLSBbQm94S25pZ2h0XShodHRwczovL3d3dy5kb2NzLmJveGtuaWdodC5jb20vKQotIFtRdWFkZXJubyBBUEldKGh0dHBzOi8vZGV2ZWxvcGVycy5xdWFkZXJuby5pby9hcGkpCgpfUHVsbCByZXF1ZXN0cyB0byBhZGQgeW91ciBvd24gQVBJIHBhZ2UgdG8gdGhlIGxpc3QgYXJlIHdlbGNvbWVfCgojIyBDb25maWd1cmF0aW9uCgpSZWRvYyBpcyBoaWdobHkgY29uZmlndXJhYmxlLCBzZWUgdGhlIFtjb25maWd1cmF0aW9uIGRvY3VtZW50YXRpb25dKGRvY3MvY29uZmlnLm1kKSBmb3IgZGV0YWlscy4KCiMjIyBPcGVuQVBJIHNwZWNpZmljYXRpb24gZXh0ZW5zaW9ucwpSZWRvYyB1c2VzIHRoZSBmb2xsb3dpbmcgW3NwZWNpZmljYXRpb24gZXh0ZW5zaW9uc10oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2FwaS1yZWZlcmVuY2UtZG9jcy9zcGVjLWV4dGVuc2lvbnMvKToKCiogW2B4LWxvZ29gXShkb2NzL3JlZG9jLXZlbmRvci1leHRlbnNpb25zLm1kI3gtbG9nbykgLSBpcyB1c2VkIHRvIHNwZWNpZnkgQVBJIGxvZ28KKiBbYHgtdHJhaXRUYWdgXShkb2NzL3JlZG9jLXZlbmRvci1leHRlbnNpb25zLm1kI3gtdHJhaXRUYWcpIC0gdXNlZnVsIGZvciB0YWdzIHRoYXQgcmVmZXIgdG8gbm9uLW5hdmlnYXRpb24gcHJvcGVydGllcyBsaWtlIFBhZ2luYXRpb24sIFJhdGUtTGltaXRzLCBldGMKKiBbYHgtY29kZVNhbXBsZXNgXShkb2NzL3JlZG9jLXZlbmRvci1leHRlbnNpb25zLm1kI3gtY29kZVNhbXBsZXMpIC0gc3BlY2lmeSBvcGVyYXRpb24gY29kZSBzYW1wbGVzCiogW2B4LWJhZGdlc2BdKGRvY3MvcmVkb2MtdmVuZG9yLWV4dGVuc2lvbnMubWQjeC1iYWRnZXMpIC0gc3BlY2lmeSBvcGVyYXRpb24gYmFkZ2VzCiogW2B4LWV4YW1wbGVzYF0oZG9jcy9yZWRvYy12ZW5kb3ItZXh0ZW5zaW9ucy5tZCN4LWV4YW1wbGVzKSAtIHNwZWNpZnkgSlNPTiBleGFtcGxlIGZvciByZXF1ZXN0cwoqIFtgeC1udWxsYWJsZWBdKGRvY3MvcmVkb2MtdmVuZG9yLWV4dGVuc2lvbnMubWQjeC1udWxsYWJsZSkgLSBtYXJrIHNjaGVtYSBwYXJhbSBhcyBhIG51bGxhYmxlCiogW2B4LWRpc3BsYXlOYW1lYF0oZG9jcy9yZWRvYy12ZW5kb3ItZXh0ZW5zaW9ucy5tZCN4LWRpc3BsYXluYW1lKSAtIHNwZWNpZnkgaHVtYW4tZnJpZW5kbHkgbmFtZXMgZm9yIHRoZSBtZW51IGNhdGVnb3JpZXMKKiBbYHgtdGFnR3JvdXBzYF0oZG9jcy9yZWRvYy12ZW5kb3ItZXh0ZW5zaW9ucy5tZCN4LXRhZ0dyb3VwcykgLSBncm91cCB0YWdzIGJ5IGNhdGVnb3JpZXMgaW4gdGhlIHNpZGUgbWVudQoqIFtgeC1zZXJ2ZXJzYF0oZG9jcy9yZWRvYy12ZW5kb3ItZXh0ZW5zaW9ucy5tZCN4LXNlcnZlcnMpIC0gYWJpbGl0eSB0byBzcGVjaWZ5IGRpZmZlcmVudCBzZXJ2ZXJzIGZvciBBUEkgKGJhY2twb3J0ZWQgZnJvbSBPcGVuQVBJIDMuMCkKKiBbYHgtYWRkaXRpb25hbFByb3BlcnRpZXNOYW1lYF0oZG9jcy9yZWRvYy12ZW5kb3ItZXh0ZW5zaW9ucy5tZCN4LWFkZGl0aW9uYWxQcm9wZXJ0aWVzTmFtZSkgLSBhYmlsaXR5IHRvIHN1cHBseSBhIGRlc2NyaXB0aXZlIG5hbWUgZm9yIHRoZSBhZGRpdGlvbmFsIHByb3BlcnR5IGtleXMKKiBbYHgtc3VtbWFyeWBdKGRvY3MvcmVkb2MtdmVuZG9yLWV4dGVuc2lvbnMubWQjeC1zdW1tYXJ5KSAtIGZvciBSZXNwb25zZSBvYmplY3QsIHVzZSBhcyB0aGUgcmVzcG9uc2UgYnV0dG9uIHRleHQsIHdpdGggZGVzY3JpcHRpb24gcmVuZGVyZWQgdW5kZXIgdGhlIGJ1dHRvbgoqIFtgeC1leHBsaWNpdE1hcHBpbmdPbmx5YF0oZG9jcy9yZWRvYy12ZW5kb3ItZXh0ZW5zaW9ucy5tZCN4LWV4cGxpY2l0TWFwcGluZ09ubHkpIC0gaW4gU2NoZW1hcywgZGlzcGxheSBhIG1vcmUgZGVzY3JpcHRpdmUgcHJvcGVydHkgbmFtZSBpbiBvYmplY3RzIHdpdGggYWRkaXRpb25hbFByb3BlcnRpZXMgd2hlbiB2aWV3aW5nIHRoZSBwcm9wZXJ0eSBsaXN0IHdpdGggYW4gb2JqZWN0CgojIyBSZWxlYXNlcwoKKipUaGUgUkVBRE1FIGZvciB0aGUgYDEueGAgdmVyc2lvbiBpcyBvbiB0aGUgW3YxLnhdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jL3RyZWUvdjEueCkgYnJhbmNoLioqCgpBbGwgdGhlIDIueCByZWxlYXNlcyBhcmUgZGVwbG95ZWQgdG8gbnBtIGFuZCBjYW4gYmUgdXNlZCB3aXRoIFJlZG9jbHktY2RuOgotIHBhcnRpY3VsYXIgcmVsZWFzZSwgZm9yIGV4YW1wbGUsIGB2Mi4wLjBgOiBodHRwczovL2Nkbi5yZWRvYy5seS9yZWRvYy92Mi4wLjAvYnVuZGxlcy9yZWRvYy5zdGFuZGFsb25lLmpzCi0gYGxhdGVzdGAgcmVsZWFzZTogaHR0cHM6Ly9jZG4ucmVkb2MubHkvcmVkb2MvbGF0ZXN0L2J1bmRsZXMvcmVkb2Muc3RhbmRhbG9uZS5qcwoKQWRkaXRpb25hbGx5LCBhbGwgdGhlIDEueCByZWxlYXNlcyBhcmUgaG9zdGVkIG9uIG91ciBHaXRIdWIgUGFnZXMtYmFzZWQgQ0ROICoqKGRlcHJlY2F0ZWQpKio6Ci0gcGFydGljdWxhciByZWxlYXNlLCBmb3IgZXhhbXBsZSBgdjEuMi4wYDogaHR0cHM6Ly9yZWJpbGx5LmdpdGh1Yi5pby9SZURvYy9yZWxlYXNlcy92MS4yLjAvcmVkb2MubWluLmpzCi0gYHYxLngueGAgcmVsZWFzZTogaHR0cHM6Ly9yZWJpbGx5LmdpdGh1Yi5pby9SZURvYy9yZWxlYXNlcy92MS54LngvcmVkb2MubWluLmpzCi0gYGxhdGVzdGAgcmVsZWFzZTogaHR0cHM6Ly9yZWJpbGx5LmdpdGh1Yi5pby9SZURvYy9yZWxlYXNlcy9sYXRlc3QvcmVkb2MubWluLmpzIC0gcG9pbnRzIHRvIGxhdGVzdCAxLngueCByZWxlYXNlIHNpbmNlIDIueCByZWxlYXNlcyBhcmUgbm90IGhvc3RlZCBvbiB0aGlzIENETiBidXQgb24gdW5wa2cuCgoKIyMgRGV2ZWxvcG1lbnQKc2VlIFtDT05UUklCVVRJTkcubWRdKC5naXRodWIvQ09OVFJJQlVUSU5HLm1kKQo= readmeEtag: '"cb79ec89da4372119bc45d6ca47222a7458168f4"' readmeLastModified: Thu, 30 Jan 2025 12:23:07 GMT repositoryId: 45250726 description: 📘 OpenAPI/Swagger-generated API Reference Documentation created: '2015-10-30T12:53:02Z' updated: '2026-02-06T02:08:40Z' language: TypeScript archived: false stars: 25471 watchers: 295 forks: 2379 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT repoEtag: '"4138d7edf9238b8142544691e7c435f9ca1ad9293b21d75f82a76a580e7c29fa"' repoLastModified: Fri, 06 Feb 2026 02:08:40 GMT foundInMaster: true v3_1: true id: 2725d6db6977c1dd12ceaf9701787e07 oldLocations: - https://github.com/rebilly/redoc/ - source: openapi3 tags repository: https://github.com/swagger-api/swagger-core v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIENvcmUgPGltZyBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLmlvL3dvcmRwcmVzcy9pbWFnZXMvYXNzZXRzL1NXLWxvZ28tY2xyLnBuZyIgaGVpZ2h0PSI1MCIgYWxpZ249InJpZ2h0Ij4KCioqTk9URToqKiBJZiB5b3UncmUgbG9va2luZyBmb3IgU3dhZ2dlciBDb3JlIDEuNS5YIGFuZCBPcGVuQVBJIDIuMCwgcGxlYXNlIHJlZmVyIHRvIFsxLjUgYnJhbmNoXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvMS41KS4KCioqTk9URToqKiBTaW5jZSB2ZXJzaW9uIDIuMS43LCBTd2FnZ2VyIENvcmUgYWxzbyBzdXBwb3J0cyB0aGUgSmFrYXJ0YSBuYW1lc3BhY2UuIFRoZXJlIGFyZSBhIHBhcmFsbGVsIHNldCBvZiBhcnRpZmFjdHMgd2l0aCB0aGUgYC1qYWthcnRhYCBzdWZmaXgsIHByb3ZpZGluZyB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IGFzIHRoZSB1bnN1ZmZpeGVkIChpLmUuOiBgamF2YXhgKSBhcnRpZmFjdHMuClBsZWFzZSBzZWUgdGhlIFtXaWtpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3dpa2kvU3dhZ2dlci0yLlgtLS1HZXR0aW5nLXN0YXJ0ZWQpIGZvciBtb3JlIGRldGFpbHMuCgoqKk5PVEU6KiogU2luY2UgdmVyc2lvbiAyLjIuMCBTd2FnZ2VyIENvcmUgc3VwcG9ydHMgT3BlbkFQSSAzLjE7IHNlZSBbdGhpcyBwYWdlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3dpa2kvU3dhZ2dlci0yLlgtLS1PcGVuQVBJLTMuMSkgZm9yIGRldGFpbHMKCiFbQnVpbGQgVGVzdCBEZXBsb3ldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvd29ya2Zsb3dzL0J1aWxkJTIwVGVzdCUyMERlcGxveSUyMG1hc3Rlci9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcikKWyFbTWF2ZW4gQ2VudHJhbF0oaHR0cHM6Ly9tYXZlbi1iYWRnZXMuaGVyb2t1YXBwLmNvbS9tYXZlbi1jZW50cmFsL2lvLnN3YWdnZXIuY29yZS52My9zd2FnZ2VyLXByb2plY3QvYmFkZ2Uuc3ZnP3N0eWxlPXBsYXN0aWMpXShodHRwczovL21hdmVuLWJhZGdlcy5oZXJva3VhcHAuY29tL21hdmVuLWNlbnRyYWwvaW8uc3dhZ2dlci5jb3JlLnYzL3N3YWdnZXItcHJvamVjdCkKClN3YWdnZXIgQ29yZSBpcyBhIEphdmEgaW1wbGVtZW50YXRpb24gb2YgdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbi4gQ3VycmVudCB2ZXJzaW9uIHN1cHBvcnRzICpKQVgtUlMyKiAoYGphdmF4YCBhbmQgYGpha2FydGFgIG5hbWVzcGFjZXMpLgoKIyMgR2V0IHN0YXJ0ZWQgd2l0aCBTd2FnZ2VyIENvcmUhClNlZSB0aGUgZ3VpZGUgb24gW2dldHRpbmcgc3RhcnRlZCB3aXRoIFN3YWdnZXIgQ29yZV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS93aWtpL1N3YWdnZXItMi5YLS0tR2V0dGluZy1zdGFydGVkKSB0byBnZXQgc3RhcnRlZCB3aXRoIGFkZGluZyBTd2FnZ2VyIHRvIHlvdXIgQVBJLgoKIyMgU2VlIHRoZSBXaWtpIQpUaGUgW2dpdGh1YiB3aWtpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3dpa2kpIGNvbnRhaW5zIGRvY3VtZW50YXRpb24sIHNhbXBsZXMsIGNvbnRyaWJ1dGlvbnMsIGV0Yy4gU3RhcnQgdGhlcmUuCgojIyBDb21wYXRpYmlsaXR5ClRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gaGFzIHVuZGVyZ29uZSBzZXZlcmFsIHJldmlzaW9ucyBzaW5jZSBpbml0aWFsIGNyZWF0aW9uIGluIDIwMTAuICBUaGUgU3dhZ2dlciBDb3JlIHByb2plY3QgaGFzIHRoZSBmb2xsb3dpbmcgY29tcGF0aWJpbGl0aWVzIHdpdGggdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbjoKClN3YWdnZXIgY29yZSBWZXJzaW9uICAgICAgfCBSZWxlYXNlIERhdGUgfCBPcGVuQVBJIFNwZWMgY29tcGF0aWJpbGl0eSB8IE5vdGVzIHwgU3RhdHVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tIHwgLS0tLQoyLjIuNDIgKCoqY3VycmVudCBzdGFibGUqKil8IDIwMjYtMDEtMTkgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuNDJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjQyKSB8IFN1cHBvcnRlZAoyLjIuNDEgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMTEtMjQgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuNDFdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjQxKSB8IFN1cHBvcnRlZAoyLjIuNDAgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMTAtMjggICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuNDBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjQwKSB8IFN1cHBvcnRlZAoyLjIuMzkgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMTAtMTMgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjM5KSB8IFN1cHBvcnRlZAoyLjIuMzggICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDktMjkgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzhdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjM4KSB8IFN1cHBvcnRlZAoyLjIuMzcgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDktMTYgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzddKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjM3KSB8IFN1cHBvcnRlZAoyLjIuMzYgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDgtMTggICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjM2KSB8IFN1cHBvcnRlZAoyLjIuMzUgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDctMzEgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjM1KSB8IFN1cHBvcnRlZAoyLjIuMzQgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDYtMjAgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjM0KSB8IFN1cHBvcnRlZAoyLjIuMzMgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDYtMTIgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjMzKSB8IFN1cHBvcnRlZAoyLjIuMzIgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDUtMTQgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjMyKSB8IFN1cHBvcnRlZAoyLjIuMzEgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDUtMTMgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzFdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjMxKSB8IFN1cHBvcnRlZAoyLjIuMzAgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDQtMDcgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjMwKSB8IFN1cHBvcnRlZAoyLjIuMjkgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDMtMTAgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjI5KSB8IFN1cHBvcnRlZAoyLjIuMjggICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDEtMTYgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjhdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjI4KSB8IFN1cHBvcnRlZAoyLjIuMjcgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMTItMTEgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjddKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjI3KSB8IFN1cHBvcnRlZAoyLjIuMjYgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMTEtMTggICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjI2KSB8IFN1cHBvcnRlZAoyLjIuMjUgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMTAtMDIgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjI1KSB8IFN1cHBvcnRlZAoyLjIuMjQgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMDktMjMgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjI0KSB8IFN1cHBvcnRlZAoyLjIuMjMgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMDgtMjggICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjIzKSB8IFN1cHBvcnRlZAoyLjIuMjIgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMDUtMTUgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjIyKSB8IFN1cHBvcnRlZAoyLjIuMjEgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMDMtMjAgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjIxKSB8IFN1cHBvcnRlZAoyLjIuMjAgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMTItMTkgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjIwKSB8IFN1cHBvcnRlZAoyLjIuMTkgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMTEtMTAgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjE5KSB8IFN1cHBvcnRlZAoyLjIuMTggICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMTAtMjUgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMThdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjE4KSB8IFN1cHBvcnRlZAoyLjIuMTcgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMTAtMTIgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTddKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjE3KSB8IFN1cHBvcnRlZAoyLjIuMTYgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDktMTggICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjE2KSB8IFN1cHBvcnRlZAoyLjIuMTUgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDctMDggICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjE1KSB8IFN1cHBvcnRlZAoyLjIuMTQgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDYtMjYgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjE0KSB8IFN1cHBvcnRlZAoyLjIuMTMgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDYtMjQgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjEzKSB8IFN1cHBvcnRlZAoyLjIuMTIgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDYtMTMgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjEyKSB8IFN1cHBvcnRlZAoyLjIuMTEgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDYtMDEgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTFdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjExKSB8IFN1cHBvcnRlZAoyLjIuMTAgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDUtMTUgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjEwKSB8IFN1cHBvcnRlZAoyLjIuOSAgICAgICAgICAgICAgICAgICAgIHwgMjAyMy0wMy0yMCAgfCAzLnggICAgICAgICAgIHwgW3RhZyB2Mi4yLjldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4yLjggICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDEtMDYgIHwgMy54ICAgICAgICAgICB8IFt0YWcgdjIuMi44XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMi44KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMi43ICAgICAgICAgICAgICAgICAgICAgfCAyMDIyLTExLTE1ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjIuN10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjIuNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjIuNiAgICAgICAgICAgICAgICAgICAgIHwgMjAyMi0xMS0wMiAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4yLjZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4yLjUgICAgICAgICAgICAgICAgICAgICB8IDIwMjItMTEtMDIgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMi41XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMi41KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMi40ICAgICAgICAgICAgICAgICAgICAgfCAyMDIyLTEwLTE2ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjIuNF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjIuNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjIuMyAgICAgICAgICAgICAgICAgICAgIHwgMjAyMi0wOS0yNyAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4yLjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4yLjIgICAgICAgICAgICAgICAgICAgICB8IDIwMjItMDctMjAgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMi4yXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMi4yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMi4xICAgICAgICAgICAgICAgICAgICAgfCAyMDIyLTA2LTE1ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjIuMV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjIuMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjIuMCAgICAgICAgICAgICAgICAgICAgIHwgMjAyMi0wNC0wNCAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4yLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4xLjEzICAgICAgICAgICAgICAgICAgICAgfCAyMDIyLTAyLTA3ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjEuMTNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4xLjEzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjEuMTIgICAgICAgICAgICAgICAgICAgICB8IDIwMjEtMTItMjMgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMS4xMl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjEuMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMS4xMSAgICAgICAgICAgICAgICAgICAgIHwgMjAyMS0wOS0yOSAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4xLjExXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMS4xMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4xLjEwICAgICAgICAgICAgICAgICAgICAgfCAyMDIxLTA2LTI4ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjEuMTBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4xLjEwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjEuOSAgICAgICAgICAgICAgICAgICAgIHwgMjAyMS0wNC0yMCAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4xLjldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4xLjkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4xLjggICAgICAgICAgICAgICAgICAgICB8IDIwMjEtMDQtMTggIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMS44XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMS44KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMS43ICAgICAgICAgICAgICAgICAgICAgfCAyMDIxLTAyLTE4ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjEuN10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjEuNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjEuNiAgICAgICAgICAgICAgICAgICAgIHwgMjAyMC0xMi0wNCAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4xLjZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4xLjYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4xLjUgICAgICAgICAgICAgICAgICAgICB8IDIwMjAtMTAtMDEgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMS41XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMS41KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMS40ICAgICAgICAgICAgICAgICAgICAgfCAyMDIwLTA3LTI0ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjEuNF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjEuNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjEuMyAgICAgICAgICAgICAgICAgICAgIHwgMjAyMC0wNi0yNyAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4xLjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4xLjMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4xLjIgICAgICAgICAgICAgICAgICAgICB8IDIwMjAtMDQtMDEgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMS4yXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMS4yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMS4xICAgICAgICAgICAgICAgICAgICAgfCAyMDIwLTAxLTAyICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjEuMV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjEuMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjEuMCAgICAgICAgICAgICAgICAgICAgIHwgMjAxOS0xMS0xNiAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4xLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4xLjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4wLjEwICAgICAgICAgICAgICAgICAgICB8IDIwMTktMTAtMTEgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMC4xMF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjAuMTApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMC45ICAgICAgICAgICAgICAgICAgICAgfCAyMDE5LTA4LTIyICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjAuOV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjAuOSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjAuOCAgICAgICAgICAgICAgICAgICAgIHwgMjAxOS0wNC0yNCAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4wLjhdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4wLjgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4wLjcgICAgICAgICAgICAgICAgICAgICB8IDIwMTktMDItMTggIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMC43XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMC43KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMC42ICAgICAgICAgICAgICAgICAgICAgfCAyMDE4LTExLTI3ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjAuNl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjAuNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjAuNSAgICAgICAgICAgICAgICAgICAgIHwgMjAxOC0wOS0xOSAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4wLjVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4wLjUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4wLjQgICAgICAgICAgICAgICAgICAgICB8IDIwMTgtMDktMDUgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMC40XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMC40KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMC4zICAgICAgICAgICAgICAgICAgICAgfCAyMDE4LTA4LTA5ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjAuM10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjAuMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjYuMTQgKCoqY3VycmVudCBzdGFibGUqKil8IDIwMjQtMDMtMTkgICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjYuMTRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS42LjE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjYuMTMgICAgICAgICAgICAgICAgICAgIHwgMjAyNC0wMS0yNiAgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNi4xM10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjYuMTMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNi4xMiAgICAgICAgICAgICAgICAgICAgfCAyMDIzLTEwLTE0ICAgfCAyLjAgICAgICAgICAgIHwgW3RhZyB2MS42LjEyXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjEuNi4xMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMS42LjExICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDUtMTUgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNi4xMV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjYuMTEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNi4xMCAgICAgICAgICAgICAgICAgICAgfCAyMDIzLTAzLTIxICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjYuMTBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS42LjEwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjYuOSAgICAgICAgICAgICAgICAgICAgIHwgMjAyMi0xMS0xNSAgfCAyLjAgICAgICAgICAgIHwgW3RhZyB2MS42LjldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS42LjkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMS42LjggICAgICAgICAgICAgICAgICAgICB8IDIwMjItMTAtMTYgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNi44XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjEuNi44KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNi43ICAgICAgICAgICAgICAgICAgICAgfCAyMDIyLTA5LTI3ICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjYuN10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjYuNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjYuNiAgICAgICAgICAgICAgICAgICAgIHwgMjAyMi0wNC0wNCAgfCAyLjAgICAgICAgICAgIHwgW3RhZyB2MS42LjZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS42LjYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMS42LjUgICAgICAgICAgICAgICAgICAgICB8IDIwMjItMDItMDcgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNi41XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjEuNi41KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNi40ICAgICAgICAgICAgICAgICAgICAgfCAyMDIxLTEyLTIzICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjYuNF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjYuNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjYuMyAgICAgICAgICAgICAgICAgICAgIHwgMjAyMS0wOS0yOSAgfCAyLjAgICAgICAgICAgIHwgW3RhZyB2MS42LjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS42LjMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMS42LjIgICAgICAgICAgICAgICAgICAgICB8IDIwMjAtMDctMDEgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNi4yXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjEuNi4yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNi4xICAgICAgICAgICAgICAgICAgICAgfCAyMDIwLTA0LTAxICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjYuMV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjYuMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjYuMCAgICAgICAgICAgICAgICAgICAgIHwgMjAxOS0xMS0xNiAgfCAyLjAgICAgICAgICAgIHwgW3RhZyB2MS42LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS42LjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMS41LjI0ICAgICAgICAgICAgICAgICAgICB8IDIwMTktMTAtMTEgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNS4yNF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjUuMjQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNS4yMyAgICAgICAgICAgICAgICAgICAgfCAyMDE5LTA4LTIyICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjUuMjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS41LjIzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjUuMjIgICAgICAgICAgICAgICAgICAgIHwgMjAxOS0wMi0xOCAgfCAyLjAgICAgICAgICAgIHwgW3RhZyB2MS41LjIyXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjEuNS4yMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMS41LjIxICAgICAgICAgICAgICAgICAgICB8IDIwMTgtMDgtMDkgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNS4yMV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjUuMjEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNS4yMCAgICAgICAgICAgICAgICAgICAgfCAyMDE4LTA1LTIzICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjUuMjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS41LjIwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjAuMiAgICAgICAgICAgICAgICAgICAgIHwgMjAxOC0wNS0yMyAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4wLjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4wLjIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4wLjEgICAgICAgICAgICAgICAgICAgICB8IDIwMTgtMDQtMTYgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMC4xXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMC4xKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNS4xOSAgICAgICAgICAgICAgICAgICAgfCAyMDE4LTA0LTE2ICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjUuMTldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS41LjE5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjAuMCAgICAgICAgICAgICAgICAgICAgIHwgMjAxOC0wMy0yMCAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4wLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4wLjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4wLjAtcmM0ICAgICAgICAgICAgICAgICB8IDIwMTgtMDEtMjIgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMC4wLXJjNF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjAuMC1yYzQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMC4wLXJjMyAgICAgICAgICAgICAgICAgfCAyMDE3LTExLTIxICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjAuMC1yYzNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4wLjAtcmMzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjAuMC1yYzIgICAgICAgICAgICAgICAgIHwgMjAxNy0wOS0yOSAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4wLjAtcmMyXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMC4wLXJjMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4wLjAtcmMxICAgICAgICAgICAgICAgICB8IDIwMTctMDgtMTcgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMC4wLXJjMV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjAuMC1yYzEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNS4xOCAgICAgICAgICAgICAgICAgICAgfCAyMDE4LTAxLTIyICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjUuMThdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS41LjE4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjUuMTcgICAgICAgICAgICAgICAgICAgIHwgMjAxNy0xMS0yMSAgfCAyLjAgICAgICAgICAgIHwgW3RhZyB2MS41LjE3XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjEuNS4xNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMS41LjE2ICAgICAgICAgICAgICAgICAgICB8IDIwMTctMDctMTUgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNS4xNl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjUuMTYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuMy4xMiAgICAgICAgICAgICAgICAgICAgfCAyMDE0LTEyLTIzICB8IDEuMiAgICAgICAgICAgfCBbdGFnIHYxLjMuMTJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS4zLjEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjIuNCAgICAgICAgICAgICAgICAgICAgIHwgMjAxMy0wNi0xOSAgfCAxLjEgICAgICAgICAgIHwgW3RhZyBzd2FnZ2VyLXByb2plY3RfMi4xMC4wLTEuMi40XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvc3dhZ2dlci1wcm9qZWN0XzIuMTAuMC0xLjIuNCkgfCBEZXByZWNhdGVkCjEuMC4wICAgICAgICAgICAgICAgICAgICAgfCAyMDExLTEwLTE2ICB8IDEuMCAgICAgICAgICAgfCBbdGFnIHYxLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS4wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlcHJlY2F0ZWQKCgojIyMgQ2hhbmdlIEhpc3RvcnkKSWYgeW91J3JlIGludGVyZXN0ZWQgaW4gdGhlIGNoYW5nZSBoaXN0b3J5IG9mIHN3YWdnZXIgYW5kIHRoZSBTd2FnZ2VyIENvcmUgZnJhbWV3b3JrLCBzZWUgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvcmVsZWFzZXMpLgoKIyMjIFByZXJlcXVpc2l0ZXMKWW91IG5lZWQgdGhlIGZvbGxvd2luZyBpbnN0YWxsZWQgYW5kIGF2YWlsYWJsZSBpbiB5b3VyICRQQVRIOgoKKiBKYXZhIDExCiogQXBhY2hlIG1hdmVuIDMuMC40IG9yIGdyZWF0ZXIKKiBKYWNrc29uIDIuNC41IG9yIGdyZWF0ZXIKCgojIyMgVG8gYnVpbGQgZnJvbSBzb3VyY2UgKGN1cnJlbnRseSAyLjIuNDMtU05BUFNIT1QpCmBgYAojIGZpcnN0IHRpbWUgYnVpbGRpbmcgbG9jYWxseQptdm4gLU4KYGBgCgpTdWJzZXF1ZW50IGJ1aWxkczoKYGBgCm12biBpbnN0YWxsCmBgYAoKVGhpcyB3aWxsIGJ1aWxkIHRoZSBtb2R1bGVzLgoKT2YgY291cnNlIGlmIHlvdSBkb24ndCB3YW50IHRvIGJ1aWxkIGxvY2FsbHkgeW91IGNhbiBncmFiIGFydGlmYWN0cyBmcm9tIG1hdmVuIGNlbnRyYWw6CgpgaHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL2lvL3N3YWdnZXIvY29yZS9gCgojIyBTYW1wbGUgQXBwcwpUaGUgc2FtcGxlcyBoYXZlIG1vdmVkIHRvIFthIG5ldyByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1zYW1wbGVzL3RyZWUvMi4wKSBhbmQgY29udGFpbiB2YXJpb3VzIGludGVncmF0aW9ucyBhbmQgY29uZmlndXJhdGlvbnMuCgojIyBTZWN1cml0eSBjb250YWN0CgpQbGVhc2UgZGlzY2xvc2UgYW55IHNlY3VyaXR5LXJlbGF0ZWQgaXNzdWVzIG9yIHZ1bG5lcmFiaWxpdGllcyBieSBlbWFpbGluZyBbc2VjdXJpdHlAc3dhZ2dlci5pb10obWFpbHRvOnNlY3VyaXR5QHN3YWdnZXIuaW8pLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBwdWJsaWMgaXNzdWUgdHJhY2tlci4K readmeEtag: '"27cbc7c379b4a3e20ecccaaa8cddff40247bffe5"' readmeLastModified: Mon, 19 Jan 2026 14:58:21 GMT repositoryId: 2003641 description: >- Examples and server integrations for generating the Swagger API Specification, which enables easy access to your REST API created: '2011-07-05T23:44:11Z' updated: '2026-02-06T03:05:35Z' language: Java archived: false stars: 7516 watchers: 307 forks: 2249 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 repoEtag: '"2d6e76914a17c8cb9b177d2f09ecbdf7fcccb32aefc4c38e0d55c3fef7ddb502"' repoLastModified: Fri, 06 Feb 2026 03:05:35 GMT foundInMaster: true category: Code Generators id: 2093f5c5f56617123b73ae823791176d - source: openapi3 tags repository: https://github.com/mockoon/mockoon v3: true repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL21vY2tvb24uY29tIiBhbHQ9Im1vY2tvb24gbG9nbyI+CiAgICA8aW1nIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiBzcmM9Imh0dHBzOi8vbW9ja29vbi5jb20vaW1hZ2VzL2xvZ28tc3F1YXJlLWFwcC5wbmciPgogIDwvYT4KICA8YnI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9tb2Nrb29uLmNvbS8iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1dlYnNpdGUtR28tZ3JlZW4uc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmNvbG9yQj0xOTk3YzYiLz48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9tb2Nrb29uLmNvbS9uZXdzbGV0dGVyLyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTmV3c2xldHRlci1TdWJzY3JpYmUtZ3JlZW4uc3ZnP3N0eWxlPWZsYXQtc3F1YXJlIi8+PC9hPgogIDxicj4KICA8YnI+CiAgPGgxPk1vY2tvb246IGF3ZXNvbWUgQVBJIG1vY2tpbmc8L2gxPgo8L2Rpdj4KCk1vY2tvb24gaXMgdGhlIGVhc2llc3QgYW5kIHF1aWNrZXN0IHdheSB0byBkZXNpZ24gYW5kIHJ1biBtb2NrIEFQSXMuIE5vIHJlbW90ZSBkZXBsb3ltZW50LCBubyBhY2NvdW50IHJlcXVpcmVkLCBmcmVlIGFuZCBvcGVuLXNvdXJjZS4KCkl0IGNvbWJpbmVzIGEgW2Rlc2t0b3AgYXBwbGljYXRpb25dKGh0dHBzOi8vbW9ja29vbi5jb20vZG93bmxvYWQvKSB0byBkZXNpZ24gYW5kIHJ1biBtb2NrIHNlcnZlcnMgbG9jYWxseSwgYW5kIGEgW0NMSV0oaHR0cHM6Ly9tb2Nrb29uLmNvbS9jbGkvKSB0byBzZWxmLWhvc3QgeW91ciBmYWtlIEFQSXMuIEEgW2Nsb3VkXSgjc3Vic2NyaWJlLXRvLW1vY2tvb24tY2xvdWQpIGlzIGFsc28gYXZhaWxhYmxlIHRvIGNvbGxhYm9yYXRlIHdpdGggeW91ciB0ZWFtLCBrZWVwIHlvdXIgZGF0YSBpbiBzeW5jLCBhbmQgZGVwbG95IHlvdXIgbW9jayBBUElzLgoKQVBJIG1vY2tpbmcgaGVscHMgeW91IHNwZWVkIHVwIGRldmVsb3BtZW50IGFuZCB0aGlyZC1wYXJ0eSBBUEkgaW50ZWdyYXRpb24gYnkgcmVkdWNpbmcgZGVwZW5kZW5jeSBvbiBleHRlcm5hbCBzZXJ2aWNlcyBhbmQgdGhlaXIgbGltaXRhdGlvbnM6IHJhdGUgbGltaXRzLCBjb3N0cywgYXZhaWxhYmlsaXR5LCBldGMuCkl0IGFsc28gYWxsb3dzIHlvdSB0byB0ZXN0IHlvdXIgYXBwbGljYXRpb25zIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudCB3aXRoIHByZWRpY3RhYmxlIHJlc3BvbnNlcywgc3RhdHVzIGNvZGVzLCBhbmQgbGF0ZW5jaWVzLCBhbmQgZWFzaWx5IHNpbXVsYXRlIGVkZ2UgY2FzZXMgYW5kIGVycm9yIHNjZW5hcmlvcy4KRmluYWxseSwgeW91IGNhbiBvbmJvYXJkIG5ldyB0ZWFtIG1lbWJlcnMgZmFzdGVyIGJ5IHByb3ZpZGluZyB0aGVtIHdpdGggYSBjb25zaXN0ZW50IGFuZCByZWxpYWJsZSBlbnZpcm9ubWVudCB0byB0ZXN0IGFuZCBkZXZlbG9wIHRoZWlyIGFwcGxpY2F0aW9ucy4KCuKeoe+4jyBbRG93bmxvYWRdKGh0dHBzOi8vbW9ja29vbi5jb20vZG93bmxvYWQvKQoKPGRpdiBhbGlnbj0iY2VudGVyIj4KICA8aW1nIHdpZHRoPSI1MCUiIHNyYz0iaHR0cHM6Ly9tb2Nrb29uLmNvbS9pbWFnZXMvaGVyby1yZXBvLnBuZyI+CjwvZGl2PgoKIyMgRmVhdHVyZXMKCk1vY2tvb24gb2ZmZXJzIG1hbnkgZmVhdHVyZXM6CgotIFVubGltaXRlZCBudW1iZXIgb2YgbW9jayBsb2NhbCBzZXJ2ZXJzIGFuZCByb3V0ZXMKLSBDTEkgdG8gcnVuIHlvdXIgbW9jayBpbiBoZWFkbGVzcyBlbnZpcm9ubWVudHMsIENJLCBldGMuCi0gQ29tcGxldGUgY29udHJvbCBvbiByb3V0ZXMgZGVmaW5pdGlvbjogSFRUUCBtZXRob2RzIGFuZCBzdGF0dXNlcywgcmVnZXggcGF0aHMsIGZpbGUgc2VydmluZywgY3VzdG9tIGhlYWRlcnMsIGV0Yy4KLSBPcGVuQVBJIGNvbXBhdGliaWxpdHkKLSBSZWNvcmQvbG9ncyBvZiBhbGwgZW50ZXJpbmcgYW5kIGZvcndhcmRlZCByZXF1ZXN0cwotIEpTT04gdGVtcGxhdGluZwotIFByb3h5IGZvcndhcmRpbmcgbW9kZQotIEhUVFBTIHN1cHBvcnQKCllvdSBjYW4gY2hlY2sgdGhlIFtjb21wbGV0ZSBsaXN0XShodHRwczovL21vY2tvb24uY29tL2ZlYXR1cmVzLykgb24gdGhlIHdlYnNpdGUuCgojIyBEb3dubG9hZCB0aGUgZGVza3RvcCBhcHBsaWNhdGlvbgoKWW91IGNhbiBnZXQgTW9ja29vbiBkZXNrdG9wJ3MgW2xhdGVzdCByZWxlYXNlXShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi9tb2Nrb29uL3JlbGVhc2VzL2xhdGVzdCkgZGlyZWN0bHkgZnJvbSB0aGlzIHJlcG9zaXRvcnkgb3Igb24gdGhlIG9mZmljaWFsIFt3ZWJzaXRlXShodHRwczovL21vY2tvb24uY29tL2Rvd25sb2FkLykuIE1vY2tvb24gZGVza3RvcCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoOgoKTWFjT1M6CgotIFtfSG9tZWJyZXdfXShodHRwczovL2Zvcm11bGFlLmJyZXcuc2gvY2Fzay9tb2Nrb29uKTogYGJyZXcgaW5zdGFsbCAtLWNhc2sgbW9ja29vbmAuCgpXaW5kb3dzOgoKLSBfd2luZ2V0XzogYHdpbmdldCBpbnN0YWxsIG1vY2tvb25gLgotIFtfQ2hvY29sYXRleV9dKGh0dHBzOi8vY29tbXVuaXR5LmNob2NvbGF0ZXkub3JnL3BhY2thZ2VzL21vY2tvb24pOiBgY2hvY28gaW5zdGFsbCBtb2Nrb29uYC4KLSBbX1dpbmRvd3MgU3RvcmVfXShodHRwczovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL3AvbW9ja29vbi85cGs4ZG1zbjAwamopCgpMaW51eDoKCi0gW19TbmFwIHN0b3JlX10oaHR0cHM6Ly9zbmFwY3JhZnQuaW8vbW9ja29vbik6IGBzbmFwIGluc3RhbGwgbW9ja29vbmAuCi0gW19BVVJfXShodHRwczovL2F1ci5hcmNobGludXgub3JnL3BhY2thZ2VzL21vY2tvb24tYmluKTogYHlheSAtUyBtb2Nrb29uLWJpbmAuCgojIyBJbnN0YWxsIHRoZSBDTEkKCk1vY2tvb24gQ0xJIGlzIGF2YWlsYWJsZSBhcyBhbiBbTlBNIHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0Btb2Nrb29uL2NsaSkuIFBsZWFzZSBjaGVjayBvdXIgW2RlZGljYXRlZCBkb2N1bWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi9tb2Nrb29uL2Jsb2IvbWFpbi9wYWNrYWdlcy9jbGkvUkVBRE1FLm1kKSB0byBsZWFybiBob3cgdG8gaW5zdGFsbCBhbmQgdXNlIGl0LgoKIyMgVXNlIGluIGNsb3VkIGZ1bmN0aW9ucyBhbmQgc2VydmVybGVzcyBlbnZpcm9ubWVudHMKCk1vY2tvb24ncyBTZXJ2ZXJsZXNzIFtOUE0gcGFja2FnZV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQG1vY2tvb24vc2VydmVybGVzcykgcHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gcnVuIE1vY2tvb24ncyBtb2NrIEFQSXMgaW4gY2xvdWQgZnVuY3Rpb25zIGFuZCBzZXJ2ZXJsZXNzIGVudmlyb25tZW50czogQVdTIExhbWJkYSwgR0NQIEZ1bmN0aW9ucywgRmlyZWJhc2UgRnVuY3Rpb25zLCBldGMuCgpQbGVhc2UgY2hlY2sgb3VyIFtkZWRpY2F0ZWQgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vbW9ja29vbi9ibG9iL21haW4vcGFja2FnZXMvc2VydmVybGVzcy9SRUFETUUubWQpIHRvIGxlYXJuIGhvdyB0byB1c2UgaXQuCgojIyBTdXBwb3J0IHVzIQoKTW9ja29vbiBpcyBwcm91ZGx5ICoqaW5kZXBlbmRlbnQqKiBhbmQgKipvcGVuLXNvdXJjZSoqLCBtYWludGFpbmVkIHdpdGhvdXQgZXh0ZXJuYWwgZnVuZGluZy4gV2UgcmVseSBvbiBib3RoICoqc3BvbnNvcnNoaXBzKiogYW5kICoqTW9ja29vbiBDbG91ZCBzdWJzY3JpcHRpb25zKiogdG8ga2VlcCBpbXByb3ZpbmcgdGhlIHByb2plY3QgYW5kIGJ1aWxkaW5nIG5ldyBmZWF0dXJlcy4gQSAqKmJpZyB0aGFuayB5b3UqKiB0byB0aGUgY29tcGFuaWVzIGJlbG93IGZvciBzdXBwb3J0aW5nIG91ciB3b3JrIGFuZCBoZWxwaW5nIHVzIGdyb3cgKGFuZCBhbGwgdGhlIFtzcG9uc29yc10oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vbW9ja29vbi9ibG9iL21haW4vYmFja2Vycy5tZCkgd2hvIGhlbHBlZCB0aGlzIHByb2plY3Qgb3ZlciB0aW1lISk6CgojIyMgUGxhdGludW0KCjxkaXYgYWxpZ249ImNlbnRlciIgc3R5bGU9Im1hcmdpbi10b3A6MjBweDttYXJnaW4tYm90dG9tOjIwcHg7Ij4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5ibG9nLzIwMjMtMDQtMTItZ2l0aHViLWFjY2VsZXJhdG9yLW91ci1maXJzdC1jb2hvcnQtYW5kLXdoYXRzLW5leHQvIj4KICAgICAgPHBpY3R1cmU+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly9tb2Nrb29uLmNvbS9pbWFnZXMvc3BvbnNvcnMvbGlnaHQvZ2l0aHViLnBuZyI+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vbW9ja29vbi5jb20vaW1hZ2VzL3Nwb25zb3JzL2dpdGh1Yi5wbmciPgogICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9tb2Nrb29uLmNvbS9pbWFnZXMvc3BvbnNvcnMvbGlnaHQvZ2l0aHViLnBuZyIgYWx0PSJHaXRIdWIgbG9nbyIgLz4KICAgICAgPC9waWN0dXJlPgogIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKICA8YSBocmVmPSJodHRwczovL2xvY2FsYXp5LmNvbS9yZWdpc3Rlcj9yZWY9YTlDaURDNjFnT2FjLWF6TyI+CiAgICAgIDxwaWN0dXJlPgogICAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vbW9ja29vbi5jb20vaW1hZ2VzL3Nwb25zb3JzL2xpZ2h0L2xvY2FsYXp5LnBuZyI+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vbW9ja29vbi5jb20vaW1hZ2VzL3Nwb25zb3JzL2xvY2FsYXp5LnBuZyI+CiAgICAgIDxpbWcgc3JjPSJodHRwczovL21vY2tvb24uY29tL2ltYWdlcy9zcG9uc29ycy9saWdodC9sb2NhbGF6eS5wbmciIGFsdD0iTG9jYWxhenkgbG9nbyIgLz4KICAgICAgPC9waWN0dXJlPgogIDwvYT4KPC9kaXY+CgojIyMgR29sZAoKPGRpdiBhbGlnbj0iY2VudGVyIiBzdHlsZT0ibWFyZ2luLXRvcDoyMHB4O21hcmdpbi1ib3R0b206MjBweDsiPgogCiAgPGEgaHJlZj0iaHR0cHM6Ly93d3cudGVzdG11LmFpLyI+CiAgICAgIDxwaWN0dXJlPgogICAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vbW9ja29vbi5jb20vaW1hZ2VzL3Nwb25zb3JzL2xpZ2h0L3Rlc3RtdWFpLnBuZyI+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vbW9ja29vbi5jb20vaW1hZ2VzL3Nwb25zb3JzL3Rlc3RtdWFpLnBuZyI+CiAgICAgIDxpbWcgc3JjPSJodHRwczovL21vY2tvb24uY29tL2ltYWdlcy9zcG9uc29ycy9saWdodC90ZXN0bXVhaS5wbmciIGFsdD0iVGVzdE11IEFJIGxvZ28iIC8+CiAgICAgIDwvcGljdHVyZT4KICA8L2E+CjwvZGl2PgoKIyMjIFNpbHZlcgoKPGRpdiBhbGlnbj0iY2VudGVyIiBzdHlsZT0ibWFyZ2luLXRvcDoyMHB4O21hcmdpbi1ib3R0b206MjBweDsiPiAgCiAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZW1xeC5pby8iPiAgCiAgICAgIDxpbWcgc3JjPSJodHRwczovL21vY2tvb24uY29tL2ltYWdlcy9zcG9uc29ycy9lbXF4LnBuZyIgYWx0PSJlbXF4IGxvZ28iIC8+CiAgPC9hPgo8L2Rpdj4KCklmIHlvdSdkIGxpa2UgdG8gKipzdXBwb3J0IE1vY2tvb24qKiBhcyB3ZWxsLCB5b3UgY2FuICoqYmVjb21lIGEgc3BvbnNvcioqIG9yICoqc3Vic2NyaWJlIHRvIE1vY2tvb24gQ2xvdWQqKiwgZXZlcnkgY29udHJpYnV0aW9uIGhlbHBzIGtlZXAgdGhlIHByb2plY3QgYWxpdmUgYW5kIGV2b2x2aW5nLiBUaGFuayB5b3UhCgo8ZGl2IGFsaWduPSJjZW50ZXIiIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHg7bWFyZ2luLWJvdHRvbToyMHB4OyI+CjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9tb2Nrb29uIj48aW1nIHNyYz0iaHR0cHM6Ly9tb2Nrb29uLmNvbS9pbWFnZXMvc3BvbnNvci1idG4ucG5nPyIgd2lkdGg9IjI1MCIgYWx0PSJzcG9uc29yIGJ1dHRvbiIgLz48L2E+CjwvZGl2PgoKIyMgU3Vic2NyaWJlIHRvIE1vY2tvb24gQ2xvdWQKCldpdGggYWR2YW5jZWQgZmVhdHVyZXMgZm9yIHNvbG8gZGV2ZWxvcGVycyBhbmQgdGVhbXMsIE1vY2tvb24gQ2xvdWQgc3VwZXJjaGFyZ2VzIHlvdXIgQVBJIGRldmVsb3BtZW50OgoKLSDimIHvuI8gW2Nsb3VkIGRlcGxveW1lbnRzXShodHRwczovL21vY2tvb24uY29tL2Nsb3VkL2RvY3MvYXBpLW1vY2stY2xvdWQtZGVwbG95bWVudHMvKQotIPCflITvuI8gW2RhdGEgc3luY2hyb25pemF0aW9uIGFuZCByZWFsLXRpbWUgY29sbGFib3JhdGlvbl0oaHR0cHM6Ly9tb2Nrb29uLmNvbS9jbG91ZC9kb2NzL2RhdGEtc3luY2hyb25pemF0aW9uLXRlYW0tY29sbGFib3JhdGlvbi8pCi0g8J+kliBbQUkgcG93ZXJlZCBBUEkgbW9ja2luZ10oaHR0cHM6Ly9tb2Nrb29uLmNvbS9haS1wb3dlcmVkLWFwaS1tb2NraW5nLykKLSDwn5ODIEFjY2VzcyB0byBkb3plbnMgb2YgW3JlYWR5LXRvLXVzZSBKU09OIHRlbXBsYXRlc10oaHR0cHM6Ly9tb2Nrb29uLmNvbS90ZW1wbGF0ZXMvKS4KLSDwn5KsIFByaW9yaXR5IHN1cHBvcnQgYW5kIHRyYWluaW5nLgoKVXBncmFkZSB0b2RheSBhbmQgdGFrZSB5b3VyIEFQSSBkZXZlbG9wbWVudCB0byB0aGUgbmV4dCBsZXZlbC4KCjxkaXYgYWxpZ249ImNlbnRlciIgc3R5bGU9Im1hcmdpbi10b3A6MjBweDttYXJnaW4tYm90dG9tOjIwcHg7Ij4KPGEgaHJlZj0iaHR0cHM6Ly9tb2Nrb29uLmNvbS9jbG91ZC8iPjxpbWcgc3JjPSJodHRwczovL21vY2tvb24uY29tL2ltYWdlcy9jbG91ZC1idG4ucG5nPyIgd2lkdGg9IjI1MCIgYWx0PSJjbG91ZCBidXR0b24iIC8+PC9hPgo8L2Rpdj4KCiMjIE1vY2tvb24ncyBkb2N1bWVudGF0aW9uCgpZb3Ugd2lsbCBmaW5kIE1vY2tvb24ncyBbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9tb2Nrb29uLmNvbS9kb2NzL2xhdGVzdC9hYm91dC8pIG9uIHRoZSBvZmZpY2lhbCB3ZWJzaXRlLiBJdCBjb3ZlcnMgTW9ja29vbidzIG1vc3QgY29tcGxleCBmZWF0dXJlcy4gRmVlbCBmcmVlIHRvIGNvbnRyaWJ1dGUgb3IgYXNrIGZvciBuZXcgdG9waWNzIHRvIGJlIGNvdmVyZWQuCgojIyBDaGFuZ2Vsb2dzCgpZb3Ugd2lsbCBmaW5kIE1vY2tvb24gYXBwbGljYXRpb25zIFtjaGFuZ2Vsb2dzXShodHRwczovL21vY2tvb24uY29tL3JlbGVhc2VzLykgb24gdGhlIG9mZmljaWFsIHdlYnNpdGUuCgojIyBTdXBwb3J0L2ZlZWRiYWNrCgpZb3UgY2FuIGRpc2N1c3MgYWxsIHRoaW5ncyByZWxhdGVkIHRvIE1vY2tvb24gYW5kIGFzayBmb3IgaGVscCBvbiB0aGUgW29mZmljaWFsIGNvbW11bml0eV0oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vbW9ja29vbi9kaXNjdXNzaW9ucykuIEl0J3MgYWxzbyBhIGdvb2QgcGxhY2UgdG8gZGlzY3VzcyBidWdzIGFuZCBmZWF0dXJlIHJlcXVlc3RzIGJlZm9yZSBvcGVuaW5nIGFuIGlzc3VlIG9uIHRoaXMgcmVwb3NpdG9yeS4KCiMjIENvbnRyaWJ1dGluZwoKSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIGNvbnRyaWJ1dGluZyB0byBNb2Nrb29uLCBwbGVhc2UgdGFrZSBhIGxvb2sgYXQgdGhlIFtjb250cmlidXRpbmcgZ3VpZGVsaW5lc10oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vbW9ja29vbi9ibG9iL21haW4vQ09OVFJJQlVUSU5HLm1kKS4KClBsZWFzZSBhbHNvIHRha2UgYSBsb29rIGF0IG91ciBbQ29kZSBvZiBDb25kdWN0XShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi8uZ2l0aHViL2Jsb2IvbWFpbi9DT0RFX09GX0NPTkRVQ1QubWQpLgoKIyMgUm9hZG1hcAoKSWYgeW91IHdhbnQgdG8ga25vdyB3aGF0IHdpbGwgYmUgY29taW5nIGluIHRoZSBuZXh0IHJlbGVhc2UgeW91IGNhbiBjaGVjayB0aGUgZ2xvYmFsIFtSb2FkbWFwXShodHRwczovL21vY2tvb24uY29tL3B1YmxpYy1yb2FkbWFwLykgb3IgW3N1YnNjcmliZSB0byBvdXIgbmV3c2xldHRlcl0oaHR0cHM6Ly9tb2Nrb29uLmNvbS9uZXdzbGV0dGVyLykuCg== readmeEtag: '"6e53bba6ac8e5249923f8e7af0942e4f77720b7f"' readmeLastModified: Fri, 23 Jan 2026 12:04:11 GMT repositoryId: 97478419 description: >- 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: '2026-02-05T15:31:49Z' language: TypeScript archived: false stars: 8054 watchers: 62 forks: 451 owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: MIT repoEtag: '"34bb1554a3191296bd2a9e68dcbd9f73b20cd4d2db6cb770f6e13971253448fb"' repoLastModified: Thu, 05 Feb 2026 15:31:49 GMT foundInMaster: true category: Testing id: 8728dfca2c1908dbecdcddd31597fad4 - source: openapi3 tags name: OpenAPI Server Code Generator (oapi-codegen) category: - Code Generators link: https://github.com/deepmap/oapi-codegen repository: https://github.com/oapi-codegen/oapi-codegen language: Go source_description: >- Generate a client, server, and HTTP types for various Go HTTP servers, from an OpenAPI v3 specification v3: true repositoryMetadata: base64Readme: >- IyBgb2FwaS1jb2RlZ2VuYAoKWyFbT3BlblNTRiBCZXN0IFByYWN0aWNlc10oaHR0cHM6Ly93d3cuYmVzdHByYWN0aWNlcy5kZXYvcHJvamVjdHMvOTQ1MC9iYWRnZSldKGh0dHBzOi8vd3d3LmJlc3RwcmFjdGljZXMuZGV2L3Byb2plY3RzLzk0NTApCgpgb2FwaS1jb2RlZ2VuYCBpcyBhIGNvbW1hbmQtbGluZSB0b29sIGFuZCBsaWJyYXJ5IHRvIGNvbnZlcnQgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyB0byBHbyBjb2RlLCBiZSBpdCBbc2VydmVyLXNpZGUgaW1wbGVtZW50YXRpb25zXSgjZ2VuZXJhdGluZy1zZXJ2ZXItc2lkZS1ib2lsZXJwbGF0ZSksIFtBUEkgY2xpZW50c10oI2dlbmVyYXRpbmctYXBpLWNsaWVudHMpLCBvciBzaW1wbHkgW0hUVFAgbW9kZWxzXSgjZ2VuZXJhdGluZy1hcGktbW9kZWxzKS4KClVzaW5nIGBvYXBpLWNvZGVnZW5gIGFsbG93cyB5b3UgdG8gcmVkdWNlIHRoZSBib2lsZXJwbGF0ZSByZXF1aXJlZCB0byBjcmVhdGUgb3IgaW50ZWdyYXRlIHdpdGggc2VydmljZXMgYmFzZWQgb24gW09wZW5BUEkgMy4wXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21haW4vdmVyc2lvbnMvMy4wLjAubWQpLCBhbmQgaW5zdGVhZCBmb2N1cyBvbiB3cml0aW5nIHlvdXIgYnVzaW5lc3MgbG9naWMsIGFuZCB3b3JraW5nIG9uIHRoZSByZWFsIHZhbHVlLWFkZCBmb3IgeW91ciBvcmdhbmlzYXRpb24uCgpXaXRoIGBvYXBpLWNvZGVnZW5gLCB0aGVyZSBhcmUgYSBmZXcgW0tleSBEZXNpZ24gRGVjaXNpb25zXSgja2V5LWRlc2lnbi1kZWNpc2lvbnMpIHdlJ3ZlIG1hZGUsIGluY2x1ZGluZzoKCi0gaWRpb21hdGljIEdvLCB3aGVyZSBwb3NzaWJsZQotIGZhaXJseSBzaW1wbGUgZ2VuZXJhdGVkIGNvZGUsIGVycmluZyBvbiB0aGUgc2lkZSBvZiBkdXBsaWNhdGUgY29kZSBvdmVyIG5pY2VseSByZWZhY3RvcmVkIGNvZGUKLSBzdXBwb3J0aW5nIGFzIG11Y2ggb2YgT3BlbkFQSSAzLnggYXMgaXMgcG9zc2libGUsIGFsb25nc2lkZSBHbydzIHR5cGUgc3lzdGVtCgpgb2FwaS1jb2RlZ2VuYCBpcyBvbmUgcGFydCBvZiBhIHdpZGVyIGVjb3N5c3RlbSwgd2hpY2ggY2FuIGJlIGZvdW5kIGRlc2NyaWJlZCBpbiBmdXJ0aGVyIGRldGFpbCBpbiB0aGUgW29hcGktY29kZWdlbiBvcmdhbmlzYXRpb24gb24gR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuKS4KCuKaoO+4jyBUaGlzIFJFQURNRSBtYXkgYmUgZm9yIHRoZSBsYXRlc3QgZGV2ZWxvcG1lbnQgdmVyc2lvbiwgd2hpY2ggbWF5IGNvbnRhaW4gdW5yZWxlYXNlZCBjaGFuZ2VzLiBQbGVhc2UgZW5zdXJlIHlvdSdyZSBsb29raW5nIGF0IHRoZSBSRUFETUUgZm9yIHRoZSBsYXRlc3QgcmVsZWFzZSB2ZXJzaW9uLgoKIyMgQWN0aW9uIFJlcXVpcmVkOiBUaGUgcmVwb3NpdG9yeSBmb3IgdGhpcyBwcm9qZWN0IGhhcyBjaGFuZ2VkCgpBcyBhbm5vdW5jZWQgaW4gW01heSAyMDI0XShodHRwczovL2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9kaXNjdXNzaW9ucy8xNjA1KSwKd2UgaGF2ZSBtb3ZlZCB0aGUgcHJvamVjdCBmcm9tIHRoZSBkZWVwbWFwIG9yZ2FuaXphdGlvbiB0byBvdXIgb3duIG9yZ2FuaXphdGlvbiwgYW5kIHlvdSB3aWxsIG5lZWQgdG8gdXBkYXRlIHlvdXIKaW1wb3J0IHBhdGhzIHRvIHB1bGwgdXBkYXRlcyBwYXN0IHRoaXMgcG9pbnQuIFlvdSBuZWVkIHRvIGRvIGEgcmVjdXJzaXZlIHNlYXJjaC9yZXBsYWNlIGZyb20KYGdpdGh1Yi5jb20vZGVlcG1hcC9vYXBpLWNvZGVnZW4vdjJgIHRvIGBnaXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vdjJgLgoKPiBbIUlNUE9SVEFOVF0KPiBgb2FwaS1jb2RlZ2VuYCBtb3ZlZCB0byBpdHMgbmV3IGhvbWUgd2l0aCB0aGUgdmVyc2lvbiB0YWcgYHYyLjMuMGAuCgpJZiB5b3UgYXJlIHVzaW5nIGB2Mi4yLjBgIG9yIGJlbG93LCBwbGVhc2UgaW5zdGFsbCBsaWtlIHNvOgoKYGBgc2gKIyBmb3IgdGhlIGJpbmFyeSBpbnN0YWxsCmdvIGluc3RhbGwgZ2l0aHViLmNvbS9kZWVwbWFwL29hcGktY29kZWdlbi92Mi9jbWQvb2FwaS1jb2RlZ2VuQHYyLjIuMApgYGAKCklmIHlvdSBhcmUgdXNpbmcgYHYyLjMuMGAgb3IgYWJvdmUsIHBsZWFzZSBpbnN0YWxsIGxpa2Ugc28sIHVzaW5nIHRoZSBuZXcgbW9kdWxlIGltcG9ydCBwYXRoOgoKYGBgc2gKIyBmb3IgdGhlIGJpbmFyeSBpbnN0YWxsCmdvIGluc3RhbGwgZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL3YyL2NtZC9vYXBpLWNvZGVnZW5AbGF0ZXN0CmBgYAoKIyMgSW5zdGFsbAoKIyMjIEZvciBHbyAxLjI0KwoKSXQgaXMgcmVjb21tZW5kZWQgdG8gZm9sbG93IFt0aGUgYGdvIHRvb2xgIHN1cHBvcnQgYXZhaWxhYmxlIGZyb20gR28gMS4yNCtdKGh0dHBzOi8vd3d3Lmp2dC5tZS9wb3N0cy8yMDI1LzAxLzI3L2dvLXRvb2xzLTEyNC8pIGZvciBtYW5hZ2luZyB0aGUgZGVwZW5kZW5jeSBvZiBgb2FwaS1jb2RlZ2VuYCBhbG9uZ3NpZGUgeW91ciBjb3JlIGFwcGxpY2F0aW9uLgoKVG8gZG8gdGhpcywgeW91IHJ1biBgZ28gZ2V0IC10b29sYDoKCmBgYHNoCiQgZ28gZ2V0IC10b29sIGdpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi92Mi9jbWQvb2FwaS1jb2RlZ2VuQGxhdGVzdAojIHRoaXMgd2lsbCB0aGVuIG1vZGlmeSB5b3VyIGBnby5tb2RgCmBgYAoKRnJvbSB0aGVyZSwgZWFjaCBpbnZvY2F0aW9uIG9mIGBvYXBpLWNvZGVnZW5gIHdvdWxkIGJlIHVzZWQgbGlrZSBzbzoKCmBgYGdvCi8vZ286Z2VuZXJhdGUgZ28gdG9vbCBvYXBpLWNvZGVnZW4gLWNvbmZpZyBjZmcueWFtbCAuLi8uLi9hcGkueWFtbApgYGAKCiMjIyBQcmlvciB0byBHbyAxLjI0CgpJdCBpcyByZWNvbW1lbmRlZCB0byBmb2xsb3cgW3RoZSBgdG9vbHMuZ29gIHBhdHRlcm5dKGh0dHBzOi8vd3d3Lmp2dC5tZS9wb3N0cy8yMDIyLzA2LzE1L2dvLXRvb2xzLWRlcGVuZGVuY3ktbWFuYWdlbWVudC8pIGZvciBtYW5hZ2luZyB0aGUgZGVwZW5kZW5jeSBvZiBgb2FwaS1jb2RlZ2VuYCBhbG9uZ3NpZGUgeW91ciBjb3JlIGFwcGxpY2F0aW9uLgoKVGhpcyB3b3VsZCBnaXZlIHlvdSBhIGB0b29scy90b29scy5nb2A6CgpgYGBnbwovL2dvOmJ1aWxkIHRvb2xzCi8vICtidWlsZCB0b29scwoKcGFja2FnZSBtYWluCgppbXBvcnQgKAoJXyAiZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL3YyL2NtZC9vYXBpLWNvZGVnZW4iCikKYGBgCgpUaGVuLCBlYWNoIGludm9jYXRpb24gb2YgYG9hcGktY29kZWdlbmAgd291bGQgYmUgdXNlZCBsaWtlIHNvOgoKYGBgZ28KLy9nbzpnZW5lcmF0ZSBnbyBydW4gZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL3YyL2NtZC9vYXBpLWNvZGVnZW4gLS1jb25maWc9Y29uZmlnLnlhbWwgLi4vLi4vYXBpLnlhbWwKYGBgCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGluc3RhbGwgaXQgYXMgYSBiaW5hcnkgd2l0aDoKCmBgYHNoCiQgZ28gaW5zdGFsbCBnaXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vdjIvY21kL29hcGktY29kZWdlbkBsYXRlc3QKJCBvYXBpLWNvZGVnZW4gLXZlcnNpb24KYGBgCgpXaGljaCB0aGVuIG1lYW5zIHlvdSBjYW4gaW52b2tlIGl0IGxpa2Ugc286CgpgYGBnbwovL2dvOmdlbmVyYXRlIG9hcGktY29kZWdlbiAtLWNvbmZpZz1jb25maWcueWFtbCAuLi8uLi9hcGkueWFtbApgYGAKCk5vdGUgdGhhdCB5b3UgY2FuIGFsc28gW21vdmUgeW91ciBgdG9vbHMuZ29gIGludG8gaXRzIG93biBzdWItbW9kdWxlXShodHRwczovL3d3dy5qdnQubWUvcG9zdHMvMjAyNC8wOS8zMC9nby10b29scy1tb2R1bGUvKSB0byByZWR1Y2UgdGhlIGltcGFjdCBvbiB5b3VyIHRvcC1sZXZlbCBgZ28ubW9kYC4KCiMjIyBQaW5uaW5nIHRvIGNvbW1pdHMKCldoaWxlIHRoZSBwcm9qZWN0IGRvZXMgbm90IChbeWV0XShodHRwczovL2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9pc3N1ZXMvMTUxOSkpIGhhdmUgYSBkZWZpbmVkIHJlbGVhc2UgY2FkZW5jZSwgdGhlcmUgbWF5IGJlIGNhc2VzIHdoZXJlIHlvdSB3YW50IHRvIHB1bGwgaW4geWV0LXVucmVsZWFzZWQgY2hhbmdlcyB0byB5b3VyIGNvZGViYXNlLgoKVGhlcmVmb3JlLCB5b3UgbWF5IHdhbnQgdG8gcGluIHlvdXIgZGVwZW5kZW5jeSBvbiBgb2FwaS1jb2RlZ2VuYCB0byBhIGdpdmVuIGNvbW1pdCBoYXNoLCByYXRoZXIgdGhhbiBhIHRhZy4KClRoaXMgaXMgKipvZmZpY2lhbGx5IHJlY29tbWVuZGVkKiogZm9yIGNvbnN1bWVycyBvZiBgb2FwaS1jb2RlZ2VuYCwgd2hvIHdhbnQgZmVhdHVyZXMvYnVnIGZpeGVzIHRoYXQgaGF2ZW4ndCB5ZXQgYmVlbiByZWxlYXNlZC4KCldlIGFpbSB0byBrZWVwIHRoZSBkZWZhdWx0IGJyYW5jaCByZWFkeS10by1yZWxlYXNlIHNvIHlvdSBzaG91bGQgYmUgYWJsZSB0byBzYWZlbHkgcGluLgoKVG8gZG8gc28sIHlvdSBjYW4gcnVuOgoKYGBgc2gKIyBwaW4gdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIG9uIHRoZSBkZWZhdWx0IGJyYW5jaAokIGdvIGdldCBnaXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vdjJAbWFpbgojIGFsdGVybmF0aXZlbHksIHRvIGEgY29tbWl0IGhhc2ggaS5lLiBodHRwczovL2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9jb21taXQvNzFlOTE2YzU5Njg4YTYzNzliNTc3NGRmZTU5MDRlYzIyMmI5YTUzNwokIGdvIGdldCBnaXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vdjJANzFlOTE2YzU5Njg4YTYzNzliNTc3NGRmZTU5MDRlYzIyMmI5YTUzNwpgYGAKClRoaXMgd2lsbCB0aGVuIG1ha2UgYSBjaGFuZ2Ugc3VjaCBhczoKCmBgYGRpZmYKZGlmZiAtLWdpdCBnby5tb2QgZ28ubW9kCmluZGV4IDQ0ZjI5YTQuLjQzNmE3ODAgMTAwNjQ0Ci0tLSBnby5tb2QKKysrIGdvLm1vZApAQCAtMiwyMSArMiwyMCBAQAotcmVxdWlyZSBnaXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vdjIgdjIuMS4wCityZXF1aXJlIGdpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi92MiB2Mi4xLjEtMC4yMDI0MDMzMTIxMjUxNC04MGYwYjk3OGVmMTYKYGBgCgojIyBVc2FnZQoKYG9hcGktY29kZWdlbmAgaXMgbGFyZ2VseSBjb25maWd1cmVkIHVzaW5nIGEgWUFNTCBjb25maWd1cmF0aW9uIGZpbGUsIHRvIHNpbXBsaWZ5IHRoZSBudW1iZXIgb2YgZmxhZ3MgdGhhdCB1c2VycyBuZWVkIHRvIHJlbWVtYmVyLCBhbmQgdG8gbWFrZSByZWFkaW5nIHRoZSBgZ286Z2VuZXJhdGVgIGNvbW1hbmQgbGVzcyBkYXVudGluZy4KCkZvciBmdWxsIGRldGFpbHMgb2Ygd2hhdCBpcyBzdXBwb3J0ZWQsIGl0J3Mgd29ydGggY2hlY2tpbmcgb3V0IFt0aGUgR29Eb2MgZm9yIGBjb2RlZ2VuLkNvbmZpZ3VyYXRpb25gXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL3YyL3BrZy9jb2RlZ2VuI0NvbmZpZ3VyYXRpb24pLgoKV2UgYWxzbyBoYXZlIFthIEpTT04gU2NoZW1hXShjb25maWd1cmF0aW9uLXNjaGVtYS5qc29uKSB0aGF0IGNhbiBiZSB1c2VkIGJ5IElERXMvZWRpdG9ycyB3aXRoIHRoZSBMYW5ndWFnZSBTZXJ2ZXIgUHJvdG9jb2wgKExTUCkgdG8gcGVyZm9ybSBpbnRlbGxpZ2VudCBzdWdnZXN0aW9ucywgaS5lLjoKCmBgYHlhbWwKIyB5YW1sLWxhbmd1YWdlLXNlcnZlcjogJHNjaGVtYT1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9IRUFEL2NvbmZpZ3VyYXRpb24tc2NoZW1hLmpzb24KcGFja2FnZTogYXBpCiMgLi4uCmBgYAoKIyMjIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CgpBbHRob3VnaCB3ZSBzdHJpdmUgdG8gcmV0YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IC0gYXMgYSBwcm9qZWN0IHRoYXQncyB1c2luZyBhIHN0YWJsZSBBUEkgcGVyIFNlbVZlciAtIHRoZXJlIGFyZSBzb21ldGltZXMgb3Bwb3J0dW5pdGllcyB3ZSBtdXN0IHRha2UgdG8gZml4IGEgYnVnIHRoYXQgY291bGQgY2F1c2UgYSBicmVha2luZyBjaGFuZ2UgZm9yIFtwZW9wbGUgcmVseWluZyB1cG9uIHRoZSBiZWhhdmlvdXJdKGh0dHBzOi8veGtjZC5jb20vMTE3Mi8pLgoKSW4gdGhpcyBjYXNlLCB3ZSB3aWxsIGV4cG9zZSBhIFtjb21wYXRpYmlsaXR5IG9wdGlvbl0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi92Mi9wa2cvY29kZWdlbiNDb21wYXRpYmlsaXR5T3B0aW9ucykgdG8gcmVzdG9yZSBvbGQgYmVoYXZpb3VyLgoKIyMgRmVhdHVyZXMKCkF0IGEgaGlnaCBsZXZlbCwgYG9hcGktY29kZWdlbmAgc3VwcG9ydHM6CgotIEdlbmVyYXRpbmcgc2VydmVyLXNpZGUgYm9pbGVycGxhdGUgZm9yIFthIG51bWJlciBvZiBzZXJ2ZXJzXSgjc3VwcG9ydGVkLXNlcnZlcnMpIChbZG9jc10oI2dlbmVyYXRpbmctc2VydmVyLXNpZGUtYm9pbGVycGxhdGUpKQotIEdlbmVyYXRpbmcgY2xpZW50IEFQSSBib2lsZXJwbGF0ZSAoW2RvY3NdKCNnZW5lcmF0aW5nLWFwaS1jbGllbnRzKSkKLSBHZW5lcmF0aW5nIHRoZSB0eXBlcyAoW2RvY3NdKCNnZW5lcmF0aW5nLWFwaS1tb2RlbHMpKQotIFNwbGl0dGluZyBsYXJnZSBPcGVuQVBJIHNwZWNzIGFjcm9zcyBtdWx0aXBsZSBwYWNrYWdlcyhbZG9jc10oI2ltcG9ydC1tYXBwaW5nKSkKICAtIFRoaXMgaXMgYWxzbyBrbm93biBhcyAiSW1wb3J0IE1hcHBpbmciIG9yICJleHRlcm5hbCByZWZlcmVuY2VzIiBhY3Jvc3Mgb3VyIGRvY3VtZW50YXRpb24gLyBkaXNjdXNzaW9uIGluIEdpdEh1YiBpc3N1ZXMKCiMjIFdoYXQgZG9lcyBpdCBsb29rIGxpa2U/CgpCZWxvdyB3ZSBjYW4gc2VlIGEgdHJpbW1lZCBkb3duIGV4YW1wbGUgdGFrZW4gZnJvbSB0aGUgT3BlbkFQSSBQZXRzdG9yZSBbZXhhbXBsZV0oZXhhbXBsZXMvcGV0c3RvcmUtZXhwYW5kZWQvc3RkaHR0cC9hcGkvcGV0c3RvcmUuZ2VuLmdvKToKCmBgYGdvCi8vIGdlbmVyYXRlZCBjb2RlCgp0eXBlIFNlcnZlckludGVyZmFjZSBpbnRlcmZhY2UgewoJLy8gLi4uCgkvLyBSZXR1cm5zIGFsbCBwZXRzCgkvLyAoR0VUIC9wZXRzKQoJRmluZFBldHModyBodHRwLlJlc3BvbnNlV3JpdGVyLCByICpodHRwLlJlcXVlc3QsIHBhcmFtcyBGaW5kUGV0c1BhcmFtcykKCS8vIC4uLgp9CgovLyBGaW5kUGV0cyBvcGVyYXRpb24gbWlkZGxld2FyZQpmdW5jIChzaXcgKlNlcnZlckludGVyZmFjZVdyYXBwZXIpIEZpbmRQZXRzKHcgaHR0cC5SZXNwb25zZVdyaXRlciwgciAqaHR0cC5SZXF1ZXN0KSB7CgoJdmFyIGVyciBlcnJvcgoKCS8vIFBhcmFtZXRlciBvYmplY3Qgd2hlcmUgd2Ugd2lsbCB1bm1hcnNoYWwgYWxsIHBhcmFtZXRlcnMgZnJvbSB0aGUgY29udGV4dAoJdmFyIHBhcmFtcyBGaW5kUGV0c1BhcmFtcwoKCS8vIC0tLS0tLS0tLS0tLS0gT3B0aW9uYWwgcXVlcnkgcGFyYW1ldGVyICJ0YWdzIiAtLS0tLS0tLS0tLS0tCgoJZXJyID0gcnVudGltZS5CaW5kUXVlcnlQYXJhbWV0ZXIoImZvcm0iLCB0cnVlLCBmYWxzZSwgInRhZ3MiLCByLlVSTC5RdWVyeSgpLCAmcGFyYW1zLlRhZ3MpCglpZiBlcnIgIT0gbmlsIHsKCQlzaXcuRXJyb3JIYW5kbGVyRnVuYyh3LCByLCAmSW52YWxpZFBhcmFtRm9ybWF0RXJyb3J7UGFyYW1OYW1lOiAidGFncyIsIEVycjogZXJyfSkKCQlyZXR1cm4KCX0KCgkvLyAtLS0tLS0tLS0tLS0tIE9wdGlvbmFsIHF1ZXJ5IHBhcmFtZXRlciAibGltaXQiIC0tLS0tLS0tLS0tLS0KCgllcnIgPSBydW50aW1lLkJpbmRRdWVyeVBhcmFtZXRlcigiZm9ybSIsIHRydWUsIGZhbHNlLCAibGltaXQiLCByLlVSTC5RdWVyeSgpLCAmcGFyYW1zLkxpbWl0KQoJaWYgZXJyICE9IG5pbCB7CgkJc2l3LkVycm9ySGFuZGxlckZ1bmModywgciwgJkludmFsaWRQYXJhbUZvcm1hdEVycm9ye1BhcmFtTmFtZTogImxpbWl0IiwgRXJyOiBlcnJ9KQoJCXJldHVybgoJfQoKCWhhbmRsZXIgOj0gaHR0cC5IYW5kbGVyKGh0dHAuSGFuZGxlckZ1bmMoZnVuYyh3IGh0dHAuUmVzcG9uc2VXcml0ZXIsIHIgKmh0dHAuUmVxdWVzdCkgewoJCXNpdy5IYW5kbGVyLkZpbmRQZXRzKHcsIHIsIHBhcmFtcykKCX0pKQoKCWZvciBfLCBtaWRkbGV3YXJlIDo9IHJhbmdlIHNpdy5IYW5kbGVyTWlkZGxld2FyZXMgewoJCWhhbmRsZXIgPSBtaWRkbGV3YXJlKGhhbmRsZXIpCgl9CgoJaGFuZGxlci5TZXJ2ZUhUVFAodywgcikKfQoKLy8gSGFuZGxlcldpdGhPcHRpb25zIGNyZWF0ZXMgaHR0cC5IYW5kbGVyIHdpdGggYWRkaXRpb25hbCBvcHRpb25zCmZ1bmMgSGFuZGxlcldpdGhPcHRpb25zKHNpIFNlcnZlckludGVyZmFjZSwgb3B0aW9ucyBTdGRIVFRQU2VydmVyT3B0aW9ucykgaHR0cC5IYW5kbGVyIHsKCW0gOj0gb3B0aW9ucy5CYXNlUm91dGVyCgoJaWYgbSA9PSBuaWwgewoJCW0gPSBodHRwLk5ld1NlcnZlTXV4KCkKCX0KCWlmIG9wdGlvbnMuRXJyb3JIYW5kbGVyRnVuYyA9PSBuaWwgewoJCW9wdGlvbnMuRXJyb3JIYW5kbGVyRnVuYyA9IGZ1bmModyBodHRwLlJlc3BvbnNlV3JpdGVyLCByICpodHRwLlJlcXVlc3QsIGVyciBlcnJvcikgewoJCQlodHRwLkVycm9yKHcsIGVyci5FcnJvcigpLCBodHRwLlN0YXR1c0JhZFJlcXVlc3QpCgkJfQoJfQoKCXdyYXBwZXIgOj0gU2VydmVySW50ZXJmYWNlV3JhcHBlcnsKCQlIYW5kbGVyOiAgICAgICAgICAgIHNpLAoJCUhhbmRsZXJNaWRkbGV3YXJlczogb3B0aW9ucy5NaWRkbGV3YXJlcywKCQlFcnJvckhhbmRsZXJGdW5jOiAgIG9wdGlvbnMuRXJyb3JIYW5kbGVyRnVuYywKCX0KCgltLkhhbmRsZUZ1bmMoIkdFVCAiK29wdGlvbnMuQmFzZVVSTCsiL3BldHMiLCB3cmFwcGVyLkZpbmRQZXRzKQoKCXJldHVybiBtCn0KYGBgCgpUaGVuLCBpbiB5b3VyIG93biBjb2RlLCB5b3UgaW1wbGVtZW50IHRoZSB1bmRlcmx5aW5nIGxvZ2ljIGZvciB0aGUgYEZpbmRQZXRzYCBpbXBsZW1lbnRhdGlvbjoKCmBgYGdvCnR5cGUgUGV0U3RvcmUgc3RydWN0IHsKCVBldHMgICBtYXBbaW50NjRdUGV0CglOZXh0SWQgaW50NjQKCUxvY2sgICBzeW5jLk11dGV4Cn0KCi8vIE1ha2Ugc3VyZSB3ZSBjb25mb3JtIHRvIFNlcnZlckludGVyZmFjZQoKdmFyIF8gU2VydmVySW50ZXJmYWNlID0gKCpQZXRTdG9yZSkobmlsKQoKZnVuYyBOZXdQZXRTdG9yZSgpICpQZXRTdG9yZSB7CglyZXR1cm4gJlBldFN0b3JlewoJCVBldHM6ICAgbWFrZShtYXBbaW50NjRdUGV0KSwKCQlOZXh0SWQ6IDEwMDAsCgl9Cn0KCi8vIEZpbmRQZXRzIGltcGxlbWVudHMgYWxsIHRoZSBoYW5kbGVycyBpbiB0aGUgU2VydmVySW50ZXJmYWNlCmZ1bmMgKHAgKlBldFN0b3JlKSBGaW5kUGV0cyh3IGh0dHAuUmVzcG9uc2VXcml0ZXIsIHIgKmh0dHAuUmVxdWVzdCwgcGFyYW1zIEZpbmRQZXRzUGFyYW1zKSB7CglwLkxvY2suTG9jaygpCglkZWZlciBwLkxvY2suVW5sb2NrKCkKCgl2YXIgcmVzdWx0IFtdUGV0CgoJZm9yIF8sIHBldCA6PSByYW5nZSBwLlBldHMgewoJCWlmIHBhcmFtcy5UYWdzICE9IG5pbCB7CgkJCS8vIElmIHdlIGhhdmUgdGFncywgIGZpbHRlciBwZXRzIGJ5IHRhZwoJCQlmb3IgXywgdCA6PSByYW5nZSAqcGFyYW1zLlRhZ3MgewoJCQkJaWYgcGV0LlRhZyAhPSBuaWwgJiYgKCpwZXQuVGFnID09IHQpIHsKCQkJCQlyZXN1bHQgPSBhcHBlbmQocmVzdWx0LCBwZXQpCgkJCQl9CgkJCX0KCQl9IGVsc2UgewoJCQkvLyBBZGQgYWxsIHBldHMgaWYgd2UncmUgbm90IGZpbHRlcmluZwoJCQlyZXN1bHQgPSBhcHBlbmQocmVzdWx0LCBwZXQpCgkJfQoKCQlpZiBwYXJhbXMuTGltaXQgIT0gbmlsIHsKCQkJbCA6PSBpbnQoKnBhcmFtcy5MaW1pdCkKCQkJaWYgbGVuKHJlc3VsdCkgPj0gbCB7CgkJCQkvLyBXZSdyZSBhdCB0aGUgbGltaXQKCQkJCWJyZWFrCgkJCX0KCQl9Cgl9CgoJdy5Xcml0ZUhlYWRlcihodHRwLlN0YXR1c09LKQoJXyA9IGpzb24uTmV3RW5jb2Rlcih3KS5FbmNvZGUocmVzdWx0KQp9CmBgYAoKQXMgd2UgY2FuIHNlZSwgYG9hcGktY29kZWdlbmAgc2ltcGxpZmllcyBzb21lIG9mIHRoZSBib2lsZXJwbGF0ZSBieSB0YWtpbmcgcGFyYW1ldGVycyBvdXQgb2YgdGhlIHJlcXVlc3QgYW5kIGluc3RlYWQgYWxsb3dzIHVzIHRvIGZvY3VzIG9uIHRoZSBpbXBsZW1lbnRhdGlvbi4KCllvdSdsbCBub3RlIHRoYXQgdGhlcmUncyBzdGlsbCBhIGJpdCBtb3JlIG1hcnNoYWxpbmcgb2YgcmVxdWVzdC9yZXNwb25zZSBkYXRhLCB3aGljaCBpcyBmdXJ0aGVyIHJlZHVjZWQgYnkgdXNpbmcgdGhlIFtTdHJpY3Qgc2VydmVyXSgjc3RyaWN0LXNlcnZlcikgZnVuY3Rpb25hbGl0eS4KCjxhIG5hbWU9IndoYXQtZG9lcy1pdC1sb29rLWxpa2Utc3RyaWN0Ij48L2E+CldoZW4gdXNpbmcgdGhlIHN0cmljdCBzZXJ2ZXIsIHlvdSdsbCBoYXZlIHRoZSBmb2xsb3dpbmcgZ2VuZXJhdGVkIGNvZGU6CgpgYGBnbwovLyBTdHJpY3RTZXJ2ZXJJbnRlcmZhY2UgcmVwcmVzZW50cyBhbGwgc2VydmVyIGhhbmRsZXJzLgp0eXBlIFN0cmljdFNlcnZlckludGVyZmFjZSBpbnRlcmZhY2UgewoJLy8gLi4uCgkvLyBSZXR1cm5zIGFsbCBwZXRzCgkvLyAoR0VUIC9wZXRzKQoJRmluZFBldHMoY3R4IGNvbnRleHQuQ29udGV4dCwgcmVxdWVzdCBGaW5kUGV0c1JlcXVlc3RPYmplY3QpIChGaW5kUGV0c1Jlc3BvbnNlT2JqZWN0LCBlcnJvcikKCS8vIC4uLgp9CgpmdW5jIE5ld1N0cmljdEhhbmRsZXJXaXRoT3B0aW9ucyhzc2kgU3RyaWN0U2VydmVySW50ZXJmYWNlLCBtaWRkbGV3YXJlcyBbXVN0cmljdE1pZGRsZXdhcmVGdW5jLCBvcHRpb25zIFN0cmljdEhUVFBTZXJ2ZXJPcHRpb25zKSBTZXJ2ZXJJbnRlcmZhY2UgewoJcmV0dXJuICZzdHJpY3RIYW5kbGVye3NzaTogc3NpLCBtaWRkbGV3YXJlczogbWlkZGxld2FyZXMsIG9wdGlvbnM6IG9wdGlvbnN9Cn0KCi8vIEZpbmRQZXRzIG9wZXJhdGlvbiBtaWRkbGV3YXJlCmZ1bmMgKHNoICpzdHJpY3RIYW5kbGVyKSBGaW5kUGV0cyh3IGh0dHAuUmVzcG9uc2VXcml0ZXIsIHIgKmh0dHAuUmVxdWVzdCwgcGFyYW1zIEZpbmRQZXRzUGFyYW1zKSB7Cgl2YXIgcmVxdWVzdCBGaW5kUGV0c1JlcXVlc3RPYmplY3QKCglyZXF1ZXN0LlBhcmFtcyA9IHBhcmFtcwoKCWhhbmRsZXIgOj0gZnVuYyhjdHggY29udGV4dC5Db250ZXh0LCB3IGh0dHAuUmVzcG9uc2VXcml0ZXIsIHIgKmh0dHAuUmVxdWVzdCwgcmVxdWVzdCBpbnRlcmZhY2V7fSkgKGludGVyZmFjZXt9LCBlcnJvcikgewoJCXJldHVybiBzaC5zc2kuRmluZFBldHMoY3R4LCByZXF1ZXN0LihGaW5kUGV0c1JlcXVlc3RPYmplY3QpKQoJfQoJZm9yIF8sIG1pZGRsZXdhcmUgOj0gcmFuZ2Ugc2gubWlkZGxld2FyZXMgewoJCWhhbmRsZXIgPSBtaWRkbGV3YXJlKGhhbmRsZXIsICJGaW5kUGV0cyIpCgl9CgoJcmVzcG9uc2UsIGVyciA6PSBoYW5kbGVyKHIuQ29udGV4dCgpLCB3LCByLCByZXF1ZXN0KQoKCWlmIGVyciAhPSBuaWwgewoJCXNoLm9wdGlvbnMuUmVzcG9uc2VFcnJvckhhbmRsZXJGdW5jKHcsIHIsIGVycikKCX0gZWxzZSBpZiB2YWxpZFJlc3BvbnNlLCBvayA6PSByZXNwb25zZS4oRmluZFBldHNSZXNwb25zZU9iamVjdCk7IG9rIHsKCQlpZiBlcnIgOj0gdmFsaWRSZXNwb25zZS5WaXNpdEZpbmRQZXRzUmVzcG9uc2Uodyk7IGVyciAhPSBuaWwgewoJCQlzaC5vcHRpb25zLlJlc3BvbnNlRXJyb3JIYW5kbGVyRnVuYyh3LCByLCBlcnIpCgkJfQoJfSBlbHNlIGlmIHJlc3BvbnNlICE9IG5pbCB7CgkJc2gub3B0aW9ucy5SZXNwb25zZUVycm9ySGFuZGxlckZ1bmModywgciwgZm10LkVycm9yZigidW5leHBlY3RlZCByZXNwb25zZSB0eXBlOiAlVCIsIHJlc3BvbnNlKSkKCX0KfQpgYGAKClRoZW4sIGluIHlvdXIgb3duIGNvZGUsIHlvdSBpbXBsZW1lbnQgdGhlIHVuZGVybHlpbmcgbG9naWMgZm9yIHRoZSBgRmluZFBldHNgIGltcGxlbWVudGF0aW9uOgoKYGBgZ28KLy8gTWFrZSBzdXJlIHdlIGNvbmZvcm0gdG8gU3RyaWN0U2VydmVySW50ZXJmYWNlCgp2YXIgXyBTdHJpY3RTZXJ2ZXJJbnRlcmZhY2UgPSAoKlBldFN0b3JlKShuaWwpCgpmdW5jIE5ld1BldFN0b3JlKCkgKlBldFN0b3JlIHsKCXJldHVybiAmUGV0U3RvcmV7CgkJUGV0czogICBtYWtlKG1hcFtpbnQ2NF1QZXQpLAoJCU5leHRJZDogMTAwMCwKCX0KfQoKLy8gRmluZFBldHMgaW1wbGVtZW50cyBhbGwgdGhlIGhhbmRsZXJzIGluIHRoZSBTZXJ2ZXJJbnRlcmZhY2UKZnVuYyAocCAqUGV0U3RvcmUpIEZpbmRQZXRzKGN0eCBjb250ZXh0LkNvbnRleHQsIHJlcXVlc3QgRmluZFBldHNSZXF1ZXN0T2JqZWN0KSAoRmluZFBldHNSZXNwb25zZU9iamVjdCwgZXJyb3IpIHsKCXAuTG9jay5Mb2NrKCkKCWRlZmVyIHAuTG9jay5VbmxvY2soKQoKCXZhciByZXN1bHQgW11QZXQKCglmb3IgXywgcGV0IDo9IHJhbmdlIHAuUGV0cyB7CgkJaWYgcmVxdWVzdC5QYXJhbXMuVGFncyAhPSBuaWwgewoJCQkvLyBJZiB3ZSBoYXZlIHRhZ3MsICBmaWx0ZXIgcGV0cyBieSB0YWcKCQkJZm9yIF8sIHQgOj0gcmFuZ2UgKnJlcXVlc3QuUGFyYW1zLlRhZ3MgewoJCQkJaWYgcGV0LlRhZyAhPSBuaWwgJiYgKCpwZXQuVGFnID09IHQpIHsKCQkJCQlyZXN1bHQgPSBhcHBlbmQocmVzdWx0LCBwZXQpCgkJCQl9CgkJCX0KCQl9IGVsc2UgewoJCQkvLyBBZGQgYWxsIHBldHMgaWYgd2UncmUgbm90IGZpbHRlcmluZwoJCQlyZXN1bHQgPSBhcHBlbmQocmVzdWx0LCBwZXQpCgkJfQoKCQlpZiByZXF1ZXN0LlBhcmFtcy5MaW1pdCAhPSBuaWwgewoJCQlsIDo9IGludCgqcmVxdWVzdC5QYXJhbXMuTGltaXQpCgkJCWlmIGxlbihyZXN1bHQpID49IGwgewoJCQkJLy8gV2UncmUgYXQgdGhlIGxpbWl0CgkJCQlicmVhawoJCQl9CgkJfQoJfQoKCXJldHVybiBGaW5kUGV0czIwMEpTT05SZXNwb25zZShyZXN1bHQpLCBuaWwKfQpgYGAKCldlIGNhbiBzZWUgdGhhdCB0aGlzIHByb3ZpZGVzIHRoZSBiZXN0IG1lYW5zIHRvIGZvY3VzIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYnVzaW5lc3MgbG9naWMgd2l0aGluIHRoZSBlbmRwb2ludCwgcmF0aGVyIHRoYW4gKHVuKW1hcnNoYWxsaW5nIHR5cGVzIHRvIGFuZCBmcm9tIEpTT04sIG9yIHdyYW5nbGluZyBjb29raWVzIG9yIGhlYWRlcnMuCgojIyBLZXkgZGVzaWduIGRlY2lzaW9ucwoKLSBQcm9kdWNlIGFuIGludGVyZmFjZSB0aGF0IGNhbiBiZSBzYXRpc2ZpZWQgYnkgeW91ciBpbXBsZW1lbnRhdGlvbiwgd2l0aCByZWR1Y2VkIGJvaWxlcnBsYXRlCi0gQnVsayBwcm9jZXNzaW5nIGFuZCBwYXJzaW5nIG9mIE9wZW5BUEkgZG9jdW1lbnQgaW4gR28KLSBSZXN1bHRpbmcgb3V0cHV0IGlzIHVzaW5nIEdvJ3MgYHRleHQvdGVtcGxhdGVgcywgd2hpY2ggYXJlIHVzZXItb3ZlcnJpZGFibGUKLSBBdHRlbXB0cyB0byBwcm9kdWNlIElkaW9tYXRpYyBHbwotIFNpbmdsZS1maWxlIG91dHB1dAotIFN1cHBvcnQgbXVsdGlwbGUgT3BlbkFQSSBmaWxlcyBieSBoYXZpbmcgYSBwYWNrYWdlLXBlci1PcGVuQVBJIGZpbGUKLSBTdXBwb3J0IG9mIE9wZW5BUEkgMy4wCiAgLSBPcGVuQVBJIDMuMSBzdXBwb3J0IGlzIFthd2FpdGluZyB1cHN0cmVhbSBzdXBwb3J0XShodHRwczovL2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9pc3N1ZXMvMzczKQogIC0gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgaW5jbHVkZSBPcGVuQVBJIDIuMCAoYWthIFN3YWdnZXIpCi0gRXh0cmFjdCBwYXJhbWV0ZXJzIGZyb20gcmVxdWVzdHMsIHRvIHJlZHVjZSB3b3JrIHJlcXVpcmVkIGJ5IHlvdXIgaW1wbGVtZW50YXRpb24KLSBJbXBsaWNpdCBgYWRkaXRpb25hbFByb3BlcnRpZXNgIGFyZSBpZ25vcmVkIGJ5IGRlZmF1bHQgKFttb3JlIGRldGFpbHNdKCNhZGRpdGlvbmFsLXByb3BlcnRpZXMtYWRkaXRpb25hbHByb3BlcnRpZXMpKQotIFBydW5lIHVudXNlZCB0eXBlcyBieSBkZWZhdWx0CgojIyBHZW5lcmF0aW5nIHNlcnZlci1zaWRlIGJvaWxlcnBsYXRlCgpgb2FwaS1jb2RlZ2VuYCBzaGluZXMgYnkgbWFraW5nIGl0IGZhaXJseSBzdHJhaWdodGZvcndhcmQgKG5vdGUgdGhhdCB0aGlzIGlzIGEgcHVycG9zZWZ1bCBjaG9pY2Ugb2Ygd29yZGluZyBoZXJlIC0gd2Ugd2FudCB0byBhdm9pZCB3b3JkcyBsaWtlICJlYXN5IikgdG8gZ2VuZXJhdGUgdGhlIHNlcnZlci1zaWRlIGJvaWxlcnBsYXRlIGZvciBhIGJhY2tlbmQgQVBJLgoKQmVsb3cgeW91IGNhbiBmaW5kIHRoZSBzdXBwb3J0ZWQgc2VydmVycywgYW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIGltcGxlbWVudCBhIHNlcnZlciB1c2luZyB0aGVtLgoKVG8gcHJvdmlkZSB5b3UgYSBmdWxseSBUZXN0IERyaXZlbiBEZXZlbG9wbWVudCBzdHlsZSB0ZXN0IGhhcm5lc3MgdG8gY29uZmlybSB5b3UgYXJlIGZvbGxvd2luZyB0aGUgc3BlY2lmaWNhdGlvbiwgeW91IGNvdWxkIHVzZSBhIHRvb2wgc3VjaCBhcyBbb3BlbmFwaS50YW5uYS5kZXYvZ28vdmFsaWRhdG9yXShodHRwczovL29wZW5hcGkudGFubmEuZGV2L2dvL3ZhbGlkYXRvci8pLCBvciBjcmFmdCB5b3VyIG93bi4KCiMjIyBTdXBwb3J0ZWQgU2VydmVycwoKUmlnaHQgbm93LCB3ZSBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgc2VydmVycywgYW5kIGFyZSBzdXBwb3J0aXZlIG9mIGFkZGluZyBuZXcgc2VydmVycywgdG9vIQoKPHRhYmxlPgoKPHRyPgo8dGg+ClNlcnZlcgo8L3RoPgo8dGg+Cjxjb2RlPmdlbmVyYXRlPC9jb2RlPiBmbGFnIHRvIGVuYWJsZSBjb2RlIGdlbmVyYXRpb24KPC90aD4KPHRoPgpFeGFtcGxlIHVzYWdlCjwvdGg+CjwvdHI+Cgo8dHI+Cjx0ZD4KCltDaGldKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1jaGkvY2hpKQoKPC90ZD4KPHRkPgo8Y29kZT5jaGktc2VydmVyPC9jb2RlPgo8L3RkPgo8dGQ+CgoKRm9yIGEgQ2hpIHNlcnZlciwgeW91IHdpbGwgd2FudCBhIGNvbmZpZ3VyYXRpb24gZmlsZSBzdWNoIGFzOgoKYGBgeWFtbAojIHlhbWwtbGFuZ3VhZ2Utc2VydmVyOiAuLi4KcGFja2FnZTogYXBpCmdlbmVyYXRlOgogIGNoaS1zZXJ2ZXI6IHRydWUKICBtb2RlbHM6IHRydWUKb3V0cHV0OiBnZW4uZ28KYGBgCgpUbyBpbXBsZW1lbnQgdGhpcywgY2hlY2sgb3V0IFt0aGUgQ2hpIGRvY3NdKCNpbXBsLWNoaSkuCgo8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+CgpbRWNob10oaHR0cHM6Ly9naXRodWIuY29tL2xhYnN0YWNrL2VjaG8pCgo8L3RkPgo8dGQ+Cjxjb2RlPmVjaG8tc2VydmVyPC9jb2RlPgo8L3RkPgo8dGQ+CgpGb3IgYW4gRWNobyBzZXJ2ZXIsIHlvdSB3aWxsIHdhbnQgYSBjb25maWd1cmF0aW9uIGZpbGUgc3VjaCBhczoKCmBgYHlhbWwKIyB5YW1sLWxhbmd1YWdlLXNlcnZlcjogLi4uCnBhY2thZ2U6IGFwaQpnZW5lcmF0ZToKICBlY2hvLXNlcnZlcjogdHJ1ZQogIG1vZGVsczogdHJ1ZQpvdXRwdXQ6IGdlbi5nbwpgYGAKClRvIGltcGxlbWVudCB0aGlzLCBjaGVjayBvdXQgW3RoZSBFY2hvIGRvY3NdKCNpbXBsLWVjaG8pLgoKPC90ZD4KPC90cj4KCjx0cj4KPHRkPgoKW0ZpYmVyXShodHRwczovL2dpdGh1Yi5jb20vZ29maWJlci9maWJlcikKCjwvdGQ+Cjx0ZD4KPGNvZGU+ZmliZXItc2VydmVyPC9jb2RlPgo8L3RkPgoKPHRkPgoKRm9yIGEgRmliZXIgc2VydmVyLCB5b3Ugd2lsbCB3YW50IGEgY29uZmlndXJhdGlvbiBmaWxlIHN1Y2ggYXM6CgpgYGB5YW1sCiMgeWFtbC1sYW5ndWFnZS1zZXJ2ZXI6IC4uLgpwYWNrYWdlOiBhcGkKZ2VuZXJhdGU6CiAgZmliZXItc2VydmVyOiB0cnVlCiAgbW9kZWxzOiB0cnVlCm91dHB1dDogZ2VuLmdvCmBgYAoKVG8gaW1wbGVtZW50IHRoaXMsIGNoZWNrIG91dCBbdGhlIEZpYmVyIGRvY3NdKCNpbXBsLWZpYmVyKS4KCjwvdGQ+CjwvdHI+CgoKPHRyPgo8dGQ+CgpbR2luXShodHRwczovL2dpdGh1Yi5jb20vZ2luLWdvbmljL2dpbikKCjwvdGQ+Cjx0ZD4KPGNvZGU+Z2luLXNlcnZlcjwvY29kZT4KPC90ZD4KPHRkPgoKRm9yIGEgR2luIHNlcnZlciwgeW91IHdpbGwgd2FudCBhIGNvbmZpZ3VyYXRpb24gZmlsZSBzdWNoIGFzOgoKYGBgeWFtbAojIHlhbWwtbGFuZ3VhZ2Utc2VydmVyOiAuLi4KcGFja2FnZTogYXBpCmdlbmVyYXRlOgogIGdpbi1zZXJ2ZXI6IHRydWUKICBtb2RlbHM6IHRydWUKb3V0cHV0OiBnZW4uZ28KYGBgCgpUbyBpbXBsZW1lbnQgdGhpcywgY2hlY2sgb3V0IFt0aGUgR2luIGRvY3NdKCNpbXBsLWdpbikuCgo8L3RkPgoKPC90cj4KCjx0cj4KPHRkPgoKW2dvcmlsbGEvbXV4XShodHRwczovL2dpdGh1Yi5jb20vZ29yaWxsYS9tdXgpCgo8L3RkPgo8dGQ+Cjxjb2RlPmdvcmlsbGEtc2VydmVyPC9jb2RlPgo8L3RkPgoKPHRkPgoKRm9yIGEgZ29yaWxsYS9tdXggc2VydmVyLCB5b3Ugd2lsbCB3YW50IGEgY29uZmlndXJhdGlvbiBmaWxlIHN1Y2ggYXM6CgpgYGB5YW1sCiMgeWFtbC1sYW5ndWFnZS1zZXJ2ZXI6IC4uLgpwYWNrYWdlOiBhcGkKZ2VuZXJhdGU6CiAgZ29yaWxsYS1zZXJ2ZXI6IHRydWUKICBtb2RlbHM6IHRydWUKb3V0cHV0OiBnZW4uZ28KYGBgCgpUbyBpbXBsZW1lbnQgdGhpcywgY2hlY2sgb3V0IFt0aGUgZ29yaWxsYS9tdXggZG9jc10oI2ltcGwtZ29yaWxsYW11eCkuCgo8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+CgpbSXJpc10oaHR0cHM6Ly9naXRodWIuY29tL2thdGFyYXMvaXJpcykKCjwvdGQ+Cjx0ZD4KPGNvZGU+aXJpcy1zZXJ2ZXI8L2NvZGU+CjwvdGQ+Cgo8dGQ+CgpGb3IgYSBJcmlzIHNlcnZlciwgeW91IHdpbGwgd2FudCBhIGNvbmZpZ3VyYXRpb24gZmlsZSBzdWNoIGFzOgoKYGBgeWFtbAojIHlhbWwtbGFuZ3VhZ2Utc2VydmVyOiAuLi4KcGFja2FnZTogYXBpCmdlbmVyYXRlOgogIGlyaXMtc2VydmVyOiB0cnVlCiAgbW9kZWxzOiB0cnVlCm91dHB1dDogZ2VuLmdvCmBgYAoKVG8gaW1wbGVtZW50IHRoaXMsIGNoZWNrIG91dCBbdGhlIElyaXMgZG9jc10oI2ltcGwtaXJpcykuCgo8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+CgpbMS4yMisgYG5ldC9odHRwYF0oaHR0cHM6Ly9wa2cuZ28uZGV2L25ldC9odHRwKQoKPC90ZD4KPHRkPgo8Y29kZT5zdGQtaHR0cC1zZXJ2ZXI8L2NvZGU+CjwvdGQ+Cgo8dGQ+CgpUbyB1c2UgcHVyZWx5IGBuZXQvaHR0cGAgKGZvciBHbyAxLjIyKyksIHlvdSB3aWxsIHdhbnQgYSBjb25maWd1cmF0aW9uIGZpbGUgc3VjaCBhczoKCmBgYHlhbWwKIyB5YW1sLWxhbmd1YWdlLXNlcnZlcjogLi4uCnBhY2thZ2U6IGFwaQpnZW5lcmF0ZToKICBzdGQtaHR0cC1zZXJ2ZXI6IHRydWUKICBtb2RlbHM6IHRydWUKb3V0cHV0OiBnZW4uZ28KYGBgCgpUbyBpbXBsZW1lbnQgdGhpcywgY2hlY2sgb3V0IFt0aGUgR28gMS4yMisgYG5ldC9odHRwYCBkb2NzXSgjaW1wbC1zdGRodHRwKS4KCjwvdGQ+CjwvdHI+Cgo8L3RhYmxlPgoKIyMjIEdvIDEuMjIrIGBuZXQvaHR0cGAKPGEgbmFtZT0iaW1wbC1zdGRodHRwIj48L2E+CgpBcyBvZiBHbyAxLjIyLCBlbmhhbmNlbWVudHMgaGF2ZSBiZWVuIG1hZGUgdG8gdGhlIHJvdXRpbmcgb2YgdGhlIGBuZXQvaHR0cGAgcGFja2FnZSBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSwgd2hpY2ggbWFrZXMgaXQgYSBncmVhdCBzdGFydGluZyBwb2ludCBmb3IgaW1wbGVtZW50aW5nIGEgc2VydmVyIHdpdGgsIGJlZm9yZSBuZWVkaW5nIHRvIHJlYWNoIGZvciBhbm90aGVyIHJvdXRlciBvciBhIGZ1bGwgZnJhbWV3b3JrLgoKRm9yIGluc3RhbmNlLCBsZXQncyB0YWtlIHRoaXMgc3RyYWlnaHRmb3J3YXJkIHNwZWNpZmljYXRpb246CgpgYGB5YW1sCm9wZW5hcGk6ICIzLjAuMCIKaW5mbzoKICB2ZXJzaW9uOiAxLjAuMAogIHRpdGxlOiBNaW5pbWFsIHBpbmcgQVBJIHNlcnZlcgpwYXRoczoKICAvcGluZzoKICAgIGdldDoKICAgICAgcmVzcG9uc2VzOgogICAgICAgICcyMDAnOgogICAgICAgICAgZGVzY3JpcHRpb246IHBldCByZXNwb25zZQogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUG9uZycKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgIyBiYXNlIHR5cGVzCiAgICBQb25nOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBwaW5nCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgcGluZzoKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZXhhbXBsZTogcG9uZwpgYGAKClRoaXMgdGhlbiBnZW5lcmF0ZXMgY29kZSBzdWNoIGFzOgoKYGBgZ28KLy8gUG9uZyBkZWZpbmVzIG1vZGVsIGZvciBQb25nLgp0eXBlIFBvbmcgc3RydWN0IHsKCVBpbmcgc3RyaW5nIGBqc29uOiJwaW5nImAKfQoKLy8gU2VydmVySW50ZXJmYWNlIHJlcHJlc2VudHMgYWxsIHNlcnZlciBoYW5kbGVycy4KdHlwZSBTZXJ2ZXJJbnRlcmZhY2UgaW50ZXJmYWNlIHsKCgkvLyAoR0VUIC9waW5nKQoJR2V0UGluZyh3IGh0dHAuUmVzcG9uc2VXcml0ZXIsIHIgKmh0dHAuUmVxdWVzdCkKfQoKZnVuYyBIYW5kbGVyRnJvbU11eChzaSBTZXJ2ZXJJbnRlcmZhY2UsIG0gU2VydmVNdXgpIGh0dHAuSGFuZGxlciB7CglyZXR1cm4gSGFuZGxlcldpdGhPcHRpb25zKHNpLCBTdGRIVFRQU2VydmVyT3B0aW9uc3sKCQlCYXNlUm91dGVyOiBtLAoJfSkKfQoKLy8gSGFuZGxlcldpdGhPcHRpb25zIGNyZWF0ZXMgaHR0cC5IYW5kbGVyIHdpdGggYWRkaXRpb25hbCBvcHRpb25zCmZ1bmMgSGFuZGxlcldpdGhPcHRpb25zKHNpIFNlcnZlckludGVyZmFjZSwgb3B0aW9ucyBTdGRIVFRQU2VydmVyT3B0aW9ucykgaHR0cC5IYW5kbGVyIHsKCW0gOj0gb3B0aW9ucy5CYXNlUm91dGVyCgoJLy8gLi4uIG9taXR0ZWQgZm9yIGJyZXZpdHkKCgltLkhhbmRsZUZ1bmMoIkdFVCAiK29wdGlvbnMuQmFzZVVSTCsiL3BpbmciLCB3cmFwcGVyLkdldFBpbmcpCgoJcmV0dXJuIG0KfQpgYGAKClRvIGltcGxlbWVudCB0aGlzIEhUVFAgc2VydmVyLCB3ZSBuZWVkIHRvIHdyaXRlIHRoZSBmb2xsb3dpbmcgY29kZSBpbiBvdXIgW2BhcGkvaW1wbC5nb2BdKGV4YW1wbGVzL21pbmltYWwtc2VydmVyL3N0ZGh0dHAvYXBpL2ltcGwuZ28pOgoKYGBgZ28KaW1wb3J0ICgKCSJlbmNvZGluZy9qc29uIgoJIm5ldC9odHRwIgopCgovLyBvcHRpb25hbCBjb2RlIG9taXR0ZWQKCnR5cGUgU2VydmVyIHN0cnVjdHt9CgpmdW5jIE5ld1NlcnZlcigpIFNlcnZlciB7CglyZXR1cm4gU2VydmVye30KfQoKLy8gKEdFVCAvcGluZykKZnVuYyAoU2VydmVyKSBHZXRQaW5nKHcgaHR0cC5SZXNwb25zZVdyaXRlciwgciAqaHR0cC5SZXF1ZXN0KSB7CglyZXNwIDo9IFBvbmd7CgkJUGluZzogInBvbmciLAoJfQoKCXcuV3JpdGVIZWFkZXIoaHR0cC5TdGF0dXNPSykKCV8gPSBqc29uLk5ld0VuY29kZXIodykuRW5jb2RlKHJlc3ApCn0KYGBgCgpOb3cgd2UndmUgZ290IG91ciBpbXBsZW1lbnRhdGlvbiwgd2UgY2FuIHRoZW4gd3JpdGUgdGhlIGZvbGxvd2luZyBjb2RlIHRvIHdpcmUgaXQgdXAgYW5kIGdldCBhIHJ1bm5pbmcgc2VydmVyOgoKYGBgZ28KaW1wb3J0ICgKCSJsb2ciCgkibmV0L2h0dHAiCgoJImdpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi92Mi9leGFtcGxlcy9taW5pbWFsLXNlcnZlci9zdGRodHRwL2FwaSIKKQoKZnVuYyBtYWluKCkgewoJLy8gY3JlYXRlIGEgdHlwZSB0aGF0IHNhdGlzZmllcyB0aGUgYGFwaS5TZXJ2ZXJJbnRlcmZhY2VgLCB3aGljaCBjb250YWlucyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBldmVyeSBvcGVyYXRpb24gZnJvbSB0aGUgZ2VuZXJhdGVkIGNvZGUKCXNlcnZlciA6PSBhcGkuTmV3U2VydmVyKCkKCglyIDo9IGh0dHAuTmV3U2VydmVNdXgoKQoKCS8vIGdldCBhbiBgaHR0cC5IYW5kbGVyYCB0aGF0IHdlIGNhbiB1c2UKCWggOj0gYXBpLkhhbmRsZXJGcm9tTXV4KHNlcnZlciwgcikKCglzIDo9ICZodHRwLlNlcnZlcnsKCQlIYW5kbGVyOiBoLAoJCUFkZHI6ICAgICIwLjAuMC4wOjgwODAiLAoJfQoKCS8vIEFuZCB3ZSBzZXJ2ZSBIVFRQIHVudGlsIHRoZSB3b3JsZCBlbmRzLgoJbG9nLkZhdGFsKHMuTGlzdGVuQW5kU2VydmUoKSkKfQpgYGAKCj4gWyFOT1RFXQo+IFRoaXMgZG9lc24ndCBpbmNsdWRlIFt2YWxpZGF0aW9uIG9mIGluY29taW5nIHJlcXVlc3RzXSgjcmVxdWVzdHJlc3BvbnNlLXZhbGlkYXRpb24tbWlkZGxld2FyZSkuCgo+IFshTk9URV0KPiBJZiB5b3UgZmVlbCBsaWtlIHlvdSd2ZSBkb25lIGV2ZXJ5dGhpbmcgcmlnaHQsIGJ1dCBhcmUgc3RpbGwgcmVjZWl2aW5nIGA0MDQgcGFnZSBub3QgZm91bmRgIGVycm9ycywgbWFrZSBzdXJlIHRoYXQgeW91J3ZlIGdvdCB0aGUgYGdvYCBkaXJlY3RpdmUgaW4geW91ciBgZ28ubW9kYCB1cGRhdGVkIHRvOgoKYGBgZ28ubW9kCmdvIDEuMjIKYGBgCgo8L2RldGFpbHM+CgojIyMgQ2hpCjxhIG5hbWU9ImltcGwtY2hpIj48L2E+CgpGb3IgaW5zdGFuY2UsIGxldCdzIHRha2UgdGhpcyBzdHJhaWdodGZvcndhcmQgc3BlY2lmaWNhdGlvbjoKCmBgYHlhbWwKb3BlbmFwaTogIjMuMC4wIgppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IE1pbmltYWwgcGluZyBBUEkgc2VydmVyCnBhdGhzOgogIC9waW5nOgogICAgZ2V0OgogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogcGV0IHJlc3BvbnNlCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Qb25nJwpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICAjIGJhc2UgdHlwZXMKICAgIFBvbmc6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIHBpbmcKICAgICAgcHJvcGVydGllczoKICAgICAgICBwaW5nOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiBwb25nCmBgYAoKVGhpcyB0aGVuIGdlbmVyYXRlcyBjb2RlIHN1Y2ggYXM6CgpgYGBnbwovLyBQb25nIGRlZmluZXMgbW9kZWwgZm9yIFBvbmcuCnR5cGUgUG9uZyBzdHJ1Y3QgewoJUGluZyBzdHJpbmcgYGpzb246InBpbmciYAp9CgovLyBTZXJ2ZXJJbnRlcmZhY2UgcmVwcmVzZW50cyBhbGwgc2VydmVyIGhhbmRsZXJzLgp0eXBlIFNlcnZlckludGVyZmFjZSBpbnRlcmZhY2UgewoKCS8vIChHRVQgL3BpbmcpCglHZXRQaW5nKHcgaHR0cC5SZXNwb25zZVdyaXRlciwgciAqaHR0cC5SZXF1ZXN0KQp9CgovLyBIYW5kbGVyRnJvbU11eCBjcmVhdGVzIGh0dHAuSGFuZGxlciB3aXRoIHJvdXRpbmcgbWF0Y2hpbmcgT3BlbkFQSSBzcGVjIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBtdXguCmZ1bmMgSGFuZGxlckZyb21NdXgoc2kgU2VydmVySW50ZXJmYWNlLCByICptdXguUm91dGVyKSBodHRwLkhhbmRsZXIgewoJcmV0dXJuIEhhbmRsZXJXaXRoT3B0aW9ucyhzaSwgQ2hpU2VydmVyT3B0aW9uc3sKCQlCYXNlUm91dGVyOiByLAoJfSkKfQoKLy8gSGFuZGxlcldpdGhPcHRpb25zIGNyZWF0ZXMgaHR0cC5IYW5kbGVyIHdpdGggYWRkaXRpb25hbCBvcHRpb25zCmZ1bmMgSGFuZGxlcldpdGhPcHRpb25zKHNpIFNlcnZlckludGVyZmFjZSwgb3B0aW9ucyBDaGlTZXJ2ZXJPcHRpb25zKSBodHRwLkhhbmRsZXIgewoJciA6PSBvcHRpb25zLkJhc2VSb3V0ZXIKCgkvLyAuLi4KCglyLkdyb3VwKGZ1bmMociBjaGkuUm91dGVyKSB7CgkJci5HZXQob3B0aW9ucy5CYXNlVVJMKyIvcGluZyIsIHdyYXBwZXIuR2V0UGluZykKCX0pCgoJcmV0dXJuIHIKfQpgYGAKClRvIGltcGxlbWVudCB0aGlzIEhUVFAgc2VydmVyLCB3ZSBuZWVkIHRvIHdyaXRlIHRoZSBmb2xsb3dpbmcgY29kZSBpbiBvdXIgW2BhcGkvaW1wbC5nb2BdKGV4YW1wbGVzL21pbmltYWwtc2VydmVyL2NoaS9hcGkvaW1wbC5nbyk6CgpgYGBnbwppbXBvcnQgKAoJImVuY29kaW5nL2pzb24iCgkibmV0L2h0dHAiCikKCi8vIG9wdGlvbmFsIGNvZGUgb21pdHRlZAoKdHlwZSBTZXJ2ZXIgc3RydWN0e30KCmZ1bmMgTmV3U2VydmVyKCkgU2VydmVyIHsKCXJldHVybiBTZXJ2ZXJ7fQp9CgovLyAoR0VUIC9waW5nKQpmdW5jIChTZXJ2ZXIpIEdldFBpbmcodyBodHRwLlJlc3BvbnNlV3JpdGVyLCByICpodHRwLlJlcXVlc3QpIHsKCXJlc3AgOj0gUG9uZ3sKCQlQaW5nOiAicG9uZyIsCgl9CgoJdy5Xcml0ZUhlYWRlcihodHRwLlN0YXR1c09LKQoJXyA9IGpzb24uTmV3RW5jb2Rlcih3KS5FbmNvZGUocmVzcCkKfQpgYGAKCk5vdyB3ZSd2ZSBnb3Qgb3VyIGltcGxlbWVudGF0aW9uLCB3ZSBjYW4gdGhlbiB3cml0ZSB0aGUgZm9sbG93aW5nIGNvZGUgdG8gd2lyZSBpdCB1cCBhbmQgZ2V0IGEgcnVubmluZyBzZXJ2ZXI6CgpgYGBnbwppbXBvcnQgKAoJImxvZyIKCSJuZXQvaHR0cCIKCgkiZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL3YyL2V4YW1wbGVzL21pbmltYWwtc2VydmVyL2NoaS9hcGkiCgkiZ2l0aHViLmNvbS9nby1jaGkvY2hpL3Y1IgopCgpmdW5jIG1haW4oKSB7CgkvLyBjcmVhdGUgYSB0eXBlIHRoYXQgc2F0aXNmaWVzIHRoZSBgYXBpLlNlcnZlckludGVyZmFjZWAsIHdoaWNoIGNvbnRhaW5zIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2ZXJ5IG9wZXJhdGlvbiBmcm9tIHRoZSBnZW5lcmF0ZWQgY29kZQoJc2VydmVyIDo9IGFwaS5OZXdTZXJ2ZXIoKQoKCXIgOj0gY2hpLk5ld011eCgpCgoJLy8gZ2V0IGFuIGBodHRwLkhhbmRsZXJgIHRoYXQgd2UgY2FuIHVzZQoJaCA6PSBhcGkuSGFuZGxlckZyb21NdXgoc2VydmVyLCByKQoKCXMgOj0gJmh0dHAuU2VydmVyewoJCUhhbmRsZXI6IGgsCgkJQWRkcjogICAgIjAuMC4wLjA6ODA4MCIsCgl9CgoJLy8gQW5kIHdlIHNlcnZlIEhUVFAgdW50aWwgdGhlIHdvcmxkIGVuZHMuCglsb2cuRmF0YWwocy5MaXN0ZW5BbmRTZXJ2ZSgpKQp9CmBgYAoKPiBbIU5PVEVdCj4gVGhpcyBkb2Vzbid0IGluY2x1ZGUgW3ZhbGlkYXRpb24gb2YgaW5jb21pbmcgcmVxdWVzdHNdKCNyZXF1ZXN0cmVzcG9uc2UtdmFsaWRhdGlvbi1taWRkbGV3YXJlKS4KCiMjIyBnb3JpbGxhL211eAo8YSBuYW1lPSJpbXBsLWdvcmlsbGFtdXgiPjwvYT4KCkZvciBpbnN0YW5jZSwgbGV0J3MgdGFrZSB0aGlzIHN0cmFpZ2h0Zm9yd2FyZCBzcGVjaWZpY2F0aW9uOgoKYGBgeWFtbApvcGVuYXBpOiAiMy4wLjAiCmluZm86CiAgdmVyc2lvbjogMS4wLjAKICB0aXRsZTogTWluaW1hbCBwaW5nIEFQSSBzZXJ2ZXIKcGF0aHM6CiAgL3Bpbmc6CiAgICBnZXQ6CiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBwZXQgcmVzcG9uc2UKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BvbmcnCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgICMgYmFzZSB0eXBlcwogICAgUG9uZzoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gcGluZwogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIHBpbmc6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGV4YW1wbGU6IHBvbmcKYGBgCgpUaGlzIHRoZW4gZ2VuZXJhdGVzIGNvZGUgc3VjaCBhczoKCmBgYGdvCi8vIFBvbmcgZGVmaW5lcyBtb2RlbCBmb3IgUG9uZy4KdHlwZSBQb25nIHN0cnVjdCB7CglQaW5nIHN0cmluZyBganNvbjoicGluZyJgCn0KCi8vIFNlcnZlckludGVyZmFjZSByZXByZXNlbnRzIGFsbCBzZXJ2ZXIgaGFuZGxlcnMuCnR5cGUgU2VydmVySW50ZXJmYWNlIGludGVyZmFjZSB7CgoJLy8gKEdFVCAvcGluZykKCUdldFBpbmcodyBodHRwLlJlc3BvbnNlV3JpdGVyLCByICpodHRwLlJlcXVlc3QpCn0KCi8vIEhhbmRsZXJGcm9tTXV4IGNyZWF0ZXMgaHR0cC5IYW5kbGVyIHdpdGggcm91dGluZyBtYXRjaGluZyBPcGVuQVBJIHNwZWMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIG11eC4KZnVuYyBIYW5kbGVyRnJvbU11eChzaSBTZXJ2ZXJJbnRlcmZhY2UsIHIgKm11eC5Sb3V0ZXIpIGh0dHAuSGFuZGxlciB7CglyZXR1cm4gSGFuZGxlcldpdGhPcHRpb25zKHNpLCBHb3JpbGxhU2VydmVyT3B0aW9uc3sKCQlCYXNlUm91dGVyOiByLAoJfSkKfQoKLy8gSGFuZGxlcldpdGhPcHRpb25zIGNyZWF0ZXMgaHR0cC5IYW5kbGVyIHdpdGggYWRkaXRpb25hbCBvcHRpb25zCmZ1bmMgSGFuZGxlcldpdGhPcHRpb25zKHNpIFNlcnZlckludGVyZmFjZSwgb3B0aW9ucyBHb3JpbGxhU2VydmVyT3B0aW9ucykgaHR0cC5IYW5kbGVyIHsKCXIgOj0gb3B0aW9ucy5CYXNlUm91dGVyCgoJLy8gLi4uCgoJci5IYW5kbGVGdW5jKG9wdGlvbnMuQmFzZVVSTCsiL3BpbmciLCB3cmFwcGVyLkdldFBpbmcpLk1ldGhvZHMoIkdFVCIpCgoJcmV0dXJuIHIKfQpgYGAKClRvIGltcGxlbWVudCB0aGlzIEhUVFAgc2VydmVyLCB3ZSBuZWVkIHRvIHdyaXRlIHRoZSBmb2xsb3dpbmcgY29kZSBpbiBvdXIgW2BhcGkvaW1wbC5nb2BdKGV4YW1wbGVzL21pbmltYWwtc2VydmVyL2dvcmlsbGFtdXgvYXBpL2ltcGwuZ28pOgoKYGBgZ28KaW1wb3J0ICgKCSJlbmNvZGluZy9qc29uIgoJIm5ldC9odHRwIgopCgovLyBvcHRpb25hbCBjb2RlIG9taXR0ZWQKCnR5cGUgU2VydmVyIHN0cnVjdHt9CgpmdW5jIE5ld1NlcnZlcigpIFNlcnZlciB7CglyZXR1cm4gU2VydmVye30KfQoKLy8gKEdFVCAvcGluZykKZnVuYyAoU2VydmVyKSBHZXRQaW5nKHcgaHR0cC5SZXNwb25zZVdyaXRlciwgciAqaHR0cC5SZXF1ZXN0KSB7CglyZXNwIDo9IFBvbmd7CgkJUGluZzogInBvbmciLAoJfQoKCXcuV3JpdGVIZWFkZXIoaHR0cC5TdGF0dXNPSykKCV8gPSBqc29uLk5ld0VuY29kZXIodykuRW5jb2RlKHJlc3ApCn0KYGBgCgpOb3cgd2UndmUgZ290IG91ciBpbXBsZW1lbnRhdGlvbiwgd2UgY2FuIHRoZW4gd3JpdGUgdGhlIGZvbGxvd2luZyBjb2RlIHRvIHdpcmUgaXQgdXAgYW5kIGdldCBhIHJ1bm5pbmcgc2VydmVyOgoKYGBgZ28KaW1wb3J0ICgKCSJsb2ciCgkibmV0L2h0dHAiCgoJImdpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi92Mi9leGFtcGxlcy9taW5pbWFsLXNlcnZlci9nb3JpbGxhbXV4L2FwaSIKCSJnaXRodWIuY29tL2dvcmlsbGEvbXV4IgopCgpmdW5jIG1haW4oKSB7CgkvLyBjcmVhdGUgYSB0eXBlIHRoYXQgc2F0aXNmaWVzIHRoZSBgYXBpLlNlcnZlckludGVyZmFjZWAsIHdoaWNoIGNvbnRhaW5zIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2ZXJ5IG9wZXJhdGlvbiBmcm9tIHRoZSBnZW5lcmF0ZWQgY29kZQoJc2VydmVyIDo9IGFwaS5OZXdTZXJ2ZXIoKQoKCXIgOj0gbXV4Lk5ld1JvdXRlcigpCgoJLy8gZ2V0IGFuIGBodHRwLkhhbmRsZXJgIHRoYXQgd2UgY2FuIHVzZQoJaCA6PSBhcGkuSGFuZGxlckZyb21NdXgoc2VydmVyLCByKQoKCXMgOj0gJmh0dHAuU2VydmVyewoJCUhhbmRsZXI6IGgsCgkJQWRkcjogICAgIjAuMC4wLjA6ODA4MCIsCgl9CgoJLy8gQW5kIHdlIHNlcnZlIEhUVFAgdW50aWwgdGhlIHdvcmxkIGVuZHMuCglsb2cuRmF0YWwocy5MaXN0ZW5BbmRTZXJ2ZSgpKQp9CmBgYAoKPiBbIU5PVEVdCj4gVGhpcyBkb2Vzbid0IGluY2x1ZGUgW3ZhbGlkYXRpb24gb2YgaW5jb21pbmcgcmVxdWVzdHNdKCNyZXF1ZXN0cmVzcG9uc2UtdmFsaWRhdGlvbi1taWRkbGV3YXJlKS4KCiMjIyBFY2hvIHNlcnZlcgo8YSBuYW1lPSJpbXBsLWVjaG8iPjwvYT4KCkZvciBpbnN0YW5jZSwgbGV0J3MgdGFrZSB0aGlzIHN0cmFpZ2h0Zm9yd2FyZCBzcGVjaWZpY2F0aW9uOgoKYGBgeWFtbApvcGVuYXBpOiAiMy4wLjAiCmluZm86CiAgdmVyc2lvbjogMS4wLjAKICB0aXRsZTogTWluaW1hbCBwaW5nIEFQSSBzZXJ2ZXIKcGF0aHM6CiAgL3Bpbmc6CiAgICBnZXQ6CiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBwZXQgcmVzcG9uc2UKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BvbmcnCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgICMgYmFzZSB0eXBlcwogICAgUG9uZzoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gcGluZwogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIHBpbmc6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGV4YW1wbGU6IHBvbmcKYGBgCgpUaGlzIHRoZW4gZ2VuZXJhdGVzIGNvZGUgc3VjaCBhczoKCmBgYGdvCi8vIFBvbmcgZGVmaW5lcyBtb2RlbCBmb3IgUG9uZy4KdHlwZSBQb25nIHN0cnVjdCB7CglQaW5nIHN0cmluZyBganNvbjoicGluZyJgCn0KCi8vIFNlcnZlckludGVyZmFjZSByZXByZXNlbnRzIGFsbCBzZXJ2ZXIgaGFuZGxlcnMuCnR5cGUgU2VydmVySW50ZXJmYWNlIGludGVyZmFjZSB7CgoJLy8gKEdFVCAvcGluZykKCUdldFBpbmcoY3R4IGVjaG8uQ29udGV4dCkgZXJyb3IKfQoKLy8gVGhpcyBpcyBhIHNpbXBsZSBpbnRlcmZhY2Ugd2hpY2ggc3BlY2lmaWVzIGVjaG8uUm91dGUgYWRkaXRpb24gZnVuY3Rpb25zIHdoaWNoCi8vIGFyZSBwcmVzZW50IG9uIGJvdGggZWNoby5FY2hvIGFuZCBlY2hvLkdyb3VwLCBzaW5jZSB3ZSB3YW50IHRvIGFsbG93IHVzaW5nCi8vIGVpdGhlciBvZiB0aGVtIGZvciBwYXRoIHJlZ2lzdHJhdGlvbgp0eXBlIEVjaG9Sb3V0ZXIgaW50ZXJmYWNlIHsKCS8vIC4uLgoJR0VUKHBhdGggc3RyaW5nLCBoIGVjaG8uSGFuZGxlckZ1bmMsIG0gLi4uZWNoby5NaWRkbGV3YXJlRnVuYykgKmVjaG8uUm91dGUKCS8vIC4uLgp9CgovLyBSZWdpc3RlckhhbmRsZXJzIGFkZHMgZWFjaCBzZXJ2ZXIgcm91dGUgdG8gdGhlIEVjaG9Sb3V0ZXIuCmZ1bmMgUmVnaXN0ZXJIYW5kbGVycyhyb3V0ZXIgRWNob1JvdXRlciwgc2kgU2VydmVySW50ZXJmYWNlKSB7CglSZWdpc3RlckhhbmRsZXJzV2l0aEJhc2VVUkwocm91dGVyLCBzaSwgIiIpCn0KCi8vIFJlZ2lzdGVycyBoYW5kbGVycywgYW5kIHByZXBlbmRzIEJhc2VVUkwgdG8gdGhlIHBhdGhzLCBzbyB0aGF0IHRoZSBwYXRocwovLyBjYW4gYmUgc2VydmVkIHVuZGVyIGEgcHJlZml4LgpmdW5jIFJlZ2lzdGVySGFuZGxlcnNXaXRoQmFzZVVSTChyb3V0ZXIgRWNob1JvdXRlciwgc2kgU2VydmVySW50ZXJmYWNlLCBiYXNlVVJMIHN0cmluZykgewoJLy8gLi4uCgoJcm91dGVyLkdFVChiYXNlVVJMKyIvcGluZyIsIHdyYXBwZXIuR2V0UGluZykKCn0KYGBgCgpUbyBpbXBsZW1lbnQgdGhpcyBIVFRQIHNlcnZlciwgd2UgbmVlZCB0byB3cml0ZSB0aGUgZm9sbG93aW5nIGNvZGUgaW4gb3VyIFtgYXBpL2ltcGwuZ29gXShleGFtcGxlcy9taW5pbWFsLXNlcnZlci9lY2hvL2FwaS9pbXBsLmdvKToKCmBgYGdvCmltcG9ydCAoCgkibmV0L2h0dHAiCgoJImdpdGh1Yi5jb20vbGFic3RhY2svZWNoby92NCIKKQoKLy8gb3B0aW9uYWwgY29kZSBvbWl0dGVkCgp0eXBlIFNlcnZlciBzdHJ1Y3R7fQoKZnVuYyBOZXdTZXJ2ZXIoKSBTZXJ2ZXIgewoJcmV0dXJuIFNlcnZlcnt9Cn0KCi8vIChHRVQgL3BpbmcpCmZ1bmMgKFNlcnZlcikgR2V0UGluZyhjdHggZWNoby5Db250ZXh0KSBlcnJvciB7CglyZXNwIDo9IFBvbmd7CgkJUGluZzogInBvbmciLAoJfQoKCXJldHVybiBjdHguSlNPTihodHRwLlN0YXR1c09LLCByZXNwKQp9CmBgYAoKTm93IHdlJ3ZlIGdvdCBvdXIgaW1wbGVtZW50YXRpb24sIHdlIGNhbiB0aGVuIHdyaXRlIHRoZSBmb2xsb3dpbmcgY29kZSB0byB3aXJlIGl0IHVwIGFuZCBnZXQgYSBydW5uaW5nIHNlcnZlcjoKCmBgYGdvCmltcG9ydCAoCgkibG9nIgoKCSJnaXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vdjIvZXhhbXBsZXMvbWluaW1hbC1zZXJ2ZXIvZWNoby9hcGkiCgkiZ2l0aHViLmNvbS9sYWJzdGFjay9lY2hvL3Y0IgopCgpmdW5jIG1haW4oKSB7CgkvLyBjcmVhdGUgYSB0eXBlIHRoYXQgc2F0aXNmaWVzIHRoZSBgYXBpLlNlcnZlckludGVyZmFjZWAsIHdoaWNoIGNvbnRhaW5zIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2ZXJ5IG9wZXJhdGlvbiBmcm9tIHRoZSBnZW5lcmF0ZWQgY29kZQoJc2VydmVyIDo9IGFwaS5OZXdTZXJ2ZXIoKQoKCWUgOj0gZWNoby5OZXcoKQoKCWFwaS5SZWdpc3RlckhhbmRsZXJzKGUsIHNlcnZlcikKCgkvLyBBbmQgd2Ugc2VydmUgSFRUUCB1bnRpbCB0aGUgd29ybGQgZW5kcy4KCWxvZy5GYXRhbChlLlN0YXJ0KCIwLjAuMC4wOjgwODAiKSkKfQpgYGAKCj4gWyFOT1RFXQo+IFRoaXMgZG9lc24ndCBpbmNsdWRlIFt2YWxpZGF0aW9uIG9mIGluY29taW5nIHJlcXVlc3RzXSgjcmVxdWVzdHJlc3BvbnNlLXZhbGlkYXRpb24tbWlkZGxld2FyZSkuCgojIyMgRmliZXIgc2VydmVyCjxhIG5hbWU9ImltcGwtZmliZXIiPjwvYT4KCkZvciBpbnN0YW5jZSwgbGV0J3MgdGFrZSB0aGlzIHN0cmFpZ2h0Zm9yd2FyZCBzcGVjaWZpY2F0aW9uOgoKYGBgeWFtbApvcGVuYXBpOiAiMy4wLjAiCmluZm86CiAgdmVyc2lvbjogMS4wLjAKICB0aXRsZTogTWluaW1hbCBwaW5nIEFQSSBzZXJ2ZXIKcGF0aHM6CiAgL3Bpbmc6CiAgICBnZXQ6CiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBwZXQgcmVzcG9uc2UKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BvbmcnCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgICMgYmFzZSB0eXBlcwogICAgUG9uZzoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gcGluZwogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIHBpbmc6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGV4YW1wbGU6IHBvbmcKYGBgCgpUaGlzIHRoZW4gZ2VuZXJhdGVzIGNvZGUgc3VjaCBhczoKCmBgYGdvCi8vIFBvbmcgZGVmaW5lcyBtb2RlbCBmb3IgUG9uZy4KdHlwZSBQb25nIHN0cnVjdCB7CglQaW5nIHN0cmluZyBganNvbjoicGluZyJgCn0KCi8vIFNlcnZlckludGVyZmFjZSByZXByZXNlbnRzIGFsbCBzZXJ2ZXIgaGFuZGxlcnMuCnR5cGUgU2VydmVySW50ZXJmYWNlIGludGVyZmFjZSB7CgoJLy8gKEdFVCAvcGluZykKCUdldFBpbmcoYyAqZmliZXIuQ3R4KSBlcnJvcgp9CgovLyBSZWdpc3RlckhhbmRsZXJzIGNyZWF0ZXMgaHR0cC5IYW5kbGVyIHdpdGggcm91dGluZyBtYXRjaGluZyBPcGVuQVBJIHNwZWMuCmZ1bmMgUmVnaXN0ZXJIYW5kbGVycyhyb3V0ZXIgZmliZXIuUm91dGVyLCBzaSBTZXJ2ZXJJbnRlcmZhY2UpIHsKCVJlZ2lzdGVySGFuZGxlcnNXaXRoT3B0aW9ucyhyb3V0ZXIsIHNpLCBGaWJlclNlcnZlck9wdGlvbnN7fSkKfQoKLy8gUmVnaXN0ZXJIYW5kbGVyc1dpdGhPcHRpb25zIGNyZWF0ZXMgaHR0cC5IYW5kbGVyIHdpdGggYWRkaXRpb25hbCBvcHRpb25zCmZ1bmMgUmVnaXN0ZXJIYW5kbGVyc1dpdGhPcHRpb25zKHJvdXRlciBmaWJlci5Sb3V0ZXIsIHNpIFNlcnZlckludGVyZmFjZSwgb3B0aW9ucyBGaWJlclNlcnZlck9wdGlvbnMpIHsKCS8vIC4uLgoKCXJvdXRlci5HZXQob3B0aW9ucy5CYXNlVVJMKyIvcGluZyIsIHdyYXBwZXIuR2V0UGluZykKfQpgYGAKClRvIGltcGxlbWVudCB0aGlzIEhUVFAgc2VydmVyLCB3ZSBuZWVkIHRvIHdyaXRlIHRoZSBmb2xsb3dpbmcgY29kZSBpbiBvdXIgW2BhcGkvaW1wbC5nb2BdKGV4YW1wbGVzL21pbmltYWwtc2VydmVyL2ZpYmVyL2FwaS9pbXBsLmdvKToKCmBgYGdvCmltcG9ydCAoCgkibmV0L2h0dHAiCgoJImdpdGh1Yi5jb20vZ29maWJlci9maWJlci92MiIKKQoKLy8gZW5zdXJlIHRoYXQgd2UndmUgY29uZm9ybWVkIHRvIHRoZSBgU2VydmVySW50ZXJmYWNlYCB3aXRoIGEgY29tcGlsZS10aW1lIGNoZWNrCnZhciBfIFNlcnZlckludGVyZmFjZSA9ICgqU2VydmVyKShuaWwpCgp0eXBlIFNlcnZlciBzdHJ1Y3R7fQoKZnVuYyBOZXdTZXJ2ZXIoKSBTZXJ2ZXIgewoJcmV0dXJuIFNlcnZlcnt9Cn0KCi8vIChHRVQgL3BpbmcpCmZ1bmMgKFNlcnZlcikgR2V0UGluZyhjdHggKmZpYmVyLkN0eCkgZXJyb3IgewoJcmVzcCA6PSBQb25newoJCVBpbmc6ICJwb25nIiwKCX0KCglyZXR1cm4gY3R4LgoJCVN0YXR1cyhodHRwLlN0YXR1c09LKS4KCQlKU09OKHJlc3ApCn0KYGBgCgpOb3cgd2UndmUgZ290IG91ciBpbXBsZW1lbnRhdGlvbiwgd2UgY2FuIHRoZW4gd3JpdGUgdGhlIGZvbGxvd2luZyBjb2RlIHRvIHdpcmUgaXQgdXAgYW5kIGdldCBhIHJ1bm5pbmcgc2VydmVyOgoKYGBgZ28KaW1wb3J0ICgKCSJsb2ciCgoJImdpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi92Mi9leGFtcGxlcy9taW5pbWFsLXNlcnZlci9maWJlci9hcGkiCgkiZ2l0aHViLmNvbS9nb2ZpYmVyL2ZpYmVyL3YyIgopCgpmdW5jIG1haW4oKSB7CgkvLyBjcmVhdGUgYSB0eXBlIHRoYXQgc2F0aXNmaWVzIHRoZSBgYXBpLlNlcnZlckludGVyZmFjZWAsIHdoaWNoIGNvbnRhaW5zIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2ZXJ5IG9wZXJhdGlvbiBmcm9tIHRoZSBnZW5lcmF0ZWQgY29kZQoJc2VydmVyIDo9IGFwaS5OZXdTZXJ2ZXIoKQoKCWFwcCA6PSBmaWJlci5OZXcoKQoKCWFwaS5SZWdpc3RlckhhbmRsZXJzKGFwcCwgc2VydmVyKQoKCS8vIEFuZCB3ZSBzZXJ2ZSBIVFRQIHVudGlsIHRoZSB3b3JsZCBlbmRzLgoJbG9nLkZhdGFsKGFwcC5MaXN0ZW4oIjAuMC4wLjA6ODA4MCIpKQp9CmBgYAoKPiBbIU5PVEVdCj4gVGhpcyBkb2Vzbid0IGluY2x1ZGUgW3ZhbGlkYXRpb24gb2YgaW5jb21pbmcgcmVxdWVzdHNdKCNyZXF1ZXN0cmVzcG9uc2UtdmFsaWRhdGlvbi1taWRkbGV3YXJlKS4KCiMjIyBHaW4gc2VydmVyCjxhIG5hbWU9ImltcGwtZ2luIj48L2E+CgpGb3IgaW5zdGFuY2UsIGxldCdzIHRha2UgdGhpcyBzdHJhaWdodGZvcndhcmQgc3BlY2lmaWNhdGlvbjoKCmBgYHlhbWwKb3BlbmFwaTogIjMuMC4wIgppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IE1pbmltYWwgcGluZyBBUEkgc2VydmVyCnBhdGhzOgogIC9waW5nOgogICAgZ2V0OgogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogcGV0IHJlc3BvbnNlCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Qb25nJwpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICAjIGJhc2UgdHlwZXMKICAgIFBvbmc6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIHBpbmcKICAgICAgcHJvcGVydGllczoKICAgICAgICBwaW5nOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiBwb25nCmBgYAoKVGhpcyB0aGVuIGdlbmVyYXRlcyBjb2RlIHN1Y2ggYXM6CgpgYGBnbwovLyBQb25nIGRlZmluZXMgbW9kZWwgZm9yIFBvbmcuCnR5cGUgUG9uZyBzdHJ1Y3QgewoJUGluZyBzdHJpbmcgYGpzb246InBpbmciYAp9CgovLyBTZXJ2ZXJJbnRlcmZhY2UgcmVwcmVzZW50cyBhbGwgc2VydmVyIGhhbmRsZXJzLgp0eXBlIFNlcnZlckludGVyZmFjZSBpbnRlcmZhY2UgewoKCS8vIChHRVQgL3BpbmcpCglHZXRQaW5nKGMgKmdpbi5Db250ZXh0KQp9CgovLyBSZWdpc3RlckhhbmRsZXJzIGNyZWF0ZXMgaHR0cC5IYW5kbGVyIHdpdGggcm91dGluZyBtYXRjaGluZyBPcGVuQVBJIHNwZWMuCmZ1bmMgUmVnaXN0ZXJIYW5kbGVycyhyb3V0ZXIgZ2luLklSb3V0ZXIsIHNpIFNlcnZlckludGVyZmFjZSkgewoJUmVnaXN0ZXJIYW5kbGVyc1dpdGhPcHRpb25zKHJvdXRlciwgc2ksIEdpblNlcnZlck9wdGlvbnN7fSkKfQoKLy8gUmVnaXN0ZXJIYW5kbGVyc1dpdGhPcHRpb25zIGNyZWF0ZXMgaHR0cC5IYW5kbGVyIHdpdGggYWRkaXRpb25hbCBvcHRpb25zCmZ1bmMgUmVnaXN0ZXJIYW5kbGVyc1dpdGhPcHRpb25zKHJvdXRlciBnaW4uSVJvdXRlciwgc2kgU2VydmVySW50ZXJmYWNlLCBvcHRpb25zIEdpblNlcnZlck9wdGlvbnMpIHsKCS8vIC4uLgoKCXJvdXRlci5HRVQob3B0aW9ucy5CYXNlVVJMKyIvcGluZyIsIHdyYXBwZXIuR2V0UGluZykKfQpgYGAKClRvIGltcGxlbWVudCB0aGlzIEhUVFAgc2VydmVyLCB3ZSBuZWVkIHRvIHdyaXRlIHRoZSBmb2xsb3dpbmcgY29kZSBpbiBvdXIgW2BhcGkvaW1wbC5nb2BdKGV4YW1wbGVzL21pbmltYWwtc2VydmVyL2dvcmlsbGFtdXgvYXBpL2ltcGwuZ28pOgoKYGBgZ28KaW1wb3J0ICgKCSJuZXQvaHR0cCIKCgkiZ2l0aHViLmNvbS9naW4tZ29uaWMvZ2luIgopCgovLyBvcHRpb25hbCBjb2RlIG9taXR0ZWQKCnR5cGUgU2VydmVyIHN0cnVjdHt9CgpmdW5jIE5ld1NlcnZlcigpIFNlcnZlciB7CglyZXR1cm4gU2VydmVye30KfQoKLy8gKEdFVCAvcGluZykKZnVuYyAoU2VydmVyKSBHZXRQaW5nKGN0eCAqZ2luLkNvbnRleHQpIHsKCXJlc3AgOj0gUG9uZ3sKCQlQaW5nOiAicG9uZyIsCgl9CgoJY3R4LkpTT04oaHR0cC5TdGF0dXNPSywgcmVzcCkKfQpgYGAKCk5vdyB3ZSd2ZSBnb3Qgb3VyIGltcGxlbWVudGF0aW9uLCB3ZSBjYW4gdGhlbiB3cml0ZSB0aGUgZm9sbG93aW5nIGNvZGUgdG8gd2lyZSBpdCB1cCBhbmQgZ2V0IGEgcnVubmluZyBzZXJ2ZXI6CgpgYGBnbwppbXBvcnQgKAoJImxvZyIKCSJuZXQvaHR0cCIKCgkiZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL3YyL2V4YW1wbGVzL21pbmltYWwtc2VydmVyL2dpbi9hcGkiCgkiZ2l0aHViLmNvbS9naW4tZ29uaWMvZ2luIgopCgpmdW5jIG1haW4oKSB7CgkvLyBjcmVhdGUgYSB0eXBlIHRoYXQgc2F0aXNmaWVzIHRoZSBgYXBpLlNlcnZlckludGVyZmFjZWAsIHdoaWNoIGNvbnRhaW5zIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2ZXJ5IG9wZXJhdGlvbiBmcm9tIHRoZSBnZW5lcmF0ZWQgY29kZQoJc2VydmVyIDo9IGFwaS5OZXdTZXJ2ZXIoKQoKCXIgOj0gZ2luLkRlZmF1bHQoKQoKCWFwaS5SZWdpc3RlckhhbmRsZXJzKHIsIHNlcnZlcikKCgkvLyBBbmQgd2Ugc2VydmUgSFRUUCB1bnRpbCB0aGUgd29ybGQgZW5kcy4KCglzIDo9ICZodHRwLlNlcnZlcnsKCQlIYW5kbGVyOiByLAoJCUFkZHI6ICAgICIwLjAuMC4wOjgwODAiLAoJfQoKCS8vIEFuZCB3ZSBzZXJ2ZSBIVFRQIHVudGlsIHRoZSB3b3JsZCBlbmRzLgoJbG9nLkZhdGFsKHMuTGlzdGVuQW5kU2VydmUoKSkKfQpgYGAKCj4gWyFOT1RFXQo+IFRoaXMgZG9lc24ndCBpbmNsdWRlIFt2YWxpZGF0aW9uIG9mIGluY29taW5nIHJlcXVlc3RzXSgjcmVxdWVzdHJlc3BvbnNlLXZhbGlkYXRpb24tbWlkZGxld2FyZSkuCgojIyMgSXJpcyBzZXJ2ZXIKPGEgbmFtZT0iaW1wbC1pcmlzIj48L2E+CgpGb3IgaW5zdGFuY2UsIGxldCdzIHRha2UgdGhpcyBzdHJhaWdodGZvcndhcmQgc3BlY2lmaWNhdGlvbjoKCmBgYHlhbWwKb3BlbmFwaTogIjMuMC4wIgppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IE1pbmltYWwgcGluZyBBUEkgc2VydmVyCnBhdGhzOgogIC9waW5nOgogICAgZ2V0OgogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogcGV0IHJlc3BvbnNlCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Qb25nJwpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICAjIGJhc2UgdHlwZXMKICAgIFBvbmc6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIHBpbmcKICAgICAgcHJvcGVydGllczoKICAgICAgICBwaW5nOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiBwb25nCmBgYAoKVGhpcyB0aGVuIGdlbmVyYXRlcyBjb2RlIHN1Y2ggYXM6CgpgYGBnbwovLyBQb25nIGRlZmluZXMgbW9kZWwgZm9yIFBvbmcuCnR5cGUgUG9uZyBzdHJ1Y3QgewoJUGluZyBzdHJpbmcgYGpzb246InBpbmciYAp9CgovLyBTZXJ2ZXJJbnRlcmZhY2UgcmVwcmVzZW50cyBhbGwgc2VydmVyIGhhbmRsZXJzLgp0eXBlIFNlcnZlckludGVyZmFjZSBpbnRlcmZhY2UgewoKCS8vIChHRVQgL3BpbmcpCglHZXRQaW5nKGN0eCBpcmlzLkNvbnRleHQpCn0KCi8vIFJlZ2lzdGVySGFuZGxlcnMgY3JlYXRlcyBodHRwLkhhbmRsZXIgd2l0aCByb3V0aW5nIG1hdGNoaW5nIE9wZW5BUEkgc3BlYy4KZnVuYyBSZWdpc3RlckhhbmRsZXJzKHJvdXRlciAqaXJpcy5BcHBsaWNhdGlvbiwgc2kgU2VydmVySW50ZXJmYWNlKSB7CglSZWdpc3RlckhhbmRsZXJzV2l0aE9wdGlvbnMocm91dGVyLCBzaSwgSXJpc1NlcnZlck9wdGlvbnN7fSkKfQoKLy8gUmVnaXN0ZXJIYW5kbGVyc1dpdGhPcHRpb25zIGNyZWF0ZXMgaHR0cC5IYW5kbGVyIHdpdGggYWRkaXRpb25hbCBvcHRpb25zCmZ1bmMgUmVnaXN0ZXJIYW5kbGVyc1dpdGhPcHRpb25zKHJvdXRlciAqaXJpcy5BcHBsaWNhdGlvbiwgc2kgU2VydmVySW50ZXJmYWNlLCBvcHRpb25zIElyaXNTZXJ2ZXJPcHRpb25zKSB7CgkvLyAuLi4KCglyb3V0ZXIuR2V0KG9wdGlvbnMuQmFzZVVSTCsiL3BpbmciLCB3cmFwcGVyLkdldFBpbmcpCgoJcm91dGVyLkJ1aWxkKCkKfQpgYGAKClRvIGltcGxlbWVudCB0aGlzIEhUVFAgc2VydmVyLCB3ZSBuZWVkIHRvIHdyaXRlIHRoZSBmb2xsb3dpbmcgY29kZSBpbiBvdXIgW2BhcGkvaW1wbC5nb2BdKGV4YW1wbGVzL21pbmltYWwtc2VydmVyL2dvcmlsbGFtdXgvYXBpL2ltcGwuZ28pOgoKYGBgZ28KaW1wb3J0ICgKCSJuZXQvaHR0cCIKCgkiZ2l0aHViLmNvbS9rYXRhcmFzL2lyaXMvdjEyIgopCgovLyBvcHRpb25hbCBjb2RlIG9taXR0ZWQKCnR5cGUgU2VydmVyIHN0cnVjdHt9CgpmdW5jIE5ld1NlcnZlcigpIFNlcnZlciB7CglyZXR1cm4gU2VydmVye30KfQoKLy8gKEdFVCAvcGluZykKZnVuYyAoU2VydmVyKSBHZXRQaW5nKGN0eCBpcmlzLkNvbnRleHQpIHsKCXJlc3AgOj0gUG9uZ3sKCQlQaW5nOiAicG9uZyIsCgl9CgoJY3R4LlN0YXR1c0NvZGUoaHR0cC5TdGF0dXNPSykKCV8gPSBjdHguSlNPTihyZXNwKQp9CmBgYAoKTm93IHdlJ3ZlIGdvdCBvdXIgaW1wbGVtZW50YXRpb24sIHdlIGNhbiB0aGVuIHdyaXRlIHRoZSBmb2xsb3dpbmcgY29kZSB0byB3aXJlIGl0IHVwIGFuZCBnZXQgYSBydW5uaW5nIHNlcnZlcjoKCmBgYGdvCmltcG9ydCAoCgkibG9nIgoKCSJnaXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vdjIvZXhhbXBsZXMvbWluaW1hbC1zZXJ2ZXIvaXJpcy9hcGkiCgkiZ2l0aHViLmNvbS9rYXRhcmFzL2lyaXMvdjEyIgopCgpmdW5jIG1haW4oKSB7CgkvLyBjcmVhdGUgYSB0eXBlIHRoYXQgc2F0aXNmaWVzIHRoZSBgYXBpLlNlcnZlckludGVyZmFjZWAsIHdoaWNoIGNvbnRhaW5zIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2ZXJ5IG9wZXJhdGlvbiBmcm9tIHRoZSBnZW5lcmF0ZWQgY29kZQoJc2VydmVyIDo9IGFwaS5OZXdTZXJ2ZXIoKQoKCWkgOj0gaXJpcy5EZWZhdWx0KCkKCglhcGkuUmVnaXN0ZXJIYW5kbGVycyhpLCBzZXJ2ZXIpCgoJLy8gQW5kIHdlIHNlcnZlIEhUVFAgdW50aWwgdGhlIHdvcmxkIGVuZHMuCglsb2cuRmF0YWwoaS5MaXN0ZW4oIjAuMC4wLjA6ODA4MCIpKQp9CmBgYAoKPiBbIU5PVEVdCj4gVGhpcyBkb2Vzbid0IGluY2x1ZGUgW3ZhbGlkYXRpb24gb2YgaW5jb21pbmcgcmVxdWVzdHNdKCNyZXF1ZXN0cmVzcG9uc2UtdmFsaWRhdGlvbi1taWRkbGV3YXJlKS4KCiMjIyBTdHJpY3Qgc2VydmVyCgpgb2FwaS1jb2RlZ2VuYCBhbHNvIHN1cHBvcnRzIGdlbmVyYXRpbmcgYSBzZXJ2ZXIgdGhhdCBpcyBtdWNoIG1vcmUgc3RyaWN0IHdpdGggdGhlIGNvbnRyYWN0IHRoYXQgdGhlIGltcGxlbWVudGVyIHJlcXVpcmVzLCBhbmQgdGFrZXMgaW5zcGlyYXRpb24gZnJvbSBzZXJ2ZXItc2lkZSBjb2RlIGdlbmVyYXRpb24gZm9yIFJQQyBzZXJ2ZXJzLgoKVGhpcyB0YWtlcyB0aGUgYm9pbGVycGxhdGUgcmVkdWN0aW9uIGZyb20gdGhlIG5vbi1zdHJpY3Qgc2VydmVycyBhbmQgYWRkcyBhZGRpdGlvbmFsIGJvaWxlcnBsYXRlIHJlZHVjdGlvbiwgYWxsb3dpbmcgeW91IHRvIG1ha2UgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIHRvIHlvdXIgZnVuY3Rpb24gc2lnbmF0dXJlczoKCmBgYGRpZmYKLUZpbmRQZXRzKHcgaHR0cC5SZXNwb25zZVdyaXRlciwgciAqaHR0cC5SZXF1ZXN0LCBwYXJhbXMgRmluZFBldHNQYXJhbXMpCitGaW5kUGV0cyhjdHggY29udGV4dC5Db250ZXh0LCByZXF1ZXN0IEZpbmRQZXRzUmVxdWVzdE9iamVjdCkgKEZpbmRQZXRzUmVzcG9uc2VPYmplY3QsIGVycm9yKQpgYGAKClRoaXMgaXMgdGhlIGhpZ2hlc3QgbGV2ZWwgb2Ygc3RyaWN0bmVzcyB0aGF0IGBvYXBpLWNvZGVnZW5gIHN1cHBvcnRzIHJpZ2h0IG5vdywgYW5kIGl0J3MgYSBnb29kIGlkZWEgdG8gc3RhcnQgd2l0aCB0aGlzIGlmIHlvdSB3YW50IHRoZSBtb3N0IGd1YXJkcmFpbHMgdG8gc2ltcGxpZnkgZGV2ZWxvcGluZyB5b3VyIEFQSXMuCgpUaGUgc3RyaWN0IHNlcnZlciBoYXMgc3VwcG9ydCBmb3I6CgotIG11bHRpcGxlIHJlcXVlc3QvcmVzcG9uc2UgbWVkaWEgdHlwZXMgYW5kIHN0YXR1cyBjb2RlcyBvbiBhIGdpdmVuIG9wZXJhdGlvbgotIGZpcnN0LWNsYXNzIHN1cHBvcnQgZm9yIGBtdWx0aXBhcnQvZm9ybS1kYXRhYCBhbmQgYGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGAgcmVxdWVzdHMKLSByZXR1cm5pbmcgYW4gW0hUVFAgNTAwIEludGVybmFsIFNlcnZlciBFcnJvcl0oaHR0cHM6Ly9odHRwLmNhdC81MDApLCB3aGVuIGFuIGBlcnJvcmAgaXMgcmV0dXJuZWQgZnJvbSBhIGZ1bmN0aW9uCi0gYXV0b21hZ2ljICh1biltYXJzaGFsbGluZyBvZiByZXF1ZXN0L3Jlc3BvbnNlcywgYW5kIHNldHRpbmcgYGNvbnRlbnQtdHlwZWAgYW5kIEhUVFAgc3RhdHVzIGNvZGVzIG9uIHJlc3BvbnNlcwotIGJpbmRpbmcgcmVxdWVzdCB2YWx1ZXMgdG8gYSBzdHJ1Y3QsIGEgYG11bHRpcGFydC5SZWFkZXJgIG9yIHByb3ZpZGluZyBhIGBpby5SZWFkZXJgCgpZb3UgY2FuIHNlZSBhIGxpdHRsZSBtb3JlIGRldGFpbCBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUgaW4gdGhlIFsiV2hhdCBkb2VzIGl0IGxvb2sgbGlrZSJdKCN3aGF0LWRvZXMtaXQtbG9vay1saWtlLXN0cmljdCkgc2VjdGlvbi4KCj4gWyFOT1RFXQo+IFRvIGNvbmZpZ3VyZSB0aGUgc3RyaWN0IHNlcnZlciBnZW5lcmF0aW9uLCB5b3UgbXVzdCBzcGVjaWZ5IGFub3RoZXIgc2VydmVyIHRvIGJlIGdlbmVyYXRlZC4gRm9yIGluc3RhbmNlOgoKYGBgeWFtbAojIHlhbWwtbGFuZ3VhZ2Utc2VydmVyOiAkc2NoZW1hPWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL0hFQUQvY29uZmlndXJhdGlvbi1zY2hlbWEuanNvbgpwYWNrYWdlOiBhcGkKZ2VuZXJhdGU6CiAgIyBOT1RFIGFub3RoZXIgc2VydmVyIG11c3QgYmUgYWRkZWQhCiAgY2hpLXNlcnZlcjogdHJ1ZQogIHN0cmljdC1zZXJ2ZXI6IHRydWUKb3V0cHV0OiBzZXJ2ZXIuZ2VuLmdvCmBgYAoKPiBbIU5PVEVdCj4gVGhpcyBkb2Vzbid0IGluY2x1ZGUgW3ZhbGlkYXRpb24gb2YgaW5jb21pbmcgcmVxdWVzdHNdKCNyZXF1ZXN0cmVzcG9uc2UtdmFsaWRhdGlvbi1taWRkbGV3YXJlKS4KCiMjIEdlbmVyYXRpbmcgQVBJIGNsaWVudHMKCkFzIHdlbGwgYXMgZ2VuZXJhdGluZyB0aGUgc2VydmVyLXNpZGUgYm9pbGVycGxhdGUsIGBvYXBpLWNvZGVnZW5gIGNhbiBhbHNvIGdlbmVyYXRlIEFQSSBjbGllbnRzLgoKVGhpcyBhaW1zIHRvIGJlIGFuIEFQSSBjbGllbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBtZXRob2RzIG9mIHRoZSBBUEksIGFuZCBpcyBwZXJmZWN0bHkgc3VpdGVkIGZvciBwcm9kdWN0aW9uIHVzYWdlLgoKSG93ZXZlciwgaWYgeW91IHdlcmUgbG9va2luZyBmb3IgYSBzbGlnaHRseSBtb3JlIFNESy1zdHlsZSBhcHByb2FjaCwgb3IgYSBtaXggb2YgZ2VuZXJhdGVkIHRlc3RzIGFuZC9vciBkb2N1bWVudGF0aW9uLCB0aGlzIEFQSSBjbGllbnQgbWF5IG5vdCBiZSBmb3IgeW91LCBhbmQgeW91IG1heSB3YW50IHRvIGxvb2sgYXQgYWx0ZXJuYXRlIHRvb2xpbmcuCgpGb3IgaW5zdGFuY2UsIGdpdmVuIGFuIGBhcGkueWFtbGA6CgpgYGB5YW1sCm9wZW5hcGk6ICIzLjAuMCIKaW5mbzoKICB2ZXJzaW9uOiAxLjAuMAogIHRpdGxlOiBHZW5lcmF0ZSBtb2RlbHMKcGF0aHM6CiAgL2NsaWVudDoKICAgIGdldDoKICAgICAgb3BlcmF0aW9uSWQ6IGdldENsaWVudAogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvQ2xpZW50VHlwZSIKICAgIHB1dDoKICAgICAgb3BlcmF0aW9uSWQ6IHVwZGF0ZUNsaWVudAogICAgICByZXNwb25zZXM6CiAgICAgICAgNDAwOgogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgIGNvZGU6CiAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgICByZXF1aXJlZDoKICAgICAgICAgICAgICAgIC0gY29kZQpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBDbGllbnRUeXBlOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBuYW1lCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgbmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgIyBOT1RFIHRoYXQgdGhpcyBpcyBub3QgZ2VuZXJhdGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSBpdCdzIG5vdCByZWZlcmVuY2VkLiBJZiB5b3Ugd2FudCBpdCwgeW91IG5lZWQgdG8gdXNlIHRoZSBmb2xsb3dpbmcgWUFNTCBjb25maWd1cmF0aW9uOgogICAgIwogICAgIyBvdXRwdXQtb3B0aW9uczoKICAgICMgICBza2lwLXBydW5lOiB0cnVlCiAgICBVbnJlZmVyZW5jZWQ6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIGlkCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBpbnRlZ2VyCmBgYAoKQW5kIGEgYGNmZy55YW1sYDoKCmBgYHlhbWwKIyB5YW1sLWxhbmd1YWdlLXNlcnZlcjogJHNjaGVtYT1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9IRUFEL2NvbmZpZ3VyYXRpb24tc2NoZW1hLmpzb24KcGFja2FnZTogY2xpZW50Cm91dHB1dDogY2xpZW50Lmdlbi5nbwpnZW5lcmF0ZToKICBtb2RlbHM6IHRydWUKICBjbGllbnQ6IHRydWUKYGBgCgpBbmQgYSBgZ2VuZXJhdGUuZ29gOgoKYGBgZ28KcGFja2FnZSBjbGllbnQKCi8vZ286Z2VuZXJhdGUgZ28gcnVuIGdpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi92Mi9jbWQvb2FwaS1jb2RlZ2VuIC1jb25maWcgY2ZnLnlhbWwgYXBpLnlhbWwKYGBgCgpUaGlzIHdvdWxkIHRoZW4gZ2VuZXJhdGU6CgpgYGBnbwpwYWNrYWdlIGNsaWVudAoKLy8gLi4uCgovLyBDbGllbnRUeXBlIGRlZmluZXMgbW9kZWwgZm9yIENsaWVudFR5cGUuCnR5cGUgQ2xpZW50VHlwZSBzdHJ1Y3QgewoJTmFtZSBzdHJpbmcgYGpzb246Im5hbWUiYAp9CgovLyAuLi4KCi8vIENsaWVudCB3aGljaCBjb25mb3JtcyB0byB0aGUgT3BlbkFQSTMgc3BlY2lmaWNhdGlvbiBmb3IgdGhpcyBzZXJ2aWNlLgp0eXBlIENsaWVudCBzdHJ1Y3QgewoJLy8gVGhlIGVuZHBvaW50IG9mIHRoZSBzZXJ2ZXIgY29uZm9ybWluZyB0byB0aGlzIGludGVyZmFjZSwgd2l0aCBzY2hlbWUsCgkvLyBodHRwczovL2FwaS5kZWVwbWFwLmNvbSBmb3IgZXhhbXBsZS4gVGhpcyBjYW4gY29udGFpbiBhIHBhdGggcmVsYXRpdmUKCS8vIHRvIHRoZSBzZXJ2ZXIsIHN1Y2ggYXMgaHR0cHM6Ly9hcGkuZGVlcG1hcC5jb20vZGV2LXRlc3QsIGFuZCBhbGwgdGhlCgkvLyBwYXRocyBpbiB0aGUgc3dhZ2dlciBzcGVjIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIHNlcnZlci4KCVNlcnZlciBzdHJpbmcKCgkvLyBEb2VyIGZvciBwZXJmb3JtaW5nIHJlcXVlc3RzLCB0eXBpY2FsbHkgYSAqaHR0cC5DbGllbnQgd2l0aCBhbnkKCS8vIGN1c3RvbWl6ZWQgc2V0dGluZ3MsIHN1Y2ggYXMgY2VydGlmaWNhdGUgY2hhaW5zLgoJQ2xpZW50IEh0dHBSZXF1ZXN0RG9lcgoKCS8vIEEgbGlzdCBvZiBjYWxsYmFja3MgZm9yIG1vZGlmeWluZyByZXF1ZXN0cyB3aGljaCBhcmUgZ2VuZXJhdGVkIGJlZm9yZSBzZW5kaW5nIG92ZXIKCS8vIHRoZSBuZXR3b3JrLgoJUmVxdWVzdEVkaXRvcnMgW11SZXF1ZXN0RWRpdG9yRm4KfQoKLy8gLi4uCgovLyBUaGUgaW50ZXJmYWNlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBjbGllbnQgYWJvdmUuCnR5cGUgQ2xpZW50SW50ZXJmYWNlIGludGVyZmFjZSB7CgkvLyBHZXRDbGllbnQgcmVxdWVzdAoJR2V0Q2xpZW50KGN0eCBjb250ZXh0LkNvbnRleHQsIHJlcUVkaXRvcnMgLi4uUmVxdWVzdEVkaXRvckZuKSAoKmh0dHAuUmVzcG9uc2UsIGVycm9yKQoKCS8vIFVwZGF0ZUNsaWVudCByZXF1ZXN0CglVcGRhdGVDbGllbnQoY3R4IGNvbnRleHQuQ29udGV4dCwgcmVxRWRpdG9ycyAuLi5SZXF1ZXN0RWRpdG9yRm4pICgqaHR0cC5SZXNwb25zZSwgZXJyb3IpCn0KCi8vIC4uLgoKLy8gQ2xpZW50V2l0aFJlc3BvbnNlc0ludGVyZmFjZSBpcyB0aGUgaW50ZXJmYWNlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBjbGllbnQgd2l0aCByZXNwb25zZXMgYWJvdmUuCnR5cGUgQ2xpZW50V2l0aFJlc3BvbnNlc0ludGVyZmFjZSBpbnRlcmZhY2UgewoJLy8gR2V0Q2xpZW50V2l0aFJlc3BvbnNlIHJlcXVlc3QKCUdldENsaWVudFdpdGhSZXNwb25zZShjdHggY29udGV4dC5Db250ZXh0LCByZXFFZGl0b3JzIC4uLlJlcXVlc3RFZGl0b3JGbikgKCpHZXRDbGllbnRSZXNwb25zZSwgZXJyb3IpCgoJLy8gVXBkYXRlQ2xpZW50V2l0aFJlc3BvbnNlIHJlcXVlc3QKCVVwZGF0ZUNsaWVudFdpdGhSZXNwb25zZShjdHggY29udGV4dC5Db250ZXh0LCByZXFFZGl0b3JzIC4uLlJlcXVlc3RFZGl0b3JGbikgKCpVcGRhdGVDbGllbnRSZXNwb25zZSwgZXJyb3IpCn0KCnR5cGUgR2V0Q2xpZW50UmVzcG9uc2Ugc3RydWN0IHsKCUJvZHkgICAgICAgICBbXWJ5dGUKCUhUVFBSZXNwb25zZSAqaHR0cC5SZXNwb25zZQoJSlNPTjIwMCAgICAgICpDbGllbnRUeXBlCn0KCi8vIC4uLgpgYGAKCldpdGggdGhpcyBnZW5lcmF0ZWQgY2xpZW50LCBpdCBpcyB0aGVuIHBvc3NpYmxlIHRvIGNvbnN0cnVjdCBhbmQgdXRpbGlzZSB0aGUgY2xpZW50LCBmb3IgaW5zdGFuY2U6CgpgYGBnbwpwYWNrYWdlIGNsaWVudF90ZXN0CgppbXBvcnQgKAoJImNvbnRleHQiCgkiZm10IgoJImxvZyIKCSJuZXQvaHR0cCIKCgkiZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL3YyL2V4YW1wbGVzL2NsaWVudCIKKQoKZnVuYyBUZXN0Q2xpZW50X2NhbkNhbGwoKSB7CgkvLyBjdXN0b20gSFRUUCBjbGllbnQKCWhjIDo9IGh0dHAuQ2xpZW50e30KCgkvLyB3aXRoIGEgcmF3IGh0dHAuUmVzcG9uc2UKCXsKCQljLCBlcnIgOj0gY2xpZW50Lk5ld0NsaWVudCgiaHR0cDovL2xvY2FsaG9zdDoxMjM0IiwgY2xpZW50LldpdGhIVFRQQ2xpZW50KCZoYykpCgkJaWYgZXJyICE9IG5pbCB7CgkJCWxvZy5GYXRhbChlcnIpCgkJfQoKCQlyZXNwLCBlcnIgOj0gYy5HZXRDbGllbnQoY29udGV4dC5UT0RPKCkpCgkJaWYgZXJyICE9IG5pbCB7CgkJCWxvZy5GYXRhbChlcnIpCgkJfQoJCWlmIHJlc3AuU3RhdHVzQ29kZSAhPSBodHRwLlN0YXR1c09LIHsKCQkJbG9nLkZhdGFsZigiRXhwZWN0ZWQgSFRUUCAyMDAgYnV0IHJlY2VpdmVkICVkIiwgcmVzcC5TdGF0dXNDb2RlKQoJCX0KCX0KCgkvLyBvciB0byBnZXQgYSBzdHJ1Y3Qgd2l0aCB0aGUgcGFyc2VkIHJlc3BvbnNlIGJvZHkKCXsKCQljLCBlcnIgOj0gY2xpZW50Lk5ld0NsaWVudFdpdGhSZXNwb25zZXMoImh0dHA6Ly9sb2NhbGhvc3Q6MTIzNCIsIGNsaWVudC5XaXRoSFRUUENsaWVudCgmaGMpKQoJCWlmIGVyciAhPSBuaWwgewoJCQlsb2cuRmF0YWwoZXJyKQoJCX0KCgkJcmVzcCwgZXJyIDo9IGMuR2V0Q2xpZW50V2l0aFJlc3BvbnNlKGNvbnRleHQuVE9ETygpKQoJCWlmIGVyciAhPSBuaWwgewoJCQlsb2cuRmF0YWwoZXJyKQoJCX0KCQlpZiByZXNwLlN0YXR1c0NvZGUoKSAhPSBodHRwLlN0YXR1c09LIHsKCQkJbG9nLkZhdGFsZigiRXhwZWN0ZWQgSFRUUCAyMDAgYnV0IHJlY2VpdmVkICVkIiwgcmVzcC5TdGF0dXNDb2RlKCkpCgkJfQoKCQlmbXQuUHJpbnRmKCJyZXNwLkpTT04yMDA6ICV2XG4iLCByZXNwLkpTT04yMDApCgl9Cgp9CmBgYAoKIyMjIFdpdGggU2VydmVyIFVSTHMKCkFuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBtYWtlcyBpdCBwb3NzaWJsZSB0byBkZW5vdGUgU2VydmVycyB0aGF0IGEgY2xpZW50IGNhbiBpbnRlcmFjdCB3aXRoLCBzdWNoIGFzOgoKYGBgeWFtbApzZXJ2ZXJzOgotIHVybDogaHR0cHM6Ly9kZXZlbG9wbWVudC5naWdhbnRpYy1zZXJ2ZXIuY29tL3YxCiAgZGVzY3JpcHRpb246IERldmVsb3BtZW50IHNlcnZlcgotIHVybDogaHR0cHM6Ly97dXNlcm5hbWV9LmdpZ2FudGljLXNlcnZlci5jb206e3BvcnR9L3tiYXNlUGF0aH0KICBkZXNjcmlwdGlvbjogVGhlIHByb2R1Y3Rpb24gQVBJIHNlcnZlcgogIHZhcmlhYmxlczoKICAgIHVzZXJuYW1lOgogICAgICAjIG5vdGUhIG5vIGVudW0gaGVyZSBtZWFucyBpdCBpcyBhbiBvcGVuIHZhbHVlCiAgICAgIGRlZmF1bHQ6IGRlbW8KICAgICAgZGVzY3JpcHRpb246IHRoaXMgdmFsdWUgaXMgYXNzaWduZWQgYnkgdGhlIHNlcnZpY2UgcHJvdmlkZXIsIGluIHRoaXMgZXhhbXBsZSBgZ2lnYW50aWMtc2VydmVyLmNvbWAKICAgIHBvcnQ6CiAgICAgIGVudW06CiAgICAgICAgLSAnODQ0MycKICAgICAgICAtICc0NDMnCiAgICAgIGRlZmF1bHQ6ICc4NDQzJwogICAgYmFzZVBhdGg6CiAgICAgICMgb3BlbiBtZWFuaW5nIHRoZXJlIGlzIHRoZSBvcHBvcnR1bml0eSB0byB1c2Ugc3BlY2lhbCBiYXNlIHBhdGhzIGFzIGFzc2lnbmVkIGJ5IHRoZSBwcm92aWRlciwgZGVmYXVsdCBpcyBgdjJgCiAgICAgIGRlZmF1bHQ6IHYyCmBgYAoKSXQgaXMgcG9zc2libGUgdG8gb3B0LWluIHRvIHRoZSBnZW5lcmF0aW9uIG9mIHRoZXNlIFNlcnZlciBVUkxzIHdpdGggdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uOgoKYGBgeWFtbAojIHlhbWwtbGFuZ3VhZ2Utc2VydmVyOiAkc2NoZW1hPWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL0hFQUQvY29uZmlndXJhdGlvbi1zY2hlbWEuanNvbgpwYWNrYWdlOiBzZXJ2ZXJ1cmxzCm91dHB1dDogZ2VuLmdvCmdlbmVyYXRlOgogICMgTk9URSB0aGF0IHRoaXMgdXNlcyBkZWZhdWx0IHNldHRpbmdzIC0gaWYgeW91IHdhbnQgdG8gdXNlIGluaXRpYWxpc21zIHRvIGdlbmVyYXRlIGkuZS4gYFNlcnZlclVSTERldmVsb3BtZW50U2VydmVyYCwgeW91IHNob3VsZCBsb29rIHVwIHRoZSBgb3V0cHV0LW9wdGlvbnMubmFtZS1ub3JtYWxpemVyYCBjb25maWd1cmF0aW9uCiAgc2VydmVyLXVybHM6IHRydWUKYGBgCgpUaGlzIHdpbGwgdGhlbiBnZW5lcmF0ZSB0aGUgZm9sbG93aW5nIGJvaWxlcnBsYXRlOgoKYGBgZ28KLy8gKHRoZSBiZWxvdyBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lbnRzIHRoYXQgYXJlIGdlbmVyYXRlZCkKCmNvbnN0IFNlcnZlclVybERldmVsb3BtZW50U2VydmVyID0gImh0dHBzOi8vZGV2ZWxvcG1lbnQuZ2lnYW50aWMtc2VydmVyLmNvbS92MSIKCnR5cGUgU2VydmVyVXJsVGhlUHJvZHVjdGlvbkFQSVNlcnZlckJhc2VQYXRoVmFyaWFibGUgc3RyaW5nCmNvbnN0IFNlcnZlclVybFRoZVByb2R1Y3Rpb25BUElTZXJ2ZXJCYXNlUGF0aFZhcmlhYmxlRGVmYXVsdCA9ICJ2MiIKCnR5cGUgU2VydmVyVXJsVGhlUHJvZHVjdGlvbkFQSVNlcnZlclBvcnRWYXJpYWJsZSBzdHJpbmcKY29uc3QgU2VydmVyVXJsVGhlUHJvZHVjdGlvbkFQSVNlcnZlclBvcnRWYXJpYWJsZTg0NDMgU2VydmVyVXJsVGhlUHJvZHVjdGlvbkFQSVNlcnZlclBvcnRWYXJpYWJsZSA9ICI4NDQzIgpjb25zdCBTZXJ2ZXJVcmxUaGVQcm9kdWN0aW9uQVBJU2VydmVyUG9ydFZhcmlhYmxlNDQzIFNlcnZlclVybFRoZVByb2R1Y3Rpb25BUElTZXJ2ZXJQb3J0VmFyaWFibGUgPSAiNDQzIgpjb25zdCBTZXJ2ZXJVcmxUaGVQcm9kdWN0aW9uQVBJU2VydmVyUG9ydFZhcmlhYmxlRGVmYXVsdCBTZXJ2ZXJVcmxUaGVQcm9kdWN0aW9uQVBJU2VydmVyUG9ydFZhcmlhYmxlID0gU2VydmVyVXJsVGhlUHJvZHVjdGlvbkFQSVNlcnZlclBvcnRWYXJpYWJsZTg0NDMKCnR5cGUgU2VydmVyVXJsVGhlUHJvZHVjdGlvbkFQSVNlcnZlclVzZXJuYW1lVmFyaWFibGUgc3RyaW5nCmNvbnN0IFNlcnZlclVybFRoZVByb2R1Y3Rpb25BUElTZXJ2ZXJVc2VybmFtZVZhcmlhYmxlRGVmYXVsdCA9ICJkZW1vIgoKZnVuYyBTZXJ2ZXJVcmxUaGVQcm9kdWN0aW9uQVBJU2VydmVyKGJhc2VQYXRoIFNlcnZlclVybFRoZVByb2R1Y3Rpb25BUElTZXJ2ZXJCYXNlUGF0aFZhcmlhYmxlLCBwb3J0IFNlcnZlclVybFRoZVByb2R1Y3Rpb25BUElTZXJ2ZXJQb3J0VmFyaWFibGUsIHVzZXJuYW1lIFNlcnZlclVybFRoZVByb2R1Y3Rpb25BUElTZXJ2ZXJVc2VybmFtZVZhcmlhYmxlKSAoc3RyaW5nLCBlcnJvcikgewogICAgLy8gLi4uCn0KYGBgCgpOb3RpY2UgdGhhdCBmb3IgVVJMcyB0aGF0IGFyZSBub3QgdGVtcGxhdGVkLCBhIHNpbXBsZSBgY29uc3RgIGRlZmluaXRpb24gaXMgY3JlYXRlZC4KCkhvd2V2ZXIsIGZvciBtb3JlIGNvbXBsZXggVVJMcyB0aGF0IGRlZmluZWQgYHZhcmlhYmxlc2AgaW4gdGhlbSwgd2UgZ2VuZXJhdGUgdGhlIHR5cGVzIChhbmQgYW55IGBlbnVtYCB2YWx1ZXMgb3IgYGRlZmF1bHRgIHZhbHVlcyksIGFuZCBpbnN0ZWFkIHVzZSBhIGZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgVVJMLgoKRm9yIGEgY29tcGxldGUgZXhhbXBsZSBzZWUgW2BleGFtcGxlcy9nZW5lcmF0ZS9zZXJ2ZXJ1cmxzYF0oZXhhbXBsZXMvZ2VuZXJhdGUvc2VydmVydXJscykuCgojIyMgRHVwbGljYXRlIHR5cGVzIGdlbmVyYXRlZCBmb3IgY2xpZW50cydzIHJlc3BvbnNlIG9iamVjdCB0eXBlcwoKV2hlbiBnZW5lcmF0aW5nIHRoZSB0eXBlcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZ2VuZXJhdGVkIGNsaWVudCwgYG9hcGktY29kZWdlbmAgd2lsbCB1c2UgdGhlIGBvcGVyYXRpb25JZGAgYW5kIGFkZCBvbiBhIGBSZXF1ZXN0YCBvciBgUmVzcG9uc2VgIHN1ZmZpeC4KCkhvd2V2ZXIsIHRoaXMgY2FuIGNsYXNoIGlmIHlvdSBoYXZlIG5hbWVkIHlvdXIgY29tcG9uZW50IHNjaGVtYXMgaW4gYSBzaW1pbGFyIHdheS4KCkZvciBpbnN0YW5jZToKCmBgYHlhbWwKb3BlbmFwaTogIjMuMC4wIgppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6ICJTaG93IHRoYXQgZ2VuZXJhdGVkIGNsaWVudCBib2lsZXJwbGF0ZSBjYW4gY2xhc2ggaWYgc2NoZW1hcyBhcmUgd2VsbCBuYW1lZCBpLmUuIGAqUmVxdWVzdGAgYW5kIGAqUmVzcG9uc2VgIgpwYXRoczoKICAvY2xpZW50OgogICAgcHV0OgogICAgICBvcGVyYXRpb25JZDogdXBkYXRlQ2xpZW50CiAgICAgIHJlcXVlc3RCb2RpZXM6CiAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1VwZGF0ZUNsaWVudFJlcXVlc3QnCiAgICAgIHJlc3BvbnNlczoKICAgICAgICA0MDA6CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9VcGRhdGVDbGllbnRSZXNwb25zZScKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgVXBkYXRlQ2xpZW50UmVxdWVzdDoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgY29kZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICByZXF1aXJlZDoKICAgICAgLSBjb2RlCiAgICBVcGRhdGVDbGllbnRSZXNwb25zZToKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gbmFtZQogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIG5hbWU6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKYGBgCgpJZiB5b3Ugd2VyZSB0byBnZW5lcmF0ZSB3aXRoIHRoaXMgY29uZmlndXJhdGlvbjoKCmBgYHlhbWwKIyB5YW1sLWxhbmd1YWdlLXNlcnZlcjogJHNjaGVtYT1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9IRUFEL2NvbmZpZ3VyYXRpb24tc2NoZW1hLmpzb24KcGFja2FnZTogY2xpZW50Cm91dHB1dDogY2xpZW50Lmdlbi5nbwpnZW5lcmF0ZToKICBtb2RlbHM6IHRydWUKICBjbGllbnQ6IHRydWUKYGBgCgpUaGlzIHdvdWxkIHRoZW4gcmVzdWx0IGluIGBnbyBidWlsZGAgZmFpbHVyZXM6CgpgYGAKIyBnaXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vdjIvZXhhbXBsZXMvY2xpZW50dHlwZW5hbWVjbGFzaAouL2NsaWVudC5nZW4uZ286MTg0OjY6IFVwZGF0ZUNsaWVudFJlc3BvbnNlIHJlZGVjbGFyZWQgaW4gdGhpcyBibG9jawogICAgICAgIC4vY2xpZW50Lmdlbi5nbzoxNzo2OiBvdGhlciBkZWNsYXJhdGlvbiBvZiBVcGRhdGVDbGllbnRSZXNwb25zZQouL2NsaWVudC5nZW4uZ286MTkyOjc6IHIuSFRUUFJlc3BvbnNlIHVuZGVmaW5lZCAodHlwZSBVcGRhdGVDbGllbnRSZXNwb25zZSBoYXMgbm8gZmllbGQgb3IgbWV0aG9kIEhUVFBSZXNwb25zZSkKLi9jbGllbnQuZ2VuLmdvOjE5MzoxMjogci5IVFRQUmVzcG9uc2UgdW5kZWZpbmVkICh0eXBlIFVwZGF0ZUNsaWVudFJlc3BvbnNlIGhhcyBubyBmaWVsZCBvciBtZXRob2QgSFRUUFJlc3BvbnNlKQouL2NsaWVudC5nZW4uZ286MjAwOjc6IHIuSFRUUFJlc3BvbnNlIHVuZGVmaW5lZCAodHlwZSBVcGRhdGVDbGllbnRSZXNwb25zZSBoYXMgbm8gZmllbGQgb3IgbWV0aG9kIEhUVFBSZXNwb25zZSkKLi9jbGllbnQuZ2VuLmdvOjIwMToxMjogci5IVFRQUmVzcG9uc2UgdW5kZWZpbmVkICh0eXBlIFVwZGF0ZUNsaWVudFJlc3BvbnNlIGhhcyBubyBmaWVsZCBvciBtZXRob2QgSFRUUFJlc3BvbnNlKQouL2NsaWVudC5nZW4uZ286MjI0OjM6IHVua25vd24gZmllbGQgQm9keSBpbiBzdHJ1Y3QgbGl0ZXJhbCBvZiB0eXBlIFVwZGF0ZUNsaWVudFJlc3BvbnNlCi4vY2xpZW50Lmdlbi5nbzoyMjU6MzogdW5rbm93biBmaWVsZCBIVFRQUmVzcG9uc2UgaW4gc3RydWN0IGxpdGVyYWwgb2YgdHlwZSBVcGRhdGVDbGllbnRSZXNwb25zZQouL2NsaWVudC5nZW4uZ286MjM0OjEyOiByZXNwb25zZS5KU09ONDAwIHVuZGVmaW5lZCAodHlwZSAqVXBkYXRlQ2xpZW50UmVzcG9uc2UgaGFzIG5vIGZpZWxkIG9yIG1ldGhvZCBKU09ONDAwKQpgYGAKClRvIGZpeCB0aGlzLCB1c2UgdGhlIGByZXNwb25zZS10eXBlLXN1ZmZpeGAgT3V0cHV0IE9wdGlvbjoKCmBgYGRpZmYKICMgeWFtbC1sYW5ndWFnZS1zZXJ2ZXI6ICRzY2hlbWE9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vSEVBRC9jb25maWd1cmF0aW9uLXNjaGVtYS5qc29uCiBwYWNrYWdlOiBjbGllbnQKIG91dHB1dDogY2xpZW50Lmdlbi5nbwogZ2VuZXJhdGU6CiAgIG1vZGVsczogdHJ1ZQogICBjbGllbnQ6IHRydWUKK291dHB1dC1vcHRpb25zOgorICByZXNwb25zZS10eXBlLXN1ZmZpeDogUmVzcApgYGAKClRoaXMgd2lsbCB0aGVuIHJlbmFtZSB0aGUgZ2VuZXJhdGVkIHR5cGVzIGZyb20gdGhlIGRlZmF1bHQgdG8gdXNlIHRoZSBuZXcgc3VmZml4OgoKYGBgZGlmZgotdHlwZSBVcGRhdGVDbGllbnRSZXNwb25zZSBzdHJ1Y3QgewordHlwZSBVcGRhdGVDbGllbnRSZXNwIHN0cnVjdCB7CiAgICAgICAgQm9keSAgICAgICAgIFtdYnl0ZQogICAgICAgIEhUVFBSZXNwb25zZSAqaHR0cC5SZXNwb25zZQogICAgICAgIEpTT040MDAgICAgICAqVXBkYXRlQ2xpZW50UmVzcG9uc2UKIH0KYGBgCgpUaGVyZSBpcyBubyBjdXJyZW50bHkgcGxhbm5lZCB3b3JrIHRvIGNoYW5nZSB0aGlzIGJlaGF2aW91ci4KCiMjIEdlbmVyYXRpbmcgQVBJIG1vZGVscwoKSWYgeW91J3JlIGxvb2tpbmcgdG8gb25seSBnZW5lcmF0ZSB0aGUgbW9kZWxzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgcmVtb3RlIHNlcnZpY2UsIGZvciBpbnN0YW5jZSBpZiB5b3UgbmVlZCB0byBoYW5kLXJvbGwgdGhlIEFQSSBjbGllbnQgZm9yIHdoYXRldmVyIHJlYXNvbiwgeW91IGNhbiBkbyB0aGlzIGFzLWlzLgoKPiBbIVRJUF0KPiBUcnkgdG8gZGVmaW5lIGFzIG11Y2ggYXMgcG9zc2libGUgd2l0aGluIHRoZSBgIy9jb21wb25lbnRzL3NjaGVtYXNgIG9iamVjdCwgYXMgYG9hcGktY29kZWdlbmAgd2lsbCBnZW5lcmF0ZSBhbGwgdGhlIHR5cGVzIGhlcmUuCj4KPiBBbHRob3VnaCB3ZSBjYW4gZ2VuZXJhdGUgc29tZSB0eXBlcyBiYXNlZCBvbiBpbmxpbmUgZGVmaW5pdGlvbnMgaW4gaS5lLiBhIHBhdGgncyByZXNwb25zZSB0eXBlLCBpdCBpc24ndCBhbHdheXMgcG9zc2libGUgdG8gZG8gdGhpcywgb3IgaWYgaXQgaXMgZ2VuZXJhdGVkLCBjYW4gYmUgYSBsaXR0bGUgYXdrd2FyZCB0byB3b3JrIHdpdGggYXMgaXQgbWF5IGJlIGRlZmluZWQgYXMgYW4gYW5vbnltb3VzIHN0cnVjdC4KCkZvciBpbnN0YW5jZSwgZ2l2ZW4gYW4gYGFwaS55YW1sYDoKCmBgYHlhbWwKb3BlbmFwaTogIjMuMC4wIgppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IEdlbmVyYXRlIG1vZGVscwpwYXRoczoKICAvY2xpZW50OgogICAgZ2V0OgogICAgICBvcGVyYXRpb25JZDogZ2V0Q2xpZW50CiAgICAgIHJlc3BvbnNlczoKICAgICAgICAyMDA6CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICMgTk9URSB0aGF0IENsaWVudCBpcyBnZW5lcmF0ZWQgaGVyZSwgYmVjYXVzZSBpdCdzIHdpdGhpbiAjL2NvbXBvbmVudHMvc2NoZW1hcwogICAgICAgICAgICAgICAgJHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzL0NsaWVudCIKICAgIHB1dDoKICAgICAgb3BlcmF0aW9uSWQ6IHVwZGF0ZUNsaWVudAogICAgICByZXNwb25zZXM6CiAgICAgICAgNDAwOgogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICAjIE5PVEUgdGhhdCB0aGlzIGFub255bW91cyBvYmplY3QgaXMgL25vdC8gZ2VuZXJhdGVkIGJlY2F1c2UgaXQncyBhbiBhbm9ueW1vdXMsIGJ1dCB3b3VsZCBiZSBnZW5lcmF0ZWQgaWYgdXNpbmcgYGdlbmVyYXRlOiBjbGllbnRgCiAgICAgICAgICAgICAgIyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vaXNzdWVzLzE1MTIKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgIGNvZGU6CiAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgICByZXF1aXJlZDoKICAgICAgICAgICAgICAgIC0gY29kZQpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBDbGllbnQ6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIG5hbWUKICAgICAgcHJvcGVydGllczoKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAjIE5PVEUgdGhhdCB0aGlzIGlzIG5vdCBnZW5lcmF0ZWQgYnkgZGVmYXVsdCBiZWNhdXNlIGl0J3Mgbm90IHJlZmVyZW5jZWQuIElmIHlvdSB3YW50IGl0LCB5b3UgbmVlZCB0byB1c2UgdGhlIGZvbGxvd2luZyBZQU1MIGNvbmZpZ3VyYXRpb246CiAgICAjCiAgICAjIG91dHB1dC1vcHRpb25zOgogICAgIyAgIHNraXAtcHJ1bmU6IHRydWUKICAgIFVucmVmZXJlbmNlZDoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gaWQKICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IGludGVnZXIKYGBgCgpBbmQgYSBgY2ZnLnlhbWxgOgoKYGBgeWFtbAojIHlhbWwtbGFuZ3VhZ2Utc2VydmVyOiAkc2NoZW1hPWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL0hFQUQvY29uZmlndXJhdGlvbi1zY2hlbWEuanNvbgpwYWNrYWdlOiBvbmx5bW9kZWxzCm91dHB1dDogb25seS1tb2RlbHMuZ2VuLmdvCmdlbmVyYXRlOgogIG1vZGVsczogdHJ1ZQpgYGAKCkFuZCBhIGBnZW5lcmF0ZS5nb2A6CgpgYGBnbwpwYWNrYWdlIG9ubHltb2RlbHMKCi8vZ286Z2VuZXJhdGUgZ28gcnVuIGdpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi92Mi9jbWQvb2FwaS1jb2RlZ2VuIC1jb25maWcgY2ZnLnlhbWwgYXBpLnlhbWwKYGBgCgpUaGlzIHdvdWxkIHRoZW4gZ2VuZXJhdGU6CgpgYGBnbwpwYWNrYWdlIG9ubHltb2RlbHMKCi8vIENsaWVudCBkZWZpbmVzIG1vZGVsIGZvciBDbGllbnQuCnR5cGUgQ2xpZW50IHN0cnVjdCB7CglOYW1lIHN0cmluZyBganNvbjoibmFtZSJgCn0KYGBgCgpJZiB5b3Ugd2lzaCB0byBhbHNvIGdlbmVyYXRlIHRoZSBgVW5yZWZlcmVuY2VkYCB0eXBlLCB5b3Ugd291bGQgbmVlZCB0aGUgZm9sbG93aW5nIGBjZmcueWFtbGA6CgpgYGB5YW1sCiMgeWFtbC1sYW5ndWFnZS1zZXJ2ZXI6ICRzY2hlbWE9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vSEVBRC9jb25maWd1cmF0aW9uLXNjaGVtYS5qc29uCnBhY2thZ2U6IG9ubHltb2RlbHMKb3V0cHV0OiBvbmx5LW1vZGVscy5nZW4uZ28KZ2VuZXJhdGU6CiAgbW9kZWxzOiB0cnVlCm91dHB1dC1vcHRpb25zOgogICMgTk9URSB0aGF0IHRoaXMgaXMgb25seSByZXF1aXJlZCBmb3IgdGhlIGBVbnJlZmVyZW5jZWRgIHR5cGUKICBza2lwLXBydW5lOiB0cnVlCmBgYAoKRm9yIGEgY29tcGxldGUgZXhhbXBsZSBzZWUgW2BleGFtcGxlcy9vbmx5LW1vZGVsc2BdKGV4YW1wbGVzL29ubHktbW9kZWxzKS4KCiMjIFNwbGl0dGluZyBsYXJnZSBPcGVuQVBJIHNwZWNzIGFjcm9zcyBtdWx0aXBsZSBwYWNrYWdlcyAoYWthICJJbXBvcnQgTWFwcGluZyIgb3IgImV4dGVybmFsIHJlZmVyZW5jZXMiKQo8YSBuYW1lPWltcG9ydC1tYXBwaW5nPjwvYT4KCldoZW4geW91J3ZlIGdvdCBhIGxhcmdlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiwgeW91IG1heSBmaW5kIGl0IHVzZWZ1bCB0byBzcGxpdCB0aGUgY29udGVudHMgb2YgdGhlIHNwZWMgYWNyb3NzIG11bHRpcGxlIGZpbGVzLCB1c2luZyBleHRlcm5hbCByZWZlcmVuY2VzLCBzdWNoIGFzOgoKYGBgeWFtbAogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgZGVzY3JpcHRpb246IFN1Y2Nlc3MKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1VzZXInCmBgYAoKVGhpcyBpcyBzdXBwb3J0ZWQgYnkgYG9hcGktY29kZWdlbmAsIHRocm91Z2ggdGhlIGFiaWxpdHkgdG8gcGVyZm9ybSAiSW1wb3J0IE1hcHBpbmciLgoKRm9yIGluc3RhbmNlLCBsZXQncyBzYXkgdGhhdCB3ZSBoYXZlIGEgbGFyZ2UgQVBJLCB3aGljaCBoYXMgYSB1c2VyLWZhY2luZyBBUEkgYW5kIGFuIGFkbWluIEFQSSwgYm90aCBvZiB3aGljaCB1c2UgYSBjb21tb24gc2V0IG9mIEFQSSBtb2RlbHMuCgpJbiB0aGlzIGNhc2UsIHdlIG1heSBoYXZlIGFuIEFkbWluIEFQSSB0aGF0IGxvb2tzIGxpa2U6CgpgYGB5YW1sCiMgYWRtaW4vYXBpLnlhbWwKb3BlbmFwaTogIjMuMC4wIgppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IEFkbWluIEFQSQogIGRlc2NyaXB0aW9uOiBUaGUgYWRtaW4tb25seSBwb3J0aW9uIG9mIHRoZSBBUEksIHdoaWNoIGhhcyBpdHMgb3duIHNlcGFyYXRlIE9wZW5BUEkgc3BlYwp0YWdzOgogIC0gbmFtZTogYWRtaW4KICAgIGRlc2NyaXB0aW9uOiBBZG1pbiBBUEkgZW5kcG9pbnRzCiAgLSBuYW1lOiB1c2VyCiAgICBkZXNjcmlwdGlvbjogQVBJIGVuZHBvaW50IHRoYXQgcGVydGFpbnMgdG8gdXNlciBkYXRhCnBhdGhzOgogIC9hZG1pbi91c2VyL3tpZH06CiAgICBnZXQ6CiAgICAgIHRhZ3M6CiAgICAgICAgLSBhZG1pbgogICAgICAgIC0gdXNlcgogICAgICBzdW1tYXJ5OiBHZXQgYSB1c2VyJ3MgZGV0YWlscwogICAgICBvcGVyYXRpb25JZDogZ2V0VXNlckJ5SWQKICAgICAgcGFyYW1ldGVyczoKICAgICAgICAtIG5hbWU6IGlkCiAgICAgICAgICBpbjogcGF0aAogICAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgIGZvcm1hdDogdXVpZAogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgZGVzY3JpcHRpb246IFN1Y2Nlc3MKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgJHJlZjogJy4uL2NvbW1vbi9hcGkueWFtbCMvY29tcG9uZW50cy9zY2hlbWFzL1VzZXInCmBgYAoKVGhpcyByZWZlcmVuY2VzIHRoZSBjb21tb24gc3BlYzoKCmBgYHlhbWwKIyBjb21tb24vYXBpLnlhbWwKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgVXNlcjoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZQogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIG5hbWU6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBuYW1lCmBgYAoKU28gaG93IGRvIHdlIGdldCBgb2FwaS1jb2RlZ2VuYCB0byBnZW5lcmF0ZSBvdXIgY29kZT8KCiMjIyBVc2luZyBhIHNpbmdsZSBwYWNrYWdlIHdpdGggbXVsdGlwbGUgT3BlbkFQSSBzcGVjcwoKPGEgbmFtZT1pbXBvcnQtbWFwcGluZy1zZWxmPjwvYT4KCj4gWyFUSVBdCj4gU2luY2UgYG9hcGktY29kZWdlbmAgdjIuNC4wLCBpdCBpcyBub3cgcG9zc2libGUgdG8gc3BsaXQgbGFyZ2UgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBpbnRvIHRoZSBzYW1lIEdvIHBhY2thZ2UsIHVzaW5nIHRoZSAic2VsZiIgbWFwcGluZyAoZGVub3RlZCBieSBhIGAtYCkgd2hlbiB1c2luZyBJbXBvcnQgTWFwcGluZy4KPgo+IFRoaXMgaXMgYW4gaW1wcm92ZW1lbnQgb24gdGhlIHByZXZpb3VzIG1vZGVsLCB3aGljaCB3b3VsZCByZXF1aXJlIHNwbGl0dGluZyBmaWxlcyBhY3Jvc3MgbXVsdGlwbGUgcGFja2FnZXMuCgo+IFshTk9URV0KPiBZb3Ugc3RpbGwgbmVlZCB0byBoYXZlIG11bHRpcGxlIGBnbyBnZW5lcmF0ZWBzLCBhbmQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMuCgpUbyBnZXQgYG9hcGktY29kZWdlbmAncyBzaW5nbGUtcGFja2FnZSBzdXBwb3J0IHdvcmtpbmcsIHdlIG5lZWQgbXVsdGlwbGUgY2FsbHMgdG8gYG9hcGktY29kZWdlbmAsIG9uZSBjYWxsIHBlciBPcGVuQVBJIHNwZWMgZmlsZToKCmBgYHNoCiQgZ28gcnVuIGdpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi92Mi9jbWQvb2FwaS1jb2RlZ2VuIC1jb25maWcgY2ZnLWFwaS55YW1sIC4uL2FkbWluL2FwaS55YW1sCiQgZ28gcnVuIGdpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi92Mi9jbWQvb2FwaS1jb2RlZ2VuIC1jb25maWcgY2ZnLXVzZXIueWFtbCAuLi9jb21tb24vYXBpLnlhbWwKYGBgCgpUaGlzIHRoZXJlZm9yZSBtZWFucyB0aGF0IHdlIG5lZWQgbXVsdGlwbGUgY29uZmlndXJhdGlvbiBmaWxlcywgc3VjaCBhcyBgY2ZnLWFwaS55YW1sYDoKCmBgYHlhbWwKIyB5YW1sLWxhbmd1YWdlLXNlcnZlcjogJHNjaGVtYT1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9IRUFEL2NvbmZpZ3VyYXRpb24tc2NoZW1hLmpzb24KcGFja2FnZTogc2FtZXBhY2thZ2UKb3V0cHV0OiBzZXJ2ZXIuZ2VuLmdvCmdlbmVyYXRlOgogIG1vZGVsczogdHJ1ZQogIGNoaS1zZXJ2ZXI6IHRydWUKICBzdHJpY3Qtc2VydmVyOiB0cnVlCm91dHB1dC1vcHRpb25zOgogICMgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIHR5cGVzIGFyZSBnZW5lcmF0ZWQKICBza2lwLXBydW5lOiB0cnVlCmltcG9ydC1tYXBwaW5nOgogIHVzZXIueWFtbDogIi0iCmBgYAoKQW5kIHRoZW4gb3VyIGBjZmctdXNlci55YW1sYDoKCmBgYHlhbWwKIyB5YW1sLWxhbmd1YWdlLXNlcnZlcjogJHNjaGVtYT1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9IRUFEL2NvbmZpZ3VyYXRpb24tc2NoZW1hLmpzb24KcGFja2FnZTogc2FtZXBhY2thZ2UKb3V0cHV0OiB1c2VyLmdlbi5nbwpnZW5lcmF0ZToKICBtb2RlbHM6IHRydWUKb3V0cHV0LW9wdGlvbnM6CiAgIyB0byBtYWtlIHN1cmUgdGhhdCBhbGwgdHlwZXMgYXJlIGdlbmVyYXRlZAogIHNraXAtcHJ1bmU6IHRydWUKYGBgCgpGcm9tIGhlcmUsIGBvYXBpLWNvZGVnZW5gIHdpbGwgZ2VuZXJhdGUgbXVsdGlwbGUgR28gZmlsZXMsIGFsbCB3aXRoaW4gdGhlIHNhbWUgcGFja2FnZSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gYnJlYWsgZG93biB5b3VyIGxhcmdlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMsIGFuZCBnZW5lcmF0ZSBvbmx5IHRoZSBzdWJzZXRzIG9mIGNvZGUgbmVlZGVkIGZvciBlYWNoIHBhcnQgb2YgdGhlIHNwZWMuCgpDaGVjayBvdXQgW3RoZSBpbXBvcnQtbWFwcGluZy9zYW1lcGFja2FnZSBleGFtcGxlXShleGFtcGxlcy9pbXBvcnQtbWFwcGluZy9zYW1lcGFja2FnZSkgZm9yIHRoZSBmdWxsIGNvZGUuCgojIyMgVXNpbmcgbXVsdGlwbGUgcGFja2FnZXMsIHdpdGggb25lIE9wZW5BUEkgc3BlYyBwZXIgcGFja2FnZQoKVG8gZ2V0IGBvYXBpLWNvZGVnZW5gJ3MgbXVsdGktcGFja2FnZSBzdXBwb3J0IHdvcmtpbmcsIHdlIG5lZWQgdG8gc2V0IHVwIG91ciBkaXJlY3Rvcnkgc3RydWN0dXJlOgoKYGBgCuKUnOKUgOKUgCBhZG1pbgrilILCoMKgIOKUnOKUgOKUgCBjZmcueWFtbArilILCoMKgIOKUlOKUgOKUgCBnZW5lcmF0ZS5nbwrilJTilIDilIAgY29tbW9uCiAgICDilJzilIDilIAgY2ZnLnlhbWwKIMKgwqAg4pSU4pSA4pSAIGdlbmVyYXRlLmdvCmBgYAoKV2UgY291bGQgc3RhcnQgd2l0aCBvdXIgY29uZmlndXJhdGlvbiBmaWxlIGZvciBvdXIgYWRtaW4gQVBJIHNwZWM6CgpgYGB5YW1sCiMgeWFtbC1sYW5ndWFnZS1zZXJ2ZXI6ICRzY2hlbWE9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vSEVBRC9jb25maWd1cmF0aW9uLXNjaGVtYS5qc29uCiMgYWRtaW4vY2ZnLnlhbWwKcGFja2FnZTogYWRtaW4Kb3V0cHV0OiBzZXJ2ZXIuZ2VuLmdvCmdlbmVyYXRlOgogIG1vZGVsczogdHJ1ZQogIGNoaS1zZXJ2ZXI6IHRydWUKb3V0cHV0LW9wdGlvbnM6CiAgIyB0byBtYWtlIHN1cmUgdGhhdCBhbGwgdHlwZXMgYXJlIGdlbmVyYXRlZAogIHNraXAtcHJ1bmU6IHRydWUKIyBOT1RFIHRoYXQgdGhpcyB3b24ndCB3b3JrLCBhcyBpdCdzIG1pc3NpbmcgYGltcG9ydC1tYXBwaW5nYApgYGAKCklmIHdlIHdlcmUgdG8gcnVuIGBvYXBpLWNvZGVnZW5gLCB0aGlzIHdpbGwgZmFpbCB3aXRoIHRoZSBmb2xsb3dpbmcgZXJyb3IKCmBgYAplcnJvciBnZW5lcmF0aW5nIGNvZGU6IGVycm9yIGNyZWF0aW5nIG9wZXJhdGlvbiBkZWZpbml0aW9uczogZXJyb3IgZ2VuZXJhdGluZyByZXNwb25zZSBkZWZpbml0aW9uczogZXJyb3IgZ2VuZXJhdGluZyByZXF1ZXN0IGJvZHkgZGVmaW5pdGlvbjogZXJyb3IgdHVybmluZyByZWZlcmVuY2UgKC4uL2NvbW1vbi9hcGkueWFtbCMvY29tcG9uZW50cy9zY2hlbWFzL1VzZXIpIGludG8gYSBHbyB0eXBlOiB1bnJlY29nbml6ZWQgZXh0ZXJuYWwgcmVmZXJlbmNlICcuLi9jb21tb24vYXBpLnlhbWwnOyBwbGVhc2UgcHJvdmlkZSB0aGUga25vd24gaW1wb3J0IGZvciB0aGlzIHJlZmVyZW5jZSB1c2luZyBvcHRpb24gLS1pbXBvcnQtbWFwcGluZwpgYGAKClRoaXMgaXMgYmVjYXVzZSBgb2FwaS1jb2RlZ2VuYCByZXF1aXJlcyB0aGUgYGltcG9ydC1tYXBwaW5nYDoKCmBgYHlhbWwKIyB5YW1sLWxhbmd1YWdlLXNlcnZlcjogJHNjaGVtYT1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9IRUFEL2NvbmZpZ3VyYXRpb24tc2NoZW1hLmpzb24KcGFja2FnZTogYWRtaW4Kb3V0cHV0OiBzZXJ2ZXIuZ2VuLmdvCmdlbmVyYXRlOgogIG1vZGVsczogdHJ1ZQogIGNoaS1zZXJ2ZXI6IHRydWUKb3V0cHV0LW9wdGlvbnM6CiAgIyB0byBtYWtlIHN1cmUgdGhhdCBhbGwgdHlwZXMgYXJlIGdlbmVyYXRlZAogIHNraXAtcHJ1bmU6IHRydWUKaW1wb3J0LW1hcHBpbmc6CiAgIyBmb3IgYSBnaXZlbiBmaWxlL1VSTCB0aGF0IGlzICRyZWYnZCwgcG9pbnQgYG9hcGktY29kZWdlbmAgdG8gdGhlIEdvIHBhY2thZ2UgdGhhdCB0aGlzIHNwZWMgaXMgZ2VuZXJhdGVkIGludG8sIHRvIHBlcmZvcm0gR28gcGFja2FnZSBpbXBvcnRzCiAgLi4vY29tbW9uL2FwaS55YW1sOiBnaXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vdjIvZXhhbXBsZXMvaW1wb3J0LW1hcHBpbmcvY29tbW9uCmBgYAoKVGhpcyB3aWxsIHRoZW4gZ2VuZXJhdGUgdGhlIGZvbGxvd2luZyBjb2RlOgoKYGBgZ28KcGFja2FnZSBhZG1pbgoKaW1wb3J0ICgKCS8vIC4uLgoJZXh0ZXJuYWxSZWYwICJnaXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vdjIvZXhhbXBsZXMvaW1wb3J0LW1hcHBpbmcvY29tbW9uIgopCgovLyBVc2VyIGRlZmluZXMgbW9kZWwgZm9yIFVzZXIuCnR5cGUgVXNlciA9IGV4dGVybmFsUmVmMC5Vc2VyCmBgYAoKSWYgeW91IGRvbid0IHdhbnQgdG8gZG8gdGhpcywgYW4gYWx0ZXJuYXRlIG9wdGlvbiBpcyB0byBbdXNlIGEgc2luZ2xlIHBhY2thZ2UsIHdpdGggbXVsdGlwbGUgT3BlbkFQSSBzcGVjIGZpbGVzIGZvciB0aGF0IGdpdmVuIHBhY2thZ2VdKCNpbXBvcnQtbWFwcGluZy1zZWxmKSBvciB0byBbYnVuZGxlIHlvdXIgbXVsdGlwbGUgT3BlbkFQSSBmaWxlc10oaHR0cHM6Ly93d3cuanZ0Lm1lL3Bvc3RzLzIwMjIvMDIvMTAvYnVuZGxlLW9wZW5hcGkvKSBpbnRvIGEgc2luZ2xlIHNwZWMuCgpDaGVjayBvdXQgW3RoZSBpbXBvcnQtbWFwcGluZy9tdWx0aXBsZXBhY2thZ2VzIGV4YW1wbGVdKGV4YW1wbGVzL2ltcG9ydC1tYXBwaW5nL211bHRpcGxlcGFja2FnZXMvKSBmb3IgdGhlIGZ1bGwgY29kZS4KCiMjIE1vZGlmeWluZyB0aGUgaW5wdXQgT3BlbkFQSSBTcGVjaWZpY2F0aW9uICh3aXRoIE9wZW5BUEkgT3ZlcmxheSkKClByaW9yIHRvIGBvYXBpLWNvZGVnZW5gIHYyLjQuMCwgdXNlcnMgd2lzaGluZyB0byBvdmVycmlkZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uLCBmb3IgaW5zdGFuY2UgdGFraW5nIGFkdmFudGFnZSBvZiBleHRlbnNpb25zIHN1Y2ggYXMgYHgtZ28tdHlwZWAgIHdvdWxkIG5lZWQgdG8gbW9kaWZ5IHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gdGhleSBhcmUgdXNpbmcuCgpJbiBhIGxvdCBvZiBjYXNlcywgdGhpcyBPcGVuQVBJIHNwZWNpZmljYXRpb24gd291bGQgYmUgcHJvZHVjZWQgYnkgYSBkaWZmZXJlbnQgdGVhbSB0byB0aGUgY29uc3VtZXJzIChvciBldmVuIGEgZGlmZmVyZW50IGNvbXBhbnkpIGFuZCBzbyBhc2tpbmcgdGhlbSB0byBtYWtlIGNoYW5nZXMgbGlrZSB0aGlzIHdlcmUgdW5yZWFzb25hYmxlLgoKVGhpcyB3b3VsZCBsZWFkIHRvIHRoZSBBUEkgY29uc3VtZXJzIG5lZWRpbmcgdG8gdmVuZG9yIHRoZSBzcGVjaWZpY2F0aW9uIGZyb20gdGhlIHByb2R1Y2VyICh3aGljaCBpcyBbb3VyIHJlY29tbWVuZGF0aW9uIGFueXdheV0oI2h0dHBzLXBhdGhzKSkgYW5kIHRoZW4gbWFrZSBhbnkgbnVtYmVyIG9mIGxvY2FsIGNoYW5nZXMgdG8gdGhlIHNwZWNpZmljYXRpb24gdG8gbWFrZSBpdCBnZW5lcmF0ZSBjb2RlIHRoYXQgbG9va3MgcmVhc29uYWJsZS4KCkhvd2V2ZXIsIGluIHRoZSBjYXNlIHRoYXQgYSBjb25zdW1lciB3b3VsZCB1cGRhdGUgdGhlaXIgc3BlY2lmaWNhdGlvbiwgdGhleSB3b3VsZCBsaWtlbHkgZW5kIHVwIHdpdGggYSBudW1iZXIgb2YgbWVyZ2UgY29uZmxpY3RzLgoKTm93LCBhcyBvZiBgb2FwaS1jb2RlZ2VuYCB2Mi40LjAsIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBtYWtlIGNoYW5nZXMgdG8gdGhlIGlucHV0IE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBfd2l0aG91dCBuZWVkaW5nIHRvIG1vZGlmeSBpdCBkaXJlY3RseV8uCgpUaGlzIHRha2VzIGFkdmFudGFnZSBvZiB0aGUgW09wZW5BUEkgT3ZlcmxheSBzcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vT0FJL092ZXJsYXktU3BlY2lmaWNhdGlvbiksIHdoaWNoIGlzIGEgc3RhYmxlIHNwZWNpZmljYXRpb24uCgo+IFshQ0FVVElPTl0KPiBCZXdhcmUhIEhlcmUgKG1heSkgYmUgZHJhZ29ucy4KPgo+IFRoZSBPdmVybGF5IHNwZWNpZmljYXRpb24gcmVxdWlyZXMgdGhlIHVzZSBvZiBKU09OIFBhdGgsIHdoaWNoIHNvbWUgdXNlcnMgbWF5IGZpbmQgZGlmZmljdWx0IHRvIHdyaXRlIGFuZC9vciBtYWludGFpbi4KPgo+IFdlIHN0aWxsIGhlYXZpbHkgcmVjb21tZW5kIHVzaW5nIE92ZXJsYXkgZnVuY3Rpb25hbGl0eSwgYnV0IHdvdWxkIGxpa2UgdXNlcnMgdG8gYmUgYXdhcmUgb2YgdGhpcy4KPgo+IFRoZXJlIGlzIGEgW3Byb3Bvc2VkIG1vZGlmaWNhdGlvbiB0byB0aGUgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PdmVybGF5LVNwZWNpZmljYXRpb24vcHVsbC8zMikgd2hpY2ggd291bGQgcmVsYXggdGhlIG5lZWQgZm9yIEpTT04gUGF0aCBhcyB0aGUgdGFyZ2V0aW5nIG1lY2hhbmlzbS4KCkZvciBpbnN0YW5jZSwgbGV0J3Mgc2F5IHRoYXQgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiwgd2hpY2ggcHJvdmlkZXMgaW5zaWdodCBpbnRvIGFuIGludGVybmFsIGVuZHBvaW50IHRoYXQgd2Ugc2hvdWxkIG5vdCBiZSBnZW5lcmF0aW5nIGFueSBjb2RlIGZvciAoZGVub3RlZCBieSBgeC1pbnRlcm5hbGApOgoKYGBgeWFtbApvcGVuYXBpOiAiMy4wLjAiCmluZm86CiAgdmVyc2lvbjogMS4wLjAKICB0aXRsZTogIkV4YW1wbGUgdG8gaW5kaWNhdGUgaG93IHRvIHVzZSB0aGUgT3BlbkFQSSBPdmVybGF5IHNwZWNpZmljYXRpb24gKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3ZlcmxheS1TcGVjaWZpY2F0aW9uKSIKcGF0aHM6CiAgL3Bpbmc6CiAgICBnZXQ6CiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBwZXQgcmVzcG9uc2UKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BvbmcnCiAgICBkZWxldGU6CiAgICAgIHgtaW50ZXJuYWw6IHRydWUKICAgICAgcmVzcG9uc2VzOgogICAgICAgICcyMDInOgogICAgICAgICAgY29udGVudDoge30KYGBgCgpJZiB3ZSB3ZXJlIHRvIHJ1biBgb2FwaS1jb2RlZ2VuYCB3aXRoIG91dC1vZi10aGUtYm94IGZ1bmN0aW9uYWxpdHksIHRoaXMgd291bGQgdGhlbiBsZWFkIHRvIHRoZSBERUxFVEUgZW5kcG9pbnQgYmVpbmcgZ2VuZXJhdGVkLCB3aGljaCB3ZSBkb24ndCB3YW50LgoKSW5zdGVhZCwgd2UgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIGBvdmVybGF5LnlhbWxgOgoKCmBgYHlhbWwKb3ZlcmxheTogMS4wLjAKaW5mbzoKICB0aXRsZTogT3ZlcmxheQogIHZlcnNpb246IDAuMC4wCmFjdGlvbnM6Ci0gdGFyZ2V0OiAiJCIKICBkZXNjcmlwdGlvbjogUGVyZm9ybSBhIHN0cnVjdHVyYWwgb3ZlcmxheSwgd2hpY2ggY2FuIGJlIG1vcmUgcmVhZGFibGUsIGFzIGl0J3MgY2xlYXIgd2hhdCB0aGUgc2hhcGUgb2YgdGhlIGRvY3VtZW50IGlzCiAgdXBkYXRlOgogICAgaW5mbzoKICAgICAgeC1vdmVybGF5LWFwcGxpZWQ6IHN0cnVjdHVyZWQtb3ZlcmxheQogICAgcGF0aHM6CiAgICAgIC9waW5nOgogICAgICAgIGdldDoKICAgICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgICAgJzIwMCc6CiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFBlcmZvcm0gYSBwaW5nIHJlcXVlc3QKLSB0YXJnZXQ6ICQucGF0aHMuKls/KEAueC1pbnRlcm5hbCldCiAgZGVzY3JpcHRpb246IFJlbW92ZSBpbnRlcm5hbCBlbmRwb2ludHMgKG5vdGVkIGJ5IHgtaW50ZXJuYWwpCiAgcmVtb3ZlOiB0cnVlCi0gdGFyZ2V0OiAkLnBhdGhzLiouKls/KEAueC1pbnRlcm5hbCldCiAgZGVzY3JpcHRpb246IFJlbW92ZSBpbnRlcm5hbCBlbmRwb2ludHMgKG5vdGVkIGJ5IHgtaW50ZXJuYWwpCiAgcmVtb3ZlOiB0cnVlCmBgYAoKQW5kIG91ciBjb25maWd1cmF0aW9uIGZpbGUgZm9yIGBvYXBpLWNvZGVnZW5gOgoKYGBgeWFtbAojIHlhbWwtbGFuZ3VhZ2Utc2VydmVyOiAkc2NoZW1hPWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL0hFQUQvY29uZmlndXJhdGlvbi1zY2hlbWEuanNvbgpwYWNrYWdlOiBhcGkKb3V0cHV0OiBwaW5nLmdlbi5nbwpnZW5lcmF0ZToKICBtb2RlbHM6IHRydWUKICBnb3JpbGxhLXNlcnZlcjogdHJ1ZQogIGVtYmVkZGVkLXNwZWM6IHRydWUKb3V0cHV0LW9wdGlvbnM6CiAgb3ZlcmxheToKICAgIHBhdGg6IG92ZXJsYXkueWFtbApgYGAKClRoaXMgdGhlbiBjb21wbGV0ZWx5IHJlbW92ZXMgdGhlIERFTEVURSBlbmRwb2ludCBfYmVmb3JlXyB3ZSBldmVuIHN0YXJ0IHRvIHBhcnNlIHRoZSBzcGVjaWZpY2F0aW9uIGluIGBvYXBpLWNvZGVnZW5gLCBzbyBpdCdzIGFzIGlmIHlvdXIgc3BlY2lmaWNhdGlvbiB3YXMgcHJvdmlkZWQgd2l0aG91dCB0aGF0IGVuZHBvaW50LgoKQWRkaXRpb25hbGx5LCB3ZSBjYW4gb3ZlcnJpZGUgb3RoZXIgcGllY2VzIG9mIG1ldGFkYXRhLCBzdWNoIGFzIHRoZSBkZXNjcmlwdGlvbiBmb3Igb3BlcmF0aW9ucy4KCkNoZWNrIG91dCBbdGhlIG92ZXJsYXkgZXhhbXBsZV0oZXhhbXBsZXMvb3ZlcmxheS8pIGZvciB0aGUgZnVsbCBjb2RlLCBhbmQgc29tZSBtb3JlIGNvbXBsZXggZXhhbXBsZXMuCgojIyBHZW5lcmF0aW5nIE51bGxhYmxlIHR5cGVzCgpJdCdzIHBvc3NpYmxlIHRoYXQgeW91IHdhbnQgdG8gYmUgYWJsZSB0byBkZXRlcm1pbmUgd2hldGhlciBhIGZpZWxkIGlzbid0IHNlbnQsIGlzIHNlbnQgYXMgYG51bGxgIG9yIGhhcyBhIHZhbHVlLgoKRm9yIGluc3RhbmNlLCBpZiB5b3UgaGFkIHRoZSBmb2xsb3dpbmcgT3BlbkFQSSBwcm9wZXJ0eToKCmBgYHlhbWwKUzoKICB0eXBlOiBvYmplY3QKICBwcm9wZXJ0aWVzOgogICAgRmllbGQ6CiAgICAgIHR5cGU6IHN0cmluZwogICAgICBudWxsYWJsZTogdHJ1ZQogICAgcmVxdWlyZWQ6IFtdCmBgYAoKVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGluIGBvYXBpLWNvZGVnZW5gIGlzIHRvIGdlbmVyYXRlOgoKYGBgZ28KdHlwZSBTIHN0cnVjdCB7CglGaWVsZCAqc3RyaW5nIGBqc29uOiJmaWVsZCxvbWl0ZW1wdHkiYAp9CmBgYAoKSG93ZXZlciwgeW91IGxvc2UgdGhlIGFiaWxpdHkgdG8gdW5kZXJzdGFuZCB0aGUgdGhyZWUgY2FzZXMsIGFzIHRoZXJlJ3Mgbm8gd2F5IHRvIGRpc3Rpbmd1aXNoIHR3byBvZiB0aGUgdHlwZXMgZnJvbSBlYWNoIG90aGVyOgoKLSBpcyB0aGlzIGZpZWxkIG5vdCBzZW50PyAoQ2FuIGJlIGNoZWNrZWQgd2l0aCBgUy5GaWVsZCA9PSBuaWxgKQotIGlzIHRoaXMgZmllbGQgYG51bGxgPyAoQ2FuIGJlIGNoZWNrZWQgd2l0aCBgUy5GaWVsZCA9PSBuaWxgKQotIGRvZXMgdGhpcyBmaWVsZCBoYXZlIGEgdmFsdWU/IChgUy5GaWVsZCAhPSBuaWwgJiYgKlMuRmllbGQgPT0gIjEyMyJgKQoKQXMgb2YgYG9hcGktY29kZWdlbmAgW3YyLjEuMF0oaHR0cHM6Ly9naXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vcmVsZWFzZXMvdGFnL3YyLjEuMCkgaXQgaXMgbm93IHBvc3NpYmxlIHRvIHJlcHJlc2VudCB0aGlzIHdpdGggdGhlIGBudWxsYWJsZS5OdWxsYWJsZWAgdHlwZSBmcm9tIFtvdXIgbmV3IGxpYnJhcnksIG9hcGktY29kZWdlbi9udWxsYWJsZV0oaHR0cHM6Ly9naXRodWIuY29tL29hcGktY29kZWdlbi9udWxsYWJsZSkuCgpJZiB5b3UgY29uZmlndXJlIHlvdXIgZ2VuZXJhdG9yJ3MgT3V0cHV0IE9wdGlvbnMgdG8gb3B0LWluIHRvIHRoaXMgYmVoYXZpb3VyLCBhcyBzbzoKCmBgYHlhbWwKb3V0cHV0LW9wdGlvbnM6CiAgbnVsbGFibGUtdHlwZTogdHJ1ZQpgYGAKCllvdSB3aWxsIG5vdyByZWNlaXZlIHRoZSBmb2xsb3dpbmcgb3V0cHV0OgoKYGBgZ28KdHlwZSBTIHN0cnVjdCB7CiAgICAvLyBub3RlIHRoYXQgdGhlcmUncyBubyBwb2ludGVyIGhlcmUsIGp1c3QgYG9taXRlbXB0eWAKICAgIEZpZWxkIG51bGxhYmxlLk51bGxhYmxlW3N0cmluZ10gYGpzb246ImZpZWxkLG9taXRlbXB0eSJgCn0KYGBgCgojIyBPcGVuQVBJIGV4dGVuc2lvbnMKCkFzIHdlbGwgYXMgdGhlIGNvcmUgT3BlbkFQSSBzdXBwb3J0LCB3ZSBhbHNvIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBPcGVuQVBJIGV4dGVuc2lvbnMsIGFzIGRlbm90ZWQgYnkgdGhlIFtPcGVuQVBJIFNwZWNpZmljYXRpb24gRXh0ZW5zaW9uc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zI3NwZWNpZmljYXRpb24tZXh0ZW5zaW9ucykuCgpUaGUgZm9sbG93aW5nIGV4dGVuc2lvbnMgYXJlIHN1cHBvcnRlZDoKCjx0YWJsZT4KCjx0cj4KPHRoPgpFeHRlbnNpb24KPC90aD4KPHRoPgpEZXNjcmlwdGlvbgo8L3RoPgo8L3RyPgoKPHRyPgo8dGQ+CgpgeC1nby10eXBlYCA8YnI+CmB4LWdvLXR5cGUtaW1wb3J0YAoKPC90ZD4KPHRkPgpPdmVycmlkZSB0aGUgZ2VuZXJhdGVkIHR5cGUgZGVmaW5pdGlvbiAoYW5kIG9wdGlvbmFsbHksIGFkZCBhbiBpbXBvcnQgZnJvbSBhbm90aGVyIHBhY2thZ2UpCjwvdGQ+CjwvdHI+Cgo8dHI+Cjx0ZD4KCmB4LWdvLXR5cGUtc2tpcC1vcHRpb25hbC1wb2ludGVyYAoKPC90ZD4KPHRkPgpEbyBub3QgYWRkIGEgcG9pbnRlciB0eXBlIGZvciBvcHRpb25hbCBmaWVsZHMgaW4gc3RydWN0cwo8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+CgpgeC1nby1uYW1lYAoKPC90ZD4KPHRkPgpPdmVycmlkZSB0aGUgZ2VuZXJhdGVkIG5hbWUgb2YgYSBmaWVsZCBvciBhIHR5cGUKPC90ZD4KPC90cj4KCjx0cj4KPHRkPgoKYHgtZ28tdHlwZS1uYW1lYAoKPC90ZD4KPHRkPgpPdmVycmlkZSB0aGUgZ2VuZXJhdGVkIG5hbWUgb2YgYSB0eXBlCjwvdGQ+CjwvdHI+Cgo8dHI+Cjx0ZD4KCmB4LW9taXRlbXB0eWAKCjwvdGQ+Cjx0ZD4KRm9yY2UgdGhlIHByZXNlbmNlIG9mIHRoZSBKU09OIHRhZyBgb21pdGVtcHR5YCBvbiBhIGZpZWxkCjwvdGQ+CjwvdHI+Cgo8dHI+Cjx0ZD4KCmB4LW9taXR6ZXJvYAoKPC90ZD4KPHRkPgpGb3JjZSB0aGUgcHJlc2VuY2Ugb2YgdGhlIEpTT04gdGFnIGBvbWl0emVyb2Agb24gYSBmaWVsZAo8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+CgpgeC1nby1qc29uLWlnbm9yZWAKCjwvdGQ+Cjx0ZD4KV2hlbiAodW4pbWFyc2hhbGluZyBKU09OLCBpZ25vcmUgZmllbGQocykKPC90ZD4KPC90cj4KCjx0cj4KPHRkPgoKYHgtb2FwaS1jb2RlZ2VuLWV4dHJhLXRhZ3NgCgo8L3RkPgo8dGQ+CkdlbmVyYXRlIGFyYml0cmFyeSBzdHJ1Y3QgdGFncyB0byBmaWVsZHMKPC90ZD4KPC90cj4KCjx0cj4KPHRkPgoKYHgtZW51bS12YXJuYW1lc2AgLyBgeC1lbnVtTmFtZXNgCgo8L3RkPgo8dGQ+Ck92ZXJyaWRlIGdlbmVyYXRlZCB2YXJpYWJsZSBuYW1lcyBmb3IgZW51bSBjb25zdGFudHMKPC90ZD4KPC90cj4KCjx0cj4KPHRkPgoKYHgtZGVwcmVjYXRlZC1yZWFzb25gCgo8L3RkPgo8dGQ+CkFkZCBhIEdvRG9jIGRlcHJlY2F0aW9uIHdhcm5pbmcgdG8gYSB0eXBlCjwvdGQ+CjwvdHI+Cgo8dHI+Cjx0ZD4KCmB4LW9yZGVyYAoKPC90ZD4KPHRkPgpFeHBsaWNpdGx5IG9yZGVyIHN0cnVjdCBmaWVsZHMKPC90ZD4KPC90cj4KCjx0cj4KPHRkPgoKYHgtb2FwaS1jb2RlZ2VuLW9ubHktaG9ub3VyLWdvLW5hbWVgCgo8L3RkPgo8dGQ+Ck9ubHkgaG9ub3VyIHRoZSBgeC1nby1uYW1lYCB3aGVuIGdlbmVyYXRpbmcgZmllbGQgbmFtZXMKPC90ZD4KPC90cj4KCjwvdGFibGU+CgoKIyMjIGB4LWdvLXR5cGVgIC8gYHgtZ28tdHlwZS1pbXBvcnRgIC0gb3ZlcnJpZGUgdGhlIGdlbmVyYXRlZCB0eXBlIGRlZmluaXRpb24gKGFuZCBvcHRpb25hbGx5LCBhZGQgYW4gaW1wb3J0IGZyb20gYW5vdGhlciBwYWNrYWdlKQoKVXNpbmcgdGhlIGB4LWdvLXR5cGVgIChhbmQgb3B0aW9uYWxseSwgYHgtZ28tdHlwZS1pbXBvcnRgIHdoZW4geW91IG5lZWQgdG8gaW1wb3J0IGFub3RoZXIgcGFja2FnZSkgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIHR5cGUgdGhhdCBgb2FwaS1jb2RlZ2VuYCBkZXRlcm1pbmVkIHRoZSBnZW5lcmF0ZWQgdHlwZSBzaG91bGQgYmUuCgpXZSBjYW4gc2VlIHRoaXMgYXQgcGxheSB3aXRoIHRoZSBmb2xsb3dpbmcgc2NoZW1hczoKCmBgYHlhbWwKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgQ2xpZW50OgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBuYW1lCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgbmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIGlkOgogICAgICAgICAgdHlwZTogbnVtYmVyCiAgICBDbGllbnRXaXRoRXh0ZW5zaW9uOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBuYW1lCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgbmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgIyB0aGlzIGlzIGEgYml0IG9mIGEgY29udHJpdmVkIGV4YW1wbGUsIGFzIHlvdSBjb3VsZCBpbnN0ZWFkIHVzZQogICAgICAgICAgIyBgZm9ybWF0OiB1dWlkYCBidXQgaXQgZXhwbGFpbnMgaG93IHlvdSdkIGRvIHRoaXMgd2hlbiB0aGVyZSBtYXkgYmUKICAgICAgICAgICMgYSBjbGFzaCwgZm9yIGluc3RhbmNlIGlmIHlvdSBhbHJlYWR5IGhhZCBhIGB1dWlkYCBwYWNrYWdlIHRoYXQgd2FzCiAgICAgICAgICAjIGJlaW5nIGltcG9ydGVkLCBvciAuLi4KICAgICAgICAgIHgtZ28tdHlwZTogZ29vZ2xldXVpZC5VVUlECiAgICAgICAgICB4LWdvLXR5cGUtaW1wb3J0OgogICAgICAgICAgICBwYXRoOiBnaXRodWIuY29tL2dvb2dsZS91dWlkCiAgICAgICAgICAgIG5hbWU6IGdvb2dsZXV1aWQKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IG51bWJlcgogICAgICAgICAgIyAuLi4gdGhpcyBpcyBhbHNvIGEgYml0IG9mIGEgY29udHJpdmVkIGV4YW1wbGUsIGFzIHlvdSBjb3VsZCB1c2UKICAgICAgICAgICMgYHR5cGU6IGludGVnZXJgIGJ1dCBpbiB0aGUgY2FzZSB0aGF0IHlvdSBrbm93IGJldHRlciB0aGFuIHdoYXQKICAgICAgICAgICMgb2FwaS1jb2RlZ2VuIGlzIGdlbmVyYXRpbmcsIGxpa2Ugc286CiAgICAgICAgICB4LWdvLXR5cGU6IGludDY0CmBgYAoKRnJvbSBoZXJlLCB3ZSBub3cgZ2V0IHR3byBkaWZmZXJlbnQgbW9kZWxzOgoKYGBgZ28KLy8gQ2xpZW50IGRlZmluZXMgbW9kZWwgZm9yIENsaWVudC4KdHlwZSBDbGllbnQgc3RydWN0IHsKCUlkICAgKmZsb2F0MzIgYGpzb246ImlkLG9taXRlbXB0eSJgCglOYW1lIHN0cmluZyAgIGBqc29uOiJuYW1lImAKfQoKLy8gQ2xpZW50V2l0aEV4dGVuc2lvbiBkZWZpbmVzIG1vZGVsIGZvciBDbGllbnRXaXRoRXh0ZW5zaW9uLgp0eXBlIENsaWVudFdpdGhFeHRlbnNpb24gc3RydWN0IHsKCUlkICAgKmludDY0ICAgICAgICAgIGBqc29uOiJpZCxvbWl0ZW1wdHkiYAoJTmFtZSBnb29nbGV1dWlkLlVVSUQgYGpzb246Im5hbWUiYAp9CmBgYAoKWW91IGNhbiBzZWUgdGhpcyBpbiBtb3JlIGRldGFpbCBpbiBbdGhlIGV4YW1wbGUgY29kZV0oZXhhbXBsZXMvZXh0ZW5zaW9ucy94Z290eXBlLykuCgojIyMgYHgtZ28tdHlwZS1za2lwLW9wdGlvbmFsLXBvaW50ZXJgIC0gZG8gbm90IGFkZCBhIHBvaW50ZXIgdHlwZSBmb3Igb3B0aW9uYWwgZmllbGRzIGluIHN0cnVjdHMKCjxhIG5hbWU9ImV4dC14LWdvLXR5cGUtc2tpcC1vcHRpb25hbC1wb2ludGVyIj48L2E+Cgo+IFshVElQXQo+IElmIHlvdSBwcmVmZXIgdGhpcyBiZWhhdmlvdXIsIGFuZCBwcmVmZXIgdG8gbm90IGhhdmUgdG8gYW5ub3RhdGUgeW91ciB3aG9sZSBPcGVuQVBJIHNwZWMgZm9yIHRoaXMgYmVoYXZpb3VyLCB5b3UgY2FuIHVzZSBgb3V0cHV0LW9wdGlvbnMucHJlZmVyLXNraXAtb3B0aW9uYWwtcG9pbnRlcj10cnVlYCB0byBkZWZhdWx0IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgZmllbGRzLgo+Cj4gSXQgaXMgdGhlbiBwb3NzaWJsZSB0byBvdmVycmlkZSB0aGlzIG9uIGEgcGVyLXR5cGUvcGVyLWZpZWxkIGJhc2lzIHdoZXJlIG5lY2Vzc2FyeS4KCkJ5IGRlZmF1bHQsIGBvYXBpLWNvZGVnZW5gIHdpbGwgZ2VuZXJhdGUgYSBwb2ludGVyIGZvciBvcHRpb25hbCBmaWVsZHMuCgpVc2luZyB0aGUgYHgtZ28tdHlwZS1za2lwLW9wdGlvbmFsLXBvaW50ZXJgIGV4dGVuc2lvbiBhbGxvd3Mgb21pdHRpbmcgdGhhdCBwb2ludGVyLgoKV2UgY2FuIHNlZSB0aGlzIGF0IHBsYXkgd2l0aCB0aGUgZm9sbG93aW5nIHNjaGVtYXM6CgpgYGB5YW1sCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIENsaWVudDoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gbmFtZQogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIG5hbWU6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IG51bWJlcgogICAgQ2xpZW50V2l0aEV4dGVuc2lvbjoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gbmFtZQogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIG5hbWU6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IG51bWJlcgogICAgICAgICAgeC1nby10eXBlLXNraXAtb3B0aW9uYWwtcG9pbnRlcjogdHJ1ZQpgYGAKCkZyb20gaGVyZSwgd2Ugbm93IGdldCB0d28gZGlmZmVyZW50IG1vZGVsczoKCmBgYGdvCi8vIENsaWVudCBkZWZpbmVzIG1vZGVsIGZvciBDbGllbnQuCnR5cGUgQ2xpZW50IHN0cnVjdCB7CglJZCAgICpmbG9hdDMyIGBqc29uOiJpZCxvbWl0ZW1wdHkiYAoJTmFtZSBzdHJpbmcgICBganNvbjoibmFtZSJgCn0KCi8vIENsaWVudFdpdGhFeHRlbnNpb24gZGVmaW5lcyBtb2RlbCBmb3IgQ2xpZW50V2l0aEV4dGVuc2lvbi4KdHlwZSBDbGllbnRXaXRoRXh0ZW5zaW9uIHN0cnVjdCB7CglJZCAgIGZsb2F0MzIgYGpzb246ImlkLG9taXRlbXB0eSJgCglOYW1lIHN0cmluZyAgYGpzb246Im5hbWUiYAp9CmBgYAoKWW91IGNhbiBzZWUgdGhpcyBpbiBtb3JlIGRldGFpbCBpbiBbdGhlIGV4YW1wbGUgY29kZV0oZXhhbXBsZXMvZXh0ZW5zaW9ucy94Z290eXBlc2tpcG9wdGlvbmFscG9pbnRlci8pLgoKIyMjIGB4LWdvLW5hbWVgIC0gb3ZlcnJpZGUgdGhlIGdlbmVyYXRlZCBuYW1lIG9mIGEgZmllbGQgb3IgYSB0eXBlCgpCeSBkZWZhdWx0LCBgb2FwaS1jb2RlZ2VuYCB3aWxsIGF0dGVtcHQgdG8gZ2VuZXJhdGUgdGhlIG5hbWUgb2YgZmllbGRzIGFuZCB0eXBlcyBpbiBhcyBiZXN0IGEgd2F5IGl0IGNhbi4KCkhvd2V2ZXIsIHNvbWV0aW1lcywgdGhlIG5hbWUgZG9lc24ndCBxdWl0ZSBmaXQgd2hhdCB5b3VyIGNvZGViYXNlIHN0YW5kYXJkcyBhcmUsIG9yIHRoZSBpbnRlbnQgb2YgdGhlIGZpZWxkLCBzbyB5b3UgY2FuIG92ZXJyaWRlIGl0IHdpdGggYHgtZ28tbmFtZWAuCgpXZSBjYW4gc2VlIHRoaXMgYXQgcGxheSB3aXRoIHRoZSBmb2xsb3dpbmcgc2NoZW1hczoKCmBgYHlhbWwKb3BlbmFwaTogIjMuMC4wIgppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IHgtZ28tbmFtZQpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBDbGllbnQ6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIG5hbWUKICAgICAgcHJvcGVydGllczoKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBudW1iZXIKICAgIENsaWVudFdpdGhFeHRlbnNpb246CiAgICAgIHR5cGU6IG9iamVjdAogICAgICAjIGNhbiBiZSB1c2VkIG9uIGEgdHlwZQogICAgICB4LWdvLW5hbWU6IENsaWVudFJlbmFtZWRCeUV4dGVuc2lvbgogICAgICByZXF1aXJlZDoKICAgICAgICAtIG5hbWUKICAgICAgcHJvcGVydGllczoKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBudW1iZXIKICAgICAgICAgICMgb3Igb24gYSBmaWVsZAogICAgICAgICAgeC1nby1uYW1lOiBBY2NvdW50SWRlbnRpZmllcgpgYGAKCkZyb20gaGVyZSwgd2Ugbm93IGdldCB0d28gZGlmZmVyZW50IG1vZGVsczoKCmBgYGdvCi8vIENsaWVudCBkZWZpbmVzIG1vZGVsIGZvciBDbGllbnQuCnR5cGUgQ2xpZW50IHN0cnVjdCB7CglJZCAgICpmbG9hdDMyIGBqc29uOiJpZCxvbWl0ZW1wdHkiYAoJTmFtZSBzdHJpbmcgICBganNvbjoibmFtZSJgCn0KCi8vIENsaWVudFJlbmFtZWRCeUV4dGVuc2lvbiBkZWZpbmVzIG1vZGVsIGZvciBDbGllbnRXaXRoRXh0ZW5zaW9uLgp0eXBlIENsaWVudFJlbmFtZWRCeUV4dGVuc2lvbiBzdHJ1Y3QgewoJQWNjb3VudElkZW50aWZpZXIgKmZsb2F0MzIgYGpzb246ImlkLG9taXRlbXB0eSJgCglOYW1lICAgICAgICAgICAgICBzdHJpbmcgICBganNvbjoibmFtZSJgCn0KYGBgCgpZb3UgY2FuIHNlZSB0aGlzIGluIG1vcmUgZGV0YWlsIGluIFt0aGUgZXhhbXBsZSBjb2RlXShleGFtcGxlcy9leHRlbnNpb25zL3hnb25hbWUvKS4KCiMjIyBgeC1nby10eXBlLW5hbWVgIC0gT3ZlcnJpZGUgdGhlIGdlbmVyYXRlZCBuYW1lIG9mIGEgdHlwZQoKPiBbIU5PVEVdCj4gTm90aWNlIHRoYXQgdGhpcyBpcyBzdWJ0bHkgZGlmZmVyZW50IHRvIHRoZSBgeC1nby1uYW1lYCwgd2hpY2ggYWxzbyBhcHBsaWVzIHRvIF9maWVsZHNfIHdpdGhpbiBgc3RydWN0YHMuCgpCeSBkZWZhdWx0LCBgb2FwaS1jb2RlZ2VuYCB3aWxsIGF0dGVtcHQgdG8gZ2VuZXJhdGUgdGhlIG5hbWUgb2YgdHlwZXMgaW4gYXMgYmVzdCBhIHdheSBpdCBjYW4uCgpIb3dldmVyLCBzb21ldGltZXMsIHRoZSBuYW1lIGRvZXNuJ3QgcXVpdGUgZml0IHdoYXQgeW91ciBjb2RlYmFzZSBzdGFuZGFyZHMgYXJlLCBvciB0aGUgaW50ZW50IG9mIHRoZSBmaWVsZCwgc28geW91IGNhbiBvdmVycmlkZSBpdCB3aXRoIGB4LWdvLW5hbWVgLgoKV2UgY2FuIHNlZSB0aGlzIGF0IHBsYXkgd2l0aCB0aGUgZm9sbG93aW5nIHNjaGVtYXM6CgpgYGB5YW1sCm9wZW5hcGk6ICIzLjAuMCIKaW5mbzoKICB2ZXJzaW9uOiAxLjAuMAogIHRpdGxlOiB4LWdvLXR5cGUtbmFtZQpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBDbGllbnQ6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIG5hbWUKICAgICAgcHJvcGVydGllczoKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBudW1iZXIKICAgIENsaWVudFdpdGhFeHRlbnNpb246CiAgICAgIHR5cGU6IG9iamVjdAogICAgICB4LWdvLXR5cGUtbmFtZTogQ2xpZW50UmVuYW1lZEJ5RXh0ZW5zaW9uCiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gbmFtZQogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIG5hbWU6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IG51bWJlcgogICAgICAgICAgIyBOT1RFIGF0dGVtcHRpbmcgYSBgeC1nby10eXBlLW5hbWVgIGhlcmUgaXMgYSBuby1vcCwgYXMgd2UncmUgbm90IHByb2R1Y2luZyBhIF90eXBlXyBvbmx5IGEgX2ZpZWxkXwogICAgICAgICAgeC1nby10eXBlLW5hbWU6IFRoaXNXaWxsTm90QmVVc2VkCmBgYAoKRnJvbSBoZXJlLCB3ZSBub3cgZ2V0IHR3byBkaWZmZXJlbnQgbW9kZWxzIGFuZCBhIHR5cGUgYWxpYXM6CgpgYGBnbwovLyBDbGllbnQgZGVmaW5lcyBtb2RlbCBmb3IgQ2xpZW50Lgp0eXBlIENsaWVudCBzdHJ1Y3QgewoJSWQgICAqZmxvYXQzMiBganNvbjoiaWQsb21pdGVtcHR5ImAKCU5hbWUgc3RyaW5nICAgYGpzb246Im5hbWUiYAp9CgovLyBDbGllbnRXaXRoRXh0ZW5zaW9uIGRlZmluZXMgbW9kZWwgZm9yIENsaWVudFdpdGhFeHRlbnNpb24uCnR5cGUgQ2xpZW50V2l0aEV4dGVuc2lvbiA9IENsaWVudFJlbmFtZWRCeUV4dGVuc2lvbgoKLy8gQ2xpZW50UmVuYW1lZEJ5RXh0ZW5zaW9uIGRlZmluZXMgbW9kZWwgZm9yIC4KdHlwZSBDbGllbnRSZW5hbWVkQnlFeHRlbnNpb24gc3RydWN0IHsKCUlkICAgKmZsb2F0MzIgYGpzb246ImlkLG9taXRlbXB0eSJgCglOYW1lIHN0cmluZyAgIGBqc29uOiJuYW1lImAKfQpgYGAKCllvdSBjYW4gc2VlIHRoaXMgaW4gbW9yZSBkZXRhaWwgaW4gW3RoZSBleGFtcGxlIGNvZGVdKGV4YW1wbGVzL2V4dGVuc2lvbnMveGdvdHlwZW5hbWUvKS4KCiMjIyBgeC1vbWl0ZW1wdHlgIC0gZm9yY2UgdGhlIHByZXNlbmNlIG9mIHRoZSBKU09OIHRhZyBgb21pdGVtcHR5YCBvbiBhIGZpZWxkCgpJbiBhIGNhc2UgdGhhdCB5b3UgbWF5IHdhbnQgdG8gYWRkIHRoZSBKU09OIHN0cnVjdCB0YWcgYG9taXRlbXB0eWAgdG8gdHlwZXMgdGhhdCBkb24ndCBoYXZlIG9uZSBnZW5lcmF0ZWQgYnkgZGVmYXVsdCAtIGZvciBpbnN0YW5jZSBhIHJlcXVpcmVkIGZpZWxkIC0geW91IGNhbiB1c2UgdGhlIGB4LW9taXRlbXB0eWAgZXh0ZW5zaW9uLgoKV2UgY2FuIHNlZSB0aGlzIGF0IHBsYXkgd2l0aCB0aGUgZm9sbG93aW5nIHNjaGVtYXM6CgpgYGB5YW1sCm9wZW5hcGk6ICIzLjAuMCIKaW5mbzoKICB2ZXJzaW9uOiAxLjAuMAogIHRpdGxlOiB4LW9taXRlbXB0eQpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBDbGllbnQ6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIG5hbWUKICAgICAgcHJvcGVydGllczoKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBudW1iZXIKICAgIENsaWVudFdpdGhFeHRlbnNpb246CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIG5hbWUKICAgICAgcHJvcGVydGllczoKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAjIGZvciBzb21lIHJlYXNvbiwgeW91IG1heSB3YW50IHRoaXMgYmVoYXZpb3VyLCBldmVuIHRob3VnaCBpdCdzIGEgcmVxdWlyZWQgZmllbGQKICAgICAgICAgIHgtb21pdGVtcHR5OiB0cnVlCiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBudW1iZXIKYGBgCgpGcm9tIGhlcmUsIHdlIG5vdyBnZXQgdHdvIGRpZmZlcmVudCBtb2RlbHM6CgpgYGBnbwovLyBDbGllbnQgZGVmaW5lcyBtb2RlbCBmb3IgQ2xpZW50Lgp0eXBlIENsaWVudCBzdHJ1Y3QgewoJSWQgICAqZmxvYXQzMiBganNvbjoiaWQsb21pdGVtcHR5ImAKCU5hbWUgc3RyaW5nICAgYGpzb246Im5hbWUiYAp9CgovLyBDbGllbnRXaXRoRXh0ZW5zaW9uIGRlZmluZXMgbW9kZWwgZm9yIENsaWVudFdpdGhFeHRlbnNpb24uCnR5cGUgQ2xpZW50V2l0aEV4dGVuc2lvbiBzdHJ1Y3QgewoJSWQgICAqZmxvYXQzMiBganNvbjoiaWQsb21pdGVtcHR5ImAKCU5hbWUgc3RyaW5nICAgYGpzb246Im5hbWUsb21pdGVtcHR5ImAKfQpgYGAKCllvdSBjYW4gc2VlIHRoaXMgaW4gbW9yZSBkZXRhaWwgaW4gW3RoZSBleGFtcGxlIGNvZGVdKGV4YW1wbGVzL2V4dGVuc2lvbnMveG9taXRlbXB0eS8pLgoKIyMjIGB4LW9taXR6ZXJvYCAtIGZvcmNlIHRoZSBwcmVzZW5jZSBvZiB0aGUgSlNPTiB0YWcgYG9taXR6ZXJvYCBvbiBhIGZpZWxkCgo+IFshTk9URV0KPiBgb21pdHplcm9gIHdhcyBhZGRlZCBpbiBHbyAxLjI0LiBJZiB5b3UncmUgbm90IHVzaW5nIEdvIDEuMjQgaW4geW91ciBwcm9qZWN0LCB0aGlzIHdvbid0IHdvcmsuCgpJbiBhIGNhc2UgdGhhdCB5b3UgbWF5IHdhbnQgdG8gYWRkIHRoZSBKU09OIHN0cnVjdCB0YWcgYG9taXR6ZXJvYCB0byB0eXBlcywgeW91IGNhbiB1c2UgdGhlIGB4LW9taXRlbXB0eWAgZXh0ZW5zaW9uLgoKV2UgY2FuIHNlZSB0aGlzIGF0IHBsYXkgd2l0aCB0aGUgZm9sbG93aW5nIHNjaGVtYXM6CgpgYGB5YW1sCm9wZW5hcGk6ICIzLjAuMCIKaW5mbzoKICB2ZXJzaW9uOiAxLjAuMAogIHRpdGxlOiB4LW9taXRlbXB0eQpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBDbGllbnQ6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIG5hbWUKICAgICAgcHJvcGVydGllczoKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBudW1iZXIKICAgIENsaWVudFdpdGhFeHRlbnNpb246CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIG5hbWUKICAgICAgcHJvcGVydGllczoKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBudW1iZXIKICAgICAgICAgIHgtb21pdHplcm86IHRydWUKYGBgCgpGcm9tIGhlcmUsIHdlIG5vdyBnZXQgdHdvIGRpZmZlcmVudCBtb2RlbHM6CgpgYGBnbwovLyBDbGllbnQgZGVmaW5lcyBtb2RlbCBmb3IgQ2xpZW50Lgp0eXBlIENsaWVudCBzdHJ1Y3QgewoJSWQgICAqZmxvYXQzMiBganNvbjoiaWQsb21pdGVtcHR5ImAKCU5hbWUgc3RyaW5nICAgYGpzb246Im5hbWUiYAp9CgovLyBDbGllbnRXaXRoRXh0ZW5zaW9uIGRlZmluZXMgbW9kZWwgZm9yIENsaWVudFdpdGhFeHRlbnNpb24uCnR5cGUgQ2xpZW50V2l0aEV4dGVuc2lvbiBzdHJ1Y3QgewoJSWQgICAqZmxvYXQzMiBganNvbjoiaWQsb21pdGVtcHR5LG9taXR6ZXJvImAKCU5hbWUgc3RyaW5nICAgYGpzb246Im5hbWUiYAp9CmBgYAoKWW91IGNhbiBzZWUgdGhpcyBpbiBtb3JlIGRldGFpbCBpbiBbdGhlIGV4YW1wbGUgY29kZV0oZXhhbXBsZXMvZXh0ZW5zaW9ucy94b21pdHplcm8vKS4KCiMjIyBgeC1nby1qc29uLWlnbm9yZWAgLSB3aGVuICh1biltYXJzaGFsaW5nIEpTT04sIGlnbm9yZSBmaWVsZChzKQoKQnkgZGVmYXVsdCwgYG9hcGktY29kZWdlbmAgd2lsbCBnZW5lcmF0ZSBganNvbjoiLi4uImAgc3RydWN0IHRhZ3MgZm9yIGFsbCBmaWVsZHMgaW4gYSBzdHJ1Y3QsIHNvIEpTT04gKHVuKW1hcnNoYWxpbmcgd29ya3MuCgpIb3dldmVyLCBzb21ldGltZXMsIHlvdSB3YW50IHRvIG9taXQgZmllbGRzLCB3aGljaCBjYW4gYmUgZG9uZSB3aXRoIHRoZSBgeC1nby1qc29uLWlnbm9yZWAgZXh0ZW5zaW9uLgoKV2UgY2FuIHNlZSB0aGlzIGF0IHBsYXkgd2l0aCB0aGUgZm9sbG93aW5nIHNjaGVtYXM6CgpgYGB5YW1sCm9wZW5hcGk6ICIzLjAuMCIKaW5mbzoKICB2ZXJzaW9uOiAxLjAuMAogIHRpdGxlOiB4LWdvLWpzb24taWdub3JlCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIENsaWVudDoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gbmFtZQogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIG5hbWU6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICBjb21wbGV4RmllbGQ6CiAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIG5hbWU6CiAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgIGFjY291bnROYW1lOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgIyAuLi4KICAgIENsaWVudFdpdGhFeHRlbnNpb246CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIG5hbWUKICAgICAgcHJvcGVydGllczoKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgY29tcGxleEZpZWxkOgogICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICBuYW1lOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICBhY2NvdW50TmFtZToKICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICMgLi4uCiAgICAgICAgICB4LWdvLWpzb24taWdub3JlOiB0cnVlCmBgYAoKRnJvbSBoZXJlLCB3ZSBub3cgZ2V0IHR3byBkaWZmZXJlbnQgbW9kZWxzOgoKYGBgZ28KLy8gQ2xpZW50IGRlZmluZXMgbW9kZWwgZm9yIENsaWVudC4KdHlwZSBDbGllbnQgc3RydWN0IHsKCUNvbXBsZXhGaWVsZCAqc3RydWN0IHsKCQlBY2NvdW50TmFtZSAqc3RyaW5nIGBqc29uOiJhY2NvdW50TmFtZSxvbWl0ZW1wdHkiYAoJCU5hbWUgICAgICAgICpzdHJpbmcgYGpzb246Im5hbWUsb21pdGVtcHR5ImAKCX0gYGpzb246ImNvbXBsZXhGaWVsZCxvbWl0ZW1wdHkiYAoJTmFtZSBzdHJpbmcgYGpzb246Im5hbWUiYAp9CgovLyBDbGllbnRXaXRoRXh0ZW5zaW9uIGRlZmluZXMgbW9kZWwgZm9yIENsaWVudFdpdGhFeHRlbnNpb24uCnR5cGUgQ2xpZW50V2l0aEV4dGVuc2lvbiBzdHJ1Y3QgewoJQ29tcGxleEZpZWxkICpzdHJ1Y3QgewoJCUFjY291bnROYW1lICpzdHJpbmcgYGpzb246ImFjY291bnROYW1lLG9taXRlbXB0eSJgCgkJTmFtZSAgICAgICAgKnN0cmluZyBganNvbjoibmFtZSxvbWl0ZW1wdHkiYAoJfSBganNvbjoiLSJgCglOYW1lIHN0cmluZyBganNvbjoibmFtZSJgCn0KYGBgCgpOb3RpY2UgdGhhdCB0aGUgYENvbXBsZXhGaWVsZGAgaXMgc3RpbGwgZ2VuZXJhdGVkIGluIGZ1bGwsIGJ1dCB0aGUgdHlwZSB3aWxsIHRoZW4gYmUgaWdub3JlZCB3aXRoIEpTT04gbWFyc2hhbGxpbmcuCgpZb3UgY2FuIHNlZSB0aGlzIGluIG1vcmUgZGV0YWlsIGluIFt0aGUgZXhhbXBsZSBjb2RlXShleGFtcGxlcy9leHRlbnNpb25zL3hnb2pzb25pZ25vcmUvKS4KCiMjIyBgeC1vYXBpLWNvZGVnZW4tZXh0cmEtdGFnc2AgLSBnZW5lcmF0ZSBhcmJpdHJhcnkgc3RydWN0IHRhZ3MgdG8gZmllbGRzCgpJZiB5b3UncmUgbWFraW5nIHVzZSBvZiBhIGZpZWxkJ3Mgc3RydWN0IHRhZ3MgdG8gaS5lLiBhcHBseSB2YWxpZGF0aW9uLCBkZWNpZGUgd2hldGhlciBzb21ldGhpbmcgc2hvdWxkIGJlIGxvZ2dlZCwgZXRjLCB5b3UgY2FuIHVzZSBgeC1vYXBpLWNvZGVnZW4tZXh0cmEtdGFnc2AgdG8gc2V0IGFkZGl0aW9uYWwgdGFncyBmb3IgeW91ciBnZW5lcmF0ZWQgdHlwZXMuCgpXZSBjYW4gc2VlIHRoaXMgYXQgcGxheSB3aXRoIHRoZSBmb2xsb3dpbmcgc2NoZW1hczoKCmBgYHlhbWwKb3BlbmFwaTogIjMuMC4wIgppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IHgtb2FwaS1jb2RlZ2VuLWV4dHJhLXRhZ3MKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgQ2xpZW50OgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBuYW1lCiAgICAgICAgLSBpZAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIG5hbWU6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IG51bWJlcgogICAgQ2xpZW50V2l0aEV4dGVuc2lvbjoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gbmFtZQogICAgICAgIC0gaWQKICAgICAgcHJvcGVydGllczoKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBudW1iZXIKICAgICAgICAgIHgtb2FwaS1jb2RlZ2VuLWV4dHJhLXRhZ3M6CiAgICAgICAgICAgIHZhbGlkYXRlOiAicmVxdWlyZWQsbWluPTEsbWF4PTI1NiIKICAgICAgICAgICAgc2FmZS10by1sb2c6ICJ0cnVlIgogICAgICAgICAgICBnb3JtOiBwcmltYXJ5a2V5CmBgYAoKRnJvbSBoZXJlLCB3ZSBub3cgZ2V0IHR3byBkaWZmZXJlbnQgbW9kZWxzOgoKYGBgZ28KLy8gQ2xpZW50IGRlZmluZXMgbW9kZWwgZm9yIENsaWVudC4KdHlwZSBDbGllbnQgc3RydWN0IHsKCUlkICAgZmxvYXQzMiBganNvbjoiaWQiYAoJTmFtZSBzdHJpbmcgIGBqc29uOiJuYW1lImAKfQoKLy8gQ2xpZW50V2l0aEV4dGVuc2lvbiBkZWZpbmVzIG1vZGVsIGZvciBDbGllbnRXaXRoRXh0ZW5zaW9uLgp0eXBlIENsaWVudFdpdGhFeHRlbnNpb24gc3RydWN0IHsKCUlkICAgZmxvYXQzMiBgZ29ybToicHJpbWFyeWtleSIganNvbjoiaWQiIHNhZmUtdG8tbG9nOiJ0cnVlIiB2YWxpZGF0ZToicmVxdWlyZWQsbWluPTEsbWF4PTI1NiJgCglOYW1lIHN0cmluZyAgYGpzb246Im5hbWUiYAp9CmBgYAoKWW91IGNhbiBzZWUgdGhpcyBpbiBtb3JlIGRldGFpbCBpbiBbdGhlIGV4YW1wbGUgY29kZV0oZXhhbXBsZXMvZXh0ZW5zaW9ucy94b2FwaWNvZGVnZW5leHRyYXRhZ3MvKS4KCiMjIyBgeC1lbnVtLXZhcm5hbWVzYCAvIGB4LWVudW1OYW1lc2AgLSBvdmVycmlkZSBnZW5lcmF0ZWQgdmFyaWFibGUgbmFtZXMgZm9yIGVudW0gY29uc3RhbnRzCgpXaGVuIGNvbnN1bWluZyBhbiBlbnVtIHZhbHVlIGZyb20gYW4gZXh0ZXJuYWwgc3lzdGVtLCB0aGUgbmFtZSBtYXkgbm90IHByb2R1Y2UgYSBuaWNlIHZhcmlhYmxlIG5hbWUuIFVzaW5nIHRoZSBgeC1lbnVtLXZhcm5hbWVzYCBleHRlbnNpb24gYWxsb3dzIG92ZXJyaWRpbmcgdGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCB2YXJpYWJsZSBuYW1lcy4KCldlIGNhbiBzZWUgdGhpcyBhdCBwbGF5IHdpdGggdGhlIGZvbGxvd2luZyBzY2hlbWFzOgoKYGBgeWFtbApvcGVuYXBpOiAiMy4wLjAiCmluZm86CiAgdmVyc2lvbjogMS4wLjAKICB0aXRsZTogeC1lbnVtTmFtZXMgYW5kIHgtZW51bS12YXJuYW1lcwpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBDbGllbnRUeXBlOgogICAgICB0eXBlOiBzdHJpbmcKICAgICAgZW51bToKICAgICAgICAtIEFDVAogICAgICAgIC0gRVhQCiAgICBDbGllbnRUeXBlV2l0aE5hbWVzRXh0ZW5zaW9uOgogICAgICB0eXBlOiBzdHJpbmcKICAgICAgZW51bToKICAgICAgICAtIEFDVAogICAgICAgIC0gRVhQCiAgICAgIHgtZW51bU5hbWVzOgogICAgICAgIC0gQWN0aXZlCiAgICAgICAgLSBFeHBpcmVkCiAgICBDbGllbnRUeXBlV2l0aFZhck5hbWVzRXh0ZW5zaW9uOgogICAgICB0eXBlOiBzdHJpbmcKICAgICAgZW51bToKICAgICAgICAtIEFDVAogICAgICAgIC0gRVhQCiAgICAgIHgtZW51bS12YXJuYW1lczoKICAgICAgICAtIEFjdGl2ZQogICAgICAgIC0gRXhwaXJlZApgYGAKCkZyb20gaGVyZSwgd2Ugbm93IGdldCB0d28gZGlmZmVyZW50IGZvcm1zIG9mIHRoZSBzYW1lIGVudW0gZGVmaW5pdGlvbi4KCmBgYGdvCi8vIERlZmluZXMgdmFsdWVzIGZvciBDbGllbnRUeXBlLgpjb25zdCAoCglBQ1QgQ2xpZW50VHlwZSA9ICJBQ1QiCglFWFAgQ2xpZW50VHlwZSA9ICJFWFAiCikKCi8vIERlZmluZXMgdmFsdWVzIGZvciBDbGllbnRUeXBlV2l0aE5hbWVzRXh0ZW5zaW9uLgpjb25zdCAoCglDbGllbnRUeXBlV2l0aE5hbWVzRXh0ZW5zaW9uQWN0aXZlICBDbGllbnRUeXBlV2l0aE5hbWVzRXh0ZW5zaW9uID0gIkFDVCIKCUNsaWVudFR5cGVXaXRoTmFtZXNFeHRlbnNpb25FeHBpcmVkIENsaWVudFR5cGVXaXRoTmFtZXNFeHRlbnNpb24gPSAiRVhQIgopCgovLyBEZWZpbmVzIHZhbHVlcyBmb3IgQ2xpZW50VHlwZVdpdGhWYXJOYW1lc0V4dGVuc2lvbi4KY29uc3QgKAoJQ2xpZW50VHlwZVdpdGhWYXJOYW1lc0V4dGVuc2lvbkFjdGl2ZSAgQ2xpZW50VHlwZVdpdGhWYXJOYW1lc0V4dGVuc2lvbiA9ICJBQ1QiCglDbGllbnRUeXBlV2l0aFZhck5hbWVzRXh0ZW5zaW9uRXhwaXJlZCBDbGllbnRUeXBlV2l0aFZhck5hbWVzRXh0ZW5zaW9uID0gIkVYUCIKKQoKLy8gQ2xpZW50VHlwZSBkZWZpbmVzIG1vZGVsIGZvciBDbGllbnRUeXBlLgp0eXBlIENsaWVudFR5cGUgc3RyaW5nCgovLyBDbGllbnRUeXBlV2l0aE5hbWVzRXh0ZW5zaW9uIGRlZmluZXMgbW9kZWwgZm9yIENsaWVudFR5cGVXaXRoTmFtZXNFeHRlbnNpb24uCnR5cGUgQ2xpZW50VHlwZVdpdGhOYW1lc0V4dGVuc2lvbiBzdHJpbmcKCi8vIENsaWVudFR5cGVXaXRoVmFyTmFtZXNFeHRlbnNpb24gZGVmaW5lcyBtb2RlbCBmb3IgQ2xpZW50VHlwZVdpdGhWYXJOYW1lc0V4dGVuc2lvbi4KdHlwZSBDbGllbnRUeXBlV2l0aFZhck5hbWVzRXh0ZW5zaW9uIHN0cmluZwpgYGAKCllvdSBjYW4gc2VlIHRoaXMgaW4gbW9yZSBkZXRhaWwgaW4gW3RoZSBleGFtcGxlIGNvZGVdKGV4YW1wbGVzL2V4dGVuc2lvbnMveGVudW1uYW1lcy8pLgoKIyMjIGB4LWRlcHJlY2F0ZWQtcmVhc29uYCAtIGFkZCBhIEdvRG9jIGRlcHJlY2F0aW9uIHdhcm5pbmcgdG8gYSB0eXBlCgpXaGVuIGFuIE9wZW5BUEkgdHlwZSBpcyBkZXByZWNhdGVkLCBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgY2FuIGJlIGFkZGVkIGluIHRoZSBHb0RvYyB1c2luZyBgeC1kZXByZWNhdGVkLXJlYXNvbmAuCgpXZSBjYW4gc2VlIHRoaXMgYXQgcGxheSB3aXRoIHRoZSBmb2xsb3dpbmcgc2NoZW1hczoKCmBgYHlhbWwKb3BlbmFwaTogIjMuMC4wIgppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IHgtZGVwcmVjYXRlZC1yZWFzb24KY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgQ2xpZW50OgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBuYW1lCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgbmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIGlkOgogICAgICAgICAgdHlwZTogbnVtYmVyCiAgICBDbGllbnRXaXRoRXh0ZW5zaW9uOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBuYW1lCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgbmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZGVwcmVjYXRlZDogdHJ1ZQogICAgICAgICAgeC1kZXByZWNhdGVkLXJlYXNvbjogRG9uJ3QgdXNlIGJlY2F1c2UgcmVhc29ucwogICAgICAgIGlkOgogICAgICAgICAgdHlwZTogbnVtYmVyCiAgICAgICAgICAjIE5PVEUgdGhhdCB0aGlzIGRvZXNuJ3QgZ2VuZXJhdGUsIGFzIG5vIGBkZXByZWNhdGVkOiB0cnVlYCBpcyBzZXQKICAgICAgICAgIHgtZGVwcmVjYXRlZC1yZWFzb246IE5PVEUgeW91IHNob3VsZG4ndCBzZWUgdGhpcywgYXMgeW91J3ZlIG5vdCBkZXByZWNhdGVkIHRoaXMgZmllbGQKYGBgCgpGcm9tIGhlcmUsIHdlIG5vdyBnZXQgdHdvIGRpZmZlcmVudCBmb3JtcyBvZiB0aGUgc2FtZSBlbnVtIGRlZmluaXRpb24uCgpgYGBnbwovLyBDbGllbnQgZGVmaW5lcyBtb2RlbCBmb3IgQ2xpZW50Lgp0eXBlIENsaWVudCBzdHJ1Y3QgewoJSWQgICAqZmxvYXQzMiBganNvbjoiaWQsb21pdGVtcHR5ImAKCU5hbWUgc3RyaW5nICAgYGpzb246Im5hbWUiYAp9CgovLyBDbGllbnRXaXRoRXh0ZW5zaW9uIGRlZmluZXMgbW9kZWwgZm9yIENsaWVudFdpdGhFeHRlbnNpb24uCnR5cGUgQ2xpZW50V2l0aEV4dGVuc2lvbiBzdHJ1Y3QgewoJSWQgKmZsb2F0MzIgYGpzb246ImlkLG9taXRlbXB0eSJgCgkvLyBEZXByZWNhdGVkOiBEb24ndCB1c2UgYmVjYXVzZSByZWFzb25zCglOYW1lIHN0cmluZyBganNvbjoibmFtZSJgCn0KYGBgCgpOb3RpY2UgdGhhdCBiZWNhdXNlIHdlJ3ZlIG5vdCBzZXQgYGRlcHJlY2F0ZWQ6IHRydWVgIHRvIHRoZSBgbmFtZWAgZmllbGQsIGl0IGRvZXNuJ3QgZ2VuZXJhdGUgYSBkZXByZWNhdGlvbiB3YXJuaW5nLgoKWW91IGNhbiBzZWUgdGhpcyBpbiBtb3JlIGRldGFpbCBpbiBbdGhlIGV4YW1wbGUgY29kZV0oZXhhbXBsZXMvZXh0ZW5zaW9ucy94ZGVwcmVjYXRlZHJlYXNvbi8pLgoKIyMjIGB4LW9yZGVyYCAtIGV4cGxpY2l0bHkgb3JkZXIgc3RydWN0IGZpZWxkcwoKV2hldGhlciB5b3UgbGlrZSBjZXJ0YWluIGZpZWxkcyBiZWluZyBvcmRlcmVkIGJlZm9yZSBvdGhlcnMsIG9yIHlvdSB3YW50IHRvIHBlcmZvcm0gbW9yZSBlZmZpY2llbnQgcGFja2luZyBvZiB5b3VyIHN0cnVjdHMsIHRoZSBgeC1vcmRlcmAgZXh0ZW5zaW9uIGlzIGhlcmUgZm9yIHlvdS4KCk5vdGUgdGhhdCBgeC1vcmRlcmAgaXMgMS1pbmRleGVkIC0gYHgtb3JkZXI6IDBgIGlzIG5vdCBhIHZhbGlkIHZhbHVlLgoKV2UgY2FuIHNlZSB0aGlzIGF0IHBsYXkgd2l0aCB0aGUgZm9sbG93aW5nIHNjaGVtYXM6CgpgYGB5YW1sCm9wZW5hcGk6ICIzLjAuMCIKaW5mbzoKICB2ZXJzaW9uOiAxLjAuMAogIHRpdGxlOiB4LW9yZGVyCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIENsaWVudDoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gbmFtZQogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGFfbmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIGlkOgogICAgICAgICAgdHlwZTogbnVtYmVyCiAgICBDbGllbnRXaXRoRXh0ZW5zaW9uOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBuYW1lCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgYV9uYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICB4LW9yZGVyOiAyCiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBudW1iZXIKICAgICAgICAgIHgtb3JkZXI6IDEKYGBgCgpGcm9tIGhlcmUsIHdlIG5vdyBnZXQgdHdvIGRpZmZlcmVudCBmb3JtcyBvZiB0aGUgc2FtZSB0eXBlIGRlZmluaXRpb24uCgpgYGBnbwovLyBDbGllbnQgZGVmaW5lcyBtb2RlbCBmb3IgQ2xpZW50Lgp0eXBlIENsaWVudCBzdHJ1Y3QgewoJQU5hbWUgKnN0cmluZyAgYGpzb246ImFfbmFtZSxvbWl0ZW1wdHkiYAoJSWQgICAgKmZsb2F0MzIgYGpzb246ImlkLG9taXRlbXB0eSJgCn0KCi8vIENsaWVudFdpdGhFeHRlbnNpb24gZGVmaW5lcyBtb2RlbCBmb3IgQ2xpZW50V2l0aEV4dGVuc2lvbi4KdHlwZSBDbGllbnRXaXRoRXh0ZW5zaW9uIHN0cnVjdCB7CglJZCAgICAqZmxvYXQzMiBganNvbjoiaWQsb21pdGVtcHR5ImAKCUFOYW1lICpzdHJpbmcgIGBqc29uOiJhX25hbWUsb21pdGVtcHR5ImAKfQpgYGAKCllvdSBjYW4gc2VlIHRoaXMgaW4gbW9yZSBkZXRhaWwgaW4gW3RoZSBleGFtcGxlIGNvZGVdKGV4YW1wbGVzL2V4dGVuc2lvbnMveG9yZGVyLykuCgojIyMgYHgtb2FwaS1jb2RlZ2VuLW9ubHktaG9ub3VyLWdvLW5hbWVgIC0gb25seSBob25vdXIgdGhlIGB4LWdvLW5hbWVgIHdoZW4gZ2VuZXJhdGluZyBmaWVsZCBuYW1lcwoKCj4gWyFXQVJOSU5HXQo+IFVzaW5nIHRoaXMgb3B0aW9uIG1heSBsZWFkIHRvIGNhc2VzIHdoZXJlIGBvYXBpLWNvZGVnZW5gJ3MgcmV3cml0aW5nIG9mIGZpZWxkIG5hbWVzIHRvIHByZXZlbnQgY2xhc2hlcyB3aXRoIG90aGVyIHR5cGVzLCBvciB0byBwcmV2ZW50IGluY2x1ZGluZyBjaGFyYWN0ZXJzIHRoYXQgbWF5IG5vdCBiZSB2YWxpZCBHbyBmaWVsZCBuYW1lcy4KCkluIHNvbWUgY2FzZXMsIHlvdSBtYXkgbm90IHdhbnQgdXNlIHRoZSBpbmJ1aWx0IG9wdGlvbnMgZm9yIGNvbnZlcnRpbmcgYW4gT3BlbkFQSSBmaWVsZCBuYW1lIHRvIGEgR28gZmllbGQgbmFtZSwgc3VjaCBhcyB0aGUgYG5hbWUtbm9ybWFsaXplcjogIlRvQ2FtZWxDYXNlV2l0aEluaXRpYWxpc21zImAsIGFuZCBpbnN0ZWFkIHRydXN0IHRoZSBuYW1lIHRoYXQgeW91J3ZlIGRlZmluZWQgZm9yIHRoZSB0eXBlIGJldHRlci4KCkluIHRoaXMgY2FzZSwgeW91IGNhbiB1c2UgYHgtb2FwaS1jb2RlZ2VuLW9ubHktaG9ub3VyLWdvLW5hbWVgIHRvIGVuZm9yY2UgdGhpcywgYWxvbmdzaWRlIHNwZWNpZnlpbmcgdGhlIGBhbGxvdy11bmV4cG9ydGVkLXN0cnVjdC1maWVsZC1uYW1lc2AgY29tcGF0aWJpbGl0eSBvcHRpb24uCgpUaGlzIGFsbG93cyB5b3UgdG8gdGFrZSBhIHNwZWMgc3VjaCBhczoKCmBgYHlhbWwKb3BlbmFwaTogIjMuMC4wIgppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IHgtb2FwaS1jb2RlZ2VuLW9ubHktaG9ub3VyLWdvLW5hbWUKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgVHlwZVdpdGhVbmV4cG9ydGVkRmllbGQ6CiAgICAgIGRlc2NyaXB0aW9uOiBBIHN0cnVjdCB3aWxsIGJlIG91dHB1dCB3aGVyZSBvbmUgb2YgdGhlIGZpZWxkcyBpcyBub3QgZXhwb3J0ZWQKICAgICAgcHJvcGVydGllczoKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICMgTk9URSB0aGF0IHRoZXJlIGlzIGFuIGV4cGxpY2l0IHVzYWdlIG9mIGEgbG93ZXJjYXNlIGNoYXJhY3RlcgogICAgICAgICAgeC1nby1uYW1lOiBhY2NvdW50SWRlbnRpZmllcgogICAgICAgICAgeC1vYXBpLWNvZGVnZW4tZXh0cmEtdGFnczoKICAgICAgICAgICAganNvbjogIi0iCiAgICAgICAgICB4LW9hcGktY29kZWdlbi1vbmx5LWhvbm91ci1nby1uYW1lOiB0cnVlCmBgYAoKQW5kIHdlJ2xsIGdlbmVyYXRlOgoKYGBgZ28KLy8gVHlwZVdpdGhVbmV4cG9ydGVkRmllbGQgQSBzdHJ1Y3Qgd2lsbCBiZSBvdXRwdXQgd2hlcmUgb25lIG9mIHRoZSBmaWVsZHMgaXMgbm90IGV4cG9ydGVkCnR5cGUgVHlwZVdpdGhVbmV4cG9ydGVkRmllbGQgc3RydWN0IHsKCWFjY291bnRJZGVudGlmaWVyICpzdHJpbmcgYGpzb246Ii0iYAoJTmFtZSAgICAgICAgICAgICAgKnN0cmluZyBganNvbjoibmFtZSxvbWl0ZW1wdHkiYAp9CmBgYAoKWW91IGNhbiBzZWUgdGhpcyBpbiBtb3JlIGRldGFpbCBpbiBbdGhlIGV4YW1wbGUgY29kZV0oZXhhbXBsZXMvZXh0ZW5zaW9ucy94b2FwaWNvZGVnZW5vbmx5aG9ub3VyZ29uYW1lKS4KCiMjIFJlcXVlc3QvcmVzcG9uc2UgdmFsaWRhdGlvbiBtaWRkbGV3YXJlCgpUaGUgZ2VuZXJhdGVkIGNvZGUgdGhhdCBgb2FwaS1jb2RlZ2VuYCBwcm9kdWNlcyBoYXMgc29tZSB2YWxpZGF0aW9uIGZvciBzb21lIGluY29taW5nIGRhdGEsIHN1Y2ggYXMgY2hlY2tpbmcgZm9yIHJlcXVpcmVkIGhlYWRlcnMsIGFuZCB3aGVuIHVzaW5nIHRoZSBbc3RyaWN0IHNlcnZlcl0oI3N0cmljdC1zZXJ2ZXIpIHlvdSBnZXQgc29tZSBtb3JlIHZhbGlkYXRpb24gYXJvdW5kIHRoZSBjb3JyZWN0IHVzYWdlIG9mIHRoZSByZXNwb25zZSB0eXBlcy4KCkhvd2V2ZXIsIHRoaXMgbGVhdmVzIGEgbG90IG9mIHZhbGlkYXRpb24gdGhhdCBuZWVkcyB0byBiZSBkb25lLCB3aGljaCBjYW4gYmUgdGVkaW91cyB0byBoYW5kLXdyaXRlIHRoaXMgbG9naWMsIGVzcGVjaWFsbHkgZm9yIGxhcmdlIG9yIGNvbXBsZXggT3BlbkFQSSBzcGVjaWZpY2F0aW9ucy4KClRvIHNpbXBsaWZ5IHRoaXMsIHdlIHVzZSBhIG1pZGRsZXdhcmUsIHdoaWNoIHByb3ZpZGVzIHRoZSByZXF1ZXN0IHZhbGlkYXRpb24uIFRoZSBtaWRkbGV3YXJlIHlvdSB3YW50IHRvIHVzZSBkZXBlbmRzIG9uIHRoZSBzZXJ2ZXIgeW91J3JlIHVzaW5nOgoKPHRhYmxlPgoKPHRyPgo8dGg+ClNlcnZlcgo8L3RoPgo8dGg+Ck1pZGRsZXdhcmUgbGlicmFyeQo8L3RoPgo8L3RyPgoKPHRyPgo8dGQ+CgpbQ2hpXShodHRwczovL2dpdGh1Yi5jb20vZ28tY2hpL2NoaSkKCjwvdGQ+Cjx0ZD4KCltuZXRodHRwLW1pZGRsZXdhcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vbmV0aHR0cC1taWRkbGV3YXJlKQoKPC90ZD4KPC90cj4KCjx0cj4KPHRkPgoKW0VjaG9dKGh0dHBzOi8vZ2l0aHViLmNvbS9sYWJzdGFjay9lY2hvKQoKPC90ZD4KPHRkPgoKW2VjaG8tbWlkZGxld2FyZV0oaHR0cHM6Ly9naXRodWIuY29tL29hcGktY29kZWdlbi9lY2hvLW1pZGRsZXdhcmUpCgo8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+CgpbRmliZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb2ZpYmVyL2ZpYmVyKQoKPC90ZD4KPHRkPgoKW2ZpYmVyLW1pZGRsZXdhcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vZmliZXItbWlkZGxld2FyZSkKCjwvdGQ+Cgo8L3RyPgoKCjx0cj4KPHRkPgoKW0dpbl0oaHR0cHM6Ly9naXRodWIuY29tL2dpbi1nb25pYy9naW4pCgo8L3RkPgo8dGQ+CgpbZ2luLW1pZGRsZXdhcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vZ2luLW1pZGRsZXdhcmUpCgo8L3RkPgo8L3RyPgoKPHRyPgo8dGQ+CgpbZ29yaWxsYS9tdXhdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb3JpbGxhL211eCkKCjwvdGQ+Cjx0ZD4KCltuZXRodHRwLW1pZGRsZXdhcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vbmV0aHR0cC1taWRkbGV3YXJlKQoKPC90ZD4KCjwvdHI+Cgo8dHI+Cjx0ZD4KCltJcmlzXShodHRwczovL2dpdGh1Yi5jb20va2F0YXJhcy9pcmlzKQoKPC90ZD4KPHRkPgoKW2lyaXMtbWlkZGxld2FyZV0oaHR0cHM6Ly9naXRodWIuY29tL29hcGktY29kZWdlbi9pcmlzLW1pZGRsZXdhcmUpCgo8L3RkPgoKPC90cj4KCjx0cj4KPHRkPgoKWzEuMjIrIGBuZXQvaHR0cGBdKGh0dHBzOi8vcGtnLmdvLmRldi9uZXQvaHR0cCkKCjwvdGQ+Cjx0ZD4KCltuZXRodHRwLW1pZGRsZXdhcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vbmV0aHR0cC1taWRkbGV3YXJlKQoKPC90ZD4KCjwvdHI+Cgo8dHI+Cjx0ZD4KCkFueSBvdGhlciBzZXJ2ZXIgKHdoaWNoIGNvbmZvcm1zIHRvIGBuZXQvaHR0cGApCgo8L3RkPgo8dGQ+CgpbbmV0aHR0cC1taWRkbGV3YXJlXShodHRwczovL2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL25ldGh0dHAtbWlkZGxld2FyZSkKCjwvdGQ+Cgo8L3RyPgoKPC90YWJsZT4KCj4gWyFOT1RFXQo+IEl0IGlzIFtub3QgY3VycmVudGx5IHBvc3NpYmxlXShodHRwczovL2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9pc3N1ZXMvMTAzOCkgdG8gdmFsaWRhdGUgdGhlIEhUVFAgcmVzcG9uc2Ugd2l0aCBhIG1pZGRsZXdhcmUuCgo+IFshTk9URV0KPiBXZSdyZSBhbHNvIFtleHBsb3JpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vZXhwL2lzc3Vlcy8xKSB0aGUgdXNlIG9mIFtsaWJvcGVuYXBpLXZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGktdmFsaWRhdG9yLykgZm9yIHJlcXVlc3QvcmVzcG9uc2UgdmFsaWRhdGlvbiBtaWRkbGV3YXJlCgojIyBJbXBsZW1lbnRpbmcgc2VjdXJpdHkKCklmIHlvdSdyZSB1c2luZyBhIHNwZWNpZmljYXRpb24gd2l0aCBbU2VjdXJpdHkgU2NoZW1lc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zI3NlY3VyaXR5LXNjaGVtZS1vYmplY3QpIGFuZCBbU2VjdXJpdHkgUmVxdWlyZW1lbnRzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMjc2VjdXJpdHktcmVxdWlyZW1lbnQtb2JqZWN0KSwgeW91J2xsIHdhbnQgdG8gYXV0aGVudGljYXRlIGFuZCBhdXRob3JpemUgcmVxdWVzdHMuCgojIyMgT24gdGhlIHNlcnZlcgoKPiBbIU5PVEVdCj4gT3V0LW9mLXRoZS1ib3gsIHRoZSBzZXJ2ZXItc2lkZSBjb2RlIGdlbmVyYXRlZCBieSBgb2FwaS1jb2RlZ2VuYCBkb2VzIG5vdCBwcm92aWRlIHNlY3VyaXR5IHZhbGlkYXRpb24uCj4KPiBUbyBwZXJmb3JtIGF1dGhlbnRpY2F0aW9uLCB5b3Ugd2lsbCBuZWVkIHRvIHVzZSB0aGUgW3ZhbGlkYXRpb24gbWlkZGxld2FyZV0oI3JlcXVlc3RyZXNwb25zZS12YWxpZGF0aW9uLW1pZGRsZXdhcmUpLgo+Cj4gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBbaW1wbGVtZW50IHNlcnZlci1zaWRlIHZhbGlkYXRpb24gaW4gdGhlIGdlbmVyYXRlZCBjb2RlXShodHRwczovL2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9pc3N1ZXMvMTUyNCkKClRvIHNlZSBob3cgdGhpcyBjYW4gd29yaywgY2hlY2sgb3V0IHRoZSBbYXV0aGVudGljYXRlZCBBUEkgZXhhbXBsZV0oZXhhbXBsZXMvYXV0aGVudGljYXRlZC1hcGkvZWNobykuCgojIyMgT24gdGhlIGNsaWVudAoKV2l0aCBhIGdlbmVyYXRlZCBjbGllbnQsIHlvdSdsbCB3YW50IHRvIHVzZSB0aGUgY2xpZW50J3MgZ2VuZXJhdGVkIGBXaXRoUmVxdWVzdEVkaXRvckZuYCBmdW5jdGlvbiB0byBwYXNzIGluIGEgZ2l2ZW4gcmVxdWVzdCBlZGl0b3IgYFJlcXVlc3RFZGl0b3JGbmAuCgpGb3IgaW5zdGFuY2U6CgpgYGBnbwppbXBvcnQgKAoJImNvbnRleHQiCgkiZm10IgoJImxvZyIKCgkiZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL3YyL3BrZy9zZWN1cml0eXByb3ZpZGVyIgopCgpmdW5jIG1haW4oKSB7CgliYXNpY0F1dGgsIGVyciA6PSBzZWN1cml0eXByb3ZpZGVyLk5ld1NlY3VyaXR5UHJvdmlkZXJCYXNpY0F1dGgoIm15X3VzZXIiLCAibXlfcGFzcyIpCglpZiBlcnIgIT0gbmlsIHsKCQlsb2cuRmF0YWwoZXJyKQoJfQoKCWNsaWVudCwgZXJyIDo9IE5ld0NsaWVudCgiaHR0cHM6Ly8uLi4uIiwgV2l0aFJlcXVlc3RFZGl0b3JGbihiYXNpY0F1dGguSW50ZXJjZXB0KSkKCWlmIGVyciAhPSBuaWwgewoJCWxvZy5GYXRhbChlcnIpCgl9CgoJcmVzcCwgZXJyIDo9IGNsaWVudC5HZXRDbGllbnQoY29udGV4dC5UT0RPKCkpCglpZiBlcnIgIT0gbmlsIHsKCQlsb2cuRmF0YWwoZXJyKQoJfQoJZm10LlByaW50ZigicmVzcC5TdGF0dXNDb2RlOiAldlxuIiwgcmVzcC5TdGF0dXNDb2RlKQp9CmBgYAoKTm90aWNlIHRoYXQgd2UncmUgdXNpbmcgYSBwcmUtYnVpbHQgcHJvdmlkZXIgZnJvbSB0aGUgW2Bwa2cvc2VjdXJpdHlwcm92aWRlcmAgcGFja2FnZV0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi92Mi9wa2cvc2VjdXJpdHlwcm92aWRlciksIHdoaWNoIGhhcyBzb21lIGluYnVpbHQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgb2YgYXV0aGVudGljYXRpb24sIHRvby4KCiMjIEN1c3RvbSBjb2RlIGdlbmVyYXRpb24KCkl0IGlzIHBvc3NpYmxlIHRvIGV4dGVuZCB0aGUgaW5idWlsdCBjb2RlIGdlbmVyYXRpb24gZnJvbSBgb2FwaS1jb2RlZ2VuYCB1c2luZyBHbydzIGB0ZXh0L3RlbXBsYXRlYHMuCgpZb3UgY2FuIHNwZWNpZnksIHRocm91Z2ggeW91ciBjb25maWd1cmF0aW9uIGZpbGUsIHRoZSBgb3V0cHV0LW9wdGlvbnMudXNlci10ZW1wbGF0ZXNgIHNldHRpbmcgdG8gb3ZlcnJpZGUgdGhlIGluYnVpbHQgdGVtcGxhdGVzIGFuZCB1c2UgYSB1c2VyLWRlZmluZWQgdGVtcGxhdGUuCgo+IFshTk9URV0KPiBGaWxlbmFtZXMgZ2l2ZW4gdG8gdGhlIGB1c2VyLXRlbXBsYXRlc2AgY29uZmlndXJhdGlvbiBtdXN0ICoqZXhhY3RseSoqIG1hdGNoIHRoZSBmaWxlbmFtZSB0aGF0IGBvYXBpLWNvZGVnZW5gIGlzIGxvb2tpbmcgZm9yCgojIyMgTG9jYWwgcGF0aHMKCldpdGhpbiB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZSwgeW91IGNhbiBzcGVjaWZ5IHJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGhzIHRvIGEgZmlsZSB0byByZWZlcmVuY2UgZm9yIHRoZSB0ZW1wbGF0ZSwgc3VjaCBhczoKCmBgYHlhbWwKIyB5YW1sLWxhbmd1YWdlLXNlcnZlcjogJHNjaGVtYT1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9IRUFEL2NvbmZpZ3VyYXRpb24tc2NoZW1hLmpzb24KIyAuLi4Kb3V0cHV0LW9wdGlvbnM6CiAgdXNlci10ZW1wbGF0ZXM6CiAgICBjbGllbnQtd2l0aC1yZXNwb25zZXMudG1wbDogLi9jdXN0b20tdGVtcGxhdGUudG1wbAogICAgYWRkaXRpb25hbC1wcm9wZXJ0aWVzLnRtcGw6IC90bXAvZm9vLmJhcgogICAgdHlwZWRlZi50bXBsOiBuby1wcmVmaXgudG1wbApgYGAKCj4gWyFXQVJOSU5HXQo+IFdlIGRvIG5vdCBpbnRlcnBvbGF0ZSBgfmAgb3IgYCRIT01FYCAob3Igb3RoZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzKSBpbiBwYXRocyBnaXZlbgoKIyMjIEhUVFBTIHBhdGhzCgpJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHVzZSBIVFRQUyBVUkxzLgoKPiBbIVdBUk5JTkddCj4gQWx0aG91Z2ggcG9zc2libGUsIHRoaXMgZG9lcyBsZWFkIHRvIGBvYXBpLWNvZGVnZW5gIGV4ZWN1dGlvbnMgbm90IG5lY2Vzc2FyaWx5IGJlaW5nIHJlcHJvZHVjaWJsZS4gSXQncyByZWNvbW1lbmRlZCB0byB2ZW5kb3IgKGNvcHkpIHRoZSBPcGVuQVBJIHNwZWMgaW50byB5b3VyIGNvZGViYXNlIGFuZCByZWZlcmVuY2UgaXQgbG9jYWxseQo+Cj4gU2VlIFt0aGlzIGJsb2cgcG9zdF0oaHR0cHM6Ly93d3cuanZ0Lm1lL3Bvc3RzLzIwMjQvMDQvMjcvZ2l0aHViLWFjdGlvbnMtdXBkYXRlLWZpbGUvKSBmb3IgYW4gZXhhbXBsZSBvZiBob3cgdG8gdXNlIEdpdEh1YiBBY3Rpb25zIHRvIG1hbmFnZSB0aGUgdXBkYXRlcyBvZiBmaWxlcyBhY3Jvc3MgcmVwb3MKPgo+IFRoaXMgd2lsbCBiZSBkaXNhYmxlZCBieSBkZWZhdWx0IChidXQgcG9zc2libGUgdG8gdHVybiBiYWNrIG9uIHZpYSBjb25maWd1cmF0aW9uKSBbaW4gdGhlIGZ1dHVyZV0oaHR0cHM6Ly9naXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vaXNzdWVzLzE1NjQpCgpUbyB1c2UgaXQsIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbjoKCmBgYHlhbWwKIyB5YW1sLWxhbmd1YWdlLXNlcnZlcjogJHNjaGVtYT1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9IRUFEL2NvbmZpZ3VyYXRpb24tc2NoZW1hLmpzb24KIyAuLi4Kb3V0cHV0LW9wdGlvbnM6CiAgdXNlci10ZW1wbGF0ZXM6CiAgICAjIFRoZSBmb2xsb3dpbmcgYXJlIHJlZmVyZW5jaW5nIGEgdmVyc2lvbiBvZiB0aGUgZGVmYXVsdCBjbGllbnQtd2l0aC1yZXNwb25zZXMudG1wbCBmaWxlLCBidXQgbG9hZGVkIGluIHRocm91Z2ggR2l0SHViJ3MgcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS4gVGhlIGdlbmVyYWwgZm9ybSB0byB1c2UgcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSBpcyBhcyBmb2xsb3dzIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS88dXNlcm5hbWU+Lzxwcm9qZWN0Pi88Y29tbWl0aXNoPi9wYXRoL3RvL3RlbXBsYXRlL3RlbXBsYXRlLnRtcGwKCiAgICAjIEFsdGVybmF0aXZlbHkgdXNpbmcgcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSB3aXRoIGEgaGFzaAogICAgY2xpZW50LXdpdGgtcmVzcG9uc2VzLnRtcGw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL2FkNWVhZGE0ZjNjY2MyOGE4ODQ3N2NlZjYyZWEyMWMxN2ZjOGFhMDEvcGtnL2NvZGVnZW4vdGVtcGxhdGVzL2NsaWVudC13aXRoLXJlc3BvbnNlcy50bXBsCiAgICAjIEFsdGVybmF0aXZlbHkgdXNpbmcgcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSB3aXRoIGEgdGFnCiAgICBjbGllbnQtd2l0aC1yZXNwb25zZXMudG1wbDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vdjIuMS4wL3BrZy9jb2RlZ2VuL3RlbXBsYXRlcy9jbGllbnQtd2l0aC1yZXNwb25zZXMudG1wbAogICAgIyBBbHRlcm5hdGl2ZWx5IHVzaW5nIHJhdy5naXRodWJ1c2VyY29udGVudC5jb20gd2l0aCBhIGJyYW5jaAogICAgY2xpZW50LXdpdGgtcmVzcG9uc2VzLnRtcGw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL21hc3Rlci9wa2cvY29kZWdlbi90ZW1wbGF0ZXMvY2xpZW50LXdpdGgtcmVzcG9uc2VzLnRtcGwKYGBgCgo+IFshV0FSTklOR10KPiBJZiB1c2luZyBVUkxzIHRoYXQgcHVsbCBsb2NhdGlvbnMgZnJvbSBhIEdpdCByZXBvLCBzdWNoIGFzIGByYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tYCwgaXQgaXMgc3Ryb25nbHkgZW5jb3VyYWdlZCB0byB1c2UgYSB0YWcgb3IgYSByYXcgY29tbWl0IGhhc2ggaW5zdGVhZCBvZiBhIGJyYW5jaCBsaWtlIGBtYWluYC4gVHJhY2tpbmcgYSBicmFuY2ggY2FuIGxlYWQgdG8gdW5leHBlY3RlZCBBUEkgZHJpZnQsIGFuZCBsb3NzIG9mIHRoZSBhYmlsaXR5IHRvIHJlcHJvZHVjZSBhIGJ1aWxkLgoKIyMjIElubGluZSB0ZW1wbGF0ZQoKSXQncyBhbHNvIHBvc3NpYmxlIHRvIHNldCB0aGUgdGVtcGxhdGVzIGlubGluZSBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlOgoKYGBgeWFtbAojIHlhbWwtbGFuZ3VhZ2Utc2VydmVyOiAkc2NoZW1hPWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL0hFQUQvY29uZmlndXJhdGlvbi1zY2hlbWEuanNvbgojIC4uLgpvdXRwdXQtb3B0aW9uczoKICB1c2VyLXRlbXBsYXRlczoKICAgICMgTk9URSB0aGUgdXNlIG9mIHRoZSBgfGAgKHBpcGUgc3ltYm9sKSBoZXJlIHRvIGRlbm90ZSB0aGF0IHRoaXMgaXMgYQogICAgIyBtdWx0aS1saW5lIHN0YXRlbWVudCB0aGF0IHNob3VsZCBwcmVzZXJ2ZSBuZXdsaW5lcy4gTW9yZSByZWFkaW5nOgogICAgIyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTg3MDgxNTYvMjI1NzAzOCBhbmQKICAgICMgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE1MzY1Mjk2LzIyNTcwMzgKICAgIGNsaWVudC13aXRoLXJlc3BvbnNlcy50bXBsOiB8CiAgICAgICAgLy8gQ2xpZW50V2l0aFJlc3BvbnNlcyBidWlsZHMgb24gQ2xpZW50SW50ZXJmYWNlIHRvIG9mZmVyIHJlc3BvbnNlIHBheWxvYWRzCiAgICAgICAgdHlwZSBDbGllbnRXaXRoUmVzcG9uc2VzIHN0cnVjdCB7CiAgICAgICAgICAgIENsaWVudEludGVyZmFjZQogICAgICAgIH0KICAgICAgICAuLi4KYGBgCgojIyMgVXNpbmcgdGhlIEdvIHBhY2thZ2UKCkFsdGVybmF0aXZlbHksIHlvdSBhcmUgYWJsZSB0byB1c2UgdGhlIHVuZGVybHlpbmcgY29kZSBnZW5lcmF0aW9uIGFzIGEgcGFja2FnZSwgd2hpY2ggW3dpbGwgYmUgZG9jdW1lbnRlZCBpbiB0aGUgZnV0dXJlXShodHRwczovL2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9pc3N1ZXMvMTQ4NykuCgojIyBBZGRpdGlvbmFsIFByb3BlcnRpZXMgKGBhZGRpdGlvbmFsUHJvcGVydGllc2ApCgpbT3BlbkFQSSBTY2hlbWFzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNzY2hlbWEtb2JqZWN0KSBpbXBsaWNpdGx5IGFjY2VwdCBgYWRkaXRpb25hbFByb3BlcnRpZXNgLCBtZWFuaW5nIHRoYXQgYW55IGZpZWxkcyBwcm92aWRlZCwgYnV0IG5vdCBleHBsaWNpdGx5IGRlZmluZWQgdmlhIHByb3BlcnRpZXMgb24gdGhlIHNjaGVtYSBhcmUgYWNjZXB0ZWQgYXMgaW5wdXQsIGFuZCBwcm9wYWdhdGVkLiBXaGVuIHVuc3BlY2lmaWVkLCBPcGVuQVBJIGRlZmluZXMgdGhhdCB0aGUgYGFkZGl0aW9uYWxQcm9wZXJ0aWVzYCBmaWVsZCBpcyBhc3N1bWVkIHRvIGJlIGB0cnVlYC4KCkZvciBzaW1wbGljaXR5LCBhbmQgdG8gcmVtb3ZlIGEgZmFpciBiaXQgb2YgZHVwbGljYXRpb24gYW5kIGJvaWxlcnBsYXRlLCBgb2FwaS1jb2RlZ2VuYCBkZWNpZGVzIHRvIGlnbm9yZSB0aGUgaW1wbGljaXQgYGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB0cnVlYCwgYW5kIGluc3RlYWQgcmVxdWlyZXMgeW91IHRvIHNwZWNpZnkgdGhlIGBhZGRpdGlvbmFsUHJvcGVydGllc2Aga2V5IHRvIGdlbmVyYXRlIHRoZSBib2lsZXJwbGF0ZS4KCj4gWyFOT1RFXQo+IEluIHRoZSBmdXR1cmUgW3RoaXMgd2lsbCBiZSBwb3NzaWJsZV0oaHR0cHM6Ly9naXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vaXNzdWVzLzE1MTQpIHRvIGRpc2FibGUgdGhpcyBmdW5jdGlvbmFsaXR5LCBhbmQgaG9ub3VyIHRoZSBpbXBsaWNpdCBgYWRkaXRpb25hbFByb3BlcnRpZXM6IHRydWVgCgpCZWxvdyB5b3UgY2FuIHNlZSBzb21lIGV4YW1wbGVzIG9mIGhvdyBgYWRkaXRpb25hbFByb3BlcnRpZXNgIGFmZmVjdHMgdGhlIGdlbmVyYXRlZCBjb2RlLgoKIyMjIEltcGxpY2l0IGBhZGRpdGlvbmFsUHJvcGVydGllczogdHJ1ZWAgLyBubyBgYWRkaXRpb25hbFByb3BlcnRpZXNgIHNldAoKYGBgeWFtbApjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBUaGluZzoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gaWQKICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgIyBpbXBsaWNpdCBhZGRpdGlvbmFsUHJvcGVydGllczogdHJ1ZQpgYGAKCldpbGwgZ2VuZXJhdGU6CgpgYGBnbwovLyBUaGluZyBkZWZpbmVzIG1vZGVsIGZvciBUaGluZy4KdHlwZSBUaGluZyBzdHJ1Y3QgewoJSWQgaW50IGBqc29uOiJpZCJgCn0KCi8vIHdpdGggbm8gZ2VuZXJhdGVkIGJvaWxlcnBsYXRlIG5vciB0aGUgYEFkZGl0aW9uYWxQcm9wZXJ0aWVzYCBmaWVsZApgYGAKCiMjIyBFeHBsaWNpdCBgYWRkaXRpb25hbFByb3BlcnRpZXM6IHRydWVgCgpgYGB5YW1sCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIFRoaW5nOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBpZAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGlkOgogICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAjIGV4cGxpY2l0IHRydWUKICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHRydWUKYGBgCgpXaWxsIGdlbmVyYXRlOgoKYGBgZ28KLy8gVGhpbmcgZGVmaW5lcyBtb2RlbCBmb3IgVGhpbmcuCnR5cGUgVGhpbmcgc3RydWN0IHsKCUlkICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgYGpzb246ImlkImAKCUFkZGl0aW9uYWxQcm9wZXJ0aWVzIG1hcFtzdHJpbmddaW50ZXJmYWNle30gYGpzb246Ii0iYAp9CgovLyB3aXRoIGdlbmVyYXRlZCBib2lsZXJwbGF0ZSBiZWxvdwpgYGAKCjxkZXRhaWxzPgoKPHN1bW1hcnk+Qm9pbGVycGxhdGU8L3N1bW1hcnk+CgpgYGBnbwoKLy8gR2V0dGVyIGZvciBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIFRoaW5nLiBSZXR1cm5zIHRoZSBzcGVjaWZpZWQKLy8gZWxlbWVudCBhbmQgd2hldGhlciBpdCB3YXMgZm91bmQKZnVuYyAoYSBUaGluZykgR2V0KGZpZWxkTmFtZSBzdHJpbmcpICh2YWx1ZSBpbnRlcmZhY2V7fSwgZm91bmQgYm9vbCkgewoJaWYgYS5BZGRpdGlvbmFsUHJvcGVydGllcyAhPSBuaWwgewoJCXZhbHVlLCBmb3VuZCA9IGEuQWRkaXRpb25hbFByb3BlcnRpZXNbZmllbGROYW1lXQoJfQoJcmV0dXJuCn0KCi8vIFNldHRlciBmb3IgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGZvciBUaGluZwpmdW5jIChhICpUaGluZykgU2V0KGZpZWxkTmFtZSBzdHJpbmcsIHZhbHVlIGludGVyZmFjZXt9KSB7CglpZiBhLkFkZGl0aW9uYWxQcm9wZXJ0aWVzID09IG5pbCB7CgkJYS5BZGRpdGlvbmFsUHJvcGVydGllcyA9IG1ha2UobWFwW3N0cmluZ11pbnRlcmZhY2V7fSkKCX0KCWEuQWRkaXRpb25hbFByb3BlcnRpZXNbZmllbGROYW1lXSA9IHZhbHVlCn0KCi8vIE92ZXJyaWRlIGRlZmF1bHQgSlNPTiBoYW5kbGluZyBmb3IgVGhpbmcgdG8gaGFuZGxlIEFkZGl0aW9uYWxQcm9wZXJ0aWVzCmZ1bmMgKGEgKlRoaW5nKSBVbm1hcnNoYWxKU09OKGIgW11ieXRlKSBlcnJvciB7CglvYmplY3QgOj0gbWFrZShtYXBbc3RyaW5nXWpzb24uUmF3TWVzc2FnZSkKCWVyciA6PSBqc29uLlVubWFyc2hhbChiLCAmb2JqZWN0KQoJaWYgZXJyICE9IG5pbCB7CgkJcmV0dXJuIGVycgoJfQoKCWlmIHJhdywgZm91bmQgOj0gb2JqZWN0WyJpZCJdOyBmb3VuZCB7CgkJZXJyID0ganNvbi5Vbm1hcnNoYWwocmF3LCAmYS5JZCkKCQlpZiBlcnIgIT0gbmlsIHsKCQkJcmV0dXJuIGZtdC5FcnJvcmYoImVycm9yIHJlYWRpbmcgJ2lkJzogJXciLCBlcnIpCgkJfQoJCWRlbGV0ZShvYmplY3QsICJpZCIpCgl9CgoJaWYgbGVuKG9iamVjdCkgIT0gMCB7CgkJYS5BZGRpdGlvbmFsUHJvcGVydGllcyA9IG1ha2UobWFwW3N0cmluZ11pbnRlcmZhY2V7fSkKCQlmb3IgZmllbGROYW1lLCBmaWVsZEJ1ZiA6PSByYW5nZSBvYmplY3QgewoJCQl2YXIgZmllbGRWYWwgaW50ZXJmYWNle30KCQkJZXJyIDo9IGpzb24uVW5tYXJzaGFsKGZpZWxkQnVmLCAmZmllbGRWYWwpCgkJCWlmIGVyciAhPSBuaWwgewoJCQkJcmV0dXJuIGZtdC5FcnJvcmYoImVycm9yIHVubWFyc2hhbGluZyBmaWVsZCAlczogJXciLCBmaWVsZE5hbWUsIGVycikKCQkJfQoJCQlhLkFkZGl0aW9uYWxQcm9wZXJ0aWVzW2ZpZWxkTmFtZV0gPSBmaWVsZFZhbAoJCX0KCX0KCXJldHVybiBuaWwKfQoKLy8gT3ZlcnJpZGUgZGVmYXVsdCBKU09OIGhhbmRsaW5nIGZvciBUaGluZyB0byBoYW5kbGUgQWRkaXRpb25hbFByb3BlcnRpZXMKZnVuYyAoYSBUaGluZykgTWFyc2hhbEpTT04oKSAoW11ieXRlLCBlcnJvcikgewoJdmFyIGVyciBlcnJvcgoJb2JqZWN0IDo9IG1ha2UobWFwW3N0cmluZ11qc29uLlJhd01lc3NhZ2UpCgoJb2JqZWN0WyJpZCJdLCBlcnIgPSBqc29uLk1hcnNoYWwoYS5JZCkKCWlmIGVyciAhPSBuaWwgewoJCXJldHVybiBuaWwsIGZtdC5FcnJvcmYoImVycm9yIG1hcnNoYWxpbmcgJ2lkJzogJXciLCBlcnIpCgl9CgoJZm9yIGZpZWxkTmFtZSwgZmllbGQgOj0gcmFuZ2UgYS5BZGRpdGlvbmFsUHJvcGVydGllcyB7CgkJb2JqZWN0W2ZpZWxkTmFtZV0sIGVyciA9IGpzb24uTWFyc2hhbChmaWVsZCkKCQlpZiBlcnIgIT0gbmlsIHsKCQkJcmV0dXJuIG5pbCwgZm10LkVycm9yZigiZXJyb3IgbWFyc2hhbGluZyAnJXMnOiAldyIsIGZpZWxkTmFtZSwgZXJyKQoJCX0KCX0KCXJldHVybiBqc29uLk1hcnNoYWwob2JqZWN0KQp9CmBgYAoKPC9kZXRhaWxzPgoKCiMjIyBgYWRkaXRpb25hbFByb3BlcnRpZXNgIGFzIGBpbnRlZ2VyYHMKCmBgYHlhbWwKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgVGhpbmc6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIGlkCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICMgc2ltcGxlIHR5cGUKICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6CiAgICAgICAgdHlwZTogaW50ZWdlcgpgYGAKCldpbGwgZ2VuZXJhdGU6CgpgYGBnbwovLyBUaGluZyBkZWZpbmVzIG1vZGVsIGZvciBUaGluZy4KdHlwZSBUaGluZyBzdHJ1Y3QgewoJSWQgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgYGpzb246ImlkImAKCUFkZGl0aW9uYWxQcm9wZXJ0aWVzIG1hcFtzdHJpbmddaW50IGBqc29uOiItImAKfQoKLy8gd2l0aCBnZW5lcmF0ZWQgYm9pbGVycGxhdGUgYmVsb3cKYGBgCgo8ZGV0YWlscz4KCjxzdW1tYXJ5PkJvaWxlcnBsYXRlPC9zdW1tYXJ5PgoKYGBgZ28KLy8gR2V0dGVyIGZvciBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIFRoaW5nLiBSZXR1cm5zIHRoZSBzcGVjaWZpZWQKLy8gZWxlbWVudCBhbmQgd2hldGhlciBpdCB3YXMgZm91bmQKZnVuYyAoYSBUaGluZykgR2V0KGZpZWxkTmFtZSBzdHJpbmcpICh2YWx1ZSBpbnQsIGZvdW5kIGJvb2wpIHsKCWlmIGEuQWRkaXRpb25hbFByb3BlcnRpZXMgIT0gbmlsIHsKCQl2YWx1ZSwgZm91bmQgPSBhLkFkZGl0aW9uYWxQcm9wZXJ0aWVzW2ZpZWxkTmFtZV0KCX0KCXJldHVybgp9CgovLyBTZXR0ZXIgZm9yIGFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgVGhpbmcKZnVuYyAoYSAqVGhpbmcpIFNldChmaWVsZE5hbWUgc3RyaW5nLCB2YWx1ZSBpbnQpIHsKCWlmIGEuQWRkaXRpb25hbFByb3BlcnRpZXMgPT0gbmlsIHsKCQlhLkFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gbWFrZShtYXBbc3RyaW5nXWludCkKCX0KCWEuQWRkaXRpb25hbFByb3BlcnRpZXNbZmllbGROYW1lXSA9IHZhbHVlCn0KCi8vIE92ZXJyaWRlIGRlZmF1bHQgSlNPTiBoYW5kbGluZyBmb3IgVGhpbmcgdG8gaGFuZGxlIEFkZGl0aW9uYWxQcm9wZXJ0aWVzCmZ1bmMgKGEgKlRoaW5nKSBVbm1hcnNoYWxKU09OKGIgW11ieXRlKSBlcnJvciB7CglvYmplY3QgOj0gbWFrZShtYXBbc3RyaW5nXWpzb24uUmF3TWVzc2FnZSkKCWVyciA6PSBqc29uLlVubWFyc2hhbChiLCAmb2JqZWN0KQoJaWYgZXJyICE9IG5pbCB7CgkJcmV0dXJuIGVycgoJfQoKCWlmIHJhdywgZm91bmQgOj0gb2JqZWN0WyJpZCJdOyBmb3VuZCB7CgkJZXJyID0ganNvbi5Vbm1hcnNoYWwocmF3LCAmYS5JZCkKCQlpZiBlcnIgIT0gbmlsIHsKCQkJcmV0dXJuIGZtdC5FcnJvcmYoImVycm9yIHJlYWRpbmcgJ2lkJzogJXciLCBlcnIpCgkJfQoJCWRlbGV0ZShvYmplY3QsICJpZCIpCgl9CgoJaWYgbGVuKG9iamVjdCkgIT0gMCB7CgkJYS5BZGRpdGlvbmFsUHJvcGVydGllcyA9IG1ha2UobWFwW3N0cmluZ11pbnQpCgkJZm9yIGZpZWxkTmFtZSwgZmllbGRCdWYgOj0gcmFuZ2Ugb2JqZWN0IHsKCQkJdmFyIGZpZWxkVmFsIGludAoJCQllcnIgOj0ganNvbi5Vbm1hcnNoYWwoZmllbGRCdWYsICZmaWVsZFZhbCkKCQkJaWYgZXJyICE9IG5pbCB7CgkJCQlyZXR1cm4gZm10LkVycm9yZigiZXJyb3IgdW5tYXJzaGFsaW5nIGZpZWxkICVzOiAldyIsIGZpZWxkTmFtZSwgZXJyKQoJCQl9CgkJCWEuQWRkaXRpb25hbFByb3BlcnRpZXNbZmllbGROYW1lXSA9IGZpZWxkVmFsCgkJfQoJfQoJcmV0dXJuIG5pbAp9CgovLyBPdmVycmlkZSBkZWZhdWx0IEpTT04gaGFuZGxpbmcgZm9yIFRoaW5nIHRvIGhhbmRsZSBBZGRpdGlvbmFsUHJvcGVydGllcwpmdW5jIChhIFRoaW5nKSBNYXJzaGFsSlNPTigpIChbXWJ5dGUsIGVycm9yKSB7Cgl2YXIgZXJyIGVycm9yCglvYmplY3QgOj0gbWFrZShtYXBbc3RyaW5nXWpzb24uUmF3TWVzc2FnZSkKCglvYmplY3RbImlkIl0sIGVyciA9IGpzb24uTWFyc2hhbChhLklkKQoJaWYgZXJyICE9IG5pbCB7CgkJcmV0dXJuIG5pbCwgZm10LkVycm9yZigiZXJyb3IgbWFyc2hhbGluZyAnaWQnOiAldyIsIGVycikKCX0KCglmb3IgZmllbGROYW1lLCBmaWVsZCA6PSByYW5nZSBhLkFkZGl0aW9uYWxQcm9wZXJ0aWVzIHsKCQlvYmplY3RbZmllbGROYW1lXSwgZXJyID0ganNvbi5NYXJzaGFsKGZpZWxkKQoJCWlmIGVyciAhPSBuaWwgewoJCQlyZXR1cm4gbmlsLCBmbXQuRXJyb3JmKCJlcnJvciBtYXJzaGFsaW5nICclcyc6ICV3IiwgZmllbGROYW1lLCBlcnIpCgkJfQoJfQoJcmV0dXJuIGpzb24uTWFyc2hhbChvYmplY3QpCn0KYGBgCgo8L2RldGFpbHM+CgojIyMgYGFkZGl0aW9uYWxQcm9wZXJ0aWVzYCB3aXRoIGFuIG9iamVjdAoKYGBgeWFtbApjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBUaGluZzoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gaWQKICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgIyBvYmplY3QKICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6CiAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgIGZvbzoKICAgICAgICAgICAgdHlwZTogc3RyaW5nCmBgYAoKV2lsbCBnZW5lcmF0ZToKCmBgYGdvCi8vIFRoaW5nIGRlZmluZXMgbW9kZWwgZm9yIFRoaW5nLgp0eXBlIFRoaW5nIHN0cnVjdCB7CglJZCAgICAgICAgICAgICAgICAgICBpbnQgYGpzb246ImlkImAKCUFkZGl0aW9uYWxQcm9wZXJ0aWVzIG1hcFtzdHJpbmddc3RydWN0IHsKCQlGb28gKnN0cmluZyBganNvbjoiZm9vLG9taXRlbXB0eSJgCgl9IGBqc29uOiItImAKfQoKLy8gd2l0aCBnZW5lcmF0ZWQgYm9pbGVycGxhdGUgYmVsb3cKYGBgCgo8ZGV0YWlscz4KCjxzdW1tYXJ5PkJvaWxlcnBsYXRlPC9zdW1tYXJ5PgoKYGBgZ28KLy8gR2V0dGVyIGZvciBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIFRoaW5nLiBSZXR1cm5zIHRoZSBzcGVjaWZpZWQKLy8gZWxlbWVudCBhbmQgd2hldGhlciBpdCB3YXMgZm91bmQKZnVuYyAoYSBUaGluZykgR2V0KGZpZWxkTmFtZSBzdHJpbmcpICh2YWx1ZSBzdHJ1Y3QgewoJRm9vICpzdHJpbmcgYGpzb246ImZvbyxvbWl0ZW1wdHkiYAp9LCBmb3VuZCBib29sKSB7CglpZiBhLkFkZGl0aW9uYWxQcm9wZXJ0aWVzICE9IG5pbCB7CgkJdmFsdWUsIGZvdW5kID0gYS5BZGRpdGlvbmFsUHJvcGVydGllc1tmaWVsZE5hbWVdCgl9CglyZXR1cm4KfQoKLy8gU2V0dGVyIGZvciBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIFRoaW5nCmZ1bmMgKGEgKlRoaW5nKSBTZXQoZmllbGROYW1lIHN0cmluZywgdmFsdWUgc3RydWN0IHsKCUZvbyAqc3RyaW5nIGBqc29uOiJmb28sb21pdGVtcHR5ImAKfSkgewoJaWYgYS5BZGRpdGlvbmFsUHJvcGVydGllcyA9PSBuaWwgewoJCWEuQWRkaXRpb25hbFByb3BlcnRpZXMgPSBtYWtlKG1hcFtzdHJpbmddc3RydWN0IHsKCQkJRm9vICpzdHJpbmcgYGpzb246ImZvbyxvbWl0ZW1wdHkiYAoJCX0pCgl9CglhLkFkZGl0aW9uYWxQcm9wZXJ0aWVzW2ZpZWxkTmFtZV0gPSB2YWx1ZQp9CgovLyBPdmVycmlkZSBkZWZhdWx0IEpTT04gaGFuZGxpbmcgZm9yIFRoaW5nIHRvIGhhbmRsZSBBZGRpdGlvbmFsUHJvcGVydGllcwpmdW5jIChhICpUaGluZykgVW5tYXJzaGFsSlNPTihiIFtdYnl0ZSkgZXJyb3IgewoJb2JqZWN0IDo9IG1ha2UobWFwW3N0cmluZ11qc29uLlJhd01lc3NhZ2UpCgllcnIgOj0ganNvbi5Vbm1hcnNoYWwoYiwgJm9iamVjdCkKCWlmIGVyciAhPSBuaWwgewoJCXJldHVybiBlcnIKCX0KCglpZiByYXcsIGZvdW5kIDo9IG9iamVjdFsiaWQiXTsgZm91bmQgewoJCWVyciA9IGpzb24uVW5tYXJzaGFsKHJhdywgJmEuSWQpCgkJaWYgZXJyICE9IG5pbCB7CgkJCXJldHVybiBmbXQuRXJyb3JmKCJlcnJvciByZWFkaW5nICdpZCc6ICV3IiwgZXJyKQoJCX0KCQlkZWxldGUob2JqZWN0LCAiaWQiKQoJfQoKCWlmIGxlbihvYmplY3QpICE9IDAgewoJCWEuQWRkaXRpb25hbFByb3BlcnRpZXMgPSBtYWtlKG1hcFtzdHJpbmddc3RydWN0IHsKCQkJRm9vICpzdHJpbmcgYGpzb246ImZvbyxvbWl0ZW1wdHkiYAoJCX0pCgkJZm9yIGZpZWxkTmFtZSwgZmllbGRCdWYgOj0gcmFuZ2Ugb2JqZWN0IHsKCQkJdmFyIGZpZWxkVmFsIHN0cnVjdCB7CgkJCQlGb28gKnN0cmluZyBganNvbjoiZm9vLG9taXRlbXB0eSJgCgkJCX0KCQkJZXJyIDo9IGpzb24uVW5tYXJzaGFsKGZpZWxkQnVmLCAmZmllbGRWYWwpCgkJCWlmIGVyciAhPSBuaWwgewoJCQkJcmV0dXJuIGZtdC5FcnJvcmYoImVycm9yIHVubWFyc2hhbGluZyBmaWVsZCAlczogJXciLCBmaWVsZE5hbWUsIGVycikKCQkJfQoJCQlhLkFkZGl0aW9uYWxQcm9wZXJ0aWVzW2ZpZWxkTmFtZV0gPSBmaWVsZFZhbAoJCX0KCX0KCXJldHVybiBuaWwKfQoKLy8gT3ZlcnJpZGUgZGVmYXVsdCBKU09OIGhhbmRsaW5nIGZvciBUaGluZyB0byBoYW5kbGUgQWRkaXRpb25hbFByb3BlcnRpZXMKZnVuYyAoYSBUaGluZykgTWFyc2hhbEpTT04oKSAoW11ieXRlLCBlcnJvcikgewoJdmFyIGVyciBlcnJvcgoJb2JqZWN0IDo9IG1ha2UobWFwW3N0cmluZ11qc29uLlJhd01lc3NhZ2UpCgoJb2JqZWN0WyJpZCJdLCBlcnIgPSBqc29uLk1hcnNoYWwoYS5JZCkKCWlmIGVyciAhPSBuaWwgewoJCXJldHVybiBuaWwsIGZtdC5FcnJvcmYoImVycm9yIG1hcnNoYWxpbmcgJ2lkJzogJXciLCBlcnIpCgl9CgoJZm9yIGZpZWxkTmFtZSwgZmllbGQgOj0gcmFuZ2UgYS5BZGRpdGlvbmFsUHJvcGVydGllcyB7CgkJb2JqZWN0W2ZpZWxkTmFtZV0sIGVyciA9IGpzb24uTWFyc2hhbChmaWVsZCkKCQlpZiBlcnIgIT0gbmlsIHsKCQkJcmV0dXJuIG5pbCwgZm10LkVycm9yZigiZXJyb3IgbWFyc2hhbGluZyAnJXMnOiAldyIsIGZpZWxkTmFtZSwgZXJyKQoJCX0KCX0KCXJldHVybiBqc29uLk1hcnNoYWwob2JqZWN0KQp9CmBgYAoKPC9kZXRhaWxzPgoKIyMgR2xvYmFsbHkgc2tpcHBpbmcgdGhlICJvcHRpb25hbCBwb2ludGVyIgoKT25lIG9mIHRoZSBrZXkgdGhpbmdzIGBvYXBpLWNvZGVnZW5gIGRvZXMgaXMgdG8gdXNlIGFuICJvcHRpb25hbCBwb2ludGVyIiwgZm9sbG93aW5nIGlkaW9tYXRpYyBHbyBwcmFjdGljZXMsIHRvIGluZGljYXRlIHRoYXQgYSBmaWVsZC90eXBlIGlzIG9wdGlvbmFsLgoKVGhpcyBjYW4gYmUgdHVuZWQgb24gYSBwZXItZmllbGQgYmFzaXMsIHVzaW5nIHRoZSBbYHgtZ28tdHlwZS1za2lwLW9wdGlvbmFsLXBvaW50ZXJgIGV4dGVuc2lvbl0oI2V4dC14LWdvLXR5cGUtc2tpcC1vcHRpb25hbC1wb2ludGVyKSwgYnV0IGl0IGNhbiBiZSBhIGJpdCByZXBldGl0aXZlLCBvciBjYW4gYmUgbW9yZSBjb21wbGV4IHdoZW4gdXNpbmcgYW4gT3BlbkFQSSBPdmVybGF5LgoKQXMgb2YgYG9hcGktY29kZWdlbmAgdjIuNS4wLCB0aGlzIGNhbiBiZSB0dW5lZCBpbiB0d28gc3BlY2lmaWMgd2F5cywgdmlhIHRoZSBmb2xsb3dpbmcgYG91dHB1dC1vcHRpb25zOmA6CgotIGBwcmVmZXItc2tpcC1vcHRpb25hbC1wb2ludGVyYDogYSBnbG9iYWwgZGVmYXVsdCB0aGF0IHlvdSBkbyBfbm90XyB3YW50IHRoZSAib3B0aW9uYWwgcG9pbnRlciIgZ2VuZXJhdGVkLiBPcHRpb25hbCBmaWVsZHMgd2lsbCBub3QgaGF2ZSBhbiAib3B0aW9uYWwgcG9pbnRlciIsIGFuZCB3aWxsIGhhdmUgYW4gYG9taXRlbXB0eWAgSlNPTiB0YWcKLSBgcHJlZmVyLXNraXAtb3B0aW9uYWwtcG9pbnRlci13aXRoLW9taXR6ZXJvYDogd2hlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYHByZWZlci1za2lwLW9wdGlvbmFsLXBvaW50ZXJgLCBhbnkgb3B0aW9uYWwgZmllbGRzIGFyZSBnZW5lcmF0ZWQgd2l0aCBhbiBgb21pdHplcm9gIEpTT04gdGFnLiAqKlJlcXVpcmVzIEdvIDEuMjQrKioKCkluIGJvdGggY2FzZXMsIHRoZXJlIGlzIGNvbnRyb2wgb24gYSBwZXItZmllbGQgbGV2ZWwgdG8gc2V0IGB4LWdvLXR5cGUtc2tpcC1vcHRpb25hbC1wb2ludGVyOiBmYWxzZWAgb3IgYHgtb21pdHplcm86IGZhbHNlYCB0byB1bmRvIHRoZXNlIHRvIGZpZWxkKHMpLgoKRm9yIGV4YW1wbGUsIHdoZW4gY29tYmluaW5nIGJvdGggb3B0aW9uczoKCmBgYHlhbWwKIyB5YW1sLWxhbmd1YWdlLXNlcnZlcjogJHNjaGVtYT1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9IRUFEL2NvbmZpZ3VyYXRpb24tc2NoZW1hLmpzb24KcGFja2FnZTogcHJlZmVyc2tpcG9wdGlvbmFscG9pbnRlcndpdGhvbWl0emVybwpvdXRwdXQ6IGdlbi5nbwpnZW5lcmF0ZToKICAjIC4uLgpvdXRwdXQtb3B0aW9uczoKICAjIC4uLgogIHByZWZlci1za2lwLW9wdGlvbmFsLXBvaW50ZXI6IHRydWUKICBwcmVmZXItc2tpcC1vcHRpb25hbC1wb2ludGVyLXdpdGgtb21pdHplcm86IHRydWUKYGBgCgpXaGVuIHdlIGhhdmUgdGhlIGZvbGxvd2luZyBzcGVjOgoKYGBgeWFtbApvcGVuYXBpOiAiMy4wLjAiCmluZm86CiAgdmVyc2lvbjogMS4wLjAKICB0aXRsZTogcHJlZmVyLXNraXAtb3B0aW9uYWwtcG9pbnRlci13aXRoLW9taXR6ZXJvCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIENsaWVudFdpdGhFeHRlbnNpb246CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIG5hbWUKICAgICAgcHJvcGVydGllczoKICAgICAgICBuYW1lOgogICAgICAgICAgZGVzY3JpcHRpb246IFRoaXMgZmllbGQgaXMgcmVxdWlyZWQsIHNvIHdpbGwgbmV2ZXIgaGF2ZSBhbiBvcHRpb25hbCBwb2ludGVyLCBub3IgYG9taXR6ZXJvYC4KICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIGlkOgogICAgICAgICAgZGVzY3JpcHRpb246IFRoaXMgZmllbGQgaXMgb3B0aW9uYWwsIGJ1dCB0aGUgYHByZWZlci1za2lwLW9wdGlvbmFsLXBvaW50ZXJgIE91dHB1dCBPcHRpb24gZW5zdXJlcyB0aGF0IHRoaXMgc2hvdWxkIG5vdCBoYXZlIGFuIG9wdGlvbmFsIHBvaW50ZXIuIEhvd2V2ZXIsIGl0IHdpbGwgcmVjZWl2ZSBgb21pdHplcm9gLgogICAgICAgICAgdHlwZTogbnVtYmVyCiAgICAgICAgcG9pbnRlcl9pZDoKICAgICAgICAgIHR5cGU6IG51bWJlcgogICAgICAgICAgZGVzY3JpcHRpb246IFRoaXMgZmllbGQgc2hvdWxkIGhhdmUgYW4gb3B0aW9uYWwgcG9pbnRlciwgYXMgdGhlIGZpZWxkLWxldmVsIGRlZmluaXRpb24gb2YgYHgtZ28tdHlwZS1za2lwLW9wdGlvbmFsLXBvaW50ZXJgIG92ZXJyaWRlcyB0aGUgYHByZWZlci1za2lwLW9wdGlvbmFsLXBvaW50ZXJgIE91dHB1dCBPcHRpb24uIFRoaXMgd2lsbCBhbHNvIG5vdCByZWNlaXZlIGFuIGBvbWl0emVyb2AuCiAgICAgICAgICAjIE5PVEUgdGhhdCB0aGlzIG92ZXJyaWRlcyB0aGUgZ2xvYmFsIHByZWZlcmVuY2UKICAgICAgICAgIHgtZ28tdHlwZS1za2lwLW9wdGlvbmFsLXBvaW50ZXI6IGZhbHNlCiAgICAgICAgbm9fb21pdDoKICAgICAgICAgIHR5cGU6IG51bWJlcgogICAgICAgICAgZGVzY3JpcHRpb246IFRoaXMgZmllbGQgaXMgb3B0aW9uYWwsIGJ1dCB0aGUgYHByZWZlci1za2lwLW9wdGlvbmFsLXBvaW50ZXJgIE91dHB1dCBPcHRpb24gZW5zdXJlcyB0aGF0IHRoaXMgc2hvdWxkIG5vdCBoYXZlIGFuIG9wdGlvbmFsIHBvaW50ZXIuIFRoaXMgd2lsbCBub3QgcmVjZWl2ZSBgb21pdHplcm9gLCBhcyB0aGUgZmllbGQtbGV2ZWwgZGVmaW5pdGlvbiBvZiBgeC1vbWl0emVyb2Agb3ZlcnJpZGVzIHRoZSBgcHJlZmVyLXNraXAtb3B0aW9uYWwtcG9pbnRlci13aXRoLW9taXR6ZXJvYCBPdXRwdXQgT3B0aW9uLgogICAgICAgICAgIyBOT1RFIHRoYXQgdGhpcyBvdmVycmlkZXMgdGhlIGdsb2JhbCBwcmVmZXJlbmNlCiAgICAgICAgICB4LW9taXR6ZXJvOiBmYWxzZQpgYGAKCldlIHRoZW4gZ2VuZXJhdGUgdGhlIGZvbGxvd2luZyBHbyBjb2RlOgoKYGBgZ28KLy8gLi4uCgovLyBDbGllbnRXaXRoRXh0ZW5zaW9uIGRlZmluZXMgbW9kZWwgZm9yIENsaWVudFdpdGhFeHRlbnNpb24uCnR5cGUgQ2xpZW50V2l0aEV4dGVuc2lvbiBzdHJ1Y3QgewoJLy8gSWQgVGhpcyBmaWVsZCBpcyBvcHRpb25hbCwgYnV0IHRoZSBgcHJlZmVyLXNraXAtb3B0aW9uYWwtcG9pbnRlcmAgT3V0cHV0IE9wdGlvbiBlbnN1cmVzIHRoYXQgdGhpcyBzaG91bGQgbm90IGhhdmUgYW4gb3B0aW9uYWwgcG9pbnRlci4gSG93ZXZlciwgaXQgd2lsbCByZWNlaXZlIGBvbWl0emVyb2AuCglJZCBmbG9hdDMyIGBqc29uOiJpZCxvbWl0ZW1wdHksb21pdHplcm8iYAoKCS8vIE5hbWUgVGhpcyBmaWVsZCBpcyByZXF1aXJlZCwgc28gd2lsbCBuZXZlciBoYXZlIGFuIG9wdGlvbmFsIHBvaW50ZXIsIG5vciBgb21pdHplcm9gLgoJTmFtZSBzdHJpbmcgYGpzb246Im5hbWUiYAoKCS8vIE5vT21pdCBUaGlzIGZpZWxkIGlzIG9wdGlvbmFsLCBidXQgdGhlIGBwcmVmZXItc2tpcC1vcHRpb25hbC1wb2ludGVyYCBPdXRwdXQgT3B0aW9uIGVuc3VyZXMgdGhhdCB0aGlzIHNob3VsZCBub3QgaGF2ZSBhbiBvcHRpb25hbCBwb2ludGVyLiBUaGlzIHdpbGwgbm90IHJlY2VpdmUgYG9taXR6ZXJvYCwgYXMgdGhlIGZpZWxkLWxldmVsIGRlZmluaXRpb24gb2YgYHgtb21pdHplcm9gIG92ZXJyaWRlcyB0aGUgYHByZWZlci1za2lwLW9wdGlvbmFsLXBvaW50ZXItd2l0aC1vbWl0emVyb2AgT3V0cHV0IE9wdGlvbi4KCU5vT21pdCBmbG9hdDMyIGBqc29uOiJub19vbWl0LG9taXRlbXB0eSJgCgoJLy8gUG9pbnRlcklkIFRoaXMgZmllbGQgc2hvdWxkIGhhdmUgYW4gb3B0aW9uYWwgcG9pbnRlciwgYXMgdGhlIGZpZWxkLWxldmVsIGRlZmluaXRpb24gb2YgYHgtZ28tdHlwZS1za2lwLW9wdGlvbmFsLXBvaW50ZXJgIG92ZXJyaWRlcyB0aGUgYHByZWZlci1za2lwLW9wdGlvbmFsLXBvaW50ZXJgIE91dHB1dCBPcHRpb24uIFRoaXMgd2lsbCBhbHNvIG5vdCByZWNlaXZlIGFuIGBvbWl0emVyb2AuCglQb2ludGVySWQgKmZsb2F0MzIgYGpzb246InBvaW50ZXJfaWQsb21pdGVtcHR5ImAKfQpgYGAKCllvdSBjYW4gc2VlIHRoaXMgaW4gbW9yZSBkZXRhaWwgaW4gW3RoZSBleGFtcGxlIGNvZGUgZm9yIGBwcmVmZXItc2tpcC1vcHRpb25hbC1wb2ludGVyYF0oZXhhbXBsZXMvb3V0cHV0LW9wdGlvbnMvcHJlZmVyc2tpcG9wdGlvbmFscG9pbnRlci8pIGFuZCBbZXhhbXBsZSBjb2RlIGZvciBgcHJlZmVyLXNraXAtb3B0aW9uYWwtcG9pbnRlci13aXRoLW9taXR6ZXJvYF0oZXhhbXBsZXMvb3V0cHV0LW9wdGlvbnMvcHJlZmVyc2tpcG9wdGlvbmFscG9pbnRlcndpdGhvbWl0emVyby8pCgojIyBDaGFuZ2luZyB0aGUgbmFtZXMgb2YgZ2VuZXJhdGVkIHR5cGVzCgpBcyBvZiBgb2FwaS1jb2RlZ2VuYCB2Mi4yLjAsIGl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2UgdGhlIGBvdXRwdXQtb3B0aW9uc2AgY29uZmlndXJhdGlvbidzIGBuYW1lLW5vcm1hbGl6ZXJgIHRvIGRlZmluZSB0aGUgbG9naWMgZm9yIGhvdyB0byBjb252ZXJ0IGFuIE9wZW5BUEkgbmFtZSAoaS5lLiBhbiBPcGVyYXRpb24gSUQgb3IgYSBTY2hlbWEgbmFtZSkgYW5kIGNvbnN0cnVjdCBhIEdvIHR5cGUgbmFtZS4KCjxkZXRhaWxzPgoKPHN1bW1hcnk+RXhhbXBsZSwgdXNpbmcgZGVmYXVsdCBjb25maWd1cmF0aW9uPC9zdW1tYXJ5PgoKQnkgZGVmYXVsdCwgYG9hcGktY29kZWdlbmAgd2lsbCBwZXJmb3JtIGNhbWVsLWNhc2UgY29udmVyc2lvbiwgc28gZm9yIGEgc3BlYyBzdWNoIGFzOgoKYGBgeWFtbApvcGVuYXBpOiAiMy4wLjAiCmluZm86CiAgdmVyc2lvbjogMS4wLjAKICB0aXRsZTogRXhhbXBsZSBjb2RlIGZvciB0aGUgYG5hbWUtbm9ybWFsaXplcmAgb3V0cHV0IG9wdGlvbgpwYXRoczoKICAvYXBpL3BldHMve3BldElkfToKICAgIGdldDoKICAgICAgc3VtbWFyeTogR2V0IHBldCBnaXZlbiBpZGVudGlmaWVyLgogICAgICBvcGVyYXRpb25JZDogZ2V0SHR0cFBldAogICAgICBwYXJhbWV0ZXJzOgogICAgICAtIG5hbWU6IHBldElkCiAgICAgICAgaW46IHBhdGgKICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgIHNjaGVtYToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogdmFsaWQgcGV0CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXQnCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIFBldDoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gdXVpZAogICAgICAgIC0gbmFtZQogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIHV1aWQ6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGRlc2NyaXB0aW9uOiBUaGUgcGV0IHV1aWQuCiAgICAgICAgbmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZGVzY3JpcHRpb246IFRoZSBuYW1lIG9mIHRoZSBwZXQuCiAgICBFcnJvcjoKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBjb2RlCiAgICAgICAgLSBtZXNzYWdlCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgY29kZToKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIGZvcm1hdDogaW50MzIKICAgICAgICAgIGRlc2NyaXB0aW9uOiBFcnJvciBjb2RlCiAgICAgICAgbWVzc2FnZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZGVzY3JpcHRpb246IEVycm9yIG1lc3NhZ2UKICAgIE9uZU9mMnRoaW5nczoKICAgICAgZGVzY3JpcHRpb246ICJOb3RpY2UgdGhhdCB0aGUgYHRoaW5nc2AgaXMgbm90IGNhcGl0YWxpc2VkIgogICAgICBvbmVPZjoKICAgICAgICAtIHR5cGU6IG9iamVjdAogICAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgICAgIC0gaWQKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIGlkOgogICAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAtIHR5cGU6IG9iamVjdAogICAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgICAgIC0gaWQKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIGlkOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgIGZvcm1hdDogdXVpZApgYGAKClRoaXMgd2lsbCBwcm9kdWNlOgoKYGBgZ28KLy8gT25lT2YydGhpbmdzIE5vdGljZSB0aGF0IHRoZSBgdGhpbmdzYCBpcyBub3QgY2FwaXRhbGlzZWQKdHlwZSBPbmVPZjJ0aGluZ3Mgc3RydWN0IHsKCXVuaW9uIGpzb24uUmF3TWVzc2FnZQp9CgovLyBQZXQgZGVmaW5lcyBtb2RlbCBmb3IgUGV0Lgp0eXBlIFBldCBzdHJ1Y3QgewoJLy8gTmFtZSBUaGUgbmFtZSBvZiB0aGUgcGV0LgoJTmFtZSBzdHJpbmcgYGpzb246Im5hbWUiYAoKCS8vIFV1aWQgVGhlIHBldCB1dWlkLgoJVXVpZCBzdHJpbmcgYGpzb246InV1aWQiYAp9CgovLyBUaGUgaW50ZXJmYWNlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBjbGllbnQgYWJvdmUuCnR5cGUgQ2xpZW50SW50ZXJmYWNlIGludGVyZmFjZSB7CgkvLyBHZXRIdHRwUGV0IHJlcXVlc3QKCUdldEh0dHBQZXQoY3R4IGNvbnRleHQuQ29udGV4dCwgcGV0SWQgc3RyaW5nLCByZXFFZGl0b3JzIC4uLlJlcXVlc3RFZGl0b3JGbikgKCpodHRwLlJlc3BvbnNlLCBlcnJvcikKfQpgYGAKCjwvZGV0YWlscz4KCjxkZXRhaWxzPgoKPHN1bW1hcnk+RXhhbXBsZSwgdXNpbmcgPGNvZGU+VG9DYW1lbENhc2VXaXRoSW5pdGlhbGlzbXM8L2NvZGU+PC9zdW1tYXJ5PgoKQnkgZGVmYXVsdCwgYG9hcGktY29kZWdlbmAgd2lsbCBwZXJmb3JtIGNhbWVsLWNhc2UgY29udmVyc2lvbiwgc28gZm9yIGEgc3BlYyBzdWNoIGFzOgoKYGBgeWFtbApvcGVuYXBpOiAiMy4wLjAiCmluZm86CiAgdmVyc2lvbjogMS4wLjAKICB0aXRsZTogRXhhbXBsZSBjb2RlIGZvciB0aGUgYG5hbWUtbm9ybWFsaXplcmAgb3V0cHV0IG9wdGlvbgpwYXRoczoKICAvYXBpL3BldHMve3BldElkfToKICAgIGdldDoKICAgICAgc3VtbWFyeTogR2V0IHBldCBnaXZlbiBpZGVudGlmaWVyLgogICAgICBvcGVyYXRpb25JZDogZ2V0SHR0cFBldAogICAgICBwYXJhbWV0ZXJzOgogICAgICAtIG5hbWU6IHBldElkCiAgICAgICAgaW46IHBhdGgKICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgIHNjaGVtYToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogdmFsaWQgcGV0CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXQnCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIFBldDoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gdXVpZAogICAgICAgIC0gbmFtZQogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIHV1aWQ6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGRlc2NyaXB0aW9uOiBUaGUgcGV0IHV1aWQuCiAgICAgICAgbmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZGVzY3JpcHRpb246IFRoZSBuYW1lIG9mIHRoZSBwZXQuCiAgICBFcnJvcjoKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBjb2RlCiAgICAgICAgLSBtZXNzYWdlCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgY29kZToKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIGZvcm1hdDogaW50MzIKICAgICAgICAgIGRlc2NyaXB0aW9uOiBFcnJvciBjb2RlCiAgICAgICAgbWVzc2FnZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZGVzY3JpcHRpb246IEVycm9yIG1lc3NhZ2UKICAgIE9uZU9mMnRoaW5nczoKICAgICAgZGVzY3JpcHRpb246ICJOb3RpY2UgdGhhdCB0aGUgYHRoaW5nc2AgaXMgbm90IGNhcGl0YWxpc2VkIgogICAgICBvbmVPZjoKICAgICAgICAtIHR5cGU6IG9iamVjdAogICAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgICAgIC0gaWQKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIGlkOgogICAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAtIHR5cGU6IG9iamVjdAogICAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgICAgIC0gaWQKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIGlkOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgIGZvcm1hdDogdXVpZApgYGAKClRoaXMgd2lsbCBwcm9kdWNlOgoKYGBgZ28KLy8gT25lT2YydGhpbmdzIE5vdGljZSB0aGF0IHRoZSBgdGhpbmdzYCBpcyBub3QgY2FwaXRhbGlzZWQKdHlwZSBPbmVPZjJ0aGluZ3Mgc3RydWN0IHsKCXVuaW9uIGpzb24uUmF3TWVzc2FnZQp9CgovLyBQZXQgZGVmaW5lcyBtb2RlbCBmb3IgUGV0Lgp0eXBlIFBldCBzdHJ1Y3QgewoJLy8gTmFtZSBUaGUgbmFtZSBvZiB0aGUgcGV0LgoJTmFtZSBzdHJpbmcgYGpzb246Im5hbWUiYAoKCS8vIFVVSUQgVGhlIHBldCB1dWlkLgoJVVVJRCBzdHJpbmcgYGpzb246InV1aWQiYAp9CgovLyBUaGUgaW50ZXJmYWNlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBjbGllbnQgYWJvdmUuCnR5cGUgQ2xpZW50SW50ZXJmYWNlIGludGVyZmFjZSB7CgkvLyBHZXRIVFRQUGV0IHJlcXVlc3QKCUdldEhUVFBQZXQoY3R4IGNvbnRleHQuQ29udGV4dCwgcGV0SUQgc3RyaW5nLCByZXFFZGl0b3JzIC4uLlJlcXVlc3RFZGl0b3JGbikgKCpodHRwLlJlc3BvbnNlLCBlcnJvcikKfQpgYGAKCjwvZGV0YWlscz4KCgpGb3IgbW9yZSBkZXRhaWxzIG9mIHdoYXQgdGhlIHJlc3VsdGluZyBjb2RlIGxvb2tzIGxpa2UsIGNoZWNrIG91dCBbdGhlIHRlc3QgY2FzZXNdKGludGVybmFsL3Rlc3Qvb3V0cHV0b3B0aW9ucy9uYW1lLW5vcm1hbGl6ZXIvKS4KCiMjIEV4YW1wbGVzCgpUaGUgW2V4YW1wbGVzIGRpcmVjdG9yeV0oZXhhbXBsZXMpIGNvbnRhaW5zIHNvbWUgYWRkaXRpb25hbCBjYXNlcyB3aGljaCBhcmUgdXNlZnVsIGV4YW1wbGVzIGZvciBob3cgdG8gdXNlIGBvYXBpLWNvZGVnZW5gLCBpbmNsdWRpbmcgaG93IHlvdSdkIHRha2UgdGhlIFBldHN0b3JlIEFQSSBhbmQgaW1wbGVtZW50IGl0IHdpdGggYG9hcGktY29kZWdlbmAuCgpZb3UgY291bGQgYWxzbyBmaW5kIHNvbWUgY2FzZXMgb2YgaG93IHRoZSBwcm9qZWN0IGNhbiBiZSB1c2VkIGJ5IGNoZWNraW5nIG91dCBvdXIgW2ludGVybmFsIHRlc3QgY2FzZXNdKGludGVybmFsL3Rlc3QpIHdoaWNoIGFyZSByZWFsLXdvcmxkIHVzYWdlcyB0aGF0IG1ha2UgdXAgb3VyIHJlZ3Jlc3Npb24gdGVzdHMuCgojIyMgQmxvZyBwb3N0cwoKV2UgbG92ZSByZWFkaW5nIHBvc3RzIGJ5IHRoZSBjb21tdW5pdHkgYWJvdXQgaG93IHRvIHVzZSB0aGUgcHJvamVjdC4KCkhlcmUgYXJlIGEgZmV3IHdlJ3ZlIGZvdW5kIGFyb3VuZCB0aGUgV2ViOgoKLSBbQnVpbGRpbmcgYSBHbyBSRVNUZnVsIEFQSSB3aXRoIGRlc2lnbi1maXJzdCBPcGVuQVBJIGNvbnRyYWN0c10oaHR0cHM6Ly93d3cuanZ0Lm1lL3Bvc3RzLzIwMjIvMDcvMTIvZ28tb3BlbmFwaS1zZXJ2ZXIvKQotIFtBIFByYWN0aWNhbCBHdWlkZSB0byBVc2luZyBvYXBpLWNvZGVnZW4gaW4gR29sYW5nIEFQSSBEZXZlbG9wbWVudCB3aXRoIHRoZSBGaWJlciBGcmFtZXdvcmtdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZmlraWhhbGFuL2EtcHJhY3RpY2FsLWd1aWRlLXRvLXVzaW5nLW9hcGktY29kZWdlbi1pbi1nb2xhbmctYXBpLWRldmVsb3BtZW50LXdpdGgtdGhlLWZpYmVyLWZyYW1ld29yay1iY2UyYTU5MzgwYWUpCi0gW0dlbmVyYXRpbmcgR28gc2VydmVyIGNvZGUgZnJvbSBPcGVuQVBJIDMgZGVmaW5pdGlvbnNdKGh0dHBzOi8vbGRlai5ubC9wb3N0L2dlbmVyYXRpbmctZ28tZnJvbS1vcGVuYXBpLTMvKQotIFtHbyBDbGllbnQgQ29kZSBHZW5lcmF0aW9uIGZyb20gU3dhZ2dlciBhbmQgT3BlbkFQSV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BreW9kby10ZWNoL2dvLWNsaWVudC1jb2RlLWdlbmVyYXRpb24tZnJvbS1zd2FnZ2VyLWFuZC1vcGVuYXBpLWEwNTc2ODMxODM2YykKLSBbR28gb2FwaS1jb2RlZ2VuICsgcmVxdWVzdCB2YWxpZGF0aW9uXShodHRwczovL2Jsb2cuY29tbWl0c21hcnQuY29tL2dvLW9hcGktY29kZWdlbi1yZXF1ZXN0LXZhbGlkYXRpb24tMjg1Mzk4YjM3ZGM4KQotIFtTdHJlYW1saW5pbmcgR28gKyBDaGkgRGV2ZWxvcG1lbnQ6IEdlbmVyYXRpbmcgQ29kZSBmcm9tIGFuIE9wZW5BUEkgU3BlY10oaHR0cHM6Ly9pNG8uZGV2L2Jsb2cvb2FwaS1jb2RlZ2VuLXdpdGgtY2hpLXJvdXRlcikKCkdvdCBvbmUgdG8gYWRkPyBQbGVhc2UgcmFpc2UgYSBQUiEKCiMjIEZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zIChGQVFzKQoKIyMjIERvZXMgYG9hcGktY29kZWdlbmAgc3VwcG9ydCBPcGVuQVBJIDMuMT8KCk5vLCB3ZSBkb24ndCBjdXJyZW50bHkuCgpPcGVuQVBJIDMuMSBzdXBwb3J0IGlzIFthd2FpdGluZyB1cHN0cmVhbSBzdXBwb3J0XShodHRwczovL2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9pc3N1ZXMvMzczKS4KCkluIHRoZSBtZWFudGltZSwgeW91IGNvdWxkIGZvbGxvdyBbc3RlcHMgZnJvbSB0aGlzIGJsb2cgcG9zdF0oaHR0cHM6Ly93d3cuanZ0Lm1lL3Bvc3RzLzIwMjUvMDUvMDQvb2FwaS1jb2RlZ2VuLXRyaWNrLW9wZW5hcGktMy0xLykgdG8gW3VzZSBPcGVuQVBJIE92ZXJsYXldKCNtb2RpZnlpbmctdGhlLWlucHV0LW9wZW5hcGktc3BlY2lmaWNhdGlvbi13aXRoLW9wZW5hcGktb3ZlcmxheSkgdG8gImRvd25ncmFkZSIgdGhlIE9wZW5BUEkgMy4xIHNwZWMgdG8gT3BlbkFQSSAzLjAuCgojIyMgSG93IGRvZXMgYG9hcGktY29kZWdlbmAgaGFuZGxlIGBhbnlPZmAsIGBhbGxPZmAgYW5kIGBvbmVPZmA/Cgpgb2FwaS1jb2RlZ2VuYCBzdXBwb3J0cyBgYW55T2ZgLCBgYWxsT2ZgIGFuZCBgb25lT2ZgIGZvciBnZW5lcmF0ZWQgY29kZS4KCkZvciBpbnN0YW5jZSwgdGhyb3VnaCB0aGUgZm9sbG93aW5nIE9wZW5BUEkgc3BlYzoKCmBgYHlhbWwKb3BlbmFwaTogIjMuMC4wIgppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IFVzaW5nIGNvbXBsZXggc2NoZW1hcwogIGRlc2NyaXB0aW9uOiBBbiBleGFtcGxlIG9mIGBhbnlPZmAsIGBhbGxPZmAgYW5kIGBvbmVPZmAKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgIyBiYXNlIHR5cGVzCiAgICBDbGllbnQ6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIG5hbWUKICAgICAgcHJvcGVydGllczoKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICBJZGVudGl0eToKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gaXNzdWVyCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgaXNzdWVyOgogICAgICAgICAgdHlwZTogc3RyaW5nCgogICAgIyBhbGxPZiBwZXJmb3JtcyBhIHVuaW9uIG9mIGFsbCB0eXBlcyBkZWZpbmVkCiAgICBDbGllbnRXaXRoSWQ6CiAgICAgIGFsbE9mOgogICAgICAgIC0gJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0NsaWVudCcKICAgICAgICAtIHByb3BlcnRpZXM6CiAgICAgICAgICAgIGlkOgogICAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIHJlcXVpcmVkOgogICAgICAgICAgICAtIGlkCgogICAgIyBhbGxPZiBwZXJmb3JtcyBhIHVuaW9uIG9mIGFsbCB0eXBlcyBkZWZpbmVkLCBidXQgaWYgdGhlcmUncyBhIGR1cGxpY2F0ZSBmaWVsZCBkZWZpbmVkLCBpdCdsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgbGFzdCBzY2hlbWEKICAgICMgaHR0cHM6Ly9naXRodWIuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vaXNzdWVzLzE1NjkKICAgIElkZW50aXR5V2l0aER1cGxpY2F0ZUZpZWxkOgogICAgICBhbGxPZjoKICAgICAgICAjIGBpc3N1ZXJgIHdpbGwgYmUgaWdub3JlZAogICAgICAgIC0gJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0lkZW50aXR5JwogICAgICAgICMgYGlzc3VlcmAgd2lsbCBiZSBpZ25vcmVkCiAgICAgICAgLSBwcm9wZXJ0aWVzOgogICAgICAgICAgICBpc3N1ZXI6CiAgICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICMgYGlzc3VlcmAgd2lsbCB0YWtlIHByZWNlZGVuY2UKICAgICAgICAtIHByb3BlcnRpZXM6CiAgICAgICAgICAgIGlzc3VlcjoKICAgICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgbmFtZToKICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgICAgICAgICAtIG5hbWUKCiAgICAjIGFueU9mIHJlc3VsdHMgaW4gYSB0eXBlIHRoYXQgaGFzIGFuIGBBc0NsaWVudGAvYE1lcmdlQ2xpZW50YC9gRnJvbUNsaWVudGAgYW5kIGFuIGBBc0lkZW50aXR5YC9gTWVyZ2VJZGVudGl0eWAvYEZyb21JZGVudGl0eWAgbWV0aG9kIHNvIHlvdSBjYW4gY2hvb3NlIHdoaWNoIG9mIHRoZW0geW91IHdhbnQgdG8gcmV0cmlldmUKICAgIENsaWVudEFuZE1heWJlSWRlbnRpdHk6CiAgICAgIGFueU9mOgogICAgICAgIC0gJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0NsaWVudCcKICAgICAgICAtICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9JZGVudGl0eScKCiAgICAjIG9uZU9mIHJlc3VsdHMgaW4gYSB0eXBlIHRoYXQgaGFzIGFuIGBBc0NsaWVudGAvYE1lcmdlQ2xpZW50YC9gRnJvbUNsaWVudGAgYW5kIGFuIGBBc0lkZW50aXR5YC9gTWVyZ2VJZGVudGl0eWAvYEZyb21JZGVudGl0eWAgbWV0aG9kIHNvIHlvdSBjYW4gY2hvb3NlIHdoaWNoIG9mIHRoZW0geW91IHdhbnQgdG8gcmV0cmlldmUKICAgIENsaWVudE9ySWRlbnRpdHk6CiAgICAgIG9uZU9mOgogICAgICAgIC0gJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0NsaWVudCcKICAgICAgICAtICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9JZGVudGl0eScKYGBgCgpUaGlzIHJlc3VsdHMgaW4gdGhlIGZvbGxvd2luZyB0eXBlczoKCjxkZXRhaWxzPgoKPHN1bW1hcnk+QmFzZSB0eXBlczwvc3VtbWFyeT4KCmBgYGdvCi8vIENsaWVudCBkZWZpbmVzIG1vZGVsIGZvciBDbGllbnQuCnR5cGUgQ2xpZW50IHN0cnVjdCB7CglOYW1lIHN0cmluZyBganNvbjoibmFtZSJgCn0KCi8vIElkZW50aXR5IGRlZmluZXMgbW9kZWwgZm9yIElkZW50aXR5Lgp0eXBlIElkZW50aXR5IHN0cnVjdCB7CglJc3N1ZXIgc3RyaW5nIGBqc29uOiJpc3N1ZXIiYAp9CmBgYAoKPC9kZXRhaWxzPgoKPGRldGFpbHM+Cgo8c3VtbWFyeT48Y29kZT5hbGxPZjwvY29kZT48L3N1bW1hcnk+CgpgYGBnbwovLyBDbGllbnRXaXRoSWQgZGVmaW5lcyBtb2RlbCBmb3IgQ2xpZW50V2l0aElkLgp0eXBlIENsaWVudFdpdGhJZCBzdHJ1Y3QgewoJSWQgICBpbnQgICAgYGpzb246ImlkImAKCU5hbWUgc3RyaW5nIGBqc29uOiJuYW1lImAKfQoKLy8gSWRlbnRpdHlXaXRoRHVwbGljYXRlRmllbGQgZGVmaW5lcyBtb2RlbCBmb3IgSWRlbnRpdHlXaXRoRHVwbGljYXRlRmllbGQuCnR5cGUgSWRlbnRpdHlXaXRoRHVwbGljYXRlRmllbGQgc3RydWN0IHsKCUlzc3VlciBzdHJ1Y3QgewoJCU5hbWUgc3RyaW5nIGBqc29uOiJuYW1lImAKCX0gYGpzb246Imlzc3VlciJgCn0KYGBgCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KCjxzdW1tYXJ5Pjxjb2RlPmFueU9mPC9jb2RlPjwvc3VtbWFyeT4KCmBgYGdvCmltcG9ydCAoCgkiZW5jb2RpbmcvanNvbiIKCgkiZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vcnVudGltZSIKKQoKLy8gQ2xpZW50QW5kTWF5YmVJZGVudGl0eSBkZWZpbmVzIG1vZGVsIGZvciBDbGllbnRBbmRNYXliZUlkZW50aXR5Lgp0eXBlIENsaWVudEFuZE1heWJlSWRlbnRpdHkgc3RydWN0IHsKCXVuaW9uIGpzb24uUmF3TWVzc2FnZQp9CgovLyBBc0NsaWVudCByZXR1cm5zIHRoZSB1bmlvbiBkYXRhIGluc2lkZSB0aGUgQ2xpZW50QW5kTWF5YmVJZGVudGl0eSBhcyBhIENsaWVudApmdW5jICh0IENsaWVudEFuZE1heWJlSWRlbnRpdHkpIEFzQ2xpZW50KCkgKENsaWVudCwgZXJyb3IpIHsKCXZhciBib2R5IENsaWVudAoJZXJyIDo9IGpzb24uVW5tYXJzaGFsKHQudW5pb24sICZib2R5KQoJcmV0dXJuIGJvZHksIGVycgp9CgovLyBGcm9tQ2xpZW50IG92ZXJ3cml0ZXMgYW55IHVuaW9uIGRhdGEgaW5zaWRlIHRoZSBDbGllbnRBbmRNYXliZUlkZW50aXR5IGFzIHRoZSBwcm92aWRlZCBDbGllbnQKZnVuYyAodCAqQ2xpZW50QW5kTWF5YmVJZGVudGl0eSkgRnJvbUNsaWVudCh2IENsaWVudCkgZXJyb3IgewoJYiwgZXJyIDo9IGpzb24uTWFyc2hhbCh2KQoJdC51bmlvbiA9IGIKCXJldHVybiBlcnIKfQoKLy8gTWVyZ2VDbGllbnQgcGVyZm9ybXMgYSBtZXJnZSB3aXRoIGFueSB1bmlvbiBkYXRhIGluc2lkZSB0aGUgQ2xpZW50QW5kTWF5YmVJZGVudGl0eSwgdXNpbmcgdGhlIHByb3ZpZGVkIENsaWVudApmdW5jICh0ICpDbGllbnRBbmRNYXliZUlkZW50aXR5KSBNZXJnZUNsaWVudCh2IENsaWVudCkgZXJyb3IgewoJYiwgZXJyIDo9IGpzb24uTWFyc2hhbCh2KQoJaWYgZXJyICE9IG5pbCB7CgkJcmV0dXJuIGVycgoJfQoKCW1lcmdlZCwgZXJyIDo9IHJ1bnRpbWUuSlNPTk1lcmdlKHQudW5pb24sIGIpCgl0LnVuaW9uID0gbWVyZ2VkCglyZXR1cm4gZXJyCn0KCi8vIEFzSWRlbnRpdHkgcmV0dXJucyB0aGUgdW5pb24gZGF0YSBpbnNpZGUgdGhlIENsaWVudEFuZE1heWJlSWRlbnRpdHkgYXMgYSBJZGVudGl0eQpmdW5jICh0IENsaWVudEFuZE1heWJlSWRlbnRpdHkpIEFzSWRlbnRpdHkoKSAoSWRlbnRpdHksIGVycm9yKSB7Cgl2YXIgYm9keSBJZGVudGl0eQoJZXJyIDo9IGpzb24uVW5tYXJzaGFsKHQudW5pb24sICZib2R5KQoJcmV0dXJuIGJvZHksIGVycgp9CgovLyBGcm9tSWRlbnRpdHkgb3ZlcndyaXRlcyBhbnkgdW5pb24gZGF0YSBpbnNpZGUgdGhlIENsaWVudEFuZE1heWJlSWRlbnRpdHkgYXMgdGhlIHByb3ZpZGVkIElkZW50aXR5CmZ1bmMgKHQgKkNsaWVudEFuZE1heWJlSWRlbnRpdHkpIEZyb21JZGVudGl0eSh2IElkZW50aXR5KSBlcnJvciB7CgliLCBlcnIgOj0ganNvbi5NYXJzaGFsKHYpCgl0LnVuaW9uID0gYgoJcmV0dXJuIGVycgp9CgovLyBNZXJnZUlkZW50aXR5IHBlcmZvcm1zIGEgbWVyZ2Ugd2l0aCBhbnkgdW5pb24gZGF0YSBpbnNpZGUgdGhlIENsaWVudEFuZE1heWJlSWRlbnRpdHksIHVzaW5nIHRoZSBwcm92aWRlZCBJZGVudGl0eQpmdW5jICh0ICpDbGllbnRBbmRNYXliZUlkZW50aXR5KSBNZXJnZUlkZW50aXR5KHYgSWRlbnRpdHkpIGVycm9yIHsKCWIsIGVyciA6PSBqc29uLk1hcnNoYWwodikKCWlmIGVyciAhPSBuaWwgewoJCXJldHVybiBlcnIKCX0KCgltZXJnZWQsIGVyciA6PSBydW50aW1lLkpTT05NZXJnZSh0LnVuaW9uLCBiKQoJdC51bmlvbiA9IG1lcmdlZAoJcmV0dXJuIGVycgp9CgpmdW5jICh0IENsaWVudEFuZE1heWJlSWRlbnRpdHkpIE1hcnNoYWxKU09OKCkgKFtdYnl0ZSwgZXJyb3IpIHsKCWIsIGVyciA6PSB0LnVuaW9uLk1hcnNoYWxKU09OKCkKCXJldHVybiBiLCBlcnIKfQoKZnVuYyAodCAqQ2xpZW50QW5kTWF5YmVJZGVudGl0eSkgVW5tYXJzaGFsSlNPTihiIFtdYnl0ZSkgZXJyb3IgewoJZXJyIDo9IHQudW5pb24uVW5tYXJzaGFsSlNPTihiKQoJcmV0dXJuIGVycgp9CgoKYGBgCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KCjxzdW1tYXJ5Pjxjb2RlPm9uZU9mPC9jb2RlPjwvc3VtbWFyeT4KCmBgYGdvCi8vIEFzQ2xpZW50IHJldHVybnMgdGhlIHVuaW9uIGRhdGEgaW5zaWRlIHRoZSBDbGllbnRPcklkZW50aXR5IGFzIGEgQ2xpZW50CmZ1bmMgKHQgQ2xpZW50T3JJZGVudGl0eSkgQXNDbGllbnQoKSAoQ2xpZW50LCBlcnJvcikgewoJdmFyIGJvZHkgQ2xpZW50CgllcnIgOj0ganNvbi5Vbm1hcnNoYWwodC51bmlvbiwgJmJvZHkpCglyZXR1cm4gYm9keSwgZXJyCn0KCi8vIEZyb21DbGllbnQgb3ZlcndyaXRlcyBhbnkgdW5pb24gZGF0YSBpbnNpZGUgdGhlIENsaWVudE9ySWRlbnRpdHkgYXMgdGhlIHByb3ZpZGVkIENsaWVudApmdW5jICh0ICpDbGllbnRPcklkZW50aXR5KSBGcm9tQ2xpZW50KHYgQ2xpZW50KSBlcnJvciB7CgliLCBlcnIgOj0ganNvbi5NYXJzaGFsKHYpCgl0LnVuaW9uID0gYgoJcmV0dXJuIGVycgp9CgovLyBNZXJnZUNsaWVudCBwZXJmb3JtcyBhIG1lcmdlIHdpdGggYW55IHVuaW9uIGRhdGEgaW5zaWRlIHRoZSBDbGllbnRPcklkZW50aXR5LCB1c2luZyB0aGUgcHJvdmlkZWQgQ2xpZW50CmZ1bmMgKHQgKkNsaWVudE9ySWRlbnRpdHkpIE1lcmdlQ2xpZW50KHYgQ2xpZW50KSBlcnJvciB7CgliLCBlcnIgOj0ganNvbi5NYXJzaGFsKHYpCglpZiBlcnIgIT0gbmlsIHsKCQlyZXR1cm4gZXJyCgl9CgoJbWVyZ2VkLCBlcnIgOj0gcnVudGltZS5KU09OTWVyZ2UodC51bmlvbiwgYikKCXQudW5pb24gPSBtZXJnZWQKCXJldHVybiBlcnIKfQoKLy8gQXNJZGVudGl0eSByZXR1cm5zIHRoZSB1bmlvbiBkYXRhIGluc2lkZSB0aGUgQ2xpZW50T3JJZGVudGl0eSBhcyBhIElkZW50aXR5CmZ1bmMgKHQgQ2xpZW50T3JJZGVudGl0eSkgQXNJZGVudGl0eSgpIChJZGVudGl0eSwgZXJyb3IpIHsKCXZhciBib2R5IElkZW50aXR5CgllcnIgOj0ganNvbi5Vbm1hcnNoYWwodC51bmlvbiwgJmJvZHkpCglyZXR1cm4gYm9keSwgZXJyCn0KCi8vIEZyb21JZGVudGl0eSBvdmVyd3JpdGVzIGFueSB1bmlvbiBkYXRhIGluc2lkZSB0aGUgQ2xpZW50T3JJZGVudGl0eSBhcyB0aGUgcHJvdmlkZWQgSWRlbnRpdHkKZnVuYyAodCAqQ2xpZW50T3JJZGVudGl0eSkgRnJvbUlkZW50aXR5KHYgSWRlbnRpdHkpIGVycm9yIHsKCWIsIGVyciA6PSBqc29uLk1hcnNoYWwodikKCXQudW5pb24gPSBiCglyZXR1cm4gZXJyCn0KCi8vIE1lcmdlSWRlbnRpdHkgcGVyZm9ybXMgYSBtZXJnZSB3aXRoIGFueSB1bmlvbiBkYXRhIGluc2lkZSB0aGUgQ2xpZW50T3JJZGVudGl0eSwgdXNpbmcgdGhlIHByb3ZpZGVkIElkZW50aXR5CmZ1bmMgKHQgKkNsaWVudE9ySWRlbnRpdHkpIE1lcmdlSWRlbnRpdHkodiBJZGVudGl0eSkgZXJyb3IgewoJYiwgZXJyIDo9IGpzb24uTWFyc2hhbCh2KQoJaWYgZXJyICE9IG5pbCB7CgkJcmV0dXJuIGVycgoJfQoKCW1lcmdlZCwgZXJyIDo9IHJ1bnRpbWUuSlNPTk1lcmdlKHQudW5pb24sIGIpCgl0LnVuaW9uID0gbWVyZ2VkCglyZXR1cm4gZXJyCn0KCmZ1bmMgKHQgQ2xpZW50T3JJZGVudGl0eSkgTWFyc2hhbEpTT04oKSAoW11ieXRlLCBlcnJvcikgewoJYiwgZXJyIDo9IHQudW5pb24uTWFyc2hhbEpTT04oKQoJcmV0dXJuIGIsIGVycgp9CgpmdW5jICh0ICpDbGllbnRPcklkZW50aXR5KSBVbm1hcnNoYWxKU09OKGIgW11ieXRlKSBlcnJvciB7CgllcnIgOj0gdC51bmlvbi5Vbm1hcnNoYWxKU09OKGIpCglyZXR1cm4gZXJyCn0KYGBgCgo8L2RldGFpbHM+CgpGb3IgbW9yZSBpbmZvLCBjaGVjayBvdXQgW3RoZSBleGFtcGxlIGNvZGVdKGV4YW1wbGVzL2FueW9mLWFsbG9mLW9uZW9mLykuCgojIyMgSG93IGNhbiBJIGlnbm9yZSBwYXJ0cyBvZiB0aGUgc3BlYyBJIGRvbid0IGNhcmUgYWJvdXQ/CgpCeSBkZWZhdWx0LCBgb2FwaS1jb2RlZ2VuYCB3aWxsIGdlbmVyYXRlIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgc3BlY2lmaWNhdGlvbi4KCklmIHlvdSdkIGxpa2UgdG8gcmVkdWNlIHdoYXQncyBnZW5lcmF0ZWQsIHlvdSBjYW4gdXNlIG9uZSBvZiBhIGZldyBvcHRpb25zIGluIFt0aGUgY29uZmlndXJhdGlvbiBmaWxlXSgjdXNhZ2UpIHRvIHR1bmUgdGhlIGdlbmVyYXRpb24gb2YgdGhlIHJlc3VsdGluZyBvdXRwdXQ6CgpgYGB5YW1sCiMgeWFtbC1sYW5ndWFnZS1zZXJ2ZXI6ICRzY2hlbWE9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29hcGktY29kZWdlbi9vYXBpLWNvZGVnZW4vSEVBRC9jb25maWd1cmF0aW9uLXNjaGVtYS5qc29uCm91dHB1dC1vcHRpb25zOgogIGluY2x1ZGUtdGFnczogW10KICBleGNsdWRlLXRhZ3M6IFtdCiAgaW5jbHVkZS1vcGVyYXRpb24taWRzOiBbXQogIGV4Y2x1ZGUtb3BlcmF0aW9uLWlkczogW10KICBleGNsdWRlLXNjaGVtYXM6IFtdCmBgYAoKQ2hlY2sgW3RoZSBkb2NzXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL3YyL3BrZy9jb2RlZ2VuI091dHB1dE9wdGlvbnMpIGZvciBtb3JlIGRldGFpbHMgb2YgdXNhZ2UuCgojIyMgU2hvdWxkIEkgY29tbWl0IHRoZSBnZW5lcmF0ZWQgY29kZT8KCldlIHJlY29tbWVuZCBkb2luZyBzbywgeWVzLCBmb3IgdGhlIGZvbGxvd2luZyByZWFzb25zOgoKLSBJdCBtZWFucyBpdCdzIGVhc2llciB0byB2aWV3IHRoZSBpbXBhY3Qgb2YgYSBjaGFuZ2UgLSBiZSBpdCBkdWUgdG8gYW4gdXBncmFkZSBvZiBgb2FwaS1jb2RlZ2VuYCwgb3IgYSBjaGFuZ2UgdG8geW91ciBzcGVjIC0gYW5kIGhhcyBoZWxwZWQgY2F0Y2ggKHBvc3NpYmx5KSBicmVha2luZyBjaGFuZ2VzIGluIHRoZSBwYXN0IG1vcmUgZWFzaWx5Ci0gSXQgdGhlbiBhbGxvd3MgeW91ciBjb2RlYmFzZSB0byBiZSBjb25zdW1lZCBhcyBhIGxpYnJhcnksIGFzIGFsbCB0aGUgZmlsZXMgYXJlIGNvbW1pdHRlZAoKVGhpcyBtZWFucyB5b3UnbGwgbmVlZCB0byBoYXZlIHlvdXIgQ0kvQ0QgcGlwZWxpbmUgdmFsaWRhdGUgdGhhdCBnZW5lcmF0ZWQgZmlsZXMgYXJlIGFsbCB1cC10by1kYXRlLCBidXQgdGhhdCdzIGEgZmFpcmx5IHN0cmFpZ2h0Zm9yd2FyZCBwaWVjZSBvZiB3b3JrLgoKIyMjIFNob3VsZCBJIGxpbnQgdGhlIGdlbmVyYXRlZCBjb2RlPwoKV2UgcmVhbGx5IGFzayB0aGF0IHlvdSBkb24ndC4gQWx0aG91Z2ggaXQgaW50ZW5kcyB0byBiZSBpZGlvbWF0aWMgR28gY29kZSwgaXQncyBub3QgZXhwZWN0ZWQgdG8gcGFzcyBhbGwgdGhlIHZhcmlvdXMgbGludGluZyBydWxlcyB0aGF0IHlvdXIgcHJvamVjdCBtYXkgYXBwbHkuCgo+IFshTk9URV0KPiBXZSB3aWxsLCBvbiBvY2Nhc2lvbiwgaW1wcm92ZSB0aGUgZ2VuZXJhdGVkIGNvZGUgdG8gZml4IHNvbWUgbGludGluZyB3YXJuaW5ncywgc3VjaCBhcyB0aG9zZSBmcm9tIGBnbyB2ZXRgLCBidXQgdGhpcyBzaG91bGQgbm90IGJlIGFuIGV4cGVjdGVkIGNoYW5nZS4KCiMjIyBJJ3ZlIGp1c3QgdXBkYXRlZCBteSB2ZXJzaW9uIG9mIGBraW4tb3BlbmFwaWAsIGFuZCBub3cgSSBjYW4ndCBidWlsZCBteSBjb2RlIPCfmKAKClRoZSBba2luLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpIHByb2plY3QgLSB3aGljaCB3ZSDwn5KcIGZvciBwcm92aWRpbmcgYSBncmVhdCBsaWJyYXJ5IGFuZCBzZXQgb2YgdG9vbGluZyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBPcGVuQVBJIC0gaXMgYSBwcmUtdjEgcmVsZWFzZSwgd2hpY2ggbWVhbnMgdGhhdCB0aGV5J3JlIHdpdGhpbiB0aGVpciByaWdodHMgdG8gcHVzaCBicmVha2luZyBjaGFuZ2VzLgoKVGhpcyBtYXkgbGVhZCB0byBicmVha2FnZSBpbiB5b3VyIGNvbnN1bWluZyBjb2RlLCBhbmQgaWYgc28sIHNvcnJ5IHRoYXQncyBoYXBwZW5lZCEKCldlJ2xsIGJlIGF3YXJlIG9mIHRoZSBpc3N1ZSwgYW5kIHdpbGwgd29yayB0byB1cGRhdGUgYm90aCB0aGUgY29yZSBgb2FwaS1jb2RlZ2VuYCBhbmQgdGhlIG1pZGRsZXdhcmVzIGFjY29yZGluZ2x5LgoKIyMgQ29udHJpYnV0b3JzCgpXZSdyZSB2ZXJ5IGFwcHJlY2lhdGl2ZSBvZiBbdGhlIG1hbnkgY29udHJpYnV0b3JzIG92ZXIgdGhlIHllYXJzXShodHRwczovL2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9ncmFwaHMvY29udHJpYnV0b3JzKSBhbmQgdGhlIG9uZ29pbmcgdXNlIG9mIHRoZSBwcm9qZWN0IPCfkpwKCjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuL2dyYXBocy9jb250cmlidXRvcnMiPgogIDxpbWcgc3JjPSJodHRwczovL2NvbnRyaWIucm9ja3MvaW1hZ2U/cmVwbz1vYXBpLWNvZGVnZW4vb2FwaS1jb2RlZ2VuIiAvPgo8L2E+CgojIyBTcG9uc29ycwoKRm9yIHRoZSBtb3N0IHBhcnQsIGBvYXBpLWNvZGVnZW5gIGlzIG1haW50YWluZWQgaW4gdHdvIGJ1c3kgcGVvcGxlcycgZnJlZSB0aW1lLiBBcyBub3RlZCBpbiBbQ3JlYXRpbmcgYSBtb3JlIHN1c3RhaW5hYmxlIG1vZGVsIGZvciBgb2FwaS1jb2RlZ2VuYCBpbiB0aGUgZnV0dXJlXShodHRwczovL2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi9kaXNjdXNzaW9ucy8xNjA2KSwgd2UncmUgbG9va2luZyB0byBtYWtlIHRoaXMgYSBtb3JlIHN1c3RhaW5hYmxlIHByb2plY3QgaW4gdGhlIGZ1dHVyZS4KClBsZWFzZSBjb25zaWRlciBzcG9uc29yaW5nIHVzIHRocm91Z2ggR2l0SHViIFNwb25zb3JzIGVpdGhlciBbb24gdGhlIG9yZ2FuaXNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL29hcGktY29kZWdlbi8pIG9yIFtkaXJlY3RseSBmb3IgSmFtaWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9qYW1pZXRhbm5hLyksIHdoaWNoIGhlbHBzIHdvcmsgdG93YXJkcyB1cyBiZWluZyBhYmxlIHRvIG1haW50YWluIHRoZSBwcm9qZWN0IGxvbmcgdGVybS4KClNlZSBbdGhpcyBibG9nIHBvc3QgZnJvbSBUaWRlbGlmdF0oaHR0cHM6Ly9ibG9nLnRpZGVsaWZ0LmNvbS9wYXlpbmctbWFpbnRhaW5lcnMtdGhlLWhvd3RvKSBmb3IgbW9yZSBkZXRhaWxzIG9uIGhvdyB0byB0YWxrIHRvIHlvdXIgY29tcGFueSBhYm91dCBzcG9uc29yaW5nIG1haW50YWluZXJzIG9mIChPcGVuIFNvdXJjZSkgcHJvamVjdHMgeW91IGRlcGVuZCBvbi4KCkluIGFkZGl0aW9uLCB3ZSBhcmUgYWxzbyBnZW5lcm91c2x5IHNwb25zb3JlZCBieSB0aGUgZm9sbG93aW5nIGZvbGtzLCBlYWNoIG9mIHdob20gcHJvdmlkZSBzcG9uc29yc2hpcCBmb3IgMSBob3VyIG9mIHdvcmsgYSBtb250aDoKCjxwIGFsaWduPSJjZW50ZXIiPgoJPGEgaHJlZj0iaHR0cHM6Ly93d3cuZGV2emVyby5pby9scC9kZXYtZW52aXJvbm1lbnQ/dXRtX2NhbXBhaWduPWdpdGh1YiZ1dG1fc291cmNlPW9hcGktY29kZWdlbiUyMHJlcG8mdXRtX21lZGl1bT1naXRodWIlMjBzcG9uc29yc2hpcCI+CgkJPHBpY3R1cmU+CgkJICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KSIgc3Jjc2V0PSIuZ2l0aHViL3Nwb25zb3JzL2Rldnplcm8tbGlnaHQuc3ZnIj4KCQkgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iLmdpdGh1Yi9zcG9uc29ycy9kZXZ6ZXJvLWRhcmsuc3ZnIj4KCQkgIDxpbWcgYWx0PSJEZXZaZXJvIGxvZ28iIHNyYz0iLmdpdGh1Yi9zcG9uc29ycy9kZXZ6ZXJvLWRhcmsuc3ZnIiBoZWlnaHQ9IjEwMHB4Ij4KCQk8L3BpY3R1cmU+Cgk8L2E+CjwvcD4KCjxwIGFsaWduPSJjZW50ZXIiPgoJPGEgaHJlZj0iaHR0cHM6Ly9zYW5kYm94LnNwZWFrZWFzeS5jb20vP3M9aVE1aEVkcmpMQ2lpJnV0bV9zb3VyY2U9b2FwaS1jb2RlZ2VuK3JlcG8mdXRtX21lZGl1bT1naXRodWIrc3BvbnNvcnNoaXAiPgoJCTxwaWN0dXJlPgoJCSAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkiIHNyY3NldD0iLmdpdGh1Yi9zcG9uc29ycy9zcGVha2Vhc3ktbGlnaHQuc3ZnIj4KCQkgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iLmdpdGh1Yi9zcG9uc29ycy9zcGVha2Vhc3ktZGFyay5zdmciPgoJCSAgPGltZyBhbHQ9IlNwZWFrZWFzeSBsb2dvIiBzcmM9Ii5naXRodWIvc3BvbnNvcnMvc3BlYWtlYXN5LWRhcmsuc3ZnIiBoZWlnaHQ9IjYwcHgiPgoJCTwvcGljdHVyZT4KCTwvYT4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+Cgk8YSBocmVmPSJodHRwczovL2N5Ym96dS5jby5qcC8/dXRtX3NvdXJjZT1vYXBpLWNvZGVnZW4rcmVwbyZ1dG1fbWVkaXVtPWdpdGh1YitzcG9uc29yc2hpcCI+CgkJPGltZyBhbHQ9IkN5Ym96dSBsb2dvIiBzcmM9Ii5naXRodWIvc3BvbnNvcnMvY3lib3p1LnN2ZyIgaGVpZ2h0PSIxMDBweCI+Cgk8L2E+CjwvcD4KCjxwIGFsaWduPSJjZW50ZXIiPgoJPGEgaHJlZj0iaHR0cHM6Ly9saXZlcGVlci5vcmcvP3V0bV9zb3VyY2U9b2FwaS1jb2RlZ2VuK3JlcG8mdXRtX21lZGl1bT1naXRodWIrc3BvbnNvcnNoaXAiPgoJCTxwaWN0dXJlPgoJCSAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkiIHNyY3NldD0iLmdpdGh1Yi9zcG9uc29ycy9saXZlcGVlci1saWdodC5zdmciPgoJCSAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSIuZ2l0aHViL3Nwb25zb3JzL2xpdmVwZWVyLWRhcmsuc3ZnIj4KCQkgIDxpbWcgYWx0PSJMaXZlcGVlciBsb2dvIiBzcmM9Ii5naXRodWIvc3BvbnNvcnMvbGl2ZXBlZXItZGFyay5zdmciIGhlaWdodD0iNTBweCI+CgkJPC9waWN0dXJlPgoJPC9hPgo8L3A+CgooTm90ZSB0aGF0IHRoZSBvcmRlciBvZiBhcHBlYXJhbmNlIHRoZSBvcmRlciBpbiB3aGljaCBzcG9uc29yc2hpcCB3YXMgcmVjZWl2ZWQpCg== readmeEtag: '"9cb70c7c3dac8f923818a19ba6c0fff42b9b17ce"' readmeLastModified: Mon, 03 Nov 2025 13:32:47 GMT repositoryId: 173009358 description: Generate Go client and server boilerplate from OpenAPI 3 specifications created: '2019-02-27T23:59:59Z' updated: '2026-02-06T04:24:27Z' language: Go archived: false stars: 8035 watchers: 41 forks: 1011 owner: oapi-codegen logo: https://avatars.githubusercontent.com/u/142752710?v=4 license: Apache-2.0 repoEtag: '"dfdc98028c12e7f949e740d4c128e253559de39140ac121a03f2df03da2b3706"' repoLastModified: Fri, 06 Feb 2026 04:24:27 GMT foundInMaster: true id: 770a221110cc4ef0e399089f5caf8694 oldLocations: - https://github.com/deepmap/oapi-codegen - source: openapi3 tags name: OpenAPI TypeScript category: - Converters - SDK language: TypeScript source_description: >- Convert static OpenAPI schemas to TypeScript types quickly using pure Node.js. Fast, lightweight, (almost) dependency-free, and no Java/node-gyp/running OpenAPI servers necessary. link: https://github.com/drwpow/openapi-typescript v2: true v3: true v3_1: true repository: https://github.com/openapi-ts/openapi-typescript id: 9880f7b9f35e02f8dfae31a519803f18 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXR5cGVzY3JpcHQKClRvb2xzIGZvciBjb25zdW1pbmcgT3BlbkFQSSBzY2hlbWFzIGluIFR5cGVTY3JpcHQuCgojIyDwn5OmIFBhY2thZ2VzCgo8YSBocmVmPSIuL3BhY2thZ2VzL29wZW5hcGktdHlwZXNjcmlwdCI+PGltZyBzcmM9Ii4vZG9jcy9wdWJsaWMvYXNzZXRzL29wZW5hcGktdHMuc3ZnIiBhbHQ9Im9wZW5hcGktdHlwZXNjcmlwdCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSI0MCIgLz48YnIgLz4KR2VuZXJhdGUgVHlwZVNjcmlwdCB0eXBlcyBmcm9tIHN0YXRpYyBPcGVuQVBJIHNjaGVtYXMKPC9hPgoKPGEgaHJlZj0iLi9wYWNrYWdlcy9vcGVuYXBpLWZldGNoIj48aW1nIHNyYz0iLi9kb2NzL3B1YmxpYy9hc3NldHMvb3BlbmFwaS1mZXRjaC5zdmciIGFsdD0ib3BlbmFwaS1mZXRjaCIgd2lkdGg9IjIxNiIgaGVpZ2h0PSI0MCIgLz48YnIgLz4KVWx0cmEtZmFzdCBmZXRjaGluZyBmb3IgVHlwZVNjcmlwdCBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIHlvdXIgT3BlbkFQSSBzY2hlbWEuCjwvYT4KCiMjIOKtkCBTcG9uc29ycwoKIyMjIPCfpYcgR29sZCBTcG9uc29ycwoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly96dXBsby5saW5rL29wZW5hcGktdHMtZ2giPjxpbWcgd2lkdGg9IjI4OCIgaGVpZ2h0PSIxMjAiIGFsdD0iWnVwbG8iIHNyYz0iLi9kb2NzL3B1YmxpYy9hc3NldHMvenVwbG8uc3ZnIj48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3BlYWtlYXN5LmNvbS9lZGl0b3I/dXRtX3NvdXJjZT1wb3dfb3BlbmFwaV90cyIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgd2lkdGg9IjI4OCIgaGVpZ2h0PSIxMjAiIHNyYz0iLi9kb2NzL3B1YmxpYy9hc3NldHMvc3BlYWtlYXN5LnBuZyIgLz48L2E+CjwvcD4KCiMjIyDwn6WIIFNpbHZlciBTcG9uc29ycwoKPHAgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL25hbmFiaXQtaW5jIj48aW1nIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiBhbHQ9Im5hbmFiaXQiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE1NDEyNjk3Nj9zPTIwMCZ2PTQiPjwvYT48L3A+CgojIyMgQmFja2VycwoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2N1c3RvbWVyaW8iPjxpbWcgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiBhbHQ9IkBjdXN0b21lcmlvIG9uIEdpdEh1YiIgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE1MjA3OT9zPTIwMCZ2PTQiPjwvYT4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2hhdW5wZXJzYWQiPjxpbWcgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiBhbHQ9IkBzaGF1bnBlcnNhZCBvbiBHaXRIdWIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE3MDI5NzY/cz01MiZ2PTQiPjwvYT4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20veW9zaGkybm8iPjxpbWcgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiBhbHQ9IkB5b3NoaTJubyBvbiBHaXRIdWIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU3MDU5NzA1P3Y9NCI+PC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaWtldHlhbiI+PGltZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIGFsdD0iQHNpa2V0eWFuIG9uIEdpdEh1YiIgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTI3NzIxMTg/dj00Ij48L2E+CjwvcD4KCkJlY29tZSBhIHNwb25zb3IgYnkgc3VwcG9ydGluZyB0aGlzIHByb2plY3Qgb24gW09wZW5Db2xsZWN0aXZlXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcGVuYXBpLXRzKSEKCjxhIGhyZWY9Imh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL29wZW5hcGktdHMvZG9uYXRlIiB0YXJnZXQ9Il9ibGFuayI+CiAgPGltZyBzcmM9Imh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL29wZW5hcGktdHMvZG9uYXRlL2J1dHRvbkAyeC5wbmc/Y29sb3I9Ymx1ZSIgd2lkdGg9IjMwMCIgLz4KPC9hPgoKIyMg8J+knSBDb250cmlidXRpbmcKCkNvbnRyaWJ1dGlvbnMgYXJlIGFwcHJlY2lhdGVkIGFuZCB3ZWxjb21lISBTZWUgdGhlIGFwcHJvcHJpYXRlIGd1aWRlIGZvciBlYWNoIHBhY2thZ2U6CgotIFtDb250cmlidXRpbmcgdG8gb3BlbmFwaS10eXBlc2NyaXB0XSguL3BhY2thZ2VzL29wZW5hcGktdHlwZXNjcmlwdC9DT05UUklCVVRJTkcubWQpCi0gW0NvbnRyaWJ1dGluZyB0byBvcGVuYXBpLWZldGNoXSguL3BhY2thZ2VzL29wZW5hcGktZmV0Y2gvQ09OVFJJQlVUSU5HLm1kKQotIFtDb250cmlidXRpbmcgdG8gZG9jc10oLi9kb2NzL0NPTlRSSUJVVElORy5tZCkKCiMjIOKZpe+4jyBUaGFua3MKCi0gVGhhbmtzIHRvIFt0aGUgUHJvamVjdCBTcG9uc29yc10oIy1zcG9uc29ycykgZm9yIGtlZXBpbmcgdGhpcyBwcm9qZWN0IGdvaW5nIQotIFRoYW5rcyB0byBbZG96ZW5zIG9mIGxvdmVseSwgc21hcnQgY29udHJpYnV0b3JzXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS10cy9vcGVuYXBpLXR5cGVzY3JpcHQvZ3JhcGhzL2NvbnRyaWJ1dG9ycykgdGhhdCBtYWRlIHRoaXMgbGlicmFyeSBwb3NzaWJsZQotIFRoYW5rcyB0byBbVml0ZXByZXNzXShodHRwczovL3ZpdGVwcmVzcy5kZXYvKSBmb3IgdGhlIGRvY3Mgc2l0ZQotIFRoYW5rcyB0byBbQ2xvdWRmbGFyZSBQYWdlc10oaHR0cHM6Ly9wYWdlcy5jbG91ZGZsYXJlLmNvbS8pIGZvciBkb2NzIHNpdGUgaG9zdGluZwotIFRoYW5rcyB0byBbQWxnb2xpYV0oaHR0cHM6Ly93d3cuYWxnb2xpYS5jb20vKSBmb3IgdGhlIGRvY3Mgc2l0ZSBzZWFyY2gK readmeEtag: '"dbbc6be6fa734d153ec40acf7b8fa76a85a6fa9a"' readmeLastModified: Mon, 11 Aug 2025 04:11:36 GMT repositoryId: 161691324 description: Generate TypeScript types from OpenAPI 3 specs created: '2018-12-13T20:28:01Z' updated: '2026-02-06T04:03:41Z' language: TypeScript archived: false stars: 7882 watchers: 23 forks: 615 owner: openapi-ts logo: https://avatars.githubusercontent.com/u/172838200?v=4 license: MIT repoEtag: '"f77973cfc28b3dc82d018fd9e97f4c8825fa089806d4807379c5b838cfe4fccd"' repoLastModified: Fri, 06 Feb 2026 04:03:41 GMT foundInMaster: true oldLocations: - https://github.com/drwpow/openapi-typescript - source: openapi3 tags repository: https://github.com/xiaoymin/knife4j v3: true id: e1d4be4e3f97f5154f27fa1601e56818 repositoryMetadata: base64Readme: >- a25pZmU0auaYr+S4ukphdmEgTVZD5qGG5p626ZuG5oiQU3dhZ2dlcueUn+aIkEFwaeaWh+aho+eahOWinuW8uuino+WGs+aWueahiCzliY3ouqvmmK9zd2FnZ2VyLWJvb3RzdHJhcC11aSzlj5blkI1rbmlmZTRq5piv5biM5pyb5aW56IO95YOP5LiA5oqK5YyV6aaW5LiA5qC35bCP5benLOi9u+mHjyzlubbkuJTlip/og73lvLrmgo0hCgprbmlmZTRq55qE5YmN6Lqr5pivYHN3YWdnZXItYm9vdHN0cmFwLXVpYO+8jOS4uuS6huWlkeWQiOW+ruacjeWKoeeahOaetuaehOWPkeWxlSznlLHkuo7ljp/mnaVgc3dhZ2dlci1ib290c3RyYXAtdWlg6YeH55So55qE5piv5ZCO56uvSmF2YeS7o+eggSvliY3nq69Vaea3t+WQiOaJk+WMheeahOaWueW8jyzlnKjlvq7mnI3liqHmnrbmnoTkuIvmmL7nmoTlvojoh4Pogr8s5Zug5q2k6aG555uu5q2j5byP5pu05ZCN5Li6YGtuaWZlNGpgCgrmm7TlkI3lkI7kuLvopoHkuJPms6jnmoTmlrnpnaIKCi0g5YmN5ZCO56uvSmF2YeS7o+eggeS7peWPiuWJjeerr1Vp5qih5Z2X6L+b6KGM5YiG56a7LOWcqOW+ruacjeWKoeaetuaehOS4i+S9v+eUqOabtOWKoOeBtea0uwotIOaPkOS+m+S4k+azqOS6jlN3YWdnZXLnmoTlop7lvLrop6PlhrPmlrnmoYgs5LiN5ZCM5LqO5Y+q5piv5pS55ZaE5aKe5by65YmN56uvVWnpg6jliIYKLSDmj5Dkvpvmm7TlpJrngbXmtLvnmoTkuK3pl7Tku7bmlrnmoYhc5bel5YW3CgojIyDpobnnm67mqKHlnZcKCuebruWJjeS7k+W6k+S4u+imgeeahOaooeWdl+ivtOaYju+8mgoKfCDmqKHlnZflkI3np7AgICAgICAgICAgICAgfCDor7TmmI4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IGtuaWZlNGogICAgICAgICAgICAgIHwg5Li6SmF2YSBNVkPmoYbmnrbpm4bmiJBTd2FnZ2Vy55qE5aKe5by66Kej5Yaz5pa55qGI77yMSmF2YeeUn+aAgeS4i+eahOS4remXtOS7tuWwgeijhSAgICAgICAgICAgICAgICAgICAgICB8Cnwga25pZmU0ai1pbnNpZ2h0IHzlvIDnrrHljbPnlKjnmoTni6znq4vop6PlhrPmlrnmoYgs5o+Q5L6b5a6Y5pa5W0RvY2tlcumVnOWDj10oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yZXBvc2l0b3J5L2RvY2tlci94aWFveW1pbi9rbmlmZTRqL2dlbmVyYWwpLOWfuuS6jlNwcmluZyBCb290IDMuMOe8luWGme+8jOafpeeci1vkvb/nlKjmlofmoaNdKGh0dHBzOi8vZG9jLnhpYW9taW5mby5jb20vZG9jcy9taWRkbGV3YXJlLXNvdXJjZXMvZGVza3RvcC1pbnRyb2R1Y3Rpb24pfAp8IGtuaWZlNGotZG9jICAgIHwga25pZmU0auWumOaWueaWh+aho++8jOWfuuS6jkRvY3VzYXVydXPnvJblhpnvvIzlj4LkuI7otKHnjK7or7db5Y+C6ICD5paH5qGjXShodHRwczovL2RvYy54aWFvbWluZm8uY29tL2RvY3MvY29tbXVuaXR5L2pvaW51cykgICAgICB8Cnwga25pZmU0ai12dWUgICAgICB85b2T5YmNS25pZmU0aueahOWJjeerr+a6kOegge+8jOWfuuS6jlZ1ZTIuMOe8luWGmSAgICAgICAgICAgICAgICAgICAgICAgICB8Cnwga25pZmU0ai12dWUzICAgICAgfOW9k+WJjUtuaWZlNGrnmoTliY3nq6/mupDnoIHvvIzln7rkuo5WdWUzLjDnvJblhpnvvIzor6Xku6PnoIHlupPmnaXoh6rotKHnjK7ogIXvvIznm67liY3lsJrmnKrmipXlhaXkvb/nlKggICAgICAgICAgICAgICAgICAgICAgICB8Cnwga25pZmU0ai1mcm9udCAgICAgICAgfCBrbmlmZTRq55qE5YmN56uv5p625p6E5Luj56CBLOebruWJjeaYr+inhOWIkumYtuaute+8jOivpeaooeWdl+Wwmuacque8lueggSzmnInmg7Pms5XnmoTlj6/ku6XpgJrov4fkuqTmtYHnvqTkuI7kvZzogIXmsp/pgJogICAgfAoKCgoKIyMg6I635Y+W5biu5YqpCgoKKirlrpjnvZHmlofmoaPvvJoqKiBbaHR0cHM6Ly9kb2MueGlhb21pbmZvLmNvbS9dKGh0dHBzOi8vZG9jLnhpYW9taW5mby5jb20vKQoKKirpooTop4jlnLDlnYA6KiogW2h0dHBzOi8vZG9jLnhpYW9taW5mby5jb20vZGVtby9kb2MuaHRtbF0oaHR0cHM6Ly9kb2MueGlhb21pbmZvLmNvbS9kZW1vL2RvYy5odG1sKQoKKipEZW1v56S65L6LOioqIFtodHRwczovL2dpdGVlLmNvbS94aWFveW0vc3dhZ2dlci1ib290c3RyYXAtdWktZGVtb10oaHR0cHM6Ly9naXRlZS5jb20veGlhb3ltL3N3YWdnZXItYm9vdHN0cmFwLXVpLWRlbW8pCgoqKkRlbW/or7TmmI7vvJoqKiBbaHR0cHM6Ly9kb2MueGlhb21pbmZvLmNvbS9kb2NzL2FjdGlvbi9hY3Rpb24tc2ltcGxlXShodHRwczovL2RvYy54aWFvbWluZm8uY29tL2RvY3MvYWN0aW9uL2FjdGlvbi1zaW1wbGUpCgoqKuS9nOiAheS6pOa1ge+8mioqIOWFs+azqOWFrOS8l+WPtyJLbmlmZTRqIu+8jOeCueWHu+iPnOWNleKAnOS6pOa1gee+pOKAneiOt+WPluWKoOe+pOS6jOe7tOeggQoKCiFb6L6T5YWl5Zu+54mH6K+05piOXShodHRwczovL2ZvcnVkYS5naXRlZS5jb20vaW1hZ2VzLzE2NjEwNTM4Njc1Njk0ODAzMTAv5omr56CBX+aQnOe0ouiBlOWQiOS8oOaSreagt+W8jy3moIflh4boibLniYgucG5nICLmiavnoIFf5pCc57Si6IGU5ZCI5Lyg5pKt5qC35byPLeagh+WHhuiJsueJiC5wbmciKQoKCgoKIyMg54m55Yir5aOw5piOCgrkuI3nrqHmmK9rbmlmZTRq6L+Y5pivc3dhZ2dlci1ib290c3RyYXAtdWkKCuWvueWkluaPkOS+m+eahOWcsOWdgOS+neeEtuaYr2RvYy5odG1sCgrorr/pl67vvJpodHRwOi8vaXA6cG9ydC9kb2MuaHRtbAoK5Y2z5Y+v5p+l55yL5paH5qGjCgoqKui/meaYr+awuOi/nOS4jeS8muaUueWPmOeahCoqCgoKCiMjIOeVjOmdouaViOaenAoKIVvmjqXlj6Por7TmmI5dKHN0YXRpYy8xLnBuZykKCiFb5o6l5Y+j6LCD6K+VXShzdGF0aWMvOC5wbmcpCgogIAojIyDwn6SdIOeJueWIq+m4o+iwoiAKCi0g5oSf6LCiIFtKZXRCcmFpbnNdKGh0dHBzOi8vamIuZ2cvT3BlblNvdXJjZVN1cHBvcnQpIOaPkOS+m+eahOWFjei0ueW8gOa6kCBMaWNlbnNl77yaCgo8aW1nIHNyYz0iaHR0cHM6Ly9yZXNvdXJjZXMuamV0YnJhaW5zLmNvbS9zdG9yYWdlL3Byb2R1Y3RzL2NvbXBhbnkvYnJhbmQvbG9nb3MvamJfYmVhbS5wbmciICB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgLz4KCgo8aDIgYWxpZ249ImNlbnRlciI+CvCfkqogQ29udHJpYnV0b3JzIPCfkqoKPC9oMj4KCjxwIGFsaWduPSJjZW50ZXIiPgpPdXIgY29udHJpYnV0b3JzIGhhdmUgbWFkZSB0aGlzIHByb2plY3QgcG9zc2libGUuIFRoYW5rIHlvdSEg8J+Zjwo8L3A+CgogCjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS94aWFveW1pbi9rbmlmZTRqL2dyYXBocy9jb250cmlidXRvcnMiPgogIDxpbWcgc3JjPSJodHRwczovL2NvbnRyaWIucm9ja3MvaW1hZ2U/cmVwbz14aWFveW1pbi9rbmlmZTRqIiB3aWR0aD0iMTAwJSIvPgo8L2E+CjxkaXYgYWxpZ249ImNlbnRlciI+CjxzdWI+TWFkZSB3aXRoIDxhIGhyZWY9Imh0dHBzOi8vY29udHJpYi5yb2NrcyI+Y29udHJpYi5yb2NrczwvYT4uPC9zdWI+CjwvZGl2PgogCgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL3N0YXItaGlzdG9yeS5jb20vI3hpYW95bWluL2tuaWZlNGomRGF0ZSI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hcGkuc3Rhci1oaXN0b3J5LmNvbS9zdmc/cmVwb3M9eGlhb3ltaW4va25pZmU0aiZ0eXBlPURhdGUiIGFsdD0iU3RhciBIaXN0b3J5IENoYXJ0Ij4KICA8L2E+CjwvcD4K readmeEtag: '"71cfc0b45339fa88e06fa99776d7f8b68a1b5903"' readmeLastModified: Tue, 13 Aug 2024 02:24:00 GMT repositoryId: 88701696 description: Knife4j is a set of Swagger2 and OpenAPI3 All-in-one enhancement solution created: '2017-04-19T04:44:28Z' updated: '2026-02-06T01:52:22Z' language: HTML archived: false stars: 4482 watchers: 75 forks: 660 owner: xiaoymin logo: https://avatars.githubusercontent.com/u/7894406?v=4 license: Apache-2.0 repoEtag: '"f598d7140885df17ce18ce7560466bf8ea288adf2f383d7ff2aaf540050c39ad"' repoLastModified: Fri, 06 Feb 2026 01:52:22 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/apis-guru/openapi-directory v3: true repositoryMetadata: base64Readme: >- IVtiYW5uZXJdCgpbIVtBUElzIGluIGNvbGxlY3Rpb25dW251bUFwaXMtaW1hZ2VdXVthcGlzRGlyLWxpbmtdClshW09wZW5BUEkgZGVmaW5pdGlvbnNdW251bVNwZWNzLWltYWdlXV1bYXBpc0Rpci1saW5rXQpbIVtFbmRwb2ludHNdW2VuZHBvaW50cy1pbWFnZV1dW2FwaXNEaXItbGlua10KClshW1NoYXJlIG9uIFR3aXR0ZXJdW3R3aXR0ZXItaW1hZ2VdXVt0d2l0dGVyLWxpbmtdClshW0ZvbGxvdyBvbiBUd2l0dGVyXVt0d2l0dGVyRm9sbG93LWltYWdlXV1bdHdpdHRlckZvbGxvdy1saW5rXQo8YSBocmVmPSIjYmFja2VycyIgYWx0PSJzcG9uc29ycyBvbiBPcGVuIENvbGxlY3RpdmUiPjxpbWcgc3JjPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcGVuYXBpLWRpcmVjdG9yeS9iYWNrZXJzL2JhZGdlLnN2ZyIgLz48L2E+IDxhIGhyZWY9IiNzcG9uc29ycyIgYWx0PSJTcG9uc29ycyBvbiBPcGVuIENvbGxlY3RpdmUiPjxpbWcgc3JjPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcGVuYXBpLWRpcmVjdG9yeS9zcG9uc29ycy9iYWRnZS5zdmciIC8+PC9hPiA8YSBocmVmPSIjcGFydG5lcnMiIGFsdD0iUGFydG5lcnMgb24gT3BlbiBDb2xsZWN0aXZlIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3RvcnkvcGFydG5lci9iYWRnZS5zdmciIC8+PC9hPgoKRGlyZWN0b3J5IG9mIEFQSSBkZWZpbml0aW9ucyBpbiBbT3BlbkFQSShma2EgU3dhZ2dlcildKGh0dHBzOi8vb3BlbmFwaXMub3JnKSBbMi4wXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21haW4vdmVyc2lvbnMvMi4wLm1kKSBhbmQgWzMueF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMC4zLm1kKSBmb3JtYXRzLjxCUj4KQVBJIGFjY2VzcyB0byBjb2xsZWN0aW9uOiBbR28hXVthcGlEb2MtbGlua10gLSBXZSBhbHNvIGhhdmUgUlNTIGZlZWRzIGZvciBbYWRkZWRdKGh0dHBzOi8vYXBpLmFwaXMuZ3VydS92Mi9hZGRlZC5yc3MpIGFuZCBbdXBkYXRlZF0oaHR0cDovL2FwaS5hcGlzLmd1cnUvdjIvbGlzdC5yc3MpIEFQSXMuCgpbIVtBZGQgQVBJXVthZGRBUEktaW1hZ2VdXVthZGRBUEktbGlua10KCk91ciBnb2FsIGlzIHRvIGNyZWF0ZSB0aGUgbW9zdCBjb21wcmVoZW5zaXZlLCBzdGFuZGFyZHMtY29tcGxpYW50IGFuZCB1cC10by1kYXRlIGRpcmVjdG9yeSBvZiBtYWNoaW5lLXJlYWRhYmxlIEFQSSBkZWZpbml0aW9ucywgd2l0aCB0aGUgZm9sbG93aW5nIHByaW5jaXBsZXM6Ci0gT3BlbiBzb3VyY2UsIGNvbW11bml0eSBkcml2ZW4gcHJvamVjdC4KLSBPbmx5IHB1YmxpY2x5IGF2YWlsYWJsZSBBUElzIChmcmVlIG9yIHBhaWQpLgotIEFueW9uZSBjYW4gYWRkIG9yIGNoYW5nZSBhbiBBUEksIG5vdCBvbmx5IEFQSSBvd25lcnMuCi0gQWxsIGRhdGEgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggYSBbUkVTVCBBUEldW2FwaURvYy1saW5rXS4KCklmIHlvdSByZWZlcmVuY2UgdGhpcyBwcm9qZWN0IGFuZCB5b3UgbmVlZCBhbiBpY29uIG9yIGV2ZW4gYSBiYW5uZXIsIGNoZWNrIG91ciBbYnJhbmRpbmcgZ3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9BUElzLWd1cnUvYnJhbmRpbmcpLgoKQVBJcy5ndXJ1IHByb3ZpZGUgc2VydmljZXMgYW5kIGNvbnN1bHRhbmN5IGFyb3VuZCB0aGUgR3JhcGhRTCBhbmQgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBhbmQgQVBJcyBpbiBnZW5lcmFsLgpZb3UgY2FuIGNvbnRhY3QgdXMgYXQgZm91bmRlcnNAYXBpcy5ndXJ1CgpbIVtCZWNvbWUgYSBwYXJ0bmVyXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcGVuYXBpLWRpcmVjdG9yeS90aWVycy9wYXJ0bmVyLnN2Zz9hdmF0YXJIZWlnaHQ9MzYmd2lkdGg9NjAwKV0oaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3RvcnkpCgpXaGF0IGRvZXMgQVBJcy5ndXJ1IGRvPwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoqIEZpbHRlciBvdXQgcHJpdmF0ZSBhbmQgbm9uLXJlbGlhYmxlIEFQSXMKKiBDb252ZXJ0IG5vbi1PcGVuQVBJIGZvcm1hdHMgaW50byBPcGVuQVBJIDMueAoqIEZpeCBtaXN0YWtlcywgfjgwJSBvZiBkZWZpbml0aW9ucyBoYXZlIHNvbWUKKiBBZGQgYWRkaXRpb25hbCBkYXRhLCBsaWtlOiBsb2dvLCBjYXRlZ29yaWVzLCDigKYKKiBVcGRhdGUgZGVmaW5pdGlvbnMgb24gYXQgbGVhc3QgYSB3ZWVrbHkgYmFzaXMKCkFQSSBkZWZpbml0aW9uIGFjY2VwdGFuY2UgY3JpdGVyaWEKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoqIFB1YmxpYyAtIGFueW9uZSBjYW4gYWNjZXNzIGl0IGFzIGxvbmcgYXMgdGhleSBmb2xsb3cgc29tZSBjbGVhcmx5IGRlZmluZWQgc3RlcHMgKHN1YnNjcmliZSwgcGF5IGZlZXMsIGV0Yy4pLgoqIFBlcnNpc3RlbnQgLSBBUEkgaXMgbWFkZSB3aXRoIGxvbmctbGl2ZWQgZ29hbCwgYW5kIG5vdCBmb3IgYSBwYXJ0aWN1bGFyIGV2ZW50IChjb25mZXJlbmNlLCBoYWNrYXRob24sIGV0Yy4pLgoqIFVzZWZ1bCAtIEFQSSBzaG91bGQgcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25hbGl0eSBub3Qgb25seSBmb3IgaXRzIG93bmVyLgoKVXBkYXRlIHByb2NlZHVyZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBbGwgZGVmaW5pdGlvbnMgYXJlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZCBmcm9tIHRoZWlyIG9yaWdpbmFsIHNvdXJjZS4KWW91IGNhbiBzZWUgdGhpcyBpbiB0aGUgYHgtb3JpZ2luYCBwcm9wZXJ0eSB3aXRoaW4gZWFjaCBbb3BlbmFwaS55YW1sXShodHRwczovL2dpdGh1Yi5jb20vQVBJcy1ndXJ1L29wZW5hcGktZGlyZWN0b3J5L3NlYXJjaD91dGY4PSVFMiU5QyU5MyZxPXgtb3JpZ2luK2ZpbGVuYW1lJTNBb3BlbmFwaS55YW1sKSBvciBbc3dhZ2dlci55YW1sXShodHRwczovL2dpdGh1Yi5jb20vQVBJcy1ndXJ1L29wZW5hcGktZGlyZWN0b3J5L3NlYXJjaD91dGY4PSVFMiU5QyU5MyZxPXgtb3JpZ2luK2ZpbGVuYW1lJTNBc3dhZ2dlci55YW1sKSBmaWxlLgpXZSBydW4gb3VyIHVwZGF0ZSBzY3JpcHQgYXQgbGVhc3Qgd2Vla2x5IGFuZCBhdXRvbWF0aWNhbGx5IHJldmFsaWRhdGUgYmVmb3JlIGNvbW1pdHRpbmcuCklmIHlvdSBzZWUgc29tZSBBUElzIGFyZSBub3QgdXBkYXRlZCBmb3IgbW9yZSB0aGFuIDIgd2Vla3MgcGxlYXNlIG9wZW4gW2FuIGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20vQVBJcy1ndXJ1L29wZW5hcGktZGlyZWN0b3J5L2lzc3Vlcy9uZXcpLgoKW0BzZXJpb3VzbWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zZXJpb3VzbWUpIGtpbmRseSBydW5zIGEgYmFja3VwIHZhbGlkYXRpb24gcHJvY2VzcyBiYXNlZCBvbiB0aGUgb2ZmaWNpYWwgT3BlbkFQSS1TcGVjaWZpY2F0aW9uIFtKU09OIFNjaGVtYXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL3RyZWUvbWFpbi9zY2hlbWFzKSBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL3NlcmlvdXNtZS9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3IvYmxvYi9tYXN0ZXIvdGVzdC9yZWFsd29ybGQvZmFpbGVkLm1kI3Jlc3VsdHMtb2YtcmVhbC13b3JsZC10ZXN0aW5nKS4KCkV4aXN0aW5nIGludGVncmF0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKWyFbQmVjb21lIGEgYmFja2VyXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcGVuYXBpLWRpcmVjdG9yeS90aWVycy9iYWNrZXIuc3ZnP2F2YXRhckhlaWdodD0zNiZ3aWR0aD02MDApXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcGVuYXBpLWRpcmVjdG9yeSkKCiAtIFtIVFRQIFRvb2xraXRdKGh0dHBzOi8vaHR0cHRvb2xraXQudGVjaC8pICoqQmVhdXRpZnVsICYgb3Blbi1zb3VyY2UgdG9vbHMgdG8gZGVidWcsIHRlc3QgYW5kIGRldmVsb3Agd2l0aCBIVFRQKFMpKioKIC0gW09wZW5BUEktRGlyZWN0b3J5LUpTXShodHRwczovL2dpdGh1Yi5jb20vaHR0cHRvb2xraXQvb3BlbmFwaS1kaXJlY3RvcnktanMpIC0gVGhlIE9wZW5BUEkgZGlyZWN0b3J5IHByZWNvbXBpbGVkICYgaW5kZXhlZCBmb3IgSlMgdXNhZ2UgJiBzZWFyY2hpbmcKIC0gW0FwaWRlY2tdKGh0dHBzOi8vYXBpZGVjay5jb20pIC0gRmFzdGVyIGRhdGEgaW50ZWdyYXRpb24gdGhyb3VnaCBVbmlmaWVkIEFQSXMKIC0gW01pY3Jvc29mdCBLaW90YV0oaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2tpb3RhLykgLSBHZW5lcmF0ZSBhbiBBUEkgY2xpZW50IHRvIGNhbGwgYW55IE9wZW5BUEkgZGVzY3JpYmVkIEFQSQogLSBbQVBJIFRyYWNrZXJdKGh0dHBzOi8vYXBpdHJhY2tlci5pby8pIC0gQWdncmVnYXRlcyAxNCwwMDArIEFQSXMsIFNES3MsIEFQSSBzcGVjaWZpY2F0aW9ucywgaW50ZWdyYXRpb25zIGFuZCBEWCBwcm9maWxlcy4gSXQgYWltcyB0byBoZWxwIGRldmVsb3BlcnMgYWNjZXNzIHRoZSBpbmZvcm1hdGlvbiB0aGV5IG5lZWQgdG8gaW50ZWdyYXRlIEFQSXMgZmFzdGVyCiAtIFtBUEkgV2F0Y2hdKGh0dHBzOi8vd3d3LmFwaXdhdGNoLmlvKSAtIEtlZXAgdHJhY2sgb2YgdGhlIEFQSXMgeW91IHVzZQogLSBodHRwczovL3BpcGVkcmVhbS5jb20vIC0gVGhlIGludGVncmF0aW9uIHBsYXRmb3JtIGJ1aWx0IGZvciBkZXZlbG9wZXJzCiAtIGh0dHBzOi8vYW55LWFwaS5jb20gLSBEb2N1bWVudGF0aW9uIGFuZCBUZXN0IENvbnNvbGVzIGZvciBQdWJsaWMgQVBJcwogLSBodHRwczovL2RhdGFmaXJlLmlvIC0gQWxsb3dzIHlvdSB0byBwcm9jZXNzIGFuZCB0cmFuc2ZlciBkYXRhIGJldHdlZW4gQVBJcywgZGF0YWJhc2VzLCBhbmQgbW9yZQogLSBbaHR0cHM6Ly9zZGtzLmlvXShodHRwczovL3Nka3MuaW8vU2VhcmNoL0ZpbmRTREtzP0JyaWRnZT1BUElzLmd1cnUpIC0gRXhwbG9yZSBBdXRvbWF0aWNhbGx5IEdlbmVyYXRlZCBTREtzCiAtIFtodHRwczovL2Nlbml0LmlvXShodHRwczovL2Nlbml0LmlvL2RpcmVjdG9yeT9zcGVjPXN3YWdnZXIpIC0gRGF0YSBpbnRlZ3JhdGlvbiBwbGF0Zm9ybQogLSBbY29tbWFuZGNhcl0oaHR0cHM6Ly9naXRodWIuY29tL3Rpa2Fsay9jb21tYW5kY2FyI2luc3RhbGxpbmctZnJvbS1hcGktbW9kZWxzKSAtIEN1cmwgb24gc3Rlcm9pZHMKIC0gW01hdGVyaWFsIFN3YWdnZXIgVUkgSHViXShodHRwczovL2Rhcm9zaC5naXRodWIuaW8vYW5ndWxhci1zd2FnZ2VyLXVpLW1hdGVyaWFsL2h1Yi8pIC0gdGVzdGluZyBhbmQgZXhwbG9yaW5nIGh1YiBmb3IgTWF0ZXJpYWwgU3dhZ2dlciBVSSBkZW1vCiAtIFtQYXddKGh0dHBzOi8vcGF3LmNsb3VkLykgLSBIVFRQIGNsaWVudCBmb3IgTWFjIC0gWW91IGNhbiBpbXBvcnQgZGVmaW5pdGlvbnMgYW5kIGRpcmVjdGx5IHBsYXkgd2l0aCB0aGUgQVBJcywgW3NlZSBob3ddKGh0dHBzOi8vcGF3LmNsb3VkL2RvY3MvZXhhbXBsZXMvc2VhcmNoLWFwaXMpCiAtIFtCaXRzY29vcF0oaHR0cHM6Ly9iaXRzY29vcC5jb20vKSAtIEEgYmV0dGVyIHdheSB0byBjcmVhdGUgYW5kIG1haW50YWluIGludGVncmF0aW9ucwogLSBbV2luU3dhZ10oaHR0cHM6Ly9naXRodWIuY29tL1N2ZW5FVi9XaW5Td2FnKSAtIEEgVVdQIGFwcCBmb3IgbG9hZGluZyBTd2FnZ2VyIGRlZmluaXRpb25zIGFuZCBleHBsb3JpbmcgUkVTVCBBUElzCiAtIFtSZWFkTWUuaW9dKGh0dHBzOi8vcHJldmlldy5yZWFkbWUuaW8pIC0gQmVhdXRpZnVsLCBwZXJzb25hbGl6ZWQsIGludGVyYWN0aXZlIGRldmVsb3BlciBodWJzCiAtIFtWZWxvc2ltb10oaHR0cHM6Ly9jb25uZWN0LnZlbG9zaW1vLmlvL29wZW5fYXBpX2RpcmVjdG9yeSkgLSBJbnRlZ3JhdGlvbiBwbGF0Zm9ybSBmb3IgZUdvdmVybm1lbnQKIC0gW01vY2tjb29uXShodHRwczovL21vY2tvb24uY29tL21vY2stc2FtcGxlcy9jYXRlZ29yeS9hbGwvKSAtIEFQSSBtb2NrIHNhbXBsZXMgZm9yIHlvdXIgcHJvamVjdAoKQWxzbyB1c2VkIGFzIHRlc3Qgc3VpdGUgaW4gdGhlIGZvbGxvd2luZyBwcm9qZWN0czoKIC0gW1NwZWFrZWFzeV0oaHR0cHM6Ly93d3cuc3BlYWtlYXN5YXBpLmRldi8/dXRtX3NvdXJjZT1hcGlndXJ1cytyZXBvJnV0bV9tZWRpdW09Z2l0aHViK3Nwb25zb3JzaGlwKSAtICoqR2VuZXJhdGUgU0RLcyBOb3cuIEdpdmVzIHlvdXIgdXNlcnMgdGhlIERldkV4IHRoYXQgbWFrZXMgQVBJIGludGVncmF0aW9ucyBlYXN5KioKIC0gW1JlRG9jXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvYykgLSBPcGVuQVBJLWdlbmVyYXRlZCBBUEkgUmVmZXJlbmNlIERvY3VtZW50YXRpb24KIC0gW3N3YWdnZXItcGFyc2VyXShodHRwczovL2dpdGh1Yi5jb20vQmlnc3RpY2tDYXJwZXQvc3dhZ2dlci1wYXJzZXIpIC0gT3BlbkFQSSBwYXJzZXIgYW5kIHZhbGlkYXRvciBmb3IgTm9kZSBhbmQgYnJvd3NlcnMKIC0gW09wZW5BUEktc2NoZW1hLXZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL3NlcmlvdXNtZS9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3IpIC0gT3BlbkFwaSBzY2hlbWEgdmFsaWRhdGlvbiBmb3IgT3BlbkFwaSB2ZXJzaW9ucyB2MiwgdjMuMC54IGFuZCB2My4xLngKIC0gW1N3YWdnZXJQcm92aWRlcl0oaHR0cHM6Ly9naXRodWIuY29tL3NlcmdleS10aWhvbi9Td2FnZ2VyUHJvdmlkZXIpIC0gRiMgVHlwZSBQcm92aWRlciBmb3IgU3dhZ2dlcgogLSBbYXJkb3Etc3dhZ2dlci1hZGRvbl0oaHR0cHM6Ly9naXRodWIuY29tL2FyZG9xL2FyZG9xLXN3YWdnZXItYWRkb24pIC0gQXJkb3EgT3BlbkFQSSBhZGRvbgogLSBbc3dhZ3ZhbGldKGh0dHBzOi8vZ2l0aHViLmNvbS9zdWJlZXNoY2JhYnUvc3dhZ3ZhbGkvKSAtIE1vZHVsZSB0byBidWlsZCB2YWxpZGF0b3JzIGZvciBPcGVuQVBJIFJlcXVlc3QgcGFyYW1ldGVycyBhbmQgUmVzcG9uc2Ugb2JqZWN0cwogLSBbc3dhZ2dlci1zZWFyY2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9JRy1Hcm91cC9zd2FnZ2VyLXNlYXJjaCkgLSBBbiBhcHBsaWNhdGlvbiB0aGF0IGNvbGxlY3RzIGFuZCBpbmRleGVzIHN3YWdnZXIgZG9jcyBmcm9tIHlvdXIgbWljcm9zZXJ2aWNlcyBhcmNoaXRlY3R1cmUKCgpJbnRlZ3JhdGlvbiB3aXRoIDNyZC1wYXJ0eSBzZXJ2aWNlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpXZSBkaXNjb3VyYWdlIHlvdSBmcm9tIHVzaW5nIEdpdGh1YiBSQVcgbGlua3Mgb3IgR2l0IGRpcmVjdGx5LCB0aGUgcmVwb3NpdG9yeSBzdHJ1Y3R1cmUgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgpJbnN0ZWFkLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQgeW91IHRvIHVzZSBvdXIgW1JFU1QgQVBJXVthcGlEb2MtbGlua10uCgpMaWNlbnNlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBbGwgQVBJIGRlZmluaXRpb25zIGNvbnRyaWJ1dGVkIHRvIHByb2plY3QgYnkgYXV0aG9ycyBhcmUgY292ZXJlZCBieSB0aGUgW0NDMDEuMF0oaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8pIGxpY2Vuc2UuPGJyPgpBbGwgQVBJIGRlZmluaXRpb25zIGFjcXVpcmVkIGZyb20gcHVibGljIHNvdXJjZXMgdW5kZXIgdGhlIFtGYWlyIHVzZV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWlyX3VzZSkgcHJpbmNpcGxlLgoKRGVmaW5pdGlvbiBzb3VyY2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClNvbWUgZGVmaW5pdGlvbnMgYXJlIHRha2VuIGZyb20gT3BlbiBTb3VyY2UgcHJvamVjdHM6CiAtIFtkYXJrbHlueC9zd2FnZ2VyLWFwaS1jb2xsZWN0aW9uXShodHRwczovL2dpdGh1Yi5jb20vZGFya2x5bngvc3dhZ2dlci1hcGktY29sbGVjdGlvbikgLSBPcGVuQVBJIGRlc2NyaXB0aW9uIGZvciBJbnN0YWdyYW0gQVBJCiAtIFtNZXJtYWRlL2JiY2FwaXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL2JiY2FwaXMpIC0gT3BlbkFQSSBkZWZpbml0aW9ucyBmb3IgdGhlIEJCQyBOaXRybyBhbmQgaUJMIEFQSXMKIC0gW2FtYXJkZXNoYmQvbWVkaXVtLWFwaS1zcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vYW1hcmRlc2hiZC9tZWRpdW0tYXBpLXNwZWNpZmljYXRpb24pIC0gT3BlbkFQSSAyLjAgZGVzY3JpcHRpb24gZm9yIE1lZGl1bSBBUEkKIC0gW2ZhcmFnb3JuL29wZW4tYXBpLXNwZWNzXShodHRwczovL2dpdGh1Yi5jb20vZmFyYWdvcm4vb3Blbi1hcGktc3BlY3MpIC0gT3BlbkFQSSBkZWZpbml0aW9uIGZvciB0aGUgR2lwaHkgQVBJCgpbYmFubmVyXTogaHR0cHM6Ly9hcGlzLmd1cnUvYnJhbmRpbmcvYmFubmVyLnN2ZyAiQVBJcy5ndXJ1IgpbdHdpdHRlci1pbWFnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdHdpdHRlci91cmwvaHR0cC9BUElzLmd1cnUuc3ZnP3N0eWxlPXNvY2lhbApbdHdpdHRlci1saW5rXTogaHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQ/dGV4dD1odHRwJTNBJTJGJTJGQVBJcy5ndXJ1JTIwLSUyMFdpa2lwZWRpYSUyMGZvciUyMCUyM1dlYiUyMCUyM0FQSXMlMjBieSUyMEBBUElzX2d1cnUlMjBwaWMudHdpdHRlci5jb20vVWhsaGJNdzFOUApbdHdpdHRlckZvbGxvdy1pbWFnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdHdpdHRlci9mb2xsb3cvQVBJc19ndXJ1LnN2Zz9zdHlsZT1zb2NpYWwKW3R3aXR0ZXJGb2xsb3ctbGlua106IGh0dHBzOi8vdHdpdHRlci5jb20vaW50ZW50L2ZvbGxvdz9zY3JlZW5fbmFtZT1BUElzX2d1cnUKW251bUFwaXMtaW1hZ2VdOiBodHRwczovL2FwaS5hcGlzLmd1cnUvYmFkZ2VzL2FwaXNfaW5fY29sbGVjdGlvbi5zdmcKW251bVNwZWNzLWltYWdlXTogaHR0cHM6Ly9hcGkuYXBpcy5ndXJ1L2JhZGdlcy9vcGVuYXBpX3NwZWNzLnN2ZwpbZW5kcG9pbnRzLWltYWdlXTogaHR0cHM6Ly9hcGkuYXBpcy5ndXJ1L2JhZGdlcy9lbmRwb2ludHMuc3ZnClthcGlzRGlyLWxpbmtdOiAuL0FQSXMKW2FkZEFQSS1pbWFnZV06IGh0dHBzOi8vY2xvdWQuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Fzc2V0cy84MzM2MTU3LzE1ODYxNjE0LzdlMzE1MTFhLTJjZDUtMTFlNi04Yjc5LTM4YWQwZjYxZTU5OC5wbmcKW2FkZEFQSS1saW5rXTogaHR0cHM6Ly9hcGlzLmd1cnUvYWRkLWFwaS8KW2FwaURvYy1saW5rXTogaHR0cHM6Ly9hcGlzLmd1cnUvYXBpLWRvYy8KCiMjIENvbnRyaWJ1dG9ycwoKVGhpcyBwcm9qZWN0IGV4aXN0cyB0aGFua3MgdG8gYWxsIHRoZSBwZW9wbGUgd2hvIFtjb250cmlidXRlXShDT05UUklCVVRJTkcubWQpLgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQVBJcy1ndXJ1L29wZW5hcGktZGlyZWN0b3J5L2dyYXBocy9jb250cmlidXRvcnMiPjxpbWcgc3JjPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcGVuYXBpLWRpcmVjdG9yeS9jb250cmlidXRvcnMuc3ZnP3dpZHRoPTg5MCZidXR0b249ZmFsc2UiIC8+PC9hPgoKIyMgQXN5bmNocm9ub3VzIEFQSXMKClNlZSBhbHNvIFtBc3luY0FQSS1EaXJlY3RvcnldKGh0dHBzOi8vYXBpcy5ndXJ1L2FzeW5jYXBpLWRpcmVjdG9yeS9BUElzLykKCiMjIEJhY2tlcnMKClRoYW5rIHlvdSB0byBhbGwgb3VyIGJhY2tlcnMhIPCfmY8gW0JlY29tZSBhIGJhY2tlcl0oaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3RvcnkjYmFja2VyKS4KCjxhIGhyZWY9Imh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL29wZW5hcGktZGlyZWN0b3J5I2JhY2tlcnMiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3RvcnkvYmFja2Vycy5zdmc/d2lkdGg9ODkwIj48L2E+CgoKIyMgU3BvbnNvcnMKClN1cHBvcnQgdGhpcyBwcm9qZWN0IGJ5IGJlY29taW5nIGEgc3BvbnNvci4gWW91ciBsb2dvIHdpbGwgc2hvdyB1cCBoZXJlIHdpdGggYSBsaW5rIHRvIHlvdXIgd2Vic2l0ZS4gW0JlY29tZSBhIHNwb25zb3JdKGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL29wZW5hcGktZGlyZWN0b3J5I3Nwb25zb3IpLgoKPGEgaHJlZj0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci8wL3dlYnNpdGUiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci8wL2F2YXRhci5zdmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci8xL3dlYnNpdGUiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci8xL2F2YXRhci5zdmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci8yL3dlYnNpdGUiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci8yL2F2YXRhci5zdmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci8zL3dlYnNpdGUiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci8zL2F2YXRhci5zdmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci80L3dlYnNpdGUiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci80L2F2YXRhci5zdmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci81L3dlYnNpdGUiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci81L2F2YXRhci5zdmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci82L3dlYnNpdGUiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci82L2F2YXRhci5zdmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci83L3dlYnNpdGUiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci83L2F2YXRhci5zdmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci84L3dlYnNpdGUiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci84L2F2YXRhci5zdmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci85L3dlYnNpdGUiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaS1kaXJlY3Rvcnkvc3BvbnNvci85L2F2YXRhci5zdmciPjwvYT4KCiMjIFBhcnRuZXJzCgpTdXBwb3J0IHRoaXMgcHJvamVjdCBieSBiZWNvbWluZyBhIHBhcnRuZXIuIFlvdXIgbG9nbyB3aWxsIGJlIGRpc3BsYXllZCBwcm9taW5lbnRseSBpbiB0aGlzIHByb2plY3QgYW5kIHdlIHdpbGwgd29yayB3aXRoIHlvdSB0byBwdWJsaWNpc2UgYW5kIHNob3djYXNlIHlvdXIgcHJvamVjdHMuIFtCZWNvbWUgYSBwYXJ0bmVyXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcGVuYXBpLWRpcmVjdG9yeSNwYXJ0bmVyKS4K readmeEtag: '"11ced47fb43727ccddd2633ba19da4308ec90b84"' readmeLastModified: Sat, 23 Aug 2025 21:25:15 GMT repositoryId: 31177593 description: >- 🌐 Wikipedia for Web APIs. Directory of REST API definitions in OpenAPI 2.0/3.x format created: '2015-02-22T19:58:12Z' updated: '2026-02-03T15:34:20Z' language: null archived: false stars: 4355 watchers: 111 forks: 656 owner: APIs-guru logo: https://avatars.githubusercontent.com/u/10975548?v=4 license: CC0-1.0 repoEtag: '"96d50b522873474eb3f33a9cd8e4fda4d281c5a61b6a688dee4923ec478a6fbe"' repoLastModified: Tue, 03 Feb 2026 15:34:20 GMT foundInMaster: true category: SDK id: 667f2aef78d9d19418fbd6c0a7835abb - source: openapi3 tags name: springdoc-openapi homepage: https://github.com/springdoc/springdoc-openapi language: Java source_description: >- Library that produces OpenAPI 3.x specification documentation for spring-boot applications. category: - Low-level Tooling - Server Implementations repository: https://github.com/springdoc/springdoc-openapi v3: true repositoryMetadata: base64Readme: >- IVtPY3RvY2F0XShodHRwczovL3NwcmluZ2RvYy5vcmcvaW1nL2Jhbm5lci1sb2dvLnN2ZykKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2NpLWNkLnNwcmluZ2RvYy5vcmc6ODQ0My9idWlsZFN0YXR1cy9pY29uP2pvYj1zcHJpbmdkb2Mtb3BlbmFwaS1zdGFydGVyLUlDKV0oaHR0cHM6Ly9jaS1jZC5zcHJpbmdkb2Mub3JnOjg0NDMvdmlldy9zcHJpbmdkb2Mtb3BlbmFwaS9qb2Ivc3ByaW5nZG9jLW9wZW5hcGktc3RhcnRlci1JQy8pClshW1F1YWxpdHkgR2F0ZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9c3ByaW5nZG9jX3NwcmluZ2RvYy1vcGVuYXBpJm1ldHJpYz1hbGVydF9zdGF0dXMpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPXNwcmluZ2RvY19zcHJpbmdkb2Mtb3BlbmFwaSkKWyFbS25vd24gVnVsbmVyYWJpbGl0aWVzXShodHRwczovL3NueWsuaW8vdGVzdC9naXRodWIvc3ByaW5nZG9jL3NwcmluZ2RvYy1vcGVuYXBpLmdpdC9iYWRnZS5zdmcpXShodHRwczovL3NueWsuaW8vdGVzdC9naXRodWIvc3ByaW5nZG9jL3NwcmluZ2RvYy1vcGVuYXBpLmdpdCkKWyFbU3RhY2sgRXhjaGFuZ2UgcXVlc3Rpb25zXShodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YWNrZXhjaGFuZ2Uvc3RhY2tvdmVyZmxvdy90L3NwcmluZ2RvYyldKGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zL3RhZ2dlZC9zcHJpbmdkb2M/dGFiPVZvdGVzKQoKSU1QT1JUQU5UOiBgYHNwcmluZ2RvYy1vcGVuYXBpIHYxLjguMGBgIGlzIHRoZSBsYXRlc3QgT3BlbiBTb3VyY2UgcmVsZWFzZSBzdXBwb3J0aW5nClNwcmluZyBCb290IDIueCBhbmQgMS54LgoKQW4gZXh0ZW5kZWQgc3VwcG9ydCBmb3IgWypzcHJpbmdkb2Mtb3BlbmFwaSB2MSpdKGh0dHBzOi8vc3ByaW5nZG9jLm9yZy92MSkKcHJvamVjdCBpcyBub3cgYXZhaWxhYmxlIGZvciBvcmdhbml6YXRpb25zIHRoYXQgbmVlZCBzdXBwb3J0IGJleW9uZCAyMDIzLgoKRm9yIG1vcmUgZGV0YWlscywgZmVlbCBmcmVlIHRvIHJlYWNoCm91dDogW3NhbGVzQHNwcmluZ2RvYy5vcmddKG1haWx0bzpzYWxlc0BzcHJpbmdkb2Mub3JnKQoKYGBzcHJpbmdkb2Mtb3BlbmFwaWBgIGlzIG9uIFtPcGVuIENvbGxlY3RpdmVdKGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL3NwcmluZ2RvYykuIElmCnlvdSDinaTvuI8gdGhpcyBwcm9qZWN0IGNvbnNpZGVyIGJlY29taW5nIGEgW3Nwb25zb3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9zcHJpbmdkb2MpLgoKVGhpcyBwcm9qZWN0IGlzIHNwb25zb3JlZCBieQoKPHAgYWxpZ249ImNlbnRlciI+CjxhIGhyZWY9Imh0dHBzOi8vb3BlbnNvdXJjZS5tZXJjZWRlcy1iZW56LmNvbS8iIHRhcmdldD0iX2JsYW5rIj4KICAgIDxpbWcgc3JjPSJodHRwczovL3NwcmluZ2RvYy5vcmcvaW1nL21lcmNlZGVzLWJlbnoucG5nIiBoZWlnaHQ9IjEwJSIgd2lkdGg9IjEwJSIgLz4KPC9hPgombmJzcDsmbmJzcDsKCjxhIGhyZWY9Imh0dHBzOi8vd3d3LmRtLWpvYnMuY29tL2RtVEVDSC8/bG9jYWxlPWRlX0RFJnd0X21jPS5kaXNwbGF5LmdpdGh1Yi5zcG9uc29yaW5nLmxvZ28iIHRhcmdldD0iX2JsYW5rIj4KICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9zcHJpbmdkb2Mub3JnL2ltZy9kbVRFQ0hfTG9nby5qcGciIGhlaWdodD0iMTAlIiB3aWR0aD0iMTAlIiAvPgo8L2E+Cgo8YSBocmVmPSJodHRwczovL3d3dy5jb250cmFzdHNlY3VyaXR5LmNvbS8iIHRhcmdldD0iX2JsYW5rIj4KICAgPGltZyBzcmM9Imh0dHBzOi8vc3ByaW5nZG9jLm9yZy9pbWcvY29udHJhc3RzZWN1cml0eS5zdmciIGhlaWdodD0iMTAlIiB3aWR0aD0iMzAlIiAvPgo8L2E+CgogPGEgaHJlZj0iaHR0cHM6Ly93d3cubHZtLmRlLyIgdGFyZ2V0PSJfYmxhbmsiPgogICA8aW1nIHNyYz0iaHR0cHM6Ly9zcHJpbmdkb2Mub3JnL2ltZy9MVk1fVmVyc2ljaGVydW5nXzIwMTBfbG9nby5zdmcucG5nIiBoZWlnaHQ9IjEwJSIgd2lkdGg9IjI1JSIgLz4KICA8L2E+CiA8YSBocmVmPSJodHRwczovL2dkbmV4dC5jb20vIiB0YXJnZXQ9Il9ibGFuayI+CiAgIDxpbWcgc3JjPSJodHRwczovL3NwcmluZ2RvYy5vcmcvaW1nL2dkbmV4dC5wbmciIGhlaWdodD0iMTAlIiB3aWR0aD0iMTAlIiAvPgogIDwvYT4KPC9wPgoKIyBUYWJsZSBvZiBDb250ZW50cwoKLSBbRnVsbCBkb2N1bWVudGF0aW9uXSgjZnVsbC1kb2N1bWVudGF0aW9uKQotIFsqKkludHJvZHVjdGlvbioqXSgjaW50cm9kdWN0aW9uKQotIFsqKkdldHRpbmcgU3RhcnRlZCoqXSgjZ2V0dGluZy1zdGFydGVkKQogICAgLSBbTGlicmFyeSBmb3Igc3ByaW5nZG9jLW9wZW5hcGkgaW50ZWdyYXRpb24gd2l0aCBzcHJpbmctYm9vdCBhbmQgc3dhZ2dlci11aV0oI2xpYnJhcnktZm9yLXNwcmluZ2RvYy1vcGVuYXBpLWludGVncmF0aW9uLXdpdGgtc3ByaW5nLWJvb3QtYW5kLXN3YWdnZXItdWkpCiAgICAtIFtTcHJpbmctYm9vdCB3aXRoIE9wZW5BUEkgRGVtbyBhcHBsaWNhdGlvbnMuXSgjc3ByaW5nLWJvb3Qtd2l0aC1vcGVuYXBpLWRlbW8tYXBwbGljYXRpb25zKQogICAgICAgIC0gW1NvdXJjZSBDb2RlIGZvciBEZW1vIEFwcGxpY2F0aW9ucy5dKCNzb3VyY2UtY29kZS1mb3ItZGVtby1hcHBsaWNhdGlvbnMpCiAgICAgICAgLSBbRGVtbyBTcHJpbmcgQm9vdCAyIFdlYiBNVkMgd2l0aCBPcGVuQVBJIDMuXSgjZGVtby1zcHJpbmctYm9vdC0yLXdlYi1tdmMtd2l0aC1vcGVuYXBpLTMpCiAgICAgICAgLSBbRGVtbyBTcHJpbmcgQm9vdCAyIFdlYkZsdXggd2l0aCBPcGVuQVBJIDMuXSgjZGVtby1zcHJpbmctYm9vdC0yLXdlYmZsdXgtd2l0aC1vcGVuYXBpLTMpCiAgICAgICAgLSBbRGVtbyBTcHJpbmcgQm9vdCAyIFdlYkZsdXggd2l0aCBGdW5jdGlvbmFsIGVuZHBvaW50cyBPcGVuQVBJIDMuXSgjZGVtby1zcHJpbmctYm9vdC0yLXdlYmZsdXgtd2l0aC1mdW5jdGlvbmFsLWVuZHBvaW50cy1vcGVuYXBpLTMpCiAgICAgICAgLSBbRGVtbyBTcHJpbmcgQm9vdCAyIGFuZCBTcHJpbmcgSGF0ZW9hcyB3aXRoIE9wZW5BUEkgMy5dKCNkZW1vLXNwcmluZy1ib290LTItYW5kLXNwcmluZy1oYXRlb2FzLXdpdGgtb3BlbmFwaS0zKQogICAgLSBbSW50ZWdyYXRpb24gb2YgdGhlIGxpYnJhcnkgaW4gYSBTcHJpbmcgQm9vdCAzLnggcHJvamVjdCB3aXRob3V0IHRoZSBzd2FnZ2VyLXVpOl0oI2ludGVncmF0aW9uLW9mLXRoZS1saWJyYXJ5LWluLWEtc3ByaW5nLWJvb3QtM3gtcHJvamVjdC13aXRob3V0LXRoZS1zd2FnZ2VyLXVpKQogICAgLSBbRXJyb3IgSGFuZGxpbmcgZm9yIFJFU1QgdXNpbmcgQENvbnRyb2xsZXJBZHZpY2VdKCNlcnJvci1oYW5kbGluZy1mb3ItcmVzdC11c2luZy1jb250cm9sbGVyYWR2aWNlKQogICAgLSBbQWRkaW5nIEFQSSBJbmZvcm1hdGlvbiBhbmQgU2VjdXJpdHkgZG9jdW1lbnRhdGlvbl0oI2FkZGluZy1hcGktaW5mb3JtYXRpb24tYW5kLXNlY3VyaXR5LWRvY3VtZW50YXRpb24pCiAgICAtIFtzcHJpbmctd2ViZmx1eCBzdXBwb3J0IHdpdGggQW5ub3RhdGVkIENvbnRyb2xsZXJzXSgjc3ByaW5nLXdlYmZsdXgtc3VwcG9ydC13aXRoLWFubm90YXRlZC1jb250cm9sbGVycykKICAgIC0gW1VzaW5nIGEgc2VwYXJhdGUgbWFuYWdlbWVudCBwb3J0IChTcHJpbmcgQm9vdCAzKV0oI3VzaW5nLWEtc2VwYXJhdGUtbWFuYWdlbWVudC1wb3J0LXNwcmluZy1ib290LTMpCiAgICAtIFtXaGVuIFNwcmluZyBTZWN1cml0eSBpcyBlbmFibGVkXSgjd2hlbi1zcHJpbmctc2VjdXJpdHktaXMtZW5hYmxlZCkKLSBbQWNrbm93bGVkZ2VtZW50c10oI2Fja25vd2xlZGdlbWVudHMpCiAgICAtIFtDb250cmlidXRvcnNdKCNjb250cmlidXRvcnMpCiAgICAtIFtBZGRpdGlvbmFsIFN1cHBvcnRdKCNhZGRpdGlvbmFsLXN1cHBvcnQpCgojIFtGdWxsIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vc3ByaW5nZG9jLm9yZy8pCgojICoqSW50cm9kdWN0aW9uKioKClRoZSBzcHJpbmdkb2Mtb3BlbmFwaSBKYXZhIGxpYnJhcnkgaGVscHMgYXV0b21hdGluZyB0aGUgZ2VuZXJhdGlvbiBvZiBBUEkgZG9jdW1lbnRhdGlvbgp1c2luZyBTcHJpbmcgQm9vdCBwcm9qZWN0cy4Kc3ByaW5nZG9jLW9wZW5hcGkgd29ya3MgYnkgZXhhbWluaW5nIGFuIGFwcGxpY2F0aW9uIGF0IHJ1bnRpbWUgdG8gaW5mZXIgQVBJIHNlbWFudGljcwpiYXNlZCBvbiBTcHJpbmcgY29uZmlndXJhdGlvbnMsIGNsYXNzIHN0cnVjdHVyZSBhbmQgdmFyaW91cyBhbm5vdGF0aW9ucy4KClRoZSBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzIGRvY3VtZW50YXRpb24gaW4gSlNPTi9ZQU1MIGFuZCBIVE1MIGZvcm1hdHRlZCBwYWdlcy4KVGhlIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uIGNhbiBiZSBjb21wbGVtZW50ZWQgdXNpbmcgYHN3YWdnZXItYXBpYCBhbm5vdGF0aW9ucy4KClRoaXMgbGlicmFyeSBzdXBwb3J0czoKCiogT3BlbkFQSSAzCiogU3ByaW5nLWJvb3QgdjMgKEphdmEgMTcgJiBKYWthcnRhIEVFIDkpCiogSlNSLTMwMywgc3BlY2lmaWNhbGx5IGZvciBATm90TnVsbCwgQE1pbiwgQE1heCwgYW5kIEBTaXplLgoqIFN3YWdnZXItdWkKKiBPQXV0aCAyCiogR3JhYWxWTSBuYXRpdmUgaW1hZ2VzCgpUaGUgZm9sbG93aW5nIHZpZGVvIGludHJvZHVjZXMgdGhlIExpYnJhcnk6CgoqIFtodHRwczovL3lvdXR1LmJlL3V0Unh5UGZGbER3XShodHRwczovL3lvdXR1LmJlL3V0Unh5UGZGbER3KQoKRm9yICpzcHJpbmctYm9vdCB2Myogc3VwcG9ydCwgbWFrZSBzdXJlIHlvdQp1c2UgW3NwcmluZ2RvYy1vcGVuYXBpIHYyXShodHRwczovL3NwcmluZ2RvYy5vcmcvKQoKVGhpcyBpcyBhIGNvbW11bml0eS1iYXNlZCBwcm9qZWN0LCBub3QgbWFpbnRhaW5lZCBieSB0aGUgU3ByaW5nIEZyYW1ld29yayBDb250cmlidXRvcnMgKApQaXZvdGFsKQoKIyAqKkdldHRpbmcgU3RhcnRlZCoqCgojIyBMaWJyYXJ5IGZvciBzcHJpbmdkb2Mtb3BlbmFwaSBpbnRlZ3JhdGlvbiB3aXRoIHNwcmluZy1ib290IGFuZCBzd2FnZ2VyLXVpCgoqIEF1dG9tYXRpY2FsbHkgZGVwbG95cyBzd2FnZ2VyLXVpIHRvIGEgU3ByaW5nIEJvb3QgMy54IGFwcGxpY2F0aW9uCiogRG9jdW1lbnRhdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBpbiBIVE1MIGZvcm1hdCwgdXNpbmcgdGhlCiAgb2ZmaWNpYWwgW3N3YWdnZXItdWkgamFyc10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkuZ2l0KS4KKiBUaGUgU3dhZ2dlciBVSSBwYWdlIHNob3VsZCB0aGVuIGJlIGF2YWlsYWJsZSBhdCBodHRwOi8vc2VydmVyOgogIHBvcnQvY29udGV4dC1wYXRoL3N3YWdnZXItdWkuaHRtbCBhbmQgdGhlIE9wZW5BUEkgZGVzY3JpcHRpb24gd2lsbCBiZSBhdmFpbGFibGUgYXQgdGhlCiAgZm9sbG93aW5nIHVybCBmb3IganNvbiBmb3JtYXQ6IGh0dHA6Ly9zZXJ2ZXI6cG9ydC9jb250ZXh0LXBhdGgvdjMvYXBpLWRvY3MKICAgICogYHNlcnZlcmA6IFRoZSBzZXJ2ZXIgbmFtZSBvciBJUAogICAgKiBgcG9ydGA6IFRoZSBzZXJ2ZXIgcG9ydAogICAgKiBgY29udGV4dC1wYXRoYDogVGhlIGNvbnRleHQgcGF0aCBvZiB0aGUgYXBwbGljYXRpb24KKiBEb2N1bWVudGF0aW9uIGNhbiBiZSBhdmFpbGFibGUgaW4geWFtbCBmb3JtYXQgYXMgd2VsbCwgb24gdGhlIGZvbGxvd2luZyBwYXRoOgogIGAvdjMvYXBpLWRvY3MueWFtbGAKKiBBZGQgdGhlIGBzcHJpbmdkb2Mtb3BlbmFwaS11aWAgbGlicmFyeSB0byB0aGUgbGlzdCBvZiB5b3VyIHByb2plY3QgZGVwZW5kZW5jaWVzIChObwogIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBpcyBuZWVkZWQpOgoKTWF2ZW4KCmBgYHhtbAogICA8ZGVwZW5kZW5jeT4KICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2RvYzwvZ3JvdXBJZD4KICAgICAgPGFydGlmYWN0SWQ+c3ByaW5nZG9jLW9wZW5hcGktc3RhcnRlci13ZWJtdmMtdWk8L2FydGlmYWN0SWQ+CiAgICAgIDx2ZXJzaW9uPmxhc3QtcmVsZWFzZS12ZXJzaW9uPC92ZXJzaW9uPgogICA8L2RlcGVuZGVuY3k+CmBgYAoKR3JhZGxlCgpgYGBncm9vdnkKaW1wbGVtZW50YXRpb24gJ29yZy5zcHJpbmdkb2M6c3ByaW5nZG9jLW9wZW5hcGktc3RhcnRlci13ZWJtdmMtdWk6bGF0ZXN0JwpgYGAKCiogVGhpcyBzdGVwIGlzIG9wdGlvbmFsOiBGb3IgY3VzdG9tIHBhdGggb2YgdGhlIHN3YWdnZXIgZG9jdW1lbnRhdGlvbiBpbiBIVE1MIGZvcm1hdCwgYWRkCiAgYSBjdXN0b20gc3ByaW5nZG9jIHByb3BlcnR5LCBpbiB5b3VyIHNwcmluZy1ib290IGNvbmZpZ3VyYXRpb24gZmlsZToKCmBgYHByb3BlcnRpZXMKIyBzd2FnZ2VyLXVpIGN1c3RvbSBwYXRoCnNwcmluZ2RvYy5zd2FnZ2VyLXVpLnBhdGg9L3N3YWdnZXItdWkuaHRtbApgYGAKCiMjIFNwcmluZy1ib290IHdpdGggT3BlbkFQSSBEZW1vIGFwcGxpY2F0aW9ucy4KCiMjIyBbU291cmNlIENvZGUgZm9yIERlbW8gQXBwbGljYXRpb25zXShodHRwczovL2dpdGh1Yi5jb20vc3ByaW5nZG9jL3NwcmluZ2RvYy1vcGVuYXBpLWRlbW9zL3RyZWUvbWFzdGVyKS4KCiMjIFtEZW1vIFNwcmluZyBCb290IDMgV2ViIE1WQyB3aXRoIE9wZW5BUEkgM10oaHR0cHM6Ly9kZW1vcy5zcHJpbmdkb2Mub3JnL2RlbW8tc3ByaW5nLWJvb3QtMy13ZWJtdmMpLgoKIyMgW0RlbW8gU3ByaW5nIEJvb3QgMyBXZWJGbHV4IHdpdGggT3BlbkFQSSAzXShodHRwczovL2RlbW9zLnNwcmluZ2RvYy5vcmcvZGVtby1zcHJpbmctYm9vdC0zLXdlYmZsdXgvc3dhZ2dlci11aS5odG1sKS4KCiMjIFtEZW1vIFNwcmluZyBCb290IDMgV2ViRmx1eCB3aXRoIEZ1bmN0aW9uYWwgZW5kcG9pbnRzIE9wZW5BUEkgM10oaHR0cHM6Ly9kZW1vcy5zcHJpbmdkb2Mub3JnL2RlbW8tc3ByaW5nLWJvb3QtMy13ZWJmbHV4LWZ1bmN0aW9uYWwvc3dhZ2dlci11aS5odG1sKS4KCiMjIFtEZW1vIFNwcmluZyBCb290IDMgYW5kIFNwcmluZyBDbG91ZCBGdW5jdGlvbiBXZWIgTVZDXShodHRwczovL2RlbW9zLnNwcmluZ2RvYy5vcmcvc3ByaW5nLWNsb3VkLWZ1bmN0aW9uLXdlYm12YykuCgojIyBbRGVtbyBTcHJpbmcgQm9vdCAzIGFuZCBTcHJpbmcgQ2xvdWQgRnVuY3Rpb24gV2ViRmx1eF0oaHR0cDovLzE1OC4xMDEuMTkxLjcwOjgwODUvc3dhZ2dlci11aS5odG1sKS4KCiMjIFtEZW1vIFNwcmluZyBCb290IDMgYW5kIFNwcmluZyBDbG91ZCBHYXRld2F5XShodHRwczovL2RlbW9zLnNwcmluZ2RvYy5vcmcvZGVtby1taWNyb3NlcnZpY2VzL3N3YWdnZXItdWkuaHRtbCkuCgohW0JyYW5jaGluZ10oaHR0cHM6Ly9zcHJpbmdkb2Mub3JnL2ltZy9wZXRzLnBuZykKCiMjIEludGVncmF0aW9uIG9mIHRoZSBsaWJyYXJ5IGluIGEgU3ByaW5nIEJvb3QgMy54IHByb2plY3Qgd2l0aG91dCB0aGUgc3dhZ2dlci11aToKCiogRG9jdW1lbnRhdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBhdCB0aGUgZm9sbG93aW5nIHVybCBmb3IganNvbiBmb3JtYXQ6IGh0dHA6Ly9zZXJ2ZXI6CiAgcG9ydC9jb250ZXh0LXBhdGgvdjMvYXBpLWRvY3MKICAgICogYHNlcnZlcmA6IFRoZSBzZXJ2ZXIgbmFtZSBvciBJUAogICAgKiBgcG9ydGA6IFRoZSBzZXJ2ZXIgcG9ydAogICAgKiBgY29udGV4dC1wYXRoYDogVGhlIGNvbnRleHQgcGF0aCBvZiB0aGUgYXBwbGljYXRpb24KKiBEb2N1bWVudGF0aW9uIHdpbGwgYmUgYXZhaWxhYmxlIGluIHlhbWwgZm9ybWF0IGFzIHdlbGwsIG9uIHRoZSBmb2xsb3dpbmcKICBwYXRoIDogYC92My9hcGktZG9jcy55YW1sYAoqIEFkZCB0aGUgbGlicmFyeSB0byB0aGUgbGlzdCBvZiB5b3VyIHByb2plY3QgZGVwZW5kZW5jaWVzLiAoTm8gYWRkaXRpb25hbCBjb25maWd1cmF0aW9uCiAgaXMgbmVlZGVkKQoKTWF2ZW4KCmBgYHhtbAogICA8ZGVwZW5kZW5jeT4KICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2RvYzwvZ3JvdXBJZD4KICAgICAgPGFydGlmYWN0SWQ+c3ByaW5nZG9jLW9wZW5hcGktc3RhcnRlci13ZWJtdmMtYXBpPC9hcnRpZmFjdElkPgogICAgICA8dmVyc2lvbj5sYXN0LXJlbGVhc2UtdmVyc2lvbjwvdmVyc2lvbj4KICAgPC9kZXBlbmRlbmN5PgpgYGAKCkdyYWRsZQoKYGBgZ3Jvb3Z5CmltcGxlbWVudGF0aW9uICdvcmcuc3ByaW5nZG9jOnNwcmluZ2RvYy1vcGVuYXBpLXN0YXJ0ZXItd2VibXZjLXVpOmxhdGVzdCcKYGBgCgoqIFRoaXMgc3RlcCBpcyBvcHRpb25hbDogRm9yIGN1c3RvbSBwYXRoIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50YXRpb24gaW4gSnNvbiBmb3JtYXQsIGFkZAogIGEgY3VzdG9tIHNwcmluZ2RvYyBwcm9wZXJ0eSwgaW4geW91ciBzcHJpbmctYm9vdCBjb25maWd1cmF0aW9uIGZpbGU6CgpgYGBwcm9wZXJ0aWVzCiMgL2FwaS1kb2NzIGVuZHBvaW50IGN1c3RvbSBwYXRoCnNwcmluZ2RvYy5hcGktZG9jcy5wYXRoPS9hcGktZG9jcwpgYGAKCiogVGhpcyBzdGVwIGlzIG9wdGlvbmFsOiBJZiB5b3Ugd2FudCB0byBkaXNhYmxlIGBzcHJpbmdkb2Mtb3BlbmFwaWAgZW5kcG9pbnRzLCBhZGQgYQogIGN1c3RvbSBzcHJpbmdkb2MgcHJvcGVydHksIGluIHlvdXIgYHNwcmluZy1ib290YCBjb25maWd1cmF0aW9uIGZpbGU6CgpgYGBwcm9wZXJ0aWVzCiMgZGlzYWJsZSBhcGktZG9jcwpzcHJpbmdkb2MuYXBpLWRvY3MuZW5hYmxlZD1mYWxzZQpgYGAKCiMjIEVycm9yIEhhbmRsaW5nIGZvciBSRVNUIHVzaW5nIEBDb250cm9sbGVyQWR2aWNlCgpUbyBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGF1dG9tYXRpY2FsbHksIG1ha2Ugc3VyZSBhbGwgdGhlIG1ldGhvZHMgZGVjbGFyZSB0aGUgSFRUUCBDb2RlCnJlc3BvbnNlcyB1c2luZyB0aGUgYW5ub3RhdGlvbjogQFJlc3BvbnNlU3RhdHVzLgoKIyMgQWRkaW5nIEFQSSBJbmZvcm1hdGlvbiBhbmQgU2VjdXJpdHkgZG9jdW1lbnRhdGlvbgoKVGhlIGxpYnJhcnkgdXNlcyBzcHJpbmctYm9vdCBhcHBsaWNhdGlvbiBhdXRvLWNvbmZpZ3VyZWQgcGFja2FnZXMgdG8gc2NhbiBmb3IgdGhlCmZvbGxvd2luZyBhbm5vdGF0aW9ucyBpbiBzcHJpbmcgYmVhbnM6IE9wZW5BUElEZWZpbml0aW9uIGFuZCBJbmZvLgpUaGVzZSBhbm5vdGF0aW9ucyBkZWNsYXJlLCBBUEkgSW5mb3JtYXRpb246IFRpdGxlLCB2ZXJzaW9uLCBsaWNlbmNlLCBzZWN1cml0eSwgc2VydmVycywKdGFncywgc2VjdXJpdHkgYW5kIGV4dGVybmFsRG9jcy4KRm9yIGJldHRlciBwZXJmb3JtYW5jZSBvZiBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24sIGRlY2xhcmUgYEBPcGVuQVBJRGVmaW5pdGlvbmAKYW5kIGBAU2VjdXJpdHlTY2hlbWVgIGFubm90YXRpb25zIHdpdGhpbiBhIFNwcmluZyBtYW5hZ2VkIGJlYW4uCgojIyBzcHJpbmctd2ViZmx1eCBzdXBwb3J0IHdpdGggQW5ub3RhdGVkIENvbnRyb2xsZXJzCgoqIERvY3VtZW50YXRpb24gY2FuIGJlIGF2YWlsYWJsZSBpbiB5YW1sIGZvcm1hdCBhcyB3ZWxsLCBvbiB0aGUgZm9sbG93aW5nIHBhdGggOgogIC92My9hcGktZG9jcy55YW1sCiogQWRkIHRoZSBsaWJyYXJ5IHRvIHRoZSBsaXN0IG9mIHlvdXIgcHJvamVjdCBkZXBlbmRlbmNpZXMgKE5vIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbgogIGlzIG5lZWRlZCkKCk1hdmVuCgpgYGB4bWwKICAgPGRlcGVuZGVuY3k+CiAgICAgIDxncm91cElkPm9yZy5zcHJpbmdkb2M8L2dyb3VwSWQ+CiAgICAgIDxhcnRpZmFjdElkPnNwcmluZ2RvYy1vcGVuYXBpLXN0YXJ0ZXItd2ViZmx1eC11aTwvYXJ0aWZhY3RJZD4KICAgICAgPHZlcnNpb24+bGFzdC1yZWxlYXNlLXZlcnNpb248L3ZlcnNpb24+CiAgIDwvZGVwZW5kZW5jeT4KYGBgCgpHcmFkbGUKCmBgYGdyb292eQppbXBsZW1lbnRhdGlvbiAnb3JnLnNwcmluZ2RvYzpzcHJpbmdkb2Mtb3BlbmFwaS1zdGFydGVyLXdlYm12Yy11aTpsYXRlc3QnCmBgYAoKKiBUaGlzIHN0ZXAgaXMgb3B0aW9uYWw6IEZvciBjdXN0b20gcGF0aCBvZiB0aGUgc3dhZ2dlciBkb2N1bWVudGF0aW9uIGluIEhUTUwgZm9ybWF0LCBhZGQKICBhIGN1c3RvbSBzcHJpbmdkb2MgcHJvcGVydHksIGluIHlvdXIgc3ByaW5nLWJvb3QgY29uZmlndXJhdGlvbiBmaWxlOgoKYGBgcHJvcGVydGllcwojIHN3YWdnZXItdWkgY3VzdG9tIHBhdGgKc3ByaW5nZG9jLnN3YWdnZXItdWkucGF0aD0vc3dhZ2dlci11aS5odG1sCmBgYAoKVGhlIGBzcHJpbmdkb2Mtb3BlbmFwaWAgbGlicmFyaWVzIGFyZSBob3N0ZWQgb24gbWF2ZW4gY2VudHJhbCByZXBvc2l0b3J5LgpUaGUgYXJ0aWZhY3RzIGNhbiBiZSB2aWV3ZWQgYWNjZXNzZWQgYXQgdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6CgpSZWxlYXNlczoKCiogW2h0dHBzOi8vY2VudHJhbC5zb25hdHlwZS5jb20vc2VhcmNoP3E9Zzpvcmcuc3ByaW5nZG9jKV0oaHR0cHM6Ly9jZW50cmFsLnNvbmF0eXBlLmNvbS9zZWFyY2g/cT1nOm9yZy5zcHJpbmdkb2MpCiAgLgoKU25hcHNob3RzOgoKKiBbaHR0cHM6Ly9jZW50cmFsLnNvbmF0eXBlLmNvbS9zZXJ2aWNlL3Jlc3QvcmVwb3NpdG9yeS9icm93c2UvbWF2ZW4tc25hcHNob3RzL29yZy9zcHJpbmdkb2MvXShodHRwczovL2NlbnRyYWwuc29uYXR5cGUuY29tL3NlcnZpY2UvcmVzdC9yZXBvc2l0b3J5L2Jyb3dzZS9tYXZlbi1zbmFwc2hvdHMvb3JnL3NwcmluZ2RvYy8pCiAgLgoKIyMgVXNpbmcgYSBzZXBhcmF0ZSBtYW5hZ2VtZW50IHBvcnQgKFNwcmluZyBCb290IDMpCgpTb21lIFNwcmluZyBCb290IGFwcHMgcnVuICoqQWN0dWF0b3IqKiBvbiBhIHNlcGFyYXRlIG1hbmFnZW1lbnQgcG9ydC4gSW4gdGhhdCBjYXNlOgoKLSAqKkFwcGxpY2F0aW9uIHBvcnQqKiAoZS5nLiwgYDgwODBgKSBzZXJ2ZXMgeW91ciBhcHAgYW5kIHNwcmluZ2RvYyBlbmRwb2ludHM6CiAgLSBgaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YzL2FwaS1kb2NzYAogIC0gYGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9zd2FnZ2VyLXVpL2luZGV4Lmh0bWxgCgotICoqTWFuYWdlbWVudCBwb3J0KiogKGUuZy4sIGA5MDkwYCkgc2VydmVzIEFjdHVhdG9yOgogIC0gYGh0dHA6Ly9sb2NhbGhvc3Q6OTA5MC9hY3R1YXRvcmAKICAtIGBodHRwOi8vbG9jYWxob3N0OjkwOTAvYWN0dWF0b3IvaGVhbHRoYAoKTWluaW1hbCBgYXBwbGljYXRpb24ueW1sYDoKCmBgYHlhbWwKc2VydmVyOgogIHBvcnQ6IDgwODAKCm1hbmFnZW1lbnQ6CiAgc2VydmVyOgogICAgcG9ydDogOTA5MAogIGVuZHBvaW50czoKICAgIHdlYjoKICAgICAgZXhwb3N1cmU6CiAgICAgICAgaW5jbHVkZTogaGVhbHRoLGluZm8KCiMgc3ByaW5nZG9jIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCB3aXRoIHRoZSBzdGFydGVyOwojIGVuZHBvaW50cyByZW1haW4gb24gdGhlIGFwcGxpY2F0aW9uIHBvcnQuCiMgKE9wZW5BUEkgSlNPTiA9IC92My9hcGktZG9jcywgU3dhZ2dlciBVSSA9IC9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwpCmBgYAoKIyMjIFdoZW4gU3ByaW5nIFNlY3VyaXR5IGlzIGVuYWJsZWQKCldpdGggU3ByaW5nIEJvb3QgMywgYC92My9hcGktZG9jc2AgYW5kIFN3YWdnZXIgVUkgYXJlIHNlcnZlZCBvbiB0aGUgKiphcHBsaWNhdGlvbiBwb3J0KiosIHdoaWxlIEFjdHVhdG9yIHJ1bnMgb24gdGhlICoqbWFuYWdlbWVudCBwb3J0KiouICAKSWYgU3ByaW5nIFNlY3VyaXR5IGlzIGVuYWJsZWQsIGV4cGxpY2l0bHkgcGVybWl0IHRoZSBkb2NzIHBhdGhzIG9uIHRoZSAqKmFwcGxpY2F0aW9uIHBvcnQqKjoKCmBgYGphdmEKQEJlYW4KU2VjdXJpdHlGaWx0ZXJDaGFpbiBhcGkoSHR0cFNlY3VyaXR5IGh0dHApIHRocm93cyBFeGNlcHRpb24gewogIGh0dHAKICAgIC5hdXRob3JpemVIdHRwUmVxdWVzdHMoYXV0aCAtPiBhdXRoCiAgICAgIC5yZXF1ZXN0TWF0Y2hlcnMoCiAgICAgICAgIi92My9hcGktZG9jcy8qKiIsICAgCiAgICAgICAgIi92My9hcGktZG9jcy55YW1sIiwgCiAgICAgICAgIi9zd2FnZ2VyLXVpLyoqIiwKICAgICAgICAiL3N3YWdnZXItdWkuaHRtbCIKICAgICAgKS5wZXJtaXRBbGwoKQogICAgICAuYW55UmVxdWVzdCgpLmF1dGhlbnRpY2F0ZWQoKQogICAgKTsKICByZXR1cm4gaHR0cC5idWlsZCgpOwp9CmBgYAoKIyBBY2tub3dsZWRnZW1lbnRzCgojIyBDb250cmlidXRvcnMKCnNwcmluZ2RvYy1vcGVuYXBpIGlzIHJlbGV2YW50IGFuZCB1cGRhdGVkIHJlZ3VsYXJseSBkdWUgdG8gdGhlIHZhbHVhYmxlIGNvbnRyaWJ1dGlvbnMgZnJvbQppdHMgW2NvbnRyaWJ1dG9yc10oaHR0cHM6Ly9naXRodWIuY29tL3NwcmluZ2RvYy9zcHJpbmdkb2Mtb3BlbmFwaS9ncmFwaHMvY29udHJpYnV0b3JzKS4KCjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zcHJpbmdkb2Mvc3ByaW5nZG9jLW9wZW5hcGkvZ3JhcGhzL2NvbnRyaWJ1dG9ycyI+CiAgPGltZyBzcmM9Imh0dHBzOi8vY29udHJpYi5yb2Nrcy9pbWFnZT9yZXBvPXNwcmluZ2RvYy9zcHJpbmdkb2Mtb3BlbmFwaSIgd2lkdGg9IjUwJSIvPgo8L2E+CgpUaGFua3MgeW91IGFsbCBmb3IgeW91ciBzdXBwb3J0IQoKIyMgQWRkaXRpb25hbCBTdXBwb3J0CgoqIFtTcHJpbmcgVGVhbV0oaHR0cHM6Ly9zcHJpbmcuaW8vdGVhbSkgLSBUaGFua3MgZm9yIHRoZWlyIHN1cHBvcnQgYnkgc2hhcmluZyBhbGwgcmVsZXZhbnQKICByZXNvdXJjZXMgYXJvdW5kIFNwcmluZyBwcm9qZWN0cy4KKiBbSmV0QnJhaW5zXShodHRwczovL3d3dy5qZXRicmFpbnMuY29tLz9mcm9tPXNwcmluZ2RvYy1vcGVuYXBpKSAtIFRoYW5rcyBhIGxvdCBmb3IKICBzdXBwb3J0aW5nIHNwcmluZ2RvYy1vcGVuYXBpIHByb2plY3QuCgohW0plbkJyYWlucyBsb2dvXShodHRwczovL3Jlc291cmNlcy5qZXRicmFpbnMuY29tL3N0b3JhZ2UvcHJvZHVjdHMvY29tcGFueS9icmFuZC9sb2dvcy9qZXRicmFpbnMuc3ZnKQo= readmeEtag: '"e3409ef99f573a7fcdf6616eb93cc75ffe26f53b"' readmeLastModified: Sat, 06 Dec 2025 18:27:57 GMT repositoryId: 196475719 description: Library for OpenAPI 3 with spring-boot created: '2019-07-11T23:08:20Z' updated: '2026-02-05T13:04:57Z' language: Java archived: false stars: 3663 watchers: 43 forks: 580 owner: springdoc logo: https://avatars.githubusercontent.com/u/52804136?v=4 license: Apache-2.0 repoEtag: '"faa831b2d868f47e34ffdb6f07516a7f16224f3d7161defad9ec979351fa684e"' repoLastModified: Thu, 05 Feb 2026 13:04:57 GMT foundInMaster: true id: 901410cec129651fcf7374c79f824f27 - source: openapi3 tags repository: https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker v3: true repositoryMetadata: base64Readme: >- IyMgREVQUkVDQVRFRCDwn5qoCgpUaGlzIERvY2tlciBpbWFnZSBpcyBub3cgZGVwcmVjYXRlZC4gVGhlcmUncyBubyBuZWVkIHRvIHVzZSBpdCwgeW91IGNhbiBqdXN0IHVzZSBVdmljb3JuIHdpdGggYC0td29ya2Vyc2AuIOKcqAoKUmVhZCBtb3JlIGFib3V0IGl0IGJlbG93LgoKLS0tCgpbIVtUZXN0XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbCkgWyFbRGVwbG95XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci93b3JrZmxvd3MvRGVwbG95L2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL2FjdGlvbnM/cXVlcnk9d29ya2Zsb3clM0FEZXBsb3kpCgojIyBTdXBwb3J0ZWQgdGFncyBhbmQgcmVzcGVjdGl2ZSBgRG9ja2VyZmlsZWAgbGlua3MKCiogW2BweXRob24zLjExYCwgYGxhdGVzdGAgXyhEb2NrZXJmaWxlKV9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL2Jsb2IvbWFzdGVyL2RvY2tlci1pbWFnZXMvcHl0aG9uMy4xMS5kb2NrZXJmaWxlKQoqIFtgcHl0aG9uMy4xMGAsIF8oRG9ja2VyZmlsZSlfXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9ibG9iL21hc3Rlci9kb2NrZXItaW1hZ2VzL3B5dGhvbjMuMTAuZG9ja2VyZmlsZSkKKiBbYHB5dGhvbjMuMTEtc2xpbWAgXyhEb2NrZXJmaWxlKV9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL2Jsb2IvbWFzdGVyL2RvY2tlci1pbWFnZXMvcHl0aG9uMy4xMS1zbGltLmRvY2tlcmZpbGUpCiogW2BweXRob24zLjEwLXNsaW1gIF8oRG9ja2VyZmlsZSlfXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9ibG9iL21hc3Rlci9kb2NrZXItaW1hZ2VzL3B5dGhvbjMuMTAtc2xpbS5kb2NrZXJmaWxlKQoKIyMgRGVwcmVjYXRlZCB0YWdzCgrwn5qoIFRoZXNlIHRhZ3MgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQgb3IgbWFpbnRhaW5lZCwgdGhleSBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBHaXRIdWIgcmVwb3NpdG9yeSwgYnV0IHRoZSBsYXN0IHZlcnNpb25zIHB1c2hlZCBtaWdodCBzdGlsbCBiZSBhdmFpbGFibGUgaW4gRG9ja2VyIEh1YiBpZiBhbnlvbmUgaGFzIGJlZW4gcHVsbGluZyB0aGVtOgoKKiBgcHl0aG9uMy45YAoqIGBweXRob24zLjktc2xpbWAKKiBgcHl0aG9uMy44YAoqIGBweXRob24zLjgtc2xpbWAKKiBgcHl0aG9uMy43YAoqIGBweXRob24zLjktYWxwaW5lMy4xNGAKKiBgcHl0aG9uMy44LWFscGluZTMuMTBgCiogYHB5dGhvbjMuNy1hbHBpbmUzLjhgCiogYHB5dGhvbjMuNmAKKiBgcHl0aG9uMy42LWFscGluZTMuOGAKClRoZSBsYXN0IGRhdGUgdGFncyBmb3IgdGhlc2UgdmVyc2lvbnMgYXJlOgoKKiBgcHl0aG9uMy45LTIwMjUtMTEtMDlgCiogYHB5dGhvbjMuOS1zbGltLTIwMjUtMTEtMDlgCiogYHB5dGhvbjMuOC0yMDI0LTExLTAyYAoqIGBweXRob24zLjgtc2xpbS0yMDI0LTExLTAyYAoqIGBweXRob24zLjctMjAyNC0xMS0wMmAKKiBgcHl0aG9uMy45LWFscGluZTMuMTQtMjAyNC0wMy0xMWAKKiBgcHl0aG9uMy44LWFscGluZTMuMTAtMjAyNC0wMS0yOWAKKiBgcHl0aG9uMy43LWFscGluZTMuOC0yMDI0LTAzLTExYAoqIGBweXRob24zLjYtMjAyMi0xMS0yNWAKKiBgcHl0aG9uMy42LWFscGluZTMuOC0yMDIyLTExLTI1YAoKLS0tCgoqKk5vdGUqKjogVGhlcmUgYXJlIFt0YWdzIGZvciBlYWNoIGJ1aWxkIGRhdGVdKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGkvdGFncykuIElmIHlvdSBuZWVkIHRvICJwaW4iIHRoZSBEb2NrZXIgaW1hZ2UgdmVyc2lvbiB5b3UgdXNlLCB5b3UgY2FuIHNlbGVjdCBvbmUgb2YgdGhvc2UgdGFncy4gRS5nLiBgdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpOnB5dGhvbjMuMTEtMjAyNC0xMS0wMmAuCgojIHV2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaQoKWyoqRG9ja2VyKipdKGh0dHBzOi8vd3d3LmRvY2tlci5jb20vKSBpbWFnZSB3aXRoIFsqKlV2aWNvcm4qKl0oaHR0cHM6Ly93d3cudXZpY29ybi5vcmcvKSBtYW5hZ2VkIGJ5IFsqKkd1bmljb3JuKipdKGh0dHBzOi8vZ3VuaWNvcm4ub3JnLykgZm9yIGhpZ2gtcGVyZm9ybWFuY2UgWyoqRmFzdEFQSSoqXShodHRwczovL2Zhc3RhcGkudGlhbmdvbG8uY29tLykgd2ViIGFwcGxpY2F0aW9ucyBpbiAqKltQeXRob25dKGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvKSoqIHdpdGggcGVyZm9ybWFuY2UgYXV0by10dW5pbmcuCgoqKkdpdEh1YiByZXBvKio6IFtodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIpCgoqKkRvY2tlciBIdWIgaW1hZ2UqKjogW2h0dHBzOi8vaHViLmRvY2tlci5jb20vci90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGkvXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLykKCiMjIERlc2NyaXB0aW9uCgoqKkZhc3RBUEkqKiBoYXMgc2hvd24gdG8gYmUgYSBQeXRob24gd2ViIGZyYW1ld29yayB3aXRoIFtvbmUgb2YgdGhlIGJlc3QgcGVyZm9ybWFuY2VzLCBhcyBtZWFzdXJlZCBieSB0aGlyZC1wYXJ0eSBiZW5jaG1hcmtzXShodHRwczovL3d3dy50ZWNoZW1wb3dlci5jb20vYmVuY2htYXJrcy8jc2VjdGlvbj10ZXN0JnJ1bmlkPWE5NzlkZTU1LTk4MGQtNDcyMS1hNDZmLTc3Mjk4YjNmMzkyMyZodz1waCZ0ZXN0PWZvcnR1bmUmbD16aWp6ZW4tNyksIHRoYW5rcyB0byBiZWluZyBiYXNlZCBvbiBhbmQgcG93ZXJlZCBieSBbKipTdGFybGV0dGUqKl0oaHR0cHM6Ly93d3cuc3RhcmxldHRlLmlvLykuCgpUaGUgYWNoaWV2YWJsZSBwZXJmb3JtYW5jZSBpcyBvbiBwYXIgd2l0aCAoYW5kIGluIG1hbnkgY2FzZXMgc3VwZXJpb3IgdG8pICoqR28qKiBhbmQgKipOb2RlLmpzKiogZnJhbWV3b3Jrcy4KClRoaXMgaW1hZ2UgaGFzIGFuICoqYXV0by10dW5pbmcqKiBtZWNoYW5pc20gaW5jbHVkZWQgdG8gc3RhcnQgYSBudW1iZXIgb2Ygd29ya2VyIHByb2Nlc3NlcyBiYXNlZCBvbiB0aGUgYXZhaWxhYmxlIENQVSBjb3Jlcy4gVGhhdCB3YXkgeW91IGNhbiBqdXN0IGFkZCB5b3VyIGNvZGUgYW5kIGdldCAqKmhpZ2ggcGVyZm9ybWFuY2UqKiBhdXRvbWF0aWNhbGx5LCB3aGljaCBpcyB1c2VmdWwgaW4gKipzaW1wbGUgZGVwbG95bWVudHMqKi4KCiMjIPCfmqggV0FSTklORzogWW91IFByb2JhYmx5IERvbid0IE5lZWQgdGhpcyBEb2NrZXIgSW1hZ2UKCllvdSBhcmUgcHJvYmFibHkgdXNpbmcgKipLdWJlcm5ldGVzKiogb3Igc2ltaWxhciB0b29scy4gSW4gdGhhdCBjYXNlLCB5b3UgcHJvYmFibHkgKipkb24ndCBuZWVkIHRoaXMgaW1hZ2UqKiAob3IgYW55IG90aGVyICoqc2ltaWxhciBiYXNlIGltYWdlKiopLiBZb3UgYXJlIHByb2JhYmx5IGJldHRlciBvZmYgKipidWlsZGluZyBhIERvY2tlciBpbWFnZSBmcm9tIHNjcmF0Y2gqKiBhcyBleHBsYWluZWQgaW4gdGhlIGRvY3MgZm9yIFtGYXN0QVBJIGluIENvbnRhaW5lcnMgLSBEb2NrZXI6IEJ1aWxkIGEgRG9ja2VyIEltYWdlIGZvciBGYXN0QVBJXShodHRwczovL2Zhc3RhcGkudGlhbmdvbG8uY29tL2RlcGxveW1lbnQvZG9ja2VyLyNyZXBsaWNhdGlvbi1udW1iZXItb2YtcHJvY2Vzc2VzKS4KCiMjIyBDbHVzdGVyIFJlcGxpY2F0aW9uCgpJZiB5b3UgaGF2ZSBhIGNsdXN0ZXIgb2YgbWFjaGluZXMgd2l0aCAqKkt1YmVybmV0ZXMqKiwgRG9ja2VyIFN3YXJtIE1vZGUsIE5vbWFkLCBvciBvdGhlciBzaW1pbGFyIGNvbXBsZXggc3lzdGVtIHRvIG1hbmFnZSBkaXN0cmlidXRlZCBjb250YWluZXJzIG9uIG11bHRpcGxlIG1hY2hpbmVzLCB0aGVuIHlvdSB3aWxsIHByb2JhYmx5IHdhbnQgdG8gKipoYW5kbGUgcmVwbGljYXRpb24qKiBhdCB0aGUgKipjbHVzdGVyIGxldmVsKiogaW5zdGVhZCBvZiB1c2luZyBhICoqcHJvY2VzcyBtYW5hZ2VyKiogKGxpa2UgR3VuaWNvcm4gd2l0aCBVdmljb3JuIHdvcmtlcnMpIGluIGVhY2ggY29udGFpbmVyLCB3aGljaCBpcyB3aGF0IHRoaXMgRG9ja2VyIGltYWdlIGRvZXMuCgpJbiB0aG9zZSBjYXNlcyAoZS5nLiB1c2luZyBLdWJlcm5ldGVzKSB5b3Ugd291bGQgcHJvYmFibHkgd2FudCB0byBidWlsZCBhICoqRG9ja2VyIGltYWdlIGZyb20gc2NyYXRjaCoqLCBpbnN0YWxsaW5nIHlvdXIgZGVwZW5kZW5jaWVzLCBhbmQgcnVubmluZyAqKmEgc2luZ2xlIFV2aWNvcm4gcHJvY2VzcyoqIGluc3RlYWQgb2YgdGhpcyBpbWFnZS4KCkZvciBleGFtcGxlLCB5b3VyIGBEb2NrZXJmaWxlYCBjb3VsZCBsb29rIGxpa2U6CgpgYGBEb2NrZXJmaWxlCkZST00gcHl0aG9uOjMuMTEKCldPUktESVIgL2NvZGUKCkNPUFkgLi9yZXF1aXJlbWVudHMudHh0IC9jb2RlL3JlcXVpcmVtZW50cy50eHQKClJVTiBwaXAgaW5zdGFsbCAtLW5vLWNhY2hlLWRpciAtLXVwZ3JhZGUgLXIgL2NvZGUvcmVxdWlyZW1lbnRzLnR4dAoKQ09QWSAuL2FwcCAvY29kZS9hcHAKCkNNRCBbInV2aWNvcm4iLCAiYXBwLm1haW46YXBwIiwgIi0taG9zdCIsICIwLjAuMC4wIiwgIi0tcG9ydCIsICI4MCJdCmBgYAoKWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgdGhpcyBpbiB0aGUgW0Zhc3RBUEkgZG9jdW1lbnRhdGlvbiBhYm91dDogRmFzdEFQSSBpbiBDb250YWluZXJzIC0gRG9ja2VyXShodHRwczovL2Zhc3RhcGkudGlhbmdvbG8uY29tL2RlcGxveW1lbnQvZG9ja2VyLyNyZXBsaWNhdGlvbi1udW1iZXItb2YtcHJvY2Vzc2VzKS4KCiMjIyBNdWx0aXBsZSBXb3JrZXJzCgpJZiB5b3UgZGVmaW5pdGVseSB3YW50IHRvIGhhdmUgbXVsdGlwbGUgd29ya2VycyBvbiBhIHNpbmdsZSBjb250YWluZXIsIFV2aWNvcm4gbm93IHN1cHBvcnRzIGhhbmRsaW5nIHN1YnByb2Nlc3NlcywgaW5jbHVkaW5nIHJlc3RhcnRpbmcgZGVhZCBvbmVzLiBTbyB0aGVyZSdzIG5vIG5lZWQgZm9yIEd1bmljb3JuIHRvIG1hbmFnZSBtdWx0aXBsZSB3b3JrZXJzIGluIGEgc2luZ2xlIGNvbnRhaW5lci4KCllvdSBjb3VsZCBtb2RpZnkgdGhlIGV4YW1wbGUgYERvY2tlcmZpbGVgIGZyb20gYWJvdmUsIGFkZGluZyB0aGUgYC0td29ya2Vyc2Agb3B0aW9uIHRvIFV2aWNvcm4sIGxpa2U6CgpgYGBEb2NrZXJmaWxlCkZST00gcHl0aG9uOjMuMTEKCldPUktESVIgL2NvZGUKCkNPUFkgLi9yZXF1aXJlbWVudHMudHh0IC9jb2RlL3JlcXVpcmVtZW50cy50eHQKClJVTiBwaXAgaW5zdGFsbCAtLW5vLWNhY2hlLWRpciAtLXVwZ3JhZGUgLXIgL2NvZGUvcmVxdWlyZW1lbnRzLnR4dAoKQ09QWSAuL2FwcCAvY29kZS9hcHAKCkNNRCBbInV2aWNvcm4iLCAiYXBwLm1haW46YXBwIiwgIi0taG9zdCIsICIwLjAuMC4wIiwgIi0tcG9ydCIsICI4MCIsICItLXdvcmtlcnMiLCAiNCJdCmBgYAoKVGhhdCdzIGFsbCB5b3UgbmVlZC4gWW91IGRvbid0IG5lZWQgdGhpcyBEb2NrZXIgaW1hZ2UgYXQgYWxsLiDwn5iFCgpZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCBpdCBpbiB0aGUgW0Zhc3RBUEkgRG9jcyBhYm91dCBEZXBsb3ltZW50IHdpdGggRG9ja2VyXShodHRwczovL2Zhc3RhcGkudGlhbmdvbG8uY29tL2RlcGxveW1lbnQvZG9ja2VyLykuCgojIyBUZWNobmljYWwgRGV0YWlscwoKVXZpY29ybiBkaWRuJ3QgaGF2ZSBzdXBwb3J0IGZvciBtYW5hZ2luZyB3b3JrZXIgcHJvY2Vzc2luZyBpbmNsdWRpbmcgcmVzdGFydGluZyBkZWFkIHdvcmtlcnMuIEJ1dCBub3cgaXQgZG9lcy4KCkJlZm9yZSB0aGF0LCBHdW5pY29ybiBjb3VsZCBiZSB1c2VkIGFzIGEgcHJvY2VzcyBtYW5hZ2VyLCBydW5uaW5nIFV2aWNvcm4gd29ya2Vycy4gVGhpcyBhZGRlZCBjb21wbGV4aXR5IHRoYXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KCiMjIExlZ2FjeSBEb2NzCgpUaGUgcmVzdCBvZiB0aGlzIGRvY3VtZW50IGlzIGtlcHQgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgYnV0IHlvdSBwcm9iYWJseSBkb24ndCBuZWVkIGl0LiDwn5iFCgojIyMgYHRpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaWAKClRoaXMgaW1hZ2Ugd2lsbCBzZXQgYSBzZW5zaWJsZSBjb25maWd1cmF0aW9uIGJhc2VkIG9uIHRoZSBzZXJ2ZXIgaXQgaXMgcnVubmluZyBvbiAodGhlIGFtb3VudCBvZiBDUFUgY29yZXMgYXZhaWxhYmxlKSB3aXRob3V0IG1ha2luZyBzYWNyaWZpY2VzLgoKSXQgaGFzIHNlbnNpYmxlIGRlZmF1bHRzLCBidXQgeW91IGNhbiBjb25maWd1cmUgaXQgd2l0aCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3Igb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuCgpUaGVyZSBhcmUgYWxzbyBzbGltIHZlcnNpb25zLiBJZiB5b3Ugd2FudCBvbmUgb2YgdGhvc2UsIHVzZSBvbmUgb2YgdGhlIHRhZ3MgZnJvbSBhYm92ZS4KCiMjIyBgdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybmAKClRoaXMgaW1hZ2UgKGB0aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGlgKSBpcyBiYXNlZCBvbiBbKip0aWFuZ29sby91dmljb3JuLWd1bmljb3JuKipdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWRvY2tlcikuCgpUaGF0IGltYWdlIGlzIHdoYXQgYWN0dWFsbHkgZG9lcyBhbGwgdGhlIHdvcmsuCgpUaGlzIGltYWdlIGp1c3QgaW5zdGFsbHMgRmFzdEFQSSBhbmQgaGFzIHRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSB0YXJnZXRlZCBhdCBGYXN0QVBJLgoKSWYgeW91IGZlZWwgY29uZmlkZW50IGFib3V0IHlvdXIga25vd2xlZGdlIG9mIFV2aWNvcm4sIEd1bmljb3JuIGFuZCBBU0dJLCB5b3UgY2FuIHVzZSB0aGF0IGltYWdlIGRpcmVjdGx5LgoKIyMjIGB0aWFuZ29sby91dmljb3JuLWd1bmljb3JuLXN0YXJsZXR0ZWAKClRoZXJlIGlzIGEgc2libGluZyBEb2NrZXIgaW1hZ2U6IFsqKnRpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tc3RhcmxldHRlKipdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLXN0YXJsZXR0ZS1kb2NrZXIpCgpJZiB5b3UgYXJlIGNyZWF0aW5nIGEgbmV3IFsqKlN0YXJsZXR0ZSoqXShodHRwczovL3d3dy5zdGFybGV0dGUuaW8vKSB3ZWIgYXBwbGljYXRpb24gYW5kIHlvdSB3YW50IHRvIGRpc2NhcmQgYWxsIHRoZSBhZGRpdGlvbmFsIGZlYXR1cmVzIGZyb20gRmFzdEFQSSB5b3Ugc2hvdWxkIHVzZSBbKip0aWFuZ29sby91dmljb3JuLWd1bmljb3JuLXN0YXJsZXR0ZSoqXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1zdGFybGV0dGUtZG9ja2VyKSBpbnN0ZWFkLgoKKipOb3RlKio6IEZhc3RBUEkgaXMgYmFzZWQgb24gU3RhcmxldHRlIGFuZCBhZGRzIHNldmVyYWwgZmVhdHVyZXMgb24gdG9wIG9mIGl0LiBVc2VmdWwgZm9yIEFQSXMgYW5kIG90aGVyIGNhc2VzOiBkYXRhIHZhbGlkYXRpb24sIGRhdGEgY29udmVyc2lvbiwgZG9jdW1lbnRhdGlvbiB3aXRoIE9wZW5BUEksIGRlcGVuZGVuY3kgaW5qZWN0aW9uLCBzZWN1cml0eS9hdXRoZW50aWNhdGlvbiBhbmQgb3RoZXJzLgoKIyMgSG93IHRvIHVzZQoKWW91IGRvbid0IG5lZWQgdG8gY2xvbmUgdGhlIEdpdEh1YiByZXBvLgoKWW91IGNhbiB1c2UgdGhpcyBpbWFnZSBhcyBhIGJhc2UgaW1hZ2UgZm9yIG90aGVyIGltYWdlcy4KCkFzc3VtaW5nIHlvdSBoYXZlIGEgZmlsZSBgcmVxdWlyZW1lbnRzLnR4dGAsIHlvdSBjb3VsZCBoYXZlIGEgYERvY2tlcmZpbGVgIGxpa2UgdGhpczoKCmBgYERvY2tlcmZpbGUKRlJPTSB0aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGk6cHl0aG9uMy4xMQoKQ09QWSAuL3JlcXVpcmVtZW50cy50eHQgL2FwcC9yZXF1aXJlbWVudHMudHh0CgpSVU4gcGlwIGluc3RhbGwgLS1uby1jYWNoZS1kaXIgLS11cGdyYWRlIC1yIC9hcHAvcmVxdWlyZW1lbnRzLnR4dAoKQ09QWSAuL2FwcCAvYXBwCmBgYAoKSXQgd2lsbCBleHBlY3QgYSBmaWxlIGF0IGAvYXBwL2FwcC9tYWluLnB5YC4KCk9yIG90aGVyd2lzZSBhIGZpbGUgYXQgYC9hcHAvbWFpbi5weWAuCgpBbmQgd2lsbCBleHBlY3QgaXQgdG8gY29udGFpbiBhIHZhcmlhYmxlIGBhcHBgIHdpdGggeW91ciBGYXN0QVBJIGFwcGxpY2F0aW9uLgoKVGhlbiB5b3UgY2FuIGJ1aWxkIHlvdXIgaW1hZ2UgZnJvbSB0aGUgZGlyZWN0b3J5IHRoYXQgaGFzIHlvdXIgYERvY2tlcmZpbGVgLCBlLmc6CgpgYGBiYXNoCmRvY2tlciBidWlsZCAtdCBteWltYWdlIC4vCmBgYAoKIyMgUXVpY2sgU3RhcnQKCiMjIyBCdWlsZCB5b3VyIEltYWdlCgoqIEdvIHRvIHlvdXIgcHJvamVjdCBkaXJlY3RvcnkuCiogQ3JlYXRlIGEgYERvY2tlcmZpbGVgIHdpdGg6CgpgYGBEb2NrZXJmaWxlCkZST00gdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpOnB5dGhvbjMuMTEKCkNPUFkgLi9yZXF1aXJlbWVudHMudHh0IC9hcHAvcmVxdWlyZW1lbnRzLnR4dAoKUlVOIHBpcCBpbnN0YWxsIC0tbm8tY2FjaGUtZGlyIC0tdXBncmFkZSAtciAvYXBwL3JlcXVpcmVtZW50cy50eHQKCkNPUFkgLi9hcHAgL2FwcApgYGAKCiogQ3JlYXRlIGFuIGBhcHBgIGRpcmVjdG9yeSBhbmQgZW50ZXIgaW4gaXQuCiogQ3JlYXRlIGEgYG1haW4ucHlgIGZpbGUgd2l0aDoKCmBgYFB5dGhvbgpmcm9tIGZhc3RhcGkgaW1wb3J0IEZhc3RBUEkKCmFwcCA9IEZhc3RBUEkoKQoKCkBhcHAuZ2V0KCIvIikKZGVmIHJlYWRfcm9vdCgpOgogICAgcmV0dXJuIHsiSGVsbG8iOiAiV29ybGQifQoKCkBhcHAuZ2V0KCIvaXRlbXMve2l0ZW1faWR9IikKZGVmIHJlYWRfaXRlbShpdGVtX2lkOiBpbnQsIHE6IHN0ciA9IE5vbmUpOgogICAgcmV0dXJuIHsiaXRlbV9pZCI6IGl0ZW1faWQsICJxIjogcX0KYGBgCgoqIFlvdSBzaG91bGQgbm93IGhhdmUgYSBkaXJlY3Rvcnkgc3RydWN0dXJlIGxpa2U6CgpgYGAKLgrilJzilIDilIAgYXBwCuKUgiAgIOKUlOKUgOKUgCBtYWluLnB5CuKUlOKUgOKUgCBEb2NrZXJmaWxlCmBgYAoKKiBHbyB0byB0aGUgcHJvamVjdCBkaXJlY3RvcnkgKGluIHdoZXJlIHlvdXIgYERvY2tlcmZpbGVgIGlzLCBjb250YWluaW5nIHlvdXIgYGFwcGAgZGlyZWN0b3J5KS4KKiBCdWlsZCB5b3VyIEZhc3RBUEkgaW1hZ2U6CgpgYGBiYXNoCmRvY2tlciBidWlsZCAtdCBteWltYWdlIC4KYGBgCgoqIFJ1biBhIGNvbnRhaW5lciBiYXNlZCBvbiB5b3VyIGltYWdlOgoKYGBgYmFzaApkb2NrZXIgcnVuIC1kIC0tbmFtZSBteWNvbnRhaW5lciAtcCA4MDo4MCBteWltYWdlCmBgYAoKTm93IHlvdSBoYXZlIGFuIG9wdGltaXplZCBGYXN0QVBJIHNlcnZlciBpbiBhIERvY2tlciBjb250YWluZXIuIEF1dG8tdHVuZWQgZm9yIHlvdXIgY3VycmVudCBzZXJ2ZXIgKGFuZCBudW1iZXIgb2YgQ1BVIGNvcmVzKS4KCiMjIyBDaGVjayBpdAoKWW91IHNob3VsZCBiZSBhYmxlIHRvIGNoZWNrIGl0IGluIHlvdXIgRG9ja2VyIGNvbnRhaW5lcidzIFVSTCwgZm9yIGV4YW1wbGU6IDxhIGhyZWY9Imh0dHA6Ly8xOTIuMTY4Ljk5LjEwMC9pdGVtcy81P3E9c29tZXF1ZXJ5IiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovLzE5Mi4xNjguOTkuMTAwL2l0ZW1zLzU/cT1zb21lcXVlcnk8L2E+IG9yIDxhIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjEvaXRlbXMvNT9xPXNvbWVxdWVyeSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly8xMjcuMC4wLjEvaXRlbXMvNT9xPXNvbWVxdWVyeTwvYT4gKG9yIGVxdWl2YWxlbnQsIHVzaW5nIHlvdXIgRG9ja2VyIGhvc3QpLgoKWW91IHdpbGwgc2VlIHNvbWV0aGluZyBsaWtlOgoKYGBgSlNPTgp7Iml0ZW1faWQiOiA1LCAicSI6ICJzb21lcXVlcnkifQpgYGAKCiMjIyBJbnRlcmFjdGl2ZSBBUEkgZG9jcwoKTm93IHlvdSBjYW4gZ28gdG8gPGEgaHJlZj0iaHR0cDovLzE5Mi4xNjguOTkuMTAwL2RvY3MiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vMTkyLjE2OC45OS4xMDAvZG9jczwvYT4gb3IgPGEgaHJlZj0iaHR0cDovLzEyNy4wLjAuMS9kb2NzIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovLzEyNy4wLjAuMS9kb2NzPC9hPiAob3IgZXF1aXZhbGVudCwgdXNpbmcgeW91ciBEb2NrZXIgaG9zdCkuCgpZb3Ugd2lsbCBzZWUgdGhlIGF1dG9tYXRpYyBpbnRlcmFjdGl2ZSBBUEkgZG9jdW1lbnRhdGlvbiAocHJvdmlkZWQgYnkgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkiIHRhcmdldD0iX2JsYW5rIj5Td2FnZ2VyIFVJPC9hPik6CgohW1N3YWdnZXIgVUldKGh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL2luZGV4L2luZGV4LTAxLXN3YWdnZXItdWktc2ltcGxlLnBuZykKCiMjIyBBbHRlcm5hdGl2ZSBBUEkgZG9jcwoKQW5kIHlvdSBjYW4gYWxzbyBnbyB0byA8YSBocmVmPSJodHRwOi8vMTkyLjE2OC45OS4xMDAvcmVkb2MiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vMTkyLjE2OC45OS4xMDAvcmVkb2M8L2E+IG9yIDxhIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjEvcmVkb2MiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vMTI3LjAuMC4xL3JlZG9jPC9hPihvciBlcXVpdmFsZW50LCB1c2luZyB5b3VyIERvY2tlciBob3N0KS4KCllvdSB3aWxsIHNlZSB0aGUgYWx0ZXJuYXRpdmUgYXV0b21hdGljIGRvY3VtZW50YXRpb24gKHByb3ZpZGVkIGJ5IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9SZWJpbGx5L1JlRG9jIiB0YXJnZXQ9Il9ibGFuayI+UmVEb2M8L2E+KToKCiFbUmVEb2NdKGh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vaW1nL2luZGV4L2luZGV4LTAyLXJlZG9jLXNpbXBsZS5wbmcpCgojIyBEZXBlbmRlbmNpZXMgYW5kIHBhY2thZ2VzCgpZb3Ugd2lsbCBwcm9iYWJseSBhbHNvIHdhbnQgdG8gYWRkIGFueSBkZXBlbmRlbmNpZXMgZm9yIHlvdXIgYXBwIGFuZCBwaW4gdGhlbSB0byBhIHNwZWNpZmljIHZlcnNpb24sIHByb2JhYmx5IGluY2x1ZGluZyBVdmljb3JuLCBHdW5pY29ybiwgYW5kIEZhc3RBUEkuCgpUaGlzIHdheSB5b3UgY2FuIG1ha2Ugc3VyZSB5b3VyIGFwcCBhbHdheXMgd29ya3MgYXMgZXhwZWN0ZWQuCgpZb3UgY291bGQgaW5zdGFsbCBwYWNrYWdlcyB3aXRoIGBwaXBgIGNvbW1hbmRzIGluIHlvdXIgYERvY2tlcmZpbGVgLCB1c2luZyBhIGByZXF1aXJlbWVudHMudHh0YCwgb3IgZXZlbiB1c2luZyBbUG9ldHJ5XShodHRwczovL3B5dGhvbi1wb2V0cnkub3JnLykuCgpBbmQgdGhlbiB5b3UgY2FuIHVwZ3JhZGUgdGhvc2UgZGVwZW5kZW5jaWVzIGluIGEgY29udHJvbGxlZCB3YXksIHJ1bm5pbmcgeW91ciB0ZXN0cywgbWFraW5nIHN1cmUgdGhhdCBldmVyeXRoaW5nIHdvcmtzLCBidXQgd2l0aG91dCBicmVha2luZyB5b3VyIHByb2R1Y3Rpb24gYXBwbGljYXRpb24gaWYgc29tZSBuZXcgdmVyc2lvbiBpcyBub3QgY29tcGF0aWJsZS4KCiMjIyBVc2luZyBQb2V0cnkKCkhlcmUncyBhIHNtYWxsIGV4YW1wbGUgb2Ygb25lIG9mIHRoZSB3YXlzIHlvdSBjb3VsZCBpbnN0YWxsIHlvdXIgZGVwZW5kZW5jaWVzIG1ha2luZyBzdXJlIHlvdSBoYXZlIGEgcGlubmVkIHZlcnNpb24gZm9yIGVhY2ggcGFja2FnZS4KCkxldCdzIHNheSB5b3UgaGF2ZSBhIHByb2plY3QgbWFuYWdlZCB3aXRoIFtQb2V0cnldKGh0dHBzOi8vcHl0aG9uLXBvZXRyeS5vcmcvKSwgc28sIHlvdSBoYXZlIHlvdXIgcGFja2FnZSBkZXBlbmRlbmNpZXMgaW4gYSBmaWxlIGBweXByb2plY3QudG9tbGAuIEFuZCBwb3NzaWJseSBhIGZpbGUgYHBvZXRyeS5sb2NrYC4KClRoZW4geW91IGNvdWxkIGhhdmUgYSBgRG9ja2VyZmlsZWAgdXNpbmcgRG9ja2VyIG11bHRpLXN0YWdlIGJ1aWxkaW5nIHdpdGg6CgpgYGBEb2NrZXJmaWxlCkZST00gcHl0aG9uOjMuMTEgYXMgcmVxdWlyZW1lbnRzLXN0YWdlCgpXT1JLRElSIC90bXAKClJVTiBwaXAgaW5zdGFsbCBwb2V0cnkKCkNPUFkgLi9weXByb2plY3QudG9tbCAuL3BvZXRyeS5sb2NrKiAvdG1wLwoKUlVOIHBvZXRyeSBleHBvcnQgLWYgcmVxdWlyZW1lbnRzLnR4dCAtLW91dHB1dCByZXF1aXJlbWVudHMudHh0IC0td2l0aG91dC1oYXNoZXMKCkZST00gdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpOnB5dGhvbjMuMTEKCkNPUFkgLS1mcm9tPXJlcXVpcmVtZW50cy1zdGFnZSAvdG1wL3JlcXVpcmVtZW50cy50eHQgL2FwcC9yZXF1aXJlbWVudHMudHh0CgpSVU4gcGlwIGluc3RhbGwgLS1uby1jYWNoZS1kaXIgLS11cGdyYWRlIC1yIC9hcHAvcmVxdWlyZW1lbnRzLnR4dAoKQ09QWSAuL2FwcCAvYXBwCmBgYAoKVGhhdCB3aWxsOgoKKiBJbnN0YWxsIHBvZXRyeSBhbmQgY29uZmlndXJlIGl0IGZvciBydW5uaW5nIGluc2lkZSBvZiB0aGUgRG9ja2VyIGNvbnRhaW5lci4KKiBDb3B5IHlvdXIgYXBwbGljYXRpb24gcmVxdWlyZW1lbnRzLgogICAgKiBCZWNhdXNlIGl0IHVzZXMgYC4vcG9ldHJ5LmxvY2sqYCAoZW5kaW5nIHdpdGggYSBgKmApLCBpdCB3b24ndCBjcmFzaCBpZiB0aGF0IGZpbGUgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCiogSW5zdGFsbCB0aGUgZGVwZW5kZW5jaWVzLgoqIFRoZW4gY29weSB5b3VyIGFwcCBjb2RlLgoKSXQncyBpbXBvcnRhbnQgdG8gY29weSB0aGUgYXBwIGNvZGUgKmFmdGVyKiBpbnN0YWxsaW5nIHRoZSBkZXBlbmRlbmNpZXMsIHRoYXQgd2F5IHlvdSBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgRG9ja2VyJ3MgY2FjaGUuIFRoYXQgd2F5IGl0IHdvbid0IGhhdmUgdG8gaW5zdGFsbCBldmVyeXRoaW5nIGZyb20gc2NyYXRjaCBldmVyeSB0aW1lIHlvdSB1cGRhdGUgeW91ciBhcHBsaWNhdGlvbiBmaWxlcywgb25seSB3aGVuIHlvdSBhZGQgbmV3IGRlcGVuZGVuY2llcy4KClRoaXMgYWxzbyBhcHBsaWVzIGZvciBhbnkgb3RoZXIgd2F5IHlvdSB1c2UgdG8gaW5zdGFsbCB5b3VyIGRlcGVuZGVuY2llcy4gSWYgeW91IHVzZSBhIGByZXF1aXJlbWVudHMudHh0YCwgY29weSBpdCBhbG9uZSBhbmQgaW5zdGFsbCBhbGwgdGhlIGRlcGVuZGVuY2llcyBvbiB0aGUgdG9wIG9mIHRoZSBgRG9ja2VyZmlsZWAsIGFuZCBhZGQgeW91ciBhcHAgY29kZSBhZnRlciBpdC4KCiMjIEFkdmFuY2VkIHVzYWdlCgojIyMgRW52aXJvbm1lbnQgdmFyaWFibGVzCgpUaGVzZSBhcmUgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IHlvdSBjYW4gc2V0IGluIHRoZSBjb250YWluZXIgdG8gY29uZmlndXJlIGl0IGFuZCB0aGVpciBkZWZhdWx0IHZhbHVlczoKCiMjIyMgYE1PRFVMRV9OQU1FYAoKVGhlIFB5dGhvbiAibW9kdWxlIiAoZmlsZSkgdG8gYmUgaW1wb3J0ZWQgYnkgR3VuaWNvcm4sIHRoaXMgbW9kdWxlIHdvdWxkIGNvbnRhaW4gdGhlIGFjdHVhbCBhcHBsaWNhdGlvbiBpbiBhIHZhcmlhYmxlLgoKQnkgZGVmYXVsdDoKCiogYGFwcC5tYWluYCBpZiB0aGVyZSdzIGEgZmlsZSBgL2FwcC9hcHAvbWFpbi5weWAgb3IKKiBgbWFpbmAgaWYgdGhlcmUncyBhIGZpbGUgYC9hcHAvbWFpbi5weWAKCkZvciBleGFtcGxlLCBpZiB5b3VyIG1haW4gZmlsZSB3YXMgYXQgYC9hcHAvY3VzdG9tX2FwcC9jdXN0b21fbWFpbi5weWAsIHlvdSBjb3VsZCBzZXQgaXQgbGlrZToKCmBgYGJhc2gKZG9ja2VyIHJ1biAtZCAtcCA4MDo4MCAtZSBNT0RVTEVfTkFNRT0iY3VzdG9tX2FwcC5jdXN0b21fbWFpbiIgbXlpbWFnZQpgYGAKCiMjIyMgYFZBUklBQkxFX05BTUVgCgpUaGUgdmFyaWFibGUgaW5zaWRlIG9mIHRoZSBQeXRob24gbW9kdWxlIHRoYXQgY29udGFpbnMgdGhlIEZhc3RBUEkgYXBwbGljYXRpb24uCgpCeSBkZWZhdWx0OgoKKiBgYXBwYAoKRm9yIGV4YW1wbGUsIGlmIHlvdXIgbWFpbiBQeXRob24gZmlsZSBoYXMgc29tZXRoaW5nIGxpa2U6CgpgYGBQeXRob24KZnJvbSBmYXN0YXBpIGltcG9ydCBGYXN0QVBJCgphcGkgPSBGYXN0QVBJKCkKCgpAYXBpLmdldCgiLyIpCmRlZiByZWFkX3Jvb3QoKToKICAgIHJldHVybiB7IkhlbGxvIjogIldvcmxkIn0KYGBgCgpJbiB0aGlzIGNhc2UgYGFwaWAgd291bGQgYmUgdGhlIHZhcmlhYmxlIHdpdGggdGhlIEZhc3RBUEkgYXBwbGljYXRpb24uIFlvdSBjb3VsZCBzZXQgaXQgbGlrZToKCmBgYGJhc2gKZG9ja2VyIHJ1biAtZCAtcCA4MDo4MCAtZSBWQVJJQUJMRV9OQU1FPSJhcGkiIG15aW1hZ2UKYGBgCgojIyMjIGBBUFBfTU9EVUxFYAoKVGhlIHN0cmluZyB3aXRoIHRoZSBQeXRob24gbW9kdWxlIGFuZCB0aGUgdmFyaWFibGUgbmFtZSBwYXNzZWQgdG8gR3VuaWNvcm4uCgpCeSBkZWZhdWx0LCBzZXQgYmFzZWQgb24gdGhlIHZhcmlhYmxlcyBgTU9EVUxFX05BTUVgIGFuZCBgVkFSSUFCTEVfTkFNRWA6CgoqIGBhcHAubWFpbjphcHBgIG9yCiogYG1haW46YXBwYAoKWW91IGNhbiBzZXQgaXQgbGlrZToKCmBgYGJhc2gKZG9ja2VyIHJ1biAtZCAtcCA4MDo4MCAtZSBBUFBfTU9EVUxFPSJjdXN0b21fYXBwLmN1c3RvbV9tYWluOmFwaSIgbXlpbWFnZQpgYGAKCiMjIyMgYEdVTklDT1JOX0NPTkZgCgpUaGUgcGF0aCB0byBhIEd1bmljb3JuIFB5dGhvbiBjb25maWd1cmF0aW9uIGZpbGUuCgpCeSBkZWZhdWx0OgoKKiBgL2FwcC9ndW5pY29ybl9jb25mLnB5YCBpZiBpdCBleGlzdHMKKiBgL2FwcC9hcHAvZ3VuaWNvcm5fY29uZi5weWAgaWYgaXQgZXhpc3RzCiogYC9ndW5pY29ybl9jb25mLnB5YCAodGhlIGluY2x1ZGVkIGRlZmF1bHQpCgpZb3UgY2FuIHNldCBpdCBsaWtlOgoKYGBgYmFzaApkb2NrZXIgcnVuIC1kIC1wIDgwOjgwIC1lIEdVTklDT1JOX0NPTkY9Ii9hcHAvY3VzdG9tX2d1bmljb3JuX2NvbmYucHkiIG15aW1hZ2UKYGBgCgpZb3UgY2FuIHVzZSB0aGUgW2NvbmZpZyBmaWxlIGZyb20gdGhlIGJhc2UgaW1hZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWRvY2tlci9ibG9iL21hc3Rlci9kb2NrZXItaW1hZ2VzL2d1bmljb3JuX2NvbmYucHkpIGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdXJzLgoKIyMjIyBgV09SS0VSU19QRVJfQ09SRWAKClRoaXMgaW1hZ2Ugd2lsbCBjaGVjayBob3cgbWFueSBDUFUgY29yZXMgYXJlIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBzZXJ2ZXIgcnVubmluZyB5b3VyIGNvbnRhaW5lci4KCkl0IHdpbGwgc2V0IHRoZSBudW1iZXIgb2Ygd29ya2VycyB0byB0aGUgbnVtYmVyIG9mIENQVSBjb3JlcyBtdWx0aXBsaWVkIGJ5IHRoaXMgdmFsdWUuCgpCeSBkZWZhdWx0OgoKKiBgMWAKCllvdSBjYW4gc2V0IGl0IGxpa2U6CgpgYGBiYXNoCmRvY2tlciBydW4gLWQgLXAgODA6ODAgLWUgV09SS0VSU19QRVJfQ09SRT0iMyIgbXlpbWFnZQpgYGAKCklmIHlvdSB1c2VkIHRoZSB2YWx1ZSBgM2AgaW4gYSBzZXJ2ZXIgd2l0aCAyIENQVSBjb3JlcywgaXQgd291bGQgcnVuIDYgd29ya2VyIHByb2Nlc3Nlcy4KCllvdSBjYW4gdXNlIGZsb2F0aW5nIHBvaW50IHZhbHVlcyB0b28uCgpTbywgZm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGEgYmlnIHNlcnZlciAobGV0J3Mgc2F5LCB3aXRoIDggQ1BVIGNvcmVzKSBydW5uaW5nIHNldmVyYWwgYXBwbGljYXRpb25zLCBhbmQgeW91IGhhdmUgYSBGYXN0QVBJIGFwcGxpY2F0aW9uIHRoYXQgeW91IGtub3cgd29uJ3QgbmVlZCBoaWdoIHBlcmZvcm1hbmNlLiBBbmQgeW91IGRvbid0IHdhbnQgdG8gd2FzdGUgc2VydmVyIHJlc291cmNlcy4gWW91IGNvdWxkIG1ha2UgaXQgdXNlIGAwLjVgIHdvcmtlcnMgcGVyIENQVSBjb3JlLiBGb3IgZXhhbXBsZToKCmBgYGJhc2gKZG9ja2VyIHJ1biAtZCAtcCA4MDo4MCAtZSBXT1JLRVJTX1BFUl9DT1JFPSIwLjUiIG15aW1hZ2UKYGBgCgpJbiBhIHNlcnZlciB3aXRoIDggQ1BVIGNvcmVzLCB0aGlzIHdvdWxkIG1ha2UgaXQgc3RhcnQgb25seSA0IHdvcmtlciBwcm9jZXNzZXMuCgoqKk5vdGUqKjogQnkgZGVmYXVsdCwgaWYgYFdPUktFUlNfUEVSX0NPUkVgIGlzIGAxYCBhbmQgdGhlIHNlcnZlciBoYXMgb25seSAxIENQVSBjb3JlLCBpbnN0ZWFkIG9mIHN0YXJ0aW5nIDEgc2luZ2xlIHdvcmtlciwgaXQgd2lsbCBzdGFydCAyLiBUaGlzIGlzIHRvIGF2b2lkIGJhZCBwZXJmb3JtYW5jZSBhbmQgYmxvY2tpbmcgYXBwbGljYXRpb25zIChzZXJ2ZXIgYXBwbGljYXRpb24pIG9uIHNtYWxsIG1hY2hpbmVzIChzZXJ2ZXIgbWFjaGluZS9jbG91ZC9ldGMpLiBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIGBXRUJfQ09OQ1VSUkVOQ1lgLgoKIyMjIyBgTUFYX1dPUktFUlNgCgpTZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHdvcmtlcnMgdG8gdXNlLgoKWW91IGNhbiB1c2UgaXQgdG8gbGV0IHRoZSBpbWFnZSBjb21wdXRlIHRoZSBudW1iZXIgb2Ygd29ya2VycyBhdXRvbWF0aWNhbGx5IGJ1dCBtYWtpbmcgc3VyZSBpdCdzIGxpbWl0ZWQgdG8gYSBtYXhpbXVtLgoKVGhpcyBjYW4gYmUgdXNlZnVsLCBmb3IgZXhhbXBsZSwgaWYgZWFjaCB3b3JrZXIgdXNlcyBhIGRhdGFiYXNlIGNvbm5lY3Rpb24gYW5kIHlvdXIgZGF0YWJhc2UgaGFzIGEgbWF4aW11bSBsaW1pdCBvZiBvcGVuIGNvbm5lY3Rpb25zLgoKQnkgZGVmYXVsdCBpdCdzIG5vdCBzZXQsIG1lYW5pbmcgdGhhdCBpdCdzIHVubGltaXRlZC4KCllvdSBjYW4gc2V0IGl0IGxpa2U6CgpgYGBiYXNoCmRvY2tlciBydW4gLWQgLXAgODA6ODAgLWUgTUFYX1dPUktFUlM9IjI0IiBteWltYWdlCmBgYAoKVGhpcyB3b3VsZCBtYWtlIHRoZSBpbWFnZSBzdGFydCBhdCBtb3N0IDI0IHdvcmtlcnMsIGluZGVwZW5kZW50IG9mIGhvdyBtYW55IENQVSBjb3JlcyBhcmUgYXZhaWxhYmxlIGluIHRoZSBzZXJ2ZXIuCgojIyMjIGBXRUJfQ09OQ1VSUkVOQ1lgCgpPdmVycmlkZSB0aGUgYXV0b21hdGljIGRlZmluaXRpb24gb2YgbnVtYmVyIG9mIHdvcmtlcnMuCgpCeSBkZWZhdWx0OgoKKiBTZXQgdG8gdGhlIG51bWJlciBvZiBDUFUgY29yZXMgaW4gdGhlIGN1cnJlbnQgc2VydmVyIG11bHRpcGxpZWQgYnkgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGBXT1JLRVJTX1BFUl9DT1JFYC4gU28sIGluIGEgc2VydmVyIHdpdGggMiBjb3JlcywgYnkgZGVmYXVsdCBpdCB3aWxsIGJlIHNldCB0byBgMmAuCgpZb3UgY2FuIHNldCBpdCBsaWtlOgoKYGBgYmFzaApkb2NrZXIgcnVuIC1kIC1wIDgwOjgwIC1lIFdFQl9DT05DVVJSRU5DWT0iMiIgbXlpbWFnZQpgYGAKClRoaXMgd291bGQgbWFrZSB0aGUgaW1hZ2Ugc3RhcnQgMiB3b3JrZXIgcHJvY2Vzc2VzLCBpbmRlcGVuZGVudCBvZiBob3cgbWFueSBDUFUgY29yZXMgYXJlIGF2YWlsYWJsZSBpbiB0aGUgc2VydmVyLgoKIyMjIyBgSE9TVGAKClRoZSAiaG9zdCIgdXNlZCBieSBHdW5pY29ybiwgdGhlIElQIHdoZXJlIEd1bmljb3JuIHdpbGwgbGlzdGVuIGZvciByZXF1ZXN0cy4KCkl0IGlzIHRoZSBob3N0IGluc2lkZSBvZiB0aGUgY29udGFpbmVyLgoKU28sIGZvciBleGFtcGxlLCBpZiB5b3Ugc2V0IHRoaXMgdmFyaWFibGUgdG8gYDEyNy4wLjAuMWAsIGl0IHdpbGwgb25seSBiZSBhdmFpbGFibGUgaW5zaWRlIHRoZSBjb250YWluZXIsIG5vdCBpbiB0aGUgaG9zdCBydW5uaW5nIGl0LgoKSXQncyBpcyBwcm92aWRlZCBmb3IgY29tcGxldGVuZXNzLCBidXQgeW91IHByb2JhYmx5IHNob3VsZG4ndCBjaGFuZ2UgaXQuCgpCeSBkZWZhdWx0OgoKKiBgMC4wLjAuMGAKCiMjIyMgYFBPUlRgCgpUaGUgcG9ydCB0aGUgY29udGFpbmVyIHNob3VsZCBsaXN0ZW4gb24uCgpJZiB5b3UgYXJlIHJ1bm5pbmcgeW91ciBjb250YWluZXIgaW4gYSByZXN0cmljdGl2ZSBlbnZpcm9ubWVudCB0aGF0IGZvcmNlcyB5b3UgdG8gdXNlIHNvbWUgc3BlY2lmaWMgcG9ydCAobGlrZSBgODA4MGApIHlvdSBjYW4gc2V0IGl0IHdpdGggdGhpcyB2YXJpYWJsZS4KCkJ5IGRlZmF1bHQ6CgoqIGA4MGAKCllvdSBjYW4gc2V0IGl0IGxpa2U6CgpgYGBiYXNoCmRvY2tlciBydW4gLWQgLXAgODA6ODA4MCAtZSBQT1JUPSI4MDgwIiBteWltYWdlCmBgYAoKIyMjIyBgQklORGAKClRoZSBhY3R1YWwgaG9zdCBhbmQgcG9ydCBwYXNzZWQgdG8gR3VuaWNvcm4uCgpCeSBkZWZhdWx0LCBzZXQgYmFzZWQgb24gdGhlIHZhcmlhYmxlcyBgSE9TVGAgYW5kIGBQT1JUYC4KClNvLCBpZiB5b3UgZGlkbid0IGNoYW5nZSBhbnl0aGluZywgaXQgd2lsbCBiZSBzZXQgYnkgZGVmYXVsdCB0bzoKCiogYDAuMC4wLjA6ODBgCgpZb3UgY2FuIHNldCBpdCBsaWtlOgoKYGBgYmFzaApkb2NrZXIgcnVuIC1kIC1wIDgwOjgwODAgLWUgQklORD0iMC4wLjAuMDo4MDgwIiBteWltYWdlCmBgYAoKIyMjIyBgTE9HX0xFVkVMYAoKVGhlIGxvZyBsZXZlbCBmb3IgR3VuaWNvcm4uCgpPbmUgb2Y6CgoqIGBkZWJ1Z2AKKiBgaW5mb2AKKiBgd2FybmluZ2AKKiBgZXJyb3JgCiogYGNyaXRpY2FsYAoKQnkgZGVmYXVsdCwgc2V0IHRvIGBpbmZvYC4KCklmIHlvdSBuZWVkIHRvIHNxdWVlemUgbW9yZSBwZXJmb3JtYW5jZSBzYWNyaWZpY2luZyBsb2dnaW5nLCBzZXQgaXQgdG8gYHdhcm5pbmdgLCBmb3IgZXhhbXBsZToKCllvdSBjYW4gc2V0IGl0IGxpa2U6CgpgYGBiYXNoCmRvY2tlciBydW4gLWQgLXAgODA6ODA4MCAtZSBMT0dfTEVWRUw9Indhcm5pbmciIG15aW1hZ2UKYGBgCgojIyMjIGBXT1JLRVJfQ0xBU1NgCgpUaGUgY2xhc3MgdG8gYmUgdXNlZCBieSBHdW5pY29ybiBmb3IgdGhlIHdvcmtlcnMuCgpCeSBkZWZhdWx0LCBzZXQgdG8gYHV2aWNvcm4ud29ya2Vycy5Vdmljb3JuV29ya2VyYC4KClRoZSBmYWN0IHRoYXQgaXQgdXNlcyBVdmljb3JuIGlzIHdoYXQgYWxsb3dzIHVzaW5nIEFTR0kgZnJhbWV3b3JrcyBsaWtlIEZhc3RBUEksIGFuZCB0aGF0IGlzIGFsc28gd2hhdCBwcm92aWRlcyB0aGUgbWF4aW11bSBwZXJmb3JtYW5jZS4KCllvdSBwcm9iYWJseSBzaG91bGRuJ3QgY2hhbmdlIGl0LgoKQnV0IGlmIGZvciBzb21lIHJlYXNvbiB5b3UgbmVlZCB0byB1c2UgdGhlIGFsdGVybmF0aXZlIFV2aWNvcm4gd29ya2VyOiBgdXZpY29ybi53b3JrZXJzLlV2aWNvcm5IMTFXb3JrZXJgIHlvdSBjYW4gc2V0IGl0IHdpdGggdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCllvdSBjYW4gc2V0IGl0IGxpa2U6CgpgYGBiYXNoCmRvY2tlciBydW4gLWQgLXAgODA6ODA4MCAtZSBXT1JLRVJfQ0xBU1M9InV2aWNvcm4ud29ya2Vycy5Vdmljb3JuSDExV29ya2VyIiBteWltYWdlCmBgYAoKIyMjIyBgVElNRU9VVGAKCldvcmtlcnMgc2lsZW50IGZvciBtb3JlIHRoYW4gdGhpcyBtYW55IHNlY29uZHMgYXJlIGtpbGxlZCBhbmQgcmVzdGFydGVkLgoKUmVhZCBtb3JlIGFib3V0IGl0IGluIHRoZSBbR3VuaWNvcm4gZG9jczogdGltZW91dF0oaHR0cHM6Ly9kb2NzLmd1bmljb3JuLm9yZy9lbi9zdGFibGUvc2V0dGluZ3MuaHRtbCN0aW1lb3V0KS4KCkJ5IGRlZmF1bHQsIHNldCB0byBgMTIwYC4KCk5vdGljZSB0aGF0IFV2aWNvcm4gYW5kIEFTR0kgZnJhbWV3b3JrcyBsaWtlIEZhc3RBUEkgYXJlIGFzeW5jLCBub3Qgc3luYy4gU28gaXQncyBwcm9iYWJseSBzYWZlIHRvIGhhdmUgaGlnaGVyIHRpbWVvdXRzIHRoYW4gZm9yIHN5bmMgd29ya2Vycy4KCllvdSBjYW4gc2V0IGl0IGxpa2U6CgpgYGBiYXNoCmRvY2tlciBydW4gLWQgLXAgODA6ODA4MCAtZSBUSU1FT1VUPSIyMCIgbXlpbWFnZQpgYGAKCiMjIyMgYEtFRVBfQUxJVkVgCgpUaGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBmb3IgcmVxdWVzdHMgb24gYSBLZWVwLUFsaXZlIGNvbm5lY3Rpb24uCgpSZWFkIG1vcmUgYWJvdXQgaXQgaW4gdGhlIFtHdW5pY29ybiBkb2NzOiBrZWVwYWxpdmVdKGh0dHBzOi8vZG9jcy5ndW5pY29ybi5vcmcvZW4vc3RhYmxlL3NldHRpbmdzLmh0bWwja2VlcGFsaXZlKS4KCkJ5IGRlZmF1bHQsIHNldCB0byBgMmAuCgpZb3UgY2FuIHNldCBpdCBsaWtlOgoKYGBgYmFzaApkb2NrZXIgcnVuIC1kIC1wIDgwOjgwODAgLWUgS0VFUF9BTElWRT0iMjAiIG15aW1hZ2UKYGBgCgojIyMjIGBHUkFDRUZVTF9USU1FT1VUYAoKVGltZW91dCBmb3IgZ3JhY2VmdWwgd29ya2VycyByZXN0YXJ0LgoKUmVhZCBtb3JlIGFib3V0IGl0IGluIHRoZSBbR3VuaWNvcm4gZG9jczogZ3JhY2VmdWwtdGltZW91dF0oaHR0cHM6Ly9kb2NzLmd1bmljb3JuLm9yZy9lbi9zdGFibGUvc2V0dGluZ3MuaHRtbCNncmFjZWZ1bC10aW1lb3V0KS4KCkJ5IGRlZmF1bHQsIHNldCB0byBgMTIwYC4KCllvdSBjYW4gc2V0IGl0IGxpa2U6CgpgYGBiYXNoCmRvY2tlciBydW4gLWQgLXAgODA6ODA4MCAtZSBHUkFDRUZVTF9USU1FT1VUPSIyMCIgbXlpbWFnZQpgYGAKCiMjIyMgYEFDQ0VTU19MT0dgCgpUaGUgYWNjZXNzIGxvZyBmaWxlIHRvIHdyaXRlIHRvLgoKQnkgZGVmYXVsdCBgIi0iYCwgd2hpY2ggbWVhbnMgc3Rkb3V0IChwcmludCBpbiB0aGUgRG9ja2VyIGxvZ3MpLgoKSWYgeW91IHdhbnQgdG8gZGlzYWJsZSBgQUNDRVNTX0xPR2AsIHNldCBpdCB0byBhbiBlbXB0eSB2YWx1ZS4KCkZvciBleGFtcGxlLCB5b3UgY291bGQgZGlzYWJsZSBpdCB3aXRoOgoKYGBgYmFzaApkb2NrZXIgcnVuIC1kIC1wIDgwOjgwODAgLWUgQUNDRVNTX0xPRz0gbXlpbWFnZQpgYGAKCiMjIyMgYEVSUk9SX0xPR2AKClRoZSBlcnJvciBsb2cgZmlsZSB0byB3cml0ZSB0by4KCkJ5IGRlZmF1bHQgYCItImAsIHdoaWNoIG1lYW5zIHN0ZGVyciAocHJpbnQgaW4gdGhlIERvY2tlciBsb2dzKS4KCklmIHlvdSB3YW50IHRvIGRpc2FibGUgYEVSUk9SX0xPR2AsIHNldCBpdCB0byBhbiBlbXB0eSB2YWx1ZS4KCkZvciBleGFtcGxlLCB5b3UgY291bGQgZGlzYWJsZSBpdCB3aXRoOgoKYGBgYmFzaApkb2NrZXIgcnVuIC1kIC1wIDgwOjgwODAgLWUgRVJST1JfTE9HPSBteWltYWdlCmBgYAoKIyMjIyBgR1VOSUNPUk5fQ01EX0FSR1NgCgpBbnkgYWRkaXRpb25hbCBjb21tYW5kIGxpbmUgc2V0dGluZ3MgZm9yIEd1bmljb3JuIGNhbiBiZSBwYXNzZWQgaW4gdGhlIGBHVU5JQ09STl9DTURfQVJHU2AgZW52aXJvbm1lbnQgdmFyaWFibGUuCgpSZWFkIG1vcmUgYWJvdXQgaXQgaW4gdGhlIFtHdW5pY29ybiBkb2NzOiBTZXR0aW5nc10oaHR0cHM6Ly9kb2NzLmd1bmljb3JuLm9yZy9lbi9zdGFibGUvc2V0dGluZ3MuaHRtbCNzZXR0aW5ncykuCgpUaGVzZSBzZXR0aW5ncyB3aWxsIGhhdmUgcHJlY2VkZW5jZSBvdmVyIHRoZSBvdGhlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIGFueSBHdW5pY29ybiBjb25maWcgZmlsZS4KCkZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhIGN1c3RvbSBUTFMvU1NMIGNlcnRpZmljYXRlIHRoYXQgeW91IHdhbnQgdG8gdXNlLCB5b3UgY291bGQgY29weSB0aGVtIHRvIHRoZSBEb2NrZXIgaW1hZ2Ugb3IgbW91bnQgdGhlbSBpbiB0aGUgY29udGFpbmVyLCBhbmQgc2V0IFtgLS1rZXlmaWxlYCBhbmQgYC0tY2VydGZpbGVgXShodHRwOi8vZG9jcy5ndW5pY29ybi5vcmcvZW4vbGF0ZXN0L3NldHRpbmdzLmh0bWwjc3NsKSB0byB0aGUgbG9jYXRpb24gb2YgdGhlIGZpbGVzLCBmb3IgZXhhbXBsZToKCmBgYGJhc2gKZG9ja2VyIHJ1biAtZCAtcCA4MDo4MDgwIC1lIEdVTklDT1JOX0NNRF9BUkdTPSItLWtleWZpbGU9L3NlY3JldHMva2V5LnBlbSAtLWNlcnRmaWxlPS9zZWNyZXRzL2NlcnQucGVtIiAtZSBQT1JUPTQ0MyBteWltYWdlCmBgYAoKKipOb3RlKio6IGluc3RlYWQgb2YgaGFuZGxpbmcgVExTL1NTTCB5b3Vyc2VsZiBhbmQgY29uZmlndXJpbmcgaXQgaW4gdGhlIGNvbnRhaW5lciwgaXQncyByZWNvbW1lbmRlZCB0byB1c2UgYSAiVExTIFRlcm1pbmF0aW9uIFByb3h5IiBsaWtlIFtUcmFlZmlrXShodHRwczovL2RvY3MudHJhZWZpay5pby8pLiBZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCBpdCBpbiB0aGUgW0Zhc3RBUEkgZG9jdW1lbnRhdGlvbiBhYm91dCBIVFRQU10oaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9kZXBsb3ltZW50LyNodHRwcykuCgojIyMjIGBQUkVfU1RBUlRfUEFUSGAKClRoZSBwYXRoIHdoZXJlIHRvIGZpbmQgdGhlIHByZS1zdGFydCBzY3JpcHQuCgpCeSBkZWZhdWx0LCBzZXQgdG8gYC9hcHAvcHJlc3RhcnQuc2hgLgoKWW91IGNhbiBzZXQgaXQgbGlrZToKCmBgYGJhc2gKZG9ja2VyIHJ1biAtZCAtcCA4MDo4MDgwIC1lIFBSRV9TVEFSVF9QQVRIPSIvY3VzdG9tL3NjcmlwdC5zaCIgbXlpbWFnZQpgYGAKCiMjIyBDdXN0b20gR3VuaWNvcm4gY29uZmlndXJhdGlvbiBmaWxlCgpUaGUgaW1hZ2UgaW5jbHVkZXMgYSBkZWZhdWx0IEd1bmljb3JuIFB5dGhvbiBjb25maWcgZmlsZSBhdCBgL2d1bmljb3JuX2NvbmYucHlgLgoKSXQgdXNlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGRlY2xhcmVkIGFib3ZlIHRvIHNldCBhbGwgdGhlIGNvbmZpZ3VyYXRpb25zLgoKWW91IGNhbiBvdmVycmlkZSBpdCBieSBpbmNsdWRpbmcgYSBmaWxlIGluOgoKKiBgL2FwcC9ndW5pY29ybl9jb25mLnB5YAoqIGAvYXBwL2FwcC9ndW5pY29ybl9jb25mLnB5YAoqIGAvZ3VuaWNvcm5fY29uZi5weWAKCiMjIyBDdXN0b20gYC9hcHAvcHJlc3RhcnQuc2hgCgpJZiB5b3UgbmVlZCB0byBydW4gYW55dGhpbmcgYmVmb3JlIHN0YXJ0aW5nIHRoZSBhcHAsIHlvdSBjYW4gYWRkIGEgZmlsZSBgcHJlc3RhcnQuc2hgIHRvIHRoZSBkaXJlY3RvcnkgYC9hcHBgLiBUaGUgaW1hZ2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGRldGVjdCBhbmQgcnVuIGl0IGJlZm9yZSBzdGFydGluZyBldmVyeXRoaW5nLgoKRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGFkZCBBbGVtYmljIFNRTCBtaWdyYXRpb25zICh3aXRoIFNRTEFMY2hlbXkpLCB5b3UgY291bGQgY3JlYXRlIGEgYC4vYXBwL3ByZXN0YXJ0LnNoYCBmaWxlIGluIHlvdXIgY29kZSBkaXJlY3RvcnkgKHRoYXQgd2lsbCBiZSBjb3BpZWQgYnkgeW91ciBgRG9ja2VyZmlsZWApIHdpdGg6CgpgYGBiYXNoCiMhIC91c3IvYmluL2VudiBiYXNoCgojIExldCB0aGUgREIgc3RhcnQKc2xlZXAgMTA7CiMgUnVuIG1pZ3JhdGlvbnMKYWxlbWJpYyB1cGdyYWRlIGhlYWQKYGBgCgphbmQgaXQgd291bGQgd2FpdCAxMCBzZWNvbmRzIHRvIGdpdmUgdGhlIGRhdGFiYXNlIHNvbWUgdGltZSB0byBzdGFydCBhbmQgdGhlbiBydW4gdGhhdCBgYWxlbWJpY2AgY29tbWFuZC4KCklmIHlvdSBuZWVkIHRvIHJ1biBhIFB5dGhvbiBzY3JpcHQgYmVmb3JlIHN0YXJ0aW5nIHRoZSBhcHAsIHlvdSBjb3VsZCBtYWtlIHRoZSBgL2FwcC9wcmVzdGFydC5zaGAgZmlsZSBydW4geW91ciBQeXRob24gc2NyaXB0LCB3aXRoIHNvbWV0aGluZyBsaWtlOgoKYGBgYmFzaAojISAvdXNyL2Jpbi9lbnYgYmFzaAoKIyBSdW4gY3VzdG9tIFB5dGhvbiBzY3JpcHQgYmVmb3JlIHN0YXJ0aW5nCnB5dGhvbiAvYXBwL215X2N1c3RvbV9wcmVzdGFydF9zY3JpcHQucHkKYGBgCgpZb3UgY2FuIGN1c3RvbWl6ZSB0aGUgbG9jYXRpb24gb2YgdGhlIHByZXN0YXJ0IHNjcmlwdCB3aXRoIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgUFJFX1NUQVJUX1BBVEhgIGRlc2NyaWJlZCBhYm92ZS4KCiMjIyBEZXZlbG9wbWVudCBsaXZlIHJlbG9hZAoKVGhlIGRlZmF1bHQgcHJvZ3JhbSB0aGF0IGlzIHJ1biBpcyBhdCBgL3N0YXJ0LnNoYC4gSXQgZG9lcyBldmVyeXRoaW5nIGRlc2NyaWJlZCBhYm92ZS4KClRoZXJlJ3MgYWxzbyBhIHZlcnNpb24gZm9yIGRldmVsb3BtZW50IHdpdGggbGl2ZSBhdXRvLXJlbG9hZCBhdDoKCmBgYGJhc2gKL3N0YXJ0LXJlbG9hZC5zaApgYGAKCiMjIyMgRGV0YWlscwoKRm9yIGRldmVsb3BtZW50LCBpdCdzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIG1vdW50IHRoZSBjb250ZW50cyBvZiB0aGUgYXBwbGljYXRpb24gY29kZSBpbnNpZGUgb2YgdGhlIGNvbnRhaW5lciBhcyBhIERvY2tlciAiaG9zdCB2b2x1bWUiLCB0byBiZSBhYmxlIHRvIGNoYW5nZSB0aGUgY29kZSBhbmQgdGVzdCBpdCBsaXZlLCB3aXRob3V0IGhhdmluZyB0byBidWlsZCB0aGUgaW1hZ2UgZXZlcnkgdGltZS4KCkluIHRoYXQgY2FzZSwgaXQncyBhbHNvIHVzZWZ1bCB0byBydW4gdGhlIHNlcnZlciB3aXRoIGxpdmUgYXV0by1yZWxvYWQsIHNvIHRoYXQgaXQgcmUtc3RhcnRzIGF1dG9tYXRpY2FsbHkgYXQgZXZlcnkgY29kZSBjaGFuZ2UuCgpUaGUgYWRkaXRpb25hbCBzY3JpcHQgYC9zdGFydC1yZWxvYWQuc2hgIHJ1bnMgVXZpY29ybiBhbG9uZSAod2l0aG91dCBHdW5pY29ybikgYW5kIGluIGEgc2luZ2xlIHByb2Nlc3MuCgpJdCBpcyBpZGVhbCBmb3IgZGV2ZWxvcG1lbnQuCgojIyMjIFVzYWdlCgpGb3IgZXhhbXBsZSwgaW5zdGVhZCBvZiBydW5uaW5nOgoKYGBgYmFzaApkb2NrZXIgcnVuIC1kIC1wIDgwOjgwIG15aW1hZ2UKYGBgCgpZb3UgY291bGQgcnVuOgoKYGBgYmFzaApkb2NrZXIgcnVuIC1kIC1wIDgwOjgwIC12ICQocHdkKTovYXBwIG15aW1hZ2UgL3N0YXJ0LXJlbG9hZC5zaApgYGAKCiogYC12ICQocHdkKTovYXBwYDogbWVhbnMgdGhhdCB0aGUgZGlyZWN0b3J5IGAkKHB3ZClgIHNob3VsZCBiZSBtb3VudGVkIGFzIGEgdm9sdW1lIGluc2lkZSBvZiB0aGUgY29udGFpbmVyIGF0IGAvYXBwYC4KICAgICogYCQocHdkKWA6IHJ1bnMgYHB3ZGAgKCJwcmludCB3b3JraW5nIGRpcmVjdG9yeSIpIGFuZCBwdXRzIGl0IGFzIHBhcnQgb2YgdGhlIHN0cmluZy4KKiBgL3N0YXJ0LXJlbG9hZC5zaGA6IGFkZGluZyBzb21ldGhpbmcgKGxpa2UgYC9zdGFydC1yZWxvYWQuc2hgKSBhdCB0aGUgZW5kIG9mIHRoZSBjb21tYW5kLCByZXBsYWNlcyB0aGUgZGVmYXVsdCAiY29tbWFuZCIgd2l0aCB0aGlzIG9uZS4gSW4gdGhpcyBjYXNlLCBpdCByZXBsYWNlcyB0aGUgZGVmYXVsdCAoYC9zdGFydC5zaGApIHdpdGggdGhlIGRldmVsb3BtZW50IGFsdGVybmF0aXZlIGAvc3RhcnQtcmVsb2FkLnNoYC4KCiMjIyMgRGV2ZWxvcG1lbnQgbGl2ZSByZWxvYWQgLSBUZWNobmljYWwgRGV0YWlscwoKQXMgYC9zdGFydC1yZWxvYWQuc2hgIGRvZXNuJ3QgcnVuIHdpdGggR3VuaWNvcm4sIGFueSBvZiB0aGUgY29uZmlndXJhdGlvbnMgeW91IHB1dCBpbiBhIGBndW5pY29ybl9jb25mLnB5YCBmaWxlIHdvbid0IGFwcGx5LgoKQnV0IHRoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aWxsIHdvcmsgdGhlIHNhbWUgYXMgZGVzY3JpYmVkIGFib3ZlOgoKKiBgTU9EVUxFX05BTUVgCiogYFZBUklBQkxFX05BTUVgCiogYEFQUF9NT0RVTEVgCiogYEhPU1RgCiogYFBPUlRgCiogYExPR19MRVZFTGAKCiMjIPCfmqggQWxwaW5lIFB5dGhvbiBXYXJuaW5nCgpJbiBzaG9ydDogWW91IHByb2JhYmx5IHNob3VsZG4ndCB1c2UgQWxwaW5lIGZvciBQeXRob24gcHJvamVjdHMsIGluc3RlYWQgdXNlIHRoZSBgc2xpbWAgRG9ja2VyIGltYWdlIHZlcnNpb25zLgoKLS0tCgpEbyB5b3Ugd2FudCBtb3JlIGRldGFpbHM/IENvbnRpbnVlIHJlYWRpbmcg8J+RhwoKQWxwaW5lIGlzIG1vcmUgdXNlZnVsIGZvciBvdGhlciBsYW5ndWFnZXMgd2hlcmUgeW91IGJ1aWxkIGEgc3RhdGljIGJpbmFyeSBpbiBvbmUgRG9ja2VyIGltYWdlIHN0YWdlICh1c2luZyBtdWx0aS1zdGFnZSBEb2NrZXIgYnVpbGRpbmcpIGFuZCB0aGVuIGNvcHkgaXQgdG8gYSBzaW1wbGUgQWxwaW5lIGltYWdlLCBhbmQgdGhlbiBqdXN0IGV4ZWN1dGUgdGhhdCBiaW5hcnkuIEZvciBleGFtcGxlLCB1c2luZyBHby4KCkJ1dCBmb3IgUHl0aG9uLCBhcyBBbHBpbmUgZG9lc24ndCB1c2UgdGhlIHN0YW5kYXJkIHRvb2xpbmcgdXNlZCBmb3IgYnVpbGRpbmcgUHl0aG9uIGV4dGVuc2lvbnMsIHdoZW4gaW5zdGFsbGluZyBwYWNrYWdlcywgaW4gbWFueSBjYXNlcyBQeXRob24gKGBwaXBgKSB3b24ndCBmaW5kIGEgcHJlY29tcGlsZWQgaW5zdGFsbGFibGUgcGFja2FnZSAoYSAid2hlZWwiKSBmb3IgQWxwaW5lLiBBbmQgYWZ0ZXIgZGVidWdnaW5nIGxvdHMgb2Ygc3RyYW5nZSBlcnJvcnMgeW91IHdpbGwgcmVhbGl6ZSB0aGF0IHlvdSBoYXZlIHRvIGluc3RhbGwgYSBsb3Qgb2YgZXh0cmEgdG9vbGluZyBhbmQgYnVpbGQgYSBsb3Qgb2YgZGVwZW5kZW5jaWVzIGp1c3QgdG8gdXNlIHNvbWUgb2YgdGhlc2UgY29tbW9uIFB5dGhvbiBwYWNrYWdlcy4g8J+YqQoKVGhpcyBtZWFucyB0aGF0LCBhbHRob3VnaCB0aGUgb3JpZ2luYWwgQWxwaW5lIGltYWdlIG1pZ2h0IGhhdmUgYmVlbiBzbWFsbCwgeW91IGVuZCB1cCB3aXRoIGEgYW4gaW1hZ2Ugd2l0aCBhIHNpemUgY29tcGFyYWJsZSB0byB0aGUgc2l6ZSB5b3Ugd291bGQgaGF2ZSBnb3R0ZW4gaWYgeW91IGhhZCBqdXN0IHVzZWQgYSBzdGFuZGFyZCBQeXRob24gaW1hZ2UgKGJhc2VkIG9uIERlYmlhbiksIG9yIGluIHNvbWUgY2FzZXMgZXZlbiBsYXJnZXIuIPCfpK8KCkFuZCBpbiBhbGwgdGhvc2UgY2FzZXMsIGl0IHdpbGwgdGFrZSBtdWNoIGxvbmdlciB0byBidWlsZCwgY29uc3VtaW5nIG11Y2ggbW9yZSByZXNvdXJjZXMsIGJ1aWxkaW5nIGRlcGVuZGVuY2llcyBmb3IgbG9uZ2VyLCBhbmQgYWxzbyBpbmNyZWFzaW5nIGl0cyBjYXJib24gZm9vdHByaW50LCBhcyB5b3UgYXJlIHVzaW5nIG1vcmUgQ1BVIHRpbWUgYW5kIGVuZXJneSBmb3IgZWFjaCBidWlsZC4g8J+MswoKSWYgeW91IHdhbnQgc2xpbSBQeXRob24gaW1hZ2VzLCB5b3Ugc2hvdWxkIGluc3RlYWQgdHJ5IGFuZCB1c2UgdGhlIGBzbGltYCB2ZXJzaW9ucyB0aGF0IGFyZSBzdGlsbCBiYXNlZCBvbiBEZWJpYW4sIGJ1dCBhcmUgc21hbGxlci4g8J+kkwoKIyMgVGVzdHMKCkFsbCB0aGUgaW1hZ2UgdGFncywgY29uZmlndXJhdGlvbnMsIGVudmlyb25tZW50IHZhcmlhYmxlcyBhbmQgYXBwbGljYXRpb24gb3B0aW9ucyBhcmUgdGVzdGVkLgoKIyMgUmVsZWFzZSBOb3RlcwoKIyMjIExhdGVzdCBDaGFuZ2VzCgojIyMjIFVwZ3JhZGVzCgoqIOKshiBCdW1wIHV2aWNvcm5bc3RhbmRhcmRdIGZyb20gMC4zOC4wIHRvIDAuNDAuMC4gUFIgWyM0MTVdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvNDE1KSBieSBbQGRlcGVuZGFib3RbYm90XV0oaHR0cHM6Ly9naXRodWIuY29tL2FwcHMvZGVwZW5kYWJvdCkuCiog4qyGIEJ1bXAgZmFzdGFwaVthbGxdIGZyb20gMC4xMjEuMCB0byAwLjEyOC4wLiBQUiBbIzQxN10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC80MTcpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIYgQnVtcCB1dmljb3JuW3N0YW5kYXJkXSBmcm9tIDAuMzUuMCB0byAwLjM4LjAuIFBSIFsjMzkwXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzM5MCkgYnkgW0BkZXBlbmRhYm90W2JvdF1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL2RlcGVuZGFib3QpLgoqIOKshiBCdW1wIGZhc3RhcGlbYWxsXSBmcm9tIDAuMTE2LjAgdG8gMC4xMjEuMC4gUFIgWyMzOTddKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMzk3KSBieSBbQGRlcGVuZGFib3RbYm90XV0oaHR0cHM6Ly9naXRodWIuY29tL2FwcHMvZGVwZW5kYWJvdCkuCiog4qyGIEJ1bXAgZmFzdGFwaVthbGxdIGZyb20gMC4xMTUuMTIgdG8gMC4xMTYuMC4gUFIgWyMzNzZdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMzc2KSBieSBbQGRlcGVuZGFib3RbYm90XV0oaHR0cHM6Ly9naXRodWIuY29tL2FwcHMvZGVwZW5kYWJvdCkuCiog4qyGIEJ1bXAgdXZpY29ybltzdGFuZGFyZF0gZnJvbSAwLjM0LjIgdG8gMC4zNS4wLiBQUiBbIzM3NV0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zNzUpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIYgQnVtcCBmYXN0YXBpW2FsbF0gZnJvbSAwLjExNS45IHRvIDAuMTE1LjEyLiBQUiBbIzM2OF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zNjgpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIYgQnVtcCB1dmljb3JuW3N0YW5kYXJkXSBmcm9tIDAuMzQuMCB0byAwLjM0LjIuIFBSIFsjMzcwXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzM3MCkgYnkgW0BkZXBlbmRhYm90W2JvdF1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL2RlcGVuZGFib3QpLgoqIOKshiBCdW1wIGZhc3RhcGlbYWxsXSBmcm9tIDAuMTE1LjQgdG8gMC4xMTUuOS4gUFIgWyMzNjZdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMzY2KSBieSBbQGRlcGVuZGFib3RbYm90XV0oaHR0cHM6Ly9naXRodWIuY29tL2FwcHMvZGVwZW5kYWJvdCkuCiog4qyGIEJ1bXAgdXZpY29ybltzdGFuZGFyZF0gZnJvbSAwLjMyLjAgdG8gMC4zNC4wLiBQUiBbIzM2MV0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zNjEpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIYgQnVtcCBmYXN0YXBpW2FsbF0gZnJvbSAwLjg4LjAgdG8gMC4xMTUuNC4gUFIgWyMzNTRdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMzU0KSBieSBbQGRlcGVuZGFib3RbYm90XV0oaHR0cHM6Ly9naXRodWIuY29tL2FwcHMvZGVwZW5kYWJvdCkuCiog4qyGIEJ1bXAgdXZpY29ybltzdGFuZGFyZF0gZnJvbSAwLjIwLjAgdG8gMC4zMi4wLiBQUiBbIzM1Ml0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zNTIpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDwn5SlIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDMuNyBhbmQgMy44LiBQUiBbIzM1NV0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zNTUpIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCiog4qyGIEJ1bXAgZ3VuaWNvcm4gZnJvbSAyMi4wLjAgdG8gMjMuMC4wLiBQUiBbIzMwMF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zMDApIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIYgQnVtcCBndW5pY29ybiBmcm9tIDIxLjIuMCB0byAyMi4wLjAuIFBSIFsjMjg3XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzI4NykgYnkgW0BkZXBlbmRhYm90W2JvdF1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL2RlcGVuZGFib3QpLgoKIyMjIyBEb2NzCgoqIPCfk50gRGVwcmVjYXRlIHRoaXMgRG9ja2VyIGltYWdlLCB1c2UgVXZpY29ybiB3aXRoIGAtLXdvcmtlcnNgIOKcqC4gUFIgWyMzMDNdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMzAzKSBieSBbQHRpYW5nb2xvXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8pLgoqIPCfk50gQWRkIHNlY3VyaXR5IHBvbGljeS4gUFIgWyMyODNdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMjgzKSBieSBbQHRpYW5nb2xvXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8pLgoKIyMjIyBJbnRlcm5hbAoKKiDwn5G3IFVwZ3JhZGUgYWN0aW9ucy9jaGVja291dCBmcm9tIHY1IHRvIHY2LiBQUiBbIzQwNl0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC80MDYpIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCiog8J+RtyBVcGdyYWRlIGBsYXRlc3QtY2hhbmdlc2AgR2l0SHViIEFjdGlvbiBhbmQgcGluIGBhY3Rpb25zL2NoZWNrb3V0QHY1YC4gUFIgWyM0MDRdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvNDA0KSBieSBbQHRpYW5nb2xvXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8pLgoqIPCflKUgRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy45LiBQUiBbIzM5OF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zOTgpIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCiog4qyGIEJ1bXAgdGlhbmdvbG8vaXNzdWUtbWFuYWdlciBmcm9tIDAuNS4xIHRvIDAuNi4wLiBQUiBbIzM4N10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zODcpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIYgQnVtcCBhY3Rpb25zL3NldHVwLXB5dGhvbiBmcm9tIDUgdG8gNi4gUFIgWyMzODBdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMzgwKSBieSBbQGRlcGVuZGFib3RbYm90XV0oaHR0cHM6Ly9naXRodWIuY29tL2FwcHMvZGVwZW5kYWJvdCkuCiog4qyGIEJ1bXAgYWN0aW9ucy9sYWJlbGVyIGZyb20gNSB0byA2LiBQUiBbIzM4MV0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zODEpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIYgQnVtcCBhY3Rpb25zL2NoZWNrb3V0IGZyb20gNCB0byA1LiBQUiBbIzM3OV0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zNzkpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIYgQnVtcCB0aWFuZ29sby9sYXRlc3QtY2hhbmdlcyBmcm9tIDAuMy4yIHRvIDAuNC4wLiBQUiBbIzM3OF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zNzgpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIYgQnVtcCB0aWFuZ29sby9sYXRlc3QtY2hhbmdlcyBmcm9tIDAuMy4xIHRvIDAuMy4yLiBQUiBbIzM1N10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zNTcpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDwn5G3IFVwZGF0ZSBsYWJlbGVyIGNvbmZpZy4gUFIgWyMzNjVdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMzY1KSBieSBbQHRpYW5nb2xvXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8pLgoqIPCfkbcgQWRkIENJIExhYmVsZXIuIFBSIFsjMzY0XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzM2NCkgYnkgW0B0aWFuZ29sb10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvKS4KKiDwn5SlIFJlbW92ZSBvbGQgdW51c2VkIGZpbGVzLiBQUiBbIzM1Nl0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zNTYpIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCiog4qyGIEJ1bXAgdGlhbmdvbG8vaXNzdWUtbWFuYWdlciBmcm9tIDAuNS4wIHRvIDAuNS4xLiBQUiBbIzM0NF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zNDQpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDwn5G3IFVwZGF0ZSBgaXNzdWUtbWFuYWdlci55bWxgLiBQUiBbIzM0M10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zNDMpIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCiog8J+RtyBVcGRhdGUgYGxhdGVzdC1jaGFuZ2VzYCBHaXRIdWIgQWN0aW9uLiBQUiBbIzM0MF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zNDApIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCiog4qyGIEJ1bXAgZG9ja2VyL2J1aWxkLXB1c2gtYWN0aW9uIGZyb20gNSB0byA2LiBQUiBbIzI5M10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8yOTMpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDwn5OMIFVucGluIHRlc3RpbmcgZGVwZW5kZW5jaWVzLiBQUiBbIzMwNF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zMDQpIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCiog4qyGIEJ1bXAgZG9ja2VyL2xvZ2luLWFjdGlvbiBmcm9tIDEgdG8gMy4gUFIgWyMyODBdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMjgwKSBieSBbQGRlcGVuZGFib3RbYm90XV0oaHR0cHM6Ly9naXRodWIuY29tL2FwcHMvZGVwZW5kYWJvdCkuCiog4qyGIEJ1bXAgZG9ja2VyL3NldHVwLWJ1aWxkeC1hY3Rpb24gZnJvbSAxIHRvIDMuIFBSIFsjMjc5XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzI3OSkgYnkgW0BkZXBlbmRhYm90W2JvdF1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL2RlcGVuZGFib3QpLgoqIOKshiBCdW1wIGRvY2tlci9idWlsZC1wdXNoLWFjdGlvbiBmcm9tIDIgdG8gNS4gUFIgWyMyNzhdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMjc4KSBieSBbQGRlcGVuZGFib3RbYm90XV0oaHR0cHM6Ly9naXRodWIuY29tL2FwcHMvZGVwZW5kYWJvdCkuCiog4qyGIEJ1bXAgYWN0aW9ucy9zZXR1cC1weXRob24gZnJvbSA0IHRvIDUuIFBSIFsjMjc3XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzI3NykgYnkgW0BkZXBlbmRhYm90W2JvdF1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL2RlcGVuZGFib3QpLgoqIOKshiBVcGRhdGUgYmxhY2sgcmVxdWlyZW1lbnQgZnJvbSBeMjIuMTAgdG8gXjIzLjMuIFBSIFsjMjY4XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzI2OCkgYnkgW0BkZXBlbmRhYm90W2JvdF1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL2RlcGVuZGFib3QpLgoqIPCflKcgQWRkIEdpdEh1YiB0ZW1wbGF0ZXMgZm9yIGRpc2N1c3Npb25zIGFuZCB0ZW1wbGF0ZXMuIFBSIFsjMjgxXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzI4MSkgYnkgW0B0aWFuZ29sb10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvKS4KKiDwn5SnIFVwZGF0ZSBgbGF0ZXN0LWNoYW5nZXMueW1sYC4gUFIgWyMyNzZdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMjc2KSBieSBbQGFsZWpzZGV2XShodHRwczovL2dpdGh1Yi5jb20vYWxlanNkZXYpLgoKIyMjIDAuOC4wCgojIyMjIEZlYXR1cmVzCgoqIOKcqCBBZGQgc3VwcG9ydCBmb3IgbXVsdGktYXJjaCBidWlsZHMsIGluY2x1ZGluZyBzdXBwb3J0IGZvciBhcm02NCAoZS5nLiBNYWMgTTEpLiBQUiBbIzI3M10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8yNzMpIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCgojIyMjIERvY3MKCiog8J+TnSBVcGRhdGUgdGVzdCBiYWRnZSBpbiBgUkVBRE1FLm1kYC4gUFIgWyMyNzVdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMjc1KSBieSBbQGFsZWpzZGV2XShodHRwczovL2dpdGh1Yi5jb20vYWxlanNkZXYpLgoqIPCfk50gVXBkYXRlIHRlc3QgYmFkZ2UgaW4gYFJFQURNRS5tZGAuIFBSIFsjMjc0XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzI3NCkgYnkgW0BhbGVqc2Rldl0oaHR0cHM6Ly9naXRodWIuY29tL2FsZWpzZGV2KS4KCiMjIyMgVXBncmFkZXMKCiog4qyGIEJ1bXAgZ3VuaWNvcm4gZnJvbSAyMC4xLjAgdG8gMjEuMi4wLiBQUiBbIzI3MF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8yNzApIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIbvuI8gQnVtcCBmYXN0YXBpW2FsbF0gZnJvbSAwLjg3LjAgdG8gMC44OC4wLiBQUiBbIzIyMl0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8yMjIpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KCiMjIyMgSW50ZXJuYWwKCiog4qyGIFVwZGF0ZSBteXB5IHJlcXVpcmVtZW50IGZyb20gXjAuOTkxIHRvIF4xLjQuIFBSIFsjMjY5XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzI2OSkgYnkgW0BkZXBlbmRhYm90W2JvdF1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL2RlcGVuZGFib3QpLgoqIOKshiBCdW1wIGFjdGlvbnMvY2hlY2tvdXQgZnJvbSAzIHRvIDQuIFBSIFsjMjY2XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzI2NikgYnkgW0BkZXBlbmRhYm90W2JvdF1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL2RlcGVuZGFib3QpLgoqIOKshiBCdW1wIHBldGVyLWV2YW5zL2RvY2tlcmh1Yi1kZXNjcmlwdGlvbiBmcm9tIDMgdG8gNC4gUFIgWyMyNjddKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMjY3KSBieSBbQGRlcGVuZGFib3RbYm90XV0oaHR0cHM6Ly9naXRodWIuY29tL2FwcHMvZGVwZW5kYWJvdCkuCiog4qyGIEJ1bXAgYWN0aW9ucy9zZXR1cC1weXRob24gZnJvbSA0LjMuMCB0byA1LjAuMC4gUFIgWyMyNjVdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMjY1KSBieSBbQGRlcGVuZGFib3RbYm90XV0oaHR0cHM6Ly9naXRodWIuY29tL2FwcHMvZGVwZW5kYWJvdCkuCiog4qyGIEJ1bXAgdGlhbmdvbG8vaXNzdWUtbWFuYWdlciBmcm9tIDAuNC4wIHRvIDAuNS4wLiBQUiBbIzI2NF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8yNjQpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDwn5G3IFVwZGF0ZSBkZXBlbmRhYm90LiBQUiBbIzI1M10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8yNTMpIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCiog8J+RtyBVcGRhdGUgdG9rZW4gZm9yIGxhdGVzdCBjaGFuZ2VzLiBQUiBbIzI0N10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8yNDcpIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCiog8J+RtyBBZGQgR2l0SHViIEFjdGlvbiBmb3IgRG9ja2VyIEh1YiBkZXNjcmlwdGlvbi4gUFIgWyMyMjFdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMjIxKSBieSBbQHRpYW5nb2xvXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8pLgoqIOKshu+4jyBVcGRhdGUgbXlweSByZXF1aXJlbWVudCBmcm9tIF4wLjk3MSB0byBeMC45OTEuIFBSIFsjMjE0XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzIxNCkgYnkgW0BkZXBlbmRhYm90W2JvdF1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL2RlcGVuZGFib3QpLgoqIOKshu+4jyBVcGRhdGUgYXV0b2ZsYWtlIHJlcXVpcmVtZW50IGZyb20gXjEuMy4xIHRvIF4yLjAuMC4gUFIgWyMyMTVdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMjE1KSBieSBbQGRlcGVuZGFib3RbYm90XV0oaHR0cHM6Ly9naXRodWIuY29tL2FwcHMvZGVwZW5kYWJvdCkuCgojIyMgMC43LjAKCkhpZ2hsaWdodHMgb2YgdGhpcyByZWxlYXNlOgoKKiBTdXBwb3J0IGZvciBQeXRob24gMy4xMCBhbmQgMy4xMS4KKiBEZXByZWNhdGlvbiBvZiBQeXRob24gMy42LgogICAgKiBUaGUgbGFzdCBQeXRob24gMy42IGltYWdlIHRhZyB3YXMgcHVzaGVkIGFuZCBpcyBhdmFpbGFibGUgaW4gRG9ja2VyIEh1YiwgYnV0IGl0IHdvbid0IGJlIHVwZGF0ZWQgb3IgbWFpbnRhaW5lZCBhbnltb3JlLgogICAgKiBUaGUgbGFzdCBpbWFnZSB3aXRoIGEgZGF0ZSB0YWcgaXMgYHB5dGhvbjMuNi0yMDIyLTExLTI1YC4KKiBVcGdyYWRlZCB2ZXJzaW9ucyBvZiBhbGwgdGhlIGRlcGVuZGVuY2llcy4KCiMjIyMgRmVhdHVyZXMKCiog4pyoIEFkZCBzdXBwb3J0IGZvciBQeXRob24gMy4xMCBhbmQgMy4xMS4gUFIgWyMyMjBdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMjIwKSBieSBbQHRpYW5nb2xvXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8pLgoqIOKcqCBBZGQgUHl0aG9uIDMuOSBhbmQgUHl0aG9uIDMuOSBBbHBpbmUuIFBSIFsjNjddKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvNjcpIGJ5IFtAZ3JhdWU3MF0oaHR0cHM6Ly9naXRodWIuY29tL2dyYXVlNzApLgoKIyMjIyBCcmVha2luZyBDaGFuZ2VzCgoqIPCflKUgRGVwcmVjYXRlIGFuZCByZW1vdmUgUHl0aG9uIDMuNi4gUFIgWyMyMTFdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMjExKSBieSBbQHRpYW5nb2xvXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8pLgoKIyMjIyBVcGdyYWRlcwoKKiDirIbvuI8gVXBncmFkZSBGYXN0QVBJIGFuZCBVdmljb3JuIHZlcnNpb25zLiBQUiBbIzIxMl0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8yMTIpIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCiog4qyG77iPIFVwZ3JhZGUgcGFja2FnZXMgdG8gdGhlIGxhc3QgdmVyc2lvbiB0aGF0IHN1cHBvcnRzIFB5dGhvbiAzLjYuIFBSIFsjMjA3XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzIwNykgYnkgW0B0aWFuZ29sb10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvKS4KCiMjIyMgRG9jcwoKKiDwn5OdIEFkZCBub3RlIHRvIGRpc2NvdXJhZ2UgQWxwaW5lIHdpdGggUHl0aG9uLiBQUiBbIzEyMl0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8xMjIpIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCiog8J+TnSBBZGQgd2FybmluZyBmb3IgS3ViZXJuZXRlcywgd2hlbiB0byB1c2UgdGhpcyBpbWFnZS4gUFIgWyMxMjFdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMTIxKSBieSBbQHRpYW5nb2xvXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8pLgoqIOKcjyBGaXggdHlwbywgcmVwZWF0ZWQgd29yZCBvbiBSRUFETUUuIFBSIFsjOTZdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvOTYpIGJ5IFtAc2hlbGJ5bHNtaXRoXShodHRwczovL2dpdGh1Yi5jb20vc2hlbGJ5bHNtaXRoKS4KCiMjIyMgSW50ZXJuYWwKCiog4qyG77iPIFVwZGF0ZSBibGFjayByZXF1aXJlbWVudCBmcm9tIF4yMC44YjEgdG8gXjIyLjEwLiBQUiBbIzIxNl0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8yMTYpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIbvuI8gVXBkYXRlIGRvY2tlciByZXF1aXJlbWVudCBmcm9tIF41LjAuMyB0byBeNi4wLjEuIFBSIFsjMjE3XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzIxNykgYnkgW0BkZXBlbmRhYm90W2JvdF1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL2RlcGVuZGFib3QpLgoqIPCflKUgUmVtb3ZlIG9sZCBUcmF2aXMgZmlsZS4gUFIgWyMyMTldKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMjE5KSBieSBbQHRpYW5nb2xvXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8pLgoqIOKshu+4jyBVcGdyYWRlIENJIE9TLiBQUiBbIzIxOF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8yMTgpIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCiog8J+UpyBVcGRhdGUgRGVwZW5kYWJvdCBjb25maWcuIFBSIFsjMjEzXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzIxMykgYnkgW0B0aWFuZ29sb10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvKS4KKiDwn5G3IEFkZCBzY2hlZHVsZWQgQ0kuIFBSIFsjMjEwXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzIxMCkgYnkgW0B0aWFuZ29sb10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvKS4KKiDwn5G3IEFkZCBhbGxzLWdyZWVuIEdpdEh1YiBBY3Rpb24uIFBSIFsjMjA5XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzIwOSkgYnkgW0B0aWFuZ29sb10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvKS4KKiDwn5G3IERvIG5vdCBydW4gZG91YmxlIENJLCBydW4gb24gcHVzaCBvbmx5IG9uIG1hc3Rlci4gUFIgWyMyMDhdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMjA4KSBieSBbQHRpYW5nb2xvXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8pLgoqIOKshu+4jyBCdW1wIGFjdGlvbnMvc2V0dXAtcHl0aG9uIGZyb20gNC4xLjAgdG8gNC4zLjAuIFBSIFsjMjAxXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzIwMSkgYnkgW0BkZXBlbmRhYm90W2JvdF1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL2RlcGVuZGFib3QpLgoqIOKshu+4jyBVcGRhdGUgYmxhY2sgcmVxdWlyZW1lbnQgZnJvbSBeMTkuMTBiMCB0byBeMjAuOGIxLiBQUiBbIzExM10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8xMTMpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIbvuI8gVXBkYXRlIGRvY2tlciByZXF1aXJlbWVudCBmcm9tIF40LjIuMCB0byBeNS4wLjMuIFBSIFsjMTI1XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzEyNSkgYnkgW0BkZXBlbmRhYm90W2JvdF1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL2RlcGVuZGFib3QpLgoqIOKshu+4jyBCdW1wIGFjdGlvbnMvY2hlY2tvdXQgZnJvbSAyIHRvIDMuMS4wLiBQUiBbIzE5NF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8xOTQpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIbvuI8gVXBkYXRlIG15cHkgcmVxdWlyZW1lbnQgZnJvbSBeMC43NzAgdG8gXjAuOTcxLiBQUiBbIzE4NF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8xODQpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIbvuI8gVXBkYXRlIGlzb3J0IHJlcXVpcmVtZW50IGZyb20gXjQuMy4yMSB0byBeNS44LjAuIFBSIFsjMTE2XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzExNikgYnkgW0BkZXBlbmRhYm90W2JvdF1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL2RlcGVuZGFib3QpLgoqIOKshu+4jyBCdW1wIHRpYW5nb2xvL2lzc3VlLW1hbmFnZXIgZnJvbSAwLjIuMCB0byAwLjQuMC4gUFIgWyMxMTBdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMTEwKSBieSBbQGRlcGVuZGFib3RbYm90XV0oaHR0cHM6Ly9naXRodWIuY29tL2FwcHMvZGVwZW5kYWJvdCkuCiog4qyG77iPIEJ1bXAgYWN0aW9ucy9zZXR1cC1weXRob24gZnJvbSAxIHRvIDQuMS4wLiBQUiBbIzE4Ml0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8xODIpIGJ5IFtAZGVwZW5kYWJvdFtib3RdXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9kZXBlbmRhYm90KS4KKiDirIbvuI8gVXBkYXRlIHB5dGVzdCByZXF1aXJlbWVudCBmcm9tIF41LjQuMSB0byBeNy4wLjEuIFBSIFsjMTUzXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzE1MykgYnkgW0BkZXBlbmRhYm90W2JvdF1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL2RlcGVuZGFib3QpLgoqIPCfk4wgQWRkIGV4dGVybmFsIGRlcGVuZGVuY2llcyBhbmQgRGVwZW5kYWJvdCB0byBnZXQgYXV0b21hdGljIHVwZ3JhZGUgUFJzLiBQUiBbIzEwOV0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8xMDkpIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCiog8J+RtyBVcGRhdGUgTGF0ZXN0IENoYW5nZXMuIFBSIFsjMTA4XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzEwOCkgYnkgW0B0aWFuZ29sb10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvKS4KKiDwn5G3IEFsbG93IEdpdEh1YiB3b3JrZmxvdyBkaXNwYXRjaCB0byB0cmlnZ2VyIHRlc3QgYW5kIGRlcGxveS4gUFIgWyM5M10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC85MykgYnkgW0B0aWFuZ29sb10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvKS4KKiDwn5G3IEFkZCBsYXRlc3QtY2hhbmdlcyBHaXRIdWIgYWN0aW9uLCB1cGRhdGUgaXNzdWUtbWFuYWdlciwgYWRkIGZ1bmRpbmcuIFBSIFsjNzBdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvNzApIGJ5IFtAdGlhbmdvbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sbykuCgojIyMgMC42LjAKCiogQWRkIGRvY3MgYWJvdXQgaW5zdGFsbGluZyBhbmQgcGlubmluZyBkZXBlbmRlbmNpZXMuIFBSIFsjNDFdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvNDEpLgoqIEFkZCBgc2xpbWAgdmVyc2lvbi4gUFIgWyM0MF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC80MCkuCiogVXBkYXRlIGFuZCByZWZhY3RvciBicmluZ2luZyBhbGwgdGhlIG5ldyBmZWF0dXJlcyBmcm9tIHRoZSBiYXNlIGltYWdlLiBJbmNsdWRlczoKICAgICogQ2VudHJhbGl6ZSwgc2ltcGxpZnksIGFuZCBkZWR1cGxpY2F0ZSBjb2RlIGFuZCBzZXR1cAogICAgKiBNb3ZlIENJIHRvIEdpdEh1YiBhY3Rpb25zCiAgICAqIEFkZCBQeXRob24gMy44IChhbmQgQWxwaW5lKQogICAgKiBBZGQgbmV3IGNvbmZpZ3MgYW5kIGRvY3M6CiAgICAgICAgKiBgV09SS0VSX0NMQVNTYAogICAgICAgICogYFRJTUVPVVRgCiAgICAgICAgKiBgS0VFUF9BTElWRWAKICAgICAgICAqIGBHUkFDRUZVTF9USU1FT1VUYAogICAgICAgICogYEFDQ0VTU19MT0dgCiAgICAgICAgKiBgRVJST1JfTE9HYAogICAgICAgICogYEdVTklDT1JOX0NNRF9BUkdTYAogICAgICAgICogYE1BWF9XT1JLRVJTYAogICAgKiBQUiBbIzM5XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzM5KS4KKiBEaXNhYmxlIHBpcCBjYWNoZSBkdXJpbmcgaW5zdGFsbGF0aW9uLiBQUiBbIzM4XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzM4KS4KKiBNaWdyYXRlIGxvY2FsIGRldmVsb3BtZW50IGZyb20gUGlwZW52IHRvIFBvZXRyeS4gUFIgWyMzNF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8zNCkuCiogQWRkIGRvY3MgZm9yIGN1c3RvbSBgUFJFX1NUQVJUX1BBVEhgIGVudiB2YXIuIFBSIFsjMzNdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWZhc3RhcGktZG9ja2VyL3B1bGwvMzMpLgoKIyMjIDAuNS4wCgoqIFJlZmFjdG9yIHRlc3RzIHRvIHVzZSBlbnYgdmFycyBhbmQgYWRkIGltYWdlIHRhZ3MgZm9yIGVhY2ggYnVpbGQgZGF0ZSwgbGlrZSBgdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpOnB5dGhvbjMuNy0yMDE5LTEwLTE1YC4gUFIgWyMxN10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC8xNykuCiogVXBncmFkZSBUcmF2aXMuIFBSIFsjOV0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZmFzdGFwaS1kb2NrZXIvcHVsbC85KS4KCiMjIyAwLjQuMAoKKiBBZGQgc3VwcG9ydCBmb3IgbGl2ZSBhdXRvLXJlbG9hZCB3aXRoIGFuIGFkZGl0aW9uYWwgY3VzdG9tIHNjcmlwdCBgL3N0YXJ0LXJlbG9hZC5zaGAsIGNoZWNrIHRoZSBbdXBkYXRlZCBkb2N1bWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlciNkZXZlbG9wbWVudC1saXZlLXJlbG9hZCkuIFBSIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWRvY2tlci9wdWxsLzYiIHRhcmdldD0iX2JsYW5rIj4jNjwvYT4gaW4gcGFyZW50IGltYWdlLgoKIyMjIDAuMy4wCgoqIFNldCBgV09SS0VSU19QRVJfQ09SRWAgYnkgZGVmYXVsdCB0byBgMWAsIGFzIGl0IHNob3dzIHRvIGhhdmUgdGhlIGJlc3QgcGVyZm9ybWFuY2Ugb24gYmVuY2htYXJrcy4KKiBNYWtlIHRoZSBkZWZhdWx0IHdlYiBjb25jdXJyZW5jeSwgd2hlbiBgV0VCX0NPTkNVUlJFTkNZYCBpcyBub3Qgc2V0LCB0byBhIG1pbmltdW0gb2YgMiB3b3JrZXJzLiBUaGlzIGlzIHRvIGF2b2lkIGJhZCBwZXJmb3JtYW5jZSBhbmQgYmxvY2tpbmcgYXBwbGljYXRpb25zIChzZXJ2ZXIgYXBwbGljYXRpb24pIG9uIHNtYWxsIG1hY2hpbmVzIChzZXJ2ZXIgbWFjaGluZS9jbG91ZC9ldGMpLiBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIGBXRUJfQ09OQ1VSUkVOQ1lgLiBUaGlzIGFwcGxpZXMgZm9yIGV4YW1wbGUgaW4gdGhlIGNhc2Ugd2hlcmUgYFdPUktFUlNfUEVSX0NPUkVgIGlzIHNldCB0byBgMWAgKHRoZSBkZWZhdWx0KSBhbmQgdGhlIHNlcnZlciBoYXMgb25seSAxIENQVSBjb3JlLiBQUiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1mYXN0YXBpLWRvY2tlci9wdWxsLzYiIHRhcmdldD0iX2JsYW5rIj4jNjwvYT4gYW5kIFBSIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby91dmljb3JuLWd1bmljb3JuLWRvY2tlci9wdWxsLzUiIHRhcmdldD0iX2JsYW5rIj4jNTwvYT4gaW4gcGFyZW50IGltYWdlLgoKIyMjIDAuMi4wCgoqIE1ha2UgYC9zdGFydC5zaGAgcnVuIGluZGVwZW5kZW50bHksIHJlYWRpbmcgYW5kIGdlbmVyYXRpbmcgdXNlZCBkZWZhdWx0IGVudmlyb25tZW50IHZhcmlhYmxlcy4gQW5kIHJlbW92ZSBgL2VudHJ5cG9pbnQuc2hgIGFzIGl0IGRvZXNuJ3QgbW9kaWZ5IGFueXRoaW5nIGluIHRoZSBzeXN0ZW0sIG9ubHkgcmVhZHMgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBQUiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vdXZpY29ybi1ndW5pY29ybi1kb2NrZXIvcHVsbC80IiB0YXJnZXQ9Il9ibGFuayI+IzQ8L2E+IGluIHBhcmVudCBpbWFnZS4KCiMjIyAwLjEuMAoKKiBBZGQgc3VwcG9ydCBmb3IgYC9hcHAvcHJlc3RhcnQuc2hgLgoKIyMgTGljZW5zZQoKVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIGxpY2Vuc2UuCg== readmeEtag: '"d46e9484e3d36e8b5cb751c74c0b79b59f90e092"' readmeLastModified: Wed, 31 Dec 2025 09:04:42 GMT repositoryId: 164136678 description: >- 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: '2026-02-04T15:12:54Z' language: Python archived: false stars: 2909 watchers: 21 forks: 342 owner: tiangolo logo: https://avatars.githubusercontent.com/u/1326112?v=4 license: MIT repoEtag: '"6310c527e6a40f33d4e95c7109cd3a80ba51d61491316bef499b1c624ed0992d"' repoLastModified: Wed, 04 Feb 2026 15:12:54 GMT foundInMaster: true category: Server Implementations id: d0f3fc0bd35fcadacc8ed2c531780739 - source: - openapi3 tags - openapi31 tags repository: https://github.com/swagger-api/swagger-js v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIENsaWVudCA8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N3YWdnZXItYXBpL3N3YWdnZXIuaW8vd29yZHByZXNzL2ltYWdlcy9hc3NldHMvU1ctbG9nby1jbHIucG5nIiBoZWlnaHQ9IjUwIiBhbGlnbj0icmlnaHQiPgoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1qcy9hY3Rpb25zL3dvcmtmbG93cy9ub2RlanMueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWpzL2FjdGlvbnMpCgoqKlN3YWdnZXIgQ2xpZW50KiogaXMgYSBKYXZhU2NyaXB0IG1vZHVsZSB0aGF0IGFsbG93cyB5b3UgdG8gZmV0Y2gsIHJlc29sdmUsIGFuZCBpbnRlcmFjdCB3aXRoIFN3YWdnZXIvT3BlbkFQSSBkb2N1bWVudHMuCgojIyBOZXchCgoqKlRoaXMgaXMgdGhlIG5ldyB2ZXJzaW9uIG9mIHN3YWdnZXItanMsIDMueC4qKiBUaGUgbmV3IHZlcnNpb24gc3VwcG9ydHMgU3dhZ2dlciAyLjAgYXMgd2VsbCBhcyBPcGVuQVBJIDMuCgpXYW50IHRvIGxlYXJuIG1vcmU/IENoZWNrIG91dCBvdXIgW0ZBUV0oZG9jcy9taWdyYXRpb24vbWlncmF0aW9uLTIteC10by0zLXgubWQpLgoKRm9yIGZlYXR1cmVzIGtub3duIHRvIGJlIG1pc3NpbmcgZnJvbSAzLnggcGxlYXNlIHNlZSB0aGUgW0dyYXZleWFyZF0oZG9jcy9taWdyYXRpb24vZ3JhdmV5YXJkLTMteC5tZCkuCgoKRm9yIHRoZSBvbGRlciB2ZXJzaW9uIG9mIHN3YWdnZXItanMsIHJlZmVyIHRvIHRoZSBbKjIueCBicmFuY2gqXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1qcy90cmVlLzIueCkuCgo+ICpUaGUgbnBtIHBhY2thZ2UgaXMgY2FsbGVkIGBzd2FnZ2VyLWNsaWVudGAgYW5kIHRoZSBHaXRIdWIgcmVwb3NpdG9yeSBpcyBgc3dhZ2dlci1qc2AuCldlJ2xsIGJlIGNvbnNvbGlkYXRpbmcgdGhhdCBzb29uLiBKdXN0IGdpdmluZyB5b3UgdGhlIGhlYWRzLXVwLiBZb3UgbWF5IHNlZSByZWZlcmVuY2VzIHRvIGJvdGggbmFtZXMuKgoKIyMgQ29tcGF0aWJpbGl0eQpUaGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIGhhcyB1bmRlcmdvbmUgbXVsdGlwbGUgcmV2aXNpb25zIHNpbmNlIGluaXRpYWwgY3JlYXRpb24gaW4gMjAxMC4gCkNvbXBhdGliaWxpdHkgYmV0d2VlbiBTd2FnZ2VyIENsaWVudCBhbmQgdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBpcyBhcyBmb2xsb3dzOgoKU3dhZ2dlciBDbGllbnQgVmVyc2lvbiB8IFJlbGVhc2UgRGF0ZSB8IE9wZW5BUEkgU3BlYyBjb21wYXRpYmlsaXR5ICAgICAgICAgICAgICAgICAgICB8IE5vdGVzCi0tLS0tLS0tLS0tLS0tLS0tLSB8LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IC0tLS0tCjMuMzMueCB8IDIwMjQtMTItMzAgICB8IDIuMCwgMy4wLjAsIDMuMC4xLCAzLjAuMiwgMy4wLjMsIDMuMC40LCAzLjEuMCB8IFt0YWcgdjMuMzMuMF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItanMvcmVsZWFzZXMvdGFnL3YzLjMzLjApCjMuMTkueCB8IDIwMjMtMDEtMjMgICB8IDIuMCwgMy4wLjAsIDMuMC4xLCAzLjAuMiwgMy4wLjMsIDMuMS4wICAgICAgICB8IFt0YWcgdjMuMTkuMC1hbHBoYS4zXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1qcy9yZWxlYXNlcy90YWcvdjMuMTkuMC1hbHBoYS4zKQozLjEwLnggfCAyMDIwLTAxLTE3ICAgfCAyLjAsIDMuMC4wLCAzLjAuMSwgMy4wLjIsIDMuMC4zICAgICAgICAgICAgICAgfCBbdGFnIHYzLjEwLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWpzL3RyZWUvdjMuMTAuMCkKMi4xLjMyIHwgMjAxNy0wMS0xMiAgIHwgMS4wLCAxLjEsIDEuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW3RhZyB2Mi4xLjMyXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1qcy90cmVlL3YyLjEuMzIpLiBUaGlzIFtyZWxlYXNlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1qcy9yZWxlYXNlcy90YWcvdjIuMS4zMikgaXMgb25seSBhdmFpbGFibGUgb24gR2l0SHViLgoKIyMgQW5vbnltaXplZCBhbmFseXRpY3MKClN3YWdnZXIgQ2xpZW50IHVzZXMgW1NjYXJmXShodHRwczovL3NjYXJmLnNoLykgdG8gY29sbGVjdCBbYW5vbnltaXplZCBpbnN0YWxsYXRpb24gYW5hbHl0aWNzXShodHRwczovL2dpdGh1Yi5jb20vc2NhcmYtc2gvc2NhcmYtanM/dGFiPXJlYWRtZS1vdi1maWxlI2FzLWEtdXNlci1vZi1hLXBhY2thZ2UtdXNpbmctc2NhcmYtanMtd2hhdC1pbmZvcm1hdGlvbi1kb2VzLXNjYXJmLWpzLXNlbmQtYWJvdXQtbWUpLiBUaGVzZSBhbmFseXRpY3MgaGVscCBzdXBwb3J0IHRoZSBtYWludGFpbmVycyBvZiB0aGlzIGxpYnJhcnkgYW5kIE9OTFkgcnVuIGR1cmluZyBpbnN0YWxsYXRpb24uIFRvIFtvcHQgb3V0XShodHRwczovL2dpdGh1Yi5jb20vc2NhcmYtc2gvc2NhcmYtanM/dGFiPXJlYWRtZS1vdi1maWxlI2FzLWEtdXNlci1vZi1hLXBhY2thZ2UtdXNpbmctc2NhcmYtanMtaG93LWNhbi1pLW9wdC1vdXQtb2YtYW5hbHl0aWNzKSwgeW91IGNhbiBzZXQgdGhlIGBzY2FyZlNldHRpbmdzLmVuYWJsZWRgIGZpZWxkIHRvIGBmYWxzZWAgaW4geW91ciBwcm9qZWN0J3MgYHBhY2thZ2UuanNvbmA6CgpgYGAKLy8gcGFja2FnZS5qc29uCnsKICAvLyAuLi4KICAic2NhcmZTZXR0aW5ncyI6IHsKICAgICJlbmFibGVkIjogZmFsc2UKICB9CiAgLy8gLi4uCn0KYGBgCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYFNDQVJGX0FOQUxZVElDU2AgdG8gYGZhbHNlYCBhcyBwYXJ0IG9mIHRoZSBlbnZpcm9ubWVudCB0aGF0IGluc3RhbGxzIHlvdXIgbnBtIHBhY2thZ2VzLCBlLmcuLCBgU0NBUkZfQU5BTFlUSUNTPWZhbHNlIG5wbSBpbnN0YWxsYC4KCiMjIERvY3VtZW50YXRpb24KCiMjIyMgVXNhZ2UKCi0gW0luc3RhbGxhdGlvbl0oZG9jcy91c2FnZS9pbnN0YWxsYXRpb24ubWQpCi0gW1RhZ3MgSW50ZXJmYWNlXShkb2NzL3VzYWdlL3RhZ3MtaW50ZXJmYWNlLm1kKQotIFtIVFRQIGNsaWVudCBmb3IgT0FTIG9wZXJhdGlvbnNdKGRvY3MvdXNhZ2UvaHR0cC1jbGllbnQtZm9yLW9hcy1vcGVyYXRpb25zLm1kKQotIFtPcGVuQVBJIERlZmluaXRpb24gUmVzb2x2ZXJdKGRvY3MvdXNhZ2Uvb3BlbmFwaS1kZWZpbml0aW9uLXJlc29sdmVyLm1kKQotIFtIVFRQIENsaWVudF0oZG9jcy91c2FnZS9odHRwLWNsaWVudC5tZCkKLSBbU3dhZ2dlciBDbGllbnQgQVBJXShkb2NzL3VzYWdlL2FwaS5tZCkKCiMjIyMgRGV2ZWxvcG1lbnQKCi0gW0NvbnRyaWJ1dGluZ10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpLy5naXRodWIvYmxvYi9tYXN0ZXIvQ09OVFJJQlVUSU5HLm1kKQotIFtTZXR0aW5nIHVwXShkb2NzL2RldmVsb3BtZW50L3NldHRpbmctdXAubWQpCi0gW1NjcmlwdHNdKGRvY3MvZGV2ZWxvcG1lbnQvc2NyaXB0cy5tZCkKCiMjIyMgTWlncmF0aW9ucyAKCi0gW01pZ3JhdGlvbiBndWlkZV0oZG9jcy9taWdyYXRpb24vbWlncmF0aW9uLTIteC10by0zLXgubWQpCi0gW0dyYXZleWFyZF0oZG9jcy9taWdyYXRpb24vZ3JhdmV5YXJkLTMteC5tZCkKCiMjIyBSdW50aW1lIAoKIyMjIE5vZGUuanMKCmBzd2FnZ2VyLWNsaWVudGAgcmVxdWlyZXMgTm9kZS5qcyBgPj0xMi4yMC4wYCBhbmQgdXNlcyBkaWZmZXJlbnQgYGZldGNoYCBpbXBsZW1lbnRhdGlvbiBkZXBlbmRpbmcKb24gTm9kZS5qcyB2ZXJzaW9uLgoKLSBgPj0xMi4yMC4wIDwxOGAgLSBbbm9kZS1mZXRjaEAzXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9ub2RlLWZldGNoKSAKLSBgPj0xOGAgLSBbbmF0aXZlIE5vZGUuanMgZmV0Y2hdKGh0dHBzOi8vbm9kZWpzLm9yZy9kaXN0L2xhdGVzdC12MTgueC9kb2NzL2FwaS9nbG9iYWxzLmh0bWwjZmV0Y2gpCgo+IE5PVEU6IHN3YWdnZXItY2xpZW50IG1pbmltdW0gTm9kZS5qcyBydW50aW1lIHZlcnNpb24gYWxpZ25zIHdpdGggW05vZGUuanMgUmVsZWFzZXNdKGh0dHBzOi8vbm9kZWpzLm9yZy9lbi9hYm91dC9yZWxlYXNlcy8pCj4gd2hpY2ggbWVhbnMgdGhhdCB3ZSBjYW4gZHJvcCBzdXBwb3J0IGZvciAqKkVPTCoqIChFbmQgT2YgTGlmZSkgTm9kZS5qcyB2ZXJzaW9ucyB3aXRob3V0IGRvaW5nIG1ham9yIHZlcnNpb24gYnVtcC4KCiMjIyBCcm93c2VycwoKYHN3YWdnZXItY2xpZW50YCB3b3JrcyBpbiB0aGUgbGF0ZXN0IHZlcnNpb25zIG9mIENocm9tZSwgU2FmYXJpLCBGaXJlZm94LCBhbmQgRWRnZQphbmQgdXNlcyBbbmF0aXZlIGZldGNoXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRmV0Y2hfQVBJKSBpbXBsZW1lbnRhdGlvbgpwcm92aWRlZCBieSBlYWNoIHN1cHBvcnRlZCBicm93c2VyLgoKIyMgU2VjdXJpdHkgY29udGFjdAoKUGxlYXNlIGRpc2Nsb3NlIGFueSBzZWN1cml0eS1yZWxhdGVkIGlzc3VlcyBvciB2dWxuZXJhYmlsaXRpZXMgYnkgZW1haWxpbmcgW3NlY3VyaXR5QHN3YWdnZXIuaW9dKG1haWx0bzpzZWN1cml0eUBzd2FnZ2VyLmlvKSwgaW5zdGVhZCBvZiB1c2luZyB0aGUgcHVibGljIGlzc3VlIHRyYWNrZXIuCg== readmeEtag: '"4a7bff9bc920afcf75a7511133b16c659e30feb3"' readmeLastModified: Tue, 31 Dec 2024 00:00:27 GMT repositoryId: 3455070 description: >- Javascript library to connect to swagger-enabled APIs via browser or nodejs created: '2012-02-16T00:08:43Z' updated: '2026-01-29T14:41:53Z' language: JavaScript archived: false stars: 2692 watchers: 84 forks: 760 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 repoEtag: '"c272d6077a6aa769ae9532e2603037933c92feb7982f38a92b7a7cdf20f45419"' repoLastModified: Thu, 29 Jan 2026 14:41:53 GMT foundInMaster: true category: Code Generators id: 5f98b79464c0723b688cff46ee3500c6 v3_1: true - source: openapi3 tags repository: https://github.com/jcrist/msgspec v3: true id: a6f4189b9c0c83612075c0752859ff29 repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9qY3Jpc3RoYXJpZi5jb20vbXNnc3BlYy8iPgogICAgPGltZyBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9qY3Jpc3QvbXNnc3BlYy9tYWluL2RvY3MvX3N0YXRpYy9tc2dzcGVjLWxvZ28tbGlnaHQuc3ZnIiB3aWR0aD0iMzUlIiBhbHQ9Im1zZ3NwZWMiPgogIDwvYT4KPC9wPgoKPGRpdiBhbGlnbj0iY2VudGVyIj4KClshW0NJXShodHRwczovL2dpdGh1Yi5jb20vamNyaXN0L21zZ3NwZWMvYWN0aW9ucy93b3JrZmxvd3MvY2kueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9qY3Jpc3QvbXNnc3BlYy9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwpClshW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZG9jcy1sYXRlc3QtYmx1ZS5zdmcpXShodHRwczovL2pjcmlzdGhhcmlmLmNvbS9tc2dzcGVjLykKWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9qY3Jpc3QvbXNnc3BlYy5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vamNyaXN0L21zZ3NwZWMvYmxvYi9tYWluL0xJQ0VOU0UpClshW1B5UEkgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvbXNnc3BlYy5zdmcpXShodHRwczovL3B5cGkub3JnL3Byb2plY3QvbXNnc3BlYy8pClshW0NvbmRhIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY29uZGEvdm4vY29uZGEtZm9yZ2UvbXNnc3BlYy5zdmcpXShodHRwczovL2FuYWNvbmRhLm9yZy9jb25kYS1mb3JnZS9tc2dzcGVjKQpbIVtDb2RlIENvdmVyYWdlXShodHRwczovL2NvZGVjb3YuaW8vZ2gvamNyaXN0L21zZ3NwZWMvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9hcHAuY29kZWNvdi5pby9naC9qY3Jpc3QvbXNnc3BlYykKCjwvZGl2PgoKYG1zZ3NwZWNgIGlzIGEgKmZhc3QqIHNlcmlhbGl6YXRpb24gYW5kIHZhbGlkYXRpb24gbGlicmFyeSwgd2l0aCBidWlsdGluCnN1cHBvcnQgZm9yIFtKU09OXShodHRwczovL2pzb24ub3JnKSwgW01lc3NhZ2VQYWNrXShodHRwczovL21zZ3BhY2sub3JnKSwKW1lBTUxdKGh0dHBzOi8veWFtbC5vcmcpLCBhbmQgW1RPTUxdKGh0dHBzOi8vdG9tbC5pby9lbi8pLiBJdCBmZWF0dXJlczoKCi0g8J+agCAqKkhpZ2ggcGVyZm9ybWFuY2UgZW5jb2RlcnMvZGVjb2RlcnMqKiBmb3IgY29tbW9uIHByb3RvY29scy4gVGhlIEpTT04gYW5kCiAgTWVzc2FnZVBhY2sgaW1wbGVtZW50YXRpb25zIHJlZ3VsYXJseQogIFtiZW5jaG1hcmtdKGh0dHBzOi8vamNyaXN0aGFyaWYuY29tL21zZ3NwZWMvYmVuY2htYXJrcy5odG1sKSBhcyB0aGUgZmFzdGVzdAogIG9wdGlvbnMgZm9yIFB5dGhvbi4KCi0g8J+OiSAqKlN1cHBvcnQgZm9yIGEgd2lkZSB2YXJpZXR5IG9mIFB5dGhvbiB0eXBlcyoqLiBBZGRpdGlvbmFsIHR5cGVzIG1heSBiZQogIHN1cHBvcnRlZCB0aHJvdWdoCiAgW2V4dGVuc2lvbnNdKGh0dHBzOi8vamNyaXN0aGFyaWYuY29tL21zZ3NwZWMvZXh0ZW5kaW5nLmh0bWwpLgoKLSDwn5SNICoqWmVyby1jb3N0IHNjaGVtYSB2YWxpZGF0aW9uKiogdXNpbmcgZmFtaWxpYXIgUHl0aG9uIHR5cGUgYW5ub3RhdGlvbnMuIEluCiAgW2JlbmNobWFya3NdKGh0dHBzOi8vamNyaXN0aGFyaWYuY29tL21zZ3NwZWMvYmVuY2htYXJrcy5odG1sKSBgbXNnc3BlY2AKICBkZWNvZGVzICphbmQqIHZhbGlkYXRlcyBKU09OIGZhc3RlciB0aGFuCiAgW29yanNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2lqbC9vcmpzb24pIGNhbiBkZWNvZGUgaXQgYWxvbmUuCgotIOKcqCAqKkEgc3BlZWR5IFN0cnVjdCB0eXBlKiogZm9yIHJlcHJlc2VudGluZyBzdHJ1Y3R1cmVkIGRhdGEuIElmIHlvdSBhbHJlYWR5CiAgdXNlIFtkYXRhY2xhc3Nlc10oaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2RhdGFjbGFzc2VzLmh0bWwpIG9yCiAgW2F0dHJzXShodHRwczovL3d3dy5hdHRycy5vcmcvZW4vc3RhYmxlLyksCiAgW3N0cnVjdHNdKGh0dHBzOi8vamNyaXN0aGFyaWYuY29tL21zZ3NwZWMvc3RydWN0cy5odG1sKSBzaG91bGQgZmVlbCBmYW1pbGlhci4KICBIb3dldmVyLCB0aGV5J3JlCiAgWzUtNjB4IGZhc3Rlcl0oaHR0cHM6Ly9qY3Jpc3RoYXJpZi5jb20vbXNnc3BlYy9iZW5jaG1hcmtzLmh0bWwjc3RydWN0cykKICBmb3IgY29tbW9uIG9wZXJhdGlvbnMuCgpBbGwgb2YgdGhpcyBpcyBpbmNsdWRlZCBpbiBhCltsaWdodHdlaWdodCBsaWJyYXJ5XShodHRwczovL2pjcmlzdGhhcmlmLmNvbS9tc2dzcGVjL2JlbmNobWFya3MuaHRtbCNsaWJyYXJ5LXNpemUpCndpdGggbm8gcmVxdWlyZWQgZGVwZW5kZW5jaWVzLgoKLS0tCgpgbXNnc3BlY2AgbWF5IGJlIHVzZWQgZm9yIHNlcmlhbGl6YXRpb24gYWxvbmUsIGFzIGEgZmFzdGVyIEpTT04gb3IKTWVzc2FnZVBhY2sgbGlicmFyeS4gRm9yIHRoZSBncmVhdGVzdCBiZW5lZml0IHRob3VnaCwgd2UgcmVjb21tZW5kIHVzaW5nCmBtc2dzcGVjYCB0byBoYW5kbGUgdGhlIGZ1bGwgc2VyaWFsaXphdGlvbiAmIHZhbGlkYXRpb24gd29ya2Zsb3c6CgoqKkRlZmluZSoqIHlvdXIgbWVzc2FnZSBzY2hlbWFzIHVzaW5nIHN0YW5kYXJkIFB5dGhvbiB0eXBlIGFubm90YXRpb25zLgoKYGBgcHl0aG9uCj4+PiBpbXBvcnQgbXNnc3BlYwoKPj4+IGNsYXNzIFVzZXIobXNnc3BlYy5TdHJ1Y3QpOgouLi4gICAgICIiIkEgbmV3IHR5cGUgZGVzY3JpYmluZyBhIFVzZXIiIiIKLi4uICAgICBuYW1lOiBzdHIKLi4uICAgICBncm91cHM6IHNldFtzdHJdID0gc2V0KCkKLi4uICAgICBlbWFpbDogc3RyIHwgTm9uZSA9IE5vbmUKYGBgCgoqKkVuY29kZSoqIG1lc3NhZ2VzIGFzIEpTT04sIG9yIG9uZSBvZiB0aGUgbWFueSBvdGhlciBzdXBwb3J0ZWQgcHJvdG9jb2xzLgoKYGBgcHl0aG9uCj4+PiBhbGljZSA9IFVzZXIoImFsaWNlIiwgZ3JvdXBzPXsiYWRtaW4iLCAiZW5naW5lZXJpbmcifSkKCj4+PiBhbGljZQpVc2VyKG5hbWU9J2FsaWNlJywgZ3JvdXBzPXsiYWRtaW4iLCAiZW5naW5lZXJpbmcifSwgZW1haWw9Tm9uZSkKCj4+PiBtc2cgPSBtc2dzcGVjLmpzb24uZW5jb2RlKGFsaWNlKQoKPj4+IG1zZwpiJ3sibmFtZSI6ImFsaWNlIiwiZ3JvdXBzIjpbImFkbWluIiwiZW5naW5lZXJpbmciXSwiZW1haWwiOm51bGx9JwpgYGAKCioqRGVjb2RlKiogbWVzc2FnZXMgYmFjayBpbnRvIFB5dGhvbiBvYmplY3RzLCB3aXRoIG9wdGlvbmFsIHNjaGVtYSB2YWxpZGF0aW9uLgoKYGBgcHl0aG9uCj4+PiBtc2dzcGVjLmpzb24uZGVjb2RlKG1zZywgdHlwZT1Vc2VyKQpVc2VyKG5hbWU9J2FsaWNlJywgZ3JvdXBzPXsiYWRtaW4iLCAiZW5naW5lZXJpbmcifSwgZW1haWw9Tm9uZSkKCj4+PiBtc2dzcGVjLmpzb24uZGVjb2RlKGIneyJuYW1lIjoiYm9iIiwiZ3JvdXBzIjpbMTIzXX0nLCB0eXBlPVVzZXIpClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgptc2dzcGVjLlZhbGlkYXRpb25FcnJvcjogRXhwZWN0ZWQgYHN0cmAsIGdvdCBgaW50YCAtIGF0IGAkLmdyb3Vwc1swXWAKYGBgCgpgbXNnc3BlY2AgaXMgZGVzaWduZWQgdG8gYmUgYXMgcGVyZm9ybWFudCBhcyBwb3NzaWJsZSwgd2hpbGUgcmV0YWluaW5nIHNvbWUgb2YKdGhlIG5pY2l0aWVzIG9mIHZhbGlkYXRpb24gbGlicmFyaWVzIGxpa2UKW3B5ZGFudGljXShodHRwczovL2RvY3MucHlkYW50aWMuZGV2L2xhdGVzdC8pLiBGb3Igc3VwcG9ydGVkIHR5cGVzLAplbmNvZGluZy9kZWNvZGluZyBhIG1lc3NhZ2Ugd2l0aCBgbXNnc3BlY2AgY2FuIGJlClt+MTAtODB4IGZhc3RlciB0aGFuIGFsdGVybmF0aXZlIGxpYnJhcmllc10oaHR0cHM6Ly9qY3Jpc3RoYXJpZi5jb20vbXNnc3BlYy9iZW5jaG1hcmtzLmh0bWwpLgoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9qY3Jpc3RoYXJpZi5jb20vbXNnc3BlYy9iZW5jaG1hcmtzLmh0bWwiPgogICAgPGltZyBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9qY3Jpc3QvbXNnc3BlYy9tYWluL2RvY3MvX3N0YXRpYy9iZW5jaC12YWxpZGF0aW9uLnN2ZyI+CiAgPC9hPgo8L3A+CgpTZWUgW3RoZSBkb2N1bWVudGF0aW9uXShodHRwczovL2pjcmlzdGhhcmlmLmNvbS9tc2dzcGVjLykgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgoKIyMgTElDRU5TRQoKTmV3IEJTRC4gU2VlIHRoZQpbTGljZW5zZSBGaWxlXShodHRwczovL2dpdGh1Yi5jb20vamNyaXN0L21zZ3NwZWMvYmxvYi9tYWluL0xJQ0VOU0UpLgo= readmeEtag: '"60c39bfdd18456e986858137e4a7e00b1ec72775"' readmeLastModified: Sun, 16 Nov 2025 22:02:09 GMT repositoryId: 332952543 description: >- A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML created: '2021-01-26T02:53:57Z' updated: '2026-02-06T03:29:32Z' language: Python archived: false stars: 3569 watchers: 26 forks: 132 owner: jcrist logo: https://avatars.githubusercontent.com/u/2783717?v=4 license: BSD-3-Clause repoEtag: '"014a75bcbb684dd41c486d661a041c930149ddb5f959db483ea901de8c705d91"' repoLastModified: Fri, 06 Feb 2026 03:29:32 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/tfranzel/drf-spectacular v3: true repositoryMetadata: base64Readme: >- PT09PT09PT09PT09PT09CmRyZi1zcGVjdGFjdWxhcgo9PT09PT09PT09PT09PT0KCnxidWlsZC1zdGF0dXN8IHxjb2RlY292fCB8ZG9jc3wgfHB5cGktdmVyc2lvbnwgfHB5cGktZGx8CgpTYW5lIGFuZCBmbGV4aWJsZSBgT3BlbkFQSWBfIChgMy4wLjNgXyAmIGAzLjFgXykgc2NoZW1hIGdlbmVyYXRpb24gZm9yIGBEamFuZ28gUkVTVCBmcmFtZXdvcmtgXy4KClRoaXMgcHJvamVjdCBoYXMgMyBnb2FsczoKICAgIDEuIEV4dHJhY3QgYXMgbXVjaCBzY2hlbWEgaW5mb3JtYXRpb24gZnJvbSBEUkYgYXMgcG9zc2libGUuCiAgICAyLiBQcm92aWRlIGZsZXhpYmlsaXR5IHRvIG1ha2UgdGhlIHNjaGVtYSB1c2FibGUgaW4gdGhlIHJlYWwgd29ybGQgKG5vdCBvbmx5IHRveSBleGFtcGxlcykuCiAgICAzLiBHZW5lcmF0ZSBhIHNjaGVtYSB0aGF0IHdvcmtzIHdlbGwgd2l0aCB0aGUgbW9zdCBwb3B1bGFyIGNsaWVudCBnZW5lcmF0b3JzLgoKVGhlIGNvZGUgaXMgYSBoZWF2aWx5IG1vZGlmaWVkIGZvcmsgb2YgdGhlCmBEUkYgT3BlbkFQSSBnZW5lcmF0b3IgPGh0dHBzOi8vZ2l0aHViLmNvbS9lbmNvZGUvZGphbmdvLXJlc3QtZnJhbWV3b3JrL2Jsb2IvbWFzdGVyL3Jlc3RfZnJhbWV3b3JrL3NjaGVtYXMvb3BlbmFwaS5weS8+YF8sCndoaWNoIGlzL3dhcyBsYWNraW5nIGFsbCBvZiB0aGUgYmVsb3cgbGlzdGVkIGZlYXR1cmVzLgoKRmVhdHVyZXMKICAgIC0gU2VyaWFsaXplcnMgbW9kZWxsZWQgYXMgY29tcG9uZW50cy4gKGFyYml0cmFyeSBuZXN0aW5nIGFuZCByZWN1cnNpb24gc3VwcG9ydGVkKQogICAgLSBgQGV4dGVuZF9zY2hlbWEgPGh0dHBzOi8vZHJmLXNwZWN0YWN1bGFyLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9kcmZfc3BlY3RhY3VsYXIuaHRtbCNkcmZfc3BlY3RhY3VsYXIudXRpbHMuZXh0ZW5kX3NjaGVtYT5gXyBkZWNvcmF0b3IgZm9yIGN1c3RvbWl6YXRpb24gb2YgQVBJVmlldywgVmlld3NldHMsIGZ1bmN0aW9uLWJhc2VkIHZpZXdzLCBhbmQgYGBAYWN0aW9uYGAKICAgICAgICAtIGFkZGl0aW9uYWwgcGFyYW1ldGVycwogICAgICAgIC0gcmVxdWVzdC9yZXNwb25zZSBzZXJpYWxpemVyIG92ZXJyaWRlICh3aXRoIHN0YXR1cyBjb2RlcykKICAgICAgICAtIHBvbHltb3JwaGljIHJlc3BvbnNlcyBlaXRoZXIgbWFudWFsbHkgd2l0aCBgYFBvbHltb3JwaGljUHJveHlTZXJpYWxpemVyYGAgaGVscGVyIG9yIHZpYSBgYHJlc3RfcG9seW1vcnBoaWNgYCdzIFBvbHltb3JwaGljU2VyaWFsaXplcikKICAgICAgICAtIC4uLiBhbmQgbW9yZSBjdXN0b21pemF0aW9uIG9wdGlvbnMKICAgIC0gQXV0aGVudGljYXRpb24gc3VwcG9ydCAoRFJGIG5hdGl2ZXMgaW5jbHVkZWQsIGVhc2lseSBleHRlbmRhYmxlKQogICAgLSBDdXN0b20gc2VyaWFsaXplciBjbGFzcyBzdXBwb3J0IChlYXNpbHkgZXh0ZW5kYWJsZSkKICAgIC0gYFNlcmlhbGl6ZXJNZXRob2RGaWVsZCgpIDxodHRwczovL2RyZi1zcGVjdGFjdWxhci5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvY3VzdG9taXphdGlvbi5odG1sI3N0ZXAtMy1leHRlbmQtc2NoZW1hLWZpZWxkLWFuZC10eXBlLWhpbnRzPmBfIHR5cGUgdmlhIHR5cGUgaGludGluZyBvciBgYEBleHRlbmRfc2NoZW1hX2ZpZWxkYGAKICAgIC0gaTE4biBzdXBwb3J0CiAgICAtIFRhZ3MgZXh0cmFjdGlvbgogICAgLSBSZXF1ZXN0L3Jlc3BvbnNlL3BhcmFtZXRlciBleGFtcGxlcwogICAgLSBEZXNjcmlwdGlvbiBleHRyYWN0aW9uIGZyb20gYGBkb2NzdHJpbmdzYGAKICAgIC0gVmVuZG9yIHNwZWNpZmljYXRpb24gZXh0ZW5zaW9ucyAoYGB4LSpgYCkgaW4gaW5mbywgb3BlcmF0aW9ucywgcGFyYW1ldGVycywgY29tcG9uZW50cywgYW5kIHNlY3VyaXR5IHNjaGVtZXMKICAgIC0gU2FuZSBmYWxsYmFja3MKICAgIC0gU2FuZSBgYG9wZXJhdGlvbl9pZGBgIG5hbWluZyAoYmFzZWQgb24gcGF0aCkKICAgIC0gU2NoZW1hIHNlcnZpbmcgd2l0aCBgYFNwZWN0YWN1bGFyQVBJVmlld2BgIChSZWRvYyBhbmQgU3dhZ2dlci1VSSB2aWV3cyBhcmUgYWxzbyBhdmFpbGFibGUpCiAgICAtIE9wdGlvbmFsIGlucHV0L291dHB1dCBzZXJpYWxpemVyIGNvbXBvbmVudCBzcGxpdAogICAgLSBDYWxsYmFjayBvcGVyYXRpb25zCiAgICAtIE9wZW5BUEkgMy4xIHN1cHBvcnQgKHZpYSBzZXR0aW5nIGBgT0FTX1ZFUlNJT05gYCkKICAgIC0gSW5jbHVkZWQgc3VwcG9ydCBmb3I6CiAgICAgICAgLSBgZGphbmdvLXBvbHltb3JwaGljIDxodHRwczovL2dpdGh1Yi5jb20vZGphbmdvLXBvbHltb3JwaGljL2RqYW5nby1wb2x5bW9ycGhpYz5gXyAvIGBkamFuZ28tcmVzdC1wb2x5bW9ycGhpYyA8aHR0cHM6Ly9naXRodWIuY29tL2FwaXJvYm90L2RqYW5nby1yZXN0LXBvbHltb3JwaGljPmBfCiAgICAgICAgLSBgU2ltcGxlSldUIDxodHRwczovL2dpdGh1Yi5jb20vamF6emJhbmQvZGphbmdvcmVzdGZyYW1ld29yay1zaW1wbGVqd3Q+YF8KICAgICAgICAtIGBEamFuZ29PQXV0aFRvb2xraXQgPGh0dHBzOi8vZ2l0aHViLmNvbS9qYXp6YmFuZC9kamFuZ28tb2F1dGgtdG9vbGtpdD5gXwogICAgICAgIC0gYGRqYW5nb3Jlc3RmcmFtZXdvcmstand0IDxodHRwczovL2dpdGh1Yi5jb20vanBhZGlsbGEvZGphbmdvLXJlc3QtZnJhbWV3b3JrLWp3dD5gXyAodGVzdGVkIGZvcmsgYGRyZi1qd3QgPGh0dHBzOi8vZ2l0aHViLmNvbS9TdHlyaWEtRGlnaXRhbC9kamFuZ28tcmVzdC1mcmFtZXdvcmstand0PmBfKQogICAgICAgIC0gYGRqLXJlc3QtYXV0aCA8aHR0cHM6Ly9naXRodWIuY29tL2lNZXJpY2EvZGotcmVzdC1hdXRoPmBfIChtYWludGFpbmVkIGZvcmsgb2YgYGRqYW5nby1yZXN0LWF1dGggPGh0dHBzOi8vZ2l0aHViLmNvbS9UaXZpeC9kamFuZ28tcmVzdC1hdXRoPmBfKQogICAgICAgIC0gYGRqYW5nb3Jlc3RmcmFtZXdvcmstY2FtZWwtY2FzZSA8aHR0cHM6Ly9naXRodWIuY29tL3ZiYWJpeS9kamFuZ29yZXN0ZnJhbWV3b3JrLWNhbWVsLWNhc2U+YF8gKHZpYSBwb3N0cHJvY2Vzc2luZyBob29rIGBgY2FtZWxpemVfc2VyaWFsaXplcl9maWVsZHNgYCkKICAgICAgICAtIGBkamFuZ28tZmlsdGVyIDxodHRwczovL2dpdGh1Yi5jb20vY2FybHRvbmdpYnNvbi9kamFuZ28tZmlsdGVyPmBfCiAgICAgICAgLSBgZHJmLW5lc3RlZC1yb3V0ZXJzIDxodHRwczovL2dpdGh1Yi5jb20vYWxhbmpkcy9kcmYtbmVzdGVkLXJvdXRlcnM+YF8KICAgICAgICAtIGBkamFuZ29yZXN0ZnJhbWV3b3JrLXJlY3Vyc2l2ZSA8aHR0cHM6Ly9naXRodWIuY29tL2hleXdiai9kamFuZ28tcmVzdC1mcmFtZXdvcmstcmVjdXJzaXZlPmBfCiAgICAgICAgLSBgZGphbmdvcmVzdGZyYW1ld29yay1kYXRhY2xhc3NlcyA8aHR0cHM6Ly9naXRodWIuY29tL294YW4vZGphbmdvcmVzdGZyYW1ld29yay1kYXRhY2xhc3Nlcz5gXwogICAgICAgIC0gYGRqYW5nby1yZXN0LWZyYW1ld29yay1naXMgPGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVud2lzcC9kamFuZ28tcmVzdC1mcmFtZXdvcmstZ2lzPmBfCiAgICAgICAgLSBgUHlkYW50aWMgKD49Mi4wKSA8aHR0cHM6Ly9naXRodWIuY29tL3B5ZGFudGljL3B5ZGFudGljPmBfCgoKRm9yIG1vcmUgaW5mb3JtYXRpb24gdmlzaXQgdGhlIGBkb2N1bWVudGF0aW9uIDxodHRwczovL2RyZi1zcGVjdGFjdWxhci5yZWFkdGhlZG9jcy5pby8+YF8uCgpMaWNlbnNlCi0tLS0tLS0KClByb3ZpZGVkIGJ5IGBULiBGcmFuemVsIDxodHRwczovL2dpdGh1Yi5jb20vdGZyYW56ZWw+YF8uIGBMaWNlbnNlZCB1bmRlciAzLUNsYXVzZSBCU0QgPGh0dHBzOi8vZ2l0aHViLmNvbS90ZnJhbnplbC9kcmYtc3BlY3RhY3VsYXIvYmxvYi9tYXN0ZXIvTElDRU5TRT5gXy4KClJlcXVpcmVtZW50cwotLS0tLS0tLS0tLS0KCi0gIFB5dGhvbiA+PSAzLjcKLSAgRGphbmdvICgyLjIsIDMuMiwgNC4wLCA0LjEsIDQuMiwgNS4wLCA1LjEsIDUuMikKLSAgRGphbmdvIFJFU1QgRnJhbWV3b3JrICgzLjEwLjMsIDMuMTEsIDMuMTIsIDMuMTMsIDMuMTQsIDMuMTUsIDMuMTYpCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpJbnN0YWxsIHVzaW5nIGBgcGlwYGBcIC4uLgoKLi4gY29kZTo6IGJhc2gKCiAgICAkIHBpcCBpbnN0YWxsIGRyZi1zcGVjdGFjdWxhcgoKdGhlbiBhZGQgZHJmLXNwZWN0YWN1bGFyIHRvIGluc3RhbGxlZCBhcHBzIGluIGBgc2V0dGluZ3MucHlgYAoKLi4gY29kZTo6IHB5dGhvbgoKICAgIElOU1RBTExFRF9BUFBTID0gWwogICAgICAgICMgQUxMIFlPVVIgQVBQUwogICAgICAgICdkcmZfc3BlY3RhY3VsYXInLAogICAgXQoKCmFuZCBmaW5hbGx5IHJlZ2lzdGVyIG91ciBzcGVjdGFjdWxhciBBdXRvU2NoZW1hIHdpdGggRFJGLgoKLi4gY29kZTo6IHB5dGhvbgoKICAgIFJFU1RfRlJBTUVXT1JLID0gewogICAgICAgICMgWU9VUiBTRVRUSU5HUwogICAgICAgICdERUZBVUxUX1NDSEVNQV9DTEFTUyc6ICdkcmZfc3BlY3RhY3VsYXIub3BlbmFwaS5BdXRvU2NoZW1hJywKICAgIH0KCmRyZi1zcGVjdGFjdWxhciBzaGlwcyB3aXRoIHNhbmUgYGRlZmF1bHQgc2V0dGluZ3MgPGh0dHBzOi8vZHJmLXNwZWN0YWN1bGFyLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9zZXR0aW5ncy5odG1sPmBfCnRoYXQgc2hvdWxkIHdvcmsgcmVhc29uYWJseSB3ZWxsIG91dCBvZiB0aGUgYm94LiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvCnNwZWNpZnkgYW55IHNldHRpbmdzLCBidXQgd2UgcmVjb21tZW5kIHRvIHNwZWNpZnkgYXQgbGVhc3Qgc29tZSBtZXRhZGF0YS4KCi4uIGNvZGU6OiBweXRob24KCiAgICBTUEVDVEFDVUxBUl9TRVRUSU5HUyA9IHsKICAgICAgICAnVElUTEUnOiAnWW91ciBQcm9qZWN0IEFQSScsCiAgICAgICAgJ0RFU0NSSVBUSU9OJzogJ1lvdXIgcHJvamVjdCBkZXNjcmlwdGlvbicsCiAgICAgICAgJ1ZFUlNJT04nOiAnMS4wLjAnLAogICAgICAgICdTRVJWRV9JTkNMVURFX1NDSEVNQSc6IEZhbHNlLAogICAgICAgICMgT1RIRVIgU0VUVElOR1MKICAgIH0KCi4uIF9zZWxmLWNvbnRhaW5lZC11aS1pbnN0YWxsYXRpb246CgpTZWxmLWNvbnRhaW5lZCBVSSBpbnN0YWxsYXRpb24KXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCgpDZXJ0YWluIGVudmlyb25tZW50cyBoYXZlIG5vIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGludGVybmV0IGFuZCBhcyBzdWNoIGFyZSB1bmFibGUKdG8gcmV0cmlldmUgU3dhZ2dlciBVSSBvciBSZWRvYyBmcm9tIENETnMuIGBkcmYtc3BlY3RhY3VsYXItc2lkZWNhcmBfIHByb3ZpZGVzCnRoZXNlIHN0YXRpYyBmaWxlcyBhcyBhIHNlcGFyYXRlIG9wdGlvbmFsIHBhY2thZ2UuIFVzYWdlIGlzIGFzIGZvbGxvd3M6CgouLiBjb2RlOjogYmFzaAoKICAgICQgcGlwIGluc3RhbGwgZHJmLXNwZWN0YWN1bGFyW3NpZGVjYXJdCgouLiBjb2RlOjogcHl0aG9uCgogICAgSU5TVEFMTEVEX0FQUFMgPSBbCiAgICAgICAgIyBBTEwgWU9VUiBBUFBTCiAgICAgICAgJ2RyZl9zcGVjdGFjdWxhcicsCiAgICAgICAgJ2RyZl9zcGVjdGFjdWxhcl9zaWRlY2FyJywgICMgcmVxdWlyZWQgZm9yIERqYW5nbyBjb2xsZWN0c3RhdGljIGRpc2NvdmVyeQogICAgXQogICAgU1BFQ1RBQ1VMQVJfU0VUVElOR1MgPSB7CiAgICAgICAgJ1NXQUdHRVJfVUlfRElTVCc6ICdTSURFQ0FSJywgICMgc2hvcnRoYW5kIHRvIHVzZSB0aGUgc2lkZWNhciBpbnN0ZWFkCiAgICAgICAgJ1NXQUdHRVJfVUlfRkFWSUNPTl9IUkVGJzogJ1NJREVDQVInLAogICAgICAgICdSRURPQ19ESVNUJzogJ1NJREVDQVInLAogICAgICAgICMgT1RIRVIgU0VUVElOR1MKICAgIH0KCgpSZWxlYXNlIG1hbmFnZW1lbnQKXl5eXl5eXl5eXl5eXl5eXl5eCgoqZHJmLXNwZWN0YWN1bGFyKiBkZWxpYmVyYXRlbHkgc3RheXMgYmVsb3cgdmVyc2lvbiAqMS54LngqIHRvIHNpZ25hbCB0aGF0IGV2ZXJ5Cm5ldyB2ZXJzaW9uIG1heSBwb3RlbnRpYWxseSBicmVhayB5b3UuIEZvciBwcm9kdWN0aW9uIHdlIHN0cm9uZ2x5IHJlY29tbWVuZCBwaW5uaW5nIHRoZQp2ZXJzaW9uIGFuZCBpbnNwZWN0aW5nIGEgc2NoZW1hIGRpZmYgb24gdXBkYXRlLgoKV2l0aCB0aGF0IHNhaWQsIHdlIGFpbSB0byBiZSBleHRyZW1lbHkgZGVmZW5zaXZlIHcuci50LiBicmVha2luZyBBUEkgY2hhbmdlcy4gSG93ZXZlciwKd2UgYWxzbyBhY2tub3dsZWRnZSB0aGUgZmFjdCB0aGF0IGV2ZW4gc2xpZ2h0IHNjaGVtYSBjaGFuZ2VzIG1heSBicmVhayB5b3VyIHRvb2xjaGFpbiwKYXMgYW55IGV4aXN0aW5nIGJ1ZyBtYXkgc29tZWhvdyBhbHNvIGJlIHVzZWQgYXMgYSBmZWF0dXJlLgoKV2UgZGVmaW5lIHZlcnNpb24gaW5jcmVtZW50cyB3aXRoIHRoZSBmb2xsb3dpbmcgc2VtYW50aWNzLiAqeS1zdHJlYW0qIGluY3JlbWVudHMgbWF5IGNvbnRhaW4KcG90ZW50aWFsbHkgYnJlYWtpbmcgY2hhbmdlcyB0byBib3RoIEFQSSBhbmQgc2NoZW1hLiAqei1zdHJlYW0qIGluY3JlbWVudHMgd2lsbCBuZXZlciBicmVhayB0aGUKQVBJIGFuZCBtYXkgb25seSBjb250YWluIHNjaGVtYSBjaGFuZ2VzIHRoYXQgc2hvdWxkIGhhdmUgYSBsb3cgY2hhbmNlIG9mIGJyZWFraW5nIHlvdS4KCgpUYWtlIGl0IGZvciBhIHNwaW4KLS0tLS0tLS0tLS0tLS0tLS0tCgpHZW5lcmF0ZSB5b3VyIHNjaGVtYSB3aXRoIHRoZSBDTEk6CgouLiBjb2RlOjogYmFzaAoKICAgICQgLi9tYW5hZ2UucHkgc3BlY3RhY3VsYXIgLS1jb2xvciAtLWZpbGUgc2NoZW1hLnltbAogICAgJCBkb2NrZXIgcnVuIC1wIDgwODA6ODA4MCAtZSBTV0FHR0VSX0pTT049L3NjaGVtYS55bWwgLXYgJHtQV0R9L3NjaGVtYS55bWw6L3NjaGVtYS55bWwgc3dhZ2dlcmFwaS9zd2FnZ2VyLXVpCgpJZiB5b3UgYWxzbyB3YW50IHRvIHZhbGlkYXRlIHlvdXIgc2NoZW1hIGFkZCB0aGUgYGAtLXZhbGlkYXRlYGAgZmxhZy4gT3Igc2VydmUgeW91ciBzY2hlbWEgZGlyZWN0bHkKZnJvbSB5b3VyIEFQSS4gV2UgYWxzbyBwcm92aWRlIGNvbnZlbmllbmNlIHdyYXBwZXJzIGZvciBgYHN3YWdnZXItdWlgYCBvciBgYHJlZG9jYGAuCgouLiBjb2RlOjogcHl0aG9uCgogICAgZnJvbSBkcmZfc3BlY3RhY3VsYXIudmlld3MgaW1wb3J0IFNwZWN0YWN1bGFyQVBJVmlldywgU3BlY3RhY3VsYXJSZWRvY1ZpZXcsIFNwZWN0YWN1bGFyU3dhZ2dlclZpZXcKICAgIHVybHBhdHRlcm5zID0gWwogICAgICAgICMgWU9VUiBQQVRURVJOUwogICAgICAgIHBhdGgoJ2FwaS9zY2hlbWEvJywgU3BlY3RhY3VsYXJBUElWaWV3LmFzX3ZpZXcoKSwgbmFtZT0nc2NoZW1hJyksCiAgICAgICAgIyBPcHRpb25hbCBVSToKICAgICAgICBwYXRoKCdhcGkvc2NoZW1hL3N3YWdnZXItdWkvJywgU3BlY3RhY3VsYXJTd2FnZ2VyVmlldy5hc192aWV3KHVybF9uYW1lPSdzY2hlbWEnKSwgbmFtZT0nc3dhZ2dlci11aScpLAogICAgICAgIHBhdGgoJ2FwaS9zY2hlbWEvcmVkb2MvJywgU3BlY3RhY3VsYXJSZWRvY1ZpZXcuYXNfdmlldyh1cmxfbmFtZT0nc2NoZW1hJyksIG5hbWU9J3JlZG9jJyksCiAgICBdCgpVc2FnZQotLS0tLQoKKmRyZi1zcGVjdGFjdWxhciogd29ya3MgcHJldHR5IHdlbGwgb3V0IG9mIHRoZSBib3guIFlvdSBtaWdodCBhbHNvIHdhbnQgdG8gc2V0IHNvbWUgbWV0YWRhdGEgZm9yIHlvdXIgQVBJLgpKdXN0IGNyZWF0ZSBhIGBgU1BFQ1RBQ1VMQVJfU0VUVElOR1NgYCBkaWN0aW9uYXJ5IGluIHlvdXIgYGBzZXR0aW5ncy5weWBgIGFuZCBvdmVycmlkZSB0aGUgZGVmYXVsdHMuCkhhdmUgYSBsb29rIGF0IHRoZSBgYXZhaWxhYmxlIHNldHRpbmdzIDxodHRwczovL2RyZi1zcGVjdGFjdWxhci5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3Qvc2V0dGluZ3MuaHRtbD5gXy4KClRoZSB0b3kgZXhhbXBsZXMgZG8gbm90IGNvdmVyIHlvdXIgY2FzZXM/IE5vIHByb2JsZW0sIHlvdSBjYW4gaGVhdmlseSBjdXN0b21pemUgaG93IHlvdXIgc2NoZW1hIHdpbGwgYmUgcmVuZGVyZWQuCgpDdXN0b21pemF0aW9uIGJ5IHVzaW5nIGBgQGV4dGVuZF9zY2hlbWFgYApeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgoKTW9zdCBjdXN0b21pemF0aW9uIGNhc2VzIHNob3VsZCBiZSBjb3ZlcmVkIGJ5IHRoZSBgYGV4dGVuZF9zY2hlbWFgYCBkZWNvcmF0b3IuIFdlIHVzdWFsbHkgZ2V0CnByZXR0eSBmYXIgd2l0aCBzcGVjaWZ5aW5nIGBgT3BlbkFwaVBhcmFtZXRlcmBgIGFuZCBzcGxpdHRpbmcgcmVxdWVzdC9yZXNwb25zZSBzZXJpYWxpemVycywgYnV0CnRoZSBza3kgaXMgdGhlIGxpbWl0LgoKLi4gY29kZTo6IHB5dGhvbgoKICAgIGZyb20gZHJmX3NwZWN0YWN1bGFyLnV0aWxzIGltcG9ydCBleHRlbmRfc2NoZW1hLCBPcGVuQXBpUGFyYW1ldGVyLCBPcGVuQXBpRXhhbXBsZQogICAgZnJvbSBkcmZfc3BlY3RhY3VsYXIudHlwZXMgaW1wb3J0IE9wZW5BcGlUeXBlcwoKICAgIGNsYXNzIEFsYnVtVmlld3NldCh2aWV3c2V0Lk1vZGVsVmlld3NldCk6CiAgICAgICAgc2VyaWFsaXplcl9jbGFzcyA9IEFsYnVtU2VyaWFsaXplcgoKICAgICAgICBAZXh0ZW5kX3NjaGVtYSgKICAgICAgICAgICAgcmVxdWVzdD1BbGJ1bUNyZWF0aW9uU2VyaWFsaXplciwKICAgICAgICAgICAgcmVzcG9uc2VzPXsyMDE6IEFsYnVtU2VyaWFsaXplcn0sCiAgICAgICAgKQogICAgICAgIGRlZiBjcmVhdGUoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgICAgICMgeW91ciBub24tc3RhbmRhcmQgYmVoYXZpb3VyCiAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmNyZWF0ZShyZXF1ZXN0KQoKICAgICAgICBAZXh0ZW5kX3NjaGVtYSgKICAgICAgICAgICAgIyBleHRyYSBwYXJhbWV0ZXJzIGFkZGVkIHRvIHRoZSBzY2hlbWEKICAgICAgICAgICAgcGFyYW1ldGVycz1bCiAgICAgICAgICAgICAgICBPcGVuQXBpUGFyYW1ldGVyKG5hbWU9J2FydGlzdCcsIGRlc2NyaXB0aW9uPSdGaWx0ZXIgYnkgYXJ0aXN0JywgcmVxdWlyZWQ9RmFsc2UsIHR5cGU9c3RyKSwKICAgICAgICAgICAgICAgIE9wZW5BcGlQYXJhbWV0ZXIoCiAgICAgICAgICAgICAgICAgICAgbmFtZT0ncmVsZWFzZScsCiAgICAgICAgICAgICAgICAgICAgdHlwZT1PcGVuQXBpVHlwZXMuREFURSwKICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj1PcGVuQXBpUGFyYW1ldGVyLlFVRVJZLAogICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdGaWx0ZXIgYnkgcmVsZWFzZSBkYXRlJywKICAgICAgICAgICAgICAgICAgICBleGFtcGxlcz1bCiAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5BcGlFeGFtcGxlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4YW1wbGUgMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5PSdzaG9ydCBvcHRpb25hbCBzdW1tYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdsb25nZXIgZGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9JzE5OTMtMDgtMjMnCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgIC4uLgogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgICAjIG92ZXJyaWRlIGRlZmF1bHQgZG9jc3RyaW5nIGV4dHJhY3Rpb24KICAgICAgICAgICAgZGVzY3JpcHRpb249J01vcmUgZGVzY3JpcHRpdmUgdGV4dCcsCiAgICAgICAgICAgICMgcHJvdmlkZSBBdXRoZW50aWNhdGlvbiBjbGFzcyB0aGF0IGRldmlhdGVzIGZyb20gdGhlIHZpZXdzIGRlZmF1bHQKICAgICAgICAgICAgYXV0aD1Ob25lLAogICAgICAgICAgICAjIGNoYW5nZSB0aGUgYXV0by1nZW5lcmF0ZWQgb3BlcmF0aW9uIG5hbWUKICAgICAgICAgICAgb3BlcmF0aW9uX2lkPU5vbmUsCiAgICAgICAgICAgICMgb3IgZXZlbiBjb21wbGV0ZWx5IG92ZXJyaWRlIHdoYXQgQXV0b1NjaGVtYSB3b3VsZCBnZW5lcmF0ZS4gUHJvdmlkZSByYXcgT3BlbiBBUEkgc3BlYyBhcyBEaWN0LgogICAgICAgICAgICBvcGVyYXRpb249Tm9uZSwKICAgICAgICAgICAgIyBhdHRhY2ggcmVxdWVzdC9yZXNwb25zZSBleGFtcGxlcyB0byB0aGUgb3BlcmF0aW9uLgogICAgICAgICAgICBleGFtcGxlcz1bCiAgICAgICAgICAgICAgICBPcGVuQXBpRXhhbXBsZSgKICAgICAgICAgICAgICAgICAgICAnRXhhbXBsZSAxJywKICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nbG9uZ2VyIGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgICAgICB2YWx1ZT0uLi4KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAuLi4KICAgICAgICAgICAgXSwKICAgICAgICApCiAgICAgICAgZGVmIGxpc3Qoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgICAgICMgeW91ciBub24tc3RhbmRhcmQgYmVoYXZpb3VyCiAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmxpc3QocmVxdWVzdCkKCiAgICAgICAgQGV4dGVuZF9zY2hlbWEoCiAgICAgICAgICAgIHJlcXVlc3Q9QWxidW1MaWtlU2VyaWFsaXplciwKICAgICAgICAgICAgcmVzcG9uc2VzPXsyMDQ6IE5vbmV9LAogICAgICAgICAgICBtZXRob2RzPVsiUE9TVCJdCiAgICAgICAgKQogICAgICAgIEBleHRlbmRfc2NoZW1hKGRlc2NyaXB0aW9uPSdPdmVycmlkZSBhIHNwZWNpZmljIG1ldGhvZCcsIG1ldGhvZHM9WyJHRVQiXSkKICAgICAgICBAYWN0aW9uKGRldGFpbD1UcnVlLCBtZXRob2RzPVsncG9zdCcsICdnZXQnXSkKICAgICAgICBkZWYgc2V0X3Bhc3N3b3JkKHNlbGYsIHJlcXVlc3QsIHBrPU5vbmUpOgogICAgICAgICAgICAjIHlvdXIgYWN0aW9uIGJlaGF2aW91cgogICAgICAgICAgICAuLi4KCk1vcmUgY3VzdG9taXphdGlvbgpeXl5eXl5eXl5eXl5eXl5eXl4KClN0aWxsIG5vdCBzYXRpc2ZpZWQ/IFlvdSB3YW50IG1vcmUhIFdlIHN0aWxsIGdvdCB5b3UgY292ZXJlZC4KVmlzaXQgYGN1c3RvbWl6YXRpb24gPGh0dHBzOi8vZHJmLXNwZWN0YWN1bGFyLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9jdXN0b21pemF0aW9uLmh0bWw+YF8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCgoKVGVzdGluZwotLS0tLS0tCgpJbnN0YWxsIHRlc3RpbmcgcmVxdWlyZW1lbnRzLgoKLi4gY29kZTo6IGJhc2gKCiAgICAkIHBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKClJ1biB3aXRoIHJ1bnRlc3RzLgoKLi4gY29kZTo6IGJhc2gKCiAgICAkIC4vcnVudGVzdHMucHkKCllvdSBjYW4gYWxzbyB1c2UgdGhlIGV4Y2VsbGVudCBgdG94YF8gdGVzdGluZyB0b29sIHRvIHJ1biB0aGUgdGVzdHMKYWdhaW5zdCBhbGwgc3VwcG9ydGVkIHZlcnNpb25zIG9mIFB5dGhvbiBhbmQgRGphbmdvLiBJbnN0YWxsIHRveApnbG9iYWxseSwgYW5kIHRoZW4gc2ltcGx5IHJ1bjoKCi4uIGNvZGU6OiBiYXNoCgogICAgJCB0b3gKCi4uIF9EamFuZ28gUkVTVCBmcmFtZXdvcms6IGh0dHBzOi8vd3d3LmRqYW5nby1yZXN0LWZyYW1ld29yay5vcmcvCi4uIF9PcGVuQVBJOiBodHRwczovL3N3YWdnZXIuaW8vCi4uIF8zLjAuMzogaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zCi4uIF8zLjE6IGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMAouLiBfdG94OiBodHRwczovL3RveC53aWtpLwouLiBfZHJmLXNwZWN0YWN1bGFyLXNpZGVjYXI6IGh0dHBzOi8vZ2l0aHViLmNvbS90ZnJhbnplbC9kcmYtc3BlY3RhY3VsYXItc2lkZWNhcgoKLi4gfGJ1aWxkLXN0YXR1c3wgaW1hZ2U6OiBodHRwczovL2dpdGh1Yi5jb20vdGZyYW56ZWwvZHJmLXNwZWN0YWN1bGFyL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcKICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL3RmcmFuemVsL2RyZi1zcGVjdGFjdWxhci9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwKLi4gfHB5cGktdmVyc2lvbnwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9kcmYtc3BlY3RhY3VsYXIuc3ZnCiAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9kcmYtc3BlY3RhY3VsYXIvCi4uIHxjb2RlY292fCBpbWFnZTo6IGh0dHBzOi8vY29kZWNvdi5pby9naC90ZnJhbnplbC9kcmYtc3BlY3RhY3VsYXIvYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmcKICAgOnRhcmdldDogaHR0cHM6Ly9jb2RlY292LmlvL2doL3RmcmFuemVsL2RyZi1zcGVjdGFjdWxhcgouLiB8ZG9jc3wgaW1hZ2U6OiBodHRwczovL3JlYWR0aGVkb2NzLm9yZy9wcm9qZWN0cy9kcmYtc3BlY3RhY3VsYXIvYmFkZ2UvCiAgIDp0YXJnZXQ6IGh0dHBzOi8vZHJmLXNwZWN0YWN1bGFyLnJlYWR0aGVkb2NzLmlvLwouLiB8cHlwaS1kbHwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvZG0vZHJmLXNwZWN0YWN1bGFyCiAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9kcmYtc3BlY3RhY3VsYXIvCg== readmeEtag: '"2feea8b7159b116605948dfc3081fec9061ea298"' readmeLastModified: Sun, 21 Sep 2025 20:46:56 GMT repositoryId: 244234763 description: Sane and flexible OpenAPI 3 schema generation for Django REST framework. created: '2020-03-01T22:36:54Z' updated: '2026-02-05T21:33:48Z' language: Python archived: false stars: 2789 watchers: 9 forks: 307 owner: tfranzel logo: https://avatars.githubusercontent.com/u/13507857?v=4 license: BSD-3-Clause repoEtag: '"c9f86ed76a85d77f72a75ab3940f97f023bde34854687e528176f42fbc8e0f05"' repoLastModified: Thu, 05 Feb 2026 21:33:48 GMT foundInMaster: true category: Server Implementations id: 520f5c66c3e42a7b3fbface4f156c1dc - source: openapi3 tags name: Schemathesis homepage: https://github.com/schemathesis/schemathesis language: Python source_description: >- A modern API testing tool for web applications built with OpenAPI and GraphQL specifications category: - Testing Tools - Server Implementations repository: https://github.com/schemathesis/schemathesis v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2NoZW1hdGhlc2lzL3NjaGVtYXRoZXNpcy9hY3Rpb25zIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9zY2hlbWF0aGVzaXMvc2NoZW1hdGhlc2lzL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbC9iYWRnZS5zdmciIGFsdD0iQnVpbGQiPgogICAgPC9hPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9jb2RlY292LmlvL2doL3NjaGVtYXRoZXNpcy9zY2hlbWF0aGVzaXMvYnJhbmNoL21hc3RlciIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgIDxpbWcgc3JjPSJodHRwczovL2NvZGVjb3YuaW8vZ2gvc2NoZW1hdGhlc2lzL3NjaGVtYXRoZXNpcy9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2ZyIgYWx0PSJDb3ZlcmFnZSI+CiAgICA8L2E+CiAgICA8YSBocmVmPSJodHRwczovL3B5cGkub3JnL3Byb2plY3Qvc2NoZW1hdGhlc2lzLyIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9zY2hlbWF0aGVzaXMuc3ZnIiBhbHQ9IlZlcnNpb24iPgogICAgPC9hPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3NjaGVtYXRoZXNpcy8iIHRhcmdldD0iX2JsYW5rIj4KICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3B5dmVyc2lvbnMvc2NoZW1hdGhlc2lzLnN2ZyIgYWx0PSJQeXRob24gdmVyc2lvbnMiPgogICAgPC9hPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9kaXNjb3JkLmdnL1I5QVNSQW1IbkEiIHRhcmdldD0iX2JsYW5rIj4KICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kaXNjb3JkLzkzODEzOTc0MDkxMjM2OTc1NSIgYWx0PSJEaXNjb3JkIj4KICAgIDwvYT4KICAgIDxhIGhyZWY9Imh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9sL3NjaGVtYXRoZXNpcy5zdmciIGFsdD0iTGljZW5zZSI+CiAgICA8L2E+CjwvcD4KCiMjIFNjaGVtYXRoZXNpcwoKPiAqKkNhdGNoIEFQSSBidWdzIGJlZm9yZSB5b3VyIHVzZXJzIGRvLioqIAoKU2NoZW1hdGhlc2lzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzIHRob3VzYW5kcyBvZiB0ZXN0IGNhc2VzIGZyb20geW91ciBPcGVuQVBJIG9yIEdyYXBoUUwgc2NoZW1hIGFuZCBmaW5kcyBlZGdlIGNhc2VzIHRoYXQgYnJlYWsgeW91ciBBUEkuCgo8cCBhbGlnbj0iY2VudGVyIj4KICA8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NjaGVtYXRoZXNpcy9zY2hlbWF0aGVzaXMvbWFzdGVyL2ltZy9kZW1vLmdpZiIgYWx0PSJTY2hlbWF0aGVzaXMgYXV0b21hdGljYWxseSBmaW5kaW5nIGEgc2VydmVyIGVycm9yIi8+CiAgPGJyPgogIDxpPkZpbmRpbmcgYnVncyB0aGF0IG1hbnVhbCB0ZXN0aW5nIG1pc3NlZDwvaT4KPC9wPgoKIyMgVHJ5IGl0IG5vdwoKYGBgY29uc29sZQojIFRlc3QgYSBkZW1vIEFQSSAtIGZpbmRzIHJlYWwgYnVncyBpbiAzMCBzZWNvbmRzCnV2eCBzY2hlbWF0aGVzaXMgcnVuIGh0dHBzOi8vZXhhbXBsZS5zY2hlbWF0aGVzaXMuaW8vb3BlbmFwaS5qc29uCgojIFRlc3QgeW91ciBvd24gQVBJCnV2eCBzY2hlbWF0aGVzaXMgcnVuIGh0dHBzOi8veW91ci1hcGkuY29tL29wZW5hcGkuanNvbgpgYGAKCgojIyBXaGF0IHByb2JsZW1zIGRvZXMgaXQgc29sdmU/CgotIPCfkqUgKio1MDAgZXJyb3JzKiogdGhhdCBjcmFzaCB5b3VyIEFQSSBvbiBlZGdlIGNhc2UgaW5wdXRzCi0g8J+TiyAqKlNjaGVtYSB2aW9sYXRpb25zKiogd2hlcmUgeW91ciBBUEkgcmV0dXJucyBkaWZmZXJlbnQgZGF0YSB0aGFuIGRvY3VtZW50ZWQKLSDwn5qqICoqVmFsaWRhdGlvbiBieXBhc3NlcyoqIHdoZXJlIGludmFsaWQgZGF0YSBnZXRzIGFjY2VwdGVkCi0g8J+UlyAqKkludGVncmF0aW9uIGZhaWx1cmVzKiogd2hlbiByZXNwb25zZXMgZG9uJ3QgbWF0Y2ggY2xpZW50IGV4cGVjdGF0aW9ucwotIPCflIQgKipTdGF0ZWZ1bCBidWdzKiogd2hlcmUgb3BlcmF0aW9ucyB3b3JrIGluZGl2aWR1YWxseSBidXQgZmFpbCBpbiByZWFsaXN0aWMgd29ya2Zsb3dzCgoKPiDimqDvuI8gKipVcGdyYWRpbmcgZnJvbSBvbGRlciB2ZXJzaW9ucz8qKiBDaGVjayBvdXIgW01pZ3JhdGlvbiBHdWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL3NjaGVtYXRoZXNpcy9zY2hlbWF0aGVzaXMvYmxvYi9tYXN0ZXIvTUlHUkFUSU9OLm1kKSBmb3Iga2V5IGNoYW5nZXMuCgojIEluc3RhbGxhdGlvbiAmIFVzYWdlCgoqKkNvbW1hbmQgTGluZToqKgpgYGBjb25zb2xlCnV2IHBpcCBpbnN0YWxsIHNjaGVtYXRoZXNpcwpzY2hlbWF0aGVzaXMgcnVuIGh0dHBzOi8veW91ci1hcGkuY29tL29wZW5hcGkuanNvbgpgYGAKCioqUHl0aG9uIFRlc3RzOioqCmBgYHB5dGhvbgppbXBvcnQgc2NoZW1hdGhlc2lzCgpzY2hlbWEgPSBzY2hlbWF0aGVzaXMub3BlbmFwaS5mcm9tX3VybCgiaHR0cHM6Ly95b3VyLWFwaS5jb20vb3BlbmFwaS5qc29uIikKCkBzY2hlbWEucGFyYW1ldHJpemUoKQpkZWYgdGVzdF9hcGkoY2FzZSk6CiAgICAjIFRlc3RzIHdpdGggcmFuZG9tIGRhdGEsIGVkZ2UgY2FzZXMsIGFuZCBpbnZhbGlkIGlucHV0cwogICAgY2FzZS5jYWxsX2FuZF92YWxpZGF0ZSgpCgojIFN0YXRlZnVsIHRlc3Rpbmc6IFRlc3RzIHdvcmtmbG93cyBsaWtlOiBjcmVhdGUgdXNlciAtPiBnZXQgdXNlciAtPiBkZWxldGUgdXNlcgpBUElXb3JrZmxvdyA9IHNjaGVtYS5hc19zdGF0ZV9tYWNoaW5lKCkKIyBDcmVhdGVzIGEgdGVzdCBjbGFzcyBmb3IgcHl0ZXN0L3VuaXR0ZXN0ClRlc3RBUEkgPSBBUElXb3JrZmxvdy5UZXN0Q2FzZQpgYGAKCioqQ0kvQ0Q6KioKYGBgeWFtbAotIHVzZXM6IHNjaGVtYXRoZXNpcy9hY3Rpb25AdjIKICB3aXRoOgogICAgc2NoZW1hOiAiaHR0cHM6Ly95b3VyLWFwaS5jb20vb3BlbmFwaS5qc29uIgpgYGAKCiMjIFdobyB1c2VzIGl0CgpVc2VkIGJ5IHRlYW1zIGF0ICoqW1Nwb3RpZnldKGh0dHBzOi8vZ2l0aHViLmNvbS9iYWNrc3RhZ2UvYmFja3N0YWdlKSoqLCAqKltXb3JkUHJlc3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3Mvb3BlbnZlcnNlKSoqLCAqKkpldEJyYWlucyoqLCAqKlJlZCBIYXQqKiwgYW5kIGRvemVucyBvZiBvdGhlciBjb21wYW5pZXMuCgoKPiAiX1NjaGVtYXRoZXNpcyBpcyB0aGUgYmVzdCB0b29sIGZvciBmdXp6IHRlc3Rpbmcgb2YgUkVTVCBBUElzIG9uIHRoZSBtYXJrZXQuIFdlIGF0IFJlZCBIYXQgdXNlIGl0IGZvciBleGFtaW5pbmcgb3VyIGFwcGxpY2F0aW9ucyBpbiBmdW5jdGlvbmFsIGFuZCBpbnRlZ3JhdGlvbiB0ZXN0aW5nIGxldmVscy5fIiAtIERtaXRyeSBNaXNoYXJvdiwgUmVkSGF0CgojIyBTZWUgaXQgaW4gYWN0aW9uCgrwn5SsICoqW0xpdmUgQmVuY2htYXJrc10oaHR0cHM6Ly93b3JrYmVuY2guc2NoZW1hdGhlc2lzLmlvKSoqIHNob3dpbmcgY29udGludW91cyB0ZXN0aW5nIHJlc3VsdHMgZnJvbSByZWFsLXdvcmxkIEFQSXM6CgotIENvZGUgJiBBUEkgc2NoZW1hIGNvdmVyYWdlIGFjaGlldmVkCi0gSXNzdWVzIGZvdW5kIHdpdGggZGV0YWlsZWQgY2F0ZWdvcml6YXRpb24KLSBQZXJmb3JtYW5jZSBhY3Jvc3MgZGlmZmVyZW50IGZ1enppbmcgc3RyYXRlZ2llcwoKIyMgRG9jdW1lbnRhdGlvbgoK8J+TmiAqKltEb2N1bWVudGF0aW9uXShodHRwczovL3NjaGVtYXRoZXNpcy5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvKSoqIHdpdGggZ3VpZGVzLCBleGFtcGxlcywgYW5kIEFQSSByZWZlcmVuY2UuCgojIyBHZXQgSGVscAoKLSDwn5KsIFtEaXNjb3JkIGNvbW11bml0eV0oaHR0cHM6Ly9kaXNjb3JkLmdnL1I5QVNSQW1IbkEpCi0g8J+QmyBbR2l0SHViIGlzc3Vlc10oaHR0cHM6Ly9naXRodWIuY29tL3NjaGVtYXRoZXNpcy9zY2hlbWF0aGVzaXMvaXNzdWVzKQoKIyMgQ29udHJpYnV0aW5nCgpXZSB3ZWxjb21lIGNvbnRyaWJ1dGlvbnMhIFNlZSBvdXIgW2NvbnRyaWJ1dGluZyBndWlkZWxpbmVzXShDT05UUklCVVRJTkcubWQpIGFuZCBqb2luIGRpc2N1c3Npb25zIGluIFtpc3N1ZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2hlbWF0aGVzaXMvc2NoZW1hdGhlc2lzL2lzc3Vlcykgb3IgW0Rpc2NvcmRdKGh0dHBzOi8vZGlzY29yZC5nZy9SOUFTUkFtSG5BKS4KCiMjIEFja25vd2xlZGdlbWVudHMKClNjaGVtYXRoZXNpcyBpcyBidWlsdCBvbiB0b3Agb2YgPGEgaHJlZj0iaHR0cHM6Ly9oeXBvdGhlc2lzLndvcmtzLyIgdGFyZ2V0PSJfYmxhbmsiPkh5cG90aGVzaXM8L2E+LCBhIHBvd2VyZnVsIHByb3BlcnR5LWJhc2VkIHRlc3RpbmcgbGlicmFyeSBmb3IgUHl0aG9uLgoKIyMgTGljZW5zZQoKVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgW01JVCBsaWNlbnNlXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuCg== readmeEtag: '"4433d725270a09d142c5b505077029a2802586ab"' readmeLastModified: Sun, 23 Nov 2025 18:09:11 GMT repositoryId: 203157084 description: Catch API bugs before your users do created: '2019-08-19T11:13:01Z' updated: '2026-02-06T02:40:21Z' language: Python archived: false stars: 3019 watchers: 18 forks: 197 owner: schemathesis logo: https://avatars.githubusercontent.com/u/70383271?v=4 license: MIT repoEtag: '"8ea36cb90ea3765aaf29696d331d7c7aec4526116addf82a2c4f93a2285cbcd2"' repoLastModified: Fri, 06 Feb 2026 02:40:21 GMT foundInMaster: true id: f4032fb371a703acffa691c0f1239d45 oldLocations: - https://github.com/kiwicom/schemathesis - source: openapi3 tags repository: https://github.com/google/gnostic v3: true repositoryMetadata: base64Readme: >- WyFbR28gQWN0aW9ucyBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ25vc3RpYy93b3JrZmxvd3MvR28vYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nbm9zdGljL2FjdGlvbnMpCgojIOKogSBnbm9zdGljCgpUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgYSBHbyBjb21tYW5kIGxpbmUgdG9vbCB3aGljaCBjb252ZXJ0cyBKU09OIGFuZCBZQU1MCltPcGVuQVBJXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgZGVzY3JpcHRpb25zIHRvIGFuZApmcm9tIGVxdWl2YWxlbnQgUHJvdG9jb2wgQnVmZmVyIHJlcHJlc2VudGF0aW9ucy4KCltQcm90b2NvbCBCdWZmZXJzXShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9wcm90b2NvbC1idWZmZXJzLykgcHJvdmlkZSBhCmxhbmd1YWdlLW5ldXRyYWwsIHBsYXRmb3JtLW5ldXRyYWwsIGV4dGVuc2libGUgbWVjaGFuaXNtIGZvciBzZXJpYWxpemluZwpzdHJ1Y3R1cmVkIGRhdGEuICoqZ25vc3RpYyoqJ3MgUHJvdG9jb2wgQnVmZmVyIG1vZGVscyBmb3IgdGhlIE9wZW5BUEkKU3BlY2lmaWNhdGlvbiBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBjb2RlIHRoYXQgaW5jbHVkZXMgZGF0YSBzdHJ1Y3R1cmVzIHdpdGgKZXhwbGljaXQgZmllbGRzIGZvciB0aGUgZWxlbWVudHMgb2YgYW4gT3BlbkFQSSBkZXNjcmlwdGlvbi4gVGhpcyBtYWtlcyBpdApwb3NzaWJsZSBmb3IgZGV2ZWxvcGVycyB0byB3b3JrIHdpdGggT3BlbkFQSSBkZXNjcmlwdGlvbnMgaW4gdHlwZS1zYWZlIHdheXMsCndoaWNoIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgaW4gc3Ryb25nbHktdHlwZWQgbGFuZ3VhZ2VzIGxpa2UgR28gYW5kCltEYXJ0XShodHRwczovL2RhcnQuZGV2LykuCgoqKmdub3N0aWMqKiByZWFkcyBPcGVuQVBJIGRlc2NyaXB0aW9ucyBpbnRvIHRoZXNlIGdlbmVyYXRlZCBkYXRhIHN0cnVjdHVyZXMsCnJlcG9ydHMgZXJyb3JzLCByZXNvbHZlcyBpbnRlcm5hbCBkZXBlbmRlbmNpZXMsIGFuZCB3cml0ZXMgdGhlIHJlc3VsdHMgaW4gYQpiaW5hcnkgZm9ybSB0aGF0IGNhbiBiZSB1c2VkIGluIGFueSBsYW5ndWFnZSB0aGF0IGlzIHN1cHBvcnRlZCBieSB0aGUgUHJvdG9jb2wKQnVmZmVyIHRvb2xzLiBBIHBsdWdpbiBpbnRlcmZhY2Ugc2ltcGxpZmllcyBpbnRlZ3JhdGlvbiB3aXRoIEFQSSB0b29scyB3cml0dGVuCmluIGEgdmFyaWV0eSBvZiBkaWZmZXJlbnQgbGFuZ3VhZ2VzLCBhbmQgd2hlbiBuZWNlc3NhcnksIFByb3RvY29sIEJ1ZmZlcgpPcGVuQVBJIGRlc2NyaXB0aW9ucyBjYW4gYmUgcmVleHBvcnRlZCBhcyBKU09OIG9yIFlBTUwuCgoqKmdub3N0aWMqKiBjb21waWxhdGlvbiBjb2RlIGFuZCBPcGVuQVBJIFByb3RvY29sIEJ1ZmZlciBtb2RlbHMgYXJlCmF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gYW4KW09wZW5BUEkgSlNPTiBTY2hlbWFdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3NjaGVtYXMvdjIuMC9zY2hlbWEuanNvbikuClNvdXJjZSBjb2RlIGZvciB0aGUgZ2VuZXJhdG9yIGlzIGluIHRoZSBbZ2VuZXJhdGUtZ25vc3RpY10oZ2VuZXJhdGUtZ25vc3RpYykKZGlyZWN0b3J5LgoKIyMgUmVsYXRlZCBSZXBvc2l0b3JpZXMKCltnb29nbGUvZ25vc3RpYy1tb2RlbHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ25vc3RpYy1tb2RlbHMpIGNvbnRhaW5zIGEKbGlnaHR3ZWlnaHQgZGlzdHJpYnV0aW9uIG9mIHRoZSBwcm90b2J1ZiBtb2RlbHMgZ2VuZXJhdGVkIGJ5IHRoaXMgcHJvamVjdC4KV2hlcmUgYSBsb3ctZGVwZW5kZW5jeSBpbnRlZ3JhdGlvbiBvZiBqdXN0IHRoZXNlIG1vZGVscyBpcyBuZWVkZWQsIEdvIHByb2plY3RzCmNhbiBpbXBvcnQgcGFja2FnZXMgZnJvbSBgZ25vc3RpYy1tb2RlbHNgIGluc3RlYWQgb2YgYGdub3N0aWNgLgoKW2dvb2dsZS9nbm9zdGljLWdycGNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ25vc3RpYy1ncnBjKSBjb250YWlucyBhCmdub3N0aWMgcGx1Z2luIHRoYXQgY2FuIGdlbmVyYXRlIGFuIGFubm90YXRlZCBQcm90b2NvbCBCdWZmZXIgZGVzY3JpcHRpb24gb2YgYW4KQVBJIHRoYXQsIHdoZW4gdHJhbnNjb2RlZCwgcHJvZHVjZXMgYW4gQVBJIHRoYXQgY29uZm9ybXMgdG8gYSBzcGVjaWZpZWQgT3BlbkFQSQpkb2N1bWVudC4gVG8gZ28gZnJvbSBwcm90b2J1ZiB0byBPcGVuQVBJLCBzZWUgdGhlCltwcm90b2MtZ2VuLW9wZW5hcGldKGNtZC9wcm90b2MtZ2VuLW9wZW5hcGkpIHRvb2wgaW4gdGhpcyBwcm9qZWN0LgoKW2dvb2dsZS9nbm9zdGljLWdvLWdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nbm9zdGljLWdvLWdlbmVyYXRvcikKY29udGFpbnMgYW4gZXhwZXJpbWVudGFsIGdub3N0aWMgcGx1Z2luIHRoYXQgZ2VuZXJhdGVzIGEgR28gY2xpZW50IGZvciBhbiBBUEkKZGVzY3JpYmVkIGJ5IGEgc3BlY2lmaWVkIE9wZW5BUEkgZG9jdW1lbnQuCgojIyBEaXNjbGFpbWVyCgpGZWVkYmFjayBhbmQgY29udHJpYnV0aW9ucyBhcmUgd2VsY29tZSEgVW50aWwgdGhlcmUgaXMgYSAxLjAgcmVsZWFzZSwgcGxlYXNlCmNvbnNpZGVyIHRoaXMgcHJlcmVsZWFzZSBzb2Z0d2FyZSBhbmQgd29yayBpbiBwcm9ncmVzcy4gVG8gZW5zdXJlIHN0YWJsZQpidWlsZHMsIHdlIHJlcXVlc3QgdGhhdCBkZXBlbmRlbnQgcHJvamVjdHMgYWx3YXlzIHJlZmVyIHRvIHRhZ2dlZCByZWxlYXNlcyBvZgoqKmdub3N0aWMqKi4KCiMjIFJlcXVpcmVtZW50cwoKKipnbm9zdGljKiogY2FuIGJlIHJ1biBpbiBhbnkgZW52aXJvbm1lbnQgdGhhdCBzdXBwb3J0cyBbR29dKGh0dHA6Ly9nb2xhbmcub3JnKQphbmQgdGhlCltQcm90b2NvbCBCdWZmZXIgQ29tcGlsZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcm90b2NvbGJ1ZmZlcnMvcHJvdG9idWYpLgoKIyMgSW5zdGFsbGF0aW9uIGFuZCBHZXR0aW5nIFN0YXJ0ZWQKClRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIGFyZSBmb3IgaW5zdGFsbGluZyAqKmdub3N0aWMqKiB1c2luZwpbR28gbW9kdWxlc10oaHR0cHM6Ly9ibG9nLmdvbGFuZy5vcmcvdXNpbmctZ28tbW9kdWxlcyksIHN1cHBvcnRlZCBieSBHbyAxLjExCmFuZCBsYXRlci4KCjEuICBHZXQgdGhpcyBwYWNrYWdlIGJ5IGRvd25sb2FkaW5nIGl0IHdpdGggYGdpdCBjbG9uZWAuCgogICAgICAgIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dub3N0aWMKICAgICAgICBjZCBnbm9zdGljCgoyLiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgYSBsb2NhbCBpbnN0YWxsYXRpb24gb2YgYHByb3RvY2AuIFlvdSBjYW4gZ2V0IGBwcm90b2NgCiAgICBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL3Byb3RvY29sYnVmZmVycy9wcm90b2J1ZikuCgozLiAgQnVpbGQgKipnbm9zdGljKiogd2l0aCBgbWFrZWAuIFRoaXMgdXNlcwogICAgW2dvIGdlbmVyYXRlXShodHRwczovL2Jsb2cuZ29sYW5nLm9yZy9nZW5lcmF0ZSkgdG8gYnVpbGQgc3VwcG9ydCBjb2RlCiAgICBpbmNsdWRpbmcgY29kZSBnZW5lcmF0ZWQgYnkgYHByb3RvY2AgYW5kIHRoZSBHbyBgcHJvdG9jYCBwbHVnaW4sIHdoaWNoIGlzCiAgICBhdXRvbWF0aWNhbGx5IGRvd25sb2FkZWQgZnJvbQogICAgW2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmXShodHRwczovL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmKSBieSB0aGUKICAgIFtDT01QSUxFLVBST1RPUy5zaF0oQ09NUElMRS1QUk9UT1Muc2gpIHNjcmlwdC4gVGhpcyBhbHNvIGJ1aWxkcyBhbGwgcGx1Z2lucwogICAgYW5kIGFzc29jaWF0ZWQgdG9vbHMgaW4gdGhpcyByZXBvLgoKNC4gIFZlcmlmeSAqKmdub3N0aWMqKiB3aXRoIGBtYWtlIHRlc3RgLiBUaGVzZSB0ZXN0cyBhcmUgcnVuIGJ5ICoqZ25vc3RpYyoqJ3MKICAgIGNvbnRpbnVvdXMgaW50ZWdyYXRpb24sIHNvIHlvdSBzaG91bGQgZXhwZWN0IHRoZW0gdG8gcGFzcyBmb3IgYWxsIHJlbGVhc2UKICAgIHZlcnNpb25zLgoKNS4gIFJ1biAqKmdub3N0aWMqKi4gVGhpcyBzYW1wbGUgaW52b2NhdGlvbiBjcmVhdGVzIGEgZmlsZSBpbiB0aGUgY3VycmVudAogICAgZGlyZWN0b3J5IG5hbWVkIGBwZXRzdG9yZS5wYmAgdGhhdCBjb250YWlucyBhIGJpbmFyeSBQcm90b2NvbCBCdWZmZXIKICAgIGRlc2NyaXB0aW9uIG9mIGEgc2FtcGxlIEFQSS4KCiAgICAgICAgICAgIGdub3N0aWMgLS1wYi1vdXQ9LiBleGFtcGxlcy92Mi4wL2pzb24vcGV0c3RvcmUuanNvbgoKNi4gIFlvdSBjYW4gYWxzbyBjb21waWxlIGZpbGVzIHRoYXQgeW91IHNwZWNpZnkgd2l0aCBhIFVSTC4gSGVyZSdzIGFub3RoZXIgd2F5CiAgICB0byBjb21waWxlIHRoZSBwcmV2aW91cyBleGFtcGxlLiBUaGlzIHRpbWUgd2UncmUgY3JlYXRpbmcgYHBldHN0b3JlLnRleHRgLAogICAgd2hpY2ggY29udGFpbnMgYSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBQcm90b2NvbCBCdWZmZXIgZGVzY3JpcHRpb24uCiAgICBUaGlzIGlzIG1haW5seSBmb3IgdXNlIGluIHRlc3RpbmcgYW5kIGRlYnVnZ2luZy4KCiAgICAgICAgICAgIGdub3N0aWMgLS10ZXh0LW91dD1wZXRzdG9yZS50ZXh0IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9nb29nbGUvZ25vc3RpYy9tYXN0ZXIvZXhhbXBsZXMvdjIuMC9qc29uL3BldHN0b3JlLmpzb24KCjcuICBGb3IgYSBzYW1wbGUgYXBwbGljYXRpb24sIHNlZSBhcHBzL3JlcG9ydC4gVGhpcyByZWFkcyBhIGJpbmFyeSBQcm90b2NvbAogICAgQnVmZmVyIGVuY29kaW5nIGNyZWF0ZWQgYnkgKipnbm9zdGljKiouCgogICAgICAgIGdvIGluc3RhbGwgLi9hcHBzL3JlcG9ydCAjIyBhdXRvbWF0aWNhbGx5IGluc3RhbGxlZCBieSB0aGUgdG9wLWxldmVsIE1ha2VmaWxlCiAgICAgICAgcmVwb3J0IHBldHN0b3JlLnBiCgo4LiAgKipnbm9zdGljKiogYWxzbyBzdXBwb3J0cyBwbHVnaW5zLiAqKmdub3N0aWMqKidzIHBsdWdpbiBpbnRlcmZhY2UgaXMKICAgIG1vZGVsZWQgb24gYHByb3RvY2AncwogICAgW3BsdWdpbi5wcm90b10oaHR0cHM6Ly9naXRodWIuY29tL3Byb3RvY29sYnVmZmVycy9wcm90b2J1Zi9ibG9iL21hc3Rlci9zcmMvZ29vZ2xlL3Byb3RvYnVmL2NvbXBpbGVyL3BsdWdpbi5wcm90bykKICAgIGFuZCBpcyBkZXNjcmliZWQgaW4gW3BsdWdpbnMvcGx1Z2luLnByb3RvXShwbHVnaW5zL3BsdWdpbi5wcm90bykuIFNldmVyYWwKICAgIHBsdWdpbnMgYXJlIGltcGxlbWVudGVkIGluIHRoZSBgcGx1Z2luc2AgZGlyZWN0b3J5LiBPdGhlcnMsIGxpa2UKICAgIFtnbm9zdGljLWdycGNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ25vc3RpYy1ncnBjKSBhbmQKICAgIFtnbm9zdGljLWdvLWdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nbm9zdGljLWdvLWdlbmVyYXRvciksCiAgICBhcmUgcHVibGlzaGVkIGluIHRoZWlyIG93biByZXBvc2l0b3JpZXMuIE9uZSBzdWNoIHBsdWdpbiBpcwogICAgW2dub3N0aWMtdm9jYWJ1bGFyeV0ocGx1Z2lucy9nbm9zdGljLXZvY2FidWxhcnkpLCB3aGljaCBwcm9kdWNlcyBhIHN1bW1hcnkKICAgIG9mIHRoZSB3b3JkIHVzYWdlIGluIGFuIEFQSXMgaW50ZXJmYWNlcy4gWW91IGNhbiBydW4gYGdub3N0aWMtdm9jYWJ1bGFyeWAKICAgIHdpdGggdGhlIGZvbGxvd2luZzoKCiAgICAgICAgICAgIGdub3N0aWMgZXhhbXBsZXMvdjIuMC9qc29uL3BldHN0b3JlLmpzb24gLS12b2NhYnVsYXJ5X291dD0uCgogICAgVGhpcyB3aWxsIHByb2R1Y2UgZmlsZXMgbmFtZWQgYHZvY2FidWxhcnkucGJgIGFuZCBgdm9jYWJ1bGFyeS5qc29uYCBpbgogICAgYGV4YW1wbGVzL3YyLjAvanNvbmAuIEZvciB0aGUgZm9ybWF0IG9mIGB2b2NhYnVsYXJ5LnBiYCwgc2VlCiAgICBbbWV0cmljcy92b2NhYnVsYXJ5LnByb3RvXShtZXRyaWNzL3ZvY2FidWxhcnkucHJvdG8pLgoKOS4gIFtPcHRpb25hbF0gQSBsYXJnZSBwYXJ0IG9mICoqZ25vc3RpYyoqIGlzIGF1dG9tYXRpY2FsbHktZ2VuZXJhdGVkIGJ5IHRoZQogICAgW2dlbmVyYXRlLWdub3N0aWNdKGdlbmVyYXRlLWdub3N0aWMpIHRvb2wuIFRoaXMgdXNlcyBKU09OIHNjaGVtYXMgdG8KICAgIGdlbmVyYXRlIFByb3RvY29sIEJ1ZmZlciBsYW5ndWFnZSBmaWxlcyB0aGF0IGRlc2NyaWJlIHN1cHBvcnRlZCBBUEkKICAgIHNwZWNpZmljYXRpb24gZm9ybWF0cyBhbmQgR28tbGFuZ3VhZ2UgZmlsZXMgb2YgY29kZSB0aGF0IHdpbGwgcmVhZCBKU09OIG9yCiAgICBZQU1MIEFQSSBkZXNjcmlwdGlvbnMgaW50byB0aGUgZ2VuZXJhdGVkIHByb3RvY29sIGJ1ZmZlciBtb2RlbHMuCiAgICBQcmUtZ2VuZXJhdGVkIHZlcnNpb25zIG9mIHRoZXNlIGZpbGVzIGFyZSBjaGVja2VkIGludG8gdGhlCiAgICBbb3BlbmFwaXYyXShvcGVuYXBpdjIpLCBbb3BlbmFwaXYzXShvcGVuYXBpdjMpLCBhbmQgW2Rpc2NvdmVyeV0oZGlzY292ZXJ5KQogICAgZGlyZWN0b3JpZXMuIFlvdSBjYW4gcmVnZW5lcmF0ZSB0aGlzIGNvZGUgd2l0aCB0aGUgZm9sbG93aW5nOgoKICAgICAgICBnbyBpbnN0YWxsIC4vZ2VuZXJhdGUtZ25vc3RpYwogICAgICAgIGdlbmVyYXRlLWdub3N0aWMgLS12MgogICAgICAgIGdlbmVyYXRlLWdub3N0aWMgLS12MwogICAgICAgIGdlbmVyYXRlLWdub3N0aWMgLS1kaXNjb3ZlcnkKCiMjIENvcHlyaWdodAoKQ29weXJpZ2h0IDIwMTctMjAyMCwgR29vZ2xlIExMQy4KCiMjIExpY2Vuc2UKClJlbGVhc2VkIHVuZGVyIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UuCg== readmeEtag: '"2ea85c46ff9c52bc42fa33d54ac43fb1353eb957"' readmeLastModified: Thu, 29 Feb 2024 22:55:22 GMT repositoryId: 73847381 description: >- A compiler for APIs described by the OpenAPI Specification with plugins for code generation and other API support tasks. created: '2016-11-15T19:21:53Z' updated: '2026-02-04T12:04:16Z' language: Go archived: false stars: 2265 watchers: 35 forks: 272 owner: google logo: https://avatars.githubusercontent.com/u/1342004?v=4 license: Apache-2.0 repoEtag: '"ce03df1fa6f0b322335dde288841be59a62dd4ca60d8afaeb392a2b02b33bb99"' repoLastModified: Wed, 04 Feb 2026 12:04:16 GMT foundInMaster: true category: Converters id: 46e070512676eb0fd196ee199e6a0b34 oldLocations: - https://github.com/googleapis/gnostic - source: openapi3 tags repository: https://github.com/rapi-doc/rapidoc v3: true repositoryMetadata: base64Readme: >- PGltZyBhbHQ9Ik1yaW5Eb2MgbG9nbyIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vcmFwaS1kb2MvUmFwaURvYy9ibG9iL21hc3Rlci9sb2dvLnBuZyIgd2lkdGg9IjYwcHgiIC8+CgoKPHAgYWxpZ249ImNlbnRlciI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ibHVlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSIvPgogICAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3NpemUvcmFwaS1kb2MvcmFwaWRvYy9kaXN0L3JhcGlkb2MtbWluLmpzLnN2Zz9jb2xvckI9Ymx1ZSZsYWJlbD1taW5pZmllZCZzdHlsZT1mbGF0LXNxdWFyZSI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvc2l6ZS9yYXBpLWRvYy9yYXBpZG9jL2Rpc3QvcmFwaWRvYy1taW4uanMuZ3ouc3ZnP2NvbG9yQj1ibHVlJmxhYmVsPXppcCZzdHlsZT1mbGF0LXNxdWFyZSI+CiAgICA8YSBocmVmPSJodHRwczovL3d3dy53ZWJjb21wb25lbnRzLm9yZy9lbGVtZW50L3JhcGlkb2MiIGFsdD0icHVibGlzaGVkIG9uIHdlYmNvbXBvbmVudHMub3JnIj4KICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS93ZWJjb21wb25lbnRzLm9yZy1yYXBpZG9jLWJsdWUuc3ZnP3N0eWxlPXNvY2lhbCIvPgogICAgPC9hPgo8L3A+ICAgICAgICAKCiMgUmFwaURvYwpDdXN0b20gRWxlbWVudCBmb3IgT3Blbi1BUEkgc3BlYyB2aWV3aW5nCgo+IFNwb25zb3JlZCBieSBbWnVwbG9dKGh0dHBzOi8venVwbG8ubGluay9yYXBpZG9jLTIpIC0gR2V0IGEgU3RyaXBlLWxpa2UgQVBJIGV4cGVyaWVuY2UgZm9yIHlvdXIgY3VzdG9tZXJzIGluIG1pbnV0ZXMgLSBkb2N1bWVudGF0aW9uLCByYXRlLWxpbWl0aW5nIGFuZCBBUEkta2V5IGF1dGggaW4gbWludXRlcy4gCgojIyBGZWF0dXJlcwotIFN1cHBvcnRzIFN3YWdnZXIgMi4wLCBPcGVuQVBJIDMueC54IAotIFdvcmtzIHdpdGggYW55IGZyYW1ld29yayBvciB3aXRoIG5vIGZyYW1ld29yawotIEFsbG93cyBtYWtpbmcgQVBJIGNhbGxzCi0gQmV0dGVyIFVzYWJpbGl0eSwgCiAgLSBhbGwgTW9kZWxzIGFuZCBFeGFtcGxlcyBhcmUgZXhwYW5kZWQgYnkgZGVmYXVsdCwgZWxpbWluYXRlcyB0aGUgbmVlZCB0byBjbGljayBhbmQgcmV2ZWFsLgogIC0gUmVxdWVzdCBmaWVsZHMgYXJlIHByZS1wb3B1bGF0ZWQgd2l0aCBzYW1wbGUgZGF0YQogIC0gVGFrZXMgb25seSBvbmUgY2xpY2sgdG8gbWFrZSBhbiBBUEkgY2FsbAogIC0gUmVxdWVzdCBhbmQgcmVzcG9uc2UgY2FuIGJlIHBsYWNlZCBzaWRlLWJ5LXNpZGUgZm9yIGVhc3kgY29tcGFyaXNvbgotIEJyYW5kaW5nIGFuZCBQZXJzb25hbGl6YXRpb24gZmVhdHVyZXMgbWFrZXMgaXQgZWFzeSB0byBmb2xsb3cgYW55IHN0eWxlIGd1aWRlCiAgLSBDb21lcyB3aXRoIDIgVGhlbWVzIChEYXJrIGFuZCBMaWdodCkKICAtIFJlcGxhY2UgZGVmYXVsdCBsb2dvIHdpdGggeW91cnMKICAtIFR5cG9ncmFwaHksIGFsbG93cyBjaGFuZ2luZyBmb250cwogIC0gQWxsb3dzIGNoYW5naW5nIHRleHQtY29sb3IsIGJ1dHRvbi1jb2xvciwgaGVhZGVyLWNvbG9yIGFuZCBjb2xvciBvZiBvdGhlciBVSSBlbGVtZW50cwotIFBsZW50eSBvZiBjdXN0b21pemF0aW9uIG9wdGlvbnMgCiAgLSBBZGQgZXh0ZXJuYWwgY29udGVudHMgYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIHRoZSBkb2N1bWVudCwgIHlvdSBtYXkgYWRkIGltYWdlcywgbGluaywgdGV4dCwgZm9ybXMgZXRjCiAgLSBBbGxvd3MgZGlzYWJsaW5nIEFQSSBjYWxsaW5nIGZlYXR1cmUKICAtIEhpZGUgdGhlIGhlYWRlciwgc28gdGhlIHVzZXIgY2FuJ3QgbG9hZCBhbnkgb3RoZXIgT3BlbkFQSSBTcGVjCiAgLSBIaWRlIEF1dGhlbnRpY2F0aW9uIGFuZCBwcm92aWRlIHlvdXIgb3duIHByZS1nZW5lcmF0ZWQgYXBpLWtleSAKICAtIEVtYmVkIGl0IGluc2lkZSBhbm90aGVyIEhUTUwgZG9jdW1lbnQKICAtIFVzZSBpdCBpbnNpZGUgYW5vdGhlciBmcmFtZXdvcmsgKHJlYWN0LCB2dWUsIGFuZ3VsYXIsIGxpdC1lbGVtZW50KQogIC0gVXNlIEphdmFTY3JpcHQgdG8gY2hhbmdlIGl0cyBhdHRyaWJ1dGVzLCBhbmQgaXQgd2lsbCByZWFjdCB0byB0aG9zZSBjaGFuZ2VzCiAgLSBTdHlsZSB0aGUgZWxlbWVudCB3aXRoIHN0YW5kYXJkIGNzcyAoY2hhbmdlIHBhZGRpbmcsIHBvc2l0aW9uLCBib3JkZXIsIG1hcmdpbiApCi0gTGlnaHR3ZWlnaHQgYW5kIGZhc3QKLSBMb2FkIGxvY2FsIGpzb24gc3BlYyBmcm9tIHRoZSBkaXNrCi0gU3VwcG9ydGVkIG9uIENocm9tZSwgRmlyZUZveCBhbmQgU2FmYXJpLiAoTm90IHlldCB0ZXN0ZWQgb24gRWRnZSkKCgojIyBEb2N1bWVudGF0aW9uCltDaGVjayBvdXQgdGhlIHVzYWdlIGFuZCBkZW1vc10oaHR0cHM6Ly9yYXBpLWRvYy5naXRodWIuaW8vUmFwaURvYy8pCgojIyBFeGFtcGxlcwpbRXhhbXBsZXMgYW5kIFRlc3QgY2FzZXNdKGh0dHBzOi8vcmFwaS1kb2MuZ2l0aHViLmlvL1JhcGlEb2MvbGlzdC5odG1sKQoKCiMjIEJ1aWxkIFByb2Nlc3MKYGBgYmFzaAojIENsb25lIC8gRG93bmxvYWQgdGhlIHByb2plY3QgdGhlbgpucG0gaW5zdGFsbAoKIyBidWlsZCB3aWxsIGdlbmVyYXRlIHJhcGlkb2MtbWluLmpzLCB0aGlzIGlzIHRoZSBvbmx5IGZpbGUgeW91IHdpbGwgbmVlZC4KIyB1c2UgaXQgaW4gdGhlIHNjcmlwdCB0YWcgb2YgeW91ciBodG1sIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InJhcGlkb2MtbWluLmpzIj48L3NjcmlwdD48L2JvZHk+Cm5wbSBydW4gYnVpbGQgCgojIGZvciBkZXZlbG9wbWVudCB1c2UgeWFybiBzZXJ2ZSAodGhpcyB3aWxsIHN0YXJ0IGFuIHdlYnNlcnZlciBhdCBwb3J0IDgwODAsIHRoZW4gbmF2aWdhdGUgdG8gbG9jYWxob3N0OjgwODApIApucG0gcnVuIHNlcnZlCmBgYAoKIyMgUm9hZG1hcAotIOKchSBVcGdyYWRlIHRvIHVzZSBgbGl0IDJgCi0gUHJlIFJlbmRlcmluZyAvIFNlcnZlciBTaWRlIFJlbmRlcmluZyAoU1NSKSBvZiBSYXBpRG9jCi0gSW1wcm92ZSBQREYgZ2VuZXJhdGlvbiBvZiBPcGVuQVBJIHNwZWMgVXNpbmcgUmFwaVBERgotIENyZWF0ZSBhIENvbW1hbmQgTGluZSBpbnRlcmZhY2UgKENMSSkgdG8gbWFrZSBpdCBhdXRvbWF0aW9uIGZyaWVuZGx5Ci0gQWRkIGxvY2FsaXphdGlvbiBzdXBwb3J0Ci0gRm9sbG93IFdlYiBDb250ZW50IEFjY2Vzc2liaWxpdHkgR3VpZGVsaW5lcyAoV0NBRyAyKQotIEltcHJvdmUgSG9tZXBhZ2UsIERvY3VtZW50YXRpb24gYW5kIEV4YW1wbGVzCi0gQ3JlYXRlIGdyb3VuZHdvcmsgZm9yIGF1dG9tYXRlZCB0ZXN0aW5nCi0gQ3JlYXRlIGEgbGl2ZSBwbGF5Z3JvdW5kIChTb21ldGhpbmcgbGlrZSBzd2FnZ2VyIGVkaXRvcikKLSBDcmVhdGUgYSBzaG9ydCBhbmltYXRpb24vdmlkZW8gdG8gc2hvdyBob3cgUmFwaURvYy9SYXBpUERGIHdvcmtzCgo= readmeEtag: '"adae48ecaae89a839f0b2a2fe36d62ee9eb12e72"' readmeLastModified: Thu, 04 Jul 2024 15:51:19 GMT repositoryId: 165951750 description: RapiDoc -WebComponent for OpenAPI Spec created: '2019-01-16T01:29:58Z' updated: '2026-02-03T07:42:34Z' language: JavaScript archived: false stars: 1879 watchers: 16 forks: 316 owner: rapi-doc logo: https://avatars.githubusercontent.com/u/104180085?v=4 license: MIT repoEtag: '"cdcb2a896f066b96127f772c5129fd3f19f5de9d607a6530753537dd481c4120"' repoLastModified: Tue, 03 Feb 2026 07:42:34 GMT foundInMaster: true category: - Documentation - Server Implementations id: b903cad8b99b490dbecf6c6951d5b500 oldLocations: - https://github.com/mrin9/rapidoc - source: openapi3 tags repository: https://github.com/ogen-go/ogen v3: true id: 3d3e1f300ede27ed165969a8737ba867 repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CjxpbWcgd2lkdGg9IjI1NiIgaGVpZ2h0PSIyNTYiIHNyYz0iX2xvZ28vbG9nby5zdmciIGFsdD0ib2dlbiBzdmcgbG9nbyI+CjwvcD4KCiMgb2dlbiBbIVtHbyBSZWZlcmVuY2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZ28tcGtnLTAwQUREOCldKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL29nZW4tZ28vb2dlbiNzZWN0aW9uLWRvY3VtZW50YXRpb24pIFshW2NvZGVjb3ZdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY29kZWNvdi9jL2dpdGh1Yi9vZ2VuLWdvL29nZW4/bGFiZWw9Y292ZXIpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvb2dlbi1nby9vZ2VuKSBbIVtzdGFibGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvLXN0YWJsZS1icmlnaHRncmVlbildKGh0dHBzOi8vZ28tZmFzdGVyLm9yZy9kb2NzL3Byb2plY3RzL3N0YXR1cyNzdGFibGUpCgpPcGVuQVBJIHYzIENvZGUgR2VuZXJhdG9yIGZvciBHby4KCi0gW0dldHRpbmcgc3RhcnRlZF0oaHR0cHM6Ly9vZ2VuLmRldi9kb2NzL2ludHJvKQotIFtTYW1wbGUgcHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL29nZW4tZ28vZXhhbXBsZSkKLSBbU2VjdXJpdHkgcG9saWN5XShodHRwczovL2dpdGh1Yi5jb20vb2dlbi1nby9vZ2VuL2Jsb2IvLS9TRUNVUklUWS5tZCkKLSBbVGVsZWdyYW0gZ3JvdXAgYEBvZ2VuX2RldmBdKGh0dHBzOi8vdC5tZS9vZ2VuX2RldikKCiMgSW5zdGFsbAoKYGBgY29uc29sZQpnbyBpbnN0YWxsIC12IGdpdGh1Yi5jb20vb2dlbi1nby9vZ2VuL2NtZC9vZ2VuQGxhdGVzdApgYGAKCiMgVXNhZ2UKCmBgYGdvCi8vZ286Z2VuZXJhdGUgZ28gcnVuIGdpdGh1Yi5jb20vb2dlbi1nby9vZ2VuL2NtZC9vZ2VuIC0tdGFyZ2V0IHRhcmdldC9kaXIgLXBhY2thZ2UgYXBpIC0tY2xlYW4gc2NoZW1hLmpzb24KYGBgCgpvciB1c2luZyBjb250YWluZXI6CmBgYHNoZWxsCmRvY2tlciBydW4gLS1ybSBcCiAgLS12b2x1bWUgIi46L3dvcmtzcGFjZSIgXAogIGdoY3IuaW8vb2dlbi1nby9vZ2VuOmxhdGVzdCAtLXRhcmdldCB3b3Jrc3BhY2UvcGV0c3RvcmUgLS1jbGVhbiB3b3Jrc3BhY2UvcGV0c3RvcmUueW1sCmBgYAoKIyBGZWF0dXJlcwoKLSBObyByZWZsZWN0aW9uIG9yIGBpbnRlcmZhY2V7fWAKICAtIFRoZSBqc29uIGVuY29kaW5nIGlzIGNvZGUtZ2VuZXJhdGVkLCBvcHRpbWl6ZWQgYW5kIHVzZXMgW2dvLWZhc3Rlci9qeF0oaHR0cHM6Ly9naXRodWIuY29tL2dvLWZhc3Rlci9qeCkgZm9yIHNwZWVkIGFuZCBvdmVyY29taW5nIGBlbmNvZGluZy9qc29uYCBsaW1pdGF0aW9ucwogIC0gVmFsaWRhdGlvbiBpcyBjb2RlLWdlbmVyYXRlZCBhY2NvcmRpbmcgdG8gc3BlYwotIENvZGUtZ2VuZXJhdGVkIHN0YXRpYyByYWRpeCByb3V0ZXIKLSBObyBtb3JlIGJvaWxlcnBsYXRlCiAgLSBTdHJ1Y3R1cmVzIGFyZSBnZW5lcmF0ZWQgZnJvbSBPcGVuQVBJIHYzIHNwZWNpZmljYXRpb24KICAtIEFyZ3VtZW50cywgaGVhZGVycywgdXJsIHF1ZXJpZXMgYXJlIHBhcnNlZCBhY2NvcmRpbmcgdG8gc3BlY2lmaWNhdGlvbiBpbnRvIHN0cnVjdHVyZXMKICAtIFN0cmluZyBmb3JtYXRzIGxpa2UgYHV1aWRgLCBgZGF0ZWAsIGBkYXRlLXRpbWVgLCBgdXJpYCBhcmUgcmVwcmVzZW50ZWQgYnkgZ28gdHlwZXMgZGlyZWN0bHkKLSBTdGF0aWNhbGx5IHR5cGVkIGNsaWVudCBhbmQgc2VydmVyCi0gQ29udmVuaWVudCBzdXBwb3J0IGZvciBvcHRpb25hbCwgbnVsbGFibGUgYW5kIG9wdGlvbmFsIG51bGxhYmxlIGZpZWxkcwogIC0gTm8gbW9yZSBwb2ludGVycwogIC0gR2VuZXJhdGVkIE9wdGlvbmFsW1RdLCBOdWxsYWJsZVtUXSBvciBPcHRpb25hbE51bGxhYmxlW1RdIHdyYXBwZXJzIHdpdGggaGVscGVycwogIC0gU3BlY2lhbCBjYXNlIGZvciBhcnJheSBoYW5kbGluZyB3aXRoIGBuaWxgIHNlbWFudGljcyByZWxldmFudCB0byBzcGVjaWZpY2F0aW9uCiAgICAtIFdoZW4gYXJyYXkgaXMgb3B0aW9uYWwsIGBuaWxgIGRlbm90ZXMgYWJzZW5jZSBvZiB2YWx1ZQogICAgLSBXaGVuIG51bGxhYmxlLCBgbmlsYCBkZW5vdGVzIHRoYXQgdmFsdWUgaXMgYG5pbGAKICAgIC0gV2hlbiByZXF1aXJlZCwgYG5pbGAgY3VycmVudGx5IHRoZSBzYW1lIGFzIGBbXWAsIGJ1dCBpcyBhY3R1YWxseSBpbnZhbGlkCiAgICAtIElmIGJvdGggbnVsbGFibGUgYW5kIHJlcXVpcmVkLCB3cmFwcGVyIHdpbGwgYmUgZ2VuZXJhdGVkIChUT0RPKQotIFN1cHBvcnQgZm9yIHVudHlwZWQgcGFyYW1ldGVycyAoYW55KQogIC0gUGFyYW1ldGVycyB3aXRoIG5vIGB0eXBlYCBzcGVjaWZpZWQgaW4gc2NoZW1hIGFyZSByZXByZXNlbnRlZCBhcyBHbyBgYW55YAogIC0gRGVjb2RlZCBhcyBzdHJpbmdzIGZyb20gVVJJIChwYXRoLCBxdWVyeSwgaGVhZGVyLCBjb29raWUpCiAgLSBDbGllbnQgZW5jb2RpbmcgdXNlcyBgZm10LlNwcmludGAgZm9yIGZsZXhpYmxlIHZhbHVlIGNvbnZlcnNpb24KICAtIFVzZWZ1bCBmb3IgbGVnYWN5IEFQSXMgb3IgZHluYW1pYyBwYXJhbWV0ZXIgdHlwZXMKLSBHZW5lcmF0ZWQgc3VtIHR5cGVzIGZvciBvbmVPZgogIC0gUHJpbWl0aXZlIHR5cGVzIChgc3RyaW5nYCwgYG51bWJlcmApIGFyZSBkZXRlY3RlZCBieSB0eXBlCiAgLSBEaXNjcmltaW5hdG9yIGZpZWxkIGlzIHVzZWQgaWYgZGVmaW5lZCBpbiBzY2hlbWEKICAtIFR5cGUgaXMgaW5mZXJyZWQgYnkgdW5pcXVlIGZpZWxkcyBpZiBwb3NzaWJsZQogICAgLSBGaWVsZCBuYW1lIGRpc2NyaW1pbmF0aW9uOiB2YXJpYW50cyB3aXRoIGRpZmZlcmVudCBmaWVsZCBuYW1lcwogICAgLSBGaWVsZCB0eXBlIGRpc2NyaW1pbmF0aW9uOiB2YXJpYW50cyB3aXRoIHNhbWUgZmllbGQgbmFtZXMgYnV0IGRpZmZlcmVudCB0eXBlcyAoZS5nLiwgYHtpZDogc3RyaW5nfWAgdnMgYHtpZDogaW50ZWdlcn1gKQogICAgLSBGaWVsZCB2YWx1ZSBkaXNjcmltaW5hdGlvbjogdmFyaWFudHMgd2l0aCBzYW1lIGZpZWxkIG5hbWVzIGFuZCB0eXBlcyBidXQgZGlmZmVyZW50IGVudW0gdmFsdWVzCi0gRXh0cmEgR28gc3RydWN0IGZpZWxkIHRhZ3MgaW4gdGhlIGdlbmVyYXRlZCB0eXBlcwotIE9wZW5UZWxlbWV0cnkgdHJhY2luZyBhbmQgbWV0cmljcwoKRXhhbXBsZSBnZW5lcmF0ZWQgc3RydWN0dXJlIGZyb20gc2NoZW1hOgoKYGBgZ28KLy8gUGV0IGRlc2NyaWJlcyAjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXQuCnR5cGUgUGV0IHN0cnVjdCB7CglCaXJ0aGRheSAgICAgdGltZS5UaW1lICAgICBganNvbjoiYmlydGhkYXkiYAoJRnJpZW5kcyAgICAgIFtdUGV0ICAgICAgICAgYGpzb246ImZyaWVuZHMiYAoJSUQgICAgICAgICAgIGludDY0ICAgICAgICAgYGpzb246ImlkImAKCUlQICAgICAgICAgICBuZXQuSVAgICAgICAgIGBqc29uOiJpcCJgCglJUFY0ICAgICAgICAgbmV0LklQICAgICAgICBganNvbjoiaXBfdjQiYAoJSVBWNiAgICAgICAgIG5ldC5JUCAgICAgICAgYGpzb246ImlwX3Y2ImAKCUtpbmQgICAgICAgICBQZXRLaW5kICAgICAgIGBqc29uOiJraW5kImAKCU5hbWUgICAgICAgICBzdHJpbmcgICAgICAgIGBqc29uOiJuYW1lImAKCU5leHQgICAgICAgICBPcHREYXRhICAgICAgIGBqc29uOiJuZXh0ImAKCU5pY2tuYW1lICAgICBOaWxTdHJpbmcgICAgIGBqc29uOiJuaWNrbmFtZSJgCglOdWxsU3RyICAgICAgT3B0TmlsU3RyaW5nICBganNvbjoibnVsbFN0ciJgCglSYXRlICAgICAgICAgdGltZS5EdXJhdGlvbiBganNvbjoicmF0ZSJgCglUYWcgICAgICAgICAgT3B0VVVJRCAgICAgICBganNvbjoidGFnImAKCVRlc3RBcnJheTEgICBbXVtdc3RyaW5nICAgIGBqc29uOiJ0ZXN0QXJyYXkxImAKCVRlc3REYXRlICAgICBPcHRUaW1lICAgICAgIGBqc29uOiJ0ZXN0RGF0ZSJgCglUZXN0RGF0ZVRpbWUgT3B0VGltZSAgICAgICBganNvbjoidGVzdERhdGVUaW1lImAKCVRlc3REdXJhdGlvbiBPcHREdXJhdGlvbiAgIGBqc29uOiJ0ZXN0RHVyYXRpb24iYAoJVGVzdEZsb2F0MSAgIE9wdEZsb2F0NjQgICAgYGpzb246InRlc3RGbG9hdDEiYAoJVGVzdEludGVnZXIxIE9wdEludCAgICAgICAgYGpzb246InRlc3RJbnRlZ2VyMSJgCglUZXN0VGltZSAgICAgT3B0VGltZSAgICAgICBganNvbjoidGVzdFRpbWUiYAoJVHlwZSAgICAgICAgIE9wdFBldFR5cGUgICAgYGpzb246InR5cGUiYAoJVVJJICAgICAgICAgIHVybC5VUkwgICAgICAgYGpzb246InVyaSJgCglVbmlxdWVJRCAgICAgdXVpZC5VVUlEICAgICBganNvbjoidW5pcXVlX2lkImAKfQpgYGAKCkV4YW1wbGUgZ2VuZXJhdGVkIHNlcnZlciBpbnRlcmZhY2U6CgpgYGBnbwovLyBTZXJ2ZXIgaGFuZGxlcyBvcGVyYXRpb25zIGRlc2NyaWJlZCBieSBPcGVuQVBJIHYzIHNwZWNpZmljYXRpb24uCnR5cGUgU2VydmVyIGludGVyZmFjZSB7CglQZXRHZXRCeU5hbWUoY3R4IGNvbnRleHQuQ29udGV4dCwgcGFyYW1zIFBldEdldEJ5TmFtZVBhcmFtcykgKFBldCwgZXJyb3IpCgkvLyAuLi4KfQpgYGAKCkV4YW1wbGUgZ2VuZXJhdGVkIGNsaWVudCBtZXRob2Qgc2lnbmF0dXJlOgoKYGBgZ28KdHlwZSBQZXRHZXRCeU5hbWVQYXJhbXMgc3RydWN0IHsKICAgIE5hbWUgc3RyaW5nCn0KCi8vIEdFVCAvcGV0L3tuYW1lfQpmdW5jIChjICpDbGllbnQpIFBldEdldEJ5TmFtZShjdHggY29udGV4dC5Db250ZXh0LCBwYXJhbXMgUGV0R2V0QnlOYW1lUGFyYW1zKSAocmVzIFBldCwgZXJyIGVycm9yKQpgYGAKCiMjIEdlbmVyaWNzCgpJbnN0ZWFkIG9mIHVzaW5nIHBvaW50ZXJzLCBgb2dlbmAgZ2VuZXJhdGVzIGdlbmVyaWMgd3JhcHBlcnMuCgpGb3IgZXhhbXBsZSwgYE9wdE5pbFN0cmluZ2AgaXMgYHN0cmluZ2AgdGhhdCBpcyBvcHRpb25hbCAobm8gdmFsdWUpIGFuZCBjYW4gYmUgYG51bGxgLgoKYGBgZ28KLy8gT3B0TmlsU3RyaW5nIGlzIG9wdGlvbmFsIG51bGxhYmxlIHN0cmluZy4KdHlwZSBPcHROaWxTdHJpbmcgc3RydWN0IHsKCVZhbHVlIHN0cmluZwoJU2V0ICAgYm9vbAoJTnVsbCAgYm9vbAp9CmBgYAoKTXVsdGlwbGUgY29udmVuaWVuY2UgaGVscGVyIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBhcmUgZ2VuZXJhdGVkLCBzb21lIG9mIHRoZW06CgpgYGBnbwpmdW5jIChPcHROaWxTdHJpbmcpIEdldCgpICh2IHN0cmluZywgb2sgYm9vbCkKZnVuYyAoT3B0TmlsU3RyaW5nKSBJc051bGwoKSBib29sCmZ1bmMgKE9wdE5pbFN0cmluZykgSXNTZXQoKSBib29sCgpmdW5jIE5ld09wdE5pbFN0cmluZyh2IHN0cmluZykgT3B0TmlsU3RyaW5nCmBgYAoKIyMgUmVjdXJzaXZlIHR5cGVzCgpJZiBgb2dlbmAgZW5jb3VudGVycyByZWN1cnNpdmUgdHlwZXMgdGhhdCBjYW4ndCBiZSBleHByZXNzZWQgaW4gZ28sIHBvaW50ZXJzIGFyZSB1c2VkIGFzIGZhbGxiYWNrLgoKIyMgU3VtIHR5cGVzCgpGb3IgYG9uZU9mYCBzdW0tdHlwZXMgYXJlIGdlbmVyYXRlZC4gYElEYCB0aGF0IGlzIG9uZSBvZiBgW3N0cmluZywgaW50ZWdlcl1gIHdpbGwgYmUgcmVwcmVzZW50ZWQgbGlrZSB0aGF0OgoKYGBgZ28KdHlwZSBJRCBzdHJ1Y3QgewoJVHlwZSAgIElEVHlwZQoJU3RyaW5nIHN0cmluZwoJSW50ICAgIGludAp9CgovLyBBbHNvLCBzb21lIGhlbHBlcnM6CmZ1bmMgTmV3U3RyaW5nSUQodiBzdHJpbmcpIElECmZ1bmMgTmV3SW50SUQodiBpbnQpIElECmBgYAoKIyMjIERpc2NyaW1pbmF0b3IgSW5mZXJlbmNlCgpvZ2VuIGF1dG9tYXRpY2FsbHkgaW5mZXJzIGhvdyB0byBkaXNjcmltaW5hdGUgYmV0d2VlbiBvbmVPZiB2YXJpYW50cyB1c2luZyBzZXZlcmFsIHN0cmF0ZWdpZXM6CgoqKjEuIFR5cGUtYmFzZWQgZGlzY3JpbWluYXRpb24qKiAoZm9yIHByaW1pdGl2ZSB0eXBlcykKClZhcmlhbnRzIHdpdGggZGlmZmVyZW50IEpTT04gdHlwZXMgYXJlIGRpc2NyaW1pbmF0ZWQgYnkgY2hlY2tpbmcgdGhlIEpTT04gdHlwZSBhdCBydW50aW1lOgoKYGBganNvbgp7CiAgIm9uZU9mIjogWwogICAgeyJ0eXBlIjogInN0cmluZyJ9LAogICAgeyJ0eXBlIjogImludGVnZXIifQogIF0KfQpgYGAKCioqMi4gRXhwbGljaXQgZGlzY3JpbWluYXRvcioqICh3aGVuIGRpc2NyaW1pbmF0b3IgZmllbGQgaXMgc3BlY2lmaWVkKQoKV2hlbiBhIGRpc2NyaW1pbmF0b3IgZmllbGQgaXMgZGVmaW5lZCBpbiB0aGUgc2NoZW1hLCBvZ2VuIHVzZXMgaXQgZGlyZWN0bHk6CgpgYGBqc29uCnsKICAib25lT2YiOiBbLi4uXSwKICAiZGlzY3JpbWluYXRvciI6IHsKICAgICJwcm9wZXJ0eU5hbWUiOiAidHlwZSIsCiAgICAibWFwcGluZyI6IHsidXNlciI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9Vc2VyIiwgLi4ufQogIH0KfQpgYGAKCioqMy4gRmllbGQtYmFzZWQgZGlzY3JpbWluYXRpb24qKiAoYXV0b21hdGljIGluZmVyZW5jZSBmcm9tIHVuaXF1ZSBmaWVsZHMpCgpvZ2VuIGFuYWx5emVzIHRoZSBmaWVsZHMgaW4gZWFjaCB2YXJpYW50IHRvIGZpbmQgZGlzY3JpbWluYXRpbmcgY2hhcmFjdGVyaXN0aWNzOgoKLSAqKkZpZWxkIG5hbWUgZGlzY3JpbWluYXRpb24qKjogVmFyaWFudHMgaGF2ZSBkaWZmZXJlbnQgZmllbGQgbmFtZXMKCmBgYGpzb24KewogICJvbmVPZiI6IFsKICAgIHsidHlwZSI6ICJvYmplY3QiLCAicmVxdWlyZWQiOiBbInVzZXJJZCJdLCAicHJvcGVydGllcyI6IHsidXNlcklkIjogeyJ0eXBlIjogInN0cmluZyJ9fX0sCiAgICB7InR5cGUiOiAib2JqZWN0IiwgInJlcXVpcmVkIjogWyJvcmRlcklkIl0sICJwcm9wZXJ0aWVzIjogeyJvcmRlcklkIjogeyJ0eXBlIjogInN0cmluZyJ9fX0KICBdCn0KYGBgCgotICoqRmllbGQgdHlwZSBkaXNjcmltaW5hdGlvbioqOiBWYXJpYW50cyBoYXZlIGZpZWxkcyB3aXRoIHRoZSBzYW1lIG5hbWUgYnV0IGRpZmZlcmVudCB0eXBlcwoKYGBganNvbgp7CiAgIm9uZU9mIjogWwogICAgewogICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAicmVxdWlyZWQiOiBbImlkIiwgInZhbHVlIl0sCiAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICJpZCI6IHsidHlwZSI6ICJzdHJpbmcifSwKICAgICAgICAidmFsdWUiOiB7InR5cGUiOiAic3RyaW5nIn0KICAgICAgfQogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgInJlcXVpcmVkIjogWyJpZCIsICJ2YWx1ZSJdLAogICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAiaWQiOiB7InR5cGUiOiAiaW50ZWdlciJ9LAogICAgICAgICJ2YWx1ZSI6IHsidHlwZSI6ICJudW1iZXIifQogICAgICB9CiAgICB9CiAgXQp9CmBgYAoKSW4gdGhpcyBjYXNlLCBvZ2VuIGNoZWNrcyB0aGUgSlNPTiB0eXBlIG9mIHRoZSBgaWRgIGZpZWxkIGF0IHJ1bnRpbWUgdG8gZGV0ZXJtaW5lIHdoaWNoIHZhcmlhbnQgdG8gZGVjb2RlLgoKLSAqKkZpZWxkIHZhbHVlIGRpc2NyaW1pbmF0aW9uKio6IFZhcmlhbnRzIGhhdmUgZmllbGRzIHdpdGggdGhlIHNhbWUgbmFtZSBhbmQgdHlwZSBidXQgZGlmZmVyZW50IGVudW0gdmFsdWVzCgpgYGBqc29uCnsKICAib25lT2YiOiBbCiAgICB7CiAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICJyZXF1aXJlZCI6IFsic3RhdHVzIl0sCiAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICJzdGF0dXMiOiB7InR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbImFjdGl2ZSIsICJwZW5kaW5nIl19CiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICJyZXF1aXJlZCI6IFsic3RhdHVzIl0sCiAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICJzdGF0dXMiOiB7InR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbImluYWN0aXZlIiwgImRlbGV0ZWQiXX0KICAgICAgfQogICAgfQogIF0KfQpgYGAKCkluIHRoaXMgY2FzZSwgb2dlbiBjaGVja3MgdGhlIGFjdHVhbCBzdHJpbmcgdmFsdWUgb2YgdGhlIGBzdGF0dXNgIGZpZWxkIGF0IHJ1bnRpbWUgYW5kIG1hdGNoZXMgaXQgYWdhaW5zdCBlYWNoIHZhcmlhbnQncyBlbnVtIHZhbHVlcy4gVGhlIGVudW0gdmFsdWVzIG11c3QgYmUgZGlzam9pbnQgKG5vbi1vdmVybGFwcGluZykgZm9yIHRoaXMgdG8gd29yay4gSWYgZW51bSB2YWx1ZXMgb3ZlcmxhcCwgb2dlbiB3aWxsIHJlcG9ydCBhbiBlcnJvciBhbmQgc3VnZ2VzdCB1c2luZyBhbiBleHBsaWNpdCBkaXNjcmltaW5hdG9yLgoKIyMgQ29uc3QgdmFsdWVzCgpvZ2VuIHN1cHBvcnRzIHRoZSBKU09OIFNjaGVtYSBbYGNvbnN0YF0oaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvdW5kZXJzdGFuZGluZy1qc29uLXNjaGVtYS9yZWZlcmVuY2UvZ2VuZXJpYyNjb25zdGFudC12YWx1ZXMpIGtleXdvcmQsIHdoaWNoIHNwZWNpZmllcyB0aGF0IGEgZmllbGQgbXVzdCBoYXZlIGEgZml4ZWQgdmFsdWUgKGludHJvZHVjZWQgaW4gW0pTT04gU2NoZW1hIGRyYWZ0IDZdKGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA2L2pzb24tc2NoZW1hLXJlbGVhc2Utbm90ZXMuaHRtbCkgYW5kIHN1cHBvcnRlZCBpbiBPcGVuQVBJIDMuMCspLiBXaGVuIGEgZmllbGQgaGFzIGEgYGNvbnN0YCB2YWx1ZSwgaXQgaXMgZW5jb2RlZCBkaXJlY3RseSBpbiB0aGUgZ2VuZXJhdGVkIEpTT04gZW5jb2RlciB3aXRob3V0IHJlcXVpcmluZyB0aGUgc3RydWN0IGZpZWxkIHRvIGJlIHNldC4KCiMjIyBFeGFtcGxlIHNjaGVtYSB3aXRoIGNvbnN0IHZhbHVlcwoKYGBgeWFtbApjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBFcnJvclJlc3BvbnNlOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcHJvcGVydGllczoKICAgICAgICBjb2RlOgogICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgY29uc3Q6IDQwMAogICAgICAgIHN0YXR1czoKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgY29uc3Q6ICJlcnJvciIKICAgICAgICBtZXNzYWdlOgogICAgICAgICAgdHlwZTogc3RyaW5nCmBgYAoKIyMjIEdlbmVyYXRlZCBjb2RlCgpUaGUgZ2VuZXJhdGVkIHN0cnVjdCBpbmNsdWRlcyB0aGUgZmllbGQsIGJ1dCB0aGUgZW5jb2RlciBoYXJkY29kZXMgdGhlIGNvbnN0IHZhbHVlOgoKYGBgZ28KdHlwZSBFcnJvclJlc3BvbnNlIHN0cnVjdCB7CiAgICBDb2RlICAgIGludDY0ICBganNvbjoiY29kZSJgICAgIC8vIGNvbnN0OiA0MDAKICAgIFN0YXR1cyAgc3RyaW5nIGBqc29uOiJzdGF0dXMiYCAgLy8gY29uc3Q6ICJlcnJvciIKICAgIE1lc3NhZ2Ugc3RyaW5nIGBqc29uOiJtZXNzYWdlImAKfQoKZnVuYyAocyAqRXJyb3JSZXNwb25zZSkgZW5jb2RlRmllbGRzKGUgKmp4LkVuY29kZXIpIHsKICAgIHsKICAgICAgICBlLkZpZWxkU3RhcnQoImNvZGUiKQogICAgICAgIGUuSW50NjQoNDAwKSAgLy8gQ29uc3QgdmFsdWUgZW5jb2RlZCBkaXJlY3RseQogICAgfQogICAgewogICAgICAgIGUuRmllbGRTdGFydCgic3RhdHVzIikKICAgICAgICBlLlN0cigiZXJyb3IiKSAgLy8gQ29uc3QgdmFsdWUgZW5jb2RlZCBkaXJlY3RseQogICAgfQogICAgewogICAgICAgIGUuRmllbGRTdGFydCgibWVzc2FnZSIpCiAgICAgICAgZS5TdHIocy5NZXNzYWdlKSAgLy8gUmVndWxhciBmaWVsZAogICAgfQp9CmBgYAoKIyMjIEJlbmVmaXRzCgotICoqU2ltcGxpZmllZCBpbml0aWFsaXphdGlvbioqOiBZb3UgZG9uJ3QgbmVlZCB0byBzZXQgY29uc3QgZmllbGRzIHdoZW4gY3JlYXRpbmcgc3RydWN0IGluc3RhbmNlcwotICoqVHlwZSBzYWZldHkqKjogQ29uc3QgdmFsdWVzIGFyZSB2YWxpZGF0ZWQgYXQgY29kZSBnZW5lcmF0aW9uIHRpbWUKLSAqKlBlcmZvcm1hbmNlKio6IENvbnN0IHZhbHVlcyBhcmUgZW5jb2RlZCBkaXJlY3RseSB3aXRob3V0IHJ1bnRpbWUgbG9va3VwcwotICoqV29ya3Mgd2l0aCBhbGxPZioqOiBDb25zdCB2YWx1ZXMgYXJlIHByZXNlcnZlZCB3aGVuIG1lcmdpbmcgc2NoZW1hcyB3aXRoIGBhbGxPZmAKCiMjIyBTdXBwb3J0ZWQgY29uc3QgdmFsdWUgdHlwZXMKCi0gUHJpbWl0aXZlczogYGludGVnZXJgLCBgbnVtYmVyYCwgYHN0cmluZ2AsIGBib29sZWFuYAotIFNwZWNpYWwgdmFsdWVzOiBgbnVsbGAsIGVtcHR5IHN0cmluZ3MgKGAiImApLCB6ZXJvIHZhbHVlcyAoYDBgLCBgZmFsc2VgKQotIENvbXBsZXggdHlwZXM6IGBvYmplY3RgLCBgYXJyYXlgICh3aGVuIHNwZWNpZmllZCBpbiBzY2hlbWEpCgojIyBFeHRlbnNpb24gcHJvcGVydGllcwoKT3BlbkFQSSBlbmFibGVzIFtTcGVjaWZpY2F0aW9uIEV4dGVuc2lvbnNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNzcGVjaWZpY2F0aW9uLWV4dGVuc2lvbnMpLAp3aGljaCBhcmUgaW1wbGVtZW50ZWQgYXMgcGF0dGVybmVkIGZpZWxkcyB0aGF0IGFyZSBhbHdheXMgcHJlZml4ZWQgYnkgYHgtYC4KCiMjIyBTZXJ2ZXIgbmFtZQoKT3B0aW9uYWxseSwgc2VydmVyIG5hbWUgY2FuIGJlIHNwZWNpZmllZCBieSBgeC1vZ2VuLXNlcnZlci1uYW1lYCwgZm9yIGV4YW1wbGU6CgpgYGBqc29uCnsKICAib3BlbmFwaSI6ICIzLjAuMyIsCiAgInNlcnZlcnMiOiBbCiAgICB7CiAgICAgICJ4LW9nZW4tc2VydmVyLW5hbWUiOiAicHJvZHVjdGlvbiIsCiAgICAgICJ1cmwiOiAiaHR0cHM6Ly97cmVnaW9ufS5leGFtcGxlLmNvbS97dmFsfS92MSIsCiAgICB9LAogICAgewogICAgICAieC1vZ2VuLXNlcnZlci1uYW1lIjogInByZWZpeCIsCiAgICAgICJ1cmwiOiAiL3t2YWx9L3YxIiwKICAgIH0sCiAgICB7CiAgICAgICJ4LW9nZW4tc2VydmVyLW5hbWUiOiAiY29uc3QiLAogICAgICAidXJsIjogImh0dHBzOi8vY2RuLmV4YW1wbGUuY29tL3YxIgogICAgfQogIF0sCiguLi4pCmBgYAoKIyMjIEN1c3RvbSB0eXBlIG5hbWUKCk9wdGlvbmFsbHksIHR5cGUgbmFtZSBjYW4gYmUgc3BlY2lmaWVkIGJ5IGB4LW9nZW4tbmFtZWAsIGZvciBleGFtcGxlOgoKYGBganNvbgp7CiAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIiwKICAidHlwZSI6ICJvYmplY3QiLAogICJ4LW9nZW4tbmFtZSI6ICJOYW1lIiwKICAicHJvcGVydGllcyI6IHsKICAgICJmb29iYXIiOiB7CiAgICAgICIkcmVmIjogIiMvJGRlZnMvRm9vQmFyIgogICAgfQogIH0sCiAgIiRkZWZzIjogewogICAgIkZvb0JhciI6IHsKICAgICAgIngtb2dlbi1uYW1lIjogIkZvb0JhciIsCiAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICJmb28iOiB7CiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9CmBgYAoKIyMjIEN1c3RvbSBmaWVsZCBuYW1lCgpPcHRpb25hbGx5LCB0eXBlIG5hbWUgY2FuIGJlIHNwZWNpZmllZCBieSBgeC1vZ2VuLXByb3BlcnRpZXNgLCBmb3IgZXhhbXBsZToKCmBgYHlhbWwKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgTm9kZToKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgcGFyZW50OgogICAgICAgICAgJHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzL05vZGUiCiAgICAgICAgY2hpbGQ6CiAgICAgICAgICAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvTm9kZSIKICAgICAgeC1vZ2VuLXByb3BlcnRpZXM6CiAgICAgICAgcGFyZW50OgogICAgICAgICAgbmFtZTogIlByZXYiCiAgICAgICAgY2hpbGQ6CiAgICAgICAgICBuYW1lOiAiTmV4dCIKYGBgCgpUaGUgZ2VuZXJhdGVkIHNvdXJjZSBjb2RlIGxvb2tzIGxpa2U6CgpgYGBnbwovLyBSZWY6ICMvY29tcG9uZW50cy9zY2hlbWFzL05vZGUKdHlwZSBOb2RlIHN0cnVjdCB7CiAgICBQcmV2ICpOb2RlIGBqc29uOiJwYXJlbnQiYAogICAgTmV4dCAqTm9kZSBganNvbjoiY2hpbGQiYAp9CmBgYAoKIyMjIEV4dHJhIHN0cnVjdCBmaWVsZCB0YWdzCgpPcHRpb25hbGx5LCBhZGRpdGlvbmFsIEdvIHN0cnVjdCBmaWVsZCB0YWdzIGNhbiBiZSBzcGVjaWZpZWQgYnkgYHgtb2FwaS1jb2RlZ2VuLWV4dHJhLXRhZ3NgLCBmb3IgZXhhbXBsZToKCmBgYHlhbWwKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgUGV0OgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBpZAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGlkOgogICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgZm9ybWF0OiBpbnQ2NAogICAgICAgICAgeC1vYXBpLWNvZGVnZW4tZXh0cmEtdGFnczoKICAgICAgICAgICAgZ29ybTogcHJpbWFyeUtleQogICAgICAgICAgICB2YWxpZDogY3VzdG9tSWRWYWxpZGF0b3IKYGBgCgpUaGUgZ2VuZXJhdGVkIHNvdXJjZSBjb2RlIGxvb2tzIGxpa2U6CgpgYGBnbwovLyBSZWY6ICMvY29tcG9uZW50cy9zY2hlbWFzL1BldAp0eXBlIFBldCBzdHJ1Y3QgewogICAgSUQgICBpbnQ2NCAgICAgYGdvcm06InByaW1hcnlLZXkiIHZhbGlkOiJjdXN0b21OYW1lVmFsaWRhdG9yIiBqc29uOiJpZCJgCn0KYGBgCgojIyMgU3RyZWFtaW5nIEpTT04gZW5jb2RpbmcKCkJ5IGRlZmF1bHQsIG9nZW4gbG9hZHMgdGhlIGVudGlyZSBKU09OIGJvZHkgaW50byBtZW1vcnkgYmVmb3JlIGRlY29kaW5nIGl0LgpPcHRpb25hbGx5LCBzdHJlYW1pbmcgSlNPTiBlbmNvZGluZyBjYW4gYmUgZW5hYmxlZCBieSBgeC1vZ2VuLWpzb24tc3RyZWFtaW5nYCwgZm9yIGV4YW1wbGU6CgpgYGB5YW1sCnJlcXVlc3RCb2R5OgogIHJlcXVpcmVkOiB0cnVlCiAgY29udGVudDoKICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgIHgtb2dlbi1qc29uLXN0cmVhbWluZzogdHJ1ZQogICAgICBzY2hlbWE6CiAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICBpdGVtczoKICAgICAgICAgIHR5cGU6IG51bWJlcgpgYGAKCiMjIyBDdXN0b20gdmFsaWRhdGlvbgoKT3B0aW9uYWxseSwgY3VzdG9tIHZhbGlkYXRpb24gY2FuIGJlIHNwZWNpZmllZCBieSBgeC1vZ2VuLXZhbGlkYXRlYCwgZm9yIGV4YW1wbGU6CgpgYGB5YW1sCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIFByb2R1Y3Q6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIG5hbWU6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIHgtb2dlbi12YWxpZGF0ZToKICAgICAgICAgICAgbWluV29yZHM6IDIKICAgICAgICB0YWdzOgogICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIHgtb2dlbi12YWxpZGF0ZToKICAgICAgICAgICAgdW5pcXVlSXRlbXM6IHRydWUKICAgICAgICBtZXRhZGF0YToKICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHRydWUKICAgICAgICAgIHgtb2dlbi12YWxpZGF0ZToKICAgICAgICAgICAgZmllbGRDb3VudDoKICAgICAgICAgICAgICBtaW46IDEKICAgICAgICAgICAgICBtYXg6IDEwCmBgYAoKQ3VzdG9tIHZhbGlkYXRvcnMgbXVzdCBiZSByZWdpc3RlcmVkIGJlZm9yZSB2YWxpZGF0aW9uIGlzIHBlcmZvcm1lZDoKCmBgYGdvCmltcG9ydCAiZ2l0aHViLmNvbS9vZ2VuLWdvL29nZW4vdmFsaWRhdGUiCgovLyBSZWdpc3RlciB2YWxpZGF0b3JzCnZhbGlkYXRlLlJlZ2lzdGVyVmFsaWRhdG9yKCJtaW5Xb3JkcyIsIGZ1bmModmFsdWUgYW55LCBwYXJhbXMgYW55KSBlcnJvciB7CiAgICAvLyAuLi4gdmFsaWRhdGUgbWluaW11bSB3b3JkIGNvdW50Cn0pCgp2YWxpZGF0ZS5SZWdpc3RlclZhbGlkYXRvcigidW5pcXVlSXRlbXMiLCBmdW5jKHZhbHVlIGFueSwgcGFyYW1zIGFueSkgZXJyb3IgewogICAgLy8gLi4uIHZhbGlkYXRlIGFycmF5IGhhcyBubyBkdXBsaWNhdGUgaXRlbXMKfSkKCnZhbGlkYXRlLlJlZ2lzdGVyVmFsaWRhdG9yKCJmaWVsZENvdW50IiwgZnVuYyh2YWx1ZSBhbnksIHBhcmFtcyBhbnkpIGVycm9yIHsKICAgIC8vIC4uLiB2YWxpZGF0ZSBvYmplY3QgZmllbGQgY291bnQgd2l0aGluIG1pbi9tYXggcmFuZ2UKfSkKYGBgCgojIyMgT3BlcmF0aW9uIGdyb3VwcwoKT3B0aW9uYWxseSwgb3BlcmF0aW9ucyBjYW4gYmUgZ3JvdXBlZCBzbyBhIGhhbmRsZXIgaW50ZXJmYWNlIHdpbGwgYmUgZ2VuZXJhdGVkIGZvciBlYWNoIGdyb3VwIG9mIG9wZXJhdGlvbnMuClRoaXMgaXMgdXNlZnVsIGZvciBvcmdhbml6aW5nIG9wZXJhdGlvbnMgZm9yIGxhcmdlIEFQSXMuCgpUaGUgZ3JvdXAgZm9yIG9wZXJhdGlvbnMgb24gYSBwYXRoIG9yIGluZGl2aWR1YWwgb3BlcmF0aW9ucyBjYW4gYmUgc3BlY2lmaWVkIGJ5IGB4LW9nZW4tb3BlcmF0aW9uLWdyb3VwYCwgZm9yIGV4YW1wbGU6CgpgYGB5YW1sCnBhdGhzOgogIC9pbWFnZXM6CiAgICB4LW9nZW4tb3BlcmF0aW9uLWdyb3VwOiBJbWFnZXMKICAgIGdldDoKICAgICAgb3BlcmF0aW9uSWQ6IGxpc3RJbWFnZXMKICAgICAgLi4uCiAgL2ltYWdlcy97aW1hZ2VJRH06CiAgICB4LW9nZW4tb3BlcmF0aW9uLWdyb3VwOiBJbWFnZXMKICAgIGdldDoKICAgICAgb3BlcmF0aW9uSWQ6IGdldEltYWdlQnlJRAogICAgICAuLi4KICAvdXNlcnM6CiAgICB4LW9nZW4tb3BlcmF0aW9uLWdyb3VwOiBVc2VycwogICAgZ2V0OgogICAgICBvcGVyYXRpb25JZDogbGlzdFVzZXJzCiAgICAgIC4uLgpgYGAKClRoZSBnZW5lcmF0ZWQgaGFuZGxlciBpbnRlcmZhY2VzIGxvb2sgbGlrZSB0aGlzOgoKYGBgZ28KLy8geC1vZ2VuLW9wZXJhdGlvbi1ncm91cDogSW1hZ2VzCnR5cGUgSW1hZ2VzSGFuZGxlciBpbnRlcmZhY2UgewogICAgTGlzdEltYWdlcyhjdHggY29udGV4dC5Db250ZXh0LCByZXEgKkxpc3RJbWFnZXNSZXF1ZXN0KSAoKkxpc3RJbWFnZXNSZXNwb25zZSwgZXJyb3IpCiAgICBHZXRJbWFnZUJ5SUQoY3R4IGNvbnRleHQuQ29udGV4dCwgcmVxICpHZXRJbWFnZXNCeUlEUmVxdWVzdCkgKCpHZXRJbWFnZXNCeUlEUmVzcG9uc2UsIGVycm9yKQp9CgovLyB4LW9nZW4tb3BlcmF0aW9uLWdyb3VwOiBVc2Vycwp0eXBlIFVzZXJzSGFuZGxlciBpbnRlcmZhY2UgewogICAgTGlzdFVzZXJzKGN0eCBjb250ZXh0LkNvbnRleHQsIHJlcSAqTGlzdFVzZXJzUmVxdWVzdCkgKCpMaXN0VXNlcnNSZXNwb25zZSwgZXJyb3IpCn0KCnR5cGUgSGFuZGxlciBpbnRlcmZhY2UgewogICAgSW1hZ2VzSGFuZGxlcgogICAgVXNlcnNIYW5kbGVyCiAgICAvLyBBbGwgdW4tZ3JvdXBlZCBvcGVyYXRpb25zIHdpbGwgYmUgb24gdGhpcyBpbnRlcmZhY2UKfQpgYGAKCiMjIEpTT04KCkNvZGUgZ2VuZXJhdGlvbiBwcm92aWRlcyB2ZXJ5IGVmZmljaWVudCBhbmQgZmxleGlibGUgZW5jb2RpbmcgYW5kIGRlY29kaW5nIG9mIGpzb246CgpgYGBnbwovLyBEZWNvZGUgZGVjb2RlcyBFcnJvciBmcm9tIGpzb24uCmZ1bmMgKHMgKkVycm9yKSBEZWNvZGUoZCAqanguRGVjb2RlcikgZXJyb3IgewoJaWYgcyA9PSBuaWwgewoJCXJldHVybiBlcnJvcnMuTmV3KCJpbnZhbGlkOiB1bmFibGUgdG8gZGVjb2RlIEVycm9yIHRvIG5pbCIpCgl9CglyZXR1cm4gZC5PYmpCeXRlcyhmdW5jKGQgKmp4LkRlY29kZXIsIGsgW11ieXRlKSBlcnJvciB7CgkJc3dpdGNoIHN0cmluZyhrKSB7CgkJY2FzZSAiY29kZSI6CgkJCWlmIGVyciA6PSBmdW5jKCkgZXJyb3IgewoJCQkJdiwgZXJyIDo9IGQuSW50NjQoKQoJCQkJcy5Db2RlID0gaW50NjQodikKCQkJCWlmIGVyciAhPSBuaWwgewoJCQkJCXJldHVybiBlcnIKCQkJCX0KCQkJCXJldHVybiBuaWwKCQkJfSgpOyBlcnIgIT0gbmlsIHsKCQkJCXJldHVybiBlcnJvcnMuV3JhcChlcnIsICJkZWNvZGUgZmllbGQgXCJjb2RlXCIiKQoJCQl9CgkJY2FzZSAibWVzc2FnZSI6CgkJCWlmIGVyciA6PSBmdW5jKCkgZXJyb3IgewoJCQkJdiwgZXJyIDo9IGQuU3RyKCkKCQkJCXMuTWVzc2FnZSA9IHN0cmluZyh2KQoJCQkJaWYgZXJyICE9IG5pbCB7CgkJCQkJcmV0dXJuIGVycgoJCQkJfQoJCQkJcmV0dXJuIG5pbAoJCQl9KCk7IGVyciAhPSBuaWwgewoJCQkJcmV0dXJuIGVycm9ycy5XcmFwKGVyciwgImRlY29kZSBmaWVsZCBcIm1lc3NhZ2VcIiIpCgkJCX0KCQlkZWZhdWx0OgoJCQlyZXR1cm4gZC5Ta2lwKCkKCQl9CgkJcmV0dXJuIG5pbAoJfSkKfQpgYGAKCiMgTGlua3MKCi0gW0dldHRpbmcgc3RhcnRlZF0oaHR0cHM6Ly9vZ2VuLmRldi9kb2NzL2ludHJvKQotIFtTYW1wbGUgcHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL29nZW4tZ28vZXhhbXBsZSkKLSBbU2VjdXJpdHkgcG9saWN5XShodHRwczovL2dpdGh1Yi5jb20vb2dlbi1nby9vZ2VuL2Jsb2IvLS9TRUNVUklUWS5tZCkKLSBbVGVsZWdyYW0gY2hhdCBgQG9nZW5fZGV2YF0oaHR0cHM6Ly90Lm1lL29nZW5fZGV2KQo= readmeEtag: '"d2cfcfa29e520817c8a0198953e84c50008ca2e7"' readmeLastModified: Tue, 03 Feb 2026 13:42:13 GMT repositoryId: 372032505 description: OpenAPI v3 code generator for go created: '2021-05-29T17:25:48Z' updated: '2026-02-05T18:13:38Z' language: Go archived: false stars: 1993 watchers: 16 forks: 155 owner: ogen-go logo: https://avatars.githubusercontent.com/u/85122432?v=4 license: Apache-2.0 repoEtag: '"b4b48d4f1ef6a7f4987ddc63235fffb5be544d7a5e538f77b51e1db6f1955914"' repoLastModified: Thu, 05 Feb 2026 18:13:38 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/openapitools/openapi-generator-cli v3: true repositoryMetadata: base64Readme: >- IyBAb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaQoKWyFbSm9pbiB0aGUgU2xhY2sgY2hhdCByb29tXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1NsYWNrLUpvaW4lMjB0aGUlMjBjaGF0JTIwcm9vbS1vcmFuZ2UpXShodHRwczovL2pvaW4uc2xhY2suY29tL3Qvb3BlbmFwaS1nZW5lcmF0b3Ivc2hhcmVkX2ludml0ZS96dC0xMmp4eGQ3cDItWFVlUU1+NHB6c1U5eH5lR0xRcVgyZykKCiFbQnVpbGRdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL3dvcmtmbG93cy9CdWlsZC9iYWRnZS5zdmcpClshW1Jlbm92YXRlIGVuYWJsZWRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcmVub3ZhdGUtZW5hYmxlZC1icmlnaHRncmVlbi5zdmcpXShodHRwczovL3Jlbm92YXRlYXBwLmNvbS8pClshW3NlbWFudGljLXJlbGVhc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvJTIwJTIwJUYwJTlGJTkzJUE2JUYwJTlGJTlBJTgwLXNlbWFudGljLS1yZWxlYXNlLWUxMDA3OS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc2VtYW50aWMtcmVsZWFzZS9zZW1hbnRpYy1yZWxlYXNlKQoKT3BlbkFQSSBHZW5lcmF0b3IgYWxsb3dzIGdlbmVyYXRpb24gb2YgQVBJIGNsaWVudCBsaWJyYXJpZXMgKFNESyBnZW5lcmF0aW9uKSwgc2VydmVyIHN0dWJzLCBkb2N1bWVudGF0aW9uIGFuZCAKY29uZmlndXJhdGlvbiBhdXRvbWF0aWNhbGx5IGdpdmVuIGFuIE9wZW5BUEkgU3BlYyAoYm90aCAyLjAgYW5kIDMuMCBhcmUgc3VwcG9ydGVkKS4gUGxlYXNlIHNlZQpbT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKS4KClRoZSBPcGVuQVBJIEdlbmVyYXRvciBpcyBhIEphdmEgcHJvamVjdC4gYG9wZW5hcGktZ2VuZXJhdG9yLWNsaWAgd2lsbCBkb3dubG9hZCB0aGUgYXBwcm9wcmlhdGUgSkFSIGZpbGUgYW5kIGludm9rZSB0aGUgYGphdmFgIGV4ZWN1dGFibGUgdG8gcnVuIHRoZSBPcGVuQVBJIEdlbmVyYXRvci4gWW91IG11c3QgaGF2ZSB0aGUgYGphdmFgIGJpbmFyeSBleGVjdXRhYmxlIGF2YWlsYWJsZSBvbiB5b3VyIGBQQVRIYCBmb3IgdGhpcyB0byB3b3JrLiAoSkRLIDExIGlzIHRoZSBtaW5pbWFsIHZlcnNpb24gc3VwcG9ydGVkLiBUbyBpbnN0YWxsIE9wZW5KREssIHBsZWFzZSB2aXNpdCBodHRwczovL2Fkb3B0aXVtLm5ldC8pCgpJZiB5b3UgZmluZCB0aGlzIHRvb2wgdXNlZnVsLCBwbGVhc2UgY29uc2lkZXIgc3BvbnNvcmluZyB0aGlzIHByb2plY3QgZmluYW5jaWFsbHkgdmlhIGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL29wZW5hcGlfZ2VuZXJhdG9yIG9yIGRpcmVjdGx5IHRvIFtLYXkgU2NoZWNrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9rYXktc2NoZWNrZXIpICh0aGUgYXV0aG9yIG9mIHRoaXMgdG9vbCkgOnByYXk6CgotLS0KCiMjIFZlcnNpb24gMi54LngKCiMjIyMgW3VwZGF0ZV0gVGhlIGNvbW1hbmQgaGFzIGJlZW4gcmVuYW1lZAoKWW91IG5lZWQgdG8gZXhlY3V0ZSBgb3BlbmFwaS1nZW5lcmF0b3ItY2xpYCBpbnN0ZWFkIG9mIGBvcGVuYXBpLWdlbmVyYXRvcmAgZnJvbSBub3cgb24uCgojIyMjIFthZGRlZF0gW3NlbXZlcl0oaHR0cHM6Ly9zZW12ZXIub3JnLykgc3VwcG9ydCEg8J+OiQoKPHAgYWxpZ249ImNlbnRlciI+PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL2Jsb2IvbWFzdGVyL2ltZy92bS5naWY/cmF3PXRydWUiLz48L3A+CgpUbyBtYWtlIHRoYXQgaGFwcGVuLCBhIHZlcnNpb24gbWFuYWdlbWVudCB3YXMgYWRkZWQgdG8gdGhlIHBhY2thZ2UuClRoZSBmaXJzdCB0aW1lIHlvdSBydW4gdGhlIGNvbW1hbmQgYG9wZW5hcGktZ2VuZXJhdG9yLWNsaWAgdGhlIGxhc3Qgc3RhYmxlIHZlcnNpb24gCm9mIFtPcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpIGlzIGRvd25sb2FkZWQgYnkgZGVmYXVsdC4gCgpUaGF0IHZlcnNpb24gaXMgc2F2ZWQgaW4gdGhlIGZpbGUgKm9wZW5hcGl0b29scy5qc29uKi4gVGhlcmVmb3JlLCB5b3Ugc2hvdWxkIGluY2x1ZGUgdGhpcyBmaWxlIGluIHlvdXIgdmVyc2lvbiBjb250cm9sLCAKdG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgdmVyc2lvbiBpcyBiZWluZyB1c2VkIG5leHQgdGltZSB5b3UgY2FsbCB0aGUgY29tbWFuZC4KCklmIHlvdSB3b3VsZCBsaWtlIHRvIHVzZSBhIGRpZmZlcmVudCB2ZXJzaW9uIG9mIHRoZSBbT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKSwgCnlvdSBjb3VsZCBjaGFuZ2UgaXQgYnkgdXNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CiAKLSBgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24tbWFuYWdlciBsaXN0YCAKLSBgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24tbWFuYWdlciBzZXQgIDx2ZXJzaW9uVGFncy4uLj5gCgojIyMjIFthZGRlZF0gZ2VuZXJhdG9yIGNvbmZpZwoKWW91IHdpbGwgbm93IGJlIGFibGUgdG8gY29uZmlndXJlIHRoZSBjb2RlIGdlbmVyYXRpb24gaW4gKm9wZW5hcGl0b29scy5qc29uKi4gClRoaXMgbWFrZXMgaXQgbW9yZSBjb252ZW5pZW50IHRvIGdlbmVyYXRlIGNvZGUgZm9yIGV2ZXJ5IGZpbGUgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbiBnbG9iIGV4cHJlc3Npb24uCkZvciBtb3JlIGluZm9ybWF0aW9uLCBbcGxlYXNlIGNoZWNrIG91dCB0aGUgY29uZmlndXJhdGlvbiBkb2N1bWVudGF0aW9uIGJlbG93XSgjY29uZmlndXJhdGlvbikuCgojIyBJbnN0YWxsYXRpb24KCiMjIyBMb2NhbGx5IChyZWNvbW1lbmRlZCkKCmBgYHNoCm5wbSBpbnN0YWxsIEBvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpCmBgYAoKb3IgdXNpbmcgeWFybgoKYGBgc2gKeWFybiBhZGQgQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkKYGBgCgpBZnRlciB0aGUgaW5zdGFsbGF0aW9uIGhhcyBmaW5pc2hlZCB5b3UgY2FuIHJ1biBgbnB4IG9wZW5hcGktZ2VuZXJhdG9yLWNsaWAgb3IgYWRkIGEgc2NyaXB0IGxpa2UgdGhpczoKCmBgYGpzb24KewogICJuYW1lIjogIm15LWNvb2wtcGFja2FnZSIsCiAgInZlcnNpb24iOiAiMC4wLjAiLAogICJzY3JpcHRzIjogewogICAgIm15LWF3ZXNvbWUtc2NyaXB0LW5hbWUiOiAib3BlbmFwaS1nZW5lcmF0b3ItY2xpIGdlbmVyYXRlIC1pIGRvY3Mvb3BlbmFwaS55YW1sIC1nIHR5cGVzY3JpcHQtYW5ndWxhciAtbyBnZW5lcmF0ZWQtc291cmNlcy9vcGVuYXBpIC0tYWRkaXRpb25hbC1wcm9wZXJ0aWVzPW5nVmVyc2lvbj02LjEuNyxucG1OYW1lPXJlc3RDbGllbnQsc3VwcG9ydHNFUzY9dHJ1ZSxucG1WZXJzaW9uPTYuOS4wLHdpdGhJbnRlcmZhY2VzPXRydWUiCiAgfQp9CmBgYAoKTm90ZSB0aGUgd2hpdGVzcGFjZSBzZW5zaXRpdml0eSB3aGVuIHVzaW5nIG11bHRpcGxlIGFkZGl0aW9uYWwtcHJvcGVydGllczoKCmBgYHRleHQKLS1hZGRpdGlvbmFsLXByb3BlcnRpZXM9bmdWZXJzaW9uPTYuMS43LG5wbU5hbWU9cmVzdENsaWVudCxzdXBwb3J0c0VTNj10cnVlLG5wbVZlcnNpb249Ni45LjAsd2l0aEludGVyZmFjZXM9dHJ1ZQpgYGAKCiMjIyBHbG9iYWxseQoKYGBgc2gKbnBtIGluc3RhbGwgLWcgQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkKYGBgCgpvciB1c2luZyB5YXJuCgpgYGBzaAp5YXJuIGdsb2JhbCBhZGQgQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkKYGBgCgpBZnRlciB0aGUgaW5zdGFsbGF0aW9uIGhhcyBmaW5pc2hlZCB5b3UgY2FuIHJ1biBgb3BlbmFwaS1nZW5lcmF0b3ItY2xpYAoKIyMgVXNhZ2UKCk1hYy9MaW51eDoKYGBgCm9wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZSAtZyBydWJ5IC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIC1vIC92YXIvdG1wL3J1YnktY2xpZW50CmBgYAoKV2luZG93czoKYGBgCm9wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZSAtZyBydWJ5IC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIC1vIEM6XHRlbXBccnVieS1jbGllbnQKYGBgCgojIyBDb25maWd1cmF0aW9uCgpJZiB5b3UgaGF2ZSBpbnN0YWxsZWQgdGhlIHBhY2thZ2UgbG9jYWxseSBhbmQgZXhlY3V0ZWQgdGhlIGNvbW1hbmQgYG9wZW5hcGktZ2VuZXJhdG9yLWNsaWAgYXQgbGVhc3Qgb25jZSwgCnlvdSB3aWxsIGZpbmQgYSBuZXcgZmlsZSBjYWxsZWQgKm9wZW5hcGl0b29scy5qc29uKiBhbG9uZyB3aXRoIHRoZSAqcGFja2FnZS5qc29uKi4gKipQbGVhc2UgYWRkIHRoaXMgZmlsZSB0byB5b3VyIFZDUy4qKiAKCkluaXRpYWxseSB0aGUgZmlsZSBoYXMgdGhlIGZvbGxvd2luZyBjb250ZW50OgoKYGBganNvbjUKewogICIkc2NoZW1hIjogIm5vZGVfbW9kdWxlcy9Ab3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS9jb25maWcuc2NoZW1hLmpzb24iLAogICJzcGFjZXMiOiAyLAogICJnZW5lcmF0b3ItY2xpIjogewogICAgInZlcnNpb24iOiAiNy44LjAiIC8vIG9yIHRoZSBjdXJyZW50IGxhdGVzdCB2ZXJzaW9uIDspCiAgfQp9CmBgYAoKVGhpcyBjb25maWd1cmF0aW9uIGluZGljYXRlcyB0aGUgZm9sbG93aW5nOgoKLSB0aGUganNvbiBmaWxlIHNoYWxsIGJlIGZvcm1hdHRlZCB1c2luZyAqKjIgc3BhY2VzKioKLSB0aGUgamFyIGZpbGVzIHNoYWxsIGJlIGRvd25sb2FkZWQgdG8gKi4vbXkvY3VzdG9tL3N0b3JhZ2UvZGlyKgotIHRoZSBnZW5lcmF0b3ItY2xpIHZlcnNpb24gNy44LjAgaXMgdXNlZAoKRnVydGhlciBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSBnZW5lcmF0b3JzLCBmb3IgZXhhbXBsZToKCmBgYGpzb241CnsKICAiJHNjaGVtYSI6ICJub2RlX21vZHVsZXMvQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvY29uZmlnLnNjaGVtYS5qc29uIiwKICAic3BhY2VzIjogMiwKICAiZ2VuZXJhdG9yLWNsaSI6IHsKICAgICJ2ZXJzaW9uIjogIjcuOC4wIiwKICAgICJzdG9yYWdlRGlyIjogIn4vbXkvY3VzdG9tL3N0b3JhZ2UvZGlyIiwgLy8gb3B0aW9uYWwKICAgICJnZW5lcmF0b3JzIjogeyAvLyBvcHRpb25hbAogICAgICAidjIuMCI6IHsgLy8gYW55IG5hbWUgeW91IGxpa2UgKGp1c3QgcHJpbnRlZCB0byB0aGUgY29uc29sZSBsb2cgb3IgcmVmZXJlbmNlIGl0IHVzaW5nIC0tZ2VuZXJhdG9yLWtleSkgCiAgICAgICAgImdlbmVyYXRvck5hbWUiOiAidHlwZXNjcmlwdC1hbmd1bGFyIiwKICAgICAgICAib3V0cHV0IjogIiN7Y3dkfS9vdXRwdXQvdjIuMC8je2V4dH0vI3tuYW1lfSIsCiAgICAgICAgImdsb2IiOiAiZXhhbXBsZXMvdjIuMC97anNvbix5YW1sfS8qLntqc29uLHlhbWx9IiwKICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiOiB7CiAgICAgICAgICAibmdWZXJzaW9uIjogIjYuMS43IiwKICAgICAgICAgICJucG1OYW1lIjogInJlc3RDbGllbnQiLAogICAgICAgICAgInN1cHBvcnRzRVM2IjogInRydWUiLAogICAgICAgICAgIm5wbVZlcnNpb24iOiAiNi45LjAiLAogICAgICAgICAgIndpdGhJbnRlcmZhY2VzIjogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgInYzLjAiOiB7IC8vIGFueSBuYW1lIHlvdSBsaWtlIChqdXN0IHByaW50ZWQgdG8gdGhlIGNvbnNvbGUgbG9nIG9yIHJlZmVyZW5jZSBpdCB1c2luZyAtLWdlbmVyYXRvci1rZXkpIAogICAgICAgICJnZW5lcmF0b3JOYW1lIjogInR5cGVzY3JpcHQtZmV0Y2giLAogICAgICAgICJvdXRwdXQiOiAiI3tjd2R9L291dHB1dC92My4wLyN7ZXh0fS8je25hbWV9IiwKICAgICAgICAiZ2xvYiI6ICJleGFtcGxlcy92My4wL3BldHN0b3JlLntqc29uLHlhbWx9IgogICAgICB9CiAgICB9CiAgfQp9CmBgYAoKSWYgYG9wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZWAgaXMgY2FsbGVkIHdpdGhvdXQgZnVydGhlciBhcmd1bWVudHMsIHRoZW4gdGhlIGNvbmZpZ3VyYXRpb24gCmlzIGF1dG9tYXRpY2FsbHkgdXNlZCB0byBnZW5lcmF0ZSB5b3VyIGNvZGUuIPCfjokKCgojIyMjIyBBdmFpbGFibGUgcGxhY2Vob2xkZXJzCiAgICAgCnwgcGxhY2Vob2xkZXIgfCBkZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXhhbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBuYW1lICAgICAgICB8IGp1c3QgZmlsZSBuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhdXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgTmFtZSAgICAgICAgfCBqdXN0IGZpbGUgbmFtZSwgYnV0IHN0YXJ0aW5nIHdpdGggYSBjYXBpdGFsIGxldHRlciAgICAgICAgICAgIHwgQXV0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGN3ZCAgICAgICAgIHwgdGhlIGN1cnJlbnQgY3dkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC9Vc2Vycy9zb21lLXVzZXIvcHJvamVjdHMvc29tZS1wcm9qZWN0ICAgICAgICAgICAgICAgIHwKfCBiYXNlICAgICAgICB8IGZpbGUgbmFtZSBhbmQgZXh0ZW5zaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhdXRoLnlhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgcGF0aCAgICAgICAgfCBmdWxsIHBhdGggYW5kIGZpbGVuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgL1VzZXJzL3NvbWUtdXNlci9wcm9qZWN0cy9zb21lLXByb2plY3QvZG9jcy9hdXRoLnlhbWwgfAp8IGRpciAgICAgICAgIHwgcGF0aCB3aXRob3V0IHRoZSBmaWxlbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC9Vc2Vycy9zb21lLXVzZXIvcHJvamVjdHMvc29tZS1wcm9qZWN0L2RvY3MgICAgICAgICAgIHwKfCByZWxEaXIgICAgICB8IGRpcmVjdG9yeSBuYW1lIG9mIGZpbGUgcmVsYXRpdmUgdG8gdGhlIGdsb2IgcHJvdmlkZWQgICAgICAgICAgfCBkb2NzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgcmVsUGF0aCAgICAgfCBmaWxlIG5hbWUgYW5kIGV4dGVuc2lvbiBvZiBmaWxlIHJlbGF0aXZlIHRvIHRoZSBnbG9iIHByb3ZpZGVkIHwgZG9jcy9hdXRoLnlhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGV4dCAgICAgICAgIHwganVzdCBmaWxlIGV4dGVuc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHlhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBlbnYuPG5hbWU+ICB8IGVudmlyb25tZW50IHZhcmlhYmxlICh1c2UgJHtlbnYubmFtZX0gc3ludGF4KSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgojIyMgVXNpbmcgY3VzdG9tIC8gcHJpdmF0ZSBtYXZlbiByZWdpc3RyeSAKCklmIHlvdSdyZSB1c2luZyBhIHByaXZhdGUgbWF2ZW4gcmVnaXN0cnkgeW91IGNhbiBjb25maWd1cmUgdGhlIGBkb3dubG9hZFVybGAgYW5kIGBxdWVyeVVybGAgbGlrZSB0aGlzOgoKYGBganNvbgp7CiAgIiRzY2hlbWEiOiAibm9kZV9tb2R1bGVzL0BvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL2NvbmZpZy5zY2hlbWEuanNvbiIsCiAgInNwYWNlcyI6IDIsCiAgImdlbmVyYXRvci1jbGkiOiB7CiAgICAidmVyc2lvbiI6ICI3LjguMCIsCiAgICAicmVwb3NpdG9yeSI6IHsKICAgICAgInF1ZXJ5VXJsIjogImh0dHBzOi8vcHJpdmF0ZS5tYXZlbi5pbnRlcm4vc29scnNlYXJjaC9zZWxlY3Q/cT1nOiR7Z3JvdXAuaWR9K0FORCthOiR7YXJ0aWZhY3QuaWR9JmNvcmU9Z2F2JnN0YXJ0PTAmcm93cz0yMDAiLAogICAgICAiZG93bmxvYWRVcmwiOiAiaHR0cHM6Ly9wcml2YXRlLm1hdmVuLmludGVybi9tYXZlbjIvJHtncm91cElkfS8ke2FydGlmYWN0SWR9LyR7dmVyc2lvbk5hbWV9LyR7YXJ0aWZhY3RJZH0tJHt2ZXJzaW9uTmFtZX0uamFyIgogICAgfQogIH0KfQpgYGAKCklmIHRoZSBgdmVyc2lvbmAgcHJvcGVydHkgcGFyYW0gaXMgc2V0IGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY29uZmlndXJlIHRoZSBgcXVlcnlVcmxgLgoKYHF1ZXJ5VXJsYCBhbmQgYGRvd25sb2FkVXJsYCBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgcGxhY2Vob2xkZXJzOgoKfCBwbGFjZWhvbGRlciB8IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBncm91cElkICAgICB8IG1hdmVuIGdyb3VwSWQgd2hlcmUgJy4nIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggLyAgIHwKfCBhcnRpZmFjdElkICB8IG1hdmVuIGFydGlmYWN0SWQgd2hlcmUgJy4nIGhhcyBiZWVuIHJlcGxhY2Ugd2l0aCAvIHwKfCB2ZXJzaW9uTmFtZSB8IG1hdmVuIHZlcnNpb24gKG9ubHkgZm9yIGRvd25sb2FkVXJsKSAgICAgICAgICAgICAgIHwKfCBncm91cC5pZCAgICB8IG1hdmVuIGdyb3VwSWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBhcnRpZmFjdC5pZCB8IG1hdmVuIGFydGlmYWN0SWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBlbnYuPG5hbWU+ICB8IGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCiMjIyBVc2UgbG9jYWxseSBidWlsdCBKQVIKSW4gb3JkZXIgdG8gdXNlIGEgbG9jYWxseSBidWlsdCBqYXIgb2YgdGhlIGdlbmVyYXRvciBDTEksIHlvdSBjYW4gY29weSB0aGUgamFyIGZyb20geW91ciBsb2NhbCBidWlsZCAoaS5lLiBpZiB5b3Ugd2VyZSB0byBgYnVpbGRgIHRoZSBbT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKSByZXBvc2l0b3J5IGl0IHdvdWxkIGJlIGluIGB+L29wZW5hcGktZ2VuZXJhdG9yL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL3RhcmdldC9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyYCkgaW50byBgLi9ub2RlX21vZHVsZXMvQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvdmVyc2lvbnMvYCBhbmQgY2hhbmdlIHRoZSBgdmVyc2lvbmAgaW4gdGhlIGBvcGVuYXBpdG9vbHMuanNvbmAgZmlsZSB0byB0aGUgYmFzZSBuYW1lIG9mIHRoZSBqYXIgZmlsZS4KRS5nLjoKYGBgc2gKY2Qgb3BlbmFwaS1nZW5lcmF0b3IKLi9tdm53IGNsZWFuIHBhY2thZ2UKY3AgLi9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS90YXJnZXQvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciAveW91ci9wcm9qZWN0L25vZGVfbW9kdWxlcy9Ab3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS92ZXJzaW9ucy9teS1sb2NhbC1zbmFwc2hvdC5qYXIKYGBgCmFuZCB0aGVuOgpgYGBqc29uCnsKICAiJHNjaGVtYSI6ICIuL25vZGVfbW9kdWxlcy9Ab3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS9jb25maWcuc2NoZW1hLmpzb24iLAogICJzcGFjZXMiOiAyLAogICJnZW5lcmF0b3ItY2xpIjogewogICAgInZlcnNpb24iOiAibXktbG9jYWwtc25hcHNob3QiCiAgfQp9CmBgYAoKIyMjIFVzZSBuaWdodGx5IGBTTkFQU0hPVGAgYnVpbGQKQ2hhbmdlIHlvdXIgYG9wZW5hcGl0b29scy5qc29uYCB0bzoKCmBgYGpzb24KewogICIkc2NoZW1hIjogIm5vZGVfbW9kdWxlcy9Ab3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS9jb25maWcuc2NoZW1hLmpzb24iLAogICJzcGFjZXMiOiAyLAogICJnZW5lcmF0b3ItY2xpIjogewogICAgInZlcnNpb24iOiAiNy4xNy4wLTIwMjUxMDAzLjAyMDkzMC04IiwKICAgICJyZXBvc2l0b3J5IjogewogICAgICAiZG93bmxvYWRVcmwiOiAiaHR0cHM6Ly9jZW50cmFsLnNvbmF0eXBlLmNvbS9yZXBvc2l0b3J5L21hdmVuLXNuYXBzaG90cy9vcmcvb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS83LjE3LjAtU05BUFNIT1Qvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLSR7dmVyc2lvbn0uamFyIgogICAgfQogIH0KfQpgYGAKCkV4YW1wbGUgaXMgd2l0aCBhIHNuYXBzaG90IG9mIGA3LjE3LjBgLCBwbGVhc2UgY2hhbmdlIHRoZSBgdmVyc2lvbmAgYW5kIGBkb3dubG9hZFVybGAgYWNjb3JkaW5nbHkuCllvdSBjYW4gZmluZCB0aGUgcHVibGlzaGVkIHNuYXBzaG90cyBpbiB0aGUgYnVpbGQgbG9nIG9mIHRoZSBbUHVibGlzaCB0byBNYXZlbiBDZW50cmFsIEdpdEh1YiB3b3JrZmxvd10oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9hY3Rpb25zL3dvcmtmbG93cy9tYXZlbi1yZWxlYXNlLnltbCkgaW4gT3BlbkFQSSBHZW5lcmF0b3IgcmVwbywgZS5nLgoKYGBgCltJTkZPXSBVcGxvYWRpbmcgdG8gY2VudHJhbDogaHR0cHM6Ly9jZW50cmFsLnNvbmF0eXBlLmNvbS9yZXBvc2l0b3J5L21hdmVuLXNuYXBzaG90cy9vcmcvb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS83LjE3LjAtU05BUFNIT1Qvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLTcuMTcuMC0yMDI1MTAwMy4wMjA5MzAtOC5qYXIKYGBgCgojIyBSdW4gc3BlY2lmaWMgZ2VuZXJhdG9ycwoKfCBjbWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHYzLjAgcnVucyB8IHYyLjAgcnVucyB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tfAp8IG9wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZSAtLWdlbmVyYXRvci1rZXkgdjMuMCAgICAgIHwgeWVzICAgICAgIHwgbm8gICAgICAgIHwKfCBvcGVuYXBpLWdlbmVyYXRvci1jbGkgZ2VuZXJhdGUgLS1nZW5lcmF0b3Ita2V5IHYzLjAgdjIuMCB8IHllcyAgICAgICB8IHllcyAgICAgICB8Cnwgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIGdlbmVyYXRlIC0tZ2VuZXJhdG9yLWtleSBmb28gICAgICAgfCBubyAgICAgICAgfCBubyAgICAgICAgfAoKIyMgVXNlIERvY2tlciBpbnN0ZWFkIG9mIHJ1bm5pbmcgamF2YSBsb2NhbGx5CgpgYGBqc29uCnsKICAiJHNjaGVtYSI6ICJub2RlX21vZHVsZXMvQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvY29uZmlnLnNjaGVtYS5qc29uIiwKICAic3BhY2VzIjogMiwKICAiZ2VuZXJhdG9yLWNsaSI6IHsKICAgICJ1c2VEb2NrZXIiOiB0cnVlCiAgfQp9CmBgYApJZiBgdXNlRG9ja2VyYCBvcHRpb24gaXMgdXNlZCwgdGhlIHNwZWMgZmlsZSBnZXRzIG1vdW50ZWQgdG8gcGF0aCBgL2xvY2FsLzx5b3VyLXNwZWMtZmlsZS1sb2NhdGlvbj5gIHdpdGhpbiBjb250YWluZXIuIFNvLCBpZiB5b3Ugd291bGQgY29uZmlndXJlIHNwZWMgZmlsZSBhcyAKYC1pIG9wZW5hcGkvbXktYXBpLnltbGAgaWYgcnVubmluZyBsb2NhbGx5LCB3aXRoIHVzZURvY2tlciBvcHRpb24gc2V0LCB5b3Ugd291bGQgaGF2ZSB0byBjb25maWd1cmUgaXQgbGlrZSB0aGlzOiBgLWkgL2xvY2FsL29wZW5hcGkvbXktYXBpLnltbGAuCgojIyBDdXN0b20gR2VuZXJhdG9ycwoKQ3VzdG9tIGdlbmVyYXRvcnMgY2FuIGJlIHVzZWQgYnkgcGFzc2luZyB0aGUgYC0tY3VzdG9tLWdlbmVyYXRvcj0vbXkvY3VzdG9tLWdlbmVyYXRvci5qYXJgIGFyZ3VtZW50LgoKIyMgQnlwYXNzaW5nIG1hdmVuIHJlcG8gc2VhcmNoCgpUbyBieXBhc3MgbWF2ZW4gcmVwbyBzZWFyY2ggZm9yIGFsbCBzdGFibGUgdmVyc2lvbnMgKGFzIGNlbnRyYWwuc29uYXR5cGUuY29tIG9yIHNlYXJjaC5tYXZlbi5vcmcgY291bGQgYmUgZG93biBkdWUgdG8gdmFyaW91cyByZWFzb25zKSwgb25lIGNhbiBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGBPUEVOQVBJX0dFTkVSQVRPUl9DTElfU0VBUkNIX1VSTGAgdG8gYERFRkFVTFRgOgoKTGludXg6IGBleHBvcnQgT1BFTkFQSV9HRU5FUkFUT1JfQ0xJX1NFQVJDSF9VUkw9REVGQVVMVGAKCkRPUzogYHNldCBPUEVOQVBJX0dFTkVSQVRPUl9DTElfU0VBUkNIX1VSTD1ERUZBVUxUYAoKIyMgRnVydGhlciBEb2N1bWVudGF0aW9uCgpQbGVhc2UgcmVmZXIgdG8gdGhlIFtvZmZpY2lhbCBvcGVuYXBpLWdlbmVyYXRvciBkb2NzXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yIzMtLS11c2FnZSkgZm9yCm1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBvc3NpYmxlIGFyZ3VtZW50cyBhbmQgYSBkZXRhaWxlZCB1c2FnZSBtYW51YWwgb2YgdGhlIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UuCgojIyBJbnN0YWxsIHByZXZpb3VzIHZlcnNpb24KCmBgYHNoCm5wbSBpbnN0YWxsIEBvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpQHByZXZpb3VzCm5wbSBpIEBvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpQDEuMC4xOC00LjMuMQpgYGAKCm9yIHVzaW5nIHlhcm4KCmBgYHNoCnlhcm4gYWRkIEBvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpQHByZXZpb3VzCnlhcm4gYWRkIEBvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpQDEuMC4xOC00LjMuMQpgYGAKCiMjIFlvdSBsaWtlIHRoZSBwYWNrYWdlPwoKUGxlYXNlIGxlYXZlIGEgc3Rhci4KCgoKCg== readmeEtag: '"14acae4cdb17f6bf8b12341944f43cb9aadc4015"' readmeLastModified: Tue, 30 Dec 2025 16:15:11 GMT repositoryId: 154817001 description: >- A node package wrapper for https://github.com/OpenAPITools/openapi-generator created: '2018-10-26T10:21:23Z' updated: '2026-02-06T04:59:35Z' language: TypeScript archived: false stars: 1882 watchers: 17 forks: 192 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 repoEtag: '"4f9d39455d12505ba9881c17362ea07d5f72dc58bbc5e5491abaa36de471c8a9"' repoLastModified: Fri, 06 Feb 2026 04:59:35 GMT foundInMaster: true category: - Code Generators - Parsers id: 8f568f0b10837fef38571b68999adc0f - source: openapi3 tags name: OpenAPI-gui homepage: https://github.com/Mermade/openapi-gui language: Node.js source_description: GUI / visual editor for creating and editing OpenAPI definitions category: - Editors - Server Implementations repository: https://github.com/mermade/openapi-gui v3: true repositoryMetadata: base64Readme: >- T3BlbkFQSS1HVUkKPT09PT09PT09PT0KCk9wZW5BUEktR1VJIGlzIGEgR1VJIGZvciBjcmVhdGluZyBhbmQgZWRpdGluZyBPcGVuQVBJIHZlcnNpb24gMy4wLnggSlNPTi9ZQU1MIGRlZmluaXRpb25zLiBJbiBpdHMgY3VycmVudCBmb3JtIGl0IGlzIG1vc3QgdXNlZnVsIGFzIGEgdG9vbCBmb3Igc3RhcnRpbmcgb2ZmIGFuZCBlZGl0aW5nIHNpbXBsZSBPcGVuQVBJIGRlZmluaXRpb25zLiBJbXBvcnRlZCBPcGVuQVBJIDIuMCBkZWZpbml0aW9ucyBhcmUgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gdjMuMC4KCiFbU2NyZWVuc2hvdF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL01lcm1hZGUvb3BlbmFwaS1ndWkvbWFpbi9pbWcvc2NyZWVuc2hvdC5wbmcpCgpGb3IgdGhlIHByZXZpb3VzIFN3YWdnZXIgLyBPcGVuQVBJIDIuMC1vbmx5IHZlcnNpb24gc2VlIFtoZXJlXShodHRwczovL21pa2VyYWxwaHNvbi5naXRodWIuaW8vb3BlbmFwaS1ndWkpLiBUaGF0IHZlcnNpb24gaXMgY3VycmVudGx5ICoqdW5tYWludGFpbmVkKiogYXBhcnQgZnJvbSBzZWN1cml0eSBmaXhlcy4KClRoaXMgcHJvamVjdCB3YXMgaW5pdGlhbGx5IGEgZm9yayBvZiBbRGFyeWwgS3VobidzIElPRG9jdG9yXShodHRwczovL2dpdGh1Yi5jb20vZGFycnlsa3Vobi9pb2RvY3Rvci90cmVlL2FuZ3VsYXItcG9ydCksIHdoaWNoIGluIHR1cm4gd2FzIGluc3BpcmVkIGJ5IFtJT0RvY3RvciBieSBCcmFuZG9uIFdlc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmFuZG9ubXdlc3QvaW9kb2N0b3IpIHdoaWNoIHdhcyB3cml0dGVuIGluIFJ1YnkuIFRoZSBjb21wbGV0ZSBoaXN0b3J5IG9mIHRoZSBwcm9qZWN0IGlzIG1haW50YWluZWQgb24gR2l0SHViLgoKRGVzY3JpcHRpb24KLS0tLS0tLS0tLS0KIyMjIEhvdyBJdCBXb3JrcwoKU2VsZWN0IGFuIGV4aXN0aW5nIE9wZW5BUEkgMi4wIG9yIDMuMC54IGRlZmluaXRpb24gdG8gdXBsb2FkLCBvciBjcmVhdGUgYSBuZXcgZGVmaW5pdGlvbiBhbmQgc3RhcnQgYWRkaW5nIFBhdGhzLCBPcGVyYXRpb25zLCBhbmQgUGFyYW1ldGVycy4gV2hlbiBhbiBleGlzdGluZyBkZWZpbml0aW9uIGlzIHVzZWQsIGl0IGlzIHBhcnNlZCBhbmQgZm9ybXMgZm9yIGVkaXRpbmcgZWFjaCBQYXRoLCBPcGVyYXRpb24gYW5kIFBhcmFtZXRlciB3aWxsIGJlIGNyZWF0ZWQuCgpZb3UgY2FuIGxvYWQgYW4gZXhpc3RpbmcgZGVmaW5pdGlvbiBieSBhcHBlbmRpbmcgYSBgP3VybD1gIHF1ZXJ5IHBhcmFtZXRlciB0byB0aGUgaW5pdGlhbCBzdGFydCBwYWdlIHdpdGggdGhlIHZhbHVlIGJlaW5nIHRoZSBVUkwgdG8gdGhlIGRlZmluaXRpb24geW91IHdpc2ggdG8gbG9hZC4gV2hlbiB1c2luZyBEb2NrZXIsIHlvdSBjYW4gc2V0IHRoZSB2YWx1ZSBvZiB0aGUgYHVybGAgcXVlcnkgcGFyYW1ldGVyIHRvIGAlMmZzZXJ2ZWAgdG8gcGljayB1cCB0aGUgZGVmaW5pdGlvbiB5b3UgcGFzc2VkIGluIG9uIHRoZSBEb2NrZXIgY29tbWFuZGxpbmUuCgpDbGljayBhbiBpdGVtIGZyb20gdGhlIG1lbnUgb24gdGhlIGxlZnQgdG8gYmVnaW4gZWRpdGluZy4gVmlldyB0aGUgSlNPTi9ZQU1MIG91dHB1dCBhdCBhbnkgdGltZSBieSBzZWxlY3Rpbmcgb25lIG9mIHRoZSAiRXhwb3J0IiB0YWJzLiBXaGVuIGZpbmlzaGVkLCBkb3dubG9hZCB0aGUgb3V0cHV0IHRvIHNhdmUgaXQgbG9jYWxseSBvciBjb3B5IGl0IHlvdXIgY2xpcGJvYXJkLiBPcGVuQVBJLUdVSSBvbmx5IHN0b3JlcyBvbmUgZGVmaW5pdGlvbiBhdCBhIHRpbWUsIGFuZCB0aGlzIGlzIGluIHlvdXIgYnJvd3NlcidzIGxvY2FsLXN0b3JhZ2UuIE1ha2Ugc3VyZSB5b3Ugc2F2ZSB5b3VyIEpTT04vWUFNTCBvdXRwdXQgbG9jYWxseS4KCkJlZm9yZSBwZXJmb3JtaW5nIGEgZGVzdHJ1Y3RpdmUgYWN0aW9uLCBPcGVuQVBJLUdVSSBzYXZlcyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZGVmaW5pdGlvbi4gQXQgYWxsIG90aGVyIHRpbWVzIHlvdSBtdXN0IHJlbWVtYmVyIHRvIHNlbGVjdCBTYXZlIG1hbnVhbGx5LgoKIyMjIFRlY2hub2xvZ3kKCk9wZW5BUEktR1VJIHJ1bnMgZW50aXJlbHkgY2xpZW50LXNpZGUgdXNpbmcgYSBudW1iZXIgb2YgSmF2YXNjcmlwdCBmcmFtZXdvcmtzIGluY2x1ZGluZyBbVnVlLkpTXShodHRwczovL3Z1ZWpzLm9yZy8pLCBbalF1ZXJ5XShodHRwczovL2pxdWVyeS5jb20vKSBhbmQgW0J1bG1hXShodHRwOi8vYnVsbWEuaW8vKSBmb3IgQ1NTLgoKVG8gZ2V0IHRoZSBhcHAgdXAgYW5kIHJ1bm5pbmcganVzdCBicm93c2UgdG8gW3RoZSBsaXZlIHZlcnNpb24gb24gR2l0SHViIHBhZ2VzXShodHRwczovL21lcm1hZGUuZ2l0aHViLmlvL29wZW5hcGktZ3VpKSwgZGVwbG95IGEgY2xvbmUgdG8gR2l0SHViIHBhZ2VzLCBkZXBsb3kgdG8gSGVyb2t1IHVzaW5nIHRoZSBidXR0b24gYmVsb3csIG9yIGNsb25lIHRoZSByZXBvIGFuZCBwb2ludCBhIGJyb3dzZXIgYXQgYGluZGV4Lmh0bWxgIG9yIGhvc3QgaXQgeW91cnNlbGYgLSBjb3VsZG4ndCBiZSBzaW1wbGVyLiBNb3JlIFt0ZWNobmljYWwgaW5mb3JtYXRpb24gaGVyZV0oZG9jcy90ZWNobmljYWwubWQpLgoKWW91IG9ubHkgbmVlZCB0byBgbnBtIGluc3RhbGxgIHRoZSBOb2RlLmpzIG1vZHVsZXMgaWYgeW91IHdpc2ggdG8gdXNlIHRoZSBgb3BlbmFwaS1ndWlgIGVtYmVkZGVkIHdlYiBzZXJ2ZXIgKGkuZS4gbm90IGlmIHlvdSBhcmUgcnVubmluZyB5b3VyIG93biB3ZWItc2VydmVyKSwgb3RoZXJ3aXNlIHRoZXkgYXJlIG9ubHkgdGhlcmUgZm9yIFBhYVMgZGVwbG95bWVudHMuCgpbIVtEZXBsb3ldKGh0dHBzOi8vd3d3Lmhlcm9rdWNkbi5jb20vZGVwbG95L2J1dHRvbi5zdmcpXShodHRwczovL2hlcm9rdS5jb20vZGVwbG95KQoKIyMjIyBDTEkgb3B0aW9ucwoKYGBgCi1kLCAtLWRlZmluaXRpb24gICAgc2VydmUgdGhlIGdpdmVuIE9BUyBkZWZpbml0aW9uCi1sLCAtLWxhdW5jaCAgICAgICAgc3RhcnQgYSB3ZWItYnJvd3NlciBwb2ludGluZyB0byB0aGUgR1VJCi1wLCAtLXBvcnQgICAgICAgICAgc3BlY2lmeSB0aGUgcG9ydCB0byBydW4gb24sIGRlZmF1bHRzIHRvICRQT1JUIG9yIDMwMDAKLXcsIC0td3JpdGUgICAgICAgICBlbmFibGUgd3JpdGluZyBiYWNrIHRvIHRoZSBzb3VyY2UgZGVmaW5pdGlvbgpgYGAKCiMjIyMgUnVubmluZyB3aXRoIERvY2tlcgoKSWYgeW91IGRvbid0IGhhdmUgYSBsb2NhbCBOb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50LCBvciBpZiB5b3Ugd291bGQgcHJlZmVyIHRvIHJ1biBPcGVuQVBJLUdVSSBpbiBhIERvY2tlciBjb250YWluZXIsIHlvdSBjYW4gZG8gaW4gd2l0aCBhIGZldyBzaW1wbGUgc3RlcHM6CgoxLiBDbG9uZSB0aGUgcmVwb3NpdG9yeS4KMi4gUnVuIGBkb2NrZXIgYnVpbGQgLXQgbWVybWFkZS9vcGVuYXBpLWd1aSAuYCB0byBidWlsZCB0aGUgRG9ja2VyIGltYWdlIChgbWVybWFkZS9vcGVuYXBpLWd1aWApCjMuIFJ1biBgZG9ja2VyIHJ1biAtLW5hbWUgb3BlbmFwaS1ndWkgLXAgODA4MDozMDAwIC1kIG1lcm1hZGUvb3BlbmFwaS1ndWlgIHRvIHJ1biB0aGUgc2VydmVyIG9uIHBvcnQgODA4MC4KNC4gTmF2aWdhdGUgdG8gYGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MGAgaW4geW91ciBmYXZvcml0ZSBicm93c2VyLgo1LiBXaGVuIHlvdSdyZSBkb25lLCBzaHV0IGRvd24gdGhlIHNlcnZlciBieSBydW5uaW5nIGBkb2NrZXIgc3RvcCBvcGVuYXBpLWd1aSAmJiBkb2NrZXIgcm0gb3BlbmFwaS1ndWlgCgpPciB5b3UgY2FuIHB1bGwgdGhlIHByZS1idWlsdCBEb2NrZXIgaW1hZ2U6CgoqIGBkb2NrZXIgcHVsbCBtZXJtYWRlL29wZW5hcGktZ3VpYAoKIyMjIExpbWl0YXRpb25zCgoqIE9wZW5BUEktR1VJIHdpbGwgZGUtcmVmZXJlbmNlIHNoYXJlZCBwYXJhbWV0ZXJzLgoqIFRoZSBkZWZpbml0aW9uIG11c3QgYmUgc2VsZi1jb250YWluZWQgd2l0aCBubyBleHRlcm5hbCBgJHJlZmBzLiAqKlRoaXMgaXMgbGlrZWx5IHRvIGJlIHJlc29sdmVkIChoby1obykgc29vbioqLgoqIEVkaXRpbmcgYSByZXNwb25zZSAvIGV4YW1wbGUgLyBib2R5IHNjaGVtYSB3aWxsIGRlcmVmZXJlbmNlIGl0LgoqIE9wZW5BUEktR1VJIHdpbGwgbm90IGFsd2F5cyBwcmVzZXJ2ZSB2ZW5kb3ItZXh0ZW5zaW9ucywgZS5nLiBpZiBhIHBhcmFtZXRlciBpcyBkZWxldGVkIGFuZCByZWNyZWF0ZWQuCiogT3BlbkFQSS1HVUkgd2lsbCBub3QgcHJlc2VydmUgY29tbWVudHMgZnJvbSBkZWZpbml0aW9ucyBpbXBvcnRlZCBpbiBZQU1MIGZvcm1hdC4KClRPRE8KLS0tLQoKKiBTZWUgdGhlIFtUT0RPIGxpc3RdKC9kb2NzL1RPRE8ubWQpIGFuZCB0aGUgY3VycmVudCBzdGF0dXMgb2YgW09wZW5BUEkgMy4wIHNwZWNpZmljYXRpb24gc3VwcG9ydF0oZG9jcy9vcGVuYXBpMy1zdXBwb3J0Lm1kKS4KCg== readmeEtag: '"fe9390b576bcf3a1e239f9399ce0c894964d859d"' readmeLastModified: Sun, 15 Oct 2023 11:54:20 GMT repositoryId: 71986592 description: GUI / visual editor for creating and editing OpenAPI / Swagger definitions created: '2016-10-26T09:15:55Z' updated: '2026-01-31T22:28:37Z' language: JavaScript archived: false stars: 1479 watchers: 40 forks: 172 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: MIT repoEtag: '"c954fbaf5b94260fa4b954f8387cf7961a720a9ae839eaad9a9c112d034f7016"' repoLastModified: Sat, 31 Jan 2026 22:28:37 GMT foundInMaster: true id: 71f1a528dc0a6366fb580d1b8c703ea8 - source: openapi3 tags repository: https://github.com/marshmallow-code/apispec v3: true repositoryMetadata: base64Readme: >- KioqKioqKgphcGlzcGVjCioqKioqKioKCnxweXBpfCB8YnVpbGQtc3RhdHVzfCB8ZG9jc3wgfG1hcnNobWFsbG93LXN1cHBvcnR8IHxvcGVuYXBpfAoKLi4gfHB5cGl8IGltYWdlOjogaHR0cHM6Ly9iYWRnZW4ubmV0L3B5cGkvdi9hcGlzcGVjCiAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkub3JnL3Byb2plY3QvYXBpc3BlYy8KICAgIDphbHQ6IFB5UEkgcGFja2FnZQoKLi4gfGJ1aWxkLXN0YXR1c3wgaW1hZ2U6OiBodHRwczovL2dpdGh1Yi5jb20vbWFyc2htYWxsb3ctY29kZS9hcGlzcGVjL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLXJlbGVhc2UueW1sL2JhZGdlLnN2ZwogICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL21hcnNobWFsbG93LWNvZGUvd2ViYXJncy9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC1yZWxlYXNlLnltbAogICAgOmFsdDogQnVpbGQgc3RhdHVzCgouLiB8ZG9jc3wgaW1hZ2U6OiBodHRwczovL3JlYWR0aGVkb2NzLm9yZy9wcm9qZWN0cy9hcGlzcGVjL2JhZGdlLwogICA6dGFyZ2V0OiBodHRwczovL2FwaXNwZWMucmVhZHRoZWRvY3MuaW8vCiAgIDphbHQ6IERvY3VtZW50YXRpb24KCi4uIHxtYXJzaG1hbGxvdy1zdXBwb3J0fCBpbWFnZTo6IGh0dHBzOi8vYmFkZ2VuLm5ldC9iYWRnZS9tYXJzaG1hbGxvdy8zLDQ/bGlzdD0xCiAgICA6dGFyZ2V0OiBodHRwczovL21hcnNobWFsbG93LnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC91cGdyYWRpbmcuaHRtbAogICAgOmFsdDogbWFyc2htYWxsb3cgM3w0IGNvbXBhdGlibGUKCi4uIHxvcGVuYXBpfCBpbWFnZTo6IGh0dHBzOi8vYmFkZ2VuLm5ldC9iYWRnZS9PQVMvMiwzP2xpc3Q9MSZjb2xvcj1jeWFuCiAgICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbgogICAgOmFsdDogT3BlbkFQSSBTcGVjaWZpY2F0aW9uIDIvMyBjb21wYXRpYmxlCgoKQSBwbHVnZ2FibGUgQVBJIHNwZWNpZmljYXRpb24gZ2VuZXJhdG9yLiBDdXJyZW50bHkgc3VwcG9ydHMgdGhlIGBPcGVuQVBJIFNwZWNpZmljYXRpb24gPGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uPmBfIChmLmsuYS4gdGhlIFN3YWdnZXIgc3BlY2lmaWNhdGlvbikuCgpGZWF0dXJlcwo9PT09PT09PQoKLSBTdXBwb3J0cyB0aGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uICh2ZXJzaW9ucyAyIGFuZCAzKQotIEZyYW1ld29yay1hZ25vc3RpYwotIEJ1aWx0LWluIHN1cHBvcnQgZm9yIGBtYXJzaG1hbGxvdyA8aHR0cHM6Ly9tYXJzaG1hbGxvdy5yZWFkdGhlZG9jcy5pby8+YF8KLSBVdGlsaXRpZXMgZm9yIHBhcnNpbmcgZG9jc3RyaW5ncwoKSW5zdGFsbGF0aW9uCj09PT09PT09PT09PQoKOjoKCiAgICAkIHBpcCBpbnN0YWxsIC1VIGFwaXNwZWMKCldoZW4gdXNpbmcgdGhlIG1hcnNobWFsbG93IHBsdWdpbiwgZW5zdXJlIGEgY29tcGF0aWJsZSBtYXJzaG1hbGxvdyB2ZXJzaW9uIGlzIHVzZWQ6IDo6CgogICAgJCBwaXAgaW5zdGFsbCAtVSBhcGlzcGVjW21hcnNobWFsbG93XQoKRXhhbXBsZSBBcHBsaWNhdGlvbgo9PT09PT09PT09PT09PT09PT09CgouLiBjb2RlLWJsb2NrOjogcHl0aG9uCgogICAgZnJvbSBhcGlzcGVjIGltcG9ydCBBUElTcGVjCiAgICBmcm9tIGFwaXNwZWMuZXh0Lm1hcnNobWFsbG93IGltcG9ydCBNYXJzaG1hbGxvd1BsdWdpbgogICAgZnJvbSBhcGlzcGVjX3dlYmZyYW1ld29ya3MuZmxhc2sgaW1wb3J0IEZsYXNrUGx1Z2luCiAgICBmcm9tIGZsYXNrIGltcG9ydCBGbGFzawogICAgZnJvbSBtYXJzaG1hbGxvdyBpbXBvcnQgU2NoZW1hLCBmaWVsZHMKCgogICAgIyBDcmVhdGUgYW4gQVBJU3BlYwogICAgc3BlYyA9IEFQSVNwZWMoCiAgICAgICAgdGl0bGU9IlN3YWdnZXIgUGV0c3RvcmUiLAogICAgICAgIHZlcnNpb249IjEuMC4wIiwKICAgICAgICBvcGVuYXBpX3ZlcnNpb249IjMuMC4yIiwKICAgICAgICBwbHVnaW5zPVtGbGFza1BsdWdpbigpLCBNYXJzaG1hbGxvd1BsdWdpbigpXSwKICAgICkKCgogICAgIyBPcHRpb25hbCBtYXJzaG1hbGxvdyBzdXBwb3J0CiAgICBjbGFzcyBDYXRlZ29yeVNjaGVtYShTY2hlbWEpOgogICAgICAgIGlkID0gZmllbGRzLkludCgpCiAgICAgICAgbmFtZSA9IGZpZWxkcy5TdHIocmVxdWlyZWQ9VHJ1ZSkKCgogICAgY2xhc3MgUGV0U2NoZW1hKFNjaGVtYSk6CiAgICAgICAgY2F0ZWdvcnkgPSBmaWVsZHMuTGlzdChmaWVsZHMuTmVzdGVkKENhdGVnb3J5U2NoZW1hKSkKICAgICAgICBuYW1lID0gZmllbGRzLlN0cigpCgoKICAgICMgT3B0aW9uYWwgc2VjdXJpdHkgc2NoZW1lIHN1cHBvcnQKICAgIGFwaV9rZXlfc2NoZW1lID0geyJ0eXBlIjogImFwaUtleSIsICJpbiI6ICJoZWFkZXIiLCAibmFtZSI6ICJYLUFQSS1LZXkifQogICAgc3BlYy5jb21wb25lbnRzLnNlY3VyaXR5X3NjaGVtZSgiQXBpS2V5QXV0aCIsIGFwaV9rZXlfc2NoZW1lKQoKCiAgICAjIE9wdGlvbmFsIEZsYXNrIHN1cHBvcnQKICAgIGFwcCA9IEZsYXNrKF9fbmFtZV9fKQoKCiAgICBAYXBwLnJvdXRlKCIvcmFuZG9tIikKICAgIGRlZiByYW5kb21fcGV0KCk6CiAgICAgICAgIiIiQSBjdXRlIGZ1cnJ5IGFuaW1hbCBlbmRwb2ludC4KICAgICAgICAtLS0KICAgICAgICBnZXQ6CiAgICAgICAgICBkZXNjcmlwdGlvbjogR2V0IGEgcmFuZG9tIHBldAogICAgICAgICAgc2VjdXJpdHk6CiAgICAgICAgICAgIC0gQXBpS2V5QXV0aDogW10KICAgICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgICAgMjAwOgogICAgICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgICAgICBzY2hlbWE6IFBldFNjaGVtYQogICAgICAgICIiIgogICAgICAgIHBldCA9IGdldF9yYW5kb21fcGV0KCkKICAgICAgICByZXR1cm4gUGV0U2NoZW1hKCkuZHVtcChwZXQpCgoKICAgICMgUmVnaXN0ZXIgdGhlIHBhdGggYW5kIHRoZSBlbnRpdGllcyB3aXRoaW4gaXQKICAgIHdpdGggYXBwLnRlc3RfcmVxdWVzdF9jb250ZXh0KCk6CiAgICAgICAgc3BlYy5wYXRoKHZpZXc9cmFuZG9tX3BldCkKCgpHZW5lcmF0ZWQgT3BlbkFQSSBTcGVjCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICBpbXBvcnQganNvbgoKICAgIHByaW50KGpzb24uZHVtcHMoc3BlYy50b19kaWN0KCksIGluZGVudD0yKSkKICAgICMgewogICAgIyAgICJwYXRocyI6IHsKICAgICMgICAgICIvcmFuZG9tIjogewogICAgIyAgICAgICAiZ2V0IjogewogICAgIyAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJHZXQgYSByYW5kb20gcGV0IiwKICAgICMgICAgICAgICAic2VjdXJpdHkiOiBbCiAgICAjICAgICAgICAgICB7CiAgICAjICAgICAgICAgICAgICJBcGlLZXlBdXRoIjogW10KICAgICMgICAgICAgICAgIH0KICAgICMgICAgICAgICBdLAogICAgIyAgICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAjICAgICAgICAgICAiMjAwIjogewogICAgIyAgICAgICAgICAgICAiY29udGVudCI6IHsKICAgICMgICAgICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICMgICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAjICAgICAgICAgICAgICAgICAgICIkcmVmIjogIiMvY29tcG9uZW50cy9zY2hlbWFzL1BldCIKICAgICMgICAgICAgICAgICAgICAgIH0KICAgICMgICAgICAgICAgICAgICB9CiAgICAjICAgICAgICAgICAgIH0KICAgICMgICAgICAgICAgIH0KICAgICMgICAgICAgICB9CiAgICAjICAgICAgIH0KICAgICMgICAgIH0KICAgICMgICB9LAogICAgIyAgICJ0YWdzIjogW10sCiAgICAjICAgImluZm8iOiB7CiAgICAjICAgICAidGl0bGUiOiAiU3dhZ2dlciBQZXRzdG9yZSIsCiAgICAjICAgICAidmVyc2lvbiI6ICIxLjAuMCIKICAgICMgICB9LAogICAgIyAgICJvcGVuYXBpIjogIjMuMC4yIiwKICAgICMgICAiY29tcG9uZW50cyI6IHsKICAgICMgICAgICJwYXJhbWV0ZXJzIjoge30sCiAgICAjICAgICAicmVzcG9uc2VzIjoge30sCiAgICAjICAgICAic2NoZW1hcyI6IHsKICAgICMgICAgICAgIkNhdGVnb3J5IjogewogICAgIyAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAjICAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAjICAgICAgICAgICAibmFtZSI6IHsKICAgICMgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgIyAgICAgICAgICAgfSwKICAgICMgICAgICAgICAgICJpZCI6IHsKICAgICMgICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsCiAgICAjICAgICAgICAgICAgICJmb3JtYXQiOiAiaW50MzIiCiAgICAjICAgICAgICAgICB9CiAgICAjICAgICAgICAgfSwKICAgICMgICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAjICAgICAgICAgICAibmFtZSIKICAgICMgICAgICAgICBdCiAgICAjICAgICAgIH0sCiAgICAjICAgICAgICJQZXQiOiB7CiAgICAjICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICMgICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICMgICAgICAgICAgICJuYW1lIjogewogICAgIyAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAjICAgICAgICAgICB9LAogICAgIyAgICAgICAgICAgImNhdGVnb3J5IjogewogICAgIyAgICAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCiAgICAjICAgICAgICAgICAgICJpdGVtcyI6IHsKICAgICMgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9DYXRlZ29yeSIKICAgICMgICAgICAgICAgICAgfQogICAgIyAgICAgICAgICAgfQogICAgIyAgICAgICAgIH0KICAgICMgICAgICAgfQogICAgIyAgICAgICAic2VjdXJpdHlTY2hlbWVzIjogewogICAgIyAgICAgICAgICAiQXBpS2V5QXV0aCI6IHsKICAgICMgICAgICAgICAgICAidHlwZSI6ICJhcGlLZXkiLAogICAgIyAgICAgICAgICAgICJpbiI6ICJoZWFkZXIiLAogICAgIyAgICAgICAgICAgICJuYW1lIjogIlgtQVBJLUtleSIKICAgICMgICAgICAgICB9CiAgICAjICAgICAgIH0KICAgICMgICAgIH0KICAgICMgICB9CiAgICAjIH0KCiAgICBwcmludChzcGVjLnRvX3lhbWwoKSkKICAgICMgY29tcG9uZW50czoKICAgICMgICBwYXJhbWV0ZXJzOiB7fQogICAgIyAgIHJlc3BvbnNlczoge30KICAgICMgICBzY2hlbWFzOgogICAgIyAgICAgQ2F0ZWdvcnk6CiAgICAjICAgICAgIHByb3BlcnRpZXM6CiAgICAjICAgICAgICAgaWQ6IHtmb3JtYXQ6IGludDMyLCB0eXBlOiBpbnRlZ2VyfQogICAgIyAgICAgICAgIG5hbWU6IHt0eXBlOiBzdHJpbmd9CiAgICAjICAgICAgIHJlcXVpcmVkOiBbbmFtZV0KICAgICMgICAgICAgdHlwZTogb2JqZWN0CiAgICAjICAgICBQZXQ6CiAgICAjICAgICAgIHByb3BlcnRpZXM6CiAgICAjICAgICAgICAgY2F0ZWdvcnk6CiAgICAjICAgICAgICAgICBpdGVtczogeyRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9DYXRlZ29yeSd9CiAgICAjICAgICAgICAgICB0eXBlOiBhcnJheQogICAgIyAgICAgICAgIG5hbWU6IHt0eXBlOiBzdHJpbmd9CiAgICAjICAgICAgIHR5cGU6IG9iamVjdAogICAgIyAgIHNlY3VyaXR5U2NoZW1lczoKICAgICMgICAgIEFwaUtleUF1dGg6CiAgICAjICAgICAgIGluOiBoZWFkZXIKICAgICMgICAgICAgbmFtZTogWC1BUEktS0VZCiAgICAjICAgICAgIHR5cGU6IGFwaUtleQogICAgIyBpbmZvOiB7dGl0bGU6IFN3YWdnZXIgUGV0c3RvcmUsIHZlcnNpb246IDEuMC4wfQogICAgIyBvcGVuYXBpOiAzLjAuMgogICAgIyBwYXRoczoKICAgICMgICAvcmFuZG9tOgogICAgIyAgICAgZ2V0OgogICAgIyAgICAgICBkZXNjcmlwdGlvbjogR2V0IGEgcmFuZG9tIHBldAogICAgIyAgICAgICByZXNwb25zZXM6CiAgICAjICAgICAgICAgMjAwOgogICAgIyAgICAgICAgICAgY29udGVudDoKICAgICMgICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICMgICAgICAgICAgICAgICBzY2hlbWE6IHskcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0J30KICAgICMgICAgICAgc2VjdXJpdHk6CiAgICAjICAgICAgIC0gQXBpS2V5QXV0aDogW10KICAgICMgdGFnczogW10KCgpEb2N1bWVudGF0aW9uCj09PT09PT09PT09PT0KCkRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vYXBpc3BlYy5yZWFkdGhlZG9jcy5pby8gLgoKRWNvc3lzdGVtCj09PT09PT09PQoKQSBsaXN0IG9mIGFwaXNwZWMtcmVsYXRlZCBsaWJyYXJpZXMgY2FuIGJlIGZvdW5kIGF0IHRoZSBHaXRIdWIgd2lraSBoZXJlOgoKaHR0cHM6Ly9naXRodWIuY29tL21hcnNobWFsbG93LWNvZGUvYXBpc3BlYy93aWtpL0Vjb3N5c3RlbQoKU3VwcG9ydCBhcGlzcGVjCj09PT09PT09PT09PT09PQoKYXBpc3BlYyBpcyBtYWludGFpbmVkIGJ5IGEgZ3JvdXAgb2YKYHZvbHVudGVlcnMgPGh0dHBzOi8vYXBpc3BlYy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvYXV0aG9ycy5odG1sPmBfLgpJZiB5b3UnZCBsaWtlIHRvIHN1cHBvcnQgdGhlIGZ1dHVyZSBvZiB0aGUgcHJvamVjdCwgcGxlYXNlIGNvbnNpZGVyCmNvbnRyaWJ1dGluZyB0byBvdXIgT3BlbiBDb2xsZWN0aXZlOgoKLi4gaW1hZ2U6OiBodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9tYXJzaG1hbGxvdy9kb25hdGUvYnV0dG9uLnBuZwogICAgOnRhcmdldDogaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vbWFyc2htYWxsb3cKICAgIDp3aWR0aDogMjAwCiAgICA6YWx0OiBEb25hdGUgdG8gb3VyIGNvbGxlY3RpdmUKClByb2Zlc3Npb25hbCBTdXBwb3J0Cj09PT09PT09PT09PT09PT09PT09CgpQcm9mZXNzaW9uYWxseS1zdXBwb3J0ZWQgYXBpc3BlYyBpcyBhdmFpbGFibGUgdGhyb3VnaCB0aGUKYFRpZGVsaWZ0IFN1YnNjcmlwdGlvbiA8aHR0cHM6Ly90aWRlbGlmdC5jb20vc3Vic2NyaXB0aW9uL3BrZy9weXBpLWFwaXNwZWM/dXRtX3NvdXJjZT1weXBpLWFwaXNwZWMmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249cmVhZG1lPmBfLgoKVGlkZWxpZnQgZ2l2ZXMgc29mdHdhcmUgZGV2ZWxvcG1lbnQgdGVhbXMgYSBzaW5nbGUgc291cmNlIGZvciBwdXJjaGFzaW5nIGFuZCBtYWludGFpbmluZyB0aGVpciBzb2Z0d2FyZSwKd2l0aCBwcm9mZXNzaW9uYWwtZ3JhZGUgYXNzdXJhbmNlcyBmcm9tIHRoZSBleHBlcnRzIHdobyBrbm93IGl0IGJlc3QsCndoaWxlIHNlYW1sZXNzbHkgaW50ZWdyYXRpbmcgd2l0aCBleGlzdGluZyB0b29scy4gW2BHZXQgcHJvZmVzc2lvbmFsIHN1cHBvcnRgX10KCi4uIF9gR2V0IHByb2Zlc3Npb25hbCBzdXBwb3J0YDogaHR0cHM6Ly90aWRlbGlmdC5jb20vc3Vic2NyaXB0aW9uL3BrZy9weXBpLWFwaXNwZWM/dXRtX3NvdXJjZT1weXBpLWFwaXNwZWMmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249cmVhZG1lCgouLiBpbWFnZTo6IGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzIzNzk2NTAvNDUxMjYwMzItNTBiNjk4ODAtYjEzZi0xMWU4LTljMmMtYWJkMTZjNDMzNDk1LnBuZwogICAgOnRhcmdldDogaHR0cHM6Ly90aWRlbGlmdC5jb20vc3Vic2NyaXB0aW9uL3BrZy9weXBpLWFwaXNwZWM/dXRtX3NvdXJjZT1weXBpLWFwaXNwZWMmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249cmVhZG1lCiAgICA6YWx0OiBHZXQgc3VwcG9ydGVkIGFwaXNwZWMgd2l0aCBUaWRlbGlmdAoKU2VjdXJpdHkgQ29udGFjdCBJbmZvcm1hdGlvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpUbyByZXBvcnQgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LCBwbGVhc2UgdXNlIHRoZQpgVGlkZWxpZnQgc2VjdXJpdHkgY29udGFjdCA8aHR0cHM6Ly90aWRlbGlmdC5jb20vc2VjdXJpdHk+YF8uClRpZGVsaWZ0IHdpbGwgY29vcmRpbmF0ZSB0aGUgZml4IGFuZCBkaXNjbG9zdXJlLgoKUHJvamVjdCBMaW5rcwo9PT09PT09PT09PT09CgotIERvY3M6IGh0dHBzOi8vYXBpc3BlYy5yZWFkdGhlZG9jcy5pby8KLSBDaGFuZ2Vsb2c6IGh0dHBzOi8vYXBpc3BlYy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvY2hhbmdlbG9nLmh0bWwKLSBDb250cmlidXRpbmcgR3VpZGVsaW5lczogaHR0cHM6Ly9hcGlzcGVjLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9jb250cmlidXRpbmcuaHRtbAotIFB5UEk6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYXBpc3BlYwotIElzc3VlczogaHR0cHM6Ly9naXRodWIuY29tL21hcnNobWFsbG93LWNvZGUvYXBpc3BlYy9pc3N1ZXMKCgpMaWNlbnNlCj09PT09PT0KCk1JVCBsaWNlbnNlZC4gU2VlIHRoZSBidW5kbGVkIGBMSUNFTlNFIDxodHRwczovL2dpdGh1Yi5jb20vbWFyc2htYWxsb3ctY29kZS9hcGlzcGVjL2Jsb2IvZGV2L0xJQ0VOU0U+YF8gZmlsZSBmb3IgbW9yZSBkZXRhaWxzLgo= readmeEtag: '"d472589f1773e1559028a9171e8e5d3442bc2395"' readmeLastModified: Tue, 07 Jan 2025 05:10:58 GMT repositoryId: 25413181 description: >- A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification).. created: '2014-10-18T23:48:49Z' updated: '2026-02-03T17:39:01Z' language: Python archived: false stars: 1215 watchers: 21 forks: 185 owner: marshmallow-code logo: https://avatars.githubusercontent.com/u/10334301?v=4 license: MIT repoEtag: '"d4a983372c78f54baeaf27543d5ac80c7a8e94ee30b97ad37742dd75f8196f4a"' repoLastModified: Tue, 03 Feb 2026 17:39:01 GMT foundInMaster: true category: Parsers id: c1528764f05dd585ca47886dd6dabb86 - source: openapi3 tags repository: https://github.com/asteasolutions/zod-to-openapi v3: true id: 360d2acbe3dfa2f35dbc74551fda7829 repositoryMetadata: base64Readme: >- IyBab2QgdG8gT3BlbkFQSQoKWyFbbnBtIHZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGFzdGVhc29sdXRpb25zL3pvZC10by1vcGVuYXBpKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQGFzdGVhc29sdXRpb25zL3pvZC10by1vcGVuYXBpKQpbIVtucG0gZG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kbS9AYXN0ZWFzb2x1dGlvbnMvem9kLXRvLW9wZW5hcGkpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYXN0ZWFzb2x1dGlvbnMvem9kLXRvLW9wZW5hcGkpCgo+IFshSU1QT1JUQU5UXQo+ICoqRm9yIFpvZCB2MyBzdXBwb3J0LCBwbGVhc2UgdXNlIHRoZSB2Ny4zLjQgdmVyc2lvbi4gSG93ZXZlciBrZWVwIGluIG1pbmQgdGhhdCB3ZSBkbyBub3QgaW50ZW5kIHRvIGFjdGl2ZWx5IHN1cHBvcnQgdGhhdCB2ZXJzaW9uIGdvaW5nIGZvcndhcmQqKiBJbnN0YWxsIHdpdGg6IGBucG0gaW5zdGFsbCBAYXN0ZWFzb2x1dGlvbnMvem9kLXRvLW9wZW5hcGlANy4zLjRgCgpBIGxpYnJhcnkgdGhhdCB1c2VzIFt6b2Qgc2NoZW1hc10oaHR0cHM6Ly9naXRodWIuY29tL2NvbGluaGFja3Mvem9kKSB0byBnZW5lcmF0ZSBhbiBPcGVuIEFQSSBTd2FnZ2VyIGRvY3VtZW50YXRpb24uCgoxLiBbUHVycG9zZSBhbmQgcXVpY2sgZXhhbXBsZV0oI3B1cnBvc2UtYW5kLXF1aWNrLWV4YW1wbGUpCjIuIFtVc2FnZV0oI3VzYWdlKQogICAxLiBbSW5zdGFsbGF0aW9uXSgjaW5zdGFsbGF0aW9uKQogICAyLiBbVGhlIGBvcGVuYXBpYCBtZXRob2RdKCN0aGUtb3BlbmFwaS1tZXRob2QpCiAgIDMuIFtUaGUgUmVnaXN0cnldKCN0aGUtcmVnaXN0cnkpCiAgIDQuIFtUaGUgR2VuZXJhdG9yXSgjdGhlLWdlbmVyYXRvcikKICAgNS4gW0RlZmluaW5nIHNjaGVtYXNdKCNkZWZpbmluZy1zY2hlbWFzKQogICA2LiBbRGVmaW5pbmcgcm91dGVzICYgd2ViaG9va3NdKCNkZWZpbmluZy1yb3V0ZXMtLXdlYmhvb2tzKQogICA3LiBbRGVmaW5pbmcgY3VzdG9tIGNvbXBvbmVudHNdKCNkZWZpbmluZy1jdXN0b20tY29tcG9uZW50cykKICAgOC4gW0EgZnVsbCBleGFtcGxlXSgjYS1mdWxsLWV4YW1wbGUpCiAgIDkuIFtBZGRpbmcgaXQgYXMgcGFydCBvZiB5b3VyIGJ1aWxkXSgjYWRkaW5nLWl0LWFzLXBhcnQtb2YteW91ci1idWlsZCkKICAgMTAuIFtVc2luZyBzY2hlbWFzIHZzIGEgcmVnaXN0cnldKCN1c2luZy1zY2hlbWFzLXZzLWEtcmVnaXN0cnkpCiAgIDExLiBbR2VuZXJhdGlvbiBvcHRpb25zXSgjZ2VuZXJhdGlvbi1vcHRpb25zKQozLiBbWm9kIHNjaGVtYSB0eXBlc10oI3pvZC1zY2hlbWEtdHlwZXMpCiAgIDEuIFtTdXBwb3J0ZWQgdHlwZXNdKCNzdXBwb3J0ZWQtdHlwZXMpCiAgIDIuIFtVbnN1cHBvcnRlZCB0eXBlc10oI3Vuc3VwcG9ydGVkLXR5cGVzKQo0LiBbVGVjaG5vbG9naWVzXSgjdGVjaG5vbG9naWVzKQoKV2Uga2VlcCBhIGNoYW5nZWxvZyBhcyBwYXJ0IG9mIHRoZSBbR2l0SHViIHJlbGVhc2VzXShodHRwczovL2dpdGh1Yi5jb20vYXN0ZWFzb2x1dGlvbnMvem9kLXRvLW9wZW5hcGkvcmVsZWFzZXMpLgoKIyMgUHVycG9zZSBhbmQgcXVpY2sgZXhhbXBsZQoKV2UgYXQgW0FzdGVhIFNvbHV0aW9uc10oaHR0cHM6Ly9hc3RlYXNvbHV0aW9ucy5jb20vKSBtYWRlIHRoaXMgbGlicmFyeSBiZWNhdXNlIHdlIHVzZSBbem9kXShodHRwczovL2dpdGh1Yi5jb20vY29saW5oYWNrcy96b2QpIGZvciB2YWxpZGF0aW9uIGluIG91ciBBUElzIGFuZCBhcmUgdGlyZWQgb2YgdGhlIGR1cGxpY2F0aW9uIHRvIGFsc28gc3VwcG9ydCBhIHNlcGFyYXRlIE9wZW5BUEkgZGVmaW5pdGlvbiB0aGF0IG11c3QgYmUga2VwdCBpbiBzeW5jLiBVc2luZyBgem9kLXRvLW9wZW5hcGlgLCB3ZSBnZW5lcmF0ZSBPcGVuQVBJIGRlZmluaXRpb25zIGRpcmVjdGx5IGZyb20gb3VyIHpvZCBzY2hlbWFzLCB0aHVzIGhhdmluZyBhIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGguCgpTaW1wbHkgcHV0LCBpdCB0dXJucyB0aGlzOgoKYGBgdHMKY29uc3QgVXNlclNjaGVtYSA9IHoKICAub2JqZWN0KHsKICAgIGlkOiB6LnN0cmluZygpLm9wZW5hcGkoeyBleGFtcGxlOiAnMTIxMjEyMScgfSksCiAgICBuYW1lOiB6LnN0cmluZygpLm9wZW5hcGkoeyBleGFtcGxlOiAnSm9obiBEb2UnIH0pLAogICAgYWdlOiB6Lm51bWJlcigpLm9wZW5hcGkoeyBleGFtcGxlOiA0MiB9KSwKICB9KQogIC5vcGVuYXBpKCdVc2VyJyk7CgpyZWdpc3RyeS5yZWdpc3RlclBhdGgoewogIG1ldGhvZDogJ2dldCcsCiAgcGF0aDogJy91c2Vycy97aWR9JywKICBzdW1tYXJ5OiAnR2V0IGEgc2luZ2xlIHVzZXInLAogIHJlcXVlc3Q6IHsKICAgIHBhcmFtczogei5vYmplY3QoeyBpZDogei5zdHJpbmcoKSB9KSwKICB9LAoKICByZXNwb25zZXM6IHsKICAgIDIwMDogewogICAgICBkZXNjcmlwdGlvbjogJ09iamVjdCB3aXRoIHVzZXIgZGF0YS4nLAogICAgICBjb250ZW50OiB7CiAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7CiAgICAgICAgICBzY2hlbWE6IFVzZXJTY2hlbWEsCiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sCiAgfSwKfSk7CmBgYAoKaW50byB0aGlzOgoKYGBgeWFtbApjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBVc2VyOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZXhhbXBsZTogJzEyMTIxMjEnCiAgICAgICAgbmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZXhhbXBsZTogSm9obiBEb2UKICAgICAgICBhZ2U6CiAgICAgICAgICB0eXBlOiBudW1iZXIKICAgICAgICAgIGV4YW1wbGU6IDQyCiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gaWQKICAgICAgICAtIG5hbWUKICAgICAgICAtIGFnZQoKL3VzZXJzL3tpZH06CiAgZ2V0OgogICAgc3VtbWFyeTogR2V0IGEgc2luZ2xlIHVzZXIKICAgIHBhcmFtZXRlcnM6CiAgICAgIC0gaW46IHBhdGgKICAgICAgICBuYW1lOiBpZAogICAgICAgIHNjaGVtYToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICByZXNwb25zZXM6CiAgICAgICcyMDAnOgogICAgICAgIGRlc2NyaXB0aW9uOiBPYmplY3Qgd2l0aCB1c2VyIGRhdGEKICAgICAgICBjb250ZW50OgogICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Vc2VyJwpgYGAKCmFuZCB5b3UgY2FuIHN0aWxsIHVzZSBgVXNlclNjaGVtYWAgYW5kIHRoZSBgcmVxdWVzdC5wYXJhbXNgIG9iamVjdCB0byB2YWxpZGF0ZSB0aGUgaW5wdXQgb2YgeW91ciBBUEkuCgojIyBVc2FnZQoKIyMjIEluc3RhbGxhdGlvbgoKYGBgc2hlbGwKbnBtIGluc3RhbGwgQGFzdGVhc29sdXRpb25zL3pvZC10by1vcGVuYXBpCiMgb3IKeWFybiBhZGQgQGFzdGVhc29sdXRpb25zL3pvZC10by1vcGVuYXBpCmBgYAoKIyMjIFRoZSBgb3BlbmFwaWAgbWV0aG9kCgpUbyBrZWVwIG9wZW5hcGkgZGVmaW5pdGlvbnMgbmF0dXJhbCwgd2UgYWRkIGFuIGBvcGVuYXBpYCBtZXRob2QgdG8gYWxsIFpvZCBvYmplY3RzLiBJdHMgaWRlYSBpcyB0byBwcm92aWRlIGEgY29udmVuaWVudCB3YXkgdG8gcHJvdmlkZSBPcGVuQXBpIHNwZWNpZmljIGRhdGEuCkl0IGhhcyB0aHJlZSBvdmVybG9hZHM6CgoxLiBgLm9wZW5hcGkoeyBba2V5XTogdmFsdWUgfSlgIC0gdGhpcyB3YXkgd2UgY2FuIHNwZWNpZnkgYW55IE9wZW5BcGkgZmllbGRzLiBGb3IgZXhhbXBsZSBgei5udW1iZXIoKS5vcGVuYXBpKHsgZXhhbXBsZTogMyB9KWAgd291bGQgYWRkIGBleGFtcGxlOiAzYCB0byB0aGUgZ2VuZXJhdGVkIHNjaGVtYS4KMi4gYC5vcGVuYXBpKCI8c2NoZW1hLW5hbWU+IilgIC0gdGhpcyB3YXkgd2Ugc3BlY2lmeSB0aGF0IHRoZSB1bmRlcmx5aW5nIHpvZCBzY2hlbWEgc2hvdWxkIGJlICJyZWdpc3RlcmVkIiBpLmUgYWRkZWQgaW50byBgY29tcG9uZW50cy9zY2hlbWFzYCB3aXRoIHRoZSBwcm92aWRlZCBgPHNjaGVtYS1uYW1lPmAKMy4gYC5vcGVuYXBpKCI8c2NoZW1hLW5hbWU+IiwgeyBba2V5XTogdmFsdWUgfSlgIC0gdGhpcyB1bml0ZXMgdGhlIHR3byB1c2UgY2FzZXMgYWJvdmUgc28gdGhhdCB3ZSBjYW4gc3BlY2lmeSBib3RoIGEgcmVnaXN0cmF0aW9uIGA8c2NoZW1hLW5hbWU+YCBhbmQgYWRkaXRpb25hbCBtZXRhZGF0YQoKRm9yIHRoaXMgdG8gd29yaywgeW91IG5lZWQgdG8gY2FsbCBgZXh0ZW5kWm9kV2l0aE9wZW5BcGlgIG9uY2UgaW4geW91ciBwcm9qZWN0LgoKVGhpcyBzaG91bGQgYmUgZG9uZSBvbmx5IG9uY2UgaW4gYSBjb21tb24tZW50cnlwb2ludCBmaWxlIG9mIHlvdXIgcHJvamVjdCAoZm9yIGV4YW1wbGUgYW4gYGluZGV4LnRzYC9gYXBwLnRzYCkuIElmIHlvdSdyZSB1c2luZyB0cmVlLXNoYWtpbmcgd2l0aCBXZWJwYWNrLCBtYXJrIHRoYXQgZmlsZSBhcyBoYXZpbmcgc2lkZS1lZmZlY3RzLgoKSXQgY2FuIGJlIGJpdCB0cmlja3kgdG8gYWNoaWV2ZSB0aGlzIGluIHlvdXIgY29kZWJhc2UsIGJlY2F1c2UgKnJlcXVpcmUqIGlzIHN5bmNocm9ub3VzIGFuZCAqaW1wb3J0KiBpcyBhIGFzeW5jLgoKIyMjIyBVc2luZyB6b2QncyAubWV0YQpTdGFydGluZyBmcm9tIHY4IChhbmQgem9kIHY0KSB5b3UgY2FuIGFsc28gdXNlIHpvZCdzIC5tZXRhIHRvIHByb3ZpZGUgbWV0YWRhdGEgYW5kIHdlIHdpbGwgcmVhZCBpdCBhY2NvcmRpbmdseS4KCldpdGggem9kJ3MgbmV3IG9wdGlvbiBmb3IgZ2VuZXJhdGluZyBKU09OIHNjaGVtYXMgYW5kIG1haW50YWluaW5nIHJlZ2lzdHJpZXMgd2UndmUgYWRkZWQgYSBwcmV0dHkgbXVjaCBzZWFtbGVzcyBzdXBwb3J0IGZvciBhbGwgbWV0YWRhdGEgaW5mb3JtYXRpb24gY29taW5nIGZyb20gYC5tZXRhYCBjYWxscyBhcyBpZiB0aGF0IHdhcyBtZXRhZGF0YSBwYXNzZWQgaW50byBgLm9wZW5hcGlgLgoKU28gdGhlIGZvbGxvd2luZyAyIHNjaGVtYXMgcHJvZHVjZSBleGFjdGx5IHRoZSBzYW1lIHJlc3VsdHM6CmBgYHRzCmNvbnN0IHNjaGVtYSA9IHoKICAuc3RyaW5nKCkKICAub3BlbmFwaSgnU2NoZW1hJywgeyBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIHVzZXInLCBleGFtcGxlOiAnVGVzdCcgfSk7Cgpjb25zdCBzY2hlbWEyID0gegogIC5zdHJpbmcoKQogIC5tZXRhKHsgaWQ6ICdTY2hlbWEyJywgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSB1c2VyJywgZXhhbXBsZTogJ1Rlc3QnIH0pOwpgYGAKCj4gTm90ZTogVGhpcyBhbHNvIG1lYW5zIHRoYXQgeW91IHVubGVzcyB5b3UgYXJlIHVzaW5nIHNvbWUgb2Ygb3VyIG1vcmUgY29tcGxpY2F0ZWQgc2NlbmFyaW9zIHlvdSBjb3VsZCBldmVuIGdlbmVyYXRlIGEgc2NoZW1hIHdpdGhvdXQgdXNpbmcgYGV4dGVuZFpvZFdpdGhPcGVuQXBpYCBpbiB5b3VyIGNvZGViYXNlIGFuZCBvbmx5IHJlbHkgb24gYC5tZXRhYCB0byBwcm92aWRlIGFkZGl0aW9uYWwgbWV0YWRhdGEgaW5mb3JtYXRpb24gYW5kIHNjaGVtYSBuYW1lcyAodXNpbmcgdGhlIGBpZGAgcHJvcGVydHkpLgoKIyMjIyBTY2VuYXJpb3MgdGhhdCByZXF1aXJlIHVzaW5nIGBleHRlbmRab2RXaXRoT3BlbkFwaWAgYW5kIGAub3BlbmFwaWAKMS4gV2hlbiBleHRlbmRpbmcgcmVnaXN0ZXJlZCBzY2hlbWFzIHRoYXQgYXJlIGJvdGggcmVnaXN0ZXJlZCBhbmQgd2FudCB0aGUgZXh0ZW5kZWQgb25lIHRvIHVzZSBgYW55T2ZgIGkuZToKCmBgYHRzCmNvbnN0IHNjaGVtYSA9IHoub2JqZWN0KHsgbmFtZTogei5zdHJpbmcoKSB9KS5vcGVuYXBpKCdTY2hlbWEnKTsKCmNvbnN0IHNjaGVtYTIgPSBzY2hlbWEuZXh0ZW5kKHsgYWdlOiB6Lm51bWJlcigpIH0pLm9wZW5hcGkoJ1NjaGVtYTInKTsgLy8gdGhpcyBvbmUgd291bGQgaGF2ZSBhbnlPZiBhbmQgYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0IG9uZQpgYGAKMi4gRGVmaW5pbmcgcGFyYW1ldGVyIG1ldGFkYXRhLiBTbyBmb3IgZXhhbXBsZSB3aGVuIGRvaW5nOgpgYGB0cwpyZWdpc3RyeS5yZWdpc3RlclBhdGgoewogIC8vIC4uLgogIHJlcXVlc3Q6IHsKICAgIHF1ZXJ5OiB6Lm9iamVjdCh7CiAgICAgIG5hbWU6IHouc3RyaW5nKCkub3BlbmFwaSh7CiAgICAgICAgZGVzY3JpcHRpb246ICdTY2hlbWEgbGV2ZWwgZGVzY3JpcHRpb24nLAogICAgICAgIHBhcmFtOiB7IGRlc2NyaXB0aW9uOiAnUGFyYW0gbGV2ZWwgZGVzY3JpcHRpb24nIH0sCiAgICAgIH0pLAogICAgfSksCiAgfSwKfSk7CmBgYAoKdGhlIHJlc3VsdCB3b3VsZCBiZToKYGBgdHMKICAicGFyYW1ldGVycyI6IFsKICAgICAgewogICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNjaGVtYSBsZXZlbCBkZXNjcmlwdGlvbiIgLy8gY29tZXMgZGlyZWN0bHkgZnJvbSBkZXNjcmlwdGlvbgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiUGFyYW0gbGV2ZWwgZGVzY3JpcHRpb24iLCAvLyBjb21lcyBmcm9tIHBhcmFtLmRlc2NyaXB0aW9uCiAgICAgICAgIm5hbWUiOiAibmFtZSIsCiAgICAgICAgImluIjogInF1ZXJ5IgogICAgICB9CiAgXSwKYGBgCgoKIyMjIFRoZSBiYXNpYyBpZGVhCgpgYGB0cwppbXBvcnQgeyBleHRlbmRab2RXaXRoT3BlbkFwaSB9IGZyb20gJ0Bhc3RlYXNvbHV0aW9ucy96b2QtdG8tb3BlbmFwaSc7CmltcG9ydCB7IHogfSBmcm9tICd6b2QnOwoKZXh0ZW5kWm9kV2l0aE9wZW5BcGkoeik7CgovLyBXZSBjYW4gbm93IHVzZSBgLm9wZW5hcGkoKWAgdG8gc3BlY2lmeSBPcGVuQVBJIG1ldGFkYXRhCnouc3RyaW5nKCkub3BlbmFwaSh7IGRlc2NyaXB0aW9uOiAnU29tZSBzdHJpbmcnIH0pOwpgYGAKCiMjIyBFeGFtcGxlIDE6IENhbGxpbmcgdGhlIG9wZW5hcGktZXh0ZW5zaW9uIHVzaW5nIHRzeAoKYGBgCi8vem9kLWV4dGVuZC50cwoKaW1wb3J0IHsgZXh0ZW5kWm9kV2l0aE9wZW5BcGkgfSBmcm9tICdAYXN0ZWFzb2x1dGlvbnMvem9kLXRvLW9wZW5hcGknOwppbXBvcnQgeyB6IH0gZnJvbSAnem9kJzsKCmV4dGVuZFpvZFdpdGhPcGVuQXBpKHopOwoKLy8gcGFja2FnZS5qc29uCgogICJzY3JpcHRzIjogewogICAgInN0YXJ0IjogInRzeCAtLWltcG9ydCAuL3pvZC1leHRlbmQudHMgLi9pbmRleC50cyIsCmBgYAoKIyMjIEV4YW1wbGUgMiAtIHJlcXVpcmUtc3ludGF4CgpgYGAKaW1wb3J0IHsgZXh0ZW5kWm9kV2l0aE9wZW5BcGkgfSBmcm9tICdAYXN0ZWFzb2x1dGlvbnMvem9kLXRvLW9wZW5hcGknOwppbXBvcnQgeyB6IH0gZnJvbSAnem9kJzsKCmV4dGVuZFpvZFdpdGhPcGVuQXBpKHopOwoKY29uc3QgeyBzdGFydFNlcnZlciB9ID0gcmVxdWlyZSgnLi9zZXJ2ZXIvc3RhcnQnKTsKc3RhcnRTZXJ2ZXIoKTsKYGBgCgoKIyMjIFRoZSBSZWdpc3RyeQoKVGhlIGBPcGVuQVBJUmVnaXN0cnlgIGlzIGEgdXRpbGl0eSB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbGxlY3QgZGVmaW5pdGlvbnMgd2hpY2ggd291bGQgbGF0ZXIgYmUgcGFzc2VkIHRvIGEgYE9wZW5BcGlHZW5lcmF0b3JWM2Agb3IgYE9wZW5BcGlHZW5lcmF0b3JWMzFgIGluc3RhbmNlLgoKYGBgdHMKaW1wb3J0IHsKICBPcGVuQVBJUmVnaXN0cnksCiAgT3BlbkFwaUdlbmVyYXRvclYzLAp9IGZyb20gJ0Bhc3RlYXNvbHV0aW9ucy96b2QtdG8tb3BlbmFwaSc7Cgpjb25zdCByZWdpc3RyeSA9IG5ldyBPcGVuQVBJUmVnaXN0cnkoKTsKCi8vIFJlZ2lzdGVyIGRlZmluaXRpb25zIGhlcmUKCmNvbnN0IGdlbmVyYXRvciA9IG5ldyBPcGVuQXBpR2VuZXJhdG9yVjMocmVnaXN0cnkuZGVmaW5pdGlvbnMpOwoKcmV0dXJuIGdlbmVyYXRvci5nZW5lcmF0ZUNvbXBvbmVudHMoKTsKYGBgCgojIyMgVGhlIEdlbmVyYXRvcgoKVGhlcmUgYXJlIHR3byBnZW5lcmF0b3JzIHRoYXQgY2FuIGJlIHVzZWQgLSBgT3BlbkFwaUdlbmVyYXRvclYzYCBhbmQgYE9wZW5BcGlHZW5lcmF0b3JWMzFgLiBUaGV5IHNoYXJlIHRoZSBzYW1lIGludGVyZmFjZSBidXQgaW50ZXJuYWxseSBnZW5lcmF0ZSBzY2hlbWFzIHRoYXQgY29ycmVjdGx5IGZvbGxvdyB0aGUgZGF0YSBmb3JtYXQgZm9yIHRoZSBzcGVjaWZpYyBPcGVuIEFQSSB2ZXJzaW9uIC0gYDMuMC54YCBvciBgMy4xLnhgLiBUaGUgT3BlbiBBUEkgdmVyc2lvbiBhZmZlY3RzIGhvdyBzb21lIGNvbXBvbmVudHMgYXJlIGdlbmVyYXRlZC4KCkZvciBleGFtcGxlOiBjaGFuZ2luZyB0aGUgZ2VuZXJhdG9yIGZyb20gYE9wZW5BcGlHZW5lcmF0b3JWM2AgdG8gYE9wZW5BcGlHZW5lcmF0b3JWMzFgIHdvdWxkIHJlc3VsdCBpbiBmb2xsb3dpbmcgZGlmZmVyZW5jZXM6CgpgYGB0cwp6LnN0cmluZygpLm51bGxhYmxlKCkub3BlbmFwaSh7cmVmSWQ6ICduYW1lJ30pOwpgYGAKCmBgYHltbAojIDMuMS4wCiMgbnVsbGFibGUgaXMgaW52YWxpZCBpbiAzLjEuMCBidXQgdHlwZSBhcnJheXMgYXJlIGludmFsaWQgaW4gcHJldmlvdXMgdmVyc2lvbnMKbmFtZToKICB0eXBlOgogICAgLSAnc3RyaW5nJwogICAgLSAnbnVsbCcKCiMgMy4wLjAKbmFtZToKICB0eXBlOiAnc3RyaW5nJwogIG51bGxhYmxlOiB0cnVlCmBgYAoKQm90aCBnZW5lcmF0b3JzIHRha2UgYSBzaW5nbGUgYXJndW1lbnQgaW4gdGhlaXIgY29uc3RydWN0b3JzIC0gYW4gYXJyYXkgb2YgZGVmaW5pdGlvbnMgLSBpLmUgcmVzdWx0cyBmcm9tIHRoZSByZWdpc3RyeSBvciByZWd1bGFyIHpvZCBzY2hlbWFzLgoKVGhlIHB1YmxpYyBtZXRob2RzIG9mIGJvdGggZ2VuZXJhdG9ycyBhcmUgYXMgZm9sbG93czoKCmBnZW5lcmF0ZUNvbXBvbmVudHNgIHdpbGwgZ2VuZXJhdGUgb25seSB0aGUgYC9jb21wb25lbnRzYCBzZWN0aW9uIG9mIGFuIE9wZW5BUEkgZG9jdW1lbnQgKGUuZy4gb25seSBgc2NoZW1hc2AgYW5kIGBwYXJhbWV0ZXJzYCksIG5vdCBnZW5lcmF0aW5nIGFjdHVhbCByb3V0ZXMuCgpgZ2VuZXJhdGVEb2N1bWVudGAgd2lsbCBnZW5lcmF0ZSB0aGUgd2hvbGUgT3BlbkFQSSBkb2N1bWVudC4KCiMjIyBEZWZpbmluZyBzY2hlbWFzCgpBbiBPcGVuQXBpIHNjaGVtYSBzaG91bGQgYmUgcmVnaXN0ZXJlZCBieSB1c2luZyB0aGUgYC5vcGVuYXBpYCBtZXRob2QgYW5kIHByb3ZpZGluZyBhIG5hbWU6CgpgYGB0cwpjb25zdCBVc2VyU2NoZW1hID0gegogIC5vYmplY3QoewogICAgaWQ6IHouc3RyaW5nKCkub3BlbmFwaSh7IGV4YW1wbGU6ICcxMjEyMTIxJyB9KSwKICAgIG5hbWU6IHouc3RyaW5nKCkub3BlbmFwaSh7IGV4YW1wbGU6ICdKb2huIERvZScgfSksCiAgICBhZ2U6IHoubnVtYmVyKCkub3BlbmFwaSh7IGV4YW1wbGU6IDQyIH0pLAogIH0pCiAgLm9wZW5hcGkoJ1VzZXInKTsKCmNvbnN0IGdlbmVyYXRvciA9IG5ldyBPcGVuQXBpR2VuZXJhdG9yVjMoW1VzZXJTY2hlbWFdKTsKYGBgCgpUaGUgc2FtZSBjYW4gYmUgYWNoaWV2ZWQgYnkgdXNpbmcgdGhlIGByZWdpc3RlcmAgbWV0aG9kIG9mIGFuIGBPcGVuQVBJUmVnaXN0cnlgIGluc3RhbmNlLiBGb3IgbW9yZSBjaGVjayB0aGUgWyJVc2luZyBzY2hlbWFzIHZzIGEgcmVnaXN0cnkiXSgjdXNpbmctc2NoZW1hcy12cy1hLXJlZ2lzdHJ5KSBzZWN0aW9uCgpgYGB0cwpjb25zdCBVc2VyU2NoZW1hID0gcmVnaXN0cnkucmVnaXN0ZXIoCiAgJ1VzZXInLAogIHoub2JqZWN0KHsKICAgIGlkOiB6LnN0cmluZygpLm9wZW5hcGkoeyBleGFtcGxlOiAnMTIxMjEyMScgfSksCiAgICBuYW1lOiB6LnN0cmluZygpLm9wZW5hcGkoeyBleGFtcGxlOiAnSm9obiBEb2UnIH0pLAogICAgYWdlOiB6Lm51bWJlcigpLm9wZW5hcGkoeyBleGFtcGxlOiA0MiB9KSwKICB9KQopOwoKY29uc3QgZ2VuZXJhdG9yID0gbmV3IE9wZW5BcGlHZW5lcmF0b3JWMyhyZWdpc3RyeS5kZWZpbml0aW9ucyk7CmBgYAoKSWYgcnVuIG5vdywgYGdlbmVyYXRvci5nZW5lcmF0ZUNvbXBvbmVudHMoKWAgd2lsbCBnZW5lcmF0ZSB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKCmBgYHlhbWwKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgVXNlcjoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGV4YW1wbGU6ICcxMjEyMTIxJwogICAgICAgIG5hbWU6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGV4YW1wbGU6IEpvaG4gRG9lCiAgICAgICAgYWdlOgogICAgICAgICAgdHlwZTogbnVtYmVyCiAgICAgICAgICBleGFtcGxlOiA0MgogICAgICByZXF1aXJlZDoKICAgICAgICAtIGlkCiAgICAgICAgLSBuYW1lCiAgICAgICAgLSBhZ2UKYGBgCgpUaGUga2V5IGZvciB0aGUgc2NoZW1hIGluIHRoZSBvdXRwdXQgaXMgdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0byBgLm9wZW5hcGlgIG1ldGhvZCAob3IgdGhlIGAucmVnaXN0ZXJgKSAtIGluIHRoaXMgY2FzZTogYFVzZXJgLgoKTm90ZSB0aGF0IGBnZW5lcmF0ZUNvbXBvbmVudHNgIGRvZXMgbm90IHJldHVybiBZQU1MIGJ1dCBhIEpTIG9iamVjdCAtIHlvdSBjYW4gdGhlbiBzZXJpYWxpemUgdGhhdCBvYmplY3QgaW50byBZQU1MIG9yIEpTT04gZGVwZW5kaW5nIG9uIHlvdXIgdXNlLWNhc2UuCgpUaGUgcmVzdWx0aW5nIHNjaGVtYSBjYW4gdGhlbiBiZSByZWZlcmVuY2VkIGJ5IHVzaW5nIGAkcmVmOiAjL2NvbXBvbmVudHMvc2NoZW1hcy9Vc2VyYCBpbiBhbiBleGlzdGluZyBPcGVuQVBJIEpTT04uIFRoaXMgd2lsbCBiZSBkb25lIGF1dG9tYXRpY2FsbHkgZm9yIFJvdXRlcyBkZWZpbmVkIHRocm91Z2ggdGhlIHJlZ2lzdHJ5LgoKTm90ZSBieSBkZWZhdWx0IGEgWm9kIG9iamVjdCB3aWxsIHJlc3VsdCBpbiBgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjogdHJ1ZWAgYXMgcGVyIHRoZSBPcGVuIEFQSSBzcGVjIHVubGVzcyB1c2luZyBgc3RyaWN0YCBvciBgY2F0Y2hhbGxgLCB0aGlzIGlzIGluIGNvbnRyYXN0IHRvIG5vcm1hbCBab2Qgb2JqZWN0IHVzYWdlIHdoZXJlIGB6b2QucGFyc2VgIGlzIHVzZWQuCgojIyMgRGVmaW5pbmcgcm91dGVzICYgd2ViaG9va3MKCiMjIyMgUmVnaXN0ZXJpbmcgYSBwYXRoIG9yIHdlYmhvb2sKCkFuIE9wZW5BUEkgcGF0aCBpcyByZWdpc3RlcmVkIHVzaW5nIHRoZSBgcmVnaXN0ZXJQYXRoYCBtZXRob2Qgb2YgYW4gYE9wZW5BUElSZWdpc3RyeWAgaW5zdGFuY2UuIEFuIE9wZW5BUEkgd2ViaG9vayBpcyByZWdpc3RlcmVkIHVzaW5nIHRoZSBgcmVnaXN0ZXJXZWJob29rYCBtZXRob2QgYW5kIHRha2VzIHRoZSBzYW1lIHBhcmFtZXRlcnMgYXMgYHJlZ2lzdGVyUGF0aGAuCgpgYGB0cwpyZWdpc3RyeS5yZWdpc3RlclBhdGgoewogIG1ldGhvZDogJ2dldCcsCiAgcGF0aDogJy91c2Vycy97aWR9JywKICBkZXNjcmlwdGlvbjogJ0dldCB1c2VyIGRhdGEgYnkgaXRzIGlkJywKICBzdW1tYXJ5OiAnR2V0IGEgc2luZ2xlIHVzZXInLAogIHJlcXVlc3Q6IHsKICAgIHBhcmFtczogei5vYmplY3QoewogICAgICBpZDogei5zdHJpbmcoKS5vcGVuYXBpKHsgZXhhbXBsZTogJzEyMTIxMjEnIH0pLAogICAgfSksCiAgfSwKICByZXNwb25zZXM6IHsKICAgIDIwMDogewogICAgICBkZXNjcmlwdGlvbjogJ09iamVjdCB3aXRoIHVzZXIgZGF0YS4nLAogICAgICBjb250ZW50OiB7CiAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7CiAgICAgICAgICBzY2hlbWE6IFVzZXJTY2hlbWEsCiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sCiAgICAyMDQ6IHsKICAgICAgZGVzY3JpcHRpb246ICdObyBjb250ZW50IC0gc3VjY2Vzc2Z1bCBvcGVyYXRpb24nLAogICAgfSwKICB9LAp9KTsKYGBgCgpUaGUgWUFNTCBlcXVpdmFsZW50IG9mIHRoZSBzY2hlbWEgYWJvdmUgd291bGQgYmU6CgpgYGB5YW1sCicvdXNlcnMve2lkfSc6CiAgZ2V0OgogICAgZGVzY3JpcHRpb246IEdldCB1c2VyIGRhdGEgYnkgaXRzIGlkCiAgICBzdW1tYXJ5OiBHZXQgYSBzaW5nbGUgdXNlcgogICAgcGFyYW1ldGVyczoKICAgICAgLSBpbjogcGF0aAogICAgICAgIG5hbWU6IGlkCiAgICAgICAgc2NoZW1hOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiAnMTIxMjEyMScKICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgcmVzcG9uc2VzOgogICAgICAnMjAwJzoKICAgICAgICBkZXNjcmlwdGlvbjogT2JqZWN0IHdpdGggdXNlciBkYXRhLgogICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1VzZXInCiAgICAgICcyMDQnOgogICAgICAgIGRlc2NyaXB0aW9uOiBObyBjb250ZW50IC0gc3VjY2Vzc2Z1bCBvcGVyYXRpb24KYGBgCgpUaGUgbGlicmFyeSBzcGVjaWZpYyBwcm9wZXJ0aWVzIGZvciBgcmVnaXN0ZXJQYXRoYCBhcmUgYG1ldGhvZGAsIGBwYXRoYCwgYHJlcXVlc3RgIGFuZCBgcmVzcG9uc2VzYC4gRXZlcnl0aGluZyBlbHNlIGdldHMgZGlyZWN0bHkgYXBwZW5kZWQgdG8gdGhlIHBhdGggZGVmaW5pdGlvbi4KCi0gYG1ldGhvZGAgLSBPbmUgb2YgYGdldGAsIGBwb3N0YCwgYHB1dGAsIGBkZWxldGVgIGFuZCBgcGF0Y2hgOwotIGBwYXRoYCAtIGEgc3RyaW5nIC0gYmVpbmcgdGhlIHBhdGggb2YgdGhlIGVuZHBvaW50OwotIGByZXF1ZXN0YCAtIGFuIG9wdGlvbmFsIG9iamVjdCB3aXRoIG9wdGlvbmFsIGBib2R5YCwgYHBhcmFtc2AsIGBxdWVyeWAgYW5kIGBoZWFkZXJzYCBrZXlzLAogIC0gYHF1ZXJ5YCwgYHBhcmFtc2AgLSBiZWluZyBpbnN0YW5jZXMgb2YgYFpvZE9iamVjdGAKICAtIGBib2R5YCAtIGFuIG9iamVjdCB3aXRoIGEgYGRlc2NyaXB0aW9uYCBhbmQgYSBgY29udGVudGAgcmVjb3JkIHdoZXJlOgogICAgLSB0aGUga2V5IGlzIGEgYG1lZGlhVHlwZWAgc3RyaW5nIGxpa2UgYGFwcGxpY2F0aW9uL2pzb25gCiAgICAtIGFuZCB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYSBgc2NoZW1hYCBvZiBhbnkgYHpvZGAgdHlwZQogIC0gYGhlYWRlcnNgIC0gaW5zdGFuY2VzIG9mIGBab2RPYmplY3RgIG9yIGFuIGFycmF5IG9mIGFueSBgem9kYCBpbnN0YW5jZXMKLSBgcmVzcG9uc2VzYCAtIGFuIG9iamVjdCB3aGVyZSB0aGUga2V5IGlzIHRoZSBzdGF0dXMgY29kZSBvciBgZGVmYXVsdGAgYW5kIHRoZSB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBhIGBkZXNjcmlwdGlvbmAgYW5kIGEgYGNvbnRlbnRgIHJlY29yZCB3aGVyZToKICAtIHRoZSBrZXkgaXMgYSBgbWVkaWFUeXBlYCBzdHJpbmcgbGlrZSBgYXBwbGljYXRpb24vanNvbmAKICAtIGFuZCB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYSBgc2NoZW1hYCBvZiBhbnkgYHpvZGAgdHlwZQoKIyMjIyBEZWZpbmluZyByb3V0ZSBwYXJhbWV0ZXJzCgpJZiB5b3UgZG9uJ3Qgd2FudCB0byBpbmxpbmUgYWxsIHBhcmFtZXRlciBkZWZpbml0aW9ucywgeW91IGNhbiBkZWZpbmUgdGhlbSBzZXBhcmF0ZWx5IHdpdGggYHJlZ2lzdGVyUGFyYW1ldGVyYCBhbmQgdGhlbiByZWZlcmVuY2UgdGhlbToKCmBgYHRzCmNvbnN0IFVzZXJJZFBhcmFtID0gcmVnaXN0cnkucmVnaXN0ZXJQYXJhbWV0ZXIoCiAgJ1VzZXJJZCcsCiAgei5zdHJpbmcoKS5vcGVuYXBpKHsKICAgIHBhcmFtOiB7CiAgICAgIG5hbWU6ICdpZCcsCiAgICAgIGluOiAncGF0aCcsCiAgICB9LAogICAgZXhhbXBsZTogJzEyMTIxMjEnLAogIH0pCik7CgpyZWdpc3RyeS5yZWdpc3RlclBhdGgoewogIC4uLgogIHJlcXVlc3Q6IHsKICAgIHBhcmFtczogei5vYmplY3QoewogICAgICBpZDogVXNlcklkUGFyYW0KICAgIH0pLAogIH0sCiAgcmVzcG9uc2VzOiAuLi4KfSk7CmBgYAoKVGhlIFlBTUwgZXF1aXZhbGVudCB3b3VsZCBiZToKCmBgYHlhbWwKY29tcG9uZW50czoKICBwYXJhbWV0ZXJzOgogICAgVXNlcklkOgogICAgICBpbjogcGF0aAogICAgICBuYW1lOiBpZAogICAgICBzY2hlbWE6CiAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgZXhhbXBsZTogJzEyMTIxMjEnCiAgICAgIHJlcXVpcmVkOiB0cnVlCgonL3VzZXJzL3tpZH0nOgogIGdldDoKICAgIC4uLgogICAgcGFyYW1ldGVyczoKICAgICAgLSAkcmVmOiAnIy9jb21wb25lbnRzL3BhcmFtZXRlcnMvVXNlcklkJwogICAgcmVzcG9uc2VzOiAuLi4KYGBgCgpOb3RlOiBJbiBvcmRlciB0byBkZWZpbmUgcHJvcGVydGllcyB0aGF0IGFwcGx5IHRvIHRoZSBwYXJhbWV0ZXIgaXRzZWxmLCB1c2UgdGhlIGBwYXJhbWAgcHJvcGVydHkgb2YgYC5vcGVuYXBpYC4gQW55IHByb3BlcnRpZXMgcHJvdmlkZWQgb3V0c2lkZSBvZiBgcGFyYW1gIHdvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIHNjaGVtYSBmb3IgdGhpcyBwYXJhbWV0ZXIuCgojIyMjIEdlbmVyYXRpbmcgdGhlIGZ1bGwgZG9jdW1lbnQKCkEgZnVsbCBPcGVuQVBJIGRvY3VtZW50IGNhbiBiZSBnZW5lcmF0ZWQgdXNpbmcgdGhlIGBnZW5lcmF0ZURvY3VtZW50YCBtZXRob2Qgb2YgYW4gYE9wZW5BcGlHZW5lcmF0b3JWM2Agb3IgYE9wZW5BcGlHZW5lcmF0b3JWMzFgIGluc3RhbmNlLiBJdCB0YWtlcyBvbmUgYXJndW1lbnQgLSB0aGUgZG9jdW1lbnQgY29uZmlnLiBJdCBtYXkgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgoKYGBgdHMKcmV0dXJuIGdlbmVyYXRvci5nZW5lcmF0ZURvY3VtZW50KHsKICBvcGVuYXBpOiAnMy4wLjAnLAogIGluZm86IHsKICAgIHZlcnNpb246ICcxLjAuMCcsCiAgICB0aXRsZTogJ015IEFQSScsCiAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIEFQSScsCiAgfSwKICBzZXJ2ZXJzOiBbeyB1cmw6ICd2MScgfV0sCn0pOwpgYGAKCiMjIyBEZWZpbmluZyBjdXN0b20gY29tcG9uZW50cwoKWW91IGNhbiBkZWZpbmUgY29tcG9uZW50cyB0aGF0IGFyZSBub3QgT3BlbkFQSSBzY2hlbWFzLCBpbmNsdWRpbmcgc2VjdXJpdHkgc2NoZW1lcywgcmVzcG9uc2UgaGVhZGVycyBhbmQgb3RoZXJzLiBTZWUgW3RoaXMgdGVzdCBmaWxlXShzcGVjL2N1c3RvbS1jb21wb25lbnRzLnNwZWMudHMpIGZvciBleGFtcGxlcy4KCiMjIyBBIGZ1bGwgZXhhbXBsZQoKQSBmdWxsIGV4YW1wbGUgY29kZSBjYW4gYmUgZm91bmQgW2hlcmVdKC4vZXhhbXBsZS9pbmRleC50cykuIEFuZCB0aGUgWUFNTCByZXByZXNlbnRhdGlvbiBvZiBpdHMgcmVzdWx0IC0gW2hlcmVdKC4vZXhhbXBsZS9vcGVuYXBpLWRvY3MueW1sKQoKIyMjIFVzaW5nIHNjaGVtYXMgdnMgYSByZWdpc3RyeQoKU2NoZW1hcyBhcmUgYXV0b21hdGljYWxseSBiZWluZyByZWdpc3RlcmVkIHdoZW4gcmVmZXJlbmNlZC4gVGhhdCBtZWFucyB0aGF0IGlmIHlvdSBoYXZlIGEgc2NoZW1hIGxpa2U6CgpgYGB0cwpjb25zdCBzY2hlbWEgPSB6Lm9iamVjdCh7IGtleTogei5zdHJpbmcoKS5vcGVuYXBpKCdUZXN0JykgfSkub3BlbmFwaSgnT2JqZWN0Jyk7CmBgYAoKeW91J2QgaGF2ZSB0aGUgZm9sbG93aW5nIHJlc3VsdGluZyBzdHJ1Y3R1cmU6CgpgYGB5YW1sCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIFRlc3Q6CiAgICAgIHR5cGU6ICdzdHJpbmcnLAogICAgT2JqZWN0OgogICAgICB0eXBlOiAnb2JqZWN0JywKICAgICAgcHJvcGVydGllczoKICAgICAgICBrZXk6CiAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvVGVzdCcKICAgICAgcmVxdWlyZWQ6IFsna2V5J10KYGBgCgpUaGlzIGRvZXMgbm90IHJlcXVpcmUgYW55IHVzYWdlcyBvZiBhbiBgT3BlbkFQSVJlZ2lzdHJ5YCBpbnN0YW5jZS4KCkhvd2V2ZXIgdGhlIHNhbWUgb3V0cHV0IGNhbiBiZSBhY2hpZXZlZCB3aXRoIHRoZSBmb2xsb3dpbmcgY29kZToKCmBgYHRzCmNvbnN0IHJlZ2lzdHJ5ID0gbmV3IE9wZW5BUElSZWdpc3RyeSgpOwpjb25zdCBzY2hlbWEgPSByZWdpc3RyeS5yZWdpc3RlcigKICAnT2JqZWN0JywKICB6Lm9iamVjdCh7IGtleTogei5zdHJpbmcoKS5vcGVuYXBpKCdUZXN0JykgfSkKKTsKYGBgCgpUaGUgbWFpbiBiZW5lZml0IG9mIHRoZSBgLnJlZ2lzdHJ5YCBtZXRob2QgaXMgdGhhdCB5b3UgY2FuIHVzZSB0aGUgcmVnaXN0cnkgYXMgYSAiY29sbGVjdGlvbiIgd2hlcmUgeW91IHdvdWxkIHB1dCBhbGwgc3VjaCBzY2hlbWFzLgoKV2l0aCBgLm9wZW5hcGlgOgoKYGBgdHMKLy8gZmlsZTEudHMKZXhwb3J0IGNvbnN0IFNjaGVtYTEgPSAuLi4KCi8vIGZpbGUyLnRzCmV4cG9ydCBjb25zdCBTY2hlbWEyID0gLi4uCgpuZXcgT3BlbkFwaUdlbmVyYXRvclYzKFtTY2hlbWExLCBTY2hlbWEyXSkKYGBgCgpBZGRpbmcgYSBgTmV3U2NoZW1hYCBpbnRvIGBmaWxlMy50c2Agd291bGQgcmVxdWlyZSB5b3UgdG8gcGFzcyB0aGF0IHNjaGVtYSBtYW51YWxseSBpbnRvIHRoZSBhcnJheSBvZiB0aGUgZ2VuZXJhdG9yIGNvbnN0cnVjdG9yLgpOb3RlOiBJZiBhIGBOZXdTY2hlbWFgIGlzIHJlZmVyZW5jZWQgYnkgYW55IG90aGVyIHNjaGVtYXMgb3IgYSByb3V0ZS93ZWJob29rIGRlZmluaXRpb24gaXQgd291bGQgc3RpbGwgYXBwZWFyIGluIHRoZSByZXN1bHRpbmcgZG9jdW1lbnQuCgpXaXRoIGByZWdpc3RyeS5yZWdpc3RlcmA6CgpgYGB0cwovLyByZWdpc3RyeS50cwpleHBvcnQgY29uc3QgcmVnaXN0cnkgPSBuZXcgT3BlbkFQSVJlZ2lzdHJ5KCkKCi8vIGZpbGUxLnRzCmV4cG9ydCBjb25zdCBTY2hlbWExID0gcmVnaXN0cnkucmVnaXN0ZXIoLi4uKQoKLy8gZmlsZTIudHMKZXhwb3J0IGNvbnN0IFNjaGVtYTIgPSByZWdpc3RyeS5yZWdpc3RlciguLi4pCgpuZXcgT3BlbkFwaUdlbmVyYXRvclYzKHJlZ2lzdHJ5LmRlZmluaXRpb25zKQpgYGAKCkFkZGluZyBhIGBOZXdTY2hlbWFgIGludG8gYGZpbGUzLnRzYCBhbmQgdXNpbmcgYHJlZ2lzdHJ5LnJlZ2lzdGVyYCB3b3VsZCBOT1QgcmVxdWlyZSB5b3UgdG8gZG8gYW55IGNoYW5nZXMgdG8gdGhlIGdlbmVyYXRvciBjb25zdHJ1Y3Rvci4KCiMjIyMgQ29uY2x1c2lvbgoKVXNpbmcgYW4gYE9wZW5BUElSZWdpc3RyeWAgaW5zdGFuY2UgaXMgbW9zdGx5IHVzZWZ1bCBpZiB5b3Ugd291bGQgd2FudCB5b3VyIHJlc3VsdGluZyBkb2N1bWVudCB0byBjb250YWluIHVucmVmZXJlbmNlZCBzY2hlbWFzLgpUaGF0IGNhbiBzb21ldGltZXMgYmUgdXNlZnVsIC0gZm9yIGV4YW1wbGUgd2hlbiB5b3UgYXJlIHNsb3dseSBpbnRlZ3JhdGluZyBhbiBhbHJlYWR5IGV4aXN0aW5nIGRvY3VtZW50YXRpb24gd2l0aCBgQGFzdGVhc29sdXRpb25zL3pvZC10by1vcGVuYXBpYCBhbmQgeW91IGFyZSBtaWdyYXRpbmcgc21hbGwgcGllY2VzIGF0IGEgdGltZS4gVGhvc2UgcGllY2VzIGNhbiB0aGVuIGJlIHJlZmVyZW5jZWQgZGlyZWN0bHkgZnJvbSBhbiBleGlzdGluZyBkb2N1bWVudGF0aW9uLgoKIyMjIyBBZGRpbmcgaXQgYXMgcGFydCBvZiB5b3VyIGJ1aWxkCgpJbiBhIGZpbGUgaW5zaWRlIHlvdXIgcHJvamVjdCB5b3UgY2FuIGhhdmUgYSBmaWxlIGxpa2Ugc286CgpgYGB0cwpleHBvcnQgY29uc3QgcmVnaXN0cnkgPSBuZXcgT3BlbkFQSVJlZ2lzdHJ5KCk7CgpleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcGVuQVBJKCkgewogIGNvbnN0IGNvbmZpZyA9IHsuLi59OyAvLyB5b3VyIGNvbmZpZyBjb21lcyBoZXJlCgogIHJldHVybiBuZXcgT3BlbkFwaUdlbmVyYXRvclYzKHJlZ2lzdHJ5LmRlZmluaXRpb25zKS5nZW5lcmF0ZURvY3VtZW50KGNvbmZpZyk7Cn0KYGBgCgpZb3UgdGhlbiB1c2UgdGhlIGV4cG9ydGVkIGByZWdpc3RyeWAgb2JqZWN0IHRvIHJlZ2lzdGVyIGFsbCBzY2hlbWFzLCBwYXJhbWV0ZXJzIGFuZCByb3V0ZXMgd2hlcmUgYXBwcm9wcmlhdGUuCgpUaGVuIHlvdSBjYW4gY3JlYXRlIGEgc2NyaXB0IHRoYXQgZXhlY3V0ZXMgdGhlIGV4cG9ydGVkIGBnZW5lcmF0ZU9wZW5BUElgIGZ1bmN0aW9uLiBUaGlzIHNjcmlwdCBjYW4gYmUgZXhlY3V0ZWQgYXMgYSBwYXJ0IG9mIHlvdXIgYnVpbGQgc3RlcCBzbyB0aGF0IGl0IGNhbiB3cml0ZSB0aGUgcmVzdWx0IHRvIHNvbWUgZmlsZSBsaWtlIGBvcGVuYXBpLWRvY3MuanNvbmAuCgojIyMgR2VuZXJhdGlvbiBvcHRpb25zCgpTY2hlbWEgZ2VuZXJhdGlvbiBjYW4gYmUgYWx0ZXJlZCBpbiBjZXJ0YWluIHNjZW5hcmlvcy4gVGhpcyBjYW4gYmUgZG9uZSBieSBlaXRoZXI6CgojIyMjIFBhc3NpbmcgYSBnbG9iYWwgY29uZmlndXJhdGlvbiBhcyBzZWNvbmQgYXJndW1lbnQgZm9yIHRoZSBnZW5lcmF0b3I6CgpgYGB0cwpjb25zdCBnZW5lcmF0b3IgPSBuZXcgT3BlbkFwaUdlbmVyYXRvclYzKHJlZ2lzdHJ5LmRlZmluaXRpb25zLCBvcHRpb25zKTsKYGBgCgoKVGhlcmUgbGlzdCBvZiBjdXJyZW50bHkgc3VwcG9ydGVkIGdsb2JhbCBvcHRpb25zIGlzOgpgYGB0cwpjb25zdCBvcHRpb25zID0gewogIHVuaW9uUHJlZmVycmVkVHlwZTogJ29uZU9mJyB8ICdhbnlPZicgLy8gY29uZmlndXJlcyB3aGV0aGVyIG9uZU9mIG9yIGFueU9mIGlzIHVzZWQgd2hlbiBnZW5lcmF0aW5nIGEgc2NoZW1hIGZvciBhIHpvZCB1bmlvbgogIHNvcnRDb21wb25lbnRzPzogJ2FscGhhYmV0aWNhbGx5JzsgLy8gaWYgc29ydENvbXBvbmVudHMgaXMgcGFzc2VkIHdpdGggdGhlIHZhbHVlICdhbHBoYWJldGljYWxseScgaXQgd291bGQgc29ydCBhbGwgc2NoZW1hcyBhbmQgcGFyYW1ldGVycy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIG5vdCAtIHRoZXkgd291bGQgYXBwZWFyIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgZGVmaW5lZAp9CmBgYAoKCiMjIyMgUGFzc2luZyBvcHRpb25zIGZvciBhIG9uZS1vZmYgdXNhZ2UgZm9yIGEgc2luZ2xlIHNjaGVtYToKCmBgYHRzCi8vIE5vdGUgaXQgaXMgdmFsaWQgZm9yIG1ldGFkYXRhIHRvIGJlIHVuZGVmaW5lZCBpbiBib3RoIG9mIHRoZSBiZWxvdyBjYXNlczoKCnNjaGVtYS5vcGVuYXBpKCdTY2hlbWEnLCBtZXRhZGF0YSwgb3B0aW9ucyk7IC8vIHdoZW4gcmVnaXN0ZXJpbmcgYSBzY2hlbWEgb3IKc2NoZW1hLm9wZW5hcGkobWV0YWRhdGEsIG9wdGlvbnMpIC8vIHdoZW4gc2ltcGx5IGFkZGluZyBzb21lIG1ldGFkYXRhIHRvIGl0CmBgYAoKVGhlcmUgbGlzdCBvZiBjdXJyZW50bHkgc3VwcG9ydGVkIG9uZS1vZmYgb3B0aW9ucyBpczoKYGBgdHMKY29uc3Qgb3B0aW9ucyA9IHsKICB1bmlvblByZWZlcnJlZFR5cGU6ICdvbmVPZicgfCAnYW55T2YnIC8vIGNvbmZpZ3VyZXMgd2hldGhlciBvbmVPZiBvciBhbnlPZiBpcyB1c2VkIHdoZW4gZ2VuZXJhdGluZyBhIHNjaGVtYSBmb3IgYSB6b2QgdW5pb24KfQpgYGAKCiMjIFpvZCBzY2hlbWEgdHlwZXMKCiMjIyBTdXBwb3J0ZWQgdHlwZXMKClRoZSBsaXN0IG9mIGFsbCBzdXBwb3J0ZWQgdHlwZXMgYXMgb2Ygbm93IGlzOgoKLSBgWm9kQW55YAotIGBab2RBcnJheWAKLSBgWm9kQmlnSW50YAotIGBab2RCb29sZWFuYAotIGBab2REYXRlYAotIGBab2REZWZhdWx0YAotIGBab2RQcmVmYXVsdGAKLSBgWm9kRGlzY3JpbWluYXRlZFVuaW9uYAogIC0gaW5jbHVkaW5nIGBkaXNjcmltaW5hdG9yYCBtYXBwaW5nIHdoZW4gYWxsIFpvZCBvYmplY3RzIGluIHRoZSB1bmlvbiBhcmUgcmVnaXN0ZXJlZCB3aXRoIGAucmVnaXN0ZXIoKWAgb3IgY29udGFpbiBhIGByZWZJZGAuCi0gYFpvZEVmZmVjdHNgCi0gYFpvZEVudW1gCi0gYFpvZEludGVyc2VjdGlvbmAKLSBgWm9kTGl0ZXJhbGAKLSBgWm9kTmF0aXZlRW51bWAKLSBgWm9kTnVsbGFibGVgCi0gYFpvZE51bWJlcmAKICAtIGluY2x1ZGluZyBgei5udW1iZXIoKS5pbnQoKWAgYmVpbmcgaW5mZXJyZWQgYXMgYHR5cGU6ICdpbnRlZ2VyJ2AKLSBgWm9kT2JqZWN0YAogIC0gaW5jbHVkaW5nIGAuY2F0Y2hhbGxgIHJlc3VsdGluZyBpbiB0aGUgcmVzcGVjdGl2ZSBgYWRkaXRpb25hbFByb3BlcnRpZXNgIHNjaGVtYQogIC0gYWxzbyBpbmNsdWRpbmcgYHN0cmljdGAgcmVzdWx0aW5nIGluIHRoZSByZXNwZWN0aXZlIGBhZGRpdGlvbmFsUHJvcGVydGllc2Agc2NoZW1hCi0gYFpvZE9wdGlvbmFsYAotIGBab2RQaXBlbGluZWAKLSBgWm9kUmVhZG9ubHlgCi0gYFpvZFJlY29yZGAKLSBgWm9kU3RyaW5nYAogIC0gYWRkaW5nIGBmb3JtYXRgIGZvcjoKICAgIC0gYC5lbW9qaSgpYAogICAgLSBgLmN1aWQoKWAKICAgIC0gYC5jdWlkMigpYAogICAgLSBgLnVsaWQoKWAKICAgIC0gYC5pcCgpYAogICAgLSBgLmRhdGUoKWAKICAgIC0gYC5kYXRldGltZSgpYAogICAgLSBgLnV1aWQoKWAKICAgIC0gYC5lbWFpbCgpYAogICAgLSBgLnVybCgpYAogIC0gYWRkaW5nIGBwYXR0ZXJuYCBmb3IgYC5yZWdleCgpYCBpcyBhbHNvIHN1cHBvcnRlZAoKLSBgWm9kVHVwbGVgCi0gYFpvZFVuaW9uYAotIGBab2RVbmtub3duYAoKRXh0ZW5kaW5nIGFuIGluc3RhbmNlIG9mIGBab2RPYmplY3RgIGlzIGFsc28gc3VwcG9ydGVkIGFuZCByZXN1bHRzIGluIGFuIE9wZW5BcGkgZGVmaW5pdGlvbiB3aXRoIGBhbGxPZmAKCiMjIyBVbnN1cHBvcnRlZCB0eXBlcwoKSW4gY2FzZSB5b3UgdHJ5IHRvIGNyZWF0ZSBhbiBPcGVuQVBJIHNjaGVtYSBmcm9tIGEgem9kIHNjaGVtYSB0aGF0IGlzIG5vdCBvbmUgb2YgdGhlIGFmb3JlbWVudGlvbmVkIHR5cGVzIHRoZW4geW91J2QgcmVjZWl2ZSBhbiBgVW5rbm93blpvZFR5cGVFcnJvcmAuCgpZb3UgY2FuIHN0aWxsIHJlZ2lzdGVyIHN1Y2ggc2NoZW1hcyBvbiB5b3VyIG93biBieSBwcm92aWRpbmcgYSBgdHlwZWAgdmlhIHRoZSBgLm9wZW5hcGlgIG1ldGhvZC4gSW4gY2FzZSB5b3UgdGhpbmsgdGhhdCB0aGUgZGVzaXJlZCBiZWhhdmlvciBjYW4gYmUgYWNoaWV2ZWQgYXV0b21hdGljYWxseSBkbyBub3QgaGVzaXRhdGUgdG8gcmVhY2ggb3V0IHRvIHVzIGJ5IGRlc2NyaWJpbmcgeW91ciBjYXNlIHZpYSBHaXRodWIgSXNzdWVzLgoKIyMjIyBLbm93biBpc3N1ZXMKCjEuIGB6Lm51bGxhYmxlKHNjaGVtYSlgIFtkb2VzIG5vdCBnZW5lcmF0ZSBhICRyZWYgZm9yIHVuZGVybHlpbmcgcmVnaXN0ZXJlZCBzY2hlbWFzXShodHRwczovL2dpdGh1Yi5jb20vYXN0ZWFzb2x1dGlvbnMvem9kLXRvLW9wZW5hcGkvaXNzdWVzLzE0MSkuCiAgLSBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGxpbWl0YXRpb24uCiAgLSBIb3dldmVyIHlvdSBjYW4gc2ltcGx5IHVzZSBgc2NoZW1hLm51bGxhYmxlKClgIHdoaWNoIGhhcyB0aGUgZXhhY3Qgc2FtZSBlZmZlY3QgYHpvZGAgd2lzZSBidXQgaXQgaXMgYWxzbyBmdWxseSBzdXBwb3J0ZWQgb24gb3VyIGVuZC4KCiMjIFRlY2hub2xvZ2llcwoKLSBbVHlwZXNjcmlwdF0oaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnLykKLSBbWm9kIDQueF0oaHR0cHM6Ly9naXRodWIuY29tL2NvbGluaGFja3Mvem9kKQotIFtPcGVuQVBJIDMueCBUU10oaHR0cHM6Ly9naXRodWIuY29tL21ldGFkZXZwcm8vb3BlbmFwaTMtdHMpCg== readmeEtag: '"2d79a562f62910c46c20782a747c233ca2d9dbdd"' readmeLastModified: Sun, 04 Jan 2026 11:33:09 GMT repositoryId: 481579846 description: A library that generates OpenAPI (Swagger) docs from Zod schemas created: '2022-04-14T11:32:57Z' updated: '2026-02-05T05:56:51Z' language: TypeScript archived: false stars: 1464 watchers: 12 forks: 97 owner: asteasolutions logo: https://avatars.githubusercontent.com/u/5244095?v=4 license: MIT repoEtag: '"e23715aeab7390fadd5642611c810284a5656769366686424747adceff588019"' repoLastModified: Thu, 05 Feb 2026 05:56:51 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/apiflask/apiflask v3: true id: 2c668cdfc766c1f598c7c7d845b9120c repositoryMetadata: base64Readme: >- CiFbXShodHRwczovL2FwaWZsYXNrLmNvbS9fYXNzZXRzL2FwaWZsYXNrLWxvZ28ucG5nKQoKIyBBUElGbGFzawoKWyFbQnVpbGQgc3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vYXBpZmxhc2svYXBpZmxhc2svYWN0aW9ucy93b3JrZmxvd3MvdGVzdHMueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlmbGFzay9hcGlmbGFzay9hY3Rpb25zKSBbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvYXBpZmxhc2svYXBpZmxhc2svYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPTJDRlBDWjFETVkpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvYXBpZmxhc2svYXBpZmxhc2spCgpBUElGbGFzayBpcyBhIGxpZ2h0d2VpZ2h0IFB5dGhvbiB3ZWIgQVBJIGZyYW1ld29yayBiYXNlZCBvbiBbRmxhc2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9wYWxsZXRzL2ZsYXNrKS4gSXQncyBlYXN5IHRvIHVzZSwgaGlnaGx5IGN1c3RvbWl6YWJsZSwgT1JNL09ETS1hZ25vc3RpYywgYW5kIDEwMCUgY29tcGF0aWJsZSB3aXRoIHRoZSBGbGFzayBlY29zeXN0ZW0uCgpBUElGbGFzayBzdXBwb3J0cyBib3RoIFttYXJzaG1hbGxvd10oaHR0cHM6Ly9naXRodWIuY29tL21hcnNobWFsbG93LWNvZGUvbWFyc2htYWxsb3cpIHNjaGVtYXMgYW5kIFtQeWRhbnRpY10oaHR0cHM6Ly9kb2NzLnB5ZGFudGljLmRldi8pIG1vZGVscyB0aHJvdWdoIGEgcGx1Z2dhYmxlIHNjaGVtYSBhZGFwdGVyIHN5c3RlbSwgZ2l2aW5nIHlvdSB0aGUgZmxleGliaWxpdHkgdG8gY2hvb3NlIHRoZSB2YWxpZGF0aW9uIGFwcHJvYWNoIHRoYXQgYmVzdCBmaXRzIHlvdXIgcHJvamVjdC4KCldpdGggQVBJRmxhc2ssIHlvdSB3aWxsIGhhdmU6CgotIE1vcmUgc3VnYXJzIGZvciB2aWV3IGZ1bmN0aW9uIChgQGFwcC5pbnB1dCgpYCwgYEBhcHAub3V0cHV0KClgLCBgQGFwcC5nZXQoKWAsIGBAYXBwLnBvc3QoKWAgYW5kIG1vcmUpCi0gQXV0b21hdGljIHJlcXVlc3QgdmFsaWRhdGlvbiBhbmQgZGVzZXJpYWxpemF0aW9uCi0gQXV0b21hdGljIHJlc3BvbnNlIGZvcm1hdHRpbmcgYW5kIHNlcmlhbGl6YXRpb24KLSBBdXRvbWF0aWMgW09wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24pIChPQVMsIGZvcm1lcmx5IFN3YWdnZXIgU3BlY2lmaWNhdGlvbikgZG9jdW1lbnQgZ2VuZXJhdGlvbgotIEF1dG9tYXRpYyBpbnRlcmFjdGl2ZSBBUEkgZG9jdW1lbnRhdGlvbgotIEFQSSBhdXRoZW50aWNhdGlvbiBzdXBwb3J0ICh3aXRoIFtGbGFzay1IVFRQQXV0aF0oaHR0cHM6Ly9naXRodWIuY29tL21pZ3VlbGdyaW5iZXJnL2ZsYXNrLWh0dHBhdXRoKSkKLSBBdXRvbWF0aWMgSlNPTiByZXNwb25zZSBmb3IgSFRUUCBlcnJvcnMKCgojIyBSZXF1aXJlbWVudHMKCi0gUHl0aG9uIDMuOSsKLSBGbGFzayAyLjErCgoKIyMgSW5zdGFsbGF0aW9uCgpGb3IgTGludXggYW5kIG1hY09TOgoKYGBgYmFzaAokIHBpcDMgaW5zdGFsbCBhcGlmbGFzawpgYGAKCkZvciBXaW5kb3dzOgoKYGBgYmFzaAo+IHBpcCBpbnN0YWxsIGFwaWZsYXNrCmBgYAoKCiMjIExpbmtzCgotIFdlYnNpdGU6IDxodHRwczovL2FwaWZsYXNrLmNvbT4KLSBEb2N1bWVudGF0aW9uOiA8aHR0cHM6Ly9hcGlmbGFzay5jb20vZG9jcz4KLSDkuK3mlofmlofmoaM6IDxodHRwczovL3poLmFwaWZsYXNrLmNvbS9kb2NzPgotIFB5UEkgUmVsZWFzZXM6IDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL0FQSUZsYXNrPgotIENoYW5nZSBMb2c6IDxodHRwczovL2FwaWZsYXNrLmNvbS9jaGFuZ2Vsb2c+Ci0gU291cmNlIENvZGU6IDxodHRwczovL2dpdGh1Yi5jb20vYXBpZmxhc2svYXBpZmxhc2s+Ci0gSXNzdWUgVHJhY2tlcjogPGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlmbGFzay9hcGlmbGFzay9pc3N1ZXM+Ci0gRGlzY3Vzc2lvbjogPGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlmbGFzay9hcGlmbGFzay9kaXNjdXNzaW9ucz4KLSDkuK3mloforrrlnZs6IDxodHRwczovL2NvZGVraXRjaGVuLmNvbW11bml0eT4KLSBUd2l0dGVyOiA8aHR0cHM6Ly90d2l0dGVyLmNvbS9hcGlmbGFzaz4KLSBPcGVuIENvbGxlY3RpdmU6IDxodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9hcGlmbGFzaz4KCgojIyBEb25hdGUKCklmIHlvdSBmaW5kIEFQSUZsYXNrIHVzZWZ1bCwgcGxlYXNlIGNvbnNpZGVyIFtkb25hdGluZ10oaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vYXBpZmxhc2spIHRvZGF5LiBZb3VyIGRvbmF0aW9uIGtlZXBzIEFQSUZsYXNrIG1haW50YWluZWQgYW5kIGV2b2x2aW5nLgoKVGhhbmsgeW91IHRvIGFsbCBvdXIgYmFja2VycyBhbmQgc3BvbnNvcnMhCgojIyMgQmFja2VycwoKWyFbXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9hcGlmbGFzay9iYWNrZXJzLnN2Zz93aWR0aD04OTApXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9hcGlmbGFzaykKCiMjIyBTcG9uc29ycwoKWyFbXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9hcGlmbGFzay9zcG9uc29ycy5zdmc/d2lkdGg9ODkwKV0oaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vYXBpZmxhc2spCgojIyBFeGFtcGxlCgpgYGBweXRob24KZnJvbSBhcGlmbGFzayBpbXBvcnQgQVBJRmxhc2ssIFNjaGVtYSwgYWJvcnQKZnJvbSBhcGlmbGFzay5maWVsZHMgaW1wb3J0IEludGVnZXIsIFN0cmluZwpmcm9tIGFwaWZsYXNrLnZhbGlkYXRvcnMgaW1wb3J0IExlbmd0aCwgT25lT2YKCmFwcCA9IEFQSUZsYXNrKF9fbmFtZV9fKQoKcGV0cyA9IFsKICAgIHsnaWQnOiAwLCAnbmFtZSc6ICdLaXR0eScsICdjYXRlZ29yeSc6ICdjYXQnfSwKICAgIHsnaWQnOiAxLCAnbmFtZSc6ICdDb2NvJywgJ2NhdGVnb3J5JzogJ2RvZyd9Cl0KCgpjbGFzcyBQZXRJbihTY2hlbWEpOgogICAgbmFtZSA9IFN0cmluZyhyZXF1aXJlZD1UcnVlLCB2YWxpZGF0ZT1MZW5ndGgoMCwgMTApKQogICAgY2F0ZWdvcnkgPSBTdHJpbmcocmVxdWlyZWQ9VHJ1ZSwgdmFsaWRhdGU9T25lT2YoWydkb2cnLCAnY2F0J10pKQoKCmNsYXNzIFBldE91dChTY2hlbWEpOgogICAgaWQgPSBJbnRlZ2VyKCkKICAgIG5hbWUgPSBTdHJpbmcoKQogICAgY2F0ZWdvcnkgPSBTdHJpbmcoKQoKCkBhcHAuZ2V0KCcvJykKZGVmIHNheV9oZWxsbygpOgogICAgIyByZXR1cm5pbmcgYSBkaWN0IG9yIGxpc3QgZXF1YWxzIHRvIHVzZSBqc29uaWZ5KCkKICAgIHJldHVybiB7J21lc3NhZ2UnOiAnSGVsbG8hJ30KCgpAYXBwLmdldCgnL3BldHMvPGludDpwZXRfaWQ+JykKQGFwcC5vdXRwdXQoUGV0T3V0KQpkZWYgZ2V0X3BldChwZXRfaWQpOgogICAgaWYgcGV0X2lkID4gbGVuKHBldHMpIC0gMToKICAgICAgICBhYm9ydCg0MDQpCiAgICAjIHlvdSBjYW4gYWxzbyByZXR1cm4gYW4gT1JNL09ETSBtb2RlbCBjbGFzcyBpbnN0YW5jZSBkaXJlY3RseQogICAgIyBBUElGbGFzayB3aWxsIHNlcmlhbGl6ZSB0aGUgb2JqZWN0IGludG8gSlNPTiBmb3JtYXQKICAgIHJldHVybiBwZXRzW3BldF9pZF0KCgpAYXBwLnBhdGNoKCcvcGV0cy88aW50OnBldF9pZD4nKQpAYXBwLmlucHV0KFBldEluKHBhcnRpYWw9VHJ1ZSkpICAjIC0+IGpzb25fZGF0YQpAYXBwLm91dHB1dChQZXRPdXQpCmRlZiB1cGRhdGVfcGV0KHBldF9pZCwganNvbl9kYXRhKToKICAgICMgdGhlIHZhbGlkYXRlZCBhbmQgcGFyc2VkIGlucHV0IGRhdGEgd2lsbAogICAgIyBiZSBpbmplY3RlZCBpbnRvIHRoZSB2aWV3IGZ1bmN0aW9uIGFzIGEgZGljdAogICAgaWYgcGV0X2lkID4gbGVuKHBldHMpIC0gMToKICAgICAgICBhYm9ydCg0MDQpCiAgICBmb3IgYXR0ciwgdmFsdWUgaW4ganNvbl9kYXRhLml0ZW1zKCk6CiAgICAgICAgcGV0c1twZXRfaWRdW2F0dHJdID0gdmFsdWUKICAgIHJldHVybiBwZXRzW3BldF9pZF0KYGBgCgo8ZGV0YWlscz4KPHN1bW1hcnk+WW91IGNhbiB1c2UgUHlkYW50aWMgbW9kZWxzIGZvciB0eXBlLWhpbnQgYmFzZWQgdmFsaWRhdGlvbjwvc3VtbWFyeT4KCmBgYHB5dGhvbgpmcm9tIGVudW0gaW1wb3J0IEVudW0KCmZyb20gYXBpZmxhc2sgaW1wb3J0IEFQSUZsYXNrLCBhYm9ydApmcm9tIHB5ZGFudGljIGltcG9ydCBCYXNlTW9kZWwsIEZpZWxkCgphcHAgPSBBUElGbGFzayhfX25hbWVfXykKCgpjbGFzcyBQZXRDYXRlZ29yeShzdHIsIEVudW0pOgogICAgRE9HID0gJ2RvZycKICAgIENBVCA9ICdjYXQnCgoKY2xhc3MgUGV0T3V0KEJhc2VNb2RlbCk6CiAgICBpZDogaW50CiAgICBuYW1lOiBzdHIKICAgIGNhdGVnb3J5OiBQZXRDYXRlZ29yeQoKCmNsYXNzIFBldEluKEJhc2VNb2RlbCk6CiAgICBuYW1lOiBzdHIgPSBGaWVsZChtaW5fbGVuZ3RoPTEsIG1heF9sZW5ndGg9NTApCiAgICBjYXRlZ29yeTogUGV0Q2F0ZWdvcnkKCgpwZXRzID0gWwogICAgeydpZCc6IDAsICduYW1lJzogJ0tpdHR5JywgJ2NhdGVnb3J5JzogJ2NhdCd9LAogICAgeydpZCc6IDEsICduYW1lJzogJ0NvY28nLCAnY2F0ZWdvcnknOiAnZG9nJ30KXQoKCkBhcHAuZ2V0KCcvJykKZGVmIHNheV9oZWxsbygpOgogICAgcmV0dXJuIHsnbWVzc2FnZSc6ICdIZWxsbywgUHlkYW50aWMhJ30KCgpAYXBwLmdldCgnL3BldHMnKQpAYXBwLm91dHB1dChsaXN0W1BldE91dF0pCmRlZiBnZXRfcGV0cygpOgogICAgcmV0dXJuIHBldHMKCgpAYXBwLmdldCgnL3BldHMvPGludDpwZXRfaWQ+JykKQGFwcC5vdXRwdXQoUGV0T3V0KQpkZWYgZ2V0X3BldChwZXRfaWQ6IGludCk6CiAgICBpZiBwZXRfaWQgPiBsZW4ocGV0cykgb3IgcGV0X2lkIDwgMToKICAgICAgICBhYm9ydCg0MDQpCiAgICByZXR1cm4gcGV0c1twZXRfaWQgLSAxXQoKCkBhcHAucG9zdCgnL3BldHMnKQpAYXBwLmlucHV0KFBldEluLCBsb2NhdGlvbj0nanNvbicpCkBhcHAub3V0cHV0KFBldE91dCwgc3RhdHVzX2NvZGU9MjAxKQpkZWYgY3JlYXRlX3BldChqc29uX2RhdGE6IFBldEluKToKICAgICMgdGhlIHZhbGlkYXRlZCBhbmQgcGFyc2VkIGlucHV0IGRhdGEgd2lsbAogICAgIyBiZSBpbmplY3RlZCBpbnRvIHRoZSB2aWV3IGZ1bmN0aW9uIGFzIGEgUHlkYW50aWMgbW9kZWwgaW5zdGFuY2UKICAgIG5ld19pZCA9IGxlbihwZXRzKSArIDEKICAgIG5ld19wZXQgPSBQZXRPdXQoaWQ9bmV3X2lkLCBuYW1lPWpzb25fZGF0YS5uYW1lLCBjYXRlZ29yeT1qc29uX2RhdGEuY2F0ZWdvcnkpCiAgICBwZXRzLmFwcGVuZChuZXdfcGV0KQogICAgcmV0dXJuIG5ld19wZXQKYGBgCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KPHN1bW1hcnk+T3IgdXNlIDxjb2RlPmFzeW5jIGRlZjwvY29kZT48L3N1bW1hcnk+CgpgYGBiYXNoCiQgcGlwIGluc3RhbGwgLVUgImFwaWZsYXNrW2FzeW5jXSIKYGBgCgpgYGBweXRob24KaW1wb3J0IGFzeW5jaW8KCmZyb20gYXBpZmxhc2sgaW1wb3J0IEFQSUZsYXNrCgphcHAgPSBBUElGbGFzayhfX25hbWVfXykKCgpAYXBwLmdldCgnLycpCmFzeW5jIGRlZiBzYXlfaGVsbG8oKToKICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMSkKICAgIHJldHVybiB7J21lc3NhZ2UnOiAnSGVsbG8hJ30KYGBgCgpTZWUgPGVtPjxhIGhyZWY9Imh0dHBzOi8vZmxhc2sucGFsbGV0c3Byb2plY3RzLmNvbS9hc3luYy1hd2FpdCI+VXNpbmcgYXN5bmMgYW5kIGF3YWl0PC9hPjwvZW0+IGZvciB0aGUgZGV0YWlscyBvZiB0aGUgYXN5bmMgc3VwcG9ydCBpbiBGbGFzayAyLjAuCgo8L2RldGFpbHM+CgpTYXZlIHRoaXMgYXMgYGFwcC5weWAsIHRoZW4gcnVuIGl0IHdpdGg6CgpgYGBiYXNoCiQgZmxhc2sgcnVuIC0tZGVidWcKYGBgCgpOb3cgdmlzaXQgdGhlIGludGVyYWN0aXZlIEFQSSBkb2N1bWVudGF0aW9uIChTd2FnZ2VyIFVJKSBhdCA8aHR0cDovL2xvY2FsaG9zdDo1MDAwL2RvY3M+OgoKIVtdKGh0dHBzOi8vYXBpZmxhc2suY29tL19hc3NldHMvc3dhZ2dlci11aS5wbmcpCgpPciB5b3UgY2FuIGNoYW5nZSB0aGUgQVBJIGRvY3VtZW50YXRpb24gVUkgd2hlbiBjcmVhdGluZyB0aGUgQVBJRmxhc2sgaW5zdGFuY2Ugd2l0aCB0aGUgYGRvY3NfdWlgIHBhcmFtZXRlcjoKCmBgYHB5CmFwcCA9IEFQSUZsYXNrKF9fbmFtZV9fLCBkb2NzX3VpPSdyZWRvYycpCmBgYAoKTm93IDxodHRwOi8vbG9jYWxob3N0OjUwMDAvZG9jcz4gd2lsbCByZW5kZXIgdGhlIEFQSSBkb2N1bWVudGF0aW9uIHdpdGggUmVkb2MuCgpTdXBwb3J0ZWQgYGRvY3NfdWlgIHZhbHVlcyAoVUkgbGlicmFyaWVzKSBpbmNsdWRlOgoKLSBgc3dhZ2dlci11aWAgKGRlZmF1bHQgdmFsdWUpOiBbU3dhZ2dlciBVSV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkpCi0gYHJlZG9jYDogW1JlZG9jXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvYykKLSBgZWxlbWVudHNgOiBbRWxlbWVudHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9wbGlnaHRpby9lbGVtZW50cykKLSBgcmFwaWRvY2A6IFtSYXBpRG9jXShodHRwczovL2dpdGh1Yi5jb20vcmFwaS1kb2MvUmFwaURvYykKLSBgcmFwaXBkZmA6IFtSYXBpUERGXShodHRwczovL2dpdGh1Yi5jb20vbXJpbjkvUmFwaVBkZikKClRoZSBhdXRvLWdlbmVyYXRlZCBPcGVuQVBJIHNwZWMgZmlsZSBpcyBhdmFpbGFibGUgYXQgPGh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9vcGVuYXBpLmpzb24+LiBZb3UgY2FuIGFsc28gZ2V0IHRoZSBzcGVjIHdpdGggW3RoZSBgZmxhc2sgc3BlY2AgY29tbWFuZF0oaHR0cHM6Ly9hcGlmbGFzay5jb20vb3BlbmFwaS8jdGhlLWZsYXNrLXNwZWMtY29tbWFuZCk6CgpgYGBiYXNoCiQgZmxhc2sgc3BlYwpgYGAKCkZvciBzb21lIGNvbXBsZXRlIGV4YW1wbGVzLCBzZWUgWy9leGFtcGxlc10oaHR0cHM6Ly9naXRodWIuY29tL2FwaWZsYXNrL2FwaWZsYXNrL3RyZWUvbWFpbi9leGFtcGxlcykuCgoKIyMgUmVsYXRpb25zaGlwIHdpdGggRmxhc2sKCkFQSUZsYXNrIGlzIGEgdGhpbiB3cmFwcGVyIG9uIHRvcCBvZiBGbGFzay4gWW91IG9ubHkgbmVlZCB0byByZW1lbWJlciB0aGUgZm9sbG93aW5nIGRpZmZlcmVuY2VzIChzZWUgKltNaWdyYXRpbmcgZnJvbSBGbGFza10oaHR0cHM6Ly9hcGlmbGFzay5jb20vbWlncmF0aW9ucy9mbGFzay8pKiBmb3IgbW9yZSBkZXRhaWxzKToKCi0gV2hlbiBjcmVhdGluZyBhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZSwgdXNlIGBBUElGbGFza2AgaW5zdGVhZCBvZiBgRmxhc2tgLgotIFdoZW4gY3JlYXRpbmcgYSBibHVlcHJpbnQgaW5zdGFuY2UsIHVzZSBgQVBJQmx1ZXByaW50YCBpbnN0ZWFkIG9mIGBCbHVlcHJpbnRgLgotIFRoZSBgYWJvcnQoKWAgZnVuY3Rpb24gZnJvbSBBUElGbGFzayAoYGFwaWZsYXNrLmFib3J0YCkgcmV0dXJucyBKU09OIGVycm9yIHJlc3BvbnNlLgoKRm9yIGEgbWluaW1hbCBGbGFzayBhcHBsaWNhdGlvbjoKCmBgYHB5dGhvbgpmcm9tIGZsYXNrIGltcG9ydCBGbGFzaywgcmVxdWVzdApmcm9tIG1hcmt1cHNhZmUgaW1wb3J0IGVzY2FwZQoKYXBwID0gRmxhc2soX19uYW1lX18pCgpAYXBwLnJvdXRlKCcvJykKZGVmIGhlbGxvKCk6CiAgICBuYW1lID0gcmVxdWVzdC5hcmdzLmdldCgnbmFtZScsICdIdW1hbicpCiAgICByZXR1cm4gZidIZWxsbywge2VzY2FwZShuYW1lKX0nCmBgYAoKTm93IGNoYW5nZSB0byBBUElGbGFzazoKCmBgYHB5dGhvbgpmcm9tIGFwaWZsYXNrIGltcG9ydCBBUElGbGFzayAgIyBzdGVwIG9uZQpmcm9tIGZsYXNrIGltcG9ydCByZXF1ZXN0CmZyb20gbWFya3Vwc2FmZSBpbXBvcnQgZXNjYXBlCgphcHAgPSBBUElGbGFzayhfX25hbWVfXykgICMgc3RlcCB0d28KCkBhcHAucm91dGUoJy8nKQpkZWYgaGVsbG8oKToKICAgIG5hbWUgPSByZXF1ZXN0LmFyZ3MuZ2V0KCduYW1lJywgJ0h1bWFuJykKICAgIHJldHVybiBmJ0hlbGxvLCB7ZXNjYXBlKG5hbWUpfScKYGBgCgpJbiBhIHdvcmQsIHRvIG1ha2UgV2ViIEFQSSBkZXZlbG9wbWVudCBpbiBGbGFzayBtb3JlIGVhc2lseSwgQVBJRmxhc2sgcHJvdmlkZXMgYEFQSUZsYXNrYCBhbmQgYEFQSUJsdWVwcmludGAgdG8gZXh0ZW5kIEZsYXNrJ3MgYEZsYXNrYCBhbmQgYEJsdWVwcmludGAgb2JqZWN0cyBhbmQgaXQgYWxzbyBzaGlwcyB3aXRoIHNvbWUgaGVscGZ1bCB1dGlsaXRpZXMuIE90aGVyIHRoYW4gdGhhdCwgeW91IGFyZSBhY3R1YWxseSB1c2luZyBGbGFzay4KCgojIyBDcmVkaXRzCgpBUElGbGFzayBzdGFydHMgYXMgYSBmb3JrIG9mIFtBUElGYWlyeV0oaHR0cHM6Ly9naXRodWIuY29tL21pZ3VlbGdyaW5iZXJnL0FQSUZhaXJ5KSBhbmQgaXMgaW5zcGlyZWQgYnkgW2ZsYXNrLXNtb3Jlc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJzaG1hbGxvdy1jb2RlL2ZsYXNrLXNtb3Jlc3QpIGFuZCBbRmFzdEFQSV0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL2Zhc3RhcGkpIChzZWUgKltDb21wYXJpc29uIGFuZCBNb3RpdmF0aW9uc10oaHR0cHM6Ly9hcGlmbGFzay5jb20vY29tcGFyaXNvbikqIGZvciB0aGUgY29tcGFyaXNvbiBiZXR3ZWVuIHRoZXNlIHByb2plY3RzKS4K readmeEtag: '"02b0bb3919b7318a1c0f666420d0e77673b87ba7"' readmeLastModified: Sun, 16 Nov 2025 09:21:13 GMT repositoryId: 329190167 description: A lightweight Python web API framework. created: '2021-01-13T04:08:48Z' updated: '2026-02-06T03:00:42Z' language: Python archived: false stars: 1119 watchers: 18 forks: 143 owner: apiflask logo: https://avatars.githubusercontent.com/u/78075725?v=4 license: MIT repoEtag: '"b295bd423ebd140a7ed7bb00586d0904321b4563d136f673f9707d4ba554e56e"' repoLastModified: Fri, 06 Feb 2026 03:00:42 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/greyli/apiflask - source: openapi3 tags repository: https://github.com/networknt/json-schema-validator v3: true repositoryMetadata: base64Readme: >- W1N0YWNrIE92ZXJmbG93XShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy90YWdnZWQvbGlnaHQtNGopIHwKW0dvb2dsZSBHcm91cF0oaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIWZvcnVtL2xpZ2h0LTRqKSB8CltHaXR0ZXIgQ2hhdF0oaHR0cHM6Ly9naXR0ZXIuaW0vbmV0d29ya250L2pzb24tc2NoZW1hLXZhbGlkYXRvcikgfApbU3VicmVkZGl0XShodHRwczovL3d3dy5yZWRkaXQuY29tL3IvbGlnaHRhcGkvKSB8CltZb3V0dWJlXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDSENSTVdKVlh3OGlCN3pLeEY1NUJ5dykgfApbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2MubmV0d29ya250LmNvbS9saWJyYXJ5L2pzb24tc2NoZW1hLXZhbGlkYXRvci8pIHwKW0NvbnRyaWJ1dGlvbiBHdWlkZV0oaHR0cHM6Ly9kb2MubmV0d29ya250LmNvbS9jb250cmlidXRlLykgfAoKWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9uZXR3b3JrbnQvanNvbi1zY2hlbWEtdmFsaWRhdG9yL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbmV0d29ya250L2pzb24tc2NoZW1hLXZhbGlkYXRvci9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwpClshW01hdmVuIENlbnRyYWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tY2VudHJhbC92L2NvbS5uZXR3b3JrbnQvanNvbi1zY2hlbWEtdmFsaWRhdG9yLnN2ZyldKGh0dHA6Ly9zZWFyY2gubWF2ZW4ub3JnLyNzZWFyY2glN0NnYSU3QzElN0NnJTNBY29tLm5ldHdvcmtudCUyMGElM0Fqc29uLXNjaGVtYS12YWxpZGF0b3IpClshW2NvZGVjb3YuaW9dKGh0dHBzOi8vY29kZWNvdi5pby9naXRodWIvbmV0d29ya250L2pzb24tc2NoZW1hLXZhbGlkYXRvci9jb3ZlcmFnZS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vY29kZWNvdi5pby9naXRodWIvbmV0d29ya250L2pzb24tc2NoZW1hLXZhbGlkYXRvcj9icmFuY2g9bWFzdGVyKQpbIVtKYXZhZG9jc10oaHR0cDovL3d3dy5qYXZhZG9jLmlvL2JhZGdlL2NvbS5uZXR3b3JrbnQvanNvbi1zY2hlbWEtdmFsaWRhdG9yLnN2ZyldKGh0dHBzOi8vd3d3LmphdmFkb2MuaW8vZG9jL2NvbS5uZXR3b3JrbnQvanNvbi1zY2hlbWEtdmFsaWRhdG9yKQoKVGhpcyBpcyBhIEphdmEgaW1wbGVtZW50YXRpb24gb2YgdGhlIFtKU09OIFNjaGVtYSBDb3JlIERyYWZ0IHY0LCB2NiwgdjcsIHYyMDE5LTA5IGFuZCB2MjAyMC0xMl0oaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvc3BlY2lmaWNhdGlvbikgc3BlY2lmaWNhdGlvbiBmb3IgSlNPTiBzY2hlbWEgdmFsaWRhdGlvbi4gVGhpcyBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBbQ3VzdG9taXppbmcgRGlhbGVjdHMsIFZvY2FidWxhcmllcywgS2V5d29yZHMgYW5kIEZvcm1hdHNdKGRvYy9jdXN0b20tZGlhbGVjdC5tZCkuCgpUaGUgSlNPTiBwYXJzZXIgdXNlZCBpcyB0aGUgW0phY2tzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9GYXN0ZXJYTUwvamFja3NvbikgcGFyc2VyLgoKW09wZW5BUEldKGRvYy9vcGVuYXBpLm1kKSAzIHJlcXVlc3QvcmVzcG9uc2UgdmFsaWRhdGlvbiBpcyBzdXBwb3J0ZWQgd2l0aCB0aGUgdXNlIG9mIHRoZSBhcHByb3ByaWF0ZSBkaWFsZWN0LgoKQXMgaXQgaXMgYSBrZXkgY29tcG9uZW50IGluIG91ciBbbGlnaHQtNGpdKGh0dHBzOi8vZ2l0aHViLmNvbS9uZXR3b3JrbnQvbGlnaHQtNGopIG1pY3Jvc2VydmljZXMgZnJhbWV3b3JrIHRvIHZhbGlkYXRlIHJlcXVlc3QvcmVzcG9uc2UgYWdhaW5zdCBPcGVuQVBJIHNwZWNpZmljYXRpb24gZm9yIFtsaWdodC1yZXN0LTRqXShodHRwOi8vd3d3Lm5ldHdvcmtudC5jb20vc3R5bGUvbGlnaHQtcmVzdC00ai8pIGFuZCBSUEMgc2NoZW1hIGZvciBbbGlnaHQtaHlicmlkLTRqXShodHRwOi8vd3d3Lm5ldHdvcmtudC5jb20vc3R5bGUvbGlnaHQtaHlicmlkLTRqLykgYXQgcnVudGltZSwgcGVyZm9ybWFuY2UgaXMgdGhlIG1vc3QgaW1wb3J0YW50IGFzcGVjdCBpbiB0aGUgZGVzaWduLgoKIyMgSlNPTiBTY2hlbWEgU3BlY2lmaWNhdGlvbiBjb21wYXRpYmlsaXR5CgpbIVtTdXBwb3J0ZWQgRGlhbGVjdHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZW5kcG9pbnQ/dXJsPWh0dHBzJTNBJTJGJTJGYm93dGllLnJlcG9ydCUyRmJhZGdlcyUyRmphdmEtY29tLm5ldHdvcmtudC1qc29uLXNjaGVtYS12YWxpZGF0b3IlMkZzdXBwb3J0ZWRfdmVyc2lvbnMuanNvbildKGh0dHBzOi8vYm93dGllLnJlcG9ydC8jL2ltcGxlbWVudGF0aW9ucy9qYXZhLW5ldHdvcmtudC1qc29uLXNjaGVtYS12YWxpZGF0b3IpClshW0RyYWZ0IDIwMjAtMTJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZW5kcG9pbnQ/dXJsPWh0dHBzJTNBJTJGJTJGYm93dGllLnJlcG9ydCUyRmJhZGdlcyUyRmphdmEtY29tLm5ldHdvcmtudC1qc29uLXNjaGVtYS12YWxpZGF0b3IlMkZjb21wbGlhbmNlJTJGZHJhZnQyMDIwLTEyLmpzb24pXShodHRwczovL2Jvd3RpZS5yZXBvcnQvIy9kaWFsZWN0cy9kcmFmdDIwMjAtMTIpClshW0RyYWZ0IDIwMTktMDldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZW5kcG9pbnQ/dXJsPWh0dHBzJTNBJTJGJTJGYm93dGllLnJlcG9ydCUyRmJhZGdlcyUyRmphdmEtY29tLm5ldHdvcmtudC1qc29uLXNjaGVtYS12YWxpZGF0b3IlMkZjb21wbGlhbmNlJTJGZHJhZnQyMDE5LTA5Lmpzb24pXShodHRwczovL2Jvd3RpZS5yZXBvcnQvIy9kaWFsZWN0cy9kcmFmdDIwMTktMDkpClshW0RyYWZ0IDddKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZW5kcG9pbnQ/dXJsPWh0dHBzJTNBJTJGJTJGYm93dGllLnJlcG9ydCUyRmJhZGdlcyUyRmphdmEtY29tLm5ldHdvcmtudC1qc29uLXNjaGVtYS12YWxpZGF0b3IlMkZjb21wbGlhbmNlJTJGZHJhZnQ3Lmpzb24pXShodHRwczovL2Jvd3RpZS5yZXBvcnQvIy9kaWFsZWN0cy9kcmFmdDcpClshW0RyYWZ0IDZdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZW5kcG9pbnQ/dXJsPWh0dHBzJTNBJTJGJTJGYm93dGllLnJlcG9ydCUyRmJhZGdlcyUyRmphdmEtY29tLm5ldHdvcmtudC1qc29uLXNjaGVtYS12YWxpZGF0b3IlMkZjb21wbGlhbmNlJTJGZHJhZnQ2Lmpzb24pXShodHRwczovL2Jvd3RpZS5yZXBvcnQvIy9kaWFsZWN0cy9kcmFmdDYpClshW0RyYWZ0IDRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZW5kcG9pbnQ/dXJsPWh0dHBzJTNBJTJGJTJGYm93dGllLnJlcG9ydCUyRmJhZGdlcyUyRmphdmEtY29tLm5ldHdvcmtudC1qc29uLXNjaGVtYS12YWxpZGF0b3IlMkZjb21wbGlhbmNlJTJGZHJhZnQ0Lmpzb24pXShodHRwczovL2Jvd3RpZS5yZXBvcnQvIy9kaWFsZWN0cy9kcmFmdDQpCgpJbmZvcm1hdGlvbiBvbiB0aGUgY29tcGF0aWJpbGl0eSBzdXBwb3J0IGZvciBlYWNoIHZlcnNpb24sIGluY2x1ZGluZyBrbm93biBpc3N1ZXMsIGNhbiBiZSBmb3VuZCBpbiB0aGUgW0NvbXBhdGliaWxpdHkgd2l0aCBKU09OIFNjaGVtYSB2ZXJzaW9uc10oZG9jL2NvbXBhdGliaWxpdHkubWQpIGRvY3VtZW50LgoKU2luY2UgW0RyYWZ0IDIwMTktMDldKGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMTktMDkvanNvbi1zY2hlbWEtdmFsaWRhdGlvbiNyZmMuc2VjdGlvbi43KSB0aGUgYGZvcm1hdGAga2V5d29yZCBvbmx5IGdlbmVyYXRlcyBhbm5vdGF0aW9ucyBieSBkZWZhdWx0IGFuZCBkb2VzIG5vdCBnZW5lcmF0ZSBhc3NlcnRpb25zLgoKVGhpcyBiZWhhdmlvciBjYW4gYmUgb3ZlcnJpZGRlbiB0byBnZW5lcmF0ZSBhc3NlcnRpb25zIGJ5IHNldHRpbmcgdGhlIGBmb3JtYXRBc3NlcnRpb25zRW5hYmxlZGAgdG8gYHRydWVgIGluIGBTY2hlbWFSZWdpc3RyeUNvbmZpZ2Agb3IgYEV4ZWN1dGlvbkNvbmZpZ2AuCgojIyBVcGdyYWRpbmcgdG8gbmV3IHZlcnNpb25zCgpUaGlzIGxpYnJhcnkgY2FuIGNvbnRhaW4gYnJlYWtpbmcgY2hhbmdlcyBpbiBgbWlub3JgIHZlcnNpb24gcmVsZWFzZXMgdGhhdCBtYXkgcmVxdWlyZSBjb2RlIGNoYW5nZXMuCgpJbmZvcm1hdGlvbiBvbiBub3RhYmxlIG9yIGJyZWFraW5nIGNoYW5nZXMgd2hlbiB1cGdyYWRpbmcgdGhlIGxpYnJhcnkgY2FuIGJlIGZvdW5kIGluIHRoZSBbVXBncmFkaW5nIHRvIG5ldyB2ZXJzaW9uc10oZG9jL3VwZ3JhZGluZy5tZCkgZG9jdW1lbnQuCgpUaGUgW1JlbGVhc2VzXShodHRwczovL2dpdGh1Yi5jb20vbmV0d29ya250L2pzb24tc2NoZW1hLXZhbGlkYXRvci9yZWxlYXNlcykgcGFnZSB3aWxsIGNvbnRhaW4gaW5mb3JtYXRpb24gb24gdGhlIGxhdGVzdCB2ZXJzaW9ucy4KCiMjIENvbXBhcmluZyBhZ2FpbnN0IG90aGVyIGltcGxlbWVudGF0aW9ucwoKVGhlIFtKU09OIFNjaGVtYSBWYWxpZGF0aW9uIENvbXBhcmlzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9jcmVlay1zZXJ2aWNlL2pzb24tc2NoZW1hLXZhbGlkYXRpb24tY29tcGFyaXNvbikgcHJvamVjdCBmcm9tIENyZWVrIGhhcyBhbiBpbmZvcm1hdGl2ZSBbQ29tcGFyaXNvbiBvZiBKVk0gYmFzZWQgU2NoZW1hIFZhbGlkYXRpb24gSW1wbGVtZW50YXRpb25zXShodHRwczovL3d3dy5jcmVla3NlcnZpY2Uub3JnL2pzb24tc2NoZW1hLXZhbGlkYXRpb24tY29tcGFyaXNvbi8pIHdoaWNoIGNvbXBhcmVzIGJvdGggdGhlIGZ1bmN0aW9uYWwgYW5kIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyBvZiBhIG51bWJlciBvZiBkaWZmZXJlbnQgSmF2YSBpbXBsZW1lbnRhdGlvbnMuCgotIFtGdW5jdGlvbmFsIGNvbXBhcmlzb25dKGh0dHBzOi8vd3d3LmNyZWVrc2VydmljZS5vcmcvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi1jb21wYXJpc29uL2Z1bmN0aW9uYWwjc3VtbWFyeS1yZXN1bHRzLXRhYmxlKQotIFtQZXJmb3JtYW5jZSBjb21wYXJpc29uXShodHRwczovL3d3dy5jcmVla3NlcnZpY2Uub3JnL2pzb24tc2NoZW1hLXZhbGlkYXRpb24tY29tcGFyaXNvbi9wZXJmb3JtYW5jZSNqc29uLXNjaGVtYS10ZXN0LXN1aXRlLWJlbmNobWFyaykKClRoZSBbQm93dGllXShodHRwczovL2dpdGh1Yi5jb20vYm93dGllLWpzb24tc2NoZW1hL2Jvd3RpZSkgcHJvamVjdCBoYXMgYSBbcmVwb3J0XShodHRwczovL2Jvd3RpZS5yZXBvcnQvKSB0aGF0IGNvbXBhcmVzIGZ1bmN0aW9uYWwgY2hhcmFjdGVyaXN0aWNzIG9mIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMsIGluY2x1ZGluZyBub24tSmF2YSBpbXBsZW1lbnRhdGlvbnMsIGJ1dCBkb2VzIG5vdCBkbyBhbnkgcGVyZm9ybWFuY2UgYmVuY2htYXJraW5nLgoKIyMgV2h5IHRoaXMgbGlicmFyeQoKIyMjIyBQZXJmb3JtYW5jZQoKVGhlIGZvbGxvd2luZyBpcyB0aGUgYmVuY2htYXJrIHJlc3VsdHMgZnJvbSB0aGUgW0pTT04gU2NoZW1hIFZhbGlkYXRvciBQZXJmdGVzdF0oaHR0cHM6Ly9naXRodWIuY29tL25ldHdvcmtudC9qc29uLXNjaGVtYS12YWxpZGF0b3ItcGVyZnRlc3QpIHByb2plY3QgdGhhdCB1c2VzIHRoZSBbSmF2YSBNaWNyb2JlbmNobWFyayBIYXJuZXNzXShodHRwczovL2dpdGh1Yi5jb20vb3Blbmpkay9qbWgpLgoKTm90ZSB0aGF0IHRoZSBiZW5jaG1hcmsgcmVzdWx0cyBhcmUgaGlnaGx5IGRlcGVuZGVudCBvbiB0aGUgaW5wdXQgZGF0YSB3b3JrbG9hZHMgYW5kIHNjaGVtYXMgdXNlZCBmb3IgdGhlIHZhbGlkYXRpb24uCgpJbiB0aGlzIGNhc2UgdGhpcyB3b3JrbG9hZCBpcyB1c2luZyB0aGUgRHJhZnQgNCBzcGVjaWZpY2F0aW9uIGFuZCBsYXJnZWx5IHRlc3RzIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgZXZhbHVhdGluZyB0aGUgYHByb3BlcnRpZXNgIGtleXdvcmQuIFlvdSBtYXkgcmVmZXIgdG8gW1Jlc3VsdHMgb2YgcGVyZm9ybWFuY2UgY29tcGFyaXNvbiBvZiBKVk0gYmFzZWQgSlNPTiBTY2hlbWEgVmFsaWRhdGlvbiBJbXBsZW1lbnRhdGlvbnNdKGh0dHBzOi8vd3d3LmNyZWVrc2VydmljZS5vcmcvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi1jb21wYXJpc29uL3BlcmZvcm1hbmNlI2pzb24tc2NoZW1hLXRlc3Qtc3VpdGUtYmVuY2htYXJrKSBmb3IgYmVuY2htYXJrIHJlc3VsdHMgdGhhdCB1c2UgdGhlIFtKU09OIFNjaGVtYSBUZXN0IFN1aXRlXShodHRwczovL2dpdGh1Yi5jb20vanNvbi1zY2hlbWEtb3JnL0pTT04tU2NoZW1hLVRlc3QtU3VpdGUpLgoKSWYgcGVyZm9ybWFuY2UgaXMgYW4gaW1wb3J0YW50IGNvbnNpZGVyYXRpb24sIHRoZSBzcGVjaWZpYyBzYW1wbGUgd29ya2xvYWRzIHNob3VsZCBiZSBiZW5jaG1hcmtlZCwgYXMgdGhlcmUgYXJlIGRpZmZlcmVudCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgd2hlbiBjZXJ0YWluIGtleXdvcmRzIGFyZSB1c2VkLiBGb3IgaW5zdGFuY2UgdGhlIHVzZSBvZiB0aGUgYHVuZXZhbHVhdGVkUHJvcGVydGllc2Agb3IgYHVuZXZhbHVhdGVkSXRlbXNgIGtleXdvcmQgd2lsbCB0cmlnZ2VyIGFubm90YXRpb24gY29sbGVjdGlvbiBpbiB0aGUgcmVsYXRlZCB2YWxpZGF0b3JzLCBzdWNoIGFzIHRoZSBgcHJvcGVydGllc2Agb3IgYGl0ZW1zYCB2YWxpZGF0b3JzLCBhbmQgYW5ub3RhdGlvbiBjb2xsZWN0aW9uIHdpbGwgYWR2ZXJzZWx5IGFmZmVjdCBwZXJmb3JtYW5jZS4KClNwZWNpYWwgYXR0ZW50aW9uIHNob3VsZCBhbHNvIGJlIG1hZGUgZm9yIGluZWZmaWNpZW50IHNjaGVtYXMgdXNpbmcgZGVlcGx5IG5lc3RlZCBgb25lT2ZgIG9yIGBhbnlPZmAgdGhhdCBkbyBub3QgaGF2ZSBhIGNvbmRpdGlvbiB0byBzaG9ydC1jaXJjdWl0IHRoZSBldmFsdWF0aW9uIHVzaW5nIGBpZmAgYW5kIGB0aGVuYC4gVGhlIHZhbGlkYXRvciBoYXMgbm8gY2hvaWNlIGJ1dCB0byBwZXJmb3JtIGFsbCB0aGUgZXZhbHVhdGlvbnMsIGFuZCB0aGUgZXJyb3IgbWVzc2FnZXMgd291bGQgYmUgdHlwaWNhbGx5IHZlcnkgY29uZnVzaW5nIGFzIGl0IHdpbGwgcmV0dXJuIGFsbCB0aGUgbWVzc2FnZXMgZnJvbSB0aGUgY2hpbGRyZW4uCgojIyMjIyBOZXR3b3JrTlQgMi4wLjAKCmBgYApCZW5jaG1hcmsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZSAgQ250ICAgICAgIFNjb3JlICAgICBFcnJvciAgIFVuaXRzCk5ldHdvcmtudEJlbmNobWFyay5iYXNpYyAgICAgICAgICAgICAgICAgICAgIHRocnB0ICAgMTAgICAgNTI5Ny4xMDUgwrEgMjkwLjA3OCAgIG9wcy9zCk5ldHdvcmtudEJlbmNobWFyay5iYXNpYzpnYy5hbGxvYy5yYXRlICAgICAgIHRocnB0ICAgMTAgICAgMTYxOC4zMjggwrEgIDg4LjYyNiAgTUIvc2VjCk5ldHdvcmtudEJlbmNobWFyay5iYXNpYzpnYy5hbGxvYy5yYXRlLm5vcm0gIHRocnB0ICAgMTAgIDMyMDM2MC4wMjAgwrEgICAwLjAwMiAgICBCL29wCk5ldHdvcmtudEJlbmNobWFyay5iYXNpYzpnYy5jb3VudCAgICAgICAgICAgIHRocnB0ICAgMTAgICAgIDM2NS4wMDAgICAgICAgICAgICBjb3VudHMKTmV0d29ya250QmVuY2htYXJrLmJhc2ljOmdjLnRpbWUgICAgICAgICAgICAgdGhycHQgICAxMCAgICAgMTMwLjAwMCAgICAgICAgICAgICAgICBtcwpgYGAKCiMjIyMjIyBFdmVyaXQgMS4xNC42CgpgYGAKQmVuY2htYXJrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGUgIENudCAgICAgICBTY29yZSAgICAgRXJyb3IgICBVbml0cwpFdmVyaXRCZW5jaG1hcmsuYmFzaWMgICAgICAgICAgICAgICAgICAgICAgICB0aHJwdCAgIDEwICAgIDQ2MTUuNjM3IMKxIDE1MS4xOTUgICBvcHMvcwpFdmVyaXRCZW5jaG1hcmsuYmFzaWM6Z2MuYWxsb2MucmF0ZSAgICAgICAgICB0aHJwdCAgIDEwICAgIDIwOTcuODEwIMKxICA2OC43MDggIE1CL3NlYwpFdmVyaXRCZW5jaG1hcmsuYmFzaWM6Z2MuYWxsb2MucmF0ZS5ub3JtICAgICB0aHJwdCAgIDEwICA0NzY1OTIuMDIzIMKxICAgMC4wMDEgICAgQi9vcApFdmVyaXRCZW5jaG1hcmsuYmFzaWM6Z2MuY291bnQgICAgICAgICAgICAgICB0aHJwdCAgIDEwICAgICA1MjEuMDAwICAgICAgICAgICAgY291bnRzCkV2ZXJpdEJlbmNobWFyay5iYXNpYzpnYy50aW1lICAgICAgICAgICAgICAgIHRocnB0ICAgMTAgICAgIDE3MC4wMDAgICAgICAgICAgICAgICAgbXMKYGBgCgojIyMjIEZ1bmN0aW9uYWxpdHkKClRoaXMgaW1wbGVtZW50YXRpb24gaXMgdGVzdGVkIGFnYWluc3QgdGhlIFtKU09OIFNjaGVtYSBUZXN0IFN1aXRlXShodHRwczovL2dpdGh1Yi5jb20vanNvbi1zY2hlbWEtb3JnL0pTT04tU2NoZW1hLVRlc3QtU3VpdGUpLiBBcyB0ZXN0cyBhcmUgY29udGludWFsbHkgYWRkZWQgdG8gdGhlIHN1aXRlLCB0aGVzZSB0ZXN0IHJlc3VsdHMgbWF5IG5vdCBiZSBjdXJyZW50LgoKfCBJbXBsZW1lbnRhdGlvbnMgfCBPdmVyYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERSQUZUXzAzIHwgRFJBRlRfMDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRFJBRlRfMDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRFJBRlRfMDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRFJBRlRfMjAxOV8wOSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERSQUZUXzIwMjBfMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgTmV0d29ya050ICAgICAgIHwgcGFzczogcjo0ODQwICgxMDAuMCUpIG86MjQyMSAoMTAwLjAlKTxicj5mYWlsOiByOjAgKDAuMCUpIG86MCAoMC4wJSkgfCAgICAgICAgICB8IHBhc3M6IHI6NjEwICgxMDAuMCUpIG86MjU1ICgxMDAuMCUpPGJyPmZhaWw6IHI6MCAoMC4wJSkgbzowICgwLjAlKSB8IHBhc3M6IHI6ODI5ICgxMDAuMCUpIG86MzIyICgxMDAuMCUpPGJyPmZhaWw6IHI6MCAoMC4wJSkgbzowICgwLjAlKSB8IHBhc3M6IHI6OTEzICgxMDAuMCUpIG86NTU0ICgxMDAuMCUpPGJyPmZhaWw6IHI6MCAoMC4wJSkgbzowICgwLjAlKSB8IHBhc3M6IHI6MTIyNyAoMTAwLjAlKSBvOjYzOSAoMTAwLjAlKTxicj5mYWlsOiByOjAgKDAuMCUpIG86MCAoMC4wJSkgfCBwYXNzOiByOjEyNjEgKDEwMC4wJSkgbzo2NTEgKDEwMC4wJSk8YnI+ZmFpbDogcjowICgwLjAlKSBvOjAgKDAuMCUpIHwKCi0gTm90ZSB0aGF0IHRoaXMgdXNlcyB0aGUgYEpvbmlSZWd1bGFyRXhwcmVzc2lvbkZhY3RvcnlgIGZvciB0aGUgYHBhdHRlcm5gIGFuZCBgZm9ybWF0YCBgcmVnZXhgIHRlc3RzLgoKIyMjIyBKYWNrc29uIFBhcnNlcgoKVGhpcyBsaWJyYXJ5IHVzZXMgW0phY2tzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9GYXN0ZXJYTUwvamFja3Nvbikgd2hpY2ggaXMgYSBKYXZhIEpTT04gcGFyc2VyIHRoYXQgaXMgd2lkZWx5IHVzZWQgaW4gb3RoZXIgcHJvamVjdHMuIElmIHlvdSBhcmUgYWxyZWFkeSB1c2luZyB0aGUgSmFja3NvbiBwYXJzZXIgaW4geW91ciBwcm9qZWN0LCBpdCBpcyBuYXR1cmFsIHRvIGNob29zZSB0aGlzIGxpYnJhcnkgb3ZlciBvdGhlcnMgZm9yIHNjaGVtYSB2YWxpZGF0aW9uLgoKIyMjIyBZQU1MIFN1cHBvcnQKClRoZSBsaWJyYXJ5IHdvcmtzIHdpdGggSlNPTiBhbmQgWUFNTCBvbiBib3RoIHNjaGVtYSBkZWZpbml0aW9ucyBhbmQgaW5wdXQgZGF0YS4KCiMjIyMgT3BlbkFQSSBTdXBwb3J0CgpUaGUgT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbiBpcyB1c2luZyBKU09OIHNjaGVtYSB0byB2YWxpZGF0ZSB0aGUgcmVxdWVzdC9yZXNwb25zZS4gVGhlIGxpYnJhcnkgaGFzIHN1cHBvcnQgZm9yIHRoZSBPcGVuQVBJIDMuMCBhbmQgT3BlbkFQSSAzLjEgZGlhbGVjdHMuCgojIyMjIE1pbmltYWwgRGVwZW5kZW5jaWVzCgpGb2xsb3dpbmcgdGhlIGRlc2lnbiBwcmluY2lwbGUgb2YgdGhlIExpZ2h0IFBsYXRmb3JtLCB0aGlzIGxpYnJhcnkgaGFzIG1pbmltYWwgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gZGVwZW5kZW5jeSBjb25mbGljdHMgd2hlbiB1c2luZyBpdC4KCiMjIyMjIFJlcXVpcmVkIERlcGVuZGVuY2llcwoKVGhlIGZvbGxvd2luZyBhcmUgdGhlIGRlcGVuZGVuY2llcyB0aGF0IHdpbGwgYXV0b21hdGljYWxseSBiZSBpbmNsdWRlZCB3aGVuIHRoaXMgbGlicmFyeSBpcyBpbmNsdWRlZC4KCmBgYHhtbAo8ZGVwZW5kZW5jeT4KICAgIDwhLS0gVXNlZCBmb3IgbG9nZ2luZyAtLT4KICAgIDxncm91cElkPm9yZy5zbGY0ajwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPnNsZjRqLWFwaTwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPiR7dmVyc2lvbi5zbGY0an08L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KCjxkZXBlbmRlbmN5PgogICAgPCEtLSBVc2VkIHRvIHByb2Nlc3MgSlNPTiAtLT4KICAgIDxncm91cElkPmNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5jb3JlPC9ncm91cElkPgogICAgPGFydGlmYWN0SWQ+amFja3Nvbi1kYXRhYmluZDwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPiR7dmVyc2lvbi5qYWNrc29ufTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgoKPGRlcGVuZGVuY3k+CiAgICA8IS0tIFVzZWQgdG8gcHJvY2VzcyBZQU1MIC0tPgogICAgPGdyb3VwSWQ+Y29tLmZhc3RlcnhtbC5qYWNrc29uLmRhdGFmb3JtYXQ8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLWRhdGFmb3JtYXQteWFtbDwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPiR7dmVyc2lvbi5qYWNrc29ufTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgoKPGRlcGVuZGVuY3k+CiAgICA8IS0tIFVzZWQgdG8gdmFsaWRhdGUgUkZDIDMzMzkgZGF0ZSBhbmQgZGF0ZS10aW1lIC0tPgogICAgPGdyb3VwSWQ+Y29tLmV0aGxvLnRpbWU8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5pdHU8L2FydGlmYWN0SWQ+CiAgICA8dmVyc2lvbj4ke3ZlcnNpb24uaXR1fTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKCiMjIyMjIE9wdGlvbmFsIERlcGVuZGVuY2llcwoKVGhlIGZvbGxvd2luZyBhcmUgdGhlIG9wdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IG1heSBiZSByZXF1aXJlZCBmb3IgY2VydGFpbiBvcHRpb25zLgoKVGhlc2UgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkIGFuZCBzZXR0aW5nIHRoZSByZWxldmFudCBvcHRpb24gd2l0aG91dCBhZGRpbmcgdGhlIGxpYnJhcnkgd2lsbCByZXN1bHQgaW4gYSBgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbmAuCgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgICA8IS0tIFVzZWQgdG8gdmFsaWRhdGUgRUNNQSAyNjIgcmVndWxhciBleHByZXNzaW9ucyAtLT4KICAgIDwhLS0gQXBwcm94aW1hdGVseSA1MCBNQiBpbiBkZXBlbmRlbmNpZXMgLS0+CiAgICA8IS0tIEdyYWFsSlNSZWd1bGFyRXhwcmVzc2lvbkZhY3RvcnkgLS0+CiAgICA8Z3JvdXBJZD5vcmcuZ3JhYWx2bS5qczwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPmpzPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+JHt2ZXJzaW9uLmdyYWFsanN9PC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+Cgo8ZGVwZW5kZW5jeT4KICAgIDwhLS0gVXNlZCB0byB2YWxpZGF0ZSBFQ01BIDI2MiByZWd1bGFyIGV4cHJlc3Npb25zIC0tPgogICAgPCEtLSBBcHByb3hpbWF0ZWx5IDIgTUIgaW4gZGVwZW5kZW5jaWVzIC0tPgogICAgPCEtLSBKb25pUmVndWxhckV4cHJlc3Npb25GYWN0b3J5IC0tPgogICAgPGdyb3VwSWQ+b3JnLmpydWJ5Lmpvbmk8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5qb25pPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+JHt2ZXJzaW9uLmpvbml9PC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CmBgYAoKIyMjIyMgRXhjbHVkYWJsZSBEZXBlbmRlbmNpZXMKClRoZSBmb2xsb3dpbmcgYXJlIHJlcXVpcmVkIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkLCBidXQgY2FuIGJlIGV4cGxpY2l0bHkgZXhjbHVkZWQgaWYgdGhleSBhcmUgbm90IHJlcXVpcmVkLgoKVGhlIFlBTUwgZGVwZW5kZW5jeSBjYW4gYmUgZXhjbHVkZWQgaWYgdGhpcyBpcyBub3QgcmVxdWlyZWQuIEF0dGVtcHRpbmcgdG8gcHJvY2VzcyBzY2hlbWFzIG9yIGlucHV0IHRoYXQgYXJlIFlBTUwgd2lsbCByZXN1bHQgaW4gYSBgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbmAuCgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgICA8Z3JvdXBJZD5jb20ubmV0d29ya250PC9ncm91cElkPgogICAgPGFydGlmYWN0SWQ+anNvbi1zY2hlbWEtdmFsaWRhdG9yPC9hcnRpZmFjdElkPgogICAgPGV4Y2x1c2lvbnM+CiAgICAgICAgPGV4Y2x1c2lvbj4KICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmZhc3RlcnhtbC5qYWNrc29uLmRhdGFmb3JtYXQ8L2dyb3VwSWQ+CiAgICAgICAgICAgIDxhcnRpZmFjdElkPmphY2tzb24tZGF0YWZvcm1hdC15YW1sPC9hcnRpZmFjdElkPgogICAgICAgIDwvZXhjbHVzaW9uPgogICAgPC9leGNsdXNpb25zPgo8L2RlcGVuZGVuY3k+CmBgYAoKVGhlIEV0aGxvIFRpbWUgZGVwZW5kZW5jeSBjYW4gYmUgZXhjbHVkZWQgaWYgYWNjdXJhdGUgdmFsaWRhdGlvbiBvZiB0aGUgYGRhdGUtdGltZWAgZm9ybWF0IGlzIG5vdCByZXF1aXJlZC4gVGhlIGBkYXRlLXRpbWVgIGZvcm1hdCB3aWxsIHRoZW4gdXNlIGBqYXZhLnRpbWUuT2Zmc2V0RGF0ZVRpbWVgIHRvIGRldGVybWluZSBpZiB0aGUgYGRhdGUtdGltZWAgaXMgdmFsaWQgLgoKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+Y29tLm5ldHdvcmtudDwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPmpzb24tc2NoZW1hLXZhbGlkYXRvcjwvYXJ0aWZhY3RJZD4KICAgIDxleGNsdXNpb25zPgogICAgICAgIDxleGNsdXNpb24+CiAgICAgICAgICAgIDxncm91cElkPmNvbS5ldGhsby50aW1lPC9ncm91cElkPgogICAgICAgICAgICA8YXJ0aWZhY3RJZD5pdHU8L2FydGlmYWN0SWQ+CiAgICAgICAgPC9leGNsdXNpb24+CiAgICA8L2V4Y2x1c2lvbnM+CjwvZGVwZW5kZW5jeT4KYGBgCgojIyMjIENvbW11bml0eQoKVGhpcyBsaWJyYXJ5IGlzIHZlcnkgYWN0aXZlIHdpdGggYSBsb3Qgb2YgY29udHJpYnV0b3JzLiBOZXcgZmVhdHVyZXMgYW5kIGJ1ZyBmaXhlcyBhcmUgaGFuZGxlZCBxdWlja2x5IGJ5IHRoZSB0ZWFtIG1lbWJlcnMuIEJlY2F1c2UgaXQgaXMgYW4gZXNzZW50aWFsIGRlcGVuZGVuY3kgb2YgdGhlIFtsaWdodC00al0oaHR0cHM6Ly9naXRodWIuY29tL25ldHdvcmtudC9saWdodC00aikgZnJhbWV3b3JrIGluIHRoZSBzYW1lIEdpdEh1YiBvcmdhbml6YXRpb24sIGl0IHdpbGwgYmUgZXZvbHZlZCBhbmQgbWFpbnRhaW5lZCBhbG9uZyB3aXRoIHRoZSBmcmFtZXdvcmsuCgojIyBQcmVyZXF1aXNpdGUKClRoZSBsaWJyYXJ5IHN1cHBvcnRzIEphdmEgOCBhbmQgdXAuIElmIHlvdSB3YW50IHRvIGJ1aWxkIGZyb20gdGhlIHNvdXJjZSBjb2RlLCB5b3UgbmVlZCB0byBpbnN0YWxsIEpESyA4IGxvY2FsbHkuIFRvIHN1cHBvcnQgbXVsdGlwbGUgdmVyc2lvbiBvZiBKREssIHlvdSBjYW4gdXNlIFtTREtNQU5dKGh0dHBzOi8vd3d3Lm5ldHdvcmtudC5jb20vdG9vbC9zZGsvKQoKIyMgVXNhZ2UKCiMjIyBBZGRpbmcgdGhlIGRlcGVuZGVuY3kKClRoZSBganNvbi1zY2hlbWEtdmFsaWRhdG9yYCBwYWNrYWdlIGlzIHB1Ymxpc2hlZCB0byBNYXZlbiBDZW50cmFsIGFuZCBpcyBhdmFpbGFibGUgaW4gdHdvIG1ham9yIHJlbGVhc2UgbGluZXMsIGRlcGVuZGluZyBvbiB5b3VyIEphdmEgYW5kIEphY2tzb24gdmVyc2lvbnM6CgotICoqMi54LngqKiDigJQgQ29tcGF0aWJsZSB3aXRoICoqSmF2YSA4KyoqIGFuZCAqKkphY2tzb24gMi54KioKLSAqKjMueC54Kiog4oCUIENvbXBhdGlibGUgd2l0aCAqKkphdmEgMTcrKiogYW5kICoqSmFja3NvbiAzLngqKgoKIyMjIyBNYXZlbjoKCioqSmFja3NvbiAyIChKYXZhIDgrKSoqCgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgICA8Z3JvdXBJZD5jb20ubmV0d29ya250PC9ncm91cElkPgogICAgPGFydGlmYWN0SWQ+anNvbi1zY2hlbWEtdmFsaWRhdG9yPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+Mi4wLjE8L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgCgoKKipKYWNrc29uIDMgKEphdmEgMTcrKSoqCgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgICA8Z3JvdXBJZD5jb20ubmV0d29ya250PC9ncm91cElkPgogICAgPGFydGlmYWN0SWQ+anNvbi1zY2hlbWEtdmFsaWRhdG9yPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+My4wLjA8L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgCgojIyMjIEdyYWRsZToKCgoqKkphY2tzb24gMiAoSmF2YSA4KykqKgoKCmBgYGphdmEKZGVwZW5kZW5jaWVzIHsKICAgIGltcGxlbWVudGF0aW9uKGdyb3VwOiAnY29tLm5ldHdvcmtudCcsIG5hbWU6ICdqc29uLXNjaGVtYS12YWxpZGF0b3InLCB2ZXJzaW9uOiAnMi4wLjEnKTsKfQpgYGAKCgoqKkphY2tzb24gMyAoSmF2YSAxNyspKioKCgpgYGBqYXZhCmRlcGVuZGVuY2llcyB7CiAgICBpbXBsZW1lbnRhdGlvbihncm91cDogJ2NvbS5uZXR3b3JrbnQnLCBuYW1lOiAnanNvbi1zY2hlbWEtdmFsaWRhdG9yJywgdmVyc2lvbjogJzMuMC4wJyk7Cn0KYGBgCgoKIyMjIFZhbGlkYXRpbmcgaW5wdXRzIGFnYWluc3QgYSBzY2hlbWEKClRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgaG93IGlucHV0cyBhcmUgdmFsaWRhdGVkIGFnYWluc3QgYSBzY2hlbWEuIEl0IGNvbXByaXNlcyB0aGUgZm9sbG93aW5nIHN0ZXBzLgoKLSBDcmVhdGluZyBhIGNvbmZpZ3VyYXRpb24gZm9yIGNvbnRyb2xsaW5nIHZhbGlkYXRvciBiZWhhdmlvci4KLSBDcmVhdGluZyBhIHNjaGVtYSByZWdpc3RyeSB3aXRoIHRoZSBkZWZhdWx0IHNjaGVtYSBkaWFsZWN0IGFuZCBob3cgdGhlIHNjaGVtYXMgY2FuIGJlIHJldHJpZXZlZC4KICAtIENvbmZpZ3VyaW5nIG1hcHBpbmcgdGhlIGAkaWRgIHRvIGEgcmV0cmlldmFsIElSSSB1c2luZyBgc2NoZW1hSWRSZXNvbHZlcnNgLgogIC0gQ29uZmlndXJpbmcgaG93IHRoZSBzY2hlbWFzIGFyZSBsb2FkZWQgdXNpbmcgdGhlIHJldHJpZXZhbCBJUkkuCiAgICBGb3IgaW5zdGFuY2UgYSBgTWFwPFN0cmluZywgU3RyaW5nPiBzY2hlbWFzYCBjb250YWluaW5nIGEgbWFwcGluZyBvZiByZXRyaWV2YWwgVVJJIHRvIHNjaGVtYSBkYXRhIGFzIGEgYFN0cmluZ2AgY2FuIGJ5IGNvbmZpZ3VyZWQgdXNpbmcgYGJ1aWxkZXIuc2NoZW1hcyhzY2hlbWFzKWAuIFRoaXMgYWxzbyBhY2NlcHRzIGEgYEZ1bmN0aW9uPFN0cmluZywgU3RyaW5nPiBzY2hlbWFSZXRyaWV2YWxGdW5jdGlvbmAuCi0gTG9hZGluZyBhIHNjaGVtYSBmcm9tIGEgc2NoZW1hIGxvY2F0aW9uLgotIFVzaW5nIHRoZSBzY2hlbWEgdG8gdmFsaWRhdGUgdGhlIGRhdGEgYWxvbmcgd2l0aCBzZXR0aW5nIGFueSBleGVjdXRpb24gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBsaWtlIGZvciBpbnN0YW5jZSB0aGUgbG9jYWxlIG9yIHdoZXRoZXIgZm9ybWF0IGFzc2VydGlvbnMgYXJlIGVuYWJsZWQuCgpgYGBqYXZhCi8qCiAqIFRoZSBTY2hlbWFSZWdpc3RyeUNvbmZpZyBjYW4gYmUgb3B0aW9uYWxseSB1c2VkIHRvIGNvbmZpZ3VyZSBjZXJ0YWluIGFzcGVjdHMKICogb2YgaG93IHRoZSB2YWxpZGF0aW9uIGlzIHBlcmZvcm1lZC4KICoKICogQnkgZGVmYXVsdCB0aGUgSkRLIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbXBsZW1lbnRhdGlvbiB3aGljaCBpcyBub3QgRUNNQSAyNjIKICogY29tcGxpYW50IGlzIHVzZWQuIFRoZSBHcmFhbEpTUmVndWxhckV4cHJlc3Npb25GYWN0b3J5LmdldEluc3RhbmNlKCkgb2ZmZXJzCiAqIHRoZSBiZXN0IGNvbXBsaWFuY2UgZm9sbG93ZWQgYnkgSm9uaVJlZ3VsYXJFeHByZXNzaW9uRmFjdG9yeS5nZXRJbnN0YW5jZSgpCiAqIGJ1dCBib3RoIHJlcXVpcmUgYWRkaXRpb25hbCBvcHRpb25hbCBkZXBlbmRlbmNpZXMuCiAqLwpTY2hlbWFSZWdpc3RyeUNvbmZpZyBzY2hlbWFSZWdpc3RyeUNvbmZpZyA9IFNjaGVtYVJlZ2lzdHJ5Q29uZmlnLmJ1aWxkZXIoKQogICAgICAgIC5yZWd1bGFyRXhwcmVzc2lvbkZhY3RvcnkoSm9uaVJlZ3VsYXJFeHByZXNzaW9uRmFjdG9yeS5nZXRJbnN0YW5jZSgpKS5idWlsZCgpOwoKLyoKICogVGhpcyBjcmVhdGVzIGEgc2NoZW1hIHJlZ2lzdHJ5IHRoYXQgc3VwcG9ydHMgYWxsIHRoZSBzdGFuZGFyZCBkaWFsZWN0cyBmb3IKICogY3Jvc3MtZGlhbGVjdCB2YWxpZGF0aW9uIGFuZCB3aWxsIHVzZSBEcmFmdCAyMDIwLTEyIGFzIHRoZSBkZWZhdWx0IGlmICRzY2hlbWEKICogaXMgbm90IHNwZWNpZmllZCBpbiB0aGUgc2NoZW1hIGRhdGEuIElmICRzY2hlbWEgaXMgc3BlY2lmaWVkIGluIHRoZSBzY2hlbWEKICogZGF0YSB0aGVuIHRoYXQgc2NoZW1hIGRpYWxlY3Qgd2lsbCBiZSB1c2VkIGluc3RlYWQgYW5kIHRoaXMgdmVyc2lvbiBpcwogKiBpZ25vcmVkLgogKi8KU2NoZW1hUmVnaXN0cnkgc2NoZW1hUmVnaXN0cnkgPSBTY2hlbWFSZWdpc3RyeS53aXRoRGVmYXVsdERpYWxlY3QoU3BlY2lmaWNhdGlvblZlcnNpb24uRFJBRlRfMjAyMF8xMiwKICAgICAgICBidWlsZGVyIC0+IGJ1aWxkZXIuc2NoZW1hUmVnaXN0cnlDb25maWcoc2NoZW1hUmVnaXN0cnlDb25maWcpCiAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICogVGhpcyBjcmVhdGVzIGEgbWFwcGluZyBmcm9tICRpZCB3aGljaCBzdGFydHMgd2l0aAogICAgICAgICAgICAgICAgICogaHR0cHM6Ly93d3cuZXhhbXBsZS5vcmcvc2NoZW1hIHRvIHRoZSByZXRyaWV2YWwgSVJJIGNsYXNzcGF0aDpzY2hlbWEuCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIC5zY2hlbWFJZFJlc29sdmVycyhzY2hlbWFJZFJlc29sdmVycyAtPiBzY2hlbWFJZFJlc29sdmVycwogICAgICAgICAgICAgICAgICAgICAgICAubWFwUHJlZml4KCJodHRwczovL3d3dy5leGFtcGxlLmNvbS9zY2hlbWEiLCAiY2xhc3NwYXRoOnNjaGVtYSIpKSk7CgovKgogKiBEdWUgdG8gdGhlIG1hcHBpbmcgdGhlIHNjaGVtYSB3aWxsIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBjbGFzc3BhdGggYXQKICogY2xhc3NwYXRoOnNjaGVtYS9leGFtcGxlLW1haW4uanNvbi4gSWYgdGhlIHNjaGVtYSBkYXRhIGRvZXMgbm90IHNwZWNpZnkgYW4KICogJGlkIHRoZSBhYnNvbHV0ZSBJUkkgb2YgdGhlIHNjaGVtYSBsb2NhdGlvbiB3aWxsIGJlIHVzZWQgYXMgdGhlICRpZC4gSWYgdGhlCiAqIHNjaGVtYSBkYXRhIGRvZXMgbm90IHNwZWNpZnkgYSBkaWFsZWN0IHVzaW5nICRzY2hlbWEgdGhlIGRlZmF1bHQgZGlhbGVjdAogKiBzcGVjaWZpZWQgd2hlbiBjcmVhdGluZyB0aGUgc2NoZW1hIHJlZ2lzdHJ5LgogKi8KU2NoZW1hIHNjaGVtYSA9IHNjaGVtYVJlZ2lzdHJ5LmdldFNjaGVtYShTY2hlbWFMb2NhdGlvbi5vZigiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vc2NoZW1hL2V4YW1wbGUtbWFpbi5qc29uIikpOwpTdHJpbmcgaW5wdXQgPSAie1xyXG4iCiArICIgIFwibWFpblwiOiB7XHJcbiIKICsgIiAgICBcImNvbW1vblwiOiB7XHJcbiIKICsgIiAgICAgIFwiZmllbGRcIjogXCJpbnZhbGlkZmllbGRcIlxyXG4iCiArICIgICAgfVxyXG4iCiArICIgIH1cclxuIgogKyAifSI7CgpMaXN0PEVycm9yPiBlcnJvcnMgPSBzY2hlbWEudmFsaWRhdGUoaW5wdXQsIElucHV0Rm9ybWF0LkpTT04sIGV4ZWN1dGlvbkNvbnRleHQgLT4gewogICAgLyoKICAgICAqIEJ5IGRlZmF1bHQgc2luY2UgRHJhZnQgMjAxOS0wOSB0aGUgZm9ybWF0IGtleXdvcmQgb25seSBnZW5lcmF0ZXMgYW5ub3RhdGlvbnMKICAgICAqIGFuZCBub3QgYXNzZXJ0aW9ucy4KICAgICAqLwogICAgZXhlY3V0aW9uQ29udGV4dC5leGVjdXRpb25Db25maWcoZXhlY3V0aW9uQ29uZmlnIC0+IGV4ZWN1dGlvbkNvbmZpZy5mb3JtYXRBc3NlcnRpb25zRW5hYmxlZCh0cnVlKSk7Cn0pOwpgYGAKCiMjIyBWYWxpZGF0aW5nIGEgc2NoZW1hIGFnYWluc3QgYSBtZXRhLXNjaGVtYQoKVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlbW9uc3RyYXRlcyBob3cgYSBzY2hlbWEgaXMgdmFsaWRhdGVkIGFnYWluc3QgYSBtZXRhLXNjaGVtYSBvZiBhIGRpYWxlY3QuCgpUaGlzIGlzIGFjdHVhbGx5IHRoZSBzYW1lIGFzIHZhbGlkYXRpbmcgaW5wdXRzIGFnYWluc3QgYSBzY2hlbWEgZXhjZXB0IGluIHRoaXMgY2FzZSB0aGUgaW5wdXQgaXMgdGhlIHNjaGVtYSBhbmQgdGhlIHNjaGVtYSB1c2VkIGlzIHRoZSBtZXRhLXNjaGVtYS4KCk5vdGUgdGhhdCB0aGUgbWV0YS1zY2hlbWFzIGZvciBEcmFmdCA0LCBEcmFmdCA2LCBEcmFmdCA3LCBEcmFmdCAyMDEKOS0wOSBhbmQgRHJhZnQgMjAyMC0xMiBhcmUgYnVuZGxlZCB3aXRoIHRoZSBsaWJyYXJ5IGFuZCB0aGVzZSBjbGFzc3BhdGggcmVzb3VyY2VzIHdpbGwgYmUgdXNlZCBieSBkZWZhdWx0LgoKYGBgamF2YQpTY2hlbWFSZWdpc3RyeSBzY2hlbWFSZWdpc3RyeSA9IFNjaGVtYVJlZ2lzdHJ5LndpdGhEaWFsZWN0KERpYWxlY3RzLmdldERyYWZ0MjAyMDEyKCkpOwovKgogKiBEdWUgdG8gdGhlIG1hcHBpbmcgdGhlIG1ldGEtc2NoZW1hIGZvciB0aGUgZGlhbGVjdCB3aWxsIGJlIHJldHJpZXZlZCBmcm9tIHRoZQogKiBjbGFzc3BhdGggYXQgY2xhc3NwYXRoOmRyYWZ0LzIwMjAtMTIvc2NoZW1hLgogKi8KU2NoZW1hIHNjaGVtYSA9IHNjaGVtYVJlZ2lzdHJ5LmdldFNjaGVtYShTY2hlbWFMb2NhdGlvbi5vZihEaWFsZWN0cy5nZXREcmFmdDIwMjAxMigpLmdldElkKCkpKTsKU3RyaW5nIGlucHV0ID0gIntcclxuIgogICAgKyAiICBcInR5cGVcIjogXCJvYmplY3RcIixcclxuIgogICAgKyAiICBcInByb3BlcnRpZXNcIjoge1xyXG4iCiAgICArICIgICAgXCJrZXlcIjoge1xyXG4iCiAgICArICIgICAgICBcInRpdGxlXCIgOiBcIk15IGtleVwiLFxyXG4iCiAgICArICIgICAgICBcInR5cGVcIjogXCJpbnZhbGlkdHlwZVwiXHJcbiIKICAgICsgIiAgICB9XHJcbiIKICAgICsgIiAgfVxyXG4iCiAgICArICJ9IjsKTGlzdDxFcnJvcj4gZXJyb3JzID0gc2NoZW1hLnZhbGlkYXRlKGlucHV0LCBJbnB1dEZvcm1hdC5KU09OLCBleGVjdXRpb25Db250ZXh0IC0+IHsKICAgIC8qCiAgICAgKiBCeSBkZWZhdWx0IHNpbmNlIERyYWZ0IDIwMTktMDkgdGhlIGZvcm1hdCBrZXl3b3JkIG9ubHkgZ2VuZXJhdGVzIGFubm90YXRpb25zCiAgICAgKiBhbmQgbm90IGFzc2VydGlvbnMuCiAgICAgKi8KICAgIGV4ZWN1dGlvbkNvbnRleHQuZXhlY3V0aW9uQ29uZmlnKGV4ZWN1dGlvbkNvbmZpZyAtPiBleGVjdXRpb25Db25maWcuZm9ybWF0QXNzZXJ0aW9uc0VuYWJsZWQodHJ1ZSkpOwp9KTsKYGBgCgojIyMgUmVxdWlyZSBzY2hlbWEgZGlhbGVjdCB0byBiZSBzcGVjaWZpZWQKClRoZSBzcGVjaWZpY2F0aW9uIGFsbG93cyBmb3IgdGhlIGAkc2NoZW1hYCBrZXl3b3JkIG5vdCB0byBiZSBzcGVjaWZpZWQsIGluIHdoaWNoIGNhc2UgdGhlIHNjaGVtYSB3aWxsIGRlZmF1bHQgdG8gdGhlIGRlZmF1bHQgZGlhbGVjdCBzcGVjaWZpZWQuCgpUaGUgZm9sbG93aW5nIGV4YW1wbGUgY3JlYXRlcyBhIGBTY2hlbWFSZWdpc3RyeWAgdGhhdCBkb2VzIG5vdCBzcGVjaWZ5IGEgZGVmYXVsdCBkaWFsZWN0IGFuZCB3aWxsIHRocm93IGEgYE1pc3NpbmdTY2hlbWFLZXl3b3JkRXhjZXB0aW9uYCBpZiB0aGUgc2NoZW1hIGRvZXMgbm90IHNwZWNpZnkgYSBkaWFsZWN0IHVzaW5nIHRoZSBgJHNjaGVtYWAga2V5d29yZC4KCmBgYGphdmEKU2NoZW1hUmVnaXN0cnkgcmVnaXN0cnkgPSBTY2hlbWFSZWdpc3RyeS53aXRoRGVmYXVsdERpYWxlY3RJZChudWxsKTsKYGBgCgojIyMgUmVzdWx0cyBhbmQgb3V0cHV0IGZvcm1hdHMKCiMjIyMgUmVzdWx0cwoKVGhlIGZvbGxvd2luZyB0eXBlcyBvZiByZXN1bHRzIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIGxpYnJhcnkuCgp8IFR5cGUgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBBc3NlcnRpb25zICB8IFZhbGlkYXRpb24gZXJyb3JzIGdlbmVyYXRlZCBieSBhbiBhc3NlcnRpb24ga2V5d29yZCBvbiBhIHBhcnRpY3VsYXIgaW5wdXQgZGF0YSBpbnN0YW5jZS4gVGhpcyBpcyBnZW5lcmFsbHkgZGVzY3JpYmVkIGluIGFuIGBFcnJvcmAgb3IgaW4gYSBgT3V0cHV0VW5pdGAuIE5vdGUgdGhhdCBzaW5jZSBEcmFmdCAyMDE5LTA5IHRoZSBgZm9ybWF0YCBrZXl3b3JkIG5vIGxvbmdlciBnZW5lcmF0ZXMgYXNzZXJ0aW9ucyBieSBkZWZhdWx0IGFuZCBpbnN0ZWFkIGdlbmVyYXRlcyBvbmx5IGFubm90YXRpb25zIHVubGVzcyBjb25maWd1cmVkIG90aGVyd2lzZSB1c2luZyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIG9yIGJ5IHVzaW5nIGEgZGlhbGVjdCB0aGF0IHVzZXMgdGhlIGFwcHJvcHJpYXRlIHZvY2FidWxhcnkuICAgICAgICAgICAgfAp8IEFubm90YXRpb25zIHwgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBnZW5lcmF0ZWQgYnkgYW4gYW5ub3RhdGlvbiBrZXl3b3JkIGZvciBhIHBhcnRpY3VsYXIgaW5wdXQgZGF0YSBpbnN0YW5jZS4gVGhpcyBpcyBnZW5lcmFsbHkgZGVzY3JpYmVkIGluIGEgYE91dHB1dFVuaXRgLiBBbm5vdGF0aW9uIGNvbGxlY3Rpb24gYW5kIHJlcG9ydGluZyBpcyB0dXJuZWQgb2ZmIGJ5IGRlZmF1bHQuIEFubm90YXRpb25zIHJlcXVpcmVkIGJ5IGtleXdvcmRzIHN1Y2ggYXMgYHVuZXZhbHVhdGVkUHJvcGVydGllc2Agb3IgYHVuZXZhbHVhdGVkSXRlbXNgIGFyZSBhbHdheXMgY29sbGVjdGVkIGZvciBldmFsdWF0aW9uIHB1cnBvc2VzIGFuZCBjYW5ub3QgYmUgZGlzYWJsZWQgYnV0IHdpbGwgbm90IGJlIHJlcG9ydGVkIHVubGVzcyBjb25maWd1cmVkIHRvIGRvIHNvLiB8CgpUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGlzIHVzZWQgdG8gZGVzY3JpYmUgYm90aCB0eXBlcyBvZiByZXN1bHRzLgoKfCBUeXBlICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgRXZhbHVhdGlvbiBQYXRoICAgfCBUaGlzIGlzIHRoZSBzZXQgb2Yga2V5cyBmcm9tIHRoZSByb290IHRocm91Z2ggd2hpY2ggZXZhbHVhdGlvbiBwYXNzZXMgdG8gcmVhY2ggdGhlIHNjaGVtYSBmb3IgZXZhbHVhdGluZyB0aGUgaW5zdGFuY2UuIFRoaXMgaW5jbHVkZXMgYCRyZWZgIGFuZCBgJGR5bmFtaWNSZWZgLiBlZy4gYC9wcm9wZXJ0aWVzL2Jhci8kcmVmL3Byb3BlcnRpZXMvYmFyLXByb3BgIHwKfCBTY2hlbWEgTG9jYXRpb24gICB8IFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBJUkkgb2YgdGhlIHNjaGVtYSBwbHVzIHRoZSBKU09OIHBvaW50ZXIgZnJhZ21lbnQgdG8gdGhlIHNjaGVtYSB0aGF0IHdhcyB1c2VkIGZvciBldmFsdWF0aW5nIHRoZSBpbnN0YW5jZS4gZWcuIGBodHRwczovL2pzb24tc2NoZW1hLm9yZy9zY2hlbWFzL2V4YW1wbGUjLyRkZWZzL2Jhci9wcm9wZXJ0aWVzL2Jhci1wcm9wYCAgfAp8IEluc3RhbmNlIExvY2F0aW9uIHwgVGhpcyBpcyB0aGUgSlNPTiBwb2ludGVyIGZyYWdtZW50IHRvIHRoZSBpbnN0YW5jZSBkYXRhIHRoYXQgd2FzIGJlaW5nIGV2YWx1YXRlZC4gZWcuIGAvYmFyL2Jhci1wcm9wYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgpBc3NlcnRpb25zIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgoKfCBUeXBlICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgTWVzc2FnZSAgICAgICB8IFRoZSB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBNZXNzYWdlIEtleSAgIHwgVGhlIG1lc3NhZ2Uga2V5IHVzZWQgZm9yIGdlbmVyYXRpbmcgdGhlIG1lc3NhZ2UgZm9yIGxvY2FsaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEFyZ3VtZW50cyAgICAgfCBUaGUgYXJndW1lbnRzIHVzZWQgZm9yIGdlbmVyYXRpbmcgdGhlIG1lc3NhZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgS2V5d29yZCAgICAgICB8IFRoZSBrZXl3b3JkIHRoYXQgZ2VuZXJhdGVkIHRoZSBtZXNzYWdlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBTY2hlbWEgTm9kZSAgIHwgVGhlIGBKc29uTm9kZWAgcG9pbnRlZCB0byBieSB0aGUgU2NoZW1hIExvY2F0aW9uLiBUaGlzIGlzIHRoZSBzY2hlbWEgZGF0YSB0aGF0IGNhdXNlZCB0aGUgaW5wdXQgZGF0YSB0byBmYWlsLiBJdCBpcyBwb3NzaWJsZSB0byBnZXQgdGhlIGxvY2F0aW9uIGluZm9ybWF0aW9uIGJ5IGNvbmZpZ3VyaW5nIHRoZSBgU2NoZW1hUmVnaXN0cnlgIHdpdGggYSBgTm9kZVJlYWRlcmAgdGhhdCB1c2VzIHRoZSBgTG9jYXRpb25Kc29uTm9kZUZhY3RvcnlGYWN0b3J5YCBhbmQgdXNpbmcgYEpzb25Ob2Rlcy50b2tlblN0cmVhbUxvY2F0aW9uT2Yoc2NoZW1hTm9kZSlgLiB8CnwgSW5zdGFuY2UgTm9kZSB8IFRoZSBgSnNvbk5vZGVgIHBvaW50ZWQgdG8gYnkgdGhlIEluc3RhbmNlIExvY2F0aW9uLiBUaGlzIGlzIHRoZSBpbnB1dCBkYXRhIHRoYXQgZmFpbGVkIHZhbGlkYXRpb24uIEl0IGlzIHBvc3NpYmxlIHRvIGdldCB0aGUgbG9jYXRpb24gaW5mb3JtYXRpb24gYnkgY29uZmlndXJpbmcgdGhlIGBTY2hlbWFSZWdpc3RyeWAgd2l0aCBhIGBOb2RlUmVhZGVyYCB0aGF0IHVzZXMgdGhlIGBMb2NhdGlvbkpzb25Ob2RlRmFjdG9yeUZhY3RvcnlgIGFuZCB1c2luZyBgSnNvbk5vZGVzLnRva2VuU3RyZWFtTG9jYXRpb25PZihpbnN0YW5jZU5vZGUpYC4gICAgICAgICAgfAp8IEVycm9yICAgICAgICAgfCBUaGUgZXJyb3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRGV0YWlscyAgICAgICB8IEFkZGl0aW9uYWwgZGV0YWlscyB0aGF0IGNhbiBiZSBzZXQgYnkgY3VzdG9tIGtleXdvcmQgdmFsaWRhdG9yIGltcGxlbWVudGF0aW9ucy4gVGhlIGxpYnJhcnkgd2lsbCBzZXQgdGhlIGBwcm9wZXJ0eWAgYW5kIGBpbmRleGAgZGV0YWlscyBmb3IgY2VydGFpbiBlcnJvcnMuIEZvciBpbnN0YW5lIHRoZSBgcmVxdWlyZWRgIGtleXdvcmQgd2lsbCBzZXQgdGhlIGBwcm9wZXJ0eWAuIE5vdGUgdGhhdCB0aGlzIGlzIG5vdCBwYXJ0IG9mIHRoZSBpbnN0YW5jZSBsb2NhdGlvbiBhcyB0aGF0IHBvaW50cyB0byB0aGUgaW5zdGFuY2Ugbm9kZS4gICAgICAgICAgICAgIHwKCkFubm90YXRpb25zIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgoKfCBUeXBlICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IFZhbHVlIHwgVGhlIGFubm90YXRpb24gdmFsdWUgZ2VuZXJhdGVkIHwKCiMjIyMjIExpbmUgYW5kIENvbHVtbiBJbmZvcm1hdGlvbgoKVGhlIGxpYnJhcnkgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gc3RvcmUgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGluIHRoZSBgSnNvbk5vZGVgIGluc3RhbmNlcyBmb3IgdGhlIGluc3RhbmNlIGFuZCBzY2hlbWEgbm9kZXMuIFRoaXMgd2lsbCBhZHZlcnNlbHkgYWZmZWN0IHBlcmZvcm1hbmNlIGFuZCBpcyBub3QgY29uZmlndXJlZCBieSBkZWZhdWx0LgoKVGhpcyBpcyBkb25lIGJ5IGNvbmZpZ3VyaW5nIGEgYE5vZGVSZWFkZXJgIHRoYXQgdXNlcyB0aGUgYExvY2F0aW9uSnNvbk5vZGVGYWN0b3J5RmFjdG9yeWAgb24gdGhlIGBTY2hlbWFSZWdpc3RyeWAuIFRoZSBgSnNvbkxvY2F0aW9uYCBpbmZvcm1hdGlvbiBjYW4gdGhlbiBiZSByZXRyaWV2ZWQgdXNpbmcgYEpzb25Ob2Rlcy50b2tlblN0cmVhbUxvY2F0aW9uT2YoanNvbk5vZGUpYC4KCmBgYGphdmEKU3RyaW5nIHNjaGVtYURhdGEgPSAie1xyXG4iCiAgICAgICAgICAgICAgICArICIgIFwiJGlkXCI6IFwiaHR0cHM6Ly9zY2hlbWEvbXlzY2hlbWFcIixcclxuIgogICAgICAgICAgICAgICAgKyAiICBcInByb3BlcnRpZXNcIjoge1xyXG4iCiAgICAgICAgICAgICAgICArICIgICAgXCJzdGFydERhdGVcIjoge1xyXG4iCiAgICAgICAgICAgICAgICArICIgICAgICBcImZvcm1hdFwiOiBcImRhdGVcIixcclxuIgogICAgICAgICAgICAgICAgKyAiICAgICAgXCJtaW5MZW5ndGhcIjogNlxyXG4iCiAgICAgICAgICAgICAgICArICIgICAgfVxyXG4iCiAgICAgICAgICAgICAgICArICIgIH1cclxuIgogICAgICAgICAgICAgICAgKyAifSI7ClN0cmluZyBpbnB1dERhdGEgPSAie1xyXG4iCiAgICAgICAgICAgICAgICArICIgIFwic3RhcnREYXRlXCI6IFwiMVwiXHJcbiIKICAgICAgICAgICAgICAgICsgIn0iOwpTY2hlbWFSZWdpc3RyeSBzY2hlbWFSZWdpc3RyeSA9IFNjaGVtYVJlZ2lzdHJ5LndpdGhEaWFsZWN0KERpYWxlY3RzLmdldERyYWZ0MjAyMDEyKCksCiAgICAgICAgYnVpbGRlciAtPiBidWlsZGVyLm5vZGVSZWFkZXIobm9kZVJlYWRlciAtPiBub2RlUmVhZGVyLmxvY2F0aW9uQXdhcmUoKSkpOwoKU2NoZW1hIHNjaGVtYSA9IHNjaGVtYVJlZ2lzdHJ5LmdldFNjaGVtYShzY2hlbWFEYXRhLCBJbnB1dEZvcm1hdC5KU09OKTsKTGlzdDxFcnJvcj4gZXJyb3JzID0gc2NoZW1hLnZhbGlkYXRlKGlucHV0RGF0YSwgSW5wdXRGb3JtYXQuSlNPTiwgZXhlY3V0aW9uQ29udGV4dCAtPiB7CiAgICBleGVjdXRpb25Db250ZXh0LmV4ZWN1dGlvbkNvbmZpZyhleGVjdXRpb25Db25maWcgLT4gZXhlY3V0aW9uQ29uZmlnLmZvcm1hdEFzc2VydGlvbnNFbmFibGVkKHRydWUpKTsKfSk7CkVycm9yIGZvcm1hdCA9IGVycm9ycy5nZXQoMCk7Ckpzb25Mb2NhdGlvbiBmb3JtYXRJbnN0YW5jZU5vZGVUb2tlbkxvY2F0aW9uID0gSnNvbk5vZGVzLnRva2VuU3RyZWFtTG9jYXRpb25PZihmb3JtYXQuZ2V0SW5zdGFuY2VOb2RlKCkpOwpKc29uTG9jYXRpb24gZm9ybWF0U2NoZW1hTm9kZVRva2VuTG9jYXRpb24gPSBKc29uTm9kZXMudG9rZW5TdHJlYW1Mb2NhdGlvbk9mKGZvcm1hdC5nZXRTY2hlbWFOb2RlKCkpOwpFcnJvciBtaW5MZW5ndGggPSBlcnJvcnMuZ2V0KDEpOwpKc29uTG9jYXRpb24gbWluTGVuZ3RoSW5zdGFuY2VOb2RlVG9rZW5Mb2NhdGlvbiA9IEpzb25Ob2Rlcy50b2tlblN0cmVhbUxvY2F0aW9uT2YobWluTGVuZ3RoLmdldEluc3RhbmNlTm9kZSgpKTsKSnNvbkxvY2F0aW9uIG1pbkxlbmd0aFNjaGVtYU5vZGVUb2tlbkxvY2F0aW9uID0gSnNvbk5vZGVzLnRva2VuU3RyZWFtTG9jYXRpb25PZihtaW5MZW5ndGguZ2V0U2NoZW1hTm9kZSgpKTsKCmFzc2VydEVxdWFscygiZm9ybWF0IiwgZm9ybWF0LmdldEtleXdvcmQoKSk7CmFzc2VydEVxdWFscygiZGF0ZSIsIGZvcm1hdC5nZXRTY2hlbWFOb2RlKCkuYXNTdHJpbmcoKSk7CmFzc2VydEVxdWFscyg1LCBmb3JtYXRTY2hlbWFOb2RlVG9rZW5Mb2NhdGlvbi5nZXRMaW5lTnIoKSk7CmFzc2VydEVxdWFscygxNywgZm9ybWF0U2NoZW1hTm9kZVRva2VuTG9jYXRpb24uZ2V0Q29sdW1uTnIoKSk7CmFzc2VydEVxdWFscygiMSIsIGZvcm1hdC5nZXRJbnN0YW5jZU5vZGUoKS5hc1N0cmluZygpKTsKYXNzZXJ0RXF1YWxzKDIsIGZvcm1hdEluc3RhbmNlTm9kZVRva2VuTG9jYXRpb24uZ2V0TGluZU5yKCkpOwphc3NlcnRFcXVhbHMoMTYsIGZvcm1hdEluc3RhbmNlTm9kZVRva2VuTG9jYXRpb24uZ2V0Q29sdW1uTnIoKSk7CmFzc2VydEVxdWFscygibWluTGVuZ3RoIiwgbWluTGVuZ3RoLmdldEtleXdvcmQoKSk7CmFzc2VydEVxdWFscygiNiIsIG1pbkxlbmd0aC5nZXRTY2hlbWFOb2RlKCkuYXNTdHJpbmcoKSk7CmFzc2VydEVxdWFscyg2LCBtaW5MZW5ndGhTY2hlbWFOb2RlVG9rZW5Mb2NhdGlvbi5nZXRMaW5lTnIoKSk7CmFzc2VydEVxdWFscygyMCwgbWluTGVuZ3RoU2NoZW1hTm9kZVRva2VuTG9jYXRpb24uZ2V0Q29sdW1uTnIoKSk7CmFzc2VydEVxdWFscygiMSIsIG1pbkxlbmd0aC5nZXRJbnN0YW5jZU5vZGUoKS5hc1N0cmluZygpKTsKYXNzZXJ0RXF1YWxzKDIsIG1pbkxlbmd0aEluc3RhbmNlTm9kZVRva2VuTG9jYXRpb24uZ2V0TGluZU5yKCkpOwphc3NlcnRFcXVhbHMoMTYsIG1pbkxlbmd0aEluc3RhbmNlTm9kZVRva2VuTG9jYXRpb24uZ2V0Q29sdW1uTnIoKSk7CmFzc2VydEVxdWFscygxNiwgbWluTGVuZ3RoSW5zdGFuY2VOb2RlVG9rZW5Mb2NhdGlvbi5nZXRDb2x1bW5OcigpKTsKYGBgCgojIyMjIE91dHB1dCBmb3JtYXRzCgpUaGlzIGxpYnJhcnkgaW1wbGVtZW50cyB0aGUgRmxhZywgTGlzdCBhbmQgSGllcmFyY2hpY2FsIG91dHB1dCBmb3JtYXRzIGRlZmluZWQgaW4gdGhlIFtTcGVjaWZpY2F0aW9uIGZvciBNYWNoaW5lLVJlYWRhYmxlIE91dHB1dCBmb3IgSlNPTiBTY2hlbWEgVmFsaWRhdGlvbiBhbmQgQW5ub3RhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL2pzb24tc2NoZW1hLW9yZy9qc29uLXNjaGVtYS1zcGVjL2Jsb2IvODI3MDY1M2E5ZjU5ZmFkZDJkZjBkNzg5ZjIyZDQ4NjI1NDUwNWJiZS9qc29uc2NoZW1hLXZhbGlkYXRpb24tb3V0cHV0LW1hY2hpbmVzLm1kKS4KClRoZSBMaXN0IGFuZCBIaWVyYXJjaGljYWwgb3V0cHV0IGZvcm1hdHMgYXJlIHBhcnRpY3VsYXJseSBoZWxwZnVsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGFycml2ZWQgYXQgYSBwYXJ0aWN1bGFyIHJlc3VsdC4KCnwgT3V0cHV0IEZvcm1hdCB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IERlZmF1bHQgICAgICAgfCBHZW5lcmF0ZXMgdGhlIGxpc3Qgb2YgYXNzZXJ0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQm9vbGVhbiAgICAgICB8IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWxpZGF0aW9uIGlzIHN1Y2Nlc3NmdWwuIE5vdGUgdGhhdCB0aGUgZmFpbCBmYXN0IG9wdGlvbiBpcyB0dXJuZWQgb24gYnkgZGVmYXVsdCBmb3IgdGhpcyBvdXRwdXQgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBGbGFnICAgICAgICAgIHwgUmV0dXJucyBhbiBgT3V0cHV0RmxhZ2Agb2JqZWN0IHdpdGggYHZhbGlkYCBoYXZpbmcgYHRydWVgIGlmIHRoZSB2YWxpZGF0aW9uIGlzIHN1Y2Nlc3NmdWwuIE5vdGUgdGhhdCB0aGUgZmFpbCBmYXN0IG9wdGlvbiBpcyB0dXJuZWQgb24gYnkgZGVmYXVsdCBmb3IgdGhpcyBvdXRwdXQgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IExpc3QgICAgICAgICAgfCBSZXR1cm5zIGFuIGBPdXRwdXRVbml0YCBvYmplY3Qgd2l0aCBgZGV0YWlsc2Agd2l0aCBhIGxpc3Qgb2YgYE91dHB1dFVuaXRgIG9iamVjdHMgd2l0aCB0aGUgYXNzZXJ0aW9ucyBhbmQgYW5ub3RhdGlvbnMuIE5vdGUgdGhhdCBhbm5vdGF0aW9ucyBhcmUgbm90IGNvbGxlY3RlZCBieSBkZWZhdWx0IGFuZCBpdCBoYXMgdG8gYmUgZW5hYmxlZCBhcyBpdCB3aWxsIGltcGFjdCBwZXJmb3JtYW5jZS4gICAgICAgICAgICAgICB8CnwgSGllcmFyY2hpY2FsICB8IFJldHVybnMgYW4gYE91dHB1dFVuaXRgIG9iamVjdCB3aXRoIGEgaGllcmFyY2h5IG9mIGBPdXRwdXRVbml0YCBvYmplY3RzIGZvciB0aGUgZXZhbHVhdGlvbiBwYXRoIHdpdGggdGhlIGFzc2VydGlvbnMgYW5kIGFubm90YXRpb25zLiBOb3RlIHRoYXQgYW5ub3RhdGlvbnMgYXJlIG5vdCBjb2xsZWN0ZWQgYnkgZGVmYXVsdCBhbmQgaXQgaGFzIHRvIGJlIGVuYWJsZWQgYXMgaXQgd2lsbCBpbXBhY3QgcGVyZm9ybWFuY2UuIHwKClRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBob3cgdG8gZ2VuZXJhdGUgdGhlIGhpZXJhcmNoaWNhbCBvdXRwdXQgZm9ybWF0IHdpdGggYW5ub3RhdGlvbiBjb2xsZWN0aW9uIGFuZCByZXBvcnRpbmcgdHVybmVkIG9uIGFuZCBmb3JtYXQgYXNzZXJ0aW9ucyB0dXJuZWQgb24uCgpgYGBqYXZhClNjaGVtYVJlZ2lzdHJ5IHNjaGVtYVJlZ2lzdHJ5ID0gU2NoZW1hUmVnaXN0cnkud2l0aERpYWxlY3QoRGlhbGVjdHMuZ2V0RHJhZnQyMDIwMTIoKSk7ClNjaGVtYSBzY2hlbWEgPSBzY2hlbWFSZWdpc3RyeS5nZXRTY2hlbWEoU2NoZW1hTG9jYXRpb24ub2YoImh0dHBzOi8vanNvbi1zY2hlbWEub3JnL3NjaGVtYXMvZXhhbXBsZSIpKTsKCk91dHB1dFVuaXQgb3V0cHV0VW5pdCA9IHNjaGVtYS52YWxpZGF0ZShpbnB1dERhdGEsIElucHV0Rm9ybWF0LkpTT04sIE91dHB1dEZvcm1hdC5ISUVSQVJDSElDQUwsIGV4ZWN1dGlvbkNvbnRleHQgLT4gewogICAgZXhlY3V0aW9uQ29udGV4dC5leGVjdXRpb25Db25maWcoZXhlY3V0aW9uQ29uZmlnIC0+IGV4ZWN1dGlvbkNvbmZpZwogICAgICAgICAgICAuYW5ub3RhdGlvbkNvbGxlY3Rpb25FbmFibGVkKHRydWUpCiAgICAgICAgICAgIC5hbm5vdGF0aW9uQ29sbGVjdGlvbkZpbHRlcihrZXl3b3JkIC0+IHRydWUpCiAgICAgICAgICAgIC5mb3JtYXRBc3NlcnRpb25zRW5hYmxlZCh0cnVlKSk7Cn0pOwpgYGAKClRoZSBmb2xsb3dpbmcgaXMgc2FtcGxlIG91dHB1dCBmcm9tIHRoZSBIaWVyYXJjaGljYWwgZm9ybWF0LgoKYGBganNvbgp7CiAgInZhbGlkIjogZmFsc2UsCiAgImV2YWx1YXRpb25QYXRoIjogIiIsCiAgInNjaGVtYUxvY2F0aW9uIjogImh0dHBzOi8vanNvbi1zY2hlbWEub3JnL3NjaGVtYXMvZXhhbXBsZSMiLAogICJpbnN0YW5jZUxvY2F0aW9uIjogIiIsCiAgImRyb3BwZWRBbm5vdGF0aW9ucyI6IHsKICAgICJwcm9wZXJ0aWVzIjogWyJmb28iLCAiYmFyIl0sCiAgICAidGl0bGUiOiAicm9vdCIKICB9LAogICJkZXRhaWxzIjogWwogICAgewogICAgICAidmFsaWQiOiBmYWxzZSwKICAgICAgImV2YWx1YXRpb25QYXRoIjogIi9wcm9wZXJ0aWVzL2Zvby9hbGxPZi8wIiwKICAgICAgInNjaGVtYUxvY2F0aW9uIjogImh0dHBzOi8vanNvbi1zY2hlbWEub3JnL3NjaGVtYXMvZXhhbXBsZSMvcHJvcGVydGllcy9mb28vYWxsT2YvMCIsCiAgICAgICJpbnN0YW5jZUxvY2F0aW9uIjogIi9mb28iLAogICAgICAiZXJyb3JzIjogewogICAgICAgICJyZXF1aXJlZCI6ICJyZXF1aXJlZCBwcm9wZXJ0eSAndW5zcGVjaWZpZWQtcHJvcCcgbm90IGZvdW5kIgogICAgICB9CiAgICB9LAogICAgewogICAgICAidmFsaWQiOiBmYWxzZSwKICAgICAgImV2YWx1YXRpb25QYXRoIjogIi9wcm9wZXJ0aWVzL2Zvby9hbGxPZi8xIiwKICAgICAgInNjaGVtYUxvY2F0aW9uIjogImh0dHBzOi8vanNvbi1zY2hlbWEub3JnL3NjaGVtYXMvZXhhbXBsZSMvcHJvcGVydGllcy9mb28vYWxsT2YvMSIsCiAgICAgICJpbnN0YW5jZUxvY2F0aW9uIjogIi9mb28iLAogICAgICAiZHJvcHBlZEFubm90YXRpb25zIjogewogICAgICAgICJwcm9wZXJ0aWVzIjogWyJmb28tcHJvcCJdLAogICAgICAgICJ0aXRsZSI6ICJmb28tdGl0bGUiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyI6IFsiZm9vLXByb3AiLCAib3RoZXItcHJvcCJdCiAgICAgIH0sCiAgICAgICJkZXRhaWxzIjogWwogICAgICAgIHsKICAgICAgICAgICJ2YWxpZCI6IGZhbHNlLAogICAgICAgICAgImV2YWx1YXRpb25QYXRoIjogIi9wcm9wZXJ0aWVzL2Zvby9hbGxPZi8xL3Byb3BlcnRpZXMvZm9vLXByb3AiLAogICAgICAgICAgInNjaGVtYUxvY2F0aW9uIjogImh0dHBzOi8vanNvbi1zY2hlbWEub3JnL3NjaGVtYXMvZXhhbXBsZSMvcHJvcGVydGllcy9mb28vYWxsT2YvMS9wcm9wZXJ0aWVzL2Zvby1wcm9wIiwKICAgICAgICAgICJpbnN0YW5jZUxvY2F0aW9uIjogIi9mb28vZm9vLXByb3AiLAogICAgICAgICAgImVycm9ycyI6IHsKICAgICAgICAgICAgImNvbnN0IjogIm11c3QgYmUgYSBjb25zdGFudCB2YWx1ZSAxIgogICAgICAgICAgfSwKICAgICAgICAgICJkcm9wcGVkQW5ub3RhdGlvbnMiOiB7CiAgICAgICAgICAgICJ0aXRsZSI6ICJmb28tcHJvcC10aXRsZSIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgICJ2YWxpZCI6IGZhbHNlLAogICAgICAiZXZhbHVhdGlvblBhdGgiOiAiL3Byb3BlcnRpZXMvYmFyLyRyZWYiLAogICAgICAic2NoZW1hTG9jYXRpb24iOiAiaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvc2NoZW1hcy9leGFtcGxlIy8kZGVmcy9iYXIiLAogICAgICAiaW5zdGFuY2VMb2NhdGlvbiI6ICIvYmFyIiwKICAgICAgImRyb3BwZWRBbm5vdGF0aW9ucyI6IHsKICAgICAgICAicHJvcGVydGllcyI6IFsiYmFyLXByb3AiXSwKICAgICAgICAidGl0bGUiOiAiYmFyLXRpdGxlIgogICAgICB9LAogICAgICAiZGV0YWlscyI6IFsKICAgICAgICB7CiAgICAgICAgICAidmFsaWQiOiBmYWxzZSwKICAgICAgICAgICJldmFsdWF0aW9uUGF0aCI6ICIvcHJvcGVydGllcy9iYXIvJHJlZi9wcm9wZXJ0aWVzL2Jhci1wcm9wIiwKICAgICAgICAgICJzY2hlbWFMb2NhdGlvbiI6ICJodHRwczovL2pzb24tc2NoZW1hLm9yZy9zY2hlbWFzL2V4YW1wbGUjLyRkZWZzL2Jhci9wcm9wZXJ0aWVzL2Jhci1wcm9wIiwKICAgICAgICAgICJpbnN0YW5jZUxvY2F0aW9uIjogIi9iYXIvYmFyLXByb3AiLAogICAgICAgICAgImVycm9ycyI6IHsKICAgICAgICAgICAgIm1pbmltdW0iOiAibXVzdCBoYXZlIGEgbWluaW11bSB2YWx1ZSBvZiAxMCIKICAgICAgICAgIH0sCiAgICAgICAgICAiZHJvcHBlZEFubm90YXRpb25zIjogewogICAgICAgICAgICAidGl0bGUiOiAiYmFyLXByb3AtdGl0bGUiCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdCiAgICB9CiAgXQp9CmBgYAoKIyMgQ29uZmlndXJhdGlvbgoKIyMjIEV4ZWN1dGlvbiBDb25maWd1cmF0aW9uCgp8IE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlZmF1bHQgVmFsdWUgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBgYW5ub3RhdGlvbkNvbGxlY3Rpb25FbmFibGVkYCB8IENvbnRyb2xzIHdoZXRoZXIgYW5ub3RhdGlvbnMgYXJlIGNvbGxlY3RlZCBkdXJpbmcgcHJvY2Vzc2luZy4gTm90ZSB0aGF0IGNvbGxlY3RpbmcgYW5ub3RhdGlvbnMgd2lsbCBhZHZlcnNlbHkgYWZmZWN0IHBlcmZvcm1hbmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgZmFsc2VgICAgICAgICAgICAgICAgfAp8IGBhbm5vdGF0aW9uQ29sbGVjdGlvbkZpbHRlcmAgIHwgVGhlIHByZWRpY2F0ZSB1c2VkIHRvIGNvbnRyb2wgd2hpY2gga2V5d29yZCB0byBjb2xsZWN0IGFuZCByZXBvcnQgYW5ub3RhdGlvbnMgZm9yLiBUaGlzIHJlcXVpcmVzIGBhbm5vdGF0aW9uQ29sbGVjdGlvbkVuYWJsZWRgIHRvIGJlIGB0cnVlYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBrZXl3b3JkIC0+IGZhbHNlYCAgICB8CnwgYGxvY2FsZWAgICAgICAgICAgICAgICAgICAgICAgfCBUaGUgbG9jYWxlIHRvIHVzZSBmb3IgZ2VuZXJhdGluZyBtZXNzYWdlcyBpbiBgRXJyb3JgLiBOb3RlIHRoYXQgdGhpcyB2YWx1ZSBpcyBjb3BpZWQgZnJvbSBgU2NoZW1hUmVnaXN0cnlDb25maWdgIGZvciBlYWNoIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYExvY2FsZS5nZXREZWZhdWx0KClgIHwKfCBgZmFpbEZhc3RgICAgICAgICAgICAgICAgICAgICB8IFdoZXRoZXIgdG8gcmV0dXJuIGZhaWx1cmUgaW1tZWRpYXRlbHkgd2hlbiBhbiBhc3NlcnRpb24gaXMgZ2VuZXJhdGVkLiBOb3RlIHRoYXQgdGhpcyB2YWx1ZSBpcyBjb3BpZWQgZnJvbSBgU2NoZW1hUmVnaXN0cnlDb25maWdgIGZvciBlYWNoIGV4ZWN1dGlvbiBidXQgaXMgYXV0b21hdGljYWxseSBzZXQgdG8gYHRydWVgIGZvciB0aGUgQm9vbGVhbiBhbmQgRmxhZyBvdXRwdXQgZm9ybWF0cy4gfCBgZmFsc2VgICAgICAgICAgICAgICAgfAp8IGBmb3JtYXRBc3NlcnRpb25zRW5hYmxlZGAgICAgIHwgVGhlIGRlZmF1bHQgaXMgdG8gZ2VuZXJhdGUgZm9ybWF0IGFzc2VydGlvbnMgZnJvbSBEcmFmdCA0IHRvIERyYWZ0IDcgYW5kIHRvIG9ubHkgZ2VuZXJhdGUgYW5ub3RhdGlvbnMgZnJvbSBEcmFmdCAyMDE5LTA5LiBTZXR0aW5nIHRvIGB0cnVlYCBvciBgZmFsc2VgIHdpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBudWxsYCAgICAgICAgICAgICAgICB8CnwgYHJlYWRPbmx5YCAgICAgICAgICAgICAgICAgICAgfCBVc2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUgc2VudCBhcyBwYXJ0IG9mIHRoZSByZXF1ZXN0IHBheWxvYWQsIGJ1dCBvbmx5IGluIHRoZSByZXNwb25zZSBwYXlsb2FkLiBUaGlzIGFmZmVjdHMgdGhlIGByZWFkT25seWAga2V5d29yZCB1c2VkIGZvciB0aGUgT3BlbkFQSSBkaWFsZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYG51bGxgICAgICAgICAgICAgICAgIHwKfCBgd3JpdGVPbmx5YCAgICAgICAgICAgICAgICAgICB8IFVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSBzZW50IGFzIHBhcnQgb2YgdGhlIHJlc3BvbnNlIHBheWxvYWQsIGJ1dCBvbmx5IGluIHRoZSByZXF1ZXN0IHBheWxvYWQuIFRoaXMgYWZmZWN0cyB0aGUgYHdyaXRlT25seWAga2V5d29yZCB1c2VkIGZvciB0aGUgT3BlbkFQSSBkaWFsZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgbnVsbGAgICAgICAgICAgICAgICAgfAoKIyMjIFNjaGVtYSBSZWdpc3RyeSBDb25maWd1cmF0aW9uCgp8IE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVmYXVsdCBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBgY2FjaGVSZWZzYCAgICAgICAgICAgICAgICAgIHwgV2hldGhlciB0aGUgc2NoZW1hcyBsb2FkZWQgZnJvbSByZWZzIHdpbGwgYmUgY2FjaGVkIGFuZCByZXVzZWQgZm9yIHN1YnNlcXVlbnQgcnVucy4gU2V0dGluZyB0aGlzIHRvIGBmYWxzZWAgd2lsbCBhZmZlY3QgcGVyZm9ybWFuY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB0cnVlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBlcnJvck1lc3NhZ2VLZXl3b3JkYCAgICAgICAgfCBUaGUga2V5d29yZCB0byB1c2UgZm9yIGN1c3RvbSBlcnJvciBtZXNzYWdlcyBpbiB0aGUgc2NoZW1hLiBJZiBub3Qgc2V0IHRoaXMgZmVhdHVyZXMgaXMgZGlzYWJsZWQuIFRoaXMgaXMgdHlwaWNhbGx5IHNldCB0byBgZXJyb3JNZXNzYWdlYCBvciBgbWVzc2FnZWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYG51bGxgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGV4ZWN1dGlvbkNvbnRleHRDdXN0b21pemVyYCB8IFRoaXMgY2FuIGJlIHVzZWQgdG8gY3VzdG9taXplIHRoZSBgRXhlY3V0aW9uQ29udGV4dGAgZ2VuZXJhdGVkIGJ5IHRoZSBgU2NoZW1hYCBmb3IgZWFjaCB2YWxpZGF0aW9uIHJ1bi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgbnVsbGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgZmFpbEZhc3RgICAgICAgICAgICAgICAgICAgIHwgV2hldGhlciB0byByZXR1cm4gZmFpbHVyZSBpbW1lZGlhdGVseSB3aGVuIGFuIGFzc2VydGlvbiBpcyBnZW5lcmF0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBmYWxzZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBmb3JtYXRBc3NlcnRpb25zRW5hYmxlZGAgICAgfCBUaGUgZGVmYXVsdCBpcyB0byBnZW5lcmF0ZSBmb3JtYXQgYXNzZXJ0aW9ucyBmcm9tIERyYWZ0IDQgdG8gRHJhZnQgNyBhbmQgdG8gb25seSBnZW5lcmF0ZSBhbm5vdGF0aW9ucyBmcm9tIERyYWZ0IDIwMTktMDkuIFNldHRpbmcgdG8gYHRydWVgIG9yIGBmYWxzZWAgd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYG51bGxgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGxvY2FsZWAgICAgICAgICAgICAgICAgICAgICB8IFRoZSBsb2NhbGUgdG8gdXNlIGZvciBnZW5lcmF0aW5nIG1lc3NhZ2VzIGluIGBFcnJvcmAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgTG9jYWxlLmdldERlZmF1bHQoKWAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgbG9zc2xlc3NOYXJyb3dpbmdgICAgICAgICAgIHwgV2hldGhlciBsb3NzbGVzcyBuYXJyb3dpbmcgaXMgdXNlZCBmb3IgdGhlIGB0eXBlYCBrZXl3b3JkLiBTaW5jZSBEcmFmdCA2IGEgdmFsdWUgb2YgYDEuMGAgaXMgaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlciB3aGV0aGVyIG9yIG5vdCB0aGlzIGlzIGVuYWJsZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBmYWxzZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBtZXNzYWdlU291cmNlYCAgICAgICAgICAgICAgfCBUaGlzIGlzIHVzZWQgdG8gcmV0cmlldmUgdGhlIGxvY2FsZSBzcGVjaWZpYyBtZXNzYWdlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYERlZmF1bHRNZXNzYWdlU291cmNlLmdldEluc3RhbmNlKClgICAgICAgICB8CnwgYHBhdGhUeXBlYCAgICAgICAgICAgICAgICAgICB8IFRoZSBwYXRoIHR5cGUgdG8gdXNlIGZvciByZXBvcnRpbmcgdGhlIGluc3RhbmNlIGxvY2F0aW9uIGFuZCBldmFsdWF0aW9uIHBhdGguIFNldCB0byBgUGF0aFR5cGUuSlNPTl9QQVRIYCB0byB1c2UgSlNPTiBQYXRoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgUGF0aFR5cGUuSlNPTl9QT0lOVEVSYCAgICAgICAgICAgICAgICAgICAgIHwKfCBgcHJlbG9hZFNjaGVtYWAgICAgICAgICAgICAgIHwgV2hldGhlciB0aGUgc2NoZW1hIHdpbGwgYmUgcHJlbG9hZGVkIGJlZm9yZSBwcm9jZXNzaW5nIGFueSBpbnB1dC4gVGhpcyB3aWxsIHVzZSBtZW1vcnkgYnV0IHRoZSBleGVjdXRpb24gb2YgdGhlIHZhbGlkYXRpb24gd2lsbCBiZSBmYXN0ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB0cnVlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGByZWd1bGFyRXhwcmVzc2lvbkZhY3RvcnlgICAgfCBUaGUgZmFjdG9yeSB0byB1c2UgdG8gY3JlYXRlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgZm9yIGluc3RhbmNlIGBKb25pUmVndWxhckV4cHJlc3Npb25GYWN0b3J5YCBvciBgR3JhYWxKU1JlZ3VsYXJFeHByZXNzaW9uRmFjdG9yeWAuIFRoaXMgcmVxdWlyZXMgdGhlIGRlcGVuZGVuY3kgdG8gYmUgbWFudWFsbHkgYWRkZWQgdG8gdGhlIHByb2plY3Qgb3IgYSBgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbmAgd2lsbCBiZSB0aHJvd24uIHwgYEpES1JlZ3VsYXJFeHByZXNzaW9uRmFjdG9yeS5nZXRJbnN0YW5jZSgpYCB8CnwgYHNjaGVtYUlkVmFsaWRhdG9yYCAgICAgICAgICB8IFRoaXMgaXMgdXNlZCB0byBjdXN0b21pemUgaG93IHRoZSBgJGlkYCB2YWx1ZXMgYXJlIHZhbGlkYXRlZC4gTm90ZSB0aGF0IHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGFsbG93cyBub24tZW1wdHkgZnJhZ21lbnRzIHdoZXJlIG5vIGJhc2UgSVJJIGlzIHNwZWNpZmllZCBhbmQgYWxzbyBhbGxvd3Mgbm9uLWFic29sdXRlIElSSSBgJGlkYCB2YWx1ZXMgaW4gdGhlIHJvb3Qgc2NoZW1hLiAgICAgICAgICAgICAgICAgICAgfCBgSnNvblNjaGVtYUlkVmFsaWRhdG9yLkRFRkFVTFRgICAgICAgICAgICAgIHwKfCBgc3RyaWN0YCAgICAgICAgICAgICAgICAgICAgIHwgVGhpcyBpcyBzZXQgd2hldGhlciBrZXl3b3JkcyBhcmUgc3RyaWN0IGluIHRoZWlyIHZhbGlkYXRpb24uIFdoYXQgdGhpcyBkb2VzIGRlcGVuZHMgb24gdGhlIGluZGl2aWR1YWwgdmFsaWRhdG9ycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGB0eXBlTG9vc2VgICAgICAgICAgICAgICAgICAgfCBXaGV0aGVyIHR5cGVzIGFyZSBpbnRlcnByZXRlZCBpbiBhIGxvb3NlIG1hbm5lci4gSWYgc2V0IHRvIHRydWUsIGEgc2luZ2xlIHZhbHVlIGNhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNpemUgMSBhcnJheS4gU3RyaW5ncyBtYXkgYWxzbyBiZSBpbnRlcnByZXRlZCBhcyBudW1iZXIsIGludGVnZXIgb3IgYm9vbGVhbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGZhbHNlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgojIyMgV2FsayBDb25maWd1cmF0aW9uCgp8IE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVmYXVsdCBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IGBhcHBseURlZmF1bHRzU3RyYXRlZ3lgICAgICAgfCBUaGUgc3RyYXRlZ3kgZm9yIGFwcGx5aW5nIGRlZmF1bHRzIHdoZW4gd2Fsa2luZyB3aGVuIG1pc3Npbmcgb3IgbnVsbCBub2RlcyBhcmUgZW5jb3VudGVyZWQuIHwgYEFwcGx5RGVmYXVsdHNTdHJhdGVneS5FTVBUWV9BUFBMWV9ERUZBVUxUU19TVFJBVEVHWWAgfAp8IGBrZXl3b3JkV2Fsa0hhbmRsZXJgICAgICAgICAgfCBUaGUgYFdhbGtIYW5kbGVyYCB0cmlnZ2VyZWQgZm9yIGtleXdvcmRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYE5vT3BXYWxrSGFuZGxlci5nZXRJbnN0YW5jZSgpYCAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBwcm9wZXJ0eVdhbGtIYW5kbGVyYCAgICAgICAgfCBUaGUgYFdhbGtIYW5kbGVyYCB0cmlnZ2VyZWQgZm9yIHByb3BlcnRpZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYE5vT3BXYWxrSGFuZGxlci5nZXRJbnN0YW5jZSgpYCAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBpdGVtV2Fsa0hhbmRsZXJgICAgICAgICAgICAgfCBUaGUgYFdhbGtIYW5kbGVyYCB0cmlnZ2VyZWQgZm9yIGl0ZW1zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYE5vT3BXYWxrSGFuZGxlci5nZXRJbnN0YW5jZSgpYCAgICAgICAgICAgICAgICAgICAgICAgfAoKIyMgUGVyZm9ybWFuY2UgQ29uc2lkZXJhdGlvbnMKClNwZWNpYWwgYXR0ZW50aW9uIHNob3VsZCBiZSBtYWRlIGZvciBpbmVmZmljaWVudCBzY2hlbWFzIHVzaW5nIGRlZXBseSBuZXN0ZWQgYG9uZU9mYCBvciBgYW55T2ZgIHRoYXQgZG8gbm90IGhhdmUgYSBjb25kaXRpb24gdG8gc2hvcnQtY2lyY3VpdCB0aGUgZXZhbHVhdGlvbiB1c2luZyBgaWZgIGFuZCBgdGhlbmAuIFRoZSB2YWxpZGF0b3IgaGFzIG5vIGNob2ljZSBidXQgdG8gcGVyZm9ybSBhbGwgdGhlIGV2YWx1YXRpb25zLCBhbmQgdGhlIGVycm9yIG1lc3NhZ2VzIHdvdWxkIGJlIHR5cGljYWxseSB2ZXJ5IGNvbmZ1c2luZyBhcyBpdCB3aWxsIHJldHVybiBhbGwgdGhlIG1lc3NhZ2VzIGZyb20gdGhlIGNoaWxkcmVuLgoKSW5zdGFuY2VzIGZvciBgU2NoZW1hUmVnaXN0cnlgIGFuZCB0aGUgYFNjaGVtYWAgY3JlYXRlZCBmcm9tIGl0IGFyZSBkZXNpZ25lZCB0byBiZSB0aHJlYWQtc2FmZSBwcm92aWRlZCBpdHMgY29uZmlndXJhdGlvbiBpcyBub3QgbW9kaWZpZWQgYW5kIHNob3VsZCBiZSBjYWNoZWQgYW5kIHJldXNlZC4gTm90IHJldXNpbmcgdGhlIGBTY2hlbWFgIG1lYW5zIHRoYXQgdGhlIHNjaGVtYSBkYXRhIG5lZWRzIHRvIGJlIHJlcGVhdGVkIHBhcnNlZCB3aXRoIHZhbGlkYXRvciBpbnN0YW5jZXMgY3JlYXRlZCBhbmQgcmVmZXJlbmNlcyByZXNvbHZlZC4gV2hlbiByZWZlcmVuY2VzIGFyZSByZXNvbHZlZCwgdGhlIHZhbGlkYXRvcnMgY3JlYXRlZCB3aWxsIGJlIGNhY2hlZC4KCkNvbGxlY3RpbmcgYW5ub3RhdGlvbnMgd2lsbCBhZHZlcnNlbHkgYWZmZWN0IHZhbGlkYXRpb24gcGVyZm9ybWFuY2UuCgpUaGUgZWFybGllciBkcmFmdCBzcGVjaWZpY2F0aW9ucyBjb250YWluIGxlc3Mga2V5d29yZHMgdGhhdCBjYW4gcG90ZW50aWFsbHkgaW1wYWN0IHBlcmZvcm1hbmNlLiBGb3IgaW5zdGFuY2UgdGhlIHVzZSBvZiB0aGUgYHVuZXZhbHVhdGVkUHJvcGVydGllc2Agb3IgYHVuZXZhbHVhdGVkSXRlbXNgIGtleXdvcmQgd2lsbCB0cmlnZ2VyIGFubm90YXRpb24gY29sbGVjdGlvbiBpbiB0aGUgcmVsYXRlZCB2YWxpZGF0b3JzLCBzdWNoIGFzIHRoZSBgcHJvcGVydGllc2Agb3IgYGl0ZW1zYCB2YWxpZGF0b3JzLgoKVGhpcyBkb2VzIG5vdCBtZWFuIHRoYXQgdXNpbmcgYSBzY2hlbWEgd2l0aCBhIGxhdGVyIGRyYWZ0IHNwZWNpZmljYXRpb24gd2lsbCBhdXRvbWF0aWNhbGx5IGNhdXNlIGEgcGVyZm9ybWFuY2UgaW1wYWN0LiBGb3IgaW5zdGFuY2UsIHRoZSBgcHJvcGVydGllc2AgdmFsaWRhdG9yIHdpbGwgcGVyZm9ybSBjaGVja3MgdG8gZGV0ZXJtaW5lIGlmIGFubm90YXRpb25zIG5lZWQgdG8gYmUgY29sbGVjdGVkLCBhbmQgY2hlY2tzIGlmIHRoZSBkaWFsZWN0IGNvbnRhaW5zIHRoZSBgdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzYCBrZXl3b3JkIGFuZCB3aGV0aGVyIHRoZSBgdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzYCBrZXl3b3JkIGV4aXN0cyBhZGphY2VudCB0aGUgZXZhbHVhdGlvbiBwYXRoLgoKIyMgU2VjdXJpdHkgQ29uc2lkZXJhdGlvbnMKClRoZSBsaWJyYXJ5IGFzc3VtZXMgdGhhdCB0aGUgc2NoZW1hcyBiZWluZyBsb2FkZWQgYXJlIHRydXN0ZWQuIFRoaXMgc2VjdXJpdHkgbW9kZWwgYXNzdW1lcyB0aGUgdXNlIGNhc2Ugd2hlcmUgdGhlIHNjaGVtYXMgYXJlIGJ1bmRsZWQgd2l0aCB0aGUgYXBwbGljYXRpb24gb24gdGhlIGNsYXNzcGF0aC4KCnwgSXNzdWUgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNaXRpZ2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBTY2hlbWEgTG9hZGluZyAgICAgIHwgVGhlIGxpYnJhcnkgYnkgZGVmYXVsdCB3aWxsIGxvYWQgc2NoZW1hcyBmcm9tIHRoZSBjbGFzc3BhdGggYW5kIG92ZXIgdGhlIGludGVybmV0IGlmIG5lZWRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRoZSBgU2NoZW1hTG9hZGVyYCBjYW4gYmUgY29uZmlndXJlZCB0byBibG9jayBvciBhbGxvdyBjZXJ0YWluIElSSXMgZm9yIHNjaGVtYSByZXRyaWV2YWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgU2NoZW1hIENhY2hpbmcgICAgICB8IFRoZSBsaWJyYXJ5IGJ5IGRlZmF1bHQgcHJlbG9hZHMgYW5kIGNhY2hlcyByZWZlcmVuY2VzIHdoZW4gbG9hZGluZyBzY2hlbWFzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTZXQgYGNhY2hlUmVmc2Agb3B0aW9uIGluIGBTY2hlbWFSZWdpc3RyeUNvbmZpZ2AgdG8gZmFsc2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFJlZ3VsYXIgRXhwcmVzc2lvbnMgfCBUaGUgbGlicmFyeSBkb2VzIG5vdCB2YWxpZGF0ZSBpZiBhIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbiBpcyBzdXNjZXB0YWJsZSB0byBkZW5pYWwgb2Ygc2VydmljZSAoW1JlRG9TXShodHRwczovL293YXNwLm9yZy93d3ctY29tbXVuaXR5L2F0dGFja3MvUmVndWxhcl9leHByZXNzaW9uX0RlbmlhbF9vZl9TZXJ2aWNlXy1fUmVEb1MpKS4gICAgICAgICAgIHwgQW4gYEFsbG93UmVndWxhckV4cHJlc3Npb25GYWN0b3J5YCBjYW4gYmUgY29uZmlndXJlZCB0byBwZXJmb3JtIHZhbGlkYXRpb24gb24gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhhdCBhcmUgYWxsb3dlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBWYWxpZGF0aW9uIEVycm9ycyAgIHwgVGhlIGxpYnJhcnkgYnkgZGVmYXVsdCBhdHRlbXB0cyB0byByZXR1cm4gYWxsIHZhbGlkYXRpb24gZXJyb3JzLiBUaGUgdXNlIG9mIGFwcGxpY2F0b3JzIHN1Y2ggYXMgYGFsbE9mYCB3aXRoIGEgbGFyZ2UgbnVtYmVyIG9mIHNjaGVtYXMgbWF5IHJlc3VsdCBpbiBhIGxhcmdlIG51bWJlciBvZiB2YWxpZGF0aW9uIGVycm9ycyB0YWtpbmcgdXAgbWVtb3J5LiB8IFNldCBgZmFpbEZhc3RgIG9wdGlvbiBpbiBgU2NoZW1hUmVnaXN0cnlDb25maWdgIHRvIGltbWVkaWF0ZWx5IHJldHVybiB3aGVuIHRoZSBmaXJzdCBlcnJvciBpcyBlbmNvdW50ZXJlZC4gVGhlIGBPdXRwdXRGb3JtYXQuQk9PTEVBTmAgb3IgYE91dHB1dEZvcm1hdC5GTEFHYCBhbHNvIGNhbiBiZSB1c2VkLiB8CgojIyBbUXVpY2sgU3RhcnRdKGRvYy9xdWlja3N0YXJ0Lm1kKQoKIyMgW0N1c3RvbWl6aW5nIFNjaGVtYSBSZXRyaWV2YWxdKGRvYy9zY2hlbWEtcmV0cmlldmFsLm1kKQoKIyMgW0N1c3RvbWl6aW5nIERpYWxlY3RzLCBWb2NhYnVsYXJpZXMsIEtleXdvcmRzIGFuZCBGb3JtYXRzXShkb2MvY3VzdG9tLWRpYWxlY3QubWQpCgojIyBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShkb2Mvb3BlbmFwaS5tZCkKCiMjIFtTY2hlbWEgV2Fsa2Vyc10oZG9jL3dhbGtlcnMubWQpCgojIyBbUmVndWxhciBFeHByZXNzaW9uc10oZG9jL2VjbWEtMjYyLm1kKQoKIyMgW0N1c3RvbSBFcnJvciBNZXNzYWdlc10oZG9jL2Vycm9yLW1lc3NhZ2UubWQpCgojIyBbTXVsdGlwbGUgTGFuZ3VhZ2VdKGRvYy9tdWx0aXBsZS1sYW5ndWFnZS5tZCkKCiMjIFtNZXRhU2NoZW1hIFZhbGlkYXRpb25dKGRvYy9tZXRhc2NoZW1hLXZhbGlkYXRpb24ubWQpCgojIyBQcm9qZWN0cwoKVGhlIFtsaWdodC1yZXN0LTRqXShodHRwczovL2dpdGh1Yi5jb20vbmV0d29ya250L2xpZ2h0LXJlc3QtNGopLCBbbGlnaHQtZ3JhcGhxbC00al0oaHR0cHM6Ly9naXRodWIuY29tL25ldHdvcmtudC9saWdodC1ncmFwaHFsLTRqKSBhbmQgW2xpZ2h0LWh5YnJpZC00al0oaHR0cHM6Ly9naXRodWIuY29tL25ldHdvcmtudC9saWdodC1oeWJyaWQtNGopIHVzZSB0aGlzIGxpYnJhcnkgdG8gdmFsaWRhdGUgdGhlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGJhc2VkIG9uIHRoZSBzcGVjaWZpY2F0aW9ucy4gSWYgeW91IGFyZSB1c2luZyBvdGhlciBmcmFtZXdvcmtzIGxpa2UgU3ByaW5nIEJvb3QsIHlvdSBjYW4gdXNlIHRoZSBbT3BlbkFwaVZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL21zZXJ2aWNldGVjaC9vcGVuYXBpLXNjaGVtYS12YWxpZGF0aW9uKSwgYSBnZW5lcmljIE9wZW5BUEkgMy4wIHZhbGlkYXRvciBiYXNlZCBvbiB0aGUgT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbi4KCklmIHlvdSBoYXZlIGEgcHJvamVjdCB1c2luZyB0aGlzIGxpYnJhcnksIHBsZWFzZSBzdWJtaXQgYSBQUiB0byBhZGQgeW91ciBwcm9qZWN0IGJlbG93LgoKLSBbbXBlbmV0L2xlZ2JhXShodHRwczovL2dpdGh1Yi5jb20vbXBlbmV0L2xlZ2JhLykgLSBPcGVuQVBJIHNlcnZpY2UgbGlicmFyeSBmb3IgY2xvanVyZSwgYWRoZXJpbmcgdG8gdGhlIFtSSU5HIHNwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9yaW5nLWNsb2p1cmUvcmluZykKCiMjIENvbnRyaWJ1dG9ycwoKVGhhbmtzIHRvIHRoZSBmb2xsb3dpbmcgcGVvcGxlIHdobyBoYXZlIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcHJvamVjdC4gSWYgeW91IGFyZSB1c2luZyB0aGlzIGxpYnJhcnksIHBsZWFzZSBjb25zaWRlciB0byBiZSBhIHNwb25zb3IgZm9yIG9uZSBvZiB0aGUgY29udHJpYnV0b3JzLgoKW0BzdGV2ZWh1XShodHRwczovL2dpdGh1Yi5jb20vc3BvbnNvcnMvc3RldmVodSkKCltAanVzdGluLXRheV0oaHR0cHM6Ly9naXRodWIuY29tL2p1c3Rpbi10YXkpCgpbQGZkdXR0b25dKGh0dHBzOi8vZ2l0aHViLmNvbS9mZHV0dG9uKQoKW0BwcmFzaGFudGgtY2hhaXRhbnlhXShodHRwczovL2dpdGh1Yi5jb20vcHJhc2hhbnRoLWNoYWl0YW55YSkKCltAQmFsbG9vbldlbl0oaHR0cHM6Ly9naXRodWIuY29tL0JhbGxvb25XZW4pCgpbQGppYWNoZW4xMTIwXShodHRwczovL2dpdGh1Yi5jb20vamlhY2hlbjExMjApCgpbQHZhbGZpcnN0XShodHRwczovL2dpdGh1Yi5jb20vdmFsZmlyc3QpCgpbQGRkb2JyaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9kZG9icmluKQoKW0Blc2thYmV0eGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9lc2thYmV0eGUpCgpbQGVocm1hbm5dKGh0dHBzOi8vZ2l0aHViLmNvbS9laHJtYW5uKQoKW0BwcmFzaGFudGhqb3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcmFzaGFudGhqb3MpCgpbQFN1Ymhhaml0ZGFzMjk4XShodHRwczovL2dpdGh1Yi5jb20vU3ViaGFqaXRkYXMyOTgpCgpbQEZXaWVzbmVyXShodHRwczovL2dpdGh1Yi5jb20vRldpZXNuZXIpCgpbQGphd2FmZl0oaHR0cHM6Ly9naXRodWIuY29tL2phd2FmZikKCltAYXpuYW4yXShodHRwczovL2dpdGh1Yi5jb20vYXpuYW4yKQoKW0ByaHdvb2RdKGh0dHBzOi8vZ2l0aHViLmNvbS9yaHdvb2QpCgpGb3IgYWxsIGNvbnRyaWJ1dG9ycywgcGxlYXNlIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9uZXR3b3JrbnQvanNvbi1zY2hlbWEtdmFsaWRhdG9yL2dyYXBocy9jb250cmlidXRvcnMKCklmIHlvdSBhcmUgYSBjb250cmlidXRvciwgcGxlYXNlIGpvaW4gdGhlIFtHaXRIdWIgU3BvbnNvcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycykgYW5kIHN3aXRjaCB0aGUgbGluayB0byB5b3VyIHNwb25zb3JzIGRhc2hib2FyZCB2aWEgYSBQUi4KCiMjIFNwb25zb3JzCgojIyMgSW5kaXZpZHVhbCBTcG9uc29ycwoKIyMjIENvcnBvcmF0aW9uIFNwb25zb3JzCg== readmeEtag: '"d7378e4bd4e007f4c748c3bfc12c2679dfc826d1"' readmeLastModified: Mon, 05 Jan 2026 03:02:31 GMT repositoryId: 68291529 description: >- A fast Java JSON schema validator that supports draft V4, V6, V7, V2019-09 and V2020-12 created: '2016-09-15T12:24:16Z' updated: '2026-02-03T15:53:12Z' language: Java archived: false stars: 1026 watchers: 38 forks: 335 owner: networknt logo: https://avatars.githubusercontent.com/u/8740739?v=4 license: Apache-2.0 repoEtag: '"03e28aed8dbe5d7877077d798d734bdb1b0a07863b350d205c5c1718329a5d26"' repoLastModified: Tue, 03 Feb 2026 15:53:12 GMT foundInMaster: true category: Parsers id: 69c6f349899d198b4045edb7ffa3fb74 - source: openapi3 tags repository: https://github.com/openapitools/openapi-diff v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJLWRpZmYgCgpDb21wYXJlIHR3byBPcGVuQVBJIHNwZWNpZmljYXRpb25zICgzLngpIGFuZCByZW5kZXIgdGhlIGRpZmZlcmVuY2UgdG8gSFRNTCBwbGFpbiB0ZXh0LCBNYXJrZG93biBmaWxlcywgb3IgSlNPTiBmaWxlcy4KClshW0J1aWxkXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZGlmZi93b3JrZmxvd3MvTWFpbiUyMEJ1aWxkL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1kaWZmL2FjdGlvbnM/cXVlcnk9YnJhbmNoJTNBbWFzdGVyK3dvcmtmbG93JTNBIk1haW4rQnVpbGQiKQpbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1PcGVuQVBJVG9vbHNfb3BlbmFwaS1kaWZmJm1ldHJpYz1hbGVydF9zdGF0dXMpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPU9wZW5BUElUb29sc19vcGVuYXBpLWRpZmYpCgpbIVtNYXZlbiBDZW50cmFsXShodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLWNlbnRyYWwvdi9vcmcub3BlbmFwaXRvb2xzLm9wZW5hcGlkaWZmL29wZW5hcGktZGlmZi1jb3JlKV0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnL2FydGlmYWN0L29yZy5vcGVuYXBpdG9vbHMub3BlbmFwaWRpZmYvb3BlbmFwaS1kaWZmLWNvcmUpCgpbIVtDb250cmlidXRlIHdpdGggR2l0cG9kXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0NvbnRyaWJ1dGUlMjB3aXRoLUdpdHBvZC05MDhhODU/bG9nbz1naXRwb2QpXShodHRwczovL2dpdHBvZC5pby8jaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWRpZmYpClshW0pvaW4gdGhlIFNsYWNrIGNoYXQgcm9vbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9TbGFjay1Kb2luJTIwdGhlJTIwY2hhdCUyMHJvb20tb3JhbmdlKV0oaHR0cHM6Ly9qb2luLnNsYWNrLmNvbS90L29wZW5hcGktZ2VuZXJhdG9yL3NoYXJlZF9pbnZpdGUvenQtMTJqeHhkN3AyLVhVZVFNfjRwenNVOXh+ZUdMUXFYMmcpCgpbIVtEb2NrZXIgQXV0b21hdGVkIGJ1aWxkXShodHRwczovL2ltZy5zaGllbGRzLmlvL2RvY2tlci9hdXRvbWF0ZWQvb3BlbmFwaXRvb2xzL29wZW5hcGktZGlmZildKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9vcGVuYXBpdG9vbHMvb3BlbmFwaS1kaWZmKQpbIVtEb2NrZXIgSW1hZ2UgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvdi9vcGVuYXBpdG9vbHMvb3BlbmFwaS1kaWZmP3NvcnQ9c2VtdmVyKV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29wZW5hcGl0b29scy9vcGVuYXBpLWRpZmYvdGFncykKCiMgUmVxdWlyZW1lbnRzCgoqIEphdmEgOAoKIyBGZWF0dXJlCgoqIFN1cHBvcnRzIE9wZW5BUEkgc3BlYyB2My4wLgoqIEluLWRlcHRoIGNvbXBhcmlzb24gb2YgcGFyYW1ldGVycywgcmVzcG9uc2VzLCBlbmRwb2ludCwgaHR0cCBtZXRob2QgKEdFVCxQT1NULFBVVCxERUxFVEUuLi4pCiogU3VwcG9ydHMgc3dhZ2dlciBhcGkgQXV0aG9yaXphdGlvbgoqIFJlbmRlciBkaWZmZXJlbmNlIG9mIHByb3BlcnR5IHdpdGggRXhwcmVzc2lvbiBMYW5ndWFnZQoqIEhUTUwsIE1hcmtkb3duLCBBc2NpaWRvYyAmIEpTT04gcmVuZGVyCgojIE1hdmVuCgpBdmFpbGFibGUgb24gW01hdmVuIENlbnRyYWxdKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9hcnRpZmFjdC9vcmcub3BlbmFwaXRvb2xzLm9wZW5hcGlkaWZmL29wZW5hcGktZGlmZi1jb3JlKQoKYGBgeG1sCjxkZXBlbmRlbmN5PgogIDxncm91cElkPm9yZy5vcGVuYXBpdG9vbHMub3BlbmFwaWRpZmY8L2dyb3VwSWQ+CiAgPGFydGlmYWN0SWQ+b3BlbmFwaS1kaWZmLWNvcmU8L2FydGlmYWN0SWQ+CiAgPHZlcnNpb24+JHtvcGVuYXBpLWRpZmYtdmVyc2lvbn08L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgCgojIEhvbWVicmV3CkF2YWlsYWJsZSBmb3IgTWFjIHVzZXJzIG9uIFticmV3XShodHRwczovL2Zvcm11bGFlLmJyZXcuc2gvZm9ybXVsYS9vcGVuYXBpLWRpZmYpCgpgYGBiYXNoCmJyZXcgaW5zdGFsbCBvcGVuYXBpLWRpZmYKYGBgClVzYWdlIGluc3RydWN0aW9ucyBpbiBbVXNhZ2UgLT4gQ29tbWFuZCBsaW5lXSgjY29tbWFuZC1saW5lKQoKIyBEb2NrZXIKCkF2YWlsYWJsZSBvbiBbRG9ja2VyIEh1Yl0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29wZW5hcGl0b29scy9vcGVuYXBpLWRpZmYvKSBhcyBgb3BlbmFwaXRvb2xzL29wZW5hcGktZGlmZmAuCgpgYGBiYXNoCiMgZG9ja2VyIHJ1biBvcGVuYXBpdG9vbHMvb3BlbmFwaS1kaWZmOmxhdGVzdAp1c2FnZTogb3BlbmFwaS1kaWZmIDxvbGQ+IDxuZXc+CiAgICAtLWFzY2lpZG9jIDxmaWxlPiAgICAgICAgICAgZXhwb3J0IGRpZmYgYXMgYXNjaWlkb2MgaW4gZ2l2ZW4gZmlsZQogICAgLS1kZWJ1ZyAgICAgICAgICAgICAgICAgICAgIFByaW50IGRlYnVnZ2luZyBpbmZvcm1hdGlvbgogICAgLS1lcnJvciAgICAgICAgICAgICAgICAgICAgIFByaW50IGVycm9yIGluZm9ybWF0aW9uCiAgICAtLWZhaWwtb24tY2hhbmdlZCAgICAgICAgICAgRmFpbCBpZiBBUEkgY2hhbmdlZCBidXQgaXMgYmFja3dhcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlCiAgICAtLWZhaWwtb24taW5jb21wYXRpYmxlICAgICAgRmFpbCBvbmx5IGlmIEFQSSBjaGFuZ2VzIGJyb2tlIGJhY2t3YXJkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eQogICAgLS1jb25maWctZmlsZSAgICAgICAgICAgICAgIENvbmZpZyBmaWxlIHRvIG92ZXJyaWRlIGRlZmF1bHQgYmVoYXZpb3IuIFN1cHBvcnRlZCBmaWxlIGZvcm1hdHM6IC55YW1sCiAgICAtLWNvbmZpZy1wcm9wICAgICAgICAgICAgICAgQ29uZmlnIHByb3BlcnR5IHRvIG92ZXJyaWRlIGRlZmF1bHQgYmVoYXZpb3Igd2l0aCBrZXk6dmFsdWUgZm9ybWF0IChlLmcuIG15LnByb3A6dHJ1ZSkKIC1oLC0taGVscCAgICAgICAgICAgICAgICAgICAgICBwcmludCB0aGlzIG1lc3NhZ2UKICAgIC0taGVhZGVyIDxwcm9wZXJ0eT12YWx1ZT4gICB1c2UgZ2l2ZW4gaGVhZGVyIGZvciBhdXRob3Jpc2F0aW9uCiAgICAtLWh0bWwgPGZpbGU+ICAgICAgICAgICAgICAgZXhwb3J0IGRpZmYgYXMgaHRtbCBpbiBnaXZlbiBmaWxlCiAgICAtLWluZm8gICAgICAgICAgICAgICAgICAgICAgUHJpbnQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgogICAgLS1qc29uIDxmaWxlPiAgICAgICAgICAgICAgIGV4cG9ydCBkaWZmIGFzIGpzb24gaW4gZ2l2ZW4gZmlsZQogLWwsLS1sb2cgPGxldmVsPiAgICAgICAgICAgICAgIHVzZSBnaXZlbiBsZXZlbCBmb3IgbG9nIChUUkFDRSwgREVCVUcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5GTywgV0FSTiwgRVJST1IsIE9GRikuIERlZmF1bHQ6IEVSUk9SCiAgICAtLW1hcmtkb3duIDxmaWxlPiAgICAgICAgICAgZXhwb3J0IGRpZmYgYXMgbWFya2Rvd24gaW4gZ2l2ZW4gZmlsZQogICAgLS1vZmYgICAgICAgICAgICAgICAgICAgICAgIE5vIGluZm9ybWF0aW9uIHByaW50ZWQKICAgIC0tcXVlcnkgPHByb3BlcnR5PXZhbHVlPiAgICB1c2UgcXVlcnkgcGFyYW0gZm9yIGF1dGhvcmlzYXRpb24KICAgIC0tc3RhdGUgICAgICAgICAgICAgICAgICAgICBPbmx5IG91dHB1dCBkaWZmIHN0YXRlOiBub19jaGFuZ2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29tcGF0aWJsZSwgY29tcGF0aWJsZQogICAgLS10ZXh0IDxmaWxlPiAgICAgICAgICAgICAgIGV4cG9ydCBkaWZmIGFzIHRleHQgaW4gZ2l2ZW4gZmlsZQogICAgLS10cmFjZSAgICAgICAgICAgICAgICAgICAgIGJlIGV4dHJhIHZlcmJvc2UKICAgIC0tdmVyc2lvbiAgICAgICAgICAgICAgICAgICBwcmludCB0aGUgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAogICAgLS13YXJuICAgICAgICAgICAgICAgICAgICAgIFByaW50IHdhcm5pbmcgaW5mb3JtYXRpb24KYGBgCgojIyBCdWlsZCB0aGUgaW1hZ2UKClRoaXMgaXMgb25seSByZXF1aXJlZCBpZiB5b3Ugd2FudCB0byB0cnkgbmV3IGNoYW5nZXMgaW4gdGhlIERvY2tlcmZpbGUgb2YgdGhpcyBwcm9qZWN0LgoKYGBgYmFzaApkb2NrZXIgYnVpbGQgLXQgbG9jYWwtb3BlbmFwaS1kaWZmIC4KYGBgCgpZb3UgY2FuIHJlcGxhY2UgdGhlIGxvY2FsIGltYWdlIG5hbWUgYGxvY2FsLW9wZW5hcGktZGlmZmAgYnkgYW55IG5hbWUgb2YgeW91ciBjaG9pY2UuCgojIyBSdW4gYW4gaW5zdGFuY2UKCkluIHRoaXMgZXhhbXBsZSB0aGUgYCQocHdkKS9jb3JlL3NyYy90ZXN0L3Jlc291cmNlc2AgZGlyZWN0b3J5IGlzIG1vdW50ZWQgaW4gdGhlIGAvc3BlY3NgIGRpcmVjdG9yeSBvZiB0aGUgY29udGFpbmVyCmluIHJlYWRvbmx5IG1vZGUgKGByb2ApLgoKYGBgYmFzaApkb2NrZXIgcnVuIC0tcm0gLXQgXAogIC12ICQocHdkKS9jb3JlL3NyYy90ZXN0L3Jlc291cmNlczovc3BlY3M6cm8gXAogIG9wZW5hcGl0b29scy9vcGVuYXBpLWRpZmY6bGF0ZXN0IC9zcGVjcy9wYXRoXzEueWFtbCAvc3BlY3MvcGF0aF8yLnlhbWwKYGBgCgpUaGUgcmVtb3RlIG5hbWUgYG9wZW5hcGl0b29scy9vcGVuYXBpLWRpZmZgIGNhbiBiZSByZXBsYWNlZCB3aXRoIGBsb2NhbC1vcGVuYXBpLWRpZmZgIG9yIHRoZSBuYW1lIHlvdSBnYXZlIHRvIHlvdXIgbG9jYWwgaW1hZ2UuCgojIFVzYWdlCgpvcGVuYXBpLWRpZmYgY2FuIHJlYWQgT3BlbkFQSSBzcGVjcyBmcm9tIEpTT04gZmlsZXMgb3IgSFRUUCBVUkxzLgoKIyMgQ29tbWFuZCBMaW5lCgpgYGBiYXNoCiQgb3BlbmFwaS1kaWZmIC0taGVscAp1c2FnZTogb3BlbmFwaS1kaWZmIDxvbGQ+IDxuZXc+CiAgICAtLWFzY2lpZG9jIDxmaWxlPiAgICAgICAgICAgZXhwb3J0IGRpZmYgYXMgYXNjaWlkb2MgaW4gZ2l2ZW4gZmlsZQogICAgLS1kZWJ1ZyAgICAgICAgICAgICAgICAgICAgIFByaW50IGRlYnVnZ2luZyBpbmZvcm1hdGlvbgogICAgLS1lcnJvciAgICAgICAgICAgICAgICAgICAgIFByaW50IGVycm9yIGluZm9ybWF0aW9uCiAtaCwtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgdGhpcyBtZXNzYWdlCiAgICAtLWhlYWRlciA8cHJvcGVydHk9dmFsdWU+ICAgdXNlIGdpdmVuIGhlYWRlciBmb3IgYXV0aG9yaXNhdGlvbgogICAgLS1odG1sIDxmaWxlPiAgICAgICAgICAgICAgIGV4cG9ydCBkaWZmIGFzIGh0bWwgaW4gZ2l2ZW4gZmlsZQogICAgLS1pbmZvICAgICAgICAgICAgICAgICAgICAgIFByaW50IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KICAgIC0tanNvbiA8ZmlsZT4gICAgICAgICAgICAgICBleHBvcnQgZGlmZiBhcyBqc29uIGluIGdpdmVuIGZpbGUKIC1sLC0tbG9nIDxsZXZlbD4gICAgICAgICAgICAgICB1c2UgZ2l2ZW4gbGV2ZWwgZm9yIGxvZyAoVFJBQ0UsIERFQlVHLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElORk8sIFdBUk4sIEVSUk9SLCBPRkYpLiBEZWZhdWx0OiBFUlJPUgogICAgLS1tYXJrZG93biA8ZmlsZT4gICAgICAgICAgIGV4cG9ydCBkaWZmIGFzIG1hcmtkb3duIGluIGdpdmVuIGZpbGUKICAgIC0tb2ZmICAgICAgICAgICAgICAgICAgICAgICBObyBpbmZvcm1hdGlvbiBwcmludGVkCiAgICAtLXF1ZXJ5IDxwcm9wZXJ0eT12YWx1ZT4gICAgdXNlIHF1ZXJ5IHBhcmFtIGZvciBhdXRob3Jpc2F0aW9uCiAgICAtLXN0YXRlICAgICAgICAgICAgICAgICAgICAgT25seSBvdXRwdXQgZGlmZiBzdGF0ZTogbm9fY2hhbmdlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdGlibGUsIGNvbXBhdGlibGUKICAgIC0tZmFpbC1vbi1pbmNvbXBhdGlibGUgICAgICBGYWlsIG9ubHkgaWYgQVBJIGNoYW5nZXMgYnJva2UgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgLS1mYWlsLW9uLWNoYW5nZWQgICAgICAgICAgIEZhaWwgaWYgQVBJIGNoYW5nZWQgYnV0IGlzIGJhY2t3YXJkIGNvbXBhdGlibGUKICAgIC0tY29uZmlnLWZpbGUgICAgICAgICAgICAgICBDb25maWcgZmlsZSB0byBvdmVycmlkZSBkZWZhdWx0IGJlaGF2aW9yLiBTdXBwb3J0ZWQgZmlsZSBmb3JtYXRzOiAueWFtbAogICAgLS1jb25maWctcHJvcCAgICAgICAgICAgICAgIENvbmZpZyBwcm9wZXJ0eSB0byBvdmVycmlkZSBkZWZhdWx0IGJlaGF2aW9yIHdpdGgga2V5OnZhbHVlIGZvcm1hdCAoZS5nLiBteS5wcm9wOnRydWUpCiAgICAtLXRyYWNlICAgICAgICAgICAgICAgICAgICAgYmUgZXh0cmEgdmVyYm9zZQogICAgLS12ZXJzaW9uICAgICAgICAgICAgICAgICAgIHByaW50IHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CiAgICAtLXdhcm4gICAgICAgICAgICAgICAgICAgICAgUHJpbnQgd2FybmluZyBpbmZvcm1hdGlvbgpgYGAKCiMjIE1hdmVuIFBsdWdpbgoKQWRkIG9wZW5hcGktZGlmZiB0byB5b3VyIFBPTSB0byBzaG93IGRpZmZzIHdoZW4geW91IHRlc3QgeW91ciBNYXZlbiBwcm9qZWN0LiBZb3UgbWF5IG9wdCB0byB0aHJvdyBhbiBlcnJvciBpZiB5b3UgaGF2ZSBicm9rZW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgb3IgaWYgeW91ciBBUEkgaGFzIGNoYW5nZWQuICAKCmBgYHhtbAo8cGx1Z2luPgogIDxncm91cElkPm9yZy5vcGVuYXBpdG9vbHMub3BlbmFwaWRpZmY8L2dyb3VwSWQ+CiAgPGFydGlmYWN0SWQ+b3BlbmFwaS1kaWZmLW1hdmVuPC9hcnRpZmFjdElkPgogIDx2ZXJzaW9uPiR7b3BlbmFwaS1kaWZmLXZlcnNpb259PC92ZXJzaW9uPgogIDxleGVjdXRpb25zPgogICAgPGV4ZWN1dGlvbj4KICAgICAgPGdvYWxzPgogICAgICAgIDxnb2FsPmRpZmY8L2dvYWw+CiAgICAgIDwvZ29hbHM+CiAgICAgIDxjb25maWd1cmF0aW9uPgogICAgICAgIDwhLS0gUmVmZXJlbmNlIHNwZWNpZmljYXRpb24gKHBlcmhhcHMgeW91ciBwcm9kIHNjaGVtYSkgLS0+CiAgICAgICAgPG9sZFNwZWM+aHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uPC9vbGRTcGVjPgogICAgICAgIDwhLS0gU3BlY2lmaWNhdGlvbiBnZW5lcmF0ZWQgYnkgeW91ciBwcm9qZWN0IGluIHRoZSBjb21waWxlIHBoYXNlIC0tPgogICAgICAgIDxuZXdTcGVjPiR7cHJvamVjdC5iYXNlZGlyfS90YXJnZXQvb3BlbmFwaS55YW1sPC9uZXdTcGVjPgogICAgICAgIDwhLS0gRmFpbCBvbmx5IGlmIEFQSSBjaGFuZ2VzIGJyb2tlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKGRlZmF1bHQ6IGZhbHNlKSAtLT4KICAgICAgICA8ZmFpbE9uSW5jb21wYXRpYmxlPnRydWU8L2ZhaWxPbkluY29tcGF0aWJsZT4KICAgICAgICA8IS0tIEZhaWwgaWYgQVBJIGNoYW5nZWQgKGRlZmF1bHQ6IGZhbHNlKSAtLT4KICAgICAgICA8ZmFpbE9uQ2hhbmdlZD50cnVlPC9mYWlsT25DaGFuZ2VkPgogICAgICAgIDwhLS0gU3VwcGx5IGZpbGUgcGF0aCBmb3IgY29uc29sZSBvdXRwdXQgdG8gZmlsZSBpZiBkZXNpcmVkLiAtLT4KICAgICAgICA8Y29uc29sZU91dHB1dEZpbGVOYW1lPiR7cHJvamVjdC5iYXNlZGlyfS8uLi9tYXZlbi90YXJnZXQvZGlmZi50eHQ8L2NvbnNvbGVPdXRwdXRGaWxlTmFtZT4KICAgICAgICA8IS0tIFN1cHBseSBmaWxlIHBhdGggZm9yIGpzb24gb3V0cHV0IHRvIGZpbGUgaWYgZGVzaXJlZC4gLS0+CiAgICAgICAgPGpzb25PdXRwdXRGaWxlTmFtZT4ke3Byb2plY3QuYmFzZWRpcn0vLi4vbWF2ZW4vdGFyZ2V0L2RpZmYuanNvbjwvanNvbk91dHB1dEZpbGVOYW1lPgogICAgICAgIDwhLS0gU3VwcGx5IGZpbGUgcGF0aCBmb3IgbWFya2Rvd24gb3V0cHV0IHRvIGZpbGUgaWYgZGVzaXJlZC4gLS0+CiAgICAgICAgPG1hcmtkb3duT3V0cHV0RmlsZU5hbWU+JHtwcm9qZWN0LmJhc2VkaXJ9Ly4uL21hdmVuL3RhcmdldC9kaWZmLm1kPC9tYXJrZG93bk91dHB1dEZpbGVOYW1lPgogICAgICAgIDwhLS0gU3VwcGx5IGNvbmZpZyBmaWxlKHMpLCBlLmcuIHRvIGRpc2FibGUgaW5jb21wYXRpYmlsaXR5IGNoZWNrcy4gTGF0ZXIgZmlsZXMgb3ZlcnJpZGUgZWFybGllciBmaWxlcyAtLT4KICAgICAgICA8Y29uZmlnRmlsZXM+CiAgICAgICAgICA8Y29uZmlnRmlsZT5teS9jb25maWctZmlsZS55YW1sPC9jb25maWdGaWxlPgogICAgICAgIDwvY29uZmlnRmlsZXM+CiAgICAgICAgPCEtLSBTdXBwbHkgY29uZmlnIHByb3BlcnRpZXMsIGUuZy4gdG8gZGlzYWJsZSBpbmNvbXBhdGliaWxpdHkgY2hlY2tzLiBPdmVycmlkZXMgY29uZmlnRmlsZXMuIC0tPgogICAgICAgIDxjb25maWdQcm9wcz4KICAgICAgICAgIDxpbmNvbXBhdGlibGUucmVzcG9uc2UuZW51bS5pbmNyZWFzZWQ+ZmFsc2U8L2luY29tcGF0aWJsZS5yZXNwb25zZS5lbnVtLmluY3JlYXNlZD4KICAgICAgICA8L2NvbmZpZ1Byb3BzPgogICAgICA8L2NvbmZpZ3VyYXRpb24+CiAgICA8L2V4ZWN1dGlvbj4KICA8L2V4ZWN1dGlvbnM+CjwvcGx1Z2luPgpgYGAKCiMjIERpcmVjdCBJbnZvY2F0aW9uCgpgYGBqYXZhCnB1YmxpYyBjbGFzcyBNYWluIHsKICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9QRU5BUElfRE9DMSA9ICJwZXRzdG9yZV92M18xLmpzb24iOwogICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1BFTkFQSV9ET0MyID0gInBldHN0b3JlX3YyXzIueWFtbCI7CiAgICAgICAgCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgQ2hhbmdlZE9wZW5BcGkgZGlmZiA9IE9wZW5BcGlDb21wYXJlLmZyb21Mb2NhdGlvbnMoT1BFTkFQSV9ET0MxLCBPUEVOQVBJX0RPQzIpOwoKICAgICAgICAvLy4uLgogICAgfQp9CmBgYAoKIyMjIFBhdGggTWF0Y2hpbmcgd2hpbGUgY29tcGFyaW5nIHR3byBPcGVuQVBJIHBhdGhzCgpQYXRoIG1hdGNoaW5nIGNvbnRyb2xzIGhvdyBwYXRocyBmcm9tIHRoZSBvbGQgYW5kIG5ldyBzcGVjcyBhcmUgcGFpcmVkIGR1cmluZyBjb21wYXJpc29uIChQYXRoc0RpZmYuamF2YSkuIFRoZSBkZWZhdWx0IG1hdGNoZXIgKERlZmF1bHRQYXRoTWF0Y2hlcikgb2JmdXNjYXRlcyBwYXRoIHBhcmFtZXRlciBuYW1lcywgbWVhbmluZyBgL3VzZXJzL3tpZH1gIG1hdGNoZXMgYC91c2Vycy97dXNlcklkfWAuIFRoZSBkZWZhdWx0IG1hdGNoZXIgZmFpbHMgb24gYW1iaWd1b3VzIHNpZ25hdHVyZXMgaWYgdGhlIHNwZWMgY29udGFpbnMgYSBmZXcgcGF0aHMgc2VtYW50aWNhbGx5IGlkZW50aWNhbC4gSW4gY2FzZSB0aGlzIGJlaGF2aW91ciBpcyBub3QgZml0dGluZyB5b3VyIHVzZSBjYXNlLCB5b3UgY2FuIGltcGxlbWVudCB5b3VyIG93biBtYXRjaGluZyBzdHJhdGVneS4KCllvdSBjYW4gcGx1ZyBpbiBhIGN1c3RvbSBtYXRjaGVyIHZpYSBgT3BlbkFwaURpZmZPcHRpb25zYCBpbXBsZW1lbnRpbmcgdGhlIGBQYXRoTWF0Y2hlcmAgaW50ZXJmYWNlOgoKYGBgamF2YQpPcGVuQXBpRGlmZk9wdGlvbnMgb3B0aW9ucyA9IE9wZW5BcGlEaWZmT3B0aW9ucwogICAgLmJ1aWxkZXIoKQogICAgLnBhdGhNYXRjaGVyKG5ldyBNeUN1c3RvbVBhdGhNYXRjaGVyKCkpCiAgICAuYnVpbGQoKTsKCkNoYW5nZWRPcGVuQXBpIGRpZmYgPSBPcGVuQXBpQ29tcGFyZS5mcm9tTG9jYXRpb25zKG9sZFNwZWMsIG5ld1NwZWMsIG51bGwsIG9wdGlvbnMpOwpgYGAKCiMjIyBSZW5kZXIgZGlmZmVyZW5jZQoKLS0tCiMjIyMgSFRNTAoKYGBgamF2YQpIdG1sUmVuZGVyIGh0bWxSZW5kZXIgPSBuZXcgSHRtbFJlbmRlcigiQ2hhbmdlbG9nIiwgImh0dHA6Ly9kZWVwb292ZS5jb20vc3dhZ2dlci1kaWZmL3N0eWxlc2hlZXRzL2RlbW8uY3NzIik7CkZpbGVPdXRwdXRTdHJlYW0gb3V0cHV0U3RyZWFtID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oInRlc3REaWZmLmh0bWwiKTsKT3V0cHV0U3RyZWFtV3JpdGVyIG91dHB1dFN0cmVhbVdyaXRlciA9IG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIob3V0cHV0U3RyZWFtKTsKaHRtbFJlbmRlci5yZW5kZXIoZGlmZiwgb3V0cHV0U3RyZWFtV3JpdGVyKTsKYGBgCgojIyMjIE1hcmtkb3duCgpgYGBqYXZhCk1hcmtkb3duUmVuZGVyIG1hcmtkb3duUmVuZGVyID0gbmV3IE1hcmtkb3duUmVuZGVyKCk7CkZpbGVPdXRwdXRTdHJlYW0gb3V0cHV0U3RyZWFtID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oInRlc3REaWZmLm1kIik7Ck91dHB1dFN0cmVhbVdyaXRlciBvdXRwdXRTdHJlYW1Xcml0ZXIgPSBuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKG91dHB1dFN0cmVhbSk7Cm1hcmtkb3duUmVuZGVyLnJlbmRlcihkaWZmLCBvdXRwdXRTdHJlYW1Xcml0ZXIpOwpgYGAKCiMjIyMgQXNjaWlkb2MKCmBgYGphdmEKQXNjaWlkb2NSZW5kZXIgYXNjaWlkb2NSZW5kZXIgPSBuZXcgQXNjaWlkb2NSZW5kZXIoKTsKRmlsZU91dHB1dFN0cmVhbSBvdXRwdXRTdHJlYW0gPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgidGVzdERpZmYuYWRvYyIpOwpPdXRwdXRTdHJlYW1Xcml0ZXIgb3V0cHV0U3RyZWFtV3JpdGVyID0gbmV3IE91dHB1dFN0cmVhbVdyaXRlcihvdXRwdXRTdHJlYW0pOwphc2NpaWRvY1JlbmRlci5yZW5kZXIoZGlmZiwgb3V0cHV0U3RyZWFtV3JpdGVyKTsKYGBgCgojIyMjIEpTT04KCmBgYGphdmEKSnNvblJlbmRlciBqc29uUmVuZGVyID0gbmV3IEpzb25SZW5kZXIoKTsKRmlsZU91dHB1dFN0cmVhbSBvdXRwdXRTdHJlYW0gPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgidGVzdERpZmYuanNvbiIpOwpPdXRwdXRTdHJlYW1Xcml0ZXIgb3V0cHV0U3RyZWFtV3JpdGVyID0gbmV3IE91dHB1dFN0cmVhbVdyaXRlcihvdXRwdXRTdHJlYW0pOwpqc29uUmVuZGVyLnJlbmRlcihkaWZmLCBvdXRwdXRTdHJlYW1Xcml0ZXIpOwpgYGAKCiMjIyBFeHRlbnNpb25zCgpUaGlzIHByb2plY3QgdXNlcyBKYXZhIFNlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlIChTUEkpIHNvIGFkZGl0aW9uYWwgZXh0ZW5zaW9ucyBjYW4gYmUgYWRkZWQuIAoKVG8gYnVpbGQgeW91ciBvd24gZXh0ZW5zaW9uLCB5b3Ugc2ltcGx5IG5lZWQgdG8gY3JlYXRlIGEgYHNyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9zZXJ2aWNlcy9vcmcub3BlbmFwaXRvb2xzLm9wZW5hcGlkaWZmLmNvcmUuY29tcGFyZS5FeHRlbnNpb25EaWZmYCBmaWxlIHdpdGggdGhlIGZ1bGwgY2xhc3NuYW1lIG9mIHlvdXIgaW1wbGVtZW50YXRpb24uCllvdXIgY2xhc3MgbXVzdCBhbHNvIGltcGxlbWVudCB0aGUgYG9yZy5vcGVuYXBpdG9vbHMub3BlbmFwaWRpZmYuY29yZS5jb21wYXJlLkV4dGVuc2lvbkRpZmZgIGludGVyZmFjZS4KVGhlbiwgaW5jbHVkaW5nIHlvdXIgbGlicmFyeSB3aXRoIHRoZSBgb3BlbmFwaS1kaWZmYCBtb2R1bGUgd2lsbCBjYXVzZSBpdCB0byBiZSB0cmlnZ2VyZWQgYXV0b21hdGljYWxseS4KCiMgRXhhbXBsZXMKCiMjIyBDTEkgT3V0cHV0CgpgYGB0ZXh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj09ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBDSEFOR0UgTE9HICAgICAgICAgICAgICAgICAgICAgICAgICAgID09Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3dhZ2dlciBQZXRzdG9yZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hhdCdzIE5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gR0VUICAgIC9wZXQve3BldElkfQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hhdCdzIERlbGV0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBQT1NUICAgL3BldC97cGV0SWR9CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgV2hhdCdzIERlcHJlY2F0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIEdFVCAgICAvdXNlci9sb2dvdXQKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoYXQncyBDaGFuZ2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gUFVUICAgIC9wZXQKICBSZXF1ZXN0OgogICAgICAgIC0gRGVsZXRlZCBhcHBsaWNhdGlvbi94bWwKICAgICAgICAtIENoYW5nZWQgYXBwbGljYXRpb24vanNvbgogICAgICAgICAgU2NoZW1hOiBCYWNrd2FyZCBjb21wYXRpYmxlCi0gUE9TVCAgIC9wZXQKICBQYXJhbWV0ZXI6CiAgICAtIEFkZCB0YWdzIGluIHF1ZXJ5CiAgUmVxdWVzdDoKICAgICAgICAtIENoYW5nZWQgYXBwbGljYXRpb24veG1sCiAgICAgICAgICBTY2hlbWE6IEJhY2t3YXJkIGNvbXBhdGlibGUKICAgICAgICAtIENoYW5nZWQgYXBwbGljYXRpb24vanNvbgogICAgICAgICAgU2NoZW1hOiBCYWNrd2FyZCBjb21wYXRpYmxlCi0gR0VUICAgIC9wZXQvZmluZEJ5U3RhdHVzCiAgUGFyYW1ldGVyOgogICAgLSBEZXByZWNhdGVkIHN0YXR1cyBpbiBxdWVyeQogIFJldHVybiBUeXBlOgogICAgLSBDaGFuZ2VkIDIwMCBPSwogICAgICBNZWRpYSB0eXBlczoKICAgICAgICAtIENoYW5nZWQgYXBwbGljYXRpb24veG1sCiAgICAgICAgICBTY2hlbWE6IEJyb2tlbiBjb21wYXRpYmlsaXR5CiAgICAgICAgLSBDaGFuZ2VkIGFwcGxpY2F0aW9uL2pzb24KICAgICAgICAgIFNjaGVtYTogQnJva2VuIGNvbXBhdGliaWxpdHkKLSBHRVQgICAgL3BldC9maW5kQnlUYWdzCiAgUmV0dXJuIFR5cGU6CiAgICAtIENoYW5nZWQgMjAwIE9LCiAgICAgIE1lZGlhIHR5cGVzOgogICAgICAgIC0gQ2hhbmdlZCBhcHBsaWNhdGlvbi94bWwKICAgICAgICAgIFNjaGVtYTogQnJva2VuIGNvbXBhdGliaWxpdHkKICAgICAgICAtIENoYW5nZWQgYXBwbGljYXRpb24vanNvbgogICAgICAgICAgU2NoZW1hOiBCcm9rZW4gY29tcGF0aWJpbGl0eQotIERFTEVURSAvcGV0L3twZXRJZH0KICBQYXJhbWV0ZXI6CiAgICAtIEFkZCBuZXdIZWFkZXJQYXJhbSBpbiBoZWFkZXIKLSBQT1NUICAgL3BldC97cGV0SWR9L3VwbG9hZEltYWdlCiAgUGFyYW1ldGVyOgogICAgLSBDaGFuZ2VkIHBldElkIGluIHBhdGgKLSBQT1NUICAgL3VzZXIKICBSZXF1ZXN0OgogICAgICAgIC0gQ2hhbmdlZCBhcHBsaWNhdGlvbi9qc29uCiAgICAgICAgICBTY2hlbWE6IEJhY2t3YXJkIGNvbXBhdGlibGUKLSBQT1NUICAgL3VzZXIvY3JlYXRlV2l0aEFycmF5CiAgUmVxdWVzdDoKICAgICAgICAtIENoYW5nZWQgYXBwbGljYXRpb24vanNvbgogICAgICAgICAgU2NoZW1hOiBCYWNrd2FyZCBjb21wYXRpYmxlCi0gUE9TVCAgIC91c2VyL2NyZWF0ZVdpdGhMaXN0CiAgUmVxdWVzdDoKICAgICAgICAtIENoYW5nZWQgYXBwbGljYXRpb24vanNvbgogICAgICAgICAgU2NoZW1hOiBCYWNrd2FyZCBjb21wYXRpYmxlCi0gR0VUICAgIC91c2VyL2xvZ2luCiAgUGFyYW1ldGVyOgogICAgLSBEZWxldGUgcGFzc3dvcmQgaW4gcXVlcnkKLSBHRVQgICAgL3VzZXIvbG9nb3V0Ci0gR0VUICAgIC91c2VyL3t1c2VybmFtZX0KICBSZXR1cm4gVHlwZToKICAgIC0gQ2hhbmdlZCAyMDAgT0sKICAgICAgTWVkaWEgdHlwZXM6CiAgICAgICAgLSBDaGFuZ2VkIGFwcGxpY2F0aW9uL3htbAogICAgICAgICAgU2NoZW1hOiBCcm9rZW4gY29tcGF0aWJpbGl0eQogICAgICAgIC0gQ2hhbmdlZCBhcHBsaWNhdGlvbi9qc29uCiAgICAgICAgICBTY2hlbWE6IEJyb2tlbiBjb21wYXRpYmlsaXR5Ci0gUFVUICAgIC91c2VyL3t1c2VybmFtZX0KICBSZXF1ZXN0OgogICAgICAgIC0gQ2hhbmdlZCBhcHBsaWNhdGlvbi9qc29uCiAgICAgICAgICBTY2hlbWE6IEJhY2t3YXJkIGNvbXBhdGlibGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICBBUEkgY2hhbmdlcyBicm9rZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KYGBgCgojIyMgTWFya2Rvd24KCmBgYG1hcmtkb3duCiMjIyBXaGF0J3MgTmV3Ci0tLQoqIGBHRVRgIC9wZXQve3BldElkfSBGaW5kIHBldCBieSBJRAoKIyMjIFdoYXQncyBEZWxldGVkCi0tLQoqIGBQT1NUYCAvcGV0L3twZXRJZH0gVXBkYXRlcyBhIHBldCBpbiB0aGUgc3RvcmUgd2l0aCBmb3JtIGRhdGEKCiMjIyBXaGF0J3MgRGVwcmVjYXRlZAotLS0KKiBgR0VUYCAvdXNlci9sb2dvdXQgTG9ncyBvdXQgY3VycmVudCBsb2dnZWQgaW4gdXNlciBzZXNzaW9uCgojIyMgV2hhdCdzIENoYW5nZWQKLS0tCiogYFBVVGAgL3BldCBVcGRhdGUgYW4gZXhpc3RpbmcgcGV0ICAKICAgIFJlcXVlc3QKCiAgICAgICAgRGVsZXRlZCByZXF1ZXN0IGJvZHkgOiBbYXBwbGljYXRpb24veG1sXQogICAgICAgIENoYW5nZWQgcmVzcG9uc2UgOiBbYXBwbGljYXRpb24vanNvbl0KKiBgUE9TVGAgL3BldCBBZGQgYSBuZXcgcGV0IHRvIHRoZSBzdG9yZSAgCiAgICBQYXJhbWV0ZXIKCiAgICAgICAgQWRkIHRhZ3MgLy9hZGQgbmV3IHF1ZXJ5IHBhcmFtIGRlbW8KICAgIFJlcXVlc3QKCiAgICAgICAgQ2hhbmdlZCByZXNwb25zZSA6IFthcHBsaWNhdGlvbi94bWxdCiAgICAgICAgQ2hhbmdlZCByZXNwb25zZSA6IFthcHBsaWNhdGlvbi9qc29uXQoqIGBHRVRgIC9wZXQvZmluZEJ5U3RhdHVzIEZpbmRzIFBldHMgYnkgc3RhdHVzICAKICAgIFBhcmFtZXRlcgoKICAgIFJldHVybiBUeXBlCgogICAgICAgIENoYW5nZWQgcmVzcG9uc2UgOiBbMjAwXSAvL3N1Y2Nlc3NmdWwgb3BlcmF0aW9uCiogYEdFVGAgL3BldC9maW5kQnlUYWdzIEZpbmRzIFBldHMgYnkgdGFncyAgCiAgICBSZXR1cm4gVHlwZQoKICAgICAgICBDaGFuZ2VkIHJlc3BvbnNlIDogWzIwMF0gLy9zdWNjZXNzZnVsIG9wZXJhdGlvbgoqIGBERUxFVEVgIC9wZXQve3BldElkfSBEZWxldGVzIGEgcGV0ICAKICAgIFBhcmFtZXRlcgoKICAgICAgICBBZGQgbmV3SGVhZGVyUGFyYW0KKiBgUE9TVGAgL3BldC97cGV0SWR9L3VwbG9hZEltYWdlIHVwbG9hZHMgYW4gaW1hZ2UgZm9yIHBldCAgCiAgICBQYXJhbWV0ZXIKCiAgICAgICAgcGV0SWQgTm90ZXMgSUQgb2YgcGV0IHRvIHVwZGF0ZSBjaGFuZ2UgaW50byBJRCBvZiBwZXQgdG8gdXBkYXRlLCBkZWZhdWx0IGZhbHNlCiogYFBPU1RgIC91c2VyIENyZWF0ZSB1c2VyICAKICAgIFJlcXVlc3QKCiAgICAgICAgQ2hhbmdlZCByZXNwb25zZSA6IFthcHBsaWNhdGlvbi9qc29uXQoqIGBQT1NUYCAvdXNlci9jcmVhdGVXaXRoQXJyYXkgQ3JlYXRlcyBsaXN0IG9mIHVzZXJzIHdpdGggZ2l2ZW4gaW5wdXQgYXJyYXkgIAogICAgUmVxdWVzdAoKICAgICAgICBDaGFuZ2VkIHJlc3BvbnNlIDogW2FwcGxpY2F0aW9uL2pzb25dCiogYFBPU1RgIC91c2VyL2NyZWF0ZVdpdGhMaXN0IENyZWF0ZXMgbGlzdCBvZiB1c2VycyB3aXRoIGdpdmVuIGlucHV0IGFycmF5ICAKICAgIFJlcXVlc3QKCiAgICAgICAgQ2hhbmdlZCByZXNwb25zZSA6IFthcHBsaWNhdGlvbi9qc29uXQoqIGBHRVRgIC91c2VyL2xvZ2luIExvZ3MgdXNlciBpbnRvIHRoZSBzeXN0ZW0gIAogICAgUGFyYW1ldGVyCgogICAgICAgIERlbGV0ZSBwYXNzd29yZCAvL1RoZSBwYXNzd29yZCBmb3IgbG9naW4gaW4gY2xlYXIgdGV4dAoqIGBHRVRgIC91c2VyL2xvZ291dCBMb2dzIG91dCBjdXJyZW50IGxvZ2dlZCBpbiB1c2VyIHNlc3Npb24gIAoqIGBQVVRgIC91c2VyL3t1c2VybmFtZX0gVXBkYXRlZCB1c2VyICAKICAgIFJlcXVlc3QKCiAgICAgICAgQ2hhbmdlZCByZXNwb25zZSA6IFthcHBsaWNhdGlvbi9qc29uXQoqIGBHRVRgIC91c2VyL3t1c2VybmFtZX0gR2V0IHVzZXIgYnkgdXNlciBuYW1lICAKICAgIFJldHVybiBUeXBlCgogICAgICAgIENoYW5nZWQgcmVzcG9uc2UgOiBbMjAwXSAvL3N1Y2Nlc3NmdWwgb3BlcmF0aW9uCmBgYAoKIyMjIEpTT04KCmBgYGpzb24KewogICAgImNoYW5nZWRFbGVtZW50cyI6IFsuLi5dLAogICAgImNoYW5nZWRFeHRlbnNpb25zIjogbnVsbCwKICAgICJjaGFuZ2VkT3BlcmF0aW9ucyI6IFsuLi5dLAogICAgImNvbXBhdGlibGUiOiBmYWxzZSwKICAgICJkZXByZWNhdGVkRW5kcG9pbnRzIjogWy4uLl0sCiAgICAiZGlmZmVyZW50IjogdHJ1ZSwKICAgICJpbmNvbXBhdGlibGUiOiB0cnVlLAogICAgIm1pc3NpbmdFbmRwb2ludHMiOiBbLi4uXSwKICAgICJuZXdFbmRwb2ludHMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibWV0aG9kIjogIkdFVCIsCiAgICAgICAgICAgICJvcGVyYXRpb24iOiB7CiAgICAgICAgICAgICAgICAiY2FsbGJhY2tzIjogbnVsbCwKICAgICAgICAgICAgICAgICJkZXByZWNhdGVkIjogbnVsbCwKICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgc2luZ2xlIHBldCIsCiAgICAgICAgICAgICAgICAiZXh0ZW5zaW9ucyI6IG51bGwsCiAgICAgICAgICAgICAgICAiZXh0ZXJuYWxEb2NzIjogbnVsbCwKICAgICAgICAgICAgICAgICJvcGVyYXRpb25JZCI6ICJnZXRQZXRCeUlkIiwKICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIiRyZWYiOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAiYWxsb3dFbXB0eVZhbHVlIjogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgImFsbG93UmVzZXJ2ZWQiOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAiY29udGVudCI6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICJkZXByZWNhdGVkIjogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIklEIG9mIHBldCB0byByZXR1cm4iLAogICAgICAgICAgICAgICAgICAgICAgICAiZXhhbXBsZSI6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICJleGFtcGxlcyI6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICJleHBsb2RlIjogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICJleHRlbnNpb25zIjogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgImluIjogInBhdGgiLAogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJwZXRJZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7Li4ufSwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlIjogIlNJTVBMRSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInJlcXVlc3RCb2R5IjogbnVsbCwKICAgICAgICAgICAgICAgICJyZXNwb25zZXMiOiB7Li4ufSwKICAgICAgICAgICAgICAgICJzZWN1cml0eSI6IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJhcGlfa2V5IjogW10KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInNlcnZlcnMiOiBudWxsLAogICAgICAgICAgICAgICAgInN1bW1hcnkiOiAiRmluZCBwZXQgYnkgSUQiLAogICAgICAgICAgICAgICAgInRhZ3MiOiBbCiAgICAgICAgICAgICAgICAgICAgInBldCIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgInBhdGgiOiBudWxsLAogICAgICAgICAgICAicGF0aFVybCI6ICIvcGV0L3twZXRJZH0iLAogICAgICAgICAgICAic3VtbWFyeSI6ICJGaW5kIHBldCBieSBJRCIKICAgICAgICB9CiAgICBdLAogICAgIm5ld1NwZWNPcGVuQXBpIjogey4uLn0sCiAgICAib2xkU3BlY09wZW5BcGkiOiB7Li4ufSwKICAgICJ1bmNoYW5nZWQiOiBmYWxzZQp9CmBgYAoKIyBMaWNlbnNlCgpvcGVuYXBpLWRpZmYgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIDIuMC4KCiMgVGhhbmtzCgoqIEFkYXJzaCBTaGFybWEgLyBbYWRhcnNoc2hhcm1hXShodHRwczovL2dpdGh1Yi5jb20vYWRhcnNoc2hhcm1hKQoqIFF1ZW50aW4gRGVzcmFtw6kgLyBbcXVlbjI0MDRdKGh0dHBzOi8vZ2l0aHViLmNvbS9xdWVuMjQwNCkKKiBbU2F5aV0oaHR0cHM6Ly9naXRodWIuY29tL1NheWkpIGZvciBoaXMgcHJvamVjdCBbc3dhZ2dlci1kaWZmXShodHRwczovL2dpdGh1Yi5jb20vU2F5aS9zd2FnZ2VyLWRpZmYpIAogIHdoaWNoIHdhcyBhIHNvdXJjZSBvZiBpbnNwaXJhdGlvbiBmb3IgdGhpcyB0b29sCg== readmeEtag: '"8da667ec1f567f7eee7f7df8ba4e60ef7937f1eb"' readmeLastModified: Mon, 13 Oct 2025 11:21:49 GMT repositoryId: 113924383 description: Utility for comparing two OpenAPI specifications. created: '2017-12-12T00:39:30Z' updated: '2026-01-30T20:51:50Z' language: Java archived: false stars: 1044 watchers: 20 forks: 181 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 repoEtag: '"24f0fa5f61128f1c505f9e12bf4622ec3d308f9823901911713ed3d99c09a215"' repoLastModified: Fri, 30 Jan 2026 20:51:50 GMT foundInMaster: true category: Parsers id: c128907e9d949a67c1bda0e0ceda755a oldLocations: - https://github.com/quen2404/openapi-diff - source: openapi3 tags repository: https://github.com/stoplightio/studio v3: true repositoryMetadata: base64Readme: >- IyBTdG9wbGlnaHQgU3R1ZGlvIAoKU3R1ZGlvIGlzIFN0b3BsaWdodCdzIG5leHQgZ2VuZXJhdGlvbiBhcHBsaWNhdGlvbiBmb3IgQVBJIGRlc2lnbiwgbW9kZWxpbmcsIGFuZCB0ZWNobmljYWwgd3JpdGluZy4gQSBwcmltYXJ5IGdvYWwgb2YgU3R1ZGlvIGlzIHRvIGVucmljaCwgbm90IHJlcGxhY2UsIHlvdXIgZXhpc3Rpbmcgd29ya2Zsb3dzLiBXaGVuIHJ1bm5pbmcgbG9jYWxseSBpdCB3b3JrcyBmdWxseSBvZmZsaW5lLCB3aXRoIGZvbGRlcnMgYW5kIGZpbGVzIG9uIHlvdXIgY29tcHV0ZXIganVzdCBsaWtlIHlvdXIgZmF2b3JpdGUgSURFLiBXaGVuIHJ1bm5pbmcgaW4gdGhlIGJyb3dzZXIsIHRoZSB3ZWItbmF0aXZlIEdpdCBzdXBwb3J0IGFsbG93cyB5b3UgdG8gZWZmb3J0bGVzc2x5IHdvcmsgd2l0aCB5b3VyIGV4aXN0aW5nIHJlcG9zaXRvcmllcyBzYWZlbHkgYW5kIGVmZmljaWVudGx5LgoKIyMgRG9jdW1lbnRhdGlvbgoKVG8gbGVhcm4gbW9yZSBhYm91dCBTdHVkaW8gYW5kIHRoZSBTdG9wbGlnaHQgcGxhdGZvcm0sIHNlZSBvdXIgW1BsYXRmb3JtIERvY3VtZW50YXRpb25dKGh0dHBzOi8vbWV0YS5zdG9wbGlnaHQuaW8vKS4KCiMjIEZlYXR1cmVzCgojIyMgRnVsbCBTdXBwb3J0IGZvciBPcGVuQVBJIHYyIGFuZCB2MwoKU3R1ZGlvIGNvbWVzIHdpdGggZnVsbCBzdXBwb3J0IGZvciB0aGUgT3BlbkFQSSB2ZXJzaW9ucyAyIGFuZCAzIHNwZWNpZmljYXRpb24gZm9ybWF0cyBmb3IgYWxsIGZ1bmN0aW9uYWxpdHkuIFRoYXQgbWVhbnMgZnVsbCB2YWxpZGF0aW9uLCBtb2NraW5nLCBhbmQgbW9kZWxpbmcgc3VwcG9ydCBmb3IgYm90aCB2ZXJzaW9ucyBvZiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgoKIVtTdHVkaW8gbG92ZXMgU3dhZ2dlciArIE9wZW5BUEldKGFzc2V0cy9pbWFnZXMvb3BlbmFwaV9zd2FnZ2VyX2VxdWFsX2hlYXJ0LnBuZykKCiMjIyBHcmFwaGljYWwgQVBJIERlc2lnbgoKRm9ybS1iYXNlZCBkZXNpZ25pbmcgbWVhbnMgeW91IGRvbid0IG5lZWQgdG8gYmUgYW4gT3BlbkFQSSBleHBlcnQgdG8gZ2V0IHN0YXJ0ZWQuIFN0dWRpbyBoYXMgYSAid3JpdGUiIChjb2RlKSBtb2RlIHdpdGggZnVsbCBPcGVuQVBJIGF1dG9jb21wbGV0ZSwgYW5kIGEgInJlYWQiIG1vZGUgZm9yIHZpc3VhbGl6aW5nIEhUVFAgb3BlcmF0aW9ucyBhbmQgbW9kZWxzLgoKIVtHcmFwaGljYWwgRGVzaWduIGZvciBPcGVuQVBJXShhc3NldHMvaW1hZ2VzL2Zvcm0tZWRpdG9yLnBuZykKClRvIGZpbmQgb3V0IG1vcmUgYWJvdXQgaG93IHlvdSBjYW4gcXVpY2tseSBkZXNpZ24gYW5kIHByb3RvdHlwZSBBUElzIHdpdGhvdXQgd3JpdGluZyBhIHNpbmdsZSBsaW5lIG9mIEpTT04gb3IgWUFNTCwgc2VlIFtoZXJlXShodHRwczovL21ldGEuc3RvcGxpZ2h0LmlvL2RvY3MvcGxhdGZvcm0vWkc5ak9qTTJPVE0zTWpnNS1vdmVydmlldykuCgojIyMgSlNPTiBTY2hlbWEgTW9kZWxpbmcKClN0dWRpbyBpcyBub3QganVzdCBmb3IgQVBJcywgeW91IGNhbiBhbHNvIGNyZWF0ZSBhbmQgbW9kaWZ5IHN0YW5kYWxvbmUgSlNPTiBTY2hlbWEgZmlsZXMgZm9yIHN0b3JpbmcgZGF0YSBtb2RlbHMuIERpZCB3ZSBtZW50aW9uIHRoYXQgdGhpcyBpcyBhbHNvIHBvd2VyZWQgYnkgdGhlIGdyYXBoaWNhbCBpbnRlcmZhY2U/IE5vIG1vcmUgc2VhcmNoaW5nIGZvciB0aGUgbWF0Y2hpbmcgYnJhY2tldCBvciB0aGUgbWlzc2luZyBzcGFjZSwgYW5kIG5vIG5lZWQgdG8gYmUgZmFtaWxpYXIgd2l0aCB0aGUgaW4ncyBhbmQgb3V0J3Mgb2YgSlNPTiBTY2hlbWEuCgohW10oYXNzZXRzL2ltYWdlcy9qc2Utc2FtcGxlLnBuZykKCiMjIyBFbmNvdXJhZ2UgUmV1c2UsIEF2b2lkIER1cGxpY2F0aW9uCgpXaGVuIGl0IGNvbWVzIHRvIEFQSSBtb2RlbGluZywgYXZvaWRpbmcgZHVwbGljYXRpb24gb2YgZWZmb3J0IGNhbiBiZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHN1Y2Nlc3MgYW5kIGZhaWx1cmUuIEhvdyBjYW4geW91IGVuZm9yY2UgY29uc2lzdGVuY3kgaWYgYWxsIG9mIHlvdXIgZW5kcG9pbnRzIHJlLWNyZWF0ZSB0aGUgc2FtZSBtb2RlbCBpbiBzbGlnaHRseSBkaWZmZXJlbnQgd2F5cz8gKGhpbnQsIHlvdSBjYW4ndCkKCiFbU3R1ZGlvJ3MgZ3JhcGhpY2FsIEpTT04gc2NoZW1hIGVkaXRvciBhbGxvd3MgeW91IHRvIHF1aWNrbHkgZmluZCBtb2RlbHMgdG8gcmVmZXJlbmNlXShhc3NldHMvaW1hZ2VzL2pzZS1zYW1wbGUyLnBuZykKClN0dWRpbyBhbGxvd3MgeW91IHRvIHF1aWNrbHkgYW5kIGVhc2lseSBmaW5kIGFuZCByZXVzZSB0aGUgb2JqZWN0cyB5b3UgbmVlZCwgYXMgeW91IG5lZWQgdGhlbS4gTm8gbW9yZSByZWNyZWF0aW5nIG1vZGVscyBmb3IgZGlmZmVyZW50IGVuZHBvaW50cywgbm8gbW9yZSBoYXZpbmcgdG8gdXBkYXRlIGRvemVucyBvZiBkaWZmZXJlbnQgZW5kcG9pbnRzIGJlY2F1c2UgYSBuZXcgZmllbGQgd2FzIGFkZGVkLgoKVG8gZmluZCBvdXQgbW9yZSBhYm91dCBob3cgeW91IGNhbiBsZXZlcmFnZSByZWZlcmVuY2VzIHRvIHNjYWxlIHlvdXIgQVBJIGNvbnNpc3RlbmN5LCBzZWUgW2hlcmVdKGh0dHBzOi8vbWV0YS5zdG9wbGlnaHQuaW8vZG9jcy9wbGF0Zm9ybS9aRzlqT2pJeU5UWTVNekl3LXNoYXJlZC1jb21wb25lbnRzKS4KCiMjIyBUZWNobmljYWwgRG9jdW1lbnRhdGlvbgoKTWl4IEFQSSBSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiBhbmQgTWFya2Rvd24tYmFzZWQgZ3VpZGVzLCBob3ctdG9zLCBnZXR0aW5nIHN0YXJ0ZWQgaW5mb3JtYXRpb24sIGV0Yy4gQWxsIG9mIHlvdXIgZG9jdW1lbnRhdGlvbiBjYW4gbGl2ZSB0b2dldGhlciBpbiB0aGUgc2FtZSBwcm9qZWN0LiBTdHVkaW8gaW5jbHVkZXMgYSBidWlsdC1pbiBNYXJrZG93biBlZGl0b3IsIGltYWdlIG1hbmFnZXIsIGFuZCB0aGUgYWJpbGl0eSB0byBwdWJsaXNoIGRvY3VtZW50YXRpb24gdG8gU3RvcGxpZ2h0J3MgbmV3IGRvY3VtZW50YXRpb24gcGxhdGZvcm0uCgohW0NyZWF0ZSBiZWF1dGlmdWwgYW5kIGVhc3ktdG8tdXNlIEFQSSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbl0oYXNzZXRzL2ltYWdlcy90ZWNobmljYWwtZG9jdW1lbnRhdGlvbi5wbmcpCgpZb3UgY2FuIGV2ZW4gaG9zdCB0aGUgZmlsZXMgaW4geW91ciBvd24gR2l0IHJlcG9zaXRvcnksIGFuZCB0aGVuIHB1Ymxpc2ggd2hlbiB5b3UncmUgcmVhZHkgdG8gc2hvdyBvZmYgeW91ciBsYXRlc3QgYW5kIGdyZWF0ZXN0LgoKVG8gZmluZCBvdXQgbW9yZSBhYm91dCB3cml0aW5nIHRlY2huaWNhbCBkb2N1bWVudGF0aW9uIGluIFN0dWRpbywgc2VlIG91ciBnZXR0aW5nIHN0YXJ0ZWQgZ3VpZGUgW2hlcmVdKGh0dHBzOi8vbWV0YS5zdG9wbGlnaHQuaW8vZG9jcy9wbGF0Zm9ybS9aRzlqT2pRMk9URTROamszLWRvY3VtZW50YXRpb24tcXVpY2stc3RhcnQpLgoKIyMjIFN0eWxlIEd1aWRlcyBhbmQgVmFsaWRhdGlvbgoKRW5mb3JjZSBjb3JyZWN0bmVzcyBhbmQgYmVzdCBwcmFjdGljZXMgd2l0aCBbU3R5bGUgR3VpZGVzXShodHRwczovL21ldGEuc3RvcGxpZ2h0LmlvL2RvY3MvcGxhdGZvcm0vWkc5ak9qTXdNREkzTWpBMi1zdHlsZS1ndWlkZS1vdmVydmlldyksIHBvd2VyZWQgYnkgdGhlIG5hdGl2ZSBbU3BlY3RyYWxdKGh0dHBzOi8vc3RvcGxpZ2h0LmlvL3NwZWN0cmFsLz91dG1fc291cmNlPWdpdGh1Yi5jb20mdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249Z2l0aHViX3JlcG9fc3R1ZGlvKSBpbnRlZ3JhdGlvbiB0aGF0IGFsZXJ0cyB5b3UgdG8gZXJyb3JzIHRoZSBtb21lbnQgdGhleSBhcmUgY3JlYXRlZC4KCiFbU3BlY3RyYWwgdmFsaWRhdGVzIGFuZCBsaW50cyB5b3VyIEFQSXMgdG8gZW5zdXJlIHRoZXkgYXJlIGNvcnJlY3QgYW5kIGZ1bmN0aW9uYWxdKGFzc2V0cy9pbWFnZXMvc3BlY3RyYWwxLnBuZykKCkNsaWNraW5nIG9uIGVycm9ycyBvciB3YXJuaW5ncyBhbHNvIGJyaW5ncyB5b3UgdG8gZXhhY3RseSB3aGVyZSB0aGV5IGFyZSBsb2NhdGVkIGluIHRoZSBkb2N1bWVudCwgbWFraW5nIGl0IGVhc3kgdG8gZml4IGVycm9ycyBhdCB0aGUgc291cmNlLgoKIyMjIEJ1aWx0LWluIE1vY2tpbmcKCldoZW4gcnVubmluZyBsb2NhbGx5LCBTdHVkaW8gd2lsbCBhdXRvbWF0aWNhbGx5IHN0YXJ0IGEgbG9jYWwgW1ByaXNtIG1vY2sgc2VydmVyXShodHRwczovL3N0b3BsaWdodC5pby9wcmlzbS8/dXRtX3NvdXJjZT1naXRodWIuY29tJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPWdpdGh1Yl9yZXBvX3N0dWRpbykgZm9yIGV2ZXJ5IEFQSSBkZWZpbmVkIGluIHlvdXIgcHJvamVjdCwgYW5kIGtlZXAgdGhhdCBtb2NrIHNlcnZlciB1cCB0byBkYXRlIGFzIHlvdSBjaGFuZ2UgeW91ciBkZXNpZ25zLgoKIVtNb2NraW5nIGFsbG93cyB5b3UgdG8gcXVpY2tseSB0ZXN0IHRoZSBsb29rIGFuZCBmZWVsIG9mIHlvdXIgQVBJIGJlZm9yZSBqdW1waW5nIGludG8gdGhlIGNvZGVdKGFzc2V0cy9pbWFnZXMvc3R1ZGlvLW1vY2tpbmcucG5nKQoKVG8gZmluZCBvdXQgbW9yZSBhYm91dCBQcmlzbSBhbmQgaG93IG1vY2tpbmcgY2FuIGJlIHVzZWQgdG8gc3RyZWFtbGluZSB5b3VyIEFQSSBkZXZlbG9wbWVudCBwcm9jZXNzLCBzZWUgW2hlcmVdKGh0dHBzOi8vbWV0YS5zdG9wbGlnaHQuaW8vZG9jcy9wbGF0Zm9ybS9aRzlqT2pNMk9UTTNNamc0LXdvcmstd2l0aC1tb2NrLXNlcnZlcnMpLgoKIyMjIEJyaW5nIFlvdXIgT3duIFJlcG9zaXRvcnkKClNpbmNlIFN0dWRpbyB3b3JrcyB3aXRoIHlvdXIgbG9jYWwgZmlsZSBzeXN0ZW0sIHlvdSBjYW4gb3BlbiB1cCB5b3VyIEFQSSBwcm9qZWN0cyBhbmQgc3RhcnQgYWRkaW5nIGRvY3MgYW5kIGRlc2lnbnMgYWxvbmdzaWRlIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gdGhleSBhcmUgbWVhbnQgdG8gZGVzY3JpYmUuIE9uY2UgeW91J3JlIGRvbmUsIGNoZWNrIGl0IGFsbCBpbnRvIEdpdCB3aXRoIHlvdXIgZmF2b3JpdGUgR2l0IGNsaWVudCEKCiMjIExpY2Vuc2UKCjxhIHJlbD0ibGljZW5zZSIgaHJlZj0iaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5kLzQuMC8iPjxpbWcgYWx0PSJDcmVhdGl2ZSBDb21tb25zIExpY2Vuc2UiIHN0eWxlPSJib3JkZXItd2lkdGg6MCIgc3JjPSJodHRwczovL2kuY3JlYXRpdmVjb21tb25zLm9yZy9sL2J5LW5kLzQuMC84OHgzMS5wbmciIC8+PC9hPjxiciAvPjxzcGFuIHhtbG5zOmRjdD0iaHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zLyIgcHJvcGVydHk9ImRjdDp0aXRsZSI+U3RvcGxpZ2h0IFN0dWRpbzwvc3Bhbj4gYnkgPGEgeG1sbnM6Y2M9Imh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIGhyZWY9Imh0dHBzOi8vc3RvcGxpZ2h0LmlvL3N0dWRpbz91dG1fc291cmNlPWdpdGh1Yi5jb20mdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249Z2l0aHViX3JlcG9fc3R1ZGlvIiBwcm9wZXJ0eT0iY2M6YXR0cmlidXRpb25OYW1lIiByZWw9ImNjOmF0dHJpYnV0aW9uVVJMIj5TdG9wbGlnaHQuaW88L2E+IGlzIGxpY2Vuc2VkIHVuZGVyIGEgPGEgcmVsPSJsaWNlbnNlIiBocmVmPSJodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktbmQvNC4wLyI+Q3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1Ob0Rlcml2YXRpdmVzIDQuMCBJbnRlcm5hdGlvbmFsIExpY2Vuc2U8L2E+Lgo= readmeEtag: '"70966732d8cb9dcc0d216fc328ccf33bb2ce4282"' readmeLastModified: Tue, 20 Sep 2022 18:48:05 GMT repositoryId: 192797744 description: The modern editor for API Design and Technical Writing. created: '2019-06-19T20:09:49Z' updated: '2026-02-03T02:38:41Z' language: null archived: false stars: 864 watchers: 27 forks: 55 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: NOASSERTION repoEtag: '"a8919da275a2fa1d422dbc8e6c9fe2cb987ef6056bd37b9e0c82fec5a915e988"' repoLastModified: Tue, 03 Feb 2026 02:38:41 GMT foundInMaster: true category: - Description Validators - Server Implementations id: 0e510c4e495bc626b13dba4aa09d83dc - source: - openapi3 tags - openapi31 tags repository: https://github.com/zaghaghi/openapi-tui v3: true v3_1: true id: ef37267c73c0fdc4c3902843cddc05c3 repositoryMetadata: base64Readme: >- IVtsb2dvXShzdGF0aWMvbG9nby5wbmcpCiMgb3BlbmFwaS10dWkKClshW0NJXShodHRwczovL2dpdGh1Yi5jb20vemFnaGFnaGkvb3BlbmFwaS10dWkvd29ya2Zsb3dzL0NJL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS96YWdoYWdoaS9vcGVuYXBpLXR1aS9hY3Rpb25zKQoKVGVybWluYWwgVUkgdG8gbGlzdCwgYnJvd3NlIGFuZCBydW4gQVBJcyBkZWZpbmVkIHdpdGggT3BlbkFQSSB2My4wIGFuZCB2My4xIHNwZWMuCgoKIyBVc2FnZQpgYGBiYXNoCuKdryBvcGVuYXBpLXR1aSAtLWhlbHAKVGhpcyBUVUkgYWxsb3dzIHlvdSB0byBsaXN0IGFuZCBicm93c2UgQVBJcyBkZXNjcmliZWQgYnkgdGhlIG9wZW5hcGkgc3BlY2lmaWNhdGlvbi4KClVzYWdlOiBvcGVuYXBpLXR1aSAtLWlucHV0IDxQQVRIPgoKT3B0aW9uczoKICAtaSwgLS1pbnB1dCA8UEFUSD4gIElucHV0IGZpbGUgb3IgdXJsLCBpbiBqc29uIG9yIHlhbWwgZm9ybWF0IHdpdGggb3BlbmFwaSBzcGVjaWZpY2F0aW9uCiAgLWgsIC0taGVscCAgICAgICAgICBQcmludCBoZWxwCiAgLVYsIC0tdmVyc2lvbiAgICAgICBQcmludCB2ZXJzaW9uCmBgYAoKIyMgRXhhbXBsZXMKYGBgYmFzaAojIG9wZW4gbG9jYWwgeWFtbCBmaWxlCuKdryBvcGVuYXBpLXR1aSAtaSBleGFtcGxlcy9zdHJpcGUvc3BlYy55bWwKCiMgb3BlbiBsb2NhbCBqc29uIGZpbGUK4p2vIG9wZW5hcGktdHVpIC1pIGV4YW1wbGVzL3BldHN0b3JlLmpzb24KCiMgb3BlbiByZW1vdGUgZmlsZQrina8gb3BlbmFwaS10dWkgLWkgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2dpdGh1Yi9yZXN0LWFwaS1kZXNjcmlwdGlvbi9tYWluL2Rlc2NyaXB0aW9ucy1uZXh0L2FwaS5naXRodWIuY29tL2FwaS5naXRodWIuY29tLnlhbWwKYGBgCgoKIyBEZW1vCiFbZGVtb10oc3RhdGljL2RlbW8uZ2lmKQoKIyBPdGhlciBGZWF0dXJlIEFuaW1hdGlvbnMKPGRldGFpbHM+CiAgPHN1bW1hcnk+U2hvdyBtb3JlPC9zdW1tYXJ5PgoKIyMgTmVzdGVkIENvbXBvbmVudHMKIVtuZXN0ZWQtcmVmcmVuY2VzXShzdGF0aWMvbmVzdGVkLXJlZnMuZ2lmKQoKIyMgRnVsbHNjcmVlbgohW2Z1bGxzY3JlZW5dKHN0YXRpYy9mdWxsc2NyZWVuLmdpZikKCiMjIFdlYmhvb2tzCiFbd2ViaG9va3NdKHN0YXRpYy93ZWJob29rcy5naWYpCgojIyBGaWx0ZXIKIVtmaWx0ZXJdKHN0YXRpYy9maWx0ZXIuZ2lmKQoKIyMgQ2FsbCBFbmRwb2ludHMKIVtjYWxsXShzdGF0aWMvY2FsbC5naWYpCgojIyBNdWx0aXBsZSBTZXJ2ZXIgU3VwcG9ydAohW2NhbGxdKHN0YXRpYy9zd2l0Y2gtc2VydmVyLmdpZikKCjwvZGV0YWlscz4KCjxiciAvPgoKCiMgSW5zdGFsbGF0aW9uCkluc3RhbGwgZnJvbSBzb3VyY2U6CmBgYGJhc2gK4p2vIGNhcmdvIGluc3RhbGwgb3BlbmFwaS10dWkKYGBgCk9yIGRvd25sb2FkIHByZS1idWlsdCBhcnRpZmFjdCBmcm9tIHJlbGVhc2UgcGFnZS4KCiMjIERvY2tlcgpKdXN0IHJ1biB0aGUgYXBwbGljYXRpb24gd2l0aCBkb2NrZXIuCgpgYGBiYXNoCiMgb3BlbiBsb2NhbCBmaWxlCuKdryBkb2NrZXIgcnVuIC0tcm0gLXRpIC12JChwd2QpL2V4YW1wbGVzOi9vcHQgemFnaGFnaGkvb3BlbmFwaS10dWkgLWkgL29wdC9wZXRzdG9yZS5qc29uCgojIG9wZW4gcmVtb3RlIGZpbGUK4p2vIGRvY2tlciBydW4gLS1ybSAtaXQgemFnaGFnaGkvb3BlbmFwaS10dWkgLWkgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2dpdGh1Yi9yZXN0LWFwaS1kZXNjcmlwdGlvbi9tYWluL2Rlc2NyaXB0aW9ucy1uZXh0L2FwaS5naXRodWIuY29tL2FwaS5naXRodWIuY29tLnlhbWwKYGBgCiMjIERpc3RybyBQYWNrYWdlcwoKPGRldGFpbHM+CiAgPHN1bW1hcnk+UGFja2FnaW5nIHN0YXR1czwvc3VtbWFyeT4KClshW1BhY2thZ2luZyBzdGF0dXNdKGh0dHBzOi8vcmVwb2xvZ3kub3JnL2JhZGdlL3ZlcnRpY2FsLWFsbHJlcG9zL29wZW5hcGktdHVpLnN2ZyldKGh0dHBzOi8vcmVwb2xvZ3kub3JnL3Byb2plY3Qvb3BlbmFwaS10dWkvdmVyc2lvbnMpCgo8L2RldGFpbHM+CgojIyMgQXJjaCBMaW51eAoKWW91IGNhbiBpbnN0YWxsIHVzaW5nIGBwYWNtYW5gIGFzIGZvbGxvd3M6CgpgYGBiYXNoCuKdryBwYWNtYW4gLVMgb3BlbmFwaS10dWkKYGBgCgojIyMgTml4T1MKCllvdSBjYW4gaW5zdGFsbCB0aGUgYG9wZW5hcGktdHVpYCBwYWNrYWdlIGRpcmVjdGx5IHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgYmFzaApuaXggcHJvZmlsZSBpbnN0YWxsIGdpdGh1Yjp6YWdoYWdoaS9vcGVuYXBpLXR1aQpgYGAKCllvdSBjYW4gYWxzbyBpbnN0YWxsIGBvcGVuYXBpLXR1aWAgYnkgYWRkaW5nIGl0IHRvIHlvdXIgYGNvbmZpZ3VyYXRpb24ubml4YCBmaWxlLgoKYGBgbml4CiMgZmxha2Uubml4Cgp7CiAgaW5wdXRzLm9wZW5hcGktdHVpLnVybCA9ICJnaXRodWI6emFnaGFnaGkvb3BlbmFwaS10dWkiOwogICMgLi4uCgogIG91dHB1dHMgPSB7bml4cGtncywgLi4ufSBAIGlucHV0czogewogICAgbml4b3NDb25maWd1cmF0aW9ucy48eW91ci1ob3N0bmFtZT4gPSBuaXhwa2dzLmxpYi5uaXhvc1N5c3RlbSB7CiAgICAgIHNwZWNpYWxBcmdzID0geyBpbmhlcml0IGlucHV0czsgfTsgIyB0aGlzIGlzIHRoZSBpbXBvcnRhbnQgcGFydAogICAgICBtb2R1bGVzID0gWwogICAgICAgIC4vY29uZmlndXJhdGlvbi5uaXgKICAgICAgXTsKICAgIH07CiAgfQp9CmBgYAoKVGhlbiwgYWRkIGBvcGVuYXBpLXR1aWAgdG8geW91ciBgY29uZmlndXJhdGlvbi5uaXhgCgpgYGBuaXgKIyBjb25maWd1cmF0aW9uLm5peAoKe2lucHV0cywgcGtncywgLi4ufTogewogIGVudmlyb25tZW50LnN5c3RlbVBhY2thZ2VzID0gd2l0aCBwa2dzOyBbCiAgICBpbnB1dHMub3BlbmFwaS10dWkucGFja2FnZXMuJHtwa2dzLnN5c3RlbX0ub3BlbmFwaS10dWkKICBdOwp9CmBgYAoKCiMgS2V5YmluZGluZ3MKCnwgS2V5IHwgQWN0aW9ufAp8Oi0tLS18Oi0tLS0tfAp8IGDihpJgLCBgbGB8IE1vdmUgdG8gbmV4dCBwYW5lIHwKfCBg4oaQYCwgYGhgIHwgTW92ZSB0byBwcmV2aW91cyBwYW5lIHwKfCBg4oaTYCwgYGpgIHwgTW92ZSBkb3duIGluIGxpc3RzIHwKfCBg4oaRYCwgYGtgIHwgTW92ZSB1cCBpbiBsaXN0cyB8CnwgYDEuLi45YCB8IE1vdmUgYmV0d2VlbiB0YWJzIHwKfCBgXWAgfCBNb3ZlIHRvIG5leHQgdGFiIHwKfCBgW2AgfCBNb3ZlIHRvIHByZXZpb3VzIHRhYiB8CnwgYGZgIHwgVG9nZ2xlIGZ1bGxzY3JlZW4gcGFuZXwKfCBgZ2AgfCBHbyBpbiBuZXN0ZWQgaXRlbXMgaW4gbGlzdHN8CnwgYHFgIHwgUXVpdHwKfCBgL2AgfCBGaWx0ZXIgYXBpc3wKfCBgOmAgfCBSdW4gY29tbWFuZHN8CnwgYEJhY2tzcGFjZWAsIGBiYCB8IEdldCBvdXQgb2YgbmVzdGVkIGl0ZW1zIGluIGxpc3RzfAoKIyBDb21tYW5kcyBNYWluIFBhZ2UKfCBDb21tYW5kIHwgRGVzY3JpcHRpb24gfAp8Oi0tLS0tLS0tfDotLS0tLS0tLS0tLS18CnwgYHFgIHwgUXVpdCB8CnwgYHJlcXVlc3RgLCBgcmAgfCBHbyB0byByZXF1ZXN0IHBhZ2V8CnwgYGhpc3RvcnlgIHwgUmVxdWVzdCBoaXN0b3J5fAoKIyBDb21tYW5kcyBSZXF1ZXN0IFBhZ2UKfCBDb21tYW5kIHwgRGVzY3JpcHRpb24gfAp8Oi0tLS0tLS0tfDotLS0tLS0tLS0tLS18CnwgYHFgIHwgUXVpdCB8CnwgYHNlbmRgLCBgc2AgfCBTZW5kIHJlcXVlc3QgfAp8IGBxdWVyeWAsIGBxYCB8IEFkZCBvciByZW1vdmUgcXVlcnkgc3RyaW5ncy4gc3ViLWNvbW1hbmRzIGFyZSBgYWRkYCBvciBgcm1gLiBlLmcuIGBxdWVyeSBhZGQgcGFnZWAgfAp8IGBoZWFkZXJgLCBgaGAgfCBBZGQgb3IgcmVtb3ZlIGhlYWRlcnMuIHN1Yi1jb21tYW5kcyBhcmUgYGFkZGAgb3IgYHJtYC4gZS5nLiBgaGVhZGVyIGFkZCB4LWFwaS1rZXlgIHwKfCBgcmVxdWVzdGAsIGByYCB8IExvYWQgcmVxdWVzdCBwYXlsb2FkLiBlLmcuIGByZXF1ZXN0IG9wZW4gL2hvbWUvaGFtZWQvcGF5bG9hZC5qc29uYCB8CnwgYHJlc3BvbnNlYCwgYHNgIHwgU2F2ZSByZXNwb25zZSBwYXlsb2FkIGUuZy8gYHJlc3BvbnNlIHNhdmUgL2hvbWUvaGFtZWQvcmVzdWx0Lmpzb25gIHwKCiMgRW52aXJvbm1lbnQgVmFyaWFibGVzCnwgVmFyaWFibGUgfCBEZXNjcmlwdGlvbiB8Cnw6LS0tLS0tLS0tfDotLS0tLS0tLS0tLS18CnwgYE9QRU5BUElfVFVJX0RFRkFVTFRfU0VSVkVSYCB8IEFkZCBhIGN1c3RvbSBzZXJ2ZXIgdXJsIHRvIHRoZSBsaXN0IG9mIHNlcnZlcnN8CgoKIyBJbXBsZW1lbnRlZCBGZWF0dXJlcwotIFtYXSBWaWV3ZXIKLSBbWF0gT3BlbkFQSSB2My4xCi0gW1hdIERpc3BsYXkgV2ViaG9va3MKLSBbWF0gRGlzcGxheSBJbmZvIGFuZCBWZXJzaW9uCi0gW1hdIEZpbHRlciBBUElzCi0gW1hdIFJlbW90ZSBBUEkgc3BlY2lmaWNhdGlvbgotIFtYXSBNZXJnZSBQYXJhbWV0ZXJzIEJhc2VkIG9uIGBpbmAKLSBbWF0gUGFuZSBGdWxsc2NyZWVuIE1vZGUKLSBbWF0gTmVzdGVkIENvbXBvbmVudHMKLSBbWF0gU3RhdHVzIExpbmUKLSBbWF0gUGhvbmUgUGFnZQotIFtYXSBDYWxsIEhpc3RvcnkKLSBbWF0gUmVxdWVzdCBQbGFpbiBFZGl0b3IKLSBbWF0gSGVhZGVyIElucHV0IChObyBWYWxpZGF0aW9uKQotIFtYXSBQYXRoIElucHV0IChObyBWYWxpZGF0aW9uKQotIFtYXSBDYWxsaW5nCi0gW1hdIFBsYWluIFJlc3BvbnNlIFZpZXdlciAoU3RhdHVzICsgSGVhZGVycyArIEJvZHkpCi0gW1hdIEhpc3Rvcnkgdmlld2VyCi0gW1hdIFJlZmFjdG9yIGZvb3RlciwgYWRkIGZsYXNoIGZvb3RlciBtZXNzYWdlcwotIFtYXSBJbXBvcnQgcmVxdWVzdCBib2R5IGZpbGUKLSBbWF0gU2F2ZSByZXNwb25zZSBib2R5IGFuZCBoZWFkZXIKLSBbWF0gQ29tbWFuZCBoaXN0b3J5IHdpdGgg4oaRL+KGkwotIFtYXSBTdXBwb3J0IGFycmF5IHF1ZXJ5IHN0cmluZ3MKLSBbWF0gU3VwcGVydCBleHRyYSBoZWFkZXJzCi0gW1hdIFN1cHBvcnQgbXVsdGlwbGUgc2VydmVycwoKIyBCYWNrbG9nCi0gWyBdIFNjaGVtYSBUeXBlcyAob3BlbmFwaS0zMSkKLSBbIF0gRGlzcGxheSBLZXkgTWFwcGluZ3MgaW4gUG9wdXAKLSBbIF0gUmVhZCBTcGVjIGZyb20gU1RESU4gCi0gWyBdIFJlcXVlc3QgcHJvZ3Jlc3MgYmFy readmeEtag: '"ea08df49cf9af797f61cc0faa08ce9b98da107ac"' readmeLastModified: Fri, 04 Oct 2024 15:27:53 GMT repositoryId: 766082951 description: Terminal UI to list, browse and run APIs defined with openapi spec. created: '2024-03-02T09:42:10Z' updated: '2026-02-05T20:19:38Z' language: Rust archived: false stars: 1053 watchers: 6 forks: 24 owner: zaghaghi logo: https://avatars.githubusercontent.com/u/111259?v=4 license: MIT repoEtag: '"67d690e2465f773793aa790cd07097a27b41d8ad3582bfa3a95209793b89936c"' repoLastModified: Thu, 05 Feb 2026 20:19:38 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/stackql/stackql v3: true id: 9cde100cf19bd12ff9483aa23bed6a2d repositoryMetadata: base64Readme: >- PCEtLSB3ZWIgYXNzZXRzIC0tPgpbbG9nb106IGh0dHBzOi8vc3RhY2txbC5pby9pbWcvc3RhY2txbC1sb2dvLWJvbGQucG5nICJzdGFja3FsIGxvZ28iCltob21lcGFnZV06IGh0dHBzOi8vc3RhY2txbC5pby8KW2RvY3NdOiBodHRwczovL3N0YWNrcWwuaW8vZG9jcwpbYmxvZ106IGh0dHBzOi8vc3RhY2txbC5pby9ibG9nCltyZWdpc3RyeV06IGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFja3FsL3N0YWNrcWwtcHJvdmlkZXItcmVnaXN0cnkKW3ZhcmlhYmxlc106IGh0dHBzOi8vc3RhY2txbC5pby9kb2NzL2dldHRpbmctc3RhcnRlZC92YXJpYWJsZXMKW21hY3BrZ106IGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9zdGFja3FsLXB1YmxpYy1yZWxlYXNlcy9sYXRlc3Qvc3RhY2txbF9kYXJ3aW5fbXVsdGlhcmNoLnBrZwpbd2lubXNpXTogaHR0cHM6Ly9yZWxlYXNlcy5zdGFja3FsLmlvL3N0YWNrcWwvbGF0ZXN0L3N0YWNrcWxfd2luZG93c19hbWQ2NC5tc2kKW3dpbnppcF06IGh0dHBzOi8vcmVsZWFzZXMuc3RhY2txbC5pby9zdGFja3FsL2xhdGVzdC9zdGFja3FsX3dpbmRvd3NfYW1kNjQuemlwClt0dXh6aXBdOiBodHRwczovL3JlbGVhc2VzLnN0YWNrcWwuaW8vc3RhY2txbC9sYXRlc3Qvc3RhY2txbF9saW51eF9hbWQ2NC56aXAKPCEtLSBkb2NrZXIgbGlua3MgLS0+Cltkb2NrZXJodWJdOiBodHRwczovL2h1Yi5kb2NrZXIuY29tL3Uvc3RhY2txbApbZG9ja2Vyc3RhY2txbF06IGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9zdGFja3FsL3N0YWNrcWwKW2RvY2tlcmp1cHl0ZXJdOiBodHRwczovL2h1Yi5kb2NrZXIuY29tL3Ivc3RhY2txbC9zdGFja3FsLWp1cHl0ZXItZGVtbwo8IS0tIGdpdGh1YiBhY3Rpb25zIGxpbmtzIC0tPgpbc2V0dXBhY3Rpb25dOiBodHRwczovL2dpdGh1Yi5jb20vbWFya2V0cGxhY2UvYWN0aW9ucy9zdGFja3FsLXN0dWRpb3Mtc2V0dXAtc3RhY2txbApbZXhlY2FjdGlvbl06IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZXRwbGFjZS9hY3Rpb25zL3N0YWNrcWwtc3R1ZGlvcy1zdGFja3FsLWV4ZWMKPCEtLSBiYWRnZXMgLS0+CltiYWRnZTFdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3BsYXRmb3JtLXdpbmRvd3MlMjBtYWNvcyUyMGxpbnV4LWJyaWdodGdyZWVuICJQbGF0Zm9ybXMiCltiYWRnZTJdOiBodHRwczovL2dpdGh1Yi5jb20vc3RhY2txbC9zdGFja3FsL3dvcmtmbG93cy9Hby9iYWRnZS5zdmcgIkdvIgpbYmFkZ2UzXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9zdGFja3FsL3N0YWNrcWwgIkxpY2Vuc2UiCltiYWRnZTRdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL3Rva2VpL2xpbmVzL2dpdGh1Yi9zdGFja3FsL3N0YWNrcWwgIkxpbmVzIiAgICAKPCEtLSBnaXRodWIgbGlua3MgLS0+Cltpc3N1ZXNdOiBodHRwczovL2dpdGh1Yi5jb20vc3RhY2txbC9zdGFja3FsL2lzc3Vlcy9uZXc/YXNzaWduZWVzPSZsYWJlbHM9YnVnJnRlbXBsYXRlPWJ1Z19yZXBvcnQubWQmdGl0bGU9JTVCQlVHJTVECltmZWF0dXJlc106IGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFja3FsL3N0YWNrcWwvaXNzdWVzL25ldz9hc3NpZ25lZXM9JmxhYmVscz1lbmhhbmNlbWVudCZ0ZW1wbGF0ZT1mZWF0dXJlX3JlcXVlc3QubWQmdGl0bGU9JTVCRkVBVFVSRSU1RApbZGV2ZWxvcGVyc106IC9kb2NzL2RldmVsb3Blcl9ndWlkZS5tZApbcmVnaXN0cnljb250XTogL2RvY3MvcmVnaXN0cnlfY29udHJpYnV0aW9uLm1kCltkZXNpZ25kb2NzXTogL2RvY3MvaGlnaC1sZXZlbC1kZXNpZ24ubWQKW2NvbnRyaWJ1dGluZ106IC9DT05UUklCVVRJTkcubWQKW2Rpc2N1c3Npb25zXTogaHR0cHM6Ly9naXRodWIuY29tL29yZ3Mvc3RhY2txbC9kaXNjdXNzaW9ucwo8IS0tIHJlcG8gYXNzZXRzIC0tPgpbZGFya21vZGV0ZXJtXTogL2RvY3MvaW1hZ2VzL3N0YWNrcWwtbGlnaHQtdGVybS5naWYjZ2gtZGFyay1tb2RlLW9ubHkKW2xpZ2h0bW9kZXRlcm1dOiAvZG9jcy9pbWFnZXMvc3RhY2txbC1kYXJrLXRlcm0uZ2lmI2doLWxpZ2h0LW1vZGUtb25seQo8IS0tIG1pc2MgbGlua3MgLS0+Clt0d2l0dGVyXTogaHR0cHM6Ly90d2l0dGVyLmNvbS9zdGFja3FsCgo8IS0tIGxhbmd1YWdlOiBsYW5nLW5vbmUgLS0+CjxkaXYgYWxpZ249ImNlbnRlciI+CgpbIVtsb2dvXV1baG9tZXBhZ2VdICAKIVtiYWRnZTFdCiFbYmFkZ2UyXQohW2JhZGdlM10KIVtiYWRnZTRdCgo8L2Rpdj4KCjxkaXYgYWxpZ249ImNlbnRlciI+CgohW2hvbWVicmV3IGRvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ob21lYnJldy9pbnN0YWxscy9keS9zdGFja3FsP2xhYmVsPWhvbWVicmV3JTIwZG93bmxvYWRzKQohW2hvbWVicmV3IHZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vaG9tZWJyZXcvdi9zdGFja3FsP2xhYmVsPWhvbWVicmV3JTIwdmVyc2lvbikKIVtHaXRIdWIgRG93bmxvYWRzIChhbGwgYXNzZXRzLCBhbGwgcmVsZWFzZXMpXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9kb3dubG9hZHMvc3RhY2txbC9zdGFja3FsL3RvdGFsP2xhYmVsPWdpdGh1YiUyMHJlbGVhc2UlMjBkb3dubG9hZHMpCiFbR2l0SHViIFJlbGVhc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3YvcmVsZWFzZS9zdGFja3FsL3N0YWNrcWw/bGFiZWw9Z2l0aHViJTIwcmVsZWFzZSkKIVtEb2NrZXIgUHVsbHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3B1bGxzL3N0YWNrcWwvc3RhY2txbCkKIVtEb2NrZXIgSW1hZ2UgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvdi9zdGFja3FsL3N0YWNrcWw/bGFiZWw9ZG9ja2VyJTIwdmVyc2lvbikKIVtDaG9jb2xhdGV5IERvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jaG9jb2xhdGV5L2R0L3N0YWNrcWw/bGFiZWw9Y2hvY29sYXRleSUyMGRvd25sb2FkcykKIVtDaG9jb2xhdGV5IFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY2hvY29sYXRleS92L3N0YWNrcWwpCiFbUHlQSSAtIERvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2RtL3N0YWNrcWwtZGVwbG95P2xhYmVsPXB5cGklMjBkb3dubG9hZHMpCgo8L2Rpdj4KPGRpdiBhbGlnbj0iY2VudGVyIj4KCiMjIyBEZXBsb3ksIG1hbmFnZSBhbmQgcXVlcnkgY2xvdWQgcmVzb3VyY2VzIGFuZCBpbnRlcmFjdCB3aXRoIEFQSXMgdXNpbmcgU1FMCjwhLS0gPGgzIGFsaWduPSJjZW50ZXIiPlNRTCBiYXNlZCBYT3BzLCBvYnNlcnZhYmlsaXR5IGFuZCBtaWRkbGV3YXJlIGZyYW1ld29yazwvaDM+IC0tPgoKPHAgYWxpZ249ImNlbnRlciI+CgpbX19SZWFkIHRoZSBkb2NzIMK7X19dW2RvY3NdICAKW1JhaXNlIGFuIElzc3VlXVtpc3N1ZXNdIMK3IApbUmVxdWVzdCBhIEZlYXR1cmVdW2ZlYXR1cmVzXSDCtyAKW0RldmVsb3BlciBHdWlkZV1bZGV2ZWxvcGVyc10gwrcgCltCWU8gUHJvdmlkZXJzXVtyZWdpc3RyeWNvbnRdCgo8L3A+CjwvZGl2PgoKPGRldGFpbHMgb3Blbj0ib3BlbiI+CjxzdW1tYXJ5PkNvbnRlbnRzPC9zdW1tYXJ5Pgo8b2w+CjxsaT48YSBocmVmPSIjYWJvdXQtdGhlLXByb2plY3QiPkFib3V0IFRoZSBQcm9qZWN0PC9hPjwvbGk+CjxsaT48YSBocmVmPSIjaW5zdGFsbGF0aW9uIj5JbnN0YWxsYXRpb248L2E+PC9saT4KPGxpPjxhIGhyZWY9IiN1c2FnZSI+VXNhZ2U8L2E+PC9saT4KPCEtLSA8bGk+PGEgaHJlZj0iI3JvYWRtYXAiPlJvYWRtYXA8L2E+PC9saT4gLS0+CjxsaT48YSBocmVmPSIjY29udHJpYnV0aW5nIj5Db250cmlidXRpbmc8L2E+PC9saT4KPGxpPjxhIGhyZWY9IiNsaWNlbnNlIj5MaWNlbnNlPC9hPjwvbGk+CjxsaT48YSBocmVmPSIjY29udGFjdCI+Q29udGFjdDwvYT48L2xpPgo8bGk+PGEgaHJlZj0iI2Fja25vd2xlZGdlbWVudHMiPkFja25vd2xlZGdlbWVudHM8L2E+PC9saT4KPC9vbD4KPC9kZXRhaWxzPgoKIyMgQWJvdXQgVGhlIFByb2plY3QKCltfX1N0YWNrUUxfX11baG9tZXBhZ2VdIGlzIGFuIG9wZW4tc291cmNlIHByb2plY3QgYnVpbHQgd2l0aCBHb2xhbmcgdGhhdCBhbGxvd3MgeW91IHRvIGNyZWF0ZSwgbW9kaWZ5IGFuZCBxdWVyeSB0aGUgc3RhdGUgb2Ygc2VydmljZXMgYW5kIHJlc291cmNlcyBhY3Jvc3MgZGlmZmVyZW50IGxvY2FsIGFuZCByZW1vdGUgaW50ZXJmYWNlcywgdXNpbmcgU1FMIHNlbWFudGljcy4gIFN1Y2ggaW50ZXJmYWNlcyBjYW5vbmljYWxseSBpbmNsdWRlLCBidXQgYXJlIG5vdCBsaW1pdGVkIHRvLCBjbG91ZCBhbmQgU2FhUyBwcm92aWRlcnMgKEdvb2dsZSwgQVdTLCBBenVyZSwgT2t0YSwgR2l0SHViLCBldGMuKS4KPGJyIC8+CjxiciAvPgoKIVtzdGFja3FsLXNoZWxsXVtkYXJrbW9kZXRlcm1dCiFbc3RhY2txbC1zaGVsbF1bbGlnaHRtb2RldGVybV0KCiMjIyBIb3cgaXQgd29ya3MKClN0YWNrUUwgaXMgYSBzdGFuZGFsb25lIGFwcGxpY2F0aW9uIHRoYXQgY2FuIGJlIHVzZWQgaW4gY2xpZW50IG1vZGUgKHZpYSBfX2BleGVjYF9fIG9yIF9fYHNoZWxsYF9fKSBvciBhY2Nlc3NlZCB2aWEgYSBQb3N0Z3JlcyB3aXJlIHByb3RvY29sIGNsaWVudCAoYHBzeWNvcGcyYCwgZXRjLikgdXNpbmcgc2VydmVyIG1vZGUgKF9fYHNydmBfXykuICAKClN0YWNrUUwgcGFyc2VzIFNRTCBzdGF0ZW1lbnRzIGFuZCB0cmFuc3BpbGVzIHRoZW0gaW50byBBUEkgcmVxdWVzdHMgdG8gdGhlIChjbG91ZCkgcmVzb3VyY2UgcHJvdmlkZXIuICBUaGUgQVBJIGNhbGxzIGFyZSB0aGVuIGV4ZWN1dGVkIGFuZCB0aGUgcmVzdWx0cyBhcmUgcmV0dXJuZWQgdG8gdGhlIHVzZXIuICAKClN0YWNrUUwgcHJvdmlkZXIgaW50ZXJmYWNlcyBhcmUgY2Fub25pY2FsbHkgZGVmaW5lZCBpbiBPcGVuQVBJIGV4dGVuc2lvbnMgdG8gdGhlIHByb3ZpZGVycycgc3BlY2lmaWNhdGlvbi4gIFRoZXNlIGRlZmluaXRpb25zIGFyZSB0aGVuIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIFNRTCBzY2hlbWEgYW5kIHRoZSBBUEkgY2xpZW50LiAgVGhlIHNvdXJjZSBmb3IgdGhlIHByb3ZpZGVyIGRlZmluaXRpb25zIGFyZSBzdG9yZWQgaW4gdGhlIFtfX1N0YWNrUUwgUmVnaXN0cnlfX11bcmVnaXN0cnldLiAgVGhlIHNlbWFudGljcyBvZiBwcm92aWRlciBpbnRlcmFjdGlvbnMgYXJlIGRlZmluZWQgaW4gW291ciBgYW55LXNka2AgbGlicmFyeV0oaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrcWwvYW55LXNkaykuICBGb3IgbW9yZSBkZXRhaWwgb24gbnV0cyBhbmQgYm9sdHMsIHBsZWFzZSBzZWUgW3RoZSBsb2NhbCBgQUdFTlRTLm1kYCBmaWxlXSgvQUdFTlRTLm1kKSBhbmQgW3RoYXQgb2YgYGFueS1zZGtgXShodHRwczovL2dpdGh1Yi5jb20vc3RhY2txbC9hbnktc2RrL2Jsb2IvbWFpbi9BR0VOVFMubWQpLgoKPGRldGFpbHM+CjxzdW1tYXJ5PjxiPlN0YWNrUUwgQ29udGV4dCBEaWFncmFtPC9iPjwvc3VtbWFyeT4KPGJyIC8+ClRoZSBmb2xsb3dpbmcgY29udGV4dCBkaWFncmFtIGRlc2NyaWJlcyB0aGUgU3RhY2tRTCBhcmNoaXRlY3R1cmUgYXQgYSBoaWdoIGxldmVsOiAgCgo8IS0tICFbU3RhY2tRTCBDb250ZXh0IERpYWdyYW1dKGh0dHA6Ly93d3cucGxhbnR1bWwuY29tL3BsYW50dW1sL3Byb3h5P2NhY2hlPW5vJnNyYz1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc3RhY2txbC90ZXN0LXJlYWRtZS9tYWluL3B1bWwvc3RhY2txbC1jNC1jb250ZXh0Lml1bWwpIC0tPgoKYGBgbWVybWFpZApmbG93Y2hhcnQgTFIKICBzdWJncmFwaCBTdGFja1FMCiAgICBkaXJlY3Rpb24gQlQKICAgIHN1YmdyYXBoIFByb3ZpZGVyRGVmcwogICAgICAgIFJlZ2lzdHJ5W1Byb3ZpZGVyIFJlZ2lzdHJ5IERvY3NdICAgIAogICAgZW5kCiAgICBzdWJncmFwaCBBcHAKICAgICAgICBQcm9jWyQgc3RhY2txbCBleGVjXG4kIHN0YWNrcWwgc2hlbGxcbiQgc3RhY2txbCBzcnZdCiAgICAgICAgc3R5bGUgUHJvYyBmaWxsOiMwMDAsc3Ryb2tlOiMwMDAsY29sb3I6I2ZmZix0ZXh0LWFsaWduOmxlZnQ7CgogICAgICAgICUlICxmb250LWZhbWlseTonQ291cmllciBOZXcnLCBDb3VyaWVyLCBtb25vc3BhY2UKICAgIGVuZAogIGVuZAogIFVzZXIoKFVzZXIpKSA8LS0+IFN0YWNrUUwgPC0tPiBQcm92aWRlcltDbG91ZCBQcm92aWRlciBBUEldCiAgUHJvdmlkZXJEZWZzIC0tPiBBcHAKYGBgCgpNb3JlIGRldGFpbGVkIGRlc2lnbiBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgW2hlcmVdW2Rlc2lnbmRvY3NdLgoKPC9kZXRhaWxzPgoKIyMgSW5zdGFsbGF0aW9uCgpTdGFja1FMIGlzIGF2YWlsYWJsZSBmb3IgV2luZG93cywgTWFjT1MsIExpbnV4LCBEb2NrZXIsIEdpdEh1YiBBY3Rpb25zIGFuZCBtb3JlLiAgU2VlIHRoZSBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zIGJlbG93IGZvciB5b3VyIHBsYXRmb3JtLiAgCgo8ZGV0YWlscz4KPHN1bW1hcnk+PGI+SW5zdGFsbGluZyBvbiBNYWNPUzwvYj48L3N1bW1hcnk+CgotIEhvbWVicmV3IChgYW1kNjRgIGFuZCBgYXJtNjRgKQogIC0gYGJyZXcgaW5zdGFsbCBzdGFja3FsYCAqb3IqIGBicmV3IHRhcCBzdGFja3FsL3RhcCAmJiBicmV3IGluc3RhbGwgc3RhY2txbC90YXAvc3RhY2txbGAKLSBNYWNPUyBQS0cgSW5zdGFsbGVyIChgYW1kNjRgIGFuZCBgYXJtNjRgKQogIC0gZG93bmxvYWQgdGhlIGxhdGVzdCBbTWFjT1MgUEtHIGluc3RhbGxlciBmb3IgU3RhY2tRTF1bbWFjcGtnXQogIC0gcnVuIHRoZSBpbnN0YWxsZXIgYW5kIGZvbGxvdyB0aGUgcHJvbXB0cwoKPC9kZXRhaWxzPgoKPGRldGFpbHM+CjxzdW1tYXJ5PjxiPkluc3RhbGxpbmcgb24gV2luZG93czwvYj48L3N1bW1hcnk+CgotIE1TSSBJbnN0YWxsZXIKICAtIGRvd25sb2FkIHRoZSBsYXRlc3QgW01TSSBpbnN0YWxsZXIgZm9yIFN0YWNrUUxdW3dpbm1zaV0KICAtIHJ1biB0aGUgaW5zdGFsbGVyIGFuZCBmb2xsb3cgdGhlIHByb21wdHMKLSBDaG9jb2xhdGV5CiAgLSBpbnN0YWxsIFtDaG9jb2xhdGV5XShodHRwczovL2Nob2NvbGF0ZXkub3JnL2luc3RhbGwpCiAgLSBydW4gYGNob2NvIGluc3RhbGwgc3RhY2txbGAKLSBaSVAgQXJjaGl2ZQogIC0gZG93bmxvYWQgdGhlIGxhdGVzdCBbV2luZG93cyBaSVAgYXJjaGl2ZSBmb3IgU3RhY2tRTF1bd2luemlwXQogIC0gZXh0cmFjdCB0aGUgYXJjaGl2ZSAoY29kZSBzaWduZWQgYHN0YWNrcWwuZXhlYCBmaWxlKSB0byBhIGRpcmVjdG9yeSBvZiB5b3VyIGNob2ljZQogIC0gYWRkIHRoZSBkaXJlY3RvcnkgdG8geW91ciBgUEFUSGAgZW52aXJvbm1lbnQgdmFyaWFibGUgKG9wdGlvbmFsKQoKPC9kZXRhaWxzPgoKPGRldGFpbHM+CjxzdW1tYXJ5PjxiPkluc3RhbGxpbmcgb24gTGludXg8L2I+PC9zdW1tYXJ5PgoKLSBaSVAgQXJjaGl2ZQogIC0gZG93bmxvYWQgdGhlIGxhdGVzdCBbTGludXggWklQIGFyY2hpdmUgZm9yIFN0YWNrUUxdW3R1eHppcF0KICAgIC0gb3IgdmlhIGBjdXJsIC1MIGh0dHBzOi8vYml0Lmx5L3N0YWNrcWwtemlwIC1PICYmIHVuemlwIHN0YWNrcWwtemlwYAogIC0gZXh0cmFjdCB0aGUgYXJjaGl2ZSAoYHN0YWNrcWxgIGZpbGUpIHRvIGEgZGlyZWN0b3J5IG9mIHlvdXIgY2hvaWNlCiAgLSBhZGQgdGhlIGRpcmVjdG9yeSB0byB5b3VyIGBQQVRIYCBlbnZpcm9ubWVudCB2YXJpYWJsZSAob3B0aW9uYWwpCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KPHN1bW1hcnk+PGI+R2V0dGluZyBTdGFja1FMIGZyb20gRG9ja2VySHViPC9iPjwvc3VtbWFyeT4KCj4gVmlldyBhbGwgYXZhaWxhYmxlIFN0YWNrUUwgaW1hZ2VzIG9uIFtfX0RvY2tlckh1Yl9fXVtkb2NrZXJodWJdLiAgSW1hZ2VzIGF2YWlsYWJsZSBpbmNsdWRlIFtfX2BzdGFja3FsYF9fXVtkb2NrZXJzdGFja3FsXSwgW19fYHN0YWNrcWwtanVweXRlci1kZW1vYF9fXVtkb2NrZXJqdXB5dGVyXSBhbmQgbW9yZS4gIFB1bGwgdGhlIGxhdGVzdCBTdGFja1FMIGJhc2UgaW1hZ2UgdXNpbmc6ICAKCmBgYGJhc2gKZG9ja2VyIHB1bGwgc3RhY2txbC9zdGFja3FsCmBgYAoKPC9kZXRhaWxzPgoKPGRldGFpbHM+CjxzdW1tYXJ5PjxiPlVzaW5nIFN0YWNrUUwgd2l0aCBHaXRIdWIgQWN0aW9uczwvYj48L3N1bW1hcnk+Cgo+IFVzZSBTdGFja1FMIGluIHlvdXIgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3dzIHRvIGF1dG9tYXRlIGNsb3VkIGluZnJhc3RydWN0dXJlIHByb3Zpc2lvbmluZywgSWFDIGFzc3VyYW5jZSwgb3IgY29tcGxpYW5jZS9zZWN1cml0eS4gIEF2YWlsYWJsZSBHaXRIdWIgQWN0aW9ucyBpbmNsdWRlOiBbYHNldHVwLXN0YWNrcWxgXVtzZXR1cGFjdGlvbl0sIFtgc3RhY2txbC1leGVjYF1bZXhlY2FjdGlvbl0gYW5kIG1vcmUKCjwvZGV0YWlscz4KCiMjIFVzYWdlCgpTdGFja1FMIGNhbiBiZSB1c2VkIHZpYSB0aGUgaW50ZXJhY3RpdmUgUkVQTCBzaGVsbCwgb3IgdmlhIHRoZSBgZXhlY2AgY29tbWFuZCBvciByYW4gYXMgYSBzZXJ2ZXIgdXNpbmcgdGhlIFtQb3N0Z3JlcyB3aXJlIHByb3RvY29sXShodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzL2N1cnJlbnQvcHJvdG9jb2wuaHRtbCkuICAKCj4g4oS577iPIFN0YWNrUUwgZG9lcyBub3QgcmVxdWlyZSBvciBpbnN0YWxsIGEgZGF0YWJhc2UuCgoqIEludGVyYWN0aXZlIFNoZWxsCiAgYGBgc2gKICAjIHJ1biBpbnRlcmFjdGl2ZSBzdGFja3FsIHF1ZXJpZXMKICBzdGFja3FsIHNoZWxsIC0tYXV0aD0iJHtBVVRIfSIKICBgYGAKKiBFeGVjdXRlIGEgc3RhdGVtZW50IG9yIGZpbGUKICBgYGBzaAogIHN0YWNrcWwgZXhlYyAtLWF1dGg9IiR7QVVUSH0iIC1pIG15c2NyaXB0LmlxbCAtLWlxbGRhdGEgdmFycy5qc29ubmV0IC0tb3V0cHV0IGpzb24KICAKICAjIG9yCiAgCiAgc3RhY2txbCBleGVjIC0tYXV0aD0iJHtBVVRIfSIgIlNFTEVDVCBpZCwgc3RhdHVzIEZST00gYXdzLmVjMi5pbnN0YW5jZXMgV0hFUkUgcmVnaW9uID0gJ3VzLWVhc3QtMSciCiAgYGBgCgogID4g4oS577iPIG91dHB1dCBvcHRpb25zIG9mIGBqc29uYCwgYGNzdmAsIGB0YWJsZWAgYW5kIGB0ZXh0YCBhcmUgYXZhaWxhYmxlIGZvciB0aGUgYGV4ZWNgIGNvbW1hbmQgdXNpbmcgdGhlIGAtLW91dHB1dGAgZmxhZwoKICA+IOKEue+4jyBTdGFja1FMIHN1cHBvcnRzIHBhc3NpbmcgcGFyYW1ldGVycyB1c2luZyBganNvbm5ldGAgb3IgYGpzb25gLCBzZWUgW19fVXNpbmcgVmFyaWFibGVzX19dW3ZhcmlhYmxlc10KKiBTZXJ2ZXIKICBgYGBzaAogICMgc2VydmUgY2xpZW50IHJlcXVlc3RzIG92ZXIgdGhlIFBvc3RncmVzIHdpcmUgcHJvdG9jb2wgKHBzeWNvcGcyLCBldGMuKSAKICBzdGFja3FsIHNydiAtLWF1dGg9IiR7QVVUSH0iCiAgYGBgCgpfRm9yIG1vcmUgZXhhbXBsZXMsIHBsZWFzZSBjaGVjayBvdXIgW0Jsb2ddW2Jsb2ddXwoKPCEtLSAjIyBSb2FkbWFwCgpTZWUgb3VyIFtfX3JvYWRtYXBfX10oaHR0cHM6Ly9naXRodWIuY29tL290aG5laWxkcmV3L0Jlc3QtUkVBRE1FLVRlbXBsYXRlL2lzc3VlcykgdG8gc2VlIHdoZXJlIHdlIGFyZSBnb2luZyB3aXRoIHRoZSBwcm9qZWN0LiAtLT4KCiMjIENvbnRyaWJ1dGluZwoKQ29udHJpYnV0aW9ucyBhcmUgd2VsY29tZSBhbmQgZW5jb3VyYWdlZC4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb250cmlidXRlLCBwbGVhc2Ugc2VlIG91ciBbX19jb250cmlidXRpbmcgZ3VpZGVfX11bY29udHJpYnV0aW5nXS4KCiMjIExpY2Vuc2UKCkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIFtgTElDRU5TRWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFja3FsL3N0YWNrcWwvYmxvYi9tYWluL0xJQ0VOU0UpIGZvciBtb3JlIGluZm9ybWF0aW9uLiAgTGljZW5zZXMgZm9yIHRoaXJkIHBhcnR5IHNvZnR3YXJlIHdlIGFyZSB1c2luZyBhcmUgaW5jbHVkZWQgaW4gdGhlIFsvZG9jcy9saWNlbnNlc10oL2RvY3MvbGljZW5zZXMpIGRpcmVjdG9yeS4KCiMjIENvbnRhY3QKCkdldCBpbiB0b3VjaCB3aXRoIHVzIHZpYSBUd2l0dGVyIGF0IFtfX0BzdGFja3FsX19dW3R3aXR0ZXJdLCBlbWFpbCB1cyBhdCBbX19pbmZvQHN0YWNrcWwuaW9fX10oaW5mb0BzdGFja3FsLmlvKSBvciBzdGFydCBhIGNvbnZlcnNhdGlvbiB1c2luZyBbX19kaXNjdXNzaW9uc19fXVtkaXNjdXNzaW9uc10uCgojIyBBY2tub3dsZWRnZW1lbnRzCkZvcmtzIG9mIHRoZSBmb2xsb3dpbmcgc3VwcG9ydCBvdXIgd29yazoKCiogW3ZpdGVzc10oaHR0cHM6Ly92aXRlc3MuaW8vKQoqIFtraW4tb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaSkKKiBbZ29yaWxsYS9tdXhdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb3JpbGxhL211eCkKKiBbcmVhZGxpbmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHp5ZXIvcmVhZGxpbmUpCiogW3BzcWwtd2lyZV0oaHR0cHM6Ly9naXRodWIuY29tL2plcm9lbnJpbnplbWEvcHNxbC13aXJlKQoqIFttY3AtcG9zdGdyZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nbGRjL21jcC1wb3N0Z3JlcykKKiBbdGhlIGBnb2xhbmdgIE1DUCBTREtdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2RlbGNvbnRleHRwcm90b2NvbC9nby1zZGspCiogLi4uYW5kIG1vcmUuICBQbGVhc2UgZXhjdXNlIHVzIGZvciBhbnkgb21pc3Npb25zLgoKV2UgZ3JhdGVmdWxseSBhY2tub3dsZWRnZSB0aGVzZSBwaWVjZXMgb2Ygd29yay4KCg== readmeEtag: '"88200627d768f11d359577c4d94e896567de5897"' readmeLastModified: Sun, 12 Oct 2025 22:48:14 GMT repositoryId: 443987542 description: >- Query, provision and operate Cloud and SaaS resources and APIs using an extensible SQL based framework created: '2022-01-03T08:20:06Z' updated: '2026-02-02T05:22:22Z' language: Go archived: false stars: 835 watchers: 11 forks: 78 owner: stackql logo: https://avatars.githubusercontent.com/u/95105302?v=4 license: MIT repoEtag: '"70122ac450f39825e5c69369db387ec87cdb4376aab94efcd758a9fd2dc0470f"' repoLastModified: Mon, 02 Feb 2026 05:22:22 GMT category: Server Implementations foundInMaster: true - source: - openapi3 tags - openapi31 tags repository: https://github.com/apisyouwonthate/openapi.tools v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJLlRvb2xzCgpbIVtOZXRsaWZ5IFN0YXR1c10oaHR0cHM6Ly9hcGkubmV0bGlmeS5jb20vYXBpL3YxL2JhZGdlcy8xZWNhNjRiNC1mMjhjLTQyNTAtYjg4NC1jMzA2MjdhYjY1ZDgvZGVwbG95LXN0YXR1cyldKGh0dHBzOi8vYXBwLm5ldGxpZnkuY29tL3NpdGVzL29wZW5hcGktdG9vbHMvZGVwbG95cykKWyFbQnV5IHVzIGEgdHJlZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9CdXklMjB1cyUyMGElMjB0cmVlLSVGMCU5RiU4QyVCMy1saWdodGdyZWVuKV0oaHR0cHM6Ly9zaG9wLnByb3RlY3QuZWFydGgvcHJvZHVjdHMvdHJlZSkKCkEgY29tcHJlaGVuc2l2ZSBkaXJlY3Rvcnkgb2YgKiozMDArIHRvb2xzKiogZm9yIHdvcmtpbmcgd2l0aCBPcGVuQVBJIGRlc2NyaXB0aW9ucyDigJQgZWRpdG9ycywgbGludGVycywgcGFyc2VycywgY29kZSBnZW5lcmF0b3JzLCBkb2N1bWVudGF0aW9uLCB0ZXN0aW5nLCBtb2NraW5nLCBhbmQgbW9yZS4KCioqW1Zpc2l0IG9wZW5hcGkudG9vbHMg4oaSXShodHRwczovL29wZW5hcGkudG9vbHMpKioKCiMjIEZlYXR1cmVzCgotICoqQ29tcHJlaGVuc2l2ZSBsaXN0aW5ncyoqIOKAlCBUb29scyBvcmdhbml6ZWQgYnkgY2F0ZWdvcnkgd2l0aCBmaWx0ZXJpbmcgYnkgbGFuZ3VhZ2UsIE9wZW5BUEkgdmVyc2lvbiBzdXBwb3J0LCBhbmQgbW9yZQotICoqQ3VyYXRlZCBjb2xsZWN0aW9ucyoqIOKAlCBCcm93c2Ugb3BlbiBzb3VyY2UgdG9vbHMsIFNhYVMgcHJvZHVjdHMsIG9yIGxlZ2FjeSAocHJlLTMuMSkgdG9vbHMKLSAqKlNwb25zb3IgaGlnaGxpZ2h0cyoqIOKAlCBTdXBwb3J0aW5nIGNvbXBhbmllcyBnZXQgcHJpb3JpdHkgcGxhY2VtZW50IGFuZCBiYWRnZXMKLSAqKkFsd2F5cyB1cCB0byBkYXRlKiog4oCUIENvbW11bml0eS1tYWludGFpbmVkIHdpdGggcmVndWxhciBjb250cmlidXRpb25zCgojIyBDb250cmlidXRpbmcKCldhbnQgdG8gYWRkIGEgdG9vbCBvciBpbXByb3ZlIHRoZSBzaXRlPyBQbGVhc2UgcmVhZCBbQ09OVFJJQlVUSU5HLm1kXSguL0NPTlRSSUJVVElORy5tZCkuCgojIyBTcG9uc29yc2hpcAoKT3BlbkFQSS50b29scyBpcyBtYWludGFpbmVkIGJ5IFtBUElzIFlvdSBXb24ndCBIYXRlXShodHRwczovL2FwaXN5b3V3b250aGF0ZS5jb20pLiBTcG9uc29yc2hpcCBoZWxwcyBjb3ZlciBjb3N0cyBhbmQgZW5hYmxlIGNvbnRpbnVlZCBkZXZlbG9wbWVudC4KCioqQmVuZWZpdHMgZm9yIHNwb25zb3JzOioqCgotIFByaW9yaXR5IHBsYWNlbWVudCBpbiBjYXRlZ29yeSBsaXN0aW5ncwotICJTcG9uc29yZWQiIGJhZGdlIG9uIHlvdXIgdG9vbAotIEVtYmVkZGFibGUgYmFkZ2VzIGZvciB5b3VyIHdlYnNpdGUgKFtzZWUgb3B0aW9uc10oaHR0cHM6Ly9vcGVuYXBpLnRvb2xzL2JhZGdlcykpCgpbQmVjb21lIGEgc3BvbnNvciDihpJdKGh0dHBzOi8vb3BlbmFwaS50b29scy9zcG9uc29yKQoKIyMgVGVjaCBTdGFjawoKLSBbQXN0cm9dKGh0dHBzOi8vYXN0cm8uYnVpbGQpIOKAlCBTdGF0aWMgc2l0ZSBnZW5lcmF0b3IKLSBbUmVhY3RdKGh0dHBzOi8vcmVhY3QuZGV2KSDigJQgSW50ZXJhY3RpdmUgY29tcG9uZW50cwotIFtUYWlsd2luZCBDU1NdKGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tKSDigJQgU3R5bGluZwotIFtOZXRsaWZ5XShodHRwczovL25ldGxpZnkuY29tKSDigJQgSG9zdGluZwoKIyMgTGljZW5zZQoKTUlUCg== readmeEtag: '"82d57db53266f3274deb72d2e40484ee91d2419f"' readmeLastModified: Thu, 08 Jan 2026 23:21:51 GMT repositoryId: 114417462 description: >- A collection of Editors, Linters, Parsers, Code Generators, Documentation, Testing created: '2017-12-15T22:51:00Z' updated: '2026-02-05T19:46:56Z' language: TypeScript archived: false stars: 807 watchers: 30 forks: 373 owner: apisyouwonthate logo: https://avatars.githubusercontent.com/u/35378327?v=4 license: MIT repoEtag: '"0645988c353fb1720e674be3d445339f0492dfdf0c4ecb08a58a205ce693304b"' repoLastModified: Thu, 05 Feb 2026 19:46:56 GMT foundInMaster: true category: Description Validators id: bf8b6a3a6298d701eabc857d42d5c371 v3_1: true - source: openapi3 tags repository: https://github.com/mermade/oas-kit v3: true repositoryMetadata: base64Readme: >- IyBPQVMtS2l0CgpUaGlzIGlzIHRoZSBtb25vLXJlcG8gZm9yIHRoZSBmb2xsb3dpbmcgcmVsYXRlZCBwcm9qZWN0cwoKKiBbc3dhZ2dlcjJvcGVuYXBpXShwYWNrYWdlcy9zd2FnZ2VyMm9wZW5hcGkvUkVBRE1FLm1kKQoqIFtvYXMtdmFsaWRhdG9yXShwYWNrYWdlcy9vYXMtdmFsaWRhdG9yL1JFQURNRS5tZCkKKiBbb2FzLWxpbnRlcl0ocGFja2FnZXMvb2FzLWxpbnRlci9SRUFETUUubWQpCiogW29hcy1yZXNvbHZlcl0ocGFja2FnZXMvb2FzLXJlc29sdmVyL1JFQURNRS5tZCkKKiBbb2FzLXNjaGVtYS13YWxrZXJdKHBhY2thZ2VzL29hcy1zY2hlbWEtd2Fsa2VyL1JFQURNRS5tZCkKKiBbb2FzLWtpdC1jb21tb25dKHBhY2thZ2VzL29hcy1raXQtY29tbW9uL1JFQURNRS5tZCkKKiBbcmVmdG9vbHNdKHBhY2thZ2VzL3JlZnRvb2xzL1JFQURNRS5tZCkKCiMjIERvY3VtZW50YXRpb24KCiogW01haW4gc2l0ZV0oaHR0cHM6Ly9tZXJtYWRlLmdpdGh1Yi5pby9vYXMta2l0KQoqIFtDSEFOR0VMT0ddKGh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL29hcy1raXQvYmxvYi9tYXN0ZXIvQ0hBTkdFTE9HLm1kI2NoYW5nZS1sb2cpCgojIyBPbmxpbmUgY29udmVydGVyL3ZhbGlkYXRvcgoKKiBbT3BlbkFQSS13ZWJjb252ZXJ0ZXJdKGh0dHBzOi8vbWVybWFkZS5vcmcudWsvb3BlbmFwaS1jb252ZXJ0ZXIpCgojIyBTdXBwb3J0ZWQgTm9kZS5qcyB2ZXJzaW9ucwoKQW55IExUUyB2ZXJzaW9uLiBJdCBpcyAqKm5vdCoqIHJlY29tbWVuZGVkIHRvIHVzZSBOb2RlLmpzIDEyLjE3LngsMTIuMTgueCBvciAxMi4xOS54IGR1ZSB0byBhbiBbaHR0cDIgYnVnXShodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvaXNzdWVzLzI4MDAxKS4KCiMjIERldmVsb3BtZW50CgoqIGNsb25lIHRoZSByZXBvc2l0b3J5CiogYG5wbSBpYCBpbiB0aGUgdG9wIGxldmVsIGRpcmVjdG9yeQoqIGBucHggbGVybmEgYm9vdHN0cmFwYAoKUGxlYXNlIHRyeSBhbmQga2VlcCBjb21taXRzIHJlbGF0ZWQgdG8gYSBzaW5nbGUgcGFja2FnZSBvciBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5LiBQbGVhc2UgcmV2aWV3IHRoZQpbQ09OVFJJQlVUSU5HLm1kXShDT05UUklCVVRJTkcubWQpIGZvciBhZGRpdGlvbmFsIGRldGFpbHMuCgojIyBTdXBwb3J0aW5nIGRldmVsb3BtZW50CgoqIFtBUElzLmd1cnUgb3Blbi1jb2xsZWN0aXZlXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcGVuYXBpLWRpcmVjdG9yeSkKKiBbTGlub2RlIFZQUyByZWZlcnJhbCBsaW5rXShodHRwczovL3d3dy5saW5vZGUuY29tLz9yPTU3MzRiZTQ2N2NjNTAxYjIzMjY3Y2Y2NmQ0NTFiYzMzOTA0MmRkZmEpCg== readmeEtag: '"cd704faeca79a10585a963bfa21eb1994069dc88"' readmeLastModified: Wed, 07 Jul 2021 12:13:38 GMT repositoryId: 71464935 description: Convert Swagger 2.0 definitions to OpenAPI 3.0 and resolve/validate/lint created: '2016-10-20T13:17:42Z' updated: '2026-01-21T09:06:09Z' language: JavaScript archived: false stars: 739 watchers: 13 forks: 119 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: BSD-3-Clause repoEtag: '"e322fec36c266205419b5f5fec838b52b48ebce78f71b7e04f8c1b02862f0234"' repoLastModified: Wed, 21 Jan 2026 09:06:09 GMT foundInMaster: true category: - Converters - Parsers id: 6f45c86bb645fe0967b0b35672cb2a57 oldLocations: - https://github.com/mermade/swagger2openapi - source: openapi3 tags name: API Sprout homepage: https://github.com/danielgtaylor/apisprout language: - cli - Docker source_description: >- Lightweight, blazing fast, cross-platform OpenAPI 3 mock server with validation category: - Mock - Server Implementations link: https://github.com/danielgtaylor/apisprout repository: https://github.com/danielgtaylor/apisprout v3: true repositoryMetadata: base64Readme: >- PGltZyBzcmM9Imh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEwNjgyNi80MzExOTQ5NC03OGJlOTIyNC04ZWNiLTExZTgtOWQxYS05ZmM2ZjMwMTRiOTEucG5nIiB3aWR0aD0iMzAwIiBhbHQ9IkFQSSBTcHJvdXQiLz4KClshW0dvIFJlcG9ydCBDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL2FwaXNwcm91dCldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL2FwaXNwcm91dCkgWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvZGFuaWVsZ3RheWxvci9hcGlzcHJvdXQuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvZGFuaWVsZ3RheWxvci9hcGlzcHJvdXQpIFshW0dpdEh1YiB0YWcgKGxhdGVzdCBTZW1WZXIpXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi90YWcvZGFuaWVsZ3RheWxvci9hcGlzcHJvdXQuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGd0YXlsb3IvYXBpc3Byb3V0L3JlbGVhc2VzKSBbIVtEb2NrZXIgUHVsbHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3B1bGxzL2RhbmllbGd0YXlsb3IvYXBpc3Byb3V0LnN2ZyldKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9kYW5pZWxndGF5bG9yL2FwaXNwcm91dC8pCgpBIHNpbXBsZSwgcXVpY2ssIGNyb3NzLXBsYXRmb3JtIEFQSSBtb2NrIHNlcnZlciB0aGF0IHJldHVybnMgZXhhbXBsZXMgc3BlY2lmaWVkIGluIGFuIEFQSSBkZXNjcmlwdGlvbiBkb2N1bWVudC4gRmVhdHVyZXMgaW5jbHVkZToKCi0gT3BlbkFQSSAzLnggc3VwcG9ydAogIC0gVXNlcyBvcGVyYXRpb24gYGV4YW1wbGVzYCBvciBnZW5lcmF0ZXMgZXhhbXBsZXMgZnJvbSBgc2NoZW1hYAotIExvYWQgZnJvbSBhIFVSTCBvciBsb2NhbCBmaWxlIChhdXRvIHJlbG9hZCB3aXRoIGAtLXdhdGNoYCkKLSBDT1JTIGhlYWRlcnMgZW5hYmxlZCBieSBkZWZhdWx0Ci0gQWNjZXB0IGhlYWRlciBjb250ZW50IG5lZ290aWF0aW9uCiAgLSBFeGFtcGxlOiBgQWNjZXB0OiBhcHBsaWNhdGlvbi8qYAotIFByZWZlciBoZWFkZXIgdG8gc2VsZWN0IHJlc3BvbnNlIHRvIHRlc3Qgc3BlY2lmaWMgY2FzZXMKICAtIEV4YW1wbGU6IGBQcmVmZXI6IHN0YXR1cz00MDlgCi0gU2VydmVyIHZhbGlkYXRpb24gKGVuYWJsZWQgd2l0aCBgLS12YWxpZGF0ZS1zZXJ2ZXJgKQogIC0gVmFsaWRhdGVzIHNjaGVtZSwgaG9zdG5hbWUvcG9ydCwgYW5kIGJhc2UgcGF0aAogIC0gU3VwcG9ydHMgYGxvY2FsaG9zdGAgb3V0IG9mIHRoZSBib3gKICAtIFVzZSB0aGUgYC0tYWRkLXNlcnZlcmAgZmxhZywgaW4gY29uanVuY3Rpb24gd2l0aCBgLS12YWxpZGF0ZS1zZXJ2ZXJgLCB0byBkeW5hbWljYWxseSBpbmNsdWRlIG1vcmUgc2VydmVycyBpbiB0aGUgdmFsaWRhdGlvbiBsb2dpYwotIFJlcXVlc3QgcGFyYW1ldGVyICYgYm9keSB2YWxpZGF0aW9uIChlbmFibGVkIHdpdGggYC0tdmFsaWRhdGUtcmVxdWVzdGApCi0gQ29uZmlndXJhdGlvbiB2aWE6CiAgLSBGaWxlcyAoYC9ldGMvYXBpc3Byb3V0L2NvbmZpZy5qc29ufHlhbWxgKQogIC0gRW52aXJvbm1lbnQgKHByZWZpeGVkIHdpdGggYFNQUk9VVF9gLCBlLmcuIGBTUFJPVVRfVkFMSURBVEVfU0VSVkVSYCkKICAtIENvbW1hbmRsaW5lIGZsYWdzCgpVc2FnZSBpcyBzaW1wbGU6CgpgYGBzaAojIExvYWQgZnJvbSBhIGxvY2FsIGZpbGUKYXBpc3Byb3V0IG15LWFwaS55YW1sCgojIFZhbGlkYXRlIHNlcnZlciBuYW1lIGFuZCB1c2UgYmFzZSBwYXRoCmFwaXNwcm91dCAtLXZhbGlkYXRlLXNlcnZlciBteS1hcGkueWFtbAoKIyBEeW5hbWljYWxseSBJbmNsdWRlIGEgbmV3IHNlcnZlciAvIHBhdGggaW4gdGhlIHZhbGlkYXRpb24KYXBpc3Byb3V0IC0tYWRkLXNlcnZlciBodHRwOi8vbG9jYWxob3N0OjgwODAvbW9jayAtLXZhbGlkYXRlLXNlcnZlciBteS1hcGkueWFtbAoKIyBMb2FkIGZyb20gYSBVUkwKYXBpc3Byb3V0IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL21hc3Rlci9leGFtcGxlcy92My4wL2FwaS13aXRoLWV4YW1wbGVzLnlhbWwKYGBgCgojIyBEb2NrZXIgSW1hZ2UKCkEgaG9zdGVkIFtBUEkgU3Byb3V0IERvY2tlciBpbWFnZV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2RhbmllbGd0YXlsb3IvYXBpc3Byb3V0LykgaXMgcHJvdmlkZWQgdGhhdCBtYWtlcyBpdCBlYXN5IHRvIGRlcGxveSBtb2NrIHNlcnZlcnMgb3IgcnVuIGxvY2FsbHkuIEZvciBleGFtcGxlOgoKYGBgc2gKZG9ja2VyIHB1bGwgZGFuaWVsZ3RheWxvci9hcGlzcHJvdXQKZG9ja2VyIHJ1biAtcCA4MDAwOjgwMDAgZGFuaWVsZ3RheWxvci9hcGlzcHJvdXQgaHR0cDovL2V4YW1wbGUuY29tL215LWFwaS55YW1sCmBgYAoKQ29uZmlndXJhdGlvbiBjYW4gYmUgcGFzc2VkIHZpYSBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGUuZy4gc2V0dGluZyBgU1BST1VUX1ZBTElEQVRFX1JFUVVFU1Q9MWAsIG9yIGJ5IHBhc3NpbmcgY29tbWFuZGxpbmUgZmxhZ3MuIEl0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIGEgbG9jYWwgQVBJIGRlc2NyaXB0aW9uIGZpbGUgdmlhIFtEb2NrZXIgVm9sdW1lc10oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vc3RvcmFnZS92b2x1bWVzLyk6CgpgYGAKIyBSZW1lbWJlciB0byBwdXQgdGhlIGZ1bGwgcGF0aCB0byBsb2NhbCBhcmNoaXZlIFlBTUwgaW4gLXYKZG9ja2VyIHJ1biAtcCA4MDAwOjgwMDAgLXYgJEZVTExQQVRIL2xvY2FsZmlsZS55YW1sOi9hcGkueWFtbCBkYW5pZWxndGF5bG9yL2FwaXNwcm91dCAvYXBpLnlhbWwKYGBgCgojIyBJbnN0YWxsYXRpb24KCkRvd25sb2FkIHRoZSBhcHByb3ByaWF0ZSBiaW5hcnkgZnJvbSB0aGUgW3JlbGVhc2VzXShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9hcGlzcHJvdXQvcmVsZWFzZXMpIHBhZ2UuCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSBgZ28gZ2V0YDoKCmBgYHNoCmdvIGdldCBnaXRodWIuY29tL2RhbmllbGd0YXlsb3IvYXBpc3Byb3V0CmBgYAoKIyMgRXh0cmEgRmVhdHVyZXMKCiMjIyBSZW1vdGUgUmVsb2FkCgpJZiB5b3VyIEFQSSBzcGVjIGlzIGxvYWRlZCBmcm9tIGEgcmVtb3RlIFVSTCwgeW91IGNhbiBsaXZlLXJlbG9hZCBpdCBieSBoaXR0aW5nIHRoZSBgL19fcmVsb2FkYCBlbmRwb2ludC4KCiMjIyBIZWFsdGggQ2hlY2sKCkEgc2ltcGxlIGVuZHBvaW50IHdoaWNoIHJldHVybnMgc3RhdHVzIGNvZGUgYDIwMGAgaXMgYXZhaWxhYmxlIGF0IGAvX19oZWFsdGhgLiBUaGlzIGVuZHBvaW50IHN1Y2Nlc3NmdWxseSByZXR1cm5zIGAyMDBgIGV2ZW4gaWYgYC0tdmFsaWRhdGUtc2VydmVyYCBpcyB0dXJuZWQgb24sIGFuZCB0aGUgZW5kcG9pbnQgaXMgYmVpbmcgYWNjZXNzZWQgZnJvbSBhIG5vbi12YWxpZGF0ZWQgaG9zdC4KCiMjIENvbnRyaWJ1dGluZwoKQ29udHJpYnV0aW9ucyBhcmUgdmVyeSB3ZWxjb21lLiBQbGVhc2Ugb3BlbiBhIHRyYWNraW5nIGlzc3VlIG9yIHB1bGwgcmVxdWVzdCBhbmQgd2UgY2FuIHdvcmsgdG8gZ2V0IHRoaW5ncyBtZXJnZWQgaW4uCgojIyBSZWxlYXNlIFByb2Nlc3MKClRoZSBmb2xsb3dpbmcgZGVzY3JpYmVzIHRoZSBzdGVwcyB0byBtYWtlIGEgbmV3IHJlbGVhc2Ugb2YgQVBJIFNwcm91dC4KCjEuIE1lcmdlIG9wZW4gUFJzIHlvdSB3YW50IHRvIHJlbGVhc2UuCjEuIFNlbGVjdCBhIG5ldyBzZW12ZXIgdmVyc2lvbiBudW1iZXIgKG1ham9yL21pbm9yL3BhdGNoIGRlcGVuZGluZyBvbiBjaGFuZ2VzKS4KMS4gVXBkYXRlIGBDSEFOR0VMT0cubWRgIHRvIGRlc2NyaWJlIGNoYW5nZXMuCjEuIENyZWF0ZSBhIGNvbW1pdCBmb3IgdGhlIHJlbGVhc2UuCjEuIFRhZyB0aGUgY29tbWl0IHdpdGggYGdpdCB0YWcgLWEgLW0gJ1RhZ2dpbmcgeC55LnogcmVsZWFzZScgdngueS56YC4KMS4gQnVpbGQgcmVsZWFzZSBiaW5hcmllcyB3aXRoIGAuL3JlbGVhc2Uuc2hgLgoxLiBQdXNoIHRoZSBjb21taXQgYW5kIHRhZ3MuCjEuIFVwbG9hZCB0aGUgcmVsZWFzZSBiaW5hcmllcy4KCiMjIExpY2Vuc2UKCkNvcHlyaWdodCAmY29weTsgMjAxOC0yMDE5IERhbmllbCBHLiBUYXlsb3IKCmh0dHA6Ly9kZ3QubWl0LWxpY2Vuc2Uub3JnLwo= readmeEtag: '"66a669d19eba31ae592125a14d05a92dc68fbd57"' readmeLastModified: Thu, 31 Oct 2019 06:11:48 GMT repositoryId: 142108855 description: >- Lightweight, blazing fast, cross-platform OpenAPI 3 mock server with validation created: '2018-07-24T05:29:01Z' updated: '2025-12-30T09:04:54Z' language: Go archived: false stars: 715 watchers: 11 forks: 73 owner: danielgtaylor logo: https://avatars.githubusercontent.com/u/106826?v=4 license: MIT repoEtag: '"fccefa3c5280336ea4de3cc0be9527660439e5edc01105dc28d5d8f1c857eb9e"' repoLastModified: Tue, 30 Dec 2025 09:04:54 GMT foundInMaster: true id: 1ceeb35cbfe549bf7ed38d6e576301db - source: - openapi3 tags - openapi31 tags repository: https://github.com/redocly/create-openapi-repo v3: true repositoryMetadata: base64Readme: >- IyBjcmVhdGUtb3BlbmFwaS1yZXBvCgpBIHRvb2wgZm9yIGdlbmVyYXRpbmcgbXVsdGktZmlsZSBPcGVuQVBJIGRlZmluaXRpb25zLgoKWyFbTlBNIHZlcnNpb25dW25wbS1pbWFnZV1dW25wbS11cmxdIFshW0RlcGVuZGVuY3kgU3RhdHVzXVtkYXZpZGRtLWltYWdlXV1bZGF2aWRkbS11cmxdCgo8cCBhbGlnbj0iY2VudGVyIj4KPGltZyBzcmM9Ii4vbG9nby5wbmciIHdpZHRoPSI1MDBweCIvPgo8L3A+CgpOZWVkIHRvIHdyaXRlIG9yIGNvbnRyaWJ1dGUgdG8gYW4gT3BlbkFQSSBkZWZpbml0aW9uPyBgY3JlYXRlLW9wZW5hcGktcmVwb2AgY2FuIGhlbHAgd2l0aCB0aGF0IQoKIyMgRmVhdHVyZXMKCiAtIE9wZW5BUEkgMy4wIHN1cHBvcnQKIC0gU3BsaXQgYW4gZXhpc3RpbmcgT3BlbkFQSSBkZWZpbml0aW9uIGludG8gbXVsdGlwbGUgZmlsZXMKIC0gQnVuZGxlIGEgbXVsdGktZmlsZSBkZWZpbml0aW9uIGludG8gYSBzaW5nbGUgZmlsZQogLSBWYWxpZGF0ZSB5b3VyIE9wZW5BUEkgZGVmaW5pdGlvbiB1c2luZyBvdXIgZnJlZSBbb3BlbmFwaS1jbGkgdG9vbF0oaHR0cHM6Ly9naXRodWIuY29tL3JlZG9jbHkvb3BlbmFwaS1jbGkpCiAtIEF1dG9tYXRlIGRlcGxveW1lbnQgb2YgeW91ciBBUEkgcmVmZXJlbmNlIGRvY3MgdXNpbmcgQ0kvQ0Qgd29ya2Zsb3dzCiAtIE1haW50YWluIGNvZGUgc2FtcGxlcyBhcyBzZXBhcmF0ZSBmaWxlcwogLSBMaXZlIGVkaXRpbmcgaW4geW91ciBlZGl0b3Igb2YgY2hvaWNlIDpoZWFydF9leWVzOgoKIyMgRXhhbXBsZXMKLSBbUmViaWxseV0oaHR0cHM6Ly9naXRodWIuY29tL1JlYmlsbHkvUmViaWxseUFQSSkKLSBbVGhpbmdmdWxdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGluZ2Z1bC9vcGVuYXBpLXNwZWMpCgojIyBQcmVyZXF1aXNpdGVzCgpCZWZvcmUgeW91IGJlZ2luLCBtYWtlIHN1cmUgeW91IGhhdmUgdGhlIGZvbGxvd2luZyBwcmVyZXF1aXNpdGVzOgoKIC0gW05vZGUuanNdKGh0dHBzOi8vbm9kZWpzLm9yZy8pCiAtIFtHaXRodWIgcmVwb3NpdG9yeV0oaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20vYXJ0aWNsZXMvY3JlYXRlLWEtcmVwby8jY3JlYXRlLWEtbmV3LXJlcG9zaXRvcnktb24tZ2l0aHViKSAobmV3IE9wZW5BUEkgZGVmaW5pdGlvbnMgb25seSkKCiMjIEluc3RhbGxhdGlvbgoKMS4gTmF2aWdhdGUgdG8gdGhlIGxvY2F0aW9uIHdoZXJlIHlvdSB3YW50IHRvIGNyZWF0ZSB0aGUgcmVwb3NpdG9yeS4KMi4gUnVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgogICAtIEluc3RhbGwgYGNyZWF0ZS1vcGVuYXBpLXJlcG9gIGdsb2JhbGx5OgoKICAgICAgICBgYGBiYXNoCiAgICAgICAgbnBtIGluc3RhbGwgLWcgY3JlYXRlLW9wZW5hcGktcmVwbwogICAgICAgIGBgYAoKICAgLSBJbnN0YWxsIGBjcmVhdGUtb3BlbmFwaS1yZXBvYCB1c2luZyBbYG5weGBdKGh0dHBzOi8vbWVkaXVtLmNvbS9AbWF5YmVrYXR6L2ludHJvZHVjaW5nLW5weC1hbi1ucG0tcGFja2FnZS1ydW5uZXItNTVmN2Q0YmQyODJiKToKCiAgICAgICAgYGBgYmFzaAogICAgICAgIG5weCBjcmVhdGUtb3BlbmFwaS1yZXBvCiAgICAgICAgYGBgCgozLiBGb2xsb3cgdGhlIFtpbnRlcmFjdGl2ZSBwcm9tcHRzXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9jcmVhdGUtb3BlbmFwaS1yZXBvI3VzYWdlKSB0byBjb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uLgoKIyMjIFVwZ3JhZGluZyBmcm9tIGEgcHJpb3IgdmVyc2lvbgoKVG8gdXBncmFkZSBmcm9tIGEgcHJpb3IgdmVyc2lvbiBvZiBgY3JlYXRlLW9wZW5hcGktcmVwb2AsIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgaW4gdGhlIHJvb3QgZm9sZGVyIG9mIHlvdXIgcmVwb3NpdG9yeToKCmBgYGJhc2gKbnB4IGNyZWF0ZS1vcGVuYXBpLXJlcG8gLS1taWdyYXRlLTItMwpgYGAKCioqTm90ZToqKiBQbHVnaW5zIGFyZW4ndCBpbmNsdWRlZCBpbiB0aGUgbWlncmF0aW9uLiBZb3UnbGwgbmVlZCB0byBtYW51YWxseSBhZGQgdGhlbSB0byB0aGUgYHRyYW5zZm9ybWVyc2AgZm9sZGVyLgoKIyMgVXNhZ2UKCmBjcmVhdGUtb3BlbmFwaS1yZXBvYCBwcm92aWRlcyBpbnRlcmFjdGl2ZSBwcm9tcHRzIHRvIGhlbHAgZ3VpZGUgeW91IHRocm91Z2ggdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLiBUd28gYmFzaWMgd29ya2Zsb3dzIGFyZSBzdXBwb3J0ZWQ6CgojIyMgU3BsaXQgYW4gZXhpc3RpbmcgT3BlbkFQSSBkZWZpbml0aW9uCgpUaGUgaW50ZXJhY3RpdmUgcHJvbXB0cyBhbGxvdyB5b3UgdG8gc3BlY2lmeSB0aGUgcGF0aCB0byB0aGUgZmlsZSBvbiB5b3VyIGxvY2FsIG1hY2hpbmUsIGFzIHdlbGwgYXMgcmVuYW1lIHRoZSBBUEkgKG9wdGlvbmFsKS4gQWZ0ZXIgeW91IGNob29zZSB0byBwcm9jZWVkLCBgY3JlYXRlLW9wZW5hcGktcmVwb2AgaW5pdGlhbGl6ZXMgdGhlIHJlcG9zaXRvcnkgYW5kIHNwbGl0cyB5b3VyIE9wZW5BUEkgZGVmaW5pdGlvbiBpbnRvIG11bHRpcGxlIGZpbGVzLgoKIyMjIENyZWF0ZSBhIG5ldyBPcGVuQVBJIGRlZmluaXRpb24KClRoZSBpbnRlcmFjdGl2ZSBwcm9tcHRzIGFsbG93IHlvdSB0byBzcGVjaWZ5IGEgbmFtZSBmb3IgdGhlIEFQSSBhbmQgY2hvb3NlIHdoZXRoZXIgdG8gY3JlYXRlIGEgc3ViLWZvbGRlciBmb3IgY29kZSBzYW1wbGUgZmlsZXMuIEFmdGVyIHlvdSBjaG9vc2UgdG8gcHJvY2VlZCwgYGNyZWF0ZS1vcGVuYXBpLXJlcG9gIGluaXRpYWxpemVzIHRoZSByZXBvc2l0b3J5IGFuZCBwb3B1bGF0ZXMgaXQgd2l0aCBwbGFjZWhvbGRlciBmaWxlcyBhbmQgZm9sZGVycy4gCgojIyBEaXJlY3Rvcnkgc3RydWN0dXJlCgpUaGUgZGlyZWN0b3J5IHN0cnVjdHVyZSB3aWxsIGxvb2sgc2ltaWxhciB0byB0aGlzOgoKKipOb3RlOioqIFlvdSBjYW4gbW9kaWZ5IHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIHRvIG1lZXQgeW91ciBzcGVjaWZpYyByZXF1aXJlbWVudHMuCgpgYGAKICAgIOKUnOKUgOKUgCAucmVkb2NseS55YW1sCiAgICDilJzilIDilIAgTElDRU5TRQogICAg4pSc4pSA4pSAIFJFQURNRS5tZAogICAg4pSc4pSA4pSAIGRvY3MKICAgIOKUgiAgIOKUnOKUgOKUgCBmYXZpY29uLnBuZwogICAg4pSCICAg4pSU4pSA4pSAIGluZGV4Lmh0bWwKICAgIOKUnOKUgOKUgCBvcGVuYXBpCiAgICDilIIgICDilJzilIDilIAgUkVBRE1FLm1kCiAgICDilIIgICDilJzilIDilIAgY29kZV9zYW1wbGVzCiAgICDilIIgICDilIIgICDilJzilIDilIAgQyMKICAgIOKUgiAgIOKUgiAgIOKUgiAgIOKUlOKUgOKUgCBlY2hvCiAgICDilIIgICDilIIgICDilIIgICAgICAg4pSU4pSA4pSAIHBvc3QuY3MKICAgIOKUgiAgIOKUgiAgIOKUnOKUgOKUgCBQSFAKICAgIOKUgiAgIOKUgiAgIOKUgiAgIOKUlOKUgOKUgCBlY2hvCiAgICDilIIgICDilIIgICDilIIgICAgICAg4pSU4pSA4pSAIHBvc3QucGhwCiAgICDilIIgICDilIIgICDilJTilIDilIAgUkVBRE1FLm1kCiAgICDilIIgICDilJzilIDilIAgY29tcG9uZW50cwogICAg4pSCICAg4pSCICAg4pSU4pSA4pSAIFJFQURNRS5tZAogICAg4pSCICAg4pSU4pSA4pSAIHBhdGhzCiAgICDilIIgICAgICAg4pSU4pSA4pSAIFJFQURNRS5tZAogICAg4pSU4pSA4pSAIHBhY2thZ2UuanNvbgpgYGAKCiAtIGAucmVkb2NseS55YW1sYDogQ29uZmlndXJhdGlvbiBmaWxlIGZvciBkZWZpbmluZyBzZXR0aW5ncyBmb3IgdmFyaW91cyBSZWRvY2x5IHRvb2xzLCBpbmNsdWRpbmcgdGhlIGxpbnQgdG9vbCBhbmQgcmVmZXJlbmNlIGRvY3MgZW5naW5lLgogLSBgb3BlbmFwaWA6IFRvcC1sZXZlbCBmb2xkZXIgdGhhdCBjb250YWlucyB5b3VyIE9wZW5BUEkgZGVmaW5pdGlvbiwgYG9wZW5hcGkueWFtbGAgZW50cnlwb2ludCBmaWxlLCBhbmQgc3ViLWZvbGRlcnMgZm9yIGBwYXRoc2AsIGBjb21wb25lbnRzYCwgYW5kIGBjb2RlX3NhbXBsZXNgLgogLSBgY29kZV9zYW1wbGVzYDogRm9sZGVyIGZvciBvcmdhbml6aW5nIGNvZGUgc2FtcGxlcyBpbnRvIHN1Yi1mb2xkZXJzLCBzdWNoIGFzIEMjIGFuZCBQSFAuCiAtIGBjb21wb25lbnRzYDogRm9sZGVyIGZvciBvcmdhbml6aW5nIHJldXNhYmxlIGNvbXBvbmVudHMgaW50byBzdWItZm9sZGVycywgc3VjaCBhcyBgc2NoZW1hYCBhbmQgYHJlc3BvbnNlYCBvYmplY3RzLgogLSBgcGF0aHNgOiBGb2xkZXIgZm9yIG9yZ2FuaXppbmcgcGF0aCBkZWZpbml0aW9ucy4gRWFjaCBwYXRoIHNob3VsZCBiZSByZWZlcmVuY2VkIGZyb20gdGhlIGBvcGVuYXBpLnlhbWxgIGVudHJ5cG9pbnQgZmlsZS4KCiMjIENvbW1hbmRzCgpUaGUgZ2VuZXJhdGVkIHJlcG9zaXRvcnkgaW5zdGFsbHMgYSBkZXBlbmRlbmN5IGZvciBvdXIgYHJlZG9jbHktY2xpYCB0b29sIHdoaWNoIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CgogLSBgbnBtIHN0YXJ0YDogU3RhcnRzIHRoZSBwcmV2aWV3IHNlcnZlcgogLSBgbnBtIHJ1biBidWlsZGA6IEJ1bmRsZXMgYSBtdWx0aS1maWxlIE9wZW5BUEkgZGVmaW5pdGlvbiBpbnRvIGEgc2luZ2xlIGZpbGUKIC0gYG5wbSB0ZXN0YDogVmFsaWRhdGVzIHRoZSBPcGVuQVBJIGRlZmluaXRpb24KCioqTm90ZToqKiBBZGRpdGlvbmFsIHNjcmlwdGVkIHNob3J0Y3V0cyBhcmUgZGVmaW5lZCBpbiB0aGUgcmVwb3NpdG9yeSdzIGBwYWNrYWdlLmpzb25gIGZpbGUuCgojIyBDb250cmlidXRlCgpJbnRlcmVzdGVkIGluIGNvbnRyaWJ1dGluZyB0byB0aGlzIHByb2plY3Q/IEhlcmUgYXJlIHNvbWUgd2F5cyB5b3UgY2FuIHN1cHBvcnQgdXM6CgogLSBTdWJtaXQgYSBwdWxsIHJlcXVlc3QuCiAtIFN0YXIgdXMgb24gR2l0aHViLgogLSBUZWxsIGEgZnJpZW5kIG9yIGNvbGxlYWd1ZSBhYm91dCB1cyAob3IgVHdlZXQgYWJvdXQgdXMpLgogLSBXcml0ZSBhbiBhcnRpY2xlIG9yIGJsb2cgcG9zdC4gTGV0IHVzIGtub3cgYnkgb3BlbmluZyBhbiBpc3N1ZSB3aXRoIGEgbGluayB0byB0aGUgYXJ0aWNsZS4KIC0gTG9va2luZyB0byBidWlsZCBhIG1vZGVybiBkb2N1bWVudGF0aW9uIHdvcmtmbG93PyBPdXIgW2NvbW1lcmNpYWwgcHJvZHVjdHNdKGh0dHBzOi8vcmVkb2MubHkpIGNhbiBoZWxwIHlvdSBtYWludGFpbiBhbmQgZGVwbG95IEFQSSByZWZlcmVuY2UgZG9jcyBhbmQgZGV2ZWxvcGVyIHBvcnRhbHMuCgpbbnBtLWltYWdlXTogaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL2dlbmVyYXRvci1vcGVuYXBpLXJlcG8uc3ZnCltucG0tdXJsXTogaHR0cHM6Ly9ucG1qcy5vcmcvcGFja2FnZS9nZW5lcmF0b3Itb3BlbmFwaS1yZXBvCltkYXZpZGRtLWltYWdlXTogaHR0cHM6Ly9kYXZpZC1kbS5vcmcvUmViaWxseS9nZW5lcmF0b3Itb3BlbmFwaS1yZXBvLnN2Zz90aGVtZT1zaGllbGRzLmlvCltkYXZpZGRtLXVybF06IGh0dHBzOi8vZGF2aWQtZG0ub3JnL1JlYmlsbHkvZ2VuZXJhdG9yLW9wZW5hcGktcmVwbwo= readmeEtag: '"fb93a46a6a07aa48f1014b29af30d0c056858f5e"' readmeLastModified: Tue, 09 Jul 2024 12:48:45 GMT repositoryId: 58973101 description: >- 🤖 Generator for GH repo to help you manage the OpenAPI definition lifecycle created: '2016-05-16T22:45:23Z' updated: '2026-02-04T05:17:36Z' language: JavaScript archived: false stars: 691 watchers: 21 forks: 111 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT repoEtag: '"312fd1e5d2ac176d9d8df5cd78923046f8a6899496f5a78956ce0068e751d55e"' repoLastModified: Wed, 04 Feb 2026 05:17:36 GMT foundInMaster: true v3_1: true category: - Code Generators - Parsers id: 63b494773063a90f98a1731dc9061bec oldLocations: - https://github.com/rebilly/generator-openapi-repo - source: openapi3 tags repository: https://github.com/apis-guru/awesome-openapi3 v3: true repositoryMetadata: base64Readme: >- IyBhd2Vzb21lLW9wZW5hcGkzIFshW0F3ZXNvbWVdKGh0dHBzOi8vY2RuLnJhd2dpdC5jb20vc2luZHJlc29yaHVzL2F3ZXNvbWUvZDczMDVmMzhkMjlmZWQ3OGZhODU2NTJlM2E2M2UxNTRkZDhlODgyOS9tZWRpYS9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL2F3ZXNvbWUpCkEgbGlzdCBvZiBhd2Vzb21lIHByb2plY3RzIHJlbGF0ZWQgdG8gT3BlbkFQSSAzLjAueC4KCjxkaXYgYWxpZ249ImNlbnRlciI+CiAgPGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL2F3ZXNvbWUtb3BlbmFwaTMvYmxvYi9tYXN0ZXIvb3BlbmFwaV9hd2Vzb21lMS5wbmc/cmF3PXRydWUiLz4KICA8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0FQSXMtZ3VydS9vcGVuYXBpLWRpcmVjdG9yeS9tYXN0ZXIvYnJhbmRpbmcvaWNvbi05Nng5Ni5wbmciLz4KPC9kaXY+CgpXaHkgbm90IG1ha2UgeW91ciBwcm9qZWN0IGRpc2NvdmVyYWJsZSBieSB1c2luZyB0aGUgdG9waWMgW29wZW5hcGkzXShodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP3V0Zjg9JUUyJTlDJTkzJnE9dG9waWMlM0FvcGVuYXBpMyZ0eXBlPVJlcG9zaXRvcmllcyZyZWY9YWR2c2VhcmNoJmw9Jmw9KSBvbiBHaXRIdWIgYW5kIHVzaW5nIHRoZSBoYXNodGFncyAqKiNvcGVuYXBpMyoqIGFuZCAqKiNPQVN2MyoqIG9uIHNvY2lhbCBtZWRpYT8KCiMjIFRvb2xzCgoqIFBsZWFzZSBzZWUgW0FQSXMuZ3VydSBBd2Vzb21lLU9wZW5BUEkzXShodHRwczovL2FwaXMuZ3VydS9hd2Vzb21lLW9wZW5hcGkzLykKCiMjIENvbnRyaWJ1dGluZwoKVGhlIGJlc3Qgd2F5IHRvIGdldCB5b3VyIHByb2plY3QgYWRkZWQgdG8gdGhlIGxpc3QgaXMgdG8gdGFnIGl0IHdpdGggdGhlIGdpdGh1YiB0b3BpYyBgb3BlbmFwaTNgLiAKClB1bGwgcmVxdWVzdHMgc2hvdWxkIG9ubHkgYmUgZm9yIHZpc3VhbCAvIGZ1bmN0aW9uYWwgY2hhbmdlcywgb3IgcHJvamVjdHMvcHJvZHVjdHMgbm90IGhvc3RlZCBvbiBHaXRIdWIuCgojIyBBUEkgQWNjZXNzCgoqIFtjYXRlZ29yaWVzLmpzb25dKGh0dHBzOi8vYXBpcy5ndXJ1L2F3ZXNvbWUtb3BlbmFwaTMvYXBpL2NhdGVnb3JpZXMuanNvbikKKiBbdG9vbHMuanNvbl0oaHR0cHM6Ly9hcGlzLmd1cnUvYXdlc29tZS1vcGVuYXBpMy9hcGkvdG9vbHMuanNvbikKClRoZSByYXcgZGF0YSBjb250YWlucyBPcGVuQVBJIDIuMCBhbmQgU3dhZ2dlciAxLngtcmVsYXRlZCBwcm9qZWN0cy4KCiMjIFJTUyBGZWVkCgoqIFtmZWVkLnhtbF0oaHR0cHM6Ly9hcGlzLmd1cnUvYXdlc29tZS1vcGVuYXBpMy9yc3MvZmVlZC54bWwpCgo= readmeEtag: '"65628e18be602c1fee2850522453b55ca1181446"' readmeLastModified: Sun, 16 Apr 2023 14:15:56 GMT repositoryId: 83716646 description: >- 😎 A list of awesome projects related to OpenAPI 3.0.x, curated by the community created: '2017-03-02T19:31:41Z' updated: '2026-02-06T00:03:58Z' language: JavaScript archived: false stars: 697 watchers: 32 forks: 60 owner: APIs-guru logo: https://avatars.githubusercontent.com/u/10975548?v=4 license: BSD-3-Clause repoEtag: '"82791c657f55a8e2a6801184f95f22f7d3993748cbb80dd9857cd2d47b4ccff7"' repoLastModified: Fri, 06 Feb 2026 00:03:58 GMT foundInMaster: true category: Parsers id: 64d4029fd6b82879b746263cac7ce274 - source: openapi3 tags repository: https://github.com/cdimascio/generator-express-no-stress v3: true repositoryMetadata: base64Readme: >- IyDwn5qCIGdlbmVyYXRvci1leHByZXNzLW5vLXN0cmVzcwoKIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvc3RhdHVzLXN0YWJsZS1ncmVlbi5zdmcpICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L2dlbmVyYXRvci1leHByZXNzLW5vLXN0cmVzcy5zdmcpIFshW0NvZGFjeSBCYWRnZV0oaHR0cHM6Ly9hcGkuY29kYWN5LmNvbS9wcm9qZWN0L2JhZGdlL0dyYWRlLzU2YzAwNmNjYzQ0YzQ3ZjQ5ZDEyYjZiMzVmY2YzNWRhKV0oaHR0cHM6Ly93d3cuY29kYWN5LmNvbS9hcHAvY2RpbWFzY2lvL2dlbmVyYXRvci1leHByZXNzLW5vLXN0cmVzcz91dG1fc291cmNlPWdpdGh1Yi5jb20mdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY29udGVudD1jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzJnV0bV9jYW1wYWlnbj1CYWRnZV9HcmFkZSkgWyFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdHRlci9yb29tL2NkaW1hc2Npby1vc3MvY29tbXVuaXR5P2NvbG9yPSUyM2ViMjA1YSldKGh0dHBzOi8vZ2l0dGVyLmltL2NkaW1hc2Npby1vc3MvY29tbXVuaXR5KSBbIVtBbGwgQ29udHJpYnV0b3JzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2FsbF9jb250cmlidXRvcnMtNC1vcmFuZ2Uuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oI2NvbnRyaWJ1dG9ycy0pICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWJsdWUuc3ZnKQoKQ3JlYXRlIGF3ZXNvbWUgW0V4cHJlc3MuanNdKGh0dHA6Ly93d3cuZXhwcmVzc2pzLmNvbSkgYXBwbGljYXRpb25zIHdpdGggYmVzdCBvZiBicmVlZCB0ZWNoIGluY2x1ZGluZyBFUy5uZXh0IHZpYSBbQmFiZWwuanNdKGh0dHBzOi8vYmFiZWxqcy5pby8pLCBzdHJ1Y3R1cmVkIGxvZ2dpbmcgd2l0aCBbUGlub10oaHR0cHM6Ly9naXRodWIuY29tL3Bpbm9qcy9waW5vKSwgQVBJIHZhbGlkYXRpb24gYW5kIGludGVyYWN0aXZlIGRvY3VtZW50YXRpb24gdXNpbmcgYW4gW09wZW5BUEkgMy54XShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pLCBlbnZpcm9ubWVudCBiYXNlZCBjb25maWcgd2l0aCBbZG90ZW52XShodHRwczovL2dpdGh1Yi5jb20vbW90ZG90bGEvZG90ZW52KSwgYW5kIGxpbnRpbmcgd2l0aCBbRVNMaW50XShodHRwOi8vZXNsaW50Lm9yZy8pLgoKWyFbR2l0SHViIHN0YXJzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9zdGFycy9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLnN2Zz9zdHlsZT1zb2NpYWwmbGFiZWw9U3RhciZtYXhBZ2U9MjU5MjAwMCldKGh0dHBzOi8vR2l0SHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzL3N0YXJnYXplcnMvKSBbIVtUd2l0dGVyIFVSTF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90d2l0dGVyL3VybC9odHRwcy9naXRodWIuY29tL2NkaW1hc2Npby9nZW5lcmF0b3ItZXhwcmVzcy1uby1zdHJlc3Muc3ZnP3N0eWxlPXNvY2lhbCldKGh0dHBzOi8vdHdpdHRlci5jb20vaW50ZW50L3R3ZWV0P3RleHQ9Q2hlY2slMjBvdXQlMjBleHByZXNzLW5vLXN0cmVzcyUyMGJ5JTIwJTQwQ2FybWluZURpTWFzY2lvJTIwaHR0cHMlM0ElMkYlMkZnaXRodWIuY29tJTJGY2RpbWFzY2lvJTJGZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzJTIwJUYwJTlGJTkxJThEKQoKPHAgYWxpZ249ImNlbnRlciI+CjxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY2RpbWFzY2lvL2dlbmVyYXRvci1leHByZXNzLW5vLXN0cmVzcy9tYXN0ZXIvYXNzZXRzL2V4cHJlc3Mtbm8tc3RyZXNzLWxvZ28tdi5wbmciPgo8L3A+CgpnZW5lcmF0b3ItZXhwcmVzcy1uby1zdHJlc3MgZ2V0cyB5b3UgdXAgYW5kIHJ1bm5pbmcgaW4gc2Vjb25kcy4gSXQncyByaWRpY3Vsb3VzbHkgZWFzeSB0byBjb25maWd1cmUuIEhlY2ssIGp1c3QgdGFrZSB0aGUgZGVmYXVsdHMuIFN0YXJ0IGl0LiBXcml0ZSBjb2RlLgoKVGhpcyBnZW5lcmF0b3Igc2NhZmZvbGRzIGEgZnVsbHkgZnVuY3Rpb25pbmcgUkVTVCBBUEkgc2VydmVyLCBjb21wbGV0ZSB3aXRoIGludGVyYWN0aXZlIGRvY3VtZW50YXRpb24sIEFQSSByZXF1ZXN0IGFuZCByZXNwb25zZSB2YWxpZGF0aW9uLCBzdHJ1Y3R1cmVkIGxvZ2dpbmcsIGVudmlyb25tZW50IGRyaXZlbiBjb25maWcsIGFuZCBtb3JlLiBTaW1wbHkgcnVuIHRoZSBnZW5lcmF0b3IgYW5kIHNtaWxlIDotRAoKW0hlcmUncyB3aGF0IHlvdSBnZXQhXSgjd2hhdC15b3UtZ2V0KQoKIyMgSW5zdGFsbAoKX1JlcXVpcmVzIE5vZGUgOCBvciBncmVhdGVyXwoKYGBgc2hlbGwKbnBtIGluc3RhbGwgLWcgeW9ANC4zLjAgZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzCmBgYAoKLSBTZWUgW2hlcmVdKCN1c2FnZS1jbGkpIGZvciB1c2Ugd2l0aCBZYXJuIGFuZC9vciBEb2NrZXIKLSBTZWUgW2hlcmVdKCNmYXFzKSBmb3IgTm9kZSA2IHN1cHBvcnQKCiMjIFNjYWZmb2xkCgpgYGBzaGVsbAp5byBleHByZXNzLW5vLXN0cmVzcyBteWFwcApjZCBteWFwcApgYGAKCiMjIFJ1bgoKUnVuIGluIF9kZXZlbG9wbWVudCBtb2RlXzoKCmBgYHNoZWxsCm5wbSBydW4gZGV2CmBgYAoKUGFja2FnZSBhbmQgcnVuIGluIF9wcm9kdWN0aW9uIG1vZGVfCgpgYGBzaGVsbApucG0gc3RhcnQKYGBgCgojIyBUZXN0CgpgYGBzaGVsbApucG0gdGVzdApgYGAKCiMjIERlYnVnCgpSdW4gb25lIG9mIHRoZSBmb2xsb3dpbmcsIHRoZW4gYXR0YWNoIHlvdXIgZmF2b3JpdGUgaW5zcGVjdG9yIGUuZy4gW1ZTQ29kZV0oI2RlYnVnLWluLXZzY29kZSk6CgpgYGBzaGVsbAojIGRlYnVnIHRoZSBzZXJ2ZXIKbnBtIHJ1biBkZXY6ZGVidWcKCiMgZGVidWcgdGhlIHRlc3RzCm5wbSBydW4gdGVzdDpkZWJ1ZwpgYGAKCiMjIFRyeSBpdCEKCi0gSW50ZXJhY3RpdmUgQVBJIGRvYyBhdCBbaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaS1leHBsb3Jlcl0oaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaS1leHBsb3JlcikKLSBMYW5kaW5nIHBhZ2UgYXQgW2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMF0oaHR0cDovL2xvY2FsaG9zdDozMDAwKQoKLS0tCgojIyBVc2FnZTogQ0xJCgpgYGBzaGVsbAp5byBleHByZXNzLW5vLXN0cmVzcyBbYXBwbmFtZV0gWy0teWFybl0gWy0tZG9ja2VyXQpgYGAKCnwgT3B0aW9uICAgICB8IGRlZmF1bHQgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgYGFwcG5hbWVgICB8IG15YXBwICAgfCBUaGUgYXBwbGljYXRpb24gZm9sZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYC0teWFybmAgICB8IC0gICAgICAgfCBVc2UgdGhlIFtgeWFybmBdKGh0dHBzOi8veWFybnBrZy5jb20pIHBhY2thZ2UgbWFuYWdlciwgaW5zdGVhZCBvZiBgbnBtYCAgICB8CnwgYC0tZG9ja2VyYCB8ICAgICAgICAgfCBJbnN0YWxsIFtEb2NrZXJdKGh0dHBzOi8vd3d3LmRvY2tlci5jb20vKSBhcnRpZmFjdHMgaW5jbHVkaW5nIGEgRG9ja2VyZmlsZSB8CgojIyBVc2FnZTogUHJvamVjdAoKVGhlIHNlY3Rpb25zIGJlbG93IGRlc2NyaWJlIGFsbCB1c2FnZSBvcHRpb25zIGF2YWlsYWJsZSBvbmNlIHRoZSBwcm9qZWN0IGlzIGdlbmVyYXRlZC9zY2FmZm9sZGVkLgoKIyMjIG5wbSB0YXJnZXRzCgp8IFRhcmdldCAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgYG5wbSBydW4gZGV2YCAgICAgICAgfCBSdW4gaW4gX2RldmVsb3BtZW50XyBtb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBucG0gcnVuIGRldjpkZWJ1Z2AgIHwgRGVidWcgaW4gX2RldmVsb3BtZW50XyBtb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgbnBtIHJ1biB0ZXN0YCAgICAgICB8IFJ1biB0ZXN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYG5wbSBydW4gdGVzdDpkZWJ1Z2AgfCBEZWJ1ZyB0ZXN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBucG0gcnVuIGxpbnRgICAgICAgIHwgVmlldyBhIGxpc3Rpbmcgb2YgYWxsIGVycm9ycyBkaXNjb3ZlcmVkIGJ5IHRoZSBsaW50ZXIgICAgICAgICAgICAgICAgICAgIHwKfCBgbnBtIHJ1biBsaW50OmZpeGAgICB8IEZpeCBhbGwgZXJyb3JzIGRpc2NvdmVyZWQgYnkgdGhlIGxpbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYG5wbSBzdGFydGAgICAgICAgICAgfCBSdW4gdGhlIGluIF9wcm9kdWN0aW9uXyBtb2RlLiB8CgojIyMgRGVidWcgaW4gVlNDb2RlCgpBZGQgdGhlc2UgW2NvbnRlbnRzXShodHRwczovL2dpdGh1Yi5jb20vY2RpbWFzY2lvL2dlbmVyYXRvci1leHByZXNzLW5vLXN0cmVzcy9ibG9iL25leHQvYXNzZXRzLy52c2NvZGUvbGF1bmNoLmpzb24pIHRvIHlvdXIgYC52c2NvZGUvbGF1bmNoLmpzb25gIGZpbGUKCiMjIyBEZWJ1ZyBpbiBXZWJTdG9ybQoKMS4gU3RhcnQgZGVidWcgaW4gX2RldmVsb3BtZW50XyBtb2RlIHZpYSBgbnBtIHJ1biBkZXY6ZGVidWdgCjIuIEZyb20gdGhlICJSdW4iIG1lbnUsIHNlbGVjdCAiRGVidWciCjMuIFNlbGVjdCAiRWRpdCBDb25maWd1cmF0aW9ucy4uLiIKNC4gRnJvbSB0aGUgbGlzdCBvZiBUZW1wbGF0ZXMgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGlhbG9nLCBzZWxlY3QgIkF0dGFjaCB0byBOb2RlLmpzL0Nocm9tZSIKNS4gUHJlc3MgdGhlICJEZWJ1ZyIgYnV0dG9uIHRvIGF0dGFjaCB0aGUgV2ViU3Rvcm0gZGVidWdnZXIKCgojIyMgRGVwbG95IHRvIHRoZSBDbG91ZAoKZS5nLiBDbG91ZEZvdW5kcnkKCmBgYApjZiBwdXNoIG15YXBwCmBgYAoKIyMjIFVzZSBZYXJuCgpgYGAKIyBzY2FmZm9sZAp5byBleHByZXNzLW5vLXN0cmVzcyBteWFwcCAtLXlhcm4KY2QgbXlhcHAKCiMgcnVuIGluIGRldmVsb3BtZW50IG1vZGUKeWFybiBydW4gZGV2CgojIHJ1biBpbiBwcm9kdWN0aW9uIG1vZGUKeWFybiBzdGFydAoKIyB0ZXN0Cnlhcm4gdGVzdApgYGAKCi0tLQoKIyMgV2hhdCB5b3UgZ2V0IQoKLSBbRXhwcmVzcy5qc10oaHR0cDovL3d3dy5leHByZXNzanMuY29tKSAtIEZhc3QsIHVub3BpbmlvbmF0ZWQKICAsIG1pbmltYWxpc3Qgd2ViIGZyYW1ld29yayBmb3IgTm9kZS5qcwotIFtQaW5vXShodHRwczovL2dpdGh1Yi5jb20vcGlub2pzL3Bpbm8pIC0gRXh0cmVtZWx5IGZhc3Qgbm9kZS5qcyBsb2dnZXIsIGluc3BpcmVkIGJ5IEJ1bnlhbi4gSXQgYWxzbyBpbmNsdWRlcyBhIHNoZWxsIHV0aWxpdHkgdG8gcHJldHR5LXByaW50IGl0cyBsb2cgZmlsZXMKLSBbZG90ZW52XShodHRwczovL2dpdGh1Yi5jb20vbW90ZG90bGEvZG90ZW52KSAtIExvYWRzIGVudmlyb25tZW50IHZhcmlhYmxlcyBmcm9tIC5lbnYgZm9yIG5vZGVqcyBwcm9qZWN0cwotIFtFU0xpbnRdKGh0dHA6Ly9lc2xpbnQub3JnLykgLSBhIHBsdWdnYWJsZSBsaW50aW5nIHV0aWxpdHkgZm9yIEphdmFTY3JpcHQgYW5kIEpTWAoKICBDaG9vc2UgZnJvbSB0aGUgZm9sbG93aW5nIEVTTGludCBsaW50IHJ1bGVzOgoKICAgICAtIFtBaXJibmJdKGh0dHBzOi8vZ2l0aHViLmNvbS9haXJibmIvamF2YXNjcmlwdCkgLSBBIG1vc3RseSByZWFzb25hYmxlIGFwcHJvYWNoIHRvIEphdmFTY3JpcHQKICAgICAtIFtQcmV0dGllcl0oaHR0cHM6Ly9naXRodWIuY29tL3ByZXR0aWVyL3ByZXR0aWVyKSAtIFByZXR0aWVyIGlzIGFuIG9waW5pb25hdGVkIGNvZGUgZm9ybWF0dGVyCgotIFtTd2FnZ2VyXShodHRwOi8vc3dhZ2dlci5pby8pIC0gaXMgYSBzaW1wbGUgeWV0IHBvd2VyZnVsIHJlcHJlc2VudGF0aW9uIG9mIHlvdXIgUkVTVGZ1bCBBUEkKLSBbU3dhZ2dlclVJXShodHRwOi8vc3dhZ2dlci5pby8pIC0gZHluYW1pY2FsbHkgZ2VuZXJhdGUgYmVhdXRpZnVsIGRvY3VtZW50YXRpb24gYW5kIHNhbmRib3ggZnJvbSBhIFN3YWdnZXItY29tcGxpYW50IEFQSQoKIyMjIEFQSSBWYWxpZGF0aW9uCgpTaW1wbHkgZGVzY3JpYmUgeW91ciBBUElzIHdpdGggU3dhZ2dlciBhbmQgYXV0b21hZ2ljYWxseSBnZXQgZm9yIGZyZWU6CgotIEludGVyYWN0aXZlIGRvY3VtZW50YXRpb24KLSBBUEkgcmVxdWVzdCB2YWxpZGF0aW9uIChPcGVuQVBJIDMueCkKLSBBUEkgcmVzcG9uc2UgdmFsaWRhdGlvbgogIC0gVG8gZW5hYmxlIHNldCBgT1BFTkFQSV9FTkFCTEVfUkVTUE9OU0VfVkFMSURBVElPTj10cnVlYCBpbiBgLmVudmAKICAKCiMjIyMgSW50ZXJhY3RpdmUgQVBJIERvYwoKIVtdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzL21hc3Rlci9hc3NldHMvaW50ZXJhY3RpdmUtZG9jMS5wbmcpCgojIyMjIEFQSSBWYWxpZGF0aW9uIQoKT29wcyEgSSB0aGUgQVBJIGNhbGxlciBmb3Jnb3QgdG8gcGFzcyBhIGBuYW1lYCBmaWVsZCwgbm8gc3RyZXNzLCB3ZSd2ZSBnb3QgdGhpcyEKCiFbXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY2RpbWFzY2lvL2dlbmVyYXRvci1leHByZXNzLW5vLXN0cmVzcy9tYXN0ZXIvYXNzZXRzL2FwaS12YWxpZGF0aW9uLnBuZykKCiMjIyBTdHJ1Y3R1cmVkIExvZ2dpbmcKClN0cnVjdHVyZWQgbG9nZ2luZyBvdXQgb2YgdGhlIGJveCEKCiMjIyMgcmF3CgohW10oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2NkaW1hc2Npby9nZW5lcmF0b3ItZXhwcmVzcy1uby1zdHJlc3MvbWFzdGVyL2Fzc2V0cy9sb2dnaW5nLXJhdy5wbmcpCgojIyMjIHByZXR0eQoKU3RydWN0dXJlZCBsb2dnaW5nIHByZXR0eSBwcmludGVkIGJ5IGRlZmF1bHQgLSBncmVhdCBmb3IgZGV2IQoKIVtdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzL21hc3Rlci9hc3NldHMvbG9nZ2luZy1wcmV0dHkucG5nKQoKIyMjIEFQSSBWYWxpZGF0aW9uIEV4YW1wbGUKClNpbXBseSBkZXNjcmliZSB5b3VyIEFQSXMgd2l0aCBTd2FnZ2VyIGFuZCBhdXRvbWF0aWNhbGx5IGdldDoKCi0gQVBJIHJlcXVlc3QgdmFsaWRhdGlvbgotIEludGVyYWN0aXZlIGRvY3VtZW50YXRpb24KCiMjIyBleGFtcGxlCgojIyMjIFN3YWdnZXIgQVBJIHNwZWMKCmBgYHlhbWwKc3dhZ2dlcjogJzIuMCcKaW5mbzoKICB2ZXJzaW9uOiAxLjAuMAogIHRpdGxlOiBteWFwcAogIGRlc2NyaXB0aW9uOiBNeSBjb29sIGFwcApiYXNlUGF0aDogL2FwaS92MQp0YWdzOgogIC0gbmFtZTogRXhhbXBsZXMKICAgIGRlc2NyaXB0aW9uOiBTaW1wbGUgZXhhbXBsZSBlbmRwb2ludHMKICAtIG5hbWU6IFNwZWNpZmljYXRpb24KICAgIGRlc2NyaXB0aW9uOiBUaGUgc3dhZ2dlciBBUEkgc3BlY2lmaWNhdGlvbgoKY29uc3VtZXM6CiAgLSBhcHBsaWNhdGlvbi9qc29uCnByb2R1Y2VzOgogIC0gYXBwbGljYXRpb24vanNvbgoKZGVmaW5pdGlvbnM6CiAgRXhhbXBsZUJvZHk6CiAgICB0eXBlOiBvYmplY3QKICAgIHRpdGxlOiBleGFtcGxlCiAgICByZXF1aXJlZDoKICAgICAgLSBuYW1lCiAgICBwcm9wZXJ0aWVzOgogICAgICBuYW1lOgogICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIGV4YW1wbGU6IG5vX3N0cmVzcwoKcGF0aHM6CiAgL2V4YW1wbGVzOgogICAgZ2V0OgogICAgICB0YWdzOgogICAgICAgIC0gRXhhbXBsZXMKICAgICAgZGVzY3JpcHRpb246IEZldGNoIGFsbCBleGFtcGxlcwogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgZGVzY3JpcHRpb246IFJldHVybnMgYWxsIGV4YW1wbGVzCiAgICBwb3N0OgogICAgICB0YWdzOgogICAgICAgIC0gRXhhbXBsZXMKICAgICAgZGVzY3JpcHRpb246IENyZWF0ZSBhIG5ldyBleGFtcGxlCiAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgLSBuYW1lOiBleGFtcGxlCiAgICAgICAgICBpbjogYm9keQogICAgICAgICAgZGVzY3JpcHRpb246IGFuIGV4YW1wbGUKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICRyZWY6ICcjL2RlZmluaXRpb25zL0V4YW1wbGVCb2R5JwogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgZGVzY3JpcHRpb246IFJldHVybnMgYWxsIGV4YW1wbGVzCgogIC9leGFtcGxlcy97aWR9OgogICAgZ2V0OgogICAgICB0YWdzOgogICAgICAgIC0gRXhhbXBsZXMKICAgICAgcGFyYW1ldGVyczoKICAgICAgICAtIG5hbWU6IGlkCiAgICAgICAgICBpbjogcGF0aAogICAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICAgIGRlc2NyaXB0aW9uOiBUaGUgaWQgb2YgdGhlIGV4YW1wbGUgdG8gcmV0cmlldmUKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgcmVzcG9uc2VzOgogICAgICAgIDIwMDoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBSZXR1cm4gdGhlIGV4YW1wbGUgd2l0aCB0aGUgc3BlY2lmaWVkIGlkCiAgICAgICAgNDA0OgogICAgICAgICAgZGVzY3JpcHRpb246IEV4YW1wbGUgbm90IGZvdW5kCgogIC9zcGVjOgogICAgZ2V0OgogICAgICB0YWdzOgogICAgICAgIC0gU3BlY2lmaWNhdGlvbgogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgZGVzY3JpcHRpb246IFJldHVybiB0aGUgQVBJIHNwZWNpZmljYXRpb24KYGBgCgojIyMjIEludm9rZSBhIFBPU1QgcmVxdWVzdCB2aWEgdGhlIEludGVyYWN0aXZlIGRvYwoKIVtdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzL21hc3Rlci9hc3NldHMvaW50ZXJhY3RpdmUtZG9jLnBuZykKCiMjIyBMaW50aW5nCgpleHByZXNzLW5vLXN0cmVzcyB1c2VzIFtFU0xpbnRdKGh0dHA6Ly9lc2xpbnQub3JnLykgYW5kIHByb3ZpZGVzIHR3byBjaG9pY2VzLCBBaXJibmIgb3IgUHJldHRpZXIuCgpUbyBhZGQgeW91ciBvd24gRVNMaW50IGN1c3RvbWl6YXRpb25zLCBlZGl0YGVzbGludC5jb25mLm1qc2AuCgpOb3RlIHRoYXQgdGhlIEFpcmJuYiB2YXJpYW50IHByb3ZpZGVzIGEgc2xpZ2h0bHkgbW9kaWZpZWQgQWlyYm5iIFtiYXNlXShodHRwczovL2dpdGh1Yi5jb20vYWlyYm5iL2phdmFzY3JpcHQvdHJlZS9tYXN0ZXIvcGFja2FnZXMvZXNsaW50LWNvbmZpZy1haXJibmItYmFzZSkgY29uZmlndXJhdGlvbi4KCiMjIEZBUQoqKlEqKjogSG93IGRvIEkgbW9kaWZ5IHRoZSBleGFtcGxlIEFQSSBhbmQgbWFrZSBpdCBteSBvd24/CgoqKkEqKjogVGhlcmUgYXJlIHR3byBrZXkgZmlsZXMgdGhhdCBlbmFibGUgeW91IHRvIGN1c3RvbWl6ZSBhbmQgZGVzY3JpYmUgeW91ciBBUEk6CjEuIGBzZXJ2ZXIvcm91dGVzLmpzYCAtIFRoaXMgcmVmZXJlbmNlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYWxsIG9mIHlvdXIgcm91dGVzLiBBZGQgYXMgbWFueSByb3V0ZXMgYXMgeW91IGxpa2UgYW5kIHBvaW50IGVhY2ggcm91dGUgeW91ciBleHByZXNzIGhhbmRsZXIgZnVuY3Rpb25zLgoyLiBgc2VydmVyL2NvbW1vbi9hcGkueWFtbGAgLSBUaGlzIGZpbGUgY29udGFpbnMgeW91ciBbT3BlbkFQSSBzcGVjXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pLiBEZXNjcmliZSB5b3VyIEFQSSBoZXJlLiBJdCdzIHJlY29tbWVuZGVkIHRoYXQgeW91IHRvIGRlY2xhcmUgYW55IGFuZCBhbGwgdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGlzIFlBTUwuIGBleHByZXNzLW5vLXN0cmVzcy10eXBlc2NyaXB0YCAgdXNlcyBbZXhwcmVzcy1vcGVuYXBpLXZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL2NkaW1hc2Npby9leHByZXNzLW9wZW5hcGktdmFsaWRhdG9yKSB0byBhdXRvbWF0aWNhbGx5IGhhbmRsZSBhbGwgQVBJIHZhbGlkYXRpb24gYmFzZWQgb24gd2hhdCB5b3UndmUgZGVmaW5lZCBpbiB0aGUgc3BlYy4KCioqUSoqOiBJIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGFuIGFwcCwgYnV0IEkgd2FudCB0byBjaGFuZ2UgdGhlIEFQSSByb290LiBIb3cgZG8gSSBkbyB0aGlzPwoKKipBKio6IFlvdSBuZWVkIHRvIG1ha2UgdG8gc21hbGwgY2hhbmdlcwogIDEuIE1vZGlmeSBgc2VydmVyL3JvdXRlcy5qc2AKICBgYGBqYXZhc2NyaXB0CiAgICAgLy8gQ2hhbmdlIHlvdXIgb3JpZ2luYWwgcGF0aCBlLmcuIC9hcGkvdjEvZXhhbXBsZXMsIHRvOgogICAgIGFwcC51c2UoJy9hcGkvdjIvZXhhbXBsZXMnLCBleGFtcGxlc1JvdXRlcik7CiAgIGBgYAoKICAyLiBNb2RpZnkgYHNlcnZlci9jb21tb24vYXBpLnlhbWxgIGFuZCB1cGRhdGUgdGhlIGFwaSByb290OgogIGBgYHlhbWwKICAgICMgQ2hhbmdlIGUuZy4gL2FwaS92MSB0byAvYXBpL3YyCiAgICBzZXJ2ZXJzOgogICAgLSB1cmw6IC9hcGkvdjIgICAKICBgYGAKCiMjIExpY2Vuc2UKCltNSVRdKExJQ0VOU0UpCgoKPGEgaHJlZj0iaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9tOTd0QTVjIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vYm1jLWNkbi5ueWMzLmRpZ2l0YWxvY2VhbnNwYWNlcy5jb20vQk1DLWJ1dHRvbi1pbWFnZXMvY3VzdG9tX2ltYWdlcy95ZWxsb3dfaW1nLnBuZyIgYWx0PSJCdXkgTWUgQSBDb2ZmZWUiIHN0eWxlPSJoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDt3aWR0aDogYXV0byAhaW1wb3J0YW50OyIgPjwvYT4KCiMjIENvbnRyaWJ1dG9ycyDinKgKClRoYW5rcyBnb2VzIHRvIHRoZXNlIHdvbmRlcmZ1bCBwZW9wbGUgKFtlbW9qaSBrZXldKGh0dHBzOi8vYWxsY29udHJpYnV0b3JzLm9yZy9kb2NzL2VuL2Vtb2ppLWtleSkpOgoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6U1RBUlQgLSBEbyBub3QgcmVtb3ZlIG9yIG1vZGlmeSB0aGlzIHNlY3Rpb24gLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgo8IS0tIG1hcmtkb3dubGludC1kaXNhYmxlIC0tPgo8dGFibGU+CiAgPHRyPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9sZW9zdW5jaW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMxLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQzMDc2OTc/dj00IiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+SmFpbWUgTGVvbmFyZG8gU3VuY2luIENydXo8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzL2NvbW1pdHM/YXV0aG9yPWxlb3N1bmNpbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYW15Z2RhbG9pZGV1bSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTg0MTYyNTI/dj00IiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+RGFuaWVsIEJvcm5zdHJhbmQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzL2NvbW1pdHM/YXV0aG9yPWFteWdkYWxvaWRldW0iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cDovL3d3dy5hYm91dC5tZS9qYXNvbmNvcm5zIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20vdS8zODM5NDE2P3Y9NCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPkphc29uIENvcm5zPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2RpbWFzY2lvL2dlbmVyYXRvci1leHByZXNzLW5vLXN0cmVzcy9jb21taXRzP2F1dGhvcj1KYXNvbkFsbGVuQ29ybnMiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cDovL2ZyYW5rY2FsaXNlLmNvbSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczAuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzc0MDIyP3Y9NCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPkZyYW5rIENhbGlzZTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NkaW1hc2Npby9nZW5lcmF0b3ItZXhwcmVzcy1uby1zdHJlc3MvY29tbWl0cz9hdXRob3I9ZnJhbmtjYWxpc2UiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmRhc2tlcG9uLmNvbS8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzYzNzQ5NTI/dj00IiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+RGFpc3VrZSBUc3VqaTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NkaW1hc2Npby9nZW5lcmF0b3ItZXhwcmVzcy1uby1zdHJlc3MvY29tbWl0cz9hdXRob3I9ZGFza2Vwb24iIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Vyb25seTE0bWUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUxODY4MTQ/dj00IiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+U2FuZ2Jlb20gSGFuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2RpbWFzY2lvL2dlbmVyYXRvci1leHByZXNzLW5vLXN0cmVzcy9jb21taXRzP2F1dGhvcj11cm9ubHkxNG1lIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly9ta2x5LmlvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMS5naXRodWJ1c2VyY29udGVudC5jb20vdS85NjUzNTM/dj00IiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+TWlrZSBMYXk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzL2NvbW1pdHM/YXV0aG9yPW1rbHkiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2pvZGVqYXIyMTQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzkzODU5MDI/dj00IiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+am9kZWphcjIxNDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NkaW1hc2Npby9nZW5lcmF0b3ItZXhwcmVzcy1uby1zdHJlc3MvY29tbWl0cz9hdXRob3I9am9kZWphcjIxNCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKPCEtLSBtYXJrZG93bmxpbnQtZW5hYmxlIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+CjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1MSVNUOkVORCAtLT4KClRoaXMgcHJvamVjdCBmb2xsb3dzIHRoZSBbYWxsLWNvbnRyaWJ1dG9yc10oaHR0cHM6Ly9naXRodWIuY29tL2FsbC1jb250cmlidXRvcnMvYWxsLWNvbnRyaWJ1dG9ycykgc3BlY2lmaWNhdGlvbi4gQ29udHJpYnV0aW9ucyBvZiBhbnkga2luZCB3ZWxjb21lIQo= readmeEtag: '"f100c4a0fb6a317a89d1d1a431a9baac0cba9fe9"' readmeLastModified: Sun, 09 Mar 2025 03:13:18 GMT repositoryId: 80230875 description: 🚂 A Yeoman generator for Express.js based 12-factor apps and apis created: '2017-01-27T17:45:14Z' updated: '2026-01-21T09:44:37Z' language: JavaScript archived: false stars: 601 watchers: 21 forks: 81 owner: cdimascio logo: https://avatars.githubusercontent.com/u/4706618?v=4 license: MIT repoEtag: '"45660b1c07789b5ac5d09dfc63561343260118db9033d86da379d28f60f53f9e"' repoLastModified: Wed, 21 Jan 2026 09:44:37 GMT foundInMaster: true category: Description Validators id: a4618ff5d41070e7337f3e3d8c2805d7 - source: openapi3 tags repository: https://github.com/mixmoe/hibiapi v3: true repositoryMetadata: base64Readme: >- PCEtLSBzcGVsbC1jaGVja2VyOiBkaXNhYmxlIC0tPgo8IS0tIG1hcmtkb3dubGludC1kaXNhYmxlIE1EMDMzIE1EMDQxIC0tPgoKPGltZyBzcmM9Ii5naXRodWIvbG9nby5zdmciIGFsaWduPSJyaWdodCI+Cgo8ZGl2IGFsaWduPSJsZWZ0Ij4KCiMgSGliaUFQSQoKKipf5LiA5Liq5a6e546w5LqG5aSa56eN5bi455So56uZ54K555qE5piT55So5YyWIEFQSSDnmoTnqIvluo8uXyoqCgoqKl9BIHByb2dyYW0gdGhhdCBpbXBsZW1lbnRzIGVhc3ktdG8tdXNlIEFQSXMgZm9yIGEgdmFyaWV0eSBvZiBjb21tb25seSB1c2VkIHNpdGVzLl8qKgoKWyFbRGVtbyBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2R5bmFtaWMvanNvbj9sYWJlbD1kZW1vJTIwc3RhdHVzJnF1ZXJ5PSUyNC5pbmZvLnZlcnNpb24mdXJsPWh0dHBzJTNBJTJGJTJGYXBpLm9iZnMuZGV2JTJGb3BlbmFwaS5qc29uJnN0eWxlPWZvci10aGUtYmFkZ2UmY29sb3I9bGlnaHRibHVlKV0oaHR0cHM6Ly9hcGkub2Jmcy5kZXYpCgohW0xpbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taXhtb2UvSGliaUFQSS93b3JrZmxvd3MvTGludC9iYWRnZS5zdmcpCiFbVGVzdF0oaHR0cHM6Ly9naXRodWIuY29tL21peG1vZS9IaWJpQVBJL3dvcmtmbG93cy9UZXN0L2JhZGdlLnN2ZykKWyFbQ292ZXJhZ2VdKGh0dHBzOi8vY29kZWNvdi5pby9naC9taXhtb2UvSGliaUFQSS9icmFuY2gvbWFpbi9ncmFwaC9iYWRnZS5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvbWl4bW9lL0hpYmlBUEkpCgpbIVtQeVBJXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9oaWJpYXBpKV0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2hpYmlhcGkvKQohW1B5UEkgLSBEb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9kbS9oaWJpYXBpKQohW1B5UEkgLSBQeXRob24gVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3B5dmVyc2lvbnMvaGliaWFwaSkKIVtQeVBJIC0gTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2wvaGliaWFwaSkKCiFbR2l0SHViIGxhc3QgY29tbWl0XShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9sYXN0LWNvbW1pdC9taXhtb2UvSGliaUFQSSkKIVtHaXRIdWIgY29tbWl0IGFjdGl2aXR5XShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9jb21taXQtYWN0aXZpdHkvbS9taXhtb2UvaGliaWFwaSkKIVtMaW5lcyBvZiBjb2RlXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Rva2VpL2xpbmVzL2dpdGh1Yi9taXhtb2UvaGliaWFwaSkKWyFbR2l0SHViIHN0YXJzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9zdGFycy9taXhtb2UvSGliaUFQSSldKGh0dHBzOi8vZ2l0aHViLmNvbS9taXhtb2UvSGliaUFQSS9zdGFyZ2F6ZXJzKQpbIVtHaXRIdWIgZm9ya3NdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2ZvcmtzL21peG1vZS9IaWJpQVBJKV0oaHR0cHM6Ly9naXRodWIuY29tL21peG1vZS9IaWJpQVBJL25ldHdvcmspClshW0dpdEh1YiBpc3N1ZXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy9taXhtb2UvSGliaUFQSSldKGh0dHBzOi8vZ2l0aHViLmNvbS9taXhtb2UvSGliaUFQSS9pc3N1ZXMpCgo8L2Rpdj4KCi0tLQoKIyMg5YmN6KiACgotIGBIaWJpQVBJYOaPkOS+m+Wkmuenjee9keermeWFrOW8gOWGheWuueeahCBBUEkg6ZuG5ZCILCDlroPku6zljIXmi6w6CgogIC0gUGl4aXYg55qE5Zu+54mH5ZKM5bCP6K+055u45YWz5L+h5oGv6I635Y+W5ZKM5pCc57SiCiAgLSBCaWxpYmlsaSDnmoTop4bpopEv55Wq5Ymn562J5L+h5oGv6I635Y+W5ZKM5pCc57SiCiAgLSDnvZHmmJPkupHpn7PkuZDnmoTpn7PkuZAvTVYg562J5L+h5oGv6I635Y+W5ZKM5pCc57SiCiAgLSDnmb7luqbotLTlkKfnmoTluJblrZDlhoXlrrnnmoTojrflj5YKICAtIFvniLHlo4HnurhdKGh0dHBzOi8vYWRlc2suY29tLynnmoTmqKrniYjlkoznq5bniYjlo4Hnurjojrflj5YKICAtIOWTlOWSlOa8q+eUu+eahOa8q+eUu+S/oeaBr+iOt+WPluWSjOaQnOe0ogogIC0g4oCmCgotIOivpemhueebrueahOWJjei6q+aYryBJbWphZCBBUElbXjFdCiAgLSDnlLHkuo7lroPnmoTkvb/nlKjkurrmlbDov4flpJosIOiHtOS9v+iwg+eUqOi2heWHuumZkOWItiwg5omA5Lul5pys5Lq65biM5pyb5o+Q5L6b5LiA5Liq5byA5rqQ5pu/5Luj5p2l5L6b56S+5Yy66L+b6KGM6Ieq55Sx5Zyw6YOo572y5ZKM5L2/55SoLCDku47ogIzlh4/ovbvkuIDpg6jliIbor6UgQVBJIOeahOS9v+eUqOWOi+WKmwoKW14xXTogW+S7gOS5iOaYryBJbWphZCBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9taXhtb2UvSGliaUFQSS93aWtpL0ZBUSMlRTQlQkIlODAlRTQlQjklODglRTYlOTglQUZpbWphZC1hcGkpCgojIyDkvJjlir8KCiMjIyDlvIDmupAKCi0g5pys6aG555uu5LulW0FwYWNoZS0yLjBdKC4vTElDRU5TRSnorrjlj6/lvIDmupAsIOivt+eci1vlvIDmupDorrjlj69dKCPlvIDmupDorrjlj68p5LiA6IqCCgojIyMg6auY5pWICgotIOS9v+eUqCBQeXRob24g55qEW+W8guatpeacuuWItl0oaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvemgtY24vMy9saWJyYXJ5L2FzeW5jaW8uaHRtbCksIOeUsVtGYXN0QVBJXShodHRwczovL2Zhc3RhcGkudGlhbmdvbG8uY29tLynpqbHliqgsIOW4puadpemrmOaViOeahOS9v+eUqOS9k+mqjCB+fuiZveeEtuaAp+iDveeTtumiiOWOi+agueS4jeWcqOi/mX5+CgojIyMg56iz5a6aCgotIOWcqOS7o+eggeS4reW5v+azm+S9v+eUqOS6hiBQeXRob24g55qEW+exu+Wei+aPkOekuuaUr+aMgV0oaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvemgtY24vMy9saWJyYXJ5L3R5cGluZy5odG1sKSwg5L2/5Luj56CB5Y+v6K+75oCn5pu06auY5LiU5pu05Yqg5piT5LqO57u05oqk5ZKM6LCD6K+VCgotIOWcqOW8gOWPkeWIneacn+i1t+WwseS4gOebtOS9v+eUqOWkmuenjeeOsOS7oyBQeXRob24g5byA5Y+R5bel5YW36L6F5Yqp5byA5Y+RLCDljIXmi6w6CgogIC0g5L2/55SoIFtQeUxhbmNlXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9bXMtcHl0aG9uLnZzY29kZS1weWxhbmNlKSDov5vooYzpnZnmgIHnsbvlnovmjqjmlq0KICAtIOS9v+eUqCBbRmxha2U4XShodHRwczovL2ZsYWtlOC5weWNxYS5vcmcvZW4vbGF0ZXN0Lykg5a+55Luj56CB5qC85byP6L+b6KGM5qOA5p+lCiAgLSDkvb/nlKggW0JsYWNrXShodHRwczovL2JsYWNrLnJlYWR0aGVkb2NzLmlvL2VuL3N0YWJsZS8pIOagvOW8j+WMluS7o+eggeS7peaPkOWNh+S7o+eggeWPr+ivu+aApwoKLSDkuI3nm7TmjqXkvb/nlKjnrKzkuInmlrnlvIDlj5HnmoQgQVBJIOiwg+eUqOW6kywg6ICM5piv5YWo6YOo55So5pu05Yqg6YCC5ZCIIFdlYiDlupTnlKjnmoTpgLvovpHph43lhpnnrKzkuInmlrkgQVBJIOivt+axgiwg5pu05Yqg5Y+v5o6nIH5+55av54uC6YCg6L2u5a2Qfn4KCiMjIOW3suWunueOsCBBUElbXjJdCgpbXjJdOiDor7fmn6XnnIsgWyMxXShodHRwczovL2dpdGh1Yi5jb20vbWl4bW9lL0hpYmlBUEkvaXNzdWVzLzEpCgotIFt4XSBQaXhpdgotIFt4XSDnvZHmmJPkupHpn7PkuZAKLSBbIF0gfn7kuIDoqIB+fiAo5YW25Luj5pu/5pa55qGIPGh0dHBzOi8vaGl0b2tvdG8uY24+5o+Q5L6b55qE5pa55qGI5bey6Laz5aSf5aW9LCDmmoLkuI3ogIPomZHmlK/mjIEpCi0gW3hdIEJpbGliaWxpCi0gW3hdIOS6jOe7tOeggQotIFsgXSB+fuS8gem5hSBGTX5+ICjkvLzkuY7nlKjnmoTkurrkuI3mmK/lvojlpJopCi0gW3hdIOeZvuW6pui0tOWQpwotIFt4XSDniLHlo4HnurgKLSBbeF0g5ZOU5ZKU5ryr55S7CgojIyDpg6jnvbLmjIfljZcKCi0g5omL5Yqo6YOo572y5oyH5Y2XOiAqKlvngrnlh7vmraTlpITmn6XnnItdKGh0dHBzOi8vZ2l0aHViLmNvbS9taXhtb2UvSGliaUFQSS93aWtpL0RlcGxveW1lbnQpKioKCiMjIOW6lOeUqOWunuS+iwoKKirmiJHmnInmm7TlpJrnmoTlupTnlKjlrp7kvos/KiogW+eri+WNsyBQUiFdKGh0dHBzOi8vZ2l0aHViLmNvbS9taXhtb2UvSGliaUFQSS9wdWxscykKCi0gW2Bqb3VybmV5LWFkL3BpeGl2LXZpZXdlcmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9qb3VybmV5LWFkL3BpeGl2LXZpZXdlcikKCiAgLSAqKuWPiOS4gOS4qiBQaXhpdiDpmIXop4jlt6XlhbcqKgoKLSDlhazlvIDmkK3lu7rlrp7kvosKICB8ICoq56uZ54K55ZCN56ewKiogfCAqKue9keWdgCoqIHwgKirnirbmgIEqKiB8CiAgfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOiB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS06IHwKICB8ICoq5a6Y5pa5IERlbW9bXjNdKiogfCA8aHR0cHM6Ly9hcGkub2Jmcy5kZXY+IHwgIVtvZmZpY2lhbF1bb2ZmaWNpYWxdIHwKICB8IFtNeUNhcmRdKGh0dHBzOi8vbXljYXJkLm1vZSkgfCA8aHR0cHM6Ly9oaWJpLm1vZWN1YmUuY29tPiB8ICFbbXljYXJkXVtteWNhcmRdIHwKClteM106IOS4uuS6huWHj+i9u+acjeWKoeWZqOi0n+aLhSwgRGVtbyDmnI3liqHlmajlt7LlvIDlkK/kuoYgQ2xvdWRmbGFyZSDlhajnq5nnvJPlrZgsIOWmguaenOacieWunuaXtuiOt+WPluabtOaWsOeahOmcgOaxgiwg6K+36Ieq6KGM5pCt5bu65oiW5L2/55So5YW25LuW6YOo572y5a6e5L6LCgpbb2ZmaWNpYWxdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL3dlYnNpdGU/dXJsPWh0dHBzJTNBJTJGJTJGYXBpLm9iZnMuZGV2JTJGb3BlbmFwaS5qc29uCltteWNhcmRdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL3dlYnNpdGU/dXJsPWh0dHBzJTNBJTJGJTJGaGliaS5tb2VjdWJlLmNvbSUyRm9wZW5hcGkuanNvbgoKIyMg54m55Yir6bij6LCiCgpbKipAam91cm5leS1hZCoqXShodHRwczovL2dpdGh1Yi5jb20vam91cm5leS1hZCkg5aSn5L2s55qEICoqSW1qYWQgQVBJKiosIOWug+aYr+acrOmhueebrueahOi1t+a6kAoKIyMjIOWPguiAg+mhueebrgoKPiAqKuato+aYr+WboOS4uuacieS6huS9oOS7rCwg6L+Z5Liq6aG555uu5omN5b6X5Lul5a2Y5ZyoKioKCi0gUGl4aXY6IFtgTWlrdWJpbGwvcGl4aXZweS1hc3luY2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9NaWt1YmlsbC9waXhpdnB5LWFzeW5jKSBbYHVwYml0L3BpeGl2cHlgXShodHRwczovL2dpdGh1Yi5jb20vdXBiaXQvcGl4aXZweSkKCi0gQmlsaWJpbGk6IFtgU29jaWFsU2lzdGVyWWkvYmlsaWJpbGktQVBJLWNvbGxlY3RgXShodHRwczovL2dpdGh1Yi5jb20vU29jaWFsU2lzdGVyWWkvYmlsaWJpbGktQVBJLWNvbGxlY3QpIFtgc29pbW9ydC95b3UtZ2V0YF0oaHR0cHM6Ly9naXRodWIuY29tL3NvaW1vcnQveW91LWdldCkKCi0g572R5piT5LqR6Z+z5LmQOiBbYG1ldG93b2xmL05ldGVhc2VDbG91ZE11c2ljQXBpYF0oaHR0cHM6Ly9naXRodWIuY29tL21ldG93b2xmL05ldGVhc2VDbG91ZE11c2ljQXBpKSBbYGdyZWF0czNhbi9weW5jbWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9ncmVhdHMzYW4vcHluY20pIFtgQmluYXJ5aWZ5L05ldGVhc2VDbG91ZE11c2ljQXBpYF0oaHR0cHM6Ly9naXRodWIuY29tL0JpbmFyeWlmeS9OZXRlYXNlQ2xvdWRNdXNpY0FwaSkKCi0g55m+5bqm6LS05ZCnOiBbYGxpYnNnaC90aWViYS1hcGlgXShodHRwczovL2dpdGh1Yi5jb20vbGlic2doL3RpZWJhLWFwaSkKCi0g5ZOU5ZKU5ryr55S777yaW2BuaXVodWFuL3BpY2EtcnVzdGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9uaXVodWFuL3BpY2EtcnVzdCkgW2BhYmJleW9rZ28vUGljYUNvbWljLUFwaWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9hYmJleW9rZ28vUGljYUNvbWljLUFwaSkKCiMjIyDotKHnjK7ogIXku6wKCuaEn+iwoui/meS6m+S4uui/meS4qumhueebruS9nOWHuui0oeeMrueahOWQhOS9jeWkp+S9rDoKCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1MSVNUOlNUQVJUIC0gRG8gbm90IHJlbW92ZSBvciBtb2RpZnkgdGhpcyBzZWN0aW9uIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KPCEtLSBtYXJrZG93bmxpbnQtZGlzYWJsZSAtLT4KPHRhYmxlPgogIDx0Ym9keT4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwOi8va3lvbW90b2kubW9lIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM3NTg3ODcwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJLeW9tb3RvaSIvPjxiciAvPjxzdWI+PGI+S3lvbW90b2k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9taXhtb2UvSGliaUFQSS9jb21taXRzP2F1dGhvcj1LeW9tb3RvaSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9taXhtb2UvSGliaUFQSS9jb21taXRzP2F1dGhvcj1LeW9tb3RvaSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwOi8vdGhkb2cubW9lIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ2MTIwMjUxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSLln47lgInlpY8iLz48YnIgLz48c3ViPjxiPuWfjuWAieWljzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2V4YW1wbGUtc2hpcm9rdXJha2FuYSIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL3NraXBtNC5jb20iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDAzMTE1ODE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlNraXBNNCIvPjxiciAvPjxzdWI+PGI+U2tpcE00PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWl4bW9lL0hpYmlBUEkvY29tbWl0cz9hdXRob3I9U2tpcE00IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9sZWFmN3RoIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM4MzUyNTUyP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJOb29rIi8+PGJyIC8+PHN1Yj48Yj5Ob29rPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWl4bW9lL0hpYmlBUEkvY29tbWl0cz9hdXRob3I9bGVhZjd0aCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vamlhbmd6aHVvY2hpIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUwNTM4Mzc1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJKb2NreSBDaGlhbmciLz48YnIgLz48c3ViPjxiPkpvY2t5IENoaWFuZzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21peG1vZS9IaWJpQVBJL2NvbW1pdHM/YXV0aG9yPWppYW5nemh1b2NoaSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2xlb29sZCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzkyMDkwMz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ibWlkb3JpIi8+PGJyIC8+PHN1Yj48Yj5taWRvcmk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9taXhtb2UvSGliaUFQSS9jb21taXRzP2F1dGhvcj1jbGVvb2xkIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LjJ5by5jYyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MTE5ODAzOD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iUHJldHR5OSIvPjxiciAvPjxzdWI+PGI+UHJldHR5OTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21peG1vZS9IaWJpQVBJL2NvbW1pdHM/YXV0aG9yPVByZXR0eTkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vbm9jaWxvbC5tZS8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTYyNTYyMjE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkphZCIvPjxiciAvPjxzdWI+PGI+SmFkPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWl4bW9lL0hpYmlBUEkvaXNzdWVzP3E9YXV0aG9yJTNBam91cm5leS1hZCIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSIjaWRlYXMtam91cm5leS1hZCIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly9uYW5va2EudG9wIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMxODM3MjE0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJZdW1pbmUgU2FrdXJhIi8+PGJyIC8+PHN1Yj48Yj5ZdW1pbmUgU2FrdXJhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWl4bW9lL0hpYmlBUEkvY29tbWl0cz9hdXRob3I9YXNhZGFoaW1la2EiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3lleWFuZzUyIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwNzExMDg1MT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ieWV5YW5nIi8+PGJyIC8+PHN1Yj48Yj55ZXlhbmc8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9taXhtb2UvSGliaUFQSS9jb21taXRzP2F1dGhvcj15ZXlhbmc1MiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCjwhLS0gbWFya2Rvd25saW50LXJlc3RvcmUgLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4KCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1MSVNUOkVORCAtLT4KCl/mnKzmrrXnrKblkIggW2FsbC1jb250cmlidXRvcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbGwtY29udHJpYnV0b3JzL2FsbC1jb250cmlidXRvcnMpIOinhOiMg18KCiMjIOW8gOa6kOiuuOWPrwoKICAgIENvcHlyaWdodCAyMDIwLTIwMjEgTWl4IFRlY2hub2xvZ3kKCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K readmeEtag: '"89299b320ffcb534742e534a402ce9ace61aa4a7"' readmeLastModified: Tue, 23 Apr 2024 15:15:36 GMT repositoryId: 322624820 description: >- 一个实现了多种常用站点的易用化API的程序 / A program that implements easy-to-use APIs for a variety of commonly used sites. created: '2020-12-18T14:56:31Z' updated: '2026-02-02T03:51:47Z' language: Python archived: true stars: 575 watchers: 7 forks: 84 owner: mixmoe logo: https://avatars.githubusercontent.com/u/68723928?v=4 license: Apache-2.0 repoEtag: '"2825226cef9f5dfca4c1b5b27b6424d93794b7fdc1fe36ab45e16beb2e0ff405"' repoLastModified: Mon, 02 Feb 2026 03:51:47 GMT foundInMaster: true category: Testing id: a5ce8925c7b03da0bff459d65f63458a - source: openapi3 tags repository: https://github.com/fabien0102/openapi-codegen v3: true id: 949c5e572da015484f84ceadd84e19ef repositoryMetadata: base64Readme: >- PGJyPgo8YnI+Cjxicj4KPGRpdiBhbGlnbj0iY2VudGVyIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMTZweCI+CiAgPGltZyBzcmM9Im9wZW5hcGktY29kZWdlbi1sb2dvLnN2ZyIgd2lkdGg9IjQwMHB4IiAvPgo8L2Rpdj4KPGJyPgo8YnI+CgogIDxkaXYgYWxpZ249ImNlbnRlciI+CiAgICA8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ab3BlbmFwaS1jb2RlZ2VuL2NsaSI+CiAgICAgIDxpbWcgYWx0PSJucG0iIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9Ab3BlbmFwaS1jb2RlZ2VuL2NsaS5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSI+CiAgICA8L2E+CiAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmFiaWVuMDEwMi9vcGVuYXBpLWNvZGVnZW4vYmxvYi9tYWluL0xJQ0VOQ0UubWQiPgogICAgICA8aW1nIGFsdD0iUmVhZCB0aGUgZG9jdW1lbnRhdGlvbiIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9sL0BvcGVuYXBpLWNvZGVnZW4vY2xpLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlIj4KICAgIDwvYT4KPGJyPgo8YnI+CiAgICBUb29saW5nIHRvIGdpdmUgeW91IGZ1bGwgdHlwZS1zYWZldHkgYXJvdW5kIE9wZW5BUEkgc3BlY3MuCiAgCiAgPC9kaXY+Cgo8YnI+CgojIyMgWW91IGNhbiBnZW5lcmF0ZQoKLSBUeXBlU2NyaXB0IHR5cGVzCi0gVHlwZS1zYWZlIEdlbmVyaWMgRmV0Y2hlcnMKLSBUeXBlLXNhZmUgUmVhY3QgUXVlcnkgaG9va3MgKGh0dHBzOi8vZ2l0aHViLmNvbS90YW5zdGFjay9xdWVyeSkKCiMjIEdldHRpbmcgc3RhcnRlZAoKMS4gKipJbml0aWFsaXplIHRoZSBnZW5lcmF0b3IqKgoKICAgYGBgYmFzaAogICBucHggQG9wZW5hcGktY29kZWdlbi9jbGkgaW5pdAogICBgYGAKCiAgIDxpbWcgc3R5bGU9Im1heC13aWR0aDogNDAwcHgiIHNyYz0iaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMjcxOTEyLzE5NDAwMDY3OS01YTQ1MDFiOC01ZmMwLTQzMGMtOTIxNy0wMjhiZjkxYTVkY2QuZ2lmIj4KCiAgIElmIHlvdSB3aXNoIHRvIGNoYW5nZSBhbnkgb2YgdGhlIHNlbGVjdGlvbnMgbWFkZSwgeW91IGNhbiBkbyBzbyBpbiB0aGUgZ2VuZXJhdGVkIGBvcGVuYXBpLWNvZGVnZW4uY29uZmlnLnRzYCBmaWxlIGxhdGVyLi4KCjIuICoqU3RhcnQgR2VuZXJhdGlvbioqCgogICBgYGBiYXNoCiAgIG5weCBvcGVuYXBpLWNvZGVnZW4gZ2VuIHtuYW1lc3BhY2V9CiAgIGBgYAoKICAgQWZ0ZXIgdGhlIGNvZGUgZ2VuZXJhdGlvbiBpcyBkb25lLCB5b3Ugd2lsbCBub3RpY2UgdGhlIGZvbGxvd2luZyBmaWxlczoKCiAgIC0gYHtuYW1lc3BhY2V9RmV0Y2hlci50c2AgLSBkZWZpbmVzIGEgZnVuY3Rpb24gdGhhdCB3aWxsIG1ha2UgcmVxdWVzdHMgdG8geW91ciBBUEkuCiAgIC0gYHtuYW1lc3BhY2V9Q29udGV4dC50c3hgIC0gdGhlIGNvbnRleHQgdGhhdCBwcm92aWRlcyBge25hbWVzcGFjZX1GZXRjaGVyYCB0byBvdGhlciBjb21wb25lbnRzLgogICAtIGB7bmFtZXNwYWNlfUNvbXBvbmVudHMudHN4YCAtIGdlbmVyYXRlZCBSZWFjdCBRdWVyeSBjb21wb25lbnRzIChpZiB5b3Ugc2VsZWN0ZWQgUmVhY3QgUXVlcnkgYXMgcGFydCBvZiBpbml0aWFsaXphdGlvbikuCiAgIC0gYHtuYW1lc3BhY2V9U2NoZW1hcy50c2AgLSB0aGUgZ2VuZXJhdGVkIFR5cGVzY3JpcHQgdHlwZXMgZnJvbSB0aGUgcHJvdmlkZWQgT3BlbiBBUEkgc2NoZW1hcy4KCiAgICZuYnNwOwoKICAgPiAqKldhcm5pbmcqKgogICA+CiAgID4gSWYgYHtuYW1lc3BhY2V9RmV0Y2hlci50c2Agb3IgYHtuYW1lc3BhY2V9Q29udGV4dC50c3hgIGFscmVhZHkgZXhpc3QgaW4gdGhlIG91dHB1dCBmb2xkZXIsIHRoZXkgd2lsbCBub3QgYmUgcmVwbGFjZWQuIEhvd2V2ZXIsIGB7bmFtZXNwYWNlfUNvbXBvbmVudHMudHN4YCBhbmQgYHtuYW1lc3BhY2V9U2NoZW1hcy50c2Agd2lsbCBiZSByZS1nZW5lcmF0ZWQgZWFjaCB0aW1lIGJhc2VkIG9uIHRoZSBPcGVuIEFQSSBzcGVjIGZpbGUgcHJvdmlkZWQuCgozLiAqKkNvbmZpZ3VyZSB0aGUgRmV0Y2hlcioqIChvcHRpb25hbCkKCiAgIEFmdGVyIHRoZSBmaXJzdCBzdGVwIHlvdSBzaG91bGQgc2VlIGEgZmlsZSBjYWxsZWQgYHtuYW1lc3BhY2V9RmV0Y2hlci50c2AgaW4geW91ciBvdXB1dCBkaXJlY3RvcnkuCgogICBCeSBkZWZhdWx0IGl0IHVzZXMgdGhlIGJ1aWx0LWluIEZldGNoIEFQSSwgeW91IGFyZSBmcmVlIHRvIGNoYW5nZSB0aGlzIHRvIHlvdXIgZmV0Y2hpbmcgbGlicmFyeSBvZiBjaG9pY2UgKEF4aW9zLCBHb3QgZXRjLikKCiAgIElmIHlvdXIgT3BlbiBBUEkgc3BlYyBjb250YWlucyBhIGNvbmZpZ3VyZWQgc2VydmVyLCB0aGVuIHRoZSBiYXNlIFVSTCBmb3IgYWxsIHJlcXVlc3RzIHdpbGwgZGVmYXVsdCB0byB0aGF0IHNlcnZlcidzIFVSTC4gSWYgbm8gc3VjaCBjb25maWd1cmF0aW9uIGV4aXN0cywgeW91J2xsIG5lZWQgdG8gc3BlY2lmeSB0aGUgYmFzZSBVUkwgdmFsdWUuCgo0LiAqKkluc3RhbGwgYW5kIENvbmZpZ3VyZSBSZWFjdCBRdWVyeSoqIChvcHRpb25hbCkKCiAgIElmIGR1cmluZyBnZW5lcmF0b3Igc2V0dXAgeW91IHBpY2tlZCBgPiBSZWFjdCBRdWVyeSBjb21wb25lbnRzYCwgdGhlbiB5b3Ugd2lsbCBuZWVkIHRvIGluc3RhbGwgYW5kIGNvbmZpZ3VyZSBSZWFjdCBRdWVyeSBpbiBvcmRlciBmb3IgdGhlIGdlbmVyYXRlZCBSZWFjdCBob29rcyB0byB3b3JrIHByb3Blcmx5OgoKICAgLSBbSW5zdGFsbCB0aGUgUmVhY3QgUXVlcnkgbGlicmFyeV0oaHR0cHM6Ly90YW5zdGFjay5jb20vcXVlcnkvbGF0ZXN0L2RvY3MvZnJhbWV3b3JrL3JlYWN0L2luc3RhbGxhdGlvbikKICAgLSBbV2lyZSB1cCB0aGUgUXVlcnlDbGllbnRQcm92aWRlciBjb21wb25lbnRdKGh0dHBzOi8vdGFuc3RhY2suY29tL3F1ZXJ5L2xhdGVzdC9kb2NzL2ZyYW1ld29yay9yZWFjdC9yZWZlcmVuY2UvUXVlcnlDbGllbnRQcm92aWRlcikgdG8gY29ubmVjdCBhbmQgcHJvdmlkZSBhIFF1ZXJ5Q2xpZW50IHRvIHlvdXIgYXBwbGljYXRpb24KCiMjIFVzYWdlCgojIyMgUmVhY3QgUXVlcnkgY29tcG9uZW50cwoKVXNpbmcgW2dpcGh5IHNwZWNzXShodHRwczovL2FwaS5hcGlzLmd1cnUvdjIvc3BlY3MvZ2lwaHkuY29tLzEuMC9vcGVuYXBpLnlhbWwpIGFzIGV4YW1wbGUKClRoaXMgd2lsbCBnZW5lcmF0ZSBsb3Qgb2YgcmVhZHktdG8tdXNlIGhvb2tzIGxpa2U6CgotIGB1c2VSYW5kb21HaWZgIC0+IFdyYXBwZXIgYXJvdW5kIGB1c2VRdWVyeWAgd2l0aCBpbmplY3RlZCB0eXBlcwotIGB1c2VTdXNwZW5zZVJhbmRvbUdpZmAgLT4gU2FtZSBidXQgd2l0aCBgdXNlU3VzcGVuc2VgCgpBbmQgeW91IHdpbGwgaGF2ZSBzb21lIGB1c2VNdXRhdGlvbmAgaWYgdGhlIGFwaSBleHBvc2Ugc29tZSAobm90IHRoZSBjYXNlIHdpdGggdGhpcyBleGFtcGxlKQoKSGVyZSBhbiBleGFtcGxlIG9mIHVzYWdlIG9mIHRoaXMgZ2VuZXJhdGVkIGFwaToKCmBgYHRzeAppbXBvcnQgeyB1c2VSYW5kb21HaWYgfSBmcm9tICIuL2dpcGh5IjsKCmV4cG9ydCBmdW5jdGlvbiBHaWZFeHBsb3JlcigpIHsKICBjb25zdCBbdGFnLCBzZXRUYWddID0gdXNlU3RhdGUoIiIpOwogIGNvbnN0IHsgZGF0YSwgZXJyb3IsIGlzRXJyb3IsIGlzUGVuZGluZyB9ID0gdXNlUmFuZG9tR2lmKHsKICAgIHF1ZXJ5UGFyYW1zOiB7CiAgICAgIHRhZywKICAgIH0sCiAgfSk7CgogIHJldHVybiAoCiAgICA8ZGl2PgogICAgICA8aW5wdXQgdmFsdWU9e3RhZ30gb25DaGFuZ2U9eyhlKSA9PiBzZXRUYWcoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKX0gLz4KICAgICAge2lzUGVuZGluZyA/ICgKICAgICAgICA8ZGl2PkxvYWRpbmfigKY8L2Rpdj4KICAgICAgKSA6IGlzRXJyb3IgPyAoCiAgICAgICAgPGRpdj4KICAgICAgICAgIDxwcmU+e2Vycm9yLnBheWxvYWQgPz8gIlVua25vd24gZXJyb3IifTwvcHJlPgogICAgICAgIDwvZGl2PgogICAgICApIDogKAogICAgICAgIC8vIFRoaXMgaXMgdHlwZWQhCiAgICAgICAgPGltZyBzcmM9e2RhdGEuZGF0YT8udXJsfSAvPgogICAgICApfQogICAgPC9kaXY+CiAgKTsKfQpgYGAKClRoaXMgYWxzbyBzdXBwb3J0IGByZWFjdFF1ZXJ5LnNraXBUb2tlbmAgdG8gc3RheSB0eXBlLXNhZmUgd2hlbiB5b3UgYXJlIHdhaXRpbmcgZm9yIHBhcmFtczoKCmBgYGRpZmYKKyBpbXBvcnQgeyBza2lwVG9rZW4gfSBmcm9tICJAdGFuc3RhY2svcmVhY3QtcXVlcnkiOwoKLSBjb25zdCB7IGRhdGEsIGVycm9yLCBpc0Vycm9yLCBpc1BlbmRpbmcgfSA9IHVzZVJhbmRvbUdpZih7Ci0gICAgIHF1ZXJ5UGFyYW1zOiB7Ci0gICAgICAgdGFnLAotICAgICB9LAotICAgfSk7CisgY29uc3QgeyBkYXRhLCBlcnJvciwgaXNFcnJvciwgaXNQZW5kaW5nIH0gPSB1c2VSYW5kb21HaWYoCisgICAgIHRhZworICAgICAgID8gc2tpcFRva2VuCisgICAgICAgOiB7CisgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7CisgICAgICAgICAgICAgdGFnLAorICAgICAgICAgICB9LAorICAgICAgICAgfQorICAgKTsKYGBgCgpZb3UgY2FuIGFsc28gdXNlIGRpcmVjdGx5IHRoZSBxdWVyeUZuIGZvciBtb3JlIGFkdmFuY2VkIHVzZSBjYXNlczoKCmBgYHRzeAppbXBvcnQgeyByYW5kb21HaWZRdWVyeSB9IGZyb20gIi4vZ2lwaHkvZ2lwaHlDb21wb25lbnRzIjsKCmNvbnN0IHF1ZXJ5Q2xpZW50ID0gbmV3IFF1ZXJ5Q2xpZW50KCk7CgpxdWVyeUNsaWVudC5mZXRjaFF1ZXJ5KHJhbmRvbUdpZlF1ZXJ5KHt9KSk7CmBgYAoKIyMgQ29uZmlndXJhdGlvbgoKVGhlIG9ubHkgdGhpbmcgeW91IG5lZWQgdG8gbWFuYWdlIGlzIHRoZSBjb25maWd1cmF0aW9uLgpFdmVyeXRoaW5nIGlzIHR5cGVkIGFuZCBzZWxmLWRvY3VtZW50ZWQsIGJ1dCBqdXN0IGluIGNhc2UsIHlvdSBjYW4gZmluZCBoZXJlIGV4YW1wbGUgY29uZmlndXJhdGlvbiBiZWxvdzoKCiMjIyBFeGFtcGxlIENvbmZpZwoKYGBgdHMKLy8gb3BlbmFwaS1jb2RlZ2VuLmNvbmZpZy50cwppbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICJAb3BlbmFwaS1jb2RlZ2VuL2NsaSI7CmltcG9ydCB7CiAgZ2VuZXJhdGVTY2hlbWFUeXBlcywKICBnZW5lcmF0ZVJlYWN0UXVlcnlDb21wb25lbnRzLAp9IGZyb20gIkBvcGVuYXBpLWNvZGVnZW4vdHlwZXNjcmlwdCI7CgpleHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoewogIGV4YW1wbGU6IHsKICAgIC8vIGNhbiBiZSBvdmVycmlkZGVuIGZyb20gY2xpCiAgICBmcm9tOiB7CiAgICAgIHNvdXJjZTogImdpdGh1YiIsCiAgICAgIG93bmVyOiAiZmFiaWVuMDEwMiIsCiAgICAgIHJlcG9zaXRvcnk6ICJvcGVuYXBpLWNvZGVnZW4iLAogICAgICByZWY6ICJtYWluIiwKICAgICAgc3BlY1BhdGg6ICJleGFtcGxlcy9zcGVjLnlhbWwiLAogICAgfSwKCiAgICAvLyBjYW4gYmUgb3ZlcnJpZGRlbiBmcm9tIGNsaQogICAgb3V0cHV0RGlyOiAic3JjL3F1ZXJpZXMiLAoKICAgIHRvOiBhc3luYyAoY29udGV4dCkgPT4gewogICAgICAvLyBZb3UgY2FuIHRyYW5zZm9ybSB0aGUgYGNvbnRleHQub3BlbkFQSURvY3VtZW50YCBoZXJlLCBjYW4gYmUgdXNlZnVsIHRvIHJlbW92ZSBpbnRlcm5hbCByb3V0ZXMgb3IgZml4aW5nIHNvbWUga25vd24gaXNzdWVzIGluIHRoZSBzcGVjcyA7KQoKICAgICAgLy8gR2VuZXJhdGUgYWxsIHRoZSBzY2hlbWFzIHR5cGVzIChjb21wb25lbnRzICYgcmVzcG9uc2VzKQogICAgICBjb25zdCB7IHNjaGVtYXNGaWxlcyB9ID0gYXdhaXQgZ2VuZXJhdGVTY2hlbWFUeXBlcyhjb250ZXh0LCB7CiAgICAgICAgLyogY29uZmlnICovCiAgICAgIH0pOwoKICAgICAgLy8gR2VuZXJhdGUgYWxsIHJlYWN0LXF1ZXJ5IGNvbXBvbmVudHMKICAgICAgYXdhaXQgZ2VuZXJhdGVSZWFjdFF1ZXJ5Q29tcG9uZW50cyhjb250ZXh0LCB7CiAgICAgICAgLyogY29uZmlnKi8KICAgICAgICBzY2hlbWFzRmlsZXMsCiAgICAgIH0pOwogICAgfSwKICB9LAp9KTsKYGBgCgojIyMgUGx1Z2lucwoKdGhlIGBAb3BlbmFwaS1jb2RlZ2VuL2NsaWAgc3VwcG9ydHMgdGhlc2UgZ2VuZXJhdG9yIHBsdWdpbnM6CgojIyMjICoqZ2VuZXJhdGVTY2hlbWFUeXBlcyoqIChmcm9udGVuZC9iYWNrZW5kKQoKZ2VuZXJhdGUgYWxsIHNjaGVtYSB0eXBlcyBmb3IgeW91ciBzcGVjaWZpY2F0aW9uOgoKYGBgdHMKY29uc3QgeyBzY2hlbWFzRmlsZXMgfSA9IGF3YWl0IGdlbmVyYXRlU2NoZW1hVHlwZXMoY29udGV4dCwgewogIC8qIGNvbmZpZyAqLwp9KTsKYGBgCgpvdXRwdXQ6IGB7bmFtZXNwYWNlfVNjaGVtYXMudHNgCgojIyMjICoqZ2VuZXJhdGVGZXRjaGVycyoqIChmcm9udGVuZCkKCmdlbmVyYXRlIGFsbCBmZXRjaGVycyB3aXRoIHR5cGVzIGZvciB5b3VyIHNwZWNpZmljYXRpb24KCmBgYHRzCmF3YWl0IGdlbmVyYXRlRmV0Y2hlcnMoY29udGV4dCwgewogIC8qIGNvbmZpZyAqLwogIHNjaGVtYXNGaWxlcywKfSk7CmBgYAoKb3V0cHV0OiBge25hbWVzcGFjZX1GZXRjaGVycy50c2AKCiMjIyMgKipnZW5lcmF0ZVJlYWN0UXVlcnlDb21wb25lbnRzKiogKGZyb250ZW5kKQoKZ2VuZXJhdGUgYWxsIFJlYWN0IFF1ZXJ5IENvbXBvbmVudHMgZm9yIHVzZVF1ZXJ5KCkgYW5kIHVzZU11dGF0aW9uKCkKCmBgYHRzCmF3YWl0IGdlbmVyYXRlUmVhY3RRdWVyeUNvbXBvbmVudHMoY29udGV4dCwgewogIC8qIGNvbmZpZyovCiAgc2NoZW1hc0ZpbGVzLAp9KTsKYGBgCgpvdXRwdXQ6IGB7bmFtZXNwYWNlfUNvbXBvbmVudHMudHNgCgpUaGlzIGlzIGFsc28gZ2VuZXJhdGUgYSBxdWVyeSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGluIG1vc3Qgb2YgUmVhY3QgUXVlcnkgZnVuY3Rpb25zLgoKRXhhbXBsZSB3aXRoIGBxdWVyeUNsaWVudC5mZXRjaFF1ZXJ5YCAoZGF0YSBsb2FkZXIgY2FzZSk6CgpgYGB0cwphd2FpdCBxdWVyeUNsaWVudC5mZXRjaFF1ZXJ5KGdldFlvdXJRdWVyeU5hbWVRdWVyeSh7fSkpOwpgYGAKCllvdSBjYW4gaW1wb3J0IGFueSBnZW5lcmF0b3IgaW50byB0aGUgYHRvYCBzZWN0aW9uLCB0aG9zZSBjYW4gYmUgdGhlIG9uZXMgcHJvdmlkZWQgYnkgdGhpcyBwcm9qZWN0IG9yIHlvdXIgb3duIGN1c3RvbSBvbmVzLiBZb3UgaGF2ZSBmdWxsIGNvbnRyb2wgb2Ygd2hhdCB5b3UgYXJlIGdlbmVyYXRpbmchCgpIYXZlIGZ1biEKCiMjIENvbnRyaWJ1dG9ycyDinKgKClRoYW5rcyBnb2VzIHRvIHRoZXNlIHdvbmRlcmZ1bCBwZW9wbGUgKFtlbW9qaSBrZXldKGh0dHBzOi8vYWxsY29udHJpYnV0b3JzLm9yZy9kb2NzL2VuL2Vtb2ppLWtleSkpOgoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6U1RBUlQgLSBEbyBub3QgcmVtb3ZlIG9yIG1vZGlmeSB0aGlzIHNlY3Rpb24gLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgo8IS0tIG1hcmtkb3dubGludC1kaXNhYmxlIC0tPgo8dGFibGU+CiAgPHRib2R5PgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZmFiaWVuMDEwMi5jb20vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE3NjE0Njk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkZhYmllbiBCRVJOQVJEIi8+PGJyIC8+PHN1Yj48Yj5GYWJpZW4gQkVSTkFSRDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZhYmllbjAxMDIvb3BlbmFwaS1jb2RlZ2VuL2NvbW1pdHM/YXV0aG9yPWZhYmllbjAxMDIiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjZGVzaWduLWZhYmllbjAxMDIiIHRpdGxlPSJEZXNpZ24iPvCfjqg8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mYWJpZW4wMTAyL29wZW5hcGktY29kZWdlbi9jb21taXRzP2F1dGhvcj1mYWJpZW4wMTAyIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iI2lkZWFzLWZhYmllbjAxMDIiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9IiNwcm9qZWN0TWFuYWdlbWVudC1mYWJpZW4wMTAyIiB0aXRsZT0iUHJvamVjdCBNYW5hZ2VtZW50Ij7wn5OGPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmFiaWVuMDEwMi9vcGVuYXBpLWNvZGVnZW4vcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBZmFiaWVuMDEwMiIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbXBvdG9taW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjM5NDA2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJtcG90b21pbiIvPjxiciAvPjxzdWI+PGI+bXBvdG9taW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mYWJpZW4wMTAyL29wZW5hcGktY29kZWdlbi9jb21taXRzP2F1dGhvcj1tcG90b21pbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNpZGVhcy1tcG90b21pbiIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZhYmllbjAxMDIvb3BlbmFwaS1jb2RlZ2VuL3B1bGxzP3E9aXMlM0FwcityZXZpZXdlZC1ieSUzQW1wb3RvbWluIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9taWNoYS1mIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIwMDY0Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTWljaGFlbCBGcmFuemtvd2lhayIvPjxiciAvPjxzdWI+PGI+TWljaGFlbCBGcmFuemtvd2lhazwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZhYmllbjAxMDIvb3BlbmFwaS1jb2RlZ2VuL2NvbW1pdHM/YXV0aG9yPW1pY2hhLWYiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NmZXJhRGV2Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIxODE4NjY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFsZXhpcyBSaWNvIi8+PGJyIC8+PHN1Yj48Yj5BbGV4aXMgUmljbzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZhYmllbjAxMDIvb3BlbmFwaS1jb2RlZ2VuL2NvbW1pdHM/YXV0aG9yPVNmZXJhRGV2IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2lkZWFzLVNmZXJhRGV2IiB0aXRsZT0iSWRlYXMsIFBsYW5uaW5nLCAmIEZlZWRiYWNrIj7wn6SUPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9uZWQuaW0vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI3MTkxMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTmVkaW0gQXJhYmFjxLEiLz48YnIgLz48c3ViPjxiPk5lZGltIEFyYWJhY8SxPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjcXVlc3Rpb24tbmVlZGltIiB0aXRsZT0iQW5zd2VyaW5nIFF1ZXN0aW9ucyI+8J+SrDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZhYmllbjAxMDIvb3BlbmFwaS1jb2RlZ2VuL2NvbW1pdHM/YXV0aG9yPW5lZWRpbSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNpZGVhcy1uZWVkaW0iIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYW50b25pZWwiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTcyMjUzNTg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFudG9uaWVsIE1hZ2FsaMOjZXMiLz48YnIgLz48c3ViPjxiPkFudG9uaWVsIE1hZ2FsaMOjZXM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNleGFtcGxlLWFudG9uaWVsIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mYWJpZW4wMTAyL29wZW5hcGktY29kZWdlbi9pc3N1ZXM/cT1hdXRob3IlM0FhbnRvbmllbCIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0RyZWllckYiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTYzMTg2NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRmxvcmlhbiBEcmVpZXIiLz48YnIgLz48c3ViPjxiPkZsb3JpYW4gRHJlaWVyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmFiaWVuMDEwMi9vcGVuYXBpLWNvZGVnZW4vY29tbWl0cz9hdXRob3I9RHJlaWVyRiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL2ZhYmlhbmFsdGhhdXMuZGUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjc5NTUzND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRmFiaWFuIEFsdGhhdXMiLz48YnIgLz48c3ViPjxiPkZhYmlhbiBBbHRoYXVzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmFiaWVuMDEwMi9vcGVuYXBpLWNvZGVnZW4vY29tbWl0cz9hdXRob3I9ZWwtaiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2ktdmFtcCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTY1MTYyNzc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImNpLXZhbXAiLz48YnIgLz48c3ViPjxiPmNpLXZhbXA8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mYWJpZW4wMTAyL29wZW5hcGktY29kZWdlbi9pc3N1ZXM/cT1hdXRob3IlM0FjaS12YW1wIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mYWJpZW4wMTAyL29wZW5hcGktY29kZWdlbi9jb21taXRzP2F1dGhvcj1jaS12YW1wIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vb2FsYW5vbGl2Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQzNjg0ODE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFsYW4gT2xpdmVpcmEiLz48YnIgLz48c3ViPjxiPkFsYW4gT2xpdmVpcmE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mYWJpZW4wMTAyL29wZW5hcGktY29kZWdlbi9jb21taXRzP2F1dGhvcj1hbGFuLW9saXYiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0NlbGx1bGUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDE1NzEwMz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTWljaGFlbCAmcXVvdDtNaWtlJnF1b3Q7IEZlcnJpcyIvPjxiciAvPjxzdWI+PGI+TWljaGFlbCAmcXVvdDtNaWtlJnF1b3Q7IEZlcnJpczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZhYmllbjAxMDIvb3BlbmFwaS1jb2RlZ2VuL2NvbW1pdHM/YXV0aG9yPUNlbGx1bGUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JhanppayI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMDM2NDgzNj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSmFuIMWgaWxoYW4iLz48YnIgLz48c3ViPjxiPkphbiDFoGlsaGFuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmFiaWVuMDEwMi9vcGVuYXBpLWNvZGVnZW4vaXNzdWVzP3E9YXV0aG9yJTNBcmFqemlrIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mYWJpZW4wMTAyL29wZW5hcGktY29kZWdlbi9jb21taXRzP2F1dGhvcj1yYWp6aWsiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmFiaWVuMDEwMi9vcGVuYXBpLWNvZGVnZW4vY29tbWl0cz9hdXRob3I9cmFqemlrIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kYW4tY29va2UiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjI4MTY4ODc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkRhbmllbCBDb29rZSIvPjxiciAvPjxzdWI+PGI+RGFuaWVsIENvb2tlPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmFiaWVuMDEwMi9vcGVuYXBpLWNvZGVnZW4vaXNzdWVzP3E9YXV0aG9yJTNBZGFuLWNvb2tlIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mYWJpZW4wMTAyL29wZW5hcGktY29kZWdlbi9jb21taXRzP2F1dGhvcj1kYW4tY29va2UiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0t1c21lcm9nbHUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTYzODU0ND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTGluZGVuIFdyaWdodCIvPjxiciAvPjxzdWI+PGI+TGluZGVuIFdyaWdodDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZhYmllbjAxMDIvb3BlbmFwaS1jb2RlZ2VuL2NvbW1pdHM/YXV0aG9yPUt1c21lcm9nbHUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vdHZlcmRvaGxlYi5jb20vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE3MjcxMT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iVmFsZXJpeSIvPjxiciAvPjxzdWI+PGI+VmFsZXJpeTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZhYmllbjAxMDIvb3BlbmFwaS1jb2RlZ2VuL2lzc3Vlcz9xPWF1dGhvciUzQXR2ZXJkb2hsZWIiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZhYmllbjAxMDIvb3BlbmFwaS1jb2RlZ2VuL2NvbW1pdHM/YXV0aG9yPXR2ZXJkb2hsZWIiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjaWRlYXMtdHZlcmRvaGxlYiIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vemVubi5kZXYvd2F0YWhheWEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTUyMTMzNjk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IklzY28iLz48YnIgLz48c3ViPjxiPklzY288L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mYWJpZW4wMTAyL29wZW5hcGktY29kZWdlbi9jb21taXRzP2F1dGhvcj1oYXlhd2F0YTM2MjYiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+Cgo8IS0tIG1hcmtkb3dubGludC1yZXN0b3JlIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+Cgo8IS0tIEFMTC1DT05UUklCVVRPUlMtTElTVDpFTkQgLS0+CgpUaGlzIHByb2plY3QgZm9sbG93cyB0aGUgW2FsbC1jb250cmlidXRvcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbGwtY29udHJpYnV0b3JzL2FsbC1jb250cmlidXRvcnMpIHNwZWNpZmljYXRpb24uIENvbnRyaWJ1dGlvbnMgb2YgYW55IGtpbmQgd2VsY29tZSEK readmeEtag: '"f72351ba76be36251b11a7144ede997c49b28a06"' readmeLastModified: Wed, 01 Oct 2025 08:48:09 GMT repositoryId: 417437020 description: A tool for generating code base on an OpenAPI schema. created: '2021-10-15T09:08:51Z' updated: '2026-02-05T17:21:17Z' language: TypeScript archived: false stars: 625 watchers: 4 forks: 73 owner: fabien0102 logo: https://avatars.githubusercontent.com/u/1761469?v=4 repoEtag: '"cbb7cfec48a84ec592e204c3800cdfb3d3a2df4d3f50f38496ab28e2320a638a"' repoLastModified: Thu, 05 Feb 2026 17:21:17 GMT category: Testing foundInMaster: true - source: openapi3 tags repository: https://github.com/cloud-annotations/docusaurus-openapi v3: true repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPkRvY3VzYXVydXMgT3BlbkFQSTwvaDE+Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPgoKT3BlbkFQSSBwbHVnaW4gZm9yIGdlbmVyYXRpbmcgQVBJIHJlZmVyZW5jZSBkb2NzIGluIERvY3VzYXVydXMuCgpbIVtsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWJsdWUuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2Nsb3VkLWFubm90YXRpb25zL2RvY3VzYXVydXMtcGx1Z2luLW9wZW5hcGkvYmxvYi9IRUFEL0xJQ0VOU0UpClshW25wbSBsYXRlc3QgcGFja2FnZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9kb2N1c2F1cnVzLXByZXNldC1vcGVuYXBpL2xhdGVzdC5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9kb2N1c2F1cnVzLXByZXNldC1vcGVuYXBpKQpbIVtucG0gZG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kbS9kb2N1c2F1cnVzLXBsdWdpbi1vcGVuYXBpLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2RvY3VzYXVydXMtcHJlc2V0LW9wZW5hcGkpClshW2J1aWxkXShodHRwczovL2dpdGh1Yi5jb20vY2xvdWQtYW5ub3RhdGlvbnMvZG9jdXNhdXJ1cy1wbHVnaW4tb3BlbmFwaS9hY3Rpb25zL3dvcmtmbG93cy92YWxpZGF0ZS55YW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9jbG91ZC1hbm5vdGF0aW9ucy9kb2N1c2F1cnVzLXBsdWdpbi1vcGVuYXBpL2FjdGlvbnMvd29ya2Zsb3dzL3ZhbGlkYXRlLnlhbWwpCjxici8+ClshW3ByZXR0aWVyXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NvZGVfc3R5bGUtcHJldHRpZXItZmY2OWI0LnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9wcmV0dGllci9wcmV0dGllcikKWyFbQ3lwcmVzcy5pb10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS90ZXN0ZWQlMjB3aXRoLUN5cHJlc3MtMDRDMzhFLnN2ZyldKGh0dHBzOi8vd3d3LmN5cHJlc3MuaW8vKQpbIVtqZXN0XShodHRwczovL2plc3Rqcy5pby9pbWcvamVzdC1iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svamVzdCkKWyFbUFJzIFdlbGNvbWVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvUFJzLXdlbGNvbWUtYnJpZ2h0Z3JlZW4uc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2Nsb3VkLWFubm90YXRpb25zL2RvY3VzYXVydXMtcGx1Z2luLW9wZW5hcGkvYmxvYi9IRUFEL0NPTlRSSUJVVElORy5tZCNwdWxsLXJlcXVlc3RzKQoKPC9kaXY+Cgo8cCBhbGlnbj0iY2VudGVyIj4KCiFbXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MjEyNzY5Lzg1MzI0Mzc2LWI5ZTNkOTAwLWI0OTctMTFlYS05NzY1LWM0MmE4YWQxZmY2MS5wbmcpCgo8L3A+CgojIyBRdWljayBPdmVydmlldwoKYGBgc2gKbnB4IGNyZWF0ZS1kb2N1c2F1cnVzLW9wZW5hcGkgbXktd2Vic2l0ZQpjZCBteS13ZWJzaXRlCm5wbSBzdGFydApgYGAKCj4gQ29taW5nIGZyb20gYHYwLjEuMGA/IFNlZSB0aGUgW21pZ3JhdGlvbiBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL2Nsb3VkLWFubm90YXRpb25zL2RvY3VzYXVydXMtcGx1Z2luLW9wZW5hcGkvcmVsZWFzZXMvdGFnL3YwLjIuMCkuCgpfKFtucHhdKGh0dHBzOi8vbWVkaXVtLmNvbS9AbWF5YmVrYXR6L2ludHJvZHVjaW5nLW5weC1hbi1ucG0tcGFja2FnZS1ydW5uZXItNTVmN2Q0YmQyODJiKSBjb21lcyB3aXRoIG5wbSA1LjIrIGFuZCBoaWdoZXIpXwoKVGhlbiBvcGVuIFtodHRwOi8vbG9jYWxob3N0OjMwMDAvXShodHRwOi8vbG9jYWxob3N0OjMwMDAvKSB0byBzZWUgeW91ciBzaXRlLjxicj4KV2hlbiB5b3XigJlyZSByZWFkeSB0byBkZXBsb3kgdG8gcHJvZHVjdGlvbiwgY3JlYXRlIGEgbWluaWZpZWQgYnVuZGxlIHdpdGggYG5wbSBydW4gYnVpbGRgLgoKIyMgQ3JlYXRpbmcgYSBuZXcgU2l0ZQoKKipZb3XigJlsbCBuZWVkIHRvIGhhdmUgTm9kZSAxNC4wLjAgb3IgbGF0ZXIgdmVyc2lvbiBvbiB5b3VyIGxvY2FsIGRldmVsb3BtZW50IG1hY2hpbmUqKiAoYnV0IGl04oCZcyBub3QgcmVxdWlyZWQgb24gdGhlIHNlcnZlcikuIFdlIHJlY29tbWVuZCB1c2luZyB0aGUgbGF0ZXN0IExUUyB2ZXJzaW9uLiBZb3UgY2FuIHVzZSBbbnZtXShodHRwczovL2dpdGh1Yi5jb20vY3JlYXRpb25peC9udm0jaW5zdGFsbGF0aW9uKSAobWFjT1MvTGludXgpIG9yIFtudm0td2luZG93c10oaHR0cHM6Ly9naXRodWIuY29tL2NvcmV5YnV0bGVyL252bS13aW5kb3dzI25vZGUtdmVyc2lvbi1tYW5hZ2VyLW52bS1mb3Itd2luZG93cykgdG8gc3dpdGNoIE5vZGUgdmVyc2lvbnMgYmV0d2VlbiBkaWZmZXJlbnQgcHJvamVjdHMuCgpUbyBjcmVhdGUgYSBuZXcgc2l0ZSwgeW91IG1heSBjaG9vc2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKCi0gIyMjIG5weAoKICBgYGBzaAogIG5weCBjcmVhdGUtZG9jdXNhdXJ1cy1vcGVuYXBpIG15LXdlYnNpdGUKICBgYGAKCiAgXyhbbnB4XShodHRwczovL21lZGl1bS5jb20vQG1heWJla2F0ei9pbnRyb2R1Y2luZy1ucHgtYW4tbnBtLXBhY2thZ2UtcnVubmVyLTU1ZjdkNGJkMjgyYikgaXMgYSBwYWNrYWdlIHJ1bm5lciB0b29sIHRoYXQgY29tZXMgd2l0aCBucG0gNS4yKyBhbmQgaGlnaGVyKV8KCi0gIyMjIG5wbQoKICBgYGBzaAogIG5wbSBpbml0IGRvY3VzYXVydXMtb3BlbmFwaSBteS13ZWJzaXRlCiAgYGBgCgogIF9gbnBtIGluaXQgPGluaXRpYWxpemVyPmAgaXMgYXZhaWxhYmxlIGluIG5wbSA2K18KCi0gIyMjIHlhcm4KCiAgYGBgc2gKICB5YXJuIGNyZWF0ZSBkb2N1c2F1cnVzLW9wZW5hcGkgbXktd2Vic2l0ZQogIGBgYAoKICBfW2B5YXJuIGNyZWF0ZSA8c3RhcnRlci1raXQtcGFja2FnZT5gXShodHRwczovL3lhcm5wa2cuY29tL2xhbmcvZW4vZG9jcy9jbGkvY3JlYXRlLykgaXMgYXZhaWxhYmxlIGluIFlhcm4gMC4yNStfCgpJdCB3aWxsIGNyZWF0ZSBhIGRpcmVjdG9yeSBjYWxsZWQgYG15LXdlYnNpdGVgIGluc2lkZSB0aGUgY3VycmVudCBmb2xkZXIuPGJyPgpJbnNpZGUgdGhhdCBkaXJlY3RvcnksIGl0IHdpbGwgZ2VuZXJhdGUgdGhlIGluaXRpYWwgcHJvamVjdCBzdHJ1Y3R1cmUgYW5kIGluc3RhbGwgdGhlIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzOgoKYGBgCm15LXdlYnNpdGUK4pSc4pSA4pSAIGJsb2cK4pSCICAg4pSc4pSA4pSAIDIwMTktMDUtMjgtaG9sYS5tZArilIIgICDilJzilIDilIAgMjAxOS0wNS0yOS1oZWxsby13b3JsZC5tZArilIIgICDilJTilIDilIAgMjAyMC0wNS0zMC13ZWxjb21lLm1kCuKUnOKUgOKUgCBkb2NzCuKUgiAgIOKUnOKUgOKUgCBkb2MxLm1kCuKUgiAgIOKUnOKUgOKUgCBkb2MyLm1kCuKUgiAgIOKUnOKUgOKUgCBkb2MzLm1kCuKUgiAgIOKUlOKUgOKUgCBtZHgubWQK4pSc4pSA4pSAIHNyYwrilIIgICDilJzilIDilIAgY3NzCuKUgiAgIOKUgiAgIOKUlOKUgOKUgCBjdXN0b20uY3NzCuKUgiAgIOKUlOKUgOKUgCBwYWdlcwrilIIgICAgICAg4pSc4pSA4pSAIHN0eWxlcy5tb2R1bGUuY3NzCuKUgiAgICAgICDilJTilIDilIAgaW5kZXguanMK4pSc4pSA4pSAIHN0YXRpYwrilIIgICDilJTilIDilIAgaW1nCuKUnOKUgOKUgCAuZ2l0aWdub3JlCuKUnOKUgOKUgCBvcGVuYXBpLmpzb24K4pSc4pSA4pSAIGRvY3VzYXVydXMuY29uZmlnLmpzCuKUnOKUgOKUgCBiYWJlbC5jb25maWcuanMK4pSc4pSA4pSAIHBhY2thZ2UuanNvbgrilJzilIDilIAgc2lkZWJhcnMuanMK4pSU4pSA4pSAIFJFQURNRS5tZApgYGAKCi0gYC9kb2N1c2F1cnVzLmNvbmZpZy5qc2AgLSBBIGNvbmZpZyBmaWxlIGNvbnRhaW5pbmcgdGhlIHNpdGUgY29uZmlndXJhdGlvbi4gVGhpcyBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgdGhlIE9wZW5BUEkgcHJlc2V0Ci0gYC9vcGVuYXBpLmpzb25gIC0gVGhlIGRlZmF1bHQgT3BlbkFQSSBkZWZpbml0aW9uIHRoYXQgd2lsbCBiZSBzZXJ2ZWQgXyhwYXRoIGNhbiBiZSBjb25maWd1cmVkIGluIGBkb2N1c2F1cnVzLmNvbmZpZy5qc2ApXy4KCkZvciBtb3JlIGluZm8gc2VlIFtwcm9qZWN0IHN0cnVjdHVyZSBydW5kb3duXShodHRwczovL2RvY3VzYXVydXMuaW8vZG9jcy9pbnN0YWxsYXRpb24jcHJvamVjdC1zdHJ1Y3R1cmUtcnVuZG93bikuCgpPbmNlIHRoZSBpbnN0YWxsYXRpb24gaXMgZG9uZSwgeW91IGNhbiBvcGVuIHlvdXIgcHJvamVjdCBmb2xkZXI6CgpgYGBzaApjZCBteS13ZWJzaXRlCmBgYAoKSW5zaWRlIHRoZSBuZXdseSBjcmVhdGVkIHByb2plY3QsIHlvdSBjYW4gcnVuIHNvbWUgYnVpbHQtaW4gY29tbWFuZHM6CgojIyMgYG5wbSBzdGFydGAgb3IgYHlhcm4gc3RhcnRgCgpSdW5zIHRoZSBzaXRlIGluIGRldmVsb3BtZW50IG1vZGUuPGJyPgpPcGVuIFtodHRwOi8vbG9jYWxob3N0OjMwMDBdKGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMCkgdG8gdmlldyBpdCBpbiB0aGUgYnJvd3Nlci4KClRoZSBwYWdlIHdpbGwgYXV0b21hdGljYWxseSByZWxvYWQgaWYgeW91IG1ha2UgY2hhbmdlcyB0byB0aGUgY29kZS4KCiMjIyBgbnBtIHJ1biBidWlsZGAgb3IgYHlhcm4gYnVpbGRgCgpCdWlsZHMgdGhlIHNpdGUgZm9yIHByb2R1Y3Rpb24gdG8gdGhlIGBidWlsZGAgZm9sZGVyLgoKRG9jdXNhdXJ1cyBpcyBhIG1vZGVybiBzdGF0aWMgd2Vic2l0ZSBnZW5lcmF0b3IgdGhhdCB3aWxsIGJ1aWxkIHRoZSB3ZWJzaXRlIGludG8gYSBkaXJlY3Rvcnkgb2Ygc3RhdGljIGNvbnRlbnRzLCB3aGljaCBjYW4gYmUgY29waWVkIHRvIGFueSBzdGF0aWMgZmlsZSBob3N0aW5nIHNlcnZpY2UgbGlrZSBbR2l0SHViIHBhZ2VzXShodHRwczovL3BhZ2VzLmdpdGh1Yi5jb20vKSwgW1ZlcmNlbF0oaHR0cHM6Ly92ZXJjZWwuY29tLykgb3IgW05ldGxpZnldKGh0dHBzOi8vd3d3Lm5ldGxpZnkuY29tLykuCgojIyBBZGQgdG8gYW4gZXhpc3RpbmcgU2l0ZQoKMS4gSW5zdGFsbCB0aGUgZGVwZW5kZW5jeQoKICAgYGBgc2gKICAgbnBtIGluc3RhbGwgZG9jdXNhdXJ1cy1wcmVzZXQtb3BlbmFwaQogICBgYGAKCjIuIEVkaXQgeW91ciBgZG9jdXNhdXJ1cy5jb25maWcuanNgIGZpbGUgdG8gdXNlIHRoaXMgcHJlc2V0CiAgIGBgYGpzCiAgIHByZXNldHM6IFsKICAgICBbCiAgICAgICAiZG9jdXNhdXJ1cy1wcmVzZXQtb3BlbmFwaSIsCiAgICAgICAvKiogQHR5cGUge2ltcG9ydCgnZG9jdXNhdXJ1cy1wcmVzZXQtb3BlbmFwaScpLk9wdGlvbnN9ICovCiAgICAgICB7CiAgICAgICAgIGFwaTogewogICAgICAgICAgIHBhdGg6ICI8UEFUSF9UT19ZT1VSX09QRU5BUElfRE9DVU1FTlQ+IiwKICAgICAgICAgICByb3V0ZUJhc2VQYXRoOiAiL2FwaSIsCiAgICAgICAgIH0sCiAgICAgICAgIGRvY3M6IHsKICAgICAgICAgICBzaWRlYmFyUGF0aDogcmVxdWlyZS5yZXNvbHZlKCIuL3NpZGViYXJzLmpzIiksCiAgICAgICAgICAgcm91dGVCYXNlUGF0aDogIi8iLAogICAgICAgICB9LAogICAgICAgICB0aGVtZTogewogICAgICAgICAgIGN1c3RvbUNzczogcmVxdWlyZS5yZXNvbHZlKCIuL3NyYy9jc3MvY3VzdG9tLmNzcyIpLAogICAgICAgICB9LAogICAgICAgfSwKICAgICBdLAogICBdOwogICBgYGAKCiMjIFBvcHVsYXIgQWx0ZXJuYXRpdmVzCgpEb2N1c2F1cnVzIE9wZW5BUEkgaXMgZ3JlYXQgZm9yOgoKLSAqKlN0YXRpYyBnZW5lcmF0aW9uKiogQWxsIE9wZW5BUEkgb3BlcmF0aW9ucyB3aWxsIGJlIHJlbmRlcmVkIGFzIHN0YXRpYyBwYWdlcyBhdCBidWlsZCB0aW1lLCBnaXZpbmcgbWFueSBwZXJmb3JtYW5jZSBiZW5lZml0cy4KLSAqKkRlbW8gcGFuZWwqKiBBbGxvdyB1c2VycyB0byB0cnkgb3V0IHlvdXIgQVBJIHdpdGggYW4gaW50ZXJhY3RpdmUgZGVtbyBwYW5lbC4KLSAqKk5hdGl2ZSBEb2N1c2F1cnVzIGZlZWwqKiBCdWlsdCBmcm9tIHNjcmF0Y2ggdG8gd29yayB3aXRoIERvY3VzYXVydXMuCgpIZXJlIGFyZSBhIGZldyBjb21tb24gY2FzZXMgd2hlcmUgeW91IG1pZ2h0IHdhbnQgdG8gdHJ5IHNvbWV0aGluZyBlbHNlOgoKLSBJZiB5b3UgbmVlZCBiZXR0ZXIgc3VwcG9ydCBmb3IgbW9yZSBhZHZhbmNlZCBPcGVuQVBJIGZlYXR1cmVzLCBjaGVjayBvdXQgW1JlZG9jdXNhdXJ1c10oaHR0cHM6Ly9naXRodWIuY29tL3JvaGl0LWdvaHJpL3JlZG9jdXNhdXJ1cy8pLiBSZWRvY3VzYXVydXMgZW1iZWRzIHRoZSBtdWNoIG1vcmUgbWF0dXJlIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IsIFtSZWRvY10oaHR0cHM6Ly9naXRodWIuY29tL1JlZG9jbHkvcmVkb2MpLCBpbnRvIERvY3VzYXVydXMgYXMgYSBSZWFjdCBjb21wb25lbnQuCgojIyBDb250cmlidXRpbmcKCldlIGVuY291cmFnZSB5b3UgdG8gY29udHJpYnV0ZSB0byBEb2N1c2F1cnVzIE9wZW5BUEkhIFBsZWFzZSBjaGVjayBvdXQgdGhlCltDb250cmlidXRpbmcgdG8gRG9jdXNhdXJ1cyBPcGVuQVBJIGd1aWRlXShodHRwczovL2dpdGh1Yi5jb20vY2xvdWQtYW5ub3RhdGlvbnMvZG9jdXNhdXJ1cy1wbHVnaW4tb3BlbmFwaS9ibG9iL21haW4vQ09OVFJJQlVUSU5HLm1kKSBmb3IgZ3VpZGVsaW5lcyBhYm91dCBob3cgdG8gcHJvY2VlZC4KCiMjIExpY2Vuc2UKCkRvY3VzYXVydXMgT3BlbkFQSSBpcyByZWxlYXNlZCB1bmRlciB0aGUgW01JVCBMaWNlbnNlXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuCg== readmeEtag: '"fb57583ef6d0b6fe8c3ace74ef386b379a77d012"' readmeLastModified: Thu, 02 Jan 2025 22:02:55 GMT repositoryId: 273958287 description: 🦕 OpenAPI plugin for generating API reference docs in Docusaurus. created: '2020-06-21T18:06:52Z' updated: '2026-01-17T20:34:22Z' language: TypeScript archived: false stars: 537 watchers: 8 forks: 84 owner: cloud-annotations logo: https://avatars.githubusercontent.com/u/47490031?v=4 license: MIT repoEtag: '"bce561231a8197e53a758a6da7204e7dc719cfe8179c6a5860abd62c5c66e02a"' repoLastModified: Sat, 17 Jan 2026 20:34:22 GMT foundInMaster: true category: SDK id: 5acf9bbe5338a800925f2b0e23eca0a1 - source: openapi3 tags repository: https://github.com/oazapfts/oazapfts v3: true id: b866db159ac2a8a130a7c78d142b32bc repositoryMetadata: base64Readme: >- IyDwn427IG9hemFwZnRzIQoKWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXphcGZ0cy9vYXphcGZ0cy9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL29hemFwZnRzL29hemFwZnRzL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbCkKWyFbc2VtYW50aWMtcmVsZWFzZTogYW5ndWxhcl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9zZW1hbnRpYy0tcmVsZWFzZS1hbmd1bGFyLWUxMDA3OT9sb2dvPXNlbWFudGljLXJlbGVhc2UpXShodHRwczovL2dpdGh1Yi5jb20vc2VtYW50aWMtcmVsZWFzZS9zZW1hbnRpYy1yZWxlYXNlKQoKR2VuZXJhdGUgVHlwZVNjcmlwdCBjbGllbnRzIHRvIHRhcCBpbnRvIE9wZW5BUEkgc2VydmVycy4KCiFbXShodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE5NjA3NjI1P3M9MjAwJnY9NCkKCiMjIEZlYXR1cmVzCgotICoqQVNULWJhc2VkKio6CiAgVW5saWtlIG90aGVyIGNvZGUgZ2VuZXJhdG9ycyBgb2F6YXBmdHNgIGRvZXMgbm90IHVzZSB0ZW1wbGF0ZXMgdG8gZ2VuZXJhdGUgY29kZSBidXQgdXNlcyBUeXBlU2NyaXB0J3MgYnVpbHQtaW4gQVBJIHRvIGdlbmVyYXRlIGFuZCBwcmV0dHktcHJpbnQgYW4gYWJzdHJhY3Qgc3ludGF4IHRyZWUuCi0gKipGYXN0Kio6IFRoZSBDTEkgZG9lcyBub3QgdXNlIGFueSBvZiB0aGUgY29tbW9uIEphdmEtYmFzZWQgdG9vbGluZywgc28gdGhlIGNvZGUgZ2VuZXJhdGlvbiBpcyBzdXBlciBmYXN0LgotICoqU2luZ2xlIGZpbGUqKjogQWxsIGZ1bmN0aW9ucyBhbmQgdHlwZXMgYXJlIGNvLWxvY2F0ZWQgaW4gb25lIHNpbmdsZSBzZWxmLWNvbnRhaW5lZCBmaWxlLgotICoqVHJlZS1zaGFrZWFibGUqKjogSW5kaXZpZHVhbGx5IGV4cG9ydGVkIGZ1bmN0aW9ucyBhbGxvdyB5b3UgdG8gYnVuZGxlIG9ubHkgdGhlIG9uZXMgeW91IGFjdHVhbGx5IHVzZS4KLSAqKkh1bWFuIGZyaWVuZGx5IHNpZ25hdHVyZXMqKjogVGhlIGdlbmVyYXRlZCBBUEkgbWV0aG9kcyBkb24ndCBsZWFrIGFueSBIVFRQLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIEZvciBleGFtcGxlLCBhbGwgb3B0aW9uYWwgcGFyYW1ldGVycyBhcmUgZ3JvdXBlZCB0b2dldGhlciBpbiBvbmUgb2JqZWN0LCBubyBtYXR0ZXIgd2hldGhlciB0aGV5IGVuZCB1cCBpbiB0aGUgaGVhZGVycywgcGF0aCBvciBxdWVyeS1zdHJpbmcuCgojIyBJbnN0YWxsYXRpb24KCmBgYApucG0gaW5zdGFsbCBvYXphcGZ0cwpgYGAKCj4gKipOb3RlKioKPiBXaXRoIHZlcnNpb24gMy4wLjAgb2F6YXBmdHMgaGFzIGJlY29tZSBhIHJ1bnRpbWUgZGVwZW5kZW5jeSBhbmQgdGhlIGdlbmVyYXRlZCBjb2RlIGRvZXMgbm8gbG9uZ2VyIGluY2x1ZGUgYWxsIHRoZSBmZXRjaCBsb2dpYy4gIAo+IEFzIG9mIDYuMC4wIHRoZSBydW50aW1lIGhhcyBiZWVuIG1vdmVkIHRvIGEgc2VwYXJhdGUgcGFja2FnZSwgYEBvYXphcGZ0cy9ydW50aW1lYC4KCiMjIFVzYWdlCgpgYGAKb2F6YXBmdHMgPHNwZWM+IFtmaWxlbmFtZV0KCk9wdGlvbnM6Ci0tZXhjbHVkZSwgLWUgdGFnIHRvIGV4Y2x1ZGUKLS1pbmNsdWRlLCAtaSB0YWcgdG8gaW5jbHVkZQotLW9wdGltaXN0aWMKLS11c2VFbnVtVHlwZQotLXVzZVVua25vd24KLS1tZXJnZVJlYWRXcml0ZU9ubHkKLS1hcmd1bWVudFN0eWxlPTxwb3NpdGlvbmFsIHwgb2JqZWN0PiAoZGVmYXVsdDogcG9zaXRpb25hbCkKLS1hbGxTY2hlbWFzCi0tZnV0dXJlU3RyaXBMZWdhY3lNZXRob2RzCmBgYAoKV2hlcmUgYDxzcGVjPmAgaXMgdGhlIFVSTCBvciBsb2NhbCBwYXRoIG9mIGFuIE9wZW5BUEkgb3IgU3dhZ2dlciBzcGVjIChpbiBlaXRoZXIganNvbiBvciB5bWwpIGFuZCBgPGZpbGVuYW1lPmAgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBgLnRzYCBmaWxlIHRvIGJlIGdlbmVyYXRlZC4gSWYgdGhlIGZpbGVuYW1lIGlzIG9taXR0ZWQsIHRoZSBjb2RlIGlzIHdyaXR0ZW4gdG8gc3Rkb3V0LgoKIyMjIE9wdGlvbnMKCi0gYC0tb3B0aW1pc3RpY2AgZ2VuZXJhdGUgYSBjbGllbnQgaW4gW29wdGltaXN0aWMgbW9kZV0oI29wdGltaXN0aWMtbW9kZSkKCi0gYC0tdXNlRW51bVR5cGVgIGdlbmVyYXRlIGVudW1zIGluc3RlYWQgb2YgdW5pb24gdHlwZXMKCi0gYC0tdXNlVW5rbm93bmAgZ2VuZXJhdGUgYHVua25vd25gIGluc3RlYWQgb2YgYGFueWAgZm9yIGVtcHR5IHNjaGVtYXMKCi0gYC0tbWVyZ2VSZWFkV3JpdGVPbmx5YCBieSBkZWZhdWx0IG9hemFwZnMgd2lsbCBnZW5lcmF0ZSBzZXBhcmF0ZSB0eXBlcyBmb3IgcmVhZC1vbmx5IGFuZCB3cml0ZS1vbmx5IHByb3BlcnRpZXMuIFRoaXMgb3B0aW9uIHdpbGwgbWVyZ2UgdGhlbSBpbnRvIG9uZSB0eXBlLgoKLSBgLS1hcmd1bWVudFN0eWxlYCBpZiAib2JqZWN0IiBnZW5lcmF0ZWQgZnVuY3Rpb25zIHRha2Ugc2luZ2xlIG9iamVjdCBzdHlsZSBhcmd1bWVudCBmb3IgcGFyYW1ldGVycyBhbmQgcmVxdWVzdEJvZHksIGJ5IGRlZmF1bHQgaXQncyAicG9zaXRpb25hbCIgYW5kIHBhcmFtZXRlcnMgYXJlIHNlcGFyYXRlIGFzIHBvc2l0aW9uYWwgYXJndW1lbnRzCgotIGAtLWFsbFNjaGVtYXNgIGdlbmVyYXRlIHR5cGVzIGZvciBhbGwgc2NoZW1hcyBpbmNsdWRlZCBpbiB0aGUgc3BlYwoKLSBgLS1mdXR1cmVTdHJpcExlZ2FjeU1ldGhvZHNgIHNraXAgZ2VuZXJhdGluZyBkZXByZWNhdGVkIGxlZ2FjeSBtZXRob2QgYWxpYXNlcy4gIAogIEJ5IGRlZmF1bHQsIHdoZW4gYW4gYG9wZXJhdGlvbklkYCBjb250YWlucyBzcGVjaWFsIGNoYXJhY3RlcnMgKGxpa2UgZG90cyBvciBjb2xvbnMsIGUuZy4gYHNjb3BlMS51c2VyQWNjb3VudC5nZXRgKSwgb2F6YXBmdHMgZ2VuZXJhdGVzIGJvdGggYSBub3JtYWxpemVkIG1ldGhvZCBuYW1lIChgc2NvcGUxVXNlckFjY291bnRHZXRgKSBhbmQgYSBkZXByZWNhdGVkIGZhbGxiYWNrIHVzaW5nIHRoZSBIVFRQIHZlcmIgYW5kIHBhdGggKGBnZXRVc2Vyc0J5SWRgKSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gVXNlIHRoaXMgZmxhZyB0byBvbmx5IGdlbmVyYXRlIHRoZSBub3JtYWxpemVkIG9wZXJhdGlvbklkLWJhc2VkIG5hbWVzLgogIFRoZSBuZXh0IG1ham9yIHZlcnNpb24gd2lsbCBkZWZhdWx0IHRvIHRoaXMgYmVoYXZpb3IuCgojIyBDb25zdW1pbmcgdGhlIGdlbmVyYXRlZCBBUEkKCkZvciBlYWNoIG9wZXJhdGlvbiBkZWZpbmVkIGluIHRoZSBzcGVjIHRoZSBnZW5lcmF0ZWQgQVBJIHdpbGwgZXhwb3J0IGEgZnVuY3Rpb24gd2l0aCBhIG5hbWUgbWF0Y2hpbmcgdGhlIGBvcGVyYXRpb25JZGAuIElmIG5vIElEIGlzIHNwZWNpZmllZCwgYSByZWFzb25hYmxlIG5hbWUgaXMgZ2VuZXJhdGVkIGZyb20gdGhlIEhUVFAgdmVyYiBhbmQgdGhlIHBhdGguCgpgYGB0cwppbXBvcnQgKiBhcyBhcGkgZnJvbSAiLi9teS1nZW5lcmF0ZWQtYXBpLnRzIjsKY29uc3QgcmVzID0gYXBpLmdldFBldEJ5SWQoMSk7CmBgYAoKPiAqKk5vdGUqKgo+IElmIHlvdXIgQVBJIGlzIGxhcmdlLCBhbmQgeW91IHdhbnQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdHJlZS1zaGFraW5nIHRvIGV4Y2x1ZGUgdW51c2VkIGNvZGUsIHVzZSBpbmRpdmlkdWFsIG5hbWVkIGltcG9ydHMgaW5zdGVhZDoKCmBgYHRzCmltcG9ydCB7IGdldFBldEJ5SWQgfSBmcm9tICIuL215LWdlbmVyYXRlZC1hcGkudHMiOwpgYGAKCiMjIEZldGNoIG9wdGlvbnMKClRoZSAqKmxhc3QgYXJndW1lbnQqKiBvZiBlYWNoIGZ1bmN0aW9uIGlzIGFuIG9wdGlvbmFsIFtgUmVxdWVzdE9wdHNgXShodHRwczovL2dpdGh1Yi5jb20vb2F6YXBmdHMvb2F6YXBmdHMvYmxvYi8yN2IyOTZjNmZjMjhmZWM0ODY5ZjFiN2UxYTRhNTU4NWViYmQ1ZWU5L3NyYy9ydW50aW1lL2luZGV4LnRzI0w1KSBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byBwYXNzIG9wdGlvbnMgdG8gdGhlIGBmZXRjaGAgY2FsbCwgZm9yIGV4YW1wbGUgdG8gcGFzcyBhZGRpdGlvbmFsIGBoZWFkZXJzYCBvciBhbiBgQWJvcnRTaWduYWxgIHRvIGNhbmNlbCB0aGUgcmVxdWVzdCBsYXRlciBvbi4KCmBgYHRzCmNvbnN0IHJlcyA9IGdldFBldEJ5SWQoMSwgewogIGNyZWRlbnRpYWxzOiAiaW5jbHVkZSIsCiAgaGVhZGVyczogewogICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsCiAgfSwKfSk7CmBgYAoKWW91IGNhbiBhbHNvIHVzZSB0aGlzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGBiYXNlVXJsYCBvciB0byBwcm92aWRlIGEgY3VzdG9tIGBmZXRjaGAgaW1wbGVtZW50YXRpb24uCgo+ICoqTm90ZSoqCj4gSW5zdGVhZCBvZiBwYXNzaW5nIGN1c3RvbSBvcHRpb25zIHRvIGVhY2ggZnVuY3Rpb24gY2FsbCwgY29uc2lkZXIgW292ZXJ3cml0aW5nIHRoZSBnbG9iYWwgZGVmYXVsdHNdKCNvdmVycmlkaW5nLXRoZS1kZWZhdWx0cykuCgojIyBPcHRpbWlzdGljIHZzLiBleHBsaWNpdCByZXNwb25zZXMKCk9hemFwZnRzIHN1cHBvcnRzIHR3byBkaWZmZXJlbnQgbW9kZXMgdG8gaGFuZGxlIHJlc3VsdHMsCmFuIFtleHBsaWNpdF0oI2V4cGxpY2l0LW1vZGUpIG1vZGUgKHRoZSBkZWZhdWx0KSBhbmQgYW4gW29wdGltaXN0aWNdKCNvcHRpbWlzdGljLW1vZGUpIG1vZGUsIHRoYXQgbWFrZXMgdGhlIHJlc3BvbnNlIGhhbmRsaW5nIGxlc3MgdmVyYm9zZS4KCiMjIEV4cGxpY2l0IG1vZGUKCkJ5IGRlZmF1bHQsIGVhY2ggZnVuY3Rpb24gcmV0dXJucyBhbiBgQXBpUmVzcG9uc2VgIG9iamVjdCB0aGF0IGV4cG9zZXMgdGhlIGBzdGF0dXNgIGNvZGUsIHJlc3BvbnNlIGBoZWFkZXJzYCBhbmQgdGhlIGBkYXRhYC4KCj4gKipOb3RlKioKPiBUaGlzIG1vZGUgaXMgYmVzdCBzdWl0ZWQgZm9yIEFQSXMgdGhhdCByZXR1cm4gZGlmZmVyZW50IHR5cGVzIGZvciBkaWZmZXJlbnQgcmVzcG9uc2UgY29kZXMgb3IgQVBJcyB3aGVyZSB5b3UgbmVlZCB0byBhY2Nlc3Mgbm90IG9ubHkgdGhlIHJlc3BvbnNlIGJvZHksIGJ1dCBhbHNvIHRoZSByZXNwb25zZSBoZWFkZXJzLiBJZiB5b3VyIEFQSSBpcyBzaW1wbGUsIGFuZCB5b3UgZG9uJ3QgbmVlZCB0aGlzIGZsZXhpYmlsaXR5LCBjb25zaWRlciB1c2luZyB0aGUgW29wdGltaXN0aWMgbW9kZV0oI29wdGltaXN0aWMtbW9kZSkgaW5zdGVhZC4KCkluIGV4cGxpY2l0IG1vZGUsIGVhY2ggZnVuY3Rpb24gcmV0dXJucyBhIFByb21pc2UgZm9yIGFuIGBBcGlSZXNwb25zZWAgd2hpY2ggaXMgYW4gb2JqZWN0IHdpdGggYSBgc3RhdHVzYCBhbmQgYSBgZGF0YWAgcHJvcGVydHksIGhvbGRpbmcgdGhlIEhUVFAgc3RhdHVzIGNvZGUgYW5kIHRoZSBwcm9wZXJseSB0eXBlZCBkYXRhIGZyb20gdGhlIHJlc3BvbnNlIGJvZHkuCgpTaW5jZSBhbiBvcGVyYXRpb24gY2FuIHJldHVybiBkaWZmZXJlbnQgdHlwZXMgZGVwZW5kaW5nIG9uIHRoZSBzdGF0dXMgY29kZSwgdGhlIGFjdHVhbCByZXR1cm4gdHlwZSBpcyBhIF91bmlvbl8gb2YgYWxsIHBvc3NpYmxlIHJlc3BvbnNlcywgZGlzY3JpbWluYXRlZCBieSB0aGVpciBzdGF0dXMuCgpDb25zaWRlciB0aGUgZm9sbG93aW5nIGNvZGUgZ2VuZXJhdGVkIGZyb20gdGhlIGBwZXRzdG9yZS5qc29uYCBleGFtcGxlOgoKYGBgdHMKLyoqCiAqIEZpbmQgcGV0IGJ5IElECiAqLwpleHBvcnQgZnVuY3Rpb24gZ2V0UGV0QnlJZChwZXRJZDogbnVtYmVyLCBvcHRzPzogT2F6YXBmdHMuUmVxdWVzdE9wdHMpIHsKICByZXR1cm4gb2F6YXBmdHMuZmV0Y2hKc29uPAogICAgfCB7CiAgICAgICAgc3RhdHVzOiAyMDA7CiAgICAgICAgZGF0YTogUGV0OwogICAgICB9CiAgICB8IHsKICAgICAgICBzdGF0dXM6IDQwMDsKICAgICAgICBkYXRhOiBzdHJpbmc7CiAgICAgIH0KICAgIHwgewogICAgICAgIHN0YXR1czogNDA0OwogICAgICB9CiAgPihgL3BldC8ke2VuY29kZVVSSUNvbXBvbmVudChwZXRJZCl9YCwgewogICAgLi4ub3B0cywKICB9KTsKfQpgYGAKCkluIHRoaXMgY2FzZSwgdGhlIGBkYXRhYCBwcm9wZXJ0eSBpcyB0eXBlZCBhcyBgUGV0fHN0cmluZ2AuIFdlIGNhbiB1c2UgYSB0eXBlIGd1YXJkIHRvIG5hcnJvdyBkb3duIHRoZSB0eXBlIHRvIGBQZXRgOgoKYGBgdHMKY29uc3QgcmVzID0gYXdhaXQgYXBpLmdldFBldEJ5SWQoMSk7CmlmIChyZXMuc3RhdHVzID09PSAyMDApIHsKICBjb25zdCBwZXQgPSByZXMuZGF0YTsKICAvLyBwZXQgaXMgcHJvcGVybHkgdHlwZWQgYXMgUGV0Cn0KaWYgKHJlcy5zdGF0dXMgPT09IDQwNCkgewogIGNvbnN0IG1lc3NhZ2UgPSByZXMuZGF0YTsKICAvLyBtZXNzYWdlIGlzIGEgc3RyaW5nCn0gZWxzZSB7CiAgLy8gaGFuZGxlIHRoZSBlcnJvcgp9CmBgYAoKVGhlIGFib3ZlIGNvZGUgY2FuIGJlIHNpbXBsaWZpZWQgYnkgdXNpbmcgdGhlIGBoYW5kbGVgIGhlbHBlcjoKCmBgYHRzCmltcG9ydCB7IGhhbmRsZSB9IGZyb20gIkBvYXphcGZ0cy9ydW50aW1lIjsKCmF3YWl0IGhhbmRsZShhcGkuZ2V0UGV0QnlJZCgxKSwgewogIDIwMChwZXQpIHsKICAgIC8vIHBldCBpcyBwcm9wZXJseSB0eXBlZCBhcyBQZXQKICB9LAogIDQwNChtZXNzYWdlKSB7CiAgICAvLyBtZXNzYWdlIGlzIGFzIHN0cmluZwogIH0sCn0pOwpgYGAKClRoZSBoZWxwZXIgd2lsbCB0aHJvdyBhbiBgSHR0cEVycm9yYCBlcnJvciBmb3IgYW55IHVuaGFuZGxlZCBzdGF0dXMgY29kZSwgdW5sZXNzIHlvdSBhZGQgYSBgZGVmYXVsdGAgaGFuZGxlcjoKCmBgYHRzCmF3YWl0IGhhbmRsZShhcGkuZ2V0UGV0QnlJZCgxKSwgewogIDIwMChwZXQpIHsKICAgIC8vIC4uLgogIH0sCiAgZGVmYXVsdChzdGF0dXMsIGRhdGEpIHsKICAgIC8vIGhhbmRsZSBlcnJvcgogIH0sCn0pOwpgYGAKCiMjIE9wdGltaXN0aWMgbW9kZQoKWW91IGNhbiBvcHQgaW50byB0aGUgX29wdGltaXN0aWMgbW9kZV8gYnkgdXNpbmcgdGhlIGAtLW9wdGltaXN0aWNgIGNvbW1hbmQgbGluZSBhcmd1bWVudC4KCkluIHRoaXMgbW9kZSwgZWFjaCBmdW5jdGlvbiB3aWxsIHJldHVybiBhIFByb21pc2UgZm9yIHRoZSBoYXBweSBwYXRoLCBpLmUuIHRoZSB0eXBlIHNwZWNpZmllZCBmb3IgdGhlIGZpcnN0IGAyeHhgIHJlc3BvbnNlLgoKTG9va2luZyBiYWNrIGF0IG91ciBQZXQgU3RvcmUgZXhhbXBsZSBmcm9tIGFib3ZlLCBjb25zdW1pbmcgdGhlIHJlc3BvbnNlIGlzIG5vdyBtdWNoIGVhc2llciBhbmQgbGVzcyB2ZXJib3NlOgoKYGBgdHMKY29uc3QgcGV0ID0gYXdhaXQgYXBpLmdldFBldEJ5SWQoMSk7Ci8vIHBldCBpcyBub3cgdHlwZWQgYXMgUGV0IQpgYGAKCkluIGNhc2Ugb2YgYSByZXNwb25zZSBvdGhlciB0aGFuIGAyMDBgIHRoZSBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aCBhIGBIdHRwRXJyb3JgLgoKIyMgTWl4aW5nIGJvdGggbW9kZXMKClNvbWV0aW1lcyB5b3UgbWlnaHQgd2FudCB0byB1c2UgdGhlIG9wdGltaXN0aWMgbW9kZSBmb3Igc29tZSBvZiB5b3VyIEFQSSBjYWxscywgYnV0IG5lZWQgdGhlIGZ1bGwgYEFwaVJlc3BvbnNlYCBmb3Igb3RoZXJzLgoKSW4gdGhhdCBjYXNlLCB5b3UgY2FuIHVzZSB0aGUgYG9rYC1oZWxwZXIgZnVuY3Rpb24gdG8gc2VsZWN0aXZlbHkgYXBwbHkgb3B0aW1pc3RpYyByZXNwb25zZSBoYW5kbGluZzoKCmBgYHRzCmltcG9ydCB7IG9rIH0gZnJvbSAiQG9hemFwZnRzL3J1bnRpbWUiOwoKY29uc3QgcGV0ID0gYXdhaXQgb2soYXBpLmdldFBldEJ5SWQoMSkpOwpgYGAKCiMjIE92ZXJyaWRpbmcgdGhlIGRlZmF1bHRzCgpUaGUgZ2VuZXJhdGVkIGZpbGUgZXhwb3J0cyBhIGBkZWZhdWx0c2AgY29uc3RhbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgYGJhc2VQYXRoYCwgcHJvdmlkZSBhIGN1c3RvbSBgZmV0Y2hgIGltcGxlbWVudGF0aW9uIG9yIHRvIHNlbmQgYWRkaXRpb25hbCBgaGVhZGVyc2Agd2l0aCBlYWNoIHJlcXVlc3QuIEJhc2ljYWxseSwgeW91IGNhbiBzZXQgYSBkZWZhdWx0IGZvciBhbnkgW2ZldGNoIG9wdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL2ZldGNoI29wdGlvbnMpIHlvdSB3YW50LgoKYGBgdHMKaW1wb3J0ICogYXMgYXBpIGZyb20gIi4vYXBpLnRzIjsKaW1wb3J0IG5vZGVGZXRjaCBmcm9tICJub2RlLWZldGNoIjsKCi8vIE92ZXJyaWRlIHRoZSBzcGVjJ3MgYmFzZVBhdGgKYXBpLmRlZmF1bHRzLmJhc2VQYXRoID0gImh0dHBzOi8vZXhhbXBsZS5jb20vYXBpIjsKCi8vIFNlbmQgdGhpcyBoZWFkZXIgd2l0aCBlYWNoIHJlcXVlc3QKYXBpLmRlZmF1bHRzLmhlYWRlcnMgPSB7CiAgYWNjZXNzX3Rva2VuOiAic2VjcmV0IiwKfTsKCi8vIEluY2x1ZGUgY3JlZGVudGlhbHMgaW4gQ09SUyByZXF1ZXN0cywgdG9vCmFwaS5kZWZhdWx0cy5jcmVkZW50aWFscyA9ICJpbmNsdWRlIjsKCi8vIFVzZSB0aGlzIGluc3RlYWQgb2YgdGhlIGdsb2JhbCBmZXRjaAphcGkuZGVmYXVsdHMuZmV0Y2ggPSBub2RlRmV0Y2g7CmBgYAoKIyMgQWx0ZXJuYXRpdmVzIGFuZCBpbnRlZ3JhdGlvbnMKCklmIHRoaXMgbGlicmFyeSBkb2Vzbid0IGZpdCB5b3VyIG5lZWRzLCB0YWtlIGEgbG9vayBhdCBbb3BlbmFwaS10eXBlc2NyaXB0LWNvZGVnZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJkaWtvb21lbi9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZWdlbikgd2hpY2ggZm9sbG93cyBhIHNpbWlsYXIgcGhpbG9zb3BoeSBidXQgY3JlYXRlcyBtYW55IGluZGl2aWR1YWwgZmlsZXMgaW5zdGVhZCBvZiBvbmUgc2luZ2xlIHNlbGYtY29udGFpbmVkIGZpbGUuCgpJZiB5b3VyIGZyb250ZW5kIHVzZXMgUmVhY3QsIHRha2UgYSBsb29rIGF0IFtyZWFjdC1hcGktcXVlcnldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3JlYWN0LWFwaS1xdWVyeSkgd2hpY2ggbWFrZXMgaXQgZWFzeSB0byB1c2UgYW4gb2F6YXBmdHMgY2xpZW50IHdpdGggUmVhY3QgaG9va3MgaW4gYSBjb252ZW5pZW50IGFuZCB0eXBlLXNhZmUgd2F5LgoKIyMgQWJvdXQgdGhlIG5hbWUKClRoZSBuYW1lIGNvbWVzIGZyb20gYSBjb21iaW5hdGlvbiBvZiBzeWxsYWJsZXMgKipvYSoqIChPcGVuQVBJKSBhbmQgKip0cyoqIChUeXBlU2NyaXB0KSBhbmQgaXMgW3Byb25vdW5jZWQg8J+Xo10oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1jaHZiLUs5NXJCRSkgbGlrZSB0aGUgQmF2YXJpYW4gX08nemFwdCdpcyFfIChpdCdzIHRhcHBlZCksIHRoZSBmYW1vdXMgd29yZHMgdGhhdCBtYXJrIHRoZSBiZWdpbm5pbmcgb2YgdGhlIE9rdG9iZXJmZXN0LgoKIyBMaWNlbnNlCgpNSVQK readmeEtag: '"beb2a90720901a9e20a1056dbf30050bdfdeb8c6"' readmeLastModified: Mon, 26 Jan 2026 15:37:30 GMT repositoryId: 182983428 description: Generate TypeScript clients to tap into OpenAPI servers created: '2019-04-23T09:40:41Z' updated: '2026-02-06T01:43:39Z' language: TypeScript archived: false stars: 566 watchers: 5 forks: 90 owner: oazapfts logo: https://avatars.githubusercontent.com/u/119607625?v=4 repoEtag: '"a29643f350e8647d284b1eaea67f8d25d3273e8c2b713aa394b46c0ffd270991"' repoLastModified: Fri, 06 Feb 2026 01:43:39 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/cellular/oazapfts - source: openapi3 tags repository: https://github.com/muonsoft/openapi-mock v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIE1vY2sgU2VydmVyCgohW0NJXShodHRwczovL2dpdGh1Yi5jb20vbXVvbnNvZnQvb3BlbmFwaS1tb2NrL3dvcmtmbG93cy9DSS9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcikKIVtHaXRIdWIgcmVsZWFzZSAobGF0ZXN0IGJ5IGRhdGUpXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi92L3JlbGVhc2UvbXVvbnNvZnQvb3BlbmFwaS1tb2NrKQpbIVtTY3J1dGluaXplciBDb2RlIFF1YWxpdHldKGh0dHBzOi8vc2NydXRpbml6ZXItY2kuY29tL2cvbXVvbnNvZnQvb3BlbmFwaS1tb2NrL2JhZGdlcy9xdWFsaXR5LXNjb3JlLnBuZz9iPW1hc3RlcildKGh0dHBzOi8vc2NydXRpbml6ZXItY2kuY29tL2cvbXVvbnNvZnQvb3BlbmFwaS1tb2NrLz9icmFuY2g9bWFzdGVyKQpbIVtNYWludGFpbmFiaWxpdHldKGh0dHBzOi8vYXBpLmNvZGVjbGltYXRlLmNvbS92MS9iYWRnZXMvMTU4ZGViMzQzNGE4NDkyNGRhZGUvbWFpbnRhaW5hYmlsaXR5KV0oaHR0cHM6Ly9jb2RlY2xpbWF0ZS5jb20vZ2l0aHViL211b25zb2Z0L29wZW5hcGktbW9jay9tYWludGFpbmFiaWxpdHkpClshW1Rlc3QgQ292ZXJhZ2VdKGh0dHBzOi8vYXBpLmNvZGVjbGltYXRlLmNvbS92MS9iYWRnZXMvMTU4ZGViMzQzNGE4NDkyNGRhZGUvdGVzdF9jb3ZlcmFnZSldKGh0dHBzOi8vY29kZWNsaW1hdGUuY29tL2dpdGh1Yi9tdW9uc29mdC9vcGVuYXBpLW1vY2svdGVzdF9jb3ZlcmFnZSkKCk9wZW5BUEkgQVBJIG1vY2sgc2VydmVyIHdpdGggcmFuZG9tIGRhdGEgZ2VuZXJhdGlvbiBieSBzcGVjaWZpZWQgc2NoZW1hcy4KCiogT3BlbkFQSSAzLnggc3VwcG9ydC4KKiBMb2FkIHNwZWNpZmljYXRpb24gZnJvbSBhIGxvY2FsIGZpbGUgb3IgVVJMLgoqIEpTT04gYW5kIFlBTUwgZm9ybWF0IHN1cHBvcnRlZC4KKiBHZW5lcmF0ZXMgZmFrZSByZXNwb25zZSBkYXRhIGJ5IHByb3ZpZGVkIHNjaGVtYXMgb3IgYnkgZXhhbXBsZXMuCiogQ29udGVudCBuZWdvdGlhdGlvbiBieSBBY2NlcHQgaGVhZGVyLgoqIENhbiBiZSB1c2VkIGFzIHN0YW5kYWxvbmUgYXBwbGljYXRpb24gKExpbnV4IGFuZCBXaW5kb3dzKSBvciBjYW4gYmUgcnVuIHZpYSBEb2NrZXIgY29udGFpbmVyLgoKIyMgU3VwcG9ydGVkIGZlYXR1cmVzCgp8IEZlYXR1cmUgfCBTdXBwb3J0IHN0YXR1cyB8CnwgLS0tIHwgLS0tIHwKfCBnZW5lcmF0aW5nIHhtbCByZXNwb25zZSB8IGJhc2ljIHN1cHBvcnQgKFt3aXRob3V0IHhtbCB0YWdzXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2RhdGEtbW9kZWxzL3JlcHJlc2VudGluZy14bWwvKSkgfAp8IGdlbmVyYXRpbmcganNvbiByZXNwb25zZSB8IHN1cHBvcnRlZCB8CnwgZ2VuZXJhdGlvbiBvZiBbYmFzaWMgdHlwZXNdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGF0YS1tb2RlbHMvZGF0YS10eXBlcy8pIHwgc3VwcG9ydGVkIHwKfCBnZW5lcmF0aW9uIG9mIFtlbnVtc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kYXRhLW1vZGVscy9lbnVtcy8pIHwgc3VwcG9ydGVkIHwKfCBnZW5lcmF0aW9uIG9mIFthc3NvY2lhdGl2ZSBhcnJheXNdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGF0YS1tb2RlbHMvZGljdGlvbmFyaWVzLykgfCBzdXBwb3J0ZWQgfAp8IGdlbmVyYXRpb24gb2YgW2NvbWJpbmVkIHR5cGVzXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2RhdGEtbW9kZWxzL29uZW9mLWFueW9mLWFsbG9mLW5vdC8pIHwgc3VwcG9ydGVkICh3aXRob3V0IHRhZyBgbm90YCBhbmQgZGlzY3JpbWluYXRvcikgfAp8IGxvY2FsIHJlZmVyZW5jZSByZXNvbHZpbmcgfCBzdXBwb3J0ZWQgfAp8IHJlbW90ZSByZWZlcmVuY2UgcmVzb2x2aW5nIHwgbm90IHN1cHBvcnRlZCB8CnwgVVJMIHJlZmVyZW5jZSByZXNvbHZpbmcgfCBub3Qgc3VwcG9ydGVkIHwKfCB2YWxpZGF0aW5nIHJlcXVlc3QgZGF0YSB8IG5vdCBzdXBwb3J0ZWQgfAp8IGZvcmNlIHVzaW5nIGN1c3RvbSByZXNwb25zZSBzY2hlbWEgfCBub3Qgc3VwcG9ydGVkIChzY2hlbWEgZGV0ZWN0ZWQgYXV0b21hdGljYWxseSkgfAoKIyMgUXVpY2sgc3RhcnQKCkRvd25sb2FkIGxhdGVzdCBiaW5hcnkgYW5kIHJ1biBhIHNlcnZlci4KCmBgYGJhc2gKIyBydW5zIGEgbG9jYWwgc2VydmVyIG9uIHBvcnQgODA4MAouL29wZW5hcGktbW9jayBzZXJ2ZSAtLXNwZWNpZmljYXRpb24tdXJsIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL21hc3Rlci9leGFtcGxlcy92My4wL3BldHN0b3JlLnlhbWwKCiMgdG8gdGVzdCB0aGF0IHRoZSBzZXJ2ZXIgc3VjY2Vzc2Z1bGx5IHJhbgpjdXJsICdodHRwOi8vbG9jYWxob3N0OjgwODAvdjEvcGV0cycKYGBgCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSBbRG9ja2VyXShodHRwczovL3d3dy5kb2NrZXIuY29tLykgaW1hZ2UuCgpgYGBiYXNoCiMgZG93bmxvYWRzIGFuIGltYWdlCmRvY2tlciBwdWxsIG11b25zb2Z0L29wZW5hcGktbW9jawoKIyBydW5zIGEgZG9ja2VyIGNvbnRhaW5lciB3aXRoIGV4cG9ydGVkIHBvcnQgODA4MApkb2NrZXIgcnVuIC1wIDgwODA6ODA4MCAtZSAiT1BFTkFQSV9NT0NLX1NQRUNJRklDQVRJT05fVVJMPWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL21hc3Rlci9leGFtcGxlcy92My4wL3BldHN0b3JlLnlhbWwiIC0tcm0gbXVvbnNvZnQvb3BlbmFwaS1tb2NrCgojIHRvIHRlc3QgdGhhdCB0aGUgc2VydmVyIHN1Y2Nlc3NmdWxseSByYW4KY3VybCAnaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YxL3BldHMnCmBgYAoKQWxzbywgeW91IGNhbiB1c2UgW0RvY2tlciBDb21wb3NlXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9jb21wb3NlLykuIEV4YW1wbGUgb2YgYGRvY2tlci1jb21wb3NlLnltbGAKCmBgYHlhbWwKdmVyc2lvbjogJzMuMCcKCnNlcnZpY2VzOgogIG9wZW5hcGlfbW9jazoKICAgIGNvbnRhaW5lcl9uYW1lOiBvcGVuYXBpX21vY2sKICAgIGltYWdlOiBtdW9uc29mdC9vcGVuYXBpLW1vY2sKICAgIGVudmlyb25tZW50OgogICAgICBPUEVOQVBJX01PQ0tfU1BFQ0lGSUNBVElPTl9VUkw6ICdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9tYXN0ZXIvZXhhbXBsZXMvdjMuMC9wZXRzdG9yZS55YW1sJwogICAgcG9ydHM6CiAgICAgIC0gIjgwODA6ODA4MCIKYGBgCgpUbyBzdGFydCB1cCBhIGNvbnRhaW5lciBydW4gY29tbWFuZC4KCmBgYGJhc2gKZG9ja2VyLWNvbXBvc2UgdXAgLWQKYGBgCgpJZiB5b3Ugd2FudCB0byByZWZlcmVuY2UgYSBsb2NhbCBmaWxlIGluIGRvY2tlciBjb21wb3NlOgoKKiB5b3UgbXVzdCBmaXJzdCBtb3VudCB0aGUgaG9zdCBkaXIgaW50byBjb250YWluZXIgLSBgLi9vcGVuYXBpOi9ldGMvb3BlbmFwaWAKKiBvbmx5IHRoZW4gY2FuIHlvdSByZWZlcmVuY2UgaXQKCmBgYHlhbWwKdmVyc2lvbjogJzMuMCcKCnNlcnZpY2VzOgogIG9wZW5hcGlfbW9jazoKICAgIGNvbnRhaW5lcl9uYW1lOiBvcGVuYXBpX21vY2sKICAgIGltYWdlOiBtdW9uc29mdC9vcGVuYXBpLW1vY2sKICAgIHZvbHVtZXM6CiAgICAtIC4vb3BlbmFwaTovZXRjL29wZW5hcGkKICAgIGVudmlyb25tZW50OgogICAgICBPUEVOQVBJX01PQ0tfU1BFQ0lGSUNBVElPTl9VUkw6ICcvZXRjL29wZW5hcGkvcGV0c3RvcmUueWFtbCcKICAgIHBvcnRzOgogICAgICAtICI4MDgwOjgwODAiCmBgYAoKIyMgVXNhZ2UgZ3VpZGUKCiogW0NvbnNvbGUgY29tbWFuZHNdKGRvY3MvdXNhZ2VfZ3VpZGUubWQjY29uc29sZS1jb21tYW5kcykKKiBbU2V0dGluZyB1cCBhIGNvbmZpZ3VyYXRpb25dKGRvY3MvdXNhZ2VfZ3VpZGUubWQjc2V0dGluZy11cC1hLWNvbmZpZ3VyYXRpb24pCiogW0NvbmZpZ3VyYXRpb24gZmlsZSBleGFtcGxlXShkb2NzL3VzYWdlX2d1aWRlLm1kI2NvbmZpZ3VyYXRpb24tZmlsZS1leGFtcGxlKQoqIFtDb25maWd1cmF0aW9uIG9wdGlvbnNdKGRvY3MvdXNhZ2VfZ3VpZGUubWQjY29uZmlndXJhdGlvbi1vcHRpb25zKQoKIyMgTGljZW5zZQoKVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAtIHNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgo= readmeEtag: '"324cd90728c76f314276a102e1cf83b89da5e3db"' readmeLastModified: Sat, 11 Mar 2023 09:19:53 GMT repositoryId: 145602302 description: OpenAPI mock server with random data generation created: '2018-08-21T18:16:27Z' updated: '2026-01-27T07:58:01Z' language: Go archived: false stars: 524 watchers: 8 forks: 59 owner: muonsoft logo: https://avatars.githubusercontent.com/u/32521718?v=4 license: MIT repoEtag: '"0009be0d6e8bd7c8cf34c6a44d1ad7900359411376551c1b2587a93233223444"' repoLastModified: Tue, 27 Jan 2026 07:58:01 GMT foundInMaster: true category: - Description Validators - Parsers id: ca63af26f6da094f0ce57d398e968526 - source: openapi3 tags repository: https://github.com/swagger-autogen/swagger-autogen v3: true id: 2fbe0ef8e6fd0bf2f43ab4e7c7d80970 repositoryMetadata: base64Readme: >- IyBzd2FnZ2VyLWF1dG9nZW4KCiMjIE92ZXJ2aWV3CgpUaGlzIG1vZHVsZSBwZXJmb3JtcyBhdXRvbWF0aWMgY29uc3RydWN0aW9uIG9mIFN3YWdnZXIgZG9jdW1lbnRhdGlvbi4gSXQgY2FuIGlkZW50aWZ5IHRoZSBlbmRwb2ludHMgYW5kIGF1dG9tYXRpY2FsbHkgY2FwdHVyZSBtZXRob2RzIHN1Y2ggYXMgZ2V0LCBwb3N0LCBwdXQsIGFuZCBzbyBvbi4gSXQgYWxzbyBpZGVudGlmaWVzIHBhdGhzLCByb3V0ZXMsIG1pZGRsZXdhcmVzLCByZXNwb25zZSBzdGF0dXMgY29kZXMsIHBhcmFtZXRlcnMgaW4gdGhlIHBhdGgsIGhlYWRlciwgcXVlcnkgYW5kIGJvZHkuIEl0IGlzIHBvc3NpYmxlIHRvIGFkZCBpbmZvcm1hdGlvbiBzdWNoIGFzIGVuZHBvaW50IGRlc2NyaXB0aW9uLCBwYXJhbWV0ZXIgZGVzY3JpcHRpb24sIHNjaGVtYXMsIHNlY3VyaXR5LCBhbW9uZyBvdGhlcnMgdXNpbmcgY29tbWVudHMgaW4gY29kZS4gQXQgdGhlIGVuZCwgaXQgZ2VuZXJhdGVzIHRoZSAqLmpzb24qIGZpbGUgY29udGFpbmluZyB0aGUgU3dhZ2dlciBmb3JtYXQgc3BlY2lmaWNhdGlvbi4KClshW05QTSBWZXJzaW9uXShodHRwOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3Yvc3dhZ2dlci1hdXRvZ2VuLnN2Zz9zdHlsZT1mbGF0KV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvc3dhZ2dlci1hdXRvZ2VuKQpbIVtOUE0gRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kbS9zd2FnZ2VyLWF1dG9nZW4uc3ZnP3N0eWxlPWZsYXQpXShodHRwczovL25wbWNoYXJ0cy5jb20vY29tcGFyZS9zd2FnZ2VyLWF1dG9nZW4/bWluaW1hbD10cnVlKQoKIyMgQ29udGVudHMKCi0gW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKLSBbRG9jdW1lbnRhdGlvbl0oI2RvY3VtZW50YXRpb24pCi0gW0NoYW5nZWxvZ10oI2NoYW5nZWxvZykKLSBbTGljZW5zZV0oI2xpY2Vuc2UpCgojIyBJbnN0YWxsYXRpb24KClRoaXMgaXMgYSBbTm9kZS5qc10oaHR0cHM6Ly9ub2RlanMub3JnL2VuLykgbW9kdWxlIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBbbnBtXShodHRwczovL3d3dy5ucG1qcy5jb20vKS4KCmBgYGJhc2gKJCBucG0gaW5zdGFsbCAtLXNhdmUtZGV2IHN3YWdnZXItYXV0b2dlbgpgYGAKCklmIHlvdSdyZSB1c2luZyBDb21tb25KUzoKCmBgYGpzCmNvbnN0IHN3YWdnZXJBdXRvZ2VuID0gcmVxdWlyZSgnc3dhZ2dlci1hdXRvZ2VuJykoKTsKYGBgCgpPciBpZiB5b3UncmUgdXNpbmcgRVMgbW9kdWxlczoKCmBgYGpzCmltcG9ydCBzd2FnZ2VyQXV0b2dlbiBmcm9tICdzd2FnZ2VyLWF1dG9nZW4nOwoKYGBgCgojIyBEb2N1bWVudGF0aW9uCgpQbGVhc2UgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gd2Vic2l0ZSBvbiBodHRwczovL3N3YWdnZXItYXV0b2dlbi5naXRodWIuaW8uCgojIyBDaGFuZ2Vsb2cKCkNoZWNrIHRoZSBbR2l0SHViIFJlbGVhc2VzIHBhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWF1dG9nZW4vc3dhZ2dlci1hdXRvZ2VuL3JlbGVhc2VzKS4KCiMjIElzc3VlcwoKRHVlIHRvIHRoZSBudW1iZXIgb2Ygb3BlbiBpc3N1ZXMgYW5kIHRoZSBsYWNrIG9mIHRpbWUgdG8gcmVzcG9uZCB3aXRoIHF1YWxpdHksIEkndmUgZGlzYWJsZWQgdGhlIG9wZW5pbmcgb2YgaXNzdWVzIGZvciBub3cuIEknbSBzdGlsbCBrZWVwaW5nIG15IGV5ZXMgb24gdGhlIHByb2plY3QgYW5kIEkgaW50ZW5kIHRvIHByaW9yaXRpemUgdGhlIGlzc3VlcyBhbHJlYWR5IG9wZW4uIE9uY2UgSSBoYXZlIGNsb3NlZCBhIHNhdGlzZmFjdG9yeSBudW1iZXIgb2YgaXNzdWVzLCBJIHdpbGwgb3BlbiBpdCBhZ2Fpbi4gVGhhbmsgeW91IGZvciB1bmRlcnN0YW5kaW5nLgoKIyMgTGljZW5zZQoKW01JVF0oTElDRU5TRSkgTGljZW5zZQo= readmeEtag: '"2a11c5b385e9cefa3244c662352b041359767f04"' readmeLastModified: Thu, 28 Dec 2023 02:56:36 GMT repositoryId: 255205097 description: >- This module performs automatic construction of Swagger documentation. It can identify the endpoints and automatically capture methods such as get, post, put, and so on. It also identifies paths, routes, middlewares, response status codes and parameters. At the end, it generates the .json file containing the Swagger format specification. created: '2020-04-13T01:37:33Z' updated: '2026-01-29T00:31:35Z' language: JavaScript archived: false stars: 506 watchers: 4 forks: 70 owner: swagger-autogen logo: https://avatars.githubusercontent.com/u/137681762?v=4 license: MIT repoEtag: '"5e136fd706036c3fcad8b714b511460cb5894862f826f4c288b9a64b54979793"' repoLastModified: Thu, 29 Jan 2026 00:31:35 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/davibaltar/swagger-autogen - source: openapi3 tags repository: https://github.com/rithvikvibhu/ghlocalapi v3: true repositoryMetadata: base64Readme: >- IyBbR29vZ2xlIEhvbWUgTG9jYWwgQVBJIERvY3VtZW50YXRpb25dKGh0dHBzOi8vcml0aHZpa3ZpYmh1LmdpdGh1Yi5pby9HSExvY2FsQXBpLykKCioqVXBkYXRlZCBvbjogMjAyMC0wNi0yOCoqCgpBdmFpbGFibGUgaGVyZTogaHR0cHM6Ly9yaXRodmlrdmliaHUuZ2l0aHViLmlvL0dITG9jYWxBcGkvCgpbIVtHaXRIdWIgc3RhcnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL3JpdGh2aWt2aWJodS9HSExvY2FsQXBpKV0oaHR0cHM6Ly9naXRodWIuY29tL3JpdGh2aWt2aWJodS9HSExvY2FsQXBpL3N0YXJnYXplcnMpIFshW0dpdEh1YiBsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL3JpdGh2aWt2aWJodS9HSExvY2FsQXBpKV0oaHR0cHM6Ly9naXRodWIuY29tL3JpdGh2aWt2aWJodS9HSExvY2FsQXBpL2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQpIFshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL3JpdGh2aWt2aWJodS9HSExvY2FsQXBpLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL3JpdGh2aWt2aWJodS9HSExvY2FsQXBpKQoKRG9jdW1lbnRhdGlvbiBmb3IgR29vZ2xlIEhvbWUncyBsb2NhbCBBUEksIHNwZWNzIGluIFtPcGVuQVBJIDMuMF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vKS4gUmVuZGVyZWQgd2l0aCBbUmVkb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jKS4KClRyYXZpcyBDSSBnZW5lcmF0ZXMgdGhlIHN0YXRpYyB3ZWJzaXRlIHdpdGggUmVkb2MuCgotIGBucG0gcnVuIGJ1aWxkYCBnZW5lcmF0ZXMgdGhlIHN0YXRpYyBzaXRlIGluIHRoZSAnZGlzdCcgZm9sZGVyIChNYWtlIHN1cmUgdGhlIGZvbGRlciBleGlzdHMpLgotIGBucG0gcnVuIHNlcnZlYCBzZXJ2ZXMgdGhlIHBhZ2Ugd2l0aCBhIHdlYiBzZXJ2ZXIuCgojIyBDb250cmlidXRpbmcKClRoZSBPcGVuIEFQSSBzcGVjIGlzIGV4cG9ydGVkIGZyb20gQXBpbWF0aWMuIEluc3RlYWQgb2Ygc3VibWl0dGluZyBwdWxsIHJlcXVlc3RzIHdpdGggY2hhbmdlcyB0byB0aGlzIGZpbGUsIHBsZWFzZSBjcmVhdGUgYW4gaXNzdWUgd2l0aCB0aGUgY2hhbmdlcyBpbnN0ZWFkLgoKIyMgQ3JlZGl0cwoKSHVnZSB0aGFua3MgdG8KCi0gW0BMb2hvdXNlXShodHRwczovL2dpdGh1Yi5jb20vTG9ob3VzZSkgZm9yIGZpbmRpbmcgYW5kIHBvc3RpbmcgYW4gaW5pdGlhbCBsaXN0IG9mIEFQSSBlbmRwb2ludHMgW29uIFJlZGRpdCByL2dvb2dsZWhvbWVdKGh0dHBzOi8vd3d3LnJlZGRpdC5jb20vci9nb29nbGVob21lL2NvbW1lbnRzLzdxZzZlZi91c2VfdGhlX2FwaV9vbl95b3VyX2dvb2dsZV9ob21lX3RvX3ZpZXdfdGhpbmdzLykKLSBbQExlYXRoZXJmYWNlNzVdKGh0dHBzOi8vZ2l0aHViLmNvbS9MZWF0aGVyZmFjZTc1KSwgW0BEcmFrdWxpeF0oaHR0cHM6Ly9naXRodWIuY29tL0RyYWt1bGl4KSwgW0BtYWdpY3NlXShodHRwczovL2dpdGh1Yi5jb20vbWFnaWNzZSksIFtAWG9NRVhdKGh0dHBzOi8vZ2l0aHViLmNvbS9Yb01FWCksIFtAQW5nZWxvRDIwMjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9BbmdlbG9EMjAyMikgYW5kIGV2ZXJ5b25lIG9uIFt0aGlzIGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20vcml0aHZpa3ZpYmh1L0dITG9jYWxBcGkvaXNzdWVzLzM5KSBmb3IgaGVscGluZyBSRSB0aGUgYXV0aGVudGljYXRpb24gc3lzdGVtLgotIFtAc2ltb24td2ViZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zaW1vbi13ZWJlcikgZm9yIHRoZSBbYGdwc29hdXRoYF0oaHR0cHM6Ly9naXRodWIuY29tL3NpbW9uLXdlYmVyL2dwc29hdXRoKSBsaWJyYXJ5Ci0gQWxsIGNvbnRyaWJ1dG9ycyB3aG8ndmUgcmVwb3J0ZWQgaW5jb25zaXN0ZW5jaWVzIGFuZCBQUidkIGZpeGVzCg== readmeEtag: '"c38b9fa3c56fd64f2ca96bcecc24613a9ee015bb"' readmeLastModified: Sun, 14 Aug 2022 19:42:42 GMT repositoryId: 117561740 description: (Unofficial) Google Home local API documentation. created: '2018-01-15T15:22:58Z' updated: '2026-01-29T13:52:00Z' language: Handlebars archived: false stars: 464 watchers: 30 forks: 38 owner: rithvikvibhu logo: https://avatars.githubusercontent.com/u/5113343?v=4 license: MIT repoEtag: '"c9da77be577ec27ea464ebceb943293977c1bd24dbc4b0b09688236afd74bfa7"' repoLastModified: Thu, 29 Jan 2026 13:52:00 GMT foundInMaster: true category: SDK id: 6f3b994d76d4f6770123b20ae9bd03a2 - source: openapi3 tags repository: https://github.com/tiangolo/full-stack-fastapi-couchbase v3: true repositoryMetadata: base64Readme: >- IyMg8J+aqCBERVBSRUNBVElPTiBXQVJOSU5HIPCfmqgKCkknbSBjdXJyZW50bHkgbm90IGFjdGl2ZWx5IHVzaW5nIENvdWNoYmFzZSBub3IgdGhpcyBnZW5lcmF0b3IgZm9yIGFueSBwcm9qZWN0LgoKWW91IG1pZ2h0IHN0aWxsIGZpbmQgc29tZSBpbnRlcm5hbCBwaWVjZXMgb2YgY29kZSB1c2VmdWwgZm9yIHlvdXIgb3duIHVzZSBjYXNlcywgYnV0IEkgd29uJ3QgYmUgYWJsZSB0byBmaXggYnVncyBhbmQgYWRkIGZlYXR1cmVzLgoKSWYgeW91IGFyZSBzdGFydGluZyBhIG5ldyBwcm9qZWN0IGZyb20gc2NyYXRjaCwgY2hlY2sgdGhlIGFsdGVybmF0aXZlcyBhdCB0aGUgW0Zhc3RBUEkgZG9jczogUHJvamVjdCBHZW5lcmF0aW9uXShodHRwczovL2Zhc3RhcGkudGlhbmdvbG8uY29tL3Byb2plY3QtZ2VuZXJhdGlvbi8pLgoKWW91IGFyZSBzdGlsbCBmcmVlIHRvIHVzZSB0aGlzIHByb2plY3QgaWYgeW91IHdhbnQgdG8sIHlvdSBtaWdodCBzdGlsbCBmaW5kIHNvbWUgaW50ZXJuYWwgcGllY2VzIG9mIGNvZGUgdXNlZnVsIGZvciB5b3VyIG93biB1c2UgY2FzZS4gQW5kIGlmIHlvdSBhbHJlYWR5IGhhdmUgYSBwcm9qZWN0IGdlbmVyYXRlZCB3aXRoIGl0IHRoYXQncyBmaW5lIGFzIHdlbGwgKGFuZCB5b3UgcHJvYmFibHkgYWxyZWFkeSB1cGRhdGVkIGl0IHRvIHN1aXQgeW91ciBuZWVkcykuCgojIEZ1bGwgU3RhY2sgRmFzdEFQSSBDb3VjaGJhc2UgLSBwcm9qZWN0IGdlbmVyYXRvcgoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvdGlhbmdvbG8vZnVsbC1zdGFjay1mYXN0YXBpLWNvdWNoYmFzZS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy90aWFuZ29sby9mdWxsLXN0YWNrLWZhc3RhcGktY291Y2hiYXNlKQoKIyMjIFRvIGhhdmUgaW4gbWluZAoKSGVyZSBhcmUgc29tZSBleHRyYSB0aG91Z2h0cyB5b3UgbWlnaHQgd2FudCB0byBjb25zaWRlciBpZiB5b3UgZGVjaWRlIHRvIGdvIHdpdGggQ291Y2hiYXNlIGFuZC9vciB0aGlzIHByb2plY3QgZ2VuZXJhdG9yLgoKIyMjIyBQcm9zCgpDb3VjaGJhc2UgaGFzIGEgZ3JlYXQgc2V0IG9mIGZlYXR1cmVzIHRoYXQgaXMgbm90IGVhc2lseSBvciBjb21tb25seSBmb3VuZCBpbiBhbHRlcm5hdGl2ZXMuCgpJdCdzIGEgZGlzdHJpYnV0ZWQgZGF0YWJhc2UsIHNvLCBpZiB5b3UgaGF2ZSBhIGNsdXN0ZXIgb2Ygc2V2ZXJhbCBub2RlcyB3aXRoIHRoZSBkYXRhIHJlcGxpY2F0ZWQsIHlvdSBkb24ndCBoYXZlIGEgc2luZ2xlIHBvaW50IG9mIGZhaWx1cmUuCgpJdCBwcm92aWRlcyB2ZXJ5IGhpZ2ggcGVyZm9ybWFuY2UuCgpJdCBoYXMgYnVpbHQtaW4gZnVsbC10ZXh0IHNlYXJjaCBpbnRlZ3JhdGVkICh1c2luZyBCbGV2ZSkuIEl0J3MgcG9zc2libGUgdG8gbWFrZSBhbGwgdGhlIHJlY29yZHMgYmUgYXV0b21hdGljYWxseSBpbmRleGVkIGluIHRoZSBzZWFyY2ggZW5naW5lIHdpdGhvdXQgYWRkaXRpb25hbCBjb2RlIG9yIGV4dHJhIGNvbXBvbmVudHMuCgpJdCBjYW4gYmUgY29ubmVjdGVkL2ludGVncmF0ZWQgd2l0aCB0aGUgQ291Y2hiYXNlIFN5bmMgR2F0ZXdheSwgdGhhdCBjYW4gYmUgdXNlZCB0byBzeW5jaHJvbml6ZSBhIHN1YnNldCBvZiBkb2N1bWVudHMgKHJlY29yZHMpIHdpdGggbW9iaWxlIGRldmljZXMuIEFuZCB3aXRoIHNvbWUgZWZmb3J0LCBpdCBjYW4gYmUgY29ubmVjdGVkIHdpdGggUG91Y2hCRCBmb3IgZnJvbnRlbmQgc3luY2hyb25pemF0aW9uIChhbHRob3VnaCBub3QgcXVlcnlpbmcgYW5kL29yIHNlYXJjaGluZyBmcm9tIHRoZSBmcm9udGVuZCwgYXMgd291bGQgYmUgcG9zc2libGUgd2l0aCBDb3VjaERCKS4KCiMjIyMgQ29ucwoKVGhlIGRvY3VtZW50YXRpb24gaXMgdmVyeSBzY2FyY2UuIFRoaXMgaXMgc2FkbHkgYSBiaWcgcHJvYmxlbS4gTWFueSBmZWF0dXJlcyBhcmUgbm90IHdlbGwgZG9jdW1lbnRlZCwgb3Igbm90IGRvY3VtZW50ZWQgYXQgYWxsLgoKTWFueSBjb25maWd1cmF0aW9ucyBhcmUgbm90IGRvY3VtZW50ZWQgYW5kIGhhdmUgdG8gYmUgaW5mZXJyZWQgZnJvbSBjb21tZW50cyBpbiBmb3J1bXMsIHJlYWRpbmcgc291cmNlIGNvZGUsIG9yIGNoZWNraW5nIHRoZSBjb25maWd1cmF0aW9ucyBmb3IgdGhlIEMgY2xpZW50IGFuZCB0cnlpbmcgZGlmZmVyZW50IHF1ZXJ5IHBhcmFtZXRlcnMgaW4gVVJMcywgdGhhdCBiZWNvbWVzIHF1aXRlIGVycm9yIHByb25lLgoKQ291Y2hiYXNlIGRpZG4ndCBzZWVtIHRvIGJlIGRlc2lnbmVkIHRvIGJlIGludGVncmF0ZWQgaW50byBDSSBzeXN0ZW1zIGFzIGluIHRoaXMgcHJvamVjdCAob3IgYWx0ZXJuYXRpdmVzKSwgYXQgbGVhc3QgdW50aWwgdGhlIGxhc3QgdGltZSBJIHVzZWQgaXQuIEl0IGV4cGVjdHMgYWxsIHRoZSBzZXQgdXAgdG8gYmUgZG9uZSBvbmNlIHZpYSB0aGUgd2ViIFVJLCBub3QgYXV0b21hdGVkLiBUaGUgb2ZmaWNpYWwgRG9ja2VyIGltYWdlIGNhbid0IGJlIGNvbmZpZ3VyZWQuIFNvLCB0aGlzIHByb2plY3QgZG9lcyBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gYnkgc2VuZGluZyB0aGUgSFRUUCByZXF1ZXN0cyBmcm9tIHRoZSBiYWNrZW5kIGNvZGUgdG8gdGhlIGNvbnRhaW5lciByZXBsaWNhdGluZyB0aGUgSFRUUCByZXF1ZXN0cyBkb25lIGluIHRoZSB3ZWIgVUkuIEJ1dCB0aG9zZSBzdGVwcyBhcmUgbm90IGRvY3VtZW50ZWQsIHRoZXJlJ3Mgbm8gIm9mZmljaWFsIiB3YXkgdG8gY29uZmlndXJlIGFuZCBzdGFydCBpdCB3aXRob3V0IHVzaW5nIHRoZSB3ZWIgVUksIHNvIHRoZSBpbnRlZ3JhdGlvbiB3aXRoIENJIGNvdWxkIGJlIGVycm9yIHByb25lLgoKVGhlIENvdWNoYmFzZSBTeW5jIEdhdGV3YXkgb2ZmaWNpYWwgRG9ja2VyIGltYWdlIGlzIG5vdCBkZXNpZ25lZCB0byBiZSBjb25maWd1cmVkIG11Y2ggZWl0aGVyLCBzbywgdGhlIGBEb2NrZXJmaWxlYCBpbmNsdWRlZCBpbiB0aGlzIHByb2plY3QgYWRkcyBhIGdvb2QgYW1vdW50IG9mIGN1c3RvbSBsb2dpYyB0byBzdXBwb3J0IHRoYXQsIGJ1dCB0aGF0J3Mgbm90IHJlYWxseSBvZmZpY2lhbC4KCkFzIGl0IHVzZXMgTjFRTCwgYSBmbGF2b3Igb2YgU1FMLCBhbmQgdGhlcmUncyBubyBlYXN5IGludGVncmF0aW9uIHdpdGggUHl0aG9uLCB5b3UgaGF2ZSB0byBkbyBhbGwgdGhlIG9wZXJhdGlvbnMgaW4gTjFRTCBzdHJpbmdzIGFuZCBpbnRlZ3JhdGUgdGhlbSB3aXRoIHlvdXIgb3duIGNvZGUuIFdpdGhvdXQgZWRpdG9yIHN1cHBvcnQsIGNvbXBsZXRpb24sIG5vciBzeW50YXggY2hlY2tzIGZvciBOMVFMLgoKLS0tCgpHZW5lcmF0ZSBhIGJhY2tlbmQgYW5kIGZyb250ZW5kIHN0YWNrIHVzaW5nIFB5dGhvbiwgaW5jbHVkaW5nIGludGVyYWN0aXZlIEFQSSBkb2N1bWVudGF0aW9uLgoKWyFbU2NyZWVuc2hvdF0oaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS9pbWcvaW5kZXgvaW5kZXgtMDMtc3dhZ2dlci0wMi5wbmcpXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vZnVsbC1zdGFjay1mYXN0YXBpLWNvdWNoYmFzZSkKCiMjIEZlYXR1cmVzCgoqIEZ1bGwgKipEb2NrZXIqKiBpbnRlZ3JhdGlvbiAoRG9ja2VyIGJhc2VkKS4KKiBEb2NrZXIgU3dhcm0gTW9kZSBkZXBsb3ltZW50LgoqICoqRG9ja2VyIENvbXBvc2UqKiBpbnRlZ3JhdGlvbiBhbmQgb3B0aW1pemF0aW9uIGZvciBsb2NhbCBkZXZlbG9wbWVudC4KKiAqKlByb2R1Y3Rpb24gcmVhZHkqKiBQeXRob24gd2ViIHNlcnZlciB1c2luZyBVdmljb3JuIGFuZCBHdW5pY29ybi4KKiBQeXRob24gKipbRmFzdEFQSV0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL2Zhc3RhcGkpKiogYmFja2VuZDoKICAgICogKipGYXN0Kio6IFZlcnkgaGlnaCBwZXJmb3JtYW5jZSwgb24gcGFyIHdpdGggKipOb2RlSlMqKiBhbmQgKipHbyoqICh0aGFua3MgdG8gU3RhcmxldHRlIGFuZCBQeWRhbnRpYykuCiAgICAqICoqSW50dWl0aXZlKio6IEdyZWF0IGVkaXRvciBzdXBwb3J0LiA8YWJiciB0aXRsZT0iYWxzbyBrbm93biBhcyBhdXRvLWNvbXBsZXRlLCBhdXRvY29tcGxldGlvbiwgSW50ZWxsaVNlbnNlIj5Db21wbGV0aW9uPC9hYmJyPiBldmVyeXdoZXJlLiBMZXNzIHRpbWUgZGVidWdnaW5nLgogICAgKiAqKkVhc3kqKjogRGVzaWduZWQgdG8gYmUgZWFzeSB0byB1c2UgYW5kIGxlYXJuLiBMZXNzIHRpbWUgcmVhZGluZyBkb2NzLgogICAgKiAqKlNob3J0Kio6IE1pbmltaXplIGNvZGUgZHVwbGljYXRpb24uIE11bHRpcGxlIGZlYXR1cmVzIGZyb20gZWFjaCBwYXJhbWV0ZXIgZGVjbGFyYXRpb24uCiAgICAqICoqUm9idXN0Kio6IEdldCBwcm9kdWN0aW9uLXJlYWR5IGNvZGUuIFdpdGggYXV0b21hdGljIGludGVyYWN0aXZlIGRvY3VtZW50YXRpb24uCiAgICAqICoqU3RhbmRhcmRzLWJhc2VkKio6IEJhc2VkIG9uIChhbmQgZnVsbHkgY29tcGF0aWJsZSB3aXRoKSB0aGUgb3BlbiBzdGFuZGFyZHMgZm9yIEFQSXM6IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uIiB0YXJnZXQ9Il9ibGFuayI+T3BlbkFQSTwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvIiB0YXJnZXQ9Il9ibGFuayI+SlNPTiBTY2hlbWE8L2E+LgogICAgKiBbKipNYW55IG90aGVyIGZlYXR1cmVzKipdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby9mYXN0YXBpKSBpbmNsdWRpbmcgYXV0b21hdGljIHZhbGlkYXRpb24sIHNlcmlhbGl6YXRpb24sIGludGVyYWN0aXZlIGRvY3VtZW50YXRpb24sIGF1dGhlbnRpY2F0aW9uIHdpdGggT0F1dGgyIEpXVCB0b2tlbnMsIGV0Yy4KKiAqKlNlY3VyZSBwYXNzd29yZCoqIGhhc2hpbmcgYnkgZGVmYXVsdC4KKiAqKkpXVCB0b2tlbioqIGF1dGhlbnRpY2F0aW9uLgoqICoqQ09SUyoqIChDcm9zcyBPcmlnaW4gUmVzb3VyY2UgU2hhcmluZykuCiogKipDZWxlcnkqKiB3b3JrZXIgdGhhdCBjYW4gaW1wb3J0IGFuZCB1c2UgY29kZSBmcm9tIHRoZSByZXN0IG9mIHRoZSBiYWNrZW5kIHNlbGVjdGl2ZWx5ICh5b3UgZG9uJ3QgaGF2ZSB0byBpbnN0YWxsIHRoZSBjb21wbGV0ZSBhcHAgaW4gZWFjaCB3b3JrZXIpLgoqICoqTm9TUUwgQ291Y2hiYXNlKiogZGF0YWJhc2UgdGhhdCBzdXBwb3J0cyBkaXJlY3Qgc3luY2hyb25pemF0aW9uIHZpYSBDb3VjaGJhc2UgU3luYyBHYXRld2F5IGZvciBvZmZsaW5lLWZpcnN0IGFwcGxpY2F0aW9ucy4KKiAqKkZ1bGwgVGV4dCBTZWFyY2gqKiBpbnRlZ3JhdGVkLCB1c2luZyBDb3VjaGJhc2UuCiogUkVTVCBiYWNrZW5kIHRlc3RzIGJhc2VkIG9uIFB5dGVzdCwgaW50ZWdyYXRlZCB3aXRoIERvY2tlciwgc28geW91IGNhbiB0ZXN0IHRoZSBmdWxsIEFQSSBpbnRlcmFjdGlvbiwgaW5kZXBlbmRlbnQgb24gdGhlIGRhdGFiYXNlLiBBcyBpdCBydW5zIGluIERvY2tlciwgaXQgY2FuIGJ1aWxkIGEgbmV3IGRhdGEgc3RvcmUgZnJvbSBzY3JhdGNoIGVhY2ggdGltZSAoc28geW91IGNhbiB1c2UgRWxhc3RpY1NlYXJjaCwgTW9uZ29EQiwgb3Igd2hhdGV2ZXIgeW91IHdhbnQsIGFuZCBqdXN0IHRlc3QgdGhhdCB0aGUgQVBJIHdvcmtzKS4KKiBFYXN5IFB5dGhvbiBpbnRlZ3JhdGlvbiB3aXRoICoqSnVweXRlcioqIEtlcm5lbHMgZm9yIHJlbW90ZSBvciBpbi1Eb2NrZXIgZGV2ZWxvcG1lbnQgd2l0aCBleHRlbnNpb25zIGxpa2UgQXRvbSBIeWRyb2dlbiBvciBWaXN1YWwgU3R1ZGlvIENvZGUgSnVweXRlci4KKiAqKkVtYWlsIG5vdGlmaWNhdGlvbnMqKiBmb3IgYWNjb3VudCBjcmVhdGlvbiBhbmQgcGFzc3dvcmQgcmVjb3ZlcnksIGNvbXBhdGlibGUgd2l0aDoKICAgICogTWFpbGd1bgogICAgKiBTcGFya1Bvc3QKICAgICogU2VuZEdyaWQKICAgICogLi4uYW55IG90aGVyIHByb3ZpZGVyIHRoYXQgY2FuIGdlbmVyYXRlIHN0YW5kYXJkIFNNVFAgY3JlZGVudGlhbHMuCiogKipWdWUqKiBmcm9udGVuZDoKICAgICogR2VuZXJhdGVkIHdpdGggVnVlIENMSS4KICAgICogKipKV1QgQXV0aGVudGljYXRpb24qKiBoYW5kbGluZy4KICAgICogTG9naW4gdmlldy4KICAgICogQWZ0ZXIgbG9naW4sIG1haW4gZGFzaGJvYXJkIHZpZXcuCiAgICAqIE1haW4gZGFzaGJvYXJkIHdpdGggdXNlciBjcmVhdGlvbiBhbmQgZWRpdGlvbi4KICAgICogU2VsZiB1c2VyIGVkaXRpb24uCiAgICAqICoqVnVleCoqLgogICAgKiAqKlZ1ZS1yb3V0ZXIqKi4KICAgICogKipWdWV0aWZ5KiogZm9yIGJlYXV0aWZ1bCBtYXRlcmlhbCBkZXNpZ24gY29tcG9uZW50cy4KICAgICogKipUeXBlU2NyaXB0KiouCiAgICAqIERvY2tlciBzZXJ2ZXIgYmFzZWQgb24gKipOZ2lueCoqIChjb25maWd1cmVkIHRvIHBsYXkgbmljZWx5IHdpdGggVnVlLXJvdXRlcikuCiAgICAqIERvY2tlciBtdWx0aS1zdGFnZSBidWlsZGluZywgc28geW91IGRvbid0IG5lZWQgdG8gc2F2ZSBvciBjb21taXQgY29tcGlsZWQgY29kZS4KICAgICogRnJvbnRlbmQgdGVzdHMgcmFuIGF0IGJ1aWxkIHRpbWUgKGNhbiBiZSBkaXNhYmxlZCB0b28pLgogICAgKiBNYWRlIGFzIG1vZHVsYXIgYXMgcG9zc2libGUsIHNvIGl0IHdvcmtzIG91dCBvZiB0aGUgYm94LCBidXQgeW91IGNhbiByZS1nZW5lcmF0ZSB3aXRoIFZ1ZSBDTEkgb3IgY3JlYXRlIGl0IGFzIHlvdSBuZWVkLCBhbmQgcmUtdXNlIHdoYXQgeW91IHdhbnQuCiogKipGbG93ZXIqKiBmb3IgQ2VsZXJ5IGpvYnMgbW9uaXRvcmluZy4KKiBMb2FkIGJhbGFuY2luZyBiZXR3ZWVuIGZyb250ZW5kIGFuZCBiYWNrZW5kIHdpdGggKipUcmFlZmlrKiosIHNvIHlvdSBjYW4gaGF2ZSBib3RoIHVuZGVyIHRoZSBzYW1lIGRvbWFpbiwgc2VwYXJhdGVkIGJ5IHBhdGgsIGJ1dCBzZXJ2ZWQgYnkgZGlmZmVyZW50IGNvbnRhaW5lcnMuCiogVHJhZWZpayBpbnRlZ3JhdGlvbiwgaW5jbHVkaW5nIExldCdzIEVuY3J5cHQgKipIVFRQUyoqIGNlcnRpZmljYXRlcyBhdXRvbWF0aWMgZ2VuZXJhdGlvbi4KKiBHaXRMYWIgKipDSSoqIChjb250aW51b3VzIGludGVncmF0aW9uKSwgaW5jbHVkaW5nIGZyb250ZW5kIGFuZCBiYWNrZW5kIHRlc3RpbmcuCgojIyBIb3cgdG8gdXNlIGl0CgpHbyB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHlvdSB3YW50IHRvIGNyZWF0ZSB5b3VyIHByb2plY3QgYW5kIHJ1bjoKCmBgYGJhc2gKcGlwIGluc3RhbGwgY29va2llY3V0dGVyCmNvb2tpZWN1dHRlciBodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vZnVsbC1zdGFjay1mYXN0YXBpLWNvdWNoYmFzZQpgYGAKCiMjIyBHZW5lcmF0ZSBwYXNzd29yZHMKCllvdSB3aWxsIGJlIGFza2VkIHRvIHByb3ZpZGUgcGFzc3dvcmRzIGFuZCBzZWNyZXQga2V5cyBmb3Igc2V2ZXJhbCBjb21wb25lbnRzLiBPcGVuIGFub3RoZXIgdGVybWluYWwgYW5kIHJ1bjoKCmBgYGJhc2gKb3BlbnNzbCByYW5kIC1oZXggMzIKIyBPdXRwdXRzIHNvbWV0aGluZyBsaWtlOiA5OWQzYjFmMDFhYTYzOWU0YTc2ZjRmYzI4MWZjODM0NzQ3YTU0MzcyMGJhNGM4YTg2NDhiYTc1NWFlZjliZTdmCmBgYAoKQ29weSB0aGUgY29udGVudHMgYW5kIHVzZSB0aGF0IGFzIHBhc3N3b3JkIC8gc2VjcmV0IGtleS4gQW5kIHJ1biB0aGF0IGFnYWluIHRvIGdlbmVyYXRlIGFub3RoZXIgc2VjdXJlIGtleS4KCgojIyMgSW5wdXQgdmFyaWFibGVzCgpUaGUgZ2VuZXJhdG9yIChjb29raWVjdXR0ZXIpIHdpbGwgYXNrIHlvdSBmb3Igc29tZSBkYXRhLCB5b3UgbWlnaHQgd2FudCB0byBoYXZlIGF0IGhhbmQgYmVmb3JlIGdlbmVyYXRpbmcgdGhlIHByb2plY3QuCgpUaGUgaW5wdXQgdmFyaWFibGVzLCB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWVzIChzb21lIGF1dG8gZ2VuZXJhdGVkKSBhcmU6CgoqIGBwcm9qZWN0X25hbWVgOiBUaGUgbmFtZSBvZiB0aGUgcHJvamVjdAoqIGBwcm9qZWN0X3NsdWdgOiBUaGUgZGV2ZWxvcG1lbnQgZnJpZW5kbHkgbmFtZSBvZiB0aGUgcHJvamVjdC4gQnkgZGVmYXVsdCwgYmFzZWQgb24gdGhlIHByb2plY3QgbmFtZQoqIGBkb21haW5fbWFpbmA6IFRoZSBkb21haW4gaW4gd2hlcmUgdG8gZGVwbG95IHRoZSBwcm9qZWN0IGZvciBwcm9kdWN0aW9uIChmcm9tIHRoZSBicmFuY2ggYHByb2R1Y3Rpb25gKSwgdXNlZCBieSB0aGUgbG9hZCBiYWxhbmNlciwgYmFja2VuZCwgZXRjLiBCeSBkZWZhdWx0LCBiYXNlZCBvbiB0aGUgcHJvamVjdCBzbHVnLgoqIGBkb21haW5fc3RhZ2luZ2A6IFRoZSBkb21haW4gaW4gd2hlcmUgdG8gZGVwbG95IHdoaWxlIHN0YWdpbmcgKGJlZm9yZSBwcm9kdWN0aW9uKSAoZnJvbSB0aGUgYnJhbmNoIGBtYXN0ZXJgKS4gQnkgZGVmYXVsdCwgYmFzZWQgb24gdGhlIG1haW4gZG9tYWluLgoKKiBgZG9ja2VyX3N3YXJtX3N0YWNrX25hbWVfbWFpbmA6IFRoZSBuYW1lIG9mIHRoZSBzdGFjayB3aGlsZSBkZXBsb3lpbmcgdG8gRG9ja2VyIGluIFN3YXJtIG1vZGUgZm9yIHByb2R1Y3Rpb24uIEJ5IGRlZmF1bHQsIGJhc2VkIG9uIHRoZSBkb21haW4uCiogYGRvY2tlcl9zd2FybV9zdGFja19uYW1lX3N0YWdpbmdgOiBUaGUgbmFtZSBvZiB0aGUgc3RhY2sgd2hpbGUgZGVwbG95aW5nIHRvIERvY2tlciBpbiBTd2FybSBtb2RlIGZvciBzdGFnaW5nLiBCeSBkZWZhdWx0LCBiYXNlZCBvbiB0aGUgZG9tYWluLgoKKiBgc2VjcmV0X2tleWA6IEJhY2tlbmQgc2VydmVyIHNlY3JldCBrZXkuIFVzZSB0aGUgbWV0aG9kIGFib3ZlIHRvIGdlbmVyYXRlIGl0LgoqIGBmaXJzdF9zdXBlcnVzZXJgOiBUaGUgZmlyc3Qgc3VwZXJ1c2VyIGdlbmVyYXRlZCwgd2l0aCBpdCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGNyZWF0ZSBtb3JlIHVzZXJzLCBldGMuIEJ5IGRlZmF1bHQsIGJhc2VkIG9uIHRoZSBkb21haW4uCiogYGZpcnN0X3N1cGVydXNlcl9wYXNzd29yZGA6IEZpcnN0IHN1cGVydXNlciBwYXNzd29yZC4gVXNlIHRoZSBtZXRob2QgYWJvdmUgdG8gZ2VuZXJhdGUgaXQuCiogYGJhY2tlbmRfY29yc19vcmlnaW5zYDogT3JpZ2lucyAoZG9tYWlucywgbW9yZSBvciBsZXNzKSB0aGF0IGFyZSBlbmFibGVkIGZvciBDT1JTIChDcm9zcyBPcmlnaW4gUmVzb3VyY2UgU2hhcmluZykuIFRoaXMgYWxsb3dzIGEgZnJvbnRlbmQgaW4gb25lIGRvbWFpbiAoZS5nLiBgaHR0cHM6Ly9kYXNoYm9hcmQuZXhhbXBsZS5jb21gKSB0byBjb21tdW5pY2F0ZSB3aXRoIHRoaXMgYmFja2VuZCwgdGhhdCBjb3VsZCBiZSBsaXZpbmcgaW4gYW5vdGhlciBkb21haW4gKGUuZy4gYGh0dHBzOi8vYXBpLmV4YW1wbGUuY29tYCkuIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gYWxsb3cgeW91ciBsb2NhbCBmcm9udGVuZCAod2l0aCBhIGN1c3RvbSBgaG9zdHNgIGRvbWFpbiBtYXBwaW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIHByb2plY3QncyBgUkVBRE1FLm1kYCkgdGhhdCBjb3VsZCBiZSBsaXZpbmcgaW4gYGh0dHA6Ly9kZXYuZXhhbXBsZS5jb206ODA4MGAgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgYmFja2VuZCBhdCBgaHR0cHM6Ly9zdGFnLmV4YW1wbGUuY29tYC4gTm90aWNlIHRoZSBgaHR0cGAgdnMgYGh0dHBzYCBhbmQgdGhlIGBkZXYuYCBwcmVmaXggZm9yIGxvY2FsIGRldmVsb3BtZW50IHZzIHRoZSAic3RhZ2luZyIgYHN0YWcuYCBwcmVmaXguIEJ5IGRlZmF1bHQsIGl0IGluY2x1ZGVzIG9yaWdpbnMgZm9yIHByb2R1Y3Rpb24sIHN0YWdpbmcgYW5kIGRldmVsb3BtZW50LCB3aXRoIHBvcnRzIGNvbW1vbmx5IHVzZWQgZHVyaW5nIGxvY2FsIGRldmVsb3BtZW50IGJ5IHNldmVyYWwgcG9wdWxhciBmcm9udGVuZCBmcmFtZXdvcmtzIChWdWUgd2l0aCBgOjgwODBgLCBSZWFjdCwgQW5ndWxhcikuCiogYHNtdHBfcG9ydGA6IFBvcnQgdG8gdXNlIHRvIHNlbmQgZW1haWxzIHZpYSBTTVRQLiBCeSBkZWZhdWx0IGA1ODdgLgoqIGBzbXRwX2hvc3RgOiBIb3N0IHRvIHVzZSB0byBzZW5kIGVtYWlscywgaXQgd291bGQgYmUgZ2l2ZW4gYnkgeW91ciBlbWFpbCBwcm92aWRlciwgbGlrZSBNYWlsZ3VuLCBTcGFya3Bvc3QsIGV0Yy4KKiBgc210cF91c2VyYDogVGhlIHVzZXIgdG8gdXNlIGluIHRoZSBTTVRQIGNvbm5lY3Rpb24uIFRoZSB2YWx1ZSB3aWxsIGJlIGdpdmVuIGJ5IHlvdXIgZW1haWwgcHJvdmlkZXIuCiogYHNtdHBfcGFzc3dvcmRgOiBUaGUgcGFzc3dvcmQgdG8gYmUgdXNlZCBpbiB0aGUgU01UUCBjb25uZWN0aW9uLiBUaGUgdmFsdWUgd2lsbCBiZSBnaXZlbiBieSB0aGUgZW1haWwgcHJvdmlkZXIuCiogYHNtdHBfZW1haWxzX2Zyb21fZW1haWxgOiBUaGUgZW1haWwgYWNjb3VudCB0byB1c2UgYXMgdGhlIHNlbmRlciBpbiB0aGUgbm90aWZpY2F0aW9uIGVtYWlscywgaXQgd291bGQgYmUgc29tZXRoaW5nIGxpa2UgYGluZm9AeW91ci1jdXN0b20tZG9tYWluLmNvbWAuCiAKKiBgY291Y2hiYXNlX3VzZXJgOiBDb3VjaGJhc2UgbWFpbiB1c2VyIHRvIGJlIHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9uIChjb2RlKS4gQnkgZGVmYXVsdCBgYWRtaW5gLgoqIGBjb3VjaGJhc2VfcGFzc3dvcmRgOiBQYXNzd29yZCBvZiB0aGUgbWFpbiB1c2VyLCBmb3IgdGhlIGJhY2tlbmQgY29kZS4gR2VuZXJhdGUgaXQgd2l0aCB0aGUgbWV0aG9kIGFib3ZlLgoqIGBjb3VjaGJhc2Vfc3luY19nYXRld2F5X2NvcnNgOiBMaXN0IG9mIENPUlMgb3JpZ2lucyB0aGF0IHRoZSBTeW5jIEdhdGV3YXkgc2hvdWxkIGFsbG93IHRvIHRhbGsgdG8gZGlyZWN0bHkuIFNpbWlsYXIgdG8gYGJhY2tlbmRfY29yc19vcmlnaW5zYC4KKiBgY291Y2hiYXNlX3N5bmNfZ2F0ZXdheV91c2VyYDogVXNlciB0byBiZSBjcmVhdGVkIGZvciB0aGUgQ291Y2hiYXNlIFN5bmMgR2F0ZXdheS4gVGhpcyBpcyB3aGF0IGFsbG93cyBzeW5jaHJvbml6YXRpb24gdXNpbmcgdGhlIENvdWNoREIgcHJvdG9jb2wsIHdpdGggQ291Y2hiYXNlIExpdGUgaW4gbW9iaWxlIGFwcHMgYW5kIFBvdWNoREIgaW4gdGhlIHdlYiBhbmQgaHlicmlkIG1vYmlsZSBhcHBzLgoqIGBjb3VjaGJhc2Vfc3luY19nYXRld2F5X3Bhc3N3b3JkYDogQ291Y2hiYXNlIFN5bmMgR2F0ZXdheSBwYXNzd29yZC4gR2VuZXJhdGUgaXQgd2l0aCB0aGUgbWV0aG9kIGFib3ZlLgogCiogYHRyYWVmaWtfY29uc3RyYWludF90YWdgOiBUaGUgdGFnIHRvIGJlIHVzZWQgYnkgdGhlIGludGVybmFsIFRyYWVmaWsgbG9hZCBiYWxhbmNlciAoZm9yIGV4YW1wbGUsIHRvIGRpdmlkZSByZXF1ZXN0cyBiZXR3ZWVuIGJhY2tlbmQgYW5kIGZyb250ZW5kKSBmb3IgcHJvZHVjdGlvbi4gVXNlZCB0byBzZXBhcmF0ZSB0aGlzIHN0YWNrIGZyb20gYW55IG90aGVyIHN0YWNrIHlvdSBtaWdodCBoYXZlLiBUaGlzIHNob3VsZCBpZGVudGlmeSBlYWNoIHN0YWNrIGluIGVhY2ggZW52aXJvbm1lbnQgKHByb2R1Y3Rpb24sIHN0YWdpbmcsIGV0YykuCiogYHRyYWVmaWtfY29uc3RyYWludF90YWdfc3RhZ2luZ2A6IFRoZSBUcmFlZmlrIHRhZyB0byBiZSB1c2VkIHdoaWxlIG9uIHN0YWdpbmcuIAoKKiBgdHJhZWZpa19wdWJsaWNfbmV0d29ya2A6IFRoaXMgYXNzdW1lcyB5b3UgaGF2ZSBhbm90aGVyIHNlcGFyYXRlIHB1YmxpY2x5IGZhY2luZyBUcmFlZmlrIGF0IHRoZSBzZXJ2ZXIgLyBjbHVzdGVyIGxldmVsLiBUaGlzIGlzIHRoZSBuZXR3b3JrIHRoYXQgbWFpbiBUcmFlZmlrIGxpdmVzIGluLgoqIGB0cmFlZmlrX3B1YmxpY19jb25zdHJhaW50X3RhZ2A6IFRoZSB0YWcgdGhhdCBzaG91bGQgYmUgdXNlZCBieSBzdGFjayBzZXJ2aWNlcyB0aGF0IHNob3VsZCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBwdWJsaWMuCgoqIGBmbG93ZXJfYXV0aGA6IEJhc2ljIEhUVFAgYXV0aGVudGljYXRpb24gZm9yIGZsb3dlciwgaW4gdGhlIGZvcm1gdXNlcjpwYXNzd29yZGAuIEJ5IGRlZmF1bHQ6ICJgcm9vdDpjaGFuZ2V0aGlzYCIuCgoqIGBzZW50cnlfZHNuYDogS2V5IFVSTCAoRFNOKSBvZiBTZW50cnksIGZvciBsaXZlIGVycm9yIHJlcG9ydGluZy4gSWYgeW91IGFyZSBub3QgdXNpbmcgaXQgeWV0LCB5b3Ugc2hvdWxkLCBpcyBvcGVuIHNvdXJjZS4gRS5nLjogYGh0dHBzOi8vMTIzNGFiY2Q6NTY3OGVmQHNlbnRyeS5leGFtcGxlLmNvbS8zMGAuCgoqIGBkb2NrZXJfaW1hZ2VfcHJlZml4YDogUHJlZml4IHRvIHVzZSBmb3IgRG9ja2VyIGltYWdlIG5hbWVzLiBJZiB5b3UgYXJlIHVzaW5nIEdpdExhYiBEb2NrZXIgcmVnaXN0cnkgaXQgd291bGQgYmUgYmFzZWQgb24geW91ciBjb2RlIHJlcG9zaXRvcnkuIEUuZy46IGBnaXQuZXhhbXBsZS5jb20vZGV2ZWxvcG1lbnQtdGVhbS9teS1hd2Vzb21lLXByb2plY3QvYC4KKiBgZG9ja2VyX2ltYWdlX2JhY2tlbmRgOiBEb2NrZXIgaW1hZ2UgbmFtZSBmb3IgdGhlIGJhY2tlbmQuIEJ5IGRlZmF1bHQsIGl0IHdpbGwgYmUgYmFzZWQgb24geW91ciBEb2NrZXIgaW1hZ2UgcHJlZml4LCBlLmcuOiBgZ2l0LmV4YW1wbGUuY29tL2RldmVsb3BtZW50LXRlYW0vbXktYXdlc29tZS1wcm9qZWN0L2JhY2tlbmRgLiBBbmQgZGVwZW5kaW5nIG9uIHlvdXIgZW52aXJvbm1lbnQsIGEgZGlmZmVyZW50IHRhZyB3aWxsIGJlIGFwcGVuZGVkICggYHByb2RgLCBgc3RhZ2AsIGBicmFuY2hgICkuIFNvLCB0aGUgZmluYWwgaW1hZ2UgbmFtZXMgdXNlZCB3aWxsIGJlIGxpa2U6IGBnaXQuZXhhbXBsZS5jb20vZGV2ZWxvcG1lbnQtdGVhbS9teS1hd2Vzb21lLXByb2plY3QvYmFja2VuZDpwcm9kYC4KKiBgZG9ja2VyX2ltYWdlX2NlbGVyeXdvcmtlcmA6IERvY2tlciBpbWFnZSBmb3IgdGhlIGNlbGVyeSB3b3JrZXIuIEJ5IGRlZmF1bHQsIGJhc2VkIG9uIHlvdXIgRG9ja2VyIGltYWdlIHByZWZpeC4KKiBgZG9ja2VyX2ltYWdlX2Zyb250ZW5kYDogRG9ja2VyIGltYWdlIGZvciB0aGUgZnJvbnRlbmQuIEJ5IGRlZmF1bHQsIGJhc2VkIG9uIHlvdXIgRG9ja2VyIGltYWdlIHByZWZpeC4KKiBgZG9ja2VyX2ltYWdlX3N5bmNfZ2F0ZXdheWA6IERvY2tlciBpbWFnZSBmb3IgdGhlIFN5bmMgR2F0ZXdheS4gQnkgZGVmYXVsdCwgYmFzZWQgb24geW91ciBEb2NrZXIgaW1hZ2UgcHJlZml4LgoKIyMgSG93IHRvIGRlcGxveQoKVGhpcyBzdGFjayBjYW4gYmUgYWRqdXN0ZWQgYW5kIHVzZWQgd2l0aCBzZXZlcmFsIGRlcGxveW1lbnQgb3B0aW9ucyB0aGF0IGFyZSBjb21wYXRpYmxlIHdpdGggRG9ja2VyIENvbXBvc2UsIGJ1dCBpdCBpcyBkZXNpZ25lZCB0byBiZSB1c2VkIGluIGEgY2x1c3RlciBjb250cm9sbGVkIHdpdGggcHVyZSBEb2NrZXIgaW4gU3dhcm0gTW9kZSB3aXRoIGEgVHJhZWZpayBtYWluIGxvYWQgYmFsYW5jZXIgcHJveHkgaGFuZGxpbmcgYXV0b21hdGljIEhUVFBTIGNlcnRpZmljYXRlcywgdXNpbmcgdGhlIGlkZWFzIGZyb20gPGEgaHJlZj0iaHR0cHM6Ly9kb2NrZXJzd2FybS5yb2NrcyIgdGFyZ2V0PSJfYmxhbmsiPkRvY2tlclN3YXJtLnJvY2tzPC9hPi4KClBsZWFzZSByZWZlciB0byA8YSBocmVmPSJodHRwczovL2RvY2tlcnN3YXJtLnJvY2tzIiB0YXJnZXQ9Il9ibGFuayI+RG9ja2VyU3dhcm0ucm9ja3M8L2E+IHRvIHNlZSBob3cgdG8gZGVwbG95IHN1Y2ggYSBjbHVzdGVyIGluIDIwIG1pbnV0ZXMuCgojIyBNb3JlIGRldGFpbHMKCkFmdGVyIHVzaW5nIHRoaXMgZ2VuZXJhdG9yLCB5b3VyIG5ldyBwcm9qZWN0ICh0aGUgZGlyZWN0b3J5IGNyZWF0ZWQpIHdpbGwgY29udGFpbiBhbiBleHRlbnNpdmUgYFJFQURNRS5tZGAgd2l0aCBpbnN0cnVjdGlvbnMgZm9yIGRldmVsb3BtZW50LCBkZXBsb3ltZW50LCBldGMuIFlvdSBjYW4gcHJlLXJlYWQgW3RoZSBwcm9qZWN0IGBSRUFETUUubWRgIHRlbXBsYXRlIGhlcmUgdG9vXSguL3t7Y29va2llY3V0dGVyLnByb2plY3Rfc2x1Z319L1JFQURNRS5tZCkuCgojIyBTaWJsaW5nIHByb2plY3QgZ2VuZXJhdG9ycwoKKiBCYXNlZCBvbiBQb3N0Z3JlU1FMOiBbaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL2Z1bGwtc3RhY2stZmFzdGFwaS1wb3N0Z3Jlc3FsXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vZnVsbC1zdGFjay1mYXN0YXBpLXBvc3RncmVzcWwpLgoKIyMgUmVsZWFzZSBOb3RlcwoKIyMjIExhdGVzdCBDaGFuZ2VzCgoqIEZpeCBXaW5kb3dzIGxpbmUgZW5kaW5ncyBmb3Igc2hlbGwgc2NyaXB0cyBhZnRlciBwcm9qZWN0IGdlbmVyYXRpb24gd2l0aCBDb29raWVjdXR0ZXIgaG9va3MuIFBSIFsjMjhdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby9mdWxsLXN0YWNrLWZhc3RhcGktY291Y2hiYXNlL3B1bGwvMjgpLgoqIFJlbW92ZSBgcGFja2FnZS1sb2NrLmpzb25gIHRvIGxldCBldmVyeW9uZSBsb2NrIHRoZWlyIG93biB2ZXJzaW9ucyAoZGVwZW5kaW5nIG9uIE9TLCBldGMpLgoqIFNpbXBsaWZ5IFRyYWVmaWsgbGFiZWxzIGZvciBzZXJ2aWNlcy4gUFIgWyMyN10oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL2Z1bGwtc3RhY2stZmFzdGFwaS1jb3VjaGJhc2UvcHVsbC8yNykuCiogRml4IEZsb3dlciBEb2NrZXIgY29uZmlndXJhdGlvbi4gUFIgWyMyNF0oaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL2Z1bGwtc3RhY2stZmFzdGFwaS1jb3VjaGJhc2UvcHVsbC8yNCkuCiogVXBkYXRlIHRlc3Rpbmcgc2NyaXB0cyBhbmQgdHlwby4KKiBBZGQgbm9ybWFsIHVzZXIgUHl0ZXN0IGZpeHR1cmUuIFBSIFsjMjNdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby9mdWxsLXN0YWNrLWZhc3RhcGktY291Y2hiYXNlL3B1bGwvMjMpLgoqIFVwZGF0ZSBEb2NrZXJmaWxlcyB0byB1c2UgQ291Y2hiYXNlIGZyb20gRGViaWFuIGltYWdlLiBQUiBbIzIwXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vZnVsbC1zdGFjay1mYXN0YXBpLWNvdWNoYmFzZS9wdWxsLzIwKSBieSBbQEdqYWNxdWVub3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9HamFjcXVlbm90KS4KKiBVc2UgbmV3IFB5ZGFudGljIHR5cGVzLiBQUiBbIzIxXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vZnVsbC1zdGFjay1mYXN0YXBpLWNvdWNoYmFzZS9wdWxsLzIxKSBieSBbQHRlaHRibF0oaHR0cHM6Ly9naXRodWIuY29tL3RlaHRibCkuCgojIyMgMC40LjAKCiogRml4IHNlY3VyaXR5IG9uIHJlc2V0dGluZyBhIHBhc3N3b3JkLiBSZWNlaXZlIGBwYXNzd29yZGAgYW5kIGB0b2tlbmAgYXMgYm9keSwgbm90IHF1ZXJ5LiBQUiBbIzE2XShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vZnVsbC1zdGFjay1mYXN0YXBpLWNvdWNoYmFzZS9wdWxsLzE2KS4KCiogRm9yd2FyZCBhcmd1bWVudHMgZnJvbSBzY3JpcHQgdG8gYHB5dGVzdGAgaW5zaWRlIGNvbnRhaW5lci4KCiogVXBkYXRlIEp1cHl0ZXIgTGFiIGluc3RhbGxhdGlvbiBhbmQgdXRpbCBzY3JpcHQvZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIGxvY2FsIGRldmVsb3BtZW50LgoKIyMjIDAuMy4wCgoqIFBSIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby9mdWxsLXN0YWNrLWZhc3RhcGktY291Y2hiYXNlL3B1bGwvMTUiIHRhcmdldD0iX2JsYW5rIj4jMTU8L2E+OgogICAgKiBVcGRhdGUgQ1JVRCB1dGlscyB0byB1c2UgdHlwZXMgYmV0dGVyLgogICAgKiBTaW1wbGlmeSBQeWRhbnRpYyBtb2RlbCBuYW1lcywgZnJvbSBgVXNlckluQ3JlYXRlYCB0byBgVXNlckNyZWF0ZWAsIGV0Yy4KICAgICogVXBncmFkZSBwYWNrYWdlcy4KICAgICogQWRkIG5ldyBnZW5lcmljICJJdGVtcyIgbW9kZWxzLCBjcnVkIHV0aWxzLCBlbmRwb2ludHMsIGFuZCB0ZXN0cy4gVG8gZmFjaWxpdGF0ZSByZS11c2luZyB0aGVtIHRvIGNyZWF0ZSBuZXcgZnVuY3Rpb25hbGl0eS4gQXMgdGhleSBhcmUgc2ltcGxlIGFuZCBnZW5lcmljIChub3QgbGlrZSBVc2VycyksIGl0J3MgZWFzaWVyIHRvIGNvcHktcGFzdGUgYW5kIGFkYXB0IHRoZW0gdG8gZWFjaCB1c2UgY2FzZS4KICAgICogVXBkYXRlIGVuZHBvaW50cy8qcGF0aCBvcGVyYXRpb25zKiB0byBzaW1wbGlmeSBjb2RlIGFuZCB1c2UgbmV3IHV0aWxpdGllcywgcHJlZml4IGFuZCB0YWdzIGluIGBpbmNsdWRlX3JvdXRlcmAuCiAgICAqIFVwZGF0ZSB0ZXN0aW5nIHV0aWxzLgogICAgKiBVcGRhdGUgbGludGluZyBydWxlcywgcmVsYXggdnVsdHVyZSB0byByZWR1Y2UgZmFsc2UgcG9zaXRpdmVzLgogICAgKiBBZGQgZnVsbCB0ZXh0IHNlYXJjaCBmb3IgaXRlbXMuCiAgICAqIFVwZGF0ZSBwcm9qZWN0IFJFQURNRS5tZCB3aXRoIHRpcHMgYWJvdXQgaG93IHRvIHN0YXJ0IHdpdGggYmFja2VuZC4KCiMjIyAwLjIuMQoKKiBGaXggZnJvbnRlbmQgaGlqYWNraW5nIC9kb2NzIGluIGRldmVsb3BtZW50LiBVc2luZyBsYXRlc3QgaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL25vZGUtZnJvbnRlbmQgd2l0aCBjdXN0b20gTmdpbnggY29uZmlncyBpbiBmcm9udGVuZC4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL2Z1bGwtc3RhY2stZmFzdGFwaS1jb3VjaGJhc2UvcHVsbC8xNCIgdGFyZ2V0PSJfYmxhbmsiPlBSICMxNDwvYT4uCgoqIFVwZGF0ZSBnZW5lcmF0ZWQgUkVBRE1FLiBNaW5vciB0eXBvcy4KCiogVXBkYXRlIENvdWNoYmFzZSBpbnN0YWxsYXRpb24sIHRvIGluY2x1ZGUgQ291Y2hiYXNlIGNvbW1hbmQgbGluZSB0b29scy4KCiogU2V0IGAvc3RhcnQtcmVsb2FkLnNoYCBhcyBhIGNvbW1hbmQgb3ZlcnJpZGUgZm9yIGRldmVsb3BtZW50IGJ5IGRlZmF1bHQuCgojIyMgMC4yLjAKCioqPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL2Z1bGwtc3RhY2stZmFzdGFwaS1jb3VjaGJhc2UvcHVsbC83IiB0YXJnZXQ9Il9ibGFuayI+UFIgIzc8L2E+Kio6CgoqIFNpbXBsaWZ5IGFuZCB1cGRhdGUgYmFja2VuZCBgRG9ja2VyZmlsZWBzLgoqIFJlZmFjdG9yIGFuZCBzaW1wbGlmeSBiYWNrZW5kIGNvZGUsIGltcHJvdmUgbmFtaW5nLCBpbXBvcnRzLCBtb2R1bGVzIGFuZCAibmFtZXNwYWNlcyIuCiogSW1wcm92ZSBhbmQgc2ltcGxpZnkgVnVleCBpbnRlZ3JhdGlvbiB3aXRoIFR5cGVTY3JpcHQgYWNjZXNzb3JzLgoqIFN0YW5kYXJkaXplIGZyb250ZW5kIGNvbXBvbmVudHMgbGF5b3V0LCBidXR0b25zIG9yZGVyLCBldGMuCiogQWRkIGxvY2FsIGRldmVsb3BtZW50IHNjcmlwdHMgKHRvIGRldmVsb3AgdGhpcyBwcm9qZWN0IGdlbmVyYXRvciBpdHNlbGYpLgoqIEFkZCBsb2dzIHRvIHN0YXJ0dXAgbW9kdWxlcyB0byBkZXRlY3QgZXJyb3JzIGVhcmx5LgoqIEltcHJvdmUgRmFzdEFQSSBkZXBlbmRlbmN5IHV0aWxpdGllcywgdG8gc2ltcGxpZnkgYW5kIHJlZHVjZSBjb2RlICh0byByZXF1aXJlIGEgc3VwZXJ1c2VyKS4KKiBGaXgvdXBkYXRlIGxvZ2ljIHRvIHVwZGF0ZSB1c2Vycy4KCiMjIExpY2Vuc2UKClRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1JVCBsaWNlbnNlLgo= readmeEtag: '"abba64326b23cc45521d6a9eddbe4100cd04b917"' readmeLastModified: Mon, 14 Nov 2022 15:41:30 GMT repositoryId: 161297482 description: >- Full stack, modern web application generator. Using FastAPI, Couchbase as database, Docker, automatic HTTPS and more. created: '2018-12-11T07:53:25Z' updated: '2026-02-02T17:22:16Z' language: Python archived: true stars: 455 watchers: 6 forks: 83 owner: tiangolo logo: https://avatars.githubusercontent.com/u/1326112?v=4 license: MIT repoEtag: '"a874edf4eca2f677fe359fe15e768a2a3ae7ab542cd074f50f95a88144855ff5"' repoLastModified: Mon, 02 Feb 2026 17:22:16 GMT foundInMaster: true category: Server Implementations id: 5b8908148637a85dc44c083694fd548a - source: openapi3 tags repository: https://github.com/leosussan/fastapi-gino-arq-uvicorn v3: true repositoryMetadata: base64Readme: >- IyBmYXN0YXBpLWdpbm8tYXJxLXV2aWNvcm4KSGlnaC1wZXJmb3JtYW5jZSBBc3luYyBSRVNUIEFQSSwgaW4gUHl0aG9uLiBGYXN0QVBJICsgR0lOTyArIEFycSArIFV2aWNvcm4gKHBvd2VyZWQgYnkgUmVkaXMgJiBQb3N0Z3JlU1FMKS4KCiMjIENvbnRlbnRzCi0gW2Zhc3RhcGktZ2luby1hcnEtdXZpY29ybl0oI2Zhc3RhcGktZ2luby1hcnEtdXZpY29ybikKICAtIFtDb250ZW50c10oI2NvbnRlbnRzKQogIC0gW0dldCBTdGFydGVkXSgjZ2V0LXN0YXJ0ZWQpCiAgICAtIFtTZXR1cF0oI3NldHVwKQogICAgLSBbUnVuXSgjcnVuKQogICAgICAtIFtSdW4gTG9jYWxseV0oI3J1bi1sb2NhbGx5KQogICAgICAtIFtSdW4gTG9jYWxseSB3aXRoIERvY2tlci1Db21wb3NlLl0oI3J1bi1sb2NhbGx5LXdpdGgtZG9ja2VyLWNvbXBvc2UpCiAgICAtIFtCdWlsZCBZb3VyIEFwcGxpY2F0aW9uXSgjYnVpbGQteW91ci1hcHBsaWNhdGlvbikKICAtIFtGZWF0dXJlc10oI2ZlYXR1cmVzKQogICAgLSBbQ29yZSBEZXBlbmRlbmNpZXNdKCNjb3JlLWRlcGVuZGVuY2llcykKICAgICAgLSBbQWRkaXRpb25hbCBEZXBlbmRlbmNpZXNdKCNhZGRpdGlvbmFsLWRlcGVuZGVuY2llcykKCiMjIEdldCBTdGFydGVkCiMjIyBTZXR1cAoxLiBDbG9uZSB0aGlzIFJlcG9zaXRvcnkuIGBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2xlb3N1c3Nhbi9mYXN0YXBpLWdpbm8tYXJxLXV2aWNvcm4uZ2l0YAoyLiBJbnN0YWxsIGBQeXRob24gMy44YCBhbmQgYHBvZXRyeWAuCiAgICAqIFJlY29tbWVuZGVkIE1ldGhvZDogYGFzZGZgIC0gYSB1bml2ZXJzYWwgdmVyc2lvbiBtYW5hZ2VyICh0aGluayBgbnZtYCBvciBgcHllbnZgKQogICAgICAgICogRm9sbG93IFt0aGVzZSBpbnN0cnVjdGlvbnNdKGh0dHBzOi8vYXNkZi12bS5jb20vIy9jb3JlLW1hbmFnZS1hc2RmLXZtP2lkPWluc3RhbGwtYXNkZi12bSkgdG8gaW5zdGFsbCBgYXNkZmAuCiAgICAgICAgKiBSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kcyBmcm9tIHRoZSBwcm9qZWN0IHJvb3Q6CiAgICAgICAgICAgICogYGFzZGYgcGx1Z2luIGFkZCBweXRob25gCiAgICAgICAgICAgICogYGFzZGYgcGx1Z2luIGFkZCBwb2V0cnlgCiAgICAgICAgICAgICogYGFzZGYgaW5zdGFsbGAgLS0gd2lsbCBkb3dubG9hZCAmIGNvbmZpZ3VyZSB0aGlzIHByb2plY3QncyBgUHl0aG9uYCArIGBwb2V0cnlgIHNldHVwCiAgICAgICAgKiBffk5PVEVfOiB5b3VyIG1hY2hpbmUgbXVzdCBoYXZlIGEgc3lzdGVtIHZlcnNpb24gb2YgUHl0aG9uIGluc3RhbGxlZC4gSWYgeW91IGRvbid0LCBydW4gdGhlIGZvbGxvd2luZzogYGFzZGYgaW5zdGFsbCBweXRob24gMy44LjIgJiYgYXNkZiBnbG9iYWwgcHl0aG9uIDMuOC4yYAogICAgKiBJZiB5b3UgaGF2ZSBgUHl0aG9uIDMuOGAgYW5kIGBwb2V0cnlgIGluc3RhbGxlZCBhbHJlYWR5LCBwbGVhc2UgZmVlbCBmcmVlIHRvIHNraXAuCjMuIEluc3RhbGwgZGVwZW5kZW5jaWVzIChgcG9ldHJ5IGluc3RhbGxgKS4KNC4gQWN0aXZhdGUgcHJlLWNvbW1pdCBob29rcyAoaW4gYHBvZXRyeSBzaGVsbGAsIHJ1biBgcHJlLWNvbW1pdCBpbnN0YWxsYCkuCjUuIE1ha2UgYSBjb3B5IG9mIGAuZGlzdC5lbnZgLCByZW5hbWUgdG8gYC5lbnZgLiBGaWxsIGluIFBvc3RncmVTUUwsIFJlZGlzLCBTZW50cnkgKG9wdGlvbmFsKSB2YXJpYWJsZXMuCjYuIEdlbmVyYXRlIERCIE1pZ3JhdGlvbnM6IGluIGBwb2V0cnkgc2hlbGxgLCBydW4gYGFsZW1iaWMgcmV2aXNpb24gLS1hdXRvZ2VuZXJhdGVgLiAKICAgICogQXBwbHkgbWlncmF0aW9ucyBtYW51YWxseSB3aXRoIGBhbGVtYmljIHVwZ3JhZGUgaGVhZGAuCiAgICAqIElmIHVzaW5nIHRoZSBEb2NrZXJmaWxlLCBtaWdyYXRpb25zIGFyZSBhcHBsaWVkIGF0IHN0YXJ0dXAuCgojIyMgUnVuCgojIyMjIFJ1biBMb2NhbGx5Cl9OT1RFOiBZb3UgbXVzdCBoYXZlIFBvc3RncmVTUUwgJiBSZWRpcyBydW5uaW5nIGxvY2FsbHkuXwoKMS4gTWFrZSBzdXJlIFBvc3RncmVTUUwgJiBSZWRpcyBhcmUgcnVubmluZyBsb2NhbGx5LgoyLiBSdW46CiAgICAtIEZhc3RBUEkgQXBwbGljYXRpb246CiAgICAgICAgKiBfRm9yIEFjdGl2ZSBEZXZlbG9wbWVudCAody8gYXV0by1yZWxvYWQpOl8gUnVuIGxvY2FsbHkgd2l0aCBgcG9ldHJ5IHJ1biB0YXNrIGFwcGAKICAgICAgICAqIF9Gb3IgRGVidWdnaW5nIChjb21wYXRpYmxlIHcvIGRlYnVnZ2Vycywgbm8gYXV0by1yZWxvYWQpOl8gQ29uZmlndXJlIGRlYnVnZ2VyIHRvIHJ1biBgcHl0aG9uIGFwcC9tYWluLnB5YC4KICAgIC0gQmFja2dyb3VuZCBUYXNrIFdvcmtlcjoKICAgICAgICAqIF9Gb3IgQWN0aXZlIERldmVsb3BtZW50Ol8gUnVuICBgcG9ldHJ5IHJ1biB0YXNrIHdvcmtlcmAKCiMjIyMgUnVuIExvY2FsbHkgd2l0aCBEb2NrZXItQ29tcG9zZS4KMS4gTWFrZSBzdXJlIGBEb2NrZXJgIGlzIHJ1bm5pbmcgbG9jYWxseS4KMi4gUnVuIGBwb2V0cnkgcnVuIHRhc2sgY29tcG9zZS11cGAqLgogICAtIFJ1biBgcG9ldHJ5IHJ1biB0YXNrIGNvbXBvc2UtZG93bmAgdG8gc3BpbiBkb3duLCBjbGVhbiB1cC4KCipgYXBwL3NldHRpbmdzL3ByZXN0YXJ0LnNoYCB3aWxsIHJ1biBtaWdyYXRpb25zIGZvciB5b3UgYmVmb3JlIHRoZSBhcHAgc3RhcnRzLgoKIyMjIEJ1aWxkIFlvdXIgQXBwbGljYXRpb24KKiBDcmVhdGUgcm91dGVzIGluIGAvYXBwL3JvdXRlc2AsIGltcG9ydCAmIGFkZCB0aGVtIHRvIHRoZSBgUk9VVEVSU2AgY29uc3RhbnQgaW4gIGAvYXBwL21haW4ucHlgCiogQ3JlYXRlIGRhdGFiYXNlIG1vZGVscyB0byBgL2FwcC9tb2RlbHMvb3JtYCwgYWRkIHRoZW0gdG8gYC9hcHAvbW9kZWxzL29ybS9taWdyYXRpb25zL2Vudi5weWAgZm9yIG1pZ3JhdGlvbnMKKiBDcmVhdGUgcHlkYW50aWMgbW9kZWxzIGluIGAvYXBwL21vZGVscy9weWRhbnRpY2AKKiBTdG9yZSBjb21wbGV4IGRiIHF1ZXJpZXMgaW4gYC9hcHAvbW9kZWxzL29ybS9xdWVyaWVzYAoqIFN0b3JlIGNvbXBsZXggdGFza3MgaW4gYGFwcC90YXNrc2AuCiogQWRkIC8gZWRpdCBnbG9iYWxzIHRvIGAvLmVudmAsIGV4cG9zZSAmIGltcG9ydCB0aGVtIGZyb20gYC9hcHAvc2V0dGluZ3MvZ2xvYmFscy5weWAKICAgICogVXNlIGFueSBjb3JvdXRpbmUgYXMgYSBiYWNrZ3JvdW5kIGZ1bmN0aW9uOiBzdG9yZSBhIHJlZmVyZW5jZSBpbiB0aGUgYEFSUV9CQUNLR1JPVU5EX0ZVTkNUSU9OU2AgZW52LgogICAgKiBTZXQgYFNFTlRSWV9EU05gIGluIHlvdXIgZW52aXJvbm1lbnQgdG8gZW5hYmxlIFNlbnRyeS4KKiBEZWZpbmUgY29kZSB0byBydW4gYmVmb3JlIGxhdW5jaCAobWlncmF0aW9ucywgc2V0dXAsIGV0YykgaW4gYC9hcHAvc2V0dGluZ3MvcHJlc3RhcnQuc2hgCgojIyBGZWF0dXJlcwojIyMgQ29yZSBEZXBlbmRlbmNpZXMKKiAqKkZhc3RBUEk6KiogdG91dHMgcGVyZm9ybWFuY2Ugb24tcGFyIHdpdGggTm9kZUpTICYgR28gKyBhdXRvbWF0aWMgU3dhZ2dlciArIFJlRG9jIGdlbmVyYXRpb24uIAoqICoqR0lOTzoqKiBidWlsdCBvbiBTUUxBbGNoZW15IGNvcmUuIExpZ2h0d2VpZ2h0LCBzaW1wbGUsIGFzeW5jaHJvbm91cyBPUk0gZm9yIFBvc3RncmVTUUwuCiogKipBcnE6KiogQXN5bmNpbyArIFJlZGlzID0gZmFzdCwgcmVzb3VyY2UtbGlnaHQgam9iIHF1ZXVpbmcgJiBSUEMuCiogKipVdmljb3JuOioqIExpZ2h0bmluZy1mYXN0LCBhc3luY2hyb25vdXMgQVNHSSBzZXJ2ZXIuCiogKipPcHRpbWl6ZWQgRG9ja2VyZmlsZToqKiBPcHRpbWl6ZWQgRG9ja2VyZmlsZSBmb3IgQVNHSSBhcHBsaWNhdGlvbnMsIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3RpYW5nb2xvL3V2aWNvcm4tZ3VuaWNvcm4tZG9ja2VyLgoKIyMjIyBBZGRpdGlvbmFsIERlcGVuZGVuY2llcwoqICoqUG9zdGdyZVNRTDoqKiBSb2J1c3QsIGZ1bGx5LWZlYXR1cmVkLCBzY2FsYWJsZSwgb3Blbi1zb3VyY2UuCiogKipSZWRpczoqKiBGYXN0LCBzaW1wbGUsIGJyb2tlciBmb3IgdGhlIEFycSB0YXNrIHF1ZXVlLgoqICoqUHlkYW50aWM6KiogQ29yZSB0byBGYXN0QVBJLiBEZWZpbmUgaG93IGRhdGEgc2hvdWxkIGJlIGluIHB1cmUsIGNhbm9uaWNhbCBweXRob247IHZhbGlkYXRlIGl0IHdpdGggcHlkYW50aWMuIAoqICoqQWxlbWJpYzoqKiBIYW5kbGVzIGRhdGFiYXNlIG1pZ3JhdGlvbnMuIENvbXBhdGlibGUgd2l0aCBHSU5PLgoqICoqU1FMQWxjaGVteV9VdGlsczoqKiBQcm92aWRlcyBlc3NlbnRpYWwgaGFuZGxlcyAmIGRhdGF0eXBlcy4gQ29tcGF0aWJsZSB3aXRoIEdJTk8uCiogKipTZW50cnk6KiogT3Blbi1zb3VyY2UsIGNsb3VkLWhvc3RlZCBlcnJvciArIGV2ZW50IG1vbml0b3JpbmcuCiogKipQcmUtQ29tbWl0OioqIGF1dG9tYXRpYyBmb3JtYXR0aW5nIChgYmxhY2tgICsgYGlzb3J0YCkgYW5kIGxpbnRpbmcgKGBmbGFrZThgKS4KKiAqKlRhc2tpcHk6KiogU21hbGwsIGZsZXhpYmxlIHRhc2sgcnVubmVyIGZvciBQb2V0cnkuCg== readmeEtag: '"3cfcd59db1b45ce6f02867b4282c5e9cc15a329d"' readmeLastModified: Fri, 19 Mar 2021 05:12:56 GMT repositoryId: 193383620 description: >- High-performance Async REST API, in Python. FastAPI + GINO + Arq + Uvicorn (w/ Redis and PostgreSQL). created: '2019-06-23T18:44:16Z' updated: '2026-02-03T15:53:42Z' language: Python archived: false stars: 559 watchers: 12 forks: 46 owner: leosussan logo: https://avatars.githubusercontent.com/u/7993496?v=4 license: MIT repoEtag: '"6e6e94735765bd0ac67e5f9e9def4bec5ca071f54d0f1a498f40d97664ba1940"' repoLastModified: Tue, 03 Feb 2026 15:53:42 GMT foundInMaster: true category: Server Implementations id: ca4835106497a7abc28ad7ff8d789dfd - source: openapi3 tags repository: https://github.com/grantila/typeconv v3: true repositoryMetadata: base64Readme: >- WyFbbnBtIHZlcnNpb25dW25wbS1pbWFnZV1dW25wbS11cmxdClshW2Rvd25sb2Fkc11bZG93bmxvYWRzLWltYWdlXV1bbnBtLXVybF0KWyFbYnVpbGQgc3RhdHVzXVtidWlsZC1pbWFnZV1dW2J1aWxkLXVybF0KWyFbY292ZXJhZ2Ugc3RhdHVzXVtjb3ZlcmFnZS1pbWFnZV1dW2NvdmVyYWdlLXVybF0KWyFbTm9kZS5KUyB2ZXJzaW9uXVtub2RlLXZlcnNpb25dXVtub2RlLXVybF0KCgo8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2dyYW50aWxhL3R5cGVjb252L21hc3Rlci9hc3NldHMvbG9nby5zdmciIHdpZHRoPSIxMDAlIiAvPgoKKip0eXBlY29udioqIGlzIGFuIGV4dHJlbWVseSBmYXN0ICpzaWx2ZXIgYnVsbGV0KiB0eXBlIGNvbnZlcnNpb24gdXRpbGl0eS4KCkl0IGNvbnZlcnRzIGJldHdlZW4gYW55IG9mIGl0cyBzdXBwb3J0ZWQgdHlwZXMsIGJpZGlyZWN0aW9uYWxseS4KCnR5cGVjb252IGxldHMgeW91IGNvbnZlcnQgYmV0d2VlbiB0eXBlIHN5c3RlbXMgd2hpY2ggaGF2ZSBbYGNvcmUtdHlwZXNgXVtjb3JlLXR5cGVzLWdpdGh1Yi11cmxdIGNvbnZlcnRlcnMsIHN1Y2ggYXMgSlNPTiBTY2hlbWEsIFR5cGVTY3JpcHQsIEdyYXBoUUwsIE9wZW4gQVBJIGFuZCBbU3VyZVR5cGVdW3N1cmV0eXBlLWdpdGh1Yi11cmxdLiBUaGlzIHBhY2thZ2UgY2FuIGJlIHVzZWQgYXMgYW4gQVBJIHByb2dyYW1hdGljYWxseSBvciBhcyBhbiBhcHBsaWNhdGlvbiAoaW5zdGFsbGVkIGluIGBub2RlX21vZHVsZXMvLmJpbmAgb3IgYnkgdXNpbmcgZS5nLiBbYG5weGBdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL25weCkpLgoKQnkgdGFraW5nIGFkdmFudGFnZSBvZiB0aGUgW2Bjb3JlLXR5cGVzYF1bY29yZS10eXBlcy1naXRodWItdXJsXSAoW25wbV1bY29yZS10eXBlcy1ucG0tdXJsXSkgdG9vbGJveCBmb3IgZ2VuZXJpYyB0eXBlIGhhbmRsaW5nLCB0eXBlY29udiBjYW4gY29udmVydCBhbmQgbWFpbnRhaW4gc291cmNlIGNvZGUgbG9jYXRpb24gaW5mb3JtYXRpb24sIGNvbW1lbnRzLCBkZXNjcmlwdGlvbnMgZXRjLiB3aGVuIGNvbnZlcnRpbmcgYmV0d2VlbiB0aGUgZGlmZmVyZW50IHR5cGUgc3lzdGVtcy4gSXQgaXMgdXNpbmcgdGhlIGZvbGxvd2luZyBjb252ZXJ0ZXIgcGFja2FnZXM6CiAqIFtgY29yZS10eXBlcy1qc29uLXNjaGVtYWBdW2NvcmUtdHlwZXMtanNvbi1zY2hlbWEtZ2l0aHViLXVybF0gKFtucG1dW2NvcmUtdHlwZXMtanNvbi1zY2hlbWEtbnBtLXVybF0pCiAqIFtgY29yZS10eXBlcy10c2BdW2NvcmUtdHlwZXMtdHMtZ2l0aHViLXVybF0gKFtucG1dW2NvcmUtdHlwZXMtdHMtbnBtLXVybF0pCiAqIFtgY29yZS10eXBlcy1ncmFwaHFsYF1bY29yZS10eXBlcy1ncmFwaHFsLWdpdGh1Yi11cmxdIChbbnBtXVtjb3JlLXR5cGVzLWdyYXBocWwtbnBtLXVybF0pCiAqIFtgY29yZS10eXBlcy1zdXJldHlwZWBdW2NvcmUtdHlwZXMtc3VyZXR5cGUtZ2l0aHViLXVybF0gKFtucG1dW2NvcmUtdHlwZXMtc3VyZXR5cGUtbnBtLXVybF0pCgpUaGVzZSB0eXBlIHN5c3RlbXMgZG9uJ3Qgc2hhcmUgdGhlIHNhbWUgc2V0IG9mIHR5cGVzIGFuZCBjb25zdHJhaW50cy4gRm9yIGV4YW1wbGUsIEpTT04gU2NoZW1hIGhhcyAqdmFsdWUqIGNvbnN0cmFpbnRzIChsaWtlICoiYSBzdHJpbmcgbXVzdCBiZSBsb25nZXIgdGhhbiA1IGNoYXJhY3RlcnMqIikgYW5kIEdyYXBoUUwgZG9lc24ndCBoYXZlIGBudWxsYCBvciBrZXktdmFsdWUgb2JqZWN0cyBhcyBhIGZpcnN0LWNsYXNzIHR5cGUuIENvbnZlcnRpb25zIHdpbGwgdGhlcmVmb3JlIHByb2R1Y2UgdGhlIHNtYWxsZXN0IGNvbW1vbiBkZW5vbWluYXRvciBvZiB0eXBlIGluZm9ybWF0aW9uLCBidXQgc3RpbGwgYmUgdmVyeSB1c2VmdWwuIFNlZSBbYGNvcmUtdHlwZXNgXVtjb3JlLXR5cGVzLWdpdGh1Yi11cmxdIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGl0cyBzdXBwb3J0ZWQgdHlwZXMsIGFuZCB3aHkgbm90IGltcGxlbWVudCBhIG5ldyBjb252ZXJzaW9uIHBhY2thZ2UgeW91cnNlbGYhCgoKIyBUTDtEUiBDTEkKCkNvbnZlcnQgZmlsZXMgZnJvbSBUeXBlU2NyaXB0ICgqInRzIiopIHRvIEdyYXBoUUwgKCoiZ3FsIiopLCBwdXQgdGhlIGdlbmVyYXRlZCBmaWxlcyBpbiB0aGUgYGdxbC1zY2hlbWFzYCBkaXJlY3RvcnkgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHN0cnVjdHVyZSBhcyB0aGUgc291cmNlIGZpbGVzOgoKYGBgenNoCiQgdHlwZWNvbnYgLWYgdHMgLXQgZ3FsIC1vIGdxbC1zY2hlbWFzICd0eXBlcy8qKi8qLnRzJwpgYGAKClRoaXMgZ2VuZXJhdGVzIGBncWwtc2NoZW1hcy8qLmdyYXBocWxgIGZvciBlYWNoIGAudHNgIGZpbGUgaW4gYHR5cGVzL2AgKGFuZCBzdWItZGlyZWN0b3JpZXMpLgoKKk5vdGUgdGhhdCB3aGVuIHVzaW5nIGdsb2IgcGF0dGVybnMsIHB1dCB0aGVtIGluIHF1b3RlcyB0byBub3QgaGF2ZSB0aGUgc2hlbGwgdHJ5IHRvIGV4cGFuZCB0aGUgcGF0dGVybiAtIHR5cGVjb252IHdpbGwgZG8gaXQgYSBsb3QgYmV0dGVyISoKCgojIyBTdXJlVHlwZQoKV2hlbiBjb252ZXJ0aW5nICpmcm9tKiBTdXJlVHlwZSwgdHlwZWNvbnYgd2lsbCBleHRyYWN0IGFsbCAqZXhwb3J0ZWQqIHZhbGlkYXRvcnMuCgoKIyMgVmVyc2lvbnMKClNpbmNlIHYyOgogKiBUaGUgcGFja2FnZSBpcyBhIHB1cmUgRVNNIG1vZHVsZSwgbm8gbW9yZSBDb21tb25KUyBzdXBwb3J0LiBUaGlzIHdpbGwgbGlrZWx5IG5vdCBhZmZlY3QgQ0xJIHVzYWdlcy4KICogTm9kZSAxMiBzdXBwb3J0IGlzIGRyb3BwZWQuCgoKIyBDb250ZW50cwoKICogW0NvbnZlcnNpb24gZXhhbXBsZV0oI2NvbnZlcnNpb24tZXhhbXBsZSkKICogW1VzYWdlXSgjdXNhZ2UpCiAgICogW0NvbW1hbmQgbGluZV0oI2NvbW1hbmQtbGluZSkKICAgKiBbQXMgQVBJXSgjYXMtYXBpKQogICAgICogW0pTT04gU2NoZW1hXSgjanNvbi1zY2hlbWEpCiAgICAgKiBbT3BlbiBBUEldKCNvcGVuLWFwaSkKICAgICAqIFtUeXBlU2NyaXB0XSgjdHlwZXNjcmlwdCkKICAgICAqIFtHcmFwaFFMXSgjZ3JhcGhxbCkKICAgICAqIFtTdXJlVHlwZV0oI3N1cmV0eXBlKQoKCiMgQ29udmVyc2lvbiBleGFtcGxlCgo8ZGV0YWlscyBzdHlsZT0icGFkZGluZy1sZWZ0OiAzMnB4O2JvcmRlci1sZWZ0OiA0cHggc29saWQgZ3JheTsiPgo8c3VtbWFyeT5Db252ZXJ0aW5nIHRoZSBmb2xsb3dpbmcgSlNPTiBTY2hlbWE6PC9zdW1tYXJ5Pgo8cD4KCmBgYGpzb24KewoJImRlZmluaXRpb25zIjogewoJCSJVc2VyIjogewoJCQkidHlwZSI6ICJvYmplY3QiLAoJCQkidGl0bGUiOiAiVXNlciB0eXBlIiwKCQkJImRlc2NyaXB0aW9uIjogIlRoaXMgdHlwZSBob2xkcyB0aGUgdXNlciBpbmZvcm1hdGlvbiwgc3VjaCBhcyBuYW1lIiwKCQkJInByb3BlcnRpZXMiOiB7ICJuYW1lIjogeyAidHlwZSI6ICJzdHJpbmciLCAidGl0bGUiOiAiVGhlIHJlYWwgbmFtZSIgfSB9LAoJCQkicmVxdWlyZWQiOiBbICJuYW1lIiBdCgkJfSwKCQkiQ2hhdExpbmUiOiB7CgkJCSJ0eXBlIjogIm9iamVjdCIsCgkJCSJ0aXRsZSI6ICJBIGNoYXQgbGluZSIsCgkJCSJwcm9wZXJ0aWVzIjogewoJCQkJInVzZXIiOiB7ICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvVXNlciIgfSwKCQkJCSJsaW5lIjogeyAidHlwZSI6ICJzdHJpbmciIH0KCQkJfSwKCQkJInJlcXVpcmVkIjogWyAidXNlciIsICJsaW5lIiBdCgkJfQoJfQp9CmBgYAoKPC9wPgo8L2RldGFpbHM+Cgo8ZGV0YWlscyBzdHlsZT0icGFkZGluZy1sZWZ0OiAzMnB4O2JvcmRlci1sZWZ0OiA0cHggc29saWQgZ3JheTsiPgo8c3VtbWFyeT4uLi4gdG8gVHlwZVNjcmlwdCB3aWxsIHByb2R1Y2U6PC9zdW1tYXJ5Pgo8cD4KCmBgYHRzCi8qVXNlciB0eXBlCgpUaGlzIHR5cGUgaG9sZHMgdGhlIHVzZXIgaW5mb3JtYXRpb24sIHN1Y2ggYXMgbmFtZSovCmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7CgkvKlRoZSByZWFsIG5hbWUqLwoJbmFtZTogc3RyaW5nOwp9CgovKkEgY2hhdCBsaW5lKi8KZXhwb3J0IGludGVyZmFjZSBDaGF0TGluZSB7Cgl1c2VyOiBVc2VyOwoJbGluZTogc3RyaW5nOwp9CmBgYAoKb3IgaWYgY29udmVydGVkIGludG8gVHlwZVNjcmlwdCBfZGVjbGFyYXRpb25zXyAoZm9yIGAuZC50c2AgZmlsZXMpLCBgZXhwb3J0IGludGVyZmFjZWAgd2lsbCBiZSBgZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlYC4KCjwvcD4KPC9kZXRhaWxzPgoKPGRldGFpbHMgc3R5bGU9InBhZGRpbmctbGVmdDogMzJweDtib3JkZXItbGVmdDogNHB4IHNvbGlkIGdyYXk7Ij4KPHN1bW1hcnk+Li4uIGFuZCB0byBHcmFwaFFMIHdpbGwgcHJvZHVjZTo8L3N1bW1hcnk+CjxwPgoKYGBgZ3JhcGhxbAoiIiIKIyBVc2VyIHR5cGUKClRoaXMgdHlwZSBob2xkcyB0aGUgdXNlciBpbmZvcm1hdGlvbiwgc3VjaCBhcyBuYW1lCiIiIgp0eXBlIFVzZXIgewoJIlRoZSByZWFsIG5hbWUiCgluYW1lOiBTdHJpbmchCn0KCiJBIGNoYXQgbGluZSIKdHlwZSBDaGF0TGluZSB7Cgl1c2VyOiBVc2VyIQoJbGluZTogU3RyaW5nIQp9CmBgYAoKPC9wPgo8L2RldGFpbHM+CgpDb252ZXJzaW9ucyBhcmUgYmktZGlyZWN0aW9uYWwsIHNvIGFueSBvZiB0aGVzZSB0eXBlIHN5c3RlbXMgY2FuIGNvbnZlcnQgdG8gYW55IG90aGVyLgoKCiMgVXNhZ2UKCgojIyBDb21tYW5kIGxpbmUKCllvdSBjYW4gZGVwZW5kIG9uIGB0eXBlY29udmAsIGFuZCBpZiBzbywgeW91J2xsIGhhdmUgYG5vZGVfbW9kdWxlcy8uYmluL3R5cGVjb252YCBpbnN0YWxsZWQuIE9yIHlvdSBydW4gaXQgd2l0aCBvbi10aGUtZmx5IGluc3RhbGxhdGlvbiB1c2luZyBgbnB4YCwgYXMgYG5weCB0eXBlY29udiBhcmdzLi4uYC4KClVzZSBgLWZgIChvciBgLS1mcm9tLXR5cGVgKSB0byBzcGVjaWZ5ICpmcm9tKiB3aGljaCB0eXBlIHN5c3RlbSB0byBjb252ZXJ0LCBhbmQgYC10YCAob3IgYC0tdG8tdHlwZWApIHRvIHNwZWNpZnkgd2hpY2ggdHlwZSBzeXN0ZW0gdG8gY29udmVydCAqdG8qLiBPdGhlciBvcHRpb25zIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSBlYWNoIGNvbmZpZ3VyYXRpb24gKGJvdGggdGhlICpmcm9tKiBhbmQgdGhlICp0byopIGFuZCB0aGVzZSBvcHRpb25zIGFyZSB1c3VhbGx5IG9ubHkgYXZhaWxhYmxlIGZvciBhIHNwZWNpZmljIHR5cGUgc3lzdGVtLgoKVGhlIHR5cGVzIHN1cHBvcnRlZCBhcmUgYGdxbGAgKEdyYXBoUUwpLCBgdHNgIChUeXBlU2NyaXB0KSwgYGpzY2AgKEpTT04gU2NoZW1hKSwgYG9hcGlgIChPcGVuIEFQSSkgYW5kIGBzdGAgKFN1cmVUeXBlKS4KCjxkZXRhaWxzIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDMycHg7Ym9yZGVyLWxlZnQ6IDRweCBzb2xpZCBncmF5OyI+CjxzdW1tYXJ5Pjxjb2RlPiQgdHlwZWNvbnYgLS1oZWxwPC9jb2RlPjwvc3VtbWFyeT4KPHA+CgpgYGAKVXNhZ2U6IHR5cGVjb252IFtvcHRpb25zXSBmaWxlIC4uLgoKICAgT3B0aW9uczoKCiAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgIFByaW50ICh0aGlzKSBoZWxwIHNjcmVlbgogICAtLXZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICBQcmludCB0aGUgcHJvZ3JhbSB2ZXJzaW9uCiAgIC12LCAtLXZlcmJvc2UgICAgICAgICAgICAgICAgICAgIFZlcmJvc2UgaW5mb3JtYXRpb25hbCBvdXRwdXQgKGRlZmF1bHQ6IGZhbHNlKQogICAtLWRyeS1ydW4gICAgICAgICAgICAgICAgICAgICAgICBQcmVwYXJlIGFuZCBwZXJmb3JtIGNvbnZlcnNpb24sIGJ1dCB3cml0ZSBubyBvdXRwdXQgKGRlZmF1bHQ6IGZhbHNlKQogICAtLShuby0paGlkZGVuICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIGhpZGRlbiBmaWxlcywgaS5lLiBmaWxlcyBpbiAuZ2l0aWdub3JlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyBiZWdpbm5pbmcgd2l0aCAnLicgYW5kIHRoZSAnLmdpdCcgZGlyZWN0b3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdDogdHJ1ZSkKICAgLWYsIC0tZnJvbS10eXBlIDx0eXBlPiAgICAgICAgICAgVHlwZSBzeXN0ZW0gdG8gY29udmVydCBmcm9tCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzICAgIFR5cGVTY3JpcHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNjICAgSlNPTiBTY2hlbWEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3FsICAgR3JhcGhRTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYXBpICBPcGVuIEFQSQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdCAgICBTdXJlVHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdCAgICBjb3JlLXR5cGVzCgogICAtdCwgLS10by10eXBlIDx0eXBlPiAgICAgICAgICAgICBUeXBlIHN5c3RlbSB0byBjb252ZXJ0IHRvCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzICAgIFR5cGVTY3JpcHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNjICAgSlNPTiBTY2hlbWEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3FsICAgR3JhcGhRTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYXBpICBPcGVuIEFQSQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdCAgICBTdXJlVHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdCAgICBjb3JlLXR5cGVzCgogICAtLShuby0pc2hvcnRjdXQgICAgICAgICAgICAgICAgICBTaG9ydGN1dCBjb252ZXJzaW9uIGlmIHBvc3NpYmxlIChieXBhc3NpbmcgY29yZS10eXBlcykuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgcG9zc2libGUgYmV0d2VlbiBTdXJlVHlwZSwgSlNPTiBTY2hlbWEgYW5kIE9wZW4gQVBJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHByZXNlcnZlIGFsbCBmZWF0dXJlcyB3aGljaCB3b3VsZCBvdGhlcndpc2UgYmUgZXJhc2VkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6IHRydWUpCiAgIC1vLCAtLW91dHB1dC1kaXJlY3RvcnkgPGRpcj4gICAgIE91dHB1dCBkaXJlY3RvcnkuIERlZmF1bHRzIHRvIHRoZSBzYW1lIGFzIHRoZSBpbnB1dCBmaWxlcy4KICAgLU8sIC0tb3V0cHV0LWV4dGVuc2lvbiA8ZXh0PiAgICAgT3V0cHV0IGZpbGVuYW1lIGV4dGVuc2lvbiB0byB1c2UuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvICd0cycvJ2QudHMnLCAnanNvbicsICd5YW1sJyBhbmQgJ2dyYXBocWwnLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgJy0nIHRvIG5vdCBzYXZlIGEgZmlsZSwgYnV0IG91dHB1dCB0byBzdGRvdXQgaW5zdGVhZC4KICAgLS0obm8tKXN0cmlwLWFubm90YXRpb25zICAgICAgICAgUmVtb3ZlcyBhbGwgYW5ub3RhdGlvbnMgKGRlc2NyaXB0aW9ucywgY29tbWVudHMsIC4uLikgKGRlZmF1bHQ6IGZhbHNlKQogICBUeXBlU2NyaXB0CiAgICAgLS0obm8tKXRzLWRlY2xhcmF0aW9uICAgICAgICAgIE91dHB1dCBUeXBlU2NyaXB0IGRlY2xhcmF0aW9ucyAoZGVmYXVsdDogZmFsc2UpCiAgICAgLS0obm8tKXRzLWRpc2FibGUtbGludC1oZWFkZXIgIE91dHB1dCBjb21tZW50cyBmb3IgZGlzYWJsaW5nIGxpbnRpbmcgKGRlZmF1bHQ6IHRydWUpCiAgICAgLS0obm8tKXRzLWRlc2NyaXB0aXZlLWhlYWRlciAgIE91dHB1dCB0aGUgaGVhZGVyIGNvbW1lbnQgKGRlZmF1bHQ6IHRydWUpCiAgICAgLS0obm8tKXRzLXVzZS11bmtub3duICAgICAgICAgIFVzZSAndW5rbm93bicgdHlwZSBpbnN0ZWFkIG9mICdhbnknIChkZWZhdWx0OiB0cnVlKQogICAgIC0tdHMtbm9uLWV4cG9ydGVkIDxtZXRob2Q+ICAgICBTdHJhdGVneSBmb3Igbm9uLWV4cG9ydGVkIHR5cGVzIChkZWZhdWx0OiBpbmNsdWRlLWlmLXJlZmVyZW5jZWQpCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwgICAgICAgICAgICAgICAgICAgRmFpbCBjb252ZXJzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSAgICAgICAgICAgICAgICAgRG9uJ3QgaW5jbHVkZSBub24tZXhwb3J0ZWQgdHlwZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbiBpZiByZWZlcmVuY2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgICAgICAgICAgICAgICAgSW5jbHVkZSBub24tZXhwb3J0ZWQgdHlwZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lICAgICAgICAgICAgICAgICBEb24ndCBpbmNsdWRlIG5vbi1leHBvcnRlZCB0eXBlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmUgdGhlbSBpZiBuZWNlc3NhcnkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lsbCBmYWlsIG9uIGN5Y2xpYyB0eXBlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlLWlmLXJlZmVyZW5jZWQgIEluY2x1ZGUgbm9uLWV4cG9ydGVkIHR5cGVzIG9ubHkgaWYgdGhleQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSByZWZlcmVuY2VkIGZyb20gZXhwb3J0ZWQgdHlwZXMKCiAgICAgLS10cy1uYW1lc3BhY2VzIDxtZXRob2Q+ICAgICAgIE5hbWVzcGFjZSBzdHJhdGVneS4gKGRlZmF1bHQ6IGlnbm9yZSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlICAgICAgICAgICBJZ25vcmUgbmFtZXNwYWNlcyBlbnRpcmVseSAoZGVmYXVsdCkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBXaGVuIGNvbnZlcnRpbmcgZnJvbSBUeXBlU2NyaXB0LCB0eXBlcyBpbiBuYW1lc3BhY2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlbid0IGV4cG9ydGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gV2hlbiBjb252ZXJ0aW5nIHRvIFR5cGVTY3JpcHQsIG5vIGF0dGVtcHQgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvbnN0cnVjdCBuYW1lc3BhY2VzIGlzIHBlcmZvcm1lZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9pc3QgICAgICAgICAgICBXaGVuIGNvbnZlcnRpbmcgZnJvbSBUeXBlU2NyaXB0LCBob2lzdCB0eXBlcyBpbnNpZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2VzIHRvIHRvcC1sZXZlbCwgc28gdGhhdCB0aGUgdHlwZXMgYXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZWQsIGJ1dCB3aXRob3V0IHRoZWlyIG5hbWVzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNhbiBjYXVzZSBjb25mbGljdHMsIGluIHdoaWNoIGNhc2UgZGVlcGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbGFyYXRpb25zIHdpbGwgYmUgZHJvcHBlZCBpbiBmYXZvciBvZiBtb3JlIHRvcC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCBkZWNsYXJhdGlvbnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gY2FzZSBvZiBzYW1lLWxldmVsIChuYW1lc3BhY2UgZGVwdGgpIGRlY2xhcmF0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIHNhbWUgbmFtZSwgb25seSBvbmUgd2lsbCBiZSBleHBvcnRlZCBpbiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uLWRldGVybWluaXN0aWMgbWFubmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QgICAgICAgICAgICAgIFdoZW4gY29udmVydGluZyBmcm9tIFR5cGVTY3JpcHQsIGpvaW4gdGhlIG5hbWVzcGFjZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGV4cG9ydGVkIHR5cGUgd2l0aCBhIGRvdCAoLikuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBjb252ZXJ0aW5nIHRvIFR5cGVTY3JpcHQsIHRyeSB0byByZWNvbnN0cnVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZXMgYnkgc3BsaXR0aW5nIHRoZSBuYW1lIG9uIGRvdCAoLikuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyc2NvcmUgICAgICAgV2hlbiBjb252ZXJ0aW5nIGZyb20gVHlwZVNjcmlwdCwgam9pbiB0aGUgbmFtZXNwYWNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgZXhwb3J0ZWQgdHlwZSB3aXRoIGFuIHVuZGVyc2NvcmUgKF8pLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gY29udmVydGluZyB0byBUeXBlU2NyaXB0LCB0cnkgdG8gcmVjb25zdHJ1Y3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2VzIGJ5IHNwbGl0dGluZyB0aGUgbmFtZSBvbiB1bmRlcnNjb3JlIChfKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb25zdHJ1Y3QtYWxsICBXaGVuIGNvbnZlcnRpbmcgdG8gVHlwZVNjcmlwdCwgdHJ5IHRvIHJlY29uc3RydWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlcyBieSBzcGxpdHRpbmcgdGhlIG5hbWUgb24gYm90aCBkb3QgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXJzY29yZS4KCiAgIEdyYXBoUUwKICAgICAtLWdxbC11bnN1cHBvcnRlZCA8bWV0aG9kPiAgICAgTWV0aG9kIHRvIHVzZSBmb3IgdW5zdXBwb3J0ZWQgdHlwZXMKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlICBJZ25vcmUgKHNraXApIHR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiAgICBJZ25vcmUgdHlwZSwgYnV0IHdhcm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgICBUaHJvdyBhbiBlcnJvcgoKICAgICAtLWdxbC1udWxsLXR5cGVuYW1lIDxuYW1lPiAgICAgQ3VzdG9tIHR5cGUgbmFtZSB0byB1c2UgZm9yIG51bGwKICAgT3BlbiBBUEkKICAgICAtLW9hcGktZm9ybWF0IDxmbXQ+ICAgICAgICAgICAgT3V0cHV0IGZvcm1hdCBmb3IgT3BlbiBBUEkgKGRlZmF1bHQ6IHlhbWwpCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gIEpTT04KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWFtbCAgWUFNTCAoJ3ltbCcgaXMgYWxzbyBhbGxvd2VkKQoKICAgICAtLW9hcGktdGl0bGUgPHRpdGxlPiAgICAgICAgICAgT3BlbiBBUEkgdGl0bGUgdG8gdXNlIGluIG91dHB1dCBkb2N1bWVudC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gdGhlIGlucHV0IGZpbGVuYW1lLgogICAgIC0tb2FwaS12ZXJzaW9uIDx2ZXJzaW9uPiAgICAgICBPcGVuIEFQSSBkb2N1bWVudCB2ZXJzaW9uIHRvIHVzZSBpbiBvdXRwdXQgZG9jdW1lbnQuIChkZWZhdWx0OiAxKQogICBTdXJlVHlwZQogICAgIC0tc3QtcmVmLW1ldGhvZCA8bWV0aG9kPiAgICAgICBTdXJlVHlwZSByZWZlcmVuY2UgZXhwb3J0IG1ldGhvZCAoZGVmYXVsdDogcHJvdmlkZWQpCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vLXJlZnMgICBEb24ndCByZWYgYW55dGhpbmcsIGlubGluZSBhbGwgdHlwZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgIFJlZmVyZW5jZSB0eXBlcyB0aGF0IGFyZSBleHBsaWNpdGx5IGV4cG9ydGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZi1hbGwgICBSZWYgYWxsIHByb3ZpZGVkIHR5cGVzIGFuZCB0aG9zZSB3aXRoIG5hbWVzCgogICAgIC0tc3QtbWlzc2luZy1yZWYgPG1ldGhvZD4gICAgICBXaGF0IHRvIGRvIHdoZW4gZGV0ZWN0aW5nIGFuIHVucmVzb2x2YWJsZSByZWZlcmVuY2UgKGRlZmF1bHQ6IHdhcm4pCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSAgSWdub3JlOyBza2lwIHR5cGUgb3IgY2FzdCB0byBhbnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiAgICBTYW1lIGFzICdpZ25vcmUnLCBidXQgd2FybgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciAgIEZhaWwgY29udmVyc2lvbgoKICAgICAtLShuby0pc3QtaW5saW5lLXR5cGVzICAgICAgICAgSW5saW5lIHByZXR0eSB0eXBlc2NyaXB0IHR5cGVzIGFzaWRlIHZhbGlkYXRvciBjb2RlIChkZWZhdWx0OiB0cnVlKQogICAgIC0tKG5vLSlzdC1leHBvcnQtdHlwZSAgICAgICAgICBFeHBvcnQgdGhlIGRlZHVjZWQgdHlwZXMgKG9yIHRoZSBwcmV0dHkgdHlwZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiAtLXN0LWlubGluZS10eXBlcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiB0cnVlKQogICAgIC0tKG5vLSlzdC1leHBvcnQtc2NoZW1hICAgICAgICBFeHBvcnQgdmFsaWRhdG9yIHNjaGVtYXMgKGRlZmF1bHQ6IGZhbHNlKQogICAgIC0tKG5vLSlzdC1leHBvcnQtdmFsaWRhdG9yICAgICBFeHBvcnQgcmVndWxhciB2YWxpZGF0b3JzIChkZWZhdWx0OiB0cnVlKQogICAgIC0tKG5vLSlzdC1leHBvcnQtZW5zdXJlciAgICAgICBFeHBvcnQgJ2Vuc3VyZXInIHZhbGlkYXRvcnMgKGRlZmF1bHQ6IHRydWUpCiAgICAgLS0obm8tKXN0LWV4cG9ydC10eXBlLWd1YXJkICAgIEV4cG9ydCB0eXBlIGd1YXJkcyAoaXMqIHZhbGlkYXRvcnMpIChkZWZhdWx0OiB0cnVlKQogICAgIC0tKG5vLSlzdC11c2UtdW5rbm93biAgICAgICAgICBVc2UgJ3Vua25vd24nIHR5cGUgaW5zdGVhZCBvZiAnYW55JyAoZGVmYXVsdDogdHJ1ZSkKICAgICAtLShuby0pc3QtZm9yd2FyZC1zY2hlbWEgICAgICAgRm9yd2FyZCB0aGUgSlNPTiBTY2hlbWEsIGFuZCBjcmVhdGUgYW4gdW50eXBlZCB2YWxpZGF0b3Igc2NoZW1hCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIHJhdyBKU09OIFNjaGVtYSB1bmRlciB0aGUgaG9vZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6IGZhbHNlKQpgYGAKCjwvcD4KPC9kZXRhaWxzPgoKCiMjIEFzIEFQSQoKVG8gY29udmVydCBmcm9tIG9uZSB0eXBlIHN5c3RlbSB0byBhbm90aGVyLCB5b3UgY3JlYXRlIGEgKnJlYWRlciogZm9yIHRoZSB0eXBlIHN5c3RlbSB0byBjb252ZXJ0ICoqZnJvbSoqIGFuZCBhICp3cml0ZXIqIGZvciB0aGUgdHlwZSBzeXN0ZW0gdG8gY29udmVydCAqKnRvKiouIFRoZSByZWFkZXJzIGFuZCB3cml0ZXJzIGZvciB0aGUgZGlmZmVyZW50IHR5cGUgc3lzdGVtcyBoYXZlIHRoZWlyIG93biBzZXQgb2Ygb3B0aW9ucy4gU29tZSBoYXZlIG5vIG9wdGlvbnMgKGxpa2UgdGhlIEpTT04gU2NoZW1hIHJlYWRlciksIHNvbWUgcmVxdWlyZSBvcHRpb25zIChsaWtlIHRoZSBPcGVuIEFQSSB3cml0ZXIpLgoKCiMjIyBtYWtlQ29udmVydGVyCgpNYWtpbmcgYSBjb252ZXJ0ZXIgaXMgZG9uZSB1c2luZyBgbWFrZUNvbnZlcnRlcihyZWFkZXIsIHdyaXRlciwgb3B0aW9ucz8pYCwgd2hpY2ggdGFrZXMgYSByZWFkZXIgYW5kIGEgd3JpdGVyLCBhbmQgb3B0aW9uYWxseSBvcHRpb25zOgoKIyMjIyAqKmN3ZCoqIChzdHJpbmcpCgpUaGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwgb25seSB1c2VmdWwgd2hlbiB3b3JraW5nIHdpdGggZmlsZXMuCgojIyMjICoqc2ltcGxpZnkqKiAoYm9vbGVhbikgKGRlZmF1bHQgdHJ1ZSkKCldoZW4gc2ltcGxpZnkgaXMgdHJ1ZSwgdGhlIGNvbnZlcnRlciB3aWxsIGxldCBjb3JlLXR5cGVzClsqY29tcHJlc3MqXShodHRwczovL2dpdGh1Yi5jb20vZ3JhbnRpbGEvY29yZS10eXBlcyNzaW1wbGlmeSkgdGhlCnR5cGVzIGFmdGVyIGhhdmluZyBjb252ZXJ0ZWQgZnJvbSB7cmVhZGVyfSBmb3JtYXQgdG8gY29yZS10eXBlcy4KVGhpcyBpcyB1c3VhbGx5IHJlY29tbWVuZGVkLCBidXQgbWF5IGNhdXNlIHNvbWUgYW5ub3RhdGlvbnMgKGNvbW1lbnRzKQp0byBiZSBkcm9wcGVkLgoKIyMjIyAqKm1hcCoqIChDb252ZXJ0TWFwRnVuY3Rpb24pCgpDdXN0b20gbWFwIGZ1bmN0aW9uIGZvciB0cmFuc2Zvcm1pbmcgZWFjaCB0eXBlIGFmdGVyIGl0IGhhcyBiZWVuCmNvbnZlcnRlZCAqZnJvbSogdGhlIHNvdXJjZSB0eXBlIChhbmQgYWZ0ZXIgaXQgaGFzIGJlZW4gc2ltcGxpZmllZCksCmJ1dCBiZWZvcmUgaXQncyB3cml0dGVuIHRvIHRoZSB0YXJnZXQgdHlwZSBzeXN0ZW0uCgpUeXBlOiBgKG5vZGU6IE5hbWVkVHlwZSwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFJlYWRvbmx5QXJyYXk8TmFtZWRUeXBlPikgPT4gTmFtZWRUeXBlYAooW05hbWVkVHlwZSByZWZdKGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS9jb3JlLXR5cGVzI3NwZWNpZmljYXRpb24pKQoKSWYgYGZpbHRlcmAgaXMgdXNlZCBhcyB3ZWxsLCB0aGlzIHJ1bnMgYmVmb3JlIGBmaWx0ZXJgLgoKSWYgYHRyYW5zZm9ybWAgaXMgdXNlZCBhcyB3ZWxsLCB0aGlzIHJ1bnMgYmVmb3JlIGB0cmFuc2Zvcm1gLgoKIyMjIyAqKmZpbHRlcioqIChDb252ZXJ0RmlsdGVyRnVuY3Rpb24pCgpDdXN0b20gZmlsdGVyIGZ1bmN0aW9uIGZvciBmaWx0ZXJpbmcgdHlwZXMgYWZ0ZXIgdGhleSBoYXZlIGJlZW4KY29udmVydGVkICpmcm9tKiB0aGUgc291cmNlIHR5cGUuCgpUeXBlOiBgKG5vZGU6IE5hbWVkVHlwZSwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFJlYWRvbmx5QXJyYXk8TmFtZWRUeXBlPikgPT4gYm9vbGVhbmAKKFtOYW1lZFR5cGUgcmVmXShodHRwczovL2dpdGh1Yi5jb20vZ3JhbnRpbGEvY29yZS10eXBlcyNzcGVjaWZpY2F0aW9uKSkKCklmIGBtYXBgIGlzIHVzZWQgYXMgd2VsbCwgdGhpcyBydW5zIGFmdGVyIGBtYXBgLgoKSWYgYHRyYW5zZm9ybWAgaXMgdXNlZCBhcyB3ZWxsLCB0aGlzIHJ1bnMgYmVmb3JlIGB0cmFuc2Zvcm1gLgoKIyMjIyAqKnRyYW5zZm9ybSoqIChDb252ZXJ0VHJhbnNmb3JtRnVuY3Rpb24pCgpDdXN0b20gZmlsdGVyIGZ1bmN0aW9uIGZvciBmaWx0ZXJpbmcgdHlwZXMgYWZ0ZXIgdGhleSBoYXZlIGJlZW4KY29udmVydGVkICpmcm9tKiB0aGUgc291cmNlIHR5cGUuCgpUeXBlOiBgKCBkb2M6IE5vZGVEb2N1bWVudCApID0+IE5vZGVEb2N1bWVudGAKKFtOb2RlRG9jdW1lbnQgcmVmXShodHRwczovL2dpdGh1Yi5jb20vZ3JhbnRpbGEvY29yZS10eXBlcyNzcGVjaWZpY2F0aW9uKSkKCklmIGBtYXBgIGlzIHVzZWQgYXMgd2VsbCwgdGhpcyBydW5zIGFmdGVyIGBtYXBgLgoKSWYgYGZpbHRlcmAgaXMgdXNlZCBhcyB3ZWxsLCB0aGlzIHJ1bnMgYWZ0ZXIgYGZpbHRlcmAuCgojIyMjICoqc2hvcnRjdXQqKiAoYm9vbGVhbikgKGRlZmF1bHQgdHJ1ZSkKClNob3J0Y3V0IHJlYWRlciBhbmQgd3JpdGVyIGlmIHBvc3NpYmxlIChieXBhc3NpbmcgY29yZS10eXBlcykuCgoKCiMjIyBCYXNpYyBleGFtcGxlIGNvbnZlcnNpb24KCmBgYHRzCmltcG9ydCB7CiAgZ2V0VHlwZVNjcmlwdFJlYWRlciwKICBnZXRPcGVuQXBpV3JpdGVyLAogIG1ha2VDb252ZXJ0ZXIsCn0gZnJvbSAndHlwZWNvbnYnCgpjb25zdCByZWFkZXIgPSBnZXRUeXBlU2NyaXB0UmVhZGVyKCApOwpjb25zdCB3cml0ZXIgPSBnZXRPcGVuQXBpV3JpdGVyKCB7IGZvcm1hdDogJ3lhbWwnLCB0aXRsZTogJ015IEFQSScsIHZlcnNpb246ICd2MScgfSApOwpjb25zdCB7IGNvbnZlcnQgfSA9IG1ha2VDb252ZXJ0ZXIoIHJlYWRlciwgd3JpdGVyICk7CmNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgY29udmVydCggeyBkYXRhOiAiZXhwb3J0IHR5cGUgRm9vID0gc3RyaW5nIHwgbnVtYmVyOyIgfSApOwpkYXRhOyAvLyBUaGlzIGlzIHRoZSBPcGVuIEFQSSB5YW1sIGFzIGEgc3RyaW5nCmBgYAoKCiMjIyBKU09OIFNjaGVtYQoKVGhlcmUgYXJlIHR3byBleHBvcnRlZCBmdW5jdGlvbnMgZm9yIEpTT04gU2NoZW1hOgoKYGBgdHMKaW1wb3J0IHsgZ2V0SnNvblNjaGVtYVJlYWRlciwgZ2V0SnNvblNjaGVtYVdyaXRlciB9IGZyb20gJ3R5cGVjb252JwoKY29uc3QgcmVhZGVyID0gZ2V0SnNvblNjaGVtYVJlYWRlciggKTsKY29uc3Qgd3JpdGVyID0gZ2V0SnNvblNjaGVtYVdyaXRlciggKTsKYGBgCgpUaGV5IGRvbid0IGhhdmUgYW55IG9wdGlvbnMuCgp0eXBlY29udiBleHBlY3RzIHRoZSBKU09OIFNjaGVtYSB0byBjb250YWluICoqZGVmaW5pdGlvbnMqKiwgaS5lLiB0byBiZSBpbiB0aGUgZm9ybToKCjxkZXRhaWxzIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDMycHg7Ym9yZGVyLWxlZnQ6IDRweCBzb2xpZCBncmF5OyI+CjxzdW1tYXJ5PkpTT04gU2NoZW1hPC9zdW1tYXJ5Pgo8cD4KCmBgYGpzb24KewoJImRlZmluaXRpb25zIjogewoJCSJVc2VyIjogewoJCQkidHlwZSI6ICJvYmplY3QiLAoJCQkicHJvcGVydGllcyI6IHsgIm5hbWUiOiB7ICJ0eXBlIjogInN0cmluZyIgfSB9LAoJCQkicmVxdWlyZWQiOiBbICJuYW1lIiBdCgkJfSwKCQkiQ2hhdExpbmUiOiB7CgkJCSJ0eXBlIjogIm9iamVjdCIsCgkJCSJwcm9wZXJ0aWVzIjogewoJCQkJInVzZXIiOiB7ICIkcmVmIjogIiMvZGVmaW5pdGlvbnMvVXNlciIgfSwKCQkJCSJsaW5lIjogeyAidHlwZSI6ICJzdHJpbmciIH0KCQkJfSwKCQkJInJlcXVpcmVkIjogWyAidXNlciIsICJsaW5lIiBdCgkJfQoJfQp9CmBgYAoKPC9wPgo8L2RldGFpbHM+Cgp0eXBlY29udiBkb2Vzbid0IHN1cHBvcnQgZXh0ZXJuYWwgcmVmZXJlbmNlcyAodG8gb3RoZXIgZmlsZXMpLiBJZiB5b3UgaGF2ZSB0aGF0LCB5b3UgbmVlZCB0byB1c2UgYSByZWZlcmVuY2UgcGFyc2VyIGFuZCBtZXJnZSBpdCBpbnRvIG9uZSBpbmxpbmUtcmVmZXJlbmNlZCBmaWxlIGJlZm9yZSB1c2luZyB0eXBlY29udi4KCgojIyMgT3BlbiBBUEkKCkNvbnZlcnRpbmcgdG8gb3IgZnJvbSBPcGVuIEFQSSBjYW4gYmUgZG9uZSB3aXRoIGJvdGggSlNPTiBhbmQgWUFNTC4gVGhlIGRlZmF1bHQgaXMgSlNPTi4KCldoZW4gcmVhZGluZywgaWYgdGhlIGZpbGVuYW1lIGVuZHMgd2l0aCBgLnltbGAgb3IgYC55YW1sYCwgdHlwZWNvbnYgd2lsbCBpbnRlcnByZXQgdGhlIGlucHV0IGFzIFlBTUwuCgpXcml0aW5nIGhvd2V2ZXIsIGlzIGRlY2lkZWQgaW4gdGhlIHdyaXRlciBmYWN0b3J5IGFuZCBwcm92aWRlZCB0byBgZ2V0T3BlbkFwaVdyaXRlcmAuCgpgYGB0cwppbXBvcnQgeyBnZXRPcGVuQXBpUmVhZGVyLCBnZXRPcGVuQXBpV3JpdGVyIH0gZnJvbSAndHlwZWNvbnYnCgpjb25zdCByZWFkZXIgPSBnZXRPcGVuQXBpUmVhZGVyKCApOwpjb25zdCB3cml0ZXIgPSBnZXRPcGVuQXBpV3JpdGVyKCB7CiAgZm9ybWF0OiAneWFtbCcsCiAgdGl0bGU6ICdNeSBBUEknLAogIHZlcnNpb246ICd2MScsCiAgc2NoZW1hVmVyc2lvbjogJzMuMC4wJywKfSApOwpgYGAKClRoZSBvcHRpb25zIHRvIGBnZXRPcGVuQXBpV3JpdGVyYCBpczoKCmBgYHRzCmludGVyZmFjZSB7CiAgZm9ybWF0Pzogc3RyaW5nOwogIHRpdGxlOiBzdHJpbmc7CiAgdmVyc2lvbjogc3RyaW5nOwogIHNjaGVtYVZlcnNpb24/OiBzdHJpbmc7Cn0KYGBgCgoKIyMjIFR5cGVTY3JpcHQKClR5cGVTY3JpcHQgY29udmVyc2lvbiBpcyBkb25lIHVzaW5nOgoKYGBgdHMKaW1wb3J0IHsgZ2V0VHlwZVNjcmlwdFJlYWRlciwgZ2V0VHlwZVNjcmlwdFdyaXRlciB9IGZyb20gJ3R5cGVjb252JwoKY29uc3QgcmVhZGVyID0gZ2V0VHlwZVNjcmlwdFJlYWRlciggKTsKY29uc3Qgd3JpdGVyID0gZ2V0VHlwZVNjcmlwdFdyaXRlciggKTsKYGBgCgpCb3RoIHRoZXNlIHRha2UgYW4gb3B0aW9uYWwgYXJndW1lbnQuCgpUaGUgYGdldFR5cGVTY3JpcHRSZWFkZXJgIHRha2VzIGFuIG9wdGlvbmFsCltgRnJvbVRzT3B0aW9uc2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS9jb3JlLXR5cGVzLXRzI3R5cGVzY3JpcHQtdG8tY29yZS10eXBlcykKb2JqZWN0IGZyb20gW2Bjb3JlLXR5cGVzLXRzYF1bY29yZS10eXBlcy10cy1naXRodWItdXJsXSwgYWx0aG91Z2ggYHdhcm5gIGlzbid0IG5lY2Vzc2FyeSBzaW5jZSBpdCdzIHNldCBieSB0eXBlY29udiBpbnRlcm5hbGx5LgoKVGhlIGBnZXRUeXBlU2NyaXB0V3JpdGVyYCB0YWtlcyBhbiBvcHRpb25hbApbYFRvVHNPcHRpb25zYF0oaHR0cHM6Ly9naXRodWIuY29tL2dyYW50aWxhL2NvcmUtdHlwZXMtdHMjY29yZS10eXBlcy10by10eXBlc2NyaXB0KQpvYmplY3QgZnJvbSBbYGNvcmUtdHlwZXMtdHNgXVtjb3JlLXR5cGVzLXRzLWdpdGh1Yi11cmxdLCBhbHRob3VnaCBgd2FybmAsIGBmaWxlbmFtZWAsIGBzb3VyY2VGaWxlbmFtZWAsIGB1c2VyUGFja2FnZWAgYW5kIGB1c2VyUGFja2FnZVVybGAgYXJlbid0IG5lY2Vzc2FyeSBzaW5jZSB0aGV5J3JlIHNldCBieSB0eXBlY29udiBpbnRlcm5hbGx5LgoKCiMjIyBHcmFwaFFMCgpHcmFwaFFMIGNvbnZlcnNpb24gaXMgZG9uZSB1c2luZzsKCmBgYHRzCmltcG9ydCB7IGdldEdyYXBoUUxSZWFkZXIsIGdldEdyYXBoUUxXcml0ZXIgfSBmcm9tICd0eXBlY29udicKCmNvbnN0IHJlYWRlciA9IGdldEdyYXBoUUxSZWFkZXIoICk7CmNvbnN0IHdyaXRlciA9IGdldEdyYXBoUUxXcml0ZXIoICk7CmBgYAoKQm90aCB0aGVzZSB0YWtlIGFuIG9wdGlvbmFsIGFyZ3VtZW50LgoKVGhlIGBnZXRHcmFwaFFMUmVhZGVyYCB0YWtlcyBhbiBvcHRpb25hbApbYEdyYXBocWxUb0NvcmVUeXBlc09wdGlvbnNgXShodHRwczovL2dpdGh1Yi5jb20vZ3JhbnRpbGEvY29yZS10eXBlcy1ncmFwaHFsI2dyYXBocWwtdG8tY29yZS10eXBlcykKb2JqZWN0IGZyb20gW2Bjb3JlLXR5cGVzLWdyYXBocWxgXVtjb3JlLXR5cGVzLWdyYXBocWwtZ2l0aHViLXVybF0sIGFsdGhvdWdoIGB3YXJuYCBpc24ndCBuZWNlc3Nhcnkgc2luY2UgaXQncyBzZXQgYnkgdHlwZWNvbnYgaW50ZXJuYWxseS4KClRoZSBgZ2V0R3JhcGhRTFdyaXRlcmAgdGFrZXMgYW4gb3B0aW9uYWwKW2BDb3JlVHlwZXNUb0dyYXBocWxPcHRpb25zYF0oaHR0cHM6Ly9naXRodWIuY29tL2dyYW50aWxhL2NvcmUtdHlwZXMtZ3JhcGhxbCNjb3JlLXR5cGVzLXRvLWdyYXBocWwpCm9iamVjdCBmcm9tIFtgY29yZS10eXBlcy1ncmFwaHFsYF1bY29yZS10eXBlcy1ncmFwaHFsLWdpdGh1Yi11cmxdLCBhbHRob3VnaCBgd2FybmAsIGBmaWxlbmFtZWAsIGBzb3VyY2VGaWxlbmFtZWAsIGB1c2VyUGFja2FnZWAgYW5kIGB1c2VyUGFja2FnZVVybGAgYXJlbid0IG5lY2Vzc2FyeSBzaW5jZSB0aGV5J3JlIHNldCBieSB0eXBlY29udiBpbnRlcm5hbGx5LgoKCiMjIyBTdXJlVHlwZQoKU3VyZVR5cGUgY29udmVyc2lvbiBpcyBkb25lIHVzaW5nOwoKYGBgdHMKaW1wb3J0IHsgZ2V0U3VyZVR5cGVSZWFkZXIsIGdldFN1cmVUeXBlV3JpdGVyIH0gZnJvbSAndHlwZWNvbnYnCgpjb25zdCByZWFkZXIgPSBnZXRTdXJlVHlwZVJlYWRlciggKTsKY29uc3Qgd3JpdGVyID0gZ2V0U3VyZVR5cGVXcml0ZXIoICk7CmBgYAoKQm90aCB0aGVzZSB0YWtlIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGZyb20gdGhlIFtgY29yZS10eXBlcy1zdXJldHlwZWBdW2NvcmUtdHlwZXMtc3VyZXR5cGUtZ2l0aHViLXVybF0gcGFja2FnZS4KClRoZSBgZ2V0U3VyZVR5cGVSZWFkZXJgIHRha2VzIGFuIG9wdGlvbmFsCltgU3VyZXR5cGVUb0pzb25TY2hlbWFPcHRpb25zYF0oaHR0cHM6Ly9naXRodWIuY29tL2dyYW50aWxhL2NvcmUtdHlwZXMtc3VyZXR5cGUjc3VyZXR5cGUtdG8tY29yZS10eXBlcykuCgpUaGUgYGdldFN1cmVUeXBlV3JpdGVyYCB0YWtlcyBhbiBvcHRpb25hbApbYEpzb25TY2hlbWFUb1N1cmV0eXBlT3B0aW9uc2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS9jb3JlLXR5cGVzLXN1cmV0eXBlI2NvcmUtdHlwZXMtdG8tc3VyZXR5cGUpLgoKCltucG0taW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L3R5cGVjb252LnN2ZwpbbnBtLXVybF06IGh0dHBzOi8vbnBtanMub3JnL3BhY2thZ2UvdHlwZWNvbnYKW2Rvd25sb2Fkcy1pbWFnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL3R5cGVjb252LnN2ZwpbYnVpbGQtaW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9hY3Rpb25zL3dvcmtmbG93L3N0YXR1cy9ncmFudGlsYS90eXBlY29udi9tYXN0ZXIueW1sP2JyYW5jaD1tYXN0ZXIKW2J1aWxkLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS90eXBlY29udi9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBTWFzdGVyCltjb3ZlcmFnZS1pbWFnZV06IGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi9ncmFudGlsYS90eXBlY29udi9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcgpbY292ZXJhZ2UtdXJsXTogaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL2dyYW50aWxhL3R5cGVjb252P2JyYW5jaD1tYXN0ZXIKW25vZGUtdmVyc2lvbl06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbm9kZS92L3R5cGVjb252Cltub2RlLXVybF06IGh0dHBzOi8vbm9kZWpzLm9yZy9lbi8KCltjb3JlLXR5cGVzLW5wbS11cmxdOiBodHRwczovL25wbWpzLm9yZy9wYWNrYWdlL2NvcmUtdHlwZXMKW2NvcmUtdHlwZXMtZ2l0aHViLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS9jb3JlLXR5cGVzCltjb3JlLXR5cGVzLWpzb24tc2NoZW1hLW5wbS11cmxdOiBodHRwczovL25wbWpzLm9yZy9wYWNrYWdlL2NvcmUtdHlwZXMtanNvbi1zY2hlbWEKW2NvcmUtdHlwZXMtanNvbi1zY2hlbWEtZ2l0aHViLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS9jb3JlLXR5cGVzLWpzb24tc2NoZW1hCltjb3JlLXR5cGVzLXRzLW5wbS11cmxdOiBodHRwczovL25wbWpzLm9yZy9wYWNrYWdlL2NvcmUtdHlwZXMtdHMKW2NvcmUtdHlwZXMtdHMtZ2l0aHViLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS9jb3JlLXR5cGVzLXRzCltjb3JlLXR5cGVzLWdyYXBocWwtbnBtLXVybF06IGh0dHBzOi8vbnBtanMub3JnL3BhY2thZ2UvY29yZS10eXBlcy1ncmFwaHFsCltjb3JlLXR5cGVzLWdyYXBocWwtZ2l0aHViLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudGlsYS9jb3JlLXR5cGVzLWdyYXBocWwKW2NvcmUtdHlwZXMtc3VyZXR5cGUtbnBtLXVybF06IGh0dHBzOi8vbnBtanMub3JnL3BhY2thZ2UvY29yZS10eXBlcy1zdXJldHlwZQpbY29yZS10eXBlcy1zdXJldHlwZS1naXRodWItdXJsXTogaHR0cHM6Ly9naXRodWIuY29tL2dyYW50aWxhL2NvcmUtdHlwZXMtc3VyZXR5cGUKW3N1cmV0eXBlLWdpdGh1Yi11cmxdOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhbnRpbGEvc3VyZXR5cGUK readmeEtag: '"b7043a416d92ebe262c0d06cc82bc8aae498de44"' readmeLastModified: Sun, 04 Jun 2023 08:11:37 GMT repositoryId: 293245471 description: Convert between JSON Schema, TypeScript, GraphQL, Open API and SureType created: '2020-09-06T09:40:04Z' updated: '2026-01-11T08:51:56Z' language: TypeScript archived: false stars: 447 watchers: 2 forks: 10 owner: grantila logo: https://avatars.githubusercontent.com/u/5362579?v=4 license: MIT repoEtag: '"a2c72fd4df09b1e3588fded6157437d93dc8af2aec098fd5b275c952c0451cac"' repoLastModified: Sun, 11 Jan 2026 08:51:56 GMT foundInMaster: true category: Parsers id: 31c759927a7f06228ec927500d9722c5 - source: openapi3 tags repository: https://github.com/0xtheprodev/fastapi-clean-example v3: true id: db8a3c5869dbcd0c85b08af9e691e2ad repositoryMetadata: base64Readme: >- IyBmYXN0YXBpLWNsZWFuLWV4YW1wbGUKClshW1B5dGhvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9weXRob24tMzY3MEEwP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1weXRob24mbG9nb0NvbG9yPWZmZGQ1NCldKGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvKQpbIVtGYXN0QVBJXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0Zhc3RBUEktMDA1NTcxP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1mYXN0YXBpKV0oaHR0cHM6Ly9mYXN0YXBpLnRpYW5nb2xvLmNvbS8pClshW09wZW5BUEldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvb3BlbmFwaS02QkE1Mzk/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPW9wZW5hcGktaW5pdGlhdGl2ZSZsb2dvQ29sb3I9ZmZmKV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykKWyFbU3dhZ2dlcl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS8tU3dhZ2dlci0lMjNDbG9qdXJlP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1zd2FnZ2VyJmxvZ29Db2xvcj13aGl0ZSldKGh0dHBzOi8vc3dhZ2dlci5pby8pClshW0dyYXBoUUxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvLUdyYXBoUUwtRTEwMDk4P3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1ncmFwaHFsJmxvZ29Db2xvcj13aGl0ZSldKGh0dHBzOi8vZ3JhcGhxbC5vcmcvKQpbIVtDb2RlIHN0eWxlOiBibGFja10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlJTIwc3R5bGUtYmxhY2stMDAwMDAwLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9ibGFjay5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvKQpbIVtUeXBlZCB3aXRoOiBweWRhbnRpY10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS90eXBlZCUyMHdpdGgtcHlkYW50aWMtQkE2MDBGLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9kb2NzLnB5ZGFudGljLmRldi8pClshW09wZW4gSXNzdWVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMtcmF3LzB4VGhlUHJvRGV2L2Zhc3RhcGktY2xlYW4tZXhhbXBsZT9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9naXRodWIuY29tLzB4VGhlUHJvRGV2L2Zhc3RhcGktY2xlYW4tZXhhbXBsZS9pc3N1ZXMpClshW0Nsb3NlZCBJc3N1ZXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy1jbG9zZWQtcmF3LzB4VGhlUHJvRGV2L2Zhc3RhcGktY2xlYW4tZXhhbXBsZT9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9naXRodWIuY29tLzB4VGhlUHJvRGV2L2Zhc3RhcGktY2xlYW4tZXhhbXBsZS9pc3N1ZXM/cT1pcyUzQWlzc3VlK2lzJTNBY2xvc2VkKQpbIVtPcGVuIFB1bGxzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMtcHItcmF3LzB4VGhlUHJvRGV2L2Zhc3RhcGktY2xlYW4tZXhhbXBsZT9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9naXRodWIuY29tLzB4VGhlUHJvRGV2L2Zhc3RhcGktY2xlYW4tZXhhbXBsZS9wdWxscykKWyFbQ2xvc2VkIFB1bGxzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMtcHItY2xvc2VkLXJhdy8weFRoZVByb0Rldi9mYXN0YXBpLWNsZWFuLWV4YW1wbGU/c3R5bGU9Zm9yLXRoZS1iYWRnZSldKGh0dHBzOi8vZ2l0aHViLmNvbS8weFRoZVByb0Rldi9mYXN0YXBpLWNsZWFuLWV4YW1wbGUvcHVsbHM/cT1pcyUzQXByK2lzJTNBY2xvc2VkKQpbIVtDb250cmlidXRvcnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2NvbnRyaWJ1dG9ycy8weFRoZVByb0Rldi9mYXN0YXBpLWNsZWFuLWV4YW1wbGU/c3R5bGU9Zm9yLXRoZS1iYWRnZSldKGh0dHBzOi8vZ2l0aHViLmNvbS8weFRoZVByb0Rldi9mYXN0YXBpLWNsZWFuLWV4YW1wbGUvZ3JhcGhzL2NvbnRyaWJ1dG9ycykKWyFbQWN0aXZpdHldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhc3QtY29tbWl0LzB4VGhlUHJvRGV2L2Zhc3RhcGktY2xlYW4tZXhhbXBsZT9zdHlsZT1mb3ItdGhlLWJhZGdlJmxhYmVsPW1vc3QlMjByZWNlbnQlMjBhY3Rpdml0eSldKGh0dHBzOi8vZ2l0aHViLmNvbS8weFRoZVByb0Rldi9mYXN0YXBpLWNsZWFuLWV4YW1wbGUvcHVsc2UpCgojIyBEZXNjcmlwdGlvbgoKX0V4YW1wbGUgQXBwbGljYXRpb24gSW50ZXJmYWNlIHVzaW5nIEZhc3RBUEkgZnJhbWV3b3JrIGluIFB5dGhvbiAzXwoKVGhpcyBleGFtcGxlIHNob3djYXNlcyBSZXBvc2l0b3J5IFBhdHRlcm4gaW4gSGV4YWdvbmFsIEFyY2hpdGVjdHVyZSBfKGFsc28ga25vd24gYXMgQ2xlYW4gQXJjaGl0ZWN0dXJlKV8uIEhlcmUgd2UgaGF2ZSB0d28gRW50aXRpZXMgLSBCb29rcyBhbmQgQXV0aG9ycywgd2hvc2UgcmVsYXRpb25zaGlwcyBoYXZlIGJlZW4gZXhwbG9pdGVkIHRvIGNyZWF0ZSBDUlVEIGVuZHBvaW50IGluIFJFU1QgdW5kZXIgT3BlbkFQSSBzdGFuZGFyZC4KCiMjIEluc3RhbGxhdGlvbgoKLSBJbnN0YWxsIGFsbCB0aGUgcHJvamVjdCBkZXBlbmRlbmN5IHVzaW5nIFtQaXBlbnZdKGh0dHBzOi8vcGlwZW52LnB5cGEuaW8pOgoKICBgYGBzaAogICQgcGlwZW52IGluc3RhbGwgLS1kZXYKICBgYGAKCi0gUnVuIHRoZSBhcHBsaWNhdGlvbiBmcm9tIGNvbW1hbmQgcHJvbXB0OgoKICBgYGBzaAogICQgcGlwZW52IHJ1biB1dmljb3JuIG1haW46YXBwIC0tcmVsb2FkCiAgYGBgCgotIFlvdSBjYW4gYWxzbyBvcGVuIGEgc2hlbGwgaW5zaWRlIHZpcnR1YWwgZW52aXJvbm1lbnQ6CgogIGBgYHNoCiAgJCBwaXBlbnYgc2hlbGwKICBgYGAKCi0gT3BlbiBgbG9jYWxob3N0OjgwMDAvZG9jc2AgZm9yIEFQSSBEb2N1bWVudGF0aW9uCgotIE9wZW4gYGxvY2FsaG9zdDo4MDAwL2dyYXBocWxgIGZvciBHcmFwaFFMIERvY3VtZW50YXRpb24KCl8qTm90ZToqIEluIGNhc2UgeW91IGFyZSBub3QgYWJsZSB0byBhY2Nlc3MgYHBpcGVudmAgZnJvbSB5b3UgYFBBVEhgIGxvY2F0aW9ucywgcmVwbGFjZSBhbGwgaW5zdGFuY2VzIG9mIGBwaXBlbnZgIHdpdGggYHB5dGhvbjMgLW0gcGlwZW52YC5fCgojIyBUZXN0aW5nCgpGb3IgVGVzdGluZywgYHVuaXR0ZXN0YCBtb2R1bGUgaXMgdXNlZCBmb3IgVGVzdCBTdWl0ZSBhbmQgQXNzZXJ0aW9uLCB3aGVyZWFzIGBweXRlc3RgIGlzIGJlaW5nIHVzZWQgZm9yIFRlc3QgUnVubmVyIGFuZCBDb3ZlcmFnZSBSZXBvcnRlci4KCi0gUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBpbml0aWF0ZSB0ZXN0OgogIGBgYHNoCiAgJCBwaXBlbnYgcnVuIHB5dGVzdAogIGBgYAotIFRvIGluY2x1ZGUgQ292ZXJhZ2UgUmVwb3J0aW5nIGFzIHdlbGw6CiAgYGBgc2gKICAkIHBpcGVudiBydW4gcHl0ZXN0IC0tY292LXJlcG9ydCB4bWwgLS1jb3YgLgogIGBgYAoKIyMgTGljZW5zZQoKJmNvcHk7IE1JVCBMaWNlbnNlCg== readmeEtag: '"bef2ee4db7b02a92c0311125aa4cb2829b3cb22c"' readmeLastModified: Fri, 12 May 2023 09:03:57 GMT repositoryId: 479982630 description: Clean Architecture Example using FastAPI framework created: '2022-04-10T10:23:51Z' updated: '2026-02-03T10:16:58Z' language: Python archived: false stars: 498 watchers: 5 forks: 66 owner: 0xTheProDev logo: https://avatars.githubusercontent.com/u/14367736?v=4 license: MIT repoEtag: '"f1dd655f986ad38f12138d5d098f5dd1fe1756cd9cf32e3cedc489aac20c1292"' repoLastModified: Tue, 03 Feb 2026 10:16:58 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/progyan1997/fastapi-clean-example - https://github.com/progyan1997/fastapi-example - source: openapi3 tags repository: https://github.com/madkote/fastapi-plugins v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgICA8ZW0+UGx1Z2lucyBmb3IgRmFzdEFQSSBmcmFtZXdvcmssIGhpZ2ggcGVyZm9ybWFuY2UsIGVhc3kgdG8gbGVhcm4sIGZhc3QgdG8gY29kZSwgcmVhZHkgZm9yIHByb2R1Y3Rpb248L2VtPgo8L3A+CjxwIGFsaWduPSJjZW50ZXIiPgo8YSBocmVmPSJodHRwczovL3RyYXZpcy1jaS5vcmcvbWFka290ZS9mYXN0YXBpLXBsdWdpbnMiIHRhcmdldD0iX2JsYW5rIj4KICAgIDxpbWcgc3JjPSJodHRwczovL3RyYXZpcy1jaS5vcmcvbWFka290ZS9mYXN0YXBpX3BsdWdpbnMuc3ZnP2JyYW5jaD1tYXN0ZXIiIGFsdD0iQnVpbGQgU3RhdHVzIj4KPC9hPgo8YSBocmVmPSJodHRwczovL2NvZGVjb3YuaW8vZ2gvbWFka290ZS9mYXN0YXBpLXBsdWdpbnMiIHRhcmdldD0iX2JsYW5rIj4KICAgIDxpbWcgc3JjPSJodHRwczovL2NvZGVjb3YuaW8vZ2gvbWFka290ZS9mYXN0YXBpX3BsdWdpbnMvYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmciIGFsdD0iQ292ZXJhZ2UiPgo8L2E+CjxhIGhyZWY9Imh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9mYXN0YXBpLXBsdWdpbnMiIHRhcmdldD0iX2JsYW5rIj4KICAgIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9mYXN0YXBpX3BsdWdpbnMuc3ZnIiBhbHQ9IlBhY2thZ2UgdmVyc2lvbiI+CjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9naXR0ZXIuaW0vdGlhbmdvbG8vZmFzdGFwaT91dG1fc291cmNlPWJhZGdlJnV0bV9tZWRpdW09YmFkZ2UmdXRtX2NhbXBhaWduPXByLWJhZGdlJnV0bV9jb250ZW50PWJhZGdlIiB0YXJnZXQ9Il9ibGFuayI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9iYWRnZXMuZ2l0dGVyLmltL3RpYW5nb2xvL2Zhc3RhcGkuc3ZnIiBhbHQ9IkpvaW4gdGhlIGNoYXQgYXQgaHR0cHM6Ly9naXR0ZXIuaW0vdGlhbmdvbG8vZmFzdGFwaSI+CjwvYT4KPC9wPgoKIyBmYXN0YXBpLXBsdWdpbnMKRmFzdEFQSSBmcmFtZXdvcmsgcGx1Z2lucyAtIHNpbXBsZSB3YXkgdG8gc2hhcmUgYGZhc3RhcGlgIGNvZGUgYW5kIHV0aWxpdGllcyBhY3Jvc3MgYXBwbGljYXRpb25zLgoKVGhlIGNvbmNlcHQgaXMgYHBsdWdpbmAgLSBwbHVnIGEgZnVuY3Rpb25hbCB1dGlsaXR5IGludG8geW91ciBhcHBsaWNhdGlvbiB3aXRob3V0IG9yIHdpdGggbWluaW1hbCBlZmZvcnQuCgoqIFtDYWNoZV0oLi9kb2NzL2NhY2hlLm1kKQogICogW01lbWNhY2hlZF0oLi9kb2NzL2NhY2hlLm1kI21lbWNhY2hlZCkKICAqIFtSZWRpc10oLi9kb2NzL2NhY2hlLm1kI3JlZGlzKQoqIFtTY2hlZHVsZXJdKC4vZG9jcy9zY2hlZHVsZXIubWQpCiogW0NvbnRyb2xdKC4vZG9jcy9jb250cm9sLm1kKQogICogW1ZlcnNpb25dKC4vZG9jcy9jb250cm9sLm1kI3ZlcnNpb24pCiAgKiBbRW52aXJvbm1lbnRdKC4vZG9jcy9jb250cm9sLm1kI2Vudmlyb25tZW50KQogICogW0hlYWx0aF0oLi9kb2NzL2NvbnRyb2wubWQjaGVhbHRoKQogICogW0hlYXJ0YmVhdF0oLi9kb2NzL2NvbnRyb2wubWQjaGVhcnRiZWF0KQoqIFtBcHBsaWNhdGlvbiBzZXR0aW5ncy9jb25maWd1cmF0aW9uXSguL2RvY3Mvc2V0dGluZ3MubWQpCiogW0xvZ2dpbmddKC4vZG9jcy9sb2dnZXIubWQpCiogQ2VsZXJ5CiogTVEKKiBhbmQgbXVjaCBtb3JlIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuLi4KCiMjIENoYW5nZXMKU2VlIFtyZWxlYXNlIG5vdGVzXShDSEFOR0VTLm1kKQoKIyMgSW5zdGFsbGF0aW9uCiogYnkgZGVmYXVsdCBjb250YWlucwogICogW1JlZGlzXSguL2RvY3MvY2FjaGUubWQjcmVkaXMpCiAgKiBbU2NoZWR1bGVyXSguL2RvY3Mvc2NoZWR1bGVyLm1kKQogICogW0NvbnRyb2xdKC4vZG9jcy9jb250cm9sLm1kKQogICogW0xvZ2dpbmddKC4vZG9jcy9sb2dnZXIubWQpCiogYG1lbWNhY2hlZGAgYWRkcyBbTWVtY2FjaGVkXSgjbWVtY2FjaGVkKQoqIGBhbGxgIGFkZCBldmVyeXRoaW5nIGFib3ZlCgpgYGBzaApwaXAgaW5zdGFsbCBmYXN0YXBpLXBsdWdpbnMKcGlwIGluc3RhbGwgZmFzdGFwaS1wbHVnaW5zW21lbWNhY2hlZF0KcGlwIGluc3RhbGwgZmFzdGFwaS1wbHVnaW5zW2FsbF0KYGBgCgojIyBRdWljayBzdGFydAojIyMgUGx1Z2luCkFkZCBpbmZvcm1hdGlvbiBhYm91dCBwbHVnaW4gc3lzdGVtLgojIyMgQXBwbGljYXRpb24gc2V0dGluZ3MKQWRkIGluZm9ybWF0aW9uIGFib3V0IHNldHRpbmdzLgojIyMgQXBwbGljYXRpb24gY29uZmlndXJhdGlvbgpBZGQgaW5mb3JtYXRpb24gYWJvdXQgY29uZmlndXJhdGlvbiBvZiBhbiBhcHBsaWNhdGlvbgojIyMgQ29tcGxldGUgZXhhbXBsZQpgYGBweXRob24KaW1wb3J0IGZhc3RhcGkKaW1wb3J0IGZhc3RhcGlfcGx1Z2lucwoKZnJvbSBmYXN0YXBpX3BsdWdpbnMubWVtY2FjaGVkIGltcG9ydCBNZW1jYWNoZWRTZXR0aW5ncwpmcm9tIGZhc3RhcGlfcGx1Z2lucy5tZW1jYWNoZWQgaW1wb3J0IG1lbWNhY2hlZF9wbHVnaW4sIFRNZW1jYWNoZWRQbHVnaW4KCmltcG9ydCBhc3luY2lvCmltcG9ydCBhaW9qb2JzCmltcG9ydCBhaW9yZWRpcwppbXBvcnQgY29udGV4dGxpYgppbXBvcnQgbG9nZ2luZwoKQGZhc3RhcGlfcGx1Z2lucy5yZWdpc3RlcmVkX2NvbmZpZ3VyYXRpb24KY2xhc3MgQXBwU2V0dGluZ3MoCiAgICAgICAgZmFzdGFwaV9wbHVnaW5zLkNvbnRyb2xTZXR0aW5ncywKICAgICAgICBmYXN0YXBpX3BsdWdpbnMuUmVkaXNTZXR0aW5ncywKICAgICAgICBmYXN0YXBpX3BsdWdpbnMuU2NoZWR1bGVyU2V0dGluZ3MsCiAgICAgICAgZmFzdGFwaV9wbHVnaW5zLkxvZ2dpbmdTZXR0aW5ncywKICAgICAgICBNZW1jYWNoZWRTZXR0aW5ncywKKToKICAgIGFwaV9uYW1lOiBzdHIgPSBzdHIoX19uYW1lX18pCiAgICBsb2dnaW5nX2xldmVsOiBpbnQgPSBsb2dnaW5nLkRFQlVHCiAgICBsb2dnaW5nX3N0eWxlOiBmYXN0YXBpX3BsdWdpbnMuTG9nZ2luZ1N0eWxlID0gZmFzdGFwaV9wbHVnaW5zLkxvZ2dpbmdTdHlsZS5sb2dqc29uCgoKQGZhc3RhcGlfcGx1Z2lucy5yZWdpc3RlcmVkX2NvbmZpZ3VyYXRpb24obmFtZT0nc2VudGluZWwnKQpjbGFzcyBBcHBTZXR0aW5nc1NlbnRpbmVsKEFwcFNldHRpbmdzKToKICAgIHJlZGlzX3R5cGUgPSBmYXN0YXBpX3BsdWdpbnMuUmVkaXNUeXBlLnNlbnRpbmVsCiAgICByZWRpc19zZW50aW5lbHMgPSAnbG9jYWxob3N0OjI2Mzc5JwoKCkBjb250ZXh0bGliLmFzeW5jY29udGV4dG1hbmFnZXIKYXN5bmMgZGVmIGxpZmVzcGFuKGFwcDogZmFzdGFwaS5GYXN0QVBJKToKICAgIGNvbmZpZyA9IGZhc3RhcGlfcGx1Z2lucy5nZXRfY29uZmlnKCkKICAgIGF3YWl0IGZhc3RhcGlfcGx1Z2lucy5jb25maWdfcGx1Z2luLmluaXRfYXBwKGFwcCwgY29uZmlnKQogICAgYXdhaXQgZmFzdGFwaV9wbHVnaW5zLmNvbmZpZ19wbHVnaW4uaW5pdCgpCiAgICBhd2FpdCBmYXN0YXBpX3BsdWdpbnMubG9nX3BsdWdpbi5pbml0X2FwcChhcHAsIGNvbmZpZywgbmFtZT1fX25hbWVfXykKICAgIGF3YWl0IGZhc3RhcGlfcGx1Z2lucy5sb2dfcGx1Z2luLmluaXQoKQogICAgYXdhaXQgbWVtY2FjaGVkX3BsdWdpbi5pbml0X2FwcChhcHAsIGNvbmZpZykKICAgIGF3YWl0IG1lbWNhY2hlZF9wbHVnaW4uaW5pdCgpCiAgICBhd2FpdCBmYXN0YXBpX3BsdWdpbnMucmVkaXNfcGx1Z2luLmluaXRfYXBwKGFwcCwgY29uZmlnPWNvbmZpZykKICAgIGF3YWl0IGZhc3RhcGlfcGx1Z2lucy5yZWRpc19wbHVnaW4uaW5pdCgpCiAgICBhd2FpdCBmYXN0YXBpX3BsdWdpbnMuc2NoZWR1bGVyX3BsdWdpbi5pbml0X2FwcChhcHA9YXBwLCBjb25maWc9Y29uZmlnKQogICAgYXdhaXQgZmFzdGFwaV9wbHVnaW5zLnNjaGVkdWxlcl9wbHVnaW4uaW5pdCgpCiAgICBhd2FpdCBmYXN0YXBpX3BsdWdpbnMuY29udHJvbF9wbHVnaW4uaW5pdF9hcHAoCiAgICAgICAgYXBwLAogICAgICAgIGNvbmZpZz1jb25maWcsCiAgICAgICAgdmVyc2lvbj1fX3ZlcnNpb25fXywKICAgICAgICBlbnZpcm9uPWNvbmZpZy5tb2RlbF9kdW1wKCkKICAgICkKICAgIGF3YWl0IGZhc3RhcGlfcGx1Z2lucy5jb250cm9sX3BsdWdpbi5pbml0KCkKICAgIHlpZWxkCiAgICBhd2FpdCBmYXN0YXBpX3BsdWdpbnMuY29udHJvbF9wbHVnaW4udGVybWluYXRlKCkKICAgIGF3YWl0IGZhc3RhcGlfcGx1Z2lucy5zY2hlZHVsZXJfcGx1Z2luLnRlcm1pbmF0ZSgpCiAgICBhd2FpdCBmYXN0YXBpX3BsdWdpbnMucmVkaXNfcGx1Z2luLnRlcm1pbmF0ZSgpCiAgICBhd2FpdCBtZW1jYWNoZWRfcGx1Z2luLnRlcm1pbmF0ZSgpCiAgICBhd2FpdCBmYXN0YXBpX3BsdWdpbnMubG9nX3BsdWdpbi50ZXJtaW5hdGUoKQogICAgYXdhaXQgZmFzdGFwaV9wbHVnaW5zLmNvbmZpZ19wbHVnaW4udGVybWluYXRlKCkKCgphcHAgPSBmYXN0YXBpX3BsdWdpbnMucmVnaXN0ZXJfbWlkZGxld2FyZShmYXN0YXBpLkZhc3RBUEkobGlmZXNwYW49bGlmZXNwYW4pKQoKCkBhcHAuZ2V0KCIvIikKYXN5bmMgZGVmIHJvb3RfZ2V0KAogICAgICAgIGNhY2hlOiBmYXN0YXBpX3BsdWdpbnMuVFJlZGlzUGx1Z2luLAogICAgICAgIGNvbmY6IGZhc3RhcGlfcGx1Z2lucy5UQ29uZmlnUGx1Z2luLAogICAgICAgIGxvZ2dlcjogZmFzdGFwaV9wbHVnaW5zLlRMb2dnZXJQbHVnaW4KKSAtPiB0eXBpbmcuRGljdDoKICAgIHBpbmcgPSBhd2FpdCBjYWNoZS5waW5nKCkKICAgIGxvZ2dlci5kZWJ1Zygncm9vdF9nZXQnLCBleHRyYT1kaWN0KHBpbmc9cGluZywgYXBpX25hbWU9Y29uZi5hcGlfbmFtZSkpCiAgICByZXR1cm4gZGljdChwaW5nPXBpbmcsIGFwaV9uYW1lPWNvbmYuYXBpX25hbWUpCgoKQGFwcC5wb3N0KCIvam9icy9zY2hlZHVsZS88dGltZW91dD4iKQphc3luYyBkZWYgam9iX3Bvc3QoCiAgICB0aW1lb3V0OiBpbnQ9ZmFzdGFwaS5RdWVyeSguLi4sIHRpdGxlPSd0aGUgam9iIHNsZWVwIHRpbWUnKSwKICAgIGNhY2hlOiBmYXN0YXBpX3BsdWdpbnMuVFJlZGlzUGx1Z2luLAogICAgc2NoZWR1bGVyOiBmYXN0YXBpX3BsdWdpbnMuVFNjaGVkdWxlclBsdWdpbiwKICAgIGxvZ2dlcjogZmFzdGFwaV9wbHVnaW5zLlRMb2dnZXJQbHVnaW4KKSAtPiBzdHI6CiAgICBhc3luYyBkZWYgY29ybyhqb2JfaWQsIHRpbWVvdXQsIGNhY2hlKToKICAgICAgICBhd2FpdCBjYWNoZS5zZXQoam9iX2lkLCAncHJvY2Vzc2luZycpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKHRpbWVvdXQpCiAgICAgICAgICAgIGlmIHRpbWVvdXQgPT0gODoKICAgICAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgnVWdseSBlcnJlZCBqb2IgJXMnICUgam9iX2lkKQogICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCd1Z2x5IGVycm9yJykKICAgICAgICBleGNlcHQgYXN5bmNpby5DYW5jZWxsZWRFcnJvcjoKICAgICAgICAgICAgYXdhaXQgY2FjaGUuc2V0KGpvYl9pZCwgJ2NhbmNlbGVkJykKICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ0NhbmNlbCBqb2IgJXMnICUgam9iX2lkKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIGF3YWl0IGNhY2hlLnNldChqb2JfaWQsICdlcnJlZCcpCiAgICAgICAgICAgIGxvZ2dlci5lcnJvcignRXJyZWQgam9iICVzJyAlIGpvYl9pZCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBhd2FpdCBjYWNoZS5zZXQoam9iX2lkLCAnc3VjY2VzcycpCiAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdEb25lIGpvYiAlcycgJSBqb2JfaWQpCgogICAgam9iX2lkID0gc3RyKHV1aWQudXVpZDQoKSkucmVwbGFjZSgnLScsICcnKQogICAgbG9nZ2VyID0gYXdhaXQgZmFzdGFwaV9wbHVnaW5zLmxvZ19hZGFwdGVyKGxvZ2dlciwgZXh0cmE9ZGljdChqb2JfaWQ9am9iX2lkLCB0aW1lb3V0PXRpbWVvdXQpKSAgICAjIG5vcWEgRTUwMQogICAgbG9nZ2VyLmluZm8oJ05ldyBqb2IgJXMnICUgam9iX2lkKQogICAgYXdhaXQgY2FjaGUuc2V0KGpvYl9pZCwgJ3BlbmRpbmcnKQogICAgbG9nZ2VyLmRlYnVnKCdQZW5kaW5nIGpvYiAlcycgJSBqb2JfaWQpCiAgICBhd2FpdCBzY2hlZHVsZXIuc3Bhd24oY29ybyhqb2JfaWQsIHRpbWVvdXQsIGNhY2hlKSkKICAgIHJldHVybiBqb2JfaWQKCgpAYXBwLmdldCgiL2pvYnMvc3RhdHVzLzxqb2JfaWQ+IikKYXN5bmMgZGVmIGpvYl9nZXQoCiAgICBqb2JfaWQ6IHN0cj1mYXN0YXBpLlF1ZXJ5KC4uLiwgdGl0bGU9J3RoZSBqb2IgaWQnKSwKICAgIGNhY2hlOiBmYXN0YXBpX3BsdWdpbnMuVFJlZGlzUGx1Z2luLAopIC0+IHR5cGluZy5EaWN0OgogICAgc3RhdHVzID0gYXdhaXQgY2FjaGUuZ2V0KGpvYl9pZCkKICAgIGlmIHN0YXR1cyBpcyBOb25lOgogICAgICAgIHJhaXNlIGZhc3RhcGkuSFRUUEV4Y2VwdGlvbigKICAgICAgICAgICAgc3RhdHVzX2NvZGU9c3RhcmxldHRlLnN0YXR1cy5IVFRQXzQwNF9OT1RfRk9VTkQsCiAgICAgICAgICAgIGRldGFpbD0nSm9iICVzIG5vdCBmb3VuZCcgJSBqb2JfaWQKICAgICAgICApCiAgICByZXR1cm4gZGljdChqb2JfaWQ9am9iX2lkLCBzdGF0dXM9c3RhdHVzKQoKCkBhcHAucG9zdCgiL21lbWNhY2hlZC9kZW1vLzxrZXk+IikKYXN5bmMgZGVmIG1lbWNhY2hlZF9kZW1vX3Bvc3QoCiAgICBrZXk6IHN0cj1mYXN0YXBpLlF1ZXJ5KC4uLiwgdGl0bGU9J3RoZSBqb2IgaWQnKSwKICAgIGNhY2hlOiBmYXN0YXBpX3BsdWdpbnMuVE1lbWNhY2hlZFBsdWdpbiwKKSAtPiB0eXBpbmcuRGljdDoKICAgIGF3YWl0IGNhY2hlLnNldChrZXkuZW5jb2RlKCksIHN0cihrZXkgKyAnX3ZhbHVlJykuZW5jb2RlKCkpCiAgICB2YWx1ZSA9IGF3YWl0IGNhY2hlLmdldChrZXkuZW5jb2RlKCkpCiAgICByZXR1cm4gZGljdChwaW5nPShhd2FpdCBjYWNoZS5waW5nKCkpLmRlY29kZSgpLCBrZXk9a2V5LCB2YWx1ZT12YWx1ZSkKYGBgCgojIERldmVsb3BtZW50Cklzc3VlcyBhbmQgc3VnZ2VzdGlvbnMgYXJlIHdlbGNvbWUgdGhyb3VnaCBbaXNzdWVzXShodHRwczovL2dpdGh1Yi5jb20vbWFka290ZS9mYXN0YXBpLXBsdWdpbnMvaXNzdWVzKQoKIyBMaWNlbnNlClRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1JVCBsaWNlbnNlLgo= readmeEtag: '"0a423b3a922daaf582fc80759adb5b12ba91c44f"' readmeLastModified: Mon, 03 Jun 2024 15:39:27 GMT repositoryId: 222924508 description: FastAPI framework plugins created: '2019-11-20T11:41:50Z' updated: '2026-02-04T08:12:56Z' language: Python archived: false stars: 609 watchers: 2 forks: 25 owner: madkote logo: https://avatars.githubusercontent.com/u/4921881?v=4 license: MIT repoEtag: '"9571b32e213b6bae5ea7e785f7f4b1a0f5fbf8ab2376440d3f0d78ca81b5be2d"' repoLastModified: Wed, 04 Feb 2026 08:12:56 GMT foundInMaster: true category: Server Implementations id: 5b8a96994e594bd26bca9505bbc19018 - source: openapi3 tags name: rest homepage: https://github.com/swaggest/rest language: Go source_description: >- API server with automatic request/response mapping/validation and OpenAPI schema category: Server Implementations repository: https://github.com/swaggest/rest v3: true repositoryMetadata: base64Readme: >- IyBSRVNUIHdpdGggQ2xlYW4gQXJjaGl0ZWN0dXJlIGZvciBHbwoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdC93b3JrZmxvd3MvdGVzdC11bml0L2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0L2FjdGlvbnM/cXVlcnk9YnJhbmNoJTNBbWFzdGVyK3dvcmtmbG93JTNBdGVzdC11bml0KQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY29kZWNvdi5pby9naC9zd2FnZ2VzdC9yZXN0L2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3N3YWdnZXN0L3Jlc3QpClshW0dvRGV2RG9jXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2Rldi1kb2MtMDBBREQ4P2xvZ289Z28pXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0KQpbIVtBc2sgRGVlcFdpa2ldKGh0dHBzOi8vZGVlcHdpa2kuY29tL2JhZGdlLnN2ZyldKGh0dHBzOi8vZGVlcHdpa2kuY29tL3N3YWdnZXN0L3Jlc3QpClshW1RpbWUgVHJhY2tlcl0oaHR0cHM6Ly93YWthdGltZS5jb20vYmFkZ2UvZ2l0aHViL3N3YWdnZXN0L3Jlc3Quc3ZnKV0oaHR0cHM6Ly93YWthdGltZS5jb20vYmFkZ2UvZ2l0aHViL3N3YWdnZXN0L3Jlc3QpCgpUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIEhUVFAgdHJhbnNwb3J0IGxldmVsIGZvciBbYGdpdGh1Yi5jb20vc3dhZ2dlc3QvdXNlY2FzZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC91c2VjYXNlKSAKdG8gYnVpbGQgUkVTVCBzZXJ2aWNlcy4KCiMjIEdvYWxzCgoqIE1haW50YWluIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGRvY3VtZW50YXRpb24sIHZhbGlkYXRpb24gYW5kIGlucHV0L291dHB1dCBvZiBIVFRQIEFQSS4KKiBBdm9pZCBkZXBlbmRlbmN5IG9uIGNvbXBpbGUgdGltZSBjb2RlIGdlbmVyYXRpb24uCiogSW1wcm92ZSBwcm9kdWN0aXZpdHkgYW5kIHJlbGlhYmlsaXR5IGJ5IGFic3RyYWN0aW5nIEhUVFAgZGV0YWlscyB3aXRoIHNpbXBsZSBBUEkgZm9yIGNvbW1vbiBjYXNlLgoqIEFsbG93IGxvdy1sZXZlbCBjdXN0b21pemF0aW9ucyBmb3IgYWR2YW5jZWQgY2FzZXMuCiogTWFpbnRhaW4gcmVhc29uYWJsZSBwZXJmb3JtYW5jZSB3aXRoIGxvdyBHQyBpbXBhY3QuCgojIyBOb24tR29hbHMKCiogU3VwcG9ydCBmb3IgbGVnYWN5IGRvY3VtZW50YXRpb24gc2NoZW1hcyBsaWtlIFN3YWdnZXIgMi4wIG9yIFJBTUwuCiogWmVybyBhbGxvY2F0aW9ucy4KKiBFeHBsaWNpdCBzdXBwb3J0IGZvciBYTUwgaW4gcmVxdWVzdCBvciByZXNwb25zZSBib2RpZXMuCgojIyBGZWF0dXJlcwoKKiBDb21wYXRpYmxlIHdpdGggYG5ldC9odHRwYC4KKiBCdWlsdCB3aXRoIFtgZ2l0aHViLmNvbS9nby1jaGkvY2hpYF0oaHR0cHM6Ly9naXRodWIuY29tL2dvLWNoaS9jaGkpIHJvdXRlci4KKiBNb2R1bGFyIGZsZXhpYmxlIHN0cnVjdHVyZS4KKiBIVFRQIFtyZXF1ZXN0IG1hcHBpbmddKCNyZXF1ZXN0LWRlY29kZXIpIGludG8gR28gdmFsdWUgYmFzZWQgb24gZmllbGQgdGFncy4KKiBEZWNvdXBsZWQgYnVzaW5lc3MgbG9naWMgd2l0aCBDbGVhbiBBcmNoaXRlY3R1cmUgdXNlIGNhc2VzLgoqIEF1dG9tYXRpYyB0eXBlLXNhZmUgT3BlbkFQSSAzLjAvMy4xIGRvY3VtZW50YXRpb24gd2l0aCBbYGdpdGh1Yi5jb20vc3dhZ2dlc3Qvb3BlbmFwaS1nb2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9vcGVuYXBpLWdvKS4KKiBTaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgZW5kcG9pbnQgaW50ZXJmYWNlLgoqIEF1dG9tYXRpYyByZXF1ZXN0L3Jlc3BvbnNlIEpTT04gc2NoZW1hIHZhbGlkYXRpb24gd2l0aCBbYGdpdGh1Yi5jb20vc2FudGhvc2gtdGVrdXJpL2pzb25zY2hlbWFgXShodHRwczovL2dpdGh1Yi5jb20vc2FudGhvc2gtdGVrdXJpL2pzb25zY2hlbWEpLgoqIER5bmFtaWMgZ3ppcCBjb21wcmVzc2lvbiBhbmQgZmFzdCBwYXNzIHRocm91Z2ggbW9kZS4KKiBPcHRpbWl6ZWQgcGVyZm9ybWFuY2UuCiogRW1iZWRkZWQgW1N3YWdnZXIgVUldKGh0dHBzOi8vc3dhZ2dlci5pby90b29scy9zd2FnZ2VyLXVpLykuCiogR2VuZXJpYyBpbnRlcmZhY2UgZm9yIFt1c2UgY2FzZSBpbnRlcmFjdG9yc10oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvdXNlY2FzZSNOZXdJbnRlcmFjdG9yKS4gCgojIyBVc2FnZQoKUGxlYXNlIGNoZWNrIHRoaXMgW3R1dG9yaWFsXShodHRwczovL2Rldi50by92ZWFydXRvcC90dXRvcmlhbC1kZXZlbG9waW5nLWEtcmVzdGZ1bC1hcGktd2l0aC1nby1qc29uLXNjaGVtYS12YWxpZGF0aW9uLWFuZC1vcGVuYXBpLWRvY3MtMjQ5MCkgZm9yIGVuZC10by1lbmQgdXNhZ2UgZXhhbXBsZS4KCiMjIyBSZXF1ZXN0IERlY29kZXIKCkdvIHN0cnVjdCB3aXRoIGZpZWxkIHRhZ3MgZGVmaW5lcyBpbnB1dCBwb3J0LiAKUmVxdWVzdCBkZWNvZGVyIHBvcHVsYXRlcyBmaWVsZCB2YWx1ZXMgZnJvbSBgaHR0cC5SZXF1ZXN0YCBkYXRhIGJlZm9yZSB1c2UgY2FzZSBpbnRlcmFjdG9yIGlzIGludm9rZWQuIAoKYGBgZ28KLy8gRGVjbGFyZSBpbnB1dCBwb3J0IHR5cGUuCnR5cGUgaGVsbG9JbnB1dCBzdHJ1Y3QgewogICAgTG9jYWxlIHN0cmluZyBgcXVlcnk6ImxvY2FsZSIgZGVmYXVsdDoiZW4tVVMiIHBhdHRlcm46Il5bYS16XXsyfS1bQS1aXXsyfSQiIGVudW06InJ1LVJVLGVuLVVTImAKICAgIE5hbWUgICBzdHJpbmcgYHBhdGg6Im5hbWUiIG1pbkxlbmd0aDoiMyJgIC8vIEZpZWxkIHRhZ3MgZGVmaW5lIHBhcmFtZXRlciBsb2NhdGlvbiBhbmQgSlNPTiBzY2hlbWEgY29uc3RyYWludHMuCgogICAgLy8gRmllbGQgdGFncyBvZiB1bm5hbWVkIGZpZWxkcyBhcmUgYXBwbGllZCB0byBwYXJlbnQgc2NoZW1hLCAKCS8vIHRoZXkgYXJlIG9wdGlvbmFsIGFuZCBjYW4gYmUgdXNlZCB0byBkaXNhbGxvdyB1bmtub3duIHBhcmFtZXRlcnMuCiAgICAvLyBGb3Igbm9uLWJvZHkgcGFyYW1zLCBuYW1lIHRhZyBtdXN0IGJlIHByb3ZpZGVkIGV4cGxpY2l0bHkuCiAgICAvLyBFLmcuIGhlcmUgbm8gdW5rbm93biBgcXVlcnlgIGFuZCBgY29va2llYCBwYXJhbWV0ZXJzIGFsbG93ZWQsCiAgICAvLyB1bmtub3duIGBoZWFkZXJgIHBhcmFtcyBhcmUgb2suCiAgICBfIHN0cnVjdHt9IGBxdWVyeToiXyIgY29va2llOiJfIiBhZGRpdGlvbmFsUHJvcGVydGllczoiZmFsc2UiYAp9CmBgYAoKSW5wdXQgZGF0YSBjYW4gYmUgbG9jYXRlZCBpbjoKKiBgcGF0aGAgcGFyYW1ldGVyIGluIHJlcXVlc3QgVVJJLCBlLmcuIGAvdXNlcnMve25hbWV9YCwKKiBgcXVlcnlgIHBhcmFtZXRlciBpbiByZXF1ZXN0IFVSSSwgZS5nLiBgL3VzZXJzP2xvY2FsZT1lbi1VU2AsCiogYGZvcm1EYXRhYCBwYXJhbWV0ZXIgaW4gcmVxdWVzdCBib2R5IHdpdGggYGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGAgb3IgYG11bHRpcGFydC9mb3JtLWRhdGFgIGNvbnRlbnQsCiogYGZvcm1gIHBhcmFtZXRlciBhY3RzIGFzIGBmb3JtRGF0YWAgb3IgYHF1ZXJ5YCwKKiBganNvbmAgcGFyYW1ldGVyIGluIHJlcXVlc3QgYm9keSB3aXRoIGBhcHBsaWNhdGlvbi9qc29uYCBjb250ZW50LAoqIGBjb29raWVgIHBhcmFtZXRlciBpbiByZXF1ZXN0IGNvb2tpZSwKKiBgaGVhZGVyYCBwYXJhbWV0ZXIgaW4gcmVxdWVzdCBoZWFkZXIsCiogYGNvbnRlbnRUeXBlYCBvZiBtYXRjaGluZyByYXcgcmVxdWVzdCBib2R5LgoKRm9yIG1vcmUgZXhwbGljaXQgc2VwYXJhdGlvbiBvZiBjb25jZXJucyBiZXR3ZWVuIHVzZSBjYXNlIGFuZCB0cmFuc3BvcnQgaXQgaXMgcG9zc2libGUgdG8gcHJvdmlkZSByZXF1ZXN0IG1hcHBpbmcgCnNlcGFyYXRlbHkgd2hlbiBpbml0aWFsaXppbmcgaGFuZGxlciAocGxlYXNlIG5vdGUsIHN1Y2ggbWFwcGluZyBpcyBbbm90IGFwcGxpZWRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0L2lzc3Vlcy82MSNpc3N1ZWNvbW1lbnQtMTA1OTg1MTU1MykgdG8gYGpzb25gIGJvZHkpLgoKYGBgZ28KLy8gRGVjbGFyZSBpbnB1dCBwb3J0IHR5cGUuCnR5cGUgaGVsbG9JbnB1dCBzdHJ1Y3QgewogICAgTG9jYWxlIHN0cmluZyBgZGVmYXVsdDoiZW4tVVMiIHBhdHRlcm46Il5bYS16XXsyfS1bQS1aXXsyfSQiYAogICAgTmFtZSAgIHN0cmluZyBgbWluTGVuZ3RoOiIzImAgLy8gRmllbGQgdGFncyBkZWZpbmUgcGFyYW1ldGVyIGxvY2F0aW9uIGFuZCBKU09OIHNjaGVtYSBjb25zdHJhaW50cy4KfQpgYGAKCmBgYGdvCi8vIEFkZCB1c2UgY2FzZSBoYW5kbGVyIHdpdGggY3VzdG9tIGlucHV0IG1hcHBpbmcgdG8gcm91dGVyLgpyLk1ldGhvZChodHRwLk1ldGhvZEdldCwgIi9oZWxsby97bmFtZX0iLCBuZXRodHRwLk5ld0hhbmRsZXIodSwKICAgIG5ldGh0dHAuUmVxdWVzdE1hcHBpbmcobmV3KHN0cnVjdCB7CiAgICAgICBMb2NhbGUgc3RyaW5nIGBxdWVyeToibG9jYWxlImAKICAgICAgIE5hbWUgICBzdHJpbmcgYHBhdGg6Im5hbWUiYCAvLyBGaWVsZCB0YWdzIGRlZmluZSBwYXJhbWV0ZXIgbG9jYXRpb24gYW5kIEpTT04gc2NoZW1hIGNvbnN0cmFpbnRzLgogICAgfSkpLAopKQpgYGAKCkFkZGl0aW9uYWwgZmllbGQgdGFncyBkZXNjcmliZSBKU09OIHNjaGVtYSBjb25zdHJhaW50cywgcGxlYXNlIGNoZWNrIApbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyNSZWZsZWN0b3IuUmVmbGVjdCkuCgpNb3JlIHNjaGVtYSBjdXN0b21pemF0aW9ucyBhcmUgcG9zc2libGUgd2l0aCBbYGdpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyBpbnRlcmZhY2VzYF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L2pzb25zY2hlbWEtZ28jaW1wbGVtZW50aW5nLWludGVyZmFjZXMtb24tYS10eXBlKS4KCkJ5IGRlZmF1bHQgYGRlZmF1bHRgIHRhZ3MgYXJlIG9ubHkgY29udHJpYnV0aW5nIHRvIGRvY3VtZW50YXRpb24sIAppZiBbYHJlcXVlc3QuRGVjb2RlckZhY3RvcnkuQXBwbHlEZWZhdWx0c2BdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L3Jlc3QvcmVxdWVzdCNEZWNvZGVyRmFjdG9yeSkgaXMgCnNldCB0byBgdHJ1ZWAsIGZpZWxkcyBvZiByZXF1ZXN0IHN0cnVjdHVyZSB0aGF0IGRvbid0IGhhdmUgZXhwbGljaXQgdmFsdWUgYnV0IGhhdmUgYGRlZmF1bHRgIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggCmRlZmF1bHQgdmFsdWUuCgpJZiBpbnB1dCBzdHJ1Y3R1cmUgaW1wbGVtZW50cyBbYHJlcXVlc3QuTG9hZGVyYF0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdC9yZXF1ZXN0I0xvYWRlciksICAKdGhlbiBgTG9hZEZyb21IVFRQUmVxdWVzdChyICpodHRwLlJlcXVlc3QpIGVycm9yYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIHRvIHBvcHVsYXRlIGlucHV0IHN0cnVjdHVyZSBpbnN0ZWFkIApvZiBhdXRvbWF0aWMgZGVjb2RpbmcuIFRoaXMgYWxsb3dzIGxvdyBsZXZlbCBjb250cm9sIGZvciBjYXNlcyB0aGF0IG5lZWQgaXQuCgo8ZGV0YWlscz4KPHN1bW1hcnk+UmVxdWVzdCBkZWNvZGVyIGNhbiBiZSB1c2VkIHN0YW5kYWxvbmUsIGluIGFscmVhZHkgZXhpc3RpbmcgYFNlcnZlSFRUUGAuPC9zdW1tYXJ5PgoKYGBgZ28KdHlwZSBNeVJlcXVlc3Qgc3RydWN0IHsKICAgIEZvbyBpbnQgICAgYGhlYWRlcjoiWC1Gb28iYAogICAgQmFyIHN0cmluZyBgZm9ybURhdGE6ImJhciJgCiAgICBCYXogYm9vbCAgIGBxdWVyeToiYmF6ImAKfQoKLy8gQSBkZWNvZGVyIGZvciBwYXJ0aWN1bGFyIHN0cnVjdHVyZSwgY2FuIGJlIHJldXNlZCBmb3IgbXVsdGlwbGUgSFRUUCByZXF1ZXN0cy4KbXlEZWNvZGVyIDo9IHJlcXVlc3QuTmV3RGVjb2RlckZhY3RvcnkoKS5NYWtlRGVjb2RlcihodHRwLk1ldGhvZFBvc3QsIG5ldyhNeVJlcXVlc3QpLCBuaWwpCgovLyBSZXF1ZXN0IGFuZCByZXNwb25zZSB3cml0ZXIgZnJvbSBTZXJ2ZUhUVFAuCnZhciAoCiAgICBydyAgaHR0cC5SZXNwb25zZVdyaXRlcgogICAgcmVxICpodHRwLlJlcXVlc3QKKQoKLy8gVGhpcyBjb2RlIHdvdWxkIHByZXN1bWFibHkgbGl2ZSBpbiBTZXJ2ZUhUVFAuCnZhciBteVJlcSBNeVJlcXVlc3QKCmlmIGVyciA6PSBteURlY29kZXIuRGVjb2RlKHJlcSwgJm15UmVxLCBuaWwpOyBlcnIgIT0gbmlsIHsKICAgIGh0dHAuRXJyb3IocncsIGVyci5FcnJvcigpLCBodHRwLlN0YXR1c0JhZFJlcXVlc3QpCn0KYGBgCjwvZGV0YWlscz4KCiMjIyBSZXNwb25zZSBFbmNvZGVyCgpHbyBzdHJ1Y3Qgd2l0aCBmaWVsZCB0YWdzIGRlZmluZXMgb3V0cHV0IHBvcnQuClJlc3BvbnNlIGVuY29kZXIgd3JpdGVzIGRhdGEgZnJvbSBvdXRwdXQgdG8gYGh0dHAuUmVzcG9uc2VXcml0ZXJgIGFmdGVyIHVzZSBjYXNlIGludGVyYWN0b3IgaW52b2NhdGlvbiBmaW5pc2hlcy4KCmBgYGdvCi8vIERlY2xhcmUgb3V0cHV0IHBvcnQgdHlwZS4KdHlwZSBoZWxsb091dHB1dCBzdHJ1Y3QgewogICAgTm93ICAgICB0aW1lLlRpbWUgYGhlYWRlcjoiWC1Ob3ciIGpzb246Ii0iYAogICAgTWVzc2FnZSBzdHJpbmcgICAgYGpzb246Im1lc3NhZ2UiYAogICAgU2VzcyAgICBzdHJpbmcgICAgYGNvb2tpZToic2VzcyxodHRwb25seSxzZWN1cmUsbWF4LWFnZT04NjQwMCxzYW1lc2l0ZT1sYXgiYAp9CmBgYAoKT3V0cHV0IGRhdGEgY2FuIGJlIGxvY2F0ZWQgaW46CiogYGpzb25gIGZvciByZXNwb25zZSBib2R5IHdpdGggYGFwcGxpY2F0aW9uL2pzb25gIGNvbnRlbnQsCiogYGhlYWRlcmAgZm9yIHZhbHVlcyBpbiByZXNwb25zZSBoZWFkZXIsCiogYGNvb2tpZWAgZm9yIGNvb2tpZSB2YWx1ZXMsIGNvb2tpZSBmaWVsZHMgY2FuIGhhdmUgY29uZmlndXJhdGlvbiBpbiBmaWVsZCB0YWcgKHNhbWUgYXMgaW4gYWN0dWFsIGNvb2tpZSwgYnV0IHdpdGggY29tbWEgc2VwYXJhdGlvbiksCiogYGNvbnRlbnRUeXBlYCBmb3IgYSBub24tZW1wdHkgc3RyaW5nIHZhbHVlIHRoYXQgc2hvdWxkIGJlIHVzZWQgYXMgcmVzcG9uc2UgYm9keSB3aXRoIGdpdmVuIGNvbnRlbnQgdHlwZS4KCkZvciBtb3JlIGV4cGxpY2l0IHNlcGFyYXRpb24gb2YgY29uY2VybnMgYmV0d2VlbiB1c2UgY2FzZSBhbmQgdHJhbnNwb3J0IGl0IGlzIHBvc3NpYmxlIHRvIHByb3ZpZGUgcmVzcG9uc2UgaGVhZGVyIG1hcHBpbmcgCnNlcGFyYXRlbHkgd2hlbiBpbml0aWFsaXppbmcgaGFuZGxlci4KCmBgYGdvCi8vIERlY2xhcmUgb3V0cHV0IHBvcnQgdHlwZS4KdHlwZSBoZWxsb091dHB1dCBzdHJ1Y3QgewogICAgTm93ICAgICB0aW1lLlRpbWUgYGpzb246Ii0iYAogICAgTWVzc2FnZSBzdHJpbmcgICAgYGpzb246Im1lc3NhZ2UiYAp9CmBgYAoKYGBgZ28KLy8gQWRkIHVzZSBjYXNlIGhhbmRsZXIgd2l0aCBjdXN0b20gb3V0cHV0IGhlYWRlcnMgbWFwcGluZyB0byByb3V0ZXIuCnIuTWV0aG9kKGh0dHAuTWV0aG9kR2V0LCAiL2hlbGxvL3tuYW1lfSIsIG5ldGh0dHAuTmV3SGFuZGxlcih1LAogICAgbmV0aHR0cC5SZXNwb25zZUhlYWRlck1hcHBpbmcobmV3KHN0cnVjdCB7CiAgICAgICAgTm93ICAgICB0aW1lLlRpbWUgYGhlYWRlcjoiWC1Ob3ciYAogICAgfSkpLAopKQpgYGAKCkFkZGl0aW9uYWwgZmllbGQgdGFncyBkZXNjcmliZSBKU09OIHNjaGVtYSBjb25zdHJhaW50cywgcGxlYXNlIGNoZWNrIApbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyNSZWZsZWN0b3IuUmVmbGVjdCkuCgojIyMgQ3JlYXRpbmcgVXNlIENhc2UgSW50ZXJhY3RvcgoKSFRUUCB0cmFuc3BvcnQgaXMgZGVjb3VwbGVkIGZyb20gYnVzaW5lc3MgbG9naWMgYnkgYWRhcHRpbmcKW3VzZSBjYXNlIGludGVyYWN0b3JzXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9zd2FnZ2VzdC91c2VjYXNlI0ludGVyYWN0b3IpLgoKVXNlIGNhc2UgaW50ZXJhY3RvciBjYW4gZGVmaW5lIGlucHV0IGFuZCBvdXRwdXQgcG9ydHMgdGhhdCBhcmUgdXNlZCB0byBtYXAgZGF0YSBiZXR3ZWVuIEdvIHZhbHVlcyBhbmQgdHJhbnNwb3J0LgpJdCBjYW4gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCBpdHNlbGYgdGhhdCB3aWxsIGJlIGV4cG9zZWQgaW4gZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24uCgpgYGBnbwovLyBDcmVhdGUgdXNlIGNhc2UgaW50ZXJhY3RvciB3aXRoIHJlZmVyZW5jZXMgdG8gaW5wdXQvb3V0cHV0IHR5cGVzIGFuZCBpbnRlcmFjdGlvbiBmdW5jdGlvbi4KdSA6PSB1c2VjYXNlLk5ld0ludGVyYWN0b3IoZnVuYyhjdHggY29udGV4dC5Db250ZXh0LCBpbnB1dCBoZWxsb0lucHV0LCBvdXRwdXQgKmhlbGxvT3V0cHV0KSBlcnJvciB7CiAgICBtc2csIGF2YWlsYWJsZSA6PSBtZXNzYWdlc1tpbnB1dC5Mb2NhbGVdCiAgICBpZiAhYXZhaWxhYmxlIHsKICAgICAgICByZXR1cm4gc3RhdHVzLldyYXAoZXJyb3JzLk5ldygidW5rbm93biBsb2NhbGUiKSwgc3RhdHVzLkludmFsaWRBcmd1bWVudCkKICAgIH0KCiAgICBvdXRwdXQuTWVzc2FnZSA9IGZtdC5TcHJpbnRmKG1zZywgaW5wdXQuTmFtZSkKICAgIG91dHB1dC5Ob3cgPSB0aW1lLk5vdygpCgogICAgcmV0dXJuIG5pbAp9KQpgYGAKCiMjIyBJbml0aWFsaXppbmcgV2ViIFNlcnZpY2UKCltXZWIgU2VydmljZV0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdC93ZWIjRGVmYXVsdFNlcnZpY2UpIGlzIGFuIGluc3RydW1lbnRlZCBmYWNhZGUgaW4gZnJvbnQgb2YgCnJvdXRlciwgaXQgc2ltcGxpZmllcyBjb25maWd1cmF0aW9uIGFuZCBwcm92aWRlcyBtb3JlIGNvbXBhY3QgQVBJIHRvIGFkZCB1c2UgY2FzZXMuCgpgYGBnbwovLyBTZXJ2aWNlIGluaXRpYWxpemVzIHJvdXRlciB3aXRoIHJlcXVpcmVkIG1pZGRsZXdhcmVzLgpzZXJ2aWNlIDo9IHdlYi5OZXdTZXJ2aWNlKG9wZW5hcGkzMS5OZXdSZWZsZWN0b3IoKSkKCi8vIEl0IGFsbG93cyBPcGVuQVBJIGNvbmZpZ3VyYXRpb24uCnNlcnZpY2UuT3BlbkFQSVNjaGVtYSgpLlNldFRpdGxlKCJBbGJ1bXMgQVBJIikKc2VydmljZS5PcGVuQVBJU2NoZW1hKCkuU2V0RGVzY3JpcHRpb24oIlRoaXMgc2VydmljZSBwcm92aWRlcyBBUEkgdG8gbWFuYWdlIGFsYnVtcy4iKQpzZXJ2aWNlLk9wZW5BUElTY2hlbWEoKS5TZXRWZXJzaW9uKCJ2MS4wLjAiKQoKLy8gQWRkaXRpb25hbCBtaWRkbGV3YXJlcyBjYW4gYmUgYWRkZWQuCnNlcnZpY2UuVXNlKAogICAgbWlkZGxld2FyZS5TdHJpcFNsYXNoZXMsCgogICAgLy8gY29ycy5BbGxvd0FsbCgpLkhhbmRsZXIsIC8vICJnaXRodWIuY29tL3JzL2NvcnMiLCAzcmQtcGFydHkgQ09SUyBtaWRkbGV3YXJlIGNhbiBhbHNvIGJlIGNvbmZpZ3VyZWQgaGVyZS4KKQoKLy8gVXNlIGNhc2VzIGNhbiBiZSBtb3VudGVkIHVzaW5nIHNob3J0IHN5bnRheCAuPE1ldGhvZD4oLi4uKS4Kc2VydmljZS5Qb3N0KCIvYWxidW1zIiwgcG9zdEFsYnVtcygpLCBuZXRodHRwLlN1Y2Nlc3NTdGF0dXMoaHR0cC5TdGF0dXNDcmVhdGVkKSkKCmxvZy5QcmludGxuKCJTdGFydGluZyBzZXJ2aWNlIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIpCgppZiBlcnIgOj0gaHR0cC5MaXN0ZW5BbmRTZXJ2ZSgibG9jYWxob3N0OjgwODAiLCBzZXJ2aWNlKTsgZXJyICE9IG5pbCB7CiAgICBsb2cuRmF0YWwoZXJyKQp9CgpgYGAKClVzdWFsbHksIGB3ZWIuU2VydmljZWAgQVBJIGlzIHN1ZmZpY2llbnQsIGJ1dCBpZiBpdCBpcyBub3QsIHJvdXRlciBjYW4gYmUgY29uZmlndXJlZCBtYW51YWxseSwgcGxlYXNlIGNoZWNrIAp0aGUgZG9jdW1lbnRhdGlvbiBiZWxvdy4KCgojIyBTZWN1cml0eSBTZXR1cAoKRXhhbXBsZSB3aXRoIEhUVFAgQmFzaWMgQXV0aC4KCmBgYGdvCi8vIFByZXBhcmUgbWlkZGxld2FyZSB3aXRoIHN1aXRhYmxlIHNlY3VyaXR5IHNjaGVtYS4KLy8gSXQgd2lsbCBwZXJmb3JtIGFjdHVhbCBzZWN1cml0eSBjaGVjayBmb3IgZXZlcnkgcmVsZXZhbnQgcmVxdWVzdC4KYWRtaW5BdXRoIDo9IG1pZGRsZXdhcmUuQmFzaWNBdXRoKCJBZG1pbiBBY2Nlc3MiLCBtYXBbc3RyaW5nXXN0cmluZ3siYWRtaW4iOiAiYWRtaW4ifSkKCi8vIFByZXBhcmUgQVBJIHNjaGVtYSB1cGRhdGVyIG1pZGRsZXdhcmUuCi8vIEl0IHdpbGwgYW5ub3RhdGUgaGFuZGxlciBkb2N1bWVudGF0aW9uIHdpdGggc2VjdXJpdHkgc2NoZW1hLgphZG1pblNlY3VyaXR5U2NoZW1hIDo9IG5ldGh0dHAuSFRUUEJhc2ljU2VjdXJpdHlNaWRkbGV3YXJlKGFwaVNjaGVtYSwgIkFkbWluIiwgIkFkbWluIGFjY2VzcyIpCgovLyBFbmRwb2ludHMgd2l0aCBhZG1pbiBhY2Nlc3MuCnIuUm91dGUoIi9hZG1pbiIsIGZ1bmMociBjaGkuUm91dGVyKSB7CiAgICByLkdyb3VwKGZ1bmMociBjaGkuUm91dGVyKSB7CiAgICAgICAgci5Vc2UoYWRtaW5BdXRoLCBhZG1pblNlY3VyaXR5U2NoZW1hKSAvLyBBZGQgYm90aCBtaWRkbGV3YXJlcyB0byByb3V0aW5nIGdyb3VwIHRvIGVuZm9yY2UgYW5kIGRvY3VtZW50IHNlY3VyaXR5LgogICAgICAgIHIuTWV0aG9kKGh0dHAuTWV0aG9kUHV0LCAiL2hlbGxvL3tuYW1lfSIsIG5ldGh0dHAuTmV3SGFuZGxlcih1KSkKICAgIH0pCn0pCmBgYAoKRXhhbXBsZSB3aXRoIGNvb2tpZS4KCmBgYGdvCi8vIFNlY3VyaXR5IG1pZGRsZXdhcmVzLgovLyAgLSBzZXNzTVcgaXMgdGhlIGFjdHVhbCByZXF1ZXN0LWxldmVsIHByb2Nlc3NvciwKLy8gIC0gc2Vzc0RvYyBpcyBhIGhhbmRsZXItbGV2ZWwgd3JhcHBlciB0byBleHBvc2UgZG9jcy4Kc2Vzc01XIDo9IGZ1bmMoaGFuZGxlciBodHRwLkhhbmRsZXIpIGh0dHAuSGFuZGxlciB7CiAgICByZXR1cm4gaHR0cC5IYW5kbGVyRnVuYyhmdW5jKHcgaHR0cC5SZXNwb25zZVdyaXRlciwgciAqaHR0cC5SZXF1ZXN0KSB7CiAgICAgICAgaWYgYywgZXJyIDo9IHIuQ29va2llKCJzZXNzaWQiKTsgZXJyID09IG5pbCB7CiAgICAgICAgICAgIHIgPSByLldpdGhDb250ZXh0KGNvbnRleHQuV2l0aFZhbHVlKHIuQ29udGV4dCgpLCAic2Vzc2lvbklEIiwgYy5WYWx1ZSkpCiAgICAgICAgfQoKICAgICAgICBoYW5kbGVyLlNlcnZlSFRUUCh3LCByKQogICAgfSkKfQoKc2Vzc0RvYyA6PSBuZXRodHRwLkFQSUtleVNlY3VyaXR5TWlkZGxld2FyZShzLk9wZW5BUElDb2xsZWN0b3IsICJVc2VyIiwKICAgICJzZXNzaWQiLCBvYXBpLkluQ29va2llLCAiU2Vzc2lvbiBjb29raWUuIikKCi8vIFNlY3VyaXR5IHNjaGVtYSBpcyBjb25maWd1cmVkIGZvciBhIHNpbmdsZSB0b3AtbGV2ZWwgcm91dGUuCnMuV2l0aChzZXNzTVcsIHNlc3NEb2MpLk1ldGhvZChodHRwLk1ldGhvZEdldCwgIi9yb290LXdpdGgtc2Vzc2lvbiIsIG5ldGh0dHAuTmV3SGFuZGxlcihkdW1teSgpKSkKCi8vIFNlY3VyaXR5IHNjaGVtYSBpcyBjb25maWd1cmVkIG9uIGEgc3ViLXJvdXRlci4Kcy5Sb3V0ZSgiL2RlZXBlci13aXRoLXNlc3Npb24iLCBmdW5jKHIgY2hpLlJvdXRlcikgewogICAgci5Hcm91cChmdW5jKHIgY2hpLlJvdXRlcikgewogICAgICAgIHIuVXNlKHNlc3NNVywgc2Vzc0RvYykKCiAgICAgICAgci5NZXRob2QoaHR0cC5NZXRob2RHZXQsICIvb25lIiwgbmV0aHR0cC5OZXdIYW5kbGVyKGR1bW15KCkpKQogICAgICAgIHIuTWV0aG9kKGh0dHAuTWV0aG9kR2V0LCAiL3R3byIsIG5ldGh0dHAuTmV3SGFuZGxlcihkdW1teSgpKSkKICAgIH0pCn0pCgpgYGAKClNlZSBbZXhhbXBsZV0oLi9fZXhhbXBsZXMvdGFzay1hcGkvaW50ZXJuYWwvaW5mcmEvbmV0aHR0cC9yb3V0ZXIuZ28pLgoKIyMgSGFuZGxlciBTZXR1cAoKSGFuZGxlciBpcyBhIGdlbmVyYWxpemVkIGFkYXB0ZXIgZm9yIHVzZSBjYXNlIGludGVyYWN0b3IsIHNvIHVzdWFsbHkgc2V0dXAgaXMgdHJpdmlhbC4KCmBgYGdvCi8vIEFkZCB1c2UgY2FzZSBoYW5kbGVyIHRvIHJvdXRlci4Kci5NZXRob2QoaHR0cC5NZXRob2RHZXQsICIvaGVsbG8ve25hbWV9IiwgbmV0aHR0cC5OZXdIYW5kbGVyKHUpKQpgYGAKCiMjIEV4YW1wbGUKCkZvciBub24tZ2VuZXJpYyB1c2UgY2FzZSwgc2VlIGFub3RoZXIgW2V4YW1wbGVdKC4vX2V4YW1wbGVzL2Jhc2ljL21haW4uZ28pLgoKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAoJImNvbnRleHQiCgkiZXJyb3JzIgoJImZtdCIKCSJsb2ciCgkibmV0L2h0dHAiCgkidGltZSIKCgkiZ2l0aHViLmNvbS9zd2FnZ2VzdC9vcGVuYXBpLWdvL29wZW5hcGkzMSIKCSJnaXRodWIuY29tL3N3YWdnZXN0L3Jlc3QvcmVzcG9uc2UvZ3ppcCIKCSJnaXRodWIuY29tL3N3YWdnZXN0L3Jlc3Qvd2ViIgoJc3dndWkgImdpdGh1Yi5jb20vc3dhZ2dlc3Qvc3dndWkvdjVlbWIiCgkiZ2l0aHViLmNvbS9zd2FnZ2VzdC91c2VjYXNlIgoJImdpdGh1Yi5jb20vc3dhZ2dlc3QvdXNlY2FzZS9zdGF0dXMiCikKCmZ1bmMgbWFpbigpIHsKCXMgOj0gd2ViLk5ld1NlcnZpY2Uob3BlbmFwaTMxLk5ld1JlZmxlY3RvcigpKQoKCS8vIEluaXQgQVBJIGRvY3VtZW50YXRpb24gc2NoZW1hLgoJcy5PcGVuQVBJU2NoZW1hKCkuU2V0VGl0bGUoIkJhc2ljIEV4YW1wbGUiKQoJcy5PcGVuQVBJU2NoZW1hKCkuU2V0RGVzY3JpcHRpb24oIlRoaXMgYXBwIHNob3djYXNlcyBhIHRyaXZpYWwgUkVTVCBBUEkuIikKCXMuT3BlbkFQSVNjaGVtYSgpLlNldFZlcnNpb24oInYxLjIuMyIpCgoJLy8gU2V0dXAgbWlkZGxld2FyZXMuCglzLldyYXAoCgkJZ3ppcC5NaWRkbGV3YXJlLCAvLyBSZXNwb25zZSBjb21wcmVzc2lvbiB3aXRoIHN1cHBvcnQgZm9yIGRpcmVjdCBnemlwIHBhc3MgdGhyb3VnaC4KCSkKCgkvLyBEZWNsYXJlIGlucHV0IHBvcnQgdHlwZS4KCXR5cGUgaGVsbG9JbnB1dCBzdHJ1Y3QgewoJCUxvY2FsZSBzdHJpbmcgYHF1ZXJ5OiJsb2NhbGUiIGRlZmF1bHQ6ImVuLVVTIiBwYXR0ZXJuOiJeW2Etel17Mn0tW0EtWl17Mn0kIiBlbnVtOiJydS1SVSxlbi1VUyJgCgkJTmFtZSAgIHN0cmluZyBgcGF0aDoibmFtZSIgbWluTGVuZ3RoOiIzImAgLy8gRmllbGQgdGFncyBkZWZpbmUgcGFyYW1ldGVyIGxvY2F0aW9uIGFuZCBKU09OIHNjaGVtYSBjb25zdHJhaW50cy4KCgkJLy8gRmllbGQgdGFncyBvZiB1bm5hbWVkIGZpZWxkcyBhcmUgYXBwbGllZCB0byBwYXJlbnQgc2NoZW1hLgoJCS8vIHRoZXkgYXJlIG9wdGlvbmFsIGFuZCBjYW4gYmUgdXNlZCB0byBkaXNhbGxvdyB1bmtub3duIHBhcmFtZXRlcnMuCgkJLy8gRm9yIG5vbi1ib2R5IHBhcmFtcywgbmFtZSB0YWcgbXVzdCBiZSBwcm92aWRlZCBleHBsaWNpdGx5LgoJCS8vIEUuZy4gaGVyZSBubyB1bmtub3duIGBxdWVyeWAgYW5kIGBjb29raWVgIHBhcmFtZXRlcnMgYWxsb3dlZCwKCQkvLyB1bmtub3duIGBoZWFkZXJgIHBhcmFtcyBhcmUgb2suCgkJXyBzdHJ1Y3R7fSBgcXVlcnk6Il8iIGNvb2tpZToiXyIgYWRkaXRpb25hbFByb3BlcnRpZXM6ImZhbHNlImAKCX0KCgkvLyBEZWNsYXJlIG91dHB1dCBwb3J0IHR5cGUuCgl0eXBlIGhlbGxvT3V0cHV0IHN0cnVjdCB7CgkJTm93ICAgICB0aW1lLlRpbWUgYGhlYWRlcjoiWC1Ob3ciIGpzb246Ii0iYAoJCU1lc3NhZ2Ugc3RyaW5nICAgIGBqc29uOiJtZXNzYWdlImAKCX0KCgltZXNzYWdlcyA6PSBtYXBbc3RyaW5nXXN0cmluZ3sKCQkiZW4tVVMiOiAiSGVsbG8sICVzISIsCgkJInJ1LVJVIjogItCf0YDQuNCy0LXRgiwgJXMhIiwKCX0KCgkvLyBDcmVhdGUgdXNlIGNhc2UgaW50ZXJhY3RvciB3aXRoIHJlZmVyZW5jZXMgdG8gaW5wdXQvb3V0cHV0IHR5cGVzIGFuZCBpbnRlcmFjdGlvbiBmdW5jdGlvbi4KCXUgOj0gdXNlY2FzZS5OZXdJbnRlcmFjdG9yKGZ1bmMoY3R4IGNvbnRleHQuQ29udGV4dCwgaW5wdXQgaGVsbG9JbnB1dCwgb3V0cHV0ICpoZWxsb091dHB1dCkgZXJyb3IgewoJCW1zZywgYXZhaWxhYmxlIDo9IG1lc3NhZ2VzW2lucHV0LkxvY2FsZV0KCQlpZiAhYXZhaWxhYmxlIHsKCQkJcmV0dXJuIHN0YXR1cy5XcmFwKGVycm9ycy5OZXcoInVua25vd24gbG9jYWxlIiksIHN0YXR1cy5JbnZhbGlkQXJndW1lbnQpCgkJfQoKCQlvdXRwdXQuTWVzc2FnZSA9IGZtdC5TcHJpbnRmKG1zZywgaW5wdXQuTmFtZSkKCQlvdXRwdXQuTm93ID0gdGltZS5Ob3coKQoKCQlyZXR1cm4gbmlsCgl9KQoKCS8vIERlc2NyaWJlIHVzZSBjYXNlIGludGVyYWN0b3IuCgl1LlNldFRpdGxlKCJHcmVldGVyIikKCXUuU2V0RGVzY3JpcHRpb24oIkdyZWV0ZXIgZ3JlZXRzIHlvdS4iKQoKCXUuU2V0RXhwZWN0ZWRFcnJvcnMoc3RhdHVzLkludmFsaWRBcmd1bWVudCkKCgkvLyBBZGQgdXNlIGNhc2UgaGFuZGxlciB0byByb3V0ZXIuCglzLkdldCgiL2hlbGxvL3tuYW1lfSIsIHUpCgoJLy8gU3dhZ2dlciBVSSBlbmRwb2ludCBhdCAvZG9jcy4KCXMuRG9jcygiL2RvY3MiLCBzd2d1aS5OZXcpCgoJLy8gU3RhcnQgc2VydmVyLgoJbG9nLlByaW50bG4oImh0dHA6Ly9sb2NhbGhvc3Q6ODAxMS9kb2NzIikKCWlmIGVyciA6PSBodHRwLkxpc3RlbkFuZFNlcnZlKCJsb2NhbGhvc3Q6ODAxMSIsIHMpOyBlcnIgIT0gbmlsIHsKCQlsb2cuRmF0YWwoZXJyKQoJfQp9CgpgYGAKCiFbRG9jdW1lbnRhdGlvbiBQYWdlXSguL19leGFtcGxlcy9iYXNpYy9zY3JlZW4ucG5nKQoKIyMgQWRkaXRpb25hbCBJbnRlZ3JhdGlvbnMKCiogW2BnaXRodWIuY29tL2dvcmlsbGEvbXV4YF0oaHR0cHM6Ly9naXRodWIuY29tL2dvcmlsbGEvbXV4KSwgc2VlIFtleGFtcGxlXSguL2dvcmlsbGFtdXgvZXhhbXBsZV9vcGVuYXBpX2NvbGxlY3Rvcl90ZXN0LmdvKS4KCiMjIFBlcmZvcm1hbmNlIE9wdGltaXphdGlvbgoKSWYgdG9wIHBlcmZvcm1hbmNlIGlzIGNyaXRpY2FsIGZvciB0aGUgc2VydmljZSBvciBwYXJ0aWN1bGFyIGVuZHBvaW50cywgeW91IGNhbiB0cmFkZSAKc2ltcGxpY2l0eSBmb3IgcGVyZm9ybWFuY2UgYnkgaW1wbGVtZW50aW5nIG1hbnVhbCByZXF1ZXN0IGxvYWRlciBvbiBpbnB1dCB0eXBlLgoKYGBgZ28KZnVuYyAoaSAqbXlJbnB1dCkgTG9hZEZyb21IVFRQUmVxdWVzdChyICpodHRwLlJlcXVlc3QpIChlcnIgZXJyb3IpIHsKCWkuSGVhZGVyID0gci5IZWFkZXIuR2V0KCJYLUhlYWRlciIpCgoJcmV0dXJuIG5pbAp9CmBgYAoKSWYgYHJlcXVlc3QuTG9hZGVyYCBpcyBpbXBsZW1lbnRlZCwgaXQgd2lsbCBiZSBjYWxsZWQgaW5zdGVhZCBvZiBib3RoIGF1dG9tYXRpYyBkZWNvZGluZyBhbmQgdmFsaWRhdGlvbi4KCkNoZWNrIGFkdmFuY2VkIFtleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdC9ibG9iL3YwLjIuMjkvX2V4YW1wbGVzL2FkdmFuY2VkLWdlbmVyaWMvanNvbl9ib2R5X21hbnVhbC5nbyNMNTgpLgoKVG8gZnVydGhlciBpbXByb3ZlIHBlcmZvcm1hbmNlIHlvdSBtYXkgdHJ5IHRvIHVzZSBgZmFzdGh0dHBgIGluc3RlYWQgb2YgYG5ldC9odHRwYCB3aXRoIApbYHJlc3QtZmFzdGh0dHBgXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdC1mYXN0aHR0cCkgZm9yay4KCiMjIFZlcnNpb25pbmcKClRoaXMgcHJvamVjdCBhZGhlcmVzIHRvIFtTZW1hbnRpYyBWZXJzaW9uaW5nXShodHRwczovL3NlbXZlci5vcmcvI3NlbWFudGljLXZlcnNpb25pbmctMjAwKS4KCkJlZm9yZSB2ZXJzaW9uIGAxLjAuMGAsIGJyZWFraW5nIGNoYW5nZXMgYXJlIHRhZ2dlZCB3aXRoIGBNSU5PUmAgYnVtcCwgZmVhdHVyZXMgYW5kIGZpeGVzIGFyZSB0YWdnZWQgd2l0aCBgUEFUQ0hgIGJ1bXAuCkFmdGVyIHZlcnNpb24gYDEuMC4wYCwgYnJlYWtpbmcgY2hhbmdlcyBhcmUgdGFnZ2VkIHdpdGggYE1BSk9SYCBidW1wLgoKQnJlYWtpbmcgY2hhbmdlcyBhcmUgZGVzY3JpYmVkIGluIFtVUEdSQURFLm1kXSguL1VQR1JBREUubWQpLgoKIyMgQWR2YW5jZWQgVXNhZ2UKCltBZHZhbmNlZCBVc2FnZV0oLi9BRFZBTkNFRC5tZCkK readmeEtag: '"321f338627aeeb2432c1e438292b05b7b43a3b39"' readmeLastModified: Sat, 24 May 2025 08:40:37 GMT repositoryId: 306110879 description: Web services with OpenAPI and JSON Schema done quick in Go created: '2020-10-21T18:16:16Z' updated: '2026-01-21T12:58:40Z' language: Go archived: false stars: 476 watchers: 5 forks: 27 owner: swaggest logo: https://avatars.githubusercontent.com/u/19609628?v=4 license: MIT repoEtag: '"4ef87cd1db3c48dccd9b2d49e06cfd9bd296cd208c9f164907b46507f1693f67"' repoLastModified: Wed, 21 Jan 2026 12:58:40 GMT foundInMaster: true id: ecd2fef7bb4079bda209503f9fb9820b - source: openapi3 tags repository: https://github.com/endpoints4s/endpoints4s v3: true id: 8eb71a5192e00663da80338fa967ab89 repositoryMetadata: base64Readme: >- IyBlbmRwb2ludHM0cyAKClshW0dpdHRlcl0oaHR0cHM6Ly9iYWRnZXMuZ2l0dGVyLmltLy5zdmcpXShodHRwczovL2dpdHRlci5pbS9lbmRwb2ludHM0cy9lbmRwb2ludHM0cykKWyFbY29kZWNvdi5pb10oaHR0cDovL2NvZGVjb3YuaW8vZ2l0aHViL2VuZHBvaW50czRzL2VuZHBvaW50czRzL2NvdmVyYWdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cDovL2NvZGVjb3YuaW8vZ2l0aHViL2VuZHBvaW50czRzL2VuZHBvaW50czRzP2JyYW5jaD1tYXN0ZXIpClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL2VuZHBvaW50czRzL2VuZHBvaW50czRzLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL2VuZHBvaW50czRzL2VuZHBvaW50czRzKQoKCmVuZHBvaW50czRzIGlzIGEgU2NhbGEgbGlicmFyeSBmb3IgZGVmaW5pbmcgY29tbXVuaWNhdGlvbiBwcm90b2NvbHMgb3ZlciBIVFRQIGJldHdlZW4KYXBwbGljYXRpb25zLgoKU2VlIHRoZSBbZG9jdW1lbnRhdGlvbl0oaHR0cDovL2VuZHBvaW50czRzLmdpdGh1Yi5pbykgdG8gbGVhcm4gbW9yZS4KCiMjIFJ1bm5pbmcgdGhlIEV4YW1wbGVzCgp+fn4KJCBzYnQKPiArKzIuMTMuMgo+IDxleGFtcGxlPi9yZVN0YXJ0Cn5+fgoKV2hlcmUgYDxleGFtcGxlPmAgY2FuIGJlIGVpdGhlcgpbYGV4YW1wbGUtY3Fyc2BdKGRvY3VtZW50YXRpb24vZXhhbXBsZXMvY3FycyksCltgZXhhbXBsZS1kb2N1bWVudGVkYF0oZG9jdW1lbnRhdGlvbi9leGFtcGxlcy9kb2N1bWVudGVkKQpvciBbYGV4YW1wbGUtcXVpY2tzdGFydC1zZXJ2ZXJgXShkb2N1bWVudGF0aW9uL2V4YW1wbGVzL3F1aWNrc3RhcnQpLgoKQW5kIHRoZW4gYnJvd3NlIGh0dHA6Ly9sb2NhbGhvc3Q6OTAwMC4KCiMjIENvbnRyaWJ1dGluZwoKU2VlIHRoZSBbb3BlbiBpc3N1ZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9lbmRwb2ludHM0cy9lbmRwb2ludHM0cy9pc3N1ZXMpLgoKIyMgU3BvbnNvcnMKCklmIHlvdSBmaW5kIGVuZHBvaW50czRzIHVzZWZ1bCwgcGxlYXNlIGNvbnNpZGVyIGFza2luZyB5b3VyIGNvbXBhbnkgdG8gc3VwcG9ydCB0aGlzIHByb2plY3QgYnkgW2JlY29taW5nIGEgc3BvbnNvcl0oaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vZW5kcG9pbnRzNHMpLiBZb3VyIGRvbmF0aW9ucyB3aWxsIGhlbHAgdGhlIHByb2plY3Qgc3RheSB1cCB0byBkYXRlIGFuZCBmdW5kIHdvcmsgb24gaW1wb3J0YW50IFtpc3N1ZXMgb3IgZmVhdHVyZSByZXF1ZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL2VuZHBvaW50czRzL2VuZHBvaW50czRzL2lzc3Vlcz9xPWlzJTNBaXNzdWUraXMlM0FvcGVuK2xhYmVsJTNBYm91bnR5KS4KCiMjIFN1cHBvcnQKCltKZXRCcmFpbnNdKGh0dHBzOi8vd3d3LmpldGJyYWlucy5jb20vP2Zyb209c2NhbGEtZW5kcG9pbnRzKSBvZmZlcnMgb25lIE9wZW4gU291cmNlIGxpY2Vuc2UuCgojIyBMaWNlbnNlCgpUaGlzIGNvbnRlbnQgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFtNSVQgTGljZW5zZV0oaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocCkuCg== readmeEtag: '"c10e79373f051a7ce3741a57ec29dd09a4acf1d8"' readmeLastModified: Tue, 21 May 2024 17:47:22 GMT repositoryId: 57041055 description: >- Describe HTTP endpoints in Scala and derive clients, servers, and documentation created: '2016-04-25T12:48:00Z' updated: '2026-01-15T22:38:22Z' language: Scala archived: false stars: 416 watchers: 10 forks: 95 owner: endpoints4s logo: https://avatars.githubusercontent.com/u/67427463?v=4 license: MIT repoEtag: '"7d2f062d1196286e096bdcddca48a4ecb424ddc5b567d9f8d904a91511b69e98"' repoLastModified: Thu, 15 Jan 2026 22:38:22 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/thomaxxl/safrs v3: true repositoryMetadata: base64Readme: >- WyFbTGF0ZXN0IFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3NhZnJzLnN2ZyldKGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2FmcnMvKQpbIVtTdXBwb3J0ZWQgUHl0aG9uIHZlcnNpb25zXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy9zYWZycy5zdmcpXShodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NhZnJzLykKWyFbTGljZW5zZTogR1BMIHYzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtR1BMdjMtYmx1ZS5zdmcpXShodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjApCiFbUHl0aG9uIGFwcGxpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vdGhvbWF4eGwvc2FmcnMvd29ya2Zsb3dzL1B5dGhvbiUyMGFwcGxpY2F0aW9uL2JhZGdlLnN2ZykKWyFbQ29kYWN5IEJhZGdlXShodHRwczovL2FwcC5jb2RhY3kuY29tL3Byb2plY3QvYmFkZ2UvR3JhZGUvZGUxMmM1MDcxN2U4NDg3ZGI1ZGNjMzE5MDdlNjI3ZjcpXShodHRwczovL3d3dy5jb2RhY3kuY29tL2doL3Rob21heHhsL3NhZnJzL2Rhc2hib2FyZD91dG1fc291cmNlPWdpdGh1Yi5jb20mYW1wO3V0bV9tZWRpdW09cmVmZXJyYWwmYW1wO3V0bV9jb250ZW50PXRob21heHhsL3NhZnJzKQpbIVtEb3dubG9hZHNdKGh0dHBzOi8vcGVweS50ZWNoL2JhZGdlL3NhZnJzKV0oaHR0cHM6Ly9wZXB5LnRlY2gvcHJvamVjdC9zYWZycykKCiMgU0FGUlM6IFB5dGhvbiBPcGVuQVBJICYgSlNPTjpBUEkgRnJhbWV3b3JrCgohW2RlbW9dKGRvY3MvaW1hZ2VzL3NhZnJzLmdpZikKCjxhIGNsYXNzPSJtay10b2NsaWZ5IiBpZD0idGFibGUtb2YtY29udGVudHMiPjwvYT4KCi0gW0ludHJvZHVjdGlvbl0oI292ZXJ2aWV3KQotIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCi0gW0pTT046QVBJIEludGVyZmFjZV0oI2h0dHAtbWV0aG9kcykKLSBbUmVzb3VyY2UgT2JqZWN0c10oI3Jlc291cmNlLW9iamVjdHMpCi0gW1JlbGF0aW9uc2hpcHNdKCNyZWxhdGlvbnNoaXBzKQotIFtNZXRob2RzXSgjbWV0aG9kcykKICAgIC0gW0N1c3RvbSBNZXRob2RzXSgjY3VzdG9tLW1ldGhvZHMpCiAgICAtIFtDbGFzcyBNZXRob2RzXSgjY2xhc3MtbWV0aG9kcykKLSBbSW5pdGlhbGl6YXRpb25dKCNpbml0aWFsaXphdGlvbikKLSBbRW5kcG9pbnQgTmFtaW5nXSgjZW5kcG9pbnQtbmFtaW5nKQotIFtDb25maWd1cmF0aW9uXSgjY29uZmlndXJhdGlvbikKLSBbRXhwb3NpbmcgRXhpc3RpbmcgRGF0YWJhc2VzXSgjZXhwb3NlLWV4aXN0aW5nKQotIFtNb3JlIEV4YW1wbGVzIGFuZCBVc2UgQ2FzZXNdKCNtb3JlLWV4YW1wbGVzLWFuZC11c2UtY2FzZXMpCi0gW0FkdmFuY2VkIEZ1bmN0aW9uYWxpdHldKCNhZHZhbmNlZC11c2FnZSkKICAgIC0gW0ZpbHRlcmluZ10oI2ZpbHRlcmluZykKLSBbQ3VzdG9taXphdGlvbl0oI2N1c3RvbWl6YXRpb24pCiAgICAtIFtDdXN0b20gU2VyaWFsaXphdGlvbl0oI2N1c3RvbS1zZXJpYWxpemF0aW9uKQogICAgLSBbRXhjbHVkaW5nIEF0dHJpYnV0ZXMgYW5kIFJlbGF0aW9uc2hpcHNdKCNleGNsdWRpbmctYXR0cnMtcmVscykKICAgIC0gW0hUVFAgRGVjb3JhdG9yc10oI2h0dHAtZGVjb3JhdG9ycykKICAgIC0gW0FQSSBNZXRob2RzXSgjYXBpLW1ldGhvZHMpCiAgICAtIFtDdXN0b20gU3dhZ2dlcl0oI2N1c3RvbS1zd2FnZ2VyKQogICAgLSBbQ2xhc3NlcyBXaXRob3V0IFNRTEFsY2hlbXkgTW9kZWxzXSgjQ2xhc3Nlcy1XaXRob3V0LU1vZGVscykKCjxhIGNsYXNzPSJtay10b2NsaWZ5IiBpZD0ib3ZlcnZpZXciPjwvYT4KIyMgSW50cm9kdWN0aW9uCgpTQUZSUyBleHBvc2VzIFNRTEFsY2hlbXkgZGF0YWJhc2UgbW9kZWxzIGFzIGEgW0pTT046QVBJXShodHRwczovL2pzb25hcGkub3JnKSB3ZWJzZXJ2aWNlIGFuZCBnZW5lcmF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgW3N3YWdnZXIvT3BlbkFQSV0oaHR0cHM6Ly9zd2FnZ2VyLmlvLykuCgpEb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgW3dpa2ldKGh0dHBzOi8vZ2l0aHViLmNvbS90aG9tYXh4bC9zYWZycy93aWtpKS4KCl9fV2UgY3JlYXRlZCBhIHNlcnZpY2UgdG8gZ2VuZXJhdGUgQVBJcyB1c2luZyBHZW5BSV9fLCBjaGVjayBpdCBvdXQgW0hFUkVdKGh0dHBzOi8vYXBpZmFicmljLmFpKSEKCl9fQSBbTElWRSBERU1PXShodHRwczovL3Rob21heHhsLnB5dGhvbmFueXdoZXJlLmNvbSkgaXMgYXZhaWxhYmxlX18sIHdoZXJlIG11Y2ggb2YgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBzaW1wbGUgW2V4YW1wbGVdKGV4YW1wbGVzL2RlbW9fcHl0aG9uYW55d2hlcmVfY29tLnB5KS4KCgo8YSBjbGFzcz0ibWstdG9jbGlmeSIgaWQ9Imluc3RhbGxhdGlvbiI+PC9hPgojIyBJbnN0YWxsYXRpb24KClNBRlJTIGNhbiBiZSBpbnN0YWxsZWQgYXMgYSBbcGlwIHBhY2thZ2VdKGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2FmcnMvKSBvciBieSBkb3dubG9hZGluZyB0aGUgbGF0ZXN0IHZlcnNpb24gZnJvbSBnaXRodWIsIGZvciBleGFtcGxlOgoKYGBgYmFzaApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3Rob21heHhsL3NhZnJzCmNkIHNhZnJzCnBpcCBpbnN0YWxsIC4KYGBgCgpPbmNlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGluc3RhbGxlZCwgdGhlIFtleGFtcGxlc10oZXhhbXBsZXMpIGNhbiBiZSBzdGFydGVkLCBmb3IgZXhhbXBsZQpgYGAKcHl0aG9uIGV4YW1wbGVzL2RlbW9fcmVsYXRpb25zaGlwLnB5ICJ5b3VyLWludGVyZmFjZS1pcCIKYGBgCgo8YSBjbGFzcz0ibWstdG9jbGlmeSIgaWQ9Imh0dHAtbWV0aG9kcyI+PC9hPgojIyBKU09OOkFQSSBJbnRlcmZhY2UKCkV4cG9zZWQgcmVzb3VyY2Ugb2JqZWN0cyBjYW4gYmUgcXVlcmllZCB1c2luZyB0aGUgW0pTT046QVBJIGZvcm1hdF0oaHR0cDovL2pzb25hcGkub3JnL2Zvcm1hdC8pLiBUaGUgQVBJIHN1cHBvcnRzIGZvbGxvd2luZyBIVFRQIG9wZXJhdGlvbnM6CgotIEdFVCA6IFJldHJpZXZlIGFuIG9iamVjdCBvciBhIGxpc3Qgb2Ygb2JqZWN0cwotIFBBVENIIDogVXBkYXRlIGFuIG9iamVjdC4KLSBERUxFVEU6IERlbGV0ZSBhbiBvYmplY3QuCi0gUE9TVCA6IENyZWF0ZSBhbiBvYmplY3QuIAoKUGxlYXNlIGNoZWNrIHRoZSBbSlNPTjpBUEkgc3BlY10oaHR0cDovL2pzb25hcGkub3JnL2Zvcm1hdC8pIGZvciBtb3JlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIApZb3UgY2FuIGFsc28gdHJ5IG91dCB0aGUgaW50ZXJmYWNlIGluIHRoZSBbbGl2ZSBkZW1vXShodHRwOi8vdGhvbWF4eGwucHl0aG9uYW55d2hlcmUuY29tL2FwaSkuCgo8YSBjbGFzcz0ibWstdG9jbGlmeSIgaWQ9InJlc291cmNlLW9iamVjdHMiPjwvYT4KIyMgUmVzb3VyY2UgT2JqZWN0cwoKRGF0YWJhc2Ugb2JqZWN0cyBhcmUgaW1wbGVtZW50ZWQgYXMgc3ViY2xhc3NlcyBvZiB0aGUgU0FGUlNCYXNlIGFuZCBTUUxBbGNoZW15IG1vZGVsIGNsYXNzZXMuIFRoZSBTUUxBbGNoZW15IGNvbHVtbnMgYXJlIHNlcmlhbGl6ZWQgdG8gSlNPTiB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFJFU1QgQVBJIGlzIGludm9rZWQuIAoKRm9sbG93aW5nIGV4YW1wbGUgW2FwcF0oZXhhbXBsZXMvZGVtb19yZWxhdGlvbnNoaXAucHkpIGlsbHVzdHJhdGVzIGhvdyB0aGUgQVBJIGlzIGJ1aWx0IGFuZCBkb2N1bWVudGVkOgoKYGBgcHl0aG9uCmNsYXNzIFVzZXIoU0FGUlNCYXNlLCBkYi5Nb2RlbCk6CiAgICAiIiIKICAgICAgICBkZXNjcmlwdGlvbjogVXNlciBkZXNjcmlwdGlvbgogICAgIiIiCgogICAgX190YWJsZW5hbWVfXyA9ICJVc2VycyIKICAgIGlkID0gZGIuQ29sdW1uKGRiLkludGVnZXIsIHByaW1hcnlfa2V5PVRydWUpCiAgICBuYW1lID0gZGIuQ29sdW1uKGRiLlN0cmluZykKICAgIGVtYWlsID0gZGIuQ29sdW1uKGRiLlN0cmluZykKCmBgYAoKVGhlIFVzZXIgY2xhc3MgaXMgaW1wbGVtZW50ZWQgYXMgYSBzdWJjbGFzcyBvZiAKLSBkYi5Nb2RlbDogU1FMQWxjaGVteSBiYXNlCi0gU0FGUlNCYXNlOiBJbXBsZW1lbnRzIEpTT04gc2VyaWFsaXphdGlvbiBmb3IgdGhlIG9iamVjdCBhbmQgZ2VuZXJhdGVzIChzd2FnZ2VyKSBBUEkgZG9jdW1lbnRhdGlvbgoKVGhpcyBVc2VyIG9iamVjdCBpcyB0aGVuIGV4cG9zZWQgdGhyb3VnaCB0aGUgd2ViIGludGVyZmFjZSB1c2luZyB0aGUgQXBpIG9iamVjdAoKYGBgcHl0aG9uIAphcGkuZXhwb3NlX29iamVjdChVc2VyKQpgYGAgCgpUaGUgVXNlciBvYmplY3QgUkVTVCBtZXRob2RzIGFyZSBhdmFpbGFibGUgb24gL1VzZXIsIHRoZSBzd2FnZ2VyIHNjaGVtYSBpcyBhdmFpbGFibGUgb24gL2FwaS9zd2FnZ2VyLmpzb24gYW5kIHRoZSBVSSBpcyBhdmFpbGFibGUgb24gL2FwaS86CiFbVXNlciBTd2FnZ2VyXShkb2NzL2ltYWdlcy9VU0VSX3N3YWdnZXIucG5nKQoKCjxhIGNsYXNzPSJtay10b2NsaWZ5IiBpZD0icmVsYXRpb25zaGlwcyI+PC9hPgojIyBSZWxhdGlvbnNoaXBzCgpEYXRhYmFzZSBvYmplY3Qgc3VjaCBhcyB0aGUgVXNlciBjbGFzcyBmcm9tIHRoZSBkZW1vLnB5IGV4YW1wbGUgY2FuIGJlIGV4dGVuZGVkIHRvIGluY2x1ZGUgcmVsYXRpb25zaGlwcyB3aXRoIG90aGVyIG9iamVjdHMuIFRoZSBkZW1vX3JlbGF0aW9uc2hpcC5weSBjb250YWlucyBmb2xsb3dpbmcgZXh0ZW5zaW9uIG9mIHRoZSBVc2VyIGNsYXNzIHdoZXJlIGEgcmVsYXRpb25zaGlwIHdpdGggdGhlIEJvb2sgY2xhc3MgaXMgaW1wbGVtZW50ZWQ6CgpgYGBweXRob24KY2xhc3MgVXNlcihTQUZSU0Jhc2UsIGRiLk1vZGVsKToKICAgICcnJwogICAgICAgIGRlc2NyaXB0aW9uOiBVc2VyIGRlc2NyaXB0aW9uCiAgICAnJycKICAgIF9fdGFibGVuYW1lX18gPSAnVXNlcnMnCiAgICBpZCA9IGRiLkNvbHVtbihkYi5TdHJpbmcsIHByaW1hcnlfa2V5PVRydWUpCiAgICBuYW1lID0gZGIuQ29sdW1uKGRiLlN0cmluZywgZGVmYXVsdD0nJykKICAgIGVtYWlsID0gZGIuQ29sdW1uKGRiLlN0cmluZywgZGVmYXVsdD0nJykKICAgIGJvb2tzID0gZGIucmVsYXRpb25zaGlwKCdCb29rJywgYmFja19wb3B1bGF0ZXM9InVzZXIiKQouLi4KYGBgIAoKQSBtYW55LXRvLW9uZSBkYXRhYmFzZSBhc3NvY2lhdGlvbiBpcyBkZWNsYXJlZCBieSB0aGUgYmFja19wb3B1bGF0ZXMgcmVsYXRpb25zaGlwIGFyZ3VtZW50LgpUaGUgQm9vayBjbGFzcyBpcyBzaW1wbHkgYW5vdGhlciBzdWJjbGFzcyBvZiBTQUZSU0Jhc2UgYW5kIGRiLk1vZGVsLCBzaW1pbGFyIHRvIHRoZSBwcmV2aW91cyBVc2VyIGNsYXNzOgoKYGBgcHl0aG9uCmNsYXNzIEJvb2soU0FGUlNCYXNlLCBkYi5Nb2RlbCk6CiAgICAnJycKICAgICAgICBkZXNjcmlwdGlvbjogQm9vayBkZXNjcmlwdGlvbgogICAgJycnCiAgICBfX3RhYmxlbmFtZV9fID0gJ0Jvb2tzJwogICAgaWQgPSBkYi5Db2x1bW4oZGIuU3RyaW5nLCBwcmltYXJ5X2tleT1UcnVlKQogICAgbmFtZSA9IGRiLkNvbHVtbihkYi5TdHJpbmcsIGRlZmF1bHQ9JycpCiAgICB1c2VyX2lkID0gZGIuQ29sdW1uKGRiLlN0cmluZywgZGIuRm9yZWlnbktleSgnVXNlcnMuaWQnKSkKICAgIHVzZXIgPSBkYi5yZWxhdGlvbnNoaXAoJ1VzZXInLCBiYWNrX3BvcHVsYXRlcz0nYm9va3MnKQpgYGAKClRoZSBVc2VyLmJvb2sgcmVsYXRpb25zaGlwIGNhbiBiZSBxdWVyaWVkIGluIHRoZSBBUEkgdGhyb3VnaCB0aGUgZm9sbG93aW5nIGVuZHBvaW50czoKIVtSZWxhdGlvbnMgU3dhZ2dlcl0oZG9jcy9pbWFnZXMvUmVsYXRpb25zX3N3YWdnZXIucG5nKQoKLSBQT1NUIGFkZHMgYW4gaXRlbSB0byB0aGUgcmVsYXRpb25zaGlwCi0gREVMRVRFIHJlbW92ZXMgYW4gaXRlbSBmcm9tIHRoZSByZWxhdGlvbnNoaXAKLSBHRVQgcmV0cmlldmVzIGEgbGlzdCBvZiBpdGVtIGlkcwoKVGhlIHJlbGF0aW9uc2hpcCBBUEkgZW5kcG9pbnRzIHdvcmsgc2ltaWxhcmx5IGZvciBvbmUtdG8tbWFueSByZWxhdGlvbnNoaXBzLgoKUmVsYXRpb25zaGlwIG1lbWJlcnMgY2FuIGFsc28gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlIHdoZW4gcXVlcnlpbmcgYW4gaW5zdGFuY2UsIGJ5IHNwZWNpZnlpbmcgdGhlIHJlbGF0aW9uc2hpcCBuYW1lcyBhcyBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IGluIHRoZSBgaW5jbHVkZWAgcXVlcnkgYXJndW1lbnQuCgohW3JlbGF0aW9uc2hpcCBpbmNsdWRlIHN3YWdnZXJdKGRvY3MvaW1hZ2VzL3JlbF9pbmNsdWRlLlBORykKCkZvciBleGFtcGxlLCB0byByZXRyaWV2ZSBhbGwgaXRlbXMgaW4gdGhlIGBib29rc19yZWFkYCByZWxhdGlvbnNoaXAgZnJvbSB0aGUgUGVvcGxlIGVuZHBvaW50LCB5b3UgbWF5IGFkZCB0aGUgYGluY2x1ZGU9Ym9va3NfcmVhZGAgdXJsIHBhcmFtZXRlcgoKCmh0dHA6Ly90aG9tYXh4bC5weXRob25hbnl3aGVyZS5jb20vYXBpL1Blb3BsZS8/aW5jbHVkZT1ib29rc19yZWFkCgpUbyByZXRyaWV2ZSBuZXN0ZWQgcmVsYXRpb25zaGlwIGl0ZW1zLCB5b3UgY2FuIHNwZWNpZnkgdGhlIG5lc3RlZCByZWxhdGlvbnNoaXAgbmFtZSBhZnRlciB0aGUgJy4nLCB0byByZXRyaWV2ZSB0aGUgYXV0aG9ycyBvZiB0aGUgYm9va3NfcmVhZCBpbnN0YW5jZXMgZm9yIGluc3RhbmNlLCB5b3UgY2FuIHVzZQoKaHR0cDovL3Rob21heHhsLnB5dGhvbmFueXdoZXJlLmNvbS9hcGkvUGVvcGxlLz9pbmNsdWRlPWJvb2tzX3JlYWQuYXV0aG9yCgo8YSBjbGFzcz0ibWstdG9jbGlmeSIgaWQ9Im1ldGhvZHMiPjwvYT4KIyMgTWV0aG9kcwoKPGEgY2xhc3M9Im1rLXRvY2xpZnkiIGlkPSJjdXN0b20tbWV0aG9kcyI+PC9hPgojIyMgQ3VzdG9tIE1ldGhvZHMKClNhZnJzIGFsbG93cyB0aGUgdXNlciB0byBpbXBsZW1lbnQgY3VzdG9tIG1ldGhvZHMgb24gdGhlIGV4cG9zZWQgb2JqZWN0cy4gVGhpcyBtZXRob2RzIGNhbiBiZSBpbnZva2VkIHRocm91Z2ggdGhlIGpzb24gQVBJIGJ5IHNlbmRpbmcgYW4gSFRUUCBQT1NUIHJlcXVlc3QgdG8gdGhlIG1ldGhvZCBlbmRwb2ludApUaGUgZm9sbG93aW5nIGV4YW1wbGUgaW1wbGVtZW50cyBhICJzZW5kX21haWwiIG1ldGhvZCBmcm8gZXhhbXBsZToKCmBgYHB5dGhvbgpjbGFzcyBVc2VyKFNBRlJTQmFzZSwgZGIuTW9kZWwpOgogICAgJycnCiAgICAgICAgZGVzY3JpcHRpb246IFVzZXIgZGVzY3JpcHRpb24KICAgICcnJwogICAgX190YWJsZW5hbWVfXyA9ICdVc2VycycKICAgIGlkID0gQ29sdW1uKFN0cmluZywgcHJpbWFyeV9rZXk9VHJ1ZSkKICAgIG5hbWUgPSBDb2x1bW4oU3RyaW5nLCBkZWZhdWx0PScnKQogICAgZW1haWwgPSBDb2x1bW4oU3RyaW5nLCBkZWZhdWx0PScnKQoKICAgICMgRm9sbG93aW5nIG1ldGhvZCBpcyBleHBvc2VkIHRocm91Z2ggdGhlIFJFU1QgQVBJIAogICAgIyBUaGlzIG1lYW5zIGl0IGNhbiBiZSBpbnZva2VkIHdpdGggYSBIVFRQIFBPU1QKICAgIEBqc29uYXBpX3JwYyhodHRwX21ldGhvZHM9WydQT1NUJywnR0VUJ10pCiAgICBkZWYgc2VuZF9tYWlsKHNlbGYsIGVtYWlsKToKICAgICAgICAnJycKICAgICAgICAgICAgZGVzY3JpcHRpb24gOiBTZW5kIGFuIGVtYWlsCiAgICAgICAgICAgIGFyZ3M6CiAgICAgICAgICAgICAgICBlbWFpbDoKICAgICAgICAgICAgICAgICAgICB0eXBlIDogc3RyaW5nIAogICAgICAgICAgICAgICAgICAgIGV4YW1wbGUgOiB0ZXN0IGVtYWlsCiAgICAgICAgJycnCiAgICAgICAgY29udGVudCA9ICdNYWlsIHRvIHt9IDoge31cbicuZm9ybWF0KHNlbGYubmFtZSwgZW1haWwpCiAgICAgICAgcmV0dXJuIHsgJ3Jlc3VsdCcgOiAnc2VudCB7fScuZm9ybWF0KGNvbnRlbnQpfQoKYGBgCgpUaGlzIG1ldGhvZCBzaG93cyB1cCBpbiB0aGUgc3dhZ2dlciBpbnRlcmZhY2U6CgohW01ldGhvZCBTd2FnZ2VyXShkb2NzL2ltYWdlcy9tZXRob2Rfc3dhZ2dlci5QTkcpCgpUaGUgYGBgc2VuZF9tYWlsYGBgIG1ldGhvZCBpcyBkb2N1bWVudGVkIHdpdGggdGhlIGBgYGpzb25hcGlfcnBjYGBgIGRlY29yYXRvci4gClRoaXMgZGVjb3JhdG9yIGdlbmVyYXRlcyBhIHNjaGVtYSBiYXNlZCBvbiB0aGUgZnVuY3Rpb24gZG9jdW1lbnRhdGlvbi4gVGhpcyBkb2N1bWVudGF0aW9uIGNvbnRhaW5zIHlhbWwgc3BlY2lmaWNhdGlvbiBvZiB0aGUgQVBJIHdoaWNoIGlzIHVzZWQgYnkgdGhlIHN3YWdnZXIgVUkuIAoKW2FwaV9tZXRob2RzLnB5XShzYWZycy9hcGlfbWV0aG9kcy5weSkgY29udGFpbnMgYSBjb3VwbGUgb2YgbWV0aG9kcyB0aGF0IGNhbiBiZSB1c2VkIGluIHlvdXIgbW9kZWxzLgoKVGhlIHlhbWwgc3BlY2lmaWNhdGlvbiBoYXMgdG8gYmUgaW4gdGhlIGZpcnN0IHBhcnQgb2YgdGhlIGZ1bmN0aW9uIGFuZCBjbGFzcyBjb21tZW50cy4gVGhlc2UgcGFydHMgYXJlIGRlbGltaXRlZCBieSBmb3VyIGRhc2hlcyAoIi0tLS0iKSAuIFRoZSByZXN0IG9mIHRoZSBjb21tZW50IG1heSBjb250YWluIGFkZGl0aW9uYWwgZG9jdW1lbnRhdGlvbi4KCjxhIGNsYXNzPSJtay10b2NsaWZ5IiBpZD0iY2xhc3MtbWV0aG9kcyI+PC9hPgojIyMgQ2xhc3MgTWV0aG9kcwoKVHdvIGNsYXNzLWxldmVsIG1ldGhvZHMgaGF2ZSBiZWVuIGRlZmluZWQgdG8gZmFjaWxpdGF0ZSBvYmplY3QgcmV0cmlldmFsOgoKKiAqKmxvb2t1cCoqIDogcmV0cmlldmUgYSBsaXN0IG9mIG9iamVjdHMgdGhhdCBtYXRjaCB0aGUgYXJndW1lbnQgbGlzdC4gRm9yIGV4YW1wbGUsIGZvbGxvd2luZyBIVFRQIFBPU1QgcmVxdWVzdCB0byBhIGNvbnRhaW5lciB3aWxsIHJldHJpZXZlIGEgbGlzdCBvZiBpdGVtc3doZXJlIHRoZSBuYW1lIGlzICJ0aG9tYXMiCmBgYGpzb24KewogICJtZXRob2QiOiAibG9va3VwIiwKICAiYXJncyI6IHsKICAgICJuYW1lIjogInRob21hcyIKICB9Cn0KYGBgCgoqICoqZ2V0X2xpc3QqKiA6IHJldHJpZXZlIGEgbGlzdCBvZiB0aGUgaXRlbXMgd2l0aCB0aGUgc3BlY2lmaWVkIElEJ3MKCjxhIGNsYXNzPSJtay10b2NsaWZ5IiBpZD0iaW5pdGlhbGl6YXRpb24iPjwvYT4KIyMgQXBwbGljYXRpb24gSW5pdGlhbGl6YXRpb24KVGhlIEFQSSBjYW4gYmUgaW5pdGlhbGl6ZWQgbGlrZSB0aGlzOgpgYGBweXRob24KYXBpID0gU2FmcnNBcGkoYXBwLCBob3N0PUhPU1QsIHBvcnQ9UE9SVCwgcHJlZml4PUFQSV9QUkVGSVgpCmBgYApUaGVuIHlvdSBjYW4gZXhwb3NlIG9iamVjdHMgd2l0aCBgZXhwb3NlX29iamVjdGAKYGBgcHl0aG9uCmFwaS5leHBvc2Vfb2JqZWN0KFVzZXIpICAgIApgYGAKCkFuIGV4YW1wbGUgdGhhdCB1c2VzIHRoZSBmbGFzayBhcHAgZmFjdG9yeSBwYXR0ZXJuIGlzIGltcGxlbWVudCBpbiBbZXhhbXBsZXMvbWluaV9hcHAucHldKGV4YW1wbGVzL21pbmlfYXBwLnB5KQoKPGEgY2xhc3M9Im1rLXRvY2xpZnkiIGlkPSJlbmRwb2ludC1uYW1pbmciPjwvYT4KIyMgRW5kcG9pbnQgTmFtaW5nCkFzIGNhbiBiZSBzZWVuIGluIHRoZSBzd2FnZ2VyIFVJOgotIHRoZSBlbmRwb2ludCBjb2xsZWN0aW9uIHBhdGggbmFtZXMgYXJlIHRoZSBTUUxBbGNoZW15IFxfXF90YWJsZW5hbWVcX1xfIHByb3BlcnRpZXMgKGUuZy4gL1VzZXJzICkKLSB0aGUgcGFyYW1ldGVyIG5hbWVzIGFyZSBkZXJpdmVkIGZyb20gdGhlIFNBRlJTQmFzZSBjbGFzcyBuYW1lcyAoZS5nLiB7VXNlcklkfSApCi0gdGhlIHRoZSByZWxhdGlvbnNoaXAgbmFtZXMgYXJlIHRoZSBTQUZSU0Jhc2UgY2xhc3MgcmVsYXRpb25zaGlwIG5hbWVzIChlLmcgL2Jvb2tzICkKVGhlIFVSTCBwYXRoIGZvcm1hdCBpcyBbY29uZmlndXJhYmxlXSgjY29uZmlndXJhdGlvbikKCjxhIGNsYXNzPSJtay10b2NsaWZ5IiBpZD0iY29uZmlndXJhdGlvbiI+PC9hPgojIyBDb25maWd1cmF0aW9uCgpTb21lIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBjYW4gYmUgc2V0IGluIFtjb25maWcucHldKHNhZnJzL2NvbmZpZy5weSk6Ci0gVVNFX0FQSV9NRVRIT0RTOiBzZXQgdGhpcyB0byBmYWxzZSBpbiBjYXNlIHlvdSB3YW50IHRvIGRpc2FibGUgdGhlIGBqc29uYXBpX3JwY2AgZnVuY3Rpb25hbGl0eQotIElOU1RBTkNFX1VSTF9GTVQ6IFRoaXMgcGFyYW1ldGVyIGRlY2xhcmVzIHRoZSBpbnN0YW5jZSB1cmwgcGF0aCBmb3JtYXQKLSBSRUxBVElPTlNISVBfVVJMX0ZNVDogVGhpcyBwYXJhbWV0ZXIgZGVjbGFyZXMgdGhlIHJlbGF0aW9uc2hpcCBlbmRwb2ludCBwYXRoIGZvcm1hdAoKPGEgY2xhc3M9Im1rLXRvY2xpZnkiIGlkPSJleHBvc2UtZXhpc3RpbmciPjwvYT4KIyMgRXhwb3NpbmcgRXhpc3RpbmcgRGF0YWJhc2VzClNhZnJzIGFsbG93cyB5b3UgdG8gRXhwb3NlIGV4aXN0aW5nIGRhdGFiYXNlcyBhcyBqc29uYTphcGkgc2VydmljZXMgd2l0aCB0aGUgW2V4cG9zZV9leGlzdGluZy5weV0oZXhwb3NlX2V4aXN0aW5nL2V4cG9zZV9leGlzdGluZy5weSkgc2NyaXB0LCBmb3IgZXhhbXBsZToKCmBgYGJhc2gKcHl0aG9uMyBleHBvc2VfZXhpc3RpbmcucHkgbXlzcWwrcHlteXNxbDovL3Jvb3Q6cGFzc3dvcmRAbG9jYWxob3N0L3Nha2lsYSAtLWhvc3QgbG9jYWxob3N0CmBgYAoKVGhpcyBzY3JpcHQgdXNlcyBzcWxhY29kZWdlbiB0byBnZW5lcmF0ZSBhIHNvdXJjZSBmaWxlIGNvbnRhaW5pbmcgdGhlIFNRTEFsY2hlbXkgYW5kIGBTQUZSU0Jhc2VgIGRhdGFiYXNlIG1vZGVscyBhbmQgc3RhcnRzIHRoZSBBUEkgd2Vic2VydmljZS4KCk1vcmUgZGV0YWlscyBbaGVyZV0oZG9jcy9FeHBvc2VEQi5tZCkuIFRoaXMgYXBwcm9hY2ggaXMgdXNlZCBieSB0aGUgW0FwaUxvZ2ljU2VydmVyXShodHRwczovL2dpdGh1Yi5jb20vdmFsaHViZXIvQXBpTG9naWNTZXJ2ZXIpIHByb2plY3QuCgo8YSBjbGFzcz0ibWstdG9jbGlmeSIgaWQ9Im1vcmUtZXhhbXBsZXMtYW5kLXVzZS1jYXNlcyI+PC9hPgojIyBNb3JlIEV4YW1wbGVzIGFuZCBVc2UgQ2FzZXMKVGhlIFtleGFtcGxlc10oZXhhbXBsZXMpIGZvbGRlciBjb250YWlucyBtb3JlIGV4YW1wbGUgc2NyaXB0czoKLSBVc2luZyBhIHNoYSBoYXNoIGFzIHByaW1hcnkga2V5IChpZCkKLSBDT1JTIHVzYWdlCi0gRmxhc2stQWRtaW4gaW50ZWdyYXRpb24gZXhhbXBsZSwgZWcuOgohW2RlbW9dKGRvY3MvaW1hZ2VzL2ZsYXNrLWFkbWluLnBuZykKCkEgZG9ja2VyIGltYWdlIGNhbiBiZSBmb3VuZCBoZXJlOgpbaHR0cHM6Ly9naXRodWIuY29tL3Rob21heHhsL3NhZnJzLWV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS90aG9tYXh4bC9zYWZycy1leGFtcGxlKQoKPGEgY2xhc3M9Im1rLXRvY2xpZnkiIGlkPSJhZHZhbmNlZC11c2FnZSI+PC9hPgojIyBBZHZhbmNlZCBGdW5jdGlvbmFsaXR5Cgo8YSBjbGFzcz0ibWstdG9jbGlmeSIgaWQ9ImZpbHRlcmluZyI+PC9hPgojIyMgRmlsdGVyaW5nClRoZSBzd2FnZ2VyIHNob3dzIHRoZSBqc29uYXBpIGZpbHRlcnMgdGhhdCBjYW4gYmUgdXNlZCBpbiB0aGUgdXJsIHF1ZXJ5IGFyZ3VtZW50cy4gSXRlbXMgd2l0aCBhbiBleGFjdCBtYXRjaCBvZiB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZSB2YWx1ZSBjYW4gYmUgZmV0Y2hlZCBieSBzcGVjaWZ5aW5nIHRoZSBjb3JyZXNwb25kaW5nIGtleS12YWx1ZSBxdWVyeSBwYXJhbWV0ZXIuIEZvciBleGFtcGxlLCBzdXBwb3NlIHRoZSBgVXNlcmAgY2xhc3MsIGV4cG9zZWQgYXQgYC9Vc2Vyc2AgaGFzIGEgYG5hbWVgIGF0dHJpYnV0ZSwgdG8gcmV0cmlldmUgYWxsIGluc3RhbmNlcyB3aXRoIHRoZSBuYW1lICJKb2huIiwgeW91IGNhbiB1c2UgYSBgR0VUYCByZXF1ZXN0IHRvIApgL1VzZXJzP2ZpbHRlcltuYW1lXT1Kb2huYC4KCkl0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIG1vcmUgZ2VuZXJpYyBmaWx0ZXJzIGJ5IHNwZWNpZml5aW5nIGEgSlNPTiBzdHJpbmcsIGZvciBleGFtcGxlIGBmaWx0ZXI9W3sibmFtZSI6InRpbWVzdGFtcCIsIm9wIjoiZ3QiLCJ2YWwiOiIyMDIwLTA4LTAxIn0seyJuYW1lIjoidGltZXN0YW1wIiwib3AiOiJsdCIsInZhbCI6IjIwMjAtMDgtMDIifV1gLgoKTW9yZSBpbmZvIGNhbiBiZSBmb3VuZCBpbiB0aGUgW3dpa2ldKGh0dHBzOi8vZ2l0aHViLmNvbS90aG9tYXh4bC9zYWZycy93aWtpL0FQSS1GdW5jdGlvbmFsaXR5I2ZpbHRlcmluZykuCgo8YSBjbGFzcz0ibWstdG9jbGlmeSIgaWQ9ImN1c3RvbS1zZXJpYWxpemF0aW9uIj48L2E+CiMjIyBDdXN0b20gU2VyaWFsaXphdGlvbgpTZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24gYXJlIGltcGxlbWVudGVkIGJ5IHRoZSBTQUZSU0Jhc2UgYHRvX2RpY3RgIGFuZCBgX19pbml0X19gIDogeW91IGNhbiBleHRlbmQgdGhlc2UgbWV0aG9kcyBhcyB1c3VhbC4KRm9yIGV4YW1wbGUsIGlmIHlvdSB3b3VsZCBsaWtlIHRvIGFkZCBzb21lIGF0dHJpYnV0ZXMgdG8gdGhlIGpzb24gcGF5bG9hZCBvZiB0aGUgVXNlciBvYmplY3QsIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIHRvX2RpY3QgbWV0aG9kOgoKYGBgcHl0aG9uCmNsYXNzIFVzZXIoU0FGUlNCYXNlLCBkYi5Nb2RlbCk6CiAgICAnJycKICAgICAgICBkZXNjcmlwdGlvbjogVXNlciBkZXNjcmlwdGlvbgogICAgJycnCiAgICBfX3RhYmxlbmFtZV9fID0gJ1VzZXJzJwogICAgaWQgPSBkYi5Db2x1bW4oZGIuU3RyaW5nLCBwcmltYXJ5X2tleT1UcnVlKQogICAgbmFtZSA9IGRiLkNvbHVtbihkYi5TdHJpbmcsIGRlZmF1bHQ9JycpCiAgICBlbWFpbCA9IGRiLkNvbHVtbihkYi5TdHJpbmcsIGRlZmF1bHQ9JycpCiAgICBib29rcyA9IGRiLnJlbGF0aW9uc2hpcCgnQm9vaycsIGJhY2tfcG9wdWxhdGVzPSJ1c2VyIikKCiAgICBkZWYgdG9fZGljdChzZWxmKToKICAgICAgICByZXN1bHQgPSBTQUZSU0Jhc2UudG9fZGljdChzZWxmKQogICAgICAgIHJlc3VsdFsnY3VzdG9tX2ZpZWxkJ10gPSAnY3VzdG9tJwogICAgICAgIHJldHVybiByZXN1bHQKYGBgIAoKVGhpcyB3aWxsIGFkZCB0aGUgYGN1c3RvbV9maWVsZGAgYXR0cmlidXRlIHRvIHRoZSByZXN1bHQgYXR0cmlidXRlczoKYGBganNvbgoiYXR0cmlidXRlcyI6IHsKICAgICJjdXN0b21fZmllbGQiOiAiY3VzdG9tIiwKICAgICJlbWFpbCI6ICJyZWFkZXJfZW1haWwwIiwKICAgICJuYW1lIjogIlJlYWRlciAwIgp9CmBgYAoKPGEgY2xhc3M9Im1rLXRvY2xpZnkiIGlkPSJjdXN0b21pemF0aW9uIj48L2E+CiMjIEN1c3RvbWl6YXRpb24KCjxhIGNsYXNzPSJtay10b2NsaWZ5IiBpZD0iZXhjbHVkaW5nLWF0dHJzLXJlbHMiPjwvYT4KIyMjIEV4Y2x1ZGluZyBBdHRyaWJ1dGVzIGFuZCBSZWxhdGlvbnNoaXBzCkl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgYXR0cmlidXRlcyBhbmQgcmVsYXRpb25zaGlwcyB0aGF0IHNob3VsZCBub3QgYmUgc2VyaWFsaXplZCBieSBzcGVjaWZ5aW5nIHRoZSByZXNwZWN0aXZlIGBleGNsdWRlX2F0dHJzYCBhbmQgw6h4Y2x1ZGVfcmVsc2AgY2xhc3MgYXR0cmlidXRlcyBpbiB5b3VyIFNBRlJTQmFzZSBpbnN0YW5jZXMuCkV4YW1wbGVzIGNhbiBiZSBmb3VuZCBbaGVyZV0oZXhhbXBsZXMvZGVtb19weXRob25hbnl3aGVyZV9jb20ucHkjTDgxKSBhbmQgW2hlcmVdKGV4YW1wbGVzL2RlbW9faHR0cF9nZXQucHkjTDIxKQoKPGEgY2xhc3M9Im1rLXRvY2xpZnkiIGlkPSJsaW1pdC1odHRwLXZlcmJzIj48L2E+CiMjIyBMaW1pdGluZyBIVFRQIE1ldGhvZHMKSXQgaXMgcG9zc2libGUgdG8gbGltaXQgdGhlIEhUVFAgbWV0aG9kcyB0aGF0IGFyZSBhbGxvd2VkIGJ5IG92ZXJyaWRpbmcgdGhlIGBodHRwX21ldGhvZHNgIGNsYXNzIGF0dHJpYnV0ZS4gQW4gZXhhbXBsZSBjYW4gYmUgZm91bmQgW2hlcmVdKGV4YW1wbGVzL2RlbW9faHR0cF9nZXQucHkjTDIwKQoKPGEgY2xhc3M9Im1rLXRvY2xpZnkiIGlkPSJIVFRQLWRlY29yYXRvcnMiPjwvYT4KIyMjIEhUVFAgRGVjb3JhdG9ycwpUaGUgYGRlY29yYXRvcnNgIGNsYXNzIGF0dHJpYnV0ZSBsaXN0IGNhbiBiZSB1c2VkIHRvIGFkZCBjdXN0b20gZGVjb3JhdG9ycyB0byB0aGUgSFRUUCBlbmRwb2ludHMuIEFuIGV4YW1wbGUgb2YgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGltcGxlbWVudGVkCmluIHRoZSBbYXV0aGVudGljYXRpb24gZXhhbXBsZXNdKGV4YW1wbGVzL2F1dGhlbnRpY2F0aW9uKS4KCgo8YSBjbGFzcz0ibWstdG9jbGlmeSIgaWQ9ImFwaS1tZXRob2RzIj48L2E+CiMjIyBBUEkgTWV0aG9kcwpTb21lIGFkZGl0aW9uYWwgQVBJIFJQQyBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZCBpbiBbYXBpX21ldGhvZHMucHldKHNhZnJzL2FwaV9tZXRob2RzLnB5KSwgZS5nLiBteXNxbCByZWdleCBzZWFyY2guIAoKPGEgY2xhc3M9Im1rLXRvY2xpZnkiIGlkPSJjdXN0b20tc3dhZ2dlciI+PC9hPgojIyMgQ3VzdG9tIHN3YWdnZXIKVGhlIHN3YWdnZXIgc2NoZW1hIGNhbiBiZSBtZXJnZWQgd2l0aCBhIG1vZGlmaWVkIHNjaGVtYSBkaWN0aW9uYXJ5IGJ5IHN1cHBseWluZyB0aGUgdG8tYmUtbWVyZ2VkIGRpY3Rpb25hcnkgYXMgdGhlIGBjdXN0b21fc3dhZ2dlcmAgYXJndW1lbnQgdG8gYFNhZnJzQXBpYCwgZS5nLgpgYGBweXRob24KY3VzdG9tX3N3YWdnZXIgPSB7ImluZm8iOiB7InRpdGxlIiA6ICJOZXcgVGl0bGUiIH19ICMgQ3VzdG9taXplZCBzd2FnZ2VyIHRpdGxlIHdpbGwgYmUgbWVyZ2VkCmFwaSA9IFNhZnJzQXBpKGFwcCwgaG9zdD1zd2FnZ2VyX2hvc3QsIHBvcnQ9UE9SVCwgcHJlZml4PU9BU19QUkVGSVgsIGFwaV9zcGVjX3VybD1PQVNfUFJFRklYKycvc3dhZ2dlcicsCiAgICAgICAgICAgICAgIGN1c3RvbV9zd2FnZ2VyPWN1c3RvbV9zd2FnZ2VyLCBzY2hlbWVzPVsnaHR0cCcsICdodHRwcyddLCBkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbikKYGBgCgo8YSBjbGFzcz0ibWstdG9jbGlmeSIgaWQ9IkNsYXNzZXMtV2l0aG91dC1Nb2RlbHMiPjwvYT4KIyMjIENsYXNzZXMgV2l0aG91dCBTUUxBbGNoZW15IE1vZGVscwpZb3UgY2FuIGltcGxlbWVudCBhIHNlcmlhbGl6YWJsZSBjbGFzcyB3aXRob3V0IGEgbW9kZWwgYnV0IHRoaXMgcmVxdWlyZXMgc29tZSBleHRyYSB3b3JrIGJlY2F1c2Ugc2FmcnMgbmVlZHMgdG8ga25vdyB3aGljaCBhdHRyaWJ1dGVzIGFuZCByZWxhdGlvbnNoaXBzIHRvIHNlcmlhbGl6ZS4gQW4gZXhhbXBsZSBpcyBpbXBsZW1lbnRlZCBbaGVyZV0oZXhhbXBsZXMvZGVtb19zdGF0ZWxlc3MucHkpCgojIyMgTW9yZSBDdXN0b21pemF0aW9uClRoZSBkb2N1bWVudGF0aW9uIGlzIGJlaW5nIG1vdmVkIHRvIHRoZSBbd2lraV0oaHR0cHM6Ly9naXRodWIuY29tL3Rob21heHhsL3NhZnJzL3dpa2kpCgo8ZGV0YWlscz4KPHN1bW1hcnk+QWJvdXQ8L3N1bW1hcnk+ClNBRlJTIGlzIGFuIGFjcm9ueW0gZm9yICoqUyoqcWwqKkEqKmxjaGVteSAqKkYqKmxhc2stKipSKiplc3RmdWwgKipTKip3YWdnZXIuIFRoZSBwdXJwb3NlIG9mIHRoaXMgZnJhbWV3b3JrIGlzIHRvIGhlbHAgcHl0aG9uIGRldmVsb3BlcnMgY3JlYXRlIGEgc2VsZi1kb2N1bWVudGluZyBKU09OIEFQSSBmb3Igc3FsYWxjaGVteSBkYXRhYmFzZSBvYmplY3RzIGFuZCByZWxhdGlvbnNoaXBzLiBUaGVzZSBvYmplY3RzIGNhbiBiZSBzZXJpYWxpemVkIHRvIEpTT04gYW5kIGNhbiBiZSBjcmVhdGVkLCByZXRyaWV2ZWQsIHVwZGF0ZWQgYW5kIGRlbGV0ZWQgdGhyb3VnaCB0aGUgSlNPTiBBUEkuIApPcHRpb25hbGx5LCBjdXN0b20gcmVzb3VyY2Ugb2JqZWN0IG1ldGhvZHMgY2FuIGJlIGV4cG9zZWQgYW5kIGludm9rZWQgdXNpbmcgSlNPTi4KQ2xhc3MgYW5kIG1ldGhvZCBkZXNjcmlwdGlvbnMgYW5kIGV4YW1wbGVzIGNhbiBiZSBwcm92aWRlZCBpbiB5YW1sIHN5bnRheCBpbiB0aGUgY29kZSBjb21tZW50cy4gVGhlIGRlc2NyaXB0aW9uIGlzIHBhcnNlZCBhbmQgc2hvd24gaW4gdGhlIHN3YWdnZXIgd2ViIGludGVyZmFjZS4gCgpUaGUgcmVzdWx0IGlzIGFuIGVhc3ktdG8tdXNlIFtzd2FnZ2VyL09wZW5BUEldKGh0dHBzOi8vc3dhZ2dlci5pby8pIGFuZCBbSlNPTjpBUEldKGh0dHBzOi8vanNvbmFwaS5vcmcpIGNvbXBsaWFudCBBUEkgaW1wbGVtZW50YXRpb24uCjwvZGV0YWlscz4KCjxkZXRhaWxzPgo8c3VtbWFyeT5saW1pdGF0aW9ucyAmIFRvZG9zPC9zdW1tYXJ5PgpUaGlzIGNvZGUgd2FzIGRldmVsb3BlZCBmb3IgYSBzcGVjaWZpYyB1c2UtY2FzZSBhbmQgbWF5IG5vdCBiZSBmbGV4aWJsZSBlbm91Z2ggZm9yIGV2ZXJ5b25lJ3MgbmVlZHMuIEEgbG90IG9mIHRoZSBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZSBidXQgbm90IGRvY3VtZW50ZWQgZm9yIHRoZSBzYWtlIG9mIGJyZXZpdHkuClBlcmZvcm1hbmNlIGlzIHJlYXNvbmFibGUgZm9yIHJlZ3VsYXIgZGF0YWJhc2VzLCBidXQgb25jZSB5b3Ugc3RhcnQgZXhwb3NpbmcgcmVhbGx5IGJpZyB0YWJsZXMgeW91IG1heSBydW4gaW50byBwcm9ibGVtcywgZm9yIGV4YW1wbGU6IHRoZSBgY291bnQoKWAgZm9yIG15c3FsIGlubm9kYiBpcyBzbG93IG9uIGxhcmdlKDFNIHJvd3MpIHRhYmxlcywgYSB3b3JrYXJvdW5kIGNhbiBiZSBpbXBsZW1lbnRlZCBieSBxdWVyeWluZyB0aGUgYHN5c2AgdGFibGVzIG9yIHVzaW5nIHdlcmt6ZXVnIGNhY2hpbmcuIApGZWVsIGZyZWUgdG8gb3BlbiBhbiBpc3N1ZSBvciBkcm9wIFttZV0obWFpbHRvOnRob21hcy5wb2xsZXQrbm8rc3BhbStAZ21haWwuY29tKSBhbiBlbWFpbCBpZiB5b3UgcnVuIGludG8gcHJvYmxlbXMgb3Igc29tZXRoaW5nIGlzbid0IGNsZWFyIQo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KPHN1bW1hcnk+UmVmZXJlbmNlczwvc3VtbWFyeT4KCi0gW0pTT046QVBJIHNwZWNpZmljYXRpb25dKGh0dHA6Ly9qc29uYXBpLm9yZy9mb3JtYXQvKQotIFtPcGVuQXBpIChTd2FnZ2VyKV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykKLSBbRmxhc2tdKGh0dHA6Ly9mbGFzay5wb2Nvby5vcmcvKQotIFtTUUxBbGNoZW15XShodHRwczovL3d3dy5zcWxhbGNoZW15Lm9yZy8pCjwvZGV0YWlscz4KCjxkZXRhaWxzPgo8c3VtbWFyeT5UaGFua3M8L3N1bW1hcnk+CkkgZGV2ZWxvcGVkIHRoaXMgY29kZSB3aGVuIEkgd29ya2VkIGF0IFtFeGNlbGxpdW0gU2VydmljZXNdKGh0dHBzOi8vd3d3LmV4Y2VsbGl1bS1zZXJ2aWNlcy5jb20vKS4gVGhleSBhbGxvd2VkIG1lIHRvIG9wZW4gc291cmNlIGl0IHdoZW4gSSBzdG9wcGVkIHdvcmtpbmcgdGhlcmUuCjwvZGV0YWlscz4K readmeEtag: '"b5c8f46ac4d3c27b2f0ba4ba92bebc5d8b11b6d0"' readmeLastModified: Fri, 11 Oct 2024 06:41:22 GMT repositoryId: 104184487 description: SqlAlchemy Flask-Restful Swagger Json:API OpenAPI created: '2017-09-20T07:56:55Z' updated: '2025-10-27T07:48:10Z' language: Python archived: false stars: 413 watchers: 12 forks: 73 owner: thomaxxl logo: https://avatars.githubusercontent.com/u/4190750?v=4 license: GPL-3.0 repoEtag: '"5f40e895e301cf7f91679f78292b6ff5bbb122e2ac57cafcc61d2d93bec5640d"' repoLastModified: Mon, 27 Oct 2025 07:48:10 GMT foundInMaster: true category: Server Implementations id: 1ccc4d969c768f04576d518679fb6489 - source: openapi3 tags repository: https://github.com/cloudflare/chanfana v3: true id: b38a05ac4acb961910fe6e4ad445ba6a repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL2NoYW5mYW5hLnBhZ2VzLmRldi8iPgogICAgPGltZyBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jbG91ZGZsYXJlL2NoYW5mYW5hL3JlZnMvaGVhZHMvbWFpbi9kb2NzL3B1YmxpYy9hc3NldHMvbG9nby5wbmciIHdpZHRoPSI1MDAiIGhlaWdodD0iYXV0byIgYWx0PSJjaGFuZmFuYSIvPgogIDwvYT4KPC9kaXY+CgoKPHAgYWxpZ249ImNlbnRlciI+CiAgICA8ZW0+T3BlbkFQSSAzIGFuZCAzLjEgc2NoZW1hIGdlbmVyYXRvciBhbmQgdmFsaWRhdG9yIGZvciA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaG9ub2pzL2hvbm8iIHRhcmdldD0iX2JsYW5rIj5Ib25vPC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t3aGl0bGV5L2l0dHktcm91dGVyIiB0YXJnZXQ9Il9ibGFuayI+aXR0eS1yb3V0ZXI8L2E+IGFuZCBtb3JlITwvZW0+CjwvcD4KCjxociAvPgoKKipEb2N1bWVudGF0aW9uKio6IDxhIGhyZWY9Imh0dHBzOi8vY2hhbmZhbmEucGFnZXMuZGV2LyI+Y2hhbmZhbmEucGFnZXMuZGV2PC9hPgoKKipTb3VyY2UgQ29kZSoqOiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2xvdWRmbGFyZS9jaGFuZmFuYS8iPmdpdGh1Yi5jb20vY2xvdWRmbGFyZS9jaGFuZmFuYTwvYT4KCjxociAvPgoKW2NoYW5mYW5hXShodHRwczovL2dpdGh1Yi5jb20vY2xvdWRmbGFyZS9jaGFuZmFuYSkgKioocHJldmlvdXNseSBrbm93biBhcyBpdHR5LXJvdXRlci1vcGVuYXBpKSoqIGlzIGEgbGlicmFyeSB0aGF0IGFkZHMKT3BlbkFQSSBzY2hlbWEgZ2VuZXJhdGlvbiBhbmQgdmFsaWRhdGlvbiB0byBhbnkgcm91dGVyICg8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaG9ub2pzL2hvbm8iIHRhcmdldD0iX2JsYW5rIj4KSG9ubzwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rd2hpdGxleS9pdHR5LXJvdXRlciIgdGFyZ2V0PSJfYmxhbmsiPml0dHktcm91dGVyPC9hPiwgZXRjKSwgbWVhbnQgdG8gYmUgYQpwb3dlcmZ1bCBhbmQgbGlnaHR3ZWlnaHQKbGlicmFyeSBmb3IgQ2xvdWRmbGFyZSBXb3JrZXJzIGJ1dCBydW5zIG9uIGFueSBydW50aW1lIHN1cHBvcnRlZCBieSB0aGUgYmFzZSByb3V0ZXIuCgpUaGUga2V5IGZlYXR1cmVzIGFyZToKCi0gT3BlbkFQSSAzIGFuZCAzLjEgc2NoZW1hIGdlbmVyYXRvciBhbmQgdmFsaWRhdG9yCi0gRnVsbHkgd3JpdHRlbiBpbiB0eXBlc2NyaXB0Ci0gW0NsYXNzLWJhc2VkIGVuZHBvaW50c10oaHR0cHM6Ly9jaGFuZmFuYS5wYWdlcy5kZXYvZW5kcG9pbnRzL2RlZmluaW5nLWVuZHBvaW50cykKLSBRdWVyeSwgUGF0aCwgSGVhZGVycywgYW5kIEJvZHkgdHlwZXNjcmlwdCBpbmZlcmVuY2UsIHNlZSBbUGFyYW1ldGVyc10oaHR0cHM6Ly9jaGFuZmFuYS5wYWdlcy5kZXYvZW5kcG9pbnRzL3BhcmFtZXRlcnMpIGFuZCBbUmVxdWVzdCBWYWxpZGF0aW9uXShodHRwczovL2NoYW5mYW5hLnBhZ2VzLmRldi9lbmRwb2ludHMvcmVxdWVzdC12YWxpZGF0aW9uKQotIEV4dGVuZCBleGlzdGluZyBbSG9ub10oaHR0cHM6Ly9jaGFuZmFuYS5wYWdlcy5kZXYvcm91dGVyLWFkYXB0ZXJzKSwgW2l0dHktcm91dGVyXShodHRwczovL2NoYW5mYW5hLnBhZ2VzLmRldi9yb3V0ZXItYWRhcHRlcnMpLCBldGMgYXBwbGljYXRpb24sIHdpdGhvdXQgdG91Y2hpbmcgb2xkIHJvdXRlcwotIENMSSB0byBleHRyYWN0IHRoZSBzY2hlbWEuanNvbiBmcm9tIHlvdXIgY29kZSAobnB4IGNoYW5mYW5hKSAtIHNlZSBbQ0xJIERvY3VtZW50YXRpb25dKGh0dHBzOi8vY2hhbmZhbmEucGFnZXMuZGV2L2NsaSkKCiMjIEdldHRpbmcgc3RhcnRlZAoKR2V0IHN0YXJ0ZWQgd2l0aCBhIHRlbXBsYXRlIHdpdGggdGhpcyBjb21tYW5kOgoKYGBgYmFzaApucG0gY3JlYXRlIGNsb3VkZmxhcmVAbGF0ZXN0IC0tIC0tdHlwZSBvcGVuYXBpCmBgYAoKIyMgSW5zdGFsbGF0aW9uCgpgYGBiYXNoCm5wbSBpIGNoYW5mYW5hIC0tc2F2ZQpgYGAKCiMjIENvbW1hbmQtTGluZSBJbnRlcmZhY2UgKENMSSkKCkNoYW5mYW5hIGluY2x1ZGVzIGEgQ0xJIHRvb2wgdG8gaGVscCB5b3UgZXh0cmFjdCB0aGUgT3BlbkFQSSBzY2hlbWEgZnJvbSB5b3VyIENsb3VkZmxhcmUgV29ya2VyIHByb2plY3QuIFRoaXMgaXMgdXNlZnVsIGZvciBnZW5lcmF0aW5nIGEgc3RhdGljIHNjaGVtYSBmaWxlLCBmb3IgZXhhbXBsZSwgaW4gQ0kvQ0QgcGlwZWxpbmVzLgoKVGhlIGJhc2ljIGNvbW1hbmQgaXM6CmBgYGJhc2gKbnB4IGNoYW5mYW5hCmBgYApUaGlzIHdpbGwgc3RhcnQgeW91ciB3b3JrZXIgdXNpbmcgYHdyYW5nbGVyIGRldmAsIGZldGNoIHRoZSBzY2hlbWEgZnJvbSBgL29wZW5hcGkuanNvbmAsIGFuZCBzYXZlIGl0IHRvIGBzY2hlbWEuanNvbmAuCgpGb3IgbW9yZSBkZXRhaWxzIG9uIG9wdGlvbnMgYW5kIHVzYWdlLCBwbGVhc2UgcmVmZXIgdG8gdGhlIFsqKkNMSSBEb2N1bWVudGF0aW9uKipdKGh0dHBzOi8vY2hhbmZhbmEucGFnZXMuZGV2L2NsaSkuCgojIyBNaW5pbWFsIEhvbm8gRXhhbXBsZQoKYGBgdHMKaW1wb3J0IHsgZnJvbUhvbm8sIE9wZW5BUElSb3V0ZSB9IGZyb20gJ2NoYW5mYW5hJwppbXBvcnQgeyBIb25vIH0gZnJvbSAnaG9ubycKaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCcKCmV4cG9ydCB0eXBlIEVudiA9IHsKICAgIC8vIEV4YW1wbGUgYmluZGluZ3MKICAgIERCOiBEMURhdGFiYXNlCiAgICBCVUNLRVQ6IFIyQnVja2V0Cn0KZXhwb3J0IHR5cGUgQXBwQ29udGV4dCA9IENvbnRleHQ8eyBCaW5kaW5nczogRW52IH0+CgpleHBvcnQgY2xhc3MgR2V0UGFnZU51bWJlciBleHRlbmRzIE9wZW5BUElSb3V0ZSB7CiAgc2NoZW1hID0gewogICAgcmVxdWVzdDogewogICAgICBwYXJhbXM6IHoub2JqZWN0KHsKICAgICAgICBpZDogei5zdHJpbmcoKS5taW4oMikubWF4KDEwKSwKICAgICAgfSksCiAgICAgIHF1ZXJ5OiB6Lm9iamVjdCh7CiAgICAgICAgcGFnZTogei5udW1iZXIoKS5pbnQoKS5taW4oMCkubWF4KDIwKSwKICAgICAgfSksCiAgICB9LAogIH0KCiAgYXN5bmMgaGFuZGxlKGM6IEFwcENvbnRleHQpIHsKICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmdldFZhbGlkYXRlZERhdGE8dHlwZW9mIHRoaXMuc2NoZW1hPigpCgogICAgcmV0dXJuIGMuanNvbih7CiAgICAgIGlkOiBkYXRhLnBhcmFtcy5pZCwKICAgICAgcGFnZTogZGF0YS5xdWVyeS5wYWdlLAogICAgfSkKICB9Cn0KCi8vIFN0YXJ0IGEgSG9ubyBhcHAKY29uc3QgYXBwID0gbmV3IEhvbm88eyBCaW5kaW5nczogRW52IH0+KCkKCi8vIFNldHVwIE9wZW5BUEkgcmVnaXN0cnkKY29uc3Qgb3BlbmFwaSA9IGZyb21Ib25vKGFwcCkKCi8vIFJlZ2lzdGVyIE9wZW5BUEkgZW5kcG9pbnRzICh0aGlzIHdpbGwgYWxzbyByZWdpc3RlciB0aGUgcm91dGVzIGluIEhvbm8pCm9wZW5hcGkuZ2V0KCcvZW50cnkvOmlkJywgR2V0UGFnZU51bWJlcikKCi8vIEV4cG9ydCB0aGUgSG9ubyBhcHAKZXhwb3J0IGRlZmF1bHQgYXBwCmBgYAoKIyMgRmVlZGJhY2sgYW5kIGNvbnRyaWJ1dGlvbnMKCltjaGFuZmFuYV0oaHR0cHM6Ly9naXRodWIuY29tL2Nsb3VkZmxhcmUvY2hhbmZhbmEpIGFpbXMgdG8gYmUgYXQgdGhlIGNvcmUgb2YgbmV3IEFQSXMgYnVpbHQgdXNpbmcKV29ya2VycyBhbmQgZGVmaW5lIGEgcGF0dGVybiB0byBhbGxvdyBldmVyeW9uZSB0bwpoYXZlIGFuIE9wZW5BUEktY29tcGxpYW50IHNjaGVtYSB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IGltcGxlbWVudGF0aW9uIGRldGFpbHMgb3IgcmVpbnZlbnRpbmcgdGhlIHdoZWVsLgoKY2hhbmZhbmEgaXMgY29uc2lkZXJlZCBzdGFibGUgYW5kIHByb2R1Y3Rpb24gcmVhZHkgYW5kIGlzIGJlaW5nIHVzZWQgd2l0aAp0aGUgW1JhZGFyIDIuMCBwdWJsaWMgQVBJXShodHRwczovL2RldmVsb3BlcnMuY2xvdWRmbGFyZS5jb20vcmFkYXIvKSBhbmQgbWFueSBvdGhlciBDbG91ZGZsYXJlIHByb2R1Y3RzLgoKWW91IGNhbiBhbHNvIHRhbGsgdG8gdXMgaW4gdGhlIFtDbG91ZGZsYXJlIENvbW11bml0eV0oaHR0cHM6Ly9jb21tdW5pdHkuY2xvdWRmbGFyZS5jb20vKSBvcgp0aGUgW1JhZGFyIERpc2NvcmQgQ2hhbm5lbF0oaHR0cHM6Ly9kaXNjb3JkLmNvbS9jaGFubmVscy81OTUzMTc5OTAxOTEzOTg5MzMvMTAzNTU1MzcwNzExNjQ3ODQ5NSkK readmeEtag: '"c7b6103098b7ea1122aac907f29b3cb6b4227b50"' readmeLastModified: Wed, 18 Jun 2025 18:26:17 GMT repositoryId: 563328514 description: >- OpenAPI 3 and 3.1 schema generator and validator for Hono, itty-router and more! created: '2022-11-08T11:43:41Z' updated: '2026-02-06T03:08:18Z' language: TypeScript archived: false stars: 688 watchers: 9 forks: 66 owner: cloudflare logo: https://avatars.githubusercontent.com/u/314135?v=4 license: MIT repoEtag: '"657131d1418990021d3d868cc6b3edadf872df44ea125e2a6c11713d7cb24918"' repoLastModified: Fri, 06 Feb 2026 03:08:18 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/cloudflare/itty-router-openapi - source: openapi3 tags repository: https://github.com/dgarcia360/openapi-boilerplate v3: true repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPgogIDxkaXYgc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ij4KICAgICAgPGltZyBzcmM9ImRvY3MvaGVhZGVyLnBuZyIgd2lkdGg9IjU1MCIvPgogIDwvZGl2Pgo8L2gxPgoKWyFbT3BlbkFQSSBsaW50ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9kZ2FyY2lhMzYwL29wZW5hcGktYm9pbGVycGxhdGUvYWN0aW9ucy93b3JrZmxvd3MvbGludGVyLnlhbWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2RnYXJjaWEzNjAvb3BlbmFwaS1ib2lsZXJwbGF0ZS9hY3Rpb25zL3dvcmtmbG93cy9saW50ZXIueWFtbCkKWyFbTGljZW5zZTogTUlUXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtTUlULXllbGxvdy5zdmcpXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkKCiMgT3BlbkFQSSBib2lsZXJwbGF0ZQoKQSBzdGFydGVyIHRlbXBsYXRlIGZvciAqKk9wZW5BUEkgU3BlY2lmaWNhdGlvbioqIChPQVMpIHByb2plY3RzLgoKVGhpcyBwcm9qZWN0IHNwbGl0cyB0aGUgW1N3YWdnZXIgUGV0c3RvcmVdKGh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby8pIGV4YW1wbGUgZnJvbSB0aGUgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiBpbnRvIHNtYWxsZXIgZmlsZXMuIEl0IGFsc28gYWRkcyBoYW5keSBjb21tYW5kcyB0byBidWlsZCwgbGludCwgYW5kIHByZXZpZXcgdGhlIE9wZW5BUEkgZG9jdW1lbnQgZnJvbSB0aGUgdGVybWluYWwuCgpZb3UgY2FuIHVzZSB0aGlzIHRlbXBsYXRlIHRvIGd1aWRlIHRoZSBvcmdhbml6YXRpb24gb2YgeW91ciBwcm9qZWN0LiBFaXRoZXIgaWYgeW91IHdhbnQgdG8gY3JlYXRlIGEgbmV3IE9wZW5BUEkgZG9jdW1lbnQgZnJvbSBzY3JhdGNoIG9yIGlmIHlvdSBhbHJlYWR5IGhhdmUgaXQgZGVmaW5lZC4gCgojIyBGZWF0dXJlcwoKKiDwn5OdIFdyaXRlIE9wZW5BUEkgZGVmaW5pdGlvbnMgaW4gZGlmZmVyZW50IGZpbGVzLgoqIPCflIAgQ29tYmluZSBhbGwgZmlsZXMgd2l0aCBbcmVkb2NseS1jbGldKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jbHktY2xpKS4KKiDinIUgVmFsaWRhdGUgYW5kIGxpbnQgdGhlIE9wZW5BUEkgZG9jdW1lbnQgd2l0aCBbc3RvcGxpZ2h0aW8vc3BlY3RyYWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9wbGlnaHRpby9zcGVjdHJhbCkuCiog4pyoIFB1Ymxpc2ggcmVmZXJlbmNlIGRvY3Mgd2l0aCBbUmVkb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jKSAmIEdpdEh1YiBQYWdlcy4KCiMjIFdoeT8KCldoZW4gSSB1c2VkIHRvIGRvY3VtZW50IEFQSXMgZm9sbG93aW5nIHRoZSBPcGVuQVBJIHNwZWMsIEkgYWx3YXlzIGVuZGVkIHVwIHdpdGggZG9jdW1lbnRzIG9mIHRob3VzYW5kcyBvZiBsaW5lcywgd2hpY2ggd2VyZSBhIG5pZ2h0bWFyZSB0byBtYWludGFpbi4KCkZvciB0aGlzIHJlYXNvbiwgSSBleHBsb3JlZCBob3cgdG8gc3BsaXQgT3BlbkFQSSBkb2N1bWVudHMuIEp1bXAgb3ZlciB0byBteSBbYmxvZ10oaHR0cHM6Ly9kYXZpZGdhcmNpYS5kZXYvcG9zdHMvaG93LXRvLXNwbGl0LW9wZW4tYXBpLXNwZWMtaW50by1tdWx0aXBsZS1maWxlcy8pIHRvIGxlYXJuIG1vcmUgYWJvdXQgdGhlIHByb2Nlc3MuIEJhc2VkIG9uIG15IHJlc2VhcmNoLCBJIGNyZWF0ZWQgdGhpcyBvcGluaW9uYXRlZCB0ZW1wbGF0ZSB0byBkZWZpbmUsIHRlc3QsIGFuZCBwdWJsaXNoIG1vZHVsYXIgT3BlbkFQSSBwcm9qZWN0cy4KCk9yZ2FuaXppbmcgeW91ciBwcm9qZWN0IGVmZmVjdGl2ZWx5IG9mZmVycyBzaWduaWZpY2FudCBiZW5lZml0cy4gU3BsaXR0aW5nIGEgbGFyZ2UgT3BlbkFQSSBzcGVjIGludG8gbXVsdGlwbGUgZmlsZXMgbWFrZXMgaXQgZWFzaWVyIHRvIG1hbmFnZSBhbmQgbWFpbnRhaW4uIEl0IGFsc28gbWFrZXMgdGhlIGRvY3VtZW50YXRpb24gcHJvY2VzcyBtb3JlIGVmZmljaWVudCBhbmQgbGVzcyBvdmVyd2hlbG1pbmcuIEkndmUgZm91bmQgdGhhdCB3aXRoIHRoaXMgc3RydWN0dXJlLCBvdGhlciBkZXZzIGFyZSBtb3JlIGluY2xpbmVkIHRvIGNvbnRyaWJ1dGUgYW5kIHN1Z2dlc3QgY2hhbmdlcyB0byB0aGUgZG9jdW1lbnRhdGlvbiwgYXMgaXQgZmVlbHMgbW9yZSBhcHByb2FjaGFibGUgYW5kIGxlc3MgaW50aW1pZGF0aW5nLgoKIyMgR2V0dGluZyBzdGFydGVkCgojIyMgUmVxdWlyZW1lbnRzCgoqIE5vZGUuanMgMTYgKGN1cnJlbnQpCgojIyMgSW5zdGFsbGF0aW9uCgoxLiBDbG9uZSB0aGUgcmVwb3NpdG9yeS4KCiAgICBgYGAKICAgIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vZGdhcmNpYTM2MC9vcGVuYXBpLWJvaWxlcnBsYXRlLmdpdAogICAgYGBgCgoyLiBJbnN0YWxsIHRoZSBwcm9qZWN0IGRlcGVuZGVuY2llcy4KCiAgICBgYGAKICAgIG5wbSBpbnN0YWxsCiAgICBgYGAKCjMuIEVkaXQgYG9wZW5hcGkueWFtbGAgdG8gZml0IHlvdXIgQVBJIGRlZmluaXRpb24uIElmIHlvdeKAmXJlIG5vdCBmYW1pbGlhciB3aXRoIHRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24sIHJlYWQgW0dldHRpbmcgc3RhcnRlZCB3aXRoIE9BU10oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NvbHV0aW9ucy9nZXR0aW5nLXN0YXJ0ZWQtd2l0aC1vYXMvKSBmaXJzdC4KCiMjIFVzZWZ1bCBjb21tYW5kcwoKVGhlIHByb2plY3Qgd2lsbCBidWlsZCwgbGludCwgYW5kIHByZXZpZXcgdGhlIE9wZW5BUEkgZG9jdW1lbnQgZnJvbSB0aGUgdGVybWluYWwsIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kczoKCiMjIyBCdWlsZAoKVGhlIGNvbW1hbmQgYnVuZGxlcyB0aGUgc3BlYyBhcyBvbmUgYC55YW1sYCBmaWxlLgoKYGBgCm5wbSBydW4gYnVpbGQKYGBgCgpUaGUgbWluaWZpZWQgZG9jdW1lbnQgaXMgc3RvcmVkIGluIGBfYnVpbGQvb3BlbmFwaS55YW1sYC4KCiMjIyBUZXN0CgpUaGUgY29tbWFuZCBjaGVja3MgaWYgdGhlIGRvY3VtZW50IGZvbGxvd3MgdGhlIE9wZW5BUEkgMy4wIFNwZWNpZmljYXRpb24uCgpgYGAKbnBtIHJ1biB0ZXN0CmBgYAoKIyMjIFByZXZpZXcKClRoZSBjb21tYW5kIGJ1aWxkcyBhIGRvY3Mgc2l0ZSBzbyB0aGF0IHlvdSBjYW4gdmlldyB0aGUgcmVuZGVyaW5nIG9uIHlvdXIgbG9jYWwgYnJvd3Nlci4KCmBgYApucG0gcnVuIHByZXZpZXcKYGBgCgpUaGUgc2VydmVyIHN0YXJ0cyBvbiBodHRwOi8vMTI3LjAuMC4xOjgwODAuCgpUaGUgc2l0ZSBpcyBnZW5lcmF0ZWQgd2l0aCBbUmVEb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jKS4KSGVyZSdzIGEgcHJldmlldyBvZiBhIHNpdGUgZ2VuZXJhdGVkIHdpdGggdGhpcyBjb21tYW5kOiBbU3dhZ2dlciBQZXRzdG9yZSBSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kZ2FyY2lhMzYwLmdpdGh1Yi5pby9vcGVuYXBpLWJvaWxlcnBsYXRlLykuCgojIyBSZWFkeS10by11c2Ugd29ya2Zsb3dzCgpUaGUgcHJvamVjdCB1c2VzIFtHaXRIdWIgQWN0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL2ZlYXR1cmVzL2FjdGlvbnMpIGZvciBDb250aW51b3VzIEludGVncmF0aW9uIChDSSkuCgpPbiBldmVyeSBuZXcgcHVsbCByZXF1ZXN0LCB0aGUgT3BlbkFQSSBkb2N1bWVudCBpcyBsaW50ZWQgd2l0aCBbc3BlY3RyYWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9wbGlnaHRpby9zcGVjdHJhbCkuIElmIHRoZXJlIGFyZSBjaGFuZ2VzIHRoYXQgaW50cm9kdWNlIGVycm9ycywgdGhlIGJvdCB3aWxsIGhpZ2hsaWdodCB0aGVtIHJlcGx5aW5nIHRvIHRoZSBwdWxsIHJlcXVlc3QuCgpXaGVuIHRoZSBkZWZhdWx0IGJyYW5jaCAoZS5nLiBgbWFzdGVyYCkgcmVjZWl2ZXMgYW4gdXBkYXRlLCBhIHdvcmtmbG93IGF1dG9tYXRpY2FsbHkgcHVibGlzaGVzIHRoZSBBUEkgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24gc2l0ZSB0byBHaXRIdWIgUGFnZXMuCgpTZWUgYC5naXRodWIvd29ya2Zsb3dzYCB0byBjdXN0b21pemUgdGhlIGF2YWlsYWJsZSB3b3JrZmxvd3MuIElmIHlvdSBkb24ndCBwbGFuIHRvIHVzZSBHaXRIdWIgdG8gaG9zdCB5b3VyIHNwZWMgb3IgcHJlZmVyIHRvIGtlZXAgZG9jcyBwcml2YXRlLCBkZWxldGUgdGhlIGAuZ2l0aHViYCBmb2xkZXIuCgojIyBDb250cmlidXRpbmcKCkNvbnRyaWJ1dGlvbnMgYXJlIHdlbGNvbWUgYW5kIGFwcHJlY2lhdGVkISAKSWYgeW91IHdhbnQgdG8gZW5oYW5jZSB0aGUgYm9pbGVycGxhdGUsIHBsZWFzZSByZWFkIFtDT05UUklCVVRJTkcubWRdKENPTlRSSUJVVElORy5tZCkgZmlsZSBmaXJzdC4KCiMjIExpY2Vuc2UKCkNvcHlyaWdodCAoYykgMjAxOS1wcmVzZW50IERhdmlkIEdhcmNpYSAoW0BkZ2FyY2lhMzYwXShodHRwczovL2RhdmlkZ2FyY2lhLmRldikpLiBMaWNlbnNlZCB1bmRlciB0aGUgW01JVCBMaWNlbnNlXShMSUNFTlNFLm1kKS4KClRoZSBQZXRTdG9yZSBleGFtcGxlIHVzZWQgaXMgZGVyaXZlZCBmcm9tIFtPQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci9leGFtcGxlcy92My4wL3BldHN0b3JlLnlhbWwpLCBDb3B5cmlnaHQgVGhlIExpbnV4IEZvdW5kYXRpb24sIExpY2Vuc2VkIHVuZGVyIHRoZSBbQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci9MSUNFTlNFKS4K readmeEtag: '"5e63e66202cb0bcfbea0f96bf605f8a2dbe56387"' readmeLastModified: Sat, 18 Jan 2025 01:18:13 GMT repositoryId: 239108172 description: 📘 Multi-file boilerplate for Open API Specification created: '2020-02-08T10:23:15Z' updated: '2025-12-05T17:14:20Z' language: Shell archived: false stars: 399 watchers: 6 forks: 88 owner: dgarcia360 logo: https://avatars.githubusercontent.com/u/9107969?v=4 license: NOASSERTION repoEtag: '"54668576429663b1b945c73c1fe63b68025b555016cf159784817c3c98e5b223"' repoLastModified: Fri, 05 Dec 2025 17:14:20 GMT foundInMaster: true category: - Description Validators - Parsers id: a62d924d146072268eebd4abdf8d51fc - source: openapi3 tags repository: https://github.com/cdimascio/generator-express-no-stress-typescript v3: true repositoryMetadata: base64Readme: >- IyBnZW5lcmF0b3ItZXhwcmVzcy1uby1zdHJlc3MtdHlwZXNjcmlwdAoKIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvc3RhdHVzLXN0YWJsZS1ncmVlbi5zdmcpICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L2dlbmVyYXRvci1leHByZXNzLW5vLXN0cmVzcy10eXBlc2NyaXB0LnN2ZykgWyFbQ29kYWN5IEJhZGdlXShodHRwczovL2FwaS5jb2RhY3kuY29tL3Byb2plY3QvYmFkZ2UvR3JhZGUvMjFlMzYyMDk0YzVhNGMwZGE0ODQxZmMxNzJjZWU5NWQpXShodHRwczovL3d3dy5jb2RhY3kuY29tL2FwcC9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQ/dXRtX3NvdXJjZT1naXRodWIuY29tJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NvbnRlbnQ9Y2RpbWFzY2lvL2dlbmVyYXRvci1leHByZXNzLW5vLXN0cmVzcy10eXBlc2NyaXB0JnV0bV9jYW1wYWlnbj1CYWRnZV9HcmFkZSkgWyFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdHRlci9yb29tL2NkaW1hc2Npby1vc3MvY29tbXVuaXR5P2NvbG9yPSUyM2ViMjA1YSldKGh0dHBzOi8vZ2l0dGVyLmltL2NkaW1hc2Npby1vc3MvY29tbXVuaXR5KSA8IS0tIEFMTC1DT05UUklCVVRPUlMtQkFER0U6U1RBUlQgLSBEbyBub3QgcmVtb3ZlIG9yIG1vZGlmeSB0aGlzIHNlY3Rpb24gLS0+ClshW0FsbCBDb250cmlidXRvcnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvYWxsX2NvbnRyaWJ1dG9ycy0xMC1vcmFuZ2Uuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oI2NvbnRyaWJ1dG9ycy0pCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1CQURHRTpFTkQgLS0+ICFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWJsdWUuc3ZnKQpDcmVhdGUgYXdlc29tZSBbRXhwcmVzcy5qc10oaHR0cDovL3d3dy5leHByZXNzanMuY29tKSBhcHBsaWNhdGlvbnMgd2l0aCBiZXN0IG9mIGJyZWVkIHRlY2ggaW5jbHVkaW5nIFtUeXBlc2NyaXB0XShodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvKSwgc3RydWN0dXJlZCBsb2dnaW5nIHdpdGggW1Bpbm9dKGh0dHBzOi8vZ2l0aHViLmNvbS9waW5vanMvcGlubyksIEFQSSB2YWxpZGF0aW9uIGFuZCBpbnRlcmFjdGl2ZSBkb2N1bWVudGF0aW9uIHZpYSBhbiBbT3BlbkFQSSAzXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIG9yIFtTd2FnZ2VyIDJdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uL3YyLykgc3BlYywgZW52aXJvbm1lbnQgYmFzZWQgY29uZmlnIHdpdGggW2RvdGVudl0oaHR0cHM6Ly9naXRodWIuY29tL21vdGRvdGxhL2RvdGVudikuCgo8cCBhbGlnbj0iY2VudGVyIj4KPGltZyBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQvbWFzdGVyL2Fzc2V0cy9leHByZXNzLW5vLXN0cmVzcy1sb2dvLXRzLmpwZyIKPC9wPgoKZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQgZ2V0cyB5b3UgdXAgYW5kIHJ1bm5pbmcgaW4gc2Vjb25kcy4gSXQncyByaWRpY3Vsb3VzbHkgZWFzeSB0byBjb25maWd1cmUuIEhlY2ssIGp1c3QgdGFrZSB0aGUgZGVmYXVsdHMuIFN0YXJ0IGl0LiBXcml0ZSBjb2RlLgoKVGhpcyBnZW5lcmF0b3Igc2NhZmZvbGRzIGEgZnVsbHkgZnVuY3Rpb25pbmcgUkVTVCBBUEkgc2VydmVyIGNvbXBsZXRlIHdpdGggaW50ZXJhY3RpdmUgZG9jdW1lbnRhdGlvbiwgQVBJIHZhbGlkYXRpb24sIHN0cnVjdHVyZWQgbG9nZ2luZywgZW52aXJvbm1lbnQgZHJpdmVuIGNvbmZpZywgYW5kIG1vcmUuIFNpbXBseSBydW4gdGhlIGdlbmVyYXRvciBhbmQgc21pbGUgOi1ECgpUaGlzIHByb2plY3QgaXMgYSBUeXBlc2NyaXB0IHZhcmlhbnQgb2YgW2dlbmVyYXRvci1leHByZXNzLW5vLXN0cmVzc10oaHR0cHM6Ly9naXRodWIuY29tL2NkaW1hc2Npby9nZW5lcmF0b3ItZXhwcmVzcy1uby1zdHJlc3MpCgpbSGVyZSdzIHdoYXQgeW91IGdldCFdKCN3aGF0LXlvdS1nZXQpCgojIyBJbnN0YWxsCgpfUmVxdWlyZXMgTm9kZSA2IG9yIGdyZWF0ZXJfCgpgYGBzaGVsbApucG0gaW5zdGFsbCAtZyB5byBnZW5lcmF0b3ItZXhwcmVzcy1uby1zdHJlc3MtdHlwZXNjcmlwdApgYGAKCi0gU2VlIFtoZXJlXSgjdXNhZ2UtY2xpKSBmb3IgdXNlIHdpdGggWWFybiBhbmQvb3IgRG9ja2VyCgojIyBTY2FmZm9sZAoKYGBgc2hlbGwKeW8gZXhwcmVzcy1uby1zdHJlc3MtdHlwZXNjcmlwdCBteWFwcApjZCBteWFwcApgYGAKCiMjIFJ1bgoKUnVuIGluIF9kZXZlbG9wbWVudCBtb2RlXzoKCmBgYHNoZWxsCm5wbSBydW4gZGV2CmBgYAoKUGFja2FnZSBhbmQgcnVuIGluIF9wcm9kdWN0aW9uIG1vZGVfCgpgYGBzaGVsbApucG0gcnVuIGNvbXBpbGUKbnBtIHN0YXJ0CmBgYAoKIyMgVGVzdAoKYGBgc2hlbGwKbnBtIHRlc3QKYGBgCgojIyBEZWJ1ZwoKUnVuIG9uZSBvZiB0aGUgZm9sbG93aW5nLCB0aGVuIGF0dGFjaCB5b3VyIGZhdm9yaXRlIGluc3BlY3Rvci4KCmBgYHNoZWxsCiMgZGVidWcgdGhlIHNlcnZlcgpucG0gcnVuIGRldjpkZWJ1ZwoKIyBkZWJ1ZyB0aGUgdGVzdHMKbnBtIHJ1biB0ZXN0OmRlYnVnCmBgYAoKIyMgVHJ5IGl0IQoKLSBJbnRlcmFjdGl2ZSBBUEkgZG9jIGF0IFtodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpLWV4cGxvcmVyXShodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpLWV4cGxvcmVyKQotIExhbmRpbmcgcGFnZSBhdCBbaHR0cDovL2xvY2FsaG9zdDozMDAwXShodHRwOi8vbG9jYWxob3N0OjMwMDApCgotLS0KCiMjIFVzYWdlOiBDTEkKCmBgYHNoZWxsCnlvIGV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQgW2FwcG5hbWVdIFstLXlhcm5dIFstLWRvY2tlcl0KYGBgCgp8IE9wdGlvbiAgICAgfCBkZWZhdWx0IHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IGBhcHBuYW1lYCAgfCBteWFwcCAgIHwgVGhlIGFwcGxpY2F0aW9uIGZvbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGAtLXlhcm5gICAgfCAtICAgICAgIHwgVXNlIHRoZSBbYHlhcm5gXShodHRwczovL3lhcm5wa2cuY29tKSBwYWNrYWdlIG1hbmFnZXIsIGluc3RlYWQgb2YgYG5wbWAgICAgfAp8IGAtLWRvY2tlcmAgfCAgICAgICAgIHwgSW5zdGFsbCBbRG9ja2VyXShodHRwczovL3d3dy5kb2NrZXIuY29tLykgYXJ0aWZhY3RzIGluY2x1ZGluZyBhIERvY2tlcmZpbGUgfAoKIyMgVXNhZ2U6IFByb2plY3QKClRoZSBzZWN0aW9ucyBiZWxvdyBkZXNjcmliZSBhbGwgdXNhZ2Ugb3B0aW9ucyBhdmFpbGFibGUgb25jZSB0aGUgcHJvamVjdCBpcyBnZW5lcmF0ZWQvc2NhZmZvbGRlZC4KCiMjIyBucG0gdGFyZ2V0cwoKfCBUYXJnZXQgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IGBucG0gcnVuIGRldmAgICAgICAgIHwgUnVuIGluIF9kZXZlbG9wbWVudF8gbW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgbnBtIHJ1biBkZXY6ZGVidWdgICB8IERlYnVnIGluIF9kZXZlbG9wbWVudF8gbW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYG5wbSBydW4gdGVzdGAgICAgICAgfCBSdW4gdGVzdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBucG0gcnVuIHRlc3Q6ZGVidWdgIHwgRGVidWcgdGVzdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgbnBtIHJ1biBjb21waWxlYCAgICB8IFRyYW5zcGlsZSBzb3VyY2UgY29kZSBmb3IgcHJvZHVjdGlvbiB1c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYG5wbSBzdGFydGAgICAgICAgICAgfCBSdW4gdGhlIGluIF9wcm9kdWN0aW9uXyBtb2RlLiBcKlJlcXVpcmVzIHJ1bm5pbmcgYG5wbSBydW4gY29tcGlsZWAgZmlyc3QgfAoKIyMjIERlcGxveSB0byB0aGUgQ2xvdWQKCmUuZy4gQ2xvdWRGb3VuZHJ5CgpgYGAKY2YgcHVzaCBteWFwcApgYGAKCiMjIyBVc2UgWWFybgoKYGBgCiMgc2NhZmZvbGQKeW8gZXhwcmVzcy1uby1zdHJlc3MtdHlwZXNjcmlwdCBteWFwcCAtLXlhcm4KCiMgc3RhcnQKY2QgbXlhcHAKbnBtIHN0YXJ0CmBgYAoKLS0tCgojIyBXaGF0IHlvdSBnZXQhCgotIFtUeXBlc2NyaXB0XShodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvKSAtIFR5cGVzY3JpcHQgaXMgYSB0eXBlZCBzdXBlcnNldCBvZiBKYXZhU2NyaXB0IHRoYXQgY29tcGlsZXMgdG8gcGxhaW4gSmF2YVNjcmlwdAotIFtFeHByZXNzLmpzXShodHRwczovL3d3dy5leHByZXNzanMuY29tKSAtIEZhc3QsIHVub3BpbmlvbmF0ZWQKICAsIG1pbmltYWxpc3Qgd2ViIGZyYW1ld29yayBmb3IgTm9kZS5qcwotIFtQaW5vXShodHRwczovL2dpdGh1Yi5jb20vcGlub2pzL3Bpbm8pIC0gRXh0cmVtZWx5IGZhc3Qgbm9kZS5qcyBsb2dnZXIsIGluc3BpcmVkIGJ5IEJ1bnlhbi4gSXQgYWxzbyBpbmNsdWRlcyBhIHNoZWxsIHV0aWxpdHkgdG8gcHJldHR5LXByaW50IGl0cyBsb2cgZmlsZXMKLSBbZG90ZW52XShodHRwczovL2dpdGh1Yi5jb20vbW90ZG90bGEvZG90ZW52KSAtIExvYWRzIGVudmlyb25tZW50IHZhcmlhYmxlcyBmcm9tIC5lbnYgZm9yIG5vZGVqcyBwcm9qZWN0cwotIFtTd2FnZ2VyXShodHRwOi8vc3dhZ2dlci5pby8pIC0gaXMgYSBzaW1wbGUgeWV0IHBvd2VyZnVsIHJlcHJlc2VudGF0aW9uIG9mIHlvdXIgUkVTVGZ1bCBBUEkuCi0gW1N3YWdnZXJVSV0oaHR0cDovL3N3YWdnZXIuaW8vKSAtIGR5bmFtaWNhbGx5IGdlbmVyYXRlIGJlYXV0aWZ1bCBkb2N1bWVudGF0aW9uIGFuZCBzYW5kYm94IGZyb20gYSBTd2FnZ2VyLWNvbXBsaWFudCBBUEkKCiMjIyBBUEkgVmFsaWRhdGlvbgoKU2ltcGx5IGRlc2NyaWJlIHlvdXIgQVBJcyB3aXRoIFN3YWdnZXIgYW5kIGF1dG9tYWdpY2FsbHkgZ2V0IGZvciBmcmVlOgoKLSBJbnRlcmFjdGl2ZSBkb2N1bWVudGF0aW9uCi0gQVBJIHZhbGlkYXRpb24KCiMjIyMgSW50ZXJhY3RpdmUgQVBJIERvYwoKIVtdKGh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQvcmF3L21hc3Rlci9hc3NldHMvaW50ZXJhY3RpdmUtZG9jMS5wbmcpCgojIyMjIEFQSSBWYWxpZGF0aW9uIQoKT29wcyEgSSB0aGUgQVBJIGNhbGxlciBmb3Jnb3QgdG8gcGFzcyBhIGBuYW1lYCBmaWVsZCwgbm8gc3RyZXNzLCB3ZSd2ZSBnb3QgdGhpcyEKCiFbXShodHRwczovL2dpdGh1Yi5jb20vY2RpbWFzY2lvL2dlbmVyYXRvci1leHByZXNzLW5vLXN0cmVzcy10eXBlc2NyaXB0L3Jhdy9tYXN0ZXIvYXNzZXRzL2FwaS12YWxpZGF0aW9uLnBuZykKCiMjIyBTdHJ1Y3R1cmVkIExvZ2dpbmcKClN0cnVjdHVyZWQgbG9nZ2luZyBvdXQgb2YgdGhlIGJveCEKCiMjIyMgcmF3CgohW10oaHR0cHM6Ly9naXRodWIuY29tL2NkaW1hc2Npby9nZW5lcmF0b3ItZXhwcmVzcy1uby1zdHJlc3MtdHlwZXNjcmlwdC9yYXcvbWFzdGVyL2Fzc2V0cy9sb2dnaW5nLXJhdy5wbmcpCgojIyMjIHByZXR0eQoKU3RydWN0dXJlZCBsb2dnaW5nIHByZXR0eSBwcmludGVkIGJ5IGRlZmF1bHQgLSBncmVhdCBmb3IgZGV2IQoKIVtdKGh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQvcmF3L21hc3Rlci9hc3NldHMvbG9nZ2luZy1wcmV0dHkucG5nKQoKIyMjIEFQSSBWYWxpZGF0aW9uIEV4YW1wbGUKClNpbXBseSBkZXNjcmliZSB5b3VyIEFQSXMgd2l0aCBTd2FnZ2VyIGFuZCBhdXRvbWF0aWNhbGx5IGdldDoKCi0gQVBJIHJlcXVlc3QgdmFsaWRhdGlvbgotIEludGVyYWN0aXZlIGRvY3VtZW50YXRpb24KCiMjIyBleGFtcGxlCgojIyMjIFN3YWdnZXIgQVBJIHNwZWMKCmBgYHlhbWwKc3dhZ2dlcjogJzIuMCcKaW5mbzoKICB2ZXJzaW9uOiAxLjAuMAogIHRpdGxlOiBteWFwcAogIGRlc2NyaXB0aW9uOiBNeSBjb29sIGFwcApiYXNlUGF0aDogL2FwaS92MQp0YWdzOgogIC0gbmFtZTogRXhhbXBsZXMKICAgIGRlc2NyaXB0aW9uOiBTaW1wbGUgZXhhbXBsZSBlbmRwb2ludHMKICAtIG5hbWU6IFNwZWNpZmljYXRpb24KICAgIGRlc2NyaXB0aW9uOiBUaGUgc3dhZ2dlciBBUEkgc3BlY2lmaWNhdGlvbgoKY29uc3VtZXM6CiAgLSBhcHBsaWNhdGlvbi9qc29uCnByb2R1Y2VzOgogIC0gYXBwbGljYXRpb24vanNvbgoKZGVmaW5pdGlvbnM6CiAgRXhhbXBsZUJvZHk6CiAgICB0eXBlOiBvYmplY3QKICAgIHRpdGxlOiBleGFtcGxlCiAgICByZXF1aXJlZDoKICAgICAgLSBuYW1lCiAgICBwcm9wZXJ0aWVzOgogICAgICBuYW1lOgogICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIGV4YW1wbGU6IG5vX3N0cmVzcwoKcGF0aHM6CiAgL2V4YW1wbGVzOgogICAgZ2V0OgogICAgICB0YWdzOgogICAgICAgIC0gRXhhbXBsZXMKICAgICAgZGVzY3JpcHRpb246IEZldGNoIGFsbCBleGFtcGxlcwogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgZGVzY3JpcHRpb246IFJldHVybnMgYWxsIGV4YW1wbGVzCiAgICBwb3N0OgogICAgICB0YWdzOgogICAgICAgIC0gRXhhbXBsZXMKICAgICAgZGVzY3JpcHRpb246IENyZWF0ZSBhIG5ldyBleGFtcGxlCiAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgLSBuYW1lOiBleGFtcGxlCiAgICAgICAgICBpbjogYm9keQogICAgICAgICAgZGVzY3JpcHRpb246IGFuIGV4YW1wbGUKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICRyZWY6ICcjL2RlZmluaXRpb25zL0V4YW1wbGVCb2R5JwogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgZGVzY3JpcHRpb246IFJldHVybnMgYWxsIGV4YW1wbGVzCgogIC9leGFtcGxlcy97aWR9OgogICAgZ2V0OgogICAgICB0YWdzOgogICAgICAgIC0gRXhhbXBsZXMKICAgICAgcGFyYW1ldGVyczoKICAgICAgICAtIG5hbWU6IGlkCiAgICAgICAgICBpbjogcGF0aAogICAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICAgIGRlc2NyaXB0aW9uOiBUaGUgaWQgb2YgdGhlIGV4YW1wbGUgdG8gcmV0cmlldmUKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgcmVzcG9uc2VzOgogICAgICAgIDIwMDoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBSZXR1cm4gdGhlIGV4YW1wbGUgd2l0aCB0aGUgc3BlY2lmaWVkIGlkCiAgICAgICAgNDA0OgogICAgICAgICAgZGVzY3JpcHRpb246IEV4YW1wbGUgbm90IGZvdW5kCgogIC9zcGVjOgogICAgZ2V0OgogICAgICB0YWdzOgogICAgICAgIC0gU3BlY2lmaWNhdGlvbgogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgZGVzY3JpcHRpb246IFJldHVybiB0aGUgQVBJIHNwZWNpZmljYXRpb24KYGBgCgojIyMjIEludm9rZSBhIFBPU1QgcmVxdWVzdCB2aWEgdGhlIEludGVyYWN0aXZlIGRvYwoKIVtdKGh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQvcmF3L21hc3Rlci9hc3NldHMvaW50ZXJhY3RpdmUtZG9jLnBuZykKCiMjIEZBUQoqKlEqKjogSG93IGRvIEkgbW9kaWZ5IHRoZSBleGFtcGxlIEFQSSBhbmQgbWFrZSBpdCBteSBvd24/CgoqKkEqKjogVGhlcmUgYXJlIHR3byBrZXkgZmlsZXMgdGhhdCBlbmFibGUgeW91IHRvIGN1c3RvbWl6ZSBhbmQgZGVzY3JpYmUgeW91ciBBUEk6CjEuIGBzZXJ2ZXIvcm91dGVzLnRzYCAtIFRoaXMgcmVmZXJlbmNlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYWxsIG9mIHlvdXIgcm91dGVzLiBBZGQgYXMgbWFueSByb3V0ZXMgYXMgeW91IGxpa2UgYW5kIHBvaW50IGVhY2ggcm91dGUgeW91ciBleHByZXNzIGhhbmRsZXIgZnVuY3Rpb25zLgoyLiBgc2VydmVyL2NvbW1vbi9hcGkueWFtbGAgLSBUaGlzIGZpbGUgY29udGFpbnMgeW91ciBbT3BlbkFQSSBzcGVjXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pLiBEZXNjcmliZSB5b3VyIEFQSSBoZXJlLiBJdCdzIHJlY29tbWVuZGVkIHRoYXQgeW91IHRvIGRlY2xhcmUgYW55IGFuZCBhbGwgdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGlzIFlBTUwuIGBleHByZXNzLW5vLXN0cmVzcy10eXBlc2NyaXB0YCAgdXNlcyBbZXhwcmVzcy1vcGVuYXBpLXZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL2NkaW1hc2Npby9leHByZXNzLW9wZW5hcGktdmFsaWRhdG9yKSB0byBhdXRvbWF0aWNhbGx5IGhhbmRsZSBhbGwgQVBJIHZhbGlkYXRpb24gYmFzZWQgb24gd2hhdCB5b3UndmUgZGVmaW5lZCBpbiB0aGUgc3BlYy4KCioqUSoqOiBJIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGFuIGFwcCwgYnV0IEkgd2FudCB0byBjaGFuZ2UgdGhlIEFQSSByb290LiBIb3cgZG8gSSBkbyB0aGlzPwoKKipBKio6IFlvdSBuZWVkIHRvIG1ha2UgdG8gc21hbGwgY2hhbmdlcwogIDEuIE1vZGlmeSBgc2VydmVyL3JvdXRlcy50c2AKICBgYGBqYXZhc2NyaXB0CiAgICAgLy8gQ2hhbmdlIHlvdXIgb3JpZ2luYWwgcGF0aCBlLmcuIC9hcGkvdjEvZXhhbXBsZXMsIHRvOgogICAgIGFwcC51c2UoJy9hcGkvdjIvZXhhbXBsZXMnLCBleGFtcGxlc1JvdXRlcik7CiAgIGBgYAoKICAyLiBNb2RpZnkgYHNlcnZlci9jb21tb24vYXBpLnlhbWxgIGFuZCB1cGRhdGUgdGhlIGFwaSByb290OgogIGBgYHlhbWwKICAgICMgQ2hhbmdlIGUuZy4gL2FwaS92MSB0byAvYXBpL3YyCiAgICBzZXJ2ZXJzOgogICAgLSB1cmw6IC9hcGkvdjIgICAKICBgYGAKCiMjIExpY2Vuc2UKCltNSVRdKExJQ0VOU0UpCgo8YSBocmVmPSJodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL205N3RBNWMiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9ibWMtY2RuLm55YzMuZGlnaXRhbG9jZWFuc3BhY2VzLmNvbS9CTUMtYnV0dG9uLWltYWdlcy9jdXN0b21faW1hZ2VzL29yYW5nZV9pbWcucG5nIiBhbHQ9IkJ1eSBNZSBBIENvZmZlZSIgc3R5bGU9ImhlaWdodDogYXV0byAhaW1wb3J0YW50O3dpZHRoOiBhdXRvICFpbXBvcnRhbnQ7IiA+PC9hPgoKIyMgQ29udHJpYnV0b3JzIOKcqAoKVGhhbmtzIGdvZXMgdG8gdGhlc2Ugd29uZGVyZnVsIHBlb3BsZSAoW2Vtb2ppIGtleV0oaHR0cHM6Ly9hbGxjb250cmlidXRvcnMub3JnL2RvY3MvZW4vZW1vamkta2V5KSk6Cgo8IS0tIEFMTC1DT05UUklCVVRPUlMtTElTVDpTVEFSVCAtIERvIG5vdCByZW1vdmUgb3IgbW9kaWZ5IHRoaXMgc2VjdGlvbiAtLT4KPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CjwhLS0gbWFya2Rvd25saW50LWRpc2FibGUgLS0+Cjx0YWJsZT4KICA8dHI+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmJyYWttaWMuY29tIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMS5naXRodWJ1c2VyY29udGVudC5jb20vdS81Njc3OT92PTQiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5IYXJyaXMgQnJha21pxIc8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQvY29tbWl0cz9hdXRob3I9YnJha21pYyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL3B1YmtleXB1YmtleSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvODkyNjU2MD92PTQiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5EYW5pZWwgTWV5ZXI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQvY29tbWl0cz9hdXRob3I9cHVia2V5IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vb3Rha3UuY29kZXMiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEzNjAzMDQ1P3Y9NCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPlZpcmFqIFRyaXZlZGk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQvY29tbWl0cz9hdXRob3I9aW5mM2N0aTBuOTUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Vyb25seTE0bWUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUxODY4MTQ/dj00IiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+U2FuZ2Jlb20gSGFuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2RpbWFzY2lvL2dlbmVyYXRvci1leHByZXNzLW5vLXN0cmVzcy10eXBlc2NyaXB0L2NvbW1pdHM/YXV0aG9yPXVyb25seTE0bWUiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cDovL3d3dy5zdGVmZGVnb2V5Lm5sIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20vdS8zOTA3NDg4P3Y9NCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPlN0ZWYgZGUgR29leTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NkaW1hc2Npby9nZW5lcmF0b3ItZXhwcmVzcy1uby1zdHJlc3MtdHlwZXNjcmlwdC9jb21taXRzP2F1dGhvcj1TdGVmZmlvbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vUm9nZXJtYXgiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMxLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI2MzMyNTQ/dj00IiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+Um9nZXI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQvY29tbWl0cz9hdXRob3I9Um9nZXJtYXgiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2JhZ29manVpY2UiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEzOTUxNzI/dj00IiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+VmlrYXNoIENoYXVoYW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQvY29tbWl0cz9hdXRob3I9YmFnb2ZqdWljZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQvY29tbWl0cz9hdXRob3I9YmFnb2ZqdWljZSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdHNla2l0eWFtIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zODE0NDIyP3Y9NCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPlRzZSBLaXQgWWFtPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2RpbWFzY2lvL2dlbmVyYXRvci1leHByZXNzLW5vLXN0cmVzcy10eXBlc2NyaXB0L2NvbW1pdHM/YXV0aG9yPXRzZWtpdHlhbSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQvY29tbWl0cz9hdXRob3I9dHNla2l0eWFtIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9AcmxrYW1yYWR0Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS82ODgzMzc5P3Y9NCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPlJhbmR5IEthbXJhZHQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQvY29tbWl0cz9hdXRob3I9cmthbXJhZHQiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLzJ1NnozcjAiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwODUzMzI5P3Y9NCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPlZpdHRoYWwgUGF0aWw8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jZGltYXNjaW8vZ2VuZXJhdG9yLWV4cHJlc3Mtbm8tc3RyZXNzLXR5cGVzY3JpcHQvY29tbWl0cz9hdXRob3I9MnU2ejNyMCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKPCEtLSBtYXJrZG93bmxpbnQtZW5hYmxlIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+CjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1MSVNUOkVORCAtLT4KClRoaXMgcHJvamVjdCBmb2xsb3dzIHRoZSBbYWxsLWNvbnRyaWJ1dG9yc10oaHR0cHM6Ly9naXRodWIuY29tL2FsbC1jb250cmlidXRvcnMvYWxsLWNvbnRyaWJ1dG9ycykgc3BlY2lmaWNhdGlvbi4gQ29udHJpYnV0aW9ucyBvZiBhbnkga2luZCB3ZWxjb21lIQo= readmeEtag: '"b63ae9822a116621de960c355e030d3d66bc82f2"' readmeLastModified: Mon, 30 May 2022 18:08:34 GMT repositoryId: 92780080 description: >- 🚄 A Yeoman generator for Express.js based 12-factor apps and apis using Typescript created: '2017-05-29T22:33:47Z' updated: '2025-10-25T21:54:41Z' language: TypeScript archived: false stars: 363 watchers: 7 forks: 40 owner: cdimascio logo: https://avatars.githubusercontent.com/u/4706618?v=4 license: MIT repoEtag: '"7422c5769ab75b668faafae8726f997ddd2afb9ea3f4dc87569328af9390a5fe"' repoLastModified: Sat, 25 Oct 2025 21:54:41 GMT foundInMaster: true category: Description Validators id: ec24bd83d219c38af4319203892ff3cb - source: openapi3 tags repository: https://github.com/postmanlabs/observability-cli v3: true repositoryMetadata: base64Readme: >- IyBXZWxjb21lISDwn5GLCgpUaGUgZmFzdGVzdCBhbmQgZWFzaWVzdCB3YXkgdG8gdW5kZXJzdGFuZCB5b3VyIEFQSXMuCgpCdWlsdCBmb3IgYnVzeSBkZXZlbG9wZXIgdGVhbXMgd2hvIGRvbid0IGhhdmUgdGltZSB0byBiZWNvbWUgZXhwZXJ0cyBpbiBtb25pdG9yaW5nIGFuZCBvYnNlcnZhYmlsaXR5LCBBa2l0YSBtYWtlcyBpdCBwb3NzaWJsZSB0byBxdWlja2x5IGRpc2NvdmVyIGFsbCB5b3VyIEFQSSBlbmRwb2ludHMsIHNlZSB3aGljaCBhcmUgc2xvd2VzdCwgYW5kIGxlYXJuIHdoaWNoIGhhdmUgZXJyb3JzLiBObyBTREtzIG9yIGNvZGUgY2hhbmdlcyBuZWNlc3NhcnkuCgogICogKipHZXQgcGx1Zy1hbmQtcGxheSBBUEkgbW9uaXRvcmluZy4qKiBFeHBsb3JlIGFuZCBzaGFyZSBwZXItZW5kcG9pbnQgdm9sdW1lLCBsYXRlbmN5LCBhbmQgZXJyb3JzLiBTZXQgcGVyLWVuZHBvaW50IGFsZXJ0cy4KICAqICoqU2VlIEFQSSBlbmRwb2ludHMuKiogQXV0b21hdGljYWxseSBnZXQgYSBzZWFyY2hhYmxlIG1hcCBvZiB5b3VyIEFQSSBlbmRwb2ludHMgaW4gdXNlLiBFeHBsb3JlIGJ5IGxhdGVuY3ksIGVycm9ycywgYW5kIHVzYWdlLiBFeHBvcnQgYXMgT3BlbkFQSSBzcGVjcy4KCkRyb3AgQWtpdGEgaW50byB5b3VyIHN5c3RlbSB0byB1bmRlcnN0YW5kIHlvdXIgYXBwbGljYXRpb27igJlzIGJlaGF2aW9yLCB3aXRob3V0IGhhdmluZyB0byBpbnN0cnVtZW50IGNvZGUgb3IgYnVpbGQgeW91ciBvd24gZGFzaGJvYXJkcy4KCldlJ3JlIGluIG9wZW4gYmV0YSBhbmQgd291bGQgbG92ZSB0byBoYXZlIHlvdSB0cnkgdXMgb3V0ISBbQ3JlYXRlIGFuIGFjY291bnQgaW4gdGhlIEFraXRhIEFwcF0oaHR0cHM6Ly9hcHAuYWtpdGEuc29mdHdhcmUvbG9naW4/c2lnbl91cCkgdG8gZ2V0IHN0YXJ0ZWQuCgogIFtBYm91dCB0aGlzIHJlcG9dKCNhYm91dC10aGlzLXJlcG8pCnwgW1J1bm5pbmcgdGhpcyByZXBvXSgjcnVubmluZy10aGlzLXJlcG8pCnwgW0dldHRpbmcgaW52b2x2ZWRdKCNnZXR0aW5nLWludm9sdmVkKQp8IFtSZWxhdGVkIGxpbmtzXSgjcmVsYXRlZC1saW5rcykKCiMjIEFib3V0IHRoaXMgcmVwbwpUaGlzIGlzIHRoZSBvcGVuLXNvdXJjZSByZXBvc2l0b3J5IGZvciB0aGUgY29tbXVuaXR5IHZlcnNpb24gb2Ygb3VyIENMSSwgYW5kIGlzCmludGVuZGVkIGZvciB1c2Ugd2l0aCB0aGUgQWtpdGEgY29uc29sZS4gVGhpcyBjb21tdW5pdHkgdmVyc2lvbiBvZiB0aGUgQ0xJIGRvZXMKbm90IGluY2x1ZGUgZnVuY3Rpb25hbGl0eSBmb3IgaW5mZXJyaW5nIHR5cGVzIGFuZCBkYXRhIGZvcm1hdHMuIFRoaXMKZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgb25seSBpbiB0aGUgYGFraXRhYCBiaW5hcnkgdGhhdCB3ZSBkaXN0cmlidXRlLgoKIyMgUnVubmluZyB0aGlzIHJlcG8KCiMjIyBIb3cgdG8gYnVpbGQKUnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHdpbGwgZ2VuZXJhdGUgdGhlIGBha2l0YS1jbGlgIGJpbmFyeToKMS4gSW5zdGFsbCBbR28gMS4xOCBvciBhYm92ZV0oaHR0cHM6Ly9nb2xhbmcub3JnL2RvYy9pbnN0YWxsKS4gCjIuIEluc3RhbGwgYGxpYnBjYXBgCiAgICAtIEZvciBIb21lYnJldyBvbiBtYWM6IGBicmV3IGluc3RhbGwgbGlicGNhcGAKICAgIC0gRm9yIFVidW50dS9EZWJpYW46IGBhcHQtZ2V0IGluc3RhbGwgbGlicGNhcC1kZXZgCjMuIGBtYWtlYAoKCiMjIyBIb3cgdG8gdGVzdAoKMS4gSW5zdGFsbCBbZ29tb2NrXShodHRwczovL2dpdGh1Yi5jb20vZ29sYW5nL21vY2spOiBgZ28gZ2V0IGdpdGh1Yi5jb20vZ29sYW5nL21vY2svbW9ja2dlbmAKMi4gYG1ha2UgdGVzdGAKCiMjIyBIb3cgdG8gdXNlCgpTZWUgb3VyIGRvY3M6IFtTaW5nbGUgSG9zdC9WTV0oaHR0cHM6Ly9kb2NzLmFraXRhLnNvZnR3YXJlL2RvY3MvcnVuLWxvY2FsbHkpLgoKTm90ZTogaWYgeW91J3JlIHBsYW5uaW5nIHRvIHVzZSB0aGUgQWtpdGEgQ0xJIHdpdGggdGhlIEFraXRhIENvbnNvbGUsIHdlIHJlY29tbWVuZCB1c2luZyBvdXIgW3N0YXRpY2FsbHkgbGlua2VkIGJpbmFyaWVzXShodHRwczovL2dpdGh1Yi5jb20vYWtpdGFzb2Z0d2FyZS9ha2l0YS1jbGkvcmVsZWFzZXMpIGlmIHBvc3NpYmxlLgoKIyMgR2V0dGluZyBpbnZvbHZlZAoqIFBsZWFzZSBmaWxlIGJ1Z3MgYXMgaXNzdWVzIHRvIHRoaXMgcmVwb3NpdG9yeS4KKiBXZSB3ZWxjb21lIGNvbnRyaWJ1dGlvbnMhIElmIHlvdSB3YW50IHRvIG1ha2UgY2hhbmdlcyBvciBidWlsZCB5b3VyIG93bgogIGV4dGVuc2lvbnMgdG8gdGhlIENMSSBvbiB0b3Agb2YgdGhlCiAgW0FraXRhIElSXShodHRwczovL2dpdGh1Yi5jb20vYWtpdGFzb2Z0d2FyZS9ha2l0YS1pciksIHBsZWFzZSBzZWUgb3VyCiAgW0NPTlRSSUJVVElOR10oQ09OVFJJQlVUSU5HLm1kKSBkb2MuCiogV2UncmUgYWx3YXlzIGhhcHB5IHRvIGFuc3dlciBhbnkgcXVlc3Rpb25zIGFib3V0IHRoZSBDTEksIG9yIGFib3V0IGhvdyB5b3UKICBjYW4gY29udHJpYnV0ZS4gRW1haWwgdXMgYXQgYG9wZW5zb3VyY2UgW2F0XSBha2l0YXNvZnR3YXJlIFtkb3RdIGNvbWAgb3IKICBbcmVxdWVzdCB0byBqb2luIG91ciBTbGFja10oaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZm9ybXMvZC9lLzFGQUlwUUxTZkYtTWY0TGlfRHF5c0NIeTA0MklCZnZ0cFVESEdZclY2RE9IWmxKY1FWOE9JbEFBL3ZpZXdmb3JtP3VzcD1zZl9saW5rKSEKCiMjIFJlbGF0ZWQgbGlua3MKKiBbQWtpdGEgYmxvZ10oaHR0cHM6Ly93d3cuYWtpdGFzb2Z0d2FyZS5jb20vYmxvZykKKiBbQWtpdGEgZG9jc10oaHR0cHM6Ly9kb2NzLmFraXRhLnNvZnR3YXJlLykKKiBbSm9pbiBvcGVuIGJldGFdKGh0dHBzOi8vYXBwLmFraXRhLnNvZnR3YXJlL2xvZ2luP3NpZ25fdXApCg== readmeEtag: '"7d8eae25730c84ff929c923fd1c8096380108121"' readmeLastModified: Tue, 21 May 2024 10:07:09 GMT repositoryId: 340217357 description: >- The Akita CLI helps you make sense of API traffic. Passively watch API traffic with apidump. Model API behavior with apispec. Compare API behavior with apidiff. created: '2021-02-19T00:43:53Z' updated: '2026-02-04T10:25:09Z' language: Go archived: true stars: 365 watchers: 6 forks: 38 owner: postmanlabs logo: https://avatars.githubusercontent.com/u/10251060?v=4 license: Apache-2.0 repoEtag: '"671dd9f643e4d438d55bb98e467b77defe7d9523491060bc06ed22c87bfff6c0"' repoLastModified: Wed, 04 Feb 2026 10:25:09 GMT foundInMaster: true category: - SDK - Server Implementations id: d68f71ef1b50d8a54f410d403edf4ec3 oldLocations: - https://github.com/akitasoftware/akita-cli - source: openapi3 tags repository: https://github.com/ethereum/beacon-apis v3: true repositoryMetadata: base64Readme: >- IyBFdGhlcmV1bSBCZWFjb24gQVBJcwoKWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9iZWFjb24tQVBJcy93b3JrZmxvd3MvQ0kvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2JlYWNvbi1BUElzL2FjdGlvbnMvd29ya2Zsb3dzL21haW4ueW1sP3F1ZXJ5PWJyYW5jaCUzQW1hc3RlcikKCkNvbGxlY3Rpb24gb2YgUkVTVGZ1bCBBUElzIHByb3ZpZGVkIGJ5IEV0aGVyZXVtIEJlYWNvbiBub2RlcwoKQVBJIGJyb3dzZXI6IFtodHRwczovL2V0aGVyZXVtLmdpdGh1Yi5pby9iZWFjb24tQVBJcy9dKGh0dHBzOi8vZXRoZXJldW0uZ2l0aHViLmlvL2JlYWNvbi1BUElzLykKCiMjIE91dGxpbmUKClRoaXMgZG9jdW1lbnQgb3V0bGluZXMgYW4gYXBwbGljYXRpb24gcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIChBUEkpIHdoaWNoIGlzIGV4cG9zZWQgYnkgYSBiZWFjb24gbm9kZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRXRoZXJldW0gW2NvbnNlbnN1cyBsYXllciBzcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcykuCgpUaGUgQVBJIGlzIGEgUkVTVCBpbnRlcmZhY2UsIGFjY2Vzc2VkIHZpYSBIVFRQLiBUaGUgQVBJIHNob3VsZCBub3QsIHVubGVzcyBwcm90ZWN0ZWQgYnkgYWRkaXRpb25hbCBzZWN1cml0eSBsYXllcnMsIGJlIGV4cG9zZWQgdG8gdGhlIHB1YmxpYyBJbnRlcm5ldCBhcyB0aGUgQVBJIGluY2x1ZGVzIG11bHRpcGxlIGVuZHBvaW50cyB3aGljaCBjb3VsZCBvcGVuIHlvdXIgbm9kZSB0byBkZW5pYWwtb2Ytc2VydmljZSAoRG9TKSBhdHRhY2tzIHRocm91Z2ggZW5kcG9pbnRzIHRyaWdnZXJpbmcgaGVhdnkgcHJvY2Vzc2luZy4KIEN1cnJlbnRseSwgdGhlIG9ubHkgc3VwcG9ydGVkIHJldHVybiBkYXRhIHR5cGUgaXMgSlNPTi4KClRoZSBiZWFjb24gbm9kZSAoQk4pIG1haW50YWlucyB0aGUgc3RhdGUgb2YgdGhlIGJlYWNvbiBjaGFpbiBieSBjb21tdW5pY2F0aW5nIHdpdGggb3RoZXIgYmVhY29uIG5vZGVzIGluIHRoZSBFdGhlcmV1bSBuZXR3b3JrLgpDb25jZXB0dWFsbHksIGl0IGRvZXMgbm90IG1haW50YWluIGtleXBhaXJzIHRoYXQgcGFydGljaXBhdGUgd2l0aCB0aGUgYmVhY29uIGNoYWluLgoKVGhlIHZhbGlkYXRvciBjbGllbnQgKFZDKSBpcyBhIGNvbmNlcHR1YWxseSBzZXBhcmF0ZSBlbnRpdHkgd2hpY2ggdXRpbGl6ZXMgcHJpdmF0ZSBrZXlzCnRvIHBlcmZvcm0gdmFsaWRhdG9yIHJlbGF0ZWQgdGFza3MsIGNhbGxlZCAiZHV0aWVzIiwgb24gdGhlIGJlYWNvbiBjaGFpbi4KIFRoZXNlIGR1dGllcyBpbmNsdWRlIHRoZSBwcm9kdWN0aW9uIG9mIGJlYWNvbiBibG9ja3MgYW5kIHNpZ25pbmcgb2YgYXR0ZXN0YXRpb25zLgoKVGhlIGdvYWwgb2YgdGhpcyBzcGVjaWZpY2F0aW9uIGlzIHRvIHByb21vdGUgaW50ZXJvcGVyYWJpbGl0eSBiZXR3ZWVuIHZhcmlvdXMgYmVhY29uIG5vZGUgaW1wbGVtZW50YXRpb25zLgoKIyMgUmVuZGVyClRvIHJlbmRlciBzcGVjIGluIGJyb3dzZXIgeW91IHdpbGwgbmVlZCBhbnkgaHR0cCBzZXJ2ZXIgdG8gbG9hZCBgaW5kZXguaHRtbGAgZmlsZQppbiByb290IG9mIHRoZSByZXBvLgoKIyMjIyMgUHl0aG9uCmBgYApweXRob24gLW0gaHR0cC5zZXJ2ZXIgODA4MApgYGAKQW5kIGFwaSBzcGVjIHdpbGwgcmVuZGVyIG9uIFtodHRwOi8vbG9jYWxob3N0OjgwODBdKGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCkuCgojIyMjIyBOb2RlSnMKYGBgCm5wbSBpbnN0YWxsIHNpbXBsZWh0dHBzZXJ2ZXIgLWcKCiMgT1IKCnlhcm4gZ2xvYmFsIGFkZCBzaW1wbGVodHRwc2VydmVyCgpzaW1wbGVodHRwc2VydmVyCmBgYApBbmQgYXBpIHNwZWMgd2lsbCByZW5kZXIgb24gW2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMF0oaHR0cDovL2xvY2FsaG9zdDo4MDAwKS4KCiMjIyBVc2FnZQoKTG9jYWwgY2hhbmdlcyB3aWxsIGJlIG9ic2VydmFibGUgaWYgImRldiIgaXMgc2VsZWN0ZWQgaW4gdGhlICJTZWxlY3QgYSBkZWZpbml0aW9uIiBkcm9wLWRvd24gaW4gdGhlIHdlYiBVSS4KClVzZXJzIG1heSBuZWVkIHRvIHRpY2sgdGhlICJEaXNhYmxlIENhY2hlIiBib3ggaW4gdGhlaXIgYnJvd3NlcidzIGRldmVsb3BlciB0b29scyB0byBzZWUgY2hhbmdlcyBhZnRlciBtb2RpZnlpbmcgdGhlIHNvdXJjZS4KCiMjIENvbnRyaWJ1dGluZwpBcGkgc3BlYyBpcyBjaGVja2VkIGZvciBsaW50IGVycm9ycyBiZWZvcmUgbWVyZ2UuCgpUbyBydW4gbGludCBsb2NhbGx5LCBpbnN0YWxsIGxpbnRlciB3aXRoCmBgYApucG0gaW5zdGFsbCAtZyBAcmVkb2NseS9jbGkKCiMgT1IKCnlhcm4gZ2xvYmFsIGFkZCBAcmVkb2NseS9jbGkKYGBgCmFuZCBydW4gbGludCB3aXRoCmBgYApyZWRvY2x5IGxpbnQgYmVhY29uLW5vZGUtb2FwaS55YW1sCmBgYAoKIyMgUmVsZWFzaW5nCgpUaGlzIHJlcG9zaXRvcnkgc3VwcG9ydHMgYm90aCBzdGFibGUgYW5kIHByZS1yZWxlYXNlcy4gVGhlIHZlcnNpb24gb2YgdGhlIG5leHQgcmVsZWFzZSBoYXMgdG8gYmUKZGV0ZXJtaW5lZCBiYXNlZCBvbiB0aGUgY2hhbmdlcyBpbiBgbWFzdGVyYCBicmFuY2ggc2luY2UgdGhlIGxhc3Qgc3RhYmxlIHJlbGVhc2UuIEl0IGlzIHJlY29tbWVuZGVkCnRvIGNyZWF0ZSBhIHByZS1yZWxlYXNlIGJlZm9yZSByZWxlYXNpbmcgYSBuZXcgc3RhYmxlIHZlcnNpb24uCgojIyMgU3RhYmxlIHJlbGVhc2VzCgpTdGVwcyB0byBjcmVhdGUgYSBuZXcgc3RhYmxlIHJlbGVhc2U6CgotIENyZWF0ZSBhbmQgcHVzaCBhIHRhZyB3aXRoIHRoZSB2ZXJzaW9uIG9mIHRoZSByZWxlYXNlLCBlLmcuIGB2My4wLjBgCi0gQ0Qgd2lsbCBjcmVhdGUgdGhlIGdpdGh1YiByZWxlYXNlLCB1cGxvYWQgYnVuZGxlZCBzcGVjIGZpbGVzLCBhbmQgb3BlbiBhIHJlbGVhc2UgUFIKLSBSZXZpZXcsIGFwcHJvdmUgYW5kIG1lcmdlIHRoZSByZWxlYXNlIFBSIHRvIGBtYXN0ZXJgIGJyYW5jaAoKIyMjIFByZS1yZWxlYXNlcwoKU3RlcHMgdG8gY3JlYXRlIGEgbmV3IHByZS1yZWxlYXNlOgoKLSBDcmVhdGUgYW5kIHB1c2ggYSB0YWcgd2l0aCB0aGUgdmVyc2lvbiBvZiB0aGUgcmVsZWFzZSwgZS5nLiBgdjMuMC4wLWFscGhhLjBgCi0gQ0Qgd2lsbCBjcmVhdGUgdGhlIGdpdGh1YiByZWxlYXNlIGFuZCB1cGxvYWQgYnVuZGxlZCBzcGVjIGZpbGVzCgpQcmUtcmVsZWFzZXMgd2lsbCBub3QgYmUgbGlzdGVkIGluIGBpbmRleC5odG1sYCBhbmQgYXJlIGludGVuZGVkIHRvIGFsbG93IGVhcmx5IHRlc3RpbmcgYWdhaW5zdCB0aGUgc3BlYy4K readmeEtag: '"7c32a91af8c8125dba03b2a013db6a4d45755c75"' readmeLastModified: Wed, 20 Aug 2025 08:52:45 GMT repositoryId: 202613633 description: Collection of RESTful APIs provided by Ethereum Beacon nodes created: '2019-08-15T21:27:12Z' updated: '2026-02-05T21:31:21Z' language: HTML archived: false stars: 376 watchers: 35 forks: 207 owner: ethereum logo: https://avatars.githubusercontent.com/u/6250754?v=4 license: CC0-1.0 repoEtag: '"7d1028c87b149c2ab7dbf331ae0032f6d647c9376c29c4cc04e1e02b8e1c6d69"' repoLastModified: Thu, 05 Feb 2026 21:31:21 GMT foundInMaster: true category: - Documentation - Server Implementations id: e04baea2e4cda6dd0521496ba97d0ab5 - source: openapi3 tags repository: https://github.com/samchungy/zod-openapi v3: true id: c86edd8c7126bca7973ca68a5b5bd9e1 repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyBzcmM9InpvZC1vcGVuYXBpLnBuZyIgd2lkdGg9IjIwMHB4IiBhbGlnbj0iY2VudGVyIiBhbHQ9InpvZC1vcGVuYXBpIGxvZ28iIC8+CiAgPGgxIGFsaWduPSJjZW50ZXIiPnpvZC1vcGVuYXBpPC9oMT4KPC9wPgo8cCBhbGlnbj0iY2VudGVyIj4KQSBUeXBlU2NyaXB0IGxpYnJhcnkgd2hpY2ggdXNlcyA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29saW5oYWNrcy96b2QiPlpvZDwvYT4gc2NoZW1hcyB0byBnZW5lcmF0ZSBPcGVuQVBJIHYzLnggZG9jdW1lbnRhdGlvbi4KPC9wPgo8ZGl2IGFsaWduPSJjZW50ZXIiPgo8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS96b2Qtb3BlbmFwaSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3Yvem9kLW9wZW5hcGkiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3pvZC1vcGVuYXBpIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vem9kLW9wZW5hcGkiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vbm9kZWpzLm9yZy9lbi8iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL25vZGUvdi96b2Qtb3BlbmFwaSIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NhbWNodW5neS96b2Qtb3BlbmFwaS9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbCI+PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9zYW1jaHVuZ3kvem9kLW9wZW5hcGkvYWN0aW9ucy93b3JrZmxvd3MvdGVzdC55bWwvYmFkZ2Uuc3ZnIi8+PC9hPgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2FtY2h1bmd5L3pvZC1vcGVuYXBpL2FjdGlvbnMvd29ya2Zsb3dzL3JlbGVhc2UueW1sIj48aW1nIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3NhbWNodW5neS96b2Qtb3BlbmFwaS9hY3Rpb25zL3dvcmtmbG93cy9yZWxlYXNlLnltbC9iYWRnZS5zdmciLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWVrLW9zcy9za3ViYSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uv8J+kvyUyMHNrdWJhLXBvd2VyZWQtMDA5REM0Ii8+PC9hPgo8L2Rpdj4KPGJyPgoKIyMgSW5zdGFsbGF0aW9uCgpJbnN0YWxsIHZpYSBgbnBtYCwgYHlhcm5gLCBvciBgcG5wbWA6CgpgYGBiYXNoCm5wbSBpbnN0YWxsIHpvZCB6b2Qtb3BlbmFwaQojIG9yCnlhcm4gYWRkIHpvZCB6b2Qtb3BlbmFwaQojIG9yCnBucG0gaW5zdGFsbCB6b2Qgem9kLW9wZW5hcGkKYGBgCgojIyBVc2FnZQoKIyMjIGAubWV0YSgpYAoKVXNlIFpvZCdzIG5hdGl2ZSBgLm1ldGEoKWAgbWV0aG9kIHRvIGFkZCBPcGVuQVBJIG1ldGFkYXRhIHRvIHlvdXIgc2NoZW1hcy4gVGhpcyBsaWJyYXJ5IGxldmVyYWdlcyBab2QncyBidWlsdC1pbiBtZXRhZGF0YSBmdW5jdGlvbmFsaXR5IC0gbm8gbW9ua2V5IHBhdGNoaW5nIG9yIGFkZGl0aW9uYWwgc2V0dXAgaXMgcmVxdWlyZWQuIFNpbXBseSBjYWxsIGAubWV0YSgpYCBvbiBhbnkgWm9kIHNjaGVtYSBhbmQgaXQgYWNjZXB0cyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIG9wdGlvbnM6Cgo+ICoqTm90ZToqKiBGb3IgZnVsbCBUeXBlU2NyaXB0IHN1cHBvcnQgb2YgT3BlbkFQSSBwcm9wZXJ0aWVzIGluIGAubWV0YSgpYCwgc2ltcGx5IGltcG9ydCBgem9kLW9wZW5hcGlgIGluIHlvdXIgcHJvamVjdCBvciBhZGQgYC8vLyA8cmVmZXJlbmNlIHR5cGVzPSJ6b2Qtb3BlbmFwaSIgLz5gIGFueXdoZXJlIGluIHlvdXIgcHJvamVjdC4gVGhpcyBwcm92aWRlcyBjb21waWxlLXRpbWUgdHlwZSBkZWZpbml0aW9ucyBmb3IgcHJvcGVydGllcyBsaWtlIGBpZGAsIGBwYXJhbWAsIGBoZWFkZXJgLCBldGMuCgp8IE9wdGlvbiAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgYGlkYCAgICAgICB8IFJlZ2lzdGVycyBhIHNjaGVtYSBhcyBhIHJldXNhYmxlIE9wZW5BUEkgY29tcG9uZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBoZWFkZXJgICAgfCBBZGRzIG1ldGFkYXRhIGZvciBbcmVzcG9uc2UgaGVhZGVyc10oI3Jlc3BvbnNlLWhlYWRlcnMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgcGFyYW1gICAgIHwgQWRkcyBtZXRhZGF0YSBmb3IgW3JlcXVlc3QgcGFyYW1ldGVyc10oI3BhcmFtZXRlcnMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYG92ZXJyaWRlYCB8IEFsbG93cyB5b3UgdG8gb3ZlcnJpZGUgdGhlIHJlbmRlcmVkIE9wZW5BUEkgc2NoZW1hLiBUaGlzIHRha2VzIGVpdGhlciBhbiBvYmplY3Qgb3IgYSBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAgfAp8IGBvdXRwdXRJZGAgfCBBbGxvd3MgeW91IHRvIHNldCBhIGRpZmZlcmVudCBJRCBmb3IgdGhlIG91dHB1dCBzY2hlbWEuIFRoaXMgaXMgdXNlZnVsIHdoZW4gdGhlIGlucHV0IGFuZCBvdXRwdXQgc2NoZW1hcyBkaWZmZXIuIHwKfCBgdW51c2VkSU9gIHwgQWxsb3dzIHlvdSB0byBzZXQgdGhlIGBpb2AgZm9yIGFuIHVudXNlZCBzY2hlbWEgYWRkZWQgdG8gdGhlIGNvbXBvbmVudHMgc2VjdGlvbi4gRGVmYXVsdHMgdG8gYG91dHB1dGAuICAgICAgICAgICB8CgpZb3UgY2FuIGFsc28gc2V0IHN0YW5kYXJkIE9wZW5BUEkgcHJvcGVydGllcyBkaXJlY3RseSBpbiBab2QncyBuYXRpdmUgYC5tZXRhKClgIG1ldGhvZCwgc3VjaCBhczoKCmBgYHR5cGVzY3JpcHQKei5zdHJpbmcoKS5tZXRhKHsKICBkZXNjcmlwdGlvbjogJ0EgdGV4dCBmaWVsZCcsCiAgZXhhbXBsZTogJ0V4YW1wbGUgdmFsdWUnLAp9KTsKYGBgCgpZb3UgY2FuIHNldCBhZGRpdGlvbmFsIG1ldGFkYXRhIHRvIHRoZSByZW5kZXJlZCBzY2hlbWEgaW4gYSBmZXcgZGlmZmVyZW50IHdheXMuIFpvZCdzIG5hdGl2ZSBgLm1ldGEoKWAgbWV0aG9kIGFsbG93cyB5b3UgdG8gZGlyZWN0bHkgc2V0IE9wZW5BUEkgcHJvcGVydGllcyB0byB0aGUgc2NoZW1hLiBIb3dldmVyLCBpZiB5b3Ugd2FudGVkIHRvIG92ZXJyaWRlIGFueSBmaWVsZCB0aGF0IFpvZCBnZW5lcmF0ZXMsIHRoaXMgbWF5IG5vdCB3b3JrIGFzIGV4cGVjdGVkLiBJbiB0aGlzIGNhc2UsIHlvdSBjYW4gdXNlIHRoZSBgb3ZlcnJpZGVgIG9wdGlvbiB0byBjdXN0b21pemUgdGhlIHJlbmRlcmVkIE9wZW5BUEkgc2NoZW1hLgoKZWcuCgpgYGB0eXBlc2NyaXB0Cnouc3RyaW5nKCkuZGF0ZXRpbWUoKS5tZXRhKHsKICBkZXNjcmlwdGlvbjogJ0EgZGF0ZSBmaWVsZCcsCiAgZm9ybWF0OiAnTVktRk9STUFUJywKICAneC1jdXN0b20tZmllbGQnOiAnY3VzdG9tIHZhbHVlJywKfSk7CmBgYAoKV291bGQgcmVuZGVyIHRoZSBmb2xsb3dpbmcgT3BlbkFQSSBzY2hlbWEuIE5vdGUgdGhhdCBmb3JtYXQgaXMgbm90IG92ZXJyaWRkZW4gd2l0aCBvdXIgY3VzdG9tIGZvcm1hdCB2YWx1ZS4KCmBgYGpzb24KewogICJ0eXBlIjogInN0cmluZyIsCiAgImZvcm1hdCI6ICJkYXRlLXRpbWUiLAogICJkZXNjcmlwdGlvbiI6ICJBIGRhdGUgZmllbGQiLAogICJ4LWN1c3RvbS1maWVsZCI6ICJjdXN0b20gdmFsdWUiCn0KYGBgCgpJbiBvcmRlciB0byBvdmVycmlkZSBmaWVsZHMgd2hpY2ggYXJlIGdlbmVyYXRlZCBieSBab2Qgb3IgdGhpcyBsaWJyYXJ5LCB5b3UgY2FuIHVzZSB0aGUgYG92ZXJyaWRlYCBvcHRpb24gaW4gWm9kJ3MgYC5tZXRhKClgIG1ldGhvZC4gVGhpcyBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgcmVuZGVyZWQgT3BlbkFQSSBzY2hlbWEgYWZ0ZXIgd2UgaGF2ZSBib3RoIHByb2Nlc3NlZCBpdC4KCiMjIyMjIG92ZXJyaWRlIG9iamVjdAoKVGhpcyBkb2VzIGEgbmFpdmUgbWVyZ2Ugb2YgdGhlIG92ZXJyaWRlIG9iamVjdCB3aXRoIHRoZSByZW5kZXJlZCBPcGVuQVBJIHNjaGVtYS4gVGhpcyBpcyB1c2VmdWwgZm9yIHNpbXBsZSBvdmVycmlkZXMgd2hlcmUgeW91IHdhbnQgdG8gYWRkIG9yIG1vZGlmeSBwcm9wZXJ0aWVzIHdpdGhvdXQgY29tcGxleCBsb2dpYy4KCmBgYHR5cGVzY3JpcHQKei5zdHJpbmcuZGF0ZXRpbWUoKS5tZXRhKHsKICBkZXNjcmlwdGlvbjogJ0EgZGF0ZSBmaWVsZCcsCiAgb3ZlcnJpZGU6IHsKICAgIGZvcm1hdDogJ01ZLUZPUk1BVCcsCiAgfSwKfSk7CmBgYAoKIyMjIyMgb3ZlcnJpZGUgZnVuY3Rpb24KClRoZSBgb3ZlcnJpZGVgIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gZGVlcGx5IGN1c3RvbWl6ZSB0aGUgcmVuZGVyZWQgT3BlbkFQSSBzY2hlbWEuIEVnLiBpZiB5b3Ugd2FudGVkIHRvIHJlbmRlciBhIFpvZCB1bmlvbiBhcyBhIGBvbmVPZmAgaW5zdGVhZCBvZiBgYW55T2ZgIGZvciBhIHNpbmdsZSBzY2hlbWEsIHlvdSBjYW4gZG8gc28gYnkgdXNpbmcgdGhlIGBvdmVycmlkZWAgZnVuY3Rpb24uIFZpZXcgdGhlIGRvY3VtZW50YXRpb24gZm9yIGBvdmVycmlkZWAgaW4gdGhlIFtDcmVhdGVEb2N1bWVudE9wdGlvbnNdKCNjcmVhdGVkb2N1bWVudG9wdGlvbnMpIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCgpgYGB0eXBlc2NyaXB0CnoudW5pb24oW3ouc3RyaW5nKCksIHoubnVtYmVyKCldKS5tZXRhKHsKICBkZXNjcmlwdGlvbjogJ0EgdW5pb24gb2Ygc3RyaW5nIGFuZCBudW1iZXInLAogIG92ZXJyaWRlOiAoeyBqc29uU2NoZW1hIH0pID0+IHsKICAgIGpzb25TY2hlbWEuYW55T2YgPSBqc29uU2NoZW1hLm9uZU9mOwogICAgZGVsZXRlIGpzb25TY2hlbWEub25lT2Y7CiAgfSwKfSk7CmBgYAoKIyMjIGBjcmVhdGVEb2N1bWVudGAKCkdlbmVyYXRlcyBhbiBPcGVuQVBJIGRvY3VtZW50YXRpb24gb2JqZWN0LgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgKiBhcyB6IGZyb20gJ3pvZC92NCc7Ci8vIG9yIGltcG9ydCAqIGFzIHogZnJvbSAnem9kJzsgaWYgdXNpbmcgWm9kIDQuMC4wKwoKaW1wb3J0IHsgY3JlYXRlRG9jdW1lbnQgfSBmcm9tICd6b2Qtb3BlbmFwaSc7Cgpjb25zdCBqb2JJZCA9IHouc3RyaW5nKCkubWV0YSh7CiAgZGVzY3JpcHRpb246ICdBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGpvYicsCiAgZXhhbXBsZTogJzEyMzQ1JywKICBpZDogJ2pvYklkJywKfSk7Cgpjb25zdCB0aXRsZSA9IHouc3RyaW5nKCkubWV0YSh7CiAgZGVzY3JpcHRpb246ICdKb2IgdGl0bGUnLAogIGV4YW1wbGU6ICdNeSBqb2InLAp9KTsKCmNvbnN0IGRvY3VtZW50ID0gY3JlYXRlRG9jdW1lbnQoewogIG9wZW5hcGk6ICczLjEuMCcsCiAgaW5mbzogewogICAgdGl0bGU6ICdNeSBBUEknLAogICAgdmVyc2lvbjogJzEuMC4wJywKICB9LAogIHBhdGhzOiB7CiAgICAnL2pvYnMve2pvYklkfSc6IHsKICAgICAgcHV0OiB7CiAgICAgICAgcmVxdWVzdFBhcmFtczogeyBwYXRoOiB6Lm9iamVjdCh7IGpvYklkIH0pIH0sCiAgICAgICAgcmVxdWVzdEJvZHk6IHsKICAgICAgICAgIGNvbnRlbnQ6IHsKICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7IHNjaGVtYTogei5vYmplY3QoeyB0aXRsZSB9KSB9LAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHJlc3BvbnNlczogewogICAgICAgICAgJzIwMCc6IHsKICAgICAgICAgICAgZGVzY3JpcHRpb246ICcyMDAgT0snLAogICAgICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7IHNjaGVtYTogei5vYmplY3QoeyBqb2JJZCwgdGl0bGUgfSkgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sCiAgfSwKfSk7CmBgYAoKPGRldGFpbHM+CiAgPHN1bW1hcnk+Q3JlYXRlcyB0aGUgZm9sbG93aW5nIG9iamVjdDo8L3N1bW1hcnk+CiAgCiAgYGBganNvbgogIHsKICAgICJvcGVuYXBpIjogIjMuMS4wIiwKICAgICJpbmZvIjogewogICAgICAidGl0bGUiOiAiTXkgQVBJIiwKICAgICAgInZlcnNpb24iOiAiMS4wLjAiCiAgICB9LAogICAgInBhdGhzIjogewogICAgICAiL2pvYnMve2pvYklkfSI6IHsKICAgICAgICAicHV0IjogewogICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAiaW4iOiAicGF0aCIsCiAgICAgICAgICAgICAgIm5hbWUiOiAiam9iSWQiLAogICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGpvYiIsCiAgICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAgICIkcmVmIjogIiMvY29tcG9uZW50cy9zY2hlbWFzL2pvYklkIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJyZXF1ZXN0Qm9keSI6IHsKICAgICAgICAgICAgImNvbnRlbnQiOiB7CiAgICAgICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iOiB7CiAgICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAgICAidGl0bGUiOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkpvYiB0aXRsZSIsCiAgICAgICAgICAgICAgICAgICAgICAiZXhhbXBsZSI6ICJNeSBqb2IiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiBbInRpdGxlIl0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIyMDAgT0siLAogICAgICAgICAgICAgICJjb250ZW50IjogewogICAgICAgICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iOiB7CiAgICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAgICAgICJqb2JJZCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvam9iSWQiCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgInRpdGxlIjogewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSm9iIHRpdGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgImV4YW1wbGUiOiAiTXkgam9iIgogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogWyJqb2JJZCIsICJ0aXRsZSJdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiY29tcG9uZW50cyI6IHsKICAgICAgInNjaGVtYXMiOiB7CiAgICAgICAgImpvYklkIjogewogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGpvYiIsCiAgICAgICAgICAiZXhhbXBsZSI6ICIxMjM0NSIKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9CiAgYGBgCjwvZGV0YWlscz4KCmBjcmVhdGVEb2N1bWVudGAgdGFrZXMgYW4gb3B0aW9uYWwgb3B0aW9ucyBhcmd1bWVudCB3aGljaCBjYW4gYmUgdXNlZCB0byBtb2RpZnkgaG93IHRoZSBkb2N1bWVudCBpcyBjcmVhdGVkCgpgYGB0eXBlc2NyaXB0CmNyZWF0ZURvY3VtZW50KGRvYywgewogIG92ZXJyaWRlOiAoeyBqc29uU2NoZW1hLCB6b2RTY2hlbWEsIGlvIH0pID0+IHsKICAgIGNvbnN0IGRlZiA9IHpvZFNjaGVtYS5fem9kLmRlZjsKICAgIGlmIChkZWYudHlwZSA9PT0gJ2RhdGUnICYmIGlvID09PSAnb3V0cHV0JykgewogICAgICBqc29uU2NoZW1hLnR5cGUgPSAnc3RyaW5nJzsKICAgICAganNvblNjaGVtYS5mb3JtYXQgPSAnZGF0ZS10aW1lJzsKICAgIH0KICB9LAogIGFsbG93RW1wdHlTY2hlbWE6IHsKICAgIGN1c3RvbTogdHJ1ZSwKICB9LAp9KTsKYGBgCgojIyMjIENyZWF0ZURvY3VtZW50T3B0aW9ucwoKfCBPcHRpb24gICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgYG92ZXJyaWRlYCAgICAgICAgIHwgYEZ1bmN0aW9uYCAgICAgICAgICB8IE92ZXJyaWRlIHJlbmRlcmVkIHNjaGVtYSB3aXRoIGEgZnVuY3Rpb25gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgb3V0cHV0SWRTdWZmaXhgICAgfCBgc3RyaW5nYCAgICAgICAgICAgIHwgU3VmZml4IGZvciBvdXRwdXQgc2NoZW1hIElEcyB3aGVuIHRoZSBzY2hlbWEgaXMgdXNlZCBpbiBib3RoIGEgcmVxdWVzdCBhbmQgcmVzcG9uc2UuIERlZmF1bHRzIHRvIGBgJ091dHB1dCdgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBhbGxvd0VtcHR5U2NoZW1hYCB8IGBPYmplY3RgICAgICAgICAgICAgfCBDb250cm9sIHdoZXRoZXIgZW1wdHkgc2NoZW1hcyBhcmUgYWxsb3dlZCBmb3Igc3BlY2lmaWMgWm9kIHNjaGVtYSB0eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGN5Y2xlc2AgICAgICAgICAgIHwgYCdyZWYnIFx8ICd0aHJvdydgICB8IEhvdyB0byBoYW5kbGUgY3ljbGVzIGluIHNjaGVtYXMuPGJyPi0gYCdyZWYnYCDigJQgQnJlYWsgY3ljbGVzIHVzaW5nICRkZWZzPGJyPi0gYCd0aHJvdydgIOKAlCBFcnJvciBvbiBjeWNsZXMuIERlZmF1bHRzIHRvIGAncmVmJ2AgICAgICAgICAgICB8CnwgYHJldXNlZGAgICAgICAgICAgIHwgYCdyZWYnIFx8ICdpbmxpbmUnYCB8IEhvdyB0byBoYW5kbGUgcmV1c2VkIHNjaGVtYXMuPGJyPi0gYCdyZWYnYCDigJQgUmV1c2VkIHNjaGVtYXMgYXMgcmVmZXJlbmNlczxicj4tIGAnaW5saW5lJ2Ag4oCUIElubGluZSByZXVzZWQgc2NoZW1hcy4gRGVmYXVsdHMgdG8gYCdpbmxpbmUnYCB8CnwgICAgICAgICAgICAgICAgICAgIHwKCiMjIyMjIGBvdmVycmlkZWAKClRoZSBgb3ZlcnJpZGVgIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gY3VzdG9taXplIHRoZSByZW5kZXJlZCBPcGVuQVBJIHNjaGVtYS4gSXQgcmVjZWl2ZXMgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgoKfCBQcm9wZXJ0eSAgICAgfCBUeXBlICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IGBqc29uU2NoZW1hYCB8IGBPYmplY3RgICAgICAgICAgICAgICB8IFRoZSBPcGVuQVBJIHNjaGVtYSBvYmplY3QgYmVpbmcgZ2VuZXJhdGVkLiBZb3UgY2FuIG1vZGlmeSB0aGlzIG9iamVjdCB0byBjaGFuZ2UgdGhlIHJlbmRlcmVkIHNjaGVtYS4gICAgICAgICAgICAgIHwKfCBgem9kU2NoZW1hYCAgfCBgWm9kVHlwZWAgICAgICAgICAgICAgfCBUaGUgb3JpZ2luYWwgWm9kIHNjaGVtYSBiZWluZyBjb252ZXJ0ZWQgdG8gT3BlbkFQSS4gWW91IGNhbiB1c2UgdGhpcyB0byBhY2Nlc3MgWm9kLXNwZWNpZmljIHByb3BlcnRpZXMuICAgICAgICAgICB8CnwgYGlvYCAgICAgICAgIHwgYCdpbnB1dCcgXHwgJ291dHB1dCdgIHwgVGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIHNjaGVtYSBpcyBiZWluZyByZW5kZXJlZC4gYCdpbnB1dCdgIGZvciByZXF1ZXN0IGJvZGllcy9wYXJhbXMsIGAnb3V0cHV0J2AgZm9yIHJlc3BvbnNlcy4gfAoKVGhpcyBhbGxvd3MgeW91IHRvIHRyYW5zZm9ybSB0aGUgc2NoZW1hIGJhc2VkIG9uIHlvdXIgb3duIHJ1bGVzIG9yIHJlcXVpcmVtZW50cy4gRm9yIGV4YW1wbGUsIGlmIHlvdQoKMS4gV2FudGVkIHRvIGNoYW5nZSBob3cgZGF0ZXMgYXJlIHJlbmRlcmVkIGluIHRoZSBvdXRwdXQgY29udGV4dCBiZWNhdXNlIGEgdHlwaWNhbCBKU09OIHNlcmlhbGl6ZXIgd2lsbCB0cmFuc2Zvcm0gdGhlbSB0byBhIHN0cmluZwoyLiBDaGFuZ2UgYWxsIHVuaW9uIG91dHB1dHMgdG8gYmUgb25lT2YgaW5zdGVhZCBvZiBhbnlPZgoKYGBgdHlwZXNjcmlwdApjcmVhdGVEb2N1bWVudChkb2MsIHsKICBvdmVycmlkZTogKHsganNvblNjaGVtYSwgem9kU2NoZW1hLCBpbyB9KSA9PiB7CiAgICBjb25zdCBkZWYgPSB6b2RTY2hlbWEuX3pvZC5kZWY7CiAgICBpZiAoZGVmLnR5cGUgPT09ICdkYXRlJyAmJiBpbyA9PT0gJ291dHB1dCcpIHsKICAgICAganNvblNjaGVtYS50eXBlID0gJ3N0cmluZyc7CiAgICAgIGpzb25TY2hlbWEuZm9ybWF0ID0gJ2RhdGUtdGltZSc7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChkZWYudHlwZSA9PT0gJ3VuaW9uJykgewogICAgICBqc29uU2NoZW1hLm9uZU9mID0ganNvblNjaGVtYS5hbnlPZjsKICAgICAgZGVsZXRlIGpzb25TY2hlbWEuYW55T2Y7CiAgICAgIHJldHVybjsKICAgIH0KICB9LAp9KTsKYGBgCgojIyMjIyBgb3V0cHV0SWRTdWZmaXhgCgpUaGUgYG91dHB1dElkU3VmZml4YCBvcHRpb24gYWxsb3dzIHlvdSB0byBzZXQgYSBzdWZmaXggZm9yIG91dHB1dCBzY2hlbWEgSURzIHdoZW4gdGhlIHNjaGVtYSBpcyB1c2VkIGluIGJvdGggYSByZXF1ZXN0IGFuZCByZXNwb25zZSBjb250ZXh0LiBUaGlzIGlzIHVzZWZ1bCBmb3IgZGlzdGluZ3Vpc2hpbmcgYmV0d2VlbiBpbnB1dCBhbmQgb3V0cHV0IHNjaGVtYXMuCgojIyMjIyBgYWxsb3dFbXB0eVNjaGVtYWAKClRoZSBgYWxsb3dFbXB0eVNjaGVtYWAgb3B0aW9uIGFsbG93cyB5b3UgdG8gY29udHJvbCB3aGV0aGVyIG9yIG5vdCB0aGlzIGxpYnJhcnkgd2lsbCB0aHJvdyB3aGVuIGl0IGVuY291bnRlcnMgYW4gZW1wdHkgc2NoZW1hLiBCeSBkZWZhdWx0IHRoaXMgbGlicmFyeSB3aWxsIG5vdCB0aHJvdyBpZiBpdCBlbmNvdW50ZXJzIGFuIGB6LmFueSgpYCBvciBgei51bmtub3duKClgIHNjaGVtYS4KClRoaXMgYWxsb3dzIHlvdSB0byBjdXN0b21pemUgaG93IHRoaXMgbGlicmFyeSBoYW5kbGVzIFt1bnJlcHJlc2VudGFibGVdKGh0dHBzOi8vem9kLmRldi9qc29uLXNjaGVtYT9pZD11bnJlcHJlc2VudGFibGUpIFpvZCBzY2hlbWFzLgoKZWcuIElmIHlvdSB3YW50ZWQgdG8gYWxsb3cgYHouY3VzdG9tKClgIHRvIGJlIHJlbmRlcmVkIGFzIGFuIGVtcHR5IHNjaGVtYSwgeW91IGNhbiBzZXQgdGhlIGBhbGxvd0VtcHR5U2NoZW1hYCBvcHRpb24gYXMgZm9sbG93czoKCmBgYHR5cGVzY3JpcHQKY3JlYXRlRG9jdW1lbnQoZG9jLCB7CiAgYWxsb3dFbXB0eVNjaGVtYTogewogICAgY3VzdG9tOiB0cnVlLCAvLyBBbGxvdyBlbXB0eSBzY2hlbWFzIGZvciBgei5jdXN0b20oKWAgaW4gYWxsIGNvbnRleHRzCiAgICBzZXQ6IHsgb3V0cHV0OiB0cnVlIH0sIC8vIEFsbG93IGVtcHR5IHNjaGVtYXMgZm9yIGB6LnNldCgpYCBvbmx5IGluIGFuIG91dHB1dCBjb250ZXh0CiAgfSwKfSk7CmBgYAoKIyMjIyMgYGN5Y2xlc2AgYW5kIGByZXVzZWRgCgpUaGVzZSBvcHRpb25zIGFyZSBleHBvc2VkIGRpcmVjdGx5IGZyb20gdGhlIFpvZC4gUmVhZCB0aGUgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vem9kLmRldi9qc29uLXNjaGVtYT9pZD11bnJlcHJlc2VudGFibGUjY3ljbGVzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZXNlIG9wdGlvbnMuCgojIyMjIwoKIyMjIGBjcmVhdGVTY2hlbWFgCgpDcmVhdGVzIGFuIE9wZW5BUEkgU2NoZW1hIE9iamVjdCBhbG9uZyB3aXRoIGFueSByZWdpc3RlcmVkIGNvbXBvbmVudHMuIE9wZW5BUEkgMy4xLjAgU2NoZW1hIE9iamVjdHMgYXJlIGZ1bGx5IGNvbXBhdGlibGUgd2l0aCBKU09OIFNjaGVtYS4KCmBgYHR5cGVzY3JpcHQKaW1wb3J0ICogYXMgeiBmcm9tICd6b2QvdjQnOwppbXBvcnQgeyBjcmVhdGVTY2hlbWEgfSBmcm9tICd6b2Qtb3BlbmFwaSc7Cgpjb25zdCBqb2JJZCA9IHouc3RyaW5nKCkubWV0YSh7CiAgZGVzY3JpcHRpb246ICdBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGpvYicsCiAgZXhhbXBsZTogJzEyMzQ1JywKICBpZDogJ2pvYklkJywKfSk7Cgpjb25zdCB0aXRsZSA9IHouc3RyaW5nKCkubWV0YSh7CiAgZGVzY3JpcHRpb246ICdKb2IgdGl0bGUnLAogIGV4YW1wbGU6ICdNeSBqb2InLAp9KTsKCmNvbnN0IGpvYiA9IHoub2JqZWN0KHsKICBqb2JJZCwKICB0aXRsZSwKfSk7Cgpjb25zdCB7IHNjaGVtYSwgY29tcG9uZW50cyB9ID0gY3JlYXRlU2NoZW1hKGpvYik7CmBgYAoKPGRldGFpbHM+CiAgPHN1bW1hcnk+Q3JlYXRlcyB0aGUgZm9sbG93aW5nIG9iamVjdDo8L3N1bW1hcnk+CiAgCiAgYGBganNvbgogIHsKICAgICJzY2hlbWEiOiB7CiAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICJqb2JJZCI6IHsKICAgICAgICAgICIkcmVmIjogIiMvY29tcG9uZW50cy9zY2hlbWFzL2pvYklkIgogICAgICAgIH0sCiAgICAgICAgInRpdGxlIjogewogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJKb2IgdGl0bGUiLAogICAgICAgICAgImV4YW1wbGUiOiAiTXkgam9iIgogICAgICAgIH0KICAgICAgfSwKICAgICAgInJlcXVpcmVkIjogWyJqb2JJZCIsICJ0aXRsZSJdCiAgICB9LAogICAgImNvbXBvbmVudHMiOiB7CiAgICAgICJqb2JJZCI6IHsKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGpvYiIsCiAgICAgICAgImV4YW1wbGUiOiAiMTIzNDUiCiAgICAgIH0KICAgIH0KICB9CiAgYGBgCjwvZGV0YWlscz4KCiMjIyMgQ3JlYXRlU2NoZW1hT3B0aW9ucwoKYGNyZWF0ZVNjaGVtYWAgdGFrZXMgYW4gb3B0aW9uYWwgYENyZWF0ZVNjaGVtYU9wdGlvbnNgIHBhcmFtZXRlciB3aGljaCBpbmNsdWRlcyBhbGwgb3B0aW9ucyBmcm9tIFtDcmVhdGVEb2N1bWVudE9wdGlvbnNdKCNjcmVhdGVkb2N1bWVudG9wdGlvbnMpIHBsdXMgdGhlIGZvbGxvd2luZzoKCmBgYHR5cGVzY3JpcHQKY29uc3QgeyBzY2hlbWEsIGNvbXBvbmVudHMgfSA9IGNyZWF0ZVNjaGVtYShqb2IsIHsKICAvLyBJbnB1dC9PdXRwdXQgY29udGV4dCAtIGNvbnRyb2xzIGhvdyBzY2hlbWFzIGFyZSBnZW5lcmF0ZWQKICBpbzogJ2lucHV0JywgLy8gJ2lucHV0JyBmb3IgcmVxdWVzdCBib2RpZXMvcGFyYW1zLCAnb3V0cHV0JyBmb3IgcmVzcG9uc2VzCiAgLy8gQ29tcG9uZW50IGhhbmRsaW5nCiAgc2NoZW1hQ29tcG9uZW50czogeyBqb2JJZDogei5zdHJpbmcoKSB9LCAvLyBQcmUtZGVmaW5lZCBjb21wb25lbnRzIHRvIHVzZQogIHNjaGVtYUNvbXBvbmVudFJlZlBhdGg6ICcjL2RlZmluaXRpb25zLycsIC8vIEN1c3RvbSBwYXRoIHByZWZpeCBmb3IgY29tcG9uZW50IHJlZmVyZW5jZXMKICBvcHRzOiB7fSwgLy8gQ3JlYXRlIERvY3VtZW50IE9wdGlvbnMsCn0pOwpgYGAKCiMjIyBSZXF1ZXN0IFBhcmFtZXRlcnMKClF1ZXJ5LCBQYXRoLCBIZWFkZXIgJiBDb29raWUgcGFyYW1ldGVycyBjYW4gYmUgY3JlYXRlZCB1c2luZyB0aGUgYHJlcXVlc3RQYXJhbXNgIGtleSB1bmRlciB0aGUgYG1ldGhvZGAga2V5IGFzIGZvbGxvd3M6CgpgYGB0eXBlc2NyaXB0CmNyZWF0ZURvY3VtZW50KHsKICBwYXRoczogewogICAgJy9qb2JzL3thfSc6IHsKICAgICAgcHV0OiB7CiAgICAgICAgcmVxdWVzdFBhcmFtczogewogICAgICAgICAgcGF0aDogei5vYmplY3QoeyBhOiB6LnN0cmluZygpIH0pLAogICAgICAgICAgcXVlcnk6IHoub2JqZWN0KHsgYjogei5zdHJpbmcoKSB9KSwKICAgICAgICAgIGNvb2tpZTogei5vYmplY3QoeyBjb29raWU6IHouc3RyaW5nKCkgfSksCiAgICAgICAgICBoZWFkZXI6IHoub2JqZWN0KHsgJ2N1c3RvbS1oZWFkZXInOiB6LnN0cmluZygpIH0pLAogICAgICAgIH0sCiAgICAgIH0sCiAgICB9LAogIH0sCn0pOwpgYGAKCklmIHlvdSB3b3VsZCBsaWtlIHRvIGRlY2xhcmUgcGFyYW1ldGVycyBpbiBhIG1vcmUgdHJhZGl0aW9uYWwgd2F5IHlvdSBtYXkgYWxzbyBkZWNsYXJlIHRoZW0gdXNpbmcgdGhlIFtwYXJhbWV0ZXJzXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2Rlc2NyaWJpbmctcGFyYW1ldGVycy8pIGtleS4gVGhlIGRlZmluaXRpb25zIHdpbGwgdGhlbiBhbGwgYmUgY29tYmluZWQuCgpgYGB0cwpjcmVhdGVEb2N1bWVudCh7CiAgcGF0aHM6IHsKICAgICcvam9icy97YX0nOiB7CiAgICAgIHB1dDogewogICAgICAgIHBhcmFtZXRlcnM6IFsKICAgICAgICAgIHouc3RyaW5nKCkubWV0YSh7CiAgICAgICAgICAgIHBhcmFtOiB7CiAgICAgICAgICAgICAgbmFtZTogJ2pvYi1oZWFkZXInLAogICAgICAgICAgICAgIGluOiAnaGVhZGVyJywKICAgICAgICAgICAgfSwKICAgICAgICAgIH0pLAogICAgICAgIF0sCiAgICAgIH0sCiAgICB9LAogIH0sCn0pOwpgYGAKCiMjIyBSZXF1ZXN0IEJvZHkKCldoZXJlIHlvdSB3b3VsZCBub3JtYWxseSBkZWNsYXJlIHRoZSBbbWVkaWEgdHlwZV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9tZWRpYS10eXBlcy8pLCBzZXQgdGhlIGBzY2hlbWFgIGFzIHlvdXIgWm9kIFNjaGVtYSBhcyBmb2xsb3dzLgoKYGBgdHlwZXNjcmlwdApjcmVhdGVEb2N1bWVudCh7CiAgcGF0aHM6IHsKICAgICcvam9icyc6IHsKICAgICAgZ2V0OiB7CiAgICAgICAgcmVxdWVzdEJvZHk6IHsKICAgICAgICAgIGNvbnRlbnQ6IHsKICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7IHNjaGVtYTogei5vYmplY3QoeyBhOiB6LnN0cmluZygpIH0pIH0sCiAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgIH0sCiAgICB9LAogIH0sCn0pOwpgYGAKCklmIHlvdSB3aXNoIHRvIHVzZSBPcGVuQVBJIHN5bnRheCBmb3IgeW91ciBzY2hlbWFzLCBzaW1wbHkgYWRkIGFuIE9wZW5BUEkgc2NoZW1hIHRvIHRoZSBgc2NoZW1hYCBmaWVsZCBpbnN0ZWFkLgoKIyMjIFJlc3BvbnNlcwoKU2ltaWxhcmx5IHRvIHRoZSBbUmVxdWVzdCBCb2R5XSgjcmVxdWVzdC1ib2R5KSwgc2ltcGx5IHNldCB0aGUgYHNjaGVtYWAgYXMgeW91ciBab2QgU2NoZW1hIGFzIGZvbGxvd3MuIFlvdSBjYW4gc2V0IHRoZSByZXNwb25zZSBoZWFkZXJzIHVzaW5nIHRoZSBgaGVhZGVyc2Aga2V5LgoKYGBgdHlwZXNjcmlwdApjcmVhdGVEb2N1bWVudCh7CiAgcGF0aHM6IHsKICAgICcvam9icyc6IHsKICAgICAgZ2V0OiB7CiAgICAgICAgcmVzcG9uc2VzOiB7CiAgICAgICAgICAyMDA6IHsKICAgICAgICAgICAgZGVzY3JpcHRpb246ICcyMDAgT0snLAogICAgICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7IHNjaGVtYTogei5vYmplY3QoeyBhOiB6LnN0cmluZygpIH0pIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGhlYWRlcnM6IHoub2JqZWN0KHsKICAgICAgICAgICAgICAnaGVhZGVyLWtleSc6IHouc3RyaW5nKCksCiAgICAgICAgICAgIH0pLAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICB9LAogICAgfSwKICB9LAp9KTsKYGBgCgojIyMgQ2FsbGJhY2tzCgpgYGB0eXBlc2NyaXB0CmNyZWF0ZURvY3VtZW50KHsKICBwYXRoczogewogICAgJy9qb2JzJzogewogICAgICBnZXQ6IHsKICAgICAgICBjYWxsYmFja3M6IHsKICAgICAgICAgIG9uRGF0YTogewogICAgICAgICAgICAneyRyZXF1ZXN0LnF1ZXJ5LmNhbGxiYWNrVXJsfS9kYXRhJzogewogICAgICAgICAgICAgIHBvc3Q6IHsKICAgICAgICAgICAgICAgIHJlcXVlc3RCb2R5OiB7CiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHsKICAgICAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IHsgc2NoZW1hOiB6Lm9iamVjdCh7IGE6IHouc3RyaW5nKCkgfSkgfSwKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZXNwb25zZXM6IHsKICAgICAgICAgICAgICAgICAgMjAwOiB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICcyMDAgT0snLAogICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHsKICAgICAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogewogICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWE6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSwKICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sCiAgfSwKfSk7CmBgYAoKIyMjIENyZWF0aW5nIENvbXBvbmVudHMKCk9wZW5BUEkgYWxsb3dzIHlvdSB0byBkZWZpbmUgcmV1c2FibGUgW2NvbXBvbmVudHNdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vY29tcG9uZW50cy8pIGFuZCB0aGlzIGxpYnJhcnkgYWxsb3dzIHlvdSB0byByZXBsaWNhdGUgdGhhdCBpbiB0d28gc2VwYXJhdGUgd2F5cy4KCjEuIEF1dG8gcmVnaXN0ZXJpbmcgc2NoZW1hCjIuIE1hbnVhbGx5IHJlZ2lzdGVyaW5nIHNjaGVtYQoKIyMjIyBTY2hlbWEKCklmIHdlIHRha2UgdGhlIGV4YW1wbGUgaW4gYGNyZWF0ZURvY3VtZW50YCBhbmQgaW5zdGVhZCBjcmVhdGUgYHRpdGxlYCBhcyBmb2xsb3dzCgojIyMjIyBBdXRvIFJlZ2lzdGVyaW5nIFNjaGVtYQoKYGBgdHlwZXNjcmlwdApjb25zdCB0aXRsZSA9IHouc3RyaW5nKCkubWV0YSh7CiAgZGVzY3JpcHRpb246ICdKb2IgdGl0bGUnLAogIGV4YW1wbGU6ICdNeSBqb2InLAogIGlkOiAnam9iVGl0bGUnLCAvLyA8LSBuZXcgZmllbGQKfSk7CmBgYAoKV2hlcmV2ZXIgYHRpdGxlYCBpcyB1c2VkIGluIHNjaGVtYXMgYWNyb3NzIHRoZSBkb2N1bWVudCwgaXQgd2lsbCBpbnN0ZWFkIGJlIGNyZWF0ZWQgYXMgYSByZWZlcmVuY2UuCgpgYGBqc29uCnsgIiRyZWYiOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvam9iVGl0bGUiIH0KYGBgCgpgdGl0bGVgIHdpbGwgdGhlbiBiZSBvdXRwdXR0ZWQgYXMgYSBzY2hlbWEgd2l0aGluIHRoZSBjb21wb25lbnRzIHNlY3Rpb24gb2YgdGhlIGRvY3VtZW50YXRpb24uCgpgYGBqc29uCnsKICAiY29tcG9uZW50cyI6IHsKICAgICJzY2hlbWFzIjogewogICAgICAiam9iVGl0bGUiOiB7CiAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiSm9iIHRpdGxlIiwKICAgICAgICAiZXhhbXBsZSI6ICJNeSBqb2IiCiAgICAgIH0KICAgIH0KICB9Cn0KYGBgCgpUaGlzIGlzIGEgZ3JlYXQgd2F5IHRvIGNyZWF0ZSBsZXNzIHJlcGV0aXRpdmUgT3BlbiBBUEkgZG9jdW1lbnRhdGlvbi4gVGhlcmUgYXJlIHNvbWUgT3BlbiBBUEkgZmVhdHVyZXMgbGlrZSBbZGlzY3JpbWluYXRvciBtYXBwaW5nXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2RhdGEtbW9kZWxzL2luaGVyaXRhbmNlLWFuZC1wb2x5bW9ycGhpc20vKSB3aGljaCByZXF1aXJlIGFsbCBzY2hlbWFzIGluIHRoZSB1bmlvbiB0byBjb250YWluIGEgcmVmLgoKIyMjIyMgTWFudWFsbHkgUmVnaXN0ZXJpbmcgU2NoZW1hCgpBbm90aGVyIHdheSB0byByZWdpc3RlciBzY2hlbWEgaW5zdGVhZCBvZiBhZGRpbmcgYSBgcmVmYCBpcyB0byBhZGQgaXQgdG8gdGhlIGNvbXBvbmVudHMgZGlyZWN0bHkuIFRoaXMgd2lsbCBzdGlsbCB3b3JrIGluIHRoZSBzYW1lIHdheSBhcyBgcmVmYC4gU28gd2hlbmV2ZXIgd2UgcnVuIGludG8gdGhhdCBab2QgdHlwZSB3ZSB3aWxsIHJlcGxhY2UgaXQgd2l0aCBhIHJlZmVyZW5jZS4KCmVnLgoKYGBgdHlwZXNjcmlwdApjb25zdCB0aXRsZSA9IHouc3RyaW5nKCkubWV0YSh7CiAgZGVzY3JpcHRpb246ICdKb2IgdGl0bGUnLAogIGV4YW1wbGU6ICdNeSBqb2InLAp9KTsKY3JlYXRlRG9jdW1lbnQoewogIGNvbXBvbmVudHM6IHsKICAgIHNjaGVtYXM6IHsKICAgICAgam9iVGl0bGU6IHRpdGxlLCAvLyB0aGlzIHdpbGwgcmVnaXN0ZXIgdGhpcyBab2QgU2NoZW1hIGFzIGpvYlRpdGxlIHVubGVzcyBgaWRgIGluIGAubWV0YSgpYCBpcyBzcGVjaWZpZWQgb24gdGhlIHR5cGUKICAgIH0sCiAgfSwKfSk7CmBgYAoKIyMjIyBQYXJhbWV0ZXJzCgpRdWVyeSwgUGF0aCwgSGVhZGVyICYgQ29va2llIHBhcmFtZXRlcnMgY2FuIGJlIHNpbWlsYXJseSByZWdpc3RlcmVkOgoKYGBgdHlwZXNjcmlwdAovLyBFYXN5IGF1dG8gcmVnaXN0cmF0aW9uCmNvbnN0IGpvYklkID0gei5zdHJpbmcoKS5tZXRhKHsKICBkZXNjcmlwdGlvbjogJ0pvYiBJRCcsCiAgZXhhbXBsZTogJzEyMzQnLAogIHBhcmFtOiB7IGlkOiAnam9iUmVmJyB9LAp9KTsKCmNyZWF0ZURvY3VtZW50KHsKICBwYXRoczogewogICAgJy9qb2JzL3tqb2JJZH0nOiB7CiAgICAgIHB1dDogewogICAgICAgIHJlcXVlc3RQYXJhbXM6IHsKICAgICAgICAgIGhlYWRlcjogei5vYmplY3QoewogICAgICAgICAgICBqb2JJZCwKICAgICAgICAgIH0pLAogICAgICAgIH0sCiAgICAgIH0sCiAgICB9LAogIH0sCn0pOwoKLy8gb3IgbW9yZSB2ZXJib3NlIGF1dG8gcmVnaXN0cmF0aW9uCmNvbnN0IGpvYklkID0gei5zdHJpbmcoKS5tZXRhKHsKICBkZXNjcmlwdGlvbjogJ0pvYiBJRCcsCiAgZXhhbXBsZTogJzEyMzQnLAogIHBhcmFtOiB7IGluOiAnaGVhZGVyJywgbmFtZTogJ2pvYklkJywgaWQ6ICdqb2JSZWYnIH0sCn0pOwoKY3JlYXRlRG9jdW1lbnQoewogIHBhdGhzOiB7CiAgICAnL2pvYnMve2pvYklkfSc6IHsKICAgICAgcHV0OiB7CiAgICAgICAgcGFyYW1ldGVyczogW2pvYklkXSwKICAgICAgfSwKICAgIH0sCiAgfSwKfSk7CgovLyBvciBtYW51YWwgcmVnaXN0cmF0aW9uCmNvbnN0IG90aGVySm9iSWQgPSB6LnN0cmluZygpLm1ldGEoewogIGRlc2NyaXB0aW9uOiAnSm9iIElEJywKICBleGFtcGxlOiAnMTIzNCcsCiAgcGFyYW06IHsgaW46ICdoZWFkZXInLCBuYW1lOiAnam9iSWQnIH0sCn0pOwoKY3JlYXRlRG9jdW1lbnQoewogIGNvbXBvbmVudHM6IHsKICAgIHBhcmFtZXRlcnM6IHsKICAgICAgam9iUmVmOiBqb2JJZCwKICAgIH0sCiAgfSwKfSk7CmBgYAoKIyMjIyBSZXNwb25zZSBIZWFkZXJzCgpSZXNwb25zZSBoZWFkZXJzIGNhbiBiZSBzaW1pbGFybHkgcmVnaXN0ZXJlZDoKCmBgYHR5cGVzY3JpcHQKY29uc3QgaGVhZGVyID0gei5zdHJpbmcoKS5tZXRhKHsKICBkZXNjcmlwdGlvbjogJ0pvYiBJRCcsCiAgZXhhbXBsZTogJzEyMzQnLAogIGhlYWRlcjogeyBpZDogJ3NvbWUtaGVhZGVyJyB9LAp9KTsKCi8vIG9yCgpjb25zdCBqb2JJZEhlYWRlciA9IHouc3RyaW5nKCkubWV0YSh7CiAgZGVzY3JpcHRpb246ICdKb2IgSUQnLAogIGV4YW1wbGU6ICcxMjM0JywKfSk7CgpjcmVhdGVEb2N1bWVudCh7CiAgY29tcG9uZW50czogewogICAgaGVhZGVyczogewogICAgICBzb21lSGVhZGVyUmVmOiBqb2JJZEhlYWRlciwKICAgIH0sCiAgfSwKfSk7CmBgYAoKIyMjIyBSZXNwb25zZXMKCkVudGlyZSBSZXNwb25zZXMgY2FuIGFsc28gYmUgcmVnaXN0ZXJlZAoKYGBgdHlwZXNjcmlwdApjb25zdCByZXNwb25zZTogWm9kT3BlbkFwaVJlc3BvbnNlT2JqZWN0ID0gewogIGRlc2NyaXB0aW9uOiAnMjAwIE9LJywKICBjb250ZW50OiB7CiAgICAnYXBwbGljYXRpb24vanNvbic6IHsKICAgICAgc2NoZW1hOiB6Lm9iamVjdCh7IGE6IHouc3RyaW5nKCkgfSksCiAgICB9LAogIH0sCiAgaWQ6ICdzb21lLXJlc3BvbnNlJywKfTsKCi8vb3IKCmNvbnN0IHJlc3BvbnNlOiBab2RPcGVuQXBpUmVzcG9uc2VPYmplY3QgPSB7CiAgZGVzY3JpcHRpb246ICcyMDAgT0snLAogIGNvbnRlbnQ6IHsKICAgICdhcHBsaWNhdGlvbi9qc29uJzogewogICAgICBzY2hlbWE6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSwKICAgIH0sCiAgfSwKfTsKCmNyZWF0ZURvY3VtZW50KHsKICBjb21wb25lbnRzOiB7CiAgICByZXNwb25zZXM6IHsKICAgICAgJ3NvbWUtcmVzcG9uc2UnOiByZXNwb25zZSwKICAgIH0sCiAgfSwKfSk7CmBgYAoKIyMjIyBDYWxsYmFja3MKCkNhbGxiYWNrcyBjYW4gYWxzbyBiZSByZWdpc3RlcmVkCgpgYGB0eXBlc2NyaXB0CmNvbnN0IGNhbGxiYWNrOiBab2RPcGVuQXBpQ2FsbGJhY2tPYmplY3QgPSB7CiAgaWQ6ICdzb21lLWNhbGxiYWNrJwogIHBvc3Q6IHsKICAgIHJlc3BvbnNlczogewogICAgICAyMDA6IHsKICAgICAgICBkZXNjcmlwdGlvbjogJzIwMCBPSycsCiAgICAgICAgY29udGVudDogewogICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7CiAgICAgICAgICAgIHNjaGVtYTogei5vYmplY3QoeyBhOiB6LnN0cmluZygpIH0pLAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICB9LAogICAgfSwKICB9LAp9OwoKLy9vcgoKY29uc3QgY2FsbGJhY2s6IFpvZE9wZW5BcGlDYWxsYmFja09iamVjdCA9IHsKICBwb3N0OiB7CiAgICByZXNwb25zZXM6IHsKICAgICAgMjAwOiB7CiAgICAgICAgZGVzY3JpcHRpb246ICcyMDAgT0snLAogICAgICAgIGNvbnRlbnQ6IHsKICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogewogICAgICAgICAgICBzY2hlbWE6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSwKICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sCiAgfSwKfTsKCmNyZWF0ZURvY3VtZW50KHsKICBjb21wb25lbnRzOiB7CiAgICBjYWxsYmFja3M6IHsKICAgICAgJ3NvbWUtY2FsbGJhY2snOiBjYWxsYmFjaywKICAgIH0sCiAgfSwKfSk7CmBgYAoKIyMjIyBQYXRoIEl0ZW1zCgpQYXRoIEl0ZW1zIGNhbiBhbHNvIGJlIHJlZ2lzdGVyZWQKCmBgYHR5cGVzY3JpcHQKY29uc3QgcGF0aEl0ZW06IFpvZE9wZW5BcGlQYXRoSXRlbU9iamVjdCA9IHsKICBpZDogJ3NvbWUtcGF0aC1pdGVtJywKICBnZXQ6IHsKICAgIHJlc3BvbnNlczogewogICAgICAyMDA6IHsKICAgICAgICBkZXNjcmlwdGlvbjogJzIwMCBPSycsCiAgICAgICAgY29udGVudDogewogICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7CiAgICAgICAgICAgIHNjaGVtYTogei5vYmplY3QoeyBhOiB6LnN0cmluZygpIH0pLAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICB9LAogICAgfSwKICB9LAp9OwoKLy8gb3IKCmNyZWF0ZURvY3VtZW50KHsKICBjb21wb25lbnRzOiB7CiAgICBwYXRoSXRlbXM6IHsKICAgICAgJ3NvbWUtcGF0aC1pdGVtJzogcGF0aEl0ZW0sCiAgICB9LAogIH0sCn0pOwpgYGAKCiMjIyMgU2VjdXJpdHkgU2NoZW1lcwoKU2VjdXJpdHkgU2NoZW1lcyBjYW4gYmUgcmVnaXN0ZXJlZCBmb3IgYXV0aGVudGljYXRpb24gbWV0aG9kczoKCmBgYHR5cGVzY3JpcHQKY3JlYXRlRG9jdW1lbnQoewogIGNvbXBvbmVudHM6IHsKICAgIHNlY3VyaXR5U2NoZW1lczogewogICAgICBiZWFyZXJBdXRoOiB7CiAgICAgICAgdHlwZTogJ2h0dHAnLAogICAgICAgIHNjaGVtZTogJ2JlYXJlcicsCiAgICAgICAgYmVhcmVyRm9ybWF0OiAnSldUJywKICAgICAgICBkZXNjcmlwdGlvbjogJ0pXVCBBdXRoZW50aWNhdGlvbicsCiAgICAgIH0sCiAgICB9LAogIH0sCn0pOwpgYGAKCiMjIyMgTGlua3MKCkxpbmtzIGNhbiBiZSByZWdpc3RlcmVkIHRvIGRlc2NyaWJlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBvcGVyYXRpb25zOgoKYGBgdHlwZXNjcmlwdApjb25zdCBsaW5rOiBab2RPcGVuQXBpTGlua09iamVjdCA9IHsKICBpZDogJ2dldFVzZXJCeUlkJywKICBvcGVyYXRpb25JZDogJ2dldFVzZXInLAogIHBhcmFtZXRlcnM6IHsKICAgIHVzZXJJZDogJyRyZXF1ZXN0LnBhdGguaWQnLAogIH0sCiAgZGVzY3JpcHRpb246ICdMaW5rIHRvIGdldCB1c2VyIGJ5IGlkJywKfTsKCi8vIG9yCgpjcmVhdGVEb2N1bWVudCh7CiAgY29tcG9uZW50czogewogICAgbGlua3M6IHsKICAgICAgZ2V0VXNlckJ5SWQ6IHsKICAgICAgICBvcGVyYXRpb25JZDogJ2dldFVzZXInLAogICAgICAgIHBhcmFtZXRlcnM6IHsKICAgICAgICAgIHVzZXJJZDogJyRyZXF1ZXN0LnBhdGguaWQnLAogICAgICAgIH0sCiAgICAgICAgZGVzY3JpcHRpb246ICdMaW5rIHRvIGdldCB1c2VyIGJ5IGlkJywKICAgICAgfSwKICAgIH0sCiAgfSwKfSk7CmBgYAoKIyMjIyBFeGFtcGxlcwoKRXhhbXBsZXMgY2FuIGJlIHJlZ2lzdGVyZWQgdG8gcHJvdmlkZSBzYW1wbGUgdmFsdWVzIGZvciBzY2hlbWFzOgoKYGBgdHlwZXNjcmlwdApjb25zdCBleGFtcGxlOiBab2RPcGVuQXBpRXhhbXBsZU9iamVjdCA9IHsKICBpZDogJ3VzZXJFeGFtcGxlJywKICBzdW1tYXJ5OiAnQSBzYW1wbGUgdXNlcicsCiAgdmFsdWU6IHsKICAgIGlkOiAnMTIzJywKICAgIG5hbWU6ICdKYW5lIERvZScsCiAgICBlbWFpbDogJ2phbmVAZXhhbXBsZS5jb20nLAogIH0sCn07CgovLyBvcgoKY3JlYXRlRG9jdW1lbnQoewogIGNvbXBvbmVudHM6IHsKICAgIGV4YW1wbGVzOiB7CiAgICAgIHVzZXJFeGFtcGxlOiB7CiAgICAgICAgc3VtbWFyeTogJ0Egc2FtcGxlIHVzZXInLAogICAgICAgIHZhbHVlOiB7CiAgICAgICAgICBpZDogJzEyMycsCiAgICAgICAgICBuYW1lOiAnSmFuZSBEb2UnLAogICAgICAgICAgZW1haWw6ICdqYW5lQGV4YW1wbGUuY29tJywKICAgICAgICB9LAogICAgICB9LAogICAgfSwKICB9LAp9KTsKYGBgCgojIyMgWm9kIFR5cGVzCgpab2QgdHlwZXMgYXJlIGNvbXBvc2VkIG9mIHR3byBkaWZmZXJlbnQgcGFydHM6IHRoZSBpbnB1dCBhbmQgdGhlIG91dHB1dC4gVGhpcyBsaWJyYXJ5IGRlY2lkZXMgd2hpY2ggdHlwZSB0byBjcmVhdGUgYmFzZWQgb24gaWYgaXQgaXMgdXNlZCBpbiBhIHJlcXVlc3Qgb3IgcmVzcG9uc2UgY29udGV4dC4KCklucHV0OgoKLSBSZXF1ZXN0IFBhcmFtZXRlcnMgKHF1ZXJ5LCBwYXRoLCBoZWFkZXIsIGNvb2tpZSkKLSBSZXF1ZXN0IEJvZHkKCk91dHB1dDoKCi0gUmVzcG9uc2UgQm9keQotIFJlc3BvbnNlIEhlYWRlcnMKCkluIGdlbmVyYWwsIHlvdSB3YW50IHRvIGF2b2lkIHVzaW5nIGEgcmVnaXN0ZXJlZCBpbnB1dCBzY2hlbWEgaW4gYW4gb3V0cHV0IGNvbnRleHQgYW5kIHZpY2UgdmVyc2EuIFRoaXMgaXMgYmVjYXVzZSB0aGUgcmVuZGVyZWQgaW5wdXQgYW5kIG91dHB1dCBzY2hlbWFzIG9mIGEgc2ltcGxlIFpvZCBzY2hlbWEgd2lsbCBkaWZmZXIsIGV2ZW4gd2l0aCBhIHNpbXBsZSBab2Qgc2NoZW1hIGxpa2UgYHoub2JqZWN0KClgLgoKYGBgdHlwZXNjcmlwdApjb25zdCBzY2hlbWEgPSB6Lm9iamVjdCh7CiAgbmFtZTogei5zdHJpbmcoKSwKfSk7CmBgYAoKSW5wdXQgc2NoZW1hcyAocmVxdWVzdCBib2RpZXMsIHBhcmFtZXRlcnMpOgoKYGBganNvbgp7CiAgInR5cGUiOiAib2JqZWN0IiwKICAicHJvcGVydGllcyI6IHsKICAgICJuYW1lIjogewogICAgICAidHlwZSI6ICJzdHJpbmciCiAgICB9CiAgfSwKICAicmVxdWlyZWQiOiBbIm5hbWUiXQp9CmBgYAoKT3V0cHV0IHNjaGVtYXMgKHJlc3BvbnNlcyk6CgpgYGBqc29uCnsKICAidHlwZSI6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIjogewogICAgIm5hbWUiOiB7CiAgICAgICJ0eXBlIjogInN0cmluZyIKICAgIH0KICB9LAogICJyZXF1aXJlZCI6IFsibmFtZSJdLAogICJhZGRpdGlvbmFsUHJvcGVydGllcyI6IGZhbHNlCn0KYGBgCgpXaGVuIHRoZSBzYW1lIHNjaGVtYSBpcyByZWZlcmVuY2VkIGluIGJvdGggaW5wdXQgYW5kIG91dHB1dCBjb250ZXh0cywgdGhlIGxpYnJhcnkgZ2VuZXJhdGVzIHR3byBzZXBhcmF0ZSBjb21wb25lbnQgc2NoZW1hcy4gVGhpcyBoYXBwZW5zIGF1dG9tYXRpY2FsbHkgd2hlbiBhIHNjaGVtYSB3aXRoIGFuIElEIGlzIHVzZWQgaW4gYm90aCBjb250ZXh0cy4KCllvdSBjYW4gY3VzdG9taXplIHRoZSBvdXRwdXQgc2NoZW1hIG5hbWUgYnkgcHJvdmlkaW5nIGFuIGBvdXRwdXRJZGA6CgpgYGB0cwpjb25zdCBzY2hlbWEgPSB6CiAgLm9iamVjdCh7CiAgICBuYW1lOiB6LnN0cmluZygpLAogIH0pCiAgLm1ldGEoewogICAgaWQ6ICdNeU9iamVjdCcsCiAgICBvdXRwdXRJZDogJ015T2JqZWN0UmVzcG9uc2UnLCAvLyBDdXN0b21pemUgdGhlIG91dHB1dCBzY2hlbWEgbmFtZQogIH0pOwpgYGAKCllvdSBjYW4gYWxzbyBzZXQgYSBnbG9iYWwgc3VmZml4IGZvciBvdXRwdXQgc2NoZW1hcyBvciB1c2UgYHoubG9vc2VPYmplY3QoKWAgYW5kIGB6LnN0cmljdE9iamVjdCgpYCB0byBoYXZlIGV4cGxpY2l0IGNvbnRyb2wgb3ZlciB0aGUgc2NoZW1hIGJlaGF2aW9yLgoKPiAqKuKaoO+4jyBOb3RlOioqIElmIHlvdXIgcmVnaXN0ZXJlZCBzY2hlbWEgY29udGFpbnMgZHluYW1pY2FsbHkgY3JlYXRlZCBsYXp5IGNvbXBvbmVudHMsIHRoZXkgd29uJ3QgYmUgcmV1c2VkIGJldHdlZW4gaW5wdXQgYW5kIG91dHB1dCBzY2hlbWFzLgoKIyMgU3VwcG9ydGVkIE9wZW5BUEkgVmVyc2lvbnMKCkN1cnJlbnRseSB0aGUgZm9sbG93aW5nIHZlcnNpb25zIG9mIE9wZW5BUEkgYXJlIHN1cHBvcnRlZAoKLSBgMy4xLjBgIChtaW5pbXVtIHZlcnNpb24pCi0gYDMuMS4xYAoKU2V0dGluZyB0aGUgYG9wZW5hcGlgIGZpZWxkIHdpbGwgY2hhbmdlIGhvdyB0aGUgc29tZSBvZiB0aGUgY29tcG9uZW50cyBhcmUgcmVuZGVyZWQuCgpgYGB0cwpjcmVhdGVEb2N1bWVudCh7CiAgb3BlbmFwaTogJzMuMS4wJywKfSk7CmBgYAoKQXMgYW4gZXhhbXBsZSBgei5zdHJpbmcoKS5udWxsYWJsZSgpYCB3aWxsIGJlIHJlbmRlcmVkIGRpZmZlcmVudGx5CgpgMy4wLjBgCgpgYGBqc29uCnsKICAidHlwZSI6ICJzdHJpbmciLAogICJudWxsYWJsZSI6IHRydWUKfQpgYGAKCmAzLjEuMGAKCmBgYGpzb24KewogICJ0eXBlIjogWyJzdHJpbmciLCAibnVsbCJdCn0KYGBgCgojIyBFeGFtcGxlcwoKU2VlIHRoZSBsaWJyYXJ5IGluIHVzZSBpbiB0aGUgW2V4YW1wbGVzXSguL2V4YW1wbGVzLykgZm9sZGVyLgoKLSBTaW1wbGUgLSBbc2V0dXBdKC4vZXhhbXBsZXMvc2ltcGxlL2NyZWF0ZVNjaGVtYS50cykgfCBbb3BlbmFwaS55bWxdKC4vZXhhbXBsZXMvc2ltcGxlL29wZW5hcGkueW1sKSB8IFtyZWRvYyBkb2N1bWVudGF0aW9uXShodHRwczovL3NhbWNodW5neS5naXRodWIuaW8vem9kLW9wZW5hcGkvZXhhbXBsZXMvc2ltcGxlL3JlZG9jLXN0YXRpYy5odG1sKQoKIyMgRWNvc3lzdGVtCgotIFtmYXN0aWZ5LXpvZC1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vc2FtY2h1bmd5L2Zhc3RpZnktem9kLW9wZW5hcGkpIC0gRmFzdGlmeSBwbHVnaW4gZm9yIHpvZC1vcGVuYXBpLiBUaGlzIGluY2x1ZGVzIHR5cGUgcHJvdmlkZXIsIFpvZCBzY2hlbWEgdmFsaWRhdGlvbiwgWm9kIHNjaGVtYSBzZXJpYWxpemF0aW9uIGFuZCBTd2FnZ2VyIFVJIHN1cHBvcnQuCgotIFtlc2xpbnQtcGx1Z2luLXpvZC1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vc2FtY2h1bmd5L2VzbGludC1wbHVnaW4tem9kLW9wZW5hcGkpIC0gRXNsaW50IHJ1bGVzIGZvciB6b2Qtb3BlbmFwaS4gVGhpcyBpbmNsdWRlcyBmZWF0dXJlcyB3aGljaCBjYW4gYXV0b2dlbmVyYXRlIFR5cGVzY3JpcHQgY29tbWVudHMgZm9yIHlvdXIgWm9kIHR5cGVzIGJhc2VkIG9uIHlvdXIgYGRlc2NyaXB0aW9uYCwgYGV4YW1wbGVgIGFuZCBgZGVwcmVjYXRlZGAgZmllbGRzLgoKIyMgVmVyc2lvbiBJbmZvcm1hdGlvbgoKRm9yIGluZm9ybWF0aW9uIGFib3V0IGNoYW5nZXMgYW5kIG1pZ3JhdGlvbiBmcm9tIHY0IHRvIHY1LCBzZWUgdGhlIFt2NSBtaWdyYXRpb24gZ3VpZGVdKC4vZG9jcy92NS5tZCkuCgojIyBEZXZlbG9wbWVudAoKIyMjIFByZXJlcXVpc2l0ZXMKCi0gTm9kZS5qcyBMVFMKLSBwbnBtCgpgYGBzaGVsbApwbnBtCnBucG0gYnVpbGQKYGBgCgojIyMgVGVzdAoKYGBgc2hlbGwKcG5wbSB0ZXN0CmBgYAoKIyMjIExpbnQKCmBgYHNoZWxsCiMgRml4IGlzc3VlcwpwbnBtIGZvcm1hdAoKIyBDaGVjayBmb3IgaXNzdWVzCnBucG0gbGludApgYGAK readmeEtag: '"c4cae5be2ba57f3a5d6315ba4461d8c3eade30b6"' readmeLastModified: Mon, 12 Jan 2026 06:34:50 GMT repositoryId: 628179878 description: Use Zod Schemas to create OpenAPI v3.x documentation created: '2023-04-15T06:28:51Z' updated: '2026-01-29T11:51:26Z' language: TypeScript archived: false stars: 599 watchers: 4 forks: 29 owner: samchungy logo: https://avatars.githubusercontent.com/u/18017094?v=4 license: MIT repoEtag: '"57118213d75de0fdf68f92cf08e6fc00e2b94eab2fb436d17a547498582c6997"' repoLastModified: Thu, 29 Jan 2026 11:51:26 GMT category: Parsers foundInMaster: true - source: - openapi3 tags - openapi31 tags repository: https://github.com/python-openapi/openapi-spec-validator v3: true id: 55e26cf16a1bedc681a4a5932afc9d43 repositoryMetadata: base64Readme: >- KioqKioqKioqKioqKioqKioqKioqKgpPcGVuQVBJIFNwZWMgdmFsaWRhdG9yCioqKioqKioqKioqKioqKioqKioqKioKCi4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvdi9weXRob25vcGVuYXBpL29wZW5hcGktc3BlYy12YWxpZGF0b3Iuc3ZnP2NvbG9yPSUyMzA4NkRENyZsYWJlbD1kb2NrZXIlMjBodWImc29ydD1zZW12ZXIKICAgICA6dGFyZ2V0OiBodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvcHl0aG9ub3BlbmFwaS9vcGVuYXBpLXNwZWMtdmFsaWRhdG9yCi4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvb3BlbmFwaS1zcGVjLXZhbGlkYXRvci5zdmcKICAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL29wZW5hcGktc3BlYy12YWxpZGF0b3IKLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRodWIvcHl0aG9uLW9wZW5hcGkvb3BlbmFwaS1zcGVjLXZhbGlkYXRvci9tYXN0ZXIuc3ZnP3N0eWxlPWZsYXQKICAgICA6dGFyZ2V0OiBodHRwczovL2NvZGVjb3YuaW8vZ2l0aHViL3B5dGhvbi1vcGVuYXBpL29wZW5hcGktc3BlYy12YWxpZGF0b3I/YnJhbmNoPW1hc3RlcgouLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL29wZW5hcGktc3BlYy12YWxpZGF0b3Iuc3ZnCiAgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9vcGVuYXBpLXNwZWMtdmFsaWRhdG9yCi4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2Zvcm1hdC9vcGVuYXBpLXNwZWMtdmFsaWRhdG9yLnN2ZwogICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvb3BlbmFwaS1zcGVjLXZhbGlkYXRvcgouLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9zdGF0dXMvb3BlbmFwaS1zcGVjLXZhbGlkYXRvci5zdmcKICAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL29wZW5hcGktc3BlYy12YWxpZGF0b3IKCkFib3V0CiMjIyMjCgpPcGVuQVBJIFNwZWMgVmFsaWRhdG9yIGlzIGEgQ0xJLCBwcmUtY29tbWl0IGhvb2sgYW5kIHB5dGhvbiBwYWNrYWdlIHRoYXQgdmFsaWRhdGVzIE9wZW5BUEkgU3BlY3MKYWdhaW5zdCB0aGUgYE9wZW5BUEkgMi4wIChha2EgU3dhZ2dlcikKPGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZD5gX18sCmBPcGVuQVBJIDMuMCA8aHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjMubWQ+YF9fCmFuZCBgT3BlbkFQSSAzLjEgPGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjEuMC5tZD5gX18Kc3BlY2lmaWNhdGlvbi4gVGhlIHZhbGlkYXRvciBhaW1zIHRvIGNoZWNrIGZvciBmdWxsIGNvbXBsaWFuY2Ugd2l0aCB0aGUgU3BlY2lmaWNhdGlvbi4KCgpEb2N1bWVudGF0aW9uCiMjIyMjIyMjIyMjIyMKCkNoZWNrIGRvY3VtZW50YXRpb24gdG8gc2VlIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgZmVhdHVyZXMuIEFsbCBkb2N1bWVudGF0aW9uIGlzIGluIHRoZSAiZG9jcyIgZGlyZWN0b3J5IGFuZCBvbmxpbmUgYXQgYG9wZW5hcGktc3BlYy12YWxpZGF0b3IucmVhZHRoZWRvY3MuaW8gPGh0dHBzOi8vb3BlbmFwaS1zcGVjLXZhbGlkYXRvci5yZWFkdGhlZG9jcy5pbz5gX18KCgpJbnN0YWxsYXRpb24KIyMjIyMjIyMjIyMjCgouLiBjb2RlLWJsb2NrOjogY29uc29sZQoKICAgIHBpcCBpbnN0YWxsIG9wZW5hcGktc3BlYy12YWxpZGF0b3IKCkFsdGVybmF0aXZlbHkgeW91IGNhbiBkb3dubG9hZCB0aGUgY29kZSBhbmQgaW5zdGFsbCBmcm9tIHRoZSByZXBvc2l0b3J5OgoKLi4gY29kZS1ibG9jazo6IGJhc2gKCiAgIHBpcCBpbnN0YWxsIC1lIGdpdCtodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uLW9wZW5hcGkvb3BlbmFwaS1zcGVjLXZhbGlkYXRvci5naXQjZWdnPW9wZW5hcGlfc3BlY192YWxpZGF0b3IKCgpVc2FnZQojIyMjIwoKQ0xJIChDb21tYW5kIExpbmUgSW50ZXJmYWNlKQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpTdHJhaWdodCBmb3J3YXJkIHdheToKCi4uIGNvZGUtYmxvY2s6OiBiYXNoCgogICAgb3BlbmFwaS1zcGVjLXZhbGlkYXRvciBvcGVuYXBpLnlhbWwKCnBpcGVzIHdheToKCi4uIGNvZGUtYmxvY2s6OiBiYXNoCgogICAgY2F0IG9wZW5hcGkueWFtbCB8IG9wZW5hcGktc3BlYy12YWxpZGF0b3IgLQoKZG9ja2VyIHdheToKCi4uIGNvZGUtYmxvY2s6OiBiYXNoCgogICAgZG9ja2VyIHJ1biAtdiBwYXRoL3RvL29wZW5hcGkueWFtbDovb3BlbmFwaS55YW1sIC0tcm0gcHl0aG9ub3BlbmFwaS9vcGVuYXBpLXNwZWMtdmFsaWRhdG9yIC9vcGVuYXBpLnlhbWwKCm9yIG1vcmUgcHl0aG9uaWMgd2F5OgoKLi4gY29kZS1ibG9jazo6IGJhc2gKCiAgICBweXRob24gLW0gb3BlbmFwaV9zcGVjX3ZhbGlkYXRvciBvcGVuYXBpLnlhbWwKCkZvciBtb3JlIGRldGFpbHMsIHJlYWQgYWJvdXQgYENMSSAoQ29tbWFuZCBMaW5lIEludGVyZmFjZSkgPGh0dHBzOi8vb3BlbmFwaS1zcGVjLXZhbGlkYXRvci5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvY2xpLmh0bWw+YF9fLgoKcHJlLWNvbW1pdCBob29rCioqKioqKioqKioqKioqKgoKLi4gY29kZS1ibG9jazo6IHlhbWwKCiAgIHJlcG9zOgogICAtICAgcmVwbzogaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi1vcGVuYXBpL29wZW5hcGktc3BlYy12YWxpZGF0b3IKICAgICAgIHJldjogMC44LjBiMSAjIFRoZSB2ZXJzaW9uIHRvIHVzZSBvciAnbWFzdGVyJyBmb3IgbGF0ZXN0CiAgICAgICBob29rczoKICAgICAgIC0gICBpZDogb3BlbmFwaS1zcGVjLXZhbGlkYXRvcgoKRm9yIG1vcmUgZGV0YWlscywgcmVhZCBhYm91dCBgcHJlLWNvbW1pdCBob29rIDxodHRwczovL29wZW5hcGktc3BlYy12YWxpZGF0b3IucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2hvb2suaHRtbD5gX18uCgpQeXRob24gcGFja2FnZQoqKioqKioqKioqKioqKgoKLi4gY29kZTo6IHB5dGhvbgoKICAgIGZyb20gb3BlbmFwaV9zcGVjX3ZhbGlkYXRvciBpbXBvcnQgdmFsaWRhdGUKICAgIGZyb20gb3BlbmFwaV9zcGVjX3ZhbGlkYXRvci5yZWFkZXJzIGltcG9ydCByZWFkX2Zyb21fZmlsZW5hbWUKCiAgICBzcGVjX2RpY3QsIGJhc2VfdXJpID0gcmVhZF9mcm9tX2ZpbGVuYW1lKCdvcGVuYXBpLnlhbWwnKQoKICAgICMgSWYgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCBieSB2YWxpZGF0ZSgpLCB0aGUgc3BlYyBpcyB2YWxpZC4KICAgIHZhbGlkYXRlKHNwZWNfZGljdCkKCiAgICB2YWxpZGF0ZSh7J29wZW5hcGknOiAnMy4xLjAnfSkKCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAgLi4uCiAgICBPcGVuQVBJVmFsaWRhdGlvbkVycm9yOiAnaW5mbycgaXMgYSByZXF1aXJlZCBwcm9wZXJ0eQoKRm9yIG1vcmUgZGV0YWlscywgcmVhZCBhYm91dCBgUHl0aG9uIHBhY2thZ2UgPGh0dHBzOi8vb3BlbmFwaS1zcGVjLXZhbGlkYXRvci5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvcHl0aG9uLmh0bWw+YF9fLgoKUmVsYXRlZCBwcm9qZWN0cwojIyMjIyMjIyMjIyMjIyMjCgoqIGBvcGVuYXBpLWNvcmUgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24tb3BlbmFwaS9vcGVuYXBpLWNvcmU+YF9fCiAgIFB5dGhvbiBsaWJyYXJ5IHRoYXQgYWRkcyBjbGllbnQtc2lkZSBhbmQgc2VydmVyLXNpZGUgc3VwcG9ydCBmb3IgdGhlIE9wZW5BUEkgdjMuMCBhbmQgT3BlbkFQSSB2My4xIHNwZWNpZmljYXRpb24uCiogYG9wZW5hcGktc2NoZW1hLXZhbGlkYXRvciA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi1vcGVuYXBpL29wZW5hcGktc2NoZW1hLXZhbGlkYXRvcj5gX18KICAgUHl0aG9uIGxpYnJhcnkgdGhhdCB2YWxpZGF0ZXMgc2NoZW1hIGFnYWluc3QgdGhlIE9wZW5BUEkgU2NoZW1hIFNwZWNpZmljYXRpb24gdjMuMCBhbmQgT3BlbkFQSSBTY2hlbWEgU3BlY2lmaWNhdGlvbiB2My4xLgoKTGljZW5zZQojIyMjIyMjCgpDb3B5cmlnaHQgKGMpIDIwMTctMjAyMywgQXJ0dXIgTWFjaWFnLCBBbGwgcmlnaHRzIHJlc2VydmVkLiBBcGFjaGUgdjIK readmeEtag: '"31126c0cadb25585ec33cacfdd5e4c60bfc2b5d1"' readmeLastModified: Tue, 06 Jan 2026 16:23:52 GMT repositoryId: 102581313 description: >- OpenAPI Spec Validator is a CLI, pre-commit hook and python package that validates OpenAPI Specs against the OpenAPI 2.0 (aka Swagger), OpenAPI 3.0 and OpenAPI 3.1 specification. created: '2017-09-06T08:08:25Z' updated: '2026-02-01T14:49:20Z' language: Python archived: false stars: 385 watchers: 8 forks: 71 owner: python-openapi logo: https://avatars.githubusercontent.com/u/126442889?v=4 license: Apache-2.0 repoEtag: '"38cea59137f18bf5bdc3454caa47b21e6f8ccd32b029e9918cf34670747cc70e"' repoLastModified: Sun, 01 Feb 2026 14:49:20 GMT category: Parsers oldLocations: - https://github.com/p1c2u/openapi-spec-validator foundInMaster: true v3_1: true - source: openapi3 tags repository: https://github.com/asyncapi/modelina v3: true id: 8525db62087986733db0fc4221c4b719 repositoryMetadata: base64Readme: >- WyFbQXN5bmNBUEkgTW9kZWxpbmFdKC4vZG9jcy9pbWcvcmVhZG1lLWJhbm5lci5wbmcpXShodHRwczovL3d3dy5tb2RlbGluYS5vcmcpClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvZ2l0aHViL2FzeW5jYXBpL21vZGVsaW5hL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL2FzeW5jYXBpL21vZGVsaW5hP2JyYW5jaD1tYXN0ZXIpClshW1Byb2plY3QgU3RhdHVzOiBBY3RpdmUg4oCTIFRoZSBwcm9qZWN0IGhhcyByZWFjaGVkIGEgc3RhYmxlLCB1c2FibGUgc3RhdGUgYW5kIGlzIGJlaW5nIGFjdGl2ZWx5IGRldmVsb3BlZC5dKGh0dHBzOi8vd3d3LnJlcG9zdGF0dXMub3JnL2JhZGdlcy9sYXRlc3QvYWN0aXZlLnN2ZyldKGh0dHBzOi8vd3d3LnJlcG9zdGF0dXMub3JnLyNhY3RpdmUpCiFbTWFpbnRlbmFuY2Ugc2NvcmVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtcy1pby9tYWludGVuYW5jZS1zY29yZS9AYXN5bmNhcGkvbW9kZWxpbmEpClshW05wbSBsYXRlc3QgdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYXN5bmNhcGkvbW9kZWxpbmEpClshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvYmxvYi9tYXN0ZXIvTElDRU5TRSkKWyFbbGFzdCBjb21taXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhc3QtY29tbWl0L2FzeW5jYXBpL21vZGVsaW5hKV0oaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHMvbWFzdGVyKQpbIVtEaXNjdXNzaW9uc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvZGlzY3Vzc2lvbnMvYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvZGlzY3Vzc2lvbnMpClshW1dlYnNpdGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vd2Vic2l0ZT9sYWJlbD13ZWJzaXRlJnVybD1odHRwcyUzQSUyRiUyRnd3dy5tb2RlbGluYS5vcmcpXShodHRwczovL3d3dy5tb2RlbGluYS5vcmcpClshW1BsYXlncm91bmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vd2Vic2l0ZT9sYWJlbD1wbGF5Z3JvdW5kJnVybD1odHRwcyUzQSUyRiUyRnd3dy5tb2RlbGluYS5vcmclMkZwbGF5Z3JvdW5kKV0oaHR0cHM6Ly93d3cubW9kZWxpbmEub3JnL3BsYXlncm91bmQpIDwhLS0gQUxMLUNPTlRSSUJVVE9SUy1CQURHRTpTVEFSVCAtIERvIG5vdCByZW1vdmUgb3IgbW9kaWZ5IHRoaXMgc2VjdGlvbiAtLT4KWyFbQWxsIENvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9hbGxfY29udHJpYnV0b3JzLTExMy1vcmFuZ2Uuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oI2NvbnRyaWJ1dG9ycy0pCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1CQURHRTpFTkQgLS0+CgoKWW91ciBvbmUtc3RvcCB0b29sIGZvciBnZW5lcmF0aW5nIGFjY3VyYXRlIGFuZCB3ZWxsLXRlc3RlZCBtb2RlbHMgZm9yIHJlcHJlc2VudGluZyB0aGUgbWVzc2FnZSBwYXlsb2Fkcy4gVXNlIGl0IGFzIGEgdG9vbCBpbiB5b3VyIGRldmVsb3BtZW50IHdvcmtmbG93LCBvciBhIGxpYnJhcnkgaW4gYSBsYXJnZXIgaW50ZWdyYXRpb25zLCBlbnRpcmVseSBpbiB5b3VyIGNvbnRyb2wuCgotLS0KCjwhLS0gdG9jIGlzIGdlbmVyYXRlZCB3aXRoIEdpdEh1YiBBY3Rpb25zIGRvIG5vdCByZW1vdmUgdG9jIG1hcmtlcnMgLS0+Cgo8IS0tIHRvYyAtLT4KCi0gW0luc3RhbGxpbmcgTW9kZWxpbmFdKCNpbnN0YWxsaW5nLW1vZGVsaW5hKQotIFtGZWF0dXJlc10oI2ZlYXR1cmVzKQotIFtSZXF1aXJlbWVudHNdKCNyZXF1aXJlbWVudHMpCi0gW0RvY3VtZW50YXRpb25dKCNkb2N1bWVudGF0aW9uKQotIFtFeGFtcGxlc10oI2V4YW1wbGVzKQotIFtWZXJzaW9uaW5nIGFuZCBtYWludGVuYW5jZV0oI3ZlcnNpb25pbmctYW5kLW1haW50ZW5hbmNlKQotIFtEZXZlbG9wbWVudF0oI2RldmVsb3BtZW50KQotIFtDb250cmlidXRpbmddKCNjb250cmlidXRpbmcpCi0gW0NvbnRyaWJ1dG9yc10oI2NvbnRyaWJ1dG9ycykKCjwhLS0gdG9jc3RvcCAtLT4KCiMjIEluc3RhbGxpbmcgTW9kZWxpbmEKCkluc3RhbGwgTW9kZWxpbmEgZGlyZWN0bHkgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgcHJvamVjdDoKCmBgYGJhc2gKbnBtIGluc3RhbGwgQGFzeW5jYXBpL21vZGVsaW5hCmBgYAoKT3IgaWYgeW91IHdhbnQgdG8gW3J1biBNb2RlbGluYSwgdXNlIHRoZSBDTEldKC4vbW9kZWxpbmEtY2xpL1JFQURNRS5tZCkuCgpgYGBiYXNoCm1vZGVsaW5hIGdlbmVyYXRlIDxsYW5ndWFnZT4gLi9hc3luY2FwaS5qc29uCmBgYAoKPGgyIGFsaWduPSJjZW50ZXIiPldoYXQgRG9lcyBNb2RlbGluYSBEbz88L2gyPgoKPHAgYWxpZ249ImNlbnRlciI+TW9kZWxpbmEgcHV0IFlPVSBpbiBjb250cm9sIG9mIHlvdXIgZGF0YSBtb2RlbHMsIGhlcmUgaXMgaG93Li4uPC9wPgoKPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CjwhLS0gbWFya2Rvd25saW50LWRpc2FibGUgLS0+Cjx0YWJsZT4KICA8dHI+CiAgICA8dGQ+PGI+TW9kZWxpbmEgbGV0cyB5b3UgZ2VuZXJhdGUgZGF0YSBtb2RlbHMgZnJvbSBtYW55IHR5cGVzIG9mIDxhIGhyZWY9IiNpbnB1dHMiPmlucHV0czwvYT48L2I+PC90ZD4KPHRkPgoKYGBgdHlwZXNjcmlwdApjb25zdCBhc3luY2FwaSA9IC4uLgpjb25zdCBqc29uc2NoZW1hID0gLi4uCmNvbnN0IG9wZW5hcGkgPSAuLi4gCmNvbnN0IG1ldGFtb2RlbCA9IC4uLiAKLi4uCmNvbnN0IG1vZGVscyA9IGF3YWl0IGdlbmVyYXRvci5nZW5lcmF0ZSgKICBhc3luY2FwaSB8IGpzb25zY2hlbWEgfCBvcGVuYXBpIHwgbWV0YW1vZGVsCik7CmBgYAo8L3RkPgogIDwvdHI+CiAgICA8dHI+CiAgICA8dGQ+PGI+VXNlIHRoZSBzYW1lIGlucHV0cyBhY3Jvc3MgYSByYW5nZSBvZiBkaWZmZXJlbnQgPGEgaHJlZj0iI291dHB1dHMiPmdlbmVyYXRvcnM8L2E+PC9iPjwvdGQ+Cjx0ZD4KCmBgYHR5cGVzY3JpcHQKY29uc3QgZ2VuZXJhdG9yID0gbmV3IFR5cGVTY3JpcHRHZW5lcmF0b3IoKTsKY29uc3QgZ2VuZXJhdG9yID0gbmV3IENzaGFycEdlbmVyYXRvcigpOwpjb25zdCBnZW5lcmF0b3IgPSBuZXcgSmF2YUdlbmVyYXRvcigpOwpjb25zdCBnZW5lcmF0b3IgPSBuZXcgUnVzdEdlbmVyYXRvcigpOwouLi4KY29uc3QgbW9kZWxzID0gYXdhaXQgZ2VuZXJhdG9yLmdlbmVyYXRlKGlucHV0KTsKYGBgCjwvdGQ+CiAgPC90cj4KICAgIDx0cj4KICAgIDx0ZD48Yj5FYXNpbHkgbGV0IHlvdSBpbnRlcmFjdCB3aXRoIHRoZSBnZW5lcmF0ZWQgbW9kZWxzLjwvYj4gCgotIFdhbnQgdG8gc2hvdyB0aGUgZ2VuZXJhdGVkIG1vZGVscyBvbiBhIHdlYnNpdGU/IFN1cmUhIAotIFdhbnQgdG8gZ2VuZXJhdGUgdGhlIG1vZGVscyBpbnRvIGZpbGVzPyBTdXJlISAKLSBXYW50IHRvIGNvbWJpbmUgYWxsIHRoZSBtb2RlbHMgaW50byBvbmUgc2luZ2xlIGZpbGU/IFN1cmUhIAoKV2hhdGV2ZXIgaW50ZXJhY3Rpb24geW91IG5lZWQsIHlvdSBjYW4gY3JlYXRlLjwvdGQ+Cjx0ZD4KCmBgYHR5cGVzY3JpcHQKY29uc3QgbW9kZWxzID0gYXdhaXQgZ2VuZXJhdG9yLmdlbmVyYXRlKGlucHV0KTsKZm9yIChjb25zdCBtb2RlbCBpbiBtb2RlbHMpIHsgCiAgY29uc3QgZ2VuZXJhdGVkQ29kZSA9IG1vZGVsLnJlc3VsdDsKICBjb25zdCBkZXBlbmRlbmNpZXMgPSBtb2RlbC5kZXBlbmRlbmNpZXM7CiAgY29uc3QgbW9kZWx0eXBlID0gbW9kZWwudHlwZTsKICBjb25zdCBtb2RlbE5hbWUgPSBtb2RlbC5tb2RlbE5hbWU7CiAgLi4uCn0KYGBgCjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGI+RWFzaWx5IG1vZGlmeSBob3cgbW9kZWxzIGFyZSA8YSBocmVmPSIuL2RvY3MvY29uc3RyYWludHMvUkVBRE1FLm1kIj5jb25zdHJhaW5lZDwvYT4gaW50byB0aGUgb3V0cHV0PC9iPjwvdGQ+Cgo8dGQ+CgpgYGB0eXBlc2NyaXB0CmNvbnN0IGdlbmVyYXRvciA9IG5ldyBUeXBlU2NyaXB0R2VuZXJhdG9yKHsKICBjb25zdHJhaW50czogewogICAgbW9kZWxOYW1lOiAoe21vZGVsTmFtZX0pID0+IHsKICAgICAgLy8gSW1wbGVtZW50IHlvdXIgb3duIGNvbnN0cmFpbmluZyBsb2dpYwogICAgICByZXR1cm4gbW9kZWxOYW1lOwogICAgfQogIH0KfSk7CmBgYAo8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxiPlNlYW1sZXNzbHkgbGF5ZXIgYWRkaXRpb25hbCBvciByZXBsYWNlbWVudCBjb2RlIDxhIGhyZWY9Ii4vZG9jcy9wcmVzZXRzLm1kIj5vbiB0b3Agb2YgZWFjaCBvdGhlciB0byBjdXN0b21pemUgdGhlIG1vZGVsczwvYT4gdG8geW91ciB1c2UtY2FzZTwvYj48L3RkPgoKPHRkPgoKYGBgdHlwZXNjcmlwdApjb25zdCBnZW5lcmF0b3IgPSBuZXcgVHlwZVNjcmlwdEdlbmVyYXRvcih7CiAgcHJlc2V0czogWwogICAgewogICAgICBjbGFzczogewogICAgICAgIGFkZGl0aW9uYWxDb250ZW50KHsgY29udGVudCB9KSB7CiAgICAgICAgICByZXR1cm4gYCR7Y29udGVudH0KcHVibGljIG15Q3VzdG9tRnVuY3Rpb24oKTogc3RyaW5nIHsKICByZXR1cm4gJ0EgY3VzdG9tIGZ1bmN0aW9uIGZvciBlYWNoIGNsYXNzJzsKfWA7CiAgICAgICAgfSwKICAgICAgfQogICAgfQogIF0KfSk7CmNvbnN0IG1vZGVscyA9IGF3YWl0IGdlbmVyYXRvci5nZW5lcmF0ZShpbnB1dCk7CmBgYAo8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxiPlNlYW1sZXNzbHkgbGV0cyB5b3UgPGEgaHJlZj0iLi9kb2NzL3ByZXNldHMubWQiPmNvbWJpbmUgbXVsdGlwbGUgbGF5ZXJzIG9mIGFkZGl0aW9uYWwgb3IgcmVwbGFjZW1lbnQgY29kZTwvYT48L2I+PC90ZD4KCjx0ZD4KCmBgYHR5cGVzY3JpcHQKY29uc3QgbXlDdXN0b21GdW5jdGlvbjEgPSB7CiAgY2xhc3M6IHsKICAgIGFkZGl0aW9uYWxDb250ZW50KHsgY29udGVudCB9KSB7CiAgICAgIHJldHVybiBgJHtjb250ZW50fQpwdWJsaWMgbXlDdXN0b21GdW5jdGlvbigpOiBzdHJpbmcgewpyZXR1cm4gJ0EgY3VzdG9tIGZ1bmN0aW9uIGZvciBlYWNoIGNsYXNzJzsKfWA7CiAgICB9LAogIH0KfTsKY29uc3QgbXlDdXN0b21GdW5jdGlvbjIgPSB7Li4ufTsKY29uc3QgZ2VuZXJhdG9yID0gbmV3IFR5cGVTY3JpcHRHZW5lcmF0b3IoewogIHByZXNldHM6IFsKICAgIG15Q3VzdG9tRnVuY3Rpb24xLAogICAgbXlDdXN0b21GdW5jdGlvbjIKICBdCn0pOwpjb25zdCBtb2RlbHMgPSBhd2FpdCBnZW5lcmF0b3IuZ2VuZXJhdGUoaW5wdXQpOwpgYGAKPC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKIyMgRmVhdHVyZXMKClRoZSBmb2xsb3dpbmcgdGFibGUgcHJvdmlkZXMgYSBzaG9ydCBzdW1tYXJ5IG9mIGF2YWlsYWJsZSBmZWF0dXJlcyBmb3Igc3VwcG9ydGVkIG91dHB1dCBsYW5ndWFnZXMuIFRvIHNlZSB0aGUgY29tcGxldGUgZmVhdHVyZSBsaXN0IGZvciBlYWNoIGxhbmd1YWdlLCBwbGVhc2UgY2xpY2sgdGhlIGluZGl2aWR1YWwgbGlua3MgZm9yIGVhY2ggbGFuZ3VhZ2UuCgo8YSBpZD0iaW5wdXRzIj48L2E+Cgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KPCEtLSBtYXJrZG93bmxpbnQtZGlzYWJsZSAtLT4KPHRhYmxlPgogIDx0cj4KICAgIDx0aD5TdXBwb3J0ZWQgaW5wdXRzPC90aD4KICAgIDx0aD48L3RoPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1hc3luY2FwaS1kb2N1bWVudHMiPkFzeW5jQVBJPC9hPjwvdGQ+CiAgICA8dGQ+V2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5nIEFzeW5jQVBJIHZlcnNpb25zOiA8ZW0+Mi4wLjAgLT4gMy4wLjA8L2VtPiwgd2hpY2ggZ2VuZXJhdGVzIG1vZGVscyBmb3IgYWxsIHRoZSBkZWZpbmVkIG1lc3NhZ2UgcGF5bG9hZHMuIEl0IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgc2NoZW1hRm9ybWF0cyBBc3luY0FQSSBTY2hlbWEgb2JqZWN0LCBKU09OIFNjaGVtYSBkcmFmdCA3LCA8YSBocmVmPSIuL2V4YW1wbGVzL2FzeW5jYXBpLWF2cm8tc2NoZW1hIj5BVlJPIDEuOTwvYT4sIDxhIGhyZWY9Ii4vZXhhbXBsZXMvYXN5bmNhcGktcmFtbC1zY2hlbWEiPlJBTUwgMS4wIGRhdGEgdHlwZTwvYT4sIGFuZCA8YSBocmVmPSIuL2V4YW1wbGVzL2FzeW5jYXBpLW9wZW5hcGktc2NoZW1hIj5PcGVuQVBJIDMuMCBTY2hlbWE8L2E+LjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLW1vZGVscy1mcm9tLWF2cm8tc2NoZW1hLWRvY3VtZW50cyI+QXZybyBTY2hlbWE8YT48L3RkPgogICAgPHRkPldlIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBBdnJvIHZlcnNpb25zOiA8YSBocmVmPSIuL2V4YW1wbGVzL2F2cm8tc2NoZW1hLWZyb20tb2JqZWN0Ij52MS54PC9hPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLW1vZGVscy1mcm9tLWpzb24tc2NoZW1hLWRvY3VtZW50cyI+SlNPTiBTY2hlbWE8L2E+PC90ZD4KICAgIDx0ZD5XZSBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgSlNPTiBTY2hlbWEgdmVyc2lvbnM6IDxlbT5EcmFmdC00LCBEcmFmdC02IGFuZCBEcmFmdC03PC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1vcGVuYXBpLWRvY3VtZW50cyI+T3BlbkFQSTwvYT48L3RkPgogICAgPHRkPldlIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBPcGVuQVBJIHZlcnNpb25zOiA8ZW0+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLW1vZGVscy1mcm9tLXN3YWdnZXItMjAtZG9jdW1lbnRzIj5Td2FnZ2VyIDIuMDwvYT4sIDxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1vcGVuYXBpLWRvY3VtZW50cyI+T3BlbkFQSSAzLjAgYW5kIDMuMTwvYT48L2VtPiwgd2hpY2ggZ2VuZXJhdGVzIG1vZGVscyBmb3IgYWxsIHRoZSBkZWZpbmVkIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHBheWxvYWRzLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9leGFtcGxlcy94c2QtdG8tdHlwZXNjcmlwdCI+WFNEIChYTUwgU2NoZW1hIERlZmluaXRpb24pPC9hPjwvdGQ+CiAgICA8dGQ+V2Ugc3VwcG9ydCBYTUwgU2NoZW1hIERlZmluaXRpb24gKFhTRCkgd2l0aCBjb21tb24gZWxlbWVudHMgaW5jbHVkaW5nIHNpbXBsZSB0eXBlcywgY29tcGxleCB0eXBlcywgc2VxdWVuY2VzLCBjaG9pY2VzLCBhdHRyaWJ1dGVzLCBhbmQgZW51bWVyYXRpb25zLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLW1vZGVsLWZyb20tdHlwZXNjcmlwdC10eXBlLWZpbGVzIj5UeXBlU2NyaXB0PC9hPjwvdGQ+CiAgICA8dGQ+V2UgY3VycmVudGx5IHN1cHBvcnQgVHlwZVNjcmlwdCB0eXBlcyBhcyBmaWxlIGlucHV0IGZvciBtb2RlbCBnZW5lcmF0aW9uPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtbW9kZWxzLWZyb20tbWV0YS1tb2RlbHMiPk1ldGEgbW9kZWw8L2E+PC90ZD4KICAgIDx0ZD5UaGlzIGlzIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBhIG1vZGVsIGZvciBNb2RlbGluYSwgaXQgaXMgd2hhdCBpbnB1dHMgZ2V0cyBjb252ZXJ0ZWQgdG8sIGFuZCB3aGF0IGdlbmVyYXRvcnMgYXJlIHByb3ZpZGVkIHRvIGdlbmVyYXRlIGNvZGUuIEluc3RlYWQgb2YgcmVseWluZyBvbiBhbiBpbnB1dCBwcm9jZXNzb3IsIHlvdSBjYW4gY3JlYXRlIHlvdXIgb3duIG1vZGVscyBmcm9tIHNjcmF0Y2ggYW5kIHN0aWxsIHRha2UgYWR2YW50YWdlIG9uIHRoZSBnZW5lcmF0b3JzIGFuZCB0aGUgZmVhdHVyZXMuPC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKPGEgaWQ9Im91dHB1dHMiPjwvYT4KPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CjwhLS0gbWFya2Rvd25saW50LWRpc2FibGUgLS0+Cjx0YWJsZT4KICA8dHI+CiAgICA8dGg+U3VwcG9ydGVkIG91dHB1dHM8L3RoPgogICAgPHRoPjwvdGg+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWphdmEtbW9kZWxzIj5KYXZhPC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmdlbmVyYXRpb24gb2YgZXF1YWxzLCBoYXNoQ29kZSwgdG9TdHJpbmcsIEphY2tzb24gYW5ub3RhdGlvbiwgY3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YzwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtdHlwZXNjcmlwdC1tb2RlbHMiPlR5cGVTY3JpcHQ8L2E+PC90ZD4KICAgIDx0ZD5DbGFzcywgaW50ZXJmYWNlIGFuZCBlbnVtIGdlbmVyYXRpb246IDxlbT5nZW5lcmF0aW9uIG9mIGV4YW1wbGUgY29kZSwgdW4vbWFyc2hhbCBmdW5jdGlvbnMsIGN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGM8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWMjLW1vZGVscyI+QyM8L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+Z2VuZXJhdGlvbiBvZiBleGFtcGxlIGNvZGUsIHNlcmlhbGl6ZXIgYW5kIGRlc2VyaWFsaXplciBmdW5jdGlvbnMsIGN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGM8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWdvLW1vZGVscyI+R288L2E+PC90ZD4KICAgIDx0ZD5TdHJ1Y3QgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGMgPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1qYXZhc2NyaXB0LW1vZGVscyI+SmF2YVNjcmlwdDwvYT48L3RkPgogICAgPHRkPkNsYXNzIGdlbmVyYXRpb246IDxlbT5jdXN0b20gaW5kZW50YXRpb24gdHlwZSBhbmQgc2l6ZSwgZXRjPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1kYXJ0LW1vZGVscyI+RGFydDwvYT48L3RkPgogICAgPHRkPkNsYXNzIGFuZCBlbnVtIGdlbmVyYXRpb246IGpzb25fYW5ub3RhdGlvbjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLXJ1c3QtbW9kZWxzIj5SdXN0PC9hPjwvdGQ+CiAgICA8dGQ+U3RydWN0L3R1cGxlIGFuZCBlbnVtIGdlbmVyYXRpb246IDxlbT5nZW5lcmF0aW9uIG9mIGBpbXBsZW1lbnQgRGVmYXVsdGAsIGdlbmVyYXRlIHNlcmRlIG1hY3JvcywgY3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YzwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtcHl0aG9uLW1vZGVscyI+UHl0aG9uPC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGMgPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1rb3RsaW4tbW9kZWxzIj5Lb3RsaW48L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+dXNlIG9mIGRhdGEgY2xhc3NlcyB3aGVyZSBhcHByb3ByaWF0ZSwgY3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YyA8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWNwbHVzcGx1cy1tb2RlbHMiPkMrKzwvYT48L3RkPgogICAgPHRkPkNsYXNzIGFuZCBlbnVtIGdlbmVyYXRpb246IDxlbT5jdXN0b20gaW5kZW50YXRpb24gdHlwZSBhbmQgc2l6ZSwgZXRjIDwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtcGhwLW1vZGVscyI+UEhQPC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBkZXNjcmlwdGlvbnMsIGV0YyA8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLXNjYWxhLW1vZGVscyI+U2NhbGE8L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+Y3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGRlc2NyaXB0aW9ucywgZXRjIDwvZW0+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKIyMgUmVxdWlyZW1lbnRzClRoZSBmb2xsb3dpbmcgYXJlIGEgcmVxdWlyZW1lbnQgaW4gb3JkZXIgdG8gdXNlIE1vZGVsaW5hLgoKLSBbTm9kZUpTXShodHRwczovL25vZGVqcy5vcmcvZW4vKSA+PSAxOAoKIyMgRG9jdW1lbnRhdGlvbgpBIGZlYXR1cmUgaW4gTW9kZWxpbmEgY2Fubm90IGV4aXN0cyB3aXRob3V0IGFuIGV4YW1wbGUgYW5kIGRvY3VtZW50YXRpb24gZm9yIGl0LiBZb3UgY2FuIGZpbmQgYWxsIHRoZSBbZG9jdW1lbnRhdGlvbiBoZXJlXSguL2RvY3MvUkVBRE1FLm1kKS4KCiMjIEV4YW1wbGVzCkRvIHlvdSBuZWVkIHRvIGtub3cgaG93IHRvIHVzZSB0aGUgbGlicmFyeSBpbiBjZXJ0YWluIHNjZW5hcmlvcz8gCgpXZSBoYXZlIGdhdGhlcmVkIGFsbCB0aGUgZXhhbXBsZXMgaW4gYSBzZXBhcmF0ZSBmb2xkZXIgYW5kIHRoZXkgY2FuIGJlIGZvdW5kIHVuZGVyIHRoZSBbZXhhbXBsZXMgZm9sZGVyXSguL2V4YW1wbGVzKS4gCgojIyBWZXJzaW9uaW5nIGFuZCBtYWludGVuYW5jZQpBcyBvZiB2ZXJzaW9uIDEsIE1vZGVsaW5hIGhhcyBhIHZlcnkgc3RyaWN0IHNldCBvZiBjaGFuZ2VzIHdlIGFyZSBhbGxvd2VkIHRvIGRvIGJlZm9yZSBpdCByZXF1aXJlcyBhIG1ham9yIHZlcnNpb24gY2hhbmdlLiBJbiBzaG9ydCwgYW55IGNoYW5nZXMgdGhhdCBjaGFuZ2UgdGhlIGdlbmVyYXRlZCBvdXRjb21lIGFyZSBub3QgYWxsb3dlZCBhcyBpdCdzIGEgYnJlYWtpbmcgY2hhbmdlIGZvciB0aGUgY29uc3VtZXIgb2YgdGhlIGdlbmVyYXRlZCBtb2RlbHMuIAoKSGVyZSBpcyBhIGxpc3Qgb2YgY2hhbmdlcyB3ZSBhcmUgYWxsb3dlZCB0byBkbyB0aGF0IHdvdWxkIG5vdCByZXF1aXJlIGEgYnJlYWtpbmcgY2hhbmdlOgotIEFkZGluZyBuZXcgZmVhdHVyZXMgKHRoYXQgZG8gbm90IGNoYW5nZSBleGlzdGluZyBvdXRwdXQpLCBzdWNoIGFzIGdlbmVyYXRvcnMsIHByZXNldHMsIGlucHV0IHByb2Nlc3NvcnMsIGV0Yy4KLSBDaGFuZ2UgZXhpc3RpbmcgZmVhdHVyZXMsIGJ5IHByb3ZpZGluZyBvcHRpb25zIHRoYXQgZGVmYXVsdCB0byBjdXJyZW50IGJlaGF2aW9yLiBUaGlzIGNvdWxkIGJlIGEgcHJlc2V0IHRoYXQgYWRhcHRzIHRoZSBvdXRwdXQgYmFzZWQgb24gb3B0aW9ucywgYXMgbG9uZyBhcyB0aGUgQVBJIG9mIE1vZGVsaW5hIGFuZCB0aGUgQVBJIG9mIHRoZSBnZW5lcmF0ZWQgbW9kZWxzIGRvZXMgbm90IGhhdmUgYW55IGJyZWFraW5nIGNoYW5nZXMuCi0gQnVnIGZpeGVzIHdoZXJlIHRoZSBnZW5lcmF0ZWQgY29kZSBpcyBvdGhlcndpc2UgdW51c2FibGUgKHN5bnRheCBlcnJvcnMsIGV0YykuCgpCcmVha2luZyBjaGFuZ2VzIGFyZSBhbGxvd2VkIGFuZCBleHBlY3RlZCBhdCBhIGZyZXF1ZW50IHJhdGUsIG9mIGNvdXJzZSB3aGVyZSBpdCBtYWtlcyBzZW5zZSB3ZSB3aWxsIHRyeSB0byBidW5kbGUgbXVsdGlwbGUgY2hhbmdlcyB0b2dldGhlci4KCldlIG9mIGNvdXJzZSB3aWxsIGRvIG91ciBiZXN0IHRvIHVwaG9sZCB0aGlzLCBidXQgbWlzdGFrZXMgY2FuIGhhcHBlbiwgYW5kIGlmIHlvdSBub3RpY2UgYW55IGJyZWFraW5nIGNoYW5nZXMgcGxlYXNlIGxldCB1cyBrbm93IQoKQmVjYXVzZSBvZiB0aGUgbnVtYmVyIG9mIHRoZSBsaW1pdGVkIG51bWJlciBvZiBjaGFtcGlvbnMsIG9ubHkgdGhlIG1vc3QgcmVjZW50IG1ham9yIHZlcnNpb24gd2lsbCBiZSBtYWludGFpbmVkLgoKTWFqb3IgdmVyc2lvbnMgYXJlIGN1cnJlbnRseSBoYXBwZW5pbmcgYXQgYSAzLW1vbnRoIGNhZGVuY2UgKGluIGEgc2ltaWxhciBmYXNoaW9uIGFzIHRoZSBBc3luY0FQSSBzcGVjaWZpY2F0aW9uKSwgdGhpcyB3aWxsIGhhcHBlbiBpbiBKYW51YXJ5LCBBcHJpbCwgSnVuZSwgYW5kIFNlcHRlbWJlci4gCgojIyBEZXZlbG9wbWVudApXZSB0cnkgdG8gbWFrZSBpdCBhcyBlYXN5IGZvciB5b3UgYXMgcG9zc2libGUgdG8gc2V0IHVwIHlvdXIgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdG8gY29udHJpYnV0ZSB0byBNb2RlbGluYS4gWW91IGNhbiBmaW5kIHRoZSBkZXZlbG9wbWVudCBkb2N1bWVudGF0aW9uIFtoZXJlXSguL2RvY3MvZGV2ZWxvcG1lbnQubWQpLgoKIyMgQ29udHJpYnV0aW5nCldpdGhvdXQgY29udHJpYnV0aW9ucywgTW9kZWxpbmEgd291bGQgbm90IGV4aXN0LCBpdCdzIGEgY29tbXVuaXR5IHByb2plY3Qgd2UgYnVpbGQgdG9nZXRoZXIgdG8gY3JlYXRlIHRoZSBiZXN0IHBvc3NpYmxlIGJ1aWxkaW5nIGJsb2NrcywgYW5kIHdlIGRvIHRoaXMgdGhyb3VnaCBbY2hhbXBpb25zXSguL2RvY3MvY2hhbXBpb25zLm1kKS4KCldlIGhhdmUgbWFkZSBxdWl0ZSBhIFtjb21wcmVoZW5zaXZlIGNvbnRyaWJ1dGlvbiBndWlkZV0oLi9kb2NzL2NvbnRyaWJ1dGluZy5tZCkgdG8gZ2l2ZSB5b3UgYSBsZW5kaW5nIGhhbmQgaW4gaG93IGRpZmZlcmVudCBmZWF0dXJlcyBhbmQgY2hhbmdlcyBhcmUgaW50cm9kdWNlZC4KCklmIG5vIGRvY3VtZW50YXRpb24gaGVscHMgeW91LCBoZXJlIGlzIGhvdyB5b3UgY2FuIHJlYWNoIG91dCB0byBnZXQgaGVscDoKLSBPbiB0aGUgW29mZmljaWFsIEFzeWNuQVBJIHNsYWNrXShodHRwczovL2FzeW5jYXBpLmNvbS9zbGFjay1pbnZpdGUpIHVuZGVyIHRoZSBgIzA0X3Rvb2xpbmdgIGNoYW5uZWwKLSBUYWcgYSBzcGVjaWZpYyBbQ09ERU9XTkVSXSguL0NPREVPV05FUlMpIGluIHlvdXIgUFIKLSBHZW5lcmFsbHksIGl0J3MgYWx3YXlzIGEgZ29vZCBpZGVhIHRvIGRvIGV2ZXJ5dGhpbmcgaW4gcHVibGljLCBidXQgaW4gc29tZSBjYXNlcywgaXQgbWlnaHQgbm90IGJlIHBvc3NpYmxlLiBJbiB0aG9zZSBjaXJjdW1zdGFuY2VzIHlvdSBjYW4gY29udGFjdCB0aGUgZm9sbG93aW5nOiAKICAtIFtqb25hc2xhZ29uaV0oaHR0cHM6Ly9naXRodWIuY29tL2pvbmFzbGFnb25pKSAob24gW0FzeW5jQVBJIFNsYWNrXShodHRwczovL2FzeW5jYXBpLmNvbS9zbGFjay1pbnZpdGUpLCBbVHdpdHRlcl0oaHR0cHM6Ly90d2l0dGVyLmNvbS9qb25hc2xhZ29uaSksIFtFbWFpbF0obWFpbHRvOmpvbmFzLWx0QGxpdmUuZGspLCBbTGlua2VkSW5dKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9qb25hc2xhZ29uaS8pKQoKIyMgQ29udHJpYnV0b3JzIAoKVGhhbmtzIGdvIG91dCB0byB0aGVzZSB3b25kZXJmdWwgcGVvcGxlIChbZW1vamkga2V5XShodHRwczovL2FsbGNvbnRyaWJ1dG9ycy5vcmcvZG9jcy9lbi9lbW9qaS1rZXkpKToKCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1MSVNUOlNUQVJUIC0gRG8gbm90IHJlbW92ZSBvciBtb2RpZnkgdGhpcyBzZWN0aW9uIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KPCEtLSBtYXJrZG93bmxpbnQtZGlzYWJsZSAtLT4KPHRhYmxlPgogIDx0Ym9keT4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFnaWNtYXRhdGphaHUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjA0MDQ5NDU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1hY2llaiBVcmJhxYRjenlrIi8+PGJyIC8+PHN1Yj48Yj5NYWNpZWogVXJiYcWEY3p5azwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQW1hZ2ljbWF0YXRqYWh1IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYWdpY21hdGF0amFodSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYWdpY21hdGF0amFodSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNpZGVhcy1tYWdpY21hdGF0amFodSIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT4gPGEgaHJlZj0iI21haW50ZW5hbmNlLW1hZ2ljbWF0YXRqYWh1IiB0aXRsZT0iTWFpbnRlbmFuY2UiPvCfmqc8L2E+IDxhIGhyZWY9IiNxdWVzdGlvbi1tYWdpY21hdGF0amFodSIgdGl0bGU9IkFuc3dlcmluZyBRdWVzdGlvbnMiPvCfkqw8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYWdpY21hdGF0amFodSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FtYWdpY21hdGF0amFodSIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY3psb3dpZWs0ODgiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzQ2MjAxMDk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImN6bG93aWVrNDg4Ii8+PGJyIC8+PHN1Yj48Yj5jemxvd2llazQ4ODwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQWN6bG93aWVrNDg4IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0Fjemxvd2llazQ4OCIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+IDxhIGhyZWY9IiNpZGVhcy1jemxvd2llazQ4OCIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zbW95YSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMDgzMjk2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTZXJnaW8gTW95YSIvPjxiciAvPjxzdWI+PGI+U2VyZ2lvIE1veWE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FzbW95YSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c21veWEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c21veWEiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c21veWEiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBc21veWEiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2pvbmFzbGFnb25pIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEzMzk2MTg5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJKb25hcyBMYWdvbmkiLz48YnIgLz48c3ViPjxiPkpvbmFzIExhZ29uaTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQWpvbmFzbGFnb25pIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qb25hc2xhZ29uaSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qb25hc2xhZ29uaSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNpZGVhcy1qb25hc2xhZ29uaSIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT4gPGEgaHJlZj0iI21haW50ZW5hbmNlLWpvbmFzbGFnb25pIiB0aXRsZT0iTWFpbnRlbmFuY2UiPvCfmqc8L2E+IDxhIGhyZWY9IiNxdWVzdGlvbi1qb25hc2xhZ29uaSIgdGl0bGU9IkFuc3dlcmluZyBRdWVzdGlvbnMiPvCfkqw8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qb25hc2xhZ29uaSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0Fqb25hc2xhZ29uaSIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2Rldi50by9kZXJiZXJnIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY5OTU5Mjc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ikx1a2FzeiBHb3JuaWNraSIvPjxiciAvPjxzdWI+PGI+THVrYXN6IEdvcm5pY2tpPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBZGVyYmVyZyIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FkZXJiZXJnIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1kZXJiZXJnIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcmp1bmdhcmcwNyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81MzAwOTcyMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQXJqdW4gR2FyZyIvPjxiciAvPjxzdWI+PGI+QXJqdW4gR2FyZzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFyanVuZ2FyZzA3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZm12aWxhcy5jb20iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjQyMTE5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJGcmFuIE3DqW5kZXoiLz48YnIgLz48c3ViPjxiPkZyYW4gTcOpbmRlejwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL3B1bGxzP3E9aXMlM0FwcityZXZpZXdlZC1ieSUzQWZtdmlsYXMiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9CbGFrZWxpc3Q3Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU0NTI1OTYwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJLYW53YWwgU2luZ2giLz48YnIgLz48c3ViPjxiPkthbndhbCBTaW5naDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUJsYWtlbGlzdDciIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL3d3dy5hbGVqYW5kcmFxdWV0emFsbGkuY29tIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE5OTY0NDAyP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBbGVqYW5kcmEgUXVldHphbGxpICIvPjxiciAvPjxzdWI+PGI+QWxlamFuZHJhIFF1ZXR6YWxsaSA8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FhbGVxdWV0emFsbGkiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YWxlcXVldHphbGxpIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tZC1zYWlmLWh1c2FpbiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MDY4Mjk2OD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTUQgU0FJRiAgSFVTQUlOIi8+PGJyIC8+PHN1Yj48Yj5NRCBTQUlGICBIVVNBSU48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNleGFtcGxlLW1kLXNhaWYtaHVzYWluIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tZC1zYWlmLWh1c2FpbiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tZC1zYWlmLWh1c2FpbiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tZC1zYWlmLWh1c2FpbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3N1ZGlwdG8uZ2hvc2gucHJvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExMjMyOTQwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTdWRpcHRvIEdob3NoIi8+PGJyIC8+PHN1Yj48Yj5TdWRpcHRvIEdob3NoPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjZXhhbXBsZS1zdWRpcHRvZzgxIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1zdWRpcHRvZzgxIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXN1ZGlwdG9nODEiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3BhbndhdXUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjI1OTcyMjM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9InBhbndhdXUiLz48YnIgLz48c3ViPjxiPnBhbndhdXU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wYW53YXV1IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXBhbndhdXUiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1wYW53YXV1IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wYW53YXV1IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQXBhbndhdXUiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9zdGVmYW5lbWF5ZXIvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE1MDMxOTUwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTdGVmYW4gRS4gTWF5ZXIiLz48YnIgLz48c3ViPjxiPlN0ZWZhbiBFLiBNYXllcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQXN0ZWZhbmVyd2lubWF5ZXIiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9IYXNoVGFsbWl6Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU1MDE4MjgwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJUYWxtaXogQWhtZWQiLz48YnIgLz48c3ViPjxiPlRhbG1peiBBaG1lZDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUhhc2hUYWxtaXoiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9SGFzaFRhbG1peiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLUhhc2hUYWxtaXoiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vVGhhbmtzRm9yQWxsVGhlRmlzaCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMTY5NjU1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNYXJjbyIvPjxiciAvPjxzdWI+PGI+TWFyY288L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FUaGFua3NGb3JBbGxUaGVGaXNoIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcXVhZHJyZW0iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvODQ1MDg3Mz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0icXVhZHJyZW0iLz48YnIgLz48c3ViPjxiPnF1YWRycmVtPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cXVhZHJyZW0iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cXVhZHJyZW0iIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9rYW1rby5kZXYiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTcwNzQzNzU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkthbWlsIEphbmXEjWVrIi8+PGJyIC8+PHN1Yj48Yj5LYW1pbCBKYW5lxI1lazwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWthbWtvIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQWthbWtvIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1rYW1rbyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFoYWtwb3J3YWwwMiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NjQ4NjY4Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ibWFoYWtwb3J3YWwwMiIvPjxiciAvPjxzdWI+PGI+bWFoYWtwb3J3YWwwMjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2V4YW1wbGUtbWFoYWtwb3J3YWwwMiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFoYWtwb3J3YWwwMiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYWhha3BvcndhbDAyIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW1haGFrcG9yd2FsMDIiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Jvbi1kZWJhanlvdGkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjI1NzE2NjQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkRlYmFqeW90aSBIYWxkZXIiLz48YnIgLz48c3ViPjxiPkRlYmFqeW90aSBIYWxkZXI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1yb24tZGViYWp5b3RpIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJvbi1kZWJhanlvdGkiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cm9uLWRlYmFqeW90aSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNleGFtcGxlLXJvbi1kZWJhanlvdGkiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iI21haW50ZW5hbmNlLXJvbi1kZWJhanlvdGkiIHRpdGxlPSJNYWludGVuYW5jZSI+8J+apzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vcml0aWszMDcuZ2l0aHViLmlvL3BvcnRmb2xpby8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjIzNzQ4Mjk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlJpdGlrIFJhd2FsIi8+PGJyIC8+PHN1Yj48Yj5SaXRpayBSYXdhbDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJpdGlrMzA3IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJpdGlrMzA3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJpdGlrMzA3IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtcml0aWszMDciIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Jc2hhbi1TYWluaSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NDUyNTYwMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSXNoYW4iLz48YnIgLz48c3ViPjxiPklzaGFuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9SXNoYW4tU2FpbmkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9SXNoYW4tU2FpbmkiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vc2FtcmlkaGktOTguZ2l0aHViLmlvL1BvcnRmb2xpbyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NDQ2NjA0MT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU2FtcmlkZGhpIi8+PGJyIC8+PHN1Yj48Yj5TYW1yaWRkaGk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1TYW1yaWRoaS05OCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1TYW1yaWRoaS05OCIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1TYW1yaWRoaS05OCIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNleGFtcGxlLVNhbXJpZGhpLTk4IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1TYW1yaWRoaS05OCIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dhYm9ybWFneWFyIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzYzMzk3MzAzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJHw6Fib3IgTWFneWFyIi8+PGJyIC8+PHN1Yj48Yj5Hw6Fib3IgTWFneWFyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Z2Fib3JtYWd5YXIiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Z2Fib3JtYWd5YXIiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Z2Fib3JtYWd5YXIiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1nYWJvcm1hZ3lhciIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2liZXJuYWJldWRldiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83NDIxNTA3ND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iaWJlcm5hYmV1ZGV2Ii8+PGJyIC8+PHN1Yj48Yj5pYmVybmFiZXVkZXY8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1pYmVybmFiZXVkZXYiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aWJlcm5hYmV1ZGV2IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtaWJlcm5hYmV1ZGV2IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1pYmVybmFiZXVkZXYiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Nsb3dpa293c2tpYXJrYWRpdXN6Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzk3NTA4OTMwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBcmthZGl1c3ogU8WCb3dpa293c2tpIi8+PGJyIC8+PHN1Yj48Yj5BcmthZGl1c3ogU8WCb3dpa293c2tpPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2xvd2lrb3dza2lhcmthZGl1c3oiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2xvd2lrb3dza2lhcmthZGl1c3oiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1zbG93aWtvd3NraWFya2FkaXVzeiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2xvd2lrb3dza2lhcmthZGl1c3oiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1BvbHlnZW5zIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM1ODIzMTg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IldpbGxlbSBHaWxsaXMiLz48YnIgLz48c3ViPjxiPldpbGxlbSBHaWxsaXM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Qb2x5Z2VucyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Qb2x5Z2VucyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FQb2x5Z2VucyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JtYXNhcm92aWMiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTUyMjgzND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0icm1hc2Fyb3ZpYyIvPjxiciAvPjxzdWI+PGI+cm1hc2Fyb3ZpYzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJtYXNhcm92aWMiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cm1hc2Fyb3ZpYyIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ybWFzYXJvdmljIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtcm1hc2Fyb3ZpYyIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL293YWlzMzQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzcyMzg3NTk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik93YWlzIEhhc25hdGggQWhtZWQiLz48YnIgLz48c3ViPjxiPk93YWlzIEhhc25hdGggQWhtZWQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1vd2FpczM0IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW93YWlzMzQiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9b3dhaXMzNCIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1Bhbk1hbiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85Nzg1MDE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlBhbk1hbiIvPjxiciAvPjxzdWI+PGI+UGFuTWFuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9UGFuTWFuIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcnR1ci1jaW9jYW51Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzc0MzE5Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iYXJ0dXItY2lvY2FudSIvPjxiciAvPjxzdWI+PGI+YXJ0dXItY2lvY2FudTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFydHVyLWNpb2NhbnUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBYXJ0dXItY2lvY2FudSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1hcnR1ci1jaW9jYW51IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1hcnR1ci1jaW9jYW51IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFydHVyLWNpb2NhbnUiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjbWFpbnRlbmFuY2UtYXJ0dXItY2lvY2FudSIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9taWNyby1qdW1iby5ldS8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE1MTE2OTc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkN5cHJpYW4gR3JhY3oiLz48YnIgLz48c3ViPjxiPkN5cHJpYW4gR3JhY3o8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1taWNyby1qdW1ibyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1taWNyby1qdW1ibyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FtaWNyby1qdW1ibyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly93d3cucHJpbnRuYW5ueS5haSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNjAxODE5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJMZWlnaCBKb2huc29uIi8+PGJyIC8+PHN1Yj48Yj5MZWlnaCBKb2huc29uPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bGVpZ2gtam9obnNvbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1sZWlnaC1qb2huc29uIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtbGVpZ2gtam9obnNvbiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bGVpZ2gtam9obnNvbiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1sZWlnaC1qb2huc29uIiB0aXRsZT0iTWFpbnRlbmFuY2UiPvCfmqc8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FsZWlnaC1qb2huc29uIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9uaXRpbnRlanVqYSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85NTM0NzkyND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTml0aW4gVGVqdWphIi8+PGJyIC8+PHN1Yj48Yj5OaXRpbiBUZWp1amE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1uaXRpbnRlanVqYSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLW5pdGludGVqdWphIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va2VubmV0aGFhc2FuIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0MzczOTQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Iktlbm5ldGggQWFzYW4iLz48YnIgLz48c3ViPjxiPktlbm5ldGggQWFzYW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1rZW5uZXRoYWFzYW4iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9a2VubmV0aGFhc2FuIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI21haW50ZW5hbmNlLWtlbm5ldGhhYXNhbiIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9a2VubmV0aGFhc2FuIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbWl0LWtzaCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85MTk0NzAzNz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQW1pdCBLdW1hciBTaGFybWEiLz48YnIgLz48c3ViPjxiPkFtaXQgS3VtYXIgU2hhcm1hPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YW1pdC1rc2giIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YW1pdC1rc2giIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1hbWl0LWtzaCIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS96YXl0c2V2YW5kIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUyMDc3NDg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFuZHJleSBaYXl0c2V2Ii8+PGJyIC8+PHN1Yj48Yj5BbmRyZXkgWmF5dHNldjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXpheXRzZXZhbmQiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjZXhhbXBsZS16YXl0c2V2YW5kIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj16YXl0c2V2YW5kIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXpheXRzZXZhbmQiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NvZGluZ3RlbnNoaSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTYzNzc2MzA/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlRlbnNoaSBDb2RlcyIvPjxiciAvPjxzdWI+PGI+VGVuc2hpIENvZGVzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjaW5mcmEtY29kaW5ndGVuc2hpIiB0aXRsZT0iSW5mcmFzdHJ1Y3R1cmUgKEhvc3RpbmcsIEJ1aWxkLVRvb2xzLCBldGMpIj7wn5qHPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL3l1c2hpb21vdGUub3JnLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNzMzOTE1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJZdXNoaSBPTU9URSIvPjxiciAvPjxzdWI+PGI+WXVzaGkgT01PVEU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FZdXNoaU9NT1RFIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ZdXNoaU9NT1RFIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vbWFsY2hlcmN6eWsucGwiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTc1MzQ1MDQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlpiaWduaWV3IE1hbGNoZXJjenlrIi8+PGJyIC8+PHN1Yj48Yj5aYmlnbmlldyBNYWxjaGVyY3p5azwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQUZlcnJvciIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSIjaW5mcmEtRmVycm9yIiB0aXRsZT0iSW5mcmFzdHJ1Y3R1cmUgKEhvc3RpbmcsIEJ1aWxkLVRvb2xzLCBldGMpIj7wn5qHPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9RmVycm9yIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtRmVycm9yIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1GZXJyb3IiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBRmVycm9yIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS8yMDBQdWxzIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY5MTgzNjA/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IjIwMFB1bHMiLz48YnIgLz48c3ViPjxiPjIwMFB1bHM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj0yMDBQdWxzIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPTIwMFB1bHMiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9saW5rdHIuZWUvYW5heXNhcmthcjciPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTMzNDExODE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFuYXkgU2Fya2FyIi8+PGJyIC8+PHN1Yj48Yj5BbmF5IFNhcmthcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2V4YW1wbGUtYW5heXNhcmthcjciIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFuYXlzYXJrYXI3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFuYXlzYXJrYXI3IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Mb3Vpc1hoYWZlcmkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTIzOTc2Nzc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkxvdWlzIFhoYWZlcmkiLz48YnIgLz48c3ViPjxiPkxvdWlzIFhoYWZlcmk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Mb3Vpc1hoYWZlcmkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zYW1iaGF2Z3VwdGEwNzA1Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzgxODcwODY2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTYW1iaGF2IEd1cHRhIi8+PGJyIC8+PHN1Yj48Yj5TYW1iaGF2IEd1cHRhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2FtYmhhdmd1cHRhMDcwNSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FzYW1iaGF2Z3VwdGEwNzA1IiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT4gPGEgaHJlZj0iI2Rlc2lnbi1zYW1iaGF2Z3VwdGEwNzA1IiB0aXRsZT0iRGVzaWduIj7wn46oPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2FtYmhhdmd1cHRhMDcwNSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FzYW1iaGF2Z3VwdGEwNzA1IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcHJheXV0c3UiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTQ2MzY1MjU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFiaGF5IEdhcmciLz48YnIgLz48c3ViPjxiPkFiaGF5IEdhcmc8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wcmF5dXRzdSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNleGFtcGxlLXByYXl1dHN1IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wcmF5dXRzdSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wcmF5dXRzdSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaGVucmlram9uIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI3MjEyMjMyP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJoZW5yaWtqb24iLz48YnIgLz48c3ViPjxiPmhlbnJpa2pvbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWhlbnJpa2pvbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1oZW5yaWtqb24iIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aGVucmlram9uIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtaGVucmlram9uIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3lhc2lyZGV2ZWxvcGVyLm5ldGxpZnkuYXBwLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83NDYwMDc0NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTW9oYW1tYWQgWWFzaXIiLz48YnIgLz48c3ViPjxiPk1vaGFtbWFkIFlhc2lyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9WWFzaXI3NjEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NhdmlvNjI5Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzkxMzYyNTg5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTYXZpbyBEaWFzIi8+PGJyIC8+PHN1Yj48Yj5TYXZpbyBEaWFzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2F2aW82MjkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjaW5mcmEtU2F2aW82MjkiIHRpdGxlPSJJbmZyYXN0cnVjdHVyZSAoSG9zdGluZywgQnVpbGQtVG9vbHMsIGV0YykiPvCfmoc8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FTYXZpbzYyOSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2lzaGFhbjgxMiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MDE5MDUzMz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSXNoYWFuIFNoYWgiLz48YnIgLz48c3ViPjxiPklzaGFhbiBTaGFoPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aXNoYWFuODEyIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TaHJleWFzMDQxMCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MDc5NTg2Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU2hyZXlhczA0MTAiLz48YnIgLz48c3ViPjxiPlNocmV5YXMwNDEwPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2hyZXlhczA0MTAiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2hyZXlhczA0MTAiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9iZWt1LWVwaXRvbWUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE1MTUxNTEzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJiZWt1LWVwaXRvbWUiLz48YnIgLz48c3ViPjxiPmJla3UtZXBpdG9tZTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWJla3UtZXBpdG9tZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FiZWt1LWVwaXRvbWUiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YmVrdS1lcGl0b21lIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zd29yZG1hc3RlcjJrIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMzNTQwMTY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ikpvc2h1YSBNaWNoYWVsIERhbHkiLz48YnIgLz48c3ViPjxiPkpvc2h1YSBNaWNoYWVsIERhbHk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0Fzd29yZG1hc3RlcjJrIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGxraiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNDMwNTk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkRhbmllbCBLSiIvPjxiciAvPjxzdWI+PGI+RGFuaWVsIEtKPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZGxraiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1kbGtqIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtZGxraiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBZGxraiIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2NvZGV5dC5jb20vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzczMDMzNTExP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJCaGF2aWsgQWdhcndhbCIvPjxiciAvPjxzdWI+PGI+QmhhdmlrIEFnYXJ3YWw8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNkZXNpZ24tQmhhdmlrLWFnIiB0aXRsZT0iRGVzaWduIj7wn46oPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2thdXNoaWstcmlzaGkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTI0OTg2MTc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlJpc2hpIi8+PGJyIC8+PHN1Yj48Yj5SaXNoaTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWthdXNoaWstcmlzaGkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjZGVzaWduLWthdXNoaWstcmlzaGkiIHRpdGxlPSJEZXNpZ24iPvCfjqg8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3JvaGl0aGJvcHBleS5uZXRsaWZ5LmFwcCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MzUzODk3ND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iUm9oaXRoIEJvcHBleSIvPjxiciAvPjxzdWI+PGI+Um9oaXRoIEJvcHBleTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVJvaGl0aEJvcHBleSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNkZXNpZ24tUm9oaXRoQm9wcGV5IiB0aXRsZT0iRGVzaWduIj7wn46oPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL2FzaGlzaHBhZGh5LmxpdmUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTAwNDg0NDAxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBc2hpc2ggUGFkaHkiLz48YnIgLz48c3ViPjxiPkFzaGlzaCBQYWRoeTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVNodXJ0dS1nYWwiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2h1cnR1LWdhbCIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNpbmZyYS1TaHVydHUtZ2FsIiB0aXRsZT0iSW5mcmFzdHJ1Y3R1cmUgKEhvc3RpbmcsIEJ1aWxkLVRvb2xzLCBldGMpIj7wn5qHPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly9qZmNvdGUuZ2l0aHViLmlvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0MzM2OTAwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJKZWFuLUZyYW7Dp29pcyBDw7R0w6kiLz48YnIgLz48c3ViPjxiPkplYW4tRnJhbsOnb2lzIEPDtHTDqTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUpGQ290ZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1KRkNvdGUiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1KRkNvdGUiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUpGQ290ZSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vU3VtYW50eEQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjU4MTA0MjQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlN1bWFudC54RCIvPjxiciAvPjxzdWI+PGI+U3VtYW50LnhEPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U3VtYW50eEQiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjaW5mcmEtU3VtYW50eEQiIHRpdGxlPSJJbmZyYXN0cnVjdHVyZSAoSG9zdGluZywgQnVpbGQtVG9vbHMsIGV0YykiPvCfmoc8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1TdW1hbnR4RCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXJ5YW5hczE1OSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTQzMzA5MzE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFyeWFuIFNpbmdoIi8+PGJyIC8+PHN1Yj48Yj5BcnlhbiBTaW5naDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFyeWFuYXMxNTkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL21hcmt1cy5wb2Vyc2Noa2UubnJ3Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEyMjIzNzc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1hcmt1cyBQb2Vyc2Noa2UiLz48YnIgLz48c3ViPjxiPk1hcmt1cyBQb2Vyc2Noa2U8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYXJrdXNwb2Vyc2Noa2UiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFya3VzcG9lcnNjaGtlIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtbWFya3VzcG9lcnNjaGtlIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYXJrdXNwb2Vyc2Noa2UiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2phbWVzbW9leSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80NTc0NzI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkphbWVzIE1vZXkiLz48YnIgLz48c3ViPjxiPkphbWVzIE1vZXk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qYW1lc21vZXkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9amFtZXNtb2V5IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90b213b2xhbnNraSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82ODA4NTY1Mz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0idG9td29sYW5za2kiLz48YnIgLz48c3ViPjxiPnRvbXdvbGFuc2tpPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBdG9td29sYW5za2kiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Lc2lzYSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81MzQwNDc3MT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iS3Jpc3R1cGFzIi8+PGJyIC8+PHN1Yj48Yj5LcmlzdHVwYXM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Lc2lzYSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0RldmFuc2gtQmhhdHQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTQ3MzIwNzk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkRldmFuc2gtQmhhdHQiLz48YnIgLz48c3ViPjxiPkRldmFuc2gtQmhhdHQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1EZXZhbnNoLUJoYXR0IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2luZnJhLURldmFuc2gtQmhhdHQiIHRpdGxlPSJJbmZyYXN0cnVjdHVyZSAoSG9zdGluZywgQnVpbGQtVG9vbHMsIGV0YykiPvCfmoc8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcGlwbGl5YSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NjE4NjE0Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQW5zaCBQYW5jaG9saSIvPjxiciAvPjxzdWI+PGI+QW5zaCBQYW5jaG9saTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXBpcGxpeWEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1F5cG9sMzQyIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM3NDk3MDA3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNYWVnaHQgTG9hbiIvPjxiciAvPjxzdWI+PGI+TWFlZ2h0IExvYW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ReXBvbDM0MiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ReXBvbDM0MiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwOi8vcHJpbmNlcmFqcG9vdC5jb20iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDQ1ODU0NTI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlByaW5jZSBSYWpwb290Ii8+PGJyIC8+PHN1Yj48Yj5QcmluY2UgUmFqcG9vdDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXByaW5jZXJhanBvb3QyMCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaGFyc2hpdC1zZW5wYWkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTMwNzUwNjg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImhhcnNoaXQgbWlzaHJhICIvPjxiciAvPjxzdWI+PGI+aGFyc2hpdCBtaXNocmEgPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aGFyc2hpdC1zZW5wYWkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1BldGVBdWRpbmF0ZSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85OTI3NDg3ND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iUGV0ZUF1ZGluYXRlIi8+PGJyIC8+PHN1Yj48Yj5QZXRlQXVkaW5hdGU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1QZXRlQXVkaW5hdGUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2phbm8tcGV0cmFzIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExNDc4NDg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Imphbm8tcGV0cmFzIi8+PGJyIC8+PHN1Yj48Yj5qYW5vLXBldHJhczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWphbm8tcGV0cmFzIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWphbm8tcGV0cmFzIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWphbm8tcGV0cmFzIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbmlsa2FudGg5ODciPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTI0MTM1ODE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik5pbGthbnRoIFBhcm1hciIvPjxiciAvPjxzdWI+PGI+Tmlsa2FudGggUGFybWFyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bmlsa2FudGg5ODciIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bmlsa2FudGg5ODciIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1uaWxrYW50aDk4NyIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bmlsa2FudGg5ODciIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9qYWlzYXJpdGEudmVyY2VsLmFwcC8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDM2MzkzNDE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFzaG1pdCBKYWlTYXJpdGEgR3VwdGEiLz48YnIgLz48c3ViPjxiPkFzaG1pdCBKYWlTYXJpdGEgR3VwdGE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1kZXZpbGtpbGxlci1hZyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNkZXNpZ24tZGV2aWxraWxsZXItYWciIHRpdGxlPSJEZXNpZ24iPvCfjqg8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1kZXZpbGtpbGxlci1hZyIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1kZXZpbGtpbGxlci1hZyIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZGV2aWxraWxsZXItYWciIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBZGV2aWxraWxsZXItYWciIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL2hhcnNoaWwucHJvc2Uuc2giPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzkzNjc4ODM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkhhcnNoaWwgSmFuaSIvPjxiciAvPjxzdWI+PGI+SGFyc2hpbCBKYW5pPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9SGFyc2hpbC1KYW5pIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUhhcnNoaWwtSmFuaSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL21pbnR1LXBvcnRmb2xpby5uZXRsaWZ5LmFwcC8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTI3OTI1NDY1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNaW50dSBHb2dvaSIvPjxiciAvPjxzdWI+PGI+TWludHUgR29nb2k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1NaW4yd2hvIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kZXZhbnNoLW0xMiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84NjE5NTE2Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRGV2YW5zaCBNYWhhbnQiLz48YnIgLz48c3ViPjxiPkRldmFuc2ggTWFoYW50PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZGV2YW5zaC1tMTIiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29mZmljaWFsYXNpc2hrdW1hciI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84Nzg3NDc3NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQXNpc2ggS3VtYXIiLz48YnIgLz48c3ViPjxiPkFzaXNoIEt1bWFyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9b2ZmaWNpYWxhc2lzaGt1bWFyIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbmt1cjA5MDQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTgzNDY4OTY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFua3VyIFNpbmdoIi8+PGJyIC8+PHN1Yj48Yj5Bbmt1ciBTaW5naDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFua3VyMDkwNCIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1Jvd2xhbmRCYW5rcyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85OTYyNTUxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJSb3dsYW5kQmFua3MiLz48YnIgLz48c3ViPjxiPlJvd2xhbmRCYW5rczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVJvd2xhbmRCYW5rcyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Sb3dsYW5kQmFua3MiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBUm93bGFuZEJhbmtzIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL21vcml0emthbHdhLmRldi8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjI4NDI2NTQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1vcml0eiBLYWx3YSIvPjxiciAvPjxzdWI+PGI+TW9yaXR6IEthbHdhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bW9yaXR6a2Fsd2EiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bW9yaXR6a2Fsd2EiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBbW9yaXR6a2Fsd2EiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW1vcml0emthbHdhIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ha2tzaGl0Z3VwdGEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTY5OTE3ODU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFrc2hpdCBHdXB0YSIvPjxiciAvPjxzdWI+PGI+QWtzaGl0IEd1cHRhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YWtrc2hpdGd1cHRhIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQWFra3NoaXRndXB0YSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1ha2tzaGl0Z3VwdGEiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFra3NoaXRndXB0YSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ha2tzaGl0Z3VwdGEiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0F0aHVsMDQ5MSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NTY2NDE4NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQXRodWwgVHVsYXNpZGFzYW4iLz48YnIgLz48c3ViPjxiPkF0aHVsIFR1bGFzaWRhc2FuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9QXRodWwwNDkxIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtQXRodWwwNDkxIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1BdGh1bDA0OTEiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9QXRodWwwNDkxIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Tb3V2aWtucyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MTc4MTQzOD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ic291dmlrIi8+PGJyIC8+PHN1Yj48Yj5zb3V2aWs8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Tb3V2aWtucyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Tb3V2aWtucyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLVNvdXZpa25zIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Tb3V2aWtucyIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTG91aXMtUGhpbGlwcGVHZW50aWxlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQzNDI2OTQ2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJMb3Vpcy1QaGlsaXBwZUdlbnRpbGUiLz48YnIgLz48c3ViPjxiPkxvdWlzLVBoaWxpcHBlR2VudGlsZTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUxvdWlzLVBoaWxpcHBlR2VudGlsZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Mb3Vpcy1QaGlsaXBwZUdlbnRpbGUiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9TG91aXMtUGhpbGlwcGVHZW50aWxlIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQUxvdWlzLVBoaWxpcHBlR2VudGlsZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0FraGlsSjMyMSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85ODUwODM3ND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQWtoaWwgSmFtd2FsIi8+PGJyIC8+PHN1Yj48Yj5Ba2hpbCBKYW13YWw8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Ba2hpbEozMjEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9QWtoaWxKMzIxIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWhlbSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjMyODM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFuZGVycyBIZWxsZXJ1cCBNYWRzZW4iLz48YnIgLz48c3ViPjxiPkFuZGVycyBIZWxsZXJ1cCBNYWRzZW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1haGVtIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFoZW0iIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBYWhlbSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JxdWluaW8xQSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81ODMyMjkxMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0icnF1aW5pbzFBIi8+PGJyIC8+PHN1Yj48Yj5ycXVpbmlvMUE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ycXVpbmlvMUEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjZXhhbXBsZS1ycXVpbmlvMUEiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9naXRhbmtpdDciPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzQ0NDE5MzY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImdpdGFua2l0NyIvPjxiciAvPjxzdWI+PGI+Z2l0YW5raXQ3PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Z2l0YW5raXQ3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9qYW5uZS1zbGFtY29yZSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTI4Njc4NDc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ikphbm5lIEh1c2JlcmciLz48YnIgLz48c3ViPjxiPkphbm5lIEh1c2Jlcmc8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qYW5uZS1zbGFtY29yZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qYW5uZS1zbGFtY29yZSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FqYW5uZS1zbGFtY29yZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2JvcnJ1bGwiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTI3NTQwMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iYm9ycnVsbCIvPjxiciAvPjxzdWI+PGI+Ym9ycnVsbDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWJvcnJ1bGwiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Ym9ycnVsbCIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwOi8vd3d3Lnlva2VwbGF0Zm9ybS5jb20iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjEwNjE3OD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iS2FtaWwgWnV6ZGEiLz48YnIgLz48c3ViPjxiPkthbWlsIFp1emRhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9a2FtYXoiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2plc3BpdGFlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIzMDQxMTQ2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJqZXNwaXRhZSIvPjxiciAvPjxzdWI+PGI+amVzcGl0YWU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qZXNwaXRhZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qZXNwaXRhZSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FqZXNwaXRhZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vcGlrZS5naXRodWIuaW8vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQzNDk0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBeGVsIEhlY2h0Ii8+PGJyIC8+PHN1Yj48Yj5BeGVsIEhlY2h0PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9UGlrZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1QaWtlIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90b21kZXZyb29tZW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDYzNzk4Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iVG9tIGRlIFZyb29tZW4iLz48YnIgLz48c3ViPjxiPlRvbSBkZSBWcm9vbWVuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9dG9tZGV2cm9vbWVuIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtdG9tZGV2cm9vbWVuIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj10b21kZXZyb29tZW4iIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9dG9tZGV2cm9vbWVuIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tZW1kYWwiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzc4Mzg1NjY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Im1lbWRhbCIvPjxiciAvPjxzdWI+PGI+bWVtZGFsPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWVtZGFsIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW1lbWRhbCIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWF4cGxhdG92Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0ODg5Njk2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJtYXhwbGF0b3YiLz48YnIgLz48c3ViPjxiPm1heHBsYXRvdjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL3B1bGxzP3E9aXMlM0FwcityZXZpZXdlZC1ieSUzQW1heHBsYXRvdiIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZW1tYW51ZWwtZmVyZG1hbiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNTQ3MDkyMT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRW1tYW51ZWwgRmVyZG1hbiIvPjxiciAvPjxzdWI+PGI+RW1tYW51ZWwgRmVyZG1hbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWVtbWFudWVsLWZlcmRtYW4iIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9qb25qb21ja2F5LmNvbSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80NTY2NDU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkpvbmpvIE1jS2F5Ii8+PGJyIC8+PHN1Yj48Yj5Kb25qbyBNY0theTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWpvbmpvbWNrYXkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBam9uam9tY2theSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9am9uam9tY2theSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vVGVydGl1bU9yZ2FudW0xIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUxMjg2ODI3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJUZXJ0aXVtT3JnYW51bTEiLz48YnIgLz48c3ViPjxiPlRlcnRpdW1PcmdhbnVtMTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVRlcnRpdW1PcmdhbnVtMSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1UZXJ0aXVtT3JnYW51bTEiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9VGVydGl1bU9yZ2FudW0xIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vU2hyaXlhLUNoYXVoYW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzg0MTUwODQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlNocml5YSBDaGF1aGFuIi8+PGJyIC8+PHN1Yj48Yj5TaHJpeWEgQ2hhdWhhbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVNocml5YS1DaGF1aGFuIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mci10aCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82MTAxMDU1Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iZnItdGgiLz48YnIgLz48c3ViPjxiPmZyLXRoPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZnItdGgiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZnItdGgiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZnItdGgiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2lzdHZhbi1uYWd5LWVwYW0iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTUxMjQwMTk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IklzdHZhbiBab2x0YW4gTmFneSIvPjxiciAvPjxzdWI+PGI+SXN0dmFuIFpvbHRhbiBOYWd5PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aXN0dmFuLW5hZ3ktZXBhbSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1pc3R2YW4tbmFneS1lcGFtIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9NYW5hbmNvZGUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ0NTI1NTg2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNYW5hbiBBcm9yYSIvPjxiciAvPjxzdWI+PGI+TWFuYW4gQXJvcmE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1NYW5hbmNvZGUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9TWFuYW5jb2RlIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90aW1lZGVyLXhpdGFzbyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDk2NzAwNTI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9InRpbWVkZXIteGl0YXNvIi8+PGJyIC8+PHN1Yj48Yj50aW1lZGVyLXhpdGFzbzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXRpbWVkZXIteGl0YXNvIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXRpbWVkZXIteGl0YXNvIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQXRpbWVkZXIteGl0YXNvIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vU20wa2V5U2ExbTBuIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI2MTY5OTA2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJKb3NlcGggVGFyYml0Ii8+PGJyIC8+PHN1Yj48Yj5Kb3NlcGggVGFyYml0PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U20wa2V5U2ExbTBuIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVNtMGtleVNhMW0wbiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLVNtMGtleVNhMW0wbiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U20wa2V5U2ExbTBuIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ybWFjZWQwIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMzMjM3Mzc5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJSaWdvIi8+PGJyIC8+PHN1Yj48Yj5SaWdvPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cm1hY2VkMCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ybWFjZWQwIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQXJtYWNlZDAiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vVGhvbWFzVmVyaG9ldmVuMTk5OCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNTk1OTE0MD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iVGhvbWFzIFZlcmhvZXZlbiIvPjxiciAvPjxzdWI+PGI+VGhvbWFzIFZlcmhvZXZlbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVRob21hc1ZlcmhvZXZlbjE5OTgiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9VGhvbWFzVmVyaG9ldmVuMTk5OCIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FUaG9tYXNWZXJob2V2ZW4xOTk4IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1UaG9tYXNWZXJob2V2ZW4xOTk4IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS94ZWhvOTEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTg2Mjc1Njg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1hdGV1c3ogS2FkbHVib3dza2kiLz48YnIgLz48c3ViPjxiPk1hdGV1c3ogS2FkbHVib3dza2k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0F4ZWhvOTEiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXhlaG85MSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcmVpbmF1dC1rcmVrZWxzLWFjZXJ0YSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85Mzk3Mzg5OT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iUmVpbmF1dCBLcmVrZWxzIi8+PGJyIC8+PHN1Yj48Yj5SZWluYXV0IEtyZWtlbHM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1yZWluYXV0LWtyZWtlbHMtYWNlcnRhIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJlaW5hdXQta3Jla2Vscy1hY2VydGEiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBcmVpbmF1dC1rcmVrZWxzLWFjZXJ0YSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLzQxMmIiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTI0MzYyMDI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IktpcmlsbCBQbHlhc2hrZXZpY2giLz48YnIgLz48c3ViPjxiPktpcmlsbCBQbHlhc2hrZXZpY2g8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj00MTJiIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPTQxMmIiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0V4YXIwNCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMDk2Mjk5NTY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkRoYWR2ZSBZYXNoIi8+PGJyIC8+PHN1Yj48Yj5EaGFkdmUgWWFzaDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUV4YXIwNCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1FeGFyMDQiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2phZGlubSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MTkwMDYzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNYXRoaWV1IEphZGluIi8+PGJyIC8+PHN1Yj48Yj5NYXRoaWV1IEphZGluPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9amFkaW5tIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWphZGlubSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQWFyaXNoTWFuc3VyIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE3MDk1Nzk0OT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQWFyaXNoIG1hbnN1ciIvPjxiciAvPjxzdWI+PGI+QWFyaXNoIG1hbnN1cjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUFhcmlzaE1hbnN1ciIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1BYXJpc2hNYW5zdXIiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9WYXJhZHJhajc1Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY3MTE0MzE0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJWYXJhZCBSYWogQWdyYXdhbCIvPjxiciAvPjxzdWI+PGI+VmFyYWQgUmFqIEFncmF3YWw8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1WYXJhZHJhajc1IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKPCEtLSBtYXJrZG93bmxpbnQtcmVzdG9yZSAtLT4KPCEtLSBwcmV0dGllci1pZ25vcmUtZW5kIC0tPgoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6RU5EIC0tPgoKVGhpcyBwcm9qZWN0IGZvbGxvd3MgdGhlIFthbGwtY29udHJpYnV0b3JzXShodHRwczovL2dpdGh1Yi5jb20vYWxsLWNvbnRyaWJ1dG9ycy9hbGwtY29udHJpYnV0b3JzKSBzcGVjaWZpY2F0aW9uLiBDb250cmlidXRpb25zIG9mIGFueSBraW5kIGFyZSB3ZWxjb21lIQo= readmeEtag: '"b621835e293e958927dd73780dced76feb3c68bb"' readmeLastModified: Sun, 01 Feb 2026 14:26:33 GMT repositoryId: 331620831 description: >- A library for generating typed models based on inputs such as AsyncAPI, OpenAPI, and JSON Schema documents with high customization created: '2021-01-21T12:27:51Z' updated: '2026-02-05T00:48:26Z' language: TypeScript archived: false stars: 417 watchers: 6 forks: 228 owner: asyncapi logo: https://avatars.githubusercontent.com/u/16401334?v=4 license: Apache-2.0 repoEtag: '"c8c4689479f9d2ad64342aac67bf238a96cb387d7ff48451e2ebb1dfdd4a6036"' repoLastModified: Thu, 05 Feb 2026 00:48:26 GMT foundInMaster: true - source: openapi3 tags repository: https://github.com/dymmond/ravyn v3: true id: e99674d9cb609f3f13c0249ae3da99b4 repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9yYXZ5bi5kZXYiPjxpbWcgc3JjPSJodHRwczovL3Jlcy5jbG91ZGluYXJ5LmNvbS9keW1tb25kL2ltYWdlL3VwbG9hZC92MTc1OTQ5MDI5Ni9yYXZ5bi9pbWcvbG9nb19wYjNmaXMucG5nIiBhbHQ9J1JhdnluJz48L2E+CjwvcD4KCjxwIGFsaWduPSJjZW50ZXIiPgogICAgPGVtPkEgbmV4dC1nZW5lcmF0aW9uIGFzeW5jIFB5dGhvbiBmcmFtZXdvcmsgZm9yIGJ1aWxkaW5nIGhpZ2gtcGVyZm9ybWFuY2UgQVBJcywgbWljcm9zZXJ2aWNlcywgYW5kIHdlYiBhcHBsaWNhdGlvbnMgd2l0aCB0eXBlIHNhZmV0eSBhbmQgZWxlZ2FuY2UuIPCfmoA8L2VtPgo8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj4KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2R5bW1vbmQvcmF2eW4vYWN0aW9ucy93b3JrZmxvd3MvdGVzdC1zdWl0ZS55bWwvYmFkZ2Uuc3ZnP2V2ZW50PXB1c2gmYnJhbmNoPW1haW4iIHRhcmdldD0iX2JsYW5rIj4KICAgIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vZHltbW9uZC9yYXZ5bi9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LXN1aXRlLnltbC9iYWRnZS5zdmc/ZXZlbnQ9cHVzaCZicmFuY2g9bWFpbiIgYWx0PSJUZXN0IFN1aXRlIj4KPC9hPgoKPGEgaHJlZj0iaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3JhdnluIiB0YXJnZXQ9Il9ibGFuayI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvcmF2eW4/Y29sb3I9JTIzMzREMDU4JmxhYmVsPXB5cGklMjBwYWNrYWdlIiBhbHQ9IlBhY2thZ2UgdmVyc2lvbiI+CjwvYT4KCjxhIGhyZWY9Imh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9yYXZ5biIgdGFyZ2V0PSJfYmxhbmsiPgogICAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL3JhdnluLnN2Zz9jb2xvcj0lMjMzNEQwNTgiIGFsdD0iU3VwcG9ydGVkIFB5dGhvbiB2ZXJzaW9ucyI+CjwvYT4KPC9wPgoKLS0tCgoqKkRvY3VtZW50YXRpb24qKjogW2h0dHBzOi8vcmF2eW4uZGV2XShodHRwczovL3d3dy5yYXZ5bi5kZXYpIPCfk5oKCioqU291cmNlIENvZGUqKjogW2h0dHBzOi8vZ2l0aHViLmNvbS9keW1tb25kL3JhdnluXShodHRwczovL2dpdGh1Yi5jb20vZHltbW9uZC9yYXZ5bikKCioqVGhlIG9mZmljaWFsIHN1cHBvcnRlZCB2ZXJzaW9uIGlzIGFsd2F5cyB0aGUgbGF0ZXN0IHJlbGVhc2VkKiouCgohISEgSW5mbyAiQ29taW5nIGZyb20gRXNtZXJhbGQ/IgogICAgSWYgeW91IGNhbWUgbG9va2luZyBmb3IgRXNtZXJhbGQsIHlvdSBhcmUgaW4gdGhlIHJpZ2h0IHBsYWNlLiBFc21lcmFsZCB3YXMgcmVicmFuZGVkIHRvIFJhdnluLiBBbGwgZmVhdHVyZXMgcmVtYWluIGFuZCBjb250aW51ZSB0byBncm93LgoKLS0tCgojIyBRdWljayBTdGFydAoKR2V0IHlvdXIgZmlyc3QgUmF2eW4gQVBJIHJ1bm5pbmcgaW4gbWludXRlcy4KCiMjIyBJbnN0YWxsYXRpb24KCmBgYHNoZWxsCnBpcCBpbnN0YWxsIHJhdnluW3N0YW5kYXJkXQpgYGAKClRoaXMgaW5zdGFsbHMgUmF2eW4gd2l0aCByZWNvbW1lbmRlZCBleHRyYXMuIFlvdSdsbCBhbHNvIG5lZWQgYW4gQVNHSSBzZXJ2ZXI6CgpgYGBzaGVsbApwaXAgaW5zdGFsbCB1dmljb3JuCmBgYAoKIyMjIFlvdXIgRmlyc3QgQVBJCgpDcmVhdGUgYSBmaWxlIGNhbGxlZCBgYXBwLnB5YDoKCmBgYHB5dGhvbgpmcm9tIHJhdnluIGltcG9ydCBSYXZ5biwgZ2V0LCBKU09OUmVzcG9uc2UKCmFwcCA9IFJhdnluKCkKCkBhcHAuZ2V0KCIvIikKZGVmIHdlbGNvbWUoKSAtPiBKU09OUmVzcG9uc2U6CiAgICByZXR1cm4gSlNPTlJlc3BvbnNlKHsibWVzc2FnZSI6ICJXZWxjb21lIHRvIFJhdnluISJ9KQoKQGFwcC5nZXQoIi9oZWxsby97bmFtZX0iKQpkZWYgZ3JlZXQobmFtZTogc3RyKSAtPiBKU09OUmVzcG9uc2U6CiAgICByZXR1cm4gSlNPTlJlc3BvbnNlKHsibWVzc2FnZSI6IGYiSGVsbG8sIHtuYW1lfSEifSkKYGBgCgojIyMgUnVuIEl0CgpgYGBzaGVsbAp1dmljb3JuIGFwcDphcHAgLS1yZWxvYWQKYGBgCgpWaXNpdCBbaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hlbGxvL1dvcmxkXShodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGVsbG8vV29ybGQpIGFuZCB5b3UnbGwgc2VlOgoKYGBganNvbgp7Im1lc3NhZ2UiOiAiSGVsbG8sIFdvcmxkISJ9CmBgYAoKIyMjIEV4cGxvcmUgdGhlIERvY3MKClJhdnluIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzIGludGVyYWN0aXZlIEFQSSBkb2N1bWVudGF0aW9uOgoKLSAqKlN3YWdnZXIgVUkqKjogW2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9kb2NzL3N3YWdnZXJdKGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9kb2NzL3N3YWdnZXIpCi0gKipSZURvYyoqOiBbaHR0cDovLzEyNy4wLjAuMTo4MDAwL2RvY3MvcmVkb2NdKGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9kb2NzL3JlZG9jKQotICoqU3RvcGxpZ2h0IEVsZW1lbnRzKio6IFtodHRwOi8vMTI3LjAuMC4xOjgwMDAvZG9jcy9lbGVtZW50c10oaHR0cDovLzEyNy4wLjAuMTo4MDAwL2RvY3MvZWxlbWVudHMpCgoqKkNvbmdyYXR1bGF0aW9ucyEqKiDwn46JIFlvdSd2ZSBidWlsdCB5b3VyIGZpcnN0IFJhdnluIEFQSS4KCi0tLQoKIyMgV2h5IFJhdnluPwoKUmF2eW4gY29tYmluZXMgdGhlIGJlc3QgaWRlYXMgZnJvbSBGYXN0QVBJLCBEamFuZ28sIEZsYXNrLCBhbmQgTmVzdEpTIGludG8gYSBmcmFtZXdvcmsgZGVzaWduZWQgZm9yIHJlYWwtd29ybGQgYXBwbGljYXRpb25zLiBmcm9tIHByb3RvdHlwZXMgdG8gZW50ZXJwcmlzZSBzeXN0ZW1zLgoKIyMjIEtleSBGZWF0dXJlcwoKLSAqKuKaoSBGYXN0Kio6IEJ1aWx0IG9uIFtMaWx5YV0oaHR0cHM6Ly9saWx5YS5kZXYvKSBhbmQgW1B5ZGFudGljXShodHRwczovL3B5ZGFudGljLWRvY3MuaGVscG1hbnVhbC5pby8pLCB3aXRoIGFzeW5jLWZpcnN0IGRlc2lnbgotICoq8J+OryBUeXBlLVNhZmUqKjogRnVsbCBQeXRob24gMy4xMCsgdHlwZSBoaW50cyBmb3IgYmV0dGVyIElERSBzdXBwb3J0IGFuZCBmZXdlciBidWdzCi0gKirwn6epIEZsZXhpYmxlKio6IENob29zZSBPT1AgKGNvbnRyb2xsZXJzKSBvciBmdW5jdGlvbmFsIHN0eWxlLiBvciBtaXggYm90aAotICoq8J+UiyBCYXR0ZXJpZXMgSW5jbHVkZWQqKjogRGVwZW5kZW5jeSBpbmplY3Rpb24sIG1pZGRsZXdhcmUsIHBlcm1pc3Npb25zLCBzY2hlZHVsZXJzLCBhbmQgbW9yZQotICoqRGF0YWJhc2UgUmVhZHkqKjogTmF0aXZlIHN1cHBvcnQgZm9yIFtFZGd5IE9STV1bZWRneV9vcm1dIGFuZCBbTW9uZ296IE9ETV1bbW9uZ296X29kbV0KLSAqKvCfp6ogVGVzdGFibGUqKjogQnVpbHQtaW4gdGVzdCBjbGllbnQgZm9yIGVhc3kgdGVzdGluZwotICoq8J+TliBBdXRvLURvY3VtZW50ZWQqKjogT3BlbkFQSS9Td2FnZ2VyIGRvY3MgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkKCi0tLQoKIyMgQ29yZSBDb25jZXB0cwoKIyMjIFJvdXRlcyBhbmQgSGFuZGxlcnMKClJhdnluIHVzZXMgKipkZWNvcmF0b3JzKiogb3IgKipHYXRld2F5IG9iamVjdHMqKiB0byBkZWZpbmUgcm91dGVzLgoKISEhIHdhcm5pbmcgIkNyaXRpY2FsIFJlcXVpcmVtZW50cyIKICAgIDEuICoqQXQgbGVhc3Qgb25lIHJvdXRlIGlzIHJlcXVpcmVkKio6IEFuIGVtcHR5IGBSYXZ5bigpYCBhcHBsaWNhdGlvbiBkb2VzIG5vdGhpbmcuIFlvdSBtdXN0IGRlZmluZSByb3V0ZXMgdG8gaGFuZGxlIHJlcXVlc3RzLgogICAgMi4gKipSZXR1cm4gdHlwZXMgYXJlIGltcG9ydGFudCoqOiBBbHdheXMgc3BlY2lmeSByZXR1cm4gdHlwZSBoaW50cyAoZS5nLiwgYC0+IGRpY3RgLCBgLT4gSlNPTlJlc3BvbnNlYCkuIFJhdnluIHVzZXMgdGhlc2UgdG86CiAgICAgICAgLSBTZXJpYWxpemUgeW91ciBkYXRhIGNvcnJlY3RseQogICAgICAgIC0gR2VuZXJhdGUgYWNjdXJhdGUgQVBJIGRvY3VtZW50YXRpb24KICAgICAgICAtIFZhbGlkYXRlIHJlc3BvbnNlcwoKIyMjIyBEZWNvcmF0b3IgU3R5bGUgKFJlY29tbWVuZGVkIGZvciBTaW1wbGUgQVBJcykKCmBgYHB5dGhvbgpmcm9tIHJhdnluIGltcG9ydCBSYXZ5biwgZ2V0LCBwb3N0CgphcHAgPSBSYXZ5bigpCgpAYXBwLmdldCgiL3VzZXJzIikKZGVmIGxpc3RfdXNlcnMoKSAtPiBkaWN0OgogICAgcmV0dXJuIHsidXNlcnMiOiBbIkFsaWNlIiwgIkJvYiJdfQoKQGFwcC5wb3N0KCIvdXNlcnMiKQpkZWYgY3JlYXRlX3VzZXIobmFtZTogc3RyKSAtPiBkaWN0OgogICAgcmV0dXJuIHsiY3JlYXRlZCI6IG5hbWV9CmBgYAoKIyMjIyBHYXRld2F5IFN0eWxlIChSZWNvbW1lbmRlZCBmb3IgTGFyZ2VyIEFwcHMpCgpgYGBweXRob24KZnJvbSByYXZ5biBpbXBvcnQgUmF2eW4sIEdhdGV3YXksIGdldAoKQGdldCgpCmRlZiBsaXN0X3VzZXJzKCkgLT4gZGljdDoKICAgIHJldHVybiB7InVzZXJzIjogWyJBbGljZSIsICJCb2IiXX0KCmFwcCA9IFJhdnluKAogICAgcm91dGVzPVsKICAgICAgICBHYXRld2F5KCIvdXNlcnMiLCBoYW5kbGVyPWxpc3RfdXNlcnMpCiAgICBdCikKYGBgCgohISEgdGlwCiAgICBVc2UgZGVjb3JhdG9ycyBmb3IgcXVpY2sgcHJvdG90eXBlcy4gVXNlIEdhdGV3YXkgKyBJbmNsdWRlIGZvciBzY2FsYWJsZSwgb3JnYW5pemVkIGFwcGxpY2F0aW9ucy4KCiMjIyBEZXBlbmRlbmN5IEluamVjdGlvbgoKSW5qZWN0IGRlcGVuZGVuY2llcyBhdCBhbnkgbGV2ZWwuIGZyb20gYXBwbGljYXRpb24td2lkZSB0byBpbmRpdmlkdWFsIHJvdXRlcy4KCmBgYHB5dGhvbgpmcm9tIHJhdnluIGltcG9ydCBSYXZ5biwgR2F0ZXdheSwgSW5qZWN0LCBJbmplY3RzLCBnZXQKCmRlZiBnZXRfZGF0YWJhc2UoKToKICAgIHJldHVybiB7ImRiIjogImNvbm5lY3RlZCJ9CgpAZ2V0KCkKZGVmIHVzZXJzKGRiOiBkaWN0ID0gSW5qZWN0cygpKSAtPiBkaWN0OgogICAgcmV0dXJuIHsidXNlcnMiOiBbXSwgImRiX3N0YXR1cyI6IGRifQoKYXBwID0gUmF2eW4oCiAgICByb3V0ZXM9W0dhdGV3YXkoIi91c2VycyIsIGhhbmRsZXI9dXNlcnMpXSwKICAgIGRlcGVuZGVuY2llcz17ImRiIjogSW5qZWN0KGdldF9kYXRhYmFzZSl9CikKYGBgCgpMZWFybiBtb3JlIGluIHRoZSBbRGVwZW5kZW5jaWVzXSguL2RlcGVuZGVuY2llcy5tZCkgZ3VpZGUuCgojIyMgU2V0dGluZ3MgTWFuYWdlbWVudAoKUmF2eW4gdXNlcyBlbnZpcm9ubWVudC1iYXNlZCBzZXR0aW5ncyBpbnNwaXJlZCBieSBEamFuZ28uCgpgYGBweXRob24KZnJvbSByYXZ5biBpbXBvcnQgUmF2eW5TZXR0aW5ncwpmcm9tIHJhdnluLmNvbmYuZW51bXMgaW1wb3J0IEVudmlyb25tZW50VHlwZQoKY2xhc3MgRGV2ZWxvcG1lbnRTZXR0aW5ncyhSYXZ5blNldHRpbmdzKToKICAgIGFwcF9uYW1lOiBzdHIgPSAiTXkgQXBwIChEZXYpIgogICAgZW52aXJvbm1lbnQ6IHN0ciA9IEVudmlyb25tZW50VHlwZS5ERVZFTE9QTUVOVAogICAgZGVidWc6IGJvb2wgPSBUcnVlCmBgYAoKTG9hZCB5b3VyIHNldHRpbmdzIHZpYSBlbnZpcm9ubWVudCB2YXJpYWJsZToKCmBgYHNoZWxsCiMgTWFjT1MvTGludXgKUkFWWU5fU0VUVElOR1NfTU9EVUxFPSdteWFwcC5zZXR0aW5ncy5EZXZlbG9wbWVudFNldHRpbmdzJyB1dmljb3JuIGFwcDphcHAgLS1yZWxvYWQKCiMgV2luZG93cwokZW52OlJBVllOX1NFVFRJTkdTX01PRFVMRT0ibXlhcHAuc2V0dGluZ3MuRGV2ZWxvcG1lbnRTZXR0aW5ncyI7IHV2aWNvcm4gYXBwOmFwcCAtLXJlbG9hZApgYGAKCklmIG5vIGBSQVZZTl9TRVRUSU5HU19NT0RVTEVgIGlzIHNldCwgUmF2eW4gdXNlcyBzZW5zaWJsZSBkZWZhdWx0cy4KCkxlYXJuIG1vcmUgaW4gW0FwcGxpY2F0aW9uIFNldHRpbmdzXSguL2FwcGxpY2F0aW9uL3NldHRpbmdzLm1kKS4KCi0tLQoKIyMgT3JnYW5pemluZyBMYXJnZXIgQXBwbGljYXRpb25zCgpBcyB5b3VyIGFwcCBncm93cywgdXNlICoqSW5jbHVkZSoqIHRvIG9yZ2FuaXplIHJvdXRlcyBpbnRvIG1vZHVsZXMuCgojIyMgUHJvamVjdCBTdHJ1Y3R1cmUKCmBgYApteWFwcC8K4pSc4pSA4pSAIGFwcC5weQrilJzilIDilIAgdXJscy5weQrilJTilIDilIAgYWNjb3VudHMvCiAgICDilJzilIDilIAgY29udHJvbGxlcnMucHkKICAgIOKUlOKUgOKUgCB1cmxzLnB5CmBgYAoKIyMjIGFjY291bnRzL2NvbnRyb2xsZXJzLnB5CgpgYGBweXRob24KZnJvbSByYXZ5biBpbXBvcnQgZ2V0LCBwb3N0CgpAZ2V0KCkKZGVmIGxpc3RfYWNjb3VudHMoKSAtPiBkaWN0OgogICAgcmV0dXJuIHsiYWNjb3VudHMiOiBbXX0KCkBwb3N0KCkKZGVmIGNyZWF0ZV9hY2NvdW50KG5hbWU6IHN0cikgLT4gZGljdDoKICAgIHJldHVybiB7ImNyZWF0ZWQiOiBuYW1lfQpgYGAKCiMjIyBhY2NvdW50cy91cmxzLnB5CgpgYGBweXRob24KZnJvbSByYXZ5biBpbXBvcnQgR2F0ZXdheQpmcm9tIC5jb250cm9sbGVycyBpbXBvcnQgbGlzdF9hY2NvdW50cywgY3JlYXRlX2FjY291bnQKCnJvdXRlX3BhdHRlcm5zID0gWwogICAgR2F0ZXdheSgiLyIsIGhhbmRsZXI9bGlzdF9hY2NvdW50cyksCiAgICBHYXRld2F5KCIvY3JlYXRlIiwgaGFuZGxlcj1jcmVhdGVfYWNjb3VudCksCl0KYGBgCgojIyMgdXJscy5weQoKYGBgcHl0aG9uCmZyb20gcmF2eW4gaW1wb3J0IEluY2x1ZGUKCnJvdXRlX3BhdHRlcm5zID0gWwogICAgSW5jbHVkZSgiL2FjY291bnRzIiwgbmFtZXNwYWNlPSJteWFwcC5hY2NvdW50cy51cmxzIiksCl0KYGBgCgojIyMgYXBwLnB5CgpgYGBweXRob24KZnJvbSByYXZ5biBpbXBvcnQgUmF2eW4KCmFwcCA9IFJhdnluKHJvdXRlcz0ibXlhcHAudXJscyIpCmBgYAoKTm93IHlvdXIgcm91dGVzIGFyZSBvcmdhbml6ZWQ6CgotIGBHRVQgL2FjY291bnRzL2Ag4oaSIGxpc3RfYWNjb3VudHMKLSBgUE9TVCAvYWNjb3VudHMvY3JlYXRlYCDihpIgY3JlYXRlX2FjY291bnQKCkxlYXJuIG1vcmUgaW4gW1JvdXRpbmddKC4vcm91dGluZy9yb3V0ZXMubWQpLgoKLS0tCgojIyBBZGRpdGlvbmFsIEluc3RhbGxhdGlvbiBPcHRpb25zCgojIyMgVGVzdGluZyBTdXBwb3J0CgpgYGBzaGVsbApwaXAgaW5zdGFsbCByYXZ5blt0ZXN0XQpgYGAKCkluY2x1ZGVzIHRoZSBgUmF2eW5UZXN0Q2xpZW50YCBmb3IgdGVzdGluZyB5b3VyIGFwcGxpY2F0aW9uLgoKIyMjIEpXVCBTdXBwb3J0CgpgYGBzaGVsbApwaXAgaW5zdGFsbCByYXZ5bltqd3RdCmBgYAoKRm9yIEpXVC1iYXNlZCBhdXRoZW50aWNhdGlvbi4KCiMjIyBTY2hlZHVsZXIgU3VwcG9ydAoKYGBgc2hlbGwKcGlwIGluc3RhbGwgcmF2eW5bc2NoZWR1bGVyc10KYGBgCgpGb3IgYmFja2dyb3VuZCB0YXNrIHNjaGVkdWxpbmcuCgojIyMgSW50ZXJhY3RpdmUgU2hlbGwKCmBgYHNoZWxsCnBpcCBpbnN0YWxsIHJhdnluW2lweXRob25dICAjIElQeXRob24gc2hlbGwKcGlwIGluc3RhbGwgcmF2eW5bcHRweXRob25dICAjIHB0cHl0aG9uIHNoZWxsCmBgYAoKTGVhcm4gbW9yZSBhYm91dCB0aGUgW3NoZWxsXSguL2RpcmVjdGl2ZXMvc2hlbGwubWQpLgoKLS0tCgojIyBTdGFydCBhIFByb2plY3Qgd2l0aCBTY2FmZm9sZGluZwoKISEhIHdhcm5pbmcKICAgIFRoaXMgaXMgZm9yIHVzZXJzIGNvbWZvcnRhYmxlIHdpdGggUHl0aG9uIHByb2plY3Qgc3RydWN0dXJlcy4gSWYgeW91J3JlIG5ldyB0byBSYXZ5biwgY29udGludWUgbGVhcm5pbmcgdGhlIGJhc2ljcyBmaXJzdC4KCkdlbmVyYXRlIGEgKipzaW1wbGUqKiBwcm9qZWN0IHNjYWZmb2xkOgoKYGBgc2hlbGwKcmF2eW4gY3JlYXRlcHJvamVjdCBteXByb2plY3QgLS1zaW1wbGUKYGBgCgpPciBnZW5lcmF0ZSBhICoqY29tcGxldGUqKiBzY2FmZm9sZCAocmVjb21tZW5kZWQgZm9yIGVudGVycHJpc2UgYXBwcyk6CgpgYGBzaGVsbApyYXZ5biBjcmVhdGVwcm9qZWN0IG15cHJvamVjdApgYGAKClRoaXMgY3JlYXRlcyBhIHJlYWR5LXRvLWdvIHN0cnVjdHVyZSB3aXRoOgoKLSBQcmUtY29uZmlndXJlZCBhcHBsaWNhdGlvbgotIFNhbXBsZSByb3V0ZXMKLSBUZXN0IHNldHVwCgpMZWFybiBtb3JlIGluIFtEaXJlY3RpdmVzXSguL2RpcmVjdGl2ZXMvZGlyZWN0aXZlcy5tZCkuCgotLS0KCiMjIE5leHQgU3RlcHMKCk5vdyB0aGF0IHlvdSBoYXZlIFJhdnluIHJ1bm5pbmcsIGV4cGxvcmUgdGhlc2UgdG9waWNzOgoKIyMjIEVzc2VudGlhbCBDb25jZXB0cwotIFtEZXBlbmRlbmNpZXNdKC4vZGVwZW5kZW5jaWVzLm1kKSAtIE1hc3RlciBkZXBlbmRlbmN5IGluamVjdGlvbgotIFtSb3V0aW5nXSguL3JvdXRpbmcvcm91dGVzLm1kKSAtIEFkdmFuY2VkIHJvdXRpbmcgcGF0dGVybnMKLSBbUmVzcG9uc2VzXSguL3Jlc3BvbnNlcy5tZCkgLSBEaWZmZXJlbnQgcmVzcG9uc2UgdHlwZXMKLSBbVGVzdGluZ10oLi90ZXN0Y2xpZW50Lm1kKSAtIFRlc3QgeW91ciBhcHBsaWNhdGlvbgoKIyMjIEJ1aWxkaW5nIEZlYXR1cmVzCi0gW01pZGRsZXdhcmVdKC4vbWlkZGxld2FyZS9pbmRleC5tZCkgLSBBZGQgcmVxdWVzdC9yZXNwb25zZSBwcm9jZXNzaW5nCi0gW1Blcm1pc3Npb25zXSguL3Blcm1pc3Npb25zL2luZGV4Lm1kKSAtIFNlY3VyZSB5b3VyIGVuZHBvaW50cwotIFtEYXRhYmFzZSBJbnRlZ3JhdGlvbl0oLi9kYXRhYmFzZXMvZWRneS9tb3RpdmF0aW9uLm1kKSAtIENvbm5lY3QgdG8gZGF0YWJhc2VzCi0gW0JhY2tncm91bmQgVGFza3NdKC4vYmFja2dyb3VuZC10YXNrcy5tZCkgLSBSdW4gYXN5bmMgdGFza3MKCiMjIyBHb2luZyB0byBQcm9kdWN0aW9uCi0gW1NldHRpbmdzXSguL2FwcGxpY2F0aW9uL3NldHRpbmdzLm1kKSAtIEVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24KLSBbRGVwbG95bWVudF0oLi9kZXBsb3ltZW50L2ludHJvLm1kKSAtIERlcGxveSB5b3VyIGFwcGxpY2F0aW9uCi0gW09wZW5BUEkgQ29uZmlndXJhdGlvbl0oLi9jb25maWd1cmF0aW9ucy9vcGVuYXBpL2NvbmZpZy5tZCkgLSBDdXN0b21pemUgQVBJIGRvY3MKCi0tLQoKIyMgUmVxdWlyZW1lbnRzCgotICoqUHl0aG9uIDMuMTArKioKClJhdnluIGlzIGJ1aWx0IG9uOgoKLSA8YSBocmVmPSJodHRwczovL2xpbHlhLmRldi8iIGNsYXNzPSJleHRlcm5hbC1saW5rIiB0YXJnZXQ9Il9ibGFuayI+TGlseWE8L2E+IC0gSGlnaC1wZXJmb3JtYW5jZSBBU0dJIGZyYW1ld29yawotIDxhIGhyZWY9Imh0dHBzOi8vcHlkYW50aWMtZG9jcy5oZWxwbWFudWFsLmlvLyIgY2xhc3M9ImV4dGVybmFsLWxpbmsiIHRhcmdldD0iX2JsYW5rIj5QeWRhbnRpYzwvYT4gLSBEYXRhIHZhbGlkYXRpb24KCi0tLQoKIyMgQWJvdXQgUmF2eW4KCiMjIyBIaXN0b3J5CgpSYXZ5biBpcyB0aGUgZXZvbHV0aW9uIG9mIEVzbWVyYWxkLCByZWJyYW5kZWQgdG8gYWxpZ24gd2l0aCBhIGdyb3dpbmcgZWNvc3lzdGVtIG9mIHRvb2xzLiAqKkVzbWVyYWxkIGNvbnRpbnVlcyB0byBleGlzdCoqIGZvciBpdHMgc3BlY2lmaWMgdXNlIGNhc2VzLCB3aGlsZSBSYXZ5biByZXByZXNlbnRzIHRoZSBuZXh0IGdlbmVyYXRpb24gd2l0aCBpbXByb3ZlZCBjb25zaXN0ZW5jeSBhbmQgZnV0dXJlLWZvY3VzZWQgZGVzaWduLgoKIyMjIE1vdGl2YXRpb24KCldoaWxlIGZyYW1ld29ya3MgbGlrZSBGYXN0QVBJLCBGbGFzaywgYW5kIERqYW5nbyBzb2x2ZSA5OSUgb2YgY29tbW9uIHByb2JsZW1zLCB0aGV5IHNvbWV0aW1lcyBsZWF2ZSBnYXBzIGluIHN0cnVjdHVyZSBhbmQgYnVzaW5lc3MgbG9naWMgb3JnYW5pemF0aW9uLiBSYXZ5biB3YXMgYnVpbHQgdG8gZmlsbCB0aG9zZSBnYXBzIHdoaWxlIGtlZXBpbmcgdGhlIGJlc3QgZmVhdHVyZXMgZnJvbToKCi0gKipGYXN0QVBJKiogLSBBUEkgZGVzaWduIGFuZCBhdXRvbWF0aWMgZG9jdW1lbnRhdGlvbgotICoqRGphbmdvKiogLSBQZXJtaXNzaW9ucyBhbmQgc2V0dGluZ3MgbWFuYWdlbWVudAotICoqRmxhc2sqKiAtIFNpbXBsaWNpdHkgYW5kIGZsZXhpYmlsaXR5Ci0gKipOZXN0SlMqKiAtIENvbnRyb2xsZXJzIGFuZCBkZXBlbmRlbmN5IGluamVjdGlvbgotICoqU3RhcmxpdGUqKiAtIFRyYW5zZm9ybWVycyBhbmQgc2lnbmF0dXJlIG1vZGVscwoKTGVhcm4gbW9yZSBpbiBbQWJvdXQgUmF2eW5dKC4vYWJvdXQubWQpLgoKLS0tCgojIyBKb2luIHRoZSBDb21tdW5pdHkKClJhdnluIGlzIGFuIG9wZW4gc291cmNlIHByb2plY3QgYW5kIHdlIGxvdmUgeW91ciBjb250cmlidXRpb24hCgo8cCBhbGlnbj0iY2VudGVyIj4KICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9keW1tb25kL3JhdnluIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL2R5bW1vbmQvcmF2eW4/c3R5bGU9c29jaWFsIiBhbHQ9IkdpdEh1YiBzdGFycyI+CiAgICA8L2E+CiAgICA8YSBocmVmPSJodHRwczovL2Rpc2NvcmQuZ2cvZU1yTTlzV1d2dSIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2Rpc2NvcmQvMTAxODk5ODkyODMzMjU3MDYzND9sb2dvPWRpc2NvcmQmbG9nb0NvbG9yPWZmZmZmZiZjb2xvcj03Mzg5RDgmbGFiZWxDb2xvcj02QTdFQzIiIGFsdD0iRGlzY29yZCI+CiAgICA8L2E+CiAgICA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL3JhdnluX2ZyYW1ld29yayIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3R3aXR0ZXIvZm9sbG93L3JhdnluX2ZyYW1ld29yaz9zdHlsZT1zb2NpYWwiIGFsdD0iVHdpdHRlciI+CiAgICA8L2E+CjwvcD4KCi0gKipTdGFyIHVzIG9uIEdpdEh1YioqIHRvIHNob3cgeW91ciBzdXBwb3J0ISDirZDvuI8KLSAqKkpvaW4gb3VyIERpc2NvcmQqKiB0byBhc2sgcXVlc3Rpb25zIGFuZCBzaGFyZSB5b3VyIHByb2plY3RzLgotICoqRm9sbG93IHVzIG9uIFggKFR3aXR0ZXIpKiogZm9yIHRoZSBsYXRlc3QgdXBkYXRlcy4KCiMjIFNwb25zb3JzCgpDdXJyZW50bHkgdGhlcmUgYXJlIG5vIHNwb25zb3JzIG9mIFJhdnluIGJ1dCB5b3UgY2FuIGZpbmFuY2lhbGx5IGhlbHAgYW5kIHN1cHBvcnQgdGhlIGF1dGhvciB0aG91Z2gKW0dpdEh1YiBzcG9uc29yc10oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL3RhcnNpbCkgYW5kIGJlY29tZSBhICoqU3BlY2lhbCBvbmUqKiBvciBhICoqTGVnZW5kKiouCgojIyMgUG93ZXJlZCBieQoKV29ydGggbWVudGlvbmluZyB3aG8gaXMgaGVscGluZyB1cy4KCioqSmV0QnJhaW5zKioKClshW0pldEJyYWlucyBsb2dvLl0oaHR0cHM6Ly9yZXNvdXJjZXMuamV0YnJhaW5zLmNvbS9zdG9yYWdlL3Byb2R1Y3RzL2NvbXBhbnkvYnJhbmQvbG9nb3MvamV0YnJhaW5zLnN2ZyldKGh0dHBzOi8vamIuZ2cvT3BlblNvdXJjZVN1cHBvcnQpCgpbZWRneV9vcm1dOiBodHRwczovL3JhdnluLmRldi9kYXRhYmFzZXMvZWRneS9tb3RpdmF0aW9uClttb25nb3pfb2RtXTogaHR0cHM6Ly9yYXZ5bi5kZXYvZGF0YWJhc2VzL21vbmdvei9tb3RpdmF0aW9uCgpbZWRneV9vcm1dOiAuL2RhdGFiYXNlcy9lZGd5L21vdGl2YXRpb24ubWQKW21vbmdvel9vZG1dOiAuL2RhdGFiYXNlcy9tb25nb3ovbW90aXZhdGlvbi5tZAo= readmeEtag: '"21b2980145db1c55fd93cadc9f3973cd6ef7fa99"' readmeLastModified: Thu, 08 Jan 2026 11:36:06 GMT repositoryId: 553553797 description: >- Ravyn combines performance, type safety, and elegance. A next-generation async Python framework for APIs, microservices, and web applications. created: '2022-10-18T11:50:26Z' updated: '2026-02-02T08:25:01Z' language: Python archived: false stars: 384 watchers: 9 forks: 22 owner: dymmond logo: https://avatars.githubusercontent.com/u/65982469?v=4 license: BSD-3-Clause repoEtag: '"f816aeff241f79a00be9f3a7990842d94136dd47b112c1d4d3fa35efa37627b7"' repoLastModified: Mon, 02 Feb 2026 08:25:01 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/dymmond/esmerald - source: openapi3 tags repository: https://github.com/7nohe/openapi-react-query-codegen v3: true id: cb6960da16fa36f3be9fdcb19adfb75f repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFJlYWN0IFF1ZXJ5IENvZGVnZW4KCj4gQ29kZSBnZW5lcmF0b3IgZm9yIGNyZWF0aW5nIFtSZWFjdCBRdWVyeSAoYWxzbyBrbm93biBhcyBUYW5TdGFjayBRdWVyeSldKGh0dHBzOi8vdGFuc3RhY2suY29tL3F1ZXJ5KSBob29rcyBiYXNlZCBvbiB5b3VyIE9wZW5BUEkgc2NoZW1hLgoKWyFbbnBtIHZlcnNpb25dKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9qcy8lNDA3bm9oZSUyRm9wZW5hcGktcmVhY3QtcXVlcnktY29kZWdlbi5zdmcpXShodHRwczovL2JhZGdlLmZ1cnkuaW8vanMvJTQwN25vaGUlMkZvcGVuYXBpLXJlYWN0LXF1ZXJ5LWNvZGVnZW4pCgojIyBGZWF0dXJlcwoKLSBHZW5lcmF0ZXMgY3VzdG9tIHJlYWN0IGhvb2tzIHRoYXQgdXNlIFJlYWN0IFF1ZXJ5J3MgYHVzZVF1ZXJ5YCwgYHVzZVN1c3BlbnNlUXVlcnlgLCBgdXNlTXV0YXRpb25gIGFuZCBgdXNlSW5maW5pdGVRdWVyeWAgaG9va3MKLSBHZW5lcmF0ZXMgY3VzdG9tIGZ1bmN0aW9ucyB0aGF0IHVzZSBSZWFjdCBRdWVyeSdzIGBlbnN1cmVRdWVyeURhdGFgIGFuZCBgcHJlZmV0Y2hRdWVyeWAgZnVuY3Rpb25zCi0gR2VuZXJhdGVzIHF1ZXJ5IGtleXMgYW5kIGZ1bmN0aW9ucyBmb3IgcXVlcnkgY2FjaGluZwotIEdlbmVyYXRlcyBwdXJlIFR5cGVTY3JpcHQgY2xpZW50cyBnZW5lcmF0ZWQgYnkgW0BoZXktYXBpL29wZW5hcGktdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9oZXktYXBpL29wZW5hcGktdHMpCg== readmeEtag: '"652c5ea38037709c8ad59e8e4272caaa9637c426"' readmeLastModified: Mon, 14 Oct 2024 14:16:49 GMT repositoryId: 516560962 description: >- OpenAPI React Query Codegen is a code generator for creating React Query (also known as TanStack Query) hooks based on your OpenAPI schema. created: '2022-07-22T00:34:17Z' updated: '2026-02-02T12:28:25Z' language: TypeScript archived: false stars: 423 watchers: 3 forks: 40 owner: 7nohe logo: https://avatars.githubusercontent.com/u/9207663?v=4 license: MIT repoEtag: '"0a019db910ad5392d094683fe70ecb92cae8b48199002385ec0335c000de500c"' repoLastModified: Mon, 02 Feb 2026 12:28:25 GMT category: SDK foundInMaster: true - source: - openapi3 tags - openapi31 tags repository: https://github.com/python-openapi/openapi-core v3: true id: d81cd6bc100ca208f3155bff6bccc824 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWNvcmUKCjxhIGhyZWY9Imh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvb3BlbmFwaS1jb3JlIiB0YXJnZXQ9Il9ibGFuayI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvb3BlbmFwaS1jb3JlLnN2ZyIgYWx0PSJQYWNrYWdlIHZlcnNpb24iPgo8L2E+CjxhIGhyZWY9Imh0dHBzOi8vdHJhdmlzLWNpLm9yZy9weXRob24tb3BlbmFwaS9vcGVuYXBpLWNvcmUiIHRhcmdldD0iX2JsYW5rIj4KICAgIDxpbWcgc3JjPSJodHRwczovL3RyYXZpcy1jaS5vcmcvcHl0aG9uLW9wZW5hcGkvb3BlbmFwaS1jb3JlLnN2Zz9icmFuY2g9bWFzdGVyIiBhbHQ9IkNvbnRpbnVvdXMgSW50ZWdyYXRpb24iPgo8L2E+CjxhIGhyZWY9Imh0dHBzOi8vY29kZWNvdi5pby9naXRodWIvcHl0aG9uLW9wZW5hcGkvb3BlbmFwaS1jb3JlP2JyYW5jaD1tYXN0ZXIiIHRhcmdldD0iX2JsYW5rIj4KICAgIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRodWIvcHl0aG9uLW9wZW5hcGkvb3BlbmFwaS1jb3JlL21hc3Rlci5zdmc/c3R5bGU9ZmxhdCIgYWx0PSJUZXN0cyBjb3ZlcmFnZSI+CjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9vcGVuYXBpLWNvcmUiIHRhcmdldD0iX2JsYW5rIj4KICAgIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy9vcGVuYXBpLWNvcmUuc3ZnIiBhbHQ9IlB5dGhvbiB2ZXJzaW9ucyI+CjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9vcGVuYXBpLWNvcmUiIHRhcmdldD0iX2JsYW5rIj4KICAgIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvZm9ybWF0L29wZW5hcGktY29yZS5zdmciIGFsdD0iUGFja2FnZSBmb3JtYXQiPgo8L2E+CjxhIGhyZWY9Imh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvb3BlbmFwaS1jb3JlIiB0YXJnZXQ9Il9ibGFuayI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3N0YXR1cy9vcGVuYXBpLWNvcmUuc3ZnIiBhbHQ9IkRldmVsb3BtZW50IHN0YXR1cyI+CjwvYT4KCiMjIEFib3V0CgpPcGVuYXBpLWNvcmUgaXMgYSBQeXRob24gbGlicmFyeSB0aGF0IHByb3ZpZGVzIGNsaWVudC1zaWRlIGFuZCBzZXJ2ZXItc2lkZSBzdXBwb3J0CmZvciB0aGUgW09wZW5BUEkgdjMuMF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjMubWQpCmFuZCBbT3BlbkFQSSB2My4xXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21haW4vdmVyc2lvbnMvMy4xLjAubWQpIHNwZWNpZmljYXRpb25zLgoKCiMjIEtleSBmZWF0dXJlcwoKLSAqKlZhbGlkYXRpb24qKiBhbmQgKip1bm1hcnNoYWxsaW5nKiogb2YgcmVxdWVzdCBhbmQgcmVzcG9uc2UgZGF0YSAoaW5jbHVkaW5nIHdlYmhvb2tzKQotICoqSW50ZWdyYXRpb24qKiB3aXRoIHBvcHVsYXIgbGlicmFyaWVzIChSZXF1ZXN0cywgV2Vya3pldWcpIGFuZCBmcmFtZXdvcmtzIChEamFuZ28sIEZhbGNvbiwgRmxhc2ssIFN0YXJsZXR0ZSkKLSBDdXN0b21pemF0aW9uIHdpdGggbWVkaWEgdHlwZSAqKmRlc2VyaWFsaXplcnMqKiBhbmQgZm9ybWF0ICoqdW5tYXJzaGFsbGVycyoqCi0gKipTZWN1cml0eSoqIGRhdGEgcHJvdmlkZXJzIChBUEkga2V5cywgQ29va2llLCBCYXNpYywgYW5kIEJlYXJlciBIVFRQIGF1dGhlbnRpY2F0aW9ucykKCgojIyBEb2N1bWVudGF0aW9uCgpDaGVjayBkb2N1bWVudGF0aW9uIHRvIHNlZSBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIGZlYXR1cmVzLiBBbGwgZG9jdW1lbnRhdGlvbiBpcyBpbiB0aGUgImRvY3MiIGRpcmVjdG9yeSBhbmQgb25saW5lIGF0IFtvcGVuYXBpLWNvcmUucmVhZHRoZWRvY3MuaW9dKGh0dHBzOi8vb3BlbmFwaS1jb3JlLnJlYWR0aGVkb2NzLmlvKQoKCiMjIEluc3RhbGxhdGlvbgoKUmVjb21tZW5kZWQgd2F5ICh2aWEgcGlwKToKCmBgYCBjb25zb2xlCnBpcCBpbnN0YWxsIG9wZW5hcGktY29yZQpgYGAKCkFsdGVybmF0aXZlbHkgeW91IGNhbiBkb3dubG9hZCB0aGUgY29kZSBhbmQgaW5zdGFsbCBmcm9tIHRoZSByZXBvc2l0b3J5OgoKYGBgIGNvbnNvbGUKcGlwIGluc3RhbGwgLWUgZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24tb3BlbmFwaS9vcGVuYXBpLWNvcmUuZ2l0I2VnZz1vcGVuYXBpX2NvcmUKYGBgCgoKIyMgRmlyc3Qgc3RlcHMKCkZpcnN0LCBjcmVhdGUgeW91ciBPcGVuQVBJIG9iamVjdC4KCmBgYCBweXRob24KZnJvbSBvcGVuYXBpX2NvcmUgaW1wb3J0IE9wZW5BUEkKCm9wZW5hcGkgPSBPcGVuQVBJLmZyb21fZmlsZV9wYXRoKCdvcGVuYXBpLmpzb24nKQpgYGAKCk5vdyB5b3UgY2FuIHVzZSBpdCB0byB2YWxpZGF0ZSBhbmQgdW5tYXJzaGFsIGFnYWluc3QgcmVxdWVzdHMgYW5kL29yIHJlc3BvbnNlcy4gCgpgYGAgcHl0aG9uCiMgcmFpc2VzIGFuIGVycm9yIGlmIHRoZSByZXF1ZXN0IGlzIGludmFsaWQKcmVzdWx0ID0gb3BlbmFwaS51bm1hcnNoYWxfcmVxdWVzdChyZXF1ZXN0KQpgYGAKClJldHJpZXZlIHZhbGlkYXRlZCBhbmQgdW5tYXJzaGFsbGVkIHJlcXVlc3QgZGF0YS4KCmBgYCBweXRob24KIyBnZXQgcGFyYW1ldGVycwpwYXRoX3BhcmFtcyA9IHJlc3VsdC5wYXJhbWV0ZXJzLnBhdGgKcXVlcnlfcGFyYW1zID0gcmVzdWx0LnBhcmFtZXRlcnMucXVlcnkKY29va2llc19wYXJhbXMgPSByZXN1bHQucGFyYW1ldGVycy5jb29raWVzCmhlYWRlcnNfcGFyYW1zID0gcmVzdWx0LnBhcmFtZXRlcnMuaGVhZGVycwojIGdldCBib2R5CmJvZHkgPSByZXN1bHQuYm9keQojIGdldCBzZWN1cml0eSBkYXRhCnNlY3VyaXR5ID0gcmVzdWx0LnNlY3VyaXR5CmBgYAoKVGhlIHJlcXVlc3Qgb2JqZWN0IHNob3VsZCBpbXBsZW1lbnQgdGhlIE9wZW5BUEkgUmVxdWVzdCBwcm90b2NvbC4gQ2hlY2sgW0ludGVncmF0aW9uc10oaHR0cHM6Ly9vcGVuYXBpLWNvcmUucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2ludGVncmF0aW9ucy5odG1sKSB0byBmaW5kIG9mZmljaWFsbHkgc3VwcG9ydGVkIGltcGxlbWVudGF0aW9ucy4KCkZvciBtb3JlIGRldGFpbHMgcmVhZCBhYm91dCB0aGUgW1VubWFyc2hhbGxpbmddKGh0dHBzOi8vb3BlbmFwaS1jb3JlLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC91bm1hcnNoYWxsaW5nLmh0bWwpIHByb2Nlc3MuCgpJZiB5b3UganVzdCB3YW50IHRvIHZhbGlkYXRlIHlvdXIgcmVxdWVzdC9yZXNwb25zZSBkYXRhIHdpdGhvdXQgdW5tYXJzaGFsbGluZywgcmVhZCBhYm91dCBbVmFsaWRhdGlvbl0oaHR0cHM6Ly9vcGVuYXBpLWNvcmUucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L3ZhbGlkYXRpb24uaHRtbCkgaW5zdGVhZC4KCgojIyBSZWxhdGVkIHByb2plY3RzCgotIFtvcGVuYXBpLXNwZWMtdmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uLW9wZW5hcGkvb3BlbmFwaS1zcGVjLXZhbGlkYXRvcikKICA6IEEgUHl0aG9uIGxpYnJhcnkgdGhhdCB2YWxpZGF0ZXMgT3BlbkFQSSBTcGVjcyBhZ2FpbnN0IHRoZSBPcGVuQVBJIDIuMCAoYWthIFN3YWdnZXIpLCBPcGVuQVBJIDMuMCwgYW5kIE9wZW5BUEkgMy4xIHNwZWNpZmljYXRpb24uIFRoZSB2YWxpZGF0b3IgYWltcyB0byBjaGVjayBmb3IgZnVsbCBjb21wbGlhbmNlIHdpdGggdGhlIFNwZWNpZmljYXRpb24uCi0gW29wZW5hcGktc2NoZW1hLXZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi1vcGVuYXBpL29wZW5hcGktc2NoZW1hLXZhbGlkYXRvcikKICA6IEEgUHl0aG9uIGxpYnJhcnkgdGhhdCB2YWxpZGF0ZXMgc2NoZW1hIGFnYWluc3QgdGhlIE9wZW5BUEkgU2NoZW1hIFNwZWNpZmljYXRpb24gdjMuMCBhbmQgT3BlbkFQSSBTY2hlbWEgU3BlY2lmaWNhdGlvbiB2My4xLgotIFtib3R0bGUtb3BlbmFwaS0zXShodHRwczovL2dpdGh1Yi5jb20vY29wZS1zeXN0ZW1zL2JvdHRsZS1vcGVuYXBpLTMpCiAgOiBPcGVuQVBJIDMuMCBTdXBwb3J0IGZvciB0aGUgQm90dGxlIFdlYiBGcmFtZXdvcmsKLSBbcHlyYW1pZF9vcGVuYXBpM10oaHR0cHM6Ly9naXRodWIuY29tL25pdGVvd2ViL3B5cmFtaWRfb3BlbmFwaTMpCiAgOiBQeXJhbWlkIGFkZG9uIGZvciBPcGVuQVBJMyB2YWxpZGF0aW9uIG9mIHJlcXVlc3RzIGFuZCByZXNwb25zZXMuCi0gW3Rvcm5hZG8tb3BlbmFwaTNdKGh0dHBzOi8vZ2l0aHViLmNvbS9jb3JyZWwvdG9ybmFkby1vcGVuYXBpMykKICA6IFRvcm5hZG8gT3BlbkFQSSAzIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHZhbGlkYXRpb24gbGlicmFyeS4KCiMjIExpY2Vuc2UKClRoZSBwcm9qZWN0IGlzIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQlNEIDMtQ2xhdXNlIExpY2Vuc2UuCg== readmeEtag: '"4021788dc08b815edec8f27145970bdd1be1a4cd"' readmeLastModified: Wed, 12 Mar 2025 00:29:49 GMT repositoryId: 104200746 description: >- Openapi-core is a Python library that adds client-side and server-side support for the OpenAPI v3.0 and OpenAPI v3.1 specification. created: '2017-09-20T10:25:35Z' updated: '2026-02-04T13:27:19Z' language: Python archived: false stars: 357 watchers: 6 forks: 136 owner: python-openapi logo: https://avatars.githubusercontent.com/u/126442889?v=4 license: BSD-3-Clause repoEtag: '"a3f33c7414acccbab5d40bfac487787aef7ce35a2a30d0cf45b5db26d090119d"' repoLastModified: Wed, 04 Feb 2026 13:27:19 GMT category: - Data Validators - Parsers oldLocations: - https://github.com/p1c2u/openapi-core foundInMaster: true v3_1: true - source: openapi3 tags repository: https://github.com/epiphone/routing-controllers-openapi v3: true repositoryMetadata: base64Readme: >- IyByb3V0aW5nLWNvbnRyb2xsZXJzLW9wZW5hcGkKClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9lcGlwaG9uZS9yb3V0aW5nLWNvbnRyb2xsZXJzLW9wZW5hcGkvYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvZXBpcGhvbmUvcm91dGluZy1jb250cm9sbGVycy1vcGVuYXBpKSBbIVtucG0gdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL3JvdXRpbmctY29udHJvbGxlcnMtb3BlbmFwaS5zdmcpXShodHRwczovL2JhZGdlLmZ1cnkuaW8vanMvcm91dGluZy1jb250cm9sbGVycy1vcGVuYXBpKQoKUnVudGltZSBPcGVuQVBJIHYzIHNjaGVtYSBnZW5lcmF0aW9uIGZvciBbcm91dGluZy1jb250cm9sbGVyc10oaHR0cHM6Ly9naXRodWIuY29tL3R5cGVzdGFjay9yb3V0aW5nLWNvbnRyb2xsZXJzKS4KCiMjIEluc3RhbGxhdGlvbgoKYG5wbSBpbnN0YWxsIC0tc2F2ZSByb3V0aW5nLWNvbnRyb2xsZXJzLW9wZW5hcGlgCgojIyBVc2FnZQoKYGBgdHlwZXNjcmlwdAppbXBvcnQgeyBnZXRNZXRhZGF0YUFyZ3NTdG9yYWdlIH0gZnJvbSAncm91dGluZy1jb250cm9sbGVycycKaW1wb3J0IHsgcm91dGluZ0NvbnRyb2xsZXJzVG9TcGVjIH0gZnJvbSAncm91dGluZy1jb250cm9sbGVycy1vcGVuYXBpJwoKLy8gRGVmaW5lIHlvdXIgY29udHJvbGxlcnMgYXMgdXN1YWw6CgpASnNvbkNvbnRyb2xsZXIoJy91c2VycycpCmNsYXNzIFVzZXJzQ29udHJvbGxlciB7CiAgQEdldCgnLzp1c2VySWQnKQogIGdldFVzZXIoQFBhcmFtKCd1c2VySWQnKSB1c2VySWQ6IHN0cmluZykgewogICAgLy8gLi4uCiAgfQoKICBASHR0cENvZGUoMjAxKQogIEBQb3N0KCcvJykKICBjcmVhdGVVc2VyKEBCb2R5KCkgYm9keTogQ3JlYXRlVXNlckJvZHkpIHsKICAgIC8vIC4uLgogIH0KfQoKLy8gR2VuZXJhdGUgYSBzY2hlbWE6Cgpjb25zdCBzdG9yYWdlID0gZ2V0TWV0YWRhdGFBcmdzU3RvcmFnZSgpCmNvbnN0IHNwZWMgPSByb3V0aW5nQ29udHJvbGxlcnNUb1NwZWMoc3RvcmFnZSkKY29uc29sZS5sb2coc3BlYykKYGBgCgpwcmludHMgb3V0IHRoZSBmb2xsb3dpbmcgc3BlY2lmaWNhdGlvbjoKCmBgYGpzb24KewogICJjb21wb25lbnRzIjogewogICAgInNjaGVtYXMiOiB7fQogIH0sCiAgImluZm8iOiB7CiAgICAidGl0bGUiOiAiIiwKICAgICJ2ZXJzaW9uIjogIjEuMC4wIgogIH0sCiAgIm9wZW5hcGkiOiAiMy4wLjAiLAogICJwYXRocyI6IHsKICAgICIvdXNlcnMve3VzZXJJZH0iOiB7CiAgICAgICJnZXQiOiB7CiAgICAgICAgIm9wZXJhdGlvbklkIjogIlVzZXJzQ29udHJvbGxlci5nZXRVc2VyIiwKICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImluIjogInBhdGgiLAogICAgICAgICAgICAibmFtZSI6ICJ1c2VySWQiLAogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInJlc3BvbnNlcyI6IHsKICAgICAgICAgICIyMDAiOiB7CiAgICAgICAgICAgICJjb250ZW50IjogewogICAgICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIjoge30KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN1Y2Nlc3NmdWwgcmVzcG9uc2UiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAic3VtbWFyeSI6ICJMaXN0IHVzZXJzIiwKICAgICAgICAidGFncyI6IFsiVXNlcnMiXQogICAgICB9CiAgICB9LAogICAgIi91c2Vycy8iOiB7CiAgICAgICJwb3N0IjogewogICAgICAgICJvcGVyYXRpb25JZCI6ICJVc2Vyc0NvbnRyb2xsZXIuY3JlYXRlVXNlciIsCiAgICAgICAgInJlcXVlc3RCb2R5IjogewogICAgICAgICAgImNvbnRlbnQiOiB7CiAgICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIjogewogICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9DcmVhdGVVc2VyQm9keSIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlVXNlckJvZHkiLAogICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAiMjAxIjogewogICAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHt9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTdWNjZXNzZnVsIHJlc3BvbnNlIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInN1bW1hcnkiOiAiQ3JlYXRlIHVzZXIiLAogICAgICAgICJ0YWdzIjogWyJVc2VycyJdCiAgICAgIH0KICAgIH0KICB9Cn0KYGBgCgpDaGVjayBbYC9zYW1wbGVgXSgvc2FtcGxlKSBmb3IgYSBjb21wbGV0ZSBzYW1wbGUgYXBwbGljYXRpb24uCgojIyMgQ29uZmlndXJhdGlvbgoKYHJvdXRpbmdDb250cm9sbGVyc1RvU3BlY2AgaGFzIHRoZSBmb2xsb3dpbmcgdHlwZSBzaWduYXR1cmU6CgpgYGB0eXBlc2NyaXB0CmV4cG9ydCBmdW5jdGlvbiByb3V0aW5nQ29udHJvbGxlcnNUb1NwZWMoCiAgc3RvcmFnZTogTWV0YWRhdGFBcmdzU3RvcmFnZSwKICByb3V0aW5nQ29udHJvbGxlck9wdGlvbnM6IFJvdXRpbmdDb250cm9sbGVyc09wdGlvbnMgPSB7fSwKICBhZGRpdGlvbmFsUHJvcGVydGllczogUGFydGlhbDxPcGVuQVBJT2JqZWN0PiA9IHt9Cik6IE9wZW5BUElPYmplY3QKYGBgCgpgcm91dGluZ0NvbnRyb2xsZXJPcHRpb25zYCByZWZlcnMgdG8gdGhlIG9wdGlvbnMgb2JqZWN0IHVzZWQgdG8gY29uZmlndXJlIHJvdXRpbmctY29udHJvbGxlcnMuIFBhc3MgaW4gdGhlIHNhbWUgb3B0aW9ucyBoZXJlIHRvIGhhdmUgeW91ciBbYHJvdXRlUHJlZml4YF0oaHR0cHM6Ly9naXRodWIuY29tL3R5cGVzdGFjay9yb3V0aW5nLWNvbnRyb2xsZXJzLyNwcmVmaXgtYWxsLWNvbnRyb2xsZXJzLXJvdXRlcykgYW5kIFtgZGVmYXVsdHNgXShodHRwczovL2dpdGh1Yi5jb20vdHlwZXN0YWNrL3JvdXRpbmctY29udHJvbGxlcnMvI2RlZmF1bHQtc2V0dGluZ3MpIG9wdGlvbnMgcmVmbGVjdGVkIGluIHRoZSByZXN1bHRpbmcgT3BlbkFQSSBzcGVjLgoKYGFkZGl0aW9uYWxQcm9wZXJ0aWVzYCBpcyBhIHBhcnRpYWwgW09wZW5BUEkgb2JqZWN0XShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jb3BlbmFwaS1vYmplY3QtMTcpIHRoYXQgZ2V0cyBtZXJnZWQgaW50byB0aGUgcmVzdWx0IHNwZWMuIFlvdSBjYW4gZm9yIGV4YW1wbGUgc2V0IHlvdXIgb3duIFtgaW5mb2BdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNvcGVuYXBpLW9iamVjdC0xOSkgb3IgW2Bjb21wb25lbnRzYF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI2NvbXBvbmVudHMtb2JqZWN0LTMzKSBrZXl3b3JkcyBoZXJlLgoKIyMjIFZhbGlkYXRpb24gY2xhc3NlcwoKVXNlIFtjbGFzcy12YWxpZGF0b3ItanNvbnNjaGVtYV0oaHR0cHM6Ly9naXRodWIuY29tL2VwaXBob25lL2NsYXNzLXZhbGlkYXRvci1qc29uc2NoZW1hKSB0byBjb252ZXJ0IHlvdXIgdmFsaWRhdGlvbiBjbGFzc2VzIGludG8gT3BlbkFQSS1jb21wYXRpYmxlIHNjaGVtYXM6CgpgYGB0eXBlc2NyaXB0CmltcG9ydCB7IHZhbGlkYXRpb25NZXRhZGF0YXNUb1NjaGVtYXMgfSBmcm9tICdjbGFzcy12YWxpZGF0b3ItanNvbnNjaGVtYScKCi8vIC4uLgoKY29uc3Qgc2NoZW1hcyA9IHZhbGlkYXRpb25NZXRhZGF0YXNUb1NjaGVtYXMoewogIHJlZlBvaW50ZXJQcmVmaXg6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy8nLAp9KQoKY29uc3Qgc3BlYyA9IHJvdXRpbmdDb250cm9sbGVyc1RvU3BlYyhzdG9yYWdlLCByb3V0aW5nQ29udHJvbGxlck9wdGlvbnMsIHsKICBjb21wb25lbnRzOiB7IHNjaGVtYXMgfSwKICBpbmZvOiB7IHRpdGxlOiAnTXkgYXBwJywgdmVyc2lvbjogJzEuMi4wJyB9LAp9KQpgYGAKCiMjIyBEZWNvcmF0aW5nIHdpdGggYWRkaXRpb25hbCBrZXl3b3JkcwoKVXNlIHRoZSBgQE9wZW5BUElgIGRlY29yYXRvciB0byBzdXBwbHkgeW91ciBhY3Rpb25zIHdpdGggYWRkaXRpb25hbCBrZXl3b3JkczoKCmBgYHR5cGVzY3JpcHQKaW1wb3J0IHsgT3BlbkFQSSB9IGZyb20gJ3JvdXRpbmctY29udHJvbGxlcnMtb3BlbmFwaScKCkBKc29uQ29udHJvbGxlcignL3VzZXJzJykKZXhwb3J0IGNsYXNzIFVzZXJzQ29udHJvbGxlciB7CiAgQEdldCgnLycpCiAgQE9wZW5BUEkoewogICAgZGVzY3JpcHRpb246ICdMaXN0IGFsbCBhdmFpbGFibGUgdXNlcnMnLAogICAgcmVzcG9uc2VzOiB7CiAgICAgICc0MDAnOiB7CiAgICAgICAgZGVzY3JpcHRpb246ICdCYWQgcmVxdWVzdCcsCiAgICAgIH0sCiAgICB9LAogIH0pCiAgbGlzdFVzZXJzKCkgewogICAgLy8gLi4uCiAgfQp9CmBgYAoKVGhlIHBhcmFtZXRlciBvYmplY3QgY29uc2lzdHMgb2YgYW55IG51bWJlciBvZiBwcm9wZXJ0aWVzIGZyb20gdGhlIFtPcGVyYXRpb24gb2JqZWN0XShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jb3BlcmF0aW9uT2JqZWN0KS4gVGhlc2UgcHJvcGVydGllcyBhcmUgdGhlbiBtZXJnZWQgaW50byB0aGUgc3BlYywgb3ZlcndyaXRpbmcgYW55IGV4aXN0aW5nIHZhbHVlcy4KCkFsdGVybmF0aXZlbHkgeW91IGNhbiBjYWxsIGBAT3BlbkFQSWAgd2l0aCBhIGZ1bmN0aW9uIG9mIHR5cGUgYChzb3VyY2U6IE9wZXJhdGlvbk9iamVjdCwgcm91dGU6IElSb3V0ZSkgPT4gT3BlcmF0aW9uT2JqZWN0YCwgaS5lLiBhIGZ1bmN0aW9uIHJlY2VpdmluZyB0aGUgZXhpc3Rpbmcgc3BlYyBhcyB3ZWxsIGFzIHRoZSB0YXJnZXQgcm91dGUsIHNwaXR0aW5nIG91dCBhbiB1cGRhdGVkIHNwZWMuIFRoaXMgZnVuY3Rpb24gcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBmb3IgZXhhbXBsZSB5b3VyIG93biBtZXJnaW5nIGxvZ2ljIG9yIGN1c3RvbSBkZWNvcmF0b3JzLgoKIyMjIyBNdWx0aXBsZSBgQE9wZW5BUElgIGRlY29yYXRvcnMKCkEgc2luZ2xlIGhhbmRsZXIgY2FuIGJlIGRlY29yYXRlZCB3aXRoIG11bHRpcGxlIGBAT3BlbkFQSWBzLiBOb3RlIHRob3VnaCB0aGF0IHNpbmNlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgdG9wLWRvd24sIGFueSBwb3NzaWJsZSBkdXBsaWNhdGUga2V5cyBhcmUgb3ZlcndyaXR0ZW4gYnkgc3Vic2VxdWVudCBkZWNvcmF0b3JzOgoKYGBgdHlwZXNjcmlwdAogIEBPcGVuQVBJKHsKICAgIHN1bW1hcnk6ICdUaGlzIHZhbHVlIHdpbGwgYmUgb3ZlcndyaXR0ZW4hJywKICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB2YWx1ZSB3aWxsIHJlbWFpbicKICB9KQogIEBPcGVuQVBJKHsKICAgIHN1bW1hcnk6ICdUaGlzIHZhbHVlIHdpbGwgcmVtYWluJwogIH0pCiAgbGlzdFVzZXJzKCkgewogICAgLy8gLi4uCiAgfQpgYGAKCk11bHRpcGxlIGBAT3BlbkFQSWBzIGFyZSBtZXJnZWQgdG9nZXRoZXIgd2l0aCBbYGxvZGFzaC9tZXJnZWBdKGh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzLzQuMTcuMTEjbWVyZ2UpIHdoaWNoIGhhcyBbYSBmZXcgaW50ZXJlc3RpbmcgcHJvcGVydGllc10oaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvaXNzdWVzLzEzMTMpIHRvIGtlZXAgaW4gbWluZCB3aGVuIGl0IGNvbWVzIHRvIGFycmF5cy4gVXNlIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgZGVzY3JpYmVkIGFib3ZlIHdoZW4gc3RyaWN0IGNvbnRyb2wgb3ZlciBtZXJnaW5nIGxvZ2ljIGlzIHJlcXVpcmVkLgoKIyMjIyBDbGFzcyBgQE9wZW5BUElgIGRlY29yYXRvcgoKVXNpbmcgYEBPcGVuQVBJYCBvbiB0aGUgY29udHJvbGxlciBjbGFzcyBlZmZlY3RpdmVseSBhcHBsaWVzIGdpdmVuIHNwZWMgdG8gZWFjaCBjbGFzcyBtZXRob2QuIE1ldGhvZC1sZXZlbCBgQE9wZW5BUElgcyBhcmUgbWVyZ2VkIGludG8gY2xhc3Mgc3BlY3MsIHdpdGggdGhlIGZvcm1lciBoYXZpbmcgcHJlY2VkZW5jZToKCmBgYHR5cGVzY3JpcHQKQE9wZW5BUEkoewogIHNlY3VyaXR5OiBbeyBiYXNpY0F1dGg6IFtdIH1dLCAvLyBBcHBsaWVkIHRvIGVhY2ggbWV0aG9kCn0pCkBKc29uQ29udHJvbGxlcignL3VzZXJzJykKZXhwb3J0IGNsYXNzIFVzZXJzQ29udHJvbGxlciB7CiAgLy8gLi4uCn0KYGBgCgojIyMgQW5ub3RhdGluZyByZXNwb25zZSBzY2hlbWFzCgpFeHRyYWN0aW5nIHJlc3BvbnNlIHR5cGVzIGF1dG9tYXRpY2FsbHkgaW4gcnVudGltZSBpc24ndCBjdXJyZW50bHkgYWxsb3dlZCBieSBUeXBlc2NyaXB0J3MgcmVmbGVjdGlvbiBzeXN0ZW0uIFNwZWNpZmljYWxseSB0aGUgcHJvYmxlbSBpcyB0aGF0IGByb3V0aW5nLWNvbnRyb2xsZXJzLW9wZW5hcGlgIGNhbid0IHVud3JhcCBnZW5lcmljIHR5cGVzIGxpa2UgUHJvbWlzZTxNeU1vZGVsPiBvciBBcnJheTxNeU1vZGVsPjogc2VlIGUuZy4gW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMTA1NzYpIGZvciBkaXNjdXNzaW9uLiBBcyBhIHdvcmthcm91bmQgeW91IGNhbiB1c2UgdGhlIGBAUmVzcG9uc2VTY2hlbWFgIGRlY29yYXRvciB0byBzdXBwbHkgdGhlIHJlc3BvbnNlIGJvZHkgc2NoZW1hOgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgeyBSZXNwb25zZVNjaGVtYSB9IGZyb20gJ3JvdXRpbmctY29udHJvbGxlcnMtb3BlbmFwaScKCkBKc29uQ29udHJvbGxlcignL3VzZXJzJykKZXhwb3J0IGNsYXNzIFVzZXJzQ29udHJvbGxlciB7CiAgQEdldCgnLzppZCcpCiAgQFJlc3BvbnNlU2NoZW1hKFVzZXIpCiAgZ2V0VXNlcigpIHsKICAgIC8vIC4uLgogIH0KfQpgYGAKCmBAUmVzcG9uc2VTY2hlbWFgIHRha2VzIGFzIGFuIGFyZ3VtZW50IGVpdGhlciBhIGNsYXNzLXZhbGlkYXRvciBjbGFzcyBvciBhIHBsYWluIHN0cmluZyBzY2hlbWEgbmFtZS4gWW91IGNhbiBhbHNvIHN1cHBseSBhbiBvcHRpb25hbCBzZWNvbmRhcnkgYG9wdGlvbnNgIGFyZ3VtZW50OgoKYGBgdHlwZXNjcmlwdAogIEBQb3N0KCcvJykKICBAUmVzcG9uc2VTY2hlbWEoVXNlciwgewogICAgY29udGVudFR5cGU6ICd0ZXh0L2NzdicsCiAgICBkZXNjcmlwdGlvbjogJ0EgbGlzdCBvZiBjcmVhdGVkIHVzZXIgb2JqZWN0cycsCiAgICBpc0FycmF5OiB0cnVlCiAgICBzdGF0dXNDb2RlOiAnMjAxJ30pCiAgY3JlYXRlVXNlcnMoKSB7CiAgICAvLyAuLi4KICB9CmBgYAoKYGNvbnRlbnRUeXBlYCBhbmQgYHN0YXR1c0NvZGVgIGRlZmF1bHQgdG8gcm91dGluZy1jb250cm9sbGVyJ3MgYEBDb250ZW50VHlwZWAgYW5kIGBASHR0cENvZGVgIHZhbHVlcy4gVG8gc3BlY2lmeSBhIHJlc3BvbnNlIHNjaGVtYSBvZiBhbiBhcnJheSwgc2V0IGBvcHRpb25zLmlzQXJyYXlgIGFzIGB0cnVlYC4gWW91IGNhbiBhbHNvIGFubm90YXRlIGEgc2luZ2xlIGhhbmRsZXIgd2l0aCBtdWx0aXBsZSBgUmVzcG9uc2VTY2hlbWFgcyB0byBzcGVjaWZ5IHJlc3BvbnNlcyB3aXRoIGRpZmZlcmVudCBzdGF0dXMgY29kZXMuCgpOb3RlIHRoYXQgd2hlbiB1c2luZyBgQFJlc3BvbnNlU2NoZW1hYCB0b2dldGhlciB3aXRoIGBASlNPTlNjaGVtYWAsIHRoZSBvdXRlciBkZWNvcmF0b3Igd2lsbCBvdmVyd3JpdGUga2V5cyBvZiBpbm5lciBkZWNvcmF0b3JzLiBTbyBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGluZm9ybWF0aW9uIGZyb20gYEBSZXNwb25zZVNjaGVtYWAgd291bGQgYmUgb3ZlcndyaXR0ZW4gYnkgYEBKU09OU2NoZW1hYDoKCmBgYHR5cGVzY3JpcHQKQEpTT05TY2hlbWEoe3Jlc3BvbnNlczogewogICcyMDAnOiB7CiAgICAnY29udGVudCc6IHsKICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7CiAgICAgICAgc2NoZW1hOiB7CiAgICAgICAgICAnJHJlZic6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXQnCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9fSkKQFJlc3BvbnNlU2NoZW1hKFNvbWVSZXNwb25zZU9iamVjdCkKaGFuZGxlcigpIHsgLi4uIH0KYGBgCgojIyMjIE11bHRpcGxlIFJlc3BvbnNlU2NoZW1hcwoKTXVsdGlwbGUgUmVzcG9uc2VTY2hlbWFzIHdpdGggZGlmZmVyZW50IHN0YXR1cyBjb2RlcyBhcmUgc3VwcG9ydGVkIGFzIGZvbGxvd3MuCgpgYGB0eXBlc2NyaXB0CkBSZXNwb25zZVNjaGVtYShSZXNwb25zZTEpCkBSZXNwb25zZVNjaGVtYShSZXNwb25zZTIsIHtzdGF0dXNDb2RlOiAnNDAwJ30pCmBgYAoKSW4gY2FzZSBvZiBtdWx0aXBsZSBSZXNwb25zZVNjaGVtYXMgYmVpbmcgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzYW1lIHN0YXR1cyBjb2RlLCB3ZSByZXNvbHZlIHRoZW0KdXNpbmcgdGhlIFtvbmVPZl0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kYXRhLW1vZGVscy9vbmVvZi1hbnlvZi1hbGxvZi1ub3QvI29uZW9mKSBvcGVyYXRvci4KCmBgYHR5cGVzY3JpcHQKQFJlc3BvbnNlU2NoZW1hKFJlc3BvbnNlMSkKQFJlc3BvbnNlU2NoZW1hKFJlc3BvbnNlMikKYGBgCgp3aWxsIGdlbmVyYXRlCgpgYGBqc29uCiIyMDAiOiB7CiAgImNvbnRlbnQiOiB7CiAgICAiYXBwbGljYXRpb24vanNvbiI6ewogICAgICAic2NoZW1hIjogewogICAgICAgICJvbmVPZiI6IFsKICAgICAgICAgIHskcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvUmVzcG9uc2UxIn0sCiAgICAgICAgICB7JHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzL1Jlc3BvbnNlMiJ9CiAgICAgICAgXQogICAgICB9CiAgICB9CiAgfQp9CmBgYAoKIyMgU3VwcG9ydGVkIGZlYXR1cmVzCgotIGBAQ29udHJvbGxlcmAvYEBKc29uQ29udHJvbGxlcmAgYmFzZSByb3V0ZSBhbmQgZGVmYXVsdCBjb250ZW50LXR5cGUKLSBgb3B0aW9ucy5yb3V0ZVByZWZpeGAKLSBgQEdldGAsIGBAUG9zdGAgYW5kIG90aGVyIGFjdGlvbiBkZWNvcmF0b3JzCi0gUGFyc2UgcGF0aCBwYXJhbWV0ZXJzIHN0cmFpZ2h0IGZyb20gcGF0aCBzdHJpbmdzIGFuZCBvcHRpb25hbGx5IHN1cHBsZW1lbnQgd2l0aCBgQFBhcmFtYCBkZWNvcmF0b3IKICAtIFJlZ2V4IGFuZCBvcHRpb25hbCBwYXRoIHBhcmFtZXRlcnMgKGUuZy4gYC91c2Vycy86aWQoXGQrKS86dHlwZT9gKSBhcmUgYWxzbyBzdXBwb3J0ZWQKLSBgQFF1ZXJ5UGFyYW1gIGFuZCBgQFF1ZXJ5UGFyYW1zYAotIGBASGVhZGVyUGFyYW1gIGFuZCBgQEhlYWRlclBhcmFtc2AKLSBgQEJvZHlgIGFuZCBgQEJvZHlQYXJhbWAKLSBQYXJzZSByZXNwb25zZSBrZXl3b3JkcyBmcm9tIGBASHR0cENvZGVgIGFuZCBgQENvbnRlbnRUeXBlYCB2YWx1ZXMKLSBHbG9iYWwgYG9wdGlvbnMuZGVmYXVsdHMucGFyYW1PcHRpb25zLnJlcXVpcmVkYCBvcHRpb24gYW5kIGxvY2FsIG92ZXJyaWRlIHdpdGggYHtyZXF1aXJlZDogdHJ1ZX1gIGluIGRlY29yYXRvciBwYXJhbXMKLSBQYXJzZSBgc3VtbWFyeWAsIGBvcGVyYXRpb25JZGAgYW5kIGB0YWdzYCBrZXl3b3JkcyBmcm9tIGNvbnRyb2xsZXIvbWV0aG9kIG5hbWVzCgojIyBGdXR1cmUgd29yawoKLSBTdXBwb3J0IGZvciByb3V0aW5nLWNvbnRyb2xsZXIncyBbYXV0aG9yaXphdGlvbiBmZWF0dXJlc10oaHR0cHM6Ly9naXRodWIuY29tL3R5cGVzdGFjay9yb3V0aW5nLWNvbnRyb2xsZXJzI3VzaW5nLWF1dGhvcml6YXRpb24tZmVhdHVyZXMpCgpGZWVsIGZyZWUgdG8gc3VibWl0IGEgUFIhCgojIyBSZWxhdGVkIHByb2plY3RzCgotIEluc3BpcmVkIGJ5IFt0c29hXShodHRwczovL2dpdGh1Yi5jb20vbHVrZWF1dHJ5L3Rzb2EpIGFuZCBbdHJhZmZpY2xpZ2h0XShodHRwczovL2dpdGh1Yi5jb20vc3dpbWxhbmUvdHJhZmZpY2xpZ2h0KQotIEluY2x1ZGUgeW91ciBNb25nb29zZSBtb2RlbHMgaW4gdGhlIHNwZWMgd2l0aCBbbW9uZ29vc2Utc2NoZW1hLWpzb25zY2hlbWFdKGh0dHBzOi8vZ2l0aHViLmNvbS9EU2NoZWdsb3YvbW9uZ29vc2Utc2NoZW1hLWpzb25zY2hlbWEpCi0gR2VuZXJhdGUgSlNPTiBzY2hlbWEgZnJvbSB5b3VyIFR5cGVzY3JpcHQgc291cmNlcyB3aXRoIFt0eXBlc2NyaXB0LWpzb24tc2NoZW1hXShodHRwczovL2dpdGh1Yi5jb20vWW91c2VmRUQvdHlwZXNjcmlwdC1qc29uLXNjaGVtYSkKLSBbb3BlbmFwaTMtdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tZXRhZGV2cHJvL29wZW5hcGkzLXRzLykgcHJvdmlkZXMgaGFuZHkgT3BlbkFQSSB1dGlsaXRpZXMgZm9yIFR5cGVzY3JpcHQKLSBDb252ZXJ0IE9wZW5BUEkgMyBzcGVjIHRvICoqU3dhZ2dlciAyKiogd2l0aCBbYXBpLXNwZWMtY29udmVydGVyXShodHRwczovL2dpdGh1Yi5jb20vTHVjeUJvdC1JbmMvYXBpLXNwZWMtY29udmVydGVyKQotIEdlbmVyYXRlIFR5cGVzY3JpcHQgaW50ZXJmYWNlIGRlZmluaXRpb25zIGZyb20gU1FMIGRhdGFiYXNlIHNjaGVtYSB3aXRoIFtzY2hlbWF0c10oaHR0cHM6Ly9naXRodWIuY29tL1N3ZWV0SVEvc2NoZW1hdHMpCg== readmeEtag: '"4147853ee4d7a12f6b36c044d8039663e340e82c"' readmeLastModified: Sat, 31 Dec 2022 02:24:52 GMT repositoryId: 111706277 description: Runtime OpenAPI v3 schema generation for routing-controllers. created: '2017-11-22T16:13:37Z' updated: '2026-01-19T00:53:56Z' language: TypeScript archived: false stars: 316 watchers: 5 forks: 64 owner: epiphone logo: https://avatars.githubusercontent.com/u/1923531?v=4 license: MIT repoEtag: '"7c976a880dffc147b9e3b6fa2627a2f31fcbf3205e2c3240c8f8749144a187ce"' repoLastModified: Mon, 19 Jan 2026 00:53:56 GMT foundInMaster: true category: Parsers id: 12451687e58e310275a58099d6b7a849 - source: openapi3 tags repository: https://github.com/mermade/openapi-codegen v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJLUNvZGVHZW4KClshW0J1aWxkIHN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL01lcm1hZGUvb3BlbmFwaS1jb2RlZ2VuLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL01lcm1hZGUvb3BlbmFwaS1jb2RlZ2VuKQoKTm9kZS5qcy1iYXNlZCBjb2RlZ2VuIGZvciBPcGVuQVBJIGRvY3VtZW50cy4gVGhpcyBwcm9qZWN0IHdhcyBpbml0aWFsbHkgYSAyNC1ob3VyIGhhY2thdGhvbi4gVGhlIGxvY2FsIG1vZGVsIGFkYXB0b3IgY29kZSBpcyBlbnRpcmVseSBvcmlnaW5hbCBhbmQgaGFzIGJlZW4gcmV2ZXJzZS1lbmdpbmVlcmVkIGZyb20gdGhlIGV4aXN0aW5nIGRvY3VtZW50YXRpb24gYW5kIHRlbXBsYXRlIHVzYWdlLgoKKipXb3JrIGluIHByb2dyZXNzKioKClN1cHBvcnRzIE9wZW5BUEkgMy4wLnggbmF0aXZlbHksIGFuZCBTd2FnZ2VyL09wZW5BUEkgMS4yIGFuZCAyLjAgYnkgaW50ZXJuYWwgY29udmVyc2lvbi4gTm9kZS5qcyBMVFMgdmVyc2lvbnMgYXJlIHN1cHBvcnRlZC4KCiMjIFVzYWdlCgojIyMgSW5zdGFsbGluZwoKYG5wbSBpIC1nIG9wZW5hcGktY29kZWdlbmAKCm9yCgoqIGNsb25lIHRoZSByZXBvc2l0b3J5LCBhbmQKKiBgbnBtIGlgCgpvcgoKYG5weCAtcCBvcGVuYXBpLWNvZGVnZW4gY2cgLi4uYAoKIyMjIENMSQoKYGBgCmNnIFtvcHRpb25zXSB7W3BhdGhdY29uZmlnTmFtZX0ge29wZW5hcGktZGVmaW5pdGlvbn0KCk9wdGlvbnM6CiAgLS1oZWxwICAgICAgICAgICBTaG93IGhlbHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dCiAgLS12ZXJzaW9uICAgICAgICBTaG93IHZlcnNpb24gbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dCiAgLS1maWx0ZXIgICAgICAgICBGaWx0ZXIgdGVybSB0byB1c2Ugd2l0aCAtLWxpc3QgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAgLS1saXN0ICAgICAgICAgICBMaXN0IGF2YWlsYWJsZSB0ZW1wbGF0ZXMgZm9yIHByb3ZpZGVyIChvZyBvciBzYykgICAgIFtzdHJpbmddCiAgLWQsIC0tZGVidWcgICAgICBUdXJuIG9uIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBpbiB0aGUgbW9kZWwgICAgICAgICAgW2Jvb2xlYW5dCiAgLWYsIC0tZmxhdCAgICAgICBEbyBub3QgaW5jbHVkZSBjb25maWctbmFtZSBpbiBvdXRwdXQgZGlyZWN0b3J5IHN0cnVjdHVyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXQogIC1sLCAtLWxpbnQgICAgICAgTGludCBpbnB1dCBkZWZpbml0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXQogIC1vLCAtLW91dHB1dCAgICAgU3BlY2lmeSBvdXRwdXQgZGlyZWN0b3J5ICAgICAgICAgW3N0cmluZ10gW2RlZmF1bHQ6ICIuL291dC8iXQogIC1zLCAtLXN0b29scyAgICAgVXNlIHN3YWdnZXItdG9vbHMgdG8gdmFsaWRhdGUgT3BlbkFQSSAyLjAgZGVmaW5pdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KICAtdCwgLS10ZW1wbGF0ZXMgIFNwZWNpZnkgdGVtcGxhdGVzIGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KICAtdiwgLS12ZXJib3NlICAgIEluY3JlYXNlIHZlcmJvc2l0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KICAteiwgLS16aXAgICAgICAgIENyZWF0ZSBhIC56aXAgZmlsZSBpbnN0ZWFkIG9mIGluZGl2aWR1YWwgZmlsZXMgICAgICBbYm9vbGVhbl0KYGBgCgplLmcuCgpgYGAKbm9kZSBjZyAtLXZlcmJvc2Ugbm9kZWpzIGRlZnMvZ2VuZXJhdG9yLnlhbWwKYGBgCgpJbiB0aGlzIGNhc2UsIHRoZSBnZW5lcmF0ZWQgY29kZSB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIGAub3V0L25vZGVqc2AgZGlyZWN0b3J5LgoKWW91IGNhbiBhbHNvIGxvYWQgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbiBmcm9tIGEgVVJMLgoKIyMjIEFQSQoKYGBgamF2YXNjcmlwdApjb25zdCByZW5kZXJlciA9IHJlcXVpcmUoJ29wZW5hcGktY29kZWdlbicpOwovLyBsb2FkIGEgY29uZmlnIGFuZCBhIGRlZmluaXRpb24KcmVuZGVyZXIubWFpbihkZWZpbml0aW9uLGNvbmZpZyxjb25maWdOYW1lKTsKYGBgCgojIyBUZW1wbGF0ZXMKClRoZSBsb2NhbCB0ZW1wbGF0ZXMgd2VyZSB0YWtlbiBkaXJlY3RseSBmcm9tIGBzd2FnZ2VyLWNvZGVnZW5gLiBUaGlzIHByb2plY3QgaXMgYWxzbyBsaWNlbnNlZCB1bmRlciBbQXBhY2hlLTIuMF0oTElDRU5TRSkgZm9yIHRoaXMgcmVhc29uLiBHZW5lcmF0ZWQgY29kZSBpcyBleHBsaWNpdGx5IGNvdmVyZWQgYnkgdGhlIFtVbmxpY2Vuc2VdKHRlbXBsYXRlcy9fY29tbW9uL1VOTElDRU5TRSkuIENvZGUgdG8gZG93bmNvbnZlcnQgT3BlbkFQSSAzLjAgZGVmaW5pdGlvbnMgaXMgdGFrZW4gZnJvbSBbQW5ndWxhci1Td2FnZ2VyLVVJXShodHRwczovL2dpdGh1Yi5jb20vT3JhbmdlLU9wZW5Tb3VyY2UvYW5ndWxhci1zd2FnZ2VyLXVpKSBhbmQgaXMgTUlUIGxpY2Vuc2VkLgoKWW91IGNhbiBhbHNvIHVzZSB0aGUgbGF0ZXN0IG9ubGluZSB0ZW1wbGF0ZXMgZnJvbSB0d28gcHJvdmlkZXJzOiBgb2dgIChbb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpKSBhbmQgYHNjYCAoW3N3YWdnZXItY29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikpLiBUaGUgYC0tbGlzdGAgYW5kIGAtLWZpbHRlcmAgb3B0aW9ucyBhbGxvdyB5b3UgdG8gc2VlIHdoaWNoIHRlbXBsYXRlcyBhcmUgYXZhaWxhYmxlLiBOb3RlIHRoYXQgdXNpbmcgdGhlIG9ubGluZSB0ZW1wbGF0ZXMgaW52b2x2ZXMgc2VuZGluZyB5b3VyIEFQSSBkZWZpbml0aW9uIHRvIGEgcmVtb3RlIHNlcnZlci4KCiMjIyBDb250cmlidXRvcnMKClNlZSBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbiN0ZW1wbGF0ZS1jcmVhdG9yKSBmb3IgYSBwYXJ0aWFsIGxpc3Qgb2YgdGVtcGxhdGUgY29udHJpYnV0b3JzLgoKIyMjIFN0YXR1cyBvZiB0aGUgdGVtcGxhdGUgY29uZmlndXJhdGlvbnMKClRoZSBsb2NhbCB0ZW1wbGF0ZXMgd2l0aCBhIHN0YXR1cyBoYXZlIGEgd29ya2luZyAoaWYgbm90IG5lY2Vzc2FyaWx5IHRlc3RlZCkgY29uZmlndXJhdGlvbiBpbiB0aGUgKipjb25maWdzKiogZGlyZWN0b3J5LiBDb250cmlidXRpb25zIGFyZSB3ZWxjb21lZCBmcm9tIHRoZSBjb21tdW5pdHkgb2YgbmV3IGFuZCB1cGRhdGVkIGNvbmZpZ3VyYXRpb25zIGFuZCB0ZW1wbGF0ZSB1cGRhdGVzLgoKPGRldGFpbHM+CjxzdW1tYXJ5PkNsaWNrIGhlcmUgdG8gZXhwYW5kLi4uPC9zdW1tYXJ5PgoKfFRlbXBsYXRlfFR5cGV8U3RhdHVzfFJFQURNRXxBdXRob3JzIChUT0RPKXxDb25maWcgTWFpbnRhaW5lcnwKfC0tLXwtLS18LS0tfC0tLXwtLS18LS0tfAp8KipcX2NvbW1vbioqfG1ldGF8ICpjb250YWlucyBBcGFjaGUtMi4wIGFuZCBVbmxpY2Vuc2UgbGljZW5zZXMqfHwKfCoqQWRhKip8Y2xpZW50fCoqVW50ZXN0ZWQqKgp8YWtrYS1zY2FsYXx8CnxhbmRyb2lkfHwKfCoqYXBhY2hlMioqfGNvbmZpZ3VyYXRpb258KipuZWVkcyB3b3JrKip8fAp8YXBleHx8Cnxhc3BuZXRjb3JlfHwKfCoqYmFzaCoqfGNsaWVudHwqKlN5bnRheCBvaywgbmVlZHMgdGVzdGluZyoqfHxAYmtyeXphfEBNaWtlUmFscGhzb24KfCoqY2xvanVyZSoqfGNsaWVudHwqKlVudGVzdGVkKip8CnwqKmNvZGVnZW4qKnxtZXRhfCoqRGVtbyBvbmx5Kip8fHxATWlrZVJhbHBoc29uCnwqKmNvbmZsdWVuY2VXaWtpRG9jcyoqfGRvY3VtZW50YXRpb258KipUZXN0ZWQqKiB3aXRoIERvY2tlciBbc2VydmVyXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvYXRsYXNzaWFuL2NvbmZsdWVuY2Utc2VydmVyLyl8fAp8Y3BwcmVzdHx8Cnxjc2hhcnB8fAp8Kipjc2hhcnAtZG90bmV0MioqfGNsaWVudHwqKlVudGVzdGVkKip8fAp8ZGFydHx8CnwqKmRlYnVnKip8bWV0YXwqdXNlZCBmb3IgZHVtcGluZyB0aGUgbW9kZWwgc3RhdGUqfHxATWVybWFkZXxATWlrZVJhbHBoc29uCnxFaWZmZWx8fAp8ZWxpeGlyfHwKfCoqZXJsYW5nLWNsaWVudCoqfGNsaWVudHwqKlVudGVzdGVkKip8fAp8ZXJsYW5nLXNlcnZlcnxzZXJ2ZXJ8CnxmaW5jaHx8CnxmbGFzaHx8CnwqKmZsYXNrQ29ubmV4aW9uKip8c2VydmVyfCoqTmVlZHMgdGVzdGluZyoqfHwKfCoqZ28qKnxjbGllbnR8KipCdWlsZHMsIG5lZWRzIHRlc3RpbmcqKnx8CnwqKmdvLXNlcnZlcioqfHNlcnZlcnwqKkJ1aWxkcyBhbmQgcnVucyoqfHwKfCoqR3Jvb3Z5Kip8P3wqKnVudGVzdGVkKip8fAp8aGFza2VsbC1odHRwLWNsaWVudHxjbGllbnR8fHx8CnwqKmhhc2tlbGwtc2VydmFudCoqfHNlcnZlcnwqKlVudGVzdGVkKip8fAp8KipodG1sRG9jcyoqfGRvY3VtZW50YXRpb258KkFwcGVhcnMgdG8gd29yayp8fAp8KipodG1sRG9jczIqKnxkb2N1bWVudGF0aW9ufCpBcHBlYXJzIHRvIHdvcmssIG5vIGNvbnNvbGUgZXJyb3JzIGxvZ2dlZCp8fAp8SmF2YXx8CnxKYXZhSW5mbGVjdG9yfHwKfEphdmFKYXhSU3x8CnxKYXZhUGxheUZyYW1ld29ya3x8CnwqKkphdmFzY3JpcHQqKnxjbGllbnR8KipVbnRlc3RlZCoqfHwKfCoqSmF2YXNjcmlwdC1DbG9zdXJlLUFuZ3VsYXIqKnxjbGllbnR8KipVbnRlc3RlZCoqCnxKYXZhU3ByaW5nfHwKfEphdmFWZXJ0WFNlcnZlcnx8CnwqKkpNZXRlcioqfG1ldGF8KipVbnRlc3RlZCoqfHwKfGtvdGxpbi1jbGllbnR8fAp8KipsdWEqKnxjbGllbnR8KipDb21waWxlcyBPSyoqfAp8bHVtZW58fAp8TVNGNEp8fAp8bmFuY3lmeHx8CnwqKm5vZGVqcyoqfHNlcnZlcnwqKnRlc3RlZCoqIDp3aGl0ZV9jaGVja19tYXJrOnx8QGpmaWFsYXxATWlrZVJhbHBoc29ufAp8b2JqY3x8CnwqKm9wZW5hcGkqKnxtZXRhfCpvdXRwdXRzIHRoZSBpbnB1dCBkZWZpbml0aW9uIChpbiBPcGVuQVBJIDMuMC54IGZvcm0pKiA6d2hpdGVfY2hlY2tfbWFyazp8fEBNZXJtYWRlfEBNaWtlUmFscGhzb24KfHBlcmx8fAp8cGhwfHwKfCoqcGhwLXNpbGV4Kip8P3wqKnVudGVzdGVkKip8fAp8cGhwLXN5bWZvbnl8fAp8cGlzdGFjaGUtc2VydmVyfHwKfHBvd2Vyc2hlbGx8fAp8KipweXRob24qKnxjbGllbnR8KipuZWVkcyB0ZXN0aW5nKip8fHxAbXBub3JkbGFuZAp8cXQ1Y3BwfHwKfHJ8fAp8cmFpbHM1fHwKfCoqcmVzdGJlZCoqfHNlcnZlcnwqKlVudGVzdGVkKip8fAp8cnVieXx8CnxydXN0fHwKfHJ1c3Qtc2VydmVyfHwKfHNjYWxhfHwKfHNjYWxhdHJhfHwKfHNjYWxhenxjbGllbnR8KipVbnRlc3RlZCoqfHwKfCoqc2luYXRyYSoqfHNlcnZlcnwqKlN5bnRheCBjaGVja3MgT0sqKnx8CnwqKnNsaW0qKnxzZXJ2ZXJ8KipVbnRlc3RlZCoqfHwKfCoqc3dhZ2dlcioqfG1ldGF8Km91dHB1dHMgdGhlIGlucHV0IGRlZmluaXRpb24gKGluIG9yaWdpbmFsIGZvcm0gaWYgT3BlbkFQSSAyLjApKiA6d2hpdGVfY2hlY2tfbWFyazp8fAp8Kipzd2FnZ2VyLXN0YXRpYyoqfGRvY3VtZW50YXRpb258Kip0ZXN0ZWQqKiAqdGVtcGxhdGUgbW9kaWZpZWQgdG8gaW5jbHVkZSBwYXJ0aWFscyp8fAp8c3dpZnR8fAp8c3dpZnQzfHwKfHN3aWZ0NHx8Cnx0aXplbnx8Cnx0eXBlc2NyaXB0LWFuZ3VsYXJ8fAp8dHlwZXNjcmlwdC1hbmd1bGFyanN8fAp8Kip0eXBlc2NyaXB0LWF4aW9zKip8Y2xpZW50fCoqdGVzdGVkKip8fGphcmVkcGFsbWVyfAp8dHlwZXNjcmlwdC1hdXJlbGlhfHwKfCoqdHlwZXNjcmlwdC1mZXRjaCoqfGNsaWVudHwqKmNvbXBpbGVzIHdpdGggdHNjIG9rKip8fAp8dHlwZXNjcmlwdC1qcXVlcnl8fAp8Kip0eXBlc2NyaXB0LW5vZGUqKnxjbGllbnR8Kipjb21waWxlcyB3aXRoIHRzYyBvayoqfHwKfHVuZGVydG93fHwKfCoqdmFsaWRhdG9yKip8bWV0YXwqdXNlcyBzd2FnZ2VyMm9wZW5hcGkncyBPcGVuQVBJIDMuMCB2YWxpZGF0b3IgaW50ZXJuYWxseSogOndoaXRlX2NoZWNrX21hcms6fHwKfHplLXBofAoKIyMjIE5ldyBUZW1wbGF0ZXMKClRoZXNlIHRlbXBsYXRlcyBhcmUgZXhhbXBsZXMgb2YgaG93IGZlYXR1cmVzIG9mIE9wZW5BUEkgQ29kZWdlbiBtYXkgYmUgdXNlZCwgYW5kIGJlc3QtcHJhY3RpY2VzIGluIG5hbWluZyBtb2RlbCBwcm9wZXJ0aWVzLgoKfFRlbXBsYXRlfFR5cGV8U3RhdHVzfFJFQURNRXxBdXRob3JzfENvbmZpZyBNYWludGFpbmVyfAp8LS0tfC0tLXwtLS18LS0tfC0tLXwtLS18Cnx0ZXN0aW5nLmRyZWRkfHRlc3Rpbmd8KipJbiBwcm9ncmVzcyoqfFtSRUFETUVdKHRlbXBsYXRlcy90ZXN0aW5nLmRyZWRkL1JFQURNRS5tZC5tdXN0YWNoZSl8QE1lcm1hZGV8QE1pa2VSYWxwaHNvbnwKPC9kZXRhaWxzPgoKIyMgRG9jdW1lbnRhdGlvbgoKKiBbU2VlIGhlcmVdKGRvY3MvUkVBRE1FLm1kKSAtIGNvbnRyaWJ1dGlvbnMgd2VsY29tZQoK readmeEtag: '"ac4bc8812e541e929b3c48cb72ba2966a552431e"' readmeLastModified: Tue, 24 Aug 2021 07:54:24 GMT repositoryId: 110697603 description: OpenAPI 3.0 CodeGen plus Node.js minus the Java and emojis created: '2017-11-14T14:02:19Z' updated: '2025-12-13T13:01:53Z' language: JavaScript archived: false stars: 295 watchers: 10 forks: 46 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: Apache-2.0 repoEtag: '"0a5b0fbcf5db2d45a13996da67b307fa193316437a640c8463a833979755d740"' repoLastModified: Sat, 13 Dec 2025 13:01:53 GMT foundInMaster: true category: Converters id: a5af66e79d95d6e1b9baa57668630864 - source: openapi3 tags repository: https://github.com/abersheeran/kui v3: true id: 74491e84e078ac54aa398a58a3cd5462 repositoryMetadata: base64Readme: >- IyBLdcOtCgpbIVtQeVBJIC0gUHl0aG9uIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL2t1aT9sYWJlbD1TdXBwb3J0JTIwUHl0aG9uJTIwVmVyc2lvbiZzdHlsZT1mbGF0LXNxdWFyZSldKGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9rdWkvKQoKQW4gZWFzeS10by11c2Ugd2ViIGZyYW1ld29yay4gQmFzZWQgb24gW2JhaXplXShodHRwczovL2JhaXplLmFiZXIuc2gpIGFuZCBbcHlkYW50aWNdKGh0dHBzOi8vZG9jcy5weWRhbnRpYy5kZXYvKS4KCiMjIEluc3RhbGwKCmBgYApwaXAgaW5zdGFsbCBrdWkKYGBgCg== readmeEtag: '"599cea9f9be5c132bbf0375e94034edd8053d815"' readmeLastModified: Wed, 31 Jul 2024 06:07:28 GMT repositoryId: 191898408 description: >- An easy-to-use web framework. Supports both WSGI and ASGI modes. Gevent or asyncio, this is the question. created: '2019-06-14T07:39:36Z' updated: '2025-12-31T19:53:57Z' language: Python archived: false stars: 299 watchers: 6 forks: 24 owner: abersheeran logo: https://avatars.githubusercontent.com/u/25364828?v=4 license: Apache-2.0 repoEtag: '"d916ad4a5a8b8f12872e8d58c5941f02bb506fde031540616d83e46db84e7316"' repoLastModified: Wed, 31 Dec 2025 19:53:57 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/index-py/index.py - source: openapi3 tags name: openapi-go homepage: https://github.com/swaggest/openapi-go language: Go source_description: Type-safe OpenAPI 3.x bindings and generator from code category: - Low-level Tooling - Parsers repository: https://github.com/swaggest/openapi-go v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIHN0cnVjdHVyZXMgZm9yIEdvCgo8aW1nIGFsaWduPSJyaWdodCIgd2lkdGg9IjI1MHB4IiBzcmM9Ii9yZXNvdXJjZXMvbG9nby5wbmciPgoKVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIEdvIHN0cnVjdHVyZXMgdG8gbWFyc2hhbC91bm1hcnNoYWwgYW5kIHJlZmxlY3QgW09wZW5BUEkgU2NoZW1hXShodHRwczovL3N3YWdnZXIuaW8vcmVzb3VyY2VzL29wZW4tYXBpLykgZG9jdW1lbnRzLgoKRm9yIGF1dG9tYXRlZCBIVFRQIFJFU1Qgc2VydmljZSBmcmFtZXdvcmsgYnVpbHQgd2l0aCB0aGlzIGxpYnJhcnkgcGxlYXNlIGNoZWNrIFtgZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0YF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L3Jlc3QpLgoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3Qvb3BlbmFwaS1nby93b3JrZmxvd3MvdGVzdC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3Qvb3BlbmFwaS1nby9hY3Rpb25zP3F1ZXJ5PWJyYW5jaCUzQW1hc3Rlcit3b3JrZmxvdyUzQXRlc3QpClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb2RlY292LmlvL2doL3N3YWdnZXN0L29wZW5hcGktZ28vYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvc3dhZ2dlc3Qvb3BlbmFwaS1nbykKWyFbR29EZXZEb2NdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGV2LWRvYy0wMEFERDg/bG9nbz1nbyldKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L29wZW5hcGktZ28pClshW3RpbWUgdHJhY2tlcl0oaHR0cHM6Ly93YWthdGltZS5jb20vYmFkZ2UvZ2l0aHViL3N3YWdnZXN0L29wZW5hcGktZ28uc3ZnKV0oaHR0cHM6Ly93YWthdGltZS5jb20vYmFkZ2UvZ2l0aHViL3N3YWdnZXN0L29wZW5hcGktZ28pCiFbQ29kZSBsaW5lc10oaHR0cHM6Ly9zbG9jLnh5ei9naXRodWIvc3dhZ2dlc3Qvb3BlbmFwaS1nby8/Y2F0ZWdvcnk9Y29kZSkKIVtDb21tZW50c10oaHR0cHM6Ly9zbG9jLnh5ei9naXRodWIvc3dhZ2dlc3Qvb3BlbmFwaS1nby8/Y2F0ZWdvcnk9Y29tbWVudHMpCgojIyBGZWF0dXJlcwoKKiBUeXBlIHNhZmUgbWFwcGluZyBvZiBPcGVuQVBJIDMgZG9jdW1lbnRzIHdpdGggR28gc3RydWN0dXJlcyBnZW5lcmF0ZWQgZnJvbSBzY2hlbWEuCiogVHlwZS1iYXNlZCByZWZsZWN0aW9uIG9mIEdvIHN0cnVjdHVyZXMgdG8gT3BlbkFQSSAzLjAgb3IgMy4xIHNjaGVtYS4KKiBTY2hlbWEgY29udHJvbCB3aXRoIGZpZWxkIHRhZ3MKICAgICogYGpzb25gIGZvciByZXF1ZXN0IGJvZGllcyBhbmQgcmVzcG9uc2VzIGluIEpTT04KICAgICogYHF1ZXJ5YCwgYHBhdGhgIGZvciBwYXJhbWV0ZXJzIGluIFVSTAogICAgKiBgaGVhZGVyYCwgYGNvb2tpZWAsIGBmb3JtRGF0YWAsIGBmaWxlYCBmb3Igb3RoZXIgcGFyYW1ldGVycwogICAgKiBgZm9ybWAgYWN0cyBhcyBgcXVlcnlgIGFuZCBgZm9ybURhdGFgCiAgICAqIGBjb250ZW50VHlwZWAgaW5kaWNhdGVzIGJvZHkgY29udGVudCB0eXBlCiAgICAqIFtmaWVsZCB0YWdzXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyNmaWVsZC10YWdzKSBuYW1lZCBhZnRlciBKU09OIFNjaGVtYS9PcGVuQVBJIDMgU2NoZW1hIGNvbnN0cmFpbnRzCiAgICAqIGBjb2xsZWN0aW9uRm9ybWF0YCB0byB1bnBhY2sgc2xpY2VzIGZyb20gc3RyaW5nCiAgICAgICAgKiBgY3N2YCBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzLAogICAgICAgICogYHNzdmAgc3BhY2Utc2VwYXJhdGVkIHZhbHVlcywKICAgICAgICAqIGBwaXBlc2AgcGlwZS1zZXBhcmF0ZWQgdmFsdWVzIChgfGApLAogICAgICAgICogYG11bHRpYCBhbXBlcnNhbmQtc2VwYXJhdGVkIHZhbHVlcyAoYCZgKSwKICAgICAgICAqIGBqc29uYCBhZGRpdGlvbmFsbHkgdG8gc2xpY2VzIHVucGFja3MgbWFwcyBhbmQgc3RydWN0cywKKiBGbGV4aWJsZSBzY2hlbWEgY29udHJvbCB3aXRoIFtganNvbnNjaGVtYS1nb2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9qc29uc2NoZW1hLWdvI2ltcGxlbWVudGluZy1pbnRlcmZhY2VzLW9uLWEtdHlwZSkKCiMjIEV4YW1wbGUKCltPdGhlciBleGFtcGxlc10oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3Qvb3BlbmFwaS1nby9vcGVuYXBpMyNwa2ctZXhhbXBsZXMpLgoKYGBgZ28KcmVmbGVjdG9yIDo9IG9wZW5hcGkzLlJlZmxlY3Rvcnt9CnJlZmxlY3Rvci5TcGVjID0gJm9wZW5hcGkzLlNwZWN7T3BlbmFwaTogIjMuMC4zIn0KcmVmbGVjdG9yLlNwZWMuSW5mby4KICAgIFdpdGhUaXRsZSgiVGhpbmdzIEFQSSIpLgogICAgV2l0aFZlcnNpb24oIjEuMi4zIikuCiAgICBXaXRoRGVzY3JpcHRpb24oIlB1dCBzb21ldGhpbmcgaGVyZSIpCgp0eXBlIHJlcSBzdHJ1Y3QgewogICAgSUQgICAgIHN0cmluZyBgcGF0aDoiaWQiIGV4YW1wbGU6IlhYWC1YWFhYWCJgCiAgICBMb2NhbGUgc3RyaW5nIGBxdWVyeToibG9jYWxlIiBwYXR0ZXJuOiJeW2Etel17Mn0tW0EtWl17Mn0kImAKICAgIFRpdGxlICBzdHJpbmcgYGpzb246InN0cmluZyJgCiAgICBBbW91bnQgdWludCAgIGBqc29uOiJhbW91bnQiYAogICAgSXRlbXMgIFtdc3RydWN0IHsKICAgICAgICBDb3VudCB1aW50ICAgYGpzb246ImNvdW50ImAKICAgICAgICBOYW1lICBzdHJpbmcgYGpzb246Im5hbWUiYAogICAgfSBganNvbjoiaXRlbXMiYAp9Cgp0eXBlIHJlc3Agc3RydWN0IHsKICAgIElEICAgICBzdHJpbmcgYGpzb246ImlkIiBleGFtcGxlOiJYWFgtWFhYWFgiYAogICAgQW1vdW50IHVpbnQgICBganNvbjoiYW1vdW50ImAKICAgIEl0ZW1zICBbXXN0cnVjdCB7CiAgICAgICAgQ291bnQgdWludCAgIGBqc29uOiJjb3VudCJgCiAgICAgICAgTmFtZSAgc3RyaW5nIGBqc29uOiJuYW1lImAKICAgIH0gYGpzb246Iml0ZW1zImAKICAgIFVwZGF0ZWRBdCB0aW1lLlRpbWUgYGpzb246InVwZGF0ZWRfYXQiYAp9CgpwdXRPcCwgZXJyIDo9IHJlZmxlY3Rvci5OZXdPcGVyYXRpb25Db250ZXh0KGh0dHAuTWV0aG9kUHV0LCAiL3RoaW5ncy97aWR9IikKaGFuZGxlRXJyb3IoZXJyKQoKcHV0T3AuQWRkUmVxU3RydWN0dXJlKG5ldyhyZXEpKQpwdXRPcC5BZGRSZXNwU3RydWN0dXJlKG5ldyhyZXNwKSwgZnVuYyhjdSAqb3BlbmFwaS5Db250ZW50VW5pdCkgeyBjdS5IVFRQU3RhdHVzID0gaHR0cC5TdGF0dXNPSyB9KQpwdXRPcC5BZGRSZXNwU3RydWN0dXJlKG5ldyhbXXJlc3ApLCBmdW5jKGN1ICpvcGVuYXBpLkNvbnRlbnRVbml0KSB7IGN1LkhUVFBTdGF0dXMgPSBodHRwLlN0YXR1c0NvbmZsaWN0IH0pCgpyZWZsZWN0b3IuQWRkT3BlcmF0aW9uKHB1dE9wKQoKZ2V0T3AsIGVyciA6PSByZWZsZWN0b3IuTmV3T3BlcmF0aW9uQ29udGV4dChodHRwLk1ldGhvZEdldCwgIi90aGluZ3Mve2lkfSIpCmhhbmRsZUVycm9yKGVycikKCmdldE9wLkFkZFJlcVN0cnVjdHVyZShuZXcocmVxKSkKZ2V0T3AuQWRkUmVzcFN0cnVjdHVyZShuZXcocmVzcCksIGZ1bmMoY3UgKm9wZW5hcGkuQ29udGVudFVuaXQpIHsgY3UuSFRUUFN0YXR1cyA9IGh0dHAuU3RhdHVzT0sgfSkKCnJlZmxlY3Rvci5BZGRPcGVyYXRpb24oZ2V0T3ApCgpzY2hlbWEsIGVyciA6PSByZWZsZWN0b3IuU3BlYy5NYXJzaGFsWUFNTCgpCmlmIGVyciAhPSBuaWwgewogICAgbG9nLkZhdGFsKGVycikKfQoKZm10LlByaW50bG4oc3RyaW5nKHNjaGVtYSkpCmBgYAoKT3V0cHV0OgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMwppbmZvOgogIGRlc2NyaXB0aW9uOiBQdXQgc29tZXRoaW5nIGhlcmUKICB0aXRsZTogVGhpbmdzIEFQSQogIHZlcnNpb246IDEuMi4zCnBhdGhzOgogIC90aGluZ3Mve2lkfToKICAgIGdldDoKICAgICAgcGFyYW1ldGVyczoKICAgICAgLSBpbjogcXVlcnkKICAgICAgICBuYW1lOiBsb2NhbGUKICAgICAgICBzY2hlbWE6CiAgICAgICAgICBwYXR0ZXJuOiBeW2Etel17Mn0tW0EtWl17Mn0kCiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgLSBpbjogcGF0aAogICAgICAgIG5hbWU6IGlkCiAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICBzY2hlbWE6CiAgICAgICAgICBleGFtcGxlOiBYWFgtWFhYWFgKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICByZXNwb25zZXM6CiAgICAgICAgIjIwMCI6CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9SZXNwJwogICAgICAgICAgZGVzY3JpcHRpb246IE9LCiAgICBwdXQ6CiAgICAgIHBhcmFtZXRlcnM6CiAgICAgIC0gaW46IHF1ZXJ5CiAgICAgICAgbmFtZTogbG9jYWxlCiAgICAgICAgc2NoZW1hOgogICAgICAgICAgcGF0dGVybjogXlthLXpdezJ9LVtBLVpdezJ9JAogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgIC0gaW46IHBhdGgKICAgICAgICBuYW1lOiBpZAogICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgc2NoZW1hOgogICAgICAgICAgZXhhbXBsZTogWFhYLVhYWFhYCiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgcmVxdWVzdEJvZHk6CiAgICAgICAgY29udGVudDoKICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUmVxJwogICAgICByZXNwb25zZXM6CiAgICAgICAgIjIwMCI6CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9SZXNwJwogICAgICAgICAgZGVzY3JpcHRpb246IE9LCiAgICAgICAgIjQwOSI6CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUmVzcCcKICAgICAgICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICBkZXNjcmlwdGlvbjogQ29uZmxpY3QKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgUmVxOgogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGFtb3VudDoKICAgICAgICAgIG1pbmltdW06IDAKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICBpdGVtczoKICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgIGNvdW50OgogICAgICAgICAgICAgICAgbWluaW11bTogMAogICAgICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgICAgIG5hbWU6CiAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICBudWxsYWJsZTogdHJ1ZQogICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICBzdHJpbmc6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgdHlwZTogb2JqZWN0CiAgICBSZXNwOgogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGFtb3VudDoKICAgICAgICAgIG1pbmltdW06IDAKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICBpZDoKICAgICAgICAgIGV4YW1wbGU6IFhYWC1YWFhYWAogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgaXRlbXM6CiAgICAgICAgICBpdGVtczoKICAgICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgICBjb3VudDoKICAgICAgICAgICAgICAgIG1pbmltdW06IDAKICAgICAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgICAgICBuYW1lOgogICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgbnVsbGFibGU6IHRydWUKICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgdXBkYXRlZF9hdDoKICAgICAgICAgIGZvcm1hdDogZGF0ZS10aW1lCiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgdHlwZTogb2JqZWN0CmBgYAo= readmeEtag: '"23d334cceadd247d93908fbe4cce6a854899fe5e"' readmeLastModified: Fri, 14 Feb 2025 23:19:57 GMT repositoryId: 232207964 description: OpenAPI structures for Go created: '2020-01-07T00:07:41Z' updated: '2026-01-14T19:55:18Z' language: Go archived: false stars: 340 watchers: 4 forks: 31 owner: swaggest logo: https://avatars.githubusercontent.com/u/19609628?v=4 license: MIT repoEtag: '"82a2ffe76bac57a6aad1ee3574699da381d9d032542bff5976c6da96c331d168"' repoLastModified: Wed, 14 Jan 2026 19:55:18 GMT foundInMaster: true id: 042e78fafa5f6cb0dbca01c64778ab3f - source: openapi3 tags repository: https://github.com/swagger-api/swagger-petstore v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIFBldHN0b3JlIFNhbXBsZQoKIyMgT3ZlcnZpZXcKVGhpcyBpcyB0aGUgcGV0IHN0b3JlIHNhbXBsZSBob3N0ZWQgYXQgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby4gRm9yIG90aGVyIHZlcnNpb25zLCBjaGVjayB0aGUgYnJhbmNoZXMuCldlIHdlbGNvbWUgc3VnZ2VzdGlvbiBib3RoIHRoZSBjb2RlIGFuZCB0aGUgQVBJIGRlc2lnbi4KVG8gbWFrZSBjaGFuZ2VzIHRvIHRoZSBkZXNpZ24gaXRzZWxmLCB0YWtlIGEgbG9vayBhdCBodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1wZXRzdG9yZS9ibG9iL21hc3Rlci9zcmMvbWFpbi9yZXNvdXJjZXMvb3BlbmFwaS55YW1sLgoKVGhpcyBpcyBhIGphdmEgcHJvamVjdCB0byBidWlsZCBhIHN0YW5kLWFsb25lIHNlcnZlciB3aGljaCBpbXBsZW1lbnRzIHRoZSBPcGVuQVBJIDMgU3BlYy4gIFlvdSBjYW4gZmluZCBvdXQKbW9yZSBhYm91dCBib3RoIHRoZSBzcGVjIGFuZCB0aGUgZnJhbWV3b3JrIGF0IGh0dHA6Ly9zd2FnZ2VyLmlvLgoKVGhpcyBzYW1wbGUgaXMgYmFzZWQgb24gW3N3YWdnZXItaW5mbGVjdG9yXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1pbmZsZWN0b3IpLCBhbmQgcHJvdmlkZXMgYW4gZXhhbXBsZSBvZiBzd2FnZ2VyIC8gT3BlbkFQSSAzIHBldHN0b3JlLgoKIyMjIFRvIHJ1biAod2l0aCBNYXZlbikKVG8gcnVuIHRoZSBzZXJ2ZXIsIHJ1biB0aGlzIHRhc2s6CgpgYGAKbXZuIHBhY2thZ2UgamV0dHk6cnVuCmBgYAoKVGhpcyB3aWxsIHN0YXJ0IEpldHR5IGVtYmVkZGVkIG9uIHBvcnQgODA4MC4KCiMjIyBUbyBydW4gKHZpYSBEb2NrZXIpCgpFeHBvc2UgcG9ydCA4MDgwIGZyb20gdGhlIGltYWdlIGFuZCBhY2Nlc3MgcGV0c3RvcmUgdmlhIHRoZSBleHBvc2VkIHBvcnQuIFlvdSBjYW4gdGhlbiBhZGQgYW5kIGRlbGV0ZSBwZXRzIGFzIHlvdSBzZWUgZml0LgoKCipFeGFtcGxlKjoKCmBgYApkb2NrZXIgYnVpbGQgLXQgc3dhZ2dlcmFwaS9wZXRzdG9yZTM6dW5zdGFibGUgLgpgYGAKCmBgYApkb2NrZXIgcHVsbCBzd2FnZ2VyYXBpL3BldHN0b3JlMzp1bnN0YWJsZQpkb2NrZXIgcnVuICAtLW5hbWUgc3dhZ2dlcmFwaS1wZXRzdG9yZTMgLWQgLXAgODA4MDo4MDgwIHN3YWdnZXJhcGkvcGV0c3RvcmUzOnVuc3RhYmxlCmBgYAoKCiMjIyBUZXN0aW5nIHRoZSBzZXJ2ZXIKT25jZSBzdGFydGVkLCB5b3UgY2FuIG5hdmlnYXRlIHRvIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvdjMvb3BlbmFwaS5qc29uIHRvIHZpZXcgdGhlIFN3YWdnZXIgUmVzb3VyY2UgTGlzdGluZy4KVGhpcyB0ZWxscyB5b3UgdGhhdCB0aGUgc2VydmVyIGlzIHVwIGFuZCByZWFkeSB0byBkZW1vbnN0cmF0ZSBTd2FnZ2VyLgoKIyMjIFVzaW5nIHRoZSBVSQpUaGVyZSBpcyBhbiBIVE1MNS1iYXNlZCBBUEkgdG9vbCBidW5kbGVkIGluIHRoaXMgc2FtcGxlLS15b3UgY2FuIHZpZXcgaXQgaXQgYXQgW2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MF0oaHR0cDovL2xvY2FsaG9zdDo4MDgwKS4gVGhpcyBsZXRzIHlvdSBpbnNwZWN0IHRoZSBBUEkgdXNpbmcgYW4gaW50ZXJhY3RpdmUgVUkuICBZb3UgY2FuIGFjY2VzcyB0aGUgc291cmNlIG9mIHRoaXMgY29kZSBmcm9tIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aSkK readmeEtag: '"e5785f36018cb57032061dd4aa947a0f4a9cefea"' readmeLastModified: Tue, 19 Mar 2024 10:08:17 GMT repositoryId: 206982975 description: null created: '2019-09-07T14:54:31Z' updated: '2026-01-23T22:29:42Z' language: Java archived: false stars: 315 watchers: 11 forks: 420 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 repoEtag: '"e3bca214de93bd8f30227b115a2e20f6d702cffcd3026b03dc8f89d780bb4a9b"' repoLastModified: Fri, 23 Jan 2026 22:29:42 GMT foundInMaster: true category: - Code Generators - Server Implementations id: 627140381c10e9bd5f0466dbf6f3b01d - source: openapi3 tags repository: https://github.com/fsprojects/swaggerprovider v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyUHJvdmlkZXIKClshW051R2V0IFZlcnNpb25dKGh0dHBzOi8vYmFkZ2VuLm5ldC9udWdldC92L1N3YWdnZXJQcm92aWRlcildKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9Td2FnZ2VyUHJvdmlkZXIpIFshW051R2V0IERvd25sb2Fkc10oaHR0cHM6Ly9iYWRnZW4ubmV0L251Z2V0L2R0L1N3YWdnZXJQcm92aWRlcildKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9Td2FnZ2VyUHJvdmlkZXIpCgpUaGlzIFN3YWdnZXJQcm92aWRlciBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgUkVTVGZ1bCBBUEkgZ2VuZXJhdGVkIHVzaW5nIFtTd2FnZ2VyLmlvXShodHRwOi8vc3dhZ2dlci5pbykKCkRvY3VtZW50YXRpb246IDxodHRwOi8vZnNwcm9qZWN0cy5naXRodWIuaW8vU3dhZ2dlclByb3ZpZGVyLz4KCioqU2VjdXJpdHk6KiogU1NSRiBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gRm9yIGxvY2FsIGRldmVsb3BtZW50LCB1c2Ugc3RhdGljIHBhcmFtZXRlciBgU3NyZlByb3RlY3Rpb249ZmFsc2VgLgoKIyMgU3dhZ2dlciBSRVNUZnVsIEFQSSBEb2N1bWVudGF0aW9uIFNwZWNpZmljYXRpb24KClN3YWdnZXIgaXMgYXZhaWxhYmxlIGZvciBBU1AuTkVUIFdlYkFQSSBBUElzIHdpdGggW1N3YXNoYnVja2xlXShodHRwczovL2dpdGh1Yi5jb20vZG9tYWluZHJpdmVuZGV2L1N3YXNoYnVja2xlKS4KQWxzbyBwb3NzaWJsZSB0byBbQ3JlYXRlIGFuIEFTUC5ORVQgQVBJIGFwcCBpbiBBenVyZSBBcHAgU2VydmljZV0oaHR0cHM6Ly9henVyZS5taWNyb3NvZnQuY29tL2VuLXVzL2RvY3VtZW50YXRpb24vYXJ0aWNsZXMvYXBwLXNlcnZpY2UtZG90bmV0LWNyZWF0ZS1hcGktYXBwLykKCiMjIE1haW50YWluZXIocykKCi0gW0BzZXJnZXktdGlob25dKGh0dHBzOi8vZ2l0aHViLmNvbS9zZXJnZXktdGlob24pCgpUaGUgZGVmYXVsdCBtYWludGFpbmVyIGFjY291bnQgZm9yIHByb2plY3RzIHVuZGVyICJmc3Byb2plY3RzIiBpcyBAZnNwcm9qZWN0c2dpdCAtIEYjIENvbW11bml0eSBQcm9qZWN0IEluY3ViYXRpb24gU3BhY2UgKHJlcG8gbWFuYWdlbWVudCkK readmeEtag: '"fc242745c9a4651d8002dabaa1a3509c567387b6"' readmeLastModified: Wed, 24 Dec 2025 19:07:36 GMT repositoryId: 32864387 description: F# generative Type Provider for Swagger created: '2015-03-25T12:54:10Z' updated: '2026-02-01T13:59:58Z' language: F# archived: false stars: 271 watchers: 10 forks: 60 owner: fsprojects logo: https://avatars.githubusercontent.com/u/6001315?v=4 license: Unlicense repoEtag: '"6bc07ffc7146b99a42b8f33a20901a3c4db8acbb19235629624e8bd0afbf69e8"' repoLastModified: Sun, 01 Feb 2026 13:59:58 GMT foundInMaster: true category: SDK id: f1cc73d13ad58d7db2b0a9fb9428dbc3 - source: openapi3 tags repository: https://github.com/testingisdocumenting/znai v3: true repositoryMetadata: base64Readme: >- IyBEaXNjb3JkIFNlcnZlcgoKSm9pbiBgVGVzdGluZyBJcyBEb2N1bWVudGluZ2AgW0Rpc2NvcmQgU2VydmVyXShodHRwczovL2Rpc2NvcmQuZ2cvYUVIYnpYVFg2TikgdG8gYXNrIHF1ZXN0aW9ucyBhbmQgZGlzY3VzcyBmZWF0dXJlcy9idWdzCgojIFpuYWkKCkJ1aWxkIGZ1bmN0aW9uYWwsIG1haW50YWluYWJsZSwgYmVhdXRpZnVsIFVzZXIgR3VpZGVzIHdpdGggYFpuYWlgLgoKKiBNYXJrZG93biB3aXRoIGN1c3RvbSBleHRlbnNpb25zIGFuZCBkb3plbnMgb2YgcGx1Z2luczogCiAgKiBDb250ZW50IGZyb20gZXh0ZXJuYWwgZmlsZXMgd2l0aCBtYXJrZXJzIGFuZCBmaWx0ZXJzIHN1cHBvcnQKICAqIFNpbXBsaWZpZWQgZXh0cmFjdGlvbiBvZiBhIGZ1bmN0aW9uIGJvZHkgY29udGVudCAod29ya2luZyB3aXRoIGV4YW1wbGVzKSAKICAqIEVtYmVkZGluZyBvZiBKYXZhRG9jL1B5RG9jIGRvY3VtZW50YXRpb24gdGV4dCwgcHJlc2VydmluZyBzdHlsZXMKICAqIEJlYXV0aWZ1bCBBUEkgZG9jdW1lbnRhdGlvbiBjYXBhYmlsaXRpZXMgIAogICogVHdvIFNpZGVzIFBhZ2UgTGF5b3V0IE9wdGlvbiB3aXRoIGNvbnZlbmllbnQgZXhhbXBsZSBsYW5ndWFnZXMgc3dpdGNoIAogICogUmljaCB2aXN1YWxzIGxpa2UgZmxvdyBkaWFncmFtcywgY2hhcnRzIGFuZCBjYXJkcwogICogZXRjCiogSW5zdGFudCBwYWdlcyBuYXZpZ2F0aW9uIAoqIExvY2FsIHNlYXJjaAoqIE11bHRpcGxlIGludGVncmF0aW9ucyB0byB3b3JrIHdpdGggUHl0aG9uLCBKYXZhLCBPcGVuQVBJLCBldGMKKiBQcmVzZW50YXRpb24gTW9kZSB0byBhdXRvbWF0aWNhbGx5IHR1cm4geW91ciBkb2N1bWVudGF0aW9uIGludG8gc2xpZGVzLCB1c2luZyB0aGUgc2FtZSBjb250ZW50CiogRGFyay9MaWdodCBydW50aW1lIHRoZW1lcwoqIExldmVyYWdlIGF1dG9tYXRlZCB0ZXN0IHJlc3VsdHMgdG8gZW5yaWNoIHlvdXIgZG9jdW1lbnRhdGlvbiB3aXRoIGFubm90YXRlZCBpbWFnZXMsIFJFU1QgcmVzcG9uc2VzLCBDTEkgb3V0cHV0cywgZXRjCiogR2l0SHViIHBhZ2VzIGZyaWVuZGx5CgohW2dlbmVyYXRlZCBzaXRlIGV4YW1wbGVdKHpuYWktZG9jcy9yZWFkbWUvem5haS1vdmVydmlldy5wbmcpCgpFbWJlZGRpbmcgb2YgW0V4dGVybmFsIFJlc291cmNlc10oaHR0cHM6Ly90ZXN0aW5naXNkb2N1bWVudGluZy5vcmcvem5haS9zbmlwcGV0cy9leHRlcm5hbC1jb2RlLXNuaXBwZXRzKSBhdCBidWlsZCB0aW1lCgohW2dlbmVyYXRlZCBzaXRlIGV4YW1wbGUgb2YgZXh0ZXJuYWwgY29kZV0oem5haS1kb2NzL3JlYWRtZS96bmFpLWV4dGVybmFsLWNvZGUucG5nKQoKUmljaCBWaXN1YWxzIHN1Y2ggYXMgW0NoYXJ0c10oaHR0cHM6Ly90ZXN0aW5naXNkb2N1bWVudGluZy5vcmcvem5haS92aXN1YWxzL2NoYXJ0cyksCltGbG93IERpYWdyYW1zXShodHRwczovL3Rlc3Rpbmdpc2RvY3VtZW50aW5nLm9yZy96bmFpL3Zpc3VhbHMvZmxvdy1kaWFncmFtcykgYW5kCltDYXJkc10oaHR0cHM6Ly90ZXN0aW5naXNkb2N1bWVudGluZy5vcmcvem5haS92aXN1YWxzL2NhcmRzKQoKIVtnZW5lcmF0ZWQgc2l0ZSBleGFtcGxlIG9mIGNoYXJ0c10oem5haS1kb2NzL3JlYWRtZS96bmFpLWNoYXJ0cy5wbmcpCgpEYXJrL0xpZ2h0IG1vZGUgc3dpdGNoaW5nIAoKIVtnZW5lcmF0ZWQgc2l0ZSBleGFtcGxlIG9mIGZsb3cgZGlhZ3JhbV0oem5haS1kb2NzL3JlYWRtZS96bmFpLWZsb3ctZGlhZ3JhbS5wbmcpCgpDYXJkcyBzdXBwb3J0CgohW2dlbmVyYXRlZCBzaXRlIGV4YW1wbGUgb2YgY2FyZHNdKHpuYWktZG9jcy9yZWFkbWUvem5haS1jYXJkcy5wbmcpCgpCZWF1dGlmdWwgd2F5IHRvIGRvY3VtZW50IHlvdXIgQVBJIAoKIVtnZW5lcmF0ZWQgc2l0ZSBleGFtcGxlIG9mIGFwaSBwYXJhbXNdKHpuYWktZG9jcy9yZWFkbWUvem5haS1hcGktcGFyYW1ldGVycy5wbmcpCgpVc2UgW3R3byBzaWRlc10oaHR0cHM6Ly90ZXN0aW5naXNkb2N1bWVudGluZy5vcmcvem5haS9sYXlvdXQvdHdvLXNpZGVzLXRhYnMpIGxheW91dCBvcHRpb24gdG8gcmVuZGVyIGV4YW1wbGVzIGFuZCBzdXBwb3J0aW5nIGluZm9ybWF0aW9uIHNpZGUgYnkgc2lkZQp3aXRoIGNvbnZlbmllbnQgZXhhbXBsZXMgbGFuZ3VhZ2Ugc3dpdGNoCgohW2dlbmVyYXRlZCBzaXRlIGV4YW1wbGUgb2YgdHdvIHNpZGVzIGxheW91dF0oem5haS1kb2NzL3JlYWRtZS96bmFpLXR3by1zaWRlcy10YWJzLnBuZykKCkJsYXppbmcgZmFzdCBsb2NhbCBzZWFyY2ggd2l0aCByZXN1bHRzIHByZXZpZXcKCiFbZ2VuZXJhdGVkIHNpdGUgZXhhbXBsZSBvZiBzZWFyY2hdKHpuYWktZG9jcy9yZWFkbWUvem5haS1zZWFyY2gucG5nKQoKQXV0b21hdGljIFByZXNlbnRhdGlvbiBmcm9tICoqdGhlIHNhbWUgY29udGVudCoqIHdpdGggemVybyBjb25maWcKCiFbZ2VuZXJhdGVkIHNpdGUgZXhhbXBsZSBvZiBwcmVzZW50YXRpb24gbW9kZV0oem5haS1kb2NzL3JlYWRtZS96bmFpLXByZXNlbnRhdGlvbi5wbmcpCgojIFByZXZpZXcKCmBabmFpYCBoYXMgYSBwcmV2aWV3IG1vZGUgdG8gYXV0b21hdGljYWxseSBsaXN0ZW4gdG8gbG9jYWwgZmlsZXMgY2hhbmdlcy4gSXQgYXV0b21hdGljYWxseSBuYXZpZ2F0ZXMgdG8gYSBwYWdlIHRoYXQgd2FzIApjaGFuZ2VkIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBhbmQgaGlnaGxpZ2h0cyB0aGUgY2hhbmdlcy4KCiMgRG9jcyBIdWIKCmBabmFpYCBoYXMgYSBmcmVlLCBvcGVuLXNvdXJjZSBlbnRlcnByaXNlIHN1cHBvcnQuIFlvdSBjYW4gaG9zdCBtdWx0aXBsZSBkb2N1bWVudGF0aW9ucyB1c2luZyBzaW5nbGUgc2l0ZS4gSXQgcHJvdmlkZXMKbGFuZGluZyBwYWdlIHRvIGxpc3QgYWxsIHRoZSBjb21wYW55IGlubmVyIGd1aWRlcy4gCgpJdCBhbHNvIGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyBkb2N1bWVudGF0aW9ucyBpbiB0aGUgYnVpbGRzIG91dHB1dHMgYW5kIHVwZGF0ZXMgaG9zdGVkIGRvY3VtZW50YXRpb25zLgoKRXhhbXBsZXMgKGluY2x1ZGluZyB1c2luZyBHb29nbGUgQ2xvdWQpIGFuZCBzZXR1cCBkb2N1bWVudGF0aW9uIGFyZSBjb21pbmcuIFBsZWFzZSBjcmVhdGUgYSBHaXRIdWIgaXNzdWUgaWYgeW91IHdhbnQKdG8gbGVhcm4gbW9yZSBhYm91dCBFbnRlcnByaXNlIHNldHVwLiBJdCB3aWxsIGhlbHAgbWUgcHJpb3JpdGl6ZS4gIAoKIyBSZWFkIE1vcmUKCltabmFpIGRvY3VtZW50YXRpb24gd2Vic2l0ZSBidWlsdCB3aXRoIFpuYWldKGh0dHBzOi8vdGVzdGluZ2lzZG9jdW1lbnRpbmcub3JnL3puYWkvKQoKRm9yIGN1cmlvcywgem5haSB3b3JkIG1lYW5pbmc6IGB6bmFpYCBpcyBhIGB0byBrbm93YCBpbiBVa3JhbmlhbiBhbmQgaXMgYSBwcmVmaXggZm9yIHdvcmRzIGxpa2UgYGtub3dlbGRnZWAgYXJlIGJ1aWx0IG9uLgoKIyBEZXZlbG9wZXJzIFNldHVwCgpbTG9jYWwgQnVpbGRdKGh0dHBzOi8vdGVzdGluZ2lzZG9jdW1lbnRpbmcub3JnL3puYWkvem5haS1kZXZlbG9wbWVudC9sb2NhbC1idWlsZCkK readmeEtag: '"c3f0053680453328de1144f3e127dc430a6acfee"' readmeLastModified: Wed, 10 Jul 2024 02:13:15 GMT repositoryId: 76669415 description: >- Build functional, maintainable, beautiful User Guides with markdown and Znai plugins. Instant pages navigation. Local search. Multiple integrations to work with Python, Java, C++, OpenAPI, etc. Transform "getting started" sections into slideshow for your workshops. Manage multiple documentations with self-deployed znai hub. created: '2016-12-16T16:42:12Z' updated: '2026-02-03T15:56:36Z' language: Java archived: false stars: 275 watchers: 9 forks: 18 owner: testingisdocumenting logo: https://avatars.githubusercontent.com/u/54154955?v=4 license: Apache-2.0 repoEtag: '"d72bb6dc6cd65f4f526458e58b2ad10b1ad94396c640a168979b89a6244e0a6e"' repoLastModified: Tue, 03 Feb 2026 15:56:36 GMT foundInMaster: true category: Documentation id: e96c15d0478cd8c861932cf44e659757 - source: openapi3 tags repository: https://github.com/apibrew/apibrew v3: true id: 7ed00c333f0718c955cbaca68ff2b139 repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CjxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYXBpYnJldy9hcGlicmV3L21hc3Rlci9zdGF0aWMvQXBpQnJldyUyMExvZ28uc3ZnI2doLWxpZ2h0LW1vZGUtb25seSI+CjxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYXBpYnJldy9hcGlicmV3L21hc3Rlci9zdGF0aWMvQXBpQnJldyUyMExvZ28tZGFyay5zdmcjZ2gtZGFyay1tb2RlLW9ubHkiPgo8L3A+CgojIEFwaSBCcmV3ICAgIC0gICAgaHR0cHM6Ly9hcGlicmV3LmlvClshW2J1aWxkXShodHRwczovL2dpdGh1Yi5jb20vYXBpYnJldy9hcGlicmV3L2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbC9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlicmV3L2FwaWJyZXcvYWN0aW9ucy93b3JrZmxvd3MvYnVpbGQueW1sKQpbIVtHbyBSZXBvcnQgQ2FyZF0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vYXBpYnJldy9hcGlicmV3KV0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL2FwaWJyZXcvYXBpYnJldykKWyFbR28gUmVmZXJlbmNlXShodHRwczovL3BrZy5nby5kZXYvYmFkZ2UvZ2l0aHViLmNvbS9hcGlicmV3L2FwaWJyZXcuc3ZnKV0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vYXBpYnJldy9hcGlicmV3KQpbIVtEb2NrZXIgUHVsbHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3B1bGxzL3Rpc2xpYi9hcGlicmV3KV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL3Rpc2xpYi9hcGlicmV3KQpbIVtEb2NrZXIgSW1hZ2UgU2l6ZSAobGF0ZXN0IGJ5IGRhdGUpXShodHRwczovL2ltZy5zaGllbGRzLmlvL2RvY2tlci9pbWFnZS1zaXplL3Rpc2xpYi9hcGlicmV3KV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL3Rpc2xpYi9hcGlicmV3KQohW0dpdEh1YiByZWxlYXNlIChsYXRlc3QgYnkgZGF0ZSldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3YvcmVsZWFzZS9hcGlicmV3L2FwaWJyZXcpCiFbR2l0SHViXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL2FwaWJyZXcvYXBpYnJldykKCkRvY3M6IGh0dHBzOi8vYXBpYnJldy5pby9kb2NzL2dldHRpbmctc3RhcnRlZAoKTmFubyBDb2RlIFJlcG9zaXRvcnk6IGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlicmV3L2FwaWJyZXcvbW9kdWxlcy9uYW5vCgpHZXR0aW5nIFN0YXJ0ZWQgVmlkZW86IGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9NmlKNXFDVWJkZ3MKCgojIyBJbnRyb2R1Y3Rpb24KCioqRXZlcnl0aGluZyBpcyBhICpSZXNvdXJjZSoqKi4gQW5kICoqRXZlcnl0aGluZyBoYXMgYSAqQ1JVRCBBUEkqKioKCldpdGggQVBJIEJyZXcsIHlvdSBjYW4gY3JlYXRlIENSVUQgQVBJcyBmb3IgeW91ciBkYXRhIGluIGEgZmV3IG1pbnV0ZXMKCiMjIyBSdW4geW91ciBpbnN0YW5jZQoKYGBgc2hlbGwKZG9ja2VyIHJ1biAtdiAkKHB3ZCkvZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEgLXAgOTAwOTo5MDA5IHRpc2xpYi9hcGlicmV3OmZ1bGwtbGF0ZXN0CmBgYAoKWW91ciBpbnN0YW5jZSBpcyByZWFkeTogU3dhZ2dlciBkb2NzOiBodHRwOi8vbG9jYWxob3N0OjkwMDkvZG9jcy9zd2FnZ2VyCgojIyMgQ3JlYXRlIGZpcnN0IHJlc291cmNlCgpDb25maWd1cmUgQXBiciBjbGk6IGh0dHBzOi8vYXBpYnJldy5pby9kb2NzL2NsaQoKY291bnRyeS55bWwKYGBgeWFtbAp0eXBlOiByZXNvdXJjZQpuYW1lOiBCb29rCnByb3BlcnRpZXM6CiAgdGl0bGU6CiAgICB0eXBlOiBTVFJJTkcKICAgIHVuaXF1ZTogdHJ1ZQogICAgcmVxdWlyZWQ6IHRydWUKICBkZXNjcmlwdGlvbjoKICAgIHR5cGU6IFNUUklORwpgYGAKCmBgYGJhc2gKYXBiciBhcHBseSAtZiBjb3VudHJ5LnltbApgYGAKU28geW91IGFyZSByZWFkeSwgeW91IGhhdmUgZnVsbHkgZXN0YWJsaXNoZWQgUmVzdCBBUEkgZm9yIGJvb2sgcmVzb3VyY2UKCjxpbWcgc3JjPSJodHRwczovL2FwaWJyZXcuaW8vZmlsZXMvYm9vay1zd2FnZ2VyLnBuZyIgd2lkdGg9IjMwMCIvPgoKWW91IGNhbiBidWlsZCBlbnRpcmUgYXBwbGljYXRpb24gd2l0aCByZXNvdXJjZXMgYW5kIHJlZmVyZW5jZXMgYmV0d2VlbiB0aGVtIChsaWtlIHJlbGF0aW9ucyBpbiByZWxhdGlvbmFsIGRhdGFiYXNlcykKCiMjIyBDaGFuZ2UgaXRzIGJlaGF2aW91ciB3aXRoIHBvd2VyIG9mIG5hbm8gY29kZQoKRXZlcnl0aGluZyBjYW4gYmUgd3JpdHRlbiBieSByZXNvdXJjZXMsIG5vdD8KKipMZXQncyBleHRlbmQgb3VyIEJvb2sgcmVzb3VyY2Ugd2l0aCBoZWxwIG9mIG5hbm8gY29kZSoqCgpCb29rTG9naWMuanMKYGBgamF2YXNjcmlwdApjb25zdCBib29rID0gcmVzb3VyY2UoJ0Jvb2snKQoKYm9vay5iZWZvcmVDcmVhdGUoKGJvb2spID0+IHsKICBpZiAoIWJvb2suZGVzY3JpcHRpb24pIHsKICAgIGJvb2suZGVzY3JpcHRpb24gPSAnTm8gZGVzY3JpcHRpb24nCiAgfQp9KTsKYGBgCmBgYGJhc2gKYXBiciBkZXBsb3kgLWYgQm9va0xvZ2ljLmpzIC0tb3ZlcnJpZGUKYGBgCgpTZWUgdGhlIGRvY3MgZm9yIG5hbm86IGh0dHBzOi8vYXBpYnJldy5pby9kb2NzL25hbm8KClNvIHdlIGhhdmUgZXh0ZW5kZWQgb3VyIGJvb2sgcmVzb3VyY2Ugd2l0aCBoZWxwIG9mIG5hbm8gY29kZQoKU28sIHdpdGggKipBUEkgQnJldyoqLCB5b3UgY2FuIGNyZWF0ZSB5b3VyIGFwcGxpY2F0aW9uIHdpdGggcmVzb3VyY2VzIGFuZCB5b3UgY2FuIGN1c3RvbWl6ZSBiZWhhdmlvciBvZiB5b3VyIHJlc291cmNlcyB3aXRoIGV4dGVuc2lvbnMKCiMjIEFib3V0CkFQSSBCcmV3IGlzIGEgKipMb3cgQ29kZSBzb2Z0d2FyZSoqIHRoYXQgYWxsb3dzIHRvIGNyZWF0ZSB2YXJpb3VzIEdycGMgYW5kIFJlc3QgQVBJcyBmcm9tIHZhcmlvdXMgZGF0YWJhc2UgcGxhdGZvcm1zCgojIyBGZWF0dXJlcwoKKiAqKipEZWNsYXJhdGl2ZSoqKiAtICpBUEkgQnJldyogaXMgZGVjbGFyYXRpdmUuIFlvdSBjYW4gZGVmaW5lIHlvdXIgc2NoZW1hIGluIGEgZGVjbGFyYXRpdmUgd2F5LCBpdCB3aWxsIGNyZWF0ZSB5b3VyIEFQSXMKKiAqKipMb3cgQ29kZSoqKiAtIFdpdGggQVBJIEJyZXcsIHlvdSBjYW4gY3JlYXRlIEFQSXMgZm9yIHlvdXIgZGF0YSB3aXRob3V0IGNvZGluZy4gQnV0IHlvdSBjYW4gYWxzbyBleHRlbmQgeW91ciBBUElzIHdpdGgKICBleHRlbnNpb25zLCBzbyB5b3UgY2FuIGN1c3RvbWl6ZSBiZWhhdmlvciBvZiB5b3VyIFJlc291cmNlcy9BcGlzCiogKioqUmVzdCBBUEkqKiogLSBBcyB5b3UgY3JlYXRlIHJlc291cmNlcywgUmVzdCBBcGlzIGZvciB0aGVtIGlzIG1hZGUgYXV0b21hdGljYWxseQoqICoqKkdycGMqKiogLSBBcyB5b3UgY3JlYXRlIHJlc291cmNlcywgR3JwYyBBcGlzIGZvciB0aGVtIGlzIG1hZGUgYXV0b21hdGljYWxseQoqICoqKkRhdGFiYXNlIGFnbm9zdGljKioqIC0gQVBJIEJyZXcgaXMgdXNpbmcgUG9zdGdyZXNxbCBkYXRhYmFzZSBieSBkZWZhdWx0LCBidXQgaXQgYWxzbyBzdXBwb3J0cyB2YXJpb3VzIGRhdGFiYXNlcy4gSW5jbHVkaW5nIE1vbmdvLCBNeXNxbCwgUmVkaXMsIGV0Yy4KKiAqKipDUlVEKioqIC0gQ3J1ZCBpcyBvbiB0aGUgaGVhcnQgb2YgQVBJIEJyZXcuCiogKioqU3dhZ2dlcioqKiAtIFN3YWdnZXIgZG9jcyBhcmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkKKiAqKipBdXRoZW50aWNhdGlvbioqKiAtIEFQSSBCcmV3IHN1cHBvcnRzIHZhcmlvdXMgYXV0aGVudGljYXRpb24gbWV0aG9kcy4gSW5jbHVkaW5nIEpXVCBhdXRoZW50aWNhdGlvbiBldGMuCiogKioqQXV0aG9yaXphdGlvbioqKiAtIEFQSSBCcmV3IHN1cHBvcnRzIGF1dGhvcml6YXRpb24uIFlvdSBjYW4gZGVmaW5lIHBlcm1pc3Npb25zIGZvciB5b3VyIHJlc291cmNlcwoqICoqKk11bHRpIERhdGFiYXNlKioqIC0gWW91IGNhbiBkZWZpbmUgbXVsdGlwbGUgZGF0YWJhc2VzIGFuZCBkbyBvcGVyYXRpb25zIG9uIHRvcCBvZiB0aGVtCiogKioqU2NhbGFibGUqKiogLSBBUEkgQnJldyBpcyBzY2FsYWJsZS4gWW91IGNhbiBydW4gaXQgb24gbXVsdGlwbGUgaW5zdGFuY2VzLCBhbmQgaXQgd2lsbCB3b3JrIGFzIGV4cGVjdGVkLCBhcyBBUEkgQnJldyBkb2VzIG5vdCBoYXZlIGFueSBkYXRhIGludGVybmFsbHksIHlvdSBjYW4gc2NhbGUgaXQuCiogKioqRXh0ZW5zaWJsZSoqKiAtIEFQSSBCcmV3IGlzIGV4dGVuc2libGUuIFlvdSBjYW4gZXh0ZW5kIHlvdXIgcmVzb3VyY2VzIHdpdGggZXh0ZW5zaW9ucy4gWW91IGNhbiBhbHNvIGV4dGVuZCB5b3VyIEFQSXMgd2l0aCBleHRlbnNpb25zCiogKioqQ0xJIHN1cHBvcnQqKiogLSBBUEkgQnJldyBoYXMgYSBjbGkgdG9vbCB0byBtYW5hZ2UgeW91ciByZXNvdXJjZXMsIGRhdGFTb3VyY2VzLCBldGMuIEl0IGlzIGNhbGxlZCBgYXBicmAKKiAqKipEb2NrZXIqKiogLSBBUEkgQnJldyBpcyBkb2NrZXJpemVkLiBZb3UgY2FuIHJ1biBpdCBvbiBkb2NrZXIKKiAqKipEb2NrZXIgQ29tcG9zZSoqKiAtIEFQSSBCcmV3IGlzIGRvY2tlci1jb21wb3NlIHJlYWR5LiBZb3UgY2FuIHJ1biBpdCBvbiBkb2NrZXItY29tcG9zZQoqICoqKkt1YmVybmV0ZXMqKiogLSBBUEkgQnJldyBpcyBrdWJlcm5ldGVzIHJlYWR5LiBZb3UgY2FuIHJ1biBpdCBvbiBrdWJlcm5ldGVzCgojIyBVc2UgQ2FzZXMKCiogQ3JlYXRpbmcgYmFja2VuZCBmb3IgeW91ciBtb2JpbGUgYXBwbGljYXRpb24gb3Igd2Vic2l0ZQoqIENyZWF0aW5nIGJhY2tlbmQgZm9yIHlvdXIgZXhpc3RpbmcgZGF0YWJhc2UKKiBNYW5hZ2luZyB5b3VyIGRhdGEgaW4gYSBDUlVEIGZhc2hpb24KKiBDcmVhdGluZyBTdGFuZGFyZGl6ZWQsIHdlbGwgZG9jdW1lbnRlZCBBUElzIGZvciB5b3VyIGRhdGEK readmeEtag: '"84c352cdc7641ef48c579a8a49fd1a3f8d14cfc1"' readmeLastModified: Wed, 07 May 2025 20:49:03 GMT repositoryId: 591665560 description: APIBrew is Low code software to automate building CRUDs from yaml files created: '2023-01-21T13:22:13Z' updated: '2025-12-23T01:05:25Z' language: Go archived: false stars: 252 watchers: 3 forks: 8 owner: apibrew logo: https://avatars.githubusercontent.com/u/132176743?v=4 license: MIT repoEtag: '"2096005d5b58c1b0f6f7611fe4ae3f53caedd39582cb20d9c7ed5d012bad1bc4"' repoLastModified: Tue, 23 Dec 2025 01:05:25 GMT category: Server Implementations oldLocations: - https://github.com/tislib/apibrew foundInMaster: true - source: openapi3 tags repository: https://github.com/speakeasy-api/speakeasy v3: true id: b04ab57cb5fd068ea45591850bba85fc repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnNwZWFrZWFzeS5jb20vIiB0YXJnZXQ9Il9ibGFuayI+CiAgPGltZyB3aWR0aD0iMTUwMCIgaGVpZ2h0PSI1MDAiIGFsdD0iU3BlYWtlYXN5IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8wZTU2MDU1Yi0wMmEzLTQ0NzYtOTEzMC00YmUyOTllNWEzOWMiIC8+CiA8L2E+CiA8YnIgLz4KIDxiciAvPgogIDxkaXY+CiAgIDxhIGhyZWY9Imh0dHBzOi8vc3BlYWtlYXN5LmNvbS9kb2NzL2NyZWF0ZS1jbGllbnQtc2Rrcy8iIHRhcmdldD0iX2JsYW5rIj48Yj5Eb2NzIFF1aWNrc3RhcnQ8L2I+PC9hPiZuYnNwOyZuYnNwOy8vJm5ic3A7Jm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly9nby5zcGVha2Vhc3kuY29tL3NsYWNrIiB0YXJnZXQ9Il9ibGFuayI+PGI+Sm9pbiB1cyBvbiBTbGFjazwvYj48L2E+CiAgPC9kaXY+CiA8YnIgLz4KCiA8YnIgLz4KClshW0xXMjQgcGFydGljaXBhbnRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZmVhdHVyZWQtTFcyNC04OTU3RTUuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmxhYmVsQ29sb3I9MEQxMTE3JmxvZ289ZGF0YTppbWFnZS9zdmclMmJ4bWw7YmFzZTY0LFBITjJaeUIzYVdSMGFEMGlNell3SWlCb1pXbG5hSFE5SWpNMk1DSWdkbWxsZDBKdmVEMGlNQ0F3SURNMk1DQXpOakFpSUdacGJHdzlJbTV2Ym1VaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJK0lEeHlaV04wSUhkcFpIUm9QU0kyTUNJZ2FHVnBaMmgwUFNJek1EQWlJR1pwYkd3OUluZG9hWFJsSWk4K0lEeHlaV04wSUhnOUlqWXdJaUI1UFNJek1EQWlJSGRwWkhSb1BTSXhNakFpSUdobGFXZG9kRDBpTmpBaUlHWnBiR3c5SW5kb2FYUmxJaTgrSUR4eVpXTjBJSGc5SWpJME1DSWdlVDBpTXpBd0lpQjNhV1IwYUQwaU5qQWlJR2hsYVdkb2REMGlOakFpSUdacGJHdzlJbmRvYVhSbElpOCtJRHh5WldOMElIZzlJak13TUNJZ2QybGtkR2c5SWpZd0lpQm9aV2xuYUhROUlqTXdNQ0lnWm1sc2JEMGlkMmhwZEdVaUx6NGdQSEpsWTNRZ2VEMGlNVGd3SWlCM2FXUjBhRDBpTmpBaUlHaGxhV2RvZEQwaU16QXdJaUJtYVd4c1BTSjNhR2wwWlNJdlBpQThMM04yWno0PSldKGh0dHBzOi8vbGF1bmNod2Vlay5kZXYvbHcvMjAyNC9tZWdhI3BhcnRpY2lwYW50cykKICAKPC9kaXY+Cgo8aHIgLz4KPGJyIC8+CjxkaXYgYWxpZ249ImxlZnQiPgogIDxoND48Yj5UcnVzdGVkIEJ5OjwvYj48L2g0PgogIDxoND4KICAgPHA+CiAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWlzdHJhbGFpL2NsaWVudC1weXRob24iIHRhcmdldD0iX2JsYW5rIj4KICAgICA8cGljdHVyZT4KICAgICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2JjYTE5NjAzLTBhMTgtNDQyNS04ZDBlLWFhYmM4MTg0OWU3NCI+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2E1Y2RlNDY1LThiZTQtNDg2NS1iMWQzLTAzMjIyY2RlYTBhMSI+CiAgICAgIDxpbWcgaGVpZ2h0PSI0NHB4IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy9iY2ExOTYwMy0wYTE4LTQ0MjUtOGQwZS1hYWJjODE4NDllNzQjZ2gtbGlnaHQtbW9kZS1vbmx5IiBhbHQ9Ik1pc3RyYWwiPgogICAgIDwvcGljdHVyZT4KICAgIDwvYT4KICAgICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOwogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9zZGsiIHRhcmdldD0iX2JsYW5rIj4KICAgICA8cGljdHVyZT4KICAgICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzlmNDk5NDY4LWQ2NzktNDNkNi05YTRjLWJiNmQ4MzkxZWJlYiI+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzdkMWI5N2VkLTIyZDgtNGRmZi1iYWM1LTY2ZmU1ZGVhZDJmZSI+CiAgICAgIDxpbWcgaGVpZ2h0PSI0NHB4IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy85ZjQ5OTQ2OC1kNjc5LTQzZDYtOWE0Yy1iYjZkODM5MWViZWIjZ2gtbGlnaHQtbW9kZS1vbmx5IiBhbHQ9IlZlcmNlbCI+CiAgICAgPC9waWN0dXJlPgogICAgIDwvYT4KICAgICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOwogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dsZWFud29yay9hcGktY2xpZW50LXB5dGhvbiIgdGFyZ2V0PSJfYmxhbmsiPgogICAgIDxwaWN0dXJlPgogICAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KSIgc3Jjc2V0PSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvNzlkYjZmNTUtNzA2MS00MWM1LTliYTAtZGQ2NmVlZDg2NzQzIj4KICAgICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvYTBmMDg1MmYtYTQ5MS00NTBiLTkxODMtOTRhZDZmNzdkYTNjIj4KICAgICAgPGltZyBoZWlnaHQ9IjQ0cHgiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzc5ZGI2ZjU1LTcwNjEtNDFjNS05YmEwLWRkNjZlZWQ4Njc0MyNnaC1saWdodC1tb2RlLW9ubHkiIGFsdD0iR2xlYW4iPgogICAgIDwvcGljdHVyZT4KICAgIDwvYT4KICAgICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOwogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NsZXJrL2NsZXJrLXNkay1weXRob24iIHRhcmdldD0iX2JsYW5rIj4KICAgICA8cGljdHVyZT4KICAgICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2NjNDJkZjQ4LWU1NGEtNGMyYi1iYjU0LTgzMDMzYTgwNmUzOCI+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2RjNGVlOTBmLTdhNDgtNGQ3Yy1hYmUwLWZkMzQ3YWRkZjc4NSI+CiAgICAgIDxpbWcgaGVpZ2h0PSI0NHB4IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy9jYzQyZGY0OC1lNTRhLTRjMmItYmI1NC04MzAzM2E4MDZlMzgjZ2gtbGlnaHQtbW9kZS1vbmx5IiBhbHQ9IkNsZXJrIj4KICAgICA8L3BpY3R1cmU+CiAgICA8L2E+CiAgICAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsKICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuUm91dGVyVGVhbS90eXBlc2NyaXB0LXNkayIgdGFyZ2V0PSJfYmxhbmsiPgogICAgIDxwaWN0dXJlPgogICAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KSIgc3Jjc2V0PSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvZDdkYjk5ZGYtNzg4Mi00ODFmLTkzZTItNTBlN2FjZjUxYjkyIj4KICAgICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvMWI2M2JlYzMtYmQwNy00MWQyLTk3YzctNzBlOWYzYmIxZmI1Ij4KICAgICAgPGltZyBoZWlnaHQ9IjQ0cHgiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2Q3ZGI5OWRmLTc4ODItNDgxZi05M2UyLTUwZTdhY2Y1MWI5MiNnaC1saWdodC1tb2RlLW9ubHkiIGFsdD0iT3BlblJvdXRlciI+CiAgICAgPC9waWN0dXJlPgogICAgPC9hPgoKICAgICAgCiAgIDwvcD4KICAgIDxhIGhyZWY9Imh0dHBzOi8vc3BlYWtlYXN5LmNvbS9jdXN0b21lcnMiPjxwPgogICAgICBGdWxsIHNob3djYXNlIOKGkgogICAgPC9wPjwvYT4KICA8L2g0Pgo8L2Rpdj4KPGJyIC8+CgojIyBBIE1vZGVybiBPcGVuQVBJIE5hdGl2ZSBUb29sY2hhaW4KCjxwPlBvbGlzaGVkIGFuZCB0eXBlLXNhZmUgU0RLcywgVGVycmFmb3JtIHByb3ZpZGVycyBhbmQgQ29udHJhY3QgVGVzdHMgZm9yIHlvdXIgQVBJLiAxMCBMYW5ndWFnZXMgYW5kIGNvdW50aW5nLjwvcD4KPGEgaHJlZj0iaHR0cHM6Ly9hcHAuc3BlYWtlYXN5LmNvbS8iPjxpbWcgc3JjPSJodHRwczovL2N1c3RvbS1pY29uLWJhZGdlcy5kZW1vbGFiLmNvbS9iYWRnZS8tU3RhcnQlMjBHZW5lcmF0aW5nJTIwLTAwMD9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ29Db2xvcj1mZmZmZiZsb2dvPXNwZWFrZWFzeS1hcGkmbGFiZWxDb2xvcj01NDU0NTQiIGFsdD0iU3RhcnQgR2VuZXJhdGluZyIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS8tY1NaR1V2VDUtOD9zaT1Wd0pCUGNPR3EwZzJSNGNJIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9zdGF0aWMvdjE/bGFiZWw9RG9jcyZtZXNzYWdlPVdhdGNoJTIwRGVtbyZjb2xvcj0wMDAmc3R5bGU9Zm9yLXRoZS1iYWRnZSIgYWx0PSJXYXRjaCBEZW1vIiAvPjwvYT4KCjxkaXYgYWxpZ249ImxlZnQiPgogIDxoMT4KICAgPHA+CiAgICA8YSBocmVmPSJodHRwczovL3d3dy5zcGVha2Vhc3kuY29tL2RvY3Mvc2RrLWRlc2lnbi90eXBlc2NyaXB0L21ldGhvZG9sb2d5LXRzIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgPHBpY3R1cmU+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy83MjM5MmMxNy01YTZkLTRhYWQtYTBlMi1iNDExZmM1YzczM2UiPgogICAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy85Mjk5MDQ2NC1lZWE1LTQ0NmYtOTA4NC0zOWZjNTE3MmU5YzIiPgogICAgICA8aW1nIHdpZHRoPSI3MHB4IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy83MjM5MmMxNy01YTZkLTRhYWQtYTBlMi1iNDExZmM1YzczM2UjZ2gtbGlnaHQtbW9kZS1vbmx5IiBhbHQ9IlR5cGVTY3JpcHQiPgogICAgIDwvcGljdHVyZT4KICAgICA8L2E+CiAgICAgICZuYnNwOwogICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3BlYWtlYXN5LmNvbS9kb2NzL3Nkay1kZXNpZ24vcHl0aG9uL21ldGhvZG9sb2d5LXB5dGhvbiIgdGFyZ2V0PSJfYmxhbmsiPgogICAgIDxwaWN0dXJlPgogICAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KSIgc3Jjc2V0PSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvNTFiNjg2MGEtZWJiYS00ZmEyLTg0NDUtOTViZGUzM2RlYTdlIj4KICAgICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvZjljMDJkNGMtODc0ZC00ZDRmLWI5ZTctYjhhZGQ0NDQ3ZTE0Ij4KICAgICAgPGltZyB3aWR0aD0iNzBweCIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvNTFiNjg2MGEtZWJiYS00ZmEyLTg0NDUtOTViZGUzM2RlYTdlI2doLWxpZ2h0LW1vZGUtb25seSIgYWx0PSJQeXRob24iPgogICAgIDwvcGljdHVyZT4KICAgIDwvYT4KICAgICAgJm5ic3A7CiAgICA8YSBocmVmPSJodHRwczovL3d3dy5zcGVha2Vhc3kuY29tL2RvY3Mvc2RrLWRlc2lnbi9nb2xhbmcvbWV0aG9kb2xvZ3ktZ28iIHRhcmdldD0iX2JsYW5rIj4KICAgICA8cGljdHVyZT4KICAgICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzU1MWExZjAzLTJmZmEtNGFhNC1iNzM4LTk2NmE2Njk2N2E4NSI+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2ZlYTFmMGU4LTg4NzYtNDI0Ni05OGYwLWVhMDdhZWYyNmY3YSI+CiAgICAgIDxpbWcgd2lkdGg9IjcwcHgiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzU1MWExZjAzLTJmZmEtNGFhNC1iNzM4LTk2NmE2Njk2N2E4NSNnaC1saWdodC1tb2RlLW9ubHkiIGFsdD0iR29sYW5nIj4KICAgICA8L3BpY3R1cmU+CiAgICA8L2E+CiAgICAgICZuYnNwOwogICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3BlYWtlYXN5LmNvbS9kb2NzL2NyZWF0ZS10ZXJyYWZvcm0iIHRhcmdldD0iX2JsYW5rIj4KICAgICA8cGljdHVyZT4KICAgICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzIxZjg3NTQ1LTJiNDktNDkxYi04MjM5LTQ1MTNkMjdmMjU0YSI+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2U2M2I2NTJiLWNlMDItNDdmNi1hYTlkLWI4ZmIyZmY1MmY5YyI+CiAgICAgIDxpbWcgd2lkdGg9IjcwcHgiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzIxZjg3NTQ1LTJiNDktNDkxYi04MjM5LTQ1MTNkMjdmMjU0YSNnaC1saWdodC1tb2RlLW9ubHkiIGFsdD0iVGVycmFmb3JtIj4KICAgICA8L3BpY3R1cmU+CiAgICA8L2E+CiAgICAgICZuYnNwOwogICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3BlYWtlYXN5LmNvbS9kb2NzL3Nkay1kZXNpZ24vamF2YS9tZXRob2RvbG9neS1qYXZhIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgPHBpY3R1cmU+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy9mMTRlMGU2MS1kZjhiLTQ1ZmItODYzNC1jN2Y3YTMyN2QyNGIiPgogICAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy82NjMzNzZhMS01MzBlLTQ0NjYtOTNjMC1kNmQ4MTEwNmE2NTAiPgogICAgICA8aW1nIHdpZHRoPSI3MHB4IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy9mMTRlMGU2MS1kZjhiLTQ1ZmItODYzNC1jN2Y3YTMyN2QyNGIjZ2gtbGlnaHQtbW9kZS1vbmx5IiBhbHQ9IkphdmEiPgogICAgIDwvcGljdHVyZT4KICAgIDwvYT4KICAgICAgJm5ic3A7CiAgICA8YSBocmVmPSJodHRwczovL3d3dy5zcGVha2Vhc3kuY29tL2RvY3Mvc2RrLWRlc2lnbi9jc2hhcnAvbWV0aG9kb2xvZ3ktY3NoYXJwIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgPHBpY3R1cmU+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8wZDlhZWM1NS01MDJiLTQ5MWYtYjZjYS01NDMyOTE3ZTI2ZTAiPgogICAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy85MTVkNmM5Yy04ZjI2LTQ5MmMtOTJlZi1hNDg1MDY0MjU0ZDkiPgogICAgICA8aW1nIHdpZHRoPSI3MHB4IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8wZDlhZWM1NS01MDJiLTQ5MWYtYjZjYS01NDMyOTE3ZTI2ZTAjZ2gtbGlnaHQtbW9kZS1vbmx5IiBhbHQ9IkNzaGFycCI+CiAgICAgPC9waWN0dXJlPgogICAgPC9hPgogICAgICAmbmJzcDsKICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnNwZWFrZWFzeS5jb20vZG9jcy9zZGstZGVzaWduL3BocC9tZXRob2RvbG9neS1waHAiIHRhcmdldD0iX2JsYW5rIj4KICAgICA8cGljdHVyZT4KICAgICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2IwZTFiNDg2LWRlMTUtNDg4Yy1iMzY3LWNlMWM4YzRiZGYzNiI+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2RmZTU1YjJjLWFhYTQtNDJiMC05YjEzLTU5MmM1OTY0ZmQ1ZiI+CiAgICAgIDxpbWcgd2lkdGg9IjcwcHgiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2IwZTFiNDg2LWRlMTUtNDg4Yy1iMzY3LWNlMWM4YzRiZGYzNiNnaC1saWdodC1tb2RlLW9ubHkiIGFsdD0iUEhQIj4KICAgICA8L3BpY3R1cmU+CiAgICA8L2E+CiAgICAgICZuYnNwOwogICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3BlYWtlYXN5LmNvbS9kb2NzL3Nkay1kZXNpZ24vcnVieS9tZXRob2RvbG9neS1ydWJ5IiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgPHBpY3R1cmU+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy84N2YxMmUxNS1lNjFkLTQwYzQtODY5MC1jY2QyZGQxMjI2OGYiPgogICAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8yMjA2ZGUzNy03OWM3LTRmNzAtOTQ3ZC03YzVjNDEzMzdlZGIiPgogICAgICA8aW1nIHdpZHRoPSI3MHB4IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy84N2YxMmUxNS1lNjFkLTQwYzQtODY5MC1jY2QyZGQxMjI2OGYjZ2gtbGlnaHQtbW9kZS1vbmx5IiBhbHQ9IlJ1YnkiPgogICAgIDwvcGljdHVyZT4KICAgIDwvYT4KICAgICAgJm5ic3A7CiAgICA8YSBocmVmPSJodHRwczovL3d3dy5zcGVha2Vhc3kuY29tL2RvY3MvbGFuZ3VhZ2VzL3VuaXR5L21ldGhvZG9sb2d5LXVuaXR5IiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgPHBpY3R1cmU+CiAgICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8xOTY2Zjg3Ni0xY2EzLTQ0ZDctOTJjNy1jMjgzMGU4YTMyZTgiPgogICAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy80NDViNTEwOS0xZDMyLTQyNTMtYTlmNC1mYTcyMGRhNWE0OTAiPgogICAgICA8aW1nIHdpZHRoPSI3MHB4IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8xOTY2Zjg3Ni0xY2EzLTQ0ZDctOTJjNy1jMjgzMGU4YTMyZTgjZ2gtbGlnaHQtbW9kZS1vbmx5IiBhbHQ9IlVuaXR5Ij4KICAgICA8L3BpY3R1cmU+CiAgICA8L2E+CiAgIDwvcD4KICA8L2gxPgo8L2Rpdj4KCjxici8+CjxoMj4KIDxwPkhvdyBpdCB3b3JrczwvcD4KIAogICA8cGljdHVyZT4KICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy80MWYxZjFmMi0yYmY4LTQ1MDUtODNmMi1hYTQ3NDZhMGJmOTUiPgogICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvMTg5NzgxMzMtYzhiNS00NmMzLTk1ZTQtYjY4YzMyMWY4YWU0Ij4KICAgIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvNDFmMWYxZjItMmJmOC00NTA1LTgzZjItYWE0NzQ2YTBiZjk1I2doLWxpZ2h0LW1vZGUtb25seSIgYWx0PSJIb3cgaXQgd29ya3MgZGlhZ3JhbSI+CiAgIDwvcGljdHVyZT4KICA8L2E+CjwvaDI+CjxiciAvPgoKIyMjIEZlYXR1cmVzCgotIFNESyBjb2RlIHRoYXQgbG9va3MgbGlrZSB5b3Ugd3JvdGUgaXQuIE9wdGltaXNlZCBmb3IgcGVyZm9ybWFuY2UsIGRlYnVnZ2FiaWxpdHkgYW5kIG1vZGVybiBpZGlvbWF0aWNzLgotIENvbXBsZXRlIFRlcnJhZm9ybSBQcm92aWRlcnMgYnVpbHQgb24gYSBUeXBlLXNhZmUgR28gU0RLLgotIENvbnRyYWN0IFRlc3QgZ2VuZXJhdGlvbiB3aXRoIGEgcHJlIGJ1aWx0IG1vY2stc2VydmVyIChbUG93ZXJlZCBieSBBcmF6em9dKGh0dHBzOi8vd3d3LnNwZWFrZWFzeS5jb20vb3BlbmFwaS9hcmF6em8pKQotIEdlbmVyYXRlIGNsZWFuIGNvZGUtc2FtcGxlcyBmb3Igc3luY2luZyB3aXRoIEFQSSBkb2NzLgotIE1ha2UgYG5wbSBpbnN0YWxsIHlvdXItYXBpYC4gTWFuYWdlIHZlcnNpb25pbmcgYW5kIHB1Ymxpc2hpbmcgdG8gcGFja2FnZSBtYW5hZ2VycwotIE1vZGVybiBPcGVuQVBJIDMuWCB0b29sY2hhaW4gZm9yIGxpbnRpbmcsIGNsZWFuaW5nLCBkaWZmLWluZyBhbmQgZWRpdGluZyBzcGVjcy4gKFtQb3dlcmVkIGJ5IE92ZXJsYXlzXShodHRwczovL3d3dy5zcGVha2Vhc3kuY29tL29wZW5hcGkvb3ZlcmxheXMpKQoKQ2hlY2sgb3V0IHRoZSBbcm9hZG1hcF0oaHR0cHM6Ly93d3cuc3BlYWtlYXN5YXBpLmRldi9yb2FkbWFwKSBmb3Igd2hhdHMgY29taW5nIHVwIHNvb24hCjxiciAvPgo8YnIgLz4KCiMjIENMSSAgCgojIyMgSW5zdGFsbGF0aW9uCgpJbnN0YWxsIFNwZWFrZWFzeSBDTEkgdmlhOgoKLSBIb21lYnJldwotIFdpbmdldAotIENob2NvbGF0ZXkKLSBTaGVsbCBTY3JpcHQgLyBHaXRIdWIgQWN0aW9ucwotIERvY2tlcgoKUmVmZXIgdG8gdGhlIFtTcGVha2Vhc3kgQ0xJIGluc3RhbGxhdGlvbiBkb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5zcGVha2Vhc3kuY29tL2RvY3MvY3JlYXRlLWNsaWVudC1zZGtzI2luc3RhbGwtdGhlLXNwZWFrZWFzeS1jbGkpIGZvciBtb3JlIGluZm9ybWF0aW9uLiBDTEkgcmVsZWFzZXMgYXJlIGFsc28gZGlyZWN0bHkgYXZhaWxhYmxlIGluIHRoZSBbcmVwb3NpdG9yeSByZWxlYXNlc10oaHR0cHM6Ly9naXRodWIuY29tL3NwZWFrZWFzeS1hcGkvc3BlYWtlYXN5L3JlbGVhc2VzKS4KCiMjIyBVc2FnZQoKUmVmZXIgdG8gdGhlIFtTcGVha2Vhc3kgQ0xJIFJlZmVyZW5jZV0oaHR0cHM6Ly93d3cuc3BlYWtlYXN5LmNvbS9kb2NzL3NwZWFrZWFzeS1yZWZlcmVuY2UvY2xpKSBmb3IgdXNhZ2UgZG9jdW1lbnRhdGlvbi4gQWRkaXRpb25hbGx5LCBldmVyeSBDTEkgY29tbWFuZCBhbmQgc3ViY29tbWFuZCBzdXBwb3J0cyBhIGAtLWhlbHBgIGZsYWcgZm9yIHVzYWdlIGluZm9ybWF0aW9uLgoKIyMgQWdlbnQgU2tpbGxzCgpVc2UgU3BlYWtlYXN5IHdpdGggQUkgY29kaW5nIGFnZW50cyB2aWEgb3VyIFtBZ2VudCBTa2lsbHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zcGVha2Vhc3ktYXBpL2FnZW50LXNraWxscykgcGFja2FnZS4KCiMjIyBJbnN0YWxsYXRpb24KCmBgYGJhc2gKbnB4IHNraWxscyBhZGQgc3BlYWtlYXN5LWFwaS9hZ2VudC1za2lsbHMKYGBgCgojIyMgU3VwcG9ydGVkIFBsYXRmb3JtcwoKLSBbQ2xhdWRlIENvZGVdKGh0dHBzOi8vY2xhdWRlLmFpL2NvZGUpCi0gW0N1cnNvcl0oaHR0cHM6Ly9jdXJzb3Iuc2gvKQotIFtHaXRIdWIgQ29waWxvdF0oaHR0cHM6Ly9naXRodWIuY29tL2ZlYXR1cmVzL2NvcGlsb3QpCi0gW0dlbWluaSBDTEldKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUtZ2VtaW5pL2dlbWluaS1jbGkpCi0gQW5kIFsxNSsgb3RoZXIgcGxhdGZvcm1zXShodHRwczovL2FnZW50c2tpbGxzLmlvLykKCiMjIyBVc2FnZQoKT25jZSBpbnN0YWxsZWQsIHNraWxscyBhcmUgYXZhaWxhYmxlIHdpdGggdGhlIGBzcGVha2Vhc3k6YCBuYW1lc3BhY2U6CgpgYGBiYXNoCi9zcGVha2Vhc3k6c3RhcnQtbmV3LXNkay1wcm9qZWN0ICAgICAjIEluaXRpYWxpemUgYSBuZXcgU0RLIHByb2plY3QKL3NwZWFrZWFzeTp2YWxpZGF0ZS1vcGVuYXBpLXNwZWMgICAgICMgVmFsaWRhdGUgYW4gT3BlbkFQSSBzcGVjCi9zcGVha2Vhc3k6cmVnZW5lcmF0ZS1zZGsgICAgICAgICAgICAjIFJlLXJ1biBTREsgZ2VuZXJhdGlvbgpgYGAKClNlZSB0aGUgW2FnZW50LXNraWxscyByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LWFwaS9hZ2VudC1za2lsbHMpIGZvciB0aGUgZnVsbCBsaXN0IG9mIGF2YWlsYWJsZSBza2lsbHMuCg== readmeEtag: '"153b67ac4c22e67a33b654e37f268fef37628182"' readmeLastModified: Sat, 24 Jan 2026 00:26:53 GMT repositoryId: 543052826 description: >- Build APIs your users love ❤️ with Speakeasy. ✨ Polished and type-safe SDKs. 🌐 Terraform providers and Contract Tests for your API. OpenAPI native. created: '2022-09-29T10:13:15Z' updated: '2026-02-05T21:45:19Z' language: JavaScript archived: false stars: 381 watchers: 14 forks: 30 owner: speakeasy-api logo: https://avatars.githubusercontent.com/u/91446104?v=4 license: NOASSERTION repoEtag: '"90575a0d5fea755e5878b7317b33563b0f8ec1a5b11e653dfeed3a9e928df505"' repoLastModified: Thu, 05 Feb 2026 21:45:19 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/wrannaman/generators v3: true repositoryMetadata: base64Readme: >- IyBSZXN0L0dyYXBoUUwgQVBJcyArIFJlYWN0IENvbXBvbmVudHMgR2VuZXJhdG9yIPCflKUKClshW0J1eSBMaWdpdCBMaWNlbnNlXShodHRwczovL3MzLnVzLXdlc3QtMS53YXNhYmlzeXMuY29tL3B1YmxpYy5zdWdhcmt1YmVzL2xpZ2l0X2VtYmVkLnN2ZyldKGh0dHBzOi8vbGlnaXQuZGV2KQpbIVtGb2xsb3cgb24gVHdpdHRlcl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90d2l0dGVyL2ZvbGxvdy9hbmRyZXdwaWVybm8uc3ZnP2xhYmVsPWZvbGxvdyldKGh0dHBzOi8vdHdpdHRlci5jb20vYW5kcmV3cGllcm5vKQpbIVtBdmVyYWdlIHRpbWUgdG8gcmVzb2x2ZSBhbiBpc3N1ZV0oaHR0cDovL2lzaXRtYWludGFpbmVkLmNvbS9iYWRnZS9yZXNvbHV0aW9uL3N1Z2Fya3ViZXMvZ2VuZXJhdG9ycy5zdmcpXShodHRwOi8vaXNpdG1haW50YWluZWQuY29tL3Byb2plY3Qvc3VnYXJrdWJlcy9nZW5lcmF0b3JzICJBdmVyYWdlIHRpbWUgdG8gcmVzb2x2ZSBhbiBpc3N1ZSIpClshW1BlcmNlbnRhZ2Ugb2YgaXNzdWVzIHN0aWxsIG9wZW5dKGh0dHA6Ly9pc2l0bWFpbnRhaW5lZC5jb20vYmFkZ2Uvb3Blbi9zdWdhcmt1YmVzL2dlbmVyYXRvcnMuc3ZnKV0oaHR0cDovL2lzaXRtYWludGFpbmVkLmNvbS9wcm9qZWN0L3N1Z2Fya3ViZXMvZ2VuZXJhdG9ycyAiUGVyY2VudGFnZSBvZiBpc3N1ZXMgc3RpbGwgb3BlbiIpClshW25wbSBwYWNrYWdlXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L3N1Z2FyLWdlbmVyYXRlL2xhdGVzdC5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zdWdhci1nZW5lcmF0ZSkKWyFbTlBNIERvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZHQvc3VnYXItZ2VuZXJhdGUuc3ZnP3N0eWxlPWZsYXQpXShodHRwczovL25wbWNoYXJ0cy5jb20vY29tcGFyZS9zdWdhci1nZW5lcmF0ZT9taW5pbWFsPXRydWUpCgoKIVtTdWdhciBHZW5lcmF0b3IgLSBBUEkgRWRpdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3N1Z2Fya3ViZXMvZ2VuZXJhdG9ycy9ibG9iL21hc3Rlci9sb2dvLnBuZz9yYXc9dHJ1ZSkKClshW0FwcCBEZW1vXShodHRwczovL2ltZy55b3V0dWJlLmNvbS92aS9FN19BQks3blpUOC8wLmpwZyldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9RTdfQUJLN25aVDgpCgoKVGhpcyBwcm9qZWN0IGlzIHNwb25zb3JlZCBieQoKWyFbU3BvbnNvcmVkQnkuZGV2XShodHRwczovL2FwaS5zcG9uc29yZWRieS5kZXYvaW1nL2Q4YzQzMDdiLWJhNDItNDAwZS1iNDc1LTk0ODdjNzZkMTVjOC5wbmcpXShodHRwczovL2FwaS5zcG9uc29yZWRieS5kZXYvbGluay9kOGM0MzA3Yi1iYTQyLTQwMGUtYjQ3NS05NDg3Yzc2ZDE1YzgpCgojIFF1aWNrIFN0YXJ0CgoKMS4gSW5zdGFsbCB0aGUgbnBtIG1vZHVsZQoKYGBgc2gKIyBpbnN0YWxsCm5wbSBpIC1nIHN1Z2FyLWdlbmVyYXRlCmBgYAoKMi4gQ3JlYXRlIGEganNvbiBzY2hlbWEgc2F2ZSwgdGhpcyB0byAqKm1vbmtleS5qc29uKioKCgpgYGBqc29uCnsKICAibmFtZSI6ICJtb25rZXkiLAogICJzY2hlbWEiOiB7CiAgICAibmFtZSI6IHsKICAgICAgInR5cGUiOiAiU3RyaW5nIiwKICAgICAgImRlZmF1bHQiOiAiIgogICAgfSwKICAgICJhbGl2ZSI6IHsKICAgICAgInR5cGUiOiAiQm9vbGVhbiIsCiAgICAgICJkZWZhdWx0IjogZmFsc2UKICAgIH0sCiAgICAiYWdlIjogewogICAgICAidHlwZSI6ICJOdW1iZXIiLAogICAgICAiZGVmYXVsdCI6IGZhbHNlCiAgICB9CiAgfQp9CmBgYAoKMy4gR2VuZXJhdGUgeW91ciBhcGkgYW5kIGFwcAoKYGBgc2gKc3VnYXItZ2VuZXJhdGUgXAotLXNjaGVtYSBtb25rZXkuanNvbiBcCi0tZGVzdGluYXRpb24gLi9teS1tb25rZXlzCmBgYAoKQm9vbSwgeW91IG5vdyBoYXZlOgoKQVBJOgotIEdyYXBoUUwgQVBJCi0gUkVTVCBBUEkKLSBXb3JraW5nIFRlc3RzCgpBUFA6Ci0gUmVhY3QgY3JlYXRlIGl0ZW0gZm9ybQotIFJlYWN0IHRhYmxlIHRoYXQgc3VwcG9ydHMKICAtIHNlYXJjaAogIC0gc29ydAogIC0gZmlsdGVyCiAgLSBwYWdpbmF0aW9uCiAgLSBlZGl0IGl0ZW0KICAtIGNyZWF0ZSBpdGVtCgoKIyMjIFN0YXJ0IHRoZSBBUEkKCmBgYHNoCmNkIC4vbXktbW9ua2V5cy9hcGkKbnBtIGkKbnBtIHJ1biBzdGFydAoKIyBodHRwOi8vbG9jYWxob3N0Ojc3NzcKYGBgCgojIyMgU3RhcnQgdGhlIEFQUAoKYGBgc2gKY2QgLi9teS1tb25rZXlzL2FwcApucG0gaQpucG0gcnVuIGRldgoKIyBodHRwOi8vbG9jYWxob3N0OjMwMDAKYGBgCgojIyMgQmVob2xkIE1hZ2ljCgpBIGZ1bGx5IGZ1bmN0aW9uaW5nIHJlYWN0IHRhYmxlIGFuZCBmb3JtIHdpdGggc2VhcmNoaW5nIHNvcnRpbmcgZmlsdGVyaW5nLCBlZGl0aW5nLCBhZGRpbmcsIGdsb2JhbCBzZWFyY2gsIGRvd25sb2FkLCBhbmQgcmVmcmVzaC4KCiFbU3VnYXJLdWJlcyBHZW5lcmF0ZWQgQXBwXShodHRwczovL2dpdGh1Yi5jb20vc3VnYXJrdWJlcy9nZW5lcmF0b3JzL2Jsb2IvbWFzdGVyL3RhYmxlLWNvbXBvbmVudC5wbmc/cmF3PXRydWUpCgojIExpbmtzCgpbR3JhcGhRTCBpcyBvbiBsb2NhbGhvc3Q6Nzc3Ny9ncmFwaHFsXShodHRwOi8vbG9jYWxob3N0Ojc3NzcvZ3JhcGhxbCkKCltTd2FnZ2VyIGlzIG9uIGxvY2FsaG9zdDo3Nzc3XShodHRwOi8vbG9jYWxob3N0Ojc3NzcpCgpbQVBQIGlzIG9uIGxvY2FsaG9zdDozMDAwXShodHRwOi8vbG9jYWxob3N0OjMwMDApCgpbQVBJIGlzIG9uIGxvY2FsaG9zdDo3Nzc3XShodHRwOi8vbG9jYWxob3N0OjMwMDApCgojIERvY3VtZW50YXRpb24KCltBUEkgRG9jdW1lbnRhdGlvbiAoZ2VuZXJhdGVkIGJhY2sgZW5kKV0oaHR0cHM6Ly9naXRodWIuY29tL3N1Z2Fya3ViZXMvZ2VuZXJhdG9ycy93aWtpL0FQSSkKCgpbQXBwIERvY3VtZW50YXRpb24gKGdlbmVyYXRlZCBmcm9udCBlbmQpXShodHRwczovL2dpdGh1Yi5jb20vc3VnYXJrdWJlcy9nZW5lcmF0b3JzL3dpa2kvQVBQKQoKIyMgRXhwZXJpbWVudGFsIEVtYmVkZGFibGUgQ29tcG9uZW50cwoKKipXaGF0IGlmIHlvdSBjb3VsZCByZW1vdGVseSB1cGRhdGUgeW91ciBjb21wb25lbnRzIHdpdGhvdXQgaGF2aW5nIHRvIHB1c2ggbmV3IGNvZGU/KioKClRoYXRzIG9uZSBxdWVzdGlvbiB3ZSdyZSBleHBsb3Jpbmcgd2l0aCB0aGUgZXhwZXJpbWVudGFsIGVtYmVkZGFibGUgcmVhY3QgY29tcG9uZW50cy4gVGhlcmUgYXJlIG9mIGNvdXJzZSBjb29sIHdheXMgdG8gc2VydmUgc2luZ2xlIHBhZ2VzIGFzIHNlcnZlcmxlc3MgZnVuY3Rpb25zIGJ1dCB3aGF0J3MgY29vbGVyIHdvdWxkIGJlIGEgd2F5IGZvciBldmVuIG5vbi10ZWNobmljYWwgcGVvcGxlIHRvIHVwZGF0ZSBhIGRhdGFiYXNlIHNjaGVtYSBhbmQgYSBmb3JtIG9yIHRhYmxlIGluIHJlYWwgdGltZSB3aXRob3V0IHdyaXRpbmcgYW55IGNvZGUuCgoKLSBFYWNoIGNvbXBvbmVudCBjb21lcyBvdXQgaW4gYW4gZW1iZWRkYWJsZSBmb3JtYXQgdW5kZXIgKi9lbWJlZCoKLSBUQkQgLSBIb3cgdG8gZWFzaWx5IGRlcGxveSB0aGVzZSBhbmQgdXNlIHRoZW0uCi0KCgojIyBVcGRhdGVzCgotIDgvNS8xOSBzdXBwb3J0IGZvciBtb25nbyBhcnJheXMgaW4gZG9jdW1lbnRzCg== readmeEtag: '"e3945d8d8d83bdcfd3d4d4008752f4b9a5f11fa8"' readmeLastModified: Tue, 03 Mar 2020 22:51:34 GMT repositoryId: 189799018 description: >- API Generator - instantly generate REST and GraphQL APIs (openapi (OAS) 3.0.0) created: '2019-06-02T03:05:54Z' updated: '2026-01-24T02:25:22Z' language: JavaScript archived: false stars: 234 watchers: 1 forks: 29 owner: wrannaman logo: https://avatars.githubusercontent.com/u/5325165?v=4 license: MIT repoEtag: '"e6281517772ed08cdc667f8350a64d34739dfc8aa42da1eca8d1e596d50d0673"' repoLastModified: Sat, 24 Jan 2026 02:25:22 GMT foundInMaster: true category: SDK id: 824dcdea013394109fc958b1d93b91e6 - source: openapi3 tags repository: https://github.com/christianhelle/refitter v3: true id: 17db61563d8b069fd3d4a63d36459a68 repositoryMetadata: base64Readme: >- WyFbQnVpbGRdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbCkKWyFbU21va2UgVGVzdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9hY3Rpb25zL3dvcmtmbG93cy9zbW9rZS10ZXN0cy55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2FjdGlvbnMvd29ya2Zsb3dzL3Ntb2tlLXRlc3RzLnltbCkKWyFbTnVHZXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvdi9yZWZpdHRlcj9jb2xvcj1ibHVlKV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL3JlZml0dGVyKQpbIVtEb2NrZXIgSW1hZ2UgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvdi9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcj9sYWJlbD1kb2NrZXIpXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIpClshW1F1YWxpdHkgR2F0ZSBTdGF0dXNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNocmlzdGlhbmhlbGxlX3JlZml0dGVyJm1ldHJpYz1hbGVydF9zdGF0dXMpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1jaHJpc3RpYW5oZWxsZV9yZWZpdHRlcikKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2dyYXBoL2JhZGdlLnN2Zz90b2tlbj0yNDJZVDFONlQyKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyKQoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUJBREdFOlNUQVJUIC0gRG8gbm90IHJlbW92ZSBvciBtb2RpZnkgdGhpcyBzZWN0aW9uIC0tPgpbIVtBbGwgQ29udHJpYnV0b3JzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2FsbF9jb250cmlidXRvcnMtODgtb3JhbmdlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSldKCNjb250cmlidXRvcnMtKQo8IS0tIEFMTC1DT05UUklCVVRPUlMtQkFER0U6RU5EIC0tPgoKIyBSZWZpdHRlcgoKUmVmaXR0ZXIgaXMgYSB0b29sIGZvciBnZW5lcmF0aW5nIGEgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nIHRoZSBbUmVmaXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGl2ZXVpL3JlZml0KSBsaWJyYXJ5LiBSZWZpdHRlciBjYW4gZ2VuZXJhdGUgdGhlIFJlZml0IGludGVyZmFjZSBhbmQgY29udHJhY3RzIGZyb20gT3BlbkFQSSBzcGVjaWZpY2F0aW9ucy4gUmVmaXR0ZXIgY291bGQgZm9ybWF0IHRoZSBnZW5lcmF0ZWQgUmVmaXQgaW50ZXJmYWNlIHRvIGJlIG1hbmFnZWQgYnkgW0FwaXpyXShodHRwczovL3d3dy5hcGl6ci5uZXQpICh2NispIGFuZCBnZW5lcmF0ZSBzb21lIHJlZ2lzdHJhdGlvbiBoZWxwZXJzIHRvby4KClJlZml0dGVyIGNvbWVzIGluIDMgZm9ybXM6CgotIEEgWy5ORVQgQ0xJIFRvb2xdKCNjbGktdG9vbCkgZGlzdHJpYnV0ZWQgdmlhIFtudWdldC5vcmddKGh0dHA6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL3JlZml0dGVyKSB0aGF0IG91dHB1dHMgYSBzaW5nbGUgQyMgZmlsZSBvbiBkaXNrCi0gQW4gW01TQnVpbGQgVGFza10oI21zYnVpbGQpIHZpYSB0aGUgW1JlZml0dGVyLk1TQnVpbGRdKGh0dHA6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL3JlZml0dGVyLm1zYnVpbGQpIHBhY2thZ2UgdGhhdCBpbnRlZ3JhdGVzIHNlYW1sZXNzbHkgaW50byB5b3VyIGJ1aWxkIHBpcGVsaW5lIGFuZCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlcyBjb2RlIGF0IGJ1aWxkIHRpbWUgYmFzZWQgb24gWy5yZWZpdHRlcl0oIy5yZWZpdHRlci1maWxlLWZvcm1hdCkgZmlsZXMgd2l0aGluIHRoZSBwcm9qZWN0IGRpcmVjdG9yeQotIEEgW0MjIFNvdXJjZSBHZW5lcmF0b3JdKCNzb3VyY2UtZ2VuZXJhdG9yKSB2aWEgdGhlIFtSZWZpdHRlci5Tb3VyY2VHZW5lcmF0b3JdKGh0dHA6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL3JlZml0dGVyLnNvdXJjZWdlbmVyYXRvcikgcGFja2FnZSB0aGF0IGdlbmVyYXRlcyBjb2RlIG9uIGNvbXBpbGUgdGltZSBiYXNlZCBvbiBhIFsucmVmaXR0ZXJdKCMucmVmaXR0ZXItZmlsZS1mb3JtYXQpIHdpdGhpbiB0aGUgcHJvamVjdCBkaXJlY3RvcnkKCiMjIENMSSBUb29sCgojIyMgSW5zdGFsbGF0aW9uCgpUaGUgdG9vbCBpcyBwYWNrYWdlZCBhcyBhIC5ORVQgVG9vbCBhbmQgaXMgcHVibGlzaGVkIHRvIG51Z2V0Lm9yZy4gWW91IGNhbiBpbnN0YWxsIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIHRvb2wgbGlrZSB0aGlzOgoKYGBgc2hlbGwKZG90bmV0IHRvb2wgaW5zdGFsbCAtLWdsb2JhbCBSZWZpdHRlcgpgYGAKCkFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBEb2NrZXIgaW1hZ2U6CgpgYGBzaGVsbApkb2NrZXIgcHVsbCBjaHJpc3RpYW5oZWxsZS9yZWZpdHRlcgpgYGAKCk9yIHJ1biBpdCBkaXJlY3RseToKCmBgYHNoZWxsCmRvY2tlciBydW4gLS1ybSAtdiAkKHB3ZCk6L3NyYyBjaHJpc3RpYW5oZWxsZS9yZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW91dHB1dCAuL0dlbmVyYXRlZENvZGUuY3MKYGBgCgojIyMgVXNhZ2UKCmBgYHNoZWxsCnJlZml0dGVyIC0taGVscApgYGAKCmBgYHRleHQKVVNBR0U6CiAgICByZWZpdHRlciBbVVJMIG9yIGlucHV0IGZpbGVdIFtPUFRJT05TXQoKRVhBTVBMRVM6CiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbgogICAgcmVmaXR0ZXIgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS55YW1sCiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLXNldHRpbmdzLWZpbGUgLi9vcGVuYXBpLnJlZml0dGVyIC0tb3V0cHV0IC4vR2VuZXJhdGVkQ29kZS5jcwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1uYW1lc3BhY2UgIllvdXIuTmFtZXNwYWNlLk9mLkNob2ljZS5HZW5lcmF0ZWRDb2RlIiAtLW91dHB1dCAuL0dlbmVyYXRlZENvZGUuY3MKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tbmFtZXNwYWNlICJZb3VyLk5hbWVzcGFjZS5PZi5DaG9pY2UuR2VuZXJhdGVkQ29kZSIgLS1pbnRlcm5hbAogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1vdXRwdXQgLi9JR2VuZXJhdGVkQ29kZS5jcyAtLWludGVyZmFjZS1vbmx5CiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW91dHB1dCAuL0dlbmVyYXRlZENvbnRyYWN0cy5jcyAtLWNvbnRyYWN0LW9ubHkKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tdXNlLWFwaS1yZXNwb25zZQogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1jYW5jZWxsYXRpb24tdG9rZW5zCiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW5vLW9wZXJhdGlvbi1oZWFkZXJzCiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLWlnbm9yZWQtb3BlcmF0aW9uLWhlYWRlcnMgImhlYWRlci1vbmUiIC0taWdub3JlZC1vcGVyYXRpb24taGVhZGVycyAiSGVhZGVyLVR3byIKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tbm8tYWNjZXB0LWhlYWRlcnMKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tdXNlLWlzby1kYXRlLWZvcm1hdAogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1hZGRpdGlvbmFsLW5hbWVzcGFjZSAiWW91ci5BZGRpdGlvbmFsLk5hbWVzcGFjZSIgLS1hZGRpdGlvbmFsLW5hbWVzcGFjZSAiWW91ci5PdGhlci5BZGRpdGlvbmFsLk5hbWVzcGFjZSIKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tbXVsdGlwbGUtaW50ZXJmYWNlcyBCeUVuZHBvaW50CiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLXRhZyBQZXQgLS10YWcgU3RvcmUgLS10YWcgVXNlcgogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1tYXRjaC1wYXRoICdeL3BldC8uKicKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tdHJpbS11bnVzZWQtc2NoZW1hCiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLXRyaW0tdW51c2VkLXNjaGVtYSAgLS1rZWVwLXNjaGVtYSAnXk1vZGVsJCcgLS1rZWVwLXNjaGVtYSAnXlBlcnNvbi4rJwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1uby1kZXByZWNhdGVkLW9wZXJhdGlvbnMKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tb3BlcmF0aW9uLW5hbWUtdGVtcGxhdGUgJ3tvcGVyYXRpb25OYW1lfUFzeW5jJwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1vcHRpb25hbC1udWxsYWJsZS1wYXJhbWV0ZXJzCiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLXVzZS1wb2x5bW9ycGhpYy1zZXJpYWxpemF0aW9uCiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLWNvbGxlY3Rpb24tZm9ybWF0IENzdgogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1zaW1wbGUtb3V0cHV0CiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW5vLWlubGluZS1qc29uLWNvbnZlcnRlcnMKCkFSR1VNRU5UUzoKICAgIFtVUkwgb3IgaW5wdXQgZmlsZV0gICAgVVJMIG9yIGZpbGUgcGF0aCB0byBPcGVuQVBJIFNwZWNpZmljYXRpb24gZmlsZQoKT1BUSU9OUzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVAogICAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW50cyBoZWxwIGluZm9ybWF0aW9uCiAgICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnRzIHZlcnNpb24gaW5mb3JtYXRpb24KICAgIC1zLCAtLXNldHRpbmdzLWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoIHRvIC5yZWZpdHRlciBzZXR0aW5ncyBmaWxlLiBTcGVjaWZ5aW5nIHRoaXMgd2lsbCBpZ25vcmUgYWxsIG90aGVyIHNldHRpbmdzIChleGNlcHQgZm9yIC0tb3V0cHV0KQogICAgLW4sIC0tbmFtZXNwYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZWRDb2RlICAgIERlZmF1bHQgbmFtZXNwYWNlIHRvIHVzZSBmb3IgZ2VuZXJhdGVkIHR5cGVzCiAgICAgICAgLS1jb250cmFjdHMtbmFtZXNwYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBuYW1lc3BhY2UgdG8gdXNlIGZvciBnZW5lcmF0ZWQgY29udHJhY3RzCiAgICAtbywgLS1vdXRwdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dC5jcyAgICAgICAgUGF0aCB0byBPdXRwdXQgZmlsZSBvciBmb2xkZXIgKGlmIG11bHRpcGxlIGZpbGVzIGFyZSBnZW5lcmF0ZWQpCiAgICAgICAgLS1jb250cmFjdHMtb3V0cHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0IHBhdGggZm9yIGdlbmVyYXRlZCBjb250cmFjdHMuIEVuYWJsaW5nIHRoaXMgYXV0b21hdGljYWxseSBlbmFibGVzIGdlbmVyYXRpbmcgbXVsdGlwbGUgZmlsZXMKICAgICAgICAtLW5vLWF1dG8tZ2VuZXJhdGVkLWhlYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBhZGQgPGF1dG8tZ2VuZXJhdGVkPiBoZWFkZXIgdG8gb3V0cHV0IGZpbGUKICAgICAgICAtLW5vLWFjY2VwdC1oZWFkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBhZGQgPEFjY2VwdD4gaGVhZGVyIHRvIG91dHB1dCBmaWxlCiAgICAgICAgLS1pbnRlcmZhY2Utb25seSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9uJ3QgZ2VuZXJhdGUgY29udHJhY3QgdHlwZXMKICAgICAgICAtLWNvbnRyYWN0LW9ubHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBnZW5lcmF0ZSBjbGllbnRzCiAgICAgICAgLS11c2UtYXBpLXJlc3BvbnNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIFRhc2s8SUFwaVJlc3BvbnNlPFQ+PiBpbnN0ZWFkIG9mIFRhc2s8VD4KICAgICAgICAtLXVzZS1vYnNlcnZhYmxlLXJlc3BvbnNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gSU9ic2VydmFibGUgaW5zdGVhZCBvZiBUYXNrCiAgICAgICAgLS1pbnRlcm5hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IHRoZSBhY2Nlc3NpYmlsaXR5IG9mIHRoZSBnZW5lcmF0ZWQgdHlwZXMgdG8gJ2ludGVybmFsJwogICAgICAgIC0tY2FuY2VsbGF0aW9uLXRva2VucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBjYW5jZWxsYXRpb24gdG9rZW5zCiAgICAgICAgLS1uby1vcGVyYXRpb24taGVhZGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9uJ3QgZ2VuZXJhdGUgb3BlcmF0aW9uIGhlYWRlcnMKICAgICAgICAtLW5vLWxvZ2dpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBsb2cgZXJyb3JzIG9yIGNvbGxlY3QgdGVsZW1ldHJ5CiAgICAgICAgLS1hZGRpdGlvbmFsLW5hbWVzcGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkIGFkZGl0aW9uYWwgbmFtZXNwYWNlIHRvIGdlbmVyYXRlZCB0eXBlcwogICAgICAgIC0tZXhjbHVkZS1uYW1lc3BhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGUgbmFtZXNwYWNlIG9uIGdlbmVyYXRlZCB0eXBlcwogICAgICAgIC0tdXNlLWlzby1kYXRlLWZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGxpY2l0bHkgZm9ybWF0IGRhdGUgcXVlcnkgc3RyaW5nIHBhcmFtZXRlcnMgaW4gSVNPIDg2MDEgc3RhbmRhcmQgZGF0ZSBmb3JtYXQgdXNpbmcgZGVsaW1pdGVycyAoMjAyMy0wNi0xNSkKICAgICAgICAtLW11bHRpcGxlLWludGVyZmFjZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBhIFJlZml0IGludGVyZmFjZSBmb3IgZWFjaCBlbmRwb2ludC4gTWF5IGJlIG9uZSBvZiBCeUVuZHBvaW50LCBCeVRhZwogICAgICAgIC0tbXVsdGlwbGUtZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIG11bHRpcGxlIGZpbGVzIGluc3RlYWQgb2YgYSBzaW5nbGUgbGFyZ2UgZmlsZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IGZpbGVzIGNhbiBiZSB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gUmVmaXRJbnRlcmZhY2VzLmNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBEZXBlbmRlbmN5SW5qZWN0aW9uLmNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBDb250cmFjdHMuY3MKICAgICAgICAtLW1hdGNoLXBhdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IGluY2x1ZGUgUGF0aHMgdGhhdCBtYXRjaCB0aGUgcHJvdmlkZWQgcmVndWxhciBleHByZXNzaW9uLiBNYXkgYmUgc2V0IG11bHRpcGxlIHRpbWVzCiAgICAgICAgLS10YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25seSBpbmNsdWRlIEVuZHBvaW50cyB0aGF0IGNvbnRhaW4gdGhpcyB0YWcuIE1heSBiZSBzZXQgbXVsdGlwbGUgdGltZXMgYW5kIHJlc3VsdCBpbiBPUidlZCBldmFsdWF0aW9uCiAgICAgICAgLS1za2lwLXZhbGlkYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tpcCB2YWxpZGF0aW9uIG9mIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24KICAgICAgICAtLW5vLWRlcHJlY2F0ZWQtb3BlcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBnZW5lcmF0ZSBkZXByZWNhdGVkIG9wZXJhdGlvbnMKICAgICAgICAtLW9wZXJhdGlvbi1uYW1lLXRlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBvcGVyYXRpb24gbmFtZXMgdXNpbmcgcGF0dGVybi4gV2hlbiB1c2luZyAtLW11bHRpcGxlLWludGVyZmFjZXMgQnlFbmRwb2ludCwgdGhpcyBpcyBuYW1lIG9mIHRoZSBFeGVjdXRlKCkgbWV0aG9kIGluIHRoZSBpbnRlcmZhY2Ugd2hlcmUgYWxsIGluc3RhbmNlcyBvZiB0aGUgc3RyaW5nICd7b3BlcmF0aW9uTmFtZX0nIGlzIHJlcGxhY2VkIHdpdGggJ0V4ZWN1dGUnCiAgICAgICAgLS1vcHRpb25hbC1udWxsYWJsZS1wYXJhbWV0ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGUgbnVsbGFibGUgcGFyYW1ldGVycyBhcyBvcHRpb25hbCBwYXJhbWV0ZXJzCiAgICAgICAgLS10cmltLXVudXNlZC1zY2hlbWEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlcyB1bnJlZmVyZW5jZWQgY29tcG9uZW50cyBzY2hlbWEgdG8ga2VlcCB0aGUgZ2VuZXJhdGVkIG91dHB1dCB0byBhIG1pbmltdW0KICAgICAgICAtLWtlZXAtc2NoZW1hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZSB0byBrZWVwIG1hdGNoaW5nIHNjaGVtYSwgdXNlcyByZWd1bGFyIGV4cHJlc3Npb25zLiBVc2UgdG9nZXRoZXIgd2l0aCAiLS10cmltLXVudXNlZC1zY2hlbWEiLiBDYW4gYmUgc2V0IG11bHRpcGxlIHRpbWVzCiAgICAgICAgLS1pbmNsdWRlLWluaGVyaXRhbmNlLWhpZXJhcmNoeSAgICAgICAgICAgICAgICAgICAgICAgICAgS2VlcCBhbGwgcG9zc2libGUgaW5oZXJpdGVkIHR5cGVzL3VuaW9uIHR5cGVzIGV2ZW4gaWYgdGhleSBhcmUgbm90IGRpcmVjdGx5IHVzZWQKICAgICAgICAtLW5vLWJhbm5lciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBzaG93IGRvbmF0aW9uIGJhbm5lcgogICAgICAgIC0tc2ltcGxlLW91dHB1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIHNpbXBsZSwgcGxhaW4tdGV4dCBjb25zb2xlIG91dHB1dCB3aXRob3V0IEFTQ0lJIGFydCwgdGFibGVzLCBlbW9qaXMsIG9yIGNvbG9yIGZvcm1hdHRpbmcgKHN1aXRhYmxlIGZvciBJREUgb3V0cHV0IHdpbmRvd3MpCiAgICAgICAgLS1za2lwLWRlZmF1bHQtYWRkaXRpb25hbC1wcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgU2V0IHRvIHRydWUgdG8gc2tpcCBkZWZhdWx0IGFkZGl0aW9uYWwgcHJvcGVydGllcwogICAgICAgIC0tY29sbGVjdGlvbi1mb3JtYXQgICAgICAgICAgICAgICAgICAgICAgTXVsdGkgICAgICAgICAgIERldGVybWluZXMgdGhlIGZvcm1hdCBvZiBjb2xsZWN0aW9uIHBhcmFtZXRlcnMuIE1heSBiZSBvbmUgb2YgTXVsdGksIENzdiwgU3N2LCBUc3YsIFBpcGVzCiAgICAgICAgLS1vcGVyYXRpb24tbmFtZS1nZW5lcmF0b3IgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgVGhlIE5Td2FnIElPcGVyYXRpb25OYW1lR2VuZXJhdG9yIGltcGxlbWVudGF0aW9uIHRvIHVzZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXkgYmUgb25lIG9mOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gRGVmYXVsdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gTXVsdGlwbGVDbGllbnRzRnJvbU9wZXJhdGlvbklkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBNdWx0aXBsZUNsaWVudHNGcm9tUGF0aFNlZ21lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBNdWx0aXBsZUNsaWVudHNGcm9tRmlyc3RUYWdBbmRPcGVyYXRpb25JZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gTXVsdGlwbGVDbGllbnRzRnJvbUZpcnN0VGFnQW5kT3BlcmF0aW9uTmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gTXVsdGlwbGVDbGllbnRzRnJvbUZpcnN0VGFnQW5kUGF0aFNlZ21lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBTaW5nbGVDbGllbnRGcm9tT3BlcmF0aW9uSWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFNpbmdsZUNsaWVudEZyb21QYXRoU2VnbWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgaHR0cHM6Ly9yZWZpdHRlci5naXRodWIuaW8vYXBpL1JlZml0dGVyLkNvcmUuT3BlcmF0aW9uTmFtZUdlbmVyYXRvclR5cGVzLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24KICAgICAgICAtLWltbXV0YWJsZS1yZWNvcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBjb250cmFjdHMgYXMgaW1tdXRhYmxlIHJlY29yZHMgaW5zdGVhZCBvZiBjbGFzc2VzCiAgICAgICAgLS11c2UtYXBpenIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIEFwaXpyIGJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gQWRkaW5nIGEgZmluYWwgSUFwaXpyUmVxdWVzdE9wdGlvbnMgb3B0aW9ucyBwYXJhbWV0ZXIgdG8gYWxsIGdlbmVyYXRlZCBtZXRob2RzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBQcm92aWRpbmcgY2FuY2VsbGF0aW9uIHRva2VucyBieSBBcGl6ciByZXF1ZXN0IG9wdGlvbnMgaW5zdGVhZCBvZiBhIGRlZGljYXRlZCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFVzaW5nIG1ldGhvZCBvdmVybG9hZHMgaW5zdGVhZCBvZiBvcHRpb25hbCBwYXJhbWV0ZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIGh0dHBzOi8vcmVmaXR0ZXIuZ2l0aHViLmlvIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBodHRwczovL3d3dy5hcGl6ci5uZXQgdG8gZ2V0IHN0YXJ0ZWQgd2l0aCBBcGl6cgogICAgICAgIC0tdXNlLWR5bmFtaWMtcXVlcnlzdHJpbmctcGFyYW1ldGVycyAgICAgICAgICAgICAgICAgICAgIEVuYWJsZSB3cmFwcGluZyBtdWx0aXBsZSBxdWVyeSBwYXJhbWV0ZXJzIGludG8gYSBzaW5nbGUgY29tcGxleCBvbmUuIERlZmF1bHQgaXMgbm8gd3JhcHBpbmcuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGl2ZXVpL3JlZml0P3RhYj1yZWFkbWUtb3YtZmlsZSNkeW5hbWljLXF1ZXJ5c3RyaW5nLXBhcmFtZXRlcnMgZm9yIG1vcmUgaW5mb3JtYXRpb24KICAgICAgICAtLXVzZS1wb2x5bW9ycGhpYy1zZXJpYWxpemF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgU3lzdGVtLlRleHQuSnNvbiBwb2x5bW9ycGhpYyBzZXJpYWxpemF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcGxhY2VzIE5Td2FnIEpzb25Jbmhlcml0YW5jZUNvbnZlcnRlciBhdHRyaWJ1dGVzIHdpdGggU3lzdGVtLlRleHQuSnNvbiBKc29uUG9seW1vcnBoaWNBdHRyaWJ1dGVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvIGhhdmUgdGhlIG5hdGl2ZSBzdXBwb3J0IG9mIGluaGVyaXRhbmNlIChkZSlzZXJpYWxpemF0aW9uIGFuZCBmYWxsYmFjayB0byBiYXNlIHR5cGVzIHdoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkcyB3aXRoICh5ZXQpIHVua25vd24gdHlwZXMgYXJlIG9mZmVyZWQgYnkgbmV3ZXIgdmVyc2lvbnMgb2YgYW4gQVBJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9kb3RuZXQvc3RhbmRhcmQvc2VyaWFsaXphdGlvbi9zeXN0ZW0tdGV4dC1qc29uL3BvbHltb3JwaGlzbSBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgICAgIC0tZGlzcG9zYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIHJlZml0IGNsaWVudHMgdGhhdCBpbXBsZW1lbnQgSURpc3Bvc2FibGUKICAgICAgICAtLW5vLWlubGluZS1qc29uLWNvbnZlcnRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBpbmxpbmUgSnNvbkNvbnZlcnRlciBhdHRyaWJ1dGVzIGZvciBlbnVtIHByb3BlcnRpZXMuIFdoZW4gZGlzYWJsZWQsIGVudW0gcHJvcGVydGllcyB3aWxsIG5vdCBoYXZlIFtKc29uQ29udmVydGVyKHR5cGVvZihKc29uU3RyaW5nRW51bUNvbnZlcnRlcikpXSBhdHRyaWJ1dGVzCiAgICAgICAgLS1pbnRlZ2VyLXR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgVGhlIC5ORVQgdHlwZSB0byB1c2UgZm9yIE9wZW5BUEkgaW50ZWdlciB0eXBlcyB3aXRob3V0IGEgZm9ybWF0IHNwZWNpZmllci4gQ29tbW9uIHZhbHVlczogJ2ludCcgKGRlZmF1bHQpLCAnbG9uZycKICAgICAgICAtLWN1c3RvbS10ZW1wbGF0ZS1kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b20gZGlyZWN0b3J5IHdpdGggTlN3YWcgZmx1aWQgdGVtcGxhdGVzIGZvciBjb2RlIGdlbmVyYXRpb24uIERlZmF1bHQgaXMgbnVsbCB3aGljaCB1c2VzIHRoZSBkZWZhdWx0IE5Td2FnIHRlbXBsYXRlcy4gU2VlIDxodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvVGVtcGxhdGVzPgpgYGAKClRvIGdlbmVyYXRlIGNvZGUgZnJvbSBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGZpbGUsIHJ1biB0aGUgZm9sbG93aW5nOgoKYGBgc2hlbGwKcmVmaXR0ZXIgW3BhdGggdG8gT3BlbkFQSSBzcGVjIGZpbGVdIC0tbmFtZXNwYWNlICJbWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGVdIgpgYGAKClRoaXMgd2lsbCBnZW5lcmF0ZSBhIGZpbGUgY2FsbGVkIGBPdXRwdXQuY3NgIHdoaWNoIGNvbnRhaW5zIHRoZSBSZWZpdCBpbnRlcmZhY2UgYW5kIGNvbnRyYWN0IGNsYXNzZXMgZ2VuZXJhdGVkIHVzaW5nIFtOU3dhZ10oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZykKCiMjIyBDTEkgVG9vbCBPdXRwdXQgRXhhbXBsZQoKSGVyZSdzIHdoYXQgdGhlIGNvbnNvbGUgb3V0cHV0IGxvb2tzIGxpa2Ugd2hlbiBydW5uaW5nIHRoZSBSZWZpdHRlciBDTEkgdG9vbDoKCiFbQ29uc29sZSBPdXRwdXRdKGltYWdlcy9jb25zb2xlLW91dHB1dC5wbmcpCgojIyMgU2ltcGxlIE91dHB1dCBNb2RlCgpGb3IgaW50ZWdyYXRpb24gd2l0aCBJREVzIGFuZCBidWlsZCB0b29scyB0aGF0IGRvbid0IHN1cHBvcnQgcmljaCBjb25zb2xlIGZvcm1hdHRpbmcsIFJlZml0dGVyIHByb3ZpZGVzIGEgYC0tc2ltcGxlLW91dHB1dGAgb3B0aW9uOgoKYGBgc2hlbGwKcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1zaW1wbGUtb3V0cHV0CmBgYAoKVGhpcyBtb2RlIGdlbmVyYXRlcyBwbGFpbiB0ZXh0IG91dHB1dCB3aXRob3V0OgoKLSBBU0NJSSBhcnQgYW5kIGJhbm5lcnMKLSBDb2xvcmVkIHRleHQgYW5kIHJpY2ggZm9ybWF0dGluZwotIFVuaWNvZGUgY2hhcmFjdGVycyBhbmQgZW1vamlzCi0gVGFibGVzIGFuZCBwYW5lbHMKClRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuOgoKLSBSdW5uaW5nIFJlZml0dGVyIGZyb20gVmlzdWFsIFN0dWRpbyBleHRlbnNpb25zCi0gSW50ZWdyYXRpbmcgd2l0aCBidWlsZCBzeXN0ZW1zIHRoYXQgY2FwdHVyZSBjb25zb2xlIG91dHB1dAotIFVzaW5nIHRvb2xzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMKLSBSdW5uaW5nIGluIGVudmlyb25tZW50cyB3aXRoIGxpbWl0ZWQgY29uc29sZSBjYXBhYmlsaXRpZXMKCgojIyAuUmVmaXR0ZXIgRmlsZSBmb3JtYXQKClRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBgLnJlZml0dGVyYCBmaWxlCgpgYGBqcwp7CiAgIm9wZW5BcGlQYXRoIjogIi9wYXRoL3RvL3lvdXIvb3BlbkFQSSIsIC8vIFJlcXVpcmVkCiAgIm5hbWVzcGFjZSI6ICJPcmcuU3lzdGVtLlNlcnZpY2UuQXBpLkdlbmVyYXRlZENvZGUiLCAvLyBPcHRpb25hbC4gRGVmYXVsdD1HZW5lcmF0ZWRDb2RlCiAgImNvbnRyYWN0c05hbWVzcGFjZSI6ICJPcmcuU3lzdGVtLlNlcnZpY2UuQXBpLkdlbmVyYXRlZENvZGUuQ29udHJhY3RzIiwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9R2VuZXJhdGVkQ29kZQogICJuYW1pbmciOiB7CiAgICAidXNlT3BlbkFwaVRpdGxlIjogZmFsc2UsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PXRydWUKICAgICJpbnRlcmZhY2VOYW1lIjogIk15QXBpQ2xpZW50IiAvLyBPcHRpb25hbC4gRGVmYXVsdD1BcGlDbGllbnQKICB9LAogICJnZW5lcmF0ZUNvbnRyYWN0cyI6IHRydWUsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PXRydWUKICAiZ2VuZXJhdGVDbGllbnRzIjogdHJ1ZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9dHJ1ZQogICJnZW5lcmF0ZVhtbERvY0NvZGVDb21tZW50cyI6IHRydWUsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PXRydWUKICAiZ2VuZXJhdGVTdGF0dXNDb2RlQ29tbWVudHMiOiB0cnVlLCAvLyBPcHRpb25hbC4gRGVmYXVsdD10cnVlCiAgImFkZEF1dG9HZW5lcmF0ZWRIZWFkZXIiOiB0cnVlLCAvLyBPcHRpb25hbC4gRGVmYXVsdD10cnVlCiAgImFkZEFjY2VwdEhlYWRlcnMiOiB0cnVlLCAvLyBPcHRpb25hbC4gRGVmYXVsdD10cnVlCiAgImFkZENvbnRlbnRUeXBlSGVhZGVycyI6IHRydWUsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PXRydWUKICAicmV0dXJuSUFwaVJlc3BvbnNlIjogZmFsc2UsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PWZhbHNlCiAgInJlc3BvbnNlVHlwZU92ZXJyaWRlIjogeyAvLyBPcHRpb25hbC4gRGVmYXVsdD17fQogICAgIkZpbGVfVXBsb2FkIjogIklBcGlSZXNwb25zZSIsCiAgICAiRmlsZV9Eb3dubG9hZCI6ICJTeXN0ZW0uTmV0Lkh0dHAuSHR0cENvbnRlbnQiCiAgfSwKICAiZ2VuZXJhdGVPcGVyYXRpb25IZWFkZXJzIjogdHJ1ZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9dHJ1ZQogICJpZ25vcmVkT3BlcmF0aW9uSGVhZGVycyI6IFsiYXBpS2V5Il0sIC8vIE9wdGlvbmFsLiBEZWZhdWx0PVtdCiAgInR5cGVBY2Nlc3NpYmlsaXR5IjogIlB1YmxpYyIsIC8vIE9wdGlvbmFsLiBWYWx1ZXM9UHVibGljfEludGVybmFsLiBEZWZhdWx0PVB1YmxpYwogICJ1c2VDYW5jZWxsYXRpb25Ub2tlbnMiOiBmYWxzZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9ZmFsc2UKICAidXNlSXNvRGF0ZUZvcm1hdCI6IGZhbHNlLCAvLyBPcHRpb25hbC4gRGVmYXVsdD1mYWxzZQogICJtdWx0aXBsZUludGVyZmFjZXMiOiAiQnlFbmRwb2ludCIsIC8vIE9wdGlvbmFsLiBNYXkgYmUgb25lIG9mICJCeUVuZHBvaW50IiBvciAiQnlUYWciCiAgImdlbmVyYXRlRGVwcmVjYXRlZE9wZXJhdGlvbnMiOiBmYWxzZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9dHJ1ZQogICJvcGVyYXRpb25OYW1lVGVtcGxhdGUiOiAie29wZXJhdGlvbk5hbWV9QXN5bmMiLCAvLyBPcHRpb25hbC4gTXVzdCBjb250YWluIHtvcGVyYXRpb25OYW1lfS4gV2hlbiBtdWx0aXBsZUludGVyZmFjZXMgPT0gIkJ5RW5kcG9pbnQiLCB0aGlzIGlzIG5hbWUgb2YgdGhlIEV4ZWN1dGUoKSBtZXRob2QgaW4gdGhlIGludGVyZmFjZSB3aGVyZSBhbGwgaW5zdGFuY2VzIG9mIHRoZSBzdHJpbmcgJ3tvcGVyYXRpb25OYW1lfScgaXMgcmVwbGFjZWQgd2l0aCAnRXhlY3V0ZScKICAib3B0aW9uYWxQYXJhbWV0ZXJzIjogZmFsc2UsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PWZhbHNlCiAgIm91dHB1dEZvbGRlciI6ICIuLi9DdXN0b21PdXRwdXQiIC8vIE9wdGlvbmFsLiBEZWZhdWx0PS4vR2VuZXJhdGVkCiAgIm91dHB1dEZpbGVuYW1lIjogIlJlZml0SW50ZXJmYWNlLmNzIiwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9T3V0cHV0LmNzIGZvciBDTEkgdG9vbAogICJjb250cmFjdHNPdXRwdXRGb2xkZXIiOiAiLi4vQ29udHJhY3RzIiwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9TlVMTAogICJnZW5lcmF0ZU11bHRpcGxlRmlsZXMiOiBmYWxzZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9ZmFsc2UKICAiYWRkaXRpb25hbE5hbWVzcGFjZXMiOiBbIC8vIE9wdGlvbmFsCiAgICAiTmFtZXNwYWNlMSIsCiAgICAiTmFtZXNwYWNlMiIKICBdLAogICJpbmNsdWRlVGFncyI6IFsgLy8gT3B0aW9uYWwuIE9wZW5BUEkgVGFnIHRvIGluY2x1ZGUgd2hlbiBnZW5lcmF0aW5nIGNvZGUKICAgICJQZXQiLAogICAgIlN0b3JlIiwKICAgICJVc2VyIgogIF0sCiAgImluY2x1ZGVQYXRoTWF0Y2hlcyI6IFsgLy8gT3B0aW9uYWwuIE9ubHkgaW5jbHVkZSBQYXRocyB0aGF0IG1hdGNoIHRoZSBwcm92aWRlZCByZWd1bGFyIGV4cHJlc3Npb24KICAgICJeL3BldC8uKiIsCiAgICAiXi9zdG9yZS8uKiIKICBdLAogICJ0cmltVW51c2VkU2NoZW1hIjogZmFsc2UsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PWZhbHNlCiAgImtlZXBTY2hlbWFQYXR0ZXJucyI6IFsgLy8gT3B0aW9uYWwuIEZvcmNlIHRvIGtlZXAgbWF0Y2hpbmcgc2NoZW1hLCB1c2VzIHJlZ3VsYXIgZXhwcmVzc2lvbnMuIFVzZSB0b2dldGhlciB3aXRoIHRyaW1VbnVzZWRTY2hlbWE9dHJ1ZQogICAgIl5Nb2RlbCQiLAogICAgIl5QZXJzb24uKyIKICBdLAogICJpbmNsdWRlSW5oZXJpdGFuY2VIaWVyYXJjaHkiOiBmYWxzZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9ZmFsc2UuIFNldCB0byB0cnVlIHRvIGtlZXAgYWxsIHBvc3NpYmxlIHR5cGUtaW5zdGFuY2VzIG9mIGluaGVyaXRhbmNlL3VuaW9uIHR5cGVzLiBUaGlzIHdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdHJpbVVudXNlZFNjaGVtYS4KICAiZ2VuZXJhdGVEZWZhdWx0QWRkaXRpb25hbFByb3BlcnRpZXMiOiB0cnVlLCAvLyBPcHRpb25hbC4gZGVmYXVsdD10cnVlCiAgIm9wZXJhdGlvbk5hbWVHZW5lcmF0b3IiOiAiRGVmYXVsdCIsIC8vIE9wdGlvbmFsLiBNYXkgYmUgb25lIG9mIERlZmF1bHQsIE11bHRpcGxlQ2xpZW50c0Zyb21PcGVyYXRpb25JZCwgTXVsdGlwbGVDbGllbnRzRnJvbVBhdGhTZWdtZW50cywgTXVsdGlwbGVDbGllbnRzRnJvbUZpcnN0VGFnQW5kT3BlcmF0aW9uSWQsIE11bHRpcGxlQ2xpZW50c0Zyb21GaXJzdFRhZ0FuZE9wZXJhdGlvbk5hbWUsIE11bHRpcGxlQ2xpZW50c0Zyb21GaXJzdFRhZ0FuZFBhdGhTZWdtZW50cywgU2luZ2xlQ2xpZW50RnJvbU9wZXJhdGlvbklkLCBTaW5nbGVDbGllbnRGcm9tUGF0aFNlZ21lbnRzCiAgImltbXV0YWJsZVJlY29yZHMiOiBmYWxzZSwKICAidXNlRHluYW1pY1F1ZXJ5c3RyaW5nUGFyYW1ldGVycyI6IHRydWUsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PWZhbHNlCiAgInVzZVBvbHltb3JwaGljU2VyaWFsaXphdGlvbiI6IHRydWUsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PWZhbHNlCiAgImdlbmVyYXRlRGlzcG9zYWJsZUNsaWVudHMiOiB0cnVlLCAvLyBPcHRpb25hbC4gRGVmYXVsdD1mYWxzZQogICJkZXBlbmRlbmN5SW5qZWN0aW9uU2V0dGluZ3MiOiB7IC8vIE9wdGlvbmFsCiAgICAiYmFzZVVybCI6ICJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIsIC8vIE9wdGlvbmFsLiBMZWF2ZSB0aGlzIGJsYW5rIHRvIHNldCB0aGUgYmFzZSBhZGRyZXNzIG1hbnVhbGx5CiAgICAiaHR0cE1lc3NhZ2VIYW5kbGVycyI6IFsgLy8gT3B0aW9uYWwKICAgICAgICAiQXV0aG9yaXphdGlvbk1lc3NhZ2VIYW5kbGVyIiwKICAgICAgICAiVGVsZW1ldHJ5TWVzc2FnZUhhbmRsZXIiCiAgICBdLAogICAgInVzZVBvbGx5IjogdHJ1ZSwgLy8gREVQUkVDQVRFRCAtIFVzZSAidHJhbnNpZW50RXJyb3JIYW5kbGVyIjogIk5vbmV8UG9sbHl8SHR0cFJlc2lsaWVuY2UiIGluc3RlYWQKICAgICJ0cmFuc2llbnRFcnJvckhhbmRsZXIiOiAiSHR0cFJlc2lsaWVuY2UiLCAvLyBPcHRpb25hbC4gU2V0IHRoaXMgdG8gY29uZmlndXJlIHRyYW5zaWVudCBlcnJvciBoYW5kbGluZyB3aXRoIGEgcmV0cnkgcG9saWN5IHRoYXQgdXNlcyBhIGppdHRlcmVkIGJhY2tvZmYuIE1heSBiZSBvbmUgb2YgTm9uZSwgUG9sbHksIEh0dHBSZXNpbGllbmNlCiAgICAibWF4UmV0cnlDb3VudCI6IDMsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PTYKICAgICJmaXJzdEJhY2tvZmZSZXRyeUluU2Vjb25kcyI6IDAuNSAvLyBPcHRpb25hbC4gRGVmYXVsdD0xLjAKICB9LAogICJhcGl6clNldHRpbmdzIjogeyAvLyBPcHRpb25hbAogICAgIndpdGhSZXF1ZXN0T3B0aW9ucyI6IHRydWUsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PXRydWUKICAgICJ3aXRoUmVnaXN0cmF0aW9uSGVscGVyIjogdHJ1ZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9ZmFsc2UKICAgICJ3aXRoQ2FjaGVQcm92aWRlciI6ICJJbk1lbW9yeSIsIC8vIE9wdGlvbmFsLiBWYWx1ZXM9Tm9uZXxBa2F2YWNoZXxNb25rZXlDYWNoZXxJbk1lbW9yeXxEaXN0cmlidXRlZEFzU3RyaW5nfERpc3RyaWJ1dGVkQXNCeXRlQXJyYXkuIERlZmF1bHQ9Tm9uZQogICAgIndpdGhQcmlvcml0eSI6IHRydWUsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PWZhbHNlCiAgICAid2l0aE1lZGlhdGlvbiI6IHRydWUsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PWZhbHNlCiAgICAid2l0aE9wdGlvbmFsTWVkaWF0aW9uIjogdHJ1ZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9ZmFsc2UKICAgICJ3aXRoTWFwcGluZ1Byb3ZpZGVyIjogIkF1dG9NYXBwZXIiLCAvLyBPcHRpb25hbC4gVmFsdWVzPU5vbmV8QXV0b01hcHBlcnxNYXBzdGVyLiBEZWZhdWx0PU5vbmUKICAgICJ3aXRoRmlsZVRyYW5zZmVyIjogdHJ1ZSAvLyBPcHRpb25hbC4gRGVmYXVsdD1mYWxzZQogIH0sCiAgImNvZGVHZW5lcmF0b3JTZXR0aW5ncyI6IHsgLy8gT3B0aW9uYWwuIERlZmF1bHQgc2V0dGluZ3MgYXJlIHRoZSB2YWx1ZXMgc2V0IGluIHRoaXMgZXhhbXBsZQogICAgInJlcXVpcmVkUHJvcGVydGllc011c3RCZURlZmluZWQiOiB0cnVlLAogICAgImdlbmVyYXRlRGF0YUFubm90YXRpb25zIjogdHJ1ZSwKICAgICJhbnlUeXBlIjogIm9iamVjdCIsCiAgICAiZGF0ZVR5cGUiOiAiU3lzdGVtLkRhdGVUaW1lT2Zmc2V0IiwKICAgICJkYXRlVGltZVR5cGUiOiAiU3lzdGVtLkRhdGVUaW1lT2Zmc2V0IiwKICAgICJ0aW1lVHlwZSI6ICJTeXN0ZW0uVGltZVNwYW4iLAogICAgInRpbWVTcGFuVHlwZSI6ICJTeXN0ZW0uVGltZVNwYW4iLAogICAgImFycmF5VHlwZSI6ICJTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5JQ29sbGVjdGlvbiIsCiAgICAiZGljdGlvbmFyeVR5cGUiOiAiU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuSURpY3Rpb25hcnkiLAogICAgImFycmF5SW5zdGFuY2VUeXBlIjogIlN5c3RlbS5Db2xsZWN0aW9ucy5PYmplY3RNb2RlbC5Db2xsZWN0aW9uIiwKICAgICJkaWN0aW9uYXJ5SW5zdGFuY2VUeXBlIjogIlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkRpY3Rpb25hcnkiLAogICAgImFycmF5QmFzZVR5cGUiOiAiU3lzdGVtLkNvbGxlY3Rpb25zLk9iamVjdE1vZGVsLkNvbGxlY3Rpb24iLAogICAgImRpY3Rpb25hcnlCYXNlVHlwZSI6ICJTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5EaWN0aW9uYXJ5IiwKICAgICJpbnRlZ2VyVHlwZSI6ICJJbnQzMiIsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PSJJbnQzMiIuIFRoZSAuTkVUIHR5cGUgZm9yIE9wZW5BUEkgaW50ZWdlcnMgd2l0aG91dCBhIGZvcm1hdC4gUG9zc2libGUgdmFsdWVzOiAiSW50MzIiLCAiSW50NjQiCiAgICAicHJvcGVydHlTZXR0ZXJBY2Nlc3NNb2RpZmllciI6ICIiLAogICAgImdlbmVyYXRlSW1tdXRhYmxlQXJyYXlQcm9wZXJ0aWVzIjogZmFsc2UsCiAgICAiZ2VuZXJhdGVJbW11dGFibGVEaWN0aW9uYXJ5UHJvcGVydGllcyI6IGZhbHNlLAogICAgImhhbmRsZVJlZmVyZW5jZXMiOiBmYWxzZSwKICAgICJqc29uU2VyaWFsaXplclNldHRpbmdzVHJhbnNmb3JtYXRpb25NZXRob2QiOiBudWxsLAogICAgImdlbmVyYXRlSnNvbk1ldGhvZHMiOiBmYWxzZSwKICAgICJlbmZvcmNlRmxhZ0VudW1zIjogZmFsc2UsCiAgICAiaW5saW5lTmFtZWREaWN0aW9uYXJpZXMiOiBmYWxzZSwKICAgICJpbmxpbmVOYW1lZFR1cGxlcyI6IHRydWUsCiAgICAiaW5saW5lTmFtZWRBcnJheXMiOiBmYWxzZSwKICAgICJnZW5lcmF0ZU9wdGlvbmFsUHJvcGVydGllc0FzTnVsbGFibGUiOiBmYWxzZSwKICAgICJnZW5lcmF0ZU51bGxhYmxlUmVmZXJlbmNlVHlwZXMiOiBmYWxzZSwKICAgICJnZW5lcmF0ZU5hdGl2ZVJlY29yZHMiOiBmYWxzZSwKICAgICJnZW5lcmF0ZURlZmF1bHRWYWx1ZXMiOiB0cnVlLAogICAgImlubGluZU5hbWVkQW55IjogZmFsc2UsCiAgICAiaW5saW5lSnNvbkNvbnZlcnRlcnMiOiB0cnVlLCAvLyBPcHRpb25hbC4gRGVmYXVsdD10cnVlLiBTZXQgdG8gZmFsc2UgdG8gbm90IGdlbmVyYXRlIEpzb25Db252ZXJ0ZXIgYXR0cmlidXRlcyBmb3IgZW51bSBwcm9wZXJ0aWVzCiAgICAiZGF0ZUZvcm1hdCI6ICJ5eXl5LU1NLWRkIiwKICAgICJkYXRlVGltZUZvcm1hdCI6ICJ5eXl5LU1NLWRkIiwKICAgICJleGNsdWRlZFR5cGVOYW1lcyI6IFsKICAgICAgIkV4Y2x1ZGVkVHlwZUZvbyIsCiAgICAgICJFeGNsdWRlZFR5cGVCYXIiCiAgICBdLAogICAgImN1c3RvbVRlbXBsYXRlRGlyZWN0b3J5IjogIi4vcGF0aC90by9kaXJlY3RvcnkvIiAvLyBPcHRpb25hbC4gU2VlIDxodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvVGVtcGxhdGVzPgogIH0KfQpgYGAKCi0gYG9wZW5BcGlQYXRoYCAtIHBvaW50cyB0byB0aGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9ucyBmaWxlLiBUaGlzIGNhbiBiZSB0aGUgcGF0aCB0byBhIGZpbGUgc3RvcmVkIG9uIGRpc2ssIHJlbGF0aXZlIHRvIHRoZSBgLnJlZml0dGVyYCBmaWxlLiBUaGlzIGNhbiBhbHNvIGJlIGEgVVJMIHRvIGEgcmVtb3RlIGZpbGUgdGhhdCB3aWxsIGJlIGRvd25sb2FkZWQgb3ZlciBIVFRQL0hUVFBTCi0gYG5hbWVzcGFjZWAgLSB0aGUgbmFtZXNwYWNlIHVzZWQgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGlzIGRlZmF1bHRzIHRvIGBHZW5lcmF0ZWRDb2RlYAotIGBuYW1pbmcudXNlT3BlbkFwaVRpdGxlYCAtIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIE9wZW5BcGkgdGl0bGUgc2hvdWxkIGJlIHVzZWQuIERlZmF1bHQgaXMgYHRydWVgCi0gYG5hbWluZy5pbnRlcmZhY2VOYW1lYCAtIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgaW50ZXJmYWNlLiBUaGUgZ2VuZXJhdGVkIGNvZGUgd2lsbCBhdXRvbWF0aWNhbGx5IHByZWZpeCB0aGlzIHdpdGggYElgIHNvIGlmIHRoaXMgc2V0IHRvIGBNeUFwaUNsaWVudGAgdGhlbiB0aGUgZ2VuZXJhdGVkIGludGVyZmFjZSBpcyBjYWxsZWQgYElNeUFwaUNsaWVudGAuIERlZmF1bHQgaXMgYEFwaUNsaWVudGAKLSBgZ2VuZXJhdGVDb250cmFjdHNgIC0gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBjb250cmFjdHMgc2hvdWxkIGJlIGdlbmVyYXRlZC4gQSB1c2UgY2FzZSBmb3IgdGhpcyBpcyBzZXZlcmFsIEFQSSBjbGllbnRzIHVzZSB0aGUgc2FtZSBjb250cmFjdHMuIERlZmF1bHQgaXMgYHRydWVgCi0gYGdlbmVyYXRlQ2xpZW50c2A6ICAtIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgY2xpZW50cyBzaG91bGQgYmUgZ2VuZXJhdGVkLiBBIHVzZSBjYXNlIGZvciB0aGlzIGlzIHRvIHNlcGVyYXRlIGNsaWVudHMgYW5kIGNvbnRyYWN0cyBpbiB0d28gZ2VuZXJhdGlvbgotIGBnZW5lcmF0ZVhtbERvY0NvZGVDb21tZW50c2AgLSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIFhNTCBkb2MgY29tbWVudHMgc2hvdWxkIGJlIGdlbmVyYXRlZC4gRGVmYXVsdCBpcyBgdHJ1ZWAKLSBgZ2VuZXJhdGVTdGF0dXNDb2RlQ29tbWVudHNgIC0gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgWE1MIGRvY3MgZm9yIGBBcGlFeGNlcHRpb25gIGFuZCBgSUFwaVJlc3BvbnNlYCBjb250YWluIGRldGFpbGVkIGRlc2NyaXB0aW9ucyBmb3IgZXZlcnkgZG9jdW1lbnRlZCBzdGF0dXMgY29kZS4gRGVmYXVsdCBpcyBgdHJ1ZWAKLSBgYWRkQXV0b0dlbmVyYXRlZEhlYWRlcmAgLSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIFhNTCBkb2MgY29tbWVudHMgc2hvdWxkIGJlIGdlbmVyYXRlZC4gRGVmYXVsdCBpcyBgdHJ1ZWAKLSBgYWRkQWNjZXB0SGVhZGVyc2AgLSAgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0byBhZGQgYWNjZXB0IGhlYWRlcnMgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXS4gRGVmYXVsdCBpcyBgdHJ1ZWAKLSBgcmV0dXJuSUFwaVJlc3BvbnNlYCAtIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gcmV0dXJuIGBJQXBpUmVzcG9uc2U8VD5gIG9iamVjdHMuIERlZmF1bHQgaXMgYGZhbHNlYAotIGByZXNwb25zZVR5cGVPdmVycmlkZWAgLSBhIGRpY3Rpb25hcnkgd2l0aCBvcGVyYXRpb24gaWRzIChhcyBzcGVjaWZpZWQgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQpIGFuZCBhIHBhcnRpY3VsYXIgcmV0dXJuIHR5cGUgdG8gdXNlLiBUaGUgdHlwZXMgYXJlIHdyYXBwZWQgaW4gYSB0YXNrLCBidXQgb3RoZXJ3aXNlIHVubW9kaWZpZWQgKHNvIG1ha2Ugc3VyZSB0byBzcGVjaWZ5IG9yIGltcG9ydCB0aGVpciBuYW1lc3BhY2VzKS4gRGVmYXVsdCBpcyBge31gCi0gYGdlbmVyYXRlT3BlcmF0aW9uSGVhZGVyc2AgLSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRvIHVzZSBvcGVyYXRpb24gaGVhZGVycyBpbiB0aGUgZ2VuZXJhdGVkIG1ldGhvZHMuIERlZmF1bHQgaXMgYHRydWVgCi0gYGlnbm9yZWRPcGVyYXRpb25IZWFkZXJzYCAtIEEgY29sbGVjdGlvbiBvZiBoZWFkZXJzIHRvIG9taXQgZnJvbSBvcGVyYXRpb24gc2lnbmF0dXJlcy4gRGVmYXVsdCBpcyBgW11gCi0gYHR5cGVBY2Nlc3NpYmlsaXR5YCAtIHRoZSBnZW5lcmF0ZWQgdHlwZSBhY2Nlc3NpYmlsaXR5LiBQb3NzaWJsZSB2YWx1ZXMgYXJlIGBQdWJsaWNgIGFuZCBgSW50ZXJuYWxgLiBEZWZhdWx0IGlzIGBQdWJsaWNgCi0gYHVzZUNhbmNlbGxhdGlvblRva2Vuc2AgLSBVc2UgY2FuY2VsbGF0aW9uIHRva2VucyBpbiB0aGUgZ2VuZXJhdGVkIG1ldGhvZHMuIERlZmF1bHQgaXMgYGZhbHNlYAotIGB1c2VJc29EYXRlRm9ybWF0YCAtIFNldCB0byBgdHJ1ZWAgdG8gZXhwbGljaXRseSBmb3JtYXQgZGF0ZSBxdWVyeSBzdHJpbmcgcGFyYW1ldGVycyBpbiBJU08gODYwMSBzdGFuZGFyZCBkYXRlIGZvcm1hdCB1c2luZyBkZWxpbWl0ZXJzIChmb3IgZXhhbXBsZTogMjAyMy0wNi0xNSkuIERlZmF1bHQgaXMgYGZhbHNlYAotIGBtdWx0aXBsZUludGVyZmFjZXNgIC0gU2V0IHRvIGBCeUVuZHBvaW50YCB0byBnZW5lcmF0ZSBhbiBpbnRlcmZhY2UgZm9yIGVhY2ggZW5kcG9pbnQsIG9yIGBCeVRhZ2AgdG8gZ3JvdXAgRW5kcG9pbnRzIGJ5IHRoZWlyIFRhZyAobGlrZSBTd2FnZ2VyVUkgZ3JvdXBzIHRoZW0pLgotIGBvdXRwdXRGb2xkZXJgIC0gYSBzdHJpbmcgZGVzY3JpYmluZyBhIHJlbGF0aXZlIHBhdGggdG8gYSBkZXNpcmVkIG91dHB1dCBmb2xkZXIuIERlZmF1bHQgaXMgYC4vR2VuZXJhdGVkYAotIGBvdXRwdXRGaWxlbmFtZWAgLSBPdXRwdXQgZmlsZW5hbWUuIERlZmF1bHQgaXMgYE91dHB1dC5jc2Agd2hlbiB1c2VkIGZyb20gdGhlIENMSSB0b29sLCBvdGhlcndpc2UgaXRzIHRoZSAucmVmaXR0ZXIgZmlsZW5hbWUuIFNvIGBQZXRzdG9yZS5yZWZpdHRlcmAgYmVjb21lcyBgUGV0c3RvcmUuY3NgLgotIGBhZGRpdGlvbmFsTmFtZXNwYWNlc2AgLSBBIGNvbGxlY3Rpb24gb2YgYWRkaXRpb25hbCBuYW1lc3BhY2VzIHRvIGluY2x1ZGUgaW4gdGhlIGdlbmVyYXRlZCBmaWxlLiBBIHVzZSBjYXNlIGZvciB0aGlzIGlzIHdoZW4geW91IHdhbnQgdG8gcmV1c2UgY29udHJhY3RzIGZyb20gYSBkaWZmZXJlbnQgbmFtZXNwYWNlIHRoYW4gdGhlIGdlbmVyYXRlZCBjb2RlLiBEZWZhdWx0IGlzIGVtcHR5Ci0gYGluY2x1ZGVUYWdzYCAtIEEgY29sbGVjdGlvbiBvZiB0YWdzIHRvIHVzZSBhIGZpbHRlciBmb3IgaW5jbHVkaW5nIGVuZHBvaW50cyB0aGF0IGNvbnRhaW4gdGhpcyB0YWcuCi0gYGluY2x1ZGVQYXRoTWF0Y2hlc2AgLSBBIGNvbGxlY3Rpb24gb2YgcmVndWxhciBleHByZXNzaW9ucyB1c2VkIHRvIGZpbHRlciBwYXRocy4KLSBgZ2VuZXJhdGVEZXByZWNhdGVkT3BlcmF0aW9uc2AgLSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGRlcHJlY2F0ZWQgb3BlcmF0aW9ucyBzaG91bGQgYmUgZ2VuZXJhdGVkIG9yIHNraXBwZWQuIERlZmF1bHQgaXMgYHRydWVgCi0gYG9wZXJhdGlvbk5hbWVUZW1wbGF0ZWAgLSBHZW5lcmF0ZSBvcGVyYXRpb24gbmFtZXMgdXNpbmcgcGF0dGVybi4gVGhpcyBtdXN0IGNvbnRhaW4gdGhlIHN0cmluZyB7b3BlcmF0aW9uTmFtZX0uIEFuIGV4YW1wbGUgdXNhZ2Ugb2YgdGhpcyBjb3VsZCBiZSBge29wZXJhdGlvbk5hbWV9QXN5bmNgIHRvIHN1ZmZpeCBhbGwgbWV0aG9kIG5hbWVzIHdpdGggQXN5bmMuIFdoZW4gdXNpbmcgbXVsdGlwbGUgaW50ZXJmYWNlcyB3aXRoIGBCeUVuZHBvaW50YCwgdGhpcyBpcyBuYW1lIG9mIHRoZSBFeGVjdXRlKCkgbWV0aG9kIGluIHRoZSBpbnRlcmZhY2Ugd2hlcmUgYWxsIGluc3RhbmNlcyBvZiB0aGUgc3RyaW5nICd7b3BlcmF0aW9uTmFtZX0nIGlzIHJlcGxhY2VkIHdpdGggJ0V4ZWN1dGUnCi0gYG9wdGlvbmFsUGFyYW1ldGVyc2AgLSBHZW5lcmF0ZSBub24tcmVxdWlyZWQgcGFyYW1ldGVycyBhcyBudWxsYWJsZSBvcHRpb25hbCBwYXJhbWV0ZXJzCi0gYHRyaW1VbnVzZWRTY2hlbWFgIC0gUmVtb3ZlcyB1bnJlZmVyZW5jZWQgY29tcG9uZW50cyBzY2hlbWEgdG8ga2VlcCB0aGUgZ2VuZXJhdGVkIG91dHB1dCB0byBhIG1pbmltdW0KLSBga2VlcFNjaGVtYVBhdHRlcm5zYDogQSBjb2xsZWN0aW9uIG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gZm9yY2UgdG8ga2VlcCBtYXRjaGluZyBzY2hlbWEuIFRoaXMgaXMgdXNlZCB0b2dldGhlciB3aXRoIGB0cmltVW51c2VkU2NoZW1hYAotIGBpbmNsdWRlSW5oZXJpdGFuY2VIaWVyYXJjaHlgOiBTZXQgdG8gdHJ1ZSB0byBrZWVwIGFsbCBwb3NzaWJsZSB0eXBlLWluc3RhbmNlcyBvZiBpbmhlcml0YW5jZS91bmlvbiB0eXBlcy4gSWYgdGhpcyBpcyBmYWxzZSBvbmx5IGRpcmVjdGx5IHJlZmVyZW5jZWQgdHlwZXMgd2lsbCBiZSBrZXB0LiBUaGlzIHdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggYHRyaW1VbnVzZWRTY2hlbWFgCi0gYGdlbmVyYXRlRGVmYXVsdEFkZGl0aW9uYWxQcm9wZXJ0aWVzYDogU2V0IHRvIGBmYWxzZWAgdG8gc2tpcCBkZWZhdWx0IGFkZGl0aW9uYWwgcHJvcGVydGllcy4gRGVmYXVsdCBpcyBgdHJ1ZWAKLSBgb3BlcmF0aW9uTmFtZUdlbmVyYXRvcmA6IFRoZSBOU3dhZyBgSU9wZXJhdGlvbk5hbWVHZW5lcmF0b3JgIGltcGxlbWVudGF0aW9uIHRvIHVzZS4gU2VlIDxodHRwczovL3JlZml0dGVyLmdpdGh1Yi5pby9hcGkvUmVmaXR0ZXIuQ29yZS5PcGVyYXRpb25OYW1lR2VuZXJhdG9yVHlwZXMuaHRtbD4KLSBgaW1tdXRhYmxlUmVjb3Jkc2A6IFNldCB0byBgdHJ1ZWAgdG8gZ2VuZXJhdGUgY29udHJhY3RzIGFzIGltbXV0YWJsZSByZWNvcmRzIGluc3RlYWQgb2YgY2xhc3Nlcy4gRGVmYXVsdCBpcyBgZmFsc2VgCi0gYHVzZUR5bmFtaWNRdWVyeXN0cmluZ1BhcmFtZXRlcnNgOiBTZXQgdG8gYHRydWVgIHRvIHdyYXAgbXVsdGlwbGUgcXVlcnkgcGFyYW1ldGVycyBpbnRvIGEgc2luZ2xlIGNvbXBsZXggb25lLiBEZWZhdWx0IGlzIGBmYWxzZWAgKG5vIHdyYXBwaW5nKS4gU2VlIDxodHRwczovL2dpdGh1Yi5jb20vcmVhY3RpdmV1aS9yZWZpdD90YWI9cmVhZG1lLW92LWZpbGUjZHluYW1pYy1xdWVyeXN0cmluZy1wYXJhbWV0ZXJzPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSBgZGVwZW5kZW5jeUluamVjdGlvblNldHRpbmdzYCAtIFNldHRpbmcgdGhpcyB3aWxsIGdlbmVyYXRlZCBleHRlbnNpb24gbWV0aG9kcyB0byBgSVNlcnZpY2VDb2xsZWN0aW9uYCBmb3IgY29uZmlndXJpbmcgUmVmaXQgY2xpZW50cwogIC0gYGJhc2VVcmxgIC0gVXNlZCBhcyB0aGUgSHR0cENsaWVudCBiYXNlIGFkZHJlc3MuIExlYXZlIHRoaXMgYmxhbmsgdG8gbWFudWFsbHkgc2V0IHRoZSBiYXNlIFVSTAogIC0gYGh0dHBNZXNzYWdlSGFuZGxlcnNgIC0gQSBjb2xsZWN0aW9uIG9mIGBIdHRwTWVzc2FnZUhhbmRsZXJgIHRoYXQgaXMgYWRkZWQgdG8gdGhlIEh0dHBDbGllbnQgcGlwZWxpbmUKICAtIGB1c2VQb2xseWAgLSBTZXQgdGhpcyB0byBgdHJ1ZWAgdG8gY29uZmlndXJlIHRoZSBIdHRwQ2xpZW50IHRvIHVzZSBQb2xseSB1c2luZyBhIHJldHJ5IHBvbGljeSB3aXRoIGEgaml0dGVyZWQgYmFja29mZi4gIFRoaXMgaXMgKipERVBSRUNBVEVEKiosIHVzZSBgdHJhbnNpZW50RXJyb3JIYW5kbGVyYCBpbnN0ZWFkCiAgLSBgdHJhbnNpZW50RXJyb3JIYW5kbGVyYDogU2V0IHRoaXMgdG8gY29uZmlndXJlIHRyYW5zaWVudCBlcnJvciBoYW5kbGluZyB3aXRoIGEgcmV0cnkgcG9saWN5IHRoYXQgdXNlcyBhIGppdHRlcmVkIGJhY2tvZmYuIFNlZSA8aHR0cHM6Ly9yZWZpdHRlci5naXRodWIuaW8vYXBpL1JlZml0dGVyLkNvcmUuVHJhbnNpZW50RXJyb3JIYW5kbGVyLmh0bWw+CiAgLSBgZmlyc3RCYWNrb2ZmUmV0cnlJblNlY29uZHNgIC0gVGhpcyBpcyB0aGUgZHVyYXRpb24gb2YgdGhlIGluaXRpYWwgcmV0cnkgYmFja29mZi4gRGVmYXVsdCBpcyAxIHNlY29uZAotIGBhcGl6clNldHRpbmdzYCAtIFNldHRpbmcgdGhpcyB3aWxsIGZvcm1hdCBSZWZpdCBpbnRlcmZhY2UgdG8gYmUgbWFuYWdlZCBieSBBcGl6ci4gU2VlIDxodHRwczovL3d3dy5hcGl6ci5uZXQ+IGZvciBtb3JlIGluZm9ybWF0aW9uCiAgLSBgd2l0aFJlcXVlc3RPcHRpb25zYCAtIFRlbGxzIGlmIHRoZSBSZWZpdCBpbnRlcmZhY2UgbWV0aG9kcyBzaG91bGQgaGF2ZSBhIGZpbmFsIElBcGl6clJlcXVlc3RPcHRpb25zIG9wdGlvbnMgcGFyYW1ldGVyCiAgLSBgd2l0aFJlZ2lzdHJhdGlvbkhlbHBlcmAgLSBUZWxscyBpZiBSZWZpdHRlciBzaG91bGQgZ2VuZXJhdGUgQXBpenIgcmVnaXN0cmF0aW9uIGhlbHBlcnMgKGV4dGVuZGVkIHdpdGggZGVwZW5kZW5jeUluamVjdGlvblNldHRpbmdzIHNldCwgb3RoZXJ3aXNlIHN0YXRpYykKICAtIGB3aXRoQ2FjaGVQcm92aWRlcmAgLSBTZXQgdGhlIGNhY2hlIHByb3ZpZGVyIHRvIGJlIHVzZWQKICAtIGB3aXRoUHJpb3JpdHlgIC0gVGVsbHMgaWYgQXBpenIgc2hvdWxkIGhhbmRsZSByZXF1ZXN0IHByaW9yaXR5CiAgLSBgd2l0aE1lZGlhdGlvbmAgLSBUZWxscyBpZiBBcGl6ciBzaG91bGQgaGFuZGxlIHJlcXVlc3QgbWVkaWF0aW9uIChleHRlbmRlZCBvbmx5KQogIC0gYHdpdGhPcHRpb25hbE1lZGlhdGlvbmAgLSBUZWxscyBpZiBBcGl6ciBzaG91bGQgaGFuZGxlIG9wdGlvbmFsIHJlcXVlc3QgbWVkaWF0aW9uIChleHRlbmRlZCBvbmx5KQogIC0gYHdpdGhNYXBwaW5nUHJvdmlkZXJgIC0gU2V0IHRoZSBtYXBwaW5nIHByb3ZpZGVyIHRvIGJlIHVzZWQKICAtIGB3aXRoRmlsZVRyYW5zZmVyYCAtIFRlbGxzIGlmIEFwaXpyIHNob3VsZCBoYW5kbGUgZmlsZSB0cmFuc2ZlcgotIGBjb2RlR2VuZXJhdG9yU2V0dGluZ3NgIC0gU2V0dGluZyB0aGlzIGFsbG93cyBjdXN0b21pemF0aW9uIG9mIHRoZSBOU3dhZyBnZW5lcmF0ZWQgdHlwZXMgYW5kIGNvbnRyYWN0cwogIC0gYHJlcXVpcmVkUHJvcGVydGllc011c3RCZURlZmluZWRgIC0gRGVmYXVsdCBpcyB0cnVlLAogIC0gYGdlbmVyYXRlRGF0YUFubm90YXRpb25zYCAtIERlZmF1bHQgaXMgdHJ1ZSwKICAtIGBhbnlUeXBlYCAtIERlZmF1bHQgaXMgYG9iamVjdGAsCiAgLSBgZGF0ZVR5cGVgIC0gRGVmYXVsdCBpcyBgU3lzdGVtLkRhdGVUaW1lT2Zmc2V0YCwKICAtIGBkYXRlVGltZVR5cGVgIC0gRGVmYXVsdCBpcyBgU3lzdGVtLkRhdGVUaW1lT2Zmc2V0YCwKICAtIGB0aW1lVHlwZWAgLSBEZWZhdWx0IGlzIGBTeXN0ZW0uVGltZVNwYW5gLAogIC0gYHRpbWVTcGFuVHlwZWAgLSBEZWZhdWx0IGlzIGBTeXN0ZW0uVGltZVNwYW5gLAogIC0gYGFycmF5VHlwZWAgLSBEZWZhdWx0IGlzIGBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5JQ29sbGVjdGlvbmAsCiAgLSBgZGljdGlvbmFyeVR5cGVgIC0gRGVmYXVsdCBpcyBgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuSURpY3Rpb25hcnlgLAogIC0gYGFycmF5SW5zdGFuY2VUeXBlYCAtIERlZmF1bHQgaXMgYFN5c3RlbS5Db2xsZWN0aW9ucy5PYmplY3RNb2RlbC5Db2xsZWN0aW9uYCwKICAtIGBkaWN0aW9uYXJ5SW5zdGFuY2VUeXBlYCAtIERlZmF1bHQgaXMgYFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkRpY3Rpb25hcnlgLAogIC0gYGFycmF5QmFzZVR5cGVgIC0gRGVmYXVsdCBpcyBgU3lzdGVtLkNvbGxlY3Rpb25zLk9iamVjdE1vZGVsLkNvbGxlY3Rpb25gLAogIC0gYGRpY3Rpb25hcnlCYXNlVHlwZWAgLSBEZWZhdWx0IGlzIGBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5EaWN0aW9uYXJ5YCwKICAtIGBpbnRlZ2VyVHlwZWAgLSBEZWZhdWx0IGlzIGBJbnQzMmAuIFRoZSAuTkVUIHR5cGUgdG8gdXNlIGZvciBPcGVuQVBJIGludGVnZXIgdHlwZXMgd2l0aG91dCBhIGZvcm1hdCBzcGVjaWZpZXIuIFBvc3NpYmxlIHZhbHVlczogYEludDMyYCwgYEludDY0YAogIC0gYHByb3BlcnR5U2V0dGVyQWNjZXNzTW9kaWZpZXJgIC0gRGVmYXVsdCBpcyBgYCwKICAtIGBnZW5lcmF0ZUltbXV0YWJsZUFycmF5UHJvcGVydGllc2AgLSBEZWZhdWx0IGlzIGZhbHNlLAogIC0gYGdlbmVyYXRlSW1tdXRhYmxlRGljdGlvbmFyeVByb3BlcnRpZXNgIC0gRGVmYXVsdCBpcyBmYWxzZSwKICAtIGBoYW5kbGVSZWZlcmVuY2VzYCAtIERlZmF1bHQgaXMgZmFsc2UsCiAgLSBganNvblNlcmlhbGl6ZXJTZXR0aW5nc1RyYW5zZm9ybWF0aW9uTWV0aG9kYCAtIERlZmF1bHQgaXMgbnVsbCwKICAtIGBnZW5lcmF0ZUpzb25NZXRob2RzYCAtIERlZmF1bHQgaXMgZmFsc2UsCiAgLSBgZW5mb3JjZUZsYWdFbnVtc2AgLSBEZWZhdWx0IGlzIGZhbHNlLAogIC0gYGlubGluZU5hbWVkRGljdGlvbmFyaWVzYCAtIERlZmF1bHQgaXMgZmFsc2UsCiAgLSBgaW5saW5lTmFtZWRUdXBsZXNgIC0gRGVmYXVsdCBpcyB0cnVlLAogIC0gYGlubGluZU5hbWVkQXJyYXlzYCAtIERlZmF1bHQgaXMgZmFsc2UsCiAgLSBgZ2VuZXJhdGVPcHRpb25hbFByb3BlcnRpZXNBc051bGxhYmxlYCAtIERlZmF1bHQgaXMgZmFsc2UsCiAgLSBgZ2VuZXJhdGVOdWxsYWJsZVJlZmVyZW5jZVR5cGVzYCAtIERlZmF1bHQgaXMgZmFsc2UsCiAgLSBgZ2VuZXJhdGVOYXRpdmVSZWNvcmRzYCAtIERlZmF1bHQgaXMgZmFsc2UKICAtIGBnZW5lcmF0ZURlZmF1bHRWYWx1ZXNgIC0gRGVmYXVsdCBpcyB0cnVlCiAgLSBgaW5saW5lTmFtZWRBbnlgIC0gRGVmYXVsdCBpcyBmYWxzZQogIC0gYGlubGluZUpzb25Db252ZXJ0ZXJzYCAtIERlZmF1bHQgaXMgdHJ1ZS4gV2hlbiBzZXQgdG8gZmFsc2UsIGVudW0gcHJvcGVydGllcyB3aWxsIG5vdCBoYXZlIGBbSnNvbkNvbnZlcnRlcih0eXBlb2YoSnNvblN0cmluZ0VudW1Db252ZXJ0ZXIpKV1gIGF0dHJpYnV0ZXMKICAtIGBkYXRlRm9ybWF0YCAtIERlZmF1bHQgaXMgbnVsbAogIC0gYGRhdGVUaW1lRm9ybWF0YCAtIERlZmF1bHQgaXMgbnVsbAogIC0gYGV4Y2x1ZGVkVHlwZU5hbWVzYCAtIERlZmF1bHQgaXMgZW1wdHkKCiMjIE1TQnVpbGQKClRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoIGZvciBnZW5lcmF0aW5nIGNvZGUgZnJvbSBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGF0IGJ1aWxkIHRpbWUuIFRoZSBNU0J1aWxkIGFwcHJvYWNoIGludGVncmF0ZXMgc2VhbWxlc3NseSBpbnRvIHlvdXIgYnVpbGQgcGlwZWxpbmUsIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzIGNvZGUgYXQgYnVpbGQgdGltZQoKIyMjIFdoeSBDaG9vc2UgTVNCdWlsZCBvdmVyIFNvdXJjZSBHZW5lcmF0b3I/CgpUaGUgTVNCdWlsZCB0YXNrIG9mZmVycyBzZXZlcmFsIGFkdmFudGFnZXMgb3ZlciB0aGUgU291cmNlIEdlbmVyYXRvcjoKCi0gKipCdWlsZC10aW1lIEdlbmVyYXRpb24qKjogQ29kZSBpcyBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBwcmUtYnVpbGQgcHJvY2Vzcywgd2hpY2ggZW5zdXJlcyB0aGF0IHRoZSBSZWZpdCBzb3VyY2UgZ2VuZXJhdG9yIHdpbGwgd29yayB3aXRob3V0IG5lZWRpbmcgdG8gcmVidWlsZCBhIHNlY29uZCB0aW1lLgotICoqTm8gTWFudWFsIENvbW1pdHMqKjogR2VuZXJhdGVkIGZpbGVzIGFyZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgZHVyaW5nIGJ1aWxkLCBlbGltaW5hdGluZyB0aGUgbmVlZCB0byBjb21taXQgZ2VuZXJhdGVkIGNvZGUgdG8gc291cmNlIGNvbnRyb2wKLSAqKk5vIEFkZGl0aW9uYWwgVG9vbHMgUmVxdWlyZWQqKjogV29ya3Mgb3V0IG9mIHRoZSBib3ggd2l0aG91dCByZXF1aXJpbmcgc2VwYXJhdGUgQ0xJIHRvb2wgaW5zdGFsbGF0aW9uCgojIyMgSW5zdGFsbGF0aW9uCgpUaGUgTVNCdWlsZCB0YXNrIGlzIGRpc3RyaWJ1dGVkIGFzIGEgTnVHZXQgcGFja2FnZToKCmBgYHNoZWxsCmRvdG5ldCBhZGQgcGFja2FnZSBSZWZpdHRlci5NU0J1aWxkCmBgYAoKIyMjIFVzYWdlCgpPbmNlIGluc3RhbGxlZCwgdGhlIE1TQnVpbGQgdGFzayB3aWxsIGF1dG9tYXRpY2FsbHkgc2NhbiB5b3VyIHByb2plY3QgZm9yIGAucmVmaXR0ZXJgIGZpbGVzIGFuZCBnZW5lcmF0ZSBjb2RlIGR1cmluZyBidWlsZC4gU2ltcGx5IGNyZWF0ZSBhIGAucmVmaXR0ZXJgIGZpbGUgaW4geW91ciBwcm9qZWN0IGRpcmVjdG9yeSB3aXRoIHlvdXIgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIHNldHRpbmdzLgoKVGhlIE1TQnVpbGQgcGFja2FnZSBpbmNsdWRlcyBhIGN1c3RvbSBgLnRhcmdldGAgZmlsZSB3aGljaCBleGVjdXRlcyB0aGUgYFJlZml0dGVyR2VuZXJhdGVUYXNrYCBjdXN0b20gdGFzazoKCmBgYHhtbAo8VXNpbmdUYXNrIFRhc2tOYW1lPSJSZWZpdHRlckdlbmVyYXRlVGFzayIKICAgICAgICAgICBBc3NlbWJseUZpbGU9IiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVJlZml0dGVyLk1TQnVpbGQuZGxsIgogICAgICAgICAgIENvbmRpdGlvbj0iRXhpc3RzKCckKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlSZWZpdHRlci5NU0J1aWxkLmRsbCcpIiAvPgo8VGFyZ2V0IE5hbWU9IlJlZml0dGVyR2VuZXJhdGUiIEJlZm9yZVRhcmdldHM9IkJlZm9yZUNvbXBpbGUiPgogICAgPFJlZml0dGVyR2VuZXJhdGVUYXNrIFByb2plY3RGaWxlRGlyZWN0b3J5PSIkKE1TQnVpbGRQcm9qZWN0RGlyZWN0b3J5KSIKICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNhYmxlTG9nZ2luZz0iJChSZWZpdHRlck5vTG9nZ2luZykiCiAgICAgICAgICAgICAgICAgICAgICAgICAgU2tpcFZhbGlkYXRpb249IiQoUmVmaXR0ZXJTa2lwVmFsaWRhdGlvbikiPgogICAgICAgIDxPdXRwdXQgVGFza1BhcmFtZXRlcj0iR2VuZXJhdGVkRmlsZXMiIEl0ZW1OYW1lPSJSZWZpdHRlckdlbmVyYXRlZEZpbGVzIiAvPgogICAgPC9SZWZpdHRlckdlbmVyYXRlVGFzaz4KICAgIDxJdGVtR3JvdXA+CiAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iQChSZWZpdHRlckdlbmVyYXRlZEZpbGVzKSIgLz4KICAgIDwvSXRlbUdyb3VwPgo8L1RhcmdldD4KYGBgCgpUaGUgYFJlZml0dGVyR2VuZXJhdGVUYXNrYCB0YXNrIHdpbGwgc2NhbiB0aGUgcHJvamVjdCBmb2xkZXIgZm9yIGAucmVmaXR0ZXJgIGZpbGVzIGFuZCBleGVjdXRlIHRoZW0gYWxsLgoKIyMjIENvbmZpZ3VyYXRpb24KCkJ5IGRlZmF1bHQsIHRlbGVtZXRyeSBjb2xsZWN0aW9uIGlzIGVuYWJsZWQuIFRvIG9wdC1vdXQsIGFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgYC5jc3Byb2pgIGZpbGU6CgpgYGB4bWwKPFByb3BlcnR5R3JvdXA+CiAgPFJlZml0dGVyTm9Mb2dnaW5nPnRydWU8L1JlZml0dGVyTm9Mb2dnaW5nPgo8L1Byb3BlcnR5R3JvdXA+CmBgYAoKWW91IGNhbiBhbHNvIHNraXAgT3BlbkFQSSB2YWxpZGF0aW9uIGJ5IHNldHRpbmc6CgpgYGB4bWwKPFByb3BlcnR5R3JvdXA+CiAgPFJlZml0dGVyU2tpcFZhbGlkYXRpb24+dHJ1ZTwvUmVmaXR0ZXJTa2lwVmFsaWRhdGlvbj4KPC9Qcm9wZXJ0eUdyb3VwPgpgYGAKCiMjIyBFeGFtcGxlCgpDcmVhdGUgYSBgLnJlZml0dGVyYCBmaWxlIGluIHlvdXIgcHJvamVjdDoKCmBgYGpzb24KewogICJvcGVuQXBpUGF0aCI6ICJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92My9vcGVuYXBpLmpzb24iLAogICJuYW1lc3BhY2UiOiAiUGV0c3RvcmUuQXBpIiwKICAib3V0cHV0Rm9sZGVyIjogIi4vR2VuZXJhdGVkIgp9CmBgYAoKTm93LCBldmVyeSB0aW1lIHlvdSBidWlsZCB5b3VyIHByb2plY3QsIFJlZml0dGVyIHdpbGwgYXV0b21hdGljYWxseSBnZW5lcmF0ZSB0aGUgQVBJIGNsaWVudCBjb2RlIGJhc2VkIG9uIHlvdXIgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgoKIyMjIEFsdGVybmF0aXZlOiBVc2luZyBDTEkgd2l0aCBNU0J1aWxkIEV4ZWMgVGFzawoKSWYgeW91IHByZWZlciBtb3JlIGNvbnRyb2wgb3IgbmVlZCB0byB1c2UgdGhlIENMSSB0b29sIGRpcmVjdGx5LCB5b3UgY2FuIGludm9rZSB0aGUgUmVmaXR0ZXIgQ0xJIGZyb20gTVNCdWlsZCBwcmUtYnVpbGQgZXZlbnRzOgoKYGBgeG1sCjxUYXJnZXQgTmFtZT0iUmVmaXR0ZXIiIEFmdGVyVGFyZ2V0cz0iUHJlQnVpbGRFdmVudCI+CiAgICA8RXhlYyBXb3JraW5nRGlyZWN0b3J5PSIkKFByb2plY3REaXIpIiBDb21tYW5kPSJkb3RuZXQgdG9vbCByZXN0b3JlIiAvPgogICAgPEV4ZWMgV29ya2luZ0RpcmVjdG9yeT0iJChQcm9qZWN0RGlyKSIgQ29tbWFuZD0icmVmaXR0ZXIgLS1zZXR0aW5ncy1maWxlIC5yZWZpdHRlciAtLXNraXAtdmFsaWRhdGlvbiIgLz4KPC9UYXJnZXQ+CmBgYAoKVGhpcyBhcHByb2FjaCByZXF1aXJlcyB0aGF0IFJlZml0dGVyIGlzIGluc3RhbGxlZCBhcyBhIGxvY2FsIHRvb2wgdXNpbmcgYSBtYW5pZmVzdCBmaWxlLCBhcyBkZXNjcmliZWQgaW4gW3RoaXMgdHV0b3JpYWxdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9kb3RuZXQvY29yZS90b29scy9sb2NhbC10b29scy1ob3ctdG8tdXNlP1dULm1jX2lkPURULU1WUC01MDA0ODIyKS4KCiMjIFNvdXJjZSBHZW5lcmF0b3IKCj4gKipOb3RlOioqIFdlIHJlY29tbWVuZCB1c2luZyB0aGUgW01TQnVpbGRdKCNtc2J1aWxkKSBhcHByb2FjaCBpbnN0ZWFkIG9mIHRoZSBTb3VyY2UgR2VuZXJhdG9yIGJlY2F1c2UgdGhlIGNvZGUgaXMgZ2VuZXJhdGVkIGF0IHByZS1jb21waWxlLCBlbnN1cmluZyB0aGF0IHRoZSBSZWZpdCBzb3VyY2UgZ2VuZXJhdG9yIHdpbGwgZ2VuZXJhdGVkIGNvZGUgZnJvbSB0aGUgUmVmaXQgaW50ZXJmYWNlcyBhZGRlZCB0byB0aGUgY29tcGlsYXRpb24KClJlZml0dGVyIGlzIGF2YWlsYWJsZSBhcyBhIEMjIFNvdXJjZSBHZW5lcmF0b3IgdGhhdCB1c2VzIHRoZSBbUmVmaXR0ZXIuQ29yZV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL3RyZWUvbWFpbi9zcmMvUmVmaXR0ZXIuQ29yZSkgbGlicmFyeSBmb3IgZ2VuZXJhdGluZyBhIFJFU1QgQVBJIENsaWVudCB1c2luZyB0aGUgW1JlZml0XShodHRwczovL2dpdGh1Yi5jb20vcmVhY3RpdmV1aS9yZWZpdCkgbGlicmFyeS4gUmVmaXR0ZXIgY2FuIGdlbmVyYXRlIHRoZSBSZWZpdCBpbnRlcmZhY2UgZnJvbSBPcGVuQVBJIHNwZWNpZmljYXRpb25zLiBSZWZpdHRlciBjb3VsZCBmb3JtYXQgdGhlIGdlbmVyYXRlZCBSZWZpdCBpbnRlcmZhY2UgdG8gYmUgbWFuYWdlZCBieSBbQXBpenJdKGh0dHBzOi8vd3d3LmFwaXpyLm5ldCkgYW5kIGdlbmVyYXRlIHNvbWUgcmVnaXN0cmF0aW9uIGhlbHBlcnMgdG9vLgoKVGhlIFJlZml0dGVyIHNvdXJjZSBnZW5lcmF0b3IgaXMgYSBiaXQgdW50cmFkaXRpb25hbCBpbiBhIHNlbnNlIHRoYXQgaXQgY3JlYXRlcyBhIGZvbGRlciBjYWxsZWQgYEdlbmVyYXRlZGAgaW4gdGhlIHNhbWUgbG9jYXRpb24gYXMgdGhlIGAucmVmaXR0ZXJgIGZpbGUgYW5kIGdlbmVyYXRlcyBmaWxlcyB0byBkaXNrIHVuZGVyIHRoZSBgR2VuZXJhdGVkYCBmb2xkZXIgKGNhbiBiZSBjaGFuZ2VkIHdpdGggYC0tb3V0cHV0Rm9sZGVyYCkuIFRoZSBzb3VyY2UgZ2VuZXJhdG9yIG91dHB1dCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHByb2plY3QgYW5kIGNvbW1pdHRlZCB0byBzb3VyY2UgY29udHJvbC4gVGhpcyBpcyBkb25lIGJlY2F1c2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIHRyaWdnZXIgdGhlIFJlZml0IHNvdXJjZSBnZW5lcmF0b3IgdG8gcGlja3VwIHRoZSBSZWZpdHRlciBnZW5lcmF0ZWQgY29kZQoKKioqKFRyYW5zbGF0aW9uOiBJIGNvdWxkbid0IGZvciB0aGUgbGlmZSBvZiBtZSBmaWd1cmUgaG93IHRvIGdldCB0aGF0IHRvIHdvcmssIHNvcnJ5KSoqKgoKIyMjIEluc3RhbGxhdGlvbgoKVGhlIHNvdXJjZSBnZW5lcmF0b3IgaXMgZGlzdHJpYnV0ZWQgYXMgYSBOdUdldCBwYWNrYWdlIGFuZCBzaG91bGQgYmUgaW5zdGFsbGVkIHRvIHRoZSBwcm9qZWN0IHRoYXQgd2lsbCBjb250YWluIHRoZSBnZW5lcmF0ZWQgY29kZQoKYGBgc2hlbGwKZG90bmV0IGFkZCBwYWNrYWdlIFJlZml0dGVyLlNvdXJjZUdlbmVyYXRvcgpgYGAKCiMjIyBVc2FnZQoKVGhpcyBzb3VyY2UgZ2VuZXJhdG9yIGdlbmVyYXRlcyBjb2RlIGJhc2VkIG9uIGFueSBgLnJlZml0dGVyYCBmaWxlIGluY2x1ZGVkIHRvIHRoZSBwcm9qZWN0IGFzIGBBZGRpdGlvbmFsRmlsZXNgLgoKVGhlIGdlbmVyYXRvciBjYW4gYXV0b21hdGljYWxseSBkZXRlY3QgYWxsIGAucmVmaXR0ZXJgIGZpbGVzIGluc2lkZSB0aGUgcHJvamVjdCB0aGF0IHJlZmVyZW5jZWQgdGhlIGBSZWZpdHRlci5Tb3VyY2VHZW5lcmF0b3JgIHBhY2thZ2UgYW5kIHRoZXJlIGlzIG5vIG5lZWQgdG8gaW5jbHVkZSB0aGVtIG1hbnVhbGx5IGFzIGBBZGRpdGlvbmFsRmlsZXNgCgojIFVzaW5nIHRoZSBnZW5lcmF0ZWQgY29kZQoKSGVyZSdzIGFuIGV4YW1wbGUgZ2VuZXJhdGVkIG91dHB1dCBmcm9tIHRoZSBbU3dhZ2dlciBQZXRzdG9yZSBleGFtcGxlXShodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvKSB1c2luZyB0aGUgZGVmYXVsdCBzZXR0aW5ncwoKKipDTEkgVG9vbCoqCgpgYGBiYXNoCnJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tbmFtZXNwYWNlICJZb3VyLk5hbWVzcGFjZS5PZi5DaG9pY2UuR2VuZXJhdGVkQ29kZSIKYGBgCgoqKlNvdXJjZSBHZW5lcmF0b3IgKioqLnJlZml0dGVyKioqIGZpbGUqKgoKYGBganNvbgp7CiAgIm9wZW5BcGlQYXRoIjogIi4vb3BlbmFwaS5qc29uIiwKICAibmFtZXNwYWNlIjogIllvdXIuTmFtZXNwYWNlLk9mLkNob2ljZS5HZW5lcmF0ZWRDb2RlIgp9CmBgYAoKKipPdXRwdXQgKFNuaXBwZXQpKioKCkZ1bGwgb3V0cHV0IGlzIGF2YWlsYWJsZSBbaGVyZV0oZG9jcy9EZWZhdWx0T3V0cHV0LmNzKQoKYGBgY3MKdXNpbmcgUmVmaXQ7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwp1c2luZyBTeXN0ZW0uVGV4dC5Kc29uLlNlcmlhbGl6YXRpb247CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CgpuYW1lc3BhY2UgWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGUKewogICAgW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIlJlZml0dGVyIiwgIjEuMC4wLjAiKV0KICAgIHB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJU3dhZ2dlclBldHN0b3JlCiAgICB7CiAgICAgICAgLy8vIDxzdW1tYXJ5PlVwZGF0ZSBhbiBleGlzdGluZyBwZXQ8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPlVwZGF0ZSBhbiBleGlzdGluZyBwZXQgYnkgSWQ8L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJib2R5Ij5VcGRhdGUgYW4gZXhpc3RlbnQgcGV0IGluIHRoZSBzdG9yZTwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPlN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAgICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIElEIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA0PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+UGV0IG5vdCBmb3VuZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwNTwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPlZhbGlkYXRpb24gZXhjZXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPgogICAgICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL3htbCwgYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtQdXQoIi9wZXQiKV0KICAgICAgICBUYXNrPFBldD4gVXBkYXRlUGV0KFtCb2R5XSBQZXQgYm9keSk7CgogICAgICAgIC4uLgogICAgfQp9CmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgZ2VuZXJhdGVkIG91dHB1dCBmcm9tIHRoZSBbU3dhZ2dlciBQZXRzdG9yZSBleGFtcGxlXShodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvKSBjb25maWd1cmVkIHRvIHdyYXAgdGhlIHJldHVybiB0eXBlIGluIGBJQXBpUmVzcG9uc2U8VD5gCgoqKkNMSSBUb29sKioKCmBgYGJhc2gKcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1uYW1lc3BhY2UgIllvdXIuTmFtZXNwYWNlLk9mLkNob2ljZS5HZW5lcmF0ZWRDb2RlIiAtLXVzZS1hcGktcmVzcG9uc2UKYGBgCgoqKlNvdXJjZSBHZW5lcmF0b3IgKioqLnJlZml0dGVyKioqIGZpbGUqKgoKYGBganNvbgp7CiAgIm9wZW5BcGlQYXRoIjogIi4vb3BlbmFwaS5qc29uIiwKICAibmFtZXNwYWNlIjogIllvdXIuTmFtZXNwYWNlLk9mLkNob2ljZS5HZW5lcmF0ZWRDb2RlIiwKICAicmV0dXJuSUFwaVJlc3BvbnNlIjogdHJ1ZQp9CmBgYAoKKipPdXRwdXQgKFNuaXBwZXQpKioKCkZ1bGwgb3V0cHV0IGlzIGF2YWlsYWJsZSBbaGVyZV0oZG9jcy9JQXBpUmVzcG9uc2VPdXRwdXQuY3MpCgpgYGBjcwp1c2luZyBSZWZpdDsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CnVzaW5nIFN5c3RlbS5UZXh0Lkpzb24uU2VyaWFsaXphdGlvbjsKdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKCm5hbWVzcGFjZSBZb3VyLk5hbWVzcGFjZS5PZi5DaG9pY2UuR2VuZXJhdGVkQ29kZQp7CiAgICBbU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIuR2VuZXJhdGVkQ29kZSgiUmVmaXR0ZXIiLCAiMS4wLjAuMCIpXQogICAgcHVibGljIHBhcnRpYWwgaW50ZXJmYWNlIElTd2FnZ2VyUGV0c3RvcmUKICAgIHsKICAgICAgICAvLy8gPHN1bW1hcnk+VXBkYXRlIGFuIGV4aXN0aW5nIHBldDwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+VXBkYXRlIGFuIGV4aXN0aW5nIHBldCBieSBJZDwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImJvZHkiPlVwZGF0ZSBhbiBleGlzdGVudCBwZXQgaW4gdGhlIHN0b3JlPC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+CiAgICAgICAgLy8vIEEgPHNlZSBjcmVmPSJUYXNrIi8+IHJlcHJlc2VudGluZyB0aGUgPHNlZSBjcmVmPSJJQXBpUmVzcG9uc2UiLz4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgcmVzdWx0OgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjIwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPlN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBJRCBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwNDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPlBldCBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDU8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5WYWxpZGF0aW9uIGV4Y2VwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24veG1sLCBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW1B1dCgiL3BldCIpXQogICAgICAgIFRhc2s8SUFwaVJlc3BvbnNlPFBldD4+IFVwZGF0ZVBldChbQm9keV0gUGV0IGJvZHkpOwoKICAgICAgICAuLi4KICAgIH0KfQpgYGAKCkhlcmUncyBhbiBleGFtcGxlIGdlbmVyYXRlZCBvdXRwdXQgZnJvbSB0aGUgW1N3YWdnZXIgUGV0c3RvcmUgZXhhbXBsZV0oaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pbykgY29uZmlndXJlZCB0byBnZW5lcmF0ZSBhbiBpbnRlcmZhY2UgZm9yIGVhY2ggZW5kcG9pbnQKCioqQ0xJIFRvb2wqKgoKYGBgYmFzaApyZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW5hbWVzcGFjZSAiWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGUiIC0tbXVsdGlwbGUtaW50ZXJmYWNlcyBCeUVuZHBvaW50CmBgYAoKKipTb3VyY2UgR2VuZXJhdG9yICoqKi5yZWZpdHRlcioqKiBmaWxlKioKCmBgYGpzb24KewogICJvcGVuQXBpUGF0aCI6ICIuL29wZW5hcGkuanNvbiIsCiAgIm5hbWVzcGFjZSI6ICJZb3VyLk5hbWVzcGFjZS5PZi5DaG9pY2UuR2VuZXJhdGVkQ29kZSIsCiAgIm11bHRpcGxlSW50ZXJmYWNlcyI6ICJCeUVuZHBvaW50Igp9CmBgYAoKKipPdXRwdXQgKFNuaXBwZXQpKioKCkZ1bGwgb3V0cHV0IGlzIGF2YWlsYWJsZSBbaGVyZV0oZG9jcy9JQXBpUmVzcG9uc2VPdXRwdXQuY3MpCgpgYGBjcwovLy8gPHN1bW1hcnk+VXBkYXRlIGFuIGV4aXN0aW5nIHBldDwvc3VtbWFyeT4KW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIlJlZml0dGVyIiwgIjEuMC4wLjAiKV0KcHVibGljIHBhcnRpYWwgaW50ZXJmYWNlIElVcGRhdGVQZXRFbmRwb2ludAp7CiAgICAvLy8gPHN1bW1hcnk+VXBkYXRlIGFuIGV4aXN0aW5nIHBldDwvc3VtbWFyeT4KICAgIC8vLyA8cmVtYXJrcz5VcGRhdGUgYW4gZXhpc3RpbmcgcGV0IGJ5IElkPC9yZW1hcmtzPgogICAgLy8vIDxwYXJhbSBuYW1lPSJib2R5Ij5VcGRhdGUgYW4gZXhpc3RlbnQgcGV0IGluIHRoZSBzdG9yZTwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+U3VjY2Vzc2Z1bCBvcGVyYXRpb248L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBJRCBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9pdGVtPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwNDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+UGV0IG5vdCBmb3VuZDwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9pdGVtPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwNTwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+VmFsaWRhdGlvbiBleGNlcHRpb248L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8L2xpc3Q+CiAgICAvLy8gPC9leGNlcHRpb24+CiAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi94bWwsIGFwcGxpY2F0aW9uL2pzb24iKV0KICAgIFtQdXQoIi9wZXQiKV0KICAgIFRhc2s8UGV0PiBFeGVjdXRlKFtCb2R5XSBQZXQgYm9keSk7Cn0KYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBnZW5lcmF0ZWQgb3V0cHV0IGZyb20gdGhlIFtTd2FnZ2VyIFBldHN0b3JlIGV4YW1wbGVdKGh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8pIGNvbmZpZ3VyZWQgdG8gZ2VuZXJhdGUgYW4gaW50ZXJmYWNlIHdpdGggZHluYW1pYyBxdWVyeXN0cmluZyBwYXJhbWV0ZXJzCgoqKkNMSSBUb29sKioKCmBgYGJhc2gKcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1uYW1lc3BhY2UgIllvdXIuTmFtZXNwYWNlLk9mLkNob2ljZS5HZW5lcmF0ZWRDb2RlIiAtLXVzZS1keW5hbWljLXF1ZXJ5c3RyaW5nLXBhcmFtZXRlcnMKYGBgCgoqKk91dHB1dCAoU25pcHBldCkqKgoKRnVsbCBvdXRwdXQgaXMgYXZhaWxhYmxlIFtoZXJlXShkb2NzL0R5bmFtaWNRdWVyeVN0cmluZ1BhcmFtZXRlcnMuY3MpCgpgYGBjcwpbU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIuR2VuZXJhdGVkQ29kZSgiUmVmaXR0ZXIiLCAiMS4wLjAuMCIpXQpwdWJsaWMgcGFydGlhbCBpbnRlcmZhY2UgSVN3YWdnZXJQZXRzdG9yZU9wZW5BUEkzMAp7CiAgICAvLy8gPHN1bW1hcnk+VXBkYXRlcyBhIHBldCBpbiB0aGUgc3RvcmUgd2l0aCBmb3JtIGRhdGE8L3N1bW1hcnk+CiAgICAvLy8gPHBhcmFtIG5hbWU9InBldElkIj5JRCBvZiBwZXQgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkPC9wYXJhbT4KICAgIC8vLyA8cGFyYW0gbmFtZT0icXVlcnlQYXJhbXMiPlRoZSBkeW5hbWljIHF1ZXJ5c3RyaW5nIHBhcmFtZXRlciB3cmFwcGluZyBhbGwgb3RoZXJzLjwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gdGhhdCBjb21wbGV0ZXMgd2hlbiB0aGUgcmVxdWVzdCBpcyBmaW5pc2hlZC48L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwNTwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBpbnB1dDwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9pdGVtPgogICAgLy8vIDwvbGlzdD4KICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgIFtQb3N0KCIvcGV0L3twZXRJZH0iKV0KICAgIFRhc2sgVXBkYXRlUGV0V2l0aEZvcm0obG9uZyBwZXRJZCwgW1F1ZXJ5XSBVcGRhdGVQZXRXaXRoRm9ybVF1ZXJ5UGFyYW1zIHF1ZXJ5UGFyYW1zKTsKfQoKcHVibGljIGNsYXNzIFVwZGF0ZVBldFdpdGhGb3JtUXVlcnlQYXJhbXMKewogICAgLy8vIDxzdW1tYXJ5PgogICAgLy8vIE5hbWUgb2YgcGV0IHRoYXQgbmVlZHMgdG8gYmUgdXBkYXRlZAogICAgLy8vIDwvc3VtbWFyeT4KICAgIFtRdWVyeV0KICAgIHB1YmxpYyBzdHJpbmcgTmFtZSB7IGdldDsgc2V0OyB9CgogICAgLy8vIDxzdW1tYXJ5PgogICAgLy8vIFN0YXR1cyBvZiBwZXQgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkCiAgICAvLy8gPC9zdW1tYXJ5PgogICAgW1F1ZXJ5XQogICAgcHVibGljIHN0cmluZyBTdGF0dXMgeyBnZXQ7IHNldDsgfQp9CmBgYAoKIyMgUmVzdFNlcnZpY2UKCkhlcmUncyBhbiBleGFtcGxlIHVzYWdlIG9mIHRoZSBnZW5lcmF0ZWQgY29kZSBhYm92ZQoKYGBgY3MKdXNpbmcgUmVmaXQ7CnVzaW5nIFN5c3RlbTsKdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKCm5hbWVzcGFjZSBZb3VyLk5hbWVzcGFjZS5PZi5DaG9pY2UuR2VuZXJhdGVkQ29kZTsKCmludGVybmFsIGNsYXNzIFByb2dyYW0KewogICAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgVGFzayBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICB7CiAgICAgICAgdmFyIGNsaWVudCA9IFJlc3RTZXJ2aWNlLkZvcjxJU3dhZ2dlclBldHN0b3JlPigiaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMiKTsKICAgICAgICB2YXIgcGV0ID0gYXdhaXQgY2xpZW50LkdldFBldEJ5SWQoMSk7CgogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCIjIyBVc2luZyBUYXNrPFQ+IGFzIHJldHVybiB0eXBlICMjIik7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJOYW1lOiB7cGV0Lk5hbWV9Iik7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJDYXRlZ29yeToge3BldC5DYXRlZ29yeS5OYW1lfSIpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCQiU3RhdHVzOiB7cGV0LlN0YXR1c30iKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgpOwoKICAgICAgICB2YXIgY2xpZW50MiA9IFJlc3RTZXJ2aWNlLkZvcjxXaXRoQXBpUmVzcG9uc2UuSVN3YWdnZXJQZXRzdG9yZT4oImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzIik7CiAgICAgICAgdmFyIHJlc3BvbnNlID0gYXdhaXQgY2xpZW50Mi5HZXRQZXRCeUlkKDIpOwoKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiIyMgVXNpbmcgVGFzazxJQXBpUmVzcG9uc2U8VD4+IGFzIHJldHVybiB0eXBlICMjIik7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJIVFRQIFN0YXR1cyBDb2RlOiB7cmVzcG9uc2UuU3RhdHVzQ29kZX0iKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgkIk5hbWU6IHtyZXNwb25zZS5Db250ZW50Lk5hbWV9Iik7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJDYXRlZ29yeToge3Jlc3BvbnNlLkNvbnRlbnQuQ2F0ZWdvcnkuTmFtZX0iKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgkIlN0YXR1czoge3Jlc3BvbnNlLkNvbnRlbnQuU3RhdHVzfSIpOwogICAgfQp9CmBgYAoKVGhlIGBSZXN0U2VydmljZWAgY2xhc3MgZ2VuZXJhdGVzIGFuIGltcGxlbWVudGF0aW9uIG9mIGBJU3dhZ2dlclBldHN0b3JlYCB0aGF0IHVzZXMgYEh0dHBDbGllbnRgIHRvIG1ha2UgaXRzIGNhbGxzLgoKVGhlIGNvZGUgYWJvdmUgd2hlbiBydW4gd2lsbCBvdXRwdXQgc29tZXRoaW5nIGxpa2UgdGhpczoKCmBgYAojIyBVc2luZyBUYXNrPFQ+IGFzIHJldHVybiB0eXBlICMjCk5hbWU6IEdhdGl0b3RvdG90bwpDYXRlZ29yeTogQ2hhdWNpdG8KU3RhdHVzOiBTb2xkCgojIyBVc2luZyBUYXNrPElBcGlSZXNwb25zZTxUPj4gYXMgcmV0dXJuIHR5cGUgIyMKSFRUUCBTdGF0dXMgQ29kZTogT0sKTmFtZTogR2F0aXRvdG90b3RvCkNhdGVnb3J5OiBDaGF1Y2l0bwpTdGF0dXM6IFNvbGQKYGBgCgojIyBBU1AuTkVUIENvcmUgYW5kIEh0dHBDbGllbnRGYWN0b3J5CgpIZXJlJ3MgYW4gZXhhbXBsZSBNaW5pbWFsIEFQSSB3aXRoIHRoZSBbYFJlZml0Lkh0dHBDbGllbnRGYWN0b3J5YF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1JlZml0Lkh0dHBDbGllbnRGYWN0b3J5KSBsaWJyYXJ5OgoKYGBgY3MKdXNpbmcgUmVmaXQ7CnVzaW5nIFlvdXIuTmFtZXNwYWNlLk9mLkNob2ljZS5HZW5lcmF0ZWRDb2RlOwoKdmFyIGJ1aWxkZXIgPSBXZWJBcHBsaWNhdGlvbi5DcmVhdGVCdWlsZGVyKGFyZ3MpOwpidWlsZGVyLlNlcnZpY2VzLkFkZEVuZHBvaW50c0FwaUV4cGxvcmVyKCk7CmJ1aWxkZXIuU2VydmljZXMuQWRkU3dhZ2dlckdlbigpOwpidWlsZGVyLlNlcnZpY2VzCiAgICAuQWRkUmVmaXRDbGllbnQ8SVN3YWdnZXJQZXRzdG9yZT4oKQogICAgLkNvbmZpZ3VyZUh0dHBDbGllbnQoYyA9PiBjLkJhc2VBZGRyZXNzID0gbmV3IFVyaSgiaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMiKSk7Cgp2YXIgYXBwID0gYnVpbGRlci5CdWlsZCgpOwphcHAuTWFwR2V0KAogICAgICAgICIvcGV0L3tpZDpsb25nfSIsCiAgICAgICAgYXN5bmMgKElTd2FnZ2VyUGV0c3RvcmUgcGV0c3RvcmUsIGxvbmcgaWQpID0+CiAgICAgICAgewogICAgICAgICAgICB0cnkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIFJlc3VsdHMuT2soYXdhaXQgcGV0c3RvcmUuR2V0UGV0QnlJZChpZCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoIChSZWZpdC5BcGlFeGNlcHRpb24gZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIFJlc3VsdHMuU3RhdHVzQ29kZSgoaW50KWUuU3RhdHVzQ29kZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgLldpdGhOYW1lKCJHZXRQZXRCeUlkIikKICAgIC5XaXRoT3BlbkFwaSgpOwoKYXBwLlVzZUh0dHBzUmVkaXJlY3Rpb24oKTsKYXBwLlVzZVN3YWdnZXJVSSgpOwphcHAuVXNlU3dhZ2dlcigpOwphcHAuUnVuKCk7CmBgYAoKLk5FVCBDb3JlIHN1cHBvcnRzIHJlZ2lzdGVyaW5nIHRoZSBnZW5lcmF0ZWQgYElTd2FnZ2VyUGV0c3RvcmVgIGludGVyZmFjZSB2aWEgYEh0dHBDbGllbnRGYWN0b3J5YAoKVGhlIGZvbGxvd2luZyByZXF1ZXN0IHRvIHRoZSBBUEkgYWJvdmUKCmBgYHNoZWxsCmN1cmwgLVggJ0dFVCcgJ2h0dHBzOi8vbG9jYWxob3N0OjUwMDEvcGV0LzEnIC1IICdhY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24nCmBgYAoKUmV0dXJucyBhIHJlc3BvbnNlIHRoYXQgbG9va3Mgc29tZXRoaW5nIGxpa2UgdGhpczoKCmBgYGpzb24KewogICJpZCI6IDEsCiAgIm5hbWUiOiAiU3BlY2lhbF9jaGFyX293bmVyXyFAIyReJigpYC50ZXN0aW5nIiwKICAicGhvdG9VcmxzIjogWwogICAgImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vcmVzb3VyY2VzL3Bob3Rvcy82MjMzODkwOTUuanBnIgogIF0sCiAgInRhZ3MiOiBbXSwKICAic3RhdHVzIjogIlNvbGQiCn0KYGBgCgojIyBEZXBlbmRlbmN5IEluamVjdGlvbgoKUmVmaXR0ZXIgc3VwcG9ydHMgZ2VuZXJhdGluZyBib290c3RyYXBwaW5nIGNvZGUgdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gY29udmVuaWVudGx5IGNvbmZpZ3VyZSBhbGwgZ2VuZXJhdGVkIFJlZml0IGludGVyZmFjZXMgYnkgY2FsbGluZyBhIHNpbmdsZSBleHRlbnNpb24gbWV0aG9kIHRvIGBJU2VydmljZUNvbGxlY3Rpb25gLgoKVGhpcyBpcyBlbmFibGVkIHRocm91Z2ggdGhlIGAucmVmaXR0ZXJgIHNldHRpbmdzIGZpbGUgbGlrZSB0aGlzOgoKYGBganNvbgp7CiAgIm9wZW5BcGlQYXRoIjogIi4uL09wZW5BUEkvdjMuMC9wZXRzdG9yZS5qc29uIiwKICAibmFtZXNwYWNlIjogIlBldHN0b3JlIiwKICAiZGVwZW5kZW5jeUluamVjdGlvblNldHRpbmdzIjogewogICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMiLAogICAgImh0dHBNZXNzYWdlSGFuZGxlcnMiOiBbICJUZWxlbWV0cnlEZWxlZ2F0aW5nSGFuZGxlciIgXSwKICAgICJ0cmFuc2llbnRFcnJvckhhbmRsZXIiOiAiUG9sbHkiLAogICAgIm1heFJldHJ5Q291bnQiOiAzLAogICAgImZpcnN0QmFja29mZlJldHJ5SW5TZWNvbmRzIjogMC41CiAgfQp9CmBgYAoKd2hpY2ggd2lsbCBnZW5lcmF0ZSBhbiBleHRlbnNpb24gbWV0aG9kIHRvIGBJU2VydmljZUNvbGxlY3Rpb25gIGNhbGxlZCBgQ29uZmlndXJlUmVmaXRDbGllbnRzKClgLiBUaGUgZ2VuZXJhdGVkIGV4dGVuc2lvbiBtZXRob2QgZGVwZW5kcyBvbiBbYFJlZml0Lkh0dHBDbGllbnRGYWN0b3J5YF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1JlZml0Lkh0dHBDbGllbnRGYWN0b3J5KSBsaWJyYXJ5IGFuZCBsb29rcyBsaWtlIHRoaXM6CgpgYGBjcwpwdWJsaWMgc3RhdGljIElTZXJ2aWNlQ29sbGVjdGlvbiBDb25maWd1cmVSZWZpdENsaWVudHMoCiAgICB0aGlzIElTZXJ2aWNlQ29sbGVjdGlvbiBzZXJ2aWNlcywKICAgIEFjdGlvbjxJSHR0cENsaWVudEJ1aWxkZXI+PyBidWlsZGVyID0gZGVmYXVsdCwKICAgIFJlZml0U2V0dGluZ3M/IHNldHRpbmdzID0gZGVmYXVsdCkKewogICAgdmFyIGNsaWVudEJ1aWxkZXJJU3dhZ2dlclBldHN0b3JlID0gc2VydmljZXMKICAgICAgICAuQWRkUmVmaXRDbGllbnQ8SVN3YWdnZXJQZXRzdG9yZT4oc2V0dGluZ3MpCiAgICAgICAgLkNvbmZpZ3VyZUh0dHBDbGllbnQoYyA9PiBjLkJhc2VBZGRyZXNzID0gbmV3IFVyaSgiaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMiKSkKICAgICAgICAuQWRkSHR0cE1lc3NhZ2VIYW5kbGVyPFRlbGVtZXRyeURlbGVnYXRpbmdIYW5kbGVyPigpOwoKICAgIGNsaWVudEJ1aWxkZXJJU3dhZ2dlclBldHN0b3JlCiAgICAgICAgLkFkZFBvbGljeUhhbmRsZXIoCiAgICAgICAgICAgIEh0dHBQb2xpY3lFeHRlbnNpb25zCiAgICAgICAgICAgICAgICAuSGFuZGxlVHJhbnNpZW50SHR0cEVycm9yKCkKICAgICAgICAgICAgICAgIC5XYWl0QW5kUmV0cnlBc3luYygKICAgICAgICAgICAgICAgICAgICBCYWNrb2ZmLkRlY29ycmVsYXRlZEppdHRlckJhY2tvZmZWMigKICAgICAgICAgICAgICAgICAgICAgICAgVGltZVNwYW4uRnJvbVNlY29uZHMoMC41KSwKICAgICAgICAgICAgICAgICAgICAgICAgMykpKTsKCiAgICBidWlsZGVyPy5JbnZva2UoY2xpZW50QnVpbGRlcklTd2FnZ2VyUGV0c3RvcmUpOwoKICAgIHJldHVybiBzZXJ2aWNlczsKfQpgYGAKClRoaXMgY29tZXMgaW4gaGFuZHkgZXNwZWNpYWxseSB3aGVuIGdlbmVyYXRpbmcgbXVsdGlwbGUgaW50ZXJmYWNlcywgYnkgdGFnIG9yIGVuZHBvaW50LiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBgLnJlZml0dGVyYCBzZXR0aW5ncyBmaWxlCgpgYGBqc29uCnsKICAib3BlbkFwaVBhdGgiOiAiLi4vT3BlbkFQSS92My4wL3BldHN0b3JlLmpzb24iLAogICJuYW1lc3BhY2UiOiAiUGV0c3RvcmUiLAogICJtdWx0aXBsZUludGVyZmFjZXMiOiAiQnlUYWciLAogICJkZXBlbmRlbmN5SW5qZWN0aW9uU2V0dGluZ3MiOiB7CiAgICAiYmFzZVVybCI6ICJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIsCiAgICAiaHR0cE1lc3NhZ2VIYW5kbGVycyI6IFsgIlRlbGVtZXRyeURlbGVnYXRpbmdIYW5kbGVyIiBdLAogICAgInRyYW5zaWVudEVycm9ySGFuZGxlciI6ICJQb2xseSIsCiAgICAibWF4UmV0cnlDb3VudCI6IDMsCiAgICAiZmlyc3RCYWNrb2ZmUmV0cnlJblNlY29uZHMiOiAwLjUKICB9Cn0KYGBgCgpXaWxsIGdlbmVyYXRlIGEgc2luZ2xlIGBDb25maWd1cmVSZWZpdENsaWVudHMoKWAgZXh0ZW5zaW9uIG1ldGhvZHMgdGhhdCBtYXkgY29udGFpbiBkZXBlbmRlbmN5IGluamVjdGlvbiBjb25maWd1cmF0aW9uIGNvZGUgZm9yIG11bHRpcGxlIGludGVyZmFjZXMgbGlrZSB0aGlzCgpgYGBjc2hhcnAKcHVibGljIHN0YXRpYyBJU2VydmljZUNvbGxlY3Rpb24gQ29uZmlndXJlUmVmaXRDbGllbnRzKAogICAgdGhpcyBJU2VydmljZUNvbGxlY3Rpb24gc2VydmljZXMsCiAgICBBY3Rpb248SUh0dHBDbGllbnRCdWlsZGVyPj8gYnVpbGRlciA9IGRlZmF1bHQsCiAgICBSZWZpdFNldHRpbmdzPyBzZXR0aW5ncyA9IGRlZmF1bHQpCnsKICAgIHZhciBjbGllbnRCdWlsZGVySVBldEFwaSA9IHNlcnZpY2VzCiAgICAgICAgLkFkZFJlZml0Q2xpZW50PElQZXRBcGk+KHNldHRpbmdzKQogICAgICAgIC5Db25maWd1cmVIdHRwQ2xpZW50KGMgPT4gYy5CYXNlQWRkcmVzcyA9IG5ldyBVcmkoImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzIikpCiAgICAgICAgLkFkZEh0dHBNZXNzYWdlSGFuZGxlcjxUZWxlbWV0cnlEZWxlZ2F0aW5nSGFuZGxlcj4oKTsKCiAgICBjbGllbnRCdWlsZGVySVBldEFwaQogICAgICAgIC5BZGRQb2xpY3lIYW5kbGVyKAogICAgICAgICAgICBIdHRwUG9saWN5RXh0ZW5zaW9ucwogICAgICAgICAgICAgICAgLkhhbmRsZVRyYW5zaWVudEh0dHBFcnJvcigpCiAgICAgICAgICAgICAgICAuV2FpdEFuZFJldHJ5QXN5bmMoCiAgICAgICAgICAgICAgICAgICAgQmFja29mZi5EZWNvcnJlbGF0ZWRKaXR0ZXJCYWNrb2ZmVjIoCiAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVTcGFuLkZyb21TZWNvbmRzKDAuNSksCiAgICAgICAgICAgICAgICAgICAgICAgIDMpKSk7CgogICAgYnVpbGRlcj8uSW52b2tlKGNsaWVudEJ1aWxkZXJJUGV0QXBpKTsKCiAgICB2YXIgY2xpZW50QnVpbGRlcklTdG9yZUFwaSA9IHNlcnZpY2VzCiAgICAgICAgLkFkZFJlZml0Q2xpZW50PElTdG9yZUFwaT4oc2V0dGluZ3MpCiAgICAgICAgLkNvbmZpZ3VyZUh0dHBDbGllbnQoYyA9PiBjLkJhc2VBZGRyZXNzID0gbmV3IFVyaSgiaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMiKSkKICAgICAgICAuQWRkSHR0cE1lc3NhZ2VIYW5kbGVyPFRlbGVtZXRyeURlbGVnYXRpbmdIYW5kbGVyPigpOwoKICAgIGNsaWVudEJ1aWxkZXJJU3RvcmVBcGkKICAgICAgICAuQWRkUG9saWN5SGFuZGxlcigKICAgICAgICAgICAgSHR0cFBvbGljeUV4dGVuc2lvbnMKICAgICAgICAgICAgICAgIC5IYW5kbGVUcmFuc2llbnRIdHRwRXJyb3IoKQogICAgICAgICAgICAgICAgLldhaXRBbmRSZXRyeUFzeW5jKAogICAgICAgICAgICAgICAgICAgIEJhY2tvZmYuRGVjb3JyZWxhdGVkSml0dGVyQmFja29mZlYyKAogICAgICAgICAgICAgICAgICAgICAgICBUaW1lU3Bhbi5Gcm9tU2Vjb25kcygwLjUpLAogICAgICAgICAgICAgICAgICAgICAgICAzKSkpOwoKICAgIGJ1aWxkZXI/Lkludm9rZShjbGllbnRCdWlsZGVySVN0b3JlQXBpKTsKCiAgICB2YXIgY2xpZW50QnVpbGRlcklVc2VyQXBpID0gc2VydmljZXMKICAgICAgICAuQWRkUmVmaXRDbGllbnQ8SVVzZXJBcGk+KHNldHRpbmdzKQogICAgICAgIC5Db25maWd1cmVIdHRwQ2xpZW50KGMgPT4gYy5CYXNlQWRkcmVzcyA9IG5ldyBVcmkoImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzIikpCiAgICAgICAgLkFkZEh0dHBNZXNzYWdlSGFuZGxlcjxUZWxlbWV0cnlEZWxlZ2F0aW5nSGFuZGxlcj4oKTsKCiAgICBjbGllbnRCdWlsZGVySVVzZXJBcGkKICAgICAgICAuQWRkUG9saWN5SGFuZGxlcigKICAgICAgICAgICAgSHR0cFBvbGljeUV4dGVuc2lvbnMKICAgICAgICAgICAgICAgIC5IYW5kbGVUcmFuc2llbnRIdHRwRXJyb3IoKQogICAgICAgICAgICAgICAgLldhaXRBbmRSZXRyeUFzeW5jKAogICAgICAgICAgICAgICAgICAgIEJhY2tvZmYuRGVjb3JyZWxhdGVkSml0dGVyQmFja29mZlYyKAogICAgICAgICAgICAgICAgICAgICAgICBUaW1lU3Bhbi5Gcm9tU2Vjb25kcygwLjUpLAogICAgICAgICAgICAgICAgICAgICAgICAzKSkpOwoKICAgIGJ1aWxkZXI/Lkludm9rZShjbGllbnRCdWlsZGVySVVzZXJBcGkpOwoKICAgIHJldHVybiBzZXJ2aWNlczsKfQpgYGAKClBlcnNvbmFsbHksIHRoZXkgSSB1c2UgUmVmaXR0ZXIgaXMgdG8gZ2VuZXJhdGUgYW4gaW50ZXJmYWNlIHBlciBlbmRwb2ludCwgc28gd2hlbiBnZW5lcmF0aW5nIGNvZGUgZm9yIGEgbGFyZ2UgYW5kIGNvbXBsZXggQVBJLCBJIG1pZ2h0IGhhdmUgc2V2ZXJhbCBpbnRlcmZhY2VzLgoKIyMgQXBpenIKCltBcGl6cl0oaHR0cHM6Ly93d3cuYXBpenIubmV0KSBpcyBhIFJlZml0IGNsaWVudCBtYW5hZ2VyIHRoYXQgcHJvdmlkZXMgYSBzZXQgb2YgZmVhdHVyZXMgdG8gZW5oYW5jZSByZXF1ZXN0aW5nIGV4cGVyaWVuY2Ugd2l0aCByZXNpbGllbmNlLCBjYWNoaW5nLCBwcmlvcml0eSwgbWVkaWF0aW9uLCBtYXBwaW5nLCBsb2dnaW5nLCBhdXRoZW50aWNhdGlvbiwgZmlsZSB0cmFuc2ZlciBjYXBhYmlsaXRpZXMgYW5kIG1hbnkgbW9yZS4uLgoKIyMjIEdlbmVyYXRpbmcgdGhlIGludGVyZmFjZXMKClJlZml0dGVyIHN1cHBvcnRzIGdlbmVyYXRpbmcgQXBpenIgZm9ybWF0dGVkIFJlZml0IGludGVyZmFjZXMgdGhhdCBjYW4gYmUgbWFuYWdlZCB0aGVuIGJ5IEFwaXpyICh2NispLgoKWW91IGNhbiBlbmFibGUgQXBpenIgZm9ybWF0dGVkIFJlZml0IGludGVyZmFjZSBnZW5lcmF0aW9uIGVpdGhlcjoKCi0gV2l0aCB0aGUgYC0tdXNlLWFwaXpyYCBjb21tYW5kIGxpbmUgYXJndW1lbnQKLSBCeSBzZXR0aW5nIHRoZSBgYXBpenJTZXR0aW5nc2Agc2VjdGlvbiBpbiB0aGUgYC5yZWZpdHRlcmAgc2V0dGluZ3MgZmlsZQoKTm90ZSB0aGF0IGAtLXVzZS1hcGl6cmAgdXNlcyBkZWZhdWx0IEFwaXpyIHNldHRpbmdzIHdpdGggYHdpdGhSZXF1ZXN0T3B0aW9uc2Agc2V0IHRvIGB0cnVlYCBhcyByZWNvbW1lbmRlZCwgd2hpbGUgdGhlIGAucmVmaXR0ZXJgIHNldHRpbmdzIGZpbGUgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgaXQgZGVlcGVyLgoKSW4gYm90aCBjYXNlcywgaXQgd2lsbCBmb3JtYXQgdGhlIGdlbmVyYXRlZCBSZWZpdCBpbnRlcmZhY2VzIHRvIGJlIEFwaXpyIHJlYWR5IGJ5OgoKLSBBZGRpbmcgYSBmaW5hbCBJQXBpenJSZXF1ZXN0T3B0aW9ucyBvcHRpb25zIHBhcmFtZXRlciB0byBhbGwgZ2VuZXJhdGVkIG1ldGhvZHMgKGlmIGB3aXRoUmVxdWVzdE9wdGlvbnNgIGlzIHNldCB0byBgdHJ1ZWApCi0gUHJvdmlkaW5nIGNhbmNlbGxhdGlvbiB0b2tlbnMgYnkgQXBpenIgcmVxdWVzdCBvcHRpb25zIGluc3RlYWQgb2YgYSBkZWRpY2F0ZWQgcGFyYW1ldGVyIChpZiBgd2l0aFJlcXVlc3RPcHRpb25zYCBpcyBzZXQgdG8gYHRydWVgKQotIFVzaW5nIG1ldGhvZCBvdmVybG9hZHMgaW5zdGVhZCBvZiBvcHRpb25hbCBwYXJhbWV0ZXJzIChub3RlIHRoYXQgc2V0dGluZyBgdXNlRHluYW1pY1F1ZXJ5c3RyaW5nUGFyYW1ldGVyc2AgdG8gYHRydWVgIGltcHJvdmUgb3ZlcmxvYWRpbmcgZXhwZXJpZW5jZSkKCkZyb20gaGVyZSwgeW91J3JlIGRlZmluaXRlbHkgZnJlZSB0byB1c2UgdGhlIGZvcm1hdHRlZCBpbnRlcmZhY2Ugd2l0aCBBcGl6ciBieSByZWdpc3RlcmluZywgY29uZmlndXJpbmcgYW5kIHVzaW5nIGl0IGZvbGxvd2luZyB0aGUgW0FwaXpyIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmFwaXpyLm5ldCkuIEJ1dCBSZWZpdHRlciBjYW4gZ28gZnVydGhlciBieSBnZW5lcmF0aW5nIHNvbWUgaGVscGVycyB0byBtYWtlIHRoZSBjb25maWd1cmF0aW9uIGVhc2llci4KCiMjIyBHZW5lcmF0aW5nIHRoZSBoZWxwZXJzCgpSZWZpdHRlciBzdXBwb3J0cyBnZW5lcmF0aW5nIEFwaXpyICh2NispIGJvb3RzdHJhcHBpbmcgY29kZSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBjb252ZW5pZW50bHkgY29uZmlndXJlIGFsbCBnZW5lcmF0ZWQgQXBpenIgZm9ybWF0dGVkIFJlZml0IGludGVyZmFjZXMgYnkgY2FsbGluZyBhIHNpbmdsZSBtZXRob2QuCkl0IGNvdWxkIGJlIGVpdGhlciBhbiBleHRlbnNpb24gbWV0aG9kIHRvIGBJU2VydmljZUNvbGxlY3Rpb25gIGlmIERlcGVuZGVuY3lJbmplY3Rpb25TZXR0aW5ncyBhcmUgc2V0LCBvciBhIHN0YXRpYyBidWlsZGVyIG1ldGhvZCBpZiBub3QuCgojIyMgW0V4dGVuZGVkXSgjdGFiL3RhYmlkLWV4dGVuZGVkKQoKVG8gZW5hYmxlIEFwaXpyIHJlZ2lzdHJhdGlvbiBjb2RlIGdlbmVyYXRpb24gZm9yIGBJU2VydmljZUNvbGxlY3Rpb25gLCB5b3UgbmVlZCBhdCBsZWFzdCB0byBzZXQgdGhlIGB3aXRoUmVnaXN0cmF0aW9uSGVscGVyYCBwcm9wZXJ0eSB0byBgdHJ1ZWAgYW5kIGNvbmZpZ3VyZSB0aGUgYERlcGVuZGVuY3lJbmplY3Rpb25TZXR0aW5nc2Agc2VjdGlvbiBpbiB0aGUgYC5yZWZpdHRlcmAgc2V0dGluZ3MgZmlsZS4KVGhpcyBpcyB3aGF0IHRoZSBgLnJlZml0dGVyYCBzZXR0aW5ncyBmaWxlIG1heSBsb29rIGxpa2UsIGRlcGVuZGluZyBvbiB5b3UgY29uZmlndXJhdGlvbjoKCmBgYGpzb24KewogICJvcGVuQXBpUGF0aCI6ICIuLi9PcGVuQVBJL3YzLjAvcGV0c3RvcmUuanNvbiIsCiAgIm5hbWVzcGFjZSI6ICJQZXRzdG9yZSIsCiAgInVzZUR5bmFtaWNRdWVyeXN0cmluZ1BhcmFtZXRlcnMiOiB0cnVlLAogICJkZXBlbmRlbmN5SW5qZWN0aW9uU2V0dGluZ3MiOiB7CiAgICAiYmFzZVVybCI6ICJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIsCiAgICAiaHR0cE1lc3NhZ2VIYW5kbGVycyI6IFsgIk15RGVsZWdhdGluZ0hhbmRsZXIiIF0sCiAgICAidHJhbnNpZW50RXJyb3JIYW5kbGVyIjogIkh0dHBSZXNpbGllbmNlIiwKICAgICJtYXhSZXRyeUNvdW50IjogMywKICAgICJmaXJzdEJhY2tvZmZSZXRyeUluU2Vjb25kcyI6IDAuNQogIH0sCiAgImFwaXpyU2V0dGluZ3MiOiB7CiAgICAid2l0aFJlcXVlc3RPcHRpb25zIjogdHJ1ZSwgLy8gUmVjb21tZW5kZWQgdG8gaW5jbHVkZSBhbiBBcGl6ciByZXF1ZXN0IG9wdGlvbnMgcGFyYW1ldGVyIHRvIFJlZml0IGludGVyZmFjZSBtZXRob2RzCiAgICAid2l0aFJlZ2lzdHJhdGlvbkhlbHBlciI6IHRydWUsIC8vIE1hbmRhdG9yeSB0byBhY3R1YWxseSBnZW5lcmF0ZSB0aGUgQXBpenIgcmVnaXN0cmF0aW9uIGV4dGVuZGVkIG1ldGhvZAogICAgIndpdGhDYWNoZVByb3ZpZGVyIjogIkluTWVtb3J5IiwgLy8gT3B0aW9uYWwsIGRlZmF1bHQgaXMgTm9uZQogICAgIndpdGhQcmlvcml0eSI6IHRydWUsIC8vIE9wdGlvbmFsLCBkZWZhdWx0IGlzIGZhbHNlCiAgICAid2l0aE1lZGlhdGlvbiI6IHRydWUsIC8vIE9wdGlvbmFsLCBkZWZhdWx0IGlzIGZhbHNlCiAgICAid2l0aE9wdGlvbmFsTWVkaWF0aW9uIjogdHJ1ZSwgLy8gT3B0aW9uYWwsIGRlZmF1bHQgaXMgZmFsc2UKICAgICJ3aXRoTWFwcGluZ1Byb3ZpZGVyIjogIkF1dG9NYXBwZXIiLCAvLyBPcHRpb25hbCwgZGVmYXVsdCBpcyBOb25lCiAgICAid2l0aEZpbGVUcmFuc2ZlciI6IHRydWUgLy8gT3B0aW9uYWwsIGRlZmF1bHQgaXMgZmFsc2UKICB9Cn0KYGBgCgp3aGljaCB3aWxsIGdlbmVyYXRlIGFuIGV4dGVuc2lvbiBtZXRob2QgdG8gYElTZXJ2aWNlQ29sbGVjdGlvbmAgY2FsbGVkIGBDb25maWd1cmVQZXRzdG9yZUFwaUFwaXpyTWFuYWdlcigpYC4gVGhlIGdlbmVyYXRlZCBleHRlbnNpb24gbWV0aG9kIGRlcGVuZHMgb24gW2BBcGl6ci5FeHRlbnNpb25zLk1pY3Jvc29mdC5EZXBlbmRlbmN5SW5qZWN0aW9uYF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL0FwaXpyLkV4dGVuc2lvbnMuTWljcm9zb2Z0LkRlcGVuZGVuY3lJbmplY3Rpb24pIGxpYnJhcnkgYW5kIGxvb2tzIGxpa2UgdGhpczoKCmBgYGNzCnB1YmxpYyBzdGF0aWMgSVNlcnZpY2VDb2xsZWN0aW9uIENvbmZpZ3VyZVBldHN0b3JlQXBpQXBpenJNYW5hZ2VyKAogICAgdGhpcyBJU2VydmljZUNvbGxlY3Rpb24gc2VydmljZXMsCiAgICBBY3Rpb248SUFwaXpyRXh0ZW5kZWRNYW5hZ2VyT3B0aW9uc0J1aWxkZXI+PyBvcHRpb25zQnVpbGRlciA9IG51bGwpCnsKICAgIG9wdGlvbnNCdWlsZGVyID8/PSBfID0+IHsgfTsgLy8gRGVmYXVsdCBlbXB0eSBvcHRpb25zIGlmIG51bGwKICAgIG9wdGlvbnNCdWlsZGVyICs9IG9wdGlvbnMgPT4gb3B0aW9ucwogICAgICAgIC5XaXRoQmFzZUFkZHJlc3MoImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzIiwgQXBpenJEdXBsaWNhdGVTdHJhdGVneS5JZ25vcmUpCiAgICAgICAgLldpdGhEZWxlZ2F0aW5nSGFuZGxlcjxNeURlbGVnYXRpbmdIYW5kbGVyPigpCiAgICAgICAgLkNvbmZpZ3VyZUh0dHBDbGllbnRCdWlsZGVyKGJ1aWxkZXIgPT4gYnVpbGRlcgogICAgICAgICAgICAuQWRkU3RhbmRhcmRSZXNpbGllbmNlSGFuZGxlcihjb25maWcgPT4KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY29uZmlnLlJldHJ5ID0gbmV3IEh0dHBSZXRyeVN0cmF0ZWd5T3B0aW9ucwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFVzZUppdHRlciA9IHRydWUsCiAgICAgICAgICAgICAgICAgICAgTWF4UmV0cnlBdHRlbXB0cyA9IDMsCiAgICAgICAgICAgICAgICAgICAgRGVsYXkgPSBUaW1lU3Bhbi5Gcm9tU2Vjb25kcygwLjUpCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KSkKICAgICAgICAuV2l0aEluTWVtb3J5Q2FjaGVIYW5kbGVyKCkKICAgICAgICAuV2l0aEF1dG9NYXBwZXJNYXBwaW5nSGFuZGxlcigpCiAgICAgICAgLldpdGhQcmlvcml0eSgpCiAgICAgICAgLldpdGhPcHRpb25hbE1lZGlhdGlvbigpCiAgICAgICAgLldpdGhGaWxlVHJhbnNmZXJPcHRpb25hbE1lZGlhdGlvbigpOwoKICAgIHJldHVybiBzZXJ2aWNlcy5BZGRBcGl6ck1hbmFnZXJGb3I8SVBldHN0b3JlQXBpPihvcHRpb25zQnVpbGRlcik7Cn0KYGBgCgpUaGlzIGNvbWVzIGluIGhhbmR5IGVzcGVjaWFsbHkgd2hlbiBnZW5lcmF0aW5nIG11bHRpcGxlIGludGVyZmFjZXMsIGJ5IHRhZyBvciBlbmRwb2ludC4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgYC5yZWZpdHRlcmAgc2V0dGluZ3MgZmlsZQoKYGBganNvbgp7CiAgIm9wZW5BcGlQYXRoIjogIi4uL09wZW5BUEkvdjMuMC9wZXRzdG9yZS5qc29uIiwKICAibmFtZXNwYWNlIjogIlBldHN0b3JlIiwKICAidXNlRHluYW1pY1F1ZXJ5c3RyaW5nUGFyYW1ldGVycyI6IHRydWUsCiAgIm11bHRpcGxlSW50ZXJmYWNlcyI6ICJCeVRhZyIsCiAgIm5hbWluZyI6IHsKICAgICJ1c2VPcGVuQXBpVGl0bGUiOiBmYWxzZSwKICAgICJpbnRlcmZhY2VOYW1lIjogIlBldHN0b3JlIgogIH0sCiAgImRlcGVuZGVuY3lJbmplY3Rpb25TZXR0aW5ncyI6IHsKICAgICJiYXNlVXJsIjogImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzIiwKICAgICJodHRwTWVzc2FnZUhhbmRsZXJzIjogWyAiTXlEZWxlZ2F0aW5nSGFuZGxlciIgXSwKICAgICJ0cmFuc2llbnRFcnJvckhhbmRsZXIiOiAiSHR0cFJlc2lsaWVuY2UiLAogICAgIm1heFJldHJ5Q291bnQiOiAzLAogICAgImZpcnN0QmFja29mZlJldHJ5SW5TZWNvbmRzIjogMC41CiAgfSwKICAiYXBpenJTZXR0aW5ncyI6IHsKICAgICJ3aXRoUmVxdWVzdE9wdGlvbnMiOiB0cnVlLCAvLyBSZWNvbW1lbmRlZCB0byBpbmNsdWRlIGFuIEFwaXpyIHJlcXVlc3Qgb3B0aW9ucyBwYXJhbWV0ZXIgdG8gUmVmaXQgaW50ZXJmYWNlIG1ldGhvZHMKICAgICJ3aXRoUmVnaXN0cmF0aW9uSGVscGVyIjogdHJ1ZSwgLy8gTWFuZGF0b3J5IHRvIGFjdHVhbGx5IGdlbmVyYXRlIHRoZSBBcGl6ciByZWdpc3RyYXRpb24gZXh0ZW5kZWQgbWV0aG9kCiAgICAid2l0aENhY2hlUHJvdmlkZXIiOiAiSW5NZW1vcnkiLCAvLyBPcHRpb25hbCwgZGVmYXVsdCBpcyBOb25lCiAgICAid2l0aFByaW9yaXR5IjogdHJ1ZSwgLy8gT3B0aW9uYWwsIGRlZmF1bHQgaXMgZmFsc2UKICAgICJ3aXRoTWVkaWF0aW9uIjogdHJ1ZSwgLy8gT3B0aW9uYWwsIGRlZmF1bHQgaXMgZmFsc2UKICAgICJ3aXRoT3B0aW9uYWxNZWRpYXRpb24iOiB0cnVlLCAvLyBPcHRpb25hbCwgZGVmYXVsdCBpcyBmYWxzZQogICAgIndpdGhNYXBwaW5nUHJvdmlkZXIiOiAiQXV0b01hcHBlciIsIC8vIE9wdGlvbmFsLCBkZWZhdWx0IGlzIE5vbmUKICAgICJ3aXRoRmlsZVRyYW5zZmVyIjogdHJ1ZSAvLyBPcHRpb25hbCwgZGVmYXVsdCBpcyBmYWxzZQogIH0KfQpgYGAKCldpbGwgZ2VuZXJhdGUgYSBzaW5nbGUgYENvbmZpZ3VyZVBldHN0b3JlQXBpenJNYW5hZ2VycygpYCBleHRlbnNpb24gbWV0aG9kIHRoYXQgbWF5IGNvbnRhaW4gZGVwZW5kZW5jeSBpbmplY3Rpb24gY29uZmlndXJhdGlvbiBjb2RlIGZvciBtdWx0aXBsZSBpbnRlcmZhY2VzIGxpa2UgdGhpcwoKYGBgY3NoYXJwCnB1YmxpYyBzdGF0aWMgSVNlcnZpY2VDb2xsZWN0aW9uIENvbmZpZ3VyZVBldHN0b3JlQXBpenJNYW5hZ2VycygKICAgIHRoaXMgSVNlcnZpY2VDb2xsZWN0aW9uIHNlcnZpY2VzLAogICAgQWN0aW9uPElBcGl6ckV4dGVuZGVkQ29tbW9uT3B0aW9uc0J1aWxkZXI+PyBvcHRpb25zQnVpbGRlciA9IG51bGwpCnsKICAgIG9wdGlvbnNCdWlsZGVyID8/PSBfID0+IHsgfTsgLy8gRGVmYXVsdCBlbXB0eSBvcHRpb25zIGlmIG51bGwKICAgIG9wdGlvbnNCdWlsZGVyICs9IG9wdGlvbnMgPT4gb3B0aW9ucwogICAgICAgIC5XaXRoQmFzZUFkZHJlc3MoImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzIiwgQXBpenJEdXBsaWNhdGVTdHJhdGVneS5JZ25vcmUpCiAgICAgICAgLldpdGhEZWxlZ2F0aW5nSGFuZGxlcjxNeURlbGVnYXRpbmdIYW5kbGVyPigpCiAgICAgICAgLkNvbmZpZ3VyZUh0dHBDbGllbnRCdWlsZGVyKGJ1aWxkZXIgPT4gYnVpbGRlcgogICAgICAgICAgICAuQWRkU3RhbmRhcmRSZXNpbGllbmNlSGFuZGxlcihjb25maWcgPT4KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY29uZmlnLlJldHJ5ID0gbmV3IEh0dHBSZXRyeVN0cmF0ZWd5T3B0aW9ucwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFVzZUppdHRlciA9IHRydWUsCiAgICAgICAgICAgICAgICAgICAgTWF4UmV0cnlBdHRlbXB0cyA9IDMsCiAgICAgICAgICAgICAgICAgICAgRGVsYXkgPSBUaW1lU3Bhbi5Gcm9tU2Vjb25kcygwLjUpCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KSkKICAgICAgICAuV2l0aEluTWVtb3J5Q2FjaGVIYW5kbGVyKCkKICAgICAgICAuV2l0aEF1dG9NYXBwZXJNYXBwaW5nSGFuZGxlcigpCiAgICAgICAgLldpdGhQcmlvcml0eSgpCiAgICAgICAgLldpdGhPcHRpb25hbE1lZGlhdGlvbigpCiAgICAgICAgLldpdGhGaWxlVHJhbnNmZXJPcHRpb25hbE1lZGlhdGlvbigpOwoKICAgIHJldHVybiBzZXJ2aWNlcy5BZGRBcGl6cigKICAgICAgICByZWdpc3RyeSA9PiByZWdpc3RyeQogICAgICAgICAgICAuQWRkTWFuYWdlckZvcjxJUGV0QXBpPigpCiAgICAgICAgICAgIC5BZGRNYW5hZ2VyRm9yPElTdG9yZUFwaT4oKQogICAgICAgICAgICAuQWRkTWFuYWdlckZvcjxJVXNlckFwaT4oKSwKICAgICAgICBvcHRpb25zQnVpbGRlcik7Cgp9CmBgYAoKSGVyZSwgYElQZXRBcGlgLCBgSVN0b3JlQXBpYCBhbmQgYElVc2VyQXBpYCBhcmUgdGhlIGdlbmVyYXRlZCBpbnRlcmZhY2VzIHdoaWNoIHNoYXJlIHRoZSBzYW1lIGNvbW1vbiBjb25maWd1cmF0aW9uIGRlZmluZWQgZnJvbSB0aGUgYC5yZWZpdHRlcmAgZmlsZS4KCiMjIyBbU3RhdGljXSgjdGFiL3RhYmlkLXN0YXRpYykKClRvIGVuYWJsZSBBcGl6ciBzdGF0aWMgYnVpbGRlciBjb2RlIGdlbmVyYXRpb24sIHlvdSBuZWVkIGF0IGxlYXN0IHRvIHNldCB0aGUgYHdpdGhSZWdpc3RyYXRpb25IZWxwZXJgIHByb3BlcnR5IHRvIGB0cnVlYCBhbmQgbGVhdmUgdGhlIGBEZXBlbmRlbmN5SW5qZWN0aW9uU2V0dGluZ3NgIHNlY3Rpb24gdG8gbnVsbCBpbiB0aGUgYC5yZWZpdHRlcmAgc2V0dGluZ3MgZmlsZS4KVGhpcyBpcyB3aGF0IHRoZSBgLnJlZml0dGVyYCBzZXR0aW5ncyBmaWxlIG1heSBsb29rIGxpa2UsIGRlcGVuZGluZyBvbiB5b3UgY29uZmlndXJhdGlvbjoKCmBgYGpzb24KewogICJvcGVuQXBpUGF0aCI6ICIuLi9PcGVuQVBJL3YzLjAvcGV0c3RvcmUuanNvbiIsCiAgIm5hbWVzcGFjZSI6ICJQZXRzdG9yZSIsCiAgInVzZUR5bmFtaWNRdWVyeXN0cmluZ1BhcmFtZXRlcnMiOiB0cnVlLAogICJhcGl6clNldHRpbmdzIjogewogICAgIndpdGhSZXF1ZXN0T3B0aW9ucyI6IHRydWUsIC8vIFJlY29tbWVuZGVkIHRvIGluY2x1ZGUgYW4gQXBpenIgcmVxdWVzdCBvcHRpb25zIHBhcmFtZXRlciB0byBSZWZpdCBpbnRlcmZhY2UgbWV0aG9kcwogICAgIndpdGhSZWdpc3RyYXRpb25IZWxwZXIiOiB0cnVlLCAvLyBNYW5kYXRvcnkgdG8gYWN0dWFsbHkgZ2VuZXJhdGUgdGhlIEFwaXpyIHJlZ2lzdHJhdGlvbiBleHRlbmRlZCBtZXRob2QKICAgICJ3aXRoQ2FjaGVQcm92aWRlciI6ICJBa2F2YWNoZSIsIC8vIE9wdGlvbmFsLCBkZWZhdWx0IGlzIE5vbmUKICAgICJ3aXRoUHJpb3JpdHkiOiB0cnVlLCAvLyBPcHRpb25hbCwgZGVmYXVsdCBpcyBmYWxzZQogICAgIndpdGhNYXBwaW5nUHJvdmlkZXIiOiAiQXV0b01hcHBlciIsIC8vIE9wdGlvbmFsLCBkZWZhdWx0IGlzIE5vbmUKICAgICJ3aXRoRmlsZVRyYW5zZmVyIjogdHJ1ZSAvLyBPcHRpb25hbCwgZGVmYXVsdCBpcyBmYWxzZQogIH0KfQpgYGAKCndoaWNoIHdpbGwgZ2VuZXJhdGUgYSBzdGF0aWMgYnVpbGRlciBtZXRob2QgY2FsbGVkIGBCdWlsZFBldHN0b3JlMzBBcGl6ck1hbmFnZXIoKWAuIFRoZSBnZW5lcmF0ZWQgYnVpbGRlciBtZXRob2QgZGVwZW5kcyBvbiBbYEFwaXpyYF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL0FwaXpyKSBsaWJyYXJ5IGFuZCBsb29rcyBsaWtlIHRoaXM6CgpgYGBjcwpwdWJsaWMgc3RhdGljIElBcGl6ck1hbmFnZXI8SVN3YWdnZXJQZXRzdG9yZU9wZW5BUEkzMD4gQnVpbGRQZXRzdG9yZTMwQXBpenJNYW5hZ2VyKEFjdGlvbjxJQXBpenJNYW5hZ2VyT3B0aW9uc0J1aWxkZXI+IG9wdGlvbnNCdWlsZGVyKQp7CiAgICBvcHRpb25zQnVpbGRlciA/Pz0gXyA9PiB7IH07IC8vIERlZmF1bHQgZW1wdHkgb3B0aW9ucyBpZiBudWxsCiAgICBvcHRpb25zQnVpbGRlciArPSBvcHRpb25zID0+IG9wdGlvbnMKICAgICAgICAuV2l0aEFrYXZhY2hlQ2FjaGVIYW5kbGVyKCkKICAgICAgICAuV2l0aEF1dG9NYXBwZXJNYXBwaW5nSGFuZGxlcihuZXcgTWFwcGVyQ29uZmlndXJhdGlvbihjb25maWcgPT4geyAvKiBZT1VSX01BUFBJTkdTX0hFUkUgKi8gfSkpCiAgICAgICAgLldpdGhQcmlvcml0eSgpOwoKICAgIHJldHVybiBBcGl6ckJ1aWxkZXIuQ3VycmVudC5DcmVhdGVNYW5hZ2VyRm9yPElTd2FnZ2VyUGV0c3RvcmVPcGVuQVBJMzA+KG9wdGlvbnNCdWlsZGVyKTsKfQpgYGAKClRoaXMgY29tZXMgaW4gaGFuZHkgZXNwZWNpYWxseSB3aGVuIGdlbmVyYXRpbmcgbXVsdGlwbGUgaW50ZXJmYWNlcywgYnkgdGFnIG9yIGVuZHBvaW50LiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBgLnJlZml0dGVyYCBzZXR0aW5ncyBmaWxlCgpgYGBqc29uCnsKICAib3BlbkFwaVBhdGgiOiAiLi4vT3BlbkFQSS92My4wL3BldHN0b3JlLmpzb24iLAogICJuYW1lc3BhY2UiOiAiUGV0c3RvcmUiLAogICJ1c2VEeW5hbWljUXVlcnlzdHJpbmdQYXJhbWV0ZXJzIjogdHJ1ZSwKICAibXVsdGlwbGVJbnRlcmZhY2VzIjogIkJ5VGFnIiwKICAibmFtaW5nIjogewogICAgInVzZU9wZW5BcGlUaXRsZSI6IGZhbHNlLAogICAgImludGVyZmFjZU5hbWUiOiAiUGV0c3RvcmUiCiAgfSwKICAiZGVwZW5kZW5jeUluamVjdGlvblNldHRpbmdzIjogewogICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMiLAogICAgImh0dHBNZXNzYWdlSGFuZGxlcnMiOiBbICJNeURlbGVnYXRpbmdIYW5kbGVyIiBdLAogICAgInRyYW5zaWVudEVycm9ySGFuZGxlciI6ICJIdHRwUmVzaWxpZW5jZSIsCiAgICAibWF4UmV0cnlDb3VudCI6IDMsCiAgICAiZmlyc3RCYWNrb2ZmUmV0cnlJblNlY29uZHMiOiAwLjUKICB9LAogICJhcGl6clNldHRpbmdzIjogewogICAgIndpdGhSZXF1ZXN0T3B0aW9ucyI6IHRydWUsIC8vIFJlY29tbWVuZGVkIHRvIGluY2x1ZGUgYW4gQXBpenIgcmVxdWVzdCBvcHRpb25zIHBhcmFtZXRlciB0byBSZWZpdCBpbnRlcmZhY2UgbWV0aG9kcwogICAgIndpdGhSZWdpc3RyYXRpb25IZWxwZXIiOiB0cnVlLCAvLyBNYW5kYXRvcnkgdG8gYWN0dWFsbHkgZ2VuZXJhdGUgdGhlIEFwaXpyIHJlZ2lzdHJhdGlvbiBleHRlbmRlZCBtZXRob2QKICAgICJ3aXRoQ2FjaGVQcm92aWRlciI6ICJJbk1lbW9yeSIsIC8vIE9wdGlvbmFsLCBkZWZhdWx0IGlzIE5vbmUKICAgICJ3aXRoUHJpb3JpdHkiOiB0cnVlLCAvLyBPcHRpb25hbCwgZGVmYXVsdCBpcyBmYWxzZQogICAgIndpdGhNZWRpYXRpb24iOiB0cnVlLCAvLyBPcHRpb25hbCwgZGVmYXVsdCBpcyBmYWxzZQogICAgIndpdGhPcHRpb25hbE1lZGlhdGlvbiI6IHRydWUsIC8vIE9wdGlvbmFsLCBkZWZhdWx0IGlzIGZhbHNlCiAgICAid2l0aE1hcHBpbmdQcm92aWRlciI6ICJBdXRvTWFwcGVyIiwgLy8gT3B0aW9uYWwsIGRlZmF1bHQgaXMgTm9uZQogICAgIndpdGhGaWxlVHJhbnNmZXIiOiB0cnVlIC8vIE9wdGlvbmFsLCBkZWZhdWx0IGlzIGZhbHNlCiAgfQp9CmBgYAoKV2lsbCBnZW5lcmF0ZSBhIHNpbmdsZSBgQnVpbGRQZXRzdG9yZUFwaXpyTWFuYWdlcnMoKWAgYnVpbGRlciBtZXRob2QgdGhhdCBtYXkgY29udGFpbiBjb25maWd1cmF0aW9uIGNvZGUgZm9yIG11bHRpcGxlIGludGVyZmFjZXMgbGlrZSB0aGlzCgpgYGBjc2hhcnAKcHVibGljIHN0YXRpYyBJQXBpenJSZWdpc3RyeSBCdWlsZFBldHN0b3JlQXBpenJNYW5hZ2VycyhBY3Rpb248SUFwaXpyQ29tbW9uT3B0aW9uc0J1aWxkZXI+IG9wdGlvbnNCdWlsZGVyKQp7CiAgICBvcHRpb25zQnVpbGRlciA/Pz0gXyA9PiB7IH07IC8vIERlZmF1bHQgZW1wdHkgb3B0aW9ucyBpZiBudWxsCiAgICBvcHRpb25zQnVpbGRlciArPSBvcHRpb25zID0+IG9wdGlvbnMKICAgICAgICAuV2l0aEFrYXZhY2hlQ2FjaGVIYW5kbGVyKCkKICAgICAgICAuV2l0aEF1dG9NYXBwZXJNYXBwaW5nSGFuZGxlcihuZXcgTWFwcGVyQ29uZmlndXJhdGlvbihjb25maWcgPT4geyAvKiBZT1VSX01BUFBJTkdTX0hFUkUgKi8gfSkpCiAgICAgICAgLldpdGhQcmlvcml0eSgpOwoKICAgIHJldHVybiBBcGl6ckJ1aWxkZXIuQ3VycmVudC5DcmVhdGVSZWdpc3RyeSgKICAgICAgICByZWdpc3RyeSA9PiByZWdpc3RyeQogICAgICAgICAgICAuQWRkTWFuYWdlckZvcjxJUGV0QXBpPigpCiAgICAgICAgICAgIC5BZGRNYW5hZ2VyRm9yPElTdG9yZUFwaT4oKQogICAgICAgICAgICAuQWRkTWFuYWdlckZvcjxJVXNlckFwaT4oKSwKICAgICAgICBvcHRpb25zQnVpbGRlcik7Cn0KYGBgCgpIZXJlLCBgSVBldEFwaWAsIGBJU3RvcmVBcGlgIGFuZCBgSVVzZXJBcGlgIGFyZSB0aGUgZ2VuZXJhdGVkIGludGVyZmFjZXMgd2hpY2ggc2hhcmUgdGhlIHNhbWUgY29tbW9uIGNvbmZpZ3VyYXRpb24gZGVmaW5lZCBmcm9tIHRoZSBgLnJlZml0dGVyYCBmaWxlLgoKKioqCgojIyMgQ3VzdG9taXppbmcgdGhlIGNvbmZpZ3VyYXRpb24KCllvdSBtYXkgd2FudCB0byBhZGp1c3QgYXBpcyBjb25maWd1cmF0aW9uLCBmb3IgZXhhbXBsZSwgdG8gYWRkIGEgY3VzdG9tIGhlYWRlciB0byByZXF1ZXN0cy4gVGhpcyBjYW4gYmUgZG9uZSB1c2luZyB0aGUgYEFjdGlvbjxUQXBpenJPcHRpb25zQnVpbGRlcj5gIHBhcmFtZXRlciB3aGlsZSBjYWxsaW5nIHRoZSBnZW5lcmF0ZWQgbWV0aG9kLgpUbyBrbm93IGhvdyB0byBtYWtlIEFwaXpyIGZpdCB5b3VyIG5lZWRzLCBwbGVhc2UgcmVmZXIgdG8gdGhlIFtBcGl6ciBkb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5hcGl6ci5uZXQpLgoKIyMjIFVzaW5nIHRoZSBtYW5hZ2VycwoKT25jZSB5b3UgY2FsbGVkIHRoZSBnZW5lcmF0ZWQgbWV0aG9kLCB5b3Ugd2lsbCBnZXQgYW4gYElBcGl6ck1hbmFnZXI8VD5gIGluc3RhbmNlIHRoYXQgeW91IGNhbiB1c2UgdG8gbWFrZSByZXF1ZXN0cyB0byB0aGUgQVBJLiBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gdXNlIGl0OgoKYGBgY3NoYXJwCnZhciByZXN1bHQgPSBhd2FpdCBwZXRzdG9yZU1hbmFnZXIuRXhlY3V0ZUFzeW5jKChhcGksIG9wdCkgPT4gYXBpLkdldFBldEJ5SWQoMSwgb3B0KSwKICAgIG9wdGlvbnMgPT4gb3B0aW9ucyAvLyBXaGF0ZXZlciBmaW5hbCByZXF1ZXN0IG9wdGlvbnMgeW91IHdhbnQgdG8gYXBwbHkKICAgICAgICAuV2l0aFByaW9yaXR5KFByaW9yaXR5LkJhY2tncm91bmQpCiAgICAgICAgLldpdGhIZWFkZXJzKFsiSGVhZGVyS2V5MTogSGVhZGVyVmFsdWUxIl0pCiAgICAgICAgLldpdGhSZXF1ZXN0VGltZW91dCgiMDA6MDA6MTAiKQogICAgICAgIC5XaXRoQ2FuY2VsbGF0aW9uKGN0cy5Ub2tlbikpOwpgYGAKClBsZWFzZSBoZWFkIHRvIHRoZSBbQXBpenIgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuYXBpenIubmV0KSB0byBnZXQgbW9yZS4KCiMjIFN5c3RlbSByZXF1aXJlbWVudHMKCi5ORVQgOC4wIG9yIC5ORVQgOS4wCgojIyBUZXN0aW5nCgpSZWZpdHRlciB1c2VzIFtUVW5pdF0oaHR0cHM6Ly9naXRodWIuY29tL3Rob21odXJzdC9UVW5pdCkgYXMgaXRzIHRlc3RpbmcgZnJhbWV3b3JrIGluc3RlYWQgb2YgeFVuaXQuIFRVbml0IHdhcyBjaG9zZW4gZm9yIGl0cyBzdXBlcmlvciBwZXJmb3JtYW5jZSwgcHJvdmlkaW5nIDN4IGZhc3RlciB0ZXN0IGV4ZWN1dGlvbiBjb21wYXJlZCB0byB4VW5pdC4gVGhpcyBzaWduaWZpY2FudGx5IGltcHJvdmVzIHRoZSBkZXZlbG9wZXIgZXhwZXJpZW5jZSB3aGVuIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUgbG9jYWxseSBhbmQgaW4gQ0kvQ0QgcGlwZWxpbmVzLgoKVG8gcnVuIHRoZSB0ZXN0czoKCmBgYGJhc2gKZG90bmV0IHRlc3QgLS1zb2x1dGlvbiBzcmMvUmVmaXR0ZXIuc2xueCAtYyBSZWxlYXNlCmBgYAoKIyMgQ29udHJpYnV0aW5nCgpQbGVhc2UgcmVhZCBvdXIgW2NvbnRyaWJ1dGlvbiBndWlkZWxpbmVzXShDT05UUklCVVRJTkcubWQpIGlmIHlvdSdkIGxpa2UgdG8gY29udHJpYnV0ZSB0byB0aGUgcHJvamVjdC4KCiMjIENvbnRyaWJ1dG9ycwoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6U1RBUlQgLSBEbyBub3QgcmVtb3ZlIG9yIG1vZGlmeSB0aGlzIHNlY3Rpb24gLS0+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+PGEgaHJlZj0iI2lkZWFzLUplcmVteUJQIiB0aXRsZT0iSWRlYXMsIFBsYW5uaW5nLCAmIEZlZWRiYWNrIj7wn6SUPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9SmVyZW15QlAiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9SmVyZW15QlAiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ViYXJuYXJkIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwNTk2ODM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkVkIEJhcm5hcmQiLz48YnIgLz48c3ViPjxiPkVkIEJhcm5hcmQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNpZGVhcy1lYmFybmFyZCIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9iYXN0aWVubm9lbDkzIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE4MjUwMzUwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJiYXN0aWVuLm5vZWwiLz48YnIgLz48c3ViPjxiPmJhc3RpZW4ubm9lbDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQWJhc3RpZW5ub2VsOTMiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9NZWlrZWxMUCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTY2OTg0Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTWVpa2VsIFBoaWxpcHAiLz48YnIgLz48c3ViPjxiPk1laWtlbCBQaGlsaXBwPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjaWRlYXMtTWVpa2VsTFAiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwOi8vYmVya3NlbHZpLmRldiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NDY3NjUxNj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQmVyayBTZWx2aSIvPjxiciAvPjxzdWI+PGI+QmVyayBTZWx2aTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2lkZWFzLWJlcmtzbHYiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1iZXJrc2x2IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3d3dy50aGVidWlsZHNoZWV0LmNvbS8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTkwOTU2ND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSm9zaHVhIE96ZXJpIi8+PGJyIC8+PHN1Yj48Yj5Kb3NodWEgT3plcmk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FYZUNsdXRjaCIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9rYW5jYW5lLm5sLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MDE1MzQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlJ5YW4gSGVhdGgiLz48YnIgLz48c3ViPjxiPlJ5YW4gSGVhdGg8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNpZGVhcy1yeWFuaGVhdGgiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1yeWFuaGVhdGgiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0JyaWFvZXVpZGh0bnMiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzUzMDE1Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQnJpYW4gQnJ1bm5lciIvPjxiciAvPjxzdWI+PGI+QnJpYW4gQnJ1bm5lcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2lkZWFzLUJyaWFvZXVpZGh0bnMiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZnNhbWllYyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzE2NjAyMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRnJhbmsgU2FtaWVjIi8+PGJyIC8+PHN1Yj48Yj5GcmFuayBTYW1pZWM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1mc2FtaWVjIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mYWJpb2xvcmVnZ2lhbiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMTQ4MDc2OD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRmFiaW8gTG9yZWdnaWFuIi8+PGJyIC8+PHN1Yj48Yj5GYWJpbyBMb3JlZ2dpYW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FmYWJpb2xvcmVnZ2lhbiIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dlb21ldHJpa2FsIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExODc1Mjg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Imdlb21ldHJpa2FsIi8+PGJyIC8+PHN1Yj48Yj5nZW9tZXRyaWthbDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQWdlb21ldHJpa2FsIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2h1YmlucCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNTc2Mzc3Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU2h1YmluIFBhdmVsIi8+PGJyIC8+PHN1Yj48Yj5TaHViaW4gUGF2ZWw8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1zaHViaW5wIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3d3dy5uZXRpbmR1c3RyeS5ubCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMDMwMzQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IldpZWJlIFRpanNtYSIvPjxiciAvPjxzdWI+PGI+V2llYmUgVGlqc21hPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjaWRlYXMtemlkYWQiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaGdkZW1lcnMiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY5MTkwODc2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJIZW5yaSBEZW1lcnMiLz48YnIgLz48c3ViPjxiPkhlbnJpIERlbWVyczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQWhnZGVtZXJzIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRmFyZ2Vrcml0dCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTQ0ODk0MT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQW11bmQiLz48YnIgLz48c3ViPjxiPkFtdW5kPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9RmFyZ2Vrcml0dCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FGYXJnZWtyaXR0IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdmVsdm9sdWUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU1NDQ1OTY4P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJWZWdhcmQgTMO4a2tlbiIvPjxiciAvPjxzdWI+PGI+VmVnYXJkIEzDuGtrZW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj12ZWx2b2x1ZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0F2ZWx2b2x1ZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2JyYWQtdGVjaG5vbG9naWsiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU5OTc1MDYzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJicmFkLXRlY2hub2xvZ2lrIi8+PGJyIC8+PHN1Yj48Yj5icmFkLXRlY2hub2xvZ2lrPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBYnJhZC10ZWNobm9sb2dpayIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2phcm9zbGF3LWR1dGthIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQwMDcwMTM2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJKYXJvc8WCYXcgRHV0a2EiLz48YnIgLz48c3ViPjxiPkphcm9zxYJhdyBEdXRrYTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPWphcm9zbGF3LWR1dGthIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tYWtzaW9ua2luIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExNDgyMDQzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJtYWtzaW9ua2luIi8+PGJyIC8+PHN1Yj48Yj5tYWtzaW9ua2luPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBbWFrc2lvbmtpbiIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS93b2Nhc2VsbGEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzc2MDE1MDQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IndvY2FzZWxsYSIvPjxiciAvPjxzdWI+PGI+d29jYXNlbGxhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBd29jYXNlbGxhIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTWV0emllbGwiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzM3ODg4NDQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlBldHIgWmlrYSIvPjxiciAvPjxzdWI+PGI+UGV0ciBaaWthPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBTWV0emllbGwiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW4td2FjaHNtdXRoIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzg3NDgyMjA3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTZWJhc3RpYW4gV2FjaHNtdXRoIi8+PGJyIC8+PHN1Yj48Yj5TZWJhc3RpYW4gV2FjaHNtdXRoPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9c2ViYXN0aWFuLXdhY2hzbXV0aCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcXJ6eWNodSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80NjMzODEwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJxcnp5Y2h1Ii8+PGJyIC8+PHN1Yj48Yj5xcnp5Y2h1PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBcXJ6eWNodSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL3N0YmwuY29tIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQzMjE0MDgxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSLQkNC70LXQutGB0LDQvdC00YAiLz48YnIgLz48c3ViPjxiPtCQ0LvQtdC60YHQsNC90LTRgDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQWxvd2VybjFnaHQiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9BcmFnb3JuSEwiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTg0Nzg2MjM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFyYWdvcm5ITCIvPjxiciAvPjxzdWI+PGI+QXJhZ29ybkhMPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9QXJhZ29ybkhMIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rbWZkM3MiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTE4MDg5OD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ia21mZDNzIi8+PGJyIC8+PHN1Yj48Yj5rbWZkM3M8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1rbWZkM3MiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wZmVpZ2wiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjM3ODkxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJQaGlsaXBwIEZlaWdsIi8+PGJyIC8+PHN1Yj48Yj5QaGlsaXBwIEZlaWdsPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBcGZlaWdsIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3RvbW1paGFhcGEuZmkvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ3ODk2NzY4P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJUb21taSBIYWFwYSIvPjxiciAvPjxzdWI+PGI+VG9tbWkgSGFhcGE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0F0b21taWVlbWVsaSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL01yU2NvdHR5VGF5Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI0NDYzMzIxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTY290dCBUYXlsb3IiLz48YnIgLz48c3ViPjxiPlNjb3R0IFRheWxvcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQU1yU2NvdHR5VGF5IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2ItY2hlcmlja3MiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTYwNzk2NTY0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJzYi1jaGVyaWNrcyIvPjxiciAvPjxzdWI+PGI+c2ItY2hlcmlja3M8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNpZGVhcy1zYi1jaGVyaWNrcyIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQXNiLWNoZXJpY2tzIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vU1dhcm5iZXJnIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI2MjQ2MzQ2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTdGFmZmFuIFfDpHJuYmVyZyIvPjxiciAvPjxzdWI+PGI+U3RhZmZhbiBXw6RybmJlcmc8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FTV2FybmJlcmciIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9saWxpbnVzIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzc4OTUzMDA3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJMaW51cyBIYW1saW4iLz48YnIgLz48c3ViPjxiPkxpbnVzIEhhbWxpbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQWxpbGludXMiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPWxpbGludXMiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL21hcmNvaGVybi5jb20vZW4vI2Fib3V0Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUzNzY1MTc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1hcmNvIEhlcm5hbmRleiIvPjxiciAvPjxzdWI+PGI+TWFyY28gSGVybmFuZGV6PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBbWFyY29oZXJuIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9IiNpZGVhcy1tYXJjb2hlcm4iIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2RhdmlkLXB3Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE3ODQzMzg3NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iZGF2aWQtcHciLz48YnIgLz48c3ViPjxiPmRhdmlkLXB3PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBZGF2aWQtcHciIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPWRhdmlkLXB3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9lb21hLWtub3dpdCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTA2NjAxNzU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImVvbWEta25vd2l0Ii8+PGJyIC8+PHN1Yj48Yj5lb21hLWtub3dpdDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPWVvbWEta25vd2l0IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS8weGNlZCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81MTM2Mz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQ8OpZHJpYyBMdXRoaSIvPjxiciAvPjxzdWI+PGI+Q8OpZHJpYyBMdXRoaTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPTB4Y2VkIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vY2hyaXN0b3BoZGViYWVuZS5iZSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NDIyMDc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkNocmlzdG9waCBEZSBCYWVuZSIvPjxiciAvPjxzdWI+PGI+Q2hyaXN0b3BoIERlIEJhZW5lPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBY2hyaXN0b3BoZGViYWVuZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLzdhbW91MyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85OTM2MTA/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IjdhbW91MyIvPjxiciAvPjxzdWI+PGI+N2Ftb3UzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjaWRlYXMtN2Ftb3UzIiB0aXRsZT0iSWRlYXMsIFBsYW5uaW5nLCAmIEZlZWRiYWNrIj7wn6SUPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9oYWxkZW5jb2xsaWVyLmNvbSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNTM2NTY5OT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSGFsZGVuIi8+PGJyIC8+PHN1Yj48Yj5IYWxkZW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNpZGVhcy1IR0NvbGxpZXIiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWhhcnRtYWlyLWN1YmlkbyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjQ0NzkxNzQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Im1oYXJ0bWFpci1jdWJpZG8iLz48YnIgLz48c3ViPjxiPm1oYXJ0bWFpci1jdWJpZG88L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FtaGFydG1haXItY3ViaWRvIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2thcm9iZXJ0cyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83NDgyMTI2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJLZWl0aCBSb2JlcnRzIi8+PGJyIC8+PHN1Yj48Yj5LZWl0aCBSb2JlcnRzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBa2Fyb2JlcnRzIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va21jMDU5MDAwIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY2MDY3MD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iS2VubmV0aCBDcmF3Zm9yZCIvPjxiciAvPjxzdWI+PGI+S2VubmV0aCBDcmF3Zm9yZDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2lkZWFzLWttYzA1OTAwMCIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPWttYzA1OTAwMCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vMHgyYmFkYzBkZSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNzMyNDAwMTg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IjB4MmJhZGMwZGUiLz48YnIgLz48c3ViPjxiPjB4MmJhZGMwZGU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0EweDJiYWRjMGRlIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL21ldGVpb24uY2EiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjExNjMzMz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iVHlsb3IgUGF0ZXIiLz48YnIgLz48c3ViPjxiPlR5bG9yIFBhdGVyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9ZnJvZ2NydXNoIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKPCEtLSBtYXJrZG93bmxpbnQtcmVzdG9yZSAtLT4KPCEtLSBwcmV0dGllci1pZ25vcmUtZW5kIC0tPgoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6RU5EIC0tPgoKIwoKRm9yIHRpcHMgYW5kIHRyaWNrcyBvbiBzb2Z0d2FyZSBkZXZlbG9wbWVudCwgY2hlY2sgb3V0IFtteSBibG9nXShodHRwczovL2NocmlzdGlhbmhlbGxlLmNvbSkKCklmIHlvdSBmaW5kIHRoaXMgdXNlZnVsIGFuZCBmZWVsIGEgYml0IGdlbmVyb3VzIHRoZW4gZmVlbCBmcmVlIHRvIFtidXkgbWUgYSBjb2ZmZWUg4piVXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2NocmlzdGlhbmhlbGxlKQo= readmeEtag: '"3ff1d9f32093a89b55599493f184a57b2647bba9"' readmeLastModified: Thu, 22 Jan 2026 21:08:52 GMT repositoryId: 598846021 description: >- A tool for generating Refit interfaces and contracts from OpenAPI (Swagger) specifications created: '2023-02-07T23:18:12Z' updated: '2026-02-05T22:44:54Z' language: C# archived: false stars: 370 watchers: 2 forks: 63 owner: christianhelle logo: https://avatars.githubusercontent.com/u/710400?v=4 license: MIT repoEtag: '"b72cc13613ed3893344c9e5bc0208892b574fe4f4562508cfdd5fd9491a1094b"' repoLastModified: Thu, 05 Feb 2026 22:44:54 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/paypal/paypal-rest-api-specifications v3: true id: fe6bc87a1d5d10f013a6fcfe40ea9186 repositoryMetadata: base64Readme: >- IyBQYXlQYWwgUkVTVCBBUEkgU3BlY2lmaWNhdGlvbnMKClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyB0aGUgc3BlY2lmaWNhdGlvbiBmaWxlcyBmb3IgW1BheVBhbCBSRVNUIEFQSXNdKGh0dHBzOi8vZGV2ZWxvcGVyLnBheXBhbC5jb20vYXBpL3Jlc3QvKS4KCllvdSBjYW4gdHJ5IG91ciBSRVNUIEFQSXMgaW4gUG9zdG1hbiB3aXRob3V0IGEgUGF5UGFsIERldmVsb3BlciBhY2NvdW50LiBMZWFybiBtb3JlIGluIG91ciBbUG9zdG1hbiBndWlkZV0oaHR0cHM6Ly9kZXZlbG9wZXIucGF5cGFsLmNvbS9hcGkvcmVzdC9wb3N0bWFuLykuCgpbIVtSdW4gaW4gUG9zdG1hbl0oaHR0cHM6Ly9ydW4ucHN0bW4uaW8vYnV0dG9uLnN2ZyldKGh0dHBzOi8vZ29kLmd3LnBvc3RtYW4uY29tL3J1bi1jb2xsZWN0aW9uLzE5MDI0MTIyLTkyYTg1ZDBlLTUxZTctNDdkYS05ZjgzLWM0NWRjYjFjZGYyND9hY3Rpb249Y29sbGVjdGlvbiUyRmZvcmsmY29sbGVjdGlvbi11cmw9ZW50aXR5SWQlM0QxOTAyNDEyMi05MmE4NWQwZS01MWU3LTQ3ZGEtOWY4My1jNDVkY2IxY2RmMjQlMjZlbnRpdHlUeXBlJTNEY29sbGVjdGlvbiUyNndvcmtzcGFjZUlkJTNEMzQ1MzAwZTYtMzQ2ZS00MmUwLWFlZDEtNTM3MTc5MTlhZWYwKQoKIyMgU3RlcHMgdG8gZ2VuZXJhdGUgY29kZSBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uCgo+IF9Ob3RlOiBTcGVjIGZpbGUgdXNlZDogb3BlbmFwaS9jaGVja291dF9vcmRlcnNfdjIuanNvbl8KCiMjIyBKYXZhCiAxLiBgbnBtIHJ1biBjb2RlZ2VuLWphdmEgLS0gb3BlbmFwaS9jaGVja291dF9vcmRlcnNfdjIuanNvbiAtLWFydGlmYWN0LWlkIG9yZGVyc2AKIDIuIGBjZCBnZW5lcmF0ZWQvamF2YWAKIDMuIGBtdm4gY2xlYW4gaW5zdGFsbGAKClRoZSBhYm92ZSB3aWxsIGluc3RhbGwgdGhlIGBvcmRlcnNgIGFydGlmYWN0IHRvIHRoZSBsb2NhbCBtYXZlbiByZXBvc2l0b3J5CgojIyBBdmFpbGFibGUgc2NyaXB0cwoKYGBgCiBucG0gcnVuClNjcmlwdHMgYXZhaWxhYmxlIGluIEBwYXlwYWwvcGF5cGFsLXJlc3QtYXBpLXNwZWNpZmljYXRpb25zQDEuMC4wIHZpYSBgbnBtIHJ1bi1zY3JpcHRgOgogIHByZXZpZXcKICAgIHJlZG9jbHkgcHJldmlldy1kb2NzCiAgYnVuZGxlCiAgICByZWRvY2x5IGJ1bmRsZQogIGJ1bmRsZS1kZXJlZgogICAgcmVkb2NseSBidW5kbGUgLWQgdHJ1ZQogIGxpbnQtcmVkb2NseQogICAgcmVkb2NseSAtLWZvcm1hdCBzdW1tYXJ5IGxpbnQKICBsaW50LXNwZWN0cmFsCiAgICBzcGVjdHJhbCAtLWZvcm1hdCBwcmV0dHkgbGludAogIGxpbnQtb3BlbmFwaQogICAgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZhbGlkYXRlIC1pCiAgY29kZWdlbi1qYXZhCiAgICBvcGVuYXBpLWdlbmVyYXRvci1jbGkgZ2VuZXJhdGUgLWcgamF2YSAtbyBnZW5lcmF0ZWQvamF2YSAtaQogIGNvZGVnZW4tdHlwZXNjcmlwdC1ub2RlCiAgICBvcGVuYXBpLWdlbmVyYXRvci1jbGkgZ2VuZXJhdGUgLWcgdHlwZXNjcmlwdC1ub2RlIC1vIGdlbmVyYXRlZC90eXBlc2NyaXB0LW5vZGUgLWkKYGBgCgojIyBBdmFpbGFibGUgc3BlY2lmaWNhdGlvbnMKCiMjIyBPcGVuQVBJIDMuMC4zCgpUaGUgW09wZW5BUEldKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uL3YzLykgc3BlY2lmaWNhdGlvbiBpcyBhIHByb2dyYW1taW5nIGxhbmd1YWdlIGFnbm9zdGljIHN0YW5kYXJkIHRoYXQgbGV0cyBwcm92aWRlcnMgZGVzY3JpYmUgdGhlIGludGVyZmFjZSBvZiB0aGVpciBIVFRQIEFQSXMuIFRoaXMgYWxsb3dzIGJvdGggaHVtYW5zIGFuZCBtYWNoaW5lcyB0byBkaXNjb3ZlciB0aGUgY2FwYWJpbGl0aWVzIG9mIGFuIEFQSSB3aXRob3V0IG5lZWRpbmcgdG8gZmlyc3QgcmVhZCBkb2N1bWVudGF0aW9uIG9yIHVuZGVyc3RhbmQgdGhlIGltcGxlbWVudGF0aW9uLgoKfCBBUEkgTmFtZSAgICAgICAgICAgICAgfCBWZXJzaW9uIHwgTGlua3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBBZGQgVHJhY2tpbmcgICAgICAgICAgfCB2MSAgICAgIHwgW09wZW5BUEldKC4vb3BlbmFwaS9zaGlwcGluZ19zaGlwbWVudF90cmFja2luZ192MS5qc29uKSwgW0FQSSBSZWZlcmVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLnBheXBhbC5jb20vZG9jcy9hcGkvdHJhY2tpbmcvdjEvKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBDYXRhbG9nIFByb2R1Y3RzICAgICAgfCB2MSAgICAgIHwgW09wZW5BUEldKC4vb3BlbmFwaS9jYXRhbG9nc19wcm9kdWN0c192MS5qc29uKSwgW0FQSSBSZWZlcmVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLnBheXBhbC5jb20vZG9jcy9hcGkvY2F0YWxvZy1wcm9kdWN0cy92MS8pICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBEaXNwdXRlcyAgICAgICAgICAgICAgfCB2MSAgICAgIHwgW09wZW5BUEldKC4vb3BlbmFwaS9jdXN0b21lcl9kaXNwdXRlc192MS5qc29uKSwgW0FQSSBSZWZlcmVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLnBheXBhbC5jb20vZG9jcy9hcGkvY3VzdG9tZXItZGlzcHV0ZXMvdjEvKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBJbnZvaWNlcyAgICAgICAgICAgICAgfCB2MiAgICAgIHwgW09wZW5BUEldKC4vb3BlbmFwaS9pbnZvaWNpbmdfdjIuanNvbiksIFtBUEkgUmVmZXJlbmNlXShodHRwczovL2RldmVsb3Blci5wYXlwYWwuY29tL2RvY3MvYXBpL2ludm9pY2luZy92Mi8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBPcmRlcnMgICAgICAgICAgICAgICAgfCB2MiAgICAgIHwgW09wZW5BUEldKC4vb3BlbmFwaS9jaGVja291dF9vcmRlcnNfdjIuanNvbiksIFtBUEkgUmVmZXJlbmNlXShodHRwczovL2RldmVsb3Blci5wYXlwYWwuY29tL2RvY3MvYXBpL29yZGVycy92Mi8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBQYXJ0bmVyIFJlZmVycmFscyAgICAgfCB2MiAgICAgIHwgW09wZW5BUEldKC4vb3BlbmFwaS9jdXN0b21lcl9wYXJ0bmVyX3JlZmVycmFsc192Mi5qc29uKSwgW0FQSSBSZWZlcmVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLnBheXBhbC5jb20vZG9jcy9hcGkvcGFydG5lci1yZWZlcnJhbHMvdjIvKSAgICAgICAgICAgICAgICAgIHwKfCBQYXltZW50IEV4cGVyaWVuY2UgICAgfCB2MSAgICAgIHwgW09wZW5BUEldKC4vb3BlbmFwaS9wYXltZW50LWV4cGVyaWVuY2Vfd2ViX2V4cGVyaWVuY2VfcHJvZmlsZXNfdjEuanNvbiksIFtBUEkgUmVmZXJlbmNlXShodHRwczovL2RldmVsb3Blci5wYXlwYWwuY29tL2RvY3MvYXBpL3BheW1lbnQtZXhwZXJpZW5jZS92MS8pIHwKfCBQYXltZW50IE1ldGhvZCBUb2tlbnMgfCB2MyAgICAgIHwgW09wZW5BUEldKC4vb3BlbmFwaS92YXVsdF9wYXltZW50X3Rva2Vuc192My5qc29uKSwgW0FQSSBSZWZlcmVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLnBheXBhbC5jb20vZG9jcy9hcGkvcGF5bWVudC10b2tlbnMvdjMvKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBQYXltZW50cyAgICAgICAgICAgICAgfCB2MiAgICAgIHwgW09wZW5BUEldKC4vb3BlbmFwaS9wYXltZW50c19wYXltZW50X3YyLmpzb24pLCBbQVBJIFJlZmVyZW5jZV0oaHR0cHM6Ly9kZXZlbG9wZXIucGF5cGFsLmNvbS9kb2NzL2FwaS9wYXltZW50cy92Mi8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBQYXlvdXRzICAgICAgICAgICAgICAgfCB2MSAgICAgIHwgW09wZW5BUEldKC4vb3BlbmFwaS9wYXltZW50c19wYXlvdXRzX2JhdGNoX3YxLmpzb24pLCBbQVBJIFJlZmVyZW5jZV0oaHR0cHM6Ly9kZXZlbG9wZXIucGF5cGFsLmNvbS9kb2NzL2FwaS9wYXltZW50cy5wYXlvdXRzLWJhdGNoL3YxLykgICAgICAgICAgICAgICAgIHwKfCBTdWJzY3JpcHRpb25zICAgICAgICAgfCB2MSAgICAgIHwgW09wZW5BUEldKC4vb3BlbmFwaS9iaWxsaW5nX3N1YnNjcmlwdGlvbnNfdjEuanNvbiksIFtBUEkgUmVmZXJlbmNlXShodHRwczovL2RldmVsb3Blci5wYXlwYWwuY29tL2RvY3MvYXBpL3N1YnNjcmlwdGlvbnMvdjEvKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBUcmFuc2FjdGlvbiBTZWFyY2ggICAgfCB2MSAgICAgIHwgW09wZW5BUEldKC4vb3BlbmFwaS9yZXBvcnRpbmdfdHJhbnNhY3Rpb25zX3YxLmpzb24pLCBbQVBJIFJlZmVyZW5jZV0oaHR0cHM6Ly9kZXZlbG9wZXIucGF5cGFsLmNvbS9kb2NzL2FwaS90cmFuc2FjdGlvbi1zZWFyY2gvdjEvKSAgICAgICAgICAgICAgICAgICAgIHwKfCBXZWJob29rcyBNYW5hZ2VtZW50ICAgfCB2MSAgICAgIHwgW09wZW5BUEldKC4vb3BlbmFwaS9ub3RpZmljYXRpb25zX3dlYmhvb2tzX3YxLmpzb24pLCBbQVBJIFJlZmVyZW5jZV0oaHR0cHM6Ly9kZXZlbG9wZXIucGF5cGFsLmNvbS9kb2NzL2FwaS93ZWJob29rcy92MS8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCgojIyMgU3VwcG9ydAoKW1BheVBhbCdzIERldmVsb3BlciBzdXBwb3J0XShodHRwczovL2RldmVsb3Blci5wYXlwYWwuY29tL2RvY3Mvc3VwcG9ydC8pCgoKIAo= readmeEtag: '"61e2bf90daf75f6fd2c3b8e5c4c9d9d6e780f987"' readmeLastModified: Fri, 25 Jul 2025 15:47:17 GMT repositoryId: 673944158 description: This repository contains the specification files for PayPal REST APIs. created: '2023-08-02T19:26:26Z' updated: '2026-02-05T19:33:42Z' language: null archived: false stars: 359 watchers: 31 forks: 274 owner: paypal logo: https://avatars.githubusercontent.com/u/476675?v=4 license: Apache-2.0 repoEtag: '"e94552745bc62ebbd0a8b1922a871ba020034fa19c5a76044886f1c712824e79"' repoLastModified: Thu, 05 Feb 2026 19:33:42 GMT category: Code Generators foundInMaster: true - source: openapi3 tags repository: https://github.com/grafana/thema v3: true repositoryMetadata: base64Readme: >- IyBUaGVtYQoKPiBbIVdBUk5JTkddCj4gVGhpcyByZXBvc2l0b3J5IGlzIG5vIGxvbmdlciBhY3RpdmVseSBtYWludGFpbmVkIG9yIHN1cHBvcnRlZC4KPiBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gY29udGludWluZyB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBwcm9qZWN0LCBmZWVsIGZyZWUgdG8gZm9yayB0aGUgcmVwb3NpdG9yeSBhbmQgY3VzdG9taXplIGl0IHRvIHlvdXIgbmVlZHMuCgpUaGVtYSBpcyBhIHN5c3RlbSBmb3Igd3JpdGluZyBzY2hlbWFzLiBNdWNoIGxpa2UgSlNPTiBTY2hlbWEgb3IgT3BlbkFQSSwgaXQgaXMgZ2VuZXJhbC1wdXJwb3NlIGFuZCBpdHMgbW9zdCBvYnZpb3VzIGFwcGxpY2F0aW9uIGlzIGFzIGFuIFtJRExdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVyZmFjZV9kZXNjcmlwdGlvbl9sYW5ndWFnZSkuIEhvd2V2ZXIsIHRob3NlIHN5c3RlbXMgdHJlYXQgX2NoYW5naW5nXyBzY2hlbWFzIGFzIG91dCBvZiBzY29wZTogYSBzaW5nbGUgdmVyc2lvbiBvZiBhIHNjaGVtYSBmb3Igc29tZSBvYmplY3QgaXMgdGhlIGF0b21pYyB1bml0LCBhbmQgdmVyc2lvbmluZyBpcyBsZWZ0IHRvIG9wYXF1ZSBzdHJpbmdzIGluIGV4dGVybmFsIHN5c3RlbXMgbGlrZSBnaXQgb3IgSFRUUC4gVGhlbWEsIGJ5IGNvbnRyYXN0LCBtYWtlcyBzY2hlbWEgY2hhbmdlIGEgZmlyc3QtY2xhc3Mgc3lzdGVtIHByb3BlcnR5OiB0aGUgYXRvbWljIHVuaXQgaXMgdGhlIF9zZXRfIG9mIHNjaGVtYSBmb3Igc29tZSBvYmplY3QsIGl0ZXJhdGl2ZWx5IGFwcGVuZGVkIHRvIG92ZXIgdGltZSBhcyByZXF1aXJlbWVudHMgZXZvbHZlLgoKVGhlbWEncyBhcHByb2FjaCBpcyBub3ZlbCwgc28gYW4gYW5hbG9neSB0byB0aGUgZmFtaWxpYXIgbWF5IGhlbHAuIFsiQnJhbmNoaW5nIGJ5IGFic3RyYWN0aW9uIl0oaHR0cHM6Ly9tYXJ0aW5mb3dsZXIuY29tL2JsaWtpL0JyYW5jaEJ5QWJzdHJhY3Rpb24uaHRtbCkgc3VnZ2VzdHMgdGhhdCB5b3UgcmVmYWN0b3IgbGFyZ2UgYXBwbGljYXRpb25zIG5vdCB3aXRoIGxvbmctcnVubmluZyBWQ1MgYnJhbmNoZXMgYW5kIGJpZy1iYW5nIG1lcmdlcywgYnV0IGJ5IGxldHRpbmcgb2xkIGFuZCBuZXcgY29kZSBsaXZlIHNpZGUtYnktc2lkZSBvbiBgbWFpbmAsIGFuZCBjaG9vc2luZyBiZXR3ZWVuIHRoZW0gd2l0aCBsb2dpY2FsIGdhdGVzLCBsaWtlIFtmZWF0dXJlIGZsYWdzXShodHRwczovL2ZlYXR1cmVmbGFncy5pby9mZWF0dXJlLWZsYWdzLykuIFRoZW1hIGlzICJzY2hlbWEgdmVyc2lvbmluZyBieSBhYnN0cmFjdGlvbiI6IGFsbCB2ZXJzaW9ucyBvZiBhIHNjaGVtYSBsaXZlIHNpZGUtYnktc2lkZSBvbiBgbWFpbmAsIHdpdGhpbiBsb2dpY2FsIHN0cnVjdHVyZXMgVGhlbWEgZGVmaW5lcy4KClRoaXMgaG9saXN0aWMgdmlldyBhbGxvd3MgVGhlbWEgdG8gYWN0IGxpa2UgYSB0eXBlY2hlY2tlciwgYnV0IGZvciBjaGFuZ2Utc2FmZXR5IF9iZXR3ZWVuXyBzY2hlbWEgdmVyc2lvbnM6IGVpdGhlciBzY2hlbWEgdmVyc2lvbnMgbXVzdCBiZSBiYWNrd2FyZHMgY29tcGF0aWJsZSwgb3IgdGhlcmUgbXVzdCBleGlzdCBsb2dpYyB0byB0cmFuc2xhdGUgYSB2YWxpZCBpbnN0YW5jZSBvZiBzY2hlbWEgZnJvbSBvbmUgc2NoZW1hIHZlcnNpb24gdG8gdGhlIG5leHQuIFtDVUVdKGh0dHBzOi8vY3VlbGFuZy5vcmcpLCB0aGUgbGFuZ3VhZ2UgaW4gd2hpY2ggVGhlbWEgc2NoZW1hcyBhcmUgd3JpdHRlbiwgYWxsb3dzIFRoZW1hIHRvIFttZWNoYW5pY2FsbHkgdmVyaWZ5IHRoZXNlIHByb3BlcnRpZXNdKCNNYXR1cml0eSkuCgpUaGVzZSBjYXBhYmlsaXRpZXMgbWFrZSBUaGVtYSBhIGdlbmVyYWwgZnJhbWV3b3JrIGZvciBkZWNvdXBsaW5nIHRoZSBldm9sdXRpb24gb2YgY29tbXVuaWNhdGluZyBzeXN0ZW1zLiBUaGlzIGNhbiBiZSBvdXR3YXJkLWZhY2luZzogVGhlbWEncyBndWFyZHJhaWxzIGFsbG93IGFueW9uZSB0byBjcmVhdGUgQVBJcyB3aXRoIFN0cmlwZSdzIHJlbm93bmVkIFtiYWNrd2FyZHMgY29tcGF0aWJpbGl0eV0oaHR0cHM6Ly9zdHJpcGUuY29tL2RvY3MvdXBncmFkZXMpIGd1YXJhbnRlZXMuIE9yIGl0IGNhbiBiZSBpbndhcmQtZmFjaW5nOiBvciB0byBjaGFuZ2UgdGhlIG1lc3NhZ2VzIHBhc3NlZCBpbiBhIG1lc2ggb2YgbWljcm9zZXJ2aWNlcyB3aXRob3V0IGludHJpY2F0ZWx5IG9yY2hlc3RyYXRpbmcgZGVwbG95bWVudC4KCkxlYXJuIG1vcmUgaW4gb3VyIFtkb2NzXShodHRwczovL2dpdGh1Yi5jb20vZ3JhZmFuYS90aGVtYS90cmVlL21haW4vZG9jcyksIG9yIGluIHRoaXMgW292ZXJ2aWV3IHZpZGVvXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVBwb1NfVGhudEVNKSEgKFNvbWUgdGhpbmdzIGhhdmUgYmVlbiByZW5hbWVkIHNpbmNlIHRoYXQgdmlkZW8sIGJ1dCB0aGUgbG9naWMgaXMgdW5jaGFuZ2VkLikKCiMjIFVzYWdlCgpUaGVtYSBkZWZpbmVzIHRoZSB3YXkgc2NoZW1hcyBhcmUgd3JpdHRlbiwgb3JnYW5pemluZyBlYWNoIG9iamVjdCdzIGhpc3RvcnkgaW50byBhICJsaW5lYWdlLiIgT25jZSBhdXRob3JlZCwgVGhlbWEgYWxzbyBwcm92aWRlcyB0b29scyBmb3Igd29ya2luZyB3aXRoIGxpbmVhZ2VzIHZpYSBhIGZldyBbYmFzaWMgb3BlcmF0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL2dyYWZhbmEvdGhlbWEvYmxvYi9tYWluL2RvY3Mvb3ZlcnZpZXcubWQjYWJvdXQtdGhlbWEtb3BlcmF0aW9ucykuIFRoZXJlIGFyZSBhIGZldyBkaWZmZXJlbnQgdXNhZ2UgcGF0dGVybnMsIGFsbCBsYXJnZWx5IGVxdWl2YWxlbnQgaW4gY2FwYWJpbGl0eToKCiogKipDTEk6KiogYSBDTEkgY29tbWFuZCB0aGF0IHByb3ZpZGVzIGFjY2VzcyB0byBUaGVtYSdzIGJhc2ljIG9wZXJhdGlvbnMsIG9uZSBsaW5lYWdlIHBlciBpbnZvY2F0aW9uLiBVc2UgaXQgZm9yIGZhc3QgZXhwbG9yYXRpb24gYW5kIHRlc3Rpbmcgb2Ygc2NoZW1hcywgb3IgYXMgYSB0b29sIGluIENJLgoqICoqU2VydmVyOioqIEFuIEhUVFAgc2VydmVyIHRoYXQgcHJvdmlkZXMgYWNjZXNzIHRvIFRoZW1hJ3MgYmFzaWMgb3BlcmF0aW9ucyBmb3IgYSBjb25maWd1cmFibGUgc2V0IG9mIGxpbmVhZ2VzLiBSdW4gaXQgYXMgYSBzdGF0ZWxlc3Mgc2lkZWNhciBpbiB5b3VyIGluZnJhc3RydWN0dXJlIG9yIG1pY3Jvc2VydmljZSBtZXNoLgoqICoqTGlicmFyeToqKiBhIGxpYnJhcnksIGltcG9ydGFibGUgaW4geW91ciBhcHBsaWNhdGlvbiBjb2RlLCB0aGF0IHByb3ZpZGVzIGEgY29udmVuaWVudCBpbnRlcmZhY2UgdG8gVGhlbWEncyBiYXNpYyBvcGVyYXRpb25zLCBhcyB3ZWxsIGFzIGhlbHBlcnMgZm9yIGNvbW1vbiB1c2FnZSBwYXR0ZXJucy4gTmF0dXJhbGx5IHRoZSBtb3N0IGZsZXhpYmxlLCBhbmQgdGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoIGZvciBjcmVhdGluZyBuZXcgaGVscGVycywgc3VjaCBhcyBjb2RlIGdlbmVyYXRvcnMsIEFQSSBnZW5lcmF0b3JzLCBvciBhIHdob2xlIEt1YmVybmV0ZXMgb3BlcmF0b3IgZnJhbWV3b3JrLiAoQ3VycmVudGx5IG9ubHkgZm9yIEdvW15ldmFsdWF0b3JdKQoKVGhlIENMSSBhbmQgc2VydmVyIG1vZGVzIGFyZSBidW5kbGVkIHRvZ2V0aGVyIGluIHRoZSBgdGhlbWFgIGNvbW1hbmQuIFRvIGluc3RhbGw6CgpgYGBiYXNoCmdvIGluc3RhbGwgZ2l0aHViLmNvbS9ncmFmYW5hL3RoZW1hL2NtZC90aGVtYUBsYXRlc3QKYGBgCgojIyBNYXR1cml0eQoKVGhlbWEgaXMgYSB5b3VuZyBwcm9qZWN0LiBUaGUgZ29hbHMgYXJlIGxhcmdlLCBidXQgYm91bmRlZDogd2Ugd2lsbCBrbm93IHdoZW4gdGhlIGNvcmUgc3lzdGVtIGlzIGNvbXBsZXRlLiBBbmQgaXQgbW9zdGx5IGlzLCBub3cgLSB0aG91Z2ggc29tZSBicmVha2luZyBjaGFuZ2VzIHRvIGhvdyBzY2hlbWFzIGFyZSB3cml0dGVuIGFyZSBwbGFubmVkIGJlZm9yZSByZWFjaGluZyBzdGFiaWxpdHkuCgpJdCBpcyBub3QgeWV0IHJlY29tbWVuZGVkIHRvIHJlcGxhY2UgZXN0YWJsaXNoZWQsIHN0YWJsZSBzeXN0ZW1zIHdpdGggVGhlbWEsIGJ1dCBleHBlcmltZW50aW5nIHdpdGggZG9pbmcgc28gaXMgcmVhc29uYWJsZSAoYW5kIGFwcHJlY2lhdGVkISkuIEZvciBuZXdlciBwcm9qZWN0cywgVGhlbWEgbWF5IGJlIGEgZ29vZCBjaG9pY2UgdG9kYXk7IHRoZSBkZWNpc2lvbiBpcyBsaWtlbHkgdG8gY29tZSBkb3duIHRvIHdoZXRoZXIgdGhlIGxvbmctdGVybSBiZW5lZml0IG9mIGEgc2ltcGxlciBhcmNoaXRlY3R1cmUgZm9yIGF1dGhvcmluZywgY29tcG9zaW5nIGFuZCBldm9sdmluZyBzY2hlbWEgd2lsbCBvZmZzZXQgdGhlIHNob3J0LXRlcm0gY29zdCBvZiBzb21lIGluY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbmQgYnJlYWtpbmcgY2hhbmdlcy4KCiMjIFByaW9yL1JlbGF0ZWQgQXJ0CgpBIG51bWJlciBvZiBzeXN0ZW1zIHBhcnRpYWxseSBvdmVybGFwIHdpdGggVGhlbWEgLSBmb3Igc29tZSBkYXRhLCByb2xsaW5nIHRvZ2V0aGVyIGEgc2V0IG9mIHNjaGVtYSB3aXRoIHRoZSByZWxhdGlvbnMgYmV0d2VlbiB0aG9zZSBzY2hlbWEuCgoqIFtQcm9qZWN0IENhbWJyaWFdKGh0dHBzOi8vd3d3Lmlua2FuZHN3aXRjaC5jb20vY2FtYnJpYS8pIC0gVGhlbWEncyBjbG9zZXN0IGFuYWxvZ3VlLiBMaW1pdGVkIGluIHZlcmlmaWFiaWxpdHkgYnkgKGludGVudGlvbmFsbHkpIGJlaW5nIHdpdGhvdXQgYSBub3Rpb24gb2YgbGluZWFyIHNjaGVtYSBvcmRlcmluZyBhbmQgdmVyc2lvbmluZywgYW5kIGJlY2F1c2Ugc2NoZW1hIGFuZCB0cmFuc2xhdGlvbnMgYXJlIHdyaXR0ZW4gaW4gYSBUdXJpbmcgY29tcGxldGUgbGFuZ3VhZ2UgKFR5cGVzY3JpcHQpLgoqIFtLdWJlcm5ldGVzIHJlc291cmNlcyBhbmQgd2ViaG9vayBjb252ZXJzaW9uc10oaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvdGFza3MvZXh0ZW5kLWt1YmVybmV0ZXMvY3VzdG9tLXJlc291cmNlcy9jdXN0b20tcmVzb3VyY2UtZGVmaW5pdGlvbi12ZXJzaW9uaW5nLyNzcGVjaWZ5LW11bHRpcGxlLXZlcnNpb25zKSAtIFNpbWlsYXIgZ29hbHM6IG11bHRpcGxlIHZlcnNpb25zIG9mIHJlc291cmNlcyAoc2NoZW1hKSBhbmQgY29udmVydGliaWxpdHkgYmV0d2VlbiB0aGVtLiBMaW1pdGVkIGluIHZlcmlmaWFiaWxpdHkgYnkgcmVseWluZyBvbiBjb252ZW50aW9uIGZvciBncm91cGluZyBzY2hlbWFzLCBhbmQgYnkgZXhwcmVzc2luZyB0cmFuc2xhdGlvbiBpbiBhIFR1cmluZyBjb21wbGV0ZSBsYW5ndWFnZSAoR28pLgoqIFtTdHJpcGUncyBIVFRQIEFQSV0oaHR0cHM6Ly9zdHJpcGUuY29tL2RvY3MvdXBncmFkZXMpIC0gZXhoaWJpdHMgdGhlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHByb3BlcnRpZXMgYW4gQVBJIGNhbiBoYXZlIHRoYXQgYXJpc2UgZnJvbSBhIHNjaGVtYSBzeXN0ZW0gd2l0aCB0cmFuc2xhdGFiaWxpdHkuCgoKW15ldmFsdWF0b3JdOgogICAgVXNpbmcgVGhlbWEgYXMgYSBsaWJyYXJ5IGluIGEgbGFuZ3VhZ2UgZGVwZW5kcyBvbiBhIENVRSBldmFsdWF0b3IgZm9yIHRoYXQgbGFuZ3VhZ2UuIEN1cnJlbnRseSwgdGhlIG9ubHkgQ1VFIGV2YWx1YXRvciBpcyB3cml0dGVuIGluIEdvLgo= readmeEtag: '"3c9e095f399071232622e0315a96a31db765d154"' readmeLastModified: Wed, 05 Jun 2024 11:00:52 GMT repositoryId: 419709887 description: A CUE-based framework for portable, evolvable schema created: '2021-10-21T12:16:22Z' updated: '2025-10-26T18:01:18Z' language: Go archived: false stars: 232 watchers: 142 forks: 11 owner: grafana logo: https://avatars.githubusercontent.com/u/7195757?v=4 license: Apache-2.0 repoEtag: '"e9b668b046340b6c251cf0b73074a176473b15c77fa7474ed0551f78529b1133"' repoLastModified: Sun, 26 Oct 2025 18:01:18 GMT foundInMaster: true category: - Server - Server Implementations id: db932e8e382d5215f30e4dca6ab5a378 - source: openapi3 tags repository: https://github.com/ronnypfannschmidt/prance v3: true repositoryMetadata: base64Readme: >- fExpY2Vuc2V8IHxQeVBJfCB8UHl0aG9uIFZlcnNpb25zfCB8UGFja2FnZSBGb3JtYXR8IHxQYWNrYWdlIFN0YXR1c3wKCnxMb2dvfAoKUHJhbmNlIHByb3ZpZGVzIHBhcnNlcnMgZm9yIGBTd2FnZ2VyL09wZW5BUEkKMi4wIGFuZCAzLjAgPGh0dHA6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vPmBfXyBBUEkgc3BlY2lmaWNhdGlvbnMgaW4gUHl0aG9uLgpJdCB1c2VzIGBvcGVuYXBpXF9zcGVjXF92YWxpZGF0b3IgPGh0dHBzOi8vZ2l0aHViLmNvbS9wMWMydS9vcGVuYXBpLXNwZWMtdmFsaWRhdG9yPmBfXywKYHN3YWdnZXJcX3NwZWNcX3ZhbGlkYXRvciA8aHR0cHM6Ly9naXRodWIuY29tL1llbHAvc3dhZ2dlcl9zcGVjX3ZhbGlkYXRvcj5gX18gb3IKYGZsZXggPGh0dHBzOi8vZ2l0aHViLmNvbS9waXBlcm1lcnJpYW0vZmxleD5gX18KdG8gdmFsaWRhdGUgc3BlY2lmaWNhdGlvbnMsIGJ1dCBhZGRpdGlvbmFsbHkgcmVzb2x2ZXMgYEpTT04KcmVmZXJlbmNlcyA8aHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LXBicnlhbi16eXAtanNvbi1yZWYtMDM+YF9fCmluIGFjY29yZGFuY2Ugd2l0aCB0aGUgT3BlbkFQSSBzcGVjLgoKTW9zdGx5IHRoZSBsYXR0ZXIgaW52b2x2ZXMgaGFuZGxpbmcgbm9uLVVSSSByZWZlcmVuY2VzOyBPcGVuQVBJIGlzIGZpbmUKd2l0aCBwcm92aWRpbmcgcmVsYXRpdmUgZmlsZSBwYXRocywgd2hlcmVhcyBKU09OIHJlZmVyZW5jZXMgcmVxdWlyZSBVUklzCmF0IHRoaXMgcG9pbnQgaW4gdGltZS4KClVzYWdlCj09PT09CgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpQcmFuY2UgaXMgYXZhaWxhYmxlIGZyb20gUHlQSSwgYW5kIGNhbiBiZSBpbnN0YWxsZWQgdmlhIHBpcDoKCi4uIGNvZGU6OiBiYXNoCgogICAgJCBwaXAgaW5zdGFsbCBwcmFuY2UKCk5vdGUgdGhhdCB0aGlzIHdpbGwgaW5zdGFsbCB0aGUgY29kZSwgYnV0IGFkZGl0aW9uYWwgc3VicGFja2FnZXMgbXVzdCBiZSBzcGVjaWZpZWQKdG8gdW5sb2NrIHZhcmlvdXMgcGllY2VzIG9mIGZ1bmN0aW9uYWxpdHkuIEF0IG1pbmltdW0sIGEgcGFyc2luZyBiYWNrZW5kIG11c3QgYmUKaW5zdGFsbGVkLiBGb3IgdGhlIENMSSBmdW5jdGlvbmFsaXR5LCB5b3UgbmVlZCBmdXJ0aGVyIGRlcGVuZGVuY2llcy4KClRoZSByZWNvbW1lbmRlZCBpbnN0YWxsYXRpb24gaW5zdGFsbHMgdGhlIENMSSwgdXNlcyBJQ1UgYW5kIGluc3RhbGxzIG9uZSB2YWxpZGF0aW9uCmJhY2tlbmQ6CgouLiBjb2RlOjogYmFzaAoKICAgICQgcGlwIGluc3RhbGwgcHJhbmNlW29zdixpY3UsY2xpXQoKTWFrZSBzdXJlIHlvdSBoYXZlIGBJQ1UgVW5pY29kZSBMaWJyYXJ5IDxodHRwOi8vc2l0ZS5pY3UtcHJvamVjdC5vcmcvaG9tZT5gX18gaW5zdGFsbGVkLAphcyB3ZWxsIGFzIFB5dGhvbiBkZXYgbGlicmFyeSBiZWZvcmUgcnVubmluZyB0aGUgY29tbWFuZHMgYWJvdmUuIElmIG5vdCwgdXNlIHRoZQpmb2xsb3dpbmcgY29tbWFuZHM6CgouLiBjb2RlOjogYmFzaAoKICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgbGliaWN1LWRldiBweXRob24zLWRldiAjIFVidW50dS9EZWJpYW4KICAgICQgc3VkbyBkbmYgaW5zdGFsbCBsaWJpY3UtZGV2ZWwgcHl0aG9uMy1kZXZlbCAjIEZlZG9yYQoKCkNvbW1hbmQgTGluZSBJbnRlcmZhY2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQWZ0ZXIgaW5zdGFsbGluZyBwcmFuY2UsIGEgQ0xJIGlzIGF2YWlsYWJsZSBmb3IgdmFsaWRhdGluZyAoYW5kIHJlc29sdmluZwpleHRlcm5hbCByZWZlcmVuY2VzIGluKSBzcGVjczoKCi4uIGNvZGU6OiBiYXNoCgogICAgIyBWYWxpZGF0ZXMgd2l0aCByZXNvbHZpbmcKICAgICQgcHJhbmNlIHZhbGlkYXRlIHBhdGgvdG8vc3dhZ2dlci55bWwKCiAgICAjIFZhbGlkYXRlcyB3aXRob3V0IHJlc29sdmluZwogICAgJCBwcmFuY2UgdmFsaWRhdGUgLS1uby1yZXNvbHZlIHBhdGgvdG8vc3dhZ2dlci55bWwKCiAgICAjIEZldGNoIFVSTCwgdmFsaWRhdGUgYW5kIHJlc29sdmUuCiAgICAkIHByYW5jZSB2YWxpZGF0ZSBodHRwOi8vcGV0c3RvcmUuc3dhZ2dlci5pby92Mi9zd2FnZ2VyLmpzb24KICAgIFByb2Nlc3NpbmcgImh0dHA6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YyL3N3YWdnZXIuanNvbiIuLi4KICAgICAtPiBSZXNvbHZpbmcgZXh0ZXJuYWwgcmVmZXJlbmNlcy4KICAgIFZhbGlkYXRlcyBPSyBhcyBTd2FnZ2VyL09wZW5BUEkgMi4wIQoKVmFsaWRhdGlvbiBpcyBub3QgdGhlIG9ubHkgZmVhdHVyZSBvZiBwcmFuY2UuIE9uZSBvZiB0aGUgc2lkZSBlZmZlY3RzIG9mCnJlc29sdmluZyBpcyB0aGF0IGZyb20gYSBzcGVjIHdpdGggcmVmZXJlbmNlcywgb25lIGNhbiBjcmVhdGUgYSBmdWxseSByZXNvbHZlZApvdXRwdXQgc3BlYy4gSW4gdGhlIHBhc3QsIHRoaXMgd2FzIGRvbmUgdmlhIG9wdGlvbnMgdG8gdGhlIGBgdmFsaWRhdGVgYCBjb21tYW5kLApidXQgbm93IHRoZXJlJ3MgYSBzcGVjaWZpYyBjb21tYW5kIGp1c3QgZm9yIHRoaXMgcHVycG9zZToKCi4uIGNvZGU6OiBiYXNoCgogICAgIyBDb21waWxlIHNwZWMKICAgICQgcHJhbmNlIGNvbXBpbGUgcGF0aC90by9pbnB1dC55bWwgcGF0aC90by9vdXRwdXQueW1sCgoKTGFzdGx5LCB3aXRoIHRoZSBhcnJpdmFsIG9mIE9wZW5BUEkgMy4wLjAsIGl0IGJlY29tZXMgdXNlZnVsIGZvciB0b29saW5nIHRvCmNvbnZlcnQgb2xkZXIgc3BlY3MgdG8gdGhlIG5ldyBzdGFuZGFyZC4gSW5zdGVhZCBvZiByZS1pbnZlbnRpbmcgdGhlIHdoZWVsLApwcmFuY2UganVzdCBwcm92aWRlcyBhIENMSSBjb21tYW5kIGZvciBwYXNzaW5nIHNwZWNzIHRvIHRoZSB3ZWIgQVBJIG9mCmBzd2FnZ2VyMm9wZW5hcGkgPGh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL3N3YWdnZXIyb3BlbmFwaT5gX18gLSBhIHdvcmtpbmcKaW50ZXJuZXQgY29ubmVjdGlvbiBpcyB0aGVyZWZvcmUgcmVxdWlyZWQgZm9yIHRoaXMgY29tbWFuZDoKCi4uIGNvZGU6OiBiYXNoCgogICAgIyBDb252ZXJ0IHNwZWMKICAgICQgcHJhbmNlIGNvbnZlcnQgcGF0aC90by9zd2FnZ2VyLnltbCBwYXRoL3RvL29wZW5hcGkueW1sCgoKQ29kZQotLS0tCgpNb3N0IGxpa2VseSB5b3UgaGF2ZSBzcGVjIGZpbGUgYW5kIHdhbnQgdG8gcGFyc2UgaXQ6CgouLiBjb2RlOjogcHl0aG9uCgogICAgZnJvbSBwcmFuY2UgaW1wb3J0IFJlc29sdmluZ1BhcnNlcgogICAgcGFyc2VyID0gUmVzb2x2aW5nUGFyc2VyKCdwYXRoL3RvL215L3N3YWdnZXIueWFtbCcpCiAgICBwYXJzZXIuc3BlY2lmaWNhdGlvbiAgIyBjb250YWlucyBmdWxseSByZXNvbHZlZCBzcGVjcyBhcyBhIGRpY3QKClByYW5jZSBhbHNvIGluY2x1ZGVzIGEgbm9uLXJlc29sdmluZyBwYXJzZXIgdGhhdCBkb2VzIG5vdCBmb2xsb3cgSlNPTgpyZWZlcmVuY2VzLCBpbiBjYXNlIHlvdSBwcmVmZXIgdGhhdC4KCi4uIGNvZGU6OiBweXRob24KCiAgICBmcm9tIHByYW5jZSBpbXBvcnQgQmFzZVBhcnNlcgogICAgcGFyc2VyID0gQmFzZVBhcnNlcigncGF0aC90by9teS9zd2FnZ2VyLnlhbWwnKQogICAgcGFyc2VyLnNwZWNpZmljYXRpb24gICMgY29udGFpbnMgc3BlY3MgYXMgYSBkaWN0IHN0aWxsIGNvbnRhaW5pbmcgSlNPTiByZWZlcmVuY2VzCgpPbiBXaW5kb3dzLCB0aGUgY29kZSByZWFjdHMgY29ycmVjdGx5IGlmIHlvdSBwYXNzIHBvc2l4LWxpa2UgcGF0aHMKKGBgL2M6L3N3YWdnZXJgYCkgb3IgaWYgdGhlIHBhdGggaXMgcmVsYXRpdmUuICBJZiB5b3UgcGFzcyBhYnNvbHV0ZQp3aW5kb3dzIHBhdGggKGxpa2UgYGBjOlxzd2FnZ2VyLnlhbWxgYCksIHlvdSBjYW4gdXNlCmBgcHJhbmNlLnV0aWwuZnMuYWJzcGF0aGBgIHRvIGNvbnZlcnQgdGhlbS4KClVSTHMgY2FuIGFsc28gYmUgcGFyc2VkOgoKLi4gY29kZTo6IHB5dGhvbgoKICAgIHBhcnNlciA9IFJlc29sdmluZ1BhcnNlcignaHR0cDovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uJykKCkxhcmdlbHksIHRoYXQncyBpdC4gVGhlcmUgaXMgYSB3aG9sZSBzbGV3IG9mIHV0aWxpdHkgY29kZSB0aGF0IHlvdSBtYXkKb3IgbWF5IG5vdCBmaW5kIHVzZWZ1bCwgdG9vLiBMb29rIGF0IHRoZSBgZnVsbCBkb2N1bWVudGF0aW9uCjxodHRwczovL3ByYW5jZS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvI2FwaS1tb2R1bGVzPmBfXyBmb3IgZGV0YWlscy4KCgpDb21wYXRpYmlsaXR5Ci0tLS0tLS0tLS0tLS0KCipQeXRob24gVmVyc2lvbnMqCgpWZXJzaW9uIDAuMTYuMiBpcyB0aGUgbGFzdCB2ZXJzaW9uIHN1cHBvcnRpbmcgUHl0aG9uIDIuIEl0IHdhcyByZWxlYXNlZCBvbgpOb3YgMTJ0aCwgMjAxOS4gUHl0aG9uIDIgcmVhY2hlcyBlbmQgb2YgbGlmZSBhdCB0aGUgZW5kIG9mIDIwMTkuIElmIHlvdSB3aXNoCmZvciB1cGRhdGVzIHRvIHRoZSBQeXRob24gMiBzdXBwb3J0ZWQgcGFja2FnZXMsIHBsZWFzZSBjb250YWN0IHRoZSBtYWludGFpbmVyCmRpcmVjdGx5LgoKVW50aWwgZmFpcmx5IHJlY2VudGx5LCB3ZSBhbHNvIHRlc3RlZCB3aXRoIGBQeVB5IDxodHRwczovL3d3dy5weXB5Lm9yZy8+YF9fLgpVbmZvcnR1bmF0ZWx5LCBUcmF2aXMgaXNuJ3QgdmVyeSBnb29kIGF0IHN1cHBvcnRpbmcgdGhpcy4gU28gaW4gdGhlIGFic2VuY2UKb2Ygc3BhcmUgdGltZSwgdGhleSdyZSBkaXNhYmxlZC4gYElzc3VlIDUwIDxodHRwczovL2dpdGh1Yi5jb20vamZpbmtoYWV1c2VyL3ByYW5jZS9pc3N1ZXMvNTA+YF9fCnRyYWNrcyBwcm9ncmVzcyBvbiB0aGF0LgoKU2ltaWxhcmx5LCBidXQgbGVzcyBjcml0aWNhbGx5LCBQeXRob24gMy40IGlzIG5vIGxvbmdlciByZWNlaXZpbmcgYSBsb3Qgb2YKbG92ZSBmcm9tIENJIHZlbmRvcnMsIHNvIGF1dG9tYXRlZCBidWlsZHMgb24gdGhhdCB2ZXJzaW9uIGFyZSBubyBsb25nZXIKc3VwcG9ydGVkLgoKKkJhY2tlbmRzKgoKRGlmZmVyZW50IHZhbGlkYXRpb24gYmFja2VuZHMgc3VwcG9ydCBkaWZmZXJlbnQgZmVhdHVyZXMuCgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgQmFja2VuZCAgICAgICAgICAgICAgICB8IFB5dGhvbiBWZXJzaW9uIHwgT3BlbkFQSSBWZXJzaW9uIHwgU3RyaWN0IE1vZGUgfCBOb3RlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEF2YWlsYWJsZSBGcm9tIHwgTGluayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKz09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwp8IHN3YWdnZXItc3BlYy12YWxpZGF0b3IgfCAyIGFuZCAzICAgICAgICB8IDIuMCBvbmx5ICAgICAgICB8IHllcyAgICAgICAgIHwgU2xvdzsgZG9lcyBub3QgYWNjZXB0IGludGVnZXIga2V5cyAoc2VlIHN0cmljdCBtb2RlKS4gfCBwcmFuY2UgMC4xICAgICB8IGBzd2FnZ2VyXF9zcGVjXF92YWxpZGF0b3IgPGh0dHBzOi8vZ2l0aHViLmNvbS9ZZWxwL3N3YWdnZXJfc3BlY192YWxpZGF0b3I+YF9fICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBmbGV4ICAgICAgICAgICAgICAgICAgIHwgMiBhbmQgMyAgICAgICAgfCAyLjAgb25seSAgICAgICAgfCBuL2EgICAgICAgICB8IEZhc3Rlc3Q7IHVuZm9ydHVuYXRlbHkgZGVwcmVjYXRlZC4gICAgICAgICAgICAgICAgICAgIHwgcHJhbmNlIDAuOCAgICAgfCBgZmxleCA8aHR0cHM6Ly9naXRodWIuY29tL3BpcGVybWVycmlhbS9mbGV4PmBfXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgb3BlbmFwaS1zcGVjLXZhbGlkYXRvciB8IDIgYW5kIDMgICAgICAgIHwgMi4wIGFuZCAzLjAgICAgIHwgeWVzICAgICAgICAgfCBTbG93OyBkb2VzIG5vdCBhY2NlcHQgaW50ZWdlciBrZXlzIChzZWUgc3RyaWN0IG1vZGUpLiB8IHByYW5jZSAwLjExICAgIHwgYG9wZW5hcGlcX3NwZWNcX3ZhbGlkYXRvciA8aHR0cHM6Ly9naXRodWIuY29tL3AxYzJ1L29wZW5hcGktc3BlYy12YWxpZGF0b3I+YF9fICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwoKWW91IGNhbiBzZWxlY3QgdGhlIGJhY2tlbmQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBwYXJzZXIocyk6CgouLiBjb2RlOjogcHl0aG9uCgogICAgcGFyc2VyID0gUmVzb2x2aW5nUGFyc2VyKCdodHRwOi8vcGV0c3RvcmUuc3dhZ2dlci5pby92Mi9zd2FnZ2VyLmpzb24nLCBiYWNrZW5kID0gJ29wZW5hcGktc3BlYy12YWxpZGF0b3InKQoKCk5vIGJhY2tlbmQgaXMgaW5jbHVkZWQgaW4gdGhlIGRlcGVuZGVuY2llczsgdGhleSBhcmUgZGV0ZWN0ZWQgYXQgcnVuLXRpbWUuIElmIHlvdSBpbnN0YWxsIHRoZW0sCnRoZXkgY2FuIGJlIHVzZWQ6CgouLiBjb2RlOjogYmFzaAoKICAgICQgcGlwIGluc3RhbGwgb3BlbmFwaS1zcGVjLXZhbGlkYXRvcgogICAgJCBwaXAgaW5zdGFsbCBwcmFuY2UKICAgICQgcHJhbmNlIHZhbGlkYXRlIC0tYmFja2VuZD1vcGVuYXBpLXNwZWMtdmFsaWRhdG9yIHBhdGgvdG8vc3BlYy55bWwKCipBIG5vdGUgb24gZmxleCB1c2FnZToqIFdoaWxlIGZsZXggaXMgdGhlIGZhc3Rlc3QgdmFsaWRhdGlvbiBiYWNrZW5kLCB1bmZvcnR1bmF0ZWx5IGl0IGlzIG5vIGxvbmdlcgptYWludGFpbmVkIGFuZCB0aGVyZSBhcmUgaXNzdWVzIHdpdGggaXRzIGRlcGVuZGVuY2llcy4gRm9yIG9uZSB0aGluZywgaXQgZGVwZW5kcyBvbiBhIHZlcnNpb24gb2YgYFB5WUFNTGAKdGhhdCBjb250YWlucyBzZWN1cml0eSBmbGF3cy4gRm9yIGFub3RoZXIsIGl0IGRlcGVuZHMgZXhwbGljaXRseSBvbiBvbGRlciB2ZXJzaW9ucyBvZiBgY2xpY2tgLgoKSWYgeW91IHVzZSB0aGUgZmxleCBzdWJwYWNrYWdlLCB0aGVyZWZvcmUsIHlvdSBkbyBzbyBhdCB5b3VyIG93biByaXNrLgoKKkNvbXBhdGliaWxpdHkqCgpTZWUgYENPTVBBVElCSUxJVFkucnN0IDxodHRwczovL2dpdGh1Yi5jb20vamZpbmtoYWV1c2VyL3ByYW5jZS9ibG9iL21hc3Rlci9DT01QQVRJQklMSVRZLnJzdD5gX18KZm9yIGEgbGlzdCBvZiBrbm93biBpc3N1ZXMuCgoKUGFydGlhbCBSZWZlcmVuY2UgUmVzb2x1dGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpJdCdzIHBvc3NpYmxlIHRvIGluc3RydWN0IHRoZSBwYXJzZXIgdG8gb25seSByZXNvbHZlIHNvbWUga2luZHMgb2YgcmVmZXJlbmNlcy4KVGhpcyBhbGxvd3MgZS5nLiByZXNvbHZpbmcgcmVmZXJlbmNlcyBmcm9tIGV4dGVybmFsIFVSTHMsIHdoaWxzdCBrZWVwaW5nIGxvY2FsCnJlZmVyZW5jZXMgKGkuZS4gdG8gbG9jYWwgZmlsZXMsIG9yIGZpbGUgaW50ZXJuYWwpIGludGFjdC4KCi4uIGNvZGU6OiBweXRob24KCiAgICBmcm9tIHByYW5jZSBpbXBvcnQgUmVzb2x2aW5nUGFyc2VyCiAgICBmcm9tIHByYW5jZS51dGlsLnJlc29sdmVyIGltcG9ydCBSRVNPTFZFX0hUVFAKCiAgICBwYXJzZXIgPSBSZXNvbHZpbmdQYXJzZXIoJy9wYXRoL3RvL3NwZWMnLCByZXNvbHZlX3R5cGVzID0gUkVTT0xWRV9IVFRQKQoKCk11bHRpcGxlIHR5cGVzIGNhbiBiZSBzcGVjaWZpZWQgYnkgT1ItaW5nIGNvbnN0YW50cyB0b2dldGhlcjoKCi4uIGNvZGU6OiBweXRob24KCiAgICBmcm9tIHByYW5jZSBpbXBvcnQgUmVzb2x2aW5nUGFyc2VyCiAgICBmcm9tIHByYW5jZS51dGlsLnJlc29sdmVyIGltcG9ydCBSRVNPTFZFX0hUVFAsIFJFU09MVkVfRklMRVMKCiAgICBwYXJzZXIgPSBSZXNvbHZpbmdQYXJzZXIoJy9wYXRoL3RvL3NwZWMnLCByZXNvbHZlX3R5cGVzID0gUkVTT0xWRV9IVFRQIHwgUkVTT0xWRV9GSUxFUykKCgpFeHRlbnNpb25zCi0tLS0tLS0tLS0KClByYW5jZSBpbmNsdWRlcyB0aGUgYWJpbGl0eSB0byByZWZlcmVuY2Ugb3V0c2lkZSBzd2FnZ2VyIGRlZmluaXRpb25zCmluIG91dHNpZGUgUHl0aG9uIHBhY2thZ2VzLiBTdWNoIGEgcGFja2FnZSBtdXN0IGFscmVhZHkgYmUgaW1wb3J0YWJsZQooaS5lLiBpbnN0YWxsZWQpLCBhbmQgYmUgYWNjZXNzaWJsZSB2aWEgdGhlCmBSZXNvdXJjZU1hbmFnZXIgQVBJIDxodHRwczovL3NldHVwdG9vbHMucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L3BrZ19yZXNvdXJjZXMuaHRtbCNyZXNvdXJjZW1hbmFnZXItYXBpPmBfXwooc29tZSBtb3JlIGluZm8gYGhlcmUgPGh0dHBzOi8vc2V0dXB0b29scy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3Qvc2V0dXB0b29scy5odG1sI2luY2x1ZGluZy1kYXRhLWZpbGVzPmBfXykuCgpGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IGNyZWF0ZSBhIHBhY2thZ2UgYGBjb21tb25fc3dhZ2BgIHdpdGggdGhlIGZpbGUKYGBiYXNlLnlhbWxgYCBjb250YWluaW5nIHRoZSBkZWZpbml0aW9uCgouLiBjb2RlOjogeWFtbAoKICAgIGRlZmluaXRpb25zOgogICAgICBTZXZlcml0eToKICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICBlbnVtOgogICAgICAgIC0gSU5GTwogICAgICAgIC0gV0FSTgogICAgICAgIC0gRVJST1IKICAgICAgICAtIEZBVEFMCgpJbiB0aGUgYGBzZXR1cC5weWBgIGZvciBgYGNvbW1vbl9zd2FnYGAgeW91IHdvdWxkIGFkZCBsaW5lcyBzdWNoIGFzCgouLiBjb2RlOjogcHl0aG9uCgogICAgcGFja2FnZXM9ZmluZF9wYWNrYWdlcygnc3JjJyksCiAgICBwYWNrYWdlX2Rpcj17Jyc6ICdzcmMnfSwKICAgIHBhY2thZ2VfZGF0YT17CiAgICAgICAgJyc6ICcqLnlhbWwnCiAgICB9CgpUaGVuLCBoYXZpbmcgaW5zdGFsbGVkIGBgY29tbW9uX3N3YWdgYCBpbnRvIHNvbWUgYXBwbGljYXRpb24sIHlvdSBjb3VsZApub3cgd3JpdGUKCi4uIGNvZGU6OiB5YW1sCgogICAgZGVmaW5pdGlvbnM6CiAgICAgIE1lc3NhZ2U6CiAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgIHNldmVyaXR5OgogICAgICAgICAgICAkcmVmOiAncHl0aG9uOi8vY29tbW9uX3N3YWcvYmFzZS55YW1sIy9kZWZpbml0aW9ucy9TZXZlcml0eScKICAgICAgICAgIGNvZGU6CiAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgc3VtbWFyeToKICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBkZXNjcmlwdGlvbjoKICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBzZXZlcml0eQogICAgICAgIC0gc3VtbWFyeQoKQ29udHJpYnV0aW5nCj09PT09PT09PT09PQoKU2VlIGBDT05UUklCVVRJTkcubWQgPGh0dHBzOi8vZ2l0aHViLmNvbS9qZmlua2hhZXVzZXIvcHJhbmNlL2Jsb2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZD5gX18gZm9yIGRldGFpbHMuCgpQcm9mZXNzaW9uYWwgc3VwcG9ydCBpcyBhdmFpbGFibGUgdGhyb3VnaCBgZmlua2hhZXVzZXIgY29uc3VsdGluZyA8aHR0cHM6Ly9maW5raGFldXNlci5kZT5gX18uCgpMaWNlbnNlCj09PT09PT0KCkxpY2Vuc2VkIHVuZGVyIE1JVC4gU2VlIHRoZSBgTElDRU5TRS50eHQgPGh0dHBzOi8vZ2l0aHViLmNvbS9Sb25ueVBmYW5uc2NobWlkdC9wcmFuY2UvYmxvYi9tYXN0ZXIvTElDRU5TRS50eHQ+YF9fIGZpbGUgZm9yIGRldGFpbHMuCgoiUHJhbmNpbmcgdW5pY29ybiIgbG9nbyBpbWFnZSBDb3B5cmlnaHQgKGMpIEplbnMgRmlua2hhZXVzZXIuCk1hZGUgYnkgYE1vcmV2ZW4gQiA8aHR0cDovL21vcmV2ZW5iLmNvbS8+YF9fLiBVc2Ugb2YgdGhlIGxvZ28gaXMgcGVybWl0dGVkIHVuZGVyCnRoZSBgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1Ob25Db21tZXJjaWFsLVNoYXJlQWxpa2UgNC4wIEludGVybmF0aW9uYWwgbGljZW5zZSA8aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzQuMC8+YF9fLgoKCi4uIHxMaWNlbnNlfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9sL3ByYW5jZS5zdmcKICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9wcmFuY2UvCi4uIHxQeVBJfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3ByYW5jZS5zdmcKICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9wcmFuY2UvCi4uIHxQYWNrYWdlIEZvcm1hdHwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvZm9ybWF0L3ByYW5jZS5zdmcKICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9wcmFuY2UvCi4uIHxQeXRob24gVmVyc2lvbnN8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3B5dmVyc2lvbnMvcHJhbmNlLnN2ZwogICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3ByYW5jZS8KLi4gfFBhY2thZ2UgU3RhdHVzfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9zdGF0dXMvcHJhbmNlLnN2ZwogICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3ByYW5jZS8KLi4gfExvZ298IGltYWdlOjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1Jvbm55UGZhbm5zY2htaWR0L3ByYW5jZS9tYXN0ZXIvZG9jcy9pbWFnZXMvcHJhbmNlX2xvZ29fMjU2LnBuZwo= readmeEtag: '"3a47ba4b9a16416998163676ba68d5e302e7dd0f"' readmeLastModified: Wed, 21 Jun 2023 20:02:29 GMT repositoryId: 67692955 description: Resolving Swagger/OpenAPI 2.0 and 3.0 Parser created: '2016-09-08T10:23:39Z' updated: '2026-01-27T17:46:10Z' language: Python archived: false stars: 260 watchers: 7 forks: 46 owner: RonnyPfannschmidt logo: https://avatars.githubusercontent.com/u/156838?v=4 license: NOASSERTION repoEtag: '"28947c59867ef85d1626f352aa772668972d6b35fe061493b52c5cfd50c95824"' repoLastModified: Tue, 27 Jan 2026 17:46:10 GMT foundInMaster: true id: 06b2469a97224b07993ee5f7d921ea36 - source: openapi3 tags repository: https://github.com/cornutum/tcases v3: true repositoryMetadata: base64Readme: >- IyBUY2FzZXM6IEEgTW9kZWwtQmFzZWQgVGVzdCBDYXNlIEdlbmVyYXRvciAjCgpbIVtNYXZlbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9tYXZlbi00LjEuMS1ncmVlbi5zdmcpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9dGNhc2VzLXNoZWxsKQpbIVtKYXZhZG9jXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2phdmFkb2MtNC4xLjEtZ3JlZW4uc3ZnKV0oaHR0cHM6Ly9qYXZhZG9jLmlvL2RvYy9vcmcuY29ybnV0dW0udGNhc2VzL3RjYXNlcy1zaGVsbCkKCiMjIFdoYXQncyBOZXc/ICMjCiAgKiBUaGUgbGF0ZXN0IHZlcnNpb24gKFtUY2FzZXMgNC4xLjFdKFJlbGVhc2VOb3Rlcy5tZCM0MTEpKSBpcyBub3cgYXZhaWxhYmxlIGF0IHRoZSBNYXZlbiBDZW50cmFsIFJlcG9zaXRvcnkuCiAgICBTZWUgWypIb3cgVG8gRG93bmxvYWQgVGNhc2VzKl0oSG93VG9Eb3dubG9hZC5tZCkgZm9yIGRvd25sb2FkIGluc3RydWN0aW9ucy4KCiAgKiBIYXZpbmcgdHJvdWJsZSB3aXRoIFRjYXNlcz8gQ2hlY2sgb3V0IFt0aGVzZSB0aXBzXSguL1Ryb3VibGVzaG9vdGluZy1GQVFzLm1kKS4KCiAgKiBHb3QgYSBxdWVzdGlvbj8gTmVlZCBzb21lIGd1aWRhbmNlPyBTdGFydCBhIFtkaXNjdXNzaW9uXShodHRwczovL2dpdGh1Yi5jb20vQ29ybnV0dW0vdGNhc2VzL2Rpc2N1c3Npb25zKS4KCiMjIFdoYXQgRG9lcyBJdCBEbz8gIyMKClRjYXNlcyBpcyBhIHRvb2wgZm9yIGRlc2lnbmluZyB0ZXN0cy4gSXQgZG9lc24ndCBtYXR0ZXIgd2hhdCBraW5kIG9mIHN5c3RlbSB5b3UgYXJlIHRlc3RpbmcgLS0gVUksIGNvbW1hbmQgbGluZSwKW1JFU1QtZnVsIEFQSV0odGNhc2VzLW9wZW5hcGkvUkVBRE1FLm1kI3RjYXNlcy1mb3Itb3BlbmFwaS1mcm9tLXJlc3QtZnVsLXRvLXRlc3QtZnVsKSwgb3IgYmFja2VuZC4gIE5vciBkb2VzIGl0IG1hdHRlcgp3aGF0IGxldmVsIG9mIHRoZSBzeXN0ZW0geW91IGFyZSB0ZXN0aW5nIC0tIHVuaXQsIHN1YnN5c3RlbSwgb3IgZnVsbCBzeXN0ZW0uIFlvdSBjYW4gdXNlIFRjYXNlcyB0byBkZXNpZ24geW91ciB0ZXN0cyBpbiBhbnkgb2YKdGhlc2Ugc2l0dWF0aW9ucy4gV2l0aCBUY2FzZXMsIHlvdSBkZWZpbmUgdGhlIGlucHV0IHNwYWNlIGZvciB5b3VyIHN5c3RlbS11bmRlci10ZXN0IGFuZCB0aGUgbGV2ZWwgb2YgY292ZXJhZ2UgdGhhdCB5b3UKd2FudC4gVGhlbiBUY2FzZXMgZ2VuZXJhdGVzIGEgbWluaW1hbCBzZXQgb2YgdGVzdCBjYXNlcyB0aGF0IG1lZXRzIHlvdXIgcmVxdWlyZW1lbnRzLgoKVGNhc2VzIGlzIHByaW1hcmlseSBhIHRvb2wgZm9yIGJsYWNrLWJveCB0ZXN0IGRlc2lnbi4gRm9yIHN1Y2ggdGVzdHMsIHRoZSBjb25jZXB0IG9mICJjb3ZlcmFnZSIgaXMgZGlmZmVyZW50IGZyb20gc3RydWN0dXJhbAp0ZXN0aW5nIGNyaXRlcmlhIHN1Y2ggYXMgbGluZSBjb3ZlcmFnZSwgYnJhbmNoIGNvdmVyYWdlLCBldGMuIEluc3RlYWQsIFRjYXNlcyBpcyBndWlkZWQgYnkgY292ZXJhZ2Ugb2YgdGhlIGlucHV0IHNwYWNlIG9mIHlvdXIKc3lzdGVtLgoKVGNhc2VzIGdpdmVzIHlvdSBhIHdheSB0byBkZWZpbmUgdGhlIGlucHV0IHNwYWNlIGZvciB5b3VyIHN5c3RlbSBpbiBhIGZvcm0gdGhhdCBpcyBjb25jaXNlIGJ1dCBjb21wcmVoZW5zaXZlLiBUaGVuIFRjYXNlcyBhbGxvd3MKeW91IHRvIGNvbnRyb2wgdGhlIG51bWJlciBvZiB0ZXN0IGNhc2VzIGluIHlvdXIgc2FtcGxlIHN1YnNldCBieSBzcGVjaWZ5aW5nIHRoZSBsZXZlbCBvZiBjb3ZlcmFnZSB5b3Ugd2FudC4gWW91IGNhbiBzdGFydCB3aXRoIGEKYmFzaWMgbGV2ZWwgb2YgY292ZXJhZ2UsIGFuZCBUY2FzZXMgd2lsbCBnZW5lcmF0ZSBhIHNtYWxsIHNldCBvZiB0ZXN0IGNhc2VzIHRoYXQgdG91Y2hlcyBldmVyeSBzaWduaWZpY2FudCBlbGVtZW50IG9mIHRoZSBpbnB1dApzcGFjZS4gVGhlbiB5b3UgY2FuIGltcHJvdmUgeW91ciB0ZXN0cyBieSBzZWxlY3RpdmVseSBhZGRpbmcgY292ZXJhZ2UgaW4gc3BlY2lmaWMgaGlnaC1yaXNrIGFyZWFzLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBzcGVjaWZ5CnBhaXJ3aXNlIGNvdmVyYWdlIG9yIGhpZ2hlci1vcmRlciBjb21iaW5hdGlvbnMgb2Ygc2VsZWN0ZWQgaW5wdXQgdmFyaWFibGVzLgoKIyMgSG93IERvZXMgSXQgV29yaz8gIyMKCkZpcnN0LCB5b3UgY3JlYXRlIGEgc3lzdGVtIGlucHV0IGRlZmluaXRpb24sIGEgZG9jdW1lbnQgdGhhdCBkZWZpbmVzIHlvdXIgc3lzdGVtIGFzIGEgc2V0IG9mIGZ1bmN0aW9ucy4gRm9yIGVhY2ggc3lzdGVtCmZ1bmN0aW9uLCB0aGUgc3lzdGVtIGlucHV0IGRlZmluaXRpb24gZGVmaW5lcyB0aGUgdmFyaWFibGVzIHRoYXQgY2hhcmFjdGVyaXplIHRoZSBmdW5jdGlvbiBpbnB1dCBzcGFjZS4gSWYgeW91IGFyZSB0ZXN0aW5nIGEgV2ViCnNlcnZpY2UgQVBJLCB5b3UgY2FuIGV2ZW4gW2dlbmVyYXRlIGEgc3lzdGVtIGlucHV0IGRlZmluaXRpb24gYXV0b21hdGljYWxseV0odGNhc2VzLW9wZW5hcGkvUkVBRE1FLm1kI3RjYXNlcy1mb3Itb3BlbmFwaS1mcm9tLXJlc3QtZnVsLXRvLXRlc3QtZnVsKQpmcm9tIGFuIE9wZW5BUEkgZGVmaW5pdGlvbi4KClRoZW4sIHlvdSBjYW4gY3JlYXRlIGEgZ2VuZXJhdG9yIGRlZmluaXRpb24uIFRoYXQncyBhbm90aGVyIGRvY3VtZW50IHRoYXQgZGVmaW5lcyB0aGUgY292ZXJhZ2UgeW91IHdhbnQgZm9yIGVhY2ggc3lzdGVtCmZ1bmN0aW9uLiBUaGUgZ2VuZXJhdG9yIGRlZmluaXRpb24gaXMgb3B0aW9uYWwuIFlvdSBjYW4gc2tpcCB0aGlzIHN0ZXAgYW5kIHN0aWxsIGdldCBhIGJhc2ljIGxldmVsIG9mIGNvdmVyYWdlLgoKRmluYWxseSwgeW91IHJ1biBUY2FzZXMuIFRjYXNlcyBpcyBhIEphdmEgcHJvZ3JhbSB0aGF0IHlvdSBjYW4gcnVuIGZyb20gdGhlIGNvbW1hbmQgbGluZSBvciB1c2luZyB0aGUKW1RjYXNlcyBNYXZlbiBQbHVnaW5dKGh0dHA6Ly93d3cuY29ybnV0dW0ub3JnL3RjYXNlcy9kb2NzL3RjYXNlcy1tYXZlbi1wbHVnaW4vKS4gVGhlIGNvbW1hbmQgbGluZSB2ZXJzaW9uIG9mIFRjYXNlcyBjb21lcyB3aXRoIGJ1aWx0LWluCnN1cHBvcnQgZm9yIHJ1bm5pbmcgdXNpbmcgYSBzaGVsbCBzY3JpcHQgb3IgYW4gYW50IHRhcmdldC4gVXNpbmcgeW91ciBpbnB1dCBkZWZpbml0aW9uIGFuZCB5b3VyIGdlbmVyYXRvciBkZWZpbml0aW9uLCBUY2FzZXMKZ2VuZXJhdGVzIGEgc3lzdGVtIHRlc3QgZGVmaW5pdGlvbi4gVGhlIHN5c3RlbSB0ZXN0IGRlZmluaXRpb24gaXMgYSBkb2N1bWVudCB0aGF0IGxpc3RzLCBmb3IgZWFjaCBzeXN0ZW0gZnVuY3Rpb24sIGEgc2V0IG9mIHRlc3QKY2FzZXMgdGhhdCBwcm92aWRlcyB0aGUgc3BlY2lmaWVkIGxldmVsIG9mIGNvdmVyYWdlLiBFYWNoIHRlc3QgY2FzZSBkZWZpbmVzIGEgc3BlY2lmaWMgdmFsdWUgZm9yIGV2ZXJ5IGZ1bmN0aW9uIGlucHV0CnZhcmlhYmxlLiBUY2FzZXMgZ2VuZXJhdGVzIG5vdCBvbmx5IHZhbGlkIGlucHV0IHZhbHVlcyB0aGF0IGRlZmluZSBzdWNjZXNzZnVsIHRlc3QgY2FzZXMgYnV0IGFsc28gaW52YWxpZCB2YWx1ZXMgZm9yIHRoZSB0ZXN0cwpjYXNlcyB0aGF0IGFyZSBuZWVkZWQgdG8gdmVyaWZ5IGV4cGVjdGVkIGVycm9yIGhhbmRsaW5nLgoKT2YgY291cnNlLCB0aGUgc3lzdGVtIHRlc3QgZGVmaW5pdGlvbiBpcyBub3Qgc29tZXRoaW5nIHlvdSBjYW4gZXhlY3V0ZSBkaXJlY3RseS4gKFVubGVzcyBpdCB3YXMKW2Rlcml2ZWQgYXV0b21hdGljYWxseSBmcm9tIGFuIE9wZW5BUEkgZGVmaW5pdGlvbl0odGNhc2VzLW9wZW5hcGkvUkVBRE1FLm1kI2hvdy1kby15b3UtcnVuLWdlbmVyYXRlZC1hcGktdGVzdC1jYXNlcykhKQpCdXQgaXQgZm9sbG93cyBhIHdlbGwtZGVmaW5lZCBzY2hlbWEsIHdoaWNoIG1lYW5zIHlvdSBjYW4gdXNlIGEgdmFyaWV0eSBvZiB0cmFuc2Zvcm1hdGlvbiB0b29scyB0byBjb252ZXJ0IGl0IGludG8gYSBmb3JtIHRoYXQKaXMgc3VpdGFibGUgZm9yIHRlc3RpbmcgeW91ciBzeXN0ZW0uIEZvciBleGFtcGxlLCBUY2FzZXMgY29tZXMgd2l0aCBhIGJ1aWx0LWluIHRyYW5zZm9ybWVyIHRoYXQgY29udmVydHMgYSBzeXN0ZW0gdGVzdApkZWZpbml0aW9uIGludG8gYSBKYXZhIHNvdXJjZSBjb2RlIHRlbXBsYXRlIGZvciBhIEpVbml0IG9yIFRlc3RORyB0ZXN0IGNsYXNzLgoKIyMgR2V0IFN0YXJ0ZWQhICMjCgogICogKipUaGUgTG93ZG93bioqCiAgICAqIFtUY2FzZXM6IFRoZSBDb21wbGV0ZSBHdWlkZV0oLi9UY2FzZXMtR3VpZGUubWQjdGNhc2VzLXRoZS1jb21wbGV0ZS1ndWlkZSkKICAgICogW1RjYXNlcyBmb3IgT3BlbkFQSV0odGNhc2VzLW9wZW5hcGkvUkVBRE1FLm1kI3RjYXNlcy1mb3Itb3BlbmFwaS1mcm9tLXJlc3QtZnVsLXRvLXRlc3QtZnVsKTogVGVzdGluZyBhIFJFU1QtZnVsIEFQST8gR2VuZXJhdGUgdGVzdCBjYXNlcyBkaXJlY3RseSBmcm9tIHlvdXIgT3BlbkFQSSB2MyBkZWZpbml0aW9uLgogICAgKiBbVGhlIFRjYXNlcyBNYXZlbiBQbHVnaW5dKGh0dHA6Ly93d3cuY29ybnV0dW0ub3JnL3RjYXNlcy9kb2NzL3RjYXNlcy1tYXZlbi1wbHVnaW4vKQoKICAqICoqSGVscGZ1bCBHdWlkZXMqKgogICAgKiBbSG93IFRvIERvd25sb2FkIFVzaW5nIE1hdmVuXShIb3dUb0Rvd25sb2FkLm1kKQogICAgKiBbSG93IFRvIFNldHVwIGEgVGNhc2VzIFdlYiBTZXJ2aWNlXSguL1RjYXNlcy1XZWItU2VydmljZS5tZCkKICAgICogW1VzaW5nIFRoZSBUY2FzZXMgQVBJXSguL1VzaW5nLVRjYXNlcy1BUEkubWQpCiAgICAqIFtUcm91Ymxlc2hvb3RpbmcgRkFRXSguL1Ryb3VibGVzaG9vdGluZy1GQVFzLm1kI3Ryb3VibGVzaG9vdGluZy1mYXFzKQogICAgKiBbUmVsZWFzZSBOb3Rlc10oUmVsZWFzZU5vdGVzLm1kKQoKICAqICoqTW9yZSBJbmZvKioKICAgICogW01vZGVsLURyaXZlbiBUZXN0aW5nIFVzaW5nIFRjYXNlc10oTW9kZWxEcml2ZW5UZXN0aW5nRm9yQWdpbGVUZWFtcy5tZCkKICAgICogSmF2YWRvYzogW1RjYXNlcyBBUEldKGh0dHA6Ly93d3cuY29ybnV0dW0ub3JnL3RjYXNlcy9kb2NzL2FwaS9pbmRleC5odG1sKQoKIyMgQ29udHJpYnV0b3JzICMjCgpUaGFua3MgdG8gdGhlIGZvbGxvd2luZyBwZW9wbGUsIHdobyBoYXZlIGNvbnRyaWJ1dGVkIHNpZ25pZmljYW50IGltcHJvdmVtZW50cyB0byBUY2FzZXMuCgogICogW0tlcnJ5IEtpbWJyb3VnaF0oaHR0cHM6Ly9naXRodWIuY29tL2tlcnJ5a2ltYnJvdWdoKSAocHJvamVjdCBmb3VuZGVyKQogICogW0p1Z2xhcl0oaHR0cHM6Ly9naXRodWIuY29tL2p1Z2xhcikKICAqIFtUaGliYXVsdCBLcnVzZV0oaHR0cHM6Ly9naXRodWIuY29tL3RrcnVzZSkK readmeEtag: '"ca9a75dabe602853f00d0e6ee6f9a7326d7f4433"' readmeLastModified: Thu, 27 Nov 2025 22:47:20 GMT repositoryId: 32223373 description: A model-based test case generator created: '2015-03-14T17:22:38Z' updated: '2025-12-18T16:57:03Z' language: Java archived: false stars: 236 watchers: 16 forks: 56 owner: Cornutum logo: https://avatars.githubusercontent.com/u/11477145?v=4 license: MIT repoEtag: '"a1d286eef641716d283e62ff50d46ad41827aaf523f41391a8f106f17a7d330b"' repoLastModified: Thu, 18 Dec 2025 16:57:03 GMT foundInMaster: true category: Testing id: 0843a8b0533f5128a9b0e3cf353e82cd - source: openapi3 tags repository: https://github.com/epiphone/class-validator-jsonschema v3: true repositoryMetadata: base64Readme: >- IyBjbGFzcy12YWxpZGF0b3ItanNvbnNjaGVtYQoKWyFbbnBtIHZlcnNpb25dKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9qcy9jbGFzcy12YWxpZGF0b3ItanNvbnNjaGVtYS5zdmcpXShodHRwczovL2JhZGdlLmZ1cnkuaW8vanMvY2xhc3MtdmFsaWRhdG9yLWpzb25zY2hlbWEpCgpDb252ZXJ0IFtjbGFzcy12YWxpZGF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS90eXBlc3RhY2svY2xhc3MtdmFsaWRhdG9yKS1kZWNvcmF0ZWQgY2xhc3NlcyBpbnRvIE9wZW5BUEktY29tcGF0aWJsZSBKU09OIFNjaGVtYS4gVGhlIGFpbSBpcyB0byBwcm92aWRlIGEgYmVzdC1lZmZvcnQgY29udmVyc2lvbjogc2luY2Ugc29tZSBvZiB0aGUgYGNsYXNzLXZhbGlkYXRvcmAgZGVjb3JhdG9ycyBsYWNrIGEgZGlyZWN0IEpTT04gU2NoZW1hIGNvdW50ZXJwYXJ0LCB0aGUgY29udmVyc2lvbiBpcyBib3VuZCB0byBiZSBzb21ld2hhdCBvcGluaW9uYXRlZC4gVG8gYWNjb3VudCBmb3IgdGhpcyBtdWx0aXBsZSBleHRlbnNpb24gcG9pbnRzIGFyZSBhdmFpbGFibGUuCgojIyBJbnN0YWxsYXRpb24KCmBucG0gaW5zdGFsbCBjbGFzcy12YWxpZGF0b3ItanNvbnNjaGVtYWAKCioqTm90ZSB0aGUgcGVlciBkZXBlbmRlbmN5IHZlcnNpb25zKiogaW4gW3BhY2thZ2UuanNvbl0oLi9wYWNrYWdlLmpzb24pLiBUcnkgaW5zdGFsbGluZyBhIHByZXZpb3VzIG1ham9yIHZlcnNpb24gb2YgYGNsYXNzLXZhbGlkYXRvci1qc29uc2NoZW1hYCBpbiBjYXNlIHlvdSdyZSBzdHVjayB3aXRoIG9sZGVyIHBlZXIgZGVwZW5kZW5jaWVzLgoKIyMgVXNhZ2UKCmBgYHR5cGVzY3JpcHQKaW1wb3J0IHsgSXNPcHRpb25hbCwgSXNTdHJpbmcsIE1heExlbmd0aCB9IGZyb20gJ2NsYXNzLXZhbGlkYXRvcicKaW1wb3J0IHsgdmFsaWRhdGlvbk1ldGFkYXRhc1RvU2NoZW1hcyB9IGZyb20gJ2NsYXNzLXZhbGlkYXRvci1qc29uc2NoZW1hJwoKY2xhc3MgQmxvZ1Bvc3QgewogIEBJc1N0cmluZygpIGlkOiBzdHJpbmcKCiAgQElzT3B0aW9uYWwoKQogIEBNYXhMZW5ndGgoMjAsIHsgZWFjaDogdHJ1ZSB9KQogIHRhZ3M6IHN0cmluZ1tdCn0KCmNvbnN0IHNjaGVtYXMgPSB2YWxpZGF0aW9uTWV0YWRhdGFzVG9TY2hlbWFzKCkKY29uc29sZS5sb2coc2NoZW1hcykKYGBgCgp3aGljaCBwcmludHMgb3V0OgoKYGBganNvbgp7CiAgIkJsb2dQb3N0IjogewogICAgInByb3BlcnRpZXMiOiB7CiAgICAgICJpZCI6IHsKICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgIH0sCiAgICAgICJ0YWdzIjogewogICAgICAgICJpdGVtcyI6IHsKICAgICAgICAgICJtYXhMZW5ndGgiOiAyMCwKICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICB9LAogICAgICAgICJ0eXBlIjogImFycmF5IgogICAgICB9CiAgICB9LAogICAgInJlcXVpcmVkIjogWyJpZCJdLAogICAgInR5cGUiOiAib2JqZWN0IgogIH0KfQpgYGAKCmB2YWxpZGF0aW9uTWV0YWRhdGFzVG9TY2hlbWFzYCB0YWtlcyBhbiBgb3B0aW9uc2Agb2JqZWN0IGFzIGFuIG9wdGlvbmFsIHBhcmFtZXRlci4gQ2hlY2sgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb24gb2JqZWN0cyBhbmQgZGVmYXVsdHMgYXQgW2BvcHRpb25zLnRzYF0oc3JjL29wdGlvbnMudHMpLgoKIyMjIEFkZGluZyBhbmQgb3ZlcnJpZGluZyBkZWZhdWx0IGNvbnZlcnRlcnMKCldpdGggYG9wdGlvbnMuYWRkaXRpb25hbENvbnZlcnRlcnNgIHlvdSBjYW4gYWRkIG5ldyB2YWxpZGF0aW9uIG1ldGFkYXRhIGNvbnZlcnRlcnMgb3Igb3ZlcnJpZGUgW3RoZSBleGlzdGluZyBvbmVzXShzcmMvZGVmYXVsdENvbnZlcnRlcnMudHMpLiBMZXQncyBzYXkgd2Ugd2FudCB0bywgZm9yIGV4YW1wbGUsIGFkZCBhIGhhbmR5IGBkZXNjcmlwdGlvbmAgZmllbGQgdG8gZWFjaCBgQElzU3RyaW5nKClgLWRlY29yYXRlZCBwcm9wZXJ0eToKCmBgYHR5cGVzY3JpcHQKaW1wb3J0IHsgVmFsaWRhdGlvblR5cGVzIH0gZnJvbSAnY2xhc3MtdmFsaWRhdG9yJwoKLy8gLi4uCgpjb25zdCBzY2hlbWFzID0gdmFsaWRhdGlvbk1ldGFkYXRhc1RvU2NoZW1hcyh7CiAgYWRkaXRpb25hbENvbnZlcnRlcnM6IHsKICAgIFtWYWxpZGF0aW9uVHlwZXMuSVNfU1RSSU5HXTogewogICAgICBkZXNjcmlwdGlvbjogJ0Egc3RyaW5nIHZhbHVlJywKICAgICAgdHlwZTogJ3N0cmluZycsCiAgICB9LAogIH0sCn0pCmBgYAoKd2hpY2ggbm93IG91dHB1dHM6CgpgYGBqc29uCnsKICAiQmxvZ1Bvc3QiOiB7CiAgICAicHJvcGVydGllcyI6IHsKICAgICAgImlkIjogewogICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHN0cmluZyB2YWx1ZSIsCiAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICB9CiAgICAgIC8vIC4uLgogICAgfQogIH0KfQpgYGAKCkFuIGFkZGl0aW9uYWwgY29udmVydGVyIGNhbiBhbHNvIGJlIHN1cHBsaWVkIGluIGZvcm0gb2YgYSBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIHRoZSB2YWxpZGF0aW9uIG1ldGFkYXRhIGl0ZW0gYW5kIGdsb2JhbCBvcHRpb25zLCBvdXRwdXR0aW5nIGEgSlNPTiBTY2hlbWEgcHJvcGVydHkgb2JqZWN0IChzZWUgYmVsb3cgZm9yIHVzYWdlKToKCmBgYHR5cGVzY3JpcHQKdHlwZSBTY2hlbWFDb252ZXJ0ZXIgPSAoCiAgbWV0YTogVmFsaWRhdGlvbk1ldGFkYXRhLAogIG9wdGlvbnM6IElPcHRpb25zCikgPT4gU2NoZW1hT2JqZWN0IHwgdm9pZApgYGAKCiMjIyBDdXN0b20gdmFsaWRhdGlvbiBjbGFzc2VzCgpgY2xhc3MtdmFsaWRhdG9yYCBhbGxvd3MgeW91IHRvIGRlZmluZSBbY3VzdG9tIHZhbGlkYXRpb24gY2xhc3Nlc10oaHR0cHM6Ly9naXRodWIuY29tL3R5cGVzdGFjay9jbGFzcy12YWxpZGF0b3IjY3VzdG9tLXZhbGlkYXRpb24tY2xhc3NlcykuIFlvdSBtaWdodCBmb3IgZXhhbXBsZSB2YWxpZGF0ZSB0aGF0IGEgc3RyaW5nJ3MgbGVuZ3RoIGlzIGJldHdlZW4gZ2l2ZW4gdHdvIHZhbHVlczoKCmBgYHR5cGVzY3JpcHQKaW1wb3J0IHsKICBWYWxpZGF0ZSwKICBWYWxpZGF0aW9uQXJndW1lbnRzLAogIFZhbGlkYXRvckNvbnN0cmFpbnQsCiAgVmFsaWRhdG9yQ29uc3RyYWludEludGVyZmFjZSwKfSBmcm9tICdjbGFzcy12YWxpZGF0b3InCgovLyBJbXBsZW1lbnRpbmcgdGhlIHZhbGlkYXRvcjoKCkBWYWxpZGF0b3JDb25zdHJhaW50KCkKZXhwb3J0IGNsYXNzIEN1c3RvbVRleHRMZW5ndGggaW1wbGVtZW50cyBWYWxpZGF0b3JDb25zdHJhaW50SW50ZXJmYWNlIHsKICB2YWxpZGF0ZSh0ZXh0OiBzdHJpbmcsIHZhbGlkYXRpb25Bcmd1bWVudHM6IFZhbGlkYXRpb25Bcmd1bWVudHMpIHsKICAgIGNvbnN0IFttaW4sIG1heF0gPSB2YWxpZGF0aW9uQXJndW1lbnRzLmNvbnN0cmFpbnRzCiAgICByZXR1cm4gdGV4dC5sZW5ndGggPj0gbWluICYmIHRleHQubGVuZ3RoIDw9IG1heAogIH0KfQoKLy8gLi4uYW5kIHB1dHRpbmcgaXQgdG8gdXNlOgoKY2xhc3MgUG9zdCB7CiAgQFZhbGlkYXRlKEN1c3RvbVRleHRMZW5ndGgsIFswLCAxMV0pCiAgdGl0bGU6IHN0cmluZwp9CmBgYAoKTm93IHRvIGhhbmRsZSB5b3VyIGN1c3RvbSB2YWxpZGF0b3IncyBKU09OIFNjaGVtYSBjb252ZXJzaW9uIGluY2x1ZGUgYSBgQ3VzdG9tVGV4dExlbmd0aGAgY29udmVydGVyIGluIGBvcHRpb25zLmFkZGl0aW9uYWxDb252ZXJ0ZXJzYDoKCmBgYHR5cGVzY3JpcHQKY29uc3Qgc2NoZW1hcyA9IHZhbGlkYXRpb25NZXRhZGF0YXNUb1NjaGVtYXMoewogIGFkZGl0aW9uYWxDb252ZXJ0ZXJzOiB7CiAgICBDdXN0b21UZXh0TGVuZ3RoOiAobWV0YSkgPT4gKHsKICAgICAgbWF4TGVuZ3RoOiBtZXRhLmNvbnN0cmFpbnRzWzFdLAogICAgICBtaW5MZW5ndGg6IG1ldGEuY29uc3RyYWludHNbMF0sCiAgICAgIHR5cGU6ICdzdHJpbmcnLAogICAgfSksCiAgfSwKfSkKYGBgCgojIyMgRGVjb3JhdGluZyB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcwoKVmFsaWRhdGlvbiBjbGFzc2VzIGNhbiBhbHNvIGJlIHN1cHBsZW1lbnRlZCB3aXRoIHRoZSBgSlNPTlNjaGVtYWAgZGVjb3JhdG9yLiBgSlNPTlNjaGVtYWAgY2FuIGJlIGFwcGxpZWQgYm90aCB0byBjbGFzc2VzIGFuZCBpbmRpdmlkdWFsIHByb3BlcnRpZXM7IGFueSBnaXZlbiBrZXl3b3JkcyBhcmUgdGhlbiBbbWVyZ2VkXShodHRwczovL2xvZGFzaC5jb20vZG9jcy80LjE3LjQjbWVyZ2UpIGludG8gdGhlIEpTT04gU2NoZW1hIGRlcml2ZWQgZnJvbSBjbGFzcy12YWxpZGF0b3IgZGVjb3JhdG9yczoKCmBgYHR5cGVzY3JpcHQKaW1wb3J0IHsgSlNPTlNjaGVtYSB9IGZyb20gJ2NsYXNzLXZhbGlkYXRvci1qc29uc2NoZW1hJwoKQEpTT05TY2hlbWEoewogIGRlc2NyaXB0aW9uOiAnQSBVc2VyIG9iamVjdCcsCiAgZXhhbXBsZTogeyBpZDogJzEyMycgfSwKfSkKY2xhc3MgQmxvZ1Bvc3QgewogIEBJc1N0cmluZygpCiAgQEpTT05TY2hlbWEoewogICAgZGVzY3JpcHRpb246ICdVc2VyIHByaW1hcnkga2V5JywKICAgIGZvcm1hdDogJ2N1c3RvbS1pZCcsCiAgfSkKICBpZDogc3RyaW5nCn0KYGBgCgpSZXN1bHRzIGluIHRoZSBmb2xsb3dpbmcgc2NoZW1hOgoKYGBganNvbgp7CiAgIkJsb2dQb3N0IjogewogICAgImRlc2NyaXB0aW9uIjogIkEgVXNlciBvYmplY3QiLAogICAgImV4YW1wbGUiOiB7ICJpZCI6ICIxMjMiIH0sCiAgICAicHJvcGVydGllcyI6IHsKICAgICAgImlkIjogewogICAgICAgICJkZXNjcmlwdGlvbiI6ICJVc2VyIHByaW1hcnkga2V5IiwKICAgICAgICAiZm9ybWF0IjogImN1c3RvbS1pZCIsCiAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInJlcXVpcmVkIjogWyJpZCJdLAogICAgInR5cGUiOiAib2JqZWN0IgogIH0KfQpgYGAKCmBKU09OU2NoZW1hYCBkZWNvcmF0b3JzIGFsc28gZmxvdyBkb3duIGZyb20gcGFyZW50IGNsYXNzZXMgaW50byBbaW5oZXJpdGVkIHZhbGlkYXRpb24gZGVjb3JhdG9yc10oaHR0cHM6Ly9naXRodWIuY29tL3R5cGVzdGFjay9jbGFzcy12YWxpZGF0b3IjaW5oZXJpdGluZy12YWxpZGF0aW9uLWRlY29yYXRvcnMpLiBOb3RlIHRob3VnaCB0aGF0IGlmIHRoZSBpbmhlcml0ZWQgY2xhc3MgdXNlcyBgSlNPTlNjaGVtYWAgdG8gcmVkZWNvcmF0ZSBhIHByb3BlcnR5IGZyb20gdGhlIHBhcmVudCBjbGFzcywgdGhlIHBhcmVudCBjbGFzcyBgSlNPTlNjaGVtYWAgZ2V0cyBvdmVyd3JpdHRlbiAtIGkuZS4gdGhlcmUncyBubyBtZXJnaW5nIGxvZ2ljLgoKIyMjIyBDdXN0b20gaGFuZGxlcnMKCkFsdGVybmF0aXZlbHkgYEpTT05TY2hlbWFgIGNhbiB0YWtlIGEgZnVuY3Rpb24gb2YgdHlwZSBgKGV4aXN0aW5nU2NoZW1hOiBTY2hlbWFPYmplY3QsIG9wdGlvbnM6IElPcHRpb25zKSA9PiBTY2hlbWFPYmplY3RgLiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdGhlbiAqKm5vdCoqIGF1dG9tYXRpY2FsbHkgbWVyZ2VkIGludG8gZXhpc3Rpbmcgc2NoZW1hIChpLmUuIHRoZSBvbmUgZGVyaXZlZCBmcm9tIGBjbGFzcy12YWxpZGF0b3JgIGRlY29yYXRvcnMpLiBJbnN0ZWFkIHlvdSBjYW4gaGFuZGxlIG1lcmdpbmcgeW91cnNlbGYgaW4gd2hpY2hldmVyIHdheSBpcyBwcmVmZXJyZWQsIHRoZSBpZGVhIGJlaW5nIHRoYXQgcmVtb3ZhbCBvZiBleGlzdGluZyBrZXl3b3JkcyBhbmQgb3RoZXIgbW9yZSBjb21wbGV4IG92ZXJ3cml0ZSBzY2VuYXJpb3MgY2FuIGJlIGltcGxlbWVudGVkIGhlcmUuCgojIyMgQFZhbGlkYXRlTmVzdGVkIGFuZCBhcnJheXMKCmBjbGFzcy12YWxpZGF0b3JgIHN1cHBvcnRzIHZhbGlkYXRpbmcgbmVzdGVkIG9iamVjdHMgdmlhIHRoZSBbYEBWYWxpZGF0ZU5lc3RlZGAgZGVjb3JhdG9yXShodHRwczovL2dpdGh1Yi5jb20vdHlwZXN0YWNrL2NsYXNzLXZhbGlkYXRvciN2YWxpZGF0aW5nLW5lc3RlZC1vYmplY3RzKS4gTGlrZXdpc2UgSlNPTiBTY2hlbWEgZ2VuZXJhdGlvbiBpcyBzdXBwb3J0ZWQgb3V0LW9mLXRoZS1ib3ggZm9yIG5lc3RlZCBwcm9wZXJ0aWVzIHN1Y2ggYXMKCmBgYHR5cGVzY3JpcHQKQFZhbGlkYXRlTmVzdGVkKCkKdXNlcjogVXNlckNsYXNzCmBgYAoKSG93ZXZlciwgZHVlIHRvIFtsaW1pdGF0aW9ucyBpbiBUeXBlc2NyaXB0J3MgcmVmbGVjdGlvbiBzeXN0ZW1dKGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMTA1NzYpIHdlIGNhbm5vdCBpbmZlciB0aGUgaW5uZXIgdHlwZSBvZiBhIGdlbmVyaWMgY2xhc3MuIEluIGVmZmVjdCB0aGlzIG1lYW5zIHRoYXQgcHJvcGVydGllcyBsaWtlCgpgYGB0eXBlc2NyaXB0CkBWYWxpZGF0ZU5lc3RlZCh7IGVhY2g6IHRydWUgfSkKdXNlcnM6IFVzZXJDbGFzc1tdCgpAVmFsaWRhdGVOZXN0ZWQoKQp1c2VyOiBQcm9taXNlPFVzZXJDbGFzcz4KYGBgCgp3b3VsZCByZXNvbHZlIHRvIGNsYXNzZXMgYEFycmF5YCBhbmQgYFByb21pc2VgIGluIEpTT04gU2NoZW1hLiBUbyB3b3JrIGFyb3VuZCB0aGlzIGxpbWl0YXRpb24gd2UgY2FuIHVzZSBgQFR5cGVgIGZyb20gYGNsYXNzLXRyYW5zZm9ybWVyYCB0byBleHBsaWNpdGx5IGRlZmluZSB0aGUgbmVzdGVkIHByb3BlcnR5J3MgaW5uZXIgdHlwZToKCmBgYHR5cGVzY3JpcHQKaW1wb3J0IHsgVHlwZSB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJwppbXBvcnQgeyB2YWxpZGF0aW9uTWV0YWRhdGFzVG9TY2hlbWFzIH0gZnJvbSAnY2xhc3MtdmFsaWRhdG9yLWpzb25zY2hlbWEnCmNvbnN0IHsgZGVmYXVsdE1ldGFkYXRhU3RvcmFnZSB9ID0gcmVxdWlyZSgnY2xhc3MtdHJhbnNmb3JtZXIvY2pzL3N0b3JhZ2UnKSAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R5cGVzdGFjay9jbGFzcy10cmFuc2Zvcm1lci9pc3N1ZXMvNTYzIGZvciBhbHRlcm5hdGl2ZXMKCmNsYXNzIFVzZXIgewogIEBWYWxpZGF0ZU5lc3RlZCh7IGVhY2g6IHRydWUgfSkKICBAVHlwZSgoKSA9PiBCbG9nUG9zdCkgLy8gMSkgRXhwbGljaXRseSBkZWZpbmUgdGhlIG5lc3RlZCBwcm9wZXJ0eSB0eXBlCiAgYmxvZ1Bvc3RzOiBCbG9nUG9zdFtdCn0KCmNvbnN0IHNjaGVtYXMgPSB2YWxpZGF0aW9uTWV0YWRhdGFzVG9TY2hlbWFzKHsKICBjbGFzc1RyYW5zZm9ybWVyTWV0YWRhdGFTdG9yYWdlOiBkZWZhdWx0TWV0YWRhdGFTdG9yYWdlLCAvLyAyKSBEZWZpbmUgY2xhc3MtdHJhbnNmb3JtZXIgbWV0YWRhdGEgaW4gb3B0aW9ucwp9KQpgYGAKCk5vdGUgYWxzbyBob3cgdGhlIGBjbGFzc1RyYW5zZm9ybWVyTWV0YWRhdGFTdG9yYWdlYCBvcHRpb24gaGFzIHRvIGJlIGRlZmluZWQgZm9yIGBAVHlwZWAgZGVjb3JhdG9yIHRvIHRha2UgZWZmZWN0LgoKIyMjIFVzaW5nIGEgY3VzdG9tIHZhbGlkYXRpb24gbWV0YWRhdGFTdG9yYWdlCgpVbmRlciB0aGUgaG9vZCB3ZSBncmFiIHZhbGlkYXRpb24gbWV0YWRhdGEgZnJvbSB0aGUgZGVmYXVsdCBzdG9yYWdlIHJldHVybmVkIGJ5IGBjbGFzcy12YWxpZGF0b3JgJ3MgYGdldE1ldGFkYXRhU3RvcmFnZSgpYC4gSW4gY2FzZSBvZiBhIHZlcnNpb24gY2xhc2ggb3Igc29tZXRoaW5nIHlvdSBtaWdodCB3YW50IHRvIG1hbnVhbGx5IHBhc3MgaW4gdGhlIHN0b3JhZ2U6CgpgYGB0eXBlc2NyaXB0CmNvbnN0IHNjaGVtYXMgPSB2YWxpZGF0aW9uTWV0YWRhdGFzVG9TY2hlbWFzKHsKICBjbGFzc1ZhbGlkYXRvck1ldGFkYXRhU3RvcmFnZTogbXlDdXN0b21NZXRhZGF0YVN0b3JhZ2UsCn0pCmBgYAoKIyMgTGltaXRhdGlvbnMKClRoZXJlJ3Mgbm8gaGFuZGxpbmcgZm9yIGBjbGFzcy12YWxpZGF0b3JgcyAqKnZhbGlkYXRpb24gZ3JvdXBzKiogb3IgKipjb25kaXRpb25hbCBkZWNvcmF0b3IqKiAoYEBWYWxpZGF0ZUlmYCkgb3V0LW9mLXRoZS1ib3guIFRoZSBhYm92ZS1tZW50aW9uZWQgZXh0ZW5zaW9uIG1ldGhvZHMgY2FuIGJlIHVzZWQgdG8gZmlsbCB0aGUgZ2FwcyBpZiBuZWNlc3NhcnkuCgpUaGUgT3BlbkFQSSBzcGVjIGRvZXNuJ3QgY3VycmVudGx5IHN1cHBvcnQgdGhlIG5ldyBKU09OIFNjaGVtYSAqKmRyYWZ0LTA2IGtleXdvcmRzKiogYGNvbnN0YCBhbmQgYGNvbnRhaW5zYC4gVGhpcyBtZWFucyB0aGF0IGNvbnN0YW50IHZhbHVlIGRlY29yYXRvcnMgc3VjaCBhcyBgQElzRXF1YWwoKWAgYW5kIGBAQXJyYXlDb250YWlucygpYCB0cmFuc2xhdGUgdG8gcXVpdGUgW2NvbXBsaWNhdGVkIHNjaGVtYXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zYWhhdmEvZ3RtLWRhdGFsYXllci10ZXN0L2lzc3Vlcy80KS4gSG9wZWZ1bGx5IFtpbiBhIG5vdCB0b28gZGlzdGFudCBmdXR1cmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2lzc3Vlcy8xMzEzI2lzc3VlY29tbWVudC0zMzU4OTMwNjIpIHRoZXNlIGtleXdvcmRzIGFyZSBhZG9wdGVkIGludG8gdGhlIHNwZWMgYW5kIHdlJ2xsIGJlIGFibGUgdG8gcHJvdmlkZSBuZWF0ZXIgY29udmVyc2lvbi4KCkhhbmRsaW5nICoqbnVsbCB2YWx1ZXMqKiBpcyBhbHNvIHRyaWNreSBzaW5jZSBPcGVuQVBJIGRvZXNuJ3Qgc3VwcG9ydCBKU09OIFNjaGVtYSdzIGB0eXBlOiBudWxsYCwgcHJvdmlkaW5nIGl0cyBvd24gYG51bGxhYmxlYCBrZXl3b3JkIGluc3RlYWQuIFRoZSBkZWZhdWx0IGBASXNFbXB0eSgpYCBjb252ZXJ0ZXIgZm9yIGV4YW1wbGUgb3B0cyBmb3IgYG51bGxhYmxlYCBidXQgeW91IGNhbiB1c2UgYHR5cGU6IG51bGxgIGluc3RlYWQgdmlhIGBvcHRpb25zLmFkZGl0aW9uYWxDb252ZXJ0ZXJzYDoKCmBgYHR5cGVzY3JpcHQKLy8gLi4uCmFkZGl0aW9uYWxDb252ZXJ0ZXJzOiB7CiAgW1ZhbGlkYXRpb25UeXBlcy5JU19FTVBUWV06IHsKICAgIGFueU9mOiBbCiAgICAgIHt0eXBlOiAnc3RyaW5nJywgZW51bTogWycnXX0sCiAgICAgIHt0eXBlOiAnbnVsbCd9CiAgICBdCiAgfQp9CmBgYAoKIyMgVE9ETwoKLSBbeF0gaGFuZGxlIGBza2lwTWlzc2luZ1Byb3BlcnRpZXNgIGFuZCBgQGlzRGVmaW5lZCgpYAotIFt4XSBkZWNvcmF0b3JzIGZvciBvdmVyd3JpdGluZyBwcm9wIHNjaGVtYXMKLSBbIF0gb3B0aW9uYWwgcHJvcGVydHkgZGVzY3JpcHRpb25zIChlLmcuIGBBIEJhc2U2NC1lbmNvZGVkIHN0cmluZ2ApCi0gWyBdIG9wdGlvbmFsIGRyYWZ0LTA2IGtleXdvcmRzCg== readmeEtag: '"d4ad0ae40424022585dbaf50f0f98c496b35f964"' readmeLastModified: Tue, 04 Mar 2025 01:17:50 GMT repositoryId: 112473994 description: Convert class-validator-decorated classes into JSON schema created: '2017-11-29T12:41:25Z' updated: '2026-01-27T23:20:16Z' language: TypeScript archived: false stars: 240 watchers: 5 forks: 37 owner: epiphone logo: https://avatars.githubusercontent.com/u/1923531?v=4 license: MIT repoEtag: '"9781ae75147ea0ea360dc007b8e60e79628661b9bf0ee595a699b30d74e0825d"' repoLastModified: Tue, 27 Jan 2026 23:20:16 GMT foundInMaster: true category: - Data Validators - Parsers id: fc507a0f888124f714fc5c42ee5979b0 - source: openapi3 tags repository: https://github.com/brikev/express-jsdoc-swagger v3: true repositoryMetadata: base64Readme: >- IVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvZXhwcmVzcy1qc2RvYy1zd2FnZ2VyKQohW05vZGUuanMgUGFja2FnZV0oaHR0cHM6Ly9naXRodWIuY29tL0JSSUtFVi9leHByZXNzLWpzZG9jLXN3YWdnZXIvd29ya2Zsb3dzL0J1aWxkL2JhZGdlLnN2ZykKWyFbS25vd24gVnVsbmVyYWJpbGl0aWVzXShodHRwczovL3NueWsuaW8vdGVzdC9naXRodWIvQlJJS0VWL2V4cHJlc3MtanNkb2Mtc3dhZ2dlci9iYWRnZS5zdmcpXShodHRwczovL3NueWsuaW8vdGVzdC9naXRodWIvQlJJS0VWL2V4cHJlc3MtanNkb2Mtc3dhZ2dlcikKWyFbTWFpbnRhaW5hYmlsaXR5XShodHRwczovL2FwaS5jb2RlY2xpbWF0ZS5jb20vdjEvYmFkZ2VzLzZkNTU2NWRmMGM5YzEwZTc1YjU5L21haW50YWluYWJpbGl0eSldKGh0dHBzOi8vY29kZWNsaW1hdGUuY29tL2dpdGh1Yi9CUklLRVYvZXhwcmVzcy1qc2RvYy1zd2FnZ2VyL21haW50YWluYWJpbGl0eSkKWyFbVGVzdCBDb3ZlcmFnZV0oaHR0cHM6Ly9hcGkuY29kZWNsaW1hdGUuY29tL3YxL2JhZGdlcy82ZDU1NjVkZjBjOWMxMGU3NWI1OS90ZXN0X2NvdmVyYWdlKV0oaHR0cHM6Ly9jb2RlY2xpbWF0ZS5jb20vZ2l0aHViL0JSSUtFVi9leHByZXNzLWpzZG9jLXN3YWdnZXIvdGVzdF9jb3ZlcmFnZSkKIVtMaWNlbnNlOiBNSVRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGljZW5zZS1NSVQtZ3JlZW4uc3ZnKQohW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vZXhwcmVzcy1qc2RvYy1zd2FnZ2VyKQoKIyBleHByZXNzLWpzZG9jLXN3YWdnZXIKCldpdGggdGhpcyBsaWJyYXJ5LCB5b3UgY2FuIGRvY3VtZW50IHlvdXIgZXhwcmVzcyBlbmRwb2ludHMgdXNpbmcgc3dhZ2dlciBbT3BlbkFQSSAzIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykgd2l0aG91dCB3cml0aW5nIFlBTUwgb3IgSlNPTi4gWW91IGNhbiB3cml0ZSBjb21tZW50cyBzaW1pbGFyIHRvIGBqc2RvY2Agb24gZWFjaCBlbmRwb2ludCwgYW5kIHRoZSBkZXBlbmRlY3kgaXMgZ29pbmcgdG8gY3JlYXRlIHRoZSBzd2FnZ2VyIFVJLgoKIyMgVGFibGUgb2YgQ29udGVudHMKCjEuIFtQcmVyZXF1aXNpdGVzXSgjUHJlcmVxdWlzaXRlcykKMi4gW0luc3RhbGxhdGlvbl0oI0luc3RhbGxhdGlvbikKMy4gW0Jhc2ljIFVzYWdlXSgjQmFzaWMtVXNhZ2UpCjQuIFtCYXNpYyBFeGFtcGxlc10oI0Jhc2ljLUV4YW1wbGVzKQoJLSBbQWR2YW5jZWQgZXhhbXBsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9CUklLRVYvZXhwcmVzcy1qc2RvYy1zd2FnZ2VyL3RyZWUvbWFzdGVyL2V4YW1wbGVzKQoJLSBbT2ZmaWNpYWwgZG9jc10oaHR0cHM6Ly9icmlrZXYuZ2l0aHViLmlvL2V4cHJlc3MtanNkb2Mtc3dhZ2dlci1kb2NzLyMvKQo1LiBbVmFsaWRhdG9yXSgjVmFsaWRhdG9yKQo2LiBbVlNDb2RlIGV4dGVuc2lvbl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPWJyaWtldi5leHByZXNzLWpzZG9jLXN3YWdnZXItc25pcHBldHMpCgojIyBQcmVyZXF1aXNpdGVzCgpUaGlzIGxpYnJhcnkgYXNzdW1lcyB5b3UgYXJlIHVzaW5nOgoKMS4gW05vZGVKU10oaHR0cHM6Ly9ub2RlanMub3JnKQoyLiBbRXhwcmVzcy5qc10oaHR0cDovL3d3dy5leHByZXNzanMuY29tKQoKIyMgSW5zdGFsbGF0aW9uCgpgYGAKbnBtIGkgZXhwcmVzcy1qc2RvYy1zd2FnZ2VyCmBgYAoKIyMgQmFzaWMgVXNhZ2UKCmBgYGphdmFzY3JpcHQKLy8gaW5kZXguanMgZmlsZQpjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpOwpjb25zdCBleHByZXNzSlNEb2NTd2FnZ2VyID0gcmVxdWlyZSgnZXhwcmVzcy1qc2RvYy1zd2FnZ2VyJyk7Cgpjb25zdCBvcHRpb25zID0gewogIGluZm86IHsKICAgIHZlcnNpb246ICcxLjAuMCcsCiAgICB0aXRsZTogJ0FsYnVtcyBzdG9yZScsCiAgICBsaWNlbnNlOiB7CiAgICAgIG5hbWU6ICdNSVQnLAogICAgfSwKICB9LAogIHNlY3VyaXR5OiB7CiAgICBCYXNpY0F1dGg6IHsKICAgICAgdHlwZTogJ2h0dHAnLAogICAgICBzY2hlbWU6ICdiYXNpYycsCiAgICB9LAogIH0sCiAgLy8gQmFzZSBkaXJlY3Rvcnkgd2hpY2ggd2UgdXNlIHRvIGxvY2F0ZSB5b3VyIEpTRE9DIGZpbGVzCiAgYmFzZURpcjogX19kaXJuYW1lLAogIC8vIEdsb2IgcGF0dGVybiB0byBmaW5kIHlvdXIganNkb2MgZmlsZXMgKG11bHRpcGxlIHBhdHRlcm5zIGNhbiBiZSBhZGRlZCBpbiBhbiBhcnJheSkKICBmaWxlc1BhdHRlcm46ICcuLyoqLyouanMnLAogIC8vIFVSTCB3aGVyZSBTd2FnZ2VyVUkgd2lsbCBiZSByZW5kZXJlZAogIHN3YWdnZXJVSVBhdGg6ICcvYXBpLWRvY3MnLAogIC8vIEV4cG9zZSBPcGVuQVBJIFVJCiAgZXhwb3NlU3dhZ2dlclVJOiB0cnVlLAogIC8vIEV4cG9zZSBPcGVuIEFQSSBKU09OIERvY3MgZG9jdW1lbnRhdGlvbiBpbiBgYXBpRG9jc1BhdGhgIHBhdGguCiAgZXhwb3NlQXBpRG9jczogZmFsc2UsCiAgLy8gT3BlbiBBUEkgSlNPTiBEb2NzIGVuZHBvaW50LgogIGFwaURvY3NQYXRoOiAnL3YzL2FwaS1kb2NzJywKICAvLyBTZXQgbm9uLXJlcXVpcmVkIGZpZWxkcyBhcyBudWxsYWJsZSBieSBkZWZhdWx0CiAgbm90UmVxdWlyZWRBc051bGxhYmxlOiBmYWxzZSwKICAvLyBZb3UgY2FuIGN1c3RvbWl6ZSB5b3VyIFVJIG9wdGlvbnMuCiAgLy8geW91IGNhbiBleHRlbmQgc3dhZ2dlci11aS1leHByZXNzIGNvbmZpZy4gWW91IGNhbiBjaGVja291dCBhbiBleGFtcGxlIG9mIHRoaXMKICAvLyBpbiB0aGUgYGV4YW1wbGUvY29uZmlndXJhdGlvbi9zd2FnZ2VyT3B0aW9ucy5qc2AKICBzd2FnZ2VyVWlPcHRpb25zOiB7fSwKICAvLyBtdWx0aXBsZSBvcHRpb24gaW4gY2FzZSB5b3Ugd2FudCBtb3JlIHRoYXQgb25lIGluc3RhbmNlCiAgbXVsdGlwbGU6IHRydWUsCn07Cgpjb25zdCBhcHAgPSBleHByZXNzKCk7CmNvbnN0IFBPUlQgPSAzMDAwOwoKZXhwcmVzc0pTRG9jU3dhZ2dlcihhcHApKG9wdGlvbnMpOwoKLyoqCiAqIEdFVCAvYXBpL3YxCiAqIEBzdW1tYXJ5IFRoaXMgaXMgdGhlIHN1bW1hcnkgb2YgdGhlIGVuZHBvaW50CiAqIEByZXR1cm4ge29iamVjdH0gMjAwIC0gc3VjY2VzcyByZXNwb25zZQogKi8KYXBwLmdldCgnL2FwaS92MScsIChyZXEsIHJlcykgPT4gcmVzLmpzb24oewogIHN1Y2Nlc3M6IHRydWUsCn0pKTsKCmFwcC5saXN0ZW4oUE9SVCwgKCkgPT4gY29uc29sZS5sb2coYEV4YW1wbGUgYXBwIGxpc3RlbmluZyBhdCBodHRwOi8vbG9jYWxob3N0OiR7UE9SVH1gKSk7CmBgYAoKIyMgQmFzaWMgRXhhbXBsZXMKCjEuIEJhc2ljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KCmBgYGphdmFzY3JpcHQKY29uc3Qgb3B0aW9ucyA9IHsKICBpbmZvOiB7CiAgICB2ZXJzaW9uOiAnMS4wLjAnLAogICAgdGl0bGU6ICdBbGJ1bXMgc3RvcmUnLAogICAgbGljZW5zZTogewogICAgICBuYW1lOiAnTUlUJywKICAgIH0sCiAgfSwKICBzZWN1cml0eTogewogICAgQmFzaWNBdXRoOiB7CiAgICAgIHR5cGU6ICdodHRwJywKICAgICAgc2NoZW1lOiAnYmFzaWMnLAogICAgfSwKICB9LAogIGJhc2VEaXI6IF9fZGlybmFtZSwKICAvLyBHbG9iIHBhdHRlcm4gdG8gZmluZCB5b3VyIGpzZG9jIGZpbGVzIChtdWx0aXBsZSBwYXR0ZXJucyBjYW4gYmUgYWRkZWQgaW4gYW4gYXJyYXkpCiAgZmlsZXNQYXR0ZXJuOiAnLi8qKi8qLmpzJywKfTsKYGBgCgoyLiBDb21wb25lbnRzIGRlZmluaXRpb24KCmBgYGphdmFzY3JpcHQKLyoqCiAqIEEgc29uZyB0eXBlCiAqIEB0eXBlZGVmIHtvYmplY3R9IFNvbmcKICogQHByb3BlcnR5IHtzdHJpbmd9IHRpdGxlLnJlcXVpcmVkIC0gVGhlIHRpdGxlCiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcnRpc3QgLSBUaGUgYXJ0aXN0CiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB5ZWFyIC0gVGhlIHllYXIgLSBkb3VibGUKICovCmBgYAoKMy4gRW5kcG9pbnQgd2hpY2ggcmV0dXJucyBhIGBTb25nc2AgbW9kZWwgYXJyYXkgaW4gdGhlIHJlc3BvbnNlLgoKYGBgamF2YXNjcmlwdAovKioKICogR0VUIC9hcGkvdjEvYWxidW1zCiAqIEBzdW1tYXJ5IFRoaXMgaXMgdGhlIHN1bW1hcnkgb2YgdGhlIGVuZHBvaW50CiAqIEB0YWdzIGFsYnVtCiAqIEByZXR1cm4ge2FycmF5PFNvbmc+fSAyMDAgLSBzdWNjZXNzIHJlc3BvbnNlIC0gYXBwbGljYXRpb24vanNvbgogKi8KYXBwLmdldCgnL2FwaS92MS9hbGJ1bXMnLCAocmVxLCByZXMpID0+ICgKICByZXMuanNvbihbewogICAgdGl0bGU6ICdhYnVtIDEnLAogIH1dKQopKTsKYGBgCgozLiBFbmRwb2ludCBQVVQgd2l0aCBib2R5IGFuZCBwYXRoIHBhcmFtcyB3aGljaCByZXR1cm5zIGEgYFNvbmdzYCBtb2RlbCBhcnJheSBpbiB0aGUgcmVzcG9uc2UuCgpgYGBqYXZhc2NyaXB0Ci8qKgogKiBQVVQgL2FwaS92MS9hbGJ1bXMve2lkfQogKiBAc3VtbWFyeSBVcGRhdGUgYWxidW0KICogQHRhZ3MgYWxidW0KICogQHBhcmFtIHtzdHJpbmd9IG5hbWUucGF0aCAtIG5hbWUgcGFyYW0gZGVzY3JpcHRpb24KICogQHBhcmFtIHtTb25nfSByZXF1ZXN0LmJvZHkucmVxdWlyZWQgLSBzb25ncyBpbmZvCiAqIEByZXR1cm4ge2FycmF5PFNvbmc+fSAyMDAgLSBzdWNjZXNzIHJlc3BvbnNlIC0gYXBwbGljYXRpb24vanNvbgogKi8KYXBwLnB1dCgnL2FwaS92MS9hbGJ1bXMvOmlkJywgKHJlcSwgcmVzKSA9PiAoCiAgcmVzLmpzb24oW3sKICAgIHRpdGxlOiAnYWJ1bSAxJywKICB9XSkKKSk7CmBgYAoKNC4gQmFzaWMgZW5kcG9pbnQgZGVmaW5pdGlvbiB3aXRoIHRhZ3MsIHBhcmFtcyBhbmQgYmFzaWMgYXV0aGVudGljYXRpb24KCmBgYGphdmFzY3JpcHQKLyoqCiAqIEdFVCAvYXBpL3YxL2FsYnVtCiAqIEBzdW1tYXJ5IFRoaXMgaXMgdGhlIHN1bW1hcnkgb2YgdGhlIGVuZHBvaW50CiAqIEBzZWN1cml0eSBCYXNpY0F1dGgKICogQHRhZ3MgYWxidW0KICogQHBhcmFtIHtzdHJpbmd9IG5hbWUucXVlcnkucmVxdWlyZWQgLSBuYW1lIHBhcmFtIGRlc2NyaXB0aW9uCiAqIEByZXR1cm4ge29iamVjdH0gMjAwIC0gc3VjY2VzcyByZXNwb25zZSAtIGFwcGxpY2F0aW9uL2pzb24KICogQHJldHVybiB7b2JqZWN0fSA0MDAgLSBCYWQgcmVxdWVzdCByZXNwb25zZQogKi8KYXBwLmdldCgnL2FwaS92MS9hbGJ1bScsIChyZXEsIHJlcykgPT4gKAogIHJlcy5qc29uKHsKICAgIHRpdGxlOiAnYWJ1bSAxJywKICB9KQopKTsKYGBgCgo1LiBCYXNpYyBlbmRwb2ludCBkZWZpbml0aW9uIHdpdGggY29kZSBleGFtcGxlIGZvciByZXNwb25zZSBib2R5CgpgYGBqYXZhc2NyaXB0Ci8qKgogKiBHRVQgL2FwaS92MS9hbGJ1bXMKICogQHN1bW1hcnkgVGhpcyBpcyB0aGUgc3VtbWFyeSBvZiB0aGUgZW5kcG9pbnQKICogQHRhZ3MgYWxidW0KICogQHJldHVybiB7YXJyYXk8U29uZz59IDIwMCAtIHN1Y2Nlc3MgcmVzcG9uc2UgLSBhcHBsaWNhdGlvbi9qc29uCiAqIEBleGFtcGxlIHJlc3BvbnNlIC0gMjAwIC0gc3VjY2VzcyByZXNwb25zZSBleGFtcGxlCiAqIFsKICogICB7CiAqICAgICAidGl0bGUiOiAiQnVyeSB0aGUgbGlnaHQiLAogKiAgICAgImFydGlzdCI6ICJDYXNleSBFZHdhcmRzIGZ0LiBWaWN0b3IgQm9yYmEiLAogKiAgICAgInllYXIiOiAyMDIwCiAqICAgfQogKiBdCiAqLwphcHAuZ2V0KCcvYXBpL3YxL2FsYnVtcycsIChyZXEsIHJlcykgPT4gKAogIHJlcy5qc29uKFt7CiAgICB0aXRsZTogJ3RyYWNrIDEnLAogIH1dKQopKTsKYGBgCgpZb3UgY2FuIGZpbmQgbW9yZSBleGFtcGxlcyBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL0JSSUtFVi9leHByZXNzLWpzZG9jLXN3YWdnZXIvdHJlZS9tYXN0ZXIvZXhhbXBsZXMpLCBvciB2aXNpdCBvdXIgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vYnJpa2V2LmdpdGh1Yi5pby9leHByZXNzLWpzZG9jLXN3YWdnZXItZG9jcy8jLykuCgoKIyMgVmFsaWRhdG9yCgpXZSBkZXZlbG9wZWQgYSBuZXcgcGFja2FnZSB3b3JrcyBhcyBhIHZhbGlkYXRvciBvZiB5b3VyIEFQSSBlbmRwb2ludHMgYW5kIHRoZSBkb2N1bWVudGF0aW9uIHlvdSBjcmVhdGUgd2l0aCB0aGlzIHBhY2thZ2UuIFRoaXMgcGFja2FnZSBpcyBbZXhwcmVzcy1vYXMtdmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vQlJJS0VWL2V4cHJlc3Mtb2FzLXZhbGlkYXRvcikuCgoqKkV4YW1wbGUqKgoKSW5zdGFsbCB1c2luZyB0aGUgbm9kZSBwYWNrYWdlIHJlZ2lzdHJ5OgoKYGBgCm5wbSBpbnN0YWxsIC0tc2F2ZSBleHByZXNzLW9hcy12YWxpZGF0b3IKYGBgCgpXZSBoYXZlIHRvIHdhaXQgdW50aWwgd2UgaGF2ZSB0aGUgZnVsbCBzd2FnZ2VyIHNjaGVtYSB0byBpbml0aWF0ZSB0aGUgdmFsaWRhdG9yLgoKYGBganMKLy8gdmFsaWRhdG9yLmpzCmNvbnN0IHsgaW5pdCB9ID0gcmVxdWlyZSgnZXhwcmVzcy1vYXMtdmFsaWRhdG9yJyk7Cgpjb25zdCB2YWxpZGF0b3JzID0gaW5zdGFuY2UgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogIGluc3RhbmNlLm9uKCdmaW5pc2gnLCAoc3dhZ2dlckRlZikgPT4gewogICAgY29uc3QgeyB2YWxpZGF0ZVJlcXVlc3QsIHZhbGlkYXRlUmVzcG9uc2UgfSA9IGluaXQoc3dhZ2dlckRlZik7CiAgICByZXNvbHZlKHsgdmFsaWRhdGVSZXF1ZXN0LCB2YWxpZGF0ZVJlc3BvbnNlIH0pOwogIH0pOwoKICBpbnN0YW5jZS5vbignZXJyb3InLCAoZXJyb3IpID0+IHsKICAgIHJlamVjdChlcnJvcik7CiAgfSk7Cn0pOwoKbW9kdWxlLmV4cG9ydHMgPSB2YWxpZGF0b3JzOwoKYGBgCgpZb3UgY2FuIGNoZWNrIG91dCB0aGlzIGFsc28gaW4gb3VyIFtleGFtcGxlIGZvbGRlcl0oaHR0cHM6Ly9naXRodWIuY29tL0JSSUtFVi9leHByZXNzLWpzZG9jLXN3YWdnZXIvdHJlZS9tYXN0ZXIvZXhhbXBsZXMvdmFsaWRhdG9yKS4KCmBgYGpzCi8vIGluZGV4LmpzCmNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKCdleHByZXNzJyk7CmNvbnN0IGV4cHJlc3NKU0RvY1N3YWdnZXIgPSByZXF1aXJlKCdleHByZXNzLWpzZG9jLXN3YWdnZXInKTsKY29uc3QgdmFsaWRhdG9yID0gcmVxdWlyZSgnLi92YWxpZGF0b3InKTsKCmNvbnN0IG9wdGlvbnMgPSB7CiAgaW5mbzogewogICAgdmVyc2lvbjogJzEuMC4wJywKICAgIHRpdGxlOiAnQWxidW1zIHN0b3JlJywKICAgIGxpY2Vuc2U6IHsKICAgICAgbmFtZTogJ01JVCcsCiAgICB9LAogIH0sCiAgZmlsZXNQYXR0ZXJuOiAnLi8qKi5qcycsCiAgYmFzZURpcjogX19kaXJuYW1lLAp9OwoKY29uc3QgYXBwID0gZXhwcmVzcygpOwpjb25zdCBpbnN0YW5jZSA9IGV4cHJlc3NKU0RvY1N3YWdnZXIoYXBwKShvcHRpb25zKTsKCmNvbnN0IHNlcnZlckFwcCA9IGFzeW5jICgpID0+IHsKICBjb25zdCB7IHZhbGlkYXRlUmVxdWVzdCwgdmFsaWRhdGVSZXNwb25zZSB9ID0gYXdhaXQgdmFsaWRhdG9yKGluc3RhbmNlKTsKICBhcHAudXNlKGV4cHJlc3MudXJsZW5jb2RlZCh7IGV4dGVuZGVkOiB0cnVlIH0pKTsKICBhcHAudXNlKGV4cHJlc3MuanNvbigpKTsKICAvKioKICAgKiBBIHNvbmcKICAgKiBAdHlwZWRlZiB7b2JqZWN0fSBTb25nCiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHRpdGxlLnJlcXVpcmVkIC0gVGhlIHRpdGxlCiAgICogQHByb3BlcnR5IHtzdHJpbmd9IGFydGlzdCAtIFRoZSBhcnRpc3QKICAgKiBAcHJvcGVydHkge2ludGVnZXJ9IHllYXIgLSBUaGUgeWVhcgogICAqLwoKICAvKioKICAgKiBQT1NUIC9hcGkvdjEvc29uZ3MKICAgKiBAcGFyYW0ge1Nvbmd9IHJlcXVlc3QuYm9keS5yZXF1aXJlZCAtIHNvbmcgaW5mbwogICAqIEByZXR1cm4ge29iamVjdH0gMjAwIC0gc29uZyByZXNwb25zZQogICAqLwogIGFwcC5wb3N0KCcvYXBpL3YxL3NvbmdzJywgdmFsaWRhdGVSZXF1ZXN0KCksIChyZXEsIHJlcykgPT4gcmVzLnNlbmQoJ1lvdSBzYXZlIGEgc29uZyEnKSk7CgogIC8qKgogICAqIFBPU1QgL2FwaS92MS9uYW1lCiAgICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3QuYm9keS5yZXF1aXJlZCAtIG5hbWUgYm9keSBkZXNjcmlwdGlvbgogICAqIEByZXR1cm4ge29iamVjdH0gMjAwIC0gc29uZyByZXNwb25zZQogICAqLwogIGFwcC5wb3N0KCcvYXBpL3YxL25hbWUnLCAocmVxLCByZXMsIG5leHQpID0+IHsKICAgIHRyeSB7CiAgICAgIC8vIFZhbGlkYXRlIHJlc3BvbnNlCiAgICAgIHZhbGlkYXRlUmVzcG9uc2UoJ0Vycm9yIHN0cmluZycsIHJlcSk7CiAgICAgIHJldHVybiByZXMuc2VuZCgnSGVsbG8gV29ybGQhJyk7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICByZXR1cm4gbmV4dChlcnJvcik7CiAgICB9CiAgfSk7CgogIC8qKgogICAqIEdFVCAvYXBpL3YxL2F1dGhvcnMKICAgKiBAc3VtbWFyeSBUaGlzIGlzIHRoZSBzdW1tYXJ5IG9yIGRlc2NyaXB0aW9uIG9mIHRoZSBlbmRwb2ludAogICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lLnF1ZXJ5LnJlcXVpcmVkIC0gbmFtZSBwYXJhbSBkZXNjcmlwdGlvbiAtIGVudW06dHlwZTEsdHlwZTIKICAgKiBAcGFyYW0ge2FycmF5PHN0cmluZz59IGxpY2Vuc2UucXVlcnkgLSBuYW1lIHBhcmFtIGRlc2NyaXB0aW9uCiAgICogQHJldHVybiB7b2JqZWN0fSAyMDAgLSBzdWNjZXNzIHJlc3BvbnNlIC0gYXBwbGljYXRpb24vanNvbgogICAqLwogIGFwcC5nZXQoJy9hcGkvdjEvYXV0aG9ycycsIHZhbGlkYXRlUmVxdWVzdCh7IGhlYWRlcnM6IGZhbHNlIH0pLCAocmVxLCByZXMpID0+ICgKICAgIHJlcy5qc29uKFt7CiAgICAgIHRpdGxlOiAnYWxidW0gMScsCiAgICB9XSkKICApKTsKCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzCiAgYXBwLnVzZSgoZXJyLCByZXEsIHJlcywgbmV4dCkgPT4gewogICAgcmVzLnN0YXR1cyhlcnIuc3RhdHVzKS5qc29uKGVycik7CiAgfSk7CgogIHJldHVybiBhcHA7Cn07Cgpjb25zdCBQT1JUID0gcHJvY2Vzcy5lbnYuUE9SVCB8fCA0MDAwOwoKc2VydmVyQXBwKCkKICAudGhlbihhcHAgPT4gCiAgICBhcHAubGlzdGVuKFBPUlQsICgpID0+CiAgICAgIGNvbnNvbGUubG9nKGBMaXN0ZW5pbmcgUE9SVDogJHtQT1JUfWApCiAgICApKQogIC5jYXRjaCgoZXJyKSA9PiB7CiAgICBjb25zb2xlLmVycm9yKGVycik7CiAgICBwcm9jZXNzLmV4aXQoMSk7CiAgfSk7CmBgYAoKWW91IGNhbiB2aXNpdCBvdXIgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vYnJpa2V2LmdpdGh1Yi5pby9leHByZXNzLWpzZG9jLXN3YWdnZXItZG9jcy8jL3ZhbGlkYXRvcikuCgojIyBDb250cmlidXRvcnMg4pyoCgo8IS0tIEFMTC1DT05UUklCVVRPUlMtTElTVDpTVEFSVCAtIERvIG5vdCByZW1vdmUgb3IgbW9kaWZ5IHRoaXMgc2VjdGlvbiAtLT4KPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CjwhLS0gbWFya2Rvd25saW50LWRpc2FibGUgLS0+Cjx0YWJsZT4KICA8dGJvZHk+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2JyaTA2Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMC5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNDQzNTIyMz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQnJpYW0gTWFydGluZXogRXNjb2JhciIvPjxiciAvPjxzdWI+PGI+QnJpYW0gTWFydGluZXogRXNjb2JhcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0JSSUtFVi9leHByZXNzLWpzZG9jLXN3YWdnZXIvY29tbWl0cz9hdXRob3I9YnJpMDYiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9ram1lc2MiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEyNjg1MDUzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJLZXZpbiBKdWxpw6FuIE1hcnTDrW5leiBFc2NvYmFyIi8+PGJyIC8+PHN1Yj48Yj5LZXZpbiBKdWxpw6FuIE1hcnTDrW5leiBFc2NvYmFyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQlJJS0VWL2V4cHJlc3MtanNkb2Mtc3dhZ2dlci9jb21taXRzP2F1dGhvcj1rZXZpbmNjYnNnIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ob29uZ2EiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwNzA4OTI3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJIZXVuZy15ZW9uIE9oIi8+PGJyIC8+PHN1Yj48Yj5IZXVuZy15ZW9uIE9oPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQlJJS0VWL2V4cHJlc3MtanNkb2Mtc3dhZ2dlci9jb21taXRzP2F1dGhvcj1ob29uZ2EiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0xvbmVseVByaW5jZXNzIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMS5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNzY3MzMxNz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU2FyYSBIZXJuw6FuZGV6Ii8+PGJyIC8+PHN1Yj48Yj5TYXJhIEhlcm7DoW5kZXo8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9CUklLRVYvZXhwcmVzcy1qc2RvYy1zd2FnZ2VyL2NvbW1pdHM/YXV0aG9yPUxvbmVseVByaW5jZXNzIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly9zZXJ2YXRqLm1lIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMC5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNTIxNDg1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJKb3NlcCBTZXJ2YXQiLz48YnIgLz48c3ViPjxiPkpvc2VwIFNlcnZhdDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0JSSUtFVi9leHByZXNzLWpzZG9jLXN3YWdnZXIvY29tbWl0cz9hdXRob3I9c2VydmF0aiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGh1eWR4NTUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0Njk5ODQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik5pY2sgRG9uZyIvPjxiciAvPjxzdWI+PGI+TmljayBEb25nPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQlJJS0VWL2V4cHJlc3MtanNkb2Mtc3dhZ2dlci9jb21taXRzP2F1dGhvcj10aHV5ZHg1NSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vU3Rvc2l1Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMS5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMDI1MjA2Mz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQWxla3NhbmRlciBTdMOzcyIvPjxiciAvPjxzdWI+PGI+QWxla3NhbmRlciBTdMOzczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0JSSUtFVi9leHByZXNzLWpzZG9jLXN3YWdnZXIvY29tbWl0cz9hdXRob3I9U3Rvc2l1IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va2RhbmtlcnQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ2NDg5NjI0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJLamVsbCBEYW5rZXJ0Ii8+PGJyIC8+PHN1Yj48Yj5LamVsbCBEYW5rZXJ0PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQlJJS0VWL2V4cHJlc3MtanNkb2Mtc3dhZ2dlci9jb21taXRzP2F1dGhvcj1rZGFua2VydCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vanVsaWVuZHUxMSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczAuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTg3Mzk0NDI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Imp1bGllbmR1MTEiLz48YnIgLz48c3ViPjxiPmp1bGllbmR1MTE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9CUklLRVYvZXhwcmVzcy1qc2RvYy1zd2FnZ2VyL2NvbW1pdHM/YXV0aG9yPWp1bGllbmR1MTEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9tZS5pbyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80NTczMT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTW9oYW1lZCBNZWFiZWQiLz48YnIgLz48c3ViPjxiPk1vaGFtZWQgTWVhYmVkPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQlJJS0VWL2V4cHJlc3MtanNkb2Mtc3dhZ2dlci9jb21taXRzP2F1dGhvcj1tZWFiZWQiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29mYXJ1a2F5ZGluIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMyNzg4OTYzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJGYXJ1ayBBeWTEsW4iLz48YnIgLz48c3ViPjxiPkZhcnVrIEF5ZMSxbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0JSSUtFVi9leHByZXNzLWpzZG9jLXN3YWdnZXIvY29tbWl0cz9hdXRob3I9b2ZhcnVrYXlkaW4iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2RhaGxtbyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMzA3NjAyNj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRGFobG1vIi8+PGJyIC8+PHN1Yj48Yj5EYWhsbW88L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9CUklLRVYvZXhwcmVzcy1qc2RvYy1zd2FnZ2VyL2NvbW1pdHM/YXV0aG9yPWRhaGxtbyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ2FuZGF6Z3VsIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwODg1MD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQ2FybG9zIFJhdmVsbyIvPjxiciAvPjxzdWI+PGI+Q2FybG9zIFJhdmVsbzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0JSSUtFVi9leHByZXNzLWpzZG9jLXN3YWdnZXIvY29tbWl0cz9hdXRob3I9Z2FuZGF6Z3VsIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wYXVsaXNoIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE3NjIwMzI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlBhdWwgSXNoZW5pbiIvPjxiciAvPjxzdWI+PGI+UGF1bCBJc2hlbmluPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQlJJS0VWL2V4cHJlc3MtanNkb2Mtc3dhZ2dlci9jb21taXRzP2F1dGhvcj1wYXVsaXNoIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2JpbmduZXIiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzU0NTMzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTYW0gQmluZ25lciIvPjxiciAvPjxzdWI+PGI+U2FtIEJpbmduZXI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9CUklLRVYvZXhwcmVzcy1qc2RvYy1zd2FnZ2VyL2NvbW1pdHM/YXV0aG9yPXNiaW5nbmVyIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vdXNlcnMvNTA1OTY1Ny9hbGV4YW5kZXItc3Rhcm9zZWxza3kiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzQxMDI5Njk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFsZXhhbmRlciBTdGFyb3NlbHNreSIvPjxiciAvPjxzdWI+PGI+QWxleGFuZGVyIFN0YXJvc2Vsc2t5PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQlJJS0VWL2V4cHJlc3MtanNkb2Mtc3dhZ2dlci9jb21taXRzP2F1dGhvcj1hbGV4c3Rhcm9zZWxza3kiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL2pvZWxhYnJhaGFtc3Nvbi5jb20iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjE4OTg2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJKb2VsIEFicmFoYW1zc29uIi8+PGJyIC8+PHN1Yj48Yj5Kb2VsIEFicmFoYW1zc29uPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQlJJS0VWL2V4cHJlc3MtanNkb2Mtc3dhZ2dlci9jb21taXRzP2F1dGhvcj1qb2VsYWJyYWhhbXNzb24iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL01ha2FrV2FzVGFrZW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE3ODk2MzU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1hcmt1cyBNb2x0a2UiLz48YnIgLz48c3ViPjxiPk1hcmt1cyBNb2x0a2U8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9CUklLRVYvZXhwcmVzcy1qc2RvYy1zd2FnZ2VyL2NvbW1pdHM/YXV0aG9yPU1ha2FrV2FzVGFrZW4iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+Cgo8IS0tIG1hcmtkb3dubGludC1yZXN0b3JlIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+Cgo8IS0tIEFMTC1DT05UUklCVVRPUlMtTElTVDpFTkQgLS0+CgpUaGlzIHByb2plY3QgZm9sbG93cyB0aGUgW2FsbC1jb250cmlidXRvcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbGwtY29udHJpYnV0b3JzL2FsbC1jb250cmlidXRvcnMpIHNwZWNpZmljYXRpb24uIENvbnRyaWJ1dGlvbnMgb2YgYW55IGtpbmQgd2VsY29tZSEK readmeEtag: '"9434a33d59abea965d65ea63bdf053144581e04c"' readmeLastModified: Mon, 23 Oct 2023 11:36:03 GMT repositoryId: 266211454 description: Swagger OpenAPI 3.x generator created: '2020-05-22T21:31:03Z' updated: '2026-01-22T20:03:25Z' language: JavaScript archived: false stars: 224 watchers: 3 forks: 31 owner: BRIKEV logo: https://avatars.githubusercontent.com/u/59850028?v=4 license: MIT repoEtag: '"8bc9e64b58796bc18a26c3ed23762b29549e12af145f7f60efa759f53333fe46"' repoLastModified: Thu, 22 Jan 2026 20:03:25 GMT foundInMaster: true category: Testing id: af37c15464a7e49379863279ecd6694b - source: openapi3 tags repository: https://github.com/wi2l/fizz v3: true id: 04bf0d13931d22601cceca157cd8cccb repositoryMetadata: base64Readme: >- CjxoMSBhbGlnbj0iY2VudGVyIj5GaXp6PC9oMT4KPHAgYWxpZ249ImNlbnRlciI+PGltZyBzcmM9ImltYWdlcy9sZW1vbi5wbmciIGhlaWdodD0iMjAwcHgiIHdpZHRoPSJhdXRvIiBhbHQ9IkdpbiBGaXp6Ij48L3A+PHAgYWxpZ249ImNlbnRlciI+Rml6eiBpcyBhIHdyYXBwZXIgZm9yIDxzdHJvbmc+R2luPC9zdHJvbmc+IGJhc2VkIG9uIDxzdHJvbmc+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2xvb3Bmei9nYWRnZXRvL3RyZWUvbWFzdGVyL3RvbmljIj5nYWRnZXRvL3RvbmljPC9hPjwvc3Ryb25nPi48L3A+CjxwIGFsaWduPSJjZW50ZXIiPkl0IGdlbmVyYXRlcyB3cmFwcGluZyBnaW4tY29tcGF0aWJsZSBoYW5kbGVycyB0aGF0IGRvIGFsbCB0aGUgcmVwZXRpdGl2ZSB3b3JrIGFuZCB3cmFwIHRoZSBjYWxsIHRvIHlvdXIgaGFuZGxlcnMuIEl0IGNhbiBhbHNvIGdlbmVyYXRlcyBhbiA8aT5hbG1vc3Q8L2k+IGNvbXBsZXRlIDxzdHJvbmc+T3BlbkFQSSAzPC9zdHJvbmc+IHNwZWNpZmljYXRpb24gb2YgeW91ciBBUEkuPC9wPgo8cCBhbGlnbj0iY2VudGVyIj4KICAgPGEgaHJlZj0iaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vd0kyTC9maXp6P3RhYj1kb2MiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YXRpYy92MT9sYWJlbD1nb2RldiZtZXNzYWdlPXJlZmVyZW5jZSZjb2xvcj0wMGFkZDgmbG9nbz1nbyI+PC9hPgogICA8YSBocmVmPSJodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L3dJMkwvZml6eiI+PGltZyBzcmM9Imh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL3dJMkwvZml6eiI+PC9hPgogICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vd0kyTC9maXp6L2FjdGlvbnMiPjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vd0kyTC9maXp6L3dvcmtmbG93cy9DSS9iYWRnZS5zdmciPjwvYT4KICAgPGEgaHJlZj0iaHR0cHM6Ly9jb2RlY292LmlvL2doL3dJMkwvZml6eiI+PGltZyBzcmM9Imh0dHBzOi8vY29kZWNvdi5pby9naC93STJML2ZpenovYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmciLz48L2E+CiAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS93STJML2ZpenovcmVsZWFzZXMiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi92L3RhZy93STJML2Zpeno/Y29sb3I9Ymx1ZXZpb2xldCZsYWJlbD12ZXJzaW9uJnNvcnQ9c2VtdmVyIj48L2E+CiAgIDxhIGhyZWY9IkxJQ0VOU0UiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWJsdWUuc3ZnIj48L2E+CiAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hdmVsaW5vL2F3ZXNvbWUtZ28iPjxpbWcgc3JjPSJodHRwczovL2F3ZXNvbWUucmUvbWVudGlvbmVkLWJhZGdlLnN2ZyI+PC9hPgo8YnI+CjwvcD4KCi0tLQoKIyMjIEdldHRpbmcgc3RhcnRlZAoKVG8gY3JlYXRlIGEgRml6eiBpbnN0YW5jZSwgeW91IGNhbiBwYXNzIGFuIGV4aXN0aW5nICpHaW4qIGVuZ2luZSB0byBgZml6ei5OZXdGcm9tRW5naW5lYCwgb3IgdXNlIGBmaXp6Lk5ld2AgdGhhdCB3aWxsIHVzZSBhIG5ldyBkZWZhdWx0ICpHaW4qIGVuZ2luZS4KCmBgYGdvCmVuZ2luZSA6PSBnaW4uRGVmYXVsdCgpCmVuZ2luZS5Vc2UoLi4uKSAvLyByZWdpc3RlciBnbG9iYWwgbWlkZGxld2FyZXMKCmYgOj0gZml6ei5OZXdGcm9tRW5naW5lKGVuZ2luZSkKYGBgCgpBIEZpenogaW5zdGFuY2UgaW1wbGVtZW50cyB0aGUgYGh0dHAuSGFuZGxlckZ1bmNgIGludGVyZmFjZSwgd2hpY2ggbWVhbnMgaXQgY2FuIGJlIHVzZWQgYXMgdGhlIGJhc2UgaGFuZGxlciBvZiB5b3VyIEhUVFAgc2VydmVyLgpgYGBnbwpzcnYgOj0gJmh0dHAuU2VydmVyewogICBBZGRyOiAgICAiOjQyNDIiLAogICBIYW5kbGVyOiBmLAp9CnNydi5MaXN0ZW5BbmRTZXJ2ZSgpCmBgYAoKIyMjIEhhbmRsZXJzCgpGaXp6IGFic3RyYWN0cyB0aGUgYEdFVGAsIGBQT1NUYCwgYFBVVGAsIGBQQVRDSGAsIGBERUxFVEVgLCBgT1BUSU9OU2AsIGBIRUFEYCBhbmQgYFRSQUNFYCBtZXRob2RzIG9mIGEgKkdpbiogZW5naW5lLiBUaGVzZSBmdW5jdGlvbnMgYWNjZXB0IGEgdmFyaWFkaWMgbGlzdCBvZiBoYW5kbGVycyBhcyB0aGUgbGFzdCBwYXJhbWV0ZXIsIGJ1dCBzaW5jZSBGaXp6IHJlbGllcyBvbiAqdG9uaWMqIHRvIHJldHJpZXZlIHRoZSBpbmZvcm1hdGlvbnMgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgdGhlICpPcGVuQVBJKiBzcGVjaWZpY2F0aW9uIG9mIHRoZSBvcGVyYXRpb24sICoqb25seSBvbmUgb2YgdGhlIGhhbmRsZXJzIHJlZ2lzdGVyZWQgTVVTVCBiZSB3cmFwcGVkIHdpdGggVG9uaWMqKi4KCkluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgdGhlIGBCYXJIYW5kbGVyYCBpcyBhIHNpbXBsZSBtaWRkbGV3YXJlIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBiZWZvcmUgdGhlIGBGb29IYW5kbGVyYCwgYnV0IHRoZSBnZW5lcmF0b3Igd2lsbCB1c2UgdGhlIGlucHV0L291dHB1dCB0eXBlIG9mIHRoZSBgRm9vSGFuZGxlcmAgdG8gZ2VuZXJhdGUgdGhlIHNwZWNpZmljYXRpb24gb2YgdGhlIG9wZXJhdGlvbi4KCmBgYGdvCmZ1bmMgQmFySGFuZGxlcihjICpnaW4uQ29udGV4dCkgeyAuLi4gfQpmdW5jIEZvb0hhbmRsZXIoKmdpbi5Db250ZXh0LCAqRm9vKSAoKkJhciwgZXJyb3IpIHsgLi4uIH0KCmZpenogOj0gZml6ei5OZXcoKQpmaXp6LkdFVCgiL2Zvby9iYXIiLCBuaWwsIEJhckhhbmRsZXIsIHRvbmljLkhhbmRsZXIoRm9vSGFuZGxlciwgMjAwKSkKYGBgCgpIb3dldmVyLCByZWdpc3RlcmluZyBvbmx5IHN0YW5kYXJkIGhhbmRsZXJzIHRoYXQgZm9sbG93IHRoZSBgZ2luLkhhbmRsZXJGdW5jYCBzaWduYXR1cmUgaXMgYWNjZXB0ZWQsIGJ1dCB0aGUgKk9wZW5BUEkqIGdlbmVyYXRvciB3aWxsIGlnbm9yZSB0aGUgb3BlcmF0aW9uIGFuZCBpdCB3b24ndCBhcHBlYXIgaW4gdGhlIHNwZWNpZmljYXRpb24uCgojIyMgT3BlcmF0aW9uIGluZm9ybWF0aW9ucwoKVG8gZW5yaWNoIGFuIG9wZXJhdGlvbiwgeW91IGNhbiBwYXNzIGEgbGlzdCBvZiBvcHRpb25hbCBgT3BlcmF0aW9uT3B0aW9uYCBmdW5jdGlvbnMgYXMgdGhlIHNlY29uZCBwYXJhbWV0ZXJzIG9mIHRoZSBgR0VUYCwgYFBPU1RgLCBgUFVUYCwgYFBBVENIYCwgYERFTEVURWAsIGBPUFRJT05TYCBhbmQgYEhFQURgIG1ldGhvZHMuCgpgYGBnbwovLyBTZXQgdGhlIGRlZmF1bHQgcmVzcG9uc2UgZGVzY3JpcHRpb24uCi8vIEEgZGVmYXVsdCBzdGF0dXMgdGV4dCB3aWxsIGJlIGNyZWF0ZWQgZnJvbSB0aGUgY29kZSBpZiBpdCBpcyBvbWl0dGVkLgpmaXp6LlN0YXR1c0Rlc2NyaXB0aW9uKGRlc2Mgc3RyaW5nKQoKLy8gU2V0IHRoZSBzdW1tYXJ5IG9mIHRoZSBvcGVyYXRpb24uCmZpenouU3VtbWFyeShzdW1tYXJ5IHN0cmluZykKZml6ei5TdW1tYXJ5Zihmb3JtYXQgc3RyaW5nLCBhIC4uLmludGVyZmFjZXt9KQoKLy8gU2V0IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgb3BlcmF0aW9uLgpmaXp6LkRlc2NyaXB0aW9uKGRlc2Mgc3RyaW5nKQpmaXp6LkRlc2NyaXB0aW9uZihmb3JtYXQgc3RyaW5nLCBhIC4uLmludGVyZmFjZXt9KQoKLy8gT3ZlcnJpZGUgdGhlIElEIG9mIHRoZSBvcGVyYXRpb24uCi8vIE11c3QgYmUgYSB1bmlxdWUgc3RyaW5nIHVzZWQgdG8gaWRlbnRpZnkgdGhlIG9wZXJhdGlvbiBhbW9uZwovLyBhbGwgb3BlcmF0aW9ucyBkZXNjcmliZWQgaW4gdGhlIEFQSS4KZml6ei5JRChpZCBzdHJpbmcpCgovLyBNYXJrIHRoZSBvcGVyYXRpb24gYXMgZGVwcmVjYXRlZC4KZml6ei5EZXByZWNhdGVkKGRlcHJlY2F0ZWQgYm9vbCkKCi8vIEFkZCBhbiBhZGRpdGlvbmFsIHJlc3BvbnNlIHRvIHRoZSBvcGVyYXRpb24uCi8vIFRoZSBleGFtcGxlIGFyZ3VtZW50IHdpbGwgcG9wdWxhdGUgYSBzaW5nbGUgZXhhbXBsZSBpbiB0aGUgcmVzcG9uc2Ugc2NoZW1hLgovLyBGb3IgcG9wdWxhdGluZyBtdWx0aXBsZSBleGFtcGxlcywgdXNlIGZpenouUmVzcG9uc2VXaXRoRXhhbXBsZXMuCi8vIE5vdGljZSB0aGF0IGV4YW1wbGUgYW5kIGV4YW1wbGVzIGZpZWxkcyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLgovLyBtb2RlbCwgaGVhZGVyLCBhbmQgZXhhbXBsZSBtYXkgYmUgYG5pbGAuCmZpenouUmVzcG9uc2Uoc3RhdHVzQ29kZSwgZGVzYyBzdHJpbmcsIG1vZGVsIGludGVyZmFjZXt9LCBoZWFkZXJzIFtdKlJlc3BvbnNlSGVhZGVyLCBleGFtcGxlIGludGVyZmFjZXt9KQoKLy8gUmVzcG9uc2VXaXRoRXhhbXBsZXMgaXMgYSB2YXJpYW50IG9mIFJlc3BvbnNlIHRoYXQgc3VwcG9ydHMgcHJvdmlkaW5nIG11bHRpcGxlIGV4YW1wbGVzLgovLyBFeGFtcGxlcyBhcmd1bWVudCB3aWxsIHBvcHVsYXRlIG11bHRpcGxlIGV4YW1wbGVzIGluIHRoZSByZXNwb25zZSBzY2hlbWEuCi8vIEZvciBwb3B1bGF0aW5nIGEgc2luZ2xlIGV4YW1wbGUsIHVzZSBmaXp6LlJlc3BvbnNlLgovLyBOb3RpY2UgdGhhdCBleGFtcGxlIGFuZCBleGFtcGxlcyBmaWVsZHMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KLy8gbW9kZWwsIGhlYWRlciwgYW5kIGV4YW1wbGVzIG1heSBiZSBgbmlsYC4KZml6ei5SZXNwb25zZVdpdGhFeGFtcGxlcyhzdGF0dXNDb2RlLCBkZXNjIHN0cmluZywgbW9kZWwgaW50ZXJmYWNle30sIGhlYWRlcnMgW10qUmVzcG9uc2VIZWFkZXIsIGV4YW1wbGVzIG1hcFtzdHJpbmddaW50ZXJmYWNle30pCgovLyBBZGQgYW4gYWRkaXRpb25hbCBoZWFkZXIgdG8gdGhlIGRlZmF1bHQgcmVzcG9uc2UuCi8vIE1vZGVsIGNhbiBiZSBvZiBhbnkgdHlwZSwgYW5kIG1heSBhbHNvIGJlIGBuaWxgLAovLyBpbiB3aGljaCBjYXNlIHRoZSBzdHJpbmcgdHlwZSB3aWxsIGJlIHVzZWQgYXMgZGVmYXVsdC4KZml6ei5IZWFkZXIobmFtZSwgZGVzYyBzdHJpbmcsIG1vZGVsIGludGVyZmFjZXt9KQoKLy8gT3ZlcnJpZGUgdGhlIGJpbmRpbmcgbW9kZWwgb2YgdGhlIG9wZXJhdGlvbi4KZml6ei5JbnB1dE1vZGVsKG1vZGVsIGludGVyZmFjZXt9KQoKLy8gT3ZlcnJpZGVzIHRoZSB0b3AtbGV2ZWwgc2VjdXJpdHkgcmVxdWlyZW1lbnQgb2YgYW4gb3BlcmF0aW9uLgovLyBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBtb3JlIHRoYW4gb25jZSB0byBhZGQgc2V2ZXJhbCByZXF1aXJlbWVudHMuCmZpenouU2VjdXJpdHkoc2VjdXJpdHkgKm9wZW5hcGkuU2VjdXJpdHlSZXF1aXJlbWVudCkKCi8vIEFkZCBhbiBlbXB0eSBzZWN1cml0eSByZXF1aXJlbWVudCB0byB0aGlzIG9wZXJhdGlvbiB0byBtYWtlIG90aGVyIHNlY3VyaXR5IHJlcXVpcmVtZW50cyBvcHRpb25hbC4KZml6ei5XaXRoT3B0aW9uYWxTZWN1cml0eSgpCgovLyBSZW1vdmUgYW55IHRvcC1sZXZlbCBzZWN1cml0eSByZXF1aXJlbWVudHMgZm9yIHRoaXMgb3BlcmF0aW9uLgpmaXp6LldpdGhvdXRTZWN1cml0eSgpCgovLyBBZGQgYSBDb2RlIFNhbXBsZSB0byB0aGUgb3BlcmF0aW9uLgpmaXp6LlhDb2RlU2FtcGxlKGNvZGVTYW1wbGUgKlhDb2RlU2FtcGxlKQoKLy8gTWFyayB0aGUgb3BlcmF0aW9uIGFzIGludGVybmFsLiBUaGUgeC1pbnRlcm5hbCBmbGFnIGlzIGludGVycHJldGVkIGJ5IHRoaXJkLXBhcnR5IHRvb2xzIGFuZCBpdCBvbmx5IGltcGFjdHMgdGhlIHZpc3VhbCBkb2N1bWVudGF0aW9uIHJlbmRlcmluZy4KZml6ei5YSW50ZXJuYWwoKQpgYGAKCioqTk9URVM6KioKKiBgZml6ei5JbnB1dE1vZGVsYCBhbGxvd3MgdG8gb3ZlcnJpZGUgdGhlIG9wZXJhdGlvbiBpbnB1dCByZWdhcmRsZXNzIG9mIGhvdyB0aGUgaGFuZGxlciBpbXBsZW1lbnRhdGlvbiByZWFsbHkgYmluZHMgdGhlIHJlcXVlc3QgcGFyYW1ldGVycy4gSXQgaXMgdGhlIGRldmVsb3BlciByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgYmluZGluZyBtYXRjaGVzIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24uCiogVGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZSBgZml6ei5SZXBvbnNlYCBtZXRob2Qgd2hpY2ggcmVwcmVzZW50cyBhbiBIVFRQIHN0YXR1cyBjb2RlIGlzIG9mIHR5cGUgKnN0cmluZyogYmVjYXVzZSB0aGUgc3BlYyBhY2NlcHQgdGhlIHZhbHVlIGBkZWZhdWx0YC4gU2VlIHRoZSBbUmVzcG9uc2VzIE9iamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQjcmVzcG9uc2VzT2JqZWN0KSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9ucy4KClRvIGhlbHAgeW91IGRlY2xhcmUgYWRkaXRpb25hbCBoZWFkZXJzLCBwcmVkZWZpbmVkIHZhcmlhYmxlcyBmb3IgR28gcHJpbWl0aXZlcyB0eXBlcyB0aGF0IHlvdSBjYW4gdXNlIGFzIHRoZSB0aGlyZCBhcmd1bWVudCBvZiB0aGUgYGZpenouSGVhZGVyYCBtZXRob2QgYXJlIGF2YWlsYWJsZToKYGBgZ28KdmFyICgKICAgSW50ZWdlciAgaW50MzIKICAgTG9uZyAgICAgaW50NjQKICAgRmxvYXQgICAgZmxvYXQzMgogICBEb3VibGUgICBmbG9hdDY0CiAgIFN0cmluZyAgIHN0cmluZwogICBCeXRlICAgICBbXWJ5dGUKICAgQmluYXJ5ICAgW11ieXRlCiAgIEJvb2xlYW4gIGJvb2wKICAgRGF0ZVRpbWUgdGltZS5UaW1lCikKYGBgCgojIyMgR3JvdXBzCgpFeGFjdGx5IGxpa2UgeW91IHdvdWxkIGRvIHdpdGggKkdpbiosIHlvdSBjYW4gY3JlYXRlIGEgZ3JvdXAgb2Ygcm91dGVzIHVzaW5nIHRoZSBtZXRob2QgYEdyb3VwYC4gVW5saWtlICpHaW4qIG93biBtZXRob2QsIEZpenoncyBvbmUgdGFrZXMgdHdvIG90aGVyIG9wdGlvbmFsIGFyZ3VtZW50cywgYG5hbWVgIGFuZCBgZGVzY3JpcHRpb25gLiBUaGVzZSBwYXJhbWV0ZXJzIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgYSB0YWcgaW4gdGhlICoqT3BlbkFQSSoqIHNwZWNpZmljYXRpb24gdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIHRoZSByb3V0ZXMgYWRkZWQgdG8gdGhlIGdyb3VwLgoKYGBgZ28KZ3JwIDo9IGYuR3JvdXAoIi9zdWJwYXRoIiwgIk15R3JvdXAiLCAiR3JvdXAgZGVzY3JpcHRpb24iLCBtaWRkbGV3YXJlcy4uLikKYGBgCklmIHRoZSBgbmFtZWAgcGFyYW1ldGVyIGlzIGVtcHR5LCB0aGUgdGFnIHdvbid0IGJlIGNyZWF0ZWQgYW5kIGl0IHdvbid0IGJlIHVzZWQuCgpTdWJncm91cHMgb2Ygc3ViZ3JvdXBzIGNhbiBiZSBjcmVhdGVkIHRvIGFuIGluZmluaXRlIGRlcHRoLCBhY2NvcmRpbmcgeW8geW91ciBuZWVkcy4KCmBgYGdvCmZvbyA6PSBmLkdyb3VwKCIvZm9vIiwgIkZvbyIsICJGb28gZ3JvdXAiKQoKLy8gYWxsIHJvdXRlcyByZWdpc3RlcmVkIG9uIGdyb3VwIGJhciB3aWxsIGhhdmUKLy8gYSByZWxhdGl2ZSBwYXRoIHN0YXJ0aW5nIHdpdGggL2Zvby9iYXIKYmFyIDo9IGYuR3JvdXAoIi9iYXIiLCAiQmFyIiwgIkJhciBncm91cCIpCgovLyAvZm9vL2Jhci97YmFySUR9CmJhci5HRVQoIi86YmFySUQiLCBuaWwsIHRvbmljLkhhbmRsZXIoTXlCYXJIYW5kbGVyLCAyMDApKQpgYGAKClRoZSBgVXNlYCBtZXRob2QgY2FuIGJlIHVzZWQgd2l0aCBncm91cHMgdG8gcmVnaXN0ZXIgbWlkZGxld2FyZXMgYWZ0ZXIgdGhlaXIgY3JlYXRpb24uCmBgYGdvCmdycC5Vc2UobWlkZGxld2FyZTEsIG1pZGRsZXdhcmUyLCAuLi4pCmBgYAoKIyMgVG9uaWMKClRoZSBzdWJwYWNrYWdlICp0b25pYyogaGFuZGxlcyBwYXRoL3F1ZXJ5L2hlYWRlci9ib2R5IHBhcmFtZXRlcnMgYmluZGluZyBpbiBhIHNpbmdsZSBjb25zb2xpZGF0ZWQgaW5wdXQgb2JqZWN0IHdoaWNoIGFsbG93cyB5b3UgdG8gcmVtb3ZlIGFsbCB0aGUgYm9pbGVycGxhdGUgY29kZSB0aGF0IHJldHJpZXZlcyBhbmQgdGVzdHMgdGhlIHByZXNlbmNlIG9mIHZhcmlvdXMgcGFyYW1ldGVycy4gVGhlICpPcGVuQVBJKiBnZW5lcmF0b3IgbWFrZSB1c2Ugb2YgdGhlIGlucHV0L291dHB1dCB0eXBlcyBpbmZvcm1hdGlvbnMgb2YgYSB0b25pYy13cmFwcGVkIGhhbmRsZXIgcmVwb3J0ZWQgYnkgKnRvbmljKiB0byBkb2N1bWVudCB0aGUgb3BlcmF0aW9uIGluIHRoZSBzcGVjaWZpY2F0aW9uLgoKVGhlIGhhbmRsZXJzIHdyYXBwZWQgd2l0aCAqdG9uaWMqIG11c3QgZm9sbG93IHRoZSBmb2xsb3dpbmcgc2lnbmF0dXJlLgpgYGBnbwpmdW5jKCpnaW4uQ29udGV4dCwgW2lucHV0IG9iamVjdCBwdHJdKSAoW291dHB1dCBvYmplY3RdLCBlcnJvcikKYGBgCklucHV0IGFuZCBvdXRwdXQgb2JqZWN0cyBhcmUgYm90aCBvcHRpb25hbCwgYXMgc3VjaCwgdGhlIG1pbmltYWwgYWNjZXB0ZWQgc2lnbmF0dXJlIGlzOgpgYGBnbwpmdW5jKCpnaW4uQ29udGV4dCkgZXJyb3IKYGBgCgpUbyB3cmFwIGEgaGFuZGxlciB3aXRoICp0b25pYyosIHVzZSB0aGUgYHRvbmljLkhhbmRsZXJgIG1ldGhvZC4gSXQgdGFrZXMgYSBmdW5jdGlvbiB0aGF0IGZvbGxvdyB0aGUgYWJvdmUgc2lnbmF0dXJlIGFuZCBhIGRlZmF1bHQgc3RhdHVzIGNvZGUgYW5kIHJldHVybiBhIGBnaW4uSGFuZGxlckZ1bmNgIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgd2hlbiB5b3UgcmVnaXN0ZXIgYSByb3V0ZSB3aXRoIEZpenogb2YgKkdpbiouCgpPdXRwdXQgb2JqZWN0cyBjYW4gYmUgb2YgYW55IHR5cGUsIGFuZCB3aWxsIGJlIG1hcnNoYWxsZWQgdG8gdGhlIGRlc2lyZWQgbWVkaWEgdHlwZS4KTm90ZSB0aGF0IHRoZSBpbnB1dCBvYmplY3QgKipNVVNUIGFsd2F5cyBiZSBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3QqKiwgb3IgdGhlIHRvbmljIHdyYXBwaW5nIHdpbGwgcGFuaWMgYXQgcnVudGltZS4KCklmIHlvdSB1c2UgY2xvc3VyZXMgYXMgaGFuZGxlcnMsIHBsZWFzZSBub3RlIHRoYXQgdGhleSB3aWxsIGFsbCBoYXZlIHRoZSBzYW1lIG5hbWUsIGFuZCB0aGUgZ2VuZXJhdG9yIHdpbGwgcmV0dXJuIGFuIGVycm9yLiBUbyBvdmVyY29tZSB0aGlzIHByb2JsZW0sIHlvdSBoYXZlIHRvIGV4cGxpY2l0ZWx5IHNldCB0aGUgSUQgb2YgYW4gb3BlcmF0aW9uIHdoZW4geW91IHJlZ2lzdGVyIHRoZSBoYW5kbGVyLgoKYGBgZ28KZnVuYyBNeUhhbmRsZXIoKSBnaW4uSGFuZGxlckZ1bmMgewogICByZXR1cm4gdG9uaWMuSGFuZGxlcihmdW5jKGMgKmdpbi5Db250ZXh0KSBlcnJvciB7fSwgMjAwKQp9CgpmaXp6LkdFVCgiL2ZvbyIsIFtdZml6ei5PcGVyYXRpb25PcHRpb257CiAgIGZpenouSUQoIk15T3BlcmF0aW9uSUQiKQp9LCBNeUhhbmRsZXIoKSkKYGBgCgojIyMgTG9jYXRpb24gdGFncwoKKnRvbmljKiB1c2VzIHRocmVlIHN0cnVjdCB0YWdzIHRvIHJlY29nbml6ZSB0aGUgcGFyYW1ldGVycyBpdCBzaG91bGQgYmluZCB0byB0aGUgaW5wdXQgb2JqZWN0IG9mIHlvdXIgdG9uaWMtd3JhcHBlZCBoYW5kbGVyczoKLSBgcGF0aGA6IGJpbmQgZnJvbSB0aGUgcmVxdWVzdCBwYXRoCi0gYHF1ZXJ5YDogYmluZCBmcm9tIHRoZSByZXF1ZXN0IHF1ZXJ5IHN0cmluZwotIGBoZWFkZXJgOiBiaW5kIGZyb20gdGhlIHJlcXVlc3QgaGVhZGVycwoKVGhlIGZpZWxkcyB0aGF0IGRvZXNuJ3QgdXNlIG9uZSBvZiB0aGVzZSB0YWdzIHdpbGwgYmUgY29uc2lkZXJlZCBhcyBwYXJ0IG9mIHRoZSByZXF1ZXN0IGJvZHkuCgpUaGUgdmFsdWUgb2YgZWFjaCBzdHJ1Y3QgdGFnIHJlcHJlc2VudHMgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIGluIGVhY2ggbG9jYXRpb24sIHdpdGggb3B0aW9ucy4KYGBgZ28KdHlwZSBNeUhhbmRsZXJQYXJhbXMgc3RydWN0IHsKICAgSUQgIGludDY0ICAgICBgcGF0aDoiaWQiYAogICBGb28gc3RyaW5nICAgIGBxdWVyeToiZm9vImAKICAgQmFyIHRpbWUuVGltZSBgaGVhZGVyOiJ4LWZvby1iYXIiYAp9CmBgYAoKKnRvbmljKiB3aWxsIGF1dG9tYXRpY2FsbHkgY29udmVydCB0aGUgdmFsdWUgZXh0cmFjdGVkIGZyb20gdGhlIGxvY2F0aW9uIGRlc2NyaWJlZCBieSB0aGUgdGFnIHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBlIGJlZm9yZSBiaW5kaW5nLgoKKipOT1RFKio6IEEgcGF0aCBwYXJhbWV0ZXIgaXMgYWx3YXlzIHJlcXVpcmVkIGFuZCB3aWxsIGFwcGVhciByZXF1aXJlZCBpbiB0aGUgc3BlYyByZWdhcmRsZXNzIG9mIHRoZSBgdmFsaWRhdGVgIHRhZyBjb250ZW50LgoKIyMjIEFkZGl0aW9uYWwgdGFncwoKWW91IGNhbiB1c2UgYWRkaXRpb25hbCB0YWdzLiBTb21lIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYnkgKnRvbmljKiwgb3RoZXJzIHdpbGwgYmUgZXhjbHVzaXZlbHkgdXNlZCB0byBlbnJpY2ggdGhlICpPcGVuQVBJKiBzcGVjaWZpY2F0aW9uLgoKfCBuYW1lICAgICAgICAgIHwgZGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IGBkZWZhdWx0YCAgICAgfCAqdG9uaWMqIHdpbGwgYmluZCB0aGlzIHZhbHVlIGlmIG5vbmUgd2FzIHBhc3NlZCB3aXRoIHRoZSByZXF1ZXN0LiBUaGlzIHNob3VsZCBub3QgYmUgdXNlZCBpZiBhIGZpZWxkIGlzIGFsc28gcmVxdWlyZWQuIFJlYWQgdGhlIFtkb2N1bWVudGF0aW9uXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2Rlc2NyaWJpbmctcGFyYW1ldGVycy8pIChzZWN0aW9uIF9Db21tb24gTWlzdGFrZXNfKSBmb3IgbW9yZSBpbmZvcm1hdGlvbnMgYWJvdXQgdGhpcyBiZWhhdmlvdXIuIHwKfCBgZGVzY3JpcHRpb25gIHwgQWRkIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZpZWxkIGluIHRoZSBzcGVjLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGRlcHJlY2F0ZWRgICB8IEluZGljYXRlcyBpZiB0aGUgZmllbGQgaXMgZGVwcmVjYXRlZC4gQWNjZXB0ZWQgdmFsdWVzIGFyZSBgMWAsIGB0YCwgYFRgLCBgVFJVRWAsIGB0cnVlYCwgYFRydWVgLCBgMGAsIGBmYCwgYEZgLCBgRkFMU0VgLiBJbnZhbGlkIHZhbHVlIGFyZSBjb25zaWRlcmVkIHRvIGJlIGZhbHNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBlbnVtYCAgICAgICAgfCBBIGNvbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYWNjZXB0YWJsZSB2YWx1ZXMgZm9yIHRoZSBwYXJhbWV0ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgZXhhbXBsZWAgICAgIHwgQW4gZXhhbXBsZSB2YWx1ZSB0byBiZSB1c2VkIGluIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4gU2VlIFtzZWN0aW9uIGJlbG93XSgjUHJvdmlkaW5nLUV4YW1wbGVzLWZvci1DdXN0b20tVHlwZXMpIGZvciB0aGUgZGVtb25zdHJhdGlvbiBvbiBob3cgdG8gcHJvdmlkZSBleGFtcGxlIGZvciBjdXN0b20gdHlwZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGZvcm1hdGAgICAgICB8IE92ZXJyaWRlIHRoZSBmb3JtYXQgb2YgdGhlIGZpZWxkIGluIHRoZSBzcGVjaWZpY2F0aW9uLiBSZWFkIHRoZSBbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQjZGF0YVR5cGVGb3JtYXQpIGZvciBtb3JlIGluZm9ybWF0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGB2YWxpZGF0ZWAgICAgfCBGaWVsZCB2YWxpZGF0aW9uIHJ1bGVzLiBSZWFkIHRoZSBbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9nb2RvYy5vcmcvZ29wa2cuaW4vZ28tcGxheWdyb3VuZC92YWxpZGF0b3IudjgpIGZvciBtb3JlIGluZm9ybWF0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgZXhwbG9kZWAgICAgIHwgU3BlY2lmaWVzIHdoZXRoZXIgYXJyYXlzIHNob3VsZCBnZW5lcmF0ZSBzZXBhcmF0ZSBwYXJhbWV0ZXJzIGZvciBlYWNoIGFycmF5IGl0ZW0gb3Igb2JqZWN0IHByb3BlcnR5IChsaW1pdGVkIHRvIHF1ZXJ5IHBhcmFtZXRlcnMgd2l0aCAqZm9ybSogc3R5bGUpLiBBY2NlcHRlZCB2YWx1ZXMgYXJlIGAxYCwgYHRgLCBgVGAsIGBUUlVFYCwgYHRydWVgLCBgVHJ1ZWAsIGAwYCwgYGZgLCBgRmAsIGBGQUxTRWAuIEludmFsaWQgdmFsdWUgYXJlIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UuICAgICB8CgojIyMgSlNPTi9YTUwKClRoZSBKU09OL1hNTCBlbmNvZGVycyB1c3VhbGx5IG9taXQgYSBmaWVsZCB0aGF0IGhhcyB0aGUgdGFnIGAiLSJgLiBUaGlzIGJlaGF2aW91ciBpcyByZXByb2R1Y2VkIGJ5IHRoZSAqT3BlbkFQSSogZ2VuZXJhdG9yIDsgYSBmaWVsZCB3aXRoIHRoaXMgdGFnIHdvbid0IGFwcGVhciBpbiB0aGUgcHJvcGVydGllcyBvZiB0aGUgc2NoZW1hLgoKSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCB0aGUgZmllbGQgYElucHV0YCBpcyB1c2VkIG9ubHkgZm9yIGJpbmRpbmcgcmVxdWVzdCBib2R5IHBhcmFtZXRlcnMgYW5kIHdvbid0IGFwcGVhciBpbiB0aGUgb3V0cHV0IGVuY29kaW5nIHdoaWxlIGBPdXRwdXRgIHdpbGwgYmUgbWFyc2hhbGVkIGJ1dCB3aWxsIG5vdCBiZSB1c2VkIGZvciBwYXJhbWV0ZXJzIGJpbmRpbmcuCmBgYGdvCnR5cGUgTW9kZWwgc3RydWN0IHsKCUlucHV0ICBzdHJpbmcgYGpzb246Ii0iYAoJT3V0cHV0IHN0cmluZyBganNvbjoib3V0cHV0IiBiaW5kaW5nOiItImAKfQpgYGAKCiMjIyBSZXF1ZXN0IGJvZHkKCklmIHlvdSB3YW50IHRvIG1ha2UgYSByZXF1ZXN0IGJvZHkgZmllbGQgbWFuZGF0b3J5LCB5b3UgY2FuIHVzZSB0aGUgdGFnIGB2YWxpZGF0ZToicmVxdWlyZWQiYC4gVGhlIHZhbGlkYXRvciB1c2VkIGJ5ICp0b25pYyogd2lsbCBlbnN1cmUgdGhhdCB0aGUgZmllbGQgaXMgcHJlc2VudC4KVG8gYmUgYWJsZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgbWlzc2luZyB2YWx1ZSBhbmQgdGhlIHplcm8gdmFsdWUgb2YgYSB0eXBlLCB1c2UgYSBwb2ludGVyLgoKVG8gZXhwbGljaXRseSBpZ25vcmUgYSBwYXJhbWV0ZXIgZnJvbSB0aGUgcmVxdWVzdCBib2R5LCB1c2UgdGhlIHRhZyBgYmluZGluZzoiLSJgLgoKTm90ZSB0aGF0IHRoZSAqT3BlbkFQSSogZ2VuZXJhdG9yIHdpbGwgaWdub3JlIHJlcXVlc3QgYm9keSBwYXJhbWV0ZXJzIGZvciB0aGUgcm91dGVzIHdpdGggYSBtZXRob2QgdGhhdCBpcyBvbmUgb2YgYEdFVGAsIGBERUxFVEVgIG9yIGBIRUFEYC4KICAgPiBHRVQsIERFTEVURSBhbmQgSEVBRCBhcmUgbm8gbG9uZ2VyIGFsbG93ZWQgdG8gaGF2ZSByZXF1ZXN0IGJvZHkgYmVjYXVzZSBpdCBkb2VzIG5vdCBoYXZlIGRlZmluZWQgc2VtYW50aWNzIGFzIHBlciBbUkZDIDcyMzFdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNC4zKS4KCVsqc291cmNlKl0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kZXNjcmliaW5nLXJlcXVlc3QtYm9keS8pCgojIyMgU2NoZW1hIHZhbGlkYXRpb24KClRoZSAqT3BlbkFQSSogZ2VuZXJhdG9yIHJlY29nbml6ZSBzb21lIHRhZ3Mgb2YgdGhlIFtnby1wbGF5Z3JvdW5kL3ZhbGlkYXRvci52OF0oaHR0cHM6Ly9nb3BrZy5pbi9nby1wbGF5Z3JvdW5kL3ZhbGlkYXRvci52OCkgcGFja2FnZSBhbmQgdHJhbnNsYXRlIHRob3NlIHRvIHRoZSBbcHJvcGVydGllcyBvZiB0aGUgc2NoZW1hXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMS5tZCNwcm9wZXJ0aWVzKSB0aGF0IGFyZSB0YWtlbiBmcm9tIHRoZSBbSlNPTiBTY2hlbWEgZGVmaW5pdGlvbl0oaHR0cDovL2pzb24tc2NoZW1hLm9yZy9sYXRlc3QvanNvbi1zY2hlbWEtdmFsaWRhdGlvbi5odG1sI3JmYy5zZWN0aW9uLjYpLgoKVGhlIHN1cHBvcnRlZCB0YWdzIGFyZTogW2xlbl0oaHR0cHM6Ly9nb2RvYy5vcmcvZ29wa2cuaW4vZ28tcGxheWdyb3VuZC92YWxpZGF0b3IudjgjaGRyLUxlbmd0aCksIFttYXhdKGh0dHBzOi8vZ29kb2Mub3JnL2dvcGtnLmluL2dvLXBsYXlncm91bmQvdmFsaWRhdG9yLnY4I2hkci1NYXhpbXVtKSwgW21pbl0oaHR0cHM6Ly9nb2RvYy5vcmcvZ29wa2cuaW4vZ28tcGxheWdyb3VuZC92YWxpZGF0b3IudjgjaGRyLU1pbmludW0pLCBbZXFdKGh0dHBzOi8vZ29kb2Mub3JnL2dvcGtnLmluL2dvLXBsYXlncm91bmQvdmFsaWRhdG9yLnY4I2hkci1FcXVhbHMpLCBbZ3RdKGh0dHBzOi8vZ29kb2Mub3JnL2dvcGtnLmluL2dvLXBsYXlncm91bmQvdmFsaWRhdG9yLnY4I2hkci1HcmVhdGVyX1RoYW4pLCBbZ3RlXShodHRwczovL2dvZG9jLm9yZy9nb3BrZy5pbi9nby1wbGF5Z3JvdW5kL3ZhbGlkYXRvci52OCNoZHItR3JlYXRlcl9UaGFuX29yX0VxdWFsKSwgW2x0XShodHRwczovL2dvZG9jLm9yZy9nb3BrZy5pbi9nby1wbGF5Z3JvdW5kL3ZhbGlkYXRvci52OCNoZHItTGVzc19UaGFuKSwgW2x0ZV0oaHR0cHM6Ly9nb2RvYy5vcmcvZ29wa2cuaW4vZ28tcGxheWdyb3VuZC92YWxpZGF0b3IudjgjaGRyLUxlc3NfVGhhbl9vcl9FcXVhbCkuCgpCYXNlZCBvbiB0aGUgdHlwZSBvZiB0aGUgZmllbGQgdGhhdCBjYXJyeSB0aGUgdGFnLCB0aGUgZmllbGRzIGBtYXhpbXVtYCwgYG1pbmltdW1gLCBgbWluTGVuZ3RoYCwgYG1heExlbmd0aGAsIGBtaW5JdGVtc2AsIGBtYXhJdGVtc2AsIGBtaW5Qcm9wZXJ0aWVzYCBhbmQgYG1heFByb3BlcnRpZXNgIG9mIGl0cyAqKkpTT04gU2NoZW1hKiogd2lsbCBiZSBmaWxsZWQgYWNjb3JkaW5nbHkuCgojIyBPcGVuQVBJIHNwZWNpZmljYXRpb24KClRvIHNlcnZlIHRoZSBnZW5lcmF0ZWQgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGluIGVpdGhlciBgSlNPTmAgb3IgYFlBTUxgIGZvcm1hdCwgdXNlIHRoZSBoYW5kbGVyIHJldHVybmVkIGJ5IHRoZSBgZml6ei5PcGVuQVBJYCBtZXRob2QuCgpUbyBlbnJpY2ggdGhlIHNwZWNpZmljYXRpb24sIHlvdSBjYW4gcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9ucy4gSGVhZCB0byB0aGUgW09wZW5BUEkgMyBzcGVjXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMC5tZCNpbmZvT2JqZWN0KSBmb3IgbW9yZSBpbmZvcm1hdGlvbnMgYWJvdXQgdGhlIEFQSSBpbmZvcm1hdGlvbnMgdGhhdCB5b3UgY2FuIHNwZWNpZnksIG9yIHRha2UgYSBsb29rIGF0IHRoZSB0eXBlIGBvcGVuYXBpLkluZm9gIGluIHRoZSBmaWxlIFtgb3BlbmFwaS9zcGVjLmdvYF0ob3BlbmFwaS9zcGVjLmdvI0wyNSkuCgpgYGBnbwpmIDo9IGZpenouTmV3KCkKaW5mb3MgOj0gJm9wZW5hcGkuSW5mb3sKICAgVGl0bGU6ICAgICAgICJGcnVpdHMgTWFya2V0IiwKICAgRGVzY3JpcHRpb246IGBUaGlzIGlzIGEgc2FtcGxlIEZydWl0cyBtYXJrZXQgc2VydmVyLmAsCiAgIFZlcnNpb246ICAgICAiMS4wLjAiLAp9CmYuR0VUKCIvb3BlbmFwaS5qc29uIiwgbmlsLCBmLk9wZW5BUEkoaW5mb3MsICJqc29uIikpCmBgYAoqKk5PVEUqKjogVGhlIGdlbmVyYXRvciB3aWxsIG5ldmVyIHBhbmljLiBIb3dldmVyLCBpdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBjYWxsIGBmaXp6LkVycm9yc2AgdG8gcmV0cmlldmUgYW5kIGhhbmRsZSB0aGUgZXJyb3JzIHRoYXQgbWF5IGhhdmUgb2NjdXJlZCBkdXJpbmcgdGhlIGdlbmVyYXRpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYmVmb3JlIHN0YXJ0aW5nIHlvdXIgQVBJLgoKIyMjIyBTZXJ2ZXJzIGluZm9ybWF0aW9uCgpJZiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIHJlZmVycyB0byBhbiBBUEkgdGhhdCBpcyBub3QgaG9zdGVkIG9uIHRoZSBzYW1lIGRvbWFpbiwgb3IgdXNpbmcgYSBwYXRoIHByZWZpeCBub3QgaW5jbHVkZWQgaW4gdGhlIHNwZWMsIHlvdSB3aWxsIGhhdmUgdG8gZGVjbGFyZSBzZXJ2ZXIgaW5mb3JtYXRpb24uIFRoaXMgY2FuIGJlIGFjaGlldmVkIHVzaW5nIHRoZSBgZi5HZW5lcmF0b3IoKS5TZXRTZXJ2ZXJzYCBtZXRob2QuCgpgYGBnbwpmIDo9IGZpenouTmV3KCkKZi5HZW5lcmF0b3IoKS5TZXRTZXJ2ZXJzKFtdKm9wZW5hcGkuU2VydmVyewogICB7CiAgICAgIERlc2NyaXB0aW9uOiAiRnJ1aXRzIE1hcmtldCAtIHByb2R1Y3Rpb24iLAogICAgICBVUkw6ICAgICAgICAgImh0dHBzOi8vZXhhbXBsZS5vcmcvYXBpLzEuMCIsCiAgIH0sCn0pCmBgYAoKIyMjIyBTZWN1cml0eSBzY2hlbWVzCgpJZiB5b3VyIEFQSSByZXF1aXJlcyBhdXRoZW50aWNhdGlvbiwgeW91IGhhdmUgdG8gZGVjbGFyZSB0aGUgc2VjdXJpdHkgc2NoZW1lcyB0aGF0IGNhbiBiZSB1c2VkIGJ5IHRoZSBvcGVyYXRpb25zLiBUaGlzIGNhbiBiZSBhY2hpZXZlZCB1c2luZyB0aGUgYGYuR2VuZXJhdG9yKCkuU2V0U2VjdXJpdHlTY2hlbWVzYCBtZXRob2QuCgpgYGBnbwpmIDo9IGZpenouTmV3KCkKZi5HZW5lcmF0b3IoKS5TZXRTZWN1cml0eVNjaGVtZXMobWFwW3N0cmluZ10qb3BlbmFwaS5TZWN1cml0eVNjaGVtZU9yUmVmewogICAiYXBpVG9rZW4iOiB7CiAgICAgIFNlY3VyaXR5U2NoZW1lOiAmb3BlbmFwaS5TZWN1cml0eVNjaGVtZXsKICAgICAgICAgVHlwZTogImFwaUtleSIsCiAgICAgICAgIEluOiAgICJoZWFkZXIiLAogICAgICAgICBOYW1lOiAieC1hcGktdG9rZW4iLAogICAgICB9LAogICB9LAp9KQpgYGAKCk9uY2UgZGVmaW5lZCwgdGhlIHNlY3VyaXR5IHNjaGVtZXMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIGFsbCBvcGVyYXRpb25zLiBZb3UgY2FuIG92ZXJyaWRlIHRoZW0gb24gYW4gcGVyLW9wZXJhdGlvbiBiYXNpcyB1c2luZyB0aGUgYGZpenouU2VjdXJpdHkoKWAgZnVuY3Rpb24uCgpgYGBnbwpmaXp6LlNlY3VyaXR5KCZvcGVuYXBpLlNlY3VyaXR5UmVxdWlyZW1lbnR7CiAgICJhcGlUb2tlbiI6IFtdc3RyaW5ne30sCn0pCmBgYAoKIyMjIyBDb21wb25lbnRzCgpUaGUgb3V0cHV0IHR5cGVzIG9mIHlvdXIgaGFuZGxlcnMgYXJlIHJlZ2lzdGVyZWQgYXMgY29tcG9uZW50cyB3aXRoaW4gdGhlIGdlbmVyYXRlZCBzcGVjaWZpY2F0aW9uLiBCeSBkZWZhdWx0LCB0aGUgbmFtZSB1c2VkIGZvciBlYWNoIGNvbXBvbmVudCBpcyBjb21wb3NlZCBvZiB0aGUgcGFja2FnZSBhbmQgdHlwZSBuYW1lIGNvbmNhdGVuYXRlZCB1c2luZyBfQ2FtZWxDYXNlXyBzdHlsZSwgYW5kIGRvZXMgbm90IGNvbnRhaW4gdGhlIGZ1bGwgaW1wb3J0IHBhdGguIEFzIHN1Y2gsIHBsZWFzZSBlbnN1cmUgdGhhdCB5b3UgZG9uJ3QgdXNlIHRoZSBzYW1lIHR5cGUgbmFtZSBpbiB0d28gZXBvbnltIHBhY2thZ2UgaW4geW91ciBhcHBsaWNhdGlvbi4KClRoZSBuYW1lcyBvZiB0aGUgY29tcG9uZW50cyBjYW4gYmUgY3VzdG9taXplZCBpbiB0d28gZGlmZmVyZW50IHdheXMuCgojIyMjIyBHbG9iYWwgb3ZlcnJpZGUKCk92ZXJyaWRlIHRoZSBuYW1lIG9mIGEgdHlwZSBnbG9iYWxseSBiZWZvcmUgcmVnaXN0ZXJpbmcgeW91ciBoYW5kbGVycy4gVGhpcyBoYXMgdGhlIGhpZ2hlc3QgcHJlY2VkZW5jZS4KYGBgZ28KZiA6PSBmaXp6Lk5ldygpCmYuR2VuZXJhdG9yKCkuT3ZlcnJpZGVUeXBlTmFtZShyZWZsZWN0LlR5cGVPZihUe30pLCAiT3ZlcnJpZGVkTmFtZSIpCmBgYAoKIyMjIyMgSW50ZXJmYWNlCgpJbXBsZW1lbnRzIHRoZSBgb3BlbmFwaS5UeXBlcmAgaW50ZXJmYWNlIG9uIHlvdXIgdHlwZXMuCmBgYGdvCmZ1bmMgKCpUKSBUeXBlTmFtZSgpIHN0cmluZyB7IHJldHVybiAiT3ZlcnJpZGVkTmFtZSIgfQpgYGAKKipXQVJOSU5HOioqIFlvdSAqKk1VU1QqKiBub3QgcmVseSBvbiB0aGUgbWV0aG9kIHJlY2VpdmVyIHRvIHJldHVybiB0aGUgbmFtZSwgYmVjYXVzZSB0aGUgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIG9uIGEgbmV3IGluc3RhbmNlIGNyZWF0ZWQgYnkgdGhlIGdlbmVyYXRvciB3aXRoIHRoZSBgcmVmbGVjdGAgcGFja2FnZS4KCiMjIyMgQ3VzdG9tIHNjaGVtYXMKClRoZSBzcGVjIGdlbmVyYXRvciBjcmVhdGVzIE9wZW5BUEkgc2NoZW1hcyBmb3IgeW91ciB0eXBlcyBiYXNlZCBvbiB0aGVpciBbcmVmbGVjdGlvbiBraW5kXShodHRwczovL2dvbGFuZy5vcmcvcGtnL3JlZmxlY3QvI0tpbmQpLgpJZiB5b3Ugd2FudCB0byBjb250cm9sIHRoZSBvdXRwdXQgc2NoZW1hIG9mIGEgdHlwZSBtYW51YWxseSwgeW91IGNhbiBpbXBsZW1lbnQgdGhlIGBEYXRhVHlwZWAgaW50ZXJmYWNlIGZvciB0aGlzIHR5cGUuCgpGb3IgZXhhbXBsZSwgZ2l2ZW4gYSBVVUlEIHZlcnNpb24gNCB0eXBlLCBkZWNsYXJlZCBhcyBhIHN0cnVjdCwgdGhhdCBzaG91bGQgYXBwZWFyIGFzIGEgc3RyaW5nIHdpdGggYSBjdXN0b20gZm9ybWF0LgpgYGBnbwp0eXBlIFVVSUR2NCBzdHJ1Y3QgeyAuLi4gfQoKZnVuYyAoKlVVSUR2NCkgRm9ybWF0KCkgc3RyaW5nIHsgcmV0dXJuICJ1dWlkIiB9CmZ1bmMgKCpVVUlEdjQpIFR5cGUoKSBzdHJpbmcgeyByZXR1cm4gInN0cmluZyIgfQpgYGAKClRoZSBzY2hlbWEgb2YgdGhlIHR5cGUgd2lsbCBsb29rIGxpa2UgdGhlIGZvbGxvd2luZyBpbnN0ZWFkIG9mIGRlc2NyaWJpbmcgYWxsIHRoZSBmaWVsZHMgb2YgdGhlIHN0cnVjdC4KYGBganNvbgp7CiAgICJ0eXBlIjogInN0cmluZyIsCiAgICJmb3JtYXQiOiAidXVpZCIKfQpgYGAKCklmIHlvdSB3YW50IHRvIG92ZXJyaWRlIHRoZSBgbnVsbGFibGVgIHByb3BlcnR5IG9mIGEgdHlwZSwgeW91IGNhbiBpbXBsZW1lbnQgdGhlIGBOdWxsYWJsZWAgaW50ZXJmYWNlIGZvciB0aGlzIHR5cGUuCgpGb3IgZXhhbXBsZSwgaWYgW2BzcWwuTnVsbFN0cmluZ2BdKGh0dHBzOi8vcGtnLmdvLmRldi9kYXRhYmFzZS9zcWwjTnVsbFN0cmluZykgaXMgbm90IHJlZmVyZW5jZWQgYnkgYSBwb2ludGVyIGluIHlvdXIgbW9kZWwgYnV0IHlvdSBzdGlsbCB3YW50IGl0IHRvIGJlICJudWxsYWJsZSI6CgpgYGBnbwp0eXBlIE51bGxTdHJpbmcgc3FsLk51bGxTdHJpbmcKCmZ1bmMgKE51bGxTdHJpbmcpIE51bGxhYmxlKCkgYm9vbCB7IHJldHVybiB0cnVlIH0KYGBgCgoqKldBUk5JTkc6KiogWW91ICoqTVVTVCoqIG5vdCByZWx5IG9uIHRoZSBtZXRob2QgcmVjZWl2ZXJzIHRvIHJldHVybiB0aGUgdHlwZSBhbmQgZm9ybWF0LCBiZWNhdXNlIHRoZXNlIG1ldGhvZHMgd2lsbCBiZSBjYWxsZWQgb24gYSBuZXcgaW5zdGFuY2UgY3JlYXRlZCBieSB0aGUgZ2VuZXJhdG9yIHdpdGggdGhlIGByZWZsZWN0YCBwYWNrYWdlLgoKWW91IGNhbiBhbHNvIG92ZXJyaWRlIG1hbnVhbGx5IHRoZSB0eXBlIGFuZCBmb3JtYXQgdXNpbmcgYE92ZXJyaWRlRGF0YVR5cGUoKWAuIFRoaXMgaGFzIHRoZSBoaWdoZXN0IHByZWNlZGVuY2UuCmBgYGdvCmZpenouR2VuZXJhdG9yKCkuT3ZlcnJpZGVEYXRhVHlwZShyZWZsZWN0LlR5cGVPZigmVVVJRHY0e30pLCAic3RyaW5nIiwgInV1aWQiKQpgYGAKCiMjIyMjIE5hdGl2ZSBhbmQgaW1wb3J0ZWQgdHlwZXMgc3VwcG9ydAoKRml6eiBzdXBwb3J0cyBzb21lIG5hdGl2ZSBhbmQgaW1wb3J0ZWQgdHlwZXMuIEEgc2NoZW1hIHdpdGggYSBwcm9wZXIgdHlwZSBhbmQgZm9ybWF0IHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHksIHJlbW92aW5nIHRoZSBuZWVkIGZvciBjcmVhdGluZyB5b3VyIG93biBjdXN0b20gc2NoZW1hLgoKKiBbYHRpbWUuVGltZWBdKGh0dHBzOi8vZ29sYW5nLm9yZy9wa2cvdGltZS8jVGltZSkKKiBbYHRpbWUuRHVyYXRpb25gXShodHRwczovL2dvbGFuZy5vcmcvcGtnL3RpbWUvI0R1cmF0aW9uKQoqIFtgbmV0LlVSTGBdKGh0dHBzOi8vZ29sYW5nLm9yZy9wa2cvbmV0L3VybC8jVVJMKQoqIFtgbmV0LklQYF0oaHR0cHM6Ly9nb2xhbmcub3JnL3BrZy9uZXQvI0lQKQoKTm90ZSB0aGF0LCBhY2NvcmRpbmcgdG8gdGhlIGRvYywgdGhlIGluaGVyZW50IHZlcnNpb24gb2YgdGhlIGFkZHJlc3MgaXMgYSBzZW1hbnRpYyBwcm9wZXJ0eSwgYW5kIHRodXMgY2Fubm90IGJlIGRldGVybWluZWQgYnkgRml6ei4gVGhlcmVmb3JlLCB0aGUgZm9ybWF0IHJldHVybmVkIGlzIHNpbXBseSBgaXBgLiBJZiB5b3Ugd2FudCB0byBzcGVjaWZ5IHRoZSB2ZXJzaW9uLCB5b3UgY2FuIHVzZSB0aGUgdGFncyBgZm9ybWF0OiJpcHY0ImAgb3IgYGZvcm1hdDoiaXB2NiJgLgoqIFtgdXVpZC5VVUlEYF0oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nb2Zycy91dWlkI1VVSUQpCgojIyMjIE1hcmtkb3duCgo+IFRocm91Z2hvdXQgdGhlIHNwZWNpZmljYXRpb24gZGVzY3JpcHRpb24gZmllbGRzIGFyZSBub3RlZCBhcyBzdXBwb3J0aW5nIENvbW1vbk1hcmsgbWFya2Rvd24gZm9ybWF0dGluZy4gV2hlcmUgT3BlbkFQSSB0b29saW5nIHJlbmRlcnMgcmljaCB0ZXh0IGl0IE1VU1Qgc3VwcG9ydCwgYXQgYSBtaW5pbXVtLCBtYXJrZG93biBzeW50YXggYXMgZGVzY3JpYmVkIGJ5IENvbW1vbk1hcmsgMC4yNy4gVG9vbGluZyBNQVkgY2hvb3NlIHRvIGlnbm9yZSBzb21lIENvbW1vbk1hcmsgZmVhdHVyZXMgdG8gYWRkcmVzcyBzZWN1cml0eSBjb25jZXJucy4KWypzb3VyY2UqXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMS5tZCNyaWNoLXRleHQtZm9ybWF0dGluZykKClRvIGhlbHAgeW91IHdyaXRlIG1hcmtkb3duIGRlc2NyaXB0aW9ucyBpbiBHbywgYSBzaW1wbGUgYnVpbGRlciBpcyBhdmFpbGFibGUgaW4gdGhlIHN1Yi1wYWNrYWdlIGBtYXJrZG93bmAuIFRoaXMgaXMgcXVpdGUgaGFuZHkgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggYmFja3RpY2tzIHRoYXQgYXJlIGJvdGggdXNlZCBpbiBHbyBmb3IgbGl0dGVyYWwgbXVsdGktbGluZXMgc3RyaW5ncyBhbmQgY29kZSBibG9ja3MgaW4gbWFya2Rvd24uCgojIyMjIFByb3ZpZGluZyBFeGFtcGxlcyBmb3IgQ3VzdG9tIFR5cGVzClRvIGJlIGFibGUgdG8gcHJvdmlkZSBleGFtcGxlcyBmb3IgY3VzdG9tIHR5cGVzLCB0aGV5IG11c3QgaW1wbGVtZW50IHRoZSBganNvbi5NYXJzaGFsZXJgIGFuZC9vciBgeWFtbC5NYXJzaGFsZXJgIGFuZCB0aGUgZm9sbG93aW5nIGludGVyZmFjZToKYGBgZ28KdHlwZSBFeGFtcGxlciBpbnRlcmZhY2UgewogICAgICAgUGFyc2VFeGFtcGxlKHYgc3RyaW5nKSAoaW50ZXJmYWNle30sIGVycm9yKQp9CmBgYAoKSWYgdGhlIGN1c3RvbSB0eXBlIGltcGxlbWVudHMgdGhlIGludGVyZmFjZSwgRml6eiB3aWxsIHBhc3MgdGhlIHZhbHVlIGZyb20gdGhlIGBleGFtcGxlYCB0YWcgdG8gdGhlIGBQYXJzZUV4YW1wbGVgIG1ldGhvZCBhbmQgdXNlIHRoZSByZXR1cm4gdmFsdWUgYXMgdGhlIGV4YW1wbGUgaW4gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4KCiMjIEtub3duIGxpbWl0YXRpb25zCgotIFNpbmNlICpPcGVuQVBJKiBpcyBiYXNlZCBvbiB0aGUgKkpTT04gU2NoZW1hKiBzcGVjaWZpY2F0aW9uIGl0c2VsZiwgb2JqZWN0cyAoR28gbWFwcykgd2l0aCBrZXlzIHRoYXQgYXJlIG5vdCBvZiB0eXBlIGBzdHJpbmdgIGFyZSBub3Qgc3VwcG9ydGVkIGFuZCB3aWxsIGJlIGlnbm9yZWQgZHVyaW5nIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLgotIFJlY3Vyc2l2ZSBlbWJlZGRpbmcgb2YgdGhlIHNhbWUgdHlwZSBpcyBub3Qgc3VwcG9ydGVkLCBhdCBhbnkgbGV2ZWwgb2YgcmVjdXJzaW9uLiBUaGUgZ2VuZXJhdG9yIHdpbGwgd2FybiBhbmQgc2tpcCB0aGUgb2ZmZW5kaW5nIGZpZWxkcy4KICAgYGBgZ28KICAgdHlwZSBBIHN0cnVjdCB7CiAgICAgIEZvbyBpbnQKICAgICAgKkEgICAvLyBrbywgZW1iZWRkZWQgYW5kIHNhbWUgdHlwZSBhcyBwYXJlbnQKICAgICAgQSAqQSAvLyBvaywgbm90IGVtYmVkZGVkCiAgICAgICpCICAgLy8gb2ssIGRpZmZlcmVudCB0eXBlCiAgIH0KCiAgIHR5cGUgQiBzdHJ1Y3QgewogICAgICBCYXIgc3RyaW5nCiAgICAgICpBIC8vIGtvLCB0eXBlIEIgaXMgZW1iZWRkZWQgaW4gdHlwZSBBCiAgICAgICpDIC8vIG9rLCB0eXBlIEMgZG9lcyBub3QgY29udGFpbnMgYW4gZW1iZWRkZWQgZmllbGQgb2YgdHlwZSBBCiAgIH0KCiAgIHR5cGUgQyBzdHJ1Y3QgewogICAgICBCYXogYm9vbAogICB9CiAgIGBgYAoKIyMgRXhhbXBsZXMKCkEgc2ltcGxlIHJ1bm5hYmxlIEFQSSBpcyBhdmFpbGFibGUgaW4gYGV4YW1wbGVzL21hcmtldGAuCmBgYHNoZWxsCmdvIGJ1aWxkCi4vbWFya2V0CiMgUmV0cmlldmUgdGhlIHNwZWNpZmljYXRpb24gbWFyc2hhbGVkIGluIEpTT04uCmN1cmwgLWkgaHR0cDovL2xvY2FsaG9zdDo0MjQyL29wZW5hcGkuanNvbgpgYGAKCiMjIENyZWRpdHMKCkZpenogaXMgYmFzZWQgb24gW2dpbi1nb25pYy9naW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9naW4tZ29uaWMvZ2luKSBhbmQgdXNlIFtnYWRnZXRvL3RvbmljXShodHRwczovL2dpdGh1Yi5jb20vbG9vcGZ6L2dhZGdldG8vdHJlZS9tYXN0ZXIvdG9uaWMpLiA6aGVhcnQ6Cgo8cCBhbGlnbj0icmlnaHQiPjxpbWcgc3JjPSJodHRwczovL2ZvcnRoZWJhZGdlLmNvbS9pbWFnZXMvYmFkZ2VzL2J1aWx0LXdpdGgtc3dhZy5zdmciPjwvcD4K readmeEtag: '"be995e1a7e2f133043ba3ac7be220bf9243c64a7"' readmeLastModified: Wed, 12 Oct 2022 15:12:36 GMT repositoryId: 124098943 description: ':lemon: Gin wrapper with OpenAPI 3 spec generation' created: '2018-03-06T15:32:24Z' updated: '2026-01-28T15:11:44Z' language: Go archived: false stars: 232 watchers: 8 forks: 58 owner: wI2L logo: https://avatars.githubusercontent.com/u/6519569?v=4 license: MIT repoEtag: '"0c567b0394656e697d807a54cc06dd3529059bc7888696aa5ea46d978059e7fe"' repoLastModified: Wed, 28 Jan 2026 15:11:44 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/swagger-api/validator-badge v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIFZhbGlkYXRvciBCYWRnZSA8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N3YWdnZXItYXBpL3N3YWdnZXIuaW8vd29yZHByZXNzL2ltYWdlcy9hc3NldHMvU1ctbG9nby1jbHIucG5nIiBoZWlnaHQ9IjUwIiBhbGlnbj0icmlnaHQiPgoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2plbmtpbnMvYnVpbGQuc3ZnP2pvYlVybD1odHRwczovL2plbmtpbnMuc3dhZ2dlci5pby9qb2Ivb3NzLXN3YWdnZXItdmFsaWRhdG9yLWJhZGdlLW1hc3RlcildKGh0dHBzOi8vamVua2lucy5zd2FnZ2VyLmlvL3ZpZXcvT1NTJTIwLSUyMEphdmEvam9iL29zcy1zd2FnZ2VyLXZhbGlkYXRvci1iYWRnZS1tYXN0ZXIpCgpUaGlzIHByb2plY3Qgc2hvd3MgYSAidmFsaWQgc3dhZ2dlciIgYmFkZ2Ugb24geW91ciBzaXRlLCBzdXBwb3J0aW5nIFN3YWdnZXIvT3BlbkFQSSAyLjAgYW5kIE9wZW5BUEkgMy54IHNwZWNpZmljYXRpb25zLiAgCgpUaGVyZSBpcyBhbiBvbmxpbmUgdmVyc2lvbiBob3N0ZWQgb24gaHR0cDovL3ZhbGlkYXRvci5zd2FnZ2VyLmlvLiAgCgojIyMgVXNpbmcgRG9ja2VyCgpZb3UgY2FuIGFsc28gcHVsbCBhIGRvY2tlciBpbWFnZSBvZiB0aGUgdmFsaWRhdG9yIGRpcmVjdGx5IGZyb20gW0RvY2tlckh1Yl0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL3N3YWdnZXJhcGkvc3dhZ2dlci12YWxpZGF0b3ItdjIvKSwgZS5nLjoKCmBgYApkb2NrZXIgcHVsbCBzd2FnZ2VyYXBpL3N3YWdnZXItdmFsaWRhdG9yLXYyOnYyLjEuNwpkb2NrZXIgcnVuIC1pdCAtcCA4MDgwOjgwODAgLS1uYW1lIHN3YWdnZXItdmFsaWRhdG9yLXYyIHN3YWdnZXJhcGkvc3dhZ2dlci12YWxpZGF0b3ItdjI6djIuMS43CmBgYAoKU2luY2UgdmVyc2lvbiBgMi4wLjJgIGxvY2FsIGFuZCBub24gaHR0cC9odHRwcyB1cmxzIGFyZSByZWplY3RlZCBieSBkZWZhdWx0LCBhbG9uZyB3aXRoIHJlZGlyZWN0czsgdGhpcyBpcyBjb250cm9sbGFibGUgd2l0aCBkb2NrZXIgZW52IHZhcmlhYmxlcyAvIGphdmEgc3lzdGVtIHByb3BlcnRpZXM6CgpgYGAKZG9ja2VyIHJ1biAtaXQgLXAgODA4MDo4MDgwIC1lICJSRUpFQ1RfTE9DQUw9ZmFsc2UiIC1lICJSRUpFQ1RfUkVESVJFQ1Q9ZmFsc2UiIC0tbmFtZSBzd2FnZ2VyLXZhbGlkYXRvci12MiBzd2FnZ2VyYXBpL3N3YWdnZXItdmFsaWRhdG9yLXYyOnYyLjEuNwpgYGAKCkluIG5vbiBkb2NrZXIgZW52aXJvbm1lbnRzLCBzeXN0ZW0gcHJvcGVydGllcyBgcmVqZWN0TG9jYWxgIGFuZCBgcmVqZWN0UmVkaXJlY3RgIGNhbiBiZSB1c2VkLgoKCgpXZWIgVUkgaXMgcmVhY2hhYmxlIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9pbmRleC5odG1sIGFuZCBPcGVuQVBJIHNwZWMgYXQgaHR0cDovL2xvY2FsaG9zdDo4MDgwL3ZhbGlkYXRvci9vcGVuYXBpLmpzb24KCgoKWW91IGNhbiB2YWxpZGF0ZSBPcGVuQVBJIHNwZWNpZmljYXRpb25zIHZlcnNpb24gMi4wIChTd2FnZ2VyKSwgMy4wIGFuZCAzLjEuIFtTd2FnZ2VyIFBhcnNlcl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItcGFyc2VyL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCkgaXMgdXNlZCBmb3Igc2VtYW50aWMgdmFsaWRhdGlvbi4KRGVwZW5kaW5nIG9uIGBqc29uU2NoZW1hVmFsaWRhdGlvbmAgcXVlcnkgcGFyYW1ldGVyIHZhbHVlIGFsc28gSlNPTiBTY2hlbWEgdmFsaWRhdGlvbiBjYW4gYmUgZXhlY3V0ZWQgKGRlZmF1bHQgdG8gYHRydWVgKSAKCkFkZGl0aW9uYWwgcGFyYW1ldGVycyBhbGxvdyB0byBjdXN0b21pemUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBtb2RlLgoKYGBgCjxpbWcgc3JjPSJodHRwczovL3ZhbGlkYXRvci5zd2FnZ2VyLmlvL3ZhbGlkYXRvcj91cmw9e1lPVVJfVVJMfSI+CmBgYAoKT2YgY291cnNlIHRoZSBgWU9VUl9VUkxgIG5lZWRzIHRvIGJlIGFkZHJlc3NhYmxlIGJ5IHRoZSB2YWxpZGF0b3IgKGkuZS4gd29uJ3QgZmluZCBhbnl0aGluZyBvbiBsb2NhbGhvc3QpLiAgSWYgaXQgdmFsaWRhdGVzLCB5b3UnbGwgZ2V0IGEgbmljZSBncmVlbiBWQUxJRCBsb2dvLiAgRmFpbHVyZXMgd2lsbCBnaXZlIGFuIElOVkFMSUQgbG9nbywgYW5kIGlmIHRoZXJlIGFyZSBlcnJvcnMgcGFyc2luZyB0aGUgc3BlY2lmaWNhdGlvbiBvciByZWFjaGluZyBpdCwgYW4gdWdseSByZWQgRVJST1IgbG9nby4KCkZvciBleGFtcGxlLCB1c2luZyBbaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vbWFzdGVyL2V4YW1wbGVzL3YyLjAvanNvbi9wZXRzdG9yZS1leHBhbmRlZC5qc29uXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9tYXN0ZXIvZXhhbXBsZXMvdjIuMC9qc29uL3BldHN0b3JlLWV4cGFuZGVkLmpzb24pIGFzIGEgc291cmNlLCB3ZSBnZXQgLi4uCgohW10oaHR0cHM6Ly92YWxpZGF0b3Iuc3dhZ2dlci5pby92YWxpZGF0b3I/dXJsPWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL21hc3Rlci9leGFtcGxlcy92Mi4wL2pzb24vcGV0c3RvcmUtZXhwYW5kZWQuanNvbikKCklmIHlvdXIgc3BlY2lmaWNhdGlvbiBmYWlscyB0byB2YWxpZGF0ZSBmb3Igc29tZSByZWFzb24sIG9yIGlmIHRoZXJlIGlzIGFuIGVycm9yLCB5b3UgY2FuIGdldCBtb3JlIGluZm9ybWF0aW9uIG9uIHdoeSBieSB2aXNpdGluZyBgYGBodHRwczovL3ZhbGlkYXRvci5zd2FnZ2VyLmlvL3ZhbGlkYXRvci9kZWJ1Zz91cmw9e1lPVVJfVVJMfWBgYC4KClNpbmNlIHRoZSB2YWxpZGF0b3IgdXNlcyBhIGJyb3dzZXJsZXNzIGJhY2stZW5kIHRvIGZldGNoIHRoZSBjb250ZW50cyBhbmQgc2NoZW1hLCBpdCdzIG5vdCBzdWJqZWN0IHRvIHRoZSB0ZXJyaWJsZSB3b3JsZCBvZiBDT1JTLgoKIyMjIFVzaW5nIGNVUkwKCllvdSBjYW4gYWxzbyBwb3N0IGEgc3BlYyB1cCB0byB0aGUgc2VydmljZSB3aXRoIGNVUkw6CgpgYGBiYXNoCmN1cmwgLVggUE9TVCAtZCBAc3dhZ2dlci5qc29uIC1IICdDb250ZW50LVR5cGU6YXBwbGljYXRpb24vanNvbicgaHR0cHM6Ly92YWxpZGF0b3Iuc3dhZ2dlci5pby92YWxpZGF0b3IvZGVidWcKYGBgCgpJbiB0aGlzIGV4YW1wbGUsIGBzd2FnZ2VyLmpzb25gIGlzIHRoZSBzd2FnZ2VyIGRlZmluaXRpb24gaW4gSlNPTiBmb3JtYXQsIGluIHRoZSBDV0QuCgpJZiB5b3VyIHN3YWdnZXIgZGVmaW5pdGlvbiBmaWxlIGlzIGluIFlBTUwgZm9ybWF0LCB0aGUgY29tbWFuZCBuZWVkcyB0byBiZSBhZGFwdGVkIGxpa2Ugc286CgpgYGBiYXNoCmN1cmwgLS1kYXRhLWJpbmFyeSBAc3dhZ2dlci55YW1sIC1IICdDb250ZW50LVR5cGU6YXBwbGljYXRpb24veWFtbCcgaHR0cHM6Ly92YWxpZGF0b3Iuc3dhZ2dlci5pby92YWxpZGF0b3IvZGVidWcKYGBgCgpOb3RlIHRoZSB1c2Ugb2YgYC0tZGF0YS1iaW5hcnlgIHRvIGF2b2lkIHN0cmlwcGluZyBuZXdsaW5lcywgYWxvbmcgd2l0aCBhIGRpZmZlcmVudCBgQ29udGVudC1UeXBlYCBoZWFkZXIuCgojIyMgTm90ZQoKQWxsIG9mIHRoZSBhYm92ZSBpcyBhbHNvIGFwcGxpY2FibGUgdG8gT3BlbkFQSSAzLnggc3BlY2lmaWNhdGlvbnM7IGZvciBleGFtcGxlLCB1c2luZyBbaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uXShodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92My9vcGVuYXBpLmpzb24pIGFzIGEgc291cmNlLCB3ZSBnZXQgLi4uCgohW10oaHR0cHM6Ly92YWxpZGF0b3Iuc3dhZ2dlci5pby92YWxpZGF0b3I/dXJsPWh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzL29wZW5hcGkuanNvbikKClNpbmNlIHZlcnNpb24gMi4xLjAgYSBgL3BhcnNlQnlVcmxgIGFuZCBgL3BhcnNlQnlDb250ZW50YCBhcmUgYXZhaWxhYmxlLCByZXR1cm5pbmcgYSBzZXJpYWxpemVkIHBhcnNlZCBzcGVjaWZpY2F0aW9uLCB3aXRoIHBhcnNpbmcgYW5kIHJlc3VsdCBjb25maWd1cmFibGUgYnkKcGFyYW1ldGVycywgZS5nLiBwYXNzaW5nIGByZXNvbHZlYCwgZXRjLiBTZWUgW1N3YWdnZXIgUGFyc2VyXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1wYXJzZXIvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI29wdGlvbnMpLgoKIyMjIFJ1bm5pbmcgbG9jYWxseQoKWW91IGNhbiBidWlsZCBhbmQgcnVuIHRoZSB2YWxpZGF0b3IgbG9jYWxseToKCmBgYGJhc2gKbXZuIHBhY2thZ2UgamV0dHk6cnVuCmBgYAoKQW5kIGFjY2VzcyB0aGUgdmFsaWRhdG9yIGxpa2Ugc3VjaDoKCmBgYApodHRwOi8vbG9jYWxob3N0OjgwODAvdmFsaWRhdG9yP3VybD17VVJMfQpgYGAKCm9yCgpgYGAKaHR0cDovL2xvY2FsaG9zdDo4MDgwL3ZhbGlkYXRvcj91cmw9aHR0cDovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uCmBgYApgYGAKaHR0cDovL2xvY2FsaG9zdDo4MDgwL3ZhbGlkYXRvcj91cmw9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vbWFzdGVyL2V4YW1wbGVzL3YzLjAvcGV0c3RvcmUueWFtbApgYGAKCiMjIFNlY3VyaXR5IGNvbnRhY3QKClBsZWFzZSBkaXNjbG9zZSBhbnkgc2VjdXJpdHktcmVsYXRlZCBpc3N1ZXMgb3IgdnVsbmVyYWJpbGl0aWVzIGJ5IGVtYWlsaW5nIFtzZWN1cml0eUBzd2FnZ2VyLmlvXShtYWlsdG86c2VjdXJpdHlAc3dhZ2dlci5pbyksIGluc3RlYWQgb2YgdXNpbmcgdGhlIHB1YmxpYyBpc3N1ZSB0cmFja2VyLgo= readmeEtag: '"130564c9011e16f3af40a9478c12cbeee097bbad"' readmeLastModified: Mon, 19 May 2025 07:23:19 GMT repositoryId: 23099185 description: Validate your Swagger JSON/YAML today! created: '2014-08-19T06:18:38Z' updated: '2026-01-29T13:11:20Z' language: Java archived: false stars: 220 watchers: 13 forks: 82 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 repoEtag: '"0fe8740bfa41fe1aa7cf7d7f5ee0ae52f30b80177d54f5debbeb93455615d663"' repoLastModified: Thu, 29 Jan 2026 13:11:20 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: f4f082f1673ead88d9098ccd59574327 - source: openapi3 tags repository: https://github.com/seriousme/fastify-openapi-glue v3: true repositoryMetadata: base64Readme: >- IyBGYXN0aWZ5IE9wZW5BcGkgR2x1ZQpbIVtDSSBzdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zZXJpb3VzbWUvZmFzdGlmeS1vcGVuYXBpLWdsdWUvd29ya2Zsb3dzL05vZGUuanMlMjBDSS9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc2VyaW91c21lL2Zhc3RpZnktb3BlbmFwaS1nbHVlL2FjdGlvbnM/cXVlcnk9d29ya2Zsb3clM0ElMjJOb2RlLmpzK0NJJTIyKQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY29kZWNvdi5pby9naC9zZXJpb3VzbWUvZmFzdGlmeS1vcGVuYXBpLWdsdWUvZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPUFDU2FuaGt6bzUpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvc2VyaW91c21lL2Zhc3RpZnktb3BlbmFwaS1nbHVlKQpbIVtOUE0gdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9mYXN0aWZ5LW9wZW5hcGktZ2x1ZS5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9mYXN0aWZ5LW9wZW5hcGktZ2x1ZSkKIVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL2Zhc3RpZnktb3BlbmFwaS1nbHVlKQoKCgpBIHBsdWdpbiBmb3IgW2Zhc3RpZnldKGh0dHBzOi8vZmFzdGlmeS5kZXYpIHRvIGF1dG8tZ2VuZXJhdGUgYSBjb25maWd1cmF0aW9uIGJhc2VkIG9uIGEgW09wZW5BcGldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pKHYyL3YzKSBzcGVjaWZpY2F0aW9uLgoKSXQgYWltcyBhdCBmYWNpbGl0YXRpbmcgWyJkZXNpZ24gZmlyc3QiIEFQSSBkZXZlbG9wbWVudF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2Jsb2cvYXBpLWRlc2lnbi9kZXNpZ24tZmlyc3Qtb3ItY29kZS1maXJzdC1hcGktZGV2ZWxvcG1lbnQvKSBpLmUuIHlvdSB3cml0ZSBvciBvYnRhaW4gYW4gQVBJIHNwZWNpZmljYXRpb24gYW5kIHVzZSB0aGF0IHRvIGdlbmVyYXRlIGNvZGUuIEdpdmVuIGFuIE9wZW5BcGkgc3BlY2lmaWNhdGlvbiBGYXN0aWZ5LW9wZW5hcGktZ2x1ZSBoYW5kbGVzIHRoZSBmYXN0aWZ5IGNvbmZpZ3VyYXRpb24gb2Ygcm91dGVzIGFuZCB2YWxpZGF0aW9uIHNjaGVtYXMgZXRjLiBZb3UgY2FuIGFsc28gW2dlbmVyYXRlXSgjZ2VuZXJhdG9yKSB5b3VyIG93biBwcm9qZWN0IGZyb20gYSBPcGVuQXBpIHNwZWNpZmljYXRpb24uCgo8YSBuYW1lPSJ1cGdyYWRpbmciPjwvYT4KIyMgVXBncmFkaW5nCgpJZiB5b3UgYXJlIHVwZ3JhZGluZyBmcm9tIGEgcHJldmlvdXMgbWFqb3IgdmVyc2lvbiBvZiBgZmFzdGlmeS1vcGVuYXBpLWdsdWVgIHRoZW4gcGxlYXNlIGNoZWNrIG91dCBbVVBHUkFESU5HLm1kXShVUEdSQURJTkcubWQpLgoKPGEgbmFtZT0iaW5zdGFsbCI+PC9hPgojIyBJbnN0YWxsIApgYGAKbnBtIGkgZmFzdGlmeS1vcGVuYXBpLWdsdWUgLS1zYXZlCmBgYAo8YSBuYW1lPSJwbHVnaW4iPjwvYT4KIyMgUGx1Z2luCjxhIG5hbWU9InBsdWdpblVzYWdlIj48L2E+CiMjIyBVc2FnZQoKQWRkIHRoZSBwbHVnaW4gdG8geW91ciBwcm9qZWN0IHdpdGggYHJlZ2lzdGVyYCBhbmQgcGFzcyBpdCBzb21lIGJhc2ljIG9wdGlvbnMgYW5kIHlvdSBhcmUgZG9uZSAhCmBgYGphdmFzY3JpcHQKaW1wb3J0IG9wZW5hcGlHbHVlIGZyb20gImZhc3RpZnktb3BlbmFwaS1nbHVlIjsKaW1wb3J0IHsgU2VydmljZSB9IGZyb20gIi4vc2VydmljZS5qcyI7CmltcG9ydCB7IFNlY3VyaXR5IH0gZnJvbSAiLi9zZWN1cml0eS5qcyI7Cgpjb25zdCBvcHRpb25zID0gewogIHNwZWNpZmljYXRpb246IGAke2N1cnJlbnREaXJ9L3BldHN0b3JlLW9wZW5hcGkudjMuanNvbmAsCiAgc2VydmljZUhhbmRsZXJzOiBuZXcgU2VydmljZSgpLAogIHNlY3VyaXR5SGFuZGxlcnM6IG5ldyBTZWN1cml0eSgpLAogIHByZWZpeDogInYxIiwKfTsKCgpmYXN0aWZ5LnJlZ2lzdGVyKG9wZW5hcGlHbHVlLCBvcHRpb25zKTsKYGBgCgpBbGwgc2NoZW1hIGFuZCByb3V0ZXMgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBPcGVuQXBpIHNwZWNpZmljYXRpb24gbGlzdGVkIGluIHRoZSBvcHRpb25zLiBObyBuZWVkIHRvIHNwZWNpZnkgdGhlbSBpbiB5b3VyIGNvZGUuIAo8YSBuYW1lPSJwbHVnaW5PcHRpb25zIj48L2E+CiMjIyBPcHRpb25zCiAgLSBgc3BlY2lmaWNhdGlvbmA6IHRoaXMgY2FuIGJlIGEgSlNPTiBvYmplY3QsIG9yIHRoZSBuYW1lIG9mIGEgSlNPTiBvciBZQU1MIGZpbGUgY29udGFpbmluZyBhIHZhbGlkIE9wZW5BcGkodjIvdjMpIGZpbGUgCiAgLSBgc2VydmljZUhhbmRsZXJzYDogdGhpcyBjYW4gYmUgYSBqYXZhc2NyaXB0IG9iamVjdCBvciBjbGFzcyBpbnN0YW5jZS4gU2VlIHRoZSBbc2VydmljZUhhbmRsZXJzIGRvY3VtZW50YXRpb25dKGRvY3Mvc2VydmljZUhhbmRsZXJzLm1kKSBmb3IgbW9yZSBkZXRhaWxzLgogIC0gYHNlY3VyaXR5SGFuZGxlcnNgOiB0aGlzIGNhbiBiZSBhIGphdmFzY3JpcHQgb2JqZWN0IG9yIGNsYXNzIGluc3RhbmNlLiBTZWUgdGhlIFtzZWN1cml0eUhhbmRsZXJzIGRvY3VtZW50YXRpb25dKGRvY3Mvc2VjdXJpdHlIYW5kbGVycy5tZCkgZm9yIG1vcmUgZGV0YWlscy4KICAtIGBwcmVmaXhgOiB0aGlzIGlzIGEgc3RyaW5nIHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJlZml4IHRoZSByb3V0ZXMsIGl0IGlzIHBhc3NlZCB2ZXJiYXRpbSB0byBmYXN0aWZ5LiBFLmcuIGlmIHRoZSBwYXRoIHRvIHlvdXIgb3BlcmF0aW9uIGlzIHNwZWNpZmllZCBhcyAiL29wZXJhdGlvbiIgdGhlbiBhIHByZWZpeCBvZiAidjEiIHdpbGwgbWFrZSBpdCBhdmFpbGFibGUgYXQgIi92MS9vcGVyYXRpb24iLiBUaGlzIHNldHRpbmcgb3ZlcnJ1bGVzIGFueSAiYmFzZVBhdGgiIHNldHRpbmcgaW4gYSB2MiBzcGVjaWZpY2F0aW9uLiBTZWUgdGhlIFtzZXJ2ZXJzIGRvY3VtZW50YXRpb25dKGRvY3Mvc2VydmVycy5tZCkgZm9yIG1vcmUgZGV0YWlscyBvbiB1c2luZyBwcmVmaXggd2l0aCBhIHYzIHNwZWNpZmljYXRpb24uCiAtIGBvcGVyYXRpb25SZXNvbHZlcmA6IGEgY3VzdG9tIG9wZXJhdGlvbiByZXNvbHZlciBmdW5jdGlvbiwgYChvcGVyYXRpb25JZCwgbWV0aG9kLCBvcGVuYXBpUGF0aCkgPT4gaGFuZGxlciB8IHJvdXRlT3B0aW9uc2Agd2hlcmUgbWV0aG9kIGlzIHRoZSB1cHBlcmNhc2UgSFRUUCBtZXRob2QgKGUuZy4gIkdFVCIpIGFuZCBvcGVuYXBpUGF0aCBpcyB0aGUgcGF0aCB0YWtlbiBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uIHdpdGhvdXQgcHJlZml4IChlLmcuICIvb3BlcmF0aW9uIikuIE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGBzZXJ2aWNlSGFuZGxlcnNgLiBTZWUgdGhlIFtvcGVyYXRpb25SZXNvbHZlciBkb2N1bWVudGF0aW9uXShkb2NzL29wZXJhdGlvblJlc29sdmVyLm1kKSBmb3IgbW9yZSBkZXRhaWxzLgogLSBgYWRkRW1wdHlTY2hlbWFgOiBhIGJvb2xlYW4gdGhhdCBhbGxvd3MgZW1wdHkgYm9kaWVzIHNjaGVtYXMgdG8gYmUgcGFzc2VkIHRocm91Z2guIFRoaXMgbWlnaHQgYmUgdXNlZnVsIGZvciBzdGF0dXMgY29kZXMgbGlrZSAyMDQgb3IgMzA0LiBEZWZhdWx0IGlzIGBmYWxzZWAuCgpgc3BlY2lmaWNhdGlvbmAgYW5kIGVpdGhlciBgc2VydmljZUhhbmRsZXJzYCBvciBgb3BlcmF0aW9uUmVzb2x2ZXJgIGFyZSBtYW5kYXRvcnksIGBzZWN1cml0eUhhbmRsZXJzYCBhbmQgYHByZWZpeGAgYXJlIG9wdGlvbmFsLgpTZWUgdGhlIFtleGFtcGxlc10oI2V4YW1wbGVzKSBzZWN0aW9uIGZvciBhIGRlbW8uCgpQbGVhc2UgYmUgYXdhcmUgdGhhdCBgdGhpc2Agd2lsbCByZWZlciB0byB5b3VyIHNlcnZpY2VIYW5kbGVycyBvYmplY3Qgb3IgeW91ciBzZWN1cml0eUhhbmRsZXIgb2JqZWN0IGFuZCBub3QgdG8gRmFzdGlmeSBhcyBleHBsYWluZWQgaW4gdGhlIFtiaW5kaW5ncyBkb2N1bWVudGF0aW9uXShkb2NzL2JpbmRpbmdzLm1kKQoKPGEgbmFtZT0icGx1Z2luQXBpRXh0ZW5zaW9ucyI+PC9hPgojIyMgT3BlbkFQSSBleHRlbnNpb25zClRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gc3VwcG9ydHMgW2V4dGVuZGluZyBhbiBBUEkgc3BlY10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvbGF0ZXN0Lmh0bWwjc3BlY2lmaWNhdGlvbi1leHRlbnNpb25zKSB0byBkZXNjcmliZSBleHRyYSBmdW5jdGlvbmFsaXR5IHRoYXQgaXNuJ3QgY292ZXJlZCBieSB0aGUgb2ZmaWNpYWwgc3BlY2lmaWNhdGlvbi4gRXh0ZW5zaW9ucyBzdGFydCB3aXRoIGB4LWAgKGUuZy4sIGB4LW15YXBwLWxvZ29gKSBhbmQgY2FuIGNvbnRhaW4gYSBwcmltaXRpdmUsIGFuIGFycmF5LCBhbiBvYmplY3QsIG9yIGBudWxsYC4KClRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9ucyBhcmUgcHJvdmlkZWQgYnkgdGhlIHBsdWdpbjoKLSBgeC1mYXN0aWZ5LWNvbmZpZ2AgKG9iamVjdCk6IGFueSBwcm9wZXJ0aWVzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGByb3V0ZU9wdGlvbnMuY29uZmlnYCBwcm9wZXJ0eSBvZiB0aGUgRmFzdGlmeSByb3V0ZS4KCiAgRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50ZWQgdG8gdXNlIHRoZSBmYXN0aWZ5LXJhdy1ib2R5IHBsdWdpbiB0byBjb21wdXRlIGEgY2hlY2tzdW0gb2YgdGhlIHJlcXVlc3QgYm9keSwgeW91IGNvdWxkIGFkZCB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbiB0byB5b3VyIE9wZW5BUEkgc3BlYyB0byBzaWduYWwgdGhlIHBsdWdpbiB0byBzcGVjaWFsbHkgaGFuZGxlIHRoaXMgcm91dGU6CgogIGBgYHlhbWwKICBwYXRoczoKICAgIC93ZWJob29rczoKICAgICAgcG9zdDoKICAgICAgICBvcGVyYXRpb25JZDogcHJvY2Vzc1dlYmhvb2sKICAgICAgICB4LWZhc3RpZnktY29uZmlnOgogICAgICAgICAgcmF3Qm9keTogdHJ1ZQogICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgIDIwNDoKICAgICAgICAgICAgZGVzY3JpcHRpb246IFdlYmhvb2sgcHJvY2Vzc2VkIHN1Y2Nlc3NmdWxseQogIGBgYAoKLSBgeC1uby1mYXN0aWZ5LWNvbmZpZ2AgKHRydWUpOiB0aGlzIHdpbGwgaWdub3JlIHRoaXMgc3BlY2lmaWMgcm91dGUgYXMgaWYgaXQgd2FzIG5vdCBwcmVzZW50IGluIHlvdXIgT3BlbkFQSSBzcGVjaWZpY2F0aW9uOgoKYGBgeWFtbAogIHBhdGhzOgogICAgL3dlYmhvb2tzOgogICAgICBwb3N0OgogICAgICAgIG9wZXJhdGlvbklkOiBwcm9jZXNzV2ViaG9vawogICAgICAgIHgtbm8tZmFzdGlmeS1jb25maWc6IHRydWUKICAgICAgICByZXNwb25zZXM6CiAgICAgICAgICAyMDQ6CiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBXZWJob29rIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHkKICBgYGAKCllvdSBjYW4gYWxzbyBzZXQgY3VzdG9tIE9wZW5BUEkgZXh0ZW5zaW9ucyAoZS5nLiwgYHgtbXlhcHAtZm9vYCkgZm9yIHVzZSB3aXRoaW4geW91ciBhcHAncyBpbXBsZW1lbnRhdGlvbi4gVGhlc2UgcHJvcGVydGllcyBhcmUgcGFzc2VkIHRocm91Z2ggdW5tb2RpZmllZCB0byB0aGUgRmFzdGlmeSByb3V0ZSBvbiBge3JlcSxyZXBseX0ucm91dGVPcHRpb25zLmNvbmZpZ2AuIEV4dGVuc2lvbnMgc3BlY2lmaWVkIG9uIGEgc2NoZW1hIGFyZSBhbHNvIGFjY2Vzc2libGUgKGUuZy4sIGByb3V0ZU9wdGlvbnMuc2NoZW1hLmJvZHlgIG9yIGByb3V0ZU9wdGlvbnMuc2NoZW1hLnJlc3BvbnNlc1s8c3RhdHVzQ29kZT5dYCkuCgo8YSBuYW1lPSJnZW5lcmF0b3IiPjwvYT4KIyMgR2VuZXJhdG9yCgpUbyBtYWtlIGxpZmUgZXZlbiBtb3JlIGVhc3kgdGhlcmUgaXMgdGhlIGBvcGVuYXBpLWdsdWVgIGNsaS4gVGhlIGBvcGVuYXBpLWdsdWVgIGNsaSB0YWtlcyBhIHZhbGlkIE9wZW5BcGkgKHYyL3YzKSBmaWxlIChKU09OIG9yIFlBTUwpIGFuZCBnZW5lcmF0ZXMgYSBwcm9qZWN0IGluY2x1ZGluZyBhIGZhc3RpZnkgcGx1Z2luIHRoYXQgeW91IGNhbiB1c2Ugb24gYW55IGZhc3RpZnkgc2VydmVyLCBhIHN0dWIgb2YgdGhlIHNlcnZpY2VIYW5kbGVycyBjbGFzcyBhbmQgYSBza2VsZXRvbiBvZiBhIHRlc3QgaGFybmVzcyB0byB0ZXN0IHRoZSBwbHVnaW4uIAoKPGEgbmFtZT0iZ2VuZXJhdG9yVXNhZ2UiPjwvYT4KIyMjIFVzYWdlCmBgYAogIG9wZW5hcGktZ2x1ZSBbb3B0aW9uc10gPE9wZW5BcGkgc3BlY2lmaWNhdGlvbj4KYGBgCm9yIGlmIHlvdSBkb24ndCBoYXZlIGBvcGVuYXBpLWdsdWVgIGluc3RhbGxlZDoKYGBgCiAgbnB4IGdpdGh1YjpzZXJpb3VzbWUvZmFzdGlmeS1vcGVuYXBpLWdsdWUgPE9wZW5BcGkgc3BlY2lmaWNhdGlvbj4KYGBgClRoaXMgd2lsbCBnZW5lcmF0ZSBhIHByb2plY3QgYmFzZWQgb24gdGhlIHByb3ZpZGVkIE9wZW5BcGkgc3BlY2lmaWNhdGlvbi4KQW55IGV4aXN0aW5nIGZpbGVzIGluIHRoZSBwcm9qZWN0IGZvbGRlciB3aWxsIGJlIG92ZXJ3cml0dGVuIQpTZWUgdGhlIFtnZW5lcmF0b3IgZXhhbXBsZXNdKCNleGFtcGxlcykgc2VjdGlvbiBmb3IgYSBkZW1vLgo8YSBuYW1lPSJnZW5lcmF0b3JPcHRpb25zIj48L2E+CiMjIyBPcHRpb25zCmBgYAoKICAtcCA8bmFtZT4gICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHByb2plY3QgdG8gZ2VuZXJhdGUKICAtLXByb2plY3ROYW1lPTxuYW1lPiAgICAgICAgW2RlZmF1bHQ6IGdlbmVyYXRlZC1qYXZhc2NyaXB0LXByb2plY3RdCgogIC1iIDxkaXI+IC0tYmFzZURpcj08ZGlyPiAgICBEaXJlY3RvcnkgdG8gZ2VuZXJhdGUgdGhlIHByb2plY3QgaW4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IG11c3QgYWxyZWFkeSBleGlzdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHQ6ICIuIl0KClRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgb25seSB1c2VmdWwgZm9yIHRlc3RpbmcgdGhlIG9wZW5hcGktZ2x1ZSBwbHVnaW46CiAgLWMgLS1jaGVja3N1bU9ubHkgICAgICAgICAgIERvbid0IGdlbmVyYXRlIHRoZSBwcm9qZWN0IG9uIGRpc2sgYnV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGVja3N1bXMgb25seS4KICAtbCAtLWxvY2FsUGx1Z2luICAgICAgICAgICAgVXNlIGEgbG9jYWwgcGF0aCB0byB0aGUgcGx1Z2luLgpgYGAKU2VlIHRoZSBbZ2VuZXJhdG9yIGV4YW1wbGVdKCNnZW5lcmF0b3JFeGFtcGxlcykgc2VjdGlvbiBmb3IgYSBkZW1vLgoKCjxhIG5hbWU9ImV4YW1wbGVzIj48L2E+CiMjIEV4YW1wbGVzCkNsb25lIHRoaXMgcmVwb3NpdG9yeSBhbmQgcnVuIGBucG0gaWAgCgo8YSBuYW1lPSJwbHVnaW5FeGFtcGxlcyI+PC9hPgojIyMgUGx1Z2luCkV4ZWN1dGluZyBgbnBtIHN0YXJ0YCB3aWxsIHN0YXJ0IGZhc3RpZnkgb24gbG9jYWxob3N0IHBvcnQgMzAwMCB3aXRoIHRoZQpyb3V0ZXMgZXh0cmFjdGVkIGZyb20gdGhlIFtwZXRzdG9yZSBleGFtcGxlXShleGFtcGxlcy9wZXRzdG9yZS9wZXRzdG9yZS1vcGVuYXBpLnYzLmpzb24pIGFuZCB0aGUgW2FjY29tcGFueWluZyBzZXJ2aWNlSGFuZGxlcnMgZGVmaW5pdGlvbl0oZXhhbXBsZXMvcGV0c3RvcmUvc2VydmljZS5qcykKCiogaHR0cDovL2xvY2FsaG9zdDozMDAwL3YyL3BldC8yNCB3aWxsIHJldHVybiBhIHBldCBhcyBzcGVjaWZpZWQgaW4gc2VydmljZS5qcwoqIGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC92Mi9wZXQvbXlQZXQgd2lsbCByZXR1cm4gYSBmYXN0aWZ5IHZhbGlkYXRpb24gZXJyb3I6CgpgYGBqc29uCnsKICAic3RhdHVzQ29kZSI6IDQwMCwKICAiZXJyb3IiOiAiQmFkIFJlcXVlc3QiLAogICJtZXNzYWdlIjogInBhcmFtcy5wZXRJZCBzaG91bGQgYmUgaW50ZWdlciIKfQpgYGAKCiogaHR0cDovL2xvY2FsaG9zdDozMDAwL3YyL3BldC9maW5kQnlTdGF0dXM/c3RhdHVzPWF2YWlsYWJsZSZzdGF0dXM9cGVuZGluZyB3aWxsIHJldHVybgogIHRoZSBmb2xsb3dpbmcgZXJyb3I6CgpgYGBqc29uCnsKICAic3RhdHVzQ29kZSI6IDUwMCwKICAiZXJyb3IiOiAiSW50ZXJuYWwgU2VydmVyIEVycm9yIiwKICAibWVzc2FnZSI6ICJPcGVyYXRpb24gZmluZFBldHNCeVN0YXR1cyBub3QgaW1wbGVtZW50ZWQiCn0KYGBgCgoqIGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC92Mi9wZXQvMCB3aWxsIHJldHVybiB0aGUgZm9sbG93aW5nIGVycm9yOgoKYGBganNvbgp7CiAgInN0YXR1c0NvZGUiOiA1MDAsCiAgImVycm9yIjogIkludGVybmFsIFNlcnZlciBFcnJvciIsCiAgIm1lc3NhZ2UiOiJcIm5hbWVcIiBpcyByZXF1aXJlZCEiCn0KYGBgCgphcyB0aGUgcGV0IHJldHVybmVkIGJ5IHNlcnZpY2UuanMgZG9lcyBub3QgbWF0Y2ggdGhlIHJlc3BvbnNlIHNjaGVtYS4KCjxhIG5hbWU9ImdlbmVyYXRvckV4YW1wbGVzIj48L2E+CiMjIyBHZW5lcmF0b3IKVGhlIGZvbGRlciBbZXhhbXBsZXMvZ2VuZXJhdGVkLWphdmFzY3JpcHQtcHJvamVjdF0oZXhhbXBsZXMvZ2VuZXJhdGVkLWphdmFzY3JpcHQtcHJvamVjdCkgY29udGFpbnMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGBvcGVuYXBpLWdsdWUgLWwgLS1iYXNlRGlyPWV4YW1wbGVzIGV4YW1wbGVzL3BldHN0b3JlL3BldHN0b3JlLXN3YWdnZXIudjIueWFtbGAuIFRoZSBnZW5lcmF0ZWQgY29kZSBjYW4gYmUgc3RhcnRlZCB1c2luZyBgbnBtIHN0YXJ0YCBpbiBgZXhhbXBsZXMvZ2VuZXJhdGVkLWphdmFzY3JpcHQtcHJvamVjdGAgKHlvdSB3aWxsIG5lZWQgdG8gcnVuIGBucG0gaWAgaW4gdGhlIGdlbmVyYXRlZCBmb2xkZXIgZmlyc3QpCjxhIG5hbWU9Ik5vdGVzIj48L2E+CiMjIE5vdGVzCi0gdGhlIHBsdWdpbiBpZ25vcmVzIGluZm9ybWF0aW9uIGluIGEgdjMgc3BlY2lmaWNhdGlvbiB1bmRlciBgc2VydmVyL3VybGAgYXMgdGhlcmUgY291bGQgYmUgbXVsdGlwbGUgdmFsdWVzIGhlcmUsIHVzZSB0aGUgYHByZWZpeGAgW29wdGlvbl0oI3BsdWdpbk9wdGlvbnMpIGlmIHlvdSBuZWVkIHRvIHByZWZpeCB5b3VyIHJvdXRlcy4gU2VlIHRoZSBbc2VydmVycyBkb2N1bWVudGF0aW9uXShkb2NzL3NlcnZlcnMubWQpIGZvciBtb3JlIGRldGFpbHMuCi0gZmFzdGlmeSBvbmx5IHN1cHBvcnRzIGBhcHBsaWNhdGlvbi9qc29uYCBhbmQgYHRleHQvcGxhaW5gIG91dCBvZiB0aGUgYm94LiBUaGUgZGVmYXVsdCBjaGFyc2V0IGlzIGB1dGYtOGAuICBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IGRpZmZlcmVudCBjb250ZW50IHR5cGVzLCB5b3UgY2FuIHVzZSB0aGUgZmFzdGlmeSBgYWRkQ29udGVudFR5cGVQYXJzZXJgIEFQSS4KLSBmYXN0aWZ5IHdpbGwgYnkgZGVmYXVsdCBjb2VyY2UgdHlwZXMsIGUuZyB3aGVuIHlvdSBleHBlY3QgYSBudW1iZXIgYSBzdHJpbmcgbGlrZSBgIjEiYCB3aWxsIGFsc28gcGFzcyB2YWxpZGF0aW9uLCB0aGlzIGNhbiBiZSByZWNvbmZpZ3VyZWQsIHNlZSBbVmFsaWRhdGlvbiBhbmQgU2VyaWFsaXphdGlvbl0oaHR0cHM6Ly9mYXN0aWZ5LmRldi9kb2NzL2xhdGVzdC9SZWZlcmVuY2UvVmFsaWRhdGlvbi1hbmQtU2VyaWFsaXphdGlvbi8pLgotIHRoZSBwbHVnaW4gYWltcyB0byBmb2xsb3cgZmFzdGlmeSBhbmQgZG9lcyBub3QgY29tcGVuc2F0ZSBmb3IgZmVhdHVyZXMgdGhhdCBhcmUgcG9zc2libGUgYWNjb3JkaW5nIHRvIHRoZSBPcGVuQXBpIHNwZWNpZmljYXRpb24gYnV0IG5vdCBwb3NzaWJsZSBpbiBzdGFuZGFyZCBmYXN0aWZ5ICh3aXRob3V0IHBsdWdpbnMpLiBUaGlzIHdpbGwga2VlcCB0aGUgcGx1Z2luIGxpZ2h0d2VpZ2h0IGFuZCBtYWludGFpbmFibGUuIEUuZy4gRmFzdGlmeSBkb2VzIG5vdCBzdXBwb3J0IGNvb2tpZSB2YWxpZGF0aW9uLCB3aGlsZSBPcGVuQXBpIHYzIGRvZXMuCi0gaW4gc29tZSBjYXNlcyBob3dldmVyLCB0aGUgcGx1Z2luIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUgeW91IHdpdGggZGF0YSB3aGljaCBjb3VsZCBiZSB1c2VkIHRvIGVuaGFuY2UgT3BlbkFwaSBzdXBwb3J0IHdpdGhpbiB5b3VyIG93biBGYXN0aWZ5IGFwcGxpY2F0aW9uLiBIZXJlIGlzIG9uZSBwb3NzaWJsZSB3YXkgdG8gcGVyZm9ybSBbY29va2llIHZhbGlkYXRpb25dKGRvY3MvY29va2llVmFsaWRhdGlvbkhvd1RvLm1kKSAgeW91cnNlbGYuCi0gaWYgeW91IGhhdmUgc3BlY2lhbCBuZWVkcyBvbiBxdWVyeXN0cmluZyBoYW5kbGluZyAoZS5nLiBhcnJheXMsIG9iamVjdHMgZXRjKSB0aGVuIGZhc3RpZnkgc3VwcG9ydHMgYSBbY3VzdG9tIHF1ZXJ5c3RyaW5nIHBhcnNlcl0oaHR0cHM6Ly9mYXN0aWZ5LmRldi9kb2NzL2xhdGVzdC9SZWZlcmVuY2UvU2VydmVyLyNxdWVyeXN0cmluZ3BhcnNlcikuIFlvdSBtaWdodCBuZWVkIHRvIHBhc3MgdGhlIEFKViBvcHRpb24gYGNvZXJjZVR5cGVzOiAnYXJyYXknYCBhcyBhbiBvcHRpb24gdG8gRmFzdGlmeS4KLSB0aGUgcGx1Z2luIGlzIGFuIEVDTUFzY3JpcHQgTW9kdWxlIChha2EgRVNNKS4gSWYgeW91IGFyZSB1c2luZyBUeXBlc2NyaXB0IHRoZW4gbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgcmVhZDogaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svZXNtLW5vZGUuaHRtbCB0byBhdm9pZCBhbnkgY29uZnVzaW9uLgotIElmIHlvdSB3YW50IHRvIHVzZSBhIHNwZWNpZmljYXRpb24gdGhhdCBjb25zaXN0cyBvZiBtdWx0aXBsZSBmaWxlcyB0aGVuIHBsZWFzZSBjaGVjayBvdXQgdGhlIHBhZ2Ugb24gW3N1YnNjaGVtYXNdKGRvY3Mvc3ViU2NoZW1hcy5tZCkgCi0gRmFzdGlmeSB1c2VzIEFKViBzdHJpY3QgbW9kZSBpbiB2YWxpZGF0aW5nIHNjaGVtYXMuIElmIHlvdSBnZXQgYW4gZXJyb3IgbGlrZSBgLi4uLmR1ZSB0byBlcnJvciBzdHJpY3QgbW9kZTogdW5rbm93biBrZXl3b3JkOiAiLi4uImAgdGhlbiBwbGVhc2UgY2hlY2sgb3V0IHRoZSBwYWdlIG9uIFtBSlYgc3RyaWN0IG1vZGVdKGRvY3MvQUpWc3RyaWN0TW9kZS5tZCkgCi0gRmFzdGlmeSBkb2VzIG5vdCBzdXBwb3J0IGBtdWx0aXBhcnQvZm9ybS1kYXRhYCBvdXQgb2YgdGhlIGJveC4gSWYgeW91IHdhbnQgdG8gdXNlIGl0IHRoZW4gaGF2ZSBhIGxvb2sgYXQ6IFtAZmFzdGlmeS9tdWx0aXBhcnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0aWZ5L2Zhc3RpZnktbXVsdGlwYXJ0KS4KLSBGYXN0aWZ5IHVzZXMgQUpWIHdpdGggSlNPTiBzY2hlbWEgZHJhZnQtMDcgb3V0IG9mIHRoZSBib3guIElmIHlvdSB3YW50IHRvIHVzZSBKU09OIHNjaGVtYSBkcmFmdC0yMDIwLTEyIGZlYXR1cmVzIGluIHlvdXIgT3BlbkFwaSAzLjErIHNjaGVtYSB0aGVuIGhhdmUgYSBsb29rIGF0IFt1c2luZyBKU09Oc2NoZW1hIDIwMjBdKGRvY3Mvc2NoZW1hMjAyMC5tZCkgCgo8YSBuYW1lPSJDb250cmlidXRpbmciPjwvYT4KIyMgQ29udHJpYnV0aW5nCi0gY29udHJpYnV0aW9ucyBhcmUgYWx3YXlzIHdlbGNvbWUuIAotIGlmIHlvdSBwbGFuIG9uIHN1Ym1pdHRpbmcgbmV3IGZlYXR1cmVzIHRoZW4gcGxlYXNlIGNyZWF0ZSBhbiBpc3N1ZSBmaXJzdCB0byBkaXNjdXNzIGFuZCBhdm9pZCBkaXNhcHBvaW50bWVudHMuCi0gbWFpbiBkZXZlbG9wbWVudCBpcyBkb25lIG9uIHRoZSBtYXN0ZXIgYnJhbmNoIHRoZXJlZm9yZSBQUnMgdG8gdGhhdCBicmFuY2ggYXJlIHByZWZlcnJlZC4KLSBwbGVhc2UgbWFrZSBzdXJlIHlvdSBoYXZlIHJ1biBgbnBtIHRlc3RgIGJlZm9yZSB5b3Ugc3VibWl0IGEgUFIuCjxhIG5hbWU9IkZhc3RpZnktc3dhZ2dlcmdlbiI+PC9hPgojIyBGYXN0aWZ5LXN3YWdnZXJnZW4KRmFzdGlmeS1vcGVuYXBpLWdsdWUgaXMgdGhlIHN1Y2Nlc3NvciB0byB0aGUgbm93IGRlcHJlY2F0ZWQgW2Zhc3RpZnktc3dhZ2dlcmdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3NlcmlvdXNtZS9mYXN0aWZ5LXN3YWdnZXJnZW4pIHByb2plY3QuCk1haW4gZGlmZmVyZW5jZSBpcyB0aGF0IGl0OiAKLSBhaW1zIHRvIHN1cHBvcnQgT3BlbkFwaSBhbmQgbm90IGp1c3QgU3dhZ2dlciBWMiAoaGVuY2UgdGhlIG5hbWUgY2hhbmdlKQotIGRvZXMgbm90IGluY2x1ZGUgZmFzdGlmeS1zd2FnZ2VyIHN1cHBvcnQgYW55bW9yZS4gSWYgeW91IG5lZWQgdG8gc2hvdyB0aGUgc3dhZ2dlciBVSSB5b3UgY2FuIGluY2x1ZGUgaXQgeW91cnNlbGYuIFJlbW92aW5nIHRoZSBzd2FnZ2VyIFVJIGNsZWFycyB1cCBhIG51bWJlciBvZiBkZXBlbmRlbmNpZXMuCjxhIG5hbWU9ImxpY2Vuc2UiPjwvYT4KIyBMaWNlbnNlCkxpY2Vuc2VkIHVuZGVyIFtNSVRdKExJQ0VOU0UudHh0KQo= readmeEtag: '"790cdc6a21f22b2785b26ddd6cfa0714172cf58e"' readmeLastModified: Fri, 26 Sep 2025 14:38:03 GMT repositoryId: 139273011 description: >- A plugin for the Fastify webserver to autogenerate a Fastify configuration based on a OpenApi(v2/v3) specification. created: '2018-06-30T19:02:58Z' updated: '2026-02-05T16:51:04Z' language: JavaScript archived: false stars: 245 watchers: 5 forks: 35 owner: seriousme logo: https://avatars.githubusercontent.com/u/3322396?v=4 license: MIT repoEtag: '"5409e3950b6e6a2c61fa63228358de84702e12845d0e0d2fbd0d322942d13ff1"' repoLastModified: Thu, 05 Feb 2026 16:51:04 GMT foundInMaster: true category: - Data Validators - Parsers id: c0241df58ca59d894f729b9091502762 - source: openapi3 tags repository: https://github.com/luolingchun/flask-openapi v3: true repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICAgIDxhIGhyZWY9Imh0dHBzOi8vbHVvbGluZ2NodW4uZ2l0aHViLmlvL2ZsYXNrLW9wZW5hcGkzLyIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgIDxpbWcgY2xhc3M9Im9mZi1nbGIiIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2x1b2xpbmdjaHVuL2ZsYXNrLW9wZW5hcGkzL21hc3Rlci9kb2NzL2ltYWdlcy9sb2dvLXRleHQuc3ZnIiAKICAgICAgICAgICAgIHdpZHRoPSI2MCUiIGhlaWdodD0iYXV0byIgYWx0PSJsb2dvIj4KICAgIDwvYT4KPC9kaXY+CjxwIGFsaWduPSJjZW50ZXIiPgogICAgPGVtPkdlbmVyYXRlIFJFU1QgQVBJIGFuZCBPcGVuQVBJIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgRmxhc2sgcHJvamVjdC48L2VtPgo8L3A+CjxwIGFsaWduPSJjZW50ZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2x1b2xpbmdjaHVuL2ZsYXNrLW9wZW5hcGkzL2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3RzLnltbCIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgIDxpbWcgY2xhc3M9Im9mZi1nbGIiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvYWN0aW9ucy93b3JrZmxvdy9zdGF0dXMvbHVvbGluZ2NodW4vZmxhc2stb3BlbmFwaTMvdGVzdHMueW1sP2JyYW5jaD1tYXN0ZXIiIGFsdD0idGVzdCI+CiAgICA8L2E+CiAgICA8YSBocmVmPSJodHRwczovL3B5cGkub3JnL3Byb2plY3QvZmxhc2stb3BlbmFwaTMvIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgPGltZyBjbGFzcz0ib2ZmLWdsYiIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9mbGFzay1vcGVuYXBpMyIgYWx0PSJweXBpIj4KICAgIDwvYT4KICAgIDxhIGhyZWY9Imh0dHBzOi8vcHlwaXN0YXRzLm9yZy9wYWNrYWdlcy9mbGFzay1vcGVuYXBpMyIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgIDxpbWcgY2xhc3M9Im9mZi1nbGIiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2RtL2ZsYXNrLW9wZW5hcGkzIiBhbHQ9InB5cGlzdGF0cyI+CiAgICA8L2E+CiAgICA8YSBocmVmPSJodHRwczovL3B5cGkub3JnL3Byb2plY3QvZmxhc2stb3BlbmFwaTMvIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgPGltZyBjbGFzcz0ib2ZmLWdsYiIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy9mbGFzay1vcGVuYXBpMyIgYWx0PSJweXBpIHZlcnNpb25zIj4KICAgIDwvYT4KPC9wPgoKKipGbGFzayBPcGVuQVBJMyoqIGlzIGEgd2ViIEFQSSBmcmFtZXdvcmsgYmFzZWQgb24gKipGbGFzayoqLiBJdCB1c2VzICoqUHlkYW50aWMqKiB0byB2ZXJpZnkgZGF0YSBhbmQgYXV0b21hdGljCmdlbmVyYXRpb24gb2YgaW50ZXJhY3Rpb24gZG9jdW1lbnRhdGlvbi4KClRoZSBrZXkgZmVhdHVyZXMgYXJlOgoKLSAqKkVhc3kgdG8gY29kZToqKiBFYXN5IHRvIHVzZSBhbmQgZWFzeSB0byBsZWFybgoKLSAqKlN0YW5kYXJkIGRvY3VtZW50IHNwZWNpZmljYXRpb246KiogQmFzZWQgb24gW09wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wKQoKLSAqKkludGVyYWN0aXZlIE9wZW5BUEkgZG9jdW1lbnRhdGlvbjoqKiBbU3dhZ2dlcl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkpLCBbUmVkb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jKSwgW1JhcGlEb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9yYXBpLWRvYy9SYXBpRG9jKSwgW1JhcGlQZGZdKGh0dHBzOi8vbXJpbjkuZ2l0aHViLmlvL1JhcGlQZGYvKSwgW1NjYWxhcl0oaHR0cHM6Ly9naXRodWIuY29tL3NjYWxhci9zY2FsYXIpLCBbRWxlbWVudHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9wbGlnaHRpby9lbGVtZW50cykKCi0gKipEYXRhIHZhbGlkYXRpb246KiogRmFzdCBkYXRhIHZlcmlmaWNhdGlvbiBiYXNlZCBvbiBbUHlkYW50aWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9weWRhbnRpYy9weWRhbnRpYykKCiMjIFJlcXVpcmVtZW50cwoKUHl0aG9uIDMuMTArCgpmbGFzay1vcGVuYXBpMyBpcyBkZXBlbmRlbnQgb24gdGhlIGZvbGxvd2luZyBsaWJyYXJpZXM6CgotIFtGbGFza10oaHR0cHM6Ly9naXRodWIuY29tL3BhbGxldHMvZmxhc2spIGZvciB0aGUgd2ViIGFwcC4KLSBbUHlkYW50aWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9weWRhbnRpYy9weWRhbnRpYykgZm9yIHRoZSBkYXRhIHZhbGlkYXRpb24uCgojIyBJbnN0YWxsYXRpb24KCmBgYGJhc2gKcGlwIGluc3RhbGwgLVUgZmxhc2stb3BlbmFwaTNbc3dhZ2dlcl0KYGBgCgpvcgoKYGBgYmFzaApjb25kYSBpbnN0YWxsIC1jIGNvbmRhLWZvcmdlIGZsYXNrLW9wZW5hcGkzW3N3YWdnZXJdCmBgYAoKPGRldGFpbHMgbWFya2Rvd249ImJsb2NrIj4KPHN1bW1hcnk+T3B0aW9uYWwgZGVwZW5kZW5jaWVzPC9zdW1tYXJ5PgoKLSBbcHl0aG9uLWVtYWlsLXZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL0pvc2hEYXRhL3B5dGhvbi1lbWFpbC12YWxpZGF0b3IpIHN1cHBvcnRzIGVtYWlsIHZlcmlmaWNhdGlvbi4KLSBbcHl0aG9uLWRvdGVudl0oaHR0cHM6Ly9naXRodWIuY29tL3RoZXNrdW1hci9weXRob24tZG90ZW52I3JlYWRtZSkgZW5hYmxlcyBzdXBwb3J0CiAgZm9yIFtFbnZpcm9ubWVudCBWYXJpYWJsZXMgRnJvbSBkb3RlbnZdKGh0dHBzOi8vZmxhc2sucGFsbGV0c3Byb2plY3RzLmNvbS9lbi9sYXRlc3QvY2xpLyNkb3RlbnYpIHdoZW4gcnVubmluZyBgZmxhc2tgCiAgY29tbWFuZHMuCi0gW3B5eWFtbF0oaHR0cHM6Ly9naXRodWIuY29tL3lhbWwvcHl5YW1sKSBpcyB1c2VkIHRvIG91dHB1dCB0aGUgT3BlbkFQSSBkb2N1bWVudCBpbiB5YW1sIGZvcm1hdC4KLSBbYXNnaXJlZl0oaHR0cHM6Ly9naXRodWIuY29tL2RqYW5nby9hc2dpcmVmKSBhbGxvd3Mgdmlld3MgdG8gYmUgZGVmaW5lZCB3aXRoIGBhc3luYyBkZWZgIGFuZCB1c2UgYGF3YWl0YC4KLSBbZmxhc2stb3BlbmFwaTMtcGx1Z2luc10oaHR0cHM6Ly9naXRodWIuY29tL2x1b2xpbmdjaHVuL2ZsYXNrLW9wZW5hcGkzLXBsdWdpbnMpIFByb3ZpZGUgT3BlbkFQSSBVSSBmb3IgZmxhc2stb3BlbmFwaTMuCgpUbyBpbnN0YWxsIHRoZXNlIGRlcGVuZGVuY2llcyB3aXRoIGZsYXNrLW9wZW5hcGkzOgoKYGBgYmFzaApwaXAgaW5zdGFsbCBmbGFzay1vcGVuYXBpM1t5YW1sXQojIG9yCnBpcCBpbnN0YWxsIGZsYXNrLW9wZW5hcGkzW2FzeW5jXQojIG9yCnBpcCBpbnN0YWxsIGZsYXNrLW9wZW5hcGkzW2RvdGVudl0KIyBvcgpwaXAgaW5zdGFsbCBmbGFzay1vcGVuYXBpM1tlbWFpbF0KIyBvciBhbGwKcGlwIGluc3RhbGwgZmxhc2stb3BlbmFwaTNbeWFtbCxhc3luYyxkb3RlbnYsZW1haWxdCiMgb3IgbWFudWFsbHkKcGlwIGluc3RhbGwgcHl5YW1sIGFzZ2lyZWYgcHl0aG9uLWRvdGVudiBlbWFpbC12YWxpZGF0b3IKIyBPcGVuQVBJIFVJIHBsdWdpbnMKcGlwIGluc3RhbGwgLVUgZmxhc2stb3BlbmFwaTNbc3dhZ2dlcixyZWRvYyxyYXBpZG9jLHJhcGlwZGYsc2NhbGFyLGVsZW1lbnRzXQpgYGAKCjwvZGV0YWlscz4KCiMjIEEgU2ltcGxlIEV4YW1wbGUKCkhlcmUncyBhIHNpbXBsZSBleGFtcGxlLCBmdXJ0aGVyIGdvIHRvIHRoZSBbRXhhbXBsZV0oaHR0cHM6Ly9sdW9saW5nY2h1bi5naXRodWIuaW8vZmxhc2stb3BlbmFwaTMvbGF0ZXN0L0V4YW1wbGUvKS4KCmBgYHB5dGhvbgpmcm9tIHB5ZGFudGljIGltcG9ydCBCYXNlTW9kZWwKCmZyb20gZmxhc2tfb3BlbmFwaTMgaW1wb3J0IEluZm8sIFRhZwpmcm9tIGZsYXNrX29wZW5hcGkzIGltcG9ydCBPcGVuQVBJCgppbmZvID0gSW5mbyh0aXRsZT0iYm9vayBBUEkiLCB2ZXJzaW9uPSIxLjAuMCIpCmFwcCA9IE9wZW5BUEkoX19uYW1lX18sIGluZm89aW5mbykKCmJvb2tfdGFnID0gVGFnKG5hbWU9ImJvb2siLCBkZXNjcmlwdGlvbj0iU29tZSBCb29rIikKCgpjbGFzcyBCb29rUXVlcnkoQmFzZU1vZGVsKToKICAgIGFnZTogaW50CiAgICBhdXRob3I6IHN0cgoKCkBhcHAuZ2V0KCIvYm9vayIsIHN1bW1hcnk9ImdldCBib29rcyIsIHRhZ3M9W2Jvb2tfdGFnXSkKZGVmIGdldF9ib29rKHF1ZXJ5OiBCb29rUXVlcnkpOgogICAgIiIiCiAgICB0byBnZXQgYWxsIGJvb2tzCiAgICAiIiIKICAgIHJldHVybiB7CiAgICAgICAgImNvZGUiOiAwLAogICAgICAgICJtZXNzYWdlIjogIm9rIiwKICAgICAgICAiZGF0YSI6IFsKICAgICAgICAgICAgeyJiaWQiOiAxLCAiYWdlIjogcXVlcnkuYWdlLCAiYXV0aG9yIjogcXVlcnkuYXV0aG9yfSwKICAgICAgICAgICAgeyJiaWQiOiAyLCAiYWdlIjogcXVlcnkuYWdlLCAiYXV0aG9yIjogcXVlcnkuYXV0aG9yfQogICAgICAgIF0KICAgIH0KCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgYXBwLnJ1bihkZWJ1Zz1UcnVlKQpgYGAKCjxkZXRhaWxzPgo8c3VtbWFyeT5DbGFzcy1iYXNlZCBBUEkgVmlldyBFeGFtcGxlPC9zdW1tYXJ5PgoKYGBgcHl0aG9uCmZyb20gcHlkYW50aWMgaW1wb3J0IEJhc2VNb2RlbCwgRmllbGQKCmZyb20gZmxhc2tfb3BlbmFwaTMgaW1wb3J0IE9wZW5BUEksIFRhZywgSW5mbywgQVBJVmlldwoKCmluZm8gPSBJbmZvKHRpdGxlPSJib29rIEFQSSIsIHZlcnNpb249IjEuMC4wIikKYXBwID0gT3BlbkFQSShfX25hbWVfXywgaW5mbz1pbmZvKQoKYXBpX3ZpZXcgPSBBUElWaWV3KHVybF9wcmVmaXg9Ii9hcGkvdjEiLCB2aWV3X3RhZ3M9W1RhZyhuYW1lPSJib29rIildKQoKCmNsYXNzIEJvb2tQYXRoKEJhc2VNb2RlbCk6CiAgICBpZDogaW50ID0gRmllbGQoLi4uLCBkZXNjcmlwdGlvbj0iYm9vayBJRCIpCgoKY2xhc3MgQm9va1F1ZXJ5KEJhc2VNb2RlbCk6CiAgICBhZ2U6IGludCB8IE5vbmUgPSBGaWVsZChOb25lLCBkZXNjcmlwdGlvbj0iQWdlIikKCgpjbGFzcyBCb29rQm9keShCYXNlTW9kZWwpOgogICAgYWdlOiBpbnQgfCBOb25lID0gRmllbGQoLi4uLCBnZT0yLCBsZT00LCBkZXNjcmlwdGlvbj0iQWdlIikKICAgIGF1dGhvcjogc3RyID0gRmllbGQoTm9uZSwgbWluX2xlbmd0aD0yLCBtYXhfbGVuZ3RoPTQsIGRlc2NyaXB0aW9uPSJBdXRob3IiKQoKCkBhcGlfdmlldy5yb3V0ZSgiL2Jvb2siKQpjbGFzcyBCb29rTGlzdEFQSVZpZXc6CiAgICBhID0gMQoKICAgIEBhcGlfdmlldy5kb2Moc3VtbWFyeT0iZ2V0IGJvb2sgbGlzdCIpCiAgICBkZWYgZ2V0KHNlbGYsIHF1ZXJ5OiBCb29rUXVlcnkpOgogICAgICAgIHByaW50KHNlbGYuYSkKICAgICAgICByZXR1cm4gcXVlcnkubW9kZWxfZHVtcF9qc29uKCkKCiAgICBAYXBpX3ZpZXcuZG9jKHN1bW1hcnk9ImNyZWF0ZSBib29rIikKICAgIGRlZiBwb3N0KHNlbGYsIGJvZHk6IEJvb2tCb2R5KToKICAgICAgICAiIiJkZXNjcmlwdGlvbiBmb3IgYSBjcmVhdGVkIGJvb2siIiIKICAgICAgICByZXR1cm4gYm9keS5tb2RlbF9kdW1wX2pzb24oKQoKCkBhcGlfdmlldy5yb3V0ZSgiL2Jvb2svPGlkPiIpCmNsYXNzIEJvb2tBUElWaWV3OgogICAgQGFwaV92aWV3LmRvYyhzdW1tYXJ5PSJnZXQgYm9vayIpCiAgICBkZWYgZ2V0KHNlbGYsIHBhdGg6IEJvb2tQYXRoKToKICAgICAgICBwcmludChwYXRoKQogICAgICAgIHJldHVybiAiZ2V0IgoKICAgIEBhcGlfdmlldy5kb2Moc3VtbWFyeT0idXBkYXRlIGJvb2siKQogICAgZGVmIHB1dChzZWxmLCBwYXRoOiBCb29rUGF0aCk6CiAgICAgICAgcHJpbnQocGF0aCkKICAgICAgICByZXR1cm4gInB1dCIKCiAgICBAYXBpX3ZpZXcuZG9jKHN1bW1hcnk9ImRlbGV0ZSBib29rIiwgZGVwcmVjYXRlZD1UcnVlKQogICAgZGVmIGRlbGV0ZShzZWxmLCBwYXRoOiBCb29rUGF0aCk6CiAgICAgICAgcHJpbnQocGF0aCkKICAgICAgICByZXR1cm4gImRlbGV0ZSIKCgphcHAucmVnaXN0ZXJfYXBpX3ZpZXcoYXBpX3ZpZXcpCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgYXBwLnJ1bihkZWJ1Zz1UcnVlKQpgYGAKCjwvZGV0YWlscz4KCiMjIEFQSSBEb2N1bWVudAoKUnVuIHRoZSBbc2ltcGxlIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9sdW9saW5nY2h1bi9mbGFzay1vcGVuYXBpMy9ibG9iL21hc3Rlci9leGFtcGxlcy9zaW1wbGVfZGVtby5weSksIGFuZCBnbyB0byBodHRwOi8vMTI3LjAuMC4xOjUwMDAvb3BlbmFwaS4KCj4gT3BlbkFQSSBVSSBwbHVnaW5zIGFyZSBvcHRpb25hbCBkZXBlbmRlbmNpZXMgdGhhdCByZXF1aXJlIG1hbnVhbCBpbnN0YWxsYXRpb24uCj4KPiBgcGlwIGluc3RhbGwgLVUgZmxhc2stb3BlbmFwaTNbc3dhZ2dlcixyZWRvYyxyYXBpZG9jLHJhcGlwZGYsc2NhbGFyLGVsZW1lbnRzXWAKPgo+IE1vcmUgb3B0aW9uYWwgdWkgdGVtcGxhdGVzIGdvdG8gdGhlIGRvY3VtZW50Cj4gYWJvdXQgW1VJX1RlbXBsYXRlc10oaHR0cHM6Ly9sdW9saW5nY2h1bi5naXRodWIuaW8vZmxhc2stb3BlbmFwaTMvbGF0ZXN0L1VzYWdlL1VJX1RlbXBsYXRlcy8pLgoKIVtvcGVuYXBpXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbHVvbGluZ2NodW4vZmxhc2stb3BlbmFwaTMvbWFzdGVyL2RvY3MvaW1hZ2VzL29wZW5hcGktYWxsLnBuZykK readmeEtag: '"42f07b2bab518037b7c58535d07874183c378cd8"' readmeLastModified: Sat, 18 Oct 2025 06:06:04 GMT repositoryId: 362315893 description: Generate REST API and OpenAPI documentation for your Flask project. created: '2021-04-28T02:39:57Z' updated: '2026-02-05T01:24:48Z' language: Python archived: false stars: 258 watchers: 6 forks: 45 owner: luolingchun logo: https://avatars.githubusercontent.com/u/22740403?v=4 license: MIT repoEtag: '"385754d861a161499d59c5d314c10e65ea82bc6334c5dbdbd634bf72f04ffbed"' repoLastModified: Thu, 05 Feb 2026 01:24:48 GMT foundInMaster: true category: Server Implementations id: 99911adb8c5a6cb23bdeadbe7854c4f2 oldLocations: - https://github.com/luolingchun/flask-openapi3 - source: openapi3 tags repository: https://github.com/microsoft/openapi.net.odata v3: true repositoryMetadata: base64Readme: >- WyFbbnVnZXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvdi9NaWNyb3NvZnQuT3BlbkFwaS5PRGF0YS5zdmcpXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lk9wZW5BcGkuT0RhdGEvKQoKIyBDb252ZXJ0IE9EYXRhIHRvIE9wZW5BUEkuTkVUCgojIyBJbnRyb2R1Y3Rpb24KClRoZSAqKk1pY3Jvc29mdC5PcGVuQVBJLk9EYXRhLlJlYWRlcioqIGxpYnJhcnkgaGVscHMgcmVwcmVzZW50IGFuIE9EYXRhIHNlcnZpY2UgbWV0YWRhdGEgYXMgYW4gT3BlbkFwaSBkZXNjcmlwdGlvbi4gSXQgY29udmVydHMgW09EYXRhXShodHRwOi8vd3d3Lm9kYXRhLm9yZykgW0NTRExdKGh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL29kYXRhL29kYXRhLWNzZGwteG1sL3Y0LjAxL29kYXRhLWNzZGwteG1sLXY0LjAxLmh0bWwpLCB0aGUgWE1MIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBFbnRpdHkgRGF0YSBNb2RlbCAoRURNKSBkZXNjcmliaW5nIGFuIE9EYXRhIHNlcnZpY2UgaW50byBbT3BlbiBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKSBiYXNlZCBvbiBbT3BlbkFQSS5ORVRdKGh0dHA6Ly9ha2EubXMvb3BlbmFwaSkgb2JqZWN0IG1vZGVsLgoKVGhlIGNvbnZlcnNpb24gaXMgYmFzZWQgb24gdGhlIG1hcHBpbmcgZG9jIGZyb20gW09BU0lTIE9EYXRhIE9wZW5BUEkgdjEuMF0oaHR0cHM6Ly93d3cub2FzaXMtb3Blbi5vcmcvY29tbWl0dGVlcy9kb2N1bWVudC5waHA/ZG9jdW1lbnRfaWQ9NjE4NTImd2dfYWJicmV2PW9kYXRhKSBhbmQgdXNlcyB0aGUgZm9sbG93aW5nIDoKCjEuIFtDYXBhYmlsaXRpZXMgdm9jYWJ1bGFyeSBhbm5vdGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vb2FzaXMtdGNzL29kYXRhLXZvY2FidWxhcmllcy9ibG9iL21haW4vdm9jYWJ1bGFyaWVzL09yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEueG1sKQoyLiBbQXV0aG9yaXphdGlvbiB2b2NhYnVsYXJ5IGFubm90YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXNpcy10Y3Mvb2RhdGEtdm9jYWJ1bGFyaWVzL2Jsb2IvbWFpbi92b2NhYnVsYXJpZXMvT3JnLk9EYXRhLkF1dGhvcml6YXRpb24uVjEueG1sKQozLiBbQ29yZSB2b2NhYnVsYXJ5IGFubm90YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXNpcy10Y3Mvb2RhdGEtdm9jYWJ1bGFyaWVzL2Jsb2IvbWFpbi92b2NhYnVsYXJpZXMvT3JnLk9EYXRhLkNvcmUuVjEueG1sKQo0LiBOYXZpZ2F0aW9uIHByb3BlcnR5IHBhdGgKNS4gRWRtIG9wZXJhdGlvbiBhbmQgb3BlcmF0aW9uIGltcG9ydCBwYXRoCgojIyBPdmVydmlldwoKVGhlIGltYWdlIGJlbG93IGlzIGdlbmVyaWMgb3ZlcnZpZXcgb2YgaG93IHRoaXMgbGlicmFyeSBjYW4gY29udmVydCB0aGUgRURNIG1vZGVsIHRvIGFuIFtPcGVuQVBJLk5FVCBkb2N1bWVudF0oaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9PcGVuQVBJLk5FVC9ibG9iL21haW4vc3JjL01pY3Jvc29mdC5PcGVuQXBpL01vZGVscy9PcGVuQXBpRG9jdW1lbnQuY3MpIG9iamVjdC4KCiFbQ29udmVydCBPRGF0YSBDU0RMIHRvIE9wZW5BUEldKGRvY3MvaW1hZ2VzL29kYXRhLTItb3BlbmFwaS5wbmcgIk1hcCAvLy8gT0RhdGEgQ1NETCAtLT4gT3BlbkFQSS5ORVQiKQoKRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIENTREwgYW5kIEVudGl0eSBEYXRhIG1vZGVsLCBwbGVhc2UgcmVmZXIgdG8gW2h0dHA6Ly93d3cub2RhdGEub3JnL2RvY3VtZW50YXRpb25dKGh0dHA6Ly93d3cub2RhdGEub3JnL2RvY3VtZW50YXRpb24pLgpGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgT3BlbiBBUEkgb2JqZWN0IG9mIG1vZGVsLCBwbGVhc2UgcmVmZXIgdG8gW2h0dHA6Ly9naXRodWIuY29tL21pY3Jvc29mdC9PcGVuQVBJLk5FVF0oaHR0cDovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L09wZW5BUEkuTkVUKQoKIyMgU2FtcGxlIGNvZGUKClRoZSBmb2xsb3dpbmcgc2FtcGxlIGNvZGUgaWxsdXN0cmF0ZXMgdGhlIHVzZSBvZiB0aGUgbGlicmFyeQoKYGBgY3NoYXJwCnB1YmxpYyBzdGF0aWMgdm9pZCBHZW5lcmF0ZU9wZW5BcGlEZXNjcmlwdGlvbigpCnsKICAgIElFZG1Nb2RlbCBtb2RlbCA9IEdldEVkbU1vZGVsKCk7CiAgICBPcGVuQXBpRG9jdW1lbnQgZG9jdW1lbnQgPSBtb2RlbC5Db252ZXJ0VG9PcGVuQXBpKCk7CiAgICB2YXIgb3V0cHV0SlNPTiA9IGRvY3VtZW50LlNlcmlhbGl6ZUFzSnNvbihPcGVuQXBpU3BlY1ZlcnNpb24uT3BlbkFwaTNfMCk7CiAgICB2YXIgb3V0cHV0WUFNTCA9IGRvY3VtZW50LlNlcmlhbGl6ZUFzWWFtbChPcGVuQXBpU3BlY1ZlcnNpb24uT3BlbkFwaTNfMCk7Cn0KCnB1YmxpYyBzdGF0aWMgSUVkbU1vZGVsIEdldEVkbU1vZGVsKCkKewogICAgLy8gbG9hZCBFRE0gbW9kZWwgaGVyZS4uLgp9CmBgYAoKT3Igd2l0aCB0aGUgY29udmVydCBzZXR0aW5nczoKCmBgYGNzaGFycApwdWJsaWMgc3RhdGljIHZvaWQgR2VuZXJhdGVPcGVuQXBpRGVzY3JpcHRpb24oKQp7CiAgICBJRWRtTW9kZWwgbW9kZWwgPSBHZXRFZG1Nb2RlbCgpOwogICAgT3BlbkFwaUNvbnZlcnRTZXR0aW5ncyBzZXR0aW5ncyA9IG5ldyBPcGVuQXBpQ29udmVydFNldHRpbmdzCiAgICB7CiAgICAgICAgLy8gY29uZmlndXJhdGlvbgogICAgfTsKICAgIE9wZW5BcGlEb2N1bWVudCBkb2N1bWVudCA9IG1vZGVsLkNvbnZlcnRUb09wZW5BcGkoc2V0dGluZ3MpOwogICAgdmFyIG91dHB1dEpTT04gPSBkb2N1bWVudC5TZXJpYWxpemVBc0pzb24oT3BlbkFwaVNwZWNWZXJzaW9uLk9wZW5BcGkzXzApOwogICAgdmFyIG91dHB1dFlBTUwgPSBkb2N1bWVudC5TZXJpYWxpemVBc1lhbWwoT3BlbkFwaVNwZWNWZXJzaW9uLk9wZW5BcGkzXzApOwp9CgpwdWJsaWMgc3RhdGljIElFZG1Nb2RlbCBHZXRFZG1Nb2RlbCgpCnsKICAgIC8vIGxvYWQgRURNIG1vZGVsIGhlcmUuLi4KfQpgYGAKClRoZSBgR2V0RWRtTW9kZWwoKWAgbWV0aG9kIGNhbiBsb2FkIGEgbW9kZWwgaW4gMyB3YXlzOgoKMS4gQ3JlYXRlIHRoZSBFZG0gbW9kZWwgZnJvbSBzY3JhdGNoLiBGb3IgZGV0YWlscyByZWZlciBbYnVpbGRpbmcgYSBiYXNpYyBtb2RlbF0oaHR0cDovL29kYXRhLmdpdGh1Yi5pby9vZGF0YS5uZXQvIzAyLTAxLWJ1aWxkLWJhc2ljLW1vZGVsKQoKMi4gTG9hZCB0aGUgRWRtIG1vZGVsIGZyb20gQ1NETCBmaWxlLiBUaGUgZm9sbG93aW5nIHNob3dzIGEgY29kZSBzYW1wbGUgdGhhdCBsb2FkcyBhIG1vZGVsIGZyb20gYSBjc2RsIGZpbGUuCgogICAgYGBgY3NoYXJwCiAgICBwdWJsaWMgc3RhdGljIElFZG1Nb2RlbCBHZXRFZG1Nb2RlbCgpCiAgICB7CiAgICAgICAgc3RyaW5nIGNzZGxGaWxlUGF0aCA9IEAiYzpcY3NkbC54bWwiOwogICAgICAgIHN0cmluZyBjc2RsID0gU3lzdGVtLklPLkZpbGUuUmVhZEFsbFRleHQoY3NkbEZpbGVQYXRoKTsKICAgICAgICBJRWRtTW9kZWwgbW9kZWwgPSBDc2RsUmVhZGVyLlBhcnNlKFhFbGVtZW50LlBhcnNlKGNzZGwpLkNyZWF0ZVJlYWRlcigpKTsKICAgICAgICByZXR1cm4gbW9kZWw7CiAgICB9CiAgICBgYGAKCjMuIENyZWF0ZSB0aGUgRWRtIG1vZGVsIHVzaW5nIFdlYiBBUEkgT0RhdGEgbW9kZWwgYnVpbGRlci4gRm9yIGRldGFpbHMgcmVmZXIgdG8gdGhlIFt3ZWIgYXBpIG1vZGVsIGJ1aWxkZXIgYXJ0aWNsZV0oaHR0cDovL29kYXRhLmdpdGh1Yi5pby9XZWJBcGkvIzAyLTAxLW1vZGVsLWJ1aWxkZXItYWJzdHJhY3QpCgoKIyMgTnVnZXQgcGFja2FnZXMKClRoZSBPcGVuQVBJLk9EYXRhLnJlYWRlciBudWdldCBwYWNrYWdlIGlzIGF0OiBbaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5PcGVuQXBpLk9EYXRhL10oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5PcGVuQXBpLk9EYXRhKQoKLS0tCgojIENvbnRyaWJ1dGluZwoKVGhpcyBwcm9qZWN0IHdlbGNvbWVzIGNvbnRyaWJ1dGlvbnMgYW5kIHN1Z2dlc3Rpb25zLiAgTW9zdCBjb250cmlidXRpb25zIHJlcXVpcmUgeW91IHRvIGFncmVlIHRvIGEKQ29udHJpYnV0b3IgTGljZW5zZSBBZ3JlZW1lbnQgKENMQSkgZGVjbGFyaW5nIHRoYXQgeW91IGhhdmUgdGhlIHJpZ2h0IHRvLCBhbmQgYWN0dWFsbHkgZG8sIGdyYW50IHVzCnRoZSByaWdodHMgdG8gdXNlIHlvdXIgY29udHJpYnV0aW9uLiBGb3IgZGV0YWlscywgdmlzaXQgW2h0dHBzOi8vY2xhLm1pY3Jvc29mdC5jb21dKGh0dHBzOi8vY2xhLm1pY3Jvc29mdC5jb20pLgoKV2hlbiB5b3Ugc3VibWl0IGEgcHVsbCByZXF1ZXN0LCBhIENMQS1ib3Qgd2lsbCBhdXRvbWF0aWNhbGx5IGRldGVybWluZSB3aGV0aGVyIHlvdSBuZWVkIHRvIHByb3ZpZGUKYSBDTEEgYW5kIGRlY29yYXRlIHRoZSBQUiBhcHByb3ByaWF0ZWx5IChlLmcuLCBsYWJlbCwgY29tbWVudCkuIFNpbXBseSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucwpwcm92aWRlZCBieSB0aGUgYm90LiBZb3Ugd2lsbCBvbmx5IG5lZWQgdG8gZG8gdGhpcyBvbmNlIGFjcm9zcyBhbGwgcmVwb3MgdXNpbmcgb3VyIENMQS4KCllvdSBjYW4gYWxzbyBvcGVuIGFuIGlzc3VlIGRpcmVjdGx5IG9uIHRoaXMgcmVwbyB2aWEgdGhpcyBbbGlua10oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9PcGVuQVBJLk5FVC5PRGF0YS9pc3N1ZXMvbmV3P2Fzc2lnbmVlcz0mbGFiZWxzPSZwcm9qZWN0cz0mdGVtcGxhdGU9YnVnX3JlcG9ydC5tZCkuCgpUaGlzIHByb2plY3QgaGFzIGFkb3B0ZWQgdGhlIFtNaWNyb3NvZnQgT3BlbiBTb3VyY2UgQ29kZSBvZiBDb25kdWN0XShodHRwczovL29wZW5zb3VyY2UubWljcm9zb2Z0LmNvbS9jb2Rlb2Zjb25kdWN0LykuCkZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgW0NvZGUgb2YgQ29uZHVjdCBGQVFdKGh0dHBzOi8vb3BlbnNvdXJjZS5taWNyb3NvZnQuY29tL2NvZGVvZmNvbmR1Y3QvZmFxLykgb3IKY29udGFjdCBbb3BlbmNvZGVAbWljcm9zb2Z0LmNvbV0obWFpbHRvOm9wZW5jb2RlQG1pY3Jvc29mdC5jb20pIHdpdGggYW55IGFkZGl0aW9uYWwgcXVlc3Rpb25zIG9yIGNvbW1lbnRzLgo= readmeEtag: '"b0212307211649d28cf1d7aebe7eca2441190eed"' readmeLastModified: Tue, 24 Dec 2024 16:56:18 GMT repositoryId: 107572738 description: Generates OpenAPI document from OData CSDL created: '2017-10-19T16:39:13Z' updated: '2026-02-04T22:23:18Z' language: C# archived: false stars: 234 watchers: 26 forks: 65 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT repoEtag: '"149d66ed0ea96c1ab29d23463578c88641ea8318cf53061fb54f604d2ba9fd5d"' repoLastModified: Wed, 04 Feb 2026 22:23:18 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: a40464e098a746d489cfc2f5261d45e5 - source: openapi3 tags repository: https://github.com/oas-tools/oas-tools v3: true repositoryMetadata: base64Readme: >- IyBPQVMgVE9PTFMKCjxkaXYgYWxpZ249ImNlbnRlciI+CgpbIVtOUE1dKGh0dHBzOi8vbm9kZWkuY28vbnBtL0BvYXMtdG9vbHMvY29yZS5wbmc/Y29tcGFjdD10cnVlKV0oaHR0cHM6Ly9ub2RlaS5jby9ucG0vQG9hcy10b29scy9jb3JlKQoKIVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQG9hcy10b29scy9jb3JlKQohW25vZGUtY3VycmVudF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ub2RlL3YvQG9hcy10b29scy9jb3JlKQohW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZHcvQG9hcy10b29scy9jb3JlKQpbIVtOb2RlLmpzIENJXShodHRwczovL2dpdGh1Yi5jb20vb2FzLXRvb2xzL29hcy10b29scy9hY3Rpb25zL3dvcmtmbG93cy9ub2RlanMueWFtbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vb2FzLXRvb2xzL29hcy10b29scy9hY3Rpb25zL3dvcmtmbG93cy9ub2RlanMueWFtbCkKWyFbQ29udmVudGlvbmFsIENvbW1pdHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQ29udmVudGlvbmFsJTIwQ29tbWl0cy0xLjAuMC1ncmVlbi5zdmcpXShodHRwczovL2NvbnZlbnRpb25hbGNvbW1pdHMub3JnKQo8YnIvPgoKWyFbS25vd24gVnVsbmVyYWJpbGl0aWVzXShodHRwczovL3NueWsuaW8vdGVzdC9naXRodWIvb2FzLXRvb2xzL29hcy10b29scy9tYWluL2JhZGdlLnN2ZyldKGh0dHBzOi8vc255ay5pby90ZXN0L2dpdGh1Yi9vYXMtdG9vbHMvb2FzLXRvb2xzKQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi9vYXMtdG9vbHMvb2FzLXRvb2xzL2JhZGdlLnN2Zz9icmFuY2g9bWFpbildKGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9vYXMtdG9vbHMvb2FzLXRvb2xzP2JyYW5jaD1tYWluKQo8L2Rpdj4KCj4gKipXYXJuaW5nKioKPgo+IE9BUyBUb29scyBwYWNrYWdlIGhhcyBiZWVuIHJlbmFtZWQgZnJvbSBgb2FzLXRvb2xzYCB0byBgQG9hcy10b29scy9jb3JlYAoKIyMgUXVpY2tzdGFydAoKSW5pdGlhbGl6ZSBhIG5ldyBPQVMgVG9vbHMgcHJvamVjdCBmcm9tIHRoZSBDTEkKCmBgYHNoCj4gbnB4IEBvYXMtdG9vbHMvY2xpIGluaXQKYGBgCgpJdCB3aWxsIHByb21wdCB0aGUgZm9sbG93aW5nIG1lbnUsIGFza2luZyB3aGljaCB0eXBlIG9mIHJlc291cmNlIHdpbGwgYmUgaW5pdGlhbGl6ZWQ6CgpgYGBzaAo/IFNlbGVjdCBhIHJlc291cmNlIHRvIGluaXRpYWxpemUgKFVzZSBhcnJvdyBrZXlzKQo+IFNlcnZlcgogIE1vZHVsZQogIERldmVsb3BtZW50IGVudmlyb25tZW50CiAgT3BlbkFQSSBGaWxlCmBgYApTZWxlY3QgYHNlcnZlcmAsIGFuc3dlciB0aGUgcXVlc3Rpb25zIGFuZCB5b3UnbGwgZ2V0IGEgcnVubmluZyBzZXJ2ZXIgd2l0aCBPQVMgVG9vbHMuCgpNb3JlIGluZm9ybWF0aW9uIGluIG91ciBbd2ViIHBhZ2VdKGh0dHBzOi8vb2FzLXRvb2xzLmdpdGh1Yi5pbykKCiMjIENvbnRyaWJ1dGluZyBndWlkZWxpbmVzCldlIGdyZWF0bHkgYXBwcmVjaWF0ZSBjb21tdW5pdHkgY29udHJpYnV0aW9ucywgdGhhdCdzIHdoeSB3ZSBoYXZlIGNyZWF0ZWQgYSBkb2N1bWVudCBzdGF0aW5nIGNsZWFyIGd1aWRlbGluZXMgZm9yIFtjb250cmlidXRpbmcgdG8gT0FTIFRvb2xzXShodHRwczovL2dpdGh1Yi5jb20vb2FzLXRvb2xzLy5naXRodWIvYmxvYi9tYWluL0NPTlRSSUJVVElORy5tZCkuCldlIGFsc28gZW5jb3VyYWdlIHlvdSB0byBwYXJ0aWNpcGF0ZSBpbiBkaXNjdXNzaW9ucyBhbmQgYWN0aXZhdGUgbm90aWZpY2F0aW9uIGZvciBvdXIgYW5ub3VuY2VtZW50cyBpbiB0aGUgb3JnYW5pemF0aW9uJ3MgW2Rpc2N1c3Npb25zIGRhc2hib2FyZF0oaHR0cHM6Ly9naXRodWIuY29tL29yZ3Mvb2FzLXRvb2xzL2Rpc2N1c3Npb25zKQoKIyMgTGljZW5zZQoKQ29weXJpZ2h0IDIwMTgsIFtJU0EgR3JvdXBdKGh0dHA6Ly93d3cuaXNhLnVzLmVzKSwgW1VuaXZlcnNpdHkgb2YgU2V2aWxsYV0oaHR0cDovL3d3dy51cy5lcykKCkZvciB0ZWNobmljYWwgaW5xdWlyeSBwbGVhc2UgY29udGFjdCB0byBbZW5naW5lZXJpbmcgdGVhbV0oLi9leHRyYS90ZWFtLm1kKS4KClshW0lTQSBHcm91cF0oaHR0cDovL3d3dy5pc2EudXMuZXMvMi4wL2Fzc2V0cy9pbWcvdGhlbWUvbG9nbzIucG5nKV0oaHR0cDovL3d3dy5pc2EudXMuZXMpCgpMaWNlbnNlZCB1bmRlciB0aGUgKipBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAqKiAodGhlICJbTGljZW5zZV0oLi9MSUNFTlNFKSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCBhcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo= readmeEtag: '"bf604680bde757c44491ca8515680c64c9e5daf4"' readmeLastModified: Tue, 07 Mar 2023 01:20:33 GMT repositoryId: 120771836 description: >- NodeJS module to manage RESTful APIs defined with OpenAPI 3.0 Specs over express servers. created: '2018-02-08T14:28:39Z' updated: '2026-01-21T21:42:51Z' language: JavaScript archived: false stars: 203 watchers: 11 forks: 60 owner: oas-tools logo: https://avatars.githubusercontent.com/u/97441539?v=4 license: Apache-2.0 repoEtag: '"615596a788fc710d5757b63eed80ffde386e450b837ce47636ae1cb5cb34dace"' repoLastModified: Wed, 21 Jan 2026 21:42:51 GMT foundInMaster: true category: - Parsers - Server id: a30dcc4f00df91ead5cba361635a68d5 oldLocations: - https://github.com/isa-group/oas-tools - source: openapi3 tags name: swagger-node-codegen homepage: https://github.com/fmvilas/swagger-node-codegen language: Node.js source_description: >- Generates a Node.js/express server, but also has a template engine for creating any templates needed. category: - Code Generators - Parsers repository: https://github.com/fmvilas/swagger-node-codegen v3: true repositoryMetadata: base64Readme: >- PGgxPlRISVMgUEFDS0FHRSBJUyBOT1QgTUFJTlRBSU5FRCBBTllNT1JFLiBJRiBZT1UgV0FOVCBUTyBNQUlOVEFJTiBJVCBEUk9QIE1FIEEgTElORSBBVCBmcmFuLm1lbmRlelthdF1oZXkuY29tLjwvaDE+Cgo8cCBhbGlnbj0iY2VudGVyIj48aW1nIHNyYz0ibG9nby5wbmciPjwvcD4KPHAgYWxpZ249ImNlbnRlciI+CiAgPHN0cm9uZz5PcGVuQVBJIE5vZGUuanM8YnI+Q29kZSBHZW5lcmF0b3I8L3N0cm9uZz4KPC9wPgo8YnI+PGJyPgpVc2UgeW91ciBBUEkgT3BlbkFQSSAzLngvU3dhZ2dlciAyIGRlZmluaXRpb24gdG8gZ2VuZXJhdGUgTm9kZS5qcyBFUzctY29tcGxpYW50IGNvZGUgZm9yIHlvdXIgQVBJLgoKVGhlIGdlbmVyYXRlZCBjb2RlIGZlYXR1cmVzOgoKKiBFUzcKKiBFU0xpbnQKKiBZQU1MIGNvbmZpZyBmaWxlCiogRXhwcmVzcwoqIE5vIHRyYW5zcGlsaW5nCgojIyBJbnN0YWxsCgpUbyB1c2UgaXQgZnJvbSB0aGUgQ0xJOgoKYGBgYmFzaApucG0gaW5zdGFsbCAtZyBzd2FnZ2VyLW5vZGUtY29kZWdlbgpgYGAKClRvIHVzZSBpdCBhcyBhIG1vZHVsZSBpbiB5b3VyIHByb2plY3Q6CgpgYGBiYXNoCm5wbSBpbnN0YWxsIC0tc2F2ZSBzd2FnZ2VyLW5vZGUtY29kZWdlbgpgYGAKCiMjIFJlcXVpcmVtZW50cwoKKiBOb2RlLmpzIHY3LjYrCgojIyBVc2FnZQoKIyMjIEZyb20gdGhlIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgKENMSSkKCmBgYGJhc2gKICBVc2FnZTogc25jIFtvcHRpb25zXSA8c3dhZ2dlckZpbGU+CgoKICBPcHRpb25zOgoKICAgIC1WLCAtLXZlcnNpb24gICAgICAgICAgICAgICAgICBvdXRwdXQgdGhlIHZlcnNpb24gbnVtYmVyCiAgICAtbywgLS1vdXRwdXQgPG91dHB1dERpcj4gICAgICAgZGlyZWN0b3J5IHdoZXJlIHRvIHB1dCB0aGUgZ2VuZXJhdGVkIGZpbGVzIChkZWZhdWx0cyB0byBjdXJyZW50IGRpcmVjdG9yeSkKICAgIC10LCAtLXRlbXBsYXRlcyA8dGVtcGxhdGVEaXI+ICBkaXJlY3Rvcnkgd2hlcmUgdGVtcGxhdGVzIGFyZSBsb2NhdGVkIChkZWZhdWx0cyB0byBpbnRlcm5hbCBub2RlanMgdGVtcGxhdGVzKQogICAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgICAgIG91dHB1dCB1c2FnZSBpbmZvcm1hdGlvbgpgYGAKCiMjIyMgRXhhbXBsZXMKClRoZSBzaG9ydGVzdCBwb3NzaWJsZSBzeW50YXg6CmBgYGJhc2gKc25jIHN3YWdnZXIueWFtbApgYGAKClNwZWNpZnkgd2hlcmUgdG8gcHV0IHRoZSBnZW5lcmF0ZWQgY29kZToKYGBgYmFzaApzbmMgc3dhZ2dlci55YW1sIC1vIC4vbXktYXBpCmBgYAoKIyMjIEFzIGEgbW9kdWxlIGluIHlvdXIgcHJvamVjdAoKYGBganMKY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTsKY29uc3QgY29kZWdlbiA9IHJlcXVpcmUoJ3N3YWdnZXItbm9kZS1jb2RlZ2VuJyk7CmNvbnN0IHN3YWdnZXIgPSByZXF1aXJlKCcuL3N3YWdnZXIuanNvbicpOwoKY29kZWdlbi5nZW5lcmF0ZSh7CiAgc3dhZ2dlciwKICB0YXJnZXRfZGlyOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi9teS1hcGknKQp9KS50aGVuKCgpID0+IHsKICBjb25zb2xlLmxvZygnRG9uZSEnKTsKfSkuY2F0Y2goZXJyID0+IHsKICBjb25zb2xlLmVycm9yKGBTb21ldGhpbmcgd2VudCB3cm9uZzogJHtlcnIubWVzc2FnZX1gKTsKfSk7CmBgYAoKVGhlIGBzd2FnZ2VyYCBwYXJhbWV0ZXIgY2FuIGJlIGVpdGhlciBKU09OIG9yIGEgcGF0aCBwb2ludGluZyB0byBhIEpTT04gb3IgWUFNTCBmaWxlLgoKYGBganMKY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTsKY29uc3QgY29kZWdlbiA9IHJlcXVpcmUoJ3N3YWdnZXItbm9kZS1jb2RlZ2VuJyk7Cgpjb2RlZ2VuLmdlbmVyYXRlKHsKICBzd2FnZ2VyOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi9zd2FnZ2VyLnltbCcpLAogIHRhcmdldF9kaXI6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuL215LWFwaScpCn0pLnRoZW4oKCkgPT4gewogIGNvbnNvbGUubG9nKCdEb25lIScpOwp9KS5jYXRjaChlcnIgPT4gewogIGNvbnNvbGUuZXJyb3IoYFNvbWV0aGluZyB3ZW50IHdyb25nOiAke2Vyci5tZXNzYWdlfWApOwp9KTsKYGBgCiMjIyMgVXNpbmcgYXN5bmMvYXdhaXQKClRoZSBmdW5jdGlvbiBgY29kZWdlbi5nZW5lcmF0ZWAgcmV0dXJucyBhIFByb21pc2UsIHNvIGl0IG1lYW5zIHlvdSBjYW4gdXNlIGFzeW5jL2F3YWl0OgoKYGBganMKY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTsKY29uc3QgY29kZWdlbiA9IHJlcXVpcmUoJ3N3YWdnZXItbm9kZS1jb2RlZ2VuJyk7Cgp0cnkgewogIGF3YWl0IGNvZGVnZW4uZ2VuZXJhdGUoewogICAgc3dhZ2dlcjogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vc3dhZ2dlci55bWwnKSwKICAgIHRhcmdldF9kaXI6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuL215LWFwaScpCiAgfSk7CiAgY29uc29sZS5sb2coJ0RvbmUhJyk7Cn0gY2F0Y2ggKGVycikgewogIGNvbnNvbGUuZXJyb3IoYFNvbWV0aGluZyB3ZW50IHdyb25nOiAke2Vyci5tZXNzYWdlfWApOwp9CmBgYAoKIyMgQVBJIERvY3VtZW50YXRpb24KCiMjIyBNb2R1bGVzCgo8ZGw+CjxkdD48YSBocmVmPSIjbW9kdWxlX2NvZGVnZW4iPmNvZGVnZW48L2E+PC9kdD4KPGRkPjxwPlRoaXMgbW9kdWxlIGdlbmVyYXRlcyBhIGNvZGUgc2tlbGV0b24gZm9yIGFuIEFQSSB1c2luZyBPcGVuQVBJL1N3YWdnZXIuPC9wPgo8L2RkPgo8ZHQ+PGEgaHJlZj0iI2NvZGVnZW4ubW9kdWxlX2dlbmVyYXRlIj5nZW5lcmF0ZTwvYT4g4oeSIDxjb2RlPlByb21pc2U8L2NvZGU+PC9kdD4KPGRkPjxwPkdlbmVyYXRlcyBhIGNvZGUgc2tlbGV0b24gZm9yIGFuIEFQSSBnaXZlbiBhbiBPcGVuQVBJL1N3YWdnZXIgZmlsZS48L3A+CjwvZGQ+CjwvZGw+Cgo8YSBuYW1lPSJtb2R1bGVfY29kZWdlbiI+PC9hPgoKIyMjIGNvZGVnZW4KVGhpcyBtb2R1bGUgZ2VuZXJhdGVzIGEgY29kZSBza2VsZXRvbiBmb3IgYW4gQVBJIHVzaW5nIE9wZW5BUEkvU3dhZ2dlci4KCjxhIG5hbWU9ImNvZGVnZW4ubW9kdWxlX2dlbmVyYXRlIj48L2E+CgojIyMjIGdlbmVyYXRlIOKHkiA8Y29kZT5Qcm9taXNlPC9jb2RlPgpHZW5lcmF0ZXMgYSBjb2RlIHNrZWxldG9uIGZvciBhbiBBUEkgZ2l2ZW4gYW4gT3BlbkFQSS9Td2FnZ2VyIGZpbGUuCgoKfCBQYXJhbSB8IFR5cGUgfCBEZXNjcmlwdGlvbiB8CnwgLS0tIHwgLS0tIHwgLS0tIHwKfCBjb25maWcgfCA8Y29kZT5PYmplY3Q8L2NvZGU+IHwgQ29uZmlndXJhdGlvbiBvcHRpb25zIHwKfCBjb25maWcuc3dhZ2dlciB8IDxjb2RlPk9iamVjdDwvY29kZT4gXHwgPGNvZGU+U3RyaW5nPC9jb2RlPiB8IE9wZW5BUEkvU3dhZ2dlciBKU09OIG9yIGEgc3RyaW5nIHBvaW50aW5nIHRvIGFuIE9wZW5BUEkvU3dhZ2dlciBmaWxlLiB8CnwgY29uZmlnLnRhcmdldF9kaXIgfCA8Y29kZT5TdHJpbmc8L2NvZGU+IHwgUGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBmaWxlcyB3aWxsIGJlIGdlbmVyYXRlZC4gfAp8IGNvbmZpZy50ZW1wbGF0ZXN8IDxjb2RlPlN0cmluZzwvY29kZT4gfCBQYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgY3VzdG9tIHRlbXBsYXRlcyBhcmUgKG9wdGlvbmFsKS4gfAoKCiMjIFRlbXBsYXRlcwpZb3UgY2FuIGNyZWF0ZSB5b3VyIG93biBbdGVtcGxhdGVzXSguL3RlbXBsYXRlcy9SRUFETUUubWQpLgoKIyMgQXV0aG9ycwoKKiBGcmFuIE3DqW5kZXogKFtAZm12aWxhc10oaHR0cDovL3R3aXR0ZXIuY29tL2ZtdmlsYXMpKQoqIFJpY2hhcmQgS2xvc2UgKFtAcmljaGFyZGtsb3NlXShodHRwOi8vZ2l0aHViLmNvbS9yaWNoYXJka2xvc2UpKQo= readmeEtag: '"7ecaca28f3d8531ae5c8f7b927ff1928d3bd2b55"' readmeLastModified: Tue, 17 Nov 2020 09:06:19 GMT repositoryId: 46659429 description: An OpenAPI 3.x/Swagger 2 code generator for Node.js created: '2015-11-22T12:22:22Z' updated: '2025-02-17T03:00:45Z' language: JavaScript archived: false stars: 199 watchers: 6 forks: 54 owner: fmvilas logo: https://avatars.githubusercontent.com/u/242119?v=4 license: Apache-2.0 repoEtag: '"3013a1e03a15394f0ec2e58bf3fcd3da616723d722deb67a7f46c1f391ccc076"' repoLastModified: Mon, 17 Feb 2025 03:00:45 GMT foundInMaster: true id: d432635d31e91cae35355677ce1e130a - source: openapi3 tags repository: https://github.com/himenon/openapi-typescript-code-generator v3: true repositoryMetadata: base64Readme: >- IyBAaGltZW5vbi9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3IKClvml6XmnKzoqp5dKC4vZG9jcy9qYS9SRUFETUUtamEubWQpCgpUaGlzIGxpYnJhcnkgcHJvdmlkZXMgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIGFuZCBleHRyYWN0ZWQgcGFyYW1ldGVycyBmcm9tIE9wZW5BUEkgdjMuMC54IGNvbXBsaWFudCBzcGVjaWZpY2F0aW9ucy4KVHlwZVNjcmlwdCBBU1QgaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgY29kZSwgd2hpY2ggaXMgYWNjdXJhdGVseSBjb252ZXJ0ZWQgdG8gVHlwZVNjcmlwdCBjb2RlLgpTaW5jZSB0aGUgcGFyYW1ldGVycyBleHRyYWN0ZWQgZnJvbSBPcGVuQVBJIGNhbiBiZSB1c2VkIGZyZWVseSwgaXQgY2FuIGJlIHVzZWQgZm9yIGF1dG9tYXRpYyBnZW5lcmF0aW9uIG9mIEFQSSBDbGllbnQgYW5kIFNlcnZlciBTaWRlIGNvZGUsIGxvYWQgYmFsYW5jZXIgY29uZmlndXJhdGlvbiBmaWxlcywgZXRjLgoKIyMgUGxheWdyb3VuZAoKLSBbUGxheWdyb3VuZF0oaHR0cHM6Ly9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3IubmV0bGlmeS5hcHAvKQoKIyMgSW5zdGFsbGF0aW9uCgpgYGBiYXNoCm5wbSAgaSAgIC1EIEBoaW1lbm9uL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlLWdlbmVyYXRvcgojIG9yCnBucG0gaSAgIC1EIEBoaW1lbm9uL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlLWdlbmVyYXRvcgojIG9yCnlhcm4gYWRkIC1EIEBoaW1lbm9uL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlLWdlbmVyYXRvcgpgYGAKCiMjIERFTU8KCi0gW1Nob3J0IERFTU9dKGh0dHBzOi8vZ2l0aHViLmNvbS9IaW1lbm9uL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlLWdlbmVyYXRvci1kZW1vLXByb2plY3QpCi0gW0RFTU86IGdpdGh1Yi9yZXN0LWFwaS1jbGllbnQgY29kZSBnZW5lcmF0ZV0oaHR0cHM6Ly9naXRodWIuY29tL0hpbWVub24vZ2l0aHViLXJlc3QtYXBpLWNsaWVudC90cmVlL21hc3Rlci9zb3VyY2UpCiAgLSBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL3Jlc3QtYXBpLWRlc2NyaXB0aW9uCgojIyBVc2FnZQoKVGhlIGV4YW1wbGUgc2hvd24gaGVyZSBjYW4gYmUgY2xvbmVkIGZyb20gdGhlIFtERU1PIHJlcG9zaXRvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9IaW1lbm9uL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlLWdlbmVyYXRvci1kZW1vLXByb2plY3QpIHRvIHNlZSBob3cgaXQgd29ya3MuCgojIyMgR2VuZXJhdGUgdHlwZWRlZi1vbmx5IGNvZGUKCmBgYHRzCmltcG9ydCAqIGFzIGZzIGZyb20gImZzIjsKCmltcG9ydCB7IENvZGVHZW5lcmF0b3IgfSBmcm9tICJAaGltZW5vbi9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3IiOwoKY29uc3QgbWFpbiA9ICgpID0+IHsKICBjb25zdCBjb2RlR2VuZXJhdG9yID0gbmV3IENvZGVHZW5lcmF0b3IoInlvdXIvb3BlbmFwaS9zcGVjLnltbCIpOwogIGNvbnN0IGNvZGUgPSBjb2RlR2VuZXJhdG9yLmdlbmVyYXRlVHlwZURlZmluaXRpb24oKTsKICBmcy53cml0ZUZpbGVTeW5jKCJjbGllbnQudHMiLCBjb2RlLCB7IGVuY29kaW5nOiAidXRmLTgiIH0pOwp9OwoKbWFpbigpOwpgYGAKCiMjIyBHZW5lcmF0ZSBjb2RlIGNvbnRhaW5pbmcgdGhlIEFQSSBDbGllbnQKCmBgYHRzCmltcG9ydCAqIGFzIGZzIGZyb20gImZzIjsKCmltcG9ydCB7IENvZGVHZW5lcmF0b3IgfSBmcm9tICJAaGltZW5vbi9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3IiOwppbXBvcnQgKiBhcyBUZW1wbGF0ZXMgZnJvbSAiQGhpbWVub24vb3BlbmFwaS10eXBlc2NyaXB0LWNvZGUtZ2VuZXJhdG9yL2Rpc3QvdGVtcGxhdGVzIjsKaW1wb3J0IHR5cGUgKiBhcyBUeXBlcyBmcm9tICJAaGltZW5vbi9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3IvZGlzdC90eXBlcyI7Cgpjb25zdCBtYWluID0gKCkgPT4gewogIGNvbnN0IGNvZGVHZW5lcmF0b3IgPSBuZXcgQ29kZUdlbmVyYXRvcigieW91ci9vcGVuYXBpL3NwZWMueW1sIik7CgogIGNvbnN0IGFwaUNsaWVudEdlbmVyYXRvclRlbXBsYXRlOiBUeXBlcy5Db2RlR2VuZXJhdG9yLkN1c3RvbUdlbmVyYXRvcjxUZW1wbGF0ZXMuRnVuY3Rpb25hbEFwaUNsaWVudC5PcHRpb24+ID0gewogICAgZ2VuZXJhdG9yOiBUZW1wbGF0ZXMuRnVuY3Rpb25hbEFwaUNsaWVudC5nZW5lcmF0b3IsCiAgICBvcHRpb246IHt9LAogIH07CgogIGNvbnN0IGNvZGUgPSBjb2RlR2VuZXJhdG9yLmdlbmVyYXRlVHlwZURlZmluaXRpb24oWwogICAgY29kZUdlbmVyYXRvci5nZXRBZGRpdGlvbmFsVHlwZURlZmluaXRpb25DdXN0b21Db2RlR2VuZXJhdG9yKCksCiAgICBhcGlDbGllbnRHZW5lcmF0b3JUZW1wbGF0ZSwKICBdKTsKCiAgZnMud3JpdGVGaWxlU3luYygiY2xpZW50LnRzIiwgY29kZSwgeyBlbmNvZGluZzogInV0Zi04IiB9KTsKfTsKCm1haW4oKTsKYGBgCgojIyMgVGhlIHZhcmlhdGlvbiBvZiB0ZW1wbGF0ZSBjb2RlCgpUaGlzIGxpYnJhcnkgcHJvdmlkZXMgdGhyZWUgdHlwZXMgb2YgdGVtcGxhdGVzCgpgYGB0cwppbXBvcnQgKiBhcyBUZW1wbGF0ZXMgZnJvbSAiQGhpbWVub24vb3BlbmFwaS10eXBlc2NyaXB0LWNvZGUtZ2VuZXJhdG9yL2Rpc3QvdGVtcGxhdGVzIjsKClRlbXBsYXRlcy5DbGFzc0FwaUNsaWVudC5nZW5lcmF0b3I7ClRlbXBsYXRlcy5GdW5jdGlvbmFsQXBpQ2xpZW50LmdlbmVyYXRvcjsKVGVtcGxhdGVzLkN1cnJ5aW5nRnVuY3Rpb25hbEFwaUNsaWVudC5nZW5lcmF0b3I7CmBgYAoKIyMjIyBgVGVtcGxhdGVzLkNsYXNzQXBpQ2xpZW50LmdlbmVyYXRvcmAKCldlIHByb3ZpZGUgYSBjbGFzcy1iYXNlZCBBUEkgY2xpZW50LiBQbGVhc2UgaW5qZWN0IHRoZSBBUEkgY2xpZW50IGRlcGVuZGVuY3kgYW5kIHVzZSBpdCBpbnN0ZWFkIG9mIGBjb25zdHJ1Y3RvcmAuCgpgYGB0cwpleHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RBcmdzIHsKICBodHRwTWV0aG9kOiBIdHRwTWV0aG9kOwogIHVybDogc3RyaW5nOwogIGhlYWRlcnM6IE9iamVjdExpa2UgfCBhbnk7CiAgcmVxdWVzdEJvZHk/OiBPYmplY3RMaWtlIHwgYW55OwogIHJlcXVlc3RCb2R5RW5jb2Rpbmc/OiBSZWNvcmQ8c3RyaW5nLCBFbmNvZGluZz47CiAgcXVlcnlQYXJhbWV0ZXJzPzogUXVlcnlQYXJhbWV0ZXJzIHwgdW5kZWZpbmVkOwp9CgpleHBvcnQgaW50ZXJmYWNlIEFwaUNsaWVudDxSZXF1ZXN0T3B0aW9uPiB7CiAgcmVxdWVzdDogPFQgPSBTdWNjZXNzUmVzcG9uc2VzPihyZXF1ZXN0QXJnczogUmVxdWVzdEFyZ3MsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uKSA9PiBQcm9taXNlPFQ+Owp9CgpleHBvcnQgY2xhc3MgQ2xpZW50PFJlcXVlc3RPcHRpb24+IHsKICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZzsKICBjb25zdHJ1Y3RvcigKICAgIHByaXZhdGUgYXBpQ2xpZW50OiBBcGlDbGllbnQ8UmVxdWVzdE9wdGlvbj4sCiAgICBiYXNlVXJsOiBzdHJpbmcsCiAgKSB7CiAgICB0aGlzLmJhc2VVcmwgPSBiYXNlVXJsLnJlcGxhY2UoL1wvJC8sICIiKTsKICB9CgogIHB1YmxpYyBhc3luYyBjcmVhdGVQdWJsaXNoZXJWMjxSZXF1ZXN0Q29udGVudFR5cGUgZXh0ZW5kcyBSZXF1ZXN0Q29udGVudFR5cGUkY3JlYXRlUHVibGlzaGVyVjI+KAogICAgcGFyYW1zOiBQYXJhbXMkY3JlYXRlUHVibGlzaGVyVjI8UmVxdWVzdENvbnRlbnRUeXBlPiwKICAgIG9wdGlvbj86IFJlcXVlc3RPcHRpb24sCiAgKTogUHJvbWlzZTxSZXNwb25zZSRjcmVhdGVQdWJsaXNoZXJWMiRTdGF0dXMkMjAwWyJhcHBsaWNhdGlvbi9qc29uIl0+IHsKICAgIGNvbnN0IHVybCA9IHRoaXMuYmFzZVVybCArIGAvY3JlYXRlL3YyL3B1Ymxpc2hlci97aWR9YDsKICAgIGNvbnN0IGhlYWRlcnMgPSB7CiAgICAgICJDb250ZW50LVR5cGUiOiBwYXJhbXMuaGVhZGVyc1siQ29udGVudC1UeXBlIl0sCiAgICAgIEFjY2VwdDogImFwcGxpY2F0aW9uL2pzb24iLAogICAgfTsKICAgIGNvbnN0IHJlcXVlc3RFbmNvZGluZ3MgPSB7CiAgICAgICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiOiB7CiAgICAgICAgY29sb3I6IHsKICAgICAgICAgIHN0eWxlOiAiZm9ybSIsCiAgICAgICAgICBleHBsb2RlOiBmYWxzZSwKICAgICAgICB9LAogICAgICB9LAogICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICBjb2xvcjogewogICAgICAgICAgc3R5bGU6ICJmb3JtIiwKICAgICAgICAgIGV4cGxvZGU6IGZhbHNlLAogICAgICAgIH0sCiAgICAgIH0sCiAgICB9OwogICAgcmV0dXJuIHRoaXMuYXBpQ2xpZW50LnJlcXVlc3QoCiAgICAgIHsKICAgICAgICBodHRwTWV0aG9kOiAiUE9TVCIsCiAgICAgICAgdXJsLAogICAgICAgIGhlYWRlcnMsCiAgICAgICAgcmVxdWVzdEJvZHk6IHBhcmFtcy5yZXF1ZXN0Qm9keSwKICAgICAgICByZXF1ZXN0Qm9keUVuY29kaW5nOiByZXF1ZXN0RW5jb2RpbmdzW3BhcmFtcy5oZWFkZXJzWyJDb250ZW50LVR5cGUiXV0sCiAgICAgIH0sCiAgICAgIG9wdGlvbiwKICAgICk7CiAgfQp9CmBgYAoKIyMjIyBgVGVtcGxhdGVzLkZ1bmN0aW9uYWxBcGlDbGllbnQuZ2VuZXJhdG9yYAoKV2UgYWxzbyBwcm92aWRlIGEgZnVuY3Rpb24tYmFzZWQgQVBJIGNsaWVudCB0aGF0IHJlcGxhY2VzIHRoZSBjbGFzcy1iYXNlZCBBUEkgY2xpZW50IHdpdGggYGNyZWF0ZUNsaWVudGAuIFBsZWFzZSBpbmplY3QgdGhlIEFQSSBjbGllbnQgZGVwZW5kZW5jeSBhbmQgdXNlIGl0LgoKYGBgdHMKZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0QXJncyB7CiAgaHR0cE1ldGhvZDogSHR0cE1ldGhvZDsKICB1cmw6IHN0cmluZzsKICBoZWFkZXJzOiBPYmplY3RMaWtlIHwgYW55OwogIHJlcXVlc3RCb2R5PzogT2JqZWN0TGlrZSB8IGFueTsKICByZXF1ZXN0Qm9keUVuY29kaW5nPzogUmVjb3JkPHN0cmluZywgRW5jb2Rpbmc+OwogIHF1ZXJ5UGFyYW1ldGVycz86IFF1ZXJ5UGFyYW1ldGVycyB8IHVuZGVmaW5lZDsKfQoKZXhwb3J0IGludGVyZmFjZSBBcGlDbGllbnQ8UmVxdWVzdE9wdGlvbj4gewogIHJlcXVlc3Q6IDxUID0gU3VjY2Vzc1Jlc3BvbnNlcz4ocmVxdWVzdEFyZ3M6IFJlcXVlc3RBcmdzLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbikgPT4gUHJvbWlzZTxUPjsKfQoKZXhwb3J0IGNvbnN0IGNyZWF0ZUNsaWVudCA9IDxSZXF1ZXN0T3B0aW9uPihhcGlDbGllbnQ6IEFwaUNsaWVudDxSZXF1ZXN0T3B0aW9uPiwgYmFzZVVybDogc3RyaW5nKSA9PiB7CiAgY29uc3QgX2Jhc2VVcmwgPSBiYXNlVXJsLnJlcGxhY2UoL1wvJC8sICIiKTsKICByZXR1cm4gewogICAgY3JlYXRlUHVibGlzaGVyVjI6IDxSZXF1ZXN0Q29udGVudFR5cGUgZXh0ZW5kcyBSZXF1ZXN0Q29udGVudFR5cGUkY3JlYXRlUHVibGlzaGVyVjI+KAogICAgICBwYXJhbXM6IFBhcmFtcyRjcmVhdGVQdWJsaXNoZXJWMjxSZXF1ZXN0Q29udGVudFR5cGU+LAogICAgICBvcHRpb24/OiBSZXF1ZXN0T3B0aW9uLAogICAgKTogUHJvbWlzZTxSZXNwb25zZSRjcmVhdGVQdWJsaXNoZXJWMiRTdGF0dXMkMjAwWyJhcHBsaWNhdGlvbi9qc29uIl0+ID0+IHsKICAgICAgY29uc3QgdXJsID0gX2Jhc2VVcmwgKyBgL2NyZWF0ZS92Mi9wdWJsaXNoZXIve2lkfWA7CiAgICAgIGNvbnN0IGhlYWRlcnMgPSB7CiAgICAgICAgIkNvbnRlbnQtVHlwZSI6IHBhcmFtcy5oZWFkZXJzWyJDb250ZW50LVR5cGUiXSwKICAgICAgICBBY2NlcHQ6ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgfTsKICAgICAgY29uc3QgcmVxdWVzdEVuY29kaW5ncyA9IHsKICAgICAgICAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIjogewogICAgICAgICAgY29sb3I6IHsKICAgICAgICAgICAgc3R5bGU6ICJmb3JtIiwKICAgICAgICAgICAgZXhwbG9kZTogZmFsc2UsCiAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iOiB7CiAgICAgICAgICBjb2xvcjogewogICAgICAgICAgICBzdHlsZTogImZvcm0iLAogICAgICAgICAgICBleHBsb2RlOiBmYWxzZSwKICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgfTsKICAgICAgcmV0dXJuIGFwaUNsaWVudC5yZXF1ZXN0KAogICAgICAgIHsKICAgICAgICAgIGh0dHBNZXRob2Q6ICJQT1NUIiwKICAgICAgICAgIHVybCwKICAgICAgICAgIGhlYWRlcnMsCiAgICAgICAgICByZXF1ZXN0Qm9keTogcGFyYW1zLnJlcXVlc3RCb2R5LAogICAgICAgICAgcmVxdWVzdEJvZHlFbmNvZGluZzogcmVxdWVzdEVuY29kaW5nc1twYXJhbXMuaGVhZGVyc1siQ29udGVudC1UeXBlIl1dLAogICAgICAgIH0sCiAgICAgICAgb3B0aW9uLAogICAgICApOwogICAgfSwKICB9Owp9OwpgYGAKCiMjIyMgYFRlbXBsYXRlcy5DdXJyeWluZ0Z1bmN0aW9uYWxBcGlDbGllbnQuZ2VuZXJhdG9yYAoKKipUcmVlIHNoYWtpbmcgc3VwcG9ydCoqCgpXZSBhbHNvIHByb3ZpZGUgYSBjdXJyaWVkIGZ1bmN0aW9uLWJhc2VkIEFQSSBjbGllbnQgdGhhdCByZXF1aXJlcyBpbmplY3Rpb24gb2YgQVBJIGNsaWVudCBmb3IgZWFjaCBgb3BlcmF0aW9uSWRgLiBUaGUgZmlyc3QgZnVuY3Rpb24gYXJndW1lbnQgZGVtYW5kcyBgQXBpQ2xpZW50YCB3aGlsZSB0aGUgc2Vjb25kIGZ1bmN0aW9uIGFyZ3VtZW50IGRlbWFuZHMgYFJlcXVlc3RBcmdzYC4gVGhlIGBBcGlDbGllbnRgIGludGVyZmFjZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3RoZXJzLCBhcyBpdCByZXF1aXJlcyBgdXJpYCBhcyBhbiBhcmd1bWVudC4KClRoaXMgaXMgZGVzaWduZWQgZm9yIHVzZSBjYXNlcyB0aGF0IHV0aWxpemUgKip0cmVlIHNoYWtpbmcqKi4KCmBgYHRzCmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdEFyZ3MgewogIGh0dHBNZXRob2Q6IEh0dHBNZXRob2Q7CiAgdXJpOiBzdHJpbmc7IC8vIDwtLS0tLS0tLS0tLS0tLS0tLS0gTm90ZSB0aGF0IHRoZSB1cmkKICBoZWFkZXJzOiBPYmplY3RMaWtlIHwgYW55OwogIHJlcXVlc3RCb2R5PzogT2JqZWN0TGlrZSB8IGFueTsKICByZXF1ZXN0Qm9keUVuY29kaW5nPzogUmVjb3JkPHN0cmluZywgRW5jb2Rpbmc+OwogIHF1ZXJ5UGFyYW1ldGVycz86IFF1ZXJ5UGFyYW1ldGVycyB8IHVuZGVmaW5lZDsKfQpleHBvcnQgaW50ZXJmYWNlIEFwaUNsaWVudDxSZXF1ZXN0T3B0aW9uPiB7CiAgcmVxdWVzdDogPFQgPSBTdWNjZXNzUmVzcG9uc2VzPihyZXF1ZXN0QXJnczogUmVxdWVzdEFyZ3MsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uKSA9PiBQcm9taXNlPFQ+Owp9CmV4cG9ydCBjb25zdCBjcmVhdGVQdWJsaXNoZXJWMiA9CiAgPFJlcXVlc3RPcHRpb24+KGFwaUNsaWVudDogQXBpQ2xpZW50PFJlcXVlc3RPcHRpb24+KSA9PgogIDxSZXF1ZXN0Q29udGVudFR5cGUgZXh0ZW5kcyBSZXF1ZXN0Q29udGVudFR5cGUkY3JlYXRlUHVibGlzaGVyVjI+KAogICAgcGFyYW1zOiBQYXJhbXMkY3JlYXRlUHVibGlzaGVyVjI8UmVxdWVzdENvbnRlbnRUeXBlPiwKICAgIG9wdGlvbj86IFJlcXVlc3RPcHRpb24sCiAgKTogUHJvbWlzZTxSZXNwb25zZSRjcmVhdGVQdWJsaXNoZXJWMiRTdGF0dXMkMjAwWyJhcHBsaWNhdGlvbi9qc29uIl0+ID0+IHsKICAgIGNvbnN0IHVyaSA9IGAvY3JlYXRlL3YyL3B1Ymxpc2hlci97aWR9YDsKICAgIGNvbnN0IGhlYWRlcnMgPSB7CiAgICAgICJDb250ZW50LVR5cGUiOiBwYXJhbXMuaGVhZGVyc1siQ29udGVudC1UeXBlIl0sCiAgICAgIEFjY2VwdDogImFwcGxpY2F0aW9uL2pzb24iLAogICAgfTsKICAgIGNvbnN0IHJlcXVlc3RFbmNvZGluZ3MgPSB7CiAgICAgICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiOiB7CiAgICAgICAgY29sb3I6IHsKICAgICAgICAgIHN0eWxlOiAiZm9ybSIsCiAgICAgICAgICBleHBsb2RlOiBmYWxzZSwKICAgICAgICB9LAogICAgICB9LAogICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICBjb2xvcjogewogICAgICAgICAgc3R5bGU6ICJmb3JtIiwKICAgICAgICAgIGV4cGxvZGU6IGZhbHNlLAogICAgICAgIH0sCiAgICAgIH0sCiAgICB9OwogICAgcmV0dXJuIGFwaUNsaWVudC5yZXF1ZXN0KAogICAgICB7CiAgICAgICAgaHR0cE1ldGhvZDogIlBPU1QiLAogICAgICAgIHVyaSwKICAgICAgICBoZWFkZXJzLAogICAgICAgIHJlcXVlc3RCb2R5OiBwYXJhbXMucmVxdWVzdEJvZHksCiAgICAgICAgcmVxdWVzdEJvZHlFbmNvZGluZzogcmVxdWVzdEVuY29kaW5nc1twYXJhbXMuaGVhZGVyc1siQ29udGVudC1UeXBlIl1dLAogICAgICB9LAogICAgICBvcHRpb24sCiAgICApOwogIH07CmBgYAoKIyMjIFNwbGl0IHRoZSB0eXBlIGRlZmluaXRpb24gZmlsZSBhbmQgdGhlIEFQSSBDbGllbnQgaW1wbGVtZW50YXRpb24KCmBgYHRzCmltcG9ydCAqIGFzIGZzIGZyb20gImZzIjsKCmltcG9ydCB7IENvZGVHZW5lcmF0b3IgfSBmcm9tICJAaGltZW5vbi9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3IiOwppbXBvcnQgKiBhcyBUZW1wbGF0ZXMgZnJvbSAiQGhpbWVub24vb3BlbmFwaS10eXBlc2NyaXB0LWNvZGUtZ2VuZXJhdG9yL2Rpc3QvdGVtcGxhdGVzIjsKaW1wb3J0IHR5cGUgKiBhcyBUeXBlcyBmcm9tICJAaGltZW5vbi9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3IvZGlzdC90eXBlcyI7Cgpjb25zdCBtYWluID0gKCkgPT4gewogIGNvbnN0IGNvZGVHZW5lcmF0b3IgPSBuZXcgQ29kZUdlbmVyYXRvcigieW91ci9vcGVuYXBpL3NwZWMueW1sIik7CgogIGNvbnN0IGFwaUNsaWVudEdlbmVyYXRvclRlbXBsYXRlOiBUeXBlcy5Db2RlR2VuZXJhdG9yLkN1c3RvbUdlbmVyYXRvcjxUZW1wbGF0ZXMuRnVuY3Rpb25hbEFwaUNsaWVudC5PcHRpb24+ID0gewogICAgZ2VuZXJhdG9yOiBUZW1wbGF0ZXMuRnVuY3Rpb25hbEFwaUNsaWVudC5nZW5lcmF0b3IsCiAgICBvcHRpb246IHt9LAogIH07CgogIGNvbnN0IHR5cGVEZWZDb2RlID0gY29kZUdlbmVyYXRvci5nZW5lcmF0ZVR5cGVEZWZpbml0aW9uKCk7CiAgY29uc3QgYXBpQ2xpZW50Q29kZSA9IGNvZGVHZW5lcmF0b3IuZ2VuZXJhdGVDb2RlKFsKICAgIHsKICAgICAgZ2VuZXJhdG9yOiAoKSA9PiB7CiAgICAgICAgcmV0dXJuIFtgaW1wb3J0IHsgU2NoZW1hcywgUmVzcG9uc2VzIH0gZnJvbSAiLi90eXBlcyI7YF07CiAgICAgIH0sCiAgICB9LAogICAgY29kZUdlbmVyYXRvci5nZXRBZGRpdGlvbmFsVHlwZURlZmluaXRpb25DdXN0b21Db2RlR2VuZXJhdG9yKCksCiAgICBhcGlDbGllbnRHZW5lcmF0b3JUZW1wbGF0ZSwKICBdKTsKCiAgZnMud3JpdGVGaWxlU3luYygidHlwZXMudHMiLCB0eXBlRGVmQ29kZSwgeyBlbmNvZGluZzogInV0Zi04IiB9KTsKICBmcy53cml0ZUZpbGVTeW5jKCJhcGlDbGllbnQudHMiLCBhcGlDbGllbnRDb2RlLCB7IGVuY29kaW5nOiAidXRmLTgiIH0pOwp9OwoKbWFpbigpOwpgYGAKCiMjIENyZWF0ZSBhIENvZGUgVGVtcGxhdGUKClRoZSBleGFtcGxlcyBpbiB0aGlzIHNlY3Rpb24gY2FuIGJlIHVzZWQgaW4gdGhlIGZvbGxvd2luZyB3YXlzCgpgYGB0cwppbXBvcnQgKiBhcyBmcyBmcm9tICJmcyI7CgppbXBvcnQgeyBDb2RlR2VuZXJhdG9yIH0gZnJvbSAiQGhpbWVub24vb3BlbmFwaS10eXBlc2NyaXB0LWNvZGUtZ2VuZXJhdG9yIjsKaW1wb3J0IHR5cGUgKiBhcyBUeXBlcyBmcm9tICJAaGltZW5vbi9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3IvZGlzdC90eXBlcyI7CgovKiogV3JpdGUgdGhlIGRlZmluaXRpb24gb2YgdGhlIENvZGUgVGVtcGxhdGUgaGVyZS4gKi8KY29uc3QgY3VzdG9tR2VuZXJhdG9yOiBUeXBlcy5Db2RlR2VuZXJhdG9yLkN1c3RvbUdlbmVyYXRvcjx7fT4gPSB7CiAgLyoqIC4uLi4gKi8KfTsKCmNvbnN0IGNvZGVHZW5lcmF0b3IgPSBuZXcgQ29kZUdlbmVyYXRvcigieW91ci9vcGVuYXBpL3NwZWMueW1sIik7Cgpjb25zdCBjb2RlID0gY29kZUdlbmVyYXRvci5nZW5lcmF0ZUNvZGUoW2N1c3RvbUdlbmVyYXRvcl0pOwoKZnMud3JpdGVGaWxlU3luYygib3V0cHV0L2ZpbGUvbmFtZSIsIGNvZGUsIHsgZW5jb2Rpbmc6ICJ1dGYtOCIgfSk7CmBgYAoKIyMjIERlZmluZSBhIHRleHQtYmFzZWQgY29kZSB0ZW1wbGF0ZQoKQSBzZWxmLWRlZmluZWQgY29kZSBnZW5lcmF0b3IgY2FuIHJldHVybiBhbiBhcnJheSBvZiBgc3RyaW5nYC4KCmBgYHRzCmltcG9ydCAqIGFzIFR5cGVzIGZyb20gIkBoaW1lbm9uL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlLWdlbmVyYXRvci9kaXN0L3R5cGVzIjsKCmludGVyZmFjZSBPcHRpb24gewogIHNob3dMb2c/OiBib29sZWFuOwp9Cgpjb25zdCBnZW5lcmF0b3I6IFR5cGVzLkNvZGVHZW5lcmF0b3IuR2VuZXJhdGVGdW5jdGlvbjxPcHRpb24+ID0gKHBheWxvYWQ6IFR5cGVzLkNvZGVHZW5lcmF0b3IuUGFyYW1zW10sIG9wdGlvbik6IHN0cmluZ1tdID0+IHsKICBpZiAob3B0aW9uICYmIG9wdGlvbi5zaG93TG9nKSB7CiAgICBjb25zb2xlLmxvZygic2hvdyBsb2cgbWVzc2FnZSIpOwogIH0KICByZXR1cm4gWyJIZWxsbyB3b3JsZCJdOwp9OwoKY29uc3QgY3VzdG9tR2VuZXJhdG9yOiBUeXBlcy5Db2RlR2VuZXJhdG9yLkN1c3RvbUdlbmVyYXRvcjxPcHRpb24+ID0gewogIGdlbmVyYXRvcjogZ2VuZXJhdG9yLAogIG9wdGlvbjoge30sCn07CmBgYAoKIyMjIERlZmluZSB1c2luZyB0aGUgaW5mb3JtYXRpb24gZXh0cmFjdGVkIGZyb20gT3BlbkFQSSBTY2hlbWEKClRoZSBzZWxmLWRlZmluZWQgY29kZSBnZW5lcmF0b3IgY2FuIGFjY2VwdCBwYXJhbWV0ZXJzIGV4dHJhY3RlZCBmcm9tIE9wZW5BUEkgU2NoZW1hLgpTZWUgVHlwZSBkZWZpbml0aW9ucyBmb3IgYXZhaWxhYmxlIHBhcmFtZXRlcnMuCgpgYGB0cwppbXBvcnQgKiBhcyBUeXBlcyBmcm9tICJAaGltZW5vbi9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3IvZGlzdC90eXBlcyI7CgppbnRlcmZhY2UgT3B0aW9uIHt9Cgpjb25zdCBnZW5lcmF0b3I6IFR5cGVzLkNvZGVHZW5lcmF0b3IuR2VuZXJhdGVGdW5jdGlvbjxPcHRpb24+ID0gKHBheWxvYWQ6IFR5cGVzLkNvZGVHZW5lcmF0b3IuUGFyYW1zW10sIG9wdGlvbik6IHN0cmluZ1tdID0+IHsKICByZXR1cm4gcGF5bG9hZC5tYXAocGFyYW1zID0+IHsKICAgIHJldHVybiBgZnVuY3Rpb24gJHtwYXJhbXMub3BlcmF0aW9uSWR9KCkgeyBjb25zb2xlLmxvZygiJHtwYXJhbXMuY29tbWVudH0iKSB9YDsKICB9KTsKfTsKCmNvbnN0IGN1c3RvbUdlbmVyYXRvcjogVHlwZXMuQ29kZUdlbmVyYXRvci5DdXN0b21HZW5lcmF0b3I8T3B0aW9uPiA9IHsKICBnZW5lcmF0b3I6IGdlbmVyYXRvciwKICBvcHRpb246IHt9LAp9OwpgYGAKCiMjIyBEZWZpbmUgYW55IERhdGEgVHlwZXMgRm9ybWF0CgpDb252ZXJ0IGEgRGF0YSBUeXBlIHdpdGggdGhlIGZvbGxvd2luZyBgZm9ybWF0YCB0byBhbnkgdHlwZSBkZWZpbml0aW9uLgoKYGBgeWFtbApjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBCaW5hcnk6CiAgICAgIHR5cGU6IHN0cmluZwogICAgICBmb3JtYXQ6IGJpbmFyeQogICAgSW50T3JTdHJpbmc6CiAgICAgIHR5cGU6IHN0cmluZwogICAgICBmb3JtYXQ6IGludC1vci1zdHJpbmcKICAgIEFhbmRCOgogICAgICB0eXBlOiBzdHJpbmcKICAgICAgZm9ybWF0OiBBLWFuZC1CCmBgYAoKVGhlIG9wdGlvbiB0byBjb252ZXJ0IHRoZSBEYXRhIFR5cGUgRm9ybWF0IHRvIGFuIGFyYml0cmFyeSB0eXBlIGRlZmluaXRpb24gaXMgZGVmaW5lZCBhcyBmb2xsb3dzLgoKYGBgdHMKaW1wb3J0IHsgQ29kZUdlbmVyYXRvciwgT3B0aW9uIH0gZnJvbSAiQGhpbWVub24vb3BlbmFwaS10eXBlc2NyaXB0LWNvZGUtZ2VuZXJhdG9yIjsKY29uc3Qgb3B0aW9uOiBPcHRpb24gPSB7CiAgY29udmVydE9wdGlvbjogewogICAgZm9ybWF0Q29udmVyc2lvbnM6IFsKICAgICAgewogICAgICAgIHNlbGVjdG9yOiB7CiAgICAgICAgICBmb3JtYXQ6ICJiaW5hcnkiLAogICAgICAgIH0sCiAgICAgICAgb3V0cHV0OiB7CiAgICAgICAgICB0eXBlOiBbIkJsb2IiXSwKICAgICAgICB9LAogICAgICB9LAogICAgICB7CiAgICAgICAgc2VsZWN0b3I6IHsKICAgICAgICAgIGZvcm1hdDogImludC1vci1zdHJpbmciLAogICAgICAgIH0sCiAgICAgICAgb3V0cHV0OiB7CiAgICAgICAgICB0eXBlOiBbIm51bWJlciIsICJzdHJpbmciXSwKICAgICAgICB9LAogICAgICB9LAogICAgICB7CiAgICAgICAgc2VsZWN0b3I6IHsKICAgICAgICAgIGZvcm1hdDogIkEtYW5kLUIiLAogICAgICAgIH0sCiAgICAgICAgb3V0cHV0OiB7CiAgICAgICAgICB0eXBlOiBbIkEiLCAiQiJdLAogICAgICAgICAgbXVsdGlUeXBlOiAiYWxsT2YiLAogICAgICAgIH0sCiAgICAgIH0sCiAgICBdLAogIH0sCn07CmNvbnN0IGNvZGVHZW5lcmF0b3IgPSBuZXcgQ29kZUdlbmVyYXRvcihpbnB1dEZpbGVuYW1lLCBvcHRpb24pOwpgYGAKClRoZSB0eXBlZGVmIGdlbmVyYXRlZCBieSB0aGlzIHdpbGwgbG9vayBsaWtlIHRoaXMKCmBgYHRzCmV4cG9ydCBuYW1lc3BhY2UgU2NoZW1hcyB7CiAgZXhwb3J0IHR5cGUgQmluYXJ5ID0gQmxvYjsKICBleHBvcnQgdHlwZSBJbnRPclN0cmluZyA9IG51bWJlciB8IHN0cmluZzsKICBleHBvcnQgdHlwZSBBYW5kQiA9IEEgJiBCOwp9CmBgYAoKIyMjIERlZmluZSBhIGNvZGUgdGVtcGxhdGUgd2l0aCBUeXBlU2NyaXB0IEFTVAoKWW91IGNhbiBleHRlbmQgeW91ciBjb2RlIHVzaW5nIHRoZSBBUEkgb2YgVHlwZVNjcmlwdCBBU1QuCllvdSBjYW4gZGlyZWN0bHkgdXNlIHRoZSBBUEkgb2YgVHlwZVNjcmlwdCBBU1Qgb3IgdXNlIHRoZSB3cmFwcGVyIEFQSSBvZiBUeXBlU2NyaXB0IEFTVCBwcm92aWRlZCBieSB0aGlzIGxpYnJhcnkuCgpgYGB0cwppbXBvcnQgKiBhcyBUeXBlcyBmcm9tICJAaGltZW5vbi9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3IvZGlzdC90eXBlcyI7CmltcG9ydCB7IFRzR2VuZXJhdG9yIH0gZnJvbSAiQGhpbWVub24vb3BlbmFwaS10eXBlc2NyaXB0LWNvZGUtZ2VuZXJhdG9yL2Rpc3QvYXBpIjsKCmludGVyZmFjZSBPcHRpb24ge30KCmNvbnN0IGZhY3RvcnkgPSBUc0dlbmVyYXRvci5GYWN0b3J5LmNyZWF0ZSgpOwoKY29uc3QgZ2VuZXJhdG9yOiBUeXBlcy5Db2RlR2VuZXJhdG9yLkdlbmVyYXRlRnVuY3Rpb248T3B0aW9uPiA9ICgKICBwYXlsb2FkOiBUeXBlcy5Db2RlR2VuZXJhdG9yLlBhcmFtc1tdLAogIG9wdGlvbiwKKTogVHlwZXMuQ29kZUdlbmVyYXRvci5JbnRlcm1lZGlhdGVDb2RlW10gPT4gewogIHJldHVybiBwYXlsb2FkLm1hcChwYXJhbXMgPT4gewogICAgcmV0dXJuIGZhY3RvcnkuSW50ZXJmYWNlRGVjbGFyYXRpb24uY3JlYXRlKHsKICAgICAgZXhwb3J0OiB0cnVlLAogICAgICBuYW1lOiBwYXJhbXMuZnVuY3Rpb25OYW1lLAogICAgICBtZW1iZXJzOiBbXSwKICAgIH0pOwogIH0pOwp9OwoKY29uc3QgY3VzdG9tR2VuZXJhdG9yOiBUeXBlcy5Db2RlR2VuZXJhdG9yLkN1c3RvbUdlbmVyYXRvcjxPcHRpb24+ID0gewogIGdlbmVyYXRvcjogZ2VuZXJhdG9yLAogIG9wdGlvbjoge30sCn07CmBgYAoKIyMgQVBJCgojIyMgQ29kZUdlbmVyYXRvcgoKYGBgdHMKaW1wb3J0IHsgQ29kZUdlbmVyYXRvciB9IGZyb20gIkBoaW1lbm9uL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlLWdlbmVyYXRvciI7CmBgYAoKIyMjIyB2YWxpZGF0ZU9wZW5BcGlTY2hlbWEKClBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIGlucHV0IE9wZW5BUEkgU2NoZW1hLgoKIyMjIyBnZW5lcmF0ZVR5cGVEZWZpbml0aW9uCgpHZW5lcmF0ZXMgY29kZSB0aGF0IGNvbnZlcnRzIE9wZW5BUEkgU2NoZW1hIHRvIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucy4KCiMjIyMgZ2VuZXJhdGVDb2RlCgpZb3UgY2FuIHNwZWNpZnkgc2V2ZXJhbCBvZiB5b3VyIG93biBjb2RlIGdlbmVyYXRvcnMsIGFuZCB0aGUgZ2VuZXJhdG9ycyBjYW4gdXNlIHBhcmFtZXRlcnMgZXh0cmFjdGVkIGZyb20gT3BlbkFQSSBTY2hlbWEuCkl0IGludGVybmFsbHkgcGVyZm9ybXMgdGhlIGNvbnZlcnNpb24gb2YgYW4gYXJyYXkgb2YgYHN0cmluZ2Agb3IgYHRzLlN0YXRlbWVudGAgYXMgYSBzdHJpbmcuCgpGb3IgZXhhbXBsZSwgY3JlYXRpbmcgYSBnZW5lcmF0b3IgaW4gdW5pdHMgb2YgZmlsZSBkaXZpc2lvbnMgaW5jcmVhc2VzIHRoZSByZXVzYWJpbGl0eSBvZiB0aGUgZ2VuZXJhdG9yLgoKIyMjIyBnZXRDb2RlR2VuZXJhdG9yUGFyYW1zQXJyYXkKCkl0IHByb3ZpZGVzIHBhcmFtZXRlcnMgZXh0cmFjdGVkIGZyb20gT3BlbkFQSSBTY2hlbWEuCgojIyMjIGdldEFkZGl0aW9uYWxUeXBlRGVmaW5pdGlvbkN1c3RvbUNvZGVHZW5lcmF0b3IKClRoaXMgaXMgYSB0eXBlIGRlZmluaXRpb24gZmlsZSBmb3IgYFRlbXBsYXRlcy5GdW5jdGlvbmFsQXBpQ2xpZW50YC4gVGhlIHJlYXNvbiBpdCBpcyBub3QgaW5jbHVkZWQgaW4gYGdlbmVyYXRlVHlwZURlZmluaXRpb25gIGlzIHRoYXQgeW91IG1heSBub3QgdXNlIHRoZSB0eXBlIGRlZmluaXRpb24gZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gZGVwZW5kaW5nIG9uIHlvdXIgdXNhZ2UuCgrigLsgVGhlIHJlYXNvbiBpdCBpcyBub3QgaW5jbHVkZWQgaW4gYGdlbmVyYXRlVHlwZURlZmluaXRpb25gIGlzIHRoYXQgeW91IG1heSBub3QgdXNlIHRoZSB0eXBlIGRlZmluaXRpb25zIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGRlcGVuZGluZyBvbiB5b3VyIGFwcGxpY2F0aW9uLgoKIyMjIFRzR2VuZXJhdG9yCgpgYGB0cwppbXBvcnQgeyBUc0dlbmVyYXRvciB9IGZyb20gIkBoaW1lbm9uL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlLWdlbmVyYXRvci9kaXN0L2FwaSI7CmBgYAoKVGhpcyBpcyBhIHdyYXBwZXIgQVBJIGZvciB0aGUgVHlwZVNjcmlwdCBBU1QgdXNlZCBpbnRlcm5hbGx5LgpJdCBpcyBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KCiMjIyBPcGVuQXBpVG9vbHMKCmBgYHRzCmltcG9ydCB7IE9wZW5BcGlUb29scyB9IGZyb20gIkBoaW1lbm9uL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlLWdlbmVyYXRvci9kaXN0L2FwaSI7CmBgYAoKIyMjIyBQYXJzZXIKCi0gYE9wZW5BcGlUb29scy5QYXJzZXJgCgpUaGlzIGlzIHRoZSBBUEkgZm9yIHBhcnNpbmcgT3BlbkFQSSBTY2hlbWEuCkl0IGlzIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgoKIyMgUmVzdHJpY3Rpb25zCgojIyMgRGlyZWN0b3J5IFJlc3RyaWN0aW9ucyBmb3IgUmVtb3RlIFJlZmVyZW5jZQoKVGhlcmUgaXMgYSBsaW1pdGF0aW9uIG9uIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIHN1cHBvcnRlZC4KVG8gc2ltcGxpZnkgaW1wbGVtZW50YXRpb24gd2hlbiBjb252ZXJ0aW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmVzIHRvIFR5cGVTY3JpcHQgbmFtZXNwYWNlcywgUmVtb3RlIFJlZmVyZW5jZXMgdXNpbmcgYCRyZWZgIHNob3VsZCBvbmx5IGJlIGRlZmluZWQgaW4gdGhlIGZvbGxvd2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlcy4KSWYgeW91IHdhbnQgdG8gZXh0ZW5kIGl0LCBwbGVhc2UgZm9yayB0aGlzIHJlcG9zaXRvcnkgYW5kIGRvIGl0IHlvdXJzZWxmLgoKYGBgCnNwZWMueW1sIC8vIGVudHJ5IGZpbGUKY29tcG9uZW50cy8KICBoZWFkZXJzLwogIHBhcmFtZXRlcnMvCiAgcGF0aEl0ZW1zLwogIHJlcXVlc3RCb2RpZXMvCiAgcmVzcG9uc2VzLwogIHNjaGVtYXMvCiAgcGF0aHMvCmBgYAoKIyMjIEhUVFAgY29tbXVuaWNhdGlvbiByZXN0cmljdGlvbnMgZm9yIFJlbW90ZSBSZWZlcmVuY2UKCmAkcmVmOiBodHRwOi8vLi4uLmAgQ3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuIFdlIGhvcGUgdG8gc3VwcG9ydCBpdCBpbiB0aGUgZnV0dXJlLgoKIyMgQ29udHJpYnV0aW9ucwoKRmlyc3Qgb2YgYWxsLCB0aGFuayB5b3UgZm9yIHlvdXIgaW50ZXJlc3QuCldoZW4gY29udmVydGluZyBmcm9tIHRoZSBBUEkgc3BlY2lmaWNhdGlvbiB0byBUeXBlU2NyaXB0IGNvZGUsIHJlc29sdmluZyByZWZlcmVuY2UgcmVsYXRpb25zaGlwcyBjYW4gYmUgcGFydGljdWxhcmx5IGNoYWxsZW5naW5nLCBhbmQgdGhlcmUgbWF5IG5vdCBiZSBlbm91Z2ggdGVzdCBjYXNlcy4KQWRkaW5nIHRlc3QgY2FzZXMgaXMgYSB2ZXJ5IHBvd2VyZnVsIHN1cHBvcnQgZm9yIHN0YWJpbGl6aW5nIHRoZSBiZWhhdmlvciwgc28gcGxlYXNlIHJlcG9ydCBhbnkgYnVncyB5b3UgZmluZCB0aGF0IGFyZSBiZWhhdmluZyBzdHJhbmdlbHkuCkFsc28sIHRoZSBiYXNpYyBkZXNpZ24gY29uY2VwdHMgb2YgdGhpcyByZXBvc2l0b3J5IGNhbiBiZSBmb3VuZCBiZWxvdy4gSWYgeW91IHdhbnQgdG8gbWFrZSBjaGFuZ2VzIHRoYXQgZG8gbm90IGZvbGxvdyB0aGVzZSBjb25jZXB0cywgcGxlYXNlIGZvcmsgYW5kIGV4dGVuZCB0aGVtLgpJZiB5b3VyIGNoYW5nZXMgYXJlIGluIGxpbmUgd2l0aCB0aGUgZGVzaWduIGNvbmNlcHQsIHBsZWFzZSBzdWJtaXQgYSBwdWxsIHJlcXVlc3Qgb3IgaXNzdWUhCgojIyBEZXNpZ24gQ29uY2VwdAoKLSBCZSB0eXBlZGVmIGZpcnN0LgotIFR5cGVkZWZzIHNob3VsZCBub3QgY29udGFpbiBhbnkgZW50aXRpZXMgKGZpbGUgc2l6ZSBzaG91bGQgYmUgMCB3aGVuIHR5cGVkZWZzIGFyZSBjb252ZXJ0ZWQgdG8gYC5qc2ApCi0gVGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgc2hvdWxkIGJlIG1hcHBlZCB0byB0aGUgdHlwZWRlZiBzdHJ1Y3R1cmUuCi0gTm8gZGVwZW5kZW5jeSBvbiBhbnkgQVBJIGNsaWVudCBsaWJyYXJ5LgotIENhbiBiZSBleHRlbmRlZCBieSBUeXBlU2NyaXB0IEFTVC4KLSBDb25mb3JtIHRvIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24uCi0gSXQgc2hvdWxkIGJlIGEgc2luZ2xlIGZpbGUgdG8gbWFpbnRhaW4gcG9ydGFiaWxpdHkuCgojIyBEZXZlbG9wbWVudAoKYGBgYmFzaApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL0hpbWVub24vb3BlbmFwaS10eXBlc2NyaXB0LWNvZGUtZ2VuZXJhdG9yLmdpdApjZCBvcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3IKcG5wbSBpCiMjIyMgeW91ciBjaGFuZ2UKcG5wbSBidWlsZApwbnBtIHJ1biB0ZXN0OmNvZGU6Z2VuCnBucG0gcnVuIHVwZGF0ZTpzbmFwc2hvdCAjIGlmIHlvdSBjaGFuZ2VkCnBucG0gcnVuIHRlc3QKYGBgCgojIyBVc2VmdWwgZGV2ZWxvcG1lbnQgdG9vbHMKClR5cGVTY3JpcHQgQVNUCgotIGh0dHBzOi8vdHMtYXN0LXZpZXdlci5jb20KCiMjIExJQ0VOQ0UKCltAaGltZW5vbi9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9IaW1lbm9uL3R5cGVzY3JpcHQtY29kZWdlbiksIE1JVAoKIyMjIFJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbgoKVmFsaWRhdGlvbiBEZXNpZ24KCi0gQ29weXJpZ2h0IChjKSAyMDE4IEtvZ28gU29mdHdhcmUgTExDIC0gW2h0dHBzOi8vZ2l0aHViLmNvbS9rb2dvc29mdHdhcmVsbGMvb3Blbi1hcGkvdHJlZS9tYXN0ZXIvcGFja2FnZXMvb3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yI3JlYWRtZV0ob3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yKQo= readmeEtag: '"162fb539b6d489eef4e5c58714484103f827ab0c"' readmeLastModified: Mon, 04 Mar 2024 06:11:33 GMT repositoryId: 321679344 description: TypeScript code generator via OpenAPI scheme. created: '2020-12-15T13:40:09Z' updated: '2026-01-23T08:00:34Z' language: TypeScript archived: false stars: 207 watchers: 3 forks: 16 owner: Himenon logo: https://avatars.githubusercontent.com/u/6715229?v=4 license: MIT repoEtag: '"6a8d2eb15a6d1c50f592c6804a4e5ffc44d2fb63f63de663fef2d500c5ebd20e"' repoLastModified: Fri, 23 Jan 2026 08:00:34 GMT foundInMaster: true category: SDK id: fda6dd851e4578e64350df218e79cdaa - source: openapi3 tags repository: https://github.com/aress31/openapi-parser v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXBhcnNlcgoKWyFbSmF2YSBDSSB3aXRoIEdyYWRsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FyZXNzMzEvb3BlbmFwaS1wYXJzZXIvYWN0aW9ucy93b3JrZmxvd3MvZ3JhZGxlLWJ1aWxkLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vYXJlc3MzMS9vcGVuYXBpLXBhcnNlci9hY3Rpb25zL3dvcmtmbG93cy9ncmFkbGUtYnVpbGQueW1sKQo8YSBocmVmPSJodHRwczovL3BvcnRzd2lnZ2VyLm5ldC9iYXBwc3RvcmUvNmJmNzU3NGI2MzI4NDdmYWFhYTRlYjVlNDJmMTc1N2MiPjxpbWcgYWx0PSJiYXBwIHN0b3JlIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQkFwcC1QdWJsaXNoZWQtb3JhbmdlLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL3d3dy5qYXZhLmNvbSI+PGltZyBhbHQ9ImxhbmciIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MYW5nLUphdmEtYmx1ZS5zdmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9BcGFjaGUtMi4wIj48aW1nIGFsdD0ibGljZW5zZSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtQXBhY2hlJTIwMi4wLXJlZC5zdmciPjwvYT4KPGltZyBhbHQ9InZlcnNpb24iIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9WZXJzaW9uLTIuMy1ncmVlbi5zdmciPgoKPiBbIVVQREFURV0KPiBUaGlzIGV4dGVuc2lvbiBoYXMgYmVlbiB1cGRhdGVkIHRvIHVzZSB0aGUgbGF0ZXN0IFtCdXJwIE1vbnRveWEgSmF2YSBBUEldKGh0dHBzOi8vcG9ydHN3aWdnZXIuZ2l0aHViLmlvL2J1cnAtZXh0ZW5zaW9ucy1tb250b3lhLWFwaS9qYXZhZG9jL2J1cnAvYXBpL21vbnRveWEvcGFja2FnZS1zdW1tYXJ5Lmh0bWwpLiBUaGUgZXh0ZW5zaW9uIGhhcyB1bmRlcmdvbmUgYSBjb21wbGV0ZSBvdmVyaGF1bCB0byBpbXByb3ZlIGJvdGggaXRzIGBVSWAvYFVYYCBhbmQgcGVyZm9ybWFuY2UuIFRoZXNlIGNoYW5nZXMgZW5zdXJlIHRoYXQgdGhlIGV4dGVuc2lvbiBpcyBtb2Rlcm4gYW5kIG9wdGltaXNlZCBmb3IgdXNlLgoKIyMgb3BlbmFwaS1wYXJzZXIgaXMgYSBgQnVycCBTdWl0ZWAgZXh0ZW5zaW9uIGRlc2lnbmVkIGZvciBgT3BlbkFQSWAtYmFzZWQgYEFQSWAgdGVzdGluZwoKPiBUaGUgYE9wZW5BUElgIFNwZWNpZmljYXRpb24gKGBPQVNgKSBkZWZpbmVzIGEgc3RhbmRhcmQsIHByb2dyYW1taW5nIGxhbmd1YWdlLWFnbm9zdGljIGludGVyZmFjZSBkZXNjcmlwdGlvbiBmb3IgYFJFU1RgIGBBUElzYCwgd2hpY2ggYWxsb3dzIGJvdGggaHVtYW5zIGFuZCBjb21wdXRlcnMgdG8gZGlzY292ZXIgYW5kIHVuZGVyc3RhbmQgdGhlIGNhcGFiaWxpdGllcyBvZiBhIHNlcnZpY2Ugd2l0aG91dCByZXF1aXJpbmcgYWNjZXNzIHRvIHNvdXJjZSBjb2RlLCBhZGRpdGlvbmFsIGRvY3VtZW50YXRpb24sIG9yIGluc3BlY3Rpb24gb2YgbmV0d29yayB0cmFmZmljLiBXaGVuIHByb3Blcmx5IGRlZmluZWQgdmlhIGBPcGVuQVBJYCwgYSBjb25zdW1lciBjYW4gdW5kZXJzdGFuZCBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgcmVtb3RlIHNlcnZpY2Ugd2l0aCBhIG1pbmltYWwgYW1vdW50IG9mIGltcGxlbWVudGF0aW9uIGxvZ2ljLiBTaW1pbGFyIHRvIHdoYXQgaW50ZXJmYWNlIGRlc2NyaXB0aW9ucyBoYXZlIGRvbmUgZm9yIGxvd2VyLWxldmVsIHByb2dyYW1taW5nLCB0aGUgYE9wZW5BUElgIFNwZWNpZmljYXRpb24gcmVtb3ZlcyBndWVzc3dvcmsgaW4gY2FsbGluZyBhIHNlcnZpY2UuCj4KPiBVc2UgY2FzZXMgZm9yIG1hY2hpbmUtcmVhZGFibGUgYEFQSWAgZGVmaW5pdGlvbiBkb2N1bWVudHMgaW5jbHVkZSwgYnV0IGFyZSBub3QgbGltaXRlZCB0bzogaW50ZXJhY3RpdmUgZG9jdW1lbnRhdGlvbjsgY29kZSBnZW5lcmF0aW9uIGZvciBkb2N1bWVudGF0aW9uLCBjbGllbnRzLCBhbmQgc2VydmVyczsgYW5kIGF1dG9tYXRpb24gb2YgdGVzdCBjYXNlcy4gYE9wZW5BUElgIGRvY3VtZW50cyBkZXNjcmliZSBhbiBgQVBJYCdzIHNlcnZpY2VzIGFuZCBhcmUgcmVwcmVzZW50ZWQgaW4gZWl0aGVyIGBZQU1MYCBvciBgSlNPTmAgZm9ybWF0cy4gVGhlc2UgZG9jdW1lbnRzIG1heSBlaXRoZXIgYmUgcHJvZHVjZWQgYW5kIHNlcnZlZCBzdGF0aWNhbGx5IG9yIGJlIGdlbmVyYXRlZCBkeW5hbWljYWxseSBmcm9tIGFuIGFwcGxpY2F0aW9uLgo+Cj4gXC0gW2BPcGVuQVBJYCBJbml0aWF0aXZlXShodHRwczovL2dpdGh1Yi5jb20vT0FJL2BPcGVuQVBJYC1TcGVjaWZpY2F0aW9uKQoKUGVyZm9ybWluZyBzZWN1cml0eSBhc3Nlc3NtZW50IG9mIGBPcGVuQVBJYC1iYXNlZCBgQVBJc2AgY2FuIGJlIGEgdGVkaW91cyB0YXNrIGR1ZSB0byBgQnVycCBTdWl0ZWAgKGluZHVzdHJ5IHN0YW5kYXJkKSBsYWNraW5nIG5hdGl2ZSBgT3BlbkFQSWAgcGFyc2luZyBjYXBhYmlsaXRpZXMuIEEgc29sdXRpb24gdG8gdGhpcyBzaXR1YXRpb24sIGlzIHRvIHVzZSB0aGlyZC1wYXJ0eSB0b29scyAoZS5nLiBgU09BUC1VSWApIG9yIHRvIGltcGxlbWVudCBjdXN0b20gc2NyaXB0cyAob2Z0ZW4gb24gYSBwZXIgZW5nYWdlbWVudCBiYXNpcykgdG8gaGFuZGxlIHRoZSBwYXJzaW5nIG9mIGBPcGVuQVBJYCBkb2N1bWVudHMgYW5kIGludGVncmF0ZS9jaGFpbiB0aGUgcmVzdWx0cyB0byBgQnVycCBTdWl0ZWAgdG8gdXNlIGl0cyBmaXJzdCBjbGFzcyBzY2FubmluZyBjYXBhYmlsaXRpZXMuCgpvcGVuYXBpLXBhcnNlciBpcyBhbiBgT3BlbkFQSWAgcGFyc2VyIHRoYXQgYWltcyB0byBzdHJlYW1saW5lIHRoaXMgZW50aXJlIHByb2Nlc3MgYnkgYWxsb3dpbmcgc2VjdXJpdHkgcHJvZmVzc2lvbmFscyB0byB1c2UgYEJ1cnAgU3VpdGVgIGFzIGEgc3RhbmRhbG9uZSB0b29sIGZvciBzZWN1cml0eSBhc3Nlc3NtZW50IG9mIGBPcGVuQVBJYC1iYXNlZCBgQVBJc2AuCgojIyBGZWF0dXJlcwoKLSBgT3BlbkFQSWAgZG9jdW1lbnRzIGNhbiBiZSBwYXJzZWQgZWl0aGVyIGZyb20gYSBzdXBwbGllZCBmaWxlIG9yIFVSTC4gVGhlIGV4dGVuc2lvbiBjYW4gZmV0Y2ggYE9wZW5BUElgIGRvY3VtZW50cyBkaXJlY3RseSBmcm9tIGEgVVJMIHVzaW5nIHRoZSBgU2VuZCB0byBTd2FnZ2VyIFBhcnNlcmAgZmVhdHVyZSB1bmRlciB0aGUgYFRhcmdldCAtPiBTaXRlIG1hcGAgY29udGV4dCBtZW51LgotIFBhcnNlIGBPcGVuQVBJYCBkb2N1bWVudHMsIGZvcm1lcmx5IGtub3duIGFzIHRoZSBgU3dhZ2dlciBzcGVjaWZpY2F0aW9uYCwgZnVsbHkgY29tcGxpYW50IHdpdGggYE9wZW5BUElgIDIuMC8zLjAgU3BlY2lmaWNhdGlvbnMgKGBPQVNgKS4KLSBSZXF1ZXN0cyBjYW4gYmUgZGlyZWN0bHkgdmlld2VkL2VkaXRlZCB3aXRoaW4gdGhlIGV4dGVuc2lvbiBwcmlvciB0byBzZW5kaW5nIHRoZW0gdG8gb3RoZXIgQnVycCB0b29scy4KLSBSZXF1ZXN0cyBjYW4gYmUgc2VudCB0byB0aGUgYENvbXBhcmVyYCwgYEludHJ1ZGVyYCwgYE9yZ2FuaXplcmAsIGBSZXBlYXRlcmAsIGBTY2FubmVyYCwgYFNpdGUgbWFwYCBhbmQgYFNjb3BlYCBCdXJwIHRvb2xzLgotIFJlcXVlc3RzIG1hdGNoaW5nIHNwZWNpZmljIGNyaXRlcmlhcyAoZGV0YWlsZWQgaW4gdGhlICdQYXJhbWV0ZXJzJyB0YWIpIGNhbiBiZSBpbnRlcmNlcHRlZCB0byBhdXRvbWF0aWNhbGx5IG1hdGNoIGFuZCByZXBsYWNlIHRoZSBwYXJzZWQgcGFyYW1ldGVycyBkZWZhdWx0IHZhbHVlcyBkZWZpbmVkIGluIHRoZSAnUGFyYW1ldGVycycgdGFiLiBUaGlzIGZlYXR1cmUgYWxsb3dzIGZvciBmaW5lLXR1bmluZyBvZiB0aGUgcmVxdWVzdHMgcHJpb3IgdG8gc2VuZGluZyB0aGVtIHRvIG90aGVyIEJ1cnAgdG9vbHMgKGUuZy4sIHNjYW5uZXIpLiBFZGl0ZWQgcmVxdWVzdHMgY2FuIGJlIHZpZXdlZCB3aXRoaW4gdGhlICdNb2RpZmllZCBSZXF1ZXN0IChgT3BlbkFQSWAgUGFyc2VyKScgdGFiIG9mIEJ1cnAncyBtZXNzYWdlIGVkaXRvci4KLSBSb3cgaGlnaGxpZ2h0aW5nIGFsbG93aW5nIHBlbnRlc3RlcnMgdG8gaGlnaGxpZ2h0ICJpbnRlcmVzdGluZyIgYEFQSWAgY2FsbHMgYW5kL29yIGNvbG91ciBjb2RlIHRoZW0gZm9yIHJlcG9ydGluZyBwdXJwb3Nlcy4KLSBJbmNsdWRlcyBhbiBleHBvcnQgdG8gYENTVmAgZmVhdHVyZSwgYWxsb3dpbmcgdXNlcnMgdG8gZWFzaWx5IGV4cG9ydCBzZWxlY3RlZCBgQVBJYCByZXF1ZXN0cyBpbiBgQ1NWYCBmb3JtYXQgZm9yIGZ1cnRoZXIgYW5hbHlzaXMgb3IgcmVwb3J0aW5nLgotIFN1cHBvcnRzIGJvdGggYEpTT05gIGFuZCBgWUFNTGAgZm9ybWF0cy4KCiMjIFJlcXVpcmVtZW50cwoKIyMjIDEuIFN5c3RlbSByZXF1aXJlbWVudHMKCi0gT3BlcmF0aW5nIFN5c3RlbTogQ29tcGF0aWJsZSB3aXRoIGBMaW51eGAsIGBtYWNPU2AsIGFuZCBgV2luZG93c2Agb3BlcmF0aW5nIHN5c3RlbXMuCi0gSmF2YSBEZXZlbG9wbWVudCBLaXQgKEpESyk6IGBWZXJzaW9uIDExYCBvciBsYXRlci4KLSBCdXJwIFN1aXRlIFByb2Zlc3Npb25hbCBvciBDb21tdW5pdHkgRWRpdGlvbjogYFZlcnNpb24gMjAyMy4xMS4xLjNgIG9yIGxhdGVyLgoKICA+IFshSU1QT1JUQU5UXQogID4gUGxlYXNlIG5vdGUgdGhhdCB1c2luZyBhbnkgdmVyc2lvbiBsb3dlciB0aGFuIGAyMDIzLjMuMmAgbWF5IHJlc3VsdCBpbiBhIFtqYXZhLmxhbmcuTm9TdWNoTWV0aG9kRXJyb3JdKGh0dHBzOi8vZm9ydW0ucG9ydHN3aWdnZXIubmV0L3RocmVhZC9tb250b3lhLWFwaS1ub3N1Y2htZXRob2RlcnJvci0yNzUwNDhiZSkuIEl0IGlzIGNydWNpYWwgdG8gdXNlIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBvciBhIG1vcmUgcmVjZW50IG9uZSB0byBhdm9pZCB0aGlzIGlzc3VlLgoKIyMjIDIuIEJ1aWxkIHRvb2wKCi0gR3JhZGxlOiBgVmVyc2lvbiA4LjVgIG9yIGxhdGVyIChyZWNvbW1lbmRlZCkuIFRoZSBbYnVpbGQuZ3JhZGxlXShodHRwczovL2dpdGh1Yi5jb20vYXJlc3MzMS9vcGVuYXBpLXBhcnNlci9ibG9iL21haW4vbGliL2J1aWxkLmdyYWRsZSkgZmlsZSBpcyBwcm92aWRlZCBpbiB0aGUgcHJvamVjdCByZXBvc2l0b3J5LgoKIyMjIDMuIEVudmlyb25tZW50IHZhcmlhYmxlcwoKLSBTZXQgdXAgdGhlIGBKQVZBX0hPTUVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHBvaW50IHRvIHRoZSBgSkRLYCBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LgoKUGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBzeXN0ZW0gcmVxdWlyZW1lbnRzLCBpbmNsdWRpbmcgYSBjb21wYXRpYmxlIHZlcnNpb24gb2YgYEJ1cnAgU3VpdGVgLCBhcmUgbWV0IGJlZm9yZSBidWlsZGluZyBhbmQgcnVubmluZyB0aGUgcHJvamVjdC4gTm90ZSB0aGF0IHRoZSBwcm9qZWN0J3MgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIHdpbGwgYmUgYXV0b21hdGljYWxseSBtYW5hZ2VkIGFuZCBpbnN0YWxsZWQgYnkgYEdyYWRsZWAgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBBZGhlcmluZyB0byB0aGUgcmVxdWlyZW1lbnRzIHdpbGwgaGVscCBhdm9pZCBwb3RlbnRpYWwgaXNzdWVzIGFuZCByZWR1Y2UgdGhlIG5lZWQgZm9yIG9wZW5pbmcgbmV3IGlzc3VlcyBpbiB0aGUgcHJvamVjdCByZXBvc2l0b3J5LgoKIyMgSW5zdGFsbGF0aW9uCgojIyMgMS4gQ29tcGlsYXRpb24KCjEuIEVuc3VyZSB5b3UgaGF2ZSBbR3JhZGxlXShodHRwczovL2dyYWRsZS5vcmcvKSBpbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQuCgoyLiBEb3dubG9hZCB0aGUgYG9wZW5hcGktcGFyc2VyYCByZXBvc2l0b3J5OgoKICAgYGBgYmFzaAogICBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2FyZXNzMzEvb3BlbmFwaS1wYXJzZXIKICAgY2QgLlxvcGVuYXBpLXBhcnNlclwKICAgYGBgCgozLiBCdWlsZCB0aGUgc3RhbmRhbG9uZSBgamFyYDoKCiAgIGBgYGJhc2gKICAgLi9ncmFkbGV3IGZhdEphcgogICBgYGAKCiMjIyAyLiBMb2FkaW5nIHRoZSBFeHRlbnNpb24gSW50byBgQnVycCBTdWl0ZWAKClRvIGluc3RhbGwgYG9wZW5hcGktcGFyc2VyYCBpbiBgQnVycCBTdWl0ZWAsIGZpcnN0IGdvIHRvIHRoZSBgRXh0ZW5zaW9uc2AgdGFiIGFuZCBjbGljayBvbiB0aGUgYEFkZGAgYnV0dG9uLiBUaGVuLCBzZWxlY3QgdGhlIGBvcGVuYXBpLXBhcnNlci1hbGxgIGphciBmaWxlIGxvY2F0ZWQgaW4gdGhlIGAuXGJ1aWxkXGxpYnNgIGZvbGRlciB0byBsb2FkIHRoZSBleHRlbnNpb24uCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHNraXAgdGhlIFtDb21waWxhdGlvbl0oIzEtY29tcGlsYXRpb24pIHN0ZXAgZW50aXJlbHkgYW5kIGRvd25sb2FkIHRoZSBleHRlbnNpb24gZGlyZWN0bHkgZnJvbSB0aGUgW0JBcHAgU3RvcmVdKGh0dHBzOi8vcG9ydHN3aWdnZXIubmV0L2JhcHBzdG9yZS82YmY3NTc0YjYzMjg0N2ZhYWFhNGViNWU0MmYxNzU3YykuCgpfTm90ZTogVGhlIHZlcnNpb24gZGlzdHJpYnV0ZWQgb24gdGhlIFtCQXBwIFN0b3JlXShodHRwczovL3BvcnRzd2lnZ2VyLm5ldC9iYXBwc3RvcmUvNmJmNzU3NGI2MzI4NDdmYWFhYTRlYjVlNDJmMTc1N2MpIG1pZ2h0IGJlIGxhZ2dpbmcgYmVoaW5kIHRoZSB2ZXJzaW9uIGF2YWlsYWJsZSBvbiB0aGlzIHJlcG9zaXRvcnkuXwoKIyMgUm9hZG1hcAoKLSBbIF0gQmVhdXRpZnkgdGhlIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZS4KLSBbIF0gRGVlcCBwYXJzaW5nIG9mIGBPcGVuQVBJYCBzY2hlbWFzIHRvIGNvbGxlY3QgYWxsIG5lc3RlZCBwYXJhbWV0ZXJzIGFsb25nIHdpdGggdGhlaXIgZXhhbXBsZS90eXBlLgotIFsgXSBDb2RlIHNpbXBsaWZpY2F0aW9uL3JlZmFjdG9yaW5nLgogIC0gW3hdIFVzZSBgTXlIdHRwUmVxdWVzdGAgaW5zdGVhZCBvZiBgUmVxdWVzdFdpdGhNZXRhZGF0YWAuCi0gW3hdIEVuYWJsZSBjZWxscyBlZGl0aW5nIHRvIGNoYW5nZSBgQVBJYCBjYWxscyBkaXJlY3RseSBmcm9tIHRoZSBgR1VJYC4KLSBbIF0gRml4IHRoZSBjdXN0b20gcmVxdWVzdCBlZGl0b3IgdGFiIHRvIHdvcmsgcHJvcGVybHkgd2l0aCBpbnRlcmNlcHRlZCByZXF1ZXN0cyBiYXNlZCBvbiB0aGUgbWF0Y2ggYW5kIHJlcGxhY2UgcnVsZXNldHMuCi0gW3hdIEZ1cnRoZXIgb3B0aW1pc2UgdGhlIHNvdXJjZSBjb2RlLgotIFsgXSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgYXV0aGVudGljYXRlZCB0ZXN0aW5nICh2aWEgdXNlci1zdXBwbGllZCBgQVBJYC1rZXlzKS4KLSBbeF0gSW1wcm92ZSB0aGUgYFBhcmFtYCBjb2x1bW4gYnkgYWRkaW5nIHBhcmFtZXRlcnMgdHlwZSAoZS5nLiBgaW5xdWVyeWAsIGBpbmJvZHlgKS4KLSBbeF0gSW1wcm92ZSB0aGUgdGFibGVzIGFuZCBjb250ZXh0IG1lbnVzLgotIFt4XSBJbmNyZWFzZSB0aGUgZXh0ZW5zaW9uIHZlcmJvc2l0eSAodmlhIHRoZSBib3R0b20gcGFuZWwpLgoKU2VlIFtUT0RPXShUT0RPLm1kKSBmb3IgYWRkaXRpb25hbCBvdXRzdGFuZGluZyB0YXNrcy4KCiMjIFByb2plY3QgSW5mb3JtYXRpb24KCkluIEp1bHkgMjAxNiwgYWZ0ZXIgcG9zdGluZyBhIHJlcXVlc3QgZm9yIGltcHJvdmVtZW50IG9uIHRoZSBbUG9ydFN3aWdnZXIgc3VwcG9ydCBmb3J1bV0oaHR0cHM6Ly9zdXBwb3J0LnBvcnRzd2lnZ2VyLm5ldC9jdXN0b21lci9wb3J0YWwvcXVlc3Rpb25zLzE2MzU4Mjc4LXN3YWdnZXItcGFyc2VyLWFuZC13c2RsZXItaW1wcm92ZW1lbnQpLCBJIGRlY2lkZWQgdG8gdGFrZSB0aGUgaW5pdGlhdGl2ZSBhbmQgdG8gaW1wbGVtZW50IGEgc29sdXRpb24gbXlzZWxmLgoKVGhlIGV4dGVuc2lvbiBpcyBzdGlsbCBpbiBkZXZlbG9wbWVudCwgZmVlZGJhY2ssIGNvbW1lbnRzIGFuZCBjb250cmlidXRpb25zIGFyZSB0aGVyZWZvcmUgbXVjaCBhcHByZWNpYXRlZC4KCiMjIFNwb25zb3Ig8J+SlgoKSWYgdGhpcyBleHRlbnNpb24gaGFzIHNhdmVkIHlvdSB0aW1lIGFuZCBoYXNzbGUgZHVyaW5nIGEgc2VjdXJpdHkgYXNzZXNzbWVudCwgY29uc2lkZXIgc2hvd2luZyBzb21lIGxvdmUgYnkgc3BvbnNvcmluZyBhIGN1cCBvZiBjb2ZmZWUg4piVIGZvciB0aGUgZGV2ZWxvcGVyLiBJdCdzIHRoZSBmdWVsIHRoYXQgcG93ZXJzIGRldmVsb3BtZW50LCBhZnRlciBhbGwuIEp1c3QgaGl0IHRoYXQgc2hpbnkgYFNwb25zb3JgIGJ1dHRvbiBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlIG9yIFtjbGljayBoZXJlXShodHRwczovL2dpdGh1Yi5jb20vc3BvbnNvcnMvYXJlc3MzMSkgdG8gY29udHJpYnV0ZSBhbmQga2VlcCB0aGUgY2FmZmVpbmUgZmxvd2luZy4g8J+SuAoKIyMgUmVwb3J0aW5nIElzc3VlcwoKRGlkIHlvdSBmaW5kIGEgYnVnPyBXZWxsLCBkb24ndCBqdXN0IGxldCBpdCBjcmF3bCBhcm91bmQhIExldCdzIHNxdWFzaCBpdCB0b2dldGhlciBsaWtlIGEgY291cGxlIG9mIGJ1ZyB3aGlzcGVyZXJzISDwn5Cb8J+SqgoKUGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIG9uIHRoZSBbR2l0SHViIGlzc3VlcyB0cmFja2VyXShodHRwczovL2dpdGh1Yi5jb20vYXJlc3MzMS9vcGVuYXBpLXBhcnNlci9pc3N1ZXMpLiBUb2dldGhlciwgd2UnbGwgbWFrZSB0aGlzIGV4dGVuc2lvbiBhcyByZWxpYWJsZSBhcyBhIGNvY2tyb2FjaCBzdXJ2aXZpbmcgYSBudWNsZWFyIGFwb2NhbHlwc2UhIPCfmoAKCiMjIENvbnRyaWJ1dGluZwoKTG9va2luZyB0byBtYWtlIGEgc3BsYXNoIHdpdGggeW91ciBtYWQgY29kaW5nIHNraWxscz8g8J+SuwoKQXdlc29tZSEgQ29udHJpYnV0aW9ucyBhcmUgd2VsY29tZSBhbmQgZ3JlYXRseSBhcHByZWNpYXRlZC4gUGxlYXNlIHN1Ym1pdCBhbGwgUFJzIG9uIHRoZSBbR2l0SHViIHB1bGwgcmVxdWVzdHMgdHJhY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL2FyZXNzMzEvb3BlbmFwaS1wYXJzZXIvcHVsbHMpLiBUb2dldGhlciB3ZSBjYW4gbWFrZSB0aGlzIGV4dGVuc2lvbiBldmVuIG1vcmUgYW1hemluZyEg8J+agAoKIyMgTGljZW5zZQoKU2VlIFtMSUNFTlNFXShMSUNFTlNFKS4K readmeEtag: '"32d486082518e7ab9b4321d546b059fe5dc739c1"' readmeLastModified: Wed, 03 Jan 2024 18:53:00 GMT repositoryId: 70046718 description: >- Parse OpenAPI documents into Burp Suite for automating OpenAPI-based APIs security assessments (approved by PortSwigger for inclusion in their official BApp Store). created: '2016-10-05T09:32:42Z' updated: '2026-01-12T04:15:30Z' language: Java archived: false stars: 206 watchers: 4 forks: 53 owner: aress31 logo: https://avatars.githubusercontent.com/u/11601622?v=4 license: Apache-2.0 repoEtag: '"936e7d492d724cb64c2b2f359b5a2861df30eae0a4e72fb9d8fce9cdc3f37c6e"' repoLastModified: Mon, 12 Jan 2026 04:15:30 GMT foundInMaster: true category: - Documentation - Parsers id: 3dd0465c78eeb00e652527da7f6ec81a oldLocations: - https://github.com/aress31/swurg - source: openapi3 tags repository: https://github.com/openapi-library/openapivalidators v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFZhbGlkYXRvcnMKCiFbYnVpbGQgc3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpCiFbc3R5bGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLWFpcmJuYi1mZjVhNWYuc3ZnKQpbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycykKWyFbTUlUIExpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2wvb3BlbmFwaS12YWxpZGF0b3Iuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9ibG9iL21hc3Rlci9MSUNFTlNFKQpbIVtjb250cmlidXRpb25zIHdlbGNvbWVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29udHJpYnV0aW9ucy13ZWxjb21lLWJyaWdodGdyZWVuLnN2Zz9zdHlsZT1mbGF0KV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQpCgpVc2UgSmVzdCBvciBDaGFpIHRvIGFzc2VydCB0aGF0IEhUVFAgcmVzcG9uc2VzIHNhdGlzZnkgYW4gT3BlbkFQSSBzcGVjLgoKIyMgUHJvYmxlbSDwn5iVCgpJZiB5b3VyIHNlcnZlcidzIGJlaGF2aW91ciBkb2Vzbid0IG1hdGNoIHlvdXIgQVBJIGRvY3VtZW50YXRpb24sIHRoZW4geW91IG5lZWQgdG8gY29ycmVjdCB5b3VyIHNlcnZlciwgeW91ciBkb2N1bWVudGF0aW9uLCBvciBib3RoLiBUaGUgc29vbmVyIHlvdSBrbm93IHRoZSBiZXR0ZXIuCgojIyBTb2x1dGlvbiDwn5iECgpUaGVzZSB0ZXN0IHBsdWdpbnMgbGV0IHlvdSBhdXRvbWF0aWNhbGx5IHRlc3Qgd2hldGhlciB5b3VyIHNlcnZlcidzIGJlaGF2aW91ciBhbmQgZG9jdW1lbnRhdGlvbiBtYXRjaC4gVGhleSBleHRlbmQgSmVzdCBhbmQgQ2hhaSB0byBzdXBwb3J0IHRoZSBbT3BlbkFQSSBzdGFuZGFyZF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9hYm91dC8pIGZvciBkb2N1bWVudGluZyBSRVNUIEFQSXMuIEluIHlvdXIgSmF2YVNjcmlwdCB0ZXN0cywgeW91IGNhbiBzaW1wbHkgYXNzZXJ0IGBleHBlY3QocmVzcG9uc2VPYmplY3QpLnRvU2F0aXNmeUFwaVNwZWMoKWAKCiMjIyBbamVzdC1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL3RyZWUvbWFzdGVyL3BhY2thZ2VzL2plc3Qtb3BlbmFwaSNyZWFkbWUpCgpbIVtkb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL2plc3Qtb3BlbmFwaSldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2plc3Qtb3BlbmFwaSkKWyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L2plc3Qtb3BlbmFwaS5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9qZXN0LW9wZW5hcGkpCgojIyMgW0NoYWkgT3BlbkFQSSBSZXNwb25zZSBWYWxpZGF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvdHJlZS9tYXN0ZXIvcGFja2FnZXMvY2hhaS1vcGVuYXBpLXJlc3BvbnNlLXZhbGlkYXRvciNyZWFkbWUpCgpbIVtkb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL2NoYWktb3BlbmFwaS1yZXNwb25zZS12YWxpZGF0b3IpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9jaGFpLW9wZW5hcGktcmVzcG9uc2UtdmFsaWRhdG9yKQpbIVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvY2hhaS1vcGVuYXBpLXJlc3BvbnNlLXZhbGlkYXRvci5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9jaGFpLW9wZW5hcGktcmVzcG9uc2UtdmFsaWRhdG9yKQoKIyMgQ29udHJpYnV0b3JzIOKcqAoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6U1RBUlQgLSBEbyBub3QgcmVtb3ZlIG9yIG1vZGlmeSB0aGlzIHNlY3Rpb24gLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgo8IS0tIG1hcmtkb3dubGludC1kaXNhYmxlIC0tPgo8dGFibGU+CiAgPHRyPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yd2FsbGU2MSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTgxNzAxNjk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+UmljaGFyZCBXYWxsZXI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNtYWludGVuYW5jZS1yd2FsbGU2MSIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPXJ3YWxsZTYxIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9jb21taXRzP2F1dGhvcj1yd2FsbGU2MSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBcndhbGxlNjEiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0pvbm55U3BydWNlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMDgxMjI3Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5Kb25ueSBTcHJ1Y2U8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvY29tbWl0cz9hdXRob3I9Sm9ubnlTcHJ1Y2UiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPUpvbm55U3BydWNlIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FKb25ueVNwcnVjZSIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQWxleERvYmVjayI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA1MTkzODg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+QWxleCBEb2JlY2s8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvY29tbWl0cz9hdXRob3I9QWxleERvYmVjayIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvaXNzdWVzP3E9YXV0aG9yJTNBQWxleERvYmVjayIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0Jlbkd1MyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzEwNTg1Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5CZW4gR3V0aHJpZTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9jb21taXRzP2F1dGhvcj1CZW5HdTMiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2lzc3Vlcz9xPWF1dGhvciUzQUJlbkd1MyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9tYXJ0aWpudmVndGVyLmNvbS8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI1MTM0NDc3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPk1hcnRpam4gVmVndGVyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPW12ZWd0ZXIiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2x1ZGVrbm92eSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM2MTA2MTI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+THVkZWs8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvY29tbWl0cz9hdXRob3I9bHVkZWtub3Z5IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9pc3N1ZXM/cT1hdXRob3IlM0FsdWRla25vdnkiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90Z2lhcmRpbmEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMxLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM3NDU5MTA0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPlRvbW15IEdpYXJkaW5hPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPXRnaWFyZGluYSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLWxpYnJhcnkvT3BlbkFQSVZhbGlkYXRvcnMvaXNzdWVzP3E9YXV0aG9yJTNBdGdpYXJkaW5hIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL3hvdGFidTQuZ2l0aHViLmlvLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzAzMzk3Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5PbGVrc2FuZHIgS2hvdGVtc2t5aTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9jb21taXRzP2F1dGhvcj1Yb3RhYnU0IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbWl0a2VpbmFuOSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjU3NzMzNT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5BbWl0IEtlaW5hbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktbGlicmFyeS9PcGVuQVBJVmFsaWRhdG9ycy9jb21taXRzP2F1dGhvcj1hbWl0a2VpbmFuOSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRGV0YWNoSGVhZCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NzAyODMzNj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5EZXRhY2hIZWFkPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2lzc3Vlcz9xPWF1dGhvciUzQURldGFjaEhlYWQiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly9rYXJsc3NvbmtyaXN0b2ZmZXIuY29tLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMDQ5MDIwMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iIi8+PGJyIC8+PHN1Yj48Yj5LcmlzdG9mZmVyIEthcmxzc29uPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1saWJyYXJ5L09wZW5BUElWYWxpZGF0b3JzL2NvbW1pdHM/YXV0aG9yPWtyaXN0b2ZmZXJrYXJsc3NvbjkzIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8IS0tIG1hcmtkb3dubGludC1yZXN0b3JlIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+Cgo8IS0tIEFMTC1DT05UUklCVVRPUlMtTElTVDpFTkQgLS0+Cg== readmeEtag: '"4d5a529f7a19b52fab62aaf17e9c5263bd765e2d"' readmeLastModified: Tue, 29 Mar 2022 10:12:21 GMT repositoryId: 199614125 description: Use Jest or Chai to assert that HTTP responses satisfy an OpenAPI spec created: '2019-07-30T08:56:01Z' updated: '2025-12-11T11:06:52Z' language: TypeScript archived: false stars: 194 watchers: 11 forks: 38 owner: openapi-library logo: https://avatars.githubusercontent.com/u/53815441?v=4 license: MIT repoEtag: '"982859aab5b874db7602c4d6d41812452f2b57b69b87a00845a5040995271994"' repoLastModified: Thu, 11 Dec 2025 11:06:52 GMT foundInMaster: true category: Testing id: a81dda804efb1a473233a16a10be8d0b - source: - openapi3 tags - openapi31 tags repository: https://github.com/redocly/openapi-sampler v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXNhbXBsZXIKClshW1RyYXZpcyBidWlsZCBzdGF0dXNdKGh0dHA6Ly9pbWcuc2hpZWxkcy5pby90cmF2aXMvUmVkb2NseS9vcGVuYXBpLXNhbXBsZXIuc3ZnP3N0eWxlPWZsYXQpXShodHRwczovL3RyYXZpcy1jaS5vcmcvUmVkb2NseS9vcGVuYXBpLXNhbXBsZXIpIFshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvUmVkb2NseS9vcGVuYXBpLXNhbXBsZXIvYmFkZ2Uuc3ZnP2JyYW5jaD1tYXN0ZXImc2VydmljZT1naXRodWIpXShodHRwczovL2NvdmVyYWxscy5pby9naXRodWIvUmVkb2NseS9vcGVuYXBpLXNhbXBsZXI/YnJhbmNoPW1hc3RlcikgWyFbRGVwZW5kZW5jeSBTdGF0dXNdKGh0dHBzOi8vZGF2aWQtZG0ub3JnL1JlZG9jbHkvb3BlbmFwaS1zYW1wbGVyLnN2ZyldKGh0dHBzOi8vZGF2aWQtZG0ub3JnL1JlZG9jbHkvb3BlbmFwaS1zYW1wbGVyKSBbIVtkZXZEZXBlbmRlbmN5IFN0YXR1c10oaHR0cHM6Ly9kYXZpZC1kbS5vcmcvUmVkb2NseS9vcGVuYXBpLXNhbXBsZXIvZGV2LXN0YXR1cy5zdmcpXShodHRwczovL2RhdmlkLWRtLm9yZy9SZWRvY2x5L29wZW5hcGktc2FtcGxlciNpbmZvPWRldkRlcGVuZGVuY2llcykKClRvb2wgZm9yIGdlbmVyYXRpb24gc2FtcGxlcyBiYXNlZCBvbiBPcGVuQVBJIHBheWxvYWQvcmVzcG9uc2Ugc2NoZW1hCgojIyBGZWF0dXJlcwoKLSBEZXRlcm1pbmlzdGljIChnaXZlbiBhIHBhcnRpY3VsYXIgaW5wdXQsIHdpbGwgYWx3YXlzIHByb2R1Y2UgdGhlIHNhbWUgb3V0cHV0KQotIFN1cHBvcnRzIGNvbXBvdW5kIGtleXdvcmRzOiBgYWxsT2ZgLCBgb25lT2ZgLCBgYW55T2ZgLCBgaWYvdGhlbi9lbHNlYAotIFN1cHBvcnRzIGBhZGRpdGlvbmFsUHJvcGVydGllc2Agd2l0aCBbYHgtYWRkaXRpb25hbFByb3BlcnRpZXNOYW1lYF0oaHR0cHM6Ly9naXRodWIuY29tL1JlZG9jbHkvcmVkb2MvYmxvYi9tYXN0ZXIvZG9jcy9yZWRvYy12ZW5kb3ItZXh0ZW5zaW9ucy5tZCN4LWFkZGl0aW9uYWxwcm9wZXJ0aWVzbmFtZSkKLSBVc2VzIGBjb25zdGAsIGBleGFtcGxlc2AsIGBlbnVtYCBhbmQgYGRlZmF1bHRgIHdoZXJlIHBvc3NpYmxlIC0gaW4gdGhpcyBvcmRlcgotIEdvb2QgYXJyYXkgc3VwcG9ydDogc3VwcG9ydHMgYGNvbnRhaW5zYCwgYG1pbkl0ZW1zYCwgYG1heEl0ZW1zYCwgYW5kIHR1cGxlcyAoYGl0ZW1zYCBhcyBhbiBhcnJheSkKLSBTdXBwb3J0cyBgbWluTGVuZ3RoYCwgYG1heExlbmd0aGAsIGBtaW5gLCBgbWF4YCwgYGV4Y2x1c2l2ZU1pbmltdW1gLCBgZXhjbHVzaXZlTWF4aW11bWAsIChbbGltaXRlZF0oaHR0cHM6Ly9mYWtlcmpzLmRldi9hcGkvaGVscGVycy5odG1sI2Zyb21yZWdleHApKSBgcGF0dGVybmAKLSBTdXBwb3J0cyB0aGUgZm9sbG93aW5nIGBzdHJpbmdgIGZvcm1hdHM6CiAgLSBlbWFpbAogIC0gaWRuLWVtYWlsCiAgLSBwYXNzd29yZAogIC0gZGF0ZS10aW1lCiAgLSBkYXRlCiAgLSB0aW1lCiAgLSBpcHY0CiAgLSBpcHY2CiAgLSBob3N0bmFtZQogIC0gaWRuLWhvc3RuYW1lCiAgLSB1cmkKICAtIHVyaS1yZWZlcmVuY2UKICAtIHVyaS10ZW1wbGF0ZQogIC0gaXJpCiAgLSBpcmktcmVmZXJlbmNlCiAgLSB1dWlkCiAgLSBqc29uLXBvaW50ZXIKICAtIHJlbGF0aXZlLWpzb24tcG9pbnRlcgogIC0gcmVnZXgKLSBJbmZlcnMgc2NoZW1hIHR5cGUgYXV0b21hdGljYWxseSBmb2xsb3dpbmcgc2FtZSBydWxlcyBhcyBbanNvbi1zY2hlbWEtZmFrZXJdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2pzb24tc2NoZW1hLWZha2VyI2luZmVycmVkLXR5cGVzKQotIFN1cHBvcnQgZm9yIGAkcmVmYCByZXNvbHZpbmcKLSBIYXMgYmFzaWMgc3VwcG9ydHMgZm9yIEpTT04gU2NoZW1hIGRyYWZ0IDcgKHRoYW5rcyB0byBbQFAwbGlwXShodHRwczovL2dpdGh1Yi5jb20vUDBsaXApIGZyb20gW0BzdG9wbGlnaHRpb10oaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvKSBmb3IgY29udHJpYnV0aW5nKQoKIyMgSW5zdGFsbGF0aW9uCgpJbnN0YWxsIHVzaW5nIFtucG1dKGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vZ2V0dGluZy1zdGFydGVkL3doYXQtaXMtbnBtKQoKICAgIG5wbSBpbnN0YWxsIG9wZW5hcGktc2FtcGxlcgoKb3IgdXNpbmcgW3lhcm5dKGh0dHBzOi8veWFybnBrZy5jb20pCgogICAgeWFybiBhZGQgb3BlbmFwaS1zYW1wbGVyCgpUaGVuIHJlcXVpcmUgaXQgaW4geW91ciBjb2RlOgoKYGBganMKdmFyIE9wZW5BUElTYW1wbGVyID0gcmVxdWlyZSgnb3BlbmFwaS1zYW1wbGVyJyk7CmBgYAoKIyMgVXNhZ2UKIyMjIyBgT3BlbkFQSVNhbXBsZXIuc2FtcGxlKHNjaGVtYSwgW29wdGlvbnNdLCBbc3BlY10pYAotICoqc2NoZW1hKiogKF9yZXF1aXJlZF8pIC0gYG9iamVjdGAKQW4gW09wZW5BUEkgU2NoZW1hIE9iamVjdF0oaHR0cDovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jc2NoZW1hT2JqZWN0KSBvciBhIEpTT04gU2NoZW1hIERyYWZ0IDcgZG9jdW1lbnQuCi0gKipvcHRpb25zKiogKF9vcHRpb25hbF8pIC0gYG9iamVjdGAKQXZhaWxhYmxlIG9wdGlvbnM6CiAgLSAqKnNraXBOb25SZXF1aXJlZCoqIC0gYGJvb2xlYW5gCiAgRG9uJ3QgaW5jbHVkZSBub24tcmVxdWlyZWQgb2JqZWN0IHByb3BlcnRpZXMgbm90IHNwZWNpZmllZCBpbiBbYHJlcXVpcmVkYCBwcm9wZXJ0eSBvZiB0aGUgc2NoZW1hIG9iamVjdF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kYXRhLW1vZGVscy9kYXRhLXR5cGVzLyNyZXF1aXJlZCkKICAtICoqc2tpcFJlYWRPbmx5KiogLSBgYm9vbGVhbmAKICBEb24ndCBpbmNsdWRlIGByZWFkT25seWAgb2JqZWN0IHByb3BlcnRpZXMKICAtICoqc2tpcFdyaXRlT25seSoqIC0gYGJvb2xlYW5gCiAgRG9uJ3QgaW5jbHVkZSBgd3JpdGVPbmx5YCBvYmplY3QgcHJvcGVydGllcwogIC0gKipxdWlldCoqIC0gYGJvb2xlYW5gCiAgRG9uJ3QgbG9nIGNvbnNvbGUgd2FybmluZyBtZXNzYWdlcwotICoqc3BlYyoqIC0gd2hvbGUgc3BlY2lmaWNhdGlvbiB3aGVyZSB0aGUgc2NoZW1hIGlzIHRha2VuIGZyb20uIFJlcXVpcmVkIG9ubHkgd2hlbiBzY2hlbWEgbWF5IGNvbnRhaW4gYCRyZWZgLiAqKnNwZWMqKiBtdXN0IG5vdCBjb250YWluIGFueSBleHRlcm5hbCByZWZlcmVuY2VzCgojIyBFeGFtcGxlCmBgYGpzCmNvbnN0IE9wZW5BUElTYW1wbGVyID0gcmVxdWlyZSgnLicpOwpPcGVuQVBJU2FtcGxlci5zYW1wbGUoewogIHR5cGU6ICdvYmplY3QnLAogIHByb3BlcnRpZXM6IHsKICAgIGE6IHt0eXBlOiAnaW50ZWdlcicsIG1pbmltdW06IDEwfSwKICAgIGI6IHt0eXBlOiAnc3RyaW5nJywgZm9ybWF0OiAncGFzc3dvcmQnLCBtaW5MZW5ndGg6IDEwfSwKICAgIGM6IHt0eXBlOiAnYm9vbGVhbicsIHJlYWRPbmx5OiB0cnVlfQogIH0KfSwge3NraXBSZWFkT25seTogdHJ1ZX0pOwovLyB7IGE6IDEwLCBiOiAncGEkJHdvcmRfcScgfQpgYGAK readmeEtag: '"edd41323d08c6427f8d1a0dc4acab1874964b3e9"' readmeLastModified: Thu, 01 Aug 2024 06:57:47 GMT repositoryId: 59937640 description: >- :capital_abcd: Tool for generation samples based on OpenAPI(fka Swagger) payload/response schema created: '2016-05-29T10:29:32Z' updated: '2026-01-27T17:29:06Z' language: JavaScript archived: false stars: 216 watchers: 14 forks: 51 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT repoEtag: '"efcf4ea0624563c967e9f6da4d3da8e538c03d685afce41ddfec8bbf843e13fc"' repoLastModified: Tue, 27 Jan 2026 17:29:06 GMT foundInMaster: true v3_1: true category: - Documentation - Parsers id: 03703532e31126094015624abe623cf9 - source: openapi3 tags repository: https://github.com/christianhelle/apiclientcodegen v3: true id: 30d6812808d99b1b58b61c10028cb8de repositoryMetadata: base64Readme: >- WyFbQ0xJIFRvb2xdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9hcGljbGllbnRjb2RlZ2VuL2FjdGlvbnMvd29ya2Zsb3dzL2NsaS10b29sLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9hY3Rpb25zL3dvcmtmbG93cy9jbGktdG9vbC55bWwpClshW1ZTSVhdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9hcGljbGllbnRjb2RlZ2VuL2FjdGlvbnMvd29ya2Zsb3dzL3ZzaXgueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9hcGljbGllbnRjb2RlZ2VuL2FjdGlvbnMvd29ya2Zsb3dzL3ZzaXgueW1sKQpbIVtWUyBDb2RlXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9hY3Rpb25zL3dvcmtmbG93cy92c2NvZGUueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9hcGljbGllbnRjb2RlZ2VuL2FjdGlvbnMvd29ya2Zsb3dzL3ZzY29kZS55bWwpClshW0ludGVsbGlKXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9hY3Rpb25zL3dvcmtmbG93cy9pbnRlbGxpai55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vYWN0aW9ucy93b3JrZmxvd3MvaW50ZWxsaWoueW1sKQohW1Ntb2tlIFRlc3RzXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi93b3JrZmxvd3MvU21va2UlMjBUZXN0cy9iYWRnZS5zdmcpCgpbIVtNYWludGFpbmFiaWxpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuJm1ldHJpYz1zcWFsZV9yYXRpbmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW1JlbGlhYmlsaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9cmVsaWFiaWxpdHlfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtTZWN1cml0eSBSYXRpbmddKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4mbWV0cmljPXNlY3VyaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbikKWyFbQnVnc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9YnVncyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbikKWyFbVnVsbmVyYWJpbGl0aWVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuJm1ldHJpYz12dWxuZXJhYmlsaXRpZXMpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW0NvZGUgU21lbGxzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuJm1ldHJpYz1jb2RlX3NtZWxscyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW0NvdmVyYWdlXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuJm1ldHJpYz1jb3ZlcmFnZSldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pCgpbIVtWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2Uvdi9DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3IyMDIyP2xhYmVsPU1hcmtldHBsYWNlKV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQVBJQ2xpZW50Q29kZUdlbmVyYXRvcjIwMjIpIApbIVtEb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdmlzdWFsLXN0dWRpby1tYXJrZXRwbGFjZS9kL0NocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcj9sYWJlbD1WUyUyMDIwMTkpXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9Q2hyaXN0aWFuUmVzbWFIZWxsZS5BUElDbGllbnRDb2RlR2VuZXJhdG9yKQpbIVtSYXRpbmddKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdmlzdWFsLXN0dWRpby1tYXJrZXRwbGFjZS9zdGFycy9DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3IpXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9Q2hyaXN0aWFuUmVzbWFIZWxsZS5BUElDbGllbnRDb2RlR2VuZXJhdG9yKQpbIVtEb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdmlzdWFsLXN0dWRpby1tYXJrZXRwbGFjZS9kL0NocmlzdGlhblJlc21hSGVsbGUuQVBJQ2xpZW50Q29kZUdlbmVyYXRvcjIwMjI/bGFiZWw9VlMlMjAyMDIyKV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQVBJQ2xpZW50Q29kZUdlbmVyYXRvcjIwMjIpIApbIVtSYXRpbmddKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdmlzdWFsLXN0dWRpby1tYXJrZXRwbGFjZS9zdGFycy9DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3IyMDIyKV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQVBJQ2xpZW50Q29kZUdlbmVyYXRvcjIwMjIpClshW051R2V0XShodHRwczovL2ltZy5zaGllbGRzLmlvL251Z2V0L2R0L3JhcGljZ2VuLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSZsYWJlbD1udWdldCldKGh0dHA6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL3JhcGljZ2VuKQoKWyFbYnV5bWVhY29mZmVlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2J1eSUyMG1lJTIwYSUyMGNvZmZlZS1kb25hdGUteWVsbG93LnN2ZyldKGh0dHBzOi8vd3d3LmJ1eW1lYWNvZmZlZS5jb20vY2hyaXN0aWFuaGVsbGUpCgojIFJFU1QgQVBJIENsaWVudCBDb2RlIEdlbmVyYXRvcgoKQSBjb2xsZWN0aW9uIG9mIFZpc3VhbCBTdHVkaW8gQyMgY3VzdG9tIHRvb2wgY29kZSBnZW5lcmF0b3JzIGZvciBTd2FnZ2VyIC8gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZpbGVzCgojIyBEb3dubG9hZAoKLSAqKltWaXN1YWwgU3R1ZGlvIDIwMjYgKE91dC1vZi1Qcm9jZXNzIE1vZGVsKV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuUmFwaWNnZW4pKioKLSAqKltWaXN1YWwgU3R1ZGlvIDIwMjJdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3IyMDIyKSoqCi0gKipbVmlzdWFsIFN0dWRpbyAyMDE5XShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9Q2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yKSoqCi0gKipbVmlzdWFsIFN0dWRpbyAyMDE3XShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9Q2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yMjAxNykqKgotICoqW1Zpc3VhbCBTdHVkaW8gQ29kZV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuYXBpY2xpZW50Y29kZWdlbikqKgotICoqW1Zpc3VhbCBTdHVkaW8gZm9yIE1hY10oI3Zpc3VhbC1zdHVkaW8tZm9yLW1hYykqKgotICoqW0pldEJyYWlucyBSaWRlcl0oaHR0cHM6Ly9wbHVnaW5zLmpldGJyYWlucy5jb20vcGx1Z2luLzI4NDcyLXJlc3QtYXBpLWNsaWVudC1jb2RlLWdlbmVyYXRvcikqKgoKIyMgRmVhdHVyZXMKCi0gU3VwcG9ydHMgVmlzdWFsIFN0dWRpbyAyMDE3LCAyMDE5LCAyMDIyLCAyMDI2LCBbVmlzdWFsIFN0dWRpbyBDb2RlXSgjdmlzdWFsLXN0dWRpby1jb2RlKSwgW1Zpc3VhbCBTdHVkaW8gZm9yIE1hY10oI3Zpc3VhbC1zdHVkaW8tZm9yLW1hYyksIGFuZCBbSmV0QnJhaW5zIFJpZGVyXSgjaW50ZWxsaWotcGx1Z2luKQotIEFkZCBOZXcgUkVTVCBBUEkgQ2xpZW50IHRvIGEgcHJvamVjdCBmcm9tIGFuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBVUkwgKGUuZyA8aHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YyL3N3YWdnZXIuanNvbj4pIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29kZSBnZW5lcmF0b3JzOgogIC0gW05Td2FnXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnKQogIC0gW09wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKQogIC0gW1N3YWdnZXIgQ29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikKICAtIFtSZWZpdHRlcl0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyKQogIC0gW01pY3Jvc29mdCBLaW90YV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YSkKICAtIFtBdXRvUmVzdF0oaHR0cHM6Ly9naXRodWIuY29tL0F6dXJlL2F1dG9yZXN0KQotIERlZmluZSBjdXN0b20gbmFtZXNwYWNlIGZvciB0aGUgZ2VuZXJhdGVkIGZpbGUKLSBBdXRvLXVwZGF0aW5nIG9mIGdlbmVyYXRlZCBjb2RlIGZpbGUgd2hlbiBjaGFuZ2VzIGFyZSBtYWRlIHRvIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gSlNPTiBvciBZQU1MIGZpbGUKLSBHZW5lcmF0ZSBjb2RlIHVzaW5nIGEgY29uZmlndXJhdGlvbiBmaWxlcyB1c2luZyB0aGUgZm9sbG93aW5nOgogIC0gYC5uc3dhZ2AgY29uZmlndXJhdGlvbiBmaWxlcyBmcm9tIFtOU3dhZ1N0dWRpb10oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy93aWtpL05Td2FnU3R1ZGlvKSBieSBpbmNsdWRpbmcgaXQgaW4gdGhlIHByb2plY3QgYW5kIHVzaW5nIHRoZSAqKkdlbmVyYXRlIE5Td2FnIFN0dWRpbyBvdXRwdXQqKiBjb250ZXh0IG1lbnUKICAtIGAucmVmaXR0ZXJgIHNldHRpbmdzIGZpbGVzIGZyb20gW1JlZml0dGVyXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIpIGJ5IGluY2x1ZGluZyBpdCBpbiB0aGUgcHJvamVjdCBhbmQgdXNpbmcgdGhlICoqR2VuZXJhdGUgUmVmaXR0ZXIgb3V0cHV0KiogY29udGV4dCBtZW51CiAgLSBga2lvdGEtbG9jay5qc29uYCBjb25maWd1cmF0aW9uIGZpbGVzIGZyb20gW01pY3Jvc29mdCBLaW90YV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YSkgYnkgaW5jbHVkaW5nIGl0IGluIHRoZSBwcm9qZWN0IGFuZCB1c2luZyB0aGUgKipHZW5lcmF0ZSBLaW90YSBvdXRwdXQqKiBjb250ZXh0IG1lbnUKCiMjIyBDdXN0b20gVG9vbHMKCkN1c3RvbSB0b29scyBsZXQgeW91IGFzc29jaWF0ZSBhIHRvb2wgd2l0aCBhbiBpdGVtIGluIGEgcHJvamVjdCBhbmQgcnVuIHRoYXQgdG9vbCB3aGVuZXZlciB0aGUgZmlsZSBpcyBzYXZlZAoKLSAqKipOU3dhZ0NvZGVHZW5lcmF0b3IqKiogLSBHZW5lcmF0ZXMgYSBzaW5nbGUgZmlsZSBDIyBSRVNUIEFQSSBDbGllbnQgdXNpbmcgdGhlIFtOU3dhZy5Db2RlR2VuZXJhdGlvbi5DU2hhcnBdKGh0dHBzOi8vZ2l0aHViLmNvbS9SU3V0ZXIvTlN3YWcvd2lraS9DU2hhcnBDbGllbnRHZW5lcmF0b3IpIFtudWdldCBwYWNrYWdlXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTlN3YWcuQ29kZUdlbmVyYXRpb24uQ1NoYXJwLykgKip2MTQuNi4zKioKCi0gKioqT3BlbkFwaUNvZGVHZW5lcmF0b3IqKiogLSBHZW5lcmF0ZXMgYSBzaW5nbGUgZmlsZSBDIyBSRVNUIEFQSSBDbGllbnQgdXNpbmcgKipbT3BlbkFQSSBHZW5lcmF0b3IgdjcuMTkuMF0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcy90YWcvdjcuMTkuMCkqKi4KVGhlIG91dHB1dCBmaWxlIGlzIHRoZSByZXN1bHQgb2YgbWVyZ2luZyBhbGwgdGhlIGZpbGVzIGdlbmVyYXRlZCB1c2luZyB0aGUgT3BlbkFQSSBHZW5lcmF0b3IgdG9vbCB3aXRoOgpgZ2VuZXJhdGUgLWcgY3NoYXJwIC0taW5wdXQtc3BlYyBbc3dhZ2dlciBmaWxlXSAtLW91dHB1dCBbb3V0cHV0IGZpbGVdIC1EYXBpVGVzdHM9ZmFsc2UgLURtb2RlbFRlc3RzPWZhbHNlIC1EcGFja2FnZU5hbWU9W2RlZmF1bHQgbmFtZXNwYWNlXSAtLXNraXAtb3ZlcndyaXRlYC4gSXQgaXMgcG9zc2libGUgdG8gY29uZmlndXJlIHRoZSBPcGVuQVBJIEdlbmVyYXRvciB0byBnZW5lcmF0ZSBtdWx0aXBsZSBmaWxlcyB3aGljaCB3aWxsIGJlIHBsYWNlZCBhdCB0aGUgc2FtZSBwYXRoIGFzIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGRvY3VtZW50IHRoYXQgd2FzIHVzZWQgdG8gZ2VuZXJhdGUgY29kZSwgdGhpcyBpcyBkb25lIHVuZGVyIFRvb2xzIC0+IFJFU1QgQVBJIENsaWVudCBDb2RlIEdlbmVyYXRvciAtPiBPcGVuQVBJIEdlbmVyYXRvciBhbmQgc2V0dGluZyAqKkdlbmVyYXRlIE11bHRpcGxlIEZpbGVzKiogdG8gKip0cnVlKioKCi0gKioqS2lvdGFDb2RlR2VuZXJhdG9yKioqIC0gR2VuZXJhdGVzIGEgc2luZ2xlIGZpbGUgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nIHRoZSBNaWNyb3NvZnQgcHJvamVjdCAqKltLaW90YSB2MS4zMC4wXShodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvb3BlbmFwaS9raW90YS8pKiogZ2VuZXJhdG9yLiBUaGUgb3V0cHV0IGZpbGUgaXMgdGhlIHJlc3VsdCBvZiBtZXJnaW5nIGFsbCB0aGUgZmlsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoZSBLaW90YSBkb3RuZXQgdG9vbCB3aXRoOiBgZ2VuZXJhdGUgLWwgQ1NoYXJwIC1kIFtzd2FnZ2VyIGZpbGVdIC1vIFtvdXRwdXQgZmlsZV0gLW4gW2RlZmF1bHQgbmFtZXNwYWNlXWAuIEl0IGlzIHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSB0aGUgT3BlbkFQSSBHZW5lcmF0b3IgdG8gZ2VuZXJhdGUgbXVsdGlwbGUgZmlsZXMgd2hpY2ggd2lsbCBiZSBwbGFjZWQgYXQgdGhlIHNhbWUgcGF0aCBhcyB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBkb2N1bWVudCB0aGF0IHdhcyB1c2VkIHRvIGdlbmVyYXRlIGNvZGUsIHRoaXMgaXMgZG9uZSB1bmRlciBUb29scyAtPiBSRVNUIEFQSSBDbGllbnQgQ29kZSBHZW5lcmF0b3IgLT4gS2lvdGEgYW5kIHNldHRpbmcgKipHZW5lcmF0ZSBNdWx0aXBsZSBGaWxlcyoqIHRvICoqdHJ1ZSoqCgotICoqKlN3YWdnZXJDb2RlR2VuZXJhdG9yKioqIC0gR2VuZXJhdGVzIGEgc2luZ2xlIGZpbGUgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nICoqU3dhZ2dlciBDb2RlZ2VuIENMSSB2My4wLjM0KiouClRoZSBvdXRwdXQgZmlsZSBpcyB0aGUgcmVzdWx0IG9mIG1lcmdpbmcgYWxsIHRoZSBmaWxlcyBnZW5lcmF0ZWQgdXNpbmcgdGhlIFN3YWdnZXIgQ29kZWdlbiBDTEkgdG9vbCB3aXRoOgpgZ2VuZXJhdGUgLWwgY3NoYXJwIC0taW5wdXQtc3BlYyBbc3dhZ2dlciBmaWxlXSAtLW91dHB1dCBbb3V0cHV0IGZpbGVdIC1EYXBpVGVzdHM9ZmFsc2UgLURtb2RlbFRlc3RzPWZhbHNlIC1EcGFja2FnZU5hbWU9W2RlZmF1bHQgbmFtZXNwYWNlXSAtLXNraXAtb3ZlcndyaXRlYAoKLSAqKipBdXRvUmVzdENvZGVHZW5lcmF0b3IqKiogLSBHZW5lcmF0ZXMgYSBzaW5nbGUgZmlsZSBDIyBSRVNUIEFQSSBDbGllbnQgdXNpbmcgKipBdXRvUmVzdCB2My4wLjAtYmV0YS4yMDIxMDUwNC4yKiogZm9yIE9wZW5BUEkgdjMgYW5kICoqQXV0b1Jlc3QgdjIuMC40NDE3KiogZm9yIE9wZW5BUEkgdjIuIFRoZSByZXN1bHRpbmcgZmlsZSBpcyB0aGUgZXF1aXZhbGVudCBvZiB1c2luZyB0aGUgQXV0b1Jlc3QgQ0xJIHRvb2wgd2l0aDoKIGAtLWNzaGFycCAtLWlucHV0LWZpbGU9W3N3YWdnZXIgZmlsZV0gLS1vdXRwdXQtZmlsZT1bb3V0cHV0IGZpbGVdIC0tbmFtZXNwYWNlPVtkZWZhdWx0IG5hbWVzcGFjZV0gLS1hZGQtY3JlZGVudGlhbHNgCgotICoqKlJlZml0dGVyQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCBpbnRlcmZhY2UgZm9yIFtSZWZpdF0oaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0aXZldWkvcmVmaXQpIHVzaW5nIFtSZWZpdHRlci5Db3JlXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIpIFtudWdldCBwYWNrYWdlXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvUmVmaXR0ZXIuQ29yZS8pICoqdjEuNy4zKiouClRoZSBvdXRwdXQgZmlsZSBjb250YWlucyBhIFJlZml0IGludGVyZmFjZSBnZW5lcmF0ZWQgYnkgW1JlZml0dGVyXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIpIGFuZCBjb250cmFjdHMgZ2VuZXJhdGVkIHVzaW5nIFtOU3dhZy5Db2RlR2VuZXJhdGlvbi5DU2hhcnBdKGh0dHBzOi8vZ2l0aHViLmNvbS9SU3V0ZXIvTlN3YWcvd2lraS9DU2hhcnBDbGllbnRHZW5lcmF0b3IpIFtudWdldCBwYWNrYWdlXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTlN3YWcuQ29kZUdlbmVyYXRpb24uQ1NoYXJwLykKCiMjIyBEZXBlbmRlbmNpZXMKClRoZSBjdXN0b20gdG9vbCBjb2RlIGdlbmVyYXRvcnMgcGlnZ3kgYmFjayBvbiB0b3Agb2Ygd2VsbCBrbm93biBPcGVuIEFQSSBjbGllbnQgY29kZSBnZW5lcmF0b3JzIGxpa2UgKipBdXRvUmVzdCoqLCAqKk5Td2FnKiosICoqT3BlbkFQSSBHZW5lcmF0b3IqKiwgKipNaWNyb3NvZnQgS2lvdGEqKiwgKipSZWZpdHRlcioqLCBhbmQgKipTd2FnZ2VyIENvZGVnZW4gQ0xJKiouIFRoZXNlIHRvb2xzIHJlcXVpcmUgWy5ORVQgU0RLXShodHRwczovL2RvdG5ldC5taWNyb3NvZnQuY29tL2Rvd25sb2FkKSwgW05QTV0oaHR0cHM6Ly93d3cubnBtanMuY29tL2dldC1ucG0pIGFuZCB0aGUgW0phdmEgUnVudGltZSBFbnZpcm9ubWVudF0oaHR0cHM6Ly9qYXZhLmNvbS9lbi9kb3dubG9hZC9tYW51YWwuanNwKSB0byBiZSBpbnN0YWxsZWQgb24gdGhlIGRldmVsb3BlcnMgbWFjaGluZS4gQWx0ZXJuYXRpdmUgSmF2YSBTREsgaW1wbGVtZW50YXRpb25zIHN1Y2ggYXMgdGhlIFtPcGVuSkRLXShodHRwczovL2Fkb3B0b3Blbmpkay5uZXQpIHdvcmtzIGZpbmUgd2l0aCB0aGlzIGV4dGVuc2lvbi4gQnkgZGVmYXVsdCwgdGhlIHBhdGggdG8gKipqYXZhLmV4ZSoqIGlzIHJlYWQgZnJvbSB0aGUgKipKQVZBX0hPTUUqKiBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYnV0IGlzIGFsc28gY29uZmlndXJhYmxlIGluIHRoZSBTZXR0aW5ncyBzY3JlZW4uIEZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGUgZXh0ZW5zaW9uIHdpbGwgaW5jbHVkZSB0aGUgW09wZW5KREtdKGh0dHBzOi8vYWRvcHRvcGVuamRrLm5ldCkgaW4gdGhlIFZTSVggcGFja2FnZQoKVGhlICoqU3dhZ2dlciBDb2RlZ2VuIENMSSoqIGFuZCAqKk9wZW5BUEkgR2VuZXJhdG9yKiogYXJlIGRpc3RyaWJ1dGVkIGFzIEpBUiBmaWxlcyBhbmQgYXJlIGRvd25sb2FkZWQgb24gZGVtYW5kIGJ1dCByZXF1aXJlcyB0aGUgSmF2YSBTREsgdG8gYmUgaW5zdGFsbGVkIG9uIHRoZSBtYWNoaW5lLiAqKkF1dG9SZXN0KiogaXMgaW5zdGFsbGVkIG9uLWRlbWFuZCB2aWEgW05QTV0oaHR0cHM6Ly93d3cubnBtanMuY29tL2dldC1ucG0pIGFzIGEgZ2xvYmFsIHRvb2wgYW5kIHVzZXMgdGhlIGxhdGVzdCBhdmFpbGFibGUgdmVyc2lvbi4gKipNaWNyb3NvZnQgS2lvdGEqKiBpcyBpbnN0YWxsZWQgb24tZGVtYW5kIGFzIGEgLk5FVCBUb29sIGFuZCByZXF1aXJlcyAuTkVUIDcuMC4gVGhpcyBtZWFucyB0aGF0IHVzaW5nIHRoZXNlIGN1c3RvbSB0b29scyBoYXZlIGFuIGluaXRpYWwgZGVsYXkgdXBvbiBmaXJzdCB0aW1lIHVzZS4gCgoqKk5Td2FnU3R1ZGlvKiogaXMgc3RhbmQgYWxvbmUgVUkgdG9vbCBmb3IgZWRpdGluZyBhICoqLm5zd2FnKiogc3BlY2lmaWNhdGlvbiBmaWxlIGZvciBnZW5lcmF0aW5nIGNvZGUuIFRoaXMgdG9vbCBpcyBvcHRpb25hbCB0byBpbnN0YWxsIGFuZCBvZmZpY2lhbCBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zIGFyZSBhdmFpbGFibGUgb24gdGhlIFtOU3dhZyBXaWtpIG9uIEdpdGh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy93aWtpL05Td2FnU3R1ZGlvKS4gSWYgKipOU3dhZ1N0dWRpbyoqIGlzIG5vdCBpbnN0YWxsZWQgb24gdGhlIG1hY2hpbmUgdGhlbiB0aGUgVmlzdWFsIFN0dWRpbyBFeHRlbnNpb24gd2lsbCBpbnN0YWxsIHRoZSAqKk5Td2FnIENMSSoqIGFzIGEgWy5ORVQgZ2xvYmFsIHRvb2xdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9OU3dhZy5Db25zb2xlQ29yZSkgZnJvbSBudWdldC5vcmcgdXNpbmcgdGhlIGxhdGVzdCBhdmFpbGFibGUgdmVyc2lvbi4gCgpUaGUgKipOU3dhZyoqIGNvZGUgZ2VuZXJhdG9yIHByb2R1Y2VzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBbTmV3dG9uc29mdC5Kc29uXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTmV3dG9uc29mdC5Kc29uLzEzLjAuMykgTnVHZXQgcGFja2FnZQoKVGhlICoqUmVmaXR0ZXIqKiBjb2RlIGdlbmVyYXRvciBwcm9kdWNlcyBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgW1JlZml0XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvUmVmaXQvOS4wLjIpIE51R2V0IHBhY2thZ2UKClRoZSAqKk9wZW5BUEkgR2VuZXJhdG9yKiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIGZvbGxvd2luZyBOdUdldCBwYWNrYWdlczoKCi0gW1Jlc3RTaGFycF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1Jlc3RTaGFycC8xMTIuMC4wKQotIFtKc29uU3ViVHlwZXNdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9Kc29uU3ViVHlwZXMvMi4wLjEpCi0gW1BvbGx5XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvUG9sbHkvOC42LjUpCi0gW05ld3RvbnNvZnQuSnNvbl0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05ld3RvbnNvZnQuSnNvbi8xMy4wLjMpCgpUaGUgKipNaWNyb3NvZnQgS2lvdGEqKiBjb2RlIGdlbmVyYXRvciBwcm9kdWNlcyBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgZm9sbG93aW5nIE51R2V0IHBhY2thZ2VzCgotIFtNaWNyb3NvZnQuS2lvdGEuQWJzdHJhY3Rpb25zXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lktpb3RhLkFic3RyYWN0aW9ucykKLSBbTWljcm9zb2Z0Lktpb3RhLkh0dHAuSHR0cENsaWVudExpYnJhcnldKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuSHR0cC5IdHRwQ2xpZW50TGlicmFyeSkKLSBbTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uRm9ybV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLkZvcm0pCi0gW01pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLlRleHRdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5UZXh0KQotIFtNaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5Kc29uXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uSnNvbikKLSBbTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uTXVsdGlwYXJ0XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uTXVsdGlwYXJ0KQotIFtNaWNyb3NvZnQuS2lvdGEuQXV0aGVudGljYXRpb24uQXp1cmVdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuQXV0aGVudGljYXRpb24uQXp1cmUpCi0gW0F6dXJlLklkZW50aXR5XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvQXp1cmUuSWRlbnRpdHkpCgpUaGUgKipTd2FnZ2VyIENvZGVnZW4gQ0xJKiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIFtSZXN0U2hhcnBdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9SZXN0U2hhcnAvMTA1LjIuMykgYW5kIFtKc29uU3ViVHlwZXNdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9Kc29uU3ViVHlwZXMvMS45LjApIE51R2V0IHBhY2thZ2VzCgpUaGUgKipBdXRvUmVzdCoqIGNvZGUgZ2VuZXJhdG9yIHByb2R1Y2VzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBbTWljcm9zb2Z0LlJlc3QuQ2xpZW50UnVudGltZV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5SZXN0LkNsaWVudFJ1bnRpbWUvMi4zLjI0KSBhbmQgW05ld3RvbnNvZnQuSnNvbl0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05ld3RvbnNvZnQuSnNvbi8xMy4wLjMpIE51R2V0IHBhY2thZ2VzCgpUaGlzIFZpc3VhbCBTdHVkaW8gRXh0ZW5zaW9uIHdpbGwgYXV0b21hdGljYWxseSBhZGQgdGhlIHJlcXVpcmVkIE51R2V0IHBhY2thZ2VzIHRoYXQgdGhlIGdlbmVyYXRlZCBjb2RlIGRlcGVuZHMgb24KCiMjIyBVc2luZyBHZW5lcmF0ZWQgQ29kZQoKRm9yIGRldGFpbGVkIGV4YW1wbGVzIGFuZCBiZXN0IHByYWN0aWNlcyBvbiBob3cgdG8gdXNlIHRoZSBjb2RlIGdlbmVyYXRlZCBieSBlYWNoIGNvZGUgZ2VuZXJhdG9yLCBzZWUgdGhlICoqW0dlbmVyYXRlZCBDb2RlIFVzYWdlIEd1aWRlXShkb2NzL0dlbmVyYXRlZENvZGVVc2FnZS5tZCkqKi4KClRoZSBndWlkZSBpbmNsdWRlczoKLSBTYW1wbGUgY29kZSBmb3IgZWFjaCBnZW5lcmF0b3IgKE5Td2FnLCBBdXRvUmVzdCwgU3dhZ2dlciBDb2RlZ2VuIENMSSwgT3BlbkFQSSBHZW5lcmF0b3IsIEtpb3RhLCBSZWZpdHRlcikKLSBEZXBlbmRlbmN5IGluamVjdGlvbiBleGFtcGxlcwotIEF1dGhlbnRpY2F0aW9uIHBhdHRlcm5zCi0gRXJyb3IgaGFuZGxpbmcKLSBMaW5rcyB0byBvZmZpY2lhbCBkb2N1bWVudGF0aW9uCgojIyBTY3JlZW5zaG90cwoKIVtBZGQgLSBBUEkgQ2xpZW50IGZyb20gT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShpbWFnZXMvYWRkLW5ldy1tZW51LnBuZykKCiFbRW50ZXIgVVJMIHRvIE9wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaW1hZ2VzL2FkZC1uZXctZGlhbG9nLnBuZykKCiFbU29sdXRpb24gRXhwbG9yZXIgQ29udGV4dCBNZW51c10oaW1hZ2VzL3NvbHV0aW9uLWV4cGxvcmVyLWNvbnRleHQtbWVudS5qcGcpCgohW05Td2FnIFN0dWRpbyBDb250ZXh0IE1lbnVdKGltYWdlcy9uc3dhZ3N0dWRpby1jb250ZXh0LW1lbnUuanBnKQoKIVtSZWZpdHRlciBDb250ZXh0IE1lbnVdKGltYWdlcy9yZWZpdHRlci1jb21tYW5kLnBuZykKCiFbS2lvdGEgQ29udGV4dCBNZW51XShpbWFnZXMvZ2VuZXJhdGUta2lvdGEtb3V0cHV0LnBuZykKCiMjIyBTZXR0aW5ncwoKVGhpcyBleHRlbnNpb24gd2lsbCBieSBkZWZhdWx0IG1ha2Ugc29tZSBhc3N1bXB0aW9ucyBvbiB0aGUgaW5zdGFsbGF0aW9uIHBhdGhzIGZvciAqKkphdmEqKiBhbmQgKipOUE0qKiBidXQgYWxzbyBwcm92aWRlcyBvcHRpb24gcGFnZXMgZm9yIGNvbmZpZ3VyaW5nIHRoaXMuIFRoZSAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKiBhbmQgdGhlICoqT3BlbkFQSSBHZW5lcmF0b3IqKiBKQVIgZmlsZXMgYXJlIGJ5IGRlZmF1bHQgZG93bmxvYWRlZCB0byB0aGUgdXNlciBURU1QIGZvbGRlciBidXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IHRvIHVzZSBleGlzdGluZyBKQVIgZmlsZXMKCiFbT3B0aW9ucyAtIEdlbmVyYWxdKGltYWdlcy9vcHRpb25zLWdlbmVyYWwucG5nKQoKU3VwcG9ydHMgY3VzdG9taXNpbmcgaG93IEF1dG9SZXN0IGdlbmVyYXRlcyBjb2RlIGJhc2VkIG9uIHRoZSBDIyBnZW5lcmF0b3Igc2V0dGluZ3MgdGhhdCB0aGUgQXV0b1Jlc3QgQ0xJIHRvb2wgcHJvdmlkZXMKCiFbT3B0aW9ucyAtIEF1dG9SZXN0XShpbWFnZXMvb3B0aW9ucy1hdXRvcmVzdC5wbmcpCgpTdXBwb3J0cyBjdXN0b21pc2luZyBob3cgTlN3YWcgZ2VuZXJhdGVzIGNvZGUgdXNpbmcgdGhlIHByb3BlcnRpZXMgZXhwb3NlZCBieSB0aGUgTlN3YWcgTnVHZXQgcGFja2FnZQoKIVtPcHRpb25zIC0gTlN3YWddKGltYWdlcy9vcHRpb25zLW5zd2FnLnBuZykKClN1cHBvcnRzIGN1c3RvbWlzaW5nIGhvdyB0aGUgKioubnN3YWcqKiBmaWxlIGlzIGdlbmVyYXRlZCB1c2luZyBhIHN1YnNldCBvZiB0aGUgb3B0aW9ucyBhdmFpbGFibGUgaW4gTlN3YWcgU3R1ZGlvCgohW09wdGlvbnMgLSBOU3dhZyBTdHVkaW9dKGltYWdlcy9vcHRpb25zLW5zd2Fnc3R1ZGlvLnBuZykKClN1cHBvcnRzIGN1c3RvbWlzaW5nIGhvdyBPcGVuQVBJIEdlbmVyYXRvciBnZW5lcmF0ZXMgY29kZSB1c2luZyB0aGUgYWRkaXRpb25hbCBvcHRpb25hbCBwcm9wZXJ0aWVzIHRoYXQgdGhlIE9wZW5BUEkgR2VuZXJhdG9yIENMSSB0b29sIHByb3ZpZGVzCgohW09wdGlvbnMgLSBPcGVuQVBJIEdlbmVyYXRvcl0oaW1hZ2VzL29wdGlvbnMtb3BlbmFwaWdlbmVyYXRvci5wbmcpCgpTdXBwb3J0cyBjdXN0b21pc2luZyBob3cgUmVmaXR0ZXIgZ2VuZXJhdGVzIHRoZSBSZWZpdCBpbnRlcmZhY2UuIFRoaXMgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgd2hldGhlciB0byByZXR1cm4gdGhlIHR5cGUgZGlyZWN0bHkgb3Igd3JhcCBpdCBpbnNpZGUgYW4gYElBcGlSZXNwb25zZTxUPmAuIFlvdSBjYW4gYWxzbyBkaXNhYmxlIGdlbmVyYXRpbmcgY29udHJhY3RzIG9yIFhNTCBkb2Mgc3R5bGUgY29tbWVudHMKCiFbT3B0aW9ucyAtIFJlZml0dGVyXShpbWFnZXMvcmVmaXR0ZXItb3B0aW9ucy5wbmcpCgpTdXBwb3J0cyBhbGxvd2luZyBLaW90YSB0byBnZW5lcmF0ZSBtdWx0aXBsZSBmaWxlcwoKIVtPcHRpb25zIC0gS2lvdGFdKGltYWdlcy9vcHRpb25zLWtpb3RhLnBuZykKClRoaXMgZXh0ZW5zaW9uIGNvbGxlY3RzIGVycm9ycyBhbmQgdHJhY2tzIGZlYXR1cmUgdXNhZ2VzIHRvIGEgc2VydmljZSBjYWxsZWQgW0V4Y2VwdGlvbmxlc3NdKGh0dHBzOi8vZXhjZXB0aW9ubGVzcy5jb20pIGFuZCBbQXp1cmUgQXBwbGljYXRpb24gSW5zaWdodHNdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9henVyZS9henVyZS1tb25pdG9yL2FwcC9hcHAtaW5zaWdodHMtb3ZlcnZpZXc/V1QubWNfaWQ9RFQtTVZQLTUwMDQ4MjIpLiBUaGlzIGlzIGRvbmUgYW5vbnltb3VzbHkgdXNpbmcgYSBzdXBwb3J0IGtleSBhbmQgYSBnZW5lcmF0ZWQgYW5vbnltb3VzIGlkZW50aXR5IGJhc2VkIG9uIGEgc2VjdXJlIGhhc2ggb2YgdXNlcm5hbWVAaG9zdAoKIVtPcHRpb25zIC0gQW5hbHl0aWNzXShpbWFnZXMvc3VwcG9ydC1rZXkucG5nKQoKIyMjIFZpc3VhbCBTdHVkaW8gQ29kZQoKIVtWUyBDb2RlIC0gQ29tbWFuZCBQYWxldHRlXShpbWFnZXMvdnNjb2RlLWNvbW1hbmQtcGFsZXR0ZS5wbmcpCgohW1ZTIENvZGUgLSBDI10oaW1hZ2VzL3ZzY29kZS1jb250ZXh0LW1lbnUucG5nKQoKIVtWUyBDb2RlIC0gVHlwZVNjcmlwdF0oaW1hZ2VzL3ZzY29kZS1jb250ZXh0LW1lbnUtdHlwZXNjcmlwdC5wbmcpCgojIyMgTWFjT1MKCiFbQWRkIC0gQVBJIENsaWVudCBmcm9tIE9wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaW1hZ2VzL3ZzbWFjLWFkZC1uZXctbWVudS5wbmcpCgohW0VudGVyIFVSTCB0byBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGltYWdlcy92c21hYy1hZGQtbmV3LWRpYWxvZy5wbmcpCgohW1NvbHV0aW9uIEV4cGxvcmVyIENvbnRleHQgTWVudXNdKGltYWdlcy92c21hYy1nZW5lcmF0ZS1jb2RlLnBuZykKCiFbTlN3YWcgU3R1ZGlvIENvbnRleHQgTWVudV0oaW1hZ2VzL3ZzbWFjLW5zd2FnLXN0dWRpby5wbmcpCgojIyBWaXN1YWwgU3R1ZGlvIENvZGUKClRoZSBWUyBDb2RlIGV4dGVuc2lvbiBwcm92aWRlcyBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkgdGhyb3VnaCBhIGNvbnRleHQgbWVudSBvbiBKU09OIGFuZCBZQU1MIGZpbGVzIGluIHRoZSBleHBsb3Jlci4gSXQgZXhlY3V0ZXMgdGhlIGByYXBpY2dlbmAgLk5FVCB0b29sIHRvIGdlbmVyYXRlIGNvZGUsIHNvIHlvdSB3aWxsIG5lZWQgdG8gaGF2ZSB0aGUgLk5FVCBTREsgaW5zdGFsbGVkLgoKIyMjIEluc3RhbGxhdGlvbgoKRG93bmxvYWQgdGhlIFZTSVggZmlsZSBmcm9tIHRoZSBbR2l0SHViIHJlbGVhc2VzXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9yZWxlYXNlcy9sYXRlc3QpIHBhZ2UsIHRoZW4gaW4gVlMgQ29kZToKMS4gR28gdG8gRXh0ZW5zaW9ucyB2aWV3IChDdHJsK1NoaWZ0K1gpCjIuIENsaWNrIG9uIHRoZSAiLi4uIiBtZW51IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyCjMuIFNlbGVjdCAiSW5zdGFsbCBmcm9tIFZTSVguLi4iCjQuIFNlbGVjdCB0aGUgZG93bmxvYWRlZCAudnNpeCBmaWxlCgojIyMgRmVhdHVyZXMKCi0gQ29udGV4dCBtZW51IG9uIEpTT04gYW5kIFlBTUwgZmlsZXMgZm9yIGdlbmVyYXRpbmcgY29kZSB3aXRoIHZhcmlvdXMgZ2VuZXJhdG9ycwotIFN1cHBvcnRzIGFsbCBjb2RlIGdlbmVyYXRvcnM6IE5Td2FnLCBSZWZpdHRlciwgT3BlbkFQSSBHZW5lcmF0b3IsIE1pY3Jvc29mdCBLaW90YSwgU3dhZ2dlciBDb2RlZ2VuIENMSSwgYW5kIEF1dG9SRVNUCi0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBuYW1lc3BhY2UgYW5kIG91dHB1dCBkaXJlY3RvcnkKCiMjIyBVc2FnZQoKMS4gUmlnaHQtY2xpY2sgb24gYSBTd2FnZ2VyL09wZW5BUEkgc3BlY2lmaWNhdGlvbiBmaWxlIChKU09OIG9yIFlBTUwpIGluIHRoZSBWUyBDb2RlIGV4cGxvcmVyCjIuIFNlbGVjdCAiUkVTVCBBUEkgQ2xpZW50IENvZGUgR2VuZXJhdG9yIiBpbiB0aGUgY29udGV4dCBtZW51CjMuIENob29zZSBvbmUgb2YgdGhlIGF2YWlsYWJsZSBjb2RlIGdlbmVyYXRvcnMKNC4gVGhlIGdlbmVyYXRlZCBjb2RlIHdpbGwgb3BlbiBpbiB0aGUgZWRpdG9yCgojIEluc3RhbGxhdGlvbgoKVGhlIFZpc3VhbCBTdHVkaW8gZXh0ZW5zaW9uIGNhbiBiZSBpbnN0YWxsZWQgZGlyZWN0bHkgZnJvbSBWaXN1YWwgU3R1ZGlvIDIwMTkgYW5kIDIwMjIgdmlhIHRoZSAqKkV4dGVuc2lvbnMgRGlhbG9nIEJveCoqLiBUaGUgcHJvY2VzcyBpcyBiZXN0IGRlc2NyaWJlZCBpbiB0aGUgb2ZmaWNpYWwgTWljcm9zb2Z0IGRvY3VtZW50YXRpb24gZm9yIFtNYW5hZ2luZyBleHRlbnNpb25zIGZvciBWaXN1YWwgU3R1ZGlvXShodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy92aXN1YWxzdHVkaW8vaWRlL2ZpbmRpbmctYW5kLXVzaW5nLXZpc3VhbC1zdHVkaW8tZXh0ZW5zaW9ucz92aWV3PXZzLTIwMTkmV1QubWNfaWQ9RFQtTVZQLTUwMDQ4MjIpCgojIyBWaXN1YWwgU3R1ZGlvIGZvciBNYWMKClRoaXMgaW5zdGFsbGF0aW9uIHByb2Nlc3MgZm9yICoqVmlzdWFsIFN0dWRpbyBmb3IgTWFjKiogaXMgY3VycmVudGx5IGEgYml0IHRyb3VibGVzb21lIGFzIHRoZSBNb25vRGV2ZWxvcCBBZGRpbiBSZXBvc2l0b3J5IGlzIGN1cnJlbnRseSBub3QgYWNjZXB0aW5nIG5ldyB1c2VycyBzbyBJIGNhbid0IHJlYWxseSByZWdpc3RlciBhbmQgc2V0dXAgbXkgZXh0ZW5zaW9uLgoKVGhlcmUgYXJlIDIgd2F5cyBvZiBpbnN0YWxsaW5nIG15IGV4dGVuc2lvbiBvbiBWaXN1YWwgU3R1ZGlvIGZvciBNYWM6IEFkZGluZyBhIGN1c3RvbSBleHRlbnNpb24gcmVwb3NpdG9yeSBvciBJbnN0YWxsaW5nIHRoZSAqKi5tcGFjayoqIGZpbGUgZGlyZWN0bHkgZnJvbSB0aGUgRXh0ZW5zaW9ucyBNYW5hZ2VyCgojIyMgQWRkaW5nIGEgbmV3IGV4dGVuc2lvbiByZXBvc2l0b3J5CgpIZXJlJ3Mgd2hhdCB5b3UgbmVlZCB0byBkbzoKCi0gT3BlbiB0aGUgVmlzdWFsIFN0dWRpbyBmb3IgTWFjICoqRXh0ZW5zaW9uIE1hbmFnZXIqKgotIFlvdSBjYW4gZG8gdGhpcyBmcm9tIHRoZSBtZW51ICoqVmlzdWFsIFN0dWRpbyoqIC0+ICoqRXh0ZW50aW9ucyoqCgohW09wZW4gRXh0ZW5zaW9ucyBEaWFsb2cgQm94XShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1tZW51LnBuZykKCi0gU2VsZWN0IHRoZSAqKkdhbGxlcnkqKiBUYWIKLSBFeHBhbmQgdGhlIFJlcG9zaXRvcnkgZHJvcCBkb3duIGJveCBhbmQgc2VsZWN0ICoqTWFuYWdlIFJlcG9zaXRvcmllcyoqCgohW01hbmFnZSBSZXBvc2l0b3JpZXNdKGltYWdlcy92c21hYy1leHRlbnNpb25zLW1hbmFnZS1yZXBvc2l0b3JpZXMucG5nKQoKLSBQcmVzcyBvbiB0aGUgKipBZGQqKiBidXR0b24gdG8gYWRkIGEgbmV3IGN1c3RvbSBleHRlbnNpb24gcmVwb3NpdG9yeQoKIVtNYW5hZ2UgUmVwb3NpdG9yaWVzXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1yZXBvc2l0b3JpZXMucG5nKQoKLSBSZWdpc3RlciBhbiBvbmxpbmUgcmVwb3NpdG9yeSBhdCAqKmh0dHBzOi8vY2hyaXN0aWFuaGVsbGUuY29tL3ZzbWFjL21haW4ubXJlcCoqCi0gQ2xpY2sgKipPSyoqCgohW0FkZCBSZXBvc2l0b3J5XShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1hZGQtcmVwb3NpdG9yeS5wbmcpCgotIE5vdyBteSBleHRlbnNpb24gcmVwb3NpdG9yeSBpcyBhZGRlZCB0byB0aGUgbGlzdAotIE1ha2Ugc3VyZSB0aGF0IHRoaXMgaXMgZW5hYmxlZCAoaW5kaWNhdGVkIGJ5IGEgY2hlY2sgYm94KQoKIVtBZGQgUmVwb3NpdG9yeSBEaWFsb2ddKGltYWdlcy92c21hYy1leHRlbnNpb25zLWFkZGVkLXJlcG9zaXRvcnkucG5nKQoKLSBZb3Ugc2hvdWxkIG5vdyBiZSBhYmxlIHRvIHNlZSBteSBleHRlbnNpb25zIGZyb20gdGhlICoqR2FsbGVyeSoqIHRhYgoKIVtBZGRlZCBSZXBvc2l0b3J5XShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1nYWxsZXJ5LnBuZykKCi0gQnkgYWRkaW5nIG15IGV4dGVuc2lvbiByZXBvc2l0b3J5IHlvdSB3aWxsIGJlIGFibGUgdG8gY29udmVuaWVudGx5IHVwZGF0ZSBteSBleHRlbnNpb24gdXNpbmcgdGhlIFZpc3VhbCBTdHVkaW8gZm9yIE1hYyBFeHRlbnNpb24gTWFuYWdlcgoKIVtBZGQgUmVwb3NpdG9yeV0oaW1hZ2VzL3ZzbWFjLXVwZGF0ZXMucG5nKQoKIVtBZGQgUmVwb3NpdG9yeV0oaW1hZ2VzL3ZzbWFjLXVwZGF0ZS1pbnN0YWxsLnBuZykKCiFbQWRkIFJlcG9zaXRvcnldKGltYWdlcy92c21hYy11cGRhdGUtaW5zdGFsbC1wcm9ncmVzcy5wbmcpCgojIyMgSW5zdGFsbGluZyB0aGUgKioubXBhY2sqKiBmaWxlIGRpcmVjdGx5CgpIZXJlJ3Mgd2hhdCB5b3UgbmVlZCB0byBkbzoKLSBEb3dubG9hZCB0aGUgbGF0ZXN0ICoqLm1wYWNrIGZpbGUqKiBmcm9tIHRoZSBbTGF0ZXN0IEdpdGh1YiBSZWxlYXNlXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9yZWxlYXNlcy9sYXRlc3QpCi0gTm93IGZyb20gd2l0aGluIFZpc3VhbCBTdHVkaW8gZm9yIE1hYyB5b3UgbmVlZCB0byBsYXVuY2ggdGhlICoqRXh0ZW5zaW9ucyBEaWFsb2cgQm94KiouIFlvdSBjYW4gZG8gdGhpcyBmcm9tIHRoZSBtZW51ICoqVmlzdWFsIFN0dWRpbyoqIC0+ICoqRXh0ZW5zaW9ucyoqCgohW09wZW4gRXh0ZW5zaW9ucyBEaWFsb2cgQm94XShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1tZW51LnBuZykKCi0gQ2xpY2sgb24gdGhlICoqSW5zdGFsbCBmcm9tIEZpbGUqKiBidXR0b24KCiFbTWFudWFsbHkgaW5zdGFsbCAubXBhY2sgZmlsZV0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtaW5zdGFsbC5wbmcpCgotIEJyb3dzZSB0byB0aGUgLm1wYWNrIGZpbGUgYW5kIHNlbGVjdCBpdC4gWW91IHdpbGwgYmUgcHJvbXB0ZWQgd2l0aCBhIGNvbmZpcm1hdGlvbiBkaWFsb2cKCiFbQ29uZmlybSAubXBhY2sgZmlsZSBpbnN0YWxsXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1pbnN0YWxsLWNvbmZpcm0ucG5nKQoKLSBDbGljayAqKkluc3RhbGwqKiBhbmQgcmVzdGFydCBWaXN1YWwgU3R1ZGlvIGZvciBNYWMKLSBUbyBWZXJpZnkgdGhhdCB0aGUgQWRkLWluIHdhcyBpbnN0YWxsZWQgeW91IGNhbiByZS1vcGVuIHRoZSBFeHRlbnNpb25zIERpYWxvZyBCb3gsIHNlbGVjdCB0aGUgKipJbnN0YWxsZWQqKiB0YWIgYW5kIGV4cGFuZCB0aGUgKipJREUgRXh0ZW5zaW9ucyoqLiBZb3Ugc2hvdWxkIGJlIGFibGUgdG8gc2VlIHRoZSAqKlJFU1QgQVBJIENsaWVudCBDb2RlIEdlbmVyYXRvcioqLgoKLSBVbmluc3RhbGxpbmcgdGhlIEFkZC1pbiBpcyBkb25lIGluIHRoaXMgc2FtZSBkaWFsb2cgYm94IGJ5IGNsaWNraW5nIHRoZSAqKlVuaW5zdGFsbCoqIGJ1dHRvbgoKIVtNYW51YWxseSB1bmluc3RhbGwgQWRkLWluXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy11bmluc3RhbGwucG5nKQoKIyMgSW50ZWxsaUogUGx1Z2luCgpUaGUgSW50ZWxsaUogcGx1Z2luIHByb3ZpZGVzIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSB0byB0aGUgVlMgQ29kZSBleHRlbnNpb24gdGhyb3VnaCBjb250ZXh0IG1lbnVzIGFuZCBjb21tYW5kcyB3aXRoaW4gSmV0QnJhaW5zIElERXMuIEl0IGV4ZWN1dGVzIHRoZSBgcmFwaWNnZW5gIC5ORVQgdG9vbCB0byBnZW5lcmF0ZSBjb2RlLCBzbyB5b3Ugd2lsbCBuZWVkIHRvIGhhdmUgdGhlIC5ORVQgU0RLIGluc3RhbGxlZC4KCiMjIyBJbnRlbGxpSiBQbHVnaW4gSW5zdGFsbGF0aW9uCgpUaGUgcGx1Z2luIGlzIGF2YWlsYWJsZSBvbiB0aGUgSmV0QnJhaW5zIE1hcmtldHBsYWNlIGFuZCBjYW4gYmUgaW5zdGFsbGVkIGRpcmVjdGx5IGZyb20geW91ciBJREU6CgoxLiBPcGVuIHlvdXIgSmV0QnJhaW5zIElERSAoSW50ZWxsaUogSURFQSwgUmlkZXIsIFdlYlN0b3JtLCBldGMuKQoyLiBHbyB0byAqKkZpbGUqKiDihpIgKipTZXR0aW5ncyoqIChvciAqKkludGVsbGlKIElERUEqKiDihpIgKipQcmVmZXJlbmNlcyoqIG9uIG1hY09TKQozLiBOYXZpZ2F0ZSB0byAqKlBsdWdpbnMqKgo0LiBTZWFyY2ggZm9yICJSRVNUIEFQSSBDbGllbnQgQ29kZSBHZW5lcmF0b3IiCjUuIENsaWNrICoqSW5zdGFsbCoqIGFuZCByZXN0YXJ0IHlvdXIgSURFCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGluc3RhbGwgaXQgZnJvbSB0aGUgW0pldEJyYWlucyBNYXJrZXRwbGFjZV0oaHR0cHM6Ly9wbHVnaW5zLmpldGJyYWlucy5jb20vcGx1Z2luLzI4NDcyLXJlc3QtYXBpLWNsaWVudC1jb2RlLWdlbmVyYXRvcikuCgojIyMgSW50ZWxsaUogUGx1Z2luIEZlYXR1cmVzCgotIENvbnRleHQgbWVudSBvbiBKU09OIGFuZCBZQU1MIGZpbGVzIGZvciBnZW5lcmF0aW5nIGNvZGUgd2l0aCB2YXJpb3VzIGdlbmVyYXRvcnMKLSBTdXBwb3J0cyBhbGwgY29kZSBnZW5lcmF0b3JzOiBOU3dhZywgUmVmaXR0ZXIsIE9wZW5BUEkgR2VuZXJhdG9yLCBNaWNyb3NvZnQgS2lvdGEsIFN3YWdnZXIgQ29kZWdlbiBDTEksIGFuZCBBdXRvUkVTVAotIE11bHRpcGxlIGxhbmd1YWdlIHN1cHBvcnQ6IEMjLCBUeXBlU2NyaXB0LCBhbmQgbW9yZQotIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgbmFtZXNwYWNlIGFuZCBvdXRwdXQgZGlyZWN0b3J5Ci0gSW50ZWdyYXRpb24gd2l0aCBKZXRCcmFpbnMgcHJvamVjdCBzdHJ1Y3R1cmUKCiMjIyBJbnRlbGxpSiBQbHVnaW4gVXNhZ2UKCjEuIFJpZ2h0LWNsaWNrIG9uIGEgU3dhZ2dlci9PcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZSAoSlNPTiBvciBZQU1MKSBpbiB0aGUgcHJvamVjdCBleHBsb3JlcgoyLiBTZWxlY3QgIkdlbmVyYXRlIFJFU1QgQVBJIENsaWVudCIgZnJvbSB0aGUgY29udGV4dCBtZW51CjMuIENob29zZSB5b3VyIHByZWZlcnJlZCBjb2RlIGdlbmVyYXRvciBhbmQgdGFyZ2V0IGxhbmd1YWdlCjQuIENvbmZpZ3VyZSB0aGUgbmFtZXNwYWNlIGFuZCBvdXRwdXQgb3B0aW9ucwo1LiBUaGUgZ2VuZXJhdGVkIGNvZGUgd2lsbCBiZSBhZGRlZCB0byB5b3VyIHByb2plY3QKCiMjIyBJbnRlbGxpSiBQbHVnaW4gU2NyZWVuc2hvdHMKCiFbR2VuZXJhdGUgQyMgQ2xpZW50XShpbWFnZXMvaW50ZWxsaWotZ2VuZXJhdGUtY3NoYXJwLnBuZykKCiFbR2VuZXJhdGUgVHlwZVNjcmlwdCBDbGllbnRdKGltYWdlcy9pbnRlbGxpai1nZW5lcmF0ZS10eXBlc2NyaXB0LnBuZykKCiFbR2VuZXJhdGUgUmVmaXR0ZXIgSW50ZXJmYWNlXShpbWFnZXMvaW50ZWxsaWotZ2VuZXJhdGUtcmVmaXR0ZXIucG5nKQoKIyMgQ3Jvc3MgUGxhdGZvcm0gQ29tbWFuZCBMaW5lIFRvb2wKCkFsbCBjdXN0b20gdG9vbHMgbWVudGlvbmVkIGFib3ZlIGFyZSBhbHNvIGltcGxlbWVudGVkIGluIGEgY3Jvc3MgcGxhdGZvcm0gY29tbWFuZCBsaW5lIGFwcGxpY2F0aW9uLgoKIyMjIFJlcXVpcmVtZW50cwoKLSAuTkVUIDYuMCBydW50aW1lCi0gSmF2YSBSdW50aW1lIEVudmlyb25tZW50Ci0gTlBNCgojIyMgQ0xJIEluc3RhbGxhdGlvbgoKVGhlIHRvb2wgY2FuIGJlIGluc3RhbGxlZCBhcyBhIC5ORVQgQ29yZSBnbG9iYWwgdG9vbCB0aGF0IHlvdSBjYW4gY2FsbCBmcm9tIHRoZSBzaGVsbCAvIGNvbW1hbmQgbGluZQoKYGBgYmFzaApkb3RuZXQgdG9vbCBpbnN0YWxsIC0tZ2xvYmFsIHJhcGljZ2VuCmBgYAoKb3IgYnkgZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMgW2hlcmVdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9yYXBpY2dlbikgdG8gaW5zdGFsbCBhIHNwZWNpZmljIHZlcnNpb24gb2YgdG9vbAoKIyMjIENMSSBVc2FnZQoKU2luY2UgdGhlIHRvb2wgaXMgcHVibGlzaGVkIGFzIGEgLk5FVCBDb3JlIFRvb2wsIGl0IGNhbiBiZSBsYXVuY2hlZCBmcm9tIGFueXdoZXJlIHVzaW5nIGFueSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIGJ5IGNhbGxpbmcgKipyYXBpY2dlbioqLgpUaGUgaGVscCBpbmZvcm1hdGlvbiBpcyBkaXNwbGF5ZWQgd2hlbiBub3Qgc3BlY2lmeWluZyBhbnkgYXJndW1lbnRzIHRvICoqcmFwaWNnZW4qKgoKYGBgClVzYWdlOiByYXBpY2dlbiBbY29tbWFuZF0gW29wdGlvbnNdCgpPcHRpb25zOgogIC12fC0tdmVyYm9zZSAgICAgICBTaG93IHZlcmJvc2Ugb3V0cHV0CiAgLT98LWh8LS1oZWxwICAgICAgIFNob3cgaGVscCBpbmZvcm1hdGlvbi4KCkNvbW1hbmRzOgogIGNzaGFycCAgICAgICAgICAgICBHZW5lcmF0ZSBDIyBBUEkgY2xpZW50cwogIGptZXRlciAgICAgICAgICAgICBHZW5lcmF0ZSBBcGFjaGUgSk1ldGVyIHRlc3QgcGxhbnMKICBvcGVuYXBpLWdlbmVyYXRvciAgR2VuZXJhdGUgY29kZSB1c2luZyBPcGVuQVBJIEdlbmVyYXRvciAodjcuMTkuMCkuCiAgICAgICAgICAgICAgICAgICAgIFNlZSBzdXBwb3J0ZWQgZ2VuZXJhdG9ycyBhdCBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvZG9jcy9nZW5lcmF0b3JzLwogIHR5cGVzY3JpcHQgICAgICAgICBHZW5lcmF0ZSBUeXBlU2NyaXB0IEFQSSBjbGllbnRzCgpSdW4gJ3JhcGljZ2VuIFtjb21tYW5kXSAtP3wtaHwtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4KYGBgCgpTb21lIGhlbHAgaW5mb3JtYXRpb24gaXMgYWxzbyBwcm92aWRlZCBwZXIgY29tbWFuZCBhbmQgY2FuIGJlIGxhdW5jaGVkIGJ5IAoKYGBgCnJhcGljZ2VuIFtjb21tYW5kIG5hbWVdIC0/CmBgYAoKb3IKCmBgYApyYXBpY2dlbiBbY29tbWFuZCBuYW1lXSBbc3ViIGNvbW1hbmQgbmFtZV0gLT8KYGBgCgpGb3IgZXhhbXBsZToKCmBgYApyYXBpY2dlbiBjc2hhcnAgLT8KYGBgIAoKd2lsbCBvdXRwdXQgdGhpczoKCmBgYApHZW5lcmF0ZSBDIyBBUEkgY2xpZW50cwoKVXNhZ2U6IHJhcGljZ2VuIGNzaGFycCBbY29tbWFuZF0gW29wdGlvbnNdCgpPcHRpb25zOgogIC0/fC1ofC0taGVscCAgU2hvdyBoZWxwIGluZm9ybWF0aW9uLgoKQ29tbWFuZHM6CiAgYXV0b3Jlc3QgICAgICBBdXRvUmVzdCAodjMuMC4wLWJldGEuMjAyMTA1MDQuMikKICBraW90YSAgICAgICAgIE1pY3Jvc29mdCBLaW90YSAodjEuMzAuMCkKICBuc3dhZyAgICAgICAgIE5Td2FnICh2MTQuNi4zKQogIG9wZW5hcGkgICAgICAgT3BlbkFQSSBHZW5lcmF0b3IgKHY3LjE5LjApCiAgcmVmaXR0ZXIgICAgICBSZWZpdHRlciAodjEuNy4zKQogIHN3YWdnZXIgICAgICAgU3dhZ2dlciBDb2RlZ2VuIENMSSAodjMuMC4zNCkKClJ1biAnY3NoYXJwIFtjb21tYW5kXSAtP3wtaHwtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4KCmBgYAoKYW5kCgpgYGAKcmFwaWNnZW4gY3NoYXJwIGF1dG9yZXN0IC0/CmBgYAoKd2lsbCBvdXRwdXQgdGhpczoKCmBgYApHZW5lcmF0ZSBTd2FnZ2VyIC8gT3BlbiBBUEkgY2xpZW50IHVzaW5nIEF1dG9SZXN0CgpVc2FnZTogcnVuIGF1dG9yZXN0IFtvcHRpb25zXSA8c3dhZ2dlckZpbGU+IDxuYW1lc3BhY2U+IDxvdXRwdXRGaWxlPgoKQXJndW1lbnRzOgogIHN3YWdnZXJGaWxlICAgUGF0aCB0byB0aGUgU3dhZ2dlciAvIE9wZW4gQVBJIHNwZWNpZmljYXRpb24gZmlsZQogIG5hbWVzcGFjZSAgICAgRGVmYXVsdCBuYW1lc3BhY2UgdG8gaW4gdGhlIGdlbmVyYXRlZCBjb2RlCiAgb3V0cHV0RmlsZSAgICBPdXRwdXQgZmlsZW5hbWUgdG8gd3JpdGUgdGhlIGdlbmVyYXRlZCBjb2RlIHRvLiBEZWZhdWx0IGlzIHRoZSBzd2FnZ2VyRmlsZSAuY3MKCk9wdGlvbnM6CiAgLT98LWh8LS1oZWxwICBTaG93IGhlbHAgaW5mb3JtYXRpb24KYGBgCgpvciAKCmBgYApyYXBpY2dlbiB0eXBlc2NyaXB0IC0/CmBgYAoKd2lsbCBvdXRwdXQgdGhpczoKCmBgYApHZW5lcmF0ZSBUeXBlU2NyaXB0IEFQSSBjbGllbnQKClVzYWdlOiByYXBpY2dlbiB0eXBlc2NyaXB0IFtvcHRpb25zXSA8Z2VuZXJhdG9yPiA8c3dhZ2dlckZpbGU+IDxvdXRwdXRQYXRoPgoKQXJndW1lbnRzOgogIGdlbmVyYXRvciAgICAgICAgIFRoZSB0ZWNoIHN0YWNrIHRvIHVzZSBmb3IgdGhlIGdlbmVyYXRlZCBjbGllbnQgbGlicmFyeQogICAgICAgICAgICAgICAgICAgIEFsbG93ZWQgdmFsdWVzIGFyZTogQW5ndWxhciwgQXVyZWxpYSwgQXhpb3MsIEZldGNoLCBJbnZlcnNpZnksIEpRdWVyeSwgTmVzdEpTLCBOb2RlLCBSZWR1eFF1ZXJ5LAogICAgICAgICAgICAgICAgICAgIFJ4anMuCiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCB2YWx1ZSBpczogQW5ndWxhci4KICBzd2FnZ2VyRmlsZSAgICAgICBQYXRoIHRvIHRoZSBTd2FnZ2VyIC8gT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiBmaWxlCiAgb3V0cHV0UGF0aCAgICAgICAgT3V0cHV0IGZvbGRlciB0byB3cml0ZSB0aGUgZ2VuZXJhdGVkIGNvZGUgdG8KICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHZhbHVlIGlzOiB0eXBlc2NyaXB0LWdlbmVyYXRlZC1jb2RlLgoKT3B0aW9uczoKICAtbmx8LS1uby1sb2dnaW5nICBEaXNhYmxlcyBBbmFseXRpY3MgYW5kIEVycm9yIFJlcG9ydGluZwogIC0/fC1ofC0taGVscCAgICAgIFNob3cgaGVscCBpbmZvcm1hdGlvbi4KYGBgCgojIyBVc2FnZSBFeGFtcGxlczoKCkxldCdzIHNheSB3ZSBoYXZlIGEgT3BlbkFQSSBTcGVjaWZpY2F0aW9ucyBkb2N1bWVudCBjYWxsZWQgKipTd2FnZ2VyLmpzb24qKgoKRm9yIHN0YXJ0ZXJzLCB3ZSBjYW4gdXNlIHRoZSBTd2FnZ2VyIFBldHN0b3JlIHNwZWMuIEhlcmUncyBhbiBleGFtcGxlIHBvd2Vyc2hlbGwgc2NyaXB0IGZvciBkb3dubG9hZGluZyBpdAoKYGBgCkludm9rZS1XZWJSZXF1ZXN0IC1VcmkgaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YzL3N3YWdnZXIuanNvbiAtT3V0RmlsZSBTd2FnZ2VyLmpzb24KYGBgCgpJbiBjYXNlIHlvdSBkb24ndCBoYXZlIHRoZSBDTEkgdG9vbCBpbnN0YWxsZWQgeW91IGNhbiBpbnN0YWxsIGl0IGJ5CgpgYGAKZG90bmV0IHRvb2wgaW5zdGFsbCAtLWdsb2JhbCByYXBpY2dlbgpgYGAKCkhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBnZW5lcmF0ZSBjb2RlIHVzaW5nICoqQXV0b1Jlc3QqKgoKYGBgCnJhcGljZ2VuIGNzaGFycCBhdXRvcmVzdCBTd2FnZ2VyLmpzb24gR2VuZXJhdGVkQ29kZSAuL0F1dG9SZXN0T3V0cHV0LmNzCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgdXNpbmcgKipLaW90YSoqCgpgYGAKcmFwaWNnZW4gY3NoYXJwIGtpb3RhIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vT3BlbkFwaU91dHB1dC5jcwpgYGAKCkhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBnZW5lcmF0ZSBjb2RlIHVzaW5nICoqTlN3YWcqKgoKYGBgCnJhcGljZ2VuIGNzaGFycCBuc3dhZyBTd2FnZ2VyLmpzb24gR2VuZXJhdGVkQ29kZSAuL05Td2FnT3V0cHV0LmNzCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgdXNpbmcgKipTd2FnZ2VyIENvZGVnZW4gQ0xJKioKCmBgYApyYXBpY2dlbiBjc2hhcnAgc3dhZ2dlciBTd2FnZ2VyLmpzb24gR2VuZXJhdGVkQ29kZSAuL1N3YWdnZXJPdXRwdXQuY3MKYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSB1c2luZyAqKk9wZW5BUEkgR2VuZXJhdG9yKioKCmBgYApyYXBpY2dlbiBjc2hhcnAgb3BlbmFwaSBTd2FnZ2VyLmpzb24gR2VuZXJhdGVkQ29kZSAuL09wZW5BcGlPdXRwdXQuY3MKYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSAqKkpNZXRlcioqIHRlc3QgcGxhbnMKCmBgYApyYXBpY2dlbiBqbWV0ZXIgU3dhZ2dlci5qc29uCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgZm9yICoqVHlwZVNjcmlwdCoqCgpgYGAKcmFwaWNnZW4gdHlwZXNjcmlwdCBBbmd1bGFyIFN3YWdnZXIuanNvbgpgYGAKCiMKCkZvciB0aXBzIGFuZCB0cmlja3Mgb24gc29mdHdhcmUgZGV2ZWxvcG1lbnQsIGNoZWNrIG91dCBbbXkgYmxvZ10oaHR0cHM6Ly9jaHJpc3RpYW5oZWxsZS5jb20pCgpJZiB5b3UgZmluZCB0aGlzIHVzZWZ1bCBhbmQgZmVlbCBhIGJpdCBnZW5lcm91cyB0aGVuIGZlZWwgZnJlZSB0byBbYnV5IG1lIGEgY29mZmVlIOKYlV0oaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9jaHJpc3RpYW5oZWxsZSkKCg== readmeEtag: '"7140714731974e2a4cce7bea1aa13c10ea0467e5"' readmeLastModified: Tue, 27 Jan 2026 23:16:00 GMT repositoryId: 166226127 description: >- A collection of Visual Studio code generators for Swagger / OpenAPI specification files created: '2019-01-17T12:58:50Z' updated: '2026-02-05T22:37:40Z' language: C# archived: false stars: 199 watchers: 4 forks: 27 owner: christianhelle logo: https://avatars.githubusercontent.com/u/710400?v=4 license: GPL-3.0 repoEtag: '"8a315f020c72be2903af0878ab62a4087d0bd939c6b944a0a8ffee8d1de95038"' repoLastModified: Thu, 05 Feb 2026 22:37:40 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/neotoolkit/dummy v3: true repositoryMetadata: base64Readme: >- IyBkdW1teQoKWyFbQ0ktaW1nXV1bQ0ktdXJsXQpbIVtwa2ctaW1nXV1bcGtnLXVybF0KWyFbcmVwb3J0Y2FyZC1pbWddXVtyZXBvcnRjYXJkLXVybF0KWyFbY292ZXJhZ2UtaW1nXV1bY292ZXJhZ2UtdXJsXQpbIVt2ZXJzaW9uLWltZ11dW3ZlcnNpb24tdXJsXQoKPGltZyBhbGlnbj0icmlnaHQiIGFsdD0iZHVtbXkiIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL25lb3Rvb2xraXQvLmdpdGh1Yi9tYWluL2Fzc2V0cy9kdW1teV9naF9vcHQtMl9pbWdfNHgucG5nIiB3aWR0aD0iMTUwcHgiIGhlaWdodD0iMTUwcHgiPgoKUnVuIG1vY2sgc2VydmVyIGJhc2VkIG9mZiBhbiBBUEkgY29udHJhY3Qgd2l0aCBvbmUgY29tbWFuZAoKW0R1bW15XShodHRwczovL2V2cm9uZS5jb20vZHVtbXk/dXRtX3NvdXJjZT1naXRodWImdXRtX2NhbXBhaWduPWR1bW15KSBpcyBjcmVhdGVkICYgc3VwcG9ydGVkIGJ5IFtFdnJvbmVdKGh0dHBzOi8vZXZyb25lLmNvbT91dG1fc291cmNlPWdpdGh1YiZ1dG1fY2FtcGFpZ249ZHVtbXkpCgojIyBGZWF0dXJlcwotIFN1cHBvcnRzIGBPcGVuQVBJIDMueGAKCiMjIEluc3RhbGxhdGlvbgpgYGBzaGVsbApnbyBpbnN0YWxsIGdpdGh1Yi5jb20vbmVvdG9vbGtpdC9kdW1teS9jbWQvZHVtbXlAbGF0ZXN0CmBgYAoKIyMgVXNhZ2UKRHVtbXkgY2FuIGhlbHAgeW91IHJ1biBtb2NrIHNlcnZlciBiYXNlZCBvZmYgYW4gQVBJIGNvbnRyYWN0LCB3aGljaCBoZWxwcyBwZW9wbGUgc2VlIGhvdyB5b3VyIEFQSSB3aWxsIHdvcmsgYmVmb3JlIHlvdSBldmVuIGhhdmUgaXQgYnVpbHQuIFJ1biBpdCBsb2NhbGx5IHdpdGggdGhlIGBkdW1teSBzYCBjb21tYW5kIHRvIHJ1biB5b3VyIEFQSSBvbiBhIEhUVFAgc2VydmVyIHlvdSBjYW4gaW50ZXJhY3Qgd2l0aC4KYGBgc2hlbGwKZHVtbXkgcyBvcGVuYXBpLnltbApgYGAKYGBgc2hlbGwKZHVtbXkgcyBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbmVvdG9vbGtpdC9kdW1teS9tYWluL2V4YW1wbGVzL2RvY2tlci9vcGVuYXBpLnltbApgYGAKTW9yZSB1c2FnZSBbZXhhbXBsZXNdKGV4YW1wbGVzKQoKIyMgRG9jdW1lbnRhdGlvbgpTZWUgW3RoZXNlIGRvY3NdW3BrZy11cmxdLgoKIyMgTGljZW5zZQpbTUlUIExpY2Vuc2VdKExJQ0VOU0UpLgoKIyMgU3BvbnNvcnMKPHA+CiAgPGEgaHJlZj0iaHR0cHM6Ly9ldnJvbmUuY29tLz91dG1fc291cmNlPWdpdGh1YiZ1dG1fY2FtcGFpZ249bmVvdG9vbGtpdCI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL25lb3Rvb2xraXQvLmdpdGh1Yi9tYWluL2Fzc2V0cy9zcG9uc29yZWRfYnlfZXZyb25lLnN2ZyIKICAgICAgYWx0PSJTcG9uc29yZWQgYnkgRXZyb25lIj4KICA8L2E+CjwvcD4KCltDSS1pbWddOiBodHRwczovL2dpdGh1Yi5jb20vbmVvdG9vbGtpdC9kdW1teS93b3JrZmxvd3MvQ0kvYmFkZ2Uuc3ZnCltDSS11cmxdOiBodHRwczovL2dpdGh1Yi5jb20vbmVvdG9vbGtpdC9kdW1teS9hY3Rpb25zCltwa2ctaW1nXTogaHR0cHM6Ly9wa2cuZ28uZGV2L2JhZGdlL25lb3Rvb2xraXQvZHVtbXkKW3BrZy11cmxdOiBodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9uZW90b29sa2l0L2R1bW15CltyZXBvcnRjYXJkLWltZ106IGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9uZW90b29sa2l0L2R1bW15CltyZXBvcnRjYXJkLXVybF06IGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvbmVvdG9vbGtpdC9kdW1teQpbY292ZXJhZ2UtaW1nXTogaHR0cHM6Ly9jb2RlY292LmlvL2doL25lb3Rvb2xraXQvZHVtbXkvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnCltjb3ZlcmFnZS11cmxdOiBodHRwczovL2NvZGVjb3YuaW8vZ2gvbmVvdG9vbGtpdC9kdW1teQpbdmVyc2lvbi1pbWddOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi92L3JlbGVhc2UvbmVvdG9vbGtpdC9kdW1teQpbdmVyc2lvbi11cmxdOiBodHRwczovL2dpdGh1Yi5jb20vbmVvdG9vbGtpdC9kdW1teS9yZWxlYXNlcwo= readmeEtag: '"f03ee0da18daed2d3289f8396f6b6742bf664ec7"' readmeLastModified: Mon, 25 Jul 2022 15:10:04 GMT repositoryId: 427261627 description: Run mock server based off an API contract with one command created: '2021-11-12T06:54:04Z' updated: '2025-07-30T10:12:50Z' language: Go archived: true stars: 177 watchers: 2 forks: 9 owner: neotoolkit logo: https://avatars.githubusercontent.com/u/94162314?v=4 license: MIT repoEtag: '"b1b433759bd38086fe0e63cca6becd0756afabf626b3da81f21d1c6c71e7f03b"' repoLastModified: Wed, 30 Jul 2025 10:12:50 GMT foundInMaster: true category: Testing id: 008c4fd437f4f20d365f1f13b08a2f6f oldLocations: - https://github.com/go-dummy/dummy - source: - openapi3 tags - openapi31 tags repository: https://github.com/redocly/openapi-starter v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIERlZmluaXRpb24gU3RhcnRlcgoKIyMgSG93IHRvIHVzZSB0aGlzIHN0YXJ0ZXIKCiFbQ2xpY2sgdXNlIHRlbXBsYXRlIGJ1dHRvbl0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMzk3NTczOC85MjkyNzMwNC0xMmUzNWQ4MC1mNDQ2LTExZWEtOWJkMy1hMGY4YTY5NzkyZDAucG5nKQoKIyMgV29ya2luZyBvbiB5b3VyIE9wZW5BUEkgRGVmaW5pdGlvbgoKIyMjIEluc3RhbGwKCjEuIEluc3RhbGwgW05vZGUgSlNdKGh0dHBzOi8vbm9kZWpzLm9yZy8pLgoyLiBDbG9uZSB0aGlzIHJlcG8gYW5kIHJ1biBgbnBtIGluc3RhbGxgIGluIHRoZSByZXBvIHJvb3QuCgojIyMgVXNhZ2UKCiMjIyMgYG5wbSBzdGFydGAKU3RhcnRzIHRoZSByZWZlcmVuY2UgZG9jcyBwcmV2aWV3IHNlcnZlci4KCiMjIyMgYG5wbSBydW4gYnVpbGRgCkJ1bmRsZXMgdGhlIGRlZmluaXRpb24gdG8gdGhlIGRpc3QgZm9sZGVyLgoKIyMjIyBgbnBtIHRlc3RgClZhbGlkYXRlcyB0aGUgZGVmaW5pdGlvbi4KCiMjIENvbnRyaWJ1dGlvbiBHdWlkZQoKQmVsb3cgaXMgYSBzYW1wbGUgY29udHJpYnV0aW9uIGd1aWRlLiBUaGUgdG9vbHMKaW4gdGhlIHJlcG9zaXRvcnkgZG9uJ3QgcmVzdHJpY3QgeW91IHRvIGFueQpzcGVjaWZpYyBzdHJ1Y3R1cmUuIEFkanVzdCB0aGUgY29udHJpYnV0aW9uIGd1aWRlCnRvIG1hdGNoIHlvdXIgb3duIHN0cnVjdHVyZS4gSG93ZXZlciwgaWYgeW91CmRvbid0IGhhdmUgYSBzdHJ1Y3R1cmUgaW4gbWluZCwgdGhpcyBpcyBhCmdvb2QgcGxhY2UgdG8gc3RhcnQuCgpVcGRhdGUgdGhpcyBjb250cmlidXRpb24gZ3VpZGUgaWYgeW91CmFkanVzdCB0aGUgZmlsZS9mb2xkZXIgb3JnYW5pemF0aW9uLgoKVGhlIGAucmVkb2NseS55YW1sYCBjb250cm9scyBzZXR0aW5ncyBmb3IgdmFyaW91cwp0b29scyBpbmNsdWRpbmcgdGhlIGxpbnQgdG9vbCBhbmQgdGhlIHJlZmVyZW5jZQpkb2NzIGVuZ2luZS4gIE9wZW4gaXQgdG8gZmluZCBleGFtcGxlcyBhbmQKW3JlYWQgdGhlIGRvY3NdKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9jbGkvY29uZmlndXJhdGlvbi8pCmZvciBtb3JlIGluZm9ybWF0aW9uLgoKCiMjIyBTY2hlbWFzCgojIyMjIEFkZGluZyBTY2hlbWFzCgoxLiBOYXZpZ2F0ZSB0byB0aGUgYG9wZW5hcGkvY29tcG9uZW50cy9zY2hlbWFzYCBmb2xkZXIuCjIuIEFkZCBhIGZpbGUgbmFtZWQgYXMgeW91IHdpc2ggdG8gbmFtZSB0aGUgc2NoZW1hLgozLiBEZWZpbmUgdGhlIHNjaGVtYS4KNC4gUmVmZXIgdG8gdGhlIHNjaGVtYSB1c2luZyB0aGUgYCRyZWZgIChzZWUgZXhhbXBsZSBiZWxvdykuCgojIyMjIyBFeGFtcGxlIFNjaGVtYQpUaGlzIGlzIGEgdmVyeSBzaW1wbGUgc2NoZW1hIGV4YW1wbGU6CmBgYHlhbWwKdHlwZTogc3RyaW5nCmRlc2NyaXB0aW9uOiBUaGUgcmVzb3VyY2UgSUQuIERlZmF1bHRzIHRvIFVVSUQgdjQKbWF4TGVuZ3RoOiA1MApleGFtcGxlOiA0ZjZjZjM1eC0yYzR5LTQ4M3otYTBhOS0xNTg2MjFmNzdhMjEKYGBgClRoaXMgaXMgYSBtb3JlIGNvbXBsZXggc2NoZW1hIGV4YW1wbGU6CmBgYHlhbWwKdHlwZTogb2JqZWN0CnByb3BlcnRpZXM6CiAgaWQ6CiAgICBkZXNjcmlwdGlvbjogVGhlIGN1c3RvbWVyIGlkZW50aWZpZXIgc3RyaW5nCiAgICByZWFkT25seTogdHJ1ZQogICAgYWxsT2Y6CiAgICAgIC0gJHJlZjogLi9SZXNvdXJjZUlkLnlhbWwKICB3ZWJzaXRlSWQ6CiAgICBkZXNjcmlwdGlvbjogVGhlIHdlYnNpdGUncyBJRAogICAgYWxsT2Y6CiAgICAgIC0gJHJlZjogLi9SZXNvdXJjZUlkLnlhbWwKICBwYXltZW50VG9rZW46CiAgICB0eXBlOiBzdHJpbmcKICAgIHdyaXRlT25seTogdHJ1ZQogICAgZGVzY3JpcHRpb246IHwKICAgICAgQSB3cml0ZS1vbmx5IHBheW1lbnQgdG9rZW47IGlmIHN1cHBsaWVkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCBpbnRvIGEKICAgICAgcGF5bWVudCBpbnN0cnVtZW50IGFuZCBiZSBzZXQgYXMgdGhlIGBkZWZhdWx0UGF5bWVudEluc3RydW1lbnRgLiBUaGUKICAgICAgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eSB3aWxsIG92ZXJyaWRlIHRoZSBgZGVmYXVsdFBheW1lbnRJbnN0cnVtZW50YAogICAgICBpbiB0aGUgY2FzZSB0aGF0IGJvdGggYXJlIHN1cHBsaWVkLiBUaGUgdG9rZW4gbWF5IG9ubHkgYmUgdXNlZCBvbmNlCiAgICAgIGJlZm9yZSBpdCBpcyBleHBpcmVkLgogIGRlZmF1bHRQYXltZW50SW5zdHJ1bWVudDoKICAgICRyZWY6IC4vUGF5bWVudEluc3RydW1lbnQueWFtbAogIGNyZWF0ZWRUaW1lOgogICAgZGVzY3JpcHRpb246IFRoZSBjdXN0b21lciBjcmVhdGVkIHRpbWUKICAgIGFsbE9mOgogICAgICAtICRyZWY6IC4vU2VydmVyVGltZXN0YW1wLnlhbWwKICB1cGRhdGVkVGltZToKICAgIGRlc2NyaXB0aW9uOiBUaGUgY3VzdG9tZXIgdXBkYXRlZCB0aW1lCiAgICBhbGxPZjoKICAgICAgLSAkcmVmOiAuL1NlcnZlclRpbWVzdGFtcC55YW1sCiAgdGFnczoKICAgIGRlc2NyaXB0aW9uOiBBIGxpc3Qgb2YgY3VzdG9tZXIncyB0YWdzCiAgICByZWFkT25seTogdHJ1ZQogICAgdHlwZTogYXJyYXkKICAgIGl0ZW1zOgogICAgICAkcmVmOiAuL1RhZ3MvVGFnLnlhbWwKICByZXZpc2lvbjoKICAgIGRlc2NyaXB0aW9uOiA+CiAgICAgIFRoZSBudW1iZXIgb2YgdGltZXMgdGhlIGN1c3RvbWVyIGRhdGEgaGFzIGJlZW4gbW9kaWZpZWQuCgogICAgICBUaGUgcmV2aXNpb24gaXMgdXNlZnVsIHdoZW4gYW5hbHl6aW5nIHdlYmhvb2sgZGF0YSB0byBkZXRlcm1pbmUgaWYgdGhlCiAgICAgIGNoYW5nZSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlIGN1cnJlbnQgcmVwcmVzZW50YXRpb24uCiAgICB0eXBlOiBpbnRlZ2VyCiAgICByZWFkT25seTogdHJ1ZQogIF9saW5rczoKICAgIHR5cGU6IGFycmF5CiAgICBkZXNjcmlwdGlvbjogVGhlIGxpbmtzIHJlbGF0ZWQgdG8gcmVzb3VyY2UKICAgIHJlYWRPbmx5OiB0cnVlCiAgICBtaW5JdGVtczogMwogICAgaXRlbXM6CiAgICAgIGFueU9mOgogICAgICAgIC0gJHJlZjogLi9MaW5rcy9TZWxmTGluay55YW1sCiAgICAgICAgLSAkcmVmOiAuL0xpbmtzL05vdGVzTGluay55YW1sCiAgICAgICAgLSAkcmVmOiAuL0xpbmtzL0RlZmF1bHRQYXltZW50SW5zdHJ1bWVudExpbmsueWFtbAogICAgICAgIC0gJHJlZjogLi9MaW5rcy9MZWFkU291cmNlTGluay55YW1sCiAgICAgICAgLSAkcmVmOiAuL0xpbmtzL1dlYnNpdGVMaW5rLnlhbWwKICBfZW1iZWRkZWQ6CiAgICB0eXBlOiBhcnJheQogICAgZGVzY3JpcHRpb246ID4tCiAgICAgIEFueSBlbWJlZGRlZCBvYmplY3RzIGF2YWlsYWJsZSB0aGF0IGFyZSByZXF1ZXN0ZWQgYnkgdGhlIGBleHBhbmRgCiAgICAgIHF1ZXJ5c3RyaW5nIHBhcmFtZXRlci4KICAgIHJlYWRPbmx5OiB0cnVlCiAgICBtaW5JdGVtczogMQogICAgaXRlbXM6CiAgICAgIGFueU9mOgogICAgICAgIC0gJHJlZjogLi9FbWJlZHMvTGVhZFNvdXJjZUVtYmVkLnlhbWwKCmBgYAoKSWYgeW91IGhhdmUgYW4gSlNPTiBleGFtcGxlLCB5b3UgY2FuIGNvbnZlcnQgaXQgdG8gSlNPTiBzY2hlbWEgdXNpbmcgUmVkb2NseSdzIFtKU09OIHRvIEpTT04gc2NoZW1hIHRvb2xdKGh0dHBzOi8vcmVkb2NseS5jb20vdG9vbHMvanNvbi10by1qc29uLXNjaGVtYS8pLgoKIyMjIyMgVXNpbmcgdGhlIGAkcmVmYAoKTm90aWNlIGluIHRoZSBjb21wbGV4IGV4YW1wbGUgYWJvdmUgdGhlIHNjaGVtYSBkZWZpbml0aW9uIGl0c2VsZiBoYXMgYCRyZWZgIGxpbmtzIHRvIG90aGVyIHNjaGVtYXMgZGVmaW5lZC4KCkhlcmUgaXMgYSBzbWFsbCBleGNlcnB0IHdpdGggYW4gZXhhbXBsZToKCmBgYHlhbWwKZGVmYXVsdFBheW1lbnRJbnN0cnVtZW50OgogICRyZWY6IC4vUGF5bWVudEluc3RydW1lbnQueWFtbApgYGAKClRoZSB2YWx1ZSBvZiB0aGUgYCRyZWZgIGlzIHRoZSBwYXRoIHRvIHRoZSBvdGhlciBzY2hlbWEgZGVmaW5pdGlvbi4KCllvdSBtYXkgdXNlIGAkcmVmYHMgdG8gY29tcG9zZSBzY2hlbWEgZnJvbSBvdGhlciBleGlzdGluZyBzY2hlbWEgdG8gYXZvaWQgZHVwbGljYXRpb24uCgpZb3Ugd2lsbCB1c2UgYCRyZWZgcyB0byByZWZlcmVuY2Ugc2NoZW1hIGZyb20geW91ciBwYXRoIGRlZmluaXRpb25zLgoKIyMjIyBFZGl0aW5nIFNjaGVtYXMKCjEuIE5hdmlnYXRlIHRvIHRoZSBgb3BlbmFwaS9jb21wb25lbnRzL3NjaGVtYXNgIGZvbGRlci4KMi4gT3BlbiB0aGUgZmlsZSB5b3Ugd2lzaCB0byBlZGl0LgozLiBFZGl0LgoKIyMjIFBhdGhzCgojIyMjIEFkZGluZyBhIFBhdGgKCjEuIE5hdmlnYXRlIHRvIHRoZSBgb3BlbmFwaS9wYXRoc2AgZm9sZGVyLgoyLiBBZGQgYSBuZXcgWUFNTCBmaWxlIG5hbWVkIGxpa2UgeW91ciBVUkwgZW5kcG9pbnQgZXhjZXB0IHJlcGxhY2luZyBgL2Agd2l0aCBgX2AgKG9yIHdoaWNoZXZlciBjaGFyYWN0ZXIgeW91IHByZWZlcikgYW5kIHB1dHRpbmcgcGF0aCBwYXJhbWV0ZXJzIGludG8gY3VybHkgYnJhY2VzIGxpa2UgYHtleGFtcGxlfWAuCjMuIEFkZCB0aGUgcGF0aCBhbmQgYSByZWYgdG8gaXQgaW5zaWRlIG9mIHlvdXIgYG9wZW5hcGkueWFtbGAgZmlsZSBpbnNpZGUgb2YgdGhlIGBvcGVuYXBpYCBmb2xkZXIuCgpFeGFtcGxlIGFkZGl0aW9uIHRvIHRoZSBgb3BlbmFwaS55YW1sYCBmaWxlOgpgYGB5YW1sCicvY3VzdG9tZXJzL3tpZH0nOgogICRyZWY6ICcuL3BhdGhzL2N1c3RvbWVyc197aWR9LnlhbWwnCmBgYAoKSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgWUFNTCBmaWxlIG5hbWVkIGBjdXN0b21lcnNfe2lkfS55YW1sYCBpbiB0aGUgYHBhdGhzYCBmb2xkZXI6CgpgYGB5YW1sCmdldDoKICB0YWdzOgogICAgLSBDdXN0b21lcnMKICBzdW1tYXJ5OiBSZXRyaWV2ZSBhIGxpc3Qgb2YgY3VzdG9tZXJzCiAgb3BlcmF0aW9uSWQ6IEdldEN1c3RvbWVyQ29sbGVjdGlvbgogIGRlc2NyaXB0aW9uOiB8CiAgICBZb3UgY2FuIGhhdmUgYSBtYXJrZG93biBkZXNjcmlwdGlvbiBoZXJlLgogIHBhcmFtZXRlcnM6CiAgICAtICRyZWY6IC4uL2NvbXBvbmVudHMvcGFyYW1ldGVycy9jb2xsZWN0aW9uTGltaXQueWFtbAogICAgLSAkcmVmOiAuLi9jb21wb25lbnRzL3BhcmFtZXRlcnMvY29sbGVjdGlvbk9mZnNldC55YW1sCiAgICAtICRyZWY6IC4uL2NvbXBvbmVudHMvcGFyYW1ldGVycy9jb2xsZWN0aW9uRmlsdGVyLnlhbWwKICAgIC0gJHJlZjogLi4vY29tcG9uZW50cy9wYXJhbWV0ZXJzL2NvbGxlY3Rpb25RdWVyeS55YW1sCiAgICAtICRyZWY6IC4uL2NvbXBvbmVudHMvcGFyYW1ldGVycy9jb2xsZWN0aW9uRXhwYW5kLnlhbWwKICAgIC0gJHJlZjogLi4vY29tcG9uZW50cy9wYXJhbWV0ZXJzL2NvbGxlY3Rpb25GaWVsZHMueWFtbAogIHJlc3BvbnNlczoKICAgICcyMDAnOgogICAgICBkZXNjcmlwdGlvbjogQSBsaXN0IG9mIEN1c3RvbWVycyB3YXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseQogICAgICBoZWFkZXJzOgogICAgICAgIFJhdGUtTGltaXQtTGltaXQ6CiAgICAgICAgICAkcmVmOiAuLi9jb21wb25lbnRzL2hlYWRlcnMvUmF0ZS1MaW1pdC1MaW1pdC55YW1sCiAgICAgICAgUmF0ZS1MaW1pdC1SZW1haW5pbmc6CiAgICAgICAgICAkcmVmOiAuLi9jb21wb25lbnRzL2hlYWRlcnMvUmF0ZS1MaW1pdC1SZW1haW5pbmcueWFtbAogICAgICAgIFJhdGUtTGltaXQtUmVzZXQ6CiAgICAgICAgICAkcmVmOiAuLi9jb21wb25lbnRzL2hlYWRlcnMvUmF0ZS1MaW1pdC1SZXNldC55YW1sCiAgICAgICAgUGFnaW5hdGlvbi1Ub3RhbDoKICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvaGVhZGVycy9QYWdpbmF0aW9uLVRvdGFsLnlhbWwKICAgICAgICBQYWdpbmF0aW9uLUxpbWl0OgogICAgICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9oZWFkZXJzL1BhZ2luYXRpb24tTGltaXQueWFtbAogICAgICAgIFBhZ2luYXRpb24tT2Zmc2V0OgogICAgICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9oZWFkZXJzL1BhZ2luYXRpb24tT2Zmc2V0LnlhbWwKICAgICAgY29udGVudDoKICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICB0eXBlOiBhcnJheQogICAgICAgICAgICBpdGVtczoKICAgICAgICAgICAgICAkcmVmOiAuLi9jb21wb25lbnRzL3NjaGVtYXMvQ3VzdG9tZXIueWFtbAogICAgICAgIHRleHQvY3N2OgogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICB0eXBlOiBhcnJheQogICAgICAgICAgICBpdGVtczoKICAgICAgICAgICAgICAkcmVmOiAuLi9jb21wb25lbnRzL3NjaGVtYXMvQ3VzdG9tZXIueWFtbAogICAgJzQwMSc6CiAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvcmVzcG9uc2VzL0FjY2Vzc0ZvcmJpZGRlbi55YW1sCiAgeC1jb2RlLXNhbXBsZXM6CiAgICAtIGxhbmc6IFBIUAogICAgICBzb3VyY2U6CiAgICAgICAgJHJlZjogLi4vY29kZV9zYW1wbGVzL1BIUC9jdXN0b21lcnMvZ2V0LnBocApwb3N0OgogIHRhZ3M6CiAgICAtIEN1c3RvbWVycwogIHN1bW1hcnk6IENyZWF0ZSBhIGN1c3RvbWVyICh3aXRob3V0IGFuIElEKQogIG9wZXJhdGlvbklkOiBQb3N0Q3VzdG9tZXIKICBkZXNjcmlwdGlvbjogQW5vdGhlciBtYXJrZG93biBkZXNjcmlwdGlvbiBoZXJlLgogIHJlcXVlc3RCb2R5OgogICAgJHJlZjogLi4vY29tcG9uZW50cy9yZXF1ZXN0Qm9kaWVzL0N1c3RvbWVyLnlhbWwKICByZXNwb25zZXM6CiAgICAnMjAxJzoKICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9yZXNwb25zZXMvQ3VzdG9tZXIueWFtbAogICAgJzQwMSc6CiAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvcmVzcG9uc2VzL0FjY2Vzc0ZvcmJpZGRlbi55YW1sCiAgICAnNDA5JzoKICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9yZXNwb25zZXMvQ29uZmxpY3QueWFtbAogICAgJzQyMic6CiAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvcmVzcG9uc2VzL0ludmFsaWREYXRhRXJyb3IueWFtbAogIHgtY29kZS1zYW1wbGVzOgogICAgLSBsYW5nOiBQSFAKICAgICAgc291cmNlOgogICAgICAgICRyZWY6IC4uL2NvZGVfc2FtcGxlcy9QSFAvY3VzdG9tZXJzL3Bvc3QucGhwCmBgYAoKWW91J2xsIHNlZSBleHRlbnNpdmUgdXNhZ2Ugb2YgYCRyZWZgcyBpbiB0aGlzIGV4YW1wbGUgdG8gZGlmZmVyZW50IHR5cGVzIG9mIGNvbXBvbmVudHMgaW5jbHVkaW5nIHNjaGVtYXMuCgpZb3UnbGwgYWxzbyBub3RpY2UgYCRyZWZgcyB0byBjb2RlIHNhbXBsZXMuCgojIyMgQ29kZSBzYW1wbGVzCgpBdXRvbWF0ZWQgY29kZSBzYW1wbGUgZ2VuZXJhdGlvbnMgaXMgZW5hYmxlZCBpbiB0aGUgUmVkb2NseSBjb25maWd1cmF0aW9uIGZpbGUuIEFkZCBtYW51YWwgY29kZSBzYW1wbGVzIGJ5IHRoZSBmb2xsb3dpbmcgcHJvY2VzczoKCjEuIE5hdmlnYXRlIHRvIHRoZSBgb3BlbmFwaS9jb2RlX3NhbXBsZXNgIGZvbGRlci4KMi4gTmF2aWdhdGUgdG8gdGhlIGA8bGFuZ3VhZ2U+YCAoZS5nLiBQSFApIHN1Yi1mb2xkZXIuCjMuIE5hdmlnYXRlIHRvIHRoZSBgcGF0aGAgZm9sZGVyLCBhbmQgYWRkIHJlZiB0byB0aGUgY29kZSBzYW1wbGUuCgpZb3UgY2FuIGFkZCBsYW5ndWFnZXMgYnkgYWRkaW5nIG5ldyBmb2xkZXJzIGF0IHRoZSBhcHByb3ByaWF0ZSBwYXRoIGxldmVsLgoKTW9yZSBkZXRhaWxzIGluc2lkZSB0aGUgYGNvZGVfc2FtcGxlc2AgZm9sZGVyIFJFQURNRS4K readmeEtag: '"a8de8cdd75c9b76475ef4aedb54a444ab2d0a64a"' readmeLastModified: Thu, 01 Aug 2024 06:35:10 GMT repositoryId: 294444776 description: OpenAPI starter repository created: '2020-09-10T15:11:31Z' updated: '2026-01-27T17:29:06Z' language: C# archived: false stars: 209 watchers: 15 forks: 131 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT repoEtag: '"51ea764c7989d56cff7799955081755027eab97b6f3e8644ab98aab0089d79d7"' repoLastModified: Tue, 27 Jan 2026 17:29:06 GMT foundInMaster: true v3_1: true category: Parsers id: 9f59fa22b947a112b53c92bbf81c95c4 - source: openapi3 tags repository: https://github.com/ccouzens/keycloak-openapi v3: true repositoryMetadata: base64Readme: >- IyBLZXljbG9hay1BZG1pbi1PcGVuQVBJLURlZmluaXRpb24KCltPcGVuQVBJIGRlZmluaXRpb25zXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgZm9yCltLZXljbG9ha10oaHR0cHM6Ly93d3cua2V5Y2xvYWsub3JnLykncyBBZG1pbiBBUEkuCgpUaGVzZSBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBsaWJyYXJpZXMgZm9yIGludGVyYWN0aW5nIHdpdGggS2V5Y2xvYWsgZnJvbSBhbnkKbWFpbnN0cmVhbSBwcm9ncmFtbWluZyBsYW5nYXVnZS4KCk9wZW5BUEkgZGVmaW5pdGlvbnMgYXJlIHNvbWV0aW1lcyBrbm93biBieSB0aGVpciBwcmV2aW91cyBuYW1lIG9mIFN3YWdnZXIKc3BlY2lmaWNhdGlvbnMuCgpbS2V5Y2xvYWsgMjIuMC4wIEFkbWluIEFQSV0oLi9rZXljbG9hay8yMi4wLjAuanNvbikKCltLZXljbG9hayAxMy4wIEFkbWluIEFQSSB3aXRoIHBhdGNoZXNdKC4va2V5Y2xvYWsvMTMuMC1wYXRjaGVkLmpzb24pCgpbS2V5Y2xvYWsgMTIuMCBBZG1pbiBBUEkgd2l0aCBwYXRjaGVzXSguL2tleWNsb2FrLzEyLjAtcGF0Y2hlZC5qc29uKQoKW090aGVyIHZlcnNpb25zXSguL2tleWNsb2FrLykKCiMjIEFsdGVybmF0aXZlcwoKREFIQUcgUmVjaHRzc2VydmljZXMgQUcKW3Byb3ZpZGUgT3BlbkFQSSBkZWZpbml0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL2RhaGFnLWFnL2tleWNsb2FrLW9wZW5hcGkpIGZvcgpyZWNlbnQgdmVyc2lvbnMgb2YgS2V5Y2xvYWsgd2hpY2ggYXJlIG1vcmUgY29tcGxldGUgdGhhbiB3aGF0J3MgaGVyZS4KCiMjIEFjY291bnQgQVBJCgpLZXljbG9hayBoYXMgYW4gdW5kb2N1bWVudGVkIFtBY2NvdW50IEFQSV0oaHR0cHM6Ly9naXRodWIuY29tL2tleWNsb2FrL2tleWNsb2FrL2Jsb2IvbWFpbi9zZXJ2aWNlcy9zcmMvbWFpbi9qYXZhL29yZy9rZXljbG9hay9zZXJ2aWNlcy9yZXNvdXJjZXMvYWNjb3VudC9BY2NvdW50UmVzdFNlcnZpY2UuamF2YSkgdGhhdCBpcyB1c2VkIGJ5IHRoZSBpbnRlcm5hbCBhY2NvdW50IGNvbnNvbGUgdG8gZGlzcGxheSBhbmQgdXBkYXRlIHVzZXIgaW5mb3JtYXRpb24uIFRoaXMgY2FuIGJlIHVzZWQgZm9yIGJ1aWxkaW5nIGEgY3VzdG9tIGFjY291bnQgY29uc29sZSwgb3IgYnVpbGRpbmcgYWNjb3VudCBpbmZvcm1hdGlvbiBhbmQgZWRpdGluZyBpbnRvIGFuIGFwcGxpY2F0aW9uLiBbQHhncF0oaHR0cHM6Ly9naXRodWIuY29tL3hncCkgaGFzIGNyZWF0ZWQgYSBbR2lzdCBvZiBPcGVuQVBJIGRlZmluaXRpb25zIG9mIHRoZSBBY2NvdW50IEFQSV0oaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20veGdwLzJkNzdjYmViYzYxNjQxNjBmYWFlNmFhNzdkMTI3YTU3KS4KCiMjIEdlbmVyYWwgVXNhZ2UKClR5cGljYWxseSB0byB1c2UgS2V5Y2xvYWsncyBhZG1pbiBSZXN0IEFQSSwgeW91IGZpcnN0IGdldCBhIHRva2VuIGZyb20gYSByZWFsbS4KVGhpcyBpcyBkb25lIHVzaW5nIHRoZSBPQXV0aDIgcHJvdG9jb2wuCgpgYGBiYXNoCmJlYXJlcl90b2tlbj0kKGN1cmwgLVggUE9TVCAnaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL21hc3Rlci9wcm90b2NvbC9vcGVuaWQtY29ubmVjdC90b2tlbicgXAogICAgIC0tZGF0YS11cmxlbmNvZGUgJ3VzZXJuYW1lPWFkbWluLXVzZXInIFwKICAgICAtLWRhdGEtdXJsZW5jb2RlICdwYXNzd29yZD1hZG1pbi1wYXNzd29yZCcgXAogICAgIC0tZGF0YS11cmxlbmNvZGUgJ2dyYW50X3R5cGU9cGFzc3dvcmQnIFwKICAgICAtLWRhdGEtdXJsZW5jb2RlICdjbGllbnRfaWQ9YWRtaW4tY2xpJyBcCiAgICAgIHwganEgLXIgJy5hY2Nlc3NfdG9rZW4nKQpgYGAKClRoZSByZWFsbSB1c2VkIGZvciB0aGUgdG9rZW4gaXMgbm90IG5lY2Vzc2FyaWx5IHRoZSByZWFsbSB1c2VkIGluIHRoZSBBUEkuCgpUaGUgZW5kcG9pbnRzIGluIHRoaXMgc3BlY2lmaWNhdGlvbiBjYW4gdGhlbiBiZSB1c2VkIHdpdGggYSBiYXNlIHVybCBvZiB0aGUgZm9ybQpgaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvYWRtaW4vcmVhbG1zYCBhbmQgdGhlIGFib3ZlIGJlYXJlciB0b2tlbi4KClBsZWFzZSBzZWUgdGhlIFtleGFtcGxlIGFwcF0oZXhhbXBsZV9hcHAvc3JjL2luZGV4LnRzKS4KCiMjIEhlbHAgd2FudGVkCgpUaGUgZGVmaW5pdGlvbnMgYXJlIGNvbXB1dGVyIGdlbmVyYXRlZCwgYnV0Cltjb3VsZCBkbyB3aXRoIGEgaHVtYW4ncyBpbnB1dF0oaHR0cHM6Ly9naXRodWIuY29tL2Njb3V6ZW5zL2tleWNsb2FrLW9wZW5hcGkvaXNzdWVzLzEwKS4KCltQbGVhc2UgcHJvdmlkZSBhZGRpdGlvbmFsIGV4YW1wbGUgYXBwc10oaHR0cHM6Ly9naXRodWIuY29tL2Njb3V6ZW5zL2tleWNsb2FrLW9wZW5hcGkvaXNzdWVzLzE0KS4KCiMjIEFkZGluZyBuZXcgdmVyc2lvbnMKClRvIGFkZCBhIG5ldyB2ZXJzaW9uIG9mIEtleWNsb2FrIHBlcmZvcm0gdGhlc2Ugc3RlcHM6CgoxLiBNb2RpZnkgdGhlIFtNYWtlZmlsZV0oLi9NYWtlZmlsZSkgd2l0aCB0aGUKICAgW25ldyB2ZXJzaW9uXShodHRwczovL2dpdGh1Yi5jb20vY2NvdXplbnMva2V5Y2xvYWstb3BlbmFwaS9jb21taXQvNmY3MTc1MzNiMTNjZDA3YmFlM2M0YWExZjU1OTA3ZmI0MDMzODU0MCNkaWZmLTc2ZWQwNzRhOTMwNWMwNDA1NGNkZWJiOWU5YWFkMmQ4MTgwNTJiMDcwOTFkZTFmMjBjYWQwYmJhYzM0ZmZiNTIpLgoyLiBWZXJpZnkgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSBbcmVxdWlyZW1lbnRzXSgjcmVxdWlyZW1lbnRzKS4KMy4gUnVuIHRoZSBjb21tYW5kIGBtYWtlYC4gSXQgd2lsbCBhdXRvbWF0aWNhbGx5OgogICAxLiBkb3dubG9hZCB0aGUgZG9jdW1lbnRhdGlvbiBpbiBIVE1MIGZvcm1hdAogICAyLiBjb21waWxlIHRoZSBbdHJhbnNmb3JtZXJdKCNrZXljbG9hay1vcGVuYXBpLXRyYW5zZm9ybWVyKQogICAzLiBjcmVhdGUgdGhlIEpTT04gZGVmaW5pdGlvbgogICA0LiBjcmVhdGUgdGhlIFlNTCBkZWZpbml0aW9uCjQuIENvbW1pdCB5b3VyIGNoYW5nZXMgYW5kIG9wZW4gYSBwdWxsIHJlcXVlc3QuCgojIyBOb3RhYmxlIENoYW5nZXMKCjIwMjEgRWFybHkgLSBSZW5hbWVkIG1hc3RlciBicmFuY2ggdG8gbWFpbi4gQW55b25lIGZldGNoaW5nIHRoZSBzY2hlbWEgZGlyZWN0bHkKZnJvbSB0aGUgYnJhbmNoIHNob3VsZCB1cGRhdGUgdGhlaXIgcmVmZXJlbmNlLgoKMjAyMCBNYXkgLSBBZGRlZCB0YWdzIHRvIG9wZXJhdGlvbnMuIFVzZXJzIG9mIE9wZW5BUEkgR2VuZXJhdG9yIGdlbmVyYXRlZApjbGllbnRzIHdpbGwgbmVlZCB0byBzd2FwIGZyb20gdXNpbmcgdGhlIGBEZWZhdWx0QXBpYCBjbGFzcyB0byBtdWx0aXBsZSBjbGFzc2VzCnN1Y2ggYXMgYFVzZXJzQXBpYCBvciBgQ2xpZW50c0FwaWAuCgojIyBFeGFtcGxlIEFwcAoKW1RoaXMgZXhhbXBsZV0oLi9leGFtcGxlX2FwcC8pIHVzZXMKW29wZW5hcGktZ2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKSB0byBidWlsZAphbiBBUEktY2xpZW50LiBUaGUgYXBwIGluIHRoZSBleGFtcGxlIGlzIHZlcnkgc2ltcGxlIGFuZCBvbmx5IGZldGNoZXMgYSBsaXN0IG9mCktleWNsb2FrLWNsaWVudHMuCgpgYGBiYXNoCiMgQ3JlYXRlIGEga2V5Y2xvYWsgaW5zdGFuY2UgdG8gcnVuIGFnYWluc3QKZG9ja2VyIGNvbnRhaW5lciBydW4gLS1ybSAtZSBLRVlDTE9BS19VU0VSPWFkbWluLXVzZXIgLWUgS0VZQ0xPQUtfUEFTU1dPUkQ9YWRtaW4tcGFzc3dvcmQgLXAgODA4MDo4MDgwIGRvY2tlci5pby9qYm9zcy9rZXljbG9hazoxMy4wLjAKIyBPcGVuIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC8gYW5kIHdhaXQgZm9yIGtleWNsb2FrIHRvIHN0YXJ0IHVwCgojIEluIGEgc2Vjb25kIHRlcm1pbmFsIHJ1bgpjZCBleGFtcGxlX2FwcApucG0gaW5zdGFsbApucG0gcnVuIGdlbmVyYXRlLWNsaWVudApucG0gcnVuIGNvbXBpbGUKbm9kZSBkaXN0L2luZGV4LmpzCiMgcHJpbnRzIG91dAojIFRoZSBkZWZhdWx0IGNsaWVudHM6CiMgICBhY2NvdW50CiMgICBhY2NvdW50LWNvbnNvbGUKIyAgIGFkbWluLWNsaQojICAgYnJva2VyCiMgICBtYXN0ZXItcmVhbG0KIyAgIHNlY3VyaXR5LWFkbWluLWNvbnNvbGUKYGBgCgpJbiBnZW5lcmFsLCBjbGllbnRzIGNhbiBiZSBnZW5lcmF0ZWQgYnkgcnVubmluZyBhIGNvbW1hbmQgc2ltaWxhciB0bzoKCmBgYGJhc2gKb3BlbmFwaS1nZW5lcmF0b3IgZ2VuZXJhdGUgLWkgJ2h0dHBzOi8vZ2l0aHViLmNvbS9jY291emVucy9rZXljbG9hay1vcGVuYXBpL3Jhdy9tYWluL2tleWNsb2FrLzIwLjAuMy5qc29uJyAtZyAndHlwZXNjcmlwdC1heGlvcycgLW8gJ3NyYy9rZXljbG9hay1jbGllbnQnCmBgYAoKb3IgdXNpbmcgZG9ja2VyLCBpZiB5b3UgY2FuJ3QgaW5zdGFsbCBgb3BlbmFwaS1nZW5lcmF0b3JgOgoKYGBgYmFzaApkb2NrZXIgcnVuIC0tcm0gLS11c2VyICQoaWQgLXUpOiQoaWQgLWcpIC12ICRQV0Q6L2xvY2FsIG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkgZ2VuZXJhdGUgLWkgJ2h0dHBzOi8vZ2l0aHViLmNvbS9jY291emVucy9rZXljbG9hay1vcGVuYXBpL3Jhdy9tYWluL2tleWNsb2FrLzIwLjAuMy5qc29uJyAtZyB0eXBlc2NyaXB0LWF4aW9zIC1vIC9sb2NhbC9zcmMva2V5Y2xvYWstY2xpZW50CmBgYAojIyBLZXljbG9hayBPcGVuQVBJIFRyYW5zZm9ybWVyCgpBbGwgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbnMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBwdWJsaXNoZWQgSFRNTCBkb2N1bWVudGF0aW9uLgpUaGlzIHRvb2wgdHJhbnNmb3JtcyB0aGUgSFRNTCBkb2N1bWVudGF0aW9uIGludG8gT3BlbkFQSSBkZWZpbml0aW9ucy4KCkhUTUwgb2YgdGhlIGRvY3VtZW50YXRpb24gaXMgaW5wdXR0ZWQgdGhyb3VnaCBgc3RkaW5gIGFuZCB0aGUgSlNPTiBvZiB0aGUKZGVmaW5pdGlvbiBpcyBvdXRwdXR0ZWQgdGhyb3VnaCBgc3Rkb3V0YC4KCiMjIFJlcXVpcmVtZW50cwoKQnVpbGRpbmcgUmVkIEhhdCBTaW5nbGUgU2lnbi1PbiBkZWZpbml0aW9ucyBvciByZWJ1aWxkaW5nIEtleWNsb2FrJ3MgZGVmaW5pdGlvbnMKcmVxdWlyZXM6CgotIGBtYWtlYAotIFtgUnVzdGBdKGh0dHBzOi8vd3d3LnJ1c3QtbGFuZy5vcmcvdG9vbHMvaW5zdGFsbCkKLSBbYHlxYF0oaHR0cHM6Ly9naXRodWIuY29tL21pa2VmYXJhaC95cS8pCgpCdWlsZGluZyB0aGUgdHJhbnNmb3JtZXIgcmVxdWlyZXMKW2BSdXN0YF0oaHR0cHM6Ly93d3cucnVzdC1sYW5nLm9yZy90b29scy9pbnN0YWxsKS4KCkJ1aWxkaW5nIHRoZSBleGFtcGxlIGFwcCByZXF1aXJlcyBgTm9kZWAgYW5kIGBKYXZhYC4KClJ1bm5pbmcgdGhlIGtleWNsb2FrIGluc3RhbmNlIHRoYXQgcGFpcnMgd2l0aCB0aGUgZXhhbXBsZSBhcHAgcmVxdWlyZXMgYERvY2tlcmAuCgojIyBMaWNlbnNpbmcKClRoZSBPcGVuQVBJIGRlZmluaXRpb25zIGFyZSBbQXBhY2hlIDIuMCBsaWNlbnNlZF0oLi9rZXljbG9hay9MSUNFTlNFLnR4dCkuCgpUaGUgdHJhbnNmb3JtZXIgaXMgW01JVCBsaWNlbnNlZF0oa2V5Y2xvYWstb3BlbmFwaS10cmFuc2Zvcm1lci9MSUNFTlNFKS4KClRoZSBleGFtcGxlIGFwcCBoYXMgYSBbQ0MwIHdhaXZlcl0oZXhhbXBsZV9hcHAvV0FJVkVSKSAoaGFzIGhhZCBpdHMgY29weXJpZ2h0CndhaXZlZCkuCg== readmeEtag: '"b3f1a7082b583e11c50e79884ecde04aa8673c96"' readmeLastModified: Thu, 29 Feb 2024 19:59:31 GMT repositoryId: 185045075 description: OpenAPI definitions for Keycloak's Admin API created: '2019-05-05T14:54:51Z' updated: '2025-12-07T15:37:40Z' language: Rust archived: false stars: 181 watchers: 8 forks: 67 owner: ccouzens logo: https://avatars.githubusercontent.com/u/241046?v=4 repoEtag: '"78dde2ca2ab397d5b608512e29d9c8bc4172c3e1c7dacf904af5cadf6305adbf"' repoLastModified: Sun, 07 Dec 2025 15:37:40 GMT foundInMaster: true category: Server Implementations id: e7c4d0adf91d49ed856cc5a453ccfdf0 - source: openapi3 tags repository: https://github.com/pace/bricks v3: true repositoryMetadata: base64Readme: >- IyBQQUNFIEJyaWNrcyAhW0RlcHJlY2F0ZWRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGVwcmVjYXRlZC1GRjAwMDApICFbR29sYW5nIENJXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2dvbGFuZy0wMEFERDgpCgohW10oYXJ0d29yay9QQUNFLUJyaWNrc19IZWFkZXJfTGlnaHRCYWNrZ3JvdW5kLnBuZykKCk9waW5pb25hdGVkIG1pY3Jvc2VydmljZSBraXQgdG8gaGVscCBkZXZlbG9wZXJzIHRvIGJ1aWxkIG1pY3Jvc2VydmljZXMgd2l0aCBnby4KCj4gWyFDQVVUSU9OXQo+ICMjIFByb2plY3QgU3RhdHVzOiBEZXByZWNhdGVkL0FyY2hpdmVkCj4KPiAhW0RlcHJlY2F0ZWRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGVwcmVjYXRlZC1GRjAwMDApICFbQXJjaGl2ZWRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvYXJjaGl2ZWQtMUVDQ0YwKQo+Cj4gKipBcyBvZiBKYW51YXJ5IDIwMjYsIHRoaXMgcHJvamVjdCBoYXMgcmVhY2hlZCBpdHMgZW5kLW9mLWxpZmUgYW5kIGlzIG5vIGxvbmdlciBiZWluZyBhY3RpdmVseSBkZXZlbG9wZWQuIFdlIGFyZSB1bmFibGUgdG8gcHJvdmlkZSBzdXBwb3J0LCBzZWN1cml0eSB1cGRhdGVzLCBvciBidWcgZml4ZXMuIERldmVsb3BlcnMgbG9va2luZyBmb3Igc2ltaWxhciBmdW5jdGlvbmFsaXR5IGFyZSBlbmNvdXJhZ2VkIHRvIHNlZWsgYWN0aXZlbHkgbWFpbnRhaW5lZCBhbHRlcm5hdGl2ZXMuKioKCiMjIE9waW5pb25zCgpBIHBhY2UvYnJpY2tzIG1pY3Jvc2VydmljZSBpczoKCiogYnVpbHQgYXMgYSAqKmRvY2tlciBjb250YWluZXIqKgoqIGRlcGxveWVkIGludG8gYSAqKmt1YmVybmV0ZXMgY2x1c3RlcioqCiAgKiBzdXBwb3J0IGZvciB0aGUgKip0ZXJtaW5hdGlvbiBsb2cqKgoqIGNvbmZpZ3VyZWQgdXNpbmcgKiplbnZpcm9ubWVudCB2YXJpYWJsZXMqKiAoW1RXRUxWRS1GQUNUT1IgQVBQXShodHRwczovLzEyZmFjdG9yLm5ldC8pKQoqIG1vbml0b3JlZCB1c2luZyAqKnByb21ldGhldXMqKgoqIHJlcG9ydHMgZXJyb3JzIHRvICoqc2VudHJ5KioKKiBzYW1wbGVzIHRyYWNlcyB0byAqKnNlbnRyeSoqCiogKipsb2dzKiogdG8gc3Rkb3V0IHVzaW5nIGpzb24gZGVwbG95ZWQgKiprdWJlcm5ldGVzKiogb3RoZXJ3aXNlIGh1bWFuIHJlYWRhYmxlCiogb2ZmZXJzICoqaGVhbHRoKiogZW5kcG9pbnRzCiogYnVpbHQtaW4gcmVkYWN0aW9uIG9mIEpXVHMgYW5kIGNhcmQgc2NoZW1lcwoqIGNvbm5lY3RzIHRvIGJhY2tlbmQgc2VydmljZXMKICAqICoqcG9zdGdyZXMqKiAobG9nZ2luZywgbWV0cmljcywgdHJhY2luZywgaGVhbHRoKQogICogKipyZWRpcyoqIChsb2dnaW5nLCBtZXRyaWNzLCB0cmFjaW5nLCBoZWFsdGgpCiAgKiAqKnF1ZXVlKiogdmlhIHJlZGlzIChsb2dnaW5nLCBtZXRyaWNzLCB0cmFjaW5nLCBoZWFsdGgpCiAgKiAqKmh0dHAqKiAobG9nZ2luZywgbWV0cmljcywgdHJhY2luZywgcmV0cmllcykKICAqICoqczMqKiB2aWEgaHR0cCAobG9nZ2luZywgbWV0cmljcywgdHJhY2luZywgaGVhbHRoKQogICogKipjb3VjaGRiKiogdmlhIGh0dHAgKGxvZ2dpbmcsIG1ldHJpY3MsIHRyYWNpbmcsIHJldHJpZXMsIGhlYWx0aCkKICAqICoqZ3JwYyoqIChsb2dnaW5nLCBtZXRyaWNzLCB0cmFjaW5nLCByZXRyaWVzKQoqIHByb3ZpZGVzIHR3byBjb21tYW5kcyAqKmNvbnRyb2wqKiBhbmQgKipkYWVtb24qKgoqIHByb3ZpZGVzIGEgKipSRVNUZnVsKiogQVBJCiAgKiBjb2RlIGlzIGdlbmVyYXRlZCBmcm9tIHRoZSAqKk9wZW5BUEl2MyoqIHNwZWMKICAqIGF1dGhlbnRpY2F0ZWQgdmlhICoqT0F1dGgyKioKICAqIGVuY29kZWQgdXNpbmcgKipbanNvbjphcGldKGh0dHBzOi8vanNvbmFwaS5vcmcvKSoqCiAgKiB0aGF0IHN1cHBvcnRzICoqbG9nZ2luZyoqLCAqKnRyYWNpbmcqKiBhbmQgKiptZXRyaWNzKioKKiBvcHRpb25hbGx5IHByb3ZpZGVzIGEgKipHUlBDKiogQVBJCiAgKiBjb2RlIGlzIGdlbmVyYXRlZCBmcm9tIHRoZSAqKnByb3RvYyoqIHNwZWMKICAqIHRoYXQgc3VwcG9ydHMgKipsb2dnaW5nKiosICoqdHJhY2luZyoqIGFuZCAqKm1ldHJpY3MqKgoKIyMgSW5zdGFsbAoKICAgIGdvIGdldCBnaXRodWIuY29tL3BhY2UvYnJpY2tzL2NtZC9wYgoKIyMgVXNhZ2UKCiAgICBwYiAtaAoKIyMgQ29udHJpYnV0aW5nCiAKUmVhZCBvdXIgW2NvbnRyaWJ1dG9ycyBndWlkZV0oQ09OVFJJQlVUSU5HLm1kKS4KCiMjIFJlcXVpcmVtZW50cwoKKiBBIHdvcmtpbmcgZ28gaW5zdGFsbGF0aW9uCiogQSB3b3JraW5nIGdpdCBpbnN0YWxsYXRpb24KCiMjIFRlc3RpbmcKCiogVXNlIGBtYWtlIHRlc3RgIHRvIHRlc3Qgd2l0aG91dCBkZXBlbmRlbmNpZXMKKiBVc2UgYGRvY2tlci1jb21wb3NlIHJ1biB0ZXN0c2VydmVyIG1ha2UgaW50ZWdyYXRpb25gIHRvIHRlc3Qgd2l0aCBkZXBlbmRlbmNpZXMKKiBVc2UgYG1ha2UgdGVzdHNlcnZlcmAgdG8gc3RhcnQgYSB0ZXN0c2VydmVyIHRoYXQgd2lsbCBiZSBzdGFydGVkIHdpdGggZGVwZW5kZW5jaWVzLiBJbiBvcmRlciB0byB1cGRhdGUgdGhlIHNlcnZlciBvbmUgbmVlZCB0byBgZG9ja2VyLWNvbXBvc2UgcmVzdGFydCB0ZXN0c2VydmVyYAoKIyMgRW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgcGIgY29tbWFuZAoKfCBWYXJpYWJsZSB8IERlc2NyaXB0aW9uIHwKfC18LXwKfCBgUEFDRV9CUklDS1NfRURJVE9SYCB8wqAgVGhlIHBhdGggdG8gdGhlIGVkaXRvciB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBvcGVuaW5nIGEgcHJvamVjdC4gRGVmYXVsdHMgdG8gYCRFRElUT1JgLiB8CnwgYFBBQ0VfQlJJQ0tTX1BBVEhgIHwgVGhlIHBhdGggd2hlcmUgbmV3IHByb2plY3Qgc2hvdWxkIGJlIGNyZWF0ZWQuIERlZmF1bHRzIHRvIGAkSE9NRS9QQUNFYC4gfAo= readmeEtag: '"4058f3e44ebf778879f5ca87c614cd80341a633c"' readmeLastModified: Wed, 14 Jan 2026 10:38:05 GMT repositoryId: 166778187 description: A standard library for microservices. created: '2019-01-21T08:41:32Z' updated: '2026-01-28T15:13:40Z' language: Go archived: false stars: 177 watchers: 8 forks: 20 owner: pace logo: https://avatars.githubusercontent.com/u/16001479?v=4 license: MIT repoEtag: '"ff95f44cc67fbc04a5ed3af8b2bce5e7c3ede1f337f5d57fdce321c25244c49d"' repoLastModified: Wed, 28 Jan 2026 15:13:40 GMT foundInMaster: true category: Server id: e6dd06a50e0916bde709fbfdeae306a5 - source: openapi3 tags repository: https://github.com/lezhnev74/openapi-psr7-validator v3: true repositoryMetadata: base64Readme: >- WyFbTGF0ZXN0IFN0YWJsZSBWZXJzaW9uXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL2xlemhuZXY3NC9vcGVuYXBpLXBzcjctdmFsaWRhdG9yL3Yvc3RhYmxlKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2xlemhuZXY3NC9vcGVuYXBpLXBzcjctdmFsaWRhdG9yKQpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9sZXpobmV2NzQvb3BlbmFwaS1wc3I3LXZhbGlkYXRvci5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9sZXpobmV2NzQvb3BlbmFwaS1wc3I3LXZhbGlkYXRvcikKWyFbTGljZW5zZV0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9sZXpobmV2NzQvb3BlbmFwaS1wc3I3LXZhbGlkYXRvci9saWNlbnNlKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2xlemhuZXY3NC9vcGVuYXBpLXBzcjctdmFsaWRhdG9yKQohW2NvbnRyaWJ1dGlvbnMgd2VsY29tZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb250cmlidXRpb25zLXdlbGNvbWUtYnJpZ2h0Z3JlZW4uc3ZnKQoKIyBOT1RJQ0UgLSBUSEUgUEFDS0FHRSBIQVMgQkVFTiBDT05UUklCVVRFRCBUTyBUSEUgUEhQIExFQUdVRQoKR28gdG8gaHR0cHM6Ly9naXRodWIuY29tL3RoZXBocGxlYWd1ZS9vcGVuYXBpLXBzcjctdmFsaWRhdG9yCgpUaGlzIHBhY2thZ2UgaXMgaGVyZSBmb3IgZXhpc3RpbmcgdXNlcnMgb25seS4KCiMgT3BlbkFQSSBQU1ItNyBNZXNzYWdlIChIVFRQIFJlcXVlc3QvUmVzcG9uc2UpIFZhbGlkYXRvcgpUaGlzIHBhY2thZ2UgY2FuIHZhbGlkYXRlIFBTUi03IG1lc3NhZ2VzIGFnYWluc3QgT3BlbkFQSSAoMy4wLngpIHNwZWNpZmljYXRpb25zIApleHByZXNzZWQgaW4gWUFNTCBvciBKU09OLiAKCiFbXShpbWFnZS5qcGcpCgojIyBJbnN0YWxsYXRpb24KYGBgCmNvbXBvc2VyIHJlcXVpcmUgbGV6aG5ldjc0L29wZW5hcGktcHNyNy12YWxpZGF0b3IKYGBgCgojIyBPcGVuQVBJIChPQVMpIFRlcm1zClRoZXJlIGFyZSBzb21lIHNwZWNpZmljIHRlcm1zIHRoYXQgYXJlIHVzZWQgaW4gdGhlIHBhY2thZ2UuIFRoZXNlIHRlcm1zIGNvbWUgCmZyb20gT3BlbkFQSToKLSBgc3BlY2lmaWNhdGlvbmAgLSBhbiBPcGVuQVBJIGRvY3VtZW50IGRlc2NyaWJpbmcgYW4gQVBJLCBleHByZXNzZWQgaW4gSlNPTiBvciBZQU1MIGZpbGUKLSBgZGF0YWAgLSBhY3R1YWwgdGhpbmcgdGhhdCB3ZSB2YWxpZGF0ZSBhZ2FpbnN0IGEgc3BlY2lmaWNhdGlvbiwgaW5jbHVkaW5nIGJvZHkgYW5kIG1ldGFkYXRhCi0gYHNjaGVtYWAgLSB0aGUgcGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbiB0aGF0IGRlc2NyaWJlcyB0aGUgYm9keSBvZiB0aGUgcmVxdWVzdCAvIHJlc3BvbnNlCi0gYGtleXdvcmRgIC0gcHJvcGVydGllcyB0aGF0IGFyZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSBpbnN0YW5jZSBhcmUgY2FsbGVkIGtleQp3b3Jkcywgb3Igc2NoZW1hIGtleXdvcmRzCi0gYHBhdGhgIC0gYSByZWxhdGl2ZSBwYXRoIHRvIGFuIGluZGl2aWR1YWwgZW5kcG9pbnQKLSBgb3BlcmF0aW9uYCAtIGEgbWV0aG9kIHRoYXQgd2UgYXBwbHkgb24gdGhlIHBhdGggKGxpa2UgYGdldCAvcGFzc3dvcmRgKQotIGByZXNwb25zZWAgLSBkZXNjcmliZWQgcmVzcG9uc2UgKGluY2x1ZGVzIHN0YXR1cyBjb2RlLCBjb250ZW50IHR5cGVzIGV0YykKCgojIyBIb3cgVG8gVmFsaWRhdGUKCiMjIyBTZXJ2ZXJSZXF1ZXN0IE1lc3NhZ2UKWW91IGNhbiB2YWxpZGF0ZSBgXFBzclxIdHRwXE1lc3NhZ2VcU2VydmVyUmVxdWVzdEludGVyZmFjZWAgaW5zdGFuY2UgbGlrZSB0aGlzOgoKYGBgcGhwCiR5YW1sRmlsZSA9ICJhcGkueWFtbCI7CiRqc29uRmlsZSA9ICJhcGkuanNvbiI7CgokdmFsaWRhdG9yID0gKG5ldyBcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyKS0+ZnJvbVlhbWxGaWxlKCR5YW1sRmlsZSktPmdldFNlcnZlclJlcXVlc3RWYWxpZGF0b3IoKTsKI29yCiR2YWxpZGF0b3IgPSAobmV3IFxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XFZhbGlkYXRvckJ1aWxkZXIpLT5mcm9tWWFtbChmaWxlX2dldF9jb250ZW50cygkeWFtbEZpbGUpKS0+Z2V0U2VydmVyUmVxdWVzdFZhbGlkYXRvcigpOwojb3IKJHZhbGlkYXRvciA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdG9yQnVpbGRlciktPmZyb21Kc29uKGZpbGVfZ2V0X2NvbnRlbnRzKCRqc29uRmlsZSkpLT5nZXRTZXJ2ZXJSZXF1ZXN0VmFsaWRhdG9yKCk7CiNvcgokdmFsaWRhdG9yID0gKG5ldyBcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyKS0+ZnJvbUpzb25GaWxlKCRqc29uRmlsZSktPmdldFNlcnZlclJlcXVlc3RWYWxpZGF0b3IoKTsKI29yCiRzY2hlbWEgPSBuZXcgXGNlYmVcb3BlbmFwaVxzcGVjXE9wZW5BcGkoKTsgLy8gZ2VuZXJhdGUgc2NoZW1hIG9iamVjdCBieSBoYW5kCiR2YWxpZGF0b3IgPSAobmV3IFxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XFZhbGlkYXRvckJ1aWxkZXIpLT5mcm9tU2NoZW1hKCRzY2hlbWEpLT5nZXRTZXJ2ZXJSZXF1ZXN0VmFsaWRhdG9yKCk7CgokbWF0Y2ggPSAkdmFsaWRhdG9yLT52YWxpZGF0ZSgkcmVxdWVzdCk7CmBgYAoKQXMgYSByZXN1bHQgeW91IHdvdWxkIGdldCBhbmQgYE9wZXJhdGlvbkFkZHJlc3MgJG1hdGNoYCB3aGljaCBoYXMgbWF0Y2hlZCB0aGUgZ2l2ZW4gcmVxdWVzdC4gSWYgeW91IGFscmVhZHkga25vdwp0aGUgb3BlcmF0aW9uIHdoaWNoIHNob3VsZCBtYXRjaCB5b3VyIHJlcXVlc3QgKGkuZSB5b3UgaGF2ZSByb3V0aW5nIGluIHlvdXIgcHJvamVjdCksIHlvdSBjYW4gdXNlIApgUm91dGVyUmVxdWVzdFZhbGlkYXRvcmAKCmBgYHBocAokYWRkcmVzcyA9IG5ldyBcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xPcGVyYXRpb25BZGRyZXNzKCcvc29tZS9vcGVyYXRpb24nLCAncG9zdCcpOwoKJHZhbGlkYXRvciA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdG9yQnVpbGRlciktPmZyb21TY2hlbWEoJHNjaGVtYSktPmdldFJvdXRlZFJlcXVlc3RWYWxpZGF0b3IoKTsKCiR2YWxpZGF0b3ItPnZhbGlkYXRlKCRhZGRyZXNzLCAkcmVxdWVzdCk7CmBgYAoKVGhpcyB3b3VsZCBzaW1wbGlmeSB2YWxpZGF0aW9uIGEgbG90IGFuZCBnaXZlIHlvdSBtb3JlIHBlcmZvcm1hbmNlLgoKIyMjIFJlcXVlc3QgTWVzc2FnZQpZb3UgY2FuIHZhbGlkYXRlIGBcUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlYCBpbnN0YW5jZSBsaWtlIHRoaXM6CgpgYGBwaHAKJHlhbWxGaWxlID0gImFwaS55YW1sIjsKJGpzb25GaWxlID0gImFwaS5qc29uIjsKCiR2YWxpZGF0b3IgPSAobmV3IFxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XFZhbGlkYXRvckJ1aWxkZXIpLT5mcm9tWWFtbEZpbGUoJHlhbWxGaWxlKS0+Z2V0UmVxdWVzdFZhbGlkYXRvcigpOwojb3IKJHZhbGlkYXRvciA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdG9yQnVpbGRlciktPmZyb21ZYW1sKGZpbGVfZ2V0X2NvbnRlbnRzKCR5YW1sRmlsZSkpLT5nZXRSZXF1ZXN0VmFsaWRhdG9yKCk7CiNvcgokdmFsaWRhdG9yID0gKG5ldyBcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xWYWxpZGF0b3JCdWlsZGVyKS0+ZnJvbUpzb24oZmlsZV9nZXRfY29udGVudHMoJGpzb25GaWxlKSktPmdldFJlcXVlc3RWYWxpZGF0b3IoKTsKI29yCiR2YWxpZGF0b3IgPSAobmV3IFxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XFZhbGlkYXRvckJ1aWxkZXIpLT5mcm9tSnNvbkZpbGUoJGpzb25GaWxlKS0+Z2V0UmVxdWVzdFZhbGlkYXRvcigpOwojb3IKJHNjaGVtYSA9IG5ldyBcY2ViZVxvcGVuYXBpXHNwZWNcT3BlbkFwaSgpOyAvLyBnZW5lcmF0ZSBzY2hlbWEgb2JqZWN0IGJ5IGhhbmQKJHZhbGlkYXRvciA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdG9yQnVpbGRlciktPmZyb21TY2hlbWEoJHNjaGVtYSktPmdldFJlcXVlc3RWYWxpZGF0b3IoKTsKCiRtYXRjaCA9ICR2YWxpZGF0b3ItPnZhbGlkYXRlKCRyZXF1ZXN0KTsKYGBgCgojIyMgUmVzcG9uc2UgTWVzc2FnZQpWYWxpZGF0aW9uIG9mIGBcUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZWAgaXMgYSBiaXQgbW9yZSBjb21wbGljYXRlZAouIEJlY2F1c2UgeW91IG5lZWQgbm90IG9ubHkgWUFNTCBmaWxlIGFuZCBSZXNwb25zZSBpdHNlbGYsIGJ1dCBhbHNvIHlvdSBuZWVkIAp0byBrbm93IHdoaWNoIG9wZXJhdGlvbiB0aGlzIHJlc3BvbnNlIGJlbG9uZ3MgdG8gKGluIHRlcm1zIG9mIE9wZW5BUEkpLgoKRXhhbXBsZToKCmBgYHBocAokeWFtbEZpbGUgPSAiYXBpLnlhbWwiOwokanNvbkZpbGUgPSAiYXBpLmpzb24iOwoKJHZhbGlkYXRvciA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdG9yQnVpbGRlciktPmZyb21ZYW1sRmlsZSgkeWFtbEZpbGUpLT5nZXRSZXNwb25zZVZhbGlkYXRvcigpOwojb3IKJHZhbGlkYXRvciA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdG9yQnVpbGRlciktPmZyb21ZYW1sKGZpbGVfZ2V0X2NvbnRlbnRzKCR5YW1sRmlsZSkpLT5nZXRSZXNwb25zZVZhbGlkYXRvcigpOwojb3IKJHZhbGlkYXRvciA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdG9yQnVpbGRlciktPmZyb21Kc29uKGZpbGVfZ2V0X2NvbnRlbnRzKCRqc29uRmlsZSkpLT5nZXRSZXNwb25zZVZhbGlkYXRvcigpOwojb3IKJHZhbGlkYXRvciA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdG9yQnVpbGRlciktPmZyb21Kc29uRmlsZSgkanNvbkZpbGUpLT5nZXRSZXNwb25zZVZhbGlkYXRvcigpOwojb3IKJHNjaGVtYSA9IG5ldyBcY2ViZVxvcGVuYXBpXHNwZWNcT3BlbkFwaSgpOyAvLyBnZW5lcmF0ZSBzY2hlbWEgb2JqZWN0IGJ5IGhhbmQKJHZhbGlkYXRvciA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdG9yQnVpbGRlciktPmZyb21TY2hlbWEoJHNjaGVtYSktPmdldFJlc3BvbnNlVmFsaWRhdG9yKCk7Cgokb3BlcmF0aW9uID0gbmV3IFxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XE9wZXJhdGlvbkFkZHJlc3MoJy9wYXNzd29yZC9nZW4nLCAnZ2V0JykgOwoKJHZhbGlkYXRvci0+dmFsaWRhdGUoJG9wZXJhdGlvbiwgJHJlcXVlc3QpOwpgYGAKCiMjIyBSZXVzZSBTY2hlbWEgQWZ0ZXIgVmFsaWRhdGlvbgoKYFxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XFZhbGlkYXRvckJ1aWxkZXJgIHJlYWRzIGFuZCBjb21waWxlcyBzY2hlbWEgaW4gbWVtb3J5IGFzIGluc3RhbmNlIG9mIGBcY2ViZVxvcGVuYXBpXHNwZWNcT3BlbkFwaWAuIFZhbGlkYXRvcnMgdXNlIHRoaXMgaW5zdGFuY2UgdG8gcGVyZm9ybSB2YWxpZGF0aW9uIGxvZ2ljLiBZb3UgY2FuIHJldXNlIHRoaXMgaW5zdGFuY2UgYWZ0ZXIgdGhlIHZhbGlkYXRpb24gbGlrZSB0aGlzOgoKYGBgcGhwCiR2YWxpZGF0b3IgPSAobmV3IFxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XFZhbGlkYXRvckJ1aWxkZXIpLT5mcm9tWWFtbEZpbGUoJHlhbWxGaWxlKS0+Z2V0U2VydmVyUmVxdWVzdFZhbGlkYXRvcigpOwojIG9yCiR2YWxpZGF0b3IgPSAobmV3IFxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XFZhbGlkYXRvckJ1aWxkZXIpLT5mcm9tWWFtbEZpbGUoJHlhbWxGaWxlKS0+Z2V0UmVzcG9uc2VWYWxpZGF0b3IoKTsKCi8qKiBAdmFyIFxjZWJlXG9wZW5hcGlcc3BlY1xPcGVuQXBpICovCiRvcGVuQXBpID0gJHZhbGlkYXRvci0+Z2V0U2NoZW1hKCk7CmBgYAoKIyMjIFJlcXVlc3QgTWVzc2FnZQpgXFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZWAgdmFsaWRhdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQuIAoKIyMjIFBTUi0xNSBNaWRkbGV3YXJlClBTUi0xNSBtaWRkbGV3YXJlIGNhbiBiZSB1c2VkIGxpa2UgdGhpczoKCmBgYHBocAokeWFtbEZpbGUgPSAnYXBpLnlhbWwnOwokanNvbkZpbGUgPSAnYXBpLmpzb24nOwoKJHBzcjE1TWlkZGxld2FyZSA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjE1XFZhbGlkYXRpb25NaWRkbGV3YXJlQnVpbGRlciktPmZyb21ZYW1sRmlsZSgkeWFtbEZpbGUpLT5nZXRWYWxpZGF0aW9uTWlkZGxld2FyZSgpOwojb3IKJHBzcjE1TWlkZGxld2FyZSA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjE1XFZhbGlkYXRpb25NaWRkbGV3YXJlQnVpbGRlciktPmZyb21ZYW1sKGZpbGVfZ2V0X2NvbnRlbnRzKCR5YW1sRmlsZSkpLT5nZXRWYWxpZGF0aW9uTWlkZGxld2FyZSgpOwojb3IKJHBzcjE1TWlkZGxld2FyZSA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjE1XFZhbGlkYXRpb25NaWRkbGV3YXJlQnVpbGRlciktPmZyb21Kc29uRmlsZSgkanNvbkZpbGUpLT5nZXRWYWxpZGF0aW9uTWlkZGxld2FyZSgpOwojb3IKJHBzcjE1TWlkZGxld2FyZSA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjE1XFZhbGlkYXRpb25NaWRkbGV3YXJlQnVpbGRlciktPmZyb21Kc29uKGZpbGVfZ2V0X2NvbnRlbnRzKCRqc29uRmlsZSkpLT5nZXRWYWxpZGF0aW9uTWlkZGxld2FyZSgpOwojb3IKJHNjaGVtYSA9IG5ldyBcY2ViZVxvcGVuYXBpXHNwZWNcT3BlbkFwaSgpOyAvLyBnZW5lcmF0ZSBzY2hlbWEgb2JqZWN0IGJ5IGhhbmQKJHZhbGlkYXRvciA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdGlvbk1pZGRsZXdhcmVCdWlsZGVyKS0+ZnJvbVNjaGVtYSgkc2NoZW1hKS0+Z2V0VmFsaWRhdGlvbk1pZGRsZXdhcmUoKTsKYGBgCgojIyMgU2xpbUZyYW1ld29yayBNaWRkbGV3YXJlClNsaW0gZnJhbWV3b3JrIHVzZXMgc2xpZ2h0bHkgZGlmZmVyZW50IG1pZGRsZXdhcmUgaW50ZXJmYWNlLCBzbyBoZXJlIGlzIGFuIAphZGFwdGVyIHdoaWNoIHlvdSBjYW4gdXNlIGxpa2UgdGhpczoKCmBgYHBocAokeWFtbEZpbGUgPSAnYXBpLnlhbWwnOwokanNvbkZpbGUgPSAnYXBpLmpzb24nOwoKJHBzcjE1TWlkZGxld2FyZSA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjE1XFZhbGlkYXRpb25NaWRkbGV3YXJlQnVpbGRlciktPmZyb21ZYW1sRmlsZSgkeWFtbEZpbGUpLT5nZXRWYWxpZGF0aW9uTWlkZGxld2FyZSgpOwojb3IKJHBzcjE1TWlkZGxld2FyZSA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjE1XFZhbGlkYXRpb25NaWRkbGV3YXJlQnVpbGRlciktPmZyb21ZYW1sKGZpbGVfZ2V0X2NvbnRlbnRzKCR5YW1sRmlsZSkpLT5nZXRWYWxpZGF0aW9uTWlkZGxld2FyZSgpOwojb3IKJHBzcjE1TWlkZGxld2FyZSA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjE1XFZhbGlkYXRpb25NaWRkbGV3YXJlQnVpbGRlciktPmZyb21Kc29uRmlsZSgkanNvbkZpbGUpLT5nZXRWYWxpZGF0aW9uTWlkZGxld2FyZSgpOwojb3IKJHBzcjE1TWlkZGxld2FyZSA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjE1XFZhbGlkYXRpb25NaWRkbGV3YXJlQnVpbGRlciktPmZyb21Kc29uKGZpbGVfZ2V0X2NvbnRlbnRzKCRqc29uRmlsZSkpLT5nZXRWYWxpZGF0aW9uTWlkZGxld2FyZSgpOwojb3IKJHNjaGVtYSA9IG5ldyBcY2ViZVxvcGVuYXBpXHNwZWNcT3BlbkFwaSgpOyAvLyBnZW5lcmF0ZSBzY2hlbWEgb2JqZWN0IGJ5IGhhbmQKJHZhbGlkYXRvciA9IChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcVmFsaWRhdGlvbk1pZGRsZXdhcmVCdWlsZGVyKS0+ZnJvbVNjaGVtYSgkc2NoZW1hKS0+Z2V0VmFsaWRhdGlvbk1pZGRsZXdhcmUoKTsKCiRzbGltTWlkZGxld2FyZSA9IG5ldyBcT3BlbkFQSVZhbGlkYXRpb25cUFNSMTVcU2xpbUFkYXB0ZXIoJHBzcjE1TWlkZGxld2FyZSk7CgovKiogQHZhciBcU2xpbVxBcHAgJGFwcCAqLwokYXBwLT5hZGQoJHNsaW1NaWRkbGV3YXJlKTsKYGBgCgojIyMgQ2FjaGluZyBMYXllciAvIFBTUi02IFN1cHBvcnQKUFNSLTcgVmFsaWRhdG9yIGhhcyBhIGJ1aWx0LWluIGNhY2hpbmcgbGF5ZXIgKGJhc2VkIG9uIFtQU1ItNl0oaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci02LykgaW50ZXJmYWNlcykgd2hpY2ggc2F2ZXMgdGltZSBvbiBwYXJzaW5nIE9wZW5BUEkgc3BlY3MuIEl0IGlzIG9wdGlvbmFsLgpZb3UgZW5hYmxlIGNhY2hpbmcgaWYgeW91IHBhc3MgYSBjb25maWd1cmVkIENhY2hlIFBvb2wgT2JqZWN0IHRvIHRoZSBzdGF0aWMgY29uc3RydWN0b3IgbGlrZSB0aGlzOgpgYGBwaHAKLy8gQ29uZmlndXJlIGEgUFNSLTYgQ2FjaGUgUG9vbAokY2FjaGVQb29sID0gbmV3IEFycmF5Q2FjaGVQb29sKCk7CgovLyBQYXNzIGl0IGFzIGEgMm5kIGFyZ3VtZW50CiR2YWxpZGF0b3IgPSAobmV3IFxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XFZhbGlkYXRvckJ1aWxkZXIpCiAgICAtPmZyb21ZYW1sRmlsZSgkeWFtbEZpbGUpCiAgICAtPnNldENhY2hlKCRjYWNoZVBvb2wpCiAgICAtPmdldFJlc3BvbnNlVmFsaWRhdG9yKCk7CiMgb3IKXE9wZW5BUElWYWxpZGF0aW9uXFBTUjE1XFZhbGlkYXRpb25NaWRkbGV3YXJlOjpmcm9tWWFtbEZpbGUoJHlhbWxGaWxlLCAkY2FjaGVQb29sKTsKYGBgCgpZb3UgY2FuIHVzZSBgLT5zZXRDYWNoZSgkcG9vbCwgJHR0bClgIGNhbGwgZm9yIGJvdGggUFNSLTcgYW5kIFBTUi0xNSBidWlsZGVyIGluIG9yZGVyIHRvIHNldCAKW3Byb3BlciBleHBpcmF0aW9uIHR0bCBpbiBzZWNvbmRzIChvciBleHBsaWNpdCBgbnVsbGApXShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTYvI2RlZmluaXRpb25zKQoKSWYgeW91IHdhbnQgdGFrZSBjb250cm9sIG92ZXIgdGhlIGNhY2hlIGtleSBmb3Igc2NoZW1hIGl0ZW0sIG9yIHlvdXIgY2FjaGUgZG9lcyBub3Qgc3VwcG9ydCBjYWNoZSBrZXkgZ2VuZXJhdGlvbiBieSBpdHNlbGYKeW91IGNhbiBgLT5vdmVycmlkZUNhY2hlS2V5KCdteV9jdXN0b21fa2V5JylgIHRvIGVuc3VyZSBjYWNoZSB1c2VzIGtleSB5b3Ugd2FudC4KCiMjIyBTdGFuZGFsb25lIE9wZW5BUEkgVmFsaWRhdG9yClRoZSBwYWNrYWdlIGNvbnRhaW5zIGEgc3RhbmRhbG9uZSB2YWxpZGF0b3Igd2hpY2ggY2FuIHZhbGlkYXRlIGFueSBkYXRhIAphZ2FpbnN0IGFuIE9wZW5BUEkgc2NoZW1hIGxpa2UgdGhpczoKCmBgYHBocAokc3BlYyA9IDw8PFNQRUMKc2NoZW1hOgogIHR5cGU6IHN0cmluZwogIGVudW06CiAgLSBhCiAgLSBiClNQRUM7CiRkYXRhID0gImMiOwoKJHNwZWMgICA9IGNlYmVcb3BlbmFwaVxSZWFkZXI6OnJlYWRGcm9tWWFtbCgkc3BlYyk7CiMgKG9wdGlvbmFsKSByZWZlcmVuY2UgcmVzb2x2aW5nCiRzcGVjLT5yZXNvbHZlUmVmZXJlbmNlcyhuZXcgUmVmZXJlbmNlQ29udGV4dCgkc3BlYywgIi8iKSk7CiRzY2hlbWEgPSBuZXcgY2ViZVxvcGVuYXBpXHNwZWNcU2NoZW1hKCRzcGVjLT5zY2hlbWEpOwoKdHJ5IHsKICAgIChuZXcgXE9wZW5BUElWYWxpZGF0aW9uXFNjaGVtYVxTY2hlbWFWYWxpZGF0b3IoKSktPnZhbGlkYXRlKCRkYXRhLCAkc2NoZW1hKTsKfSBjYXRjaChcT3BlbkFQSVZhbGlkYXRpb25cU2NoZW1hXEV4Y2VwdGlvblxLZXl3b3JkTWlzbWF0Y2ggJGUpIHsKICAgIC8vIHlvdSBjYW4gZXZhbHVhdGUgZmFpbHVyZSBkZXRhaWxzCiAgICAvLyAkZS0+a2V5d29yZCgpID09ICJlbnVtIgogICAgLy8gJGUtPmRhdGEoKSA9PSAiYyIKICAgIC8vICRlLT5kYXRhQnJlYWRDcnVtYigpLT5idWlsZENoYWluKCkgLS0gb25seSBmb3IgbmVzdGVkIGRhdGEKfQpgYGAKCiMjIEN1c3RvbSBUeXBlIEZvcm1hdHMKQXMgeW91IGtub3csIE9wZW5BUEkgYWxsb3dzIHlvdSB0byBhZGQgZm9ybWF0cyB0byB0eXBlczoKCmBgYHlhbWwKc2NoZW1hOgogIHR5cGU6IHN0cmluZwogIGZvcm1hdDogYmluYXJ5CmBgYAoKVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGEgYnVuY2ggb2YgYnVpbHQtaW4gZm9ybWF0IHZhbGlkYXRvcnM6Ci0gYHN0cmluZ2AgdHlwZToKICAgIC0gYGJ5dGVgCiAgICAtIGBkYXRlYAogICAgLSBgZGF0ZS10aW1lYAogICAgLSBgZW1haWxgCiAgICAtIGBob3N0bmFtZWAKICAgIC0gYGlwdjRgCiAgICAtIGBpcHY2YAogICAgLSBgdXJpYAogICAgLSBgdXVpZGAgKHV1aWQ0KQotIGBudW1iZXJgIHR5cGUKICAgIC0gYGZsb2F0YAogICAgLSBgZG91YmxlYAoKWW91IGNhbiBhbHNvIGFkZCB5b3VyIG93biBmb3JtYXRzLiBMaWtlIHRoaXM6CmBgYHBocAojIEEgZm9ybWF0IHZhbGlkYXRvciBtdXN0IGJlIGEgY2FsbGFibGUKIyBJdCBtdXN0IHJldHVybiBib29sIHZhbHVlICh0cnVlIGlmIGZvcm1hdCBtYXRjaGVkIHRoZSBkYXRhLCBmYWxzZSBvdGhlcndpc2UpCgojIEEgY2FsbGFibGUgY2xhc3M6CiRjdXN0b21Gb3JtYXQgPSBuZXcgY2xhc3MoKQp7CiAgICBmdW5jdGlvbiBfX2ludm9rZSgkdmFsdWUpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR2YWx1ZSA9PT0gImdvb2QgdmFsdWUiOwogICAgfQp9OwoKIyBPciBqdXN0IGEgY2xvc3VyZToKJGN1c3RvbUZvcm1hdCA9IGZ1bmN0aW9uICgkdmFsdWUpOiBib29sIHsKICAgIHJldHVybiAkdmFsdWUgPT09ICJnb29kIHZhbHVlIjsKfTsKCiMgUmVnaXN0ZXIgeW91ciBjYWxsYWJsZSBsaWtlIHRoaXMgYmVmb3JlIHZhbGlkYXRpbmcgeW91ciBkYXRhClxPcGVuQVBJVmFsaWRhdGlvblxTY2hlbWFcVHlwZUZvcm1hdHNcRm9ybWF0c0NvbnRhaW5lcjo6cmVnaXN0ZXJGb3JtYXQoJ3N0cmluZycsICdjdXN0b20nLCAkY3VzdG9tRm9ybWF0KTsKYGBgCgojIyBFeGNlcHRpb25zClRoZSBwYWNrYWdlIHRocm93cyBhIGxpc3Qgb2YgdmFyaW91cyBleGNlcHRpb25zIHdoaWNoIHlvdSBjYW4gY2F0Y2ggYW5kIGhhbmRsZS4gVGhlcmUgYXJlIHNvbWUgb2YgdGhlbToKLSBTY2hlbWEgcmVsYXRlZDoKICAgIC0gYFxPcGVuQVBJVmFsaWRhdGlvblxTY2hlbWFcRXhjZXB0aW9uXEtleXdvcmRNaXNtYXRjaGAgLSBJbmRpY2F0ZXMgdGhhdCBkYXRhIHdhcyBub3QgbWF0Y2hlZCBhZ2FpbnN0IGEgc2NoZW1hJ3Mga2V5d29yZAogICAgICAgIC0gYFxPcGVuQVBJVmFsaWRhdGlvblxTY2hlbWFcRXhjZXB0aW9uXFR5cGVNaXNtYXRjaGAgLSBWYWxpZGF0aW9uIGZvciBgdHlwZWAga2V5d29yZCBmYWlsZWQgYWdhaW5zdCBhIGdpdmVuIGRhdGEuIEZvciBleGFtcGxlIGB0eXBlOnN0cmluZ2AgYW5kIHZhbHVlIGlzIGAxMmAKICAgICAgICAtIGBcT3BlbkFQSVZhbGlkYXRpb25cU2NoZW1hXEV4Y2VwdGlvblxGb3JtYXRNaXNtYXRjaGAgLSBkYXRhIG1pc21hdGNoZWQgYSBnaXZlbiB0eXBlIGZvcm1hdC4gRm9yIGV4YW1wbGUgYHR5cGU6IHN0cmluZywgZm9ybWF0OiBlbWFpbGAgd29uJ3QgbWF0Y2ggYG5vdC1lbWFpbGAuCi0gUFNSNyBNZXNzYWdlcyByZWxhdGVkOgogICAgLSBgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcRXhjZXB0aW9uXE5vQ29udGVudFR5cGVgIC0gSFRUUCBtZXNzYWdlKHJlcXVlc3QvcmVzcG9uc2UpIGNvbnRhaW5zIG5vIENvbnRlbnQtVHlwZSBoZWFkZXIuIEdlbmVyYWwgSFRUUCBlcnJvcnMuCiAgICAtIGBcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xFeGNlcHRpb25cTm9QYXRoYCAtIHBhdGggaXMgbm90IGZvdW5kIGluIHRoZSBzcGVjCiAgICAtIGBcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xFeGNlcHRpb25cTm9PcGVyYXRpb25gIC0gb3BlcmF0aW9uIG9zIG5vdCBmb3VuZCBpbiB0aGUgcGF0aAogICAgLSBgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcRXhjZXB0aW9uXE5vUmVzcG9uc2VDb2RlYCAtIHJlc3BvbnNlIGNvZGUgbm90IGZvdW5kIHVuZGVyIHRoZSBvcGVyYXRpb24gaW4gdGhlIHNwZWMKICAgIC0gVmFsaWRhdGlvbiBleGNlcHRpb25zIChjaGVjayBwYXJlbnQgZXhjZXB0aW9uIGZvciBwb3NzaWJsZSByb290IGNhdXNlcyk6CiAgICAgICAgLSBgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcRXhjZXB0aW9uXFZhbGlkYXRpb25GYWlsZWRgIC0gZ2VuZXJpYyBleGNlcHRpb24gZm9yIGZhaWxlZCBQU1ItNyBtZXNzYWdlCiAgICAgICAgLSBgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcRXhjZXB0aW9uXFZhbGlkYXRpb25cSW52YWxpZEJvZHlgIC0gYm9keSBkb2VzIG5vdCBtYXRjaCBzY2hlbWEKICAgICAgICAtIGBcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xFeGNlcHRpb25cVmFsaWRhdGlvblxJbnZhbGlkQ29va2llc2AgLSBjb29raWVzIGRvZXMgbm90IG1hdGNoIHNjaGVtYSBvciBtaXNzaW5nIHJlcXVpcmVkIGNvb2tpZQogICAgICAgIC0gYFxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XEV4Y2VwdGlvblxWYWxpZGF0aW9uXEludmFsaWRIZWFkZXJzYCAtIGhlYWRlciBkb2VzIG5vdCBtYXRjaCBzY2hlbWEgb3IgbWlzc2luZyByZXF1aXJlZCBoZWFkZXIKICAgICAgICAtIGBcT3BlbkFQSVZhbGlkYXRpb25cUFNSN1xFeGNlcHRpb25cVmFsaWRhdGlvblxJbnZhbGlkUGF0aGAgLSBwYXRoIGRvZXMgbm90IG1hdGNoIHBhdHRlcm4gb3IgcGF0dGVybiB2YWx1ZXMgZG9lcyBub3QgbWF0Y2ggc2NoZW1hCiAgICAgICAgLSBgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcRXhjZXB0aW9uXFZhbGlkYXRpb25cSW52YWxpZFF1ZXJ5QXJnc2AgLSBxdWVyeSBhcmdzIGRvZXMgbm90IG1hdGNoIHNjaGVtYSBvciBtaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50CiAgICAgICAgLSBgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcRXhjZXB0aW9uXFZhbGlkYXRpb25cSW52YWxpZFNlY3VyaXR5YCAtIHJlcXVlc3QgZG9lcyBub3QgbWF0Y2ggc2VjdXJpdHkgc2NoZW1hIG9yIGludmFsaWQgc2VjdXJpdHkgaGVhZGVycwogICAgLSBSZXF1ZXN0IHJlbGF0ZWQ6CiAgICAgICAgLSBgXE9wZW5BUElWYWxpZGF0aW9uXFBTUjdcRXhjZXB0aW9uXE11bHRpcGxlT3BlcmF0aW9uc01pc21hdGNoRm9yUmVxdWVzdGAgLSByZXF1ZXN0IG1hdGNoZWQgbXVsdGlwbGUgb3BlcmF0aW9ucyBpbiB0aGUgc3BlYywgCiAgICAgICAgYnV0IHZhbGlkYXRpb24gZmFpbGVkIGZvciBhbGwgb2YgdGhlbS4KCiMjIFRlc3RpbmcKWW91IGNhbiBydW4gdGhlIHRlc3RzIHdpdGg6CgpgYGAKdmVuZG9yL2Jpbi9waHB1bml0CmBgYAoKIyMgQ29udHJpYnV0aW9uIEd1aWRlCkZlZWwgZnJlZSB0byBvcGVuIGFuIElzc3VlIG9yIGFkZCBhIFB1bGwgcmVxdWVzdC4gClRoZXJlIGlzIGEgY2VydGFpbiBjb2RlIHN0eWxlIHRoYXQgdGhpcyBwYWNrYWdlIGZvbGxvd3M6IFtkb2N0cmluZS9jb2Rpbmctc3RhbmRhcmRdKGh0dHBzOi8vd3d3LmRvY3RyaW5lLXByb2plY3Qub3JnL3Byb2plY3RzL2RvY3RyaW5lLWNvZGluZy1zdGFuZGFyZC9lbi9sYXRlc3QvcmVmZXJlbmNlL2luZGV4Lmh0bWwjaW50cm9kdWN0aW9uKS4KClRvIGNvbmZvcm0gdG8gdGhpcyBzdHlsZSBwbGVhc2UgdXNlIGEgZ2l0IGhvb2ssIHNoaXBwZWQgd2l0aCB0aGlzIHBhY2thZ2UgYXQgYC5naXRob29rcy9wcmUtY29tbWl0YC4KCkhvdyB0byB1c2UgaXQ6CjEuIENsb25lIHRoZSBwYWNrYWdlIGxvY2FsbHkgYW5kIG5hdmlnYXRlIHRvIHRoZSBmb2xkZXIKMi4gQ3JlYXRlIGEgc3ltbGluayB0byB0aGUgaG9vayBsaWtlIHRoaXM6IGBsbiAtcyAtZiAuLi8uLi8uZ2l0aG9va3MvcHJlLWNvbW1pdCAuZ2l0L2hvb2tzL3ByZS1jb21taXRgCjMuIEFkZCBleGVjdXRpb24gcmlnaHRzOiBgY2htb2QgK3ggLmdpdC9ob29rcy9wcmUtY29tbWl0YAo0LiBOb3cgY29tbWl0IGFueSBuZXcgY2hhbmdlcyBhbmQgdGhlIGNvZGUgd2lsbCBiZSBjaGVja2VkIGFuZCBmb3JtYXR0ZWQgYWNjb3JkaW5nbHkuCjUuIElmIHRoZXJlIGFyZSBhbnkgaXNzdWVzIHdpdGggeW91ciBjb2RlLCBjaGVjayB0aGUgbG9nIGhlcmU6IGAucGhwY3MtcmVwb3J0LnR4dGAKCiMjIENyZWRpdHMKUGVvcGxlOgotIFtEbWl0cnkgTGV6aG5ldl0oaHR0cHM6Ly9naXRodWIuY29tL2xlemhuZXY3NCkKLSBbQ2Fyc3RlbiBCcmFuZHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9jZWJlKQotIFtTYW11ZWwgTmVsYV0oaHR0cHM6Ly9naXRodWIuY29tL3NhbW5lbGEpCi0gW1BhdmVsIEJhdGFub3ZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2F5dHJhc2UpCi0gW0NocmlzdG9waGVyIEwgQnJheV0oaHR0cHM6Ly9naXRodWIuY29tL2JyYXluaXZlcnNlKQotIFtEYXZpZCBQYXVsaV0oaHR0cHM6Ly9naXRodWIuY29tL2RwYXVsaSkKLSBbSmFzb24gSnVkZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9qdWRnZWopCi0gW1lhbm5pY2sgQ2hlbm90XShodHRwczovL2dpdGh1Yi5jb20vb3N0ZWVsKQotIFtUYXJhc0JLXShodHRwczovL2dpdGh1Yi5jb20vVGFyYXNCSykKLSBbSmFzb24gQi4gU3RhbmRpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9qYXNvbmJzdGFuZGluZykKLSBbRG15dHJvIERlbWNoeW5hXShodHRwczovL2dpdGh1Yi5jb20vZG15dHJvLWRlbWNoeW5hKQotIFtXaWxsIENoYW1iZXJzXShodHRwczovL2dpdGh1Yi5jb20vd2lsbGNoYW1iZXJzOTkpCi0gW0lnbmFjaW9dKGh0dHBzOi8vZ2l0aHViLmNvbS9pbWVmaXN0bykKLSBBIGJpZyB0aGFuayB5b3UgdG8gW0hlbnJpayBLYXJsc3Ryw7ZtXShodHRwczovL2dpdGh1Yi5jb20vaGthcmxzdHJvbSkgd2hvIGtpbmQgb2YgaW5zcGlyZWQgbWUgdG8gd29yayBvbiB0aGlzIHBhY2thZ2UuIAoKUmVzb3VyY2VzOgotIEljb25zIG1hZGUgYnkgRnJlZXBpaywgbGljZW5zZWQgYnkgQ0MgMy4wIEJZCi0gW2NlYmUvcGhwLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9jZWJlL3BocC1vcGVuYXBpKSBwYWNrYWdlIGZvciBSZWFkaW5nIE9wZW5BUEkgZmlsZXMKLSBbc2xpbTMtcHNyMTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ibmYvc2xpbTMtcHNyMTUpIHBhY2thZ2UgZm9yIFNsaW0gbWlkZGxld2FyZSBhZGFwdGVyCiAKIyMgTGljZW5zZQpUaGUgTUlUIExpY2Vuc2UgKE1JVCkuIFBsZWFzZSBzZWUgYExpY2Vuc2UubWRgIGZpbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgojIyBUT0RPCi0gWyBdIFN1cHBvcnQgRGlzY3JpbWluYXRvciBPYmplY3QgKG5vdGU6IGFwcGFyZW50bHksIHRoaXMgaXMgbm90IHNvIHN0cmFpZ2h0Zm9yd2FyZCwgYXMgZGlzY3JpbWluYXRvciBjYW4gcG9pbnQgdG8gYW55IGV4dGVybmFsIHNjaGVtZSkK readmeEtag: '"50ae034d1007fb5d4f98a0969a7d466e429e89e3"' readmeLastModified: Thu, 19 Sep 2019 09:02:21 GMT repositoryId: 184420719 description: >- It validates PSR-7 messages (HTTP request/response) against OpenAPI specifications created: '2019-05-01T13:32:30Z' updated: '2026-01-16T08:25:28Z' language: PHP archived: false stars: 168 watchers: 12 forks: 10 owner: lezhnev74 logo: https://avatars.githubusercontent.com/u/10206110?v=4 license: MIT repoEtag: '"f255b1e256393f6eee28a3cdb0e5977060b65f0f8e1048bd61f75e54f7f08292"' repoLastModified: Fri, 16 Jan 2026 08:25:28 GMT foundInMaster: true id: 827ca67e948986acbbe7941175945bd7 - source: openapi3 tags repository: https://github.com/swagger-api/swagger-inflector v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIEluZmxlY3RvcgoKWyFbTWF2ZW4gQ2VudHJhbF0oaHR0cHM6Ly9tYXZlbi1iYWRnZXMuaGVyb2t1YXBwLmNvbS9tYXZlbi1jZW50cmFsL2lvLnN3YWdnZXIvc3dhZ2dlci1pbmZsZWN0b3IvYmFkZ2Uuc3ZnP3N0eWxlPXBsYXN0aWMpXShodHRwczovL21hdmVuLWJhZGdlcy5oZXJva3VhcHAuY29tL21hdmVuLWNlbnRyYWwvaW8uc3dhZ2dlci9zd2FnZ2VyLWluZmxlY3RvcikKCi0tLS0KCioqTk9URToqKiBJZiB5b3UncmUgbG9va2luZyBmb3IgYHN3YWdnZXItaW5mbGVjdG9yYCAxLlggYW5kIFN3YWdnZXIvT3BlbkFwaSAyLjAsIHBsZWFzZSByZWZlciB0byBbdjEgYnJhbmNoXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1pbmZsZWN0b3IvdHJlZS92MSkKCi0tLS0KClRoaXMgcHJvamVjdCB1c2VzIHRoZSBTd2FnZ2VyIFNwZWNpZmljYXRpb24gdG8gZHJpdmUgYW4gQVBJIGltcGxlbWVudGF0aW9uLiAgUmF0aGVyIHRoYW4gYSB0eXBpY2FsIHRvcC1kb3duIG9yIGJvdHRvbS11cCBzd2FnZ2VyIGludGVncmF0aW9uLCB0aGUgSW5mbGVjdG9yIHVzZXMgdGhlIHN3YWdnZXIgc3BlY2lmaWNhdGlvbiBhcyBhIERTTCBmb3IgdGhlIFJFU1QgQVBJLiAgVGhlIHNwZWMgZHJpdmVzIHRoZSBjcmVhdGlvbiBvZiByb3V0ZXMgYW5kIGNvbnRyb2xsZXJzIGF1dG9tYXRpY2FsbHksIG1hdGNoaW5nIG1ldGhvZHMgYW5kIG1ldGhvZCBzaWduYXR1cmVzIGZyb20gdGhlIGltcGxlbWVudGF0aW9uLiAgVGhpcyBicmluZ3MgYSBzaW1pbGFyIGludGVncmF0aW9uIGFwcHJvYWNoIHRvIHRoZSBKVk0gYXMgW3N3YWdnZXItbm9kZV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItbm9kZSkgYnJpbmdzIHRvIHRoZSBqYXZhc2NyaXB0IHdvcmxkLgoKVG8gYWxsb3cgZm9yIGFuIGl0ZXJhdGl2ZSBkZXZlbG9wbWVudCwgdGhlIGZyYW1ld29yayB3aWxsIG1vY2sgcmVzcG9uc2VzIGZvciBhbnkgdW5pbXBsZW1lbnRlZCBtZXRob2RzLCBiYXNlZCBvbiB0aGUgc3BlY2lmaWNhdGlvbi4gIFRoYXQgbWVhbnMgeW91IGNhbiBzaGlwIHlvdXIgQVBJIHRvIHlvdXIgY29uc3VtZXJzIGZvciByZXZpZXcgaW1tZWRpYXRlbHkgYXMgeW91IGJ1aWxkIGl0IG91dC4KCllvdSBoYXZlIGZ1bGwgY29udHJvbCBvdmVyIHRoZSBtYXBwaW5nIG9mIGNvbnRyb2xsZXJzIHRvIGNsYXNzZXMgYW5kIG1ldGhvZHMgYXMgd2VsbCBhcyBtb2RlbHMuCgojIyBRdWljayBzdGFydCEKClJ1biB0aGlzIGNvbW1hbmQgdG8gc3RhcnQgaW4gYSBodXJyeS4gIEl0IHdpbGwgY3JlYXRlIGEgcHJvamVjdCBuYW1lZCBgbXktcHJvamVjdGAKYGBgCmN1cmwgLUwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItaW5mbGVjdG9yL21hc3Rlci9zZXR1cC5zaCB8IHByb2plY3Q9bXktcHJvamVjdCBiYXNoCmBgYAoKVGhpcyB3aWxsIGRvd25sb2FkIGV2ZXJ5dGhpbmcgeW91IG5lZWQgdG8gc3RhcnQgZWRpdGluZyBhbmQgcnVubmluZyBhIHN3YWdnZXItaW5mbGVjdG9yIGJhc2VkIHByb2plY3QuICBTZWUgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZCBmb3IgaW5zdHJ1Y3Rpb25zLgoKIyMjIENvbXBvbmVudHMKCkluZmxlY3RvciB1c2VzIHRoZSBmb2xsb3dpbmcgbGlicmFyaWVzOgoKIC0gc3dhZ2dlciBtb2RlbHMgZm9yIHRoZSBzd2FnZ2VyIGRlZmluaXRpb24KIC0gSmFja3NvbiBmb3IgSlNPTiBwcm9jZXNzaW5nCiAtIEplcnNleSAyLnggZm9yIFJFU1QKIC0gTWluaW11bSBKYXZhIDgKCiMjIyBJbnRlZ3JhdGlvbgoKSW5mbGVjdG9yIHdpbGwgY3JlYXRlIHJvdXRlcyBhbmQgYWRkIHRoZW0gdG8gSmVyc2V5LiAgWW91IHNpbXBseSBuZWVkIHRvIHJlZ2lzdGVyIHRoZSBJbmZsZWN0b3IgYXBwbGljYXRpb24gaW4geW91ciB3ZWJhcHAgYW5kIGl0IHNob3VsZCBiZSBjb21wYXRpYmxlIHdpdGggeW91ciBleGlzdGluZyBkZXBsb3ltZW50LCB3aGV0aGVyIHdpdGggd2ViLnhtbCwgc3ByaW5nLCBkcm9wd2l6YXJkLCBldGMuCgpUbyBhZGQgaW5mbGVjdG9yIHZpYSBgd2ViLnhtbGA6CgpgYGB4bWwKPHNlcnZsZXQ+CiAgPHNlcnZsZXQtbmFtZT5zd2FnZ2VyLWluZmxlY3Rvcjwvc2VydmxldC1uYW1lPgogIDxzZXJ2bGV0LWNsYXNzPm9yZy5nbGFzc2Zpc2guamVyc2V5LnNlcnZsZXQuU2VydmxldENvbnRhaW5lcjwvc2VydmxldC1jbGFzcz4KICA8aW5pdC1wYXJhbT4KICAgIDxwYXJhbS1uYW1lPmphdmF4LndzLnJzLkFwcGxpY2F0aW9uPC9wYXJhbS1uYW1lPgogICAgPHBhcmFtLXZhbHVlPmlvLnN3YWdnZXIub2FzLmluZmxlY3Rvci5PcGVuQVBJSW5mbGVjdG9yPC9wYXJhbS12YWx1ZT4KICA8L2luaXQtcGFyYW0+CiAgPGxvYWQtb24tc3RhcnR1cD4xPC9sb2FkLW9uLXN0YXJ0dXA+Cjwvc2VydmxldD4KPHNlcnZsZXQtbWFwcGluZz4KICA8c2VydmxldC1uYW1lPnN3YWdnZXItaW5mbGVjdG9yPC9zZXJ2bGV0LW5hbWU+CiAgPHVybC1wYXR0ZXJuPi8qPC91cmwtcGF0dGVybj4KPC9zZXJ2bGV0LW1hcHBpbmc+CmBgYAoKVGhpcyBzaW1wbHkgYWRkcyB0aGUgYFN3YWdnZXJJbmZsZWN0b3JgIGFwcGxpY2F0aW9uIHRvIEplcnNleS4KCiMjIyBDb25maWd1cmF0aW9uCgpJbmZsZWN0b3IgdXNlcyBhIHNpbmdsZSB5YW1sIGZpbGUgZm9yIGNvbmZpZ3VyYXRpb24uICBUaGUgZGVmYXVsdCBmaWxlIGlzIGBpbmZsZWN0b3IueWFtbGAgYnV0IGl0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgYSBzeXN0ZW0gcHJvcGVydHkgd2hlbiBzdGFydGluZyB0aGUgSlZNOgoKYGBgCi1EY29uZmlnPS9wYXRoL3RvL2NvbmZpZwpgYGAKClRoZSBjb25maWd1cmF0aW9uIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmc6CgpgYGB5YW1sCiMgbW9kZSAoZGV2ZWxvcG1lbnQgfCBzdGFnaW5nIHwgcHJvZHVjdGlvbikuICBEZWZhdWx0IGlzIGRldmVsb3BtZW50LCBhbmQgdGhpcyB2YWx1ZSB3aWxsIGJlIG92ZXJyaWRkZW4gYnkgYSBzeXN0ZW0gcHJvcGVydHkKIyAtRGVudmlyb25tZW50PXByb2R1Y3Rpb24gZm9yIGV4YW1wbGUKZW52aXJvbm1lbnQ6IGRldmVsb3BtZW50CgojIGNvbmZpZ3VyZSB5b3VyIGRlZmF1bHQgY29udHJvbGxlciBwYWNrYWdlIGZvciBtZXRob2QgZGlzY292ZXJ5CmNvbnRyb2xsZXJQYWNrYWdlOiBpby5zd2FnZ2VyLm9hcy5zYW1wbGUuY29udHJvbGxlcnMKCiMgY29uZmlndXJlIHRoZSBkZWZhdWx0IG1vZGVsIHBhY2thZ2UgZm9yIG1vZGVsIGRpc2NvdmVyeQptb2RlbFBhY2thZ2U6IGlvLnN3YWdnZXIub2FzLnNhbXBsZS5tb2RlbHMKCiMgdGhlIHBhdGggdG8gdGhlIHN3YWdnZXIgZGVmaW5pdGlvbiAoTm90ZSEgdGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIC1Ec3dhZ2dlclVybCBhcyBhIHN5c3RlbSBwcm9wZXJ0eQpzd2FnZ2VyVXJsOiBvcGVuYXBpLnlhbWwKCiMgc3BlY2lmaWMgbWFwcGluZ3MgZm9yIG1vZGVscywgdXNlZCB0byBsb2NhdGUgbW9kZWxzIGluIHRoZSBgIy9kZWZpbml0aW9ucy8ke21vZGVsfWAKbW9kZWxNYXBwaW5nczoKICBVc2VyOiBpby5zd2FnZ2VyLm9hcy5zYW1wbGUubW9kZWxzLlVzZXIKCiMgSFRUUCByZXNwb25zZSBjb2RlIHdoZW4gcmVxdWlyZWQgcGFyYW1ldGVycyBhcmUgbWlzc2luZwppbnZhbGlkUmVxdWVzdENvZGU6IDQwMAoKI0FsbG93cyB0byBjb25maWd1cmUgdGhlIGV4cG9zZWQgc3BlYyAodmFsdWVzIGluIGV4YW1wbGUgYXJlIHRoZSBkZWZhdWx0cykKZXhwb3NlZFNwZWNPcHRpb25zOgogIHBhcnNlT3B0aW9uczoKICAgIHJlc29sdmU6IGZhbHNlCiAgICByZXNvbHZlRnVsbHk6IGZhbHNlCiAgdXNlT3JpZ2luYWxOb3RQYXJzZWQ6IGZhbHNlCiAgaGlkZUluZmxlY3RvckV4dGVuc2lvbnM6IHRydWUKICBtZXJnZVJvb3RQYXRoOiB0cnVlCgpgYGAKCiMjIyBMb2NhdGluZyB0aGUgY29udHJvbGxlciBjbGFzcwoKVGhlIGFjdHVhbCBjb250cm9sbGVyIGNsYXNzIGZvciBlYWNoIG1ldGhvZCBpcyBsb2NhdGVkIHZpYSB0aGUgZmlyc3Qgb2YgdGhlIGZvbGxvd2luZyBtZWNoYW5pc21zOgotIGEgeC1zd2FnZ2VyLXJvdXRlci1jb250cm9sbGVyIGV4dGVuc2lvbiBhdCB0aGUgbWV0aG9kIGxldmVsIGNhbiBzcGVjaWZ5IHRoZSBzcGVjaWZpYyBjb250cm9sbGVyIGNsYXNzCi0gZWFjaCB0YWcgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZXRob2QgaXMgYXNzZW1ibGVkIGludG8gdGhlIGNsYXNzbmFtZXMgIiZsdDtjb250cm9sbGVyUGFja2FnZSZndDsuJmx0O1RhZyZndDsiIG9yIAoiJmx0O2NvbnRyb2xsZXJQYWNrYWdlJmd0Oy4mbHQ7VGFnJmd0O0NvbnRyb2xsZXIiLCB0aGUgZmlyc3Qgb2YgdGhlc2UgY2xhc3NlcyB0aGF0IGlzIGZvdW5kIGJ5IENsYXNzLmZvck5hbWUoLi4uKSB3aWxsIGJlIHVzZWQKLSBhbiBvcHRpb25hbCAmbHQ7Y29udHJvbGxlckNsYXNzJmd0OyBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBpcyBhcHBlbmRlZCB0byAmbHQ7Y29udHJvbGxlclBhY2thZ2UmZ3Q7IAotIGFzIGEgbGFzdCByZXNvcnQgYSBjbGFzcyBuYW1lZCAmbHQ7Y29udHJvbGxlclBhY2thZ2UmZ3Q7LkRlZmF1bHQgaXMgdXNlZAoKQnkgZGVmYXVsdCB0aGUgY2xhc3MgaXMgbG9hZGVkIGRpcmVjdGx5IHdpdGggQ2xhc3MuZm9yTmFtZSguLi4pLm5ld0luc3RhbmNlKCkgLSBidXQgeW91IGNhbiBvdmVycmlkZSBjbGFzcyBjcmVhdGlvbgpieSBwcm92aWRpbmcgYSBjdXN0b20gQ29udHJvbGxlckZhY3RvcnkgdG8gdGhlIGluZmxlY3RvciBjb25maWd1cmF0aW9uIChmb3IgZXhhbXBsZSBpZiB5b3Ugd2FudCB5b3VyIGNvbnRyb2xsZXJzIHRvIGJlIApsb2FkZWQgYnkgYSBESSBmcmFtZXdvcmspLgoKIyMjIExvY2F0aW5nIHRoZSB0YXJnZXQgbWV0aG9kCgpXaGVuIGxvY2F0aW5nIG1ldGhvZHMsIHRoZSBgb3BlcmF0aW9uSWRgIGlzIHVzZWQgYXMgdGhlIG1ldGhvZCBuYW1lIGZvciBsb29rdXAgdmlhIHJlZmxlY3Rpb24uICBJZiBub3Qgc3BlY2lmaWVkLCB0aGVyZSBpcyBsb2dpYyBmb3IgZ2VuZXJhdGlvbiBvZiBhIG1ldGhvZCBuYW1lLgoKT25jZSBhIG1ldGhvZCBpcyBtYXRjaGVkIHZpYSBuYW1lLCB0aGUgcGFyYW1ldGVyIHR5cGVzIHdpbGwgYmUgY29tcGFyZWQgdG8gZW5zdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IG1vZGVsLiAgSW4gYWxsIG1ldGhvZHMsIG9ubHkgamF2YSBvYmplY3RzIGFyZSBzdXBwb3J0ZWQtLXByaW1pdGl2ZXMgY3VycmVudGx5IHdpbGwgbm90IG1hdGNoICh0aGlzIGFsbG93cyBmb3IgcHJvcGVyIG51bGxzKS4KCllvdSBjYW4gb3ZlcnJpZGUgYSBtb2RlbCBtYXBwaW5nIGJ5IHNldHRpbmcgYSB2ZW5kb3IgZXh0ZW5zaW9uIGluIHRoZSBzd2FnZ2VyIHlhbWw6CgpgYGB5YW1sCiMgdXNlcyBtZXRob2QgbmFtZSwgbG9vayBmb3IgY29udHJvbGxlclBhY2thZ2UgaW4gdGhlIGNvbmZpZ3VyYXRpb24KcGF0aHM6CiAgL3Rlc3QxOgogICAgZ2V0OgogICAgICB4LXN3YWdnZXItcm91dGVyLWNvbnRyb2xsZXI6IFNhbXBsZUNvbnRyb2xsZXIKICAgICAgb3BlcmF0aW9uSWQ6IGdldFRlc3QxCiAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgLSBuYW1lOiBuYW1lCiAgICAgICAgICBpbjogcXVlcnkKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgZGVzY3JpcHRpb246IFN1Y2Nlc3MhCmBgYAoKRnJvbSB0aGUgY29uZmlndXJhdGlvbiBleGFtcGxlIGFib3ZlLCB0aGlzIHdpbGwgbG9vayBmb3IgdGhlIGZvbGxvd2luZyBjbGFzczoKCmBgYApjbGFzczogaW8uc3dhZ2dlci5zYW1wbGUuY29udHJvbGxlcnMuU2FtcGxlQ29udHJvbGxlcgpgYGAKCndpdGggdGhlIGZvbGxvd2luZyBtZXRob2Q6CgpgYGAKbWV0aG9kOiBwdWJsaWMgT2JqZWN0IGdldFRlc3QxKAogICAgUmVxdWVzdENvbnRleHQsCiAgICBqYXZhLmxhbmcuU3RyaW5nIG5hbWUpCmBgYAoKIyMjIyBDb21wbGV4IGlucHV0cwoKV2hlbiB0aGVyZSBhcmUgY29tcGxleCBpbnB1dHMsIHN1Y2ggYXMgdGhlIGV4YW1wbGUgYmVsb3c6CgpgYGB5YW1sCnBhdGhzOgogIC90ZXN0MjoKICAgIHBvc3Q6CiAgICAgIHgtc3dhZ2dlci1yb3V0ZXItY29udHJvbGxlcjogU2FtcGxlQ29udHJvbGxlcgogICAgICBvcGVyYXRpb25JZDogYWRkVXNlcgogICAgICByZXF1ZXN0Qm9keToKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAnIy9kZWZpbml0aW9ucy9Vc2VyJwogICAgICBwYXJhbWV0ZXJzOgogICAgICAgIC0gbmFtZTogbmFtZQogICAgICAgICAgaW46IHF1ZXJ5CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgcmVzcG9uc2VzOgogICAgICAgIDIwMDoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBTdWNjZXNzIQpgYGAKCnRoZSBJbmZsZWN0b3Igd2lsbCBkbyB0aGUgZm9sbG93aW5nOgoKIC0gTG9vayBpbiB2ZW5kb3IgZXh0ZW5zaW9ucyBmb3IgdGhlIG1vZGVscyB0byBzZWUgaWYgYSBtYXBwaW5nIGV4aXN0cy4gIElmIHNvLCBpdCB3aWxsIGF0dGVtcHQgdG8gbG9hZCBpdCB2aWEgdGhlIGNsYXNzbG9hZGVyCgogYGBgeWFtbAogICBBZGRyZXNzOgogICAgeC1zd2FnZ2VyLXJvdXRlci1tb2RlbDogaW8uc3dhZ2dlci50ZXN0Lm1vZGVscy5BZGRyZXNzCiAgICBwcm9wZXJ0aWVzOgogICAgICBzdHJlZXQ6CiAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgZXhhbXBsZTogMTIzNDUgRWwgTW9udGUgUm9hZAogICAgICBjaXR5OgogICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIGV4YW1wbGU6IExvcyBBbHRvcyBIaWxscwogICAgICBzdGF0ZToKICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICBleGFtcGxlOiBDQQogICAgICB6aXA6CiAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgZXhhbXBsZTogJzk0MDIyJwogYGBgCgogLSBMb29rIGluIHRoZSBjb25maWd1cmF0aW9uIGZvciBhIG1hcHBpbmcgYmV0d2VlbiBgVXNlcmAgYW5kIGEgY29uY3JldGUgY2xhc3MgZGVmaW5pdGlvbi4gIElmIHRoZSBkZWZpbml0aW9uIGV4aXN0cyBBTkQgdGhlIGNsYXNzIGNhbiBiZSBsb2FkZWQsIHRoZSBtZXRob2Qgd2lsbCBsb29rIGxpa2Ugc3VjaDoKCiBgYGAKIHB1YmxpYyBSZXNwb25zZUNvbnRleHQgYWRkVXNlciAoCiAgICBSZXF1ZXN0Q29udGV4dCBjb250ZXh0LCAgICAgICAgICAgICAvLyByZXF1ZXN0IGNvbnRleHQKICAgIGlvLnN3YWdnZXIuc2FtcGxlLm1vZGVscy5Vc2VyIHVzZXIsIC8vIHVzZXIgYmVpbmcgYWRkZWQKICAgIGphdmEubGFuZy5TdHJpbmcgbmFtZSkgICAgICAgICAgICAgIC8vIHRoZSBgbmFtZWAgcXVlcnkgcGFyYW0KIGBgYAoKIC0gSWYgdGhlIGRlZmluaXRpb24gZG9lcyBub3QgZXhpc3QsIHRoZSBgbW9kZWxQYWNrYWdlYCBmcm9tIHRoZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgdXNlZCB0byBhdHRlbXB0IHRvIGxvYWQgdGhlIGNsYXNzOgoKIGBgYAoKCiBgYGAKCiBJZiB0aGUgZGVmaW5pdGlvbiBjYW4gYmUgbG9hZGVkIGl0IHdpbGwgYmUgdXNlZCBhcyB0aGUgbWV0aG9kIHNpZ25hdHVyZQoKIC0gSWYgbm8gbW9kZWwgY2FuIGJlIGxvYWRlZCwgaXQgaXMgdGhlIGRldmVsb3BlcidzIGpvYiB0byB1bndyYXAgdGhlIGlucHV0IGFuZCBwYXJzZSBpdCBvbiB0aGVpciBvd24uICBUaGlzIHJlcXVpcmVzIGBDb250ZW50LVR5cGVgLXNwZWNpZmljIHByb2Nlc3NpbmcuICBJbmZsZWN0b3Igd2lsbCB0aGVuIGxvb2sgZm9yIHRoZSBmb2xsb3dpbmcgbWV0aG9kOgoKIGBgYAogcHVibGljIFJlc3BvbnNlQ29udGV4dCBhZGRVc2VyICgKICAgIFJlcXVlc3RDb250ZXh0IGNvbnRleHQsICAgICAgICAgICAgIC8vIHJlcXVlc3QgY29udGV4dAogICAgSnNvbk5vZGUgdXNlciwgICAgICAgICAgICAgICAgICAgICAgLy8gYSBKc29uIHRyZWUgcmVwcmVzZW50aW5nIHRoZSB1c2VyCiAgICBqYXZhLmxhbmcuU3RyaW5nIG5hbWUpICAgICAgICAgICAgICAvLyB0aGUgYG5hbWVgIHF1ZXJ5IHBhcmFtCiBgYGAKCiAtIElmIG5vIG1ldGhvZCBjYW4gYmUgZm91bmQsIGEgbW9jayByZXNwb25zZSB3aWxsIGJlIHJldHVybmVkIGJhc2VkIG9uIHRoZSBzd2FnZ2VyIGRlZmluaXRpb24uICBGb3IgY29tcGxleCBvYmplY3RzLCBpZiBhbiBgZXhhbXBsZWAgZXhpc3RzLCB3ZSB3aWxsIHVzZSB0aGF0LiAgT3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGNvbnN0cnVjdGVkLgoKClRoZSBSZXF1ZXN0V3JhcHBlciBhbmQgUmVzcG9uc2VDb250ZXh0IGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgaGVhZGVycyAoaW4gYW5kIG91dGJvdW5kKSwgY29udGVudC10eXBlIGFuZCBhY2NlcHRhYmxlIHJlc3BvbnNlIHR5cGVzLgoKIyMjIyBPdXRwdXRzCgpZb3VyIGNvbnRyb2xsZXJzIGNhbiByZXR1cm4gbnVsbCAodm9pZCByZXNwb25zZSksIGFuIG9iamVjdCAoZW50aXR5KSwgb3IgYSBgUmVzcG9uc2VDb250ZXh0YCwgd2hpY2ggYWxsb3dzIHlvdSB0byBzZW5kIHNwZWNpZmljIGVycm9yIGNvZGVzLCBoZWFkZXJzLCBhbmQgYW4gb3B0aW9uYWwgZW50aXR5LgoKRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIHJldHVybiBhIGBQZXRgIGZyb20gYSBjb250cm9sbGVyOgoKYGBgamF2YQogICAgcHVibGljIFJlc3BvbnNlQ29udGV4dCBnZXRQZXQoUmVxdWVzdENvbnRleHQgcmVxdWVzdCwgamF2YS5sYW5nLkludGVnZXIgcGV0SWQpIHsKICAgICAgICAvLyBkbyB5b3VyIG1hZ2ljIHRvIGZldGNoIGEgcGV0Li4uCiAgICAgICAgUGV0IHBldCA9IGNvbXBsZXhCdXNpbmVzc0xvZ2ljLmdldFBldEJ5SWQocGV0SWQpOwoKICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlQ29udGV4dCgpCiAgICAgICAgICAgICAgICAuc3RhdHVzKFN0YXR1cy5PSykKICAgICAgICAgICAgICAgIC5lbnRpdHkocGV0KTsKICAgIH0KYGBgCgphbmQgdGhlIEluZmxlY3RvciB3aWxsIHJldHVybiBhIGAyMDBgIHJlc3BvbnNlIGNvZGUsIG1hcnNoYWxsaW5nIHRoZSBgUGV0YCBvYmplY3QgaW50byB0aGUgYXBwcm9wcmlhdGUgY29udGVudCB0eXBlLgoKSWYgeW91IGRvIG5vdCBpbXBsZW1lbnQgeW91ciBjb250cm9sbGVyLCB0aGUgSW5mbGVjdG9yIHdpbGwgZ2VuZXJhdGUgc2FtcGxlIGRhdGEgYmFzZWQgb24geW91ciBtb2RlbCBkZWZpbml0aW9ucy4gIEl0IHdpbGwgaG9ub3IgYW55IGV4YW1wbGVzIHRoYXQgeW91IGhhdmUgaW4gdGhlIGRlZmluaXRpb25zLCBhc3N1bWluZyB0aGV5IGFyZSBjb21wYXRpYmxlIHdpdGggdGhlIHNjaGVtYSB5b3UgZGVjbGFyZWQuICBGb3IgZXhhbXBsZSwgdGhpcyBkZWZpbml0aW9uOgoKYGBgeWFtbApwcm9wZXJ0aWVzOgogIHN0cmVldDoKICAgIHR5cGU6ICJzdHJpbmciCiAgICBleGFtcGxlOiAiMTIzNDUgRWwgTW9udGUgQmx2ZCIKICBjaXR5OgogICAgdHlwZTogInN0cmluZyIKICAgIGV4YW1wbGU6ICJMb3MgQWx0b3MgSGlsbHMiCiAgc3RhdGU6CiAgICB0eXBlOiAic3RyaW5nIgogICAgZXhhbXBsZTogIkNBIgogICAgbWluTGVuZ3RoOiAyCiAgICBtYXhMZW5ndGg6IDIKICB6aXA6CiAgICB0eXBlOiAic3RyaW5nIgogICAgZXhhbXBsZTogIjk0MDIyIgp4bWw6CiAgbmFtZTogImFkZHJlc3MiCmBgYAoKV2lsbCBwcm9kdWNlIHRoaXMgZXhhbXBsZSBmb3IgYSBgQWNjZXB0OmFwcGxpY2F0aW9uL2pzb25gOgoKYGBganNvbgp7CiAgInN0cmVldCIgOiAiMTIzNDUgRWwgTW9udGUgQmx2ZCIsCiAgImNpdHkiIDogIkxvcyBBbHRvcyBIaWxscyIsCiAgInN0YXRlIiA6ICJDQSIsCiAgInppcCIgOiAiOTQwMjIiCn0KYGBgCgphbmQgYGFwcGxpY2F0aW9uL3lhbWxgOgoKYGBgeWFtbApzdHJlZXQ6ICIxMjM0NSBFbCBNb250ZSBCbHZkIgpjaXR5OiAiTG9zIEFsdG9zIEhpbGxzIgpzdGF0ZTogIkNBIgp6aXA6ICI5NDAyMiIKYGBgCgphbmQgYGFwcGxpY2F0aW9uL3htbGA6CgpgYGB4bWwKPGFkZHJlc3M+CiAgPHN0cmVldD4xMjM0NSBFbCBNb250ZSBCbHZkPC9zdHJlZXQ+CiAgPGNpdHk+TG9zIEFsdG9zIEhpbGxzPC9jaXR5PgogIDxzdGF0ZT5DQTwvc3RhdGU+CiAgPHppcD45NDAyMjwvemlwPgo8L2FkZHJlc3M+CmBgYAoKIyMjIyBQYXlsb2FkIHZhbGlkYXRpb24KClNpbmNlIHlvdXIgaW5ib3VuZCBhbmQgb3V0Ym91bmQgcGF5bG9hZHMgYXJlIGRlZmluZWQgd2l0aCB0aGUgU3dhZ2dlciBzY2hlbWEsIEluZmxlY3RvciAKY2FuIHZhbGlkYXRlIHRoZW0gYXQgcnVudGltZS4gIEp1c3QgZW5hYmxlIHBheWxvYWQgdmFsaWRhdGlvbnMgaW4geW91ciBpbmZsZWN0b3IgY29uZmlnOgoKYGBgeWFtbAp2YWxpZGF0ZVBheWxvYWRzOiB0cnVlCmBgYAoKQW5kIGF0IHN0YXJ0LXVwLCBJbmZsZWN0b3Igd2lsbCByZWFkIHRoZSBzY2hlbWEgYW5kIGF0dGFjaCB0aGUgcmVsZXZhbnQgc2VjdGlvbiBvZiBpdCAKdG8gdGhlIG9wZXJhdGlvbi4gIEZvciBleGFtcGxlLCBhIHBvc3Qgb3BlcmF0aW9uIHRoYXQgaGFzIHRoaXMgYXMgdGhlIHNjaGVtYSBkZWZpbml0aW9uOgoKYGBganNvbgp7CiAgIkNhdGVnb3J5IjogewogICAgInJlcXVpcmVkIjogWwogICAgICAiaWQiCiAgICBdLAogICAgInByb3BlcnRpZXMiOiB7CiAgICAgICJpZCI6IHsKICAgICAgICAidHlwZSI6ICJpbnRlZ2VyIiwKICAgICAgICAiZm9ybWF0IjogImludDY0IgogICAgICB9LAogICAgICAibmFtZSI6IHsKICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgIH0KICAgIH0sCiAgICAieG1sIjogewogICAgICAibmFtZSI6ICJDYXRlZ29yeSIKICAgIH0KICB9Cn0KYGBgCgpXaWxsIGZhaWwgaWYgdGhlIGluY29taW5nIGJvZHkgbG9va3MgbGlrZSB0aGlzOgoKYGBganNvbgp7CiAgIm5hbWUiOiAiVG9ueSIKfQpgYGAKYmVjYXVzZSB0aGUgcmVxdWlyZWQgZmllbGQgYGlkYCBpcyBtaXNzaW5nLgoKVGhlIHNhbWUgZ29lcyBmb3IgcmVzcG9uc2VzIGdlbmVyYXRlZCBieSB0aGUgc2VydmVyLiAgQW55IHJlc3BvbnNlIGNvZGUgdGhhdCB5b3Ugc2VuZCB3aWxsIApiZSB2YWxpZGF0ZWQgYWdhaW5zdCBpdCdzIGNvcnJlc3BvbmRpbmcgc2NoZW1hLgoKWW91IGNhbiBjaG9vc2UgdG8gZW5hYmxlIHRoaXMgaW4gZGV2ZWxvcG1lbnQsCnN0YWdpbmcsIG9yIHByb2R1Y3Rpb24uCgojIyMjIENvbnRlbnQgdHlwZSBuZWdvdGlhdGlvbgoKVGhlcmUgaXMgYSBwbHVnZ2FibGUgZnJhbWV3b3JrIGZvciBoYW5kbGluZyBkaWZmZXJlbnQgY29udGVudCB0eXBlcy4gIFlvdSBjYW4gcmVnaXN0ZXIgYW55IHByb2Nlc3NvciBieSB0aGUgZm9sbG93aW5nOgoKYGBgamF2YQpFbnRpdHlQcm9jZXNzb3IgbXlQcm9jZXNzb3IgPSBuZXcgTXlFbnRpdHlQcm9jZXNzb3IoKTsgIC8vIGltcGxlbWVudHMgRW50aXR5UHJvY2Vzc29yCkVudGl0eVByb2Nlc3NvckZhY3RvcnkuYWRkUHJvY2Vzc29yKG15UHJvY2Vzc29yKTsKYGBgCgojIyMjIERldmVsb3BtZW50IExpZmVjeWNsZQoKVGhlcmUgYXJlIHRocmVlIG1vZGVzIHRoYXQgdGhlIEluZmxlY3RvciBzdXBwb3J0cywgYXMgY29uZmlndXJlZCBieSB0aGUgYGVudmlyb25tZW50YCBhdHRyaWJ1dGUgaW4gdGhlIGluZmxlY3RvciBjb25maWc6CgogLSAqKmRldmVsb3BtZW50KiouICBJbiB0aGlzIG1vZGUsIG1vY2sgcmVzcG9uc2VzIHdpbGwgYmUgc2VudCBmb3IgY29udHJvbGxlcnMgd2hpY2ggYXJlIG5vdCBpbXBsZW1lbnRlZC4gIFRoZSBpbnRlbnRpb24KICAgaXMgdG8gYWxsb3cgeW91IHRvIHF1aWNrbHkgaXRlcmF0ZSBvbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGRlc2lnbi4gIEluIGFkZGl0aW9uLCBtaXNzaW5nIG1vZGVsIGltcGxlbWVudGF0aW9ucwogICBhcmUgdG9sZXJhdGVkIGFuZCBzdXBwb3J0ZWQuCgogLSAqKnN0YWdpbmcqKi4gIFdhcm5pbmcgbWVzc2FnZXMgd2lsbCBiZSBsb2dnZWQgd2hlbiBzdGFydGluZyB0aGUgc2VydmljZSBmb3IgYW55IG1pc3NpbmcgY29udHJvbGxlciwgbWV0aG9kLCBvciBtb2RlbC4KCiAtICoqcHJvZHVjdGlvbioqLiAgVGhlIGV4cGVjdGF0aW9uIGlzIGFsbCBtZXRob2RzIGFuZCBkZWNsYXJlZCAobWFudWFsbHkgbWFwcGVkKSBtb2RlbHMgZXhpc3QuICBJZiB0aGV5IGRvbid0LCBpdCdsbCB0aHJvdwogICBuYXN0eSBlcnJvcnMgYW5kIHRoZSBzZXJ2ZXIgd2lsbCBub3Qgc3RhcnQuCgpJbiBkZXZlbG9wbWVudCBtb2RlLCB0aGVyZSBpcyBhIGAvZGVidWcuanNvbmAgcGFnZSB3aGljaCBzaG93cyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoZSBpbmZsZWN0b3Igc2VydmljZS4KCklmIHlvdXIgU3dhZ2dlciBEZXNjcmlwdGlvbiBpcyB1bnBhcnNhYmxlLCB0aGUgc2VydmVyIHdpbGwgdGhyb3cgdWdseSBlcnJvcnMgb24gc3RhcnR1cCBhbmQgdGhlIGBkZWJ1Zy5qc29uYCBwYWdlIHdpbGwKICAgZ2l2ZSBpbmRpY2F0aW9ucyBhcyB0byB3aHkuCgojIyMjIFNhbXBsZXMKVGhlIHNhbXBsZXMgYXJlIGEgYmVpbmcgcmVmYWN0b3IgdG8gc3VwcG9ydCB0aGUgbmV3IGluZmxlY3Rvci4KCllvdSB3aWxsIHNvb24gZmluZCBzYW1wbGVzIGZvciB0aGUgaW5mbGVjdG9yIHByb2plY3QgaW4gdGhlIFtTd2FnZ2VyLVNhbXBsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXNhbXBsZXMpIHJlcG9zaXRvcnkuICBUaGUgaW5mbGVjdG9yIHByb2plY3RzIHN0YXJ0IHdpdGggYGluZmxlY3Rvci1gCgojIyMjIFJ1bm5pbmcgdGVzdHMKCklmIHJ1bm5pbmcgSmF2YSA4LCB5b3Ugd2lsbCBuZWVkIHRvIHJ1biBhIHZhcmlhbnQgdGhhdCBoYXMgYmFja3BvcnRlZCBmaXggODE1NzIzNi4gQXp1bCBadWx1IGlzIGNvbmZpcm1lZCB0byB3b3JrIChodHRwczovL2dpdGh1Yi5jb20vam1vY2tpdC9qbW9ja2l0MS9pc3N1ZXMvNzEwKS4KCklmIHJ1bm5pbmcgd2l0aCBKYXZhIDkgb3IgbGF0ZXIsIHlvdSB3aWxsIG5lZWQgdG8gZWl0aGVyOgotIFBhc3MgYC1EamRrLmF0dGFjaC5hbGxvd0F0dGFjaFNlbGY9dHJ1ZWAgdG8gdGhlIFZNLgotIENvbmZpZ3VyZSB0aGUgdGVzdCBleGVjdXRpb24gSlZNIHRvIHN0YXJ0IHdpdGggdGhlICItamF2YWFnZW50Ojxwcm9wZXIgcGF0aD4vam1vY2tpdC4xLnguamFyIiBpbml0aWFsaXphdGlvbiBwYXJhbWV0ZXIuIEl0IGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIGJ1aWxkIHNjcmlwdCBmaWxlIGZvciB0b29scyBzdWNoIGFzIE1hdmVuIG9yIEdyYWRsZSwgb3IgaW4gYSAiUnVuL0RlYnVnIENvbmZpZ3VyYXRpb24iIGZvciBJbnRlbGxpSiBJREVBIG9yIEVjbGlwc2UuCgojIyBTZWN1cml0eSBjb250YWN0CgpQbGVhc2UgZGlzY2xvc2UgYW55IHNlY3VyaXR5LXJlbGF0ZWQgaXNzdWVzIG9yIHZ1bG5lcmFiaWxpdGllcyBieSBlbWFpbGluZyBbc2VjdXJpdHlAc3dhZ2dlci5pb10obWFpbHRvOnNlY3VyaXR5QHN3YWdnZXIuaW8pLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBwdWJsaWMgaXNzdWUgdHJhY2tlci4K readmeEtag: '"e526a9e92382e438d0a6e9de2a6473b04affe96d"' readmeLastModified: Mon, 08 Apr 2024 07:01:04 GMT repositoryId: 39236124 description: null created: '2015-07-17T05:14:14Z' updated: '2026-01-15T10:51:05Z' language: Java archived: false stars: 167 watchers: 21 forks: 85 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 repoEtag: '"af63bb418c22dfcb1ded96b5239bf99ba4e31a668d3dbd0f6c2290b9920d39ba"' repoLastModified: Thu, 15 Jan 2026 10:51:05 GMT foundInMaster: true category: Parsers id: 73bbfe691003c37a641d8864645f2425 - source: openapi3 tags repository: https://github.com/sunrise-php/http-router v3: true repositoryMetadata: base64Readme: >- IyBBIHBvd2VyZnVsIHNvbHV0aW9uIGFzIHRoZSBmb3VuZGF0aW9uIG9mIHlvdXIgcHJvamVjdAoKIyMgUmVzb3VyY2VzCgotIFtEb2N1bWVudGF0aW9uXShodHRwczovL2Rldi5zdW5yaXNlLXN0dWRpby5pby9kb2NzL3BhY2thZ2VzL3N1bnJpc2UvaHR0cC1yb3V0ZXIvKQo= readmeEtag: '"a55ac755dbefedd1dbd70b4c674bd30e25475fe0"' readmeLastModified: Mon, 10 Mar 2025 13:57:11 GMT repositoryId: 161002423 description: A powerful solution as the foundation of your project. created: '2018-12-09T03:59:48Z' updated: '2025-12-03T20:28:21Z' language: PHP archived: false stars: 162 watchers: 4 forks: 10 owner: sunrise-php logo: https://avatars.githubusercontent.com/u/41580063?v=4 license: MIT repoEtag: '"07e1d63b96197c7566db644d95026049afb4ef7c526b4d94dc832f18140b05e2"' repoLastModified: Wed, 03 Dec 2025 20:28:21 GMT foundInMaster: true category: Data Validators id: d37760d7bb1c259409b90020129dcf91 - source: openapi3 tags repository: https://github.com/netwo-io/apistos v3: true id: 644bd457afd213be930b970bd9f35da0 repositoryMetadata: base64Readme: >- IyBBcGlzdG9zICZlbXNwOyBbIVtEb2N1bWVudGF0aW9uXV1bZG9jcy5yc10gWyFbTGF0ZXN0IFZlcnNpb25dXVtjcmF0ZXMuaW9dIFshW0J1aWxkIFN0YXR1c11dW2J1aWxkXSBbIVtEZXBzIFN0YXR1c11dW2RlcHMucnNdCgpbZG9jcy5yc106IGh0dHBzOi8vZG9jcy5ycy9hcGlzdG9zLwoKW2NyYXRlcy5pb106IGh0dHBzOi8vY3JhdGVzLmlvL2NyYXRlcy9hcGlzdG9zCgpbYnVpbGRdOiBodHRwczovL2dpdGh1Yi5jb20vbmV0d28taW8vYXBpc3Rvcy9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55YW1sP2JyYW5jaD1tYWluCgpbRG9jdW1lbnRhdGlvbl06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9jc3JzL2FwaXN0b3MKCltMYXRlc3QgVmVyc2lvbl06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY3JhdGVzL3YvYXBpc3Rvcy5zdmcKCltCdWlsZCBTdGF0dXNdOiBodHRwczovL2dpdGh1Yi5jb20vbmV0d28taW8vYXBpc3Rvcy9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55YW1sL2JhZGdlLnN2Zz9icmFuY2g9bWFpbgoKW2RlcHMucnNdOiBodHRwczovL2RlcHMucnMvY3JhdGUvYXBpc3RvcwoKW0RlcHMgU3RhdHVzXTogaHR0cHM6Ly9kZXBzLnJzL2NyYXRlL2FwaXN0b3MvbGF0ZXN0L3N0YXR1cy5zdmcKCltPQVN2My5tZF06IGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjAuMy5tZAoKQW4gT3BlbkFQSSBkb2N1bWVudGF0aW9uIHRvb2wgZXhwb3NpbmcgW09BUyAzLjBdW09BU3YzLm1kXSBtb2RlbHMgYXMgd2VsbCBhcyBhbiBhY3RpeC13ZWIgd3JhcHBlciBzaW1pbGFyCnRvIFtwYXBlcmNsaXBdKGh0dHBzOi8vZ2l0aHViLmNvbS9wYXBlcmNsaXAtcnMvcGFwZXJjbGlwKS4KCioqQXBpc3RvcyoqIGlzIGNvbXBvc2VkIG9mIHRoZXNlIGNyYXRlczoKCi0gW2BhcGlzdG9zYF0oLi9hcGlzdG9zKTogW2FjdGl4LXdlYl0oaHR0cHM6Ly9naXRodWIuY29tL2FjdGl4L2FjdGl4LXdlYikgd3JhcHBlciB0byBnZW5lcmF0ZSBhbiBPcGVuQVBJIHYzLjAuMwogIGRvY3VtZW50YXRpb24gZmlsZQotIFtgYXBpc3Rvcy1jb3JlYF0oLi9hcGlzdG9zLWNvcmUpOiBBIHNldCBvZiB0cmFpdHMgYW5kIGNvbW1vbiBtb2RlbHMgYXJvdW5kIFtPcGVuQVBJIHYzLjAuM11bT0FTdjMubWRdCi0gW2BhcGlzdG9zLWdlbmBdKC4vYXBpc3Rvcy1nZW4pOiBtYWNybyB1dGlsaXRpZXMgdG8gZ2VuZXJhdGUgW09wZW5BUEkgdjMuMC4zXVtPQVN2My5tZF0gZG9jdW1lbnRhdGlvbiBmcm9tIFJ1c3QgbW9kZWxzCi0gW2BhcGlzdG9zLW1vZGVsc2BdKC4vYXBpc3Rvcy1tb2RlbHMpOiBbT3BlbkFQSSB2My4wLjNdW09BU3YzLm1kXSBtb2RlbHMKICB3aXRoIFtgU2NoZW1hYF0oaHR0cHM6Ly9kb2NzLnJzL3NjaGVtYXJzL2xhdGVzdC9zY2hlbWFycy9zY2hlbWEvZW51bS5TY2hlbWEuaHRtbCkgYmFzZWQKICBvbiBbc2NoZW1hcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9HUkVzYXUvc2NoZW1hcnMpIGRlZmluaXRpb24KLSBbYGFwaXN0b3MtcGx1Z2luc2BdKC4vYXBpc3Rvcy1wbHVnaW5zKTogdHJhaXRzIGFuZCB1dGlsaXRpZXMgdG8gZXh0ZW5kIGFwaXN0b3MKLSBbYGFwaXN0b3MtcmFwaWRvY2BdKC4vYXBpc3Rvcy1yYXBpZG9jKTogYnJpZGdlIGJldHdlZW4gQXBpc3RvcyBhbmQgW1JhcGlEb2NdKGh0dHBzOi8vcmFwaWRvY3dlYi5jb20vKSBmb3IgYWN0aXguCi0gW2BhcGlzdG9zLXBsdWdpbnNgXSguL2FwaXN0b3MtcmVkb2MpOiBicmlkZ2UgYmV0d2VlbiBBcGlzdG9zIGFuZCBbUmVkb2NdKGh0dHBzOi8vcmVkb2NseS5jb20vcmVkb2MvKSBmb3IgYWN0aXguCi0gW2BhcGlzdG9zLXNjYWxhcmBdKC4vYXBpc3Rvcy1zY2FsYXIpOiBicmlkZ2UgYmV0d2VlbiBBcGlzdG9zIGFuZCBbU2NhbGFyXShodHRwczovL3NjYWxhci5jb20vKSBmb3IgYWN0aXguCi0gW2BhcGlzdG9zLXNodXR0bGVgXSguL2FwaXN0b3Mtc2h1dHRsZSk6IGFsbG93cyB5b3UgdG8gcnVuIGFuIGFjdGl4LXdlYiBzZXJ2ZXIgZG9jdW1lbnRlZCB3aXRoIEFwaXN0b3MKICBvbiBbU2h1dHRsZV0oaHR0cHM6Ly93d3cuc2h1dHRsZS5ycy8pLgotIFtgYXBpc3Rvcy1zd2FnZ2VyLXVpYF0oLi9hcGlzdG9zLXN3YWdnZXItdWkpOiBicmlkZ2UgYmV0d2VlbiBBcGlzdG9zCiAgYW5kIFtTd2FnZ2VyIFVJXShodHRwczovL3N3YWdnZXIuaW8vdG9vbHMvc3dhZ2dlci11aS8pIGZvciBhY3RpeAoKQ2hlY2sgb3V0IG91ciBbZXhhbXBsZSBwcm9qZWN0XShleGFtcGxlcy9wZXRzdG9yZSkuCgojIyMgV2hhdCBkb2VzIEFwaXN0b3MgbWVhbnMKCkFwaXN0b3MgKHByb25vdW5jZWQgKipfL2EucC5pLnN0b3MvXyoqKSBpcyBhIHdvcmQgcGxheSBiZXR3ZWVuIEjDqXBoYcOvc3RvcyAo4bytz4bOsc65z4PPhM6/z4IsIGdyZWMgZ29kIG9mIGJsYWNrc21pdGhzLApjYXJwZW50ZXJzLCBjcmFmdHNtZW4sIG1ldGFsbHVyZ3kgLi4uIHdoaWNoIGNhbiBhbHNvIGJlIGNvbnNpZGVyZWQgYnkgc29tZSBhcyB0aGUgZ29kIG9mIHRlY2hub2xvZ3kpIGFuZCBBUEkgKHByb25vdW5jZWQKKipfL2EucC5pL18qKiBpbiBGcmVuY2gpLgoKIyMgQXBpc3RvcwoKLSBbSW5zdGFsbGF0aW9uXSgjaW5zdGFsbGF0aW9uKQotIFtVc2FnZSBleGFtcGxlXSgjdXNhZ2UtZXhhbXBsZSkKLSBbRmVhdHVyZSBmbGFnc10oI2ZlYXR1cmUtZmxhZ3MpCi0gW0FsdGVybmF0aXZlc10oI2FsdGVybmF0aXZlcykKLSBbQWJvdXQgdXNdKCNhYm91dC11cykKCiMjIyBJbnN0YWxsYXRpb24KCmBgYHRvbWwKW2RlcGVuZGVuY2llc10KI3NjaGVtYXJzID0gIjAuOCIKIyBzYWRseSB3ZSBjdXJyZW50bHkgcmVseSBvbiBhIGZvcmsgdG8gZml4IG11bHRpcGxlIGZsYXR0ZW4gZm9yIGVudW1zLCByZWxhdGVkIFBSIGNhbiBiZSBmb3VuZCBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20vR1JFc2F1L3NjaGVtYXJzL3B1bGwvMjY0CnNjaGVtYXJzID0geyBwYWNrYWdlID0gImFwaXN0b3Mtc2NoZW1hcnMiLCB2ZXJzaW9uID0gIjAuOCIgfQphcGlzdG9zID0gIjAuNiIKYGBgCgojIyMgVXNhZ2UgZXhhbXBsZQoKV3JhcCB5b3VyIHJlZ3VsYXIgYWN0aXgtd2ViIGFwcCB1c2luZyBhcGlzdG9zIHR5cGVzLgoKTW9zdCBvZiB0aGVzZSB0eXBlcyBhcmUgZHJvcC1pbiB0eXBlcyBmb3IgYWN0aXgtd2ViIG9uZSdzLgoKYGBgcnVzdAp1c2Ugc3RkOjpmbXQ6OkRpc3BsYXk7CnVzZSBhY3RpeF93ZWI6OntBcHAsIEh0dHBTZXJ2ZXIsIFJlc3BvbnNlRXJyb3J9Owp1c2UgYWN0aXhfd2ViOjpodHRwOjpTdGF0dXNDb2RlOwp1c2UgYWN0aXhfd2ViOjptaWRkbGV3YXJlOjpMb2dnZXI7CnVzZSBhY3RpeF93ZWI6OndlYjo6SnNvbjsKdXNlIGFwaXN0b3M6OmFjdGl4OjpDcmVhdGVkSnNvbjsKdXNlIGFwaXN0b3M6OmFwaV9vcGVyYXRpb247CnVzZSBhcGlzdG9zOjpBcGlDb21wb25lbnQ7CnVzZSBhcGlzdG9zOjpBcGlFcnJvckNvbXBvbmVudDsKdXNlIGFwaXN0b3M6OmFwcDo6T3BlbkFwaVdyYXBwZXI7CnVzZSBhcGlzdG9zOjpzcGVjOjpTcGVjOwp1c2UgYXBpc3Rvczo6d2ViOjp7cG9zdCwgcmVzb3VyY2UsIHNjb3BlfTsKdXNlIGFwaXN0b3NfbW9kZWxzOjppbmZvOjpJbmZvOwp1c2UgY29yZTo6Zm10OjpGb3JtYXR0ZXI7CnVzZSBzY2hlbWFyczo6SnNvblNjaGVtYTsKdXNlIHNlcmRlOjp7RGVzZXJpYWxpemUsIFNlcmlhbGl6ZX07CnVzZSBzdGQ6OmVycm9yOjpFcnJvcjsKdXNlIHN0ZDo6bmV0OjpJcHY0QWRkcjsKCiNbZGVyaXZlKFNlcmlhbGl6ZSwgRGVzZXJpYWxpemUsIERlYnVnLCBDbG9uZSwgSnNvblNjaGVtYSwgQXBpQ29tcG9uZW50KV0KcHViIHN0cnVjdCBUZXN0IHsKICBwdWIgdGVzdDogU3RyaW5nCn0KCiNbZGVyaXZlKFNlcmlhbGl6ZSwgRGVzZXJpYWxpemUsIERlYnVnLCBDbG9uZSwgQXBpRXJyb3JDb21wb25lbnQpXQojW29wZW5hcGlfZXJyb3IoCiAgc3RhdHVzKGNvZGUgPSA0MDMpLAogIHN0YXR1cyhjb2RlID0gNDA0KSwKICBzdGF0dXMoY29kZSA9IDQwNSwgZGVzY3JpcHRpb24gPSAiSW52YWxpZCBpbnB1dCIpLAogIHN0YXR1cyhjb2RlID0gNDA5KQopXQpwdWIgZW51bSBFcnJvclJlc3BvbnNlIHsKICBNZXRob2ROb3RBbGxvd2VkKFN0cmluZyksCiAgTm90Rm91bmQoU3RyaW5nKSwKICBDb25mbGljdChTdHJpbmcpLAogIFVuYXV0aG9yaXplZChTdHJpbmcpLAp9CgppbXBsIERpc3BsYXkgZm9yIEVycm9yUmVzcG9uc2UgewogIGZuIGZtdCgmc2VsZiwgX2Y6ICZtdXQgRm9ybWF0dGVyPCdfPikgLT4gc3RkOjpmbXQ6OlJlc3VsdCB7CiAgICB0b2RvISgpCiAgfQp9CgppbXBsIFJlc3BvbnNlRXJyb3IgZm9yIEVycm9yUmVzcG9uc2UgewogIGZuIHN0YXR1c19jb2RlKCZzZWxmKSAtPiBTdGF0dXNDb2RlIHsKICAgIHRvZG8hKCkKICB9Cn0KCiNbYXBpX29wZXJhdGlvbigKICB0YWcgPSAicGV0IiwKICBzdW1tYXJ5ID0gIkFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlIiwKICBkZXNjcmlwdGlvbiA9IHIjIyMiQWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmUKICAgIFBsb3AiIyMjLAogIGVycm9yX2NvZGUgPSA0MDUKKV0KcHViKGNyYXRlKSBhc3luYyBmbiB0ZXN0KAogIGJvZHk6IEpzb248VGVzdD4sCikgLT4gUmVzdWx0PENyZWF0ZWRKc29uPFRlc3Q+LCBFcnJvclJlc3BvbnNlPiB7CiAgT2soQ3JlYXRlZEpzb24oYm9keS4wKSkKfQoKI1thY3RpeF93ZWI6Om1haW5dCmFzeW5jIGZuIG1haW4oKSAtPiBSZXN1bHQ8KCksIGltcGwgRXJyb3I+IHsKICBIdHRwU2VydmVyOjpuZXcobW92ZSB8fCB7CiAgICBsZXQgc3BlYyA9IFNwZWMgewogICAgICBpbmZvOiBJbmZvIHsKICAgICAgICB0aXRsZTogIkFuIEFQSSIudG9fc3RyaW5nKCksCiAgICAgICAgdmVyc2lvbjogIjEuMC4wIi50b19zdHJpbmcoKSwKICAgICAgICAuLkRlZmF1bHQ6OmRlZmF1bHQoKQogICAgICB9LAogICAgICAuLkRlZmF1bHQ6OmRlZmF1bHQoKQogICAgfTsKCiAgICBBcHA6Om5ldygpCiAgICAgICAgLmRvY3VtZW50KHNwZWMpCiAgICAgICAgLndyYXAoTG9nZ2VyOjpkZWZhdWx0KCkpCiAgICAgICAgLnNlcnZpY2Uoc2NvcGUoIi90ZXN0IikKICAgICAgICAgICAgLnNlcnZpY2UoCiAgICAgICAgICAgICAgcmVzb3VyY2UoIiIpCiAgICAgICAgICAgICAgICAgIC5yb3V0ZShwb3N0KCkudG8odGVzdCkpCiAgICAgICAgICAgICkKICAgICAgICApCiAgICAgICAgLmJ1aWxkKCIvb3BlbmFwaS5qc29uIikKICB9KQogICAgICAuYmluZCgoSXB2NEFkZHI6OlVOU1BFQ0lGSUVELCA4MDgwKSk/CiAgICAgIC5ydW4oKQogICAgICAuYXdhaXQKfQpgYGAKCkZvciBhIGNvbXBsZXRlIGV4YW1wbGUsIHNlZSBbdGhlIHNhbXBsZSBwZXRzdG9yZV0oaHR0cHM6Ly9naXRodWIuY29tL25ldHdvLWlvL2FwaXN0b3MvdHJlZS9tYWluL2V4YW1wbGVzL3BldHN0b3JlKS4KCiMjIyBGZWF0dXJlIGZsYWdzCgp8IG5hbWUgICAgICAgICAgICAgICB8IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGV4dHJhIGRlcGVuZGVuY2llcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBgcXVlcnlgIChkZWZhdWx0KSAgfCBFbmFibGVzIGRvY3VtZW50aW5nIGBhY3RpeF93ZWI6OndlYjo6UXVlcnlgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBhY3RpeGAgKGRlZmF1bHQpICB8IEVuYWJsZXMgZG9jdW1lbnRpbmcgdHlwZXMgZnJvbSBgYWN0aXhgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGxhYl9xdWVyeWAgICAgICAgIHwgRW5hYmxlcyBkb2N1bWVudGluZyBgYWN0aXhfd2ViX2xhYjo6ZXh0cmFjdDo6UXVlcnlgICAgICAgICAgICAgICAgICAgICAgIHwgW2BhY3RpeC13ZWItbGFiYF0oaHR0cHM6Ly9jcmF0ZXMuaW8vY3JhdGVzL2FjdGl4LXdlYi1sYWIpICAgICAgIHwKfCBgZ2FyZGVgICAgICAgICAgICAgfCBFbmFibGVzIGlucHV0IHZhbGlkYXRpb24gdGhyb3VnaCBgZ2FyZGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbYGdhcmRlYF0oaHR0cHM6Ly9jcmF0ZXMuaW8vY3JhdGVzL2dhcmRlKSAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBhY3RpeC1zZXNzaW9uYCAgICB8IEVuYWJsZXMgZG9jdW1lbnRpbmcgdHlwZXMgZnJvbSBgYWN0aXgtc2Vzc2lvbmAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtgYWN0aXgtc2Vzc2lvbmBdKGh0dHBzOi8vY3JhdGVzLmlvL2NyYXRlcy9hY3RpeC1zZXNzaW9uKSAgICAgICB8CnwgYGFjdGl4LXdlYi1ncmFudHNgIHwgRW5hYmxlcyBzdXBwb3J0IGZvciBgYWN0aXgtd2ViLWdyYW50c2AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW2BhY3RpeC13ZWItZ3JhbnRzYF0oaHR0cHM6Ly9jcmF0ZXMuaW8vY3JhdGVzL2FjdGl4LXdlYi1ncmFudHMpIHwKfCBgcmFwaWRvY2AgICAgICAgICAgfCBFbmFibGVzIFJhcGlEb2MgdG8gZXhwb3NlIHRoZSBnZW5lcmF0ZWQgb3BlbmFwaSBmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGByZWRvY2AgICAgICAgICAgICB8IEVuYWJsZXMgUmVkb2MgdG8gZXhwb3NlIHRoZSBnZW5lcmF0ZWQgb3BlbmFwaSBmaWxlICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYHN3YWdnZXItdWlgICAgICAgIHwgRW5hYmxlcyBTd2FnZ2VyIFVJIHRvIGV4cG9zZSB0aGUgZ2VuZXJhdGVkIG9wZW5hcGkgZmlsZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgcXNfcXVlcnlgICAgICAgICAgfCBFbmFibGVzIGRvY3VtZW50aW5nIHR5cGVzIGZyb20gYHNlcmRlX3FzYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbYHNlcmRlX3FzYF0oaHR0cHM6Ly9jcmF0ZXMuaW8vY3JhdGVzL3NlcmRlLXFzKSAgICAgICAgICAgICAgICAgfAp8IGBjaHJvbm9gICAgICAgICAgICB8IEVuYWJsZXMgZG9jdW1lbnRpbmcgdHlwZXMgZnJvbSBgY2hyb25vYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtgY2hyb25vYF0oaHR0cHM6Ly9jcmF0ZXMuaW8vY3JhdGVzL2Nocm9ubykgICAgICAgICAgICAgICAgICAgICB8CnwgYG11bHRpcGFydGAgICAgICAgIHwgRW5hYmxlcyBkb2N1bWVudGluZyB0eXBlcyBmcm9tIGBhY3RpeC1tdWx0aXBhcnRgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW2BhY3RpeC1tdWx0aXBhcnRgXShodHRwczovL2NyYXRlcy5pby9jcmF0ZXMvYWN0aXgtbXVsdGlwYXJ0KSAgIHwKfCBgcnVzdF9kZWNpbWFsYCAgICAgfCBFbmFibGVzIGRvY3VtZW50aW5nIHR5cGVzIGZyb20gYHJ1c3RfZGVjaW1hbGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbYHJ1c3RfZGVjaW1hbGBdKGh0dHBzOi8vY3JhdGVzLmlvL2NyYXRlcy9ydXN0LWRlY2ltYWwpICAgICAgICAgfAp8IGB1dWlkYCAgICAgICAgICAgICB8IEVuYWJsZXMgZG9jdW1lbnRpbmcgdHlwZXMgZnJvbSBgdXVpZGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtgdXVpZGBdKGh0dHBzOi8vY3JhdGVzLmlvL2NyYXRlcy91dWlkKSAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYHVybGAgICAgICAgICAgICAgIHwgRW5hYmxlcyBkb2N1bWVudGluZyB0eXBlcyBmcm9tIGB1cmxgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW2B1cmxgXShodHRwczovL2NyYXRlcy5pby9jcmF0ZXMvdXJsKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgZXh0cmFzYCAgICAgICAgICAgfCBFbmFibGVzIGBjaHJvbm9gLCBgbXVsdGlwYXJ0YCwgYHJ1c3RfZGVjaW1hbGAsIGB1dWlkYCBhbmQgYHVybGAgZmVhdHVyZXMgfCBBbGwgZnJvbSBwcmV2aW91cyBmZWF0dXJlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKIyMjIFdoYXQncyBuZXh0CgotIEhhbmRsZSBzY2hlbWEgZm9yIGVycm9ycyB1c2luZyBBcGlFcnJvckNvbXBvbmVudCBkZXJpdmUgbWFjcm8KCiMjIyBBbHRlcm5hdGl2ZXMKCnwgQ3JhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEtleSBkaWZmZXJlbmNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgW2BwYXBlcmNsaXBgXShodHRwczovL2NyYXRlcy5pby9jcmF0ZXMvcGFwZXJjbGlwKSB8IFBhcGVyY2xpcCBpcyBzaW1pbGFyIHRvIHRoaXMgcHJvamVjdCBidXQgZ2VuZXJhdGVzIFN3YWdnZXIgdjIgZG9jdW1lbnRhdGlvbi4gUGFwZXJjbGlwIGFsc28gcHJvdmlkZXMgYSB0b29sIHRvIGdlbmVyYXRlIHJ1c3QgY29kZSBmcm9tIGEgU3dhZ2dlciB2MiBkb2N1bWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgW2B1dG9pcGFgXShodHRwczovL2NyYXRlcy5pby9jcmF0ZXMvdXRvaXBhKSAgICAgICB8IFV0b2lwYS1hY3RpeCBpbnRlZ3JhdGlvbiByZWx5IG9uIFthY3RpeCB3ZWIgbWFjcm9zXShodHRwczovL2RvY3MucnMvYWN0aXgtd2ViLW1hY3Jvcy9sYXRlc3QvYWN0aXhfd2ViX21hY3Jvcy8pIGZvciByb3V0aW5nIGRlZmluaXRpb24uIEF0IGZpcnN0LCB3ZSBwbGFubmVkIG9uIHJlbHlpbmcgb24gdXRvaXBhIGZvciBPQVMgdHlwZXMgYW5kIHNjaGVtYSBkZXJpdmF0aW9uIGJ1dCBmb3Igbm93IFt1dG9pcGEgZG9lc24ndCBzdXBwb3J0IGdlbmVyaWMgc3RydWN0IHRoZSB3YXkgd2UgaW50ZW5kZWQgdG9dKGh0dHBzOi8vZ2l0aHViLmNvbS9qdWhha3UvdXRvaXBhL2lzc3Vlcy83MDMpLiB8CnwgW2Bva2FwaWBdKGh0dHBzOi8vY3JhdGVzLmlvL2NyYXRlcy9va2FwaSkgICAgICAgICB8IFByZXR0eSBzaW1pbGFyLCBiYXNlZCBvbiBzY2hlbWFycyBhcyB3ZWxsIChhbmQgbWFpbnRhaW5lZCBieSB0aGUgZm91bmRlciBvZiBzY2hlbWFycykgYnV0IG5vdCBpbnRlZ3JhdGVkIHdpdGggYWN0aXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgojIyMgQXJ0aWNsZXMgIyMjCgotIGFubm91bmNlbWVudCBhcnRpY2xlIGNhbiBiZSBmb3VuZCBbb24gbWVkaXVtXShodHRwczovL21lZGl1bS5jb20vbmV0d28vZG9jdW1lbnRpbmctYXBpLWZvci1hY3RpeC13ZWItYjU3NWFkYjg0MWExKS4gSXQKICBhY3RzIGFzIGEgdHV0b3JpYWwgZm9yIEFwaXN0b3MuCgojIyMgQWJvdXQgdXMKCmFwaXN0b3MgaXMgcHJvdmlkZWQgYnkgW05ldHdvXShodHRwczovL3d3dy5uZXR3by5pbykuCgpXZSB1c2UgdGhpcyBjcmF0ZSBmb3Igb3VyIGludGVybmFsIG5lZWRzIGFuZCB0aGVyZWZvcmUgYXJlIGNvbW1pdHRlZCB0byBpdHMgbWFpbnRlbmFuY2UsIGhvd2V2ZXIgd2UgY2Fubm90IHByb3ZpZGUgYW55CmFkZGl0aW9uYWwgZ3VhcmFudHkuIFVzZSBpdCBhdCB5b3VyIG93biByaXNrcy4KCldoaWxlIHdlIHdvbid0IGludmVzdCBpbiBhbnkgZmVhdHVyZSB3ZSBkb24ndCBuZWVkLCB3ZSBhcmUgb3BlbiB0byBhY2NlcHQgYW55IHB1bGwgcmVxdWVzdCB5b3UgbWlnaHQgcHJvcG9zZS4KCldlIGFyZSBhIEZyYW5jZSBiYXNlZCBmdWxsLXJlbW90ZSBjb21wYW55IG9wZXJhdGluZyBpbiB0aGUgdGVsZWNvbSBpbmR1c3RyeS4gSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIGxlYXJuaW5nIG1vcmUsCmZlZWwgZnJlZSB0byB2aXNpdCBbb3VyIGNhcmVlciBwYWdlXShodHRwczovL3d3dy5uZXR3by5pby9jYXJyaWVyZSkuCg== readmeEtag: '"ff5595f5f96dad75f7984f9b02ebc1a36bfe3af3"' readmeLastModified: Wed, 11 Jun 2025 13:23:17 GMT repositoryId: 691100358 description: Actix-web wrapper for automatic OpenAPI 3.0 documentation generation. created: '2023-09-13T13:54:51Z' updated: '2026-02-03T08:13:17Z' language: Rust archived: false stars: 207 watchers: 4 forks: 11 owner: netwo-io logo: https://avatars.githubusercontent.com/u/64151169?v=4 license: MIT repoEtag: '"240adb7d2334452a94469b10a6f3f836291096b90ee6aa26b2b4ffbcda2eafa7"' repoLastModified: Tue, 03 Feb 2026 08:13:17 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/aaronchen2k/deeptest v3: true id: aba6967d5bd400d92f9d80a990915b27 repositoryMetadata: base64Readme: >- PGltZyBzcmM9Inhkb2MvaW1hZ2UvbG9nby5wbmciIHdpZHRoPSIyMDAiIC8+CgpEZWVwVGVzdCBpcyBDb250aW51ZSBUZXN0aW5nIFBsYXRmb3JtIHdyaXR0ZW4gaW4gR28gd2l0aCBJcmlzLCBHb3JtLCBNeVNRTCBhbmQgVnVlMywgUHJvdG9idWYsIFdlYlNvY2tldC4KCipQbGVhc2UgcmVmZXIgdG8gW05HVGVzdGluZ10oaHR0cHM6Ly9naXRodWIuY29tL2Fhcm9uY2hlbjJrL25ndGVzdGluZy1wbGF0Zm9ybSkgdG8gZmluZCB0aGUgcHJldmlvdXMgamF2YSBwcm9qZWN0LioKCiMjIyBVc2VyIEd1aWRlCmh0dHA6Ly9kb2MuZGVlcHRlc3QuY29tCgojIyMgUXVpY2sgU3RhcnQKaHR0cDovL2RvYy5kZWVwdGVzdC5jb20vc2VydmVyLmh0bWwKCiMjIyBMaWNlbnNlcwpBbGwgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFtHUEx2MyBMaWNlbnNlXShMSUNFTlNFLm1kKS4KCiMjIFRoYW5rcwpUaGFuayB5b3UgW0pldEJyYWluc10oaHR0cHM6Ly93d3cuamV0YnJhaW5zLmNvbSkgZm9yIHByb3ZpZGluZyBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLgo= readmeEtag: '"9410f3c68f21cda7faf6fc0bb6d84759ed16e7b6"' readmeLastModified: Fri, 16 Aug 2024 09:26:22 GMT repositoryId: 122702750 description: API Management and Testing Platform created: '2018-02-24T04:23:08Z' updated: '2025-09-05T02:08:45Z' language: Go archived: false stars: 153 watchers: 18 forks: 67 owner: aaronchen2k logo: https://avatars.githubusercontent.com/u/3222874?v=4 license: GPL-3.0 repoEtag: '"8f6930939c505b3a45e9a4d45d1626fd1a228f4a5c9117c47e0ae58243bf0c77"' repoLastModified: Fri, 05 Sep 2025 02:08:45 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/deeptest-com/deeptest - source: openapi3 tags repository: https://github.com/tyrchen/quenya v3: true repositoryMetadata: base64Readme: >- IyBRdWVueWEKCl9fRGlzY2xhaW1lcjogUXVlbnlhIGlzIHVuZGVyIGFjdGl2ZSBkZXZlbG9wbWVudCBhbmQgaXMgYXQgaXRzIGVhcmx5IHN0YWdlLiBQbGVhc2UgRE8gTk9UIHVzZSBpdCBpbiBwcm9kIGVudmlyb25tZW50LiBVc2Ugd2l0aCBjYXV0aW9ucy5fXwoKUXVlbnlhIGlzIGEgZnJhbWV3b3JrIHRvIGJ1aWxkIGhpZ2gtcXVhbGl0eSBSRVNUIEFQSSBhcHBsaWNhdGlvbnMgYmFzZWQgb24gZXh0ZW5kZWQgW09wZW5BUEkgc3BlY10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4xLjAubWQpLiBGb3IgdGhlIFF1ZW55YSBleHRlbnNpb24sIHNlZSBbaGVyZV0oZG9jcy9xdWVueWFfZXh0ZW5zaW9uLm1kKS4gV2l0aCB0aGUgT0FQSSBzcGVjLCBRdWVueWEgY2FuIGdlbmVyYXRlIGhpZ2gtcXVhbGl0eSBjb2RlIGZvciBtYW55IHBhcnRzIG9mIHRoZSBBUEkgcGlwZWxpbmU6CgotIFByZXByb2Nlc3NvcnM6CiAgLSBbeF0gcmVxdWVzdCB2YWxpZGF0b3I6IHZhbGlkYXRlIHRoZSByZXF1ZXN0IHBhcmFtcwogIC0gWyBdIGF1dGggaGFuZGxlcjogcHJvY2VzcyBhdXRoZW50aWNhdGlvbiBmb3IgdGhlIEFQSSBlbmRwb2ludHMKICAtIFsgXSBhY2Nlc3MgY29udHJvbGxlcjogcHJvY2VzcyBhdXRob3JpemF0aW9uIGZvciB0aGUgQVBJIGVuZHBvaW50cwotIEFQSSBoYW5kbGVyczoKICAtIFt4XSBmYWtlIEFQSSBoYW5kbGVyIHRvIGdlbmVyYXRlIGEgZmFrZSByZXNwb25zZSBmb3IgbW9ja2luZyBwdXJwb3NlCiAgLSBbIF0gZ1JQQyBoYW5kbGVyIHRvIGFjdCBhcyBhIHByb3h5IGJldHdlZW4geW91ciBjbGllbnQgYW5kIHlvdXIgZ1JQQyBzZXJ2ZXIgKHJlcXVpcmUgZXh0ZW5kZWQgT3BlbkFQSSBncmFtbWFyKQotIFBvc3Rwcm9jZXNzb3JzOgogIC0gW3hdIHJlc3BvbnNlIHZhbGlkYXRvciB0byB2YWxpZGF0ZSB0aGUgcmVzcG9uc2UgYm9keSBhbmQgaGVhZGVycyAoZm9yIGRldi90ZXN0aW5nIHB1cnBvc2UpCgpRdWVueWEgd2lsbCBhbHNvIGdlbmVyYXRlIHByb3BlcnR5IHRlc3RpbmcsIGl0IHdpbGwgdXNlIGBQbHVnLlRlc3RgIGFuZCBgU3RyZWFtRGF0YWAgdG8gYnVpbGQgdGVzdHMuIFJlcXVlc3RzICh1cmwsIHF1ZXJ5LCByZXF1ZXN0IGhlYWRlcnMgYW5kIHJlcXVlc3QgYm9keSkgd2lsbCBiZSBnZW5lcmF0ZWQgYW5kIHRoZW4gc2VudCB0byBnZW5lcmF0ZWQgYFJvdXRlcmAsIHRoZW4gaXQgd2lsbCB1c2UgdGhlIHJlc3BvbnNlIHNjaGVtYSB0byB2YWxpZGF0ZSB0aGUgcmVzdWx0LiBDdXJyZW50bHkgdGhlIHRlc3Rpbmcgb25seSBjb3ZlcnMgaGFwcHkgcGF0aC4KClF1ZW55YSB3aWxsIGFsc28gcHJvdmlkZSBhIHNldCBvZiBtb2R1bGVzLCBwbHVncywgdGVzdCBoZWxwZXJzIHRvIGhlbHAgeW91IGJ1aWxkIFJFU1QgQVBJcyBlYXNpbHkuCgojIyBIb3cgdG8gdXNlIFF1ZW55YQoKIyMjIEluc3RhbGwgQ0xJCgpGaXJzdCBvZiBhbGwsIGluc3RhbGwgUXVlbnlhIENMSToKCmBgYGJhc2gKJCBtaXggYXJjaGl2ZS5pbnN0YWxsIGhleCBxdWVueWFfaW5zdGFsbGVyClJlc29sdmluZyBIZXggZGVwZW5kZW5jaWVzLi4uCkRlcGVuZGVuY3kgcmVzb2x1dGlvbiBjb21wbGV0ZWQ6Ck5ldzoKICBxdWVueWFfaW5zdGFsbGVyIDAuMy4wCiogR2V0dGluZyBxdWVueWFfaW5zdGFsbGVyIChIZXggcGFja2FnZSkKCjIwOjIyOjE1LjYwNSBbaW5mb10gIGVybF90YXI6IHJlbW92ZWQgbGVhZGluZyAnLycgZnJvbSBtZW1iZXIgbmFtZXMKCkFsbCBkZXBlbmRlbmNpZXMgYXJlIHVwIHRvIGRhdGUKQ29tcGlsaW5nIDUgZmlsZXMgKC5leCkKR2VuZXJhdGVkIHF1ZW55YV9pbnN0YWxsZXIgYXBwCkdlbmVyYXRlZCBhcmNoaXZlICJxdWVueWFfaW5zdGFsbGVyLTAuMy4wLmV6IiB3aXRoIE1JWF9FTlY9cHJvZApBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gaW5zdGFsbCAicXVlbnlhX2luc3RhbGxlci0wLjMuMC5leiI/IFtZbl0KKiBjcmVhdGluZyAvVXNlcnMvdGNoZW4vLm1peC9hcmNoaXZlcy9xdWVueWFfaW5zdGFsbGVyLTAuMy4wCmBgYAoKIyMjIEdlbmVyYXRlIEFQUCBmcm9tIGFuIGV4aXN0aW5nIE9BUEkgc3BlYwoKT25jZSB5b3UgZmluaXNoZWQgaW5zdGFsbGluZyBxdWVueWEgQ0xJLCB5b3UgY2FuIGJ1aWxkIGEgQVBJIGFwcCB3aXRoIHF1ZW55YToKCmBgYGJhc2gKJCBjZCAvdG1wCiQgY3VybCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdHlyY2hlbi9xdWVueWEvbWFzdGVyL3BhcnNlci90ZXN0L2ZpeHR1cmUvcGV0c3RvcmUueW1sID4gcGV0c3RvcmUueW1sCiQgbWl4IHF1ZW55YS5uZXcgcGV0c3RvcmUueW1sIHBldHN0b3JlCiogY3JlYXRpbmcgcGV0c3RvcmUvY29uZmlnL2NvbmZpZy5leHMKKiBjcmVhdGluZyBwZXRzdG9yZS9jb25maWcvZGV2LmV4cwoqIGNyZWF0aW5nIHBldHN0b3JlL2NvbmZpZy9wcm9kLmV4cwoqIGNyZWF0aW5nIHBldHN0b3JlL2NvbmZpZy9zdGFnaW5nLmV4cwoqIGNyZWF0aW5nIHBldHN0b3JlL2NvbmZpZy90ZXN0LmV4cwoqIGNyZWF0aW5nIHBldHN0b3JlL2xpYi9wZXRzdG9yZS9hcHBsaWNhdGlvbi5leAoqIGNyZWF0aW5nIHBldHN0b3JlL2xpYi9wZXRzdG9yZS5leAoqIGNyZWF0aW5nIHBldHN0b3JlL21peC5leHMKKiBjcmVhdGluZyBwZXRzdG9yZS9SRUFETUUubWQKKiBjcmVhdGluZyBwZXRzdG9yZS8uZm9ybWF0dGVyLmV4cwoqIGNyZWF0aW5nIHBldHN0b3JlLy5naXRpZ25vcmUKKiBjcmVhdGluZyBwZXRzdG9yZS90ZXN0L3Rlc3RfaGVscGVyLmV4cwoKRmV0Y2ggYW5kIGluc3RhbGwgZGVwZW5kZW5jaWVzPyBbWW5dCiogcnVubmluZyBtaXggZGVwcy5nZXQKKiBydW5uaW5nIG1peCBkZXBzLmNvbXBpbGUKCldlIGFyZSBhbG1vc3QgdGhlcmUhIFRoZSBmb2xsb3dpbmcgc3RlcHMgYXJlIG1pc3Npbmc6CgogICAgJCBjZCBwZXRzdG9yZQoKWW91IGNhbiBydW4geW91ciBhcHAgaW5zaWRlIElFeCAoSW50ZXJhY3RpdmUgRWxpeGlyKSBhczoKCiAgICAkIGlleCAtUyBtaXgKCgpgYGAKClRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgZWxpeGlyIGFwcCwgY29weSB5b3VyIHNwZWMgZmlsZSAob3Igc3BlYyBmb2xkZXIpIHRvIGBwcml2L3NwZWMvbWFpbi55bWxgLCBhbmQgZ2VuZXJhdGUgQVBJIGNvZGUgYmFzZWQgb24gdGhlIHNwZWMuCgojIyMgUnVubmluZyB0aGUgYXBwCgpOb3cgeW91IGNhbiBydW4gdGhlIGFwcDoKCmBgYGJhc2gKJCBjZCBwZXRzdG9yZS8KJCBtaXggY29tcGlsZS5xdWVueWEgIyB0aGlzIGNvbW1hbmQgd2lsbCBnZW5lcmF0ZS9yZWdlbmVyYXRlIGNvZGUgb24gL2dlbiBhbmQgL3Rlc3QvZ2VuIGZvbGRlcnMKJCBpZXggLVMgbWl4CkVybGFuZy9PVFAgMjMgW2VydHMtMTEuMS4zXSBbc291cmNlXSBbNjQtYml0XSBbc21wOjE2OjE2XSBbZHM6MTY6MTY6MTBdIFthc3luYy10aHJlYWRzOjFdIFtoaXBlXSBbZHRyYWNlXQoKQ29tcGlsaW5nIDQ0IGZpbGVzICguZXgpCkdlbmVyYXRlZCBwZXRzdG9yZSBhcHAKSW50ZXJhY3RpdmUgRWxpeGlyICgxLjExLjIpIC0gcHJlc3MgQ3RybCtDIHRvIGV4aXQgKHR5cGUgaCgpIEVOVEVSIGZvciBoZWxwKQpgYGAKCkp1c3QgcnVuIGEgZmV3IGNvbW1hbmRzIHdpdGhvdXQgd3JpdGluZyBldmVuIGEgc2luZ2xlIGxpbmUgb2YgY29kZSwgeW91IGhhdmUgYW4gQVBJIGFwcCByZWFkeSB0byB1c2UuIFRyeSBvcGVuIGBodHRwOi8vbG9jYWxob3N0OjQwMDAvc3dhZ2dlcmAuIFlvdSB3aWxsIHNlZSBhbiBBUEkgcGxheWdyb3VuZCB3aXRoIHN0YW5kYXJkIFN3YWdnZXIgVUk6CgohW10oZG9jcy9pbWFnZXMvc3dhZ2dlci5qcGcpCgpJdCdzIGdyZWF0IGJ1dCBub3RoaW5nIHNwZWNpYWwuIE5vdywgdHJ5IHRvIGludm9rZSBvbmUgb2YgdGhlIEFQSXMsIHNheSBgR0VUIC9wZXQvZmluZEJ5U3RhdHVzYDoKCiFbXShkb2NzL2ltYWdlcy9zd2FnZ2VyX2NhbGwuanBnKQoKQW1hemluZyEgRG9uJ3QgYmVsaWV2ZSB3aGF0IHlvdSBzYXc/IFRyeSB3aXRoIHRoaXMgY29tbWFuZDoKCmBgYGJhc2gKY3VybCAtWCBQT1NUICJodHRwOi8vbG9jYWxob3N0OjQwMDAvcGV0IiAtSCAgImFjY2VwdDogYXBwbGljYXRpb24vanNvbiIgLUggICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIC1kICJ7XCJuYW1lXCI6XCJkb2dnaWVcIixcInBob3RvVXJsc1wiOltcImJhZCB1cmxcIl19IiAtaQpIVFRQLzEuMSA0MDAgQmFkIFJlcXVlc3QKY2FjaGUtY29udHJvbDogbWF4LWFnZT0wLCBwcml2YXRlLCBtdXN0LXJldmFsaWRhdGUKY29udGVudC1sZW5ndGg6IDMzCmRhdGU6IE1vbiwgMzAgTm92IDIwMjAgMDQ6NDU6MzcgR01UCnNlcnZlcjogQ293Ym95CgpFeHBlY3RlZCB0byBiZSBhIHZhbGlkIGltYWdlX3VyaS4KYGBgCgpBY2NvcmRpbmcgdG8gW3BldHN0b3JlLnltbF0odGVzdC9maXh0dXJlL3BldHN0b3JlLnltbCksIHJlcXVlc3QgYm9keSBtdXN0IGJlIGEgUGV0IHR5cGUsIGFuZCBgbmFtZWAgLyBgcGhvdG9VcmxzYCBhcmUgcmVxdWlyZWQuIGBwaG90b1VybHNgIHNoYWxsIGJlIGFuIGFycmF5IG9mIHN0cmluZywgd2l0aCBmb3JtYXQgYXMgYGltYWdlX3VybGAgKGFuIGV4dGVuZGVkIGZvcm1hdCBieSBxdWVueWEpLiBRdWVueWEgd2lsbCB2YWxpZGF0ZSByZXF1ZXN0cyBieSBpdHMgc2NoZW1hIHNvIGhlcmUgd2UgbmVlZCBhIHZhbGlkIHVybC4gTGV0J3MgY29ycmVjdCB0aGlzOgoKYGBgYmFzaAokIGN1cmwgLVggUE9TVCAiaHR0cDovL2xvY2FsaG9zdDo0MDAwL3BldCIgLUggICJhY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iIC1IICAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiAtZCAie1wibmFtZVwiOlwiZG9nZ2llXCIsXCJwaG90b1VybHNcIjpbXCJodHRwczovL3NvdXJjZS51bnNwbGFzaC5jb20vcmFuZG9tXCJdfSIgLWkKSFRUUC8xLjEgMjAwIE9LCmNhY2hlLWNvbnRyb2w6IG1heC1hZ2U9MCwgcHJpdmF0ZSwgbXVzdC1yZXZhbGlkYXRlCmNvbnRlbnQtbGVuZ3RoOiAzNzYKY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04CmRhdGU6IE1vbiwgMzAgTm92IDIwMjAgMDQ6NTE6MDMgR01UCnNlcnZlcjogQ293Ym95Cgp7ImNhdGVnb3J5Ijp7ImlkIjo2ODMsIm5hbWUiOiJEdGxpcjZ2Z2t6NlVlQXdLNXE0Ll85LS1BLi0tLl9WX21qcC5LLS0zVC4wLWVfLjctX3FmUm1mdSJ9LCJpZCI6OTI4LCJuYW1lIjoiNzU4WWhsX2p4X1J0X2ZpNWZ6X0p0RV9rX19KWTJKX19UdDlZMSIsInBob3RvVXJscyI6WyJodHRwczovL3NvdXJjZS51bnNwbGFzaC5jb20vcmFuZG9tLzQwMHg0MDAiLCJodHRwczovL3NvdXJjZS51bnNwbGFzaC5jb20vcmFuZG9tLzQwMHg0MDAiXSwic3RhdHVzIjoic29sZCIsInRhZ3MiOlt7ImlkIjo0ODAsIm5hbWUiOiJpdXN0byJ9LHsiaWQiOjY0LCJuYW1lIjoiZXJyb3IifSx7ImlkIjo2NTgsIm5hbWUiOiJtb2RpIn0seyJpZCI6MzEzLCJuYW1lIjoibmloaWwifV19CmBgYAoKIyMjIFJ1bm5pbmcgdGhlIHRlc3RzCgpRdWVueWEgZ2VuZXJhdGVzIHByb3BlcnR5IHRlc3RzIGZvciBhbGwgeW91ciBBUEkgZW5kcG9pbnRzIGJhc2VkIG9uIE9BUEkgc3BlYywgc28gYmVmb3JlIGNvZGluZyB5b3VyIG93biBBUEkgaGFuZGxlciBpbnRvIHRoZSByZXBvLCB5b3UnZCBsaWtlIHRvIGJlIG1vcmUgdGVzdC1kcml2ZW4sIHRyeSBgbWl4IHRlc3RgIG5vdzoKCmBgYGJhc2gKJCBtaXggdGVzdApDb21waWxpbmcgNDIgZmlsZXMgKC5leCkKR2VuZXJhdGVkIHBldHN0b3JlIGFwcAouLi4uLi4uLi4uLi4uLi4uLi4uLgoKRmluaXNoZWQgaW4gMi43IHNlY29uZHMKMjAgcHJvcGVydGllcywgMiBmYWlsdXJlcwpgYGAKCk5vdGUgdGhlc2UgdGVzdHMgY292ZXJzIGFsbCBzdWNjZXNzIGNhc2VzLiBJbiBmdXR1cmUsIHdlIHdpbGwgdHJ5IHRvIGNvdmVyIGFsbCBmYWlsZWQgY2FzZXMgaW4gUXVlbnlhLgoKIyMjIEhvdyBtdWNoIGNvZGUgUXVlbnlhIGdlbmVyYXRlZCBmb3IgeW91PwoKSWYgeW91IGhhdmUgYHRva2VpYCBpbnN0YWxsZWQsIHlvdSBjYW4gaGF2ZSBhIGJhc2ljIGlkZWEgb24gaG93IG11Y2ggY29kZSBRdWVueWEgZ2VuZXJhdGVkIGZvciB5b3U6CgpgYGBiYXNoCiQgdG9rZWkgZ2VuIHRlc3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogTGFuZ3VhZ2UgICAgICAgICAgICBGaWxlcyAgICAgICAgTGluZXMgICAgICAgICBDb2RlICAgICBDb21tZW50cyAgICAgICBCbGFua3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogRWxpeGlyICAgICAgICAgICAgICAgICA4MyAgICAgICAgIDgxNTIgICAgICAgICA3MDYwICAgICAgICAgICAgMCAgICAgICAgIDEwOTIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogVG90YWwgICAgICAgICAgICAgICAgICA4MyAgICAgICAgIDgxNTIgICAgICAgICA3MDYwICAgICAgICAgICAgMCAgICAgICAgIDEwOTIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpgYGAKClRoYXQncyA4ayBMb0MgZm9yIHRoZSBwZXRzdG9yZSBzcGVjLiBUaGUgbW9yZSBBUElzIHlvdSBkZWZpbmVkLCB0aGUgbW9yZSBRdWVueWEgd2lsbCBkbyBmb3IgeW91LiBPbmNlIHdlIGhhdmUgbW9zdCBvZiB0aGUgcGFydHMgb2YgUXVlbnlhIGJ1aWx0LCB0aGlzIG51bWJlciB3aWxsIGJlIG11Y2ggYmlnZ2VyLgoKIyMjIFdoYXQncyB1bmRlciB0aGUgaG9vZD8KCk5vdyB5b3UgaGF2ZSBhIGJhc2ljIGZlZWxpbmcgb24gd2hhdCdzIGdvaW5nIG9uLiBCeSBkZWZhdWx0LCBRdWVueWEgd2lsbCBnZW5lcmF0ZSBhbiBBUEkgcm91dGVyIGJhc2VkIG9uIEFQSSBzcGVjLCB3aXRoIGEgY29udmVuaWVudCBzd2FnZ2VyIFVJLiBGb3IgZWFjaCByb3V0ZSBkZWZpbmVkIGluIHRoZSBzcGVjLCBRdWVueWEgd2lsbCBnZW5lcmF0ZSBhIFBsdWcgZm9yIGl0LiBBbmQgYSBQbHVnIGlzIGEgcGlwZWxpbmUgd2hpY2ggd2lsbCBleGVjdXRlIGluIHRoaXMgb3JkZXI6CgotIHByZXByb2Nlc3NvcnM6IGFueSBQbHVnIHRvIGJlIGV4ZWN1dGVkIGJlZm9yZSB0aGUgYWN0dWFsIHJvdXRlIGhhbmRsZXIuIEhlcmUsIFJlcXVlc3RWYWxpZGF0b3IgUGx1ZyB3aWxsIGhlbHAgdG8gdmFsaWRhdGUgcmVxdWVzdCBwYXJhbXMgYWdhaW5zdCB0aGUgc2NoZW1hLgotIGhhbmRsZXJzOiBoYW5kbGVycyBmb3IgdGhlIHJvdXRlLiBUaGlzIGlzIHdoYXQgeW91IHNoYWxsIHB1dCB5b3VyIGFjdHVhbCBBUEkgbG9naWMsIGJ1dCBmb3IgbW9ja2luZyBwdXJwb3NlLCBRdWVueWEgZ2VuZXJhdGVzIGEgZmFrZSBoYW5kbGVyIHdoaWNoIG1lZXRzIHRoZSByZXNwb25zZSBzY2hlbWEuIEluIGZ1dHVyZSwgUXVlbnlhIHdpbGwgc3VwcG9ydCBnUlBDIGhhbmRsZXIgd2hpY2ggd2lsbCBiZSB2ZXJ5IHVzZWZ1bCBpZiB3aGF0IHlvdSBuZWVkIGlzIGEgZ3JwYyBwcm94eSAodGhpbmsgW2dycGMtZ2F0ZXdheV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMtZWNvc3lzdGVtL2dycGMtZ2F0ZXdheSkpLgotIHBvc3Rwcm9jZXNzb3JzOiBhbnkgUGx1ZyB0byBiZSBleGVjdXRlZCBiZWZvcmUgc2VuZGluZyB0aGUgcmVzcG9uc2UuIFF1ZW55YSBjYW4gZ2VuZXJhdGUgYSBSZXNwb25zZVZhbGlkYXRvciBpZiB5b3UgbmVlZCBpdC4gSXQncyBnb29kIGZvciBkZXYvc3RhZ2luZyBwdXJwb3NlLiBCeSBkZWZhdWx0IGl0IHdvbid0IGdlbmVyYXRlIGl0LgoKUXVlbnlhIGNvbnNpc3RzIG9mIDMgcGFydHM6CgoxLiBxdWVueWFfaW5zdGFsbGVyOiBoZWxwIHdpdGggUXVlbnlhIHByb2plY3QgZ2VuZXJhdGlvbiAodGhlIENMSSB5b3UganVzdCB1c2VkKS4KMi4gcXVlbnlhX2J1aWxkZXI6IGEgY29kZSBnZW5lcmF0b3IgdG8gZ2VuZXJhdGUgQVBJIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIGV4dGVuZGVkIE9wZW5BUEkgdjMgc3BlYy4gRXZlcnkgdGltZSB5b3UgcnVuIGBtaXggY29tcGlsZWAsIFF1ZW55YSB3aWxsIHJlYnVpbGQgdGhlIHNwZWMgdG8gY29kZSAobmVlZCBpbXByb3ZlbWVudCBoZXJlKS4KMy4gcXVlbnlhOiBhIGxpYnJhcnkgY29uc2lzdCBvZiB1dGlsaXR5IGZ1bmN0aW9ucywgdGVzdHMgYW5kIGEgcGxheWdyb3VuZCB0byBwbGF5IHdpdGggQVBJIG9yIEFQSSBzdHViLgoKIyMgV2hhdCdzIHRoZSBnZW5lcmF0ZWQgY29kZT8KCklmIHlvdSBsb29rIGF0IHRoZSBgZ2VuYCBmb2xkZXIgaW4gdGhlIG5ld2x5IGdlbmVyYXRlZCBhcHAsIHlvdSdsbCBmaW5kIGFsbCB5b3VyIHJvdXRlcyBhbmQgcm91dGVycyBhcmUgb3JnYW5pemVkIGJ5IGBvcGVyYXRpb25JZGA6CgpgYGBiYXNoCiQgdHJlZSAtTCAxCi4K4pSc4pSA4pSAIFBldHN0b3JlLkdlbi5BcGlSb3V0ZXIuZXgK4pSc4pSA4pSAIFBldHN0b3JlLkdlbi5Sb3V0ZXIuZXgK4pSc4pSA4pSAIGFkZFBldArilJzilIDilIAgY3JlYXRlVXNlcgrilJzilIDilIAgY3JlYXRlVXNlcnNXaXRoQXJyYXlJbnB1dArilJzilIDilIAgY3JlYXRlVXNlcnNXaXRoTGlzdElucHV0CuKUnOKUgOKUgCBkZWxldGVPcmRlcgrilJzilIDilIAgZGVsZXRlUGV0CuKUnOKUgOKUgCBkZWxldGVVc2VyCuKUnOKUgOKUgCBmaW5kUGV0c0J5U3RhdHVzCuKUnOKUgOKUgCBmaW5kUGV0c0J5VGFncwrilJzilIDilIAgZ2V0SW52ZW50b3J5CuKUnOKUgOKUgCBnZXRPcmRlckJ5SWQK4pSc4pSA4pSAIGdldFBldEJ5SWQK4pSc4pSA4pSAIGdldFVzZXJCeU5hbWUK4pSc4pSA4pSAIGxvZ2luVXNlcgrilJzilIDilIAgbG9nb3V0VXNlcgrilJzilIDilIAgcGxhY2VPcmRlcgrilJzilIDilIAgdXBkYXRlUGV0CuKUnOKUgOKUgCB1cGRhdGVQZXRXaXRoRm9ybQrilJzilIDilIAgdXBkYXRlVXNlcgrilJTilIDilIAgdXBsb2FkRmlsZQoKMjAgZGlyZWN0b3JpZXMsIDIgZmlsZXMKYGBgCgpUaGUgbWFpbiByb3V0ZXIgd2lsbCBzZXJ2ZSBzd2FnZ2VyIGFuZCBmb3J3YXJkIHRoZSBwYXRoIChleHRyYWN0ZWQgZnJvbSB0aGUgc3BlYykgdG8gdGhlIEFQSSByb3V0ZXI6CgpgYGBlbGl4aXIKZGVmbW9kdWxlIFBldHN0b3JlLkdlbi5Sb3V0ZXIgZG8KICBAbW9kdWxlZG9jIGZhbHNlCiAgdXNlIFBsdWcuUm91dGVyCiAgdXNlIFBsdWcuRXJyb3JIYW5kbGVyCiAgcmVxdWlyZSBMb2dnZXIKICBhbGlhcyBRdWVueWEuUGx1Zy5Td2FnZ2VyUGx1ZwogIHBsdWcgUGx1Zy5Mb2dnZXIsIGxvZzogOmluZm8KICBwbHVnIFBsdWcuU3RhdGljLCBhdDogIi9wdWJsaWMiLCBmcm9tOiB7OnF1ZW55YSwgInByaXYvc3dhZ2dlciJ9CgogIHBsdWcgOm1hdGNoCiAgcGx1ZyBQbHVnLlBhcnNlcnMsIHBhcnNlcnM6IFs6anNvbl0sIHBhc3M6IFsiYXBwbGljYXRpb24vanNvbiJdLCBqc29uX2RlY29kZXI6IEphc29uCiAgcGx1ZyA6ZGlzcGF0Y2gKCiAgZGVmIGhhbmRsZV9lcnJvcnMoY29ubiwgJXtraW5kOiBfa2luZCwgcmVhc29uOiAle21lc3NhZ2U6IG1zZ30sIHN0YWNrOiBfc3RhY2t9KSBkbwogICAgUGx1Zy5Db25uLnNlbmRfcmVzcChjb25uLCBjb25uLnN0YXR1cywgbXNnKQogIGVuZAoKICBkZWYgaGFuZGxlX2Vycm9ycyhjb25uLCAle2tpbmQ6IGtpbmQsIHJlYXNvbjogcmVhc29uLCBzdGFjazogc3RhY2t9KSBkbwogICAgTG9nZ2VyLndhcm4oCiAgICAgICJJbnRlcm5hbCBlcnJvcjpcbiBraW5kOiAje2luc3BlY3Qoa2luZCl9XG4gcmVhc29uOiAje2luc3BlY3QocmVhc29uKX1cbiBzdGFjazogI3sKICAgICAgICBpbnNwZWN0KHN0YWNrKQogICAgICB9IgogICAgKQoKICAgIFBsdWcuQ29ubi5zZW5kX3Jlc3AoY29ubiwgY29ubi5zdGF0dXMsICJJbnRlcm5hbCBzZXJ2ZXIgZXJyb3IiKQogIGVuZAoKICBnZXQoIi9zd2FnZ2VyL21haW4uanNvbiIsIHRvOiBTd2FnZ2VyUGx1ZywgaW5pdF9vcHRzOiBbYXBwOiA6cGV0c3RvcmVdKQogIGdldCgiL3N3YWdnZXIiLCB0bzogU3dhZ2dlclBsdWcsIGluaXRfb3B0czogW3NwZWM6ICIvc3dhZ2dlci9tYWluLmpzb24iXSkKICBmb3J3YXJkICIvIiwgdG86IFBldHN0b3JlLkdlbi5BcGlSb3V0ZXIsIGluaXRfb3B0czogW10KZW5kCmBgYAoKVGhlIEFQSSByb3V0ZXIgY29udGFpbnMgY29kZSBmb3IgYWxsIHJvdXRlcywgZm9yIGV4YW1wbGU6CgpgYGBlbGl4aXIKcHV0KCIvdXNlci86dXNlcm5hbWUiLAogICAgdG86IFJvdXRlUGx1ZywKICAgIGluaXRfb3B0czogWwogICAgICBwcmVwcm9jZXNzb3JzOiBbUGV0c3RvcmUuR2VuLlVwZGF0ZVVzZXIuUmVxdWVzdFZhbGlkYXRvcl0sCiAgICAgIHBvc3Rwcm9jZXNzb3JzOiBbXSwKICAgICAgaGFuZGxlcnM6IFtQZXRzdG9yZS5HZW4uVXBkYXRlVXNlci5GYWtlSGFuZGxlcl0KICAgIF0KICApCmBgYAoKV2hlbiBhIGBQVVQgL3VzZXIvOnVzZXJuYW1lYCByZXF1ZXN0IGtpY2tzIGluLCBpdCB3aWxsIGJlIGhhbmRsZWQgYnkgYFF1ZW55YS5QbHVnLlJvdXRlUGx1Z2AsIGFuZCBpdCB3aWxsIHJ1biBgcHJlcHJvY2Vzc29yc2AsIGBoYW5kbGVyc2AgYW5kIGBwb3N0cHJvY2Vzc29yc2AgaW4gdGhlIHJpZ2h0IG9yZGVyLgoKIyMgV2h5IFF1ZW55YT8KCkkndmUgZ2l2ZW4gYSB0b3BpYyBbQnVpbGRpbmcgbmV4dC1nZW4gQVBJc10oZG9jcy9idWlsZGluZy1uZXh0LWdlbi1hcGlzLnBkZikgaW4gMTAvMjAyMC4gVGhlIG9yaWdpbmFsIGlkZWEgaXM6IHdoeSBkb24ndCBJIGJ1aWxkIGEgY29kZSBnZW5lcmF0b3IgdG8gZ2VuZXJhdGUgQVBJIGNvZGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHdyaXRlIHJlcGVhdGVkbHk/IEkgYWx3YXlzIGhvbGQgdGhpcyB0ZW5ldCB0aGF0IGV2ZXJ5dGhpbmcgY291bGQgYmUgZ2VuZXJhdGVkIHNob3VsZCBiZSBnZW5lcmF0ZWQuCgpCdWlsZGluZyBhIGhpZ2gtcXVhbGl0eSBIVFRQIEFQSSBhcHAgaXMgbm9uLXRyaXZpYWwuIEdvb2QgQVBJcyBoYXZlIHRoZXNlIHRyYWl0czoKCkZvciBBUEkgdXNlcnM6CgotIEVhc3kgdG8gbGVhcm4gYW5kIGludHVpdGl2ZSB0byB1c2UgKHRoZSBhcHAgcHJvdmlkZXMgZnVsbC1mbGVkZ2VkIGFuZCBnb29kIHF1YWxpdHkgZG9jcyAvIHBsYXlncm91bmQpCi0gSGFyZCB0byBtaXN1c2UgKEFQSSBpcyB0eXBlLXNhZmV0eSBhbmQgcHJvdmlkZXMgcHJvcGVyIGVycm9yIHJlc3BvbnNlcykKLSBQb3dlcmZ1bCBlbm91Z2ggdG8gZHJpdmUgYnVzaW5lc3MgcmVxdWlyZW1lbnRzIChmbGV4aWJsZSwgcGVyZm9ybWFudCkKLSBFYXN5IHRvIGV2b2x2ZSBhcyB0aGUgcHJvZHVjdHMgZ3JvdwotIE9waW5pb25hdGVkIChkb24ndCBtYWtlIG1lIHRoaW5rKQoKRm9yIGRldmVsb3BlcnM6CgotIEVhc3kgdG8gcmVhZCBhbmQgbWFpbnRhaW4gZXhpc3RpbmcgY29kZQotIEVhc3kgdG8gd3JpdGUgbmV3IEFQSXMgLyBleHRlbmQgZXhpc3RpbmcgQVBJcwotIEVhc3kgdG8gZ2VuZXJhdGUgY29kZSBiYXNlZCBvbiBBUEkgc3BlYyAoY2xpZW50IFNES3MsIHRlc3QgY2FzZXMsIGFuZCBldmVuIHNlcnZlciBpbXBsZW1lbnRhdGlvbikKCkFQSSBpbXBsZW1lbnRhdGlvbiBpcyBqdXN0IGEgc21hbGwgcGFydCBvZiB0aGUgQVBJIGxpZmVjeWNsZSwgd2UgbmVlZCBBUEkgZGVzaWduLCBtb2NraW5nLCB0ZXN0aW5nLCBzaW11bGF0aW5nLCBkb2N1bWVudGF0aW9uLCBkZXBsb3ltZW50LCBldGMuCgohW10oZG9jcy9pbWFnZXMvYXBpLnBuZykKClF1ZW55YSB0cmllcyB0byBoZWxwIHlvdSBzdGFydCB3aXRoIHRoZSBBUEkgc3BlYywgaXRlcmF0ZSBpdCB3aXRob3V0IHdyaXRpbmcgdGhlIGNvZGUsIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgdmFyaW91cyB0ZWFtcyBjYW4gcGxheSB3aXRoIHRoZSBtb2NraW5nIHNlcnZlciBiYXNlZCBvbiB0aGUgc3BlYyB0byBuYWlsIGRvd24gd2hhdCBpcyBhY3R1YWxseSBuZWVkZWQuIFdlIGJlbGlldmUgdGhpcyBpcyB0aGUgYmVzdCBhcHByb2FjaCB0byBpbXByb3ZlIHByb2R1Y3Rpdml0eS4KCiMjIFdoeSBub3QgR3JhcGhRTCBvciBvdGhlciBzb2x1dGlvbnM/CgpTZWUgdGhlIGFib3ZlIHNsaWRlcyBhbmQgeW91J2xsIHNlZSB3aHkuCg== readmeEtag: '"3f7fdbde8450a026158c1a5bbbe80f499359b0f7"' readmeLastModified: Thu, 17 Dec 2020 06:37:01 GMT repositoryId: 316165371 description: >- Quenya is a framework to build high-quality REST API applications based on extended OpenAPI spec created: '2020-11-26T08:20:54Z' updated: '2025-01-20T10:19:02Z' language: Elixir archived: false stars: 146 watchers: 4 forks: 14 owner: tyrchen logo: https://avatars.githubusercontent.com/u/473888?v=4 license: MIT repoEtag: '"bcbe57ec38f47cf99e16792392f918715928c8828f793dddc277feed8623dfd3"' repoLastModified: Mon, 20 Jan 2025 10:19:02 GMT foundInMaster: true category: Server Implementations id: c5ab6433c14ab86f1eea6e5d29b5e111 - source: - openapi3 tags - openapi31 tags repository: https://github.com/oai/learn.openapis.org v3: true v3_1: true id: bc6087c180d696bd2a572b177febd681 repositoryMetadata: base64Readme: >- IyBIb21lCgo8aW1nIGFsdD0iT3BlbkFQSSBJbml0aWF0aXZlIiBzcmM9ImFzc2V0cy9pbWFnZXMvT3BlbkFQSV9Mb2dvX1BhbnRvbmUtMS5wbmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9ImF1dG8iPgoKQXJlIHlvdSBuZXcgdG8gdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbj8KClJlYWQgb3VyIFtHZXR0aW5nIFN0YXJ0ZWRdKGh0dHBzOi8vbGVhcm4ub3BlbmFwaXMub3JnLykgcGFnZSBmaXJzdC4KCjxwPk9yaWdpbmFsIHNpdGUgY3VzdG9taXplZCBiYXNlZCBvbiBhIHRoZW1lIGJ5IFBhdHJpY2sgTWFyc2NlaWxsLCBkaXN0cmlidXRlZCBieSBhbiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcG1hcnNjZWlsbC9qdXN0LXRoZS1kb2NzL3RyZWUvbWFzdGVyL0xJQ0VOU0UudHh0Ij5NSVQgbGljZW5zZS48L2E+PC9wPgoKIyMgRGV2ZWxvcG1lbnQKClRvIHJ1biB0aGlzIHdlYnNpdGUgbG9jYWxseSB5b3UnbGwgbmVlZCB0byB1c2UgSmVreWxsLgoKUGxlYXNlIGZvbGxvdyB0aGUgb2ZmaWNpYWwgW1F1aWNrc3RhcnRdKGh0dHBzOi8vamVreWxscmIuY29tL2RvY3MvKSBndWlkZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBpZiB5b3UgYXJlIHN0YXJ0aW5nIGZyb20gc2NyYXRjaCwgYW5kIHRoZW4gZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhlIFtDb250cmlidXRpbmcgR3VpZGVdKC4vQ09OVFJJQlVUSU5HLm1kKS4K readmeEtag: '"b5219351d8369a2617c1d7eadc12b8d80b737f68"' readmeLastModified: Tue, 04 Jun 2024 11:56:58 GMT repositoryId: 285621457 description: OpenAPI - Getting started, and the specification explained created: '2020-08-06T16:40:47Z' updated: '2026-01-30T16:44:10Z' language: Markdown archived: false stars: 200 watchers: 19 forks: 101 owner: OAI logo: https://avatars.githubusercontent.com/u/16343502?v=4 license: CC-BY-4.0 repoEtag: '"1e688c2346f972df8fc0082d8b0d5df57931113270874385346daf3473658300"' repoLastModified: Fri, 30 Jan 2026 16:44:10 GMT category: - Parsers - Server Implementations oldLocations: - https://github.com/oai/documentation foundInMaster: true - source: openapi3 tags name: angular-swagger-ui homepage: https://github.com/Orange-OpenSource/angular-swagger-ui language: AngularJS source_description: An angularJS implementation of Swagger UI category: - User Interfaces - Parsers repository: https://github.com/orange-opensource/angular-swagger-ui v3: true repositoryMetadata: base64Readme: >- IyBhbmd1bGFyLXN3YWdnZXItdWkKCmBhbmd1bGFyLXN3YWdnZXItdWlgIGlzIGFuIGFuZ3VsYXJKUyBpbXBsZW1lbnRhdGlvbiBvZiBPcGVuQVBJIFVJCgpbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnKSAoYWthIFtTd2FnZ2VyXShodHRwczovL3N3YWdnZXIuaW8pKSBoZWxwcyB5b3UgZG9jdW1lbnRpbmcgeW91ciBSRVNUZnVsIEFQSS4KCk9wZW5BUEkgVUkgaGVscHMgZGV2ZWxvcGVycyBkaXNjb3ZlcmluZyB5b3VyIFJFU1RmdWwgQVBJIGJ5IHByb3ZpZGluZyBhbiBvbmxpbmUgZG9jdW1lbnRhdGlvbiB3aXRoIGFuIGludGVncmF0ZWQgQVBJIGV4cGxvcmVyLgoKIyMjIFdhcm5pbmcgCj4gQnkgZGVmYXVsdCwgb25seSBPcGVuQVBJIDIuMCBpcyBzdXBwb3J0ZWQuClRvIGhhbmRsZSBPcGVuQVBJIDMuMC4wIHBsZWFzZSBhZGQgbW9kdWxlIGBvcGVuYXBpMy1jb252ZXJ0ZXJgIHNlZSBbRW5hYmxlIE9wZW5BUEkgMy4wLjBdKCNlbmFibGUtb3BlbmFwaS0zMDApLgpUbyBoYW5kbGUgT3BlbkFQSSAxLjIgcGxlYXNlIGFkZCBtb2R1bGUgYHN3YWdnZXIxLWNvbnZlcnRlcmAgc2VlIFtFbmFibGUgT3BlbkFQSSAxLjJdKCNlbmFibGUtb3BlbmFwaS0xMikuClRvIGhhbmRsZSBhdXRob3JpemF0aW9uIHBsZWFzZSBhZGQgbW9kdWxlIGBzd2FnZ2VyLWF1dGhgIHNlZSBbRW5hYmxlIGF1dGhvcml6YXRpb25dKCNlbmFibGUtYXV0aG9yaXphdGlvbikKVG8gaGFuZGxlIFlBTUwgcGxlYXNlIGFkZCBtb2R1bGUgYHN3YWdnZXIteWFtbC1wYXJzZXJgIHNlZSBbRW5hYmxlIFlBTUxdKCNlbmFibGUteWFtbCkKCiMjIERlbW8KCkEgc2FtcGxlIGFwcCB1c2luZyBgYW5ndWxhci1zd2FnZ2VyLXVpYCBpcyBhdmFpbGFibGUgaGVyZToKCmh0dHA6Ly9vcmFuZ2Utb3BlbnNvdXJjZS5naXRodWIuaW8vYW5ndWxhci1zd2FnZ2VyLXVpCgojIyBRdWljayBTdGFydAoKIyMjIEluc3RhbGwKCmBucG0gaW5zdGFsbCBhbmd1bGFyLXN3YWdnZXItdWlgCgojIyMgRGVwZW5kZW5jaWVzCgoxLiBbYW5ndWxhckpTXShodHRwczovL2FuZ3VsYXJqcy5vcmcpCjIuIFtib290c3RyYXAgQ1NTXShodHRwOi8vZ2V0Ym9vdHN0cmFwLmNvbSkKMy4gW2FuZ3VsYXItdWktYm9vdHN0cmFwXShodHRwczovL2FuZ3VsYXItdWkuZ2l0aHViLmlvL2Jvb3RzdHJhcC8pIChyZXF1aXJlZCBvbmx5IGlmIHVzaW5nIFtBdXRob3JpemF0aW9uXSgjZW5hYmxlLWF1dGhvcml6YXRpb24pKQoKIyMgTGljZW5zZQoKQWxsIGNvZGUgaW4gdGhpcyByZXBvc2l0b3J5IGlzIGNvdmVyZWQgYnkgdGhlIFtNSVQgbGljZW5zZV0oaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuClNlZSBMSUNFTlNFIGZpbGUgZm9yIGNvcHlyaWdodCBkZXRhaWxzLgoKIyMgR2V0dGluZyBTdGFydGVkCgpJbmNsdWRlIGBhbmd1bGFyLXN3YWdnZXItdWlgIGFzIGEgZGVwZW5kZW5jeSBpbnRvIHlvdXIgYXBwbGljYXRpb24KCkFzIHNvbWUgcHJvcGVydGllcyBvZiBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGNhbiBiZSBmb3JtYXR0ZWQgYXMgSFRNTDoKCiogWW91ICoqU0hPVUxEKiogaW5jbHVkZSBgbmdTYW5pdGl6ZWAgYXMgYSBkZXBlbmRlbmN5IGludG8geW91ciBhcHBsaWNhdGlvbiAoYXZvaWRzIEpTIGluamVjdGlvbikgaWYgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBhcmUgbG9hZGVkIGZyb20gKip1bnRydXN0ZWQqKiBzb3VyY2VzIChzZWUgYGRpc3QvaW5kZXguaHRtbGAgYXMgYW4gZXhhbXBsZSkKKiBZb3UgKipDQU4qKiBhZGQgYHRydXN0ZWQtc291cmNlcz0idHJ1ZSJgIGFzIGRpcmVjdGl2ZSBwYXJhbWV0ZXIgKGF2b2lkcyBlbWJlZGRpbmcgYG5nU2FuaXRpemVgKSBpZiBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGFyZSBsb2FkZWQgZnJvbSAqKnRydXN0ZWQqKiBzb3VyY2VzIChzZWUgYHNyYy9pbmRleC5odG1sYCBhcyBhbiBleGFtcGxlKQoqIFlvdSAqKk1VU1QqKiBhdCBsZWFzdCBjaG9vc2Ugb25lIG9mIHRoZSB0d28gcHJldmlvdXMgc29sdXRpb25zCgpgYGBodG1sCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCS8vIElmIGRpcmVjdGl2ZSBoYXMgcGFyYW1ldGVyIHRydXN0ZWQtc291cmNlcz0idHJ1ZSIKCWFuZ3VsYXIubW9kdWxlKCd5b3VyQXBwJywgWydzd2FnZ2VyVWknXSk7CgkuLi4KCS8vIE9SIGlmIHlvdSBjaG9vc2VkIHRvIHVzZSAibmdTYW5pdGl6ZSIKCWFuZ3VsYXIubW9kdWxlKCd5b3VyQXBwJywgWyduZ1Nhbml0aXplJywgJ3N3YWdnZXJVaSddKTsKCS4uLgo8L3NjcmlwdD4KYGBgCkNyZWF0ZSBhbiBIVE1MIGVsZW1lbnQgaW4geW91ciBhbmd1bGFySlMgYXBwbGljYXRpb24ncyB0ZW1wbGF0ZSBvciBpbiB5b3VyIEhUTUwgcGFnZQpgYGBodG1sCjxkaXYgc3dhZ2dlci11aSB1cmw9IlVSTFRvWW91ck9wZW5BUElTcGVjaWZpY2F0aW9uIiBhcGktZXhwbG9yZXI9InRydWUiPjwvZGl2PgpgYGAKQWRkIGBzd2FnZ2VyLXVpLm1pbi5qc2AgYW5kIGBhbmd1bGFyLm1pbi5qc2AgYXQgdGhlIGVuZCBvZiB0aGUgYm9keQpgYGBodG1sCjxib2R5PgogCS4uLgogCTxzY3JpcHQgc3JjPSJ5b3VyUGF0aFRvQW5ndWxhckpTL2FuZ3VsYXIubWluLmpzIj48L3NjcmlwdD4KIAk8c2NyaXB0IHNyYz0ieW91clBhdGhUb0FuZ3VsYXJTd2FnZ2VyVUkvZGlzdC9zY3JpcHRzL3N3YWdnZXItdWkubWluLmpzIj48L3NjcmlwdD4KIAk8IS0tIGlmIHlvdSBjaG9vc2VkIHRvIHVzZSAibmdTYW5pdGl6ZSIgLS0+CiAJPHNjcmlwdCBzcmM9InlvdXJQYXRoVG9Bbmd1bGFyU2FuaXRpemUvYW5ndWxhci1zYW5pdGl6ZS5taW4uanMiPjwvc2NyaXB0Pgo8L2JvZHk+CmBgYApBZGQgYHN3YWdnZXItdWkubWluLmNzc2AgYW5kIGBib290c3RyYXAubWluLmNzc2AgdG8gdGhlIGhlYWQgb2YgdGhlIEhUTUwgcGFnZS4KYGBgaHRtbAo8Ym9keT4KCTxoZWFkPgoJCS4uLgoJCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ieW91clBhdGhUb0Jvb3RzdHJhcENTUy9ib290c3RyYXAubWluLmNzcyI+CgkJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ5b3VyUGF0aFRvQW5ndWxhclN3YWdnZXJVSS9kaXN0L2Nzcy9zd2FnZ2VyLXVpLm1pbi5jc3MiPgogIAk8L2hlYWQ+CjwvYm9keT4KYGBgCgojIyBQYXJhbWV0ZXJzCgojIyMjIEFQSSBleHBsb3JlcgpEaXNwbGF5IG9yIG5vdCBBUEkgZXhwbG9yZXIsIGRlZmF1bHQgaXMgYGZhbHNlYApgYGBodG1sCjxkaXYgc3dhZ2dlci11aSB1cmw9IlVSTFRvWW91ck9wZW5BUElTcGVjaWZpY2F0aW9uIiBhcGktZXhwbG9yZXI9InRydWUvZmFsc2UiPjwvZGl2PgpgYGAKCiMjIyMgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGxvYWRpbmcgaW5kaWNhdG9yCmB5b3VyU2NvcGVWYXJpYWJsZWAgd2lsbCBiZSBhc3NpZ25lZCB0byBgdHJ1ZWAgb3IgYGZhbHNlYCBkZXBlbmRpbmcgb24gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGxvYWRpbmcgc3RhdHVzCmBgYGh0bWwKPGRpdiBuZy1zaG93PSJ5b3VyU2NvcGVWYXJpYWJsZSI+bG9hZGluZyAuLi48L2Rpdj4KPGRpdiBzd2FnZ2VyLXVpIHVybD0iVVJMVG9Zb3VyT3BlbkFQSVNwZWNpZmljYXRpb24iIGxvYWRpbmc9InlvdXJTY29wZVZhcmlhYmxlIj48L2Rpdj4KYGBgCgojIyMjIEVycm9yIGhhbmRsZXIKRGVmaW5lIGFuIGVycm9yIGhhbmRsZXIgdG8gY2F0Y2ggZXJyb3JzLCBpZiBub25lIGRlZmluZWQgYGNvbnNvbGUuZXJyb3JgIGlzIHVzZWQKYGBgaHRtbAo8ZGl2IHN3YWdnZXItdWkgdXJsPSJVUkxUb1lvdXJPcGVuQVBJU3BlY2lmaWNhdGlvbiIgZXJyb3ItaGFuZGxlcj0ieW91ckVycm9ySGFuZGxlciI+PC9kaXY+CmBgYApgYGBqcwokc2NvcGUueW91ckVycm9ySGFuZGxlciA9IGZ1bmN0aW9uKC8qU3RyaW5nIG9yIE9iamVjdCovIG1lc3NhZ2UsIC8qSW50ZWdlciovIGNvZGUpewoJCn0KYGBgCgojIyMjIFBlcm1hbGlua3MKQWxsb3dzIGhhdmluZyBhIFVSTCBkaXJlY3QgYWNjZXNzIHRvIGEgZ3JvdXAgb2Ygb3BlcmF0aW9ucyBvciB0byBhbiBvcGVyYXRpb24gYW5kIG1ha2luZyBpdCB1bmZvbGRlZCBhdCBzdGFydHVwCmBgYGh0bWwKPGRpdiBzd2FnZ2VyLXVpIHVybD0iVVJMVG9Zb3VyT3BlbkFQSVNwZWNpZmljYXRpb24iIHBlcm1hbGlua3M9InRydWUvZmFsc2UiPjwvZGl2PgpgYGAKCiMjIyMgRG93bmxvYWQKRGlzcGxheSBvciBub3QgYSBsaW5rIHRvIGRvd25sb2FkIHN3YWdnZXIgZmlsZS4gCgpgYGBodG1sCjwhLS0gZGlzcGxheSBsaW5rIHdpdGggdXJsIGxhYmVsIC0tPgo8ZGl2IHN3YWdnZXItdWkgdXJsPSJVUkxUb1lvdXJPcGVuQVBJU3BlY2lmaWNhdGlvbiIgZG93bmxvYWQ+PC9kaXY+Cgo8IS0tIGRpc3BsYXkgbGluayB3aXRoIHNwZWNpZmljIGtleSBlbnRlciBpbiBzd2FnZ2VyVHJhbnNsYXRvclByb3ZpZGVyIC0tPgo8ZGl2IHN3YWdnZXItdWkgdXJsPSJVUkxUb1lvdXJPcGVuQVBJU3BlY2lmaWNhdGlvbiIgZG93bmxvYWQ9ImRvd25sb2FkTGFiZWwiPjwvZGl2PgpgYGAKCiMjIyMgT3BlbkFQSSB2YWxpZGF0b3IKRGlzYWJsZSBPcGVuQVBJIHZhbGlkYXRvciBvciBkZWZpbmUgYSBjdXN0b20gT3BlbkFQSSB2YWxpZGF0b3IuCklmIHBhcmFtZXRlciBub3QgZGVmaW5lZCwgdGhlIHZhbGlkYXRvciB3aWxsIGJlICdodHRwOi8vb25saW5lLnN3YWdnZXIuaW8vdmFsaWRhdG9yJwpgYGBodG1sCjxkaXYgc3dhZ2dlci11aSB1cmw9IlVSTFRvWW91ck9wZW5BUElTcGVjaWZpY2F0aW9uIiB2YWxpZGF0b3ItdXJsPSJmYWxzZSBvciBVUkwiPjwvZGl2PgpgYGAKCiMjIyMgUGFyc2VyIHR5cGUKT3BlbkFQSSBzcGVjaWZpY2F0aW9uIHBhcnNlciBpcyBjaG9zZW4gZGVwZW5kaW5nIG9uIHRoZSBgQ29udGVudC1UeXBlYCBvZiB0aGUgc3BlY2lmaWNhdGlvbiByZXNwb25zZS4gSWYgaG9zdCBzZXJ2aW5nIHlvdXIgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IHNlbmQgYENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbmAgdGhlbiB5b3UgY2FuIGZvcmNlIHRoZSBwYXJzZXIgdG8gSlNPTjoKYGBgaHRtbAo8ZGl2IHN3YWdnZXItdWkgdXJsPSJVUkxUb1lvdXJPcGVuQVBJU3BlY2lmaWNhdGlvbiIgcGFyc2VyPSJqc29uIj48L2Rpdj4KYGBgCgojIyMjIFRlbXBsYXRlIFVSTApEZWZpbmUgYSBjdXN0b20gdGVtcGxhdGUgdG8gYmUgdXNlZCBieSBPcGVuQVBJVUkKYGBgaHRtbAo8ZGl2IHN3YWdnZXItdWkgdXJsPSJVUkxUb1lvdXJPcGVuQVBJU3BlY2lmaWNhdGlvbiIgdGVtcGxhdGUtdXJsPSJ5b3VyVGVtcGxhdGVQYXRoIj48L2Rpdj4KYGBgCgojIyMjIEluaGVyaXRlZCBwcm9wZXJ0aWVzCkFsbG93cyBkaXNwbGF5aW5nIGluaGVyaXRlZCBwcm9wZXJ0aWVzIG9mIHBvbHltb3JwaGljIG1vZGVscwpgYGBodG1sCjxkaXYgc3dhZ2dlci11aSB1cmw9IlVSTFRvWW91ck9wZW5BUElTcGVjaWZpY2F0aW9uIiBzaG93LWluaGVyaXRlZC1wcm9wZXJ0aWVzPSJ0cnVlL2ZhbHNlIj48L2Rpdj4KYGBgCgojIyMjIElucHV0IHR5cGUgYW5kIGlucHV0CiMjIyMjIFJlbmRlciBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gZnJvbSBKU09OIG9iamVjdApgYGBodG1sCjxkaXYgc3dhZ2dlci11aSBpbnB1dC10eXBlPSJqc29uIiBpbnB1dD0ieW91ckpzb25PYmplY3QiPjwvZGl2PgpgYGAKCiMjIyMjIFJlbmRlciBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gZnJvbSBZQU1MIHN0cmluZwpNYWtlIHN1cmUgdG8gdXNlIG1vZHVsZSBgc3dhZ2dlci15YW1sLXBhcnNlcmAsIHNlZSBbRW5hYmxlIFlBTUxdKCNlbmFibGUteWFtbCkKYGBgaHRtbAo8ZGl2IHN3YWdnZXItdWkgaW5wdXQtdHlwZT0ieWFtbCIgaW5wdXQ9InlvdXJZYW1sU3RyaW5nIj48L2Rpdj4KYGBgCgojIyMjIyBSZW5kZXIgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZyb20gVVJMIChzYW1lIGJlaGF2aW9yIGFzIHVzaW5nICJ1cmwiIHBhcmFtZXRlcikKYGBgaHRtbAo8ZGl2IHN3YWdnZXItdWkgaW5wdXQtdHlwZT0idXJsIiBpbnB1dD0ieW91clVSTCI+PC9kaXY+CmBgYAoKIyMgaTE4bgoKIyMjIyBCdWlsdC1pbiBsYW5ndWFnZXMKYGFuZ3VsYXItc3dhZ2dlci11aWAgaXMgYXZhaWxhYmxlIGluIGVuZ2xpc2ggYW5kIGZyZW5jaCwgZW5nbGlzaCBpcyB1c2VkIGJ5IGRlZmF1bHQKClRvIHVzZSBmcmVuY2gsIGFkZCBgZnIubWluLmpzYCBhdCB0aGUgZW5kIG9mIHRoZSBib2R5CmBgYGh0bWwKPGJvZHk+CiAJLi4uCiAJPHNjcmlwdCBzcmM9InlvdXJQYXRoVG9Bbmd1bGFySlMvYW5ndWxhci5taW4uanMiPjwvc2NyaXB0PgogCTxzY3JpcHQgc3JjPSJ5b3VyUGF0aFRvQW5ndWxhclN3YWdnZXJVSS9kaXN0L3NjcmlwdHMvc3dhZ2dlci11aS5taW4uanMiPjwvc2NyaXB0PgogCTxzY3JpcHQgc3JjPSJ5b3VyUGF0aFRvQW5ndWxhclN3YWdnZXJVSS9kaXN0L3NjcmlwdHMvaTE4L2ZyLm1pbi5qcyI+PC9zY3JpcHQ+CjwvYm9keT4KYGBgClNldCBsYW5ndWFnZSB0byBmcmVuY2ggYXQgc3RhcnR1cApgYGBodG1sCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCWFuZ3VsYXIKCQkubW9kdWxlKCd5b3VyQXBwJywgWydzd2FnZ2VyVWknXSkKCQkuY29uZmlnKGZ1bmN0aW9uKHN3YWdnZXJUcmFuc2xhdG9yUHJvdmlkZXIpIHsKCQkJc3dhZ2dlclRyYW5zbGF0b3JQcm92aWRlci5zZXRMYW5ndWFnZSgnZnInKTsKCQl9KTsKCS4uLgo8L3NjcmlwdD4KYGBgClNldCBsYW5ndWFnZSB0byBmcmVuY2ggYXQgcnVudGltZQpgYGBodG1sCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCWFuZ3VsYXIKCQkubW9kdWxlKCd5b3VyQXBwJywgWydzd2FnZ2VyVWknXSkKCQkuY29udHJvbGxlcigneW91ckNvbnRyb2xsZXInLCBmdW5jdGlvbihzd2FnZ2VyVHJhbnNsYXRvcikgewoJCQlzd2FnZ2VyVHJhbnNsYXRvci51c2VMYW5ndWFnZSgnZnInKTsKCQl9KTsKCS4uLgo8L3NjcmlwdD4KYGBgCgojIyMjIEFkZCBsYW5ndWFnZXMKWW91IGNhbiBhZGQgeW91ciBvd24gbGFuZ3VhZ2VzLCBzZWUgYHNyYy9zY3JpcHRzL2kxOG4vZW4uanNgIHRvIGZpbmQgdGhlIGtleXMgeW91IGhhdmUgdG8gb3ZlcnJpZGUKYGBgaHRtbAo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cglhbmd1bGFyCgkJLm1vZHVsZSgneW91ckFwcCcsIFsnc3dhZ2dlclVpJ10pCgkJLmNvbmZpZyhmdW5jdGlvbihzd2FnZ2VyVHJhbnNsYXRvclByb3ZpZGVyKSB7CgkJCXN3YWdnZXJUcmFuc2xhdG9yUHJvdmlkZXIuYWRkVHJhbnNsYXRpb25zKCd5b3VyTGFuZ0lkJywgewoJCQkJa2V5OiAndmFsdWUnCgkJCQkuLi4KCQkJfSk7CgkJCXN3YWdnZXJUcmFuc2xhdG9yUHJvdmlkZXIuc2V0TGFuZ3VhZ2UoJ3lvdXJMYW5nSWQnKTsKCQl9KTsKCS4uLgo8L3NjcmlwdD4KYGBgCgojIyMjIEludGVybmF0aW9uYWxpemUgeW91ciBhcHAKWW91IGNhbiBhbHNvIHVzZSBgc3dhZ2dlclRyYW5zbGF0b3JgIHRvIGludGVybmF0aW9uYWxpemUgeW91ciBhcHAgYnkgdXNpbmcgYSBzZXJ2aWNlLCBhIGRpcmVjdGl2ZSBvciBhIGZpbHRlcgpgYGBodG1sCjxib2R5PgogCS4uLgogCTxkaXYgc3dhZ2dlci10cmFuc2xhdGU9InlvdXJLZXkiIHN3YWdnZXItdHJhbnNsYXRlLXZhbHVlPSJ5b3VyUGFyYW0iPjwvZGl2PgogCTxkaXYgbmctYmluZD0ieW91ckR5bmFtaWNLZXl8c3dhZ2dlclRyYW5zbGF0ZTp5b3VyRHluYW1pY1BhcmFtIj48L2Rpdj4KIAkuLi4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlhbmd1bGFyCgkJCS5tb2R1bGUoJ3lvdXJBcHAnLCBbJ3N3YWdnZXJVaSddKQoJCQkuY29uZmlnKGZ1bmN0aW9uKHN3YWdnZXJUcmFuc2xhdG9yUHJvdmlkZXIpIHsKCQkJCXN3YWdnZXJUcmFuc2xhdG9yUHJvdmlkZXIuYWRkVHJhbnNsYXRpb25zKCdlbicsIHsKCQkJCQl5b3VyS2V5OiAnYmxhYmxhYmxhIHt7cHJvcGVydHlOYW1lT2ZZb3VyUGFyYW19fScKCQkJCQkuLi4KCQkJCX0pOwoJCQl9KQoJCQkuY29udHJvbGxlcigneW91ckNvbnRyb2xsZXInLCBmdW5jdGlvbihzd2FnZ2VyVHJhbnNsYXRvcikgewoJCQkJdmFyIGxvY2FsaXplZE1lc3NhZ2UgPSBzd2FnZ2VyVHJhbnNsYXRvci50cmFuc2xhdGUoJ3lvdXJLZXknLCB5b3VyUGFyYW0pOwoJCQl9KTsKCQkuLi4KCTwvc2NyaXB0Pgo8L2JvZHk+CmBgYAoKIyMgQ3VzdG9taXphdGlvbgoKIyMjIyBFbmFibGUgT3BlbkFQSSAzLjAuMApTZWUgW09wZW5BUEkgMy4wLjAgc3BlY10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQpLgpBZGQgYG9wZW5hcGkzLWNvbnZlcnRlci5taW4uanNgIGF0IHRoZSBlbmQgb2YgdGhlIGJvZHkKYGBgaHRtbAo8Ym9keT4KIAkuLi4KIAk8c2NyaXB0IHNyYz0ieW91clBhdGhUb0FuZ3VsYXJKUy9hbmd1bGFyLm1pbi5qcyI+PC9zY3JpcHQ+CiAJPHNjcmlwdCBzcmM9InlvdXJQYXRoVG9Bbmd1bGFyU3dhZ2dlclVJL2Rpc3Qvc2NyaXB0cy9zd2FnZ2VyLXVpLm1pbi5qcyI+PC9zY3JpcHQ+CiAJPHNjcmlwdCBzcmM9InlvdXJQYXRoVG9Bbmd1bGFyU3dhZ2dlclVJL2Rpc3Qvc2NyaXB0cy9tb2R1bGVzL29wZW5hcGkzLWNvbnZlcnRlci5taW4uanMiPjwvc2NyaXB0Pgo8L2JvZHk+CmBgYAoKIyMjIyBFbmFibGUgYXV0aG9yaXphdGlvbgpgb2F1dGhgIGlzIG5vdCBpbXBsZW1lbnRlZCwgb25seSBgYmFzaWNgIGFuZCBgQVBJIGtleWAgYXV0aG9yaXphdGlvbnMgYXJlIGltcGxlbWVudGVkLgpBZGQgYHN3YWdnZXItYXV0aC5taW4uanNgIGF0IHRoZSBlbmQgb2YgdGhlIGJvZHkKYGBgaHRtbAo8Ym9keT4KIAkuLi4KIAk8c2NyaXB0IHNyYz0ieW91clBhdGhUb0FuZ3VsYXJKUy9hbmd1bGFyLm1pbi5qcyI+PC9zY3JpcHQ+CiAJPHNjcmlwdCBzcmM9InlvdXJQYXRoVG9Bbmd1bGFyU3dhZ2dlclVJL2Rpc3Qvc2NyaXB0cy9zd2FnZ2VyLXVpLm1pbi5qcyI+PC9zY3JpcHQ+CiAJPHNjcmlwdCBzcmM9InlvdXJQYXRoVG9Bbmd1bGFyU3dhZ2dlclVJL2Rpc3Qvc2NyaXB0cy9tb2R1bGVzL3N3YWdnZXItYXV0aC5taW4uanMiPjwvc2NyaXB0PjwhLS0gd2l0aG91dCBhbmd1bGFyLXVpLWJvb3RzdHJhcCBtb2RhbCBlbWJlZGRlZCAtLT4KIAlPUgogCTxzY3JpcHQgc3JjPSJ5b3VyUGF0aFRvQW5ndWxhclN3YWdnZXJVSS9kaXN0L3NjcmlwdHMvbW9kdWxlcy9zd2FnZ2VyLWF1dGgtdWktYm9vc3RyYXAtbW9kYWwubWluLmpzIj48L3NjcmlwdD48IS0tIGFuZ3VsYXItdWktYm9vdHN0cmFwIG1vZGFsIGVtYmVkZGVkIC0tPgogCS4uLgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWFuZ3VsYXIKCQkJLm1vZHVsZSgneW91ckFwcCcsIFsnc3dhZ2dlclVpJywgJ3N3YWdnZXJVaUF1dGhvcml6YXRpb24nXSkKCQkJLy8gd2hhdCBpcyBiZWxvdyBpcyByZXF1aXJlZCBmb3Igb2F1dGgyIGZsb3dzICdpbXBsaWNpdCcgYW5kICdhY2Nlc3NDb2RlJyAoaWUuIGF1dGhvcml6YXRpb25Db2RlKQoJCQkvLyB3aGF0IGlzIGJlbG93IGNhbiBhbHNvIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZSBhcGlLZXkgb3IgQmFzaWMgYXV0aG9yaXphdGlvbnMKICAgICAgLmNvbmZpZyhmdW5jdGlvbihzd2FnZ2VyVWlBdXRoUHJvdmlkZXIpIHsKICAgICAgICAgIHN3YWdnZXJVaUF1dGhQcm92aWRlci5jb25maWd1cmF0aW9uKHsKICAgICAgICAgICAgICAvLyByZXF1aXJlZCBmb3Igb2F1dGgyIGZsb3cgJ2ltcGxpY2l0JyBhbmQgJ2FjY2Vzc0NvZGUnIChpZS4gYXV0aG9yaXphdGlvbkNvZGUpCiAgICAgICAgICAgICAJcmVkaXJlY3RVcmw6ICd5b3VyUGF0aFRvQW5ndWxhclN3YWdnZXJVSS9vYXV0aDItcmVkaXJlY3QuaHRtbCcgCiAgICAgICAgICAgICAgLy8gb3B0aW9uYWwKICAgICAgICAgICAgICB5b3VyU2VjdXJpdHlOYW1lOiB7CiAgICAgICAgICAgICAgCWFwaUtleTogJ3lvdXJBcGlLZXlWYWx1ZScgLy8gb3B0aW9uYWwsIGNhbiBiZSB1c2VkIHRvIGluaXRpYWxpemUgYXBpIGtleSB2YWx1ZQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgLy8gb3B0aW9uYWwKICAgICAgICAgICAgICB5b3VyU2VjdXJpdHlOYW1lOiB7CiAgICAgICAgICAgICAgCWxvZ2luOiAneW91ckxvZ2luJywgLy8gb3B0aW9uYWwsIGNhbiBiZSB1c2VkIHRvIGluaXRpYWxpemUgYmFzaWMgbG9naW4KICAgICAgICAgICAgICAJcGFzc3dvcmQ6ICd5b3VyUGFzc3dvcmQnIC8vIG9wdGlvbmFsLCBjYW4gYmUgdXNlZCB0byBpbml0aWFsaXplIGJhc2ljIHBhc3N3b3JkCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAvLyBvcHRpb25hbAogICAgICAgICAgICAgIHlvdXJTZWN1cml0eU5hbWU6IHsKICAgICAgICAgICAgICAJY2xpZW50SWQ6ICd5b3VyQ2xpZW50SWQnLCAvLyBvcHRpb25hbCwgY2FuIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZSBvYXV0aDIgY3JlZGVudGlhbHMKICAgICAgICAgICAgICAJY2xpZW50U2VjcmV0OiAneW91ckNsaWVudFNlY3JldCcsIC8vIG9wdGlvbmFsLCBjYW4gYmUgdXNlZCB0byBpbml0aWFsaXplIG9hdXRoMiBjcmVkZW50aWFscwogICAgICAgICAgICAgIAlsb2dpbjogJ3lvdXJMb2dpbicsIC8vIG9wdGlvbmFsLCBjYW4gYmUgdXNlZCB0byBpbml0aWFsaXplIG9hdXRoMiBjcmVkZW50aWFscwogICAgICAgICAgICAgIAlwYXNzd29yZDogJ3lvdXJQYXNzd29yZCcsIC8vIG9wdGlvbmFsLCBjYW4gYmUgdXNlZCB0byBpbml0aWFsaXplIG9hdXRoMiBjcmVkZW50aWFscwogICAgICAgICAgICAgIAlzY29wZVNlcGFyYXRvcjogJ3Njb3BlU2VwYXJhdG9yJywgLy8gb3B0aW9uYWwsIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSBvYXV0aDIgc2NvcGVzIHNlcGFyYXRvciwgZGVmYXVsdCB2YWx1ZSBpcyBzcGFjZQogICAgICAgICAgICAgIAkvLyBvcHRpb25hbCwgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlIG9hdXRoMiBhZGRpdGlvbmFsIHF1ZXJ5IHBhcmFtcyB0byB0b2tlblVybCBhbmQgYXV0aG9yaXphdGlvblVybAogICAgICAgICAgICAgIAlxdWVyeVBhcmFtczogewogICAgICAgICAgICAgIAkJJ3lvdXJRdWVyeVBhcmFtTmFtZSc6ICd5b3VyUXVlcnlQYXJhbVZhbHVlJwogICAgICAgICAgICAgIAkJLi4uCiAgICAgICAgICAgICAgCX0sIAogICAgICAgICAgICAgIH0sCiAgICAgICAgICB9KTsKICAgICAgfSkKCQkJLi4uCgk8L3NjcmlwdD4KPC9ib2R5PgpgYGAKCiMjIyMgRW5hYmxlIE9wZW5BUEkgW2FrYSBTd2FnZ2VyXSAxLjIKU2VlIFtPcGVuQVBJIDEuMiBzcGVjXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8xLjIubWQpLgpBZGQgYHN3YWdnZXIxLWNvbnZlcnRlci5taW4uanNgIGF0IHRoZSBlbmQgb2YgdGhlIGJvZHkKYGBgaHRtbAo8Ym9keT4KIAkuLi4KIAk8c2NyaXB0IHNyYz0ieW91clBhdGhUb0FuZ3VsYXJKUy9hbmd1bGFyLm1pbi5qcyI+PC9zY3JpcHQ+CiAJPHNjcmlwdCBzcmM9InlvdXJQYXRoVG9Bbmd1bGFyU3dhZ2dlclVJL2Rpc3Qvc2NyaXB0cy9zd2FnZ2VyLXVpLm1pbi5qcyI+PC9zY3JpcHQ+CiAJPHNjcmlwdCBzcmM9InlvdXJQYXRoVG9Bbmd1bGFyU3dhZ2dlclVJL2Rpc3Qvc2NyaXB0cy9tb2R1bGVzL3N3YWdnZXIxLWNvbnZlcnRlci5taW4uanMiPjwvc2NyaXB0Pgo8L2JvZHk+CmBgYAoKIyMjIyBFbmFibGUgT3BlbkFQSSBleHRlcm5hbCByZWZlcmVuY2VzClNlZSBbT3BlbkFQSSAyLjAgc3BlY10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMi4wLm1kI3JlbGF0aXZlLXNjaGVtYS1maWxlLWV4YW1wbGUpLgpBZGQgYHN3YWdnZXItZXh0ZXJuYWwtcmVmZXJlbmNlcy5taW4uanNgIGF0IHRoZSBlbmQgb2YgdGhlIGJvZHkKYGBgaHRtbAo8Ym9keT4KIAkuLi4KIAk8c2NyaXB0IHNyYz0ieW91clBhdGhUb0FuZ3VsYXJKUy9hbmd1bGFyLm1pbi5qcyI+PC9zY3JpcHQ+CiAJPHNjcmlwdCBzcmM9InlvdXJQYXRoVG9Bbmd1bGFyU3dhZ2dlclVJL2Rpc3Qvc2NyaXB0cy9zd2FnZ2VyLXVpLm1pbi5qcyI+PC9zY3JpcHQ+CiAJPHNjcmlwdCBzcmM9InlvdXJQYXRoVG9Bbmd1bGFyU3dhZ2dlclVJL2Rpc3Qvc2NyaXB0cy9tb2R1bGVzL3N3YWdnZXItZXh0ZXJuYWwtcmVmZXJlbmNlcy5taW4uanMiPjwvc2NyaXB0Pgo8L2JvZHk+CmBgYAoKIyMjIyBFbmFibGUgWE1MIGZvcm1hdHRlciBvbiBBUEkgZXhwbG9yZXIgcmVzcG9uc2VzCkFkZCBgc3dhZ2dlci14bWwtZm9ybWF0dGVyLm1pbi5qc2AgYXQgdGhlIGVuZCBvZiB0aGUgYm9keQpgYGBodG1sCjxib2R5PgogCS4uLgogCTxzY3JpcHQgc3JjPSJ5b3VyUGF0aFRvQW5ndWxhckpTL2FuZ3VsYXIubWluLmpzIj48L3NjcmlwdD4KIAk8c2NyaXB0IHNyYz0ieW91clBhdGhUb0FuZ3VsYXJTd2FnZ2VyVUkvZGlzdC9zY3JpcHRzL3N3YWdnZXItdWkubWluLmpzIj48L3NjcmlwdD4KIAk8c2NyaXB0IHNyYz0ieW91clBhdGhUb0FuZ3VsYXJTd2FnZ2VyVUkvZGlzdC9zY3JpcHRzL21vZHVsZXMvc3dhZ2dlci14bWwtZm9ybWF0dGVyLm1pbi5qcyI+PC9zY3JpcHQ+CjwvYm9keT4KYGBgCgojIyMjIEVuYWJsZSBZQU1MCkFkZCBbanMteWFtbCBsaWJyYXJ5XShodHRwczovL2NkbmpzLmNvbS9saWJyYXJpZXMvanMteWFtbCkuCkFkZCBgc3dhZ2dlci15YW1sLXBhcnNlci5taW4uanNgIGF0IHRoZSBlbmQgb2YgdGhlIGJvZHkKYGBgaHRtbAo8Ym9keT4KIAkuLi4KIAk8c2NyaXB0IHNyYz0ieW91clBhdGhUb0FuZ3VsYXJKUy9hbmd1bGFyLm1pbi5qcyI+PC9zY3JpcHQ+CiAJPHNjcmlwdCBzcmM9InlvdXJQYXRoVG9Kc1lhbWwvanMteWFtbC5taW4uanMiPjwvc2NyaXB0PgogCTxzY3JpcHQgc3JjPSJ5b3VyUGF0aFRvQW5ndWxhclN3YWdnZXJVSS9kaXN0L3NjcmlwdHMvc3dhZ2dlci11aS5taW4uanMiPjwvc2NyaXB0PgogCTxzY3JpcHQgc3JjPSJ5b3VyUGF0aFRvQW5ndWxhclN3YWdnZXJVSS9kaXN0L3NjcmlwdHMvbW9kdWxlcy9zd2FnZ2VyLXlhbWwtcGFyc2VyLm1pbi5qcyI+PC9zY3JpcHQ+CjwvYm9keT4KYGBgCgojIyMjIEVuYWJsZSBtYXJrZG93bgpBZGQgW21hcmtlZCBsaWJyYXJ5XShodHRwczovL2NkbmpzLmNvbS9saWJyYXJpZXMvbWFya2VkKS4KQWRkIGBzd2FnZ2VyLW1hcmtkb3duLm1pbi5qc2AgYXQgdGhlIGVuZCBvZiB0aGUgYm9keQpgYGBodG1sCjxib2R5PgogCS4uLgogCTxzY3JpcHQgc3JjPSJ5b3VyUGF0aFRvQW5ndWxhckpTL2FuZ3VsYXIubWluLmpzIj48L3NjcmlwdD4KIAk8c2NyaXB0IHNyYz0ieW91clBhdGhUb01hcmtlZC9tYXJrZWQubWluLmpzIj48L3NjcmlwdD4KIAk8c2NyaXB0IHNyYz0ieW91clBhdGhUb0FuZ3VsYXJTd2FnZ2VyVUkvZGlzdC9zY3JpcHRzL3N3YWdnZXItdWkubWluLmpzIj48L3NjcmlwdD4KIAk8c2NyaXB0IHNyYz0ieW91clBhdGhUb0FuZ3VsYXJTd2FnZ2VyVUkvZGlzdC9zY3JpcHRzL21vZHVsZXMvc3dhZ2dlci1tYXJrZG93bi5taW4uanMiPjwvc2NyaXB0Pgo8L2JvZHk+CmBgYAoKIyMjIyBXcml0aW5nIHlvdXIgb3duIG1vZHVsZXMKTW9kaWZ5aW5nIGBhbmd1bGFyLXN3YWdnZXItdWlgIGNhbiBiZSBhY2hpZXZlZCBieSB3cml0aW5nIHlvdXIgb3duIG1vZHVsZXMuIEFzIGFuIGV4YW1wbGUgeW91ciBjYW4gaGF2ZSBhIGxvb2sgYXQgdGhlIG9uZXMgaW4gYHNyYy9zY3JpcHRzL21vZHVsZXNgLgpBIG1vZHVsZSBpcyBhbiBvYmplY3QgKGNhbiBiZSBhIHNlcnZpY2UpIGhhdmluZyBhIGZ1bmN0aW9uIGBleGVjdXRlYCB3aGljaCBtdXN0IHJldHVybiBhIHByb21pc2UuCgpZb3UgY2FuIG1ha2UgeW91ciBtb2R1bGUgbW9kaWZ5aW5nIGJlaGF2aW91cnMgYXQgZGlmZmVyZW50IHBoYXNlczoKCiogYEJFRk9SRV9MT0FEYDogYWxsb3dzIG1vZGlmeWluZyBPcGVuQVBJIHNwZWNpZmljYXRpb24gcmVxdWVzdCBiZWZvcmUgaXQgaXMgc2VudAoqIGBCRUZPUkVfUEFSU0VgOiBhbGxvd3MgbW9kaWZ5aW5nIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBhZnRlciBpdCBoYXMgYmVlbiBsb2FkZWQKKiBgUEFSU0VgOiBhbGxvd3MgYWRkaW5nIGFuIE9wZW5BUEkgcGFyc2VyIGZvciBjb250ZW50IHR5cGVzIG90aGVyIHRoYW4gSlNPTgoqIGBCRUZPUkVfRElTUExBWWA6IGFsbG93cyBtb2RpZnlpbmcgaW50ZXJuYWwgcGFyc2VkIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBiZWZvcmUgaXQgaXMgZGlzcGxheWVkCiogYEJFRk9SRV9FWFBMT1JFUl9MT0FEYDogYWxsb3dzIG1vZGlmeWluZyBBUEkgZXhwbG9yZXIgcmVxdWVzdCBiZWZvcmUgaXQgaXMgc2VudAoqIGBBRlRFUl9FWFBMT1JFUl9MT0FEYDogYWxsb3dzIG1vZGlmeWluZyBBUEkgZXhwbG9yZXIgcmVzcG9uc2UgYmVmb3JlIGl0IGlzIGRpc3BsYXllZAoKYGBganMKYW5ndWxhcgoJLm1vZHVsZSgnbXlBcHAnLCBbJ3N3YWdnZXJVaSddKQoJLnNlcnZpY2UoJ215TW9kdWxlJywgZnVuY3Rpb24oJHEpIHsKCgkJdGhpcy5leGVjdXRlID0gZnVuY3Rpb24oZGF0YSkgewoJCQl2YXIgZGVmZXJyZWQgPSAkcS5kZWZlcigpOwoJCQkvLyBpZiBub3RoaW5nIGRvbmU6IGNhbGwgZGVmZXJyZWQucmVzb2x2ZShmYWxzZSk7CgkJCS8vIGlmIHN1Y2Nlc3M6IGNhbGwgZGVmZXJyZWQucmVzb2x2ZSh0cnVlKTsKCQkJLy8gaWYgZXJyb3I6IGNhbGwgZGVmZXJyZWQucmVqZWN0KHttZXNzYWdlOiAnZXJyb3IgbWVzc2FnZScsIGNvZGU6ICdlcnJvcl9jb2RlJ30pOwoJCQlyZXR1cm4gZGVmZXJyZWQucHJvbWlzZTsKCQl9CgoJfSkKCS5ydW4oZnVuY3Rpb24oc3dhZ2dlck1vZHVsZXMsIG15TW9kdWxlKXsKCQkvLyBkZWZhdWx0IHByaW9yaXR5IGlzIDEKCQkvLyBoaWdoZXIgaXMgdGhlIHByaW9yaXR5LCBzb29uZXIgdGhlIG1vZHVsZSBpcyBleGVjdXRlZCBhdCB0aGUgc3BlY2lmaWVkIHBoYXNlCgkJc3dhZ2dlck1vZHVsZXMuYWRkKHN3YWdnZXJNb2R1bGVzLkJFRk9SRV9MT0FELCBteU1vZHVsZSwgcHJpb3JpdHkpOwoJfSkKCS4uLgoKYGBgCg== readmeEtag: '"4f2c75d8482865d9e7949580790c5bec602563fe"' readmeLastModified: Mon, 05 Oct 2020 09:54:38 GMT repositoryId: 31470522 description: An angularJS implementation of Swagger UI created: '2015-02-28T17:44:11Z' updated: '2024-11-29T17:18:55Z' language: JavaScript archived: true stars: 136 watchers: 20 forks: 71 owner: Orange-OpenSource logo: https://avatars.githubusercontent.com/u/1506386?v=4 license: MIT repoEtag: '"d8bb2db1085ee990aa302386a8c358b6f83056d91ac5be11b35385bf28efe9ab"' repoLastModified: Fri, 29 Nov 2024 17:18:55 GMT foundInMaster: true id: 4db6178272e1a2c2ca2eef009acc2dd1 - source: openapi3 tags repository: https://github.com/sourcemeta/awesome-jsonschema v3: true repositoryMetadata: base64Readme: >- PCEtLSBBVFRFTlRJT04hIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZC4gRG8gbm90IGVkaXQgdGhpcyBmaWxlIGRpcmVjdGx5LgpJbnN0ZWFkLCBlZGl0IGBkYXRhLnlhbWxgIGFuZCByZS1nZW5lcmF0ZSB0aGlzIGZpbGUgYXMgcGVyIHRoZSBSRUFETUUncwppbnN0cnVjdGlvbnMgLS0+CgojIEF3ZXNvbWUgSlNPTiBTY2hlbWEgWyFbQXdlc29tZV0oaHR0cHM6Ly9jZG4ucmF3Z2l0LmNvbS9zaW5kcmVzb3JodXMvYXdlc29tZS9kNzMwNWYzOGQyOWZlZDc4ZmE4NTY1MmUzYTYzZTE1NGRkOGU4ODI5L21lZGlhL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvYXdlc29tZSkKCls8aW1nIHNyYz0ibG9nby5zdmciIGFsaWduPSJyaWdodCIgd2lkdGg9IjEwMCI+XShodHRwczovL2pzb24tc2NoZW1hLm9yZykKClshW1BScyBXZWxjb21lXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1BScy13ZWxjb21lLWJyaWdodGdyZWVuLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSldKGh0dHA6Ly9tYWtlYXB1bGxyZXF1ZXN0LmNvbSkKWyFbSm9pbiBTbGFja10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9TbGFjay1Kb2luJTIwU2xhY2stYmx1ZS5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL2pzb24tc2NoZW1hLnNsYWNrLmNvbSkKWyFbT3BlbkNvbGxlY3RpdmVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vb3BlbmNvbGxlY3RpdmUvYWxsL2pzb24tc2NoZW1hP2xhYmVsPU9wZW5Db2xsZWN0aXZlJnN0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vanNvbi1zY2hlbWEpCgo+IEEgY3VyYXRlZCBsaXN0IG9mIGF3ZXNvbWUgSlNPTiBTY2hlbWEgcmVzb3VyY2VzLCB0dXRvcmlhbHMsIHRvb2xzLCBhbmQgbW9yZS4KCkpTT04gU2NoZW1hIGlzIGEgSlNPTi1iYXNlZCBmb3JtYXQgdG8gYW5ub3RhdGUgYW5kIHZhbGlkYXRlIEpTT04gZG9jdW1lbnRzIHdpdGgKYSB2aWJyYW50IGNvbW11bml0eS4gSlNPTiBTY2hlbWEgaXMgZGVmaW5lZCBieSBhIHNldCBvZiBJRVRGIHNwZWNpZmljYXRpb25zIGFuZAppdCBpcyB0aGUgaW5kdXN0cnktc3RhbmRhcmQgZm9yIGRlZmluaW5nIHRoZSBzdHJ1Y3R1cmUgYW5kIG1lYW5pbmcgb2YgSlNPTgpkb2N1bWVudHMuCgotLS0KCioqV291bGQgeW91IGxpa2UgdG8gcHJvbW90ZSB5b3VyIGNvbXBhbnkgb3IgcHJvZHVjdCBoZXJlPyBbU3BvbnNvciB1cyBvbgpHaXRIdWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9zb3VyY2VtZXRhKSoqCgotLS0KCiMjIENvbnRlbnRzCgotIFtHZXR0aW5nIFN0YXJ0ZWRdKCNnZXR0aW5nLXN0YXJ0ZWQpCi0gW0NvdXJzZXNdKCNjb3Vyc2VzKQotIFtEZXZlbG9wbWVudCBUb29sc10oI2RldmVsb3BtZW50LXRvb2xzKQotIFtCb29rc10oI2Jvb2tzKQotIFtSZWdpc3RyaWVzXSgjcmVnaXN0cmllcykKLSBbQXJ0aWNsZXNdKCNhcnRpY2xlcykKLSBbUmVsYXRlZCBTcGVjaWZpY2F0aW9uc10oI3JlbGF0ZWQtc3BlY2lmaWNhdGlvbnMpCi0gW1ZpZGVvc10oI3ZpZGVvcykKLSBbUGFwZXJzXSgjcGFwZXJzKQotIFtMaWJyYXJpZXNdKCNsaWJyYXJpZXMpCgojIyBHZXR0aW5nIFN0YXJ0ZWQKCi0gW0xlYXJuIEpTT04gU2NoZW1hXShodHRwczovL3d3dy5sZWFybmpzb25zY2hlbWEuY29tP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEEgY29tcHJlaGVuc2l2ZSBKU09OIFNjaGVtYSBkb2N1bWVudGF0aW9uIHdlYnNpdGUgY292ZXJpbmcgYWxsIHNwZWNpZmljYXRpb24gdmVyc2lvbnMuCi0gW0pTT04gU2NoZW1hIFRvdXJdKGh0dHBzOi8vdG91ci5qc29uLXNjaGVtYS5vcmc/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQW4gaW50ZXJhY3RpdmUgdHV0b3JpYWwgdG8gbGVhcm4gSlNPTiBTY2hlbWEgc3RlcCBieSBzdGVwLgoKIyMgQ291cnNlcwoKLSBbTWFzdGVyIEpTT04gU2NoZW1hIGZvciBPcGVuQVBJXShodHRwczovL3d3dy5zb3VyY2VtZXRhLmNvbS9jb3Vyc2VzL2pzb25zY2hlbWEtZm9yLW9wZW5hcGkvP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEEgY29tcHJlaGVuc2l2ZSA5KyBob3VyIHZpZGVvIGNvdXJzZSB0ZWFjaGluZyBhZHZhbmNlZCBKU09OIFNjaGVtYSB0ZWNobmlxdWVzIGZvciBBUEkgZGVzaWduLCBjb3ZlcmluZyBkeW5hbWljIHJlZmVyZW5jZXMsIHVuZXZhbHVhdGVkIHByb3BlcnRpZXMsIHNjaGVtYSBjb21wb3NpdGlvbiwgdGVzdGluZywgbGludGluZywgYW5kIGRlcGxveW1lbnQgdG8gcmVnaXN0cmllcy4KCiMjIERldmVsb3BtZW50IFRvb2xzCgotIFtBbHRlclNjaGVtYV0oaHR0cHM6Ly9hbHRlcnNjaGVtYS5zb3VyY2VtZXRhLmNvbT91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBDb252ZXJ0IGEgSlNPTiBTY2hlbWEgZGVmaW5pdGlvbiBiZXR3ZWVuIHNwZWNpZmljYXRpb24gdmVyc2lvbnMuCi0gW0pTT04gU2NoZW1hIENMSV0oaHR0cHM6Ly9naXRodWIuY29tL3NvdXJjZW1ldGEvanNvbnNjaGVtYT91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBBIGNvbXByZWhlbnNpdmUgY29tbWFuZC1saW5lIHRvb2wgZm9yIHdvcmtpbmcgd2l0aCBKU09OIFNjaGVtYSBzdXBwb3J0aW5nIGZvcm1hdHRpbmcsIGxpbnRpbmcsIHRlc3RpbmcsIGJ1bmRsaW5nLCBhbmQgdmFsaWRhdGlvbiBhY3Jvc3MgYWxsIEpTT04gU2NoZW1hIHZlcnNpb25zLgotIFtKU09OQnVkZHldKGh0dHBzOi8vd3d3Lmpzb24tYnVkZHkuY29tP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEEgSlNPTiBlZGl0b3IgYW5kIHZhbGlkYXRvciBkZXNrdG9wIGFwcGxpY2F0aW9uIGZvciBXaW5kb3dzLgotIFtTb3VyY2VtZXRhIFN0dWRpb10oaHR0cHM6Ly9naXRodWIuY29tL3NvdXJjZW1ldGEvc3R1ZGlvP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEEgVmlzdWFsIFN0dWRpbyBDb2RlIGV4dGVuc2lvbiBwcm92aWRpbmcgcHJvZmVzc2lvbmFsIEpTT04gU2NoZW1hIHRvb2xpbmcgd2l0aCByZWFsLXRpbWUgbGludGluZywgYXV0b21hdGljIGZvcm1hdHRpbmcsIGFuZCBtZXRhc2NoZW1hIHZhbGlkYXRpb24uCgojIyBCb29rcwoKLSAoMjAyNCkgW1VuaWZ5aW5nIEJ1c2luZXNzLCBEYXRhLCBhbmQgQ29kZTogRGVzaWduaW5nIERhdGEgUHJvZHVjdHMgd2l0aCBKU09OIFNjaGVtYV0oaHR0cHM6Ly93d3cub3JlaWxseS5jb20vbGlicmFyeS92aWV3L3VuaWZ5aW5nLWJ1c2luZXNzLWRhdGEvOTc4MTA5ODE0NDk5OS8/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQ292ZXJzIHRvcGljcyBzdWNoIGFzIHdyaXRpbmcgeW91ciBvd24gSlNPTiBTY2hlbWEgdm9jYWJ1bGFyaWVzLCB1bmRlcnN0YW5kaW5nIEpTT04gU2NoZW1hIGFubm90YXRpb25zLCBhbmQgaG9zdGluZyB5b3VyIG93biBKU09OIFNjaGVtYSByZWdpc3RyaWVzLiBNb3JlIGltcG9ydGFudGx5LCBvdXIgYm9vayB0ZWFjaGVzIHlvdSBhIG1ldGhvZG9sb2d5IGZvciBlZmZlY3RpdmUgZGF0YSBtYW5hZ2VtZW50LgotICgyMDIxKSBbQVBJIGJ5IERlc2lnbl0oaHR0cHM6Ly9zbWl6ZWxsLmd1bXJvYWQuY29tL2wvYXBpYnlkZXNpZ24/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gSW50cm9kdWNlcyBhbiBhcHByb2FjaCB0byBtZWFzdXJlIEFQSSBjb21wbGV4aXR5IGJ5IGFuYWx5emluZyBlbnRyb3B5IGluIEpTT04gU2NoZW1hIGRlZmluaXRpb25zLgotICgyMDE3KSBbSlNPTiBhdCBXb3JrXShodHRwczovL3d3dy5vcmVpbGx5LmNvbS9saWJyYXJ5L3ZpZXcvanNvbi1hdC13b3JrLzk3ODE0OTE5ODIzODkvP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyBvZiB0aGUgSlNPTiBlY29zeXN0ZW0sIGluY2x1ZGluZyBKU09OIFNjaGVtYS4KLSAoMjAxNCkgW1VzaW5nIEpTT04gU2NoZW1hXShodHRwczovL2Jvb2tzLmFwcGxlLmNvbS91cy9ib29rL3VzaW5nLWpzb24tc2NoZW1hL2lkOTAzMjQ4NjMwP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIExlYXJuIGFuZCBBcHBseSBKU09OIFNjaGVtYSBieSBFeGFtcGxlLCB3aXRoIEphdmFTY3JpcHQgKE5vZGUuanMpIGFuZCBQeXRob24gUHJvZ3JhbXMuCgojIyBSZWdpc3RyaWVzCgotIFtBcGljdXJpbyBSZWdpc3RyeV0oaHR0cHM6Ly93d3cuYXBpY3VyLmlvL3JlZ2lzdHJ5Lz91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBBIHJ1bnRpbWUgc2VydmVyIHN5c3RlbSBmb3Igc3RvcmluZyBhbmQgbWFuYWdpbmcgQVBJIGRlc2lnbnMgYW5kIHNjaGVtYXMgaW5jbHVkaW5nIE9wZW5BUEksIEFzeW5jQVBJLCBBdnJvLCBhbmQgSlNPTiBTY2hlbWEgd2l0aCBjb25maWd1cmFibGUgY29udGVudCBydWxlcyBmb3IgZXZvbHV0aW9uIGNvbnRyb2wuCi0gW1NvdXJjZW1ldGEgT25lXShodHRwczovL29uZS5zb3VyY2VtZXRhLmNvbT91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBBIHNlbGYtaG9zdGVkIEpTT04gU2NoZW1hIG1pY3Jvc2VydmljZSB0aGF0IHRyYW5zZm9ybXMgR2l0IHJlcG9zaXRvcmllcyBpbnRvIHNlYXJjaGFibGUsIGRpc2NvdmVyYWJsZSBzY2hlbWEgY2F0YWxvZ3Mgd2l0aCBhIHdlYiBleHBsb3JlciwgZWRpdG9yIGludGVncmF0aW9uLCBzY2hlbWEgaGVhbHRoIGNoZWNrcywgYW5kIGEgcmljaCBIVFRQIEFQSS4KLSBbU291cmNlbWV0YSBTY2hlbWFzXShodHRwczovL3NjaGVtYXMuc291cmNlbWV0YS5jb20/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQSBwdWJsaWMgZnJlZSBpbnN0YW5jZSBvZiBTb3VyY2VtZXRhIE9uZSByZS1vZmZlcmluZyB2YXJpb3VzIG9wZW4gc291cmNlIHNjaGVtYSBjb2xsZWN0aW9ucy4KCiMjIEFydGljbGVzCgotICgyMDIzKSBbTExNcyBmb3IgU2NoZW1hIEF1Z21lbnRhdGlvbl0oaHR0cHM6Ly9taWNoYWVsLm1pb3IuY2EvYmxvZy9sbG1zLWZvci1zY2hlbWEtYXVnbWVudGF0aW9uLz91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBMYXJnZSBsYW5ndWFnZSBtb2RlbHMgY2FuIGJlIGV4cGxvaXRlZCB0byBhdXRvbWF0aWNhbGx5IGF1Z21lbnQgSlNPTiBTY2hlbWFzIHdpdGggdXNlZnVsIGluZm9ybWF0aW9uLgotICgyMDIyKSBbV2hhdCBpcyAmcXVvdDtNb2Rlcm4mcXVvdDsgSlNPTiBTY2hlbWE/XShodHRwczovL21vZGVybi1qc29uLXNjaGVtYS5jb20vd2hhdC1pcy1tb2Rlcm4tanNvbi1zY2hlbWE/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gSG93ICZxdW90O21vZGVybiZxdW90OyBKU09OIFNjaGVtYSwgbWVhbmluZyAyMDE5LTA5LCAyMDIwLTEyLCBhbmQgbGF0ZXIsIGNhbiBzb2x2ZSBmYXIgbW9yZSBwcm9ibGVtcyB0aGFuICZxdW90O2NsYXNzaWNhbCZxdW90OyBKU09OIFNjaGVtYSAoZHJhZnQtMDcgYW5kIGVhcmxpZXIpLgotICgyMDIyKSBbVXNpbmcgRHluYW1pYyBSZWZlcmVuY2VzIHRvIFN1cHBvcnQgR2VuZXJpYyBUeXBlc10oaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvYmxvZy9wb3N0cy9keW5hbWljcmVmLWFuZC1nZW5lcmljcz91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBSZXByZXNlbnRpbmcgZ2VuZXJpYyB0eXBlcyBmcm9tIHN0cm9uZ2x5LXR5cGVkIHByb2dyYW1taW5nIGxhbmd1YWdlcyB3aXRoIEpTT04gU2NoZW1hLgotICgyMDIyKSBbSlNPTiBTY2hlbWEgaXMgYSBjb25zdHJhaW50IHN5c3RlbV0oaHR0cHM6Ly9tb2Rlcm4tanNvbi1zY2hlbWEuY29tL2pzb24tc2NoZW1hLWlzLWEtY29uc3RyYWludC1zeXN0ZW0/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gT3I6IFdoeSBvYmplY3Qtb3JpZW50ZWQgcHJvZ3JhbW1pbmcgaXMgYSBtaXMtbWF0Y2hlZCBtZW50YWwgbW9kZWwgZm9yIEpTT04gU2NoZW1hLgotICgyMDIyKSBbRm9ybWluZyBuZXcgcmVsYXRpb25zaGlwczogQ29udHJpYnV0aW5nIHRvIE9wZW4gc291cmNlXShodHRwczovL3d3dy5jcm9zc3JlZi5vcmcvYmxvZy9mb3JtaW5nLW5ldy1yZWxhdGlvbnNoaXBzLWNvbnRyaWJ1dGluZy10by1vcGVuLXNvdXJjZS8/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQSBkZXNjcmlwdGlvbiBvZiBhZG9wdGluZyBhbmQgZXh0ZW5kaW5nIEpTT04gRm9ybXMsIGEgSlNPTiBTY2hlbWEgYmFzZWQgZm9ybSByZW5kZXJpbmcgbGlicmFyeSwgdG8gc3VwcG9ydCBWdWVKUyBhbmQgVnVldGlmeS4uCi0gKDIwMjIpIFtEb2NzISBEb2NzISBEb2NzIV0oaHR0cHM6Ly9icmFuZHVyLm9yZy9uYW5vZ2x5cGhzLzAzMS1hcGktZG9jcz91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBBbiBvdmVydmlldyBvZiBBUEkgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uIHVzaW5nIEh5cGVyIFNjaGVtYSBhbmQgT3BlbkFQSS4KLSAoMjAyMSkgW1VuZGVyc3RhbmRpbmcgSlNPTiBTY2hlbWEgY29tcGF0aWJpbGl0eV0oaHR0cHM6Ly95b2tvdGEuYmxvZy8yMDIxLzAzLzI5L3VuZGVyc3RhbmRpbmctanNvbi1zY2hlbWEtY29tcGF0aWJpbGl0eS8/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQSBzdHVkeSBvZiBvcGVuLCBjbG9zZWQsIGFuZCBwYXJ0aWFsbHktb3BlbiBjb250ZW50IG1vZGVscyB3aGVuIGV2b2x2aW5nIHNjaGVtYXMgaW4gYSBiYWNrd2FyZCwgZm9yd2FyZCwgb3IgZnVsbHkgY29tcGF0aWJsZSBtYW5uZXJzLgotICgyMDIxKSBbVW5kZXJzdGFuZGluZyBBUEkgQ29tcGxleGl0eSBUaHJvdWdoIFNjaGVtYSBFbnRyb3B5XShodHRwczovL3NtaXplbGwuY29tL3Bvc3RzLzIwMjEvMDUvdW5kZXJzdGFuZGluZy1hcGktY29tcGxleGl0eS10aHJvdWdoLXNjaGVtYS1lbnRyb3B5Lz91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBBIGxvb2sgYXQgQVBJIGNvbXBsZXhpdHkgYnkgYW5hbHl6aW5nIGVudHJvcHkgb2YgSlNPTiBTY2hlbWEgZG9jdW1lbnRzLgotICgyMDIxKSBbUm9idXN0bmVzcywgVG9sZXJhbmNlLCBhbmQgSlNPTiBTY2hlbWFdKGh0dHBzOi8vc21pemVsbC5jb20vcG9zdHMvMjAyMS8wNy9yb2J1c3RuZXNzLXRvbGVyYW5jZS1hbmQtanNvbi1zY2hlbWEvP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEFwcGx5aW5nIHRoZSBSb2J1c3RuZXNzIFByaW5jaXBsZSBhbmQgaW5jcmVhc2luZyBzY2hlbWEgZW50cm9weSB3aGVuIG1ha2luZyBjaGFuZ2VzIHRvIGFuIEFQSS4KLSAoMjAyMSkgW01vZGVsaW5nIGEgZmlsZSBzeXN0ZW0gd2l0aCBKU09OIFNjaGVtYV0oaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvbGVhcm4vZmlsZS1zeXN0ZW0uaHRtbD91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBUaGlzIGV4YW1wbGUgc2hvd3MgYSBwb3NzaWJsZSBKU09OIFNjaGVtYSByZXByZXNlbnRhdGlvbiBvZiBmaWxlIHN5c3RlbSBtb3VudCBwb2ludHMgYXMgcmVwcmVzZW50ZWQgaW4gYW4gL2V0Yy9mc3RhYiBmaWxlLgotICgyMDIxKSBbSlNPTiBTY2hlbWEgYnVuZGxpbmcgZmluYWxseSBmb3JtYWxpc2VkXShodHRwczovL2pzb24tc2NoZW1hLm9yZy9ibG9nL3Bvc3RzL2J1bmRsaW5nLWpzb24tc2NoZW1hLWNvbXBvdW5kLWRvY3VtZW50cz91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBBIGNsb3NlIGxvb2sgYXQgYnVuZGxpbmcgYW5kIGRlLXJlZmVyZW5jaW5nIEpTT04gU2NoZW1hIGRvY3VtZW50cy4KLSAoMjAyMCkgW1VzaW5nIHRoZSBKU09OIFNjaGVtYSBzdGFuZGFyZCBmb3Igc2NpZW50aWZpYyBhcHBsaWNhdGlvbnM/XShodHRwczovL2NlcmZhY3MuZnIvY29vcC9qc29uLXNjaGVtYS1mb3Itc2NpLWFwcHM/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQSBkaXNjdXNzaW9uIG9uIGhvdyB0byB1c2UgSlNPTiBTY2hlbWEgdG8gdmFsaWRhdGUgaW5wdXQsIGFkZCBwcmVjaXNlIGRvY3VtZW50YXRpb24sIGF1dG8tZmlsbCBtaXNzaW5nIHBhcnRzLCBhbmQgY3JlYXRlIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZXMgaW4gdGhlIGNvbnRleHQgb2Ygc2NpZW50aWZpYyBhcHBsaWNhdGlvbnMuCi0gKDIwMjApIFtQcm9qZWN0IENhbWJyaWE6IFRyYW5zbGF0ZSB5b3VyIGRhdGEgd2l0aCBsZW5zZXNdKGh0dHBzOi8vd3d3Lmlua2FuZHN3aXRjaC5jb20vY2FtYnJpYS8/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQSBwcm9wb3NhbCBmb3IgYW4gaXNvbGF0ZWQgc29mdHdhcmUgbGF5ZXIgdGhhdCB0cmFuc2xhdGVzIGRhdGEgYmV0d2VlbiBKU09OIFNjaGVtYSBkZWZpbml0aW9ucyBvbiBkZW1hbmQuIFRyYW5zbGF0aW9uIGxvZ2ljIGlzIGRlZmluZWQgYnkgY29tcG9zaW5nIGJpZGlyZWN0aW9uYWwgbGVuc2VzLCBhIGtpbmQgb2YgZGF0YSB0cmFuc2Zvcm1hdGlvbiB0aGF0IGNhbiBydW4gYm90aCBmb3J3YXJkIGFuZCBiYWNrd2FyZC4KLSAoMjAyMCkgW0pTT04gU2NoZW1hLCBTY2hlbWEub3JnLCBKU09OLUxEOiBXaGF0JiN4Mjc7cyB0aGUgRGlmZmVyZW5jZT9dKGh0dHBzOi8vZGFzaGpvaW4ubWVkaXVtLmNvbS9qc29uLXNjaGVtYS1zY2hlbWEtb3JnLWpzb24tbGQtd2hhdHMtdGhlLWRpZmZlcmVuY2UtZTMwZDczMTU2ODZhP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEFuIG92ZXJ2aWV3IG9mIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gSlNPTiBTY2hlbWEgYW5kIEpTT04tTEQsIHRoZWlyIHJlbGF0aW9uc2hpcCBhbmQgdGhlIHJvbGUgb2YgU2NoZW1hLm9yZy4KLSAoMjAyMCkgW0J1aWxkaW5nIGEgTm8tQ29kZSBKU09OIFNjaGVtYSBGb3JtIEJ1aWxkZXIgd2l0aCBSZWFjdEpTXShodHRwczovL3d3dy5naW5rZ29iaW93b3Jrcy5jb20vMjAyMC8xMC8wOC9idWlsZGluZy1hLW5vLWNvZGUtanNvbi1zY2hlbWEtZm9ybS1idWlsZGVyLz91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBBbiB1cGRhdGUgb24gdGhlIGFkZGl0aW9uYWwgZmVhdHVyZXMgaW1wbGVtZW50ZWQgaW4gdGhlIHJlYWN0LWpzb24tc2NoZW1hLWZvcm0tYnVpbGRlciBvcGVuLXNvdXJjZSBKU09OIFNjaGVtYSBmb3JtIGJ1aWxkZXIgcHJvamVjdC4KLSAoMjAyMCkgW0F6dXJlIFBpcGVsaW5lcyBhdXRvY29tcGxldGUgaW4gUHlDaGFybSwgSW50ZWxsaUosIFdlYlN0b3JtLCBDTGlvbiwgYW5kIFJpZGVyXShodHRwczovL3RvbnliYWxvbmV5LmdpdGh1Yi5pby9wb3N0cy9henVyZS1waXBlbGluZXMtYXV0b2NvbXBsZXRlLWluLXB5Y2hhcm0uaHRtbD91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBTZXR0aW5nIHVwIFB5Q2hhcm0sIEludGVsbGlKLCBXZWJTdG9ybSwgQ0xpb24gYW5kIFJpZGVyIHRvIGhhdmUgYXV0by1jb21wbGV0ZSwgc3ludGF4IGhpZ2hsaWdodGluZyBhbmQgdmFsaWRhdGlvbiBzdXBwb3J0IG9mIEF6dXJlIFBpcGVsaW5lcyB3b3JrZmxvd3MuCi0gKDIwMTkpIFtTYXZlZCBieSB0aGUgU2NoZW1hOiBVc2luZyBKU09OIFNjaGVtYSB0byBEb2N1bWVudCwgVGVzdCwgYW5kIERlYnVnIEFQSXNdKGh0dHBzOi8vYmxvZy5oZXJva3UuY29tL2pzb24tc2NoZW1hLWRvY3VtZW50LWRlYnVnLWFwaXM/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gTGVhcm4gaG93IEhlcm9rdSB1c2VzIEpTT04gU2NoZW1hIHRvIHRlc3QgYW5kIGRvY3VtZW50IHRoZWlyIFBsYXRmb3JtIEFQSSwgYW5kIGhvdyBpdCBoZWxwZWQgdGhlbSB1bmNvdmVyIGFuIHVuZXhwZWN0ZWQgYnVnLCByb290ZWQgaW4gdGhlIHdheSB0aGUgT2ogZ2VtIHBhcnNlcyBCaWcgRGVjaW1hbHMuCi0gKDIwMTgpIFtKU09OIFNjaGVtYSBWYWxpZGF0b3IsIEdlbmVyYXRvciAmYW1wOyBFZGl0b3IgR3VpZGVdKGh0dHBzOi8vc3RvcGxpZ2h0LmlvL2pzb24tZ3VpZGUvP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEhvdyB0aGUgSlNPTiBhbmQgSlNPTiBTY2hlbWEgc3RhbmRhcmRzIGFyZSBkZWZpbmVkIGFuZCBob3cgdG8gcHV0IHRoZW0gdG8gdXNlIGluIHlvdXIgY29kZSBhbmQgaW4geW91ciBBUElzLgotICgyMDE4KSBbSlNPTiBTY2hlbWEgVmFsaWRhdGlvbiAmYW1wOyBFeHByZXNzaXZlIFF1ZXJ5IFN5bnRheCBpbiBNb25nb0RCIDMuNl0oaHR0cHM6Ly93d3cuc2l0ZXBvaW50LmNvbS9qc29uLXNjaGVtYS12YWxpZGF0aW9uLWV4cHJlc3NpdmUtcXVlcnktc3ludGF4LWluLW1vbmdvZGItMy02Lz91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBBbiBpbi1kZXB0aCBkaXNjdXNzaW9uIGFib3V0IHVzaW5nIEpTT04gU2NoZW1hIHRvIGRlZmluZSBjb2xsZWN0aW9uIHZhbGlkYXRpb24gb24gTW9uZ29EQi4KLSAoMjAxOCkgW0RlZmluaXRpb25zIGZvciBmaWx0ZXJpbmcgcHJvcGVydGllcyBpbiBKU09OIHNjaGVtYV0oaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vTHVjaWFuQnV6em8vNWZmOTEwNmNlM2FlMTJmYjU4ZTRkZWY1NzJiOTM0NGQ/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQW4gaW50cm9kdWN0aW9uIHRvIHRoZSBwcm9ibGVtIG9mIHVzaW5nIEpTT04gU2NoZW1hIGZvciBkYXRhIGZpbHRlcmluZyBhbmQgcXVlcnlpbmcgcHVycG9zZXMuCi0gKDIwMTQpIFtJbnRyb2R1Y2luZyBTY2hlbWFWZXIgZm9yIHNlbWFudGljIHZlcnNpb25pbmcgb2Ygc2NoZW1hc10oaHR0cHM6Ly9zbm93cGxvd2FuYWx5dGljcy5jb20vYmxvZy8yMDE0LzA1LzEzL2ludHJvZHVjaW5nLXNjaGVtYXZlci1mb3Itc2VtYW50aWMtdmVyc2lvbmluZy1vZi1zY2hlbWFzLyNmZWVkYmFjaz91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBBIHByb3Bvc2FsIGZvciBhIHZlcnNpb25pbmcgY29udmVudGlvbiBmb3IgSlNPTiBTY2hlbWEgZGVmaW5pdGlvbnMgYmFzZWQgb24gU2VtVmVyLgoKIyMgUmVsYXRlZCBTcGVjaWZpY2F0aW9ucwoKLSBbQWdlbnQyQWdlbnQgUHJvdG9jb2wgKEEyQSldKGh0dHBzOi8vYTJhLXByb3RvY29sLm9yZz91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBBbiBvcGVuIHByb3RvY29sIGJ5IEdvb2dsZSBlbmFibGluZyBjb21tdW5pY2F0aW9uIGFuZCBpbnRlcm9wZXJhYmlsaXR5IGJldHdlZW4gYWdlbnRpYyBhcHBsaWNhdGlvbnMuIEEyQSB1c2VzIEpTT04tUlBDIDIuMCBvdmVyIEhUVFAgYW5kIEpTT04gU2NoZW1hIGZvciBkZWZpbmluZyBBZ2VudCBDYXJkcyBhbmQgbWVzc2FnZSBzdHJ1Y3R1cmVzLgotIFtBc3luY0FQSV0oaHR0cHM6Ly93d3cuYXN5bmNhcGkuY29tP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEFzeW5jQVBJIGlzIGFuIG9wZW4gc291cmNlIGluaXRpYXRpdmUgdGhhdCBzZWVrcyB0byBpbXByb3ZlIHRoZSBjdXJyZW50IHN0YXRlIG9mIEV2ZW50LURyaXZlbiBBcmNoaXRlY3R1cmVzIChFREEpLiBUaGUgQXN5bmNBUEkgc3BlY2lmaWNhdGlvbiBzdXBwb3J0cyBkYXRhIG1vZGVsaW5nIHVzaW5nIEpTT04gU2NoZW1hLgotIFtKU09OIFNjaGVtYSBpbiBSREZdKGh0dHBzOi8vd3d3LnczLm9yZy8yMDE5L3dvdC9qc29uLXNjaGVtYT91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBUaGlzIGRvY3VtZW50IGludHJvZHVjZXMgYW4gUkRGIHZvY2FidWxhcnkgZm9yIEpTT04gU2NoZW1hIGRlZmluaXRpb25zLiBUaGlzIHZvY2FidWxhcnkgcHJvdmlkZXMgYSBzdGFibGUgbmFtZXNwYWNlIElSSSBmb3IgSlNPTiBTY2hlbWEga2V5d29yZHMsIGFzIHdlbGwgYXMgc2ltcGxlIGF4aW9tcywgZGVmaW5lZCBhZ2FpbnN0IHNjaGVtYS5vcmcmI3gyNztzIG1ldGEtbW9kZWwuCi0gW01vZGVsIENvbnRleHQgUHJvdG9jb2wgKE1DUCldKGh0dHBzOi8vbW9kZWxjb250ZXh0cHJvdG9jb2wuaW8/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQW4gb3BlbiBzdGFuZGFyZCBieSBBbnRocm9waWMgdGhhdCBlbmFibGVzIEFJIHN5c3RlbXMgbGlrZSBsYXJnZSBsYW5ndWFnZSBtb2RlbHMgdG8gaW50ZWdyYXRlIHdpdGggZXh0ZXJuYWwgdG9vbHMgYW5kIGRhdGEgc291cmNlcy4gTUNQIHVzZXMgSlNPTi1SUEMgMi4wIGFuZCBKU09OIFNjaGVtYSBmb3IgZGVmaW5pbmcgc2VydmVyIGNhcGFiaWxpdGllcy4KLSBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIFRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gZW1iZWRzIGFuZCBleHRlbmRzIEpTT04gU2NoZW1hIGZvciBkZWZpbmluZyBBUEkgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcy4KLSBbUkFNTF0oaHR0cHM6Ly9yYW1sLm9yZz91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBUaGUgUkFNTCBzcGVjaWZpY2F0aW9uIHN1cHBvcnRzIG1vZGVsaW5nIEFQSSBkYXRhIHVzaW5nIEpTT04gU2NoZW1hLgotIFtSRVNUIEFQSSBMaW5rZWQgRGF0YSBLZXl3b3Jkc10oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1wb2xsaS1yZXN0YXBpLWxkLWtleXdvcmRzLTA3Lmh0bWw/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQW4gSW50ZXJuZXQtRHJhZnQgcHJvcG9zaW5nIEpTT04gU2NoZW1hIGtleXdvcmRzIHRvIGF0dGFjaCBzZW1hbnRpYyBpbmZvcm1hdGlvbiB0byBPcGVuQVBJIGFuZCBKU09OIFNjaGVtYSBkb2N1bWVudHMsIGVuYWJsaW5nIGNvbnRyYWN0LWZpcnN0IEFQSSBkZXNpZ24gd2l0aCBSREYgdHlwZSBpbmZvcm1hdGlvbiBhbmQgSlNPTi1MRCBjb250ZXh0LgotIFtTZW1hbnRpYyBEZWZpbml0aW9uIEZvcm1hdCAoU0RGKV0oaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvZHJhZnQtaWV0Zi1hc2RmLXNkZi8/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQW4gSUVURiBzcGVjaWZpY2F0aW9uIGZvciBtb2RlbGluZyBJbnRlcm5ldCBvZiBUaGluZ3MgZGV2aWNlcyBhbmQgdGhlaXIgaW50ZXJhY3Rpb25zIHRocm91Z2ggUHJvcGVydGllcywgQWN0aW9ucywgYW5kIEV2ZW50cy4gU0RGIHVzZXMgSlNPTiB0byByZXByZXNlbnQgZGVmaW5pdGlvbnMgYW5kIGluY29ycG9yYXRlcyBKU09OIFNjaGVtYSBmb3IgZGF0YSB2YWxpZGF0aW9uLgotIFtXM0MgV2ViIG9mIFRoaW5nc10oaHR0cHM6Ly93d3cudzMub3JnL1dvVC8/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gVGhlIFdlYiBvZiBUaGluZ3MgKFdvVCkgc2Vla3MgdG8gY291bnRlciB0aGUgZnJhZ21lbnRhdGlvbiBvZiB0aGUgSW9UIGJ5IHVzaW5nIGFuZCBleHRlbmRpbmcgZXhpc3RpbmcsIHN0YW5kYXJkaXplZCBXZWIgdGVjaG5vbG9naWVzLiBXb1QgbW9kZWxzIGRhdGEgdXNpbmcgSlNPTiBTY2hlbWEuCgojIyBWaWRlb3MKCkZvciBtb3JlIHZpZGVvIGNvbnRlbnQsIGNoZWNrIG91dCB0aGUgW29mZmljaWFsIEpTT04gU2NoZW1hIFlvdVR1YmUgY2hhbm5lbF0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vY2hhbm5lbC9VQ3JsM2ZqbUhTcDZGaEpVS2NFSmhpc0EpIGFuZCB0aGUgW0pTT04gU2NoZW1hIENvbmZlcmVuY2VdKGh0dHBzOi8vY29uZmVyZW5jZS5qc29uLXNjaGVtYS5vcmcpIHdlYnNpdGUuCgotICgyMDIxKSBbU28geW91IHRoaW5rIHlvdSB1bmRlcnN0YW5kIEpTT04gU2NoZW1hPyAtIEJlbiBIdXR0b25dKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9dk1HME5DRGlmSTA/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gSW4gdGhpcyBzZXNzaW9uIHlvdSYjeDI3O2xsIGxlYXJuIHNvbWUga2V5IGZ1bmRhbWVudGFscywgaW50cmFjYWNpZXMgdGhhdCBldmVuIGNhdGNoIG91dCB0aGUgZXhwZXJpZW5jZWQsIGFuZCBob3cgdG8gZGV2ZWxvcCB5b3VyIG93biBpbnRlcm9wZXJhYmxlIEpTT04gU2NoZW1hIFZvY2FidWxhcnkuCi0gKDIwMjEpIFtNYWludGFpbmluZyBKU09OIFNjaGVtYXMgYXQgU2NhbGUgLSBKYXNvbiBEZXNyb3NpZXJzXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUdqSnBSc1ZmZmcwP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEluIHRoaXMgdGFsaywgd2Ugd2lsbCBjb3ZlciB0aGUga2V5d29yZHMsIGNvbmNlcHRzLCBhbmQgcGF0dGVybnMgZm9yIG1haW50YWluaW5nIGxhcmdlIHNjaGVtYXMgb3IgbGFyZ2UgY29sbGVjdGlvbnMgb2Ygc2NoZW1hcy4gV2UmI3gyNztsbCB0YWNrbGUgcHJvYmxlbXMgbGlrZSBob3cgdG8gYnJlYWtkb3duIGFuZCBvcmdhbml6ZSBzY2hlbWFzLCBob3cgdG8gYnVuZGxlIHNjaGVtYXMsIGhvdyB0byBtYWtlIGxhcmdlIHNjaGVtYXMgZWZmaWNpZW50LCBob3cgdG8gZ2V0IGJldHRlciBlcnJvciBtZXNzYWdlcyBmcm9tIGxhcmdlIHNjaGVtYXMsIGFuZCBtb3JlLgotICgyMDIxKSBbSlNPTiBTY2hlbWEgVmFsaWRhdGlvbiBpbiBQb3N0bWFuXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PThCZnNoVjVuNmFjP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEFuIHR1dG9yaWFsIG9mIHBlcmZvcm1pbmcgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbiBpbiBQb3N0bWFuIGluIEFQSSB0ZXN0cy4KLSAoMjAyMSkgW0NvbmZpZ3VyaW5nIFVtYnJhY28gb24gLk5FVCBDb3JlIC0gSlNPTiBTY2hlbWFdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9cnBVZy1veVN3OGc/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQ29uZmlndXJpbmcgVW1icmFjbyBvbiAuTkVUIENvcmUgd2l0aCBKU09OIFNjaGVtYS1wb3dlcmVkIGF1dG9jb21wbGV0aW9ucyBmb3IgYXBwc2V0dGluZ3MuanNvbiB1c2luZyBTY2hlbWFTdG9yZS4KLSAoMjAyMSkgW0FQSSBTdG9yeXRlbGxpbmcgd2l0aCBCZW4gSHV0dG9uXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTR4YkE4MmxvX2xjP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIFRoaXMgZXBpc29kZSB3ZSBzaXQgZG93biB3aXRoIEJlbiBIdXR0b24sIHRoZSBsZWFkIGJlaGluZCB0aGUgSlNPTiBTY2hlbWEgY29tbXVuaXR5IHRvIHRhbGsgYWJvdXQgdm9jYWJ1bGFyaWVzIGFuZCBvdGhlciB3YXlzIHdlIHZhbGlkYXRlIGFuZCBhbm5vdGF0ZSBob3cgd2UgdGVsbCBzdG9yaWVzIHdlIHRlbGwgaW4gdGhlIEFQSSBzcGFjZS4KLSAoMjAyMCkgW1doYXQgaXMgSlNPTiBTY2hlbWFdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9a0stX2dMN1ZzYzA/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQSBiYXNpYyBpbnRyb2R1Y3Rpb24gdG8gSlNPTiBTY2hlbWEgc2hvd2luZyBob3cgdG8gYXV0by1nZW5lcmF0ZSBKU09OIFNjaGVtYSBkb2N1bWVudCBmcm9tIGFuIGV4aXN0aW5nIEpTT04gZG9jdW1lbnQuCi0gKDIwMTkpIFtXaGF0IGlzIGEgSlNPTiBTY2hlbWE/IEdlbmVyYXRlLCBNb2RpZnksIGFuZCBVbmRlcnN0YW5kIGEgSlNPTiBTY2hlbWE6IEV4YW1wbGVdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9aEdYeFh5Sm1hVW8/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQW4gaW4tZGVwdGggaW50cm9kdWN0aW9uIHRvIEpTT04gU2NoZW1hIGluY2x1ZGluZyBhdXRvLWdlbmVyYXRpbmcgSlNPTiBTY2hlbWEgZG9jdW1lbnRzIHVzaW5nIFF1aWNrVHlwZS5pby4KLSAoMjAxOSkgW0pTT04gU2NoZW1hIFZhbGlkYXRpb246IEhvdyB0byBWYWxpZGF0ZSBKU09OIFNjaGVtYSB3aXRoIFBvc3RtYW4/XShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVgwNzJlS3RPSWlvP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEFuIGludHJvZHVjdGlvbiB0byBKU09OIFNjaGVtYSBhbmQgaG93IHRvIHVzZSBpdCBpbiBQb3N0bWFuLgotICgyMDE3KSBbSlNPTiBTY2hlbWEgLSB0aGUgR29vZCwgdGhlIEJhZCBhbmQgdGhlIFVnbHldKGh0dHBzOi8vdmltZW8uY29tLzIyMjQ4OTI4OD91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBXaXRoIEpTT04gU2NoZW1hIHlvdSBhcmUgcmVxdWlyZWQgdG8gZGVmaW5lIHlvdXIgZGF0YSBhbmQgdGhlIGF2YWlsYWJsZSB0b29saW5nIHRvIGRvIHNvIGlzIG5vdCByZWFsbHkgZ3JlYXQgKHlldCkuIFRoaXMgcHJlc2VudGF0aW9uIHByb3ZpZGVzIHlvdSB3aXRoIGNyaXRlcmlhIHRvIGp1ZGdlIHdoZXRoZXIgSlNPTiBTY2hlbWEgY291bGQgYmUgYmVuZWZpY2lhbCBmb3IgeW91ciBwcm9qZWN0IG9yIGlzIGp1c3QgdG9vIG11Y2ggb3ZlcmhlYWQuCgojIyBQYXBlcnMKCi0gKDIwMjUpIFtCbGF6ZTogQ29tcGlsaW5nIEpTT04gU2NoZW1hIGZvciAxMHggRmFzdGVyIFZhbGlkYXRpb25dKGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yNTAzLjAyNzcwP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIFRoaXMgcGFwZXIgaW50cm9kdWNlcyBCbGF6ZSwgYSBKU09OIFNjaGVtYSB2YWxpZGF0b3IgY29tcGlsZXMgY29tcGxleCBzY2hlbWFzIHRvIGFuIGVmZmljaWVudCByZXByZXNlbnRhdGlvbiBpbiBzZWNvbmRzIHRvIG1pbnV0ZXMsIGFkZGluZyBtaW5pbWFsIG92ZXJoZWFkIGF0IGJ1aWxkIHRpbWUuIEJsYXplIGluY29ycG9yYXRlcyBzZXZlcmFsIHVuaXF1ZSBvcHRpbWl6YXRpb25zIHRvIHJlZHVjZSB0aGUgdmFsaWRhdGlvbiB0aW1lIGJ5IGFuIGF2ZXJhZ2Ugb2YgYXBwcm94aW1hdGVseSAxMHggY29tcGFyZWQgZXhpc3RpbmcgdmFsaWRhdG9ycyBvbiBhIHZhcmlldHkgb2YgZGF0YXNldHMuIEluIHNvbWUgY2FzZXMsIEJsYXplIGFjaGlldmVzIGEgcmVkdWN0aW9uIGluIHZhbGlkYXRpb24gdGltZSBvZiBtdWx0aXBsZSBvcmRlcnMgb2YgbWFnbml0dWRlIGNvbXBhcmVkIHRvIHRoZSBuZXh0IGZhc3Rlc3QgdmFsaWRhdG9yLiBXZSBhbHNvIGRlbW9uc3RyYXRlIHRoYXQgc2V2ZXJhbCBwb3B1bGFyIHZhbGlkYXRvcnMgcHJvZHVjZSBpbmNvcnJlY3QgcmVzdWx0cyBpbiBzb21lIGNhc2VzLCB3aGlsZSBCbGF6ZSBtYWludGFpbnMgc3RyaWN0IGFkaGVyZW5jZSB0byB0aGUgSlNPTiBTY2hlbWEgc3BlY2lmaWNhdGlvbi4uCi0gKDIwMjUpIFtFbGltaW5hdGlvbiBvZiBhbm5vdGF0aW9uIGRlcGVuZGVuY2llcyBpbiB2YWxpZGF0aW9uIGZvciBNb2Rlcm4gSlNPTiBTY2hlbWFdKGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yNTAzLjExMjg4P3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIFRoaXMgcGFwZXIgcHJvdmVzIHRoYXQgdGhlIGVsaW1pbmF0aW9uIG9mIGFubm90YXRpb24gZGVwZW5kZW50IGtleXdvcmRzIGNhbm5vdCwgaW4gZ2VuZXJhbCwgYXZvaWQgYW4gZXhwb25lbnRpYWwgaW5jcmVhc2Ugb2YgdGhlIHNjaGVtYSBkaW1lbnNpb24uIFdlIHByb3ZpZGUgYW4gYWxnb3JpdGhtIHRvIGVsaW1pbmF0ZSB0aGVzZSBrZXl3b3JkcyB0aGF0LCBkZXNwaXRlIHRoZSB0aGVvcmV0aWNhbCBsb3dlciBib3VuZCwgYmVoYXZlcyBxdWl0ZSB3ZWxsIGluIHByYWN0aWNlLCBhcyB3ZSB2ZXJpZnkgd2l0aCBhbiBleHRlbnNpdmUgc2V0IG9mIGV4cGVyaW1lbnRzLi4KLSAoMjAyNSkgW0pTT05TY2hlbWFCZW5jaDogQSBSaWdvcm91cyBCZW5jaG1hcmsgb2YgU3RydWN0dXJlZCBPdXRwdXRzIGZvciBMYW5ndWFnZSBNb2RlbHNdKGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yNTAxLjEwODY4P3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIFRoaXMgcGFwZXIgaW50cm9kdWNlcyBKU09OU2NoZW1hQmVuY2gsIGEgYmVuY2htYXJrIGZvciBjb25zdHJhaW5lZCBkZWNvZGluZyBjb21wcmlzaW5nIDEwSyByZWFsLXdvcmxkIEpTT04gc2NoZW1hcyB0aGF0IGVuY29tcGFzcyBhIHdpZGUgcmFuZ2Ugb2YgY29uc3RyYWludHMgd2l0aCB2YXJ5aW5nIGNvbXBsZXhpdHkuIFdlIHBhaXIgdGhlIGJlbmNobWFyayB3aXRoIHRoZSBleGlzdGluZyBvZmZpY2lhbCBKU09OIFNjaGVtYSBUZXN0IFN1aXRlIGFuZCBldmFsdWF0ZSBzaXggc3RhdGUtb2YtdGhlLWFydCBjb25zdHJhaW5lZCBkZWNvZGluZyBmcmFtZXdvcmtzLCBpbmNsdWRpbmcgR3VpZGFuY2UsIE91dGxpbmVzLCBMbGFtYWNwcCwgWEdyYW1tYXIsIE9wZW5BSSwgYW5kIEdlbWluaS4gVGhyb3VnaCBleHRlbnNpdmUgZXhwZXJpbWVudHMsIHdlIGdhaW4gaW5zaWdodHMgaW50byB0aGUgY2FwYWJpbGl0aWVzIGFuZCBsaW1pdGF0aW9ucyBvZiBjb25zdHJhaW5lZCBkZWNvZGluZyBvbiBzdHJ1Y3R1cmVkIGdlbmVyYXRpb24gd2l0aCByZWFsLXdvcmxkIEpTT04gc2NoZW1hcy4uCi0gKDIwMjQpIFtWYWxpZGF0aW9uIG9mIE1vZGVybiBKU09OIFNjaGVtYTogRm9ybWFsaXphdGlvbiBhbmQgQ29tcGxleGl0eV0oaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIzMDcuMTAwMzQ/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gSW4gdGhpcyBwYXBlciwgd2UgZ2l2ZSB0aGUgZmlyc3QgZm9ybWFsIGRlc2NyaXB0aW9uIG9mIE1vZGVybiBKU09OIFNjaGVtYSwgd2hpY2ggd2UgY29uc2lkZXIgYSBjZW50cmFsIGNvbnRyaWJ1dGlvbiBvZiB0aGUgd29yayB0aGF0IHdlIHByZXNlbnQgaGVyZS4gV2UgdGhlbiBwcm92ZSB0aGF0IGl0cyBkYXRhIHZhbGlkYXRpb24gcHJvYmxlbSBpcyBQU1BBQ0UtY29tcGxldGUuIFdlIHByb3ZlIHRoYXQgdGhlIG9yaWdpbiBvZiB0aGUgcHJvYmxlbSBsaWVzIGluIGR5bmFtaWMgcmVmZXJlbmNlcywgYW5kIG5vdCBpbiBhbm5vdGF0aW9uLWRlcGVuZGVudCB2YWxpZGF0aW9uLiBXZSBzdHVkeSB0aGUgc2NoZW1hIGFuZCBkYXRhIGNvbXBsZXhpdGllcywgc2hvd2luZyB0aGF0IHRoZSBwcm9ibGVtIGlzIFBTUEFDRS1jb21wbGV0ZSB3aXRoIHJlc3BlY3QgdG8gdGhlIHNjaGVtYSBzaXplIGV2ZW4gd2l0aCBhIGZpeGVkIGluc3RhbmNlLCBidXQgaXMgaW4gUFRJTUUgd2hlbiB0aGUgc2NoZW1hIGlzIGZpeGVkIGFuZCBvbmx5IHRoZSBpbnN0YW5jZSBzaXplIGlzIGFsbG93ZWQgdG8gdmFyeS4gRmluYWxseSwgd2UgcnVuIGV4cGVyaW1lbnRzIHRoYXQgc2hvdyB0aGF0IHRoZXJlIGFyZSBmYW1pbGllcyBvZiBzY2hlbWFzIHdoZXJlIHRoZSBkaWZmZXJlbmNlIGluIGFzeW1wdG90aWMgY29tcGxleGl0eSBiZXR3ZWVuIGR5bmFtaWMgYW5kIHN0YXRpYyByZWZlcmVuY2VzIGlzIGV4dHJlbWVseSB2aXNpYmxlLCBldmVuIHdpdGggc21hbGwgc2NoZW1hcy4uCi0gKDIwMjMpIFtBbiBBbmFseXNpcyBvZiBEZWZlY3RzIGluIFB1YmxpYyBKU09OIFNjaGVtYXNdKGh0dHBzOi8vd3d3LmNyaS5taW5lc3BhcmlzLnBzbC5ldS9jbGFzc2VtZW50L2RvYy9BLTc5NC5wZGY/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQW5hbHlzaXMgb2YgY29tbW9uIGRlZmVjdHMgZm91bmQgaW4gcHVibGljbHkgYXZhaWxhYmxlIHNjaGVtYXMgbGVhZGluZyB0byByZWNvbW1lbmQgY2hhbmdlcyB0byB0aGUgc3BlYy4KLSAoMjAyMykgW0NvbXByZWhlbmRpbmcgU2VtYW50aWMgVHlwZXMgaW4gSlNPTiBEYXRhIHdpdGggR3JhcGggTmV1cmFsIE5ldHdvcmtzXShodHRwczovL2FyeGl2Lm9yZy9hYnMvMjMwNy4xMjgwNz91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBHcmFwaCBuZXVyYWwgbmV0d29ya3MgZm9yIHNlbWFudGljIHR5cGUgZGV0ZWN0aW9uIGluIEpTT04uCi0gKDIwMjMpIFtKU09Ob2lkOiBEaXN0cmlidXRlZCBKU09OIFNjaGVtYSBEaXNjb3ZlcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRhdW5pdHlsYWIvanNvbm9pZC1kaXNjb3Zlcnk/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gQSB0b29sIGZvciBkaXN0cmlidXRlZCBKU09OIHNjaGVtYSBkaXNjb3ZlcnkgaW5jbHVkaW5nIG1hbnkgcHJvcGVydGllcyBvZiB0aGUgZGF0YS4KLSAoMjAyMykgW0pTT05vaWQ6IE1vbm9pZC1iYXNlZCBFbnJpY2htZW50IGZvciBDb25maWd1cmFibGUgYW5kIFNjYWxhYmxlIERhdGEtRHJpdmVuIFNjaGVtYSBEaXNjb3ZlcnldKGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yMzA3LjAzMTEzP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIE1lYW5pbmdmdWwgc2NoZW1hIGluZm9ybWF0aW9uIGZvciBzZW1pLXN0cnVjdHVyZWQgZGF0YS4KLSAoMjAyMikgW0ltcGxpY2l0IEpTT04gU2NoZW1hIFZlcnNpb25pbmcgVHJpZ2dlcmVkIGJ5IFRlbXBvcmFsIFVwZGF0ZXMgdG8gSlNPTi1CYXNlZCBCaWcgRGF0YSBpbiB0aGUgz4RKU2NoZW1hIEZyYW1ld29ya10oaHR0cHM6Ly9saW5rLnNwcmluZ2VyLmNvbS9jaGFwdGVyLzEwLjEwMDcvOTc4LTMtMDMxLTA3OTY5LTZfMz91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBUaGlzIHBhcGVyIHByb3Bvc2VzIGFuIGFwcHJvYWNoIGZvciBoYW5kbGluZyBpbXBsaWNpdCBzY2hlbWEgY2hhbmdlcyB0cmlnZ2VyZWQgYnkgdGVtcG9yYWwgdXBkYXRlcyBvZiBKU09OLWJhc2VkIEJpZyBEYXRhLiBNb3JlIHByZWNpc2VseSwgd2hlbiBhIHVzZXIgc3BlY2lmaWVzIGEgdGVtcG9yYWwgSlNPTiB1cGRhdGUgb3BlcmF0aW9uIHRoYXQgbW9kaWZpZXMgYSBzbmFwc2hvdCBKU09OIGNvbXBvbmVudCBhc3NpZ25pbmcgYSB2YWxpZC10aW1lIHRpbWVzdGFtcCB0byBpdHMgbmV3IHZhbHVlLCB0aGUgZXhlY3V0aW9uIG9mIHN1Y2ggYW4gb3BlcmF0aW9uIHJlcXVpcmVzIHRoZSBKU09OIGNvbXBvbmVudCB0byBiZWNvbWUgdGVtcG9yYWwsIHdoaWNoIGlzIGZvciBhbGwgaW50ZW50cyBhIHNjaGVtYSBjaGFuZ2UuIFRodXMsIGEgbmV3IHZlcnNpb24gb2YgdGhlIM+ESlNjaGVtYSB0ZW1wb3JhbCBjaGFyYWN0ZXJpc3RpY3MgZG9jdW1lbnQgaXMgZ2VuZXJhdGVkLCB3aXRoIHRoZSBhZGRpdGlvbiBvZiBhIG5ldyB2YWxpZC10aW1lIGNoYXJhY3RlcmlzdGljLiBOZXcgdmVyc2lvbnMgb2YgdGhlIHRlbXBvcmFsIEpTT04gc2NoZW1hIGFuZCBvZiB0aGUgdGVtcG9yYWwgSlNPTiBkb2N1bWVudCBhcmUgYWxzbyBhY2NvcmRpbmdseSBjcmVhdGVkLgotICgyMDIyKSBbSlNPTiBCaW5QYWNrOiBBIHNwYWNlLWVmZmljaWVudCBzY2hlbWEtZHJpdmVuIGFuZCBzY2hlbWEtbGVzcyBiaW5hcnkgc2VyaWFsaXphdGlvbiBzcGVjaWZpY2F0aW9uIGJhc2VkIG9uIEpTT04gU2NoZW1hXShodHRwczovL3d3dy5qdmlvdHRpLmNvbS9hc3NldHMvZGlzc2VydGF0aW9uLnBkZj91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBBIHN1cnZleSBhbmQgYmVuY2htYXJrIG9mIEpTT04tY29tcGF0aWJsZSBiaW5hcnkgc2VyaWFsaXphdGlvbiBzcGVjaWZpY2F0aW9ucyBmb2xsb3dlZCBieSB0aGUgaW50cm9kdWN0aW9uIG9mIEpTT04gQmluUGFjaywgYSBub3ZlbCBwcm90b2NvbC1pbmRlcGVuZGVudCBzY2hlbWEtZHJpdmVuIGFuZCBzY2hlbWEtbGVzcyBiaW5hcnkgc2VyaWFsaXphdGlvbiBzcGVjaWZpY2F0aW9uIHRoYXQgaXMgc3RyaWN0bHktY29tcGF0aWJsZSB3aXRoIEpTT04gYW5kIHRha2VzIGFkdmFudGFnZSBvZiBKU09OIFNjaGVtYSBmb3JtYWwgZGVmaW5pdGlvbnMgdG8gcHJvZHVjZSBiaXQtc3RyaW5ncyB0aGF0IGFyZSBzcGFjZS1lZmZpY2llbnQgaW4gY29tcGFyaXNvbiB0byBldmVyeSBjb25zaWRlcmVkIGFsdGVybmF0aXZlIHNlcmlhbGl6YXRpb24gc3BlY2lmaWNhdGlvbi4KLSAoMjAyMikgW01hY2hpbmUgYWN0aW9uYWJsZSBtZXRhZGF0YSBtb2RlbHNdKGh0dHBzOi8vcG1jLm5jYmkubmxtLm5paC5nb3YvYXJ0aWNsZXMvUE1DOTUyNTU5Mi8/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gVGhpcyBwYXBlciBkaXNjdXNzZWQgdGhlIHVzZSBvZiBKU09OIFNjaGVtYSB0byBkZWZpbmUgaHVtYW4gYW5kIG1hY2hpbmUgcmVhZGFibGUgbWV0YWRhdGEgbW9kZWxzLgotICgyMDIyKSBbTmVnYXRpb24tQ2xvc3VyZSBmb3IgSlNPTiBTY2hlbWFdKGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yMjAyLjEzNDM0P3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEV4YW1pbmVzIGhvdyBKU09OIFNjaGVtYSBoYW5kbGVzIG5lZ2F0aW9uLCBkZW1vbnN0cmF0ZXMgdGhhdCB0aGUgbGFuZ3VhZ2UgbGFja3MgbmVnYXRpb24gY2xvc3VyZSwgZXhwbG9yZXMgaG93IHJlY2VudCBzY2hlbWEgZHJhZnRzIGFkZHJlc3MgdGhpcyBsaW1pdGF0aW9uLCBhbmQgcHJvcG9zZXMgZW5yaWNobWVudHMgdG8gdGhlIGxhbmd1YWdlLiBJbmNsdWRlcyBhbiBhbGdlYnJhaWMgcmVmb3JtdWxhdGlvbiBvZiBKU09OIFNjaGVtYSBhbmQgYSBwcm90b3R5cGUgc3lzdGVtIGZvciBnZW5lcmF0aW5nIHNjaGVtYSB3aXRuZXNzZXMuCi0gKDIwMjIpIFtUaGUgVXNhZ2Ugb2YgTmVnYXRpb24gaW4gUmVhbC1Xb3JsZCBKU09OIFNjaGVtYSBEb2N1bWVudHNdKGh0dHA6Ly9iaWxpb3NvLmlzdGkuY25yLml0L3NlYmQyMDIyL3ByZXByaW50L1NFQkRfMjAyMl9DYW1lcmEtcmVhZHlfUERGXzgucGRmP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIE1hbnkgc29mdHdhcmUgdG9vbHMsIGJ1dCBhbHNvIGZvcm1hbCBmcmFtZXdvcmtzIGZvciB3b3JraW5nIHdpdGggSlNPTiBTY2hlbWEsIGRvIG5vdCBmdWxseSBzdXBwb3J0IG5lZ2F0aW9uLiBUaGlzIG1vdGl2YXRlcyB1cyB0byBzdHVkeSB3aGV0aGVyIG5lZ2F0aW9uIGlzIGFjdHVhbGx5IHVzZWQgaW4gcHJhY3RpY2UsIGZvciB3aGljaCBhaW1zLCBhbmQgd2hldGhlciBpdCBjb3VsZCwgaW4gcHJpbmNpcGxlLCBiZSByZXBsYWNlZCBieSBzaW1wbGVyIG9wZXJhdG9ycy4gV2UgaGF2ZSBjb2xsZWN0ZWQgYSBsYXJnZSBjb3JwdXMgb2YgODBrIG9wZW4gc291cmNlIEpTT04gU2NoZW1hIGRvY3VtZW50cy4gV2UgcGVyZm9ybSBhIHN5c3RlbWF0aWMgYW5hbHlzaXMsIHF1YW50aWZ5IHVzYWdlIHBhdHRlcm5zIG9mIG5lZ2F0aW9uLCBhbmQgYWxzbyBxdWFsaXRhdGl2ZWx5IGFuYWx5emUgc2NoZW1hcy4gV2Ugc2hvdyB0aGF0IG5lZ2F0aW9uIGlzIGluZGVlZCB1c2VkLCBhbGJlaXQgaW5mcmVxdWVudGx5LCBmb2xsb3dpbmcgYSBzdGFibGUgc2V0IG9mIHBhdHRlcm5zLgotICgyMDIyKSBbVmFsaWRhdGluZyBTdHJlYW1pbmcgSlNPTiBEb2N1bWVudHMgd2l0aCBMZWFybmVkIFZQQXNdKGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yMjExLjA4ODkxP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIFRoaXMgcGFwZXIgcHJlc2VudHMgYSBuZXcgc3RyZWFtaW5nIGFsZ29yaXRobSB0byB2YWxpZGF0ZSBKU09OIGRvY3VtZW50cyBhZ2FpbnN0IGEgc2V0IG9mIGNvbnN0cmFpbnRzIGdpdmVuIGFzIGEgSlNPTiBzY2hlbWEuIEl0IHByb3ZlcyB0aGF0IHRoZXJlIGFsd2F5cyBleGlzdHMgYSB2aXNpYmx5IHB1c2hkb3duIGF1dG9tYXRvbiAoVlBBKSB0aGF0IGFjY2VwdHMgdGhlIHNhbWUgc2V0IG9mIEpTT04gZG9jdW1lbnRzIGFzIGEgSlNPTiBzY2hlbWEuCi0gKDIwMjIpIFtXaXRuZXNzIEdlbmVyYXRpb24gZm9yIEpTT04gU2NoZW1hXShodHRwczovL2FyeGl2Lm9yZy9hYnMvMjIwMi4xMjg0OT91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBKU09OIFNjaGVtYSBpcyBhbiBpbXBvcnRhbnQsIGV2b2x2aW5nIHN0YW5kYXJkIHNjaGVtYSBsYW5ndWFnZSBmb3IgZmFtaWxpZXMgb2YgSlNPTiBkb2N1bWVudHMuIEl0IGlzIGJhc2VkIG9uIGEgY29tcGxleCBjb21iaW5hdGlvbiBvZiBzdHJ1Y3R1cmFsIGFuZCBCb29sZWFuIGFzc2VydGlvbnMsIGFuZCBmZWF0dXJlcyBuZWdhdGlvbiBhbmQgcmVjdXJzaW9uLiBUaGUgc3RhdGljIGFuYWx5c2lzIG9mIEpTT04gU2NoZW1hIGRvY3VtZW50cyBjb21wcmlzZXMgcHJhY3RpY2FsbHkgcmVsZXZhbnQgcHJvYmxlbXMsIGluY2x1ZGluZyBzY2hlbWEgc2F0aXNmaWFiaWxpdHksIGluY2x1c2lvbiwgYW5kIGVxdWl2YWxlbmNlLiBUaGVzZSB0aHJlZSBwcm9ibGVtcyBjYW4gYmUgcmVkdWNlZCB0byB3aXRuZXNzIGdlbmVyYXRpb246IGdpdmVuIGEgc2NoZW1hLCBnZW5lcmF0ZSBhbiBlbGVtZW50IG9mIHRoZSBzY2hlbWEsIGlmIGl0IGV4aXN0cywgYW5kIHJlcG9ydCBmYWlsdXJlIG90aGVyd2lzZS4KLSAoMjAyMSkgW0Rlcml2aW5nIFNlbWFudGljcy1Bd2FyZSBGdXp6ZXJzIGZyb20gV2ViIEFQSSBTY2hlbWFzXShodHRwczovL2FyeGl2Lm9yZy9hYnMvMjExMi4xMDMyOD91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBEaXNjdXNzZXMgSlNPTiBTY2hlbWEgY2Fub25pY2FsaXphdGlvbiBhbmQgSlNPTiBTY2hlbWEgaW5zdGFuY2UgZGVyaXZhdGlvbiBpbiB0aGUgY29udGV4dCBvZiBwcm9wZXJ0eS1iYXNlZCB0ZXN0aW5nIG9mIEFQSXMuCi0gKDIwMjEpIFtFbmhhbmNpbmcgSlNPTiBTY2hlbWEgRGlzY292ZXJ5IGJ5IFVuY292ZXJpbmcgSGlkZGVuIERhdGFdKGh0dHBzOi8vY2V1ci13cy5vcmcvVm9sLTI5NzEvcGFwZXIxMS5wZGY/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gRW5oYW5jaW5nIGRpc2NvdmVyZWQgSlNPTiBTY2hlbWFzIGJ5IGRpc2FtYmlndWF0aW5nIGRhdGEgYW5kIG1ldGFkYXRhLgotICgyMDIxKSBbRmFzdCBEaXNjb3Zlcnkgb2YgTmVzdGVkIERlcGVuZGVuY2llcyBvbiBKU09OIERhdGFdKGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yMTExLjEwMzk4P3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEVmZmljaWVudCBkZXBlbmRlbmN5IG1pbmluZyBhbGdvcml0aG1zIGZvciBub24tcmVsYXRpb25hbCBkYXRhLgotICgyMDIxKSBbTm90IEVsaW1pbmF0aW9uIGFuZCBXaXRuZXNzIEdlbmVyYXRpb24gZm9yIEpTT04gU2NoZW1hXShodHRwczovL2FyeGl2Lm9yZy9hYnMvMjEwNC4xNDgyOD91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBJbiB0aGlzIHBhcGVyLCB3ZSBwcmVzZW50IGFuIGFsZ2VicmFpYyBjaGFyYWN0ZXJpemF0aW9uIG9mIEpTT04gU2NoZW1hLCBvYnRhaW5lZCBieSBhZGRpbmcgb3Bwb3J0dW5lIG9wZXJhdG9ycywgYW5kIGJ5IG1pcnJvcmluZyBleGlzdGluZyBvbmVzLiBXZSBwcmVzZW50IHRoZW4gYWxnZWJyYS1iYXNlZCBhcHByb2FjaGVzIGZvciBkZWFsaW5nIHdpdGggbm90LWVsaW1pbmF0aW9uIGFuZCB3aXRuZXNzIGdlbmVyYXRpb24gcHJvYmxlbXMsIHdoaWNoIHBsYXkgYSBjZW50cmFsIHJvbGUgYXMgdGhleSBsZWFkIHRvIHNvbHV0aW9ucyBmb3IgdGhlIG90aGVyIG1lbnRpb25lZCBjb21wbGV4IHByb2JsZW1zLgotICgyMDIxKSBbVElMVDogQSBHRFBSLUFsaWduZWQgVHJhbnNwYXJlbmN5IEluZm9ybWF0aW9uIExhbmd1YWdlIGFuZCBUb29sa2l0IGZvciBQcmFjdGljYWwgUHJpdmFjeSBFbmdpbmVlcmluZ10oaHR0cHM6Ly9kbC5hY20ub3JnL2RvaS8xMC4xMTQ1LzM0NDIxODguMzQ0NTkyNT91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBXZSBwcmVzZW50IFRJTFQsIGEgdHJhbnNwYXJlbmN5IGluZm9ybWF0aW9uIGxhbmd1YWdlIGFuZCB0b29sa2l0IGV4cGxpY2l0bHkgZGVzaWduZWQgdG8gcmVwcmVzZW50IGFuZCBwcm9jZXNzIHRyYW5zcGFyZW5jeSBpbmZvcm1hdGlvbiBpbiBsaW5lIHdpdGggdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUgR0RQUiBhbmQgYWxsb3dpbmcgZm9yIGEgbW9yZSBhdXRvbWF0ZWQgYW5kIGFkYXB0aXZlIHVzZSBvZiBzdWNoIGluZm9ybWF0aW9uIHRoYW4gZXN0YWJsaXNoZWQsIGxlZ2FsZXNlIGRhdGEgcHJvdGVjdGlvbiBwb2xpY2llcyBkby4KLSAoMjAyMCkgW0NoYWxsZW5nZXMgaW4gQ2hlY2tpbmcgSlNPTiBTY2hlbWEgQ29udGFpbm1lbnQgb3ZlciBFdm9sdmluZyBSZWFsLVdvcmxkIFNjaGVtYXNdKGh0dHBzOi8vbGluay5zcHJpbmdlci5jb20vY2hhcHRlci8xMC4xMDA3Lzk3OC0zLTAzMC02NTg0Ny0yXzIwP3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIFRoaXMgcGFwZXIgcHJlc2VudHMgdGhlIHJlc3VsdHMgb2YgYW4gZW1waXJpY2FsIHN0dWR5IG9mIHRoZSBmaXJzdCBnZW5lcmF0aW9uIG9mIHRvb2xzIGZvciBjaGVja2luZyBKU09OIFNjaGVtYSBjb250YWlubWVudCB3aGljaCBpcyBhcHBsaWVkIHRvIGEgZGl2ZXJzZSBjb2xsZWN0aW9uIG9mIG92ZXIgMjMwIHJlYWwtd29ybGQgc2NoZW1hcyBhbmQgdGhlaXIgYWx0b2dldGhlciAxayBoaXN0b3JpYyB2ZXJzaW9ucy4KLSAoMjAyMCkgW0pTT04gU2NoZW1hIEluZmVyZW5jZSBBcHByb2FjaGVzXShodHRwczovL2xpbmsuc3ByaW5nZXIuY29tL2NoYXB0ZXIvMTAuMTAwNy85NzgtMy0wMzAtNjU4NDctMl8xNj91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBJbiB0aGUgY29udGV4dCBvZiBkb2N1bWVudCBOb1NRTCBkYXRhYmFzZXMsIG5hbWVseSB0aG9zZSBhc3N1bWluZyB0aGUgSlNPTiBkYXRhIGZvcm1hdCwgdGhpcyBwYXBlciBmb2N1c2VzIG9uIHNldmVyYWwgcmVwcmVzZW50YXRpdmVzIG9mIHRoZSBleGlzdGluZyBpbmZlcmVuY2UgYXBwcm9hY2hlcyBhbmQgcHJvdmlkZSB0aGVpciB0aG9yb3VnaCBjb21wYXJpc29uLgotICgyMDIwKSBbVHlwZSBTYWZldHkgd2l0aCBKU09OIFN1YnNjaGVtYV0oaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzE5MTEuMTI2NTE/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gRGVjaWRpbmcgd2hldGhlciBvbmUgc2NoZW1hIGlzIGEgc3Vic2NoZW1hIG9mIGFub3RoZXIgaXMgbm9uLXRyaXZpYWwgYmVjYXVzZSBvZiB0aGUgcmljaG5lc3Mgb2YgdGhlIEpTT04gU2NoZW1hIHNwZWNpZmljYXRpb24gbGFuZ3VhZ2UuIEdpdmVuIGEgcGFpciBvZiBzY2hlbWFzLCBvdXIgYXBwcm9hY2ggZmlyc3QgY2Fub25pY2FsaXplcyBhbmQgc2ltcGxpZmllcyBib3RoIHNjaGVtYXMsIHRoZW4gZGVjaWRlcyB0aGUgc3Vic2NoZW1hIHF1ZXN0aW9uIG9uIHRoZSBjYW5vbmljYWwgZm9ybXMsIGRpc3BhdGNoaW5nIHNpbXBsZXIgc3Vic2NoZW1hIHF1ZXJpZXMgdG8gdHlwZS1zcGVjaWZpYyBjaGVja2Vycy4KLSAoMjAxOSkgW1doYXQgQXJlIFJlYWwgSlNPTiBTY2hlbWFzIExpa2U/XShodHRwczovL2xpbmsuc3ByaW5nZXIuY29tL2NoYXB0ZXIvMTAuMTAwNy85NzgtMy0wMzAtMzQxNDYtNl85P3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIEEgZmlyc3QgZW1waXJpY2FsIGFuYWx5c2lzIG9mIGEgY3VyYXRlZCBjb2xsZWN0aW9uIG9mIHJlYWwtd29ybGQgSlNPTiBTY2hlbWFzLiBLbm93aW5nIHdoYXQgcmVhbCBKU09OIFNjaGVtYXMgYXJlIGxpa2UgKHRvIGJvcnJvdyBmcm9tIGEgdGl0bGUgb2YgYSByZWxhdGVkIHN0dWR5IG9uIERURHMpIGhlbHBzIHByYWN0aXRpb25lcnMgYW5kIHJlc2VhcmNoZXJzIGluIG1ha2luZyByZWFsaXN0aWMgYXNzdW1wdGlvbnMgd2hlbiBidWlsZGluZyB0b29scyBmb3IgSlNPTiBTY2hlbWEgcHJvY2Vzc2luZy4KLSAoMjAxOCkgW0FuIEFwcHJvYWNoIGZvciBTY2hlbWEgRXh0cmFjdGlvbiBvZiBKU09OIGFuZCBFeHRlbmRlZCBKU09OIERvY3VtZW50IENvbGxlY3Rpb25zXShodHRwczovL2llZWV4cGxvcmUuaWVlZS5vcmcvYWJzdHJhY3QvZG9jdW1lbnQvODQyNDczMT91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBUaGlzIHBhcGVyIHByZXNlbnRzIGFuIGFwcHJvYWNoIHRoYXQgZXh0cmFjdHMgYSBzY2hlbWEgZnJvbSBhIEpTT04gb3IgRXh0ZW5kZWQgSlNPTiBkb2N1bWVudCBjb2xsZWN0aW9uIHN0b3JlZCBpbiBhIE5vU1FMIGRvY3VtZW50LW9yaWVudGVkIGRhdGFiYXNlIG9yIG90aGVyIGRvY3VtZW50IHJlcG9zaXRvcnkuIEFnZ3JlZ2F0aW9uIG9wZXJhdGlvbnMgYXJlIGNvbnNpZGVyZWQgaW4gb3JkZXIgdG8gb2J0YWluIGEgc2NoZW1hIGZvciBlYWNoIGRpc3RpbmN0IHN0cnVjdHVyZSBpbiB0aGUgY29sbGVjdGlvbiwgYW5kIGEgaGllcmFyY2hpY2FsIGRhdGEgc3RydWN0dXJlIGlzIHByb3Bvc2VkIHRvIGdyb3VwIHRoZXNlIHNjaGVtYXMgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgYSBnbG9iYWwgc2NoZW1hIGluIEpTT04gU2NoZW1hIGZvcm1hdC4KLSAoMjAxOCkgW1RvcC1Eb3duIE1vZGVsLURyaXZlbiBFbmdpbmVlcmluZyBvZiBXZWIgU2VydmljZXMgZnJvbSBFeHRlbmRlZCBPcGVuQVBJIE1vZGVsc10oaHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL2Fic3RyYWN0L2RvY3VtZW50LzkwMDAwMjA/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gU2hvd3MgaG93IE9wZW5BUEkgY2FuIGJlIGV4dGVuZGVkIHRvIGFkZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGluc2lkZSBtb2RlbHMuIFRoZXNlIGV4dGVuc2lvbnMgbGluayBzZXJ2aWNlcyB0byBhc3NlbWJsaWVzIG9mIGNvbXBvbmVudHMgdGhhdCBkZXNjcmliZSBjb21wdXRhdGlvbnMuIEhlbmNlIGEgdG9wLWRvd24gZGV2ZWxvcG1lbnQgcHJvY2VzcyB0aGF0IGtlZXBzIG1vZGVsIGFuZCBpbXBsZW1lbnRhdGlvbiBhbGlnbmVkLgotICgyMDE3KSBbRGVmaW5pdGlvbiBvZiBSRVNUIHdlYiBzZXJ2aWNlcyB3aXRoIEpTT04gc2NoZW1hXShodHRwczovL2RsLmFjbS5vcmcvZG9pL2Ficy8xMC4xMDAyL3NwZS4yNDY2P3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIFRoZSBhaW0gb2YgdGhpcyBhcnRpY2xlIGlzIHRvIGRlbW9uc3RyYXRlIGhvdyBKU09OIFNjaGVtYSwgYW5kIHBhcnRpY3VsYXJseSB0aGUgSlNPTiBIeXBlciBTY2hlbWEgZXh0ZW5zaW9uLCBpcyBzdWl0YWJsZSB0byBkZXNjcmliZSBKU09OLWJhc2VkIHdlYiBzZXJ2aWNlcyB0aGF0IGZvbGxvdyB0aGUgUkVTVCBhcmNoaXRlY3R1cmFsIHBhdHRlcm4uCi0gKDIwMTcpIFtFeGFtcGxlLURyaXZlbiBXZWIgQVBJIFNwZWNpZmljYXRpb24gRGlzY292ZXJ5XShodHRwczovL2xpbmsuc3ByaW5nZXIuY29tL2NoYXB0ZXIvMTAuMTAwNy85NzgtMy0zMTktNjE0ODItM18xNj91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBJbiB0aGlzIHBhcGVyIHdlIHByZXNlbnQgYW4gZXhhbXBsZS1kcml2ZW4gZGlzY292ZXJ5IHByb2Nlc3MgdGhhdCBnZW5lcmF0ZXMgbW9kZWwtYmFzZWQgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBmb3IgUkVTVCBXZWIgQVBJcyBieSB1c2luZyBBUEkgY2FsbCBleGFtcGxlcy4gQSB0b29sIGltcGxlbWVudGluZyBvdXIgYXBwcm9hY2ggYW5kIGEgY29tbXVuaXR5LWRyaXZlbiByZXBvc2l0b3J5IGZvciB0aGUgZGlzY292ZXJlZCBBUElzIGFyZSBhbHNvIHByZXNlbnRlZC4KLSAoMjAxNykgW1NjaGVtYSBJbmZlcmVuY2UgZm9yIE1hc3NpdmUgSlNPTiBEYXRhc2V0c10oaHR0cHM6Ly9oYWwuYXJjaGl2ZXMtb3V2ZXJ0ZXMuZnIvaGFsLTAxNDkxNzY1P3V0bV9zb3VyY2U9YXdlc29tZS1qc29uc2NoZW1hKSAtIFJlY2VudCB5ZWFycyBoYXZlIHNlZW4gdGhlIHdpZGVzcHJlYWQgdXNlIG9mIEpTT04gYXMgYSBkYXRhIGZvcm1hdCB0byByZXByZXNlbnQgbWFzc2l2ZSBkYXRhIGNvbGxlY3Rpb25zLiBKU09OIGRhdGEgY29sbGVjdGlvbnMgYXJlIHVzdWFsbHkgc2NoZW1hbGVzcy4gV2hpbGUgdGhpcyBlbnN1cmVzIHNldmVyYWwgYWR2YW50YWdlcywgdGhlIGFic2VuY2Ugb2Ygc2NoZW1hIGluZm9ybWF0aW9uIGhhcyBpbXBvcnRhbnQgbmVnYXRpdmUgY29uc2VxdWVuY2VzOiB0aGUgY29ycmVjdG5lc3Mgb2YgY29tcGxleCBxdWVyaWVzIGFuZCBwcm9ncmFtcyBjYW5ub3QgYmUgc3RhdGljYWxseSBjaGVja2VkLCB1c2VycyBjYW5ub3QgcmVseSBvbiBzY2hlbWEgaW5mb3JtYXRpb24gdG8gcXVpY2tseSBmaWd1cmUgb3V0IHN0cnVjdHVyYWwgcHJvcGVydGllcyB0aGF0IGNvdWxkIHNwZWVkIHVwIHRoZSBmb3JtdWxhdGlvbiBvZiBjb3JyZWN0IHF1ZXJpZXMsIGFuZCBtYW55IHNjaGVtYS1iYXNlZCBvcHRpbWl6YXRpb25zIGFyZSBub3QgcG9zc2libGUuIEluIHRoaXMgcGFwZXIgd2UgZGVhbCB3aXRoIHRoZSBwcm9ibGVtIG9mIGluZmVycmluZyBhIHNjaGVtYSBmcm9tIG1hc3NpdmUgSlNPTiBkYXRhIHNldHMuCi0gKDIwMTYpIFtGb3VuZGF0aW9ucyBvZiBKU09OIFNjaGVtYV0oaHR0cHM6Ly9kbC5hY20ub3JnL2RvaS9hYnMvMTAuMTE0NS8yODcyNDI3LjI4ODMwMjk/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gSW4gdGhpcyBwYXBlciB3ZSBwcm92aWRlIHRoZSBmaXJzdCBmb3JtYWwgZGVmaW5pdGlvbiBvZiBzeW50YXggYW5kIHNlbWFudGljcyBmb3IgSlNPTiBTY2hlbWEgYW5kIHVzZSBpdCB0byBzaG93IHRoYXQgaW1wbGVtZW50aW5nIHRoaXMgbGF5ZXIgb24gdG9wIG9mIEpTT04gaXMgZmVhc2libGUgaW4gcHJhY3RpY2UuCi0gKDIwMTYpIFvPhEpTY2hlbWE6IEEgRnJhbWV3b3JrIGZvciBNYW5hZ2luZyBUZW1wb3JhbCBKU09OLUJhc2VkIE5vU1FMIERhdGFiYXNlc10oaHR0cHM6Ly9saW5rLnNwcmluZ2VyLmNvbS9jaGFwdGVyLzEwLjEwMDcvOTc4LTMtMzE5LTQ0NDA2LTJfMTM/dXRtX3NvdXJjZT1hd2Vzb21lLWpzb25zY2hlbWEpIC0gVGhpcyBwYXBlciBwcm9wb3NlcyBhIGZyYW1ld29yayBjYWxsZWQgVGVtcG9yYWwgSlNPTiBTY2hlbWEgKM+ESlNjaGVtYSksIGluc3BpcmVkIGJ5IHRoZSDPhFhTY2hlbWEgZnJhbWV3b3JrIGRlZmluZWQgZm9yIFhNTCBkYXRhLiDPhEpTY2hlbWEgYWxsb3dzIGRlZmluaW5nIGEgdGVtcG9yYWwgSlNPTiBzY2hlbWEgZnJvbSBhIGNvbnZlbnRpb25hbCBKU09OIHNjaGVtYSBhbmQgYSBzZXQgb2YgdGVtcG9yYWwgbG9naWNhbCBhbmQgcGh5c2ljYWwgY2hhcmFjdGVyaXN0aWNzLiBPdXIgZnJhbWV3b3JrIGd1YXJhbnRlZXMgbG9naWNhbCBhbmQgcGh5c2ljYWwgZGF0YSBpbmRlcGVuZGVuY2UgZm9yIHRlbXBvcmFsIHNjaGVtYXMgYW5kIHByb3ZpZGVzIGEgbG93LWltcGFjdCBzb2x1dGlvbiBzaW5jZSBpdCByZXF1aXJlcyBuZWl0aGVyIG1vZGlmaWNhdGlvbnMgb2YgZXhpc3RpbmcgSlNPTiBkb2N1bWVudHMsIG5vciBleHRlbnNpb25zIHRvIHRoZSBKU09OIGZvcm1hdCwgdGhlIEpTT04gU2NoZW1hIGxhbmd1YWdlLCBhbmQgYWxsIHJlbGF0ZWQgdG9vbHMgYW5kIGxhbmd1YWdlcy4KLSAoMjAxNSkgW1NjaGVtYSBleHRyYWN0aW9uIGFuZCBzdHJ1Y3R1cmFsIG91dGxpZXIgZGV0ZWN0aW9uIGZvciBKU09OLWJhc2VkIG5vc3FsIGRhdGEgc3RvcmVzXShodHRwczovL2RsLmdpLmRlL2hhbmRsZS8yMC41MDAuMTIxMTYvMjQyMD91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBSYXRoZXIgdGhhbiBkZXNpZ25pbmcgdGhlIHNjaGVtYSB1cCBmcm9udCwgZXh0cmFjdGluZyBhIHNjaGVtYSBpbiBoaW5kc2lnaHQgY2FuIGJlIHNlZW4gYXMgYSByZXZlcnNlLWVuZ2luZWVyaW5nIHN0ZXAuIEJhc2VkIG9uIHRoZSBleHRyYWN0ZWQgc2NoZW1hIGluZm9ybWF0aW9uLCB3ZSBwcm9wb3NlIHNldCBvZiBzaW1pbGFyaXR5IG1lYXN1cmVzIHRoYXQgY2FwdHVyZSB0aGUgZGVncmVlIG9mIGhldGVyb2dlbmVpdHkgb2YgSlNPTiBkYXRhIGFuZCB3aGljaCByZXZlYWwgc3RydWN0dXJhbCBvdXRsaWVycyBpbiB0aGUgZGF0YS4KLSAoMjAxNCkgW0pzb25nZW46IGEgcXVpY2tjaGVjayBiYXNlZCBsaWJyYXJ5IGZvciB0ZXN0aW5nIEpTT04gd2ViIHNlcnZpY2VzXShodHRwczovL2RsLmFjbS5vcmcvZG9pL2Ficy8xMC4xMTQ1LzI2MzM0NDguMjYzMzQ1ND91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBUaGlzIGFydGljbGUgZGVzY3JpYmVzIGEgc3lzdGVtYXRpYyBhcHByb2FjaCB0byB0ZXN0aW5nIGJlaGF2aW91cmFsIGFzcGVjdHMgb2YgV2ViIFNlcnZpY2VzIHRoYXQgY29tbXVuaWNhdGUgdXNpbmcgdGhlIEpTT04gZGF0YSBmb3JtYXQuIFRvIGdlbmVyYXRlIHJhbmRvbSBKU09OIGRhdGEgZm9yIHBvcHVsYXRpbmcgdGVzdHMgd2UgaGF2ZSBkZXZlbG9wZWQgYSBuZXcgbGlicmFyeSwganNvbmdlbiwgd2hpY2ggZ2l2ZW4gYSBjaGFyYWN0ZXJpc2F0aW9uIG9mIHRoZSBKU09OIGRhdGEgYXMgYSBKU09OIHNjaGVtYSwgKGkpIGF1dG9tYXRpY2FsbHkgZGVyaXZlcyBhIFF1aWNrQ2hlY2sgZ2VuZXJhdG9yIHdoaWNoIGNhbiBnZW5lcmF0ZSBhbiBpbmZpbml0ZSBudW1iZXIgb2YgSlNPTiB2YWx1ZXMgdGhhdCB2YWxpZGF0ZSBhZ2FpbnN0IHRoZSBzY2hlbWEsIGFuZCAoaWkpIHByb3ZpZGVzIGEgZ2VuZXJpYyBRdWlja0NoZWNrIHN0YXRlIG1hY2hpbmUgd2hpY2ggaXMgY2FwYWJsZSBvZiBmb2xsb3dpbmcgdGhlIChoeXBlcilsaW5rcyBkb2N1bWVudGVkIGluIHRoZSBKU09OIHNjaGVtYSwgdG8gYXV0b21hdGljYWxseSBleHBsb3JlIHRoZSB3ZWIgc2VydmljZS4KLSAoMjAxMikgW1VzZXIgcHJvZmlsZSBpbnRlZ3JhdGlvbiBtYWRlIGVhc3k6IG1vZGVsLWRyaXZlbiBleHRyYWN0aW9uIGFuZCB0cmFuc2Zvcm1hdGlvbiBvZiBzb2NpYWwgbmV0d29yayBzY2hlbWFzXShodHRwczovL2RsLmFjbS5vcmcvZG9pL2Ficy8xMC4xMTQ1LzIxODc5ODAuMjE4ODIyNz91dG1fc291cmNlPWF3ZXNvbWUtanNvbnNjaGVtYSkgLSBUaGlzIHBhcGVyIHByZXNlbnRzLCBmaXJzdGx5LCBhIHNlbWktYXV0b21hdGljIGFwcHJvYWNoIHRvIGV4dHJhY3Qgc2NoZW1hIGluZm9ybWF0aW9uIGZyb20gaW5zdGFuY2UgZGF0YS4gU2Vjb25kbHksIHRyYW5zZm9ybWF0aW9ucyBvZiB0aGUgZGVyaXZlZCBzY2hlbWFzIHRvIGRpZmZlcmVudCB0ZWNobmljYWwgc3BhY2VzIGFyZSB1dGlsaXplZCwgdGhlcmVieSBhbGxvd2luZywgYW1vbmdzdCBvdGhlciBiZW5lZml0cywgdGhlIGFwcGxpY2F0aW9uIG9mIGVzdGFibGlzaGVkIGludGVncmF0aW9uIHRvb2xzIGFuZCBtZXRob2RzLiBGaW5hbGx5LCBhcyBhIGNhc2Ugc3R1ZHksIHNjaGVtYXMgYXJlIGRlcml2ZWQgZm9yIEZhY2Vib29rLCBHb29nbGUrLCBhbmQgTGlua2VkSW4uCgojIyBMaWJyYXJpZXMKClRoZSBKU09OIFNjaGVtYSB3ZWJzaXRlIGluY2x1ZGVzIGFuIGV4dGVuc2l2ZSBsaXN0IG9mIGltcGxlbWVudGF0aW9ucyBhbmQKcmVsYXRlZCBsaWJyYXJpZXM6IGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2ltcGxlbWVudGF0aW9ucy5odG1sLiBDaGVjayBvdXQgdGhlCltCb3d0aWVdKGh0dHBzOi8vYm93dGllLnJlcG9ydCkgcHJvamVjdCB0aGF0IG1lYXN1cmVzIGNvbXBsaWFuY2Ugb2YgSlNPTiBTY2hlbWEKaW1wbGVtZW50YXRpb25zIHRvIGhlbHAgdXNlcnMgc2VsZWN0IHByb3Blcmx5IGNvbXBsaWFudCBhbmQgbWFpbnRhaW5lZApsaWJyYXJpZXMuCgotLS0KCj4gU3BlY2lhbCB0aGFua3MgdG8gW0BraW5sYW5lXShodHRwczovL2dpdGh1Yi5jb20va2lubGFuZSkgZm9yIGN1cmF0aW5nIHRoZQppbml0aWFsIHZlcnNpb24gb2YgdGhpcyBsaXN0Lgo= readmeEtag: '"6ca767f9af081e4ad86ee194e851d2cd53f3ae66"' readmeLastModified: Fri, 16 Jan 2026 14:58:25 GMT repositoryId: 404698785 description: >- A curated list of awesome JSON Schema resources, tutorials, tools, and more created: '2021-09-09T11:39:06Z' updated: '2026-02-05T19:41:53Z' language: Handlebars archived: false stars: 160 watchers: 10 forks: 4 owner: sourcemeta logo: https://avatars.githubusercontent.com/u/74150453?v=4 license: CC0-1.0 repoEtag: '"216b1d45dae95ee85faf2bd876d9cb465aeee099e61cbcb0a6c6de1ac056d44e"' repoLastModified: Thu, 05 Feb 2026 19:41:53 GMT foundInMaster: true category: Converters id: 40df0f4f4e0e95da0b9f4aeb27567a36 oldLocations: - https://github.com/jviotti/awesome-jsonschema - source: openapi3 tags repository: https://github.com/cebe/yii2-openapi v3: true repositoryMetadata: base64Readme: >- IyB5aWkyLW9wZW5hcGkKCj4KPiAqKlRoaXMgcmVwb3NpdG9yeSBoYXMgYmVlbiBtb3ZlZCB0byA8aHR0cHM6Ly9naXRodWIuY29tL3BocC1vcGVuYXBpL3lpaTItb3BlbmFwaT4uKiogIAo+ICoqUGxlYXNlIHVzZSB0aGUgbmV3IHBhY2thZ2UgYHBocC1vcGVuYXBpL3lpaTItb3BlbmFwaWAgaW5zdGVhZC4qKgo+CgpSRVNUIEFQSSBhcHBsaWNhdGlvbiBnZW5lcmF0b3IgZm9yIFlpaTIsIG9wZW5hcGkgMy4wIFlBTUwgLT4gWWlpMi4KCkJhc2Ugb24gW0dpaSwgdGhlIFlpaSBGcmFtZXdvcmsgQ29kZSBHZW5lcmF0b3JdKGh0dHBzOi8vd3d3LnlpaWZyYW1ld29yay5jb20vZXh0ZW5zaW9uL3lpaXNvZnQveWlpMi1naWkpLgoKWyFbTGF0ZXN0IFN0YWJsZSBWZXJzaW9uXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL2NlYmUveWlpMi1vcGVuYXBpL3Yvc3RhYmxlKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2NlYmUveWlpMi1vcGVuYXBpKQpbIVtMYXRlc3QgQWxwaGEgVmVyc2lvbl0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9jZWJlL3lpaTItb3BlbmFwaS92L3Vuc3RhYmxlKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2NlYmUveWlpMi1vcGVuYXBpKQpbIVtUb3RhbCBEb3dubG9hZHNdKGh0dHBzOi8vcG9zZXIucHVneC5vcmcvY2ViZS95aWkyLW9wZW5hcGkvZG93bmxvYWRzKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2NlYmUveWlpMi1vcGVuYXBpKQpbIVtMaWNlbnNlXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL2NlYmUveWlpMi1vcGVuYXBpL2xpY2Vuc2UpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvY2ViZS95aWkyLW9wZW5hcGkpCiFbeWlpMi1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vY2ViZS95aWkyLW9wZW5hcGkvd29ya2Zsb3dzL3lpaTItb3BlbmFwaS9iYWRnZS5zdmc/YnJhbmNoPXdpcCkKCiMjIFRMRFI7IHdoYXQgaXMgdGhpcz8KCkEgY29kZSBnZW5lcmF0b3IgZm9yIE9wZW5BUEkgYW5kIFlpaSBGcmFtZXdvcmsgYmFzZWQgUEhQIEFQSSBhcHBsaWNhdGlvbi4KCklucHV0OiBbT3BlbkFQSSAzLjAgWUFNTCBvciBKU09OXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbiN0aGUtb3BlbmFwaS1zcGVjaWZpY2F0aW9uKSAodmlhIFtjZWJlL3BocC1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vY2ViZS9waHAtb3BlbmFwaSkpCgpPdXRwdXQ6IFlpaSBGcmFtZXdvcmsgQXBwbGljYXRpb24gd2l0aCBDb250cm9sbGVycywgTW9kZWxzLCBkYXRhYmFzZSBzY2hlbWEKCgojIyBGZWF0dXJlcwoKQ3VycmVudGx5IGF2YWlsYWJsZSBmZWF0dXJlczoKCi0gR2VuZXJhdGUgUGF0aCBtYXBwaW5ncywgKipDb250cm9sbGVycyoqIGFuZCBBY3Rpb25zICoqZm9yIEFQSSBFbmRwb2ludHMqKi4gQ1JVRCBFbmRwb2ludHMgYXJlIHJlYWR5LXRvLXVzZSwgb3RoZXIgRW5kcG9pbnRzIGFyZSBnZW5lcmF0ZWQgYXMgYWJzdHJhY3QgZnVuY3Rpb25zIHRoYXQgbmVlZCB0byBiZSBpbXBsZW1lbnRlZAotIEdlbmVyYXRlICoqTW9kZWxzKiogYW5kIHZhbGlkYXRpb24gYmFzZWQgb24gT3BlbkFQSSBTY2hlbWEKLSBHZW5lcmF0ZSAqKkRhdGFiYXNlIFNjaGVtYSoqIGZyb20gT3BlbkFQSSBTY2hlbWEKLSBHZW5lcmF0ZXMgKipEYXRhYmFzZSBNaWdyYXRpb25zKiogZm9yIHNjaGVtYSBjaGFuZ2VzCi0gUHJvdmlkZSAqKkR1bW15IERhdGEqKiB2aWEgRmFrZXIgZm9yIGRldmVsb3BtZW50CgojIyBSZXF1aXJlbWVudHMKCi0gUEhQIDcuMSBvciBoaWdoZXIgKHdvcmtzIGZpbmUgd2l0aCBQSFAgOCkKCgojIyBJbnN0YWxsCgogICAgY29tcG9zZXIgcmVxdWlyZSBwaHAtb3BlbmFwaS95aWkyLW9wZW5hcGk6XjIuMEBiZXRhCgojIyBVc2FnZQoKWW91IGNhbiB1c2UgdGhpcyBwYWNrYWdlIGluIHlvdXIgZXhpc3RpbmcgYXBwbGljYXRpb24gb3Igc3RhcnQgYSBuZXcgcHJvamVjdCB1c2luZyB0aGUKW3lpaTItYXBwLWFwaV0oaHR0cHM6Ly9naXRodWIuY29tL2NlYmUveWlpMi1hcHAtYXBpKSBhcHBsaWNhdGlvbiB0ZW1wbGF0ZS4KRm9yIHVzYWdlIG9mIHRoZSB0ZW1wbGF0ZSwgc2VlIGluc3RydWN0aW9ucyBpbiB0aGUgdGVtcGxhdGUgcmVwbyByZWFkbWUuCgpJbiB5b3VyIGV4aXN0aW5nIFlpaSBhcHBsaWNhdGlvbiBjb25maWcgKHdvcmtzIGZvciBjb25zb2xlIGFzIHdlbGwgYXMgd2ViKToKCmBgYHBocAo8P3BocAokY29uZmlnID0gWwogICAgLy8gLi4uIHRoaXMgaXMgeW91ciBhcHBsaWNhdGlvbiBjb25maWcgLi4uCl07CgppZiAoWUlJX0VOVl9ERVYpIHsKICAgIC8vIGVuYWJsZSBHaWkgbW9kdWxlCiAgICAkY29uZmlnWydib290c3RyYXAnXVtdID0gJ2dpaSc7CiAgICAkY29uZmlnWydtb2R1bGVzJ11bJ2dpaSddID0gWwogICAgICAgICdjbGFzcycgPT4gXHlpaVxnaWlcTW9kdWxlOjpjbGFzcywKICAgICAgICAnZ2VuZXJhdG9ycycgPT4gWwogICAgICAgICAgICAvLyBhZGQgQXBpR2VuZXJhdG9yIHRvIEdpaSBtb2R1bGUKICAgICAgICAgICAgJ2FwaScgPT4gXGNlYmVceWlpMm9wZW5hcGlcZ2VuZXJhdG9yXEFwaUdlbmVyYXRvcjo6Y2xhc3MsCgogICAgICAgICAgICAvLyAtLS0tLS0tLS0gT1IgLS0tLS0tLS0tCiAgICAgICAgICAgIC8vIHRvIGRpc2FibGUgZ2VuZXJhdGlvbiBvZiBtaWdyYXRpb25zIGZpbGVzIG9yIHdpdGggZGVmYXVsdCBjb25maWcgY2hhbmdlCiAgICAgICAgICAgICdhcGknID0+IFsKICAgICAgICAgICAgICAnY2xhc3MnID0+IFxjZWJlXHlpaTJvcGVuYXBpXGdlbmVyYXRvclxBcGlHZW5lcmF0b3I6OmNsYXNzLAogICAgICAgICAgICAgICdnZW5lcmF0ZU1pZ3JhdGlvbnMnID0+IGZhbHNlLCAjIHRoaXMgY29uZmlnIGNhbiBhbHNvIGJlIGFwcGxpZWQgaW4gQ0xJIGNvbW1hbmQKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgXTsKfQoKcmV0dXJuICRjb25maWc7CmBgYAoKVG8gdXNlIHRoZSB3ZWIgZ2VuZXJhdG9yLCBvcGVuIGBpbmRleC5waHA/cj1naWlgIGFuZCBzZWxlY3QgdGhlIGBSRVNUIEFQSSBHZW5lcmF0b3JgLgoKT24gY29uc29sZSB5b3UgY2FuIHJ1biB0aGUgZ2VuZXJhdG9yIHdpdGggYC4veWlpIGdpaS9hcGkgLS1vcGVuQXBpUGF0aD1AYXBwL29wZW5hcGkueWFtbGAuIFdoZXJlIGBAYXBwL29wZW5hcGkueWFtbGAgc2hvdWxkIGJlIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHlvdXIgT3BlbkFQSSBzcGVjIGZpbGUuIFRoaXMgY2FuIGJlIEpTT04gYXMgd2VsbCBhcyBZQU1MIChzZWUgYWxzbyBbY2ViZS9waHAtb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL2NlYmUvcGhwLW9wZW5hcGkvKSBmb3Igc3VwcG9ydGVkIGZvcm1hdHMpLgoKUnVuIGAuL3lpaSBnaWkvYXBpIC0taGVscGAgZm9yIGFsbCBvcHRpb25zLiBFeGFtcGxlOiBEaXNhYmxlIGdlbmVyYXRpb24gb2YgbWlncmF0aW9ucyBmaWxlcyBgLi95aWkgZ2lpL2FwaSAtLWdlbmVyYXRlTWlncmF0aW9ucz0wYAoKU2VlIFtQZXRzdG9yZSBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21haW4vZXhhbXBsZXMvdjMuMC9wZXRzdG9yZS55YW1sKSBmb3IgZXhhbXBsZSBPcGVuQVBJIHNwZWMuCgoKIyMgT3BlbkFQSSBleHRlbnNpb25zCgpUaGlzIGxpYnJhcnkgdW5kZXJzdGFuZHMgdGhlIGZvbGxvd2luZyBleHRlbnNpb25zIHRvIHRoZSBPcGVuQVBJIHNwZWM6CgojIyMgYHgtZmFrZXJgCgpZb3UgbWF5IHNwZWNpZnkgY3VzdG9tIFBIUCBjb2RlIGZvciBnZW5lcmF0aW5nIGZha2UgZGF0YSBmb3IgYSBwcm9wZXJ0eToKCmBgYHlhbWwKICAgIFBvc3Q6CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgdGFnczoKICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICBpdGVtczoKICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiBbJ29uZScsICd0d28nXQogICAgICAgICAgeC1mYWtlcjogIiRmYWtlci0+cmFuZG9tRWxlbWVudHMoWydvbmUnLCAndHdvJywgJ3RocmVlJywgJ2ZvdXInXSkiCmBgYAoKVG8gYXZvaWQgZ2VuZXJhdGluZyBmYWtlciBjb2RlIGZvciBwYXJ0aWN1bGFyIG1vZGVsIGF0dHJpYnV0ZSwgdXNlIHZhbHVlIGBmYWxzZWA6CgpgYGB5YW1sCiAgICBQb3N0OgogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGFnZToKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIHgtZmFrZXI6IGZhbHNlCmBgYAoKVXNpbmcgaW4gcmVmZXJlbmNlIHdpdGggYGFsbE9mYDoKCmBgYHlhbWwKICAgIEludm9pY2U6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIGlkCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBpbnRlZ2VyCgogICAgT3JkZXI6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDoKICAgICAgICAtIGlkCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgaWQ6CiAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgaW52b2ljZToKICAgICAgICAgIGFsbE9mOgogICAgICAgICAgICAtICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9JbnZvaWNlJwogICAgICAgICAgICAtIHgtZmFrZXI6IGZhbHNlCmBgYAoKIyMjIGB4LXRhYmxlYAoKU3BlY2lmeSB0aGUgdGFibGUgbmFtZSBmb3IgYSBTY2hlbWEgdGhhdCBkZWZpbmVzIGEgbW9kZWwgd2hpY2ggaXMgc3RvcmVkIGluIHRoZSBkYXRhYmFzZS4KWW91IGNhbiBnZW5lcmF0ZSBub24tZGIgbW9kZWwgYmFzZWQgb24gXHlpaVxiYXNlXE1vZGVsIHdpdGhvdXQgbWlncmF0aW9ucyBieSBzZXR0aW5nIGB4LXRhYmxlOiBmYWxzZWAKCiMjIyBgeC1wa2AKCkV4cGxpY2l0bHkgc3BlY2lmeSBwcmltYXJ5IGtleSBuYW1lIGZvciB0YWJsZSwgaWYgaXQgaXMgZGlmZmVyZW50IGZyb20gImlkIiAKCmBgYHlhbWwKICAgIFBvc3Q6CiAgICAgIHgtdGFibGU6IHBvc3RzCiAgICAgIHgtcGs6IHVpZAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIHVpZDoKICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgdGl0bGU6CiAgICAgICAgICAgdHlwZTogc3RyaW5nCmBgYAoKIyMjIGB4LWRiLXR5cGVgCgpFeHBsaWNpdGx5IHNwZWNpZnkgdGhlIGRhdGFiYXNlIHR5cGUgZm9yIGEgY29sdW1uLiAoTVVTVCBjb250YWluIG9ubHkgcmVhbCBEQiB0eXBlISAoYGpzb25gLCBganNvbmJgLCBgdXVpZGAsIGB2YXJjaGFyYCBldGMuKSkuCklmIGB4LWRiLXR5cGVgIGlzIHNldCB0byBgZmFsc2VgLCBwcm9wZXJ0eSB3aWxsIGJlIHByb2Nlc3NlZCBhcyB2aXJ0dWFsOwpJdCB3aWxsIGJlIGFkZGVkIGluIG1vZGVsIGFzIHB1YmxpYyBwcm9wZXJ0eSwgYnV0IHNraXBwZWQgZm9yIG1pZ3JhdGlvbnMgZ2VuZXJhdGlvbi4KCkV4YW1wbGUgdmFsdWVzIG9mIGB4LWRiLXR5cGVgIGFyZToKCiAtIGBmYWxzZWAgKGJvb2xlYW4gZmFsc2UpCiAtIGFzIHN0cmluZyBhbmQgaXRzIHZhbHVlIGNhbiBiZSBsaWtlOgogICAgIC0gdGV4dAogICAgIC0gdGV4dFtdCiAgICAgLSBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9fSU5DUkVNRU5UCiAgICAgLSBkZWNpbWFsKDEyLDQpCiAgICAgLSBqc29uCiAgICAgLSB2YXJjaGFyCiAgICAgLSBWQVJDSEFSCiAgICAgLSBTTUFMTElOVCBVTlNJR05FRCBaRVJPRklMTAogICAgIC0gTUVESVVNSU5UKDEwKSBVTlNJR05FRCBaRVJPRklMTCBDT01NRU5UICJjb21tZW50IiAobm90ZSB0aGUgZG91YmxlIHF1b3RlcyBoZXJlKQoKU3VjaCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkOgogICAtIGBpbnQgbnVsbCBkZWZhdWx0IG51bGwgYWZ0ZXIgbG93X3ByaWNlYCAobnVsbCBhbmQgZGVmYXVsdCB3aWxsIGJlIGhhbmRsZWQgYnkgYG51bGxhYmxlYCBhbmQgYGRlZmF1bHRgIGtleXMgcmVzcGVjdGl2ZWx5KQogICAtIE1FRElVTUlOVCgxMCkgVU5TSUdORUQgWkVST0ZJTEwgTlVMTCBERUZBVUxUICc3JyBDT01NRU5UICdjb21tZW50JyBBRlRFUiBgc2V0aWAsIEFERCBJTkRFWCBgdGAgKGB3YCkKCklmIGBlbnVtYCBhbmQgYHgtZGItdHlwZWAgYm90aCBhcmUgcHJvdmlkZWQgdGhlbiBmb3IgZGF0YWJhc2UgY29sdW1uIHNjaGVtYSAobWlncmF0aW9ucyksIG9ubHkgYHgtZGItdHlwZWAgd2lsbCBiZSBjb25zaWRlcmVkIGlnbm9yaW5nIGBlbnVtYC4KCiMjIyBgeC1pbmRleGVzYAoKU3BlY2lmeSB0YWJsZSBpbmRleGVzCgpgYGB5YW1sCiAgICBQb3N0OgogICAgICB4LXRhYmxlOiBwb3N0cwogICAgICB4LWluZGV4ZXM6CiAgICAgICAgICAtICd2aXNpYmxlLHB1Ymxpc2hfZGF0ZScKICAgICAgICAgIC0gJ3VuaXF1ZTp0aXRsZScgI2ZvciB1bmlxdWUgYXR0cmlidXRlcyBhbHNvIHVuaXF1ZSB2YWxpZGF0aW9uIGNoZWNrIHdpbGwgYmUgYWRkZWQKICAgICAgICAgIC0gJ2dpc3Q6bWV0YWRhdGEnICNmb3IgcG9zdGdyZXMgd2lsbCBnZW5lcmF0ZSBpbmRleCB1c2luZyBHSVNUIGluZGV4IHR5cGUKICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICAgeC1kYi10eXBlOiBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9fSU5DUkVNRU5UCiAgICAgICAgdGl0bGU6CiAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgdmlzaWJsZToKICAgICAgICAgICAgdHlwZTogYm9vbGVhbgogICAgICAgIHB1Ymxpc2hfZGF0ZToKICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgIGZvcm1hdDogZGF0ZQogICAgICAgIG1ldGFkYXRhOgogICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgIHgtZGItdHlwZTogSlNPTgogICAgICAgICAgIGRlZmF1bHQ6ICd7fScgCmBgYAoKIyMjIGB4LWRiLWRlZmF1bHQtZXhwcmVzc2lvbmAKCkFiaWxpdHkgdG8gcHJvdmlkZSBkZWZhdWx0IHZhbHVlIGJ5IGRhdGFiYXNlIGV4cHJlc3Npb24KCmBgYHlhbWwKY3JlYXRlZF9hdDoKICByZWFkT25seTogdHJ1ZQogIHR5cGU6IHN0cmluZwogIGZvcm1hdDogZGF0ZXRpbWUKICB4LWRiLXR5cGU6IGRhdGV0aW1lCiAgbnVsbGFibGU6IGZhbHNlCiAgeC1kYi1kZWZhdWx0LWV4cHJlc3Npb246IGN1cnJlbnRfdGltZXN0YW1wKCkKYGBgCgpOb3RlOiBJZiBib3RoIGBkZWZhdWx0YCBhbmQgYHgtZGItZGVmYXVsdC1leHByZXNzaW9uYCBhcmUgcHJlc2VudCB0aGVuIGBkZWZhdWx0YCB3aWxsIGJlIGNvbnNpZGVyZWQuCgpgYGB5YW1sCmNyZWF0ZWRfYXQ6CiAgcmVhZE9ubHk6IHRydWUKICB0eXBlOiBzdHJpbmcKICBmb3JtYXQ6IGRhdGV0aW1lCiAgeC1kYi10eXBlOiBkYXRldGltZQogIG51bGxhYmxlOiBmYWxzZQogIHgtZGItZGVmYXVsdC1leHByZXNzaW9uOiBjdXJyZW50X3RpbWVzdGFtcCgpICMgdGhpcyB3aWxsIGJlIGlnbm9yZWQKICBkZWZhdWx0OiAiMjAxMS0xMS0xMSIgIyB0aGlzIHdpbGwgYmUgY29uc2lkZXJlZApgYGAKCkFsc28gc2VlOiBodHRwczovL2Rldi5teXNxbC5jb20vZG9jL3JlZm1hbi84LjAvZW4vZGF0YS10eXBlLWRlZmF1bHRzLmh0bWwKCiMjIyBgeC1may1vbi1kZWxldGVgCgpBbGxvdyB0byBzZXQgZm9yZWlnbiBrZXkgY29uc3RyYWludCBpbiBtaWdyYXRpb25zIGZvciBPTiBERUxFVEUgZXZlbnQgb2Ygcm93IGluIGRhdGFiYXNlIHRhYmxlLiBFeGFtcGxlOgoKYGBgeWFtbAogIGNvbXBvbmVudHM6CiAgICBzY2hlbWFzOgogICAgICBVc2VyOgogICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgIGRlc2NyaXB0aW9uOiB4IG9uLXggKHVwZGF0ZXxkZWxldGUpIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQKICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgaWQ6CiAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIG5hbWU6CiAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICBQb3N0OgogICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgIGRlc2NyaXB0aW9uOiB4IG9uLXggKHVwZGF0ZXxkZWxldGUpIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQKICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgaWQ6CiAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIHRpdGxlOgogICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIHVzZXI6CiAgICAgICAgICAgIGFsbE9mOgogICAgICAgICAgICAgIC0gJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1VzZXInCiAgICAgICAgICAgICAgLSB4LWZrLW9uLXVwZGF0ZTogQ0FTQ0FERQogICAgICAgICAgdXNlcl8yOgogICAgICAgICAgICBhbGxPZjoKICAgICAgICAgICAgICAtICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Vc2VyJwogICAgICAgICAgICAgIC0geC1may1vbi11cGRhdGU6IENBU0NBREUKICAgICAgICAgICAgICAtIHgtZmstb24tZGVsZXRlOiBTRVQgTlVMTAogICAgICAgICAgdXNlcl8zOgogICAgICAgICAgICBhbGxPZjoKICAgICAgICAgICAgICAtICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Vc2VyJwogICAgICAgICAgICAgIC0geC1may1vbi1kZWxldGU6IFNFVCBOVUxMCiAgICAgICAgICB1c2VyXzQ6CiAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Vc2VyJyAjIHdpdGhvdXQgYW55IGNvbnN0cmFpbnRzCmBgYAoKIyMjIGB4LWZrLW9uLXVwZGF0ZWAKCkFsbG93IHRvIHNldCBmb3JlaWduIGtleSBjb25zdHJhaW50IGluIG1pZ3JhdGlvbnMgZm9yIE9OIFVQREFURSBldmVudCBvZiByb3cgaW4gZGF0YWJhc2UgdGFibGUuIEZvciBleGFtcGxlLCBzZWUgYWJvdmUgc2VjdGlvbiBmb3IgYHgtZmstb24tZGVsZXRlYC4KCiMjIyBgeC1may1jb2x1bW4tbmFtZWAKClByb3ZpZGUgY3VzdG9tIGRhdGFiYXNlIHRhYmxlIGNvbHVtbiBuYW1lIGluIGNhc2Ugb2YgcmVsYXRpb25zaGlwIGNvbHVtbi4gVGhpcyB3aWxsIG5vdCByZWZsZWN0IGluIG1vZGVscyByZWxhdGlvbnMsIGZha2VyIGV0Yy4gRXhhbXBsZToKCmBgYHlhbWwKICBjb21wb25lbnRzOgogICAgc2NoZW1hczoKICAgICAgV2ViaG9vazoKICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICBkZXNjcmlwdGlvbjogZXhhbXBsZSBmb3IgeC1may1jb2x1bW4tbmFtZQogICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICBpZDoKICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgbmFtZToKICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICB1c2VyOgogICAgICAgICAgICAkcmVmOiAnLi4vb3BlbmFwaS55YW1sIy9jb21wb25lbnRzL3NjaGVtYXMvVXNlcicgIyB0aGlzIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgYHVzZXJfaWRgIGNvbHVtbgogICAgICAgICAgcmVkZWxpdmVyeV9vZjoKICAgICAgICAgICAgYWxsT2Y6CiAgICAgICAgICAgICAgLSAkcmVmOiAnLi4vb3BlbmFwaS55YW1sIy9jb21wb25lbnRzL3NjaGVtYXMvRGVsaXZlcnknCiAgICAgICAgICAgICAgIyB0aGlzIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgYHJlZGVsaXZlcnlfb2ZfaWRgIGNvbHVtbiwgYnV0IHRvIGF2b2lkIHRoYXQgdXNlIGJlbG93IGV4dGVuc2lvbgogICAgICAgICAgICAgIC0geC1may1jb2x1bW4tbmFtZTogcmVkZWxpdmVyeV9vZiAjIHRoaXMgd2lsbCBjcmVhdGUgYHJlZGVsaXZlcnlfb2ZgIGNvbHVtbiBpbnN0ZWFkIG9mIGByZWRlbGl2ZXJ5X29mX2lkYApgYGAKCiMjIE1hbnktdG8tTWFueSByZWxhdGlvbiBkZWZpbml0aW9uCgpUaGVyZSBhcmUgdHdvIHdheXMgZm9yIGRlZmluZSBtYW55LXRvLW1hbnkgcmVsYXRpb25zOgoKIyMjIFNpbXBsZSBtYW55LXRvLW1hbnkgd2l0aG91dCBqdW5jdGlvbiBtb2RlbAoKICAgLSBwcm9wZXJ0eSBuYW1lIGZvciBtYW55LXRvLW1hbnkgcmVsYXRpb24gc2hvdWxkIGJlIGVxdWFsIGxvd2VyLWNhc2VkLCBwbHVyYWxpemVkIHJlbGF0ZWQgc2NoZW1hIG5hbWUKICAgICAKICAgLSByZWZlcmVuY2VkIHNjaGVtYSBzaG91bGQgY29udGFpbnMgbWlycm9yZWQgcmVmZXJlbmNlIHRvIGN1cnJlbnQgc2NoZW1hCiAgICAgCiAgIC0gbWlncmF0aW9uIGZvciBqdW5jdGlvbiB0YWJsZSBjYW4gYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgLSB0YWJsZSBuYW1lIHNob3VsZCBiZSBbcGx1cmFsaXplZCwgbG93ZXItY2FzZWQKIHNjaGVtYV9uYW1lMV0yW3BsdXJhbGl6ZWQsIGxvd2VyLWNhc2VkIHNjaGVtYSBuYW1lMl0sIGluIGFscGhhYmV0aWNhbCBvcmRlcjsKIEZvciBleGFtcGxlLCBmb3Igc2NoZW1hcyBQb3N0IGFuZCBUYWcgLSB0YWJsZSBzaG91bGQgYmUgcG9zdHMydGFncywgZm9yIHNjaGVtYXMgUG9zdCBhbmQgQXR0YWNoZW1lbnQgLSB0YWJsZSBzaG91bGQKICBiZSBhdHRhY2htZW50czJwb3N0cwogIApgYGAKUG9zdDoKICBwcm9wZXJ0aWVzOgogIC4uLgogICAgdGFnczoKICAgICAgdHlwZTogYXJyYXkKICAgICAgaXRlbXM6CiAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1RhZycKClRhZzoKICBwcm9wZXJ0aWVzOgogIC4uLgogICAgcG9zdHM6CiAgICAgIHR5cGU6IGFycmF5CiAgICAgIGl0ZW1zOgogICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Qb3N0JwpgYGAKICAKIyMjIE1hbnktdG8tbWFueSB3aXRoIGp1bmN0aW9uIG1vZGVsCgpUaGlzIHdheSBhbGxvd2VkIGNyZWF0aW5nIG11bHRpcGxlIG1hbnktdG8tbWFueSByZWxhdGlvbnMgYmV0d2VlbiB0byBtb2RlbHMgCgotIGRlZmluZSBqdW5jdGlvbiBzY2hlbWEgd2l0aCBhbGwgbmVjZXNzYXJ5IGF0dHJpYnV0ZXMuIFRoZXJlIGFyZSBvbmx5IG9uZSBpbXBvcnRhbnQgcmVxdWlyZW1lbnQgLSB0aGUganVuY3Rpb24KIHNjaGVtYSBuYW1lCiBtdXN0IGJlIHN0YXJ0ZWQgd2l0aCBwcmVmaXggJ2p1bmN0aW9uXycgKFRoaXMgcHJlZml4IHdpbGwgYmUgdXNlZCBpbnRlcm5hbGx5IG9ubHkgYW5kCiB3aWxsIGJlIHRyaW1tZWQgYmVmb3JlIHRhYmxlIGFuZCBtb2RlbCBnZW5lcmF0aW9uKQogCmBgYAojIE1vZGVsIFRlYW1NZW1iZXJzIHdpdGggdGFibGUgdGVhbV9tZW1iZXJzIHdpbGwgYmUgZ2VuZXJhdGVkIHdpdGggY29sdW1ucyB0ZWFtX2lkLCB1c2VyX2lkIGFuZCByb2xlCmp1bmN0aW9uX1RlYW1NZW1iZXJzOgogICB0ZWFtOgogICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvVGVhbScKICAgdXNlcjoKICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1VzZXInCiAgIHJvbGU6CiAgICAgdHlwZTogc3RyaW5nCmBgYAotIEJvdGggbWFueS10by1tYW55IHJlbGF0ZWQgc2NoZW1hcyBtdXN0IGhhdmUgcHJvcGVydGllcyB3aXRoIHJlZmVyZW5jZSB0byAianVuY3Rpb25fKiIgc2NoZW1hLiBUaGVzZSBwcm9wZXJ0aWVzIHdpbGwgYmUKIHVzZWQgYXMgcmVsYXRpb24gbmFtZXMgCgpgYGAKVGVhbToKICBwcm9wZXJ0aWVzOgogIC4uLgogICAgIHRlYW1fbWVtYmVyczoKICAgICAgIHR5cGU6IGFycmF5CiAgICAgICBpdGVtczoKICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL2p1bmN0aW9uX1RlYW1NZW1iZXJzJwoKVXNlcjoKICBwcm9wZXJ0aWVzOgogIC4uLgogICAgbWVtYmVyc2hpcHM6ICNZb3UgYWJzb2x1dGVseSBmcmVlIHdpdGggbmFtaW5nIGZvciByZWxhdGlvbnNoaXAgYXR0cmlidXRlcwogICAgICB0eXBlOiBhcnJheQogICAgICBpdGVtczoKICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvanVuY3Rpb25fVGVhbU1lbWJlcnMnCmBgYAogIAogLSBzZWUgYm90aCBleGFtcGxlcyBoZXJlIFt0ZXN0cy9zcGVjcy9tYW55Mm1hbnkueWFtbF0odGVzdHMvc3BlY3MvbWFueTJtYW55LnlhbWwpCiAKCiMjIEhhbmRsaW5nIG9mIGBOT1QgTlVMTGAgY29uc3RyYWludHMKCmBOT1QgTlVMTGAgaW4gREIgbWlncmF0aW9ucyBpcyBkZXRlcm1pbmVkIGJ5IGBudWxsYWJsZWAgYW5kIGByZXF1aXJlZGAgcHJvcGVydGllcyBvZiB0aGUgT3BlbkFQSSBzY2hlbWEuCmUuZy4gYXR0cmlidXRlID0gJ215X3Byb3BlcnR5Jy4KCi0gSWYgeW91IGRlZmluZSBhdHRyaWJ1dGUgbmVpdGhlciAicmVxdWlyZWQiIG5vciB2aWEgIm51bGxhYmxlIiwgdGhlbiBpdCBpcyBieSBkZWZhdWx0IGBOVUxMYDoKCmBgYHlhbWwKICBFeGFtcGxlU2NoZW1hOgogICAgcHJvcGVydGllczoKICAgICAgbXlfcHJvcGVydHk6CiAgICAgICAgdHlwZTogc3RyaW5nCmBgYAoKLSBJZiB5b3UgZGVmaW5lIGF0dHJpYnV0ZSBpbiAicmVxdWlyZWQiLCB0aGVuIGl0IGlzIGBOT1QgTlVMTGAKCmBgYHlhbWwKICBFeGFtcGxlU2NoZW1hOgogICAgcmVxdWlyZWQ6CiAgICAgLSBteV9wcm9wZXJ0eQogICAgcHJvcGVydGllczoKICAgICAgbXlfcHJvcGVydHk6CiAgICAgICAgdHlwZTogc3RyaW5nCmBgYAoKLSBJZiB5b3UgZGVmaW5lIGF0dHJpYnV0ZSB2aWEgIm51bGxhYmxlIiwgdGhlbiBpdCBvdmVycmlkZXMgInJlcXVpcmVkIiwgZS5nLiBhbGxvdyBgTlVMTGAgaW4gdGhpcyBjYXNlOgoKYGBgeWFtbAogIEV4YW1wbGVTY2hlbWE6CiAgICByZXF1aXJlZDoKICAgICAgLSBteV9wcm9wZXJ0eQogICAgcHJvcGVydGllczoKICAgICAgbXlfcHJvcGVydHk6CiAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgbnVsbGFibGU6IHRydWUKYGBgCgotIElmIHlvdSBkZWZpbmUgYXR0cmlidXRlIHZpYSAibnVsbGFibGUiLCB0aGVuIGl0IG92ZXJyaWRlcyAicmVxdWlyZWQiLCBlLmcuIGBOT1QgTlVMTGAgaW4gdGhpcyBjYXNlOgoKYGBgeWFtbAogIHRlc3RfdGFibGU6CiAgICByZXF1aXJlZDoKICAgIHByb3BlcnRpZXM6CiAgICAgIG15X3Byb3BlcnR5OgogICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIG51bGxhYmxlOiBmYWxzZQpgYGAKCiMjIEhhbmRsaW5nIG9mIGBlbnVtYCAoI2VudW0pCkl0IHdvcmtzIG9uIGFsbCAzIERCOiBNeVNRTCwgTWFyaWFEYiBhbmQgUGdTUUwuCgogYGBgeWFtbAogIHRlc3RfdGFibGU6CiAgICBwcm9wZXJ0aWVzOgogICAgICBteV9wcm9wZXJ0eToKICAgICAgICBlbnVtOgogICAgICAgICAgLSBvbmUKICAgICAgICAgIC0gdHdvCiAgICAgICAgICAtIHRocmVlCmBgYAoKTm90ZTogQ2hhbmdlcyBpbiBlbnVtIHZhbHVlcyBhcmUgbm90IHZlcnkgc2ltcGxlLiBGb3IgTXlzcWwgYW5kIE1hcmlhZGIsIG1pZ3JhdGlvbnMgd2lsbCBiZSBnZW5lcmF0ZWQgYnV0IGluIG1hbnkgY2FzZXMgY3VzdG9tIG1vZGlmaWNhdGlvbiBpbiBpdCBhcmUgcmVxdWlyZWQuIEZvciBQZ3NxbCBtaWdyYXRpb25zIGZvciBjaGFuZ2UgaW4gZW51bSB2YWx1ZXMgd2lsbCBub3QgYmUgZ2VuZXJhdGVkLiBJdCBzaG91bGQgYmUgaGFuZGxlZCBtYW51YWxseS4KCkl0IHdpbGwgYmUgaWdub3JlZCBmb3IgZGF0YWJhc2UgY29sdW1uIHNjaGVtYSAobWlncmF0aW9ucykgaWYgYHgtZGItdHlwZWAgaXMgcHJvdmlkZWQuCgojIyBIYW5kbGluZyBvZiBgbnVtZXJpY2AgKCNudW1lcmljLCAjTWFyaWFEYikKCnByZWNpc2lvbi1kZWZhdWx0ID0gMTAKc2NhbGUtZGVmYXVsdCA9IDIKCi0gWW91IGNhbiBkZWZpbmUgYXR0cmlidXRlIGxpa2UgIm51bWVyaWMocHJlY2lzaW9uLHNjYWxlKSI6CiBgYGB5YW1sCiAgdGVzdF90YWJsZToKICAgIHByb3BlcnRpZXM6CiAgICAgIG15X3Byb3BlcnR5OgogICAgICAgIHgtZGItdHlwZTogZGVjaW1hbCgxMiw0KQpgYGAKREItUmVzdWx0ID0gZGVjaW1hbCgxMiw0KQoKLSBZb3UgY2FuIGRlZmluZSBhdHRyaWJ1dGUgbGlrZSAibnVtZXJpYyhwcmVjaXNpb24pIiB3aXRoIGRlZmF1bHQgc2NhbGUtZGVmYXVsdCA9IDI6CiBgYGB5YW1sCiAgdGVzdF90YWJsZToKICAgIHByb3BlcnRpZXM6CiAgICAgIG15X3Byb3BlcnR5OgogICAgICAgIHgtZGItdHlwZTogZGVjaW1hbCgxMikKYGBgCkRCLVJlc3VsdCA9IGRlY2ltYWwoMTIsMikKCi0gWW91IGNhbiBkZWZpbmUgYXR0cmlidXRlIGxpa2UgIm51bWVyaWMiIHdpdGggcHJlY2lzaW9uLWRlZmF1bHQgPSAxMCBhbmQgc2NhbGUtZGVmYXVsdCA9IDI6CiBgYGB5YW1sCiAgdGVzdF90YWJsZToKICAgIHByb3BlcnRpZXM6CiAgICAgIG15X3Byb3BlcnR5OgogICAgICAgIHgtZGItdHlwZTogZGVjaW1hbApgYGAKREItUmVzdWx0ID0gZGVjaW1hbCgxMCwyKQoKIyMgSGFuZGxpbmcgb2YgYHRpbWVzdGFtcGAgZGF0YWJhc2UgY29sdW1uIGRhdGEgdHlwZQoKSWYgZmllbGQgaXMgZGVmaW5lZCBhcwoKYGBgeWFtbApjcmVhdGVkX2F0OgogICAgdHlwZTogc3RyaW5nCiAgICBmb3JtYXQ6IGRhdGUtdGltZSAjIG9yIGRhdGV0aW1lCiAgICBleGFtcGxlOiAnMjAyMC0wMy0xNFQyMTo0MjoxN1onCiAgICByZWFkT25seTogdHJ1ZQpgYGAKCnRoZW4gZGF0YWJhc2UgdHlwZSBzZWxlY3RlZCB3aWxsIGJlIGB0aW1lc3RhbXBgLiBUaGlzIGlzIGJ5IGRlc2lnbi4gSWYgYGRhdGV0aW1lYCBkYXRhIHR5cGUgaXMgbmVlZGVkLCB1c2UgYHgtZGItdHlwZWAgYXMKCmBgYHlhbWwKY3JlYXRlZF9hdDoKICAgIHR5cGU6IHN0cmluZwogICAgZm9ybWF0OiBkYXRlLXRpbWUgIyBvciBkYXRldGltZQogICAgZXhhbXBsZTogJzIwMjAtMDMtMTRUMjE6NDI6MTdaJwogICAgeC1kYi10eXBlOiBkYXRldGltZQogICAgcmVhZE9ubHk6IHRydWUKYGBgCgojIyBBc3N1bXB0aW9ucwoKV2hlbiBnZW5lcmF0aW5nIGNvZGUgZnJvbSBhbiBPcGVuQVBJIGRlc2NyaXB0aW9uIHRoZXJlIGFyZSBtYW55IHBvc3NpYmxlIHdheXMgdG8gYWNoaXZlIGEgZml0dGluZyByZXN1bHQuClRodXMgdGhlcmUgYXJlIHNvbWUgYXNzdW1wdGlvbnMgYW5kIGxpbWl0YXRpb25zIHRoYXQgYXJlIGN1cnJlbnRseSBhcHBsaWVkIHRvIG1ha2UgdGhpcyB3b3JrLgpIZXJlIGlzIGEgKHBvc3NpYmx5IGluY29tcGxldGUpIGxpc3Q6CgotIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHdvcmtzIGJlc3Qgd2l0aCBPcGVuQVBJIGRlc2NyaXB0aW9uIHRoYXQgZm9sbG93cyB0aGUgW0pTT046QVBJXShodHRwczovL2pzb25hcGkub3JnLykgZ3VpZGVsaW5lcy4KICAtIFRoZSByZXF1ZXN0IGFuZCByZXNwb25zZSBmb3JtYXQvc2NoZW1hIGlzIGN1cnJlbnRseSBub3QgZXh0cmFjdGVkIGZyb20gT3BlbkFQSSBzY2hlbWEgYW5kIG1heSBuZWVkIHRvIGJlIGFkanVzdGVkIG1hbnVhbGx5IGlmIGl0IGRvZXMgbm90IGZvbGxvdyBKU09OOkFQSQotIGNvbHVtbi9maWVsZC9wcm9wZXJ0eSB3aXRoIG5hbWUgYGlkYCBpcyBjb25zaWRlcmVkIGFzIFByaW1hcnkgS2V5IGJ5IHRoaXMgbGlicmFyeSBhbmQgaXQgaXMgYXV0b21hdGljYWxseSBoYW5kbGVkIGJ5IERCL1lpaTsgc28gcmVtb3ZlIGl0IGZyb20gdmFsaWRhdGlvbiBgcnVsZXMoKWAKICAtIG90aGVyIGZpZWxkcyBjYW4gY3VycmVudGx5IGJlIHVzZWQgYXMgcHJpbWFyeSBrZXlzIHVzaW5nIHRoZSBgeC1wa2AgT3BlbkFQSSBleHRlbnNpb24gKHNlZSBiZWxvdykgYnV0IGl0IG1heSBub3QgYmUgd29yayBjb3JyZWN0bHkgaW4gYWxsIGNhc2VzLCBwbGVhc2UgcmVwb3J0IGJ1Z3MgaWYgeW91IGZpbmQgdGhlbS4KCk90aGVyIHRoaW5ncyB0byBrZWVwIGluIG1pbmQ6CgojIyMgQWRkaW5nIGNvbHVtbnMgdG8gZXhpc3RpbmcgdGFibGVzCgpXaGVuIGFkZGluZyBuZXcgZmllbGRzIGluIHRoZSBBUEkgbW9kZWxzLCBuZXcgbWlncmF0aW9ucyB3aWxsIGJlIGdlbmVyYXRlZCB0byBhZGQgdGhlc2UgZmllbGRzIHRvIHRoZSB0YWJsZS4KRm9yIGEgcHJvamVjdCB0aGF0IGlzIGFscmVhZHkgaW4gcHJvZHVjdGlvbiwgaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgdG8gYWRqdXN0IHRoZSBnZW5lcmF0ZWQgbWlncmF0aW9uIHRvIGFkZCBkZWZhdWx0CnZhbHVlcyBmb3IgZXhpc3RpbmcgZGF0YSByZWNvcmRzLgoKT25lIGNhc2Ugd2hlcmUgdGhpcyBpcyBpbXBvcnRhbnQgaXMgdGhlIGFkZGl0aW9uIG9mIGEgbmV3IGNvbHVtbiB3aXRoIGBOT1QgTlVMTGAgY29udHJhaW50LCB3aGljaCBkb2VzIG5vdCBwcm92aWRlIGEgZGVmYXVsdCB2YWx1ZS4KU3VjaCBhIG1pZ3JhdGlvbiB3aWxsIGZhaWwgd2hlbiB0aGUgdGFibGUgaXMgbm90IGVtcHR5OgoKYGBgcGhwCiR0aGlzLT5hZGRDb2x1bW4oJ3t7JWNvbXBhbnl9fScsICduYW1lJywgJHRoaXMtPnN0cmluZygxMjgpLT5ub3ROdWxsKCkpOwpgYGAKCkZhaWxzIG9uIGEgUG9zdGdyZVNRTCBkYXRhYmFzZSB3aXRoCgo+IGFkZCBjb2x1bW4gbmFtZSBzdHJpbmcoMTI4KSBOT1QgTlVMTCB0byB0YWJsZSB7eyVjb21wYW55fX0gLi4uRXhjZXB0aW9uOiBTUUxTVEFURVsyMzUwMl06IE5vdCBudWxsIHZpb2xhdGlvbjogNyBFUlJPUjogIGNvbHVtbiAibmFtZSIgY29udGFpbnMgbnVsbCB2YWx1ZXMKClRoZSBzb2x1dGlvbiB3b3VsZCBiZSB0byBjcmVhdGUgdGhlIGNvbHVtbiwgYWxsb3dpbmcgTlVMTCwgc2V0IHRoZSB2YWx1ZSB0byBhIGRlZmF1bHQgYW5kIGFkZCB0aGUgbnVsbCBjb25zdHJhaW50IGxhdGVyLgoKYGBgcGhwCiR0aGlzLT5hZGRDb2x1bW4oJ3t7JWNvbXBhbnl9fScsICduYW1lJywgJHRoaXMtPnN0cmluZygxMjgpLT5udWxsKCkpOwokdGhpcy0+dXBkYXRlKCd7eyVjb21wYW55fX0nLCBbJ25hbWUnID0+ICdObyBuYW1lJ10pOwokdGhpcy0+YWx0ZXJDb2x1bW4oJ3t7JWNvbXBhbnl9fScsICduYW1lJywgJHRoaXMtPnN0cmluZygxMjgpLT5ub3ROdWxsKCkpOwpgYGAKCiMjIFNjcmVlbnNob3RzCgpHaWkgR2VuZXJhdG9yIEZvcm06CgohW0dpaSBHZW5lcmF0b3IgRm9ybV0oZG9jL3NjcmVlbnNob3QtZm9ybS5wbmcpCgpHZW5lcmF0ZWQgZmlsZXM6CgohW0dpaSBHZW5lcmF0ZWQgRmlsZXNdKGRvYy9zY3JlZW5zaG90LWZpbGVzLnBuZykKCgojIERldmVsb3BtZW50CgpUbyBjb250cmlidXRlIG9yIHBsYXkgYXJvdW5kLCBzdGVwcyB0byBzZXQgdXAgdGhpcyBwcm9qZWN0IHVwIGxvY2FsbHkgYXJlIGluIFtDT05UUklCVVRJTkcubWRdKC4vQ09OVFJJQlVUSU5HLm1kKS4KCgojIFN1cHBvcnQKCioqTmVlZCBoZWxwIHdpdGggeW91ciBBUEkgcHJvamVjdD8qKgoKUHJvZmVzc2lvbmFsIHN1cHBvcnQsIGNvbnN1bHRpbmcgYXMgd2VsbCBhcyBzb2Z0d2FyZSBkZXZlbG9wbWVudCBzZXJ2aWNlcyBhcmUgYXZhaWxhYmxlOgoKaHR0cHM6Ly93d3cuY2ViZS5jYy9lbi9jb250YWN0CgpEZXZlbG9wbWVudCBvZiB0aGlzIGxpYnJhcnkgaXMgc3BvbnNvcmVkIGJ5IFtjZWJlLjpjbG91ZDogIllvdXIgUHJvZmVzc2lvbmFsIERlcGxveW1lbnQgUGxhdGZvcm0iXShodHRwczovL2NlYmUuY2xvdWQpLgo= readmeEtag: '"f488dc2f1263f780818dd46f0c1631c496339331"' readmeLastModified: Tue, 04 Jun 2024 15:27:09 GMT repositoryId: 154310166 description: REST API application generator for Yii2, openapi 3.0 YAML -> Yii2 created: '2018-10-23T10:39:18Z' updated: '2025-08-05T16:56:41Z' language: PHP archived: true stars: 128 watchers: 8 forks: 23 owner: cebe logo: https://avatars.githubusercontent.com/u/189796?v=4 license: MIT repoEtag: '"796aa4d6912dd45488b4d821582c436536fbea35a876ae96fc39c71201688f6c"' repoLastModified: Tue, 05 Aug 2025 16:56:41 GMT foundInMaster: true category: Parsers id: 17efb27f7e36f9a426c34f2a74c84a78 - source: openapi3 tags repository: https://github.com/parvez3019/go-swagger3 v3: true repositoryMetadata: base64Readme: >- IyMjIERlbW8KCkNsaWNrIGhlcmUgZm9yIFtZb3V0dWJlIERlbW8gTGlua10oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1HTE05YzVqOGc3SSkKCgojIGdvLXN3YWdnZXIzCgpHZW5lcmF0ZSBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbikgdjMgZmlsZSB3aXRoIGNvbW1lbnRzIGluIEdvLgoKIyMjIFRhYmxlIG9mIGNvbnRlbnQKCi0gWzEuIEluc3RhbGxdKCMxLWluc3RhbGwpCi0gWzIuIERvY3VtZW50YXRpb24gR2VuZXJhdGlvbl0oIzItZG9jdW1lbnRhdGlvbi1nZW5lcmF0aW9uKQotIFszLiBVc2FnZV0oIzMtdXNhZ2UpCiAgICAtIFtTZXJ2aWNlIERlc2NyaXB0aW9uXSgjc2VydmljZS1kZXNjcmlwdGlvbikKICAgIC0gW0hhbmRsZXIgZnVuY3Rpb25zXSgjaGFuZGxlci1mdW5jdGlvbnMpCiAgICAtIFtUaXRsZSBBbmQgRGVzY3JpcHRpb25dKCN0aXRsZS1hbmQtZGVzY3JpcHRpb24pCiAgICAtIFtQYXJhbWV0ZXJdKCNwYXJhbWV0ZXIpCiAgICAtIFtIZWFkZXJdKCNoZWFkZXIpCiAgICAtIFtIZWFkZXIgUGFyYW1ldGVyc10oI2hlYWRlci1wYXJhbWV0ZXJzKQogICAgLSBbUmVzcG9uc2VdKCNyZXNwb25zZSkKICAgIC0gW1Jlc291cmNlICYgVGFnXSgjcmVzb3VyY2UtLXRhZykKICAgIC0gW1JvdXRlXSgjcm91dGUpCiAgICAtIFtFbnVtc10oI2VudW1zKQotIFs0LiBTZWN1cml0eV0oIzQtc2VjdXJpdHkpCi0gWzUuIExpbWl0YXRpb25zXSgjNS1saW1pdGF0aW9ucykKLSBbNi4gUmVmZXJlbmNlc10oIzYtcmVmZXJlbmNlcykKCiMjIDEuIEluc3RhbGwKCmBgYApnbyBpbnN0YWxsIGdpdGh1Yi5jb20vcGFydmV6MzAxOS9nby1zd2FnZ2VyM0BsYXRlc3QKYGBgCgoKIyMjIDIuIERvY3VtZW50YXRpb24gR2VuZXJhdGlvbgojIyMjIFVzaW5nIGJpbmFyeQpHbyB0byB0aGUgZm9sZGVyIHdoZXJlIGlzIG1haW4uZ28gaW4KCmBgYCBzaGVsbAovLyBnby5tb2QgYW5kIG1haW4gZmlsZSBhcmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5CmdvLXN3YWdnZXIzIC0tbW9kdWxlLXBhdGggLiAtLW91dHB1dCBvYXMuanNvbiAtLXNjaGVtYS13aXRob3V0LXBrZyAtLWdlbmVyYXRlLXlhbWwgdHJ1ZQoKLy8gZ28ubW9kIGFuZCBtYWluIGZpbGUgYXJlIGluIHRoZSBkaWZmZXJlbnQgZGlyZWN0b3J5CmdvLXN3YWdnZXIzIC0tbW9kdWxlLXBhdGggLiAtLW1haW4tZmlsZS1wYXRoIC4vY21kL3h4eC9tYWluLmdvIC0tb3V0cHV0IG9hcy5qc29uIC0tc2NoZW1hLXdpdGhvdXQtcGtnIC0tZ2VuZXJhdGUteWFtbCB0cnVlCgovLyBpbiBjYXNlIHlvdSBnZXQgJ2NvbW1hbmQgbm90IGZvdW5kOiBnby1zd2FnZ2VyMycgZXJyb3IsIHBsZWFzZSBleHBvcnQgYWRkIEdPUEFUSC9iaW4gdG8gUEFUSApleHBvcnQgUEFUSD0iJEhPTUUvZ28vYmluOiRQQVRIIgoKTm90ZXMgLSAKLSBQYXNzIHNjaGVtYS13aXRob3V0LXBrZyBmbGFnIGFzIHRydWUgaWYgeW91IHdhbnQgdG8gZ2VuZXJhdGUgc2NoZW1hcyB3aXRob3V0IHBhY2thZ2UgbmFtZXMKLSBQYXNzIGdlbmVyYXRlLXlhbWwgYXMgdHJ1cyBpZiB5b3Ugd2FudCB0byBnZW5lcmF0ZSB5YW1sIHNwZWMgZmlsZSBpbnN0ZWFkIG9mIGpzb24KCmBgYAoKIyMjIyBVc2luZyBkb2NrZXIKYGBgIHNoZWxsCi8vIGdvLm1vZCBhbmQgbWFpbiBmaWxlIGFyZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKZG9ja2VyIHJ1biAtdCAtLXJtIC12ICQocHdkKTovYXBwIC13IC9hcHAgcGFydmV6MzAxOS9nby1zd2FnZ2VyMzpsYXRlc3QgLS1tb2R1bGUtcGF0aCAuIC0tb3V0cHV0IG9hcy5qc29uIC0tc2NoZW1hLXdpdGhvdXQtcGtnIC0tZ2VuZXJhdGUteWFtbCB0cnVlCgovLyBnby5tb2QgYW5kIG1haW4gZmlsZSBhcmUgaW4gdGhlIGRpZmZlcmVudCBkaXJlY3RvcnkKZG9ja2VyIHJ1biAtdCAtLXJtIC12ICQocHdkKTovYXBwIC13IC9hcHAgcGFydmV6MzAxOS9nby1zd2FnZ2VyMzpsYXRlc3QgLS1tb2R1bGUtcGF0aCAuIC0tbWFpbi1maWxlLXBhdGggLi9jbWQveHh4L21haW4uZ28gLS1vdXRwdXQgb2FzLmpzb24gLS1zY2hlbWEtd2l0aG91dC1wa2cgLS1nZW5lcmF0ZS15YW1sIHRydWUKCk5vdGVzIC0gCi0gUGFzcyBzY2hlbWEtd2l0aG91dC1wa2cgZmxhZyBhcyB0cnVlIGlmIHlvdSB3YW50IHRvIGdlbmVyYXRlIHNjaGVtYXMgd2l0aG91dCBwYWNrYWdlIG5hbWVzCi0gUGFzcyBnZW5lcmF0ZS15YW1sIGFzIHRydXMgaWYgeW91IHdhbnQgdG8gZ2VuZXJhdGUgeWFtbCBzcGVjIGZpbGUgaW5zdGVhZCBvZiBqc29uCgpgYGAKCgoKCiMjIDMuIFVzYWdlCgpZb3UgY2FuIGRvY3VtZW50IHlvdXIgc2VydmljZSBieSBwbGFjaW5nIGFubm90YXRpb25zIGluc2lkZSB5b3VyIGdvZG9jIGF0IHZhcmlvdXMgcGxhY2VzIGluIHlvdXIgY29kZS4KCiMjIyBTZXJ2aWNlIERlc2NyaXB0aW9uCgpUaGUgc2VydmljZSBkZXNjcmlwdGlvbiBjb21tZW50cyBjYW4gYmUgbG9jYXRlZCBpbiBhbnkgb2YgeW91ciAuZ28gZmlsZXMuIFRoZXkgcHJvdmlkZSBnZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzZXJ2aWNlIHlvdSBhcmUgZG9jdW1lbnRpbmcuCgpgYGAgZ28KLy8gQFZlcnNpb24gMS4wLjAKLy8gQFRpdGxlIEJhY2tlbmQgQVBJCi8vIEBEZXNjcmlwdGlvbiBBUEkgdXN1YWxseSB3b3JrcyBhcyBleHBlY3RlZC4gQnV0IHNvbWV0aW1lcyBpdHMgbm90IHRydWUuCi8vIEBDb250YWN0TmFtZSBQYXJ2ZXoKLy8gQENvbnRhY3RFbWFpbCBhYmNlQGVtYWlsLmNvbQovLyBAQ29udGFjdFVSTCBodHRwOi8vc29tZXVybC5veG94Ci8vIEBUZXJtc09mU2VydmljZVVybCBodHRwOi8vc29tZXVybC5veG94Ci8vIEBMaWNlbnNlTmFtZSBNSVQKLy8gQExpY2Vuc2VVUkwgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX0xpY2Vuc2UKLy8gQFNlcnZlciBodHRwOi8vd3d3LmZha2UuY29tIFNlcnZlci0xCi8vIEBTZXJ2ZXIgaHR0cDovL3d3dy5mYWtlMi5jb20gU2VydmVyLTIKLy8gQFNlY3VyaXR5IEF1dGhvcml6YXRpb25IZWFkZXIgcmVhZCB3cml0ZQovLyBAU2VjdXJpdHlTY2hlbWUgQXV0aG9yaXphdGlvbkhlYWRlciBodHRwIGJlYXJlciBJbnB1dCB5b3VyIHRva2VuCmBgYAoKIyMjIEhhbmRsZXIgRnVuY3Rpb25zCgpCeSBhZGRpbmcgY29tbWVudHMgdG8geW91ciBoYW5kbGVyIGZ1bmMgZ29kb2MsIHlvdSBjYW4gZG9jdW1lbnQgaW5kaXZpZHVhbCBhY3Rpb25zIGFzIHdlbGwgYXMgdGhlaXIgaW5wdXQgYW5kIG91dHB1dC4KCmBgYCBnbwp0eXBlIFVzZXIgc3RydWN0IHsKICBJRCAgIHVpbnQ2NCBganNvbjoiaWQiIGV4YW1wbGU6IjEwMCIgZGVzY3JpcHRpb246IlVzZXIgaWRlbnRpdHkiYAogIE5hbWUgc3RyaW5nIGBqc29uOiJuYW1lIiBleGFtcGxlOiJQYXJ2ZXoiYCAKfQoKdHlwZSBVc2Vyc1Jlc3BvbnNlIHN0cnVjdCB7CiAgRGF0YSBbXVVzZXJzIGBqc29uOiJ1c2VycyIgZXhhbXBsZToiW3tcImlkXCI6MTAwLCBcIm5hbWVcIjpcIlBhcnZlelwifV0iYAp9Cgp0eXBlIEVycm9yIHN0cnVjdCB7CiAgQ29kZSBzdHJpbmcgYGpzb246ImNvZGUiYAogIE1zZyAgc3RyaW5nIGBqc29uOiJtc2ciIHNraXA6InRydWUiYAogIC8vIHVzZSBza2lwOiJ0cnVlIiBpZiB5b3Ugd2FudCB0byBza2lwIHRoZSBmaWVsZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBzcGVjCn0KCnR5cGUgRXJyb3JSZXNwb25zZSBzdHJ1Y3QgewogIEVycm9ySW5mbyBFcnJvciBganNvbjoiZXJyb3IiYAp9CgovLyBSZXF1ZXN0SGVhZGVycyByZXByZXNlbnRzIHRoZSBtb2RlbCBmb3IgaGVhZGVyIHBhcmFtcwovLyBASGVhZGVyUGFyYW1ldGVycyBSZXF1ZXN0SGVhZGVycwp0eXBlIFJlcXVlc3RIZWFkZXJzIHN0cnVjdCB7CiAgICBBdXRob3JpemF0aW9uICBzdHJpbmcgIGBqc29uOiJBdXRob3JpemF0aW9uImAKfQoKLy8gQFRpdGxlIEdldCB1c2VyIGxpc3Qgb2YgYSBncm91cC4KLy8gQERlc2NyaXB0aW9uIEdldCB1c2VycyByZWxhdGVkIHRvIGEgc3BlY2lmaWMgZ3JvdXAuCi8vIEBIZWFkZXIgbW9kZWwuUmVxdWVzdEhlYWRlcnMKLy8gQFBhcmFtICBncm91cElEICBwYXRoICBpbnQgIHRydWUgICJJZCBvZiBhIHNwZWNpZmljIGdyb3VwLiIgIjEyMCIKLy8gQFN1Y2Nlc3MgIDIwMCAgb2JqZWN0ICBVc2Vyc1Jlc3BvbnNlICAiVXNlcnNSZXNwb25zZSBKU09OIgovLyBARmFpbHVyZSAgNDAwICBvYmplY3QgIEVycm9yUmVzcG9uc2UgICJFcnJvclJlc3BvbnNlIEpTT04iCi8vIEBSZXNvdXJjZSB1c2VycwovLyBAUm91dGUgL2FwaS9ncm91cC97Z3JvdXBJRH0vdXNlcnMgW2dldF0KZnVuYyBHZXRHcm91cFVzZXJzKCkgewogIC8vIC4uLgp9CgovLyBAVGl0bGUgR2V0IHVzZXIgbGlzdCBvZiBhIGdyb3VwLgovLyBARGVzY3JpcHRpb24gQ3JlYXRlIGEgbmV3IHVzZXIuCi8vIEBQYXJhbSAgdXNlciAgYm9keSAgVXNlciAgdHJ1ZSAgIkluZm8gb2YgYSB1c2VyLiIKLy8gQFN1Y2Nlc3MgIDIwMCAgb2JqZWN0ICBVc2VyICAgICAgICAgICAiVXNlcnNSZXNwb25zZSBKU09OIgovLyBARmFpbHVyZSAgNDAwICBvYmplY3QgIEVycm9yUmVzcG9uc2UgICJFcnJvclJlc3BvbnNlIEpTT04iCi8vIEBSZXNvdXJjZSB1c2VycwovLyBAUm91dGUgL2FwaS91c2VyIFtwb3N0XQpmdW5jIFBvc3RVc2VyKCkgewogIC8vIC4uLgp9CmBgYAoKIyMjIyBUaXRsZSBBbmQgRGVzY3JpcHRpb24KYGBgCkBUaXRsZSB7dGl0bGV9CkBUaXRsZSBHZXQgdXNlciBsaXN0IG9mIGEgZ3JvdXAuCgpARGVzY3JpcHRpb24ge2Rlc2NyaXB0aW9ufS4KQERlc2NyaXB0aW9uIEdldCB1c2VycyByZWxhdGVkIHRvIGEgc3BlY2lmaWMgZ3JvdXAuCmBgYAotIHt0aXRsZX06IFRoZSB0aXRsZSBvZiB0aGUgcm91dGUuCi0ge2Rlc2NyaXB0aW9ufTogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSByb3V0ZS4KCiMjIyMgUGFyYW1ldGVyCmBgYApAUGFyYW0gIHtuYW1lfSAgICB7aW59ICB7Z29UeXBlfSAge3JlcXVpcmVkfSAge2Rlc2NyaXB0aW9ufSAgICAgICAgICAgICB7ZXhhbXBsZX0KQFBhcmFtICBncm91cElEICAgcGF0aCAgaW50ICAgICAgIHRydWUgICAgICAgICJJZCBvZiBhIHNwZWNpZmljIGdyb3VwLiIgIjEyMCIKYGBgCi0ge25hbWV9OiBUaGUgcGFyYW1ldGVyIG5hbWUuCi0ge2lufTogVGhlIHBhcmFtZXRlciBpcyBpbiBgcGF0aGAsIGBxdWVyeWAsIGBmb3JtYCwgYGhlYWRlcmAsIGBjb29raWVgLCBgYm9keWAgb3IgYGZpbGVgLgotIHtnb1R5cGV9OiBUaGUgdHlwZSBpbiBnbyBjb2RlLiBUaGlzIHdpbGwgYmUgaWdub3JlZCB3aGVuIHtpbn0gaXMgYGZpbGVgLgotIHtyZXF1aXJlZH06IGB0cnVlYCwgYGZhbHNlYCwgYHJlcXVpcmVkYCBvciBgb3B0aW9uYWxgLiAKLSB7ZGVzY3JpcHRpb259OiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHBhcmFtZXRlci4gTXVzdCBiZSBxdW90ZWQuCi0ge2V4YW1wbGV9OiAqKk9wdGlvbmFsKiogZXhhbXBsZSBvZiB0aGlzIHBhcmFtZXRlci4gTXVzdCBiZSBxdW90ZWQuCgpPbmUgY2FuIGFsc28gb3ZlcnJpZGUgZXhhbXBsZSBmb3IgYW4gb2JqZWN0IHdpdGggYG92ZXJyaWRlLWV4YW1wbGVgIGtleSBpbiBzdHJ1Y3QKZWcgLQpgYGAgZ28KdHlwZSBSZXF1ZXN0IHN0cnVjdCB7CiAgICB2ZXJzaW9uICBtb2RlbC5WZXJzaW9uIGAianNvbjoiVmVyc2lvbiIgb3ZlcnJpZGUtZXhhbXBsZToiMTEuMC4wImAKfQpgYGAKCiMjIyMgSGVhZGVyIApgYGAKQEhlYWRlciAgICAgICAgICB7Z29UeXBlfQpASGVhZGVyUGFyYW1ldGVycyAgIG1vZGVsLlJlcXVlc3RIZWFkZXJzCmBgYAotIEhlYWRlciBxdWVyeSBwYXJhbSBmb3IgZW5kcG9pbnRzLCBwYXJzZXMgdGhlIHF1ZXJ5IHBhcmFtIGZyb20gdGhlIG1vZGVsCgojIyMjIEhlYWRlciBQYXJhbWV0ZXJzCmBgYApAUGFyYW0gICAgICAgICAgICAgIHtnb1R5cGV9CkBIZWFkZXJQYXJhbWV0ZXJzICAgUmVxdWVzdEhlYWRlcnMKYGBgCgotIHtnb1R5cGV9OiBUaGUgdHlwZSBpbiBnbyBjb2RlLiBUaGlzIHdpbGwgYmUgaWdub3JlZCB3aGVuIHtpbn0gaXMgYGZpbGVgLgotIFBhcnNlcyBwYXJhbWV0ZXJzIGZyb20gdGhlIHR5cGUgYW5kIGtlZXAgaXQgdXAgY29tcG9uZW50IHNlY3Rpb24gZm9yIHJlZmVyZW5jZQoKIyMjIyBSZXNwb25zZQpgYGAganNvbgpAU3VjY2VzcyAge3N0YXR1c30gIHtqc29uVHlwZX0gIHtnb1R5cGV9ICAgICAgIHtkZXNjcmlwdGlvbn0KQFN1Y2Nlc3MgIDIwMCAgICAgICBvYmplY3QgICAgICBVc2Vyc1Jlc3BvbnNlICAiVXNlcnNSZXNwb25zZSBKU09OIgoKQEZhaWx1cmUgIHtzdGF0dXN9ICB7anNvblR5cGV9ICB7Z29UeXBlfSAgICAgICB7ZGVzY3JpcHRpb259CkBGYWlsdXJlICA0MDAgICAgICAgb2JqZWN0ICAgICAgRXJyb3JSZXNwb25zZSAgIkVycm9yUmVzcG9uc2UgSlNPTiIKYGBgCi0ge3N0YXR1c306IFRoZSBIVFRQIHN0YXR1cyBjb2RlLgotIHtqc29uVHlwZX06IFRoZSB2YWx1ZSBjYW4gYmUgYG9iamVjdGAgb3IgYGFycmF5YC4gCi0ge2dvVHlwZX06IFRoZSB0eXBlIGluIGdvIGNvZGUuCi0ge2Rlc2NyaXB0aW9ufTogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSByZXNwb25zZS4gTXVzdCBiZSBxdW90ZWQuCgojIyMjIFJlc291cmNlICYgVGFnCmBgYCBqc29uCkBSZXNvdXJjZSB7cmVzb3VyY2V9CkBSZXNvdXJjZSB1c2VycwoKQFRhZyB7dGFnfQpAdGFnIHh4eApgYGAKCi0ge3Jlc291cmNlfSwge3RhZ306IFRhZyBvZiB0aGUgcm91dGUuCgojIyMjIFJvdXRlCgpgYGAganNvbgpAUm91dGUge3BhdGh9ICAgIHttZXRob2R9CkBSb3V0ZSAvYXBpL3VzZXIgW3Bvc3RdCmBgYAoKLSB7cGF0aH06IFRoZSBVUkwgcGF0aC4KLSB7bWV0aG9kfTogVGhlIEhUVFAgTWV0aG9kLiBNdXN0IGJlIHB1dCBpbiBicmFja2V0cy4KCiMjIyMgRW51bXMKCi0gVG8gZ2VuZXJhdGUgZW51bXMgY3JlYXRlIHR5cGUgc3RydWN0cyBmb3IgZW51bSBmaWVsZCB3aXRoIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZXMgYXMgZm9sbG93czoKLSBDcmVhdGUgc3RydWN0IHR5cGUgZmllbGRzIHdpdGggQEVudW0gVGFnCi0gRXhhbXBsZSBhcyBmb2xsb3dzLQoKYGBgIGdvCi8vIEBFbnVtIENvdW50cmllc0VudW0KdHlwZSBDb3VudHJpZXNFbnVtIHN0cnVjdCB7CiAgICAvLyBDcmVhdGUgdGhlIGZpZWxkIG5hbWUgd2l0aCBzYW1lIGFzIHN0cnVjdCBuYW1lCiAgICBDb3VudHJpZXNFbnVtIHN0cmluZyBgZW51bToiaW5kaWEsY2hpbmEsbWV4aWNvLGphcGFuIiBleGFtcGxlOiJpbmRpYSJgCn0KYGBgCgojIyMjIyBIb3cgdG8gYWRkIHJlZmVyZW5jZSBvZiBFbnVtIG9uIHR5cGVzCgpgYGAgZ28KdHlwZSBSZXF1ZXN0IHN0cnVjdCB7CiAgTmFtZSBzdHJpbmcgYGpzb246Im5hbWUiIGV4YW1wbGU6IlBhcnZleiJgIAogIENvdW50cnkgc3RyaW5nIGBqc29uOiJjb3VudHJ5IiAkcmVmOiJDb3VudHJpZXNFbnVtImAKfQoKYGBgCgojIyMjIFJlc3BvbnNlIGJvZHkKWW91IG5lZWQgdG8gcHJvdmlkZSBzd2FnZ2VyIGZpZWxkcyBhcyByZWZsZWN0IHRhZ3MgaW4geW91ciBzdHJ1Y3R1cmUuIEluIGV4YW1wbGU6CmBgYGdvCnR5cGUgRmlsdGVyIHN0cnVjdCB7CglSYXRpbmcgICAgICAgaW50ICAgIGBqc29uOiJyYXRpbmciYAoJVHlwZSAgICAgICAgIHN0cmluZyBganNvbjoidHlwZSJgCglEaXN0YW5jZSAgICAgaW50NjQgIGBqc29uOiJkaXN0YW5jZSIsIG1pbmltdW06IjEiLCBtYXhpbXVtOiIxMDAiYAoJRGlzdHJpY3RDb2RlIHN0cmluZyBganNvbjoiZGlzdHJpY3RfY29kZSIsIHBhdHRlcm46IlthLXpdezJ9XFxkW2Etel1cXHNcXGRbYS16XXsyfSJgCn0KYGBgCgpBdmFpbGFibGUgZmllbGRzOgotIHR5cGUKLSBmb3JtYXQKLSByZXF1aXJlZAotIHByb3BlcnRpZXMKLSBkZXNjcmlwdGlvbgotIGl0ZW1zCi0gZXhhbXBsZQotIGRlcHJlY2F0ZWQgKGJvb2wpCi0gcmVmCi0gZW51bQotIHRpdGxlCi0gbWF4aW11bSAoZmxvYXQ2NCkKLSBleGNsdXNpdmVNYXhpbXVtIChib29sKQotIG1pbmltdW0gKGZsb2F0NjQpCi0gZXhjbHVzaXZlTWluaW11bSAoYm9vbCkKLSBtYXhMZW5ndGggKHVpbnQpCi0gbWluTGVuZ3RoICh1aW50KQotIHBhdHRlcm4KLSBtYXhJdGVtcyAodWludCkKLSBtaW5JdGVtcyAodWludCkKLSB1bmlxdWVJdGVtcyAoYm9vbCkKLSBtYXhQcm9wZXJ0aWVzICh1aW50KQotIG1pblByb3BlcnRpZXMgKHVpbnQpCi0gYWRkaXRpb25hbFByb3BlcnRpZXMgKGJvb2wpCi0gbnVsbGFibGUgKGJvb2wpCi0gcmVhZE9ubHkgKGJvb2wpCi0gd3JpdGVPbmx5IChib29sKQoKIyMjIDQuIFNlY3VyaXR5CgpJZiBhdXRob3JpemF0aW9uIGlzIHJlcXVpcmVkLCB5b3UgbXVzdCBkZWZpbmUgc2VjdXJpdHkgc2NoZW1lcyBhbmQgdGhlbiBhcHBseSB0aG9zZSB0byB0aGUgQVBJLiBBIHNjaGVtZSBpcyBkZWZpbmVkCnVzaW5nIGBAU2VjdXJpdHlTY2hlbWUgW25hbWVdIFt0eXBlXSBbcGFyYW1ldGVyc11gIGFuZCBhcHBsaWVkIGJ5CmFkZGluZyBgQFNlY3VyaXR5IFtzY2hlbWUtbmFtZV0gW3Njb3BlMV0gW3Njb3BlMl0gWy4uLl1gLgoKQWxsIGV4YW1wbGVzIGluIHRoaXMgc2VjdGlvbiB1c2UgYE15QXBpQXV0aGAgYXMgdGhlIG5hbWUuIFRoaXMgbmFtZSBjYW4gYmUgYW55dGhpbmcgeW91IGNob3NlOyBtdWx0aXBsZSBuYW1lZCBzY2hlbWVzCmFyZSBzdXBwb3J0ZWQuIEVhY2ggc2NoZW1lIG11c3QgaGF2ZSBpdHMgb3duIG5hbWUsIGV4Y2VwdCBmb3IgT0F1dGgyIHNjaGVtZXMgLSBPQXV0aDIgc3VwcG9ydHMgbXVsdGlwbGUgc2NoZW1lcyBieSB0aGUKc2FtZSBuYW1lLgoKQSBudW1iZXIgb2YgZGlmZmVyZW50IHR5cGVzIGlzIHN1cHBvcnRlZCwgdGhleSBhbGwgaGF2ZSBkaWZmZXJlbnQgcGFyYW1ldGVyczoKCnxUeXBlfERlc2NyaXB0aW9ufFBhcmFtZXRlcnN8RXhhbXBsZXwKfC0tLXwtLS18LS0tfC0tLXwKfEhUVFB8QSBIVFRQIEF1dGhlbnRpY2F0aW9uIHNjaGVtZSB1c2luZyB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlcnxzY2hlbWU6IGFueSBbSFRUUCBBdXRoZW50aWNhdGlvbiBzY2hlbWVdKGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2h0dHAtYXV0aHNjaGVtZXMvaHR0cC1hdXRoc2NoZW1lcy54aHRtbCl8YEBTZWN1cml0eVNjaGVtZSBNeUFwaUF1dGggYmFzaWNgfAp8QVBJS2V5fEF1dGhvcml6YXRpb24gYnkgcGFzc2luZyBhbiBBUEkgS2V5IGFsb25nIHdpdGggdGhlIHJlcXVlc3R8aW46IExvY2F0aW9uIG9mIHRoZSBBUEkgS2V5LCBvcHRpb25zIGFyZSBgaGVhZGVyYCwgYHF1ZXJ5YCBhbmQgYGNvb2tpZWAuIG5hbWU6IFRoZSBuYW1lIG9mIHRoZSBmaWVsZCB3aGVyZSB0aGUgQVBJIEtleSBtdXN0IGJlIHNldHxgQFNlY3VyaXR5U2NoZW1lIE15QXBpQXV0aCBhcGlLZXkgaGVhZGVyIFgtTXlDdXN0b21IZWFkZXJgfAp8T3BlbklkQ29ubmVjdHxEZWxlZ2F0aW5nIHNlY3VyaXR5IHRvIGEga25vd24gT3BlbklkIHNlcnZlcnx1cmw6IFRoZSBVUkwgb2YgdGhlIE9wZW5JZCBzZXJ2ZXJ8YEBTZWN1cml0eVNjaGVtZSBNeUFwaUF1dGggb3BlbklkQ29ubmVjdCBodHRwczovL2V4YW1wbGUuY29tLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uYHwKfE9BdXRoMkF1dGhDb2RlfFVzaW5nIHRoZSAiQXV0aGVudGljYXRpb24gQ29kZSIgZmxvdyBvZiBPQXV0aDJ8YXV0aG9yaXphdGlvblVybCwgdG9rZW5Vcmx8YEBTZWN1cml0eVNjaGVtZSBNeUFwaUF1dGggb2F1dGgyQXV0aENvZGUgL29hdXRoL2F1dGhvcml6ZSAvb2F1dGgvdG9rZW5gfCAKfE9BdXRoMkltcGxpY2l0fFVzaW5nIHRoZSAiSW1wbGljaXQiIGZsb3cgb2YgT0F1dGgyfGF1dGhvcml6YXRpb25Vcmx8YEBTZWN1cml0eVNjaGVtZSBNeUFwaUF1dGggb2F1dGgySW1wbGljaXQgL29hdXRoL2F1dGhvcml6ZXwgCnxPQXV0aDJSZXNvdXJjZU93bmVyQ3JlZGVudGlhbHN8VXNpbmcgdGhlICJSZXNvdXJjZSBPd25lciBDcmVkZW50aWFscyIgZmxvdyBvZiBPQXV0aDJ8YXV0aG9yaXphdGlvblVybHxgQFNlY3VyaXR5U2NoZW1lIE15QXBpQXV0aCBvYXV0aDJSZXNvdXJjZU93bmVyQ3JlZGVudGlhbHMgL29hdXRoL3Rva2VufCAKfE9BdXRoMkNsaWVudENyZWRlbnRpYWxzfFVzaW5nIHRoZSAiQ2xpZW50IENyZWRlbnRpYWxzIiBmbG93IG9mIE9BdXRoMnxhdXRob3JpemF0aW9uVXJsfGBAU2VjdXJpdHlTY2hlbWUgTXlBcGlBdXRoIG9hdXRoMkNsaWVudENyZWRlbnRpYWxzIC9vYXV0aC90b2tlbnwgCgpBbnkgdGV4dCB0aGF0IGlzIHByZXNlbnQgYWZ0ZXIgdGhlIGxhc3QgcGFyYW1ldGVyIHdpbCBiZSB1c2VkIGFzIHRoZSBkZXNjcmlwdGlvbi4gRm9yCmluc3RhbmNlIGBAU2VjdXJpdHlTY2hlbWUgTXlBcGlBdXRoIGJhc2ljIExvZ2luIHdpdGggeW91ciBhZG1pbiBjcmVkZW50aWFsc2AuCgpPbmNlIGFsbCBzZWN1cml0eSBzY2hlbWVzIGhhdmUgYmVlbiBkZWZpbmVkLCB0aGV5IG11c3QgYmUgY29uZmlndXJlZC4gVGhpcyBpcyBkb25lIHdpdGggdGhlIGBAU2VjdXJpdHlgIGNvbW1lbnQuCkRlcGVuZGluZyBvbiB0aGUgYHR5cGVgIG9mIHRoZSBzY2hlbWUsIHNjb3BlcyAoc2VlIGJlbG93KSBtYXkgYmUgc3VwcG9ydGVkLiAqQXQgdGhlIG1vbWVudCwgaXQgaXMgb25seSBwb3NzaWJsZSB0bwpjb25maWd1cmUgc2VjdXJpdHkgZm9yIHRoZSBlbnRpcmUgc2VydmljZSouCgpgYGAgZ28KLy8gQFNlY3VyaXR5IE15QXBpQXV0aCByZWFkX3VzZXIgd3JpdGVfdXNlcgpgYGAKCiMjIyMgU2NvcGVzCgpGb3IgT0F1dGgyIHNlY3VyaXR5IHNjaGVtZXMsIGl0IGlzIHBvc3NpYmxlIHRvIGRlZmluZSBzY29wZXMgdXNpbmcKdGhlIGBAU2VjdXJpdHlTY29wZSBbc2NoZW1hLW5hbWVdIFtzY29wZS1jb2RlXSBbc2NvcGUtZGVzY3JpcHRpb25dYCBjb21tZW50LgoKYGBgIGdvCi8vIEBTZWN1cml0eVNjb3BlIE15QXBpQXV0aCByZWFkX3VzZXIgUmVhZCBhIHVzZXIgZnJvbSB0aGUgc3lzdGVtCi8vIEBTZWN1cml0eVNjb3BlIE15QXBpQXV0aCB3cml0ZV91c2VyIFdyaXRlIGEgdXNlciB0byB0aGUgc3lzdGVtCmBgYAoKIyMjIDUuIExpbWl0YXRpb25zCgotIE9ubHkgc3VwcG9ydCBnbyBtb2R1bGUuCi0gQW5vbnltb3VzIHN0cnVjdCBmaWVsZCBpcyBub3Qgc3VwcG9ydGVkLgoKIyMjIDYuIFJlZmVyZW5jZXMKCi0gVGhlIHByb2plY3QgaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyByZXBvc2l0b3JpZXMgLQotIFt5dmFzaXlhcm92L3N3YWdnZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS95dmFzaXlhcm92L3N3YWdnZXIpCi0gW3V1ZGFzaHIvZ28tbW9kdWxlXShodHRwczovL2dpdGh1Yi5jb20vdXVkYXNoci9nby1tb2R1bGUpCi0gW21pa3VuYWxwaGEvZ29hc10oaHR0cHM6Ly9naXRodWIuY29tL21pa3VuYWxwaGEvZ29hcykK readmeEtag: '"5c182058c40ce228bfd9e012db5c1e96501930e0"' readmeLastModified: Wed, 19 Jun 2024 06:12:07 GMT repositoryId: 373055212 description: Swagger 3.0 implementation for go created: '2021-06-02T05:54:10Z' updated: '2026-02-03T01:00:04Z' language: Go archived: false stars: 147 watchers: 5 forks: 25 owner: parvez3019 logo: https://avatars.githubusercontent.com/u/10362597?v=4 license: MIT repoEtag: '"f5da95b7f9387b64959a834a78f33301449e7af80d5429d494781c4dc24d8a99"' repoLastModified: Tue, 03 Feb 2026 01:00:04 GMT foundInMaster: true category: Server Implementations id: 00ef51b7bb2f326af2de90739df6907b - source: openapi3 tags repository: https://github.com/swagger-api/swagger-converter v3: true repositoryMetadata: base64Readme: >- UHJvdmlkZXMgYSBjb252ZXJ0ZXIgYmV0d2VlbiBPcGVuQVBJIDIuMCBhbmQgMy4wIHNwZWNpZmljYXRpb25zIGFjY2Vzc2libGUgdmlhIEFQSXMgYW5kIHdlYiBVSS4gCgpJdCBpcyBhdmFpbGFibGUgb25saW5lIGF0IGh0dHBzOi8vY29udmVydGVyLnN3YWdnZXIuaW8vIGFuZCBhcyBhIFtkb2NrZXIgaW1hZ2VdKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9zd2FnZ2VyYXBpL3N3YWdnZXItY29udmVydGVyKSBlLmcuOgoKYGBgCmRvY2tlciBwdWxsIHN3YWdnZXJhcGkvc3dhZ2dlci1jb252ZXJ0ZXI6djEuMC42LVNOQVBTSE9UCmRvY2tlciBydW4gLWl0IC1wIDgwODA6ODA4MCAtLW5hbWUgc3dhZ2dlci1jb252ZXJ0ZXIgc3dhZ2dlcmFwaS9zd2FnZ2VyLWNvbnZlcnRlcjp2MS4wLjYtU05BUFNIT1QKYGBgCgpXZWIgVUkgaXMgcmVhY2hhYmxlIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9pbmRleC5odG1sIGFuZCBPcGVuQVBJIHNwZWMgYXQgaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaS9vcGVuYXBpLmpzb24KCiMjIFNlY3VyaXR5IGNvbnRhY3QKClBsZWFzZSBkaXNjbG9zZSBhbnkgc2VjdXJpdHktcmVsYXRlZCBpc3N1ZXMgb3IgdnVsbmVyYWJpbGl0aWVzIGJ5IGVtYWlsaW5nIFtzZWN1cml0eUBzd2FnZ2VyLmlvXShtYWlsdG86c2VjdXJpdHlAc3dhZ2dlci5pbyksIGluc3RlYWQgb2YgdXNpbmcgdGhlIHB1YmxpYyBpc3N1ZSB0cmFja2VyLgoKIyMgTGljZW5zZQoKYGBgCkNvcHlyaWdodCAyMDE5IFNtYXJ0QmVhciBTb2Z0d2FyZQoKTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IFthcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXShodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgpgYGAK readmeEtag: '"1926fae77184799da27abea97b2530f40c480474"' readmeLastModified: Tue, 14 May 2024 09:01:26 GMT repositoryId: 87553967 description: OpenAPI/Swagger 2.0 to OpenAPI 3.0 Converter WebService created: '2017-04-07T14:18:38Z' updated: '2026-02-04T13:55:18Z' language: Shell archived: false stars: 149 watchers: 11 forks: 34 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 repoEtag: '"61466a84d5e02adaa7a011c6913cb3b505ed0a0c8533c7cf4978f89fcb392d5d"' repoLastModified: Wed, 04 Feb 2026 13:55:18 GMT foundInMaster: true category: - Code Generators - Parsers id: 97edfdde2e669f6ea8e322d590966d62 - source: openapi3 tags repository: https://github.com/oai/tools.openapis.org v3: true id: cf25f8e3e1410d3084950f72c6067f4e repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFRvb2xpbmcKClRoaXMgcHJvamVjdCBpcyBwcm92aWRlZCBieSB0aGUgT3BlbkFQSSBJbml0aWF0aXZlIGFzIGEgbWVhbnMgdG8gY2VudHJhbGl6ZSBlY29zeXN0ZW0gaW5mb3JtYXRpb24gb24gT3BlbkFQSS1yZWxhdGVkIHRvb2xpbmcuIEl0IGxldmVyYWdlcyBvcGVuLXNvdXJjZSBwcm9qZWN0cyB0aGF0IGhhdmUgZ29uZSBiZWZvcmUgdG8gcHJvdmlkZSBhIGNvbnNvbGlkYXRlZCBsaXN0IG9mIHRvb2xpbmcuCgpUaGUgcHJvamVjdCBpcyBzcGxpdCBpbnRvIHR3byBmZWF0dXJlczoKCi0gQSBsaXN0IG9mIHRvb2xpbmcgbWVyZ2VkIGZyb20gc291cmNlcyBhY3Jvc3MgdGhlIGludGVyd2VicyB0aGF0IHVzZXJzIGNhbiBncmFiIGFuZCBzbGljZSBhbmQgZGljZSBhcyB0aGV5IHNlZSBmaXQuCi0gQSB3ZWJzaXRlIHRoYXQgYWxsb3dzIHVzZXJzIHRvIHNlYXJjaCBhbmQgaW5zcGVjdCB0aGUgdG9vbGluZyBkYXRhIGZpcnN0LWhhbmQuCgpFYWNoIGlzIGV4cGFuZGVkIHVwb24gaW4gdGhlIHNlY3Rpb25zIGJlbG93LgoKIyMgUm9sbCBDYWxsCgpUaGUgZm9sbG93aW5nIHByb2plY3RzIGFyZSBiZWluZyBsZXZlcmFnZWQgdG8gcHJvdmlkZSB0aGUgbWFqb3JpdHkgb2YgdGhlIHNvdXJjZSBpbmZvcm1hdGlvbi4KCnwgTmFtZSAgICAgICAgICB8IFNvdXJjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IE9wZW5BUEkuVG9vbHMgfCBodHRwczovL2dpdGh1Yi5jb20vYXBpc3lvdXdvbnRoYXRlL29wZW5hcGkudG9vbHMgfCBBUElzIFlvdSBXb24ndCBIYXRlIGVmZm9ydHMgdG8gY3JlYXRlIHViZXIgbGlzdCBvZiB0b29saW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQVBJcy5ndXJ1ICAgICB8IGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlzLWd1cnUvYXdlc29tZS1vcGVuYXBpMyAgICB8IFJlcG9zaXRvcnkvc2l0ZSBiYXNlZCBvbiB0YWdnZWQgcmVwb3NpdG9yaWVzIGluIEdpdGh1Yi48YnI+VGhpcyByZXBvc2l0b3J5IHJldXNlcyB0aGUgYnVpbGQgYXBwcm9hY2ggcmF0aGVyIHRoYW4gcHVsbGluZyB0aGUgbGlzdCBmcm9tIHRoZSBzb3VyY2UuIHwKCiMjIEhvdyBDYW4gWW91IEhlbHA/CgpUaGlzIHByb2plY3QgaXMgZGVzaWduZWQgdG8gY29udGludWUgdGhlIHdvcmsgb2YgQVBJcy5ndXJ1IGFuZCBjb2xsZWN0IGRhdGEgYmFzZWQgb24gcmVwb3NpdG9yaWVzIHRhZ2dlZCB3aXRoIGEgdG9waWMuCgpJZiB5b3Ugd2FudCB5b3VyIHByb2plY3QgaW5jbHVkZWQgaW4gdGhlIHRvb2xpbmcgbGlzdCB0YWcgeW91ciBwcm9qZWN0IHdpdGggb25lLW9yLW1vcmUgb2YgdGhlIGZvbGxvd2luZyB0b3BpY3M6CgotIGBzd2FnZ2VyYCBvciBgb3BlbmFwaTJgIChGb3IgU3dhZ2dlci9PcGVuQVBJIDIuMCBzdXBwb3J0KS4KLSBgb3BlbmFwaTNgIChGb3IgT3BlbkFQSSAzLjAgc3VwcG9ydCkuCi0gYG9wZW5hcGkzMWAgKEZvciBPcGVuQVBJIDMuMSBzdXBwb3J0KS4KCklmIHlvdSBhcmVuJ3QgZmFtaWxpYXIgd2l0aCB0b3BpY3MgaW4gR2l0SHViIHBsZWFzZSBmb2xsb3cgW3RoaXMgZ3VpZGVdKGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL3JlcG9zaXRvcmllcy9tYW5hZ2luZy15b3VyLXJlcG9zaXRvcnlzLXNldHRpbmdzLWFuZC1mZWF0dXJlcy9jdXN0b21pemluZy15b3VyLXJlcG9zaXRvcnkvY2xhc3NpZnlpbmcteW91ci1yZXBvc2l0b3J5LXdpdGgtdG9waWNzKSB0byBhZGQgdGhlbSB0byB5b3VyIHJlcG9zaXRvcnkuCgo+ICoqX05vdGU6IENvbGxlY3Rpb24gb2YgdGhlIGBzd2FnZ2VyYC9gb3BlbmFwaTJgIHRvcGljcyBpcyBub3QgY3VycmVudGx5IGltcGxlbWVudGVkIC0gc2VlIGRlcGVuZGVuY2llcyBkZXNjcmliZWQgaW4gdGhpcyBbaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvVG9vbGluZy9pc3N1ZXMvMTkpLl8qKgoKIyMgVG9vbGluZyBMaXN0CgpUaGUgdG9vbGluZyBsaXN0IGlzIGJ1aWx0IGluIGxhcmdlbHkgdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBtYWpvcml0eSBvZiBwcm9qZWN0cyB0aGF0IGhhdmUgYmxhemVkIGEgdHJhaWwgaW4gdG9vbGluZyBiZWZvcmUgKHdoaWNoIG9mIGNvdXJzZSB0aGlzIHByb2plY3QgdGFrZXMgZnVsbCBhZHZhbnRhZ2Ugb2YpLgoKSW4gb3JkZXIgdG8gYnJpbmcgdGhpcyB0b2dldGhlciBpbiBhIHNlbnNpYmxlIHdheSBhIEd1bHAtYmFzZWQgcHJvY2VzcyBoYXMgYmVlbiBpbXBsZW1lbnRlZC4gR3VscCB3YXMgY2hvc2VuIGdpdmVuIHRoZSByZWxhdGl2ZSBlYXNlIHdpdGggd2hpY2ggZnVuY3Rpb25zIGNhbiBiZSBpbXBsZW1lbnRlZCB0byBtYXNzYWdlIHRoZSBkYXRhIHN0cmVhbSBhbmQgdG8gZW5zdXJlIHRoZSBidWlsZCBpcyBub3QgY2xvc2VseSBjb3VwbGVkIHRvIGEgKGNvbW1lcmNpYWwpIENJIHRvb2wuIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiBwcmluY2lwbGVzIGFyb3VuZCB0aGUgZGVzaWduIHdvcnRoIHN0YXRpbmc6CgotIFRoZSB0cmFuc2Zvcm0gZnVuY3Rpb25zIHRoYXQgbWFzc2FnZSB0aGUgZGF0YSBhcmUgYWJzdHJhY3RlZCBhd2F5IGZyb20gR3VscCB0byBlbmFibGUgdGhlIGJ1aWxkIHRvICJsaWZ0LWFuZC1zaGlmdCIgdG8gYSBuZXcgYnVpbGQgdG9vbCBhcyByZXF1aXJlZC4KLSBQaXBlcyBiZXR3ZWVuIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIGZvcm1hdHRlZCBhcyBZQU1MIHRvIGFsbG93IGZvciBzaW1wbGUgZHVtcGluZyBvZiB0aGUgZGF0YSBmb3IgaHVtYW5zIGFwcHJhaXNhbC4KLSBUaGUgc291cmNlIGRhdGEgY29sbGVjdGlvbiBpcyB3cml0dGVuIGFzIGluZGVwZW5kZW50IHBhY2thZ2VzIHJlZmVyZW5jZWQgYnkgbWV0YWRhdGEgdG8gYWxsb3cgbmV3IHNvdXJjZXMgdG8gYmUgInNsb3R0ZWQiIGluLgoKTm90ZSB0aGF0IGlmIGJldHRlciB0b29scyBhcmUgaWRlbnRpZmllZCBmb3IgdGhlIGJ1aWxkIHRoZW4gR3VscCBzaG91bGQgYmUgZWFzeSB0byBjaGFuZ2UuCgojIyMgRW52aXJvbm1lbnQgVmFyaWFibGVzCgpBY2Nlc3MgdG8gdGhlIEdpdEh1YiBBUEkgaXMgcmVxdWlyZWQgdG8gcnVuIHRoZSBidWlsZC4gQWNjZXNzIGlzIHN1cHBvcnRlZCB0aHJvdWdoIFtiYXNpYyBhdXRoZW50aWNhdGlvbl0oaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vcmVzdC9ndWlkZXMvZ2V0dGluZy1zdGFydGVkLXdpdGgtdGhlLXJlc3QtYXBpI2F1dGhlbnRpY2F0aW9uKSB1c2luZyBhIEdpdEh1YiB1c2VybmFtZSBhbmQgYSBbcGVyc29uYWwgYWNjZXNzIHRva2VuXShodHRwczovL2dpdGh1Yi5jb20vc2V0dGluZ3MvdG9rZW5zL25ldykgYXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLgoKVGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgYXJlIHRoZXJlZm9yZSByZXF1aXJlZCB0byBydW4gdGhlIGJ1aWxkOgoKfCBOYW1lICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBHSF9BUElfVVNFUk5BTUUgICAgICAgICAgfCBHaXRIdWIgdXNlcm5hbWUgdG8gYWNjZXNzIHRoZSBHaXRIdWIgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBHSF9BUElfVE9LRU4gICAgICAgICAgICAgfCBPQXV0aC9QZXJzb25hbCBBY2Nlc3MgVG9rZW4gdG8gYWNjZXNzIHRoZSBHaXRIdWIgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBHSF9BUElfQ09OQ1VSUkVOQ1lfVE9LRU4gfCBOdW1iZXIgb2Ygc2ltdWx0YW5lb3VzIGNvbm5lY3Rpb25zIHRvIHRoZSBHaXRIdWIgQVBJLiBSZWNvbW1lbmRlZCB2YWx1ZSBpcyAyLjxicj5WYWx1ZXMgZ3JlYXRlciB0aGFuIDIgYXBwZWFyIHRvIHJlc3VsdCBpbiBjb25uZWN0aW9ucyBiZWluZyB0aHJvdHRsZWQgYW5kIHRoZSBBUEkgcmV0dXJuaW5nIGEgYDQwM2AuIHwKCj4gKipZb3UgbXVzdCBleHBvcnQgdGhlc2UgYmVmb3JlIHJ1bm5pbmcgZWl0aGVyIG9mIHRoZSBkYXRhIGNvbGxlY3Rpb24gYnVpbGRzLioqCgpXZSd2ZSB1c2VkIGN1c3RvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIEdpdEh1YiBBUEkgYWNjZXNzIHJhdGhlciB0aGFuIGRlZmF1bHQgR2l0SHViIHZhcmlhYmxlcyBwcm92aWRlZCBieSBBY3Rpb25zLiBUaGlzIHByb3ZpZGVzIGJvdGggYSBzZXBhcmF0aW9uLW9mLWNvbmNlcm5zIGJldHdlZW4gYWNjZXNzIGNvbnRyb2xzIGFuZCB0aGUgYnVpbGQgbWVjaGFuaXNtIGFuZCBlbmFibGVzIGhpZ2hlciByYXRlIGxpbWl0cy4KCj4gTm90ZTogV2UgcGxhbiB0byBpbnRyb2R1Y2UgYGRvdGVudmAgdG8gaGVscCB3aXRoIHRoZSBzZXR0aW5nIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcy4KCiMjIyBGdWxsIEJ1aWxkCgpUaGUgZnVsbCBidWlsZCB0YWtlcyB0aGUgZm9sbG93aW5nIGFwcHJvYWNoOgoKLSBSZXRyaWV2ZSBlYWNoIHRvb2xpbmcgc291cmNlLCBpbmNsdWRpbmcgdGhlIGV4aXN0aW5nIGxpc3QgYXQgW2BzcmMvX2RhdGEvdG9vbHMueWFtbGBdKHNyYy9fZGF0YS90b29scy55YW1sKS4KLSBDb21iaW5lIHNvdXJjZSBkYXRhIGJhc2VkIG9uIHJlcG9zaXRvcnkgbmFtZS4KLSBOb3JtYWxpc2UgcHJvcGVydHkgbmFtZXMgYWNyb3NzIHNvdXJjZXMgdXNpbmcgc2ltcGxlIHN0YXRpc3RpY3MgKFPDuHJlbnNlbuKAk0RpY2UsIERhbWVyYXXigJNMZXZlbnNodGVpbiBkaXN0YW5jZSkuCi0gR2V0IHJlcG9zaXRvcnkgbWV0YWRhdGEgZnJvbSBHaXRIdWIuCi0gQ2F0ZWdvcmlzZSB0aGUgdG9vbHMgdXNpbmcgQmF5ZXNpYW4gc3RhdGlzdGljcy4KLSBXcml0ZSB0byBbYHNyYy9fZGF0YS90b29scy55YW1sYF0oc3JjL19kYXRhL3Rvb2xzLnlhbWwpLgoKQ3VycmVudGx5IHRoaXMgYnVpbGQgaXMgc2NoZWR1bGVkIHVzaW5nIFtHaXRIdWIgQWN0aW9uc10oLmdpdGh1Yi93b3JrZmxvd3MvZnVsbC55YW1sKSBhbmQgcnVucyBvbmNlIGEgd2VlayBvbiBTdW5kYXkuCgpUaGUgc2NoZWR1bGUgd2lsbCBiZSByZXZpZXdlZCBhcyB3ZSBjb2xsZWN0IGRhdGEgdG8gc2VlIGlmIGV4ZWN1dGluZyBpdCB3aXRoIGdyZWF0ZXIgZnJlcXVlbmN5IHdvdWxkIGJlIGJlbmVmaWNpYWwuCgpUbyBydW4gdGhlIGZ1bGwgYnVpbGQgbG9jYWxseToKCmBgYGJhc2gKeWFybiBpbnN0YWxsCgpHSF9BUElfVVNFUk5BTUU9PHVzZXJuYW1lPiBHSF9BUElfVE9LRU49PHBlcnNvbmFsLWFjY2Vzcy10b2tlbj4gR0hfQVBfQ09OQ1VSUkVOQ1lfTElNSVQ9MgpleHBvcnQgR0hfQVBJX1VTRVJOQU1FIEdIX0FQSV9UT0tFTiBHSF9BUF9DT05DVVJSRU5DWV9MSU1JVAp5YXJuIHJ1biBidWlsZDpkYXRhOmZ1bGwKYGBgCgojIyMgTWV0YWRhdGEgVXBkYXRlCgpUaGUgZ29hbCBvZiB0aGUgbWV0YWRhdGEgdXBkYXRlIGlzIHRvIHByb3ZpZGUgY29uc2lzdGVudCByZXBvc2l0b3J5IG1ldGFkYXRhIHdpdGhvdXQgc291cmNpbmcgbmV3IHRvb2xpbmc6CgotIFJlYWQgdGhlIGV4aXN0aW5nIGxpc3QgYXQgW2BzcmMvX2RhdGEvdG9vbHMueWFtbGBdKHNyYy9fZGF0YS90b29scy55YW1sKS4KLSBHZXQgcmVwb3NpdG9yeSBtZXRhZGF0YSBmcm9tIEdpdEh1Yi4KLSBXcml0ZSB0byBbYHNyYy9fZGF0YS90b29scy55YW1sYF0oc3JjL19kYXRhL3Rvb2xzLnlhbWwpLgoKQ3VycmVudGx5IHRoaXMgYnVpbGQgaXMgc2NoZWR1bGVkIHVzaW5nIFtHaXRIdWIgQWN0aW9uc10oLmdpdGh1Yi93b3JrZmxvd3MvbWV0YWRhdGEueWFtbCkgYW5kIHJ1bnMgZXZlcnkgZGF5LgoKVGhlIHNjaGVkdWxlZCB3aWxsIGJlIHJldmlld2VkIGFzIHdlIGNvbGxlY3QgZGF0YSB0byBzZWUgaWYgZXhlY3V0aW5nIGl0IHdpdGggZ3JlYXRlciBmcmVxdWVuY3kgd291bGQgYmUgYmVuZWZpY2lhbC4KClRvIHJ1biB0aGUgbWV0YWRhdGEgYnVpbGQgbG9jYWxseToKCmBgYGJhc2gKIyBJZiB5b3UgaGF2ZW4ndCBkb25lIHRoaXMgYWxyZWFkeQp5YXJuIGluc3RhbGwKCiMgSWYgeW91IGhhdmVuJ3QgZG9uZSB0aGlzIGFscmVhZHkKR0hfQVBJX1VTRVJOQU1FPTx1c2VybmFtZT4gR0hfQVBJX1RPS0VOPTxwZXJzb25hbC1hY2Nlc3MtdG9rZW4+IEdIX0FQX0NPTkNVUlJFTkNZX0xJTUlUPTIKCiMgSWYgeW91IGhhdmVuJ3QgZG9uZSB0aGlzIGFscmVhZHkKZXhwb3J0IEdIX0FQSV9VU0VSTkFNRSBHSF9BUElfVE9LRU4gR0hfQVBfQ09OQ1VSUkVOQ1lfTElNSVQKCnlhcm4gcnVuIGJ1aWxkOm1ldGFkYXRhCmBgYAoKIyMjIFRlc3RpbmcgTG9jYWxseQoKVG8gdGVzdCBsb2NhbGx5IHlvdSBjYW4gY2xvbmUgb3IgZm9yayB0aGUgVG9vbGluZyByZXBvc2l0b3J5IGFuZCBjcmVhdGUgeW91cnNlbGYgYSBgLmVudmAgZmlsZSB0aGF0IG1lZXRzIHlvdXIgbmVlZHMuIEZvciBleGFtcGxlOgoKYGBgdGV4dApleHBvcnQgR0hfQVBJX1VTRVJOQU1FPTx5b3VyIEdpdEh1YiB1c2VybmFtZT4KZXhwb3J0IEdIX0FQSV9UT0tFTj08eW91ciBHaXRIdWIgcGVyc29uYWwgYWNjZXNzIHRva2VuPgpleHBvcnQgR0hfQVBJX0NPTkNVUlJFTkNZX0xJTUlUPTIKZXhwb3J0IFRPT0xJTkdfUkVQT1NJVE9SWV9PV05FUj08eW91ciBHaXRIdWIgb3JnYW5pc2F0aW9uIG9yIHVzZXJuYW1lPgpleHBvcnQgVE9PTElOR19SRVBPU0lUT1JZX1JFUE9fTkFNRT1Ub29saW5nCmBgYAoKV2l0aCB0aGlzIGluLWhhbmQgdGhlcmUncyBhIGJ1bmNoIG9mIG9wdGlvbnMgdG8gc2VuZCBpbnRvIGVpdGhlciBgeWFybiBydW4gYnVpbGQ6ZnVsbGAgb3IgYHlhcm4gcnVuIGJ1aWxkOm1ldGFkYXRhYDoKCi0gYC0tbWV0YWRhdGFgOiBJZiB5b3UgZG9uJ3Qgd2FudCB0byBydW4gZXZlcnl0aGluZyB5b3UgY2FuIGNoYW5nZSB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGRyaXZlcyB0aGUgYnVpbGQgKG1vcmUgb24gdGhpcyBiZWxvdykuCi0gYC0tZW52LWZpbGVgOiBTdXBwbHkgYW4gYWx0ZXJuYXRpdmUgLmVudiBmaWxlIGFzIGRlc2NyaWJlZCBhYm92ZS4KLSBgLS1vdXRwdXQtZGlyYDogQ2hhbmdlIHdoZXJlIHlvdSB3cml0ZSB0aGUgYHRvb2xzLnlhbWxgIGZpbGUuCi0gYC0tZHJ5LXJ1bmA6IERvbid0IGRvIGRlc3RydWN0aXZlIHRoaW5ncyBsaWtlIGNsb3NpbmcgaXNzdWVzIChhY3R1YWxseSB0aGlzIGlzIGFsbCBpdCBkb2VzIHJpZ2h0IG5vdykuCgojIyMjIENvbmZpZ3VyYXRpb24gRmlsZQoKVGhlIGJ1aWxkIGlzIGRyaXZlbiBieSBhIGNvbmZpZ3VyYXRpb24gZmlsZSwgdGhlIGRlZmF1bHQgYmVpbmcgW2BndWxwZmlsZS5qcy9tZXRhZGF0YS5qc29uYF0oZ3VscGZpbGUuanMvbWV0YWRhdGEuanNvbikgd2hpY2ggaXMgdmFsaWRhdGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgYnVpbGQgdXNpbmcgdGhlIEpTT04gU2NoZW1hIGZvdW5kIGluIFtgdmFsaWRhdGUtbWV0YWRhdGEuanNgXShsaWIvZGF0YS90cmFuc2Zvcm0vdmFsaWRhdGUtbWV0YWRhdGEuanMpLgoKVGhlIHB1cnBvc2Ugb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyB0byBkZWZpbmUgd2hhdCBkYXRhIHNvdXJjZXMgYXJlIGNvbGxlY3RlZC4gSXQgY29udGFpbnMgYW4gYXJyYXkgb2Ygb2JqZWN0cywgZWFjaCB3aXRoIHR3byBtYW5kYXRvcnkgcHJvcGVydGllczoKCi0gYHRpdGxlYDogVGhlIG5hbWUgb2YgZGF0YSBwcm9jZXNzb3IuIFRoaXMgaXMgcmVjb3JkZWQgaW4gYHRvb2xzLnlhbWxgIHRvIGlkZW50aWZ5IHdoaWNoIHByb2Nlc3NvciBwaWNrZWQgdGhlIGRhdGEgdXAuCi0gYHByb2Nlc3NvcmA6IFBhdGggdG8gYSBKYXZhU2NyaXB0IGxpYnJhcnkgdGhhdCBpbXBsZW1lbnRzIHRoZSBkYXRhIGNvbGxlY3Rpb24gbG9naWMuCgpPdGhlciBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBkYXRhIHNvdXJjZSBjYW4gYmUgZGVmaW5lZCBhcyByZXF1aXJlZC4KClRoZXNlIGRhdGEgcHJvY2Vzc29ycyBjb2xsZWN0IGRhdGEgYW5kIHBhc3MgaXQgaW50byB0aGUgR3VscCBwaXBlbGluZSBmb3IgcHJvY2Vzc2luZy4gVGhhdCdzIGFsbCB0aGV5IGRvIC0gZXZlcnl0aGluZyBlbHNlIGlzIGRvbmUgZG93bnN0cmVhbSBpbiB0aGUgSmF2YVNjcmlwdCBsaWJyYXJpZXMgZm91bmQgaW4gdGhlIFtgdHJhbnNmb3JtYF0obGliL2RhdGEvdHJhbnNmb3JtLykgZGlyZWN0b3J5LgoKSWYgeW91IHdhbnQgdG8gdGVzdCBvbmx5IGEgc3Vic2V0IG9mIGRhdGEgc291cmNlcyBpbiBpc29sYXRpb24geW91IGNhbiBjcmVhdGUgeW91ciBvd24gY29uZmlndXJhdGlvbiBmaWxlLiBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSB0ZXN0aW5nIHRoZSBHaXRIdWIgaXNzdWUtc291cmNlZCBkYXRhIHByb2Nlc3NvciB5b3UgY2FuIGRlZmluZSBqdXN0IHRoaXMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSAtIHlvdSdkIG9ubHkgZ2V0IHRob3NlIHRvb2xzIGluIHRoZSByZXN1bHRhbnQgYHRvb2xzLnlhbWxgIGZpbGUuCgpZb3Ugc2hvdWxkIGFsc28gY29uc2lkZXIgd2hldGhlciB0byB0ZXN0IHdpdGggYSBzdWJzZXQgb2YgbWFzdGVyIGRhdGEgZnJvbSBgc3JjL19kYXRhL3Rvb2xzLnlhbWxgIChhcyBpdCBpcyB2b2x1bWlub3VzKS4gWW91IGNhbiBlZGl0IHlvdXIgY29uZmlndXJhdGlvbiBmaWxlIHRvIHBvaW50IHNvbWV3aGVyZSBlbHNlIGUuZy46CgpgYGBqc29uCnsKICAidGl0bGUiOiAibWFzdGVyIiwKICAidXJsIjogIjxQYXRoIHRvIHlvdXIgYWx0ZXJuYXRpdmUgdG9vbHMueWFtbCBmaWxlPiIsCiAgInByb2Nlc3NvciI6ICIuLi9wcm9jZXNzb3JzL21hc3Rlci1wcm9jZXNzb3IuanMiCn0KYGBgCgojIyBXZWJzaXRlCgpUaGUgd2Vic2l0ZSBpcyBhIHN0YXRpYyBzaXRlIGJ1aWx0IGZyb20gdGhlIHRvb2xpbmcgZGF0YS4gSXQgaXMgZXhwb3NlZCBieSBHaXRIdWIgUGFnZXMgYW5kIGNhbiBiZSBmb3VuZCBbaGVyZV0oaHR0cHM6Ly90b29scy5vcGVuYXBpcy5vcmcvKS4KClRoZSBkZXNpZ24gb2YgdGhlIHNpdGUgaXMgaW50ZW50aW9uYWxseSAibGVhbiIsIGFuZCBwcm92aWRlcyB0aGUgdG9vbGluZyBsaXN0IGJ5IGNhdGVnb3J5ICh0aGUgY2F0ZWdvcmlzYXRpb24gYmVpbmcgZG9uZSBhcyBkZXNjcmliZWQgW2Fib3ZlXSgjZnVsbC1idWlsZCkpLgoKIyMjIEJ1aWxkCgpUaGUgc2l0ZSB1c2VzIHRoZSBbZWxldmVudHldKGh0dHBzOi8vd3d3LjExdHkuZGV2Lykgc2l0ZSBnZW5lcmF0b3IgYW5kIGlzIHJlYnVpbHQgYWZ0ZXIgZWFjaCBbZnVsbF0oI2Z1bGwtYnVpbGQpIGFuZCBbbWV0YWRhdGFdKCNtZXRhZGF0YS11cGRhdGUpIGJ1aWxkLCB1c2luZyB0aGUgbmV3bHktdXBkYXRlZCBkYXRhIGF0IFtgc3JjL19kYXRhL3Rvb2xzLnlhbWxgXShzcmMvX2RhdGEvdG9vbHMueWFtbCkuCgpUbyBydW4gdGhlIHNpdGUgYnVpbGQgbG9jYWxseToKCmBgYGJhc2gKeWFybiBpbnN0YWxsCnlhcm4gcnVuIGJ1aWxkOnNpdGUKYGBgCgo+IE5vdGUgdGhlIGJ1aWxkIHVzZXMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgYEhPU1RFRF9BVGAgdG8gYWxsb3cgdGhlIHNpdGUgdG8gYmUgZGVwbG95ZWQgdG8gYW4gYWx0ZXJuYXRpdmUgcm9vdCBVUkkgYW5kIHRoZXJlZm9yZSBhbWVuZCB0aGUgIkhvbWUiIGJ1dHRvbi4gVGhpcyBpcyBmb3IgdGhlIGJlbmVmaXQgb2YgR2l0SHViIFBhZ2VzLCB3aGVyZSB0aGUgc2l0ZSBpcyBkZXBsb3llZCB0byBgL1Rvb2xpbmdgLiBVbmxlc3MgeW91IG5lZWQgdG8gbW92ZSBVUkwgdGhlbiBqdXN0IGxlYXZlIHRoaXMgdW5zZXQuCgojIyMgUnVubmluZyBsb2NhbGx5CgpJZiB5b3Ugd2FudCB0byBydW4gdGhlIHNpdGUgbG9jYWxseSBpdCdzIGp1c3QgZGFtbiBzaW1wbGU6CgpgYGBiYXNoCnlhcm4gaW5zdGFsbAp5YXJuIHJ1biBzZXJ2ZQpgYGAKClRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIgaXMgc2V0IHRvIHJlbG9hZCBvbiBjaGFuZ2UuIE5vdyBpc24ndCB0aGF0IGNvbnZlbmllbnQuCgojIyBDb250cmlidXRpbmcKClBsZWFzZSByZWZlciB0byB0aGUgW0NvbnRyaWJ1dGluZyBHdWlkZV0oQ09OVFJJQlVUSU5HLm1kKQo= readmeEtag: '"a9fe682e156cd528675b0389f2ed6b3667ec63ab"' readmeLastModified: Fri, 07 Nov 2025 10:41:30 GMT repositoryId: 448083351 description: >- 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: '2026-02-05T05:06:46Z' language: JavaScript archived: false stars: 159 watchers: 10 forks: 66 owner: OAI logo: https://avatars.githubusercontent.com/u/16343502?v=4 repoEtag: '"53b79419ca300ee714bd4a00ffa957cbc59f3d60a3ef71353d16931a7fca4954"' repoLastModified: Thu, 05 Feb 2026 05:06:46 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/oai/tooling - source: openapi3 tags repository: https://github.com/networknt/light-rest-4j v3: true repositoryMetadata: base64Readme: >- QSBSRVNUZnVsIEFQSSBvciBzZXJ2aWNlIGZyYW1ld29yayBidWlsdCBvbiB0b3Agb2YgbGlnaHQtNGoKCltTdGFjayBPdmVyZmxvd10oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvdGFnZ2VkL2xpZ2h0LTRqKSB8CltHb29nbGUgR3JvdXBdKGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZm9ydW0vIyFmb3J1bS9saWdodC00aikgfApbR2l0dGVyIENoYXRdKGh0dHBzOi8vZ2l0dGVyLmltL25ldHdvcmtudC9saWdodC1yZXN0LTRqKSB8CltTdWJyZWRkaXRdKGh0dHBzOi8vd3d3LnJlZGRpdC5jb20vci9saWdodGFwaS8pIHwKW1lvdXR1YmUgQ2hhbm5lbF0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vY2hhbm5lbC9VQ0hDUk1XSlZYdzhpQjd6S3hGNTVCeXcpIHwKW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jLm5ldHdvcmtudC5jb20vc3R5bGUvbGlnaHQtcmVzdC00ai8pIHwKW0NvbnRyaWJ1dGlvbiBHdWlkZV0oaHR0cHM6Ly9kb2MubmV0d29ya250LmNvbS9jb250cmlidXRlLykgfAoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvbmV0d29ya250L2xpZ2h0LXJlc3QtNGouc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvbmV0d29ya250L2xpZ2h0LXJlc3QtNGopIFshW2NvZGVjb3YuaW9dKGh0dHBzOi8vY29kZWNvdi5pby9naXRodWIvbmV0d29ya250L2xpZ2h0LXJlc3QtNGovY292ZXJhZ2Uuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL2NvZGVjb3YuaW8vZ2l0aHViL25ldHdvcmtudC9saWdodC1yZXN0LTRqP2JyYW5jaD1tYXN0ZXIpCgpUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgbWlkZGxld2FyZSBoYW5kbGVycyB0aGF0IHdvcmsgd2l0aCBlaXRoZXIgU3dhZ2dlciAyLjAgb3IgT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbi4gSWYgeW91IGFyZSBzdGFydGluZyBhIGJyYW5kIG5ldyBwcm9qZWN0LCBpdCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdXNpbmcgdGhlIE9wZW5BUEkgMy4wIHNwZWNpZmljYXRpb24gZm9yIHlvdXIgZGVzaWduLgoKVG8gZ2V0IHN0YXJ0ZWQgeW91ciBmaXJzdCBwcm9qZWN0LCBwbGVhc2UgdmlzaXQgdGhlIFtnZXR0aW5nIHN0YXJ0ZWRdKGh0dHBzOi8vZG9jLm5ldHdvcmtudC5jb20vZ2V0dGluZy1zdGFydGVkL2xpZ2h0LXJlc3QtNGovKSB0byB3YWxrIHRocm91Z2ggdGhlIHByb2Nlc3MuCgpGb3IgZG9jdW1lbnRhdGlvbiBvbiB0aGUgaGFuZGxlcnMsIHBsZWFzZSB2aXNpdCB0aGUgW3JlZmVyZW5jZSBkb2N1bWVudF0oaHR0cHM6Ly9kb2MubmV0d29ya250LmNvbS9zdHlsZS9saWdodC1yZXN0LTRqLykuCgpUaGVyZSBhcmUgYWxzbyBudW1lcmljIFt0dXRvcmlhbHNdKGh0dHBzOi8vZG9jLm5ldHdvcmtudC5jb20vdHV0b3JpYWwvcmVzdC8pIHRvIHNob3cgdXNlcnMgaG93IHRvIGJ1aWxkIFJlc3RmdWwgc2VydmljZXMuCg== readmeEtag: '"db3d10c58fce6adb30f08d263d0b14a71b36bf06"' readmeLastModified: Thu, 15 Aug 2024 15:56:25 GMT repositoryId: 79723681 description: >- A RESTful framework built on top of light-4j with both Swagger 2.0 and OpenAPI 3.0 supports created: '2017-01-22T14:48:44Z' updated: '2026-02-03T01:08:22Z' language: Java archived: false stars: 121 watchers: 24 forks: 31 owner: networknt logo: https://avatars.githubusercontent.com/u/8740739?v=4 license: Apache-2.0 repoEtag: '"e3268566df742075105c8ff1de47d70d344edcc35f991af569ba2a7de66fc210"' repoLastModified: Tue, 03 Feb 2026 01:08:22 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: 5066b11d537986b50ebc1d3f7a7d721f - source: openapi3 tags repository: https://github.com/tobilg/api2html v3: true repositoryMetadata: base64Readme: >- IyBhcGkyaHRtbApBIENMSSB0b29sIHRvIHRyYW5zZm9ybSBTd2FnZ2VyL09wZW5BUEkvQXN5bmNBUEkgZG9jcyB0byBiZWF1dGlmdWwgSFRNTCBwYWdlcyB2aWEgW1NoaW5zXShodHRwczovL2dpdGh1Yi5jb20vbWVybWFkZS9zaGlucykvW1dpZGRlcnNoaW5zXShodHRwczovL2dpdGh1Yi5jb20vbWVybWFkZS93aWRkZXJzaGlucykuCgpZb3UgY2FuIGZpbmQgYW4gZXhhbXBsZSBnZW5lcmF0ZWQgcGFnZSBhdCBbaHR0cDovL3RvYmlsZy5naXRodWIuaW8vYXBpMmh0bWwvcGV0c3RvcmUvXShodHRwOi8vdG9iaWxnLmdpdGh1Yi5pby9hcGkyaHRtbC9wZXRzdG9yZS8pLgoKIyMgSW5zdGFsbGF0aW9uCgpUbyBpbnN0YWxsIGBhcGkyaHRtbGAgZ2xvYmFsbHksIHVzZQoKYGBgYmFzaAokIG5wbSBpIGFwaTJodG1sIC1nCmBgYAoKWW91IGNhbiBhbHNvIGluc3RhbGwgaXQgdG8gdXNlIGFzIGBkZXZEZXBlbmRlbmNpZXNgLCBhbmQgdXNlIGl0IGxvY2FsbHkgdmlhIGEgYG5wbSBydW5gIHRhc2sgaW4geW91ciBgcGFja2FnZS5qc29uYDoKCmBgYGJhc2gKJCBucG0gaSBhcGkyaHRtbCAtLXNhdmUtZGV2CmBgYAoKVXNhZ2UgaW4gYHBhY2thZ2UuanNvbmA6CgpgYGBqYXZhc2NyaXB0CnsKICAic2NyaXB0cyI6IHsKICAgICJhcGktZG9jcyI6ICJub2RlX21vZHVsZXMvLmJpbi9hcGkyaHRtbCAtbyBkb2NzL2FwaS5odG1sIC1sIHNoZWxsLGphdmFzY3JpcHQtLW5vZGVqcyBkb2NzL29wZW5hcGkvYXBpLnltbCIKICB9Cn0KYGBgCgojIyBVc2FnZQoKIyMjIEF2YWlsYWJsZSBjb21tYW5kcwoKYGBgYmFzaAokIGFwaTJodG1sIC0taGVscCAKVXNhZ2U6IGFwaTJodG1sIFtvcHRpb25zXSA8c291cmNlUGF0aD4KICAKICBPcHRpb25zOgogICAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgICAgICBvdXRwdXQgdGhlIHZlcnNpb24gbnVtYmVyCiAgICAtciwgLS1yZXNvbHZlIDxzb3VyY2U+ICAgICAgICAgIHJlc29sdmUgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCBzb3VyY2Ugc2hvdWxkIGJlIGEgdXJsIG9yIGEgcGF0aAogICAgLW8sIC0tb3V0IDxvdXRwdXRQYXRoPiAgICAgICAgICBvdXRwdXQgcGF0aCBmb3IgdGhlIHJlc3VsdGluZyBIVE1MIGRvY3VtZW50CiAgICAtdCwgLS10aGVtZSA8dGhlbWVOYW1lPiAgICAgICAgIHRoZW1lIHRvIHVzZSAoc2VlIGh0dHBzOi8vaGlnaGxpZ2h0anMub3JnL3N0YXRpYy9kZW1vLyBmb3IgYSBsaXN0KQogICAgLWMsIC0tY3VzdG9tTG9nbyA8bG9nb1BhdGg+ICAgICB1c2UgY3VzdG9tIGxvZ28gYXQgdGhlIHJlc3BlY3RpdmUgcGF0aAogICAgLXUsIC0tY3VzdG9tTG9nb1VybCA8bG9nb1VSTD4gICB1cmwgZm9yIHRoZSBjdXN0b20gbG9nbyB0byBwb2ludCB0bwogICAgLUMsIC0tY3VzdG9tQ3NzICAgICAgICAgICAgICAgICB1c2UgY3VzdG9tIGNzcwogICAgLVAsIC0tY3VzdG9tQ3NzUGF0aCA8Y3NzUGF0aD4gICB1c2UgY3VzdG9tIGNzcyBmaWxlCiAgICAtaSwgLS1pbmNsdWRlcyA8aW5jbHVkZXNMaXN0PiAgIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIHRvIGluY2x1ZGUKICAgIC1sLCAtLWxhbmd1YWdlcyA8bGFuZ3VhZ2VMaXN0PiAgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbGFuZ3VhZ2VzIHRvIHVzZSBmb3IgdGhlIGxhbmd1YWdlIHRhYnMgKG91dCBvZiBzaGVsbCwgaHR0cCwgamF2YXNjcmlwdCwgamF2YXNjcmlwdC0tbm9kZWpzLCBydWJ5LCBweXRob24sIGphdmEsIGdvKQogICAgLU4sIC0tbm9Db2RlU2FtcGxlcyAgICAgICAgICAgICBvbWl0IGFsbCBjb2RlIHNhbXBsZXMgKG92ZXJyaWRlcyAtLWxhbmd1YWdlcykKICAgIC1zLCAtLXNlYXJjaCAgICAgICAgICAgICAgICAgICAgZW5hYmxlIHNlYXJjaAogICAgLVMsIC0tc3VtbWFyeSAgICAgICAgICAgICAgICAgICB1c2Ugc3VtbWFyeSBpbnN0ZWFkIG9mIG9wZXJhdGlvbklkIGZvciBUT0MKICAgIC1iLCAtLW9taXRCb2R5ICAgICAgICAgICAgICAgICAgT21pdCB0b3AtbGV2ZWwgZmFrZSBib2R5IHBhcmFtZXRlciBvYmplY3QKICAgIC1SLCAtLXJhdyAgICAgICAgICAgICAgICAgICAgICAgU2hvdyByYXcgc2NoZW1hcyBpbiBzYW1wbGVzLCBub3QgZXhhbXBsZSB2YWx1ZXMKICAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IHVzYWdlIGluZm9ybWF0aW9uCmBgYAoKIyMjIFVzYWdlIGV4YW1wbGVzCgojIyMjIFJlbmRlciBPcGVuQVBJIHYzIGZpbGUgYXMgSFRNTAoKVGhpcyB3aWxsIHJlbmRlciB0aGUgYGFwaS55bWxgIGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFzIGBteWFwaS5odG1sYCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KCmBgYGJhc2gKJCBhcGkyaHRtbCAtbyBteWFwaS5odG1sIG15YXBpLnltbApgYGAKCiMjIyMgVXNlIGN1c3RvbSBsb2dvCgpUaGlzIHdpbGwgcmVuZGVyIHRoZSBgYXBpLnltbGAgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgYXMgYG15YXBpLmh0bWxgIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LCBhbmQgdXNlIHRoZSBjdXN0b20gbG9nbyBgbXlsb2dvLnBuZ2AuCgpgYGBiYXNoCiQgYXBpMmh0bWwgLW8gbXlhcGkuaHRtbCAtYyBteWxvZ28ucG5nIG15YXBpLnltbApgYGAKCiMjIyMgRGVmaW5lIHdoaWNoIGxhbmd1YWdlIGV4YW1wbGVzIHNob3VsZCBiZSBnZW5lcmF0ZWQKClRoaXMgd2lsbCByZW5kZXIgdGhlIGBhcGkueW1sYCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhcyBgbXlhcGkuaHRtbGAgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnksIGFuZCB1c2UgYGdvYCBhbmQgYGphdmFzY3JpcHRgIGV4YW1wbGVzLgoKYGBgYmFzaAokIGFwaTJodG1sIC1vIG15YXBpLmh0bWwgLWwgZ28samF2YXNjcmlwdCBteWFwaS55bWwKYGBgCgojIyMjIFVzZSBkaWZmZXJlbnQgc3ludGF4IGhpZ2hsaWdodGVyCgpUaGlzIHdpbGwgcmVuZGVyIHRoZSBgYXBpLnltbGAgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgYXMgYG15YXBpLmh0bWxgIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LCBhbmQgdXNlIGBnb2AgYW5kIGBqYXZhc2NyaXB0YCBleGFtcGxlcywgYXMgd2VsbCBhcyBhIGRpZmZlcmVudCBzeW50YXggaGlnbGlnaHRlciBmcm9tIFtoaWdobGlnaHQuanNdKGh0dHBzOi8vaGlnaGxpZ2h0anMub3JnL3N0YXRpYy9kZW1vLykuCgpgYGBiYXNoCiQgYXBpMmh0bWwgLW8gbXlhcGkuaHRtbCAtbCBnbyxqYXZhc2NyaXB0IC10IGFydGEgbXlhcGkueW1sCmBgYAoKIyMjIyBSZXNvbHZlIGV4dGVybmFsIGRlcGVuZGVuY2llcwoKSWYgeW91IGFkZCByZWZzIHRvIGV4dGVybmFsIGZpbGVzIGluIHlvdXIgc291cmNlIGZpbGUsIHlvdSBjYW4gZW5hYmxlIHRoZW0gYnkgdXNpbmcgYC1yIDxzb3VyY2U+YC4gVGhlIGZvbGxvd2luZyBjb21tYW5kIHdpbGwgcmVzb2x2ZSBhbGwgeW91ciByZWxhdGl2ZSBpbXBvcnRzIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKYGBgYmFzaAokIGFwaTJodG1sIC1vIG15YXBpLmh0bWwgLXIgLi8gbXlhcGkueW1sCmBgYAo= readmeEtag: '"2c38b17a93ff4ff6c74a44a2c25018e74ef8d708"' readmeLastModified: Thu, 21 Sep 2023 07:04:29 GMT repositoryId: 133497107 description: >- A CLI tool to transform Swagger/OpenAPI/AsyncAPI docs to beautiful HTML pages via Shins/Widdershins. created: '2018-05-15T10:03:41Z' updated: '2025-05-15T12:10:26Z' language: JavaScript archived: false stars: 120 watchers: 3 forks: 25 owner: tobilg logo: https://avatars.githubusercontent.com/u/1841985?v=4 license: MIT repoEtag: '"9e9df3db44ce06492837435b0ed42ce00749d240b60cc3dbf0f816d8fe0f74d0"' repoLastModified: Thu, 15 May 2025 12:10:26 GMT foundInMaster: true category: - Documentation - Parsers id: 90756f66a4bf98b61166ca0c0cde5583 - source: openapi3 tags repository: https://github.com/snok/drf-openapi-tester v3: true repositoryMetadata: base64Readme: >- WyFbUHlQSV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvZHJmLW9wZW5hcGktdGVzdGVyLnN2ZyldKGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9kcmYtb3BlbmFwaS10ZXN0ZXIvKQpbIVtDb3ZlcmFnZV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3Nub2svZHJmLW9wZW5hcGktdGVzdGVyL2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3Nub2svZHJmLW9wZW5hcGktdGVzdGVyKQpbIVtQeXRob24gdmVyc2lvbnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvUHl0aG9uLTMuNyUyQi1ibHVlKV0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2RyZi1vcGVuYXBpLXRlc3Rlci8pClshW0RqYW5nbyB2ZXJzaW9uc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9EamFuZ28tMy4wJTJCLWJsdWUpXShodHRwczovL3B5cGkub3JnL3Byb2plY3QvZHJmLW9wZW5hcGktdGVzdGVyLykKCgojIERSRiBPcGVuQVBJIFRlc3RlcgoKVGhpcyBpcyBhIHRlc3QgdXRpbGl0eSB0byB2YWxpZGF0ZSBEUkYgVGVzdCBSZXNwb25zZXMgYWdhaW5zdCBPcGVuQVBJIDIgYW5kIDMgc2NoZW1hLiBJdCBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3I6CgotIE9wZW5BUEkgMi8zIHlhbWwgb3IganNvbiBzY2hlbWEgZmlsZXMuCi0gT3BlbkFQSSAyIHNjaGVtYXMgY3JlYXRlZCB3aXRoIFtkcmYteWFzZ10oaHR0cHM6Ly9naXRodWIuY29tL2F4bnNhbjEyL2RyZi15YXNnKS4KLSBPcGVuQVBJIDMgc2NoZW1hcyBjcmVhdGVkIHdpdGggW2RyZi1zcGVjdGFjdWxhcl0oaHR0cHM6Ly9naXRodWIuY29tL3RmcmFuemVsL2RyZi1zcGVjdGFjdWxhcikuCgo+IFRoaXMgcHJvamVjdCBpcyBubyBsb25nZXIgbWFpbnRhaW5lZC4gSWYgeW91IHdhbnQgdG8gdXNlIGl0LCBjb25zaWRlciB0YWtpbmcgYSBsb29rIGF0IFt0aGlzIGZvcmtdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRpY2FyZGVuYXMvZHJmLW9wZW5hcGktdGVzdGVyLykgd2hpY2ggbWlnaHQgc3RpbGwgYmUuCgojIyBJbnN0YWxsYXRpb24KCmBgYHNoZWxsIHNjcmlwdApwaXAgaW5zdGFsbCBkcmYtb3BlbmFwaS10ZXN0ZXIKYGBgCgojIyBVc2FnZQoKSW5zdGFudGlhdGUgb25lIG9yIG1vcmUgaW5zdGFuY2VzIG9mIGBTY2hlbWFUZXN0ZXJgOgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaV90ZXN0ZXIgaW1wb3J0IFNjaGVtYVRlc3RlcgoKc2NoZW1hX3Rlc3RlciA9IFNjaGVtYVRlc3RlcigpCmBgYAoKSWYgeW91IGFyZSB1c2luZyBlaXRoZXIgW2RyZi15YXNnXShodHRwczovL2dpdGh1Yi5jb20vYXhuc2FuMTIvZHJmLXlhc2cpCm9yIFtkcmYtc3BlY3RhY3VsYXJdKGh0dHBzOi8vZ2l0aHViLmNvbS90ZnJhbnplbC9kcmYtc3BlY3RhY3VsYXIpIHRoaXMgd2lsbCBiZSBhdXRvLWRldGVjdGVkLCBhbmQgdGhlIHNjaGVtYSB3aWxsIGJlCmxvYWRlZCBieSB0aGUgYFNjaGVtYVRlc3RlcmAgYXV0b21hdGljYWxseS4KCklmIHlvdSBhcmUgdXNpbmcgc2NoZW1hIGZpbGVzLCB5b3Ugd2lsbCBuZWVkIHRvIHBhc3MgdGhlIGZpbGUgcGF0aDoKCmBgYHB5dGhvbgpmcm9tIG9wZW5hcGlfdGVzdGVyIGltcG9ydCBTY2hlbWFUZXN0ZXIKCiMgcGF0aCBzaG91bGQgYmUgYSBzdHJpbmcKc2NoZW1hX3Rlc3RlciA9IFNjaGVtYVRlc3RlcihzY2hlbWFfZmlsZV9wYXRoPSIuL3NjaGVtYXMvcHVibGlzaGVkU3BlY3MueWFtbCIpCmBgYAoKT25jZSB5b3UndmUgaW5zdGFudGlhdGVkIGEgdGVzdGVyLCB5b3UgY2FuIHVzZSBpdCB0byB0ZXN0IHJlc3BvbnNlczoKCmBgYHB5dGhvbgpmcm9tIG9wZW5hcGlfdGVzdGVyLnNjaGVtYV90ZXN0ZXIgaW1wb3J0IFNjaGVtYVRlc3RlcgoKc2NoZW1hX3Rlc3RlciA9IFNjaGVtYVRlc3RlcigpCgoKZGVmIHRlc3RfcmVzcG9uc2VfZG9jdW1lbnRhdGlvbihjbGllbnQpOgogICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KCdhcGkvdjEvdGVzdC8xJykKICAgIGFzc2VydCByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDAKICAgIHNjaGVtYV90ZXN0ZXIudmFsaWRhdGVfcmVzcG9uc2UocmVzcG9uc2U9cmVzcG9uc2UpCmBgYAoKSWYgeW91IGFyZSB1c2luZyB0aGUgRGphbmdvIHRlc3RpbmcgZnJhbWV3b3JrLCB5b3UgY2FuIGNyZWF0ZSBhIGJhc2UgYEFQSVRlc3RDYXNlYCB0aGF0IGluY29ycG9yYXRlcyBzY2hlbWEgdmFsaWRhdGlvbjoKCmBgYHB5dGhvbgpmcm9tIHJlc3RfZnJhbWV3b3JrLnJlc3BvbnNlIGltcG9ydCBSZXNwb25zZQpmcm9tIHJlc3RfZnJhbWV3b3JrLnRlc3QgaW1wb3J0IEFQSVRlc3RDYXNlCgpmcm9tIG9wZW5hcGlfdGVzdGVyLnNjaGVtYV90ZXN0ZXIgaW1wb3J0IFNjaGVtYVRlc3RlcgoKc2NoZW1hX3Rlc3RlciA9IFNjaGVtYVRlc3RlcigpCgoKY2xhc3MgQmFzZUFQSVRlc3RDYXNlKEFQSVRlc3RDYXNlKToKICAgICIiIiBCYXNlIHRlc3QgY2xhc3MgZm9yIGFwaSB2aWV3cyBpbmNsdWRpbmcgc2NoZW1hIHZhbGlkYXRpb24gIiIiCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIGFzc2VydFJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSwgKiprd2FyZ3MpIC0+IE5vbmU6CiAgICAgICAgIiIiIGhlbHBlciB0byBydW4gdmFsaWRhdGVfcmVzcG9uc2UgYW5kIHBhc3Mga3dhcmdzIHRvIGl0ICIiIgogICAgICAgIHNjaGVtYV90ZXN0ZXIudmFsaWRhdGVfcmVzcG9uc2UocmVzcG9uc2U9cmVzcG9uc2UsICoqa3dhcmdzKQpgYGAKClRoZW4gdXNlIGl0IGluIGEgdGVzdCBmaWxlOgoKYGBgcHl0aG9uCmZyb20gc2hhcmVkLnRlc3RpbmcgaW1wb3J0IEJhc2VBUElUZXN0Q2FzZQoKCmNsYXNzIE15QVBJVGVzdHMoQmFzZUFQSVRlc3RDYXNlKToKICAgIGRlZiB0ZXN0X3NvbWVfdmlldyhzZWxmKToKICAgICAgICByZXNwb25zZSA9IHNlbGYuY2xpZW50LmdldCgiLi4uIikKICAgICAgICBzZWxmLmFzc2VydFJlc3BvbnNlKHJlc3BvbnNlKQpgYGAKCiMjIE9wdGlvbnMKCllvdSBjYW4gcGFzcyBvcHRpb25zIGVpdGhlciBnbG9iYWxseSwgd2hlbiBpbnN0YW50aWF0aW5nIGEgYFNjaGVtYVRlc3RlcmAsIG9yIGxvY2FsbHksIHdoZW4KaW52b2tpbmcgYHZhbGlkYXRlX3Jlc3BvbnNlYDoKCmBgYHB5dGhvbgpmcm9tIG9wZW5hcGlfdGVzdGVyIGltcG9ydCBTY2hlbWFUZXN0ZXIsIGlzX2NhbWVsX2Nhc2UKZnJvbSB0ZXN0cy51dGlscyBpbXBvcnQgbXlfdXVpZF80X3ZhbGlkYXRvcgoKc2NoZW1hX3Rlc3Rfd2l0aF9jYXNlX3ZhbGlkYXRpb24gPSBTY2hlbWFUZXN0ZXIoCiAgICBjYXNlX3Rlc3Rlcj1pc19jYW1lbF9jYXNlLAogICAgaWdub3JlX2Nhc2U9WyJJUCJdLAogICAgdmFsaWRhdG9ycz1bbXlfdXVpZF80X3ZhbGlkYXRvcl0KKQoKYGBgCgpPcgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaV90ZXN0ZXIgaW1wb3J0IFNjaGVtYVRlc3RlciwgaXNfY2FtZWxfY2FzZQpmcm9tIHRlc3RzLnV0aWxzIGltcG9ydCBteV91dWlkXzRfdmFsaWRhdG9yCgpzY2hlbWFfdGVzdGVyID0gU2NoZW1hVGVzdGVyKCkKCgpkZWYgbXlfdGVzdChjbGllbnQpOgogICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KCdhcGkvdjEvdGVzdC8xJykKICAgIGFzc2VydCByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDAKICAgIHNjaGVtYV90ZXN0ZXIudmFsaWRhdGVfcmVzcG9uc2UoCiAgICAgICAgcmVzcG9uc2U9cmVzcG9uc2UsCiAgICAgICAgY2FzZV90ZXN0ZXI9aXNfY2FtZWxfY2FzZSwKICAgICAgICBpZ25vcmVfY2FzZT1bIklQIl0sCiAgICAgICAgdmFsaWRhdG9ycz1bbXlfdXVpZF80X3ZhbGlkYXRvcl0KICAgICkKYGBgCgojIyMgY2FzZV90ZXN0ZXIKClRoZSBjYXNlIHRlc3RlciBhcmd1bWVudCB0YWtlcyBhIGNhbGxhYmxlIHRoYXQgaXMgdXNlZCB0byB2YWxpZGF0ZSB0aGUga2V5IGNhc2Ugb2YgYm90aCBzY2hlbWFzIGFuZCByZXNwb25zZXMuIElmCm5vdGhpbmcgaXMgcGFzc2VkLCBjYXNlIHZhbGlkYXRpb24gaXMgc2tpcHBlZC4KClRoZSBsaWJyYXJ5IGN1cnJlbnRseSBoYXMgNCBidWlsdC1pbiBjYXNlIHRlc3RlcnM6CgotIGBpc19wYXNjYWxfY2FzZWAKLSBgaXNfc25ha2VfY2FzZWAKLSBgaXNfY2FtZWxfY2FzZWAKLSBgaXNfa2ViYWJfY2FzZWAKCllvdSBjYW4gdXNlIG9uZSBvZiB0aGVzZSwgb3IgeW91ciBvd24uCgojIyMgaWdub3JlX2Nhc2UKCkxpc3Qgb2Yga2V5cyB0byBpZ25vcmUgd2hlbiB0ZXN0aW5nIGtleSBjYXNlLiBUaGlzIHNldHRpbmcgb25seSBhcHBsaWVzIHdoZW4gY2FzZV90ZXN0ZXIgaXMgbm90IGBOb25lYC4KCiMjIyB2YWxpZGF0b3JzCgpMaXN0IG9mIGN1c3RvbSB2YWxpZGF0b3JzLiBBIHZhbGlkYXRvciBpcyBhIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgdHdvIHBhcmFtZXRlcnM6IHNjaGVtYV9zZWN0aW9uIGFuZCBkYXRhLCBhbmQgcmV0dXJucwplaXRoZXIgYW4gZXJyb3IgbWVzc2FnZSBvciBgTm9uZWAsIGUuZy46CgpgYGBweXRob24KZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgT3B0aW9uYWwKZnJvbSB1dWlkIGltcG9ydCBVVUlECgoKZGVmIG15X3V1aWRfNF92YWxpZGF0b3Ioc2NoZW1hX3NlY3Rpb246IGRpY3QsIGRhdGE6IEFueSkgLT4gT3B0aW9uYWxbc3RyXToKICAgIHNjaGVtYV9mb3JtYXQgPSBzY2hlbWFfc2VjdGlvbi5nZXQoImZvcm1hdCIpCiAgICBpZiBzY2hlbWFfZm9ybWF0ID09ICJ1dWlkNCI6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXN1bHQgPSBVVUlEKGRhdGEsIHZlcnNpb249NCkKICAgICAgICAgICAgaWYgbm90IHN0cihyZXN1bHQpID09IHN0cihkYXRhKToKICAgICAgICAgICAgICAgIHJldHVybiBmIkV4cGVjdGVkIHV1aWQ0LCBidXQgcmVjZWl2ZWQge2RhdGF9IgogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICByZXR1cm4gZiJFeHBlY3RlZCB1dWlkNCwgYnV0IHJlY2VpdmVkIHtkYXRhfSIKICAgIHJldHVybiBOb25lCmBgYAoKIyMjIGZpZWxkX2tleV9tYXAKCllvdSBjYW4gcGFzcyBhbiBvcHRpb25hbCBkaWN0aW9uYXJ5IHRoYXQgbWFwcyBjdXN0b20gdXJsIHBhcmFtZXRlciBuYW1lcyBpbnRvIHZhbHVlcywgZm9yIHNpdHVhdGlvbnMgd2hlcmUgdGhpcyBjYW5ub3QgYmUKaW5mZXJyZWQgYnkgdGhlIERSRiBgRW5kcG9pbnRFbnVtZXJhdG9yYC4gQSBjb25jcmV0ZSB1c2UgY2FzZSBmb3IgdGhpcyBvcHRpb24gaXMgd2hlbgp0aGUgW2RqYW5nbyBpMThuIGxvY2FsZSBwcmVmaXhlc10oaHR0cHM6Ly9kb2NzLmRqYW5nb3Byb2plY3QuY29tL2VuLzMuMS90b3BpY3MvaTE4bi90cmFuc2xhdGlvbi8jbGFuZ3VhZ2UtcHJlZml4LWluLXVybC1wYXR0ZXJucykuCgpgYGBweXRob24KZnJvbSBvcGVuYXBpX3Rlc3RlciBpbXBvcnQgU2NoZW1hVGVzdGVyCgpzY2hlbWFfdGVzdGVyID0gU2NoZW1hVGVzdGVyKGZpZWxkX2tleV9tYXA9ewogICJsYW5ndWFnZSI6ICJlbiIsCn0pCmBgYAoKIyMgU2NoZW1hIFZhbGlkYXRpb24KCldoZW4gdGhlIFNjaGVtYVRlc3RlciBsb2FkcyBhIHNjaGVtYSwgaXQgcGFyc2VzIGl0IHVzaW5nIGFuCltPcGVuQVBJIHNwZWMgdmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vcDFjMnUvb3BlbmFwaS1zcGVjLXZhbGlkYXRvcikuIFRoaXMgdmFsaWRhdGVzIHRoZSBzY2hlbWEuCkluIGNhc2Ugb2YgaXNzdWVzIHdpdGggdGhlIHNjaGVtYSBpdHNlbGYsIHRoZSB2YWxpZGF0b3Igd2lsbCByYWlzZSB0aGUgYXBwcm9wcmlhdGUgZXJyb3IuCgojIyBEamFuZ28gdGVzdGluZyBjbGllbnQKClRoZSBsaWJyYXJ5IGluY2x1ZGVzIGFuIGBPcGVuQVBJQ2xpZW50YCwgd2hpY2ggZXh0ZW5kcyBEamFuZ28gUkVTVCBmcmFtZXdvcmsncwpbYEFQSUNsaWVudGAgY2xhc3NdKGh0dHBzOi8vd3d3LmRqYW5nby1yZXN0LWZyYW1ld29yay5vcmcvYXBpLWd1aWRlL3Rlc3RpbmcvI2FwaWNsaWVudCkuCklmIHlvdSB3aXNoIHRvIHZhbGlkYXRlIGVhY2ggcmVzcG9uc2UgYWdhaW5zdCBPcGVuQVBJIHNjaGVtYSB3aGVuIHdyaXRpbmcKdW5pdCB0ZXN0cyAtIGBPcGVuQVBJQ2xpZW50YCBpcyB3aGF0IHlvdSBuZWVkIQoKVG8gdXNlIGBPcGVuQVBJQ2xpZW50YCBzaW1wbHkgcGFzcyBgU2NoZW1hVGVzdGVyYCBpbnN0YW5jZSB0aGF0IHNob3VsZCBiZSB1c2VkCnRvIHZhbGlkYXRlIHJlc3BvbnNlcyBhbmQgdGhlbiB1c2UgaXQgbGlrZSByZWd1bGFyIERqYW5nbyB0ZXN0aW5nIGNsaWVudDoKCmBgYHB5dGhvbgpzY2hlbWFfdGVzdGVyID0gU2NoZW1hVGVzdGVyKCkKY2xpZW50ID0gT3BlbkFQSUNsaWVudChzY2hlbWFfdGVzdGVyPXNjaGVtYV90ZXN0ZXIpCnJlc3BvbnNlID0gY2xpZW50LmdldCgnL2FwaS92MS90ZXN0cy8xMjMvJykKYGBgCgpUbyBmb3JjZSBhbGwgZGV2ZWxvcGVycyB3b3JraW5nIG9uIHRoZSBwcm9qZWN0IHRvIHVzZSBgT3BlbkFQSUNsaWVudGAgc2ltcGx5Cm92ZXJyaWRlIHRoZSBgY2xpZW50YCBmaXh0dXJlICh3aGVuIHVzaW5nIGBweXRlc3RgIHdpdGggYHB5dGVzdC1kamFuZ29gKToKCmBgYHB5dGhvbgpmcm9tIHB5dGVzdF9kamFuZ28ubGF6eV9kamFuZ28gaW1wb3J0IHNraXBfaWZfbm9fZGphbmdvCgpmcm9tIG9wZW5hcGlfdGVzdGVyLnNjaGVtYV90ZXN0ZXIgaW1wb3J0IFNjaGVtYVRlc3RlcgoKCkBweXRlc3QuZml4dHVyZQpkZWYgc2NoZW1hX3Rlc3RlcigpOgogICAgcmV0dXJuIFNjaGVtYVRlc3RlcigpCgoKQHB5dGVzdC5maXh0dXJlCmRlZiBjbGllbnQoc2NoZW1hX3Rlc3Rlcik6CiAgICBza2lwX2lmX25vX2RqYW5nbygpCgogICAgZnJvbSBvcGVuYXBpX3Rlc3Rlci5jbGllbnRzIGltcG9ydCBPcGVuQVBJQ2xpZW50CgogICAgcmV0dXJuIE9wZW5BUElDbGllbnQoc2NoZW1hX3Rlc3Rlcj1zY2hlbWFfdGVzdGVyKQpgYGAKCklmIHlvdSBhcmUgdXNpbmcgcGxhaW4gRGphbmdvIHRlc3QgZnJhbWV3b3JrLCB3ZSBzdWdnZXN0IHRvIGNyZWF0ZSBjdXN0b20KdGVzdCBjYXNlIGltcGxlbWVudGF0aW9uIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBvcmlnaW5hbCBEamFuZ28gb25lOgoKYGBgcHl0aG9uCmltcG9ydCBmdW5jdG9vbHMKCmZyb20gZGphbmdvLnRlc3QudGVzdGNhc2VzIGltcG9ydCBTaW1wbGVUZXN0Q2FzZQpmcm9tIG9wZW5hcGlfdGVzdGVyLmNsaWVudHMgaW1wb3J0IE9wZW5BUElDbGllbnQKZnJvbSBvcGVuYXBpX3Rlc3Rlci5zY2hlbWFfdGVzdGVyIGltcG9ydCBTY2hlbWFUZXN0ZXIKCnNjaGVtYV90ZXN0ZXIgPSBTY2hlbWFUZXN0ZXIoKQoKCmNsYXNzIE15U2ltcGxlVGVzdENhc2UoU2ltcGxlVGVzdENhc2UpOgogICAgY2xpZW50X2NsYXNzID0gT3BlbkFQSUNsaWVudAogICAgIyBvciB1c2UgYGZ1bmN0b29scy5wYXJ0aWFsYCB3aGVuIHlvdSB3YW50IHRvIHByb3ZpZGUgY3VzdG9tCiAgICAjIGBgU2NoZW1hVGVzdGVyYGAgaW5zdGFuY2U6CiAgICAjIGNsaWVudF9jbGFzcyA9IGZ1bmN0b29scy5wYXJ0aWFsKE9wZW5BUElDbGllbnQsIHNjaGVtYV90ZXN0ZXI9c2NoZW1hX3Rlc3RlcikKYGBgCgpUaGlzIHdpbGwgZW5zdXJlIHlvdSBhbGwgbmV3bHkgaW1wbGVtZW50ZWQgdmlld3Mgd2lsbCBiZSB2YWxpZGF0ZWQgYWdhaW5zdAp0aGUgT3BlbkFQSSBzY2hlbWEuCgojIyBLbm93biBJc3N1ZXMKCiogV2UgYXJlIHVzaW5nIFtwcmFuY2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9qZmlua2hhZXVzZXIvcHJhbmNlKSBhcyBhIHNjaGVtYSByZXNvbHZlciwgYW5kIGl0IGhhcyBzb21lIGlzc3VlcyB3aXRoIHRoZQogIHJlc29sdXRpb24gb2YgKHZlcnkpIGNvbXBsZXggT3BlbkFQSSAyLjAgc2NoZW1hcy4gSWYgeW91IGVuY291bnRlcgogIGlzc3VlcywgW3BsZWFzZSBkb2N1bWVudCB0aGVtIGhlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zbm9rL2RyZi1vcGVuYXBpLXRlc3Rlci9pc3N1ZXMvMjA1KS4KCiMjIENvbnRyaWJ1dGluZwoKQ29udHJpYnV0aW9ucyBhcmUgd2VsY29tZS4gUGxlYXNlIHNlZSB0aGUgW2NvbnRyaWJ1dGluZyBndWlkZV0oaHR0cHM6Ly9naXRodWIuY29tL3Nub2svLmdpdGh1Yi9ibG9iL21haW4vQ09OVFJJQlVUSU5HLm1kKQo= readmeEtag: '"84e7f0f953f52e829df14422c6ac971d44864a73"' readmeLastModified: Sun, 19 Nov 2023 17:47:20 GMT repositoryId: 232892108 description: Test utility for validating OpenAPI documentation created: '2020-01-09T19:49:31Z' updated: '2025-11-28T11:56:50Z' language: Python archived: true stars: 118 watchers: 6 forks: 25 owner: snok logo: https://avatars.githubusercontent.com/u/64945977?v=4 license: BSD-3-Clause repoEtag: '"c3d1a71648e126f6e6bfc987391ff600f03a37ddef576648868364d52bd06ac7"' repoLastModified: Fri, 28 Nov 2025 11:56:50 GMT foundInMaster: true category: Data Validators id: ed3a0abc85391a21e6ab59d06a1270d1 - source: openapi3 tags repository: https://github.com/sphinx-contrib/openapi v3: true repositoryMetadata: base64Readme: >- PT09PT09PT09PT09PT09PT09PT09CnNwaGlueGNvbnRyaWItb3BlbmFwaQo9PT09PT09PT09PT09PT09PT09PT0KCioqc3BoaW54Y29udHJpYi1vcGVuYXBpKiogaXMgYSBgU3BoaW54YF8gZXh0ZW5zaW9uIHRvIGdlbmVyYXRlIEFQSXMgZG9jcyBmcm9tCmBPcGVuQVBJYF8gKGZrYSBTd2FnZ2VyKSBzcGVjLiBJdCBkZXBlbmRzIG9uIGBzcGhpbnhjb250cmliLWh0dHBkb21haW5gXyB0aGF0CnByb3ZpZGVzIGFuIEhUVFAgZG9tYWluIGZvciBkZXNjcmliaW5nIFJFU1RmdWwgSFRUUCBBUElzLCBzbyB3ZSBkb24ndCBuZWVkIHRvCnJlaW52ZW50IHRoZSB3aGVlbC4KCi4uIGNvZGU6OiBiYXNoCgogICAkIHB5dGhvbjMgLW0gcGlwIGluc3RhbGwgc3BoaW54Y29udHJpYi1vcGVuYXBpCgoKVXNhZ2UKPT09PT0KClBhc3MgYGBzcGhpbnhjb250cmliLW9wZW5hcGlgYCB0byBgYGV4dGVuc2lvbnNgYCBsaXN0IGluICBTcGhpbngncyBgYGNvbmYucHlgYAoKLi4gY29kZTo6IHB5dGhvbgoKICAgZXh0ZW5zaW9ucyA9IFsKICAgICAgLi4uCiAgICAgICdzcGhpbnhjb250cmliLm9wZW5hcGknLAogICBdCgphbmQgZmVlbCBmcmVlIHRvIHVzZSB0aGUgYGBvcGVuYXBpYGAgZGlyZWN0aXZlIHRvIHJlbmRlciBPcGVuQVBJIHNwZWNzCgouLiBjb2RlOjogcmVzdHJ1Y3R1cmVkdGV4dAoKICAgLi4gb3BlbmFwaTo6IHBhdGgvdG8vb3BlbmFwaS55bWwKCgpMaW5rcwo9PT09PQoKKiBEb2N1bWVudGF0aW9uOiBodHRwczovL3NwaGlueGNvbnRyaWItb3BlbmFwaS5yZWFkdGhlZG9jcy5vcmcvCiogU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vc3BoaW54LWNvbnRyaWIvb3BlbmFwaQoqIEJ1Z3M6IGh0dHBzOi8vZ2l0aHViLmNvbS9zcGhpbngtY29udHJpYi9vcGVuYXBpL2lzc3VlcwoKCi4uIF9TcGhpbng6IGh0dHBzOi8vd3d3LnNwaGlueC1kb2Mub3JnL2VuL21hc3Rlci8KLi4gX09wZW5BUEk6IGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uCi4uIF9zcGhpbnhjb250cmliLWh0dHBkb21haW46IGh0dHBzOi8vc3BoaW54Y29udHJpYi1odHRwZG9tYWluLnJlYWR0aGVkb2NzLmlvLwo= readmeEtag: '"6dfb1836efc473494f87ce2831c9edf633954831"' readmeLastModified: Tue, 13 Feb 2024 10:44:53 GMT repositoryId: 68995825 description: OpenAPI (fka Swagger) spec renderer for Sphinx. created: '2016-09-23T06:28:32Z' updated: '2026-02-04T09:46:16Z' language: Python archived: false stars: 122 watchers: 9 forks: 87 owner: sphinx-contrib logo: https://avatars.githubusercontent.com/u/31936682?v=4 license: BSD-2-Clause repoEtag: '"16294a70226b0ec9898421e99201d1e32bd6471e4f2ab93461d6377bb76d0b93"' repoLastModified: Wed, 04 Feb 2026 09:46:16 GMT foundInMaster: true category: - Converters - Parsers id: 5d08f10c77ed85b8c8c49382bb5bef3a - source: openapi3 tags repository: https://github.com/moclojer/moclojer v3: true id: 5f88120dcd8e4bcd38a9215d0e1ec08b repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21vY2xvamVyL21vY2xvamVyIj4KICAgIDxwaWN0dXJlPgogICAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nsb2plci9tb2Nsb2plci9yYXcvbWFpbi9kb2NzL2Fzc2V0cy9sb2dvLnBuZyI+CiAgICAgIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vbW9jbG9qZXIvbW9jbG9qZXIvcmF3L21haW4vZG9jcy9hc3NldHMvbG9nby5wbmciIGhlaWdodD0iMTI4Ij4KICAgIDwvcGljdHVyZT4KICAgIDxoMSBhbGlnbj0iY2VudGVyIj5tb2Nsb2plcjwvaDE+CiAgPC9hPgo8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBhcmlhLWxhYmVsPSJDTEFzIEFncmVlIiBocmVmPSJodHRwczovL2NsYS1hc3Npc3RhbnQuaW8vbW9jbG9qZXIvbW9jbG9qZXIiIHRhcmdldD0iX2JsYW5rIj4KICAgIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0NMQXMtZmYwMDllLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxhYmVsQ29sb3I9MDAwMDAwJmxhYmVsPWFncmVlIj4KICA8L2E+CiAgPGEgYXJpYS1sYWJlbD0iTGljZW5zZSIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21vY2xvamVyL21vY2xvamVyL2Jsb2IvbWFpbi9MSUNFTlNFIj4KICAgIDxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9NSVQtZmYwMDllLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxhYmVsQ29sb3I9MDAwMDAwJmxhYmVsPUxJQ0VOU0UiPgogIDwvYT4KICA8YSBhcmlhLWxhYmVsPSJKb2luIHRoZSBjb21tdW5pdHkgb24gR2l0SHViIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbW9jbG9qZXIvbW9jbG9qZXIvZGlzY3Vzc2lvbnMiPgogICAgPGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0pvaW4lMjB0aGUlMjBjb21tdW5pdHktZmYwMDllLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxhYmVsQ29sb3I9MDAwMDAwJmxhYmVsPURpc2N1c3Npb24iPgogIDwvYT4KCiAgPGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nsb2plci9tb2Nsb2plci9hY3Rpb25zL3dvcmtmbG93cy9saW50ZXIueW1sL2JhZGdlLnN2Zz9icmFuY2g9bWFpbiIgYWx0PSJsaW50ZXIiPgoKICA8YSBhcmlhLWxhYmVsPSJDSSBUZXN0cyIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21vY2xvamVyL21vY2xvamVyL2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3RzLnltbCI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL21vY2xvamVyL21vY2xvamVyL2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3RzLnltbC9iYWRnZS5zdmc/YnJhbmNoPW1haW4iIGFsdD0idGVzdHMiPgogIDwvYT4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly93d3cucHJvZHVjdGh1bnQuY29tL3Bvc3RzL21vY2xvamVyP3V0bV9zb3VyY2U9YmFkZ2UtZmVhdHVyZWQmdXRtX21lZGl1bT1iYWRnZSZ1dG1fc291Y2U9YmFkZ2UtbW9jbG9qZXIiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9hcGkucHJvZHVjdGh1bnQuY29tL3dpZGdldHMvZW1iZWQtaW1hZ2UvdjEvZmVhdHVyZWQuc3ZnP3Bvc3RfaWQ9NDQ5OTYxJnRoZW1lPW5ldXRyYWwiIGFsdD0ibW9jbG9qZXIgLSAmIzAwMzI7U2ltcGxlJiMwMDMyO2FuZCYjMDAzMjtlZmZpY2llbnQmIzAwMzI7SFRUUCYjMDAzMjttb2NrJiMwMDMyO3NlcnZlciYjMDAzMjt3aXRoJiMwMDMyO2Vhc3kmIzAwMzI7c3BlYyB8IFByb2R1Y3QgSHVudCIgc3R5bGU9IndpZHRoOiAyNTBweDsgaGVpZ2h0OiA1NHB4OyIgd2lkdGg9IjI1MCIgaGVpZ2h0PSI1NCIgLz48L2E+CjwvcD4KClNpbXBsZSBhbmQgZWZmaWNpZW50IEhUVFAgbW9jayBzZXJ2ZXIgd2l0aCBzcGVjaWZpY2F0aW9uIHdyaXR0ZW4gaW4gYHlhbWxgLCBgZWRuYCwgYE9wZW5BUElgIG9yIGBQb3N0bWFuIENvbGxlY3Rpb25gLgoKPiDwn5K+IERvd25sb2FkIHRoZSBgLmphcmAgZmlsZSB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBtb2Nsb2plciB0byB0ZXN0IG9uIHlvdXIgY29tcHV0ZXIgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nsb2plci9tb2Nsb2plci9yZWxlYXNlcy9sYXRlc3QpLgoKWyoq8J+TliBTZWUgdGhlIGNvbXBsZXRlIGRvY3VtZW50YXRpb24gZm9yIG1vY2xvamVyIGhlcmUqKl0oaHR0cHM6Ly9kb2NzLm1vY2xvamVyLmNvbS8pLCBpZiB5b3Ugd2FudCB0byBjb250cmlidXRlIChvciBjb21wbGVtZW50KSB0aGUgZG9jdW1lbnRhdGlvbiwgaXQgaXMgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nsb2plci9tb2Nsb2plci90cmVlL21haW4vZG9jcykuCgoqKmBZQU1MYCBleGFtcGxlKioKCmBgYHlhbWwKIyBUaGlzIG1vY2sgcmVnaXN0ZXIgcm91dGU6IEdFVCAvaGVsbG8vOnVzZXJuYW1lCi0gZW5kcG9pbnQ6CiAgICAjIE5vdGU6IHRoZSBtZXRob2QgY291bGQgYmUgb21pdHRlZCBiZWNhdXNlIEdFVCBpcyB0aGUgZGVmYXVsdAogICAgbWV0aG9kOiBHRVQKICAgIHBhdGg6IC9oZWxsby86dXNlcm5hbWUKICAgIHJlc3BvbnNlOgogICAgICAjIE5vdGU6IHRoZSBzdGF0dXMgY291bGQgYmUgb21pdHRlZCBiZWNhdXNlIDIwMCBpcyB0aGUgZGVmYXVsdAogICAgICBzdGF0dXM6IDIwMAogICAgICBoZWFkZXJzOgogICAgICAgIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgogICAgICAjIE5vdGU6IHRoZSBib2R5IHdpbGwgcmVjZWl2ZSB0aGUgdmFsdWUgcGFzc2VkIGluIHRoZSB1cmwgdXNpbmcgdGhlCiAgICAgICMgOnVzZXJuYW1lIHBsYWNlaG9sZGVyCiAgICAgIGJvZHk6ID4KICAgICAgICB7CiAgICAgICAgICAiaGVsbG8iOiAie3twYXRoLXBhcmFtcy51c2VybmFtZX19ISIKICAgICAgICB9CmBgYAoKKipQb3N0bWFuIENvbGxlY3Rpb24gU3VwcG9ydCoqCgpNb2Nsb2plciBjYW4gZGlyZWN0bHkgdXNlIFBvc3RtYW4gQ29sbGVjdGlvbiB2Mi4xIGV4cG9ydHMgYXMgbW9jayBzcGVjaWZpY2F0aW9ucy4gU2ltcGx5IGV4cG9ydCB5b3VyIFBvc3RtYW4gY29sbGVjdGlvbiBhbmQgdXNlIGl0OgoKYGBgc2gKIyBVc2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZQpDT05GSUc9bXktY29sbGVjdGlvbi5qc29uIG1vY2xvamVyCgojIFVzaW5nIENMSSBwYXJhbWV0ZXIKbW9jbG9qZXIgLS1jb25maWcgbXktY29sbGVjdGlvbi5qc29uCmBgYAoKKipIb3cgdG8gZXhwb3J0IGZyb20gUG9zdG1hbjoqKgoKMS4gT3BlbiB5b3VyIFBvc3RtYW4gY29sbGVjdGlvbgoyLiBDbGljayB0aGUgdGhyZWUgZG90cyBtZW51IOKGkiBFeHBvcnQKMy4gU2VsZWN0ICJDb2xsZWN0aW9uIHYyLjEiIGZvcm1hdAo0LiBTYXZlIHRoZSBKU09OIGZpbGUKNS4gVXNlIGl0IGRpcmVjdGx5IHdpdGggbW9jbG9qZXIhCgpUaGUgY29udmVydGVyIGF1dG9tYXRpY2FsbHk6Ci0gRGV0ZWN0cyBQb3N0bWFuIENvbGxlY3Rpb24gZm9ybWF0Ci0gRXh0cmFjdHMgSFRUUCBtZXRob2RzLCBwYXRocywgYW5kIHJlc3BvbnNlIGV4YW1wbGVzCi0gUHJvY2Vzc2VzIG5lc3RlZCBmb2xkZXJzCi0gQ29udmVydHMgcGF0aCB2YXJpYWJsZXMgKGA6aWRgLCBgOnVzZXJuYW1lYCwgZXRjLikKLSBJbmNsdWRlcyBoZWFkZXJzIGFuZCBzdGF0dXMgY29kZXMgZnJvbSBleGFtcGxlcwoKKipXZWJTb2NrZXQgU3VwcG9ydCoqCgpNb2Nsb2plciBhbHNvIHN1cHBvcnRzIFdlYlNvY2tldCBjb25uZWN0aW9ucyB3aXRoIGEgc2ltcGxlIGNvbmZpZ3VyYXRpb24gYXBwcm9hY2g6CgpgYGB5YW1sCiMgV2ViU29ja2V0IGVjaG8gc2VydmVyCi0gd2Vic29ja2V0OgogICAgcGF0aDogL3dzL2VjaG8KICAgIG9uLWNvbm5lY3Q6CiAgICAgICMgTWVzc2FnZSBzZW50IHdoZW4gY2xpZW50IGNvbm5lY3RzCiAgICAgIHJlc3BvbnNlOiAneyJzdGF0dXMiOiAiY29ubmVjdGVkIiwgIm1lc3NhZ2UiOiAiV2VsY29tZSB0byBXZWJTb2NrZXQgRWNobyEifScKICAgIG9uLW1lc3NhZ2U6CiAgICAgICMgU2ltcGxlIGVjaG8gZm9yICJwaW5nIiBtZXNzYWdlCiAgICAgIC0gcGF0dGVybjogInBpbmciCiAgICAgICAgcmVzcG9uc2U6ICJwb25nIgogICAgICAjIEVjaG8gYmFjayBhbnkgSlNPTiBjb250ZW50IHdpdGggYW4gImVjaG8iIGZpZWxkCiAgICAgIC0gcGF0dGVybjogJ3siZWNobyI6ICJ7e2pzb24tcGFyYW1zLmVjaG99fSJ9JwogICAgICAgIHJlc3BvbnNlOiAneyJlY2hvZWQiOiAie3tqc29uLXBhcmFtcy5lY2hvfX0ifScKYGBgCgpZb3UgY2FuIHRlc3QgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIHVzaW5nIHRvb2xzIGxpa2UgYHdlYnNvY2F0YDoKCmBgYHNoCndlYnNvY2F0ICJ3czovL2xvY2FsaG9zdDo4MDAwL3dzL2VjaG8iIC0tdGV4dApgYGAKCiMjIGRvY2tlcgoKKiAqKmltYWdlOioqIGBnaGNyLmlvL21vY2xvamVyL21vY2xvamVyOmxhdGVzdGAKKiAqKnBvcnQgXyhkZWZhdWx0KV86KiogYDgwMDBgXywgaWYgeW91IHdhbnQgdG8gY2hhbmdlIHRoZSBwb3J0IHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYFBPUlRgXwoKYGBgc2gKZG9ja2VyIHJ1biAtaXQgXAogIC1wIDgwMDA6ODAwMCAtdiAkKHB3ZCkvbW9jbG9qZXIueW1sOi9hcHAvbW9jbG9qZXIueW1sIFwKICBnaGNyLmlvL21vY2xvamVyL21vY2xvamVyOmxhdGVzdApgYGAKCioqV2UgaGF2ZSB0d28gdmVyc2lvbnMgYXZhaWxhYmxlOioqCgoqIGBkZXZgOiBtYWluIGJyYW5jaCBkb2NrZXIgaW1hZ2UKKiBgbGF0ZXN0YDogbGF0ZXN0IHN0YWJsZSB2ZXJzaW9uIGltYWdlCgojIyBtYW51YWwgaW5zdGFsbGF0aW9uCgpXZSBkaXN0cmlidXRlIHZpYSB0aGUgYC5qYXJgIGZpbGUsIHlvdSBuZWVkIHRvIGhhdmUgSmF2YSBpbnN0YWxsZWQgb24geW91ciBvcGVyYXRpbmcgc3lzdGVtLgoKYGBgc2gKYmFzaCA8IDwoY3VybCAtcyBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbW9jbG9qZXIvbW9jbG9qZXIvbWFpbi9pbnN0YWxsLnNoKQpgYGAKCj4gSWYgeW91IGFyZSB1c2luZyBMaW51eCB5b3UgbWF5YmUgbmVlZCBgc3Vkb2AuCgojIyBDTEkgVXNhZ2UKCiogYGNsaiAtTTpydW4gW09QVElPTlNdYAoqIGBqYXZhIC1qYXIgbW9jbG9qZXIuamFyIFtPUFRJT05TXWAKKiBgbW9jbG9qZXJfTGludXggW09QVElPTlNdYAoKIyMjIE9wdGlvbnMKCnBhcmFtZXRlciB8IGRlc2NyaXB0aW9uCi0tLSB8IC0tLQpgLWMsIC0tY29uZmlnYCB8IENvbmZpZyBwYXRoIG9yIHRoZSBDT05GSUcgZW52aXJvbm1lbnQgdmFyaWFibGUuIFxbKipkZWZhdWx0OioqIGB+Ly5jb25maWcvbW9jbG9qZXIueW1sYFxdCmAtbSwgLS1tb2Nrc2AgfCBPcGVuQVBJIHYzIG1vY2tzIHBhdGggb3IgdGhlIE1PQ0tTIGVudmlyb25tZW50IHZhcmlhYmxlLgpgLWYsIC0tZm9ybWF0YCB8IE91dHB1dCBhbmQgbG9nZ2luZyBmb3JtYXQuIEVpdGhlciBgcHJpbnRsbmAgb3IgYGpzb25gLgpgLWgsIC0taGVscGAgfCBTaG93IGhlbHAgaW5mb3JtYXRpb24KYC12LCAtLXZlcnNpb25gIHwgU2hvdyB2ZXJzaW9uIGluZm9ybWF0aW9uCgoqKnNlbnRyeToqKiBzZXQgZW52aXJvbm1lbnQgdmFyIGBTRU5UUllfRFNOYCAoW3NlbnRyeSBkb2NdKGh0dHBzOi8vZG9jcy5zZW50cnkuaW8vcGxhdGZvcm1zL25vZGUvZ3VpZGVzL2F6dXJlLWZ1bmN0aW9ucy9jb25maWd1cmF0aW9uL29wdGlvbnMvI2RzbikpLCBhdXRvbWF0aWMgc2VuZCBiYWNrdHJhY2UgdG8gPHNlbnRyeS5pbz4KCj4gKipDb25maWcqKiB1c2VzIGBYREdfQ09ORklHX0hPTUVgIHRvIGZldGNoIHRoZSBkZWZhdWx0IG1vY2xvamVyIGNvbmZpZ3VyYXRpb24gZmlsZSwgaWYgeW91IHdhbnQgdG8gc2V0IGEgZGlmZmVyZW50IGRpcmVjdG9yeSB5b3UgbXVzdCB1c2UgdGhlIGAtY2Agb3IgZW52aXJvbm1lbnQgdmFyaWFibGUgYENPTkZJR2AKCiMjIPCfkrsgZGV2IGVudmlyb25tZW50Cgptb2Nsb2plciBpcyB3cml0dGVuIGluICoqQ2xvanVyZSoqLCB0byBydW4gdGhlIGNvbW1hbmRzIGJlbG93IHdlIGFzc3VtZSB5b3UgaGF2ZSBjbG9qdXJlIF9pbnN0YWxsZWRfIG9uIHlvdXIgb3BlcmF0aW5nIHN5c3RlbS4KCioqcnVuOioqCgpgYGBzaApjbGogLU06cnVuCmBgYAoKKip0ZXN0OioqCgpgYGBzaApjbGogLU06dGVzdApgYGAKCj4gX2lmIHlvdSB3YW50IHRvIHJ1biBhIHNwZWNpZmljIHRlc3Q6XyBgY2xqIC1NOnRlc3QgLW4gY29tLm1vY2xvamVyLmV4dGVybmFsLWJvZHkuZXhjZWwtdGVzdGAKCioqYG1vY2xvamVyLmphcmAgZ2VuZXJhdGU6KioKCmBgYHNoCmNsaiAtQTpkZXYgLU0gLS1yZXBvcnQgc3RkZXJyIC1tIGNvbS5tb2Nsb2plci5idWlsZApgYGAKCiMjIEFJLWFzc2lzdGVkIGRldmVsb3BtZW50CgpUaGlzIHByb2plY3QgaW5jbHVkZXMgYW4gW2BBR0VOVFMubWRgXShBR0VOVFMubWQpIGZpbGUgd2l0aCBndWlkZWxpbmVzIGZvciBBSSBjb2RpbmcgYXNzaXN0YW50cyAoQ2xhdWRlIENvZGUsIEN1cnNvciwgR2l0SHViIENvcGlsb3QsIGV0Yy4pLiBJdCBkb2N1bWVudHMgYXJjaGl0ZWN0dXJlIGRlY2lzaW9ucywgY29kZSBwYXR0ZXJucywgZXh0ZW5zaW9uIHBvaW50cywgYW5kIGNvbW1vbiBwaXRmYWxscyB0byBoZWxwIGJvdGggaHVtYW5zIGFuZCBBSSB0b29scyB1bmRlcnN0YW5kIGFuZCBjb250cmlidXRlIHRvIHRoZSBjb2RlYmFzZSBlZmZlY3RpdmVseS4KCj4gKipXaW5kb3dzIHVzZXJzOioqIFRoaXMgcHJvamVjdCB1c2VzIHN5bWxpbmtzIGZvciBBSSB0b29sIGNvbmZpZyBmaWxlcy4gR2l0IG9uIFdpbmRvd3MgZGlzYWJsZXMgc3ltbGlua3MgYnkgZGVmYXVsdC4gRW5hYmxlIHRoZW0gd2l0aCBgZ2l0IGNvbmZpZyAtLWdsb2JhbCBjb3JlLnN5bWxpbmtzIHRydWVgIGJlZm9yZSBjbG9uaW5nIChtYXkgcmVxdWlyZSBEZXZlbG9wZXIgTW9kZSBvciBhZG1pbiBwcml2aWxlZ2VzKS4KCiMjIGZyYW1ld29yayBpbnRlZ3JhdGlvbnMKCldlIGRpc3RyaWJ1dGUgdGhlIGxpYnJhcnkgdmlhIFtDbG9qYXJzXShodHRwczovL2Nsb2phcnMub3JnL2NvbS5tb2Nsb2plci9tb2Nsb2plcikuCgojIyMgQ2xvanVyZSBDTEkvZGVwcy5lZG4KCmBgYGNsb2p1cmUKY29tLm1vY2xvamVyL21vY2xvamVyIHs6bXZuL3ZlcnNpb24gIjAuMy4xIn0KYGBgCgojIyMgTGVpbmluZ2VuL0Jvb3QKCmBgYGNsb2p1cmUKW2NvbS5tb2Nsb2plci9tb2Nsb2plciAiMC4zLjEiXQpgYGAKCiMjIyBbYGdpdGBdKGh0dHBzOi8vY2xvanVyZS5vcmcvZ3VpZGVzL2RlcHNfYW5kX2NsaSNfdXNpbmdfZ2l0X2xpYnJhcmllcykgaW4gYGRlcHMuZWRuYAoKYGBgZWRuCns6ZGVwcwoge2NvbS5tb2Nsb2plci9tb2Nsb2plciB7OmdpdC91cmwgImh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nsb2plci9tb2Nsb2plci5naXQiCiAgICAgICAgICAgICAgICAgICAgICAgICA6Z2l0L3RhZyAidjAuMy4xIgogICAgICAgICAgICAgICAgICAgICAgICAgOmdpdC9zaGEgImM0Y2EwZjJjZmNmYmU0N2RlNmViMGM2MDFiMjYxMDYxOTBlMjA3OTMifX19CmBgYAoKIyMjIGV4YW1wbGUgb2YgdXNlCgpgYGBjbGoKKG5zIG15LWFwcC5jb3JlCiAgKDpyZXF1aXJlIFtjb20ubW9jbG9qZXIuYWRhcHRlcnMgOmFzIGFkYXB0ZXJzXQogICAgICAgICAgICBbY29tLm1vY2xvamVyLnNlcnZlciA6YXMgc2VydmVyXSkpCgooZGVmICpyb3V0ZXIKICAiY3JlYXRlIGEgcm91dGVyIGZyb20gYSBjb25maWcgbWFwIgogIChhZGFwdGVycy9nZW5lcmF0ZS1yb3V0ZXMKICAgW3s6ZW5kcG9pbnQKICAgICB7Om1ldGhvZCAiR0VUIgogICAgICA6cGF0aCAiL2V4YW1wbGUiCiAgICAgIDpyZXNwb25zZSB7OnN0YXR1cyAyMDAKICAgICAgICAgICAgICAgICA6aGVhZGVycyB7OkNvbnRlbnQtVHlwZSAiYXBwbGljYXRpb24vanNvbiJ9CiAgICAgICAgICAgICAgICAgOmJvZHkgezppZCAxMjN9fX19XSkpCgooZGVmbiAtbWFpbgogICJzdGFydCB0aGUgc2VydmVyIgogIFsmIGFyZ3NdCiAgKHNlcnZlci9zdGFydC1zZXJ2ZXIhICpyb3V0ZXIpKQpgYGAK readmeEtag: '"8fa47901a7666c9457bd80ed5078b8b6abe4003e"' readmeLastModified: Sun, 21 Dec 2025 21:18:07 GMT repositoryId: 462693523 description: >- Simple and efficient HTTP and Webscoket mock server with specification in yaml, edn or OpenAPI created: '2022-02-23T10:49:57Z' updated: '2025-12-27T05:49:28Z' language: Clojure archived: false stars: 130 watchers: 1 forks: 13 owner: moclojer logo: https://avatars.githubusercontent.com/u/103039458?v=4 license: MIT repoEtag: '"4592bd6fd9478845931439a4fea8473b735ca781a006ae233251c8b06827136c"' repoLastModified: Sat, 27 Dec 2025 05:49:28 GMT category: Testing foundInMaster: true oldLocations: - https://github.com/avelino/moclojer - source: openapi3 tags repository: https://github.com/kuimono/openapi-schema-pydantic v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXNjaGVtYS1weWRhbnRpYwoKWyFbUHlQSV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvb3BlbmFwaS1zY2hlbWEtcHlkYW50aWMpXShodHRwczovL3B5cGkub3JnL3Byb2plY3Qvb3BlbmFwaS1zY2hlbWEtcHlkYW50aWMvKQpbIVtQeVBJIC0gTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2wvb3BlbmFwaS1zY2hlbWEtcHlkYW50aWMpXShodHRwczovL2dpdGh1Yi5jb20va3VpbW9uby9vcGVuYXBpLXNjaGVtYS1weWRhbnRpYy9ibG9iL21hc3Rlci9MSUNFTlNFKQoKT3BlbkFQSSAodjMpIHNwZWNpZmljYXRpb24gc2NoZW1hIGFzIFtQeWRhbnRpY10oaHR0cHM6Ly9naXRodWIuY29tL3NhbXVlbGNvbHZpbi9weWRhbnRpYykgY2xhc3Nlcy4KClRoZSBuYW1pbmcgb2YgdGhlIGNsYXNzZXMgZm9sbG93cyB0aGUgc2NoZW1hIGluIApbT3BlbkFQSSBzcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjEuMC5tZCNzY2hlbWEpLgoKIyMgSW5zdGFsbGF0aW9uCgpgcGlwIGluc3RhbGwgb3BlbmFwaS1zY2hlbWEtcHlkYW50aWNgCgojIyBUcnkgbWUKCmBgYHB5dGhvbgpmcm9tIG9wZW5hcGlfc2NoZW1hX3B5ZGFudGljIGltcG9ydCBPcGVuQVBJLCBJbmZvLCBQYXRoSXRlbSwgT3BlcmF0aW9uLCBSZXNwb25zZQoKIyBDb25zdHJ1Y3QgT3BlbkFQSSBieSBweWRhbnRpYyBvYmplY3RzCm9wZW5fYXBpID0gT3BlbkFQSSgKICAgIGluZm89SW5mbygKICAgICAgICB0aXRsZT0iTXkgb3duIEFQSSIsCiAgICAgICAgdmVyc2lvbj0idjAuMC4xIiwKICAgICksCiAgICBwYXRocz17CiAgICAgICAgIi9waW5nIjogUGF0aEl0ZW0oCiAgICAgICAgICAgIGdldD1PcGVyYXRpb24oCiAgICAgICAgICAgICAgICByZXNwb25zZXM9ewogICAgICAgICAgICAgICAgICAgICIyMDAiOiBSZXNwb25zZSgKICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249InBvbmciCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApCiAgICAgICAgKQogICAgfSwKKQpwcmludChvcGVuX2FwaS5qc29uKGJ5X2FsaWFzPVRydWUsIGV4Y2x1ZGVfbm9uZT1UcnVlLCBpbmRlbnQ9MikpCmBgYAoKUmVzdWx0OgoKYGBganNvbgp7CiAgIm9wZW5hcGkiOiAiMy4xLjAiLAogICJpbmZvIjogewogICAgInRpdGxlIjogIk15IG93biBBUEkiLAogICAgInZlcnNpb24iOiAidjAuMC4xIgogIH0sCiAgInNlcnZlcnMiOiBbCiAgICB7CiAgICAgICJ1cmwiOiAiLyIKICAgIH0KICBdLAogICJwYXRocyI6IHsKICAgICIvcGluZyI6IHsKICAgICAgImdldCI6IHsKICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInBvbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiZGVwcmVjYXRlZCI6IGZhbHNlCiAgICAgIH0KICAgIH0KICB9Cn0KYGBgCgojIyBUYWtlIGFkdmFudGFnZSBvZiBQeWRhbnRpYwoKUHlkYW50aWMgaXMgYSBncmVhdCB0b29sLCBhbGxvdyB5b3UgdG8gdXNlIG9iamVjdCAvIGRpY3QgLyBtaXhlZCBkYXRhIGZvciBmb3IgaW5wdXQuCgpUaGUgZm9sbG93aW5nIGV4YW1wbGVzIGdpdmUgdGhlIHNhbWUgT3BlbkFQSSByZXN1bHQgYXMgYWJvdmU6CgpgYGBweXRob24KZnJvbSBvcGVuYXBpX3NjaGVtYV9weWRhbnRpYyBpbXBvcnQgT3BlbkFQSSwgUGF0aEl0ZW0sIFJlc3BvbnNlCgojIENvbnN0cnVjdCBPcGVuQVBJIGZyb20gZGljdApvcGVuX2FwaSA9IE9wZW5BUEkucGFyc2Vfb2JqKHsKICAgICJpbmZvIjogeyJ0aXRsZSI6ICJNeSBvd24gQVBJIiwgInZlcnNpb24iOiAidjAuMC4xIn0sCiAgICAicGF0aHMiOiB7CiAgICAgICAgIi9waW5nIjogewogICAgICAgICAgICAiZ2V0IjogeyJyZXNwb25zZXMiOiB7IjIwMCI6IHsiZGVzY3JpcHRpb24iOiAicG9uZyJ9fX0KICAgICAgICB9CiAgICB9LAp9KQoKIyBDb25zdHJ1Y3QgT3BlbkFQSSB3aXRoIG1peCBvZiBkaWN0L29iamVjdApvcGVuX2FwaSA9IE9wZW5BUEkucGFyc2Vfb2JqKHsKICAgICJpbmZvIjogeyJ0aXRsZSI6ICJNeSBvd24gQVBJIiwgInZlcnNpb24iOiAidjAuMC4xIn0sCiAgICAicGF0aHMiOiB7CiAgICAgICAgIi9waW5nIjogUGF0aEl0ZW0oCiAgICAgICAgICAgIGdldD17InJlc3BvbnNlcyI6IHsiMjAwIjogUmVzcG9uc2UoZGVzY3JpcHRpb249InBvbmciKX19CiAgICAgICAgKQogICAgfSwKfSkKYGBgCgojIyBVc2UgUHlkYW50aWMgY2xhc3NlcyBhcyBzY2hlbWEKCi0gVGhlIFtTY2hlbWEgT2JqZWN0XShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMy5tZCNzY2hlbWFPYmplY3QpCiAgaW4gT3BlbkFQSSBoYXMgZGVmaW5pdGlvbnMgYW5kIHR3ZWFrcyBpbiBKU09OIFNjaGVtYSwgd2hpY2ggaXMgaGFyZCB0byBjb21wcmVoZW5kIGFuZCBkZWZpbmUgYSBnb29kIGRhdGEgY2xhc3MKLSBQeWRhbnRpYyBhbHJlYWR5IGhhcyBhIGdvb2Qgd2F5IHRvIFtjcmVhdGUgSlNPTiBzY2hlbWFdKGh0dHBzOi8vcHlkYW50aWMtZG9jcy5oZWxwbWFudWFsLmlvL3VzYWdlL3NjaGVtYS8pLAogIGxldCdzIG5vdCByZS1pbnZlbnQgdGhlIHdoZWVsCiAgClRoZSBhcHByb2FjaCB0byBkZWFsIHdpdGggdGhpczoKCjEuIFVzZSBgUHlkYW50aWNTY2hlbWFgIG9iamVjdHMgdG8gcmVwcmVzZW50IHRoZSBgU2NoZW1hYCBpbiBgT3BlbkFQSWAgb2JqZWN0CjIuIEludm9rZSBgY29uc3RydWN0X29wZW5fYXBpX3dpdGhfc2NoZW1hX2NsYXNzYCB0byByZXNvbHZlIHRoZSBKU09OIHNjaGVtYXMgYW5kIHJlZmVyZW5jZXMKCmBgYHB5dGhvbgpmcm9tIHB5ZGFudGljIGltcG9ydCBCYXNlTW9kZWwsIEZpZWxkCgpmcm9tIG9wZW5hcGlfc2NoZW1hX3B5ZGFudGljIGltcG9ydCBPcGVuQVBJCmZyb20gb3BlbmFwaV9zY2hlbWFfcHlkYW50aWMudXRpbCBpbXBvcnQgUHlkYW50aWNTY2hlbWEsIGNvbnN0cnVjdF9vcGVuX2FwaV93aXRoX3NjaGVtYV9jbGFzcwoKZGVmIGNvbnN0cnVjdF9iYXNlX29wZW5fYXBpKCkgLT4gT3BlbkFQSToKICAgIHJldHVybiBPcGVuQVBJLnBhcnNlX29iaih7CiAgICAgICAgImluZm8iOiB7InRpdGxlIjogIk15IG93biBBUEkiLCAidmVyc2lvbiI6ICJ2MC4wLjEifSwKICAgICAgICAicGF0aHMiOiB7CiAgICAgICAgICAgICIvcGluZyI6IHsKICAgICAgICAgICAgICAgICJwb3N0IjogewogICAgICAgICAgICAgICAgICAgICJyZXF1ZXN0Qm9keSI6IHsiY29udGVudCI6IHsiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInNjaGVtYSI6IFB5ZGFudGljU2NoZW1hKHNjaGVtYV9jbGFzcz1QaW5nUmVxdWVzdCkKICAgICAgICAgICAgICAgICAgICB9fX0sCiAgICAgICAgICAgICAgICAgICAgInJlc3BvbnNlcyI6IHsiMjAwIjogewogICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAicG9uZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJjb250ZW50IjogeyJhcHBsaWNhdGlvbi9qc29uIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaGVtYSI6IFB5ZGFudGljU2NoZW1hKHNjaGVtYV9jbGFzcz1QaW5nUmVzcG9uc2UpCiAgICAgICAgICAgICAgICAgICAgICAgIH19LAogICAgICAgICAgICAgICAgICAgIH19LAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgIH0pCgpjbGFzcyBQaW5nUmVxdWVzdChCYXNlTW9kZWwpOgogICAgIiIiUGluZyBSZXF1ZXN0IiIiCiAgICByZXFfZm9vOiBzdHIgPSBGaWVsZChkZXNjcmlwdGlvbj0iZm9vIHZhbHVlIG9mIHRoZSByZXF1ZXN0IikKICAgIHJlcV9iYXI6IHN0ciA9IEZpZWxkKGRlc2NyaXB0aW9uPSJiYXIgdmFsdWUgb2YgdGhlIHJlcXVlc3QiKQoKY2xhc3MgUGluZ1Jlc3BvbnNlKEJhc2VNb2RlbCk6CiAgICAiIiJQaW5nIHJlc3BvbnNlIiIiCiAgICByZXNwX2Zvbzogc3RyID0gRmllbGQoZGVzY3JpcHRpb249ImZvbyB2YWx1ZSBvZiB0aGUgcmVzcG9uc2UiKQogICAgcmVzcF9iYXI6IHN0ciA9IEZpZWxkKGRlc2NyaXB0aW9uPSJiYXIgdmFsdWUgb2YgdGhlIHJlc3BvbnNlIikKCm9wZW5fYXBpID0gY29uc3RydWN0X2Jhc2Vfb3Blbl9hcGkoKQpvcGVuX2FwaSA9IGNvbnN0cnVjdF9vcGVuX2FwaV93aXRoX3NjaGVtYV9jbGFzcyhvcGVuX2FwaSkKCiMgcHJpbnQgdGhlIHJlc3VsdCBvcGVuYXBpLmpzb24KcHJpbnQob3Blbl9hcGkuanNvbihieV9hbGlhcz1UcnVlLCBleGNsdWRlX25vbmU9VHJ1ZSwgaW5kZW50PTIpKQpgYGAKClJlc3VsdDoKCmBgYGpzb24KewogICJvcGVuYXBpIjogIjMuMS4wIiwKICAiaW5mbyI6IHsKICAgICJ0aXRsZSI6ICJNeSBvd24gQVBJIiwKICAgICJ2ZXJzaW9uIjogInYwLjAuMSIKICB9LAogICJzZXJ2ZXJzIjogWwogICAgewogICAgICAidXJsIjogIi8iCiAgICB9CiAgXSwKICAicGF0aHMiOiB7CiAgICAiL3BpbmciOiB7CiAgICAgICJwb3N0IjogewogICAgICAgICJyZXF1ZXN0Qm9keSI6IHsKICAgICAgICAgICJjb250ZW50IjogewogICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvUGluZ1JlcXVlc3QiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAicG9uZyIsCiAgICAgICAgICAgICJjb250ZW50IjogewogICAgICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIjogewogICAgICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvUGluZ1Jlc3BvbnNlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImRlcHJlY2F0ZWQiOiBmYWxzZQogICAgICB9CiAgICB9CiAgfSwKICAiY29tcG9uZW50cyI6IHsKICAgICJzY2hlbWFzIjogewogICAgICAiUGluZ1JlcXVlc3QiOiB7CiAgICAgICAgInRpdGxlIjogIlBpbmdSZXF1ZXN0IiwKICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgICAicmVxX2ZvbyIsCiAgICAgICAgICAicmVxX2JhciIKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAicmVxX2ZvbyI6IHsKICAgICAgICAgICAgInRpdGxlIjogIlJlcSBGb28iLAogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiZm9vIHZhbHVlIG9mIHRoZSByZXF1ZXN0IgogICAgICAgICAgfSwKICAgICAgICAgICJyZXFfYmFyIjogewogICAgICAgICAgICAidGl0bGUiOiAiUmVxIEJhciIsCiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJiYXIgdmFsdWUgb2YgdGhlIHJlcXVlc3QiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiUGluZyBSZXF1ZXN0IgogICAgICB9LAogICAgICAiUGluZ1Jlc3BvbnNlIjogewogICAgICAgICJ0aXRsZSI6ICJQaW5nUmVzcG9uc2UiLAogICAgICAgICJyZXF1aXJlZCI6IFsKICAgICAgICAgICJyZXNwX2ZvbyIsCiAgICAgICAgICAicmVzcF9iYXIiCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgInJlc3BfZm9vIjogewogICAgICAgICAgICAidGl0bGUiOiAiUmVzcCBGb28iLAogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiZm9vIHZhbHVlIG9mIHRoZSByZXNwb25zZSIKICAgICAgICAgIH0sCiAgICAgICAgICAicmVzcF9iYXIiOiB7CiAgICAgICAgICAgICJ0aXRsZSI6ICJSZXNwIEJhciIsCiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJiYXIgdmFsdWUgb2YgdGhlIHJlc3BvbnNlIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImRlc2NyaXB0aW9uIjogIlBpbmcgcmVzcG9uc2UiCiAgICAgIH0KICAgIH0KICB9Cn0KYGBgCgojIyBOb3RlcwoKIyMjIFVzZSBvZiBPcGVuQVBJLmpzb24oKSAvIE9wZW5BUEkuZGljdCgpCgpXaGVuIHVzaW5nIGBPcGVuQVBJLmpzb24oKWAgLyBgT3BlbkFQSS5kaWN0KClgIGZ1bmN0aW9uLAphcmd1bWVudHMgYGJ5X2FsaWFzPVRydWUsIGV4Y2x1ZGVfbm9uZT1UcnVlYCBoYXMgdG8gYmUgaW4gcGxhY2UuCk90aGVyd2lzZSB0aGUgcmVzdWx0IGpzb24gd2lsbCBub3QgZml0IHRoZSBPcGVuQVBJIHN0YW5kYXJkLgoKYGBgcHl0aG9uCiMgT0sKb3Blbl9hcGkuanNvbihieV9hbGlhcz1UcnVlLCBleGNsdWRlX25vbmU9VHJ1ZSwgaW5kZW50PTIpCgojIE5vdCBnb29kCm9wZW5fYXBpLmpzb24oaW5kZW50PTIpCmBgYAoKTW9yZSBpbmZvIGFib3V0IGZpZWxkIGFsaWFzOgoKfCBPcGVuQVBJIHZlcnNpb24gfCBGaWVsZCBhbGlhcyBpbmZvIHwKfCAtLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tIHwKfCAzLjEuMCB8IFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20va3VpbW9uby9vcGVuYXBpLXNjaGVtYS1weWRhbnRpYy9ibG9iL21hc3Rlci9vcGVuYXBpX3NjaGVtYV9weWRhbnRpYy92My92M18xXzAvUkVBRE1FLm1kI2FsaWFzKSB8CnwgMy4wLjMgfCBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2t1aW1vbm8vb3BlbmFwaS1zY2hlbWEtcHlkYW50aWMvYmxvYi9tYXN0ZXIvb3BlbmFwaV9zY2hlbWFfcHlkYW50aWMvdjMvdjNfMF8zL1JFQURNRS5tZCNhbGlhcykgfAoKIyMjIE5vbi1weWRhbnRpYyBzY2hlbWEgdHlwZXMKClNvbWUgc2NoZW1hIHR5cGVzIGFyZSBub3QgaW1wbGVtZW50ZWQgYXMgcHlkYW50aWMgY2xhc3Nlcy4KUGxlYXNlIHJlZmVyIHRvIHRoZSBmb2xsb3dpbmcgZm9yIG1vcmUgaW5mbzoKCnwgT3BlbkFQSSB2ZXJzaW9uIHwgTm9uLXB5ZGFudGljIHNjaGVtYSB0eXBlIGluZm8gfAp8IC0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCAzLjEuMCB8IFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20va3VpbW9uby9vcGVuYXBpLXNjaGVtYS1weWRhbnRpYy9ibG9iL21hc3Rlci9vcGVuYXBpX3NjaGVtYV9weWRhbnRpYy92My92M18xXzAvUkVBRE1FLm1kI25vbi1weWRhbnRpYy1zY2hlbWEtdHlwZXMpIHwKfCAzLjAuMyB8IFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20va3VpbW9uby9vcGVuYXBpLXNjaGVtYS1weWRhbnRpYy9ibG9iL21hc3Rlci9vcGVuYXBpX3NjaGVtYV9weWRhbnRpYy92My92M18wXzMvUkVBRE1FLm1kI25vbi1weWRhbnRpYy1zY2hlbWEtdHlwZXMpIHwKCiMjIyBVc2UgT3BlbkFQSSAzLjAuMyBpbnN0ZWFkIG9mIDMuMS4wCgpTb21lIFVJIHJlbmRlcmluZ3MgKGUuZy4gU3dhZ2dlcikgc3RpbGwgZG8gbm90IHN1cHBvcnQgT3BlbkFQSSAzLjEuMC4KSXQgaXMgYWxsb3dlZCB0byB1c2UgdGhlIG9sZCAzLjAuMyB2ZXJzaW9uIGJ5IGltcG9ydGluZyBmcm9tIGRpZmZlcmVudCBwYXRoczoKCmBgYHB5dGhvbgpmcm9tIG9wZW5hcGlfc2NoZW1hX3B5ZGFudGljLnYzLnYzXzBfMyBpbXBvcnQgT3BlbkFQSSwgLi4uCmZyb20gb3BlbmFwaV9zY2hlbWFfcHlkYW50aWMudjMudjNfMF8zLnV0aWwgaW1wb3J0IFB5ZGFudGljU2NoZW1hLCBjb25zdHJ1Y3Rfb3Blbl9hcGlfd2l0aF9zY2hlbWFfY2xhc3MKYGBgCgojIyBMaWNlbnNlCgpbTUlUIExpY2Vuc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9rdWltb25vL29wZW5hcGktc2NoZW1hLXB5ZGFudGljL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpCg== readmeEtag: '"2769cce17ec836e639e2a438a513b737787e5d5f"' readmeLastModified: Wed, 29 Jun 2022 12:42:14 GMT repositoryId: 263836606 description: 'OpenAPI (v3) specification schema as pydantic class ' created: '2020-05-14T06:42:49Z' updated: '2026-01-20T18:10:47Z' language: Python archived: false stars: 122 watchers: 3 forks: 22 owner: kuimono logo: https://avatars.githubusercontent.com/u/16016416?v=4 license: MIT repoEtag: '"d2c5ac2dd2b8e8a2316a9e85956f773bc7a58880f2e5f6c371a67c9595f8eae3"' repoLastModified: Tue, 20 Jan 2026 18:10:47 GMT foundInMaster: true category: Parsers id: db4e005af8e10dd51fade90218a598f9 - source: openapi3 tags repository: https://github.com/digitalocean/openapi v3: true repositoryMetadata: base64Readme: >- IyBEaWdpdGFsT2NlYW4gT3BlbkFQSSBTcGVjaWZpY2F0aW9uCiFbU3BlYyBNYWluXShodHRwczovL2dpdGh1Yi5jb20vZGlnaXRhbG9jZWFuL2FwaXYyLW9wZW5hcGkvd29ya2Zsb3dzL1NwZWMlMjBNYWluL2JhZGdlLnN2ZykgIVtTdGF0dXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU3RhdHVzLUVhcmx5JTIwQXZhaWxhYmlsaXR5LWJsdWUpCgpUaGUgT3BlbkFQSSB2MyBzcGVjaWZpY2F0aW9uIGZvciBbRGlnaXRhbE9jZWFuJ3MgcHVibGljIEFQSSB2Ml0oaHR0cHM6Ly9kb2NzLmRpZ2l0YWxvY2Vhbi5jb20vcmVmZXJlbmNlL2FwaS9kaWdpdGFsb2NlYW4vKS4KCiMjIFdoYXQgaXMgT3BlbkFQST8KCkZyb20gdGhlIFtPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyk6Cgo+IFRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gKE9BUykgZGVmaW5lcyBhIHN0YW5kYXJkLCBsYW5ndWFnZS1hZ25vc3RpYyBpbnRlcmZhY2UgdG8gUkVTVGZ1bCBBUElzIHdoaWNoIGFsbG93cyBib3RoIGh1bWFucyBhbmQgY29tcHV0ZXJzIHRvIGRpc2NvdmVyIGFuZCB1bmRlcnN0YW5kIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIHNlcnZpY2Ugd2l0aG91dCBhY2Nlc3MgdG8gc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24sIG9yIHRocm91Z2ggbmV0d29yayB0cmFmZmljIGluc3BlY3Rpb24uIFdoZW4gcHJvcGVybHkgZGVmaW5lZCwgYSBjb25zdW1lciBjYW4gdW5kZXJzdGFuZCBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgcmVtb3RlIHNlcnZpY2Ugd2l0aCBhIG1pbmltYWwgYW1vdW50IG9mIGltcGxlbWVudGF0aW9uIGxvZ2ljLgoKPiBBbiBPcGVuQVBJIGRlZmluaXRpb24gY2FuIHRoZW4gYmUgdXNlZCBieSBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24gdG9vbHMgdG8gZGlzcGxheSB0aGUgQVBJLCBjb2RlIGdlbmVyYXRpb24gdG9vbHMgdG8gZ2VuZXJhdGUgc2VydmVycyBhbmQgY2xpZW50cyBpbiB2YXJpb3VzIHByb2dyYW1taW5nIGxhbmd1YWdlcywgdGVzdGluZyB0b29scywgYW5kIG1hbnkgb3RoZXIgdXNlIGNhc2VzLgoKIyMgUHJvamVjdCBTdGF0dXMKClRoZSBEaWdpdGFsT2NlYW4gT3BlbkFQSSBTcGVjaWZpY2F0aW9uIGlzIGN1cnJlbnRseSBpbiAqKkVhcmx5IEF2YWlsYWJpbGl0eSoqLiBXaGlsZSB0aGUgc3BlY2lmaWNhdGlvbiBzaG91bGQgYmUgYWNjdXJhdGUsIGl0IGlzIHVuZGVyIGFjdGl2ZSBkZXZlbG9wbWVudC4gVGhlIHN0cnVjdHVyZSBvZiB0aGlzIHJlcG9zaXRvcnkgbWF5IGNvbnRpbnVlIHRvIGV2b2x2ZS4gSWYgeW91IGVuY291bnRlciBhbnkgaW5hY2N1cmFjaWVzIG9yIGhhdmUgZmVlZGJhY2sgb24gaG93IGl0IGNhbiBiZXR0ZXIgc3VpdGUgeW91ciB1c2UgY2FzZSwgcGxlYXNlIFtvcGVuIGFuIGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20vZGlnaXRhbG9jZWFuL2FwaXYyLW9wZW5hcGkvaXNzdWVzL25ldykgdG8gbGV0IHVzIGtub3cuCgojIyBTcGVjaWZpY2F0aW9uCgpUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgdGhlIHNvdXJjZSBmaWxlcyB1c2VkIHRvIGNvbXBpbGUgdGhlIHNwZWNpZmljYXRpb24uIE9uIGVhY2ggbWVyZ2UgdG8gYG1haW5gLCBhIGJ1bmRsZWQgdmVyc2lvbiBpcyBnZW5lcmF0ZWQgY29udGFpbmluZyB0aGUgZW50aXJlIHNwZWNpZmljYXRpb24uIEEgZG9jdW1lbnRhdGlvbiBwcmV2aWV3IHVzaW5nIFtSZWRvY10oaHR0cHM6Ly9naXRodWIuY29tL1JlZG9jbHkvcmVkb2MpIGlzIGFsc28gcHJvdmlkZWQuCgpbIVtTcGVjIERvd25sb2FkXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0Rvd25sb2FkLU9wZW5BUEklMjB2MyUyMFNwZWMtYmx1ZT9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289ZGlnaXRhbG9jZWFuKV0oaHR0cHM6Ly9hcGktZW5naW5lZXJpbmcubnljMy5kaWdpdGFsb2NlYW5zcGFjZXMuY29tL3NwZWMtY2kvRGlnaXRhbE9jZWFuLXB1YmxpYy52Mi55YW1sKSBbIVtEb2NzIFByZXZpZXddKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvUHJldmlldy1PcGVuQVBJJTIwRG9jdW1lbnRhdGlvbi1ibHVlP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1kaWdpdGFsb2NlYW4pXShodHRwczovL2FwaS1lbmdpbmVlcmluZy5ueWMzLmRpZ2l0YWxvY2VhbnNwYWNlcy5jb20vc3BlYy1jaS9yZWRvYy1pbmRleC5odG1sKQoKIyMjIyBQb3N0bWFuIENvbGxlY3Rpb24KCkluIG9yZGVyIHRvIGdlbmVyYXRlIGEgY29sbGVjdGlvbiB0aGF0IG1heSBiZSBpbXBvcnRlZCB0byBQb3N0bWFuLCBydW46CgpgYGBzaAptYWtlIGNvbGxlY3Rpb24KYGBgCgpUaGUgcmVzdWx0cyBjYW4gYmUgZm91bmQgaW4gYHRlc3RzL3Bvc3RtYW4uanNvbmAuCgojIyBEZXZlbG9wbWVudAoKVG8gZ2VuZXJhdGUgYSBidW5kbGVkIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gbG9jYWxseSwgcnVuOgoKYGBgc2gKbWFrZSBidW5kbGUKYGBgCgpUbyBwcmV2aWV3IHRoZSBkb2N1bWVudGF0aW9uIGxvY2FsbHksIHJ1bjoKCmBgYHNoCm1ha2UgcHJldmlldwpgYGAKClRoZSBkb2N1bWVudGF0aW9uIHdpbGwgYmUgYXZhaWxhYmxlIGF0OiBgaHR0cDovLzEyNy4wLjAuMTo4MDgwYC4KCkZvciBtb3JlIGRldGFpbHMgb24gb3VyIGRldmVsb3BtZW50IHByb2Nlc3MgYW5kIHRoZSBzdHJ1Y3R1cmUgb2YgdGhpcyByZXBvc2l0b3J5LCBzZWUgW0NPTlRSSUJVVElORy5tZF0oL0NPTlRSSUJVVElORy5tZCkuCgojIyBMaWNlbnNlCgpUaGlzIHNwZWNpZmljYXRpb24gaXMgbGljZW5zZWQgdW5kZXIgdGhlIFtBcGFjaGUgTGljZW5zZSAyLjBdKC9MSUNFTlNFKS4K readmeEtag: '"95ccb6f1f17c68cb42bd90853f6ed06c98171e7c"' readmeLastModified: Tue, 05 Aug 2025 13:52:58 GMT repositoryId: 264196717 description: The OpenAPI v3 specification for DigitalOcean's public API. created: '2020-05-15T13:10:36Z' updated: '2026-02-02T10:43:33Z' language: JavaScript archived: false stars: 133 watchers: 8 forks: 133 owner: digitalocean logo: https://avatars.githubusercontent.com/u/4650108?v=4 license: Apache-2.0 repoEtag: '"7f2a0b71567c7f22670fc274496cf1889e9f74353fce51b2f86f7a2ddf3cd2ea"' repoLastModified: Mon, 02 Feb 2026 10:43:33 GMT foundInMaster: true category: - Testing - Parsers id: 496d74396e4ed66d5b8c2865dbbe953f - source: openapi3 tags repository: https://github.com/hummingbird-me/api-docs v3: true repositoryMetadata: base64Readme: >- IyBBUEkgRG9jcwpbIVtBUEkgRG9jcyBEZXBsb3ltZW50XShodHRwczovL2dpdGh1Yi5jb20vaHVtbWluZ2JpcmQtbWUvYXBpLWRvY3Mvd29ya2Zsb3dzL0FQSSUyMERvY3MlMjBEZXBsb3ltZW50L2JhZGdlLnN2ZyldKGh0dHBzOi8vaHVtbWluZ2JpcmQtbWUuZ2l0aHViLmlvL2FwaS1kb2NzKQoKS2l0c3UgaXMgYSBtb2Rlcm4gYW5pbWUgZGlzY292ZXJ5IHBsYXRmb3JtIHRoYXQgaGVscHMgeW91IHRyYWNrIHRoZSBhbmltZSB5b3UncmUgd2F0Y2hpbmcsIGRpc2NvdmVyIG5ldyBhbmltZSBhbmQgc29jaWFsaXplIHdpdGggb3RoZXIgZmFucy4KCi0tLQoqKjxwIGFsaWduPSJjZW50ZXIiPlRoaXMgaXMgb3VyIFthcGkgZG9jc10gcmVwb3NpdG9yeS48YnIgLz5DaGVjayBvdXQgdGhlIFt0b29sc10sIFt3ZWJdLCBbbW9iaWxlXSBhbmQgW3NlcnZlcl0gcmVwb3NpdG9yaWVzLjwvcD4qKgoKW3Rvb2xzXTpodHRwczovL2dpdGh1Yi5jb20vaHVtbWluZ2JpcmQtbWUva2l0c3UtdG9vbHMKW3dlYl06aHR0cHM6Ly9naXRodWIuY29tL2h1bW1pbmdiaXJkLW1lL2tpdHN1LXdlYgpbc2VydmVyXTpodHRwczovL2dpdGh1Yi5jb20vaHVtbWluZ2JpcmQtbWUva2l0c3Utc2VydmVyClttb2JpbGVdOmh0dHBzOi8vZ2l0aHViLmNvbS9odW1taW5nYmlyZC1tZS9raXRzdS1tb2JpbGUKW2FwaSBkb2NzXTpodHRwczovL2tpdHN1LmRvY3MuYXBpYXJ5LmlvCgotLS0KCiMjIERvY3VtZW50YXRpb24KCkxlZ2FjeSBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBvbiBBcGlhcnk6IGh0dHBzOi8va2l0c3UuZG9jcy5hcGlhcnkuaW8vCgpUaGUgQVBJIGRvY3VtZW50YXRpb24gaXMgY3VycmVudGx5IGJlaW5nIGNvbnZlcnRlZCBmcm9tIEFQSSBCbHVlcHJpbnQgdG8gT3BlbkFQSSAzLiBZb3UgY2FuIHZpZXcgdGhlIHByb2dyZXNzIGF0OiBodHRwczovL2h1bW1pbmdiaXJkLW1lLmdpdGh1Yi5pby9hcGktZG9jcyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL2h1bW1pbmdiaXJkLW1lL2FwaS1kb2NzL2lzc3Vlcy83MQoKIyMgQ29udHJpYnV0aW5nCgpUaGUgZG9jdW1lbnRhdGlvbiBpcyB3cml0dGVuIHdpdGggW09wZW5BUEkgM11bM10gYW5kIFtZQU1MIDEuMl1bNF0uIFRyaXZpYWwgY2hhbmdlcyBjYW4gYmUgYWRkZWQgdXNpbmcgR2l0SHViJ3MgYnVpbHQtaW4gZWRpdG9yLiBGb3IgYmlnZ2VyIGNoYW5nZXMgaXQgaXMgYWR2aXNlZCB0byBmb2xsb3cgdGhlIHN0ZXBzIGJlbG93LgoKSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyB5b3UgY2FuOgotIEFzayB1cyBpbiBgI2FwaWAgb24gb3VyIFtEaXNjb3JkIHNlcnZlcl1bN10KLSBQaW5nIFtAd29waWFuXSwgW0BtYXR0aGV3ZGlhc10gb3IgW0BudWNrXSBvbiBLaXRzdS4KCiMjIyBGaWxlIFN0cnVjdHVyZQoKVGhlIE9wZW5BUEkgc2NoZW1hIGlzIHNwbGl0IGludG8gbXVsdGlwbGUgZGlyZWN0b3JpZXMuIFdoaWxlIGl0IGxvb2tzIGNvbXBsaWNhdGVkLCBpdCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgcmVwZWF0ZWQgcGFyYW1ldGVycyBhbmQgcmVzb3VyY2UgYXR0cmlidXRlcy9yZWxhdGlvbnNoaXBzIHRvIG5lYXIgemVyby4KClJlc291cmNlLCByZWxhdGlvbnNoaXAgYW5kIGZpbHRlciBpbmhlcml0ZW5jZSBtYXRjaGVzIHRoZSBtb2RlbCBkZWZpbml0aW9ucyBvbiB0aGUgc2VydmVyIHJlcG8uCgpgYGB5YW1sCmFwaQrilJzilIDilIDilIBwYXJhbWV0ZXJzICAjIFF1ZXJ5IFBhcmFtZXRlcnMK4pSCICAg4pSU4pSA4pSA4pSAcGF0aCAgICAjIFBhdGggUGFyYW1ldGVycwrilIIK4pSc4pSA4pSA4pSAcGF0aHMgICAgICAgIyBFbmRwb2ludHMsIGdyb3VwZWQgYnkgdGFnR3JvdXBzCuKUggrilJzilIDilIDilIByZXNvdXJjZXMgICAjIFRvcC1sZXZlbCBKU09OOkFQSSByZXNvdXJjZSBzdHJ1Y3R1cmVzIChvbmUsIG1hbnksIGluY2x1ZGVkKQrilIIgICDilJzilIDilIDilIBhbmltZQrilIIgICDilJTilIDilIDilIBlcnJvciAgICMgSlNPTjpBUEkgZXJyb3IgcmVzcG9uc2VzCuKUggrilJTilIDilIDilIBzY2hlbWFzICAgICAgICAgICAgICAgICAgICAgICAjIERhdGEgTW9kZWxzCiAgICDilJzilIDilIDilIBlbnVtcwogICAg4pSCCiAgICDilJzilIDilIDilIBmaWx0ZXJzICAgICAgICAgICAgICAgICAgICMgUmV1c2FibGUgSlNPTjpBUEkgZmlsdGVyIHBhcmFtZXRlcnMKICAgIOKUgiAgIOKUnOKUgOKUgOKUgHJlc291cmNlICAgICAgICAgICAgICAjIFJvb3QgZmlsdGVyIHBhcmFtZXRlciBmb3IgZWFjaCByZXNvdXJjZQogICAg4pSCICAg4pSU4pSA4pSA4pSAcmVzb3VyY2VGaWx0ZXJzICAgICAgICMgR3JvdXBlZCBmaWx0ZXJzIChpbmhlcml0YW5jZSkKICAgIOKUggogICAg4pSc4pSA4pSA4pSAbGlua3MgICAgICAgICAgICAgICAgICAgICAjIEpTT046QVBJIGxpbmsgcHJvcGVydGllcwogICAg4pSCCiAgICDilJzilIDilIDilIBtZXRhICAgICAgICAgICAgICAgICAgICAgICMgSlNPTjpBUEkgbWV0YSBwcm9wZXJ0aWVzCiAgICDilIIKICAgIOKUlOKUgOKUgOKUgHJlc291cmNlcyAgICAgICAgICAgICAgICAgIyBKU09OOkFQSSByZXNvdXJjZXMKICAgICAgICDilJzilIDilIDilIByZWxhdGlvbnNoaXBzICAgICAgICAgIyBKU09OOkFQSSByZWxhdGlvbnNoaXBzCiAgICAgICAg4pSU4pSA4pSA4pSAcmVzb3VyY2VSZWxhdGlvbnNoaXBzICMgR3JvdXBlZCByZWxhdGlvbnNoaXBzIChpbmhlcml0YW5jZSkKYGBgCgojIyMgQmFzZSBGaWxlcwoKVGhlc2UgYXJlIGRlZmluZWQgYXMgc2VwZXJhdGUgcmVzb3VyY2VzIGluIHRoZSBzZXJ2ZXIgZGVmaW5pdGlvbnMgYW5kIGFyZSBpbmhlcml0ZWQgYnkgYWxsIG90aGVyIGRlZmluaXRpb25zLiBDaGVjayBgYW5pbWVgIGFuZCBgbWVkaWFgIGluIGBhcGkvc2NoZW1hcy9yZXNvdXJjZXNgIGFuZCBgYXBpL3NjaGVtYXMvZmlsdGVycy9yZXNvdXJjZUZpbHRlcnNgIHRvIHNlZSBob3cgaW5oZXJpdGFuY2UgaXMgYXBwbGllZC4KCiMjIyMgUmVzb3VyY2VzCgpBbGwgcmVzb3VyY2VzIGluaGVyaXQgZnJvbSBgYXBpL3NjaGVtYXMvcmVzb3VyY2VzL2Jhc2UueW1sYAoKSW4gYWRkaXRpb246CgotIFNsdWdnYWJsZSByZXNvdXJjZXMgaW5oZXJpdCBmcm9tIGBhcGkvc2NoZW1hcy9yZXNvdXJjZXMvYmFzZV9zbHVnZ2FibGUueW1sYAotIEVwaXNvZGljIHJlc291cmNlcyBpbmhlcml0IGZyb20gYGFwaS9zY2hlbWFzL3Jlc291cmNlcy9iYXNlX2VwaXNvZGljLnltbGAKCiMjIyMgUmVzb3VyY2UgUmVsYXRpb25zaGlwcwoKLSBFcGlzb2RpYyByZXNvdXJjZXMgaW5oZXJpdCBmcm9tIGBhcGkvc2NoZW1hcy9yZXNvdXJjZXMvcmVzb3VyY2VSZWxhdGlvbnNoaXBzL2Jhc2VfZXBpc29kaWMueW1sYAoKIyMjIyBGaWx0ZXJzCgpBbGwgcmVzb3VyY2VzIGluaGVyaXQgZnJvbSBgYXBpL3NjaGVtYXMvZmlsdGVycy9yZXNvdXJjZUZpbHRlcnMvYmFzZS55bWxgCgpJbiBhZGRpaW9uOgoKLSBTbHVnZ2FibGUgcmVzb3VyY2VzIGluaGVyaXQgZnJvbSBgYXBpL3NjaGVtYXMvZmlsdGVycy9yZXNvdXJjZUZpbHRlcnMvYmFzZV9zbHVnZ2FibGUueW1sYAotIEVwaXNvZGljIHJlc291cmNlcyBpbmhlcml0IGZyb20gYGFwaS9zY2hlbWFzL2ZpbHRlcnMvcmVzb3VyY2VGaWx0ZXJzL2Jhc2VfZXBpc29kaWMueW1sYAoKIyMjIFJlcXVpcmVtZW50cwoKLSBbZ2l0XShodHRwczovL2dpdC1zY20uY29tKSA+IGAyLjAuMGAKLSBbbm9kZS5qc10oaHR0cHM6Ly9ub2RlanMub3JnKSA+IGAxMi4wLjBgCi0gW3lhcm5dKGh0dHBzOi8veWFybnBrZy5jb20pID4gYDEuMjIuMGAKCiMjIyBEZXZlbG9wbWVudAoKMS4gW0ZvcmsgdGhlIHJlcG9dWzVdCgoyLiBDbG9uZSB0aGUgcmVwbyAoYGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20ve3lvdXJ1c2VybmFtZX0vYXBpLWRvY3MuZ2l0YCkKCjMuIENyZWF0ZSBhIG5ldyBicmFuY2ggKGBnaXQgY2hlY2tvdXQgLWIgaW1wcm92ZS1kb2NzYCkKCjQuIEluc3RhbGwgZGVwZW5kZW5jaWVzIChgeWFybmApCgo1LiBNYWtlIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGluIHRoZSBzb3VyY2UgZmlsZXMKICAtIENoZWNrIHRoZSBjaGFuZ2VzIGxvY2FsbHkgd2l0aCBgeWFybiBzdGFydGAKCjYuIENvbW1pdCB5b3VyIGNoYW5nZXMgKGBnaXQgY29tbWl0IC1hbSAnZmVhdDogaW1wcm92ZSBkb2NzJ2ApCgo3LiBQdXNoIHRvIHlvdXIgYnJhbmNoIChgZ2l0IHB1c2ggb3JpZ2luIGltcHJvdmUtZG9jc2ApCgo4LiBbQ3JlYXRlIGEgUHVsbCBSZXF1ZXN0XVs2XQoKIyMgQ29udHJpYnV0b3JzCgpbIVtdKGh0dHBzOi8vc291cmNlcmVyLmlvL2ZhbWUvd29waWFuL2h1bW1pbmdiaXJkLW1lL2FwaS1kb2NzL2ltYWdlcy8wKV0oaHR0cHM6Ly9zb3VyY2VyZXIuaW8vZmFtZS93b3BpYW4vaHVtbWluZ2JpcmQtbWUvYXBpLWRvY3MvbGlua3MvMClbIVtdKGh0dHBzOi8vc291cmNlcmVyLmlvL2ZhbWUvd29waWFuL2h1bW1pbmdiaXJkLW1lL2FwaS1kb2NzL2ltYWdlcy8xKV0oaHR0cHM6Ly9zb3VyY2VyZXIuaW8vZmFtZS93b3BpYW4vaHVtbWluZ2JpcmQtbWUvYXBpLWRvY3MvbGlua3MvMSlbIVtdKGh0dHBzOi8vc291cmNlcmVyLmlvL2ZhbWUvd29waWFuL2h1bW1pbmdiaXJkLW1lL2FwaS1kb2NzL2ltYWdlcy8yKV0oaHR0cHM6Ly9zb3VyY2VyZXIuaW8vZmFtZS93b3BpYW4vaHVtbWluZ2JpcmQtbWUvYXBpLWRvY3MvbGlua3MvMilbIVtdKGh0dHBzOi8vc291cmNlcmVyLmlvL2ZhbWUvd29waWFuL2h1bW1pbmdiaXJkLW1lL2FwaS1kb2NzL2ltYWdlcy8zKV0oaHR0cHM6Ly9zb3VyY2VyZXIuaW8vZmFtZS93b3BpYW4vaHVtbWluZ2JpcmQtbWUvYXBpLWRvY3MvbGlua3MvMylbIVtdKGh0dHBzOi8vc291cmNlcmVyLmlvL2ZhbWUvd29waWFuL2h1bW1pbmdiaXJkLW1lL2FwaS1kb2NzL2ltYWdlcy80KV0oaHR0cHM6Ly9zb3VyY2VyZXIuaW8vZmFtZS93b3BpYW4vaHVtbWluZ2JpcmQtbWUvYXBpLWRvY3MvbGlua3MvNClbIVtdKGh0dHBzOi8vc291cmNlcmVyLmlvL2ZhbWUvd29waWFuL2h1bW1pbmdiaXJkLW1lL2FwaS1kb2NzL2ltYWdlcy81KV0oaHR0cHM6Ly9zb3VyY2VyZXIuaW8vZmFtZS93b3BpYW4vaHVtbWluZ2JpcmQtbWUvYXBpLWRvY3MvbGlua3MvNSlbIVtdKGh0dHBzOi8vc291cmNlcmVyLmlvL2ZhbWUvd29waWFuL2h1bW1pbmdiaXJkLW1lL2FwaS1kb2NzL2ltYWdlcy82KV0oaHR0cHM6Ly9zb3VyY2VyZXIuaW8vZmFtZS93b3BpYW4vaHVtbWluZ2JpcmQtbWUvYXBpLWRvY3MvbGlua3MvNilbIVtdKGh0dHBzOi8vc291cmNlcmVyLmlvL2ZhbWUvd29waWFuL2h1bW1pbmdiaXJkLW1lL2FwaS1kb2NzL2ltYWdlcy83KV0oaHR0cHM6Ly9zb3VyY2VyZXIuaW8vZmFtZS93b3BpYW4vaHVtbWluZ2JpcmQtbWUvYXBpLWRvY3MvbGlua3MvNykKClswXTpodHRwczovL2dpdGh1Yi5jb20vaHVtbWluZ2JpcmQtbWUvaHVtbWluZ2JpcmQtc2VydmVyClsxXTpodHRwczovL2dpdGh1Yi5jb20vaHVtbWluZ2JpcmQtbWUvaHVtbWluZ2JpcmQtY2xpZW50ClszXTpodHRwOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMwpbNF06aHR0cHM6Ly95YW1sLm9yZy9zcGVjLzEuMi9zcGVjLmh0bWwKWzVdOmh0dHBzOi8vaGVscC5naXRodWIuY29tL2FydGljbGVzL2ZvcmstYS1yZXBvLyNmb3JrLWFuLWV4YW1wbGUtcmVwb3NpdG9yeQpbNl06aHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20vYXJ0aWNsZXMvY3JlYXRpbmctYS1wdWxsLXJlcXVlc3QvI2NyZWF0aW5nLXRoZS1wdWxsLXJlcXVlc3QKWzddOmh0dHBzOi8vaW52aXRlLmdnL2tpdHN1CgpbQHdvcGlhbl06aHR0cHM6Ly9raXRzdS5pby91c2Vycy93b3BpYW4KW0BtYXR0aGV3ZGlhc106aHR0cHM6Ly9raXRzdS5pby91c2Vycy9tYXR0aGV3ZGlhcwpbQG51Y2tdOmh0dHBzOi8va2l0c3UuaW8vdXNlcnMvbnVjawo= readmeEtag: '"ddb20eabf757e8b276878335d2c2c6b9c4190c81"' readmeLastModified: Sat, 28 Oct 2023 01:18:47 GMT repositoryId: 92471764 description: 🤖 API documentation for Kitsu created: '2017-05-26T04:21:01Z' updated: '2026-01-28T18:20:54Z' language: YAML archived: false stars: 118 watchers: 10 forks: 207 owner: hummingbird-me logo: https://avatars.githubusercontent.com/u/7648832?v=4 repoEtag: '"5ae1fe2186fe888045b8f792ac90afdaacabe66239a2af6a2533b6477bac0a22"' repoLastModified: Wed, 28 Jan 2026 18:20:54 GMT foundInMaster: true category: Low-level Tooling id: 76ad1690754ba6c1e408622d1ed39e6c - source: openapi3 tags repository: https://github.com/oapigen/actix-swagger v3: true repositoryMetadata: base64Readme: >- IyBhY3RpeCBzd2FnZ2VyCgojIyBVc2FnZQoKPiBOb3QgZm9yIHByb2R1Y3Rpb24gdXNlIHlldAoKYGBgYmFzaAojIEFkZCBjYXJnbyBjb21tYW5kIHRvIHNpbXBsaWZ5IHVzYWdlCmNhcmdvIGluc3RhbGwgY2FyZ28tc3dhZ2cKCiMgQWRkIHN1cHBvcnQgbGlicmFyeSB0byB5b3VyIHByb2plY3QgKHZpYSBjYXJnby1lZGl0IG9yIG1hbnVhbCkKY2FyZ28gYWRkIGFjdGl4LXN3YWdnZXIKCiMgR2VuZXJhdGUgeW91ciBjb2RlIHdpdGggY2FyZ28gc3ViY29tbWFuZApjYXJnbyBzd2FnZyAuL29wZW5hcGkueWFtbCAtLW91dC1maWxlIC4vc3JjL2FwaS5ycwoKIyBGb3JtYXQgZmlsZSBhZnRlcgpydXN0Zm10IC4vc3JjL2FwaS5ycwpgYGAKCiMjIERldmVsb3BtZW50CgpJdCB1c2VzIFtpbnN0YV0oaHR0cHM6Ly9naXRodWIuY29tL21pdHN1aGlrby9pbnN0YSkgZm9yIHNuYXBzaG90IHRlc3RpbmcuCgpJbnN0YWxsIGBjYXJnby1pbnN0YWAgdG8gYmV0dGVyIHJldmlldyBleHBlcmllbmNlLgoKIyMjIE1lbWJlcnMKCi0gYGNhcmdvLWFjdGl4YCDigJQgc3VwcG9ydCBsaWJyYXJ5LCBjb250ZW50cyB0eXBlZCByZXNwb25zZSBuYW1lZCBgQW5zd2VyYCBhbmQgY3VzdG9tIGBNZXRob2RgIGFuZCBgQ29udGVudFR5cGVgIHRoYXQgc3VwcG9ydHMgaW4gc3dhZ2cKLSBgc3dhZ2dgIOKAlCBsaWJyYXJ5IHRoYXQgdHJhbnNmb3JtcyBvcGVuYXBpMyAoeWFtbHxqc29uKSBzcGVjIHRvIHJ1c3QgY29kZQotIGBjYXJnby1zd2FnZ2Ag4oCUIHNhbWUgYXMgYHN3YWdnYCBidXQgZm9yIGNsaQotIGBkZW1vYCDigJQgY2hlY2tzIHRoYXQgZ2VuZXJhdGVkIGNvZGUgaXMgY29tcGlsZXMKCiMjIyBEZW1vCgpgYGBiYXNoCiMgdG8gY29udmVydCAuL2RlbW8vb3BlbmFwaS55YW1sIHRvIC4vZGVtby9zcmMvbGliLnJzCiMgZm9ybWF0IC4vZGVtby9zcmMvbGliLnJzCiMgYW5kIGNoZWNrIGp1c3QgcnVuCmNhcmdvIGluc3RhbGwgY2FyZ28tbWFrZQpjYXJnbyBtYWtlCmBgYAo= readmeEtag: '"822b2abdf32e5903eb852ed8facd9a106ed97d47"' readmeLastModified: Tue, 15 Nov 2022 12:51:21 GMT repositoryId: 235156358 description: Swagger code generator for actix-web framework created: '2020-01-20T17:21:33Z' updated: '2025-06-03T09:55:56Z' language: Rust archived: true stars: 112 watchers: 7 forks: 8 owner: oapigen logo: https://avatars.githubusercontent.com/u/44164641?v=4 license: MIT repoEtag: '"6eb6253b6dcbd0f9d62a48b8c5c2dce97991ee63c99378d1708ebedd462c6902"' repoLastModified: Tue, 03 Jun 2025 09:55:56 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: 2ef5d9b209ad59a8276d793ce09da95e oldLocations: - https://github.com/openapigen/actix-swagger - source: openapi3 tags repository: https://github.com/nasruddin/spring-boot-3-jwt-auth v3: true repositoryMetadata: base64Readme: >- IyBzcHJpbmctYm9vdC0zLWp3dC1hdXRoCjprZXk6IFNhbXBsZSBTcHJpbmcgYm9vdCAzIGFwcGxpY2F0aW9uIGZvciBBdXRoZW50aWNhdGlvbiBhbmQgQXV0aG9yaXphdGlvbgoKIyMgRmVhdHVyZXMKKiBDdXN0b21pemFibGUgaGVhZGVyKFgtQXV0aC1Ub2tlbikgdG8gcGFzcyBBdXRoIHRva2VuLgoqIEpXVCBmb3IgdG9rZW4gY3JlYXRpb24gYW5kIHZhbGlkYXRpb24uCiogUm9sZSBiYXNlZCBhdXRob3JpemF0aW9uLgoqIERldmljZSBiYXNlZCBhdXRoLgoqIEN1c3RvbSBWYWxpZGF0b3JzCiogU3ByaW5nIGRvYy4KCgojIyBSdW5uaW5nIHRoZSBzYW1wbGUgYXBwCmBgYAptdm4gc3ByaW5nLWJvb3Q6cnVuCmBgYAoKIyMgUmVnaXN0ZXJpbmcgYSBVc2VyCmBgYApjdXJsIC1YIFBPU1QgImh0dHA6Ly9sb2NhbGhvc3Q6OTAwMC9hcGkvYXV0aC9yZWdpc3RlciIgLUggICJhY2NlcHQ6ICovKiIgLUggICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIC1kICJ7XCJ1c2VybmFtZVwiOlwibmFzcnVkZGluXCIsXCJwYXNzd29yZFwiOlwicEBzc3cwMGRcIixcImRldmljZVwiOlwid2ViXCIsXCJlbWFpbFwiOlwibmFzcnVkZGluQGdtYWlsLmNvbVwifSIKYGBgCgpgYGAKewogICAgImlkIjoyLAogICAgInVzZXJuYW1lIjoibmFzcnVkZGluIiwKICAgICJwYXNzd29yZCI6IiQyYSQxMCRVM0NSNFQxR293ZDUwUS4weUsvVXVPaC5YV1Z4MEJZSWU3QmlBbXltWFouTVlQVXRVNUYuZSIsCiAgICAiZW1haWwiOiJuYXNydWRkaW5AZ21haWwuY29tIiwKICAgICJsYXN0UGFzc3dvcmRSZXNldCI6IjIwMjMtMDktMTRUMDg6NDE6MTAuMDgwKzAwOjAwIiwKICAgICJhdXRob3JpdGllcyI6IkFETUlOIgp9CmBgYApIMi1jb25zb2xlIGNhbiBiZSBhY2Nlc3NlZCBhdCA8aHR0cDovL2xvY2FsaG9zdDo5MDAwL2FwaS9oMi1jb25zb2xlPgohW0pXVCBEZWNvZGVkXShodHRwczovL2dpdGh1Yi5jb20vTmFzcnVkZGluL3NwcmluZy1ib290LWp3dC1hdXRoL2Jsb2IvcG9tLXVwZGF0ZS9pbWFnZXMvaDItY29uc29sZS5wbmc/cmF3PXRydWUpCgojIyBMb2dpbiBhIFVzZXIgLyBGZXRjaCBUb2tlbgpgYGAKY3VybCAtWCBQT1NUICJodHRwOi8vbG9jYWxob3N0OjkwMDAvYXBpL2F1dGgiIC1IICAiYWNjZXB0OiAqLyoiIC1IICAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiAtZCAie1widXNlcm5hbWVcIjpcIm5hc3J1ZGRpblwiLFwicGFzc3dvcmRcIjpcInBAc3N3MDBkXCIsXCJkZXZpY2VcIjpcIndlYlwifSIKYGBgCmBgYAp7InRva2VuIjoiZXlKaGJHY2lPaUpJVXpVeE1pSjkuZXlKemRXSWlPaUp1WVhOeWRXUmthVzRpTENKaGRXUnBaVzVqWlNJNkluZGxZaUlzSW1OeVpXRjBaV1FpT2pFMk9UUTJPREUyT0RFM01EVXNJbVY0Y0NJNk1UWTVOVEk0TmpRNE1YMC5NeWR3SVd6TjNTZ0N2QjhjWW96S2NSMnRITUNNNW5ySVBYVUJ0eDRvODJvdDF0YUxfTlFNNVRSSFo0eU9jOXVVY1pGcnoxWFFBTF9mRE5YQUl3bVp4dyJ9CmBgYAoKIVtKV1QgRGVjb2RlZF0oaHR0cHM6Ly9naXRodWIuY29tL05hc3J1ZGRpbi9zcHJpbmctYm9vdC0zLWp3dC1hdXRoL2Jsb2IvbWFzdGVyL2ltYWdlcy9kZWNvZGVkLWp3dC5wbmc/cmF3PXRydWUpCgojIyBBY2Nlc3NpbmcgVXNlci9Qcm90ZWN0ZWQgQVBJCgpXaXRob3V0IHNldHRpbmcgWC1BVVRILVRPS0VOCmBgYApjdXJsIC1YIEdFVCAiaHR0cDovL2xvY2FsaG9zdDo5MDAwL2FwaS91c2VyL25hc3J1ZGRpbiIgLUggICJhY2NlcHQ6ICovKiIKYGBgCmBgYAp7CiAgICAidGltZXN0YW1wIjoiMjAyMy0wOS0xNFQwODo1NzowOC40MDMrMDA6MDAiLAogICAgInN0YXR1cyI6NDAxLAogICAgImVycm9yIjoiVW5hdXRob3JpemVkIiwKICAgICJwYXRoIjoiL2FwaS91c2VyL25hc3J1ZGRpbiIKfSAKYGBgCgpXaXRoIHNldHRpbmcgWC1BVVRILVRPS0VOCmBgYApjdXJsIC1YIEdFVCAiaHR0cDovL2xvY2FsaG9zdDo5MDAwL2FwaS91c2Vycy9uYXNydWRkaW4iIC1IICAiYWNjZXB0OiAqLyoiIC1IICAiWC1BdXRoLVRva2VuOiBleUpoYkdjaU9pSklVelV4TWlKOS5leUp6ZFdJaU9pSnVZWE55ZFdSa2FXNGlMQ0poZFdScFpXNWpaU0k2SW5kbFlpSXNJbU55WldGMFpXUWlPakUyT1RRMk9ERTJPREUzTURVc0ltVjRjQ0k2TVRZNU5USTROalE0TVgwLk15ZHdJV3pOM1NnQ3ZCOGNZb3pLY1IydEhNQ001bnJJUFhVQnR4NG84Mm90MXRhTF9OUU01VFJIWjR5T2M5dVVjWkZyejFYUUFMX2ZETlhBSXdtWnh3IgpgYGAKYGBgCnsKICAgICJpZCI6MSwKICAgICJ1c2VybmFtZSI6Im5hc3J1ZGRpbiIsCiAgICAicGFzc3dvcmQiOiIkMmEkMTAkZHE2dUZsZWh0ZXRzZkk2Z2xMa0EuT2Flb0lFdTVQUHFJVk5aSERNQ0NpRWVqOGIvMHZoV2EiLCJlbWFpbCI6Im5hc3J1ZGRpbkBnbWFpbC5jb20iLAogICAgImxhc3RQYXNzd29yZFJlc2V0IjoiMjAyMy0wOS0xNFQwODo0MjozNy43NTgrMDA6MDAiLAogICAgImF1dGhvcml0aWVzIjoiQURNSU4iCn0gCmBgYAoKIyMgQWRtaW4gQVBJCmBgYApjdXJsIC1YIEdFVCAiaHR0cDovL2xvY2FsaG9zdDo5MDAwL2FwaS9hZG1pbiIgLUggICJhY2NlcHQ6ICovKiIgLUggICJYLUF1dGgtVG9rZW46IGV5SmhiR2NpT2lKSVV6VXhNaUo5LmV5SnpkV0lpT2lKdVlYTnlkV1JrYVc0aUxDSmhkV1JwWlc1alpTSTZJbmRsWWlJc0ltTnlaV0YwWldRaU9qRTJPVFEyT0RFMk9ERTNNRFVzSW1WNGNDSTZNVFk1TlRJNE5qUTRNWDAuTXlkd0lXek4zU2dDdkI4Y1lvektjUjJ0SE1DTTVucklQWFVCdHg0bzgyb3QxdGFMX05RTTVUUkhaNHlPYzl1VWNaRnJ6MVhRQUxfZkROWEFJd21aeHciCmBgYApgYGAKOk8KYGBgCgojIyBPcGVuQVBJIFN3YWdnZXIKMS4gU3dhZ2dlciBjYW4gYmUgYWNjZXNzZWQgYXQgPGh0dHA6Ly9sb2NhbGhvc3Q6OTAwMC9hcGkvc3dhZ2dlci11aS9pbmRleC5odG1sPgoKIVtTd2FnZ2VyXShodHRwczovL2dpdGh1Yi5jb20vTmFzcnVkZGluL3NwcmluZy1ib290LWp3dC1hdXRoL2Jsb2IvcG9tLXVwZGF0ZS9pbWFnZXMvc3dhZ2dlci5wbmc/cmF3PXRydWUpCgoyLiBBUEkgRG9jcyBjYW4gYmUgYWNjZXNzZWQgYXQgPGh0dHA6Ly9sb2NhbGhvc3Q6OTAwMC9hcGkvYXBpLWRvY3M+CiFbQVBJIERvY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9OYXNydWRkaW4vc3ByaW5nLWJvb3Qtand0LWF1dGgvYmxvYi9wb20tdXBkYXRlL2ltYWdlcy9vcGVuLWFwaS5wbmc/cmF3PXRydWUpCg== readmeEtag: '"8f2664385224ec7eb4d159ef52779751a747eb3e"' readmeLastModified: Thu, 28 Sep 2023 19:47:26 GMT repositoryId: 51244983 description: >- :key: Sample Spring boot application secured using JWT auth in custom header(X-Auth-Token). created: '2016-02-07T11:17:36Z' updated: '2025-12-17T04:18:19Z' language: Java archived: false stars: 107 watchers: 5 forks: 35 owner: Nasruddin logo: https://avatars.githubusercontent.com/u/2290767?v=4 license: MIT repoEtag: '"ea21748c4e48ce8d503cb7fe1e64eceb8d14e6c57631ebe4211b9b933344e56c"' repoLastModified: Wed, 17 Dec 2025 04:18:19 GMT foundInMaster: true category: Server Implementations id: bb56c80ba4c7463e50ddc2959f3113f1 oldLocations: - https://github.com/nasruddin/spring-boot-jwt-auth - source: openapi3 tags repository: https://github.com/contiamo/openapi-generator-go v3: true repositoryMetadata: base64Readme: >- b3BlbmFwaS1nZW5lcmF0b3ItZ28KPT09PT09PT09PT09PT09PT09PT0KCiFbdGVzdF0oaHR0cHM6Ly9naXRodWIuY29tL2NvbnRpYW1vL29wZW5hcGktZ2VuZXJhdG9yLWdvL3dvcmtmbG93cy90ZXN0L2JhZGdlLnN2ZykKCkdlbmVyYXRlIGdvIGNvZGUgZnJvbSBhbiBvcGVuYXBpIHNwZWMhCgpgYGBiYXNoCiMgZ2VuZXJhdGUgc3RydWN0cywgZW51bXMgYW5kIGEgcm91dGVyIGZyb20gYSBzcGVjIGZpbGUKb3BlbmFwaS1nZW5lcmF0b3ItZ28gZ2VuZXJhdGUgLS1zcGVjIC4vZXhhbXBsZS9hcGkueWFtbCAtLW91dHB1dCAuL2V4YW1wbGUvZ2VuZXJhdGVkCiMgZ2VuZXJhdGUgbW9kZWxzIGFuZCByb3V0ZXIgaW5kZXBlbmRlbnRseQpvcGVuYXBpLWdlbmVyYXRvci1nbyBnZW5lcmF0ZSBtb2RlbHMgLS1zcGVjIC4vZXhhbXBsZS9hcGkueWFtbCAtLW91dHB1dCAuL2V4YW1wbGUvbW9kZWxzIC0tcGFja2FnZS1uYW1lIG1vZGVscwpvcGVuYXBpLWdlbmVyYXRvci1nbyBnZW5lcmF0ZSByb3V0ZXIgLS1zcGVjIC4vZXhhbXBsZS9hcGkueWFtbCAtLW91dHB1dCAuL2V4YW1wbGUvcm91dGVyIC0tcGFja2FnZS1uYW1lIHJvdXRlcgpgYGAKCiMjIFdoeQpUaGUgcGxhdGZvcm0gdGVhbSBhdCBDb250aWFtbyBoYXMgYSBzY2hlbWEgZmlyc3QgZGV2ZWxvcG1lbnQgZmxvdy4gVGhpcyBtZWFucyB3ZSB3cml0ZSBhbmQgcmV2aWV3IHRoZSBPcGVuQVBJIHNwZWMgYmVmb3JlIHdlIHdyaXRlIHRoZSBpbXBsZW1lbnRhdGlvbi4KClRvIG1ha2UgdGhpcyBlYXNpZXIgd2Ugc3RhcnRlZCB1c2luZyAob3IgdHJpZWQgdG8gdXNlKSB2YXJpb3VzIE9wZW5BUEkgY29kZSBnZW5lcmF0b3JzIHRvIHJlZHVjZSBidXN5IHdvcmsgYW5kIGVuc3VyZSBwcmVjaXNlIGNvbnNpc3RlbnQgaW1wbGVtZW50YXRpb25zLiBVbmZvcnR1bmF0ZWx5LCB3ZSBuZXZlciByZWFsbHkgZW5qb3llZCB0aGUgb3V0cHV0IGZyb20gdGhlc2UgZ2VuZXJhdG9ycyBhbmQgaGF2ZSBjcmVhdGVkIG91ciBvd24gZ2VuZXJhdG9yIHRoYXQgbWF0Y2hlcyBvdXIgcHJlZmVycmVkIHN0eWxlIGFuZCBjb252ZW50aW9ucy4KCiMjIFdoYXQKVGhlIGdlbmVyYXRvciBjb25zaXN0cyBvZiB0d28gcGFydHMKCjEuIGdlbmVyYXRvciBmb3IgdGhlIEhUVFAgc2VydmVyIG11eCB1c2luZyBbZ28tY2hpXShodHRwczovL2dpdGh1Yi5jb20vZ28tY2hpL2NoaSksIGFuZAoyLiBhIG1vZGVsIGdlbmVyYXRvciBmb3IgdGhlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9iamVjdHMuCgojIyMgVGhlIHJvdXRlciBnZW5lcmF0b3IKV2UgY2hvc2UgYGdvLWNoaWAgYmVjYXVzZSBpdCBpcyBmYXN0LCBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgbGlicmFyeSBIYW5kbGVyIGludGVyZmFjZSwgYW5kIGlzIGVhc3kgdG8gYWRkIG1pZGRsZXdhcmVzIHVzaW5nIGByLlVzZWAuCgpUaGUgZ2VuZXJhdG9yIHdpbGwgY3JlYXRlIGEgbWV0aG9kIGBOZXdSb3V0ZXJgIGFuZCBoYW5kbGVyIGludGVyZmFjZXMgdGhhdCB5b3UgbXVzdCB0aGVuIGltcGxlbWVudCBhbmQgcGFzcyB0byBgTmV3Um91dGVyYC4gSXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCBpdCBkb2VzIG5vdCBnZW5lcmF0ZSBhbnkgaGFuZGxlciBsb2dpYywganVzdCB0aGUgcmVxdWlyZWQgaW50ZXJmYWNlcy4gIEhhbmRsZXJzIGNhbiBiZSBncm91cGVkIGludG8gc3BlY2lmaWMgaW50ZXJmYWNlcyBieSBhZGRpbmcgYHgtaGFuZGxlci1ncm91cDogPE5hbWU+YCB0byB5b3VyIHNjaGVtYS4gVGhpcyBpcyBvbmUgb2YgdGhlIG9ubHkgc2NoZW1hIGV4dGVuc2lvbnMgd2UgaGF2ZSBhZGRlZCB0byBpbXByb3ZlIG91ciBjb2RlIGdlbmVyYXRpb24uIFRoZSBoYW5kbGVyIGludGVyZmFjZSB3aWxsIGJlIGNhbGxlZCBgTmFtZUhhbmRsZXJgIGFuZCB3aWxsIGhhdmUgYSBtZXRob2QgbWF0Y2hpbmcgdGhlIGBvcGVyYXRpb25JZGAgZnJvbSB0aGUgc3BlYy4KCkZvciBleGFtcGxlLCBlYWNoIG9mIG91ciBwcm9qZWN0cyB3aWxsIGltcGxlbWVudCBhIHByb2plY3Qgc3BlY2lmaWMgYE5ld1JvdXRlcmAgdGhhdCBkb2VzIHRoZSBoYW5kbGVyIGNvbmZpZ3VyYXRpb24gYW5kICBpbml0aWFsaXphdGlvbiBvZiB0aGUgZ2VuZXJhdGVkIHJvdXRlci4gSW4gdGhlIG5leHQgZXhhbXBsZSwgYG9wZW5hcGkuTmV3Um91dGVyYCBpcyBnZW5lcmF0ZWQgdXNpbmcKCmBgYHNoCm9wZW5hcGktZ2VuZXJhdG9yLWdvIGdlbmVyYXRlIHJvdXRlciAtLXNwZWMgLi9leGFtcGxlL2FwaS55YW1sIC0tb3V0cHV0IC4vZXhhbXBsZS9yb3V0ZXIgLS1wYWNrYWdlLW5hbWUgb3BlbmFwaQpgYGAKVGhlIHByb2plY3Qgc3BlY2lmaWMgcm91dGVyIGluaXRpYWxpemF0aW9uOgpgYGBnbwpmdW5jIE5ld1JvdXRlcihjdHggY29udGV4dC5Db250ZXh0LCBkYiAqc3FsLkRCLCBjZmcgY29uZmlnLkNvbmZpZykgKGh0dHAuSGFuZGxlciwgZXJyb3IpIHsKICAgIC8vIGRvIHNldHVwIHN0dWZmCgogICAgLy8gYW5kIHByb2JhYmx5IHNvbWUgbW9yZSBzZXR1cCBmb3IgZWFjaCBvZiB0aGUgaGFuZGxlciBpbXBsZW1lbnRhdGlvbnMKICAgIHVzZXJIYW5kbGVyIDo9IGhhbmRsZXJzLk5ld1VzZXJIYW5kbGVyKGN0eCwgZGIpCiAgICByZXNvdXJjZXNIYW5kbGVyIDo9IGhhbmRsZXJzLk5ld1Jlc291cmNlKGN0eCwgZGIpCgogICAgLy8gb3BlbmFwaS1nZW5lcmF0b3ItZ28gZ2VuZXJhdGUgcm91dGVyIC0tc3BlYyAuL2V4YW1wbGUvYXBpLnlhbWwgLS1vdXRwdXQgLi9leGFtcGxlL3JvdXRlciAtLXBhY2thZ2UtbmFtZSBvcGVuYXBpCiAgICBhcGlSb3V0ZXIgOj0gb3BlbmFwaS5OZXdSb3V0ZXIoCiAgICAgICAgLy8gdGhlIFVzZXJzSGFuZGxlciBpbnRlcmZhY2UgY29udGFpbnMgYSBtZXRob2QgZm9yIGVuZHBvaW50IHdpdGgKICAgICAgICAvLyB4LWhhbmRsZXItZ3JvdXA6IFVzZXJzCiAgICAgICAgdXNlckhhbmRsZXIsCgogICAgICAgIC8vIFJlc291cmNlc0hhbmRsZXIgaW50ZXJhY2UgY29udGFpbnMgYSBtZXRob2QgZm9yIGVhY2ggZW5kcG9pbnQgd2l0aAogICAgICAgIC8vIHgtaGFuZGxlci1ncm91cDogUmVzb3VyY2VzCiAgICAgICAgcmVzb3VyY2VzSGFuZGxlciwKICAgICkKCiAgICByb290LlJvdXRlKCIvIiwgZnVuYyhhcGkgY2hpLlJvdXRlcikgewogICAgICAgIC8vIG5vdyAgaW5pdCBhbmQgZGQgeW91ciBtaWRkbGV3YXJlcwoJCXIgOj0gbWlkZGxld2FyZXMuV2l0aFJlY292ZXJ5KG9zLlN0ZGVyciwgY2ZnLkRlYnVnKQoJCXQgOj0gbWlkZGxld2FyZXMuV2l0aFRyYWNpbmcoY29uZmlnLkFwcGxpY2F0aW9uTmFtZSwgbmlsLCBtaWRkbGV3YXJlcy5DaGlSb3V0ZU5hbWUpCgkJbCA6PSBtaWRkbGV3YXJlcy5XaXRoTG9nZ2luZyhjb25maWcuQXBwbGljYXRpb25OYW1lKQoJCW0gOj0gbWlkZGxld2FyZXMuV2l0aE1ldHJpY3MoY29uZmlnLkFwcGxpY2F0aW9uTmFtZSwgbmlsKQoJCWEgOj0gYXV0aG9yaXphdGlvbi5OZXdNaWRkbGV3YXJlKGNmZy5BdXRob3JpemF0aW9uLkhlYWRlck5hbWUsIHB1YmxpY0tleSkKCgkJYXBpLlVzZShyLldyYXBIYW5kbGVyKQoJCWFwaS5Vc2UodC5XcmFwSGFuZGxlcikKCQlhcGkuVXNlKGwuV3JhcEhhbmRsZXIpCgkJYXBpLlVzZShtLldyYXBIYW5kbGVyKQoJCWFwaS5Vc2UoYS5XcmFwSGFuZGxlcikKCiAgICAgICAgLy8gbW91bnQgdGhlIGdlbmVyYXRlIHJvdXRlcgoJCWFwaS5Nb3VudCgiLyIsIGFwaVJvdXRlcikKCX0pCgoJcmV0dXJuIHJvb3QsIG5pbAoKfQpgYGAKCiMjIyBUaGUgbW9kZWwgZ2VuZXJhdG9yClRoZSBtb2RlbCBnZW5lcmF0b3IgaXMgYSB3b3JrIGluIHByb2dyZXNzLCBidXQgY292ZXJzIHRoZSBtb3N0IGNvbW1vbiBjYXNlcyB3ZSBuZWVkIGluIGEgUkVTVCBBUEkuCgpZb3UgY2FuIGZpbmQgdmFyaW91cyBleGFtcGxlcyBvZiB0aGUgd2hhdCBpcyBzdXBwb3J0ZWQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dCBpbiBvdXIgW3Rlc3QgZml4dHVyZXNdKC4vcGtnL2dlbmVyYXRvcnMvbW9kZWxzL3Rlc3RkYXRhL2Nhc2VzKS4KCk91ciBnZW5lcmF0b3IgZGlmZmVycyBmcm9tIHRoZSBvZmZpY2lhbCBPcGVuQVBJIGdlbmVyYXRvciB0b29scyBieSBhbHNvIHByb3ZpZGluZyBnZXR0ZXJzIGZvciBtYW55IGZpZWxkcywgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIGRlZmluZSBhbmQgd29yayB3aXRoIGludGVyZmFjZXMgb2YgdGhlIG1vZGVscy4KCldlIGFsc28gcHJvdmlkZSBiZXR0ZXIgc3VwcG9ydCBmb3IgOgoqIFtlbnVtc10oLi9wa2cvZ2VuZXJhdG9ycy9tb2RlbHMvdGVzdGRhdGEvY2FzZXMvZW51bXMvZXhwZWN0ZWQvbW9kZWxfZmlsdGVyX3R5cGUuZ28pLCBlbnVtIHN1cHBvcnQgYWxzbyBpbmNsdWRlcyBzb21lIHV0aWxpdHkgbWV0aG9kcyB0aGF0IG1ha2UgdmFsaWRhdGluZyB0aGUgZW51bXMgbXVjaCBlYXNpZXIsCiAgKiBOb3cgaW5jbHVkaW5nIHN1cHBvcnQgZm9yIHN0cmluZywgaW50ZWdlciwgYW5kIG51bWJlciAoaS5lLiBkZWNpbWFsKSBlbnVtcy4KKiBbYXJyYXlzXSguL3BrZy9nZW5lcmF0b3JzL21vZGVscy90ZXN0ZGF0YS9jYXNlcy90eXBlZF9hcnJheXMvZXhwZWN0ZWQvbW9kZWxfZm9vLmdvKSwKKiBbYWxsT2ZdKC4vcGtnL2dlbmVyYXRvcnMvbW9kZWxzL3Rlc3RkYXRhL2Nhc2VzL2FsbG9mMS9leHBlY3RlZC9tb2RlbF9mb28uZ28pLAoqIGFuZCBbb25lT2ZdKC4vcGtnL2dlbmVyYXRvcnMvbW9kZWxzL3Rlc3RkYXRhL2Nhc2VzL29uZW9mL2V4cGVjdGVkL21vZGVsX2Zvby5nbykKdGhhdCBmZWVsIG1vcmUgbmF0dXJhbCBpbiBHby4gQ3JlYXRpbmcgYXMgbWFueSBzdHJvbmcgdHlwZXMgYXMgaXMgcG9zc2libGUgYW5kIHVzaW5nIGBpbnRlcmZhY2V7fWAgb3RoZXJ3aXNlLiBUaGVzZSBjYXNlcyBvZnRlbiBmYWlsZWQgb3IgZ2VuZXJhdGVkIG5vbi1jb21waWxhYmxlIGNvZGUgd2l0aCB0aGUgb2ZmaWNpYWwgZ2VuZXJhdG9yLgo= readmeEtag: '"3882a5622cc5f1a56c9fee78df8398ac95f0683f"' readmeLastModified: Mon, 17 Jun 2024 11:52:29 GMT repositoryId: 312311416 description: >- An opinionated OpenAPI v3 code generator for Go. Use this to generate API models and router scaffolding. created: '2020-11-12T15:04:52Z' updated: '2026-01-09T23:48:51Z' language: Go archived: false stars: 112 watchers: 7 forks: 12 owner: contiamo logo: https://avatars.githubusercontent.com/u/862286?v=4 license: MIT repoEtag: '"d1b381f48ce963735383a73cd9242300a5e8c1e64b51d9b4972736fbdb3e11c9"' repoLastModified: Fri, 09 Jan 2026 23:48:51 GMT foundInMaster: true category: Server Implementations id: eef90532aca60fba2399f8da8d25e5f2 - source: openapi3 tags repository: https://github.com/playpauseandstop/rororo v3: true repositoryMetadata: base64Readme: >- PT09PT09CnJvcm9ybwo9PT09PT0KCi4uIGltYWdlOjogaHR0cHM6Ly9naXRodWIuY29tL3BsYXlwYXVzZWFuZHN0b3Avcm9yb3JvL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcKICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9wbGF5cGF1c2VhbmRzdG9wL3Jvcm9yby9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwKICAgIDphbHQ6IENJIFdvcmtmbG93CgouLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcHJlLS1jb21taXQtZW5hYmxlZC1icmlnaHRncmVlbj9sb2dvPXByZS1jb21taXQmbG9nb0NvbG9yPXdoaXRlCiAgICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vcHJlLWNvbW1pdC9wcmUtY29tbWl0CiAgICA6YWx0OiBwcmUtY29tbWl0CgouLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLWJsYWNrLTAwMDAwMC5zdmcKICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9wc2YvYmxhY2sKICAgIDphbHQ6IGJsYWNrCgouLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3Jvcm9yby5zdmcKICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9yb3Jvcm8vCiAgICA6YWx0OiBMYXRlc3QgVmVyc2lvbgoKLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy9yb3Jvcm8uc3ZnCiAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkub3JnL3Byb2plY3Qvcm9yb3JvLwogICAgOmFsdDogUHl0aG9uIHZlcnNpb25zCgouLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9sL3Jvcm9yby5zdmcKICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9wbGF5cGF1c2VhbmRzdG9wL3Jvcm9yby9ibG9iL21haW4vTElDRU5TRQogICAgOmFsdDogQlNEIExpY2Vuc2UKCi4uIGltYWdlOjogaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvcGxheXBhdXNlYW5kc3RvcC9yb3Jvcm8vYmFkZ2Uuc3ZnP2JyYW5jaD1tYWluJnNlcnZpY2U9Z2l0aHViCiAgICA6dGFyZ2V0OiBodHRwczovL2NvdmVyYWxscy5pby9naXRodWIvcGxheXBhdXNlYW5kc3RvcC9yb3Jvcm8KICAgIDphbHQ6IENvdmVyYWdlCgouLiBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL3Jvcm9yby9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKICAgIDp0YXJnZXQ6IGh0dHBzOi8vcm9yb3JvLnJlYWR0aGVkb2NzLmlvLwogICAgOmFsdDogRG9jdW1lbnRhdGlvbgoKSW1wbGVtZW50IGBhaW9odHRwLndlYmBfIGBPcGVuQVBJIDNgXyBzZXJ2ZXIgYXBwbGljYXRpb25zIHdpdGggc2NoZW1hIGZpcnN0CmFwcHJvYWNoLgoKQXMgd2VsbCBhcyBidW5jaCBvdGhlciB1dGlsaXRpZXMgdG8gYnVpbGQgZWZmZWN0aXZlIHNlcnZlciBhcHBsaWNhdGlvbnMgd2l0aApgUHl0aG9uYF8gMyAmIGBhaW9odHRwLndlYmBfLgoKKiBXb3JrcyBvbiBgUHl0aG9uYF8gMy44KwoqIFdvcmtzIHdpdGggYGFpb2h0dHAud2ViYF8gMy44LjErCiogQlNEIGxpY2Vuc2VkCiogU291cmNlLCBpc3N1ZXMsIGFuZCBwdWxsIHJlcXVlc3RzIGBvbiBHaXRIdWIKICA8aHR0cHM6Ly9naXRodWIuY29tL3BsYXlwYXVzZWFuZHN0b3Avcm9yb3JvPmBfCgouLiBfYE9wZW5BUEkgM2A6IGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMwouLiBfYGFpb2h0dHAud2ViYDogaHR0cHM6Ly9kb2NzLmFpb2h0dHAub3JnL2VuL3N0YWJsZS93ZWIuaHRtbAouLiBfYFB5dGhvbmA6IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvCgpRdWljayBTdGFydAo9PT09PT09PT09PQoKKnJvcm9ybyogcmVsaWVzIG9uIHZhbGlkIE9wZW5BUEkgMyBzY2hlbWEgZmlsZSAoYm90aCBKU09OIG9yIFlBTUwgZm9ybWF0cwpzdXBwb3J0ZWQpLgoKRXhhbXBsZSBiZWxvdywgaWxsdXN0cmF0ZXMgb24gaG93IHRvIGhhbmRsZSBvcGVyYXRpb24gYGBoZWxsb193b3JsZGBgIGZyb20KYG9wZW5hcGkueWFtbGBfIHNjaGVtYSBmaWxlLgoKLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgIGZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAoKICAgIGZyb20gYWlvaHR0cCBpbXBvcnQgd2ViCiAgICBmcm9tIHJvcm9ybyBpbXBvcnQgKAogICAgICAgIG9wZW5hcGlfY29udGV4dCwKICAgICAgICBPcGVyYXRpb25UYWJsZURlZiwKICAgICAgICBzZXR1cF9vcGVuYXBpLAogICAgKQoKCiAgICBvcGVyYXRpb25zID0gT3BlcmF0aW9uVGFibGVEZWYoKQoKCiAgICBAb3BlcmF0aW9ucy5yZWdpc3RlcgogICAgYXN5bmMgZGVmIGhlbGxvX3dvcmxkKHJlcXVlc3Q6IHdlYi5SZXF1ZXN0KSAtPiB3ZWIuUmVzcG9uc2U6CiAgICAgICAgd2l0aCBvcGVuYXBpX2NvbnRleHQocmVxdWVzdCkgYXMgY29udGV4dDoKICAgICAgICAgICAgbmFtZSA9IGNvbnRleHQucGFyYW1ldGVycy5xdWVyeS5nZXQoIm5hbWUiLCAid29ybGQiKQogICAgICAgICAgICBlbWFpbCA9IGNvbnRleHQucGFyYW1ldGVycy5xdWVyeS5nZXQoCiAgICAgICAgICAgICAgICAiZW1haWwiLCAid29ybGRAZXhhbXBsZS5jb20iCiAgICAgICAgICAgICkKICAgICAgICAgICAgcmV0dXJuIHdlYi5qc29uX3Jlc3BvbnNlKAogICAgICAgICAgICAgICAgeyJtZXNzYWdlIjogZiJIZWxsbywge25hbWV9ISIsICJlbWFpbCI6IGVtYWlsfQogICAgICAgICAgICApCgoKICAgIGRlZiBjcmVhdGVfYXBwKGFyZ3Y6IGxpc3Rbc3RyXSA9IE5vbmUpIC0+IHdlYi5BcHBsaWNhdGlvbjoKICAgICAgICByZXR1cm4gc2V0dXBfb3BlbmFwaSgKICAgICAgICAgICAgd2ViLkFwcGxpY2F0aW9uKCksCiAgICAgICAgICAgIFBhdGgoX19maWxlX18pLnBhcmVudCAvICJvcGVuYXBpLnlhbWwiLAogICAgICAgICAgICBvcGVyYXRpb25zLAogICAgICAgICAgICBzZXJ2ZXJfdXJsPSIvYXBpIiwKICAgICAgICApCgouLiBfYG9wZW5hcGkueWFtbGA6IGh0dHBzOi8vZ2l0aHViLmNvbS9wbGF5cGF1c2VhbmRzdG9wL3Jvcm9yby9ibG9iL21haW4vdGVzdHMvcm9yb3JvL29wZW5hcGkueWFtbAoKU2NoZW1hIEZpcnN0IEFwcHJvYWNoCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVW5saWtlIG90aGVyIHBvcHVsYXIgUHl0aG9uIE9wZW5BUEkgMyBzb2x1dGlvbnMsIHN1Y2ggYXMKYERqYW5nbyBSRVNUIEZyYW1ld29ya2BfLCBgRmFzdEFQSWBfLCAgYGZsYXNrLWFwaXNwZWNgXywgb3IgYGFpb2h0dHAtYXBpc3BlY2BfCipyb3Jvcm8qICoqcmVxdWlyZXMqKiB5b3UgdG8gcHJvdmlkZSB2YWxpZCBgT3BlbkFQSSAzYF8gc2NoZW1hIGZpcnN0LiBUaGlzCm1ha2VzICpyb3Jvcm8qIHNpbWlsYXIgdG8gYGNvbm5leGlvbmBfLCBgcHlyYW1pZF9vcGVuYXBpM2BfIGFuZCBvdGhlciBzY2hlbWEKZmlyc3QgbGlicmFyaWVzLgoKLi4gX2BEamFuZ28gUkVTVCBGcmFtZXdvcmtgOiBodHRwczovL3d3dy5kamFuZ28tcmVzdC1mcmFtZXdvcmsub3JnCi4uIF9gRmFzdEFQSWA6IGh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20KLi4gX2BmbGFzay1hcGlzcGVjYDogaHR0cHM6Ly9mbGFzay1hcGlzcGVjLnJlYWR0aGVkb2NzLmlvCi4uIF9gYWlvaHR0cC1hcGlzcGVjYDogaHR0cHM6Ly9haW9odHRwLWFwaXNwZWMucmVhZHRoZWRvY3MuaW8KLi4gX2Bjb25uZXhpb25gOiBodHRwczovL2Nvbm5leGlvbi5yZWFkdGhlZG9jcy5pbwouLiBfYHB5cmFtaWRfb3BlbmFwaTNgOiBodHRwczovL2dpdGh1Yi5jb20vUHlsb25zL3B5cmFtaWRfb3BlbmFwaTMKCkNsYXNzIEJhc2VkIFZpZXdzCi0tLS0tLS0tLS0tLS0tLS0tCgoqcm9yb3JvKiBzdXBwb3J0cyBgY2xhc3MgYmFzZWQgdmlld3NgXyBhcyB3ZWxsLiBgVG9kby1CYWNrZW5kYF8gZXhhbXBsZQppbGx1c3RyYXRlcyBob3cgdG8gdXNlIGNsYXNzIGJhc2VkIHZpZXdzIGZvciBPcGVuQVBJIDMgc2VydmVycy4KCkluIHNuaXBwZXQgYmVsb3csICpyb3Jvcm8qIGV4cGVjdHMgdGhhdCBPcGVuQVBJIDMgc2NoZW1hIGNvbnRhaW5zIG9wZXJhdGlvbiBJRApgYFVzZXJWaWV3LmdldGBgLAoKLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgIEBvcGVyYXRpb25zLnJlZ2lzdGVyCiAgICBjbGFzcyBVc2VyVmlldyh3ZWIuVmlldyk6CiAgICAgICAgYXN5bmMgZGVmIGdldChzZWxmKSAtPiB3ZWIuUmVzcG9uc2U6IC4uLgoKCi4uIF9gY2xhc3MgYmFzZWQgdmlld3NgOiBodHRwczovL2RvY3MuYWlvaHR0cC5vcmcvZW4vc3RhYmxlL3dlYl9xdWlja3N0YXJ0Lmh0bWwjYWlvaHR0cC13ZWItY2xhc3MtYmFzZWQtdmlld3MKLi4gX2BUb2RvLUJhY2tlbmRgOiBodHRwczovL2dpdGh1Yi5jb20vcGxheXBhdXNlYW5kc3RvcC9yb3Jvcm8vdHJlZS9tYWluL2V4YW1wbGVzL3RvZG9iYWNrZW5kCgpNb3JlIEV4YW1wbGVzCi0tLS0tLS0tLS0tLS0KCkNoZWNrIGBleGFtcGxlc2BfIGZvbGRlciB0byBzZWUgb3RoZXIgZXhhbXBsZXMgb24gaG93IHRvIGJ1aWxkIGFpb2h0dHAud2ViCk9wZW5BUEkgMyBzZXJ2ZXIgYXBwbGljYXRpb25zLgoKLi4gX2BleGFtcGxlc2A6IGh0dHBzOi8vZ2l0aHViLmNvbS9wbGF5cGF1c2VhbmRzdG9wL3Jvcm9yby90cmVlL21haW4vZXhhbXBsZXMK readmeEtag: '"251bf3809845d785731edd01b21d86f83b382645"' readmeLastModified: Fri, 16 Aug 2024 19:22:28 GMT repositoryId: 6331465 description: >- Implement aiohttp.web OpenAPI 3 server applications with schema first approach. created: '2012-10-22T08:08:52Z' updated: '2025-12-07T18:11:19Z' language: Python archived: false stars: 106 watchers: 4 forks: 10 owner: playpauseandstop logo: https://avatars.githubusercontent.com/u/21325?v=4 license: BSD-3-Clause repoEtag: '"a9ff6601e2e615eb8d9d8328683b10f8c5a3120978ef8c61091ebef123daae22"' repoLastModified: Sun, 07 Dec 2025 18:11:19 GMT foundInMaster: true category: Server Implementations id: bccba2fe3a44fa5e2681bdcd3e986ba7 - source: - openapi3 tags - openapi31 tags repository: https://github.com/python-openapi/openapi-schema-validator v3: true id: 3e4ac3612c445ce7087449f67b501d73 repositoryMetadata: base64Readme: >- KioqKioqKioqKioqKioqKioqKioqKioqCm9wZW5hcGktc2NoZW1hLXZhbGlkYXRvcgoqKioqKioqKioqKioqKioqKioqKioqKioKCi4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvb3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yLnN2ZwogICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvb3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yCi4uIGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL3B5dGhvbi1vcGVuYXBpL29wZW5hcGktc2NoZW1hLXZhbGlkYXRvci5zdmc/YnJhbmNoPW1hc3RlcgogICAgIDp0YXJnZXQ6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9weXRob24tb3BlbmFwaS9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3IKLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRodWIvcHl0aG9uLW9wZW5hcGkvb3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yL21hc3Rlci5zdmc/c3R5bGU9ZmxhdAogICAgIDp0YXJnZXQ6IGh0dHBzOi8vY29kZWNvdi5pby9naXRodWIvcHl0aG9uLW9wZW5hcGkvb3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yP2JyYW5jaD1tYXN0ZXIKLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3Iuc3ZnCiAgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9vcGVuYXBpLXNjaGVtYS12YWxpZGF0b3IKLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvZm9ybWF0L29wZW5hcGktc2NoZW1hLXZhbGlkYXRvci5zdmcKICAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL29wZW5hcGktc2NoZW1hLXZhbGlkYXRvcgouLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9zdGF0dXMvb3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yLnN2ZwogICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvb3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yCgpBYm91dAojIyMjIwoKT3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yIGlzIGEgUHl0aG9uIGxpYnJhcnkgdGhhdCB2YWxpZGF0ZXMgc2NoZW1hIGFnYWluc3Q6CgoqIGBPcGVuQVBJIFNjaGVtYSBTcGVjaWZpY2F0aW9uIHYzLjAgPGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kI3NjaGVtYU9iamVjdD5gX18gd2hpY2ggaXMgYW4gZXh0ZW5kZWQgc3Vic2V0IG9mIHRoZSBgSlNPTiBTY2hlbWEgU3BlY2lmaWNhdGlvbiBXcmlnaHQgRHJhZnQgMDAgPGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvPmBfXy4KKiBgT3BlbkFQSSBTY2hlbWEgU3BlY2lmaWNhdGlvbiB2My4xIDxodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjEuMC5tZCNzY2hlbWFPYmplY3Q+YF9fIHdoaWNoIGlzIGFuIGV4dGVuZGVkIHN1cGVyc2V0IG9mIHRoZSBgSlNPTiBTY2hlbWEgU3BlY2lmaWNhdGlvbiBEcmFmdCAyMDIwLTEyIDxodHRwOi8vanNvbi1zY2hlbWEub3JnLz5gX18uCgoKRG9jdW1lbnRhdGlvbgojIyMjIyMjIyMjIyMjCgpDaGVjayBkb2N1bWVudGF0aW9uIHRvIHNlZSBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIGZlYXR1cmVzLiBBbGwgZG9jdW1lbnRhdGlvbiBpcyBpbiB0aGUgImRvY3MiIGRpcmVjdG9yeSBhbmQgb25saW5lIGF0IGBvcGVuYXBpLXNjaGVtYS12YWxpZGF0b3IucmVhZHRoZWRvY3MuaW8gPGh0dHBzOi8vb3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yLnJlYWR0aGVkb2NzLmlvPmBfXwoKCkluc3RhbGxhdGlvbgojIyMjIyMjIyMjIyMKClJlY29tbWVuZGVkIHdheSAodmlhIHBpcCk6CgouLiBjb2RlLWJsb2NrOjogY29uc29sZQoKICAgcGlwIGluc3RhbGwgb3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yCgpBbHRlcm5hdGl2ZWx5IHlvdSBjYW4gZG93bmxvYWQgdGhlIGNvZGUgYW5kIGluc3RhbGwgZnJvbSB0aGUgcmVwb3NpdG9yeToKCi4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCgogICBwaXAgaW5zdGFsbCAtZSBnaXQraHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi1vcGVuYXBpL29wZW5hcGktc2NoZW1hLXZhbGlkYXRvci5naXQjZWdnPW9wZW5hcGlfc2NoZW1hX3ZhbGlkYXRvcgoKClVzYWdlCiMjIyMjCgpUbyB2YWxpZGF0ZSBhbiBPcGVuQVBJIHYzLjEgc2NoZW1hOgoKLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgZnJvbSBvcGVuYXBpX3NjaGVtYV92YWxpZGF0b3IgaW1wb3J0IHZhbGlkYXRlCgogICAjIEEgc2FtcGxlIHNjaGVtYQogICBzY2hlbWEgPSB7CiAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgInJlcXVpcmVkIjogWwogICAgICAgICAgIm5hbWUiCiAgICAgICBdLAogICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgIm5hbWUiOiB7CiAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICB9LAogICAgICAgICAgICJhZ2UiOiB7CiAgICAgICAgICAgICAgICJ0eXBlIjogWyJpbnRlZ2VyIiwgIm51bGwiXSwKICAgICAgICAgICAgICAgImZvcm1hdCI6ICJpbnQzMiIsCiAgICAgICAgICAgICAgICJtaW5pbXVtIjogMCwKICAgICAgICAgICB9LAogICAgICAgICAgICJiaXJ0aC1kYXRlIjogewogICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICAiZm9ybWF0IjogImRhdGUiLAogICAgICAgICAgIH0sCiAgICAgICAgICAgImFkZHJlc3MiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICdhcnJheScsCiAgICAgICAgICAgICAgICAicHJlZml4SXRlbXMiOiBbCiAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJudW1iZXIiIH0sCiAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJzdHJpbmciIH0sCiAgICAgICAgICAgICAgICAgICAgeyAiZW51bSI6IFsiU3RyZWV0IiwgIkF2ZW51ZSIsICJCb3VsZXZhcmQiXSB9LAogICAgICAgICAgICAgICAgICAgIHsgImVudW0iOiBbIk5XIiwgIk5FIiwgIlNXIiwgIlNFIl0gfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJpdGVtcyI6IEZhbHNlLAogICAgICAgICAgICB9CiAgICAgICB9LAogICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjogRmFsc2UsCiAgIH0KCiAgICMgSWYgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCBieSB2YWxpZGF0ZSgpLCB0aGUgaW5zdGFuY2UgaXMgdmFsaWQuCiAgIHZhbGlkYXRlKHsibmFtZSI6ICJKb2huIiwgImFnZSI6IDIzLCAiYWRkcmVzcyI6IFsxNjAwLCAiUGVubnN5bHZhbmlhIiwgIkF2ZW51ZSJdfSwgc2NoZW1hKQoKICAgdmFsaWRhdGUoeyJuYW1lIjogIkpvaG4iLCAiY2l0eSI6ICJMb25kb24ifSwgc2NoZW1hKQoKICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCiAgIFZhbGlkYXRpb25FcnJvcjogQWRkaXRpb25hbCBwcm9wZXJ0aWVzIGFyZSBub3QgYWxsb3dlZCAoJ2NpdHknIHdhcyB1bmV4cGVjdGVkKQoKQnkgZGVmYXVsdCwgdGhlIGxhdGVzdCBPcGVuQVBJIHNjaGVtYSBzeW50YXggaXMgZXhwZWN0ZWQuCgpGb3IgbW9yZSBkZXRhaWxzIHJlYWQgYWJvdXQgYFZhbGlkYXRpb24gPGh0dHBzOi8vb3BlbmFwaS1zY2hlbWEtdmFsaWRhdG9yLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC92YWxpZGF0aW9uLmh0bWw+YF9fLgoKUmVsYXRlZCBwcm9qZWN0cwojIyMjIyMjIyMjIyMjIyMjCiogYG9wZW5hcGktY29yZSA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi1vcGVuYXBpL29wZW5hcGktY29yZT5gX18KICAgUHl0aG9uIGxpYnJhcnkgdGhhdCBhZGRzIGNsaWVudC1zaWRlIGFuZCBzZXJ2ZXItc2lkZSBzdXBwb3J0IGZvciB0aGUgT3BlbkFQSS4KKiBgb3BlbmFwaS1zcGVjLXZhbGlkYXRvciA8aHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi1vcGVuYXBpL29wZW5hcGktc3BlYy12YWxpZGF0b3I+YF9fCiAgIFB5dGhvbiBsaWJyYXJ5IHRoYXQgdmFsaWRhdGVzIE9wZW5BUEkgU3BlY3MgYWdhaW5zdCB0aGUgT3BlbkFQSSAyLjAgKGFrYSBTd2FnZ2VyKSBhbmQgT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbgo= readmeEtag: '"5d8b66ff8d4ebe6abb9e4bf725860d6ec4e1defe"' readmeLastModified: Sat, 13 Jul 2024 06:54:27 GMT repositoryId: 245119225 description: >- OpenAPI schema validator is a Python library that validates schema against OpenAPI Schema Specification v3.0 and v3.1 created: '2020-03-05T09:23:39Z' updated: '2026-02-04T03:21:21Z' language: Python archived: false stars: 121 watchers: 3 forks: 35 owner: python-openapi logo: https://avatars.githubusercontent.com/u/126442889?v=4 license: BSD-3-Clause repoEtag: '"162561e0dce076129857be41a992c4eeb7b0956a5ab1a91dad029a4c2b981375"' repoLastModified: Wed, 04 Feb 2026 03:21:21 GMT category: Parsers oldLocations: - https://github.com/p1c2u/openapi-schema-validator foundInMaster: true v3_1: true - source: openapi3 tags name: openapi4j category: - Data Validators - Schema Validators - Parsers repository: https://github.com/openapi4j/openapi4j language: Java source_description: >- Parse Description Document, validate API requests and responses using OpenAPI 3.x. v2: false v3: true repositoryMetadata: base64Readme: >- WyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5jb20vb3BlbmFwaTRqL29wZW5hcGk0ai5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLmNvbS9vcGVuYXBpNGovb3BlbmFwaTRqKQpbIVtNYWludGFpbmFiaWxpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1vcmcub3BlbmFwaTRqJTNBb3BlbmFwaTRqJm1ldHJpYz1zcWFsZV9yYXRpbmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPW9yZy5vcGVuYXBpNGolM0FvcGVuYXBpNGopClshW1NlY3VyaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9b3JnLm9wZW5hcGk0aiUzQW9wZW5hcGk0aiZtZXRyaWM9c2VjdXJpdHlfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1vcmcub3BlbmFwaTRqJTNBb3BlbmFwaTRqKQpbIVtDb3ZlcmFnZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9b3JnLm9wZW5hcGk0aiUzQW9wZW5hcGk0aiZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPW9yZy5vcGVuYXBpNGolM0FvcGVuYXBpNGopCgpfX1RoaXMgcmVwb3NpdG9yeSBpcyBub3cgYXJjaGl2ZWQuIEkgZG9uJ3QgaGF2ZSBlbm91Z2ggc3BhcmUgdGltZSB0byBtYWludGFpbiB0aGlzIHByb2plY3QgKHdlbGwgYWN0dWFsbHkgcmV2YW1wKSBhbmQgZm9sbG93IE9BSSBzcGVjcy4gVGhpcyBwcm9qZWN0IGRlc2VydmVzIG11Y2ggbW9yZSB0aGF0IEkgY2FuIGdpdmUgdG8gc291cmNlIGNvZGUgYW5kIGZvbGxvd2VycyB0byBwcm92aWRlIGFwcHJvcHJpYXRlIG91dHB1dC5fXwoKIyBPcGVuQVBJIGZvciBqYXZhIHByb2plY3QgaG9tZQoKVGhpcyBpcyB0aGUgaG9tZSBwYWdlIG9mIHRoZSBvcGVuYXBpNGogcHJvamVjdCBmb3IgSmF2YSAoSmFrYXJ0YSBvciBKVk0gcGxhdGZvcm0gaW4gZ2VuZXJhbCkuCgpvcGVuYXBpNGogaXMgYSBzdWl0ZSBvZiB0b29scywgaW5jbHVkaW5nIHRoZSBmb2xsb3dpbmcgOgoqIFtPcGVuIEFQSSBzcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMy5tZCkgcGFyc2VyIGFuZCB2YWxpZGF0b3IuCiogT3BlbiBBUEkgW1NjaGVtYSBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4zLm1kI3NjaGVtYU9iamVjdCkgdmFsaWRhdG9yLgoqIFtKU09OIHJlZmVyZW5jZV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LXBicnlhbi16eXAtanNvbi1yZWYtMDMpIGltcGxlbWVudGF0aW9uLgoqIFJlcXVlc3QvcmVzcG9uc2UgdmFsaWRhdG9yIGFnYWluc3Qgb3BlcmF0aW9uLgoqIEZvciBpbnRlcm5hbCB1c2Ugb25seSwgcGVyZm9ybWFuY2UgcHJvamVjdCByZXBvcnRzIHNvbWUgbnVtYmVycyB0byAnbWFudWFsbHknIGNoZWNrIGFueSBpbXByb3ZlbWVudHMgb3IgcmVncmVzc2lvbnMgYmV0d2VlbiB2ZXJzaW9ucy4KCiMjIE1vZHVsZXMKCiogW1BhcnNlcl0ob3BlbmFwaS1wYXJzZXIpIGFsbG93cyB0aGUgKGRlLSlzZXJpYWxpemF0aW9uIGFuZCBtYW5pcHVsYXRpb24gb2YgdGhlIHNjaGVtYSBhbmQgaXRzIHZhbGlkYXRpb24uCiogW1NjaGVtYSB2YWxpZGF0b3JdKG9wZW5hcGktc2NoZW1hLXZhbGlkYXRvcikgYWxsb3dzIHRoZSB2YWxpZGF0aW9uIG9mIGRhdGEgYWdhaW5zdCBhIGdpdmVuIHNjaGVtYS4KKiBbUmVxdWVzdCB2YWxpZGF0b3JdKG9wZW5hcGktb3BlcmF0aW9uLXZhbGlkYXRvcikgaXMgaGlnaCBsZXZlbCBtb2R1bGUgdG8gbWFuYWdlIHZhbGlkYXRpb24gZm9yIHJlcXVlc3RzIGFuZC9vciByZXNwb25zZXMgYWdhaW5zdCBvcGVyYXRpb25zLiBNb3JlIGRldGFpbHMgaW4gdGhlIHJlbGF0ZWQgcHJvamVjdC4KKiBbUmVxdWVzdCBhZGFwdGVyc10ob3BlbmFwaS1vcGVyYXRpb24tYWRhcHRlcnMpIGlzIHRoZSByZXBvc2l0b3J5IG9mIHNwZWNpZmljIGFkYXB0ZXJzIHRvIHdyYXAgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcy4KCiMjIERvY3VtZW50YXRpb24KClRoZSBkb2N1bWVudGF0aW9uIGZvciBhbGwgbW9kdWxlcyBpcyBhdmFpbGFibGUgW2hlcmVdKGh0dHBzOi8vb3BlbmFwaTRqLmdpdGh1Yi5pby9vcGVuYXBpNGovKS4KCiMjIFZlcnNpb25pbmcgYW5kIGNvbXBhdGliaWxpdHkKCkFsbCBtb2R1bGVzIGZvbGxvdyB0aGUgW1NlbWFudGljIFZlcnNpb25pbmcgMi4wLjBdKGh0dHBzOi8vc2VtdmVyLm9yZykgYW5kIGFyZSBhbGlnbmVkIG9uIGVhY2ggcmVsZWFzZSBldmVuIHRoZXJlJ3Mgbm8gY2hhbmdlcy4KCmBgYHhtbAo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPm9yZy5vcGVuYXBpNGo8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLVttb2R1bGVdPC9hcnRpZmFjdElkPgo8L2RlcGVuZGVuY3k+CmBgYAoKWyFbUmVsZWFzZSB2ZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL25leHVzL3Ivb3JnLm9wZW5hcGk0ai9vcGVuYXBpLW9wZXJhdGlvbi12YWxpZGF0b3I/c3R5bGU9Zm9yLXRoZS1iYWRnZSZjb2xvcj1ibHVlJmxhYmVsPVJlbGVhc2Umc2VydmVyPWh0dHBzJTNBJTJGJTJGb3NzLnNvbmF0eXBlLm9yZyldKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9zZWFyY2g/cT1nOm9yZy5vcGVuYXBpNGopClshW1NuYXBzaG90IHZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbmV4dXMvcy9vcmcub3BlbmFwaTRqL29wZW5hcGktb3BlcmF0aW9uLXZhbGlkYXRvcj9zdHlsZT1mb3ItdGhlLWJhZGdlJmNvbG9yPWJsdWUmbGFiZWw9U25hcHNob3Qmc2VydmVyPWh0dHBzJTNBJTJGJTJGb3NzLnNvbmF0eXBlLm9yZyldKGh0dHBzOi8vb3NzLnNvbmF0eXBlLm9yZy9jb250ZW50L3JlcG9zaXRvcmllcy9zbmFwc2hvdHMvb3JnL29wZW5hcGk0ai8pCgpTbmFwc2hvdCBpcyBhdmFpbGFibGUgZm9yIGxhdGVzdCB2YWxpZCBjb21taXQgb24gJ21hc3RlcicgYnJhbmNoLgoKIyMgUGVyZm9ybWFuY2UKCkNoZWNrIFtoZXJlXShodHRwczovL3d3dy5vcGVuYXBpNGoub3JnL3BlcmYtdmFsdWVzLmh0bWwpIGZvciBzb21lIHZhbHVlcy4KCiMjIE5hdGl2ZSBjb21waWxhdGlvbiAoR3JhYWxWTSkKCkZyb20gdmVyc2lvbiAwLjcsIHRoZSB0b29sc2V0IGlzIGZ1bGx5IGNvbXBsaWFudCB3aXRoIG5hdGl2ZSBjb21waWxhdGlvbiAoQU9UKS4KVGhpcyB3YXMgdGVzdGVkIHdpdGggR3JhYWxWTSAxOS4zLjEuCk5vIGZ1cnRoZXIgY29uZmlndXJhdGlvbiBvciBkaXJlY3RpdmUgaXMgbmVlZGVkIHRvIGluY2x1ZGUgdGhlIG1vZHVsZXMgaWYgYXZhaWxhYmxlIG9uIGNsYXNzcGF0aC4KCmBgYHNoZWxsIHNjcmlwdApuYXRpdmUtaW1hZ2UgLUg6K1JlcG9ydEV4Y2VwdGlvblN0YWNrVHJhY2VzIC0tbm8tZmFsbGJhY2sgLWphciB5b3VyLWFwcC5qYXIKYGBgCgpGWUksIHRlc3RpbmcgcnVucyBtYWRlIGRvbid0IHNob3cgbXVjaCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgYnV0IHBhcnNlciBtb2R1bGUuCgojIyBTdXBwb3J0ZWQgdmVyc2lvbnMKClRoZSBtb2R1bGVzIGN1cnJlbnRseSBzdXBwb3J0IHRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gKE9BUykgdmVyc2lvbiAzLjAueC4KCk9BSSAzLjEuMCBoYXMgYmVlbiByZWxlYXNlZCBhcyBjYW5kaWRhdGUuICAKVGhlcmUncyB0b28gbXVjaCBjaGFuZ2VzIHRvbyBrZWVwIGNvZGUgb24gc2FtZSBiYXNpcyBhbmQga2VlcCBhIGZhaXJseSBsb3cgbGV2ZWwgb2YgY29tcGxleGl0eS4gIApBcyBhIGNvbnNlcXVlbmNlLCBPQUkgMy4xLnggc3VwcG9ydCB3aWxsIGJlIG1hZGUgaW4gYSB2ZXJzaW9uIDIgb2Ygb3BlbmFwaTRqLiAgCgpBcyBteSB0aW1lIGlzIHZlcnkgbGltaXRlZCwgdmVyc2lvbiAxIHNob3VsZCBiZSBjb25zaWRlcmVkIGFzIGZyZWV6ZWQgZm9yIG5vdy4KClNlZSByZWxhdGVkIHByb2plY3RzIGZvciBsaW1pdGF0aW9ucyBhbmQgaXNzdWVzLgoKIyMgQ29udHJpYnV0aW5nCgpSZXBvcnRpbmcgaXNzdWVzLCBtYWtpbmcgY29tbWVudHMsIC4uLiBBbnkgaGVscCBpcyB3ZWxjb21lICEKCldlIGFjY2VwdCBQdWxsIFJlcXVlc3RzIHZpYSBHaXRIdWIuIFRoZXJlIGFyZSBzb21lIGd1aWRlbGluZXMgd2hpY2ggd2lsbCBtYWtlIGFwcGx5aW5nIFBScyBlYXNpZXIgZm9yIHVzIDoKCiogUmVzcGVjdCB0aGUgY29kZSBzdHlsZSBhbmQgaW5kZW50YXRpb24uIC5lZGl0b3Jjb25maWcgZmlsZSBpcyBwcm92aWRlZCB0byBub3QgYmUgd29ycmllZCBhYm91dCB0aGlzLgoqIENyZWF0ZSBtaW5pbWFsIGRpZmZzIC0gZGlzYWJsZSBvbiBzYXZlIGFjdGlvbnMgbGlrZSByZWZvcm1hdCBzb3VyY2UgY29kZSBvciBvcmdhbml6ZSBpbXBvcnRzLiBJZiB5b3UgZmVlbCB0aGUgc291cmNlIGNvZGUgc2hvdWxkIGJlIHJlZm9ybWF0dGVkIGNyZWF0ZSBhIHNlcGFyYXRlIFBSIGZvciB0aGlzIGNoYW5nZS4KKiBQcm92aWRlIEpVbml0IHRlc3RzIGZvciB5b3VyIGNoYW5nZXMgYW5kIG1ha2Ugc3VyZSB5b3VyIGNoYW5nZXMgZG9uJ3QgYnJlYWsgYW55dGhpbmcgYnkgcnVubmluZyBgZ3JhZGxldyBjbGVhbiBjaGVja2AuCiogUHJvdmlkZSBhIHNlbGYgZXhwbGFuYXRvcnkgYnV0IGJyaWVmIGNvbW1pdCBtZXNzYWdlIHdpdGggaXNzdWUgcmVmZXJlbmNlIGlmIGFueSwgYXMgaXQgd2lsbCBiZSByZXBvcnRlZCBkaXJlY3RseSBmb3IgcmVsZWFzZSBjaGFuZ2Vsb2cuCgojIyBMaWNlbnNlCgpvcGVuYXBpNGogYW5kIGFsbCB0aGUgbW9kdWxlcyBhcmUgcmVsZWFzZWQgdW5kZXIgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIFtMSUNFTlNFXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaTRqL29wZW5hcGk0ai9ibG9iL21hc3Rlci9MSUNFTlNFLm1kKSBmb3IgZGV0YWlscy4K readmeEtag: '"0af446f681826fbe20696adc11289e18a75b18ff"' readmeLastModified: Fri, 09 Jul 2021 15:33:59 GMT repositoryId: 218804581 description: OpenAPI 3 parser, JSON schema and request validator. created: '2019-10-31T15:59:35Z' updated: '2026-01-31T08:37:16Z' language: Java archived: true stars: 109 watchers: 4 forks: 40 owner: openapi4j logo: https://avatars.githubusercontent.com/u/39759775?v=4 license: Apache-2.0 repoEtag: '"d0dfbaec93724584a3b5e20c365ee4ba933c374732a235dc06689f4b167c72ff"' repoLastModified: Sat, 31 Jan 2026 08:37:16 GMT foundInMaster: true id: c5b32630ea7cd375c61c41563e2a2f09 - source: openapi3 tags repository: https://github.com/davidmoten/openapi-to-plantuml v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXRvLXBsYW50dW1sCjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kYXZpZG1vdGVuL29wZW5hcGktdG8tcGxhbnR1bWwvYWN0aW9ucy93b3JrZmxvd3MvY2kueW1sIj48aW1nIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL2RhdmlkbW90ZW4vb3BlbmFwaS10by1wbGFudHVtbC9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwvYmFkZ2Uuc3ZnIi8+PC9hPjxici8+ClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9kYXZpZG1vdGVuL29wZW5hcGktdG8tcGxhbnR1bWwvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2RhdmlkbW90ZW4vb3BlbmFwaS10by1wbGFudHVtbCk8YnIvPgpbIVtNYXZlbiBDZW50cmFsXShodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLWNlbnRyYWwvdi9jb20uZ2l0aHViLmRhdmlkbW90ZW4vb3BlbmFwaS10by1wbGFudHVtbCldKGh0dHBzOi8vY2VudHJhbC5zb25hdHlwZS5jb20vYXJ0aWZhY3QvY29tLmdpdGh1Yi5kYXZpZG1vdGVuL29wZW5hcGktdG8tcGxhbnR1bWwpPGJyLz4KCkphdmEgbGlicmFyeSBhbmQgTWF2ZW4gcGx1Z2luIHRvIGdlbmVyYXRlIGEgW1BsYW50VU1MXShodHRwczovL3BsYW50dW1sLmNvbSkgQ2xhc3MgRGlhZ3JhbSAoc3VwcGxlbWVudGVkIHdpdGggcGF0aCBpbmZvcm1hdGlvbikgZnJvbSBhbiBPcGVuQVBJIDMuMCBkZWZpbml0aW9uIChZQU1MIG9yIEpTT04pLiAKClRyeSBpdCBvbmxpbmUgW2hlcmVdKGh0dHBzOi8vb3BlbmFwaS10by1wdW1sLmRhdmlkbW90ZW4ub3JnL3Byb2Qvc2l0ZS9pbmRleC5odG1sKS4KCioqRmVhdHVyZXMqKgoKKiBNYXZlbiBwbHVnaW4gdG8gcHJvZHVjZSBkaWFncmFtcyBpbiBtdWx0aXBsZSBmb3JtYXRzCiogR3JhZGxlIHVzYWdlIGV4YW1wbGUKKiBPbmUgY29uc29saWRhdGVkIGRpYWdyYW0gb3IgZGlhZ3JhbS1wZXItb3BlcmF0aW9uIG9wdGlvbnMKICAKU3VwcG9ydHMgYWxsIGZlYXR1cmVzIG9mIE9wZW5BUEkgMy4wIGluY2x1ZGluZwoKKiBNaXhlZCB0eXBlcyAoKm9uZU9mKiwgKmFueU9mKiwgKmFsbE9mKikgCiogTXVsdGlwbGUgbGV2ZWxzIG9mIGluZGlyZWN0aW9uIChgJHJlZmAgLT4gYCRyZWZgIGZvciBleGFtcGxlKSAKKiBNdWx0aXBsZSByZXNwb25zZSBjb250ZW50IHR5cGVzCiogQ2FuIHByb2R1Y2UgZGlhZ3JhbS1wZXItcGF0aCAoZ3JlYXQgZm9yIGxhcmdlIEFQSXMpCgoqKlN0YXR1czoqKiBSZWxlYXNlZCB0byBNYXZlbiBDZW50cmFsIAoKKipMaW1pdGF0aW9ucyoqCgoqIE9ubHkgaGFuZGxlcyBpbnRlcm5hbCByZWZlcmVuY2VzICgiIy8qIiksIHRoYXQgaXMgdGhlIHlhbWwgZmlsZSBzaG91bGQgYmUgc2VsZi1jb250YWluZWQuIEFzIG9mIDAuMS45IGV4dGVybmFsIHJlZnMgYXJlIGRpc3BsYXllZCBidXQgbm90IGV4cGxvZGVkLiBGdWxsIGV4dGVybmFsIHJlZmVyZW5jZSBzdXBwb3J0IGlzIGJlaW5nIGNvbnNpZGVyZWQuCgoqKlRPRE8qKgoqIE1vZGVsICpDYWxsYmFja3MqCiogTW9kZWwgKmFkZGl0aW9uYWxQcm9wZXJ0aWVzKgoKW29wZW5hcGktZXhhbXBsZS55bWxdKHNyYy90ZXN0L3Jlc291cmNlcy9vcGVuYXBpLWV4YW1wbGUueW1sKTogCgo8aW1nIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOndoaXRlIiBzcmM9Im9wZW5hcGktdG8tcGxhbnR1bWwvc3JjL2RvY3Mvb3BlbmFwaS1leGFtcGxlLnN2ZyIvPgoKIyMgSG93IHRvIGJ1aWxkCgpgYGBiYXNoCm12biBjbGVhbiBpbnN0YWxsCmBgYAoKIyMgR2V0dGluZyBzdGFydGVkCgojIyMgT25saW5lIGRpYWdyYW0gZ2VuZXJhdG9yIChTSU5HTEUgc3R5bGUgb25seSkKVGhlIGVhc2llc3QgdGhpbmcgdG8gZG8gaXMgdG8gdXNlIHRoZSBbb25saW5lIGRpYWdyYW0gZ2VuZXJhdG9yXShodHRwczovL29wZW5hcGktdG8tcHVtbC5kYXZpZG1vdGVuLm9yZy9wcm9kL3NpdGUvaW5kZXguaHRtbCkuIElmIHlvdXIgZGVmaW5pdGlvbiBpcyBsYXJnZSB0aGVuIFBsYW50VGV4dCBtYXkgcmVmdXNlIHRvIHJlbmRlciBpdCAodGhlIFBsYW50IFVNTCB0ZXh0IGlzIGVuY29kZWQgYW5kIGFkZGVkIHRvIHRoZSBQbGFudFRleHQgdXJsIHdoaWNoIGNhbiBnZXQgdG9vIGxvbmcpLiAKClRvIHRyaWFsIHF1aWNrbHksIGNsb25lIHRoaXMgcmVwbyBhbmQgYWRkIHlvdXIgeWFtbCBmaWxlIHRvIGBzcmMvdGVzdC9yZXNvdXJjZXMvZGVtby9gIGRpcmVjdG9yeSBhbmQgcnVuIGBtdm4gdGVzdGAuIFRoZSBnZW5lcmF0ZWQgaW1hZ2Ugd2lsbCBiZSBzYXZlZCBpbiBgdGFyZ2V0L2RlbW9zYC4KCiMjIyBNYXZlbiBQbHVnaW4KVXNlIHRoZSBNYXZlbiBwbHVnaW46CgpgYGB4bWwKPHBsdWdpbj4KICAgIDxncm91cElkPmNvbS5naXRodWIuZGF2aWRtb3RlbjwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPm9wZW5hcGktdG8tcGxhbnR1bWwtbWF2ZW4tcGx1Z2luPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+VkVSU0lPTl9IRVJFPC92ZXJzaW9uPgogICAgPGV4ZWN1dGlvbnM+CiAgICAgICAgPGV4ZWN1dGlvbj4KICAgICAgICAgICAgPGlkPmdlbmVyYXRlLXNwbGl0PC9pZD4KICAgICAgICAgICAgPGdvYWxzPgogICAgICAgICAgICAgICAgPGdvYWw+Z2VuZXJhdGU8L2dvYWw+CiAgICAgICAgICAgIDwvZ29hbHM+CiAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgogICAgICAgICAgICAgICAgPHN0eWxlPlNQTElUPC9zdHlsZT4gPCEtLSBvbmUgZGlhZ3JhbSBwZXIgb3BlcmF0aW9uIC0tPgogICAgICAgICAgICAgICAgPGlucHV0PnNyYy9tYWluL29wZW5hcGkvb3BlbmFwaS55bWw8L2lucHV0PgogICAgICAgICAgICAgICAgPGZvcm1hdHM+CiAgICAgICAgICAgICAgICAgICAgPGZvcm1hdD5QTkc8L2Zvcm1hdD4KICAgICAgICAgICAgICAgICAgICA8Zm9ybWF0PlNWRzwvZm9ybWF0PgogICAgICAgICAgICAgICAgPC9mb3JtYXRzPgogICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CiAgICAgICAgPC9leGVjdXRpb24+CiAgICA8L2V4ZWN1dGlvbnM+CjwvcGx1Z2luPgpgYGAKfCBQYXJhbWV0ZXIgfCBUeXBlICAgICAgICAgIHwgUmVxdWlyZWQgfCBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uIHwKfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwKfCBgc3R5bGVgICAgfCBgU3R5bGVgICAgICAgIHwgTm8gICAgICAgfCBgU1BMSVRgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRoZSBzdHlsZSBvZiB0aGUgZ2VuZXJhdGVkIGRpYWdyYW1zLiBgU0lOR0xFYCBjcmVhdGVzIG9uZSBkaWFncmFtIGZvciBhbGwgb3BlcmF0aW9ucywgd2hpbGUgYFNQTElUYCBjcmVhdGVzIGEgc2VwYXJhdGUgZGlhZ3JhbSBwZXIgb3BlcmF0aW9uIChyZWNvbW1lbmRlZCBmb3IgbGFyZ2UgT3BlbkFQSSBzcGVjcykuIHwKfCBgaW5wdXRgICAgfCBgRmlsZWAgICAgICAgIHwgWWVzICAgICAgfCDigJMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGhlIHNvdXJjZSBPcGVuQVBJIGZpbGUgdG8gZ2VuZXJhdGUgZGlhZ3JhbXMgZnJvbS4gQ2FuIGluY2x1ZGUgcmVsYXRpdmUgcmVmZXJlbmNlcyB0byBvdGhlciBmaWxlcy4gfAp8IGBmb3JtYXRzYCB8IGBMaXN0PFN0cmluZz5gfCBObyAgICAgICB8IFBORywgU1ZHICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3V0cHV0IGZvcm1hdHMuIFBvc3NpYmxlIHZhbHVlcyBpbmNsdWRlOiBgUFVNTGAsIGBFUFNgLCBgRVBTX1RFWFRgLCBgQVRYVGAsIGBVVFhUYCwgYFhNSV9TVEFOREFSRGAsIGBYTUlfU1RBUmAsIGBYTUlfQVJHT2AsIGBTQ1hNTGAsIGBHUkFQSE1MYCwgYFBERmAsIGBNSlBFR2AsIGBBTklNQVRFRF9HSUZgLCBgSFRNTGAsIGBIVE1MNWAsIGBWRFhgLCBgTEFURVhgLCBgTEFURVhfTk9fUFJFQU1CTEVgLCBgQkFTRTY0YCwgYEJSQUlMTEVfUE5HYCwgYFBSRVBST0NgLCBgREVCVUdgLCBgUE5HYCwgYFJBV2AsIGBTVkdgIHwKfCBgb3V0cHV0YCAgfCBgRmlsZWAgICAgICAgIHwgTm8gICAgICAgfCBgdGFyZ2V0L2RpYWdyYW1zL2NsYXNzLWRpYWdyYW0ucG5nYCAoZm9yIGBTSU5HTEVgKSBvciBgdGFyZ2V0L2RpYWdyYW1zYCAoZm9yIGBTUExJVGApIHwgVGhlIG91dHB1dCBmaWxlIChmb3IgYFNJTkdMRWApIG9yIG91dHB1dCBkaXJlY3RvcnkgKGZvciBgU1BMSVRgKS4gfAoKIyMjIFN0YW5kYWxvbmUgamFyCgpBbiBhbHRlcm5hdGl2ZSB0byB0aGUgbWF2ZW4gcGx1Z2luIGlzIHRvIHVzZSB0aGUgc3RhbmRhbG9uZSAqamFyLXdpdGgtZGVwZW5kZW5jaWVzKiBhcnRpZmFjdCBmcm9tIFtNYXZlbiBDZW50cmFsXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9Zzpjb20uZ2l0aHViLmRhdmlkbW90ZW4lMjBBTkQlMjBhOm9wZW5hcGktdG8tcGxhbnR1bWwpIChvciBmcm9tIHRoZSBgdGFyZ2V0YCBkaXJlY3RvcnkgaWYgeW91IGhhdmUgYnVpbHQgdGhlIHByb2plY3QgbG9jYWxseSk6CgpgYGBiYXNoCmphdmEgLWphciBvcGVuYXBpLXRvLXBsYW50dW1sLVZFUlNJT05fSEVSRS1qYXItd2l0aC1kZXBlbmRlbmNpZXMuamFyIHNpbmdsZSBvcGVuYXBpLnlhbWwgUE5HIG9wZW5hcGkucG5nCmBgYApMYXJnZSBkaWFncmFtcyBhcmUgYmV0dGVyIHdpdGggU1ZHIGZvcm1hdCAocmVuZGVyaW5nIGlzIHNoYXJwIGF0IGV2ZXJ5IHpvb20gbGV2ZWwpIHNvIGp1c3QgcmVwbGFjZSBgUE5HYCBpbiB0aGUgYWJvdmUgY29tbWFuZCB3aXRoIGBTVkdgLiBJZiB5b3Ugc3RpbGwgd2FudCBhIFBORyBhbmQgeW91IGZpbmQgaXQgCmlzIGdldHRpbmcgY3V0IG9mZiB0aGVuIHlvdSBuZWVkIHRvIGluY3JlYXNlIHRoZSBwbGFudHVtbCBpbWFnZSBzaXplIGxpbWl0IGxpa2UgYmVsb3cuIEluY3JlYXNlIHRoZSBsaW1pdCB0aWxsIHlvdXIgZGlhZ3JhbSBmaXRzLiBZb3UgbWF5IG5lZWQgdG8gaW5jcmVhc2UgbWVtb3J5IHVzaW5nIHRoaXMgSlZNIGFyZyBgLVhteDEwMjRtYC4KCmBgYGJhc2gKamF2YSAtRFBMQU5UVU1MX0xJTUlUX1NJWkU9ODE5MiAtamFyIG9wZW5hcGktdG8tcGxhbnR1bWwtVkVSU0lPTl9IRVJFLWphci13aXRoLWRlcGVuZGVuY2llcy5qYXIgb3BlbmFwaS55YW1sIFBORyBvcGVuYXBpLnBuZwpgYGAKIyMjIEdyYWRsZQpZb3UgY2FuIGNvbmZpZ3VyZSB0aGUgZGlhZ3JhbSBnZW5lcmF0b3IgZnJvbSBHcmFkbGUgaW4gYGJ1aWxkLmdyYWRsZWAgbGlrZSB0aGlzOgpgYGBncm9vdnkKY29uZmlndXJhdGlvbnMgewogICAgZGlhZ3JhbXMKfQoKZGVwZW5kZW5jaWVzIHsKICAgIGRpYWdyYW1zICdjb20uZ2l0aHViLmRhdmlkbW90ZW46b3BlbmFwaS10by1wbGFudHVtbDpWRVJTSU9OX0hFUkU6amFyLXdpdGgtZGVwZW5kZW5jaWVzJwp9Cgp0YXNrIGRpYWdyYW1zKHR5cGU6IEphdmFFeGVjKSB7CiAgICBtYWluQ2xhc3MgPSAnY29tLmdpdGh1Yi5kYXZpZG1vdGVuLm9hczMucHVtbC5Db252ZXJ0ZXJNYWluJwogICAgY2xhc3NwYXRoID0gY29uZmlndXJhdGlvbnMuZGlhZ3JhbXMKICAgIGFyZ3MgPSBbJ3NwbGl0Jywnb3BlbmFwaS55YW1sJywnUE5HJywgJ2J1aWxkL2RpYWdyYW1zJ10KfQoKLy8gaW5jbHVkZSB0aGlzIHRvIGVuc3VyZSBydW5zIHdpdGggYGdyYWRsZSBidWlsZGAKYnVpbGQuZGVwZW5kc09uIGRpYWdyYW1zCmBgYApUaGVuIGNhbGwKYGBgYmFzaApncmFkbGUgZGlhZ3JhbXMKYGBgCgojIyMgSG93IHRvIHByb2R1Y2UgYSBkaWFncmFtIHBlciBzZXJ2aWNlIG1ldGhvZAoKYGBgYmFzaApqYXZhIC1qYXIgb3BlbmFwaS10by1wbGFudHVtbC1WRVJTSU9OX0hFUkUtamFyLXdpdGgtZGVwZW5kZW5jaWVzLmphciBzcGxpdCBvcGVuYXBpLnlhbWwgUE5HIGRpYWdyYW1zCmBgYApUaGUgYWJvdmUgY2FsbCB3aWxsIHdyaXRlIGEgZGlhZ3JhbSBwZXIgbWV0aG9kIGludG8gdGhlIGBkaWFncmFtc2AgZGlyZWN0b3J5IChhbmQgd2lsbCBjcmVhdGUgaXQgaWYgaXQgZG9lc24ndCBleGlzdCkuIAoKQXMgYW4gZXhhbXBsZSwgZG8gYG12biBjbGVhbiB0ZXN0YCBvbiB0aGUgcHJvamVjdCBhbmQgbG9vayBpbiBgdGFyZ2V0L3VucW9yay5zdmdgIGRpcmVjdG9yeS4KCiMjIFVzYWdlCgpgYGBqYXZhCmltcG9ydCBjb20uZ2l0aHViLmRhdmlkbW90ZW4ub2FzMy5wdW1sLkNvbnZlcnRlcjsKClN0cmluZyBwdW1sID0gQ29udmVydGVyLm9wZW5BcGlUb1B1bWwob3BlbmFwaSk7CmBgYAoKIyMgU3lzdGVtIHByb3BlcnRpZXMKKiBgbWF4LmVudW0uZW50cmllc2AgZGVmYXVsdHMgdG8gMTIuIElmIGFuIGVudW0gaGFzIG1vcmUgdGhhbiB0aGUgbWF4IHRoZW4gaXQgd2lsbCBiZSBsaW1pdGVkIHRvIHRoYXQgbnVtYmVyIGFuZCBhbiBlbnRyeSBgLi4uYCB3aWxsIGFwcGVhciBhdCB0aGUgZW5kIG9mIHRoZSBlbnVtcy4KCiMjIEV4YW1wbGVzCgpVbml0IHRlc3QgZXhhbXBsZXMgYXJlIFtoZXJlXShvcGVuYXBpLXRvLXBsYW50dW1sL3NyYy9kb2NzL2dlbmVyYXRlZC9leGFtcGxlcy5tZCkuCgpbcGV0c3RvcmUtZXhwYW5kZWQueW1sXShvcGVuYXBpLXRvLXBsYW50dW1sL3NyYy90ZXN0L3Jlc291cmNlcy9pbnB1dHMvcGV0c3RvcmUtZXhwYW5kZWQueW1sKToKCjxpbWcgc3JjPSJvcGVuYXBpLXRvLXBsYW50dW1sL3NyYy9kb2NzL3Rlc3RzL3BldHN0b3JlLWV4cGFuZGVkLnB1bWwuc3ZnIi8+CgpbYm9va3N0b3JlLnltbF0ob3BlbmFwaS10by1wbGFudHVtbC9zcmMvdGVzdC9yZXNvdXJjZXMvZGVtb3MvYm9va3N0b3JlLnltbCk6Cgo8aW1nIHNyYz0ib3BlbmFwaS10by1wbGFudHVtbC9zcmMvZG9jcy9kZW1vcy9ib29rc3RvcmUuc3ZnIi8+CgpbZWNvbW1lcmNlLnltbF0ob3BlbmFwaS10by1wbGFudHVtbC9zcmMvdGVzdC9yZXNvdXJjZXMvZGVtb3MvZWNvbW1lcmNlLnltbCkKCjxpbWcgc3JjPSJvcGVuYXBpLXRvLXBsYW50dW1sL3NyYy9kb2NzL2RlbW9zL2Vjb21tZXJjZS5zdmciLz4KCltuZXdzLnltbF0ob3BlbmFwaS10by1wbGFudHVtbC9zcmMvdGVzdC9yZXNvdXJjZXMvZGVtb3MvbmV3cy55bWwpOgoKPGltZyBzcmM9Im9wZW5hcGktdG8tcGxhbnR1bWwvc3JjL2RvY3MvZGVtb3MvbmV3cy5zdmciLz4KCltzdHJhdmEueW1sXShvcGVuYXBpLXRvLXBsYW50dW1sL3NyYy90ZXN0L3Jlc291cmNlcy9kZW1vcy9zdHJhdmEueW1sKToKCjxpbWcgc3JjPSJvcGVuYXBpLXRvLXBsYW50dW1sL3NyYy9kb2NzL2RlbW9zL3N0cmF2YS5zdmciLz4KClt0d2l0dGVyLnltbF0ob3BlbmFwaS10by1wbGFudHVtbC9zcmMvdGVzdC9yZXNvdXJjZXMvZGVtb3MvdHdpdHRlci55bWwpOgoKPGltZyBzcmM9Im9wZW5hcGktdG8tcGxhbnR1bWwvc3JjL2RvY3MvZGVtb3MvdHdpdHRlci5zdmciLz4KCltlYmF5LnltbF0ob3BlbmFwaS10by1wbGFudHVtbC9zcmMvdGVzdC9yZXNvdXJjZXMvZGVtb3MvZWJheS55bWwpOgoKPGltZyBzcmM9Im9wZW5hcGktdG8tcGxhbnR1bWwvc3JjL2RvY3MvZGVtb3MvZWJheS5zdmciLz4KCg== readmeEtag: '"0098afee878ec5c4c314b98e13ff339c3d69b1be"' readmeLastModified: Tue, 22 Jul 2025 22:51:28 GMT repositoryId: 339604008 description: >- Converts OpenAPI 3.0 definitions to Plant UML text for visualisation of your API. created: '2021-02-17T03:47:43Z' updated: '2026-02-02T23:43:30Z' language: Java archived: false stars: 113 watchers: 4 forks: 22 owner: davidmoten logo: https://avatars.githubusercontent.com/u/318187?v=4 repoEtag: '"45b61bb985493c7e67c57870dff08c778d527c65da2cd43b1db89704710d005e"' repoLastModified: Mon, 02 Feb 2026 23:43:30 GMT foundInMaster: true category: SDK id: d4f9d833f5a48b843c52f5ec6f582976 - source: openapi3 tags repository: https://github.com/oatpp/oatpp-swagger v3: true repositoryMetadata: base64Readme: >- IyBvYXRwcC1zd2FnZ2VyIFshW29hdHBwIGJ1aWxkIHN0YXR1c10oaHR0cHM6Ly9kZXYuYXp1cmUuY29tL2xnYW56enpvL2xnYW56enpvL19hcGlzL2J1aWxkL3N0YXR1cy9vYXRwcC5vYXRwcC1zd2FnZ2VyKV0oaHR0cHM6Ly9kZXYuYXp1cmUuY29tL2xnYW56enpvL2xnYW56enpvL19idWlsZD9kZWZpbml0aW9uSWQ9MikKU3dhZ2dlciBVSSBmb3Igb2F0cHAgc2VydmljZXMKClJlYWQgbW9yZToKLSBbQWJvdXQgb2F0cHBdKGh0dHBzOi8vb2F0cHAuaW8vKSAgCi0gW1doYXQgaXMgU3dhZ2dlciBVSV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3Rvb2xzL3N3YWdnZXItdWkvKQotIFtFbmRwb2ludCBhbm5vdGF0aW9uIGFuZCBBUEkgZG9jdW1lbnRhdGlvbiBpbiBvYXRwcF0oaHR0cHM6Ly9vYXRwcC5pby9kb2NzL2NvbXBvbmVudHMvYXBpLWNvbnRyb2xsZXIvI2VuZHBvaW50LWFubm90YXRpb24tYW5kLWFwaS1kb2N1bWVudGF0aW9uKS4KCiMjIEV4YW1wbGUKCkZvciBmdWxsIGV4YW1wbGUgcHJvamVjdCBzZWU6IFtFeGFtcGxlIENSVUQtQVBJIHByb2plY3Qgd2l0aCBTd2FnZ2VyIFVJXShodHRwczovL2dpdGh1Yi5jb20vb2F0cHAvZXhhbXBsZS1jcnVkKQoKIyMgQnJpZWYKCi0gVXNlIGBgYG9hdHBwOjpzd2FnZ2VyOjpDb250cm9sbGVyYGBgIHdpdGggYGBgb2F0cHA6OndlYjo6c2VydmVyOjpIdHRwQ29ubmVjdGlvbkhhbmRsZXJgYGAKLSBVc2UgYGBgb2F0cHA6OnN3YWdnZXI6OkFzeW5jQ29udHJvbGxlcmBgYCB3aXRoIGBgYG9hdHBwOjp3ZWI6OnNlcnZlcjo6QXN5bmNIdHRwQ29ubmVjdGlvbkhhbmRsZXJgYGAKCi0gU3dhZ2dlciBVSSBsb2NhdGlvbiAtIGBgYGh0dHA6Ly9sb2NhbGhvc3Q6PFBPUlQ+L3N3YWdnZXIvdWlgYGAKLSBPcGVuQXBpIDMuMC4wIHNwZWNpZmljYXRpb24gbG9jYXRpb24gLSBgYGBodHRwOi8vbG9jYWxob3N0OjxQT1JUPi9hcGktZG9jcy9vYXMtMy4wLjAuanNvbmBgYAoKSWYgeW91IGFyZSB1c2luZyBgYGBvYXRwcDo6d2ViOjpzZXJ2ZXI6OmFwaTo6QXBpQ29udHJvbGxlcmBgYCBtb3N0IHBhcnRzIG9mIHlvdXIgZW5kcG9pbnRzIGFyZSBkb2N1bWVudGVkIGF1dG9tYXRpY2FsbHkgbGlrZToKCi0gRW5kcG9pbnQgbmFtZQotIFBhcmFtZXRlcnMKLSBSZXF1ZXN0IEJvZHkKCllvdSBtYXkgYWRkIG1vcmUgaW5mb3JtYXRpb24gdG8geW91ciBlbmRwb2ludCBsaWtlIGZvbGxvd3M6CgpgYGBjKysKRU5EUE9JTlRfSU5GTyhjcmVhdGVVc2VyKSB7CiAgaW5mby0+c3VtbWFyeSA9ICJDcmVhdGUgbmV3IFVzZXIiOwogIGluZm8tPmFkZENvbnN1bWVzPFVzZXJEdG8+KCJhcHBsaWNhdGlvbi9qc29uIik7CiAgaW5mby0+YWRkUmVzcG9uc2U8VXNlckR0bz4oU3RhdHVzOjpDT0RFXzIwMCwgImFwcGxpY2F0aW9uL2pzb24iKTsKICBpbmZvLT5hZGRSZXNwb25zZShTdGF0dXM6OkNPREVfNTAwKTsKfQpFTkRQT0lOVCgiUE9TVCIsICJkZW1vL2FwaS91c2VycyIsIGNyZWF0ZVVzZXIsCiAgICAgICAgIEJPRFlfRFRPKFVzZXJEdG8sIHVzZXJEdG8pKSB7CiAgcmV0dXJuIGNyZWF0ZUR0b1Jlc3BvbnNlKFN0YXR1czo6Q09ERV8yMDAsIG1fZGF0YWJhc2UtPmNyZWF0ZVVzZXIodXNlckR0bykpOwp9CmBgYAoKIyMjIEhvdyB0byBhZGQgU3dhZ2dlciBVSSB0byB5b3VyIHByb2plY3QKCjEpIEFkZCBgYGBvYXRwcDo6c3dhZ2dlcjo6RG9jdW1lbnRJbmZvYGBgIGFuZCBgYGBvYXRwcDo6c3dhZ2dlcjo6UmVzb3VyY2VzYGBgIGNvbXBvbmVudHMgdG8geW91ciBBcHBDb21wb25lbnRzOgoKYGBgYysrCi8qKgogKiAgR2VuZXJhbCBBUEkgZG9jcyBpbmZvCiAqLwpPQVRQUF9DUkVBVEVfQ09NUE9ORU5UKHN0ZDo6c2hhcmVkX3B0cjxvYXRwcDo6c3dhZ2dlcjo6RG9jdW1lbnRJbmZvPiwgc3dhZ2dlckRvY3VtZW50SW5mbykoW10gewoKICBvYXRwcDo6c3dhZ2dlcjo6RG9jdW1lbnRJbmZvOjpCdWlsZGVyIGJ1aWxkZXI7CgogIGJ1aWxkZXIKICAuc2V0VGl0bGUoIlVzZXIgZW50aXR5IHNlcnZpY2UiKQogIC5zZXREZXNjcmlwdGlvbigiQ1JVRCBBUEkgRXhhbXBsZSBwcm9qZWN0IHdpdGggc3dhZ2dlciBkb2NzIikKICAuc2V0VmVyc2lvbigiMS4wIikKICAuc2V0Q29udGFjdE5hbWUoIkl2YW4gT3ZzeWFub2Noa2EiKQogIC5zZXRDb250YWN0VXJsKCJodHRwczovL29hdHBwLmlvLyIpCgogIC5zZXRMaWNlbnNlTmFtZSgiQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wIikKICAuc2V0TGljZW5zZVVybCgiaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIikKCiAgLmFkZFNlcnZlcigiaHR0cDovL2xvY2FsaG9zdDo4MDAwIiwgInNlcnZlciBvbiBsb2NhbGhvc3QiKTsKCiAgLy8gV2hlbiB5b3UgYXJlIHVzaW5nIHRoZSBBVVRIRU5USUNBVElPTigpIEVuZHBvaW50LU1hY3JvIHlvdSBtdXN0IGFkZCBhbiBTZWN1cml0eVNjaGVtZSBvYmplY3QgKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNzZWN1cml0eVNjaGVtZU9iamVjdCkKICAvLyBGb3IgYmFzaWMtYXV0aGVudGljYXRpb24geW91IGNhbiB1c2UgdGhlIGRlZmF1bHQgQmFzaWMtQXV0aG9yaXphdGlvbi1TZWN1cml0eS1TY2hlbWUgbGlrZSB0aGlzCiAgLy8gRm9yIG1vcmUgY29tcGxleCBhdXRoZW50aWNhdGlvbiBzY2hlbWVzIHlvdSBjYW4gdXNlIHRoZSBvYXRwcDo6c3dhZ2dlcjo6RG9jdW1lbnRJbmZvOjpTZWN1cml0eVNjaGVtZUJ1aWxkZXIgYnVpbGRlcgogIC8vIERvbid0IGZvcmdldCB0byBhZGQgaW5mby0+YWRkU2VjdXJpdHlSZXF1aXJlbWVudCgiYmFzaWNfYXV0aCIpIHRvIHlvdXIgRU5EUE9JTlRfSU5GTygpIE1hY3JvIQogIC5hZGRTZWN1cml0eVNjaGVtZSgiYmFzaWNfYXV0aCIsIG9hdHBwOjpzd2FnZ2VyOjpEb2N1bWVudEluZm86OlNlY3VyaXR5U2NoZW1lQnVpbGRlcjo6RGVmYXVsdEJhc2ljQXV0aG9yaXphdGlvblNlY3VyaXR5U2NoZW1lKCkpOwoKICByZXR1cm4gYnVpbGRlci5idWlsZCgpOwoKfSgpKTsKCgovKioKICogIFN3YWdnZXItVWkgUmVzb3VyY2VzICg8b2F0cHAtZXhhbXBsZXM+L2xpYi9vYXRwcC1zd2FnZ2VyL3JlcykKICovCk9BVFBQX0NSRUFURV9DT01QT05FTlQoc3RkOjpzaGFyZWRfcHRyPG9hdHBwOjpzd2FnZ2VyOjpSZXNvdXJjZXM+LCBzd2FnZ2VyUmVzb3VyY2VzKShbXSB7CiAgLy8gTWFrZSBzdXJlIHRvIHNwZWNpZnkgY29ycmVjdCBmdWxsIHBhdGggdG8gb2F0cHAtc3dhZ2dlci9yZXMgZm9sZGVyICEhIQogIHJldHVybiBvYXRwcDo6c3dhZ2dlcjo6UmVzb3VyY2VzOjpsb2FkUmVzb3VyY2VzKCI8WU9VUi1QQVRILVRPLVJFUE8+L2xpYi9vYXRwcC1zd2FnZ2VyL3JlcyIpOwp9KCkpOwoKYGBgCgoyKSBDcmVhdGUgYGBgb2F0cHA6OnN3YWdnZXI6OkNvbnRyb2xsZXJgYGAgd2l0aCBsaXN0IG9mIGVuZHBvaW50cyB5b3Ugd2hhbnQgdG8gZG9jdW1lbnQgYW5kIGFkZCBpdCB0byByb3V0ZXI6CgpgYGBjKysKYXV0byBzd2FnZ2VyQ29udHJvbGxlciA9IG9hdHBwOjpzd2FnZ2VyOjpDb250cm9sbGVyOjpjcmVhdGVTaGFyZWQoPGxpc3Qtb2YtZW5kcG9pbnRzLXRvLWRvY3VtZW50Pik7CnN3YWdnZXJDb250cm9sbGVyLT5hZGRFbmRwb2ludHNUb1JvdXRlcihyb3V0ZXIpOwpgYGAKCjMpIGNtYWtlIDogIAoKQWRkIHRoZSBmb2xsb3dpbmcgbGluZXMgdG8geW91ciBDTWFrZUxpc3RzLnR4dCBwcm9qZWN0IGZpbGUKYGBgCgpmaW5kX3BhY2thZ2Uob2F0cHAgMS4zLjAgUkVRVUlSRUQpCmlmKG9hdHBwX0ZPVU5EKQogIG1lc3NhZ2UoU1RBVFVTICJGb3VuZCBvYXRwcCB2ZXJzaW9uOiAke29hdHBwX1ZFUlNJT05fU1RSSU5HfSIpCmVsc2UoKQogIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkNvdWxkIG5vdCBmaW5kIG9hdHBwIikKZW5kaWYoKQoKZmluZF9wYWNrYWdlKG9hdHBwLXN3YWdnZXIgIDEuMy4wIFJFUVVJUkVEKQppZihvYXRwcC1zd2FnZ2VyX0ZPVU5EKQogIG1lc3NhZ2UoU1RBVFVTICJGb3VuZCBvYXRwcC1zd2FnZ2VyIHZlcnNpb246ICR7b2F0cHAtc3dhZ2dlcl9WRVJTSU9OX1NUUklOR30iKQplbHNlKCkKICBtZXNzYWdlKEZBVEFMX0VSUk9SICJDb3VsZCBub3QgZmluZCBvYXRwcC1zd2FnZ2VyIikKZW5kaWYoKQoKaW5jbHVkZV9kaXJlY3Rvcmllcygke29hdHBwX0lOQ0xVREVfRElSU30pCmluY2x1ZGVfZGlyZWN0b3JpZXMoJHtvYXRwcC1zd2FnZ2VyX0lOQ0xVREVfRElSU30pCgphZGRfZGVmaW5pdGlvbnMoIAogIC1ET0FUUFBfU1dBR0dFUl9SRVNfUEFUSD0iJHtPQVRQUF9CQVNFX0RJUn0vYmluL29hdHBwLXN3YWdnZXIvcmVzIgopCgp0YXJnZXRfbGlua19saWJyYXJpZXMgKHByb2plY3QgUFVCTElDCiAgIC8vIGFkZF95b3VyIGxpYnJhcmllcyBoZXJlCiAgIFBVQkxJQyBvYXRwcDo6b2F0cHAKICAgUFVCTElDIG9hdHBwOjpvYXRwcC1zd2FnZ2VyCikKYGBgCgojIyMgQ3VzdG9taXNlIFN3YWdnZXIgVUkgUGF0aHMKClRvIGN1c3RvbWlzZSBzd2FnZ2VyIFVJIGVuZHBvaW50cyBwYXRocyBhZGQgdGhlIGZvbGxvd2luZyBjb21wb25lbnQ6CgpgYGBjKysKICAvKioKICAgKiAgU3dhZ2dlciBDb250cm9sbGVyIFBhdGhzCiAgICovCiAgT0FUUFBfQ1JFQVRFX0NPTVBPTkVOVChzdGQ6OnNoYXJlZF9wdHI8b2F0cHA6OnN3YWdnZXI6OkNvbnRyb2xsZXJQYXRocz4sIGNvbnRyb2xsZXJQYXRocykoW10gewogICAgYXV0byBwYXRocyA9IHN0ZDo6bWFrZV9zaGFyZWQ8b2F0cHA6OnN3YWdnZXI6OkNvbnRyb2xsZXJQYXRocz4oKTsKICAgIHBhdGhzLT5hcGlKc29uID0gImN1c3RvbS9wYXRoL2Zvci9hcGkuanNvbiI7ICAgICAgIC8vIGRlZmF1bHQgaXMgImFwaS1kb2NzL29hcy0zLjAuMC5qc29uIgogICAgcGF0aHMtPnVpID0gIm15L2N1c3RvbS9wYXRoL3N3YWdnZXItdWkiOyAgICAgICAgICAgLy8gZGVmYXVsdCBpcyAic3dhZ2dlci91aSIKICAgIHBhdGhzLT51aVJlc291cmNlcyA9ICJteS9jdXN0b20vcGF0aC97ZmlsZW5hbWV9IjsgIC8vIGRlZmF1bHQgaXMgInN3YWdnZXIve2ZpbGVuYW1lfSIKICAgIHJldHVybiBwYXRoczsKICB9KCkpOwpgYGAKCioqTk9URToqKiBgcGF0aHMtPnVpYCBhbmQgYHBhdGhzLT51aVJlc291cmNlc2AgTVVTVCBoYXZlIHRoZSBzYW1lIGJhc2UgcGF0aCAtIGFzIHNob3duIGFib3ZlLgoKKipEb25lISoqCg== readmeEtag: '"273b24fa1dc9545d778a601ef94b676b6e4d0998"' readmeLastModified: Tue, 04 Jun 2024 23:13:23 GMT repositoryId: 142623136 description: OpenApi 3.0.0 docs + Swagger UI for oatpp services created: '2018-07-27T20:59:35Z' updated: '2026-01-20T02:10:10Z' language: C++ archived: false stars: 106 watchers: 7 forks: 66 owner: oatpp logo: https://avatars.githubusercontent.com/u/37167448?v=4 license: Apache-2.0 repoEtag: '"caa9d9bb72938fc9afcf30eb5b78fc2f28981ed3dd6cdf227c660fae413bce72"' repoLastModified: Tue, 20 Jan 2026 02:10:10 GMT foundInMaster: true category: Low-level Tooling id: e2b5ed322cb3283e7ad1edd0b0634fc4 - source: openapi3 tags repository: https://github.com/cdwv/oas3-api-snippet-enricher v3: true repositoryMetadata: base64Readme: >- IyBFbnJpY2ggeW91ciBPcGVuQVBJIDMuMCBzY2hlbWEgd2l0aCBleGFtcGxlcwoKVGhhbmtzIHRvIHRoZSB3b25kZXJmdWwgW3N3YWdnZXItc25pcHBldF0oaHR0cHM6Ly9naXRodWIuY29tL0VyaWtXaXR0ZXJuL3N3YWdnZXItc25pcHBldCkgbW9kdWxlIHlvdSBjYW4gbm93IHNpbXBseSBlbnJpY2ggeW91ciBPcGVuQVBJIHNjaGVtYSB3aXRoIGNvZGUgc2FtcGxlcy4gSXQncyBhcyBlYXN5IGFzIDEuMi4zLgoKMS4gYGBucG0gaW5zdGFsbCBzbmlwcGV0LWVucmljaGVyLWNsaWBgCjIuIGBgLi9ub2RlX21vZHVsZXMvLmJpbi9zbmlwcGV0LWVucmljaGVyLWNsaSAtLWlucHV0PXlvdXJfb2FzLmpzb25gYAoKIyMgRXhhbXBsZSBVc2FnZQoKRW5yaWNoIHlvdXIgT0FTIDMuMCBTY2hlbWEKYGBgCi4vbm9kZV9tb2R1bGVzLy5iaW4vc25pcHBldC1lbnJpY2hlci1jbGkgLS1pbnB1dD1vcGVuYXBpLmpzb24gPiBvcGVuYXBpLXdpdGgtZXhhbXBsZXMuanNvbgpgYGAKQWx0ZXJuYXRpdmVseSB5b3UgY2FuIHBvaW50IGl0IHRvIGEgWUFNTC1mb3JtYXR0ZWQgc3BlYzoKYGBgCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vbWFzdGVyL2V4YW1wbGVzL3YzLjAvcGV0c3RvcmUueWFtbCAtLW91dHB1dCBwZXRzdG9yZS55YW1sCi4vbm9kZV9tb2R1bGVzLy5iaW4vc25pcHBldC1lbnJpY2hlci1jbGkgLS1pbnB1dD1wZXRzdG9yZS55YW1sID4gb3BlbmFwaS13aXRoLWV4YW1wbGVzLmpzb24KYGBgCgpVc2UgdGFyZ2V0cyBvcHRpb25zIHRvIHNwZWNpZmljIGxhbmd1YWdlczoKYGBgCi4vbm9kZV9tb2R1bGVzLy5iaW4vc25pcHBldC1lbnJpY2hlci1jbGkgLS10YXJnZXRzPSJub2RlX3JlcXVlc3Qsc2hlbGxfY3VybCIgLS1pbnB1dD1vcGVuYXBpLmpzb24gPiBvcGVuYXBpLXdpdGgtZXhhbXBsZXMuanNvbgpgYGAKClVzZSBbUmVEb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jLykgdG8gYnVpbGQgYmVhdXRpZnVsIEFQSSBkb2M6CmBgYApyZWRvYy1jbGkgYnVuZGxlIG9wZW5hcGktd2l0aC1leGFtcGxlcy5qc29uCmBgYAoKZW5qb3kuCgohW1JlRG9jIEFQSSBkb2N1bWVudGF0aW9uIHdpdGggY29kZSBzYW1wbGVzXShpbWFnZS5wbmcpCgpDb250cmlidXRpbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkNvbnRyaWJ1dGlvbnMgYXJlIG1vc3Qgd2VsY29tZSEKCgpMaWNlbnNlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpNSVQKCk1haW50YWluZXJzCj09PT09PT09PT09CgpbPGltZyB3aWR0aD0iMzAwIiB0aXRsZT0iQ29kZXdhdmUuZXUiIHNyYz0iY2R3di1sb2dvLW5ldy5zdmciPl0oaHR0cDovL2NvZGV3YXZlLmV1KQoKUHJvamVjdCBpcyBjdXJyZW50bHkgbWFpbnRhaW5lZCwgaW4gb3VyIHNwYXJlIHRpbWUsIGJ5IFtjb2Rld2F2ZS5ldV0oaHR0cDovL2NvZGV3YXZlLmV1KSBhbmQgYSBncm93aW5nIG51bWJlciBvZiBDb250cmlidXRvcnMhCg== readmeEtag: '"2e480b8b5b9a3c8516169de7cef40e16dade1c06"' readmeLastModified: Mon, 11 Dec 2023 12:08:59 GMT repositoryId: 220618185 description: Enrich your OpenAPI 3.0 JSON with code samples created: '2019-11-09T09:13:16Z' updated: '2025-12-19T14:23:25Z' language: JavaScript archived: false stars: 97 watchers: 8 forks: 14 owner: cdwv logo: https://avatars.githubusercontent.com/u/6742687?v=4 license: MIT repoEtag: '"07f7ab831d4772605944d76b1543ab16c3be38090dabb5f8cb226bfbdcf2de06"' repoLastModified: Fri, 19 Dec 2025 14:23:25 GMT foundInMaster: true category: - Documentation - Parsers id: 839bb72e7d7b73d50edcb2723923e0e2 - source: openapi3 tags repository: https://github.com/koumoul-dev/vue-openapi v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIHZpZXdlciBjb21wb25lbnQgZm9yIFZ1ZUpTCgpUaGlzIFtWdWUuanNdKGh0dHBzOi8vdnVlanMub3JnLykgY29tcG9uZW50IGlzIGRlc2lnbmVkIHRvIGVhc2lseSBicm93c2UgYW5kIHRlc3QgYSBSRVNUIEFQSSBkZXNjcmliZWQKd2l0aCB0aGUgW09wZW5BUEkgMy4wIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKSAoZm9ybWVybHkga25vd24gYXMgU3dhZ2dlciBTcGVjaWZpY2F0aW9uKS4gVGhpcyBjb21wb25lbnQgZm9sbG93cyBHb29nbGUgW01hdGVyaWFsIERlc2lnbl0oaHR0cHM6Ly9tYXRlcmlhbC5nb29nbGUuY29tLykgcHJpbmNpcGxlcyBhbmQgcmVsaWVzIG9uIHRoZSBbVnVlIE1hdGVyaWFsXShodHRwczovL2dpdGh1Yi5jb20vbWFyY29zbW91cmEvdnVlLW1hdGVyaWFsKSBmcmFtZXdvcmsuIEl0IGFsc28gcmVsaWVzIG9uIFt2dWUtcmVzb3VyY2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9wYWdla2l0L3Z1ZS1yZXNvdXJjZSkgdG8gcGVyZm9ybSBBUEkgcmVxdWVzdHMuCgpTZWUgaXQgaW4gYWN0aW9uIDoKICogaHR0cHM6Ly9rb3Vtb3VsLmNvbS9vcGVuYXBpLXZpZXdlci8KCiMjIEluc3RhbGwKCm5wbSA6CmBgYGNvbnNvbGUKJCBucG0gaW5zdGFsbCAtLXNhdmUgdnVlLW9wZW5hcGkKYGBgCgojIyBVc2FnZQpgYGBqcwppbXBvcnQgVnVlIGZyb20gJ3Z1ZScKaW1wb3J0IFZ1ZU1hdGVyaWFsIGZyb20gJ3Z1ZS1tYXRlcmlhbCcKaW1wb3J0IE9wZW5BcGkgZnJvbSAndnVlLW9wZW5hcGknCmltcG9ydCAndnVlLW1hdGVyaWFsL2Rpc3QvdnVlLW1hdGVyaWFsLmNzcycKaW1wb3J0IFZ1ZVJlc291cmNlIGZyb20gJ3Z1ZS1yZXNvdXJjZScKCmltcG9ydCBqc29uQXBpIGZyb20gJy4vc3dhZ2dlci5qc29uJwoKVnVlLnVzZShWdWVNYXRlcmlhbCkKVnVlLnVzZShWdWVSZXNvdXJjZSkKCm5ldyBWdWUoewogIGVsOiAnI2FwcCcsCiAgdGVtcGxhdGU6ICc8b3Blbi1hcGkgdi1pZj0ianNvbkFwaSIgOmFwaT0ianNvbkFwaSIgbWQtdGhlbWU9IlwnZGVmYXVsdFwnIiA6cXVlcnktcGFyYW1zPSJxdWVyeVBhcmFtcyIgOmhlYWRlcnM9ImhlYWRlcnMiPjwvb3Blbi1hcGk+JywKICBkYXRhOiAoKSA9PiAoewogICAganNvbkFwaToganNvbkFwaSwKICAgIHF1ZXJ5UGFyYW1zOiB7CiAgICAgIHVzZXJJZDogJ2pvaG5fZG9lJwogICAgfSwKICAgIGhlYWRlcnM6IHsKICAgICAgYXBpX2tleTogJ215X2FwaV9rZXknCiAgICB9CiAgfSksCiAgY29tcG9uZW50czogewogICAgT3BlbkFwaQogIH0KfSkKYGBgCgojIyBEZXZlbG9wCgpSdW4gd2VicGFjayBpbiB3YXRjaCBtb2RlOgoKICAgIG5wbSBydW4gZGV2CgpUaGVuIG9wZW4gdGVzdC9pbmRleC5odG1sIGluIHlvdXIgYnJvd3Nlci4KClRvIHN3aXRjaCBiZXR3ZWVuIGV4YW1wbGVzLCBtb2RpZnkgdGhlIGltcG9ydCAianNvbkFwaSIgaW4gdGVzdC9hcHAuanMuCgojIyBMaWNlbnNlCgpbTUlUIExpY2Vuc2VdKGxpY2Vuc2UubWQpCgojIyBSZXNvdXJjZXMKCiogW0F3ZXNvbWUgT3BlbkFwaSAzXShodHRwczovL2dpdGh1Yi5jb20vTWVybWFkZS9hd2Vzb21lLW9wZW5hcGkzKSBsaXN0cyB2YXJpb3VzIHByb2plY3RzIHJlbGF0ZWQgdG8gT3BlbkFwaSAzLjAueAoqIFtzd2FnZ2VyMm9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL3N3YWdnZXIyb3BlbmFwaSkgbGV0cyB5b3UgY29udmVydCBTd2FnZ2VyIDIuMCBkZWZpbml0aW9ucyBpbnRvIE9wZW5BcGkgMy4wLngKCiMjIFNpbWlsYXIgcHJvamVjdHMKClRoaXMgcHJvamVjdCBoYXMgYmVlbiBpbnNwaXJlZCBieSB0aGUgZm9sbG93aW5nIHByb2plY3RzIDoKCiAqIFthbmd1bGFyLXN3YWdnZXItdWldKGh0dHBzOi8vZ2l0aHViLmNvbS9PcmFuZ2UtT3BlblNvdXJjZS9hbmd1bGFyLXN3YWdnZXItdWkpCiAqIFthbmd1bGFyLXN3YWdnZXItdWktbWF0ZXJpYWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJvc2gvYW5ndWxhci1zd2FnZ2VyLXVpLW1hdGVyaWFsKQo= readmeEtag: '"3533626f90ee3a6fc8cb8614676b12dcd9d4f1b7"' readmeLastModified: Wed, 06 Dec 2023 10:39:08 GMT repositoryId: 75237921 description: OpenAPI viewer component for VueJS created: '2016-11-30T23:56:46Z' updated: '2025-07-21T13:35:41Z' language: Vue archived: false stars: 95 watchers: 7 forks: 19 owner: koumoul-dev logo: https://avatars.githubusercontent.com/u/16051219?v=4 license: MIT repoEtag: '"5a35eb99ace8d18a67da7cf6ff6013ba75c0c26f1806f462e0f77d0b6220ed69"' repoLastModified: Mon, 21 Jul 2025 13:35:41 GMT foundInMaster: true category: Parsers id: 016162b2c3c0b0a72ac73ea4566276c8 - source: openapi3 tags repository: https://github.com/data-fair/openapi-viewer v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIHZpZXdlcgoKVGhpcyBzZXJ2aWNlIGlzIGRlc2lnbmVkIHRvIGVhc2lseSBicm93c2UgYW5kIHRlc3QgYSBSRVNUIEFQSSBkZXNjcmliZWQgd2l0aCB0aGUgW09wZW5BUEkgMy4wIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKS4KCiMjIFNwb25zb3JzCgp8IHwgQ2xpY2sgW2hlcmUgdG8gc3VwcG9ydCB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBwcm9qZWN0XShodHRwczovL2dpdGh1Yi5jb20vc3BvbnNvcnMva291bW91bC1kZXYpLiB8CnwtfC18CnwgIVtLb3Vtb3VsIGxvZ29dKGh0dHBzOi8va291bW91bC5jb20vc3RhdGljL2xvZ28tc2xvZ2FuLnBuZykgfCBbS291bW91bF0oaHR0cHM6Ly9rb3Vtb3VsLmNvbSkgZGV2ZWxvcHMgdGhlIERhdGEgRmFpciBlY29zeXN0ZW0gYW5kIGhvc3RzIGl0IGFzIGFuIG9ubGluZSBzZXJ2aWNlLiB8CnwgIVtEYXdpenogbG9nb10oaHR0cHM6Ly9kYXdpenouZnIvbG9nby1EYXdpenotYWxsLWFib3V0LXlvdXItZGF0YS1ob21lLnBuZykgfCBbRGF3aXp6XShodHRwczovL2Rhd2l6ei5mcikgdXNlcyB0aGUgRGF0YSBGYWlyIGVjb3N5c3RlbSBpbnNpZGUgaXRzIHBsYXRmb3JtIGFuZCBzdXBwb3J0cyBpdHMgZGV2ZWxvcG1lbnQuIHwKCiMjIFBhcmFtZXRlcnMKCiMjIyBRdWVyeSBQYXJhbWV0ZXJzCgotICoqZHJhd2VyTG9jYXRpb24qKiA6IFRoZSBsb2NhdGlvbiBvZiB0aGUgbmF2aWdhdGlvbi1kcmF3ZXIuIENhbiBiZSBgbGVmdGAgb3IgYHJpZ2h0YC4gRGVmYXVsdHMgdG8gYGxlZnRgLgotICoqdXJsVHlwZSoqIDogVGhlIHR5cGUgb2YgdGhlIFVSTCBkZWZpbmVkIGluIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgQUxMT1dFRF9VUkxTYC4KLSAqKm9wZXJhdGlvbioqIDogVGhlIGBvcGVyYXRpb25JZGAgb2YgdGhlIG9wZXJhdGlvbiB0byBuYXZpZ2F0ZSB0by4gW1JlZmVyZW5jZSA6IE9wZW5BUEkgMy4xIE9wZXJhdGlvbiBPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQoKPiDimqDvuI8gKipEZXByZWNhdGVkKio6Cj4KPiAtIH5+Kip1cmwqKiA6IFRoZSBsb2NhdGlvbiBvZiB0aGUgQVBJIGRvY3VtZW50YXRpb24gZmlsZSB0byBsb2FkLCBpbiBPcGVuQVBJIHYzIEpTT04gZm9ybWF0Ln5+ICpSZXBsYWNlZCBieSB0aGUgYHVybFR5cGVgIHF1ZXJ5IHBhcmFtZXRlciBpbnN0ZWFkIGFuZCB0aGUgYEFMTE9XRURfVVJMU2AgZW52aXJvbm1lbnQgdmFyaWFibGUuKgo+IC0gfn4qKmhpZGUtdG9vbGJhcioqIDogYHRydWVgIG9yIGBmYWxzZWAgdG8gaGlkZSB0aGUgdG9vbGJhciAodXNlZnVsIGZvciBpZnJhbWUgaW50ZWdyYXRpb24pLiBEZWZhdWx0cyB0byBgZmFsc2VgLn5+CgojIyMgRW52aXJvbm1lbnQgVmFyaWFibGVzCgotICoqVVNFX1NJTVBMRV9ESVJFQ1RPUlkqKiA6IEEgYm9vbGVhbiB0byBlbmFibGUgaW50ZWdyYXRpb24gd2l0aCAqKltTaW1wbGVEaXJlY3RvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRhLWZhaXIvc2ltcGxlLWRpcmVjdG9yeSkqKi4gRGVmYXVsdHMgdG8gYGZhbHNlYC4KCi0gKipERUZBVUxUX1VSTCoqIDogVGhlIGRlZmF1bHQgVVJMIHRvIGxvYWQgd2hlbiBubyBgdXJsVHlwZWAgcXVlcnkgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLgoKLSAqKkFMTE9XRURfVVJMUyoqIDogQSBKU09OIG9iamVjdCBjb250YWluaW5nIGEgbGlzdCBvZiBhbGxvd2VkIFVSTHMuIFRoZSBrZXlzIGFyZSB1c2VkIGFzIHRoZSBgdXJsVHlwZWAgcXVlcnkgcGFyYW1ldGVyLiBUaGUgdmFsdWVzIGFyZSB0aGUgVVJMcyB0byB0aGUgT3BlbkFQSSBmaWxlcy4gVGhlc2UgVVJMcyBjYW4gY29udGFpbiBwbGFjZWhvbGRlcnMgZW5jbG9zZWQgaW4gY3VybHkgYnJhY2VzIHt9LCB3aGljaCB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHF1ZXJ5IHBhcmFtZXRlcnMuIFRoZSBwbGFjZWhvbGRlcnMgYXJlIGRlZmluZWQgYnkgdGhlIGtleXMgb2YgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMuIERlZmF1bHRzIHRvIGFuIGVtcHR5IG9iamVjdC4KCj4gKkV4YW1wbGVzIG9mIEFMTE9XRURfVVJMUyA6Kgo+Cj4gYGBganNvbgo+IHsKPiAgICJleGFtcGxlWWFtbCI6ICJodHRwczovL2V4YW1wbGUxLmNvbS9vcGVuYXBpLnlhbWwiLAo+ICAgImV4YW1wbGVXaXRoVXJsVGVtcGxhdGUiOiAiaHR0cHM6Ly9leGFtcGxlMi5jb20ve2lkfS9vcGVuYXBpLmpzb24iCj4gfQo+IGBgYAoKIyMgSW50ZWdyYXRpb24gd2l0aCBTaW1wbGVEaXJlY3RvcnkKCkJ5IGRlZmF1bHQsIHRoZSB2aWV3ZXIgcnVucyBpbiAqKnN0YW5kYWxvbmUgbW9kZSoqIGFuZCBkb2VzIG5vdCBpbnRlZ3JhdGUgd2l0aCAqKltTaW1wbGVEaXJlY3RvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRhLWZhaXIvc2ltcGxlLWRpcmVjdG9yeSkqKi4gIApIb3dldmVyLCB5b3UgY2FuIGVuYWJsZSBpbnRlZ3JhdGlvbiB0byBiZW5lZml0IGZyb206CgotICoqVGhlbWluZyoqOiBBdXRvbWF0aWNhbGx5IGFkYXB0cyB0byB0aGUgcGxhdGZvcm0ncyBsb29rIGFuZCBmZWVsLgotICoqTGFuZ3VhZ2UqKjogVXNlcyB0aGUgc2FtZSBsYW5ndWFnZSBzZXR0aW5ncyBhcyB0aGUgZW52aXJvbm1lbnQuCgpUbyBlbmFibGUgaW50ZWdyYXRpb24gd2l0aCBTaW1wbGVEaXJlY3RvcnksIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGU6CgpgYGBiYXNoClVTRV9TSU1QTEVfRElSRUNUT1JZPXRydWUKYGBgCgojIyBEZXZlbG9wZXJzCgpUYWtlIGEgbG9vayBhdCB0aGUgW2NvbnRyaWJ1dGlvbiBndWlkZWxpbmVzXSguL0NPTlRSSUJVVElORy5tZCkuCg== readmeEtag: '"23e945a14de7ab424221132f20647e5cd88768ae"' readmeLastModified: Thu, 20 Mar 2025 13:59:20 GMT repositoryId: 84982324 description: Browse and test a REST API described with the OpenAPI 3.0 Specification created: '2017-03-14T18:12:56Z' updated: '2025-11-10T14:55:00Z' language: Vue archived: false stars: 94 watchers: 7 forks: 12 owner: data-fair logo: https://avatars.githubusercontent.com/u/83776320?v=4 license: MIT repoEtag: '"708f964483858dba587b1b25b95c60f36e7156854a0ea4a76035a3efc35bd12f"' repoLastModified: Mon, 10 Nov 2025 14:55:00 GMT foundInMaster: true category: - Documentation - Parsers id: c84aa3074b4ed8af1ecf41bafb7964d4 oldLocations: - https://github.com/koumoul-dev/openapi-viewer - source: openapi3 tags repository: https://github.com/jellyfin/jellyfin-sdk-kotlin v3: true repositoryMetadata: base64Readme: >- PCEtLSBtYXJrZG93bmxpbnQtZGlzYWJsZSBNRDAzMyBuby1pbmxpbmUtaHRtbCAtLT4KPGgxIGFsaWduPSJjZW50ZXIiPkplbGx5ZmluIEtvdGxpbiBTREs8L2gxPgo8aDMgYWxpZ249ImNlbnRlciI+UGFydCBvZiB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9qZWxseWZpbi5vcmcvIj5KZWxseWZpbiBQcm9qZWN0PC9hPjwvaDM+CgotLS0KCjxwIGFsaWduPSJjZW50ZXIiPgo8aW1nIGFsdD0iTG9nbyBCYW5uZXIiIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2plbGx5ZmluL2plbGx5ZmluLXV4L21hc3Rlci9icmFuZGluZy9TVkcvYmFubmVyLWxvZ28tc29saWQuc3ZnP3Nhbml0aXplPXRydWUiLz4KPGJyLz4KPGJyLz4KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2plbGx5ZmluL2plbGx5ZmluLXNkay1rb3RsaW4iPgo8aW1nIGFsdD0iTEdQTCAzLjAgbGljZW5zZSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL2plbGx5ZmluL2plbGx5ZmluLXNkay1rb3RsaW4uc3ZnIi8+CjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2plbGx5ZmluL2plbGx5ZmluLXNkay1rb3RsaW4vcmVsZWFzZXMiPgo8aW1nIGFsdD0iQ3VycmVudCBSZWxlYXNlIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3JlbGVhc2UvamVsbHlmaW4vamVsbHlmaW4tc2RrLWtvdGxpbi5zdmciLz4KPC9hPgo8YSBocmVmPSJodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9b3JnLmplbGx5ZmluLnNkayI+CjxpbWcgYWx0PSJNYXZlbiBDZW50cmFsIFJlbGVhc2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9tYXZlbi1jZW50cmFsL3Yvb3JnLmplbGx5ZmluLnNkay9qZWxseWZpbi1jb3JlLnN2ZyIvPgo8L2E+Cjxici8+CjxhIGhyZWY9Imh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL2plbGx5ZmluIj4KPGltZyBhbHQ9IkRvbmF0ZSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL29wZW5jb2xsZWN0aXZlL2FsbC9qZWxseWZpbi5zdmc/bGFiZWw9YmFja2VycyIvPgo8L2E+CjxhIGhyZWY9Imh0dHBzOi8vbWF0cml4LnRvLyMvK2plbGx5ZmluLWFuZHJvaWQtZGV2Om1hdHJpeC5vcmciPgo8aW1nIGFsdD0iQ2hhdCBvbiBNYXRyaXgiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9tYXRyaXgvamVsbHlmaW4tYW5kcm9pZC1kZXY6bWF0cml4Lm9yZy5zdmc/bG9nbz1tYXRyaXgiLz4KPC9hPgo8YSBocmVmPSJodHRwczovL3d3dy5yZWRkaXQuY29tL3IvamVsbHlmaW4iPgo8aW1nIGFsdD0iSm9pbiBvdXIgU3VicmVkZGl0IiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcmVkZGl0LXIlMkZqZWxseWZpbi0lMjNGRjU3MDAuc3ZnIi8+CjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2plbGx5ZmluL2plbGx5ZmluLXNkay1rb3RsaW4vcmVsZWFzZXMuYXRvbSI+CjxpbWcgYWx0PSJSZWxlYXNlIFJTUyBGZWVkIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcnNzLXJlbGVhc2VzLWZmYTUwMD9sb2dvPXJzcyIgLz4KPC9hPgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vamVsbHlmaW4vamVsbHlmaW4tc2RrLWtvdGxpbi9jb21taXRzL21hc3Rlci5hdG9tIj4KPGltZyBhbHQ9Ik1hc3RlciBDb21taXRzIFJTUyBGZWVkIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcnNzLWNvbW1pdHMtZmZhNTAwP2xvZ289cnNzIiAvPgo8L2E+CjwvcD4KCi0tLQoKVGhlIEtvdGxpbiBTREsgZm9yIEplbGx5ZmluIGltcGxlbWVudHMgdGhlIEplbGx5ZmluIEFQSSB0byBlYXNpbHkgYWNjZXNzIHNlcnZlcnMuIEl0IGlzIGN1cnJlbnRseSBhdmFpbGFibGUKZm9yIHRoZSBKVk0gYW5kIEFuZHJvaWQuIERldmVsb3BlciBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhdCBba290bGluLXNkay5qZWxseWZpbi5vcmddLgoKW2tvdGxpbi1zZGsuamVsbHlmaW4ub3JnXTogaHR0cHM6Ly9rb3RsaW4tc2RrLmplbGx5ZmluLm9yZy9ndWlkZS9nZXR0aW5nLXN0YXJ0ZWQuaHRtbAoKIyMgQ29udHJpYnV0aW5nCgpXZSB3ZWxjb21lIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIFNESy4gT3BlbiBhbiBpc3N1ZSBvciBhc2sgaW4gb3VyIG9mZmljaWFsIGNoYXRzIGlmIHlvdSBwbGFuIHRvIG1ha2UgYmlnZ2VyIGNoYW5nZXMuCgpUbyB2YWxpZGF0ZSBiaW5hcnkgY29tcGF0aWJpbGl0eSB3ZSB1c2UgdGhlIFtCaW5hcnkgY29tcGF0aWJpbGl0eSB2YWxpZGF0b3JdIHRvb2wgZnJvbSB0aGUgS290bGluIHRlYW0uIFdoZW4gY3JlYXRpbmcKcHVsbCByZXF1ZXN0cyB0aGUgYXBpIGZpbGVzIG5lZWQgdG8gYmUgdXBkYXRlZC4gVXNlIHRoZSBgYXBpRHVtcGAgR3JhZGxlIHRhc2sgdG8gZ2VuZXJhdGUgdGhlIGFwaSBmaWxlcy4gQWRkIHRoZSBjaGFuZ2VzCmZyb20gdGhpcyBjb21tYW5kIHRvIGEgc2VwYXJhdGUgY29tbWl0IHRvIG1ha2UgdGhlIHJldmlldyBwcm9jZXNzIGVhc2llci4KCltCaW5hcnkgY29tcGF0aWJpbGl0eSB2YWxpZGF0b3JdOiBodHRwczovL2dpdGh1Yi5jb20vS290bGluL2JpbmFyeS1jb21wYXRpYmlsaXR5LXZhbGlkYXRvcgoKIyMgVGVzdGluZwoKVGhlIFNESyBpbmNsdWRlcyB0d28gZXhhbXBsZSBwcm9qZWN0cywgdGhlIGtvdGxpbi1jbGkgYW5kIGphdmEtY2xpLCB0byB0ZXN0IHZhcmlvdXMgbGFyZ2VyIGZ1bmN0aW9ucyBsaWtlIHNlcnZlcgpkaXNjb3ZlcnkuIEJlc2lkZXMgdGhhdCB3ZSB1c2UgdW5pdCB0ZXN0cyB0byB0ZXN0IHNtYWxsZXIgY29tcG9uZW50cywgdGhlc2UgY2FuIGJlIGV4ZWN1dGVkIHdpdGggdGhlIGBhbGxUZXN0c2AgR3JhZGxlCnRhc2suIFdlIHJlY29tbWVuZCBhZGRpbmcgbmV3IHRlc3RzIGZvciBjaGFuZ2VzIHRvIHRoZQpjb2RlLgoKIyMjIFRlc3RpbmcgaW4gYXBwCgpJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHRlc3QgYSBuZXcgdmVyc2lvbiBvZiB0aGUgU0RLIGluIHlvdXIgb3duIGFwcC4gVXNlIHRoZSBgcHVibGlzaFRvTWF2ZW5Mb2NhbGAgR3JhZGxlIHRhc2sgdG8KcHVibGlzaCB0aGUgU0RLIHRvIHlvdXIgbG9jYWwgc3lzdGVtLCBhZnRlcndhcmRzIHlvdSBjYW4gYWRkIGBtYXZlbkxvY2FsKClgIGFzIHJlcG9zaXRvcnkgYW5kIHVzZSB0aGUgYGxhdGVzdC1TTkFQU0hPVGAKdmVyc2lvbiBmb3IgdGhlIFNESy4gVGhpcyBwcm9jZXNzIGlzIHNpbXBsaWZpZWQgaW4gb3VyIG9mZmljaWFsIGFwcHMgYnkgYWRkaW5nIGFuIG9wdGlvbiB0byB0aGUgYGdyYWRsZS5wcm9wZXJ0aWVzYApmaWxlLgo= readmeEtag: '"925febc521a5d268edef39455564ae08f6a8166c"' readmeLastModified: Mon, 05 Aug 2024 06:33:58 GMT repositoryId: 162836730 description: Kotlin SDK for Jellyfin, supporting Android and JVM targets created: '2018-12-22T19:14:06Z' updated: '2026-01-22T16:25:38Z' language: Kotlin archived: false stars: 105 watchers: 5 forks: 55 owner: jellyfin logo: https://avatars.githubusercontent.com/u/45698031?v=4 license: LGPL-3.0 repoEtag: '"63a4372670c7eb2383cfd7a1e8e9625d83810e11e8fce91fae11d67727c292f8"' repoLastModified: Thu, 22 Jan 2026 16:25:38 GMT foundInMaster: true category: Testing id: f51a5c8eb1a78ed2479cabdb83d894d5 - source: openapi3 tags repository: https://github.com/openapi-contrib/openapi3-generator v3: true repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPk9wZW5BUEkgMyBHZW5lcmF0b3I8L2gxPgo8cCBhbGlnbj0iY2VudGVyIj4KICBVc2UgeW91ciBBUEkgT3BlbkFQSSAzIGRlZmluaXRpb24gdG8gZ2VuZXJhdGUgY29kZSwgZG9jdW1lbnRhdGlvbiwgYW5kIGxpdGVyYWxseSBhbnl0aGluZyB5b3UgbmVlZC4KPC9wPgoKIyMgSW5zdGFsbAoKVG8gdXNlIGl0IGZyb20gdGhlIENMSToKCmBgYGJhc2gKbnBtIGluc3RhbGwgLWcgb3BlbmFwaTMtZ2VuZXJhdG9yCmBgYAoKIyMgUmVxdWlyZW1lbnRzCgoqIE5vZGUuanMgdjcuNisKCiMjIFVzYWdlCgojIyMgRnJvbSB0aGUgY29tbWFuZC1saW5lIGludGVyZmFjZSAoQ0xJKQoKYGBgYmFzaAogIFVzYWdlOiBvZyBbb3B0aW9uc10gPG9wZW5hcGlGaWxlT3JVUkw+IDx0ZW1wbGF0ZT4KCgogIE9wdGlvbnM6CgogICAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgICAgIG91dHB1dCB0aGUgdmVyc2lvbiBudW1iZXIKICAgIC1vLCAtLW91dHB1dCA8b3V0cHV0RGlyPiAgICAgICBkaXJlY3Rvcnkgd2hlcmUgdG8gcHV0IHRoZSBnZW5lcmF0ZWQgZmlsZXMgKGRlZmF1bHRzIHRvIGN1cnJlbnQgZGlyZWN0b3J5KQogICAgLXQsIC0tdGVtcGxhdGVzIDx0ZW1wbGF0ZURpcj4gIGRpcmVjdG9yeSB3aGVyZSB0ZW1wbGF0ZXMgYXJlIGxvY2F0ZWQgKGRlZmF1bHRzIHRvIGludGVybmFsIHRlbXBsYXRlcyBkaXJlY3RvcnkpCiAgICAtYiwgLS1iYXNlZGlyIDxiYXNlRGlyPiAgICAgICAgZGlyZWN0b3J5IHRvIHVzZSBhcyB0aGUgYmFzZSB3aGVuIHJlc29sdmluZyBsb2NhbCBmaWxlIHJlZmVyZW5jZXMgKGRlZmF1bHRzIHRvIE9wZW5BUEkgZmlsZSBkaXJlY3RvcnkpCiAgICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IHVzYWdlIGluZm9ybWF0aW9uCmBgYAoKIyMjIyBFeGFtcGxlcwoKVGhlIHNob3J0ZXN0IHBvc3NpYmxlIHN5bnRheDoKYGBgYmFzaApvZyBvcGVuYXBpLnlhbWwgbWFya2Rvd24KYGBgCgpTcGVjaWZ5IHdoZXJlIHRvIHB1dCB0aGUgZ2VuZXJhdGVkIGNvZGU6CmBgYGJhc2gKb2cgLW8gLi9teS1kb2NzIG9wZW5hcGkueWFtbCBtYXJrZG93bgpgYGAKCiMjIFRlbXBsYXRlcwoKIyMjIENyZWF0aW5nIHlvdXIgb3duIHRlbXBsYXRlcwpUZW1wbGF0ZXMgYXJlIHRoZSBzb3VyY2VzIHdoZXJlIHRoZSByZXN1bHQgd2lsbCBiZSBnZW5lcmF0ZWQgZnJvbS4gVGhlcmUgYXJlIGFscmVhZHkgc29tZSB0ZW1wbGF0ZXMKeW91IGNhbiB1c2UgdG8gZ2VuZXJhdGUgY29kZSBhbmQgZG9jdW1lbnRhdGlvbi4KClRoZSBmaWxlcyBpbiB5b3VyIHRlbXBsYXRlIGNhbiBiZSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzOgoxLiBTdGF0aWM6IFRoaXMga2luZCBvZiBmaWxlcyB3aWxsIGJlIHNpbXBseSBjb3BpZWQgdG8gdGhlIG91dHB1dCBkaXJlY3RvcnkuCjIuIFRlbXBsYXRlczogVGhpcyBraW5kIG9mIGZpbGVzIHdpbGwgYmUgY29tcGlsZWQgdXNpbmcgW0hhbmRsZWJhcnNdKGh0dHA6Ly9oYW5kbGViYXJzanMuY29tLyksIGFuZCBjb3BpZWQgdG8gdGhlIG91dHB1dCBkaXJlY3RvcnkuCjMuIFBhdGggdGVtcGxhdGVzOiBUaGlzIGtpbmQgb2YgZmlsZXMgd2lsbCBiZSBjb21waWxlZCB1c2luZyBbSGFuZGxlYmFyc10oaHR0cDovL2hhbmRsZWJhcnNqcy5jb20vKSwgYnV0IGl0IHdpbGwgZ2VuZXJhdGUgb25lIGZpbGUgcGVyIE9wZW5BUEkgcGF0aC4KCkFzc3VtaW5nIHdlIGhhdmUgdGhlIGZvbGxvd2luZyBPcGVuQVBJIFNwZWM6CmBgYHlhbWwKb3BlbmFwaTogIjMuMC4wIgppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IE9wZW5BUEkgUGV0c3RvcmUKICBsaWNlbnNlOgogICAgbmFtZTogTUlUCnNlcnZlcnM6CiAgLSB1cmw6IGh0dHA6Ly9wZXRzdG9yZS5vcGVuYXBpLmlvL3YxCnBhdGhzOgogIC9wZXQ6CiAgICBnZXQ6Li4uCiAgICBwb3N0Oi4uLgogIC9wZXQve3BldElkfToKICAgIGdldDouLi4KICAvdXNlci9sb2dpbjoKICAgIHBvc3Q6Li4uCiAgL3VzZXIve3VzZXJuYW1lfToKICAgIGdldDouLi4KICAgIHB1dDouLi4KICAgIGRlbGV0ZTouLi4KLi4uCmBgYApBbmQgc29tZSB0ZW1wbGF0ZSBmaWxlcyBsaWtlIHRoaXM6CmBgYAp8LSBpbmRleC5qcyAgICAgICAgICAgIC8vIFRoaXMgZmlsZSBjb250YWlucyBzdGF0aWMgY29kZSwgZS5nLiBzdGFydGluZyBhIHdlYnNlcnZlciBhbmQgaW5jbHVkaW5nIC4vYXBpL2luZGV4LmpzCnwrIGFwaS8KIHwtIGluZGV4LmpzLmhicyAgICAgICAvLyBUaGlzIGlzIGEgc3RhdGljIHRlbXBsYXRlLCBpdCBjb250YWlucyBwbGFjZWhvbGRlcnMgdGhhdCB3aWxsIGJlIGZpbGxlZCBpbiwgZS5nLiBpbmNsdWRlcyBmb3IgZWFjaCBmaWxlIGluIHJvdXRlcwogfCsgcm91dGVzLwogIHwtICQkcGF0aCQkLnJvdXRlLmpzLmhicyAgICAgIC8vIFRoaXMgZmlsZSB3aWxsIGJlIGdlbmVyYXRlZCBmb3IgZWFjaCBvcGVyYXRpb24gYW5kIGNvbnRhaW5zIHNrZWxldG9uIGNvZGUgZm9yIGVhY2ggbWV0aG9kIGZvciBhbiBvcGVyYXRpb24uCiAgfCsgJCRwYXRoJCQvICAgICAgICAgICAgICAgICAgLy8gVGhpcyBmb2xkZXIgd2lsbCBhbHNvIGJlIGdlbmVyYXRlZCBmb3IgZWFjaCBvcGVyYXRpb24uCiAgICB8LSByb3V0ZS5qcy5oYnMgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbm90aGVyIGV4YW1wbGUgb2YgYW4gb3BlcmF0aW9uIGZpbGUuCmBgYApUaGUgZmlyc3QgaW1wb3J0YW50IHRoaW5nIHRvIG5vdGljZSBoZXJlIGlzIHRoZSB2YXJpYWJsZSBub3RhdGlvbiBpbiBgJCRwYXRoJCQucm91dGUuanMuaGJzYC4gSXQgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgbmFtZSBvZiB0aGUgcGF0aC4KClRoaXMgZXhhbXBsZSBhbHNvIHNob3dzIGAkJHBhdGgkJGAgdXNlZCBpbiBhIGZvbGRlciBuYW1lIC0gdGhlIGdlbmVyYXRlZCBmb2xkZXIgbmFtZXMgaGVyZSB3aWxsIHJlcGxhY2UgJCRwYXRoJCQgd2l0aAp0aGUgbmFtZSBvZiB0aGUgcGF0aCAoaW4ga2ViYWItY2FzZSkuCgpJbiB0aGlzIGV4YW1wbGUgdGhlIGdlbmVyYXRlZCBkaXJlY3Rvcnkgc3RydWN0dXJlIHdpbGwgYmUgbGlrZSB0aGlzOgpgYGAKfC0gaW5kZXguanMgICAgICAgICAgICAvLyBUaGlzIGZpbGUgc3RpbGwgY29udGFpbnMgc3RhdGljIGNvZGUgbGlrZSBiZWZvcmUuCnwrIGFwaS8KIHwtIGluZGV4LmpzICAgICAgICAgICAvLyBUaGlzIGZpbGUgd2lsbCBub3cgZS5nLiBoYXZlIGluY2x1ZGVkIHRoZSB0d28gZmlsZXMgaW4gcm91dGVzLgogfCsgcm91dGVzLwogIHwtIHBldC5yb3V0ZS5qcyAgICAgIC8vIFRoaXMgZmlsZSBjb250YWlucyB0aGUgY29kZSBmb3IgbWV0aG9kcyBvbiBwZXRzLgogIHwgICAgICAgICAgICAgICAgICAgIC8vIChlLmcuIGdldFBldCwgcG9zdFBldCwgZ2V0UGV0QnlQZXRJZCkuCiAgfC0gdXNlci5yb3V0ZS5qcyAgICAgLy8gVGhpcyBmaWxlIHdpbGwgY29udGFpbiB0aGUgY29kZSBmb3IgbWV0aG9kcyBvbiB1c2Vycy4KICB8ICAgICAgICAgICAgICAgICAgICAvLyAoZS5nLiBwb3N0VXNlckxvZ2luLCBnZXRVc2VyQnlVc2VybmFtZSwgcHV0VXNlckJ5VXNlcm5hbWUsIGRlbGV0ZVVzZXJCeVVzZXJuYW1lKS4KICB8KyBwZXQvCiAgIHwgLSByb3V0ZS5qcyAgICAgICAgLy8gdGhpcyBmaWxlIGFsc28gY29udGFpbnMgdGhlIGNvZGUgZm9yIG1ldGhvZHMgb24gcGV0cy4KICB8KyB1c2VyLwogICB8IC0gcm91dGUuanMgICAgICAgIC8vIHRoaXMgZmlsZSBhbHNvIGNvbnRhaW5zIHRoZSBjb2RlIGZvciBtZXRob2RzIG9uIHVzZXJzLgpgYGAKCiMjIyBUZW1wbGF0ZSBmaWxlIGV4dGVuc2lvbnMKWW91IGNhbiAob3B0aW9uYWxseSkgbmFtZSB5b3VyIHRlbXBsYXRlIGZpbGVzIHdpdGggYC5oYnNgIGV4dGVuc2lvbnMsIHdoaWNoIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIHdyaXRpbmcgdGhlIGdlbmVyYXRlZApmaWxlLiBlLmcuIGBpbmRleC5qcy5oYnNgIHdyaXRlcyBgaW5kZXguanNgLiBgaW5kZXguanNgIHdvdWxkIGFsc28gd3JpdGUgdG8gYGluZGV4LmpzYCwgaWYgeW91IHByZWZlciB0byBvbWl0IHRoZSBoYnMKZXh0ZW5zaW9uLgoKVGhlIG9ubHkgY2FzZSB3aGVyZSB0aGUgYC5oYnNgIGV4dGVuc2lvbiBpc24ndCBvcHRpb25hbCB3b3VsZCBiZSBpZiB5b3UgYXJlIHdyaXRpbmcgaGFuZGxlYmFycyB0ZW1wbGF0ZXMgd2l0aCB0aGUKdGVtcGxhdGVzLiBJbiB0aGF0IGNhc2UgdGhlIHRoZSB0ZW1wbGF0ZSB3b3VsZCBuZWVkIHRoZSBleHRlbnNpb24gYC5oYnMuaGJzYC4gYHVzZXJ0cGwuaGJzLmhic2Agd3JpdGVzIGB1c2VydHBsLmhic2AKKGJ1dCBgdXNlcnRwbC5oYnNgIGFzIGEgc291cmNlIHdvdWxkIHdyaXRlIGB1c2VydHBsYCB3aXRoIG5vIGV4dGVuc2lvbikuCgojIyMgVGVtcGxhdGUgZmlsZSBjb250ZW50ClRoZSBnZW5lcmF0b3IgcGFzc2VzIHRoZSBPcGVuQVBJIHNwZWMgdG8gdGVtcGxhdGUgZmlsZXMsIHNvIGFsbCBpbmZvcm1hdGlvbiBzaG91bGQgYmUgYXZhaWxhYmxlIHRoZXJlLgpJbiBhZGRpdGlvbiB0byB0aGF0LCB0aGUgY29kZSBnZW5lcmF0b3IgYWRkcyBhIGJpdCBbbW9yZSBkYXRhXSgjZGF0YS1wYXNzZWQtdG8taGFuZGxlYmFycy10ZW1wbGF0ZXMpIHRoYXQgY2FuIGJlIGhlbHBmdWwuCgojIyMjIEV4YW1wbGVzOgojIyMjIyBEeW5hbWljYWxseSByZXF1aXJlIGZpbGVzIGluIEphdmFTY3JpcHQKYGBgbXVzdGFjaGUKe3sjZWFjaCBAcm9vdC5vcGVuYXBpLmVuZHBvaW50c319CmNvbnN0IHt7Ln19ID0gcmVxdWlyZSgnLi9yb3V0ZXMve3sufX0ucm91dGUuanMnKQp7ey9lYWNofX0KYGBgCndpbGwgcHJvZHVjZSAodXNpbmcgdGhlIE9BUyBTcGVjIGV4YW1wbGUgZnJvbSBhYm92ZSk6CmBgYGpzCmNvbnN0IHBldCA9IHJlcXVpcmUoJy4vcm91dGVzL3BldC5yb3V0ZS5qcycpCmNvbnN0IHVzZXIgPSByZXF1aXJlKCcuL3JvdXRlcy91c2VyLnJvdXRlLmpzJykKYGBgCgojIyMgRGF0YSBwYXNzZWQgdG8gSGFuZGxlYmFycyB0ZW1wbGF0ZXMKfCBQYXJhbSB8IFR5cGUgfCBEZXNjcmlwdGlvbiB8CnwgLS0tIHwgLS0tIHwgLS0tIHwKfG9wZW5hcGl8b2JqZWN0fFRoZSBPcGVuQVBJIHNwZWMufAp8b3BlbmFwaS5lbmRwb2ludHN8IG9iamVjdCB8IEFsbCBmaXJzdCBsZXZlbCBlbmRwb2ludHMgKGUuZyAgYHBldGAgYW5kIGB1c2VyYCkgfAoKIyMjIEN1c3RvbSBoYW5kbGViYXJzIGhlbHBlcnMKSWYgeW91ciB0ZW1wbGF0ZSBuZWVkcyBIYW5kbGViYXJzIGhlbHBlcnMsIHlvdSBjYW4gZGVmaW5lIHRoZW0gaW4gYSBkaXJlY3RvcnkgY2FsbGVkIGAuaGVscGVyc2AgaW5zaWRlIHlvdXIgdGVtcGxhdGUuCgpDaGVjayBvdXQgc29tZSBleGFtcGxlcyBpbiB0aGUgW21hcmtkb3duXSguL3RlbXBsYXRlcy9tYXJrZG93bi8uaGVscGVycykgdGVtcGxhdGUuCgojIyMgVXNpbmcgaGFuZGxlYmFycyBwYXJ0aWFscwpJZiB5b3Ugd2FudCB0byB1c2UgcGFydGlhbHMgaW4geW91ciB0ZW1wbGF0ZSwgZGVmaW5lIHRoZW0gaW4gYSBkaXJlY3RvcnkgY2FsbGVkIGAucGFydGlhbHNgIGluc2lkZSB5b3VyIHRlbXBsYXRlLgoKQ2hlY2sgb3V0IHNvbWUgZXhhbXBsZXMgaW4gdGhlIFttYXJrZG93bl0oLi90ZW1wbGF0ZXMvbWFya2Rvd24vLnBhcnRpYWxzKSB0ZW1wbGF0ZS4KCj4gVGhlIG5hbWUgb2YgdGhlIHBhcnRpYWwgd2lsbCBiZSBvYnRhaW5lZCBmcm9tIHRoZSBmaWxlIG5hbWUsIGNvbnZlcnRlZCB0byBjYW1lbCBjYXNlLiBTbywgZm9yIGluc3RhbmNlLCBpZiB0aGUgZmlsZSBuYW1lIGlzIGBteS1wYXJ0aWFsLmpzYCwgeW91IGNhbiB1c2UgdGhlIHBhcnRpYWwgd2l0aCBge3s+IG15UGFydGlhbH19YC4KCiMjIEF1dGhvcnMKCiogRnJhbiBNw6luZGV6IChbQGZtdmlsYXNdKGh0dHA6Ly90d2l0dGVyLmNvbS9mbXZpbGFzKSkKKiBSaWNoYXJkIEtsb3NlIChbQHJpY2hhcmRrbG9zZV0oaHR0cDovL2dpdGh1Yi5jb20vcmljaGFyZGtsb3NlKSkK readmeEtag: '"212d73f5503dc5958a886b77ddcca13207b5f3fd"' readmeLastModified: Thu, 11 Jun 2020 10:46:34 GMT repositoryId: 142300673 description: >- Use your API OpenAPI 3 definition to generate code, documentation, and literally anything you need. created: '2018-07-25T13:02:15Z' updated: '2026-01-19T09:17:34Z' language: JavaScript archived: false stars: 89 watchers: 2 forks: 26 owner: openapi-contrib logo: https://avatars.githubusercontent.com/u/49447320?v=4 license: Apache-2.0 repoEtag: '"9a3c6c80ea1a3c248e04475892112ac9929db2d5fb4677dcb1558e041e0afceb"' repoLastModified: Mon, 19 Jan 2026 09:17:34 GMT foundInMaster: true category: - Documentation - Parsers id: e0d1c54d6f4f90b4425f772e2c721064 - source: openapi3 tags repository: https://github.com/christianhelle/httpgenerator v3: true id: 57615d15d5539b58b50687ba6bff2905 repositoryMetadata: base64Readme: >- PCEtLXRvYzpzdGFydC0tPgoKLSBbSFRUUCBGaWxlIEdlbmVyYXRvcl0oI2h0dHAtZmlsZS1nZW5lcmF0b3IpCiAgLSBbSW5zdGFsbGF0aW9uXSgjaW5zdGFsbGF0aW9uKQogIC0gW1VzYWdlXSgjdXNhZ2UpIC0gW0Vycm9yIExvZ2dpbmcsIFRlbGVtZXRyeSwgYW5kIFByaXZhY3ldKCNlcnJvci1sb2dnaW5nLXRlbGVtZXRyeS1hbmQtcHJpdmFjeSkgLSBbVmlzdWFsIFN0dWRpbyAyMDIyIEV4dGVuc2lvbl0oI3Zpc3VhbC1zdHVkaW8tMjAyMi1leHRlbnNpb24pCiAgPCEtLXRvYzplbmQtLT4KCiMKClshW0J1aWxkXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvaHR0cGdlbmVyYXRvci9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2h0dHBnZW5lcmF0b3IvYWN0aW9ucy93b3JrZmxvd3MvYnVpbGQueW1sKQpbIVtTbW9rZSBUZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2h0dHBnZW5lcmF0b3IvYWN0aW9ucy93b3JrZmxvd3Mvc21va2UtdGVzdHMueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9odHRwZ2VuZXJhdG9yL2FjdGlvbnMvd29ya2Zsb3dzL3Ntb2tlLXRlc3RzLnltbCkKWyFbTnVHZXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvdi9odHRwZ2VuZXJhdG9yP2NvbG9yPWJsdWUpXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvaHR0cGdlbmVyYXRvcikKWyFbUXVhbGl0eSBHYXRlIFN0YXR1c10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfaHR0cGdlbmVyYXRvciZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9Y2hyaXN0aWFuaGVsbGVfaHR0cGdlbmVyYXRvcikKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2NocmlzdGlhbmhlbGxlL2h0dHBnZW5lcmF0b3IvZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPVllU0ZubjBiSDYpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvY2hyaXN0aWFuaGVsbGUvaHR0cGdlbmVyYXRvcikKCiMgSFRUUCBGaWxlIEdlbmVyYXRvcgoKR2VuZXJhdGUgLmh0dHAgZmlsZXMgZnJvbSBPcGVuQVBJIHNwZWNpZmljYXRpb25zCgpgLmh0dHBgIGZpbGVzIHdlcmUgbWFkZSBwb3B1bGFyIGJ5IHRoZSBWaXN1YWwgU3R1ZGlvIENvZGUgZXh0ZW5zaW9uIFtSRVNUIENsaWVudF0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPWh1bWFvLnJlc3QtY2xpZW50KSwgd2hpY2ggdGhlbiB3YXMgYWRvcHRlZCBieSBKZXRCcmFpbnMgSURFJ3MsIGFuZCBsYXRlciBvbiBbVmlzdWFsIFN0dWRpbyAyMDIyXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9TWFkc0tyaXN0ZW5zZW4uUmVzdENsaWVudCkKCiMjIEluc3RhbGxhdGlvbgoKVGhpcyBpcyB0b29sIGlzIGRpc3RydWJ1dGVkIGFzIGEgLk5FVCBUb29sIG9uIE51R2V0Lm9yZwoKVG8gaW5zdGFsbCwgc2ltcGx5IHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQKCmBgYGJhc2gKZG90bmV0IHRvb2wgaW5zdGFsbCAtLWdsb2JhbCBodHRwZ2VuZXJhdG9yCmBgYAoKIyMgVXNhZ2UKCmBgYHRleHQKVVNBR0U6CiAgICBodHRwZ2VuZXJhdG9yIFtVUkwgb3IgaW5wdXQgZmlsZV0gW09QVElPTlNdCgpFWEFNUExFUzoKICAgIGh0dHBnZW5lcmF0b3IgLi9vcGVuYXBpLmpzb24KICAgIGh0dHBnZW5lcmF0b3IgLi9vcGVuYXBpLmpzb24gLS1vdXRwdXQgLi8KICAgIGh0dHBnZW5lcmF0b3IgLi9vcGVuYXBpLmpzb24gLS1vdXRwdXQtdHlwZSBvbmVmaWxlCiAgICBodHRwZ2VuZXJhdG9yIGh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby92Mi9zd2FnZ2VyLmpzb24KICAgIGh0dHBnZW5lcmF0b3IgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uIC0tYmFzZS11cmwgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pbwogICAgaHR0cGdlbmVyYXRvciAuL29wZW5hcGkuanNvbiAtLWF1dGhvcml6YXRpb24taGVhZGVyIEJlYXJlciBleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjljCiAgICBodHRwZ2VuZXJhdG9yIC4vb3BlbmFwaS5qc29uIC0tYXp1cmUtc2NvcGUgW1NvbWUgQXBwbGljYXRpb24gSUQgVVJJXS8uZGVmYXVsdAogICAgaHR0cGdlbmVyYXRvciAuL29wZW5hcGkuanNvbiAtLWdlbmVyYXRlLWludGVsbGlqLXRlc3RzCiAgICBodHRwZ2VuZXJhdG9yIC4vb3BlbmFwaS5qc29uIC0tY3VzdG9tLWhlYWRlciBYLUN1c3RvbS1IZWFkZXI6IFZhbHVlIC0tY3VzdG9tLWhlYWRlciBYLUFub3RoZXItSGVhZGVyOiBBbm90aGVyVmFsdWUKCkFSR1VNRU5UUzoKICAgIFtVUkwgb3IgaW5wdXQgZmlsZV0gICAgVVJMIG9yIGZpbGUgcGF0aCB0byBPcGVuQVBJIFNwZWNpZmljYXRpb24gZmlsZQoKT1BUSU9OUzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFQKICAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW50cyBoZWxwIGluZm9ybWF0aW9uCiAgICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmludHMgdmVyc2lvbiBpbmZvcm1hdGlvbgogICAgLW8sIC0tb3V0cHV0IDxPVVRQVVQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi8gICAgICAgICAgICAgICAgICAgT3V0cHV0IGRpcmVjdG9yeQogICAgICAgIC0tbm8tbG9nZ2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9uJ3QgbG9nIGVycm9ycyBvciBjb2xsZWN0IHRlbGVtZXRyeQogICAgICAgIC0tc2tpcC12YWxpZGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tpcCB2YWxpZGF0aW9uIG9mIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBmaWxlCiAgICAgICAgLS1hdXRob3JpemF0aW9uLWhlYWRlciA8SEVBREVSPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRob3JpemF0aW9uIGhlYWRlciB0byB1c2UgZm9yIGFsbCByZXF1ZXN0cwogICAgICAgIC0tbG9hZC1hdXRob3JpemF0aW9uLWhlYWRlci1mcm9tLWVudmlyb25tZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9hZCB0aGUgYXV0aG9yaXphdGlvbiBoZWFkZXIgZnJvbSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBkZWZpbmUgaXQgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaHR0cCBmaWxlLiBZb3UgY2FuIHVzZSAtLWF1dGhvcml6YXRpb24taGVhZGVyLXZhcmlhYmxlLW5hbWUgdG8gc3BlY2lmeSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUKICAgICAgICAtLWF1dGhvcml6YXRpb24taGVhZGVyLXZhcmlhYmxlLW5hbWUgPFZBUklBQkxFLU5BTUU+ICAgIGF1dGhvcml6YXRpb24gICAgICAgIE5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGxvYWQgdGhlIGF1dGhvcml6YXRpb24gaGVhZGVyIGZyb20KICAgICAgICAtLWNvbnRlbnQtdHlwZSA8Q09OVEVOVC1UWVBFPiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb24gICAgIERlZmF1bHQgQ29udGVudC1UeXBlIGhlYWRlciB0byB1c2UgZm9yIGFsbCByZXF1ZXN0cwogICAgICAgIC0tYmFzZS11cmwgPEJBU0UtVVJMPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBCYXNlIFVSTCB0byB1c2UgZm9yIGFsbCByZXF1ZXN0cy4gVXNlIHRoaXMgaWYgdGhlIE9wZW5BUEkgc3BlYyBkb2Vzbid0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsaWNpdGx5IHNwZWNpZnkgYSBzZXJ2ZXIgVVJMCiAgICAgICAgLS1vdXRwdXQtdHlwZSA8T1VUUFVULVRZUEU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmVSZXF1ZXN0UGVyRmlsZSAgICBPbmVSZXF1ZXN0UGVyRmlsZSBnZW5lcmF0ZXMgb25lIC5odHRwIGZpbGUgcGVyIHJlcXVlc3QuIE9uZUZpbGUgZ2VuZXJhdGVzIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZSAuaHR0cCBmaWxlIGZvciBhbGwgcmVxdWVzdHMuIE9uZUZpbGVQZXJUYWcgZ2VuZXJhdGVzIG9uZSAuaHR0cCBmaWxlIHBlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QgdGFnIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHJlcXVlc3QKICAgICAgICAtLWF6dXJlLXNjb3BlIDxTQ09QRT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF6dXJlIEVudHJhIElEIFNjb3BlIHRvIHVzZSBmb3IgcmV0cmlldmluZyBBY2Nlc3MgVG9rZW4gZm9yIEF1dGhvcml6YXRpb24gaGVhZGVyCiAgICAgICAgLS1henVyZS10ZW5hbnQtaWQgPFRFTkFOVC1JRD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBenVyZSBFbnRyYSBJRCBUZW5hbnQgSUQgdG8gdXNlIGZvciByZXRyaWV2aW5nIEFjY2VzcyBUb2tlbiBmb3IgQXV0aG9yaXphdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyCiAgICAgICAgLS10aW1lb3V0IDxTRUNPTkRTPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjAgICAgICAgICAgICAgICAgICBUaW1lb3V0IChpbiBzZWNvbmRzKSBmb3Igd3JpdGluZyBmaWxlcyB0byBkaXNrCiAgICAgICAgLS1nZW5lcmF0ZS1pbnRlbGxpai10ZXN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBJbnRlbGxpSiB0ZXN0cyB0aGF0IGFzc2VydCB3aGV0aGVyIHRoZSByZXNwb25zZSBzdGF0dXMgY29kZSBpcyAyMDAKICAgICAgICAtLWN1c3RvbS1oZWFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZCBjdXN0b20gSFRUUCBoZWFkZXJzIHRvIHRoZSBnZW5lcmF0ZWQgcmVxdWVzdAogICAgICAgIC0tc2tpcC1oZWFkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9uJ3QgZ2VuZXJhdGUgaGVhZGVyIHBhcmFtZXRlcnMgaW4gdGhlIGZpbGVzCmBgYAoKUnVubmluZyB0aGUgZm9sbG93aW5nOgoKYGBgc2gKaHR0cGdlbmVyYXRvciBodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uCmBgYAoKT3V0cHV0cyB0aGUgZm9sbG93aW5nOgoKIVtDTEkgT3V0cHV0XShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvaHR0cGdlbmVyYXRvci9yYXcvbWFpbi9pbWFnZXMvaHR0cGdlbmVyYXRvci1vdXRwdXQucG5nKQoKV2hpY2ggd2lsbCBwcm9kdWNlIHRoZSBmb2xsb3dpbmcgZmlsZXM6CgpgYGBzaAotcnctci0tci0tIDEgY2hyaXN0aWFuIDE5NzEyMSAgNTkzIERlYyAxMCAxMDo0NCBEZWxldGVPcmRlci5odHRwCi1ydy1yLS1yLS0gMSBjaHJpc3RpYW4gMTk3MTIxICAyMzEgRGVjIDEwIDEwOjQ0IERlbGV0ZVBldC5odHRwCi1ydy1yLS1yLS0gMSBjaHJpc3RpYW4gMTk3MTIxICAzNTggRGVjIDEwIDEwOjQ0IERlbGV0ZVVzZXIuaHR0cAotcnctci0tci0tIDEgY2hyaXN0aWFuIDE5NzEyMSAgNDMyIERlYyAxMCAxMDo0NCBHZXRGaW5kUGV0c0J5U3RhdHVzLmh0dHAKLXJ3LXItLXItLSAxIGNocmlzdGlhbiAxOTcxMjEgIDUwNCBEZWMgMTAgMTA6NDQgR2V0RmluZFBldHNCeVRhZ3MuaHR0cAotcnctci0tci0tIDEgY2hyaXN0aWFuIDE5NzEyMSAgMzcxIERlYyAxMCAxMDo0NCBHZXRJbnZlbnRvcnkuaHR0cAotcnctci0tci0tIDEgY2hyaXN0aWFuIDE5NzEyMSAgMjQ3IERlYyAxMCAxMDo0NCBHZXRMb2dpblVzZXIuaHR0cAotcnctci0tci0tIDEgY2hyaXN0aWFuIDE5NzEyMSAgMjkxIERlYyAxMCAxMDo0NCBHZXRMb2dvdXRVc2VyLmh0dHAKLXJ3LXItLXItLSAxIGNocmlzdGlhbiAxOTcxMjEgIDU0MCBEZWMgMTAgMTA6NDQgR2V0T3JkZXJCeUlkLmh0dHAKLXJ3LXItLXItLSAxIGNocmlzdGlhbiAxOTcxMjEgIDI3NSBEZWMgMTAgMTA6NDQgR2V0UGV0QnlJZC5odHRwCi1ydy1yLS1yLS0gMSBjaHJpc3RpYW4gMTk3MTIxICAyNDUgRGVjIDEwIDEwOjQ0IEdldFVzZXJCeU5hbWUuaHR0cAotcnctci0tci0tIDEgY2hyaXN0aWFuIDE5NzEyMSAgNTEzIERlYyAxMCAxMDo0NCBQb3N0QWRkUGV0Lmh0dHAKLXJ3LXItLXItLSAxIGNocmlzdGlhbiAxOTcxMjEgIDUyMSBEZWMgMTAgMTA6NDQgUG9zdENyZWF0ZVVzZXIuaHR0cAotcnctci0tci0tIDEgY2hyaXN0aWFuIDE5NzEyMSAgNjEwIERlYyAxMCAxMDo0NCBQb3N0Q3JlYXRlVXNlcnNXaXRoTGlzdElucHV0Lmh0dHAKLXJ3LXItLXItLSAxIGNocmlzdGlhbiAxOTcxMjEgIDQ2NCBEZWMgMTAgMTA6NDQgUG9zdFBsYWNlT3JkZXIuaHR0cAotcnctci0tci0tIDEgY2hyaXN0aWFuIDE5NzEyMSAgMjk5IERlYyAxMCAxMDo0NCBQb3N0VXBkYXRlUGV0V2l0aEZvcm0uaHR0cAotcnctci0tci0tIDEgY2hyaXN0aWFuIDE5NzEyMSAgMjc0IERlYyAxMCAxMDo0NCBQb3N0VXBsb2FkRmlsZS5odHRwCi1ydy1yLS1yLS0gMSBjaHJpc3RpYW4gMTk3MTIxICA1MTMgRGVjIDEwIDEwOjQ0IFB1dFVwZGF0ZVBldC5odHRwCi1ydy1yLS1yLS0gMSBjaHJpc3RpYW4gMTk3MTIxICA1NDEgRGVjIDEwIDEwOjQ0IFB1dFVwZGF0ZVVzZXIuaHR0cApgYGAKCkluIHRoaXMgZXhhbXBsZSwgdGhlIGNvbnRlbnRzIG9mIGBQb3N0QWRkUGV0Lmh0dHBgIGxvb2tzIGxpa2UgdGhpczoKCmBgYHNoCkBjb250ZW50VHlwZSA9IGFwcGxpY2F0aW9uL2pzb24KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgUmVxdWVzdDogUE9TVCAvcGV0CiMjIyBTdW1tYXJ5OiBBZGQgYSBuZXcgcGV0IHRvIHRoZSBzdG9yZQojIyMgRGVzY3JpcHRpb246IEFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKUE9TVCBodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92My9wZXQKQ29udGVudC1UeXBlOiB7e2NvbnRlbnRUeXBlfX0KCnsKICAiaWQiOiAwLAogICJuYW1lIjogIm5hbWUiLAogICJjYXRlZ29yeSI6IHsKICAgICJpZCI6IDAsCiAgICAibmFtZSI6ICJuYW1lIgogIH0sCiAgInBob3RvVXJscyI6IFsKICAgICIiCiAgXSwKICAidGFncyI6IFsKICAgIHsKICAgICAgImlkIjogMCwKICAgICAgIm5hbWUiOiAibmFtZSIKICAgIH0KICBdLAogICJzdGF0dXMiOiAiYXZhaWxhYmxlIgp9CmBgYAoKYW5kIHRoZSBjb250ZW50cyBvZiBgR2V0UGV0QnlJZC5odHRwYCBsb29rcyBsaWtlIHRoaXM6CgpgYGBzaApAY29udGVudFR5cGUgPSBhcHBsaWNhdGlvbi9qc29uCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIFJlcXVlc3Q6IEdFVCAvcGV0L3twZXRJZH0KIyMjIFN1bW1hcnk6IEZpbmQgcGV0IGJ5IElECiMjIyBEZXNjcmlwdGlvbjogUmV0dXJucyBhIHNpbmdsZSBwZXQKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIyMgUGF0aCBQYXJhbWV0ZXI6IElEIG9mIHBldCB0byByZXR1cm4KQHBldElkID0gMAoKR0VUIGh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzL3BldC97e3BldElkfX0KQ29udGVudC1UeXBlOiB7e2NvbnRlbnRUeXBlfX0KYGBgCgp3aXRoIHRoZSBgLS1nZW5lcmF0ZS1pbnRlbGxpai10ZXN0c2Agb3B0aW9uLCB0aGUgb3V0cHV0IGxvb2tzIGxpa2UgdGhpczoKCmBgYHNoCkBjb250ZW50VHlwZSA9IGFwcGxpY2F0aW9uL2pzb24KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgUmVxdWVzdDogR0VUIC9wZXQve3BldElkfQojIyMgU3VtbWFyeTogRmluZCBwZXQgYnkgSUQKIyMjIERlc2NyaXB0aW9uOiBSZXR1cm5zIGEgc2luZ2xlIHBldAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMjIyBQYXRoIFBhcmFtZXRlcjogSUQgb2YgcGV0IHRvIHJldHVybgpAcGV0SWQgPSAxCgpHRVQgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvcGV0L3t7cGV0SWR9fQpDb250ZW50LVR5cGU6IHt7Y29udGVudFR5cGV9fQoKPiB7JQogICAgY2xpZW50LnRlc3QoIlJlcXVlc3QgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5IiwgZnVuY3Rpb24oKSB7CiAgICAgICAgY2xpZW50LmFzc2VydCgKICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDAsCiAgICAgICAgICAgICJSZXNwb25zZSBzdGF0dXMgaXMgbm90IDIwMCIpOwogICAgfSk7CiV9CmBgYAoKSGVyZSdzIGFuIGFkdmFuY2VkIGV4YW1wbGUgb2YgZ2VuZXJhdGluZyBgLmh0dHBgIGZpbGVzIGZvciBhIFJFU1QgQVBJIGhvc3RlZCBvbiBNaWNyb3NvZnQgQXp1cmUgdGhhdCB1c2VzIHRoZSBNaWNyb3NvZnQgRW50cmEgSUQgc2VydmljZSBhcyBhbiBTVFMuIEZvciB0aGlzIGV4YW1wbGUsIEkgdXNlIFBvd2VyU2hlbGwgYW5kIEF6dXJlIENMSSB0byByZXRyaWV2ZSBhbiBhY2Nlc3MgdG9rZW4gZm9yIHRoZSB1c2VyIEknbSBjdXJyZW50bHkgbG9nZ2VkIGluIHdpdGguCgpgYGBwb3dlcnNoZWxsCmF6IGFjY291bnQgZ2V0LWFjY2Vzcy10b2tlbiAtLXNjb3BlIFtTb21lIEFwcGxpY2F0aW9uIElEIFVSSV0vLmRlZmF1bHQgYAp8IENvbnZlcnRGcm9tLUpzb24gYAp8ICV7CiAgICBodHRwZ2VuZXJhdG9yIGAKICAgICAgICBodHRwczovL2FwaS5leGFtcGxlLmNvbS9zd2FnZ2VyL3YxL3N3YWdnZXIuanNvbiBgCiAgICAgICAgLS1hdXRob3JpemF0aW9uLWhlYWRlciAoIkJlYXJlciAiICsgJF8uYWNjZXNzVG9rZW4pIGAKICAgICAgICAtLWJhc2UtdXJsIGh0dHBzOi8vYXBpLmV4YW1wbGUuY29tIGAKICAgICAgICAtLW91dHB1dCAuL0h0dHBGaWxlcwp9CmBgYAoKWW91IGNhbiBhbHNvIHVzZSB0aGUgYC0tYXp1cmUtc2NvcGVgIGFuZCBgYXp1cmUtdGVuYW50LWlkYCBhcmd1bWVudHMgaW50ZXJuYWxseSB1c2UgYERlZmF1bHRBenVyZUNyZWRlbnRpYWxzYCBmcm9tIHRoZSBgTWljcm9zb2Z0LkV4dGVuc2lvbnMuQXp1cmVgIE51R2V0IHBhY2thZ2UgdG8gcmV0cmlldmUgYW4gYWNjZXNzIHRva2VuIGZvciB0aGUgc3BlY2lmaWVkIGBzY29wZWAuCgpgYGBwb3dlcnNoZWxsCmh0dHBnZW5lcmF0b3IgYAogIGh0dHBzOi8vYXBpLmV4YW1wbGUuY29tL3N3YWdnZXIvdjEvc3dhZ2dlci5qc29uIGAKICAtLWF6dXJlLXNjb3BlIFtTb21lIEFwcGxpY2F0aW9uIElEIFVSSV0vLmRlZmF1bHQgYAogIC0tYmFzZS11cmwgaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20gYAogIC0tb3V0cHV0IC4vSHR0cEZpbGVzCmBgYAoKIyMjIEVycm9yIExvZ2dpbmcsIFRlbGVtZXRyeSwgYW5kIFByaXZhY3kKClRoaXMgdG9vbCBjb2xsZWN0cyBlcnJvcnMgYW5kIHRyYWNrcyBmZWF0dXJlcyB1c2FnZXMgdG8gc2VydmljZSBjYWxsZWQgW0V4Y2VwdGlvbmxlc3NdKGh0dHBzOi8vZXhjZXB0aW9ubGVzcy5jb20vKQoKQnkgZGVmYXVsdCwgZXJyb3IgbG9nZ2luZyBhbmQgdGVsZW1ldHJ5IGNvbGxlY3Rpb24gaXMgZW5hYmxlZCBidXQgaXQgaXMgcG9zc2libGUgdG8gKipvcHQtb3V0KiogYnkgdXNpbmcgdGhlIGAtLW5vLWxvZ2dpbmdgIENMSSBhcmd1bWVudC4KClVzZXIgdHJhY2tpbmcgaXMgZG9uZSBhbm9ueW1vdXNseSB1c2luZyB0aGUgKipTdXBwb3J0IGtleSoqIHNob3duIHdoZW4gcnVubmluZyB0aGUgdG9vbCBhbmQgYSBnZW5lcmF0ZWQgYW5vbnltb3VzIGlkZW50aXR5IGJhc2VkIG9uIGEgc2VjdXJlIGhhc2ggYWxnb3JpdGhtIG9mIHVzZXJuYW1lQGhvc3QuCgpgYGBzaApIVFRQIEZpbGUgR2VuZXJhdG9yIHYwLjEuNQpTdXBwb3J0IGtleTogbWJtYnF2ZApgYGAKClRoZSBzdXBwb3J0IGtleSBpcyBqdXN0IHRoZSBmaXJzdCA3IGNoYXJhY3RlcnMgb2YgdGhlIGdlbmVyYXRlZCBhbm9ueW1vdXMgaWRlbnRpdHkKCiFbRXhjZXB0aW9ubGVzc10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2h0dHBnZW5lcmF0b3IvcmF3L21haW4vaW1hZ2VzL2V4Y2VwdGlvbmxlc3Mtb3ZlcnZpZXcucG5nKQoKIVtFeGNlcHRpb25sZXNzXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvaHR0cGdlbmVyYXRvci9yYXcvbWFpbi9pbWFnZXMvZXhjZXB0aW9ubGVzcy1leGNlcHRpb24ucG5nKQoKVGhlIGAtLWF1dGhvcml6YXRpb24taGVhZGVyYCB2YWx1ZSBpcyAqKmBbUkVEQUNURURdYCoqIGFuZCB0aGUgc2FtZSBnb2VzIGZvciBhbGwgcGVyc29uYWwgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uIGxpa2UgdGhlIElQIGFkZHJlc3MsIG1hY2hpbmUgbmFtZSwgYW5kIGZpbGUgc3lzdGVtIGZvbGRlcnMKCiFbRXhjZXB0aW9ubGVzc10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2h0dHBnZW5lcmF0b3IvcmF3L21haW4vaW1hZ2VzL2V4Y2VwdGlvbmxlc3MtZW52aXJvbm1lbnQucG5nKQoKSXQncyBpbXBvcnRhbnQgdG8ga25vdyB0aGF0IG5vICoqc3VwcG9ydCBrZXkqKiB3aWxsIGJlIGdlbmVyYXRlZCBpZiB5b3Ugb3B0LW91dCBmcm9tIHRlbGVtZXRyeSBjb2xsZWN0aW9uIGFuZCB0aGF0IHRoZSBFeGNlcHRpb25sZXNzIFNESyB3aWxsIGJlIGNvbXBsZXRlbHkgZGlzYWJsZWQuCgojIyMgVmlzdWFsIFN0dWRpbyAyMDIyIEV4dGVuc2lvbgoKVGhpcyB0b29sIGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgW1Zpc3VhbCBTdHVkaW8gMjAyMiBleHRlbnNpb25dKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkh0dHBHZW5lcmF0b3IpCgpGcm9tIHRoZSAqKlRvb2xzKiogbWVudSBzZWxlY3QgKipHZW5lcmF0ZSAuaHR0cCBmaWxlcyoqCgohW1Rvb2xzIG1lbnVdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9odHRwZ2VuZXJhdG9yL2Jsb2IvbWFpbi9pbWFnZXMvdnNpeF90b29scy5wbmc/cmF3PXRydWUpCgpUaGlzIG9wZW5zIHRoZSBtYWluIGRpYWxvZyB3aGljaCBoYXMgc2ltaWxhciBpbnB1dCBmaWVsZHMgYXMgdGhlIENMSSB0b29sCgohW01haW4gZGlhbG9nXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvaHR0cGdlbmVyYXRvci9ibG9iL21haW4vaW1hZ2VzL3ZzaXhfaHR0cGdlbmVyYXRvcl9kaWFsb2cucG5nP3Jhdz10cnVlKQoKWW91IGNhbiBhY3F1aXJlIGFuIEF6dXJlIEVudHJhIElEIGFjY2VzcyB0b2tlbiBieSBjbGlja2luZyBvbiB0aGUgYC4uLmAgYnV0dG9uIGJlc2lkZSB0aGUgKipBdXRob3JpemF0aW9uIEhlYWRlcnMqKiBpbnB1dCBmaWVsZAoKIVtBY3F1aXJlIEF6dXJlIEVudHJhIElEIGFjY2VzcyB0b2tlbl0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2h0dHBnZW5lcmF0b3IvYmxvYi9tYWluL2ltYWdlcy92c2l4X2F6dXJlX2VudHJhX2lkLnBuZz9yYXc9dHJ1ZSkKCkJ5IGRlZmF1bHQsIHRoZSAqKk91dHB1dCBmb2xkZXIqKiBpcyBwcmUtZmlsbGVkIHdpdGggdGhlIHBhdGggb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgQyMgUHJvamVjdCBpbiB0aGUgU29sdXRpb24gRXhwbG9yZXIsIHN1ZmZpeGVkIHdpdGggKipcSHR0cEZpbGVzKioKCiFbU29sdXRpb24gZXhwbG9yZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9odHRwZ2VuZXJhdG9yL2Jsb2IvbWFpbi9pbWFnZXMvdnNpeF9zb2x1dGlvbl9leHBsb3Jlci5wbmc/cmF3PXRydWUpCgpPbmNlIHRoZSAuaHR0cCBmaWxlcyBhcmUgZ2VuZXJhdGVkIHlvdSBjYW4gZWFzaWx5IG9wZW4gYW5kIGluc3BlY3QgdGhlbQoKIVsuaHR0cCBmaWxlXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvaHR0cGdlbmVyYXRvci9ibG9iL21haW4vaW1hZ2VzL3ZzaXhfaHR0cF9maWxlLnBuZz9yYXc9dHJ1ZSkKCiMKCkZvciB0aXBzIGFuZCB0cmlja3Mgb24gc29mdHdhcmUgZGV2ZWxvcG1lbnQsIGNoZWNrIG91dCBbbXkgYmxvZ10oaHR0cHM6Ly9jaHJpc3RpYW5oZWxsZS5jb20pCgpJZiB5b3UgZmluZCB0aGlzIHVzZWZ1bCBhbmQgZmVlbCBhIGJpdCBnZW5lcm91cyB0aGVuIGZlZWwgZnJlZSB0byBbYnV5IG1lIGEgY29mZmVlIOKYlV0oaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9jaHJpc3RpYW5oZWxsZSkK readmeEtag: '"a01bc34fac36e05f5e424f329a3c885998e2c26b"' readmeLastModified: Fri, 19 Sep 2025 22:16:36 GMT repositoryId: 714590129 description: Generate .http files from OpenAPI (Swagger) specifications created: '2023-11-05T10:19:39Z' updated: '2026-02-01T04:10:58Z' language: C# archived: false stars: 121 watchers: 1 forks: 11 owner: christianhelle logo: https://avatars.githubusercontent.com/u/710400?v=4 license: MIT repoEtag: '"faa0bc0d70e9f2e4fcb60e153ef117d9e4130d4475c94b35d25c67c5801fc788"' repoLastModified: Sun, 01 Feb 2026 04:10:58 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/hvuhsg/goapi v3: true id: 40d913554d015468454ac2a32e279fc9 repositoryMetadata: base64Readme: >- IyBHb0FQSQoKPHAgYWxpZ249ImNlbnRlciI+CiAgICA8ZW0+QSBGYXN0IGFuZCBFYXN5LXRvLXVzZSBXZWIgRnJhbWV3b3JrIGZvciBCdWlsZGluZyBBUElzIGluIEdvPC9lbT4KPC9wPgo8cCBhbGlnbj0iY2VudGVyIj4KCTxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9odnVoc2cvR29BUEkvYWN0aW9ucy93b3JrZmxvd3MvdGVzdHMueW1sIiB0YXJnZXQ9Il9ibGFuayI+CgkJPGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9odnVoc2cvR29BUEkvYWN0aW9ucy93b3JrZmxvd3MvdGVzdHMueW1sL2JhZGdlLnN2Zz9icmFuY2g9bWFpbiIgYWx0PSJ0ZXN0cyBzdGF0dXMiPgoJPC9hPgoJPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhbmR3aXRodXMuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPgoJCTxpbWcgc3JjPSJodHRwczovL2JhZGdlLnllaG95YWRhLmNvbSIgYWx0PSJCcmluZyBUaGVtIEhvbWUiPgoJPC9hPgo8L3A+CgotLS0KCioqRG9jdW1lbnRhdGlvbioqOiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaHZ1aHNnL0dvQVBJL1JFQURNRS5tZCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vZ2l0aHViLmNvbS9odnVoc2cvR29BUEkvUkVBRE1FLm1kPC9hPgoKKipTb3VyY2UgQ29kZSoqOiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaHZ1aHNnL0dvQVBJIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9naXRodWIuY29tL2h2dWhzZy9Hb0FQSTwvYT4KCi0tLQoKCkdvQVBJIGlzIGEgd2ViIGZyYW1ld29yayB3cml0dGVuIGluIEdvIHRoYXQgaXMgaW5zcGlyZWQgYnkgRmFzdEFQSS4gSXQgYWxsb3dzIHlvdSB0byBxdWlja2x5IGJ1aWxkIGFuZCBkZXBsb3kgUkVTVGZ1bCBBUElzIHdpdGggbWluaW1hbCBlZmZvcnQuIFRoZSBmcmFtZXdvcmsgY29tZXMgd2l0aCBidWlsdC1pbiB2YWxpZGF0b3JzIHRoYXQgY2FuIGJlIHVzZWQgdG8gdmFsaWRhdGUgYW5kIGF1dG8tYnVpbGQgdGhlIEFQSSBzY2hlbWEgd2l0aCBPcGVuQVBJIGZvcm1hdCAodmVyc2lvbiAzKS4gVGhpcyBtZWFucyB5b3UgY2FuIGZvY3VzIG9uIHRoZSBtYWluIGxvZ2ljIG9mIHlvdXIgYXBwbGljYXRpb24gd2hpbGUgdGhlIGZyYW1ld29yayBoYW5kbGVzIHRoZSB2YWxpZGF0aW9uIGFuZCBBUEkgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLiAgCgoKVGhlIGtleSBmZWF0dXJlcyBhcmU6Ci0gKiphdXRvbWF0aWMgZG9jcyoqIFstLS0tPl0oI2FwaS1kb2N1bWVudGF0aW9uKQotICoqZXh0ZW5zaWJsZSB2YWxpZGF0b3JzIHN5c3RlbSoqIFstLS0tPl0oI3ZhbGlkYXRpb24pCi0gKipoaWdoIGxldmVsIHN5bnRheCoqIFstLS0tPl0oI3VzYWdlKQotICoqbWlkZGxld2FyZXMqKiBzdXBwb3J0IFstLS0tPl0oI21pZGRsZXdhcmVzKQotICoqbmF0aXZlIGhhbmRsZXJzKiogc3VwcG9ydCBbLS0tLT5dKCNuYXRpdmUtaGFuZGxlcnMpCi0gKipTU0wvVExTKiogc3VwcG9ydCBbLS0tLT5dKCNodHRwcy1zdXBwb3J0KQotICoqbmdyb2sgdHVubmVsKiogYnVpbHQgaW4gWy0tLS0+XSgjbmdyb2stdHVubmVsKQoKIyMgUXVpY2sgU3RhcnQKIyMjIEluc3RhbGwKVG8gaW5zdGFsbCBHb0FQSSwgeW91IG5lZWQgdG8gaGF2ZSBHbyB2ZXJzaW9uIDEuMTMgb3IgaGlnaGVyIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbS4gT25jZSB5b3UgaGF2ZSBpbnN0YWxsZWQgR28sIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBpbnN0YWxsIEdvQVBJOgoKYGBgc2gKZ28gZ2V0IGdpdGh1Yi5jb20vaHZ1aHNnL0dvQVBJCmBgYAoKIyMjIFVzYWdlCgpUbyB1c2UgR29BUEksIHlvdSBuZWVkIHRvIGltcG9ydCBpdCBpbiB5b3VyIEdvIGNvZGUgYW5kIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgZ29hcGkuQXBwIG9iamVjdDoKCmBgYGdvCnBhY2thZ2UgbWFpbgoKaW1wb3J0ICJnaXRodWIuY29tL2h2dWhzZy9nb2FwaSIKCmZ1bmMgbWFpbigpIHsKCWFwcCA6PSBnb2FwaS5Hb0FQSSgic21hbGwiLCAiMS4wdiIpCn0KYGBgCgpPbmNlIHlvdSBoYXZlIGNyZWF0ZWQgdGhlIGFwcCBpbnN0YW5jZSwgeW91IGNhbiBhZGQgcm91dGVzIHRvIGl0IGJ5IGNhbGxpbmcgdGhlIFBhdGgoKSBtZXRob2QgYW5kIHNwZWNpZnlpbmcgdGhlIHJvdXRlIHBhdGguIFlvdSBjYW4gYWxzbyBzZXQgdGhlIEhUVFAgbWV0aG9kcyB0aGF0IHRoZSByb3V0ZSBzdXBwb3J0cyB1c2luZyB0aGUgTWV0aG9kcygpIG1ldGhvZC4gSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgcm91dGUgdGhhdCBzdXBwb3J0IEdFVCBtZXRob2Q6CgpgYGBnbwpwYWNrYWdlIG1haW4KCmltcG9ydCAoCgkiZ2l0aHViLmNvbS9odnVoc2cvZ29hcGkiCgkiZ2l0aHViLmNvbS9odnVoc2cvZ29hcGkvcmVxdWVzdCIKCSJnaXRodWIuY29tL2h2dWhzZy9nb2FwaS9yZXNwb25zZXMiCgkiZ2l0aHViLmNvbS9odnVoc2cvZ29hcGkvdmFsaWRhdG9ycyIKKQoKZnVuYyBtYWluKCkgewoJYXBwIDo9IGdvYXBpLkdvQVBJKCJzbWFsbCIsICIxLjB2IikKCgllY2hvIDo9IGFwcC5QYXRoKCIvZWNobyIpCgllY2hvLk1ldGhvZHMoZ29hcGkuR0VUKQoJZWNoby5EZXNjcmlwdGlvbigiZWNobyBhIGJhY2siKQoJZWNoby5QYXJhbWV0ZXIoImEiLCBnb2FwaS5RVUVSWSwgdmFsaWRhdG9ycy5WUmVxdWlyZWR7fSwgdmFsaWRhdG9ycy5WSXNJbnR7fSkKCWVjaG8uQWN0aW9uKGZ1bmMocmVxdWVzdCAqcmVxdWVzdC5SZXF1ZXN0KSByZXNwb25zZXMuUmVzcG9uc2UgewoJCXJldHVybiByZXNwb25zZXMuTmV3SlNPTlJlc3BvbnNlKHJlc3BvbnNlcy5Kc29ueyJhIjogcmVxdWVzdC5HZXRJbnQoImEiKX0sIDIwMCkKCX0pCgoJYXBwLlJ1bigiMTI3LjAuMC4xIiwgODA4MCkKfQpgYGAKCkluIHRoZSBhYm92ZSBleGFtcGxlLCB3ZSBoYXZlIGNyZWF0ZWQgYSByb3V0ZSBhdCBgL2VjaG9gIHRoYXQgc3VwcG9ydHMgR0VUIG1ldGhvZC4gV2UgaGF2ZSBhbHNvIGFkZGVkIGEgZGVzY3JpcHRpb24gZm9yIHRoZSByb3V0ZSBhbmQgc3BlY2lmaWVkIHRoYXQgaXQgZXhwZWN0cyBhbiBpbnRlZ2VyIHBhcmFtZXRlciBjYWxsZWQgImEiLiBGaW5hbGx5LCB3ZSBoYXZlIHNwZWNpZmllZCB0aGUgYWN0aW9uIHRoYXQgc2hvdWxkIGJlIHBlcmZvcm1lZCB3aGVuIHRoZSByb3V0ZSBpcyBhY2Nlc3NlZC4gSW4gdGhpcyBjYXNlLCB3ZSBhcmUgcmV0dXJuaW5nIGEgSlNPTiBvYmplY3QgdGhhdCBjb250YWlucyBhICJhIiBrZXkgd2l0aCB0aGUgdmFsdWUgb2YgYSBhcyBhbiBpbnRlZ2VyLgoKWW91IGNhbiBhZGQgYXMgbWFueSByb3V0ZXMgYXMgeW91IGxpa2UgdG8gdGhlIGFwcCBpbnN0YW5jZSwgYW5kIGVhY2ggcm91dGUgY2FuIGhhdmUgaXRzIG93biB1bmlxdWUgc2V0IG9mIHBhcmFtZXRlcnMgYW5kIHZhbGlkYXRvcnMuCgojIyBFeGFtcGxlcwoKVG8gaGVscCB5b3UgZ2V0IHN0YXJ0ZWQgd2l0aCB1c2luZyBHb0FQSSwgd2UgaGF2ZSBwcm92aWRlZCBzb21lIGV4YW1wbGVzIGluIHRoZSBleGFtcGxlcyBkaXJlY3Rvcnkgb2YgdGhlIHJlcG9zaXRvcnkuIFRoZXNlIGV4YW1wbGVzIGRlbW9uc3RyYXRlIHZhcmlvdXMgdXNlIGNhc2VzIG9mIHRoZSBmcmFtZXdvcmsgYW5kIGhvdyB0byB1c2UgaXRzIGZlYXR1cmVzLgoKVGhlIGV4YW1wbGVzIGluY2x1ZGVkIGFyZTogIAotIFsqKnNtYWxsZXN0KipdKC9leGFtcGxlcy9zbWFsbGVzdC8pIFRoZSBzbWFsbGVzdCBleGFtcGxlIG9mIHJlYWR5IHRvIHJ1biBhcGkuCi0gWyoqbWF0aF9hcGkqKl0oL2V4YW1wbGVzL21hdGhfYXBpLykgU2ltcGxlIHVzZSBvZiBtZXRob2RzLCBwYXJhbWV0ZXJzIGFuZCB2YWxpZGF0b3JzLiAgCi0gWyoqZXh0ZXJuYWxfaGFuZGxlcioqXSgvZXhhbXBsZXMvZXh0ZXJuYWxfaGFuZGxlci8pIFVzZSBvZiBleHRlcm5hbCBoYW5kbGVyIChGaWxlU2VydmVyKSBpbnQgdGhlIGFwcC4KLSBbKip0bHMqKl0oL2V4YW1wbGVzL3Rscy8pIFJ1bm5pbmcgdGhlIGFwcCB3aXRoIEhUVFBTIHN1cHBvcnQuCi0gWyoqbmdyb2tfdHVubmVsKipdKC9leGFtcGxlcy9uZ3Jva190dW5uZWwvKSBSdW4geW91ciBhcHAgb3ZlciBuZ3JvayB0dW5uZWwgd2l0aG91dCBhbnkgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLiAgCgpUbyBydW4gdGhlIGV4YW1wbGVzLCBuYXZpZ2F0ZSB0byB0aGUgZXhhbXBsZXMgZGlyZWN0b3J5IGFuZCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgc2gKZ28gcnVuIDxleGFtcGxlX25hbWU+L21haW4uZ28KYGBgCgpUaGlzIHdpbGwgc3RhcnQgdGhlIGV4YW1wbGUgc2VydmVyIGAxMjcuMC4wLjE6ODA4MGAgYW5kIHlvdSBjYW4gdmlzaXQgdGhlIGV4YW1wbGUgZW5kcG9pbnRzIGluIHlvdXIgd2ViIGJyb3dzZXIgb3IgdmlhIGN1cmwuClRvIHNlZSBhbGwgb2YgdGhlIGVuZHBvaW50cyB0b3UgY2FuIHZpc2l0IGAxMjcuMC4wLjE6ODA4MC9kb2NzYCB0byBzZWUgdGhlIGF1dG8gZ2VuZXJhdGVkIGludGVyYWN0aXZlIGRvY3MuCgpGZWVsIGZyZWUgdG8gdXNlIHRoZXNlIGV4YW1wbGVzIGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdXIgb3duIHByb2plY3RzIGFuZCBtb2RpZnkgdGhlbSBhcyBuZWVkZWQuCgojIyBWYWxpZGF0aW9uCkdvQVBJIGNvbWVzIHdpdGggYnVpbHQtaW4gdmFsaWRhdG9ycyB0aGF0IGNhbiBiZSB1c2VkIHRvIHZhbGlkYXRlIGlucHV0IGRhdGEgYXV0b21hdGljYWxseS4gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHdlIHVzZWQgdGhlIGBWSXNJbnRgIHZhbGlkYXRvciB0byBlbnN1cmUgdGhhdCB0aGUgInRpbWVzdGFtcCIgcGFyYW1ldGVyIGlzIGFuIGludGVnZXIuIFdlIGFsc28gdXNlZCB0aGUgYFZSYW5nZWAgdmFsaWRhdG9yIHRvIGVuc3VyZSB0aGF0IHRoZSAiYSIgYW5kICJiIiBwYXJhbWV0ZXJzIGZhbGxzIHdpdGhpbiBhIHNwZWNpZmllZCByYW5nZS4KCklmIHRoZSBpbnB1dCBkYXRhIGZhaWxzIHZhbGlkYXRpb24sIHRoZSBmcmFtZXdvcmsgd2lsbCBhdXRvbWF0aWNhbGx5IHJldHVybiBhbiBlcnJvciB0byB0aGUgY2xpZW50LiBUaGlzIG1lYW5zIHlvdSBjYW4gZm9jdXMgb24gdGhlIG1haW4gbG9naWMgb2YgeW91ciBhcHBsaWNhdGlvbiwgYW5kIHRoZSBmcmFtZXdvcmsgd2lsbCBoYW5kbGUgdGhlIHZhbGlkYXRpb24gZm9yIHlvdS4KCkhlcmUgaXMgYSB2YWxpZGF0b3IgZm9yIGV4YW1wbGUKPGRldGFpbHM+CjxzdW1tYXJ5PlNlZSB2YWxpZGF0b3I8L3N1bW1hcnk+CgpgYGBnbwovLyBWUmFuZ2UgaW1wbGVtZW50YWlvbiBmb3IgcmVmZXJuY2UKdHlwZSBWUmFuZ2Ugc3RydWN0IHsKCU1pbiBmbG9hdDY0CglNYXggZmxvYXQ2NAp9CgpmdW5jICh2IFZSYW5nZSkgVXBkYXRlT3BlbkFQSVNjaGVtYShzY2hlbWEgKm9wZW5hcGkzLlNjaGVtYSkgewoJc2NoZW1hLk1pbiA9ICZ2Lk1pbgoJc2NoZW1hLk1heCA9ICZ2Lk1heAp9CmZ1bmMgKHYgVlJhbmdlKSBWYWxpZGF0ZShyICpyZXF1ZXN0LlJlcXVlc3QsIHBhcmFtTmFtZSBzdHJpbmcpIGVycm9yIHsKCXZyIDo9IFZJc0Zsb2F0e30KCWVyciA6PSB2ci5WYWxpZGF0ZShyLCBwYXJhbU5hbWUpCglpZiBlcnIgIT0gbmlsIHsKCQlyZXR1cm4gZXJyCgl9CgoJZlZhbCA6PSByLkdldEZsb2F0KHBhcmFtTmFtZSkKCglpZiBmVmFsIDwgdi5NaW4gfHwgZlZhbCA+IHYuTWF4IHsKCQlyZXR1cm4gZm10LkVycm9yZigicGFyYW1ldGVyICVzIG11c3QgYmUgYmV0d2VlbiAlZiBhbmQgJWYiLCBwYXJhbU5hbWUsIHYuTWluLCB2Lk1heCkKCX0KCglyZXR1cm4gbmlsCn0KYGBgCjwvZGV0YWlscz4KCiMjIE1pZGRsZXdhcmVzCkdvQVBJIHN1cHBvcnRzIG1pZGRsZXdhcmVzLCBtaWRkbGV3YXJlcyBjYW4gYmUgZGVmaW5kIGluIHRoZSBhcHAgbGV2ZWwgb3IgaW4gdGhlIHZpZXcgbGV2ZWwsIG1pZGRsZXdhcmVzIGluIHRoZSBhcHAgbGV2ZWwgYXJlIGFwcGxpZWQgdG8gYWxsIHZpZXdzLgoKaGVyZSBpcyBhbiBleGFtcGxlIGZvciBsb2dnaW5nIG1pZGRsZXdhcmUsIHRoYXQgbG9ncyByZXF1ZXN0cyBpbiB0aGUgZm9ybWF0IHRoYXQgbmdpbnggdXNlcy4KPGRldGFpbHM+CjxzdW1tYXJ5PlNlZSBtaWRkbGV3YXJlPC9zdW1tYXJ5PgoKYGBgZ28KdHlwZSBMb2dnaW5nTWlkZGxld2FyZSBzdHJ1Y3R7fQoKZnVuYyAoTG9nZ2luZ01pZGRsZXdhcmUpIEFwcGx5KG5leHQgQXBwSGFuZGxlcikgQXBwSGFuZGxlciB7CglyZXR1cm4gZnVuYyhyZXF1ZXN0ICpyZXF1ZXN0LlJlcXVlc3QpIHJlc3BvbnNlcy5SZXNwb25zZSB7CgkJcmVzcG9uc2UgOj0gbmV4dChyZXF1ZXN0KQoKCQlzY2hlbWUgOj0gImh0dHAiCgkJaWYgcmVxdWVzdC5IVFRQUmVxdWVzdC5UTFMgIT0gbmlsIHsKCQkJc2NoZW1lID0gImh0dHBzIgoJCX0KCQlmdWxsVVJMIDo9IGZtdC5TcHJpbnRmKCIlczovLyVzJXMiLCBzY2hlbWUsIHJlcXVlc3QuSFRUUFJlcXVlc3QuSG9zdCwgcmVxdWVzdC5IVFRQUmVxdWVzdC5VUkwuU3RyaW5nKCkpCgoJCW1ldGhvZCA6PSByZXF1ZXN0LkhUVFBSZXF1ZXN0Lk1ldGhvZAoJCXBhdGggOj0gcmVxdWVzdC5IVFRQUmVxdWVzdC5VUkwuUGF0aAoJCXJlc3BvbnNlU2l6ZSA6PSBsZW4ocmVzcG9uc2UuVG9CeXRlcygpKQoJCXJlbW90ZUFkZHIgOj0gcmVxdWVzdC5IVFRQUmVxdWVzdC5SZW1vdGVBZGRyCgkJZGF0ZSA6PSB0aW1lLk5vdygpLkZvcm1hdCgiMjAwNi0wMS0wMiAxNTowNDowNSIpCgkJdXNlckFnZW50IDo9IHJlcXVlc3QuSFRUUFJlcXVlc3QuVXNlckFnZW50KCkKCQlzdGF0dXNDb2RlIDo9IHJlc3BvbnNlLlN0YXR1c0NvZGUoKQoKCQlsb2cuUHJpbnRmKCIlcyAtIC0gWyVzXSBcIiVzICVzICVzXCIgJWQgJWQgXCIlc1wiIFwiJXNcIlxuIiwgcmVtb3RlQWRkciwgZGF0ZSwgbWV0aG9kLCBwYXRoLCByZXF1ZXN0LkhUVFBSZXF1ZXN0LlByb3RvLCBzdGF0dXNDb2RlLCByZXNwb25zZVNpemUsIGZ1bGxVUkwsIHVzZXJBZ2VudCkKCQlyZXR1cm4gcmVzcG9uc2UKCX0KfQpgYGAKPC9kZXRhaWxzPgoKVG8gYXBwbHkgbWlkZGxld2FyZXMgc2ltcGx5IHBhc3MgaXQgdG8gdGhlIE1pZGRsZXdhcmVzIG1ldGhvZCBmb3IgdGhlIGFwcCBvciBmb3IgdGhlIHZpZXcuCgpgYGBnbwpwYWNrYWdlIG1haW4KCmltcG9ydCAoCgkibmV0L2h0dHAiCgoJImdpdGh1Yi5jb20vaHZ1aHNnL2dvYXBpIgoJImdpdGh1Yi5jb20vaHZ1aHNnL2dvYXBpL21pZGRsZXdhcmVzIgopCgpmdW5jIG1haW4oKSB7CglhcHAgOj0gZ29hcGkuR29BUEkoImV4dGVybmFsIGhhbmRsZXIiLCAiMS4wdiIpCglhcHAuTWlkZGxld2FyZXMobWlkZGxld2FyZXMuTG9nZ2luZ01pZGRsZXdhcmV7fSkKfQpgYGAKCiMjIE5hdGl2ZSBoYW5kbGVycwpUbyBhbGxvdyB0aGUgdXNhZ2Ugb2YgbmF0aXZlIGhhbmRsZXJzIHdlIGFkZGVkIGEgc2ltcGxlIHdheSB0byBpbmNsdWRlIHRoZW0gaW4gdGhlIGFwcCwgc2ltcGx5IHBhc3MgdGhlIG5hdGl2ZSBIYW5kbGVyIGludG8gdGhlIEluY2x1ZGUgbWV0aG9kIG9mIHRoZSBhcHAuCgpOb3RlIHRoYXQgbmF0aXZlIGhhbmRsZXJzIHdpbGwgbm90IGJlIHNob3duIGluIHRoZSBhdXRvbWF0aWMgZG9jcywgYW5kIGN1cnJlbnRseSB3aWxsIG5vdCBiZSBhZmZlY3RlZCBieSB0aGUgbWlkZGxld2FyZXMuCgpoZXJlIGlzIGFuIGV4YW1wbGU6CmBgYGdvCnBhY2thZ2UgbWFpbgoKaW1wb3J0ICgKCSJuZXQvaHR0cCIKCgkiZ2l0aHViLmNvbS9odnVoc2cvZ29hcGkiCikKCmZ1bmMgbWFpbigpIHsKCWFwcCA6PSBnb2FwaS5Hb0FQSSgiZXh0ZXJuYWwgaGFuZGxlciIsICIxLjB2IikKCgkvLyBTZXJ2ZSBmaWxlcyBmcm9tIEdvQVBJIGFwcCB1c2luZyB0aGUgSW5jbHVkZSBtZXRob2QgdGhhdCBhbGxvdyB1cyB0byBpbmNsdWRlIGV4dGVybmFsIGhhbmRsZXJzIGluIHRoZSBhcHAKCWFwcC5JbmNsdWRlKCIvIiwgaHR0cC5GaWxlU2VydmVyKGh0dHAuRGlyKCIuIikpKQoKCWFwcC5SdW4oIjEyNy4wLjAuMSIsIDgwODApCn0KYGBgCgojIyBBUEkgRG9jdW1lbnRhdGlvbgpHb0FQSSBjYW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBBUEkgZG9jdW1lbnRhdGlvbiBpbiBPcGVuQVBJIGZvcm1hdCAodmVyc2lvbiAzKS4gVGhpcyBtYWtlcyBpdCBlYXN5IHRvIHNoYXJlIHlvdXIgQVBJIHdpdGggb3RoZXJzIGFuZCBpbnRlZ3JhdGUgaXQgd2l0aCBvdGhlciB0b29scyB0aGF0IHN1cHBvcnQgT3BlbkFQSS4KClRvIGdlbmVyYXRlIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiwgeW91IGNhbiBzaW1wbHkgdmlzaXQgdGhlICIvZG9jcyIgZW5kcG9pbnQgaW4geW91ciB3ZWIgYnJvd3Nlci4gVGhpcyB3aWxsIGRpc3BsYXkgYSB1c2VyLWZyaWVuZGx5IGludGVyZmFjZSB0aGF0IGFsbG93cyB5b3UgdG8gdmlldyB0aGUgQVBJIHNjaGVtYSBhbmQgdGVzdCB0aGUgQVBJIGVuZHBvaW50cy4KRm9yIHRoZSBKU09OIHNjaGVtYSB5b3UgY2FuIHZpc2l0ICIvb3BlbmFwaS5qc29uIi4gIAoKCiFbU3dhZ2dlciBVSV0oL2RvY3MvaW1hZ2VzL29wZW5hcGlfY2xvc2VkLnBuZykKIVtTd2FnZ2VyIHJvdXRlIG9wZW5dKC9kb2NzL2ltYWdlcy9vcGVuYXBpX29wZW4ucG5nKQoKIyMgSFRUUFMgU3VwcG9ydApHb0FQSSBjYW4gYWxzbyBzZXJ2ZSB0aGUgYXBpIG92ZXIgaHR0cHMsIHRoaXMgaXMgbm90IHJlY29tbWFuZGVkIGZvciBwcm9kdWN0aW9uLgpXZSByZWNvbW1hbmQgdXNpbmcgTmdpbnggb3Igb3RoZXIgdHlwZXMgb2YgcmV2ZXJzZSBwcm94eSB0byBoYW5kbGUgdGhlIFNTTC9UTFMgc2VjdXJpdHkuCgpUbyBydW4gdGhlIGFwcGxpY2F0aW9uIG92ZXIgVExTIGp1c3QgdXNlIHRoZSAqKlJ1blRMUyoqIG1ldGhvZCBvZiB0aGUgYXBwLgoKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAoJImdpdGh1Yi5jb20vaHZ1aHNnL2dvYXBpIgoJImdpdGh1Yi5jb20vaHZ1aHNnL2dvYXBpL3JlcXVlc3QiCgkiZ2l0aHViLmNvbS9odnVoc2cvZ29hcGkvcmVzcG9uc2VzIgopCgpmdW5jIG1haW4oKSB7CglhcHAgOj0gZ29hcGkuR29BUEkoIlRMUyBleGFtcGxlIiwgIjEuMHYiKQoKCXJvb3QgOj0gYXBwLlBhdGgoIi8iKQoJcm9vdC5NZXRob2RzKGdvYXBpLkdFVCkKCXJvb3QuRGVzY3JpcHRpb24oInNpbXBsZSByb3V0ZSIpCglyb290LkFjdGlvbihmdW5jKHJlcXVlc3QgKnJlcXVlc3QuUmVxdWVzdCkgcmVzcG9uc2VzLlJlc3BvbnNlIHsKCQlyZXR1cm4gcmVzcG9uc2VzLk5ld0hUTUxSZXNwb25zZSgiPGgxPkhUTUwgT3ZlciBIVFRQUzwvaDE+IiwgMjAwKQoJfSkKCglhcHAuUnVuVExTKCIxMjcuMC4wLjEiLCA4MDgwLCAiLi9zZXJ2ZXIuY3J0IiwgIi4vc2VydmVyLmtleSIpCn0KYGBgCgojIyBOZ3JvayBUdW5uZWwKR29BUEkgc3VwcG9ydCBzZWFtbGVzcyBhbmQgc2ltcGxlIHVzZSBvZiBuZ3JvayB0dW5uZWxzIGR1cmluZyB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhlIHNlcnZlci4KPGRldGFpbHM+CjxzdW1tYXJ5PkNvZGUgZXhhbXBsZTwvc3VtbWFyeT4KCmBgYGdvCnBhY2thZ2UgbWFpbgoKaW1wb3J0ICgKCSJsb2ciCgkib3MiCgoJImdpdGh1Yi5jb20vaHZ1aHNnL2dvYXBpIgoJImdpdGh1Yi5jb20vaHZ1aHNnL2dvYXBpL3JlcXVlc3QiCgkiZ2l0aHViLmNvbS9odnVoc2cvZ29hcGkvcmVzcG9uc2VzIgopCgpmdW5jIG1haW4oKSB7CglhcHAgOj0gZ29hcGkuR29BUEkoIm5ncm9rIHR1bm5lbCIsICIxLjB2IikKCgllY2hvIDo9IGFwcC5QYXRoKCIvIikKCWVjaG8uTWV0aG9kcyhnb2FwaS5HRVQpCgllY2hvLkRlc2NyaXB0aW9uKCJob21lIHBhZ2UiKQoJZWNoby5BY3Rpb24oZnVuYyhyZXF1ZXN0ICpyZXF1ZXN0LlJlcXVlc3QpIHJlc3BvbnNlcy5SZXNwb25zZSB7CgkJcmV0dXJuIHJlc3BvbnNlcy5OZXdIVE1MUmVzcG9uc2UoIjxoMT5TZXJ2ZWQgb3ZlciBuZ3JvayB0dW5uZWw8L2gxPiIsIDIwMCkKCX0pCgoJbmdyb2tUb2tlbiA6PSBvcy5HZXRlbnYoIk5HUk9LX1RPS0VOIikKCWlmIG5ncm9rVG9rZW4gPT0gIiIgewoJCWxvZy5QcmludGxuKCJFbnZpcm9tZW50IHZhcmlhYmxlIE5HUk9LX1RPS0VOIGlzIHJlcXVpcmVkIikKCQlvcy5FeGl0KDEpCgl9CgoJYXBwLlJ1bk5ncm9rKG5ncm9rVG9rZW4pCn0KYGBgCjwvZGV0YWlscz4K readmeEtag: '"ec8f2f7f9ec7ed89691552cba2ae5a4cdc94210f"' readmeLastModified: Wed, 10 Apr 2024 15:44:02 GMT repositoryId: 601809698 description: GoAPI - A Fast and Easy-to-use Web Framework for Building APIs in Go created: '2023-02-14T21:41:22Z' updated: '2025-11-23T00:06:14Z' language: Go archived: false stars: 87 watchers: 1 forks: 4 owner: hvuhsg logo: https://avatars.githubusercontent.com/u/34660046?v=4 license: MIT repoEtag: '"3fc96727e5107b5be240d912ef019b7822e0c26878dec05df88192eb38b6567c"' repoLastModified: Sun, 23 Nov 2025 00:06:14 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/pylons/pyramid_openapi3 v3: true repositoryMetadata: base64Readme: >- IyBweXJhbWlkX29wZW5hcGkzCgojIyBWYWxpZGF0ZSBbUHlyYW1pZF0oaHR0cHM6Ly90cnlweXJhbWlkLmNvbSkgdmlld3MgYWdhaW5zdCBbT3BlbkFQSSAzLjAvMy4xXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIGRvY3VtZW50cwoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyBhbHQ9IlB5cmFtaWQgYW5kIE9wZW5BUEkgbG9nb3MiCiAgICAgICBoZWlnaHQ9IjIwMCIKICAgICAgIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL1B5bG9ucy9weXJhbWlkX29wZW5hcGkzL2Jsb2IvbWFpbi9oZWFkZXIuanBnP3Jhdz10cnVlIj4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1B5bG9ucy9weXJhbWlkX29wZW5hcGkzL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbCI+CiAgICA8aW1nIGFsdD0iQ0kgZm9yIHB5cmFtaWRfb3BlbmFwaTMgKG1haW4gYnJhbmNoKSIKICAgICAgICAgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vUHlsb25zL3B5cmFtaWRfb3BlbmFwaTMvYWN0aW9ucy93b3JrZmxvd3MvY2kueW1sL2JhZGdlLnN2ZyI+CiAgPC9hPgogIDxpbWcgYWx0PSJUZXN0IGNvdmVyYWdlIChtYWluIGJyYW5jaCkiCiAgICAgICBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvdGVzdHNfY292ZXJhZ2UtMTAwJTI1LWJyaWdodGdyZWVuLnN2ZyI+CiAgPGltZyBhbHQ9IlRlc3QgY292ZXJhZ2UgKG1haW4gYnJhbmNoKSIKICAgICAgIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS90eXBlc19jb3ZlcmFnZS0xMDAlMjUtYnJpZ2h0Z3JlZW4uc3ZnIj4KICA8YSBocmVmPSJodHRwczovL3B5cGkub3JnL3Byb2plY3QvcHlyYW1pZF9vcGVuYXBpMy8iPgogICAgPGltZyBhbHQ9ImxhdGVzdCB2ZXJzaW9uIG9mIHB5cmFtaWRfb3BlbmFwaTMgb24gUHlQSSIKICAgICAgICAgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9weXJhbWlkX29wZW5hcGkzLnN2ZyI+CiAgPC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXJhbWlkX29wZW5hcGkzLyI+CiAgICA8aW1nIGFsdD0iU3VwcG9ydGVkIFB5dGhvbiB2ZXJzaW9ucyIKICAgICAgICAgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy9weXJhbWlkX29wZW5hcGkzLnN2ZyI+CiAgPC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9QeWxvbnMvcHlyYW1pZF9vcGVuYXBpMy9ibG9iL21haW4vTElDRU5TRSI+CiAgICA8aW1nIGFsdD0iTGljZW5zZTogTUlUIgogICAgICAgICBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGljZW5zZS1NSVQteWVsbG93LnN2ZyI+CiAgPC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9QeWxvbnMvcHlyYW1pZF9vcGVuYXBpMy9ncmFwaHMvY29udHJpYnV0b3JzIj4KICAgIDxpbWcgYWx0PSJCdWlsdCBieSB0aGVzZSBncmVhdCBmb2xrcyEiCiAgICAgICAgIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvY29udHJpYnV0b3JzL1B5bG9ucy9weXJhbWlkX29wZW5hcGkzLnN2ZyI+CiAgPC9hPgo8L3A+CgojIyBQZWFjZSBvZiBNaW5kCgpUaGUgcmVhc29uIHRoaXMgcGFja2FnZSBleGlzdHMgaXMgdG8gZ2l2ZSB5b3UgcGVhY2Ugb2YgbWluZCB3aGVuIHByb3ZpZGluZyBhIFJFU1RmdWwgQVBJLiBJbnN0ZWFkIG9mIGNoYXNpbmcgZG93biBwcmV2ZW50YWJsZSBidWdzIGFuZCBzYXlpbmcgc29ycnkgdG8gY29uc3VtZXJzLCB5b3UgY2FuIGZvY3VzIG9uIG1vcmUgaW1wb3J0YW50IHRoaW5ncyBpbiBsaWZlLgoKLSBZb3VyICoqQVBJIGRvY3VtZW50YXRpb24gaXMgbmV2ZXIgb3V0LW9mLWRhdGUqKiwgc2luY2UgaXQgaXMgZ2VuZXJhdGVkIG91dCBvZiB0aGUgQVBJIGRvY3VtZW50IHRoYXQgeW91IHdyaXRlLgotIFRoZSBkb2N1bWVudGF0aW9uIGNvbWVzIHdpdGggKipfdHJ5LWl0LW91dF8gZXhhbXBsZXMqKiBmb3IgZXZlcnkgZW5kcG9pbnQgaW4geW91ciBBUEkuIFlvdSBkb24ndCBoYXZlIHRvIHByb3ZpZGUgKGFuZCBtYWludGFpbikgYGN1cmxgIGNvbW1hbmRzIHRvIHNob3djYXNlIGhvdyB5b3VyIEFQSSB3b3Jrcy4gVXNlcnMgY2FuIHRyeSBpdCB0aGVtc2VsdmVzLCByaWdodCBpbiB0aGVpciBicm93c2Vycy4KLSBZb3VyICoqQVBJIGRvY3VtZW50IGlzIGFsd2F5cyB2YWxpZCoqLCBzaW5jZSB5b3VyIFB5cmFtaWQgYXBwIHdvbid0IGV2ZW4gc3RhcnQgaWYgdGhlIGRvY3VtZW50IGRvZXMgbm90IGNvbXBseSB3aXRoIHRoZSBPcGVuQVBJIDMuMCBzcGVjaWZpY2F0aW9uLgotIEF1dG9tYXRpYyByZXF1ZXN0ICoqcGF5bG9hZCB2YWxpZGF0aW9uIGFuZCBzYW5pdGl6YXRpb24qKi4gWW91ciB2aWV3cyBkbyBub3QgcmVxdWlyZSBhbnkgY29kZSBmb3IgdmFsaWRhdGlvbiBhbmQgaW5wdXQgc2FuaXRhdGlvbi4gWW91ciB2aWV3IGNvZGUgb25seSBkZWFscyB3aXRoIGJ1c2luZXNzIGxvZ2ljLiBUb25zIG9mIHRlc3RzIG5ldmVyIG5lZWQgdG8gYmUgd3JpdHRlbiBzaW5jZSBldmVyeSByZXF1ZXN0LCBhbmQgaXRzIHBheWxvYWQsIGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHlvdXIgQVBJIGRvY3VtZW50IGJlZm9yZSBpdCByZWFjaGVzIHlvdXIgdmlldyBjb2RlLgotIFlvdXIgQVBJICoqcmVzcG9uc2VzIGFsd2F5cyBtYXRjaCB5b3VyIEFQSSBkb2N1bWVudCoqLiBFdmVyeSByZXNwb25zZSBmcm9tIHlvdXIgdmlldyBpcyB2YWxpZGF0ZWQgYWdhaW5zdCB5b3VyIGRvY3VtZW50IGFuZCBhIGA1MDAgSW50ZXJuYWwgU2VydmVyIEVycm9yYCBpcyByZXR1cm5lZCBpZiB0aGUgcmVzcG9uc2UgZG9lcyBub3QgZXhhY3RseSBtYXRjaCB3aGF0IHlvdXIgZG9jdW1lbnQgc2F5cyB0aGUgb3V0cHV0IG9mIGEgY2VydGFpbiBBUEkgZW5kcG9pbnQgc2hvdWxkIGJlLiBUaGlzIGRlY3JlYXNlcyB0aGUgZWZmZWN0cyBvZiBbSHlydW0ncyBMYXddKGh0dHBzOi8vd3d3Lmh5cnVtc2xhdy5jb20pLgotICoqQSBzaW5nbGUgc291cmNlIG9mIHRydXRoKiouIEJlY2F1c2Ugb2YgdGhlIGNoZWNrcyBvdXRsaW5lZCBhYm92ZSwgeW91IGNhbiBiZSBzdXJlIHRoYXQgd2hhdGV2ZXIgeW91ciBBUEkgZG9jdW1lbnQgc2F5cyBpcyBpbiBmYWN0IHdoYXQgaXMgZ29pbmcgb24gaW4gcmVhbGl0eS4gWW91IGhhdmUgYSBzaW5nbGUgc291cmNlIG9mIHRydXRoIHRvIGNvbnN1bHQgd2hlbiBhc2tpbmcgYW4gQVBJIHJlbGF0ZWQgcXVlc3Rpb24sIHN1Y2ggYXMgIlJlbWluZCBtZSBhZ2Fpbiwgd2hpY2ggZmllbGRzIGFyZSByZXR1cm5lZCBieSB0aGUgZW5kcG9pbnQgYC91c2VyL2luZm9gPyIuCi0gQmFzZWQgb24gW1B5cmFtaWRdKGh0dHBzOi8vdHJ5cHlyYW1pZC5jb20pLCBhICoqbWF0dXJlIFB5dGhvbiBXZWIgZnJhbWV3b3JrKiouIENvbXBhbmllcyBzdWNoIGFzIE1vemlsbGEsIFllbHAsIFJvbGxCYXIgYW5kIFN1cnZleU1vbmtleSBbdHJ1c3QgUHlyYW1pZF0oaHR0cHM6Ly90cnlweXJhbWlkLmNvbS9jb21tdW5pdHktcG93ZXJlZC1ieS1weXJhbWlkLmh0bWwpLCBhbmQgdGhlIG5ldyBbcHlwaS5vcmddKGh0dHBzOi8vZ2l0aHViLmNvbS9weXBhL3dhcmVob3VzZSkgcnVucyBvbiBQeXJhbWlkLCB0b28uIFB5cmFtaWQgaXMgdGhvcm91Z2hseSBbdGVzdGVkXShodHRwczovL2dpdGh1Yi5jb20vUHlsb25zL1B5cmFtaWQvYWN0aW9ucz9xdWVyeT13b3JrZmxvdyUzQSUyMkJ1aWxkK2FuZCt0ZXN0JTIyKSBhbmQgW2RvY3VtZW50ZWRdKGh0dHBzOi8vZG9jcy5weWxvbnNwcm9qZWN0Lm9yZy9wcm9qZWN0cy9weXJhbWlkL2VuL2xhdGVzdC8pLCBwcm92aWRpbmcgZmxleGliaWxpdHksIHBlcmZvcm1hbmNlLCBhbmQgYSBsYXJnZSBlY29zeXN0ZW0gb2YgW2hpZ2gtcXVhbGl0eSBhZGQtb25zXShodHRwczovL3RyeXB5cmFtaWQuY29tL2V4dGVuZGluZy1weXJhbWlkLmh0bWwpLgoKPHAgYWxpZ249ImNlbnRlciI+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9UDB6TnhyRE8wc0UmYW1wO3Q9MTA2MSIgdGl0bGU9IkJ1aWxkaW5nIFJvYnVzdCBBUElzIiByZWw9Im5vZm9sbG93IiBjbGFzcz0icmljaC1kaWZmLWxldmVsLW9uZSI+PGltZyBzcmM9Imh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzMxMTU4MC85NzM2NDc3Mi02ZDI0NmE4MC0xODljLTExZWItODRmMi1hMGFkMjMyMzYwMDMucG5nIiBhbHQ9IkJ1aWxkaW5nIFJvYnVzdCBBUElzIiBzdHlsZT0ibWF4LXdpZHRoOjEwMCU7Ij48L2E+CjwvcD4KCiMjIEZlYXR1cmVzCgotIFZhbGlkYXRlcyB5b3VyIEFQSSBkb2N1bWVudCAoZm9yIGV4YW1wbGUsIGBvcGVuYXBpLnlhbWxgIG9yIGBvcGVuYXBpLmpzb25gKSBhZ2FpbnN0IHRoZSBPcGVuQVBJIDMuMCBzcGVjaWZpY2F0aW9uIHVzaW5nIHRoZSBbb3BlbmFwaS1zcGVjLXZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL3AxYzJ1L29wZW5hcGktc3BlYy12YWxpZGF0b3IpLgotIEdlbmVyYXRlcyBhbmQgc2VydmVzIHRoZSBbU3dhZ2dlciB0cnktaXQtb3V0IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby90b29scy9zd2FnZ2VyLXVpLykgZm9yIHlvdXIgQVBJLgotIFZhbGlkYXRlcyBpbmNvbWluZyByZXF1ZXN0cyBfYW5kXyBvdXRnb2luZyByZXNwb25zZXMgYWdhaW5zdCB5b3VyIEFQSSBkb2N1bWVudCB1c2luZyBbb3BlbmFwaS1jb3JlXShodHRwczovL2dpdGh1Yi5jb20vcDFjMnUvb3BlbmFwaS1jb3JlKS4KCiMjIEdldHRpbmcgc3RhcnRlZAoKMS4gRGVjbGFyZSBgcHlyYW1pZF9vcGVuYXBpM2AgYXMgYSBkZXBlbmRlbmN5IGluIHlvdXIgUHlyYW1pZCBwcm9qZWN0LgoKMi4gSW5jbHVkZSB0aGUgZm9sbG93aW5nIGxpbmVzOgoKICAgIGBgYHB5dGhvbgogICAgY29uZmlnLmluY2x1ZGUoInB5cmFtaWRfb3BlbmFwaTMiKQogICAgY29uZmlnLnB5cmFtaWRfb3BlbmFwaTNfc3BlYygnb3BlbmFwaS55YW1sJywgcm91dGU9Jy9hcGkvdjEvb3BlbmFwaS55YW1sJykKICAgIGNvbmZpZy5weXJhbWlkX29wZW5hcGkzX2FkZF9leHBsb3Jlcihyb3V0ZT0nL2FwaS92MS8nKQogICAgYGBgCgozLiBVc2UgdGhlIGBvcGVuYXBpYCBbdmlldyBwcmVkaWNhdGVdKGh0dHBzOi8vZG9jcy5weWxvbnNwcm9qZWN0Lm9yZy9wcm9qZWN0cy9weXJhbWlkL2VuL2xhdGVzdC9uYXJyL3ZpZXdjb25maWcuaHRtbCN2aWV3LWNvbmZpZ3VyYXRpb24tcGFyYW1ldGVycykgdG8gZW5hYmxlIHJlcXVlc3QvcmVzcG9uc2UgdmFsaWRhdGlvbjoKCiAgICBgYGBweXRob24KICAgIEB2aWV3X2NvbmZpZyhyb3V0ZV9uYW1lPSJmb29iYXIiLCBvcGVuYXBpPVRydWUsIHJlbmRlcmVyPSdqc29uJykKICAgIGRlZiBteXZpZXcocmVxdWVzdCk6CiAgICAgICAgcmV0dXJuIHJlcXVlc3Qub3BlbmFwaV92YWxpZGF0ZWQucGFyYW1ldGVycwogICAgYGBgCgpGb3IgcmVxdWVzdHMsIGByZXF1ZXN0Lm9wZW5hcGlfdmFsaWRhdGVkYCBpcyBhdmFpbGFibGUgd2l0aCB0d28gZmllbGRzOiBgcGFyYW1ldGVyc2AgYW5kIGBib2R5YC4KRm9yIHJlc3BvbnNlcywgaWYgdGhlIHBheWxvYWQgZG9lcyBub3QgbWF0Y2ggdGhlIEFQSSBkb2N1bWVudCwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4KCiMjIEFkdmFuY2VkIGNvbmZpZ3VyYXRpb24KCiMjIyBSZWxhdGl2ZSBGaWxlIFJlZmVyZW5jZXMgaW4gU3BlYwoKQSBmZWF0dXJlIGludHJvZHVjZWQgaW4gT3BlbkFQSTMgaXMgdGhlIGFiaWxpdHkgdG8gdXNlIGAkcmVmYCBsaW5rcyB0byBleHRlcm5hbCBmaWxlcyAoPGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjEuMC5tZCNyZWZlcmVuY2Utb2JqZWN0PikuCgpUbyB1c2UgdGhpcywgeW91IG11c3QgZW5zdXJlIHRoYXQgeW91IGhhdmUgYWxsIG9mIHlvdXIgc3BlYyBmaWxlcyBpbiBhIGdpdmVuIGRpcmVjdG9yeSAoZW5zdXJlIHRoYXQgeW91IGRvIG5vdCBoYXZlIGFueSBjb2RlIGluIHRoaXMgZGlyZWN0b3J5IGFzIGFsbCB0aGUgZmlsZXMgaW4gaXQgYXJlIGV4cG9zZWQgYXMgc3RhdGljIGZpbGVzKSwgdGhlbiAqKnJlcGxhY2UqKiB0aGUgYHB5cmFtaWRfb3BlbmFwaTNfc3BlY2AgY2FsbCB0aGF0IHlvdSBkaWQgaW4gW0dldHRpbmcgU3RhcnRlZF0oI2dldHRpbmctc3RhcnRlZCkgd2l0aCB0aGUgZm9sbG93aW5nOgoKYGBgcHl0aG9uCmNvbmZpZy5weXJhbWlkX29wZW5hcGkzX3NwZWNfZGlyZWN0b3J5KCdwYXRoL3RvL29wZW5hcGkueWFtbCcsIHJvdXRlPScvYXBpL3YxL3NwZWMnKQpgYGAKClNvbWUgbm90ZXM6CgotIERvIG5vdCBzZXQgdGhlIGByb3V0ZWAgb2YgeW91ciBgcHlyYW1pZF9vcGVuYXBpM19zcGVjX2RpcmVjdG9yeWAgdG8gdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGByb3V0ZWAgb2YgYHB5cmFtaWRfb3BlbmFwaTNfYWRkX2V4cGxvcmVyYC4KLSBUaGUgYHJvdXRlYCB0aGF0IHlvdSBzZXQgZm9yIGBweXJhbWlkX29wZW5hcGkzX3NwZWNfZGlyZWN0b3J5YCBzaG91bGQgbm90IGNvbnRhaW4gYW55IGZpbGUgZXh0ZW5zaW9ucywgYXMgdGhpcyBiZWNvbWVzIHRoZSByb290IGZvciBhbGwgb2YgdGhlIGZpbGVzIGluIHlvdXIgc3BlY2lmaWVkIGBmaWxlcGF0aGAuCi0gWW91IGNhbm5vdCB1c2UgYHB5cmFtaWRfb3BlbmFwaTNfc3BlY19kaXJlY3RvcnlgIGFuZCBgcHlyYW1pZF9vcGVuYXBpM19zcGVjYCBpbiB0aGUgc2FtZSBhcHAuCgojIyMgRW5kcG9pbnRzIC8gUmVxdWVzdCAvIFJlc3BvbnNlIFZhbGlkYXRpb24KClByb3ZpZGVkIHdpdGggYHB5cmFtaWRfb3BlbmFwaTNgIGFyZSBhIGZldyB2YWxpZGF0aW9uIGZlYXR1cmVzOgoKLSBpbmNvbWluZyByZXF1ZXN0IHZhbGlkYXRpb24gKGkuZS4sIHdoYXQgYSBjbGllbnQgc2VuZHMgdG8geW91ciBhcHApCi0gb3V0Z29pbmcgcmVzcG9uc2UgdmFsaWRhdGlvbiAoaS5lLiwgd2hhdCB5b3VyIGFwcCBzZW5kcyB0byBhIGNsaWVudCkKLSBlbmRwb2ludCB2YWxpZGF0aW9uIChpLmUuLCB5b3VyIGFwcCByZWdpc3RlcnMgcm91dGVzIGZvciBhbGwgZGVmaW5lZCBBUEkgZW5kcG9pbnRzKQoKVGhlc2UgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYXMgYSBkZWZhdWx0LCBidXQgeW91IGNhbiBkaXNhYmxlIHRoZW0gaWYgeW91IG5lZWQgdG86CgpgYGBweXRob24KY29uZmlnLnJlZ2lzdHJ5LnNldHRpbmdzWyJweXJhbWlkX29wZW5hcGkzLmVuYWJsZV9lbmRwb2ludF92YWxpZGF0aW9uIl0gPSBGYWxzZQpjb25maWcucmVnaXN0cnkuc2V0dGluZ3NbInB5cmFtaWRfb3BlbmFwaTMuZW5hYmxlX3JlcXVlc3RfdmFsaWRhdGlvbiJdID0gRmFsc2UKY29uZmlnLnJlZ2lzdHJ5LnNldHRpbmdzWyJweXJhbWlkX29wZW5hcGkzLmVuYWJsZV9yZXNwb25zZV92YWxpZGF0aW9uIl0gPSBGYWxzZQpgYGAKCj4gWyFXQVJOSU5HXQo+IERpc2FibGluZyByZXF1ZXN0IHZhbGlkYXRpb24gd2lsbCByZXN1bHQgaW4gYHJlcXVlc3Qub3BlbmFwaV92YWxpZGF0ZWRgIG5vIGxvbmdlciBiZWluZyBhdmFpbGFibGUgdG8gdXNlLgoKIyMjIFJlZ2lzdGVyIFB5cmFtaWQncyBSb3V0ZXMKCllvdSBjYW4gcmVnaXN0ZXIgcm91dGVzIGluIHlvdXIgcHlyYW1pZCBhcHBsaWNhdGlvbi4KRmlyc3QsIHdyaXRlIHRoZSBgeC1weXJhbWlkLXJvdXRlLW5hbWVgIGV4dGVuc2lvbiBpbiB0aGUgUGF0aEl0ZW0gb2YgdGhlIE9wZW5BUEkgc2NoZW1hLgoKYGBgeWFtbApwYXRoczoKICAvZm9vOgogICAgeC1weXJhbWlkLXJvdXRlLW5hbWU6IGZvb19yb3V0ZQogICAgZ2V0OgogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgZGVzY3JpcHRpb246IEdFVCBmb28KYGBgCgpUaGVuIHB1dCB0aGUgY29uZmlnIGRpcmVjdGl2ZSBgcHlyYW1pZF9vcGVuYXBpM19yZWdpc3Rlcl9yb3V0ZXNgIGluIHRoZSBhcHBfZmFjdG9yeSBvZiB5b3VyIGFwcGxpY2F0aW9uLgoKYGBgcHl0aG9uCmNvbmZpZy5weXJhbWlkX29wZW5hcGkzX3JlZ2lzdGVyX3JvdXRlcygpCmBgYAoKVGhpcyBpcyBlcXVhbCB0byBtYW51YWxseSB3cml0aW5nIHRoZSBmb2xsb3dpbmc6CgpgYGBweXRob24KY29uZmlnLmFkZF9yb3V0ZSgiZm9vX3JvdXRlIiwgcGF0dGVybj0iL2ZvbyIpCmBgYAoKVGhlIGBweXJhbWlkX29wZW5hcGkzX3JlZ2lzdGVyX3JvdXRlcygpYCBtZXRob2Qgc3VwcG9ydHMgc2V0dGluZyBhIGZhY3RvcnkgYW5kIHJvdXRlIHByZWZpeCBhcyB3ZWxsLiBTZWUgdGhlIHNvdXJjZSBmb3IgZGV0YWlscy4KCiMjIyBTcGVjaWZ5IHByb3RvY29sIGFuZCBwb3J0IGZvciBnZXR0aW5nIHRoZSBPcGVuQVBJIDMgc3BlYyBmaWxlCgpTb21ldGltZXMsIGl0IGlzIG5lY2Vzc2FyeSB0byBzcGVjaWZ5IHRoZSBwcm90b2NvbCBhbmQgcG9ydCB0byBhY2Nlc3MgdGhlIG9wZW5hcGkzIHNwZWMgZmlsZS4gVGhpcyBjYW4gYmUgY29uZmlndXJlZCB1c2luZyB0aGUgYHByb3RvX3BvcnRgIG9wdGlvbmFsIHBhcmFtZXRlciB0byB0aGUgdGhlIGBweXJhbWlkX29wZW5hcGkzX2FkZF9leHBsb3JlcmAgZnVuY3Rpb246CgpgYGBweXRob24KY29uZmlnLnB5cmFtaWRfb3BlbmFwaTNfYWRkX2V4cGxvcmVyKHByb3RvX3BvcnQ9KCdodHRwcycsIDQ0MykpCmBgYAoKIyMjIENTUCBub25jZQoKSWYgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAoQ1NQKSBpcyB1c2VkIGluIHlvdXIgUHlyYW1pZCBhcHBsaWNhdGlvbiwgeW91IGNhbiBwYXNzIGEgbm9uY2UgdG8gdGhlIE9wZW5BUEkgZXhwbG9yZXIgVUkgYnkgc2V0dGluZyB0aGUgYGNzcF9ub25jZWAgcmVxdWVzdCBwYXJhbWV0ZXI6CgpgYGBweXRob24KZGVmIGluamVjdF9jc3BfaGVhZGVyX3R3ZWVuKHJlcXVlc3QpOgogICAgbm9uY2UgPSBzZWNyZXRzLnRva2VuX3VybHNhZmUoMTYpCiAgICByZXF1ZXN0LmNzcF9ub25jZSA9IG5vbmNlCiAgICByZXNwb25zZSA9IGhhbmRsZXIocmVxdWVzdCkKICAgIHJlc3BvbnNlLmhlYWRlcnNbIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5Il0gPSBmInNjcmlwdC1zcmMgJ3NlbGYnICdub25jZS17bm9uY2V9JyIKICAgIHJldHVybiByZXNwb25zZQpgYGAKCgojIyBEZW1vIC8gRXhhbXBsZXMKClRoZXJlIGFyZSB0aHJlZSBleGFtcGxlcyBwcm92aWRlZCB3aXRoIHRoaXMgcGFja2FnZToKCi0gQSBmYWlybHkgc2ltcGxlIFtzaW5nbGUtZmlsZSBhcHAgcHJvdmlkaW5nIGEgSGVsbG8gV29ybGQgQVBJXShodHRwczovL2dpdGh1Yi5jb20vUHlsb25zL3B5cmFtaWRfb3BlbmFwaTMvdHJlZS9tYWluL2V4YW1wbGVzL3NpbmdsZWZpbGUpLgotIEEgc2xpZ2h0bHkgbW9yZSBbYnVpbHQtb3V0IGFwcCBwcm92aWRpbmcgYSBUT0RPIGFwcCBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9QeWxvbnMvcHlyYW1pZF9vcGVuYXBpMy90cmVlL21haW4vZXhhbXBsZXMvdG9kb2FwcCkuCi0gQW5vdGhlciBUT0RPIGFwcCBBUEksIGRlZmluZWQgdXNpbmcgYSBbWUFNTCBzcGVjIHNwbGl0IGludG8gbXVsdGlwbGUgZmlsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9QeWxvbnMvcHlyYW1pZF9vcGVuYXBpMy90cmVlL21haW4vZXhhbXBsZXMvc3BsaXRmaWxlKS4KCkFsbCBleGFtcGxlcyBjb21lIHdpdGggdGVzdHMgdGhhdCBleGhpYml0IHB5cmFtaWRfb3BlbmFwaSdzIGVycm9yIGhhbmRsaW5nIGFuZCB2YWxpZGF0aW9uIGNhcGFiaWxpdGllcy4KCkEgKipmdWxseSBidWlsdC1vdXQgYXBwKiosIHdpdGggMTAwJSB0ZXN0IGNvdmVyYWdlLCBwcm92aWRpbmcgYSBbUmVhbFdvcmxkLmlvXShodHRwczovL3JlYWx3b3JsZC5pbykgQVBJIGlzIGF2YWlsYWJsZSBhdCBbbml0ZW93ZWIvcHlyYW1pZC1yZWFsd29ybGQtZXhhbXBsZS1hcHBdKGh0dHBzOi8vZ2l0aHViLmNvbS9uaXRlb3dlYi9weXJhbWlkLXJlYWx3b3JsZC1leGFtcGxlLWFwcCkuIEl0IGlzIGEgSGVyb2t1LWRlcGxveWFibGUgUHlyYW1pZCBhcHAgdGhhdCBwcm92aWRlcyBhbiBBUEkgZm9yIGEgTWVkaXVtLmNvbS1saWtlIHNvY2lhbCBhcHAuIFlvdSBhcmUgZW5jb3VyYWdlZCB0byB1c2UgaXQgYXMgYSBzY2FmZm9sZCBmb3IgeW91ciBuZXh0IHByb2plY3QuCgojIyBEZXNpZ24gZGVmZW5zZQoKVGhlIGF1dGhvcnMgb2YgcHlyYW1pZF9vcGVuYXBpMyBiZWxpZXZlIHRoYXQgdGhlIGFwcHJvYWNoIG9mIHZhbGlkYXRpbmcgYSBtYW51YWxseS13cml0dGVuIEFQSSBkb2N1bWVudCBpcyBzdXBlcmlvciB0byB0aGUgYXBwcm9hY2ggb2YgZ2VuZXJhdGluZyB0aGUgQVBJIGRvY3VtZW50IGZyb20gUHl0aG9uIGNvZGUuIEhlcmUgYXJlIHRoZSByZWFzb25zOgoKMS4gQm90aCBnZW5lcmF0aW9uIGFuZCB2YWxpZGF0aW9uIGFnYWluc3QgYSBkb2N1bWVudCBhcmUgbG9zc3kgcHJvY2Vzc2VzLiBUaGUgdW5kZXJseWluZyBsaWJyYXJpZXMgcnVubmluZyB0aGUgZ2VuZXJhdGlvbi92YWxpZGF0aW9uIHdpbGwgYWx3YXlzIGhhdmUgc29tZXRoaW5nIG1pc3NpbmcuIEVpdGhlciBhIGZlYXR1cmUgZnJvbSB0aGUgbGF0ZXN0IE9wZW5BUEkgc3BlY2lmaWNhdGlvbiwgb3IgYW4gaW1wbGVtZW50YXRpb24gYnVnLiBIYXZpbmcgdG8gZm9yayB0aGUgdW5kZXJseWluZyBsaWJyYXJ5IGluIG9yZGVyIHRvIGdlbmVyYXRlIHRoZSBwYXJ0IG9mIHlvdXIgQVBJIGRvY3VtZW50IHRoYXQgbWlnaHQgb25seSBiZSBuZWVkZWQgZm9yIHRoZSBmcm9udGVuZCBpcyB1bmZvcnR1bmF0ZS4KCiAgICBWYWxpZGF0aW9uIG9uIHRoZSBvdGhlciBoYW5kIGFsbG93cyBvbmUgdG8gc2tpcCBwYXJ0cyBvZiB2YWxpZGF0aW9uIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LCBhbmQgbm90IGJsb2NrIGEgdGVhbSBmcm9tIHNoaXBwaW5nIHRoZSBkb2N1bWVudC4KCjIuIFRoZSB2YWxpZGF0aW9uIGFwcHJvYWNoIGRvZXMgc2FjcmlmaWNlIERSWS1uZXNzLCBhbmQgb25lIGhhcyB0byB3cml0ZSB0aGUgQVBJIGRvY3VtZW50IGFuZCB0aGVuIHRoZSAodmlldykgY29kZSBpbiBQeXJhbWlkLiBJdCBmZWVscyBhIGJpdCByZWR1bmRhbnQgYXQgZmlyc3QuIEhvd2V2ZXIsIHRoaXMgcHJvdmlkZXMgYSBjbGVhciBzZXBhcmF0aW9uIGJldHdlZW4gdGhlIGludGVudCBhbmQgdGhlIGltcGxlbWVudGF0aW9uLgoKMy4gVGhlIGdlbmVyYXRpb24gYXBwcm9hY2ggaGFzIHRoZSBkcmF3YmFjayBvZiBoYXZpbmcgdG8gd3JpdGUgUHl0aG9uIGNvZGUgZXZlbiBmb3IgcGFydHMgb2YgdGhlIEFQSSBkb2N1bWVudCB0aGF0IHRoZSBQeXJhbWlkIGJhY2tlbmQgZG9lcyBub3QgaGFuZGxlLCBhcyBpdCBtaWdodCBiZSBoYW5kbGVkIGJ5IGEgZGlmZmVyZW50IHN5c3RlbSwgb3IgYmUgc3BlY2lmaWMgb25seSB0byBkb2N1bWVudGF0aW9uIG9yIG9ubHkgdG8gdGhlIGNsaWVudCBzaWRlIG9mIHRoZSBBUEkuIFRoaXMgYmxvYXRzIHlvdXIgUHlyYW1pZCBjb2RlYmFzZSB3aXRoIGNvZGUgdGhhdCBkb2VzIG5vdCBiZWxvbmcgdGhlcmUuCgojIyBSdW5uaW5nIHRlc3RzCgpZb3UgbmVlZCB0byBoYXZlIFtwb2V0cnldKGh0dHBzOi8vcHl0aG9uLXBvZXRyeS5vcmcvKSBhbmQgUHl0aG9uIDMuMTAgJiAzLjEyIGluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUuIEFsbCBgTWFrZWZpbGVgIGNvbW1hbmRzIGFzc3VtZSB5b3UgaGF2ZSB0aGUgUG9ldHJ5IGVudmlyb25tZW50IGFjdGl2YXRlZCwgaS5lLiBgcG9ldHJ5IHNoZWxsYC4KCkFsdGVybmF0aXZlbHksIGlmIHlvdSB1c2UgW25peF0oaHR0cHM6Ly9uaXguZGV2L3R1dG9yaWFscy9kZWNsYXJhdGl2ZS1hbmQtcmVwcm9kdWNpYmxlLWRldmVsb3Blci1lbnZpcm9ubWVudHMpLCBydW4gYG5peC1zaGVsbGAgdG8gZHJvcCBpbnRvIGEgc2hlbGwgdGhhdCBoYXMgZXZlcnl0aGluZyBwcmVwYXJlZCBmb3IgZGV2ZWxvcG1lbnQuCgpUaGVuIHlvdSBjYW4gcnVuOgoKYGBgc2hlbGwKbWFrZSB0ZXN0cwpgYGAKCiMjIFJlbGF0ZWQgcGFja2FnZXMKClRoZXNlIHBhY2thZ2VzIHRhY2tsZSB0aGUgc2FtZSBwcm9ibGVtLXNwYWNlOgoKLSBbcHlyYW1pZF9vYXMzXShodHRwczovL2dpdGh1Yi5jb20va2F6dWtpL3B5cmFtaWQtb2FzMykgc2VlbXMgdG8gZG8gdGhpbmdzIHZlcnkgc2ltaWxhcmx5IHRvIHB5cmFtaWRfb3BlbmFwaTMsIGJ1dCB0aGUgZG9jdW1lbnRhdGlvbiBpcyBub3QgaW4gRW5nbGlzaCBhbmQgd2Ugc2FkbHkgY2FuJ3QgZnVsbHkgdW5kZXJzdGFuZCB3aGF0IGl0IGRvZXMgYnkganVzdCByZWFkaW5nIHRoZSBjb2RlLgotIFtweXJhbWlkX3N3YWdnZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdHJpZ2xpYS9weXJhbWlkX3N3YWdnZXIpIGRvZXMgYSBzaW1pbGFyCiAgdGhpbmcsIGJ1dCBmb3IgU3dhZ2dlciAyLjAgZG9jdW1lbnRzLgotIFtjb25uZXhpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS96YWxhbmRvL2Nvbm5leGlvbikgdGFrZXMgdGhlIHNhbWUgIndyaXRlIHNwZWMgZmlyc3QsIGNvZGUgc2Vjb25kIiBhcHByb2FjaCBhcyBweXJhbWlkX29wZW5hcGkzLCBidXQgaXMgYmFzZWQgb24gRmxhc2suCi0gW2JvdHRsZS1zd2FnZ2VyXShodHRwczovL2dpdGh1Yi5jb20vYW1wZWRhbmR3aXJlZC9ib3R0bGUtc3dhZ2dlcikgdGFrZXMgdGhlIHNhbWUgIndyaXRlIHNwZWMgZmlyc3QsIGNvZGUgc2Vjb25kIiBhcHByb2FjaCB0b28sIGJ1dCBpcyBiYXNlZCBvbiBCb3R0bGUuCi0gW3B5cmFtaWRfYXBpc3BlY10oaHR0cHM6Ly9naXRodWIuY29tL2VyZ28vcHlyYW1pZF9hcGlzcGVjKSB1c2VzIGdlbmVyYXRpb24gd2l0aAogIGhlbHAgb2YgYXBpc3BlYyBhbmQgdGhlIG1hcnNobWFsbG93IHZhbGlkYXRpb24gbGlicmFyeS4gU2VlIGFib3ZlIFt3aHkgd2UgcHJlZmVyIHZhbGlkYXRpb24gaW5zdGVhZCBvZiBnZW5lcmF0aW9uXSgjZGVzaWduLWRlZmVuc2UpLgoKIyMgRGVwcmVjYXRpb24gcG9saWN5CgpXZSBkbyBvdXIgYmVzdCB0byBmb2xsb3cgdGhlIHJ1bGVzIGJlbG93LgoKLSBTdXBwb3J0IHRoZSBsYXRlc3QgZmV3IHJlbGVhc2VzIG9mIFB5dGhvbiwgY3VycmVudGx5IFB5dGhvbiAzLjEwIHRocm91Z2ggMy4xMi4KLSBTdXBwb3J0IHRoZSBsYXRlc3QgZmV3IHJlbGVhc2VzIG9mIFB5cmFtaWQsIGN1cnJlbnRseSAxLjEwLjcgdGhyb3VnaCAyLjAuMi4KLSBTdXBwb3J0IHRoZSBsYXRlc3QgZmV3IHJlbGVhc2VzIG9mIGBvcGVuYXBpLWNvcmVgLCBjdXJyZW50bHkganVzdCAwLjE5LjAuCi0gU2VlIGBwb2V0cnkubG9ja2AgZm9yIGEgZnJvemVuLWluLXRpbWUga25vd24tZ29vZC1zZXQgb2YgYWxsIGRlcGVuZGVuY2llcy4KCiMjIFVzZSBpbiB0aGUgd2lsZAoKQSBjb3VwbGUgb2YgcHJvamVjdHMgdGhhdCB1c2UgcHlyYW1pZF9vcGVuYXBpMyBpbiBwcm9kdWN0aW9uOgoKLSBbUGFyZXRvIFNlY3VyaXR5IFRlYW0gRGFzaGJvYXJkIEFQSV0oaHR0cHM6Ly9kYXNoLnBhcmV0b3NlY3VyaXR5LmNvbS9hcGkvdjEpIC0gVGVhbSBEYXNoYm9hcmQgZm9yIFBhcmV0byBTZWN1cml0eSBtYWNPUyBzZWN1cml0eSBhcHAuCi0gW1NFTyBEb21haW4gRmluZGVyIEFQSV0oaHR0cHM6Ly9hcHAuc2VvZG9tYWluZmluZGVyLmNvbS9hcGkvdjEpIC0gQSB0b29sIGZvciBmaW5kaW5nIGV4cGlyZWQgZG9tYWlucyB3aXRoIFNFTyB2YWx1ZS4KLSBbUmFua2FseXplci5pb10oaHR0cHM6Ly9hcHAucmFua2FseXplci5pby9hcGkvdjEpIC0gTW9uaXRvciBTRU8gY2hhbmdlcyBhbmQgc3RyYXRlZ2llcyBvZiBjb21wZXRpdG9ycyB0byBpbXByb3ZlIHlvdXIgc2VhcmNoIHRyYWZmaWMuCi0gW0thZmthaSBBUEldKGh0dHBzOi8vYXBwLmthZmthaS5jb20vYXBpL3YxKSAtIFVzZXIgY29udHJvbCBwYW5lbCBmb3IgS2Fma2FpIHRleHQgZ2VuZXJhdGlvbiBzZXJ2aWNlLgotIFtPcGVuIG9uLWNoYWluIGRhdGEgQVBJXShodHRwczovL3RyYWRpbmdzdHJhdGVneS5haS9hcGkvZXhwbG9yZXIvKSAtIERlY2VudHJhbGlzZWQgZXhjaGFuZ2UgYW5kIGJsb2NrY2hhaW4gdHJhZGluZyBkYXRhIG9wZW4gQVBJLgotIFtNYXlldCBSWF0oaHR0cHM6Ly9hcHAubWF5ZXRyeC5jb20vYXBpL3YxKSAtIFZlbmRvciBtYW5hZ2VtZW50IHN5c3RlbSBmb3IgcGhhcm1hL21lZGljYWwgY2xpbmljYWwgdHJpYWxzLgo= readmeEtag: '"5256a27f27fdde8d1e3d3395ac05249aecd92536"' readmeLastModified: Tue, 29 Jul 2025 09:25:25 GMT repositoryId: 138299589 description: Pyramid addon for OpenAPI3 validation of requests and responses. created: '2018-06-22T12:20:57Z' updated: '2026-01-13T20:00:49Z' language: Python archived: false stars: 84 watchers: 12 forks: 47 owner: Pylons logo: https://avatars.githubusercontent.com/u/452227?v=4 license: MIT repoEtag: '"087af9a5c0806a23fee52f5f2cafb83d8c21e22d0a4f041b941de6e4c4c56ce9"' repoLastModified: Tue, 13 Jan 2026 20:00:49 GMT foundInMaster: true category: Testing id: 68586d443740aa8b483e2facfd87c65e - source: openapi3 tags repository: https://github.com/theoomoregbee/sails-hook-swagger-generator v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIEdlbmVyYXRvciBTYWlscyBIb29rClshW1RyYXZpc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90cmF2aXMvdGhlb29tb3JlZ2JlZS9zYWlscy1ob29rLXN3YWdnZXItZ2VuZXJhdG9yLnN2ZyldKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy90aGVvb21vcmVnYmVlL3NhaWxzLWhvb2stc3dhZ2dlci1nZW5lcmF0b3IpClshW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9zYWlscy1ob29rLXN3YWdnZXItZ2VuZXJhdG9yLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3NhaWxzLWhvb2stc3dhZ2dlci1nZW5lcmF0b3IpClshW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9zYWlscy1ob29rLXN3YWdnZXItZ2VuZXJhdG9yLnN2ZyldKCkKWyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kdC9zYWlscy1ob29rLXN3YWdnZXItZ2VuZXJhdG9yLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3NhaWxzLWhvb2stc3dhZ2dlci1nZW5lcmF0b3IpClshW3NlbWFudGljLXJlbGVhc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvJTIwJTIwJUYwJTlGJTkzJUE2JUYwJTlGJTlBJTgwLXNlbWFudGljLS1yZWxlYXNlLWUxMDA3OS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc2VtYW50aWMtcmVsZWFzZS9zZW1hbnRpYy1yZWxlYXNlKQoKClRoaXMgaGVscHMgdG8gY3JlYXRlIHN3YWdnZXIgZG9jdW1lbnRhdGlvbiBqc29uIHdoaWNoIGlzIGJhc2VkIGVudGlyZWx5IG9uIFN3YWdnZXIvT3BlbkFQSSBzcGVjaWZpY2F0aW9uIChzZWUgW2hlcmVdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykpLgpUaGUgaG9vayBwcm9kdWNlcyBzcGVjaWZpY2F0aW9uIGJhc2VkIHVwb24gT0FTIDMuMC4KCiFbXShzY3JlZW5zaG90L3N3YWdnZXItZG9jLmdpZikKCgojIyBJbnN0YWxsYXRpb24KYGBgc2gKJCBucG0gaW5zdGFsbCBzYWlscy1ob29rLXN3YWdnZXItZ2VuZXJhdG9yIC0tc2F2ZQpgYGAKCgojIyBEZW1vCkNvcHkgdGhlIGNvbnRlbnQgb2YgW2dlbmVyYXRlZFN3YWdnZXJdKHRlc3QvZml4dHVyZXMvZ2VuZXJhdGVkU3dhZ2dlci5qc29uKSBhbmQgcGFzdGUgaXQgaW4gW1N3YWdnZXIgT25saW5lIEVkaXRvcl0oaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pby8pLgoKCiMjIFVzYWdlClNpbXBseSBieSBsaWZ0aW5nIHlvdXIgc2FpbHMgYXBwIGBzYWlscyBsaWZ0YCwgYWZ0ZXIgbGlmdGluZyBvciBzdGFydGluZyB0aGUgYXBwLHRoZXJlIHNob3VsZCBiZSBgc3dhZ2dlci5qc29uYCB3aXRoaW4gKiouL3N3YWdnZXIqKiBmb2xkZXIuCgo+IG1ha2Ugc3VyZSAuL3N3YWdnZXIgZm9sZGVyIGlzIGFscmVhZHkgZXhpc3RpbmcuCgpDaGVjayB0aGUgKiouL3N3YWdnZXIvc3dhZ2dlci5qc29uKiogZm9yIGdlbmVyYXRlZCBzd2FnZ2VyIGRvY3VtZW50YXRpb24ganNvbiwgdGhlbiBoZWFkIHRvIFtTd2FnZ2VyIEVkaXRvcl0oaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pby8pLgoKIyMgR2VuZXJhdGVkIE91dHB1dAoKQnkgZGVmYXVsdCwgdGhlIFN3YWdnZXIgR2VuZXJhdG9yIFNhaWxzIEhvb2sgZ2VuZXJhdGVzOgoxLiBGdWxsIGF1dG9tYXRpYyBkb2N1bWVudGF0aW9uIGZvciBhbGwgU2FpbHMgQmx1ZXByaW50IHJvdXRlczsKMS4gRG9jdW1lbnRhdGlvbiBmb3IgYWxsIFNhaWxzCiAgIFthY3Rpb25zMl0oaHR0cHM6Ly9zYWlsc2pzLmNvbS9kb2N1bWVudGF0aW9uL2NvbmNlcHRzL2FjdGlvbnMtYW5kLWNvbnRyb2xsZXJzIz9hY3Rpb25zLTIpCiAgIGFjdGlvbnMgd2l0aCByb3V0ZXMgY29uZmlndXJlZCBpbiBgY29uZmlnL3JvdXRlcy5qc2A7IGFuZAoxLiBMaXN0aW5nIG9mIGFsbCByb3V0ZXMgY29uZmlndXJlZCBpbiBgY29uZmlnL3JvdXRlcy5qc2AgKGZ1bGwgZGV0YWlscyBjYW5ub3QgYmUgaW5mZXJyZWQKICAgZm9yIGN1c3RvbSByb3V0ZXMgd2l0aG91dCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGJlaW5nIHByb3ZpZGVkIC0gc2VlIGJlbG93KS4KMS4gQ3JlYXRpb24gb2YgZGVmYXVsdCB0YWdzIGZvciBwYXRocyBiYXNlZCB1cG9uIFNhaWxzIE1vZGVsIGFuZCBDb250cm9sbGVyIGBnbG9iYWxJZGAncy4KCiMjIFVzZSB3aXRoIFtTd2FnZ2VyIFVJXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aSkKClNlZSBbIzI4XShodHRwczovL2dpdGh1Yi5jb20vdGhlb29tb3JlZ2JlZS9zYWlscy1ob29rLXN3YWdnZXItZ2VuZXJhdG9yL2lzc3Vlcy8yOCkKCiMjIEFkZGluZy9DdXN0b21pc2luZyBHZW5lcmF0ZWQgT3V0cHV0CgpEb2N1bWVudGF0aW9uIGRldGFpbCBhbmQgY3VzdG9taXNhdGlvbiBvZiBtb3N0IGFzcGVjdHMgb2YgdGhlIGdlbmVyYXRlZCBTd2FnZ2VyIGNhbiBiZSBhY2hpZXZlZCBieSBhZGRpbmc6CjEuIFRvcC1sZXZlbCBjb25maWd1cmF0aW9uIHRvIGBjb25maWcvc3dhZ2dlcmdlbmVyYXRvci5qc2AuIFRoaXMgcHJvdmlkZXMgZGlyZWN0IEpTT04KICAgdXNlZCBhcyB0aGUgdGVtcGxhdGUgZm9yIHRoZSBvdXRwdXQgU3dhZ2dlci9PcGVuQVBJLgoxLiBPYmplY3RzIHdpdGggdGhlIGtleSBgc3dhZ2dlcmAgdG8gY3VzdG9tIHJvdXRlIGNvbmZpZ3VyYXRpb24sIGNvbnRyb2xsZXIgZmlsZXMsIGFjdGlvbgogICBmdW5jdGlvbnMsIG1vZGVsIGRlZmluaXRpb25zIGFuZCBtb2RlbCBhdHRyaWJ1dGUgZGVmaW5pdGlvbnMuIFRoZSBgc3dhZ2dlcmAgZWxlbWVudCBtdXN0IGJlIG9mIHR5cGUKICAgW1N3YWdnZXJBY3Rpb25BdHRyaWJ1dGVdKC4vbGliL2ludGVyZmFjZXMudHMjTDU1KSBmb3IgYWN0aW9ucyAoYmFzZWQgb24gT3BlbkFwaS5PcGVyYXRpb24pCiAgIG9yIFtTd2FnZ2VyTW9kZWxTY2hlbWFBdHRyaWJ1dGVdKC4vbGliL2ludGVyZmFjZXMudHMjTDY2KSBmb3IgbW9kZWwgc2NoZW1hcyAoYmFzZWQgb24gT3BlbkFwaS5VcGRhdGVkU2NoZW1hKS4KMS4gSlNEb2MgKFtzd2FnZ2VyLWpzZG9jXShodHRwczovL2dpdGh1Yi5jb20vU3VybmV0L3N3YWdnZXItanNkb2MpKSBgQHN3YWdnZXJgIGNvbW1lbnRzCiAgIHRvIGNvbnRyb2xsZXIvYWN0aW9uIGZpbGVzIGFuZCBtb2RlbCBmaWxlcy4KClRvcC1sZXZlbCBTd2FnZ2VyL09wZW5BUEkgZGVmaW5pdGlvbnMgZm9yIGB0YWdzYCBhbmQgYGNvbXBvbmVudHNgIG1heSBiZSBhZGRlZCBpbiBhbGwgYHN3YWdnZXJgIG9iamVjdHMKYWJvdmUgYW5kIGluIGFsbCBKU0RvYyBgQHN3YWdnZXJgIGRvY3VtZW50YXRpb24gY29tbWVudHMuIFRoaXMgZW5hYmxlcyB0aGUgZGVmaW5pdGlvbiBvZiB0b3AtbGV2ZWwgZWxlbWVudHMuCgpTZWUgYmVsb3cgZm9yIGRldGFpbHMuCgojIyBDb25maWd1cmF0aW9ucwoKSXQgY29tZXMgd2l0aCBzb21lIGRlZmF1bHQgc2V0dGluZ3Mgd2hpY2ggY2FuIGJlIG92ZXJyaWRkZW4gYnkgY3JlYXRpbmcgYGNvbmZpZy9zd2FnZ2VyZ2VuZXJhdG9yLmpzYDoKYGBgamF2YXNjcmlwdAptb2R1bGUuZXhwb3J0c1snc3dhZ2dlci1nZW5lcmF0b3InXSA9IHsKICAgIGRpc2FibGVkOiBmYWxzZSwKICAgIHN3YWdnZXJKc29uUGF0aDogJy4vc3dhZ2dlci9zd2FnZ2VyLmpzb24nLAogICAgc3dhZ2dlcjogewogICAgICAgIG9wZW5hcGk6ICczLjAuMCcsCiAgICAgICAgaW5mbzogewogICAgICAgICAgICB0aXRsZTogJ1N3YWdnZXIgSnNvbicsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyBhIGdlbmVyYXRlZCBzd2FnZ2VyIGpzb24gZm9yIHlvdXIgc2FpbHMgcHJvamVjdCcsCiAgICAgICAgICAgIHRlcm1zT2ZTZXJ2aWNlOiAnaHR0cDovL2V4YW1wbGUuY29tL3Rlcm1zJywKICAgICAgICAgICAgY29udGFjdDoge25hbWU6ICdUaGVvcGhpbHVzIE9tb3JlZ2JlZScsIHVybDogJ2h0dHA6Ly9naXRodWIuY29tL3RoZW80dScsIGVtYWlsOiAndGhlbzR1QHltYWlsLmNvbSd9LAogICAgICAgICAgICBsaWNlbnNlOiB7bmFtZTogJ0FwYWNoZSAyLjAnLCB1cmw6ICdodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAuaHRtbCd9LAogICAgICAgICAgICB2ZXJzaW9uOiAnMS4wLjAnCiAgICAgICAgfSwKICAgICAgICBzZXJ2ZXJzOiBbCiAgICAgICAgICAgIHsgdXJsOiAnaHR0cDovL2xvY2FsaG9zdDoxMzM3LycgfQogICAgICAgIF0sCiAgICAgICAgZXh0ZXJuYWxEb2NzOiB7dXJsOiAnaHR0cHM6Ly90aGVvb21vcmVnYmVlLmdpdGh1Yi5pby8nfQogICAgfSwKICAgIGRlZmF1bHRzOiB7CiAgICAgICAgcmVzcG9uc2VzOiB7CiAgICAgICAgICAgICcyMDAnOiB7IGRlc2NyaXB0aW9uOiAnVGhlIHJlcXVlc3RlZCByZXNvdXJjZScgfSwKICAgICAgICAgICAgJzQwNCc6IHsgZGVzY3JpcHRpb246ICdSZXNvdXJjZSBub3QgZm91bmQnIH0sCiAgICAgICAgICAgICc1MDAnOiB7IGRlc2NyaXB0aW9uOiAnSW50ZXJuYWwgc2VydmVyIGVycm9yJyB9CiAgICAgICAgfQogICAgfSwKICAgIGV4Y2x1ZGVEZXByZWNhdGVkUHV0Qmx1ZXByaW50Um91dGVzOiB0cnVlLAogICAgaW5jbHVkZVJvdXRlOiBmdW5jdGlvbihyb3V0ZUluZm8pIHsgcmV0dXJuIHRydWU7IH0sCiAgICB1cGRhdGVCbHVlcHJpbnRBY3Rpb25UZW1wbGF0ZXM6IGZ1bmN0aW9uKGJsdWVwcmludEFjdGlvblRlbXBsYXRlcykgeyAuLi4gfSwKICAgIHBvc3RQcm9jZXNzOiBmdW5jdGlvbihzcGVjaWZpY2F0aW9ucykgeyAuLi4gfQp9OwpgYGAKCk5vdGVzIG9uIHRoZSB1c2Ugb2YgY29uZmlndXJhdGlvbjoKCiogYGRpc2FibGVkYCBhdHRyaWJ1dGUgaXMgdXNlZCB0byBkaXNhYmxlIHRoZSBtb2R1bGUgKGUuZyB5b3UgbWF5IHdhbnQgdG8gZGlzYWJsZSBpdCBvbiBwcm9kdWN0aW9uKS4KKiBgc3dhZ2dlckpzb25QYXRoYCB3aGVyZSB0byBnZW5lcmF0ZSB0aGUgYHN3YWdnZXIuanNvbmAgZmlsZSB0bzsgZGVmYXVsdHMgdG8gYHNhaWxzLmNvbmZpZy5hcHBQYXRoICsgJy9zd2FnZ2VyL3N3YWdnZXIuanNvbidgCiAgIGFuZCBvdXRwdXQgZmlsZSB3aWxsIG5vdCBiZSB3cml0dGVuIGlmIGVtcHR5L251bGwvdW5kZWZpbmVkIChzZWUgYHBvc3RQcm9jZXNzYCBiZWxvdyBmb3IgYWx0ZXJuYXRlIHNhdmUgbWVjaGFuaXNtKS4KKiBgc3dhZ2dlcmAgb2JqZWN0IGlzIHRlbXBsYXRlIGZvciB0aGUgU3dhZ2dlci9PcGVuQVBJIG91dHB1dC4gSXQgZGVmYXVsdHMgdG8gdGhlIG1pbmltYWwgY29udGVudCBhYm92ZS4KICAgQ2hlY2sgU3dhZ2dlci9PcGVuQVBJIHNwZWNpZmljYXRpb24gZm9yIG1vcmUsIGluIGNhc2UgeW91IHdhbnQgdG8gZXh0ZW5kIGl0LgogICBHZW5lcmFsbHksIHRoaXMgaG9vayBwcm92aWRlcyBzZW5zaWJsZSBkZWZhdWx0cyBmb3IgYXMgbXVjaCBhcyBwb3NzaWJsZSBidXQgeW91IG1heQogICBvdmVycmlkZSB0aGVtIGluIHRoaXMgbG9jYXRpb24gb3IgaW4gYW55IG9mIHRoZSBtZWNoYW5pc21zIGV4cGxhaW5lZCBiZWxvdy4KKiBgZGVmYXVsdHNgIG9iamVjdCBzaG91bGQgY29udGFpbiB0aGUgYHJlc3BvbnNlc2AgZWxlbWVudDsgZGVmYXVsdHMgdG8gdGhlIGFib3ZlIGlmIG5vdCBzcGVjaWZpZWQuCiogYGV4Y2x1ZGVEZXByZWNhdGVkUHV0Qmx1ZXByaW50Um91dGVzYCBzaG91bGQKICBbZGVwcmVjYXRlZF0oaHR0cHM6Ly9zYWlsc2pzLmNvbS9kb2N1bWVudGF0aW9uL3JlZmVyZW5jZS9ibHVlcHJpbnQtYXBpL3VwZGF0ZSM/bm90ZXMpIGBQVVRgIGJsdWVwcmludAogIHJvdXRlcyBiZSBleGNsdWRlZCBmcm9tIGdlbmVyYXRlZCBTd2FnZ2VyIG91dHB1dDsgZGVmYXVsdHMgdG8gYHRydWVgLgoqIGBpbmNsdWRlUm91dGVgIGZ1bmN0aW9uIHVzZWQgdG8gZmlsdGVyIHJvdXRlcyB0byBiZSBpbmNsdWRlZCBpbiBnZW5lcmF0ZWQgU3dhZ2dlciBvdXRwdXQ7IHNlZSBhZHZhbmNlZCBzZWN0aW9uIGJlbG93LgoqIGB1cGRhdGVCbHVlcHJpbnRBY3Rpb25UZW1wbGF0ZXNgIGFsbG93cyBjdXN0b21pc2F0aW9uIG9mIHRoZSB0ZW1wbGF0ZXMgdXNlZCB0byBnZW5lcmF0ZSBTd2FnZ2VyIGZvciBibHVlcHJpbnRzOyBzZWUgYWR2YW5jZWQgc2VjdGlvbiBiZWxvdy4KKiBgcG9zdFByb2Nlc3NgIGFsbG93cyBhbiBhbHRlcm5hdGUgbWVjaGFuaXNtIGZvciBzYXZpbmcgYW5kL29yIG1vZGlmaWNhdGlvbiBvZiB0aGUgZ2VuZXJhdGVkIFN3YWdnZXIgb3V0cHV0IGJlZm9yZSBpdCBpcyB3cml0dGVuIHRvCiAgIHRoZSBvdXRwdXQgZmlsZTsgc2VlIGFkdmFuY2VkIHNlY3Rpb24gYmVsb3cuCgoKIyMgQ3VzdG9tIFJvdXRlIENvbmZpZ3VyYXRpb24KCkRvY3VtZW50YXRpb24gZGV0YWlsIGFuZCBjdXN0b21pc2F0aW9uIG9mIG1vc3QgYXNwZWN0cyBvZiB0aGUgZ2VuZXJhdGVkIFN3YWdnZXIgZm9yCltjdXN0b20gcm91dGVzXShodHRwczovL3NhaWxzanMuY29tL2RvY3VtZW50YXRpb24vY29uY2VwdHMvcm91dGVzL2N1c3RvbS1yb3V0ZXMpIG1heSBiZSBhY2hpZXZlZCBieToKCjEuIEFkZGluZyBhbiBvYmplY3Qgd2l0aCB0aGUga2V5IGBzd2FnZ2VyYCAobXVzdCBiZSBvZiB0eXBlIFtTd2FnZ2VyQWN0aW9uQXR0cmlidXRlXSguL2xpYi9pbnRlcmZhY2VzLnRzI0w1NSkgZm9yIGFjdGlvbnMsIGJhc2VkIG9uIE9wZW5BcGkuT3BlcmF0aW9uKSB0byBpbmRpdmlkdWFsIHJvdXRlIGNvbmZpZ3VyYXRpb25zIGluIGBjb25maWcvcm91dGVzLmpzYC4KMS4gQWRkaW5nIGFuIG9iamVjdCB3aXRoIHRoZSBrZXkgYHN3YWdnZXJgIChtdXN0IGJlIG9mIHR5cGUgW1N3YWdnZXJDb250cm9sbGVyQXR0cmlidXRlXSguL2xpYi9pbnRlcmZhY2VzLnRzI0w3NikpIHRvIHRoZSBleHBvcnRzIG9mIGEgY29udHJvbGxlciBmaWxlLCBzdGFuZGFsb25lIGFjdGlvbiBmaWxlIG9yIGFjdGlvbnMyIGZpbGUuCjEuIEFkZGluZyBhbiBvYmplY3Qgd2l0aCB0aGUga2V5IGBzd2FnZ2VyYCAobXVzdCBiZSBvZiB0eXBlIFtTd2FnZ2VyTW9kZWxBdHRyaWJ1dGVdKC4vbGliL2ludGVyZmFjZXMudHMjTDg3KSkgdG8gdGhlIGV4cG9ydHMgb2YgYSBtb2RlbCBmaWxlLgoxLiBBZGRpbmcgSlNEb2MgYEBzd2FnZ2VyYCBjb21tZW50cyB0byBTYWlscwogIFttb2RlbCBmaWxlc10oaHR0cHM6Ly9zYWlsc2pzLmNvbS9kb2N1bWVudGF0aW9uL2NvbmNlcHRzL21vZGVscy1hbmQtb3JtL21vZGVscyksCiAgW2NvbnRyb2xsZXIgZmlsZXNdKGh0dHBzOi8vc2FpbHNqcy5jb20vZG9jdW1lbnRhdGlvbi9jb25jZXB0cy9hY3Rpb25zLWFuZC1jb250cm9sbGVycyM/Y29udHJvbGxlcnMpLAogIFtzdGFuZGFsb25lIGFjdGlvbiBmaWxlc10oaHR0cHM6Ly9zYWlsc2pzLmNvbS9kb2N1bWVudGF0aW9uL2NvbmNlcHRzL2FjdGlvbnMtYW5kLWNvbnRyb2xsZXJzIz9zdGFuZGFsb25lLWFjdGlvbnMpIG9yCiAgW2FjdGlvbnMyIGZpbGVzXShodHRwczovL3NhaWxzanMuY29tL2RvY3VtZW50YXRpb24vY29uY2VwdHMvYWN0aW9ucy1hbmQtY29udHJvbGxlcnMjP2FjdGlvbnMtMik7IHNwZWNpZmljYWxseToKICAgIC0gSlNEb2MgYEBzd2FnZ2VyYCBkb2N1bWVudGF0aW9uIHVuZGVyIHRoZSBgL3thY3Rpb25OYW1lfWAgcGF0aCBmb3IgdGhlIHJvdXRlIChjb250cm9sbGVycy9hY3Rpb25zKSwgb3IKICAgIC0gSlNEb2MgYEBzd2FnZ2VyYCBkb2N1bWVudGF0aW9uIHVuZGVyIHRoZSBgL3tibHVlcHJpbnRBY3Rpb259YCBwYXRoIGZvciB0aGUgcm91dGUgKG1vZGVscyksIG9yCiAgICAtIEpTRG9jIGBAc3dhZ2dlcmAgZG9jdW1lbnRhdGlvbiB1bmRlciBgdGFnc2AgYW5kIGBjb21wb25lbnRzYCBwYXRocyBmb3IgYWRkaW5nIHRvIHRoZSB0b3AtbGV2ZWwgU3dhZ2dlci9PcGVuQVBJIGRlZmluaXRpb25zLgoKCiMjIyBDdXN0b20gUm91dGUgQ29uZmlndXJhdGlvbiBpbiBgY29uZmlnL3JvdXRlcy5qc2AKCklmIHlvdSB3YW50IHRvIGFkZCBleHRyYSBjb25maWd1cmF0aW9uIHRvIGEgcm91dGUsIGl0IGNhbiBiZSBkb25lIHZpYSB0aGUgYGNvbmZpZy9yb3V0ZXMuanNgLCBzaW5jZSBTYWlscyB1c2VzIGRpZmZlcmVudCBbcm91dGUgdGFyZ2V0c10oaHR0cHM6Ly9zYWlsc2pzLmNvbS9kb2N1bWVudGF0aW9uL2NvbmNlcHRzL3JvdXRlcy9jdXN0b20tcm91dGVzIz9yb3V0ZS10YXJnZXQpLCB3ZSBjYW4gbGV2ZXJhZ2UgdGhlIHJvdXRlIG9iamVjdCB0YXJnZXQgdG8gZXh0ZW5kL292ZXJyaWRlIG91ciBzd2FnZ2VyIGNvbmZpZ3VyYXRpb24gYnkgYWRkaW5nIGFuIG9iamVjdCB3aXRoIGEga2V5IGBzd2FnZ2VyYC4KCkZvciBleGFtcGxlLCBpbiBgY29uZmlnL3JvdXRlcy5qc2A6CmBgYGphdmFzY3JpcHQKewogICdwb3N0IC91c2VyL2xvZ2luJzogewogICAgY29udHJvbGxlcjogJ1VzZXJDb250cm9sbGVyJywKICAgIGFjdGlvbjogJ2xvZ2luJywKICAgIHN3YWdnZXI6IHsKICAgICAgc3VtbWFyeTogJ0F1dGhlbnRpY2F0aW9uJywKICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIGZvciBhdXRoZW50aWNhdGlvbiBvZiBhbnkgdXNlcicsCiAgICAgIHRhZ3M6IFsgJ1RhZyBOYW1lJyBdLAogICAgICByZXF1ZXN0Qm9keTogewogICAgICAgIGNvbnRlbnQ6IHsKICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogewogICAgICAgICAgICBzY2hlbWE6IHsKICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7CiAgICAgICAgICAgICAgICBlbWFpbDogeyB0eXBlOiAnc3RyaW5nJyB9LAogICAgICAgICAgICAgICAgcGFzc3dvcmQ6IHsgdHlwZTogJ3N0cmluZycsIGZvcm1hdDogJ3Bhc3N3b3JkJyB9CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICByZXF1aXJlZDogWyAnZW1haWwnLCAncGFzc3dvcmQnIF0sCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sCiAgICAgIHBhcmFtZXRlcnM6IFt7CiAgICAgICAgaW46ICdxdWVyeScsCiAgICAgICAgbmFtZTogJ2ZpcnN0TmFtZScsCiAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgc2NoZW1hOiB7IHR5cGU6ICdzdHJpbmcnIH0sCiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIGEgY3VzdG9tIHJlcXVpcmVkIHBhcmFtZXRlcicKICAgICAgfV0sCiAgICAgIHJlc3BvbnNlczogewogICAgICAgICcyMDAnOiB7CiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSByZXF1ZXN0ZWQgcmVzb3VyY2UnLAogICAgICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7CiAgICAgICAgICAgICAgICBzY2hlbWE6IHsKICAgICAgICAgICAgICAgICAgdHlwZTogJ2FycmF5JywKICAgICAgICAgICAgICAgICAgaXRlbXM6IHsgJyRyZWYnOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvc29tZURhdGFUeXBlJyB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgJzQwNCc6IHsgZGVzY3JpcHRpb246ICdSZXNvdXJjZSBub3QgZm91bmQnIH0sCiAgICAgICAgJzUwMCc6IHsgZGVzY3JpcHRpb246ICdJbnRlcm5hbCBzZXJ2ZXIgZXJyb3InIH0KICAgICAgfQogICAgfQogIH0KfQpgYGAKCiMjIyBDdXN0b20gUm91dGUgQ29uZmlndXJhdGlvbiBpbiBDb250cm9sbGVyIG9yIEFjdGlvbiBmaWxlcwoKRG9jdW1lbnRhdGlvbiBkZXRhaWwgYW5kIGN1c3RvbWlzYXRpb24gb2YgbW9zdCBhc3BlY3RzIG9mIHRoZSBnZW5lcmF0ZWQgU3dhZ2dlciBtYXkgYmUgYWRkZWQgdG8KW2NvbnRyb2xsZXIgZmlsZXNdKGh0dHBzOi8vc2FpbHNqcy5jb20vZG9jdW1lbnRhdGlvbi9jb25jZXB0cy9hY3Rpb25zLWFuZC1jb250cm9sbGVycyM/Y29udHJvbGxlcnMpLApbc3RhbmRhbG9uZSBhY3Rpb24gZmlsZXNdKGh0dHBzOi8vc2FpbHNqcy5jb20vZG9jdW1lbnRhdGlvbi9jb25jZXB0cy9hY3Rpb25zLWFuZC1jb250cm9sbGVycyM/c3RhbmRhbG9uZS1hY3Rpb25zKSBvcgpbYWN0aW9uczIgZmlsZXNdKGh0dHBzOi8vc2FpbHNqcy5jb20vZG9jdW1lbnRhdGlvbi9jb25jZXB0cy9hY3Rpb25zLWFuZC1jb250cm9sbGVycyM/YWN0aW9ucy0yKSBhcyBmb2xsb3dzOgoKMS4gQWRkaW5nIGFuIG9iamVjdCB3aXRoIHRoZSBrZXkgYHN3YWdnZXJgIGFkZGVkIHRvIGEgY29udHJvbGxlciBmaWxlIGFjdGlvbiBmdW5jdGlvbi4KMS4gQWRkaW5nIGFuIG9iamVjdCB3aXRoIHRoZSBrZXkgYHN3YWdnZXJgIHRvIHRoZSBleHBvcnRzIG9mIGEgY29udHJvbGxlciBmaWxlLCBzdGFuZGFsb25lCiAgIGFjdGlvbiBmaWxlIG9yIGFjdGlvbnMyIGZpbGU6CiAgIC0gRm9yIGNvbnRyb2xsZXIgZmlsZXMsIGFjdGlvbnMgYXJlIHJlZmVyZW5jZWQgYnkgYWRkaW5nIG9iamVjdHMga2V5ZWQgb24gYHN3YWdnZXIuYWN0aW9ucy57YWN0aW9uTmFtZX1gCiAgICAgbmFtZS4gU2VlIFtVc2VyQ29udHJvbGxlci5qc10oLi9hcGkvY29udHJvbGxlcnMvVXNlckNvbnRyb2xsZXIuanMpOwogICAtIEZvciBzdGFuZGFsb25lIGFjdGlvbiBvciBhY3Rpb25zMiBmaWxlcywgcGxhY2luZyBjb250ZW50IGluIHRoZQogICAgIGBzd2FnZ2VyLmFjdGlvbnMue2FjdGlvbkZpbGVOYW1lfGFjdGlvbnMyRmlsZU5hbWV9YCBvYmplY3QuIFNlZQogICAgIFthY3Rpb25zMi5qc10oLi9hcGkvY29udHJvbGxlcnMvc3ViZGlyL2FjdGlvbnMyLmpzKQogICAgICoqKk5vdGUqKjogYGFjdGlvbkZpbGVOYW1lfGFjdGlvbnMyRmlsZU5hbWVgIG11c3QgY29ycmVzcG9uZCB0byB0aGUgZmlsZW5hbWUqOwogICAtIEZvciBhbGwgY29udHJvbGxlci9hY3Rpb24gZmlsZXMsIGFkZGluZyBwZXItYWN0aW9uIGRvY3VtZW50YXRpb24gdG8gYmUKICAgICBhcHBsaWVkIHRvICoqYWxsKiogYWN0aW9ucyB1c2luZyB0aGUga2V5IGBzd2FnZ2VyLmFjdGlvbnMuYWxsQWN0aW9uc2AKICAgICBlLmcuIHVzZSB0aGlzIHRvIGFwcGx5IGNvbW1vbiB0YWdzIHRvIGFsbCBhY3Rpb25zIGZvciBhIGNvbnRyb2xsZXIuCiAgIC0gQWRkaW5nIGRvY3VtZW50YXRpb24gdW5kZXIgYHRhZ3NgIGFuZCBgY29tcG9uZW50c2AgZWxlbWVudHMgZm9yIGFkZGluZyB0byB0aGUKICAgICB0b3AtbGV2ZWwgU3dhZ2dlci9PcGVuQVBJIGRlZmluaXRpb25zLiBTZWUgZXhhbXBsZSBpbiBlaXRoZXIKICAgICBbVXNlckNvbnRyb2xsZXIuanNdKC4vYXBpL2NvbnRyb2xsZXJzL1VzZXJDb250cm9sbGVyLmpzKQogICAgIG9yIFthY3Rpb25zMi5qc10oLi9hcGkvY29udHJvbGxlcnMvc3ViZGlyL2FjdGlvbnMyLmpzKS4KMS4gQWRkaW5nIEpTRG9jIGBAc3dhZ2dlcmAgY29tbWVudHMgdG8gY29udHJvbGxlciBmaWxlLCBzdGFuZGFsb25lIGFjdGlvbiBmaWxlIG9yIGFjdGlvbnMyIGZpbGU6CiAgIC0gSlNEb2MgYEBzd2FnZ2VyYCBkb2N1bWVudGF0aW9uIHVuZGVyIHRoZSBgL3thY3Rpb25OYW1lfWAgcGF0aCBmb3IgdGhlIGNvbnRyb2xsZXIgZmlsZSBhY3Rpb25zLAogICAtIEpTRG9jIGBAc3dhZ2dlcmAgZG9jdW1lbnRhdGlvbiB1bmRlciB0aGUgYC97YWN0aW9uRmlsZU5hbWV8YWN0aW9uczJGaWxlTmFtZX1gIHBhdGggZm9yIHN0YW5kYWxvbmUgYWN0aW9uIG9yIGFjdGlvbnMyIGZpbGVzLAogICAtIEpTRG9jIGBAc3dhZ2dlcmAgZG9jdW1lbnRhdGlvbiB1bmRlciB0aGUgYC9hbGxBY3Rpb25zYCBwYXRoIHRvIGJlIGFwcGxpZWQgdG8gKiphbGwqKiBhY3Rpb25zIGZvciB0aGUgY29udHJvbGxlciwgb3IKICAgLSBKU0RvYyBgQHN3YWdnZXJgIGRvY3VtZW50YXRpb24gdW5kZXIgYHRhZ3NgIGFuZCBgY29tcG9uZW50c2AgcGF0aHMgZm9yIGFkZGluZyB0byB0aGUgdG9wLWxldmVsIFN3YWdnZXIvT3BlbkFQSSBkZWZpbml0aW9ucy4KCkFuIGBleGNsdWRlYCBwcm9wZXJ0eSwgc2V0IHRvIGB0cnVlYCwgbWF5IGJlIGFkZGVkIHRvIGFueSBgc3dhZ2dlcmAgZWxlbWVudCBvciBgQHN3YWdnZXJgIEpTRG9jCmFjdGlvbiBkb2N1bWVudGF0aW9uIHRvIGV4Y2x1ZGUgdGhhdCBhY3Rpb24gZnJvbSB0aGUgZ2VuZXJhdGVkIFN3YWdnZXIuIFNlZSBleGFtcGxlIGluCltOb21vZGVsQ29udHJvbGxlci5qc10oYXBpL2NvbnRyb2xsZXJzL05vbW9kZWxDb250cm9sbGVyLmpzKS4KClRoZSBTd2FnZ2VyIGRlZmluaXRpb24gZm9yIGVhY2ggYWN0aW9uIGlzIG1lcmdlZCBpbiB0aGUgb3JkZXIgYWJvdmUgdG8gZm9ybSB0aGUgZmluYWwKZGVmaW5pdGlvbiwgd2l0aCBgY29uZmlnL3JvdXRlcy5qc2AgdGFraW5nIGhpZ2hlc3QgcHJlY2VuZGVuY2UgYW5kICoqZWFybGllcioqIGRlZmluaXRpb25zCmFib3ZlIHRha2luZyBwcmVjZWRlbmNlIG92ZXIgbGF0ZXIuCgojIyMjIEZvciBhY3Rpb25zMiBmaWxlczoKMS4gSW5wdXRzIGFyZSBwYXJzZWQgdG8gZ2VuZXJhdGUgcGFyYW1ldGVyIGRvY3VtZW50YXRpb24uCjIuIEV4aXRzIGFyZSBwYXJzZWQgdG8gZ2VuZXJhdGUgcmVzcG9uc2UgZG9jdW1lbnRhdGlvbi4KMy4gQm90aCBtYXkgYmUgY3VzdG9taXNlZC9vdmVycmlkZGVuIGJ5IHNwZWNpZnlpbmcgcGFyYW1ldGVycyBhbmQvb3IgcmVzcG9uc2VzIGluIHRoZSBgc3dhZ2dlcmAgb2JqZWN0CiAgIGluIGFjdGlvbnMyIGZpbGUuCjQuIElucHV0cyBtYXkgYWxzbyBhZGQgYW4gb2JqZWN0IHdpdGggdGhlIGtleSBgbWV0YS5zd2FnZ2VyYCB0byBkb2N1bWVudCB0aGUgYXR0cmlidXRlcwogICBTd2FnZ2VyL09wZW5BUEkgKipzY2hlbWEqKiBhc3NvY2lhdGVkIHdpdGggdGhlIGlucHV0IHZhbHVlLiBTZWUgZXhhbXBsZSBpbgogICBbYWN0aW9uczIuanNdKC4vYXBpL2NvbnRyb2xsZXJzL3N1YmRpci9hY3Rpb25zMi5qcykuCjUuIElucHV0cyBtYXkgYmUgZXhjbHVkZWQgZnJvbSB0aGUgZ2VuZXJhdGVkIFN3YWdnZXIgYnkgc2V0dGluZyBgbWV0YS5zd2FnZ2VyLmV4Y2x1ZGVgIHRvIGB0cnVlYC4KNi4gSW5wdXRzIG1heSBzcGVjaWZ5ICp3aGVyZSogdGhlIGlucHV0IHNob3VsZCBiZSBpbmNsdWRlZCB3aXRoaW4gdGhlIGdlbmVyYXRlZCBTd2FnZ2VyIHVzaW5nIHRoZSBrZXkKICAgYG1ldGEuc3dhZ2dlci5pbmAuIFRoZSB2YWx1ZXMgYHF1ZXJ5YC9gaGVhZGVyYC9gcGF0aGAvYGNvb2tpZWAgbWF5IGJlIHVzZWQgdG8gcHJvZHVjZSBTd2FnZ2VyIG9wZXJhdGlvbgogICBwYXJhbWV0ZXJzIGFuZCB0aGUgdmFsdWUgYGJvZHlgIG1heSBiZSB1c2VkIHRvIHByb2R1Y2UgYHJlcXVlc3RCb2R5YCBzY2hlbWEgcHJvcGVydGllcwogICAodmFsaWQgZm9yIFBVVC9QT1NUL1BBVENIIG9wZXJhdGlvbnMgb25seSkuCgpGb3IgZXhhbXBsZSwgZm9yIGEgcm91dGUgY29uZmlndXJlZCBhczoKYGBgamF2YXNjcmlwdAptb2R1bGUuZXhwb3J0cy5yb3V0ZXMgPSB7CiAgICAnL2FwaS92MS9hdXRoL3Rva2Vucyc6ICdBdXRoQ29udHJvbGxlci50b2tlbnMnLAp9OwpgYGAKClRoZSBgdG9rZW5zYCBhY3Rpb24gbWlnaHQgYmUgZG9jdW1lbnRlZCBpbiBhIENvbnRyb2xsZXIgYGFwaS9jb250cm9sbGVycy9BdXRoQ29udHJvbGxlci5qc2AgYXMgZm9sbG93czoKYGBgamF2YXNjcmlwdApmdW5jdGlvbiB0b2tlbnMocmVxLCByZXMpIHsKICAgIC4uLgp9Cgptb2R1bGUuZXhwb3J0cyA9IHsKICAgIHRva2VuczogdG9rZW5zLAogICAgc3dhZ2dlcjogewogICAgICBhY3Rpb25zOiB7CiAgICAgICAgdG9rZW5zOiB7CiAgICAgICAgICAgIHRhZ3M6IFsgJ0F1dGgnIF0sCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUm91dGUgZGVzY3JpcHRpb24uLi4nCiAgICAgICAgfQogICAgICB9CiAgICAgIHRhZ3M6IFsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5hbWU6ICdBdXRoJywKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTW9kdWxlIGRlc2NyaXB0aW9uIC4uLicsCiAgICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgY29tcG9uZW50czogewogICAgICAgIC4uLgogICAgICB9CiAgICB9Cn07CmBgYAoKT3IsIGFsdGVybmF0ZWx5IHVzaW5nIEpTRG9jOgpgYGBqYXZhc2NyaXB0Ci8qKgogKiBAc3dhZ2dlcgogKgogKiAvdG9rZW5zOgogKiAgIGRlc2NyaXB0aW9uOiBSb3V0ZSBkZXNjcmlwdGlvbi4uLgogKiAgIHRhZ3M6CiAqICAgICAtIEF1dGgKICogdGFnczoKICogICAtIG5hbWU6IEF1dGgKICogICAgIGRlc2NyaXB0aW9uOiBNb2R1bGUgZGVzY3JpcHRpb24uLi4KICovCmZ1bmN0aW9uIHRva2VucyhyZXEsIHJlcykgewogICAgLi4uCn0KCm1vZHVsZS5leHBvcnRzID0gewogICAgdG9rZW5zOiB0b2tlbnMKfTsKYGBgCgojIyBCbHVlcHJpbnQgUm91dGUgQ29uZmlndXJhdGlvbgoKRG9jdW1lbnRhdGlvbiBkZXRhaWwgYW5kIGN1c3RvbWlzYXRpb24gb2YgbW9zdCBhc3BlY3RzIG9mIHRoZSBnZW5lcmF0ZWQgU3dhZ2dlciBmb3IKW2JsdWVwcmludCByb3V0ZXNdKGh0dHBzOi8vc2FpbHNqcy5jb20vZG9jdW1lbnRhdGlvbi9jb25jZXB0cy9ibHVlcHJpbnRzL2JsdWVwcmludC1yb3V0ZXMpIG1heSBiZSBhY2hpZXZlZCBieToKCjEuIEFkZGluZyBhbiBvYmplY3Qgd2l0aCB0aGUga2V5IGBzd2FnZ2VyYCB0byBpbmRpdmlkdWFsIG1vZGVscyBlLmcuIGBhcGkvbW9kZWxzL21vZGVsTmFtZS5qc2A6CiAgIC0gQWRkaW5nIGRvY3VtZW50YXRpb24gdG8gdGhlIG1vZGVsJ3MgU3dhZ2dlciAqKnNjaGVtYSoqIHVzaW5nIHRoZSBrZXkgYHN3YWdnZXIubW9kZWxTY2hlbWFgCiAgICAgZS5nLiB1c2UgdGhpcyB0byBhcHBseSBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIHZpYSB0aGUgYGRlc2NyaXB0aW9uYCBmaWVsZDsKICAgLSBJbiBhZGRpdG9uIHRvIHRoZSBtb2RlbCdzIHNjaGVtYSwgdGhlIGtleSBgc3dhZ2dlci5tb2RlbFNjaGVtYWAgbWF5IGJlIHVzZWQgdG8gc3BlY2lmeQogICAgIHRhZyBuYW1lcyAoYXMgYSBgc3RyaW5nW11gKSB0byBiZSBhc3NpZ25lZCBhbGwgYmx1ZXByaW50IGFjdGlvbnMgZm9yIHRoZSBtb2RlbC4KICAgICBUaGlzIGlzIGEgKm5vbi1zdGFuZGFyZCogY29udmVuaWVuY2UgZnVuY3Rpb24gaS5lLiBpbiBTd2FnZ2VyL09wZW5BUEkgeW91IG5lZWQgdG8KICAgICBleHBsaWNpdGx5IGFkZCB0YWdzIHRvICoqZWFjaC9ldmVyeSoqIE9wZW5BUEkuT3BlcmF0aW9uOwogICAtIEFkZGluZyBwZXItYWN0aW9uIGRvY3VtZW50YXRpb24gYnkgYWRkaW5nIG9iamVjdHMga2V5ZWQgb24KICAgICBgc3dhZ2dlci5hY3Rpb25zLntibHVlcHJpbnRBY3Rpb259YCBuYW1lOwogICAtIEFkZGluZyBhY3Rpb24gZG9jdW1lbnRhdGlvbiB0byAqKmFsbCoqIGFjdGlvbnMgdXNpbmcgdGhlIGtleSBgc3dhZ2dlci5hY3Rpb25zLmFsbEFjdGlvbnNgCiAgICAgZS5nLiB1c2UgdGhpcyB0byBhcHBseSBjb21tb24gYGV4dGVybmFsRG9jc2AgdG8gYWxsIGJsdWVwcmludCBhY3Rpb25zIGZvciB0aGUgbW9kZWw7IG9yCiAgIC0gQWRkaW5nIGRvY3VtZW50YXRpb24gdW5kZXIgYHN3YWdnZXIudGFnc2AgYW5kIGBzd2FnZ2VyLmNvbXBvbmVudHNgIGVsZW1lbnRzIGZvciBhZGRpbmcgdG8gdGhlIHRvcC1sZXZlbCBTd2FnZ2VyL09wZW5BUEkgZGVmaW5pdGlvbnMuCjEuIEFkZGluZyBkb2N1bWVudGF0aW9uLXNwZWNpZmljIGZpZWxkcyB0byBtb2RlbCBhdHRyaWJ1dGVzIChzdXBwb3J0cyBgZGVzY3JpcHRpb25gLCBgbW9yZUluZm9VcmxgIGFuZCBgZXhhbXBsZWApLgogICBOb3RlIHRoYXQgYXBwbGljYWJsZSBTYWlscyBbYXR0cmlidXRlc10oaHR0cHM6Ly9zYWlsc2pzLmNvbS9kb2N1bWVudGF0aW9uL2NvbmNlcHRzL21vZGVscy1hbmQtb3JtL2F0dHJpYnV0ZXMpLAogICBbYXV0b21pZ3JhdGlvbnNdKGh0dHBzOi8vc2FpbHNqcy5jb20vZG9jdW1lbnRhdGlvbi9jb25jZXB0cy9tb2RlbHMtYW5kLW9ybS9hdHRyaWJ1dGVzIz9hdXRvbWlncmF0aW9ucykgYW5kCiAgIFt2YWxpZGF0aW9uc10oaHR0cHM6Ly9zYWlsc2pzLmNvbS9kb2N1bWVudGF0aW9uL2NvbmNlcHRzL21vZGVscy1hbmQtb3JtL3ZhbGlkYXRpb25zKSBhcmUgYWxzbyBwYXJzZWQuCjEuIEFkZGluZyBhbiBvYmplY3Qgd2l0aCB0aGUga2V5IGBtZXRhLnN3YWdnZXJgIHRvIGluZGl2aWR1YWwgbW9kZWwgYXR0cmlidXRlcyB0byBkb2N1bWVudAogICB0aGUgYXR0cmlidXRlcyBTd2FnZ2VyL09wZW5BUEkgKipzY2hlbWEqKi4gU2VlIGV4YW1wbGUgaW4gW1BldC5qc10oLi9hcGkvbW9kZWxzL1BldC5qcykuCjEuIEFkZGluZyBKU0RvYyBgQHN3YWdnZXJgIGNvbW1lbnRzIHRvIG1vZGVsIGZpbGVzOgogICAtIEpTRG9jIGBAc3dhZ2dlcmAgZG9jdW1lbnRhdGlvbiB1bmRlciB0aGUgYC97Z2xvYmFsSWR9YCB0byBhZGQgZG9jdW1lbnRhdGlvbiB0bwogICAgIHRoZSBtb2RlbCdzIFN3YWdnZXIgKipzY2hlbWEqKiAob3IgdGFncyBhcyBub3RlZCBhYm92ZSksCiAgIC0gSlNEb2MgYEBzd2FnZ2VyYCBkb2N1bWVudGF0aW9uIHVuZGVyIHRoZSBgL3tibHVlcHJpbnRBY3Rpb259YCB0byBhZGQgcGVyLWFjdGlvbgogICAgIGRvY3VtZW50YXRpb24gZm9yIHRoZQogICAgIFttb2RlbCBibHVlcHJpbnQgYWN0aW9uc10oaHR0cHM6Ly9zYWlsc2pzLmNvbS9kb2N1bWVudGF0aW9uL2NvbmNlcHRzL2JsdWVwcmludHMvYmx1ZXByaW50LWFjdGlvbnMpLAogICAtIEpTRG9jIGBAc3dhZ2dlcmAgZG9jdW1lbnRhdGlvbiB1bmRlciB0aGUgYC9hbGxBY3Rpb25zYCBwYXRoIHRvIGJlIGFwcGxpZWQgdG8gKiphbGwqKgogICAgIGJsdWVwcmludCBhY3Rpb25zIGZvciB0aGUgbW9kZWwsIG9yCiAgIC0gSlNEb2MgYEBzd2FnZ2VyYCBkb2N1bWVudGF0aW9uIHVuZGVyIGB0YWdzYCBhbmQgYGNvbXBvbmVudHNgIHBhdGhzIGZvciBhZGRpbmcgdG8gdGhlCiAgICAgdG9wLWxldmVsIFN3YWdnZXIvT3BlbkFQSSBkZWZpbml0aW9ucy4KCkFuIGBleGNsdWRlYCBwcm9wZXJ0eSwgc2V0IHRvIGB0cnVlYCwgbWF5IGJlIGFkZGVkIHRvIGFueSBgc3dhZ2dlcmAgZWxlbWVudCBvZiBgQHN3YWdnZXJgIEpTRG9jCmFjdGlvbiBkb2N1bWVudGF0aW9uIHRvIGV4Y2x1ZGUgdGhlIG1vZGVsICpjb21wbGV0ZWx5KiAoZXhjbHVkZSB0aGUgKipzY2hlbWEqKikgb3IgYSBzcGVjaWZpYwpibHVlcHJpbnQgYWN0aW9uIGZyb20gdGhlIGdlbmVyYXRlZCBTd2FnZ2VyLiBTZWUgZXhhbXBsZSBpbiBbT2xkUGV0LmpzXShhcGkvbW9kZWxzL09sZFBldC5qcykuCgpJbmRpdmlkdWFsIG1vZGVsIGF0dHJpYnV0ZXMgbWF5IGJlIGV4Y2x1ZGVkIGZyb20gdGhlIGdlbmVyYXRlZCBTd2FnZ2VyIGJ5IHNldHRpbmcKYG1ldGEuc3dhZ2dlci5leGNsdWRlYCB0byBgdHJ1ZWAuIFNlZSBleGFtcGxlIGluIFtQZXQuanNdKGFwaS9tb2RlbHMvUGV0LmpzKS4KCk9wZW5BUEkgMyBzcGVjaWZpZXMgdGhlICoqKkFueSBUeXBlKioqIGJ5IHRoZSBhYnNlbmNlIG9mIHRoZSBgdHlwZWAgcHJvcGVydHkgaW4gYSBzY2hlbWE7CnRoaXMgbWF5IGJlIGFjaGlldmVkIGJ5IHNldHRpbmcgYSBtb2RlbCBhdHRyaWJ1dGUncyBgbWV0YS5zd2FnZ2VyLnR5cGVgIHZhbHVlIHRvIGBudWxsYC4KU2VlIGV4YW1wbGUgaW4gW1VzZXIuanNdKGFwaS9tb2RlbHMvVXNlci5qcykuCgpUaGUgU3dhZ2dlciBkZWZpbml0aW9uIGZvciBlYWNoIGFjdGlvbiBpcyBtZXJnZWQgaW4gdGhlIG9yZGVyIGFib3ZlIHRvIGZvcm0gdGhlIGZpbmFsCmRlZmluaXRpb24sIHdpdGggYGNvbmZpZy9yb3V0ZXMuanNgIHRha2luZyBoaWdoZXN0IHByZWNlbmRlbmNlIGFuZCAqKmVhcmxpZXIqKiBkZWZpbml0aW9ucwphYm92ZSB0YWtpbmcgcHJlY2VkZW5jZSBvdmVyIGxhdGVyLgoKRm9yIGV4YW1wbGUsIGluIGEgbW9kZWwgYGFwaS9tb2RlbHMvVXNlci5qc2A6CgpgYGBqYXZhc2NyaXB0Ci8qKgogKiBAc3dhZ2dlcgogKgogKiAvVXNlcjoKICogICB0YWdzOgogKiAgICAgLSBUYWcgTmFtZQogKiAvZmluZG9uZToKICogICBleHRlcm5hbERvY3M6CiAqICAgICB1cmw6IGh0dHBzOi8vZG9jcy5jb20vaGVyZQogKi8KbW9kdWxlLmV4cG9ydHMgPSB7CiAgYXR0cmlidXRlczogewogICAgdWlkOiB7CiAgICAgIHR5cGU6ICdzdHJpbmcnLAogICAgICBleGFtcGxlOiAnMDEyMzQ1JywKICAgICAgZGVzY3JpcHRpb246ICdBIHVuaXF1ZSBpZGVudGlmaWVyJywKICAgIH0KICB9LAogIHN3YWdnZXI6IHsKICAgIGFjdGlvbnM6IHsKICAgICAgY3JlYXRlOiB7IC4uLiB9LAogICAgfSwKICAgIG1vZGVsU2NoZW1hOiB7IC4uLiB9LAogICAgdGFnczogWy4uLl0KICAgIGNvbXBvbmVudHM6IHsuLi59CiAgfQp9OwpgYGAKCk5vdGUgdGhhdCBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgYWRkZWQgdG8gdGhlIGBjb21wb25lbnRzL3BhcmFtZXRlcnNgIGlmIHRoZXkgYXJlIG5vdApwcm92aWRlZCBpbiBgY29uZmlnL3N3YWdnZXJnZW5lcmF0b3IuanNgIChleHByZXNzZWQgYXMgT3BlbkFQSSByZWZlcmVuY2VzKToKCmBgYGphdmFzY3JpcHQKWwogIHsgJHJlZjogJyMvY29tcG9uZW50cy9wYXJhbWV0ZXJzL1doZXJlUXVlcnlQYXJhbScgfSwKICB7ICRyZWY6ICcjL2NvbXBvbmVudHMvcGFyYW1ldGVycy9MaW1pdFF1ZXJ5UGFyYW0nIH0sCiAgeyAkcmVmOiAnIy9jb21wb25lbnRzL3BhcmFtZXRlcnMvU2tpcFF1ZXJ5UGFyYW0nIH0sCiAgeyAkcmVmOiAnIy9jb21wb25lbnRzL3BhcmFtZXRlcnMvU29ydFF1ZXJ5UGFyYW0nIH0sCiAgeyAkcmVmOiAnIy9jb21wb25lbnRzL3BhcmFtZXRlcnMvU2VsZWN0UXVlcnlQYXJhbScgfSwKICB7ICRyZWY6ICcjL2NvbXBvbmVudHMvcGFyYW1ldGVycy9Qb3B1bGF0ZVF1ZXJ5UGFyYW0nIH0sCl0KYGBgCgpOb3RlIHRoYXQgd2hlbiBnZW5lcmF0aW5nIFN3YWdnZXIvT3BlbkFQSSBkb2N1bWVudGF0aW9uIGZvciBibHVlcHJpbnQgcm91dGVzLCB0aGUgaG9vayBhbHNvCmdlbmVyYXRlczoKCjEuIFNjaGVtYXMgZm9yICoqbW9kZWxzKiosIHdoaWNoIG1heSBiZSByZWZlcmVuY2VkIHVzaW5nIHRoZSBmb3JtIGB7ICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9tb2RlbE5hbWUnIH1gLgoyLiBQYXJhbWV0ZXJzIGZvciBtb2RlbCAqKnByaW1hcnkga2V5cyoqLCB3aGljaCBtYXkgYmUgcmVmZXJlbmNlZCB1c2luZyB0aGUgZm9ybSBgeyAkcmVmOiAnIy9jb21wb25lbnRzL3BhcmFtZXRlcnMvTW9kZWxQS1BhcmFtLW1vZGVsTmFtZScgfWAuCgpUaGVzZSBtYXkgYmUgcmUtdXNlZCAocmVmZXJlbmNlZCkgaWYvYXMgYXBwbGljYWJsZSB3aXRoaW4gY3VzdG9tIHJvdXRlIGRvY3VtZW50YXRpb24uCgoKIyMgSGFuZGxpbmcgVG9wLUxldmVsIFN3YWdnZXIgRGVmaW50aW9ucyAoVGFncyBhbmQgQ29tcG9uZW50cykKCllvdSBhcmUgYWJsZSB0byBhZGQgdG8gdGhlIHRvcC1sZXZlbCBTd2FnZ2VyL09wZW5BUEkgZGVmaW5pdGlvbnMgZm9yIGB0YWdzYCBhbmQgYGNvbXBvbmVudHNgIGluIGFsbCBgc3dhZ2dlcmAgb2JqZWN0cwpkZXRhaWxlZCBhYm92ZSBhbmQgaW4gYWxsIEpTRG9jIGBAc3dhZ2dlcmAgZG9jdW1lbnRpb24gY29tbWVudHMuCgpBbGwgYHN3YWdnZXJgIG9iamVjdHMgbWF5IGNvbnRhaW4gdGhlIGVsZW1lbnRzIGB0YWdzYCBhbmQgYGNvbXBvbmVudHNgKCpleGNlcHQgdGhlIG9uZXMgc3BlY2lmaWVkIGluIGBjb25maWcucm91dGVzLmpzKikgZS5nLgoKYGBgamF2YXNjcmlwdAp7CiAgdGFnczogWwogICAgewogICAgICBuYW1lOiAnVGVzdCBNb2R1bGUnLAogICAgICBkZXNjcmlwdGlvbjogJ01vZHVsZSBkZXNjcmlwdGlvbiAuLi4nLAogICAgICBleHRlcm5hbERvY3M6IHsgdXJsOiAnaHR0cHM6Ly9kb2NzLmNvbS90ZXN0JyB9CiAgICB9CiAgXSwKICBjb21wb25lbnRzOiB7CiAgICBzY2hlbWFzOiB7CiAgICAgIHRlc3Q6IHsgLi4uIH0KICAgIH0KICB9Cn0KYGBgCgpTaW1pbGFybHksIEpTRG9jIGBAc3dhZ2dlcmAgdGFncyBtYXkgZGVmaW5lIGB0YWdzYCBhbmQgYGNvbXBvbmVudHNgOgoKYGBgamF2YXNjcmlwdAovKioKICogQHN3YWdnZXIKICoKICogdGFnczoKICogICAtIG5hbWU6IFRlc3QgTW9kdWxlCiAqICAgICBkZXNjcmlwdGlvbjogfAogKiAgICAgICBNb2R1bGUgZGVzY3JpcHRpb24KICogICAgICAgKGNvbnRpbnVlZCkuCiAqCiAqICAgICAgIEFub3RoZXIgcGFyYWdyYXBoLgogKgogKiAgICAgZXh0ZXJuYWxEb2NzOgogKiAgICAgICB1cmw6IGh0dHBzOi8vZG9jcy5jb20vdGVzdAogKiAgICAgICBkZXNjcmlwdGlvbjogUmVmZXIgdG8gdGhlc2UgZG9jcwogKgogKiBjb21wb25lbnRzOgogKiAgIHNjaGVtYXM6CiAqICAgICB0ZXN0OgogKiAgICAgICAuLi4KICovCmBgYAoKIyMjIFRhZ3MgSGFuZGxpbmcKClRhZ3MgYXJlIGFkZGVkIHRvIHRoZSB0b3AtbGV2ZWwgU3dhZ2dlci9PcGVuQVBJIGRlZmluaXRpb25zIGFzIGZvbGxvd3M6CjEuIElmIGEgdGFncyB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSAqKmRvZXMgbm90KiogZXhpc3QsIGl0IGlzIGFkZGVkLgoxLiBXaGVyZSBhIHRhZyB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSAqKmRvZXMqKiBleGlzdCwgZWxlbWVudHMgX29mIHRoYXQgdGFnXyB0aGF0IGRvIG5vdCBleGlzdCBhcmUgYWRkZWQKICAgZS5nLiBgZGVzY3JpcHRpb25gIGFuZCBgZXh0ZXJuYWxEb2NzYCBlbGVtZW50cy4KCk5vdGUgdGhhdCBhIGZpbmFsICpjbGVhbi11cCogcGhhc2UgaXMgcnVuIGFmdGVyIHByb2Nlc3NpbmcsIHdoaWNoIHBlcmZvcm1zIHRoZSBmb2xsb3dpbmc6CjEuIFJlbW92YWwgb2YgdW5yZWZlcmVuY2VkIHRhZ3M7IGFuZAoyLiBDcmVhdGlvbiBvZiB0YWdzIHJlZmVyZW5jZWQgYnV0IGFyZSBub3QgZGVmaW5lZC4KCiMjIyBDb21wb25lbnQgRWxlbWVudCBIYW5kbGluZwoKRWxlbWVudHMgb2YgY29tcG9uZW50cyBhcmUgYWRkZWQgdG8gdGhlIHRvcC1sZXZlbCBTd2FnZ2VyL09wZW5BUEkgZGVmaW5pdGlvbnMgYXMgZm9sbG93czoKMS4gRWxlbWVudHMgb2YgdGhlIGNvbXBvbmVudCBkZWZpbml0aW9uIHJlZmVyZW5jZSAoc2NoZW1hcywgcGFyYW1ldGVycywgZXRjKSBhcmUgYWRkZWQgd2hlcmUKICAgdGhleSAqKmRvIG5vdCBleGlzdCoqLgoxLiBFeGlzdGluZyBlbGVtZW50cyBhcmUgKipub3QqKiBvdmVyd3JpdHRlbiBvciBtZXJnZWQuCgpGb3IgZXhhbXBsZSwgdGhlIGVsZW1lbnQgYGNvbXBvbmVudHMuc2NoZW1hcy5wZXRgIHdpbGwgYmUgYWRkZWQgYXMgcGFydCBvZiBhIG1lcmdlIHByb2Nlc3MsCmJ1dCB0aGUgY29udGVudHMgb2YgbXVsdGlwbGUgZGVmaW5pdGlvbnMgb2YgYHBldGAgKip3aWxsIG5vdCoqIGJlIG1lcmdlZC4KClRoZSBmb2xsb3dpbmcgZWxlbWVudHMgKGZyb20gdGhlIE9wZW5BUEkgMyBzcGVjaWZpY2F0aW9uKSBhcmUgaGFuZGxlZDoKYGBgamF2YXNjcmlwdApsZXQgY29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSA9IHsKICAgIC8vIFJldXNhYmxlIHNjaGVtYXMgKGRhdGEgbW9kZWxzKQogICAgc2NoZW1hczoge30sCiAgICAvLyBSZXVzYWJsZSBwYXRoLCBxdWVyeSwgaGVhZGVyIGFuZCBjb29raWUgcGFyYW1ldGVycwogICAgcGFyYW1ldGVyczoge30sCiAgICAvLyBTZWN1cml0eSBzY2hlbWUgZGVmaW5pdGlvbnMgKHNlZSBBdXRoZW50aWNhdGlvbikKICAgIHNlY3VyaXR5U2NoZW1lczoge30sCiAgICAvLyBSZXVzYWJsZSByZXF1ZXN0IGJvZGllcwogICAgcmVxdWVzdEJvZGllczoge30sCiAgICAvLyBSZXVzYWJsZSByZXNwb25zZXMsIHN1Y2ggYXMgNDAxIFVuYXV0aG9yaXplZCBvciA0MDAgQmFkIFJlcXVlc3QKICAgIHJlc3BvbnNlczoge30sCiAgICAvLyBSZXVzYWJsZSByZXNwb25zZSBoZWFkZXJzCiAgICBoZWFkZXJzOiB7fSwKICAgIC8vIFJldXNhYmxlIGV4YW1wbGVzCiAgICBleGFtcGxlczoge30sCiAgICAvLyBSZXVzYWJsZSBsaW5rcwogICAgbGlua3M6IHt9LAogICAgLy8gUmV1c2FibGUgY2FsbGJhY2tzCiAgICBjYWxsYmFja3M6IHt9LAp9OwpgYGAKCgojIyBBZHZhbmNlZCBGaWx0ZXJpbmcvUHJvY2Vzc2luZyBvZiBHZW5lcmF0ZWQgU3dhZ2dlcgoKVGhyZWUgbWVjaGFuaXNtcyBhcmUgcHJvdmlkZWQgdG8gZW5hYmxlIGFkdmFuY2luZyBmaWx0ZXJpbmcgb2YgdGhlIFN3YWdnZXIgZ2VuZXJhdGlvbiBwcm9jZXNzOgoxLiBBbiBgaW5jbHVkZVJvdXRlKClgIGZ1bmN0aW9uIHVzZWQgdG8gZmlsdGVyIHJvdXRlcyB0byBiZSBpbmNsdWRlZCBpbiBnZW5lcmF0ZWQgU3dhZ2dlciBvdXRwdXQuCjEuIEFuIGB1cGRhdGVCbHVlcHJpbnRBY3Rpb25UZW1wbGF0ZXMoKWAgZnVuY3Rpb24gYWxsb3dzIGN1c3RvbWlzYXRpb24gb2YgdGhlIHRlbXBsYXRlcyB1c2VkIHRvIGdlbmVyYXRlIFN3YWdnZXIgZm9yIGJsdWVwcmludHMuCjEuIEEgYHBvc3RQcm9jZXNzKClgIGZ1bmN0aW9uIGFsbG93cyBhbiBhbHRlcm5hdGUgbWVjaGFuaXNtIGZvciBzYXZpbmcgYW5kL29yIG1vZGlmaWNhdGlvbiBvZiB0aGUgZ2VuZXJhdGVkIFN3YWdnZXIgb3V0cHV0IGJlZm9yZSBpdCBpcyB3cml0dGVuIHRvIHRoZSBvdXRwdXQgZmlsZS4KCkVhY2ggaXMgY29uZmlndXJlZCBpbiBgY29uZmlnL3N3YWdnZXJnZW5lcmF0b3IuanNgLgoKIyMjIFJvdXRlIEluZm9ybWF0aW9uCgpUaGlzIGhvb2sgcGFyc2VzIGFsbCByb3V0ZXMsIGN1c3RvbSBhbmQgYmx1ZXByaW50LCBiZWZvcmUgY29tbWVuY2luZyB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgU3dhZ2dlciBvdXRwdXQuCkVhY2ggcm91dGUgaXMgZGVzY3JpYmVkIGJ5IGEgYFN3YWdnZXJSb3V0ZUluZm9gIG9iamVjdAooc2VlIGRlZmludGlvbiBbaGVyZV0oLi9saWIvaW50ZXJmYWNlcy50cyNMMTg0KSk6CgpgYGB0eXBlc2NyaXB0CmV4cG9ydCBpbnRlcmZhY2UgU3dhZ2dlclJvdXRlSW5mbyB7CiAgbWlkZGxld2FyZVR5cGU6IE1pZGRsZXdhcmVUeXBlOyAvLzwgb25lIG9mIGFjdGlvbnxibHVlcHJpbnQKCiAgdmVyYjogSFRUUE1ldGhvZFZlcmI7IC8vPCBvbmUgb2YgYWxsfGdldHxwb3N0fHB1dHxwYXRjaHxkZWxldGUKICBwYXRoOiBzdHJpbmc7IC8vPCBmdWxsIFNhaWxzIFVSTCBhcyBwZXIgc2FpbHMuZ2V0VXJsRm9yKCkgaW5jbHVkaW5nIHByZWZpeAogIHZhcmlhYmxlczogc3RyaW5nW107IC8vPCBsaXN0IG9mIEFMTCB2YXJpYWJsZXMgZXh0cmFjdGVkIGZyb20gcGF0aCBlLmcuIGAvcGV0LzppZGAgLS0+IGBpZGAKICBvcHRpb25hbFZhcmlhYmxlczogc3RyaW5nW107IC8vPCBsaXN0IG9mIG9wdGlvbmFsIHZhcmlhYmxlcyBmcm9tIHBhdGggZS5nLiBgL3BldC86aWQ/YAoKICBhY3Rpb246IHN0cmluZzsgLy88IGVpdGhlciBibHVlcHJpbnQgYWN0aW9uIChlLmcuICdmaW5kJykgb3IgYWN0aW9uIGlkZW50aXR5IChlLmcuICdzdWJkaXIvcmVwb3J0aW5nL3J1bicpCiAgYWN0aW9uVHlwZTogQWN0aW9uVHlwZTsgLy88IG9uZSBvZiBibHVlcHJpbnR8c2hvcnRjdXRCbHVlcHJpbnR8Y29udHJvbGxlcnxzdGFuZGFsb25lfGFjdGlvbnMyfGZ1bmN0aW9uCiAgYWN0aW9uczJNYWNoaW5lPzogU2FpbHMuQWN0aW9uczJNYWNoaW5lOyAvLzwgZm9yIGFjdGlvblR5cGUgPT09ICdhY3Rpb25zMicsIGRldGFpbHMgb2YgdGhlIGFjdGlvbjIgbWFjaGluZQoKICBtb2RlbD86IFN3YWdnZXJTYWlsc01vZGVsOyAvLzwgcmVmZXJlbmNlIHRvIFNhaWxzIE1vZGVsIChibHVlcHJpbnRzIG9ubHkpCiAgYXNzb2NpYXRpb25BbGlhc2VzPzogc3RyaW5nW107IC8vPCBhc3NvY2lhdGlvbiBhdHRyaWJ1dGUgbmFtZXMgKHJlbGV2YW50IGJsdWVwcmludCByb3V0ZXMgb25seSkKCiAgZGVmYXVsdFRhZ05hbWU/OiBzdHJpbmc7IC8vPCBkZWZhdWx0IHRhZyBuYW1lIGZvciByb3V0ZSwgaWYgYW55LCBiYXNlZCBvbiBTYWlscyBNb2RlbCBvciBDb250cm9sbGVyCgogIHN3YWdnZXI/OiBTd2FnZ2VyQWN0aW9uQXR0cmlidXRlOyAvLzwgcGVyLXJvdXRlIFN3YWdnZXIgKE9wZW5BcGkgT3BlcmF0aW9uKQp9CmBgYAoKT3RoZXIgaW50ZXJmYWNlcyBmb3IgbW9kZWxzLCBgc3dhZ2dlcmAgZWxlbWVudHMgZXRjIG1heSBiZSBmb3VuZCBpbiBbaW50ZXJmYWNlcy50c10oLi9saWIvaW50ZXJmYWNlcy50cykuCgoKIyMjIFJvdXRlIEZpbHRlcmluZwoKVGhlIGBpbmNsdWRlUm91dGUocm91dGVJbmZvKTogYm9vbGVhbmAgZnVuY3Rpb24gbWF5IGJlIHVzZWQgdG8gc2VsZWN0IHdoaWNoIHJvdXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIGdlbmVyYXRlZCBTd2FnZ2VyIG91dHB1dC4KCkZvciBleGFtcGxlOgpgYGBqYXZhc2NyaXB0Cm1vZHVsZS5leHBvcnRzWydzd2FnZ2VyLWdlbmVyYXRvciddID0gewogIGluY2x1ZGVSb3V0ZTogKHJvdXRlSW5mbykgPT4gewogICAgbGV0IGMgPSByb3V0ZUluZm8uY29udHJvbGxlcjsKICAgIGlmKCFjKSByZXR1cm4gdHJ1ZTsKICAgIGlmKGMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd1c2VyJykpIHJldHVybiB0cnVlOwogICAgcmV0dXJuIGZhbHNlOwogIH0KfQpgYGAKCiMjIyBDdXN0b21pc2luZyBCbHVlcHJpbnQgQWN0aW9uIFRlbXBsYXRlcwoKVGhlIHRlbXBsYXRlcyB1c2VkIGZvciBnZW5lcmF0aW5nIFN3YWdnZXIgZm9yIGVhY2ggU2FpbHMgYmx1ZXByaW50IGFjdGlvbiByb3V0ZSBtYXkgYmUKY3VzdG9taXNlZCAvIG1vZGlmaWVkIC8gYWRkZWQgdG8gdXNpbmcgdGhlIGB1cGRhdGVCbHVlcHJpbnRBY3Rpb25UZW1wbGF0ZXNgIGNvbmZpZyBvcHRpb24KZS5nLiB0byBzdXBwb3J0IGN1c3RvbSBibHVlcHJpbnQgYWN0aW9ucy9yb3V0ZXMuCgpGb3IgZXhhbXBsZToKYGBgamF2YXNjcmlwdAptb2R1bGUuZXhwb3J0c1snc3dhZ2dlci1nZW5lcmF0b3InXSA9IHsKICB1cGRhdGVCbHVlcHJpbnRBY3Rpb25UZW1wbGF0ZXM6IGZ1bmN0aW9uKGJsdWVwcmludEFjdGlvblRlbXBsYXRlcykgewogICAgYmx1ZXByaW50QWN0aW9uVGVtcGxhdGVzLnNlYXJjaCA9IHsgLi4uIH07CiAgICByZXR1cm4gYmx1ZXByaW50QWN0aW9uVGVtcGxhdGVzOwogIH0KfQpgYGAKClRoZSBgYmx1ZXByaW50QWN0aW9uVGVtcGxhdGVzYCBvYmplY3QgY29udGFpbnMga2V5cyBvZiB0aGUgYmx1ZXByaW50ICoqYWN0aW9uIG5hbWVzKioKYW5kIHZhbHVlcyBhcyBwZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlIChyZWZlciB0byB0aGUKW3NvdXJjZSBjb2RlXShsaWIvdHlwZS1mb3JtYXR0ZXIuanMjTDcwKSBmb3IgdGhlIGRlZmF1bHQgdGVtcGxhdGVzKToKCmBgYGphdmFzY3JpcHQKbGV0IGJsdWVwcmludEFjdGlvblRlbXBsYXRlcyA9IHsKICBmaW5kb25lOiB7CiAgICBzdW1tYXJ5OiAnR2V0IHtnbG9iYWxJZH0gKGZpbmQgb25lKScsCiAgICBkZXNjcmlwdGlvbjogJ0xvb2sgdXAgdGhlICoqe2dsb2JhbElkfSoqIHJlY29yZCB3aXRoIHRoZSBzcGVjaWZpZWQgSUQuJywKICAgIGV4dGVybmFsRG9jczogewogICAgICB1cmw6ICdodHRwczovL3NhaWxzanMuY29tL2RvY3VtZW50YXRpb24vcmVmZXJlbmNlL2JsdWVwcmludC1hcGkvZmluZC1vbmUnLAogICAgICBkZXNjcmlwdGlvbjogJ1NlZSBodHRwczovL3NhaWxzanMuY29tL2RvY3VtZW50YXRpb24vcmVmZXJlbmNlL2JsdWVwcmludC1hcGkvZmluZC1vbmUnCiAgICB9LAogICAgcGFyYW1ldGVyczogWwogICAgICAncHJpbWFyeUtleVBhdGhQYXJhbWV0ZXInLCAvLyBzcGVjaWFsIGNhc2U7IGZpbHRlcmVkIGFuZCBzdWJzdGl0dXRlZCBkdXJpbmcgZ2VuZXJhdGlvbiBwaGFzZQogICAgICB7ICRyZWY6ICcjL2NvbXBvbmVudHMvcGFyYW1ldGVycy9MaW1pdFF1ZXJ5UGFyYW0nIH0sCiAgICBdLAogICAgcmVzdWx0RGVzY3JpcHRpb246ICdSZXNwb25kcyB3aXRoIGEgc2luZ2xlICoqe2dsb2JhbElkfSoqIHJlY29yZCBhcyBhIEpTT04gZGljdGlvbmFyeScsCiAgICBub3RGb3VuZERlc2NyaXB0aW9uOiAnUmVzcG9uc2UgZGVub3RpbmcgKip7Z2xvYmFsSWR9KiogcmVjb3JkIHdpdGggc3BlY2lmaWVkIElEICoqTk9UKiogZm91bmQnLAogICAgLy8gaWYgZnVuY3Rpb25zLCBlYWNoIGNhbGxlZCB3aXRoIChibHVlcHJpbnRBY3Rpb25UZW1wbGF0ZSwgcm91dGVJbmZvLCBwYXRoRW50cnkpCiAgICBtb2RpZmllcnM6IFsnYWRkU2VsZWN0UXVlcnlQYXJhbScsIGV4YW1wbGVNb2RpZmllckZ1bmN0aW9uUmVmXSwKICB9LAogIC4uLgp9OwpgYGAKCk5vdGUgdGhhdDoKMS4gRm9yIHN1bW1hcnkgYW5kIGRlc2NyaXB0aW9uIHN0cmluZ3MgdGhlIHZhbHVlIGB7Z2xvYmFsSWR9YCBpcyByZXBsYWNlZCB3aXRoIHRoZSBhcHBsaWNhYmxlIFNhaWxzIG1vZGVsIHZhbHVlLgoxLiBQYXJhbWV0ZXJzIHZhbHVlcyBhcmUgU3dhZ2dlciBkZWZpbml0aW9ucywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSAqc3BlY2lhbCogc3RyaW5nIHZhbHVlCiAgIGBwcmltYXJ5S2V5UGF0aFBhcmFtZXRlcmAsIHdoaWNoIG1heSBiZSB1c2VkIHRvIGluY2x1ZGUgYSByZWZlcmVuY2UgdG8gYSBtb2RlbCdzIHByaW1hcnkga2V5LgoxLiBNb2RpZmllcnMgYXJlIHVzZWQgdG8gYXBwbHkgY3VzdG9tIGNoYW5nZXMgdG8gdGhlIGdlbmVyYXRlZCBTd2FnZ2VyLCBub3RpbmcgdGhhdDoKICAgLSBTdHJpbmcgdmFsdWVzIGFyZSBwcmVkZWZpbmVkIGluIGBnZW5lcmF0ZVBhdGhzKClgIChyZWZlciB0byB0aGUgW3NvdXJjZSBjb2RlXShsaWIvZ2VuZXJhdG9ycy5qcyNMMjQ2KSk7CiAgICAgdmFsaWQgIG1vZGlmaWVycyBhcmU6CiAgICAgLSBgYWRkUG9wdWxhdGVRdWVyeVBhcmFtYAogICAgIC0gYGFkZFNlbGVjdFF1ZXJ5UGFyYW1gCiAgICAgLSBgYWRkT21pdFF1ZXJ5UGFyYW1gCiAgICAgLSBgYWRkTW9kZWxCb2R5UGFyYW1gCiAgICAgLSBgYWRkTW9kZWxCb2R5UGFyYW1VcGRhdGVgCiAgICAgLSBgYWRkUmVzdWx0T2ZBcnJheU9mTW9kZWxzYAogICAgIC0gYGFkZEFzc29jaWF0aW9uUGF0aFBhcmFtYAogICAgIC0gYGFkZEFzc29jaWF0aW9uRktQYXRoUGFyYW1gCiAgICAgLSBgYWRkQXNzb2NpYXRpb25SZXN1bHRPZkFycmF5YAogICAgIC0gYGFkZFJlc3VsdE9mTW9kZWxgCiAgICAgLSBgYWRkUmVzdWx0Tm90Rm91bmRgCiAgICAgLSBgYWRkUmVzdWx0VmFsaWRhdGlvbkVycm9yYAogICAgIC0gYGFkZEZrc0JvZHlQYXJhbWAKICAgICAtIGBhZGRTaG9ydEN1dEJsdWVwcmludFJvdXRlTm90ZWAKICAgLSBGdW5jdGlvbnMgYXJlIGNhbGxlZCBhcyBgZnVuYyhibHVlcHJpbnRBY3Rpb25UZW1wbGF0ZSwgcm91dGVJbmZvLCBwYXRoRW50cnksIHRhZ3MsIGNvbXBvbmVudHMpYAogICAgIHdoZXJlCiAgICAgLSBgYmx1ZXByaW50QWN0aW9uVGVtcGxhdGVgIHRoZSBibHVlcHJpbnQgYWN0aW9uIHRlbXBsYXRlIChzZWUgYWJvdmUpIHRvIHdoaWNoIHRoZSBtb2RpZmllciByZWxhdGVzCiAgICAgLSBgcm91dGVJbmZvYCB0aGUgcm91dGUgaW5mb3JtYXRpb24gb2JqZWN0IChzZWUgYWJvdmUpIGZvciB3aGljaCB0aGUgU3dhZ2dlciBpcyBiZWluZyBnZW5lcmF0ZWQKICAgICAtIGBwYXRoRW50cnlgIHRoZSBnZW5lcmF0ZWQgU3dhZ2dlciBwYXRoIGVudHJ5IHRvIGJlIG1vZGlmaWVkCiAgICAgLSBgdGFnc2AgdGhlIGdlbmVyYXRlZCBTd2FnZ2VyICoqdGFnKiogZGVmaW5pdGlvbnMgdG8gYmUgbW9kaWZpZWQvZXh0ZW5kZWQKICAgICAtIGBjb21wb25lbnRzYCB0aGUgZ2VuZXJhdGVkIFN3YWdnZXIgKipjb21wb25lbnQqKiBkZWZpbml0aW9ucyB0byBiZSBtb2RpZmllZC9leHRlbmRlZAoKIyMjIFBvc3QtcHJvY2Vzc2luZyBHZW5lcmF0ZWQgU3dhZ2dlciBPdXRwdXQKClRoZSBmaW5hbCBnZW5lcmF0ZWQgU3dhZ2dlciBvdXRwdXQgbWF5IGJlIHBvc3QtcHJvY2Vzc2VkIGJlZm9yZSBpdCBpcyB3cml0dGVuIHRvCnRoZSBvdXRwdXQgZmlsZSB1c2luZyBhIHBvc3QtcHJvY2Vzc2luZyBmdW5jdGlvbiBzcGVjaWZpZWQgYXMgdGhlIGBwb3N0UHJvY2Vzc2AgY29uZmlnIG9wdGlvbi4KCkZvciBzaXR1YXRpb25zIHdoZXJlIHNhdmluZyB0aGUgZ2VuZXJhdGVkIHN3YWdnZXIgZG9jdW1lbnRhdGlvbiBKU09OIHRvIGEgZmlsZSBpcwpub3QgZGVzaXJlZC9hcHByb3ByaWF0ZSwgdGhlIGBwb3N0UHJvY2Vzc2AgY29uZmlnIG9wdGlvbiBtYXkgYmUgdXNlZCB0byBzcGVjaWZ5CmFuIGFsdGVybmF0ZSBzYXZlIG1lY2hhbmlzbS4KCk5vdGUgdGhhdCBpZiBgc3dhZ2dlckpzb25QYXRoYCBjb25maWcgb3B0aW9uIGlzIGVtcHR5L251bGwvdW5kZWZpbmVkIHRoZSBvdXRwdXQgZmlsZSB3aWxsIG5vdCBiZSB3cml0dGVuLgoKRm9yIGV4YW1wbGU6CmBgYGphdmFzY3JpcHQKbW9kdWxlLmV4cG9ydHNbJ3N3YWdnZXItZ2VuZXJhdG9yJ10gPSB7CiAgcG9zdFByb2Nlc3M6IGZ1bmN0aW9uKHNwZWNpZmljYXRpb25zKSB7CiAgICBsZXQgc2NoID0gc3BlY2lmaWNhdGlvbnMuY29tcG9uZW50cy5zY2hlbWFzOwogICAgT2JqZWN0LmtleXMoc2NoKS5tYXAoayA9PiB7CiAgICAgIHNjaFtrXS5kZXNjcmlwdGlvbiA9IHNja1trXS5kZXNjcmlwdGlvbi50b1VwcGVyQ2FzZSgpOwogICAgfSk7CiAgfQp9CmBgYAoKCiMjIFRlc3RpbmcKCiogQ2xvbmUgdGhpcyByZXBvc2l0b3J5CgoqIEluc3RhbGwgYWxsIGRldmVsb3BtZW50IGRlcGVuZGVuY2llcwoKYGBgc2gKIG5wbSBpbnN0YWxsCmBgYAoqIFRoZW4gcnVuIHRlc3QKCmBgYHNoCm5wbSB0ZXN0CmBgYAoKIyMgQ29udHJpYnV0ZQoKRm9yayB0aGlzIHJlcG8gYW5kIHB1c2ggaW4geW91ciBpZGVhcy4KRG8gbm90IGZvcmdldCB0byBhZGQgYSBiaXQgb2YgdGVzdChzKSBvZiB3aGF0IHZhbHVlIHlvdSBhZGRpbmcuCiogc3RpY2sgdG8gY29udmVudGlvbmFsIGNvbW1pdCBtZXNzYWdlIFtoZXJlXShodHRwczovL2NvbnZlbnRpb25hbGNvbW1pdHMub3JnLykgb3IgcmVhZCBtb3JlIFthbmd1bGFyIGNvbW1pdF0oaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQjY29tbWl0KSBwYXR0ZXJuCiogV2hpbGUgZGV2ZWxvcGluZywgeW91IGNhbiBydW4gdGhlIGJlbG93IGNvbW1hbmQgdG8gc3RhcnQgbm9kZW1vbiB3YXRjaCB0b28gcnVuIGxpbnRpbmcgYW5kIHRlc3Rpbmcgb24gYC50c2AgY2hhbmdlcwoKYGBgc2gKbnBtIHJ1biBkZXYKYGBgCgojIyBDaGFuZ2Vsb2cKClNlZSB0aGUgZGlmZmVyZW50IHJlbGVhc2VzIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vdGhlbzR1L3NhaWxzLWhvb2stc3dhZ2dlci1nZW5lcmF0b3IvcmVsZWFzZXMpCgojIyBMaWNlbnNlCgpNSVQgTGljZW5zZSAoTUlUKQo= readmeEtag: '"4f2cdccc179372dc67c604bdcbe65a6dd9ecc6dd"' readmeLastModified: Mon, 05 Jul 2021 16:21:27 GMT repositoryId: 99695966 description: >- A tool to help generate Swagger specification documentation based on OAS 3.0 for Sails APIs created: '2017-08-08T13:27:48Z' updated: '2025-08-27T12:13:43Z' language: TypeScript archived: false stars: 82 watchers: 7 forks: 33 owner: theoomoregbee logo: https://avatars.githubusercontent.com/u/10440327?v=4 license: MIT repoEtag: '"86b54448585ead86a5801237e631fa10e4df37275e1ff90d73d6201ff22705d7"' repoLastModified: Wed, 27 Aug 2025 12:13:43 GMT foundInMaster: true category: Parsers id: 735d3b9a4efacd3a1909f6a1b08a9b7a - source: openapi3 tags repository: https://github.com/landgraf-dev/openapi-delphi-generator v3: true id: c46c02d7c3412c4eb8f626910aefa33f repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIENsaWVudCBHZW5lcmF0b3IgZm9yIERlbHBoaQoKR2VuZXJhdGUgRGVscGhpIGNsaWVudCBTREtzIGZvciBhbnkgUkVTVCBBUEkgZGVmaW5lZCB3aXRoIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24uIAoKVGhpcyBnZW5lcmF0b3IgY2FuIHJlYWQgYW4gT3BlbkFQSSBkb2N1bWVudCAoZnJvbSBsb2NhbCBmaWxlIG9yIFVSTCkgb2YgYSBSRVNUIEFQSSBhbmQgZ2VuZXJhdGUgRGVscGhpIGNsYXNzZXMgdGhhdCB5b3UgY2FuIHVzZSB0byBpbnZva2Ugc3VjaCBSRVNUIEFQSSBlbmRwb2ludHMgaW4gYSBmcmllbmRseSB3YXkuCgpUaGUgZ2VuZXJhdG9yIGNyZWF0ZXMgdGhlIERUTyBjbGFzc2VzIChyZXByZXNlbnRpbmcgdGhlIEpTT04gZGVmaW5pdGlvbnMgdXNlZCBieSB0aGUgQVBJKSBhbmQgdGhlIGludGVyZmFjZXMgd2l0aCBtZXRob2RzIHlvdSBjYW4gY2FsbCAocmVwcmVzZW50aW5nIHRoZSBlbmRwb2ludHMgdG8gaW52b2tlKS4KCiMjIFVzYWdlCgpbRG93bmxvYWQgdGhlIGJpbmFyaWVzXShodHRwczovL2dpdGh1Yi5jb20vbGFuZGdyYWYtZGV2L29wZW5hcGktZGVscGhpLWdlbmVyYXRvci9yZWxlYXNlcykgYW5kIGRlY29tcHJlc3MgaW4gYSBmb2xkZXIgaW4geW91ciBkaXNrLiBUaGUgZ2VuZXJhdG9yIGlzIGEgc2luZ2xlIGNvbW1hbmQtbGluZSBleGUgZmlsZSBuYW1lZCBgT3BlbkFwaURlbHBoaUdlbi5leGVgLiBFeGVjdXRlIGl0IHBhc3NpbmcgdGhlIHByb3BlciBjb21tYW5kLWxpbmUgcGFyYW1ldGVycy4gVGhlIHRvb2wgcHJvdmlkZXMgYSBoZWxwIGZpbGUgc2hvd2luZyB5b3UgYWxsIHRoZSBhdmFpbGFibGUgb3B0aW9ucy4KCiMjIyBHZW5lcmF0aW5nIHRoZSBjbGllbnQKClRoZSBmb2xsb3dpbmcgZXhhbXBsZSBnZW5lcmF0ZXMgY2xpZW50IGZpbGVzIGZvciB0aGUgcG9wdWxhciBbU3dhZ2dlciBQZXRTdG9yZV0oaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvKSBleGFtcGxlIEFQSS4KCmBgYHNoZWxsCk9wZW5BcGlEZWxwaGlHZW4gLWk6Imh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby92Mi9zd2FnZ2VyLmpzb24iIC1vOiJDOlxQZXRTdG9yZSIgLW46UGV0U3RvcmUgLW06TXVsdGlwbGVDbGllbnRzRnJvbUZpcnN0VGFnQW5kT3BlcmF0aW9uSWQKYGBgCgpUaGUgYC1pYCBwYXJhbWV0ZXIgaW5kaWNhdGVzIHRoZSBPcGVuQVBJIGRvY3VtZW50IHRvIGltcG9ydC4gVGhlIGAtb2AgcGFyYW1ldGVyIHByb3ZpZGVzIHRoZSBvdXRwdXQgZm9sZGVyIHdoZXJlIHRoZSBEZWxwaGkgZmlsZXMgc2hvdWxkIGJlIGdlbmVyYXRlZC4gVGhlIGAtbmAgcGFyYW1ldGVyIGlzIHRoZSBuYW1lIG9mIHRoZSBBUEksIHVzZWQgdG8gcHJlZml4IHVuaXQgYW5kIGNsYXNzIG5hbWVzLiBGaW5hbGx5LCBgLW1gIHBhcmFtZXRlciBpbmRpY2F0ZXMgaG93IHRoZSBzZXJ2aWNlIGNsYXNzZXMgYW5kIGludGVyZmFjZXMgc2hvdWxkIGJlIG9yZ2FuaXplZC4KClRoZSBnZW5lcmF0b3Igd2lsbCBjcmVhdGUgdGhlIGZvbGxvd2luZyB1bml0czoKCjxpbWcgd2lkdGg9IjQwOCIgYWx0PSJpbWFnZSIgc3JjPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xMDI0MjU4MC8xODEyNzgzMzYtNmVjNzIyNzAtZWUzMi00MTZiLWJiNjktOGU5MGI4OGU1YjA3LnBuZyI+CgpgUGV0U3RvcmVDbGllbnRgIGlzIHRoZSBtYWluIHVuaXQgd2l0aCB0aGUgc2VydmljZSBjbGFzc2VzIGFuZCBpbnRlcmZhY2VzLiBgUGV0U3RvcmVEVE9zYCBjb250YWlucyBhbGwgdGhlIERUTyBjbGFzc2VzLCBhbmQgYFBldFN0b3JlSnNvbmAgaG9sZHMgY29kZSBmb3Igc2VyaWFsaXppbmcvZGVzZXJpYWxpemluZyBEVE9zIHRvIGFuZCBmcm9tIEpTT04uCgojIyMgVXNpbmcgdGhlIGNsaWVudAoKVG8gdXNlIHRoZSBjbGllbnQsIGp1c3QgYWRkIHRoZSBnZW5lcmF0ZWQgdW5pdHMgdG8geW91ciB1c2VzIGNsYXNzZXMuIEluc3RhbnRpYXRlIHRoZSBjbGllbnQgYW5kIHVzZSBpdHMgbWV0aG9kcy4gTm90ZSB0aGF0IHRoZSBnZW5lcmF0ZWQgY29kZSBkZXBlbmRzIG9uIHRoZSB1bml0cyBwcm92aWRlZCBpbiB0aGUgW0Rpc3RdKERpc3QpIGZvbGRlciwgc28geW91IG11c3QgYWxzbyBhZGQgdGhlbSB0byB5b3VyIHByb2plY3QuCgpPbmNlIHlvdSBpbnN0YW50aWF0ZSB0aGUgY2xpZW50LCBqdXN0IGNhbGwgYSBtZXRob2QgZnJvbSBhIHNlcnZpY2UgdG8gaW52b2tlIGFuIGVuZHBvaW50LiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgd2lsbCBjcmVhdGUgYSBuZXcgcGV0IGluIHRoZSBzZXJ2ZXIgYnkgaW52b2tpbmcgdGhlIGBQT1NUIC9QZXRzYCAgZW5kcG9pbnQ6CgpgYGBkZWxwaGkKdXNlcyB7Li4ufSwgUGV0U3RvcmVDbGllbnQsIFBldFN0b3JlRHRvczsKCnByb2NlZHVyZSBUUGV0U3RvcmVDbGllbnRUZXN0cy5DcmVhdGVBbmRHZXRQZXQ7CmNvbnN0CiAgUGV0SWQgPSA2MTM0MTsKICBDYXRlZ29yeUlkID0gNjEzNDE7CiAgVGFnSWQgPSA2MTM0MTsKdmFyCiAgUGV0OiBUUGV0OwogIFRhZzogVFRhZzsKICBDbGllbnQ6IElQZXRTdG9yZUNsaWVudDsKYmVnaW4KICBDbGllbnQgOj0gVFBldFN0b3JlQ2xpZW50LkNyZWF0ZTsKCiAgLy8gQ3JlYXRlIHRoZSBwZXQKICBQZXQgOj0gVFBldC5DcmVhdGU7CiAgdHJ5CiAgICBQZXQuSWQgOj0gUGV0SWQ7CiAgICBQZXQuTmFtZSA6PSAnSm9zZXBoaW5lJzsKICAgIFBldC5TdGF0dXMgOj0gJ2F2YWlsYWJsZSc7CgogICAgUGV0LkNhdGVnb3J5IDo9IFRDYXRlZ29yeS5DcmVhdGU7CiAgICBQZXQuQ2F0ZWdvcnkuSWQgOj0gQ2F0ZWdvcnlJZDsKICAgIFBldC5DYXRlZ29yeS5OYW1lIDo9ICdUZXJyaWVyIERvZ3MnOwoKICAgIFBldC5UYWdzIDo9IFRUYWdMaXN0LkNyZWF0ZTsKICAgIFRhZyA6PSBUVGFnLkNyZWF0ZTsKICAgIFRhZy5JZCA6PSBUYWdJZDsKICAgIFRhZy5OYW1lIDo9ICdUZXJyaWVyJzsKICAgIFBldC5UYWdzLkFkZChUYWcpOwoKICAgIFBldC5QaG90b1VybHMuQWRkKCdodHRwOi8vZHVtbXkuY29tL2RvZy5wbmcnKTsKICAgIENsaWVudC5QZXQuQWRkUGV0KFBldCk7CiAgZmluYWxseQogICAgUGV0LkZyZWU7CiAgZW5kOwpgYGAKCkFub3RoZXIgZXhhbXBsZSB0aGF0IHdpbGwgcmV0cmlldmUgYW5kIHRoZW4gZGVsZXRlIGEgcGV0OgoKYGBgZGVscGhpCiAgQ2xpZW50IDo9IFRQZXRTdG9yZUNsaWVudC5DcmVhdGU7CiAgUGV0IDo9IENsaWVudC5QZXQuR2V0UGV0QnlJZChQZXRJZCk7CiAgdHJ5CiAgICBDaGVjayhQZXQgPD4gbmlsLCBGb3JtYXQoJ1BldCAlZCBub3QgZm91bmQnLCBbUGV0SWRdKSk7CiAgICBDaGVja0VxdWFscyhQZXRJZCwgUGV0LklkKTsKICAgIENoZWNrRXF1YWxzKCdKb3NlcGhpbmUnLCBQZXQuTmFtZSk7CiAgICBDaGVja0VxdWFscygnYXZhaWxhYmxlJywgUGV0LlN0YXR1cyk7CiAgZmluYWxseQogICAgUGV0LkZyZWU7CiAgZW5kOwoKICAvLyBEZWxldGUgdGhlIG5ld2x5IGNyZWF0ZWQgcGV0CiAgQ2xpZW50LlBldC5EZWxldGVQZXQoJ3NwZWNpYWwta2V5JywgUGV0SWQpOwpgYGAKCllvdSBtdXN0IGNyZWF0ZSBhbmQgZGVzdHJveSBhbGwgRFRPIGNsYXNzZXMgeW91cnNlbGYuIFRoZSBjbGFzc2VzIGFuZCBsaXN0cyBvd25lZCBieSB0aGUgRFRPIGNsYXNzZXMgYXJlIGRlc3Ryb3llZCBhdXRvbWF0aWNhbGx5LgoKIyMjIEF1dGhlbnRpY2F0aW9uCgpZb3UgY2FuIHNldCB0aGUgYENvbmZpZy5BY2Nlc3NUb2tlbmAgcHJvcGVydHkgdG8gYXV0aGVudGljYXRlIHdpdGggdGhlIEFQSToKCmBgYGRlbHBoaQpDbGllbnQuQ29uZmlnLkFjY2Vzc1Rva2VuIDo9ICc8YWNjZXNzIHRva2VuPic7CmBgYAoKSXQgd2lsbCBzZXQgdGhlIGBBdXRob3JpemF0aW9uYCBIVFRQIGhlYWRlciB3aXRoIHRoZSB0b2tlbiB2YWx1ZSBwcmVmaXhlZCBieSBgQmVhcmVyIGAuCgojIyMgQ2xpZW50IGNvbXBhdGliaWxpdHkKCkN1cnJlbnQgdGhlIGdlbmVyYXRlZCBjb2RlIGRvZXNuJ3QgcmVxdWlyZSBhbnkgZGVwZW5kZW5jeSBvbiAzcmQgcGFydHkgdW5pdHMsIHdvcmtpbmcgd2l0aCBhIHBsYWluIERlbHBoaSBpbnN0YWxsLiBUaGUgY29kZSBpcyBjdXJyZW50bHkgdXNpbmcgYFRIdHRwQ2xpZW50YCBjbGFzcyBmcm9tIHVuaXQgYFN5c3RlbS5OZXQuSHR0cENsaWVudGAgdG8gcGVyZm9ybSB0aGUgSFRUUCByZXF1ZXN0cywgc28gdGhlIGNsaWVudCB3aWxsIG9ubHkgY29tcGlsZSBvbiBEZWxwaGkgdmVyc2lvbnMgdGhhdCBwcm92aWRlIHN1Y2ggY2xhc3MuCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGZvcmNlIHRoZSBjbGllbnQgdG8gdXNlIEluZHkgY29tcG9uZW50cyB0byBwZXJmb3JtIEhUVFAgcmVxdWVzdHMuIEZvciB0aGF0LCBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29kZSBzbmlwcGV0LgoKYGBgZGVscGhpCnVzZXMgey4uLn0sIE9wZW5BcGlSZXN0LCBPcGVuQXBpSW5keTsKCmJlZ2luCiAgLy8gQXQgdGhlIGJlZ2lubmluZyBvZiB5b3VyIGFwcGxpY2F0aW9uLCBzZXQgdGhlIERlZmF1bHRSZXF1ZXN0RmFjdG9yeQogIERlZmF1bHRSZXF1ZXN0RmFjdG9yeSA6PSBUSW5keVJlc3RSZXF1ZXN0RmFjdG9yeS5DcmVhdGU7CmVuZDsKYGBgCgpZb3UgY2FuIGludGVyY2VwdCB0aGUgbW9tZW50IHdoZXJlIGEgbmV3IGBUSWRIVFRQYCBjbGllbnQgaXMgY3JlYXRlZCAtIGluIGNhc2UgeW91IHdhbnQgdG8gc2V0dXAgc3BlY2lmaWMgcHJvcGVydGllcyBsaWtlIHByb3h5IG9yIElPIGhhbmRsZXJzLiBGb3IgdGhhdCB5b3UgY2FuIHVzZSBhIGNvZGUgbGlrZSB0aGlzOgoKYGBgZGVscGhpCnVzZXMgey4uLn0sIE9wZW5BcGlSZXN0LCBPcGVuQXBpSW5keSwgSWRIVFRQOwoKcHJvY2VkdXJlIFRNYWluRGF0YU1vZHVsZS5JbmR5Q2xpZW50Q3JlYXRlZChDbGllbnQ6IFRJZEhUVFApOwpiZWdpbgogIC8vIFNldCBleHRyYSBDbGllbnQgcHJvcGVydGllcyBoZXJlCmVuZDsKCnByb2NlZHVyZSBUTWFpbkRhdGFNb2R1bGUuRGF0YU1vZHVsZUNyZWF0ZShTZW5kZXI6IFRPYmplY3QpOwp2YXIKICBGYWN0b3J5OiBUSW5keVJlc3RSZXF1ZXN0RmFjdG9yeTsKYmVnaW4KICAvLyBBdCB0aGUgYmVnaW5uaW5nIG9mIHlvdXIgYXBwbGljYXRpb24sIHNldCB0aGUgRGVmYXVsdFJlcXVlc3RGYWN0b3J5CiAgRmFjdG9yeSA6PSBUSW5keVJlc3RSZXF1ZXN0RmFjdG9yeS5DcmVhdGU7CiAgRGVmYXVsdFJlcXVlc3RGYWN0b3J5IDo9IEZhY3Rvcnk7CiAgRmFjdG9yeS5PbkNsaWVudENyZWF0ZWQgOj0gSW5keUNsaWVudENyZWF0ZWQ7CmVuZDsKYGBgCgojIyBDb21waWxpbmcgYW5kIHJ1bm5pbmcgdGVzdHMKCllvdSBjYW4gY29tcGlsZSBhbmQgcnVuIHRoZSB0ZXN0IHByb2plY3QgYWxzbyB3aXRob3V0IGFueSBkZXBlbmRlbmNpZXMuIFRoZSB0ZXN0cyB3ZXJlIGNyZWF0ZWQgdXNpbmcgRFVuaXQgZm9yIG1heGltdW0gY29tcGF0aWJpbGl0eSB3aXRoIHNldmVyYWwgRGVscGhpIHZlcnNpb25zLiAKCiMjIENvbXBpbGluZyB0aGUgZ2VuZXJhdG9yIHRvb2wKClRoZSBnZW5lcmF0b3IgdG9vbCBpdHNlbGYgdXNlcyAzcmQgcGFydHkgbGlicmFyaWVzLiBZb3UgZG9uJ3QgbmVlZCB0aGVtIHRvIHVzZSBpdCwgeW91IGNhbiBzaW1wbHkgZG93bmxvYWQgdGhlIGV4ZWN1dGFibGUgYW5kIHVzZSBpdCBkaXJlY3RseS4gSW4gY2FzZSB5b3Ugd2FudCB0byBjb21waWxlIGFuZCBkZWJ1ZyB0aGUgdG9vbCwgeW91IHdpbGwgbmVlZCB0aGUgZm9sbG93aW5nIGxpYnJhcmllczoKCiogW1ZTb2Z0LkNvbW1hbmRMaW5lUGFyc2VyXShodHRwczovL2dpdGh1Yi5jb20vVlNvZnRUZWNobm9sb2dpZXMvVlNvZnQuQ29tbWFuZExpbmVQYXJzZXIpCiogW1RNUyBCSVpdKGh0dHBzOi8vd3d3LnRtc3NvZnR3YXJlLmNvbS9zaXRlL3Rtc2JpemludHJvLmFzcCkKCk5vdGUgdGhhdCBUTVMgQklaIGlzIGEgY29tbWVyY2lhbCBsaWJyYXJ5LiBZb3UgY2FuIHVzZSB0aGUgdHJpYWwgdmVyc2lvbiBmb3IgZGV2ZWxvcG1lbnQgKGluIGNhc2UgeW91IHdhbnQgdG8gY29udHJpYnV0ZSB3aXRoIHRoZSBwcm9qZWN0KS4KCiMjIExpY2Vuc2UKClRoaXMgcHJvamVjdCBpcyBbZmFpci1jb2RlXShodHRwOi8vZmFpcmNvZGUuaW8pIGRpc3RyaWJ1dGVkIHVuZGVyIFsqKkFwYWNoZSAyLjAgd2l0aCBDb21tb25zIENsYXVzZSoqXShMSUNFTlNFKSBsaWNlbnNlLgo= readmeEtag: '"db514f84ca82654bd88f2578cda0cc39d251d183"' readmeLastModified: Tue, 30 Jan 2024 18:38:25 GMT repositoryId: 517490524 description: >- Generate Delphi client SDKs for any REST API defined with the OpenAPI specification. created: '2022-07-25T02:23:12Z' updated: '2026-01-23T08:40:28Z' language: Pascal archived: false stars: 89 watchers: 10 forks: 18 owner: landgraf-dev logo: https://avatars.githubusercontent.com/u/52084575?v=4 license: NOASSERTION repoEtag: '"e6b934d241dfb3fa768d662ca8a58be9eaa6471701032ab2d37629d56f243a21"' repoLastModified: Fri, 23 Jan 2026 08:40:28 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/jimschubert/intellij-openapi-generator v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIEdlbmVyYXRvciBwbHVnaW4gZm9yIEludGVsbGlKIElERXMKCiFbQXNzZW1ibGUgUGx1Z2luXShodHRwczovL2dpdGh1Yi5jb20vamltc2NodWJlcnQvaW50ZWxsaWotb3BlbmFwaS1nZW5lcmF0b3Ivd29ya2Zsb3dzL0Fzc2VtYmxlJTIwUGx1Z2luL2JhZGdlLnN2ZykKCjwhLS0gUGx1Z2luIGRlc2NyaXB0aW9uIC0tPgpUaGUgT3BlbkFQSSBHZW5lcmF0b3IgcGx1Z2luIGFsbG93cyB5b3UgdG8gZ2VuZXJhdGUgY2xpZW50LCBzZXJ2ZXIsIG9yIGRvY3VtZW50YXRpb24gY29kZSBmcm9tIHlvdXIgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyB3aXRoaW4geW91ciBJREUuCjwhLS0gUGx1Z2luIGRlc2NyaXB0aW9uIGVuZCAtLT4KClRoaXMgcGx1Z2luIGFsbG93cyBmb3IgYSBzb3J0IG9mIF9zcGVjXyBkcml2ZW4gZGV2ZWxvcG1lbnQuCgpXaGlsZSBkZXNpZ25pbmcgeW91ciBBUEksIHlvdSBjYW4gZ2VuZXJhdGUgb25lIG9yIG1vcmUgY2xpZW50cyBmcm9tIHdpdGhpbiB0aGUgSURFIHRvIGV2YWx1YXRlIHlvdXIgY2hhbmdlcy4KCkFsc28gaW5zdGFsbCBbaW50ZWxsaWotc3dhZ2dlcl0oaHR0cHM6Ly9wbHVnaW5zLmpldGJyYWlucy5jb20vcGx1Z2luLzgzNDcpIGZvciBhIHNlYW1sZXNzIFN3YWdnZXIvT3BlbkFQSSBlZGl0b3IgZXhwZXJpZW5jZS4KCiMgQnVpbGRpbmcKCmBgYAouL2dyYWRsZXcgY2xlYW4gYnVpbGRQbHVnaW4KYGBgCgojIFJ1bm5pbmcgaW4gSW50ZWxsaUoKCkZpcnN0LCB5b3UnbGwgbmVlZCB0byBbc2V0dXAgYSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudF0oaHR0cDovL3d3dy5qZXRicmFpbnMub3JnL2ludGVsbGlqL3Nkay9kb2NzL2Jhc2ljcy9nZXR0aW5nX3N0YXJ0ZWQvc2V0dGluZ191cF9lbnZpcm9ubWVudC5odG1sKS4KClRoZW46CgpgYGAKLi9ncmFkbGV3IHJ1bklkZQpgYGAKCk5PVEU6IFdoZW4gcnVubmluZyBsb2NhbGx5LCBpZiBjaGFuZ2VzIGRvbid0IGFwcGVhciBpbiB0aGUgc2FuZGJveCBpbnN0YW5jZSB5b3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHVwZGF0ZSB0aGUgcGx1Z2luIHZlcnNpb24gaW4gYGdyYWRsZS5wcm9wZXJ0aWVzYC4KCiMgVXNhZ2UKCk9wZW4gYSBTcGVjaWZpY2F0aW9uIFlBTUwgb3IgSlNPTiBmaWxlIGluIEludGVsbGlKLiBTdXBwb3J0ZWQgc3BlY2lmaWNhdGlvbnMgYXJlOiBPcGVuQVBJIDIuMC9PcGVuQVBJIDMuMC4gV2l0aCB0aGUgZG9jdW1lbnQgYWN0aXZlLCBuYXZpZ2F0ZSB0byBDb2RlIC0+IE9wZW5BUEkgLT4gR2VuZXJhdGUgZnJvbSBEb2N1bWVudC4KCkNob29zZSB5b3VyIGRlc2lyZWQgZ2VuZXJhdG9yIGFuZCBmaWxsIG91dCBvcHRpb25zLiBUaGVuLCBjaG9vc2UgYW4gb3V0cHV0IGRpcmVjdG9yeSBhbmQgZ2VuZXJhdGUuCgojIyBMaWNlbnNlCgpUaGlzIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIFsuL0xJQ0VOU0VdKExJQ0VOU0UpIGZvciBtb3JlIGRldGFpbHMuCgpTd2FnZ2Vywq4gaXMgYSByZWdpc3RlcmVkIHRyYWRlbWFyayBvZiBTbWFydEJlYXIgU29mdHdhcmUsIEluYy4KClRoaXMgcHJvamVjdCBpcyBub3QgbWFpbnRhaW5lZCBieSwgb3IgYXNzb2NpYXRlZCB3aXRoLCBTbWFydEJlYXIgU29mdHdhcmUsIEluYy4KVGhpcyBwcm9qZWN0IGlzIG5vdCBtYWludGFpbmVkIGJ5LCBvciBhc3NvY2lhdGVkIHdpdGgsIE9wZW5BUEkgSW5pdGlhdGl2ZSAoT0FJKSBpbiBhbnl3YXkuCg== readmeEtag: '"c19f0115de2fcf02ed9589470f9238a7556b4008"' readmeLastModified: Thu, 02 Jul 2020 02:27:56 GMT repositoryId: 61175252 description: Intellij Plugin for openapi-generator created: '2016-06-15T03:38:07Z' updated: '2025-08-15T07:38:32Z' language: Kotlin archived: false stars: 78 watchers: 4 forks: 10 owner: jimschubert logo: https://avatars.githubusercontent.com/u/109659?v=4 license: Apache-2.0 repoEtag: '"8d4ff19c7d3a073bd37020b4867215f5608c159e774902bbf75090b5fa1041b6"' repoLastModified: Fri, 15 Aug 2025 07:38:32 GMT foundInMaster: true category: - SDK - Parsers id: 6f1cc2a930b656d771fb7dcdb2527d95 - source: - openapi3 tags - openapi31 tags repository: https://github.com/enzonotario/vitepress-openapi v3: true v3_1: true id: 6b0b55df8cbd772582e7b1db14781e00 repositoryMetadata: base64Readme: >- IyB2aXRlcHJlc3Mtb3BlbmFwaQoKR2VuZXJhdGUgVml0ZVByZXNzIEFQSSBEb2N1bWVudGF0aW9uIGZyb20gT3BlbkFQSSBTcGVjaWZpY2F0aW9uLgoKIyMgRG9jdW1lbnRhdGlvbgoKVG8gZ2V0IHN0YXJ0ZWQsIGNoZWNrIG91dCB0aGUgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vdml0ZXByZXNzLW9wZW5hcGkudmVyY2VsLmFwcC8pLgoKIyMgQ29udHJpYnV0b3JzCgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZW56b25vdGFyaW8vdml0ZXByZXNzLW9wZW5hcGkvZ3JhcGhzL2NvbnRyaWJ1dG9ycyI+CiAgPGltZyBzcmM9Imh0dHBzOi8vY29udHJpYi5yb2Nrcy9pbWFnZT9yZXBvPWVuem9ub3RhcmlvL3ZpdGVwcmVzcy1vcGVuYXBpIiAvPgo8L2E+CgpNYWRlIHdpdGggW2NvbnRyaWIucm9ja3NdKGh0dHBzOi8vY29udHJpYi5yb2NrcykuCgojIyBMaWNlbnNlCgpbTUlUIExpY2Vuc2VdKC4vTElDRU5TRSkgwqkgMjAyMy1wcmVzZW50IFtFbnpvIE5vdGFyaW9dKGh0dHBzOi8vZ2l0aHViLmNvbS9lbnpvbm90YXJpbykuCg== readmeEtag: '"7d9450d92c42307a858bb5f2c5c52d93c19d850f"' readmeLastModified: Mon, 30 Jun 2025 01:16:25 GMT repositoryId: 735578513 description: Generate VitePress API Docs from OpenAPI specifications created: '2023-12-25T12:25:21Z' updated: '2026-02-06T02:40:07Z' language: TypeScript archived: false stars: 212 watchers: 2 forks: 37 owner: enzonotario logo: https://avatars.githubusercontent.com/u/10469299?v=4 license: MIT repoEtag: '"f6cdfd6cdac17cff220fc4c7255811c2e21b27ebca8e4bdf8f828aae6cc5bf74"' repoLastModified: Fri, 06 Feb 2026 02:40:07 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/enzonotario/vitepress-theme-openapi - source: - openapi3 tags - openapi31 tags repository: https://github.com/swagger-api/apidom v3: true v3_1: true id: 1f412460f4d4f6b023e9a61816b07932 repositoryMetadata: base64Readme: >- W2NvbW1lbnRdOiA8PiAoU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogQ29weXJpZ2h0ICYjNDA7YyYjNDE7IDIwMTUgcmVmcmFjdHByb2plY3QpCltjb21tZW50XTogPD4gKFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQpCgpbY29tbWVudF06IDw+IChTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiBDb3B5cmlnaHQgJiM0MDtjJiM0MTsgMjAxNSBBcGlhcnkgSW5jLikKW2NvbW1lbnRdOiA8PiAoU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCkKCiMgQXBpRE9NCgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vYWN0aW9ucy93b3JrZmxvd3MvYnVpbGQueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vYWN0aW9ucykKWyFbRGVwZW5kYWJvdCBlbmFibGVkXShodHRwczovL2JhZGdlbi5uZXQvYmFkZ2UvaWNvbi9kZXBlbmRhYm90P2ljb249ZGVwZW5kYWJvdCZsYWJlbCldKGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2NvZGUtc2VjdXJpdHkvc3VwcGx5LWNoYWluLXNlY3VyaXR5L2tlZXBpbmcteW91ci1kZXBlbmRlbmNpZXMtdXBkYXRlZC1hdXRvbWF0aWNhbGx5KQoKClRoZSBwdXJwb3NlIG9mIEFwaURPTSBpcyB0byBwcm92aWRlIGEgc2luZ2xlLCB1bmlmeWluZyBzdHJ1Y3R1cmUgZm9yIGRlc2NyaWJpbmcgQVBJcyBhY3Jvc3MKQVBJIGRlc2NyaXB0aW9uIGxhbmd1YWdlIGFuZCBzZXJpYWxpemF0aW9uIGZvcm1hdHMuIFRoZXJlIGN1cnJlbnRseSBleGlzdHMgc2V2ZXJhbCBBUEkgZGVzY3JpcHRpb24gbGFuZ3VhZ2VzIG9uZSBjYW4gY2hvb3NlCndoZW4gZGVmaW5pbmcgYW4gQVBJLCBmcm9tIE9wZW5BUEksIFJBTUwsIEFQSSBCbHVlcHJpbnQgb3Igb3RoZXJzLgpUaGVyZSBhcmUgYWxzbyBtYW55IHNlcmlhbGl6YXRpb24gZm9ybWF0cyBzdWNoIGFzIFhNTCwgWUFNTCBvciBKU09OLiBXaXRob3V0IGEgd2F5IHRvIHBhcnNlIHRoZXNlIGZvcm1hdHMKdG8gdGhlIHNhbWUgc3RydWN0dXJlLCBkZXZlbG9wZXJzIGFyZSByZXF1aXJlZCB0byBoYW5kbGUgZWFjaCBmb3JtYXQgb25lLWJ5LW9uZSwgZWFjaCBpbiBhIGRpZmZlcmVudAp3YXkgYW5kIGVhY2ggdHJhbnNsYXRpbmcgdG8gdGhlaXIgaW50ZXJuYWwgZG9tYWluIG1vZGVsLiBUaGlzIGlzIHRlZGlvdXMsIHRpbWUtY29uc3VtaW5nLAphbmQgcmVxdWlyZXMgZWFjaCBtYWludGFpbmVyIHRvIHN0YXkgaW4gc3RlcCB3aXRoIGV2ZXJ5IGZvcm1hdCB0aGV5IHN1cHBvcnQuCgpBcGlET00gc29sdmVzIHRoaXMgY29tcGxleCBwcm9ibGVtIGluIGEgc2ltcGxlIHdheS4gSXQgYWxsb3dzIHBhcnNlcnMgdG8gcGFyc2UgdG8gYSBzaW5nbGUgc3RydWN0dXJlCmFuZCBhbGxvd3MgdG9vbCBidWlsZGVycyB0byBjb25zdW1lIG9uZSBzdHJ1Y3R1cmUgZm9yIGFsbCBmb3JtYXRzLgoKIyMgVGFibGUgb2YgQ29udGVudHMKCi0gW0dldHRpbmcgc3RhcnRlZF0oI2dldHRpbmctc3RhcnRlZCkKICAtIFtQcmVyZXF1aXNpdGVzXSgjcHJlcmVxdWlzaXRlcykKICAtIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCiAgLSBbVXNhZ2VdKCN1c2FnZSkKICAtIFtBcGlET00gUGxheWdyb3VuZF0oI2FwaWRvbS1wbGF5Z3JvdW5kKQotIFtEZXZlbG9wbWVudF0oI2RldmVsb3BtZW50KQogIC0gW1ByZXJlcXVpc2l0ZXNdKCNwcmVyZXF1aXNpdGVzKQogIC0gW1NldHRpbmcgdXBdKCNzZXR0aW5nLXVwKQogIC0gW1NldHRpbmcgdXAgdmlhIGRvY2tlcl0oI3NldHRpbmctdXAtdmlhLWRvY2tlcikKICAtIFtTZXR0aW5nIHVwIHZpYSBHaXRIdWIgQ29kZXNwYWNlc10oI3NldHRpbmctdXAtdmlhLWdpdGh1Yi1jb2Rlc3BhY2VzKQogIC0gW25wbSBzY3JpcHRzXSgjbnBtLXNjcmlwdHMpCiAgLSBbQnVpbGQgYXJ0aWZhY3RzXSgjYnVpbGQtYXJ0aWZhY3RzKQogIC0gW1VzaW5nIHRoaXMgbW9ub3JlcG8gYXMgYSBsb2NhbCBkZXYgZGVwZW5kZW5jeV0oI3VzaW5nLXRoaXMtbW9ub3JlcG8tYXMtYS1sb2NhbC1kZXYtZGVwZW5kZW5jeSkKLSBbQ29udHJpYnV0aW5nXSgjY29udHJpYnV0aW5nKQotIFtEb2N1bWVudGF0aW9uXSgjZG9jdW1lbnRhdGlvbikKICAtIFtXaGF0IGlzIGFuIEVsZW1lbnQgP10oI3doYXQtaXMtYW4tZWxlbWVudC0pCiAgLSBbQXMgYSB3YXkgdG8gYW5ub3RhdGUgSlNPTl0oI2FzLWEtd2F5LXRvLWFubm90YXRlLWpzb24pCiAgLSBbQXMgYSB1bmlmeWluZyBzdHJ1Y3R1cmVdKCNhcy1hLXVuaWZ5aW5nLXN0cnVjdHVyZSkKICAtIFtBcyBhIHF1ZXJ5YWJsZSBzdHJ1Y3R1cmVdKCNhcy1hLXF1ZXJ5YWJsZS1zdHJ1Y3R1cmUpCiAgLSBbQXBpRE9NIHN0YWdlc10oI2FwaWRvbS1zdGFnZXMpCi0gW0FwaURPTSBwYWNrYWdlc10oI2FwaWRvbS1wYWNrYWdlcykKICAtIFtBcGlET00gQVNUXSgjYXBpZG9tLWFzdCkKICAtIFtBcGlET00gQ29yZV0oI2FwaWRvbS1jb3JlKQogIC0gW1JldHJpZXZpbmcgQXBpRE9NIEVsZW1lbnRzXSgjcmV0cmlldmluZy1hcGlkb20tZWxlbWVudHMpCiAgLSBbQXBpRE9NIE5hbWVzcGFjZXNdKCNhcGlkb20tbmFtZXNwYWNlcykKICAtIFtBcGlET00gUGFyc2Vyc10oI2FwaWRvbS1wYXJzZXJzKQogIC0gW0FkdmFuY2VkIEFwaURPTSBNYW5pcHVsYXRpb25zXSgjYWR2YW5jZWQtYXBpZG9tLW1hbmlwdWxhdGlvbnMpCiAgLSBbQXBpRE9NIExhbmd1YWdlIFNlcnZpY2VdKCNhcGlkb20tbGFuZ3VhZ2Utc2VydmljZSkKLSBbTGljZW5zZV0oI2xpY2Vuc2UpCi0gW1NvZnR3YXJlIEJpbGwgT2YgTWF0ZXJpYWxzIChTQk9NKV0oI3NvZnR3YXJlLWJpbGwtb2YtbWF0ZXJpYWxzLXNib20pCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCiMjIyBQcmVyZXF1aXNpdGVzCgpUaGVzZSBwcmVyZXF1aXNpdGVzIGFyZSByZXF1aXJlZCBib3RoIGZvciBpbnN0YWxsaW5nIEFwaURPTSBhcyBhIG5wbSBwYWNrYWdlIGFuZCBsb2NhbCBkZXZlbG9wbWVudCBzZXR1cC4KCi0gW25vZGUtZ3lwXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9ub2RlLWd5cCkgYD49MTBgIHdpdGggW1B5dGhvbiAzLnhdKGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLykKLSBbR0xJQkNdKGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy8pIGA+PTIuMjlgCi0gW0dDQyBjb21waWxlcl0oaHR0cHM6Ly9nY2MuZ251Lm9yZy8pCi0gW2Vtc2NyaXB0ZW5dKGh0dHBzOi8vZW1zY3JpcHRlbi5vcmcvZG9jcy9nZXR0aW5nX3N0YXJ0ZWQvZG93bmxvYWRzLmh0bWwpIG9yIFtkb2NrZXJdKGh0dHBzOi8vd3d3LmRvY2tlci5jb20vKSBuZWVkcyB0byBiZSBpbnN0YWxsZWQsIHdlIHJlY29tbWVuZCBnb2luZyB3aXRoIGEgZG9ja2VyIG9wdGlvbgoKIyMjIEluc3RhbGxhdGlvbgoKQXNzdW1pbmcgW3ByZXJlcXVpc2l0ZXNdKCNwcmVyZXF1aXNpdGVzKSBhcmUgYWxyZWFkeSBpbnN0YWxsZWQsIEFwaURPTSBucG0gcGFja2FnZXMgYXJlIGluc3RhbGxhYmxlIGFuZCB3b3JrcyB3aXRoIGBOb2RlLmpzID49MTIuMjAuMCA8PTIyYC4KCllvdSBjYW4gaW5zdGFsbCBBcGlET00gcGFja2FnZXMgdXNpbmcgW25wbSBDTEldKGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vY2xpKToKCmBgYHNoCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tYXN0CiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tY29udmVydGVyCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tY29yZQogJCBucG0gaW5zdGFsbCBAc3dhZ2dlci1hcGkvYXBpZG9tLWVycm9yCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tanNvbi1wYXRoCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tanNvbi1wb2ludGVyCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tanNvbi1wb2ludGVyLXJlbGF0aXZlCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tbG9nZ2luZwogJCBucG0gaW5zdGFsbCBAc3dhZ2dlci1hcGkvYXBpZG9tLWxzCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tbnMtYXBpLWRlc2lnbi1zeXN0ZW1zCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tbnMtYXJhenpvLTEKICQgbnBtIGluc3RhbGwgQHN3YWdnZXItYXBpL2FwaWRvbS1ucy1hc3luY2FwaS0yCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tbnMtanNvbi1zY2hlbWEtMjAxOS0wOQogJCBucG0gaW5zdGFsbCBAc3dhZ2dlci1hcGkvYXBpZG9tLW5zLWpzb24tc2NoZW1hLTIwMjAtMTIKICQgbnBtIGluc3RhbGwgQHN3YWdnZXItYXBpL2FwaWRvbS1ucy1qc29uLXNjaGVtYS1kcmFmdC00CiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tbnMtanNvbi1zY2hlbWEtZHJhZnQtNgogJCBucG0gaW5zdGFsbCBAc3dhZ2dlci1hcGkvYXBpZG9tLW5zLWpzb24tc2NoZW1hLWRyYWZ0LTcKICQgbnBtIGluc3RhbGwgQHN3YWdnZXItYXBpL2FwaWRvbS1ucy1vcGVuYXBpLTIKICQgbnBtIGluc3RhbGwgQHN3YWdnZXItYXBpL2FwaWRvbS1ucy1vcGVuYXBpLTMtMAogJCBucG0gaW5zdGFsbCBAc3dhZ2dlci1hcGkvYXBpZG9tLW5zLW9wZW5hcGktMy0xCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tcGFyc2VyCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tcGFyc2VyLWFkYXB0ZXItYXBpLWRlc2lnbi1zeXN0ZW1zLWpzb24KICQgbnBtIGluc3RhbGwgQHN3YWdnZXItYXBpL2FwaWRvbS1wYXJzZXItYWRhcHRlci1hcGktZGVzaWduLXN5c3RlbXMteWFtbAogJCBucG0gaW5zdGFsbCBAc3dhZ2dlci1hcGkvYXBpZG9tLXBhcnNlci1hZGFwdGVyLWFyYXp6by1qc29uLTEKICQgbnBtIGluc3RhbGwgQHN3YWdnZXItYXBpL2FwaWRvbS1wYXJzZXItYWRhcHRlci1hcmF6em8teWFtbC0xCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tcGFyc2VyLWFkYXB0ZXItYXN5bmNhcGktanNvbi0yCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tcGFyc2VyLWFkYXB0ZXItYXN5bmNhcGkteWFtbC0yCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tcGFyc2VyLWFkYXB0ZXItYXN5bmNhcGktanNvbi0zCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tcGFyc2VyLWFkYXB0ZXItYXN5bmNhcGkteWFtbC0zCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tcGFyc2VyLWFkYXB0ZXItanNvbgogJCBucG0gaW5zdGFsbCBAc3dhZ2dlci1hcGkvYXBpZG9tLXBhcnNlci1hZGFwdGVyLWpzb24tc2NoZW1hLWpzb24tMjAyMC0xMgogJCBucG0gaW5zdGFsbCBAc3dhZ2dlci1hcGkvYXBpZG9tLXBhcnNlci1hZGFwdGVyLWpzb24tc2NoZW1hLXlhbWwtMjAyMC0xMgogJCBucG0gaW5zdGFsbCBAc3dhZ2dlci1hcGkvYXBpZG9tLXBhcnNlci1hZGFwdGVyLW9wZW5hcGktanNvbi0yCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tcGFyc2VyLWFkYXB0ZXItb3BlbmFwaS1qc29uLTMtMAogJCBucG0gaW5zdGFsbCBAc3dhZ2dlci1hcGkvYXBpZG9tLXBhcnNlci1hZGFwdGVyLW9wZW5hcGktanNvbi0zLTEKICQgbnBtIGluc3RhbGwgQHN3YWdnZXItYXBpL2FwaWRvbS1wYXJzZXItYWRhcHRlci1vcGVuYXBpLXlhbWwtMgogJCBucG0gaW5zdGFsbCBAc3dhZ2dlci1hcGkvYXBpZG9tLXBhcnNlci1hZGFwdGVyLW9wZW5hcGkteWFtbC0zLTAKICQgbnBtIGluc3RhbGwgQHN3YWdnZXItYXBpL2FwaWRvbS1wYXJzZXItYWRhcHRlci1vcGVuYXBpLXlhbWwtMy0xCiAkIG5wbSBpbnN0YWxsIEBzd2FnZ2VyLWFwaS9hcGlkb20tcGFyc2VyLWFkYXB0ZXIteWFtbC0xLTIKICQgbnBtIGluc3RhbGwgQHN3YWdnZXItYXBpL2FwaWRvbS1yZWZlcmVuY2UKYGBgCgojIyMgVXNhZ2UKCkV2ZXJ5IHBhY2thZ2Ugb2YgdGhlIG1vbm9yZXBvIGhhcyBhbiBhc3NvY2lhdGVkIFJFQURNRSBmaWxlIGRlbW9uc3RyYXRpbmcgaXRzIHB1cnBvc2UgYW5kIGNvbnRhaW5pbmcKdXNhZ2UgZXhhbXBsZXMuIEFuIG92ZXJ2aWV3IG9mIGF2YWlsYWJsZSBwYWNrYWdlcyBpcyBwcm92aWRlZCBpbiB0aGUgW0FwaURPTSBwYWNrYWdlc10oI2FwaWRvbS1wYWNrYWdlcykgc2VjdGlvbi4KCiMjIyBBcGlET00gUGxheWdyb3VuZAoKQXBpRE9NIFBsYXlncm91bmQgaXMgYSBSZWFjdCBhcHBsaWNhdGlvbiB0aGF0IHJ1bnMgaW4gYSBicm93c2VyIGFuZCBjYW4gdmlzdWFsbHkgZGVtb25zdHJhdGUgY2FwYWJpbGl0aWVzCm9mIHRoZSBBcGlET00uIEFwaURPTSBQbGF5Z3JvdW5kIGlzIGJ1aWxkIGFuZCBkZXBsb3llZCB3aGVuZXZlciB0aGUgbmV3IGNvbW1pdCBsYW5kcyBvbiBgbWFpbmAgYnJhbmNoLgoKIVtpbWFnZV0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMTkzMjg2LzE0NTAxMDUyMi01ZDg1ZTM0Yi04ZDI4LTRhMDctOWVlMi1iMjg4MDdhMDEzY2QucG5nKQoKQXBpRE9NIFBsYXlncm91bmQgaXMgYXZhaWxhYmxlIGF0IFtodHRwczovL3N3YWdnZXItYXBpLmdpdGh1Yi5pby9hcGlkb20vXShodHRwczovL3N3YWdnZXItYXBpLmdpdGh1Yi5pby9hcGlkb20vKQoKIyMgRGV2ZWxvcG1lbnQKClRoaXMgaXMgYSBtb25vcmVwbyBmb3IgYWxsIEFwaURPTSBwYWNrYWdlcy4gQWxsIHRoZSBjb2RlIGlzIHdyaXR0ZW4gaW4gW1R5cGVTY3JpcHRdKGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy8pLgpBbGwgdGhlIGluZm9ybWF0aW9uIG5lY2Vzc2FyeSBmb3Igd29ya2luZyB3aXRoIG1vbm9yZXBvIGNhbiBiZSBmb3VuZCBpbiB0aGlzIFthcnRpY2xlXShodHRwczovL3ZsYWRpbWlyZ29yZWouY29tL2Jsb2cvdGhpbmdzLWktaGF2ZS1sZWFybmVkLW1haW50YWluaW5nLWphdmFzY3JpcHQtbW9ub3JlcG8td2l0aC1sZXJuYS8pLgoKQXNzdW1pbmcgW3ByZXJlcXVpc2l0ZXNdKCNwcmVyZXF1aXNpdGVzKSBhcmUgYWxyZWFkeSBpbnN0YWxsZWQsIFtOb2RlLmpzXShodHRwczovL25vZGVqcy5vcmcvKSBgPj0yMi4xNC4wYCBhbmQgYG5wbSA+PTEwLjkuMmAKYXJlIHRoZSBtaW5pbXVtIHJlcXVpcmVkIHZlcnNpb25zIHRoYXQgdGhpcyByZXBvIHJ1bnMgb24sIGJ1dCB3ZSByZWNvbW1lbmQgdXNpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIE5vZGUuanNAMjIuCgojIyMgU2V0dGluZyB1cAoKUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdG8gc2V0dXAgdGhlIHJlcG9zaXRvcnkgZm9yIGxvY2FsIGRldmVsb3BtZW50OgoKYGBgc2hlbGwKICQgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20uZ2l0CiAkIGNkIGFwaWRvbQogJCBucG0gaQogJCBucG0gcnVuIGJ1aWxkCmBgYAoKIyMjIFNldHRpbmcgdXAgdmlhIGRvY2tlcgoKVGhlcmUgYXJlIHNpdHVhdGlvbnMsIHdoZW4gc2F0aXNmeWluZyBhbGwgdGhlICoqcHJlcmVxdWlzaXRlcyoqIG9mIHRoaXMgcmVwb3NpdG9yeSBvbiB5b3UgbG9jYWwKZGV2ZWxvcG1lbnQgbWFjaGluZSBpcyBqdXN0IG5vdCBwb3NzaWJsZS4gSW4gdGhhdCBjYXNlLCB5b3UgY2FuIHVzZSAqKmRvY2tlcioqIHRvIGdldCBhcm91bmQgaXQuClJlcG9zaXRvcnkgZGlyZWN0b3J5IGlzIG1vdW50ZWQgYXMgdm9sdW1lIGluc2lkZSBhIHJ1bm5pbmcgY29udGFpbmVyIGNhbGxlZCBgYXBpZG9tLWRldmAuClRoYXQgd2F5IHlvdSBjYW4gZWRpdCBjb2RlIGxvY2FsbHkgb24geW91ciBkZXZlbG9wbWVudCBtYWNoaW5lIGFuZCBydW4gKipucG0gc2NyaXB0cyoqCmluc2lkZSB0aGUgYGFwaWRvbS1kZXZgIGRvY2tlciBjb250YWluZXIuCgoqKkJ1aWxkIHRoZSBBcGlET00gZG9ja2VyIGltYWdlOioqCgpgYGBzaAogJCBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS5naXQKICQgY2QgYXBpZG9tCiAkIGRvY2tlci1jb21wb3NlIHVwCmBgYAoKKipJbnN0YWxsIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgQXBpRE9NIGluc2lkZSB0aGUgZG9ja2VyIGNvbnRhaW5lcjoqKgoKYGBgc2gKJCBkb2NrZXIgZXhlYyAtaXQgYXBpZG9tLWRldiBucG0gaSAtLXZlcmJvc2UKJCBkb2NrZXIgZXhlYyAtaXQgYXBpZG9tLWRldiBucG0gcnVuIGJ1aWxkCmBgYAoKKipSdW4gbnBtIHNjcmlwdHMgaW5zaWRlIHRoZSBkb2NrZXIgY29udGFpbmVyOioqCgpgYGBzaAokIGRvY2tlciBleGVjIC1pdCBhcGlkb20tZGV2IG5wbSBydW4gdGVzdApgYGAKCj4gTm90ZTogbW9ub3JlcG8gbmVlZHMgdG8gYmUgYnVpbGQgaW4gb3JkZXIgZm9yIG1vbm9yZXBvIHBhY2thZ2UgdG9wb2xvZ3kgdG8gd29yayBjb3JyZWN0bHkuCgojIyMgU2V0dGluZyB1cCB2aWEgR2l0SHViIENvZGVzcGFjZXMKClRoaXMgcmVwb3NpdG9yeSBpcyBbY29uZmlndXJlZF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vLmRldmNvbnRhaW5lcikgdG8gd29yayB3aXRoIFtHaXRIdWIgQ29kZXNwYWNlc10oaHR0cHM6Ly9naXRodWIuY29tL2NvZGVzcGFjZXMpLgpDcmVhdGUgYSBuZXcgY29kZXNwYWNlIGJ5IHBpY2tpbmcgdGhpcyByZXBvc2l0b3J5IGZyb20gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHJlcG9zaXRvcmllcy4KT25jZSB0aGUgY29kZXNwYWNlIGlzIGNyZWF0ZWQsIHJ1biBmb2xsb3dpbmcgY29tbWFuZHMgaW5zaWRlIHRoZSBjb2Rlc3BhY2UgdGVybWluYWw6CgpgYGBzaAogJCBucG0gaQogJCBucG0gcnVuIGJ1aWxkCmBgYAoKIyMjIG5wbSBzY3JpcHRzCgpTb21lIG5wbSBzY3JpcHRzIHJ1biBpbiBwYXJhbGxlbC4gRGVmYXVsdCBtYXhpbXVtIHBhcmFsbGVsaXphdGlvbiBpcyBzZXQgYDJgLiBUaGlzIGlzIGR1ZSB0byB0aGUgZmFjdAp0aGF0IG91ciBgQ0lgIHJ1bnMgb24gR2l0SHViIEFjdGlvbnMgd2hpY2ggdXNlcyBHaXRIdWIgaG9zdGVkIHJ1bm5lcnMgd2l0aCBbMi1jb3JlIENQVXNdKGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvdXNpbmctZ2l0aHViLWhvc3RlZC1ydW5uZXJzL2Fib3V0LWdpdGh1Yi1ob3N0ZWQtcnVubmVycyNzdXBwb3J0ZWQtcnVubmVycy1hbmQtaGFyZHdhcmUtcmVzb3VyY2VzKS4KSWYgeW91IGhhdmUgY29tcHV0ZXIgd2l0aCBtb3JlIHRoYW4gMiBDUFUgY29yZXMsIHlvdSBjYW4gc3BlZWQgcnVubmluZyBucG0gc2NyaXB0cyBieQpjcmVhdGluZyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYWxsZWQgYENQVV9DT1JFU2AgYW5kIGFzc2lnbiBpdCBhIG51bWJlciBvZiB5b3VyIENQVSBjb3Jlcy4KCkFzc3VtaW5nIDQgQ1BVIGNvcmVzIGFyZSBhdmFpbGFibGU6CgpgYGBzaAogICQgZXhwb3J0IENQVV9DT1JFUz00CiAgJCBucG0gcnVuIGJ1aWxkCmBgYAoKYGJ1aWxkYCBzY3JpcHRzIG5vdyBydW5zIG11Y2ggZmFzdGVyIHRoYW4gYmVmb3JlLgoKKipCdWlsZCBhcnRpZmFjdHMqKgoKYGBgc2gKICQgbnBtIHJ1biBidWlsZApgYGAKCioqVGVzdCoqCgpZb3UgbXVzdCBmaXJzdCAqKmJ1aWxkIHRoZSBhcnRpZmFjdHMqKiBiZWZvcmUgcnVubmluZyB0ZXN0cy4KCmBgYHNoCiAkIG5wbSBydW4gdGVzdApgYGAKCioqTGludCoqCgpgYGBzaAogJCBucG0gcnVuIGxpbnQKYGBgCgoqKkNoZWNrIFR5cGVTY3JpcHQgdHlwZXMqKgoKYGBgc2gKICQgbnBtIHJ1biB0eXBlc2NyaXB0OmNoZWNrLXR5cGVzCmBgYAoKKipHZW5lcmF0ZSBUeXBlU2NyaXB0IHR5cGVzKioKCmBgYHNoCiAkIG5wbSBydW4gdHlwZXNjcmlwdDpkZWNsYXJhdGlvbgpgYGAKCioqQ2xlYW4qKgoKYGBgc2gKICQgbnBtIHJ1biBjbGVhbgpgYGAKCiMjIyBCdWlsZCBhcnRpZmFjdHMKCkFsbCB0aGUgcGFja2FnZXMgaGF2ZSBpZGVudGljYWwgYnVpbGQgc3lzdGVtIGFuZCBleHBvc2UgYnVpbGQgYXJ0aWZhY3RzIGluIGlkZW50aWNhbCB3YXkuCkFmdGVyIGJ1aWxkaW5nIGFydGlmYWN0cywgZXZlcnkgcGFja2FnZSB3aWxsIGNvbnRhaW4gZml2ZSAoNSkgYWRkaXRpb25hbCBkaXJlY3Rvcmllcy4KQWxsIHRoZSBidWlsZCBhcnRpZmFjdHMgYXJlIHBvbHltb3JwaGljIC0gdGhleSBjYW4gcnVuIGluIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgbGlrZSBbV2ViIEJyb3dzZXJdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlYl9icm93c2VyKSwgW05vZGUuanNdKGh0dHBzOi8vbm9kZWpzLm9yZy8pIG9yIFtXZWIgV29ya2VyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2ViX1dvcmtlcnNfQVBJKS4KCioqKi5janMqKgoKVGhlc2UgZmlsZXMgYXJlIGdlbmVyYXRlZCBpbnNpZGUgYHNyYy9gIGRpcmVjdG9yeS4KQ29udGFpbiBFUzUgY29tcGF0aWJsZSBjb2RlIHdpdGggW0NvbW1vbkpTXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21tb25KUykgc3R5bGUgaW1wb3J0cy4KVGhlc2UgYnVpbGQgZnJhZ21lbnRzIGFyZSBpZGVhbCBmb3IgbGVnYWN5IFtOb2RlLmpzXShodHRwczovL25vZGVqcy5vcmcvKSBhbmQgc2ltaWxhciBlbnZpcm9ubWVudHMuCgoqKioubWpzKioKClRoZXNlIGZpbGVzIGFyZSBnZW5lcmF0ZWQgaW5zaWRlIGBzcmMvYCBkaXJlY3RvcnkuCkNvbnRhaW4gRVM1IGNvbXBhdGlibGUgY29kZSB3aXRoIFtFUzYgaW1wb3J0c10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvU3RhdGVtZW50cy9pbXBvcnQpLgpUaGVzZSBidWlsZCBmcmFnbWVudHMgYXJlIGlkZWFsIGZvciBtb2Rlcm4gW05vZGUuanNdKGh0dHBzOi8vbm9kZWpzLm9yZy8pLApidW5kbGluZyB3aXRoIFtXZWJwYWNrXShodHRwczovL3dlYnBhY2suanMub3JnLykgb3Igc2ltaWxhciBidW5kbGVycy4KCioqZGlzdC8qKgoKVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgYnVuZGxlZCBidWlsZCBmcmFnbWVudHMgdGhhdCB1c2UgW1VNRF0oaHR0cHM6Ly9naXRodWIuY29tL3VtZGpzL3VtZCkgbW9kdWxlcy4KVGhleSdyZSBpZGVhbCBmb3IgYnJvd3NlciB1c2FnZS4gVGhlIGZyYWdtZW50cyBhcmUgYm90aCBpbiBtaW5pZmllZCBhbmQgdW4tbWluaWZpZWQgZm9ybS4KCioqdHlwZXMvKioKClR5cGVTY3JpcHQgdHlwZXMgZ2VuZXJhdGVkIGZyb20gdGhlIHNvdXJjZSBjb2RlLgoKIyMjIFVzaW5nIHRoaXMgbW9ub3JlcG8gYXMgYSBsb2NhbCBkZXYgZGVwZW5kZW5jeQoKRm9yIHVzaW5nIHRoaXMgbW9ub3JlcG8gYXMgYSBsb2NhbCBkZXYgZGVwZW5kZW5jeSBmb3IgYGRlcGVuZGVudCBwcm9qZWN0YCwKZm9sbG93aW5nIGNvbW1hbmRzIG5lZWRzIHRvIGJlIGlzc3VlZCBpbnNpZGUgdGhlIG1vbm9yZXBvIGRpcmVjdG9yeSBhZnRlcgppdCBoYXMgYmVlbiBjbG9uZWQgdG8gYSBsb2NhbCBmaWxlc3lzdGVtOgoKYGBgc2gKICQgbnBtIGkKICQgbnBtIHJ1biBidWlsZAogJCBucG0gcnVuIGxpbmsKYGBgClRoaXMgd2lsbCBpbnN0YWxsIHRoZSBkZXBlbmRlbmNpZXMsIGJ1aWx0IHRoZSBtb25vcmVwbyBhbmQgbGluayBhbGwgaXQncyBwYWNrYWdlcyB0bwpnbG9iYWwgYG5vZGVfbW9kdWxlc2AuCgojIyMjIFVzYWdlIGluIGBkZXBlbmRlbnQgcHJvamVjdGAKCk5vdyB0aGF0IHdlIGhhdmUgbW9ub3JlcG8gcGFja2FnZXMgZ2xvYmFsbHkgbGlua2VkIHdlIGNhbiB1c2UgdGhlbSBpbiBgZGVwZW5kZW50IHByb2plY3RgLgpMZXQncyBzYXkgYGRlcGVuZGVudCBwcm9qZWN0YCBuZWVkcyB0byBkaXJlY3RseSB1c2UgZm9sbG93aW5nIHBhY2thZ2VzOgoKLSBAc3dhZ2dlci1hcGkvYXBpZG9tLWFzdAotIEBzd2FnZ2VyLWFwaS9hcGlkb20tY29yZQoKSXNzdWluZyBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIGluc2lkZSB0aGUgYGRlcGVuZGVudCBwcm9qZWN0YCB3aWxsIGxpbmsgdGhlc2UgcGFja2FnZXM6CgpgYGBzaAogJCBucG0gbGluayBAc3dhZ2dlci1hcGkvYXBpZG9tLWFzdCBAc3dhZ2dlci1hcGkvYXBpZG9tLWNvcmUKYGBgCgpJZiBtb3JlIHBhY2thZ2VzIChvciBhbGwgb2YgdGhlbSkgbmVlZCB0byBiZSB1c2VkIGluIGBkZXBlbmRlbnQgcHJvamVjdGAsIHRoZXkgbmVlZCB0byBiZSBleHBsaWNpdGx5CmVudW1lcmF0ZWQgdXNpbmcgYWJvdmUgY29tbWFuZCBhbmQgc2VwYXJhdGVkIGJ5IHNpbmdsZSBlbXB0eSBzcGFjZS4KCk5vdGljZSB0aGF0IHdlIGxpbmsgcGFja2FnZXMgdXNpbmcgc2luZ2xlIGBucG0gbGlua2AgY29tbWFuZC4gVGhpcyBpcyBuZWNlc3NhcnkKYmVjYXVzZSBvZiBob3cgYG5wbSBsaW5rYCB3b3JrcyBpbnRlcm5hbGx5LiBBbHdheXMgdXNlIHNpbmdsZSBgbnBtIGxpbmtgIGNvbW1hbmQgd2l0aAptdWx0aXBsZSBwYWNrYWdlIG5hbWVzIGFzIGFyZ3VtZW50LgoKKipEb24ndCBldmVyIGRvIHRoaXMhKioKCmBgYHNoCiAkIG5wbSBsaW5rIEBzd2FnZ2VyLWFwaS9hcGlkb20tYXN0CiAkIG5wbSBsaW5rIEBzd2FnZ2VyLWFwaS9hcGlkb20tY29yZQpgYGAKCj4gU2V0dGluZyB1cCBucG0gc2NyaXB0IGluIGBkZXBlbmRlbnQgcHJvamVjdGAgY2FuIGhlbHAga2VlcCB0aGluZ3MgRFJZLgoKIyMjIyBDbGVhbmluZyB1cAoKIyMjIyMgRGVwZW5kZW50IHByb2plY3QKClRoZSBiZXN0IHdheSB0byB1bmxpbmsgbW9ub3JlcG8gcGFja2FnZXMgZnJvbSBgZGVwZW5kZW50IHByb2plY3RgIGlzIHRvIHJ1biBmb2xsb3dpbmcgY29tbWFuZAppbnNpZGUgdGhlIGBkZXBlbmRlbnQgcHJvamVjdGA6CgpgYGBzaGVsbAogJCBucG0gaQpgYGAKClJ1bm5pbmcgYG5wbSBpYCB3aWxsIHJlbW92ZSB0aGUgbGlua3MgdG8gbW9ub3JlcG8gcGFja2FnZXMgYW5kIGluc3RhbGwgdGhlIHBhY2thZ2VzIGZyb20gbnBtIHJlZ2lzdHJ5LgoKPiBOb3RlOiBydW5uaW5nIGBucG0gdW5saW5rIDxwYWNrYWdlLW5hbWU+YCBpbiBgZGVwZW5kZW50IHByb2plY3RgIHdpbGwgcmVtb3ZlIHRoZSBsaW5rIHRvIG1vbm9yZXBvIHBhY2thZ2UsCmJ1dCB3aWxsIGxlYXZlIHRoZSBgZGVwZW5kZW50IHByb2plY3RgIG5vZGVfbW9kdWxlcyBpbiBjb3JydXB0ZWQgc3RhdGUgYXMgdGhlcmUgaXMgbm8gdmVyc2lvbiBvZiB0aGUgcGFja2FnZQppbnN0YWxsZWQgYW55bW9yZS4gUnVubmluZyBgbnBtIGlgIGlzIGFsd2F5cyBhIHByZWZlcmVkIHdheSB0byByZXN0b3JlIHlvdXIgbm9kZV9tb2R1bGVzIHRvIG9yaWdpbmFsIHN0YXRlLgoKCiMjIyMjIEFwaURPTSBtb25vcmVwbwoKSXQgaXMgbm90IG5lY2Vzc2FyeSB0byB1bmxpbmsgbW9ub3JlcG8gcGFja2FnZXMgZnJvbSBnbG9iYWwgYG5vZGVfbW9kdWxlc2AuIEJ1dCBpZiB5b3UKd2FudCB0byBrZWVwIHlvdXIgZ2xvYmFsIGBub2RlX21vZHVsZXNgIHRpZHkgeW91IGNhbiBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIGluIG1vbm9yZXBvIGRpcmVjdG9yeToKCmBgYHNoZWxsCiAkIG5wbSBydW4gdW5saW5rCmBgYAoKUnVubmluZyBhYm92ZSBucG0gc2NyaXB0IHdpbGwgdW5saW5rIGFsbCBtb25vcmVwbyBwYWNrYWdlcyBmcm9tIGdsb2JhbCBgbm9kZV9tb2R1bGVzYC4KCklmIHlvdSB3YW50IHRvIGp1c3QgdW5saW5rIHBhcnRpY3VsYXIgbW9ub3JlcG8gcGFja2FnZXMsIHlvdSBoYXZlIHRvIGVudW1lcmF0ZSB0aGVtIGV4cGxpY2l0bHk6CgpgYGBzaGVsbAogJCBucG0gdW5saW5rIC0tZ2xvYmFsIEBzd2FnZ2VyLWFwaS9hcGlkb20tYXN0IEBzd2FnZ2VyLWFwaS9hcGlkb20tY29yZQpgYGAKCiMjIENvbnRyaWJ1dGluZwoKVGhpcyBwcm9qZWN0IHVzZXMgW3N3YWdnZXItYXBpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkpIEdpdEh1YiBvcmdhbml6YXRpb25zIGNvbnRyaWJ1dGluZyBndWlkZS4KWW91IGNhbiBvYnRhaW4gY29weSBvZiB0aGlzIGNvbnRyaWJ1dGluZyBndWlkZSBhdCBbaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpLy5naXRodWIvYmxvYi9tYXN0ZXIvQ09OVFJJQlVUSU5HLm1kXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvLmdpdGh1Yi9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQpLgpSZWFkIG91ciBjb250cmlidXRpbmcgZ3VpZGUgdG8gbGVhcm4gYWJvdXQgb3VyIGRldmVsb3BtZW50IHByb2Nlc3MsIGhvdyB0byBwcm9wb3NlIGJ1Z2ZpeGVzIGFuZCBpbXByb3ZlbWVudHMsCmFuZCBob3cgdG8gYnVpbGQgYW5kIHRlc3QgeW91ciBjaGFuZ2VzIHRvIEFwaURPTS4KCiMjIERvY3VtZW50YXRpb24KCklmIHRoZXJlIGlzIG9uZSB0aGluZyBBUEkgZGVzY3JpcHRpb24gbGFuZ3VhZ2VzIGhhdmUgdGF1Z2h0IHVzLCBpdCBpcyB0aGF0IGEgc2luZ2xlIGNvbnRyYWN0IHByb3ZpZGVzCnRoZSBiZXN0IGFuZCBmYXN0ZXN0IHdheSB0byBkZXNpZ24gYW5kIGl0ZXJhdGUgb24gYW4gQVBJLiBEZXZlbG9wZXJzIGJ1aWxkaW5nIHRoZSBBUEkgY2FuIG1vdmUgaW5kZXBlbmRlbnRseQphcyB0aGV5IHByb2dyZXNzIHRvd2FyZHMgdGhlIGRlZmluZWQgY29udHJhY3QgZm91bmQgaW4gdGhlIE9wZW5BUEkgb3IgUkFNTCBkb2N1bWVudC4KQ29udmVyc2VseSwgQVBJIGNvbnN1bWVycyBjYW4gYnVpbGQgdG9vbHMgZm9yIGNvbnN1bWluZyB0aGUgQVBJIGJhc2VkIG9uIHRoZSBBUEkgZGVmaW5pdGlvbiBkb2N1bWVudC4KClRoaXMgc2FtZSBwYXR0ZXJuIGhhcyBwcm92ZW4gdG8gYmUganVzdCBhcyB2YWx1YWJsZSBmb3IgYnVpbGRpbmcgQVBJIGRlc2NyaXB0aW9uIGxhbmd1YWdlcyBhbmQgdG9vbGluZy4KQXBpRE9NIGlzIHRoZSBjb250cmFjdCBmb3IgcHJvZHVjaW5nIGFuZCBjb25zdW1pbmcgdGhlIG1hbnkgQVBJIGRlc2NyaXB0aW9uIGxhbmd1YWdlcyBhbmQgc2VyaWFsaXphdGlvbiBmb3JtYXRzCmFuZCBhbGxvd3MgZXZlcnlvbmUgdG8gbW92ZSBxdWlja2x5IGFuZCBpbmRlcGVuZGVudGx5LgoKIyMjIFdoYXQgaXMgYW4gRWxlbWVudCA/CgpBcGlET00gaXMgbWFkZSB1cCBvZiBtYW55IHNtYWxsIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIHJpY2ggc2VtYW50aWMgbWVhbmluZyBnaXZlbiB0aGVpciB2YWx1ZSBhbmQgY29udGV4dC4KQW4gZWxlbWVudCBpcyBhbiBpbmRpdmlkdWFsIHBpZWNlIHRoYXQgbWFrZXMgdXAgYW4gQVBJLCBhbmQgY2FuIHJhbmdlIGZyb20gZGVmaW5pbmcgYSByZXNvdXJjZSB0byBwcm92aWRpbmcKYW4gZXhhbXBsZSBvZiBhbiBIVFRQIHJlcXVlc3QuCgpUaGUgQXBpRE9NIGRlZmluZXMgZWxlbWVudHMgdG8gYmUgdXNlZCBmb3I6CgpEZXNjcmliaW5nIGFuIEFQSQpEZXNjcmliaW5nIGRhdGEgc3RydWN0dXJlcyB1c2VkIHdpdGhpbiB0aGF0IEFQSQpEZXNjcmliaW5nIHBhcnNlIHJlc3VsdHMgd2hlbiBwYXJzaW5nIEFQSS1yZWxhdGVkIGRvY3VtZW50cwpUaGVzZSBlbGVtZW50cyBhbHNvIHNlZWsgdG8gcHJvdmlkZSBhIHdheSB0byBkZWNvdXBsZSBBUElzIGFuZCB0aGVpciBzZW1hbnRpY3MgZnJvbSB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KClRoZSBzdHJ1Y3R1cmUgb2YgYW4gQXBpRE9NIGlzIHJlY3Vyc2l2ZSBieSBuYXR1cmUuIFdoZW4gbG9va2luZyBmb3Igc3BlY2lmaWMgZWxlbWVudHMsCml0IGlzIGJlc3QgdG8gdHJhdmVyc2UgdGhlIEFwaURPTSB0cmVlIHRvIGxvb2sgZm9yIGEgbWF0Y2guIFF1ZXJ5aW5nIHRoZSBBcGlET00gdHJlZSB3aWxsCmRlY291cGxlIG91ciBjb2RlIGZyb20gc3BlY2lmaWMgQVBJIGRlc2NyaXB0aW9uIGxhbmd1YWdlLiBBbHNvLCBpdCBkZWNvdXBsZXMgb3VyIGNvZGUgZnJvbSB0aGUKc3BlY2lmaWMgc3RydWN0dXJlIG9mIHRoZXNlIGRvY3VtZW50cyBhcyBsb25nIGFzIHRoZXkgYXJlIHNlbWFudGljYWxseSBlcXVpdmFsZW50LgoKIyMjIEFzIGEgd2F5IHRvIGFubm90YXRlIEpTT04KCkFwaURPTSBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byB0YWtlIGEgbm9ybWFsIEpTT04gc3RydWN0dXJlIGFuZCBhZGQgYSBsYXllciBvbiB0b3Agb2YgaXQgZm9yIHRoZSBwdXJwb3NlCm9mIGFubm90YXRpbmcgYW5kIGFkZGluZyBzZW1hbnRpYyBkYXRhLiBJbnN0ZWFkIG9mIGNyZWF0aW5nIGFuIGVudGlyZWx5IGRpZmZlcmVudCBzdHJ1Y3R1cmUgdG8gZGVzY3JpYmUgdGhlIGRhdGEsCkFwaURPTSdzIGFwcHJvYWNoIGlzIHRvIGV4cGFuZCB0aGUgZXhpc3Rpbmcgc3RydWN0dXJlICh3ZSBjYWxsIGl0ICJyZWZyYWN0aW5nIiBhIHN0cnVjdHVyZSkuCkhlcmUgaXMgYW4gZXhhbXBsZSB0byBzaG93IG91ciBwb2ludC4KClRha2UgdGhlIGZvbGxvd2luZyBzaW1wbGUgSlNPTiBvYmplY3QuCgpgYGBqc29uCnsKICAibmFtZSI6ICJKb2huIERvZSIsCiAgImVtYWlsIjogImpvaG5AZXhhbXBsZS5jb20iCn0KYGBgCgpVc2luZyBBcGlET00sIHdlIGNhbiBleHBhbmQgdGhpcyBvdXQgYW5kIGFkZCBzb21lIGh1bWFuLXJlYWRhYmxlIHRpdGxlcyBhbmQgZGVzY3JpcHRpb25zLgoKYGBganNvbgp7CiAgImVsZW1lbnQiOiAib2JqZWN0IiwKICAiY29udGVudCI6IFsKICAgIHsKICAgICAgImVsZW1lbnQiOiAibWVtYmVyIiwKICAgICAgIm1ldGEiOiB7CiAgICAgICAgInRpdGxlIjogIk5hbWUiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJOYW1lIG9mIGEgcGVyc29uIgogICAgICB9LAogICAgICAiY29udGVudCI6IHsKICAgICAgICAia2V5IjogewogICAgICAgICAgImVsZW1lbnQiOiAic3RyaW5nIiwKICAgICAgICAgICJjb250ZW50IjogIm5hbWUiCiAgICAgICAgfSwKICAgICAgICAidmFsdWUiOiB7CiAgICAgICAgICAiZWxlbWVudCI6ICJzdHJpbmciLAogICAgICAgICAgImNvbnRlbnQiOiAiSm9obiBEb2UiCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgewogICAgICAiZWxlbWVudCI6ICJtZW1iZXIiLAogICAgICAibWV0YSI6IHsKICAgICAgICAidGl0bGUiOiAiRW1haWwiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJFbWFpbCBhZGRyZXNzIGZvciB0aGUgcGVyc29uIgogICAgICB9LAogICAgICAiY29udGVudCI6IHsKICAgICAgICAia2V5IjogewogICAgICAgICAgImVsZW1lbnQiOiAic3RyaW5nIiwKICAgICAgICAgICJjb250ZW50IjogImVtYWlsIgogICAgICAgIH0sCiAgICAgICAgInZhbHVlIjogewogICAgICAgICAgImVsZW1lbnQiOiAic3RyaW5nIiwKICAgICAgICAgICJjb250ZW50IjogImpvaG5AZXhhbXBsZS5jb20iCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgXQp9CmBgYAoKV2UgYWRkZWQgc29tZSBzZW1hbnRpYyBkYXRhIHRvIHRoZSBleGlzdGluZyBkYXRhLCBidXQgd2UgZGlkIHNvIHdoaWxlIHJldGFpbmluZyB0aGUgc2VtYW50aWMgc3RydWN0dXJlIG9mIHRoZSBkYXRhCndpdGggdGhlIG9iamVjdCBhbmQgc3RyaW5nIGVsZW1lbnRzLiAqKlRoaXMgbWVhbnMgdGhlcmUgaXMgbm8gc2VtYW50aWMgZGlmZmVyZW5jZSBpbiB0aGUgQXBpRE9NIHN0cnVjdHVyZSBhbmQKdGhlIG9yaWdpbmFsIEpTT04gc3RydWN0dXJlKiouIEl0IGFsc28gbWVhbnMgd2UgY2FuIGFkZCBleHRyYSBzZW1hbnRpY3Mgb24gdG9wIG9mIHRoZXNlIHN0cnVjdHVyYWwgb25lcy4KCiMjIyBBcyBhIHVuaWZ5aW5nIHN0cnVjdHVyZQoKWW91IG1heSBoYXZlIG5vdGljZWQgdGhlIHNpbWlsYXJpdGllcyBiZXR3ZWVuIHRoZSBKU09OIGV4YW1wbGUgYWJvdmUgYW5kIFhNTC4KWE1MIGhhcyBlbGVtZW50cywgYXR0cmlidXRlcywgYW5kIGNvbnRlbnQuIEl0IHdvdWxkIGJlIGEgZ29vZCBxdWVzdGlvbiB0byBhc2sgaWYgd2Ugc2ltcGx5IHR1cm5lZCBKU09OIGludG8gWE1MLgoKQXBpRE9NIGlzIGFjdHVhbGx5IG1lYW50IHRvIHByb3ZpZGUgdGhlc2UgY3Jvc3MtZm9ybWF0IHNpbWlsYXJpdGllcy4gSXQgbWVhbnMgdGhhdCBhIEpTT04gc3RydWN0dXJlCm1heSBiZSByZWZyYWN0ZWQgYW5kIGNvbnZlcnRlZCB0byBYTUwuIEl0IGFsc28gbWVhbnMgYW4gWE1MIGRvY3VtZW50IG1heSBiZSBjb252ZXJ0ZWQgaW50byBBcGlET00uClRoaXMgYWxzbyBnb2VzIGZvciBZQU1MLCBIVE1MLCBDU1YsIGFuZCBtYW55IG90aGVyIGZvcm1hdHMuIEFwaURPTSBpcyBhIHdheSB0byB1c2UgcmVmcmFjdGluZyB0byB1bmlmeSB0aGVzZSBzdHJ1Y3R1cmVzLgoKTGV0J3MgbG9vayBhdCBhbm90aGVyIGV4YW1wbGUsIHRoaXMgdGltZSByZWZhY3RpbmcgWE1MIHdpdGggQXBpRE9NLgoKYGBgeG1sCjxwZXJzb24gbmFtZT0iSm9obiBEb2UiIGVtYWlsPSJqb2huQGV4YW1wbGUuY29tIj48L3BlcnNvbj4KYGBgCgpUaGlzIGV4YW1wbGUgaW4gcmVmcmFjdGVkIGZvcm0gd291bGQgbG9vayBsaWtlIHRoZSBmb2xsb3dpbmcgc25pcHBldC4gTm90aWNlIHRoYXQgd2UncmUgdXNpbmcgYXR0cmlidXRlcyBpbiByZXN1bHRpbmcgQXBpRE9NIHN0cnVjdHVyZS4KCmBgYGpzb24KewogICJlbGVtZW50IjogInBlcnNvbiIsCiAgImF0dHJpYnV0ZXMiOiB7CiAgICAibmFtZSI6IHsKICAgICAgImVsZW1lbnQiOiAic3RyaW5nIiwKICAgICAgImNvbnRlbnQiOiAiSm9obiBEb2UiCiAgICB9LAogICAgImVtYWlsIjogewogICAgICAiZWxlbWVudCI6ICJzdHJpbmciLAogICAgICAiY29udGVudCI6ICJqb2huQGV4YW1wbGUuY29tIgogICAgfQogIH0KfQpgYGAKClNpbmNlIHdlIGNhbiBnbyBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIEpTT04sIFlBTUwsIFhNTCwgYW5kIG90aGVyIGZvcm1hdHMsIHdlIGFyZSBub3cgYWJsZSB0byB1c2Ugc2FtZSB0b29sc2V0IGFjcm9zcyB0aGUgZGlmZmVyZW50IGZvcm1hdHMuClRoYXQgbWVhbnMgd2UgY291bGQgdXNlIFhTTFQgdG8gdHJhbnNmb3JtIEpTT04gZG9jdW1lbnRzLgoKIyMjIEFzIGEgcXVlcnlhYmxlIHN0cnVjdHVyZQoKQXBpRE9NIGlzIG1lYW50IHRvIGZyZWUgdXMgZnJvbSB0aGUgc3RydWN0dXJlIG9mIG91ciBkb2N1bWVudHMsIHNpbWlsYXIgdG8gaG93IFhNTCBkb2VzIHdpdGggdGhpbmdzCmxpa2UgWFBBVEggb3IgdGhlIERPTS4gSXQgbWVhbnMgd2UgY2FuIG5vdyBxdWVyeSBKU09OIGRvY3VtZW50cyBhcyBpZiB0aGVyZSB3YXMgYW4gdW5kZXJseWluZyBET00sCndoaWNoIGRlY291cGxlcyBvdXIgU0RLIGZyb20gb3VyIHN0cnVjdHVyZSBhbmQgb3VyIHN0cnVjdHVyZSBmcm9tIG91ciBkYXRhLgoKIyMjIEFwaURPTSBzdGFnZXMKClRoZXJlIGFyZSB0aHJlZSBzdGFnZXMgdG8gQXBpRE9NCgotIFBhcnNlIHN0YWdlCi0gUmVmcmFjdCBzdGFnZQotIEdlbmVyYXRlIHN0YWdlCgoKIyMjIyBQYXJzZSBzdGFnZQoKVGhlIHBhcnNlIHN0YWdlIHRha2VzIEpTT04gc3RyaW5nIGFuZCBwcm9kdWNlcyBBcGlET00gc3RydWN0dXJlIHVzaW5nIHRoZSBiYXNlIEFwaURPTSBuYW1lc3BhY2UuIFRoZXJlIGFyZSB0d28gcGhhc2VzIG9mIHBhcnNpbmc6CgotIExleGljYWwgQW5hbHlzaXMgcGhhc2UKLSBTeW50YWN0aWMgQW5hbHlzaXMgcGhhc2UKCgojIyMjIyBMZXhpY2FsIEFuYWx5c2lzIHBoYXNlCgpMZXhpY2FsIEFuYWx5c2lzIHdpbGwgdGFrZSBhIEpTT04gc3RyaW5nIGFuZCB0dXJuIGl0IGludG8gYSBzdHJlYW0gb2YgdG9rZW5zLiB0cmVlLXNpdHRlciAvIHdlYi10cmVlLXNpdHRlciBpcyB1c2VkCmFzIGFuIHVuZGVybHlpbmcgbGV4aWNhbCBhbmFseXplci4KCiMjIyMjIFN5bnRhY3RpYyBBbmFseXNpcwoKU3ludGFjdGljIEFuYWx5c2lzIHdpbGwgdGFrZSBhIHN0cmVhbSBvZiB0b2tlbnMgYW5kIHR1cm4gaXQgaW50byBhbiBBcGlET00gcmVwcmVzZW50YXRpb24uCkNTVCBwcm9kdWNlZCBieSBsZXhpY2FsIGFuYWx5c2lzIGlzIHN5bnRhY3RpY2FsbHkgYW5hbHl6ZWQsIGFuZCBBcGlET00gc3RydWN0dXJlIHVzaW5nIGJhc2UgKGdlbmVyaWMpIEFwaURPTSBuYW1lc3BhY2UgaXMgcHJvZHVjZWQuClN5bnRhY3RpYyBhbmFseXNpcyBjYW4gZnVydGhlciBiZSBkaXJlY3Qgb3IgaW5kaXJlY3QuIEpTT04gcGFyc2VyIGhhcyBib3RoIGRpcmVjdCBhbmQgaW5kaXJlY3Qgc3ludGFjdGljYWwgYW5hbHl6ZXJzLApidXQgWUFNTCBwYXJzZXIgb25seSBoYXMgYW4gaW5kaXJlY3Qgb25lLgoKIyMjIyMjIERpcmVjdCBTeW50YWN0aWNhbCBhbmFseXNpcwoKVGhpcyBhbmFseXNpcyBkaXJlY3RseSB0dXJucyB0cmVlLXNpdHRlciBDU1QgaW50byBBcGlET00uIFNpbmdsZSB0cmF2ZXJzYWwgaXMgcmVxdWlyZWQsIHdoaWNoIG1ha2VzIGl0IHN1cGVyIHBlcmZvcm1hbnQsCmFuZCBpdCdzIHRoZSBkZWZhdWx0IGFuYWx5c2lzIHVzZWQuCgojIyMjIyMgSW5kaXJlY3QgU3ludGFjdGljIGFuYWx5c2lzCgpUaGlzIGFuYWx5c2lzIHR1cm5zIHRyZWVzLXNpdHRlciBDU1QgaW50byBKU09OIEFTVCByZXByZXNlbnRhdGlvbi4gVGhlbiBKU09OIEFTVCBpcyB0dXJuZWQgaW50byBBcGlET00uClR3byB0cmF2ZXJzYWxzIGFyZSByZXF1aXJlZCwgd2hpY2ggbWFrZXMgdGhlIGluZGlyZWN0IGFuYWx5c2lzIGxlc3MgcGVyZm9ybWFudCB0aGFuIHRoZSBkaXJlY3Qgb25lLgpUaG91Z2ggbGVzcyBwZXJmb3JtYW50LCBoYXZpbmcgSlNPTiBBU1QgcmVwcmVzZW50YXRpb24gYWxsb3dzIHVzIHRvIGRvIGZ1cnRoZXIgY29tcGxleCBhbmFseXNpcy4KCiMjIyMgUmVmcmFjdCBzdGFnZQoKVGhlIHJlZnJhY3Qgc3RhZ2UgdGFrZXMgYSBnZW5lcmljIEFwaURPTSBzdHJ1Y3R1cmUgKGJhc2UgbmFtZXNwYWNlKSBhbmQgdHJhdmVyc2VzIHRocm91Z2ggaXQsIGFkZGluZywgdXBkYXRpbmcsCmFuZCByZW1vdmluZyBub2RlcyBhcyBpdCBnb2VzIGFsb25nIGFuZCB0dXJuaW5nIGl0IGludG8gc2VtYW50aWMgQXBpRE9NIHN0cnVjdHVyZSAobGlrZSBPcGVuQVBJIG9yIEFzeW5jQVBJKS4KVGhpcyBpcyBieSBmYXIgdGhlIG1vc3QgY29tcGxleCBwYXJ0IG9mIEFwaURPTS4gVGhpcyBpcyB3aGVyZSBwbHVnaW5zIG9wZXJhdGUuCklmIHBsdWdpbnMgYXJlIHVzZWQsIGFkZGl0aW9uYWwgdHJhdmVyc2FsIGlzIGN1cnJlbnRseSBuZWVkZWQuCgojIyMjIEdlbmVyYXRlIHN0YWdlCgpXZSBjYW4gZ2VuZXJhdGUgSlNPTi9ZQU1MIGRvY3VtZW50cyBmcm9tIHRoZSBBcGlET00gc3RydWN0dXJlLgpJdCBkb2Vzbid0IG1hdHRlciBpZiB0aGUgb3JpZ2luYWwgZG9jdW1lbnQgd2FzIG9yaWdpbmFsbHkgZGVmaW5lZCBpbiBKU09OIG9yIFlBTUwuCkdlbmVyYXRlZCBKU09OL1lBTUwgZG9jdW1lbnRlZCB3aWxsIGhhdmUgZXhhY3RseSB0aGUgc2FtZSBzZW1hbnRpYyBpbmZvcm1hdGlvbiBhcyB0aGUgb3JpZ2luYWwgb25lLApidXQgdGhlIHN0eWxlIGluZm9ybWF0aW9uIGZyb20gdGhlIG9yaWdpbmFsIGRvY3VtZW50IGlzIG5vdCBwcmVzZXJ2ZWQgKHdoaXRlIHNwYWNlcy9jb21tZW50cywgZXRjLi4pLgoKYGBgbWVybWFpZApmbG93Y2hhcnQgVEQKICAlJSBJbnB1dCBub2RlCiAgSW5bIkpTT04vWUFNTCBzdHJpbmciXQoKICAlJS0tLSBQYXJzZSBTdGFnZSBhbmQgaW50ZXJuYWxzCiAgc3ViZ3JhcGggUGFyc2VfU3RhZ2VbIlBhcnNlIFN0YWdlIl0KICAgIFAxWyJMZXhpY2FsIEFuYWx5c2lzPGJyLz5KU09OL1lBTUwg4oaSIENTVCJdCiAgICBTQVsiU3ludGFjdGljIEFuYWx5c2lzIl0KICAgIFNBMVsiRGlyZWN0PGJyLz4qQ1NUIOKGkiBHZW5lcmljIEFwaURPTSoiXQogICAgU0EyWyJJbmRpcmVjdDxici8+KkNTVCDihpIgSlNPTiBBU1Qg4oaSIEdlbmVyaWMgQXBpRE9NKiJdCgogICAgUDEgLS0+IFNBCiAgICBTQSAtLT4gU0ExCiAgICBTQSAtLT4gU0EyCiAgZW5kCgogICUlLS0tIFJlZnJhY3QgU3RhZ2UKICBzdWJncmFwaCBSZWZyYWN0X1N0YWdlWyJSZWZyYWN0IFN0YWdlIl0KICAgIFJbIkdlbmVyaWMgQXBpRE9NICsgcGx1Z2lucyDihpIgU2VtYW50aWMgQXBpRE9NIl0KICBlbmQKCiAgJSUtLS0gR2VuZXJhdGUgU3RhZ2UKICBzdWJncmFwaCBHZW5lcmF0ZV9TdGFnZVsiR2VuZXJhdGUgU3RhZ2UiXQogICAgR1siR2VuZXJhdGUgSlNPTi9ZQU1MIG91dHB1dDxici8+KHN0eWxlIGluZm8gbG9zdCkiXQogIGVuZAoKICAlJSBPdXRwdXQgbm9kZQogIE91dFsiSlNPTi9ZQU1MIHN0cmluZyJdCgogICUlLS0tIENvbm5lY3Rpb25zCiAgSW4gLS0+IFBhcnNlX1N0YWdlCiAgUGFyc2VfU3RhZ2UgLS0+IFJlZnJhY3RfU3RhZ2UKICBSZWZyYWN0X1N0YWdlIC0tPiBHZW5lcmF0ZV9TdGFnZQogIEdlbmVyYXRlX1N0YWdlIC0tPiBPdXQKYGBgCgotLS0KCkhhdmluZyBzYWlkIHRoYXQsIHRoaXMgaXMgaG93IEpTT04gT3BlbkFQSSAzLjEgZG9jdW1lbnQgZ2V0cyB0cmFuc2Zvcm1lZCBpbnRvIEFwaURPTToKCgoqKndpdGggZGlyZWN0IHN5bnRhY3RpYyBhbmFseXNpcyAocmVxdWlyZXMgMiB0cmF2ZXJzYWxzKSoqCmBgYApKU09OIHN0cmluZyAtPiB0cmVlLXNpdHRlciBDU1QgLT4gIGdlbmVyaWMgQXBpRE9NIC0+IE9wZW5BUEkgMy4xIEFwaURPTQpgYGAKCioqd2l0aCBpbmRpcmVjdCBzeW50YWN0aWMgYW5hbHlzaXMgKHJlcXVpcmVzIDMgdHJhdmVyc2FscykqKgpgYGAKSlNPTiBzdHJpbmcgLT4gdHJlZS1zaXR0ZXIgQ1NUIC0+IEpTT04gQVNUIC0+IGdlbmVyaWMgQXBpRE9NIC0+IE9wZW5BUEkgMy4xIEFwaURPTQpgYGAKCioqd2l0aCBkaXJlY3Qgc3ludGFjdGljIGFuYWx5c2lzIGFuZCBhZGRpdGlvbmFsIHBsdWdpbnMgKHJlcXVpcmVzIDMgdHJhdmVyc2FsKSoqCmBgYApKU09OIHN0cmluZyAtPiB0cmVlLXNpdHRlciBDU1QgLT4gZ2VuZXJpYyBBcGlET00gLT4gT3BlbkFQSSAzLjEgQXBpRE9NIC0+IHBsdWdpbnMgLT4gT3BlbkFQSSAzLjEgQXBpRE9NCmBgYAotLS0KClRoaXMgdmVyeSBjbG9zZWx5IHJlZmxlY3RzIGhvdyBbQmFiZWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJlbC9iYWJlbCkgd29ya3MgKFtCYWJlbCBQbHVnaW4gSGFuZGJvb2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9qYW1pZWJ1aWxkcy9iYWJlbC1oYW5kYm9vay9ibG9iL21hc3Rlci90cmFuc2xhdGlvbnMvZW4vcGx1Z2luLWhhbmRib29rLm1kKSkuClRoZWlyIHRyYW5zZm9ybSBwaGFzZSBpcyBvdXIgcmVmcmFjdCBwaGFzZS4gVGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGF0IHdoZW4gcGx1Z2lucyBhcmUgaW52b2x2ZWQsIG91ciB0cmFuc2Zvcm0gcGhhc2UKcmVxdWlyZXMgMiB0cmF2ZXJzYWxzIGluc3RlYWQgb2YgYSBzaW5nbGUgb25lLiBXZSBjYW4gZmluZCBhIHdheSBpbiB0aGUgZnV0dXJlIGhvdyB0byBmb2xkIHRoZXNlIDIgdHJhdmVyc2FscyBpbnRvIGEgc2luZ2xlIG9uZS4KCiMjIEFwaURPTSBwYWNrYWdlcwoKIyMjIEFwaURPTSBBU1QKCltAc3dhZ2dlci1hcGkvYXBpZG9tLWFzdF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vcGFja2FnZXMvYXBpZG9tLWFzdCkgY29udGFpbnMgdG9vbHMgbmVjZXNzYXJ5IGZvciBbc3ludGFjdGljIGFuYWx5c2lzXSgjc3ludGFjdGljLWFuYWx5c2lzKSwgd2hpY2ggd2lsbCB0YWtlIGEgc3RyZWFtIG9mIHRva2VucyBhbmQgdHVybiBpdCBpbnRvIGFuIEFTVCByZXByZXNlbnRhdGlvbi4gVGhlIEFTVCByZXByZXNlbnRzIHRoZSBzdHJ1Y3R1cmUgb2YgaW5wdXQgc3RyaW5nIGluIGEgd2F5IHRoYXQgbWFrZXMgaXQgZWFzaWVyIHRvIHdvcmsgd2l0aC4gVGhlIHBhY2thZ2UgY29udGFpbnMgQVNUIG5vZGVzIGZvciBKU09OIGFuZCBZQU1MIDEuMiBmb3JtYXRzIGFuZCBjb21lcyB3aXRoIGl0cyBvd24gdHJhdmVyc2FsIGFsZ29yaXRobSBjb252ZW5pZW50IGZvciB0cmF2ZXJzaW5nIENTVCBvciBBU1QuCgojIyMgQXBpRE9NIENvcmUKCltAc3dhZ2dlci1hcGkvYXBpZG9tLWNvcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1jb3JlKSBpcyBhIHBhY2thZ2UgdGhhdCBjb250YWlucyB0b29scyBmb3IgbWFuaXB1bGF0aW5nIEFwaURPTSBzdHJ1Y3R1cmVzLiBJdCBwcm92aWRlcyBhIGJhc2UgQXBpRE9NIG5hbWVzcGFjZSwgcHJlZGljYXRlcyBmb3IgYWxsIHByaW1pdGl2ZSBhbmQgYmFzZSBuYW1lc3BhY2UgZWxlbWVudHMsIGFuZCBhbGdvcml0aG1zIGZvciB0cmFuc2Zvcm1pbmcgYW5kIGhhbmRsaW5nIEFwaURPTSBzdHJ1Y3R1cmVzLiBUaGUgYXZhaWxhYmxlIGFsZ29yaXRobXMgYWxsb3cgZm9yIHRyYW5zY2x1ZGluZywgbWVyZ2luZywgY29weWluZywgdHJhdmVyc2luZyBhbmQgdHJhbnNmb3JtaW5nIEFwaURPTSBzdHJ1Y3R1cmVzIGludG8gaXRzIGRpZmZlcmVudCBmb3Jtcy4KCiMjIyBSZXRyaWV2aW5nIEFwaURPTSBFbGVtZW50cwoKSXQgaXMgcG9zc2libGUgdG8gZXZhbHVhdGUgW0pTT04gUG9pbnRlcl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vcGFja2FnZXMvYXBpZG9tLWpzb24tcG9pbnRlciksIFtSZWxhdGl2ZSBKU09OIFBvaW50ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1qc29uLXBvaW50ZXItcmVsYXRpdmUpIGFuZCBbSlNPTlBhdGggZXhwcmVzc2lvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1qc29uLXBhdGgpIGFnYWluc3QgQXBpRE9NIHN0cnVjdHVyZXMuIEEgc3VjY2Vzc2Z1bCBldmFsdWF0aW9uIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgQXBpRE9NIEVsZW1lbnQgYXQgdGhlIHNwZWNpZmllZCBsb2NhdGlvbi4KCiMjIyBBcGlET00gTmFtZXNwYWNlcwoKVGhlIG5hbWVzcGFjZSBwYWNrYWdlcyBwcm92aWRlIEFwaURPTSBuYW1lc3BhY2VzIGZvciBzcGVjaWZpY2F0aW9ucywgY29uc2lzaXRpbmcgb2YgYSBudW1iZXIgb2YgZWxlbWVudHMgaW1wbGVtZW50ZWQgb24gdG9wIG9mIHByaW1pdGl2ZSBvbmVzLiBUaGUgcmVmcmFjdG9yIGxheWVyIGluIGVhY2ggbmFtZXNwYWNlIGFsbG93cyB0byB0cmFuc2Zvcm0gSmF2YVNjcmlwdCBzdHJ1Y3R1cmVzIG9yIGdlbmVyaWMgQXBpRE9NIGludG8gZWxlbWVudHMgZnJvbSB0aGF0IHNwZWNpZmljIG5hbWVzcGFjZS4gVGhlIGVsZW1lbnRzIGNhbiBiZSB0cmF2ZXJzZWQgdXNpbmcgdGhlIGB2aXNpdGAgZnVuY3Rpb24gcHJvdmlkZWQgYnkgW2FwaWRvbS1jb3JlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL3RyZWUvbWFpbi9wYWNrYWdlcy9hcGlkb20tY29yZSkgcGFja2FnZS4KCkF2YWlsYWJsZSBuYW1lc3BhY2VzOgoKLSBbQVBJIERlc2lnbiBTeXN0ZW1zXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL3RyZWUvbWFpbi9wYWNrYWdlcy9hcGlkb20tbnMtYXBpLWRlc2lnbi1zeXN0ZW1zKQotIFtBcmF6em8gMS4wLjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1ucy1hcmF6em8tMSkKLSBbQXN5bmNBUEkgMi54LnldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1ucy1hc3luY2FwaS0yKQotIFtKU09OIFNjaGVtYSBEcmFmdCA0LzVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1ucy1qc29uLXNjaGVtYS1kcmFmdC00KQotIFtKU09OIFNjaGVtYSBEcmFmdCA2XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL3RyZWUvbWFpbi9wYWNrYWdlcy9hcGlkb20tbnMtanNvbi1zY2hlbWEtZHJhZnQtNikKLSBbSlNPTiBTY2hlbWEgRHJhZnQgN10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vcGFja2FnZXMvYXBpZG9tLW5zLWpzb24tc2NoZW1hLWRyYWZ0LTcpCi0gW0pTT04gU2NoZW1hIDIwMTktMDldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1ucy1qc29uLXNjaGVtYS0yMDE5LTA5KQotIFtKU09OIFNjaGVtYSAyMDIwLTEyXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL3RyZWUvbWFpbi9wYWNrYWdlcy9hcGlkb20tbnMtanNvbi1zY2hlbWEtMjAyMC0xMikKLSBbT3BlbkFQSSAyLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1ucy1vcGVuYXBpLTIpCi0gW09wZW5BUEkgMy4wLnhdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1ucy1vcGVuYXBpLTMtMCkKLSBbT3BlbkFQSSAzLjEuMF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vcGFja2FnZXMvYXBpZG9tLW5zLW9wZW5hcGktMy0xKQoKIyMjIEFwaURPTSBQYXJzZXJzCgpUaGUgcGFyc2VyIHBhY2thZ2VzIHByb3ZpZGUgcGFyc2VyIGFkYXB0ZXJzIGZvciBzcGVjaWZpY2F0aW9ucyBpbiBKU09OIGFuZCBZQU1MIGZvcm1hdHMsIGFsbG93aW5nIHRvIHRyYW5zZm9ybSB0aGVtIGludG8gZ2VuZXJpYyBBcGlET00gb3Igc3BlY2lmaWMgQXBpRE9NIG5hbWVzcGFjZS4KClRoZSBiYXNlIHBhcnNlciBhZGFwdGVycyBzdXBwb3J0IFtKU09OXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL3RyZWUvbWFpbi9wYWNrYWdlcy9hcGlkb20tcGFyc2VyLWFkYXB0ZXItanNvbikgYW5kIFtZQU1MIDEuMl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vcGFja2FnZXMvYXBpZG9tLXBhcnNlci1hZGFwdGVyLXlhbWwtMS0yKSBmb3JtYXRzLiBUaGV5IGFyZSByZXNwb25zaWJsZSBmb3IgW2xleGljYWwgYW5kIHN5bnRhY3RpYyBhbmFseXNpc10oI3BhcnNlLXN0YWdlKSwgdHJhbnNmb3JtaW5nIHRoZSBwcm92aWRlZCBzdHJpbmcgaW50byBhIGdlbmVyaWMgQXBpRE9NIHN0cnVjdHVyZS4gVGhlc2UgYmFzZSBhZGFwdGVycyBhcmUgZXh0ZW5kZWQgaW4gcGFyc2VyIGFkYXB0ZXJzIGZvciBzcGVjaWZpY2F0aW9ucywgZW5hYmxpbmcgcGFyc2luZyBvZiBkZWZpbml0aW9ucyBkaXJlY3RseSBpbnRvIHRoZSBBcGlET00gbmFtZXNwYWNlcyBmb3IgdGhvc2Ugc3BlY2lmaWNhdGlvbnMuCgpBdmFpbGFibGUgcGFyc2VyIGFkYXB0ZXJzIGZvciBBcGlET00gbmFtZXNwYWNlczoKCi0gQVBJIERlc2lnbiBTeXN0ZW1zIC0gW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1wYXJzZXItYWRhcHRlci1hcGktZGVzaWduLXN5c3RlbXMtanNvbikgLyBbWUFNTF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vcGFja2FnZXMvYXBpZG9tLXBhcnNlci1hZGFwdGVyLWFwaS1kZXNpZ24tc3lzdGVtcy15YW1sKQotIEFyYXp6byAxLjAuMSAtIFtKU09OXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL3RyZWUvbWFpbi9wYWNrYWdlcy9hcGlkb20tcGFyc2VyLWFkYXB0ZXItYXJhenpvLWpzb24tMSkgLyBbWUFNTF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vcGFja2FnZXMvYXBpZG9tLXBhcnNlci1hZGFwdGVyLWFyYXp6by15YW1sLTEpCi0gQXN5bmNBUEkgMi54LnkgLSBbSlNPTl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vcGFja2FnZXMvYXBpZG9tLXBhcnNlci1hZGFwdGVyLWFzeW5jYXBpLWpzb24tMikgLyBbWUFNTF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vcGFja2FnZXMvYXBpZG9tLXBhcnNlci1hZGFwdGVyLWFzeW5jYXBpLXlhbWwtMikKLSBBc3luY0FQSSAzLngueSAtIFtKU09OXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL3RyZWUvbWFpbi9wYWNrYWdlcy9hcGlkb20tcGFyc2VyLWFkYXB0ZXItYXN5bmNhcGktanNvbi0zKSAvIFtZQU1MXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL3RyZWUvbWFpbi9wYWNrYWdlcy9hcGlkb20tcGFyc2VyLWFkYXB0ZXItYXN5bmNhcGkteWFtbC0zKQotIEpTT04gU2NoZW1hIDIwMjAtMTIgLSBbSlNPTl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vcGFja2FnZXMvYXBpZG9tLXBhcnNlci1hZGFwdGVyLWpzb24tc2NoZW1hLWpzb24tMjAyMC0xMikgLyBbWUFNTF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vcGFja2FnZXMvYXBpZG9tLXBhcnNlci1hZGFwdGVyLWpzb24tc2NoZW1hLXlhbWwtMjAyMC0xMikKLSBPcGVuQVBJIDIuMCAtIFtKU09OXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL3RyZWUvbWFpbi9wYWNrYWdlcy9hcGlkb20tcGFyc2VyLWFkYXB0ZXItb3BlbmFwaS1qc29uLTIpIC8gW1lBTUxdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1wYXJzZXItYWRhcHRlci1vcGVuYXBpLXlhbWwtMikKLSBPcGVuQVBJIDMuMC54IC0gW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1wYXJzZXItYWRhcHRlci1vcGVuYXBpLWpzb24tMy0wKSAvIFtZQU1MXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL3RyZWUvbWFpbi9wYWNrYWdlcy9hcGlkb20tcGFyc2VyLWFkYXB0ZXItb3BlbmFwaS15YW1sLTMtMCkKLSBPcGVuQVBJIDMuMS4wIC0gW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1wYXJzZXItYWRhcHRlci1vcGVuYXBpLWpzb24tMy0xKSAvIFtZQU1MXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL3RyZWUvbWFpbi9wYWNrYWdlcy9hcGlkb20tcGFyc2VyLWFkYXB0ZXItb3BlbmFwaS15YW1sLTMtMSkKCltAc3dhZ2dlci1hcGkvYXBpZG9tLXBhcnNlcl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vcGFja2FnZXMvYXBpZG9tLXBhcnNlcikgY29uc3VtZXMgYW55IHBhcnNlciBhZGFwdGVyIHdpdGggY29tcGF0aWJsZSBzaGFwZSBhbmQgcHJvdmlkZXMgYSB1bmlmaWVkIEFQSSBmb3IgcGFyc2luZy4gSXQgY29udGFpbnMgbG9naWMgb2YgbWFwcGluZyBhIHNvdXJjZSBzdHJpbmcgdG8gYXBwcm9wcmlhdGUgbWVkaWEgdHlwZSBhbmQgYSBzb3VyY2Ugc3RyaW5nIHdpdGggbWVkaWEgdHlwZSB0byBhcHByb3ByaWF0ZSBBcGlET00gbmFtZXNwYWNlLgoKIyMjIEFkdmFuY2VkIEFwaURPTSBtYW5pcHVsYXRpb25zCgpbQHN3YWdnZXItYXBpL2FwaWRvbS1yZWZlcmVuY2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1yZWZlcmVuY2UpIHByb3ZpZGVzIGFsZ29yaXRobXMgZm9yIHNlbWFudGljIEFwaURPTSBtYW5pcHVsYXRpb25zLiBJdCBjb250YWlucyBjb21wb25lbnRzIGVuYWJsaW5nIHBhcnNpbmcsIHJlc29sdmluZywgZGVyZWZlcmVuY2luZyBhbmQgYnVuZGxpbmcuCgpUaGUgW3BhcnNlIGNvbXBvbmVudF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vcGFja2FnZXMvYXBpZG9tLXJlZmVyZW5jZSNwYXJzZS1jb21wb25lbnQpIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgcGFyc2VyIHBsdWdpbnMsIGVuYWJsaW5nIHBhcnNpbmcgZm9yIGZpbGVzIGxvY2F0ZWQgb24gbG9jYWwgZmlsZXN5c3RlbXMgYW5kIG9uIHRoZSBpbnRlcm5ldC4gSXQgY2FuIHBhcnNlIHByb3ZpZGVkIGRlZmluaXRpb25zIGludG8gZ2VuZXJpYyBBcGlET00gc3RydWN0dXJlIG9yIGludG8gb25lIG9mIHRoZSBBcGlET00gbmFtZXNwYWNlcy4KCkF2YWlsYWJsZSBwYXJzZSBzdHJhdGVnaWVzOgoKLSBKU09OIGZvcm1hdAotIFlBTUwgMS4yIGZvcm1hdAotIEJpbmFyeSBmb3JtYXQKLSBBcGlET00gLSBKU09OCi0gQVBJIERlc2lnbiBTeXN0ZW1zIC0gSlNPTiAvIFlBTUwKLSBBcmF6em8gMS4wLjEgLSBKU09OIC8gWUFNTAotIEFzeW5jQVBJIDIueC55IC0gSlNPTiAvIFlBTUwKLSBPcGVuQVBJIDIuMCAtIEpTT04gLyBZQU1MCi0gT3BlbkFQSSAzLjAueCAtIEpTT04gLyBZQU1MCi0gT3BlbkFQSSAzLjEuMCAtIEpTT04gLyBZQU1MCgpUaGUgW3Jlc29sdmUgY29tcG9uZW50XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL3RyZWUvbWFpbi9wYWNrYWdlcy9hcGlkb20tcmVmZXJlbmNlI3Jlc29sdmUtY29tcG9uZW50KSBwcm92aWRlcyBmaWxlIHJlc29sdXRpb24gYW5kIGV4dGVybmFsIHJlc29sdXRpb24gc3ViLWNvbXBvbmVudHMuIEZpbGUgcmVzb2x1dGlvbiBjb250YWlucyBwbHVnaW5zIGFsbG93aW5nIHRvIHJlYWQgZmlsZXMgbG9jYXRlZCBvbiBsb2NhbCBmaWxlc3lzdGVtIGFuZCBvbiB0aGUgaW50ZXJuZXQsIGFuZCBwcm92aWRlIHRoZWlyIGNvbnRlbnQuIEV4dGVybmFsIHJlc29sdXRpb24gcmVzb2x2ZXMgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIG9mIGEgZG9jdW1lbnQgdXNpbmcgYSBzcGVjaWZpYyBleHRlcm5hbCByZXNvbHV0aW9uIHN0cmF0ZWd5LCBwcm92aWRpbmcgYSBzZXQgb2YgcmVzb2x2ZWQgcmVmZXJlbmNlcyBhcyBhIHJlc3VsdC4KCkF2YWlsYWJsZSBleHRlcm5hbCByZXNvbHV0aW9uIHN0cmF0ZWdpZXM6CgotIEFwaURPTQotIEFzeW5jQVBJIDIueC55Ci0gT3BlbkFQSSAyLjAKLSBPcGVuQVBJIDMuMC54Ci0gT3BlbkFQSSAzLjEuMAoKVGhlIFtkZXJlZmVyZW5jZSBjb21wb25lbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vdHJlZS9tYWluL3BhY2thZ2VzL2FwaWRvbS1yZWZlcmVuY2UjZGVyZWZlcmVuY2UtY29tcG9uZW50KSB0cmFuc2NsdWRlcyByZWZlcmVuY2luZyBlbGVtZW50cyAoaW50ZXJuYWwgb3IgZXh0ZXJuYWwpIHdpdGggcmVmZXJlbmNlZCBlbGVtZW50cywgdXNpbmcgYSBzcGVjaWZpYyBkZXJlZmVyZW5jZSBzdHJhdGVneS4KCkF2YWlsYWJsZSBkZXJlZmVyZW5jZSBzdHJhdGVnaWVzOgoKLSBBcGlET00KLSBBc3luY0FQSSAyLngueQotIE9wZW5BUEkgMi4wCi0gT3BlbkFQSSAzLjAueAotIE9wZW5BUEkgMy4xLjAKClRoZSBbYnVuZGxlIGNvbXBvbmVudF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS90cmVlL21haW4vcGFja2FnZXMvYXBpZG9tLXJlZmVyZW5jZSNidW5kbGUtY29tcG9uZW50KSBhbGxvd3MgdG8gcGFja2FnZSB1cCByZXNvdXJjZXMgc3ByZWFkIGFjcm9zcyBtdWx0aXBsZSBmaWxlcyBpbiBhIHNpbmdsZSBmaWxlIChDb21wb3VuZCBEb2N1bWVudCkgdXNpbmcgYSBzcGVjaWZpYyBidW5kbGUgc3RyYXRlZ3kuCgpBdmFpbGFibGUgYnVuZGxlIHN0cmF0ZWdpZXM6CgotIE9wZW5BUEkgMy4xLjAKCiMjIyBBcGlET00gTGFuZ3VhZ2UgU2VydmljZQoKW0FwaURPTSBMYW5ndWFnZSBTZXJ2aWNlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL3RyZWUvbWFpbi9wYWNrYWdlcy9hcGlkb20tbHMpIHByb3ZpZGVzIGxhbmd1YWdlIHByb2Nlc3NpbmcgZm9yIEFwaURPTSBzdXBwb3J0ZWQgbGFuZ3VhZ2VzIGZvciBlZGl0aW5nIGV4cGVyaWVuY2UuIEl0IGFkaGVyZXMgdG8gdGhlIExTUCBQcm90b2NvbCBhbmQgY2FuIHRoZXJlZm9yZSBiZSB1c2VkIHZpYSBMU1AgU2VydmVyIHdyYXBwZXIsIHByb3ZpZGluZyBlZGl0aW5nIGNhcGFiaWxpdGllcyB0byB2YXJpb3VzIGVkaXRvcnMgYW5kIElERXMuIEl0IHByb3ZpZGVzIHZhbGlkYXRpb24sIGRvY3VtZW50YXRpb24sIGRlZmluaXRpb25zLCBjb21wbGV0aW9uLCBzZW1hbnRpYyBoaWdobGlnaHRpbmcgYW5kIGRlcmVmZXJlbmNpbmcgZm9yIHN1cHBvcnRlZCBzcGVjaWZpY2F0aW9ucy4KCkFwaURPTSBMYW5ndWFnZSBTZXJ2aWNlIHN1cHBvcnRzOgoKLSBBc3luY0FQSSAyLngueQotIE9wZW5BUEkgMi4wCi0gT3BlbkFQSSAzLjAueAotIE9wZW5BUEkgMy4xLjAKCiMjIExpY2Vuc2UKCkFwaURPTSBpcyBsaWNlbnNlZCB1bmRlciBbQXBhY2hlIDIuMCBsaWNlbnNlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tL2Jsb2IvbWFpbi9MSUNFTlNFUy9BcGFjaGUtMi4wLnR4dCkuCkFwaURPTSBjb21lcyB3aXRoIGFuIGV4cGxpY2l0IFtOT1RJQ0VdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9hcGlkb20vYmxvYi9tYWluL05PVElDRSkgZmlsZQpjb250YWluaW5nIGFkZGl0aW9uYWwgbGVnYWwgbm90aWNlcyBhbmQgaW5mb3JtYXRpb24uCgpUaGlzIHByb2plY3QgdXNlcyBbUkVVU0Ugc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9yZXVzZS5zb2Z0d2FyZS9zcGVjLykgdGhhdCBkZWZpbmVzIGEgc3RhbmRhcmRpemVkIG1ldGhvZApmb3IgZGVjbGFyaW5nIGNvcHlyaWdodCBhbmQgbGljZW5zaW5nIGZvciBzb2Z0d2FyZSBwcm9qZWN0cy4KCiMjIFNvZnR3YXJlIEJpbGwgT2YgTWF0ZXJpYWxzIChTQk9NKQoKU29mdHdhcmUgQmlsbCBPZiBtYXRlcmlhbHMgaXMgYXZhaWxhYmxlIGluIHRoaXMgcmVwb3NpdG9yeSBbZGVwZW5kZW5jeSBncmFwaF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL2FwaWRvbS9uZXR3b3JrL2RlcGVuZGVuY2llcykuCkNsaWNrIG9uIGBFeHBvcnQgU0JPTWAgYnV0dG9uIHRvIGRvd25sb2FkIHRoZSBTQk9NIGluIFtTUERYIGZvcm1hdF0oaHR0cHM6Ly9zcGR4LmRldi8pLgoK readmeEtag: '"68a59077b704640e9a7db8926d1fa525f5facf8d"' readmeLastModified: Mon, 01 Dec 2025 14:07:09 GMT repositoryId: 249737066 description: Semantic parser for API specifications created: '2020-03-24T14:55:51Z' updated: '2026-02-03T14:04:06Z' language: TypeScript archived: false stars: 93 watchers: 6 forks: 20 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 repoEtag: '"4819013eedf96bd3cb38ae666ff9346faabcd92b7d01d8060475f9f324302d74"' repoLastModified: Tue, 03 Feb 2026 14:04:06 GMT category: Parsers foundInMaster: true - source: - openapi3 tags - openapi31 tags repository: https://github.com/stoplightio/spectral-owasp-ruleset v3: true v3_1: true id: a98ab8aaed507481a9bf8be2c5b38a8f repositoryMetadata: base64Readme: >- IyBTcGVjdHJhbCBPV0FTUCBBUEkgU2VjdXJpdHkKClshW05QTSBEb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2R3L0BzdG9wbGlnaHQvc3BlY3RyYWwtb3dhc3AtcnVsZXNldD9jb2xvcj1ibHVlKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHN0b3BsaWdodC9zcGVjdHJhbC1vd2FzcC1ydWxlc2V0KSBbIVtTdG9wbGlnaHQgRm9yZXN0XShodHRwczovL2ltZy5zaGllbGRzLmlvL2Vjb2xvZ2kvdHJlZXMvc3RvcGxpZ2h0aW5jKV1bc3RvcGxpZ2h0X2ZvcmVzdF0KClNjYW4gYW4gW09wZW5BUEldKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCkgZG9jdW1lbnQgdG8gZGV0ZWN0IHNlY3VyaXR5IGlzc3Vlcy4gQXMgT3BlbkFQSSBpcyBvbmx5IGRlc2NyaWJpbmcgdGhlIHN1cmZhY2UgbGV2ZWwgb2YgdGhlIEFQSSBpdCBjYW5ub3Qgc2VlIHdoYXQgaXMgaGFwcGVuaW5nIGluIHlvdXIgY29kZSwgYnV0IGl0IGNhbiBzcG90IG9idmlvdXMgaXNzdWVzIGFuZCBvdXRkYXRlZCBzdGFuZGFyZHMgYmVpbmcgdXNlZC4KCnYyLnggb2YgdGhpcyBydWxlc2V0IGlzIGJhc2VkIG9uIHRoZSBbT1dBU1AgQVBJIFNlY3VyaXR5IFRvcCAxMCAyMDIzIGVkaXRpb25dKGh0dHBzOi8vb3dhc3Aub3JnL0FQSS1TZWN1cml0eS9lZGl0aW9ucy8yMDIzL2VuLzB4MDAtaGVhZGVyLyksIGJ1dCBpZiB5b3Ugd291bGQgbGlrZSB0byB1c2UgdGhlIFsyMDE5IGVkaXRpb25dKGh0dHBzOi8vb3dhc3Aub3JnL0FQSS1TZWN1cml0eS9lZGl0aW9ucy8yMDE5L2VuLzB4MDAtaGVhZGVyLykgcGxlYXNlIHVzZSB2MS54LgoKIyMgSW5zdGFsbGF0aW9uCgpgYGBiYXNoCm5wbSBpbnN0YWxsIC0tc2F2ZSAtRCBAc3RvcGxpZ2h0L3NwZWN0cmFsLW93YXNwLXJ1bGVzZXRAXjIuMApucG0gaW5zdGFsbCAtLXNhdmUgLUQgQHN0b3BsaWdodC9zcGVjdHJhbC1jbGkKYGBgCgojIyBVc2FnZQoKQ3JlYXRlIGEgbG9jYWwgcnVsZXNldCB0aGF0IGV4dGVuZHMgdGhlIHJ1bGVzZXQuIEluIGl0cyBtb3N0IGJhc2ljIGZvcm0gdGhpcyBqdXN0IHRlbGxzIFNwZWN0cmFsIHdoYXQgcnVsZXNldCB5b3Ugd2FudCB0byB1c2UsIGJ1dCBpdCB3aWxsIGFsbG93IHlvdSB0byBjdXN0b21pc2UgdGhpbmdzLCBhZGQgeW91ciBvd24gcnVsZXMsIHR1cm4gYml0cyBvZmYgaWYgaXRzIGNhdXNpbmcgdHJvdWJsZS4KCmBgYApjZCB+L3NyYy88eW91ci1hcGk+CgplY2hvICdleHRlbmRzOiBbIkBzdG9wbGlnaHQvc3BlY3RyYWwtb3dhc3AtcnVsZXNldCJdJyA+IC5zcGVjdHJhbC55YW1sCmBgYAoKX0lmIHlvdSdyZSB1c2luZyBWUyBDb2RlIG9yIFN0b3BsaWdodCBTdHVkaW8gdGhlbiB0aGUgTlBNIG1vZHVsZXMgd2lsbCBub3QgYmUgYXZhaWxhYmxlLiBJbnN0ZWFkIHlvdSBjYW4gdXNlIHRoZSBDRE4gaG9zdGVkIHZlcnNpb246XwoKYGBgCmVjaG8gJ2V4dGVuZHM6IFsiaHR0cHM6Ly91bnBrZy5jb20vQHN0b3BsaWdodC9zcGVjdHJhbC1vd2FzcC1ydWxlc2V0L2Rpc3QvcnVsZXNldC5tanMiXScgPiAuc3BlY3RyYWwueWFtbApgYGAKCl8qKk5vdGU6KiogWW91IG5lZWQgdG8gdXNlIHRoZSBmdWxsIFVSTCB3aXRoIENETiBob3N0ZWQgcnVsZXNldHMgYmVjYXVzZSBTcGVjdHJhbCBbY2Fubm90IGZvbGxvdyByZWRpcmVjdHMgdGhyb3VnaCBleHRlbmRzXShodHRwczovL2dpdGh1Yi5jb20vc3RvcGxpZ2h0aW8vc3BlY3RyYWwvaXNzdWVzLzIyNjYpLl8KCk5leHQsIHVzZSBTcGVjdHJhbCBDTEkgdG8gbGludCBhZ2FpbnN0IHlvdXIgT3BlbkFQSSBkZXNjcmlwdGlvbi4gRG9uJ3QgaGF2ZSBhbnkgT3BlbkFQST8gW1JlY29yZCBzb21lIEhUVFAgdHJhZmZpYyB0byBtYWtlIE9wZW5BUEldKGh0dHBzOi8vYXBpc3lvdXdvbnRoYXRlLmNvbS9ibG9nL2NyZWF0aW5nLW9wZW5hcGktZnJvbS1odHRwLXRyYWZmaWMpIGFuZCB0aGVuIHlvdSBjYW4gc3dpdGNoIHRvIEFQSSBEZXNpZ24tRmlyc3QgZ29pbmcgZm9yd2FyZHMuCgpgYGAKc3BlY3RyYWwgbGludCBhcGkvb3BlbmFwaS55YW1sCmBgYAoKWW91IHNob3VsZCBzZWUgc29tZSBvdXRwdXQgbGlrZSB0aGlzOgoKYGBgCi9Vc2Vycy9waGlsL3NyYy9wcm90ZWN0LWVhcnRoLWFwaS9hcGkvb3BlbmFwaS55YW1sCiAgNDo1ICAgICAgICBlcnJvciAgICBvd2FzcDphcGk4OjIwMjMtaW52ZW50b3J5LWFjY2VzcyAgICAgICAgICAgIERlY2xhcmUgaW50ZW5kZWQgYXVkaWVuY2Ugb2YgZXZlcnkgc2VydmVyIGJ5IGRlZmluaW5nIHNlcnZlcnNbMF0ueC1pbnRlcm5hbCBhcyB0cnVlL2ZhbHNlLiAgc2VydmVyc1swXQogIDQ6MTAgICAgICAgZXJyb3IgICAgb3dhc3A6YXBpODoyMDIzLW5vLXNlcnZlci1odHRwICAgICAgICAgICAgICBTZXJ2ZXIgVVJMcyBtdXN0IG5vdCB1c2UgaHR0cDovLy4gaHR0cHM6Ly8gaXMgaGlnaGx5IHJlY29tbWVuZGVkLiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcnNbMF0udXJsCiAgNDU6MTUgICAgICAgIGVycm9yICBvd2FzcDphcGk0OjIwMjMtcmF0ZS1saW1pdCAgICAgICAgICAgICAgICAgIEFsbCAyWFggYW5kIDRYWCByZXNwb25zZXMgc2hvdWxkIGRlZmluZSByYXRlIGxpbWl0aW5nIGhlYWRlcnMuICBwYXRocy4vdXBsb2FkLnBvc3QucmVzcG9uc2VzWzIwMV0KICA0NzoxNSAgICAgICAgZXJyb3IgIG93YXNwOmFwaTQ6MjAyMy1yYXRlLWxpbWl0ICAgICAgICAgICAgICAgICAgQWxsIDJYWCBhbmQgNFhYIHJlc3BvbnNlcyBzaG91bGQgZGVmaW5lIHJhdGUgbGltaXRpbmcgaGVhZGVycy4gIHBhdGhzLi91cGxvYWQucG9zdC5yZXNwb25zZXNbNDAxXQogIDkzOjE2ICBpbmZvcm1hdGlvbiAgb3dhc3A6YXBpMjoyMDIzLXJlYWQtcmVzdHJpY3RlZCAgICAgICAgICAgICBUaGlzIG9wZXJhdGlvbiBpcyBub3QgcHJvdGVjdGVkIGJ5IGFueSBzZWN1cml0eSBzY2hlbWUuICBwYXRocy4vc2l0ZXMuZ2V0LnNlY3VyaXR5CiAyMTA6MTYgIGluZm9ybWF0aW9uICBvd2FzcDphcGkyOjIwMjMtcmVhZC1yZXN0cmljdGVkICAgICAgICAgICAgIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBwcm90ZWN0ZWQgYnkgYW55IHNlY3VyaXR5IHNjaGVtZS4gIHBhdGhzLi9zcGVjaWVzLmdldC5zZWN1cml0eQpgYGAKCk5vdyB5b3UgaGF2ZSBzb21lIHRoaW5ncyB0byB3b3JrIG9uIGZvciB5b3VyIEFQSS4gVGhhbmtmdWxseSB0aGVzZSBhcmUgb25seSBhdCB0aGUgYHdhcm5pbmdgIGFuZCBgaW5mb3JtYXRpb25gIHNldmVyaXR5LCBhbmQgdGhhdCBpcyBub3QgZ29pbmcgdG8gW2ZhaWwgY29udGludW91cyBpbnRlZ3JhdGlvbl0oaHR0cHM6Ly9kb2NzLnN0b3BsaWdodC5pby9kb2NzL3NwZWN0cmFsL1pHOWpPakV4TlRNeU9UQXgtY29udGludW91cy1pbnRlZ3JhdGlvbikgKHVubGVzcyBbeW91IHdhbnQgdGhlbSB0b10oaHR0cHM6Ly9kb2NzLnN0b3BsaWdodC5pby9kb2NzL3NwZWN0cmFsL1pHOWpPakkxTVRnMS1zcGVjdHJhbC1jbGkjZXJyb3ItcmVzdWx0cykpLgoKVGhlcmUgYXJlIFthIGJ1bmNoIG9mIG90aGVyIHJ1bGVzZXRzXShodHRwczovL2dpdGh1Yi5jb20vc3RvcGxpZ2h0aW8vc3BlY3RyYWwtcnVsZXNldHMpIG9yIFtTdG9wbGlnaHQgQVBJIFN0eWxlYm9va10oaHR0cDovL2FwaXN0eWxlYm9vay5zdG9wbGlnaHQuaW8pIHlvdSBjYW4gdXNlLCBvciB1c2UgZm9yIGluc3BpcmF0aW9uIGZvciB5b3VyIG93biBydWxlc2V0cyBhbmQgQVBJIFN0eWxlIEd1aWRlcy4KCiMjIPCfjokgVGhhbmtzCgotIFtBbmRyemVqXShodHRwczovL2dpdGh1Yi5jb20vamVyenluKSAtIEdyZWF0IHJ1bGVzIGNvbnRyaWJ1dGVkIHRvIHRoZSBBZGlkYXMgc3R5bGUgZ3VpZGUuCi0gW1JvYmVydG8gUG9sbGldKGh0dHBzOi8vZ2l0aHViLmNvbS9pb2dnc3RyZWFtKSAtIENyZWF0ZWQgbG90cyBvZiBleGNlbGxlbnQgU3BlY3RyYWwgcnVsZXMgZm9yIFtBUEkgT0FTIENoZWNrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9pdGFsaWEvYXBpLW9hcy1jaGVja2VyLykgd2hpY2ggYWxpZ25lZCB3aXRoIHRoZSBPV0FTUCBBUEkgcnVsZXMuCgojIyDwn5OcIExpY2Vuc2UKClRoaXMgcmVwb3NpdG9yeSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCgojIyDwn4yyIFNwb25zb3IKCklmIHlvdSB3b3VsZCBsaWtlIHRvIHRoYW5rIHVzIGZvciBjcmVhdGluZyBTcGVjdHJhbCwgd2UgYXNrIHRoYXQgeW91IFsqKmJ1eSB0aGUgd29ybGQgYSB0cmVlKipdW3N0b3BsaWdodF9mb3Jlc3RdLgoKW3N0b3BsaWdodF9mb3Jlc3RdOiBodHRwczovL2Vjb2xvZ2kuY29tL3N0b3BsaWdodGluYwo= readmeEtag: '"0d92d6543e532164348d50cc4b5837198a046ca8"' readmeLastModified: Tue, 12 Mar 2024 15:49:11 GMT repositoryId: 528967945 description: >- Improve the security of your API by detecting common vulnerabilities as defined by OWASP and enforced with Spectral. created: '2022-08-25T18:14:13Z' updated: '2026-02-04T01:01:12Z' language: TypeScript archived: false stars: 84 watchers: 3 forks: 19 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 repoEtag: '"cef1fd181398cbb14e9ff4a8aab3f02e313f5697337c4dc000179bd4e47e0783"' repoLastModified: Wed, 04 Feb 2026 01:01:12 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/skellla/fastify-oas v3: true repositoryMetadata: base64Readme: >- IyBmYXN0aWZ5LW9hcwoKKipOT1RFKio6IE9wZW5BUEkgMyBzdXBwb3J0IGZpbmFsbHkgW2xhbmRlZF0oaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RpZnkvZmFzdGlmeS1zd2FnZ2VyL3B1bGwvMzMzKSBpbiAib2ZmaWNpYWwiIFtmYXN0aWZ5LXN3YWdnZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0aWZ5L2Zhc3RpZnktc3dhZ2dlcikgbW9kdWxlLiBDb25zaWRlciB1c2luZyBpdCBpbnN0ZWFkIG9mIHRoaXMgb25lLCBzaW5jZSBpdCBoYXMgYmV0dGVyIHN1cHBvcnQgZm9yICRyZWYgaW4gc2NoZW1hcy4KClRoaXMgcGx1Z2luIGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBtYWludGVpbmVkLiBGZWVsIGZyZWUgdG8gZm9yayBpdCBhbmQgcHVibGlzaCBpZiBuZWVkZWQuCgo8ZGl2IGFsaWduPSJjZW50ZXIiPgogIDxpbWcgc3JjPSJodHRwczovL2dpdGxhYi5jb20vbTAzZ2Vlay9mYXN0aWZ5LW9hcy9yYXcvbWFzdGVyL2xvZ28ucG5nIiBhbHQ9ImZhc3RpZnktb2FzIGxvZ28iLz4KPC9kaXY+CgpbIVtOUE0gVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9mYXN0aWZ5LW9hcy5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9mYXN0aWZ5LW9hcykKWyFbRG93bmxvYWRzIENvdW50XShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kbS9mYXN0aWZ5LW9hcy5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9mYXN0aWZ5LW9hcykKWyFbVnVuZXJhYmlsaXRpZXMgQ291bnRdKGh0dHBzOi8vc255ay5pby90ZXN0L25wbS9mYXN0aWZ5LW9hcy9iYWRnZS5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9mYXN0aWZ5LW9hcykKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGxhYi5jb20vbTAzZ2Vlay9mYXN0aWZ5LW9hcy9iYWRnZXMvbWFzdGVyL3BpcGVsaW5lLnN2ZyldKGh0dHBzOi8vZ2l0bGFiLmNvbS9tMDNnZWVrL2Zhc3RpZnktb2FzL2NvbW1pdHMvbWFzdGVyKQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vZ2l0bGFiLmNvbS9tMDNnZWVrL2Zhc3RpZnktb2FzL2JhZGdlcy9tYXN0ZXIvY292ZXJhZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRsYWIuY29tL20wM2dlZWsvZmFzdGlmeS1vYXMvY29tbWl0cy9tYXN0ZXIpClshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2wvZmFzdGlmeS1vYXMuc3ZnKV0oaHR0cHM6Ly9naXRsYWIuY29tL20wM2dlZWsvZmFzdGlmeS1vYXMvYmxvYi9tYXN0ZXIvTElDRU5TRSkKCltPcGVuQVBJIDMuMCsgKE9BUzMpXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2Fib3V0LykgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZm9yIEZhc3RpZnkuCkl0IHVzZXMgdGhlIHNjaGVtYXMgeW91IGRlY2xhcmUgaW4geW91ciByb3V0ZXMgdG8gZ2VuZXJhdGUgYW4gT3BlbkFQSSAoc3dhZ2dlcikgY29tcGxpYW50IGRvYy4KClRoaXMgcGx1Z2luIGJhc2VkIG9uIFtmYXN0aWZ5LXN3YWdnZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0aWZ5L2Zhc3RpZnktc3dhZ2dlci8pIHRoYXQgZ2VuZXJhdGVzIHN3YWdnZXIgMi4wIGRvY3MuCgpUaGlzIHBsdWdpbiBkZXNpZ25lZCBpbiBzdWNoIHdheSB0byBiZSBjb21wYXRpYmxlIHdpdGggaXQncyBwcmVkY2Vzc29yIGFuZCBpbiBtb3N0IGNhc2VzIGlmIHlvdSBhbHJlYWR5IHVzZSBgZmFzdGlmeS1zd2FnZ2VyYCB5b3UgbWF5IGp1c3QgcmVwbGFjZSBpdCB3aXRoIGN1cnJlbnQgcGx1Z2luIGFuZCBpdCBzaG91bGQgd29yay4KCiMjIFRvQwotIFtmYXN0aWZ5LW9hc10oI2Zhc3RpZnktb2FzKQogIC0gW1RvQ10oI3RvYykKICAtIFtGYXN0aWZ5IHN1cHBvcnRdKCNmYXN0aWZ5LXN1cHBvcnQpCiAgLSBbSW5zdGFsbGF0aW9uXSgjaW5zdGFsbGF0aW9uKQogIC0gW0ZlYXR1cmVzIGFuZCByZXF1aXJlbWVudHNdKCNmZWF0dXJlcy1hbmQtcmVxdWlyZW1lbnRzKQogIC0gW1VzYWdlXSgjdXNhZ2UpCiAgICAtIFtEb2NzXSgjZG9jcykKICAgIC0gW1BsdWdpbiBvcHRpb25zXSgjcGx1Z2luLW9wdGlvbnMpCiAgICAtIFtBZGRpdGlvbmFsIHNjaGVtYSBvcHRpb25zXSgjYWRkaXRpb25hbC1zY2hlbWEtb3B0aW9ucykKICAgIC0gW09wZW5BUEldKCNvcGVuYXBpKQogICAgLSBbU3dhZ2dlciAyLjBdKCNzd2FnZ2VyLTIwKQogIC0gW1VJXSgjdWkpCiAgLSBbRGV2ZWxvcG1lbnRdKCNkZXZlbG9wbWVudCkKICAtIFtTZWUgYWxzb10oI3NlZS1hbHNvKQogIC0gW0xpY2Vuc2VdKCNsaWNlbnNlKQoKIyMgRmFzdGlmeSBzdXBwb3J0CgotIHYwLlguWCAtIHYxLlguWCAtIHN1cHBvcnRzIGZhc3RpZnkgdjEuWC5YCi0gdjIuWC5YIC0gd2lsbCBzdXBwb3J0IGZhc3RpZnkgdjIuWC5YKgoKPHNwYW4gc3R5bGU9ImNvbG9yOnJlZDsgZm9udC1zaXplOjJlbTsiPgpDdXJyZW50bHkgaW4gRmFzdGlmeSB2Mi4xMi4wIHRoZXJlJ3MgcmVncmVzc2lvbiBidWcgdGhhdCBicmVha2VzIHRoaXMgZXhlbnN0aW9uIGZvciBtYW55IHVzZXJzLiBTbyBmb3Igbm93IHRoaXMgZXh0ZW5zaW9uIGRvZXNuJ3Qgc3VwcG9ydCBmYXN0aWZ5IDIuMTIuMC4gQ2F1c2UgaXQgd2FzIGNhdXNlIGJ5IGZhc3RpZnkgbWlub3IgY2hhbmdlIGluIG9yZGVyIHRvIHByZXZlbiBpc3N1ZXMgdGhpcyBsaWJyYXJ5IHdpbGwgdGhyb3cgYW4gZXJyb3Igd2hlbiB5b3UnbGwgdHJ5IHRvIHVzZSBpdCB3aXRoIHRoYXQgZmFzdGlmeSB2ZXJzaW9uLgpJbiBvcmRlciB0byB1c2UgaXQsIHlvdSBjYW4gZWl0aGVyIGxvY2sgeW91ciBmYXN0aWZ5IGF0IDIuMTEuMCBvciBmYXN0aWZ5LW9hcyBhdCAyLjUuMCAoYnV0IHRoZXJlIGFyZSBubyBnYXVyYW50ZWUgdGhhdCBpdCB3aWxsIHdvcmsgY29ycmVjdGx5KS4KPC9zcGFuPgoKCiMjIEluc3RhbGxhdGlvbgoKYGBgc2gKbnBtIGkgZmFzdGlmeS1vYXMgLS1zYXZlCmBgYAoKPHN1Yj5bQmFjayB0byB0b3BdKCN0b2MpPC9zdWI+CgojIyBGZWF0dXJlcyBhbmQgcmVxdWlyZW1lbnRzCgoqIFN1cHBvcnRzIE9wZW5BUEkgMysuCiogU3VwcG9ydHMgW2Zhc3RpZnktc3dhZ2dlcl0oaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RpZnkvZmFzdGlmeS1zd2FnZ2VyLykgbW9kdWxlIGNvbmZpZ3MuCiogU3VwcG9ydHMgc3dhZ2dlciAyLjAgZmFzdGlmeSBzY2hlbWFzLgoqIFN1cHBvcnRzIGZhc3RpZnkgbmFtZWQgc2NoZW1hcyBjb252ZXJ0aW9uIHRvIHN3YWFnZ2VyL29wZW5hcGkgbW9kZWxzLgoKLS0tIAoKKiBSZXF1aXJlcyBmYXN0aWZ5IGA+PTEuOS4wYC4KKiBOb2RlLmpzIGA+PTguOS4wYC4KCk5PVEU6IElmIHlvdSBuZWVkIHRvIGdlbmVyYXRlIGZhc3RpZnkgcm91dGVzIGZyb20geW91ciBzd2FnZ2VyIGRvY3VtZW50IC0gcGxlYXNlIHJlZmVyIHRvIHBsdWdpbnMgaW4gW1NlZSBhbHNvXSgjc2VlLWFsc28pIGxpa2UgZmFzdGlmeS1zd2FnZ2VyZ2VuIG9yIGZhc3RpZnktb3BlbmFwaS1nbHVlLgoKPHN1Yj5bQmFjayB0byB0b3BdKCN0b2MpPC9zdWI+CgojIyBVc2FnZQoKQWRkIGl0IHRvIHlvdXIgcHJvamVjdCBsaWtlIHJlZ3VsYXIgZmFzdGlmeSBwbHVnaW4uIFVzZSBgcmVnaXN0ZXJgIG1ldGhvZCBhbmQgcGFzcyBpdCBzd2FnZ2VyIG9wdGlvbnMsIHRoZW4gY2FsbCB0aGUgYXBpIGNvbnN0cnVjdG9yLgoKYGBganMKY29uc3QgZmFzdGlmeSA9IHJlcXVpcmUoJ2Zhc3RpZnknKTsKY29uc3Qgb2FzID0gcmVxdWlyZSgnZmFzdGlmeS1vYXMnKTsKY29uc3QgYXBwID0gZmFzdGlmeSgpOwoKYXBwLnJlZ2lzdGVyKG9hcywgewogIHJvdXRlUHJlZml4OiAnL2RvY3VtZW50YXRpb24nLAogIHN3YWdnZXI6IHsKICAgIGluZm86IHsKICAgICAgdGl0bGU6ICdUZXN0IG9wZW5hcGknLAogICAgICBkZXNjcmlwdGlvbjogJ3Rlc3RpbmcgdGhlIGZhc3RpZnkgc3dhZ2dlciBhcGknLAogICAgICB2ZXJzaW9uOiAnMC4xLjAnLAogICAgfSwKICAgIGV4dGVybmFsRG9jczogewogICAgICB1cmw6ICdodHRwczovL3N3YWdnZXIuaW8nLAogICAgICBkZXNjcmlwdGlvbjogJ0ZpbmQgbW9yZSBpbmZvIGhlcmUnLAogICAgfSwKICAgIGNvbnN1bWVzOiBbJ2FwcGxpY2F0aW9uL2pzb24nXSwKICAgIHByb2R1Y2VzOiBbJ2FwcGxpY2F0aW9uL2pzb24nXSwKICB9LAogIGV4cG9zZVJvdXRlOiB0cnVlCn0pOwoKLy8gcHV0IHNvbWUgcm91dGVzIGFuZCBzY2hlbWFzCgphcHAucmVhZHkoZXJyID0+IHsKICBpZiAoZXJyKSB0aHJvdyBlcnI7CiAgYXBwLm9hcygpOwp9KTsKYGBgCgpQbGVhc2Ugbm90ZSwgdGhlIHNjaGVtYSBmb3JtYXQgZm9yIEZhc3RpZnkgcm91dGVzIGlzIFtKU09OU2NoZW1hXShodHRwczovL2dpdGh1Yi5jb20vZmFzdGlmeS9mYXN0aWZ5L2Jsb2IvdjIuMTMuMC9kb2NzL1JvdXRlcy5tZCNyb3V0ZXMtb3B0aW9uKSBhbmQgeW91IG1heSBlbmNvdW50ZXIgc29tZSBkaWZmZXJlbmNlcyBpbiB0aGUgZm9ybWF0IGZvciByb3V0ZSBzcGVjIHZzLiBvdXRwdXQgT3BlbkFQSSBzcGVjLiAgClRoaXMgcGx1Z2luIGluY2x1ZGVzIGhhbmRsaW5nIGFyb3VuZCBhIGZldyBvZiB0aGVzZSBkaWZmZXJlbmNlcy4KCk9uZSBzdWNoIGNhc2UgaXMgdGhlIGBleGFtcGxlYCBvciBgZXhhbXBsZXNgIGtleXdvcmRzOgpgYGBqcwpmYXN0aWZ5LnJvdXRlKHsKICBtZXRob2Q6ICdQT1NUJywKICB1cmw6ICcvJywKICBzY2hlbWE6IHsKICAgIGJvZHk6IHsKICAgICAgdHlwZTogJ29iamVjdCcsCiAgICAgIGRlc2NyaXB0aW9uOiAnYW4gb2JqZWN0JywKICAgICAgZXhhbXBsZXM6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgbmFtZTogJ09iamVjdCBTYW1wbGUnLAogICAgICAgICAgICBzdW1tYXJ5OiAnYW4gZXhhbXBsZScsCiAgICAgICAgICAgIHZhbHVlOiB7YTogJ3BheWxvYWQnfSwKICAgICAgICAgIH0KICAgICAgXSwKICAgICAgcHJvcGVydGllczogewogICAgICAgIGE6IHt0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd5b3VyIHBheWxvYWQnfQogICAgICB9CiAgICB9CiAgfSwKICBoYW5kbGVyOiAvLyAuLi4KfSkKYGBgCldoaWNoIHByb2R1Y2VzIGEgc3BlYyBzaW1pbGFyIHRvOgpgYGBqc29uCnsKICAuLi4gCgogICJjb250ZW50IjogewogICAgImFwcGxpY2F0aW9uL2pzb24iOiB7CiAgICAgICJleGFtcGxlcyI6IHsKICAgICAgICAiT2JqZWN0IFNhbXBsZSI6IHsKICAgICAgICAgICJzdW1tYXJ5IjogImFuIGV4YW1wbGUiLAogICAgICAgICAgInZhbHVlIjogewogICAgICAgICAgICAiYSI6ICJwYXlsb2FkIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwKICAgICAgInNjaGVtYSI6IHsKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgImEiOiB7CiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ5b3VyIHBheWxvYWQiCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9CmBgYAooaW4gdGhpcyBjYXNlLCB0aGUgbmFtZSBwcm9wZXJ0eSBpcyBleHRyYWN0ZWQgYXMgdGhlIGV4YW1wbGVzIGtleSkKCjxzdWI+W0JhY2sgdG8gdG9wXSgjdG9jKTwvc3ViPgoKIyMjIERvY3MKClNlZSBbRG9jc10oL2RvY3MvUkVBRE1FLm1kKSBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBUeXBlU2NyaXB0IHR5cGVzIHRoYXQgeW91IG1heSB1c2Ugd2hlbiB3b3JraW5nIHdpdGggT3BlbkFQSSBzcGVjLgoKIyMjIFBsdWdpbiBvcHRpb25zCgp8IHBhcmFtZXRlciAgICAgIHwgdHlwZSAgICB8IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRlZmF1bHQgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0gfAp8IGByb3V0ZVByZWZpeGAgIHwgU3RyaW5nICB8IERvY3VtZW50YXRpb24gZW5kcG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGAvZG9jdW1lbnRhdGlvbmAgfAp8IGBleHBvc2VSb3V0ZWAgIHwgQm9vbGVhbnxPYmplY3QqKiB8IElmIGB0cnVlYCB0aGUgcGx1Z2luIHdpbGwgZXhwb3NlIHRoZSBkb2N1bWVudGF0aW9uIHdpdGggdGhlIGZvbGxvd2luZyBhcGlzOiBgLzxyb3V0ZVByZWZpeD5gLCBgLzxyb3V0ZVByZWZpeD4vanNvbmAsIGAvPHJvdXRlUHJlZml4Pi95YW1sYCB8IGBmYWxzZWAgICAgICAgICAgfAp8IGBhZGRNb2RlbHNgICAgIHwgQm9vbGVhbiB8IElmIGB0cnVlYCBhZGRzIGZhc3RpZnkgc2NoZW1hcyBhcyBvcGVuYXBpIG1vZGVscyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBmYWxzZWAgICAgICAgICAgfAp8IGBvcGVuYXBpYCAgICAgIHwgU3RyaW5nICB8IE9wZW5hcGkgdmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICczLjAuMCcgICAgICAgICAgfAp8IGB5YW1sYCAgICAgICAgIHwgQm9vbGVhbiB8IElmIGB0cnVlYCByZXR1cm5zIHlhbWwgaW5zdGVhZCBvZiBqc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBmYWxzZWAgICAgICAgICAgfAp8IGBoaWRlVW50YWdnZWRgIHwgQm9vbGVhbiB8IElmIGB0cnVlYCByZW1vdmUgcm91dGVzIHdpdGhvdXQgdGFncyBpbiBzY2hlbWEgZnJvbSByZXN1bHRpbmcgc3dhZ2dlciBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBmYWxzZWAgICAgICAgICAgfAp8IGBzd2FnZ2VyYCAgICAgIHwgT2JqZWN0ICB8IFN3YWdnZXIgb2JqZWN0IGV4Y2VwdCBwYXRocyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB7fWAgICAgICAgICAgICAgfAoKTm90ZSAoKik6IEZhc3RpZnktb2FzIHBsdWdpbiBnYXRoZXIgYWxsIHNjaGVtYXMsIHNvIHlvdSBzaG91bGQgZW5zdXJlIHRoYXQgYWxsIG9mIHRoZW0gdW5kZXIgY3VycmVudCBhbmQgbmVzdGVkIHNjb3BlcyBoYXZlIHVuaXF1ZSBuYW1lcy4KTm90ZSAoKiopOiBzZWUgW0V4cG9zZSByb3V0ZSBvcHRpb25zXSgvZG9jcy9pbnRlcmZhY2VzL2Zhc3RpZnlvYXMuZXhwb3Nlb3B0aW9ucy5tZCkKPHN1Yj5bQmFjayB0byB0b3BdKCN0b2MpPC9zdWI+CgojIyMgQWRkaXRpb25hbCBzY2hlbWEgb3B0aW9ucwoKSW4gb3JkZXIgdG8gcmVtb3ZlIHNvbWUgZW5kcG9pbnRzIGZyb20gU3dhZ2dlci9PcGVuQVBJIGRvY3VtZW50IHlvdSBtYXkgYWRkIGB7aGlkZTogdHJ1ZX1gIG9wdGlvbiB0byByb3V0ZSBzY2hlbWEuCgpgYGBqcwpjb25zdCBmYXN0aWZ5ID0gcmVxdWlyZSgnZmFzdGlmeScpKCkKZmFzdGlmeS5nZXQoJy9zb21lLXNlY3JldGUtcm91dGUvOmlkJywgewogIHNjaGVtYTogewogICAgaGlkZTogdHJ1ZSwKICAgIHBhcmFtczogewogICAgICB0eXBlOiAnb2JqZWN0JywKICAgICAgcHJvcGVydGllczogewogICAgICAgIGlkOiB7CiAgICAgICAgICB0eXBlOiAnc3RyaW5nJywKICAgICAgICAgIGRlc2NyaXB0aW9uOiAndXNlciBpZCcKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICByZXNwb25zZTogewogICAgICAyMDE6IHsKICAgICAgICBkZXNjcmlwdGlvbjogJ1N1Y2Nlc3NmdWwgcmVzcG9uc2UnLAogICAgICAgIHR5cGU6ICdvYmplY3QnLAogICAgICAgIHByb3BlcnRpZXM6IHsKICAgICAgICAgIGhlbGxvOiB7IHR5cGU6ICdzdHJpbmcnIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgfQp9LCAocmVxLCByZXBseSkgPT4ge30pCgpgYGAKCjxzdWI+W0JhY2sgdG8gdG9wXSgjdG9jKTwvc3ViPgoKIyMjIE9wZW5BUEkKClVubGlrZSByZWd1bGFyIE9wZW5BUEkgc3BlYyB5b3UnbGwgc3RpbGwgbmVlZCBzb21lIG9wdGlvbnMgZnJvbSBzd2FnZ2VyIDIuMC4KCmBgYGpzCmNvbnN0IGZhc3RpZnkgPSByZXF1aXJlKCdmYXN0aWZ5Jyk7CmNvbnN0IG9hcyA9IHJlcXVpcmUoJ2Zhc3RpZnktb2FzJyk7CmNvbnN0IGFwcCA9IGZhc3RpZnkoKTsKCmFwcC5yZWdpc3RlcihvYXMsIHsKICByb3V0ZVByZWZpeDogJy9kb2N1bWVudGF0aW9uJywKICBzd2FnZ2VyOiB7CiAgICBpbmZvOiB7CiAgICAgIHRpdGxlOiAnVGVzdCBvcGVuYXBpJywKICAgICAgZGVzY3JpcHRpb246ICd0ZXN0aW5nIHRoZSBmYXN0aWZ5IHN3YWdnZXIgYXBpJywKICAgICAgdmVyc2lvbjogJzAuMS4wJywKICAgIH0sCiAgICBleHRlcm5hbERvY3M6IHsKICAgICAgdXJsOiAnaHR0cHM6Ly9zd2FnZ2VyLmlvJywKICAgICAgZGVzY3JpcHRpb246ICdGaW5kIG1vcmUgaW5mbyBoZXJlJywKICAgIH0sCiAgICBjb25zdW1lczogWydhcHBsaWNhdGlvbi9qc29uJ10sIC8vIGFwcC13aWRlIGRlZmF1bHQgbWVkaWEtdHlwZQogICAgcHJvZHVjZXM6IFsnYXBwbGljYXRpb24vanNvbiddLCAvLyBhcHAtd2lkZSBkZWZhdWx0IG1lZGlhLXR5cGUKICAgIHNlcnZlcnM6IFt7CiAgICAgIHVybDogJ2h0dHA6Ly9hcGkuZXhhbXBsZS5jb20vdjEnLAogICAgICBkZXNjcmlwdGlvbjogJ09wdGlvbmFsIHNlcnZlciBkZXNjcmlwdGlvbiwgZS5nLiBNYWluIChwcm9kdWN0aW9uKSBzZXJ2ZXInLAogICAgfV0sCiAgICBjb21wb25lbnRzOiB7CiAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL09wZW5BUEkubmV4dC92ZXJzaW9ucy8zLjAuMC5tZCNjb21wb25lbnRzT2JqZWN0IGZvciBtb3JlIG9wdGlvbnMKICAgICAgc2VjdXJpdHlTY2hlbWVzOiB7CiAgICAgICAgQmFzaWNBdXRoOiB7CiAgICAgICAgICB0eXBlOiAnaHR0cCcsCiAgICAgICAgICBzY2hlbWU6ICdiYXNpYycsCiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sIAogIH0sCn0pOwpgYGAKCjxzdWI+W0JhY2sgdG8gdG9wXSgjdG9jKTwvc3ViPgoKIyMjIFN3YWdnZXIgMi4wCgpUaGlzIHdpbGwgbm90IGdlbmVyYXRlIHN3YWdnZXIgMi4wIGRvY3MuIEl0IHdpbGwgZ2VuZXJhdGUgb3BlbmFwaSAzLjAgZG9jcywgYnV0IGZyb20gc3dhZ2dlciAyLjAgKGFuZCBmYXN0aWZ5LXN3YWdnZXIpIGNvbXBhdGlibGUgY29uZmlndXJhdGlvbi4KSXQgd2lsbCBhbGxvdyBlYXNpbHkgbWlncmF0ZSBmcm9tIGZhc3RpZnktc3dhZ2dlci4KClRoZSBleGFtcGxlIGJlbG93IGlzIHRha2VuIGZyb20gZmFzdGlmeS1zd2FnZ2VyIHJlcG8gdG8gc2hvdyB0aGUgZGlmZmVyZW5jZXMgLgoKYGBganMKY29uc3QgZmFzdGlmeSA9IHJlcXVpcmUoJ2Zhc3RpZnknKSgpCgovLyBiZWZvcmU6IGZhc3RpZnkucmVnaXN0ZXIocmVxdWlyZSgnZmFzdGlmeS1zd2FnZ2VyJyksIHsKZmFzdGlmeS5yZWdpc3RlcihyZXF1aXJlKCdmYXN0aWZ5LW9hcycpLCB7IC8vIGFmdGVyCiAgcm91dGVQcmVmaXg6ICcvZG9jdW1lbnRhdGlvbicsCiAgc3dhZ2dlcjogewogICAgaW5mbzogewogICAgICB0aXRsZTogJ1Rlc3Qgc3dhZ2dlcicsCiAgICAgIGRlc2NyaXB0aW9uOiAndGVzdGluZyB0aGUgZmFzdGlmeSBzd2FnZ2VyIGFwaScsCiAgICAgIHZlcnNpb246ICcwLjEuMCcKICAgIH0sCiAgICBleHRlcm5hbERvY3M6IHsKICAgICAgdXJsOiAnaHR0cHM6Ly9zd2FnZ2VyLmlvJywKICAgICAgZGVzY3JpcHRpb246ICdGaW5kIG1vcmUgaW5mbyBoZXJlJwogICAgfSwKICAgIGhvc3Q6ICdsb2NhbGhvc3QnLAogICAgc2NoZW1lczogWydodHRwJ10sCiAgICBjb25zdW1lczogWydhcHBsaWNhdGlvbi9qc29uJ10sCiAgICBwcm9kdWNlczogWydhcHBsaWNhdGlvbi9qc29uJ10sCiAgICB0YWdzOiBbCiAgICAgIHsgbmFtZTogJ3VzZXInLCBkZXNjcmlwdGlvbjogJ1VzZXIgcmVsYXRlZCBlbmQtcG9pbnRzJyB9LAogICAgICB7IG5hbWU6ICdjb2RlJywgZGVzY3JpcHRpb246ICdDb2RlIHJlbGF0ZWQgZW5kLXBvaW50cycgfQogICAgXSwKICAgIHNlY3VyaXR5RGVmaW5pdGlvbnM6IHsKICAgICAgYXBpS2V5OiB7CiAgICAgICAgdHlwZTogJ2FwaUtleScsCiAgICAgICAgbmFtZTogJ2FwaUtleScsCiAgICAgICAgaW46ICdoZWFkZXInCiAgICAgIH0KICAgIH0KICB9Cn0pCgpmYXN0aWZ5LnB1dCgnL3NvbWUtcm91dGUvOmlkJywgewogIHNjaGVtYTogewogICAgZGVzY3JpcHRpb246ICdwb3N0IHNvbWUgZGF0YScsCiAgICB0YWdzOiBbJ3VzZXInLCAnY29kZSddLAogICAgc3VtbWFyeTogJ3F3ZXJ0eScsCiAgICBwYXJhbXM6IHsKICAgICAgdHlwZTogJ29iamVjdCcsCiAgICAgIHByb3BlcnRpZXM6IHsKICAgICAgICBpZDogewogICAgICAgICAgdHlwZTogJ3N0cmluZycsCiAgICAgICAgICBkZXNjcmlwdGlvbjogJ3VzZXIgaWQnCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgYm9keTogewogICAgICB0eXBlOiAnb2JqZWN0JywKICAgICAgcHJvcGVydGllczogewogICAgICAgIGhlbGxvOiB7IHR5cGU6ICdzdHJpbmcnIH0sCiAgICAgICAgb2JqOiB7CiAgICAgICAgICB0eXBlOiAnb2JqZWN0JywKICAgICAgICAgIHByb3BlcnRpZXM6IHsKICAgICAgICAgICAgc29tZTogeyB0eXBlOiAnc3RyaW5nJyB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgcmVzcG9uc2U6IHsKICAgICAgMjAxOiB7CiAgICAgICAgZGVzY3JpcHRpb246ICdTdWNjZXNzZnVsIHJlc3BvbnNlJywKICAgICAgICB0eXBlOiAnb2JqZWN0JywKICAgICAgICBwcm9wZXJ0aWVzOiB7CiAgICAgICAgICBoZWxsbzogeyB0eXBlOiAnc3RyaW5nJyB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgc2VjdXJpdHk6IFsKICAgICAgewogICAgICAgICJhcGlfa2V5IjogW10KICAgICAgfQogICAgXQogIH0KfSwgKHJlcSwgcmVwbHkpID0+IHt9KQoKZmFzdGlmeS5yZWFkeShlcnIgPT4gewogIGlmIChlcnIpIHRocm93IGVycgogIGZhc3RpZnkub2FzKCkKfSkKYGBgCgo8c3ViPltCYWNrIHRvIHRvcF0oI3RvYyk8L3N1Yj4KCiMjIFVJCgpTd2FnZ2VyIFVJIGlzIGF2YWlsYWJsZSB2aWEgYC88cm91dGVQcmVmaXg+L2luZGV4Lmh0bWxgLiBCeSBkZWZhdWx0IGl0J3MgYC9kb2N1bWVudGF0aW9uL2luZGV4Lmh0bWxgLgoKUmVEb2MgVUkgaXMgYXZhaWxhYmxlIHZpYSBgLzxyb3V0ZVByZWZpeD4vZG9jcy5odG1sYC4gQnkgZGVmYXVsdCBpdCdzIGAvZG9jdW1lbnRhdGlvbi9kb2NzLmh0bWxgLgoKPHN1Yj5bQmFjayB0byB0b3BdKCN0b2MpPC9zdWI+CgojIyBEZXZlbG9wbWVudAoKSW4gb3JkZXIgdG8gc3RhcnQgZGV2ZWxvcG1lbnQgcnVuOgoKYGBgc2gKbnBtIGkKbnBtIHJ1biBwcmVwYXJlCmBgYAoKU28gdGhhdCBbc3dhZ2dlci11aV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkpIHN0YXRpYyBmb2xkZXIgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIHlvdS4KCjxzdWI+W0JhY2sgdG8gdG9wXSgjdG9jKTwvc3ViPgoKIyMgU2VlIGFsc28KCiogW2Zhc3RpZnktc3dhZ2dlcl0oaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RpZnkvZmFzdGlmeS1zd2FnZ2VyKSAtIHN3YWdnZXIgMi4wIGRvY3MgZ2VuZXJhdGlvbiBwbHVnaW4uCiogW2Zhc3RpZnktc3dhZ2dlcmdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3NlcmlvdXNtZS9mYXN0aWZ5LXN3YWdnZXJnZW4pIC0gZmFzdGlmeSByb3V0ZXMgZ2VuZXJhdGlvbiBmcm9tIHN3YWdnZXIgMi4wIGRvY3MuCiogW2Zhc3RpZnktb3BlbmFwaS1nbHVlXShodHRwczovL2dpdGh1Yi5jb20vc2VyaW91c21lL2Zhc3RpZnktb3BlbmFwaS1nbHVlKSAtIGZhc3RpZnktc3dhZ2dlcmdlbiBzdWNjZXNzb3IsIGdlbmVyYXRlcyBmYXN0aWZ5IHJvdXRlcyBmcm9tIHN3YWdnZXIgMi4wIGFuZCBvcGVuYXBpIDMuMCBkb2NzIChqdXN0IGxpa2UgdGhpcyBtb2R1bGUsIGJ1dCBpbiBvcHBvc2l0ZSBkaXJlY3Rpb24pLgoKPHN1Yj5bQmFjayB0byB0b3BdKCN0b2MpPC9zdWI+CgojIyBMaWNlbnNlCgpMaWNlbnNlZCB1bmRlciBbTUlUXSguL0xJQ0VOU0UpLgoKPHN1Yj5bQmFjayB0byB0b3BdKCN0b2MpPC9zdWI+Cg== readmeEtag: '"383de813919532cd88e4767385f02dfc62359d26"' readmeLastModified: Thu, 03 Nov 2022 12:15:58 GMT repositoryId: 142213233 description: Fastify OpenAPI plugin. created: '2018-07-24T21:09:52Z' updated: '2025-03-16T00:16:44Z' language: JavaScript archived: false stars: 73 watchers: 4 forks: 20 owner: SkeLLLa logo: https://avatars.githubusercontent.com/u/2273103?v=4 license: MIT repoEtag: '"cb0636c33ed6f76660d0ff9ff746aeeb84bee2549aeafdc807519c0ef464f76f"' repoLastModified: Sun, 16 Mar 2025 00:16:44 GMT foundInMaster: true id: 0bda0b3ad75df5840c48691fe579a850 - source: openapi3 tags repository: https://github.com/manchenkoff/openapi3-parser v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFBhcnNlcgoKWyFbUHlQSSAtIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L29wZW5hcGkzLXBhcnNlcildKGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9vcGVuYXBpMy1wYXJzZXIvKQpbIVtQeVBJIC0gRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvZG0vb3BlbmFwaTMtcGFyc2VyKV0oaHR0cHM6Ly9jbGlja3B5LmNsaWNraG91c2UuY29tL2Rhc2hib2FyZC9vcGVuYXBpMy1wYXJzZXIpClshW1B5UEkgLSBQeXRob24gVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3B5dmVyc2lvbnMvb3BlbmFwaTMtcGFyc2VyKV0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L29wZW5hcGkzLXBhcnNlci8pClshW1B5UEkgLSBGb3JtYXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9mb3JtYXQvb3BlbmFwaTMtcGFyc2VyKV0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L29wZW5hcGkzLXBhcnNlci8pClshW1B5UEkgLSBMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvbC9vcGVuYXBpMy1wYXJzZXIpXShsaWNlbnNlLnR4dCkKCkEgc2ltcGxlIHBhY2thZ2UgdG8gcGFyc2UgeW91ciBPcGVuQVBJIDMgZG9jdW1lbnRzIGludG8gUHl0aG9uIG9iamVjdCB0byB3b3JrIHdpdGguCgpTdXBwb3J0ZWQgdmVyc2lvbnM6Cgp8IFZlcnNpb24gfCBTdGF0dXMgICAgICAgICB8CnwgLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tIHwKfCAyLjAgICAgIHwgRGVwcmVjYXRlZCAgICAgfAp8IDMuMCAgICAgfCAqKlN1cHBvcnRlZCoqICB8CnwgMy4xICAgICB8IEluIGRldmVsb3BtZW50IHwKCiMjIEhvdyB0byBpbnN0YWxsCgpUbyBpbnN0YWxsIHBhY2thZ2UgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZAoKYGBgCnBpcCBpbnN0YWxsIG9wZW5hcGkzLXBhcnNlcgpgYGAKCiMjIEhvdyB0byB1c2UKCkV4YW1wbGUgb2YgcGFyc2VyIHVzYWdlCgpgYGAKPj4+IGZyb20gb3BlbmFwaV9wYXJzZXIgaW1wb3J0IHBhcnNlCj4+PiBjb250ZW50ID0gcGFyc2UoJ3N3YWdnZXIueW1sJykKPj4+IHByaW50KGNvbnRlbnQpCmBgYAoKR2V0IGFwcGxpY2F0aW9uIHNlcnZlcnMKCmBgYHB5dGhvbgpmcm9tIG9wZW5hcGlfcGFyc2VyIGltcG9ydCBwYXJzZQoKc3BlY2lmaWNhdGlvbiA9IHBhcnNlKCdkYXRhL3N3YWdnZXIueW1sJykKCnByaW50KCJBcHBsaWNhdGlvbiBzZXJ2ZXJzIikKCmZvciBzZXJ2ZXIgaW4gc3BlY2lmaWNhdGlvbi5zZXJ2ZXJzOgogICAgcHJpbnQoZiJ7c2VydmVyLmRlc2NyaXB0aW9ufSAtIHtzZXJ2ZXIudXJsfSIpCgojIE91dHB1dAojCiMgPj4gQXBwbGljYXRpb24gc2VydmVycwojID4+IHByb2R1Y3Rpb24gLSBodHRwczovL3VzZXJzLmFwcAojID4+IHN0YWdpbmcgLSBodHRwOi8vc3RhZ2UudXNlcnMuYXBwCiMgPj4gZGV2ZWxvcG1lbnQgLSBodHRwOi8vdXNlcnMubG9jYWwKYGBgCgpHZXQgbGlzdCBvZiBhcHBsaWNhdGlvbiBVUkxzCgpgYGBweXRob24KZnJvbSBvcGVuYXBpX3BhcnNlciBpbXBvcnQgcGFyc2UKCnNwZWNpZmljYXRpb24gPSBwYXJzZSgndGVzdHMvZGF0YS9zd2FnZ2VyLnltbCcpCgp1cmxzID0gW3gudXJsIGZvciB4IGluIHNwZWNpZmljYXRpb24ucGF0aHNdCgpwcmludCh1cmxzKQoKIyBPdXRwdXQKIwojID4+IFsnL3VzZXJzJywgJy91c2Vycy97dXVpZH0nXQpgYGAKCkdldCBvcGVyYXRpb24gd2l0aCBzdXBwb3J0ZWQgSFRUUCBtZXRob2RzCgpgYGBweXRob24KZnJvbSBvcGVuYXBpX3BhcnNlciBpbXBvcnQgcGFyc2UKCnNwZWNpZmljYXRpb24gPSBwYXJzZSgndGVzdHMvZGF0YS9zd2FnZ2VyLnltbCcpCgpmb3IgcGF0aCBpbiBzcGVjaWZpY2F0aW9uLnBhdGhzOgogICAgc3VwcG9ydGVkX21ldGhvZHMgPSAnLCcuam9pbihbeC5tZXRob2QudmFsdWUgZm9yIHggaW4gcGF0aC5vcGVyYXRpb25zXSkKCiAgICBwcmludChmIk9wZXJhdGlvbjoge3BhdGgudXJsfSwgbWV0aG9kczoge3N1cHBvcnRlZF9tZXRob2RzfSIpCgojIE91dHB1dAojCiMgPj4gT3BlcmF0aW9uOiAvdXNlcnMsIG1ldGhvZHM6IGdldCxwb3N0CiMgPj4gT3BlcmF0aW9uOiAvdXNlcnMve3V1aWR9LCBtZXRob2RzOiBnZXQscHV0CmBgYAo= readmeEtag: '"6597b342af7ba10b333a6781f10ca6b41c064ded"' readmeLastModified: Fri, 25 Apr 2025 11:01:49 GMT repositoryId: 290637240 description: >- OpenAPI 3 parser to use a specification inside of the code in your projects created: '2020-08-27T00:47:00Z' updated: '2025-12-30T17:42:57Z' language: Python archived: false stars: 85 watchers: 1 forks: 41 owner: manchenkoff logo: https://avatars.githubusercontent.com/u/6690063?v=4 license: MIT repoEtag: '"4fe06daedaa79bb3969746cb7c71c99110f3378dd57e5e74e39fb2fb3215d1b8"' repoLastModified: Tue, 30 Dec 2025 17:42:57 GMT foundInMaster: true category: Parsers id: 074facec95becd6c9d361eb75f2d1d2f - source: openapi3 tags repository: https://github.com/meteran/gnext v3: true repositoryMetadata: base64Readme: >- IyBnTmV4dCBXZWIgRnJhbWV3b3JrCgpbIVtHbyBSZXBvcnQgQ2FyZF0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vbWV0ZXJhbi9nbmV4dCldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9tZXRlcmFuL2duZXh0KQpbIVtHb0RvY10oaHR0cHM6Ly9wa2cuZ28uZGV2L2JhZGdlL2dpdGh1Yi5jb20vbWV0ZXJhbi9nbmV4dD9zdGF0dXMuc3ZnKV0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vbWV0ZXJhbi9nbmV4dD90YWI9ZG9jKQpbIVtSZWxlYXNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9yZWxlYXNlL21ldGVyYW4vZ25leHQuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9naXRodWIuY29tL21ldGVyYW4vZ25leHQvcmVsZWFzZXMpCgpnTmV4dCBpcyBhIEdvbGFuZyBBUEktZm9jdXNlZCBmcmFtZXdvcmsgZXh0ZW5kaW5nIFtHaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9naW4tZ29uaWMvZ2luKS4gT2ZmZXJzIHRoZSBBUEkKc3RydWN0dXJpbmcsIGF1dG9tYXRlcyB2YWxpZGF0aW9uIGFuZCBnZW5lcmF0ZXMgZG9jdW1lbnRhdGlvbi4gSXQncyBjb21wYXRpYmxlIHdpdGggdGhlIGV4aXN0aW5nIEdpbiBoYW5kbGVycyBhbmQgR2luCm1pZGRsZXdhcmVzLiBEZXNpZ25lZCB0byBzaW1wbGlmeSBhbmQgYm9vc3QgZGV2ZWxvcG1lbnQgb2YgSlNPTiBBUElzLiBZb3UgY2FuIGxlYXZlIGdlbmVyaWMgYW5kIGJvcmluZyBzdHVmZiB0byBnTmV4dAphbmQgcHVyZWx5IGZvY3VzIG9uIHRoZSBidXNpbmVzcyBsb2dpYy4KCiMjIENvbnRlbnRzCgotIFtnTmV4dCBXZWIgRnJhbWV3b3JrXSgjZ25leHQtd2ViLWZyYW1ld29yaykKICAgIC0gW0NvbnRlbnRzXSgjY29udGVudHMpCiAgICAtIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCiAgICAtIFtRdWljayBzdGFydF0oI3F1aWNrLXN0YXJ0KQotIFtEb2N1bWVudGF0aW9uXShodHRwczovL21ldGVyYW4uZ2l0aHViLmlvL2duZXh0L2RvY3VtZW50YXRpb24vc2l0ZS8pCgojIyBJbnN0YWxsYXRpb24KCllvdSBjYW4gZG93bmxvYWQgZ05leHQgYW5kIGluc3RhbGwgaXQgaW4geW91ciBwcm9qZWN0IGJ5IHJ1bm5pbmc6CgpgYGBzaGVsbApnbyBnZXQgLXUgZ2l0aHViLmNvbS9tZXRlcmFuL2duZXh0CmBgYAoKIyMgUXVpY2sgc3RhcnQKClRoaXMgdHV0b3JpYWwgYXNzdW1lcywgdGhhdCB5b3UgYWxyZWFkeSBoYXZlIEdvbGFuZyBpbnN0YWxsYXRpb24gYW5kIGJhc2ljIGtub3dsZWRnZSBhYm91dCBob3cgdG8gYnVpbGQgYW5kIHJ1biBHbwpwcm9ncmFtcy4gSWYgdGhpcyBpcyB5b3VyIGZpcnN0IGhpdCB3aXRoIEdvLCBhbmQgeW91IGZlZWwgeW91IGhhdmUgbm8gaWRlYSB3aGF0IGlzIGhhcHBlbmluZyBoZXJlLCBwbGVhc2UgcmVhZCBob3cKdG8gW2dldCBzdGFydGVkIHdpdGggR29dKGh0dHBzOi8vZ28uZGV2L2RvYy90dXRvcmlhbC9nZXR0aW5nLXN0YXJ0ZWQpLgoKT2ssIHNvIGxldCdzIGNyZWF0ZSBhIHByb2plY3Q6CgpgYGBzaGVsbApta2RpciBnbmV4dC1leGFtcGxlCmNkIGduZXh0LWV4YW1wbGUKZ28gbW9kIGluaXQgZXhhbXBsZS5jb20vZ25leHQKZ28gZ2V0IGdpdGh1Yi5jb20vbWV0ZXJhbi9nbmV4dApgYGAKCkNyZWF0ZSBhIGZpbGUgYGV4YW1wbGUuZ29gIGFuZCBmaWxsIGl0IHVwIHdpdGggdGhlIGZvbGxvd2luZyBjb2RlOgoKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgImdpdGh1Yi5jb20vbWV0ZXJhbi9nbmV4dCIKCmZ1bmMgbWFpbigpIHsKCXIgOj0gZ25leHQuUm91dGVyKCkKCglyLkdFVCgiL2V4YW1wbGUiLCBmdW5jKCkgc3RyaW5nIHsKCQlyZXR1cm4gIkhlbGxvIFdvcmxkISIKCX0pCgoJXyA9IHIuUnVuKCkKfQpgYGAKClJ1biBpdDoKCmBgYHNoZWxsCmdvIHJ1biBleGFtcGxlCmBgYAoKTm93IHlvdSBjYW4gdmlzaXQgdGhpcyBsaW5rIGluIHlvdXIgYnJvd3NlcjogaHR0cDovL2xvY2FsaG9zdDo4MDgwL2V4YW1wbGUKClllcywgeWVzLi4uIG9mIGNvdXJzZSBpdCB3b3JrcywgYnV0IHRoYXQncyBib3JpbmcuLi4gTGV0J3Mgb3BlbiB0aGlzIHBhZ2U6IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9kb2NzCgpXaG9hLCB0aGF0IHdhcyBhbWF6aW5nLCAuLi5idXQgbm90IHZlcnkgdXNlZnVsLgoKTGV0J3MgdHJ5IHNvbWUgcmVhbCBleGFtcGxlLiBXaXRoIHJlcXVlc3QgYW5kIHJlc3BvbnNlLiBXZSBjYW4gbW9kaWZ5IG91ciBoYW5kbGVyIHRvIHVzZSBzdHJ1Y3R1cmVzOgoKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgImdpdGh1Yi5jb20vbWV0ZXJhbi9nbmV4dCIKCmZ1bmMgbWFpbigpIHsKCXIgOj0gZ25leHQuUm91dGVyKCkKCglyLlBPU1QoIi9leGFtcGxlIiwgaGFuZGxlcikKCV8gPSByLlJ1bigpCn0KCnR5cGUgTXlSZXF1ZXN0IHN0cnVjdCB7CglJZCAgIGludCAgICBganNvbjoiaWQiIGJpbmRpbmc6InJlcXVpcmVkImAKCU5hbWUgc3RyaW5nIGBqc29uOiJuYW1lImAKfQoKdHlwZSBNeVJlc3BvbnNlIHN0cnVjdCB7CglSZXN1bHQgc3RyaW5nIGBqc29uOiJyZXN1bHQiYAp9CgpmdW5jIGhhbmRsZXIocmVxICpNeVJlcXVlc3QpICpNeVJlc3BvbnNlIHsKCXJldHVybiAmTXlSZXNwb25zZXtSZXN1bHQ6IHJlcS5OYW1lfQp9CmBgYAoKUmVzdGFydCB0aGUgc2VydmVyIGFuZCB2aXNpdCB0aGUgZG9jcyBwYWdlLiBZb3UgY2FuIHNlZSB0aGF0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9mIGBQT1NUIC9leGFtcGxlYCBlbmRwb2ludCBhcmUKZG9jdW1lbnRlZC4gVGhhdCdzIHRoZSByZWFsIHBvd2VyIQoKVGhlIFBPU1QgcmVxdWVzdCB3aXRob3V0IHJlcXVpcmVkIGBpZGAgbm93IGZhaWxzIHdpdGggdGhlIHZhbGlkYXRpb24gZXJyb3I6CgpgYGBzaGVsbApjdXJsIC0tcmVxdWVzdCBQT1NUIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9leGFtcGxlIC0tZGF0YSAneyJuYW1lIjogInNvbWUgbmFtZSJ9JwpgYGAKCmdpdmVzIG91dHB1dDoKCmBgYGpzb24KewogICJtZXNzYWdlIjogInZhbGlkYXRpb24gZXJyb3IiLAogICJkZXRhaWxzIjogWwogICAgImZpZWxkIHZhbGlkYXRpb24gZm9yICdpZCcgZmFpbGVkIG9uIHRoZSAncmVxdWlyZWQnIHRhZyB3aXRoIHZhbHVlICcnIgogIF0sCiAgInN1Y2Nlc3MiOiBmYWxzZQp9CmBgYAoKdGhlIHZhbGlkIHJlcXVlc3Q6CgpgYGBzaGVsbApjdXJsIC0tcmVxdWVzdCBQT1NUIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9leGFtcGxlIC0tZGF0YSAneyJuYW1lIjogInNvbWUgbmFtZSIsICJpZCI6IDR9JwpgYGAKCmdpdmVzIHVzIHRoZSBleHBlY3RlZCByZXNwb25zZToKCmBgYGpzb24KewogICJyZXN1bHQiOiAic29tZSBuYW1lIgp9CmBgYAoKQ29uZ3JhdHVsYXRpb25zISBOb3cgeW91IGFyZSBwcmVwYXJlZCBmb3IgdGhlIGZhc3QgZm9yd2FyZGluZyBkZXZlbG9wbWVudCBvZiB5b3VyIGdyZWF0IEFQSS4KCg== readmeEtag: '"05889fcd99495fbaa5b5c9b75bd40d37d5e74146"' readmeLastModified: Mon, 11 Sep 2023 11:17:40 GMT repositoryId: 434389055 description: >- Web Framework extension for Gin. Offers the API structuring, automates validation and generates documentation. It's fully compatible with the current Gin usages and Gin's middlewares. created: '2021-12-02T22:07:56Z' updated: '2025-10-07T01:51:12Z' language: Go archived: false stars: 72 watchers: 6 forks: 5 owner: meteran logo: https://avatars.githubusercontent.com/u/2293924?v=4 license: MIT repoEtag: '"6e909a9c4c656232ada96ffd386bac56ed8d2e18a268252a4dc91dec95dd1ee6"' repoLastModified: Tue, 07 Oct 2025 01:51:12 GMT foundInMaster: true category: - SDK - Server Implementations id: 7e0dad785526ee6f46eb80765465f803 - source: - openapi3 tags - openapi31 tags repository: https://github.com/pb33f/libopenapi-validator v3: true id: b77b0d150f7c5b07a939f34b5a16c59d repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+DQoJPGltZyBzcmM9ImxpYm9wZW5hcGktbG9nby5wbmciIGFsdD0ibGlib3BlbmFwaSIgaGVpZ2h0PSIzMDBweCIgd2lkdGg9IjQ1MHB4Ii8+DQo8L3A+DQoNCiMgRW50ZXJwcmlzZSBncmFkZSBPcGVuQVBJIHZhbGlkYXRpb24gdG9vbHMgZm9yIGdvbGFuZy4NCg0KIVtQaXBlbGluZV0oaHR0cHM6Ly9naXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGktdmFsaWRhdG9yL3dvcmtmbG93cy9CdWlsZC9iYWRnZS5zdmcpDQpbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvcGIzM2YvbGlib3BlbmFwaS12YWxpZGF0b3IvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnPyldKGh0dHBzOi8vY29kZWNvdi5pby9naC9wYjMzZi9saWJvcGVuYXBpLXZhbGlkYXRvcikNClshW2Rpc2NvcmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZGlzY29yZC85MjMyNTgzNjM1NDA4MTU5MTIpXShodHRwczovL2Rpc2NvcmQuZ2cveDdWQUNWdUVHUCkNClshW0RvY3NdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZ29kb2MtcmVmZXJlbmNlLTVmYWZkNyldKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGktdmFsaWRhdG9yKQ0KDQpBIHZhbGlkYXRpb24gbW9kdWxlIGZvciBbbGlib3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGkpLg0KDQpgbGlib3BlbmFwaS12YWxpZGF0b3JgIHdpbGwgdmFsaWRhdGUgdGhlIGZvbGxvd2luZyBlbGVtZW50cyBhZ2FpbnN0IGFuIE9wZW5BUEkgMysgc3BlY2lmaWNhdGlvbg0KDQotICpodHRwLlJlcXVlc3QqIC0gVmFsaWRhdGVzIHRoZSByZXF1ZXN0IGFnYWluc3QgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbg0KLSAqaHR0cC5SZXNwb25zZSogLSBWYWxpZGF0ZXMgdGhlIHJlc3BvbnNlIGFnYWluc3QgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbg0KLSAqbGlib3BlbmFwaS5Eb2N1bWVudCogLSBWYWxpZGF0ZXMgdGhlIE9wZW5BUEkgZG9jdW1lbnQgYWdhaW5zdCB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uDQotICpiYXNlLlNjaGVtYSogLSBWYWxpZGF0ZXMgYSBzY2hlbWEgYWdhaW5zdCBhIEpTT04gb3IgWUFNTCBibG9iIC8gdW5tYXJzaGFsbGVkIG9iamVjdA0KDQrwn5GJ8J+RiSBbQ2hlY2sgb3V0IHRoZSBmdWxsIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS92YWxpZGF0aW9uLykg8J+RiPCfkYgNCg0KLS0tDQoNCiMjIEluc3RhbGxhdGlvbg0KDQpgYGBiYXNoDQpnbyBnZXQgZ2l0aHViLmNvbS9wYjMzZi9saWJvcGVuYXBpLXZhbGlkYXRvcg0KYGBgDQoNCiMjIFZhbGlkYXRlIE9wZW5BUEkgRG9jdW1lbnQNCg0KYGBgYmFzaA0KZ28gcnVuIGdpdGh1Yi5jb20vcGIzM2YvbGlib3BlbmFwaS12YWxpZGF0b3IvY21kL3ZhbGlkYXRlQGxhdGVzdCBbLS1yZWdleGVuZ2luZV0gWy0teWFtbDJqc29uXSA8ZmlsZT4NCmBgYA0KDQojIyMgT3B0aW9ucw0KDQojIyMjIC0tcmVnZXhlbmdpbmUNCvCflI0gRXhhbXBsZTogVXNlIGEgY3VzdG9tIHJlZ2V4IGVuZ2luZS9mbGFnIChlLmcuLCBlY21hc2NyaXB0KQ0KYGBgYmFzaA0KZ28gcnVuIGdpdGh1Yi5jb20vcGIzM2YvbGlib3BlbmFwaS12YWxpZGF0b3IvY21kL3ZhbGlkYXRlQGxhdGVzdCAtLXJlZ2V4ZW5naW5lPWVjbWFzY3JpcHQgPGZpbGU+DQpgYGANCvCflKcgU3VwcG9ydGVkICoqLS1yZWdleGVuZ2luZSoqIGZsYWdzL3ZhbHVlcyAo4oS577iPIERlZmF1bHQ6IHJlMikNCi0gbm9uZQ0KLSBpZ25vcmVjYXNlDQotIG11bHRpbGluZQ0KLSBleHBsaWNpdGNhcHR1cmUNCi0gY29tcGlsZWQNCi0gc2luZ2xlbGluZQ0KLSBpZ25vcmVwYXR0ZXJud2hpdGVzcGFjZQ0KLSByaWdodHRvbGVmdA0KLSBkZWJ1Zw0KLSBlY21hc2NyaXB0DQotIHJlMg0KLSB1bmljb2RlDQoNCiMjIyMgLS15YW1sMmpzb24NCvCflI0gQ29udmVydCBZQU1MIGZpbGVzIHRvIEpTT04gYmVmb3JlIHZhbGlkYXRpb24gKOKEue+4jyBEZWZhdWx0OiBmYWxzZSkNCg0KW2xpYm9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9wYjMzZi9saWJvcGVuYXBpL2Jsb2IvbWFpbi9kYXRhbW9kZWwvc3BlY19pbmZvLmdvI0wxMTUpIHBhc3NlcyBgbWFwW2ludGVyZmFjZXt9XWludGVyZmFjZXt9YCBzdHJ1Y3R1cmVzIGZvciBkZWVwbHkgbmVzdGVkIG9iamVjdHMgb3IgY29tcGxleCBtYXBwaW5ncyBpbiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLCB3aGljaCBhcmUgbm90IGFsbG93ZWQgaW4gSlNPTi4NClRoZXNlIHN0cnVjdHVyZXMgY2Fubm90IGJlIHByb3Blcmx5IGNvbnZlcnRlZCB0byBKU09OIGJ5IGxpYm9wZW5hcGkgYW5kIGNhbm5vdCBiZSB2YWxpZGF0ZWQgYnkganNvbnNjaGVtYSwgcmVzdWx0aW5nIGluIGFtYmlndW91cyBlcnJvcnMuDQoNClRoaXMgZmxhZyBhbGxvd3MgcHJlLWNvbnZlcnRpbmcgZnJvbSBZQU1MIHRvIEpTT04gdG8gYnlwYXNzIHRoaXMgbGltaXRhdGlvbiBvZiB0aGUgbGlib3BlbmFwaS4NCg0KKipXaGVuIGRvZXMgdGhpcyBoYXBwZW4/KioNCi0gT3BlbkFQSSBzcGVjcyB3aXRoIGRlZXBseSBuZXN0ZWQgc2NoZW1hIGRlZmluaXRpb25zDQotIENvbXBsZXggYGFsbE9mYCwgYG9uZU9mYCwgb3IgYGFueU9mYCBzdHJ1Y3R1cmVzIHdpdGggbXVsdGlwbGUgbGV2ZWxzDQotIFNwZWNpZmljYXRpb25zIHdpdGggaW50cmljYXRlIG9iamVjdCBtYXBwaW5ncyBpbiBleGFtcGxlcyBvciBzY2hlbWEgcHJvcGVydGllcw0KDQpFbmFibGluZyB0aGlzIGZsYWcgcHJlLWNvbnZlcnRzIHRoZSBZQU1MIGRvY3VtZW50IGZyb20gWUFNTCB0byBKU09OLCBlbnN1cmluZyBhIGNsZWFuIEpTT04gc3RydWN0dXJlIGJlZm9yZSB2YWxpZGF0aW9uLg0KDQpFeGFtcGxlOg0KYGBgYmFzaA0KZ28gcnVuIGdpdGh1Yi5jb20vcGIzM2YvbGlib3BlbmFwaS12YWxpZGF0b3IvY21kL3ZhbGlkYXRlQGxhdGVzdCAtLXlhbWwyanNvbiA8ZmlsZT4NCmBgYA0KDQojIyBEb2N1bWVudGF0aW9uDQoNCi0gW1RoZSBzdHJ1Y3R1cmUgb2YgdGhlIHZhbGlkYXRvcl0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL3ZhbGlkYXRpb24vI3RoZS1zdHJ1Y3R1cmUtb2YtdGhlLXZhbGlkYXRvcikNCiAgLSBbVmFsaWRhdGlvbiBlcnJvcnNdKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS92YWxpZGF0aW9uLyN2YWxpZGF0aW9uLWVycm9ycykNCiAgLSBbU2NoZW1hIGVycm9yc10oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL3ZhbGlkYXRpb24vI3NjaGVtYS1lcnJvcnMpDQogIC0gW0hpZ2gtbGV2ZWwgdmFsaWRhdGlvbl0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL3ZhbGlkYXRpb24vI2hpZ2gtbGV2ZWwtdmFsaWRhdGlvbikNCi0gW1ZhbGlkYXRpbmcgaHR0cC5SZXF1ZXN0XShodHRwczovL3BiMzNmLmlvL2xpYm9wZW5hcGkvdmFsaWRhdGlvbi8jdmFsaWRhdGluZy1odHRwcmVxdWVzdCkNCi0gW1ZhbGlkYXRpbmcgaHR0cC5SZXF1ZXN0IGFuZCBodHRwLlJlc3BvbnNlXShodHRwczovL3BiMzNmLmlvL2xpYm9wZW5hcGkvdmFsaWRhdGlvbi8jdmFsaWRhdGluZy1odHRwcmVxdWVzdC1hbmQtaHR0cHJlc3BvbnNlKQ0KLSBbVmFsaWRhdGluZyBqdXN0IGh0dHAuUmVzcG9uc2VdKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS92YWxpZGF0aW9uLyN2YWxpZGF0aW5nLWp1c3QtaHR0cHJlc3BvbnNlKQ0KLSBbVmFsaWRhdGluZyBIVFRQIFBhcmFtZXRlcnNdKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS92YWxpZGF0aW9uLyN2YWxpZGF0aW5nLWh0dHAtcGFyYW1ldGVycykNCi0gW1ZhbGlkYXRpbmcgYW4gT3BlbkFQSSBkb2N1bWVudF0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL3ZhbGlkYXRpb24vI3ZhbGlkYXRpbmctYW4tb3BlbmFwaS1kb2N1bWVudCkNCi0gW1ZhbGlkYXRpbmcgU2NoZW1hc10oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL3ZhbGlkYXRpb24vI3ZhbGlkYXRpbmctc2NoZW1hcykNCg0KW2xpYm9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9wYjMzZi9saWJvcGVuYXBpKSBhbmQgW2xpYm9wZW5hcGktdmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vcGIzM2YvbGlib3BlbmFwaS12YWxpZGF0b3IpIGFyZQ0KcHJvZHVjdHMgb2YgUHJpbmNlc3MgQmVlZiBIZWF2eSBJbmR1c3RyaWVzLCBMTEMNCg== readmeEtag: '"e416418107bd5dc5e2d6da22eddcef8c73b72270"' readmeLastModified: Tue, 02 Dec 2025 11:11:50 GMT repositoryId: 621782398 description: >- OpenAPI validation extension for libopenapi, validate http requests and responses as well as schemas created: '2023-03-31T11:28:11Z' updated: '2026-02-05T01:14:36Z' language: Go archived: false stars: 129 watchers: 2 forks: 40 owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: MIT repoEtag: '"c52c89d4cd86f1d0347ab4cbcf4416d842d0053e82611837206dcb6e8291c3fc"' repoLastModified: Thu, 05 Feb 2026 01:14:36 GMT category: Parsers foundInMaster: true v3_1: true - source: openapi3 tags repository: https://github.com/vitalybibikov/azureextensions.swashbuckle v3: true repositoryMetadata: base64Readme: >- CiMgQXp1cmVFeHRlbnNpb25zLlN3YXNoYnVja2xlIHY0LjAuMAoKIyMjIChTZWFyY2hpbmcgZm9yIGNvbGxhYm9yYXRvcnMhKQoKT3BlbkFQSSAyLzMgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gU3dhc2hidWNrbGUoU3dhZ2dlcikgdG9vbGluZyBmb3IgQVBJJ3MgYnVpbHQgd2l0aCBBenVyZSBGdW5jdGlvbnMgCgpUaGlzIHByb2R1Y3QgYWltcyB0byBlYXNpbHkgcHJvdmlkZSBTd2FnZ2VyIGFuZCBTd2FnZ2VyIFVJIG9mIEFQSXMgY3JlYXRlZCBpbiBBenVyZSBGdW5jdGlvbnMgdXNpbmcgaXNvbGF0ZWQgd29ya2VyIG1vZGVsCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KNC4wLjQKLSBVcGRhdGVkIHRvIGxhdGVzdCBkZXBlbmRlbmNpZXMKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKNC4wLjMKYnkgQE1pa2VIb29rVHJhbnNwYXJpdHkKQWRkZWQgQ2xpZW50U2VjcmV0LCBVc2VCYXNpY0F1dGhlbnRpY2F0aW9uV2l0aEFjY2Vzc0NvZGVHcmFudAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjQuMC4yCi0gVXBkYXRlZCB0byBsYXRlc3QgU3dhZ2dlciA2LjUuMQotIEZpeGVzICYgSW1wcm92ZW1lbnRzCi0gQWRkZWQgc3ltYm9scyBwYWNrYWdlCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KNC4wLjEKCi0gRml4ZWQgc29tZSBtaW5vciBpc3N1ZXMKLSBVcGRhdGVkIHRvIG5ldyBsYW5ndWFnZSBmZWF0dXJlcwotIEFkZGVkIGV4Y2VwdGlvbiBoYW5kbGluZyBhbmQgbnVsbGFiaWxpdHkKLSBEb29jdW1lbmF0aW9uIGZpeGVzCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KNC4wLjAtYmV0YQotIGp1c3QgcmVtZWJlcmluZyB3aGF0IHRoZSBoZWNrIGlzIGdvaW5nIG9tIGhlcmUKLSBVcGRhdGVkIHRvIHY0IEZ1bmN0aW9ucwotIFVwZGF0ZWQgdG8gLk5FVCA4Ci0gVXBkYXRlZCB0byBpc29sYXRlZCB3b3JrZXIgbW9kZWwgKGZyb20gbm93IG9uIGl0IGlzIGdvaW5nIHRvIGJlIHRoZSBvbmx5IG9uZSB0aGF0IGlzIHN1cHBvcnRlZCwgYXMgaW5wcm9jZXNzIGlzIGdvaW5nIHRvIGJlIGRlcHJlY2F0ZWQpCi0gVXBkYXRlZCB0byBVSSB2NS4xNy4zCi0gVXBkYXRlZCB0byBTd2FnZ2VyIDUuNi41Ci0gVXBkYXRlZCBkb2NzCi0gQ29uc2lkZXJpbmcgcmVtb3Zpbmcgc3VwcG9ydCBvZiBOZXd0b25Kc29uCgogIGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9BenVyZUV4dGVuc2lvbnMuU3dhc2hidWNrbGUvNC4wLjAtYmV0YQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMy4zLjEtYmV0YQoKLSAjNjQgU3VwcG9ydCBmb3IgYXV0aG9yaXphdGlvbiBjb25maWd1cmF0aW9uCi0gIzYwIENvbnNvbGlkYXRlZCBleHRlbnNpb25zIGFuZCBhZGRlZCBvbmUgdG8gc3VwcG9ydCAubmV0IDUKLSBVcGRhdGVkIGRvY3MKLSBVcGRhdGVkIGpzL2h0bWwvY3NzIGxpYnMKLSBTb21lIGNsYXNzZWQgbWFkZSBwdWJsaWMgdG8gc3VwcG9ydCAzLXBhcnR5IElvQy4KLSBGaXhlZCBzZXZlcmFsIGlzc3VlcywgcmVsYXRlZCB0byB2ZXJzaW9uaW5nIGFuZCBYTUwgY29tbWVudHMuCi0gVXBkYXRlZCB0byBVSSB2My4zNy4yCi0gVXBkYXRlZCB0byBTd2FnZ2VyIDUuNi4zCi0gVXBkYXRlZCBkb2N1bWVudGF0aW9uCi0gQWJpbGl0eSB0byBjcmVhdGUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgZG9jdW1lbnRzLCBleGFtcGxlIGFkZGVkLgotIEFkZGVkIGV4YW1wbGVzIG9mIGEgY3VzdG9tIGZpbHRlciwgaW1wcm92ZWQgdGVzdCBhcHBsaWNhdGlvbgoKaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL0F6dXJlRXh0ZW5zaW9ucy5Td2FzaGJ1Y2tsZS80LjAuMC1iZXRhCgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjMuMS42CgpodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvQXp1cmVFeHRlbnNpb25zLlN3YXNoYnVja2xlLzMuMS42CgpGaXhlZCAjOCwgIzkKClVwZGF0ZWQgdG8gVUkgdjMuMjUuMQoKVXBkYXRlZCB0byBTd2FnZ2VyIDUuNC4xCgpGaXhlZCBiYXNlIHVybCBmb3IgU3dhZ2dlciBVSQoKKipCcmVha2luZzoqKgoKT3B0aW9uIGFuZCBEb2N1bWVudE9wdGlvbiByZW5hbWVkIHRvIFN3YWdnZXJEb2NPcHRpb25zIGFuZCBTd2FnZ2VyRG9jdW1lbnQgcmVzcGVjdGl2bHkKYW5kIG1vdmVkIHRvIEF6dXJlRnVuY3Rpb25zLkV4dGVuc2lvbnMuU3dhc2hidWNrbGUuU2V0dGluZ3MgbmFtZXNwYWNlCgoqKlByb3BlcnRpZXMgcmVuYW1lZDoqKgoKUHJlcGFuZE9wZXJhdGlvbldpdGhSb3V0ZVByZWZpeCA9PiBQcmVwZW5kT3BlcmF0aW9uV2l0aFJvdXRlUHJlZml4CgpBZGRDb2RlUGFyYW1hdGVyID0+IEFkZENvZGVQYXJhbWV0ZXIKCioqUHJvcGVydGllcyBhZGRlZDoqKgoKQWRkZWQgYWJpbGl0eSB0byBjb25maWd1cmUgU3dhZ2dlckdlbiB2aWEgQ29uZmlndXJlU3dhZ2dlckdlbgoKQWRkZWQgYWJpbGl0eSB0byBvdmVycmlkZSBkZWZhdWx0IHVybCB0byBTd2FnZ2VyIGpzb24gZG9jdW1lbnQgKGluIGNhc2Ugb2YgcmV2ZXJzZSBwcm94eS9nYXRld2F5L2luZ3Jlc3MpIGFyZSB1c2VkLgoKCioqU2l6ZToqKgoKQWxsIHRoZSByZXNvdXJjZXMgYXJlIHBsYWNlcyBpbiB6aXAgYXJjaGl2ZSBpbiBvcmRlciB0byBkZWNyZWFzZSByZXN1bHQgZGxsIHNpemUgYnkgMzM4JSAoZnJvbSAxLjU5NGtiIHRvIDQ3MmtiKQoKCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMy4wLjAKLSBVcGRhdGVkIHRvIHYzIEZ1bmN0aW9ucwotIFVwZGF0ZWQgdG8gNS4wLjAgU3dhc2hidWNrbGUuQXNwTmV0Q29yZSBudWdldHMKLSBNZXJnZWQgUFJzIHRvIGZpeCBpc3N1ZXMgcmVsYXRlZCB0byBSZXF1ZXN0Qm9keVR5cGUgYW5kIElnbm9yZSBhdHRyaWJ1dGUKLSBhcHBsaWNhdGlvbi9qc29uIGlzIGEgZGVmYXVsdCBtZWRpYSB0eXBlLgoKCgojIFNhbXBsZQoKaHR0cHM6Ly9naXRodWIuY29tL3ZpdGFseWJpYmlrb3YvYXp1cmUtZnVuY3Rpb25zLWV4dGVuc2lvbnMtc3dhc2hidWNrbGUvdHJlZS9tYXN0ZXIvc3JjL0F6dXJlRnVuY3Rpb25zLkV4dGVuc2lvbnMuU3dhc2hidWNrbGUvVGVzdEZ1bmN0aW9uCgojIFVwZGF0ZQoKVmVyc2lvbiAzLjAuMAoKCiMgR2V0dGluZyBTdGFydGVkCgoxLiBJbnN0YWxsIHRoZSBzdGFuZGFyZCBOdWdldCBwYWNrYWdlIGludG8geW91ciBBenVyZSBGdW5jdGlvbnMgYXBwbGljYXRpb24uCgpgYGAKUGFja2FnZSBNYW5hZ2VyIDogSW5zdGFsbC1QYWNrYWdlIEF6dXJlRXh0ZW5zaW9ucy5Td2FzaGJ1Y2tsZQpDTEkgOiBkb3RuZXQgYWRkIHBhY2thZ2UgQXp1cmVFeHRlbnNpb25zLlN3YXNoYnVja2xlCmBgYAoKMi4gQWRkIFByb2dyYW0uY3MgY2xhc3Mgb24geW91ciBGdW5jdGlvbnMgcHJvamVjdC4KCiEhISBOb3cgeW91IG5lZWQgdG8gc3BlY2lmeSBpbiBvcHRpb24gdGhlIFJvdXRlUHJlZml4LgoKICAgICAgICAgICAgb3B0cy5Sb3V0ZVByZWZpeCA9ICJhcGkiOwoKCmBgYGNzaGFycAp1c2luZyBTeXN0ZW07CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwp1c2luZyBNaWNyb3NvZnQuRXh0ZW5zaW9ucy5Ib3N0aW5nOwp1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKdXNpbmcgQXp1cmVGdW5jdGlvbnMuRXh0ZW5zaW9ucy5Td2FzaGJ1Y2tsZS5TZXR0aW5nczsKdXNpbmcgTWljcm9zb2Z0LkV4dGVuc2lvbnMuRGVwZW5kZW5jeUluamVjdGlvbjsKdXNpbmcgTWljcm9zb2Z0Lk9wZW5BcGk7CnVzaW5nIE1pY3Jvc29mdC5PcGVuQXBpLk1vZGVsczsKdXNpbmcgQXp1cmVGdW5jdGlvbnMuRXh0ZW5zaW9ucy5Td2FzaGJ1Y2tsZTsKdXNpbmcgU3dhc2hidWNrbGUuQXNwTmV0Q29yZS5Td2FnZ2VyR2VuOwoKdmFyIGhvc3QgPSBuZXcgSG9zdEJ1aWxkZXIoKQogICAgLkNvbmZpZ3VyZVNlcnZpY2VzKChob3N0Q29udGV4dCwgc2VydmljZXMpID0+CiAgICB7CiAgICAgICAgLy9SZWdpc3RlciB0aGUgZXh0ZW5zaW9uCiAgICAgICAgc2VydmljZXMuQWRkU3dhc2hCdWNrbGUob3B0cyA9PgogICAgICAgIHsKICAgICAgICAgICAgLy8gSWYgeW91IHdhbnQgdG8gYWRkIE5ld3RvbnNvZnQgc3VwcG9ydCBpbnNlcnQgbmV4dCBsaW5lCiAgICAgICAgICAgIC8vIG9wdHMuQWRkTmV3dG9uc29mdFN1cHBvcnQgPSB0cnVlOwogICAgICAgICAgICBvcHRzLlJvdXRlUHJlZml4ID0gImFwaSI7CiAgICAgICAgICAgIG9wdHMuU3BlY1ZlcnNpb24gPSBPcGVuQXBpU3BlY1ZlcnNpb24uT3BlbkFwaTNfMDsKICAgICAgICAgICAgb3B0cy5BZGRDb2RlUGFyYW1ldGVyID0gdHJ1ZTsKICAgICAgICAgICAgb3B0cy5QcmVwZW5kT3BlcmF0aW9uV2l0aFJvdXRlUHJlZml4ID0gdHJ1ZTsKICAgICAgICAgICAgb3B0cy5YbWxQYXRoID0gIlRlc3RGdW5jdGlvbi54bWwiOwogICAgICAgICAgICBvcHRzLkRvY3VtZW50cyA9IG5ld1tdCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5ldyBTd2FnZ2VyRG9jdW1lbnQKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lID0gInYxIiwKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9ICJTd2FnZ2VyIGRvY3VtZW50IiwKICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiA9ICJTd2FnZ2VyIHRlc3QgZG9jdW1lbnQiLAogICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPSAidjIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbmV3IFN3YWdnZXJEb2N1bWVudAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgPSAidjIiLAogICAgICAgICAgICAgICAgICAgIFRpdGxlID0gIlN3YWdnZXIgZG9jdW1lbnQgMiIsCiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gPSAiU3dhZ2dlciB0ZXN0IGRvY3VtZW50IDIiLAogICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPSAidjIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIG9wdHMuVGl0bGUgPSAiU3dhZ2dlciBUZXN0IjsKICAgICAgICAgICAgLy9vcHRzLk92ZXJyaWRlblBhdGhUb1N3YWdnZXJKc29uID0gbmV3IFVyaSgiaHR0cDovL2xvY2FsaG9zdDo3MDcxL2FwaS9Td2FnZ2VyL2pzb24iKTsKICAgICAgICAgICAgb3B0cy5Db25maWd1cmVTd2FnZ2VyR2VuID0geCA9PgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvL2N1c3RvbSBvcGVyYXRpb24gZXhhbXBsZQogICAgICAgICAgICAgICAgeC5DdXN0b21PcGVyYXRpb25JZHMoYXBpRGVzYyA9PiBhcGlEZXNjLlRyeUdldE1ldGhvZEluZm8ob3V0IE1ldGhvZEluZm8gbWV0aG9kSW5mbykKICAgICAgICAgICAgICAgICAgICA/IG1ldGhvZEluZm8uTmFtZQogICAgICAgICAgICAgICAgICAgIDogbmV3IEd1aWQoKS5Ub1N0cmluZygpKTsKCiAgICAgICAgICAgICAgICAvL2N1c3RvbSBmaWx0ZXIgZXhhbXBsZQogICAgICAgICAgICAgICAgLy94LkRvY3VtZW50RmlsdGVyPFJlbW92ZVNjaGVtYXNGaWx0ZXI+KCk7CgogICAgICAgICAgICAgICAgLy9vYXV0aDIKICAgICAgICAgICAgICAgIHguQWRkU2VjdXJpdHlEZWZpbml0aW9uKCJvYXV0aDIiLAogICAgICAgICAgICAgICAgICAgIG5ldyBPcGVuQXBpU2VjdXJpdHlTY2hlbWUKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgPSBTZWN1cml0eVNjaGVtZVR5cGUuT0F1dGgyLAogICAgICAgICAgICAgICAgICAgICAgICBGbG93cyA9IG5ldyBPcGVuQXBpT0F1dGhGbG93cwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbXBsaWNpdCA9IG5ldyBPcGVuQXBpT0F1dGhGbG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvblVybCA9IG5ldyBVcmkoImh0dHBzOi8veW91ci5pZHNlcnZlci5uZXQvY29ubmVjdC9hdXRob3JpemUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY29wZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgImFwaS5yZWFkIiwgIkFjY2VzcyByZWFkIG9wZXJhdGlvbnMiIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgImFwaS53cml0ZSIsICJBY2Nlc3Mgd3JpdGUgb3BlcmF0aW9ucyIgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9OwoKICAgICAgICAgICAgLy8gc2V0IHVwIHlvdXIgY2xpZW50IElEIGlmIHlvdXIgQVBJIGlzIHByb3RlY3RlZAogICAgICAgICAgICBvcHRzLkNsaWVudElkID0gInlvdXIuY2xpZW50LmlkIjsKICAgICAgICAgICAgb3B0cy5PQXV0aDJSZWRpcmVjdFBhdGggPSAiaHR0cDovL2xvY2FsaG9zdDo3MDcxL2FwaS9zd2FnZ2VyL29hdXRoMi1yZWRpcmVjdCI7CiAgICAgICAgfSk7CiAgICB9KQogICAgLkJ1aWxkKCk7Cgpob3N0LlJ1bigpOwoKYGBgCgozLiBBZGQgc3dhZ2dlciBhbmQgc3dhZ2dlciB1aSBlbmRwb2ludCBmdW5jdGlvbnMgb24geW91ciBwcm9qZWN0LgoKYGBgY3NoYXJwCiAgICBwdWJsaWMgY2xhc3MgU3dhZ2dlckNvbnRyb2xsZXIKICAgIHsKICAgICAgICBwcml2YXRlIHJlYWRvbmx5IElTd2FzaEJ1Y2tsZUNsaWVudCBzd2FzaEJ1Y2tsZUNsaWVudDsKCiAgICAgICAgcHVibGljIFN3YWdnZXJDb250cm9sbGVyKElTd2FzaEJ1Y2tsZUNsaWVudCBzd2FzaEJ1Y2tsZUNsaWVudCkKICAgICAgICB7CiAgICAgICAgICAgIHRoaXMuc3dhc2hCdWNrbGVDbGllbnQgPSBzd2FzaEJ1Y2tsZUNsaWVudDsKICAgICAgICB9CgogICAgICAgIFtTd2FnZ2VySWdub3JlXQogICAgICAgIFtGdW5jdGlvbigiU3dhZ2dlckpzb24iKV0KICAgICAgICBwdWJsaWMgYXN5bmMgVGFzazxIdHRwUmVzcG9uc2VEYXRhPiBTd2FnZ2VySnNvbigKICAgICAgICAgICAgW0h0dHBUcmlnZ2VyKEF1dGhvcml6YXRpb25MZXZlbC5GdW5jdGlvbiwgImdldCIsIFJvdXRlID0gIlN3YWdnZXIvanNvbiIpXQogICAgICAgICAgICBIdHRwUmVxdWVzdERhdGEgIHJlcSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnN3YXNoQnVja2xlQ2xpZW50LkNyZWF0ZVN3YWdnZXJKc29uRG9jdW1lbnRSZXNwb25zZShyZXEpOwogICAgICAgIH0KCiAgICAgICAgW1N3YWdnZXJJZ25vcmVdCiAgICAgICAgW0Z1bmN0aW9uKCJTd2FnZ2VyWWFtbCIpXQogICAgICAgIHB1YmxpYyBhc3luYyBUYXNrPEh0dHBSZXNwb25zZURhdGE+IFN3YWdnZXJZYW1sKAogICAgICAgICAgICBbSHR0cFRyaWdnZXIoQXV0aG9yaXphdGlvbkxldmVsLkZ1bmN0aW9uLCAiZ2V0IiwgUm91dGUgPSAiU3dhZ2dlci95YW1sIildCiAgICAgICAgICAgIEh0dHBSZXF1ZXN0RGF0YSByZXEpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zd2FzaEJ1Y2tsZUNsaWVudC5DcmVhdGVTd2FnZ2VyWWFtbERvY3VtZW50UmVzcG9uc2UocmVxKTsKICAgICAgICB9CgogICAgICAgIFtTd2FnZ2VySWdub3JlXQogICAgICAgIFtGdW5jdGlvbigiU3dhZ2dlclVpIildCiAgICAgICAgcHVibGljIGFzeW5jIFRhc2s8SHR0cFJlc3BvbnNlRGF0YT4gU3dhZ2dlclVpKAogICAgICAgICAgICBbSHR0cFRyaWdnZXIoQXV0aG9yaXphdGlvbkxldmVsLkZ1bmN0aW9uLCAiZ2V0IiwgUm91dGUgPSAiU3dhZ2dlci91aSIpXQogICAgICAgICAgICBIdHRwUmVxdWVzdERhdGEgcmVxKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc3dhc2hCdWNrbGVDbGllbnQuQ3JlYXRlU3dhZ2dlclVJUmVzcG9uc2UocmVxLCAic3dhZ2dlci9qc29uIik7CiAgICAgICAgfQoKICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgLy8vIFRoaXMgaXMgb25seSBuZWVkZWQgZm9yIE9BdXRoMiBjbGllbnQuIFRoaXMgcmVkaXJlY3RpbmcgZG9jdW1lbnQgaXMgbm9ybWFsbHkgc2VydmVkCiAgICAgICAgLy8vIGFzIGEgc3RhdGljIGNvbnRlbnQuIEZ1bmN0aW9ucyBkb24ndCBwcm92aWRlIHRoaXMgb3V0IG9mIHRoZSBib3gsIHNvIHdlIHNlcnZlIGl0IGhlcmUuCiAgICAgICAgLy8vIERvbid0IGZvcmdldCB0byBzZXQgT0F1dGgyUmVkaXJlY3RQYXRoIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIHJlZmxlY3QgdGhpcyByb3V0ZS4KICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icmVxIj48L3BhcmFtPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3dhc2hCdWNrbGVDbGllbnQiPjwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz4KICAgICAgICBbU3dhZ2dlcklnbm9yZV0KICAgICAgICBbRnVuY3Rpb24oIlN3YWdnZXJPQXV0aDJSZWRpcmVjdCIpXQogICAgICAgIHB1YmxpYyBhc3luYyBUYXNrPEh0dHBSZXNwb25zZURhdGE+IFN3YWdnZXJPQXV0aDJSZWRpcmVjdCgKICAgICAgICAgICAgW0h0dHBUcmlnZ2VyKEF1dGhvcml6YXRpb25MZXZlbC5GdW5jdGlvbiwgImdldCIsIFJvdXRlID0gInN3YWdnZXIvb2F1dGgyLXJlZGlyZWN0IildCiAgICAgICAgICAgIEh0dHBSZXF1ZXN0RGF0YSByZXEpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zd2FzaEJ1Y2tsZUNsaWVudC5DcmVhdGVTd2FnZ2VyT0F1dGgyUmVkaXJlY3RSZXNwb25zZShyZXEpOwogICAgICAgIH0KICAgIH0KYGBgCgo0LiBPcGVuIFN3YWdnZXIgVUkgVVJMIGluIHlvdXIgYnJvd3Nlci4KCklmIHlvdSBkb2VzIG5vdCBjaGFuZ2VkIGFwaSByb3V0ZSBwcmVmaXguIFN3YWdnZXIgVUkgVVJMIGlzIGh0dHBzOi8vaG9zdG5hbWUvYXBpL3N3YWdnZXIvdWkgLgoKIyMgT3B0aW9ucwoKIyMjIEluY2x1ZGUgWG1sIGRvY3VtZW50IGZpbGUKCkF6dXJlRnVuY3Rpb25zLkV4dGVuc2lvbnMuU3dhc2hidWNrbGUgY2FuIGluY2x1ZGUgeG1sIGRvY3VtZW50IGZpbGUuCgoxLiBDaGFuZ2UgeW91ciBmdW5jdGlvbnMgcHJvamVjdCdzIEdlbmVyYXRlRG9jdW1lbnRhdGlvbkZpbGUgb3B0aW9uIHRvIGVuYWJsZS4KCiAgICAgICAgICAgIGJ1aWxkZXIuQWRkU3dhc2hCdWNrbGUoQXNzZW1ibHkuR2V0RXhlY3V0aW5nQXNzZW1ibHkoKSwgb3B0cyA9PgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBvcHRzLlhtbFBhdGggPSAiVGVzdEZ1bmN0aW9uLnhtbCI7CiAgICAgICAgICAgIH0pOwoKMi4gQWRkIGNvbmZpZ3JhdGlvbiBzZXR0aW5nIHRoaXMgZXh0ZW5zaW9ucyBvbiB5b3VyIGZ1bmN0aW9ucyBwcm9qZWN0J3MgbG9jYWwuc2V0dGluZ3MuanNvbgoKYGBganNvbgogICJTd2FnZ2VyRG9jT3B0aW9ucyI6IHsKICAgICJYbWxQYXRoIjogIlRlc3RGdW5jdGlvbi54bWwiCiAgfQpgYGAKCkFsdGVybmF0aXZlbHkgeW91IGNhbiBhZGQgdGhpcyBzZWN0aW9uIHRvIHlvdXIgaG9zdC5qc29uCgpgYGBqc29uCiAgImV4dGVuc2lvbnMiOiB7CiAgICAiU3dhc2hidWNrbGUiOiB7CiAgICAgICJYbWxQYXRoIjogIlRlc3RGdW5jdGlvbi54bWwiCiAgICB9CiAgfQpgYGAK readmeEtag: '"fe74cad82aaf5703f9e4fe987fce5c3db2ecae25"' readmeLastModified: Wed, 28 Aug 2024 11:18:57 GMT repositoryId: 230613540 description: This extension enriches Azure Functions with Swagger/ Open API support created: '2019-12-28T13:27:18Z' updated: '2026-02-04T09:11:08Z' language: C# archived: false stars: 71 watchers: 4 forks: 56 owner: vitalybibikov logo: https://avatars.githubusercontent.com/u/7008739?v=4 license: MIT repoEtag: '"bdb25a0fb9778471bb0854c037bd85da3cbca15991a584eb6d32bf093e1ed9d8"' repoLastModified: Wed, 04 Feb 2026 09:11:08 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: ee4e8f0b8483cc304f05e07164cded87 - source: openapi3 tags repository: https://github.com/eazybytes/openapi v3: true id: a9c0bde4fbedfc45a7eed13c72f3e382 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNwZWNpZmljYXRpb24gJiBTd2FnZ2VyIFRvb2xzIC0gWmVybyBUbyBNYXN0ZXIKClshW0ltYWdlXShodHRwczovL2dpdGh1Yi5jb20vZWF6eWJ5dGVzL29wZW5hcGkvYmxvYi9tYWluL29wZW5hcGkucG5nICJPcGVuQVBJIFNwZWNpZmljYXRpb24gJmFtcDsgU3dhZ2dlciBUb29scyAtIFplcm8gVG8gTWFzdGVyIildKGh0dHBzOi8vd3d3LnVkZW15LmNvbS9jb3Vyc2Uvb3BlbmFwaS1zcGVjaWZpY2F0aW9uLXN3YWdnZXItdG9vbHMtemVyby10by1tYXN0ZXIvP3JlZmVycmFsQ29kZT1GMDAyQTlBNzk5REIxMjZDRDE4OSkKCioqJ09wZW5BUEkgU3BlY2lmaWNhdGlvbiAmIFN3YWdnZXIgVG9vbHMgLSBaZXJvIFRvIE1hc3RlcicqKiBjb3Vyc2Ugd2lsbCBoZWxwIGluIHVuZGVyc3RhbmRpbmcgYWJvdXQgT3BlbiBBUEkgU3BlY2lmaWNhdGlvbiBhbmQgaG93IHRvIGRlc2NyaWJlLCBkb2N1bWVudCBBUElzIHVzaW5nIE9wZW5BUEkgJiBTd2FnZ2VyIHRvb2xzLgoKIyMgVG9waWNzIGNvdmVyZWQgaW4gdGhlIGNvdXJzZQoKMSkgRGVzaWduaW5nIEFQSXMgd2l0aCBPcGVuQVBJIFNwZWNpZmljYXRpb25zIGFuZCBTd2FnZ2VyIFRvb2xzCjIpIERlc2NyaWJpbmcsIERvY3VtZW50aW5nIEFQSXMgZGV0YWlscyB1c2luZyBPcGVuQVBJIFNwZWNpZmljYXRpb25zCjMpIEhpc3Rvcnkgb2YgT3BlbkFQSSAmIFN3YWdnZXIgYW5kIHJlbGF0aW9uIGJldHdlZW4gdGhlbQo0KSBEZXRhaWxzIGFib3V0IFN3YWdnZXIgdG9vbHMgbGlrZSBTd2FnZ2VyIEVkaXRvciwgU3dhZ2dlciBVSSxTd2FnZ2VySHViLFN3YWdnZXJIdWIgRXhwbG9yZSxTd2FnZ2VyIENvZGVnZW4gZXRjLgo1KSBIb3cgdG8gZ2V0IHN0YXJ0ZWQgd2l0aCBPcGVuQVBJIGluIGNvZGUgZmlyc3QgJiBEZXNpZ24gZmlyc3Qgc2NlbmFyaW9zCjYpIEhvdyB0byB3cml0ZSBhIHZhbGlkIE9wZW5BUEkgZG9jdW1lbnQgdXNpbmcgWUFNTCBzeW50YXgKNykgV3JpdGluZyByZS11c2FibGUgY29udGVudCBpbnNpZGUgT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiB3aXRoIGNvbXBvbmVudHMKOCkgRGF0YSB0eXBlcyBzdXBwb3J0ZWQgYnkgT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiAmIHRoZWlyIGRldGFpbHMKOSkgSW5oZXJpdGFuY2UgJiBwb2x5bW9ycGhpc20gaW5zaWRlIE9wZW5BUEkgd2l0aCBrZXl3b3JkcyBvbmVPZiwgYW55T2YsIGFsbE9mIGFuZCBub3QKMTAgKSBIb3cgdG8gZGVzY3JpYmUgQVBJcyBzZWN1cml0eSBpbnNpZGUgT3BlbiBBUEkgc3BlY2lmaWNhdGlvbgoxMSkgSG93IHRvIG1vY2sgQVBJcyB3aXRoIE9wZW4gQVBJIHNwZWNpZmljYXRpb24gJiBQcmlzbSBtb2NrIHNlcnZlcgoxMikgSG93IHRvIGdlbmVyYXRlIGNsaWVudCBjb2RlICYgc2VydmVyIHN0dWJzIHVzaW5nIE9wZW5BUEkgZm9yIHZhcmlvdXMgcG9wdWxhciBwcm9ncmFtbWluZyBsYW5ndWFnZXMgJiBmcmFtZXdvcmtzCjEzKSBEZXBsb3lpbmcgJiBIb3N0aW5nIE9wZW4gQVBJIHNwZWNpZmljYXRpb24gaW5zaWRlIGEgR2l0SHViIHBhZ2UgYWxvbmcgd2l0aCBTd2FnZ2VyIFVJCjE0KSBQcm92aWRpbmcgZXhhbXBsZXMgZGF0YSBmb3IgdGhlIEFQSXMgaW5zaWRlIE9wZW4gQVBJIHNwZWNpZmljYXRpb24KMTUpIEFkdmFudGFnZXMgb2YgdXNpbmcgT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiAKMTYpIFByb3ZpZGluZyBiZXR0ZXIgZG9jdW1lbnRhdGlvbiB1c2luZyBDb21tb25NYXJrIHN5bnRheCBpbnNpZGUgT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiAKCiMjIFByZS1yZXF1aXNpdGUgZm9yIHRoZSBjb3Vyc2UKCi0gQmFzaWMga25vd2xlZGdlIG9uIEFQSXMKLSBJbnRlcmVzdCB0byBsZWFybiBhbmQgZXhwbG9yZSBhYm91dCBPcGVuQVBJICYgU3dhZ2dlciB0b29scwoKIyBJbXBvcnRhbnQgTGlua3MKCi0gT3BlbiBBUEkgV2Vic2l0ZSAtIGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZwotIFN3YWdnZXIgV2Vic2l0ZSAtIGh0dHBzOi8vc3dhZ2dlci5pbwotIFN3YWdnZXIgRWRpdG9yIC0gaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pbwotIFN3YWdnZXJIdWIgRXhwbG9yZSAtIGh0dHBzOi8vZXhwbG9yZS5zd2FnZ2VyaHViLmNvbS8KLSBPcGVuQVBJIE1hcCAtIGh0dHBzOi8vb3BlbmFwaS1tYXAuYXBpaGFuZHltYW4uaW8vCi0gT3BlbkFQSSAmIFNwcmluZ0Jvb3QgbGlicmFyeSAtIGh0dHBzOi8vc3ByaW5nZG9jLm9yZwotIExpc3Qgb2YgT3BlbkFQSSB0b29scyAtIGh0dHBzOi8vb3BlbmFwaS50b29scy8KLSBQcmlzbSBNb2NrIHNlcnZlciAtIGh0dHBzOi8vc3RvcGxpZ2h0LmlvL29wZW4tc291cmNlL3ByaXNtCi0gU1dBUEkgVGhlIFN0YXIgV2FycyBBUEkgLSBodHRwczovL3N3YXBpLmRldi8KLSBSRVFSRVMgTW9jayBBUElzIC0gaHR0cHM6Ly9yZXFyZXMuaW4K readmeEtag: '"27af9e6a7f448b9773e72076bee46be955120e2c"' readmeLastModified: Mon, 15 Jul 2024 11:00:32 GMT repositoryId: 512335029 description: 'OpenAPI Specification & Swagger Tools : Zero To Master - Code Examples' created: '2022-07-10T03:25:03Z' updated: '2026-02-02T01:50:10Z' language: Java archived: false stars: 81 watchers: 5 forks: 130 owner: eazybytes logo: https://avatars.githubusercontent.com/u/79041235?v=4 repoEtag: '"2daed25b3a120dbc53e92efe168c78966e9b89a5adb5a57fee4c0f98a550cabd"' repoLastModified: Mon, 02 Feb 2026 01:50:10 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/drwpow/openapi-fetch v3: true id: eedc4905504decd63f3a047810e71311 repositoryMetadata: base64Readme: >- IyDwn46+IG9wZW5hcGktZmV0Y2gKCiMjIyDwn5qaIFRoaXMgcmVwbyBoYXMgbW92ZWQhCgpJdCBoYXMgYmVlbiBtZXJnZWQgd2l0aCBbb3BlbmFwaS10eXBlc2NyaXB0XShodHRwczovL2dpdGh1Yi5jb20vZHJ3cG93L29wZW5hcGktdHlwZXNjcmlwdCkuIFBsZWFzZSBzdWJtaXQgaXNzdWVzIGFuZCBjb2RlIHRoZXJlLgoKLSDwn5al77iPIFtDb2RlXShodHRwczovL2dpdGh1Yi5jb20vZHJ3cG93L29wZW5hcGktdHlwZXNjcmlwdC90cmVlL21haW4vcGFja2FnZXMvb3BlbmFwaS1mZXRjaCkKLSDwn5OWIFtEb2NzXShodHRwczovL29wZW5hcGktdHMucGFnZXMuZGV2KQo= readmeEtag: '"fd89503619966750f4a3e6280eeb339a55994fc9"' readmeLastModified: Mon, 22 May 2023 16:30:51 GMT repositoryId: 612091894 description: >- Ultra-fast fetching for TypeScript generated automatically from your OpenAPI schema created: '2023-03-10T07:18:20Z' updated: '2025-08-27T12:33:36Z' language: null archived: true stars: 67 watchers: 1 forks: 14 owner: drwpow logo: https://avatars.githubusercontent.com/u/1369770?v=4 license: MIT repoEtag: '"d72c8ccff1f88e37a568610c6babfd48b06d3bedfcdc8a8420b5ec6b030aee31"' repoLastModified: Wed, 27 Aug 2025 12:33:36 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/wol-soft/php-json-schema-model-generator v3: true repositoryMetadata: base64Readme: >- WyFbTGF0ZXN0IFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L3Yvd29sLXNvZnQvcGhwLWpzb24tc2NoZW1hLW1vZGVsLWdlbmVyYXRvci5zdmcpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvd29sLXNvZnQvcGhwLWpzb24tc2NoZW1hLW1vZGVsLWdlbmVyYXRvcikKWyFbTWluaW11bSBQSFAgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9waHAtJTNFJTNEJTIwOC4wLTg4OTJCRi5zdmcpXShodHRwczovL3BocC5uZXQvKQpbIVtNYWludGFpbmFiaWxpdHldKGh0dHBzOi8vcWx0eS5zaC9naC93b2wtc29mdC9wcm9qZWN0cy9waHAtanNvbi1zY2hlbWEtbW9kZWwtZ2VuZXJhdG9yL21haW50YWluYWJpbGl0eS5zdmcpXShodHRwczovL3FsdHkuc2gvZ2gvd29sLXNvZnQvcHJvamVjdHMvcGhwLWpzb24tc2NoZW1hLW1vZGVsLWdlbmVyYXRvcikKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vd29sLXNvZnQvcGhwLWpzb24tc2NoZW1hLW1vZGVsLWdlbmVyYXRvci9hY3Rpb25zL3dvcmtmbG93cy9tYWluLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vd29sLXNvZnQvcGhwLWpzb24tc2NoZW1hLW1vZGVsLWdlbmVyYXRvci9hY3Rpb25zL3dvcmtmbG93cy9tYWluLnltbCkKWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIvd29sLXNvZnQvcGhwLWpzb24tc2NoZW1hLW1vZGVsLWdlbmVyYXRvci9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi93b2wtc29mdC9waHAtanNvbi1zY2hlbWEtbW9kZWwtZ2VuZXJhdG9yP2JyYW5jaD1tYXN0ZXIpClshW01JVCBMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL3BhY2thZ2lzdC9sL3dvbC1zb2Z0L3BocC1qc29uLXNjaGVtYS1tb2RlbC1nZW5lcmF0b3Iuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3dvbC1zb2Z0L3BocC1qc29uLXNjaGVtYS1tb2RlbC1nZW5lcmF0b3IvYmxvYi9tYXN0ZXIvTElDRU5TRSkKWyFbRG9jdW1lbnRhdGlvbiBTdGF0dXNdKGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL3BocC1qc29uLXNjaGVtYS1tb2RlbC1nZW5lcmF0b3IvYmFkZ2UvP3ZlcnNpb249bGF0ZXN0KV0oaHR0cHM6Ly9waHAtanNvbi1zY2hlbWEtbW9kZWwtZ2VuZXJhdG9yLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8/YmFkZ2U9bGF0ZXN0KQoKIyBwaHAtanNvbi1zY2hlbWEtbW9kZWwtZ2VuZXJhdG9yCkdlbmVyYXRlcyBQSFAgbW9kZWwgY2xhc3NlcyBmcm9tIEpTT04tU2NoZW1hIGZpbGVzIGluY2x1ZGluZyB2YWxpZGF0aW9uIGFuZCBwcm92aWRpbmcgYSBmbHVlbnQgYXV0byBjb21wbGV0aW9uIGZvciB0aGUgZ2VuZXJhdGVkIGNsYXNzZXMuCgojIyBUYWJsZSBvZiBDb250ZW50cyAjIwoKKiBbTW90aXZhdGlvbl0oI01vdGl2YXRpb24pCiogW1JlcXVpcmVtZW50c10oI1JlcXVpcmVtZW50cykKKiBbSW5zdGFsbGF0aW9uXSgjSW5zdGFsbGF0aW9uKQoqIFtCYXNpYyB1c2FnZV0oI0Jhc2ljLXVzYWdlKQoqIFtDb25maWd1cmluZyB1c2luZyB0aGUgR2VuZXJhdG9yQ29uZmlndXJhdGlvbl0oI0NvbmZpZ3VyaW5nLXVzaW5nLXRoZS1HZW5lcmF0b3JDb25maWd1cmF0aW9uKQoqIFtFeGFtcGxlc10oI0V4YW1wbGVzKQoqIFtIb3cgdGhlIGhlY2sgZG9lcyB0aGlzIHdvcms/XSgjSG93LXRoZS1oZWNrLWRvZXMtdGhpcy13b3JrKQoqIFtUZXN0c10oI1Rlc3RzKQoqIFtEb2NzXSgjRG9jcykKCiMjIE1vdGl2YXRpb24gIyMKClNpbXBsZSBleGFtcGxlIGZyb20gYSBQSFAgYXBwbGljYXRpb246IHlvdSBkZWZpbmUgYW5kIGRvY3VtZW50IGFuIEFQSSB3aXRoIHN3YWdnZXIgYW5ub3RhdGlvbnMgYW5kIEpTT04tU2NoZW1hIG1vZGVscy4gTm93IHlvdSB3YW50IHRvIHVzZSBtb2RlbHMgaW4geW91ciBjb250cm9sbGVyIGFjdGlvbnMgaW5zdGVhZCBvZiBtYW51YWxseSBhY2Nlc3NpbmcgdGhlIHJlcXVlc3QgZGF0YSAoZWcuIGFycmF5IHN0dWZmKS4gQWRkaXRpb25hbGx5IHlvdXIgc2NoZW1hIGFscmVhZHkgZGVmaW5lcyB0aGUgdmFsaWRhdGlvbiBydWxlcyBmb3IgdGhlIG1vZGVscy4gV2h5IGR1cGxpY2F0ZSB0aGlzIHJ1bGVzIGludG8geW91ciBtYW51YWxseSB3cml0dGVuIGNvZGU/IEluc3RlYWQgeW91IGNhbiBzZXQgdXAgYSBtaWRkbGV3YXJlIHdoaWNoIGluc3RhbnRpYXRlcyBtb2RlbHMgZ2VuZXJhdGVkIHdpdGggdGhpcyBsaWJyYXJ5IGFuZCBmZWVkIHRoZSBtb2RlbCB3aXRoIHRoZSByZXF1ZXN0IGRhdGEuIE5vdyB5b3UgaGF2ZSBhIHZhbGlkYXRlZCBtb2RlbCB3aGljaCB5b3UgY2FuIHVzZSBpbiB5b3VyIGNvbnRyb2xsZXIgYWN0aW9uLiBXaXRoIGZ1bGwgYXV0byBjb21wbGV0aW9uIHdoZW4gd29ya2luZyB3aXRoIG5lc3RlZCBvYmplY3RzLiBZYXkhCgojIyBSZXF1aXJlbWVudHMgIyMKCi0gUmVxdWlyZXMgYXQgbGVhc3QgUEhQIDguMAotIFJlcXVpcmVzIHRoZSBQSFAgZXh0ZW5zaW9ucyBleHQtanNvbiBhbmQgZXh0LW1ic3RyaW5nCgojIyBJbnN0YWxsYXRpb24gIyMKClRoZSByZWNvbW1lbmRlZCB3YXkgdG8gaW5zdGFsbCBwaHAtanNvbi1zY2hlbWEtbW9kZWwtZ2VuZXJhdG9yIGlzIHRocm91Z2ggW0NvbXBvc2VyXShodHRwOi8vZ2V0Y29tcG9zZXIub3JnKToKYGBgCiQgY29tcG9zZXIgcmVxdWlyZSAtLWRldiB3b2wtc29mdC9waHAtanNvbi1zY2hlbWEtbW9kZWwtZ2VuZXJhdG9yCiQgY29tcG9zZXIgcmVxdWlyZSB3b2wtc29mdC9waHAtanNvbi1zY2hlbWEtbW9kZWwtZ2VuZXJhdG9yLXByb2R1Y3Rpb24KYGBgCgpUbyBhdm9pZCBhZGRpbmcgYWxsIGRlcGVuZGVuY2llcyBvZiB0aGUgcGhwLWpzb24tc2NoZW1hLW1vZGVsLWdlbmVyYXRvciB0byB5b3VyIHByb2R1Y3Rpb24gZGVwZW5kZW5jaWVzIGl0J3MgcmVjb21tZW5kZWQgdG8gYWRkIHRoZSBsaWJyYXJ5IGFzIGEgZGV2LWRlcGVuZGVuY3kgYW5kIGluY2x1ZGUgdGhlIFt3b2wtc29mdC9waHAtanNvbi1zY2hlbWEtbW9kZWwtZ2VuZXJhdG9yLXByb2R1Y3Rpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS93b2wtc29mdC9waHAtanNvbi1zY2hlbWEtbW9kZWwtZ2VuZXJhdG9yLXByb2R1Y3Rpb24pIGxpYnJhcnkuIFRoZSBwcm9kdWN0aW9uIGxpYnJhcnkgcHJvdmlkZXMgYWxsIGNsYXNzZXMgdG8gcnVuIHRoZSBnZW5lcmF0ZWQgY29kZS4gR2VuZXJhdGluZyB0aGUgY2xhc3NlcyBzaG91bGQgZWl0aGVyIGJlIGEgc3RlcCBkb25lIGluIHRoZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBvciBhcyBhIGJ1aWxkIHN0ZXAgb2YgeW91ciBhcHBsaWNhdGlvbiAod2hpY2ggaXMgdGhlIHJlY29tbWVuZGVkIHdvcmtmbG93KS4KCiMjIEJhc2ljIHVzYWdlICMjCgpDaGVjayBvdXQgdGhlIFtkb2NzXShodHRwczovL3BocC1qc29uLXNjaGVtYS1tb2RlbC1nZW5lcmF0b3IucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0LykgZm9yIG1vcmUgZGV0YWlscy4KClRoZSBiYXNlIG9iamVjdCBmb3IgZ2VuZXJhdGluZyBtb2RlbHMgaXMgdGhlICpNb2RlbEdlbmVyYXRvciouIEFmdGVyIHlvdSBoYXZlIGNyZWF0ZWQgYSBHZW5lcmF0b3IgeW91IGNhbiB1c2UgdGhlIG9iamVjdCB0byBnZW5lcmF0ZSB5b3VyIG1vZGVsIGNsYXNzZXMgd2l0aG91dCBhbnkgZnVydGhlciBjb25maWd1cmF0aW9uOgoKYGBgcGhwCihuZXcgTW9kZWxHZW5lcmF0b3IoKSkKICAgIC0+Z2VuZXJhdGVNb2RlbHMobmV3IFJlY3Vyc2l2ZURpcmVjdG9yeVByb3ZpZGVyKF9fRElSX18gLiAnL3NjaGVtYScpLCBfX0RJUl9fIC4gJy9yZXN1bHQnKTsKYGBgClRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlICpnZW5lcmF0ZU1vZGVscyogbWV0aG9kIG11c3QgYmUgYSBjbGFzcyBpbXBsZW1lbnRpbmcgdGhlICpTY2hlbWFQcm92aWRlckludGVyZmFjZSouIFRoZSBwcm92aWRlciBmZXRjaGVzIHRoZSBKU09OIHNjaGVtYSBmaWxlcyBhbmQgcHJvdmlkZXMgdGhlbSBmb3IgdGhlIGdlbmVyYXRvci4gVGhlIGZvbGxvd2luZyBwcm92aWRlcnMgYXJlIGF2YWlsYWJsZToKClByb3ZpZGVyIHwgRGVzY3JpcHRpb24KLS0tIHwgLS0tClJlY3Vyc2l2ZURpcmVjdG9yeVByb3ZpZGVyIHwgRmV0Y2hlcyBhbGwgKi5qc29uIGZpbGVzIGZyb20gdGhlIGdpdmVuIHNvdXJjZSBkaXJlY3RvcnkuIEVhY2ggZmlsZSBtdXN0IGNvbnRhaW4gYSBKU09OIFNjaGVtYSBvYmplY3QgZGVmaW5pdGlvbiBvbiB0aGUgdG9wIGxldmVsCk9wZW5BUEl2M1Byb3ZpZGVyIHwgRmV0Y2hlcyBhbGwgb2JqZWN0cyBkZWZpbmVkIGluIHRoZSBgIy9jb21wb25lbnRzL3NjaGVtYXMgc2VjdGlvbmAgb2YgYW4gT3BlbiBBUEkgdjMgc3BlYyBmaWxlCgpUaGUgc2Vjb25kIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGFuIGV4aXN0aW5nIGFuZCBlbXB0eSBkaXJlY3RvcnkgKHlvdSBtYXkgdXNlIHRoZSBgZ2VuZXJhdGVNb2RlbERpcmVjdG9yeWAgaGVscGVyIG1ldGhvZCB0byBjcmVhdGUgeW91ciBkZXN0aW5hdGlvbiBkaXJlY3RvcnkpLiBUaGlzIGRpcmVjdG9yeSB3aWxsIGNvbnRhaW4gdGhlIGdlbmVyYXRlZCBQSFAgY2xhc3NlcyBhZnRlciB0aGUgZ2VuZXJhdG9yIGlzIGZpbmlzaGVkLgoKQXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHlvdSBjYW4gc2V0IHVwIGEgKkdlbmVyYXRvckNvbmZpZ3VyYXRpb24qIG9iamVjdCAoY2hlY2sgb3V0IHRoZSBkb2NzIGZvciBhbGwgYXZhaWxhYmxlIG9wdGlvbnMpIHRvIGNvbmZpZ3VyZSB5b3VyIEdlbmVyYXRvciBhbmQvb3IgdXNlIHRoZSBtZXRob2QgKmdlbmVyYXRlTW9kZWxEaXJlY3RvcnkqIHRvIGdlbmVyYXRlIHlvdXIgbW9kZWwgZGlyZWN0b3J5ICh3aWxsIGdlbmVyYXRlIHRoZSBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdDsgaWYgaXQgZXhpc3RzLCBhbGwgY29udGFpbmVkIGZpbGVzIGFuZCBmb2xkZXJzIHdpbGwgYmUgcmVtb3ZlZCBmb3IgYSBjbGVhbiBnZW5lcmF0aW9uIHByb2Nlc3MpOgoKYGBgcGhwCiRnZW5lcmF0b3IgPSBuZXcgTW9kZWxHZW5lcmF0b3IoCiAgICAobmV3IEdlbmVyYXRvckNvbmZpZ3VyYXRpb24oKSkKICAgICAgICAtPnNldE5hbWVzcGFjZVByZWZpeCgnTXlBcHBcTW9kZWwnKQogICAgICAgIC0+c2V0SW1tdXRhYmxlKGZhbHNlKQopOwoKJGdlbmVyYXRvcgogICAgLT5nZW5lcmF0ZU1vZGVsRGlyZWN0b3J5KF9fRElSX18gLiAnL3Jlc3VsdCcpCiAgICAtPmdlbmVyYXRlTW9kZWxzKG5ldyBSZWN1cnNpdmVEaXJlY3RvcnlQcm92aWRlcihfX0RJUl9fIC4gJy9zY2hlbWEnKSwgX19ESVJfXyAuICcvcmVzdWx0Jyk7CmBgYAoKVGhlIGdlbmVyYXRvciB3aWxsIGNoZWNrIHRoZSBnaXZlbiBzb3VyY2UgZGlyZWN0b3J5IHJlY3Vyc2l2ZSBhbmQgY29udmVydCBhbGwgZm91bmQgKi5qc29uIGZpbGVzIHRvIG1vZGVscy4gQWxsIEpTT04tU2NoZW1hIGZpbGVzIGluc2lkZSB0aGUgc291cmNlIGRpcmVjdG9yeSBtdXN0IHByb3ZpZGUgYSBzY2hlbWEgb2YgYW4gb2JqZWN0LgoKIyMgRXhhbXBsZXMgIyMKClRoZSBkaXJlY3RvcnkgYC4vdGVzdHMvbWFudWFsYCBjb250YWlucyBzb21lIGVhc3kgZXhhbXBsZXMgd2hpY2ggc2hvdyB0aGUgdXNhZ2UuIEFmdGVyIGluc3RhbGxpbmcgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgbGlicmFyeSB2aWEgYGNvbXBvc2VyIHVwZGF0ZWAgeW91IGNhbiBleGVjdXRlIGBwaHAgLi90ZXN0cy9tYW51YWwvdGVzdC5waHBgIHRvIGdlbmVyYXRlIHRoZSBleGFtcGxlcyBhbmQgcGxheSBhcm91bmQgd2l0aCBzb21lIEpTT04tU2NoZW1hIGZpbGVzIHRvIGV4cGxvcmUgdGhlIGxpYnJhcnkuCgpMZXQncyBoYXZlIGEgbG9vayBpbnRvIGFuIGVhc3kgZXhhbXBsZS4gV2UgY3JlYXRlIGEgc2ltcGxlIG1vZGVsIGZvciBhIHBlcnNvbiB3aXRoIGEgbmFtZSBhbmQgYW4gb3B0aW9uYWwgYWdlLiBPdXIgcmVzdWx0aW5nIEpTT04tU2NoZW1hOgpgYGBqc29uCnsKICAiJGlkIjogIlBlcnNvbiIsCiAgInR5cGUiOiAib2JqZWN0IiwKICAicHJvcGVydGllcyI6IHsKICAgICJuYW1lIjogewogICAgICAidHlwZSI6ICJzdHJpbmciCiAgICB9LAogICAgImFnZSI6IHsKICAgICAgInR5cGUiOiAiaW50ZWdlciIsCiAgICAgICJtaW5pbXVtIjogMAogICAgfQogIH0sCiAgInJlcXVpcmVkIjogWwogICAgIm5hbWUiCiAgXQp9CmBgYAoKQWZ0ZXIgZ2VuZXJhdGluZyBhIGNsYXNzIHdpdGggdGhpcyBKU09OLVNjaGVtYSBvdXIgY2xhc3Mgd2l0aCB0aGUgbmFtZSBgUGVyc29uYCB3aWxsIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbnRlcmZhY2U6CmBgYHBocAovLyB0aGUgY29uc3RydWN0b3IgdGFrZXMgYW4gYXJyYXkgd2l0aCBkYXRhIHdoaWNoIGlzIHZhbGlkYXRlZCBhbmQgYXBwbGllZCB0byB0aGUgbW9kZWwKcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRtb2RlbERhdGEpOwoKLy8gdGhlIG1ldGhvZCBnZXRSYXdNb2RlbERhdGFJbnB1dCBhbHdheXMgZGVsaXZlcnMgdGhlIHJhdyBpbnB1dCB3aGljaCB3YXMgcHJvdmlkZWQgb24gaW5zdGFudGlhdGlvbgpwdWJsaWMgZnVuY3Rpb24gZ2V0UmF3TW9kZWxEYXRhSW5wdXQoKTogYXJyYXk7CgovLyBnZXR0ZXJzIHRvIGZldGNoIHRoZSB2YWxpZGF0ZWQgcHJvcGVydGllcy4gQWdlIGlzIG51bGxhYmxlIGFzIGl0J3Mgbm90IHJlcXVpcmVkCnB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCk6IHN0cmluZzsKcHVibGljIGZ1bmN0aW9uIGdldEFnZSgpOiA/aW50OwoKLy8gc2V0dGVycyB0byBjaGFuZ2UgdGhlIHZhbHVlcyBvZiB0aGUgbW9kZWwgYWZ0ZXIgaW5zdGFudGlhdGlvbiAob25seSBnZW5lcmF0ZWQgaWYgaW1tdXRhYmlsaXR5IGlzIGRpc2FibGVkKQpwdWJsaWMgZnVuY3Rpb24gc2V0TmFtZShzdHJpbmcgJG5hbWUpOiBQZXJzb247CnB1YmxpYyBmdW5jdGlvbiBzZXRBZ2UoP2ludCAkYWdlKTogUGVyc29uOwpgYGAKCk5vdyBsZXQncyBoYXZlIGEgbG9vayBhdCB0aGUgYmVoYXZpb3VyIG9mIHRoZSBnZW5lcmF0ZWQgbW9kZWw6CmBgYHBocAovLyBUaHJvd3MgYW4gZXhjZXB0aW9uIGFzIHRoZSByZXF1aXJlZCBuYW1lIGlzbid0IHByb3ZpZGVkLgovLyBFeGNlcHRpb246ICdNaXNzaW5nIHJlcXVpcmVkIHZhbHVlIGZvciBuYW1lJwokcGVyc29uID0gbmV3IFBlcnNvbihbXSk7CgovLyBUaHJvd3MgYW4gZXhjZXB0aW9uIGFzIHRoZSBuYW1lIHByb3ZpZGVzIGFuIGludmFsaWQgdmFsdWUuCi8vIEV4Y2VwdGlvbjogJ0ludmFsaWQgdHlwZSBmb3IgbmFtZS4gUmVxdWlyZXMgc3RyaW5nLCBnb3QgaW50JwokcGVyc29uID0gbmV3IFBlcnNvbihbJ25hbWUnID0+IDEyXSk7CgovLyBUaHJvd3MgYW4gZXhjZXB0aW9uIGFzIHRoZSBhZ2UgY29udGFpbnMgYW4gaW52YWxpZCB2YWx1ZSBkdWUgdG8gdGhlIG1pbmltdW0gZGVmaW5pdGlvbi4KLy8gRXhjZXB0aW9uOiAnVmFsdWUgZm9yIGFnZSBtdXN0IG5vdCBiZSBzbWFsbGVyIHRoYW4gMCcKJHBlcnNvbiA9IG5ldyBQZXJzb24oWyduYW1lJyA9PiAnQWxiZXJ0JywgJ2FnZScgPT4gLTFdKTsKCi8vIEEgdmFsaWQgZXhhbXBsZSBhcyB0aGUgYWdlIGlzbid0IHJlcXVpcmVkCiRwZXJzb24gPSBuZXcgUGVyc29uKFsnbmFtZScgPT4gJ0FsYmVydCddKTsKJHBlcnNvbi0+Z2V0TmFtZSgpOyAvLyByZXR1cm5zICdBbGJlcnQnCiRwZXJzb24tPmdldEFnZSgpOyAvLyByZXR1cm5zIE5VTEwKJHBlcnNvbi0+Z2V0UmF3TW9kZWxEYXRhSW5wdXQoKTsgLy8gcmV0dXJucyBbJ25hbWUnID0+ICdBbGJlcnQnXQoKLy8gSWYgc2V0dGVycyBhcmUgZ2VuZXJhdGVkIHRoZSBzZXR0ZXJzIGFsc28gcGVyZm9ybSB2YWxpZGF0aW9ucy4KLy8gRXhjZXB0aW9uOiAnVmFsdWUgZm9yIGFnZSBtdXN0IG5vdCBiZSBzbWFsbGVyIHRoYW4gMCcKJHBlcnNvbi0+c2V0QWdlKC0xMCk7CmBgYAoKTW9yZSBjb21wbGV4IGV4Y2VwdGlvbiBtZXNzYWdlcyBlZy4gZnJvbSBhIFthbGxPZl0oaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvdW5kZXJzdGFuZGluZy1qc29uLXNjaGVtYS9yZWZlcmVuY2UvY29tYmluaW5nLmh0bWwjYWxsb2YpIGNvbXBvc2l0aW9uIG1heSBsb29rIGxpa2U6CmBgYApJbnZhbGlkIHZhbHVlIGZvciBBbmltYWwgZGVjbGluZWQgYnkgY29tcG9zaXRpb24gY29uc3RyYWludC4KICBSZXF1aXJlcyB0byBtYXRjaCAzIGNvbXBvc2l0aW9uIGVsZW1lbnRzIGJ1dCBtYXRjaGVkIDEgZWxlbWVudHMuCiAgLSBDb21wb3NpdGlvbiBlbGVtZW50ICMxOiBGYWlsZWQKICAgICogVmFsdWUgZm9yIGFnZSBtdXN0IG5vdCBiZSBzbWFsbGVyIHRoYW4gMAogIC0gQ29tcG9zaXRpb24gZWxlbWVudCAjMjogVmFsaWQKICAtIENvbXBvc2l0aW9uIGVsZW1lbnQgIzM6IEZhaWxlZAogICAgKiBWYWx1ZSBmb3IgbGVncyBtdXN0IG5vdCBiZSBzbWFsbGVyIHRoYW4gMgogICAgKiBWYWx1ZSBmb3IgbGVncyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMgpgYGAKCiMjIEhvdyB0aGUgaGVjayBkb2VzIHRoaXMgd29yaz8gIyMKClRoZSBjbGFzcyBnZW5lcmF0aW9uIHByb2Nlc3MgYmFzaWNhbGx5IHNwbGl0cyB1cCBpbnRvIHRocmVlIHRvIGZvdXIgc3RlcHM6CgotIFNjYW4gdGhlIGdpdmVuIHNvdXJjZSBkaXJlY3RvcnkgdG8gZmluZCBhbGwgKi5qc29uIGZpbGVzIHdoaWNoIHNob3VsZCBiZSBwcm9jZXNzZWQuCi0gTG9vcCBvdmVyIGFsbCBzY2hlbWFzIHdoaWNoIHNob3VsZCBiZSBnZW5lcmF0ZWQuIFRoaXMgaXMgdGhlIG1haW4gc3RlcCBvZiB0aGUgY2xhc3MgZ2VuZXJhdGlvbi4gTm93IGVhY2ggc2NoZW1hIGlzIHBhcnNlZCBhbmQgYSBTY2hlbWEgbW9kZWwgY2xhc3Mgd2hpY2ggaG9sZHMgdGhlIHByb3BlcnRpZXMgZm9yIHRoZSBnZW5lcmF0ZWQgbW9kZWwgaXMgcG9wdWxhdGVkLiBBbGwgdmFsaWRhdGlvbiBydWxlcyBkZWZpbmVkIGluIHRoZSBKU09OLVNjaGVtYSBhcmUgdHJhbnNsYXRlZCBpbnRvIHBsYWluIFBIUCBjb2RlLiBBZnRlciB0aGUgbW9kZWwgaXMgZmluaXNoZWQgYSBSZW5kZXJKb2IgaXMgZ2VuZXJhdGVkIGFuZCBhZGRlZCB0byB0aGUgUmVuZGVyUXVldWUuIElmIGEgSlNPTi1TY2hlbWEgY29udGFpbnMgbmVzdGVkIG9iamVjdHMgb3IgcmVmZXJlbmNlcyBtdWx0aXBsZSBSZW5kZXJKb2JzIG1heSBiZSBhZGRlZCB0byB0aGUgUmVuZGVyUXVldWUgZm9yIGEgZ2l2ZW4gc2NoZW1hIGZpbGUuCi0gSWYgcG9zdCBwcm9jZXNzb3JzIGFyZSBkZWZpbmVkIGZvciB0aGUgZ2VuZXJhdGlvbiBwcm9jZXNzIHRoZSBwb3N0IHByb2Nlc3NvcnMgd2lsbCBiZSBhcHBsaWVkLgotIEFmdGVyIGFsbCBzY2hlbWEgZmlsZXMgaGF2ZSBiZWVuIHBhcnNlZCB3aXRob3V0IGFuIGVycm9yIHRoZSBSZW5kZXJRdWV1ZSB3aWxsIGJlIHdvcmtlZCBvZmYuIEFsbCBwcmV2aW91cyBhZGRlZCBSZW5kZXJKb2JzIHdpbGwgYmUgZXhlY3V0ZWQgYW5kIHRoZSBQSFAgY2xhc3NlcyB3aWxsIGJlIHNhdmVkIHRvIHRoZSBmaWxlc3lzdGVtIGF0IHRoZSBnaXZlbiBkZXN0aW5hdGlvbiBkaXJlY3RvcnkuCgojIyBUZXN0cyAjIwoKVGhlIGxpYnJhcnkgaXMgdGVzdGVkIHZpYSBbUEhQVW5pdF0oaHR0cHM6Ly9waHB1bml0LmRlLykuCgpBZnRlciBpbnN0YWxsaW5nIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIGxpYnJhcnkgdmlhIGBjb21wb3NlciB1cGRhdGVgIHlvdSBjYW4gZXhlY3V0ZSB0aGUgdGVzdHMgd2l0aCBgLi92ZW5kb3IvYmluL3BocHVuaXRgIChMaW51eCkgb3IgYHZlbmRvclxiaW5ccGhwdW5pdC5iYXRgIChXaW5kb3dzKS4gVGhlIHRlc3QgbmFtZXMgYXJlIG9wdGltaXplZCBmb3IgdGhlIHVzYWdlIG9mIHRoZSBgLS10ZXN0ZG94YCBvdXRwdXQuIE1vc3QgdGVzdHMgYXJlIGF0b21pYyBpbnRlZ3JhdGlvbiB0ZXN0cyB3aGljaCB3aWxsIHNldCB1cCBhIEpTT04tU2NoZW1hIGZpbGUgYW5kIGdlbmVyYXRlIGEgY2xhc3MgZnJvbSB0aGUgc2NoZW1hIGFuZCB0ZXN0IHRoZSBiZWhhdmlvdXIgb2YgdGhlIGdlbmVyYXRlZCBjbGFzcyBhZnRlcndhcmRzLgoKRHVyaW5nIHRoZSBleGVjdXRpb24gdGhlIHRlc3RzIHdpbGwgY3JlYXRlIGEgZGlyZWN0b3J5IFBIUE1vZGVsR2VuZXJhdG9yVGVzdCBpbiB0bXAgd2hlcmUgSlNPTi1TY2hlbWEgZmlsZXMgYW5kIFBIUCBjbGFzc2VzIHdpbGwgYmUgd3JpdHRlbiB0by4KCklmIGEgdGVzdCB3aGljaCBjcmVhdGVzIGEgUEhQIGNsYXNzIGZyb20gYSBKU09OLVNjaGVtYSBmYWlscyB0aGUgSlNPTi1TY2hlbWEgYW5kIHRoZSBnZW5lcmF0ZWQgY2xhc3MoZXMpIHdpbGwgYmUgZHVtcGVkIHRvIHRoZSBkaXJlY3RvcnkgYC4vZmFpbGVkLWNsYXNzZXNgCgojIyBEb2NzICMjCgpUaGUgW2RvY3NdKGh0dHBzOi8vcGhwLWpzb24tc2NoZW1hLW1vZGVsLWdlbmVyYXRvci5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvKSBmb3IgdGhlIGxpYnJhcnkgaXMgZ2VuZXJhdGVkIHdpdGggW1NwaGlueF0oaHR0cHM6Ly93d3cuc3BoaW54LWRvYy5vcmcvZW4vbWFzdGVyLykuCgpUbyBnZW5lcmF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBpbnN0YWxsIFNwaGlueCwgZW50ZXIgdGhlIGRvY3MgZGlyZWN0b3J5IGFuZCBleGVjdXRlIGBtYWtlIGh0bWxgIChMaW51eCkgb3IgYG1ha2UuYmF0IGh0bWxgIChXaW5kb3dzKS4gVGhlIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uIHdpbGwgYmUgYXZhaWxhYmxlIGluIHRoZSBkaXJlY3RvcnkgYC4vZG9jcy9idWlsZGAuCgpUaGUgZG9jdW1lbnRhdGlvbiBob3N0ZWQgYXQgW1JlYWQgdGhlIERvY3NdKGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnLykgaXMgdXBkYXRlZCBvbiBlYWNoIHB1c2guCg== readmeEtag: '"0f8067a91d7dccfee81b8b348ef3e12e8be14156"' readmeLastModified: Fri, 19 Sep 2025 15:18:08 GMT repositoryId: 130233015 description: >- Creates (immutable) PHP model classes from JSON-Schema files including all validation rules as PHP code created: '2018-04-19T15:03:37Z' updated: '2026-01-16T14:19:40Z' language: PHP archived: false stars: 81 watchers: 2 forks: 18 owner: wol-soft logo: https://avatars.githubusercontent.com/u/14750468?v=4 license: MIT repoEtag: '"94c0a9d09ed14dda6f5eae214cd891cfe7b950c5746353152b39171c408cf119"' repoLastModified: Fri, 16 Jan 2026 14:19:40 GMT foundInMaster: true id: 66096cd4d636503d8f7fc479dbf415f6 - source: openapi3 tags repository: https://github.com/wy-z/requests-openapi v3: true repositoryMetadata: base64Readme: >- IyByZXF1ZXN0cy1vcGVuYXBpCgpbIVtpbWFnZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvcmVxdWVzdHMtb3BlbmFwaS5zdmcpXShodHRwczovL3B5cGkub3JnL3Byb2plY3QvcmVxdWVzdHMtb3BlbmFwaS8pClshW2ltYWdlXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvbC9yZXF1ZXN0cy1vcGVuYXBpLnN2ZyldKGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9yZXF1ZXN0cy1vcGVuYXBpLykKWyFbaW1hZ2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL3JlcXVlc3RzLW9wZW5hcGkuc3ZnKV0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3JlcXVlc3RzLW9wZW5hcGkvKQpbIVtpbWFnZV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3d5LXovcmVxdWVzdHMtb3BlbmFwaS9tYXN0ZXIvdGVzdHMvY292ZXJhZ2UtYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3d5LXovcmVxdWVzdHMtb3BlbmFwaSkKCkEgbGlnaHR3ZWlnaHQgYnV0IHBvd2VyZnVsIGFuZCBlYXN5LXRvLXVzZSBQeXRob24gY2xpZW50IGxpYnJhcnkgZm9yIE9wZW5BUEkgdjMuCgojIyBLZXkgRmVhdHVyZXMKCi0gKipMaWdodHdlaWdodCBEZXNpZ24qKjogRXhwZXJpZW5jZSBhIG1pbmltYWxpc3RpYyBpbnRlcmZhY2UuCi0gKipGb2N1cyBvbiBFc3NlbnRpYWxzKio6IEhlbHBzIHlvdSBzaW1wbGlmeSB0aGUgaGFuZGxpbmcgb2YgUGF0aHMsIFBhcmFtZXRlcnMsIEhlYWRlcnMsIENvb2tpZXMsIGV0Yy4sIHdoaWxlIGluaGVyaXRpbmcgYWxsIHRoZSBjYXBhYmlsaXRpZXMgb2YgUmVxdWVzdHMuCi0gKipUZXN0aW5nIGFuZCBJbnRlZ3JhdGlvbiBNYWRlIEVhc3kqKjogV2hldGhlciB5b3UncmUgcnVubmluZyB0ZXN0cyBvciBpbnRlZ3JhdGluZyB3aXRoIG90aGVyIHN5c3RlbXMsIHRoZSBjbGllbnQgc2ltcGxpZmllcyB0aGVzZSB0YXNrcy4KCiMjIFVzYWdlCgpgYGBweXRob24KaW1wb3J0IHJlcXVlc3RzX29wZW5hcGkKCiMgbG9hZCBzcGVjIGZyb20gdXJsCmMgPSByZXF1ZXN0c19vcGVuYXBpLkNsaWVudCgpLmxvYWRfc3BlY19mcm9tX3VybCgiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vbWFzdGVyL2V4YW1wbGVzL3YzLjAvcGV0c3RvcmUueWFtbCIpCiMgb3IgbG9hZCBmcm9tIGZpbGUKYyA9IHJlcXVlc3RzX29wZW5hcGkuQ2xpZW50KCkubG9hZF9zcGVjX2Zyb21fZmlsZSgib3BlbmFwaS5qc29uIikKIyBzZXQgc2VydmVyCmMuc2V0X3NlcnZlcihyZXF1ZXN0c19vcGVuYXBpLlNlcnZlcih1cmw9Imh0dHBzOi8vZmFrZS5jb20vYXBpIikpCgojIGN1c3RvbSBzZXNzaW9uIGZvciBhdXRoIG9yIG90aGVycwpjLnJlcXVlc3RvciAjIGEgaW5zdGFuY2Ugb2YgcmVxdWVzdHMuU2Vzc2lvbiwgc2VlIGh0dHBzOi8vcmVxdWVzdHMucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L3VzZXIvYWR2YW5jZWQvI3Nlc3Npb24tb2JqZWN0cwojIHNldCB1cGRhdGUgdG9rZW4KYy5yZXF1ZXN0b3IuaGVhZGVycy51cGRhdGUoeyJBdXRob3JpemF0aW9uIjogInRva2VuIn0pCgojIGNhbGwgYXBpIGJ5IG9wZXJhdGlvbiBpZApyZXNwID0gYy5saXN0UGV0cygpICMgcmVzcDogcmVxdWVzdHMuUmVzcG9uc2UKcmVzcC5qc29uKCkKIyBnZXQgYnkgcGF0aCBpZApyZXNwID0gYy5zaG93UGV0QnlJZChwZXRJZD0xKQpyZXNwLmpzb24oKQojIHBvc3QKcmVzcCA9IGMuY3JlYXRlUGV0cyhqc29uPXt9KQpyZXNwLmpzb24oKQoKIwojIEFkdmFuY2VkIFVzYWdlCiMKCiMgc2V0IHJlcSBvcHRpb25zLCAncmVxX29wdHMnIHBhcmFtIHRvIGN1c3RvbSByZXF1ZXN0IG9wdGlvbnMKcmVxdWVzdHNfb3BlbmFwaS5DbGllbnQocmVxX29wdHM9eyJ0aW1lb3V0IjogNjB9KS5sb2FkX3NwZWNfZnJvbV9maWxlKCJ4eCIpCgojIHBhcmFtZXRlcnMgc3RhcnRzIHdpdGggJ18nIG9yIG5vdCBmb3VuZCBpbiBvcGVuYXBpIHNwZWMsIHdpbGwgYmUgcGFzc2VkIHRocm91Z2ggdG8gdGhlIHJlcXVlc3RpbmcKYy5jcmVhdGVQZXRzKGpzb249e30sIF9oZWFkZXJzPXt9LCBfcGFyYW1zPXt9LCBfY29va2llcz17fSkKCiMgcGFyYW1ldGVycwojIGluOiBjb29raWUsIG5hbWU6IGNzcmZ0b2tlbgpjLmNyZWF0ZVBldHMoY3NyZnRva2VuPSIqKioiKQojIGluOiBoZWFkZXIsIG5hbWU6IHgtZm9vCmMuY3JlYXRlUGV0cygqKnsieC1mb28iOiAiKioqIn0pCiMgaW46IHBhdGgsIG5hbWU6IHVzZXJJZApjLmdldFVzZXIodXNlcklkPTEpCiMgaW46IHF1ZXJ5LCBuYW1lOiBvZmZzZXQKYy5saXN0VXNlcnMob2Zmc2V0PTEpCgojIGh0dHAgYm9keSwganVzdCBsaWtlIHJlcXVlc3RzLlNlc3Npb24KYy5jcmVhdGVQZXRzKGpzb249e30pIG9yIGMuY3JlYXRlUGV0cyhkYXRhPXt9KQpgYGAKCiMjIEluc3RhbGxhdGlvbgoKYGBgCnBpcCBpbnN0YWxsIHJlcXVlc3RzLW9wZW5hcGkKYGBgCgojIyBMaWNlbnNlCgpNSVQK readmeEtag: '"77db283aa6864fae56676707aac289039c9b1e0b"' readmeLastModified: Wed, 07 Feb 2024 16:35:18 GMT repositoryId: 188546010 description: >- A lightweight but powerful and easy-to-use Python client library for OpenAPI v3. created: '2019-05-25T09:22:34Z' updated: '2025-11-29T13:57:33Z' language: Python archived: false stars: 65 watchers: 3 forks: 8 owner: wy-z logo: https://avatars.githubusercontent.com/u/4213483?v=4 license: MIT repoEtag: '"302b9cffd30daa6c8f7aa629c5e9d684fa48ca31248e061933011b6951dfb79e"' repoLastModified: Sat, 29 Nov 2025 13:57:33 GMT foundInMaster: true category: - Data Validators - Parsers id: bfbe253fe4519d1b8b32b8770b5622e5 - source: openapi3 tags repository: https://github.com/fsprojects/openapitypeprovider v3: true repositoryMetadata: base64Readme: >- PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9Eem91a3IvT3BlbkFQSVR5cGVQcm92aWRlci9yYXcvbWFzdGVyL2xvZ28uanBnIiBhbHQ9ImRyYXdpbmciIHdpZHRoPSIxMDBweCIvPgoKCiMgT3BlbkFQSSBUeXBlIFByb3ZpZGVyCipFcmFzZWQgbmV0c3RhbmRhcmQyLjAgdHlwZSBwcm92aWRlciBmb3Igd2ViIEFQSSBwcm92aWRlcnMuKgoKIyMgV2h5IHRvIHVzZSB0aGlzIHR5cGUgcHJvdmlkZXI/CklmIHlvdSB3cml0ZSBGIyBiYWNrZW5kIGZvciBzb21lIGFwcGxpY2F0aW9uIHByb3ZpZGluZyBKU09OIEFQSSwgeW91IHByb2JhYmx5IHdhbnQgdG8gZG9jdW1lbnQgdGhpcyB1c2luZyBbT3BlbkFQSSB2MyBzcGVjaWZpY2F0aW9uXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKSAocHJldmlvdXNseSBjYWxsZWQgU3dhZ2dlcikuIFRoaXMgZG9jdW1lbnRhdGlvbiBjYW4gYmUgY3JlYXRlZCBiYXNpY2FsbHkgdHdvIHdheXM6CgoxKSBHZW5lcmF0ZSBpdCBmcm9tIGNvZGUgKGNvZGUgZmlyc3QgYXBwcm9hY2gpCjIpIFdyaXRlIGl0IG1hbnVhbGx5IChkb2N1bWVudCBmaXJzdCBhcHByb2FjaCkKClRoaXMgdHlwZSBwcm92aWRlciBpcyBmb2N1c2VkIG9uIHNlY29uZCBvcHRpb24gd2hlbiB5b3UgYWxyZWFkeSBnb3QgZXhpc3RpbmcgZG9jdW1lbnRhdGlvbiAoZS5nLiBmcm9tIGZyb250ZW5kIGRldmVsb3BlcikgYW5kIHlvdSB3YW50IHRvIGJlIDEwMCUgc3VyZSB0aGF0IHlvdXIgQVBJIGZvbGxvd3MgaXQgY29ycmVjdGx5LCB3aGljaCBtb3N0bHkgbWVhbnMgdHdvIHRoaW5nczogVmFsaWRhdGlvbiBvZiByZXF1ZXN0cyBwYXlsb2FkIGlzIGluIGNvcnJlY3QgZm9ybSAoYXMgZGVzY3JpYmVkIGluIEFQSSBkb2N1bWVudGF0aW9uKSBhbmQgY3JlYXRpbmcgcmVzcG9uc2VzLiBCb3RoIHRoaW5ncyBjYW4gYmUgcXVpdGUgdGVkaW91cyBhbmQgZXJyb3ItcHJvbmUuIEl0IGlzIGNvbW1vbiBpbiB3ZWIgQVBJIGRldmVsb3BtZW50IHRoYXQgYWZ0ZXIgc29tZSB0aW1lIHRoYXQgc2VydmVyIGJlaGF2aW9yIGlzIG5vdCB3aGF0IGlzIHdyaXR0ZW4gaW4gZG9jdW1lbnRhdGlvbi4gVGhpcyB0eXBlIHByb3ZpZGVyIGlzIGhlcmUgdG8gaGVscCB3aXRoIHRoYXQuCgojIyBHb2FscyBvZiBPcGVuQVBJVHlwZVByb3ZpZGVyCldoZW4gSSBzdGFydGVkIHRvIHRoaW5rIGFib3V0IHdyaXRpbmcgdGhpcyB0eXBlIHByb3ZpZGVyLCBJIHNldCBmZXcgZ29hbHM6CgoxLiBOZXRzdGFuZGFyZDIuMCBzdXBwb3J0CjIuIEVyYXNlZCB0eXBlCjMuIFRpZ2h0bHkgY29ubmVjdGVkIHRvIE5ld3RvbnNvZnQuSnNvbgo0LiBCYXNlZCBvbiB0aGUgbGF0ZXN0IE9wZW5BUEkgc3BlY2lmaWNhdGlvbiAobm8gc3VwcG9ydCBmb3IgU3dhZ2dlcikKCiMjIFZlcnNpb24gMi4wLjAgY2hhbmdlCkluIHZlcnNpb25zIDwgMi4wLCB0aGUgU2NoZW1hcyB3ZXJlIGNyZWF0ZWQgYmFzZWQgb24gc2ltcGxpZmllZCBsb2dpYzogSWYgdGhlIHNjaGVtYSBpcyB0aGUgc2FtZSAoaGF2aW5nIHNhbWUgc3RydWN0dXJlKSwgaXQgaXMgY29uc2lkZXJlZCB0byBiZSB0aGUgc2FtZSBzY2hlbWEgbm8gbWF0dGVyIG5hbWUgeW91IHVzZSAoYWN0dWFsbHkgdGhlIGZpcnN0IHBhcnNlZCBuYW1lZCBpcyB1c2VkIGZvciBhbGwgb3RoZXJzKS4gVGhpcyBhcHByb2FjaCBoYWQgZ29vZCBpbnRlbnRpb25zIC0gdG8gbWluaW1pemUgYW1vdW50IG9mIGNyZWF0ZWQgU2NoZW1hcyAtIGhvd2V2ZXIgc2hvd24gdG8gYmUgd3JvbmcgZm9yIGNvbXBsZXggc2NlbmFyaW9zLiBUaGlzIGNvdWxkIGVhc2lseSBsZWFkIHRvIHNpdHVhdGlvbiB3aGVyZSBjaGFuZ2UgaW4gb25lIFNjaGVtYSBicmVha3MgeW91ciBvdGhlciBTY2hlbWEsIGV2ZW4gaWYgdGhleSB3ZXJlIG5vdCBkaXJlY3RseSBsaW5rZWQgdXNpbmcgYCRyZWZgLgoKU2luY2UgdmVyc2lvbiAqKjIuMC4wKiogdGhlIFNjaGVtYXMgYXJlIGNyZWF0ZWQgYmFzZWQgb24gbG9naWM6CjEuIFJvb3QgaW5saW5lIHNjaGVtYXMgYXJlIGFsd2F5cyBjcmVhdGVkIGFzIHNlcGFyYXRlZCBvbmUKMi4gUm9vdCBgJHJlZmAgc2NoZW1hcyBhcmUgY3JlYXRlZCBhcyBzZXBhcmF0ZWQgb25lIGJ1dCB3aXRoIHN0cnVjdHVyZSAiY29waWVkIiBmcm9tIHJlZmVyZW5jZWQgc2NoZW1hCjMuIE5lc3RlZCBpbmxpbmUgc2NoZW1hcyBhcmUgY3JlYXRlZCBhcyBzZXBhcmF0ZWQgb25lCjQuIE5lc3RlZCBgJHJlZmAgc2NoZW1hcyBhcmUgbGlua2VkIHRvIHJlZmVyZW5jZWQgc2NoZW1hCgojIyBJbnN0YWxhdGlvbgoKRmlyc3QgaW5zdGFsbCBbTnVHZXQgcGFja2FnZV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL09wZW5BUElUeXBlUHJvdmlkZXIvKQoKICAgIEluc3RhbGwtUGFja2FnZSBPcGVuQVBJVHlwZVByb3ZpZGVyCgpvciB1c2luZyBQYWtldAoKICAgIG51Z2V0IE9wZW5BUElUeXBlUHJvdmlkZXIKCiMjIEhvdyB0byB1c2UKCkZpcnN0IG9wZW4gY29ycmVjdCBuYW1lc3BhY2UgYW5kIGNyZWF0ZSBiYXNpYyB0eXBlIGJhc2VkIG9uIHlvdXIgWUFNTCBkb2N1bWVudGF0aW9uCgpgYGBmc2hhcnAKb3BlbiBPcGVuQVBJVHlwZVByb3ZpZGVyCgp0eXBlIFBldFN0b3JlID0gT3BlbkFQSVYzUHJvdmlkZXI8IlBldFN0b3JlLnlhbWwiPgpgYGAKCk5vdyB5b3UgY2FuIHVzZSBkZWZpbmVkIFNjaGVtYXMgaW4geW91ciBzcGVjaWZpY2F0aW9uIGxpa2UgRiMgdHlwZXMuCgojIyMgUGFyc2luZyBmcm9tIEpTT04KCkVhY2ggU2NoZW1hIHR5cGUgY2FuIGJlIGNyZWF0ZWQgZnJvbSBKU09OIHN0cmluZyB1c2luZyBzdGF0aWMgbWV0aG9kIGBQYXJzZWAuCgpgYGBmc2hhcnAKbGV0IGpzb24gPSAiIiJ7Im5hbWUiOiJSb21hbiJ9IiIiCmxldCBwZXQgPSBQZXRTdG9yZS5TY2hlbWFzLk5ld1BldC5QYXJzZShqc29uKQpsZXQgbmFtZSA9IHBldC5OYW1lIC8vIGNvbnRhaW5zIFJvbWFuCmxldCB0YWcgPSBwZXQuVGFnIC8vIGNvbnRhaW5zIE9wdGlvbiB2YWx1ZSBOb25lCmBgYAoKU29tZXRpbWVzIHlvdSBuZWVkIHRvIHVzZSBwYXJzZSBKU09OIHdpdGggY3VzdG9tIGRhdGUgZm9ybWF0LgoKYGBgZnNoYXJwCmxldCBqc29uID0gIiIieyJkYXRlMSI6IjMxLiAxMi4gMjAxOCAxMjozNDo1NiIsImRhdGUyIjoiMzEuIDEyLiAyMDE3IDEyOjM0OjU2In0iIiIKbGV0IGN1c3RvbURhdGVGb3JtYXQgPSAiZGQuIE1NLiB5eXl5IEhIOm1tOnNzIgpsZXQgdHdvRGF0ZXMgPSBQZXRTdG9yZS5TY2hlbWFzLlR3b0RhdGVzLlBhcnNlKGpzb24sIGN1c3RvbURhdGVGb3JtYXQpCmBgYAoKTWV0aG9kIGBQYXJzZWAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpbiBjYXNlIEpTT04gZG9lcyBub3QgZml0IHRvIGRlZmluaXRpb246CgpgYGBmc2hhcnAKLy8gZmFpbHMgd2l0aCBleGNlcHRpb24gdGhhdCBwcm9wZXJ0eSAnbmFtZScgaXMgbm90IHByZXNlbnQsCi8vIGJ1dCBzaG91bGQgYmUgYmFzZWQgb24gU2NoZW1hIGRlZmluaXRpb24KbGV0IGpzb24gPSAiIiJ7Im5vdEV4aXN0aW5nUHJvcGVydHkiOiJSb21hbiJ9IiIiCmxldCBwZXQgPSBQZXRTdG9yZS5TY2hlbWFzLk5ld1BldC5QYXJzZShqc29uKSAKCi8vIGZhaWxzIHdpdGggZXhjZXB0aW9uIHRoYXQgcHJvcGVydHkgJ25hbWUnIG5vdCBjb252ZXJ0aWJsZQovLyB0byBzdHJpbmcgdmFsdWUKbGV0IGpzb24gPSAiIiJ7Im5hbWUiOjEyMzQ1Nn0iIiIKbGV0IHBldCA9IFBldFN0b3JlLlNjaGVtYXMuTmV3UGV0LlBhcnNlKGpzb24pIApgYGAKCiMjIyBJbnN0YW50aWF0aW9uIG9mIFNjaGVtYSB0eXBlcwoKU2NoZW1hIHR5cGVzIGhhcyBjb25zdHJ1Y3RvcnMgYmFzZWQgb24gZGVmaW5pdGlvbiBzbyB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0gYXMgeW91IG5lZWQuCgpgYGBmc2hhcnAKbGV0IHBldCA9IG5ldyBQZXRTdG9yZS5TY2hlbWFzLk5ld1BldChuYW1lID0gIlJvbWFuIikKYGBgCgojIyMgQ29udmVydGluZyB0byBKU09OCgpFYWNoIFNjaGVtYSBpbnN0YW5jZSBoYXMgbWV0aG9kIGBUb0pzb25gIHdpdGggZmV3IG92ZXJsb2Fkcy4KCmBgYGZzaGFycApsZXQgcGV0ID0gbmV3IFBldFN0b3JlLlNjaGVtYXMuTmV3UGV0KG5hbWUgPSAiUm9tYW4iKQpwZXQuVG9Kc29uKCkgLy8gcmV0dXJucyAneyJuYW1lIjoiUm9tYW4ifScgLSBubyBpbmRlbnRpbmcKcGV0LlRvSnNvbihOZXd0b25zb2Z0Lkpzb24uRm9ybWF0dGluZy5JbmRlbnRlZCkgLy8gcmV0dXJuIGpzb24gd2l0aCBmYW5jeSBmb3JtYXR0aW5nCmBgYAoKIyMjIENvbnZlcnRpbmcgdG8gSlNPTiB3aXRoIGN1c3RvbSBzZXJpYWxpemVyCgpFYWNoIGBUb0pzb25gIG1ldGhvZCBoYXMgb3ZlcmxvYWQgd2l0aCBzdXBwb3J0aW5nIGBKc29uU2VyaWFsaXplclNldHRpbmdzYCBhcyBwYXJhbWV0ZXIuCgpgYGBmc2hhcnAKbGV0IHBldCA9IG5ldyBQZXRTdG9yZS5TY2hlbWFzLk5ld1BldChuYW1lID0gIlJvbWFuIikKCmxldCBzZXR0aW5ncyA9IEpzb25TZXJpYWxpemVyU2V0dGluZ3MoKQpzZXR0aW5ncy5OdWxsVmFsdWVIYW5kbGluZyA8LSBOdWxsVmFsdWVIYW5kbGluZy5JbmNsdWRlCgpwZXQuVG9Kc29uKHNldHRpbmdzLCBGb3JtYXR0aW5nLk5vbmUpIC8vIHJldHVybnMgJ3sibmFtZSI6IlJvbWFuIiwidGFnIjpudWxsfScKYGBgCgojIyMgQ29udmVydGluZyB0byBOZXd0b25zb2Z0IEpUb2tlbgoKSWYgeW91IG5lZWQgYEpUb2tlbmAgaW5zdGVhZCBvZiBzdHJpbmcgd2l0aCBKU09OLCBtZXRob2QgYFRvSlRva2VuYCBpcyBoZXJlIGZvciB5b3UuCgpgYGBmc2hhcnAKbGV0IHBldCA9IG5ldyBQZXRTdG9yZS5TY2hlbWFzLk5ld1BldChuYW1lID0gIlJvbWFuIikKbGV0IGp0b2tlbiA9IHBldC5Ub0pUb2tlbigpCmBgYAoKQWdhaW4sIHlvdSBjYW4gY3VzdG9taXplIGhvdyB0byBoYW5kbGUgb3B0aW9uYWwgdmFsdWVzLgoKYGBgZnNoYXJwCmxldCBwZXQgPSBuZXcgUGV0U3RvcmUuU2NoZW1hcy5OZXdQZXQobmFtZSA9ICJSb21hbiIpCmxldCBqdG9rZW4gPSBwZXQuVG9KVG9rZW4oTnVsbFZhbHVlSGFuZGxpbmcuSW5jbHVkZSkgLy8gdGhpcyBub3cgY29udGFpbnMgSk51bGwgdmFsdWUgaW5zaWRlIEpPYmplY3QKYGBgCgojIyMgU2ltcGxlIHZhbHVlcwoKQnkgc3BlY2lmaWNhdGlvbiB5b3UgYXJlIGFsbG93ZWQgdG8gaGF2ZSBTY2hlbWEgdHlwZXMgbm90IGFuIG9iamVjdHMsIGJ1dCBzaW1wbGUgdmFsdWVzIGxpa2Ugc3RyaW5ncyBvciBpbnRlZ2Vycy4gVGhpcyB0eXBlIHByb3ZpZGVyIHN1cHBvcnRzIHRoZW0gYXMgd2VsbC4KCmBgYHlhbWwKU2ltcGxlU3RyaW5nOgogICAgdHlwZTogc3RyaW5nICAgIAogICAgClNpbXBsZUFycmF5OgogICAgdHlwZTogYXJyYXkKICAgIGl0ZW1zOgogICAgICAgIHR5cGU6IHN0cmluZwpgYGAKCmBgYGZzaGFycApsZXQgc2ltcGxlU3RyaW5nID0gUGV0U3RvcmUuU2NoZW1hcy5TaW1wbGVTdHJpbmcoIkFCQyIpCnNpbXBsZVN0cmluZy5WYWx1ZSAvLyBjb250YWlucyAiQUJDIgoKbGV0IHNpbXBsZUFycmF5ID0gUGV0U3RvcmUuU2NoZW1hcy5TaW1wbGVBcnJheShbIkEiOyJCIl0pCnNpbXBsZUFycmF5LlZhbHVlcyAvLyBjb250YWlucyBMaXN0PHN0cmluZz4gWyJBIjsiQiJdCmBgYAoKIyMjIFJlcXVlc3RzICYgUmVzcG9uc2VCb2RpZXMKClVzaW5nIFNjaGVtYSB0eXBlcyBkaXJlY3RseSBpcyBxdWl0ZSBoYW5keSBhbmQgc3RyYWlnaHRmb3J3YXJkLCBidXQgaXQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgcm91dGVzLCByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzLiBJZiB5b3Ugd2FudCB0byBiZSAxMDAlIHN1cmUgdGhhdCB5b3UgYXJlIGZ1bGxmaWxsaW5nIHNwZWNpZmljYXRpb24sIGdvIGZvciBgUGFyc2VgIG9uIFJlcXVlc3RzIGFuZCBgVG9Kc29uYCAvIGBUb0pUb2tlbmAgbWV0aG9kcyBvbiBSZXNwb25zZUJvZGllcy4KCmBgYGZzaGFycApsZXQgcGV0U3RvcmVBUEkgPSBuZXcgUGV0U3RvcmUoKSAvLyBOb3RlISBJbnN0YW5jZSBvZiBQZXRTdG9yZSB0eXBlIGlzIG5lZWRlZCBoZXJlLgpsZXQgcGV0ID0gbmV3IFBldFN0b3JlLlNjaGVtYXMuTmV3UGV0KCJSb21hbiIpCgovLyB0aGlzIHJvdXRlIHJldHVybnMgTmV3UGV0IHNjaGVtYSBieSBkZWZpbml0aW9uIHNvIFRvSnNvbiBhbGxvd3Mgb25seSBOZXdQZXQgc2NoZW1hIGFzIHBhcmFtZXRlcgpwZXRTdG9yZUFQSS5QYXRocy5gYC9wZXRzL3tpZH1gYC5HZXQuUmVzcG9uc2VzLmBgMjAwYGAuYGBhcHBsaWNhdGlvbi9qc29uYGAuVG9Kc29uKHBldCkKCi8vIHRoaXMgcm91dGUgZXhwZWN0cyBOZXdQZXQgc2NoZW1hIGJ5IGRlZmluaXRpb24gc28gUGFyc2UgbWV0aG9kIHJldHVybnMgTmV3UGV0CmxldCBwYXJzZWRQZXQgPSBwZXRTdG9yZUFQSS5QYXRocy5gYC9wZXRzYGAuUG9zdC5SZXF1ZXN0Qm9keS5gYGFwcGxpY2F0aW9uL2pzb25gYC5QYXJzZShqc29uRnJvbVJlcXVlc3QpCmBgYAoKSW4gY2FzZSB5b3UgaGF2ZSBhbnkgZG91YnRzLCB5b3UgY2FuIGFsd2F5cyBoYXZlIGEgbG9vayBbYXQgdW5pdCB0ZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL0R6b3Vrci9PcGVuQVBJVHlwZVByb3ZpZGVyL2Jsb2IvbWFzdGVyL3Rlc3RzL09wZW5BUElUeXBlUHJvdmlkZXIuVGVzdHMvQmFzaWNUZXN0cy5mcykKCiMjIEtub3duIGlzc3VlcyAmIExpbWl0YXRpb25zCjEuIE5vIHN1cHBvcnQgZm9yIGBPbmVPZmAgYW5kIGBNYW55T2ZgIHNpbmNlIHRoZXkgYXJlIGJhc2ljYWxseSB1bmlvbiB0eXBlcyB3aGljaCBpcyBxdWl0ZSBkaWZmaWN1bHQgKG9yIG1heWJlIGltcG9zc2libGUpIHRvIGdlbmVyYXRlIGZyb20gdHlwZSBwcm92aWRlcgoKIyMgQ29udHJpYnV0aW9uCgpZb3UgYXJlIG1vcmUgdGhhbiB3ZWxjb21lIHRvIHNlbmQgYSBbcHVsbCByZXF1ZXN0XShodHRwczovL2dpdGh1Yi5jb20vRHpvdWtyL09wZW5BUElUeXBlUHJvdmlkZXIvcHVsbHMpIGlmIHlvdSBmaW5kIHNvbWUgYnVnIG9yIG1pc3NpbmcgZnVuY3Rpb25hbGl0eS4K readmeEtag: '"b64c6755beae2e67b78991440ea9c3ed33b596db"' readmeLastModified: Mon, 28 Jan 2019 20:18:17 GMT repositoryId: 118037484 description: F# type provider for Open API specification created: '2018-01-18T21:00:25Z' updated: '2025-02-18T13:30:07Z' language: F# archived: false stars: 65 watchers: 9 forks: 5 owner: fsprojects logo: https://avatars.githubusercontent.com/u/6001315?v=4 repoEtag: '"acf47739a5b9cd7b0d8c84b9b658f4ad9cae873bf442cc55c4d7c5861b549df0"' repoLastModified: Tue, 18 Feb 2025 13:30:07 GMT foundInMaster: true category: Parsers id: 6b6a608ac17ac38db46546688326462f - source: openapi3 tags repository: https://github.com/marcomuellner/openapi-python-generator v3: true id: f16c0d05a415eb485dad3d30fa66ea5c repositoryMetadata: base64Readme: >- IyBPcGVuYXBpIFB5dGhvbiBHZW5lcmF0b3IKClshW1B5UEldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L29wZW5hcGktcHl0aG9uLWdlbmVyYXRvci5zdmcpXVtweXBpX10KWyFbU3RhdHVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvc3RhdHVzL29wZW5hcGktcHl0aG9uLWdlbmVyYXRvci5zdmcpXVtzdGF0dXNdClshW1B5dGhvbiBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy9vcGVuYXBpLXB5dGhvbi1nZW5lcmF0b3IpXVtweXRob24gdmVyc2lvbl0KWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2wvb3BlbmFwaS1weXRob24tZ2VuZXJhdG9yKV1bbGljZW5zZV0KClshW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9zdGF0aWMvdjE/bGFiZWw9ZG9jdW1lbnRhdGlvbiZtZXNzYWdlPWVuYWJsZWQmY29sb3I9PENPTE9SPildW2RvY3VtZW50YXRpb25dClshW1Rlc3RzXShodHRwczovL2dpdGh1Yi5jb20vTWFyY29NdWVsbG5lci9vcGVuYXBpLXB5dGhvbi1nZW5lcmF0b3Ivd29ya2Zsb3dzL1Rlc3RzL2JhZGdlLnN2ZyldW3Rlc3RzXQpbIVtDb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvTWFyY29NdWVsbG5lci9vcGVuYXBpLXB5dGhvbi1nZW5lcmF0b3IvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnKV1bY29kZWNvdl0KClshW3ByZS1jb21taXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcHJlLS1jb21taXQtZW5hYmxlZC1icmlnaHRncmVlbj9sb2dvPXByZS1jb21taXQmbG9nb0NvbG9yPXdoaXRlKV1bcHJlLWNvbW1pdF0KWyFbQmxhY2tdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLWJsYWNrLTAwMDAwMC5zdmcpXVtibGFja10KCltweXBpX106IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9vcGVuYXBpLXB5dGhvbi1nZW5lcmF0b3IvCltzdGF0dXNdOiBodHRwczovL3B5cGkub3JnL3Byb2plY3Qvb3BlbmFwaS1weXRob24tZ2VuZXJhdG9yLwpbcHl0aG9uIHZlcnNpb25dOiBodHRwczovL3B5cGkub3JnL3Byb2plY3Qvb3BlbmFwaS1weXRob24tZ2VuZXJhdG9yCltkb2N1bWVudGF0aW9uXTogaHR0cHM6Ly9tYXJjb211ZWxsbmVyLmdpdGh1Yi5pby9vcGVuYXBpLXB5dGhvbi1nZW5lcmF0b3IvClt0ZXN0c106IGh0dHBzOi8vZ2l0aHViLmNvbS9NYXJjb011ZWxsbmVyL29wZW5hcGktcHl0aG9uLWdlbmVyYXRvci9hY3Rpb25zP3dvcmtmbG93PVRlc3RzCltjb2RlY292XTogaHR0cHM6Ly9hcHAuY29kZWNvdi5pby9naC9NYXJjb011ZWxsbmVyL29wZW5hcGktcHl0aG9uLWdlbmVyYXRvcgpbcHJlLWNvbW1pdF06IGh0dHBzOi8vZ2l0aHViLmNvbS9wcmUtY29tbWl0L3ByZS1jb21taXQKW2JsYWNrXTogaHR0cHM6Ly9naXRodWIuY29tL3BzZi9ibGFjawoKIVtdKGxvZ28ucG5nKQoKLS0tCl9fRG9jdW1lbnRhdGlvbjpfXyBbaGVyZV1bZG9jdW1lbnRhdGlvbl0KCi0tLQoKIyMgRmVhdHVyZXMKCi0gX19FYXNlIG9mIHVzZV9fLiBQcm92aWRlIGlucHV0LCBvdXRwdXQgYW5kIHRoZSBsaWJyYXJ5LCBhbmQgdGhlIGdlbmVyYXRvciB3aWxsIGRvIHRoZSByZXN0LgotIF9fVHlwZSBzYWZldHkgYW5kIHR5cGUgaGludGluZy5fXyBfX09wZW5BUEkgcHl0aG9uIGdlbmVyYXRvcl9fIG1ha2VzIGhlYXZ5IHVzZSBvZiBweWRhbnRpYyBtb2RlbHMgdG8gcHJvdmlkZSB0eXBlLXNhZmUgZGF0YSBzdHJ1Y3R1cmVzLgotIF9fU3VwcG9ydCBmb3IgbXVsdGlwbGUgcmVzdCBmcmFtZXdvcmtzLl9fIF9fT3BlbkFQSSBweXRob24gZ2VuZXJhdG9yX18gY3VycmVudGx5IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmc6CiAgICAtIFtodHRweF0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2h0dHB4LykKICAgIC0gW3JlcXVlc3RzXShodHRwczovL3B5cGkub3JnL3Byb2plY3QvcmVxdWVzdHMvKQogICAgLSBbYWlvaHR0cF0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2Fpb2h0dHAvKQotIF9fQXN5bmMgYW5kIHN5bmMgY29kZSBnZW5lcmF0aW9uIHN1cHBvcnRfXywgZGVwZW5kaW5nIG9uIHRoZSBmcmFtZXdvcmsuIEl0IHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgYm90aCBmb3IgZnJhbWV3b3JrcyB0aGF0IHN1cHBvcnQgYm90aC4KLSBfX0Vhc2lseSBleHRlbmRhYmxlIHVzaW5nIEppbmphMiB0ZW1wbGF0ZXNfXy4gVGhlIGNvZGUgaXMgZGVzaWduZWQgdG8gYmUgZWFzaWx5IGV4dGVuZGFibGUgYW5kIHNob3VsZCBzdXBwb3J0IGV2ZW4gbW9yZSBsYW5ndWFnZXMgYW5kIGZyYW1ld29ya3MgaW4gdGhlIGZ1dHVyZS4KLSBfX0Z1bGx5IHRlc3RlZF9fLiBFdmVyeSBnZW5lcmF0ZWQgY29kZSBpcyBhdXRvbWF0aWNhbGx5IHRlc3RlZCBhZ2FpbnN0IHRoZSBPcGVuQVBJIHNwZWMgYW5kIHdlIGhhdmUgMTAwJSBjb3ZlcmFnZS4KLSBfX1VzYWdlIGFzIENMSSBvciBhcyBsaWJyYXJ5X18uCgojIyBSZXF1aXJlbWVudHMKCi0gUHl0aG9uIDMuNysKCiMjIEluc3RhbGxhdGlvbgoKWW91IGNhbiBpbnN0YWxsIF9PcGVuYXBpIFB5dGhvbiBHZW5lcmF0b3JfIHZpYSBbcGlwXSBmcm9tIFtQeVBJXToKCmBgYGNvbnNvbGUKJCBwaXAgaW5zdGFsbCBvcGVuYXBpLXB5dGhvbi1nZW5lcmF0b3IKYGBgCgojIyBVc2FnZQoKUGxlYXNlIHNlZSB0aGUgW1F1aWNrIHN0YXJ0IHBhZ2VdIGZvciBkZXRhaWxzLgoKIyMgUm9hZG1hcAoKLSBTdXBwb3J0IGZvciBhbGwgY29tbW9ubHkgdXNlZCBodHRwIGxpYnJhcmllcyBpbiB0aGUgcHl0aG9uIGVjb3N5c3RlbSAofn5yZXF1ZXN0c35+LCB1cmxsaWIsIC4uLikKLSBTdXBwb3J0IGZvciBtdWx0aXBsZSBsYW5ndWFnZXMKLSBTdXBwb3J0IGZvciBtdWx0aXBsZSBhdXRoZW50aWNhdGlvbiBzY2hlbWVzCi0gU3VwcG9ydCBjdXN0b20gdGhlbWVzCgojIyBDb250cmlidXRpbmcKCkNvbnRyaWJ1dGlvbnMgYXJlIHZlcnkgd2VsY29tZS4KVG8gbGVhcm4gbW9yZSwgc2VlIHRoZSBbQ29udHJpYnV0b3IgR3VpZGVdLgoKIyMgTGljZW5zZQoKRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBbTUlUIGxpY2Vuc2VdW2xpY2Vuc2VdLApfT3BlbmFwaSBQeXRob24gR2VuZXJhdG9yXyBpcyBmcmVlIGFuZCBvcGVuIHNvdXJjZSBzb2Z0d2FyZS4KCiMjIElzc3VlcwoKSWYgeW91IGVuY291bnRlciBhbnkgcHJvYmxlbXMsCnBsZWFzZSBbZmlsZSBhbiBpc3N1ZV0gYWxvbmcgd2l0aCBhIGRldGFpbGVkIGRlc2NyaXB0aW9uLgoKIyMgQ3JlZGl0cwoKU3BlY2lhbCB0aGFua3MgdG8gdGhlIHBlZXBzIGZyb20gW29wZW5hcGktc2NoZW1hLXB5ZGFudGljXShodHRwczovL2dpdGh1Yi5jb20va3VpbW9uby9vcGVuYXBpLXNjaGVtYS1weWRhbnRpYyksCndoaWNoIGFscmVhZHkgZGlkIGEgbG90IG9mIHRoZSBsZWd3b3JrIGJ5IHByb3ZpZGluZyBhIHB5ZGFudGljIHNjaGVtYSBmb3IgdGhlIE9wZW5BUEkgMy4wLjArIHNwZWNpZmljYXRpb24uCgpUaGlzIHByb2plY3Qgd2FzIGdlbmVyYXRlZCBmcm9tIFtAY2pvbG93aWN6XSdzIFtIeXBlcm1vZGVybiBQeXRob24gQ29va2llY3V0dGVyXSB0ZW1wbGF0ZS4KCltAY2pvbG93aWN6XTogaHR0cHM6Ly9naXRodWIuY29tL2Nqb2xvd2ljegpbcHlwaV06IGh0dHBzOi8vcHlwaS5vcmcvCltoeXBlcm1vZGVybiBweXRob24gY29va2llY3V0dGVyXTogaHR0cHM6Ly9naXRodWIuY29tL2Nqb2xvd2ljei9jb29raWVjdXR0ZXItaHlwZXJtb2Rlcm4tcHl0aG9uCltmaWxlIGFuIGlzc3VlXTogaHR0cHM6Ly9naXRodWIuY29tL01hcmNvTXVlbGxuZXIvb3BlbmFwaS1weXRob24tZ2VuZXJhdG9yL2lzc3VlcwpbcGlwXTogaHR0cHM6Ly9waXAucHlwYS5pby8KCjwhLS0gZ2l0aHViLW9ubHkgLS0+CgpbbGljZW5zZV06IGh0dHBzOi8vZ2l0aHViLmNvbS9NYXJjb011ZWxsbmVyL29wZW5hcGktcHl0aG9uLWdlbmVyYXRvci9ibG9iL21haW4vTElDRU5TRQpbY29udHJpYnV0b3IgZ3VpZGVdOiBodHRwczovL2dpdGh1Yi5jb20vTWFyY29NdWVsbG5lci9vcGVuYXBpLXB5dGhvbi1nZW5lcmF0b3IvYmxvYi9tYWluL0NPTlRSSUJVVElORy5tZApbUXVpY2sgc3RhcnQgcGFnZV06IGh0dHBzOi8vbWFyY29tdWVsbG5lci5naXRodWIuaW8vb3BlbmFwaS1weXRob24tZ2VuZXJhdG9yL3F1aWNrX3N0YXJ0Lwo= readmeEtag: '"413113cdd192d35685a4bdae3fb50e3743c87d8e"' readmeLastModified: Fri, 15 Mar 2024 21:55:10 GMT repositoryId: 506151512 description: 'A client generator from openapi for python. ' created: '2022-06-22T07:56:40Z' updated: '2026-01-29T10:16:28Z' language: Python archived: false stars: 92 watchers: 3 forks: 39 owner: MarcoMuellner logo: https://avatars.githubusercontent.com/u/13886384?v=4 license: MIT repoEtag: '"f83e0d2428eab10edae1396b7d97fb28b4a2d657ffd2b0e5459fbea501acfb78"' repoLastModified: Thu, 29 Jan 2026 10:16:28 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/apis-guru/google-discovery-to-swagger v3: true id: f6231c27c4bcb653f01628db4e528f60 repositoryMetadata: base64Readme: >- IyBnb29nbGUtZGlzY292ZXJ5LXRvLXN3YWdnZXIKClNjcmlwdCBmb3IgY29udmVydGluZyBbR29vZ2xlIERpc2NvdmVyeSBmb3JtYXRdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2Rpc2NvdmVyeS92MS9yZWZlcmVuY2UvYXBpcykgaW50byBbT3BlbkFQSSAzLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKQoKIyMgVXNhZ2UKCklmIHlvdSBuZWVkIHRvIGNvbnZlcnQgc29tZSBBUElzIGZyb20gR29vZ2xlIERpc2NvdmVyeSBzZXJ2aWNlIEkgaGF2ZSBnb29kIG5ld3MgZm9yIHlvdSwgaXQgaXMgYWxyZWFkeSBbZG9uZV0oaHR0cHM6Ly9naXRodWIuY29tL0FQSXMtZ3VydS9vcGVuYXBpLWRpcmVjdG9yeS90cmVlL21hc3Rlci9BUElzL2dvb2dsZWFwaXMuY29tKSA6c21pbGU6CgpUaGlzIGxpYnJhcnkgd2FzIGRldmVsb3BlZCBvZiBhbm90aGVyIHByb2plY3Q6IFtBUElzLmd1cnVdKGh0dHBzOi8vZ2l0aHViLmNvbS9BUElzLWd1cnUvb3BlbmFwaS1kaXJlY3RvcnkpIC0gV2lraXBlZGlhIGZvciBXZWIgQVBJcy4KICAKKipJTVBPUlRBTlQqKjogZG9uJ3QgdXNlIEdpdGh1YiBSQVcgbGlua3MgYmVjYXVzZSB0aGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZS4KSW5zdGVhZCB5b3UgY2FuIGZpbmQgZGlyZWN0IGxpbmtzIGZvciBhbnkgcGFydGljdWxhciBBUEkgaW4gW3RoaXMgbGlzdF0oaHR0cHM6Ly9hcGkuYXBpcy5ndXJ1L3YyL2xpc3QuanNvbikuCkFsbCBPcGVuQVBJIGRvY3VtZW50cyBhcmUgdXBkYXRlZCwgdmFsaWRhdGVkIGFuZCBmaXhlZCBvbiBhIHdlZWtseSBiYXNpcy4KCklmIHlvdSBoYXZlIG5vbi1Hb29nbGUgQVBJIGRvY3VtZW50IGluIHRoaXMgZm9ybWF0IHBsZWFzZSBjb25zaWRlciBhZGRpbmcgaXQgdG8gdGhlIGNvbGxlY3Rpb246IGp1c3Qgb3BlbiBhbiBbaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9BUElzLWd1cnUvb3BlbmFwaS1kaXJlY3RvcnkvaXNzdWVzL25ldykgd2l0aCBsaW5rIHRvIGl0LgoKSWYgaXQgaXMgYW4gKippbnRlcm5hbCoqIEFQSSB5b3UgY2FuIHVzZSBbYXBpLXNwZWMtY29udmVydGVyXShodHRwczovL2dpdGh1Yi5jb20vbHVjeWJvdC9hcGktc3BlYy1jb252ZXJ0ZXIpIHRvb2wgdG8gZG8gY29udmVyc2lvbiBmb3IgeW91LgoKIyMgQ3JlZGl0cwoqIFtJdmFuIEdvbmNoYXJvdl0oaHR0cHM6Ly9naXRodWIuY29tL0l2YW5Hb25jaGFyb3YvKQoqIFtNaWtlIFJhbHBoc29uXShodHRwczovL2dpdGh1Yi5jb20vTWlrZVJhbHBoc29uLykKCiMjIExpY2Vuc2UKCk1JVAo= readmeEtag: '"85bbb68a69ef685ca9e08d6316f9ebd8d06fc658"' readmeLastModified: Mon, 20 Feb 2023 15:02:12 GMT repositoryId: 31059694 description: Script for converting Google Discovery format into OpenAPI (swagger) 3.0 created: '2015-02-20T10:13:13Z' updated: '2026-01-06T04:16:31Z' language: JavaScript archived: false stars: 69 watchers: 3 forks: 22 owner: APIs-guru logo: https://avatars.githubusercontent.com/u/10975548?v=4 license: MIT repoEtag: '"54fd5a8498c5901be55fde56684588239c452e93e4b55f2deee0bb5301c1c87b"' repoLastModified: Tue, 06 Jan 2026 04:16:31 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/a-h/rest v3: true id: e20761e913a0567699fb6cea88173185 repositoryMetadata: base64Readme: >- IyBSRVNUCgpEb2N1bWVudCBhIFJFU1QgQVBJIHdpdGggYW4gT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbi4KCiogQ29kZSwgbm90IGNvbmZpZ3VyYXRpb24uCiogTm8gbWFnaWMgY29tbWVudHMsIHRhZ3MsIG9yIGRlY29yYXRvcnMuCiogVXNlIHdpdGggb3Igd2l0aG91dCBhIEdvIHdlYiBmcmFtZXdvcmsuCiogUG9wdWxhdGVzIHNjaGVtYSBhdXRvbWF0aWNhbGx5IHVzaW5nIHJlZmxlY3Rpb24uCgojIyBXaHkgd291bGQgSSB3YW50IHRvIHVzZSB0aGlzPwoKKiBBZGQgT3BlbkFQSSBkb2N1bWVudGF0aW9uIHRvIGFuIEFQSS4KICAqIENyZWF0ZSBhIGBzd2FnZ2VyLmpzb25gIG9yIGBzd2FnZ2VyLnlhbWxgIGZpbGUuCiogU2VydmUgdGhlIFN3YWdnZXIgVUkgdG8gY3VzdG9tZXJzLgoKIyMgRXhhbXBsZXMKClNlZSB0aGUgWy4vZXhhbXBsZXNdKC4vZXhhbXBsZXMpIGRpcmVjdG9yeSBmb3IgY29tcGxldGUgZXhhbXBsZXMuCgojIyMgQ3JlYXRlIGFuIE9wZW5BUEkgMy4wIChzd2FnZ2VyKSBmaWxlCgpgYGBnbwovLyBDb25maWd1cmUgdGhlIG1vZGVscy4KYXBpIDo9IHJlc3QuTmV3QVBJKCJtZXNzYWdlcyIpCmFwaS5TdHJpcFBrZ1BhdGhzID0gW11zdHJpbmd7ImdpdGh1Yi5jb20vYS1oL3Jlc3QvZXhhbXBsZSIsICJnaXRodWIuY29tL2EtaC9yZXNwb25kIn0KCmFwaS5SZWdpc3Rlck1vZGVsKHJlc3QuTW9kZWxPZltyZXNwb25kLkVycm9yXSgpLCByZXN0LldpdGhEZXNjcmlwdGlvbigiU3RhbmRhcmQgSlNPTiBlcnJvciIpLCBmdW5jKHMgKm9wZW5hcGkzLlNjaGVtYSkgewogIHN0YXR1cyA6PSBzLlByb3BlcnRpZXNbInN0YXR1c0NvZGUiXQogIHN0YXR1cy5WYWx1ZS5XaXRoTWluKDEwMCkuV2l0aE1heCg2MDApCn0pCgphcGkuR2V0KCIvdG9waWMve2lkfSIpLgogIEhhc1BhdGhQYXJhbWV0ZXIoImlkIiwgcmVzdC5QYXRoUGFyYW17CiAgICBEZXNjcmlwdGlvbjogImlkIG9mIHRoZSB0b3BpYyIsCiAgICBSZWdleHA6ICAgICAgYFxkK2AsCiAgfSkuCiAgSGFzUmVzcG9uc2VNb2RlbChodHRwLlN0YXR1c09LLCByZXN0Lk1vZGVsT2ZbbW9kZWxzLlRvcGljXSgpKS4KICBIYXNSZXNwb25zZU1vZGVsKGh0dHAuU3RhdHVzSW50ZXJuYWxTZXJ2ZXJFcnJvciwgcmVzdC5Nb2RlbE9mW3Jlc3BvbmQuRXJyb3JdKCkpCgovLyBDcmVhdGUgdGhlIHNwZWNpZmljYXRpb24uCnNwZWMsIGVyciA6PSBhcGkuU3BlYygpCmlmIGVyciAhPSBuaWwgewogIGxvZy5GYXRhbGYoImZhaWxlZCB0byBjcmVhdGUgc3BlYzogJXYiLCBlcnIpCn0KCi8vIFdyaXRlIHRvIHN0ZG91dC4KZW5jIDo9IGpzb24uTmV3RW5jb2Rlcihvcy5TdGRvdXQpCmVuYy5TZXRJbmRlbnQoIiIsICIgIikKZW5jLkVuY29kZShzcGVjKQpgYGAKCiMjIyBTZXJ2ZSBBUEkgZG9jdW1lbnRhdGlvbiBhbG9uZ3NpZGUgeW91ciBBUEkKCmBgYGdvCi8vIENyZWF0ZSByb3V0ZXMuCnJvdXRlciA6PSBodHRwLk5ld1NlcnZlTXV4KCkKcm91dGVyLkhhbmRsZSgiL3RvcGljcyIsICZnZXQuSGFuZGxlcnt9KQpyb3V0ZXIuSGFuZGxlKCIvdG9waWMiLCAmcG9zdC5IYW5kbGVye30pCgphcGkgOj0gcmVzdC5OZXdBUEkoIm1lc3NhZ2VzIikKYXBpLlN0cmlwUGtnUGF0aHMgPSBbXXN0cmluZ3siZ2l0aHViLmNvbS9hLWgvcmVzdC9leGFtcGxlIiwgImdpdGh1Yi5jb20vYS1oL3Jlc3BvbmQifQoKLy8gUmVnaXN0ZXIgdGhlIGVycm9yIHR5cGUgd2l0aCBjdXN0b21pc2F0aW9ucy4KYXBpLlJlZ2lzdGVyTW9kZWwocmVzdC5Nb2RlbE9mW3Jlc3BvbmQuRXJyb3JdKCksIHJlc3QuV2l0aERlc2NyaXB0aW9uKCJTdGFuZGFyZCBKU09OIGVycm9yIiksIGZ1bmMocyAqb3BlbmFwaTMuU2NoZW1hKSB7CiAgc3RhdHVzIDo9IHMuUHJvcGVydGllc1sic3RhdHVzQ29kZSJdCiAgc3RhdHVzLlZhbHVlLldpdGhNaW4oMTAwKS5XaXRoTWF4KDYwMCkKfSkKCmFwaS5HZXQoIi90b3BpY3MiKS4KICBIYXNSZXNwb25zZU1vZGVsKGh0dHAuU3RhdHVzT0ssIHJlc3QuTW9kZWxPZltnZXQuVG9waWNzR2V0UmVzcG9uc2VdKCkpLgogIEhhc1Jlc3BvbnNlTW9kZWwoaHR0cC5TdGF0dXNJbnRlcm5hbFNlcnZlckVycm9yLCByZXN0Lk1vZGVsT2ZbcmVzcG9uZC5FcnJvcl0oKSkKCmFwaS5Qb3N0KCIvdG9waWMiKS4KICBIYXNSZXF1ZXN0TW9kZWwocmVzdC5Nb2RlbE9mW3Bvc3QuVG9waWNQb3N0UmVxdWVzdF0oKSkuCiAgSGFzUmVzcG9uc2VNb2RlbChodHRwLlN0YXR1c09LLCByZXN0Lk1vZGVsT2ZbcG9zdC5Ub3BpY1Bvc3RSZXNwb25zZV0oKSkuCiAgSGFzUmVzcG9uc2VNb2RlbChodHRwLlN0YXR1c0ludGVybmFsU2VydmVyRXJyb3IsIHJlc3QuTW9kZWxPZltyZXNwb25kLkVycm9yXSgpKQoKLy8gQ3JlYXRlIHRoZSBzcGVjLgpzcGVjLCBlcnIgOj0gYXBpLlNwZWMoKQppZiBlcnIgIT0gbmlsIHsKICBsb2cuRmF0YWxmKCJmYWlsZWQgdG8gY3JlYXRlIHNwZWM6ICV2IiwgZXJyKQp9CgovLyBBcHBseSBhbnkgZ2xvYmFsIGN1c3RvbWlzYXRpb24uCnNwZWMuSW5mby5WZXJzaW9uID0gInYxLjAuMC4iCnNwZWMuSW5mby5EZXNjcmlwdGlvbiA9ICJNZXNzYWdlcyBBUEkiCgovLyBBdHRhY2ggdGhlIFN3YWdnZXIgVUkgaGFuZGxlciB0byB5b3VyIHJvdXRlci4KdWksIGVyciA6PSBzd2FnZ2VydWkuTmV3KHNwZWMpCmlmIGVyciAhPSBuaWwgewogIGxvZy5GYXRhbGYoImZhaWxlZCB0byBjcmVhdGUgc3dhZ2dlciBVSSBoYW5kbGVyOiAldiIsIGVycikKfQpyb3V0ZXIuSGFuZGxlKCIvc3dhZ2dlci11aSIsIHVpKQpyb3V0ZXIuSGFuZGxlKCIvc3dhZ2dlci11aS8iLCB1aSkKCi8vIEFuZCBzdGFydCBsaXN0ZW5pbmcuCmZtdC5QcmludGxuKCJMaXN0ZW5pbmcgb24gOjgwODAuLi4iKQpmbXQuUHJpbnRsbigiVmlzaXQgaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N3YWdnZXItdWkgdG8gc2VlIEFQSSBkZWZpbml0aW9ucyIpCmZtdC5QcmludGxuKCJMaXN0ZW5pbmcgb24gOjgwODAuLi4iKQpodHRwLkxpc3RlbkFuZFNlcnZlKCI6ODA4MCIsIHJvdXRlcikKYGBgCgojIyBUYXNrcwoKIyMjIHRlc3QKCmBgYApnbyB0ZXN0IC4vLi4uCmBgYAoKIyMjIHJ1bi1leGFtcGxlCgpEaXI6IC4vZXhhbXBsZXMvc3RkbGliCgpgYGAKZ28gcnVuIG1haW4uZ28KYGBgCg== readmeEtag: '"ff454f37f0e4ee23fab1100a8417417d22a9cc88"' readmeLastModified: Sat, 04 May 2024 11:35:46 GMT repositoryId: 599199253 description: Generate OpenAPI 3.0 specifications from Go code. created: '2023-02-08T16:53:48Z' updated: '2025-12-12T13:16:31Z' language: Go archived: false stars: 74 watchers: 2 forks: 29 owner: a-h logo: https://avatars.githubusercontent.com/u/1029947?v=4 license: MIT repoEtag: '"7ebe203c2f0a52b0a831d2546eb18ecdbb47bfd98db89b7b364e4341a7436bdc"' repoLastModified: Fri, 12 Dec 2025 13:16:31 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/hh-h/aiohttp-swagger3 v3: true repositoryMetadata: base64Readme: >- YWlvaHR0cC1zd2FnZ2VyMwo9PT09PT09PT09PT09PT09CgouLiBpbWFnZTo6IGh0dHBzOi8vZ2l0aHViLmNvbS9oaC1oL2Fpb2h0dHAtc3dhZ2dlcjMvYWN0aW9ucy93b3JrZmxvd3MvY2kueWFtbC9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcgogICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vaGgtaC9haW9odHRwLXN3YWdnZXIzL2FjdGlvbnMKLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRodWIvaGgtaC9haW9odHRwLXN3YWdnZXIzL21hc3Rlci5zdmc/c3R5bGU9ZmxhdAogICA6dGFyZ2V0OiBodHRwczovL2NvZGVjb3YuaW8vZ2l0aHViL2hoLWgvYWlvaHR0cC1zd2FnZ2VyMz9icmFuY2g9bWFzdGVyCi4uIGltYWdlOjogaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL3B5L2Fpb2h0dHAtc3dhZ2dlcjMuc3ZnCiAgIDp0YXJnZXQ6IGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9weS9haW9odHRwLXN3YWdnZXIzCi4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9weXRob24tMy43JTJCLWJyaWdodGdyZWVuLnN2ZwogICA6dGFyZ2V0OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3B5dGhvbi0zLjclMkItYnJpZ2h0Z3JlZW4uc3ZnCi4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlJTIwc3R5bGUtYmxhY2stYmxhY2suc3ZnCiAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbWJ2L2JsYWNrCi4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2wvYWlvaHR0cC1zd2FnZ2VyMy5zdmcKICAgOnRhcmdldDogaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKQWJvdXQKPT09PT0KClBhY2thZ2UgZm9yIGRpc3BsYXlpbmcgc3dhZ2dlciBkb2NzIHZpYSBkaWZmZXJlbnQgVUkgYmFja2VuZHMgYW5kCm9wdGlvbmFsbHkgdmFsaWRhdGluZy9wYXJzaW5nIGFpb2h0dHAgcmVxdWVzdHMgdXNpbmcgc3dhZ2dlcgpzcGVjaWZpY2F0aW9uIDMuMCwga25vd24gYXMgT3BlbkFQSTMuCgpTdXBwb3J0ZWQgVUkgYmFja2VuZHMKPT09PT09PT09PT09PT09PT09PT09CgpNdWx0aXBsZSBVSSBiYWNrZW5kcyBjYW4gYmUgdXNlZCBvciBVSSBiYWNrZW5kIGNhbiBiZSBkaXNhYmxlZCBhdCBhbGwgaWYgb25seSBuZWVkZWQKdmFsaWRhdGlvbiB3aXRob3V0IGJlaW5nIGFibGUgdG8gdmlldyBkb2N1bWVudGF0aW9uLgoKLSBTd2FnZ2VyIFVJIC0gaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkKLSBSZURvYyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jCi0gUmFwaURvYyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9tcmluOS9SYXBpRG9jCgpEb2N1bWVudGF0aW9uCj09PT09PT09PT09PT0KCmh0dHBzOi8vYWlvaHR0cC1zd2FnZ2VyMy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvCgpEaXNhYmxlIHZhbGlkYXRpb24KPT09PT09PT09PT09PT09PT09Cgp8IFBhc3MgYGB2YWxpZGF0ZT1GYWxzZWBgIHRvIGBgU3dhZ2dlckRvY3NgYC9gYFN3YWdnZXJGaWxlYGAgY2xhc3MsIHRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgCnwgQWxzbywgc29tZXRpbWVzIHZhbGlkYXRpb24gaGFzIHRvIGJlIGRpc2FibGVkIGZvciBhIHJvdXRlLAogIHRvIGRvIHRoaXMgeW91IGhhdmUgdG8gcGFzcyBgYHZhbGlkYXRlPUZhbHNlYGAgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcm91dGUuCnwgZXguIGBgd2ViLnBvc3QoIi9yb3V0ZSIsIGhhbmRsZXIsIHZhbGlkYXRlPUZhbHNlKWBgLCB0aGUgZGVmYXVsdCBpcyBgYFRydWVgYAoKUmVxdWlyZW1lbnRzCj09PT09PT09PT09PQoKLSBweXRob24gPj0gMy45Ci0gYWlvaHR0cCA+PSAzLjguMAotIHB5eWFtbCA+PSA1LjQKLSBhdHRycyA+PSAxOS4zLjAKLSBweXRob24tZmFzdGpzb25zY2hlbWEgPj0gMi4xNS4wCi0gcmZjMzMzOS12YWxpZGF0b3IgPj0gMC4xLjQKCkxpbWl0YXRpb25zCj09PT09PT09PT09CgotICBvbmx5IGFwcGxpY2F0aW9uL2pzb24gYW5kIGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCBzdXBwb3J0ZWQKICAgZm9yIG5vdywgYnV0IHlvdSBjYW4gY3JlYXRlIG93bgogICBgaGFuZGxlciA8aHR0cHM6Ly9naXRodWIuY29tL2hoLWgvYWlvaHR0cC1zd2FnZ2VyMy90cmVlL21hc3Rlci9leGFtcGxlcy9jdXN0b21faGFuZGxlcj5gX18KLSAgaGVhZGVyL3F1ZXJ5IHBhcmFtZXRlcnMgb25seSBzdXBwb3J0ZWQgc2ltcGxlL2Zvcm0gYXJyYXkKICAgc2VyaWFsaXphdGlvbiwgZS5nLiAxLDIsMyw0Ci0gIHNlZSBUT0RPIGJlbG93CgpJbnN0YWxsYXRpb24KPT09PT09PT09PT09CgpgYHBpcCBpbnN0YWxsIGFpb2h0dHAtc3dhZ2dlcjNgYAoKRXhhbXBsZQo9PT09PT09CgouLiBjb2RlOjogcHl0aG9uCgogICAgZnJvbSBhaW9odHRwIGltcG9ydCB3ZWIKICAgIGZyb20gYWlvaHR0cF9zd2FnZ2VyMyBpbXBvcnQgU3dhZ2dlckRvY3MsIFN3YWdnZXJJbmZvLCBTd2FnZ2VyVWlTZXR0aW5ncwoKICAgIGFzeW5jIGRlZiBnZXRfb25lX3BldChyZXF1ZXN0OiB3ZWIuUmVxdWVzdCwgcGV0X2lkOiBpbnQpIC0+IHdlYi5SZXNwb25zZToKICAgICAgICAiIiIKICAgICAgICBPcHRpb25hbCByb3V0ZSBkZXNjcmlwdGlvbgogICAgICAgIC0tLQogICAgICAgIHN1bW1hcnk6IEluZm8gZm9yIGEgc3BlY2lmaWMgcGV0CiAgICAgICAgdGFnczoKICAgICAgICAgIC0gcGV0cwogICAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgICAtIG5hbWU6IHBldF9pZAogICAgICAgICAgICBpbjogcGF0aAogICAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgICAgICBkZXNjcmlwdGlvbjogVGhlIGlkIG9mIHRoZSBwZXQgdG8gcmV0cmlldmUKICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgICAgICBmb3JtYXQ6IGludDMyCiAgICAgICAgcmVzcG9uc2VzOgogICAgICAgICAgJzIwMCc6CiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBFeHBlY3RlZCByZXNwb25zZSB0byBhIHZhbGlkIHJlcXVlc3QKICAgICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgICAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0IgogICAgICAgICIiIgogICAgICAgIGlmIHBldF9pZCBub3QgaW4gcmVxdWVzdC5hcHBbJ3N0b3JhZ2UnXToKICAgICAgICAgICAgcmFpc2Ugd2ViLkhUVFBOb3RGb3VuZCgpCiAgICAgICAgcmV0dXJuIHdlYi5qc29uX3Jlc3BvbnNlKHJlcXVlc3QuYXBwWydzdG9yYWdlJ11bcGV0X2lkXSkKCiAgICBkZWYgbWFpbigpOgogICAgICAgIGFwcCA9IHdlYi5BcHBsaWNhdGlvbigpCiAgICAgICAgc3dhZ2dlciA9IFN3YWdnZXJEb2NzKAogICAgICAgICAgICBhcHAsCiAgICAgICAgICAgIHN3YWdnZXJfdWlfc2V0dGluZ3M9U3dhZ2dlclVpU2V0dGluZ3MocGF0aD0iL2RvY3MvIiksCiAgICAgICAgICAgIGluZm89U3dhZ2dlckluZm8oCiAgICAgICAgICAgICAgICB0aXRsZT0iU3dhZ2dlciBQZXRzdG9yZSIsCiAgICAgICAgICAgICAgICB2ZXJzaW9uPSIxLjAuMCIsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGNvbXBvbmVudHM9ImNvbXBvbmVudHMueWFtbCIKICAgICAgICApCiAgICAgICAgc3dhZ2dlci5hZGRfcm91dGVzKFsKICAgICAgICAgICAgd2ViLmdldCgiL3BldHMve3BldF9pZH0iLCBnZXRfb25lX3BldCksCiAgICAgICAgXSkKICAgICAgICBhcHBbJ3N0b3JhZ2UnXSA9IHt9CiAgICAgICAgd2ViLnJ1bl9hcHAoYXBwKQoKTW9yZSBgZXhhbXBsZXMgPGh0dHBzOi8vZ2l0aHViLmNvbS9oaC1oL2Fpb2h0dHAtc3dhZ2dlcjMvdHJlZS9tYXN0ZXIvZXhhbXBsZXM+YF8KCkhvdyBpdCBoZWxwcwo9PT09PT09PT09PT0KCi4uIGltYWdlOjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2hoLWgvYWlvaHR0cC1zd2FnZ2VyMy9tYXN0ZXIvZG9jcy9fc3RhdGljL2NvbXBhcmlzb24ucG5nCgpGZWF0dXJlcwo9PT09PT09PQoKLSBhcHBsaWNhdGlvbi9qc29uCi0gYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIChleGNlcHQgYXJyYXkgYW5kIG9iamVjdCkKLSBpdGVtcwotIHByb3BlcnRpZXMKLSBwYXR0ZXJuCi0gcmVxdWlyZWQKLSBlbnVtCi0gbWluaW11bSwgbWF4aW11bQotIGV4Y2x1c2l2ZU1pbmltdW0sIGV4Y2x1c2l2ZU1heGltdW0KLSBtaW5MZW5ndGgsIG1heExlbmd0aAotIG1pbkl0ZW1zLCBtYXhJdGVtcwotIHVuaXF1ZUl0ZW1zCi0gbWluUHJvcGVydGllcywgbWF4UHJvcGVydGllcwotIGRlZmF1bHQgKG9ubHkgcHJpbWl0aXZlcykKLSBhZGRpdGlvbmFsUHJvcGVydGllcwotIG51bGxhYmxlCi0gcmVhZE9ubHkKLSBhbGxPZiwgb25lT2YsIGFueU9mCi0gc3RyaW5nIGZvcm1hdHM6IGRhdGUsIGRhdGUtdGltZSwgYnl0ZSwgZW1haWwsIHV1aWQsIGhvc3RuYW1lLCBpcHY0LCBpcHY2Ci0gY3VzdG9tIHN0cmluZyBmb3JtYXQgdmFsaWRhdG9ycwoKVE9ETyAocmFpc2UgYW4gaXNzdWUgaWYgbmVlZGVkKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgotIG11bHRpcGxlT2YKLSBub3QKLSBhbGxvd0VtcHR5VmFsdWUKLSBDb21tb24gUGFyYW1ldGVycyBmb3IgQWxsIE1ldGhvZHMgb2YgYSBQYXRoIChzcGVjIGZpbGUgb25seSkKLSBtb3JlIHNlcmlhbGl6YXRpb24gbWV0aG9kcywgc2VlOiBodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL3NlcmlhbGl6YXRpb24vCi0gZW5jb2RpbmcKLSBmb3JtIGRhdGEgc2VyaWFsaXphdGlvbiAoYXJyYXksIG9iamVjdCkKLSBkZWZhdWx0IChhcnJheSwgb2JqZWN0KQo= readmeEtag: '"953fe68918e4be2145780da7762aeaba9d487c29"' readmeLastModified: Tue, 11 Feb 2025 10:48:58 GMT repositoryId: 157923095 description: >- Library for swagger documentation browsing and validating aiohttp requests using swagger specification 3.0 created: '2018-11-16T21:26:37Z' updated: '2025-11-05T06:40:04Z' language: Python archived: false stars: 61 watchers: 1 forks: 21 owner: hh-h logo: https://avatars.githubusercontent.com/u/8166963?v=4 license: Apache-2.0 repoEtag: '"8c3d60c8d4021fba0b025d2000661580d431462503a3aab3774f888a8593676a"' repoLastModified: Wed, 05 Nov 2025 06:40:04 GMT foundInMaster: true category: Server Implementations id: f215ffe0267c42662e80c69062c4948d - source: openapi3 tags repository: https://github.com/italia/api-oas-checker v3: true repositoryMetadata: base64Readme: >- IyBDaGVja2VyIHBlciBBUEkgY29uZm9ybWkgYWwgTW9kZWxsbyBkaSBJbnRlcm9wZXJhYmlsaXTDoAoKWyFbSm9pbiB0aGUgI2FwaSBjaGFubmVsXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1NsYWNrLSUyM2FwaS1ibHVlLnN2Zz9sb2dvPXNsYWNrKV0oaHR0cHM6Ly9kZXZlbG9wZXJzaXRhbGlhLnNsYWNrLmNvbS9tZXNzYWdlcy9DREtCWVRHNzQpClshW0FQSSBvbiBmb3J1bS5pdGFsaWEuaXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRm9ydW0taW50ZXJvcGVyYWJpbGl0JUMzJUEwLWJsdWUuc3ZnKV0oaHR0cHM6Ly9mb3J1bS5pdGFsaWEuaXQvYy9waWFuby10cmllbm5hbGUvaW50ZXJvcGVyYWJpbGl0YSkKWyFbUkVBRE1FIGluIEVuZ2xpc2hdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvUmVhZG1lLUVuZ2xpc2gtZGFya2dyZWVuLnN2ZyldKFJFQURNRS5lbi5tZCkKCvCfkqEgUXVlc3RvIHJlcG9zaXRvcnkgY29udGllbmUgdW4gY2hlY2tlciBpbi1icm93c2VyIGNoZSB2ZXJpZmljYSBhbGN1bmUgZGVsbGUgcmVnb2xlIHBlciBsZSBBUEkgUkVTVCBpbmRpY2F0ZSBuZWwgTW9kZWxsbyBkaSBJbnRlcm9wZXJhYmlsaXTDoC4KCvCfl4LvuI8gSSBwcm9nZXR0aSBhc3NvY2lhdGkgc29ubyBpbmRpY2F0aSBuZWxsJ1tBUEkgU3RhcnRlciBLaXRdKGh0dHBzOi8vZ2l0aHViLmNvbS90ZWFtZGlnaXRhbGUvYXBpLXN0YXJ0ZXIta2l0KS4KCvCfkajwn4+74oCN8J+SuyBMJ2FwcGxpY2F6aW9uZSBvbi1saW5lIHByb250YSBhbGwndXNvIMOoIGRpc3BvbmliaWxlIFtxdWldKGh0dHBzOi8vaXRhbGlhLmdpdGh1Yi5pby9hcGktb2FzLWNoZWNrZXIvKS4KCiMjIPCfk4sgUmVxdWlzaXRpCgotIE5vZGUuanMgMTYrICh2ZWRpIGAubnZtcmNgKQotIFlhcm4gKGNvbnNpZ2xpYXRvKSBvIG5wbQotIERvY2tlciAob3B6aW9uYWxlLCBwZXIgZXNlZ3VpcmUgaW4gY29udGFpbmVyKQoKIyMg8J+UjSBFc2VndWlyZSBpbCBjaGVjayBkZWxsZSBBUEkKCklsIG1vZG8gcGnDuSBzZW1wbGljZSBwZXIgY29udHJvbGxhcmUgdW4nQVBJIMOoIGRpIHV0aWxpenphcmUgcXVlc3RvIGNoZWNrZXIsIGluc2VyZW5kbyBpbCBjb250ZW51dG8gZGVsbCdBUEkgZSBzZWxlemlvbmFuZG8gdW4gc2V0IGRpIHJlZ29sZSAoZGkgZGVmYXVsdDogX0l0YWxpYW4gR3VpZGVsaW5lcyBGdWxsXykuIENsaWNjYW5kbyBzdSAiQ2hlY2siIHNhcsOgIHBvc3NpYmlsZSBlc2FtaW5hcmUgdHV0dGkgZ2xpIGVycm9yaSwgd2FybmluZywgaW5mbyBlIGhpbnQgcmlsZXZhdGkgZGEgU3BlY3RyYWwuCgrwn5OMICoqUGVyIGxhIHB1YmJsaWNhemlvbmUgZGkgdW5hIEFQSSBzdWwgQ2F0YWxvZ28gUERORCoqLCBlc2VndWlyZSBsJ09BUyBDaGVja2VyIGNvbiBpbCBwcm9maWxvICoqX0l0YWxpYW4gR3VpZGVsaW5lcyBGdWxsXyoqIGUgdmVyaWZpY2FyZSBjaGUgbG8gX3lhbWxfIHByZXNlbnRpICoqMCBlcnJvcmkqKiBlZCBhdXNwaWNhYmlsbWVudGUgKiowIHdhcm5pbmdzKiouCgpJbiBhbHRlcm5hdGl2YSwgw6ggcG9zc2liaWxlIGZhcmUgaWwgY2hlY2sgZGVsbGUgQVBJIHRyYW1pdGUgSURFLCBDTEkgZSBHaXRIdWIgQWN0aW9uOiBzaSByaW1hbmRhIGFsIHNlZ3VlbnRlIFtSRUFETUVdKGh0dHBzOi8vZ2l0aHViLmNvbS9pdGFsaWEvYXBpLW9hcy1jaGVja2VyLXJ1bGVzL2Jsb2IvbWFpbi9SRUFETUUubWQpIGRlbCByZXBvIFthcGktb2FzLWNoZWNrZXItcnVsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9pdGFsaWEvYXBpLW9hcy1jaGVja2VyLXJ1bGVzKSBwZXIgdHV0dGUgbGUgaW5mb3JtYXppb25pLgoKIyMg8J+TpiBSZWdvbGUKCkxlIHJlZ29sZSBjaGUgaWwgY2hlY2tlciB1dGlsaXp6YSBzb25vIGdlc3RpdGUgaW4gdW4gcmVwb3NpdG9yeSBkZWRpY2F0bzogW2FwaS1vYXMtY2hlY2tlci1ydWxlc10oaHR0cHM6Ly9naXRodWIuY29tL2l0YWxpYS9hcGktb2FzLWNoZWNrZXItcnVsZXMpLgoKSSBydWxlc2V0IGRpc3BvbmliaWxpIHNvbm8gc2NhcmljYWJpbGkgZGFsbGUgW3JlbGVhc2UgZGVsIHJlcG9zaXRvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9pdGFsaWEvYXBpLW9hcy1jaGVja2VyLXJ1bGVzL3JlbGVhc2VzL2xhdGVzdCk6Ci0gW3NwZWN0cmFsLnltbF0oaHR0cHM6Ly9naXRodWIuY29tL2l0YWxpYS9hcGktb2FzLWNoZWNrZXItcnVsZXMvcmVsZWFzZXMvbGF0ZXN0L2Rvd25sb2FkL3NwZWN0cmFsLnltbCksIG8gX0l0YWxpYW4gR3VpZGVsaW5lcyBGdWxsXywgcXVlbGxlIGRpIGRlZmF1bHQKLSBbc3BlY3RyYWwtZ2VuZXJpYy55bWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9pdGFsaWEvYXBpLW9hcy1jaGVja2VyLXJ1bGVzL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC9zcGVjdHJhbC1nZW5lcmljLnltbCksIG8gX0Jlc3QgUHJhY3RpY2VzIE9ubHlfCi0gW3NwZWN0cmFsLXNlY3VyaXR5LnltbF0oaHR0cHM6Ly9naXRodWIuY29tL2l0YWxpYS9hcGktb2FzLWNoZWNrZXItcnVsZXMvcmVsZWFzZXMvbGF0ZXN0L2Rvd25sb2FkL3NwZWN0cmFsLXNlY3VyaXR5LnltbCksIG8gX0V4dHJhIFNlY3VyaXR5IENoZWNrc18KLSBbc3BlY3RyYWwtZnVsbC55bWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9pdGFsaWEvYXBpLW9hcy1jaGVja2VyLXJ1bGVzL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC9zcGVjdHJhbC1mdWxsLnltbCksIG8gX0l0YWxpYW4gR3VpZGVsaW5lcyBGdWxsICsgRXh0cmEgU2VjdXJpdHkgQ2hlY2tzXwoKIyMg8J+agCBBdnZpYXJlIGxhIHdlYiBhcHAgaW4gbG9jYWxlCgpRdWVzdGEgd2ViIGFwcCDDqCBiYXNhdGEgc3VsbGEgbGlicmVyaWEgUmVhY3QgZSB1c2EgV2VicGFjayBwZXIgZ2VuZXJhcmUgaWwgYnVuZGxlIGRlbGwnYXBwbGljYXppb25lIGNvbiBpbCBzdXBwb3J0byBkaSBCYWJlbCBwZXIgdHJhbnNwaWxhcmUgaWwgY29kaWNlIEphdmFTY3JpcHQuCgpQZXIgYXZ2aWFyZSBsJ2FwcGxpY2F6aW9uZToKCmBgYGJhc2gKJCB5YXJuCiQgeWFybiBzdGFydApgYGAKCkluIGFsdGVybmF0aXZhOgoKYGBgYmFzaAokIGRvY2tlci1jb21wb3NlIHVwIC0tYnVpbGQgc3RhcnQKYGBgCgplIGFsIHRlcm1pbmUgZGVsbGEgY29tcGlsYXppb25lIGNvbGxlZ2Fyc2kgYSBodHRwOi8vbG9jYWxob3N0OjMwMDAKCiMjIPCfp6ogVGVzdAoKUGVyIGVzZWd1aXJlIGkgdGVzdDoKCmBgYGJhc2gKJCB5YXJuIHRlc3QKYGBgCgojIyDwn5OaIERvY3VtZW50YXppb25lIGUgSW50ZWdyYXppb25pCgotICoqTW9kZWxsbyBkaSBJbnRlcm9wZXJhYmlsaXTDoCoqOiBbTGluZWUgZ3VpZGEgdWZmaWNpYWxpXShodHRwczovL2RvY3MuaXRhbGlhLml0L2l0YWxpYS9waWFuby10cmllbm5hbGUtaWN0L2xnLW1vZGVsbG9pbnRlcm9wZXJhYmlsaXRhLWRvY3MpCi0gKipSZWdvbGUgY29tcGxldGUqKjogUmVwb3NpdG9yeSBbYXBpLW9hcy1jaGVja2VyLXJ1bGVzXShodHRwczovL2dpdGh1Yi5jb20vaXRhbGlhL2FwaS1vYXMtY2hlY2tlci1ydWxlcykKLSAqKkdpdEh1YiBBY3Rpb24qKjogRXNlbXBpbyBkaSBbY29uZmlndXJhemlvbmUgcGVyIENJL0NEXShodHRwczovL2dpdGh1Yi5jb20vaXRhbGlhL2FwaS1vYXMtY2hlY2tlci1ydWxlcy9ibG9iL21haW4vZG9jcy9yZXNvdXJjZXMvZ2l0aHViLWFjdGlvbi55bWwpCi0gKipBUEkgU3RhcnRlciBLaXQqKjogW1Byb2dldHRpIGNvcnJlbGF0aV0oaHR0cHM6Ly9naXRodWIuY29tL3RlYW1kaWdpdGFsZS9hcGktc3RhcnRlci1raXQpCgojIyDinI3wn4+7IENvbnRyaWJ1dGkKCkdyYXppZSBhIFBhb2xvIEZhbG9tbywKRnJhbmNlc2NvIE1hcmludWNjaSwKR2l1c2VwcGUgRGUgTWFyY28sCkFuZHJlYSBNaXN1cmFjYSwKU2ltb25lIEVzcG9zaXRvLApSb2NjbyBBZmZpbml0bwplIFZpbmNlbnpvIENoaWFuZXNlIHBlciBpIHN1Z2dlcmltZW50aSBlZCBpIGNvbnRyaWJ1dGkhCgrimpnvuI8gSWwgY2hlY2tlciDDqCBiYXNhdG8gc3UgW1NwZWN0cmFsXShodHRwczovL2dpdGh1Yi5jb20vc3RvcGxpZ2h0aW8vc3BlY3RyYWwpLgoKPiAjIyMgUGVyY2jDqSBTcGVjdHJhbD8g8J+klAo+IExvIGFiYmlhbW8gcHJlZmVyaXRvIHJpc3BldHRvIGFkIGFsdHJpIHNvZnR3YXJlIHBlcmNow6kKbm9uIHJpY2hpZWRlIGwndXRpbGl6em8gZGkgZGF0YWJhc2UgbyBjb21wb25lbnRpIHNlcnZlciBhIGN1aSBpbnZpYXJlIGkgdHVvaSBkb2N1bWVudGkgT3BlbkFQSSAoT0FTIENoZWNrZXIgw6ggdW5hIHBhZ2luYSBzdGF0aWNhIGRlcGxveWF0YSBzdSBHaXRIdWIgUGFnZXMpIGUgcGVyY2jDqSBsYSBtYWdnaW9yIHBhcnRlIGRlbGxlIHJlZ29sZSDDqCBkZXNjcml0dGEgdHJhbWl0ZSBmaWxlIHN0YXRpY2kgKGUuZy4gWUFNTCk6CnRyYW5uZSBpbiBjYXNpIHNwZWNpZmljaSAoZXMuIHNldCBkaSByZWdvbGUgcGVyIGxhIHNlY3VyaXR5KSwgbm9uIMOoIG5lY2Vzc2FyaW8gcXVpbmRpIGVzZWd1aXJlIGNvZGljZSBKYXZhU2NyaXB0LiBJbm9sdHJlLCBnbGkgdXRlbnRpIHBvc3Nvbm8gc2VtcHJlIGxpbWl0YXJzaSBhZCBpbXBvcnRhcmUgbGUgc29sZSByZWdvbGUgc3RhdGljaGUuCj4KPiBMZSBhbHRlcm5hdGl2ZSB2YWx1dGF0ZSwgdWd1YWxtZW50ZSB2YWxpZGUsIHNvbm86Cj4gLSBbWmFsbHldKGh0dHBzOi8vZ2l0aHViLmNvbS96YWxhbmRvL3phbGx5KSBoYSBiaXNvZ25vIGRpIHVuIGRhdGFiYXNlIGUgbm9uIMOoIHBvc3NpYmlsZSBmYXJuZSB1biB3ZWJwYWNrYWdlOwo+IC0gW1NwZWNjeV0oaHR0cHM6Ly9naXRodWIuY29tL3dld29yay9zcGVjY3kpIHBhcmUgc3VwcG9ydGFyZSBzb2xvIHJlZ29sZSBpbiBKYXZhU2NyaXB0LCBtZW50cmUgcXVlc3RvIGNoZWNrZXIgdXRpbGl6emEgcGVyIGxvIHBpw7kgZGVpIGZpbGUgWUFNTCBzdGF0aWNpLgo= readmeEtag: '"ea499b9abd9854b72d3f4a4a19d54783cd8a86f6"' readmeLastModified: Mon, 01 Dec 2025 14:50:56 GMT repositoryId: 244353016 description: An OpenAPI 3 checker based on spectral. created: '2020-03-02T11:23:30Z' updated: '2026-02-05T15:01:48Z' language: JavaScript archived: false stars: 68 watchers: 7 forks: 27 owner: italia logo: https://avatars.githubusercontent.com/u/15377824?v=4 license: NOASSERTION repoEtag: '"4052731b21dff0bbe161b1e2122d55336a87657f32f1e07f02fd3cca46e31ffd"' repoLastModified: Thu, 05 Feb 2026 15:01:48 GMT foundInMaster: true category: Description Validators id: d0d29c360728cda0cf8a4698f3c79f4b - source: openapi3 tags repository: https://github.com/sideko-inc/sideko v3: true id: 233ad37dec563fa65e5320d96629990b repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiA8YSBocmVmPSJodHRwczovL3NpZGVrby5kZXYiPgo8aW1nIHNyYz0iaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3NpZGVrby5hcHBzcG90LmNvbS9wdWJsaWNfYXNzZXRzL3dlYnNpdGVfYXNzZXRzL2xvZ28tc3ltYm9sLnN2ZyIgaGVpZ2h0PSI5NiI+CjxoMyBhbGlnbj0iY2VudGVyIj5TaWRla288L2gzPgo8L2E+CjwvcD4KPHAgYWxpZ249ImNlbnRlciI+CiBBdXRvbWF0ZSB5b3VyIEFQSSBXb3JrIGFuZCBBY2NlbGVyYXRlIEludGVncmF0aW9ucwo8L3A+CjxwIGFsaWduPSJjZW50ZXIiPgo8YSBocmVmPSJodHRwczovL3NpZGVrby5kZXYiPjxzdHJvbmc+V2Vic2l0ZTwvc3Ryb25nPjwvYT4gwrcKPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnNpZGVrby5kZXYiPjxzdHJvbmc+RG9jdW1lbnRhdGlvbjwvc3Ryb25nPjwvYT4KPC9wPgoKIyMgT3BlbkFQSSAtPiBEb3plbnMgb2YgVG9vbHMKLSDwn5qAICoqU0RLcyoqIHdpdGggdHlwZXMsIHRlc3RzLCBhdXRoZW50aWNhdGlvbiwgYW5kIGNvZGUgc25pcHBldHMKLSDwn5SEICoqTW9jayBTZXJ2ZXJzKiogdGhhdCBtaW1pYyBBUEkgYmVoYXZpb3IKLSDwn5OaICoqQVBJIERvY3VtZW50YXRpb24qKiB0aGF0IHN0YXlzIHVwIHRvIGRhdGUgYXV0b21hdGljYWxseQotIPCfkrsgKipDTEkgVG9vbHMqKiBmb3Igc2ltcGxlIEFQSSBpbnRlcmFjdGlvbnMKCiMjIEluc3RhbGxhdGlvbgoKCmBgYGJhc2gKIyDwn42PIG1hY09TCmJyZXcgaW5zdGFsbCBzaWRla28taW5jL3RhcC9zaWRla28KCiMg8J+QjSBweXRob24gLSBweXBpCnBpcCBpbnN0YWxsIHNpZGVrby1weQoKIyDwn5OmIGpzIC0gbnBtCm5wbSBpbnN0YWxsIC1nIEBzaWRla28vY2xpCgojIOKaoSBjdXJsCmN1cmwgLWZzU0wgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1NpZGVrby1JbmMvc2lkZWtvL21haW4vaW5zdGFsbC5zaCB8IHNoCmBgYAoKCiMjIFF1aWNrc3RhcnQgLSBQcmVtaXVtIFNES3MgaW4gU2Vjb25kcwpgYGBiYXNoCiMgYXV0aGVudGljYXRlICh1c2VzIG5hdGl2ZSBrZXljaGFpbiB0byBzdG9yZSBjcmVkZW50aWFscyBvbiBob3N0KQpzaWRla28gbG9naW4KCiMgaW50ZXJhY3RpdmVseSBjcmVhdGUgc2RrcwpzaWRla28gc2RrIGluaXQKYGBgCgojIyBMb2NhbCBBdXRoZW50aWNhdGlvbgpUaGlzIENMSSB1dGlsaXplcyB5b3VyIGNvbXB1dGVyJ3MgbmF0aXZlIHNlY3VyZSBzdG9yZToKLSBtYWNPUzogS2V5Y2hhaW4KLSBMaW51eDoga2V5dXRpbHMKLSBXaW5kb3dzOiBDcmVkZW50aWFsIE1hbmFnZXIKClRvIGF1dGhlbnRpY2F0ZSBsb2NhbGx5IHJ1bjogYGBgc2lkZWtvIGxvZ2luYGBgCgoKIyMgQXV0aGVudGljYXRpbmcgaW4gQ0kvQ0QKU2V0IGBTSURFS09fQVBJX0tFWWAgZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gQ0kvQ0QuCjEuIFdpdGggeW91ciBvd24gQVBJIGtleSBydW46IGBzaWRla28gYWNjb3VudCBnZXQtbXktYXBpLWtleWAKMi4gV2l0aCBhIHNlcnZpY2UgYWNjb3VudCBbc2VlIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5zaWRla28uZGV2L3NpZGVrby1wbGF0Zm9ybS9zZXJ2aWNlLWFjY291bnRzKQoKIyBSZXNvdXJjZXMKLSBb8J+TmCBDb21wbGV0ZSBDTEkgUmVmZXJlbmNlIERvY3NdKC4vZG9jcy9DTEkubWQpCi0gW/Cfk50gUmVwb3J0IGFuIElzc3VlXShodHRwczovL2dpdGh1Yi5jb20vU2lkZWtvLUluYy9zaWRla28vaXNzdWVzL25ldz90ZW1wbGF0ZT1nZW5lcmF0aW9uLWJ1Zy5tZCkKLSBb4pqW77iPIExpY2Vuc2VdKC4vTElDRU5TRSkKLSBTaGVsbCBhdXRvY29tcGxldGU6IGBzaWRla28gY29uZmlnIGF1dG9jb21wbGV0ZSAtLXNoZWxsICh5b3VyIHNoZWxsKWAgKG11c3QgcnVuIHRoaXMgY29tbWFuZCB3aXRoIGVhY2ggU2lkZWtvIENMSSB1cGRhdGUpCgotLS0KCjwvZGV0YWlscz4KCjxkZXRhaWxzPgo8c3VtbWFyeT5MZWdhY3kgQ0xJIEluc3RhbGxhdGlvbnM8L3N1bW1hcnk+CgpgYGBiYXNoCiMgdmlhIGN1cmwKY3VybCAtZnNTTCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vU2lkZWtvLUluYy9zaWRla28vdjAuMTAuMi9pbnN0YWxsLnNoIHwgc2gKCiMgdmlhIHBpcApwaXAgaW5zdGFsbCBzaWRla28tcHk9PTAuMTAuMgpgYGAKPC9kZXRhaWxzPgo= readmeEtag: '"2d7f5bbe89e89fd3c19054f60df47a445384868f"' readmeLastModified: Tue, 19 Aug 2025 20:45:41 GMT repositoryId: 699872484 description: Generate SDKs and docs for your API created: '2023-10-03T14:04:44Z' updated: '2025-09-21T02:32:08Z' language: Rust archived: false stars: 88 watchers: 5 forks: 3 owner: Sideko-Inc logo: https://avatars.githubusercontent.com/u/122366043?v=4 license: NOASSERTION repoEtag: '"0f04d5aca02f9d54a99ce8b354a103b03665967362c5f6e560f06e103e0bddb3"' repoLastModified: Sun, 21 Sep 2025 02:32:08 GMT category: SDK foundInMaster: true oldLocations: - https://github.com/sideko-inc/sdk-generator - source: openapi3 tags repository: https://github.com/apis-guru/aws2openapi v3: true repositoryMetadata: base64Readme: >- IyBhd3Myb3BlbmFwaQpBbWF6b24gV2ViIFNlcnZpY2VzIEFQSSBkZXNjcmlwdGlvbiB0byBPcGVuQVBJIDMuMCBzcGVjaWZpY2F0aW9uCgojIyBXb3JrIGluIHByb2dyZXNzIC0gYmV0YSBxdWFsaXR5CgojIyMgSGFuZGxlcyBhbGwgY3VycmVudCAodjIpIEFXUyBqc29uIGFuZCB4bWwgc3BlY2lmaWNhdGlvbnMKClJlc3VsdGFudCBPcGVuQXBpIHNwZWNpZmljYXRpb25zIHBhc3MgW211bHRpcGxlXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci9zY2hlbWFzL3YzLjAvc2NoZW1hLnlhbWwpIFt2YWxpZGF0b3JzXShodHRwczovL2dpdGh1Yi5jb20vTWVybWFkZS9vYXMta2l0KQoKIVtzY3JlZW5zaG90XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQVBJcy1ndXJ1L2F3czJvcGVuYXBpL21haW4vZG9jcy9zY3JlZW5zaG90LnBuZykKClRoZSByZXN1bHRzIG9mIHRoaXMgY29udmVydGVyIGNhbiBiZSBmb3VuZCBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL0FQSXMtZ3VydS9vcGVuYXBpLWRpcmVjdG9yeS90cmVlL21hc3Rlci9BUElzL2FtYXpvbmF3cy5jb20pCgojIyMgVE9ETyAqKmhlbHAgd2FudGVkKioKCiogfn5GaXggaW5wdXQgaGVhZGVyIHBhcmFtZXRlciBzZWxlY3Rpdml0eX5+Ciogfn5Qcm9jZXNzIHByb3RvY29sOmVjMn5+Ciogfn5BdXRoZW50aWNhdGlvbn5+IFlvdSB3aWxsIGhhdmUgdG8gY2FsY3VsYXRlIEhNQUMgaGVhZGVycyBtYW51YWxseQoqIH5+cGFnaW5hdGlvbn5+Ciogfn5FeGFtcGxlc35+Ciogfn5XYWl0ZXJzfn4gKGFzIHZlbmRvciBleHRlbnNpb24pCiogVGVzdCBhZ2FpbnN0IGxpdmUgZW5kcG9pbnRzCiogVmVyaWZ5IG91dHB1dCBoZWFkZXIgbWFwcGluZ3MKKiBUZXN0IHBhdGgtd2l0aC1mcmFnbWVudCBoYWNrIHdvcmtzCiogVGVzdCBwYXRocyB3aXRoIGhhcmRjb2RlZCA/cGFyYW1ldGVycyB3b3JrCiogVmFsaWRhdGUgeG1sLWhhbmRsaW5nIGtleXdvcmQgdHJhbnNsYXRpb25zCg== readmeEtag: '"461c15eda2266d399b10a99de5e02ebbf93edbb6"' readmeLastModified: Wed, 15 Feb 2023 18:06:55 GMT repositoryId: 68278564 description: Amazon Web Services API description to OpenAPI 3.0 definition created: '2016-09-15T08:36:59Z' updated: '2025-08-07T22:28:43Z' language: JavaScript archived: false stars: 61 watchers: 3 forks: 12 owner: APIs-guru logo: https://avatars.githubusercontent.com/u/10975548?v=4 license: MIT repoEtag: '"03b8dacc07fc5075f1a8458ac9d889f2ebc3b24570c44095944cc578dfd78fe9"' repoLastModified: Thu, 07 Aug 2025 22:28:43 GMT foundInMaster: true category: Parsers id: 0309debf319b1f557d23ca065812fbc7 - source: openapi3 tags repository: https://github.com/cocreators-ee/apity v3: true id: 000c3a69f9b14fbece85d34193b80799 repositoryMetadata: base64Readme: >- IyDwn5OY77iPIGFwaXR5IC0gVHlwZWQgQVBJIGNsaWVudCBmb3IgU3ZlbHRlIGFuZCBTdmVsdGVLaXQKCkEgdHlwZWQgZmV0Y2ggY2xpZW50IGZvciBbb3BlbmFwaS10eXBlc2NyaXB0XShodHRwczovL2dpdGh1Yi5jb20vZHJ3cG93L29wZW5hcGktdHlwZXNjcmlwdCkgY29tcGF0aWJsZSB3aXRoIFN2ZWx0ZUtpdCdzIGN1c3RvbSBgZmV0Y2hgCgojIyBJbnN0YWxsYXRpb24KCmBgYGJhc2gKbnBtIGluc3RhbGwgQGNvY3JlYXRvcnMtZWUvYXBpdHkKYGBgCgpPcgoKYGBgYmFzaApwbnBtIGFkZCBAY29jcmVhdG9ycy1lZS9hcGl0eQpgYGAKCiMjIEZlYXR1cmVzCgotIFt4XSBTdXBwb3J0IG9mIEpTT04gcmVxdWVzdCBhbmQgcmVzcG9uc2VzIGZyb20gW09wZW5BUEkgMy4wXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbikKLSBbeF0gU3VwcG9ydCBvZiBgeyNhd2FpdH1gIHN5bnRheCBpbiBTdmVsdGUgdGVtcGxhdGVzCi0gW3hdIENvbXBhdGliaWxpdHkgd2l0aCBTdmVsdGVLaXQncyBgZmV0Y2hgIGluIGBsb2FkYCBmdW5jdGlvbnMKLSBbeF0gUmVxdWVzdCByZWxvYWRpbmcKLSBbeF0gQ29uZmlndXJhdGlvbiBvZiBkZWZhdWx0IFtmZXRjaCBvcHRpb25zXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvZmV0Y2gjcGFyYW1ldGVycykKCk9uIHRoZSByb2FkbWFwOgoKLSBbIF0gQ2FjaGluZyBvZiBzdWJzZXF1ZW50IHJlcXVlc3RzIHdpdGggdGhlIHNhbWUgVVJMIGFuZCBwYXJhbWV0ZXJzCgojIyMgTGl2ZSBkZW1vCgpBcGl0eSBoYXMgYSBbbGl2ZSBkZW1vXShodHRwczovL2FwaXR5LWRlbW8udmVyY2VsLmFwcC8pIHdpdGggY29kZSBzYW1wbGVzLgpBbHNvIHlvdSBjYW4gcmVhZCBhbiBpbnRyb2R1Y3Rpb25hcnkgW2Jsb2cgcG9zdF0oaHR0cHM6Ly9kZXYudG8vZmJqb3JuL2EtdHlwZWQtaHR0cC1jbGllbnQtZm9yLXN2ZWx0ZWtpdC04OGIpLgoKIyMgVXNhZ2UKCiMjIyBHZW5lcmF0ZSB0eXBlc2NyaXB0IGRlZmluaXRpb24gZnJvbSBzY2hlbWEKCkJlZm9yZSB3b3JraW5nIHdpdGggdGhlIGxpYnJhcnksIHlvdSBuZWVkIHRvIGdlbmVyYXRlIGFuIEFQSSBzcGVjIHVzaW5nIFtvcGVuYXBpLXR5cGVzY3JpcHRdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktdHlwZXNjcmlwdCk6CgpgYGBiYXNoCm5weCBvcGVuYXBpLXR5cGVzY3JpcHQgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uIC0tb3V0cHV0IHNyYy9wZXRzdG9yZS50cwoK8J+agCBodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92My9vcGVuYXBpLmpzb24g4oaSIGZpbGU6Li9zcmMvcGV0c3RvcmUudHMgWzg3MG1zXQpgYGAKCiMjIyBVc2luZyBBcGl0eQoKQ29uZmlndXJlIEFwaXR5IGluc3RhbmNlIGFuZCBnZW5lcmF0ZSBmdW5jdGlvbnMgZm9yIG1ha2luZyBBUEkgY2FsbHM6CgpgYGB0cwovLyBGaWxlOiBhcGkudHMKCmltcG9ydCB7IEFwaXR5IH0gZnJvbSAnQGNvY3JlYXRvcnMtZWUvYXBpdHknCmltcG9ydCB0eXBlIHsgcGF0aHMgfSBmcm9tICdzcmMvcGV0c3RvcmUnCgpjb25zdCBhcGl0eSA9IEFwaXR5LmZvcjxwYXRocz4oKQoKLy8gZ2xvYmFsIGNvbmZpZ3VyYXRpb24KYXBpdHkuY29uZmlndXJlKHsKICAvLyBCYXNlIFVSTCB0byB5b3VyIEFQSQogIGJhc2VVcmw6ICdodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjInLAogIC8vIFJlcXVlc3RJbml0IG9wdGlvbnMsIGUuZy4gZGVmYXVsdCBoZWFkZXJzCiAgaW5pdDogewogICAgLy8gbW9kZTogJ2NvcnMnCiAgICAvLyBoZWFkZXJzOiB7fQogIH0sCn0pCgovLyBjcmVhdGUgZmV0Y2ggb3BlcmF0aW9ucwpleHBvcnQgY29uc3QgZmluZFBldHNCeVN0YXR1cyA9IGFwaXR5CiAgLnBhdGgoJy9wZXQvZmluZEJ5U3RhdHVzJykKICAubWV0aG9kKCdnZXQnKQogIC5jcmVhdGUoKQpleHBvcnQgY29uc3QgYWRkUGV0ID0gYXBpdHkucGF0aCgnL3BldCcpLm1ldGhvZCgncG9zdCcpLmNyZWF0ZSgpCmBgYAoKRWFjaCBBUEkgY2FsbCBpcyByZXByZXNlbnRlZCBhcyBhIHJlcXVlc3Qgb2JqZWN0IHRoYXQgaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKCmBgYHR5cGVzY3JpcHQKdHlwZSBBcGlSZXF1ZXN0PFIgPSBhbnk+ID0gewogIC8vIFN2ZWx0ZSBzdG9yZSBjb250YWluaW5nIHRoZSByZXNwb25zZSBvZiB0aGUgQVBJIGNhbGwuCiAgcmVhZG9ubHkgcmVzcDogV3JpdGFibGU8QXBpUmVzcG9uc2U8Uj4gfCB1bmRlZmluZWQ+CgogIC8vIFN2ZWx0ZSBzdG9yZSB0aGF0IGNvbnRhaW5zIGEgcHJvbWlzZSBmb3IgYW4gQVBJIGNhbGwuCiAgLy8gSWYgeW91IHJlbG9hZCB0aGUgcmVxdWVzdCB1c2luZyByZWxvYWQoKSBmdW5jdGlvbiwgdGhpcyBzdG9yZSB3aWxsIGJlIHVwZGF0ZWQuCiAgcmVhZG9ubHkgcmVhZHk6IFdyaXRhYmxlPHVuZGVmaW5lZCB8IFByb21pc2U8QXBpUmVzcG9uc2U8Uj4+PgoKICAvLyBGdW5jdGlvbiB0aGF0IHJlbG9hZHMgdGhlIHJlcXVlc3Qgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzLgogIHJlbG9hZDogKCkgPT4gUHJvbWlzZTxBcGlSZXNwb25zZTxSPj4KCiAgLy8gUHJvbWlzZSBmb3IgdGhlIEFQSSBjYWxsLgogIC8vIFVzZWZ1bCBmb3Igc2VydmVyIGNvZGUgYW5kIHBsYWNlcyB3aGVyZSB5b3UgY2FuJ3QgdXNlIHRoZSBgcmVhZHlgIHN0b3JlLgogIHJlc3VsdDogUHJvbWlzZTxBcGlSZXNwb25zZTxSPj4KfQpgYGAKCkVhY2ggcmVzcG9uc2UgaXMgYSBTdmVsdGUgc3RvcmUgcmV0dXJuaW5nIGVpdGhlciBhbiBgdW5kZWZpbmVkYCwgb3IgdGhlIGZvbGxvd2luZyBvYmplY3Q6CgpgYGB0cwp0eXBlIFN1Y2Nlc3NmdWxSZXNwPFI+ID0gewogIG9rOiB0cnVlCiAgLy8gVHlwZWQgb2JqZWN0IGZvciBhIHN1Y2Nlc3NmdWwgcmVxdWVzdC4gQnVpbHQgZnJvbSB0aGUgT3BlbkFQSSBzcGVjCiAgZGF0YTogUgogIC8vIEhUVFAgc3RhdHVzIGNvZGUKICBzdGF0dXM6IG51bWJlcgp9Cgp0eXBlIEZhaWxlZFJlc3AgPSB7CiAgb2s6IGZhbHNlCiAgZGF0YTogYW55CiAgLy8gSFRUUCBzdGF0dXMgY29kZQogIHN0YXR1czogbnVtYmVyCn0KCnR5cGUgQXBpUmVzcG9uc2U8Uj4gPSBTdWNjZXNzZnVsUmVzcDxSPiB8IEZhaWxlZFJlc3AKYGBgCgojIyMgRXJyb3IgaGFuZGxpbmcKClRoZXJlIGFyZSBjZXJ0YWluIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYW4gQVBJIHJlcXVlc3QgY291bGQgdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGhvdXQKYWN0dWFsbHkgcmVhY2hpbmcgdGhlIGRlc2lyZWQgc2VydmVyLCBmb3IgZXhhbXBsZSwgdW5wcmVkaWN0YWJsZSBuZXR3b3JrIGlzc3Vlcy4gRm9yIHN1Y2gKY2FzZXMsIHRoZSBhcGkgcmVzcG9uc2Ugd2lsbCBjb250YWluIGEgc3RhdHVzIHNldCB0byBhIG5lZ2F0aXZlIG51bWJlciwgaW5kaWNhdGluZyB0aGF0CmFuIGV4Y2VwdGlvbiB3YXMgdGhyb3duLgoKYGBganMKewogIG9rOiBmYWxzZSwKICBzdGF0dXM6IC0xLAogIGRhdGE6IHVuZGVmaW5lZCwKfQpgYGAKCiMjIyBVc2luZyBBcGl0eSB3aXRoIGF3YWl0IHN5bnRheCBpbiB0ZW1wbGF0ZXMKCkFzc3VtaW5nIHlvdSd2ZSBjcmVhdGVkIGFuIGBzcmMvYXBpLnRzYCBmcm9tIFt1c2luZyBBcGl0eV0oI3VzaW5nLWFwaXR5KSBzZWN0aW9uOgoKYGBgc3ZlbHRlCjxzY3JpcHQgbGFuZz0idHMiPgogIGltcG9ydCB7IGZpbmRQZXRCeVN0YXR1cyB9IGZyb20gJ3NyYy9hcGkudHMnCiAgY29uc3QgcmVxdWVzdCA9IGZpbmRQZXRCeVN0YXR1cyh7IHN0YXR1czogJ3NvbGQnIH0pCiAgY29uc3QgcGV0c1JlYWR5ID0gcmVxdWVzdC5yZWFkeQo8L3NjcmlwdD4KCjxkaXY+CiAgeyNhd2FpdCAkcGV0c1JlYWR5fQogICAgPHA+TG9hZGluZy4uPC9wPgogIHs6dGhlbiByZXNwfQogICAgeyNpZiByZXNwLm9rfQogICAgICB7I2VhY2ggcmVzcC5kYXRhIGFzIHBldH0KICAgICAgICA8cD57cGV0Lm5hbWV9PC9wPgogICAgICB7L2VhY2h9CiAgICB7OmVsc2V9CiAgICAgIDxwPkVycm9yIHdoaWxlIGxvYWRpbmcgcGV0czwvcD4KICAgIHsvaWZ9CiAgey9hd2FpdH0KCiAgPGJ1dHRvbiBvbjpjbGljaz17KCkgPT4ge3JlcXVlc3QucmVsb2FkKCl9fT4KICAgIFJlbG9hZCBwZXRzCiAgPC9idXR0b24+CjwvZGl2PgpgYGAKCiMjIyBTdWJzY3JpYmluZyB0byByZXNwb25zZSBzdG9yZQoKQXNzdW1pbmcgeW91J3ZlIGNyZWF0ZWQgYW4gYHNyYy9hcGkudHNgIGZyb20gW3VzaW5nIEFwaXR5XSgjdXNpbmctYXBpdHkpIHNlY3Rpb246CgpgYGBzdmVsdGUKPHNjcmlwdCBsYW5nPSJ0cyI+CiAgaW1wb3J0IHsgZmluZFBldEJ5U3RhdHVzIH0gZnJvbSAnc3JjL2FwaS50cycKICBjb25zdCByZXF1ZXN0ID0gZmluZFBldEJ5U3RhdHVzKHsgc3RhdHVzOiAnc29sZCcgfSkKICBsZXQgbmFtZXMgPSBbXQoKICByZXF1ZXN0LnJlc3Auc3Vic2NyaWJlKHJlc3AgPT4gewogICAgaWYgKHJlc3Aub2spIHsKICAgICAgbmFtZXMgPSByZXNwLmRhdGEubWFwKHBldCA9PiBwZXQubmFtZSkKICAgIH0KICB9KQo8L3NjcmlwdD4KCjxkaXY+CiAgeyNlYWNoIG5hbWVzIGFzIG5hbWV9CiAgICA8cD57bmFtZX08L3A+CiAgey9lYWNofQo8L2Rpdj4KYGBgCgojIyMgVXNpbmcgaW4gbG9hZCBmdW5jdGlvbnMKCkZldGNoIG9wZXJhdGlvbnMgc3VwcG9ydCBTdmVsdGVLaXQncyBbbG9hZF0oaHR0cHM6Ly9raXQuc3ZlbHRlLmRldi9kb2NzL2xvYWQjbWFraW5nLWZldGNoLXJlcXVlc3RzKSBmdW5jdGlvbiBmcm9tIGArcGFnZS50c2AgYW5kIGArcGFnZS5zZXJ2ZXIudHNgLgoKQXNzdW1pbmcgeW91J3ZlIGNyZWF0ZWQgYW4gYHNyYy9hcGkudHNgIGZyb20gW3VzaW5nIEFwaXR5XSgjdXNpbmctYXBpdHkpIHNlY3Rpb246CgpgYGB0cwppbXBvcnQgeyBmaW5kUGV0QnlTdGF0dXMgfSBmcm9tICdzcmMvYXBpLnRzJwoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWQoeyBmZXRjaCB9KSB7CiAgY29uc3QgcmVxdWVzdCA9IGZpbmRQZXRCeVN0YXR1cyh7IHN0YXR1czogJ3NvbGQnIH0pCiAgY29uc3QgcmVzcCA9IGF3YWl0IHJlcXVlc3QucmVzdWx0CiAgaWYgKHJlc3Aub2spIHsKICAgIHJldHVybiB7IHBldHM6IHJlc3AuZGF0YSwgZXJyb3I6IHVuZGVmaW5lZCB9CiAgfSBlbHNlIHsKICAgIHJldHVybiB7IHBldHM6IFtdLCBlcnJvcjogJ0ZhaWxlZCB0byBsb2FkIHBldHMnIH0KICB9Cn0KYGBgCgojIEZpbmFuY2lhbCBzdXBwb3J0CgpUaGlzIHByb2plY3QgaGFzIGJlZW4gbWFkZSBwb3NzaWJsZSB0aGFua3MgdG8gW0NvY3JlYXRvcnNdKGh0dHBzOi8vY29jcmVhdG9ycy5lZSkuIFlvdSBjYW4gaGVscCB1cyBjb250aW51ZSBvdXIgb3BlbiBzb3VyY2Ugd29yayBieSBzdXBwb3J0aW5nIHVzIG9uIFtCdXkgbWUgYSBjb2ZmZWVdKGh0dHBzOi8vd3d3LmJ1eW1lYWNvZmZlZS5jb20vY29jcmVhdG9ycykuCgpbIVsiQnV5IE1lIEEgQ29mZmVlIl0oaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9hc3NldHMvaW1nL2N1c3RvbV9pbWFnZXMvb3JhbmdlX2ltZy5wbmcpXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2NvY3JlYXRvcnMpCg== readmeEtag: '"54532d3f9c27bf2ccea5fa6a5ecf300e4257def0"' readmeLastModified: Tue, 03 Oct 2023 11:45:20 GMT repositoryId: 591235475 description: A typed fetch client for openapi-typescript for use with SvelteKit created: '2023-01-20T08:55:39Z' updated: '2026-01-02T19:01:15Z' language: TypeScript archived: false stars: 59 watchers: 0 forks: 3 owner: cocreators-ee logo: https://avatars.githubusercontent.com/u/25827530?v=4 license: MIT repoEtag: '"113fd2c4e5ab36674702ac5edf42151fe6f706a43c86dd74d1ecdcf223a2c33d"' repoLastModified: Fri, 02 Jan 2026 19:01:15 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/meeshkan/hmt v3: true repositoryMetadata: base64Readme: >- IyBITVQKClshW0NpcmNsZUNJXShodHRwczovL2NpcmNsZWNpLmNvbS9naC9tZWVzaGthbi9obXQuc3ZnP3N0eWxlPXNoaWVsZCldKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL21lZXNoa2FuL2htdCkKWyFbUHlQSV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2RtL2htdC5zdmcpXShodHRwczovL3B5cGkub3JnL3Byb2plY3QvaG10LykKWyFbQ29kZSBzdHlsZTogYmxhY2tdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLWJsYWNrLTAwMDAwMC5zdmcpXShodHRwczovL2JsYWNrLnJlYWR0aGVkb2NzLmlvLykKWyFbTGljZW5zZTogTUlUXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtTUlULWdyZWVuLnN2ZyldKGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKQoKVGhlIEhUVFAgTW9ja2luZyBUb29sa2l0IChITVQpIGlzIGEgdG9vbCB0aGF0IG1vY2tzIEhUVFAgQVBJcyBmb3IgdXNlIGluIHNhbmRib3hlcyBhcyB3ZWxsIGFzIGZvciBhdXRvbWF0ZWQgYW5kIGV4cGxvcmF0b3J5IHRlc3RpbmcuIEl0IHVzZXMgYSBjb21iaW5hdGlvbiBvZiBBUEkgZGVmaW5pdGlvbnMsIHJlY29yZGVkIHRyYWZmaWMgYW5kIGNvZGUgaW4gb3JkZXIgdG8gbWFrZSBjcmFmdGluZyBtb2NrcyBhcyBlbmpveWFibGUgYXMgcG9zc2libGUuCgpbQ2hhdCB3aXRoIHVzIG9uIEdpdHRlcl0oaHR0cHM6Ly9naXR0ZXIuaW0vTWVlc2hrYW4vY29tbXVuaXR5KSB0byBsZXQgdXMga25vdyBhYm91dCBxdWVzdGlvbnMsIHByb2JsZW1zIG9yIGlkZWFzIQoKIyMgV2hhdCdzIGluIHRoaXMgZG9jdW1lbnQKCi0gW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKLSBbR2V0dGluZyBzdGFydGVkIHdpdGggSE1UXSgjZ2V0dGluZy1zdGFydGVkLXdpdGgtaG10KQogIC0gW1R1dG9yaWFsXSgjdHV0b3JpYWwpCi0gW0NvbGxlY3QgcmVjb3JkaW5ncyBvZiBBUEkgdHJhZmZpY10oI2NvbGxlY3QtcmVjb3JkaW5ncy1vZi1hcGktdHJhZmZpYykKLSBbQnVpbGQgYSBITVQgc3BlYyBmcm9tIHJlY29yZGluZ3NdKCNidWlsZC1hLWhtdC1zcGVjLWZyb20tcmVjb3JkaW5ncykKICAtIFtCdWlsZGluZyBtb2Rlc10oI2J1aWxkaW5nLW1vZGVzKQotIFtNb2NrIHNlcnZlciB0cmFmZmljIHVzaW5nIGEgSE1UIHNwZWNdKCNtb2NrLXNlcnZlci10cmFmZmljLXVzaW5nLWEtaG10LXNwZWMpCi0gW0RldmVsb3BtZW50XSgjZGV2ZWxvcG1lbnQpCiAgLSBbR2V0dGluZyBzdGFydGVkXSgjZ2V0dGluZy1zdGFydGVkKQogIC0gW1Rlc3RzXSgjdGVzdHMpCiAgLSBbVHlwZS1jaGVja2luZ10oI3R5cGUtY2hlY2tpbmcpCiAgLSBbQXV0b21hdGVkIGJ1aWxkc10oI2F1dG9tYXRlZC1idWlsZHMpCiAgLSBbUHVibGlzaGluZyBITVQgYXMgYSBQeVBpIHBhY2thZ2VdKCNwdWJsaXNoaW5nLWhtdC1hcy1hLXB5cGktcGFja2FnZSkKLSBbQ29udHJpYnV0aW5nXSgjY29udHJpYnV0aW5nKQogIC0gW0NvZGUgb2YgQ29uZHVjdF0oI2NvZGUtb2YtY29uZHVjdCkKCiMjIEluc3RhbGxhdGlvbgpJbnN0YWxsIHZpYSBbcGlwXShodHRwczovL3BpcC5weXBhLmlvL2VuL3N0YWJsZS9pbnN0YWxsaW5nLykgKHJlcXVpcmVzICoqUHl0aG9uIDMuNisqKik6CgpgYGBiYXNoCnBpcCBpbnN0YWxsIGhtdApgYGAKCm1hY09TIHVzZXJzIGNhbiBpbnN0YWxsIEhNVCB3aXRoIFtIb21lYnJld10oaHR0cHM6Ly9icmV3LnNoLyk6CgpgYGBzaApicmV3IHRhcCBtZWVzaGthbi90YXAKYnJldyBpbnN0YWxsIGhtdApgYGAKCkRlYmlhbiBhbmQgVWJ1bnR1IHVzZXJzIGNhbiBpbnN0YWxsIEhNVCB3aXRoIGBhcHRgOgoKYGBgc2gKZWNobyAiZGViIFt0cnVzdGVkPXllc10gaHR0cHM6Ly9kbC5iaW50cmF5LmNvbS9tZWVzaGthbi9hcHQgYWxsIG1haW4iIHwgdGVlIC1hIC9ldGMvYXB0L3NvdXJjZXMubGlzdAphcHQtZ2V0IC1xcSB1cGRhdGUgJiYgYXB0LWdldCBpbnN0YWxsIGhtdApgYGAKCgojIyBHZXR0aW5nIHN0YXJ0ZWQgd2l0aCBITVQKClRoZSBiYXNpYyBITVQgZmxvdyBpcyAqKmNvbGxlY3QsIGJ1aWxkIGFuZCBtb2NrLioqCjEuIEZpcnN0LCAqKmNvbGxlY3QqKiBkYXRhIGZyb20gcmVjb3JkZWQgc2VydmVyIHRyYWZmaWMgYW5kL29yIE9wZW5BUEkgc3BlY3MuCjEuIFRoZW4sICoqYnVpbGQqKiBhIHNjaGVtYSB0aGF0IHVuaWZpZXMgdGhlc2UgdmFyaW91cyBkYXRhIHNvdXJjZXMuCjEuIEZpbmFsbHksIHVzZSB0aGlzIHNjaGVtYSB0byBjcmVhdGUgYSAqKm1vY2sqKiBzZXJ2ZXIgb2YgYW4gQVBJLgoKIyMjIFR1dG9yaWFsCgpUaGUgcXVpY2tlc3Qgd2F5IHRvIGdldCBhbiBvdmVydmlldyBvZiBITVQgaXMgdG8gY29tcGxldGUgb3VyIGludGVyYWN0aXZlIHR1dG9yaWFsLiBJdCB3YWxrcyB5b3UgdGhyb3VnaCB0aGUgY29sbGVjdCwgYnVpbGQsIGFuZCBtb2NrIGZsb3cgLSB3aGlsZSBhbHNvIGNvdmVyaW5nIHRoZSBjb25jZXB0cyBuZWNlc3NhcnkgZm9yIGRldmVsb3BtZW50LgoKX05vdGU6IFRoaXMgdHV0b3JpYWwgaGFzIGJlZW4gdGVzdGVkIG9uIFB5dGhvbiAzLjYsIDMuNywgYW5kIDMuOC5fCgpBZnRlciBpbnN0YWxsaW5nIEhNVCwgeW91IGNhbiBiZWdpbiB0aGUgdHV0b3JpYWwgYnkgaW52b2tpbmcgZnJvbSB0aGUgY29tbWFuZCBsaW5lOgoKYGBgYmFzaAokIGhtdCB0dXRvcmlhbApgYGAKCk9uY2UgeW91J3ZlIHJ1biB0aGlzLCB5b3Ugc2hvdWxkIHNlZToKCmBgYGJhc2gKICAgIF9fICAgICAgICAgICAgICBfXyAKICAgLyAvXyAgX19fXyBfX18gIC8gL18KICAvIF9fIFwvIF9fIGBfXyBcLyBfXy8KIC8gLyAvIC8gLyAvIC8gLyAvIC9fCi9fLyAvXy9fLyAvXy8gL18vXF9fLwoKClRoZSB0dXRvcmlhbCEhClByZXNzIEVOVEVSIHRvIGNvbnRpbnVlLi4uCmBgYAoKSWYgbm90LCBpdCdzIHByb2JhYmx5IG91ciBmYXVsdC4gUGxlYXNlIGxldCB1cyBrbm93IGJ5IFtmaWxpbmcgYW4gaXNzdWUgb24gdGhpcyByZXBvXShodHRwczovL2dpdGh1Yi5jb20vbWVlc2hrYW4vaG10L2lzc3VlcykuCgojIyBDb2xsZWN0IHJlY29yZGluZ3Mgb2YgQVBJIHRyYWZmaWMKCkxldCdzIGxvb2sgYXQgaG93IHRvIGJ1aWxkIGEgSE1UIHNwZWMuIEZpcnN0LCB5b3UgaGF2ZSB0byAqKmNvbGxlY3QqKiByZWNvcmRpbmdzIG9mIHNlcnZlciB0cmFmZmljIGFuZC9vciBPcGVuQVBJIHNlcnZlciBzcGVjcy4KClRvIHJlY29yZCBBUEkgdHJhZmZpYywgdGhlIEhNVCBDTEkgcHJvdmlkZXMgYSBgcmVjb3JkYCBtb2RlIHRoYXQgY2FwdHVyZXMgQVBJIHRyYWZmaWMgdXNpbmcgYSBwcm94eS4KCmBgYGJhc2gKJCBobXQgcmVjb3JkCmBgYAoKVGhpcyBjb21tYW5kIHN0YXJ0cyBITVQgYXMgYSByZXZlcnNlIHByb3h5IG9uIHRoZSBkZWZhdWx0IHBvcnQgb2YgYDgwMDBgIGFuZCBjcmVhdGVzIHR3byBkaXJlY3RvcmllczogYGxvZ3NgIGFuZCBgc3BlY3NgLiAKCldpdGggW2N1cmxdKGh0dHBzOi8vY3VybC5oYXh4LnNlLyksIGZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSBITVQgYXMgYSBwcm94eSBsaWtlIHNvOgoKYGBgYmFzaAokIGN1cmwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL2h0dHA6Ly9hcGkuZXhhbXBsZS5jb20KYGBgCgpCeSBkZWZhdWx0LCB0aGUgcmVjb3JkaW5nIHByb3h5IHRyZWF0cyB0aGUgcGF0aCBhcyB0aGUgdGFyZ2V0IFVSTC4gSXQgdGhlbiB3cml0ZXMgYSBbYC5qc29ubGBdKGh0dHBzOi8vanNvbmxpbmVzLm9yZykgZmlsZSBjb250YWluaW5nIGxvZ3Mgb2YgYWxsIHNlcnZlciB0cmFmZmljIHRvIHRoZSBgbG9nc2AgZGlyZWN0b3J5LiAgQWxsIGxvZ3MgYXJlIGNyZWF0ZWQgaW4gdGhlIFtgaHR0cC10eXBlc2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9tZWVzaGthbi9odHRwLXR5cGVzKSBmb3JtYXQuIFRoaXMgaXMgYmVjYXVzZSBITVQncyBgYnVpbGRgIHRvb2wgZXhwZWN0cyBhbGwgcmVjb3JkaW5ncyB0byBiZSByZXByZXNlbnRlZCBpbiBhIGAuanNvbmxgIGZpbGUgY29udGFpbmluZyByZWNvcmRpbmdzIHJlcHJlc2VudGVkIGluIHRoZSBgaHR0cC10eXBlc2AgZm9ybWF0LgoKRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcmVjb3JkaW5nLCBpbmNsdWRpbmcgZGlyZWN0IGZpbGUgd3JpdGluZyBhbmQga2Fma2Egc3RyZWFtaW5nLCBzZWUgdGhlIFtyZWNvcmRpbmcgZG9jdW1lbnRhdGlvbl0oLi9kb2NzL1JFQ09SRC5tZCkuCgojIyBCdWlsZCBhIEhNVCBzcGVjIGZyb20gcmVjb3JkaW5ncwoKVXNpbmcgdGhlIEhNVCBDTEksIHlvdSBjYW4gKipidWlsZCoqIGFuIE9wZW5BUEkgc2NoZW1hIGZyb20gYSBzaW5nbGUgYC5qc29ubGAgZmlsZSwgaW4gYWRkaXRpb24gdG8gYW55IGV4aXN0aW5nIE9wZW5BUEkgc3BlY3MgdGhhdCBkZXNjcmliZSBob3cgeW91ciBzZXJ2aWNlIHdvcmtzLgoKYGBgYmFzaAokIGhtdCBidWlsZCAtLWlucHV0LWZpbGUgcGF0aC90by9yZWNvcmRpbmdzLmpzb25sIApgYGAKCl9Ob3RlOiBUaGUgaW5wdXQgZmlsZSBzaG91bGQgYmUgaW4gW0pTT04gTGluZXNdKGh0dHA6Ly9qc29ubGluZXMub3JnLykgZm9ybWF0IGFuZCBldmVyeSBsaW5lIHNob3VsZCBiZSBpbiBbaHR0cC10eXBlc10oaHR0cHM6Ly9naXRodWIuY29tL21lZXNoa2FuL2h0dHAtdHlwZXMpIEpTT04gZm9ybWF0LiBGb3IgYW4gZXhhbXBsZSBpbnB1dCBmaWxlLCBzZWUgW3JlY29yZGluZ3MuanNvbmxdKC4vcmVzb3VyY2VzL3JlY29yZGluZ3MuanNvbmwpLl8KCk9wdGlvbmFsbHksIHlvdSBjYW4gYWxzbyBzcGVjaWZ5IGFuIG91dHB1dCBkaXJlY3RvcnkgdXNpbmcgdGhlIGAtLW91dGAgZmxhZyBmb2xsb3dlZCBieSB0aGUgcGF0aCB0byB0aGlzIGRpcmVjdG9yeS4gQnkgZGVmYXVsdCwgSE1UIHdpbGwgYnVpbGQgdGhlIG5ldyBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGluIHRoZSBgc3BlY3NgIGRpcmVjdG9yeS4gCgpVc2UgZGFzaCAoYC0taW5wdXQtZmlsZSAtYCkgdG8gcmVhZCBmcm9tIHN0YW5kYXJkIGlucHV0OgoKYGBgYmFzaAokIGhtdCBidWlsZCAtLWlucHV0LWZpbGUgLSA8IHJlY29yZGluZ3MuanNvbmwKYGBgCiMjIyBCdWlsZGluZyBtb2RlcwpZb3UgY2FuIHVzZSBhIG1vZGUgZmxhZyB0byBpbmRpY2F0ZSBob3cgdGhlIE9wZW5BUEkgc3BlYyBzaG91bGQgYmUgYnVpbHQsIGZvciBleGFtcGxlOgoKYGBgYmFzaApobXQgYnVpbGQgLS1pbnB1dC1maWxlIHBhdGgvdG8vcmVjb3JkaW5ncy5qc29ubCAtLW1vZGUgZ2VuCmBgYAoKU3VwcG9ydGVkIG1vZGVzIGFyZToKKiBnZW4gW2RlZmF1bHRdIC0gaW5mZXIgYSBzY2hlbWEgZnJvbSB0aGUgcmVjb3JkZWQgZGF0YQoqIHJlcGxheSAtIHJlcGxheSB0aGUgcmVjb3JkZWQgZGF0YSBiYXNlZCBvbiBleGFjdCBtYXRjaGluZwoKRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYnVpbGRpbmcsIGluY2x1ZGluZyBtaXhpbmcgdG9nZXRoZXIgdGhlIHR3byBtb2RlcyBhbmQgZWRpdGluZyB0aGUgY3JlYXRlZCBPcGVuQVBJIHNjaGVtYSwgc2VlIHRoZSBbYnVpbGRpbmcgZG9jdW1lbnRhdGlvbl0oLi9kb2NzL0JVSUxELm1kKS4KCiMjIE1vY2sgc2VydmVyIHRyYWZmaWMgdXNpbmcgYSBITVQgc3BlYwoKWW91IGNhbiB1c2UgYW4gT3BlbkFQSSBzcGVjLCBzdWNoIGFzIHRoZSBvbmUgY3JlYXRlZCB3aXRoIGBobXQgYnVpbGRgLCB0byBjcmVhdGUgYSAqKm1vY2sqKiBzZXJ2ZXIgdXNpbmcgSE1ULgoKYGBgYmFzaAokIGhtdCBtb2NrIHBhdGgvdG8vZGlyLwpgYGAKCl9Ob3RlOiBZb3UgY2FuIHNwZWNpZnkgYSBwYXRoIHRvIHRoZSBkaXJlY3RvcnkgeW91ciBPcGVuQVBJIHNwZWMgaXMgaW4gb3IgYSBwYXRoIHRvIG9uZSBzcGVjaWZpYyBmaWxlLl8KCkZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG1vY2tpbmcsIGluY2x1ZGluZyBhZGRpbmcgY3VzdG9tIG1pZGRsZXdhcmUgYW5kIG1vZGlmeWluZyB0aGUgbW9ja2luZyBzY2hlbWEgSklUIHZpYSBhbiBhZG1pbiBBUEksIHNlZSB0aGUgW21vY2tpbmcgZG9jdW1lbnRhdGlvbl0oLi9kb2NzL01PQ0subWQpLgoKIyMgRGV2ZWxvcG1lbnQKCkhlcmUgYXJlIHNvbWUgdXNlZnVsIHRpcHMgZm9yIGJ1aWxkaW5nIGFuZCBydW5uaW5nIEhNVCBmcm9tIHNvdXJjZS4gCgpJZiB5b3UgcnVuIGludG8gYW55IGlzc3VlcywgcGxlYXNlIFtyZWFjaCBvdXQgdG8gb3VyIHRlYW0gb24gR2l0dGVyXShodHRwczovL2dpdHRlci5pbS9tZWVzaGthbi9jb21tdW5pdHkpLgoKIyMjIEdldHRpbmcgc3RhcnRlZAoKMS4gQ2xvbmUgdGhpcyByZXBvc2l0b3J5OiBgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9tZWVzaGthbi9obXRgCjEuIENyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQ6IGBweXRob24zIC1tIHZlbnYgLnZlbnYgJiYgc291cmNlIC52ZW52L2Jpbi9hY3RpdmF0ZWAKMS4gSW5zdGFsbCBkZXBlbmRlbmNpZXM6IGBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgLWUgJy5bZGV2XSdgCjEuIEluc3RhbGwgW2BwcmUtY29tbWl0YF0oaHR0cHM6Ly9wcmUtY29tbWl0LmNvbS8pIGhvb2tzIHRvIGF1dG9tYXRpY2FsbHkgZm9ybWF0IGNvZGUgYXMgYSBnaXQgaG9vazogYHByZS1jb21taXQgaW5zdGFsbGAKCiMjIyBUZXN0cwoKUnVuIGFsbCBjaGVja3M6CgpgYGBiYXNoCiQgcHl0aG9uIHNldHVwLnB5IHRlc3QKYGBgCgojIyMjIGBweXRlc3RgCgpSdW4gW3Rlc3RzL10oaHR0cHM6Ly9naXRodWIuY29tL21lZXNoa2FuL2htdC90cmVlL21hc3Rlci90ZXN0cy8pIHdpdGggYHB5dGVzdGA6CgpgYGBiYXNoCnB5dGVzdAojIG9yCnB5dGhvbiBzZXR1cC5weSB0ZXN0CmBgYAoKQ29uZmlndXJhdGlvbiBmb3IgYHB5dGVzdGAgaXMgZm91bmQgaW4gW3B5dGVzdC5pbmldKGh0dHBzOi8vZ2l0aHViLmNvbS9tZWVzaGthbi9obXQvdHJlZS9tYXN0ZXIvcHl0ZXN0LmluaSkuCgojIyMjIEZvcm1hdHRpbmcKCkZvcm1hdHRpbmcgaXMgY2hlY2tlZCBieSB0aGUgYWJvdmUgbWVudGlvbmVkIGBweXRob24gc2V0dXAucHkgdGVzdGAgY29tbWFuZC4KClRvIGZpeCBmb3JtYXR0aW5nOgoKYGBgc2gKJCBweXRob24gc2V0dXAucHkgZm9ybWF0CmBgYAoKIyMjIyBgZmxha2U4YAoKUnVuIHN0eWxlIGNoZWNrczoKCmBgYGJhc2gKJCBmbGFrZTggLgpgYGAKCiMjIyMgYHB5cmlnaHRgCgpZb3UgY2FuIHJ1biB0eXBlLWNoZWNraW5nIGJ5IGluc3RhbGxpbmcgW3B5cmlnaHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvcHlyaWdodCkgZ2xvYmFsbHk6CgpgYGBiYXNoCiQgbnBtIC1pIC1nIHB5cmlnaHQKYGBgCgpBbmQgdGhlbiBydW5uaW5nOgoKYGBgYmFzaAokIHB5cmlnaHQgLS1saWIKJCAjIG9yCiQgcHl0aG9uIHNldHVwLnB5IHR5cGVjaGVjawpgYGAKClVzaW5nIHRoZSBbUHlyaWdodCBleHRlbnNpb25dKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1tcy1weXJpZ2h0LnB5cmlnaHQpIGlzIHJlY29tbWVuZGVkIGZvciBkZXZlbG9wbWVudCBpbiBWUyBDb2RlLgoKIyMjIEF1dG9tYXRlZCBidWlsZHMKCkNvbmZpZ3VyYXRpb24gZm9yIENpcmNsZUNJIFtidWlsZCBwaXBlbGluZV0oaHR0cHM6Ly9hcHAuY2lyY2xlY2kuY29tL3BpcGVsaW5lcy9naXRodWIvbWVlc2hrYW4vaG10KSBjYW4gYmUgZm91bmQgaW4gWy5jaXJjbGVjaS9jb25maWcueW1sXSguLy5jaXJjbGVjaS9jb25maWcueW1sKS4KCiMjIyBQdWJsaXNoaW5nIEhNVCBhcyBhIFB5UGkgcGFja2FnZQoKVG8gcHVibGlzaCBITVQgYXMgYSBQeVBpIHBhY2thZ2UsIGNvbXBsZXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6CgoxLiBCdW1wIHRoZSB2ZXJzaW9uIGluIFtzZXR1cC5weV0oLi9zZXR1cC5weSkgaWYgdGhlIHZlcnNpb24gaXMgdGhlIHNhbWUgYXMgaW4gdGhlIHB1Ymxpc2hlZCBbcGFja2FnZV0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2htdC8pLiBDb21taXQgYW5kIHB1c2guCjEuIFJ1biBgcHl0aG9uIHNldHVwLnB5IHRlc3RgIHRvIGNoZWNrIHRoYXQgZXZlcnl0aGluZyB3b3JrcwoxLiBUbyBidWlsZCBhbmQgdXBsb2FkIHRoZSBwYWNrYWdlLCBydW4gYHB5dGhvbiBzZXR1cC5weSB1cGxvYWRgLiBJbnNlcnQgUHlQSSBjcmVkZW50aWFscyB0byB1cGxvYWQgdGhlIHBhY2thZ2UgdG8gYFB5UElgLiBUaGUgY29tbWFuZCB3aWxsIGFsc28gcnVuIGBnaXQgdGFnYCB0byB0YWcgdGhlIGNvbW1pdCBhcyBhIHJlbGVhc2UgYW5kIHB1c2ggdGhlIHRhZ3MgdG8gcmVtb3RlLgoKPiBUbyBzZWUgd2hhdCB0aGUgZGlmZmVyZW50IGNvbW1hbmRzIGRvLCBzZWUgYENvbW1hbmRgIGNsYXNzZXMgaW4gW3NldHVwLnB5XShodHRwczovL2dpdGh1Yi5jb20vbWVlc2hrYW4vaG10L3RyZWUvbWFzdGVyL3NldHVwLnB5KS4KCiMjIENvbnRyaWJ1dGluZwoKVGhhbmtzIGZvciB5b3VyIGludGVyZXN0IGluIGNvbnRyaWJ1dGluZyEgUGxlYXNlIHRha2UgYSBsb29rIGF0IG91ciBbZGV2ZWxvcG1lbnQgZ3VpZGVdKCNkZXZlbG9wbWVudCkgZm9yIG5vdGVzIG9uIGhvdyB0byBkZXZlbG9wIHRoZSBwYWNrYWdlIGxvY2FsbHkuICBBIGdyZWF0IHdheSB0byBzdGFydCBjb250cmlidXRpbmcgaXMgdG8gW2ZpbGUgYW4gaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tZWVzaGthbi9obXQvaXNzdWVzL25ldy9jaG9vc2UpIG9yIFttYWtlIGEgcHVsbCByZXF1ZXN0XShodHRwczovL2dpdGh1Yi5jb20vbWVlc2hrYW4vaG10L3B1bGxzKS4KCiMjIyBDb2RlIG9mIENvbmR1Y3QKClBsZWFzZSBub3RlIHRoYXQgdGhpcyBwcm9qZWN0IGlzIGdvdmVybmVkIGJ5IHRoZSBbTWVlc2hrYW4gQ29tbXVuaXR5IENvZGUgb2YgQ29uZHVjdF0oaHR0cHM6Ly9naXRodWIuY29tL21lZXNoa2FuL2NvZGUtb2YtY29uZHVjdCkuIEJ5IHBhcnRpY2lwYXRpbmcsIHlvdSBhZ3JlZSB0byBhYmlkZSBieSBpdHMgdGVybXMuCg== readmeEtag: '"6631662563d52c609f223dd4be9a0670d14646d2"' readmeLastModified: Mon, 07 Sep 2020 09:00:41 GMT repositoryId: 235120275 description: HTTP Mocking Toolkit created: '2020-01-20T14:27:44Z' updated: '2025-02-23T07:16:39Z' language: Python archived: true stars: 54 watchers: 3 forks: 7 owner: meeshkan logo: https://avatars.githubusercontent.com/u/32298527?v=4 license: MIT repoEtag: '"3b556621df8928502a1e2370749be1f9de55a81f8f5b75d6d558ce586ef06c08"' repoLastModified: Sun, 23 Feb 2025 07:16:39 GMT foundInMaster: true category: Testing id: 0a7406562ab364da1ea6a15dee9c91ac - source: openapi3 tags repository: https://github.com/yayoc/swagger-to-mock v3: true repositoryMetadata: base64Readme: >- IyBzd2FnZ2VyLXRvLW1vY2sgWyFbdHJhdmlzLWNpXShodHRwczovL3RyYXZpcy1jaS5vcmcveWF5b2Mvc3dhZ2dlci10by1tb2NrLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL3lheW9jL3N3YWdnZXItdG8tbW9jaykgWyFbR3JlZW5rZWVwZXIgYmFkZ2VdKGh0dHBzOi8vYmFkZ2VzLmdyZWVua2VlcGVyLmlvL3lheW9jL3N3YWdnZXItdG8tbW9jay5zdmcpXShodHRwczovL2dyZWVua2VlcGVyLmlvLykKCk1vY2sgZGF0YSBnZW5lcmF0b3IgQ0xJIGZvciBTd2FnZ2VyMyAoT3BlbkFQSSAzKQoKIyMgSW5zdGFsbAoKYGBgc2hlbGwKbnBtIGkgLWcgc3dhZ2dlci10by1tb2NrCmBgYAoKIyMgR2VuZXJhdGUgbW9jayBkYXRhCgpgYGBzaGVsbApzd2FnZ2VyLXRvLW1vY2sgPFlPVVIgU1dBR0dFUiBGSUxFPgpgYGAKCndpbGwgZ2VuZXJhdGUgKipKU09OIGZpbGUqKiBwZXIgZWFjaCBBUEkgcmVzcG9uc2UuICAKSlNPTiBkYXRhIHZhbHVlcyBzaG91bGQgYmUgZXhhbXBsZSB2YWx1ZXMgb24geW91ciBzd2FnZ2VyIGlmIHlvdSBzcGVjaWZpZWQgZXhhbXBsZXMuICAKT3RoZXJ3aXNlLCBgc3dhZ2dlci10by1tb2NrYCBmb2xsb3dzIFtkYXRhIHR5cGUgcnVsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS95YXlvYy9zd2FnZ2VyLXRvLW1vY2svI2RhdGEtdHlwZS1zdXBwb3J0KSBhbmQgZ2VuZXJhdGUgYXJiaXRyYXJ5IHZhbHVlcy4gIApJZiB0aGVyZSBpcyBubyBydWxlIGxpa2UgYGZvcm1hdGAsIHZhbHVlcyBzaG91bGQgYmUgYmVsb3cuCgpgYGB5YW1sCnN0cmluZzogIiIKbnVtYmVyOiAwCmludGVnZXI6IDAKYm9vbGVhbjogdHJ1ZQphcnJheTogW10Kb2JqZWN0OiB7fQpgYGAKCiMjIEV4YW1wbGUKCklmIHdlIHBhc3MgW2FuIGV4YW1wbGUgWUFNTCBmaWxlXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci9leGFtcGxlcy92My4wL3BldHN0b3JlLWV4cGFuZGVkLnlhbWwpCgpgYGB5YW1sCnJlc3BvbnNlczoKICAnMjAwJzoKICAgIGRlc2NyaXB0aW9uOiBwZXQgcmVzcG9uc2UKICAgIGNvbnRlbnQ6CiAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgc2NoZW1hOgogICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0JwpgYGAKCmBzd2FnZ2VyLXRvLW1vY2tgIHdpbGwgZ2VuZXJhdGUgZmlsZSBuYW1lZCBgcGV0c19nZXRfMjAwLmpzb25gIGFuZCB0aGUgYm9keSBzaG91bGQgYmUgYmVsb3cKCmBgYGpzb24KWwogIHsKICAgICJuYW1lIjogIiIsCiAgICAidGFnIjogIiIsCiAgICAiaWQiOiAwCiAgfQpdCmBgYAoKIyMgRmlsZSBOYW1lCgpOYW1pbmcgSlNPTiBmaWxlIHdpbGwgZm9sbG93IHRoZSBmb3JtYXQgYmVsb3cuIApgJHtBUElfUEFUSH1fJHtIVFRQX01FVEhPRH1fJHtSRVNQT05TRV9TVEFUVVN9Lmpzb25gCgojIyBEYXRhIFR5cGUgU3VwcG9ydCBbSW4gUHJvZ3Jlc3NdCgpgc3dhZ2dlci10by1tb2NrYCB3aWxsIGZvbGxvdyBydWxlcyBiYXNlZCBvbiBbT3BlbkFQSSAzIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGF0YS1tb2RlbHMvZGF0YS10eXBlcy8pIGZvciBlYWNoIGRhdGEgdHlwZSwgSWYgdGhlIGV4YW1wbGUgdmFsdWUgaXMgbm90IHNwZWNpZmllZC4KCiMjIyBNaXhlZCBUeXBlcwoKSWYgeW91IHNwZWNpZnkgYG9uZU9mYCBvciBgYW55T2ZgLCBUaGUgdmFsdWUgc2hvdWxkIGJlIGF0IHRoZSB0b3AgdHlwZS4KCiMjIyBOdW1iZXJzCgotIGZvcm1hdAotIE1pbmltdW0gYW5kIE1heGltdW0KLSBNdWx0aXBsZXMKCiMjIyBTdHJpbmcKCi0gZm9ybWF0Ci0gcGF0dGVybgoKIyMjIEJvb2xlYW4KCnZhbHVlIHNob3VsZCBiZSBgdHJ1ZWAgb3IgYGZhbHNlYC4KCiMjIyBOdWxsCgojIyMgQXJyYXlzCgotIE1peGVkLVR5cGUgQXJyYXlzCi0gQXJyYXkgTGVuZ3RoCgojIyMgT2JqZWN0cwoKLSBGcmVlLUZvcm0gT2JqZWN0CgojIyMgRmlsZXMKCiMjIyBBbnkgVHlwZQo= readmeEtag: '"63c3bf0392868b1724f0a23bfcbf6925ab8d4f9e"' readmeLastModified: Tue, 29 Jun 2021 12:34:25 GMT repositoryId: 138289588 description: Mock data generator CLI for Swagger3 (OpenAPI 3) created: '2018-06-22T10:26:57Z' updated: '2025-08-08T16:31:19Z' language: TypeScript archived: false stars: 53 watchers: 2 forks: 8 owner: yayoc logo: https://avatars.githubusercontent.com/u/6383334?v=4 repoEtag: '"4cf84c6724f20d599c469c1a5dd492633fe3e9ee989d9042eecca63d4f7939d8"' repoLastModified: Fri, 08 Aug 2025 16:31:19 GMT foundInMaster: true category: Parsers id: 10c19215807691859c470cb694614c33 - source: openapi3 tags repository: https://github.com/smartbear/swaggerhub-cli v3: true repositoryMetadata: base64Readme: >- U3dhZ2dlckh1YiBDTEkKPT09PT09PT09PT09PT0KClshW05QTV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9zd2FnZ2VyaHViLWNsaS5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zd2FnZ2VyaHViLWNsaSkKClRoZSBTd2FnZ2VySHViIENMSSBlbmFibGVzIHRlYW1zIHRvIGJ1aWxkIGF1dG9tYXRpb24gYW5kIHdvcmtmbG93cyBhcm91bmQgU3dhZ2dlckh1Yi4gVGVhbXMgY2FuIHVzZSBpdCBpbiBwbGFjZXMgbGlrZSB0aGVpciBDSS9DRCBwaXBlbGluZSB0byBjcmVhdGUgbmV3IEFQSXMsIGNyZWF0ZSBhbmQgdXBkYXRlIEFQSSB2ZXJzaW9ucywgYW5kIG1hcmsgQVBJIHZlcnNpb25zIGFzIHB1Ymxpc2hlZCBhbmQgZGVmYXVsdCBhbW9uZyBvdGhlciBmZWF0dXJlcy4gRXZlcnkgdGVhbSBoYXMgdGhlaXIgb3duIHdvcmtmbG93LCBhbmQgdGhlIFN3YWdnZXJIdWIgQ0xJIGNhbiBoZWxwIHRlYW1zIGJ1aWxkIHRoZSB3b3JrZmxvdyB0aGF0IGZpdHMgdGhlaXIgbmVlZHMuCgo8IS0tIHRvYyAtLT4KKiBbUmVxdWlyZW1lbnRzXSgjcmVxdWlyZW1lbnRzKQoqIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCiogW1NldHVwXSgjc2V0dXApCiogW0FkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgU3dhZ2dlckh1YiBPbi1QcmVtaXNlXSgjYWRkaXRpb25hbC1jb25maWd1cmF0aW9uLWZvci1zd2FnZ2VyaHViLW9uLXByZW1pc2UpCiogW1VzYWdlXSgjdXNhZ2UpCiogW0NvbW1hbmRzXSgjY29tbWFuZHMpCiogW1BsdWdpbnNdKCNwbHVnaW5zKQoqIFtDb250cmlidXRpbmddKCNjb250cmlidXRpbmcpCjwhLS0gdG9jc3RvcCAtLT4KIyBSZXF1aXJlbWVudHMKTm9kZS5qcyAyMC54IG9yIGxhdGVyLgoKIyBJbnN0YWxsYXRpb24KYGBgc2gtc2Vzc2lvbgokIG5wbSBpIC1nIHN3YWdnZXJodWItY2xpCmBgYAojIFNldHVwClRoZSBTd2FnZ2VySHViIENMSSBjYW4gYmUgY29uZmlndXJlZCB0aHJvdWdoIGVudmlyb25tZW50IHZhcmlhYmxlcyBvciB0aHJvdWdoIHRoZSBbYHN3YWdnZXJodWIgY29uZmlndXJlYF0oI3N3YWdnZXJodWItY29uZmlndXJlKSBjb21tYW5kLiBUaGUgQ0xJIHdpbGwgbG9vayBmb3IgdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCgoqIGBTV0FHR0VSSFVCX0FQSV9LRVlgIChyZXF1aXJlZCkg4oCTICoqSW1wb3J0YW50OiBrZWVwIHRoaXMga2V5IHNlY3VyZS4qKiBUaGlzIGlzIHRoZSBTd2FnZ2VySHViIEFQSSBrZXkgdGhlIENMSSB3aWxsIHVzZSBmb3IgYXV0aGVudGljYXRpb24uIFlvdSBjYW4gZmluZCB5b3VyIEFQSSBrZXkgb24gdGhlIFt1c2VyIHNldHRpbmdzIHBhZ2VdKGh0dHBzOi8vYXBwLnN3YWdnZXJodWIuY29tL3NldHRpbmdzL2FwaUtleSkgaW4gU3dhZ2dlckh1Yi4KKiBgU1dBR0dFUkhVQl9VUkxgIChvcHRpb25hbCwgZGVmYXVsdCBpcyBgaHR0cHM6Ly9hcGkuc3dhZ2dlcmh1Yi5jb21gKSDigJMgQ3VzdG9tZXJzIHdpdGggb24tcHJlbWlzZSBpbnN0YWxsYXRpb25zIG5lZWQgdG8gcG9pbnQgdGhpcyB0byB0aGVpciBvbi1wcmVtaXNlIEFQSSwgd2hpY2ggaXMgYGh0dHAocyk6Ly97c3dhZ2dlcmh1Yi1ob3N0fS92MWAgKGRvIG5vdCBhcHBlbmQgYSBiYWNrc2xhc2gpLgoKQWxlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB0aGUgYHN3YWdnZXJodWIgY29uZmlndXJlYCBjb21tYW5kIHRvIGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIENMSSB0byB1c2UuIFRoaXMgY29tbWFuZCB3aWxsIHdhbGsgeW91IHRocm91Z2ggdGhlIHN0ZXBzIHRvIHNldCB1cCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLgoKYGBgc2gtc2Vzc2lvbgokIHN3YWdnZXJodWIgY29uZmlndXJlCj8gU3dhZ2dlckh1YiBVUkw6IGh0dHBzOi8vYXBpLnN3YWdnZXJodWIuY29tCj8gQVBJIEtleTogPHlvdXItYXBpLWtleT4KYGBgCgpFbnZpcm9ubWVudCB2YXJpYWJsZXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBjcmVhdGVkIGJ5IHRoaXMgY29tbWFuZC4KCiMgQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciBTd2FnZ2VySHViIE9uLVByZW1pc2UKCklmIHlvdXIgU3dhZ2dlckh1YiBPbi1QcmVtaXNlIGluc3RhbmNlIHVzZXMgYSAqKnNlbGYtc2lnbmVkIG9yIHByaXZhdGVseSBzaWduZWQgU1NMIGNlcnRpZmljYXRlKiosIHRoZXJlIGFyZSBhZGRpdGlvbmFsIHN0ZXBzIHJlcXVpcmVkIHRvIG1ha2UgdGhlIFN3YWdnZXJIdWIgQ0xJIHRydXN0IHRoaXMgY2VydGlmaWNhdGUuCgpCeSBkZWZhdWx0LCBOb2RlLmpzIHJlamVjdHMgc2VsZi1zaWduZWQgb3IgcHJpdmF0ZWx5IHNpZ25lZCBTU0wgY2VydGlmaWNhdGVzIGJlY2F1c2UgdGhlaXIgcm9vdCBDQSBpcyBub3Qga25vd24uIFlvdSB3aWxsIHNlZSBhbiBlcnJvciBsaWtlIHRoaXMgaW4gdGhlIENMSSBvdXRwdXQ6CgpgYGAKRmV0Y2hFcnJvcjogcmVxdWVzdCB0byBodHRwczovLy4uLiBmYWlsZWQsIHJlYXNvbjogc2VsZiBzaWduZWQgY2VydGlmaWNhdGUKYGBgCgpUaGUgc29sdXRpb24gaXMgdG8gdXNlIHRoZSBbYE5PREVfRVhUUkFfQ0FfQ0VSVFNgXShodHRwczovL25vZGVqcy5vcmcvYXBpL2NsaS5odG1sI2NsaV9ub2RlX2V4dHJhX2NhX2NlcnRzX2ZpbGUpIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNwZWNpZnkgY3VzdG9tIHRydXN0ZWQgY2VydGlmaWNhdGVzIGZvciBOb2RlLmpzLgoKU3RhcnQgYnkgY3JlYXRpbmcgYSAucGVtIGZpbGUgY29udGFpbmluZyB5b3VyIGN1c3RvbSB0cnVzdGVkIGNlcnRpZmljYXRlcyBpbiB0aGUgUEVNIGZvcm1hdC4KKiBJZiB0aGUgY2VydGlmaWNhdGUgaXMgX3NlbGYtc2lnbmVkXyAoc28gdGhhdCBpdCBpcyBpdHMgb3duIENBKSwgaW5jbHVkZSB0aGUgY2VydGlmaWNhdGUgaXRzZWxmLgoqIElmIHRoZSBjZXJ0aWZpY2F0ZSBpcyBfc2lnbmVkIGJ5IGEgcHJpdmF0ZSBDQV8sIGluY2x1ZGUgdGhlIENBIHJvb3QgYW5kIGFueSBpbnRlcm1lZGlhdGUgY2VydGlmaWNhdGVzLCBpbiBhbnkgb3JkZXIuIEJsYW5rIGxpbmVzIGFyZSBhbGxvd2VkLCBidXQgb3B0aW9uYWwsIGJldHdlZW4gaW5kaXZpZHVhbCBjZXJ0aWZpY2F0ZXMuCgpgYGAKLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCkNBIHJvb3QgY2VydGlmaWNhdGUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCkludGVybWVkaWF0ZSBjZXJ0aWZpY2F0ZSAxCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpJbnRlcm1lZGlhdGUgY2VydGlmaWNhdGUgMgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmBgYAoKU3BlY2lmeSB0aGUgcGF0aCB0byB0aGlzIFBFTSBmaWxlIGluIHRoZSBgTk9ERV9FWFRSQV9DQV9DRVJUU2AgZW52aXJvbm1lbnQgdmFyaWFibGUuCgptYWNPUy8qbml4L2Jhc2ggZXhhbXBsZXM6CmBgYHNoLXNlc3Npb24KZXhwb3J0IE5PREVfRVhUUkFfQ0FfQ0VSVFM9fi9Xb3JrL2V4dHJhLWNhLWNlcnRzLnBlbSAgICMgJ34nIG1lYW5zIHRoZSBob21lIGZvbGRlciBvZiB0aGUgbG9nZ2VkLWluIHVzZXIKCmV4cG9ydCBOT0RFX0VYVFJBX0NBX0NFUlRTPSRIT01FLy5zc2gvZXh0cmEtY2EtY2VydHMucGVtCgpleHBvcnQgTk9ERV9FWFRSQV9DQV9DRVJUUz0vVXNlcnMvdXNlcm5hbWUvV29yay9leHRyYS1jYS1jZXJ0cy5wZW0KYGBgCgpXaW5kb3dzIGV4YW1wbGVzOgpgYGAKOjogQm90aCBmb3J3YXJkIGFuZCBiYWNrc2xhc2hlcyBhcmUgT0sKc2V0IE5PREVfRVhUUkFfQ0FfQ0VSVFM9QzpcV29ya1xleHRyYS1jYS1jZXJ0cy5wZW0Kc2V0IE5PREVfRVhUUkFfQ0FfQ0VSVFM9QzovV29yay9leHRyYS1jYS1jZXJ0cy5wZW0KCjo6IFlvdSBjYW4gYWxzbyBkZWZpbmUgdGhlIHBhdGggaXRzZWxmIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcwpzZXQgTk9ERV9FWFRSQV9DQV9DRVJUUz0lVVNFUlBST0ZJTEUlXGV4dHJhLWNhLWNlcnRzLnBlbQpgYGAKCiMgVXNhZ2UKYGBgc2gtc2Vzc2lvbgokIHN3YWdnZXJodWIgQ09NTUFORApydW5uaW5nIGNvbW1hbmQuLi4KJCBzd2FnZ2VyaHViICgtdnwtLXZlcnNpb258dmVyc2lvbikKc3dhZ2dlcmh1Yi8wLjEuMiBkYXJ3aW4teDY0IG5vZGUtdjEyLjEzLjAKJCBzd2FnZ2VyaHViIC0taGVscCBbQ09NTUFORF0KVVNBR0UKICAkIHN3YWdnZXJodWIgQ09NTUFORAouLi4KYGBgCiMgQ29tbWFuZHMKPCEtLSBjb21tYW5kcyAtLT4KKiBbYHN3YWdnZXJodWIgYXBpOmNyZWF0ZSBPV05FUi9BUElfTkFNRS9bVkVSU0lPTl1gXSgjc3dhZ2dlcmh1Yi1hcGljcmVhdGUpCiogW2Bzd2FnZ2VyaHViIGFwaTpkZWxldGUgT1dORVIvQVBJX05BTUUvW1ZFUlNJT05dYF0oI3N3YWdnZXJodWItYXBpZGVsZXRlKQoqIFtgc3dhZ2dlcmh1YiBhcGk6Z2V0IE9XTkVSL0FQSV9OQU1FL1tWRVJTSU9OXWBdKCNzd2FnZ2VyaHViLWFwaWdldCkKKiBbYHN3YWdnZXJodWIgYXBpOnB1Ymxpc2ggT1dORVIvQVBJX05BTUUvVkVSU0lPTmBdKCNzd2FnZ2VyaHViLWFwaXB1Ymxpc2gpCiogW2Bzd2FnZ2VyaHViIGFwaTpzZXRkZWZhdWx0IE9XTkVSL0FQSV9OQU1FL1ZFUlNJT05gXSgjc3dhZ2dlcmh1Yi1hcGlzZXRkZWZhdWx0KQoqIFtgc3dhZ2dlcmh1YiBhcGk6dW5wdWJsaXNoIE9XTkVSL0FQSV9OQU1FL1ZFUlNJT05gXSgjc3dhZ2dlcmh1Yi1hcGl1bnB1Ymxpc2gpCiogW2Bzd2FnZ2VyaHViIGFwaTp1cGRhdGUgT1dORVIvQVBJX05BTUUvW1ZFUlNJT05dYF0oI3N3YWdnZXJodWItYXBpdXBkYXRlKQoqIFtgc3dhZ2dlcmh1YiBhcGk6dmFsaWRhdGUgT1dORVIvQVBJX05BTUUvW1ZFUlNJT05dYF0oI3N3YWdnZXJodWItYXBpdmFsaWRhdGUpCiogW2Bzd2FnZ2VyaHViIGFwaTp2YWxpZGF0ZTpkb3dubG9hZC1ydWxlcyBPV05FUmBdKCNzd2FnZ2VyaHViLWFwaXZhbGlkYXRlZG93bmxvYWQpCiogW2Bzd2FnZ2VyaHViIGFwaTp2YWxpZGF0ZTpsb2NhbGBdKCNzd2FnZ2VyaHViLWFwaXZhbGlkYXRlbG9jYWwpCiogW2Bzd2FnZ2VyaHViIGNvbmZpZ3VyZWBdKCNzd2FnZ2VyaHViLWNvbmZpZ3VyZSkKKiBbYHN3YWdnZXJodWIgZG9tYWluOmNyZWF0ZSBPV05FUi9ET01BSU5fTkFNRS9bVkVSU0lPTl1gXSgjc3dhZ2dlcmh1Yi1kb21haW5jcmVhdGUpCiogW2Bzd2FnZ2VyaHViIGRvbWFpbjpkZWxldGUgT1dORVIvRE9NQUlOX05BTUUvW1ZFUlNJT05dYF0oI3N3YWdnZXJodWItZG9tYWluZGVsZXRlKQoqIFtgc3dhZ2dlcmh1YiBkb21haW46Z2V0IE9XTkVSL0RPTUFJTl9OQU1FL1tWRVJTSU9OXWBdKCNzd2FnZ2VyaHViLWRvbWFpbmdldCkKKiBbYHN3YWdnZXJodWIgZG9tYWluOnB1Ymxpc2ggT1dORVIvRE9NQUlOX05BTUUvVkVSU0lPTmBdKCNzd2FnZ2VyaHViLWRvbWFpbnB1Ymxpc2gpCiogW2Bzd2FnZ2VyaHViIGRvbWFpbjpzZXRkZWZhdWx0IE9XTkVSL0RPTUFJTl9OQU1FL1ZFUlNJT05gXSgjc3dhZ2dlcmh1Yi1kb21haW5zZXRkZWZhdWx0KQoqIFtgc3dhZ2dlcmh1YiBkb21haW46dW5wdWJsaXNoIE9XTkVSL0RPTUFJTl9OQU1FL1ZFUlNJT05gXSgjc3dhZ2dlcmh1Yi1kb21haW51bnB1Ymxpc2gpCiogW2Bzd2FnZ2VyaHViIGRvbWFpbjp1cGRhdGUgT1dORVIvRE9NQUlOX05BTUUvW1ZFUlNJT05dYF0oI3N3YWdnZXJodWItZG9tYWludXBkYXRlKQoqIFtgc3dhZ2dlcmh1YiBoZWxwIFtDT01NQU5EXWBdKCNzd2FnZ2VyaHViLWhlbHApCiogW2Bzd2FnZ2VyaHViIGludGVncmF0aW9uOmNyZWF0ZSBPV05FUi9BUElfTkFNRS9bVkVSU0lPTl1gXSgjc3dhZ2dlcmh1Yi1pbnRlZ3JhdGlvbmNyZWF0ZSkKKiBbYHN3YWdnZXJodWIgaW50ZWdyYXRpb246ZGVsZXRlIE9XTkVSL0FQSV9OQU1FL1ZFUlNJT04vSU5URUdSQVRJT05fSURgXSgjc3dhZ2dlcmh1Yi1pbnRlZ3JhdGlvbmRlbGV0ZSkKKiBbYHN3YWdnZXJodWIgaW50ZWdyYXRpb246ZXhlY3V0ZSBPV05FUi9BUElfTkFNRS9WRVJTSU9OL0lOVEVHUkFUSU9OX0lEYF0oI3N3YWdnZXJodWItaW50ZWdyYXRpb25leGVjdXRlKQoqIFtgc3dhZ2dlcmh1YiBpbnRlZ3JhdGlvbjpnZXQgT1dORVIvQVBJX05BTUUvVkVSU0lPTi9JTlRFR1JBVElPTl9JRGBdKCNzd2FnZ2VyaHViLWludGVncmF0aW9uZ2V0KQoqIFtgc3dhZ2dlcmh1YiBpbnRlZ3JhdGlvbjpsaXN0IE9XTkVSL0FQSV9OQU1FL1tWRVJTSU9OXWBdKCNzd2FnZ2VyaHViLWludGVncmF0aW9ubGlzdCkKKiBbYHN3YWdnZXJodWIgaW50ZWdyYXRpb246dXBkYXRlIE9XTkVSL0FQSV9OQU1FL1ZFUlNJT04vSU5URUdSQVRJT05fSURgXSgjc3dhZ2dlcmh1Yi1pbnRlZ3JhdGlvbnVwZGF0ZSkKKiBbYHN3YWdnZXJodWIgcGx1Z2luc2BdKCNzd2FnZ2VyaHViLXBsdWdpbnMpCiogW2Bzd2FnZ2VyaHViIHBsdWdpbnM6YWRkIFBMVUdJTmBdKCNzd2FnZ2VyaHViLXBsdWdpbnNhZGQpCiogW2Bzd2FnZ2VyaHViIHBsdWdpbnM6aW5zcGVjdCBQTFVHSU4uLi5gXSgjc3dhZ2dlcmh1Yi1wbHVnaW5zaW5zcGVjdCkKKiBbYHN3YWdnZXJodWIgcGx1Z2luczppbnN0YWxsIFBMVUdJTmBdKCNzd2FnZ2VyaHViLXBsdWdpbnNpbnN0YWxsKQoqIFtgc3dhZ2dlcmh1YiBwbHVnaW5zOmxpbmsgUEFUSGBdKCNzd2FnZ2VyaHViLXBsdWdpbnNsaW5rKQoqIFtgc3dhZ2dlcmh1YiBwbHVnaW5zOnJlbW92ZSBbUExVR0lOXWBdKCNzd2FnZ2VyaHViLXBsdWdpbnNyZW1vdmUpCiogW2Bzd2FnZ2VyaHViIHBsdWdpbnM6cmVzZXRgXSgjc3dhZ2dlcmh1Yi1wbHVnaW5zcmVzZXQpCiogW2Bzd2FnZ2VyaHViIHBsdWdpbnM6dW5pbnN0YWxsIFtQTFVHSU5dYF0oI3N3YWdnZXJodWItcGx1Z2luc3VuaW5zdGFsbCkKKiBbYHN3YWdnZXJodWIgcGx1Z2luczp1bmxpbmsgW1BMVUdJTl1gXSgjc3dhZ2dlcmh1Yi1wbHVnaW5zdW5saW5rKQoqIFtgc3dhZ2dlcmh1YiBwbHVnaW5zOnVwZGF0ZWBdKCNzd2FnZ2VyaHViLXBsdWdpbnN1cGRhdGUpCiogW2Bzd2FnZ2VyaHViIHByb2plY3Q6YXBpOmFkZCBPV05FUi9QUk9KRUNUX05BTUUgQVBJYF0oI3N3YWdnZXJodWItcHJvamVjdGFwaWFkZCkKKiBbYHN3YWdnZXJodWIgcHJvamVjdDphcGk6cmVtb3ZlIE9XTkVSL1BST0pFQ1RfTkFNRSBBUElgXSgjc3dhZ2dlcmh1Yi1wcm9qZWN0YXBpcmVtb3ZlKQoqIFtgc3dhZ2dlcmh1YiBwcm9qZWN0OmNyZWF0ZSBPV05FUi9QUk9KRUNUX05BTUVgXSgjc3dhZ2dlcmh1Yi1wcm9qZWN0Y3JlYXRlKQoqIFtgc3dhZ2dlcmh1YiBwcm9qZWN0OmRlbGV0ZSBPV05FUi9QUk9KRUNUX05BTUVgXSgjc3dhZ2dlcmh1Yi1wcm9qZWN0ZGVsZXRlKQoqIFtgc3dhZ2dlcmh1YiBwcm9qZWN0OmRvbWFpbjphZGQgT1dORVIvUFJPSkVDVF9OQU1FIERPTUFJTmBdKCNzd2FnZ2VyaHViLXByb2plY3Rkb21haW5hZGQpCiogW2Bzd2FnZ2VyaHViIHByb2plY3Q6ZG9tYWluOnJlbW92ZSBPV05FUi9QUk9KRUNUX05BTUUgRE9NQUlOYF0oI3N3YWdnZXJodWItcHJvamVjdGRvbWFpbnJlbW92ZSkKKiBbYHN3YWdnZXJodWIgcHJvamVjdDpnZXQgT1dORVIvUFJPSkVDVF9OQU1FYF0oI3N3YWdnZXJodWItcHJvamVjdGdldCkKKiBbYHN3YWdnZXJodWIgcHJvamVjdDpsaXN0IFtPV05FUl1gXSgjc3dhZ2dlcmh1Yi1wcm9qZWN0bGlzdCkKKiBbYHN3YWdnZXJodWIgcHJvamVjdDptZW1iZXI6bGlzdCBPV05FUi9QUk9KRUNUX05BTUVgXSgjc3dhZ2dlcmh1Yi1wcm9qZWN0bWVtYmVybGlzdCkKKiBbYHN3YWdnZXJodWIgc3BlY3RyYWw6dXBsb2FkIE9XTkVSL1JVTEVTRVRfTkFNRSBkaXJlY3RvcnlgXSgjc3dhZ2dlcmh1Yi1zcGVjdHJhbHVwbG9hZCkKKiBbYHN3YWdnZXJodWIgc3BlY3RyYWw6ZG93bmxvYWQgT1dORVIvUlVMRVNFVF9OQU1FIGRpcmVjdG9yeWBdKCNzd2FnZ2VyaHViLXNwZWN0cmFsZG93bmxvYWQpCgojIyBgc3dhZ2dlcmh1YiBhcGk6Y3JlYXRlYAoKY3JlYXRlcyBhIG5ldyBBUEkgLyBBUEkgdmVyc2lvbiBmcm9tIGEgWUFNTC9KU09OIGZpbGUKCmBgYApVU0FHRQogICQgc3dhZ2dlcmh1YiBhcGk6Y3JlYXRlIE9XTkVSL0FQSV9OQU1FL1tWRVJTSU9OXSBbLS12aXNpYmlsaXR5IHB1YmxpY3xwcml2YXRlXSAoLS1wdWJsaXNoZWQgcHVibGlzaHx1bnB1Ymxpc2gKICAgIC1mIDx2YWx1ZT4pIFstLXNldGRlZmF1bHQgXSBbLWhdCgpBUkdVTUVOVFMKICBPV05FUi9BUElfTkFNRS9bVkVSU0lPTl0gIEFQSSB0byBjcmVhdGUgb24gU3dhZ2dlckh1YgoKRkxBR1MKICAtZiwgLS1maWxlPTx2YWx1ZT4gICAgICAgICAocmVxdWlyZWQpIGZpbGUgbG9jYXRpb24gb2YgQVBJIHRvIGNyZWF0ZQogIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgIFNob3cgQ0xJIGhlbHAuCiAgICAgIC0tcHVibGlzaGVkPTxvcHRpb24+ICAgW2RlZmF1bHQ6IHVucHVibGlzaF0gc2V0cyB0aGUgbGlmZWN5Y2xlIHNldHRpbmcgb2YgdGhlIEFQSSB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbnM6IHB1Ymxpc2h8dW5wdWJsaXNoPgogICAgICAtLXNldGRlZmF1bHQgICAgICAgICAgIHNldHMgQVBJIHZlcnNpb24gdG8gYmUgdGhlIGRlZmF1bHQKICAgICAgLS12aXNpYmlsaXR5PTxvcHRpb24+ICBbZGVmYXVsdDogcHJpdmF0ZV0gdmlzaWJpbGl0eSBvZiBBUEkgaW4gU3dhZ2dlckh1YgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25zOiBwdWJsaWN8cHJpdmF0ZT4KCkRFU0NSSVBUSU9OCiAgY3JlYXRlcyBhIG5ldyBBUEkgLyBBUEkgdmVyc2lvbiBmcm9tIGEgWUFNTC9KU09OIGZpbGUKICBUaGUgQVBJIHZlcnNpb24gZnJvbSB0aGUgZmlsZSB3aWxsIGJlIHVzZWQgdW5sZXNzIHRoZSB2ZXJzaW9uIGlzIHNwZWNpZmllZCBpbiB0aGUgY29tbWFuZCBhcmd1bWVudC4KICBBbiBlcnJvciB3aWxsIG9jY3VyIGlmIHRoZSBBUEkgdmVyc2lvbiBhbHJlYWR5IGV4aXN0cy4KCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBhcGk6Y3JlYXRlIG9yZ2FuaXphdGlvbi9hcGkvMS4wLjAgLS1maWxlIGFwaS55YW1sIC0tdmlzaWJpbGl0eSBwdWJsaWMKCiAgJCBzd2FnZ2VyaHViIGFwaTpjcmVhdGUgb3JnYW5pemF0aW9uL2FwaSAtLWZpbGUgYXBpLnlhbWwKCiAgJCBzd2FnZ2VyaHViIGFwaTpjcmVhdGUgb3JnYW5pemF0aW9uL2FwaS8xLjAuMCAtLXB1Ymxpc2hlZD1wdWJsaXNoIC0tZmlsZSBhcGkuanNvbgoKICAkIHN3YWdnZXJodWIgYXBpOmNyZWF0ZSBvcmdhbml6YXRpb24vYXBpLzEuMC4wIC0tc2V0ZGVmYXVsdCAtLWZpbGUgYXBpLmpzb24KCiAgJCBzd2FnZ2VyaHViIGFwaTpjcmVhdGUgb3JnYW5pemF0aW9uL2FwaS8xLjAuMCAtLXB1Ymxpc2hlZD1wdWJsaXNoIC0tc2V0ZGVmYXVsdCAtLWZpbGUgYXBpLmpzb24KYGBgCgpfU2VlIGNvZGU6IFtzcmMvY29tbWFuZHMvYXBpL2NyZWF0ZS5qc10oaHR0cHM6Ly9naXRodWIuY29tL1NtYXJ0QmVhci9zd2FnZ2VyaHViLWNsaS9ibG9iL3YwLjkuMS9zcmMvY29tbWFuZHMvYXBpL2NyZWF0ZS5qcylfCgojIyBgc3dhZ2dlcmh1YiBhcGk6ZGVsZXRlYAoKZGVsZXRlIGFuIEFQSSBvciBBUEkgdmVyc2lvbgoKYGBgClVTQUdFCiAgJCBzd2FnZ2VyaHViIGFwaTpkZWxldGUgT1dORVIvQVBJX05BTUUvW1ZFUlNJT05dIFstZl0gWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIvQVBJX05BTUUvW1ZFUlNJT05dICBBUEkgdG8gZGVsZXRlIG9uIFN3YWdnZXJIdWIKCkZMQUdTCiAgLWYsIC0tZm9yY2UgIGRlbGV0ZSBBUEkgd2l0aG91dCBwcm9tcHRpbmcgZm9yIGNvbmZpcm1hdGlvbgogIC1oLCAtLWhlbHAgICBTaG93IENMSSBoZWxwLgoKREVTQ1JJUFRJT04KICBkZWxldGUgYW4gQVBJIG9yIEFQSSB2ZXJzaW9uCgoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgYXBpOmRlbGV0ZSBvcmdhbml6YXRpb24vYXBpLzEuMC4wCgogICQgc3dhZ2dlcmh1YiBhcGk6ZGVsZXRlIG9yZ2FuaXphdGlvbi9hcGkKCiAgJCBzd2FnZ2VyaHViIGFwaTpkZWxldGUgb3JnYW5pemF0aW9uL2FwaSAtLWZvcmNlCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL2FwaS9kZWxldGUuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvYmxvYi92MC45LjEvc3JjL2NvbW1hbmRzL2FwaS9kZWxldGUuanMpXwoKIyMgYHN3YWdnZXJodWIgYXBpOmdldGAKCmZldGNoZXMgYW4gQVBJIGRlZmluaXRpb24KCmBgYApVU0FHRQogICQgc3dhZ2dlcmh1YiBhcGk6Z2V0IE9XTkVSL0FQSV9OQU1FL1tWRVJTSU9OXSBbLWpdIFstcl0gWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIvQVBJX05BTUUvW1ZFUlNJT05dICBBUEkgdG8gZmV0Y2ggZnJvbSBTd2FnZ2VyaHViCgpGTEFHUwogIC1oLCAtLWhlbHAgICAgICBTaG93IENMSSBoZWxwLgogIC1qLCAtLWpzb24gICAgICByZXR1cm5zIHRoZSBBUEkgaW4gSlNPTiBmb3JtYXQuCiAgLXIsIC0tcmVzb2x2ZWQgIGdldHMgdGhlIHJlc29sdmVkIEFQSSBkZWZpbml0aW9uIChzdXBwb3J0ZWQgaW4gdjEuMjUrKS4KCkRFU0NSSVBUSU9OCiAgZmV0Y2hlcyBhbiBBUEkgZGVmaW5pdGlvbgogIFdoZW4gVkVSU0lPTiBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGFyZ3VtZW50LCB0aGUgZGVmYXVsdCB2ZXJzaW9uIHdpbGwgYmUgcmV0dXJuZWQuCiAgUmV0dXJucyB0aGUgQVBJIGluIFlBTUwgZm9ybWF0IGJ5IGRlZmF1bHQuCgoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgYXBpOmdldCBvcmdhbml6YXRpb24vYXBpCgogICQgc3dhZ2dlcmh1YiBhcGk6Z2V0IG9yZ2FuaXphdGlvbi9hcGkvMS4wLjAgLS1qc29uCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL2FwaS9nZXQuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvYmxvYi92MC45LjEvc3JjL2NvbW1hbmRzL2FwaS9nZXQuanMpXwoKIyMgYHN3YWdnZXJodWIgYXBpOnB1Ymxpc2hgCgpwdWJsaXNoIGFuIEFQSSB2ZXJzaW9uCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgYXBpOnB1Ymxpc2ggT1dORVIvQVBJX05BTUUvVkVSU0lPTiBbLWZdIFstaF0KCkFSR1VNRU5UUwogIE9XTkVSL0FQSV9OQU1FL1ZFUlNJT04gIEFQSSB0byBwdWJsaXNoIG9uIFN3YWdnZXJodWIKCkZMQUdTCiAgLWYsIC0tZm9yY2UgIHB1Ymxpc2ggQVBJIHdpdGhvdXQgcHJvbXB0aW5nIGZvciBjb25maXJtYXRpb24KICAtaCwgLS1oZWxwICAgU2hvdyBDTEkgaGVscC4KCkRFU0NSSVBUSU9OCiAgcHVibGlzaCBhbiBBUEkgdmVyc2lvbgoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgYXBpOnB1Ymxpc2ggb3JnYW5pemF0aW9uL2FwaS8xLjAuMAoKICAkIHN3YWdnZXJodWIgYXBpOnB1Ymxpc2ggb3JnYW5pemF0aW9uL2FwaS8xLjAuMCAtLWZvcmNlCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL2FwaS9wdWJsaXNoLmpzXShodHRwczovL2dpdGh1Yi5jb20vU21hcnRCZWFyL3N3YWdnZXJodWItY2xpL2Jsb2IvdjAuOS4xL3NyYy9jb21tYW5kcy9hcGkvcHVibGlzaC5qcylfCgojIyBgc3dhZ2dlcmh1YiBhcGk6c2V0ZGVmYXVsdGAKCnNldCB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mIGFuIEFQSQoKYGBgClVTQUdFCiAgJCBzd2FnZ2VyaHViIGFwaTpzZXRkZWZhdWx0IE9XTkVSL0FQSV9OQU1FL1ZFUlNJT04gWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIvQVBJX05BTUUvVkVSU0lPTiAgQVBJIHRvIHNldCBhcyBkZWZhdWx0IG9uIFN3YWdnZXJodWIKCkZMQUdTCiAgLWgsIC0taGVscCAgU2hvdyBDTEkgaGVscC4KCkRFU0NSSVBUSU9OCiAgc2V0IHRoZSBkZWZhdWx0IHZlcnNpb24gb2YgYW4gQVBJCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBhcGk6c2V0ZGVmYXVsdCBvcmdhbml6YXRpb24vYXBpLzIuMC4wCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL2FwaS9zZXRkZWZhdWx0LmpzXShodHRwczovL2dpdGh1Yi5jb20vU21hcnRCZWFyL3N3YWdnZXJodWItY2xpL2Jsb2IvdjAuOS4xL3NyYy9jb21tYW5kcy9hcGkvc2V0ZGVmYXVsdC5qcylfCgojIyBgc3dhZ2dlcmh1YiBhcGk6dW5wdWJsaXNoYAoKdW5wdWJsaXNoIGFuIEFQSSB2ZXJzaW9uCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgYXBpOnVucHVibGlzaCBPV05FUi9BUElfTkFNRS9WRVJTSU9OIFstaF0KCkFSR1VNRU5UUwogIE9XTkVSL0FQSV9OQU1FL1ZFUlNJT04gIEFQSSBpZGVudGlmaWVyCgpGTEFHUwogIC1oLCAtLWhlbHAgIFNob3cgQ0xJIGhlbHAuCgpERVNDUklQVElPTgogIHVucHVibGlzaCBhbiBBUEkgdmVyc2lvbgoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgYXBpOnVucHVibGlzaCBvcmdhbml6YXRpb24vYXBpLzEuMC4wCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL2FwaS91bnB1Ymxpc2guanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvYmxvYi92MC45LjEvc3JjL2NvbW1hbmRzL2FwaS91bnB1Ymxpc2guanMpXwoKIyMgYHN3YWdnZXJodWIgYXBpOnVwZGF0ZWAKCnVwZGF0ZSBhbiBBUEkKCmBgYApVU0FHRQogICQgc3dhZ2dlcmh1YiBhcGk6dXBkYXRlIE9XTkVSL0FQSV9OQU1FL1tWRVJTSU9OXSBbLWYgPHZhbHVlPl0gWy0tdmlzaWJpbGl0eSBwdWJsaWN8cHJpdmF0ZV0gWy0tcHVibGlzaGVkCiAgICBwdWJsaXNofHVucHVibGlzaF0gWy0tc2V0ZGVmYXVsdF0gWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIvQVBJX05BTUUvW1ZFUlNJT05dICBBUEkgdG8gdXBkYXRlIG9uIFN3YWdnZXJIdWIKCkZMQUdTCiAgLWYsIC0tZmlsZT08dmFsdWU+ICAgICAgICAgZmlsZSBsb2NhdGlvbiBvZiBBUEkgdG8gdXBkYXRlCiAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgU2hvdyBDTEkgaGVscC4KICAgICAgLS1wdWJsaXNoZWQ9PG9wdGlvbj4gICBzZXRzIHRoZSBsaWZlY3ljbGUgc2V0dGluZyBvZiB0aGUgQVBJIHZlcnNpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uczogcHVibGlzaHx1bnB1Ymxpc2g+CiAgICAgIC0tc2V0ZGVmYXVsdCAgICAgICAgICAgc2V0cyBBUEkgdmVyc2lvbiB0byBiZSB0aGUgZGVmYXVsdAogICAgICAtLXZpc2liaWxpdHk9PG9wdGlvbj4gIHZpc2liaWxpdHkgb2YgQVBJIGluIFN3YWdnZXJIdWIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uczogcHVibGljfHByaXZhdGU+CgpERVNDUklQVElPTgogIHVwZGF0ZSBhbiBBUEkKICBUaGUgQVBJIHZlcnNpb24gZnJvbSB0aGUgZmlsZSB3aWxsIGJlIHVzZWQgdW5sZXNzIHRoZSB2ZXJzaW9uIGlzIHNwZWNpZmllZCBpbiB0aGUgY29tbWFuZCBhcmd1bWVudC4KICBXaGVuIG5vIGZpbGUgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGRlZmF1bHQgQVBJIHZlcnNpb24gd2lsbCBiZSB1cGRhdGVkLgogIFRoZSBBUEkgdmlzaWJpbGl0eSBjYW4gYmUgY2hhbmdlZCBieSB1c2luZyB2aXNpYmlsaXR5IGZsYWcuCgoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgYXBpOnVwZGF0ZSBvcmdhbml6YXRpb24vYXBpIC0tZmlsZSBhcGkueWFtbAoKICAkIHN3YWdnZXJodWIgYXBpOnVwZGF0ZSBvcmdhbml6YXRpb24vYXBpLzEuMC4wIC0tZmlsZSBhcGkuanNvbgoKICAkIHN3YWdnZXJodWIgYXBpOnVwZGF0ZSBvcmdhbml6YXRpb24vYXBpLzEuMC4wIC0tcHVibGlzaGVkPXB1Ymxpc2ggLS1maWxlIGFwaS5qc29uCgogICQgc3dhZ2dlcmh1YiBhcGk6dXBkYXRlIG9yZ2FuaXphdGlvbi9hcGkvMS4wLjAgLS1zZXRkZWZhdWx0IC0tZmlsZSBhcGkuanNvbgoKICAkIHN3YWdnZXJodWIgYXBpOnVwZGF0ZSBvcmdhbml6YXRpb24vYXBpLzEuMC4wIC0tcHVibGlzaGVkPXVucHVibGlzaCAtLXNldGRlZmF1bHQgLS1maWxlIGFwaS5qc29uCgogICQgc3dhZ2dlcmh1YiBhcGk6dXBkYXRlIG9yZ2FuaXphdGlvbi9hcGkvMS4wLjAgLS12aXNpYmlsaXR5PXByaXZhdGUKYGBgCgpfU2VlIGNvZGU6IFtzcmMvY29tbWFuZHMvYXBpL3VwZGF0ZS5qc10oaHR0cHM6Ly9naXRodWIuY29tL1NtYXJ0QmVhci9zd2FnZ2VyaHViLWNsaS9ibG9iL3YwLjkuMS9zcmMvY29tbWFuZHMvYXBpL3VwZGF0ZS5qcylfCgojIyBgc3dhZ2dlcmh1YiBhcGk6dmFsaWRhdGVgCgpHZXQgdmFsaWRhdGlvbiByZXN1bHQgZm9yIGFuIEFQSSB2ZXJzaW9uCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgYXBpOnZhbGlkYXRlIE9XTkVSL0FQSV9OQU1FL1tWRVJTSU9OXSBbLWNdIFstal0gWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIvQVBJX05BTUUvW1ZFUlNJT05dICBBUEkgdG8gZmV0Y2ggdmFsaWRhdGlvbiBlcnJvcnMgZm9yIGZyb20gU3dhZ2dlcmh1YgoKRkxBR1MKICAtYywgLS1mYWlsLW9uLWNyaXRpY2FsICBFeGl0IHdpdGggZXJyb3IgY29kZSAxIGlmIHRoZXJlIGFyZSBjcml0aWNhbCBzdGFuZGFyZGl6YXRpb24gZXJyb3JzIHByZXNlbnQKICAtaCwgLS1oZWxwICAgICAgICAgICAgICBTaG93IENMSSBoZWxwLgogIC1qLCAtLWpzb24gICAgICAgICAgICAgIFByaW50IG91dHB1dCBpbiBKU09OIGluc3RlYWQgb2YgdGFibGUgZm9ybWF0CgpERVNDUklQVElPTgogIEdldCB2YWxpZGF0aW9uIHJlc3VsdCBmb3IgYW4gQVBJIHZlcnNpb24KICBXaGVuIFZFUlNJT04gaXMgbm90IGluY2x1ZGVkIGluIHRoZSBhcmd1bWVudCwgdGhlIGRlZmF1bHQgdmVyc2lvbiB3aWxsIGJlIHZhbGlkYXRlZC4KICBBbiBlcnJvciB3aWxsIG9jY3VyIGlmIHRoZSBBUEkgdmVyc2lvbiBkb2VzIG5vdCBleGlzdC4KICBJZiB0aGUgZmxhZyBgLWNgIG9yIGAtLWZhaWxPbkNyaXRpY2FsYCBpcyB1c2VkIGFuZCB0aGVyZSBhcmUgc3RhbmRhcmRpemF0aW9uCiAgZXJyb3JzIHdpdGggYENyaXRpY2FsYCBzZXZlcml0eSBwcmVzZW50LCB0aGUgY29tbWFuZCB3aWxsIGV4aXQgd2l0aCBlcnJvciBjb2RlIGAxYC4KCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBhcGk6dmFsaWRhdGUgb3JnYW5pemF0aW9uL2FwaS8xLjAuMAoKICAkIHN3YWdnZXJodWIgYXBpOnZhbGlkYXRlIC1jIC1qIG9yZ2FuaXphdGlvbi9hcGkvMS4wLjAKCiAgJCBzd2FnZ2VyaHViIGFwaTp2YWxpZGF0ZSAtLWZhaWwtb24tY3JpdGljYWwgLS1qc29uIG9yZ2FuaXphdGlvbi9hcGkKYGBgCgpfU2VlIGNvZGU6IFtzcmMvY29tbWFuZHMvYXBpL3ZhbGlkYXRlL2luZGV4LmpzXShodHRwczovL2dpdGh1Yi5jb20vU21hcnRCZWFyL3N3YWdnZXJodWItY2xpL2Jsb2IvdjAuOS4xL3NyYy9jb21tYW5kcy9hcGkvdmFsaWRhdGUvaW5kZXguanMpXwoKIyMgYHN3YWdnZXJodWIgYXBpOnZhbGlkYXRlOmRvd25sb2FkLXJ1bGVzYAoKR2V0IGV4aXN0aW5nIFN3YWdnZXJIdWIncyBvcmdhbml6YXRpb24gc3RhbmRhcmRpemF0aW9uIHJ1bGVzZXQuCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgYXBpOnZhbGlkYXRlOmRvd25sb2FkLXJ1bGVzIE9XTkVSIFstc10gWy1kXSBbLWhdCgpBUkdVTUVOVFMKICBPV05FUiAgV2hpY2ggb3JnYW5pemF0aW9uIHN0YW5kYXJkaXphdGlvbiBydWxlcyB0byBmZXRjaCBmcm9tIFN3YWdnZXJIdWIKCkZMQUdTCiAgLWQsIC0taW5jbHVkZS1kaXNhYmxlZC1ydWxlcyAgSW5jbHVkZXMgZGlzYWJsZWQgcnVsZXMgaW4gZmV0Y2hlZCBvcmdhbml6YXRpb24ncyBydWxlc2V0CiAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgICAgU2hvdyBDTEkgaGVscC4KICAtcywgLS1pbmNsdWRlLXN5c3RlbS1ydWxlcyAgICBJbmNsdWRlcyBzeXN0ZW0gcnVsZXMgaW4gZmV0Y2hlZCBvcmdhbml6YXRpb24ncyBydWxlc2V0CgpERVNDUklQVElPTgogIEdldCBleGlzdGluZyBTd2FnZ2VySHViJ3Mgb3JnYW5pemF0aW9uIHN0YW5kYXJkaXphdGlvbiBydWxlc2V0LgogIFJlcXVpcmVzIG9yZ2FuaXphdGlvbiBuYW1lIGFyZ3VtZW50LiBBbiBlcnJvciB3aWxsIG9jY3VyIGlmIHByb3ZpZGVkIG9yZ2FuaXphdGlvbiBkb2Vzbid0IGV4aXN0CiAgb3IgeW91ciBhY2NvdW50IGlzIG5vdCBwZXJtaXR0ZWQgdG8gYWNjZXNzIHRoYXQgb3JnYW5pemF0aW9uJ3Mgc2V0dGluZ3MuCiAgSWYgdGhlIGZsYWcgYC1zYCBvciBgLS1pbmNsdWRlLXN5c3RlbS1ydWxlc2AgaXMgdXNlZCwgdGhlIHJldHVybmVkIHJ1bGVzZXQgd2lsbCBhbHNvIGluY2x1ZGUgU3dhZ2dlckh1YiBzeXN0ZW0gcnVsZXMuCiAgSWYgdGhlIGZsYWcgYC1kYCBvciBgLS1pbmNsdWRlLWRpc2FibGVkLXJ1bGVzYCBpcyB1c2VkLCB0aGUgcmV0dXJuZWQgcnVsZXNldCB3aWxsIGFsc28gaW5jbHVkZSBkaXNhYmxlZCBjdXN0b20gcnVsZXMKCkVYQU1QTEVTCiAgJCBzd2FnZ2VyaHViIGFwaTp2YWxpZGF0ZTpkb3dubG9hZC1ydWxlcyBteU9yZyAtcwoKICAkIHN3YWdnZXJodWIgYXBpOnZhbGlkYXRlOmRvd25sb2FkLXJ1bGVzIG15T3JnIC0taW5jbHVkZS1kaXNhYmxlZC1ydWxlcyAtcwpgYGAKCl9TZWUgY29kZTogW3NyYy9jb21tYW5kcy9hcGkvdmFsaWRhdGUvZG93bmxvYWQtcnVsZXMuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvYmxvYi92MC45LjEvc3JjL2NvbW1hbmRzL2FwaS92YWxpZGF0ZS9kb3dubG9hZC1ydWxlcy5qcylfCgojIyBgc3dhZ2dlcmh1YiBhcGk6dmFsaWRhdGU6bG9jYWxgCgpSdW5zIGEgc2NhbiBhZ2FpbnN0IGEgbG9jYWwgQVBJIGRlZmluaXRpb24gdXNpbmcgdGhlIG9yZ2FuaXphdGlvbidzIHN0YW5kYXJkaXphdGlvbiBjb25maWd1cmF0aW9uIG9uIFN3YWdnZXJIdWIuCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgYXBpOnZhbGlkYXRlOmxvY2FsIC1mIDx2YWx1ZT4gLW8gPHZhbHVlPiBbLWNdIFstal0gWy1oXQoKRkxBR1MKICAtYywgLS1mYWlsLW9uLWNyaXRpY2FsICAgICAgRXhpdCB3aXRoIGVycm9yIGNvZGUgMSBpZiB0aGVyZSBhcmUgY3JpdGljYWwgc3RhbmRhcmRpemF0aW9uIGVycm9ycyBwcmVzZW50CiAgLWYsIC0tZmlsZT08dmFsdWU+ICAgICAgICAgIChyZXF1aXJlZCkgUGF0aCBvZiBBUEkgZGVmaW5pdGlvbiBmaWxlIHRvIHJ1biBzY2FuIGFnYWluc3QKICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICAgU2hvdyBDTEkgaGVscC4KICAtaiwgLS1qc29uICAgICAgICAgICAgICAgICAgUHJpbnQgb3V0cHV0IGluIEpTT04gaW5zdGVhZCBvZiB0YWJsZSBmb3JtYXQKICAtbywgLS1vcmdhbml6YXRpb249PHZhbHVlPiAgKHJlcXVpcmVkKSBXaGljaCBvcmdhbml6YXRpb24ncyBzdGFuZGFyZGl6YXRpb24gc2V0dGluZ3MgdG8gdXNlIGZvciBsaW50aW5nIHRoZSB0YXJnZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbgoKREVTQ1JJUFRJT04KICBSdW5zIGEgc2NhbiBhZ2FpbnN0IGEgbG9jYWwgQVBJIGRlZmluaXRpb24gdXNpbmcgdGhlIG9yZ2FuaXphdGlvbidzIHN0YW5kYXJkaXphdGlvbiBjb25maWd1cmF0aW9uIG9uIFN3YWdnZXJIdWIuCiAgSWYgdGhlIGZsYWcgYC1jYCBvciBgLS1mYWlsT25Dcml0aWNhbGAgaXMgdXNlZCBhbmQgdGhlcmUgYXJlIHN0YW5kYXJkaXphdGlvbgogIGVycm9ycyB3aXRoIGBDcml0aWNhbGAgc2V2ZXJpdHkgcHJlc2VudCwgdGhlIGNvbW1hbmQgd2lsbCBleGl0IHdpdGggZXJyb3IgY29kZSBgMWAuCgoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgYXBpOnZhbGlkYXRlOmxvY2FsIC1vIG15T3JnIC1mIC4vbXktYXBpLnlhbWwgLWMgLWogCgogICQgc3dhZ2dlcmh1YiBhcGk6dmFsaWRhdGU6bG9jYWwgLS1vcmdhbml6YXRpb24gbXlPcmcgLS1maWxlIC4vbXktYXBpL2pzb24gLS1mYWlsLW9uLWNyaXRpY2FsIC0tanNvbgpgYGAKCl9TZWUgY29kZTogW3NyYy9jb21tYW5kcy9hcGkvdmFsaWRhdGUvbG9jYWwuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvYmxvYi92MC45LjEvc3JjL2NvbW1hbmRzL2FwaS92YWxpZGF0ZS9sb2NhbC5qcylfCgojIyBgc3dhZ2dlcmh1YiBjb25maWd1cmVgCgpjb25maWd1cmUgYXBwbGljYXRpb24gc2V0dGluZ3MKCmBgYApVU0FHRQogICQgc3dhZ2dlcmh1YiBjb25maWd1cmUgWy1oXQoKRkxBR1MKICAtaCwgLS1oZWxwICBTaG93IENMSSBoZWxwLgoKREVTQ1JJUFRJT04KICBjb25maWd1cmUgYXBwbGljYXRpb24gc2V0dGluZ3MKICBFbnRlciB0aGUgU3dhZ2dlckh1YiBVUkwgLSBkZWZhdWx0IGlzIGh0dHBzOi8vYXBpLnN3YWdnZXJodWIuY29tCiAgQ3VzdG9tZXJzIHdpdGggb24tcHJlbWlzZSBpbnN0YWxsYXRpb25zIG5lZWQgdG8gcG9pbnQgdGhpcyB0byB0aGVpciBvbi1wcmVtaXNlIEFQSSwgd2hpY2ggaXMKICBodHRwKHMpOi8ve3N3YWdnZXJodWItaG9zdH0vdjEKICBFbnRlciB0aGUgQVBJIEtleSAtIHRoaXMgY2FuIGJlIHJldHJpZXZlZCBmcm9tIGh0dHBzOi8vYXBwLnN3YWdnZXJodWIuY29tL3NldHRpbmdzL2FwaUtleQogIFlvdSBjYW4gc2V0IHRoZXNlIGFzIGVudmlyb25tZW50IHZhcmlhYmxlczogU1dBR0dFUkhVQl9VUkwsIFNXQUdHRVJIVUJfQVBJX0tFWS4gVGhlc2UgdGFrZSBwcmlvcml0eSBvdmVyIGNvbmZpZwogIHNldHRpbmdzLgpgYGAKCl9TZWUgY29kZTogW3NyYy9jb21tYW5kcy9jb25maWd1cmUuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvYmxvYi92MC45LjEvc3JjL2NvbW1hbmRzL2NvbmZpZ3VyZS5qcylfCgojIyBgc3dhZ2dlcmh1YiBkb21haW46Y3JlYXRlYAoKY3JlYXRlcyBhIG5ldyBkb21haW4gLyBkb21haW4gdmVyc2lvbiBmcm9tIGEgWUFNTC9KU09OIGZpbGUKCmBgYApVU0FHRQogICQgc3dhZ2dlcmh1YiBkb21haW46Y3JlYXRlIE9XTkVSL0RPTUFJTl9OQU1FL1tWRVJTSU9OXSBbLS12aXNpYmlsaXR5IHB1YmxpY3xwcml2YXRlXSAoLS1wdWJsaXNoZWQKICAgIHB1Ymxpc2h8dW5wdWJsaXNoIC1mIDx2YWx1ZT4pIFstLXNldGRlZmF1bHQgXSBbLWhdCgpBUkdVTUVOVFMKICBPV05FUi9ET01BSU5fTkFNRS9bVkVSU0lPTl0gIERvbWFpbiB0byBjcmVhdGUgb24gU3dhZ2dlckh1YgoKRkxBR1MKICAtZiwgLS1maWxlPTx2YWx1ZT4gICAgICAgICAocmVxdWlyZWQpIGZpbGUgbG9jYXRpb24gb2YgZG9tYWluIHRvIGNyZWF0ZQogIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgIFNob3cgQ0xJIGhlbHAuCiAgICAgIC0tcHVibGlzaGVkPTxvcHRpb24+ICAgW2RlZmF1bHQ6IHVucHVibGlzaF0gc2V0cyB0aGUgbGlmZWN5Y2xlIHNldHRpbmcgb2YgdGhlIGRvbWFpbiB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbnM6IHB1Ymxpc2h8dW5wdWJsaXNoPgogICAgICAtLXNldGRlZmF1bHQgICAgICAgICAgIHNldHMgZG9tYWluIHZlcnNpb24gdG8gYmUgdGhlIGRlZmF1bHQKICAgICAgLS12aXNpYmlsaXR5PTxvcHRpb24+ICBbZGVmYXVsdDogcHJpdmF0ZV0gdmlzaWJpbGl0eSBvZiBkb21haW4gaW4gU3dhZ2dlckh1YgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25zOiBwdWJsaWN8cHJpdmF0ZT4KCkRFU0NSSVBUSU9OCiAgY3JlYXRlcyBhIG5ldyBkb21haW4gLyBkb21haW4gdmVyc2lvbiBmcm9tIGEgWUFNTC9KU09OIGZpbGUKICBUaGUgZG9tYWluIHZlcnNpb24gZnJvbSB0aGUgZmlsZSB3aWxsIGJlIHVzZWQgdW5sZXNzIHRoZSB2ZXJzaW9uIGlzIHNwZWNpZmllZCBpbiB0aGUgY29tbWFuZCBhcmd1bWVudC4KICBBbiBlcnJvciB3aWxsIG9jY3VyIGlmIHRoZSBkb21haW4gdmVyc2lvbiBhbHJlYWR5IGV4aXN0cy4KCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBkb21haW46Y3JlYXRlIG9yZ2FuaXphdGlvbi9kb21haW4vMS4wLjAgLS1maWxlIGRvbWFpbi55YW1sIC0tdmlzaWJpbGl0eSBwdWJsaWMKCiAgJCBzd2FnZ2VyaHViIGRvbWFpbjpjcmVhdGUgb3JnYW5pemF0aW9uL2RvbWFpbiAtLWZpbGUgZG9tYWluLnlhbWwKCiAgJCBzd2FnZ2VyaHViIGRvbWFpbjpjcmVhdGUgb3JnYW5pemF0aW9uL2RvbWFpbi8xLjAuMCAtLXB1Ymxpc2ggLS1maWxlIGRvbWFpbi5qc29uCgogICQgc3dhZ2dlcmh1YiBkb21haW46Y3JlYXRlIG9yZ2FuaXphdGlvbi9kb21haW4vMS4wLjAgLS1zZXRkZWZhdWx0IC0tZmlsZSBkb21haW4uanNvbgoKICAkIHN3YWdnZXJodWIgZG9tYWluOmNyZWF0ZSBvcmdhbml6YXRpb24vZG9tYWluLzEuMC4wIC0tcHVibGlzaCAtLXNldGRlZmF1bHQgLS1maWxlIGRvbWFpbi5qc29uCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL2RvbWFpbi9jcmVhdGUuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvYmxvYi92MC45LjEvc3JjL2NvbW1hbmRzL2RvbWFpbi9jcmVhdGUuanMpXwoKIyMgYHN3YWdnZXJodWIgZG9tYWluOmRlbGV0ZWAKCmRlbGV0ZSBhIGRvbWFpbiBvciBkb21haW4gdmVyc2lvbgoKYGBgClVTQUdFCiAgJCBzd2FnZ2VyaHViIGRvbWFpbjpkZWxldGUgT1dORVIvRE9NQUlOX05BTUUvW1ZFUlNJT05dIFstZl0gWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIvRE9NQUlOX05BTUUvW1ZFUlNJT05dICBEb21haW4gdG8gZGVsZXRlIG9uIFN3YWdnZXJIdWIKCkZMQUdTCiAgLWYsIC0tZm9yY2UgIGRlbGV0ZSBkb21haW4gd2l0aG91dCBwcm9tcHRpbmcgZm9yIGNvbmZpcm1hdGlvbgogIC1oLCAtLWhlbHAgICBTaG93IENMSSBoZWxwLgoKREVTQ1JJUFRJT04KICBkZWxldGUgYSBkb21haW4gb3IgZG9tYWluIHZlcnNpb24KCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBkb21haW46ZGVsZXRlIG9yZ2FuaXphdGlvbi9kb21haW4vMS4wLjAKCiAgJCBzd2FnZ2VyaHViIGRvbWFpbjpkZWxldGUgb3JnYW5pemF0aW9uL2RvbWFpbgoKICAkIHN3YWdnZXJodWIgZG9tYWluOmRlbGV0ZSBvcmdhbml6YXRpb24vZG9tYWluIC0tZm9yY2UKYGBgCgpfU2VlIGNvZGU6IFtzcmMvY29tbWFuZHMvZG9tYWluL2RlbGV0ZS5qc10oaHR0cHM6Ly9naXRodWIuY29tL1NtYXJ0QmVhci9zd2FnZ2VyaHViLWNsaS9ibG9iL3YwLjkuMS9zcmMvY29tbWFuZHMvZG9tYWluL2RlbGV0ZS5qcylfCgojIyBgc3dhZ2dlcmh1YiBkb21haW46Z2V0YAoKZmV0Y2hlcyBhIGRvbWFpbiBkZWZpbml0aW9uCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgZG9tYWluOmdldCBPV05FUi9ET01BSU5fTkFNRS9bVkVSU0lPTl0gWy1qXSBbLWhdCgpBUkdVTUVOVFMKICBPV05FUi9ET01BSU5fTkFNRS9bVkVSU0lPTl0gIERvbWFpbiB0byBmZXRjaCBmcm9tIFN3YWdnZXJIdWIKCkZMQUdTCiAgLWgsIC0taGVscCAgU2hvdyBDTEkgaGVscC4KICAtaiwgLS1qc29uICByZXR1cm5zIHRoZSBkb21haW4gaW4gSlNPTiBmb3JtYXQuCgpERVNDUklQVElPTgogIGZldGNoZXMgYSBkb21haW4gZGVmaW5pdGlvbgogIFdoZW4gVkVSU0lPTiBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGFyZ3VtZW50LCB0aGUgZGVmYXVsdCB2ZXJzaW9uIHdpbGwgYmUgcmV0dXJuZWQuCiAgUmV0dXJucyB0aGUgZG9tYWluIGluIFlBTUwgZm9ybWF0IGJ5IGRlZmF1bHQuCgoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgZG9tYWluOmdldCBvcmdhbml6YXRpb24vZG9tYWluCgogICQgc3dhZ2dlcmh1YiBkb21haW46Z2V0IG9yZ2FuaXphdGlvbi9kb21haW4vMS4wLjAgLS1qc29uCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL2RvbWFpbi9nZXQuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvYmxvYi92MC45LjEvc3JjL2NvbW1hbmRzL2RvbWFpbi9nZXQuanMpXwoKIyMgYHN3YWdnZXJodWIgZG9tYWluOnB1Ymxpc2hgCgpwdWJsaXNoIGEgZG9tYWluIHZlcnNpb24KCmBgYApVU0FHRQogICQgc3dhZ2dlcmh1YiBkb21haW46cHVibGlzaCBPV05FUi9ET01BSU5fTkFNRS9WRVJTSU9OIFstaF0KCkFSR1VNRU5UUwogIE9XTkVSL0RPTUFJTl9OQU1FL1ZFUlNJT04gIERvbWFpbiB0byBwdWJsaXNoIG9uIFN3YWdnZXJIdWIKCkZMQUdTCiAgLWgsIC0taGVscCAgU2hvdyBDTEkgaGVscC4KCkRFU0NSSVBUSU9OCiAgcHVibGlzaCBhIGRvbWFpbiB2ZXJzaW9uCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBkb21haW46cHVibGlzaCBvcmdhbml6YXRpb24vZG9tYWluLzEuMC4wCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL2RvbWFpbi9wdWJsaXNoLmpzXShodHRwczovL2dpdGh1Yi5jb20vU21hcnRCZWFyL3N3YWdnZXJodWItY2xpL2Jsb2IvdjAuOS4xL3NyYy9jb21tYW5kcy9kb21haW4vcHVibGlzaC5qcylfCgojIyBgc3dhZ2dlcmh1YiBkb21haW46c2V0ZGVmYXVsdGAKCnNldCB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mIGEgZG9tYWluCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgZG9tYWluOnNldGRlZmF1bHQgT1dORVIvRE9NQUlOX05BTUUvVkVSU0lPTiBbLWhdCgpBUkdVTUVOVFMKICBPV05FUi9ET01BSU5fTkFNRS9WRVJTSU9OICBEb21haW4gdG8gc2V0IGFzIGRlZmF1bHQgb24gU3dhZ2dlckh1YgoKRkxBR1MKICAtaCwgLS1oZWxwICBTaG93IENMSSBoZWxwLgoKREVTQ1JJUFRJT04KICBzZXQgdGhlIGRlZmF1bHQgdmVyc2lvbiBvZiBhIGRvbWFpbgoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgZG9tYWluOnNldGRlZmF1bHQgb3JnYW5pemF0aW9uL2RvbWFpbi8yLjAuMApgYGAKCl9TZWUgY29kZTogW3NyYy9jb21tYW5kcy9kb21haW4vc2V0ZGVmYXVsdC5qc10oaHR0cHM6Ly9naXRodWIuY29tL1NtYXJ0QmVhci9zd2FnZ2VyaHViLWNsaS9ibG9iL3YwLjkuMS9zcmMvY29tbWFuZHMvZG9tYWluL3NldGRlZmF1bHQuanMpXwoKIyMgYHN3YWdnZXJodWIgZG9tYWluOnVucHVibGlzaGAKCnVucHVibGlzaCBhIGRvbWFpbiB2ZXJzaW9uCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgZG9tYWluOnVucHVibGlzaCBPV05FUi9ET01BSU5fTkFNRS9WRVJTSU9OIFstaF0KCkFSR1VNRU5UUwogIE9XTkVSL0RPTUFJTl9OQU1FL1ZFUlNJT04gIERvbWFpbiB0byB1bnB1Ymxpc2ggb24gU3dhZ2dlckh1YgoKRkxBR1MKICAtaCwgLS1oZWxwICBTaG93IENMSSBoZWxwLgoKREVTQ1JJUFRJT04KICB1bnB1Ymxpc2ggYSBkb21haW4gdmVyc2lvbgoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgZG9tYWluOnVucHVibGlzaCBvcmdhbml6YXRpb24vZG9tYWluLzEuMC4wCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL2RvbWFpbi91bnB1Ymxpc2guanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvYmxvYi92MC45LjEvc3JjL2NvbW1hbmRzL2RvbWFpbi91bnB1Ymxpc2guanMpXwoKIyMgYHN3YWdnZXJodWIgZG9tYWluOnVwZGF0ZWAKCnVwZGF0ZSBhIGRvbWFpbgoKYGBgClVTQUdFCiAgJCBzd2FnZ2VyaHViIGRvbWFpbjp1cGRhdGUgT1dORVIvRE9NQUlOX05BTUUvW1ZFUlNJT05dIFstZiA8dmFsdWU+XSBbLS12aXNpYmlsaXR5IHB1YmxpY3xwcml2YXRlXSBbLS1wdWJsaXNoZWQKICAgIHB1Ymxpc2h8dW5wdWJsaXNoXSBbLS1zZXRkZWZhdWx0XSBbLWhdCgpBUkdVTUVOVFMKICBPV05FUi9ET01BSU5fTkFNRS9bVkVSU0lPTl0gIERvbWFpbiB0byB1cGRhdGUgb24gU3dhZ2dlckh1YgoKRkxBR1MKICAtZiwgLS1maWxlPTx2YWx1ZT4gICAgICAgICBmaWxlIGxvY2F0aW9uIG9mIGRvbWFpbiB0byB1cGRhdGUKICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICBTaG93IENMSSBoZWxwLgogICAgICAtLXB1Ymxpc2hlZD08b3B0aW9uPiAgIHNldHMgdGhlIGxpZmVjeWNsZSBzZXR0aW5nIG9mIHRoZSBkb21haW4gdmVyc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25zOiBwdWJsaXNofHVucHVibGlzaD4KICAgICAgLS1zZXRkZWZhdWx0ICAgICAgICAgICBzZXRzIGRvbWFpbiB2ZXJzaW9uIHRvIGJlIHRoZSBkZWZhdWx0CiAgICAgIC0tdmlzaWJpbGl0eT08b3B0aW9uPiAgdmlzaWJpbGl0eSBvZiBkb21haW4gaW4gU3dhZ2dlckh1YgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25zOiBwdWJsaWN8cHJpdmF0ZT4KCkRFU0NSSVBUSU9OCiAgdXBkYXRlIGEgZG9tYWluCiAgVGhlIGRvbWFpbiB2ZXJzaW9uIGZyb20gdGhlIGZpbGUgd2lsbCBiZSB1c2VkIHVubGVzcyB0aGUgdmVyc2lvbiBpcyBzcGVjaWZpZWQgaW4gdGhlIGNvbW1hbmQgYXJndW1lbnQuCiAgV2hlbiBubyBmaWxlIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBkZWZhdWx0IGRvbWFpbiB2ZXJzaW9uIHdpbGwgYmUgdXBkYXRlZC4KICBUaGUgZG9tYWluIHZpc2liaWxpdHkgY2FuIGJlIGNoYW5nZWQgYnkgdXNpbmcgdmlzaWJpbGl0eSBmbGFnLgoKCkVYQU1QTEVTCiAgJCBzd2FnZ2VyaHViIGRvbWFpbjp1cGRhdGUgb3JnYW5pemF0aW9uL2RvbWFpbiAtLWZpbGUgZG9tYWluLnlhbWwKCiAgJCBzd2FnZ2VyaHViIGRvbWFpbjp1cGRhdGUgb3JnYW5pemF0aW9uL2RvbWFpbi8xLjAuMCAtLWZpbGUgZG9tYWluLmpzb24KCiAgJCBzd2FnZ2VyaHViIGRvbWFpbjp1cGRhdGUgb3JnYW5pemF0aW9uL2RvbWFpbi8xLjAuMCAtLXB1Ymxpc2hlZD1wdWJsaXNoIC0tZmlsZSBkb21haW4uanNvbgoKICAkIHN3YWdnZXJodWIgZG9tYWluOnVwZGF0ZSBvcmdhbml6YXRpb24vZG9tYWluLzEuMC4wIC0tc2V0ZGVmYXVsdCAtLWZpbGUgZG9tYWluLmpzb24KCiAgJCBzd2FnZ2VyaHViIGRvbWFpbjp1cGRhdGUgb3JnYW5pemF0aW9uL2RvbWFpbi8xLjAuMCAtLXB1Ymxpc2hlZD11bnB1Ymxpc2ggLS1zZXRkZWZhdWx0IC0tZmlsZSBkb21haW4uanNvbgoKICAkIHN3YWdnZXJodWIgZG9tYWluOnVwZGF0ZSBvcmdhbml6YXRpb24vZG9tYWluLzEuMC4wIC0tdmlzaWJpbGl0eT1wcml2YXRlCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL2RvbWFpbi91cGRhdGUuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvYmxvYi92MC45LjEvc3JjL2NvbW1hbmRzL2RvbWFpbi91cGRhdGUuanMpXwoKIyMgYHN3YWdnZXJodWIgaGVscGAKCkRpc3BsYXkgaGVscCBmb3Igc3dhZ2dlcmh1Yi4KCmBgYApVU0FHRQogICQgc3dhZ2dlcmh1YiBoZWxwIFtDT01NQU5ELi4uXSBbLW5dCgpBUkdVTUVOVFMKICBDT01NQU5ELi4uICBDb21tYW5kIHRvIHNob3cgaGVscCBmb3IuCgpGTEFHUwogIC1uLCAtLW5lc3RlZC1jb21tYW5kcyAgSW5jbHVkZSBhbGwgbmVzdGVkIGNvbW1hbmRzIGluIHRoZSBvdXRwdXQuCgpERVNDUklQVElPTgogIERpc3BsYXkgaGVscCBmb3Igc3dhZ2dlcmh1Yi4KYGBgCgpfU2VlIGNvZGU6IFtAb2NsaWYvcGx1Z2luLWhlbHBdKGh0dHBzOi8vZ2l0aHViLmNvbS9vY2xpZi9wbHVnaW4taGVscC9ibG9iL3Y2LjAuMjIvc3JjL2NvbW1hbmRzL2hlbHAudHMpXwoKIyMgYHN3YWdnZXJodWIgaW50ZWdyYXRpb246Y3JlYXRlYAoKY3JlYXRlcyBhIG5ldyBBUEkgaW50ZWdyYXRpb24gZnJvbSBhIEpTT04gY29uZmlndXJhdGlvbiBmaWxlLgoKYGBgClVTQUdFCiAgJCBzd2FnZ2VyaHViIGludGVncmF0aW9uOmNyZWF0ZSBPV05FUi9BUElfTkFNRS9bVkVSU0lPTl0gLWYgPHZhbHVlPiBbLWhdCgpBUkdVTUVOVFMKICBPV05FUi9BUElfTkFNRS9bVkVSU0lPTl0gIEFQSSB0byBhZGQgaW50ZWdyYXRpb24gdG8gb24gU3dhZ2dlckh1YgoKRkxBR1MKICAtZiwgLS1maWxlPTx2YWx1ZT4gIChyZXF1aXJlZCkgbG9jYXRpb24gb2YgaW50ZWdyYXRpb24gY29uZmlndXJhdGlvbiBmaWxlCiAgLWgsIC0taGVscCAgICAgICAgICBTaG93IENMSSBoZWxwLgoKREVTQ1JJUFRJT04KICBjcmVhdGVzIGEgbmV3IEFQSSBpbnRlZ3JhdGlvbiBmcm9tIGEgSlNPTiBjb25maWd1cmF0aW9uIGZpbGUuCiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBjb25maWd1cmF0aW9uIGZpbGVzOgogIGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvdHJlZS9tYWluL2V4YW1wbGVzL2ludGVncmF0aW9ucwogIFdoZW4gVkVSU0lPTiBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGFyZ3VtZW50LCB0aGUgaW50ZWdyYXRpb24gd2lsbCBiZSBhZGRlZCB0byBiZSBkZWZhdWx0IEFQSSB2ZXJzaW9uLgoKCkVYQU1QTEVTCiAgJCBzd2FnZ2VyaHViIGludGVncmF0aW9uOmNyZWF0ZSBvcmdhbml6YXRpb24vYXBpLzEuMC4wIC0tZmlsZSBjb25maWcuanNvbgpgYGAKCl9TZWUgY29kZTogW3NyYy9jb21tYW5kcy9pbnRlZ3JhdGlvbi9jcmVhdGUuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvYmxvYi92MC45LjEvc3JjL2NvbW1hbmRzL2ludGVncmF0aW9uL2NyZWF0ZS5qcylfCgojIyBgc3dhZ2dlcmh1YiBpbnRlZ3JhdGlvbjpkZWxldGVgCgpkZWxldGVzIHRoZSBpbnRlZ3JhdGlvbiBmcm9tIHRoZSBnaXZlbiBBUEkuCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgaW50ZWdyYXRpb246ZGVsZXRlIE9XTkVSL0FQSV9OQU1FL1ZFUlNJT04vSU5URUdSQVRJT05fSUQgWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIvQVBJX05BTUUvVkVSU0lPTi9JTlRFR1JBVElPTl9JRCAgSW50ZWdyYXRpb24gdG8gZGVsZXRlIGZvciBnaXZlbiBBUEkgb24gU3dhZ2dlcmh1YgoKRkxBR1MKICAtaCwgLS1oZWxwICBTaG93IENMSSBoZWxwLgoKREVTQ1JJUFRJT04KICBkZWxldGVzIHRoZSBpbnRlZ3JhdGlvbiBmcm9tIHRoZSBnaXZlbiBBUEkuCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBpbnRlZ3JhdGlvbjpkZWxldGUgb3JnYW5pemF0aW9uL2FwaS8xLjAuMC81MDNjMmRiNi00NDhhLTQ2NzgtYTMxMC1mNDY1NDI5ZTk3MDQKYGBgCgpfU2VlIGNvZGU6IFtzcmMvY29tbWFuZHMvaW50ZWdyYXRpb24vZGVsZXRlLmpzXShodHRwczovL2dpdGh1Yi5jb20vU21hcnRCZWFyL3N3YWdnZXJodWItY2xpL2Jsb2IvdjAuOS4xL3NyYy9jb21tYW5kcy9pbnRlZ3JhdGlvbi9kZWxldGUuanMpXwoKIyMgYHN3YWdnZXJodWIgaW50ZWdyYXRpb246ZXhlY3V0ZWAKCmV4ZWN1dGVzIGFuIGludGVncmF0aW9uIGZvciB0aGUgZ2l2ZW4gQVBJLgoKYGBgClVTQUdFCiAgJCBzd2FnZ2VyaHViIGludGVncmF0aW9uOmV4ZWN1dGUgT1dORVIvQVBJX05BTUUvVkVSU0lPTi9JTlRFR1JBVElPTl9JRCBbLWhdCgpBUkdVTUVOVFMKICBPV05FUi9BUElfTkFNRS9WRVJTSU9OL0lOVEVHUkFUSU9OX0lEICBJbnRlZ3JhdGlvbiB0byBleGVjdXRlIGZvciBnaXZlbiBBUEkgb24gU3dhZ2dlcmh1YgoKRkxBR1MKICAtaCwgLS1oZWxwICBTaG93IENMSSBoZWxwLgoKREVTQ1JJUFRJT04KICBleGVjdXRlcyBhbiBpbnRlZ3JhdGlvbiBmb3IgdGhlIGdpdmVuIEFQSS4KCkVYQU1QTEVTCiAgJCBzd2FnZ2VyaHViIGludGVncmF0aW9uOmV4ZWN1dGUgb3JnYW5pemF0aW9uL2FwaS8xLjAuMC81MDNjMmRiNi00NDhhLTQ2NzgtYTMxMC1mNDY1NDI5ZTk3MDQKYGBgCgpfU2VlIGNvZGU6IFtzcmMvY29tbWFuZHMvaW50ZWdyYXRpb24vZXhlY3V0ZS5qc10oaHR0cHM6Ly9naXRodWIuY29tL1NtYXJ0QmVhci9zd2FnZ2VyaHViLWNsaS9ibG9iL3YwLjkuMS9zcmMvY29tbWFuZHMvaW50ZWdyYXRpb24vZXhlY3V0ZS5qcylfCgojIyBgc3dhZ2dlcmh1YiBpbnRlZ3JhdGlvbjpnZXRgCgpyZXRpZXZlcyBhbiBpbnRlZ3JhdGlvbiBmb3IgdGhlIGdpdmVuIEFQSS4KCmBgYApVU0FHRQogICQgc3dhZ2dlcmh1YiBpbnRlZ3JhdGlvbjpnZXQgT1dORVIvQVBJX05BTUUvVkVSU0lPTi9JTlRFR1JBVElPTl9JRCBbLWhdCgpBUkdVTUVOVFMKICBPV05FUi9BUElfTkFNRS9WRVJTSU9OL0lOVEVHUkFUSU9OX0lEICBJbnRlZ3JhdGlvbiB0byBmZXRjaCBmb3IgZ2l2ZW4gQVBJIG9uIFN3YWdnZXJodWIKCkZMQUdTCiAgLWgsIC0taGVscCAgU2hvdyBDTEkgaGVscC4KCkRFU0NSSVBUSU9OCiAgcmV0aWV2ZXMgYW4gaW50ZWdyYXRpb24gZm9yIHRoZSBnaXZlbiBBUEkuCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBpbnRlZ3JhdGlvbjpnZXQgb3JnYW5pemF0aW9uL2FwaS8xLjAuMC81MDNjMmRiNi00NDhhLTQ2NzgtYTMxMC1mNDY1NDI5ZTk3MDQKYGBgCgpfU2VlIGNvZGU6IFtzcmMvY29tbWFuZHMvaW50ZWdyYXRpb24vZ2V0LmpzXShodHRwczovL2dpdGh1Yi5jb20vU21hcnRCZWFyL3N3YWdnZXJodWItY2xpL2Jsb2IvdjAuOS4xL3NyYy9jb21tYW5kcy9pbnRlZ3JhdGlvbi9nZXQuanMpXwoKIyMgYHN3YWdnZXJodWIgaW50ZWdyYXRpb246bGlzdGAKCmxpc3QgaW50ZWdyYXRpb25zIG9uIGFuIEFQSS4KCmBgYApVU0FHRQogICQgc3dhZ2dlcmh1YiBpbnRlZ3JhdGlvbjpsaXN0IE9XTkVSL0FQSV9OQU1FL1tWRVJTSU9OXSBbLWhdCgpBUkdVTUVOVFMKICBPV05FUi9BUElfTkFNRS9bVkVSU0lPTl0gIEFQSSB0byBsaXN0IGludGVncmF0aW9ucyBmb3Igb24gU3dhZ2dlcmh1YgoKRkxBR1MKICAtaCwgLS1oZWxwICBTaG93IENMSSBoZWxwLgoKREVTQ1JJUFRJT04KICBsaXN0IGludGVncmF0aW9ucyBvbiBhbiBBUEkuCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBpbnRlZ3JhdGlvbjpsaXN0IG9yZ2FuaXphdGlvbi9hcGkvMS4wLjAKYGBgCgpfU2VlIGNvZGU6IFtzcmMvY29tbWFuZHMvaW50ZWdyYXRpb24vbGlzdC5qc10oaHR0cHM6Ly9naXRodWIuY29tL1NtYXJ0QmVhci9zd2FnZ2VyaHViLWNsaS9ibG9iL3YwLjkuMS9zcmMvY29tbWFuZHMvaW50ZWdyYXRpb24vbGlzdC5qcylfCgojIyBgc3dhZ2dlcmh1YiBpbnRlZ3JhdGlvbjp1cGRhdGVgCgp1cGRhdGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYW4gQVBJIGludGVncmF0aW9uLgoKYGBgClVTQUdFCiAgJCBzd2FnZ2VyaHViIGludGVncmF0aW9uOnVwZGF0ZSBPV05FUi9BUElfTkFNRS9WRVJTSU9OL0lOVEVHUkFUSU9OX0lEIC1mIDx2YWx1ZT4gWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIvQVBJX05BTUUvVkVSU0lPTi9JTlRFR1JBVElPTl9JRCAgSW50ZWdyYXRpb24gdG8gdXBkYXRlIGZvciBnaXZlbiBBUEkgb24gU3dhZ2dlcmh1YgoKRkxBR1MKICAtZiwgLS1maWxlPTx2YWx1ZT4gIChyZXF1aXJlZCkgbG9jYXRpb24gb2YgaW50ZWdyYXRpb24gY29uZmlndXJhdGlvbiBmaWxlCiAgLWgsIC0taGVscCAgICAgICAgICBTaG93IENMSSBoZWxwLgoKREVTQ1JJUFRJT04KICB1cGRhdGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYW4gQVBJIGludGVncmF0aW9uLgoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgaW50ZWdyYXRpb246dXBkYXRlIG9yZ2FuaXphdGlvbi9hcGkvMS4wLjAvNTAzYzJkYjYtNDQ4YS00Njc4LWFiY2QtMDEyMzQ1Njc4OWFiYyAtLWZpbGUgY29uZmlnLmpzb24KYGBgCgpfU2VlIGNvZGU6IFtzcmMvY29tbWFuZHMvaW50ZWdyYXRpb24vdXBkYXRlLmpzXShodHRwczovL2dpdGh1Yi5jb20vU21hcnRCZWFyL3N3YWdnZXJodWItY2xpL2Jsb2IvdjAuOS4xL3NyYy9jb21tYW5kcy9pbnRlZ3JhdGlvbi91cGRhdGUuanMpXwoKIyMgYHN3YWdnZXJodWIgcGx1Z2luc2AKCkxpc3QgaW5zdGFsbGVkIHBsdWdpbnMuCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgcGx1Z2lucyBbLS1qc29uXSBbLS1jb3JlXQoKRkxBR1MKICAtLWNvcmUgIFNob3cgY29yZSBwbHVnaW5zLgoKR0xPQkFMIEZMQUdTCiAgLS1qc29uICBGb3JtYXQgb3V0cHV0IGFzIGpzb24uCgpERVNDUklQVElPTgogIExpc3QgaW5zdGFsbGVkIHBsdWdpbnMuCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBwbHVnaW5zCmBgYAoKX1NlZSBjb2RlOiBbQG9jbGlmL3BsdWdpbi1wbHVnaW5zXShodHRwczovL2dpdGh1Yi5jb20vb2NsaWYvcGx1Z2luLXBsdWdpbnMvYmxvYi92NS40LjI1L3NyYy9jb21tYW5kcy9wbHVnaW5zL2luZGV4LnRzKV8KCiMjIGBzd2FnZ2VyaHViIHBsdWdpbnM6YWRkYAoKSW5zdGFsbHMgYSBwbHVnaW4gaW50byBzd2FnZ2VyaHViLgoKYGBgClVTQUdFCiAgJCBzd2FnZ2VyaHViIHBsdWdpbnM6YWRkIFBMVUdJTi4uLiBbLS1qc29uXSBbLWZdIFstaF0gWy1zIHwgLXZdCgpBUkdVTUVOVFMKICBQTFVHSU4uLi4gIFBsdWdpbiB0byBpbnN0YWxsLgoKRkxBR1MKICAtZiwgLS1mb3JjZSAgICBGb3JjZSBucG0gdG8gZmV0Y2ggcmVtb3RlIHJlc291cmNlcyBldmVuIGlmIGEgbG9jYWwgY29weSBleGlzdHMgb24gZGlzay4KICAtaCwgLS1oZWxwICAgICBTaG93IENMSSBoZWxwLgogIC1zLCAtLXNpbGVudCAgIFNpbGVuY2VzIG5wbSBvdXRwdXQuCiAgLXYsIC0tdmVyYm9zZSAgU2hvdyB2ZXJib3NlIG5wbSBvdXRwdXQuCgpHTE9CQUwgRkxBR1MKICAtLWpzb24gIEZvcm1hdCBvdXRwdXQgYXMganNvbi4KCkRFU0NSSVBUSU9OCiAgSW5zdGFsbHMgYSBwbHVnaW4gaW50byBzd2FnZ2VyaHViLgoKICBVc2VzIG5wbSB0byBpbnN0YWxsIHBsdWdpbnMuCgogIEluc3RhbGxhdGlvbiBvZiBhIHVzZXItaW5zdGFsbGVkIHBsdWdpbiB3aWxsIG92ZXJyaWRlIGEgY29yZSBwbHVnaW4uCgogIFVzZSB0aGUgU1dBR0dFUkhVQl9OUE1fTE9HX0xFVkVMIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldCB0aGUgbnBtIGxvZ2xldmVsLgogIFVzZSB0aGUgU1dBR0dFUkhVQl9OUE1fUkVHSVNUUlkgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gc2V0IHRoZSBucG0gcmVnaXN0cnkuCgpBTElBU0VTCiAgJCBzd2FnZ2VyaHViIHBsdWdpbnM6YWRkCgpFWEFNUExFUwogIEluc3RhbGwgYSBwbHVnaW4gZnJvbSBucG0gcmVnaXN0cnkuCgogICAgJCBzd2FnZ2VyaHViIHBsdWdpbnM6YWRkIG15cGx1Z2luCgogIEluc3RhbGwgYSBwbHVnaW4gZnJvbSBhIGdpdGh1YiB1cmwuCgogICAgJCBzd2FnZ2VyaHViIHBsdWdpbnM6YWRkIGh0dHBzOi8vZ2l0aHViLmNvbS9zb21ldXNlci9zb21lcGx1Z2luCgogIEluc3RhbGwgYSBwbHVnaW4gZnJvbSBhIGdpdGh1YiBzbHVnLgoKICAgICQgc3dhZ2dlcmh1YiBwbHVnaW5zOmFkZCBzb21ldXNlci9zb21lcGx1Z2luCmBgYAoKIyMgYHN3YWdnZXJodWIgcGx1Z2luczppbnNwZWN0YAoKRGlzcGxheXMgaW5zdGFsbGF0aW9uIHByb3BlcnRpZXMgb2YgYSBwbHVnaW4uCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgcGx1Z2luczppbnNwZWN0IFBMVUdJTi4uLgoKQVJHVU1FTlRTCiAgUExVR0lOLi4uICBbZGVmYXVsdDogLl0gUGx1Z2luIHRvIGluc3BlY3QuCgpGTEFHUwogIC1oLCAtLWhlbHAgICAgIFNob3cgQ0xJIGhlbHAuCiAgLXYsIC0tdmVyYm9zZQoKR0xPQkFMIEZMQUdTCiAgLS1qc29uICBGb3JtYXQgb3V0cHV0IGFzIGpzb24uCgpERVNDUklQVElPTgogIERpc3BsYXlzIGluc3RhbGxhdGlvbiBwcm9wZXJ0aWVzIG9mIGEgcGx1Z2luLgoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgcGx1Z2luczppbnNwZWN0IG15cGx1Z2luCmBgYAoKX1NlZSBjb2RlOiBbQG9jbGlmL3BsdWdpbi1wbHVnaW5zXShodHRwczovL2dpdGh1Yi5jb20vb2NsaWYvcGx1Z2luLXBsdWdpbnMvYmxvYi92NS40LjI1L3NyYy9jb21tYW5kcy9wbHVnaW5zL2luc3BlY3QudHMpXwoKIyMgYHN3YWdnZXJodWIgcGx1Z2luczppbnN0YWxsYAoKSW5zdGFsbHMgYSBwbHVnaW4gaW50byBzd2FnZ2VyaHViLgoKYGBgClVTQUdFCiAgJCBzd2FnZ2VyaHViIHBsdWdpbnM6aW5zdGFsbCBQTFVHSU4uLi4gWy0tanNvbl0gWy1mXSBbLWhdIFstcyB8IC12XQoKQVJHVU1FTlRTCiAgUExVR0lOLi4uICBQbHVnaW4gdG8gaW5zdGFsbC4KCkZMQUdTCiAgLWYsIC0tZm9yY2UgICAgRm9yY2UgbnBtIHRvIGZldGNoIHJlbW90ZSByZXNvdXJjZXMgZXZlbiBpZiBhIGxvY2FsIGNvcHkgZXhpc3RzIG9uIGRpc2suCiAgLWgsIC0taGVscCAgICAgU2hvdyBDTEkgaGVscC4KICAtcywgLS1zaWxlbnQgICBTaWxlbmNlcyBucG0gb3V0cHV0LgogIC12LCAtLXZlcmJvc2UgIFNob3cgdmVyYm9zZSBucG0gb3V0cHV0LgoKR0xPQkFMIEZMQUdTCiAgLS1qc29uICBGb3JtYXQgb3V0cHV0IGFzIGpzb24uCgpERVNDUklQVElPTgogIEluc3RhbGxzIGEgcGx1Z2luIGludG8gc3dhZ2dlcmh1Yi4KCiAgVXNlcyBucG0gdG8gaW5zdGFsbCBwbHVnaW5zLgoKICBJbnN0YWxsYXRpb24gb2YgYSB1c2VyLWluc3RhbGxlZCBwbHVnaW4gd2lsbCBvdmVycmlkZSBhIGNvcmUgcGx1Z2luLgoKICBVc2UgdGhlIFNXQUdHRVJIVUJfTlBNX0xPR19MRVZFTCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBzZXQgdGhlIG5wbSBsb2dsZXZlbC4KICBVc2UgdGhlIFNXQUdHRVJIVUJfTlBNX1JFR0lTVFJZIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldCB0aGUgbnBtIHJlZ2lzdHJ5LgoKQUxJQVNFUwogICQgc3dhZ2dlcmh1YiBwbHVnaW5zOmFkZAoKRVhBTVBMRVMKICBJbnN0YWxsIGEgcGx1Z2luIGZyb20gbnBtIHJlZ2lzdHJ5LgoKICAgICQgc3dhZ2dlcmh1YiBwbHVnaW5zOmluc3RhbGwgbXlwbHVnaW4KCiAgSW5zdGFsbCBhIHBsdWdpbiBmcm9tIGEgZ2l0aHViIHVybC4KCiAgICAkIHN3YWdnZXJodWIgcGx1Z2luczppbnN0YWxsIGh0dHBzOi8vZ2l0aHViLmNvbS9zb21ldXNlci9zb21lcGx1Z2luCgogIEluc3RhbGwgYSBwbHVnaW4gZnJvbSBhIGdpdGh1YiBzbHVnLgoKICAgICQgc3dhZ2dlcmh1YiBwbHVnaW5zOmluc3RhbGwgc29tZXVzZXIvc29tZXBsdWdpbgpgYGAKCl9TZWUgY29kZTogW0BvY2xpZi9wbHVnaW4tcGx1Z2luc10oaHR0cHM6Ly9naXRodWIuY29tL29jbGlmL3BsdWdpbi1wbHVnaW5zL2Jsb2IvdjUuNC4yNS9zcmMvY29tbWFuZHMvcGx1Z2lucy9pbnN0YWxsLnRzKV8KCiMjIGBzd2FnZ2VyaHViIHBsdWdpbnM6bGlua2AKCkxpbmtzIGEgcGx1Z2luIGludG8gdGhlIENMSSBmb3IgZGV2ZWxvcG1lbnQuCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgcGx1Z2luczpsaW5rIFBBVEggWy1oXSBbLS1pbnN0YWxsXSBbLXZdCgpBUkdVTUVOVFMKICBQQVRIICBbZGVmYXVsdDogLl0gcGF0aCB0byBwbHVnaW4KCkZMQUdTCiAgLWgsIC0taGVscCAgICAgICAgICBTaG93IENMSSBoZWxwLgogIC12LCAtLXZlcmJvc2UKICAgICAgLS1bbm8tXWluc3RhbGwgIEluc3RhbGwgZGVwZW5kZW5jaWVzIGFmdGVyIGxpbmtpbmcgdGhlIHBsdWdpbi4KCkRFU0NSSVBUSU9OCiAgTGlua3MgYSBwbHVnaW4gaW50byB0aGUgQ0xJIGZvciBkZXZlbG9wbWVudC4KCiAgSW5zdGFsbGF0aW9uIG9mIGEgbGlua2VkIHBsdWdpbiB3aWxsIG92ZXJyaWRlIGEgdXNlci1pbnN0YWxsZWQgb3IgY29yZSBwbHVnaW4uCgogIGUuZy4gSWYgeW91IGhhdmUgYSB1c2VyLWluc3RhbGxlZCBvciBjb3JlIHBsdWdpbiB0aGF0IGhhcyBhICdoZWxsbycgY29tbWFuZCwgaW5zdGFsbGluZyBhIGxpbmtlZCBwbHVnaW4gd2l0aCBhICdoZWxsbycKICBjb21tYW5kIHdpbGwgb3ZlcnJpZGUgdGhlIHVzZXItaW5zdGFsbGVkIG9yIGNvcmUgcGx1Z2luIGltcGxlbWVudGF0aW9uLiBUaGlzIGlzIHVzZWZ1bCBmb3IgZGV2ZWxvcG1lbnQgd29yay4KCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBwbHVnaW5zOmxpbmsgbXlwbHVnaW4KYGBgCgpfU2VlIGNvZGU6IFtAb2NsaWYvcGx1Z2luLXBsdWdpbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vY2xpZi9wbHVnaW4tcGx1Z2lucy9ibG9iL3Y1LjQuMjUvc3JjL2NvbW1hbmRzL3BsdWdpbnMvbGluay50cylfCgojIyBgc3dhZ2dlcmh1YiBwbHVnaW5zOnJlbW92ZWAKClJlbW92ZXMgYSBwbHVnaW4gZnJvbSB0aGUgQ0xJLgoKYGBgClVTQUdFCiAgJCBzd2FnZ2VyaHViIHBsdWdpbnM6cmVtb3ZlIFtQTFVHSU4uLi5dIFstaF0gWy12XQoKQVJHVU1FTlRTCiAgUExVR0lOLi4uICBwbHVnaW4gdG8gdW5pbnN0YWxsCgpGTEFHUwogIC1oLCAtLWhlbHAgICAgIFNob3cgQ0xJIGhlbHAuCiAgLXYsIC0tdmVyYm9zZQoKREVTQ1JJUFRJT04KICBSZW1vdmVzIGEgcGx1Z2luIGZyb20gdGhlIENMSS4KCkFMSUFTRVMKICAkIHN3YWdnZXJodWIgcGx1Z2luczp1bmxpbmsKICAkIHN3YWdnZXJodWIgcGx1Z2luczpyZW1vdmUKCkVYQU1QTEVTCiAgJCBzd2FnZ2VyaHViIHBsdWdpbnM6cmVtb3ZlIG15cGx1Z2luCmBgYAoKIyMgYHN3YWdnZXJodWIgcGx1Z2luczpyZXNldGAKClJlbW92ZSBhbGwgdXNlci1pbnN0YWxsZWQgYW5kIGxpbmtlZCBwbHVnaW5zLgoKYGBgClVTQUdFCiAgJCBzd2FnZ2VyaHViIHBsdWdpbnM6cmVzZXQgWy0taGFyZF0gWy0tcmVpbnN0YWxsXQoKRkxBR1MKICAtLWhhcmQgICAgICAgRGVsZXRlIG5vZGVfbW9kdWxlcyBhbmQgcGFja2FnZSBtYW5hZ2VyIHJlbGF0ZWQgZmlsZXMgaW4gYWRkaXRpb24gdG8gdW5pbnN0YWxsaW5nIHBsdWdpbnMuCiAgLS1yZWluc3RhbGwgIFJlaW5zdGFsbCBhbGwgcGx1Z2lucyBhZnRlciB1bmluc3RhbGxpbmcuCmBgYAoKX1NlZSBjb2RlOiBbQG9jbGlmL3BsdWdpbi1wbHVnaW5zXShodHRwczovL2dpdGh1Yi5jb20vb2NsaWYvcGx1Z2luLXBsdWdpbnMvYmxvYi92NS40LjI1L3NyYy9jb21tYW5kcy9wbHVnaW5zL3Jlc2V0LnRzKV8KCiMjIGBzd2FnZ2VyaHViIHBsdWdpbnM6dW5pbnN0YWxsYAoKUmVtb3ZlcyBhIHBsdWdpbiBmcm9tIHRoZSBDTEkuCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgcGx1Z2luczp1bmluc3RhbGwgW1BMVUdJTi4uLl0gWy1oXSBbLXZdCgpBUkdVTUVOVFMKICBQTFVHSU4uLi4gIHBsdWdpbiB0byB1bmluc3RhbGwKCkZMQUdTCiAgLWgsIC0taGVscCAgICAgU2hvdyBDTEkgaGVscC4KICAtdiwgLS12ZXJib3NlCgpERVNDUklQVElPTgogIFJlbW92ZXMgYSBwbHVnaW4gZnJvbSB0aGUgQ0xJLgoKQUxJQVNFUwogICQgc3dhZ2dlcmh1YiBwbHVnaW5zOnVubGluawogICQgc3dhZ2dlcmh1YiBwbHVnaW5zOnJlbW92ZQoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgcGx1Z2luczp1bmluc3RhbGwgbXlwbHVnaW4KYGBgCgpfU2VlIGNvZGU6IFtAb2NsaWYvcGx1Z2luLXBsdWdpbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vY2xpZi9wbHVnaW4tcGx1Z2lucy9ibG9iL3Y1LjQuMjUvc3JjL2NvbW1hbmRzL3BsdWdpbnMvdW5pbnN0YWxsLnRzKV8KCiMjIGBzd2FnZ2VyaHViIHBsdWdpbnM6dW5saW5rYAoKUmVtb3ZlcyBhIHBsdWdpbiBmcm9tIHRoZSBDTEkuCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgcGx1Z2luczp1bmxpbmsgW1BMVUdJTi4uLl0gWy1oXSBbLXZdCgpBUkdVTUVOVFMKICBQTFVHSU4uLi4gIHBsdWdpbiB0byB1bmluc3RhbGwKCkZMQUdTCiAgLWgsIC0taGVscCAgICAgU2hvdyBDTEkgaGVscC4KICAtdiwgLS12ZXJib3NlCgpERVNDUklQVElPTgogIFJlbW92ZXMgYSBwbHVnaW4gZnJvbSB0aGUgQ0xJLgoKQUxJQVNFUwogICQgc3dhZ2dlcmh1YiBwbHVnaW5zOnVubGluawogICQgc3dhZ2dlcmh1YiBwbHVnaW5zOnJlbW92ZQoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgcGx1Z2luczp1bmxpbmsgbXlwbHVnaW4KYGBgCgojIyBgc3dhZ2dlcmh1YiBwbHVnaW5zOnVwZGF0ZWAKClVwZGF0ZSBpbnN0YWxsZWQgcGx1Z2lucy4KCmBgYApVU0FHRQogICQgc3dhZ2dlcmh1YiBwbHVnaW5zOnVwZGF0ZSBbLWhdIFstdl0KCkZMQUdTCiAgLWgsIC0taGVscCAgICAgU2hvdyBDTEkgaGVscC4KICAtdiwgLS12ZXJib3NlCgpERVNDUklQVElPTgogIFVwZGF0ZSBpbnN0YWxsZWQgcGx1Z2lucy4KYGBgCgpfU2VlIGNvZGU6IFtAb2NsaWYvcGx1Z2luLXBsdWdpbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vY2xpZi9wbHVnaW4tcGx1Z2lucy9ibG9iL3Y1LjQuMjUvc3JjL2NvbW1hbmRzL3BsdWdpbnMvdXBkYXRlLnRzKV8KCiMjIGBzd2FnZ2VyaHViIHByb2plY3Q6YXBpOmFkZGAKCkFkZHMgYW4gQVBJIHRvIGFuIGV4aXN0aW5nIHByb2plY3QuCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgcHJvamVjdDphcGk6YWRkIE9XTkVSL1BST0pFQ1RfTkFNRSBBUEkgWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIvUFJPSkVDVF9OQU1FICBUaGUgcHJvamVjdCB0byBhZGQgdGhlIEFQSSB0byBvbiBTd2FnZ2VyaHViCiAgQVBJICAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgQVBJIG9uIFN3YWdnZXJodWIgdG8gYWRkCgpGTEFHUwogIC1oLCAtLWhlbHAgIFNob3cgQ0xJIGhlbHAuCgpERVNDUklQVElPTgogIEFkZHMgYW4gQVBJIHRvIGFuIGV4aXN0aW5nIHByb2plY3QuCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBwcm9qZWN0OmFwaTphZGQgb3JnYW5pemF0aW9uL3Byb2plY3RfbmFtZSBteV9hcGkKYGBgCgpfU2VlIGNvZGU6IFtzcmMvY29tbWFuZHMvcHJvamVjdC9hcGkvYWRkLmpzXShodHRwczovL2dpdGh1Yi5jb20vU21hcnRCZWFyL3N3YWdnZXJodWItY2xpL2Jsb2IvdjAuOS4xL3NyYy9jb21tYW5kcy9wcm9qZWN0L2FwaS9hZGQuanMpXwoKIyMgYHN3YWdnZXJodWIgcHJvamVjdDphcGk6cmVtb3ZlYAoKUmVtb3ZlcyBhbiBBUEkgZnJvbSBhIHByb2plY3QgaW4gU3dhZ2dlckh1Yi4KCmBgYApVU0FHRQogICQgc3dhZ2dlcmh1YiBwcm9qZWN0OmFwaTpyZW1vdmUgT1dORVIvUFJPSkVDVF9OQU1FIEFQSSBbLWhdCgpBUkdVTUVOVFMKICBPV05FUi9QUk9KRUNUX05BTUUgIFRoZSBwcm9qZWN0IHRvIHJlbW92ZSB0aGUgQVBJIGZyb20gb24gU3dhZ2dlcmh1YgogIEFQSSAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIEFQSSBvbiBTd2FnZ2VyaHViIHRvIHJlbW92ZQoKRkxBR1MKICAtaCwgLS1oZWxwICBTaG93IENMSSBoZWxwLgoKREVTQ1JJUFRJT04KICBSZW1vdmVzIGFuIEFQSSBmcm9tIGEgcHJvamVjdCBpbiBTd2FnZ2VySHViLgoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgcHJvamVjdDphcGk6cmVtb3ZlIG9yZ2FuaXphdGlvbi9wcm9qZWN0X25hbWUgbXlfYXBpCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL3Byb2plY3QvYXBpL3JlbW92ZS5qc10oaHR0cHM6Ly9naXRodWIuY29tL1NtYXJ0QmVhci9zd2FnZ2VyaHViLWNsaS9ibG9iL3YwLjkuMS9zcmMvY29tbWFuZHMvcHJvamVjdC9hcGkvcmVtb3ZlLmpzKV8KCiMjIGBzd2FnZ2VyaHViIHByb2plY3Q6Y3JlYXRlYAoKQ3JlYXRlcyBhIG5ldyBwcm9qZWN0IGluIFN3YWdnZXJIdWIuCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgcHJvamVjdDpjcmVhdGUgT1dORVIvUFJPSkVDVF9OQU1FIFstLWRlc2NyaXB0aW9uIDx2YWx1ZT5dIFstYSA8dmFsdWU+XSBbLWQgPHZhbHVlPl0gWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIvUFJPSkVDVF9OQU1FICBUaGUgbmV3IHByb2plY3QgdG8gY3JlYXRlIG9uIFN3YWdnZXJodWIKCkZMQUdTCiAgLWEsIC0tYXBpcz08dmFsdWU+ICAgICAgICAgQ29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYXBpIG5hbWVzIHRvIGluY2x1ZGUgaW4gcHJvamVjdAogIC1kLCAtLWRvbWFpbnM9PHZhbHVlPiAgICAgIENvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGRvbWFpbiBuYW1lcyB0byBpbmNsdWRlIGluIHByb2plY3QKICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICBTaG93IENMSSBoZWxwLgogICAgICAtLWRlc2NyaXB0aW9uPTx2YWx1ZT4gIERlc2NyaXB0aW9uIG9mIHByb2plY3QKCkRFU0NSSVBUSU9OCiAgQ3JlYXRlcyBhIG5ldyBwcm9qZWN0IGluIFN3YWdnZXJIdWIuCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBwcm9qZWN0OmNyZWF0ZSBvcmdhbml6YXRpb24vbmV3X3Byb2plY3RfbmFtZSAtLWRlc2NyaXB0aW9uICJwcm9qZWN0IGRlc2NyaXB0aW9uIgoKICAkIHN3YWdnZXJodWIgcHJvamVjdDpjcmVhdGUgb3JnYW5pemF0aW9uL25ld19wcm9qZWN0X25hbWUgLWEgInRlc3RhcGkxLHRlc3RhcGkyIgoKICAkIHN3YWdnZXJodWIgcHJvamVjdDpjcmVhdGUgb3JnYW5pemF0aW9uL25ld19wcm9qZWN0X25hbWUgLS1hcGlzICJ0ZXN0YXBpMSx0ZXN0YXBpMiIKCiAgJCBzd2FnZ2VyaHViIHByb2plY3Q6Y3JlYXRlIG9yZ2FuaXphdGlvbi9uZXdfcHJvamVjdF9uYW1lIC1kICJ0ZXN0ZG9tYWluMyx0ZXN0ZG9tYWluNCIKCiAgJCBzd2FnZ2VyaHViIHByb2plY3Q6Y3JlYXRlIG9yZ2FuaXphdGlvbi9uZXdfcHJvamVjdF9uYW1lIC0tZG9tYWlucyAidGVzdGRvbWFpbjMsdGVzdGRvbWFpbjQiCgogICQgc3dhZ2dlcmh1YiBwcm9qZWN0OmNyZWF0ZSBvcmdhbml6YXRpb24vbmV3X3Byb2plY3RfbmFtZSAtYSAidGVzdGFwaTEiIC1kICJ0ZXN0ZG9tYWluMyIgLS1kZXNjcmlwdGlvbiAiZGVzY3JpcHRpb24iCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL3Byb2plY3QvY3JlYXRlLmpzXShodHRwczovL2dpdGh1Yi5jb20vU21hcnRCZWFyL3N3YWdnZXJodWItY2xpL2Jsb2IvdjAuOS4xL3NyYy9jb21tYW5kcy9wcm9qZWN0L2NyZWF0ZS5qcylfCgojIyBgc3dhZ2dlcmh1YiBwcm9qZWN0OmRlbGV0ZWAKCkRlbGV0ZXMgYSBwcm9qZWN0IGZyb20gU3dhZ2dlckh1Yi4KCmBgYApVU0FHRQogICQgc3dhZ2dlcmh1YiBwcm9qZWN0OmRlbGV0ZSBPV05FUi9QUk9KRUNUX05BTUUgWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIvUFJPSkVDVF9OQU1FICBUaGUgcHJvamVjdCB0byBkZWxldGUgb24gU3dhZ2dlcmh1YgoKRkxBR1MKICAtaCwgLS1oZWxwICBTaG93IENMSSBoZWxwLgoKREVTQ1JJUFRJT04KICBEZWxldGVzIGEgcHJvamVjdCBmcm9tIFN3YWdnZXJIdWIuCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBwcm9qZWN0OmRlbGV0ZSBvcmdhbml6YXRpb24vcHJvamVjdF9uYW1lCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL3Byb2plY3QvZGVsZXRlLmpzXShodHRwczovL2dpdGh1Yi5jb20vU21hcnRCZWFyL3N3YWdnZXJodWItY2xpL2Jsb2IvdjAuOS4xL3NyYy9jb21tYW5kcy9wcm9qZWN0L2RlbGV0ZS5qcylfCgojIyBgc3dhZ2dlcmh1YiBwcm9qZWN0OmRvbWFpbjphZGRgCgpBZGRzIGEgZG9tYWluIHRvIGFuIGV4aXN0aW5nIHByb2plY3QuCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgcHJvamVjdDpkb21haW46YWRkIE9XTkVSL1BST0pFQ1RfTkFNRSBET01BSU4gWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIvUFJPSkVDVF9OQU1FICBUaGUgcHJvamVjdCB0byBhZGQgdGhlIGRvbWFpbiB0byBvbiBTd2FnZ2VyaHViCiAgRE9NQUlOICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgZG9tYWluIG9uIFN3YWdnZXJodWIgdG8gYWRkCgpGTEFHUwogIC1oLCAtLWhlbHAgIFNob3cgQ0xJIGhlbHAuCgpERVNDUklQVElPTgogIEFkZHMgYSBkb21haW4gdG8gYW4gZXhpc3RpbmcgcHJvamVjdC4KCkVYQU1QTEVTCiAgJCBzd2FnZ2VyaHViIHByb2plY3Q6ZG9tYWluOmFkZCBvcmdhbml6YXRpb24vcHJvamVjdF9uYW1lIG15X2RvbWFpbgpgYGAKCl9TZWUgY29kZTogW3NyYy9jb21tYW5kcy9wcm9qZWN0L2RvbWFpbi9hZGQuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvYmxvYi92MC45LjEvc3JjL2NvbW1hbmRzL3Byb2plY3QvZG9tYWluL2FkZC5qcylfCgojIyBgc3dhZ2dlcmh1YiBwcm9qZWN0OmRvbWFpbjpyZW1vdmVgCgpSZW1vdmVzIGEgZG9tYWluIGZyb20gYSBwcm9qZWN0IGluIFN3YWdnZXJIdWIuCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgcHJvamVjdDpkb21haW46cmVtb3ZlIE9XTkVSL1BST0pFQ1RfTkFNRSBET01BSU4gWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIvUFJPSkVDVF9OQU1FICBUaGUgcHJvamVjdCB0byByZW1vdmUgdGhlIGRvbWFpbiBmcm9tIG9uIFN3YWdnZXJodWIKICBET01BSU4gICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBkb21haW4gb24gU3dhZ2dlcmh1YiB0byByZW1vdmUKCkZMQUdTCiAgLWgsIC0taGVscCAgU2hvdyBDTEkgaGVscC4KCkRFU0NSSVBUSU9OCiAgUmVtb3ZlcyBhIGRvbWFpbiBmcm9tIGEgcHJvamVjdCBpbiBTd2FnZ2VySHViLgoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgcHJvamVjdDpkb21haW46cmVtb3ZlIG9yZ2FuaXphdGlvbi9wcm9qZWN0X25hbWUgbXlfZG9tYWluCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL3Byb2plY3QvZG9tYWluL3JlbW92ZS5qc10oaHR0cHM6Ly9naXRodWIuY29tL1NtYXJ0QmVhci9zd2FnZ2VyaHViLWNsaS9ibG9iL3YwLjkuMS9zcmMvY29tbWFuZHMvcHJvamVjdC9kb21haW4vcmVtb3ZlLmpzKV8KCiMjIGBzd2FnZ2VyaHViIHByb2plY3Q6Z2V0YAoKUmV0cmlldmVzIHRoZSBkZXRhaWxzIGZvciBhIHByb2plY3QuCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgcHJvamVjdDpnZXQgT1dORVIvUFJPSkVDVF9OQU1FIFstaF0KCkFSR1VNRU5UUwogIE9XTkVSL1BST0pFQ1RfTkFNRSAgVGhlIHByb2plY3QgdG8gZ2V0IGRldGFpbHMgZm9yIG9uIFN3YWdnZXJodWIKCkZMQUdTCiAgLWgsIC0taGVscCAgU2hvdyBDTEkgaGVscC4KCkRFU0NSSVBUSU9OCiAgUmV0cmlldmVzIHRoZSBkZXRhaWxzIGZvciBhIHByb2plY3QuCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBwcm9qZWN0OmdldCBvcmdhbml6YXRpb24vcHJvamVjdF9uYW1lCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL3Byb2plY3QvZ2V0LmpzXShodHRwczovL2dpdGh1Yi5jb20vU21hcnRCZWFyL3N3YWdnZXJodWItY2xpL2Jsb2IvdjAuOS4xL3NyYy9jb21tYW5kcy9wcm9qZWN0L2dldC5qcylfCgojIyBgc3dhZ2dlcmh1YiBwcm9qZWN0Omxpc3RgCgpsaXN0IHByb2plY3RzCgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgcHJvamVjdDpsaXN0IFtPV05FUl0gWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIgIFRoZSBvcmdhbml6YXRpb24gdG8gbGlzdCBwcm9qZWN0cyBmb3Igb24gU3dhZ2dlcmh1YgoKRkxBR1MKICAtaCwgLS1oZWxwICBTaG93IENMSSBoZWxwLgoKREVTQ1JJUFRJT04KICBsaXN0IHByb2plY3RzCgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBwcm9qZWN0Omxpc3QKCiAgJCBzd2FnZ2VyaHViIHByb2plY3Q6bGlzdCBvcmdhbml6YXRpb24KYGBgCgpfU2VlIGNvZGU6IFtzcmMvY29tbWFuZHMvcHJvamVjdC9saXN0LmpzXShodHRwczovL2dpdGh1Yi5jb20vU21hcnRCZWFyL3N3YWdnZXJodWItY2xpL2Jsb2IvdjAuOS4xL3NyYy9jb21tYW5kcy9wcm9qZWN0L2xpc3QuanMpXwoKIyMgYHN3YWdnZXJodWIgcHJvamVjdDptZW1iZXI6bGlzdGAKCmxpc3QgbWVtYmVycyBvZiBhIHByb2plY3QKCmBgYApVU0FHRQogICQgc3dhZ2dlcmh1YiBwcm9qZWN0Om1lbWJlcjpsaXN0IE9XTkVSL1BST0pFQ1RfTkFNRSBbLWhdCgpBUkdVTUVOVFMKICBPV05FUi9QUk9KRUNUX05BTUUgIFByb2plY3QgdG8gbGlzdCBtZW1iZXJzIG9mIG9uIFN3YWdnZXJodWIKCkZMQUdTCiAgLWgsIC0taGVscCAgU2hvdyBDTEkgaGVscC4KCkRFU0NSSVBUSU9OCiAgbGlzdCBtZW1iZXJzIG9mIGEgcHJvamVjdAoKRVhBTVBMRVMKICAkIHN3YWdnZXJodWIgcHJvamVjdDptZW1iZXI6bGlzdCBvcmdhbmlzYXRpb24vcHJvamVjdF9uYW1lCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL3Byb2plY3QvbWVtYmVyL2xpc3QuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvYmxvYi92MC45LjEvc3JjL2NvbW1hbmRzL3Byb2plY3QvbWVtYmVyL2xpc3QuanMpXwoKIyMgYHN3YWdnZXJodWIgc3BlY3RyYWw6dXBsb2FkYAoKQ3JlYXRlIG9yIHVwZGF0ZSBvcmdhbml6YXRpb24ncyBTcGVjdHJhbCBydWxlc2V0CgpgYGAKVVNBR0UKICAkIHN3YWdnZXJodWIgc3BlY3RyYWw6dXBsb2FkIE9XTkVSL1JVTEVTRVRfTkFNRSBkaXJlY3RvcnkgWy1oXQoKQVJHVU1FTlRTCiAgT1dORVIvUlVMRVNFVF9OQU1FICAgICAgICAgICAgVGhlIFNwZWN0cmFsIHJ1bGVzZXQgZGV0YWlscyBmb3IgU3dhZ2dlckh1YiBvcmdhbml6YXRpb24KICBkaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZSBwYXRoIHRvIGRpcmVjdG9yeSB3aXRoIHJ1bGVzZXQgZmlsZXMKCkZMQUdTCiAgLWgsIC0taGVscCAgU2hvdyBDTEkgaGVscC4KCkRFU0NSSVBUSU9OCiAgQ3JlYXRlIG9yIHVwZGF0ZSBvcmdhbml6YXRpb24ncyBTcGVjdHJhbCBydWxlc2V0CgpFWEFNUExFUwogICQgc3dhZ2dlcmh1YiBzcGVjdHJhbDp1cGxvYWQgbXlfb3JnYW5pemF0aW9uL215X2FwaV9ydWxlc2V0IHJ1bGVzCmBgYAoKX1NlZSBjb2RlOiBbc3JjL2NvbW1hbmRzL3NwZWN0cmFsL3VwbG9hZC5qc10oaHR0cHM6Ly9naXRodWIuY29tL1NtYXJ0QmVhci9zd2FnZ2VyaHViLWNsaS9ibG9iL3YwLjkuMS9zcmMvY29tbWFuZHMvc3BlY3RyYWwvdXBsb2FkLmpzKV8KCgojIyBgc3dhZ2dlcmh1YiBzcGVjdHJhbDpkb3dubG9hZGAKCkZldGNoIG9yZ2FuaXphdGlvbidzIFNwZWN0cmFsIHJ1bGVzZXQKCmBgYApVU0FHRQogICQgc3dhZ2dlcmh1YiBzcGVjdHJhbDpkb3dubG9hZCBPV05FUi9SVUxFU0VUX05BTUUgZGlyZWN0b3J5IFstaF0KCkFSR1VNRU5UUwogIE9XTkVSL1JVTEVTRVRfTkFNRSAgICAgICAgICAgIFRoZSBTcGVjdHJhbCBydWxlc2V0IGRldGFpbHMgZm9yIFN3YWdnZXJIdWIgb3JnYW5pemF0aW9uCiAgZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmUgcGF0aCB0byBkaXJlY3RvcnkgdGhlIHJ1bGVzZXQgZmlsZXMgc2hvdWxkIGJlIHNhdmVkIHRvCgpGTEFHUwogIC1oLCAtLWhlbHAgIFNob3cgQ0xJIGhlbHAuCgpERVNDUklQVElPTgogIEZldGNoIG9yZ2FuaXphdGlvbidzIFNwZWN0cmFsIHJ1bGVzZXQKCkVYQU1QTEVTCiAgJCBzd2FnZ2VyaHViIHNwZWN0cmFsOmRvd25sb2FkIG15X29yZ2FuaXphdGlvbi9teV9hcGlfcnVsZXNldCBydWxlcwpgYGAKCl9TZWUgY29kZTogW3NyYy9jb21tYW5kcy9zcGVjdHJhbC9kb3dubG9hZC5qc10oaHR0cHM6Ly9naXRodWIuY29tL1NtYXJ0QmVhci9zd2FnZ2VyaHViLWNsaS9ibG9iL3YwLjkuMS9zcmMvY29tbWFuZHMvc3BlY3RyYWwvZG93bmxvYWQuanMpXwo8IS0tIGNvbW1hbmRzc3RvcCAtLT4KCiMgUGx1Z2lucwoKVGhlIFN3YWdnZXJIdWIgQ0xJIHN1cHBvcnRzIHBsdWdpbnMgdmlhIHRoZSBbb2NsaWYgcGx1Z2luXShodHRwczovL29jbGlmLmlvL2RvY3MvcGx1Z2lucykgaW5mcmFzdHJ1Y3R1cmUuCgpUbyBpbnN0YWxsIGEgcGx1Z2luCgpgYGBzaC1zZXNzaW9uCiQgc3dhZ2dlcmh1YiBwbHVnaW5zOmluc3RhbGwgPGdpdGh1Yi11cmw+CmBgYAoKVG8gbGlzdCBvdGhlciBvcHRpb25zIHJlbGF0ZWQgdG8gcGx1Z2lucwoKYGBgc2gtc2Vzc2lvbgokIHN3YWdnZXJodWIgcGx1Z2lucyAtLWhlbHAKYGBgCgpBbiBleGFtcGxlIHBsdWdpbiB1c2VkIGZvciBmZXRjaGluZyBwb3B1bGFyIFtKU09OIFNjaGVtYV0oaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvKSBmaWxlcywgY2FuIGJlIGZvdW5kIGhlcmU6ICBbaHR0cHM6Ly9naXRodWIuY29tL3BvbmVsYXQvc3dhZ2dlcmh1Yi1jbGktcGx1Z2luLXNjaGVtYV0oaHR0cHM6Ly9naXRodWIuY29tL3BvbmVsYXQvc3dhZ2dlcmh1Yi1jbGktcGx1Z2luLXNjaGVtYSkKCkV4YW1wbGUgdXNhZ2UKCmBgYHNoLXNlc3Npb24KJCBzd2FnZ2VyaHViIHBsdWdpbnM6aW5zdGFsbCBodHRwczovL2dpdGh1Yi5jb20vcG9uZWxhdC9zd2FnZ2VyaHViLWNsaS1wbHVnaW4tc2NoZW1hCiQgc3dhZ2dlcmh1YiBzY2hlbWE6bGlzdAogIGFuZ3VsYXItY2xpLWpzb24KICBhbnNpYmxlCiAgYXBwbGUtYXBwLXNpdGUtYXNzb2NpYXRpb24KICBhcHBzc2NyaXB0LWpzb24KICAjLi4uCiQgc3dhZ2dlcmh1YiBzY2hlbWE6Z2V0IGFuc2libGUKICB7CiAgICAiZGVzY3JpcHRpb24iOiAiQXV0by1HZW5lcmF0ZWQgSlNPTiBTY2hlbWEgZm9yIEFuc2libGUtc3RhYmxlIDIuOSAoaHR0cHM6Ly9naXRodWIuY29tL3NoYWRlZC1lbm1pdHkvYW5zaWJsZS1zY2hlbWEtZ2VuZXJhdG9yKSIsCiAgICAidGl0bGUiOiAiQW5zaWJsZSAyLjkiLAogICAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIiwKICAgICJ0eXBlIjogImFycmF5IiwKICAjIC4uLgpgYGAKCiMgQ29udHJpYnV0aW5nCjwhLS0gY29udHJpYnV0aW5nIC0tPgpUaGUgU3dhZ2dlckh1YiBDTEkgaXMgY3VycmVudGx5IGluIGFuIGFjdGl2ZSBkZXZlbG9wbWVudCBwaGFzZeKAlHdlIHdpbGwgbm90IGJlIGFjY2VwdGluZyBQdWxsIFJlcXVlc3RzIGF0IHRoaXMgdGltZS4gSWYgeW914oCZdmUgZm91bmQgYW55IGJ1Z3Mgb3IgdHlwb3MsIG9yIGhhdmUgYSBmZWF0dXJlIHJlcXVlc3RzIG9yIGdlbmVyYWwgZmVlZGJhY2sgeW914oCZZCBsaWtlIHRvIHNoYXJlLCBwbGVhc2Ugb3BlbiBhbiBbaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9TbWFydEJlYXIvc3dhZ2dlcmh1Yi1jbGkvaXNzdWVzKSBhbmQgbGV0IHVzIGtub3cuCjwhLS0gY29udHJpYnV0aW5nc3RvcCAtLT4K readmeEtag: '"5259ac3d47763307d68b1dd2ebadf2b873a5c454"' readmeLastModified: Thu, 25 Sep 2025 11:18:33 GMT repositoryId: 261799480 description: SwaggerHub CLI created: '2020-05-06T15:21:34Z' updated: '2026-01-23T14:15:57Z' language: JavaScript archived: false stars: 54 watchers: 31 forks: 16 owner: SmartBear logo: https://avatars.githubusercontent.com/u/1644671?v=4 license: Apache-2.0 repoEtag: '"871c2631d0c1f262ff80c0b30cfc7d2341e04ceb820af2a2a39305e50b6ec331"' repoLastModified: Fri, 23 Jan 2026 14:15:57 GMT foundInMaster: true category: Code Generators id: 4921a5a6c94697cd438f25deccf95ab6 - source: openapi3 tags repository: https://github.com/mermade/openapi-lint-vscode v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWxpbnQgUkVBRE1FCgohW1Zpc3VhbCBTdHVkaW8gTWFya2V0cGxhY2UgRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2UvZC9tZXJtYWRlLm9wZW5hcGktbGludCkgIVtWaXN1YWwgU3R1ZGlvIE1hcmtldHBsYWNlIFN0YXJzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2Uvc3RhcnMvbWVybWFkZS5vcGVuYXBpLWxpbnQpCgpUaGlzIGV4dGVuc2lvbiBjYW4gYmUgdXNlZCB0byB2YWxpZGF0ZSBhbmQgW2xpbnRdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpbnRfKHNvZnR3YXJlKSkgT3BlbkFQSSAzLjAueCBkb2N1bWVudHMsIGFuZCBjb252ZXJ0IGJldHdlZW4gT3BlbkFQSSAyLjAgYW5kIDMuMC4wLiBJdCBwcm92aWRlcyAxMSBWaXN1YWwgU3R1ZGlvIENvZGUgY29tbWFuZHM6CgoqIE9wZW5BUEkgVmFsaWRhdGUgLSB3aGljaCBmdWxseSB2YWxpZGF0ZXMgeW91ciBPcGVuQVBJIGRvY3VtZW50IGFnYWluc3QgdGhlIFtzcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMi5tZCkKKiBPcGVuQVBJIExpbnQgLSB3aGljaCBhZGRpdGlvbmFsbHkgYXBwbGllcyBhIGxpZ2h0bHktb3BpbmlvbmF0ZWQgc2V0IG9mIGJlc3QtcHJhY3RpY2VzCiogT3BlbkFQSSBSZXNvbHZlIGFuZCBWYWxpZGF0ZSAtIHdoaWNoIHB1bGxzIGluIGV4dGVybmFsIGAkcmVmYHMgYmVmb3JlIHZhbGlkYXRpbmcKKiBPcGVuQVBJIFJlc29sdmUgYW5kIExpbnQgLSB3aGljaCBwdWxscyBpbiBleHRlcm5hbCBgJHJlZmBzIGJlZm9yZSBsaW50aW5nCiogT3BlbkFQSSBSZXNvbHZlIChCdW5kbGUpIC0gd2hpY2ggcmVzb2x2ZXMgZXh0ZXJuYWwgYCRyZWZgcyB0byBhIG5ldyB3aW5kb3cKKiBPcGVuQVBJIDIuMCB0byAzLjAuMCAoWUFNTCkgLSB3aGljaCBjb252ZXJ0cyB0aGUgY3VycmVudCBPcGVuQVBJIDIuMCBkb2N1bWVudCB0byAzLjAuMCBpbiBZQU1MCiogT3BlbkFQSSAyLjAgdG8gMy4wLjAgKEpTT04pIC0gd2hpY2ggY29udmVydHMgdGhlIGN1cnJlbnQgT3BlbkFQSSAyLjAgZG9jdW1lbnQgdG8gMy4wLjAgaW4gSlNPTgoqIE9wZW5BUEkgMi4wIHRvIDMuMC4wIChZQU1ML1Jlc29sdmVkKSAtIGxpa2UgdGhlIGFib3ZlIGJ1dCByZXNvbHZpbmcgZXh0ZXJuYWwgYCRyZWZgcwoqIE9wZW5BUEkgMi4wIHRvIDMuMC4wIChKU09OL1Jlc29sdmVkKSAtIGxpa2UgdGhlIGFib3ZlIGJ1dCByZXNvbHZpbmcgZXh0ZXJuYWwgYCRyZWZgcwoqIE9wZW5BUEkgdG8gSlNPTiAtIHdoaWNoIHNpbXBseSB0cmFuc2xhdGVzIHRoZSBjdXJyZW50IGRvY3VtZW50IHRvIEpTT04KKiBPcGVuQVBJIHRvIFlBTUwgLSB3aGljaCBzaW1wbHkgdHJhbnNsYXRlcyB0aGUgY3VycmVudCBkb2N1bWVudCB0byBZQU1MCgpUaGUgdmFsaWRhdG9yIGVuZm9yY2VzIHNlbWFudGljIHJlc3RyaWN0aW9ucyB3aGljaCBjYW5ub3QgYmUgZXhwcmVzc2VkIGJ5IHRoZSBKU09OIFNjaGVtYSB3aGljaCBkcml2ZXMgdGhlIGludGVsbGlzZW5zZSBmZWF0dXJlcywgc28gaXQgd2lsbCBwaWNrIHVwIG9uIG1hbnkgbW9yZSBlcnJvcnMuCgpUaGUgbGludGVyIGFwcGxpZXMgYSBsaWdodGx5IG9waW5pb25hdGVkIHNldCBvZiAnYmVzdCBwcmFjdGljZXMnIHRvIHlvdXIgQVBJIGRvY3VtZW50LCBtYWtpbmcgaXQgY29tcGxldGUgYW5kIGNvbXByZWhlbnNpdmUsIGFzIG9wcG9zZWQgdG8gbWVyZWx5IG1pbmltYWxseSB2YWxpZC4KClRoZSBkZWZhdWx0IGxpbnRlciBydWxlcyBhcmUgZG9jdW1lbnRlZCBbaGVyZV0oaHR0cHM6Ly9tZXJtYWRlLmdpdGh1Yi5pby9vYXMta2l0L2RlZmF1bHQtcnVsZXMuaHRtbCkuIFRoZSBsaW50ZXIgW0RTTCBydWxlcyBmb3JtYXRdKGh0dHBzOi8vbWVybWFkZS5naXRodWIuaW8vb2FzLWtpdC9saW50ZXItcnVsZXMuaHRtbCkgaXMgYWxzbyBkb2N1bWVudGVkLgoKIyMgRmVhdHVyZXMKCiogVmFsaWRhdGlvbiB1c2luZyBbb2FzLXZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL01lcm1hZGUvb2FzLWtpdC90cmVlL21hc3Rlci9wYWNrYWdlcy9vYXMtdmFsaWRhdG9yKSBmcm9tIFtPQVMtS2l0XShodHRwczovL21lcm1hZGUuZ2l0aHViLmlvL29hcy1raXQvKQoqIExpbnRpbmcgdXNpbmcgW29hcy1saW50ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL29hcy1raXQvdHJlZS9tYXN0ZXIvcGFja2FnZXMvb2FzLWxpbnRlcikgYWxzbyBmcm9tIE9BUy1LaXQKKiBSZXNvbHV0aW9uIHVzaW5nIFtvYXMtcmVzb2x2ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL29hcy1raXQvdHJlZS9tYXN0ZXIvcGFja2FnZXMvb2FzLXJlc29sdmVyKSBhbHNvIGZyb20gT0FTLUtpdAoqIENvbnZlcnNpb24gdXNpbmcgW3N3YWdnZXIyb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL01lcm1hZGUvb2FzLWtpdC90cmVlL21hc3Rlci9wYWNrYWdlcy9zd2FnZ2VyMm9wZW5hcGkpIGFsc28gZnJvbSBPQVMtS2l0CiogT0FTIHYzIGludGVsbGlzZW5zZSBmb3IgZmlsZXMgbmFtZWQgYCpvcGVuYXBpLmpzb25gLCBgKm9wZW5hcGkueWFtbGAsIGAqb3BlbmFwaS55bWxgLCBgKm9hczMuanNvbmAsIGAqb2FzMy55YW1sYCwgYCpvYXMzLnltbGAKKiBPQVMgdjIgaW50ZWxsaXNlbnNlIGZvciBmaWxlcyBuYW1lZCBgKnN3YWdnZXIuanNvbmAsIGAqc3dhZ2dlci55YW1sYCwgYCpzd2FnZ2VyLnltbGAsIGAqb2FzMi5qc29uYCwgYCpvYXMyLnlhbWxgLCBgKm9hczIueW1sYAoqIENvbnZlcnNpb24gYmV0d2VlbiBKU09OIGFuZCBZQU1MCiogU25pcHBldHMgKG1pbmltYWwgdmFsaWQgb3BlbmFwaS9zd2FnZ2VyIEpTT04gYW5kIFlBTUwgZG9jdW1lbnRzKQoqIEFzeW5jQVBJIHYyLjAueCBpbnRlbGxpc2Vuc2UgZm9yIGZpbGVzIG5hbWVkIGAqYXN5bmNhcGkuanNvbmAsIGAqYXN5bmNhcGkueWFtbGAsIGAqYXN5bmNhcGkueW1sYAoqIEFzeW5jQVBJIHYxLjIueCBpbnRlbGxpc2Vuc2UgZm9yIGZpbGVzIG5hbWVkIGAqYXN5bmNhcGkxLmpzb25gLCBgKmFzeW5jYXBpMS55YW1sYCwgYCphc3luY2FwaTEueW1sYAoKIyMgQ29taW5nIHNvb24KCiogTW9yZSBzbmlwcGV0cwoqIEludGVncmF0aW9uIHdpdGggW0FQSXMuZ3VydSBPcGVuQVBJIGRpcmVjdG9yeV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaXMtZ3VydS9vcGVuYXBpLWRpcmVjdG9yeSkKKiBJbnRlZ3JhdGlvbiB3aXRoIFtBUElzLmd1cnUgQXN5bmNBUEkgZGlyZWN0b3J5XShodHRwczovL2dpdGh1Yi5jb20vYXBpcy1ndXJ1L2FzeW5jYXBpLWRpcmVjdG9yeSkKKiBFeHRyYWN0IGRlZmF1bHQgbGludGVyIHJ1bGVzIHRvIG5ldyB0YWIgdG8gYWxsb3cgc2F2aW5nIGFzIG92ZXJyaWRlcwoKIyMgU2NyZWVuc2hvdHMKCiFbc2NyZWVuc2hvdF0oLi9pbWFnZXMvdnNjb2RlLWxpbnQucG5nKQoKIyMgUmVxdWlyZW1lbnRzCgpUaGUgZXh0ZW5zaW9uIHNob3VsZCB3b3JrIGFzLWlzCgojIyBFeHRlbnNpb24gU2V0dGluZ3MKClRoZSBgb25TYXZlQWN0aW9uYCBjYW4gYmUgc2V0IHRvIG9uZSBvZiBgbm9uZWAsIGB2YWxpZGF0ZWAsIGByZXNvbHZlQW5kVmFsaWRhdGVgICh0aGUgZGVmYXVsdCksIGBsaW50YCBvciBgcmVzb2x2ZUFuZExpbnRgLgoKIyMgS25vd24gSXNzdWVzCgoqIEp1bXAtdG8tZXJyb3IgZnVuY3Rpb25hbGl0eSBub3QgaW1wbGVtZW50ZWQgeWV0IChhbGwgc2hvdyBhcyBsaW5lIDEpCiogTm8gd2F5IHRvIG92ZXJyaWRlL2FtZW5kIGxpbnRlciBydWxlcyB5ZXQKCiMjIENyZWRpdHMKCiogSWNvbiBiYXNlZCB1cG9uIFtJY29uczhdKGh0dHA6Ly9pY29uczguY29tLykKCiMjIFJlbGVhc2UgTm90ZXMKClNlZSB0aGUgW0NIQU5HRUxPR10oLi9DSEFOR0VMT0cubWQpCg== readmeEtag: '"e34f67b2987c46133e75a44a24bedd5c73575ceb"' readmeLastModified: Wed, 12 Aug 2020 13:36:40 GMT repositoryId: 139170191 description: >- OpenAPI 2.0/3.0.x intellisense, validator, linter, converter and resolver extension for Visual Studio Code created: '2018-06-29T16:05:52Z' updated: '2025-07-06T20:31:52Z' language: JavaScript archived: false stars: 52 watchers: 3 forks: 8 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: BSD-3-Clause repoEtag: '"628cdafcd9832c909187eb4ffb30934252957d5bef2356bdf7aa9f868032e356"' repoLastModified: Sun, 06 Jul 2025 20:31:52 GMT foundInMaster: true name: VSCode/openapi-lint category: - Text Editors - Parsers language: Node.js link: https://marketplace.visualstudio.com/items?itemName=mermade.openapi-lint source_description: OpenAPI 2.0/3.0.x intellisense, validator and linter for Visual Studio Code v2: true id: ab48d5ce77b0c9f808ee6c600d40888c - source: openapi3 tags repository: https://github.com/iyobo/amala v3: true repositoryMetadata: base64Readme: >- IyBBbWFsYQohW2FtYWxhMl0oaHR0cHM6Ly9naXRodWIuY29tL2l5b2JvL2FtYWxhL2Fzc2V0cy81ODA0MjQ2L2FjYzY4YTUyLTExMTAtNGU4NC04NGIzLTc1MjliMWYwZDM1NCkKCgoqKkFtYWxhKiogaXMgYSBkZWNvcmF0b3ItYmFzZWQgQVBJIGZyYW1ld29yayBmb3IgS29hSlMgdjIrIGFuZCBUeXBlc2NyaXB0LgpBbWFsYSBpcyBmYXN0LCBsaWdodCwgc2VsZi1kb2N1bWVudGluZyBhbmQgRG9ja2VyLXJlYWR5OyBQZXJmZWN0IGZvciBtaWNyb3NlcnZpY2VzLgoKLSBEZWZpbmUgeW91ciBSRVNUIEFQSSBlbmRwb2ludHMgdXNpbmcgRVM4IF9jbGFzc2VzXyBhbmQgX2RlY29yYXRvcnNfLgotIEluamVjdCBhcmd1bWVudHMgaW50byB5b3VyIGVuZHBvaW50IGhhbmRsZXJzLCBlZmZlY3RpdmVseSB0dXJuaW5nIHlvdXIgY29udHJvbGxlciBlbmRwb2ludHMgaW50byBzdGFuZGFsb25lLCB0ZXN0YWJsZSBzZXJ2aWNlIGVuZHBvaW50cy4KLSBDbGVhbiwgbGlnaHQgYW5kIEZBU1QgZW5kcG9pbnRzLiBQb3dlcmVkIGJ5IEtvYS4KLSBObyBmdXJ0aGVyIG1hZ2ljIHBhc3QgZGVjb3JhdG9ycy4gRnVsbCBhY2Nlc3MgdG8gdW5kZXJseWluZyBLb2EgYXBwLgotIFByb2plY3QgY3JlYXRvciBjb21lcyB3aXRoIGZ1bGx5IGNvbmZpZ3VyZWQgRG9ja2VyIGFuZCBEb2NrZXItY29tcG9zZSBzZXR0aW5ncyBmb3IgcXVpY2sgY29udGFpbmVyaXphdGlvbi4KLSBJbi1idWlsdCBPcGVuQVBJIHNwZWMgZXhwb3J0ZXIgYW5kIFN3YWdnZXIgVUkhCgpUaGlzIGxlYWRzIHRvIGNsZWFuLCBzZWxmLWRvY3VtZW50aW5nIEFQSSBlbmRwb2ludHMgYW5kIG1ha2VzIGl0IHNvIHlvdSBjYW4gcmUtdXNlIHRob3NlIHNlcnZpY2UgZW5kcG9pbnRzIGVsc2V3aGVyZS4KSXQgYWxzbyBtYWtlcyB5b3VyIGVuZHBvaW50IGVuZHBvaW50cyBlYXNpZXIgdG8gdGVzdC4KCiMjIFN1cHBvcnRpbmcgQW1hbGEKCioqQW1hbGEqKiBpcyBhbiBNSVQtbGljZW5zZWQgb3BlbiBzb3VyY2UgcHJvamVjdCB3aXRoIGl0cyBvbmdvaW5nIGRldmVsb3BtZW50IG1hZGUgcG9zc2libGUgZW50aXJlbHkgYnkKY29tbXVuaXR5IHN1cHBvcnQuIElmIEFtYWxhIGlzIGhlbHBpbmcgeW91IGJ1aWxkCmF3ZXNvbWUgQVBJcywgcGxlYXNlIGNvbnNpZGVyIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2JlUGF0cm9uP3U9MTk2NjE5MzkiIGRhdGEtcGF0cmVvbi13aWRnZXQtdHlwZT0iYmVjb21lLXBhdHJvbi1idXR0b24iPkJlY29taW5nIGEgUGF0cm9uPC9hPi4KCklmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUgaW4gb3RoZXIgd2F5cywgUHVsbCByZXF1ZXN0cyBhcmUgYWxzbyB3ZWxjb21lIQoKIyMgR2V0dGluZyBzdGFydGVkCllvdSBtYXkgY3JlYXRlIGFuIEFtYWxhIHByb2plY3Qgd2l0aCBhbnkgb2YgdGhlIGZvbGxvd2luZzoKLSBgbnBtIGluaXQgYW1hbGEtYXBwIDxwcm9qZWN0X25hbWU+YAotIGBucG0gY3JlYXRlIGFtYWxhLWFwcCA8cHJvamVjdF9uYW1lPmAKLSBgeWFybiBjcmVhdGUgYW1hbGEtYXBwIDxwcm9qZWN0X25hbWU+YAoKRm9yIG5leHQgc3RlcHMsIHNlZSBvZmZpY2lhbCBkb2NzIGF0IGh0dHBzOi8vYW1hbGFqcy5jb20uCg== readmeEtag: '"b62622a8ea918e0d8d16ac28e4440e2885eb1b63"' readmeLastModified: Tue, 09 Jan 2024 14:46:39 GMT repositoryId: 195160672 description: >- NodeJs Framework for creating REST API endpoints with Typescript decorators. Supports API versioning, OpenAPI3 and docker. Powered by Koa 2+ and Nigerian food (amala+ewedu) created: '2019-07-04T03:11:00Z' updated: '2024-08-02T07:23:52Z' language: TypeScript archived: false stars: 51 watchers: 3 forks: 7 owner: iyobo logo: https://avatars.githubusercontent.com/u/5804246?v=4 license: MIT repoEtag: '"c8c81a05d80a555bc4a6adea08394be40ea6351663f6971979e419d6df375075"' repoLastModified: Fri, 02 Aug 2024 07:23:52 GMT foundInMaster: true category: Server Implementations id: 2907bc65572d999425a855e40ee714ed - source: openapi3 tags repository: https://github.com/openapitools/openapi-petstore v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIHBldHN0b3JlCgpUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBPcGVuQVBJIHBldCBzdG9yZSBiYXNlZCBvbiBTcHJpbmctQm9vdC4KCiMjIE92ZXJ2aWV3CgpTdGFydCB5b3VyIHNlcnZlciBhcyBhIHNpbXBsZSBTcHJpbmctQm9vdCBhcHBsaWNhdGlvbgpgYGAKbXZuIHNwcmluZy1ib290OnJ1bgpgYGAKT3IgcGFja2FnZSBpdCB0aGVuIHJ1biBpdCBhcyBhIEphdmEgYXBwbGljYXRpb24KYGBgCm12biBwYWNrYWdlCmphdmEgLWphciB0YXJnZXQvb3BlbmFwaS1wZXRzdG9yZS17VkVSU0lPTn0uamFyCmBgYAoKWW91IGNhbiB2aWV3IHRoZSBhcGkgZG9jdW1lbnRhdGlvbiBpbiBzd2FnZ2VyLXVpIGJ5IHBvaW50aW5nIHRvICAKaHR0cDovL2xvY2FsaG9zdDo4MDgwLwoKIyMgRG9ja2VyCgpUbyBzdGFydCB0aGUgc2VydmVyIHZpYSBkb2NrZXIsIHBsZWFzZSBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kczoKYGBgc2gKZG9ja2VyIHB1bGwgb3BlbmFwaXRvb2xzL29wZW5hcGktcGV0c3RvcmUKZG9ja2VyIHJ1biAtZCAtZSBPUEVOQVBJX0JBU0VfUEFUSD0vdjMgLXAgODA6ODA4MCBvcGVuYXBpdG9vbHMvb3BlbmFwaS1wZXRzdG9yZQpgYGAKClJlZjogaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29wZW5hcGl0b29scy9vcGVuYXBpLXBldHN0b3JlLwoKIyMgU2VjdXJpdHkKCiMjIyBBUEkga2V5ClVzZSBgc3BlY2lhbC1rZXlgIGZvciBlbmRwb2ludHMgcHJvdGVjdGVkIGJ5IHRoZSBBUEkga2V5CgojIyMgT0F1dGgyCkJ5IGRlZmF1bHQgdGhlIHNlcnZlciBzdXBwb3J0cyB0aGUgaW1wbGljaXQgYW5kIHRoZSBwYXNzd29yZCBmbG93IChldmVuIHRob3VnaCBvbmx5IHRoZSBpbXBsaWNpdCBmbG93IGlzIGRlc2NyaWJlZCBpbiB0aGUgT0FJIHNwZWMpClRoZSBkZWZhdWx0IGNyZWRlbnRpYWxzIGFyZToKKiBjbGllbnQtaWQ6IHNhbXBsZS1jbGllbnQtaWQKKiBjbGllbnQtc2VjcmV0OiBzZWNyZXQKKiB1c2VybmFtZTogdXNlcgoqIHBhc3N3b3JkOiB1c2VyCgojIyBDb25maWd1cmF0aW9uCgpTcHJpbmcgcGFyYW1ldGVycyBpbiBhcHBsaWNhdGlvbi5wcm9wZXJ0aWVzOgoqIFNlcnZlciBwb3J0IDogYHNlcnZlci5wb3J0YCAoZGVmYXVsdD04MDgwKQoqIEFQSSBiYXNlIHBhdGggOiBgb3BlbmFwaS5vcGVuQVBJUGV0c3RvcmUuYmFzZS1wYXRoYCAoZGVmYXVsdD0vdjMpLiBJbiB0aGUgZG9ja2VyIGltYWdlIHRoZSBiYXNlIHBhdGggY2FuIGFsc28gYmUgc2V0IHdpdGggdGhlIGBPUEVOQVBJX0JBU0VfUEFUSGAgZW52aXJvbm1lbnQgdmFyaWFibGUuCgpFbnZpcm9ubWVudCB2YXJpYWJsZXM6CiogYERJU0FCTEVfQVBJX0tFWWAgOiBpZiBzZXQgdG8gIjEiLCB0aGUgc2VydmVyIHdpbGwgbm90IGNoZWNrIHRoZSBhcGkga2V5IGZvciB0aGUgcmVsZXZhbnQgZW5kcG9pbnRzLgoqIGBESVNBQkxFX09BVVRIYCA6IGlmIHNldCB0byAiMSIsIHRoZSBzZXJ2ZXIgd2lsbCBub3QgY2hlY2sgZm9yIGFuIE9BdXRoMiBhY2Nlc3MgdG9rZW4uCgojIyBMaWNlbnNlCgpbQXBhY2hlIDIuMCBMaWNlbnNlXShodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAp readmeEtag: '"31d448ef5211e24c2722fa848d2623050d3a9609"' readmeLastModified: Mon, 13 Aug 2018 06:24:53 GMT repositoryId: 136197966 description: The pet store sample created: '2018-06-05T15:27:38Z' updated: '2025-12-05T08:03:57Z' language: Java archived: false stars: 52 watchers: 5 forks: 45 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 repoEtag: '"7d8d76a3380223d39e35569bc167dd7331b6857e77bc652d390968f4c3adedad"' repoLastModified: Fri, 05 Dec 2025 08:03:57 GMT foundInMaster: true category: - Code Generators - Server Implementations id: 25fdf5fe94f828502b6c15037763b24c - source: openapi3 tags name: Gen homepage: https://github.com/wzshiming/gen language: Go source_description: Generate OpenAPI 3, client, and route based on golang source code. category: Code Generators repository: https://github.com/wzshiming/gen v3: true repositoryMetadata: base64Readme: >- IyBHZW4gLSBUb29scyBmb3IgZ2VuZXJhdGluZyBzb3VyY2UgY29kZSBmb3IgbWljcm9zZXJ2aWNlcwoKSnVzdCB3cml0ZSBub3JtYWwgZnVuY3Rpb25zLCBhbmQgR2VuIGdlbmVyYXRlcyBlZmZpY2llbnQgcm91dGluZyBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBmb3IgaXQKQmVjYXVzZSB0aGUgc291cmNlIGNvZGUgaXMgZ2VuZXJhdGVkLCBub25lIG9mIHRoaXMgYWZmZWN0cyBydW50aW1lIHBlcmZvcm1hbmNlICAKVGhlIGRpZmZlcmVuY2VzIGNhdXNlZCBieSBlYWNoIGNoYW5nZSBpbiB0aGUgdG9vbCBhcmUgc2hvd24gZGlyZWN0bHkgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UgY29kZSAgCmdlbmVyYXRpbmcgY2xpZW50cyBpcyBhbHNvIHN1cHBvcnRlZCAgCgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy93enNoaW1pbmcvZ2VuLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL3d6c2hpbWluZy9nZW4pClshW0dvIFJlcG9ydCBDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS93enNoaW1pbmcvZ2VuKV0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL3d6c2hpbWluZy9nZW4pClshW0dpdEh1YiBsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL3d6c2hpbWluZy9nZW4uc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3d6c2hpbWluZy9nZW4vYmxvYi9tYXN0ZXIvTElDRU5TRSkKCi0gW0VuZ2xpc2hdKGh0dHBzOi8vZ2l0aHViLmNvbS93enNoaW1pbmcvZ2VuL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCkKLSBb566A5L2T5Lit5paHXShodHRwczovL2dpdGh1Yi5jb20vd3pzaGltaW5nL2dlbi9ibG9iL21hc3Rlci9SRUFETUVfY24ubWQpCgojIyBFeGFtcGxlcwoKJyMnIGlzIHRoZSBhbm5vdGF0aW9uLCB0aGUgYW5ub3RhdGlvbiBpcyB0aGUgZ29sYW5nIHRhZyBzeW50YXgsIHRoZSBvbmx5IGRpZmZlcmVuY2UgaGVyZSBpcyAnIycgd3JhcHMgbm90ICdgJy4KCmBgYCBnb2xhbmcKLy8gSXRlbVNlcnZpY2UgI3BhdGg6Ii9pdGVtLyIjCnR5cGUgSXRlbVNlcnZpY2Ugc3RydWN0IHt9CgovLyBDcmVhdGUgYSBJdGVtICNyb3V0ZToiUE9TVCAvIiMKZnVuYyAocyAqSXRlbVNlcnZpY2UpIENyZWF0ZShpdGVtICpJdGVtKSAoZXJyIGVycm9yKSB7fQoKLy8gVXBkYXRlIHRoZSBJdGVtICNyb3V0ZToiUFVUIC97aXRlbV9pZH0iIwpmdW5jIChzICpJdGVtU2VydmljZSkgVXBkYXRlKGl0ZW1JRCBpbnQgLyogI25hbWU6Iml0ZW1faWQiIyAqLywgaXRlbSAqSXRlbSkgKGVyciBlcnJvcikge30KCi8vIERlbGV0ZSB0aGUgSXRlbSAjcm91dGU6IkRFTEVURSAve2l0ZW1faWR9IiMKZnVuYyAocyAqSXRlbVNlcnZpY2UpIERlbGV0ZShpdGVtSUQgaW50IC8qICNuYW1lOiJpdGVtX2lkIiMgKi8pIChlcnIgZXJyb3IpIHt9CgovLyBHZXQgdGhlIEl0ZW0gI3JvdXRlOiJHRVQgL3tpdGVtX2lkfSIjCmZ1bmMgKHMgKkl0ZW1TZXJ2aWNlKSBHZXQoaXRlbUlEIGludCAvKiAjbmFtZToiaXRlbV9pZCIjICovKSAoaXRlbSAqSXRlbVdpdGhJRCwgZXJyIGVycm9yKSB7fQoKLy8gTGlzdCBvZiB0aGUgSXRlbSAjcm91dGU6IkdFVCAvIiMKZnVuYyAocyAqSXRlbVNlcnZpY2UpIExpc3Qob2Zmc2V0LCBsaW1pdCBpbnQpIChpdGVtcyBbXSpJdGVtV2l0aElELCBlcnIgZXJyb3IpIHt9CmBgYAoKMS4gSW5zdGFsbCBnZW4gdG9vbCBgZ28gZ2V0IC12IGdpdGh1Yi5jb20vd3pzaGltaW5nL2dlbi9jbWQvZ2VuYAoyLiBBZGQgZ2VuIHRvb2wgdG8gJFBBVEgKMy4gU3RhcnQgaXQgYGdlbiBydW4gZ2l0aHViLmNvbS93enNoaW1pbmcvZ2VuLWV4YW1wbGVzL3NlcnZpY2UvLi4uYAo0LiBPcGVuIFtodHRwOi8vMTI3LjAuMC4xOjgwODAvc3dhZ2dlci8/dXJsPS4vb3BlbmFwaS5qc29uI10oaHR0cDovLzEyNy4wLjAuMTo4MDgwL3N3YWdnZXIvP3VybD0uL29wZW5hcGkuanNvbiMpIHdpdGggeW91ciBicm93c2VyCgpbRXhhbXBsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS93enNoaW1pbmcvZ2VuLWV4YW1wbGVzLykgIAoKT3IgdHJ5IHRvIHF1aWNrbHkgYnVpbGQgc2VydmljZXMgZnJvbSBzY3JhdGNoCgoxLiBNYWtlIGEgZGlyZWN0b3J5IGBta2RpciAtcCAkKGdvIGVudiBHT1BBVEgpL3NyYy9nZW50ZXN0YAoyLiBDaGFuZ2UgZGlyZWN0b3J5IGBjZCAkKGdvIGVudiBHT1BBVEgpL3NyYy9nZW50ZXN0L2AKMy4gRGVmaW5lIG1vZGVscwpgYGAgc2hlbGwKY2F0ID4gbW9kZWxzLmdvIDw8RU9GCnBhY2thZ2UgZ2VudGVzdAp0eXBlIEdlbnRlc3Qgc3RydWN0IHsKICAgIE5hbWUgc3RyaW5nIFxganNvbjoibmFtZSJcYAogICAgQWdlICBpbnQgICAgXGBqc29uOiJhZ2UiXGAKfQpFT0YKYGBgCjQuIEdlbmVyYXRlZCBmcm9tIENSVUQgdGVtcGxhdGUgYGdlbiBjcnVkIC10IG1vY2sgLW4gR2VudGVzdGAKNS4gU3RhcnQgaXQgYEdPMTExTU9EVUxFPW9mZiBnZW4gcnVuIGdlbnRlc3RgCgojIyBTdXBwb3J0ZWQKCi0gW1hdIEdlbmVyYXRlIGRvY3VtZW50YXRpb24KICAtIFtYXSBbT3BlbkFQSSAzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3R5bGUtR3VpZGUpCiAgLSBbWF0gW1N3YWdnZXJVSV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkpCiAgLSBbWF0gW1JlRG9jXShodHRwczovL2dpdGh1Yi5jb20vUmViaWxseS9SZURvYykKLSBbWF0gUkVTVGZ1bAogIC0gW1hdIEdlbmVyYXRlIEdvIHJvdXRlcgogICAgLSBbWF0gU2VjdXJpdHkKICAgICAgLSBbWF0gYXBpS2V5CiAgICAgIC0gW1hdIGh0dHAKICAgICAgICAtIFtYXSBiYXNpYwogICAgICAgIC0gWyBdIGJlYXJlcgogICAgICAtIFsgXSBvYXV0aDIKICAgICAgLSBbIF0gb3BlbklkQ29ubmV0CiAgICAtIFtYXSBDb250ZW50CiAgICAgIC0gW1hdIFF1ZXJ5CiAgICAgIC0gW1hdIFBhdGgKICAgICAgLSBbWF0gSGVhZGVyCiAgICAgIC0gW1hdIENvb2tpZQogICAgICAtIFtYXSBCb2R5CiAgICAgICAgLSBbWF0gSlNPTgogICAgICAgIC0gWyBdIFhNTAogICAgICAgIC0gWyBdIEZvcm1kYXRhCiAgICAgICAgICAtIFtYXSBGaWxlCiAgICAgICAgICAtIFsgXSBWYWx1ZQogICAgICAgIC0gWyBdIFVSTEVuY29kZQogIC0gW1hdIEdlbmVyYXRlIEdvIGNsaWVudAogICAgLSBbWF0gU2VjdXJpdHkKICAgICAgLSBbWF0gYXBpS2V5CiAgICAgIC0gW1hdIGh0dHAKICAgICAgICAtIFtYXSBiYXNpYwogICAgICAgIC0gW1hdIGJlYXJlcgogICAgICAtIFsgXSBvYXV0aDIKICAgICAgLSBbIF0gb3BlbklkQ29ubmV0CiAgICAtIFtYXSBDb250ZW50CiAgICAgIC0gW1hdIFF1ZXJ5CiAgICAgIC0gW1hdIFBhdGgKICAgICAgLSBbWF0gSGVhZGVyCiAgICAgIC0gW1hdIENvb2tpZQogICAgICAtIFtYXSBCb2R5CiAgICAgICAgLSBbWF0gSlNPTgogICAgICAgIC0gW1hdIFhNTAogICAgICAgIC0gW1hdIEZvcm1kYXRhCiAgICAgICAgICAtIFtYXSBGaWxlCiAgICAgICAgICAtIFtYXSBWYWx1ZQogICAgICAgIC0gWyBdIFVSTEVuY29kZQogIC0gT3RoZXIgQ2xpZW50CiAgICAtIFtPcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpCiAgICAtIFtzd2FnZ2VyLWFwaS9zd2FnZ2VyLWpzXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1qcykKICAgIC0gW3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi90cmVlLzMuMC4wKQotIFsgXSBnUlBDICYgUHJvdG8zCgojIyBMaWNlbnNlCgpQb3VjaCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBbTElDRU5TRV0oaHR0cHM6Ly9naXRodWIuY29tL3d6c2hpbWluZy9nZW4vYmxvYi9tYXN0ZXIvTElDRU5TRSkgZm9yIHRoZSBmdWxsIGxpY2Vuc2UgdGV4dC4K readmeEtag: '"689ac134bbeafe8e6c678104343f9b1901004fd3"' readmeLastModified: Mon, 13 Dec 2021 05:31:34 GMT repositoryId: 138471634 description: >- Gen generates efficient web routing source code and documentation from annotations created: '2018-06-24T10:07:22Z' updated: '2024-11-15T22:55:13Z' language: Go archived: false stars: 50 watchers: 5 forks: 6 owner: wzshiming logo: https://avatars.githubusercontent.com/u/6565744?v=4 license: MIT repoEtag: '"7e78df966689048f53818f59c1ac16667319583b84c3b20e50e35da16530ecb6"' repoLastModified: Fri, 15 Nov 2024 22:55:13 GMT foundInMaster: true id: 94aefe764a91d556fe6001241c0796f8 - source: openapi3 tags repository: https://github.com/sanjayvacharya/sleeplessinslc v3: true repositoryMetadata: base64Readme: >- IyBzbGVlcGxlc3NpbnNsYwpEZW1vbnN0cmF0aW9uIGFuZCBUdXRvcmlhbCBjb2RlIGZyb20gdGhlIEJMT0cgaHR0cDovL3NsZWVwbGVzc2luc2xjLmJsb2dzcG90LmNvbS4gSWYgeW91IGNsb25lIHRoaXMgcmVwbywgZm9yayB0aGlzIHJlcG8sIHNoYXJlIGEgc3RhciB0byBzaG93IGhvdyBhd2Vzb21lIGl0IGlzISBDaGVlcnMhCg== readmeEtag: '"a0791fcbf318c272bf621109ee8decf5097bad50"' readmeLastModified: Sun, 26 Jul 2020 19:06:11 GMT repositoryId: 35256352 description: 'Demo code from ' created: '2015-05-08T03:21:12Z' updated: '2024-08-24T01:36:19Z' language: Java archived: false stars: 50 watchers: 2 forks: 61 owner: sanjayvacharya logo: https://avatars.githubusercontent.com/u/605398?v=4 repoEtag: '"8169caa1efcb9baedbb66a48d092c88b19f23c1a9fcc60b25fb8cf0d01f70783"' repoLastModified: Sat, 24 Aug 2024 01:36:19 GMT foundInMaster: true category: - SDK - Server Implementations id: cab64553444e97be76afb26aa96e229a - source: openapi3 tags repository: https://github.com/rots/n26-api v3: true repositoryMetadata: base64Readme: >- IyBuMjYtYXBpClVub2ZmaWNpYWwgTjI2IEFQSSBkb2N1bWVudGF0aW9uCgpJdCBpcyBhIGNvbGxlY3Rpb24gb2Ygb2JzZXJ2ZWQgQVBJIGNhbGxzIGFuZCBtZXRob2RzLiBObyBndWFyYW50ZWVzIGFyZSBwcm92aWRlZCB0aGF0IHRoZXkgYXJlIGNvbXBsZXRlLCBjb3JyZWN0IG9yIHRoYXQgdGhleSBhcmUgc3RpbGwgZnVuY3Rpb25pbmcgYXMgc3BlY2lmaWVkLgoKVGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBpcyBwcm92aWRlZCBpbiB0aGUgYG9wZW5hcGkueW1sYCBmaWxlLgpGb3IgdGVzdGluZyB0aGUgc3BlYywgaXQgaXMgYWxzbyBwdWJsaXNoZWQgYXQgaHR0cHM6Ly9hcHAuc3dhZ2dlcmh1Yi5jb20vYXBpcy9Sb3RzL04yNgoKCiMgQ2xpZW50IHdyYXBwZXIgZ2VuZXJhdGlvbgoKVGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBhbGxvd3MgZm9yIGdlbmVyYXRpbmcgY2xpZW50IHdyYXBwZXJzIHRvIGFjY2VzcyB0aGUgZGF0YS4KCkV4YW1wbGU6CgpgYGAKZG9ja2VyIHJ1biAtLXJtIC12ICR7UFdEfTovbG9jYWwga29yY2hhc2Evc3dhZ2dlci1jb2RlZ2VuLW9wZW5hcGkgZ2VuZXJhdGUgLWkgL2xvY2FsL29wZW5hcGkueW1sIC1sIGphdmEgLW8gL2xvY2FsL291dC9qYXZhCmBgYAoKIyBTZWN1cml0eSB3YXJuaW5nIQoKRG8gbm90IHR5cGUgaW4geW91ciBiYW5rIGNyZWRlbnRpYWxzIHRvIGFuIHVudHJ1c3RlZCBzb2Z0d2FyZSEKT25jZSB5b3UgaGF2ZSBnaXZlbiBmdWxsIGFjY2VzcyB0byBhIHRoaXJkIHBhcnR5LCB0aGV5IGNhbiBpbmRlZmluaXRlbHkgImtlZXAgdGhlIGJhbmsgQVBJIHNlc3Npb24gYWxpdmUiIGJ5IHJlZnJlc2hpbmcgdGhlaXIgYWNjZXNzIHRva2VuIGFuZCBtYWtlIHRyYW5zYWN0aW9ucyBvbiB5b3VyIGJlaGFsZiAoYW5kIGNoYW5nZSBhbnkgZGV0YWlscyBvbiB0aGUgYmFua2luZyBhcHApLgpOMjYgaGF2ZW4ndCBlbmFibGVkIGEgd2F5IHRvIHJldm9rZSBhY2Nlc3Mgb2YgdGhpcmQgcGFydHkgYXBwcyAoYXMgZmFyIGFzIEkga25vdywgeW91IGNhbid0IHNlY3VyZWx5IHNpZ24gaW4gdG8gdGhlIGJhbmsgd2l0aG91dCBnaXZpbmcgeW91ciBwYXNzd29yZCBpbiBwbGFpbiB0ZXh0IHRvIHRoZSB0aGlyZCBwYXJ0eSkuCgpJZiB5b3UgdGhpbmsgdGhhdCB5b3VyIGNyZWRlbnRpYWxzIG1heSBoYXZlIGJlZW4gY29tcHJvbWlzZWQsIGltbWlkaWF0ZWx5IGNoYW5nZSB5b3VyIGxvZ2luIHBhc3N3b3JkIGluIHRoZSBvZmZpY2lhbCBOMjYgYXBwIGFuZCBub3RpZnkgdGhlIGJhbmsgb2YgYW55IHJlbGV2YW50IGluZm9ybWF0aW9uLgoKIyBPdGhlciBrbm93biBzb2Z0d2FyZSBmb3IgTjI2CgoqIGh0dHBzOi8vZ2l0aHViLmNvbS9ndWl0bXovbjI2IEdvIEFQSQoqIGh0dHBzOi8vZ2l0aHViLmNvbS9QaWVycmlja1AvbjI2IEpTT04gQVBJCgo= readmeEtag: '"87a9f22df22926c417642603db1ab7ee253d8872"' readmeLastModified: Tue, 01 May 2018 11:05:25 GMT repositoryId: 131702971 description: Unofficial N26 Bank API documentation created: '2018-05-01T10:55:00Z' updated: '2025-08-20T20:23:43Z' language: null archived: false stars: 50 watchers: 5 forks: 4 owner: Rots logo: https://avatars.githubusercontent.com/u/362397?v=4 license: MIT repoEtag: '"3f722be8cd390b950e5f87942d84b0c56eff1ec1a22c62c6874f06d36bfe6d43"' repoLastModified: Wed, 20 Aug 2025 20:23:43 GMT foundInMaster: true category: Server Implementations id: 1ea5bf53ca4a549ad53a8eda42392826 - source: - openapi3 tags - openapi31 tags repository: https://github.com/sv-tools/openapi v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIHYzLjEgU3BlY2lmaWNhdGlvbgoKWyFbQ29kZSBBbmFseXNpc10oaHR0cHM6Ly9naXRodWIuY29tL3N2LXRvb2xzL29wZW5hcGkvYWN0aW9ucy93b3JrZmxvd3MvY29kZS55YW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9zdi10b29scy9vcGVuYXBpL2FjdGlvbnMvd29ya2Zsb3dzL2NvZGUueWFtbCkKWyFbR28gUmVmZXJlbmNlXShodHRwczovL3BrZy5nby5kZXYvYmFkZ2UvZ2l0aHViLmNvbS9zdi10b29scy9vcGVuYXBpLnN2ZyldKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N2LXRvb2xzL29wZW5hcGkpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9zdi10b29scy9vcGVuYXBpL2JyYW5jaC9tYWluL2dyYXBoL2JhZGdlLnN2Zz90b2tlbj0wWFZPVERSMUNXKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3N2LXRvb2xzL29wZW5hcGkpClshW0dpdEh1YiB0YWcgKGxhdGVzdCBTZW1WZXIpXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi92L3RhZy9zdi10b29scy9vcGVuYXBpP3N0eWxlPWZsYXQpXShodHRwczovL2dpdGh1Yi5jb20vc3YtdG9vbHMvb3BlbmFwaS9yZWxlYXNlcykKClRoZSBpbXBsZW1lbnRhdGlvbiBvZiBPcGVuQVBJIHYzLjEgU3BlY2lmaWNhdGlvbiBmb3IgR28gdXNpbmcgZ2VuZXJpY3MuCgpgYGBzaGVsbApnbyBnZXQgZ2l0aHViLmNvbS9zdi10b29scy9vcGVuYXBpCmBgYAoKIyMgU3VwcG9ydGVkIEdvIHZlcnNpb25zCgoqIHYxLjI1CiogdjEuMjQKKiB2MS4yMwoqIHYxLjIyCgojIyBWZXJzaW9ucwoKKiB2MCAtICoqRGVwcmVjYXRlZCoqLiBUaGUgaW5pdGlhbCB2ZXJzaW9uIHdpdGggdGhlIGZ1bGwgaW1wbGVtZW50YXRpb24gb2YgdGhlIHYzLjEgU3BlY2lmaWNhdGlvbiB1c2luZyBnZW5lcmljcy4gU2VlIHRoZSBgdjBgIGJyYW5jaC4KKiB2MSAtIFRoZSBjdXJyZW50IHZlcnNpb24gd2l0aCB0aGUgaW4tcGxhY2UgdmFsaWRhdGlvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbi4KICAqIFRoZSBtaW5pbXVtIHZlcnNpb24gb2YgR28gaXMgYHYxLjIyYC4KICAqIEV2ZXJ5dGhpbmcgaGFzIGJlZW4gbW92ZWQgdG8gdGhlIHJvb3QgZm9sZGVyLiBTbywgdGhlIGltcG9ydCBwYXRoIGlzIGBnaXRodWIuY29tL3N2LXRvb2xzL29wZW5hcGlgLgogICogQWRkZWQgYFZhbGlkYXRvcmAgc3RydWN0IGZvciB2YWxpZGF0aW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCB0aGUgZGF0YS4KICAgICogYFZhbGlkYXRvci5WYWxpZGF0ZVNwZWMoKWAgbWV0aG9kIHZhbGlkYXRlcyB0aGUgc3BlY2lmaWNhdGlvbi4KICAgICogYFZhbGlkYXRvci5WYWxpZGF0ZURhdGEoKWAgbWV0aG9kIHZhbGlkYXRlcyB0aGUgZGF0YS4KICAgICogYFZhbGlkYXRvci5WYWxpZGF0ZURhdGFBc0pTT04oKWAgbWV0aG9kIHZhbGlkYXRlcyB0aGUgZGF0YSBieSBjb252ZXJ0aW5nIGl0IGludG8gYG1hcFtzdHJpbmddYW55YCB0eXBlIGZpcnN0IHVzaW5nIGBqc29uLk1hcnNoYWxgIGFuZCBganNvbi5Vbm1hcnNoYWxgLgogICAgICAqKldBUk5JTkcqKjogdGhlIGZ1bmN0aW9uIGlzIHNsb3cgZHVlIHRvIGRvdWJsZSBjb252ZXJzaW9uLgogICogQWRkZWQgYFBhcnNlT2JqZWN0YCBmdW5jdGlvbiB0byBjcmVhdGUgYFNjaGVtYUJ1aWxkZXJgIGJ5IHBhcnNpbmcgYW4gb2JqZWN0LgogICAgVGhlIGZ1bmN0aW9uIHN1cHBvcnRzIGBqc29uYCwgYHlhbWxgIGFuZCBgb3BlbmFwaWAgZmllbGQgdGFncyBmb3IgdGhlIHN0cnVjdHMuCiAgKiBVc2UgT3BlbkFQSSBgdjMuMS4xYCBieSBkZWZhdWx0LgoKIyMgRmVhdHVyZXMKCiogVGhlIG9mZmljaWFsIHYzLjAgYW5kIHYzLjEgW2V4YW1wbGVzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi90cmVlL21haW4vZXhhbXBsZXMpIGFyZSB0ZXN0ZWQuCiAgSW4gbW9zdCBjYXNlcywgdGhlIHYzLjAgc3BlY2lmaWNhdGlvbiBjYW4gYmUgY29udmVydGVkIHRvIHYzLjEgYnkgY2hhbmdpbmcgb25seSB0aGUgdmVyc2lvbiBwYXJhbWV0ZXIuCgogIGBgYGRpZmYKICBAQCAtMSw0ICsxLDQgQEAKICAtb3BlbmFwaTogIjMuMC4wIgogICtvcGVuYXBpOiAiMy4xLjAiCiAgYGBgCgoqKk5PVEUqKjogVGhlIGRlc2NyaXB0aW9ucyBvZiBtb3N0IHN0cnVjdHVyZXMgYW5kIHRoZWlyIGZpZWxkcyBhcmUgdGFrZW4gZnJvbSB0aGUgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbnMuCgojIyBMaW5rcwoKKiBPcGVuQVBJIFNwZWNpZmljYXRpb246IDxodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbj4gYW5kIDxodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjA+CiogSlNPTiBTY2hlbWE6IDxodHRwczovL2pzb24tc2NoZW1hLm9yZy91bmRlcnN0YW5kaW5nLWpzb24tc2NoZW1hL2luZGV4Lmh0bWw+IGFuZCA8aHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9qc29uLXNjaGVtYS1jb3JlLmh0bWw+CiogVGhlIGxpc3Qgb2YgbW9zdCBwb3B1bGFyIGFsdGVybmF0aXZlczogPGh0dHBzOi8vdG9vbHMub3BlbmFwaXMub3JnPgoKIyMgTGljZW5zZQoKTUlUIGxpY2Vuc2VkLiBTZWUgdGhlIGJ1bmRsZWQgW0xJQ0VOU0VdKExJQ0VOU0UpIGZpbGUgZm9yIG1vcmUgZGV0YWlscy4K readmeEtag: '"f7775bf70dd41e2e11fbdd58845c266446c7f206"' readmeLastModified: Tue, 26 Aug 2025 18:29:28 GMT repositoryId: 439764250 description: OpenAPI v3.1 Spec implementation in Go with generics created: '2021-12-19T03:11:04Z' updated: '2025-11-10T13:26:50Z' language: Go archived: false stars: 56 watchers: 3 forks: 11 owner: sv-tools logo: https://avatars.githubusercontent.com/u/59230487?v=4 license: MIT repoEtag: '"69c3515437b993b51bdb05701b82353f59fefb52724f41c22e555f847645dc92"' repoLastModified: Mon, 10 Nov 2025 13:26:50 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: 3d4e8c0ed6ec76b10233ee8d28bd125e name: openapi homepage: https://github.com/sv-tools/openapi language: Go source_description: OpenAPI v3.1 Spec implementation in Go with generics v3_1: true - source: openapi3 tags repository: https://github.com/javalin/javalin-openapi v3: true id: 91ce32879876ec8e68965162b84f61ec repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFBsdWdpbiBbIVtDSV0oaHR0cHM6Ly9naXRodWIuY29tL2phdmFsaW4vamF2YWxpbi1vcGVuYXBpL2FjdGlvbnMvd29ya2Zsb3dzL2dyYWRsZS55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2phdmFsaW4vamF2YWxpbi1vcGVuYXBpL2FjdGlvbnMvd29ya2Zsb3dzL2dyYWRsZS55bWwpICFbTWF2ZW4gQ2VudHJhbF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9tYXZlbi1jZW50cmFsL3YvaW8uamF2YWxpbi5jb21tdW5pdHkub3BlbmFwaS9vcGVuYXBpLWFubm90YXRpb24tcHJvY2Vzc29yP2xhYmVsPU1hdmVuJTIwQ2VudHJhbCkgWyFbVmVyc2lvbiAvIFNuYXBzaG90XShodHRwczovL21hdmVuLnJlcG9zaWxpdGUuY29tL2FwaS9iYWRnZS9sYXRlc3Qvc25hcHNob3RzL2lvL2phdmFsaW4vY29tbXVuaXR5L29wZW5hcGkvamF2YWxpbi1vcGVuYXBpLXBsdWdpbj9jb2xvcj1BOTdCRkYmbmFtZT1TbmFwc2hvdCldKGh0dHBzOi8vbWF2ZW4ucmVwb3NpbGl0ZS5jb20vIy9zbmFwc2hvdHMvaW8vamF2YWxpbi9jb21tdW5pdHkvb3BlbmFwaSkKQ29tcGlsZS10aW1lIE9wZW5BUEkgaW50ZWdyYXRpb24gZm9yIEphdmFsaW4gNi54IGVjb3N5c3RlbS4KVGhpcyBpcyBhIG5ldyBwbHVnaW4gdGhhdCByZXBsYWNlcyBbb2xkIGJ1aWx0LWluIE9wZW5BcGkgbW9kdWxlXShodHRwczovL2dpdGh1Yi5jb20vamF2YWxpbi9qYXZhbGluL3RyZWUvamF2YWxpbi00eC9qYXZhbGluLW9wZW5hcGkpLCAKdGhlIEFQSSBsb29rcyBxdWl0ZSB0aGUgc2FtZSBkZXNwaXRlIHNvbWUgbWlub3IgY2hhbmdlcy4KCiFbUHJldmlld10oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDIzNTcyMi8xMjI5ODIxNjItZDIzNDRmODAtZDM5YS0xMWViLTlhOTMtZTUyYjliN2I3YjUzLnBuZykKCiMjIyBIb3cgdG8gdXNlCgoqIFtXaWtpIC8gSW5zdGFsbGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vamF2YWxpbi9qYXZhbGluLW9wZW5hcGkvd2lraS8xLi1JbnN0YWxsYXRpb24pCiogW1dpa2kgLyBTZXR1cF0oaHR0cHM6Ly9naXRodWIuY29tL2phdmFsaW4vamF2YWxpbi1vcGVuYXBpL3dpa2kvMi4tU2V0dXApCiogW1dpa2kgLyBGZWF0dXJlc10oaHR0cHM6Ly9naXRodWIuY29tL2phdmFsaW4vamF2YWxpbi1vcGVuYXBpL3dpa2kvMy4tRmVhdHVyZXMpCgojIyMgTm90ZXMKKiBSZWZsZWN0aW9uIGZyZWUsIGRvZXMgbm90IHBlcmZvcm0gYW55IGV4dHJhIG9wZXJhdGlvbnMgYXQgcnVudGltZQoqIFVzZXMgYEBPcGVuQXBpYCB0byBzaW1wbGlmeSBtaWdyYXRpb24gZnJvbSBidW5kbGVkIE9wZW5BcGkgaW1wbGVtZW50YXRpb24KKiBTdXBwb3J0cyBKYXZhIDExKyAoYWxzbyAxNiBhbmQgYW55IGZ1cnRoZXIgcmVsZWFzZXMpIGFuZCBLb3RsaW4gKHRocm91Z2ggW0thcHRdKGh0dHBzOi8va290bGlubGFuZy5vcmcvZG9jcy9rYXB0Lmh0bWwpKQoqIFVzZXMgaW50ZXJuYWwgV2ViSmFyIGhhbmRsZXIgdGhhdCB3b3JrcyB3aXRoIGAvKmAgcm91dGUgb3V0IG9mIHRoZSBib3gKKiBQcm92aWRlcyBiZXR0ZXIgcHJvamVjdGlvbiBvZiBPcGVuQVBJIHNwZWNpZmljYXRpb24KKiBTY2hlbWEgdmFsaWRhdGlvbiB0aHJvdWdoIFN3YWdnZXIgY29yZSBtb2R1bGUKCiMjIyBPdGhlciBleGFtcGxlcwoqIFtUZXN0IG1vZHVsZV0oaHR0cHM6Ly9naXRodWIuY29tL2phdmFsaW4vamF2YWxpbi1vcGVuYXBpL2Jsb2IvbWFpbi9leGFtcGxlcy9qYXZhbGluLWdyYWRsZS1rb3RsaW4vc3JjL21haW4vamF2YS9pby9qYXZhbGluL29wZW5hcGkvcGx1Z2luL3Rlc3QvSmF2YWxpblRlc3QuamF2YSkgLSBgSmF2YWxpblRlc3RgIHNob3dzIGhvdyB0aGlzIHBsdWdpbiB3b3JrIGluIEphdmEgY29kZWJhc2UgdXNpbmcgdmFyaW91cyBmZWF0dXJlcwoqIFtSZXBvc2lsaXRlXShodHRwczovL2dpdGh1Yi5jb20vZHppa295c2svcmVwb3NpbGl0ZSkgLSByZWFsIHdvcmxkIGFwcCB1c2luZyBKYXZhbGluIGFuZCBPcGVuQXBpIGludGVncmF0aW9uCgojIyMgUmVwb3NpdG9yeSBzdHJ1Y3R1cmUKCiMjIyMgVW5pdmVyc2FsIG1vZHVsZXMKCnwgTW9kdWxlICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IGBvcGVuYXBpLWFubm90YXRpb24tcHJvY2Vzc29yYCB8IENvbXBpbGUtdGltZSBhbm5vdGF0aW9uIHByb2Nlc3Nvciwgc2hvdWxkIGdlbmVyYXRlIGAvb3BlbmFwaS1wbHVnaW4vb3BlbmFwaS5qc29uYCByZXNvdXJjZSB8CnwgYG9wZW5hcGktc3BlY2lmaWNhdGlvbmAgICAgICAgIHwgQW5ub3RhdGlvbnMgJiBjbGFzc2VzIHVzZWQgdG8gZGVzY3JpYmUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgb3BlbmFwaS10ZXN0YCAgICAgICAgICAgICAgICAgfCBFeGFtcGxlIEphdmFsaW4gYXBwbGljYXRpb24gdGhhdCB1c2VzIE9wZW5BcGkgcGx1Z2luIGluIEdyYWRsZSAmIE1hdmVuICAgICAgICAgICAgICAgICAgICAgfAoKIyMjIyBKYXZhbGluIHBsdWdpbnMKCnwgUGx1Z2luICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IGBqYXZhbGluLW9wZW5hcGktcGx1Z2luYCB8IExvYWRzIGAvb3BlbmFwaS1wbHVnaW4vb3BlbmFwaS5qc29uYCByZXNvdXJjZSBhbmQgc2VydmVzIG1haW4gT3BlbkFwaSBlbmRwb2ludCB8CnwgYGphdmFsaW4tc3dhZ2dlci1wbHVnaW5gIHwgU2VydmVzIFN3YWdnZXIgVUkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgamF2YWxpbi1yZWRvYy1wbHVnaW5gICAgfCBTZXJ2ZXMgUmVEb2MgVUkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKIyMjIyBCcmFuY2hlcwoKfCBCcmFuY2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBKYXZhbGluIHZlcnNpb24gfCBPcGVuQXBpIFZlcnNpb24gfCBKYXZhIFZlcnNpb24gfAp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18CnwgW21haW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9qYXZhbGluL2phdmFsaW4tb3BlbmFwaS90cmVlL21haW4pIHwgNi54ICAgICAgICAgICAgIHwgNi54ICAgICAgICAgICAgIHwgSkRLMTEgICAgICAgIHwKfCBbNS54XShodHRwczovL2dpdGh1Yi5jb20vamF2YWxpbi9qYXZhbGluLW9wZW5hcGkvdHJlZS81LngpICAgfCA1LnggICAgICAgICAgICAgfCA1LnggICAgICAgICAgICAgfCBKREsxMSAgICAgICAgfAp8IFs0LnhdKGh0dHBzOi8vZ2l0aHViLmNvbS9qYXZhbGluL2phdmFsaW4tb3BlbmFwaS90cmVlLzQueCkgICB8IDQueCAgICAgICAgICAgICB8IDEueCAgICAgICAgICAgICB8IEpESzggICAgICAgICB8Cg== readmeEtag: '"fc0e52845b3780f38287e9aa78acc1b14220a87d"' readmeLastModified: Sun, 21 Jul 2024 14:21:45 GMT repositoryId: 364314288 description: >- Annotation processor for compile-time OpenAPI & JsonSchema, with out-of-the-box support for Javalin 5.x & 6.x, Swagger & ReDoc created: '2021-05-04T16:10:52Z' updated: '2026-01-20T11:46:27Z' language: Kotlin archived: false stars: 60 watchers: 5 forks: 22 owner: javalin logo: https://avatars.githubusercontent.com/u/28701086?v=4 license: Apache-2.0 repoEtag: '"d513a9de4a69650a5f138d9951da0aa95a83c63f8ae7096fe853cfa8e09826f2"' repoLastModified: Tue, 20 Jan 2026 11:46:27 GMT category: SDK foundInMaster: true oldLocations: - https://github.com/dzikoysk/javalin-openapi - https://github.com/reposilite-playground/javalin-openapi - source: openapi3 tags repository: https://github.com/juliacomputing/openapi.jl v3: true id: daf8fe2008e1ce6b16d45cb87d8bbb50 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJCgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9KdWxpYUNvbXB1dGluZy9PcGVuQVBJLmpsL3dvcmtmbG93cy9DSS9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vSnVsaWFDb21wdXRpbmcvT3BlbkFQSS5qbC9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBQ0krYnJhbmNoJTNBbWFpbikKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL0p1bGlhQ29tcHV0aW5nL09wZW5BUEkuamwvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPWlaZUZMN0pzMGwpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvSnVsaWFDb21wdXRpbmcvT3BlbkFQSS5qbCkKClRoaXMgaXMgdGhlIEp1bGlhIGxpYnJhcnkgbmVlZGVkIGFsb25nIHdpdGggY29kZSBnZW5lcmF0ZWQgYnkgdGhlIFtPcGVuQVBJIGdlbmVyYXRvcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoLykgdG8gaGVscCBkZWZpbmUsIHByb2R1Y2UgYW5kIGNvbnN1bWUgT3BlbkFQSSBpbnRlcmZhY2VzLgoKWyFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2RvY3MtbGF0ZXN0LWJsdWUuc3ZnKV0oaHR0cHM6Ly9KdWxpYUNvbXB1dGluZy5naXRodWIuaW8vT3BlbkFQSS5qbCkKCiMjIFF1aWNrIEd1aWRlCgotIENyZWF0ZSBhbiBBUEkgc3BlY2lmaWNhdGlvbi4gQ2hlY2sgb3V0IFtPcGVuQVBJLVNwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKSBmb3Igc3BlY2lmaWNhdGlvbiBzeW50YXggYW5kIGV4YW1wbGVzLgotIFVzZSBbaW5zdHJ1Y3Rpb25zXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvZG9jcy9nZW5lcmF0b3JzKSBwcm92aWRlZCBmb3IgdGhlIEp1bGlhIE9wZW5BUEkgY29kZSBnZW5lcmF0b3IgcGx1Z2luIHRvIGdlbmVyYXRlIEp1bGlhIGNvZGUuCi0gQ2xpZW50OgogICAgLSBVc2UgdGhlIGdlbmVyYXRlZCBjbGllbnQgaW4gSnVsaWEgZGlyZWN0bHkgdG8gaW52b2tlIEFQSXMKLSBTZXJ2ZXI6CiAgICAtIFByb3ZpZGUgY29kZSB0byBoYW5kbGUgQVBJIGludm9jYXRpb25zIG9uIHRoZSBzZXJ2ZXIgc2lkZSBieSBpbXBsZW1lbnRpbmcgdGhlIEp1bGlhIG1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBBUEkgc3R1YnMuCiAgICAtIFN0YXJ0IGEgc2VydmVyIHVzaW5nIEhUVFAuamwgYW5kIHJlZ2lzdGVyIHRoZSBnZW5lcmF0ZWQgcmVxdWVzdCBoYW5kbGVycy4KCiMjIEV4YW1wbGVzCgpUaGUgUGV0c3RvcmUgaXMgYSBjb21tb24gZXhhbXBsZSB0aGF0IG1vc3QgT3BlbkFQSSBpbXBsZW1lbnRhdGlvbnMgdXNlIHRvIHRlc3QgYW5kIGRlbW9uc3RyYXRlLiBDbGllbnRzIGFuZCBzZXJ2ZXJzIGdlbmVyYXRlZCBmcm9tIGJvdGggdmVyc2lvbiAyIGFuZCAzIHNwZWNpZmljYXRpb25zIGFyZSBpbmNsdWRlZCBpbiB0aGlzIHJlcG8uCgotIFBldHN0b3JlIHYyOgogICAgLSBDbGllbnQ6IFtkb2NzXSh0ZXN0L2NsaWVudC9wZXRzdG9yZV92Mi9wZXRzdG9yZS9SRUFETUUubWQpLCBbaW1wbGVtZW50YXRpb25dKHRlc3QvY2xpZW50L3BldHN0b3JlX3YyKQogICAgLSBTZXJ2ZXI6IFtkb2NzXSh0ZXN0L3NlcnZlci9wZXRzdG9yZV92Mi9wZXRzdG9yZS9SRUFETUUubWQpLCBbaW1wbGVtZW50YXRpb25dKHRlc3Qvc2VydmVyL3BldHN0b3JlX3YyKQotIFBldHN0b3JlIHYzOgogICAgLSBDbGllbnQ6IFtkb2NzXSh0ZXN0L2NsaWVudC9wZXRzdG9yZV92My9wZXRzdG9yZS9SRUFETUUubWQpLCBbaW1wbGVtZW50YXRpb25dKHRlc3QvY2xpZW50L3BldHN0b3JlX3YzKQogICAgLSBTZXJ2ZXI6IFtkb2NzXSh0ZXN0L3NlcnZlci9wZXRzdG9yZV92My9wZXRzdG9yZS9SRUFETUUubWQpLCBbaW1wbGVtZW50YXRpb25dKHRlc3Qvc2VydmVyL3BldHN0b3JlX3YzKQo= readmeEtag: '"267b6741436f2490b6fe88033bf5824947d7b9d0"' readmeLastModified: Fri, 26 Jul 2024 07:24:14 GMT repositoryId: 535564203 description: OpenAPI helper and code generator for Julia created: '2022-09-12T07:55:03Z' updated: '2026-01-23T12:46:48Z' language: Julia archived: false stars: 56 watchers: 24 forks: 13 owner: JuliaComputing logo: https://avatars.githubusercontent.com/u/10258468?v=4 license: NOASSERTION repoEtag: '"c2ca58afecb35cd129c1dd8dfda62c0eaaad8a33387a61ca771d3e55e13bc715"' repoLastModified: Fri, 23 Jan 2026 12:46:48 GMT foundInMaster: true category: Parsers - source: openapi3 tags repository: https://github.com/mossaabfrifita/spring-boot-4-security-7-jwt v3: true id: 8f25bb636638af5ab1f70138e6f2fa7c repositoryMetadata: base64Readme: >- IyDwn5SQIFNwcmluZyBTZWN1cml0eSBKV1QgQXV0aGVudGljYXRpb24gJiBBdXRob3JpemF0aW9uCgpBIGNvbXByZWhlbnNpdmUgU3ByaW5nIEJvb3QgYXBwbGljYXRpb24gZGVtb25zdHJhdGluZyBKV1QtYmFzZWQgYXV0aGVudGljYXRpb24gYW5kIHJvbGUtYmFzZWQgYXV0aG9yaXphdGlvbiB3aXRoIHJlZnJlc2ggdG9rZW4gc3VwcG9ydC4gVGhpcyBwcm9qZWN0IHNob3djYXNlcyBtb2Rlcm4gc2VjdXJpdHkgcHJhY3RpY2VzIHVzaW5nIFNwcmluZyBTZWN1cml0eSA3IGFuZCBTcHJpbmcgQm9vdCA0LgoKIyMg4pyoIEZlYXR1cmVzCgotIPCflJEgKipKV1QgQXV0aGVudGljYXRpb24qKiAtIFNlY3VyZSB0b2tlbi1iYXNlZCBhdXRoZW50aWNhdGlvbgotIPCflIQgKipSZWZyZXNoIFRva2VuIFN1cHBvcnQqKiAtIExvbmctbGl2ZWQgcmVmcmVzaCB0b2tlbnMgc3RvcmVkIGluIGRhdGFiYXNlCi0g8J+RpSAqKlVzZXIgUmVnaXN0cmF0aW9uICYgTG9naW4qKiAtIENvbXBsZXRlIGF1dGhlbnRpY2F0aW9uIGZsb3cKLSDwn5uh77iPICoqUm9sZS1CYXNlZCBBY2Nlc3MgQ29udHJvbCAoUkJBQykqKiAtIEZpbmUtZ3JhaW5lZCBhdXRob3JpemF0aW9uIHdpdGggcm9sZXMgYW5kIHByaXZpbGVnZXMKLSDwn42qICoqSFRUUC1Pbmx5IENvb2tpZXMqKiAtIFNlY3VyZSB0b2tlbiBzdG9yYWdlIGluIGNvb2tpZXMKLSDwn5OdICoqT3BlbkFQSS9Td2FnZ2VyIERvY3VtZW50YXRpb24qKiAtIEludGVyYWN0aXZlIEFQSSBkb2N1bWVudGF0aW9uCi0g4pyFICoqUGFzc3dvcmQgVmFsaWRhdGlvbioqIC0gU3Ryb25nIHBhc3N3b3JkIHJlcXVpcmVtZW50cwotIPCfmqsgKipDdXN0b20gRXJyb3IgSGFuZGxpbmcqKiAtIEN1c3RvbWl6ZWQgYWNjZXNzIGRlbmllZCBhbmQgdW5hdXRob3JpemVkIGhhbmRsZXJzCi0g8J+UkiAqKlNwcmluZyBTZWN1cml0eSBJbnRlZ3JhdGlvbioqIC0gRnVsbCBTcHJpbmcgU2VjdXJpdHkgY29uZmlndXJhdGlvbgoKIyMg8J+boO+4jyBUZWNoIFN0YWNrCgotICoqSmF2YSAxNyoqCi0gKipTcHJpbmcgQm9vdCA0LjAuMSoqCi0gKipTcHJpbmcgU2VjdXJpdHkgNyoqCi0gKipTcHJpbmcgRGF0YSBKUEEqKgotICoqUG9zdGdyZVNRTCoqIC0gRGF0YWJhc2UKLSAqKkpXVCAoamp3dCAwLjExLjUpKiogLSBKU09OIFdlYiBUb2tlbiBpbXBsZW1lbnRhdGlvbgotICoqTWF2ZW4qKiAtIEJ1aWxkIHRvb2wKLSAqKkxvbWJvayoqIC0gQm9pbGVycGxhdGUgcmVkdWN0aW9uCi0gKipPcGVuQVBJL1NwcmluZ0RvYyoqIC0gQVBJIGRvY3VtZW50YXRpb24KLSAqKkJlYW4gVmFsaWRhdGlvbioqIC0gUmVxdWVzdCB2YWxpZGF0aW9uCgojIyDwn5OLIFByZXJlcXVpc2l0ZXMKCkJlZm9yZSB5b3UgYmVnaW4sIGVuc3VyZSB5b3UgaGF2ZSB0aGUgZm9sbG93aW5nIGluc3RhbGxlZDoKCi0gKipKREsgMTcqKiBvciBoaWdoZXIKLSAqKk1hdmVuIDMuNisqKgotICoqUG9zdGdyZVNRTCAxMisqKgotICoqR2l0KiogKGZvciBjbG9uaW5nIHRoZSByZXBvc2l0b3J5KQoKIyMg8J+agCBHZXR0aW5nIFN0YXJ0ZWQKCiMjIyAxLiBDbG9uZSB0aGUgUmVwb3NpdG9yeQoKYGBgYmFzaApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3lvdXJ1c2VybmFtZS9zZWN1cml0eS5naXQKY2Qgc2VjdXJpdHkKYGBgCgojIyMgMi4gRGF0YWJhc2UgU2V0dXAKCkNyZWF0ZSBhIFBvc3RncmVTUUwgZGF0YWJhc2U6CgpgYGBzcWwKQ1JFQVRFIERBVEFCQVNFIGRiX3NlY3VyaXR5OwpgYGAKCiMjIyAzLiBDb25maWd1cmF0aW9uCgpVcGRhdGUgdGhlIGBhcHBsaWNhdGlvbi55bWxgIGZpbGUgd2l0aCB5b3VyIGRhdGFiYXNlIGNyZWRlbnRpYWxzOgoKYGBgeWFtbApzcHJpbmc6CiAgZGF0YXNvdXJjZToKICAgIHVybDogamRiYzpwb3N0Z3Jlc3FsOi8vbG9jYWxob3N0OjU0MzIvZGJfc2VjdXJpdHkKICAgIHVzZXJuYW1lOiBwb3N0Z3JlcwogICAgcGFzc3dvcmQ6ICR7UE9TVEdSRVNfUEFTU1dPUkR9ICAjIFNldCB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlCmBgYAoKKipJbXBvcnRhbnQ6KiogU2V0IHRoZSBgUE9TVEdSRVNfUEFTU1dPUkRgIGVudmlyb25tZW50IHZhcmlhYmxlIHdpdGggeW91ciBQb3N0Z3JlU1FMIHBhc3N3b3JkOgoKKipXaW5kb3dzIChQb3dlclNoZWxsKToqKgpgYGBwb3dlcnNoZWxsCiRlbnY6UE9TVEdSRVNfUEFTU1dPUkQ9InlvdXJfcGFzc3dvcmQiCmBgYAoKKipXaW5kb3dzIChDTUQpOioqCmBgYGNtZApzZXQgUE9TVEdSRVNfUEFTU1dPUkQ9eW91cl9wYXNzd29yZApgYGAKCioqTGludXgvTWFjOioqCmBgYGJhc2gKZXhwb3J0IFBPU1RHUkVTX1BBU1NXT1JEPXlvdXJfcGFzc3dvcmQKYGBgCgojIyMgNC4gQnVpbGQgdGhlIFByb2plY3QKCmBgYGJhc2gKbXZuIGNsZWFuIGluc3RhbGwKYGBgCgojIyMgNS4gUnVuIHRoZSBBcHBsaWNhdGlvbgoKYGBgYmFzaAptdm4gc3ByaW5nLWJvb3Q6cnVuCmBgYAoKT3IgdXNpbmcgdGhlIE1hdmVuIHdyYXBwZXI6CgpgYGBiYXNoCi4vbXZudyBzcHJpbmctYm9vdDpydW4KYGBgCgpUaGUgYXBwbGljYXRpb24gd2lsbCBzdGFydCBvbiAqKmh0dHA6Ly9sb2NhbGhvc3Q6ODA4NioqCgojIyDwn5OaIEFQSSBEb2N1bWVudGF0aW9uCgpPbmNlIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nLCBhY2Nlc3MgdGhlIFN3YWdnZXIgVUkgZm9yIGludGVyYWN0aXZlIEFQSSBkb2N1bWVudGF0aW9uOgoKYGBgCmh0dHA6Ly9sb2NhbGhvc3Q6ODA4Ni9zd2FnZ2VyLXVpLmh0bWwKYGBgCgojIyDwn5SMIEFQSSBFbmRwb2ludHMKCiMjIyBBdXRoZW50aWNhdGlvbiBFbmRwb2ludHMKCnwgTWV0aG9kIHwgRW5kcG9pbnQgfCBEZXNjcmlwdGlvbiB8IEF1dGggUmVxdWlyZWQgfAp8LS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLXwKfCBgUE9TVGAgfCBgL2FwaS92MS9hdXRoL3JlZ2lzdGVyYCB8IFJlZ2lzdGVyIGEgbmV3IHVzZXIgfCDinYwgfAp8IGBQT1NUYCB8IGAvYXBpL3YxL2F1dGgvYXV0aGVudGljYXRlYCB8IExvZ2luIGFuZCBnZXQgSldUIHRva2VucyB8IOKdjCB8CnwgYFBPU1RgIHwgYC9hcGkvdjEvYXV0aC9yZWZyZXNoLXRva2VuYCB8IFJlZnJlc2ggYWNjZXNzIHRva2VuIHwg4p2MIHwKfCBgUE9TVGAgfCBgL2FwaS92MS9hdXRoL3JlZnJlc2gtdG9rZW4tY29va2llYCB8IFJlZnJlc2ggdG9rZW4gdmlhIGNvb2tpZSB8IOKdjCB8CnwgYFBPU1RgIHwgYC9hcGkvdjEvYXV0aC9sb2dvdXRgIHwgTG9nb3V0IGFuZCBpbnZhbGlkYXRlIHRva2VucyB8IOKdjCB8CnwgYEdFVGAgfCBgL2FwaS92MS9hdXRoL2luZm9gIHwgR2V0IGF1dGhlbnRpY2F0aW9uIGluZm8gfCDinYwgfAoKIyMjIEF1dGhvcml6YXRpb24gRW5kcG9pbnRzCgp8IE1ldGhvZCB8IEVuZHBvaW50IHwgRGVzY3JpcHRpb24gfCBSZXF1aXJlZCBSb2xlIHwgUmVxdWlyZWQgUHJpdmlsZWdlIHwKfC0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBgR0VUYCB8IGAvYXBpL3YxL2FkbWluL3Jlc291cmNlYCB8IEFkbWluIHJlYWQgcmVzb3VyY2UgfCBgQURNSU5gIHwgYFJFQURfUFJJVklMRUdFYCB8CnwgYERFTEVURWAgfCBgL2FwaS92MS9hZG1pbi9yZXNvdXJjZWAgfCBBZG1pbiBkZWxldGUgcmVzb3VyY2UgfCBgQURNSU5gIHwgYERFTEVURV9QUklWSUxFR0VgIHwKfCBgUE9TVGAgfCBgL2FwaS92MS91c2VyL3Jlc291cmNlYCB8IFVzZXIgY3JlYXRlIHJlc291cmNlIHwgYEFETUlOYCBvciBgVVNFUmAgfCBgV1JJVEVfUFJJVklMRUdFYCB8CnwgYFBVVGAgfCBgL2FwaS92MS91c2VyL3Jlc291cmNlYCB8IFVzZXIgdXBkYXRlIHJlc291cmNlIHwgYEFETUlOYCBvciBgVVNFUmAgfCBgVVBEQVRFX1BSSVZJTEVHRWAgfAoKIyMg8J+SoSBVc2FnZSBFeGFtcGxlcwoKIyMjIFJlZ2lzdGVyIGEgTmV3IFVzZXIKCmBgYGJhc2gKY3VybCAtWCBQT1NUIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4Ni9hcGkvdjEvYXV0aC9yZWdpc3RlciBcCiAgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgXAogIC1kICd7CiAgICAiZmlyc3RuYW1lIjogIkpvaG4iLAogICAgImxhc3RuYW1lIjogIkRvZSIsCiAgICAiZW1haWwiOiAiam9obi5kb2VAZXhhbXBsZS5jb20iLAogICAgInBhc3N3b3JkIjogIlNlY3VyZVBhc3MxMjMhIgogIH0nCmBgYAoKIyMjIEF1dGhlbnRpY2F0ZSAoTG9naW4pCgpgYGBiYXNoCmN1cmwgLVggUE9TVCBodHRwOi8vbG9jYWxob3N0OjgwODYvYXBpL3YxL2F1dGgvYXV0aGVudGljYXRlIFwKICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiBcCiAgLWQgJ3sKICAgICJlbWFpbCI6ICJqb2huLmRvZUBleGFtcGxlLmNvbSIsCiAgICAicGFzc3dvcmQiOiAiU2VjdXJlUGFzczEyMyEiCiAgfScKYGBgCgoqKlJlc3BvbnNlOioqCmBgYGpzb24KewogICJhY2Nlc3NUb2tlbiI6ICJleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuLi4iLAogICJyZWZyZXNoVG9rZW4iOiAiZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5Li4uIiwKICAidG9rZW5UeXBlIjogIkJlYXJlciIKfQpgYGAKClRva2VucyBhcmUgYWxzbyBzZXQgYXMgSFRUUC1vbmx5IGNvb2tpZXMgYXV0b21hdGljYWxseS4KCiMjIyBBY2Nlc3MgUHJvdGVjdGVkIFJlc291cmNlCgpgYGBiYXNoCmN1cmwgLVggR0VUIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4Ni9hcGkvdjEvYWRtaW4vcmVzb3VyY2UgXAogIC1IICJBdXRob3JpemF0aW9uOiBCZWFyZXIgWU9VUl9BQ0NFU1NfVE9LRU4iCmBgYAoKT3IgaWYgdXNpbmcgY29va2llcyAoc2V0IGF1dG9tYXRpY2FsbHkgZHVyaW5nIGxvZ2luKToKCmBgYGJhc2gKY3VybCAtWCBHRVQgaHR0cDovL2xvY2FsaG9zdDo4MDg2L2FwaS92MS9hZG1pbi9yZXNvdXJjZSBcCiAgLS1jb29raWUgImp3dC1jb29raWU9WU9VUl9KV1RfVE9LRU4iCmBgYAoKIyMjIFJlZnJlc2ggVG9rZW4KCmBgYGJhc2gKY3VybCAtWCBQT1NUIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4Ni9hcGkvdjEvYXV0aC9yZWZyZXNoLXRva2VuIFwKICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiBcCiAgLWQgJ3sKICAgICJyZWZyZXNoVG9rZW4iOiAiWU9VUl9SRUZSRVNIX1RPS0VOIgogIH0nCmBgYAoKIyMg8J+Pl++4jyBQcm9qZWN0IFN0cnVjdHVyZQoKYGBgCnNyYy8K4pSc4pSA4pSAIG1haW4vCuKUgiAgIOKUnOKUgOKUgCBqYXZhL2ZyL21vc3NhYWIvc2VjdXJpdHkvCuKUgiAgIOKUgiAgIOKUnOKUgOKUgCBjb25maWcvICAgICAgICAgICAgICAjIFNlY3VyaXR5IGNvbmZpZ3VyYXRpb24gY2xhc3NlcwrilIIgICDilIIgICDilIIgICDilJzilIDilIAgU2VjdXJpdHlDb25maWd1cmF0aW9uLmphdmEK4pSCICAg4pSCICAg4pSCICAg4pSc4pSA4pSAIEFwcGxpY2F0aW9uU2VjdXJpdHlDb25maWcuamF2YQrilIIgICDilIIgICDilIIgICDilJzilIDilIAgSnd0QXV0aGVudGljYXRpb25GaWx0ZXIuamF2YQrilIIgICDilIIgICDilIIgICDilJzilIDilIAgQ3VzdG9tQWNjZXNzRGVuaWVkSGFuZGxlci5qYXZhCuKUgiAgIOKUgiAgIOKUgiAgIOKUlOKUgOKUgCBIdHRwNDAxVW5hdXRob3JpemVkRW50cnlQb2ludC5qYXZhCuKUgiAgIOKUgiAgIOKUnOKUgOKUgCBjb250cm9sbGVyLyAgICAgICAgICAjIFJFU1QgY29udHJvbGxlcnMK4pSCICAg4pSCICAg4pSCICAg4pSc4pSA4pSAIEF1dGhlbnRpY2F0aW9uQ29udHJvbGxlci5qYXZhCuKUgiAgIOKUgiAgIOKUgiAgIOKUlOKUgOKUgCBBdXRob3JpemF0aW9uQ29udHJvbGxlci5qYXZhCuKUgiAgIOKUgiAgIOKUnOKUgOKUgCBlbnRpdGllcy8gICAgICAgICAgICAjIEpQQSBlbnRpdGllcwrilIIgICDilIIgICDilIIgICDilJzilIDilIAgVXNlci5qYXZhCuKUgiAgIOKUgiAgIOKUgiAgIOKUlOKUgOKUgCBSZWZyZXNoVG9rZW4uamF2YQrilIIgICDilIIgICDilJzilIDilIAgZW51bXMvICAgICAgICAgICAgICAgIyBFbnVtZXJhdGlvbnMK4pSCICAg4pSCICAg4pSCICAg4pSc4pSA4pSAIFJvbGUuamF2YQrilIIgICDilIIgICDilIIgICDilJzilIDilIAgUHJpdmlsZWdlLmphdmEK4pSCICAg4pSCICAg4pSCICAg4pSU4pSA4pSAIFRva2VuVHlwZS5qYXZhCuKUgiAgIOKUgiAgIOKUnOKUgOKUgCBzZXJ2aWNlLyAgICAgICAgICAgICAjIEJ1c2luZXNzIGxvZ2ljCuKUgiAgIOKUgiAgIOKUgiAgIOKUnOKUgOKUgCBBdXRoZW50aWNhdGlvblNlcnZpY2UuamF2YQrilIIgICDilIIgICDilIIgICDilJzilIDilIAgSnd0U2VydmljZS5qYXZhCuKUgiAgIOKUgiAgIOKUgiAgIOKUnOKUgOKUgCBSZWZyZXNoVG9rZW5TZXJ2aWNlLmphdmEK4pSCICAg4pSCICAg4pSCICAg4pSU4pSA4pSAIGltcGwvICAgICAgICAgICAgIyBTZXJ2aWNlIGltcGxlbWVudGF0aW9ucwrilIIgICDilIIgICDilJzilIDilIAgcmVwb3NpdG9yeS8gICAgICAgICAgIyBEYXRhIGFjY2VzcyBsYXllcgrilIIgICDilIIgICDilIIgICDilJzilIDilIAgVXNlclJlcG9zaXRvcnkuamF2YQrilIIgICDilIIgICDilIIgICDilJTilIDilIAgUmVmcmVzaFRva2VuUmVwb3NpdG9yeS5qYXZhCuKUgiAgIOKUgiAgIOKUnOKUgOKUgCBwYXlsb2FkLyAgICAgICAgICAgICAjIERUT3MK4pSCICAg4pSCICAg4pSCICAg4pSc4pSA4pSAIHJlcXVlc3QvCuKUgiAgIOKUgiAgIOKUgiAgIOKUlOKUgOKUgCByZXNwb25zZS8K4pSCICAg4pSCICAg4pSc4pSA4pSAIHZhbGlkYXRpb24vICAgICAgICAgICMgQ3VzdG9tIHZhbGlkYXRvcnMK4pSCICAg4pSCICAg4pSc4pSA4pSAIGV4Y2VwdGlvbi8gICAgICAgICAgICMgQ3VzdG9tIGV4Y2VwdGlvbnMK4pSCICAg4pSCICAg4pSU4pSA4pSAIGhhbmRsZXJzLyAgICAgICAgICAgICMgRXhjZXB0aW9uIGhhbmRsZXJzCuKUgiAgIOKUlOKUgOKUgCByZXNvdXJjZXMvCuKUgiAgICAgICDilJTilIDilIAgYXBwbGljYXRpb24ueW1sICAgICAgIyBBcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uCuKUlOKUgOKUgCB0ZXN0LyAgICAgICAgICAgICAgICAgICAgICAgICMgVGVzdCBmaWxlcwpgYGAKCiMjIPCflJIgU2VjdXJpdHkgRmVhdHVyZXMKCiMjIyBSb2xlcyBhbmQgUHJpdmlsZWdlcwoKVGhlIGFwcGxpY2F0aW9uIGltcGxlbWVudHMgYSByb2xlLWJhc2VkIGFjY2VzcyBjb250cm9sIHN5c3RlbToKCioqUm9sZXM6KioKLSBgQURNSU5gIC0gRnVsbCBhY2Nlc3Mgd2l0aCBhbGwgcHJpdmlsZWdlcwotIGBVU0VSYCAtIExpbWl0ZWQgYWNjZXNzIHdpdGggcmVhZCBhbmQgd3JpdGUgcHJpdmlsZWdlcwoKKipQcml2aWxlZ2VzOioqCi0gYFJFQURfUFJJVklMRUdFYCAtIFJlYWQgYWNjZXNzCi0gYFdSSVRFX1BSSVZJTEVHRWAgLSBDcmVhdGUgYWNjZXNzCi0gYFVQREFURV9QUklWSUxFR0VgIC0gVXBkYXRlIGFjY2VzcwotIGBERUxFVEVfUFJJVklMRUdFYCAtIERlbGV0ZSBhY2Nlc3MKCiMjIyBUb2tlbiBDb25maWd1cmF0aW9uCgotICoqQWNjZXNzIFRva2VuIEV4cGlyYXRpb246KiogMTUgbWludXRlcyAoOTAwLDAwMCBtcykKLSAqKlJlZnJlc2ggVG9rZW4gRXhwaXJhdGlvbjoqKiAxNSBkYXlzICgxLDI5NiwwMDAsMDAwIG1zKQotICoqVG9rZW4gU3RvcmFnZToqKiBIVFRQLW9ubHkgY29va2llcyBmb3IgZW5oYW5jZWQgc2VjdXJpdHkKCiMjIyBQYXNzd29yZCBSZXF1aXJlbWVudHMKClRoZSBhcHBsaWNhdGlvbiBlbmZvcmNlcyBzdHJvbmcgcGFzc3dvcmQgdmFsaWRhdGlvbi4gRW5zdXJlIHlvdXIgcGFzc3dvcmQgbWVldHMgdGhlIHJlcXVpcmVtZW50cyBkZWZpbmVkIGluIHRoZSBgU3Ryb25nUGFzc3dvcmRgIHZhbGlkYXRvci4KCiMjIOKame+4jyBDb25maWd1cmF0aW9uCgojIyMgSldUIENvbmZpZ3VyYXRpb24KCkNvbmZpZ3VyZSBKV1Qgc2V0dGluZ3MgaW4gYGFwcGxpY2F0aW9uLnltbGA6CgpgYGB5YW1sCmFwcGxpY2F0aW9uOgogIHNlY3VyaXR5OgogICAgand0OgogICAgICBzZWNyZXQta2V5OiBZT1VSX1NFQ1JFVF9LRVkgICMgQ2hhbmdlIHRoaXMgaW4gcHJvZHVjdGlvbiEKICAgICAgZXhwaXJhdGlvbjogOTAwMDAwICAjIDE1IG1pbnV0ZXMKICAgICAgY29va2llLW5hbWU6IGp3dC1jb29raWUKICAgICAgcmVmcmVzaC10b2tlbjoKICAgICAgICBleHBpcmF0aW9uOiAxMjk2MDAwMDAwICAjIDE1IGRheXMKICAgICAgICBjb29raWUtbmFtZTogcmVmcmVzaC1qd3QtY29va2llCmBgYAoKKirimqDvuI8gU2VjdXJpdHkgTm90ZToqKiBBbHdheXMgY2hhbmdlIHRoZSBgc2VjcmV0LWtleWAgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMhCgojIyDwn6eqIFRlc3RpbmcKClJ1biB0aGUgdGVzdCBzdWl0ZToKCmBgYGJhc2gKbXZuIHRlc3QKYGBgCgojIyDwn5OdIExpY2Vuc2UKClRoaXMgcHJvamVjdCBpcyBvcGVuIHNvdXJjZSBhbmQgYXZhaWxhYmxlIHVuZGVyIHRoZSBbTUlUIExpY2Vuc2VdKExJQ0VOU0UpLgoKIyMg8J+knSBDb250cmlidXRpbmcKCkNvbnRyaWJ1dGlvbnMsIGlzc3VlcywgYW5kIGZlYXR1cmUgcmVxdWVzdHMgYXJlIHdlbGNvbWUhIEZlZWwgZnJlZSB0byBjaGVjayB0aGUgW2lzc3VlcyBwYWdlXShodHRwczovL2dpdGh1Yi5jb20veW91cnVzZXJuYW1lL3NlY3VyaXR5L2lzc3VlcykuCgoxLiBGb3JrIHRoZSByZXBvc2l0b3J5CjIuIENyZWF0ZSB5b3VyIGZlYXR1cmUgYnJhbmNoIChgZ2l0IGNoZWNrb3V0IC1iIGZlYXR1cmUvQW1hemluZ0ZlYXR1cmVgKQozLiBDb21taXQgeW91ciBjaGFuZ2VzIChgZ2l0IGNvbW1pdCAtbSAnQWRkIHNvbWUgQW1hemluZ0ZlYXR1cmUnYCkKNC4gUHVzaCB0byB0aGUgYnJhbmNoIChgZ2l0IHB1c2ggb3JpZ2luIGZlYXR1cmUvQW1hemluZ0ZlYXR1cmVgKQo1LiBPcGVuIGEgUHVsbCBSZXF1ZXN0CgoKLS0tCgrirZAgSWYgeW91IGZpbmQgdGhpcyBwcm9qZWN0IGhlbHBmdWwsIHBsZWFzZSBjb25zaWRlciBnaXZpbmcgaXQgYSBzdGFyIQo= readmeEtag: '"791b78a6131227df851b67b9fb290bd992741fa5"' readmeLastModified: Sat, 24 Jan 2026 20:13:38 GMT repositoryId: 659193077 description: >- Spring Boot 4 & Spring Security 7 : Token Based Authentication example with JWT, Authorization, Spring Data & PostgreSQL created: '2023-06-27T10:15:47Z' updated: '2026-01-31T06:29:29Z' language: Java archived: false stars: 65 watchers: 2 forks: 20 owner: MossaabFrifita logo: https://avatars.githubusercontent.com/u/34568592?v=4 repoEtag: '"84691f59f5a22b6222b62045282fcbc0351b04d6ee23a0dc60b0856b199bcb02"' repoLastModified: Sat, 31 Jan 2026 06:29:29 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/mossaabfrifita/spring-boot-3-security-6-jwt - source: - openapi3 tags - openapi31 tags repository: https://github.com/swaggerexpert/swagger-editor-validate v3: true v3_1: true id: cd216d2979394961a0ed7aaffafe46a4 repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIEVkaXRvciBWYWxpZGF0ZSBHaXRodWIgQWN0aW9uCgpUaGlzIEdpdEh1YiBBY3Rpb24gdmFsaWRhdGVzIE9wZW5BUEkgKE9BUykgZGVmaW5pdGlvbiBmaWxlIHVzaW5nIFtTd2FnZ2VyIEVkaXRvcl0oaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pby8pLgoKIVt0ZXN0XShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xOTMyODYvMTEwMjQ2MTQ4LWI3YWVhNTgwLTdmNjYtMTFlYi05YmQ3LTk0MGVjZTFmYzZiMC5wbmcpCgpJdCdzIGhhbmR5IGZvciB1c2UtY2FzZXMgd2hlbiBPQVMgZGVmaW5pdGlvbiBpcyBtYWludGFpbmVkIG1hbnVhbGx5IGFuZCBpcyBjaGVja2VkIHdpdGhpbiB0aGUgZ2l0LgpJZiBtb2RpZmljYXRpb25zIGFyZSBtYWRlIHRvIHRoZSBPQVMgZGVmaW5pdGlvbiB5b3Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gZXJyb3JzCmludHJvZHVjZWQgYnkgbW9kaWZpY2F0aW9ucy4gRXJyb3JzIHRoYXQgd291bGQgYXBwZWFyIGluIFN3YWdnZXIgRWRpdG9yIHdoZW4gdGhlIE9BUyBkZWZpbml0aW9uCndvdWxkIGJlIHBhc3RlZCBpbnNpZGUgaXQuCgohW2ltYWdlXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xOTMyODYvMTEwMjQ0NjE4LWRjZWJlNTgwLTdmNWYtMTFlYi04ZGQ4LWNiMzFmNDk5NzYxZS5wbmcpCgpJZiB5b3UncmUgaW50ZXJlc3RlZCBhYm91dCB0ZWNobmljYWwgZGVzaWduIGFuZCBldm9sdXRpb24gb2YgdGhpcyBHaXRIdWIgQWN0aW9uIHBsZWFzZQpyZWFkIG91ciBbcmVsZWFzZSBhcnRpY2xlXShodHRwczovL3ZsYWRpbWlyZ29yZWouY29tL2Jsb2cvaG93LXRvLXZhbGlkYXRlLW9wZW5hcGktZGVmaW5pdGlvbnMtaW4tc3dhZ2dlci1lZGl0b3ItdXNpbmctZ2l0aHViLWFjdGlvbnMvKS4KCiMjIElucHV0cwoKIyMjIGBzd2FnZ2VyLWVkaXRvci11cmxgCgoqKk9wdGlvbmFsKiogRGVmaW5lcyBVUkwgb2YgW3N3YWdnZXItZWRpdG9yXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zd2FnZ2VyLWVkaXRvcikgd2hlcmUgZGVmaW5pdGlvbgpmaWxlIGlzIGdvaW5nIHRvIGJlIHZhbGlkYXRlZC4gRGVmYXVsdCBgaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pby9gLgoKIyMjIGBkZWZpbml0aW9uLWZpbGVgCgoqKlJlcXVpcmVkKiogRGVmaW5lcyBwYXRoIG9mIFtPQVNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKSBkZWZpbml0aW9uIGZpbGUgdGhhdCBleGlzdHMKYXMgYSBwaHlzaWNhbCBmaWxlIGluIHlvdXIgcmVwb3NpdG9yeS4KCiMjIyBgaWdub3JlLWVycm9yYAoKKipPcHRpb25hbCoqIERlZmluZXMgcGF0aCB0byBKYXZhU2NyaXB0IGZpbGUgY29udGFpbmluZyBwcmVkaWNhdGUgZm9yIGRldGVybWluaW5nIGlmIHRoZSBlcnJvciBzaG91bGQgYmUgaWdub3JlZCBvciBub3QuCgoKIyMjIGBkZWZhdWx0LXRpbWVvdXRgCgoqKk9wdGlvbmFsKiogRGVmaW5lcyBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGEgc2NyaXB0IHdhaXRzIGZvciBjZXJ0YWluIGFjdGlvbnMgb3IgZXZlbnRzIHRvIG9jY3VyLgoKCiMjIEV4YW1wbGUgdXNhZ2UKClRoZXJlIGFyZSB0d28gbWFqb3IgdXNlLWNhc2VzIG9mIGhvdyB0byB1c2UgdGhpcyBHaXRIdWIgQWN0aW9uLgoKIyMjIFB1YmxpYyB1c2UtY2FzZQoKSWYgeW91IGhhdmUgYWNjZXNzIHRvIHRoZSBpbnRlcm5ldCBhbmQgZG9uJ3QgbWluZCB0aGF0IHRoaXMgYWN0aW9uIHNlbmRzIHlvdXIgT0FTIGRlZmluaXRpb24KdG8gaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pby8gZm9yIHZhbGlkYXRpb24uCgpgYGB5YW1sCm9uOiBbcHVzaF0KCmpvYnM6CiAgdGVzdF9zd2FnZ2VyX2VkaXRvcl92YWxpZGF0b3JfcmVtb3RlOgogICAgcnVucy1vbjogdWJ1bnR1LWxhdGVzdAogICAgbmFtZTogU3dhZ2dlciBFZGl0b3IgVmFsaWRhdG9yIFJlbW90ZQoKICAgIHN0ZXBzOgogICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjQKICAgICAgLSBuYW1lOiBWYWxpZGF0ZSBPcGVuQVBJIGRlZmluaXRpb24KICAgICAgICB1c2VzOiBzd2FnZ2VyZXhwZXJ0L3N3YWdnZXItZWRpdG9yLXZhbGlkYXRlQHYxCiAgICAgICAgd2l0aDoKICAgICAgICAgIGRlZmluaXRpb24tZmlsZTogZXhhbXBsZXMvb3BlbmFwaS0yLTAueWFtbApgYGAKCiMjIyBQcml2YXRlIHVzZS1jYXNlCgpJZiB5b3Ugd2FudCB0byBtYWludGFpbiBjb21wbGV0ZSBwcml2YWN5IGFuZCB5b3VyIE9BUyBkZWZpbml0aW9uIG1heSBjb250YWluCnNlbnNpdGl2ZSBpbmZvcm1hdGlvbiB1c2UgdGhlIGZvbGxvd2luZyB3b3JrZmxvdy4gVGhlIHdvcmtmbG93IHVzZXMgc3dhZ2dlci1lZGl0b3IKZG9ja2VyIGltYWdlIHRoYXQgcnVucyBhcyBzZXJ2aWNlIG9mIHRoZSB3b3JrZmxvdy4KCmBgYHlhbWwKb246IFtwdXNoXQoKam9iczoKICB0ZXN0X3N3YWdnZXJfZWRpdG9yX3ZhbGlkYXRvcl9zZXJ2aWNlOgogICAgcnVucy1vbjogdWJ1bnR1LWxhdGVzdAogICAgbmFtZTogU3dhZ2dlciBFZGl0b3IgVmFsaWRhdG9yIFNlcnZpY2UKCiAgICAjIFNlcnZpY2UgY29udGFpbmVycyB0byBydW4gd2l0aCBgcnVubmVyLWpvYmAKICAgIHNlcnZpY2VzOgogICAgICAjIExhYmVsIHVzZWQgdG8gYWNjZXNzIHRoZSBzZXJ2aWNlIGNvbnRhaW5lcgogICAgICBzd2FnZ2VyLWVkaXRvcjoKICAgICAgICAjIERvY2tlciBIdWIgaW1hZ2UKICAgICAgICBpbWFnZTogc3dhZ2dlcmFwaS9zd2FnZ2VyLWVkaXRvcgogICAgICAgIHBvcnRzOgogICAgICAgICAgIyBNYXBzIHBvcnQgODA4MCBvbiBzZXJ2aWNlIGNvbnRhaW5lciB0byB0aGUgaG9zdCA4MAogICAgICAgICAgLSA4MDo4MDgwCgogICAgc3RlcHM6CiAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2NAogICAgICAtIG5hbWU6IFZhbGlkYXRlIE9wZW5BUEkgZGVmaW5pdGlvbgogICAgICAgIHVzZXM6IHN3YWdnZXJleHBlcnQvc3dhZ2dlci1lZGl0b3ItdmFsaWRhdGVAdjEKICAgICAgICB3aXRoOgogICAgICAgICAgc3dhZ2dlci1lZGl0b3ItdXJsOiBodHRwOi8vbG9jYWxob3N0LwogICAgICAgICAgZGVmaW5pdGlvbi1maWxlOiBleGFtcGxlcy9vcGVuYXBpLTItMC55YW1sCiAgICAgICAgICBkZWZhdWx0LXRpbWVvdXQ6IDIwMDAwCmBgYAo= readmeEtag: '"25280be4d237a47125cf5817a64d7df75fc251b2"' readmeLastModified: Thu, 19 Jun 2025 05:06:53 GMT repositoryId: 344901461 description: >- This GitHub Actions validates OpenAPI (OAS) definition file using Swagger Editor. created: '2021-03-05T18:37:29Z' updated: '2025-12-01T04:29:37Z' language: JavaScript archived: false stars: 55 watchers: 2 forks: 15 owner: swaggerexpert logo: https://avatars.githubusercontent.com/u/172408630?v=4 license: BSD-3-Clause repoEtag: '"b4e26e0a89201113a0d45e206caa5ad96885c8414df93e187c372090a9299cc9"' repoLastModified: Mon, 01 Dec 2025 04:29:37 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/jdkandersson/openalchemy v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQWxjaGVteQoKIVtDb2RlIFF1YWxpdHkgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vamRrYW5kZXJzc29uL09wZW5BbGNoZW15L3dvcmtmbG93cy9Db2RlJTIwcXVhbGl0eSUyMGNoZWNrcy9iYWRnZS5zdmcpCiFbQXp1cmUgRGV2T3BzIGNvdmVyYWdlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2F6dXJlLWRldm9wcy9jb3ZlcmFnZS9hbmRlcnNzb25wdWJsaWMvYW5kZXJzc29ucHVibGljLzEpClshW0RvY3VtZW50YXRpb24gU3RhdHVzXShodHRwczovL3JlYWR0aGVkb2NzLm9yZy9wcm9qZWN0cy9vcGVuYXBpLXNxbGFsY2hlbXkvYmFkZ2UvP3ZlcnNpb249bGF0ZXN0KV0oaHR0cHM6Ly9vcGVuYXBpLXNxbGFsY2hlbXkucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0Lz9iYWRnZT1sYXRlc3QpCiFbQ29kZSBDbGltYXRlIG1haW50YWluYWJpbGl0eV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jb2RlY2xpbWF0ZS9tYWludGFpbmFiaWxpdHkvamRrYW5kZXJzc29uL09wZW5BbGNoZW15KQohW0NvZGUgQ2xpbWF0ZSB0ZWNobmljYWwgZGVidF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jb2RlY2xpbWF0ZS90ZWNoLWRlYnQvamRrYW5kZXJzc29uL09wZW5BbGNoZW15KQohW0xHVE0gR3JhZGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbGd0bS9ncmFkZS9weXRob24vZ2l0aHViL2pka2FuZGVyc3Nvbi9PcGVuQWxjaGVteSkKClRyYW5zbGF0ZXMgYW4gT3BlbkFQSSBzY2hlbWEgdG8gU1FMQWxjaGVteSBtb2RlbHMuCgpTdXBwb3J0cyBPcGVuQVBJIDMuMCBhbmQgMy4xLgoKIyMgSW5zdGFsbGF0aW9uCgpgYGBiYXNoCnB5dGhvbiAtbSBwaXAgaW5zdGFsbCBPcGVuQWxjaGVteQojIFRvIGJlIGFibGUgdG8gbG9hZCBZQU1MIGZpbGUKcHl0aG9uIC1tIHBpcCBpbnN0YWxsIE9wZW5BbGNoZW15W3lhbWxdCmBgYAoKIyMgRXhhbXBsZQoKRm9yIGV4YW1wbGUsIGdpdmVuIHRoZSBmb2xsb3dpbmcgT3BlbkFQSSBzcGVjaWZpY2F0aW9uOgoKYGBgeWFtbAojIC4vZXhhbXBsZXMvc2ltcGxlL2V4YW1wbGUtc3BlYy55bWwKb3BlbmFwaTogIjMuMC4wIgoKaW5mbzoKICB0aXRsZTogVGVzdCBTY2hlbWEKICBkZXNjcmlwdGlvbjogQVBJIHRvIGlsbHVzdHJhdGUgT3BlbkFsY2hlbXkgTVZQLgogIHZlcnNpb246ICIwLjEiCgpwYXRoczoKICAvZW1wbG95ZWU6CiAgICBnZXQ6CiAgICAgIHN1bW1hcnk6IFVzZWQgdG8gcmV0cmlldmUgYWxsIGVtcGxveWVlcy4KICAgICAgcmVzcG9uc2VzOgogICAgICAgIDIwMDoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBSZXR1cm4gYWxsIGVtcGxveWVlcyBmcm9tIHRoZSBkYXRhYmFzZS4KICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9FbXBsb3llZSIKCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIEVtcGxveWVlOgogICAgICBkZXNjcmlwdGlvbjogUGVyc29uIHRoYXQgd29ya3MgZm9yIGEgY29tcGFueS4KICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHgtdGFibGVuYW1lOiBlbXBsb3llZQogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGlkOgogICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgZGVzY3JpcHRpb246IFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZW1wbG95ZWUuCiAgICAgICAgICBleGFtcGxlOiAwCiAgICAgICAgICB4LXByaW1hcnkta2V5OiB0cnVlCiAgICAgICAgICB4LWF1dG9pbmNyZW1lbnQ6IHRydWUKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBkZXNjcmlwdGlvbjogVGhlIG5hbWUgb2YgdGhlIGVtcGxveWVlLgogICAgICAgICAgZXhhbXBsZTogRGF2aWQgQW5kZXJzc29uCiAgICAgICAgICB4LWluZGV4OiB0cnVlCiAgICAgICAgZGl2aXNpb246CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGRlc2NyaXB0aW9uOiBUaGUgcGFydCBvZiB0aGUgY29tcGFueSB0aGUgZW1wbG95ZWUgd29ya3MgaW4uCiAgICAgICAgICBleGFtcGxlOiBFbmdpbmVlcmluZwogICAgICAgICAgeC1pbmRleDogdHJ1ZQogICAgICAgIHNhbGFyeToKICAgICAgICAgIHR5cGU6IG51bWJlcgogICAgICAgICAgZGVzY3JpcHRpb246IFRoZSBhbW91bnQgb2YgbW9uZXkgdGhlIGVtcGxveWVlIGlzIHBhaWQuCiAgICAgICAgICBleGFtcGxlOiAxMDAwMDAwLjAwCiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gaWQKICAgICAgICAtIG5hbWUKICAgICAgICAtIGRpdmlzaW9uCmBgYAoKVGhlIFNRTEFMY2hlbXkgbW9kZWxzIGZpbGUgdGhlbiBiZWNvbWVzOgoKYGBgcHl0aG9uCiMgbW9kZWxzLnB5CmZyb20gb3Blbl9hbGNoZW15IGltcG9ydCBpbml0X3lhbWwKCmluaXRfeWFtbCgiLi9leGFtcGxlcy9zaW1wbGUvZXhhbXBsZS1zcGVjLnltbCIpCmBgYAoKVGhlIF9CYXNlXyBhbmQgX0VtcGxveWVlXyBvYmplY3RzIGNhbiBiZSBhY2Nlc3NlZDoKCmBgYHB5dGhvbgpmcm9tIG9wZW5fYWxjaGVteS5tb2RlbHMgaW1wb3J0IEJhc2UKZnJvbSBvcGVuX2FsY2hlbXkubW9kZWxzIGltcG9ydCBFbXBsb3llZQpgYGAKCldpdGggdGhlIF9tb2RlbHNfZmlsZW5hbWVfIHBhcmFtZXRlciBhIGZpbGUgaXMgYXV0byBnZW5lcmF0ZWQgd2l0aCB0eXBlIGhpbnRzCmZvciB0aGUgU1FMQWxjaGVteSBtb2RlbHMgYXQgdGhlIHNwZWNpZmllZCBsb2NhdGlvbiwgZm9yIGV4YW1wbGU6Clt0eXBlIGhpbnRlZCBtb2RlbHMgZXhhbXBsZV0oZXhhbXBsZXMvc2ltcGxlL21vZGVsc19hdXRvLnB5KS4gVGhpcyBhZGRzIHN1cHBvcnQKZm9yIElERSBhdXRvIGNvbXBsZXRlLCBmb3IgZXhhbXBsZSBmb3IgdGhlIG1vZGVsIGluaXRpYWxpemF0aW9uOgoKIVthdXRvY29tcGxldGUgaW5pdF0oZXhhbXBsZXMvc2ltcGxlL21vZGVsc19hdXRvY29tcGxldGVfaW5pdC5wbmcpCgphbmQgZm9yIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgYXZhaWxhYmxlIG9uIGFuIGluc3RhbmNlOgoKIVthdXRvY29tcGxldGUgaW5zdGFuY2VdKGV4YW1wbGVzL3NpbXBsZS9tb2RlbHNfYXV0b2NvbXBsZXRlX2luc3RhbmNlLnBuZykKCkFuIGV4dGVuc2l2ZSBzZXQgb2YgZXhhbXBsZXMgd2l0aCBhIHJhbmdlIG9mIGZlYXR1cmVzIGlzIGhlcmU6CgpbZXhhbXBsZXMgZm9yIG1haW4gZmVhdHVyZXNdKGV4YW1wbGVzKQoKQW4gZXhhbXBsZSBBUEkgaGFzIGJlZW4gZGVmaW5lZCB1c2luZyBjb25uZXhpb24gYW5kIEZsYXNrIGhlcmU6CgpbZXhhbXBsZSBjb25uZXhpb24gYXBwXShleGFtcGxlcy9hcHApCgojIyBEb2N1bWVudGF0aW9uCgpbUmVhZCB0aGUgRG9jc10oaHR0cHM6Ly9vcGVuYXBpLXNxbGFsY2hlbXkucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0LykKCiMjIEJ1eSBtZSBhIGNvZmZlZQoKWyFbQnV5IE1lIEEgQ29mZmVlXShodHRwczovL2Nkbi5idXltZWFjb2ZmZWUuY29tL2J1dHRvbnMvdjIvZGVmYXVsdC15ZWxsb3cucG5nKV0oaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9qZGthbmRlcnNzb24pCgojIyBGZWF0dXJlcwoKLSBpbml0aWFsaXppbmcgZnJvbSBKU09OLAotIGluaXRpYWxpemluZyBmcm9tIFlBTUwsCi0gYnVpbGQgYSBwYWNrYWdlIHdpdGggdGhlIG1vZGVscyBmb3IgZGlzdHJpYnV0aW9uLCBwYWNrYWdlZCBhcyBzZGlzdCBvciB3aGVlbCwKLSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgbW9kZWxzIGZpbGUsCi0gYGludGVnZXJgICgzMiBhbmQgNjQgYml0KSwKLSBgbnVtYmVyYCAoZmxvYXQgb25seSksCi0gYGJvb2xlYW5gLAotIGBzdHJpbmdgLAotIGBwYXNzd29yZGAsCi0gYGJ5dGVgLAotIGBiaW5hcnlgLAotIGBkYXRlYCwKLSBgZGF0ZS10aW1lYCwKLSBnZW5lcmljIEpTT04gZGF0YSwKLSBgJHJlZmAgcmVmZXJlbmNlcyBmb3IgY29sdW1ucyBhbmQgbW9kZWxzLAotIHJlbW90ZSBgJHJlZmAgdG8gb3RoZXIgZmlsZXMgb24gdGhlIHNhbWUgZmlsZSBzeXN0ZW0KICAoX25vdCBzdXBwb3J0ZWQgb24gV2luZG93c18pLAotIHJlbW90ZSBgJHJlZmAgdG8gb3RoZXIgZmlsZXMgYXQgYSBVUkwsCi0gcHJpbWFyeSBrZXlzLAotIGF1dG8gaW5jcmVtZW50aW5nLAotIGluZGV4ZXMsCi0gY29tcG9zaXRlIGluZGV4ZXMsCi0gdW5pcXVlIGNvbnN0cmFpbnRzLAotIGNvbXBvc2l0ZSB1bmlxdWUgY29uc3RyYWludHMsCi0gY29sdW1uIG51bGxhYmlsaXR5LAotIGZvcmVpZ24ga2V5cywKLSBkZWZhdWx0IHZhbHVlcyBmb3IgY29sdW1ucyAoYm90aCBhcHBsaWNhdGlvbiBhbmQgZGF0YWJhc2Ugc2lkZSksCi0gbWFueSB0byBvbmUgcmVsYXRpb25zaGlwcywKLSBvbmUgdG8gb25lIHJlbGF0aW9uc2hpcHMsCi0gb25lIHRvIG1hbnkgcmVsYXRpb25zaGlwcywKLSBtYW55IHRvIG1hbnkgcmVsYXRpb25zaGlwcywKLSBtYW55IHRvIG1hbnkgcmVsYXRpb25zaGlwcyB3aXRoIGN1c3RvbSBhc3NvY2lhdGlvbiB0YWJsZXMsCi0gY3VzdG9tIGZvcmVpZ24ga2V5cyBmb3IgcmVsYXRpb25zaGlwcywKLSBiYWNrIHJlZmVyZW5jZXMgZm9yIHJlbGF0aW9uc2hpcHMsCi0gYGFsbE9mYCBpbmhlcml0YW5jZSBmb3IgY29sdW1ucyBhbmQgbW9kZWxzLAotIGpvaW5lZCBhbmQgc2luZ2xlIHRhYmxlIGluaGVyaXRhbmNlLAotIGBmcm9tX3N0cmAgbW9kZWwgbWV0aG9kcyB0byBjb25zdHJ1Y3QgZnJvbSBKU09OIHN0cmluZywKLSBgZnJvbV9kaWN0YCBtb2RlbCBtZXRob2RzIHRvIGNvbnN0cnVjdCBmcm9tIGRpY3Rpb25hcmllcywKLSBgdG9fc3RyYCBtb2RlbCBtZXRob2RzIHRvIGNvbnZlcnQgaW5zdGFuY2VzIHRvIEpTT04gc3RyaW5nLAotIGBfX3N0cl9fYCBtb2RlbCBtZXRob2RzIHRvIHN1cHBvcnQgdGhlIHB5dGhvbiBgc3RyYCBmdW5jdGlvbiwKLSBgX19yZXByX19gIG1vZGVsIG1ldGhvZHMgdG8gc3VwcG9ydCB0aGUgcHl0aG9uIGByZXByYCBmdW5jdGlvbiwKLSBgdG9fZGljdGAgbW9kZWwgbWV0aG9kcyB0byBjb252ZXJ0IGluc3RhbmNlcyB0byBkaWN0aW9uYXJpZXMsCi0gYHJlYWRPbmx5YCBhbmQgYHdyaXRlT25seWAgZm9yIGluZmx1ZW5jZSB0aGUgY29udmVyc2lvbiB0byBhbmQgZnJvbQogIGRpY3Rpb25hcmllcywKLSBleHBvc2luZyBjcmVhdGVkIG1vZGVscyB1bmRlciBgb3Blbl9hbGNoZW15Lm1vZGVsc2AgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yCiAgYG1vZGVscy5weWAgZmlsZXMsCi0gYWJpbGl0eSB0byBtaXggaW4gYXJiaXRyYXJ5IGNsYXNzZXMgaW50byBhIG1vZGVsLAotIGNhbiB1c2UgdGhlIHNob3J0IGB4LWAgcHJlZml4IG9yIGEgbmFtZXNwYWNlZCBgeC1vcGVuLWFsY2hlbXktYCBwcmVmaXggZm9yCiAgZXh0ZW5zaW9uIHByb3BlcnRpZXMgYW5kCi0gZ3JvdXBpbmcgbW9kZWxzIGludG8gc2NoZW1hcy4KCiMjIENvbnRyaWJ1dGluZwoKRm9yayBhbmQgY2hlY2tvdXQgdGhlIHJlcG9zaXRvcnkuIFRvIGluc3RhbGw6CgpgYGBiYXNoCnBvZXRyeSBpbnN0YWxsCmBgYAoKVG8gcnVuIHRlc3RzOgoKYGBgYmFzaApwb2V0cnkgcnVuIHB5dGVzdApgYGAKCk1ha2UgeW91ciBjaGFuZ2VzIGFuZCByYWlzZSBhIHB1bGwgcmVxdWVzdC4KCiMjIENvbXBpbGluZyBEb2NzCgpgYGBiYXNoCnBvZXRyeSBzaGVsbApjZCBkb2NzCm1ha2UgaHRtbApgYGAKClRoaXMgY3JlYXRlcyB0aGUgYGluZGV4Lmh0bWxgIGZpbGUgaW4gYGRvY3MvYnVpbGQvaHRtbC9pbmRleC5odG1sYC4KCiMjIFJlbGVhc2UgQ29tbWFuZHMKCmBgYGJhc2gKcm0gLXIgZGlzdC8qCnBvZXRyeSBidWlsZApwb2V0cnkgcHVibGlzaApgYGAK readmeEtag: '"df3d513e4cc2ca3a4eced9cd6fda5b84ebf03d02"' readmeLastModified: Wed, 05 Oct 2022 01:05:41 GMT repositoryId: 201582900 description: Define SQLAlchemy models using the OpenAPI specification. created: '2019-08-10T05:09:36Z' updated: '2026-01-05T00:30:16Z' language: Python archived: false stars: 55 watchers: 1 forks: 13 owner: jdkandersson logo: https://avatars.githubusercontent.com/u/51036209?v=4 license: Apache-2.0 repoEtag: '"1d18d4b7e41f1f56f872d48eec5e48737cfcb876dc725387ac41df50740ca2d1"' repoLastModified: Mon, 05 Jan 2026 00:30:16 GMT foundInMaster: true category: Parsers id: 59cf3e6ba29a432331242eb475acac2f - source: openapi3 tags repository: https://github.com/piomin/sample-quarkus-applications v3: true repositoryMetadata: base64Readme: >- IyBHdWlkZSB0byBRdWFya3VzIERlbW8gUHJvamVjdCBbIVtUd2l0dGVyXShodHRwczovL2ltZy5zaGllbGRzLmlvL3R3aXR0ZXIvZm9sbG93L3Bpb3RyX21pbmtvd3NraS5zdmc/c3R5bGU9c29jaWFsJmxvZ289dHdpdHRlciZsYWJlbD1Gb2xsb3clMjBNZSldKGh0dHBzOi8vdHdpdHRlci5jb20vcGlvdHJfbWlua293c2tpKQoKWyFbQ2lyY2xlQ0ldKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL3Bpb21pbi9zYW1wbGUtcXVhcmt1cy1hcHBsaWNhdGlvbnMuc3ZnP3N0eWxlPXN2ZyldKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL3Bpb21pbi9zYW1wbGUtcXVhcmt1cy1hcHBsaWNhdGlvbnMpCgpbIVtTb25hckNsb3VkXShodHRwczovL3NvbmFyY2xvdWQuaW8vaW1hZ2VzL3Byb2plY3RfYmFkZ2VzL3NvbmFyY2xvdWQtYmxhY2suc3ZnKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1waW9taW5fc2FtcGxlLXF1YXJrdXMtYXBwbGljYXRpb25zKQpbIVtCdWdzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1waW9taW5fc2FtcGxlLXF1YXJrdXMtYXBwbGljYXRpb25zJm1ldHJpYz1idWdzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1waW9taW5fc2FtcGxlLXF1YXJrdXMtYXBwbGljYXRpb25zKQpbIVtDb3ZlcmFnZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9cGlvbWluX3NhbXBsZS1xdWFya3VzLWFwcGxpY2F0aW9ucyZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPXBpb21pbl9zYW1wbGUtcXVhcmt1cy1hcHBsaWNhdGlvbnMpClshW0xpbmVzIG9mIENvZGVdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PXBpb21pbl9zYW1wbGUtcXVhcmt1cy1hcHBsaWNhdGlvbnMmbWV0cmljPW5jbG9jKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1waW9taW5fc2FtcGxlLXF1YXJrdXMtYXBwbGljYXRpb25zKQoKSW4gdGhpcyBwcm9qZWN0IEknbSBkZW1vbnN0cmF0aW5nIHRoZSBtb3N0IGludGVyZXN0aW5nIGZlYXR1cmVzIG9mIFtRdWFya3VzXShodHRwczovL3F1YXJrdXMuaW8vKSBmb3IgYnVpbGRpbmcgYXBwbGljYXRpb25zIGluIEtvdGxpbi4KCiMjIEdldHRpbmcgU3RhcnRlZCAKSGVyZSdzIGEgZnVsbCBsaXN0IG9mIGF2YWlsYWJsZSBleGFtcGxlczoKMS4gVXNpbmcgUXVhcmt1cyBmb3IgYnVpbGRpbmcgUkVTVCBhcHBsaWNhdGlvbiB0aGF0IGNvbm5lY3RzIHRvIEgyIGRhdGFiYXNlIHVzaW5nIEhpYmVybmF0ZSBPUk0uIFRoZSBleGFtcGxlIGlzIGF2YWlsYWJsZSBpbiB0aGUgbW9kdWxlIFtlbXBsb3llZS1zZXJ2aWNlXShodHRwczovL2dpdGh1Yi5jb20vcGlvbWluL3NhbXBsZS1xdWFya3VzLWFwcGxpY2F0aW9ucy90cmVlL21hc3Rlci9lbXBsb3llZS1zZXJ2aWNlKS4gQSBkZXRhaWxlZCBndWlkZSBtYXkgYmUgZm91bmQgaW4gdGhlIGZvbGxvd2luZyBhcnRpY2xlOiBbR3VpZGUgdG8gUXVhcmt1cyB3aXRoIEtvdGxpbl0oaHR0cHM6Ly9waW90cm1pbmtvd3NraS5jb20vMjAyMC8wOC8wOS9ndWlkZS10by1xdWFya3VzLXdpdGgta290bGluLykKMi4gVXNpbmcgUXVhcmt1cyBLdWJlcm5ldGVzIGV4dGVuc2lvbnMgdG8gZGVwbG95IGFwcGxpY2F0aW9uIGVhc2lseSBvbiBLdWJlcm5ldGVzLiBUaGUgZXhhbXBsZSBpcyBhdmFpbGFibGUgaW4gdGhlIG1vZHVsZSBbZW1wbG95ZWUtc2VydmljZV0oaHR0cHM6Ly9naXRodWIuY29tL3Bpb21pbi9zYW1wbGUtcXVhcmt1cy1hcHBsaWNhdGlvbnMvdHJlZS9tYXN0ZXIvZW1wbG95ZWUtc2VydmljZSkuIEEgZGV0YWlsZWQgZ3VpZGUgbWF5IGJlIGZvdW5kIGluIHRoZSBmb2xsb3dpbmcgYXJ0aWNsZTogW0d1aWRlIHRvIFF1YXJrdXMgb24gS3ViZXJuZXRlc10oaHR0cHM6Ly9waW90cm1pbmtvd3NraS5jb20vMjAyMC8wOC8xMC9ndWlkZS10by1xdWFya3VzLW9uLWt1YmVybmV0ZXMvKQozLiBVc2luZyBRdWFya3VzIE9BdXRoMiBleHRlbnNpb24gdG8gcHJvdmlkZSBSQkFDIGF1dGhvcml6YXRpb24gYmFzZWQgb24gaW50ZWdyYXRpb24gd2l0aCBLZXljbG9hay4gVGhlIGV4YW1wbGUgaXMgYXZhaWxhYmxlIGluIHRoZSBtb2R1bGUgW2VtcGxveWVlLXNlY3VyZS1zZXJ2aWNlXShodHRwczovL2dpdGh1Yi5jb20vcGlvbWluL3NhbXBsZS1xdWFya3VzLWFwcGxpY2F0aW9ucy90cmVlL21hc3Rlci9lbXBsb3llZS1zZWN1cmUtc2VydmljZSkuIEEgZGV0YWlsZWQgZ3VpZGUgbWF5IGJlIGZvdW5kIGluIHRoZSBmb2xsb3dpbmcgYXJ0aWNsZTogW1F1YXJrdXMgT0F1dGgyIGFuZCBzZWN1cml0eSB3aXRoIEtleWNsb2FrXShodHRwczovL3Bpb3RybWlua293c2tpLmNvbS8yMDIwLzA5LzE2L3F1YXJrdXMtb2F1dGgyLWFuZC1zZWN1cml0eS13aXRoLWtleWNsb2FrLykKNC4gVXNpbmcgUXVhcmt1cyB3aXRoIFNtYWxsUnllIEdyYXBoIGV4dGVuc2lvbiB0byBHcmFwaFFMIEFQSSBhbmQgaW50ZWdyYXRpb24gd2l0aCBhIGRhdGFiYXNlIHdpdGggUGFuYWNoZS4gVGhlIGV4YW1wbGUgaXMgYXZhaWxhYmxlIGluIHRoZSBtb2R1bGUgW3NhbXBsZS1hcHAtZ3JhcGhxbF0oaHR0cHM6Ly9naXRodWIuY29tL3Bpb21pbi9zYW1wbGUtcXVhcmt1cy1hcHBsaWNhdGlvbnMvdHJlZS9tYXN0ZXIvc2FtcGxlLWFwcC1ncmFwaHFsKS4gQSBkZXRhaWxlZCBndWlkZSBtYXkgYmUgZm91bmQgaW4gdGhlIGZvbGxvd2luZyBhcnRpY2xlOiBbQW4gQWR2YW5jZWQgR3JhcGhRTCB3aXRoIFF1YXJrdXNdKGh0dHBzOi8vcGlvdHJtaW5rb3dza2kuY29tLzIwMjEvMDQvMTQvYWR2YW5jZWQtZ3JhcGhxbC13aXRoLXF1YXJrdXMvKQo1LiBVc2luZyBRdWFya3VzIEZ1bnF5IEhUVFAgYW5kIEF6dXJlIEV4dGVuc2lvbnMgdG8gYnVpbGQgYW5kIHJ1biBzZXJ2ZXJsZXNzIGFwcHMgb24gQXp1cmUgRnVuY3Rpb25zLiBUaGUgZXhhbXBsZSBpcyBhdmFpbGFibGUgaW4gdGhlIG1vZHVsZSBbYWNjb3VudC1mdW5jdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3Bpb21pbi9zYW1wbGUtcXVhcmt1cy1hcHBsaWNhdGlvbnMvdHJlZS9tYXN0ZXIvYWNjb3VudC1mdW5jdGlvbikuIEEgZGV0YWlsZWQgZ3VpZGUgbWF5IGJlIGZvdW5kIGluIHRoZSBmb2xsb3dpbmcgYXJ0aWNsZTogW1NlcnZlcmxlc3Mgb24gQXp1cmUgRnVuY3Rpb24gd2l0aCBRdWFya3VzXShodHRwczovL3Bpb3RybWlua293c2tpLmNvbS8yMDI0LzAxLzE5L3NlcnZlcmxlc3Mtb24tYXp1cmUtd2l0aC1zcHJpbmctY2xvdWQtZnVuY3Rpb24vKQ== readmeEtag: '"86e7361daebe88c2832f2145cb13edd6ee7ca185"' readmeLastModified: Sat, 10 Aug 2024 02:29:45 GMT repositoryId: 286198180 description: Example application built using Quarkus framework created: '2020-08-09T08:34:19Z' updated: '2025-11-29T20:46:29Z' language: Java archived: false stars: 48 watchers: 1 forks: 25 owner: piomin logo: https://avatars.githubusercontent.com/u/2892502?v=4 repoEtag: '"3e4acc741c70aa41e82a0f0892068e530381e102760e07d5035752ade64ad582"' repoLastModified: Sat, 29 Nov 2025 20:46:29 GMT foundInMaster: true category: SDK id: dd8f9923c6579fbc72bcd8fc5a69a30c - source: openapi3 tags repository: https://github.com/egeucak/api-doc-gpt v3: true id: 1b63b5474bf136c577ee3b41fafb3685 repositoryMetadata: base64Readme: >- IyBBUEkgRG9jIEdQVAoKVGhpcyBpcyBhbiBBSSB0b29sIHRoYXQgaGVscHMgeW91IGRpc2NvdmVyIHlvdXIgQVBJIGRvY3VtZW50YXRpb24uIEl0IGlzIGJhc2VkIG9uIHRoZSBbR1BULTMuNV0oaHR0cHM6Ly9vcGVuYWkuY29tL2Jsb2cvYmV0dGVyLWxhbmd1YWdlLW1vZGVscy8pIGxhbmd1YWdlIG1vZGVsIGZyb20gT3BlbkFJLgpZb3UgY2FuIHVzZSB0aGlzIHdpdGggZWl0aGVyIGRpcmVjdGx5IGNvbm5lY3RpbmcgdG8gYSBGYXN0QXBpIGFwcCBvciBieSBwYXNzaW5nIGluIGFuIGBvcGVuYXBpLmpzb25gIGZpbGUuCgojIyBTZXR1cAoKSW5zdGFsbCB0aGUgZGVwZW5kZW5jaWVzCgpgYGBiYXNoCnBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKYGBgCgojIyBIb3cgdG8gdXNlIHdpdGggRmFzdEFwaQoKMS4gUnVuIHlvdXIgYmFja2VuZCBhcHAKCmBgYGJhc2gKdXZpY29ybiBtYWluOmFwcCAtLXJlbG9hZApgYGAKCjIuIFJ1biB0aGUgc2NyaXB0CgpgYGBiYXNoCnB5dGhvbiBhcGlfbWFzdGVyLnB5IC0tb3BlbmFpLWtleSA8eW91ci1vcGVuYWkta2V5PiAtLXRhcmdldCA8eW91ci1mYXN0YXBpLWFwcD4gLS1iYXNlLXVybCA8eW91ci1iYXNlLXVybD4KYGBgCgojIyBIb3cgdG8gdXNlIHdpdGggb3BlbmFwaS5qc29uCgpgYGBiYXNoCnB5dGhvbiBhcGlfbWFzdGVyLnB5IC0tb3BlbmFpLWtleSA8eW91ci1vcGVuYWkta2V5PiAtLW9wZW5hcGktanNvbiA8b3BlbmFwaS1qc29uPiAtLWJhc2UtdXJsIDx5b3VyLWJhc2UtdXJsPgpgYGAKCiMjIFJ1bm5pbmcgZXhhbXBsZQoKYGBgYmFzaApweXRob24gYXBpX21hc3Rlci5weSAtLW9wZW5haS1rZXk9PHlvdXItb3BlbmFpLWtleT4gLS1vcGVuYXBpLWpzb249Li9leGFtcGxlL29wZW5hcGkuanNvbiAtLWJhc2UtdXJsPSJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIKYGBgCgpFbmpveSBpbnRlcmFjdGluZyB3aXRoIHlvdXIgQVBJIGRvY3VtZW50YXRpb24KIVtzaG93Y2FzZV0oLi9zaG93Y2FzZS5wbmcpCgojIFdpdGggR1BULTQKClRoaXMgYWxzbyB3b3JrcyB3aXRoIEdQVC00LiBZb3UganVzdCBuZWVkIHRvIHBhc3MgcGFyYW1ldGVyIGAtLW1vZGVsLW5hbWU9Z3B0LTRgIHdoaWxlIHJ1bm5pbmcgdGhlIHNjcmlwdC4KCiMjIEhvdyBpdCB3b3JrcwoKVGhpcyB3b3JrcyBieSBjcmVhdGluZyBvcGVuIGFwaSBkb2N1bWVudGF0aW9uIGZyb20geW91ciBmYXN0YXBpIGFwcCBhbmQgdGhlbiB1c2luZyB0aGUgR1BULTMuNSBsYW5ndWFnZSBtb2RlbCB0byBhbmFseXplIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgQVBJLgoKYGBgbWVybWFpZApzZXF1ZW5jZURpYWdyYW0KICAgIFVzZXItLT4+K1Byb2Nlc3NvcjogR2l2ZSBtZSBhIGxpc3Qgb2YgaXRlbXMuIEkgb25seSBuZWVkIDUgb2YgdGhlbQogICAgUHJvY2Vzc29yLS0+PitBSTogUFJPTVBUOiBHaXZlIG1lIGEgbGlzdCBvZiBpdGVtcy4gSSBvbmx5IG5lZWQgNSBvZiB0aGVtCiAgICBBSS0tPj4rUHJvY2Vzc29yOiBDTUQ6IEdFVCAvaXRlbXM/ZmlsdGVyPTUKICAgIFByb2Nlc3Nvci0tPj4rQUk6IENNRF9SRVNQOiBbeyJuYW1lIjogImN1Y3VtYmVyIn0sIHsibmFtZSI6ICJjZWxlcnkifS4uLl0KICAgIEFJLS0+PitQcm9jZXNzb3I6IE9VVDogSXRlbXMgYXJlIGN1Y3VtYmVyLCBjZWxlcnkuLi4KICAgIFByb2Nlc3Nvci0tPj4rVXNlcjogSXRlbXMgYXJlIGN1Y3VtYmVyLCBjZWxlcnkuLi4KYGBgCgpUaGlzIGFsc28gc3VwcG9ydHMgcmVhY3QuIE1vcmUgZGV0YWlsIGNhbiBiZSBmb3VuZCBhdDogaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIyMTAuMDM2MjkKCiMjIENvbnN0cmFpbnRzCgotIFRva2VuIHNpemUK readmeEtag: '"1fbcc22a62df0c9f992b6601ffeed6e01ca6517c"' readmeLastModified: Mon, 27 Mar 2023 15:02:29 GMT repositoryId: 609666398 description: ChatGPT for Openapi created: '2023-03-04T21:34:21Z' updated: '2025-10-28T17:06:10Z' language: Python archived: false stars: 45 watchers: 2 forks: 6 owner: egeucak logo: https://avatars.githubusercontent.com/u/15627365?v=4 license: MIT repoEtag: '"2d0c0eb79a093e4227441e62003aeefb71da8432133cd532b83161b2170c2e17"' repoLastModified: Tue, 28 Oct 2025 17:06:10 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/juzibot/wecom-openapi v3: true repositoryMetadata: base64Readme: >- PGltZyBzcmM9Imh0dHBzOi8vd3djZG4ud2VpeGluLnFxLmNvbS9ub2RlL3dld29yay9pbWFnZXMvbG9nby5jNzY4Yzc1NmFiLnBuZyIgd2lkdGg9IjMwMCI+CjxpbWcgc3JjPSJodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvd3AtY29udGVudC91cGxvYWRzL3NpdGVzLzMvMjAxOC8wMi9PcGVuQVBJX0xvZ29fUGFudG9uZS0xLnBuZyIgd2lkdGg9IjMwMCI+CjxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci5pby93b3JkcHJlc3MvaW1hZ2VzL2Fzc2V0cy9TV1UtbG9nby1jbHIucG5nIiB3aWR0aD0iMzAwIj4KCiMKClvnroDkvZPkuK3mloddKC4vUkVBRE1FX1pILm1kKQoKIyMgRGVzY3JpcHRpb24KClRoaXMgcHJvamVjdCBhaW1zIHRvIHRyYW5zbGF0ZSB0aGUgV2VDb20gZG9jdW1lbnRhdGlvbiBpbnRvIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiwgc28gdGhhdCB5b3UgY2FuIGdlbmVyYXRlIGNsaWVudCBjb2RlIGluIHZhcmlvdXMgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLiBDdXJyZW50bHksIHdlIGFyZSB1c2luZyB2ZXJzaW9uIDMueCBvZiBPcGVuQVBJIFNwZWNpZmljYXRpb24uCgojIyBJbnN0YWxsYXRpb24KCmBgYGJhc2gKJCBucG0gaW5zdGFsbApgYGAKCiMjIFJ1bm5pbmcgdGhlIGFwcAoKV2hlbiB0aGUgYXBwIGlzIHJ1bm5pbmcsIHRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gZmlsZSBgb3BlbmFwaS55YW1sYCB3aWxsIGJlIGdlbmVyYXRlZC4gWW91IGNhbiBvcGVuIGBodHRwOi8vbG9jYWxob3N0OjMwMDAvb3BlbmFwaWAgdG8gdmlldyBTd2FnZ2VyIFVJLgoKYGBgYmFzaAokIG5wbSBydW4gc3RhcnQKYGBgCgojIyBHZW5lcmF0aW5nIGNsaWVudCBjb2RlCgpbc3dhZ2dlci1jb2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuKSBpcyBhIHZlcnkgcG9wdWxhciB0b29sIHRvIGdlbmVyYXRlIGNvZGUgZnJvbSBPcGVuQVBJIFNwZWNpZmljYXRpb24uIEJ1dCBpZiB5b3UgYXJlIHVzaW5nIEdvbGFuZywgW2dvLXN3YWdnZV0oaHR0cHM6Ly9naXRodWIuY29tL2dvLXN3YWdnZXIvZ28tc3dhZ2dlcikgaXMgcmVjb21tZW5kZWQuCgojIyMgRXhhbXBsZQoKW2dvLXN3YWdnZV0oaHR0cHM6Ly9naXRodWIuY29tL2dvLXN3YWdnZXIvZ28tc3dhZ2dlcikgaXMgYmFzZWQgb24gT3BlbkFQSSBTcGVjaWZpY2F0aW9uIDIuMCwgc28geW91Cm5lZWQgdG8gZG93bmdyYWRlIHRoZSB2ZXJzaW9uLgoKYGBgYmFzaAokIG5wbSBpbnN0YWxsIC1nIGFwaS1zcGVjLWNvbnZlcnRlcgokIGFwaS1zcGVjLWNvbnZlcnRlciAtLWZyb209b3BlbmFwaV8zIC0tdG89c3dhZ2dlcl8yIC0tc3ludGF4PXlhbWwgLS1vcmRlcj1hbHBoYSAuL29wZW5hcGkueWFtbCA+IHN3YWdnZXIueWFtbApgYGAKClRoZW4gZ2VuZXJhdGUgR29sYW5nIGNvZGUgZnJvbSBgc3dhZ2dlci55YW1sYCBmaWxlLgoKYGBgCiQgYnJldyB0YXAgZ28tc3dhZ2dlci9nby1zd2FnZ2VyCgokIGJyZXcgaW5zdGFsbCBnby1zd2FnZ2VyCgokIG1rZGlyIHdlY29tLWFwaSAmJiBjZCB3ZWNvbS1hcGkKCiMgTk9URTogeW91IG5lZWQgcnVuIGdvIG1vZCBpbml0IHRvIGNyZWF0ZSBhIGdvLm1vZCBmaWxlCiQgZ28gbW9kIGluaXQgd2Vjb20tYXBpCgokIHN3YWdnZXIgZ2VuZXJhdGUgY2xpZW50IC1mIHN3YWdnZXIueWFtbCAtdCB3ZWNvbS1hcGkKYGBgCgojIyBEZXYKClRoaXMgcHJvamVjdCBpcyBiYXNlZCBvbiBTd2FnZ2VyIGludGVncmF0aW9uIG9mIE5lc3RKUy4gUmVmZXIgdG8gW09wZW5BUEkoTmVzdEpTKV0oaHR0cHM6Ly9kb2NzLm5lc3Rqcy5jb20vb3BlbmFwaS9pbnRyb2R1Y3Rpb24pIGZvciBkZXRhaWwuCgojIyMgQVBJIERlZmluaXRpb24gaW4gY29udHJvbGxlciBmaWxlcwoKYGBgCm5lc3QgZyAtLW5vLXNwZWMgY29udHJvbGxlciBkZXBhcnRtZW50CmBgYAoKIyMjIENyZWF0ZSBEVE8gYW5kIFJlc3BvbnNlIHN0cnVjdHVyZQoKVXN1YWxseSwgd2UgZGVjbGFyZSBEVE9zIGFuZCBSZXNwb25zZXMgaW4gZGlmZmVyZW50IGNsYXNzZXMuCgpgYGAKbmVzdCBnIC0tbm8tc3BlYyBjbGFzcyBkZXBhcnRtZW50L0RlcGFydG1lbnQKYGBgCgojIyMgQVBJIFByb3BlcnRpZXMKCmBgYAogIEBBcGlQcm9wZXJ0eSh7CiAgICByZXF1aXJlZDogZmFsc2UsCiAgICB0eXBlOiAnc3RyaW5nJywKICAgIGlzQXJyYXk6IHRydWUsCiAgICBtYXhJdGVtczogMTAwLAogICAgZXhhbXBsZTogJ1siYWJlbCJdJywKICAgIGRlc2NyaXB0aW9uOiAndXNlciBpZCBsaXN0LCBtYXggbGVuZ3RoIGlzIDEwMCcsCiAgfSkKICB1c2VyaWRfbGlzdDogc3RyaW5nW107CmBgYAoKLSBgcmVxdWlyZWRgLCBgdHlwZWAgaXMgcmVxdWlyZWQuCi0gYGRlc2NyaXB0aW9uYCwgYGV4YW1wbGVgIHJlY29tbWVuZGVk44CCCgpgYGAKICBAQXBpT3BlcmF0aW9uKHsKICAgIG9wZXJhdGlvbklkOiAnZ2V0R3JvdXBDaGF0JywKICAgIHN1bW1hcnk6ICdHZXQgdXNlciBncm91cCBkZXRhaWwnLAogICAgZGVzY3JpcHRpb246ICdHZXQgdXNlciBncm91cCBkZXRhaWwnLAogICAgZXh0ZXJuYWxEb2NzOiB7CiAgICAgIHVybDogJ2h0dHBzOi8vZGV2ZWxvcGVyLndvcmsud2VpeGluLnFxLmNvbS9kb2N1bWVudC9wYXRoLzkyMTIyJywKICAgIH0sCiAgfSkKYGBgCgotIGBvcGVyYXRpb25JZGAgUmVxdWlyZWQsIFVuaXF1ZSwgSXMgZnVuY3Rpb24gbmFtZSBpbiBnZW5lcnRhdGlvbiBjb2RlLgotIGBzdW1tYXJ5YCBSZXF1aXJlZAotIGBleHRlcm5hbERvY3NgIExpbmsgdG8gV2VDb20gb2ZmaWNpYWwgZG9jdW1lbnQuCgojIyBTd2FnZ2VyIFVJIFRyeSBpdCBvdXQKCiMjIyBBdXRob3JpemUKCkZpcnN0LCB5b3UgbmVlZCB0byBnZXQgYW4gYGFjY2Vzc190b2tlbmAgdG8gYXV0aG9yaXplIHRoZSBhcGkgY2FsbHMuCiFbXSguL3NjcmVlbnNob3QvYXV0aG9yaXplX3N0ZXAucG5nKQoKIyMjIFByb3h5CgpCcm93c2VyIGhhcyBDT1JTIGlzc3VlLCBzbyB3ZSBjYW5ub3QgYWNjZXNzIHd4LXdvcmsgZGlyZWN0bHkuIFNvIHdlIG1hZGUgYSBwcm94eSBmb3IgeW91LiBUbyBhY2Nlc3MsIHVzZSBgaHR0cDovL2xvY2FsaG9zdDozMDAwL2NnaS1iaW5gLgohW10oLi9zY3JlZW5zaG90L3Byb3h5X3N0ZXAucG5nKQo= readmeEtag: '"3ab97d0b553ac8683a7785a2d4d1a16c7d3ce104"' readmeLastModified: Fri, 11 Nov 2022 03:36:15 GMT repositoryId: 457707390 description: Swagger OpenAPI of WeCom. 企业微信的 Swagger 文档。 created: '2022-02-10T09:13:32Z' updated: '2026-01-26T05:37:13Z' language: TypeScript archived: false stars: 47 watchers: 3 forks: 3 owner: juzibot logo: https://avatars.githubusercontent.com/u/36260234?v=4 repoEtag: '"3c64520692ee4cff13718905dac94ad39c8e453c945d184c606b296f542b20f6"' repoLastModified: Mon, 26 Jan 2026 05:37:13 GMT foundInMaster: true category: Parsers id: 34d44163975586f318085cb7dc4b1ba6 - source: openapi3 tags repository: https://github.com/redocly/museum-openapi-example v3: true id: 1908c5d265dd6cda6a2bb2946e0fe880 repositoryMetadata: base64Readme: >- IyBSZWRvY2x5IE11c2V1bSBBUEkgRXhhbXBsZQoKQW4gaW1hZ2luYXJ5LCBidXQgZGVsaWdodGZ1bCBNdXNldW0gQVBJIGZvciBpbnRlcmFjdGluZyB3aXRoIG11c2V1bSBzZXJ2aWNlcyBhbmQgaW5mb3JtYXRpb24uCkJ1aWx0IGJ5IFJlZG9jbHkgZm9yIGVkdWNhdGlvbmFsIHB1cnBvc2VzLgoKPiBbIU5PVEVdICAKPiBUaGlzIE9wZW5BUEkgZGVzY3JpcHRpb24gdXNlcyB0aGUgW09wZW5BUEkgMy4xLjAgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wKS4KCiMjIE92ZXJ2aWV3CgpJbnRyb2R1Y2luZyB0aGUgIk11c2V1bSBBUEkiLCB3aGljaCBvZmZlcnMgYSBzZXQgb2YgZW5kcG9pbnRzIHRvIGludGVyYWN0IHdpdGggYSBtdXNldW0ncyBzZXJ2aWNlcy0tc3VjaCBhcyByZXRyaWV2aW5nIG11c2V1bSBob3VycywgbWFuYWdpbmcgc3BlY2lhbCBldmVudHMsIGFuZCBwdXJjaGFzaW5nIHRpY2tldHMuCgpOZXcgZnVuY3Rpb25hbGl0eSBtYXkgYmUgYWRkZWQgdG8gdGhlIE11c2V1bSBBUEkgaW4gdGhlIGZ1dHVyZS4KSXMgdGhlcmUgYW4gZXhhbXBsZSB5b3UnZCBsaWtlIHRvIHNlZT8gUGxlYXNlIFtvcGVuIGFuIGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9tdXNldW0tb3BlbmFwaS1leGFtcGxlL2lzc3Vlcy9uZXcpLgoKIyMgRmVhdHVyZXMKCj4gWyFOT1RFXSAgCj4gUmVtaW5kZXIgdGhhdCB0aGVzZSBhcmUgZmljdGlvbmFsIGV4YW1wbGVzIGZvciBsZWFybmluZyBwdXJwb3Nlcy4KPiBUaGUgY29udGVudHMgb2YgdGhpcyByZXBvc2l0b3J5IGFyZSBpbGx1c3RyYXRpb25zIHRvIHVzZSB3aXRoIHlvdXIgT3BlbkFQSSBzdHVkeSBvciB0b29scyBleHBsb3JhdGlvbi4KCiMjIyBPcGVuQVBJCgotIGBvcGVuYXBpLnlhbWxgIGNvbnRhaW5zIHRoZSBNdXNldW0gQVBJLiBJdCBpcyBhbiBPcGVuQVBJIDMuMS4wIGRlc2NyaXB0aW9uLgoKVGhlIE11c2V1bSBBUEkgaGFzIHRoZSBmb2xsb3dpbmcgY29yZSBmZWF0dXJlcyAoc29ydGVkIGJ5IHRhZ3MpOgotIE9wZXJhdGlvbnMKICAtIEdldCBtdXNldW0gb3BlcmF0aW9uYWwgaG91cnMKLSBTcGVjaWFsIGV2ZW50cwogIC0gR2V0IHNwZWNpYWwgZXZlbnQgZGF0YQogIC0gTGlzdCBzcGVjaWFsIGV2ZW50cwogIC0gQ3JlYXRlIGFuZCB1cGRhdGUgYSBzcGVjaWFsIGV2ZW50CiAgLSBEZWxldGUgYSBzcGVjaWFsIGV2ZW50Ci0gVGlja2V0cwogIC0gUHVyY2hhc2UgbXVzZXVtIHRpY2tldHMgZm9yIGdlbmVyYWwgZW50cnkgb3Igc3BlY2lhbCBldmVudHMKICAtIEdldCBzY2FubmFibGUgUVIgY29kZSBmb3IgbXVzZXVtIHRpY2tldAoKIyMjIEFyYXp6bwoKLSBgYXJhenpvL211c2V1bS10aWNrZXRzLmFyYXp6by55YW1sYCBpcyBhbiBBcmF6em8gMS4wLjAgZGVzY3JpcHRpb24gb2YgdXNpbmcgdGhlIE11c2V1bSBPcGVuQVBJIHNvdXJjZSB0byBkZXNjcmliZSBhbiBBUEkgc2VxdWVuY2UuCi0gYGFyYXp6by9tdXNldW0tYXBpLmFyYXp6by55YW1sYCBpcyBhbiBBcmF6em8gMS4wLjAgZGVzY3JpcHRpb24gdXNpbmcgYm90aCB0aGUgTXVzZXVtIEFQSSBhbmQgYW5vdGhlciBBcmF6em8gZmlsZSB0byBkZXNjcmliZSBhIHNlcmllcyBvZiBtdWx0aS1zdGVwIEFQSSB3b3JrZmxvd3MgYW5kIHBhc3NpbmcgdGhlIHZhcmlhYmxlcyBiZXR3ZWVuIHRoZW0uCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCjEuIENsb25lIHRoaXMgcmVwby4KMi4gT3BlbiB0aGUgcmVwbyBpbiB5b3VyIElERS4KMy4gUnVuIGBucG0gaW5zdGFsbGAgdG8gaW5zdGFsbCB0aGUgUmVkb2NseSBDTEkuCgojIyMgV29ya2luZyB3aXRoIHRoZSBPcGVuQVBJIGRlc2NyaXB0aW9uCgpXZSBlbmNvdXJhZ2UgeW91IHRvIGV4cGxvcmUgdGhlIG11c2V1bSdzIE9wZW5BUEkgZGVzY3JpcHRpb24gYW5kIG1ha2UgY2hhbmdlcy4KVHJ5IGV4cGVyaW1lbnRpbmcgd2l0aCB0aGUgZm9sbG93aW5nIGFwcHJvYWNoZXM6CgoqKlByZXZpZXcgdGhlIE11c2V1bSBPcGVuQVBJIGV4YW1wbGUncyBBUEkgZG9jcyBhbmQgb2JzZXJ2ZSB5b3VyIGNoYW5nZXMgdmlzdWFsbHkuKioKCi0gUnVuIGBucG0gcnVuIHByZXZpZXdgIHRvIHByZXZpZXcgdGhlIGRvY3VtZW50YXRpb24uCi0gTmF2aWdhdGUgdG8gdGhlICoqTGlzdCBzcGVjaWFsIGV2ZW50cyoqIG9wZXJhdGlvbiBpbiB0aGUgcHJldmlldy4KLSBXaXRoIHRoZSBwcmV2aWV3IHJ1bm5pbmcuLi4KICAtIEdvIHRvIHRoZSBfb3BlbmFwaS55YW1sXyBmaWxlIGluIHlvdXIgSURFLgogIC0gU2VhcmNoIGZvciBgbGlzdFNwZWNpYWxFdmVudHNgIHRvIGZpbmQgdGhlIG1hdGNoaW5nIGBvcGVyYXRpb25JZGAuCiAgLSBSZXBsYWNlIHRoZSBgZGVzY3JpcHRpb25gIGZpZWxkIHdpdGggdGhlIHNuaXBwZXQgYmVsb3c6CgpgYGB5YW1sCiAgICBkZXNjcmlwdGlvbjogfC0KICAgICAgICBSZXR1cm4gYSBsaXN0IG9mIF91cGNvbWluZ18gc3BlY2lhbCBldmVudHMgYXQgdGhlIG11c2V1bS4KICAgICAgICAgICAgCiAgICAgICAgU2VlIG9uZSB5b3UgbGlrZT8gVXNlIHRoaXMgQVBJIHRvIFtidXkgYSB0aWNrZXRdKC8jdGFnL1RpY2tldHMvb3BlcmF0aW9uL2J1eU11c2V1bVRpY2tldHMpLiAgCmBgYAoKU2VlIHRoZSB1cGRhdGVkIGRlc2NyaXB0aW9uPyBUaGlzIGlzIGEgZ3JlYXQgd2F5IHRvIHByZXZpZXcgaG93IGVuZC11c2VycyBvZiB5b3VyIGRvY3Mgd2lsbCBleHBlcmllbmNlIHlvdXIgY2hhbmdlcy4KCioqTGludCB5b3VyIGNoYW5nZXMgdG8gdGhlIE9wZW5BUEkgZGVzY3JpcHRpb24gdXNpbmcgW1JlZG9jbHkgQ0xJXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpLykuKioKCi0gT3BlbiB0aGUgbXVzZXVtJ3MgX29wZW5hcGkueWFtbF8gZmlsZSBpbiB5b3VyIElERS4gCi0gQWRkIHRoZSBmb2xsb3dpbmcgc25pcHBldCB0byBgcGF0aHNgIGFib3ZlIHRoZSAvbXVzZXVtLWhvdXJzIG9wZXJhdGlvbjoKCmBgYHlhbWwKICAvZXhhbXBsZToKICAgIGdldDogCiAgICAgIHN1bW1hcnk6IEV4YW1wbGUgU3VtbWFyeQogICAgICBkZXNjcmlwdGlvbjogRXhhbXBsZSBkZXNjcmlwdGlvbgogICAgICByZXNwb25zZXM6IAogICAgICAgICcyMDAnOgogICAgICAgICAgZGVzY3JpcHRpb246IFN1Y2Nlc3MKICAgICAgICAnNDAwJzogCiAgICAgICAgICBkZXNjcmlwdGlvbjogQmFkIFJlcXVlc3QKYGBgCgotIFJ1biBgbnBtIHJ1biBsaW50YCBpbiB5b3VyIHRlcm1pbmFsLiBTZWUgdGhlIGVycm9ycz8gCgpUaGUgbGludGluZyBiZWhhdmlvciBpcyBjb250cm9sbGVkIGJ5IHRoZSBfcmVkb2NseS55YW1sXyBjb25maWd1cmF0aW9uIGZpbGUuClRoZSBsaW50ZXIgaXMgY29uZmlndXJlZCB0byB1c2UgUmVkb2NseSdzIFtyZWNvbW1lbmRlZCBydWxlc2V0XShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL3J1bGVzL3JlY29tbWVuZGVkLyNyZWNvbW1lbmRlZC1ydWxlc2V0KSwgd2hpY2ggYXJlIGJ1aWx0IGludG8gdGhlIENMSS4KSG93ZXZlciwgd2UgYWxzbyBhZGRlZCBhIFtjb25maWd1cmFibGUgcnVsZV0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2NsaS9ydWxlcy9jb25maWd1cmFibGUtcnVsZXMvKSBmb3IgZW5mb3JjaW5nIHNlbnRlbmNlIGNhc2luZyBvbiBvcGVyYXRpb24gc3VtbWFyaWVzLgoKKipMaW50IGFuIEFyYXp6byBkZXNjcmlwdGlvbiB1c2luZyBbUmVkb2NseSBDTEldKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9jbGkvKS4qKgoKLSBSZWRvY2x5IENMSSBjYW4gYWxzbyBsaW50IGZvcm1hdHMgb3RoZXIgdGhhbiBPcGVuQVBJLCBzdWNoIGFzIHRoZSBBcmF6em8gZm9ybWF0LgotIFJ1biBgbnBtIHJ1biBsaW50IGFyYXp6by9tdXNldW0tYXBpLmFyYXp6by55YW1sYCB0byBsaW50IGFuIGV4YW1wbGUgQXJhenpvIGRlc2NyaXB0aW9uLgo= readmeEtag: '"c9c914daa47efa61b11958a22b1523a89d69d58d"' readmeLastModified: Thu, 25 Jul 2024 14:17:47 GMT repositoryId: 713070411 description: 'An example OpenAPI description for an imaginary Museum API. ' created: '2023-11-01T19:22:54Z' updated: '2025-12-28T12:55:56Z' language: null archived: false stars: 66 watchers: 11 forks: 40 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT repoEtag: '"7c41d16f735128e58652f7de733c97419a545e9f56dce3eda1eb5f2797742a3b"' repoLastModified: Sun, 28 Dec 2025 12:55:56 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/alexferl/echo-boilerplate v3: true id: d15d98fca8fb5baef974da4b37117de6 repositoryMetadata: base64Readme: >- IyBlY2hvLWJvaWxlcnBsYXRlIFshW0dvIFJlcG9ydCBDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9hbGV4ZmVybC9lY2hvLWJvaWxlcnBsYXRlKV0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL2FsZXhmZXJsL2VjaG8tYm9pbGVycGxhdGUpIFshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9hbGV4ZmVybC9lY2hvLWJvaWxlcnBsYXRlL2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2FsZXhmZXJsL2VjaG8tYm9pbGVycGxhdGUpCgpBIEdvIDEuMjIrIGJvaWxlcnBsYXRlIGFwcCB1c2luZyB0aGUgbWluaW1hbGlzdCBbZWNob10oaHR0cHM6Ly9naXRodWIuY29tL2xhYnN0YWNrL2VjaG8pIGZyYW1ld29yayBhbmQgd2l0aAphdXRoZW50aWNhdGlvbiwgYXV0aG9yaXphdGlvbiBhbmQgcmVxdWVzdC9yZXNwb25zZSB2YWxpZGF0aW9uLgoKPiAqKk5vdGUqKjogSSB1c2UgdGhpcyBhcyBhIHN0YXJ0aW5nIHBvaW50IGZvciBwZXJzb25hbCBwcm9qZWN0cywgaXQgY2FuIGFuZCB3aWxsIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KCiMjIEZlYXR1cmVzCi0gW0pXVF0oaHR0cHM6Ly9qd3QuaW8vKSBmb3IgYXV0aGVudGljYXRpb24gd2l0aCBhY2Nlc3MgYW5kIFtyZWZyZXNoXShodHRwczovL2F1dGgwLmNvbS9ibG9nL3JlZnJlc2gtdG9rZW5zLXdoYXQtYXJlLXRoZXktYW5kLXdoZW4tdG8tdXNlLXRoZW0vKSB0b2tlbnMuCiBUaGUgYWNjZXNzIHRva2VuIGNhbiBiZSBzZW50IGluIHRoZSBbQXV0aG9yaXphdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0F1dGhvcml6YXRpb24pIGhlYWRlciBvcgogYXMgYSBbY29va2llXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0Nvb2tpZXMpLiBTZWUgW2VjaG8tand0XShodHRwczovL2dpdGh1Yi5jb20vYWxleGZlcmwvZWNoby1qd3QpLgotIFtDYXNiaW5dKGh0dHBzOi8vY2FzYmluLmlvLykgZm9yIGF1dGhvcml6YXRpb24gdXNpbmcgUkJBQy4gU2VlIFtlY2hvLWNhc2Jpbl0oaHR0cHM6Ly9naXRodWIuY29tL2FsZXhmZXJsL2VjaG8tY2FzYmluKS4KLSBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgZm9yIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHZhbGlkYXRpb24uIFNlZSBbZWNoby1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vYWxleGZlcmwvZWNoby1vcGVuYXBpKS4KCiMjIFJlcXVpcmVtZW50cwpCZWZvcmUgZ2V0dGluZyBzdGFydGVkLCBpbnN0YWxsIHRoZSBmb2xsb3dpbmc6CgpSZXF1aXJlZDoKLSBbcHJlLWNvbW1pdF0oaHR0cHM6Ly9wcmUtY29tbWl0LmNvbS8jaW5zdGFsbCkKLSBbTW9uZ29EQl0oaHR0cHM6Ly93d3cubW9uZ29kYi5jb20vZG9jcy9tYW51YWwvaW5zdGFsbGF0aW9uLyNtb25nb2RiLWluc3RhbGxhdGlvbi10dXRvcmlhbHMpCgpPcHRpb25hbDoKCi0gW2dvZnVtcHRdKGh0dHBzOi8vcGtnLmdvLmRldi9tdmRhbi5jYy9nb2Z1bXB0KSAobmVlZGVkIHRvIHJ1biBgbWFrZSBmbXRgKQotIFtyZWRvY2x5LWNsaV0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2NsaS9pbnN0YWxsYXRpb24vKSAobmVlZGVkIHRvIHJ1biBgbWFrZSBvcGVuYXBpLWxpbnRgKQoKIyMgVXNpbmcKU2V0dXAgdGhlIGRldiBlbnZpcm9ubWVudCBmaXJzdDoKYGBgc2hlbGwKbWFrZSBkZXYKYGBgCj4qKk5vdGUqKjogQW4gUlNBIHByaXZhdGUga2V5IHdpbGwgYmUgZ2VuZXJhdGVkIGluIHRoZSBjdXJyZW50IGZvbGRlciB0byBzaWduIGFuZCB2ZXJpZnkgdGhlIEpTT04gd2ViIHRva2Vucy4KCiMjIyBDcmVhdGluZyB0aGUgc3VwZXJ1c2VyCkxhdW5jaCB0aGUgc3VwZXJ1c2VyIGNtZCB3aXRoIGBnbyBydW4gLi9jbWQvc3VwZXJ1c2VyIC0tcGFzc3dvcmQgPHlvdXIgcGFzc3dvcmQ+YC4gWW91IGNhbiBjaGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWVzCndpdGggdGhlIGZvbGxvd2luZyBmbGFnczogYC0tZW1haWxgLCBgLS1uYW1lYCBhbmQgYC0tdXNlcm5hbWVgLiBZb3UgY2FuIHZpZXcgYWxsIHRoZSBvdGhlciBzZXR0aW5ncyB3aXRoIGAtLWhlbHBgLgoKIyMjIEJ1aWxkaW5nICYgUnVubmluZyBsb2NhbGx5CmBgYHNoZWxsCm1ha2UgcnVuCmBgYAojIyMgVXNpbmcgdGhlIEFQSQojIyMjIExvZ2luClJlcXVlc3Q6CmBgYHNoZWxsCmN1cmwgLS1yZXF1ZXN0IFBPU1QgXAogIC0tdXJsIGh0dHA6Ly9sb2NhbGhvc3Q6MTMyMy9hdXRoL2xvZ2luIFwKICAtLWhlYWRlciAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJyBcCiAgLS1kYXRhICd7CgkiZW1haWwiOiAic3VwZXJAZXhhbXBsZS5jb20iLAoJInBhc3N3b3JkIjogIjx5b3VyIHBhc3N3b3JkPiIKfScKYGBgClJlc3BvbnNlOgpgYGBqc29uCnsKICAiYWNjZXNzX3Rva2VuIjogImV5SmhiR2NpT2lKU1V6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS4uLiIsCiAgImV4cGlyZXNfaW4iOiAzNjAwLAogICJyZWZyZXNoX3Rva2VuIjogImV5SmhiR2NpT2lKU1V6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS4uLiIsCiAgInRva2VuX3R5cGUiOiAiQmVhcmVyIgp9CmBgYAoqKk5vdGUqKjogVGhlIGBhY2Nlc3NfdG9rZW5gIG9ubHkgbGFzdHMgNjAgbWludXRlcyBieSBkZWZhdWx0LCB0aGlzIGlzIGFzIGRlc2lnbmVkLiBBIGNsaWVudAoobGlrZSBhbiBbU1BBXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaW5nbGUtcGFnZV9hcHBsaWNhdGlvbikgb3IgYSBtb2JpbGUgYXBwbGljYXRpb24pIHdvdWxkIGhhdmUgYW4gaW50ZXJjZXB0b3IKdG8gY2F0Y2ggdGhlIDQwMSByZXNwb25zZXMsIHNlbmQgdGhlIGByZWZyZXNoX3Rva2VuYCB0byB0aGUgYC9hdXRoL3JlZnJlc2hgIGVuZHBvaW50IHRvIGdldCBuZXcgYWNjZXNzIGFuZCByZWZyZXNoIHRva2VucyBhbmQKdGhlbiByZXRyeSB0aGUgcHJldmlvdXMgcmVxdWVzdCB3aXRoIHRoZSBuZXcgYGFjY2Vzc190b2tlbmAgd2hpY2ggc2hvdWxkIHRoZW4gc3VjY2VlZC4gVGhlIGR1cmF0aW9uIG9mIHRoZSBgYWNjZXNzX3Rva2VuYApjYW4gYmUgbW9kaWZpZWQgd2l0aCBgLS1qd3QtYWNjZXNzLXRva2VuLWV4cGlyeWAgYW5kIHRoZSBgcmVmcmVzaF90b2tlbmAgd2l0aCBgLS1qd3QtcmVmcmVzaC10b2tlbi1leHBpcnlgLgoKIyMjIyBHZXQgY3VycmVudGx5IGF1dGhlbnRpY2F0ZWQgdXNlcgpSZXF1ZXN0OgoKVXNpbmcgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXI6CmBgYHNoZWxsCmN1cmwgLS1yZXF1ZXN0IEdFVCBcCiAgLS11cmwgaHR0cDovL2xvY2FsaG9zdDoxMzIzL21lIFwKICAtLWhlYWRlciAnQXV0aG9yaXphdGlvbjogQmVhcmVyIGV5SmhiR2NpT2lKU1V6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS4uLicKYGBgCgpVc2luZyB0aGUgY29va2llICh0aGUgY29va2llIGlzIHNlbnQgYXV0b21hdGljYWxseSB3aXRoIHdlYiBicm93c2VycywgSFRUUGllIGFuZCBzb21lIG90aGVyIGNsaWVudHMpOgpgYGBzaGVsbApjdXJsIC0tcmVxdWVzdCBHRVQgXAogIC0tdXJsIGh0dHA6Ly9sb2NhbGhvc3Q6MTMyMy9tZSBcCiAgLS1jb29raWUgYWNjZXNzX3Rva2VuPWV5SmhiR2NpT2lKU1V6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS4uLgpgYGAKClJlc3BvbnNlOgpgYGBqc29uCnsKICAiaWQiOiAiY2RoZ2gwZGZjbHNjcGxucmN1YWciLAogICJ1c2VybmFtZSI6ICJzdXBlciIsCiAgImVtYWlsIjogInN1cGVyQGV4YW1wbGUuY29tIiwKICAibmFtZSI6ICJTdXBlciIsCiAgImJpbyI6ICIiLAogICJjcmVhdGVkX2F0IjogIjIwMjItMTEtMDNUMDA6MTc6MDUuODM3WiIsCiAgInVwZGF0ZWRfYXQiOiBudWxsCn0KYGBgCgojIyMgT3BlbkFQSSBkb2NzCllvdSBjYW4gc2VlIHRoZSBPcGVuQVBJIGRvY3MgYnkgcnVubmluZyB0aGUgYXBwIGFuZCBuYXZpZ2F0aW5nIHRvIGBodHRwOi8vbG9jYWxob3N0OjEzMjMvZG9jc2Agb3IgYnkKb3BlbmluZyBbYXNzZXRzL2luZGV4Lmh0bWxdKGRvY3MvaW5kZXguaHRtbCkgaW4geW91ciB3ZWIgYnJvd3Nlci4KCiMjIyBSZXBvc2l0b3J5IGxheW91dApgYGAKLgrilJzilIDilIAgY2FzYmluICAgIDwtLS0gbW9kZWwgYW5kIHBvbGljeSBmaWxlcyBmb3IgQ2FzYmluCuKUnOKUgOKUgCBjbWQgICAgICAgPC0tLSBlbnRyeXBvaW50cwrilJzilIDilIAgY29uZmlnICAgIDwtLS0gY29uZmlnIHN0cnVjdHMgYW5kIGRlZmF1bHRzIGFyZSBzcGVjaWZpZWQgaGVyZQrilJzilIDilIAgY29uZmlncyAgIDwtLS0gY29uZmlnIGZpbGVzLCBmb3IgY29uZmlncyB0aGF0IHJhcmVseSBjaGFuZ2UsIGJ1dCBzaG91bGQgb3ZlcnJpZGUgdGhlIGRlZmF1bHRzCuKUnOKUgOKUgCBkYXRhICAgICAgPC0tLSBiYXNlIG1hcHBlciwgZGF0YWJhc2UgaGVscGVycwrilJzilIDilIAgZG9jcyAgICAgIDwtLS0gZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24gZnJvbSBPcGVuQVBJIHNjaGVtYQrilJzilIDilIAgaGFuZGxlcnMgIDwtLS0gSFRUUCBoYW5kbGVycyAoYWthIGNvbnRyb2xsZXJzLCBlbmRwb2ludHMgZXRjLikgdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGUgc2VydmljZXMK4pSc4pSA4pSAIG1hcHBlcnMgICA8LS0tIG1hcHBlciBsYXllciB0aGF0IHRoZSBzZXJ2aWNlcyB1c2UgdG8gaW5zZXJ0L3JldHJpZXZlIG1vZGVscyBmcm9tIHRoZSBkYXRhYmFzZQrilJzilIDilIAgbW9kZWxzICAgIDwtLS0gc3RydWN0cyBkZWZpbmluZyB0aGUgdmFyaW91cyByZXNvdXJjZXMK4pSc4pSA4pSAIG9wZW5hcGkgICA8LS0tIE9wZW5BUEkgc2NoZW1hIGZpbGVzCuKUnOKUgOKUgCBzZXJ2ZXIgICAgPC0tLSBnbHVlcyBoYW5kbGVycy9zZXJ2aWNlcy9tYXBwZXJzCuKUnOKUgOKUgCBzZXJ2aWNlcyAgPC0tLSBzZXJ2aWNlIGxheWVyIHRoYXQgaW50ZXJhY3RzIHdpdGggdGhlIG1hcHBlcnMK4pSc4pSA4pSAIHRlc3RpbmcgICA8LS0tIHRlc3RpbmcgaGVscGVycwrilJTilIDilIAgdXRpbCAgICAgIDwtLS0gZ2VuZXJhbCBoZWxwZXJzCmBgYAoKIyMjIFVzYWdlCmBgYHNoZWxsCmdvIHJ1biAuL2NtZC9zZXJ2ZXIgLS1oZWxwCmBgYAoKYGBgClVzYWdlIG9mIC4vZWNoby1ib2lsZXJwbGF0ZToKICAgICAgLS1hcHAtbmFtZSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbi4gKGRlZmF1bHQgImFwcCIpCiAgICAgIC0tYmFzZS11cmwgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlIFVSTCB3aGVyZSB0aGUgYXBwIHdpbGwgYmUgc2VydmVkIChkZWZhdWx0ICJodHRwOi8vbG9jYWxob3N0OjEzMjMiKQogICAgICAtLWNhc2Jpbi1tb2RlbCBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FzYmluIG1vZGVsIGZpbGUgKGRlZmF1bHQgIi4vY2FzYmluL21vZGVsLmNvbmYiKQogICAgICAtLWNhc2Jpbi1wb2xpY3kgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FzYmluIHBvbGljeSBmaWxlIChkZWZhdWx0ICIuL2Nhc2Jpbi9wb2xpY3kuY3N2IikKICAgICAgLS1jb29raWVzLWRvbWFpbiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgIENvb2tpZXMgZG9tYWluCiAgICAgIC0tY29va2llcy1lbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kIGNvb2tpZXMgd2l0aCBhdXRoZW50aWNhdGlvbiByZXF1ZXN0cwogICAgICAtLWNzcmYtY29va2llLWRvbWFpbiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgQ1NSRiBjb29raWUgZG9tYWluCiAgICAgIC0tY3NyZi1jb29raWUtbmFtZSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICBDU1JGIGNvb2tpZSBuYW1lIChkZWZhdWx0ICJjc3JmX3Rva2VuIikKICAgICAgLS1jc3JmLWVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUkYgZW5hYmxlZAogICAgICAtLWNzcmYtaGVhZGVyLW5hbWUgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgQ1NSRiBoZWFkZXIgbmFtZSAoZGVmYXVsdCAiWC1DU1JGLVRva2VuIikKICAgICAgLS1jc3JmLXNlY3JldC1rZXkgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgIENTUkYgc2VjcmV0IHVzZWQgdG8gaGFzaCB0aGUgdG9rZW4KICAgICAgLS1lbnYtbmFtZSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlbnZpcm9ubWVudCBvZiB0aGUgYXBwbGljYXRpb24uIFVzZWQgdG8gbG9hZCB0aGUgcmlnaHQgY29uZmlncyBmaWxlLiAoZGVmYXVsdCAibG9jYWwiKQogICAgICAtLWh0dHAtYmluZC1hZGRyZXNzIGlwICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIElQIGFkZHJlc3MgdG8gbGlzdGVuIGF0LiAoZGVmYXVsdCAxMjcuMC4wLjEpCiAgICAgIC0taHR0cC1iaW5kLXBvcnQgdWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcG9ydCB0byBsaXN0ZW4gYXQuIChkZWZhdWx0IDEzMjMpCiAgICAgIC0taHR0cC1jb3JzLWFsbG93LWNyZWRlbnRpYWxzICAgICAgICAgICAgICAgICAgICBUZWxscyBicm93c2VycyB3aGV0aGVyIHRvIGV4cG9zZSB0aGUgcmVzcG9uc2UgdG8gZnJvbnRlbmQgSmF2YVNjcmlwdCBjb2RlIHdoZW4gdGhlIHJlcXVlc3QncyBjcmVkZW50aWFscyBtb2RlIChSZXF1ZXN0LmNyZWRlbnRpYWxzKSBpcyAnaW5jbHVkZScuCiAgICAgIC0taHR0cC1jb3JzLWFsbG93LWhlYWRlcnMgc3RyaW5ncyAgICAgICAgICAgICAgICBJbmRpY2F0ZSB3aGljaCBIVFRQIGhlYWRlcnMgY2FuIGJlIHVzZWQgZHVyaW5nIGFuIGFjdHVhbCByZXF1ZXN0LgogICAgICAtLWh0dHAtY29ycy1hbGxvdy1tZXRob2RzIHN0cmluZ3MgICAgICAgICAgICAgICAgSW5kaWNhdGVzIHdoaWNoIEhUVFAgbWV0aG9kcyBhcmUgYWxsb3dlZCBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLiAoZGVmYXVsdCBbR0VULEhFQUQsUFVULFBBVENILFBPU1QsREVMRVRFXSkKICAgICAgLS1odHRwLWNvcnMtYWxsb3ctb3JpZ2lucyBzdHJpbmdzICAgICAgICAgICAgICAgIEluZGljYXRlcyB3aGV0aGVyIHRoZSByZXNwb25zZSBjYW4gYmUgc2hhcmVkIHdpdGggcmVxdWVzdGluZyBjb2RlIGZyb20gdGhlIGdpdmVuIG9yaWdpbi4gKGRlZmF1bHQgWypdKQogICAgICAtLWh0dHAtY29ycy1lbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlIGNyb3NzLW9yaWdpbiByZXNvdXJjZSBzaGFyaW5nLgogICAgICAtLWh0dHAtY29ycy1leHBvc2UtaGVhZGVycyBzdHJpbmdzICAgICAgICAgICAgICAgSW5kaWNhdGVzIHdoaWNoIGhlYWRlcnMgY2FuIGJlIGV4cG9zZWQgYXMgcGFydCBvZiB0aGUgcmVzcG9uc2UgYnkgbGlzdGluZyB0aGVpciBuYW1lLgogICAgICAtLWh0dHAtY29ycy1tYXgtYWdlIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kaWNhdGVzIGhvdyBsb25nIHRoZSByZXN1bHRzIG9mIGEgcHJlZmxpZ2h0IHJlcXVlc3QgY2FuIGJlIGNhY2hlZC4KICAgICAgLS1odHRwLWdyYWNlZnVsLXRpbWVvdXQgZHVyYXRpb24gICAgICAgICAgICAgICAgIFRpbWVvdXQgZm9yIGdyYWNlZnVsIHNodXRkb3duLiAoZGVmYXVsdCAzMHMpCiAgICAgIC0taHR0cC1sb2ctcmVxdWVzdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9scyB0aGUgbG9nZ2luZyBvZiBIVFRQIHJlcXVlc3RzIChkZWZhdWx0IHRydWUpCiAgICAgIC0taHR0cC10bHMtY2VydC1maWxlIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICBUTFMgY2VydGlmaWNhdGUgZmlsZQogICAgICAtLWh0dHAtdGxzLWtleS1maWxlIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgVExTIGtleSBmaWxlCiAgICAgIC0tand0LWFjY2Vzcy10b2tlbi1jb29raWUtbmFtZSBzdHJpbmcgICAgICAgICAgICBKV1QgYWNjZXNzIHRva2VuIGNvb2tpZSBuYW1lIChkZWZhdWx0ICJhY2Nlc3NfdG9rZW4iKQogICAgICAtLWp3dC1hY2Nlc3MtdG9rZW4tZXhwaXJ5IGR1cmF0aW9uICAgICAgICAgICAgICAgSldUIGFjY2VzcyB0b2tlbiBleHBpcnkgKGRlZmF1bHQgMWgwbTBzKQogICAgICAtLWp3dC1pc3N1ZXIgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSldUIGlzc3VlciAoZGVmYXVsdCAiaHR0cDovL2xvY2FsaG9zdDoxMzIzIikKICAgICAgLS1qd3QtcHJpdmF0ZS1rZXkgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgIEpXVCBwcml2YXRlIGtleSBmaWxlIHBhdGggKGRlZmF1bHQgIi4vcHJpdmF0ZS1rZXkucGVtIikKICAgICAgLS1qd3QtcmVmcmVzaC10b2tlbi1jb29raWUtbmFtZSBzdHJpbmcgICAgICAgICAgIEpXVCByZWZyZXNoIHRva2VuIGNvb2tpZSBuYW1lIChkZWZhdWx0ICJyZWZyZXNoX3Rva2VuIikKICAgICAgLS1qd3QtcmVmcmVzaC10b2tlbi1leHBpcnkgZHVyYXRpb24gICAgICAgICAgICAgIEpXVCByZWZyZXNoIHRva2VuIGV4cGlyeSAoZGVmYXVsdCA3MjBoMG0wcykKICAgICAgLS1sb2ctbGV2ZWwgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBncmFudWxhcml0eSBvZiBsb2cgb3V0cHV0cy4gVmFsaWQgbGV2ZWxzOiAnUEFOSUMnLCAnRkFUQUwnLCAnRVJST1InLCAnV0FSTicsICdJTkZPJywgJ0RFQlVHJywgJ1RSQUNFJywgJ0RJU0FCTEVEJyAoZGVmYXVsdCAiSU5GTyIpCiAgICAgIC0tbG9nLW91dHB1dCBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IHRvIHdyaXRlIHRvLiAnc3Rkb3V0JyBtZWFucyBsb2cgdG8gc3Rkb3V0LCAnc3RkZXJyJyBtZWFucyBsb2cgdG8gc3RkZXJyLiAoZGVmYXVsdCAic3Rkb3V0IikKICAgICAgLS1sb2ctd3JpdGVyIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsb2cgd3JpdGVyLiBWYWxpZCB3cml0ZXJzIGFyZTogJ2NvbnNvbGUnIGFuZCAnanNvbicuIChkZWZhdWx0ICJjb25zb2xlIikKICAgICAgLS1tb25nb2RiLWFwcC1uYW1lIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgIE1vbmdvREIgYXBwIG5hbWUKICAgICAgLS1tb25nb2RiLWNvbm5lY3QtdGltZW91dC1tcyBkdXJhdGlvbiAgICAgICAgICAgIE1vbmdvREIgY29ubmVjdCB0aW1lb3V0IG1zIChkZWZhdWx0IDEwcykKICAgICAgLS1tb25nb2RiLXBhc3N3b3JkIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgIE1vbmdvREIgcGFzc3dvcmQKICAgICAgLS1tb25nb2RiLXJlcGxpY2Etc2V0IHN0cmluZyAgICAgICAgICAgICAgICAgICAgIE1vbmdvREIgcmVwbGljYSBzZXQKICAgICAgLS1tb25nb2RiLXNlcnZlci1zZWxlY3Rpb24tdGltZW91dC1tcyBkdXJhdGlvbiAgIE1vbmdvREIgc2VydmVyIHNlbGVjdGlvbiB0aW1lb3V0IG1zIChkZWZhdWx0IDEwcykKICAgICAgLS1tb25nb2RiLXNvY2tldC10aW1lb3V0LW1zIGR1cmF0aW9uICAgICAgICAgICAgIE1vbmdvREIgc29ja2V0IHRpbWVvdXQgbXMgKGRlZmF1bHQgMzBzKQogICAgICAtLW1vbmdvZGItdXJpIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9uZ29EQiBVUkkgKGRlZmF1bHQgIm1vbmdvZGI6Ly9sb2NhbGhvc3Q6MjcwMTciKQogICAgICAtLW1vbmdvZGItdXNlcm5hbWUgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgTW9uZ29EQiB1c2VybmFtZQogICAgICAtLW9hdXRoMi1nb29nbGUtY2xpZW50LWlkIHN0cmluZyAgICAgICAgICAgICAgICAgT0F1dGgyIEdvb2dsZSBjbGllbnQgaWQKICAgICAgLS1vYXV0aDItZ29vZ2xlLWNsaWVudC1zZWNyZXQgc3RyaW5nICAgICAgICAgICAgIE9BdXRoMiBHb29nbGUgY2xpZW50IHNlY3JldAogICAgICAtLW9hdXRoMi1wcm92aWRlcnMgc3RyaW5ncyAgICAgICAgICAgICAgICAgICAgICAgT0F1dGgyIHByb3ZpZGVycwogICAgICAtLW9wZW5hcGktc2NoZW1hIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkFQSSBzY2hlbWEgZmlsZSAoZGVmYXVsdCAiLi9vcGVuYXBpL29wZW5hcGkueWFtbCIpCmBgYAoKIyMjIERvY2tlcgojIyMjIEJ1aWxkCmBgYHNoZWxsCm1ha2UgZG9ja2VyLWJ1aWxkCmBgYAoKIyMjIyBSdW4KYGBgc2hlbGwKbWFrZSBkb2NrZXItcnVuCmBgYAoKIyMjIyBQYXNzaW5nIGFyZ3MKQ0xJOgpgYGBzaGVsbApkb2NrZXIgcnVuIC1wIDEzMjM6MTMyMyAtLXJtIGVjaG8tYm9pbGVycGxhdGUgLS1lbnYtbmFtZSBwcm9kCmBgYAoKRW52aXJvbm1lbnQgdmFyaWFibGVzOgpgYGBzaGVsbApkb2NrZXIgcnVuIC1wIDEzMjM6MTMyMyAtZSAiQVBQX0VOVl9OQU1FPXByb2QiIC0tcm0gZWNoby1ib2lsZXJwbGF0ZQpgYGAK readmeEtag: '"6174ccf8149a1263cc989f9972cc2c3f11fcad87"' readmeLastModified: Sun, 07 Apr 2024 22:53:32 GMT repositoryId: 161701098 description: >- Boilerplate for the Echo framework with authentication, authorization and request/response validation. created: '2018-12-13T22:16:36Z' updated: '2026-01-14T13:58:51Z' language: Go archived: true stars: 48 watchers: 2 forks: 15 owner: alexferl logo: https://avatars.githubusercontent.com/u/3533424?v=4 license: MIT repoEtag: '"b91e3b9a5bcbd3d1477758e9adeed89799942f3b78401b3afb1f42d1f6c4699c"' repoLastModified: Wed, 14 Jan 2026 13:58:51 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/atlassian/oas3-chow-chow v3: true repositoryMetadata: base64Readme: >- IyBvYXMzLWNob3ctY2hvdwoKPiBSZXF1ZXN0IGFuZCByZXNwb25zZSB2YWxpZGF0b3IgYWdhaW5zdCBPcGVuQVBJIFNwZWNpZmljYXRpb24KClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL2F0bGFzc2lhbi9vYXMzLWNob3ctY2hvdy5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9hdGxhc3NpYW4vb2FzMy1jaG93LWNob3cpClshW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9vYXMzLWNob3ctY2hvdy5zdmc/c3R5bGU9ZmxhdCldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29hczMtY2hvdy1jaG93KQoKIyMgTm90ZXMKCklmIHlvdSBhcmUgbG9va2luZyBmb3IgZnJhbWV3b3JrIHNwZWNpZmljIG1pZGRsZXdhcmUsIHlvdSBtaWdodCB3YW50IHRvIGxvb2sgYXQgZm9sbG93aW5nIGxpYnJhcmllcyB0aGF0IHVzZSBvYXMzLWNob3ctY2hvdyB1bmRlciB0aGUgaG9vZC4KCltrb2Etb2FzM10oaHR0cHM6Ly9naXRodWIuY29tL2F0bGFzc2lhbi9rb2Etb2FzMykKW29wZW5hcGkzLW1pZGRsZXdhcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9uYXVndHVyL29wZW5hcGkzLW1pZGRsZXdhcmUpCgojIyBJbnN0YWxsYXRpb24KTm90ZTogU3RhcnRpbmcgZnJvbSB2ZXJzaW9uIDUsIGl0J3MgdHJhbnNmZXJyZWQgdG8gYmUgdW5kZXIgYEBhdGxhc3NpYW5gIHNjb3BlLgoKYGBgYmFzaAokIHlhcm4gYWRkIEBhdGxhc3NpYW4vb2FzMy1jaG93LWNob3cKJCAjIE9yCiQgbnBtIGkgQGF0bGFzc2lhbi9vYXMzLWNob3ctY2hvdwpgYGAKCiMjIFVzYWdlCgpgYGB0eXBlc2NyaXB0CmltcG9ydCBDaG93Q2hvdyBmcm9tICJAYXRsYXNzaWFuL29hczMtY2hvdy1jaG93IjsKaW1wb3J0ICogYXMgZnMgZnJvbSAiZnMiOwppbXBvcnQgKiBhcyB5YW1sIGZyb20gImpzLXlhbWwiOwoKdmFyIGRvYyA9IHlhbWwuc2FmZUxvYWQoZnMucmVhZEZpbGVTeW5jKCIuL29wZW5hcGkueW1sIiwgInV0ZjgiKSk7CmNvbnN0IGNob3cgPSBDaG93Q2hvdy5jcmVhdGUoZG9jKTsKCi8vIEZvciBVUkw6IC86cGF0aFBhcmFtL2luZm8/YXJyUGFyYW09eCZhcnJQYXJhbT15Jm90aGVyPXoKY2hvdy52YWxpZGF0ZVJlcXVlc3RCeVBhdGgoCiAgLy8gdXJsLnBhdGhuYW1lLAogICIvYm9va3MvaW5mbyIsCiAgIlBPU1QiLCB7CiAgICBwYXRoOiB7IHBhdGhQYXJhbTogImJvb2tzIiB9LAogICAgLy8gcXVlcnk6IHF1ZXJ5c3RyaW5nLnBhcnNlKHVybC5zZWFyY2guc3Vic3RyKDEpKSwKICAgIHF1ZXJ5OiB7IGFyclBhcmFtOiBbIngiLCAieSJdLCBvdGhlcjogInoiIH0sCiAgICAvLyBoZWFkZXI6IHJlcS5oZWFkZXJzLAogICAgaGVhZGVyOiB7ICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIgfSwKICAgIGJvZHk6IHsgYTogMSwgYjogMiB9LAogIH0KKTsKY2hvdy52YWxpZGF0ZVJlc3BvbnNlQnlQYXRoKCIvYm9va3MvaW5mbyIsICJQT1NUIiwgewogIGhlYWRlcjogeyAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL2pzb24iIH0sCiAgYm9keTogewogICAgbmFtZTogImEgbmljZSBib29rIiwKICAgIGF1dGhvcjogIm1lIG1lIG1lIgogIH0KfSk7CmBgYAoKIyMgQ29uZmlnCgpZb3UgY291bGQgb3B0aW9uYWxseSBwcm92aWRlIGNvbmZpZ3MgdG8gdGhlIGNvbnN0cnVjdG9yCmBgYHR5cGVzY3JpcHQKY29uc3QgY2hvdyA9IENob3dDaG93LmNyZWF0ZShkb2MsIHsKICBoZWFkZXJBanZPcHRpb25zOiB7fSwKICBjb29raWVBanZPcHRpb25zOiB7fSwKICBwYXRoQWp2T3B0aW9uczogeyBjb2VyY2VUeXBlczogdHJ1ZSB9LAogIHF1ZXJ5QWp2T3B0aW9uczogeyBjb2VyY2VUeXBlczogJ2FycmF5JyB9LAogIHJlcXVlc3RCb2R5QWp2T3B0aW9uczoge30sCiAgcmVzcG9uc2VCb2R5QWp2T3B0aW9uczoge30sCn0pOwpgYGAKCiogKipoZWFkZXJBanZPcHRpb25zKio6IEFqdiBvcHRpb25zIHRoYXQgcGFzcyB0byBoZWFkZXIgYWp2IGluc3RhbmNlCiogKipjb29raWVBanZPcHRpb25zKio6IEFqdiBvcHRpb25zIHRoYXQgcGFzcyB0byBjb29raWUgYWp2IGluc3RhbmNlCiogKipwYXRoQWp2T3B0aW9ucyoqOiBBanYgb3B0aW9ucyB0aGF0IHBhc3MgdG8gcGF0aCBhanYgaW5zdGFuY2UsIGRlZmF1bHQgYHsgY29lcmNlVHlwZXM6IHRydWUgfWAKKiAqKnF1ZXJ5QWp2T3B0aW9ucyoqOiBBanYgb3B0aW9ucyB0aGF0IHBhc3MgdG8gcXVlcnkgYWp2IGluc3RhbmNlLCBkZWZhdWx0IGB7IGNvZXJjZVR5cGVzOiAnYXJyYXknIH1gCiogKipyZXF1ZXN0Qm9keUFqdk9wdGlvbnMqKjogQWp2IG9wdGlvbnMgdGhhdCBwYXNzIHRvIHJlcXVlc3QgYm9keSBhanYgaW5zdGFuY2UKKiAqKnJlc3BvbnNlQm9keUFqdk9wdGlvbnMqKjogQWp2IG9wdGlvbnMgdGhhdCBwYXNzIHRvIHJlc3BvbnNlIGJvZHkgYWp2IGluc3RhbmNlCgojIyBDb250cmlidXRvcnMKClB1bGwgcmVxdWVzdHMsIGlzc3VlcyBhbmQgY29tbWVudHMgd2VsY29tZS4gRm9yIHB1bGwgcmVxdWVzdHM6CgoqIEFkZCB0ZXN0cyBmb3IgbmV3IGZlYXR1cmVzIGFuZCBidWcgZml4ZXMKKiBGb2xsb3cgdGhlIGV4aXN0aW5nIHN0eWxlCiogU2VwYXJhdGUgdW5yZWxhdGVkIGNoYW5nZXMgaW50byBtdWx0aXBsZSBwdWxsIHJlcXVlc3RzCiogU2VlIHRoZSBleGlzdGluZyBpc3N1ZXMgZm9yIHRoaW5ncyB0byBzdGFydCBjb250cmlidXRpbmcuCgpGb3IgYmlnZ2VyIGNoYW5nZXMsIG1ha2Ugc3VyZSB5b3Ugc3RhcnQgYSBkaXNjdXNzaW9uIGZpcnN0IGJ5IGNyZWF0aW5nIGFuIGlzc3VlIGFuZCBleHBsYWluaW5nIHRoZSBpbnRlbmRlZCBjaGFuZ2UuCgpBdGxhc3NpYW4gcmVxdWlyZXMgY29udHJpYnV0b3JzIHRvIHNpZ24gYSBDb250cmlidXRvciBMaWNlbnNlIEFncmVlbWVudCwga25vd24gYXMgYSBDTEEuIFRoaXMgc2VydmVzIGFzIGEgcmVjb3JkIHN0YXRpbmcgdGhhdCB0aGUgY29udHJpYnV0b3IgaXMgZW50aXRsZWQgdG8gY29udHJpYnV0ZSB0aGUgY29kZS9kb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9uIHRvIHRoZSBwcm9qZWN0IGFuZCBpcyB3aWxsaW5nIHRvIGhhdmUgaXQgdXNlZCBpbiBkaXN0cmlidXRpb25zIGFuZCBkZXJpdmF0aXZlIHdvcmtzIChvciBpcyB3aWxsaW5nIHRvIHRyYW5zZmVyIG93bmVyc2hpcCkuCgpQcmlvciB0byBhY2NlcHRpbmcgeW91ciBjb250cmlidXRpb25zIHdlIGFzayB0aGF0IHlvdSBwbGVhc2UgZm9sbG93IHRoZSBhcHByb3ByaWF0ZSBsaW5rIGJlbG93IHRvIGRpZ2l0YWxseSBzaWduIHRoZSBDTEEuIFRoZSBDb3Jwb3JhdGUgQ0xBIGlzIGZvciB0aG9zZSB3aG8gYXJlIGNvbnRyaWJ1dGluZyBhcyBhIG1lbWJlciBvZiBhbiBvcmdhbml6YXRpb24gYW5kIHRoZSBpbmRpdmlkdWFsIENMQSBpcyBmb3IgdGhvc2UgY29udHJpYnV0aW5nIGFzIGFuIGluZGl2aWR1YWwuCgoqIFtDTEEgZm9yIGNvcnBvcmF0ZSBjb250cmlidXRvcnNdKGh0dHBzOi8vbmEyLmRvY3VzaWduLm5ldC9NZW1iZXIvUG93ZXJGb3JtU2lnbmluZy5hc3B4P1Bvd2VyRm9ybUlkPWUxYzE3YzY2LWNhNGQtNGFhYi1hOTUzLTJjMjMxYWY0YTIwYikKKiBbQ0xBIGZvciBpbmRpdmlkdWFsc10oaHR0cHM6Ly9uYTIuZG9jdXNpZ24ubmV0L01lbWJlci9Qb3dlckZvcm1TaWduaW5nLmFzcHg/UG93ZXJGb3JtSWQ9M2Y5NGZiZGMtMmZiZS00NmFjLWIxNGMtNWQxNTI3MDBhZTVkKQo= readmeEtag: '"fbe104e559edcaec87bb5d1b87b2a92b715efe59"' readmeLastModified: Mon, 22 Sep 2025 01:28:24 GMT repositoryId: 122282653 description: Request and response validator against OpenAPI Specification 3 created: '2018-02-21T02:16:51Z' updated: '2025-09-22T01:28:28Z' language: TypeScript archived: false stars: 44 watchers: 1 forks: 24 owner: atlassian logo: https://avatars.githubusercontent.com/u/168166?v=4 license: NOASSERTION repoEtag: '"fd323215b2ab8033ba934188e7107c11056ee989799a9fb236bdfff54e04465b"' repoLastModified: Mon, 22 Sep 2025 01:28:28 GMT foundInMaster: true id: 70270b46839e1466d6a425a8da6ded65 - source: openapi3 tags repository: https://github.com/rpstreef/openapi-tf-example v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIHdpdGggQVdTIEFQSSBHYXRld2F5LCBMYW1iZGEsIENvZ25pdG8sIFNOUyBhbmQgQ2xvdWRXYXRjaCBsb2dzCgpUaGlzIHJlcG8gb25seSBkZXBsb3lzIHRoZSBpbmZyYXN0cnVjdHVyZSB2aWEgVGVycmFmb3JtLiBUaGUgc291cmNlIGNvZGUsIFt0aGlzXShodHRwczovL2dpdGh1Yi5jb20vcnBzdHJlZWYvb3BlbmFwaS1ub2RlLWV4YW1wbGUpIHJlcG8sIHdpbGwgYmUgZGVwbG95ZWQgYXV0b21hdGljYWxseSB2aWEgQVdTIENvZGVQaXBlbGluZS4gQnkgZGVmYXVsdCwgaXQncyBjb25maWd1cmVkIHRvIGF1dG9tYXRpY2FsbHkgZGVwbG95IGF0IGV2ZXJ5IHB1c2ggdG8gdGhlIG1hc3RlciBicmFuY2guCgpDaGVjayB0aGUgY29tcGFuaW9uIGFydGljbGVzIHNlcmllcyAnX09wZW5BUElfJyBvbiBbZGV2LnRvXShodHRwczovL2Rldi50by9yb2xmc3RyZWVma2Vyay9vcGVuYXBpLXdpdGgtdGVycmFmb3JtLW9uLWF3cy1hcGktZ2F0ZXdheS0xN2plKS4KCiMgR2V0IHN0YXJ0ZWQKCiMjIFRoZSBlc3NlbnRpYWxzCgotIERvd25sb2FkIFRlcnJhZm9ybSB2MC4xMi54IFtoZXJlXShodHRwczovL3d3dy50ZXJyYWZvcm0uaW8vZG93bmxvYWRzLmh0bWwpCi0gWW91IHdpbGwgbmVlZCBOb2RlIHYxMi54IGZyb20gW2hlcmVdKGh0dHBzOi8vbm9kZWpzLm9yZy9lbi9kb3dubG9hZC8pCi0gR2l0LCB0byBjbG9uZSB0aGlzIFJlcG8sIGZyb20gW2hlcmVdKGh0dHBzOi8vZ2l0LXNjbS5jb20vZG93bmxvYWRzKQotIENyZWF0ZSBhIGZyZWUgQVdTIGFjY291bnQgKHJlcXVpcmVzIGNyZWRpdCBjYXJkKSBbaGVyZV0oaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS8pCi0gRmluYWxseSwgZG93bmxvYWQgdGhlIFtBV1MgQ0xJIHRvb2xdKGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vY2xpLykgCi0gU2V0dXAgeW91ciBBV1MgbG9jYWwgcHJvZmlsZSwgc2VlIFt0aGlzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xpL2xhdGVzdC91c2VyZ3VpZGUvY2xpLWNvbmZpZ3VyZS1wcm9maWxlcy5odG1sKSBndWlkZSBob3cgaXQncyBkb25lLgotIE1hbnVhbGx5IHNldHVwIGFuIEFXUyBTMyBCdWNrZXQgZm9yIFRlcnJhZm9ybSBzdGF0ZSBzdG9yYWdlLgoKIyMgVG8gZ2V0IHRoZSBBUEkgcnVubmluZwpJZiB5b3UgbWVldCBhbGwgdGhlIHByZS1yZXF1aXNpdGVzLCBkbyB0aGUgZm9sbG93aW5nCgotIEluIHlvdXIgQVdTIGRldmVsb3BtZW50IGFjY291bnQgY3JlYXRlIHRoZSBTMyBidWNrZXQgZm9yIHlvdXIgVGVycmFmb3JtIHN0YXRlIGZpbGVzLgogIC0gT3B0aW9uYWxseSwgZW5jcnlwdCB0aGUgUzMgYnVja2V0IGFuZCBlbmFibGUgdmVyc2lvbmluZyBzdWNoIHRoYXQgeW91IGNhbiBkbyBhIHJvbGxiYWNrLgotIGBgYGdpdCBjbG9uZWBgYCB0aGlzIHJlcG8uCi0gQ2hhbmdlIHlvdXIgQVdTIGNyZWRlbnRpYWxzIHByb2ZpbGUgbmFtZSBpbiB0aGVzZSBmaWxlczogCiAgLSBgYGAuL2Vudi9kZXYvcmVtb3RlLWJhY2tlbmQudGZgYGAKICAtIGBgYC4vZW52L2Rldi9kZXYudGZ2YXJzYGBgCi0gUnVuIGBgYCBucG0gaW5zdGFsbCBgYGAgYW5kIHRoZW4gZXhlY3V0ZSBgYGAgbnBtIHJ1biBkZXYtaW5pdCBgYGAsIHRoaXMgd2lsbDoKICAtIEluaXRpYWxpemUgdGhlIFRlcnJhZm9ybSBwcm9qZWN0IGZvciB0aGUgJ2RldicgZW52aXJvbm1lbnQsIGFuZCBzeW5jaHJvbml6ZSB0aGUgc3RhdGUgd2l0aCB0aGUgY2xvdWQgc3RvcmVkIC50ZnN0YXRlIGZpbGUuCiAgLSBJZiB5b3UgcnVuIGl0IGEgc2Vjb25kIHRpbWUsIGl0IHdpbGwgZmFpbCBvbiB0aGUgd29ya3NwYWNlIGNyZWF0aW9uLCB0aGlzIGlzIG5vdCBhbiBpc3N1ZSAodGhlIHdvcmtzcGFjZSBhbHJlYWR5IGV4aXN0cykKLSBSdW4gYGBgbnBtIHJ1biBkZXYtaW5mcmFgYGAgdG8gcHJlcGFyZSB0aGUgZGVwbG95bWVudCB0byB5b3VyIEFXUyBhY2NvdW50LgogIC0gTm90ZTogdGhpcyBbcmVwb10oaHR0cHM6Ly9naXRodWIuY29tL3Jwc3RyZWVmL29wZW5hcGktbm9kZS1leGFtcGxlKSBjb250YWlucyB0aGUgbm9kZSBzb3VyY2UgY29kZSB0aGF0IHRoZSBDb2RlUGlwZWxpbmUgd2lsbCBkZXBsb3kgdG8gdGhlIEFXUyBMYW1iZGEgYW5kIExhbWJkYS1sYXllci4KICAtIENvbmZpcm0gd2l0aCBgYGB5ZXNgYGAgdG8gZGVwbG95LCBhbnl0aGluZyBlbHNlIHdpbGwgY2FuY2VsIHRoZSBkZXBsb3ltZW50CgpTZWUgbXkgZnVsbCBndWlkZSBvbiBkZXYudG8gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBwcm9qZWN0Cgpwcy4gSSdtIGF3YXJlIHRoZSBndWxwIGZpbGUgZG9lc24ndCBleGl0IG5pY2VseSwgaSdtIG5vdCBhbiBleHBlcnQuIEFueSBwdWxsIHJlcXVlc3RzIG9yIGlzc3VlIHJlcG9ydHMgd2l0aCBwb2ludGVycyBpcyBkZWZpbml0ZWx5IGFwcHJlY2lhdGVkLgoKIyMgVlMgQ29kZSBwbHVnaW5zIHVzZWQKCi0gW1N0YW5kYXJkSlNdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1jaGVueHNhbi52c2NvZGUtc3RhbmRhcmRqcykKLSBbVGVycmFmb3JtXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9bWF1dmUudGVycmFmb3JtKQotIFtPcGVuQVBJIEVkaXRvcl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPTQyQ3J1bmNoLnZzY29kZS1vcGVuYXBpKQotIFtPcGVuQVBJIERlc2lnbmVyXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9cGhpbG9zb3dhZmZsZS5vcGVuYXBpLWRlc2lnbmVyKQoKIyMgUnVubmluZyBjb3N0cwoKVGhlcmUgYXJlIG5vIGNvc3RzIGFzc29jaWF0ZWQgd2l0aCBkZXBsb3lpbmcgYW55IG9mIHRoaXMgb24gQVdTLCB0aGVyZSBpcyBbRnJlZSBUaWVyXShodHRwczovL2F3cy5hbWF6b24uY29tL2ZyZWUpIGNvdmVyYWdlIGZvciBsaW1pdGVkIGZyZWUgdXNlLgoKVGhlIGZvbGxvd2luZyBzZXJ2aWNlcyBhcmUgZGVwbG95ZWQgd2l0aCBUZXJyYWZvcm07Ci0gQVdTIENvZ25pdG8KLSBBV1MgQVBJIEdhdGV3YXkKLSBBV1MgTGFtYmRhICYgTGFtYmRhIExheWVyCi0gQVdTIElBTQotIChBZGRlZCkgQ2xvdWRXYXRjaCBBbGFybXMsIGNvc3RzIHdpbGwgYmUgaW5jdXJyZWQgZm9yIGVuYWJsaW5nIERldGFpbGVkIE1vbml0b3JpbmcgZm9yIEFQSSBHYXRld2F5ICghKQotIChBZGRlZCkgQVdTIENvZGVQaXBlbGluZSwgYW5kIENvZGVCdWlsZCB3aXRoIEdpdGh1YiBhcyBzb3VyY2UgcmVwb3NpdG9yeS4gVGhlcmUncyBhIGZyZWUgdGllciBmb3I6CiAgLSBbQ29kZUJ1aWxkXShodHRwczovL2F3cy5hbWF6b24uY29tL2NvZGVidWlsZC9wcmljaW5nLyksIDEwMCBidWlsZCBtaW51dGVzIG9mIGBgYGJ1aWxkLmdlbmVyYWwxLnNtYWxsYGBgIHBlciBtb250aC4KICAtIFtBV1MgQ29kZVBpcGVsaW5lXShodHRwczovL2F3cy5hbWF6b24uY29tL2NvZGVwaXBlbGluZS9wcmljaW5nLyk6IDEgZnJlZSBwaXBlbGluZSBhY3RpdmUgcGVyIG1vbnRoLiA= readmeEtag: '"e1dbe8e92d6a3be3e4dc1937bec8d38439974d7c"' readmeLastModified: Mon, 23 Nov 2020 07:58:54 GMT repositoryId: 236130695 description: >- Example of how you can use OpenAPI with AWS API Gateway, Also includes integrations with AWSLambda, AWS Cognito, AWS SNS and CloudWatch logs created: '2020-01-25T05:40:11Z' updated: '2025-10-15T14:03:30Z' language: HCL archived: false stars: 44 watchers: 3 forks: 19 owner: rpstreef logo: https://avatars.githubusercontent.com/u/15830262?v=4 license: Apache-2.0 repoEtag: '"72c39d98af809f185e0686403730bf94c73369f33e5d7376cfbd0ace20ce35ec"' repoLastModified: Wed, 15 Oct 2025 14:03:30 GMT foundInMaster: true category: - Description Validators - Server Implementations id: d88e9e79cc86cd11423f309b56d3accc - source: openapi3 tags repository: https://github.com/benirave/aspnetcore.scalar v3: true id: 2dbfc9923a0675a6a8269f3d0af9b9da repositoryMetadata: base64Readme: >- WyFbTnVnZXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvdi9hc3BuZXRjb3JlLnNjYWxhcildKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9Bc3BOZXRDb3JlLlNjYWxhcikKCiMgLk5FVCBTY2FsYXIgQVBJIFJlZmVyZW5jZQoKQWRkIHRoZSBbU2NhbGFyIEFQSSBSZWZlcmVuY2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvc2NhbGFyP3RhYiUyNTNEcmVhZG1lLW92LWZpbGUjd2l0aC1uZXh0anMpIHRvIGFueSBvZiB5b3VyIC5ORVQgYXBwbGljYXRpb25zLgoKPiBkb3RuZXQgYWRkIHBhY2thZ2UgQXNwTmV0Q29yZS5TY2FsYXIgLS12ZXJzaW9uIDEuMi4wCgojIyBVc2FnZQoKVG8gaW5jb3Jwb3JhdGUgdGhlIFNjYWxhciBVSSwgc2ltcGx5IGV4cG9zZSBhbiBPcGVuQVBJIHNjaGVtYSBieSB1c2luZyBbU3dhc2hidWNrbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21haW5kcml2ZW5kZXYvU3dhc2hidWNrbGUuV2ViQXBpKSBvciBbTlN3YWddKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcpLCBhbmQgdGhlbiBpbnZva2UgdGhlICoqYXBwLlVzZVNjYWxhcigpKiouCgpDb2RlIGV4YW1wbGUuOgoKYGBgY3NoYXJwCnVzaW5nIEFzcE5ldENvcmUuU2NhbGFyOwoKdmFyIGJ1aWxkZXIgPSBXZWJBcHBsaWNhdGlvbi5DcmVhdGVCdWlsZGVyKGFyZ3MpOwoKLy8gQWRkIHN3YWdnZXIgc2NoZW1hIGdlbmVyYXRvcgpidWlsZGVyLlNlcnZpY2VzLkFkZEVuZHBvaW50c0FwaUV4cGxvcmVyKCk7CmJ1aWxkZXIuU2VydmljZXMuQWRkU3dhZ2dlckdlbigpOwoKdmFyIGFwcCA9IGJ1aWxkZXIuQnVpbGQoKTsKCi8vIEFkZCBzd2FnZ2VyIG1pZGRsZXdhcmUKYXBwLlVzZVN3YWdnZXIoKTsKCi8vIEFkZCBTY2FsYXIgVUkKYXBwLlVzZVNjYWxhcihvcHRpb25zID0+CnsKICAgIG9wdGlvbnMuVXNlVGhlbWUoVGhlbWUuU29sYXJpemVkKTsKfSk7CgpgYGAKCkV4cGxvcmUgYSB3b3JraW5nIGV4YW1wbGUgW2hlcmVdKC4vZXhhbXBsZS8pLgoKIyMjIEN1c3RvbWl6YXRpb24gT3B0aW9ucwoKYEluamVjdFN0eWxlc2hlZXRgCgotICoqRGVzY3JpcHRpb24qKjogSW5qZWN0cyBhIHN0eWxlc2hlZXQgbGluayBpbnRvIHRoZSBoZWFkIGNvbnRlbnQgb2YgdGhlIFNjYWxhck9wdGlvbnMuCi0gKipQYXJhbWV0ZXJzKio6CiAgLSBgcGF0aGAgKHN0cmluZyk6IFRoZSBwYXRoIHRvIHRoZSBzdHlsZXNoZWV0IGZpbGUuCiAgLSBgbWVkaWFgIChzdHJpbmcsIG9wdGlvbmFsKTogVGhlIG1lZGlhIHR5cGUgZm9yIHdoaWNoIHRoZSBzdHlsZXNoZWV0IGlzIGludGVuZGVkLiBEZWZhdWx0IHZhbHVlIGlzICJzY3JlZW4iLgoKYFVzZVNwZWNVcmxgCgotICoqRGVzY3JpcHRpb24qKjogU2V0cyB0aGUgVVJMIGZvciB0aGUgc3BlY2lmaWNhdGlvbiBwYWdlLgotICoqUGFyYW1ldGVycyoqOgogIC0gYHVybGAgKHN0cmluZyk6IFRoZSBVUkwgb2YgdGhlIHNwZWNpZmljYXRpb24gcGFnZS4KCmBVc2VDZG5gCgotICoqRGVzY3JpcHRpb24qKjogU2V0cyB0aGUgQ0ROIFVSTCBmb3IgdGhlIGFzc2V0LgotICoqRGVmYXVsdCoqOiBodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BzY2FsYXIvYXBpLXJlZmVyZW5jZQotICoqUGFyYW1ldGVycyoqOgogICAgLSBgdXJsYCAoc3RyaW5nKTogVGhlIFVSTCBvZiB0aGUgY2RuIGFzc2V0LgoKYFVzZVByb3h5YAoKLSAqKkRlc2NyaXB0aW9uKio6IFNldHMgdGhlIFByb3h5IFVSTCB0byB1c2UuCi0gKipQYXJhbWV0ZXJzKio6CiAgICAtIGB1cmxgIChzdHJpbmcpOiBUaGUgVVJMIG9mIHRoZSBwcm94eSBzZXJ2ZXIuCgoKYFVzZUxheW91dGAKCi0gKipEZXNjcmlwdGlvbioqOiBTZXRzIHRoZSBsYXlvdXQgZm9yIHRoZSBTY2FsYXJPcHRpb25zLiBZb3UgY2FuIHVzZSAnTW9kZXJuJyBhbmQgQ2xhc3NpYy4KLSAqKkRlZmF1bHQqKjogTW9kZXJuCi0gKipQYXJhbWV0ZXJzKio6CiAgLSBgbGF5b3V0YCAoVGhlbWUpOiBBbiBlbnVtIHJlcHJlc2VudGluZyB0aGUgbGF5b3V0IHRvIHVzZS4KCmBVc2VUaGVtZWAKCi0gKipEZXNjcmlwdGlvbioqOiBTZXRzIHRoZSB0aGVtZSBmb3IgdGhlIFNjYWxhck9wdGlvbnMuCi0gKipQYXJhbWV0ZXJzKio6CiAgLSBgdGhlbWVgIChUaGVtZSk6IEFuIGVudW0gcmVwcmVzZW50aW5nIHRoZSB0aGVtZSB0byB1c2UuCgpgSGlkZVNpZGViYXJgCgotICoqRGVzY3JpcHRpb24qKjogSGlkZXMgdGhlIHNpZGViYXIgaW4gdGhlIFNjYWxhck9wdGlvbnMuCi0gKipQYXJhbWV0ZXJzKio6IE5vbmUuCgpgVXNlU2VhcmNoQXNIb3RLZXlgCgotICoqRGVzY3JpcHRpb24qKjogU2V0cyB0aGUgc2VhcmNoIGhvdGtleSBmb3IgdGhlIFNjYWxhck9wdGlvbnMuCi0gKipQYXJhbWV0ZXJzKio6CiAgLSBgaG90S2V5YCAoY2hhcik6IFRoZSBjaGFyYWN0ZXIgcmVwcmVzZW50aW5nIHRoZSBob3RrZXkgZm9yIHNlYXJjaC4KCmBBZGRBZGRpdGlvbmFsSXRlbWAKCi0gKipEZXNjcmlwdGlvbioqOiBBZGRzIGFuIGFkZGl0aW9uYWwgaXRlbSB0byB0aGUgU2NhbGFyT3B0aW9ucyBjb25maWd1cmF0aW9uLgotICoqUGFyYW1ldGVycyoqOgogIC0gYGtleWAgKHN0cmluZyk6IFRoZSBrZXkgb2YgdGhlIGFkZGl0aW9uYWwgaXRlbS4KICAtIGB2YWx1ZWAgKG9iamVjdCk6IFRoZSB2YWx1ZSBvZiB0aGUgYWRkaXRpb25hbCBpdGVtLgoKVGhlc2UgY3VzdG9taXphdGlvbiBvcHRpb25zIHByb3ZpZGUgZGV2ZWxvcGVycyB3aXRoIGZsZXhpYmlsaXR5IGluIGNvbmZpZ3VyaW5nIHRoZSBTY2FsYXIgbGlicmFyeSB0byBzdWl0IHRoZWlyIHNwZWNpZmljIG5lZWRzIGFuZCBwcmVmZXJlbmNlcy4gRGV2ZWxvcGVycyBjYW4gdXRpbGl6ZSB0aGVzZSBvcHRpb25zIHRvIGVuaGFuY2UgdGhlIGZ1bmN0aW9uYWxpdHkgYW5kIGFwcGVhcmFuY2Ugb2YgdGhlaXIgYXBwbGljYXRpb25zIHNlYW1sZXNzbHkuCgojIyBDb21wYXRpYmlsaXR5Cgp8IEFzcE5ldENvcmUuU2NhbGFyIHwgU2NhbGFyIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLTp8CnwgMS4wLjAgICAgICAgICAgICAgfCAxLjE3LjEyIHwKfCAxLjEuMCAgICAgICAgICAgICB8IDEuMTkuMiB8CnwgMS4xLjEgICAgICAgICAgICAgfCAxLjIyLjQ4IHwKfCAxLjEuMiAgICAgICAgICAgICB8IDEuMjMuNSB8CnwgMS4xLjMgICAgICAgICAgICAgfCAxLjI0LjcyIHwKfCAxLjEuNCAgICAgICAgICAgICB8IDEuMjQuNzUgfAp8IDEuMS41ICAgICAgICAgICAgIHwgMS4yNS42IHwKfCAxLjEuNiAgICAgICAgICAgICB8IDEuMjUuOSB8CnwgMS4xLjcgICAgICAgICAgICAgfCAxLjI1LjE3IHwKfCAxLjEuOCAgICAgICAgICAgICB8IDEuMjUuNjMgfAp8IDEuMi4wICAgICAgICAgICAgIHwgMS4zNC42IHwKClRoaXMgcHJvamVjdCB3YXMgYmFzZWQgb24gW1N3YXNoYnVja2xlIFJlZG9jXShodHRwczovL2dpdGh1Yi5jb20vZG9tYWluZHJpdmVuZGV2L1N3YXNoYnVja2xlLkFzcE5ldENvcmUvdHJlZS9tYXN0ZXIvc3JjL1N3YXNoYnVja2xlLkFzcE5ldENvcmUuUmVEb2MpLgo= readmeEtag: '"f0e2fda3d3a514db0effefa8a13372590fe479b8"' readmeLastModified: Mon, 01 Sep 2025 19:37:00 GMT repositoryId: 720201668 description: Scalar API reference from Swagger/OpenAPI files for .NET🔥 created: '2023-11-17T20:04:30Z' updated: '2025-10-10T01:39:16Z' language: C# archived: false stars: 49 watchers: 1 forks: 3 owner: benirave logo: https://avatars.githubusercontent.com/u/23312114?v=4 license: MIT repoEtag: '"6845b5c024ad62cff267e92feb30d38ec4f2617987a97d8c4638b4e0ef95b22b"' repoLastModified: Fri, 10 Oct 2025 01:39:16 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/konfig-sdks/openapi-examples v3: true id: b6d4b2fc8b2568e91841ef29462ff558 repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KCiFbQmFubmVyXSguL2Jhbm5lci5wbmcpCgpbIVtMaWNlbnNlOiBNSVRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGljZW5zZS1NSVQteWVsbG93LnN2ZyldKGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKQoKPC9kaXY+Cg== readmeEtag: '"732401a7dda3a77bdf43a476c7662df9902220bd"' readmeLastModified: Sun, 11 Aug 2024 00:27:02 GMT repositoryId: 748795976 description: >- The highest quality collection of up-to-date OpenAPI specifications for public APIs on the internet. This dataset also includes descriptions, categories, uptime metrics, and media assets for every API. created: '2024-01-26T19:30:01Z' updated: '2026-01-22T15:46:38Z' language: null archived: false stars: 65 watchers: 1 forks: 9 owner: konfig-sdks logo: https://avatars.githubusercontent.com/u/156027835?v=4 repoEtag: '"bfddbb481a0ae2cd1631317711e171d93421bd02066debfd607a6c64d9800e5a"' repoLastModified: Thu, 22 Jan 2026 15:46:38 GMT category: - Parsers - Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/jaredce/serverless-openapi-documenter v3: true id: 73f90a4d2a5d00e00db21917b3fb11e5 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIEdlbmVyYXRvciBmb3Igc2VydmVybGVzcwoKPHA+CiAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc2VydmVybGVzcy5jb20iPgogICAgPGltZyBzcmM9Imh0dHA6Ly9wdWJsaWMuc2VydmVybGVzcy5jb20vYmFkZ2VzL3YzLnN2ZyI+CiAgPC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3NlcnZlcmxlc3Mtb3BlbmFwaS1kb2N1bWVudGVyIj4KICAgIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L3NlcnZlcmxlc3Mtb3BlbmFwaS1kb2N1bWVudGVyLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSI+CiAgPC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9KYXJlZENFL3NlcnZlcmxlc3Mtb3BlbmFwaS1kb2N1bWVudGVyL2FjdGlvbnMvd29ya2Zsb3dzL25vZGUueW1sIj4KICAgIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vSmFyZWRDRS9zZXJ2ZXJsZXNzLW9wZW5hcGktZG9jdW1lbnRlci9hY3Rpb25zL3dvcmtmbG93cy9ub2RlLnltbC9iYWRnZS5zdmciPgogIDwvYT4KPC9wPgoKVGhpcyB3aWxsIGdlbmVyYXRlIGFuIE9wZW5BUEkgVjMgKHVwIHRvIHYzLjAuNCkgZmlsZSBmb3IgeW91IGZyb20geW91ciBzZXJ2ZXJsZXNzIGZpbGUuIEl0IGNhbiBvcHRpb25hbGx5IGdlbmVyYXRlIGEgW1Bvc3RtYW4gQ29sbGVjdGlvbiBWMl0oaHR0cHM6Ly9naXRodWIuY29tL3Bvc3RtYW5sYWJzL29wZW5hcGktdG8tcG9zdG1hbikgb3IgKGFzIG9mIDAuMC4xMjApIFtCcnVubyBDb2xsZWN0aW9uXShodHRwczovL2RvY3MudXNlYnJ1bm8uY29tLykgZnJvbSB0aGUgT3BlbkFQSSBmaWxlLiBUaGlzIGN1cnJlbnRseSB3b3JrcyBmb3IgYGh0dHBgIGFuZCBgaHR0cEFwaWAgY29uZmlndXJhdGlvbnMuCgpPcmlnaW5hbGx5IGJhc2VkIG9mZiBvZjogaHR0cHM6Ly9naXRodWIuY29tL3RlbWFuZG8vc2VydmVybGVzcy1vcGVuYXBpLWRvY3VtZW50YXRpb24KCiMjIEluc3RhbGwKClRoaXMgcGx1Z2luIHdvcmtzIGZvciBTZXJ2ZXJsZXNzICgyLngsIDMueCBhbmQgNC54KSBhbmQgb25seSBzdXBwb3J0cyBub2RlLmpzIDIwIGFuZCB1cC4KClRvIGFkZCB0aGlzIHBsdWdpbiB0byB5b3VyIHBhY2thZ2UuanNvbjoKCioqVXNpbmcgbnBtOioqCgpgYGBiYXNoCm5wbSBpbnN0YWxsIC0tc2F2ZS1kZXYgc2VydmVybGVzcy1vcGVuYXBpLWRvY3VtZW50ZXIKYGBgCgpOZXh0IHlvdSBuZWVkIHRvIGFkZCB0aGUgcGx1Z2luIHRvIHRoZSBgcGx1Z2luc2Agc2VjdGlvbiBvZiB5b3VyIGBzZXJ2ZXJsZXNzLnltbGAgZmlsZS4KCmBgYHltbApwbHVnaW5zOgogIC0gc2VydmVybGVzcy1vcGVuYXBpLWRvY3VtZW50ZXIKYGBgCgo+IE5vdGU6IEFkZCB0aGlzIHBsdWdpbiBfYWZ0ZXJfIGBzZXJ2ZXJsZXNzLW9mZmxpbmVgIHRvIHByZXZlbnQgaXNzdWVzIHdpdGggYFN0cmluZy5yZXBsYWNlQWxsYCBiZWluZyBvdmVycmlkZGVuIGluY29ycmVjdGx5LgoKIyMgQWRkaW5nIGRvY3VtZW50YXRpb24gdG8gc2VydmVybGVzcwoKVG8gUnVuOiBgc2VydmVybGVzcyBvcGVuYXBpIGdlbmVyYXRlIC1vIG9wZW5hcGkuanNvbiAtZiBqc29uIC1hIDMuMC40IC1wIHBvc3RtYW4uanNvbmAKCk9wdGlvbnM6CgpgYGAKLS1vdXRwdXQgICAgICAgICAgICAgICAgLW8gIFdoYXQgZmlsZW5hbWUgdGhlIE9wZW5BUEkgRGVzY3JpcHRpb24gc2hvdWxkIG91dHB1dCB1bmRlci4gRGVmYXVsdDogb3BlbmFwaS5qc29uCi0tZm9ybWF0ICAgICAgICAgICAgICAgIC1mICBXaGV0aGVyIHRvIG91dHB1dCB0aGUgT3BlbkFQSSBEZXNjcmlwdGlvbiBhcyBqc29uIG9yIHlhbWwuIERlZmF1bHQ6IGpzb24KLS1pbmRlbnQgICAgICAgICAgICAgICAgLWkgIEZpbGUgaW5kZW50YXRpb24gaW4gc3BhY2VzLiBEZWZhdWx0OiAyCi0tb3BlbkFwaVZlcnNpb24gICAgICAgIC1hICBPcGVuQVBJIHZlcnNpb24gdG8gZ2VuZXJhdGUgZm9yLiBEZWZhdWx0OiAzLjAuMAotLXBvc3RtYW5Db2xsZWN0aW9uICAgICAtcCAgV2lsbCBnZW5lcmF0ZSBhIHBvc3RtYW4gY29sbGVjdGlvbiAoZnJvbSB0aGUgZ2VuZXJhdGVkIE9wZW5BUEkgRGVzY3JpcHRpb24pLCBpbiBqc29uIG9ubHksIGlmIHBhc3NlZCBpbi4gRGVmYXVsdDogcG9zdG1hbi5qc29uCi0tYnJ1bm9Db2xsZWN0aW9uICAgICAgIC1iICBXaWxsIGdlbmVyYXRlIGEgQnJ1bm8gY29sbGVjdGlvbiAoZnJvbSB0aGUgZ2VuZXJhdGVkIE9wZW5BUEkgRGVzY3JpcHRpb24pLCBpbiBqc29uIG9ubHksIGlmIHBhc3NlZCBpbi4gRGVmYXVsdDogYnJ1bm8uanNvbgotLXZhbGlkYXRpb25XYXJuICAgICAgICAtdyAgV2FybiBhYm91dCB2YWxpZGF0aW9uIGVycm9ycyBvbmx5LiAgV2lsbCB3cml0ZSB0aGUgT3BlbkFQSSBmaWxlIGlmIGdlbmVyYXRpb24gaXMgc3VjY2Vzc2Z1bC4gIERlZmF1bHQ6IGZhbHNlCmBgYAoKIyMjIFJFQURNRSBIaWdobGlnaHRlZCBSZWFkaW5nCgojIyMjIFNlY3VyaXR5IERldGFpbHMKCi0gW1NlY3VyaXR5XSgjc2VjdXJpdHlzY2hlbWVzKQotIFtTZWN1cml0eSBvbiBBbGwgT3BlcmF0aW9uc10oI3NlY3VyaXR5LW9uLWVhY2gtb3BlcmF0aW9uKQotIFtTZWN1cml0eSBQZXIgT3BlcmF0aW9uXSgjc2VjdXJpdHkpCgojIyMjIE1vZGVsIERldGFpbHMKCi0gW01vZGVsc10oI21vZGVscykKLSBbTm90ZXMgb24gU2NoZW1hc10oI25vdGVzLW9uLXNjaGVtYXMpCi0gW1JlcXVlc3QgU2NoZW1hIFZhbGlkYXRvcnNdKCNzZXJ2ZXJsZXNzLXJlcXVlc3Qtc2NoZW1hLXZhbGlkYXRvcnMpCgojIyMjIFJlc3BvbnNlIEhlYWRlcnMKCi0gW0NPUlNdKCNjb3JzKQotIFtPV0FTUCBTZWN1cmUgSGVhZGVyc10oI293YXNwKQoKIyMjIyBWYWxpZGF0aW9uCgotIFtWYWxpZGF0aW9uXSgjdmFsaWRhdG9yKQoKIyMjIE9wZW5BUEkgTWFwcGluZwoKfCBPcGVuQVBJIGZpZWxkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTZXJ2ZXJsZXNzIGZpZWxkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IGluZm8udGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBjdXN0b20uZG9jdW1lbnRhdGlvbi50aXRsZWAgT1Igc2VydmljZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBpbmZvLmRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgY3VzdG9tLmRvY3VtZW50YXRpb24uZGVzY3JpcHRpb25gIE9SIGJsYW5rIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgaW5mby52ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGN1c3RvbS5kb2N1bWVudGF0aW9uLnZlcnNpb25gIE9SIHJhbmRvbSB2NCB1dWlkIGlmIG5vdCBwcm92aWRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGluZm8udGVybXNPZlNlcnZpY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBjdXN0b20uZG9jdW1lbnRhdGlvbi50ZXJtc09mU2VydmljZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBpbmZvLmNvbnRhY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjdXN0b20uZG9jdW1lbnRhdGlvbi5jb250YWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgaW5mby5jb250YWN0Lm5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGN1c3RvbS5kb2N1bWVudGF0aW9uLmNvbnRhY3QubmFtZWAgT1IgYmxhbmsgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGluZm8uY29udGFjdC51cmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBjdXN0b20uZG9jdW1lbnRhdGlvbi5jb250YWN0LnVybGAgaWYgcHJvdmlkZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBpbmZvLmNvbnRhY3QueC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgY3VzdG9tLmRvY3VtZW50YXRpb24uY29udGFjdC54LWAgZXh0ZW5kZWQgc3BlY2lmaWNhdGlvbnMgcHJvdmlkZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgaW5mby5saWNlbnNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY3VzdG9tLmRvY3VtZW50YXRpb24ubGljZW5zZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGluZm8ubGljZW5zZS5uYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBjdXN0b20uZG9jdW1lbnRhdGlvbi5saWNlbnNlLm5hbWVgIE9SIGJsYW5rIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBpbmZvLmxpY2Vuc2UudXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgY3VzdG9tLmRvY3VtZW50YXRpb24ubGljZW5zZS51cmxgIGlmIHByb3ZpZGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgaW5mby5saWNlbnNlLngtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGN1c3RvbS5kb2N1bWVudGF0aW9uLmxpY2Vuc2UueC1gIGlmIGV4dGVuZGVkIHNwZWNpZmljYXRpb25zIHByb3ZpZGVkIHByb3ZpZGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGV4dGVybmFsRG9jcy5kZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBjdXN0b20uZG9jdW1lbnRhdGlvbi5leHRlcm5hbERvY3VtZW50YXRpb24uZGVzY3JpcHRpb24gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBleHRlcm5hbERvY3MudXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgY3VzdG9tLmRvY3VtZW50YXRpb24uZXh0ZXJuYWxEb2N1bWVudGF0aW9uLnVybGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgeC10YWdHcm91cHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGN1c3RvbS5kb2N1bWVudGF0aW9uLngtdGFnR3JvdXBzYCBpZiBwcm92aWRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHNlY3VyaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBjdXN0b20uZG9jdW1lbnRhdGlvbi5zZWN1cml0eWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBzZXJ2ZXJzW10uZGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjdXN0b20uZG9jdW1lbnRhdGlvbi5zZXJ2ZXJzLmRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cnwgc2VydmVyc1tdLnVybCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY3VzdG9tLmRvY3VtZW50YXRpb24uc2VydmVycy51cmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHNlcnZlcnNbXS52YXJpYWJsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGN1c3RvbS5kb2N1bWVudGF0aW9uLnNlcnZlcnMudmFyaWFibGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCB0YWdzW10ubmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgY3VzdG9tLmRvY3VtZW50YXRpb24udGFncy5uYW1lYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgdGFnc1tdLmRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGN1c3RvbS5kb2N1bWVudGF0aW9uLnRhZ3MuZGVzY3JpcHRpb25gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHRhZ3NbXS5leHRlcm5hbERvY3MudXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBjdXN0b20uZG9jdW1lbnRhdGlvbi50YWdzLmV4dGVybmFsRG9jdW1lbnRhdGlvbi51cmxgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCB0YWdzW10uZXh0ZXJuYWxEb2NzLmRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgY3VzdG9tLmRvY3VtZW50YXRpb24udGFncy5leHRlcm5hbERvY3VtZW50YXRpb24uZGVzY3JpcHRpb25gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgdGFnc1tdLmV4dGVybmFsRG9jcy54LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGN1c3RvbS5kb2N1bWVudGF0aW9uLnRhZ3MuZXh0ZXJuYWxEb2N1bWVudGF0aW9uLngtYCBpZiBleHRlbmRlZCBzcGVjaWZpY2F0aW9ucyBwcm92aWRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHBhdGhbcGF0aF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9ucy5mdW5jdGlvbnMuZXZlbnRzLltodHRwIE9SIGh0dHBBcGldLnBhdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBwYXRoW3BhdGhdLnNlcnZlcnNbXS5kZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbnMuZnVuY3Rpb25zLnNlcnZlcnMuZGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgcGF0aFtwYXRoXS5zZXJ2ZXJzW10udXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25zLmZ1bmN0aW9ucy5zZXJ2ZXJzLnVybCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHBhdGhbcGF0aF0uW29wZXJhdGlvbl0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9ucy5mdW5jdGlvbnMuW2h0dHAgT1IgaHR0cEFwaV0ubWV0aG9kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBwYXRoW3BhdGhdLltvcGVyYXRpb25dLnN1bW1hcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbnMuZnVuY3Rpb25zLltodHRwIE9SIGh0dHBBcGldLmRvY3VtZW50YXRpb24uc3VtbWFyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgcGF0aFtwYXRoXS5bb3BlcmF0aW9uXS5kZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25zLmZ1bmN0aW9ucy5baHR0cCBPUiBodHRwQXBpXS5kb2N1bWVudGF0aW9uLmRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHBhdGhbcGF0aF0uW29wZXJhdGlvbl0ub3BlcmF0aW9uSWQgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9ucy5mdW5jdGlvbnMuW2h0dHAgT1IgaHR0cEFwaV0uZG9jdW1lbnRhdGlvbi5vcGVyYXRpb25JZCBPUiBmdW5jdGlvbk5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBwYXRoW3BhdGhdLltvcGVyYXRpb25dLmRlcHJlY2F0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbnMuZnVuY3Rpb25zLltodHRwIE9SIGh0dHBBcGldLmRvY3VtZW50YXRpb24uZGVwcmVjYXRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgcGF0aFtwYXRoXS5bb3BlcmF0aW9uXS5leHRlcm5hbERvY3MuZGVzY3JpcHRpb24gICAgICAgICAgIHwgZnVuY3Rpb25zLmZ1bmN0aW9ucy5baHR0cCBPUiBodHRwQXBpXS5kb2N1bWVudGF0aW9uLmV4dGVybmFsRG9jdW1lbnRhdGlvbi5kZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHBhdGhbcGF0aF0uW29wZXJhdGlvbl0uZXh0ZXJuYWxEb2NzLnVybCAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9ucy5mdW5jdGlvbnMuW2h0dHAgT1IgaHR0cEFwaV0uZG9jdW1lbnRhdGlvbi5leHRlcm5hbERvY3VtZW50YXRpb24udXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBwYXRoW3BhdGhdLltvcGVyYXRpb25dLnNlcnZlcnNbXS5kZXNjcmlwdGlvbiAgICAgICAgICAgICAgfCBmdW5jdGlvbnMuZnVuY3Rpb25zLltodHRwIE9SIGh0dHBBcGldLmRvY3VtZW50YXRpb24uc2VydmVycy5kZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgcGF0aFtwYXRoXS5bb3BlcmF0aW9uXS5zZXJ2ZXJzW10udXJsICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25zLmZ1bmN0aW9ucy5baHR0cCBPUiBodHRwQXBpXS5kb2N1bWVudGF0aW9uLnNlcnZlcnMudXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHBhdGhbcGF0aF0uW29wZXJhdGlvbl0uc2VjdXJpdHkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9ucy5mdW5jdGlvbnMuW2h0dHAgT1IgaHR0cEFwaV0uZG9jdW1lbnRhdGlvbi5zZWN1cml0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBwYXRoW3BhdGhdLltvcGVyYXRpb25dLmRlcHJlY2F0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbnMuZnVuY3Rpb25zLltodHRwIE9SIGh0dHBBcGldLmRvY3VtZW50YXRpb24uZGVwcmVjYXRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgcGF0aFtwYXRoXS5bb3BlcmF0aW9uXS5wYXJhbWV0ZXJzICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25zLmZ1bmN0aW9ucy5baHR0cCBPUiBodHRwQXBpXS5kb2N1bWVudGF0aW9uLltwYXRoL3F1ZXJ5L2Nvb2tpZS9oZWFkZXJdUGFyYW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHBhdGhbcGF0aF0uW29wZXJhdGlvbl0ucGFyYW1ldGVycy5uYW1lICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9ucy5mdW5jdGlvbnMuW2h0dHAgT1IgaHR0cEFwaV0uZG9jdW1lbnRhdGlvbi5bcGF0aC9xdWVyeS9jb29raWUvaGVhZGVyXVBhcmFtcy5uYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBwYXRoW3BhdGhdLltvcGVyYXRpb25dLnBhcmFtZXRlcnMuaW4gICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbnMuZnVuY3Rpb25zLltodHRwIE9SIGh0dHBBcGldLmRvY3VtZW50YXRpb24uW3BhdGgvcXVlcnkvY29va2llL2hlYWRlcl1QYXJhbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgcGF0aFtwYXRoXS5bb3BlcmF0aW9uXS5wYXJhbWV0ZXJzLmRlc2NyaXB0aW9uICAgICAgICAgICAgIHwgZnVuY3Rpb25zLmZ1bmN0aW9ucy5baHR0cCBPUiBodHRwQXBpXS5kb2N1bWVudGF0aW9uLltwYXRoL3F1ZXJ5L2Nvb2tpZS9oZWFkZXJdUGFyYW1zLmRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHBhdGhbcGF0aF0uW29wZXJhdGlvbl0ucGFyYW1ldGVycy5yZXF1aXJlZCAgICAgICAgICAgICAgICB8IGZ1bmN0aW9ucy5mdW5jdGlvbnMuW2h0dHAgT1IgaHR0cEFwaV0uZG9jdW1lbnRhdGlvbi5bcXVlcnkvY29va2llL2hlYWRlcl1QYXJhbXMucmVxdWlyZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBwYXRoW3BhdGhdLltvcGVyYXRpb25dLnBhcmFtZXRlcnMuZGVwcmVjYXRlZCAgICAgICAgICAgICAgfCBmdW5jdGlvbnMuZnVuY3Rpb25zLltodHRwIE9SIGh0dHBBcGldLmRvY3VtZW50YXRpb24uW3BhdGgvcXVlcnkvY29va2llL2hlYWRlcl1QYXJhbXMuZGVwcmVjYXRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgcGF0aFtwYXRoXS5bb3BlcmF0aW9uXS5wYXJhbWV0ZXJzLmFsbG93RW1wdHlWYWx1ZSAgICAgICAgIHwgZnVuY3Rpb25zLmZ1bmN0aW9ucy5baHR0cCBPUiBodHRwQXBpXS5kb2N1bWVudGF0aW9uLltwYXRoL3F1ZXJ5L2Nvb2tpZS9oZWFkZXJdUGFyYW1zLmFsbG93RW1wdHlWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHBhdGhbcGF0aF0uW29wZXJhdGlvbl0ucGFyYW1ldGVycy5zdHlsZSAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9ucy5mdW5jdGlvbnMuW2h0dHAgT1IgaHR0cEFwaV0uZG9jdW1lbnRhdGlvbi5bcGF0aC9xdWVyeS9jb29raWUvaGVhZGVyXVBhcmFtcy5zdHlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBwYXRoW3BhdGhdLltvcGVyYXRpb25dLnBhcmFtZXRlcnMuZXhwbG9kZSAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbnMuZnVuY3Rpb25zLltodHRwIE9SIGh0dHBBcGldLmRvY3VtZW50YXRpb24uW3BhdGgvcXVlcnkvY29va2llL2hlYWRlcl1QYXJhbXMuZXhwbG9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgcGF0aFtwYXRoXS5bb3BlcmF0aW9uXS5wYXJhbWV0ZXJzLmFsbG93UmVzZXJ2ZWQgICAgICAgICAgIHwgZnVuY3Rpb25zLmZ1bmN0aW9ucy5baHR0cCBPUiBodHRwQXBpXS5kb2N1bWVudGF0aW9uLltwYXRoL3F1ZXJ5L2Nvb2tpZS9oZWFkZXJdUGFyYW1zLmFsbG93UmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHBhdGhbcGF0aF0uW29wZXJhdGlvbl0ucGFyYW1ldGVycy5zY2hlbWEgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9ucy5mdW5jdGlvbnMuW2h0dHAgT1IgaHR0cEFwaV0uZG9jdW1lbnRhdGlvbi5bcGF0aC9xdWVyeS9jb29raWUvaGVhZGVyXVBhcmFtcy5zY2hlbWEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBwYXRoW3BhdGhdLltvcGVyYXRpb25dLnBhcmFtZXRlcnMuZXhhbXBsZSAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbnMuZnVuY3Rpb25zLltodHRwIE9SIGh0dHBBcGldLmRvY3VtZW50YXRpb24uW3BhdGgvcXVlcnkvY29va2llL2hlYWRlcl1QYXJhbXMuZXhhbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgcGF0aFtwYXRoXS5bb3BlcmF0aW9uXS5wYXJhbWV0ZXJzLmV4YW1wbGVzICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25zLmZ1bmN0aW9ucy5baHR0cCBPUiBodHRwQXBpXS5kb2N1bWVudGF0aW9uLltwYXRoL3F1ZXJ5L2Nvb2tpZS9oZWFkZXJdUGFyYW1zLmV4YW1wbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHBhdGhbcGF0aF0uW29wZXJhdGlvbl0ucmVxdWVzdEJvZHkgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9ucy5mdW5jdGlvbnMuW2h0dHAgT1IgaHR0cEFwaV0uZG9jdW1lbnRhdGlvbi5yZXF1ZXN0Qm9keSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBwYXRoW3BhdGhdLltvcGVyYXRpb25dLnJlcXVlc3RCb2R5LmRlc2NyaXB0aW9uICAgICAgICAgICAgfCBmdW5jdGlvbnMuZnVuY3Rpb25zLltodHRwIE9SIGh0dHBBcGldLmRvY3VtZW50YXRpb24ucmVxdWVzdEJvZHkuZGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgcGF0aFtwYXRoXS5bb3BlcmF0aW9uXS5yZXF1ZXN0Qm9keS5yZXF1aXJlZCAgICAgICAgICAgICAgIHwgZnVuY3Rpb25zLmZ1bmN0aW9ucy5baHR0cCBPUiBodHRwQXBpXS5kb2N1bWVudGF0aW9uLnJlcXVlc3RCb2R5LnJlcXVpcmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHBhdGhbcGF0aF0uW29wZXJhdGlvbl0ucmVxdWVzdEJvZHkuY29udGVudCAgICAgICAgICAgICAgICB8IGZ1bmN0aW9ucy5mdW5jdGlvbnMuW2h0dHAgT1IgaHR0cEFwaV0uZG9jdW1lbnRhdGlvbi5yZXF1ZXN0TW9kZWxzW2NvbnRlbnRUeXBlXS5uYW1lIExpbmtzIHRvIGN1c3RvbS5kb2N1bWVudGF0aW9uLm1vZGVscy5uYW1lICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBwYXRoW3BhdGhdLltvcGVyYXRpb25dLnJlc3BvbnNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbnMuZnVuY3Rpb25zLltodHRwIE9SIGh0dHBBcGldLmRvY3VtZW50YXRpb24ubWV0aG9kUmVzcG9uc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgcGF0aFtwYXRoXS5bb3BlcmF0aW9uXS5yZXNwb25zZXMuW3N0YXR1c0NvZGVdICAgICAgICAgICAgIHwgZnVuY3Rpb25zLmZ1bmN0aW9ucy5baHR0cCBPUiBodHRwQXBpXS5kb2N1bWVudGF0aW9uLm1ldGhvZFJlc3BvbnNlc1tzdGF0dXNDb2RlXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHBhdGhbcGF0aF0uW29wZXJhdGlvbl0ucmVzcG9uc2VzLltzdGF0dXNDb2RlXS5kZXNjcmlwdGlvbiB8IGZ1bmN0aW9ucy5mdW5jdGlvbnMuW2h0dHAgT1IgaHR0cEFwaV0uZG9jdW1lbnRhdGlvbi5tZXRob2RSZXNwb25zZXNbc3RhdHVzQ29kZV0ucmVzcG9uc2VCb2R5LmRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBwYXRoW3BhdGhdLltvcGVyYXRpb25dLnJlc3BvbnNlcy5bc3RhdHVzQ29kZV0uY29udGVudCAgICAgfCBmdW5jdGlvbnMuZnVuY3Rpb25zLltodHRwIE9SIGh0dHBBcGldLmRvY3VtZW50YXRpb24ubWV0aG9kUmVzcG9uc2VzW3N0YXR1c0NvZGVdLnJlc3BvbnNlTW9kZWxzW2NvbnRlbnRUeXBlXSBMaW5rcyB0byBjdXN0b20uZG9jdW1lbnRhdGlvbi5tb2RlbHMubmFtZSB8CgojIyMgQ29uZmlndXJhdGlvbgoKVG8gY29uZmlndXJlIHRoaXMgcGx1Z2luIHRvIGdlbmVyYXRlIGEgdmFsaWQgT3BlbkFQSSBEZXNjcmlwdGlvbiwgdGhlcmUgYXJlIHR3byBwbGFjZXMgeW91J2xsIG5lZWQgdG8gbW9kaWZ5IGluIHlvdXIgYHNlcnZlcmxlc3MueW1sYCBmaWxlLCB0aGUgYGN1c3RvbWAgdmFyaWFibGVzIHNlY3Rpb24gYW5kIHRoZSBgaHR0cC9odHRwQXBpYCBldmVudCBzZWN0aW9uIGZvciBlYWNoIGdpdmVuIGZ1bmN0aW9uIGluIHlvdXIgc2VydmljZS4KClRoZSBgY3VzdG9tYCBzZWN0aW9uIG9mIHlvdXIgYHNlcnZlcmxlc3MueW1sYCBjYW4gYmUgY29uZmlndXJlZCBhcyBiZWxvdzoKCmBgYHltbApjdXN0b206CiAgZG9jdW1lbnRhdGlvbjoKICAgIHZlcnNpb246ICIxIgogICAgdGl0bGU6ICJNeSBBUEkiCiAgICBkZXNjcmlwdGlvbjogIlRoaXMgaXMgbXkgQVBJIgogICAgdGVybXNPZlNlcnZpY2U6IGh0dHBzOi8vZ29vZ2xlLmNvbQogICAgZXh0ZXJuYWxEb2N1bWVudGF0aW9uOgogICAgICB1cmw6IGh0dHBzOi8vZ29vZ2xlLmNvbQogICAgICBkZXNjcmlwdGlvbjogQSBsaW5rIHRvIGdvb2dsZQogICAgc2VydmVyczoKICAgICAgdXJsOiBodHRwczovL2V4YW1wbGUuY29tOntwb3J0fS8KICAgICAgZGVzY3JpcHRpb246IFRoZSBzZXJ2ZXIKICAgICAgdmFyaWFibGVzOgogICAgICAgIHBvcnQ6CiAgICAgICAgICBlbnVtOgogICAgICAgICAgICAtIDQwMDAKICAgICAgICAgICAgLSAzMDAwCiAgICAgICAgICBkZWZhdWx0OiAzMDAwCiAgICAgICAgICBkZXNjcmlwdGlvbjogVGhlIHBvcnQgdGhlIHNlcnZlciBvcGVyYXRlcyBvbgogICAgdGFnczoKICAgICAgLSBuYW1lOiB0YWcxCiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMgaXMgYSB0YWcKICAgICAgICBleHRlcm5hbERvY3VtZW50YXRpb246CiAgICAgICAgICB1cmw6IGh0dHBzOi8vbnBtanMuY29tCiAgICAgICAgICBkZXNjcmlwdGlvbjogQSBsaW5rIHRvIG5wbQogICAgbW9kZWxzOiB7fQpgYGAKCk1vc3RseSBldmVyeXRoaW5nIGhlcmUgaXMgb3B0aW9uYWwuIEEgdmVyc2lvbiBmcm9tIGEgVVVJRCB3aWxsIGJlIGdlbmVyYXRlZCBmb3IgeW91IGlmIHlvdSBkb24ndCBzcGVjaWZ5IG9uZSwgdGl0bGUgd2lsbCBiZSB0aGUgbmFtZSBvZiB5b3VyIHNlcnZpY2UgaWYgeW91IGRvbid0IHNwZWNpZnkgb25lLiBZb3Ugd2lsbCBuZWVkIHRvIHNwZWNpZnkgdGhlIGBkb2N1bWVudGF0aW9uYCB0b3Agb2JqZWN0LgoKIyMjIyB0ZXJtc09mU2VydmljZQoKTXVzdCBiZSBpbiB0aGUgZm9ybWF0IG9mIGEgdXJsIGlmIGluY2x1ZGVkLgoKIyMjIyBDb250YWN0CgpZb3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWwgY29udGFjdCBvYmplY3Qgc3VjaCBhczoKCmBgYHltbApjdXN0b206CiAgZG9jdW1lbnRhdGlvbjoKICAgIGNvbnRhY3Q6CiAgICAgIG5hbWU6IEpvaG4KICAgICAgdXJsOiBodHRwczovL2V4YW1wbGUuY29tCiAgICAgIGVtYWlsOiBKb2huQGV4YW1wbGUuY29tCmBgYAoKVGhlc2UgZmllbGRzIGFyZSBvcHRpb25hbCwgdGhvdWdoIGB1cmxgIG5lZWRzIHRvIGluIHRoZSBmb3JtIG9mIGEgVVJMIGFuZCBgZW1haWxgIG5lZWRzIHRvIGJlIGluIHRoZSBmb3JtYXQgb2YgYW4gZW1haWwgYWRkcmVzcyAoZWQ6IHdoYXQgdGhhdCBtaWdodCBiZSwgSSdtIG5vdCAxMDAlIHN1cmUuLi4gZ28gcmVhZCB0aGUgZW1haWwgUkZDKHMpKS4KClRoaXMgY2FuIGJlIGV4dGVuZGVkIHVzaW5nIHRoZSBgXngtYCBzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbi4KCiMjIyMgTGljZW5zZQoKWW91IGNhbiBwcm92aWRlIGFuIG9wdGlvbmFsIGxpY2Vuc2Ugb2JqZWN0IHN1Y2ggYXM6CgpgYGB5bWwKY3VzdG9tOgogIGRvY3VtZW50YXRpb246CiAgICBsaWNlbnNlOgogICAgICBuYW1lOiBBcGFjaGUgMi4wCiAgICAgIHVybDogaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMC5odG1sCmBgYAoKTmFtZSBpcyByZXF1aXJlZCBidXQgYHVybGAgaXMgb3B0aW9uYWwgYW5kIG11c3QgYmUgaW4gdGhlIGZvcm1hdCBvZiBhIHVybC4KClRoaXMgY2FuIGJlIGV4dGVuZGVkIHVzaW5nIHRoZSBgXngtYCBzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbi4KCiMjIyMgRXh0ZW5kZWQgRmllbGRzCgpZb3UgY2FuIGFsc28gYWRkIGV4dGVuZGVkIGZpZWxkcyB0byB0aGUgZG9jdW1lbnRhdGlvbiBvYmplY3Q6CgpgYGB5bWwKY3VzdG9tOgogIGRvY3VtZW50YXRpb246CiAgICB4LW90aGVyLWZpZWxkOiBUaGlzIGlzIGFuIGV4dGVuZGVkIGZpZWxkCmBgYAoKVGhlc2UgZmllbGRzIG11c3QgaGF2ZSBgeC1gIGJlZm9yZSB0aGVtLCBvdGhlcndpc2UgdGhleSB3aWxsIGJlIGlnbm9yZWQ6CgpgYGB5bWwKY3VzdG9tOgogIGRvY3VtZW50YXRpb246CiAgICBvdGhlci1maWVsZDogVGhpcyBpcyBhbiBleHRlbmRlZCBmaWVsZApgYGAKCmBvdGhlci1maWVsZGAgaGVyZSB3aWxsIG5vdCBtYWtlIGl0IHRvIHRoZSBnZW5lcmF0ZWQgT3BlbkFQSSBzY2hlbWEuCgpDdXJyZW50bHkgZXh0ZW5kZWQgc3BlY2lmaWNhdGlvbiBmaWVsZHMgZGVmaW5lZCB1bmRlciB0aGUgYGRvY3VtZW50YXRpb25gIHRhZyB3aWxsIHNpdCB1bmRlciB0aGUgT3BlbkFQSSBgaW5mb2Agb2JqZWN0IGUuZy4KCmBgYHltbApjdXN0b206CiAgZG9jdW1lbnRhdGlvbjoKICAgIHRpdGxlOiBteVNlcnZpY2UKICAgIHgtb3RoZXItZmllbGQ6IFRoaXMgaXMgYW4gZXh0ZW5kZWQgZmllbGQKYGBgCgpjb252ZXJ0cyB0bzoKCmBgYGpzb24KewogICJpbmZvIjogewogICAgInRpdGxlIjogIm15U2VydmljZSIsCiAgICAieC1vdGhlci1maWVsZCI6ICJUaGlzIGlzIGFuIGV4dGVuZGVkIGZpZWxkIgogIH0KfQpgYGAKCkFuIGV4Y2VwdGlvbiB0byB0aGlzIGlzIFJlZG9jbHkgYHgtdGFnR3JvdXBzYC4gSWYgZGVmaW5lZCwgdGhleSB3aWxsIHNpdCBhdCB0aGUgcm9vdCBsZXZlbCBvZiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLCBlLmcuCgpgYGB5bWwKY3VzdG9tOgogIGRvY3VtZW50YXRpb246CiAgICB0aXRsZTogbXlTZXJ2aWNlCiAgICB4LW90aGVyLWZpZWxkOiBUaGlzIGlzIGFuIGV4dGVuZGVkIGZpZWxkCiAgICB4LXRhZ0dyb3VwczoKICAgICAgLSBuYW1lOiBDdXN0b21lcnMKICAgICAgICB0YWdzOgogICAgICAgICAgLSBDdXN0b21lcnMKYGBgCgpjb252ZXJ0cyB0bzoKCmBgYGpzb24KewogICJpbmZvIjogewogICAgInRpdGxlIjogIm15U2VydmljZSIsCiAgICAieC1vdGhlci1maWVsZCI6ICJUaGlzIGlzIGFuIGV4dGVuZGVkIGZpZWxkIgogIH0sCiAgIngtdGFnR3JvdXBzIjogWwogICAgewogICAgICAibmFtZSI6ICJDdXN0b21lcnMiLAogICAgICAidGFncyI6IFsiQ3VzdG9tZXJzIl0KICAgIH0KICBdCn0KYGBgCgojIyMjIE1vdmluZyBkb2N1bWVudGF0aW9uIHRvIGEgc2VwYXJhdGUgZmlsZQoKVGhlc2UgY29uZmlndXJhdGlvbnMgY2FuIGJlIHF1aXRlIHZlcmJvc2U7IHlvdSBjYW4gc2VwYXJhdGUgaXQgb3V0IGludG8gaXQncyBvd24gZmlsZSwgc3VjaCBhcyBgc2VydmVybGVzcy5kb2MueW1sYCBhcyBiZWxvdzoKCmBgYHltbApjdXN0b206CiAgZG9jdW1lbnRhdGlvbjogJHtmaWxlKHNlcnZlcmxlc3MuZG9jLnltbCk6ZG9jdW1lbnRhdGlvbn0KCmZ1bmN0aW9uczoKICBteUZ1bmM6CiAgICBldmVudHM6CiAgICAgIC0gaHR0cDoKICAgICAgICAgIHBhdGg6IGdldFN0dWZmCiAgICAgICAgICBtZXRob2Q6IGdldAogICAgICAgICAgZG9jdW1lbnRhdGlvbjogJHtmaWxlKHNlcnZlcmxlc3MuZG9jLnltbCk6ZW5kcG9pbnRzLm15RnVuY30KYGBgCgpGb3IgbW9yZSBpbmZvIG9uIGBzZXJ2ZXJsZXNzLnltbGAgc3ludGF4LCBzZWUgdGhlaXIgZG9jcy4KCiMjIyMgc2VjdXJpdHlTY2hlbWVzCgpZb3UgY2FuIHByb3ZpZGUgb3B0aW9uYWwgU2VjdXJpdHkgU2NoZW1lczoKCmBgYHltbApjdXN0b206CiAgZG9jdW1lbnRhdGlvbjoKICAgIHNlY3VyaXR5U2NoZW1lczoKICAgICAgbXlfYXBpX2tleToKICAgICAgICB0eXBlOiBhcGlLZXkKICAgICAgICBuYW1lOiBhcGlfa2V5CiAgICAgICAgaW46IGhlYWRlcgpgYGAKCkl0IGFjY2VwdHMgYWxsIGF2YWlsYWJsZSBTZWN1cml0eSBTY2hlbWVzIGFuZCBmb2xsb3dzIHRoZSBzcGVjaWZpY2F0aW9uOiBodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQjc2VjdXJpdHktc2NoZW1lLW9iamVjdAoKVGhpcyBjYW4gYmUgZXh0ZW5kZWQgdXNpbmcgdGhlIGBeeC1gIHNwZWNpZmljYXRpb24gZXh0ZW5zaW9uLgoKIyMjIyBTZWN1cml0eSBvbiBlYWNoIG9wZXJhdGlvbgoKVG8gYXBwbHkgYW4gb3ZlcmFsbCBzZWN1cml0eSBzY2hlbWUgdG8gYWxsIG9mIHlvdXIgb3BlcmF0aW9ucyB3aXRob3V0IGhhdmluZyB0byBhZGQgdGhlIGRvY3VtZW50YXRpb24gdG8gZWFjaCBvbmUsIHlvdSBjYW4gd3JpdGUgaXQgbGlrZToKCmBgYHltbApjdXN0b206CiAgZG9jdW1lbnRhdGlvbjoKICAgIHNlY3VyaXR5U2NoZW1lczoKICAgICAgbXlfYXBpX2tleToKICAgICAgICB0eXBlOiBhcGlLZXkKICAgICAgICBuYW1lOiBhcGlfa2V5CiAgICAgICAgaW46IGhlYWRlcgogICAgc2VjdXJpdHk6CiAgICAgIC0gbXlfYXBpX2tleTogW10KYGBgCgpUaGlzIHdpbGwgYXBwbHkgdGhlIHJlcXVpcmVtZW50IG9mIGVhY2ggb3BlcmF0aW9uIHJlcXVpcmluZyB5b3VyIGBteV9hcGlfa2V5YCBzZWN1cml0eSBzY2hlbWUsIFt5b3UgY2FuIG92ZXJyaWRlIHRoaXNdKCNzZWN1cml0eSkuCgojIyMjIE1vZGVscwoKVGhlcmUgYXJlIHR3byB3YXlzIHRvIHdyaXRlIHRoZSBNb2RlbHMuIE1vZGVscyBjb250YWluIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdGhhdCB5b3UgY2FuIHVzZSB0byBkZWZpbmUgc2NoZW1hcyBmb3IgZW5kcG9pbnRzLiBZb3UgbXVzdCBkZWZpbmUgdGhlIF9jb250ZW50IHR5cGVfIGZvciBlYWNoIHNjaGVtYSB0aGF0IHlvdSBwcm92aWRlIGluIHRoZSBtb2RlbHMuCgpUaGUgZmlyc3Qgd2F5IG9mIHdyaXRpbmcgdGhlIG1vZGVsIGlzOgpfcmVxdWlyZWRfIGRpcmVjdGl2ZXMgZm9yIHRoZSBtb2RlbHMgc2VjdGlvbiBhcmUgYXMgZm9sbG93OgoKLSBgbmFtZWA6IHRoZSBuYW1lIG9mIHRoZSBzY2hlbWEKLSBgZGVzY3JpcHRpb25gOiBhIGRlc2NyaXB0aW9uIG9mIHRoZSBzY2hlbWEKLSBgY29udGVudFR5cGVgOiB0aGUgY29udGVudCB0eXBlIG9mIHRoZSBkZXNjcmliZWQgcmVxdWVzdC9yZXNwb25zZSAoaWUuIGBhcHBsaWNhdGlvbi9qc29uYCBvciBgYXBwbGljYXRpb24veG1sYCkuCi0gYHNjaGVtYWA6IFRoZSBKU09OIFNjaGVtYSAoW3dlYnNpdGVdKGh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvKSkgdGhhdCBkZXNjcmliZXMgdGhlIG1vZGVsLiBZb3UgY2FuIGVpdGhlciB1c2UgaW5saW5lIGBZQU1MYCB0byBkZWZpbmUgdGhlc2Ugb3IgdXNlIGVpdGhlciBhbiBleHRlcm5hbCBmaWxlIHNjaGVtYSB0aGF0IHNlcnZlcmxlc3Mgd2lsbCByZXNvbHZlIChhcyBiZWxvdyksIG9yIGEgcmVmZXJlbmNlIHRvIGFuIGV4dGVybmFsbHkgaG9zdGVkIHNjaGVtYSB0aGF0IHdpbGwgYmUgYXR0ZW1wdGVkIHRvIGJlIHJlc29sdmVkLgoKYGBgeW1sCmN1c3RvbToKICBkb2N1bWVudGF0aW9uOgogICAgbW9kZWxzOgogICAgICAtIG5hbWU6ICJFcnJvclJlc3BvbnNlIgogICAgICAgIGRlc2NyaXB0aW9uOiAiVGhpcyBpcyBhbiBlcnJvciIKICAgICAgICBjb250ZW50VHlwZTogImFwcGxpY2F0aW9uL2pzb24iCiAgICAgICAgc2NoZW1hOiAke2ZpbGUobW9kZWxzL0Vycm9yUmVzcG9uc2UuanNvbil9CiAgICAgIC0gbmFtZTogIlB1dERvY3VtZW50UmVzcG9uc2UiCiAgICAgICAgZGVzY3JpcHRpb246ICJQVVQgRG9jdW1lbnQgcmVzcG9uc2UgbW9kZWwgKGV4dGVybmFsIHJlZmVyZW5jZSBleGFtcGxlKSIKICAgICAgICBjb250ZW50VHlwZTogImFwcGxpY2F0aW9uL2pzb24iCiAgICAgICAgc2NoZW1hOiAke2ZpbGUobW9kZWxzL1B1dERvY3VtZW50UmVzcG9uc2UuanNvbil9CiAgICAgIC0gbmFtZTogIlB1dERvY3VtZW50UmVxdWVzdCIKICAgICAgICBkZXNjcmlwdGlvbjogIlBVVCBEb2N1bWVudCByZXF1ZXN0IG1vZGVsIChpbmxpbmUgZXhhbXBsZSkiCiAgICAgICAgY29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIHNjaGVtYToKICAgICAgICAgICRzY2hlbWE6ICJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMiCiAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIFNvbWVPYmplY3Q6CiAgICAgICAgICAgICAgdHlwZTogIm9iamVjdCIKICAgICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgU29tZUF0dHJpYnV0ZToKICAgICAgICAgICAgICAgICAgdHlwZTogInN0cmluZyIKICAgICAgICBleGFtcGxlczoKICAgICAgICAgIC0gbmFtZTogc29tZU9iamVjdElubGluZUV4YW1wbGUKICAgICAgICAgICAgc3VtbWFyeTogYW4gZXhhbXBsZSBvZiBhIHJlcXVlc3QKICAgICAgICAgICAgZGVzY3JpcHRpb246IGEgbG9uZ2VyIHN0cmluZyB0aGFuIHRoZSBzdW1tYXJ5CiAgICAgICAgICAgIHZhbHVlOiB7IFNvbWVPYmplY3Q6IHsgU29tZUF0dHJpYnV0ZTogImF0dHJpYnV0ZSIgfSB9CiAgICAgICAgICAtIG5hbWU6IHNvbWVPYmplY3RFeHRlcm5hbEV4YW1wbGUKICAgICAgICAgICAgc3VtbWFyeTogYW4gZXhhbXBsZSBvZiBhIHJlcXVlc3QgZXh0ZXJuYWwKICAgICAgICAgICAgZGVzY3JpcHRpb246IGEgbG9uZ2VyIHN0cmluZyB0aGFuIHRoZSBzdW1tYXJ5CiAgICAgICAgICAgIGV4dGVybmFsVmFsdWU6IGh0dHBzOi8vZXhhbXBsZS5jb20vZXh0ZXJuYWwuanNvbgpgYGAKClRoZSBTZWNvbmQgd2F5IG9mIHdyaXRpbmcgdGhlIG1vZGVsczoKCi0gYG5hbWVgOiB0aGUgbmFtZSBvZiB0aGUgc2NoZW1hCi0gYGRlc2NyaXB0aW9uYDogYSBkZXNjcmlwdGlvbiBvZiB0aGUgc2NoZW1hCi0gYGNvbnRlbnRgOiBhbiBPYmplY3QgbWFkZSB1cCBvZiB0aGUgY29udGVudFR5cGUgYW5kIHRoZSBzY2hlbWEsIGFzIHNob3duIGJlbG93CgpgYGB5bWwKY3VzdG9tOgogIGRvY3VtZW50YXRpb246CiAgICBtb2RlbHM6CiAgICAgIC0gbmFtZTogIkVycm9yUmVzcG9uc2UiCiAgICAgICAgZGVzY3JpcHRpb246ICJUaGlzIGlzIGFuIGVycm9yIgogICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICBzY2hlbWE6ICR7ZmlsZShtb2RlbHMvRXJyb3JSZXNwb25zZS5qc29uKX0KICAgICAgLSBuYW1lOiAiUHV0RG9jdW1lbnRSZXNwb25zZSIKICAgICAgICBkZXNjcmlwdGlvbjogIlBVVCBEb2N1bWVudCByZXNwb25zZSBtb2RlbCAoZXh0ZXJuYWwgcmVmZXJlbmNlIGV4YW1wbGUpIgogICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICBzY2hlbWE6ICR7ZmlsZShtb2RlbHMvUHV0RG9jdW1lbnRSZXNwb25zZS5qc29uKX0KICAgICAgLSBuYW1lOiAiUHV0RG9jdW1lbnRSZXF1ZXN0IgogICAgICAgIGRlc2NyaXB0aW9uOiAiUFVUIERvY3VtZW50IHJlcXVlc3QgbW9kZWwgKGlubGluZSBleGFtcGxlKSIKICAgICAgICBjb250ZW50OgogICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICRzY2hlbWE6ICJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMiCiAgICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgICAgIFNvbWVPYmplY3Q6CiAgICAgICAgICAgICAgICAgIHR5cGU6ICJvYmplY3QiCiAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgICAgU29tZUF0dHJpYnV0ZToKICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJzdHJpbmciCiAgICAgICAgICAgIGV4YW1wbGVzOgogICAgICAgICAgICAgIC0gbmFtZTogc29tZU9iamVjdElubGluZUV4YW1wbGUKICAgICAgICAgICAgICAgIHN1bW1hcnk6IGFuIGV4YW1wbGUgb2YgYSByZXF1ZXN0CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogYSBsb25nZXIgc3RyaW5nIHRoYW4gdGhlIHN1bW1hcnkKICAgICAgICAgICAgICAgIHZhbHVlOiB7IFNvbWVPYmplY3Q6IHsgU29tZUF0dHJpYnV0ZTogImF0dHJpYnV0ZSIgfSB9CiAgICAgICAgICAgICAgLSBuYW1lOiBzb21lT2JqZWN0RXh0ZXJuYWxFeGFtcGxlCiAgICAgICAgICAgICAgICBzdW1tYXJ5OiBhbiBleGFtcGxlIG9mIGEgcmVxdWVzdCBleHRlcm5hbAogICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGEgbG9uZ2VyIHN0cmluZyB0aGFuIHRoZSBzdW1tYXJ5CiAgICAgICAgICAgICAgICBleHRlcm5hbFZhbHVlOiBodHRwczovL2V4YW1wbGUuY29tL2V4dGVybmFsLmpzb24KYGBgCgojIyMjIyBNb2RlbCByZS11c2UKClRocm91Z2ggdGhlIG1hZ2ljIG9mIFlBTUwsIHlvdSBjYW4gcmUtdXNlIG1vZGVsczoKCmBgYHltbApjdXN0b206CiAgZG9jdW1lbnRhdGlvbjoKICAgIC4uLgogICAgbW9kZWxzOgogICAgICAtIG5hbWU6ICJFcnJvclJlc3BvbnNlIgogICAgICAgIGRlc2NyaXB0aW9uOiAiVGhpcyBpcyBhbiBlcnJvciIKICAgICAgICBjb250ZW50OgogICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgc2NoZW1hOiAmRXJyb3JJdGVtCiAgICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgICAgIG1lc3NhZ2U6CiAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgY29kZToKICAgICAgICAgICAgICAgICAgdHlwZTogaW50ZWdlcgoKICAgICAgLSBuYW1lOiAiUHV0RG9jdW1lbnRSZXNwb25zZSIKICAgICAgICBkZXNjcmlwdGlvbjogIlBVVCBEb2N1bWVudCByZXNwb25zZSBtb2RlbCAoZXh0ZXJuYWwgcmVmZXJlbmNlIGV4YW1wbGUpIgogICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgICAgICBpdGVtczogKkVycm9ySXRlbQpgYGAKCmAmRXJyb3JJdGVtYCBpbiB0aGUgYWJvdmUgZXhhbXBsZSBjcmVhdGVzIGEgbm9kZSBhbmNob3IgKCZFcnJvckl0ZW0pIHRvIHRoZSBgRXJyb3JSZXNwb25zZWAgc2NoZW1hIHdoaWNoIHRoZW4gY2FuIGJlIHVzZWQgaW4gdGhlIGBQdXREb2N1bWVudFJlc3BvbnNlYCBzY2hlbWEgdmlhIHRoZSByZWZlcmVuY2UgKFwqRXJyb3JJdGVtKS4gVGhlIG5vZGUgYW5jaG9yIG5lZWRzIHRvIGJlIGRlY2xhcmVkIGZpcnN0IGJlZm9yZSBpdCBjYW4gYmUgdXNlZCBlbHNld2hlcmUgdmlhIHRoZSByZWZlcmVuY2UsIHN3YXBwaW5nIHRoZSBhYm92ZSBleGFtcGxlIGFyb3VuZCB3b3VsZCByZXN1bHQgaW4gYW4gZXJyb3IuCgojIyMjIyBNb2RlbHNMaXN0IC0gQmFja3dhcmRzIGNvbXBhdGliaWxpdHkKCkl0IHdhcyBicm91Z2h0IHRvIG15IGF0dGVudGlvbiB0aGF0IGFuIG9sZGVyIHBsdWdpbiB2ZXJzaW9uIGFsbG93ZWQgdGhlIHVzZSBvZiBgbW9kZWxzTGlzdGAuIEFzIG9mIDAuMC42MCwgeW91IGNhbiBjb250aW51ZSB0byB1c2UgYG1vZGVsc0xpc3RgIGFzIHdlbGwgYXMgdXNpbmcgYG1vZGVsc2AsIGhvd2V2ZXIgYG1vZGVsc0xpc3RgIG5vdyBoYXMgdG8gYmUgbmVzdGVkIHdpdGhpbiB0aGUgYGRvY3VtZW50YXRpb25gIHNlY3Rpb24uIFlvdSBjYW4gd3JpdGUgYG1vZGVsc0xpc3RgIHRoZSBzYW1lIHdheSBhcyBhbnkgb2YgdGhlIHR3byBzdHlsZXMgZm9yIFtNb2RlbHNdKCNNb2RlbHMpLgoKYGBgCmN1c3RvbToKICBkb2N1bWVudGF0aW9uOgogICAgLi4uCiAgICBtb2RlbHNMaXN0OgogICAgICAtIG5hbWU6ICJFcnJvclJlc3BvbnNlIgogICAgICAgIGRlc2NyaXB0aW9uOiAiVGhpcyBpcyBhbiBlcnJvciIKICAgICAgICBjb250ZW50OgogICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwpgYGAKCiMjIyMjIFNlcnZlcmxlc3MgUmVxdWVzdCBTY2hlbWEgVmFsaWRhdG9ycwoKQXMgb2YgMC4wLjY0LCB5b3UgY2FuIG5vdyBtYWtlIHVzZSBvZiBbUmVxdWVzdCBTY2hlbWEgVmFsaWRhdG9yc10oaHR0cHM6Ly93d3cuc2VydmVybGVzcy5jb20vZnJhbWV3b3JrL2RvY3MvcHJvdmlkZXJzL2F3cy9ldmVudHMvYXBpZ2F0ZXdheSNyZXF1ZXN0LXNjaGVtYS12YWxpZGF0b3JzKS4gVGhpcyBhbGxvd3MgeW91IHRvIGRlZmluZSBSZXF1ZXN0IG1vZGVscyB2aWEgdGhlIGBhcGlHYXRld2F5YCBzZXR0aW5nczoKCmBgYHltbApwcm92aWRlcjoKICAuLi4KICBhcGlHYXRld2F5OgogICAgcmVxdWVzdDoKICAgICAgc2NoZW1hczoKICAgICAgICBwb3N0LWNyZWF0ZS1tb2RlbDoKICAgICAgICAgIG5hbWU6IFBvc3RDcmVhdGVNb2RlbAogICAgICAgICAgc2NoZW1hOiAke2ZpbGUoYXBpX3NjaGVtYS9wb3N0X2FkZF9zY2hlbWEuanNvbil9CiAgICAgICAgICBkZXNjcmlwdGlvbjogIkEgTW9kZWwgdmFsaWRhdGlvbiBmb3IgYWRkaW5nIHBvc3RzIgpgYGAKCndoaWNoIGFyZSB0aGVuIHVzZWQgbGlrZToKCmBgYHltbApmdW5jdGlvbnM6CiAgY3JlYXRlOgogICAgaGFuZGxlcjogcG9zdHMuY3JlYXRlCiAgICBldmVudHM6CiAgICAgIC0gaHR0cDoKICAgICAgICAgIHBhdGg6IHBvc3RzL2NyZWF0ZQogICAgICAgICAgbWV0aG9kOiBwb3N0CiAgICAgICAgICByZXF1ZXN0OgogICAgICAgICAgICBzY2hlbWFzOgogICAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246IHBvc3QtY3JlYXRlLW1vZGVsCiAgICAgICAgICBkb2N1bWVudGF0aW9uOiAuLi4KYGBgCgpUaGUgZ2VuZXJhdG9yIHdpbGwgbWF0Y2ggdG8gdGhlIG1vZGVsIHdpdGhpbiB0aGUgYGFwaUdhdGV3YXlgIHNldHRpbmdzIG1vZGVsIGxpc3QuIElmIHlvdSBhcmUgdXNpbmcgdGhlIGBhcGlHYXRld2F5YCB0byBkZWZpbmUgbW9kZWxzLCBwbGVhc2UgZG8gbm90IHJlLXVzZSBhbnkgbmFtZXMgdGhhdCB5b3UgbWlnaHQgZGVmaW5lIGluIHRoZSBbYG1vZGVsc2BdKCNtb2RlbHMpIGxpc3QuCgpZb3UgY2FuIGFsc28gc2tpcCB3cml0aW5nIGEgYHJlcXVlc3RCb2R5YCBhbmQgYHJlcXVlc3RNb2RlbHNgIGlmIHlvdSBoYXZlIGRlZmluZWQgYSBgcmVxdWVzdGAgcHJvcGVydHkgaW4geW91ciBldmVudC4KCklmIHlvdSdyZSBub3QgdXNpbmcgYGFwaUdhdGV3YXlgLCB5b3UgY2FuIHN0aWxsIG1ha2UgdXNlIG9mIGByZXF1ZXN0YCBieSB3cml0aW5nIGluIHRoZSBvdGhlciBzdHlsZXMgdGhhdCBzZXJ2ZXJsZXNzIGFjY2VwdHMgZm9yIFJlcXVlc3QgU2NoZW1hIFZhbGlkYXRvcnM6CgpgYGB5bWwKZnVuY3Rpb25zOgogIGNyZWF0ZToKICAgIGhhbmRsZXI6IHBvc3RzLmNyZWF0ZQogICAgZXZlbnRzOgogICAgICAtIGh0dHA6CiAgICAgICAgICBwYXRoOiBwb3N0cy9jcmVhdGUKICAgICAgICAgIG1ldGhvZDogcG9zdAogICAgICAgICAgcmVxdWVzdDoKICAgICAgICAgICAgc2NoZW1hczoKICAgICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgICAgc2NoZW1hOiAke2ZpbGUoY3JlYXRlX3JlcXVlc3QuanNvbil9CiAgICAgICAgICAgICAgICBuYW1lOiBQb3N0Q3JlYXRlTW9kZWwKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiVmFsaWRhdGlvbiBtb2RlbCBmb3IgQ3JlYXRpbmcgUG9zdHMiCmBgYAoKb3IKCmBgYHltbApmdW5jdGlvbnM6CiAgY3JlYXRlOgogICAgaGFuZGxlcjogcG9zdHMuY3JlYXRlCiAgICBldmVudHM6CiAgICAgIC0gaHR0cDoKICAgICAgICAgIHBhdGg6IHBvc3RzL2NyZWF0ZQogICAgICAgICAgbWV0aG9kOiBwb3N0CiAgICAgICAgICByZXF1ZXN0OgogICAgICAgICAgICBzY2hlbWFzOgogICAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246ICR7ZmlsZShjcmVhdGVfcmVxdWVzdC5qc29uKX0KYGBgCgojIyMjIEZ1bmN0aW9ucwoKVG8gZGVmaW5lIHRoZSBkb2N1bWVudGF0aW9uIGZvciBhIGdpdmVuIGZ1bmN0aW9uIGV2ZW50LCB5b3UgbmVlZCB0byBjcmVhdGUgYSBgZG9jdW1lbnRhdGlvbmAgYXR0cmlidXRlIGZvciB5b3VyIGBodHRwYCBvciBgaHR0cEFwaWAgZXZlbnQgaW4geW91ciBgc2VydmVybGVzcy55bWxgIGZpbGUuCgpUaGUgYGRvY3VtZW50YXRpb25gIHNlY3Rpb24gb2YgdGhlIGV2ZW50IGNvbmZpZ3VyYXRpb24gY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgoKLSBgc3VtbWFyeWA6IEEgc2hvcnQgZGVzY3JpcHRpb24gb2YgdGhlIG1ldGhvZAotIGBkZXNjcmlwdGlvbmA6IEEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIG1ldGhvZAotIGB0YWdzYDogQW4gYXJyYXkgb2YgdGFncyBmb3IgdGhpcyBldmVudAotIGBkZXByZWNhdGVkYDogQm9vbGVhbiBpbmRpY2F0b3IgdGhhdCBpbmRpY2F0ZXMgY2xpZW50cyBzaG91bGQgbWlncmF0ZSBhd2F5IGZyb20gdGhpcyBmdW5jdGlvbgotIGByZXF1ZXN0Qm9keWA6IENvbnRhaW5zIGRlc2NyaXB0aW9uIG9mIHRoZSByZXF1ZXN0CiAgLSBgZGVzY3JpcHRpb25gOiBBIGRlc2NyaXB0aW9uIG9mIHRoZSByZXF1ZXN0IGJvZHkKICAtIGByZXF1aXJlZGA6IFdoZXRoZXIgdGhlIHJlcXVlc3QgYm9keSBpcyByZXF1aXJlZCwgZGVmYXVsdHMgdG8gZmFsc2UKLSBgcmVxdWVzdE1vZGVsc2A6IEEgbGlzdCBvZiBtb2RlbHMgdG8gZGVzY3JpYmUgdGhlIHJlcXVlc3QgYm9kaWVzIChzZWUgW3JlcXVlc3RNb2RlbHNdKCNyZXF1ZXN0bW9kZWxzKSBiZWxvdykKLSBgcXVlcnlQYXJhbXNgOiBBIGxpc3Qgb2YgcXVlcnkgcGFyYW1ldGVycyAoc2VlIFtxdWVyeVBhcmFtc10oI3F1ZXJ5cGFyYW1zKSBiZWxvdykKLSBgcGF0aFBhcmFtc2A6IEEgbGlzdCBvZiBwYXRoIHBhcmFtZXRlcnMgKHNlZSBbcGF0aFBhcmFtc10oI3BhdGhwYXJhbXMpIGJlbG93KQotIGBjb29raWVQYXJhbXNgOiBBIGxpc3Qgb2YgY29va2llIHBhcmFtZXRlcnMgKHNlZSBbY29va2llUGFyYW1zXSgjY29va2llcGFyYW1zKSBiZWxvdykKLSBgaGVhZGVyUGFyYW1zYDogQSBsaXN0IG9mIGhlYWRlcnMgKHNlZSBbaGVhZGVyUGFyYW1zXSgjaGVhZGVycGFyYW1zLS0tcmVxdWVzdC1oZWFkZXJzKSBiZWxvdykKLSBgc2VjdXJpdHlgOiBUaGUgc2VjdXJpdHkgcmVxdWlyZW1lbnQgdG8gYXBwbHkgKHNlZSBbc2VjdXJpdHldKCNzZWN1cml0eSkgYmVsb3cpCi0gYG1ldGhvZFJlc3BvbnNlc2A6IEFuIGFycmF5IG9mIHJlc3BvbnNlIG1vZGVscyBhbmQgYXBwbGljYWJsZSBzdGF0dXMgY29kZXMKICAtIGBzdGF0dXNDb2RlYDogQXBwbGljYWJsZSBodHRwIHN0YXR1cyBjb2RlIChpZS4gMjAwLzQwNC81MDAgZXRjLikKICAtIGByZXNwb25zZUJvZHlgOiBDb250YWlucyBkZXNjcmlwdGlvbiBvZiB0aGUgcmVzcG9uc2UKICAgIC0gYGRlc2NyaXB0aW9uYDogQSBkZXNjcmlwdGlvbiBvZiB0aGUgYm9keSByZXNwb25zZQogIC0gYHJlc3BvbnNlSGVhZGVyc2A6IEEgbGlzdCBvZiByZXNwb25zZSBoZWFkZXJzIChzZWUgW3Jlc3BvbnNlSGVhZGVyc10oI3Jlc3BvbnNlaGVhZGVycykgYmVsb3cpCiAgLSBgcmVzcG9uc2VNb2RlbHNgOiBBIGxpc3Qgb2YgbW9kZWxzIHRvIGRlc2NyaWJlIHRoZSByZXF1ZXN0IGJvZGllcyAoc2VlIFtyZXNwb25zZU1vZGVsc10oI3Jlc3BvbnNlbW9kZWxzKSBiZWxvdykgZm9yIGVhY2ggYENvbnRlbnQtVHlwZWAKCklmIHlvdSBkb24ndCB3YW50IGEgYGh0dHBgIG9yIGBodHRwQXBpYCBldmVudCB0byBiZSBkb2N1bWVudGVkLCB5b3UgY2FuIGxlYXZlIG9mZiB0aGUgYGRvY3VtZW50YXRpb25gIG9iamVjdC4gVGhlIGNvbmZpZ3VyYXRpb24gc2NoZW1hIHdpbGwgb25seSBjaGVjayB0aGF0IHlvdSBoYXZlIHNwZWNpZmllZCBhIGBtZXRob2RSZXNwb25zZXNgIG9uIHRoZSBgZG9jdW1lbnRhdGlvbmAgZXZlbnQsIHByZXZpb3VzbHkgdGhlIHBsdWdpbiB3b3VsZCBjYXVzZSBzZXJ2ZXJsZXNzIHRvIHdhcm4gb3IgZXJyb3IgKGRlcGVuZGluZyBvbiB5b3VyIGBjb25maWdWYWxpZGF0aW9uTW9kZWApIGlmIHlvdSBoYWQgbm90IHN1cHBsaWVkIGEgYGRvY3VtZW50YXRpb25gIG9uIGFuIGV2ZW50LgoKYGBgeW1sCmZ1bmN0aW9uczoKICBjcmVhdGVVc2VyOgogICAgaGFuZGxlcjogaGFuZGxlci5jcmVhdGUKICAgIGV2ZW50czoKICAgICAgLSBodHRwOgogICAgICAgIHBhdGg6IGNyZWF0ZQogICAgICAgIG1ldGhvZDogcG9zdAogICAgICAgIGNvcnM6IHRydWUKICAgICAgICBzdW1tYXJ5OgogICAgICAgIGRvY3VtZW50YXRpb246CiAgICAgICAgICBzdW1tYXJ5OiAiQ3JlYXRlIFVzZXIiCiAgICAgICAgICBkZXNjcmlwdGlvbjogIkNyZWF0ZXMgYSB1c2VyIGFuZCB0aGVuIHNlbmRzIGEgZ2VuZXJhdGVkIHBhc3N3b3JkIGVtYWlsIgogICAgICAgICAgdGFnczoKICAgICAgICAgICAgLSB0YWcxCiAgICAgICAgICBleHRlcm5hbERvY3VtZW50YXRpb246CiAgICAgICAgICAgIHVybDogaHR0cHM6Ly9iaW5nLmNvbQogICAgICAgICAgICBkZXNjcmlwdGlvbjogQSBsaW5rIHRvIGJpbmcKICAgICAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgICAgICBkZXNjcmlwdGlvbjogIkEgdXNlciBpbmZvcm1hdGlvbiBvYmplY3QiCiAgICAgICAgICByZXF1ZXN0TW9kZWxzOgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOiAiUHV0RG9jdW1lbnRSZXF1ZXN0IgogICAgICAgICAgcGF0aFBhcmFtczoKICAgICAgICAgICAgLSBuYW1lOiAidXNlcm5hbWUiCiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJUaGUgdXNlcm5hbWUgZm9yIGEgdXNlciB0byBjcmVhdGUiCiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogInN0cmluZyIKICAgICAgICAgICAgICAgIHBhdHRlcm46ICJeWy1hLXowLTlfXSskIgogICAgICAgICAgcXVlcnlQYXJhbXM6CiAgICAgICAgICAgIC0gbmFtZTogIm1lbWJlcnNoaXBUeXBlIgogICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiVGhlIHVzZXIncyBNZW1iZXJzaGlwIFR5cGUiCiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogInN0cmluZyIKICAgICAgICAgICAgICAgIGVudW06CiAgICAgICAgICAgICAgICAgIC0gInByZW1pdW0iCiAgICAgICAgICAgICAgICAgIC0gInN0YW5kYXJkIgogICAgICAgICAgY29va2llUGFyYW1zOgogICAgICAgICAgICAtIG5hbWU6ICJTZXNzaW9uSWQiCiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJBIFNlc3Npb24gSUQgdmFyaWFibGUiCiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogInN0cmluZyIKICAgICAgICAgIGhlYWRlclBhcmFtczoKICAgICAgICAgICAgbmFtZTogIkNvbnRlbnQtVHlwZSIKICAgICAgICAgICAgZGVzY3JpcHRpb246ICJUaGUgY29udGVudCB0eXBlIgogICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgdHlwZTogInN0cmluZyIKICAgICAgICAgIG1ldGhvZFJlc3BvbnNlczoKICAgICAgICAgICAgLSBzdGF0dXNDb2RlOiAyMDEKICAgICAgICAgICAgICByZXNwb25zZUJvZHk6CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkEgdXNlciBvYmplY3QgYWxvbmcgd2l0aCBnZW5lcmF0ZWQgQVBJIEtleXMiCiAgICAgICAgICAgICAgcmVzcG9uc2VNb2RlbHM6CiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOiAiUHV0RG9jdW1lbnRSZXNwb25zZSIKICAgICAgICAgICAgICByZXNwb25zZUhlYWRlcnM6CiAgICAgICAgICAgICAgICBYLVJhdGUtTGltaXQtTGltaXQ6CiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBUaGUgbnVtYmVyIG9mIGFsbG93ZWQgcmVxdWVzdHMgaW4gdGhlIGN1cnJlbnQgcGVyaW9kCiAgICAgICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICAgIC0gc3RhdHVzQ29kZTogNTAwCiAgICAgICAgICAgICAgcmVzcG9uc2VCb2R5OgogICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJBbiBlcnJvciBtZXNzYWdlIHdoZW4gY3JlYXRpbmcgYSBuZXcgdXNlciIKICAgICAgICAgICAgICByZXNwb25zZU1vZGVsczoKICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246ICJFcnJvclJlc3BvbnNlIgpgYGAKCiMjIyMgYHF1ZXJ5UGFyYW1zYAoKUXVlcnkgcGFyYW1ldGVycyBjYW4gYmUgZGVzY3JpYmVkIGFzIGZvbGxvdzoKCi0gYG5hbWVgOiB0aGUgbmFtZSBvZiB0aGUgcXVlcnkgdmFyaWFibGUKLSBgZGVzY3JpcHRpb25gOiBhIGRlc2NyaXB0aW9uIG9mIHRoZSBxdWVyeSB2YXJpYWJsZQotIGByZXF1aXJlZGA6IHdoZXRoZXIgdGhlIHF1ZXJ5IHBhcmFtZXRlciBpcyBtYW5kYXRvcnkgKGJvb2xlYW4pCi0gYHNjaGVtYWA6IEpTT04gc2NoZW1hIChpbmxpbmUsIGZpbGUgb3IgZXh0ZXJuYWxseSBob3N0ZWQpCgpgYGB5bWwKcXVlcnlQYXJhbXM6CiAgLSBuYW1lOiAiZmlsdGVyIgogICAgZGVzY3JpcHRpb246ICJUaGUgZmlsdGVyIHBhcmFtZXRlciIKICAgIHJlcXVpcmVkOiB0cnVlCiAgICBzY2hlbWE6CiAgICAgIHR5cGU6ICJzdHJpbmciCmBgYAoKIyMjIyBgcGF0aFBhcmFtc2AKClBhdGggcGFyYW1ldGVycyBjYW4gYmUgZGVzY3JpYmVkIGFzIGZvbGxvdzoKCi0gYG5hbWVgOiB0aGUgbmFtZSBvZiB0aGUgcGF0aCBwYXJhbWV0ZXIKLSBgZGVzY3JpcHRpb25gOiBhIGRlc2NyaXB0aW9uIG9mIHRoZSBwYXRoIHBhcmFtZXRlcgotIGBzY2hlbWFgOiBKU09OIHNjaGVtYSAoaW5saW5lLCBmaWxlIG9yIGV4dGVybmFsbHkgaG9zdGVkKQoKYGBgeW1sCnBhdGhQYXJhbXM6CiAgLSBuYW1lOiAidXNlcm5hbWVJZCIKICAgIGRlc2NyaXB0aW9uOiAiVGhlIHVzZXJuYW1lSWQgcGFyYW1ldGVyIgogICAgc2NoZW1hOgogICAgICB0eXBlOiAic3RyaW5nIgpgYGAKCiMjIyMgYGNvb2tpZVBhcmFtc2AKCkNvb2tpZSBwYXJhbWV0ZXJzIGNhbiBiZSBkZXNjcmliZWQgYXMgZm9sbG93OgoKLSBgbmFtZWA6IHRoZSBuYW1lIG9mIHRoZSBjb29raWUgcGFyYW1ldGVyCi0gYGRlc2NyaXB0aW9uYDogYSBkZXNjcmlwdGlvbiBvZiB0aGUgY29va2llIHBhcmFtZXRlcgotIGByZXF1aXJlZGA6IHdoZXRoZXIgdGhlIGNvb2tpZSBwYXJhbWV0ZXIgaXMgbWFuZGF0b3J5IChib29sZWFuKQotIGBzY2hlbWFgOiBKU09OIHNjaGVtYSAoaW5saW5lLCBmaWxlIG9yIGV4dGVybmFsbHkgaG9zdGVkKQoKYGBgeW1sCmNvb2tpZVBhcmFtczoKICAtIG5hbWU6ICJzZXNzaW9uSWQiCiAgICBkZXNjcmlwdGlvbjogIlRoZSBzZXNzaW9uSWQgcGFyYW1ldGVyIgogICAgcmVxdWlyZWQ6IHRydWUKICAgIHNjaGVtYToKICAgICAgdHlwZTogInN0cmluZyIKYGBgCgojIyMjIGBoZWFkZXJQYXJhbXNgIC0gUmVxdWVzdCBIZWFkZXJzCgpSZXF1ZXN0IEhlYWRlcnMgY2FuIGJlIGRlc2NyaWJlZCBhcyBmb2xsb3c6CgotIGBuYW1lYDogdGhlIG5hbWUgb2YgdGhlIGhlYWRlcgotIGBkZXNjcmlwdGlvbmA6IGEgZGVzY3JpcHRpb24gb2YgdGhlIGhlYWRlcgotIGByZXF1aXJlZGA6IHdoZXRoZXIgdGhlIGhlYWRlciBpcyBtYW5kYXRvcnkgKGJvb2xlYW4pCi0gYHNjaGVtYWA6IEpTT04gc2NoZW1hIChpbmxpbmUsIGZpbGUgb3IgZXh0ZXJuYWxseSBob3N0ZWQpCgpgYGB5bWwKaGVhZGVyUGFyYW1zOgogIC0gbmFtZTogIkNvbnRlbnQtVHlwZSIKICAgIGRlc2NyaXB0aW9uOiAiVGhlIGNvbnRlbnQgdHlwZSIKICAgIHJlcXVpcmVkOiB0cnVlCiAgICBzY2hlbWE6CiAgICAgIHR5cGU6ICJzdHJpbmciCmBgYAoKIyMjIyBgc2VjdXJpdHlgCgpUaGUgYHNlY3VyaXR5YCBwcm9wZXJ0eSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIFtTZWN1cml0eSBTY2hlbWVdKCNzZWN1cml0eXNjaGVtZXMpIHRvIGFwcGx5IHRvIHRoZSBIVFRQIFJlcXVlc3QuIElmIHlvdSBoYXZlIGFwcGxpZWQgYW4gYHNlY3VyaXR5YCAoW3NlZSBTZWN1cml0eSBvbiBlYWNoIG9wZXJhdGlvbl0oI3NlY3VyaXR5LW9uLWVhY2gtb3BlcmF0aW9uKSkgdGhlbiB5b3UgY2FuIGVpdGhlciBsZWF2ZSB0aGlzIGZpZWxkIG9mZiwgb3IgdG8gb3ZlcnJpZGUgaXQgd2l0aCBhIGRpZmZlcmVudCBzY2hlbWUgeW91IGNhbiB3cml0ZSBpdCBsaWtlOgoKYGBgeW1sCmN1c3RvbToKICBkb2N1bWVudGF0aW9uOgogICAgc2VjdXJpdHlTY2hlbWVzOgogICAgICBteV9hcGlfa2V5OgogICAgICAgIHR5cGU6IGFwaUtleQogICAgICAgIG5hbWU6IGFwaV9rZXkKICAgICAgICBpbjogaGVhZGVyCiAgICAgIHBldHN0b3JlX2F1dGg6CiAgICAgICAgdHlwZTogb2F1dGgyCiAgICAgICAgZmxvd3M6CiAgICAgICAgICBpbXBsaWNpdDoKICAgICAgICAgICAgYXV0aG9yaXphdGlvblVybDogaHR0cHM6Ly9leGFtcGxlLmNvbS9hcGkvb2F1dGgvZGlhbG9nCiAgICAgICAgICAgIHNjb3BlczoKICAgICAgICAgICAgICB3cml0ZTpwZXRzOiBtb2RpZnkgcGV0cyBpbiB5b3VyIGFjY291bnQKICAgICAgICAgICAgICByZWFkOnBldHM6IHJlYWQgeW91ciBwZXRzCiAgICBzZWN1cml0eToKICAgICAgLSBteV9hcGlfa2V5OiBbXQoKZnVuY3Rpb25zOgogIGdldERhdGE6CiAgICBldmVudHM6CiAgICAgIC0gaHR0cDoKICAgICAgICAgIGRvY3VtZW50YXRpb246CiAgICAgICAgICAgIHNlY3VyaXR5OgogICAgICAgICAgICAgIC0gcGV0c3RvcmVfYXV0aDoKICAgICAgICAgICAgICAgICAgLSB3cml0ZTpwZXRzCiAgICAgICAgICAgICAgICAgIC0gcmVhZDpwZXRzCmBgYAoKSWYgeW91IGhhdmUgc3BlY2lmaWVkIGFuIGBzZWN1cml0eWAgYXQgdGhlIGRvY3VtZW50IHJvb3QsIGJ1dCB0aGlzIEhUVFAgUmVxdWVzdCBzaG91bGQgbm90IGFwcGx5IGFueSBzZWN1cml0eSBzY2hlbWVzLCB5b3Ugc2hvdWxkIHNldCBzZWN1cml0eSB0byBiZSBhbiBhcnJheSB3aXRoIGFuIGVtcHR5IG9iamVjdDoKCmBgYHltbApjdXN0b206CiAgZG9jdW1lbnRhdGlvbjoKICAgIHNlY3VyaXR5U2NoZW1lczoKICAgICAgbXlfYXBpX2tleToKICAgICAgICB0eXBlOiBhcGlLZXkKICAgICAgICBuYW1lOiBhcGlfa2V5CiAgICAgICAgaW46IGhlYWRlcgogICAgc2VjdXJpdHk6CiAgICAgIC0gbXlfYXBpX2tleTogW10KCmZ1bmN0aW9uczoKICBnZXREYXRhOgogICAgZXZlbnRzOgogICAgICAtIGh0dHA6CiAgICAgICAgICBkb2N1bWVudGF0aW9uOgogICAgICAgICAgICBzZWN1cml0eToKICAgICAgICAgICAgICAtIHt9CmBgYAoKIyMjIyMgcHJpdmF0ZQoKSWYgeW91IHVzZSB0aGUgW3ByaXZhdGVdKGh0dHBzOi8vd3d3LnNlcnZlcmxlc3MuY29tL2ZyYW1ld29yay9kb2NzL3Byb3ZpZGVycy9hd3MvZXZlbnRzL2FwaWdhdGV3YXkjc2V0dGluZy1hcGkta2V5cy1mb3IteW91ci1yZXN0LWFwaSkgcHJvcGVydHkgb24geW91ciBldmVudDoKCmBgYHltbApmdW5jdGlvbnM6CiAgZ2V0RGF0YToKICAgIGV2ZW50czoKICAgICAgLSBodHRwOgogICAgICAgICAgcGF0aDogLwogICAgICAgICAgbWV0aG9kOiBnZXQKICAgICAgICAgIHByaXZhdGU6IHRydWUKYGBgCgpJdCB3aWxsIGF1dG9tYXRpY2FsbHkgc2V0dXAgYW4gYXBpS2V5IHNlY3VyaXR5IHNjaGVtZSBvZiBgeC1hcGkta2V5YCBhdHRhY2hlZCB0byB0aGF0IG1ldGhvZC4gWW91IGRvbid0IG5lZWQgdG8gYWRkIHRoaXMgdG8gdGhlIFtTZWN1cml0eSBTY2hlbWVdKCNzZWN1cml0eXNjaGVtZXMpIGluIHRoZSBtYWluIGRvY3VtZW50YXRpb24uIElmIHlvdSBoYXZlIGFscmVhZHkgYWRkZWQgYSBTZWN1cml0eSBTY2hlbWUgb2YgYW4gYGFwaUtleWAgd2l0aCBhIG5hbWUgb2YgYHgtYXBpLWtleWAsIGl0IHdpbGwgYXNzb2NpYXRlIHdpdGggdGhhdCBrZXkuCgpgYGB5bWwKY3VzdG9tOgogIGRvY3VtZW50YXRpb246CiAgICBzZWN1cml0eVNjaGVtZXM6CiAgICAgIG15X2FwaV9rZXk6CiAgICAgICAgdHlwZTogYXBpS2V5CiAgICAgICAgbmFtZTogeC1hcGkta2V5CiAgICAgICAgaW46IGhlYWRlcgogICAgc2VjdXJpdHk6CiAgICAgIC0gbXlfYXBpX2tleTogW10KCmZ1bmN0aW9uczoKICBnZXREYXRhOgogICAgZXZlbnRzOgogICAgICAtIGh0dHA6CiAgICAgICAgICBwYXRoOiAvCiAgICAgICAgICBtZXRob2Q6IGdldAogICAgICAgICAgcHJpdmF0ZTogdHJ1ZQogICAgICAgICAgZG9jdW1lbnRhdGlvbjogLi4uCmBgYAoKV2lsbCBzZXQgdGhlIFNlY3VyaXR5IFNjaGVtZSB0byBgbXlfYXBpX2tleWAgZm9yIHRoYXQgb3BlcmF0aW9uLgoKIyMjIyBgcmVxdWVzdE1vZGVsc2AKClRoZSBgcmVxdWVzdE1vZGVsc2AgcHJvcGVydHkgYWxsb3dzIHlvdSB0byBkZWZpbmUgbW9kZWxzIGZvciB0aGUgSFRUUCBSZXF1ZXN0IG9mIHRoZSBmdW5jdGlvbiBldmVudC4gWW91IGNhbiBkZWZpbmUgYSBkaWZmZXJlbnQgbW9kZWwgZm9yIGVhY2ggZGlmZmVyZW50IGBDb250ZW50LVR5cGVgLiBZb3UgY2FuIGRlZmluZSBhIHJlZmVyZW5jZSB0byB0aGUgcmVsZXZhbnQgcmVxdWVzdCBtb2RlbCBuYW1lZCBpbiB0aGUgYG1vZGVsc2Agc2VjdGlvbiBvZiB5b3VyIGNvbmZpZ3VyYXRpb24gKHNlZSBbRGVmaW5pbmcgTW9kZWxzXSgjbW9kZWxzKSBzZWN0aW9uKS4KCmBgYHltbApyZXF1ZXN0TW9kZWxzOgogIGFwcGxpY2F0aW9uL2pzb246ICJDcmVhdGVSZXF1ZXN0IgogIGFwcGxpY2F0aW9uL3htbDogIkNyZWF0ZVJlcXVlc3RYTUwiCmBgYAoKIyMjIyBgbWV0aG9kUmVzcG9uc2VzYAoKYG1ldGhvZFJlc3BvbnNlc2AgaXMgYSBtYW5kYXRvcnkgcHJvcGVydHkgYW5kIHNob3VsZCBpbmNsdWRlIHRoZSBgcmVzcG9uc2VCb2R5YCBhbmQgYGRlc2NyaXB0aW9uYCBwcm9wZXJ0aWVzLgoKWW91IGNhbiBkZWZpbmUgdGhlIHJlc3BvbnNlIHNjaGVtYXMgYnkgZGVmaW5pbmcgcHJvcGVydGllcyBmb3IgeW91ciBmdW5jdGlvbiBldmVudC4KCkZvciBhbiBleGFtcGxlIG9mIGEgYG1ldGhvZFJlc3BvbnNlc2AgY29uZmlndXJhdGlvbiBmb3IgYW4gZXZlbnQgc2VlIGJlbG93OgoKYGBgeW1sCm1ldGhvZFJlc3BvbnNlOgogIC0gc3RhdHVzQ29kZTogMjAwCiAgICByZXNwb25zZUJvZHk6CiAgICAgIGRlc2NyaXB0aW9uOiBTdWNjZXNzCiAgICByZXNwb25zZU1vZGVsczoKICAgICAgYXBwbGljYXRpb24vanNvbjogIkNyZWF0ZVJlc3BvbnNlIgogICAgICBhcHBsaWNhdGlvbi94bWw6ICJDcmVhdGVSZXNwb25zZVhNTCIKICAgIGxpbmtzOgogICAgICBnZXREYXRhTGluazoKICAgICAgICBvcGVyYXRpb246IGdldERhdGEKICAgICAgICBkZXNjcmlwdGlvbjogVGhlIGlkIGNyZWF0ZWQgaGVyZSBjYW4gYmUgdXNlZCB0byBnZXQgRGF0YQogICAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgICBjb250ZW50SWQ6ICRyZXNwb25zZS5ib2R5Iy9pZAogICAgcmVzcG9uc2VIZWFkZXJzOgogICAgICBYLVJhdGUtTGltaXQtTGltaXQ6CiAgICAgICAgZGVzY3JpcHRpb246IFRoZSBudW1iZXIgb2YgYWxsb3dlZCByZXF1ZXN0cyBpbiB0aGUgY3VycmVudCBwZXJpb2QKICAgICAgICBzY2hlbWE6CiAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgIFgtUmF0ZS1MaW1pdC1SZW1haW5pbmc6CiAgICAgICAgZGVzY3JpcHRpb246IFRoZSBudW1iZXIgb2YgcmVtYWluaW5nIHJlcXVlc3RzIGluIHRoZSBjdXJyZW50IHBlcmlvZAogICAgICAgIHNjaGVtYToKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgWC1SYXRlLUxpbWl0LVJlc2V0OgogICAgICAgIGRlc2NyaXB0aW9uOiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgbGVmdCBpbiB0aGUgY3VycmVudCBwZXJpb2QKICAgICAgICBzY2hlbWE6CiAgICAgICAgICB0eXBlOiBpbnRlZ2VyCmBgYAoKIyMjIyMgYHJlc3BvbnNlTW9kZWxzYAoKVGhlIGByZXNwb25zZU1vZGVsc2AgcHJvcGVydHkgYWxsb3dzIHlvdSB0byBkZWZpbmUgbW9kZWxzIGZvciB0aGUgSFRUUCBSZXNwb25zZSBvZiB0aGUgZnVuY3Rpb24gZXZlbnQuIFlvdSBjYW4gZGVmaW5lIGEgZGlmZmVyZW50IG1vZGVsIGZvciBlYWNoIGRpZmZlcmVudCBgQ29udGVudC1UeXBlYC4gWW91IGNhbiBkZWZpbmUgYSByZWZlcmVuY2UgdG8gdGhlIHJlbGV2YW50IHJlc3BvbnNlIG1vZGVsIG5hbWVkIGluIHRoZSBgbW9kZWxzYCBzZWN0aW9uIG9mIHlvdXIgY29uZmlndXJhdGlvbiAoc2VlIFtEZWZpbmluZyBNb2RlbHNdKCNtb2RlbHMpIHNlY3Rpb24pLgoKYGBgeW1sCnJlc3BvbnNlTW9kZWxzOgogIGFwcGxpY2F0aW9uL2pzb246ICJDcmVhdGVSZXNwb25zZSIKICBhcHBsaWNhdGlvbi94bWw6ICJDcmVhdGVSZXNwb25zZVhNTCIKYGBgCgojIyMjIyBgbGlua3NgCgpUaGUgYGxpbmtzYCBwcm9wZXJ0eSBhbGxvd3MgeW91IHRvIGRlZmluZSBob3cgb3BlcmF0aW9ucyBhcmUgbGlua2VkIHRvIGVhY2ggb3RoZXI6CgpgYGB5bWwKbGlua3M6CiAgbGlua05hbWU6CiAgICBvcGVyYXRpb246IGdldENvbnRlbnQKICAgIGRlc2NyaXB0aW9uOiBUaGUgY29udGVudElkIGNyZWF0ZWQgaGVyZSBjYW4gYmUgdXNlZCB0byBnZXQgY29udGVudAogICAgcGFyYW1ldGVyczoKICAgICAgY29udGVudElkOiAkcmVzcG9uc2UuYm9keSMvY29udGVudElkCmBgYAoKV2hlcmUgd2UgYXJlIHNwZWNpZnlpbmcgb3BlcmF0aW9uLCB0aGlzIHNob3VsZCBtYXAgdG8gdGhlIGZ1bmN0aW9uIG5hbWU6CgpgYGB5bWwKZnVuY3Rpb25zOgogIGNyZWF0ZUNvbnRlbnQ6CiAgICBldmVudHM6CiAgICAgIC0gaHR0cEFwaToKICAgICAgICAgIHBhdGg6IC8KICAgICAgICAgIG1ldGhvZDogUE9TVAogICAgICAgICAgZG9jdW1lbnRhdGlvbjogLi4uCiAgZ2V0Q29udGVudDoKICAgIGV2ZW50czoKICAgICAgLSBodHRwOgogICAgICAgICAgcGF0aDogL3tjb250ZW50SWR9CiAgICAgICAgICBtZXRob2Q6IFBPU1QKICAgICAgICAgIGRvY3VtZW50YXRpb246IC4uLgpgYGAKCklmIG91ciBleGFtcGxlIGxpbmsgd2FzIGF0dGFjaGVkIHRvIHRoZSAqKmNyZWF0ZUNvbnRlbnQqKiBmdW5jdGlvbiwgYW5kIHdlIHdhbnRlZCB0aGUgYGNvbnRlbnRJZGAgdGhhdCB3YXMgY3JlYXRlZCB0byBiZSB1c2VkIG9uIHRoZSAqKmdldENvbnRlbnQqKiBmdW5jdGlvbiBpbiB0aGUgYGNvbnRlbnRJZGAgcGFyYW1ldGVyLCB3ZSdkIHNwZWNpZnkgdGhlIGBvcGVyYXRpb25gIHByb3BlcnR5IGFzICoqZ2V0Q29udGVudCoqLiBJZiBob3dldmVyLCB5b3UgaGFkIHNwZWNpZmllZCBhbiBvcGVyYXRpb25JZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiB0byBvdmVycmlkZSB0aGUgYXV0b21hdGljYWxseSBjcmVhdGVkIG9uZToKCmBgYHltbApnZXRDb250ZW50OgogIGV2ZW50czoKICAgIC0gaHR0cDoKICAgICAgICBwYXRoOiAve2NvbnRlbnRJZH0KICAgICAgICBtZXRob2Q6IFBPU1QKICAgICAgICBkb2N1bWVudGF0aW9uOgogICAgICAgICAgb3BlcmF0aW9uSWQ6IGdldE15Q29udGVudApgYGAKCllvdSBjYW4gcmVmZXIgdG8gdGhlIGBvcGVyYXRpb25JZGAgdGhhdCB5b3UgY3JlYXRlZC4KCllvdSBjYW4gcmVhZCBtb3JlIGFib3V0IFtsaW5rc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9saW5rcy8pIG9uIHRoZSBzd2FnZ2VyLmlvIHNpdGUgYW5kIGluIHRoZSBbT3BlbkFQSV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40I2xpbmstb2JqZWN0KSBzcGVjaWZpY2F0aW9uLiBUaGV5IGRvbid0IHNlZW0gd2lkZWx5IHN1cHBvcnRlZCBqdXN0IHlldCwgYnV0IHBlcmhhcHMgdGhleSdsbCBpbXByb3ZlIHlvdXIgZG9jdW1lbnRhdGlvbi4KCiMjIyMjIGByZXNwb25zZUhlYWRlcnNgCgpUaGUgYHJlc3BvbnNlSGVhZGVyc2AgcHJvcGVydHkgYWxsb3dzIHlvdSB0byBkZWZpbmUgdGhlIGhlYWRlcnMgZXhwZWN0ZWQgaW4gYSBIVFRQIFJlc3BvbnNlIG9mIHRoZSBmdW5jdGlvbiBldmVudC4gVGhpcyBzaG91bGQgb25seSBjb250YWluIGEgZGVzY3JpcHRpb24gYW5kIGEgc2NoZW1hLCB3aGljaCBtdXN0IGJlIGEgSlNPTiBzY2hlbWEgKGlubGluZSwgZmlsZSBvciBleHRlcm5hbGx5IGhvc3RlZCkuCgpgYGB5bWwKcmVzcG9uc2VIZWFkZXJzOgogIFgtUmF0ZS1MaW1pdC1MaW1pdDoKICAgIGRlc2NyaXB0aW9uOiBUaGUgbnVtYmVyIG9mIGFsbG93ZWQgcmVxdWVzdHMgaW4gdGhlIGN1cnJlbnQgcGVyaW9kCiAgICBzY2hlbWE6CiAgICAgIHR5cGU6IGludGVnZXIKYGBgCgojIyMjIyMgQ09SUwoKWW91IGNhbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIENPUlMgcmVzcG9uc2UgaGVhZGVycyBieSBzZXR0aW5nIGBjb3JzYCBhdCB0aGUgZnVuY3Rpb24gbGV2ZWwuIFNlcnZlcmxlc3MgYWxsb3dzIHlvdSB0byBtb2RpZnkgaG93IENPUlMgaXMgc2V0dXAsIHNvIHlvdSBjYW4gaGF2ZSB0aGUgZGVmYXVsdCBvcHRpb25zIHdpdGggYGNvcnM6IHRydWVgLCBvciB5b3UgY2FuIG1vZGlmeSB0aGUgc2V0dGluZ3MgYXMgc2hvd24gaW4gdGhlIFtzZXJ2ZXJsZXNzIGRvY3VtZW50YXRpb24gZm9yIENPUlNdKGh0dHBzOi8vd3d3LnNlcnZlcmxlc3MuY29tL2ZyYW1ld29yay9kb2NzL3Byb3ZpZGVycy9hd3MvZXZlbnRzL2FwaWdhdGV3YXkjZW5hYmxpbmctY29ycykuCgpUaGUgZ2VuZXJhdG9yIHdpbGwgaW50ZXJwcmV0IHlvdXIgc2V0dGluZ3MgZm9yIENPUlMgYW5kIGF1dG9tYXRpY2FsbHkgYWRkIHRoZSByZXNwb25zZSBoZWFkZXJzLiBJZiBmb3Igd2hhdGV2ZXIgcmVhc29uIHlvdSB3aXNoIHRvIG92ZXJyaWRlIHRoZXNlLCB5b3UgY2FuIHNldCB0aGVtIHZpYSB0aGUgYWJvdmUgYHJlc3BvbnNlSGVhZGVyc2Agc2V0dGluZyBhbmQgaXQnbGwgYXBwbHkgeW91ciBvdmVycmlkZXMuCgojIyMjIyBPV0FTUAoKWW91IGNhbiBtYWtlIHVzZSBvZiB0aGUgW09XQVNQIFNlY3VyZSBIZWFkZXJzXShodHRwczovL293YXNwLm9yZy93d3ctcHJvamVjdC1zZWN1cmUtaGVhZGVycy8jeC1wZXJtaXR0ZWQtY3Jvc3MtZG9tYWluLXBvbGljaWVzKSB0byBnZW5lcmF0ZSByZXNwb25zZSBoZWFkZXJzLiBUaGVzZSBhcmUgYSBzZWxlY3Rpb24gb2YgcmVzcG9uc2UgaGVhZGVycyB3aXRoIGRlZmF1bHQgdmFsdWVzIHRoYXQgT1dBU1AgcmVjb21tZW5kcyByZXR1cm5pbmcgd2l0aCB5b3VyIHJlc3BvbnNlIHRvIGhlbHAgc2VjdXJlIHlvdXIgYXBwbGljYXRpb24uCgpUaGUgT1dBU1AgU2VjdXJlIEhlYWRlcnMgUHJvamVjdCBjb250YWlucyBhIHNldCBvZiByZWNvbW1lbmRlZCBoZWFkZXJzIHRvIHJldHVybiB3aXRoIHJlY29tbWVuZGVkIHZhbHVlcywgd2hlbiBnZW5lcmF0aW5nIHRoZSBkb2N1bWVudGF0aW9uLCB0aGUgZ2VuZXJhdG9yIHdpbGwgYXR0ZW1wdCB0byBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgZG9jdW1lbnQgYW5kIGFwcGx5IHRoZSBsYXRlc3QgcmVjb21tZW5kYXRpb25zLiBJZiB5b3UgZG8gbm90IGFsbG93IG91dHNpZGUgY29ubmVjdGlvbnMsIGl0IHdpbGwgZGVmYXVsdCB0byBhIHZlcnNpb24gb2YgcmVjb21tZW5kYXRpb25zIGZyb20gKioyMDI1LTA4LTE3IDE1OjIzOjQ3IFVUQyoqLgoKTGlrZSBDT1JTLCBpZiB5b3UgaGF2ZSBhbHJlYWR5IHNldCBhbnkgb2YgdGhlIE9XQVNQIFNlY3VyZSBoZWFkZXJzIHZpYSBgcmVzcG9uc2VIZWFkZXJzYCwgaXQgd2lsbCBub3Qgb3ZlcndyaXRlIHRoZW0uCgpUbyBtYWtlIHVzZSBvZiBPV0FTUCBTZWN1cmUgSGVhZGVycywgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZzoKCiMjIyMjIyBBbGwgT1dBU1AgU2VjdXJlIEhlYWRlcnMKCmBgYHltbAptZXRob2RSZXNwb25zZToKICAtIHN0YXR1c0NvZGU6IDIwMAogICAgcmVzcG9uc2VCb2R5OgogICAgICBkZXNjcmlwdGlvbjogU3VjY2VzcwogICAgcmVzcG9uc2VNb2RlbHM6CiAgICAgIGFwcGxpY2F0aW9uL2pzb246ICJDcmVhdGVSZXNwb25zZSIKICAgIG93YXNwOiB0cnVlCmBgYAoKVGhpcyB3aWxsIHVzZSB0aGUgZnVsbCBzZXQgb2YgT1dBU1AgU2VjdXJlIEhlYWRlcnMgYW5kIHRoZWlyIHJlY29tbWVuZGVkIHZhbHVlcy4gU29tZSBvZiB0aGVzZSBtaWdodCBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHlvdXIgYXBwbGljYXRpb24uCgojIyMjIyMgU3Vic2V0IG9mIE9XQVNQIFNlY3VyZSBIZWFkZXJzCgpgYGB5bWwKbWV0aG9kUmVzcG9uc2U6CiAgLSBzdGF0dXNDb2RlOiAyMDAKICAgIHJlc3BvbnNlQm9keToKICAgICAgZGVzY3JpcHRpb246IFN1Y2Nlc3MKICAgIHJlc3BvbnNlTW9kZWxzOgogICAgICBhcHBsaWNhdGlvbi9qc29uOiAiQ3JlYXRlUmVzcG9uc2UiCiAgICBvd2FzcDoKICAgICAgY2FjaGVDb250cm9sOiB0cnVlCiAgICAgIHJlZmVycmVyUG9saWN5OiB0cnVlCmBgYAoKVGhpcyB3aWxsIHNldCBvbmx5IHRoZSBgY2FjaGVDb250cm9sYCBhbmQgYHJlZmVycmVyUG9saWN5YCByZXNwb25zZSBoZWFkZXIgd2l0aCB0aGUgZGVmYXVsdCByZWNvbW1lbmRhdGlvbnMuCgpUaGUgZnVsbCBsaXN0IG9mIE9XQVNQIFNlY3VyZSBIZWFkZXJzIHlvdSBjYW4gc2V0IGFyZToKCi0gY2FjaGVDb250cm9sIC0gQ2FjaGUtQ29udHJvbCwKLSBjbGVhclNpdGVEYXRhIC0gQ2xlYXItU2l0ZS1EYXRhLAotIGNvbnRlbnRTZWN1cml0eVBvbGljeSAtIENvbnRlbnQtU2VjdXJpdHktUG9saWN5LAotIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kgLSBDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5LAotIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5IC0gQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3ksCi0gY3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeSAtIENyb3NzLU9yaWdpbi1SZXNvdXJjZS1Qb2xpY3ksCi0gcGVybWlzc2lvbnNQb2xpY3kgLSBQZXJtaXNzaW9ucy1Qb2xpY3ksCi0gcmVmZXJyZXJQb2xpY3kgLSBSZWZlcnJlci1Qb2xpY3ksCi0gc3RyaWN0VHJhbnNwb3J0U2VjdXJpdHkgLSBTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5LAotIHhDb250ZW50VHlwZU9wdGlvbnMgLSBYLUNvbnRlbnQtVHlwZS1PcHRpb25zLAotIHhGcmFtZU9wdGlvbnMgLSBYLUZyYW1lLU9wdGlvbnMsCi0geFBlcm1pdHRlZENyb3NzRG9tYWluUG9saWNpZXMgLSBYLVBlcm1pdHRlZC1Dcm9zcy1Eb21haW4tUG9saWNpZXMKLSB4RE5TUHJlZmV0Y2hDb250cm9sIC0gWC1ETlMtUHJlZmV0Y2gtQ29udHJvbAoKWW91IHNob3VsZCBub3RlIHRoYXQgYFByYWdtYWAgaGFzIGJlZW4gW2RlcHJlY2F0ZWQgYnkgb3dhc3BdKGh0dHBzOi8vb3dhc3Aub3JnL3d3dy1wcm9qZWN0LXNlY3VyZS1oZWFkZXJzLyNwcmFnbWEpLCB0aGlzIHBsdWdpbiB3aWxsIGlzc3VlIGEgd2FybmluZyB3aGVuIHlvdSBhcmUgc3RpbGwgdXNpbmcgUHJhZ21hIGFuZCBtaWdodCBkcm9wIHN1cHBvcnQuCgojIyMjIyMgU3Vic2V0IG9mIE9XQVNQIFNlY3VyZSBIZWFkZXJzIHdpdGggdXNlciBkZWZpbmVkIHZhbHVlcwoKSWYgeW91IHdpc2ggdG8gb3ZlcnJpZGUgdGhlIE9XQVNQIFNlY3VyZSBIZWFkZXJzLCB5b3UgY2FuIHdyaXRlIHlvdXIgYG1ldGhvZFJlc3BvbnNlYCBsaWtlOgoKYGBgeW1sCm1ldGhvZFJlc3BvbnNlOgogIC0gc3RhdHVzQ29kZTogMjAwCiAgICByZXNwb25zZUJvZHk6CiAgICAgIGRlc2NyaXB0aW9uOiBTdWNjZXNzCiAgICByZXNwb25zZU1vZGVsczoKICAgICAgYXBwbGljYXRpb24vanNvbjogIkNyZWF0ZVJlc3BvbnNlIgogICAgb3dhc3A6CiAgICAgIGNhY2hlQ29udHJvbDoKICAgICAgICB2YWx1ZTogbm8tc3RvcmUKYGBgCgpUaGlzIHdpbGwgc2V0IHRoZSBgQ2FjaGUtQ29udHJvbGAgUmVzcG9uc2UgSGVhZGVyIHRvIGhhdmUgYSB2YWx1ZSBvZiAibm8tc3RvcmUiIHJhdGhlciB0aGFuIGFueSB2YWx1ZSB0aGUgT1dBU1AgU2VjdXJlIEhlYWRlcnMgUHJvamVjdCByZWNvbW1lbmRzLgoKIyMgVmFsaWRhdG9yCgpWYWxpZGF0aW9uIGZvciB0aGUgT3BlbkFQSSBEZXNjcmlwdGlvbiBpcyBub3cgKGFzIG9mIDAuMC45MCkgZG9uZSBieSBbUmVkb2NseV0oaHR0cHM6Ly9yZWRvY2x5LmNvbS8pLiBUaGlzIGlzIGEgc2xpZ2h0bHkgbGVzcyBvcGluaW9uYXRlZCB2YWxpZGF0b3IgZm9yIGFuIE9wZW5BUEkgRGVzY3JpcHRpb24sIGl0IHNob3VsZCByZXN1bHQgaW4gbGVzcyBlcnJvcnMgYXJvdW5kICJZQU1MIEFuY2hvcnMiLiBJdCdzIGFsc28gYSBtYWludGFpbmVkIGxpYnJhcnksIGFuZCBoYXMgc3VwcG9ydCBmb3IgT3BlbkFQSSAzLjEuMCB3aGljaCBJIGhvcGUgdG8gYmUgYWJsZSB0byBzdXBwb3J0IHZlcnkgc29vbi4KCkkgYW0gbWFraW5nIHVzZSBvZiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AcmVkb2NseS9vcGVuYXBpLWNvcmUsIHdoaWNoIEkgaGF2ZSBiZWVuIHdhcm5lZCBpcyBsaWtlbHkgdG8gY2hhbmdlLiBJZiB5b3Ugbm90aWNlIGFueXRoaW5nIGdvaW5nIHdyb25nIHdpdGggdmFsaWRhdGlvbiBvZiB5b3VyIE9wZW5BUEkgRGVzY3JpcHRpb24sIGZlZWwgZnJlZSB0byBvcGVuIGFuIGlzc3VlIGhlcmUuIEkgbWFrZSBhY3RpdmUgdXNlIG9mIHRoaXMgbGlicmFyeSwgc28gd2lsbCBob3BlZnVsbHkgY29tZSBhY3Jvc3MgdGhvc2UgaXNzdWVzIHRvby4KCiMjIyBSdWxlcwoKSSBoYXZlIGNvbmZpZ3VyZWQgdGhlIHZhbGlkYXRvciB0byB1c2UgdGhlc2UgUnVsZXM6CgotIFtzdHJ1Y3RdKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9jbGkvcnVsZXMvb2FzL3N0cnVjdCkKLSBbcGF0aC1wYXJhbWV0ZXJzLWRlZmluZWRdKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9jbGkvcnVsZXMvb2FzL3BhdGgtcGFyYW1ldGVycy1kZWZpbmVkKQotIFtvcGVyYXRpb24tMnh4LXJlc3BvbnNlXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL3J1bGVzL29hcy9vcGVyYXRpb24tMnh4LXJlc3BvbnNlKQotIFtvcGVyYXRpb24tNHh4LXJlc3BvbnNlXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL3J1bGVzL29hcy9vcGVyYXRpb24tNHh4LXJlc3BvbnNlKQotIFtvcGVyYXRpb24tb3BlcmF0aW9uSWQtdW5pcXVlXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL3J1bGVzL29hcy9vcGVyYXRpb24tb3BlcmF0aW9uSWQtdW5pcXVlKQotIFtwYXRoLWRlY2xhcmF0aW9uLW11c3QtZXhpc3RdKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9jbGkvcnVsZXMvb2FzL3BhdGgtZGVjbGFyYXRpb24tbXVzdC1leGlzdCkKCkhvd2V2ZXIsIHlvdSBjYW4gY29uZmlndXJlIHlvdXIgb3duIHJ1bGVzIGZyb20gdGhlIFtydWxlc2V0IGF2YWlsYWJsZSBvbiB0aGUgUmVkb2NseSBzaXRlXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL3J1bGVzL2J1aWx0LWluLXJ1bGVzLykuIFRvIGRvIHRoaXMsIHlvdSB3aWxsIG5lZWQgdG8gY3JlYXRlIGEgYHJlZG9jbHkuanNvbmAgZmlsZSB3aXRoaW4gYW4gYG9wdGlvbnNgIGZvbGRlci4gVGhlIGZpbGUgc2hvdWxkIGxvb2sgbGlrZToKCmBgYGpzb24KewogICJzdHJ1Y3QiOiAiZXJyb3IiLAogICJwYXRoLXBhcmFtZXRlcnMtZGVmaW5lZCI6ICJlcnJvciIsCiAgIm9wZXJhdGlvbi0yeHgtcmVzcG9uc2UiOiAiZXJyb3IiLAogICJvcGVyYXRpb24tNHh4LXJlc3BvbnNlIjogImVycm9yIiwKICAib3BlcmF0aW9uLW9wZXJhdGlvbklkLXVuaXF1ZSI6ICJlcnJvciIsCiAgInBhdGgtZGVjbGFyYXRpb24tbXVzdC1leGlzdCI6ICJlcnJvciIKfQpgYGAKClNpbmNlIHJ1bGVzIGNhbiBiZSBzZXQgdG8gIndhcm4iLCB5b3Ugbm8gbG9uZ2VyIGFyZSByZXF1aXJlZCB0byB0ZWxsIHRoZSBwbHVnaW4gdG8gaWdub3JlIGVycm9ycyB3aXRoIHRoZSBgLS12YWxpZGF0aW9uV2FybmAgZmxhZy4KCiMjIEV4YW1wbGUgY29uZmlndXJhdGlvbgoKUGxlYXNlIHZpZXcgdGhlIGV4YW1wbGUgW3NlcnZlcmxlc3MueW1sXSh0ZXN0L3NlcnZlcmxlc3MtdGVzdHMvYmVzdC9zZXJ2ZXJsZXNzLnltbCkuCgojIyBOb3RlcyBvbiBzY2hlbWFzCgpTY2hlbWFzIGNhbiBiZSBlaXRoZXI6IGlubGluZSwgaW4gZmlsZSBvciBleHRlcm5hbGx5IGhvc3RlZC4gSWYgdGhleSdyZSBpbmxpbmUgb3IgaW4gZmlsZSwgdGhlIHBsdWdpbiB3aWxsIGF0dGVtcHQgdG8gbm9ybWFsaXNlIHRoZSBzY2hlbWEgdG8gW09wZW5BUEkgMy4wLlggc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMC4wLm1kI3NjaGVtYU9iamVjdCkuCgpJZiB0aGV5IGV4aXN0IGFzIGFuIGV4dGVybmFsIHJlZmVyZW5jZSwgZm9yIGluc3RhbmNlOgoKYGBgeWFtbApzY2hlbWE6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9TY2hlbWFTdG9yZS9zY2hlbWFzdG9yZS9tYXN0ZXIvc3JjL3NjaGVtYXMvanNvbi9iZXR0ZXJjb2RlaHViLmpzb24KYGBgCgpXZSB1c2UgdGhlIHBsdWdpbiBbSlNPTiBTY2hlbWEgJFJlZiBQYXJzZXJdKGh0dHBzOi8vYXBpdG9vbHMuZGV2L2pzb24tc2NoZW1hLXJlZi1wYXJzZXIvKSB0byBhdHRlbXB0IHRvIHBhcnNlIGFuZCByZXNvbHZlIHRoZSByZWZlcmVuY2VzLiBUaGVyZSBhcmUgbGltaXRhdGlvbnMgdG8gdGhpcy4gQ29uc2lkZXIgdGhlIHNjaGVtYToKCmBgYGpzb24KewogICIkc2NoZW1hIjogImh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSIsCiAgInRpdGxlIjogIlJldXNhYmxlIERlZmluaXRpb25zIiwKICAidHlwZSI6ICJvYmplY3QiLAogICJpZCI6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vanNvbi1lZGl0b3IvanNvbi1lZGl0b3IvbWFzdGVyL3Rlc3RzL2ZpeHR1cmVzL2RlZmluaXRpb25zLmpzb24iLAogICJkZWZpbml0aW9ucyI6IHsKICAgICJhZGRyZXNzIjogewogICAgICAidGl0bGUiOiAiQWRkcmVzcyIsCiAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICJzdHJlZXRfYWRkcmVzcyI6IHsgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICJjaXR5IjogeyAidHlwZSI6ICJzdHJpbmciIH0sCiAgICAgICAgInN0YXRlIjogeyAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgfSwKICAgICAgInJlcXVpcmVkIjogWyJzdHJlZXRfYWRkcmVzcyJdCiAgICB9LAogICAgImxpbmsiOiB7ICIkcmVmcyI6ICIuL3Byb3BlcnRpZXMuanNvbiMvcHJvcGVydGllcy90aXRsZSIgfQogIH0sCiAgInByb3BlcnRpZXMiOiB7CiAgICAiYWRkcmVzcyI6IHsgIiRyZWZzIjogIiMvZGVmaW5pdGlvbnMvYWRkcmVzcyIgfQogIH0KfQpgYGAKCldoZXJlIHRoZSBkZWZpbml0aW9uICJsaW5rIiByZWZlcnMgdG8gYSBzY2hlbWEgaGVsZCBpbiBhIGRpcmVjdG9yeSB0aGF0IHRoZSByZXNvbHZlciBkb2VzIG5vdCBrbm93IGFib3V0LCB3ZSB3aWxsIG5vdCBiZSBhYmxlIHRvIGZ1bGx5IHJlc29sdmUgdGhlIHNjaGVtYSB3aGljaCB3aWxsIGxpa2VseSBjYXVzZSBlcnJvcnMgaW4gdmFsaWRhdGlvbiBvZiB0aGUgT3BlbkFQSSAzLjAuWCBEZXNjcmlwdGlvbi4KCkJlY2F1c2Ugb2YgdGhlIGRlcGVuZGVuY3kgd2UgdXNlIHRvIHBhcnNlIGV4dGVybmFsbHkgbGlua2VkIHNjaGVtYXMsIHdlIGNhbiBzdXBwbHkgb3VyIG93biBvcHRpb25zIHRvIHJlc29sdmUgc2NoZW1hcyB0aGF0IGFyZSBtb3JlIGRpZmZpY3VsdCB0aGFuIGEgc3RyYWlnaHQgZm9yd2FyZCBleGFtcGxlLgoKWW91IGNhbiBjcmVhdGUgeW91ciBvd24gb3B0aW9ucyBmaWxlOiBodHRwczovL2FwaXRvb2xzLmRldi9qc29uLXNjaGVtYS1yZWYtcGFyc2VyL2RvY3Mvb3B0aW9ucy5odG1sIHRvIHBhc3MgaW50byB0aGUgZGVwZW5kZW5jeSB0aGF0IGNvbnRhaW5zIGl0J3Mgb3duIHJlc29sdmVyIHRvIGFsbG93IHlvdSB0byByZXNvbHZlIHJlZmVyZW5jZXMgdGhhdCBtaWdodCBiZSBpbiBoYXJkIHRvIHJlYWNoIHBsYWNlcy4gSW4geW91ciBtYWluIHByb2plY3QgZm9sZGVyLCB5b3Ugc2hvdWxkIGhhdmUgYSBmb2xkZXIgY2FsbGVkIGBvcHRpb25zYCB3aXRoIGEgZmlsZSBjYWxsZWQgYHJlZi1wYXJzZXIuanNgIHRoYXQgbG9va3MgbGlrZToKCmBgYGpzCiJ1c2Ugc3RyaWN0IjsKCi8vIG9wdGlvbnMgZnJvbTogaHR0cHM6Ly9hcGl0b29scy5kZXYvanNvbi1zY2hlbWEtcmVmLXBhcnNlci9kb2NzL29wdGlvbnMuaHRtbAoKbW9kdWxlLmV4cG9ydHMgPSB7CiAgY29udGludWVPbkVycm9yOiB0cnVlLCAvLyBEb24ndCB0aHJvdyBvbiB0aGUgZmlyc3QgZXJyb3IKICBwYXJzZTogewogICAganNvbjogZmFsc2UsIC8vIERpc2FibGUgdGhlIEpTT04gcGFyc2VyCiAgICB5YW1sOiB7CiAgICAgIGFsbG93RW1wdHk6IGZhbHNlLCAvLyBEb24ndCBhbGxvdyBlbXB0eSBZQU1MIGZpbGVzCiAgICB9LAogICAgdGV4dDogewogICAgICBjYW5QYXJzZTogWyIudHh0IiwgIi5odG1sIl0sIC8vIFBhcnNlIC50eHQgYW5kIC5odG1sIGZpbGVzIGFzIHBsYWluIHRleHQgKHN0cmluZ3MpCiAgICAgIGVuY29kaW5nOiAidXRmMTYiLCAvLyBVc2UgVVRGLTE2IGVuY29kaW5nCiAgICB9LAogIH0sCiAgcmVzb2x2ZTogewogICAgZmlsZTogZmFsc2UsIC8vIERvbid0IHJlc29sdmUgbG9jYWwgZmlsZSByZWZlcmVuY2VzCiAgICBodHRwOiB7CiAgICAgIHRpbWVvdXQ6IDIwMDAsIC8vIDIgc2Vjb25kIHRpbWVvdXQKICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLCAvLyBJbmNsdWRlIGF1dGggY3JlZGVudGlhbHMgd2hlbiByZXNvbHZpbmcgSFRUUCByZWZlcmVuY2VzCiAgICB9LAogIH0sCiAgZGVyZWZlcmVuY2U6IHsKICAgIGNpcmN1bGFyOiBmYWxzZSwgLy8gRG9uJ3QgYWxsb3cgY2lyY3VsYXIgJHJlZnMKICAgIGV4Y2x1ZGVkUGF0aE1hdGNoZXI6ICgKICAgICAgcGF0aCAvLyBTa2lwIGRlcmVmZXJlbmNpbmcgY29udGVudCB1bmRlciBhbnkgJ2V4YW1wbGUnIGtleQogICAgKSA9PiBwYXRoLmluY2x1ZGVzKCIvZXhhbXBsZS8iKSwKICB9LAp9OwpgYGAKCklmIHlvdSBkb24ndCBzdXBwbHkgdGhpcyBmaWxlLCBpdCB3aWxsIHVzZSB0aGUgZGVmYXVsdCBvcHRpb25zLgoKIyMgTGljZW5zZQoKTUlUCg== readmeEtag: '"15d5bcc0a6d02636e7eb65dc4ae1eb6b6375414a"' readmeLastModified: Mon, 15 Dec 2025 12:25:20 GMT repositoryId: 495583813 description: >- Serverless plugin to export your config as OpenAPI v3 Documentation and Postman Collection V2 created: '2022-05-23T21:49:03Z' updated: '2026-01-29T13:47:07Z' language: JavaScript archived: false stars: 46 watchers: 2 forks: 18 owner: JaredCE logo: https://avatars.githubusercontent.com/u/770400?v=4 license: MIT repoEtag: '"6b5e00d06a1ee3af079dffe3831d2af86470a91aa4b5946b0aec1b78c5320d58"' repoLastModified: Thu, 29 Jan 2026 13:47:07 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/vuongtlt13/full-stack-fastapi-mysql v3: true repositoryMetadata: base64Readme: >- IyBGdWxsIFN0YWNrIEZhc3RBUEkgVGVtcGxhdGUKCiMjIyBOb3RlOiBUaGlzIHByb2plY3QgYmFzZWQgb24gdGhlIHByb2plY3QgaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RhcGkvZnVsbC1zdGFjay1mYXN0YXBpLXRlbXBsYXRlLCBidXQgdXNlICoqTXlTUUwqKiBpbnN0ZWFkIFBvc3RncmVTUUwKCiMjIERldmVsb3BtZW50CiMjIyAxLiBTdGFydCBpbmZyYQotIEluIGBiYWNrZW5kYCBmb2xkZXIsIHJ1biBjb21tYW5kCmBgYGJhc2gKICAgIG1ha2Ugc3RhcnQtaW5mcmEKYGBgCiMjIyAyLiBTdGFydCBCYWNrZW5kCi0gSW4gYGJhY2tlbmRgIGZvbGRlciwgc2V0dXAgYC52ZW52YCB1c2luZyBgdXZgCi0gcnVuIGFsZW1iaWMgZm9yIGNyZWF0aW5nIG1pZ3JhdGlvbiBmaWxlIGJ5IHVzaW5nIGNvbW1hbmQKYGBgYmFzaAogICAgbWFrZSBtaWdyYXRpb24tZ2VuZXJhdGUgaW5pdGlhbGl6ZV9tb2RlbHMKYGBgCi0gQXBwbHkgdGhlIG1pZ3JhdGlvbiBhbmQgc2VlZCBmb3IgaW5pdGlhbCB1c2VyCmBgYGJhc2gKICBtYWtlIG1pZ3JhdGUtdXAgJiYgbWFrZSBkYi1zZWVkCmBgYAoKLSBTdGFydCBmYXN0YXBpIGFwcGxpY2F0aW9uCmBgYGJhc2gKICAgIGZhc3RhcGkgZGV2IGFwcC9tYWluLnB5CmBgYAoKIyMjIDMuIFN0YXJ0IEZyb250ZW5kCi0gSW4gYGZyb250ZW5kYCBmb2xkZXIsIGluc3RhbGwgZGVwZW5kZW5jaWVzCmBgYGJhc2gKICAgIG5wbSBpbnN0YWxsCmBgYAotIFJ1biBmcm9udGVuZCBhcHAKYGBgYmFzaAogICAgbnBtIHJ1biBkZXYKYGBgCgojIyBUZWNobm9sb2d5IFN0YWNrIGFuZCBGZWF0dXJlcwoKLSDimqEgWyoqRmFzdEFQSSoqXShodHRwczovL2Zhc3RhcGkudGlhbmdvbG8uY29tKSBmb3IgdGhlIFB5dGhvbiBiYWNrZW5kIEFQSS4KICAgIC0g8J+nsCBbU1FMTW9kZWxdKGh0dHBzOi8vc3FsbW9kZWwudGlhbmdvbG8uY29tKSBmb3IgdGhlIFB5dGhvbiBTUUwgZGF0YWJhc2UgaW50ZXJhY3Rpb25zIChPUk0pLgogICAgLSDwn5SNIFtQeWRhbnRpY10oaHR0cHM6Ly9kb2NzLnB5ZGFudGljLmRldiksIHVzZWQgYnkgRmFzdEFQSSwgZm9yIHRoZSBkYXRhIHZhbGlkYXRpb24gYW5kIHNldHRpbmdzIG1hbmFnZW1lbnQuCiAgICAtIPCfkr4gW015U1FMXShodHRwczovL3d3dy5teXNxbC5jb20vKSBhcyB0aGUgU1FMIGRhdGFiYXNlLgotIPCfmoAgW1JlYWN0XShodHRwczovL3JlYWN0LmRldikgZm9yIHRoZSBmcm9udGVuZC4KICAgIC0g8J+SgyBVc2luZyBUeXBlU2NyaXB0LCBob29rcywgVml0ZSwgYW5kIG90aGVyIHBhcnRzIG9mIGEgbW9kZXJuIGZyb250ZW5kIHN0YWNrLgogICAgLSDwn46oIFtDaGFrcmEgVUldKGh0dHBzOi8vY2hha3JhLXVpLmNvbSkgZm9yIHRoZSBmcm9udGVuZCBjb21wb25lbnRzLgogICAgLSDwn6SWIEFuIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb250ZW5kIGNsaWVudC4KICAgIC0g8J+nqiBbUGxheXdyaWdodF0oaHR0cHM6Ly9wbGF5d3JpZ2h0LmRldikgZm9yIEVuZC10by1FbmQgdGVzdGluZy4KICAgIC0g8J+mhyBEYXJrIG1vZGUgc3VwcG9ydC4KLSDwn5CLIFtEb2NrZXIgQ29tcG9zZV0oaHR0cHM6Ly93d3cuZG9ja2VyLmNvbSkgZm9yIGRldmVsb3BtZW50IGFuZCBwcm9kdWN0aW9uLgotIPCflJIgU2VjdXJlIHBhc3N3b3JkIGhhc2hpbmcgYnkgZGVmYXVsdC4KLSDwn5SRIEpXVCAoSlNPTiBXZWIgVG9rZW4pIGF1dGhlbnRpY2F0aW9uLgotIPCfk6sgRW1haWwgYmFzZWQgcGFzc3dvcmQgcmVjb3ZlcnkuCi0g4pyFIFRlc3RzIHdpdGggW1B5dGVzdF0oaHR0cHM6Ly9weXRlc3Qub3JnKS4KLSDwn5OeIFtUcmFlZmlrXShodHRwczovL3RyYWVmaWsuaW8pIGFzIGEgcmV2ZXJzZSBwcm94eSAvIGxvYWQgYmFsYW5jZXIuCi0g8J+aoiBEZXBsb3ltZW50IGluc3RydWN0aW9ucyB1c2luZyBEb2NrZXIgQ29tcG9zZSwgaW5jbHVkaW5nIGhvdyB0byBzZXQgdXAgYSBmcm9udGVuZCBUcmFlZmlrIHByb3h5IHRvIGhhbmRsZSBhdXRvbWF0aWMgSFRUUFMgY2VydGlmaWNhdGVzLgotIPCfj60gQ0kgKGNvbnRpbnVvdXMgaW50ZWdyYXRpb24pIGFuZCBDRCAoY29udGludW91cyBkZXBsb3ltZW50KSBiYXNlZCBvbiBHaXRIdWIgQWN0aW9ucy4KCiMjIyBEYXNoYm9hcmQgTG9naW4KClshW0FQSSBkb2NzXShpbWcvbG9naW4ucG5nKV0oaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RhcGkvZnVsbC1zdGFjay1mYXN0YXBpLXRlbXBsYXRlKQoKIyMjIERhc2hib2FyZCAtIEFkbWluCgpbIVtBUEkgZG9jc10oaW1nL2Rhc2hib2FyZC5wbmcpXShodHRwczovL2dpdGh1Yi5jb20vZmFzdGFwaS9mdWxsLXN0YWNrLWZhc3RhcGktdGVtcGxhdGUpCgojIyMgRGFzaGJvYXJkIC0gQ3JlYXRlIFVzZXIKClshW0FQSSBkb2NzXShpbWcvZGFzaGJvYXJkLWNyZWF0ZS5wbmcpXShodHRwczovL2dpdGh1Yi5jb20vZmFzdGFwaS9mdWxsLXN0YWNrLWZhc3RhcGktdGVtcGxhdGUpCgojIyMgRGFzaGJvYXJkIC0gSXRlbXMKClshW0FQSSBkb2NzXShpbWcvZGFzaGJvYXJkLWl0ZW1zLnBuZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0YXBpL2Z1bGwtc3RhY2stZmFzdGFwaS10ZW1wbGF0ZSkKCiMjIyBEYXNoYm9hcmQgLSBVc2VyIFNldHRpbmdzCgpbIVtBUEkgZG9jc10oaW1nL2Rhc2hib2FyZC11c2VyLXNldHRpbmdzLnBuZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0YXBpL2Z1bGwtc3RhY2stZmFzdGFwaS10ZW1wbGF0ZSkKCiMjIyBEYXNoYm9hcmQgLSBEYXJrIE1vZGUKClshW0FQSSBkb2NzXShpbWcvZGFzaGJvYXJkLWRhcmsucG5nKV0oaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RhcGkvZnVsbC1zdGFjay1mYXN0YXBpLXRlbXBsYXRlKQoKIyMjIEludGVyYWN0aXZlIEFQSSBEb2N1bWVudGF0aW9uCgpbIVtBUEkgZG9jc10oaW1nL2RvY3MucG5nKV0oaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RhcGkvZnVsbC1zdGFjay1mYXN0YXBpLXRlbXBsYXRlKQoKIyMgTGljZW5zZQoKVGhlIEZ1bGwgU3RhY2sgRmFzdEFQSSBUZW1wbGF0ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1JVCBsaWNlbnNlLgo= readmeEtag: '"fa33fb118d4d5124f26a4c4ad03995e2186c0bb6"' readmeLastModified: Mon, 24 Nov 2025 04:26:02 GMT repositoryId: 479628739 description: >- Full stack, modern web application generator. Using FastAPI, MySQL as database, Docker, automatic HTTPS and more. created: '2022-04-09T05:32:37Z' updated: '2026-02-04T18:23:56Z' language: TypeScript archived: false stars: 47 watchers: 2 forks: 14 owner: vuongtlt13 logo: https://avatars.githubusercontent.com/u/14292473?v=4 license: MIT repoEtag: '"2fabb46313d2153cf8bb9c3deba43db0236c9f7aa236026426eeb32eff5bd40b"' repoLastModified: Wed, 04 Feb 2026 18:23:56 GMT foundInMaster: true category: Server Implementations id: 288909aadff60d6d617f878d02cb018c - source: openapi3 tags repository: https://github.com/backbase/backbase-openapi-tools v3: true repositoryMetadata: base64Readme: >- IVtCdWlsZF0oaHR0cHM6Ly9naXRodWIuY29tL0JhY2tiYXNlL2JhY2tiYXNlLW9wZW5hcGktdG9vbHMvd29ya2Zsb3dzL0JPQVQvYmFkZ2Uuc3ZnKQpbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jb20uYmFja2Jhc2Uub3NzJTNBYmFja2Jhc2Utb3BlbmFwaS10b29scyZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jb20uYmFja2Jhc2Uub3NzJTNBYmFja2Jhc2Utb3BlbmFwaS10b29scykKWyFbQXNrIERlZXBXaWtpXShodHRwczovL2RlZXB3aWtpLmNvbS9iYWRnZS5zdmcpXShodHRwczovL2RlZXB3aWtpLmNvbS9CYWNrYmFzZS9iYWNrYmFzZS1vcGVuYXBpLXRvb2xzKQojIEJhY2tiYXNlIE9wZW5BcGkgVG9vbHMgCgpUaGUgQmFja2Jhc2UgT3BlbiBBUEkgVG9vbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGNyZWF0ZWQgdG8gd29yayBlZmZpY2llbnRseSB3aXRoIE9wZW5BUEkKCkl0IGN1cnJlbnRseSBjb25zaXN0cyBvZgoKKiBDcmVhdGUgRGlmZiBSZXBvcnQgYmV0d2VlbiAyIE9wZW5BUEkgdmVyc2lvbnMgb2YgdGhlIHNhbWUgc3BlYyAoQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3F1ZW4yNDA0L29wZW5hcGktZGlmZikKKiBEZWNvbXBvc2UgVHJhbnNmb3JtZXIgdG8gcmVtb3ZlIENvbXBvc2VkIFNjaGVtYXMgZnJvbSBPcGVuQVBJIHNwZWNzIHRvIGFpZCBpbiBjb2RlIGdlbmVyYXRvcnMKKiBDYXNlIFRyYW5zZm9ybWVyIHRvIHZpZXcgaG93IHlvdXIgQVBJIGxvb2tzIGxpa2Ugd2hlbiBnb2luZyBmcm9tIENhbWVsIENhc2UgdG8gU25ha2UgQ2FzZSAgKHRyYW5zZm9ybXMgZXhhbXBsZXMgdG9vKQoqIFtDb2RlIEdlbmVyYXRvcl0oYm9hdC1tYXZlbi1wbHVnaW4vUkVBRE1FLm1kKSBiYXNlZCBvbiBbb3BlbmFwaS1nZW5lcmF0b3IudGVjaF0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoLykgd2l0aCBvcHRpbWl6ZWQgdGVtcGxhdGVzIGFuZCBmaXhlcy4KKiBMaW50IG1vam8gYmFzZWQgb24gWmFsYW5kbyBaYWxseSBhbmQgQmFja2Jhc2UgQVBJCgojIFJlbGVhc2UgTm90ZXMKQk9BVCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgc3ViamVjdCB0byBjaGFuZ2UuCiMjIDAuMTcuNzQKKiBTd2lmdDU6IFJlbW92ZWQgZGVwcmVjYXRlZCBpbml0aWFsaXplciBmcm9tIG1vZGVsIG9iamVjdHMuIFRoZSBpbml0aWFsaXplciBpcyBub3cgaW50ZXJuYWwgYW5kIG9ubHkgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBCdWlsZGVyIHBhdHRlcm4sIHByZXZlbnRpbmcgYnJlYWtpbmcgY29kZSBmcm9tIGRlcHJlY2F0aW9uIHdhcm5pbmdzLgoKIyMgMC4xNy43MwpBZGRlZCBjb2RlIHJlbGF0ZWQgdG8gZ2VuZXJhdGUgd2ViaG9vayBlbmRwb2ludHMgd2l0aCBkaWZmZXJlbnQgZ29hbApUbyBhZGQgcHJlaG9vayBhbmQgcG9zdGhvb2sgcmVxdWVzdCBtYXBwaW5ncyBmb3IgYWxsIHRoZSByZXF1ZXN0cyBpbiBzcGVjIHlhbWwgdXNpbmcgd2ViaG9va3MuCkNyZWF0ZWQgYSBuZXcgTW9qbywgYWRkZWQgY29kZWdlbiBhbmQgcmVsYXRlZCB0ZW1wbGF0ZXMgdW5kZXIgYm9hdC13ZWJob29rcy4KCiMjIDAuMTcuNzAKRml4OiBFeGFtcGxlcyBvZiByZXNwb25zZXMgZGVmaW5lZCBpbiBjb21wb25lbnRzL3Jlc3BvbnNlcyB3ZXJlIG5vdCBpbmxpbmVkIGJ5IHRoZSBFeGFtcGxlc1Byb2Nlc3Nvci4gCgojIyAwLjE3LjY5ClVwZGF0ZSBxdWVyeSBwYXJhbWV0ZXIgaGFuZGxpbmcgaW4gU3dpZnQ1IHRlbXBsYXRlICgjMTE3NykKCiMjIDAuMTcuNjgKMC4xNy42NyByZWxlYXNlIHB1Ymxpc2hpbmcgZmFpbGVkLCAwLjE3LjY4IGlzIHRoZSBwdWJsaWMgcmVsZWFzZS4KCiMjIDAuMTcuNjcKVXBkYXRlIHN3aWZ0NSB0ZW1wbGF0ZSB0byBhZGQgc3VwcG9ydCBmb3IgZXhwbG9kZWQgR0VUIHBhcmFtZXRlcnMgKFN3aWZ0IG9ubHkpLgoKIyMgMC4xNy42NgoqIEFkZCBzdXBwb3J0IHBhcmFtcyBvZiBvcGVuYXBpLWdlbmVyYXRvciBgbmFtZS1tYXBwaW5nc2AgYW5kIGBlbnVtLW5hbWUtbWFwcGluZ3NgLgpDaGVjayBgUHJvcGVydHkgJiBFbnVtIE5hbWUgTWFwcGluZ3MgKG5ldylgIGluIFtib2F0LW1hdmVuLXBsdWdpbl0oYm9hdC1tYXZlbi1wbHVnaW4vUkVBRE1FLm1kKQoqIGZpeGVkIHJlbGVhc2UgcHJvY2VzcwoKIyMgMC4xNy42MgoqIEZpeGVkIHJlYWN0aXZlIGdlbmVyYXRpb24gb2YgY29kZSB0byBub3QgaW5jbHVkZSBleHRyYSBGbHV4PD4gdG8gcmV0dXJuIHBhcmFtZXRlcgojIyAwLjE3LjYxCiogQWRkZWQgbmV3IGBleGNsdWRlc2AgcGFyYW1ldGVyIGludG8gYGJ1bmRsZWAgZXhlY3V0aW9uIHRvIGV4Y2x1ZGUgY2VydGFpbiBmaWxlcyAoZGVmYXVsdDogYCoqL2xpYi8qKmApIHRvIGF2b2lkIGdlbmVyYXRpbmcgZXh0ZXJuYWxseSBkb3dubG9hZGVkIHNwZWMgZmlsZXMuCiMjIDAuMTcuNjAKKiBBbGxvdyByZWZlcmVuY2VzIHRvIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlIHNwZWMgaXRzZWxmLCB0byBiZSBhYmxlIHRvIHJlZmVyIHRvIGNvbW1vbiBleGFtcGxlcyBpbiBhIGNvbW1vbiBsaWIuCiogRml4IHRlc3RzLi4uIHBldHNob3AgZXhhbXBsZSBtb3ZlZC4KIyMgMC4xNy41OQoqIEZpeCBidWcgd2hlcmUgamF2YS1zcHJpbmcgZ2VuZXJhdG9yIHB1dHMgYEBWYWxpZGAgYW5ub2F0aW9uIG9uIHJldHVybiB0eXBlIG9mIEFwaSBtZXRob2RzLCBjYXVzZSBzZXJ2aWNlIHRvIGJsYW1lCiAgY2xpZW50IGZvciBpbnZhbGlkIGdlbmVyYXRlZCByZXNwb25zZSB3aXRoIGEgNDAwIHN0YXR1cy4KIyMgMC4xNy41OAoKIyMgMC4xNy41NwoKIyMgMC4xNy41NgoqIEFkZGVkIG5ldyBgZmxhdHRlbk91dHB1dGAgcGFyYW1ldGVyIGludG8gYGJ1bmRsZWAgZXhlY3V0aW9uIHRvIGdlbmVyYXRlIHRoZSBidW5kbGVkIEFQSXMgZGlyZWN0bHkgaW50byBgb3V0cHV0YCBkaXJlY3RvcnksIGV2ZW4gdGhvdWdoIHRoZSByZXNwZWN0aXZlIGBpbnB1dGAgZmlsZXMgYXJlIGxvY2F0ZWQgd2l0aGluIGEgc3ViZGlyZWN0b3J5IGluIHRoZSBgaW5wdXRgLgojIyAwLjE3LjU1CiogRW5oYW5jZWQgYGJvYXQtc3dpZnQ1YCBnZW5lcmF0b3IgdG8gY2F0ZXIgZm9yIG5lc3RlZCBmcmVlZm9ybU9iamVjdHMuIFRoaXMgaXNzdWUgd2FzIGlkZW50aWZpZWQgaW4gYENvbnRlbnRTZXJ2aWNlc0FwaWAKIyMgMC4xNy41NCBhbmQgbGF0ZXIKU3RhcnRpbmcgZnJvbSAwLjE3LjU0IHRoZSByZWxlYXNlIG5vdGVzIGFyZSBhdmFpbGFibGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL0JhY2tiYXNlL2JhY2tiYXNlLW9wZW5hcGktdG9vbHMvcmVsZWFzZXMKIyMgMC4xNy41MwoqIEFkZGVkIDIgTGludCBydWxlcyBgQjAwN1VgIGFuZCBgQjAwOVVgIGZvciBVbmlmaWVkIEJhY2tiYXNlIEFQSSBzcGVjczoKICAqIGBCMDA3VWAgY2hlY2tzIHdoZXRoZXIgcGF0aHMgZG8gbm90IGNvbnRhaW4gYGNsaWVudC1hcGlgLCBgc2VydmljZS1hcGlgIGFuZCBgaW50ZWdyYXRpb24tYXBpYCBwcmVmaXhlcy4gQW55IHByZWZpeCBpcyBub3QgYWxsb3dlZCBmb3IgVW5pZmllZCBCYWNrYmFzZSBBUEkuCiAgKiBgQjAwOVVgIGNoZWNrcyB3aGV0aGVyIHBhdGhzIGRvIG5vdCBjb250YWluIGFueSB2ZXJzaW9uIG51bWJlci4gQW55IHZlcnNpb24gbnVtYmVyIGlzIG5vdCBhbGxvd2VkIGZvciBVbmlmaWVkIEJhY2tiYXNlIEFQSS4KKiBUaGVzZSBydWxlcyBhcmUgaWdub3JlZCBieSBkZWZhdWx0LCBidXQgaWYgeW91IHJlZGVmaW5lIHRoZSBsaXN0IG9mIGlnbm9yZWQgcnVsZXMgaW4geW91ciBwcm9qZWN0LCB0aGVuIHlvdSBuZWVkIHRvIGFkZCB0aGVzZSB0d28gcnVsZXMgdG8geW91ciBsaXN0LgojIyAwLjE3LjUyCiogTGludCBydWxlIGBCMDE0YCBmaXggcmVmZXJlbmNlIGxpbmsgdG8gY29tcG9uZW50IGV4YW1wbGVzCiMjIDAuMTcuNDYKKiBib2F0LXNjYWZmb2xkCiAgKiBFbmhhbmNlZCBJU084NjAxIERhdGUgRm9ybWF0dGluZyB3aXRoIEZyYWN0aW9uYWwgU2Vjb25kcyBTdXBwb3J0IGZvciBTd2lmdCB0ZW1wbGF0ZS4KICAgICogVGhlIGBPcGVuSVNPODYwMURhdGVGb3JtYXR0ZXJgIHRlbXBsYXRlIG5vdyBzdXBwb3J0cyBwYXJzaW5nIGFuZCBmb3JtYXR0aW5nIElTTzg2MDEgZGF0ZXMgd2l0aCBub25lLCBvbmUsIG9yIG11bHRpcGxlIGZyYWN0aW9uYWwgc2Vjb25kcyBpbiBTd2lmdCA1LiBUaGlzIGVuaGFuY2VtZW50IHByb3ZpZGVzIGdyZWF0ZXIgZmxleGliaWxpdHkgYW5kIHByZWNpc2lvbiB3aGVuIHdvcmtpbmcgd2l0aCBkYXRlIGFuZCB0aW1lIHZhbHVlcywgYWNjb21tb2RhdGluZyB2YXJpb3VzIHVzZSBjYXNlcyB0aGF0IHJlcXVpcmUgZGlmZmVyZW50IGxldmVscyBvZiBmcmFjdGlvbmFsIHNlY29uZCBhY2N1cmFjeS4KIyMgMC4xNy4zNgoqIExpbnQgcnVsZSBgQjAxNGAgZG9lc24ndCB0aHJvdyBhIG51bGwgZXhjZXB0aW9uIHdoZW4gcGFyc2luZyBhIHN0cmluZyBhcnJheSBwcm9wZXJ0eSBpbiBhIHNjaGVtYS4gIAojIyAwLjE3LjM1CiogSVNTVUU6ICM3NzYgYWRkIG5ldyBsaW50IHJ1bGUgYEIwMTRgIC0gdG8gdmFsaWRhdGUgaWYgZXhhbXBsZXMgY29udGFpbiBhbGwgZGVmaW5lZCBwcm9wZXJ0aWVzIGluIHRoZSBzY2hlbWEKKiBCT0FUIG5vdyBzdXBwb3J0cyBtdWx0aXBsZSBhY2Nlc3MgY29udHJvbCBwZXJtaXNzaW9ucyB3aXRoaW4gdGhlIHRhZyBgeC1CYkFjY2Vzc0NvbnRyb2xzYCBpbiB0aGUgT3BlbkFQSSBzcGVjLiAKSXQgY29udGFpbnMgdHdvIHBhcmFtZXRlcnMgYGRlc2NyaXB0aW9uYCB3aGljaCBkZXNjcmliZXMgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBwZXJtaXNzaW9ucyBhbmQgYHBlcm1pc3Npb25zYCAKd2hpY2ggaXMgYW4gYXJyYXkgb2YgcGVybWlzc2lvbnMgd2l0aCB0YWdzIGByZXNvdXJjZWAsIGBmdW5jdGlvbmAgYW5kIGBwcml2aWxlZ2VgLiAKKiBJbXByb3ZlIGdlbmVyYXRlZCBjbGllbnQgQ2xhc3MgTmFtZQoqIEZpeCBKYWthcnRhIG5hdGl2ZSBjbGllbnQgZ2VuZXJhdGlvbiBvcHRpb25zCiMjIDAuMTcuMzAKKiBBbmd1bGFyIDE3CiMjIDAuMTcuMjkKKiBGaXhlZCBTcHJpbmcgZGVwcmVjYXRpb25zCiMjIDAuMTcuMjQKKiBib2F0LXNwcmluZwogICogRml4IFtJbmNvbnNpc3RlbnQgQENvbXBvbmVudCBmb3IgUmVzdFRlbXBsYXRlXShodHRwczovL2dpdGh1Yi5jb20vQmFja2Jhc2UvYmFja2Jhc2Utb3BlbmFwaS10b29scy9pc3N1ZXMvNjYxKQojIyAwLjE3LjIzCiogKkJvYXQgRW5naW5lKgogICogQWRkZWQgc3VwcG9ydCBmb3IgYnl0ZSBhcnJheSBleGFtcGxlcwoqICpCb2F0IFNjYWZmb2xkKgogICogUmVtb3ZlZCB0YWcgaW1wb3J0IGluIG9yZGVyIHRvIGFsbG93IEJPQVQgb2JqZWN0cyB0byBoYXZlIHRoZSBuYW1lICd0YWcnCiMjIDAuMTcuMjIKKiBib2F0LW1hdmVuLXBsdWdpbgogICogSXNzdWUgMjExOiBGaXggdHlwbyBpbiBjaGFuZ2Vsb2dSZW5kZXJlciBwYXJhbWV0ZXIgaW4gRGlmZk1vam8uamF2YSAoIzY1MikgQHRhbGJvdAojIyAwLjE3LjIxCiogYm9hdC1zcHJpbmcsIGJvYXQtamF2YQogICogSXNzdWUgNjQ5OiBtaXNzaW5nIEJpZ0RlY2ltYWxDdXN0b21TZXJpYWxpemVyLmphdmEgKCM2NTApIEB3YWxhbmlhbQoqIEJPQVQgQW5kcm9pZCAoIzYzNykgQGNoYXJiZWxta2gKIyMgMC4xNy4xOAoqIGJvYXQtc3ByaW5nCiAgKiBGaXggW1JlZ3Jlc3Npb24gb24gcHV0dGluZyB2YWxpZCBhbm5vdGF0aW9uIG9uIEZRQ04saHR0cHM6Ly9naXRodWIuY29tL0JhY2tiYXNlL2JhY2tiYXNlLW9wZW5hcGktdG9vbHMvaXNzdWVzLzYxOV0KICAqIEZpeCBbQnJva2VuIHBvam8gZmllbGQgdmFsaWRhdGlvbnMsIGh0dHBzOi8vZ2l0aHViLmNvbS9CYWNrYmFzZS9iYWNrYmFzZS1vcGVuYXBpLXRvb2xzL2lzc3Vlcy82MzNdCiAgKiBGaXggQWRkIGBATm90TnVsbGAgZm9yIHJlcXVpcmVkIHByb3BlcnRpZXMuCiAgKiBGaXggaW5pdGlhdGlvbiBvZiBgcmVxdWlyZWRgIHByb3BlcnR5IHRoYXQgaGFzIGBhZGRpdGlvbmFsUHJvcGVydGllc2AgKGdlbmVyYXRlZCBhcyBNYXApIHdoZW4gdXNpbmcgYGNvbnRhaW5lckRlZmF1bHRUb051bGw9dHJ1ZWAKICAqIEZpeCBbYGNyZWF0ZUFwaUNvbXBvbmVudGAgb3B0aW9uIGluIHNwcmluZ3RlbXBsYXRlIGdlbmVyYXRvciBpcyBpZ25vcmVkXShodHRwczovL2dpdGh1Yi5jb20vQmFja2Jhc2UvYmFja2Jhc2Utb3BlbmFwaS10b29scy9pc3N1ZXMvNjMwKQogICogRml4IGh0dHBzOi8vZ2l0aHViLmNvbS9CYWNrYmFzZS9iYWNrYmFzZS1vcGVuYXBpLXRvb2xzL2lzc3Vlcy82MzUKICAqIEZpeCBbTGlzdCBvZiBNYXBzIG9mIFN0cmluZ3MgZ2VuZXJhdGVkIGNvZGUgZG9lcyBub3QgY29tcGlsZS4gLGh0dHBzOi8vZ2l0aHViLmNvbS9CYWNrYmFzZS9iYWNrYmFzZS1vcGVuYXBpLXRvb2xzL2lzc3Vlcy82NDddCiMjIDAuMTcuMTYKKiBCT0FUIEFuZ3VsYXIgR2VuZXJhdG9yCiAgKiBhZGRlZCBgQGFuZ3VsYXIvY29tbW9uYCBhcyBwZWVyIGRlcGVuZGVuY3kgaW4gdGhlIGdlbmVyYXRlZCBwYWNrYWdlLmpzb24gZmlsZXMKICAqIHJlcGxhY2UgdXNhZ2VzIG9mIGBpc0xpc3RDb250YWluZXJgIHdpdGggYGlzQXJyYXlgIGluIGFwaS5zZXJ2aWNlIHRlbXBsYXRlCiMjIDAuMTcuMTUKKiBib2F0LXNwcmluZwogICogZml4OiBpbmNvcnJlY3RseSB1c2VkIGVudW0gcGFyYW0gb24gY29sbGVjdGlvbiBpdGVtcyAoc2VlIGBjb2xsZWN0aW9uRGF0YVR5cGVQYXJhbS5tdXN0YWNoZWApCiMjIDAuMTcuMTQKKiBib2F0LXNwcmluZwogICogYWRkZWQgdmFsaWRhdGlvbiBjb25zdHJhaW50cyBvbiBwcmltaXRpdmUgY29sbGVjdGlvbiBpdGVtcyB0eXBlcyBpbiByZXF1ZXN0IHBhcmFtcyAoc2VlIGBjb2xsZWN0aW9uRGF0YVR5cGVQYXJhbS5tdXN0YWNoZWApCiAgKiBhZGRlZCB2YWxpZGF0aW9uIGNvbnN0cmFpbnRzIG9uIHByaW1pdGl2ZSBtYXAgdmFsdWUgdHlwZXMgKHNlZSBgbWFwRGF0YVR5cGUubXVzdGFjaGVgKSAKIyMgMC4xNy4xMwoqIGJvYXQtc3ByaW5nCiAgKiBGaXg6IGdlbmVyYXRlIHZhbGlkYXRpb24gY29uc3RyYWludHMgb24gcHJpbWl0aXZlIGNvbGxlY3Rpb24gaXRlbXMgdHlwZXMgKHVwZGF0ZXMgaW4gcG9qby5tdXN0YWNoZSBhbmQgbmV3IGNvbGxlY3Rpb25EYXRhVHlwZS5tdXN0YWNoZSkKIyMgMC4xNy4xMgoqIEJvYXRKYXZhQ29kZUdlbiwgQm9hdFNwcmluZ0NvZGVHZW4KICAqIEZpeDogQWx3YXlzIGdlbmVyYXRlIGNvbGxlY3Rpb24gaW5pdGlhbGl6ZXIgd2hlbiBhcnJheSBpcyByZXF1aXJlZCBpbiB0aGUgc2NoZW1hIChldmVuIGlmIGNvbnRhaW5lckRlZmF1bHRUb051bGw9dHJ1ZSkKICAqIEZpeDogW3ZhbGlkYXRlZCBwb2pvIHJlZmVyZW5jZWQgY2xhc3MgY2F1c2VzIGludmFsaWQgY29kZSB0byBiZSBnZW5lcmF0ZWRdKGh0dHBzOi8vZ2l0aHViLmNvbS9CYWNrYmFzZS9iYWNrYmFzZS1vcGVuYXBpLXRvb2xzL2lzc3Vlcy82MTUpCiAgKiBGaXg6IGJvYXQtamF2YSBwb2pvIHRlbXBsYXRlIHRvIHN1cHBvcnQgYHVzZVdpdGhNb2RpZmllcmAgdG8gZ2VuZXJhdGUgYHdpdGhTb21ldGhpbmdgIG1ldGhvZHM7IGZpeGVzIHJlZmVyZW5jaW5nICdjb21tb24nIGNsYXNzZXMgZ2VuZXJhdGVkIHVzaW5nIGJvYXQtc3ByaW5nIHRlbXBsYXRlcy4KIyMgMC4xNy4xMQoqIEJvYXRKYXZhQ29kZUdlbiwgQm9hdFNwcmluZ0NvZGVHZW4KICAqIEZpeDogYWx3YXlzIGdlbmVyYXRlIGNvbGxlY3Rpb24gaW5pdGlhbGl6ZXIgd2hlbiBhcnJheSBpcyByZXF1aXJlZCBpbiB0aGUgc2NoZW1hIChldmVuIGlmIGNvbnRhaW5lckRlZmF1bHRUb051bGw9dHJ1ZSkKIyMgMC4xNy4xMAoqIEJvYXQgbWF2ZW4gcGx1Z2luCiAgKiBGaXg6IFdoZW4gdXNpbmcgTXVsdGlwYXJ0LCBnZW5lcmF0ZSB3aXRoIGBAUmVxdWVzdFBhcnRgIGluc3RlYWQgb2YgYEBSZXF1ZXN0UGFyYW1gCiMjIDAuMTcuOQoqIEJvYXQgTWF2ZW4gcGx1Z2luCiAgKiBGaXg6IFtjb250YWluZXJEZWZhdWx0VG9OdWxsPXRydWUgaXMgbm90IGJhY2t3YXJkIGNvbXBhdGlibGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9CYWNrYmFzZS9iYWNrYmFzZS1vcGVuYXBpLXRvb2xzL2lzc3Vlcy82MDQpCiMjIDAuMTcuOAoqIEJvYXQgU3ByaW5nIGdlbmVyYXRvcgogICogRml4OiBbU2VyaWFsaXphdGlvbiAvIGRlc2VyaWFsaXphdGlvbiBpc3N1ZXMgb2YgSnNvblN1YlR5cGVzIGR1ZSB0byBpbmNvcnJlY3QgdXNhZ2Ugb2YgSnNvbklnbm9yZVByb3BlcnRpZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9CYWNrYmFzZS9iYWNrYmFzZS1vcGVuYXBpLXRvb2xzL2lzc3Vlcy82MDEpCiMjIDAuMTcuNwoqIEJvYXQgbWF2ZW4gcGx1Z2luCiAgKiBGaXg6IEFkZGVkICdjb250YWluZXJEZWZhdWx0VG9OdWxsJyBkZWZhdWx0IG9wdGlvbiB0byB0aGUgTU9KTyBnZW5lcmF0b3IKIyMgMC4xNy42CiogQm9hdCBlbmdpbmUKICAqIEZpeDogUHJvY2Vzc2luZyBvZiBhIHNpbmdsZSBzdHJpbmcgdHlwZSBleGFtcGxlIG9uIG1lZGlhLXR5cGUuCiMjIDAuMTcuNAoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIE5ldyBmb3JtYXQgZm9yIEFuZ3VsYXIgbW9ja3MsIHdoaWNoIGFyZSBub3cgZXhwb3J0IGFuIGFycmF5IHdpdGggcmVzcG9uc2VzLgojIyAwLjE3LjMKKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBNYXAgdGhlIGBTZXRgIHR5cGUgdG8gYEFycmF5YCBieSBkZWZhdWx0IHRvIGF2b2lkIGJyZWFraW5nIGNoYW5nZXMgdnMgY2xpZW50cyBnZW5lcmF0ZWQgd2l0aCAwLjE2LnguIAojIyAwLjE3LjIKKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBSZW1vdmUgbGVhZGluZyBjb21tZW50IGZyb20gdHlwZXNjcmlwdCBmaWxlcyBzbyB0aGF0IHRoZXJlIGFyZSBmZXdlciBkaWZmZXJlbmNlcyBiZXR3ZWVuIGZpbGVzIHdoZW4gcmVnZW5lcmF0aW5nIHdpdGggYSBuZXcgc3BlYyB2ZXJzaW9uIChpbmZvIG1vdmVkIHRvIFJFQURNRSkKICAqIFJlbW92ZSBsaWNlbmNlIGZpZWxkIGZyb20gcGFja2FnZS5qc29uCiMjIDAuMTcuMQoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIEFkZGVkIGFydGlmYWN0IGluZm9ybWF0aW9uIHRvIGdlbmVyYXRlZCBwYWNrYWdlLmpzb24KIyMgMC4xNy4wCiogR2VuZXJhbAogICogUmVtb3ZlZCBSQU1MIFN1cHBvcnQKICAqIFJlbW92ZWQgY3VzdG9tIEphdmFTY3JpcHQgY2xpZW50CiAgKiBVcGRhdGUgT3BlbkFQSSBUb29scyB0byA2LjIuMQoqIEJvYXQgSmF2YSBHZW5lcmF0b3IKICAqIEpha2FydGEgRUUgOSBjb21wYXRpYmlsaXR5CiAgKiBgc3ByaW5nLW12Y2AgbGlicmFyeSBpcyByZW1vdmVkIGJlY2F1c2UgaXQgaXMgbm90IHN1cHBvcnRlZCBieSBPcGVuQVBJIFRvb2xzIGFueW1vcmUKICAqIFVzZSBvZiBgU2V0YCBmb3IgdW5pcXVlIGl0ZW1zIGlzIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQgYXMgT3BlbkFQSSBHZW5lcmF0b3IgZml4ZWQgdGhlaXIgaW1wbGVtZW50YXRpb24KIyMgMC4xNi4xNQoqIEJvYXQgZW5naW5lCiAgKiBGaXg6IFByb2Nlc3Npbmcgb2YgYSBzaW5nbGUgc3RyaW5nIHR5cGUgZXhhbXBsZSBvbiBtZWRpYS10eXBlLgoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIE5ldyBmb3JtYXQgZm9yIEFuZ3VsYXIgbW9ja3MsIHdoaWNoIGFyZSBub3cgZXhwb3J0IGFuIGFycmF5IHdpdGggcmVzcG9uc2VzLgojIyAwLjE2LjEzCiogQm9hdCBBbmd1bGFyIGdlbmVyYXRvcgogICogYEBhbmd1bGFyL2NvbW1vbmAgYWRkZWQgYXMgYSBwZWVyIGRlcGVuZGVuY3kgaW4gdGhlIGdlbmVyYXRlZCBwYWNrYWdlLmpzb24gZmlsZXMKIyMgMC4xNi4xMgoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIFJlbW92ZSBsZWFkaW5nIGNvbW1lbnQgZnJvbSB0eXBlc2NyaXB0IGZpbGVzIHNvIHRoYXQgdGhlcmUgYXJlIGZld2VyIGRpZmZlcmVuY2VzIGJldHdlZW4gZmlsZXMgd2hlbiByZWdlbmVyYXRpbmcgd2l0aCBhIG5ldyBzcGVjIHZlcnNpb24gKGluZm8gbW92ZWQgdG8gUkVBRE1FKQogICogUmVtb3ZlIGxpY2VuY2UgZmllbGQgZnJvbSBwYWNrYWdlLmpzb24KIyMgMC4xNi4xMQoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIFNldCBgcmVtb3ZlQ29tbWVudHM6IGZhbHNlYCBpbiBnZW5lcmF0ZWQgdHNjb25maWcuanNvbiBmaWxlcyB0byByZXRhaW4gYC8qI19fUFVSRV9fKi9gIGFubm90YXRpb24gaW4gY29tcGlsZWQgSlMuCiMjIDAuMTYuMTAKKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBSZW1vdmUgdHlwZXMgZnJvbSBnZW5lcmF0ZWQgbW9jayBwcm92aWRlcnMgZHVlIHRvIGEgVHlwZVNjcmlwdCB3aGljaCBwcmV2ZW50cyBgLyojX19QVVJFX18qL2AgYW5ub3RhdGlvbiBmcm9tIHdvcmtpbmcKIyMgMC4xNi45CiogQm9hdCBBbmd1bGFyIGdlbmVyYXRvcgogICogVXNlIG9mIGAvKiNfX1BVUkVfXyovYCBmb3IgYGNyZWF0ZU1vY2tzYCBmdW5jdGlvbiBjYWxsIGluIHRlbXBsYXRlcyB0byBlbmFibGUgdHJlZS1zaGFraW5nCiMjIDAuMTYuNgoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIFVzZSBgXmAgaW5zdGVhZCBvZiBgPj1gIGZvciBgZGV2RGVwZW5kZW5jaWVzYCBpbiB0aGUgZ2VuZXJhdGVkIHByb2plY3QsIHNvIHByb2plY3Qgd2lsbCBiZSBidWlsdCB1c2luZyBjb3JyZWN0IHRhcmdldCB2ZXJzaW9uIG9mIG5nLXBhY2thZ3IgJiB0aGUgQW5ndWxhciBDTEkKICAqIERlY2xhcmUgc29tZSBleHRyYSBgZGV2RGVwZW5kZW5jaWVzYCBhdCBleHBsaWNpdCB2ZXJzaW9ucyB0byBmaXggYG5wbSBpbnN0YWxsYCBpc3N1ZXMgaW4gdGhlIGdlbmVyYXRlZCBwcm9qZWN0IHdoZW4gdXNpbmcgYG5wbWAgdjgKIyMgMC4xNi41CiogQm9hdCBBbmd1bGFyIGdlbmVyYXRvcgogICogQWxsb3cgYW55IGZvcm1hdCBmb3Igc3BlYyB2ZXJzaW9ucy4KIyMgMC4xNi40CiogQm9hdCBBbmd1bGFyIGdlbmVyYXRvcgogICogQWRkIGFiaWxpdHkgdG8gYmFrZSB0aGUgc3BlYyB2ZXJzaW9uIHVzZWQgaW4gdGhlIHBhY2thZ2UuanNvbiBmaWxlLgojIyAwLjE2LjMKKiAqTWF2ZW4gUGx1Z2luKgogICogRG8gbm90IHRyZWF0IHNwYWNlcyBhcyBkZWxpbWl0ZXJzIGluIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB3aGljaCB0YWtlIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdmFsdWVzLgogICAgRml4ZXMgYW4gaXNzdWUgdGhhdCBwcmV2ZW50ZWQgdGhlIHVzZSBvZiB0YWcgbmFtZXMgY29udGFpbmluZyBzcGFjZXMgaW4gdGhlIGBhcGlzVG9HZW5lcmF0ZWAgcHJvcGVydHkuCiMjIDAuMTYuMgoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIFNwZWNpZnkgbWluaW11bSBBbmd1bGFyLXJlbGF0ZWQgcGFja2FnZSB2ZXJzaW9ucyB3aGVuIEFuZ3VsYXIgdjEzIGlzIHVzZWQKIyMgMC4xNi4xCiogQm9hdCBKYXZhIGdlbmVyYXRvcgogICogSmF2YSAxNyBjb21wYXRpYmlsaXR5IHVwZGF0ZQojIyAwLjE2LjAKKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBVc2UgYD49YCBmb3IgbWFpbiBwZWVyIGRlcGVuZGVuY3kgdG8gaW1wcm92ZSBmb3J3YXJkIGNvbXBhdGliaWxpdHkKIyMgMC4xNS44CiogKkJvYXQgU2NhZmZvbGQqCiAgKiBNYWtlcyBzdXJlIHRvIG5vdCBhdXRvZ2VuZXJhdGUgZXhhbXBsZXMgZnJvbSBzY2hlbWEgaWYgZXhhbXBsZXMgYXJlIGFscmVhZHkgcHJlc2VudAojIyAwLjE1LjYKKiAqTWF2ZW4gUGx1Z2luKgogICogQWRkIGV4YW1wbGUgb2YgdXNlIHRoZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMgbGlrZSBjcmVhdGVBcGlDb21wb25lbnQKKiAqQm9hdCBBbmd1bGFyIGdlbmVyYXRvcioKICAqIEdlbmVyYXRlIHRoZSBgbmctcGFja2FnZS5qc29uYCBmaWxlIGZvciB1c2Ugd2l0aCB0aGUgYG5nLXBhY2thZ2VgIENMSQojIyAwLjE1LjUKKiAqQm9hdCBMaW50KgogKiBCdW1wZWQgdmVyc2lvbiBvZiBaYWxseSBMaW50aW5nIExpYnJhcmllcyB0aGF0IGNvbnRhaW4gc2V2ZXJhbCB2dWxuZXJhYmlsaXR5IGZpeGVzCiMjIDAuMTUuNAoqICpCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yKgogICogRW5hYmxlIHBhcnRpYWwgSXZ5IGNvbXBpbGF0aW9uIGZvciBsaWJyYXJpZXMuCiMjIDAuMTUuMwoqICpCb2F0IFNjYWZmb2xkKgogKiBBIGZpeCBmb3IgbWFwcGluZyBvZiBNYXAgZm9yIHF1ZXJ5IHBhcmFtcyAoaW4gY2xpZW50IGNvZGUpLiAKIyMgMC4xNS4yCiogKk1hdmVuIFBsdWdpbioKICAqIEZpeGVkIGhhbmRsaW5nIG9mIGFic29sdXRlIGZpbGUgcGF0aHMgZm9yIGxpbnRpbmcgT3BlbkFQSSBzcGVjcwogICogQ2hhbmdlZCBib2F0LWJheSBkYXRlTGlicmFyeSBmb3IgdXBsb2FkIHNwZWMgLgojIyAwLjE1LjEKKiAqTWF2ZW4gUGx1Z2luKgogICogTWFkZSBgYm9hdDpyYWRpb2AgZ29hbCBwcm9wZXJ0aWVzIHcuci50IGJvYXQtYmF5IHNlcnZlciB1bmlxdWUuCiMjIDAuMTUuMAoqICpNYXZlbiBQbHVnaW4qCiAgKiBBZGRlZCBuZXcgZ29hbCBgYm9hdDpyYWRpb2A7IHNlZSB0aGUgZGVzY3JpcHRpb24gaW4gdGhlIFtwbHVnaW4gKipkb2N1bWVudGF0aW9uKipdKGJvYXQtbWF2ZW4tcGx1Z2luL1JFQURNRS5tZCNib2F0cmFkaW8pLgojIyAwLjE0LjEyCiogKkJvYXQgU2NhZmZvbGQqCiAgKiBSZWZlcmVuY2VzIHRvIC9leGFtcGxlcy9mb28gbm93IGFyZSBhbHNvIGRlcmVmZXJlbmNlZAojIyAwLjE0LjEwCiogKkJvYXQgU2NhZmZvbGQqCiAgKiBNYWtlcyBzdXJlIHRvIFVSTERlY29kZSBwYXRocyB3aGlsZSBkZXJlZmVyZW5jaW5nIGV4YW1wbGVzCiMjIDAuMTQuOQoqICpCb2F0IFNjYWZmb2xkKgogICogUmVzb2x2ZSByZWZlcmVuY2VzIHRvIG90aGVyIHBhdGggb3BlcmF0aW9ucycgZXhhbXBsZXMKCiMjIDAuMTQuOAoqICpCb2F0IE1hcmluYSoKICAqIFJlbW92ZXMgZmxhdE9iamVjdHMgYXMgdGhleSBhcmUgbm8gbG9uZ2VyIG5lZWRlZAogICogcmVzcG9uc2UubWVzc2FnZSB3YXMgd3JvbmdmdWxseSBlc2NhcGVkLCBlc2NhcGluZyBpbiB0aGUgZG9jcyB0ZW1wbGF0ZSBpbnN0ZWFkCiAgKiBXZSBubyBsb25nZXIgbmVlZCB0byBnZW5lcmF0ZSBtb2RlbCBhbGlhc2VzIGluIGJvYXQgbWFyaW5hCiMjIDAuMTQuNwoqICpCb2F0IE1hcmluYSoKICAqIEV4cG9ydHMgZmxhdE9iamVjdHMgYXMgYSBtb2RlbCB0byBwcmV2ZW50IGVycm9ycyB3aXRoIHJlZmVyZW5jZXMKIyMgMC4xNC42IAoqICpNYXZlbiBQbHVnaW4qCiAgKiBBZGRlZCBgYm9hdDpzaGlwYCBtb2pvIHRvIGF1dG9tYWdpY2FsbHkgemlwIHNwZWNzIGZvdW5kIGluIGBzcmMvbWFpbi9yZXNvdXJjZXNgIGFuZCBhdHRhY2ggaXQgdG8gdGhlIHByb2plY3QgcmVhY3RvciBzbyBgbXZuIGluc3RhbGxgIG9yIGBtdm4gZGVwbG95YCB3aWxsIGFsc28gaW5jbHVkZSBhIHppcCBhcmNoaXZlIG9mIHRoZSBwcm9qZWN0IHdpdGggd2l0aCBgYXBpYCBjbGFzc2lmaWVyCiAgKiBDaGFuZ2VkIGBib2F0OmJ1bmRsZWAgIGBpbmNsdWRlc2AgcGFyYW1ldGVyIHRvIGFuIGFycmF5IG9mIHBhdHRlcm5zIHRvIGFsbG93IHJlY3Vyc2l2ZSBwYXR0ZXJzIHRvIGRpc2NvdmVyIE9wZW5BUElzIAoqICpCb2F0IFNjYWZmb2xkKgogICogRml4ZWQgYnVnIGluIHR5cGVzY3JpcHQgZ2VuZXJhdG9yIHdoZXJlIG9ubHkgb25lIG9mIHRoZSBvdmVybG9hZGVkIGZ1bmN0aW9uIHNpZ25hdHVyZXMgcGVyIGRlcHJlY2F0ZWQgZW5kcG9pbnQgd2FzIG1hcmtlZCBhcyBkZXByZWNhdGVkLgoKCiMjIDAuMTQuNQoqICpCb2F0IE1hcmluYSoKICAqIEFkZGVkIGBib2F0LW1hcmtlcnNgIGRpcmVjdG9yeSBpbiB0YXJnZXQgdG8ga2VlcCB0cmFjayBvZiBzdWNjZXNzZnVsIGFuZCB1bnN1Y2Nlc3NmdWwgYWN0aW9ucyBvbiBPcGVuQVBJIHNwZWNzCgojIyAwLjE0LjQKCiogKkJvYXQgTWFyaW5hKgogICogQWRkZWQgYSBub3cgQk9BVCBTY2FmZm9sZCB0ZW1wbGF0ZSBjYWxsZWQgTWFyaW5hLCBhcyB0aGF0IGlzIHdoZXJlIHRoZSBtb2RlbHMgaGFuZyBvdXQuIFRoZSBCb2F0IE1hcmluYSB0ZW1wbGF0ZSBvdXRwdXRzIGEgc2luZ2xlIEpTT04gZmlsZSB0aGF0IGlzIHVzZWQgdG8gb2ZmZXIgYSByaWNoIHVzZXIgaW50ZXJmYWNlIGJ1aWx0IGZyb20gdGhlIHNwZWNzIGluY2x1ZGluZyBzZWFyY2gsIHBhZ2UgcGVyIG9wZXJhdGlvbiBhbmQgbWFueSBtb3JlIGZlYXR1cmVzIQoKKiAqTWF2ZW4gUGx1Z2luKgogICAgKiBUaGUgYm9hdDpkb2MgZ29hbCBub3cgcmVjdXJzaXZlbHkgc2VhcmNoIE9wZW5BUEkgc3BlY3MgaW4gYSBkaXJlY3RvcnkgdG8gZ2VuZXJhdGUgZG9jcyBmb3IgZWFjaCBmb3VuZCBzcGVjLiAgCgojIyAwLjE0LjMKCiogKk1hdmVuIFBsdWdpbioKICAqIEFkZGVkIG5ldyBnb2FsIGBib2F0OnRyYW5zZm9ybWA7IHNlZSB0aGUgZGVzY3JpcHRpb24gaW4gdGhlIFtwbHVnaW4gZG9jdW1lbnRhdGlvbl0oYm9hdC1tYXZlbi1wbHVnaW4vUkVBRE1FLm1kI2JvYXR0cmFuc2Zvcm0pLgoKIyMgMC4xNC4yCiogKkFuZ3VsYXIgR2VuZXJhdG9yKgogICogQWRkZWQgc3VwcG9ydCBmb3IgQW5ndWxhciB2ZXJzaW9uIHJhbmdlcyBpbiBwZWVyIGRlcGVuZGVuY2llcwogIAojIyAwLjE0LjEKKiAqQW5ndWxhciBHZW5lcmF0b3IqCiAgKiBBZGRlZCBzdXBwb3J0IGZvciBBbmd1bGFyIDExCiAgCiMjIDAuMTQuMAoqICpBbmd1bGFyIEdlbmVyYXRvcioKICAqIFNpbXBsaWZ5IEFuZ3VsYXIgZ2VuZXJhdG9yIG9wdGlvbnMgYnkgcmVtb3ZpbmcgdGhlIHVudXNlZCBvbmVzICh3aXRoSW50ZXJmYWNlcyxwcm92aWRlZEluUm9vdCkKICAqIGZpeCBNb2NrIGlzIG5vdCBnZW5lcmF0ZWQgaWYgSHR0cCBzdGF0dXMgZXF1YWxzIHRvIDIwMSAoU0RLLTIzODgpCgojIyAwLjEzLjAKKiAqTGludCoKICAqIEFkZGVkIHJ1bGVzLiAKICAgICogQ2hlY2sgcGx1cmFscyBvbiBwYXRocyByZXNvdXJjZSBuYW1lcy4gCiAgICAqIENoZWNrIHByZWZpeCBmb3IgcGF0aHMgc2hvdWxkIGNvbnRhaW4gdmVyc2lvbi4KICAqIEVuYWJsZWQgcnVsZXMuCiAgICAqIFVzZSBTdGFuZGFyZCBIVFRQIFN0YXR1cyBDb2Rlcy4KCiMjIDAuMTIuMAoqICpHZW5lcmFsKgogICogSW1wcm92ZWQgY29kZSBxdWFsaXR5CiAgKiBBZGRlZCBtb3JlIHVuaXQgdGVzdHMKICAqIEFkZGVkIG1vcmUgcmVhbGlzdGljIGV4YW1wbGUgcHJvamVjdHMgaW4gYm9hdC1tYXZlbi1wbHVnaW4KICAqIEFkZGVkIGhlbHA6ZGVzY3JpYmUgc3VwcG9ydCBmb3IgYm9hdC1tYXZlbi1wbHVnaW4KICAqIEZpeGVkIGJ1aWxkaW5nIGluIFdpbmRvd3MgCiogKkJvYXQgRG9jcyoKICAqIFJlbmRlciByZXNwb25zZSBleGFtcGxlcyBmcm9tIHJlc3BvbnNlIGluc3RlYWQgb2Ygc2NoZW1hIG9iamVjdAoqICpMaW50KgogICogQWRkZWQgYWRkaXRpb25hbCBydWxlcy4gCiAgICAqIENoZWNrIHgtaWNvbiB2YWx1ZSBpbiB0aGUgaW5mbyBibG9jay4KICAgICogQ2hlY2sgaW5mbyBibG9jayBkZXNjcmlwdGlvbi4KICAgICogQ2hlY2sgdGFncyBhbGxvd2VkLgogICAgKiBDaGVjayBpbmZvIGJsb2NrIHRpdGxlLgogICAgKiBDaGVjayBwcmVmaXggZm9yIHBhdGhzLiBpLmUuICJjbGllbnQtYXBpIiwgInNlcnZpY2UtYXBpIiwgImludGVncmF0aW9uLWFwaSIKICAqIElnbm9yZSBaYWxhbmRvIFJ1bGVzZXQgYnkgZGVmYXVsdCBpbiBib2F0LW1hdmVuLXBsdWdpbgogIAojIyAwLjExLjQKKiAqSmF2YSBUZW1wbGF0ZXMqCiAgKiBDb3JyZWN0IHRoZSBpbXBvcnQgYW5kIHVzZSBvZiBAUXVhbGlmaWVyIGluIEFwaUNsaWVudCB0ZW1wbGF0ZQogICogT25seSBjaGFuZ2UgYmFzZSB0eXBlIHdoZW4gZGF0ZSB1c2VTZXRGb3JVbmlxdWVOYW1lcyBpcyBzZXQgdHJ1ZQogICAgCiogKkJvYXQgRG9jcyoKICAqIEhhbmRsZSBleGFtcGxlcyBmb3IgTWVkaWFUeXBlcyB3aXRob3V0IFNjaGVtYXMgKHN1Y2ggYXMgdGV4dC9jc3YpCiAgCiMjIDAuMTEuMwoKKiAqQW5ndWxhciBHZW5lcmF0b3IqCiAgKiBBcHBseSB0aGUgY29ycmVjdCByZXR1cm4gdHlwZSB3aGVuIG11bHRpcGxlIHJlc3BvbnNlcyBhcmUgcHJlc2VudAogICogR2VuZXJhdGUgbW9ja3MgZm9yIGV4YW1wbGVzIGRlZmluZWQgaW4gZGVyZWZlcmVuY2VkIHNjaGVtYXMKICAKIyMgMC4xMS4xCgoqICpKYXZhIEdlbmVyYXRvciAtIGJvYXQtc3ByaW5nIGxpYnJhcnkqCiAgKiBGaXhlZCByZWFjdGl2ZSBzcHJpbmcgdGVtcGxhdGVzCiAgKiBBdm9pZCBpbXBvcnRpbmcgYEh0dHBTZXJ2bGV0UmVzcG9uc2VgIHdoZW4gdXNpbmcgcmVhY3RpdmUKKiAqQW5ndWxhciBHZW5lcmF0b3IqCiAgKiBIYW5kbGUgZW1wdHkgYm9kaWVzIHByb3Blcmx5IGluIE1vY2sgZ2VuZXJhdGlvbgogICogVXBkYXRlIGZvdW5kYXRpb24tYW5nIHRvIGxhdGVzdCB2ZXJzaW9uCgojIyAwLjExLjAKCiogKk1hdmVuIFBsdWdpbioKICAgKiBBZGRlZCBgcmVtb3ZlRXh0ZW5zaW9uc2AgbW9qbyBwYXJhbWV0ZXIgdG8gYGJvYXQ6YnVuZGxlYCB0byBmaWx0ZXIgb3V0IHRoZSBnaXZlbiB2ZW5kb3IgZXh0ZW5zaW9ucyBmcm9tIGJ1bmRsZS4KICAgKiBBZGRlZCBgaW5jbHVkZXNgIG1vam8gcGFyYW1ldGVyIHRvIGBib2F0OmJ1bmRsZWAgYXMgYSBnbG9iIHBhdHRlcm4gc2VsZWN0aW5nIHRoZSBzcGVjaWZpY2F0aW9uIGZpbGVzIChkZWZhdWx0cyB0byBgKi55YW1sYCkuCiAgICogQWRkZWQgYGFwaXNUb0dlbmVyYXRlYCBtb2pvIHBhcmFtZXRlciB0byBgYm9hdDpnZW5lcmF0ZWAKICAgKiBTZXQgdGhlIGRlZmF1bHQgb2YgYGh0dHBVc2VyQWdlbnRgIHRvIGAke3Byb2plY3QuYXJ0aWZhY3RJZH0tJHtwcm9qZWN0LnZlcnNpb259YC4KCiogKkphdmEgR2VuZXJhdG9yIC0gcmVzdHRlbXBsYXRlIGxpYnJhcnkqCiAgKiBBZGRlZCBgdXNlV2l0aE1vZGlmaWVyc2Agb3B0aW9uIHRvIHVzZSB0aGUgYHdpdGhgIHByZWZpeCBmb3IgUE9KTyBtb2RpZmllcnMgKGRlZmF1bHRzIHRvIGBmYWxzZWApLgogICogYWRkZWQgYHVzZVNldEZvclVuaXF1ZUl0ZW1zYCB0byBtYXAgYXJyYXlzIGNvbnRhaW5pbmcgYHVuaXF1ZUl0ZW1zYCB0byBgU2V0YCAoZGVmYXVsdHMgdG8gYGZhbHNlYCkuCiAgKiBBZGRlZCBgdXNlQ2xhc3NMZXZlbEJlYW5WYWxpZGF0aW9uYCBvcHRpb24gKGRlZmF1bHRzIHRvIGBmYWxzZWApLgogICogQWRkZWQgYHVzZUphY2tzb25Db252ZXJzaW9uYCB0byB1c2UgSmFja3NvbiBmb3IgcGFyYW1ldGVycyBjb252ZXJzaW9uIGluc3RlYWQgb2YgYHRvU3RyaW5nYCAoZGVmYXVsdHMgdG8gYGZhbHNlYCkuCiAgKiBBZGRlZCBgcmVzdFRlbXBsYXRlQmVhbk5hbWVgIHRvIHF1YWxpZnkgdGhlIGF1dG93aXJlZCBSZXN0VGVtcGxhdGUgYmVhbi4KCiogKkFuZ3VsYXIgR2VuZXJhdG9yKgogICogQWRkZWQgYW4gQW5ndWxhciBjbGllbnQgZ2VuZXJhdG9yIGZvciB2ZXJzaW9uIDEwIGFuZCB1cC4gCiAgICBUaGUgZ2VuZXJhdG9yIHRlbXBsYXRlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBzdGFuZGFyZCBvbmUgYXQgW29wZW5hcGktZ2VuZXJhdG9yLnRlY2hdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC8pLCB3aXRoIHRoZSBhZGRpdGlvbiBvZiBtb2NrIHJlc3BvbnNlcyBhbmQgYSBzZXZlcmFsIGZpeGVzLCBhbW9uZyB3aGljaDoKICAgICogSGFuZGxpbmcgb2YgcmVzZXJ2ZWQgdHlwZXNjcmlwdCB3b3JkcwogICAgKiBBZGRlZCBzdXBwb3J0IGZvciBUeXBlc2NyaXB0IGFuZCBKYXZhc2NyaXB0IGZvciBlc2NhcGluZyBvZiBzdHJpbmdzIGluIGdlbmVyYXRvcnMKICAgICogRXNjYXBpbmcgb2YgbW9kZWwgcHJvcGVydGllcyB3aGVuIG5vdCB1c2luZyBgY2FtZWxDYXNlYAogICAgKiBTdXBwb3J0IGZvciBtdWx0aXBsZSBgTWVkaWFUeXBlc2AKICAqIFRvIGVuYWJsZSBtb2NrcyBnZW5lcmF0aW9uLCBzZXQgdGhlIGB3aXRoTW9ja3NgIG9wdGlvbiB0byBgdHJ1ZWAgIAoKIyMgMC4xMC4wCiogKk1hdmVuIFBsdWdpbioKICAgKiBgYm9hdDpsaW50YCBtb2pvIHdpbGwgZ2VuZXJhdGUgYW4gSFRNTCByZXBvcnQgYmFzZWQgb24gQVBJIEd1aWRlbGluZXMgCiAgICogYGJvYXQ6ZG9jc2AgbW9qbyB3aWxsIGdlbmVyYXRlIEhUTUwgZG9jdW1lbnRhdGlvbiBmcm9tIE9wZW5BUEkgc2hvd2luZyBtdWx0aXBsZSBleGFtcGxlcyBhbmQgcmVxdWVzdHMgYXMgd2VsbCBhcyBDdXN0b20gQW5ub3RhdGlvbnMKKiBHZW5lcmFsIEJ1ZyBGaXhlcwoqIExpbnRpbmcgUnVsZSBFbmdpbmUgZXh0ZW5kZWQgd2l0aCByZXNlcnZlZCB3b3JkIGxpbnRpbmcKKiAqKk5PVEUqKjogVGhlIGxpbnQgcnVsZXMgYXJlIHN0aWxsIGluIGRldmVsb3BtZW50LiBUaGUgZG9jdW1lbnRhdGlvbiBpcyBzdGlsbCBpbiB0aGUgd29ya3MuIAoKIyMgMC45LjAKKiAqTWF2ZW4gUGx1Z2luKgogICogQWRkZWQgYHZlcnNpb25gIHBhcmFtZXRlciB0byBgYnVuZGxlYCBnb2FsLgogICogQWRkZWQgYGJ1bmRsZVNwZWNzYCBwYXJhbWV0ZXIgdG8gYGdlbmVyYXRlYCBnb2FsIHRvIGF1dG9tYXRpY2FsbHkgYnVuZGxlIHNwZWNzIGludG8gc2luZ2xlIGZpbGUKKiBNb2Rlcm5pc2VkIEJPQVQgVGVybWluYWwKKiBJbXByb3ZlZCBCT0FUOkRvY3MgVGVtcGxhdGVzCiogUHJvcGVybHkgZGVyZWZlcmVuY2UgZXhhbXBsZXMKCiMjIDAuOC4wCiogSW1wcm92ZWQgc3R5bGluZyBIVE1MIGRvY3MKKiBwcmV2aWV3IEJPQVQ6UVVBWSBsaW50aW5nIG1vam8gZm9yIGxpbnRpbmcgT3BlbkFQSSBzcGVjcy4KKiBBdm9pZCBjaXJjdWxhciByZWZlcmVuY2VzIHdoZW4gZGVyZWZlbmVuY2luZyBPcGVuQVBJIHNwZWNzCgojIyAwLjcuMAoqIFJlbmRlciBtdWx0aXBsZSByZXF1ZXN0cyBhbmQgZXhhbXBsZXMgaW4gYm9hdC1kb2NzCiogQ3JlYXRlZCBIVE1MIHRlbXBsYXRlcyBmb3IgYm9hdC1kb2NzCiogUHJldHR5IFByaW50IEpTT04gRXhhbXBsZXMKKiBBZGRlZCBib2F0OmRvYyBtb2pvIGZvciBnZW5lcmF0aW5nIGJlYXV0aWZ1bCBIVE1MMiBkb2NzCgoqICogU3ByaW5nIEdlbmVyYXRvcioKICAqIFJlc3RvcmVkIGBIdHRwU2VydmxldFJlcXVlc3RgIHBhcmFtZXRlciAocmVncmVzc2lvbikuCiogQWRkZWQgYm9hdDp5YXJkIHRvIGNyZWF0ZSBzdGF0aWMgd2Vic2l0ZSBiYXNlZCBvbiBhIGNvbGxlY3Rpb24gb2Ygc3BlY3MKCiMjIDAuNi4wCiogc2ltcGxlIGZpeCB0byBjaGVjayBmb3IgbnVsbCB2YWx1ZSBpbiBvcGVuQXBpLmdldENvbXBvbmVudHMoKS5nZXRTY2hlbWFzKCkKKiBhYmlsaXR5IHRvIHJlc29sdmUgcmVmZXJlbmNlcyBsaWtlICMvY29tcG9uZW50cy9zY2hlbWFzL215T2JqZWN0L2l0ZW1zIG9yICMvY29tcG9uZW50cy9zY2hlbWFzL215T2JqZWN0L3Byb3BlcnRpZXMvZW1iZWRkZWRPYmplY3QKKiBzaW1wbGUgZml4IHRvIGF2b2lkIG5wZSBpbiBTdGF0aWNIdG1sMkdlbmVyYXRpb24gZXNjYXBpbmcgcmVzcG9uc2UgbWVzc2FnZS4KCiMjIDAuNS4wCgoqIEFkZCBEZXJlZmVyZW5jZUNvbXBvbmVudHNQcm9wZXJ0aWVzVHJhbnNmb3JtZXIgKHRoYXQgZG9lcyBhIGJpdCBleHRyYSkKKiBGaXggcmVjdXJzaXZlIHJlZmVyZW5jaW5nIGluIFVuQWxpYXNUcmFuc2Zvcm1lcgoKIyMgMC40LjAKKiBBZGRlZCBidW5kbGUgc2tpcAoqIENoYW5nZWQgbnVtYmVyaW5nIHNjaGVtZQoKIyMgMC4zLjAKCiogKk1hdmVuIFBsdWdpbioKICAqIEFkZGVkIGBidW5kbGUuc2tpcGAgcGFyYW1ldGVyIHRvIGBidW5kbGVgIGdvYWwgKGRlZmF1bHRzIHRvIGZhbHNlKS4KCiogKkhUTUwyIEdlbmVyYXRvcioKICAqIFJlbW92ZXMgZXhhbXBsZXMKICAqIEFkZHMgdGl0bGUgb2YgQVBJIHRvIHRoZSBsZWZ0IG5hdmlnYXRpb24KICAqIFJlbW92ZXMgdW5uZWNlc3Nhcnkgc3BhY2VzIGluIHRoZSBkb2NzCiAgKiBGaXhlcyBpdGVtIGZvY3VzIG9uIGxlZnQgbmF2aWdhdGlvbgogICogVXBkYXRlcyBKc29uIFNjaGVtYSBSZWYgUGFyc2VyIGxpYnJhcnkKICAqIFVwZGF0ZXMgSnNvbiBzY2hlbWEgdmlldyBsaWJyYXJ5CiAgKiBBZGRzIHN1cHBvcnQgZm9yIGFsbE9mIHdpdGggSnNvbiBzY2hlbWEgbWVyZ2UgYWxsIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9tb2trYWJvbm5hL2pzb24tc2NoZW1hLW1lcmdlLWFsbG9mCiAgKiBGaXhlcyBoZWFkZXIgeC0gcGFyYW1zIGJlaW5nIGVzY2FwZWQuIGVnIFgtVG90YWwtQ291bnQgdG8gWE1pbnVzVG90YWxNdW5pc0NvdW50CiAgKiBGaXhlcyBtYXJrZG93biBpbiBkZXNjcmlwdGlvbiBub3QgYmVpbmcgZXNjYXBlZCBhbmQgYnJlYWtpbmcgamF2YXNjcmlwdC4KICAqIEZpeGVzIG1pc3NpbmcgcmVmZXJlbmNlcyB0byBleHRlbmRlZCBzaW1wbGUgdHlwZXMgKHNldCBgdW5BbGlhc2Agb3B0aW9uIHRvIHRydWUpLgogICogRml4ZXMgbWlzc2luZyByZWZlcmVuY2VzIGJlY2F1c2UgY29uZnVzaW9uIG92ZXIgd2hldGhlciB0byByZWZlcmVuY2UgbmFtZSBvciBjbGFzc25hbWUuCiAgKiBNb3ZlZCB0aGUgY29kZSBnZW5lcmF0aW9uIGludG8gYSBzZXBhcmF0ZSBtb2R1bGUgdG8gYmUgdXNlZCBieSBvdGhlciBCT0FUIGNvbXBvbmVudHMuCiAgKiBDbGVhbmluZyB1cCBkZXBlbmRlbmNpZXMKICAqIEFkZGVkIGJvYXQ6YnVuZGxlIG1vam8gdG8gYnVuZGxlIGZyYWdtZW50cyBpbnRvIGEgc2luZ2xlIHNwZWMuCiAgKiBib2F0OmJ1bmRsZSB1bmFsaWFzZXMgdGhlIHNwZWMuIAoKKiAqU3ByaW5nIEdlbmVyYXRvcioKICAqIEFkZGVkIGB1c2VXaXRoTW9kaWZpZXJzYCB0byB1c2UgdGhlIGB3aXRoYCBwcmVmaXggZm9yIFBPSk8gbW9kaWZpZXJzIChkZWZhdWx0cyB0byBgZmFsc2VgOyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvbGQgUkFNTCBnZW5lcmF0b3IgbXVzdCBiZSBzZXQgdG8gYHRydWVgKS4KICAqIEZpeGVkIHgtYWJzdHJhY3QgZXh0ZW5zaW9uIChub3QgZ2VuZXJhdGVkKQogICogUmVzZXQgdGhlIGRlZmF1bHRzIG9mIHRoZSBvcHRpb25zIGFkZGVkIGluIDAuMi43IHRvIGF2b2lkIGJyZWFraW5nIGNoYW5nZXMuCiAgICAtIHVzZUxvbWJva0Fubm90YXRpb25zOiBmYWxzZQogICAgLSBvcGVuQXBpTnVsbGFibGU6IHRydWUKICAgIC0gdXNlU2V0Rm9yVW5pcXVlSXRlbXM6IGZhbHNlCgojIyAwLjIuNwoKKiAqU3ByaW5nIEdlbmVyYXRvcioKICAqIGFkZGVkIGluLWNvbnRhaW5lciB2YWxpZGF0aW9uLCBlLmcuIGBMaXN0PEBTaXplKG1heCA9IDM2KSBTdHJpbmc+YCAoc2VlIFtKU1ItMzgwIC0gQ29udGFpbmVyIGVsZW1lbnQgY29uc3RyYWludHNdKGh0dHBzOi8vYmVhbnZhbGlkYXRpb24ub3JnLzIuMC9zcGVjLyNjb25zdHJhaW50ZGVjbGFyYXRpb252YWxpZGF0aW9ucHJvY2Vzcy1jb250YWluZXJlbGVtZW50Y29uc3RyYWludHMpKS4KICAqIGFkZGVkIHZlbmRvciBleHRlbnNpb25zOiBgeC1hYnN0cmFjdGAsIGB4LWltcGxlbWVudHNgLgogICogYWRkZWQgYHVzZUxvbWJva0Fubm90YXRpb25zYCBvcHRpb24gKGRlZmF1bHRzIHRvIGB0cnVlYCkKICAqIGFkZGVkIGBvcGVuQXBpTnVsbGFibGVgIG9wdGlvbiAodGFrZW4gZnJvbSA1LjAsICBicmVha2luZyBjaGFuZ2UsIGRlZmF1bHRzIHRvIGBmYWxzZWAsIHNldCB0byBgdHJ1ZWAgaWYgbm90IHJlYWR5KS4KICAqIGFkZGVkIGB1c2VTZXRGb3JVbmlxdWVJdGVtc2AgdG8gbWFwIGFycmF5cyB3aXRoIGB1bmlxdWVJdGVtc2AgdG8gYFNldGAgaW5zdGVhZCBvZiBgTGlzdGAgKGJyZWFraW5nIGNoYW5nZSwgZGVmYXVsdHMgdG8gYHRydWVgLCBzZXQgdG8gYGZhbHNlYCBpZiBub3QgcmVhZHkpLgogICogYWRkZWQgYGFkZGl0aW9uYWxEZXBlbmRlbmNpZXNgIHRvIGJlIHVzZWQgaW4gYHNwcmluZy1ib290L3BvbS5tdXN0YWNoZWAgdGVtcGxhdGUuCiAgKiBmb3JtYXR0ZWQgbWV0aG9kIHBhcmFtZXRlcnMuCgoqICpNYXZlbiBQbHVnaW4qCiAgKiBhZGRlZCBgYWRkVGVzdENvbXBpbGVTb3VyY2VSb290YCB3aGljaCBhZGRzIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIHRoZSBwcm9qZWN0IGFzIGEgdGVzdCBzb3VyY2Ugcm9vdC4KICAqIGFkZGVkIGBhcGlOYW1lU3VmZml4YCB0byBjdXN0b21pc2UgdGhlIG5hbWUgb2YgdGhlIEFQSSBpbnRlcmZhY2UuCiAgKiBjb3JyZWN0ZWQgYGdlbmVyYXRvck5hbWVgIHByb3BlcnR5IHRvIHBvaW50IHRvIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ2VuZXJhdG9yTmFtZWAuCiAgKiBmaXhlZCB0aGUgY29kZSBnZW5lcmF0ZWQgZm9yIHByb3BlcnRpZXMgb2YgdHlwZSBgTWFwYCBpbiBtb2RlbC4KICAqIHJlZmFjdG9yZWQgYEdlbmVyYXRlTW9qb2Agc28gYG12biBib2F0OmdlbmVyYXRlIC1EY29kZWdlbi5jb25maWdIZWxwIC1Eb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdlbmVyYXRvck5hbWU9c3ByaW5nYCB3b3JrcyBjb3JyZWN0bHkuCiAgKiB0ZXN0IHRoZSBnZW5lcmF0ZWQgY29kZSBpbiB0aGUgaW50ZWdyYXRpb24gdGVzdCBwaGFzZQoKIyMgMC4yLjYKKiBFbnN1cmUgUkFNTCB0cmFpdHMgdGhhdCBhcmUgY29udmVydGVkIHRvIE9BUyBleHRlbnNpb25zIGFyZSBhbGwgdXNpbmcgbG93ZXIgY2FzZS4gCgojIyAwLjIuNSAKKiBGaXhlZCBhIGJ1ZyBob3cgZHVwbGljYXRlIG5hbWVzIGFyZSBnZW5lcmF0ZWQgaWYgUkFNTCBzb3VyY2UgaGFzIGR1cGxpY2F0ZSBuYW1lcyBmb3IgcmVmZXJlbmNlcy4gVGhlIHBhcmVudCByZXNvdXJjZSBuYW1lIGlzIG5vdyBwcmVwZW5kZWQgdG8gdGhlIHNjaGVtYSBuYW1lIHdpdGhvdXQgcmVtb3ZpbmcgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIHRoZSBwYXJlbnQgcmVzb3VyY2UgbmFtZQoqIEZpeGVkIGEgYnVnIHdoZW4gaW4gUkFNTCByZXNvdXJjZXMgd2VyZSBpbmxpbmUgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIGdsb2JhbCB0eXBlIHJlZmVyZW5jZXMgZm9yIFJlcXVlc3QgQm9kaWVzIGNhdXNpbmcgUmVzcG9uc2UgU2NoZW1hcyBiZWluZyByZWZlcmVuY2VkIGFzIFJlcXVlc3QgQm9kaWVzCgojIyAwLjIuNCAtIEJyZWFraW5nIENoYW5nZSEKKiAqKkNoYW5nZWQgaG93IG9wZXJhdGlvbklkcyBhcmUgZ2VuZXJhdGVkKiouIFRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBlbmRlZCB1cCBnZW5lcmF0aW5nIHZlcnkgbG9uZyBhbmQgY29uZnVzaW5nIG5hbWVzLiAKICAgIFRoZSBpbXByb3ZlZCBnZW5lcmF0b3IgZ3JlYXRseSBpbXByb3ZlcyB0aGUgbmFtZXMgb2Ygb3BlcmF0aW9uSWQgd2hlbiBjb252ZXJ0aW5nIGZyb20gUkFNTCB0byBPQVMzCiogRGVmYXVsdCB2ZXJzaW9uIG9mIE9wZW5BUEkgaXMgbm93ICoqMy4wLjMqKgoqIEdlbmVyYXRlZCBTVFVCUyBhbmQgQ2xpZW50cyBtdXN0IGJlIHJlZmFjdG9yZWQgdG8gdXNlIHRoZSBuZXcgbmFtZXMhIEl0IHNob3VsZCBub3QgYWZmZWN0IHRoZSBuYW1lcyBvZiBTY2hlbWFzIGNvbnZlcnRlZCBmcm9tIFJBTUwuIAoKCiMjIDAuMi4zCiogVXNlIFJBTUwgRGlzcGxheSBOYW1lIGFzIFN1bW1hcnkgb24gSHR0cCBPcGVyYXRpb25zIHdoZW4gY29udmVydGluZyB0byBPQVMzCiogQWxzbyBpbmNsdWRlIGludGVncmF0aW9uLXNwZWMgYW5kIGFydGlmYWN0cyBlbmRpbmcgb24gc3BlY3MgYXMgZGVmYXVsdCBmb3IgY29udmVyc2lvbiB1c2luZyBgZXhwb3J0LWRlcGAKKiBGaXggSFRNTDIgVGl0bGVzCgojIyAwLjIuMgoqIEZpeGVkIGVudW0gY29udmVyc2lvbi4gRW1wdHkgZW51bXMgYXJlIG5vdyBzZXQgdG8gbnVsbCBhZ2FpbiB3aGVuIGNvbnZlcnRpbmcgZnJvbSByYW1sIHRvIE9wZW5BUEkKKiBBZGRlZCBtb3JlIHJvYnVzdCBjb2RlIGdlbiBtb2pvcwoKCiMjIDAuMi4xCiogSW1wcm92ZWQgT3BlbiBBUEkgRGlmZgoqIFNvbmFyIEZpeGVzIAoKIyMgMC4yLjAKKiBDcmVhdGVkIG5ldyBDb2RlIEdlbmVyYXRpb24gTW9qb3Mgd2l0aCBvcGluaW9uYXRlZCBzZXR0aW5ncyBmb3IKKiogSmF2YSBDbGllbnQgd2l0aCBTcHJpbmcgV2ViQ2xpZW50IChSZWFjdGl2ZSkKKiogSmF2YSBTZXJ2ZXIgU3R1YnMgZm9yIFdlYkZsdXggKFJlYWN0aXZlKQoqKiBKYXZhIENsaWVudCB3aXRoIFNwcmluZyBSZXN0IFRlbXBsYXRlIChOb24gUmVhY3RpdmUpCioqIEphdmEgU2VydmVyIFN0dWJzIGZvciBTcHJpbmcgUmVzdCBDb250cm9sbGVyIChOb24gUmVhY3RpdmUpCioqIEltcHJvdmVkIEphdmEgQ2xpZW50IEFQSSdzIHRvIGJldHRlciBjb3BlIHdpdGggcmVzZXJ2ZWQgd29yZHMKKiBFeHBvcnQgRGVwZW5kZW5jaWVzIHdpbGwgbm93IHRyYXZlcnNlIHRocm91Z2ggdGhlIGFydGlmYWN0IHRvIGZpbmQgYWxsIHJhbWwgc3BlY3MKKiBJbXByb3ZlZCBSQU1MIDIgT3BlbiBBUEkgY29udmVyc2lvbgoqIFVwZ3JhZGVkIE9wZW5BUEkgRGlmZiBsaWJyYXJ5IHRvIG1vcmUgY3VycmVudCB2ZXJzaW9uCiogTW9qbydzIGNhbiBub3cgYnJlYWsgdGhlIGJ1aWxkIGJ5IHNldHRpbmcgYGNvbnRpbnVlT25FcnJvcmAgdG8gZmFsc2UKCiMjIDAuMS45CiogSW1wcm92ZWQgaG93IHNlcnZpY2VzIGFyZSBuYW1lZCBhZnRlciBiYXNlIHVybCBjb252ZXJzaW9uIHdhcyBpbnRyb2R1Y2VkLgoKIyMgMC4xLjgKKiBSZXZlcnNlZCBub3JtYWxpemF0aW9uIG9mIHNjaGVtYSBuYW1lcyBhcyB0aGF0IGNhdXNlcyBzdGFjayBvdmVyZmxvdyBlcnJvcnMuIAoqIEZpeGVkIEJhc2UgVVJMIENvbnZlcnNpb24gZnJvbSBSQU1MIHRvIE9wZW5BUEkKKiBTcGVjaWZ5IHNjaGVtYSB0eXBlIHdoZW4gYWRkaW5nIGFkZGl0aW9uYWwgcHJvcGVydGllcyBpbiBNYXZlbiBwbHVnaW4gdXNpbmcgYGFkZGl0aW9uYWxQcm9wZXJ0aWVzVHlwZWAgY29uZmlndXJhdGlvbiBvcHRpb24KCgojIyAwLjEuNwoqIEFkZGVkIGNvbmZpZ3VyYWJsZSBmbGFnIHRvIGFkZCBIdHRwU2VydmxldFJlcXVlc3QgcGFyYW1ldGVycyB0byBjb2RlZ2VuJ2Qgc2VydmVyIHN0dWJzLgoqIEV4dHJhY3QgaW5saW5lIGV4YW1wbGVzIGZyb20gdGhlIG9idGFpbmVkIE9wZW5BUEkgc3BlYyBhbmQgcHV0IHRoZW0gdW5kZXIgJzxvdXRwdXQtZGlyPi9leGFtcGxlcy8nIGFzIGpzb24gZmlsZXMuCiogQ2hhbmdlZCB0aGUgbm9ybWFsaXphdGlvbiBvZiBTY2hlbWEgTmFtZXMgdG8gZW5zdXJlIGV4aXN0aW5nIGNhc2luZyBpcyBub3QgbG9zdAoKIyMgMC4xLjYKKiBBZGRlZCBkb2N1bWVudGF0aW9uIG9uIGJvYXQtbWF2ZW4tcGx1Z2luCiogVXBncmFkZWQgWUFNTCBMaWJyYXJpZXMgdG8gaW1wcm92ZSBvdXRwdXQgb2YgWUFNTCBmaWxlcwoqIFVzZSBzdGFuZGFyZGl6ZWQgc3dhZ2dlciBZQU1MIG91dHB1dAoqIEFkZGVkIEJlYW4gVmFsaWRhdG9yIGluIENvZGUgR2VuZXJhdG9yCiogQ2hhbmdlZCBPcGVuIEFQSSBMb2FkZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgcmVmZXJlbmNlcyBmcm9tIHJlYWRpbmcgaW5wdXQgbG9jYXRpb24gaW5zdGVhZCBvZiBzdHJpbmcKCiMjIDAuMS41CgoqIFVwZ3JhZGVkIG9wZW5hcGktZ2VuZXJhdG9yIHRvIDQuMy4wCiogRml4ZWQgamF2YSBkb2MgaW4gdGhlIEphdmEgdGVtcGxhdGVzIHRvIGFsbG93IHVzYWdlIGluIEphdmEgMTEgcHJvamVjdHMKKiBSZW5hbWUgdmFyaWFibGUgbmFtZSBgYWNjZXB0YCB0byBgYWNjZXB0TWVkaWFUeXBlYCBpbiBKYXZhIHRlbXBsYXRlcyB0byBhbGxvdyBPcGVuQVBJIFNwZWNzIHdpdGggcGFyYW1ldGVycyBjYWxsZWQgYGFjY2VwdGAKCgojIyAwLjEuNAoKKiBGaXhlZCB0ZW1wbGF0ZSBmb3IgSFRNTDIgZ2VuZXJhdG9yCiogSW5jbHVkZSBjb252ZXJzaW9uIG9mIGFwaS5yYW1sIGZpbGVzIGZvdW5kIGluIGRlcGVuZGVuY2llcwoKIyMgMC4xLjMgIAoKKiBBZGRlZCBDb2RlIEdlbmVyYXRvciBNb2pvIGZyb20gb24gW29wZW5hcGktZ2VuZXJhdG9yLnRlY2hdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC8pIHdpdGggY3VzdG9tIHRlbXBsYXRlcyBmb3IgSmF2YSwgSmF2YVNwcmluZyBhbmQgSFRNTDIKKiBSZW5hbWVkIGBleHBvcnRgIHRvIGBleHBvcnQtZGVwYCBtb2pvIGZvciBjb252ZXJ0aW5nIFJBTUwgc3BlY3MgdG8gb2FzIGZyb20gZGVwZW5kZW5jaWVzCiogQWRkZWQgYGV4cG9ydGAgbW9qbyBmb3IgY29udmVydGluZyBSQU1MIHNwZWNzIGZyb20gaW5wdXQgZmlsZQoqIEFkZGVkIE5vcm1hbGlzZXIgdHJhbnNmb3JtZXIgZm9yIHRyYW5zZm9ybWluZyBleGFtcGxlcyBuYW1lcyB0byBiZSB1c2VkIGluIEphdmEgY29kZSBnZW5lcmF0aW9uICBhcyBleGFtcGxlIG5hbWVzIGNhbm5vdCBoYXZlIHNwZWNpYWwgY2hhcmFjdGVycy4KKiBJbXByb3ZlIFRpdGxlIGFuZCBEZXNjcmlwdGlvbnMgb2YgY29udmVydGVkIFJBTUwgc3BlY3MKKiBBbHdheXMgd3JhcCBleGFtcGxlcyBpbiBleGFtcGxlIG9iamVjdAoqIE1hbnkgY29kZSBpbXByb3ZlbWVudHMgdG8gYmUgbm90IGFzaGFtZWQgb2YgU29uYXIgUmVwb3J0cy4gIAoKCiMgQnVpbGQgJiBJbnN0YWxsCgpgYGBzaGVsbCBzY3JpcHQKbXZuIGluc3RhbGwKYGBgCgojIyBNYXZlbiBQbHVnaW4gVXNhZ2UKClRoZSBmb2xsb3dpbmcgY29tbWFuZCB3aWxsIGdlbmVyYXRlIGBpbmRleC5odG1sYCBmaWxlIGluIHRoZSBzcGVjaWZpZWQgb3V0cHV0IGZvbGRlciB0aGF0IGNvbnRhaW5zIEFQSSBlbmRwb2ludHMgZGVzY3JpcHRpb24uICAKIApgYGBiYXNoCm12biBib2F0OmdlbmVyYXRlQGdlbmVyYXRlLWRvY3MKYGBgCgojIyBHZW5lcmF0ZSBBUEkgaW50ZXJmYWNlcwoKQ29uZmlndXJhdGlvbgpgYGAKPGJ1aWxkPgogIDxwbHVnaW5zPgogICAgPHBsdWdpbj4KICAgICAgPGdyb3VwSWQ+Y29tLmJhY2tiYXNlLm9zczwvZ3JvdXBJZD4KICAgICAgPGFydGlmYWN0SWQ+Ym9hdC1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICAgIDx2ZXJzaW9uPiR7Ym9hdC1tYXZlbi1wbHVnaW4udmVyc2lvbn08L3ZlcnNpb24+CiAgICAgIDxleGVjdXRpb25zPgogICAgICAgIDxleGVjdXRpb24+CiAgICAgICAgICA8aWQ+Z2VuZXJhdGUtYXBpLWNvZGU8L2lkPgogICAgICAgICAgPGdvYWxzPgogICAgICAgICAgICA8Z29hbD5nZW5lcmF0ZTwvZ29hbD4KICAgICAgICAgIDwvZ29hbHM+CiAgICAgICAgICA8cGhhc2U+Z2VuZXJhdGUtc291cmNlczwvcGhhc2U+CiAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KICAgICAgICAgICAgPGlucHV0U3BlYz4ke3Byb2plY3QuYmFzZWRpcn0vc3JjL21haW4vcmVzb3VyY2VzL2FwaS55YW1sPC9pbnB1dFNwZWM+CiAgICAgICAgICAgIDxvdXRwdXQ+JHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX0vZ2VuZXJhdGVkLXNvdXJjZXMvYXBpPC9vdXRwdXQ+CiAgICAgICAgICAgIDxnZW5lcmF0b3JOYW1lPnNwcmluZzwvZ2VuZXJhdG9yTmFtZT4KICAgICAgICAgICAgWy4uLl0KICAgICAgICAgICAgPGNvbmZpZ09wdGlvbnM+CiAgICAgICAgICAgICAgPGxpYnJhcnk+c3ByaW5nLWJvb3Q8L2xpYnJhcnk+CiAgICAgICAgICAgICAgPGFwaVBhY2thZ2U+Y29tLmV4YW1wbGUubXkuc2VydmljZS5hcGkuaW50ZXJmYWNlczwvYXBpUGFja2FnZT4KICAgICAgICAgICAgICA8bW9kZWxQYWNrYWdlPmNvbS5leGFtcGxlLm15LnNlcnZpY2UubW9kZWxzPC9tb2RlbFBhY2thZ2U+CiAgICAgICAgICAgICAgPGhpZGVHZW5lcmF0aW9uVGltZXN0YW1wPnRydWU8L2hpZGVHZW5lcmF0aW9uVGltZXN0YW1wPgogICAgICAgICAgICAgIDxkYXRlTGlicmFyeT5qYXZhODwvZGF0ZUxpYnJhcnk+CiAgICAgICAgICAgICAgPGludGVyZmFjZU9ubHk+dHJ1ZTwvaW50ZXJmYWNlT25seT4KICAgICAgICAgICAgICA8c2tpcERlZmF1bHRJbnRlcmZhY2U+dHJ1ZTwvc2tpcERlZmF1bHRJbnRlcmZhY2U+CiAgICAgICAgICAgICAgPHVzZUJlYW5WYWxpZGF0aW9uPnRydWU8L3VzZUJlYW5WYWxpZGF0aW9uPgogICAgICAgICAgICAgIDx1c2VUYWdzPnRydWU8L3VzZVRhZ3M+CiAgICAgICAgICAgICAgPGphdmE4PnRydWU8L2phdmE4PgogICAgICAgICAgICAgIDx1c2VPcHRpb25hbD5mYWxzZTwvdXNlT3B0aW9uYWw+CiAgICAgICAgICAgICAgWy4uLl0KICAgICAgICAgICAgPC9jb25maWdPcHRpb25zPgogICAgICAgICAgPC9jb25maWd1cmF0aW9uPgogICAgICAgIDwvZXhlY3V0aW9uPgogICAgICA8L2V4ZWN1dGlvbnM+CiAgICA8L3BsdWdpbj4KIDwvcGx1Z2lucz4KPC9idWlsZD4KYGBgCgpBIGNvbXByZWhlbnNpdmUgbGlzdCBvZiB0aGUgQ29uZmlndXJhdGlvbiBvcHRpb25zIGNhbiBiZSBmb3VuZCBiZWxvdy4KCnwgT3B0aW9uIHwgUHJvcGVydHkgfCBEZXNjcmlwdGlvbiB8CnwtLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgYHZlcmJvc2VgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4udmVyYm9zZWAgfCB2ZXJib3NlIG1vZGUgKGBmYWxzZWAgYnkgZGVmYXVsdCkKfCBgaW5wdXRTcGVjYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmlucHV0U3BlY2AgfCBPcGVuQVBJIFNwZWMgZmlsZSBwYXRoCnwgYGxhbmd1YWdlYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmxhbmd1YWdlYCB8IHRhcmdldCBnZW5lcmF0aW9uIGxhbmd1YWdlIChkZXByZWNhdGVkLCByZXBsYWNlZCBieSBgZ2VuZXJhdG9yTmFtZWAgYXMgdmFsdWVzIGhlcmUgZG9uJ3QgcmVwcmVzZW50IG9ubHkgJ2xhbmd1YWdlJyBhbnkgbG9uZ2VyKQp8IGBnZW5lcmF0b3JOYW1lYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdlbmVyYXRvck5hbWVgIHwgdGFyZ2V0IGdlbmVyYXRvciBuYW1lCnwgYG91dHB1dGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5vdXRwdXRgIHwgdGFyZ2V0IG91dHB1dCBwYXRoIChkZWZhdWx0IGlzIGAke3Byb2plY3QuYnVpbGQuZGlyZWN0b3J5fS9nZW5lcmF0ZWQtc291cmNlcy9vcGVuYXBpYC4gQ2FuIGFsc28gYmUgc2V0IGdsb2JhbGx5IHRocm91Z2ggdGhlIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4ub3V0cHV0YCBwcm9wZXJ0eSkKfCBgZ2l0SG9zdGAgfCBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdpdEhvc3RgIHwgVGhlIGdpdCBob3N0LCBlLmcuIGdpdGxhYi5jb20KfCBgZ2l0VXNlcklkYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdpdFVzZXJJZGAgfCBzZXRzIGdpdCBpbmZvcm1hdGlvbiBvZiB0aGUgcHJvamVjdAp8IGBnaXRSZXBvSWRgIHwgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5naXRSZXBvSWRgIHwgc2V0cyB0aGUgcmVwbyBJRCAoZS5nLiBvcGVuYXBpLWdlbmVyYXRvcikKfCBgdGVtcGxhdGVEaXJlY3RvcnlgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4udGVtcGxhdGVEaXJlY3RvcnlgIHwgZGlyZWN0b3J5IHdpdGggbXVzdGFjaGUgdGVtcGxhdGVzCnwgYHRlbXBsYXRlUmVzb3VyY2VQYXRoYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnRlbXBsYXRlUmVzb3VyY2VQYXRoYCB8IGRpcmVjdG9yeSB3aXRoIG11c3RhY2hlIHRlbXBsYXRlcyB2aWEgcmVzb3VyY2UgcGF0aC4gVGhpcyBvcHRpb24gd2lsbCBvdmVyd3JpdGUgYW55IG9wdGlvbiBkZWZpbmVkIGluIGB0ZW1wbGF0ZURpcmVjdG9yeWAuCnwgYGVuZ2luZWAgfCBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmVuZ2luZWAgfCBUaGUgbmFtZSBvZiB0ZW1wbGF0aW5nIGVuZ2luZSB0byB1c2UsICJtdXN0YWNoZSIgKGRlZmF1bHQpIG9yICJoYW5kbGViYXJzIiAoYmV0YSkKfCBgYXV0aGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5hdXRoYCB8IGFkZHMgYXV0aG9yaXphdGlvbiBoZWFkZXJzIHdoZW4gZmV0Y2hpbmcgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbnMgcmVtb3RlbHkuIFBhc3MgaW4gYSBVUkwtZW5jb2RlZCBzdHJpbmcgb2YgYG5hbWU6aGVhZGVyYCB3aXRoIGEgY29tbWEgc2VwYXJhdGluZyBtdWx0aXBsZSB2YWx1ZXMKfCBgY29uZmlndXJhdGlvbkZpbGVgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uY29uZmlndXJhdGlvbkZpbGVgIHwgUGF0aCB0byBzZXBhcmF0ZSBqc29uIGNvbmZpZ3VyYXRpb24gZmlsZS4gRmlsZSBjb250ZW50IHNob3VsZCBiZSBpbiBhIGpzb24gZm9ybWF0IHsib3B0aW9uS2V5Ijoib3B0aW9uVmFsdWUiLCAib3B0aW9uS2V5MSI6Im9wdGlvblZhbHVlMSIuLi59IFN1cHBvcnRlZCBvcHRpb25zIGNhbiBiZSBkaWZmZXJlbnQgZm9yIGVhY2ggbGFuZ3VhZ2UuIFJ1biBgY29uZmlnLWhlbHAgLWcge2dlbmVyYXRvciBuYW1lfWAgY29tbWFuZCBmb3IgbGFuZ3VhZ2Ugc3BlY2lmaWMgY29uZmlnIG9wdGlvbnMKfCBgc2tpcE92ZXJ3cml0ZWAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5za2lwT3ZlcndyaXRlYCB8IFNwZWNpZmllcyBpZiB0aGUgZXhpc3RpbmcgZmlsZXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1cmluZyB0aGUgZ2VuZXJhdGlvbi4gKGBmYWxzZWAgYnkgZGVmYXVsdCkKfCBgYXBpUGFja2FnZWAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5hcGlQYWNrYWdlYCB8IHRoZSBwYWNrYWdlIHRvIHVzZSBmb3IgZ2VuZXJhdGVkIGFwaSBvYmplY3RzL2NsYXNzZXMKfCBgbW9kZWxQYWNrYWdlYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLm1vZGVsUGFja2FnZWAgfCB0aGUgcGFja2FnZSB0byB1c2UgZm9yIGdlbmVyYXRlZCBtb2RlbCBvYmplY3RzL2NsYXNzZXMKfCBgaW52b2tlclBhY2thZ2VgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uaW52b2tlclBhY2thZ2VgIHwgdGhlIHBhY2thZ2UgdG8gdXNlIGZvciB0aGUgZ2VuZXJhdGVkIGludm9rZXIgb2JqZWN0cwp8IGBwYWNrYWdlTmFtZWAgfCBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnBhY2thZ2VOYW1lYCB8IHRoZSBkZWZhdWx0IHBhY2thZ2UgbmFtZSB0byB1c2UgZm9yIHRoZSBnZW5lcmF0ZWQgb2JqZWN0cwp8IGBncm91cElkYCB8IGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ3JvdXBJZGAgIHwgc2V0cyBwcm9qZWN0IGluZm9ybWF0aW9uIGluIGdlbmVyYXRlZCBwb20ueG1sL2J1aWxkLmdyYWRsZSBvciBvdGhlciBidWlsZCBzY3JpcHQuIExhbmd1YWdlLXNwZWNpZmljIGNvbnZlcnNpb25zIG9jY3VyIGluIG5vbi1qdm0gZ2VuZXJhdG9ycwp8IGBhcnRpZmFjdElkYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmFydGlmYWN0SWRgIHwgc2V0cyBwcm9qZWN0IGluZm9ybWF0aW9uIGluIGdlbmVyYXRlZCBwb20ueG1sL2J1aWxkLmdyYWRsZSBvciBvdGhlciBidWlsZCBzY3JpcHQuIExhbmd1YWdlLXNwZWNpZmljIGNvbnZlcnNpb25zIG9jY3VyIGluIG5vbi1qdm0gZ2VuZXJhdG9ycwp8IGBhcnRpZmFjdFZlcnNpb25gIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uYXJ0aWZhY3RWZXJzaW9uYCB8IHNldHMgcHJvamVjdCBpbmZvcm1hdGlvbiBpbiBnZW5lcmF0ZWQgcG9tLnhtbC9idWlsZC5ncmFkbGUgb3Igb3RoZXIgYnVpbGQgc2NyaXB0LiBMYW5ndWFnZS1zcGVjaWZpYyBjb252ZXJzaW9ucyBvY2N1ciBpbiBub24tanZtIGdlbmVyYXRvcnMKfCBgbGlicmFyeWAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5saWJyYXJ5YCB8IGxpYnJhcnkgdGVtcGxhdGUgKHN1Yi10ZW1wbGF0ZSkKfCBgbW9kZWxOYW1lUHJlZml4YCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLm1vZGVsTmFtZVByZWZpeGAgfCBTZXRzIHRoZSBwcmVmaXggZm9yIG1vZGVsIGNsYXNzZXMgYW5kIGVudW1zCnwgYG1vZGVsTmFtZVN1ZmZpeGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5tb2RlbE5hbWVTdWZmaXhgIHwgU2V0cyB0aGUgc3VmZml4IGZvciBtb2RlbCBjbGFzc2VzIGFuZCBlbnVtcwp8IGBpZ25vcmVGaWxlT3ZlcnJpZGVgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uaWdub3JlRmlsZU92ZXJyaWRlYCB8IHNwZWNpZmllcyB0aGUgZnVsbCBwYXRoIHRvIGEgYC5vcGVuYXBpLWdlbmVyYXRvci1pZ25vcmVgIHVzZWQgZm9yIHBhdHRlcm4gYmFzZWQgb3ZlcnJpZGVzIG9mIGdlbmVyYXRlZCBvdXRwdXRzCnwgYGh0dHBVc2VyQWdlbnRgIHwgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5odHRwVXNlckFnZW50YCB8IFNldHMgY3VzdG9tIFVzZXItQWdlbnQgaGVhZGVyIHZhbHVlCnwgYHJlbW92ZU9wZXJhdGlvbklkUHJlZml4YCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnJlbW92ZU9wZXJhdGlvbklkUHJlZml4YCB8IHJlbW92ZSBvcGVyYXRpb25JZCBwcmVmaXggKGUuZy4gdXNlcl9nZXROYW1lID0+IGdldE5hbWUpCnwgYGxvZ1RvU3RkZXJyYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmxvZ1RvU3RkZXJyYCB8IHdyaXRlIGFsbCBsb2cgbWVzc2FnZXMgKG5vdCBqdXN0IGVycm9ycykgdG8gU1RET1VUCnwgYGVuYWJsZVBvc3RQcm9jZXNzRmlsZWAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5gIHwgZW5hYmxlIGZpbGUgcG9zdC1wcm9jZXNzaW5nIGhvb2sKfCBgc2tpcFZhbGlkYXRlU3BlY2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5za2lwVmFsaWRhdGVTcGVjYCB8IFdoZXRoZXIgb3Igbm90IHRvIHNraXAgdmFsaWRhdGluZyB0aGUgaW5wdXQgc3BlYyBwcmlvciB0byBnZW5lcmF0aW9uLiBCeSBkZWZhdWx0LCBpbnZhbGlkIHNwZWNpZmljYXRpb25zIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLgp8IGBzdHJpY3RTcGVjYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnN0cmljdFNwZWNgIHwgV2hldGhlciBvciBub3QgdG8gdHJlYXQgYW4gaW5wdXQgZG9jdW1lbnQgc3RyaWN0bHkgYWdhaW5zdCB0aGUgc3BlYy4gJ01VU1QnIGFuZCAnU0hBTEwnIHdvcmRpbmcgaW4gT3BlbkFQSSBzcGVjIGlzIHN0cmljdGx5IGFkaGVyZWQgdG8uIGUuZy4gd2hlbiBmYWxzZSwgbm8gZml4ZXMgd2lsbCBiZSBhcHBsaWVkIHRvIGRvY3VtZW50cyB3aGljaCBwYXNzIHZhbGlkYXRpb24gYnV0IGRvbid0IGZvbGxvdyB0aGUgc3BlYy4KfCBgZ2VuZXJhdGVBbGlhc0FzTW9kZWxgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ2VuZXJhdGVBbGlhc0FzTW9kZWxgIHwgZ2VuZXJhdGUgYWxpYXMgKGFycmF5LCBtYXApIGFzIG1vZGVsCnwgYGNvbmZpZ09wdGlvbnNgIHwgIE4vQSB8IGEgKiptYXAqKiBvZiBsYW5ndWFnZS1zcGVjaWZpYyBwYXJhbWV0ZXJzLiBUbyBzaG93IGEgZnVsbCBsaXN0IG9mIGdlbmVyYXRvci1zcGVjaWZpZWQgcGFyYW1ldGVycyAob3B0aW9ucyksIHBsZWFzZSB1c2UgYGNvbmZpZ0hlbHBgIChleHBsYWluZWQgYmVsb3cpCnwgYGluc3RhbnRpYXRpb25UeXBlc2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5pbnN0YW50aWF0aW9uVHlwZXNgIHwgc2V0cyBpbnN0YW50aWF0aW9uIHR5cGUgbWFwcGluZ3MgaW4gdGhlIGZvcm1hdCBvZiB0eXBlPWluc3RhbnRpYXRlZFR5cGUsdHlwZT1pbnN0YW50aWF0ZWRUeXBlLiBGb3IgZXhhbXBsZSAoaW4gSmF2YSk6IGBhcnJheT1BcnJheUxpc3QsbWFwPUhhc2hNYXBgLiBJbiBvdGhlciB3b3JkcyBhcnJheSB0eXBlcyB3aWxsIGdldCBpbnN0YW50aWF0ZWQgYXMgQXJyYXlMaXN0IGluIGdlbmVyYXRlZCBjb2RlLiBZb3UgY2FuIGFsc28gaGF2ZSBtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB0aGlzIG9wdGlvbgp8IGBpbXBvcnRNYXBwaW5nc2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5pbXBvcnRNYXBwaW5nc2AgfCBzcGVjaWZpZXMgbWFwcGluZ3MgYmV0d2VlbiBhIGdpdmVuIGNsYXNzIGFuZCB0aGUgaW1wb3J0IHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoYXQgY2xhc3MgaW4gdGhlIGZvcm1hdCBvZiB0eXBlPWltcG9ydCx0eXBlPWltcG9ydC4gWW91IGNhbiBhbHNvIGhhdmUgbXVsdGlwbGUgb2NjdXJyZW5jZXMgb2YgdGhpcyBvcHRpb24KfCBgdHlwZU1hcHBpbmdzYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnR5cGVNYXBwaW5nc2AgfCBzZXRzIG1hcHBpbmdzIGJldHdlZW4gT3BlbkFQSSBzcGVjIHR5cGVzIGFuZCBnZW5lcmF0ZWQgY29kZSB0eXBlcyBpbiB0aGUgZm9ybWF0IG9mIE9wZW5BUElUeXBlPWdlbmVyYXRlZFR5cGUsT3BlbkFQSVR5cGU9Z2VuZXJhdGVkVHlwZS4gRm9yIGV4YW1wbGU6IGBhcnJheT1MaXN0LG1hcD1NYXAsc3RyaW5nPVN0cmluZ2AuIFlvdSBjYW4gYWxzbyBoYXZlIG11bHRpcGxlIG9jY3VycmVuY2VzIG9mIHRoaXMgb3B0aW9uCnwgYGxhbmd1YWdlU3BlY2lmaWNQcmltaXRpdmVzYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmxhbmd1YWdlU3BlY2lmaWNQcmltaXRpdmVzYCB8IHNwZWNpZmllcyBhZGRpdGlvbmFsIGxhbmd1YWdlIHNwZWNpZmljIHByaW1pdGl2ZSB0eXBlcyBpbiB0aGUgZm9ybWF0IG9mIHR5cGUxLHR5cGUyLHR5cGUzLHR5cGUzLiBGb3IgZXhhbXBsZTogYFN0cmluZyxib29sZWFuLEJvb2xlYW4sRG91YmxlYC4gWW91IGNhbiBhbHNvIGhhdmUgbXVsdGlwbGUgb2NjdXJyZW5jZXMgb2YgdGhpcyBvcHRpb24KfCBgYWRkaXRpb25hbFByb3BlcnRpZXNgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uYWRkaXRpb25hbFByb3BlcnRpZXNgIHwgc2V0cyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZCBieSB0aGUgbXVzdGFjaGUgdGVtcGxhdGVzIGluIHRoZSBmb3JtYXQgb2YgbmFtZT12YWx1ZSxuYW1lPXZhbHVlLiBZb3UgY2FuIGFsc28gaGF2ZSBtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB0aGlzIG9wdGlvbgp8IGBzZXJ2ZXJWYXJpYWJsZU92ZXJyaWRlc2AgfCBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnNlcnZlclZhcmlhYmxlT3ZlcnJpZGVzYCB8IEEgbWFwIG9mIHNlcnZlciB2YXJpYWJsZSBvdmVycmlkZXMgZm9yIHNwZWNzIHRoYXQgc3VwcG9ydCBzZXJ2ZXIgVVJMIHRlbXBsYXRpbmcKfCBgcmVzZXJ2ZWRXb3Jkc01hcHBpbmdzYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnJlc2VydmVkV29yZHNNYXBwaW5nc2AgfCBzcGVjaWZpZXMgaG93IGEgcmVzZXJ2ZWQgbmFtZSBzaG91bGQgYmUgZXNjYXBlZCB0by4gT3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBgXzxuYW1lPmAgaXMgdXNlZC4gRm9yIGV4YW1wbGUgYGlkPWlkZW50aWZpZXJgLiBZb3UgY2FuIGFsc28gaGF2ZSBtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB0aGlzIG9wdGlvbgp8IGBnZW5lcmF0ZUFwaXNgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ2VuZXJhdGVBcGlzYCB8IGdlbmVyYXRlIHRoZSBhcGlzIChgdHJ1ZWAgYnkgZGVmYXVsdCkuIFNwZWNpZmljIGFwaXMgbWF5IGJlIGRlZmluZWQgYXMgYSBDU1YgdmlhIGBhcGlzVG9HZW5lcmF0ZWAuCnwgYGFwaXNUb0dlbmVyYXRlYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmFwaXNUb0dlbmVyYXRlYCB8IEEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYXBpcyB0byBnZW5lcmF0ZS4gIEFsbCBhcGlzIGlzIHRoZSBkZWZhdWx0Lgp8IGBnZW5lcmF0ZU1vZGVsc2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5nZW5lcmF0ZU1vZGVsc2AgfCBnZW5lcmF0ZSB0aGUgbW9kZWxzIChgdHJ1ZWAgYnkgZGVmYXVsdCkuIFNwZWNpZmljIG1vZGVscyBtYXkgYmUgZGVmaW5lZCBhcyBhIENTViB2aWEgYG1vZGVsc1RvR2VuZXJhdGVgLgp8IGBtb2RlbHNUb0dlbmVyYXRlYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLm1vZGVsc1RvR2VuZXJhdGVgIHwgQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBtb2RlbHMgdG8gZ2VuZXJhdGUuICBBbGwgbW9kZWxzIGlzIHRoZSBkZWZhdWx0Lgp8IGBnZW5lcmF0ZVN1cHBvcnRpbmdGaWxlc2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5nZW5lcmF0ZVN1cHBvcnRpbmdGaWxlc2AgfCBnZW5lcmF0ZSB0aGUgc3VwcG9ydGluZyBmaWxlcyAoYHRydWVgIGJ5IGRlZmF1bHQpCnwgYHN1cHBvcnRpbmdGaWxlc1RvR2VuZXJhdGVgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uc3VwcG9ydGluZ0ZpbGVzVG9HZW5lcmF0ZWAgfCBBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHN1cHBvcnRpbmcgZmlsZXMgdG8gZ2VuZXJhdGUuICBBbGwgZmlsZXMgaXMgdGhlIGRlZmF1bHQuCnwgYGdlbmVyYXRlTW9kZWxUZXN0c2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5nZW5lcmF0ZU1vZGVsVGVzdHNgIHwgZ2VuZXJhdGUgdGhlIG1vZGVsIHRlc3RzIChgdHJ1ZWAgYnkgZGVmYXVsdC4gT25seSBhdmFpbGFibGUgaWYgYGdlbmVyYXRlTW9kZWxzYCBpcyBgdHJ1ZWApCnwgYGdlbmVyYXRlTW9kZWxEb2N1bWVudGF0aW9uYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdlbmVyYXRlTW9kZWxEb2N1bWVudGF0aW9uYCB8IGdlbmVyYXRlIHRoZSBtb2RlbCBkb2N1bWVudGF0aW9uIChgdHJ1ZWAgYnkgZGVmYXVsdC4gT25seSBhdmFpbGFibGUgaWYgYGdlbmVyYXRlTW9kZWxzYCBpcyBgdHJ1ZWApCnwgYGdlbmVyYXRlQXBpVGVzdHNgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ2VuZXJhdGVBcGlUZXN0c2AgfCBnZW5lcmF0ZSB0aGUgYXBpIHRlc3RzIChgdHJ1ZWAgYnkgZGVmYXVsdC4gT25seSBhdmFpbGFibGUgaWYgYGdlbmVyYXRlQXBpc2AgaXMgYHRydWVgKQp8IGBnZW5lcmF0ZUFwaURvY3VtZW50YXRpb25gIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ2VuZXJhdGVBcGlEb2N1bWVudGF0aW9uYCB8IGdlbmVyYXRlIHRoZSBhcGkgZG9jdW1lbnRhdGlvbiAoYHRydWVgIGJ5IGRlZmF1bHQuIE9ubHkgYXZhaWxhYmxlIGlmIGBnZW5lcmF0ZUFwaXNgIGlzIGB0cnVlYCkKfCBgd2l0aFhtbGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi53aXRoWG1sYCB8IGVuYWJsZSBYTUwgYW5ub3RhdGlvbnMgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgbW9kZWxzIGFuZCBBUEkgKG9ubHkgd29ya3Mgd2l0aCBKYXZhIGBsYW5ndWFnZWAgYW5kIGxpYnJhcmllcyB0aGF0IHByb3ZpZGUgc3VwcG9ydCBmb3IgSlNPTiBhbmQgWE1MKQp8IGBza2lwYCB8ICBgY29kZWdlbi5za2lwYCB8IHNraXAgY29kZSBnZW5lcmF0aW9uIChgZmFsc2VgIGJ5IGRlZmF1bHQuIENhbiBhbHNvIGJlIHNldCBnbG9iYWxseSB0aHJvdWdoIHRoZSBgY29kZWdlbi5za2lwYCBwcm9wZXJ0eSkKfCBgc2tpcElmU3BlY0lzVW5jaGFuZ2VkYCB8ICBgY29kZWdlbi5za2lwSWZTcGVjSXNVbmNoYW5nZWRgIHwgU2tpcCB0aGUgZXhlY3V0aW9uIGlmIHRoZSBzb3VyY2UgZmlsZSBpcyBvbGRlciB0aGFuIHRoZSBvdXRwdXQgZm9sZGVyIChgZmFsc2VgIGJ5IGRlZmF1bHQuIENhbiBhbHNvIGJlIHNldCBnbG9iYWxseSB0aHJvdWdoIHRoZSBgY29kZWdlbi5za2lwSWZTcGVjSXNVbmNoYW5nZWRgIHByb3BlcnR5KQp8IGBhZGRDb21waWxlU291cmNlUm9vdGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5hZGRDb21waWxlU291cmNlUm9vdGAgfCBBZGQgdGhlIG91dHB1dCBkaXJlY3RvcnkgdG8gdGhlIHByb2plY3QgYXMgYSBzb3VyY2Ugcm9vdCwgc28gdGhhdCB0aGUgZ2VuZXJhdGVkIGphdmEgdHlwZXMgYXJlIGNvbXBpbGVkIGFuZCBpbmNsdWRlZCBpbiB0aGUgcHJvamVjdCBhcnRpZmFjdCAoYHRydWVgIGJ5IGRlZmF1bHQpLiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgYWRkVGVzdENvbXBpbGVTb3VyY2VSb290YC4KfCBgYWRkVGVzdENvbXBpbGVTb3VyY2VSb290YCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmFkZFRlc3RDb21waWxlU291cmNlUm9vdGAgfCBBZGQgdGhlIG91dHB1dCBkaXJlY3RvcnkgdG8gdGhlIHByb2plY3QgYXMgYSB0ZXN0IHNvdXJjZSByb290LCBzbyB0aGF0IHRoZSBnZW5lcmF0ZWQgamF2YSB0eXBlcyBhcmUgY29tcGlsZWQgb25seSBmb3IgdGhlIHRlc3QgY2xhc3NwYXRoIG9mIHRoZSBwcm9qZWN0IChgZmFsc2VgIGJ5IGRlZmF1bHQpLiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgYWRkQ29tcGlsZVNvdXJjZVJvb3RgLgp8IGBlbnZpcm9ubWVudFZhcmlhYmxlc2AgfCBOL0EgfCBBICoqbWFwKiogb2YgaXRlbXMgY29uY2VwdHVhbGx5IHNpbWlsYXIgdG8gImVudmlyb25tZW50IHZhcmlhYmxlcyIgb3IgInN5c3RlbSBwcm9wZXJ0aWVzIi4gVGhlc2UgYXJlIG1lcmdlZCBpbnRvIGEgbWFwIG9mIGdsb2JhbCBzZXR0aW5ncyBhdmFpbGFibGUgdG8gYWxsIGFzcGVjdHMgb2YgdGhlIGdlbmVyYXRpb24gZmxvdy4gVXNlIHRoaXMgbWFwIGZvciBhbnkgb3B0aW9ucyBkb2N1bWVudGVkIGVsc2V3aGVyZSBhcyBgc3lzdGVtUHJvcGVydGllc2AuCnwgYGNvbmZpZ0hlbHBgIHwgIGBjb2RlZ2VuLmNvbmZpZ0hlbHBgIHwgZHVtcHMgdGhlIGNvbmZpZ3VyYXRpb24gaGVscCBmb3IgdGhlIHNwZWNpZmllZCBsaWJyYXJ5IChnZW5lcmF0ZXMgbm8gc291cmNlcykKCkZvciB0aGUgYHNwcmluZ2AgZ2VuZXJhdG9yLCB0aGUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlOgoKfCBPcHRpb24gfCBEZXNjcmlwdGlvbiB8CnwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8IGBzb3J0UGFyYW1zQnlSZXF1aXJlZEZsYWdgIHwgU29ydCBtZXRob2QgYXJndW1lbnRzIHRvIHBsYWNlIHJlcXVpcmVkIHBhcmFtZXRlcnMgYmVmb3JlIG9wdGlvbmFsIHBhcmFtZXRlcnMuIChEZWZhdWx0OiB0cnVlKSB8CnwgYHNvcnRNb2RlbFByb3BlcnRpZXNCeVJlcXVpcmVkRmxhZ2AgfCBTb3J0IG1vZGVsIHByb3BlcnRpZXMgdG8gcGxhY2UgcmVxdWlyZWQgcGFyYW1ldGVycyBiZWZvcmUgb3B0aW9uYWwgcGFyYW1ldGVycy4gKERlZmF1bHQ6IHRydWUpIHwKfCBgZW5zdXJlVW5pcXVlUGFyYW1zYCB8IFdoZXRoZXIgdG8gZW5zdXJlIHBhcmFtZXRlciBuYW1lcyBhcmUgdW5pcXVlIGluIGFuIG9wZXJhdGlvbiAocmVuYW1lIHBhcmFtZXRlcnMgdGhhdCBhcmUgbm90KS4gKERlZmF1bHQ6IHRydWUpIHwKfCBgYWxsb3dVbmljb2RlSWRlbnRpZmllcnNgIHwgYm9vbGVhbiwgdG9nZ2xlcyB3aGV0aGVyIHVuaWNvZGUgaWRlbnRpZmllcnMgYXJlIGFsbG93ZWQgaW4gbmFtZXMgb3Igbm90LCBkZWZhdWx0IGlzIGZhbHNlIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBwcmVwZW5kRm9ybU9yQm9keVBhcmFtZXRlcnNgIHwgQWRkIGZvcm0gb3IgYm9keSBwYXJhbWV0ZXJzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhcmFtZXRlciBsaXN0LiAoRGVmYXVsdDogZmFsc2UpIHwKfCBgbW9kZWxQYWNrYWdlYCB8IHBhY2thZ2UgZm9yIGdlbmVyYXRlZCBtb2RlbHMgKERlZmF1bHQ6IG9yZy5vcGVuYXBpdG9vbHMubW9kZWwpIHwKfCBgYXBpUGFja2FnZWAgfCBwYWNrYWdlIGZvciBnZW5lcmF0ZWQgYXBpIGNsYXNzZXMgKERlZmF1bHQ6IG9yZy5vcGVuYXBpdG9vbHMuYXBpKSB8CnwgYGludm9rZXJQYWNrYWdlYCB8IHJvb3QgcGFja2FnZSBmb3IgZ2VuZXJhdGVkIGNvZGUgKERlZmF1bHQ6IG9yZy5vcGVuYXBpdG9vbHMuYXBpKSB8CnwgYGdyb3VwSWRgIHwgZ3JvdXBJZCBpbiBnZW5lcmF0ZWQgcG9tLnhtbCAoRGVmYXVsdDogb3JnLm9wZW5hcGl0b29scykgfAp8IGBhcnRpZmFjdElkYCB8IGFydGlmYWN0SWQgaW4gZ2VuZXJhdGVkIHBvbS54bWwuIFRoaXMgYWxzbyBiZWNvbWVzIHBhcnQgb2YgdGhlIGdlbmVyYXRlZCBsaWJyYXJ5J3MgZmlsZW5hbWUgKERlZmF1bHQ6IG9wZW5hcGktc3ByaW5nKSB8CnwgYGFydGlmYWN0VmVyc2lvbmAgfCBhcnRpZmFjdCB2ZXJzaW9uIGluIGdlbmVyYXRlZCBwb20ueG1sLiBUaGlzIGFsc28gYmVjb21lcyBwYXJ0IG9mIHRoZSBnZW5lcmF0ZWQgbGlicmFyeSdzIGZpbGVuYW1lIChEZWZhdWx0OiAxLjAuMCkgfAp8IGBhcnRpZmFjdFVybGAgfCBhcnRpZmFjdCBVUkwgaW4gZ2VuZXJhdGVkIHBvbS54bWwgKERlZmF1bHQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpIHwKfCBgYXJ0aWZhY3REZXNjcmlwdGlvbmAgfCBhcnRpZmFjdCBkZXNjcmlwdGlvbiBpbiBnZW5lcmF0ZWQgcG9tLnhtbCAoRGVmYXVsdDogT3BlbkFQSSBKYXZhKSB8CnwgYHNjbUNvbm5lY3Rpb25gIHwgU0NNIGNvbm5lY3Rpb24gaW4gZ2VuZXJhdGVkIHBvbS54bWwgKERlZmF1bHQ6IHNjbTpnaXQ6Z2l0QGdpdGh1Yi5jb206b3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLmdpdCkgfAp8IGBzY21EZXZlbG9wZXJDb25uZWN0aW9uYCB8IFNDTSBkZXZlbG9wZXIgY29ubmVjdGlvbiBpbiBnZW5lcmF0ZWQgcG9tLnhtbCAoRGVmYXVsdDogc2NtOmdpdDpnaXRAZ2l0aHViLmNvbTpvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IuZ2l0KSB8CnwgYHNjbVVybGAgfCBTQ00gVVJMIGluIGdlbmVyYXRlZCBwb20ueG1sIChEZWZhdWx0OiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKSB8CnwgYGRldmVsb3Blck5hbWVgIHwgZGV2ZWxvcGVyIG5hbWUgaW4gZ2VuZXJhdGVkIHBvbS54bWwgKERlZmF1bHQ6IE9wZW5BUEktR2VuZXJhdG9yIENvbnRyaWJ1dG9ycykgfAp8IGBkZXZlbG9wZXJFbWFpbGAgfCBkZXZlbG9wZXIgZW1haWwgaW4gZ2VuZXJhdGVkIHBvbS54bWwgKERlZmF1bHQ6IHRlYW1Ab3BlbmFwaXRvb2xzLm9yZykgfAp8IGBkZXZlbG9wZXJPcmdhbml6YXRpb25gIHwgZGV2ZWxvcGVyIG9yZ2FuaXphdGlvbiBpbiBnZW5lcmF0ZWQgcG9tLnhtbCAoRGVmYXVsdDogT3BlbkFQSVRvb2xzLm9yZykgfAp8IGBkZXZlbG9wZXJPcmdhbml6YXRpb25VcmxgIHwgZGV2ZWxvcGVyIG9yZ2FuaXphdGlvbiBVUkwgaW4gZ2VuZXJhdGVkIHBvbS54bWwgKERlZmF1bHQ6IGh0dHA6Ly9vcGVuYXBpdG9vbHMub3JnKSB8CnwgYGxpY2Vuc2VOYW1lYCB8IFRoZSBuYW1lIG9mIHRoZSBsaWNlbnNlIChEZWZhdWx0OiBVbmxpY2Vuc2UpIHwKfCBgbGljZW5zZVVybGAgfCBUaGUgVVJMIG9mIHRoZSBsaWNlbnNlIChEZWZhdWx0OiBodHRwOi8vdW5saWNlbnNlLm9yZykgfAp8IGBzb3VyY2VGb2xkZXJgIHwgc291cmNlIGZvbGRlciBmb3IgZ2VuZXJhdGVkIGNvZGUgKERlZmF1bHQ6IHNyYy9tYWluL2phdmEpIHwKfCBgc2VyaWFsaXphYmxlTW9kZWxgIHwgYm9vbGVhbiAtIHRvZ2dsZSAiaW1wbGVtZW50cyBTZXJpYWxpemFibGUiIGZvciBnZW5lcmF0ZWQgbW9kZWxzIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBiaWdEZWNpbWFsQXNTdHJpbmdgIHwgVHJlYXQgQmlnRGVjaW1hbCB2YWx1ZXMgYXMgU3RyaW5ncyB0byBhdm9pZCBwcmVjaXNpb24gbG9zcy4gKERlZmF1bHQ6IGZhbHNlKSB8CnwgYGZ1bGxKYXZhVXRpbGAgfCB3aGV0aGVyIHRvIHVzZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBmb3IgY2xhc3NlcyB1bmRlciBqYXZhLnV0aWwuIFRoaXMgb3B0aW9uIG9ubHkgd29ya3MgZm9yIEphdmEgQVBJIGNsaWVudCAoRGVmYXVsdDogZmFsc2UpIHwKfCBgaGlkZUdlbmVyYXRpb25UaW1lc3RhbXBgIHwgSGlkZXMgdGhlIGdlbmVyYXRpb24gdGltZXN0YW1wIHdoZW4gZmlsZXMgYXJlIGdlbmVyYXRlZC4gKERlZmF1bHQ6IGZhbHNlKSB8CnwgYHdpdGhYbWxgIHwgd2hldGhlciB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIGFwcGxpY2F0aW9uL3htbCBjb250ZW50IHR5cGUgYW5kIGluY2x1ZGUgWE1MIGFubm90YXRpb25zIGluIHRoZSBtb2RlbCAod29ya3Mgd2l0aCBsaWJyYXJpZXMgdGhhdCBwcm92aWRlIHN1cHBvcnQgZm9yIEpTT04gYW5kIFhNTCkgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYGRhdGVMaWJyYXJ5YCB8IE9wdGlvbi4gRGF0ZSBsaWJyYXJ5IHRvIHVzZSAoRGVmYXVsdDogdGhyZWV0ZW5icCk8YnI+am9kYSAtIEpvZGEgKGZvciBsZWdhY3kgYXBwIG9ubHkpPGJyPmxlZ2FjeSAtIExlZ2FjeSBqYXZhLnV0aWwuRGF0ZSAoaWYgeW91IHJlYWxseSBoYXZlIGEgZ29vZCByZWFzb24gbm90IHRvIHVzZSB0aHJlZXRlbmJwPGJyPmphdmE4LWxvY2FsZGF0ZXRpbWUgLSBKYXZhIDggdXNpbmcgTG9jYWxEYXRlVGltZSAoZm9yIGxlZ2FjeSBhcHAgb25seSk8YnI+amF2YTggLSBKYXZhIDggbmF0aXZlIEpTUjMxMCAocHJlZmVycmVkIGZvciBqZGsgMS44KykgLSBub3RlOiB0aGlzIGFsc28gc2V0cyAiamF2YTgiIHRvIHRydWU8YnI+dGhyZWV0ZW5icCAtIEJhY2twb3J0IG9mIEpTUjMxMCAocHJlZmVycmVkIGZvciBqZGsgPCAxLjgpIHwKfCBgamF2YThgIHwgT3B0aW9uLiBVc2UgSmF2YTggY2xhc3NlcyBpbnN0ZWFkIG9mIHRoaXJkIHBhcnR5IGVxdWl2YWxlbnRzIChEZWZhdWx0OiBmYWxzZSk8YnI+dHJ1ZSAtIFVzZSBKYXZhIDggY2xhc3NlcyBzdWNoIGFzIEJhc2U2NC4gVXNlIGphdmE4IGRlZmF1bHQgaW50ZXJmYWNlIHdoZW4gYSByZXNwb25zZVdyYXBwZXIgaXMgdXNlZDxicj5mYWxzZSAtIFZhcmlvdXMgdGhpcmQgcGFydHkgbGlicmFyaWVzIGFzIG5lZWRlZCB8CnwgYGRpc2FibGVIdG1sRXNjYXBpbmdgIHwgRGlzYWJsZSBIVE1MIGVzY2FwaW5nIG9mIEpTT04gc3RyaW5ncyB3aGVuIHVzaW5nIGdzb24gKG5lZWRlZCB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIGJ5dGVbXSBmaWVsZHMpIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBib29sZWFuR2V0dGVyUHJlZml4YCB8IFNldCBib29sZWFuR2V0dGVyUHJlZml4IChEZWZhdWx0OiBnZXQpIHwKfCBgYWRkaXRpb25hbE1vZGVsVHlwZUFubm90YXRpb25zYCB8IEFkZGl0aW9uYWwgYW5ub3RhdGlvbnMgZm9yIG1vZGVsIHR5cGUoY2xhc3MgbGV2ZWwgYW5ub3RhdGlvbnMpIHwKfCBgcGFyZW50R3JvdXBJZGAgfCBwYXJlbnQgZ3JvdXBJZCBpbiBnZW5lcmF0ZWQgcG9tIE4uQi4gcGFyZW50R3JvdXBJZCwgcGFyZW50QXJ0aWZhY3RJZCBhbmQgcGFyZW50VmVyc2lvbiBtdXN0IGFsbCBiZSBzcGVjaWZpZWQgZm9yIGFueSBvZiB0aGVtIHRvIHRha2UgZWZmZWN0IHwKfCBgcGFyZW50QXJ0aWZhY3RJZGAgfCBwYXJlbnQgYXJ0aWZhY3RJZCBpbiBnZW5lcmF0ZWQgcG9tIE4uQi4gcGFyZW50R3JvdXBJZCwgcGFyZW50QXJ0aWZhY3RJZCBhbmQgcGFyZW50VmVyc2lvbiBtdXN0IGFsbCBiZSBzcGVjaWZpZWQgZm9yIGFueSBvZiB0aGVtIHRvIHRha2UgZWZmZWN0IHwKfCBgcGFyZW50VmVyc2lvbmAgfCBwYXJlbnQgdmVyc2lvbiBpbiBnZW5lcmF0ZWQgcG9tIE4uQi4gcGFyZW50R3JvdXBJZCwgcGFyZW50QXJ0aWZhY3RJZCBhbmQgcGFyZW50VmVyc2lvbiBtdXN0IGFsbCBiZSBzcGVjaWZpZWQgZm9yIGFueSBvZiB0aGVtIHRvIHRha2UgZWZmZWN0IHwKfCBgc25hcHNob3RWZXJzaW9uYCB8IFVzZXMgYSBTTkFQU0hPVCB2ZXJzaW9uLiB0cnVlIC0gVXNlIGEgU25hcFNob3QgVmVyc2lvbmZhbHNlIC0gVXNlIGEgUmVsZWFzZSBWZXJzaW9uIHwKfCBgdGl0bGVgIHwgc2VydmVyIHRpdGxlIG5hbWUgb3IgY2xpZW50IHNlcnZpY2UgbmFtZSAoRGVmYXVsdDogT3BlbkFQSSBTcHJpbmcpIHwKfCBgY29uZmlnUGFja2FnZWAgfCBjb25maWd1cmF0aW9uIHBhY2thZ2UgZm9yIGdlbmVyYXRlZCBjb2RlIChEZWZhdWx0OiBvcmcub3BlbmFwaXRvb2xzLmNvbmZpZ3VyYXRpb24pIHwKfCBgYmFzZVBhY2thZ2VgIHwgYmFzZSBwYWNrYWdlIChpbnZva2VyUGFja2FnZSkgZm9yIGdlbmVyYXRlZCBjb2RlIChEZWZhdWx0OiBvcmcub3BlbmFwaXRvb2xzKSB8CnwgYGludGVyZmFjZU9ubHlgIHwgV2hldGhlciB0byBnZW5lcmF0ZSBvbmx5IEFQSSBpbnRlcmZhY2Ugc3R1YnMgd2l0aG91dCB0aGUgc2VydmVyIGZpbGVzLiAoRGVmYXVsdDogZmFsc2UpIHwKfCBgZGVsZWdhdGVQYXR0ZXJuYCB8IFdoZXRoZXIgdG8gZ2VuZXJhdGUgdGhlIHNlcnZlciBmaWxlcyB1c2luZyB0aGUgZGVsZWdhdGUgcGF0dGVybiAoRGVmYXVsdDogZmFsc2UpIHwKfCBgc2luZ2xlQ29udGVudFR5cGVzYCB8IFdoZXRoZXIgdG8gc2VsZWN0IG9ubHkgb25lIHByb2R1Y2VzL2NvbnN1bWVzIGNvbnRlbnQtdHlwZSBieSBvcGVyYXRpb24uIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBza2lwRGVmYXVsdEludGVyZmFjZWAgfCBXaGV0aGVyIHRvIGdlbmVyYXRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciBqYXZhOCBpbnRlcmZhY2VzIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBhc3luY2AgfCB1c2UgYXN5bmMgQ2FsbGFibGUgY29udHJvbGxlcnMgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYHJlYWN0aXZlYCB8IHdyYXAgcmVzcG9uc2VzIGluIE1vbm8vRmx1eCBSZWFjdG9yIHR5cGVzIChzcHJpbmctYm9vdCBvbmx5KSAoRGVmYXVsdDogZmFsc2UpIHwKfCBgcmVzcG9uc2VXcmFwcGVyYCB8IHdyYXAgdGhlIHJlc3BvbnNlcyBpbiBnaXZlbiB0eXBlIChGdXR1cmUsIENhbGxhYmxlLCBDb21wbGV0YWJsZUZ1dHVyZSxMaXN0ZW5hYmxlRnV0dXJlLCBEZWZlcnJlZFJlc3VsdCwgSHlzdHJpeENvbW1hbmQsIFJ4T2JzZXJ2YWJsZSwgUnhTaW5nbGUgb3IgZnVsbHkgcXVhbGlmaWVkIHR5cGUpIHwKfCBgdmlydHVhbFNlcnZpY2VgIHwgR2VuZXJhdGVzIHRoZSB2aXJ0dWFsIHNlcnZpY2UuIEZvciBtb3JlIGRldGFpbHMgcmVmZXIgLSBodHRwczovL2dpdGh1Yi5jb20vZWxhbi12ZW50dXJlL3ZpcnR1YWxhbi93aWtpIChEZWZhdWx0OiBmYWxzZSkgfAp8IGB1c2VUYWdzYCB8IHVzZSB0YWdzIGZvciBjcmVhdGluZyBpbnRlcmZhY2UgYW5kIGNvbnRyb2xsZXIgY2xhc3NuYW1lcyAoRGVmYXVsdDogZmFsc2UpIHwKfCBgdXNlQmVhblZhbGlkYXRpb25gIHwgVXNlIEJlYW5WYWxpZGF0aW9uIEFQSSBhbm5vdGF0aW9ucyAoRGVmYXVsdDogdHJ1ZSkgfAp8IGBwZXJmb3JtQmVhblZhbGlkYXRpb25gIHwgVXNlIEJlYW4gVmFsaWRhdGlvbiBJbXBsLiB0byBwZXJmb3JtIEJlYW5WYWxpZGF0aW9uIChEZWZhdWx0OiBmYWxzZSkgfAp8IGB1c2VDbGFzc0xldmVsQmVhblZhbGlkYXRpb25gIHwgQWRkcyBAVmFsaWRhdGVkIGFubm90YXRpb24gdG8gQVBJIGludGVyZmFjZXMgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYHVzZUxvbWJva0Fubm90YXRpb25zYCB8IFVzZSBMb21ib2sgYW5ub3RhdGlvbnMgdG8gZ2VuZXJhdGUgcHJvcGVydGllcyBhY2Nlc3NvcnMgYW5kIGBoYXNoQ29kZWAvYGVxdWFsc2AgbWV0aG9kcyAoRGVmYXVsdDogZmFsc2UpIHwKfCBgYWRkU2VydmxldFJlcXVlc3RgIHwgQWRkcyBTZXJ2bGV0UmVxdWVzdCBvYmplY3RzIHRvIEFQSSBtZXRob2QgZGVmaW5pdGlvbnMgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYGFkZEJpbmRpbmdSZXN1bHRgIHwgQWRkcyBCaW5kaW5nUmVzdWx0IHRvIEFwaSBtZXRob2QgZGVmaW5pdGlvbnMnIHJlcXVlc3QgYm9kaWVzIGlmIFVzZUJlYW5WYWxpZGF0aW9uIHRydWUsIGZvciB0aGlzIHRvIGJlIGVmZmVjdGl2ZSB5b3UgbXVzdCBjb25maWd1cmUgVXNlQmVhblZhbGlkYXRpb24sIHRoaXMgaXMgbm90IGRvbmUgYXV0b21hdGljYWxseSAoRGVmYXVsdDogZmFsc2UpfAp8IGBpbXBsaWNpdEhlYWRlcnNgIHwgU2tpcCBoZWFkZXIgcGFyYW1ldGVycyBpbiB0aGUgZ2VuZXJhdGVkIEFQSSBtZXRob2RzIHVzaW5nIEBBcGlJbXBsaWNpdFBhcmFtcyBhbm5vdGF0aW9uLiAoRGVmYXVsdDogZmFsc2UpIHwKfCBgc3dhZ2dlckRvY2tldENvbmZpZ2AgfCBHZW5lcmF0ZSBTcHJpbmcgT3BlbkFQSSBEb2NrZXQgY29uZmlndXJhdGlvbiBjbGFzcy4gKERlZmF1bHQ6IGZhbHNlKSB8CnwgYGFwaUZpcnN0YCB8IEdlbmVyYXRlIHRoZSBBUEkgZnJvbSB0aGUgT0FJIHNwZWMgYXQgc2VydmVyIGNvbXBpbGUgdGltZSAoQVBJIGZpcnN0IGFwcHJvYWNoKSAoRGVmYXVsdDogZmFsc2UpIHwKfCBgdXNlT3B0aW9uYWxgIHwgVXNlIE9wdGlvbmFsIGNvbnRhaW5lciBmb3Igb3B0aW9uYWwgcGFyYW1ldGVycyAoRGVmYXVsdDogZmFsc2UpIHwKfCBgaGF0ZW9hc2AgfCBVc2UgU3ByaW5nIEhBVEVPQVMgbGlicmFyeSB0byBhbGxvdyBhZGRpbmcgSEFURU9BUyBsaW5rcyAoRGVmYXVsdDogZmFsc2UpIHwKfCBgcmV0dXJuU3VjY2Vzc0NvZGVgIHwgR2VuZXJhdGVkIHNlcnZlciByZXR1cm5zIDJ4eCBjb2RlIChEZWZhdWx0OiBmYWxzZSkgfAp8IGB1bmhhbmRsZWRFeGNlcHRpb25gIHwgRGVjbGFyZSBvcGVyYXRpb24gbWV0aG9kcyB0byB0aHJvdyBhIGdlbmVyaWMgZXhjZXB0aW9uIGFuZCBhbGxvdyB1bmhhbmRsZWQgZXhjZXB0aW9ucyAodXNlZnVsIGZvciBTcHJpbmcgYEBDb250cm9sbGVyQWR2aWNlYCBkaXJlY3RpdmVzKS4gKERlZmF1bHQ6IGZhbHNlKSB8CnwgYGxpYnJhcnlgIHwgbGlicmFyeSB0ZW1wbGF0ZSAoc3ViLXRlbXBsYXRlKSAoRGVmYXVsdDogc3ByaW5nLWJvb3QpPGJyPnNwcmluZy1ib290IC0gU3ByaW5nLWJvb3QgU2VydmVyIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBTcHJpbmdGb3ggaW50ZWdyYXRpb24uPGJyPnNwcmluZy1tdmMgLSBTcHJpbmctTVZDIFNlcnZlciBhcHBsaWNhdGlvbiB1c2luZyB0aGUgU3ByaW5nRm94IGludGVncmF0aW9uLjxicj5zcHJpbmctY2xvdWQgLSBTcHJpbmctQ2xvdWQtRmVpZ24gY2xpZW50IHdpdGggU3ByaW5nLUJvb3QgYXV0by1jb25maWd1cmVkIHNldHRpbmdzLnwK readmeEtag: '"0cd3191a9e367f7d07060950c04a4da24c14da6f"' readmeLastModified: Thu, 18 Dec 2025 15:09:26 GMT repositoryId: 241074287 description: Backbase Open Api Tools (boat) helps manage large OpenAPI projects created: '2020-02-17T10:00:41Z' updated: '2026-01-21T17:47:30Z' language: Mustache archived: false stars: 47 watchers: 11 forks: 30 owner: Backbase logo: https://avatars.githubusercontent.com/u/1914334?v=4 license: NOASSERTION repoEtag: '"ecde275b45b330be67a3605d97e55244f62ffaee76e621a43bca7861686a845f"' repoLastModified: Wed, 21 Jan 2026 17:47:30 GMT foundInMaster: true category: SDK id: fd5b893e6ddf5af8821536a61ecb1d4e - source: openapi3 tags repository: https://github.com/kstasik/schema-tools v3: true repositoryMetadata: base64Readme: >- IyBTY2hlbWEgVG9vbHMKClshW2J1aWxkXShodHRwczovL2dpdGh1Yi5jb20va3N0YXNpay9zY2hlbWEtdG9vbHMvd29ya2Zsb3dzL2J1aWxkL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9rc3Rhc2lrL3NjaGVtYS10b29scy9hY3Rpb25zKQpbIVt0ZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL2tzdGFzaWsvc2NoZW1hLXRvb2xzL3dvcmtmbG93cy90ZXN0L2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9rc3Rhc2lrL3NjaGVtYS10b29scy9hY3Rpb25zKQpbIVtjcmF0ZXMtY2xpXShodHRwczovL2ltZy5zaGllbGRzLmlvL2NyYXRlcy92L3NjaGVtYXRvb2xzLWNsaSldKGh0dHBzOi8vY3JhdGVzLmlvL2NyYXRlcy9zY2hlbWF0b29scy1jbGkpClshW2NyYXRlcy1saWJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY3JhdGVzL3Yvc2NoZW1hdG9vbHMpXShodHRwczovL2NyYXRlcy5pby9jcmF0ZXMvc2NoZW1hdG9vbHMpCgojIEludHJvZHVjdGlvbgoKSnVzdCBhbm90aGVyIGFwcHJvYWNoIHRvIG9wZW5hcGkvanNvbnNjaGVtYSBjb2RlIGdlbmVyYXRvci4gSXQncyBhIGhvbWUgcHJvamVjdCB3cml0dGVuIGluIGBSdXN0YCwgc2ltcGxlIGFsbC1pbi1vbmUgY29uc29sZSB0b29sIHdpdGggZmVhdHVyZXMgbGlrZToKCi0gb3BlbmFwaS9qc29uIHNjaGVtYSB2YWxpZGF0aW9uCi0gc2NoZW1hIHByZXByb2Nlc3NpbmcKICAgIC0gZGVyZWZlcmVuY2UKICAgIC0gbWVyZ2UtYWxsb2YKICAgIC0gcGF0Y2ggKGFwcGx5L2dlbmVyYXRlIGpzb24tcGF0Y2gpCiAgICAtIG5hbWUKICAgIC0gbWVyZ2Utb3BlbmFwaQotIFtUZXJhXShodHRwczovL2dpdGh1Yi5jb20vS2VhdHMvdGVyYSkgKGppbmphMikgKipjb2RlIGdlbmVyYXRvcioqIHdpdGggY3VzdG9tIHRlbXBsYXRlcyBzdXBwb3J0CgpJdCBpcyBkZXNpZ25lZCB0byBzcGVlZCB1cCBkZXZlbG9wbWVudCBvZiBtaWNyb3NlcnZpY2VzIGhlYXZseSB1c2luZyBqc29uIG9iamVjdHMgKGpzb24gc2NoZW1hcyBvbiBhcGkgbGV2ZWwgYXMgd2VsbCBldmVudHMpLgoKTWFpbiBkaWZmZXJlbmNlcyBpbiBhcHByb2FjaCBiZXR3ZWVuIG90aGVyIHNvbHV0aW9ucyBsaWtlIGBvcGVuYXBpLWdlbmVyYXRvcmA6CgotIG1vcmUgcm9idXN0IHRlbXBsYXRlIGxhbmd1YWdlIGxpa2UgamluamEyCi0gbGFuZ3VhZ2Ugc3BlY2lmaWMgbG9naWMgbW92ZWQgdG8gdGVtcGxhdGVzIGluY2x1ZGluZyB0eXBlIG1hcHBpbmcsIHJlc2VydmVkIHdvcmRzCi0gd3JhcHBpbmcgb2YgbWl4ZWQgdHlwZXMgd2l0aG91dCBkaXNjcmltaW5hdG9yCi0gb25lIHRvb2wgZm9yIGNsaWVudHMsIHNlcnZlcnMsIGpzb24tc2NoZW1hIHF1ZXVlIGNvbnN1bWVycyBhbmQgcHJvY2Vzc2luZyBvZiBvcGVuYXBpCi0gcmVsYXRpdmVseSBzbWFsbCBiaW5hcnkgdXNlZCBvbiBldmVyeSBidWlsZCBvZiBwcm9qZWN0Ci0gY29kZWdlbiBleGVjdXRlZCBwZXIgbWljcm9zZXJ2aWNlIGFwcHJvYWNoIChub3QgYXMgYSBzZXBhcmF0ZSwgZ2VuZXJpYyBjbGllbnQgbGlicmFyeSkKLSBqc29uLXNjaGVtYSByZWdpc3RyeSBzdXBwb3J0LCBUT0RPOiBzaGFyZWQgbW9kZWxzIC0gY3JlYXRlIG9uZSBtb2RlbCBmb3Igc2hhcmVkIHN0cnVjdHVyZXMgaW4gZGlmZmVyZW50IGNsaWVudHMvc2VydmVycyB0byBhdm9pZCBtYXBwaW5nIHNhbWUgc3RydWN0dXJlcwoKIyBFeGFtcGxlcwoKSW5zdGFsbCBgQ0xJYCB0b29sOgoKYGBgCmNhcmdvIGluc3RhbGwgc2NoZW1hdG9vbHMtY2xpQDAuMjEuMApgYGAKCiMjIGpzb24tc2NoZW1hIHN0cnVjdCBjb2RlZ2VuCgpgYGAKc2NoZW1hdG9vbHMtY2xpIGNoYWluIC12dnYgLWMgJ3JlZ2lzdHJ5IGFkZCB0ZW1wbGF0ZXMgaHR0cHM6Ly9naXRodWIuY29tL2tzdGFzaWsvc2NoZW1hLXRvb2xzLXRlbXBsYXRlcyAtLXJldiA0MTFmNTIwNzAwMTYzN2MxOTM4MDA0NmEyMTk5MWI5ZGRiYTJiZmU5JyBcCiAgIC1jICdwcm9jZXNzIGRlcmVmZXJlbmNlIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9rc3Rhc2lrL3NjaGVtYS10b29scy9yZWZzL2hlYWRzL21hc3Rlci9jcmF0ZXMvc2NoZW1hdG9vbHMvcmVzb3VyY2VzL3Rlc3QvanNvbi1zY2hlbWFzLzAxLXNpbXBsZS5qc29uIC0tc2tpcC1yb290LWludGVybmFsLXJlZmVyZW5jZXMgLS1jcmVhdGUtaW50ZXJuYWwtcmVmZXJlbmNlcycgXAogICAtYyAncHJvY2VzcyBtZXJnZS1hbGwtb2YgLSAtLWxlYXZlLWludmFsaWQtcHJvcGVydGllcycgXAogICAtYyAnY29kZWdlbiBqc29uLXNjaGVtYSAtIC0tYmFzZS1uYW1lIFBlcnNvbiAtLXRlbXBsYXRlIHRlbXBsYXRlczo6cnVzdC9fY29tbW9uLyAtLXRlbXBsYXRlIHRlbXBsYXRlczo6cnVzdC9tb2RlbC8gLS1mb3JtYXQgInJ1c3RmbXQgLS1lZGl0aW9uIDIwMjEiIC0tdGFyZ2V0LWRpciBzY2hlbWFzLyAtbyBuYW1lc3BhY2U9cGVvcGxlIC1vIHNraXBWYWxpZGF0ZT1+dHJ1ZScKYGBgCgojIyBvcGVuYXBpIGNsaWVudCBjb2RlZ2VuCgpgYGAKc2NoZW1hdG9vbHMtY2xpIFwKICAgY2hhaW4gLXZ2diAtYyAncmVnaXN0cnkgYWRkIHRlbXBsYXRlcyBodHRwczovL2dpdGh1Yi5jb20va3N0YXNpay9zY2hlbWEtdG9vbHMtdGVtcGxhdGVzIC0tcmV2IDQxMWY1MjA3MDAxNjM3YzE5MzgwMDQ2YTIxOTkxYjlkZGJhMmJmZTknIFwKICAgLWMgJ3Byb2Nlc3MgZGVyZWZlcmVuY2UgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2tzdGFzaWsvc2NoZW1hLXRvb2xzL3JlZnMvaGVhZHMvbWFzdGVyL2NyYXRlcy9zY2hlbWF0b29scy9yZXNvdXJjZXMvdGVzdC9vcGVuYXBpLzAxLXNpbXBsZS55YW1sIC0tc2tpcC1yb290LWludGVybmFsLXJlZmVyZW5jZXMgLS1jcmVhdGUtaW50ZXJuYWwtcmVmZXJlbmNlcycgXAogICAtYyAncHJvY2VzcyBtZXJnZS1hbGwtb2YgLSAtLWxlYXZlLWludmFsaWQtcHJvcGVydGllcycgXAogICAtYyAnY29kZWdlbiBvcGVuYXBpIC0gLS10ZW1wbGF0ZSB0ZW1wbGF0ZXM6OnJ1c3QvX2NvbW1vbi8gLS10ZW1wbGF0ZSB0ZW1wbGF0ZXM6OnJ1c3QvY2xpZW50LyAtLWZvcm1hdCAicnVzdGZtdCAtLWVkaXRpb24gMjAyMSIgLS10YXJnZXQtZGlyIHNyYy9jbGllbnRzLyAtbyBhcG09dHJhY2luZyAtbyBuYW1lPXNpbXBsZSAtbyBuYW1lc3BhY2U9c2ltcGxlIC1vIHNraXBWYWxpZGF0ZT1+dHJ1ZScKYGBgCgojIyBkZWJ1Z2dpbmcganNvbiBwcm9jZXNzaW5nIHN0YWdlcwoKWW91IGNhbiB1c2UgdGhlIGBvdXRwdXRgIGNvbW1hbmQgbXVsdGlwbGUgdGltZXMgdG8gaW5zcGVjdCBob3cgdGhlIEpTT04vWUFNTCBmaWxlIGFwcGVhcnMgYXQgZGlmZmVyZW50IHN0YWdlcyBvZiB0aGUgcHJvY2Vzcy4KCmBgYAogICAtYyAnb3V0cHV0IC0tdG8tZmlsZSBmb3JtYXR0ZWQuanNvbiAtbyBqc29uIicgXApgYGAKCiMjIHVzaW5nIGxvY2FsIHRlbXBsYXRlcyAvIG92ZXJ3cml0aW5nIG9yaWdpbmFsIHRlbXBsYXRlcwoKQ3JlYXRlIGEgYGxvY2FsLXRlbXBsYXRlc2AgZGlyZWN0b3J5IGFuZCBsaW5rIGl0IGFzIHRoZSBsYXN0IHVzZWQgZGlyZWN0b3J5LiBNYWludGFpbiB0aGUgb3JpZ2luYWwgcmVnaXN0cnkgbmFtaW5nIGlmIHlvdSB3aXNoIHRvIG92ZXJ3cml0ZSB0aGUgdGVtcGxhdGVzLgoKYGBgCiAgIC0tdGVtcGxhdGUgdGVtcGxhdGVzOjpydXN0L19jb21tb24vIC0tdGVtcGxhdGUgdGVtcGxhdGVzOjpydXN0L2NsaWVudC8gLS10ZW1wbGF0ZSBsb2NhbC10ZW1wbGF0ZXMvCmBgYAoKIyBHZW5lcmFsIHJ1bGVzCgotIEFsbCBjb21tYW5kcyBzdXBwb3J0IHlhbWwgYW5kIGpzb24gZmlsZXMuCi0gVXNlIGhlbHAgdG8gZ2V0IGxpc3Qgb2YgYXZhaWxhYmxlIGFyZ3VtZW50cyBgc2NoZW1hLXRvb2xzIHByb2Nlc3MgLS1oZWxwYAotIGAtdmAsIGAtdnZgLCBgLXZ2dmAsIGAtdnZ2dmAgdmVyYm9zaXR5IGxldmVscwoKIyBWYWxpZGF0ZQoKVG8gdmFsaWRhdGUgb3BlbmFwaSBzcGVjaWZpY2F0aW9uOgoKYGBgCnNjaGVtYXRvb2xzIHZhbGlkYXRlIG9wZW5hcGkgb3BlbmFwaS55YW1sCmBgYAoKVG8gdmFsaWRhdGUganNvbiBzY2hlbWEgZGVmaW5pdGlvbjoKCmBgYApzY2hlbWF0b29scyB2YWxpZGF0ZSBvcGVuYXBpIHNjaGVtYS55YW1sCmBgYAoKQm90aCBjb21tYW5kcyByZXR1cm4gbm9uLXplcm8gZXhpdCBjb2RlIGluIGNhc2Ugb2YgZmFpbHVyZS4gRXJyb3IgcmVwb3J0aW5nIGlzIG5vdCB2ZXJ5IGNsZWFyIGJ1dCBpdCBzaG93cyB0aGUgcGxhY2Ugd2hlcmUganNvbiBzY2hlbWEgaXMgbm90IG1ldC4gVE9ETzogcmVzb2x2ZSB0aGlzIFtpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL1N0cmFuZ2VyNjY2Ny9qc29uc2NoZW1hLXJzL2lzc3Vlcz9xPWlzJTNBaXNzdWUraXMlM0FvcGVuK2Vycm9yKQoKIyMgUHJvY2VzcwoKQ29tbW9uIENMSSBhcmd1bWVudHM6CgpgYGAKPGZpbGU+ICAgICAgICAgICAgICAgICAgICAgIFBhdGggdG8ganNvbi95YW1sIGZpbGUgd2l0aCBvcGVuYXBpIHNwZWNpZmljYXRpb24KLW8sIC0tb3V0cHV0IDxvdXRwdXQ+ICAgICAgIFJldHVybmVkIGZvcm1hdCBbZGVmYXVsdDoganNvbl0gW3Bvc3NpYmxlIHZhbHVlczoganNvbiwgIHlhbWxdCi0tdG8tZmlsZSA8dG8tZmlsZT4gICAgICAgICBQYXRoIG9mIG91dHB1dCBmaWxlLCBkZWZhdWx0IG91dHB1dCB0byBzdGRvdXQKYGBgCgojIyMgTmFtaW5nCgpJZiB5b3VyIG9wZW5hcGkgc3BlY2lmaWNhdGlvbiBmb2xsb3dzIGBSRVNURlVMYCBvcGVuYXBpIHJ1bGVzIHlvdSBjYW4gY3JlYXRlIG1pc3NpbmcganNvbi1zY2hlbWEgdGl0bGVzIG9yIHRyeSB0byByZW5hbWUgb3BlcmF0aW9uSWQgb2YgZXhpc3RpbmcgZW5kcG9pbnQ6CgpgYGAKc2NoZW1hdG9vbHMgcHJvY2VzcyBuYW1lIHNjaGVtYS55YW1sCmBgYAoKQWRkaXRpb25hbCBvcHRpb25zIGFyZToKYGBgCi0tb3ZlcndyaXRlICAgICAgICAgICAgICAgICAgU2hvdWxkIG92ZXJ3cml0ZSBleGlzdGluZyB0aXRsZXMKLS1vdmVyd3JpdGUtYW1iaWd1b3VzICAgICAgICAgU2hvdWxkIG92ZXJ3cml0ZSBhbWJpZ3VvdXMgdGl0bGVzCi0tcmVzb3VyY2UtbWV0aG9kLXZlcnNpb24gICAgUmV2ZXJ0cyBvcmRlciBvZiBvcGVyYXRpb25JZCBnZW5lcmF0b3IgdG8gcmVzb3VyY2UrbWV0aG9kK3ZlcnNpb24KYGBgCgojIyMgRGVyZWZlcmVuY2luZwoKVG8gcmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgYCRyZWZgIGluIG9wZW5hcGkgeW91IG1heSB0eXBlOgoKYGBgCnNjaGVtYXRvb2xzIHByb2Nlc3MgZGVyZWZlcmVuY2Ugc2NoZW1hLnlhbWwKYGBgCgpZb3Ugc2hvdWxkIGhhcmRseSBldmVyIHBlcmZvcm0gZnVsbCBkZXJlZmVyZW5jZSBvZiBvcGVuYXBpLiBJdCBwYXJ0aWFsbHkgZGVyZWZlcmVuY2Ugc2NoZW1hIHlvdSBtYXkgdXNlIGZvbGxvd2luZyBvcHRpb25zOgoKLSAqKnNraXAtcmVmZXJlbmNlcyoqIC0gaXMgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgcmVnaXN0cnkgb2YgY29tbW9uIHNjaGVtYXMuIEluIG1hbnkgY2FzZXMgeW91IGRvbid0IHdhbnQgdG8gZGVyZWZlcmVuY2Ugc3VjaCBgJHJlZmBzCi0gKipza2lwLXJvb3QtaW50ZXJuYWwtcmVmZXJlbmNlcyoqIC0gaXMgdXNlZnVsIHRvIHNraXAgYC9jb21wb25lbnRzLipgIG9wZW5hcGkgc2NoZW1hIHJlZmVyZW5jZXMgd2hpY2ggYXJlIHZlcnkgb2Z0ZW4gc3RvcmVkIGluIHJvb3Qgb3BlbmFwaSBmaWxlLgotICoqY3JlYXRlLWludGVybmFsLXJlZmVyZW5jZXMqKiAtIHNhdmVzIHNwYWNlIGFuZCBkZXJlZmVyZW5jZXMgZWFjaCBwb2ludGVyIG9ubHkgb25jZSwgYWxsIG5leHQgb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkIGJ5IHBvaW50ZXIgdG8gZmlyc3QgcG9pbnRlcgoKYGBgCiAtLWNyZWF0ZS1pbnRlcm5hbC1yZWZlcmVuY2VzICAgICAgICAgICAgIENyZWF0ZXMgaW50ZXJuYWwgcmVmZXJlbmNlcyBpZiByZWZzIHdoZXJlIHBvaW50aW5nIHRvIHNhbWUgcGxhY2UKLS1za2lwLXJvb3QtaW50ZXJuYWwtcmVmZXJlbmNlcyAgICAgICAgICAgTGVhdmVzIGludGVybmFsIHJlZmVyZW5jZXMgaW50YWN0IGluIHJvb3Qgc2NoZW1hIGZpbGUKLS1za2lwLXJlZmVyZW5jZXMgPHNraXAtcmVmZXJlbmNlcz4uLi4gICAgTGlzdCBvZiBob3N0bmFtZXMgdG8gc2tpcCBkZXJlZmVyZW5jZQpgYGAKCiMjIyBNZXJnZSBhbGwgb2YKClRvIG1lcmdlIGBhbGxPZmBzIGludG8gb2JqZWN0cyB0eXBlOgoKYGBgCnNjaGVtYXRvb2xzIHByb2Nlc3MgbWVyZ2UtYWxsLW9mIG9wZW5hcGkueWFtbApgYGAKCkl0J3MgdXNlZnVsIHRvIHBlcmZvcm0gc3VjaCB0aGluZyBiZWZvcmUgY29kZSBnZW5lcmF0aW9uIHRha2luZyBpbnRvIGFjY291bnQgdGhhdCBqc29uIHNjaGVtYSBpcyBtb3JlIHJlcHJlc2VudGF0aW9uIG9mIHZhbGlkYXRpb24gbm90IGRhdGEgc3RydWN0dXJlIGl0c2VsZi4gSW4gbWFueSBsYW5ndWFnZXMgdW5pb25zIGFyZSBhIGNvbXBsaWNhdGVkIHRoaW5nIGJ1dCBpZiB5b3UgYXJlIHVzaW5nIGFsbE9mcyB0byBleHRyYWN0IGNvbW1vbiBwYXJ0cyBvZiBzdHJ1Y3RzIGl0J3MgYSBmdW5jdGlvbmFsaXR5IHdoaWNoIG1heSBiZSB2ZXJ5IGhlbHBmdWwgZm9yIHlvdS4KCiMjIyBQYXRjaAoKSWYgb3BlbmFwaSB5b3UgcmVjZWl2ZWQgc2VlbXMgYnJva2VuIHlvdSBtYXkgZml4IGl0IGFuZCBjcmVhdGUgW2pzb24tcGF0Y2hdKGh0dHA6Ly9qc29ucGF0Y2guY29tLykgZmlsZToKCmBgYApzY2hlbWF0b29scyBwcm9jZXNzIHBhdGNoIDxmaWxlPiBjcmVhdGUgPG9yaWdpbmFsLWZpbGU+IApgYGAKClRoZW4geW91IGNhbiBhcHBseSBzdWNoIHBhdGNoIHRvIG9yaWdpbmFsIG9wZW5hcGkgZmlsZSBkdXJpbmcgcHJvY2Vzc2luZzoKCmBgYApzY2hlbWF0b29scyBwcm9jZXNzIHBhdGNoIDxmaWxlPiBhcHBseSA8cGF0Y2gtZmlsZT4gCmBgYAoKIyMjIE1lcmdlIG9wZW5hcGkgYW5kIGJ1bXAKCklmIHlvdSBtaWNyb3NlcnZpY2UgaXMgc3BsaXQgdG8gbW9yZSB0aGFuIG9uZSBzZXJ2aWNlIChhbmQgaXMgZXhwb3NlZCB1bmRlciBzYW1lIGluZ3Jlc3MpIHlvdSBtYXkgZmluZCBpdCB1c2VmdWwgdG8gY3JlYXRlIG9uZSBvcGVuYXBpIGRlZmluaXRpb246CgpgYGAKc2NoZW1hdG9vbHMgcHJvY2VzcyBtZXJnZS1vcGVuYXBpIDxmaWxlPiAtLXdpdGggPHdpdGg+CmBgYAoKU29tZSB1c2VmdWwgb3B0aW9ucyB3aGljaCBtYXkgYmUgbmVlZGVkIGZvciB2ZXJzaW9uaW5nIG1lcmdlZCBvcGVuYXBpOgoKYGBgCi0tYWRkLXZlcnNpb24gPGFkZC12ZXJzaW9uPiAgICBTaG91bGQgYWRkIGluZm8ueC12ZXJzaW9uLSBhdHRyaWJ1dGUgdG8gb3BlbmFwaSBzcGVjaWZpY2F0aW9uCi0tcmV0YWcgPHJldGFnPiAgICAgICAgICAgICAgICBTaG91bGQgY2hhbmdlIHRhZ3Mgb2YgYWxsIGVuZHBvaW50cyBvZiBtZXJnZWQgb3BlbmFwaQpgYGAKClRvIGJ1bXAgbWVyZ2VkIG9wZW5hcGkgdmVyc2lvbiB5b3UgbWF5IHVzZSB0aGlzIGNvbW1hbmQ6CgpgYGAKc2NoZW1hdG9vbHMgcHJvY2VzcyBidW1wLW9wZW5hcGkgPGZpbGU+IC0tb3JpZ2luYWwgPHByZXZpb3VzLXZlcnNpb24tZmlsZT4KYGBgCgpJdCBzaG91bGQgY29ycmVjdGx5IGNoYW5nZSB2ZXJzaW9uIG9mIG9wZW5hcGkgYWNjb3JkaW5nIHRvIGFsbCBzdWItb3BlbmFwaSBzZW12ZXJzaW9ucy4KCiMjIENvZGVnZW4gb3BlbmFwaQoKQ29kZSBnZW5lcmF0aW9uIGl0c2VsZiBpcyBwZXJmb3JtZWQgYnkgcHJvY2Vzc2luZyB0ZW1wbGF0ZXMgZGlyZWN0b3J5LiBCZWZvcmUgaXQgaXMgZG9uZSBhbGwgZGF0YSBmcm9tIG9wZW5hcGkvanNvbi1zY2hlbWEgZmlsZXMgaGFzIHRvIGJlIGV4dHJhY3RlZCBhbmQgcHJvY2Vzc2VkLiBUaGVyZSBhcmUgdHdvIHdheXMgb2YgcGVyZm9ybWluZyBjb2RlZ2VuOgoKLSBgc2NoZW1hdG9vbHMgY29kZWdlbiBqc29uLXNjaGVtYSBqc29uLXNjaGVtYS5qc29uIFsuLi5dYCBpcyB1c2VkIHRvIHByb2Nlc3MganNvbiBzY2hlbWEgZmlsZS4gSXQgbmVlZHMgYWRkaXRpb25hbCBhdHRyaWJ1dGUgYC0tYmFzZS1uYW1lIDxiYXNlLW5hbWU+YCBpZiB0aXRsZSBvZiBqc29uIHNjaGVtYSBpcyBtaXNzaW5nLiBPbmUganNvbi1zY2hlbWEgZG9lc250IG1lYW4gdGhhdCByZXN1bHQgb2Ygc3VjaCBjb2RlZ2VuZXJhdGlvbiBydW4gd2lsbCBiZSBleGFjdGx5IG9uZSBzdHJ1Y3Qvb2JqZWN0L2NsYXNzIC0gaW4gY2FzZSBvZiBjb21wbGV4IGpzb24gc2NoZW1hcyBpdCB3aWxsIGJlIG1hbnkgbW9kZWxzLgotIGBzY2hlbWF0b29scyBjb2RlZ2VuIG9wZW5hcGkgb3BlbmFwaS5qc29uIFsuLi5dYCBpcyB1c2VkIHRvIHByb2Nlc3Mgb3BlbmFwaSBzcGVjaWZpY2F0aW9uIC0gZW5kcG9pbnRzIGFuZCBtb2RlbHMgZXh0cmFjdGlvbi4KClNpbXBsZSB1c2FnZToKCmBgYApzY2hlbWEtdG9vbHMgY29kZWdlbiBvcGVuYXBpIG9wZW5hcGkuanNvbiAtLXRlbXBsYXRlIHRlbXBsYXRlcy8gIC0tdGFyZ2V0LWRpciBwa2cvY2xpZW50LwpgYGAKCi0gYG9wZW5hcGkuanNvbmAgLSBvcGVuYXBpIHNwZWNpZmljYXRpb24gZmlsZQotIGAtLXRlbXBsYXRlIHRlbXBsYXRlcy9gIC0gZGlyZWN0b3J5IHdpdGggamluamEyIGZpbGVzCi0gYC0tdGFyZ2V0LWRpciBwa2cvY2xpZW50L2AgLSB3aGVyZSBjb2RlIHNob3VsZCBiZSBnZW5lcmF0ZWQKCiMjIyBDb2RlZ2VuIG9wdGlvbnMKCi0gYC0tbmVzdGVkLWFycmF5cy1hcy1tb2RlbHNgIC0gc29tZSBsYW5ndWFnZXMgYWxsb3cgdG8gY3JlYXRlIGBWZWM8SGFzaE1hcDxWZWM8SGFzaE1hcD4+Pj5gIC8gYFtdW11bXWludGAgaW5saW5lIHR5cGVzLCBzb21lIG1heSBuZWVkIHRvIGNyZWF0ZSB3cmFwcGluZyB0eXBlcyBmb3Igc3VjaCBjYXNlcwotIGAtLW9wdGlvbmFsLWFuZC1udWxsYWJsZS1hcy1tb2RlbHNgIC0gb3BlbmFwaSBhbGxvd3MgdG8gY3JlYXRlIHR3byBsZXZlbHMgb2YgIm51bGxhYmlsaXR5Iiwgc29tZSBsYW5ndWFnZXMgZG9lc250IGRpc3Rpbmd1aXNoIGJldHdlZW4gbnVsbCBhbmQgdW5kZWZpbmVkLiBUaGlzIG9wdGlvbiB3cmFwIGFsbCBvY2N1cnJlbmNlcyBvZiBudWxsYWJsZSBhbmQgb3B0aW9uYWwgZmllbGRzIGluIHNlcGFyYXRlIHR5cGVzCi0gYC0td3JhcHBlcnNgIC0gb3B0aW9uIHRvIHdyYXAgbWl4ZWQgdHlwZXMgKG9uZU9mKSB0byBjdXN0b20gb2JqZWN0cyB3aXRoIGN1c3RvbSBkZXNlcmlhbGl6YXRpb24gbG9naWMKLSBgLW8gPG9wdGlvbnM+YCAtIG9wdGlvbiB0byBwYXNzIG9wdGlvbnMgKHN0cmluZyBvciBqc29uKSB0byBhbGwgdGVtcGxhdGVzIGZpbGVzIGV4LiBgLW8gJ25hbWU9b3JkZXJzQ2xpZW50JyAtbyAndXNlZEVuZHBvaW50cz1bIi9vcmRlcnMiLCAiL29yZGVycy97aWR9L2l0ZW1zIl0nYAotIGAtLWZvcm1hdGAgLSBleGVjdXRlcyBsYW5ndWFnZSBmb3JtYXR0ZXIgYWZ0ZXIgY29kZSBnZW5lcmF0aW9uIGV4LiBgLS1mb3JtYXQgImdvZm10IC13ImAKCiMjIyBDb2RlZ2VuIHRlbXBsYXRlcwoKQ29kZWdlbiB0ZW1wbGF0ZXMgZGlyZWN0b3J5IGlzIHRhcmdldGVkIHVzaW5nIGAtLXRlbXBsYXRlIHRlbXBsYXRlcy9gIG9wdGlvbi4gQWxsIHNpbXBsZSBmaWxlcyBmcm9tIHRoaXMgZGlyZWN0b3J5IGFyZSBjb3BpZWQgdG8gYC0tdGFyZ2V0LWRpcmAgYmVzaWRlIGAuajJgIHRlbXBsYXRlcy4gVGhlIG1vc3QgaW1wb3J0YW50IG9mIGVhY2ggYC5qMmAgaXMgaXQncyBoZWFkZXIgKGZpcnN0IGxpbmUgb2YgZmlsZSkuCgpFeGFtcGxlIG9mIG1vZGVscy5qMjoKCmBgYAp7IyB0eXBlPW1vZGVscyxmaWxlbmFtZT1tb2RlbHMuZ28gI30KCi8qIG9wdGlvbnM6IHt7IG9wdGlvbnMgfCBqc29uX2VuY29kZShwcmV0dHk9dHJ1ZSkgfX0gKi8KLyogbW9kZWxzOiB7eyBtb2RlbHMgfCBqc29uX2VuY29kZShwcmV0dHk9dHJ1ZSkgfX0gKi8KYGBgCgpFeGFtcGxlIG9mIGVuZHBvaW50cy5qMjoKCmBgYAp7IyB0eXBlPWVuZHBvaW50cyxmaWxlbmFtZT1lbmRwb2ludHMuZ28gI30KCi8qIG9wdGlvbnM6IHt7IG9wdGlvbnMgfCBqc29uX2VuY29kZShwcmV0dHk9dHJ1ZSkgfX0gKi8KLyogbW9kZWxzOiB7eyBlbmRwb2ludHMgfCBqc29uX2VuY29kZShwcmV0dHk9dHJ1ZSkgfX0gKi8KYGBgCgoqSGVhZGVyKiBkZWNpZGVzIGhvdyB0byB0cmVhdCB0ZW1wbGF0ZSBmaWxlLCBob3cgdG8gYW5kIHdoZW4gZ2VuZXJhdGUgZmlsZXMuIEhlYWRlciBvcHRpb25zOgoKLSBgdHlwZT0/YCAtIHBvc3NpYmxlIHZhbHVlczogYGVuZHBvaW50c2AsIGBtb2RlbHNgCi0gYGZpbGVuYW1lPT9gIC0gdGFyZ2V0IGZpbGVwYXRoIHRvIGNyZWF0ZS4gTWF5IGJlIG1peGVkIHdpdGggb3B0aW9ucywgZXguIGBmaWxlbmFtZT1jbGllbnRzLyVvcHRpb25zLm5hbWUlL2VuZHBvaW50cy5nb2AKLSBgaWY9Zm9vOmJhcmAgLSBjb25kaXRpb24gd2hlbiB0byB1c2UgdGVtcGxhdGUgZmlsZS4gU2hvdWxkIGJlIG1peGVkIHdpdGggb3B0aW9ucyBleC4gYGlmPSVvcHRpb25zLnR5cGUlOnNlcnZlcmAKCkZvciBtb3JlIGluZm9ybWF0aW9uIGhvdyB0byB3cml0ZSB0ZW1wbGF0ZSBmaWxlcyBwbGVhc2UgcmVmZXIgdG8gW1RlcmEgZG9jc10oaHR0cHM6Ly90ZXJhLm5ldGxpZnkuYXBwL2RvY3MvKS4gVG8gZ2V0IGxpc3Qgb2YgYWRkaXRpb25hbCBmaWx0ZXJzIHdlIGNyZWF0ZWQgcGxlYXNlIHZpc2l0IFtmaWx0ZXJzLnJzXShodHRwczovL2dpdGh1Yi5jb20va3N0YXNpay9zY2hlbWEtdG9vbHMvYmxvYi9tYXN0ZXIvc3JjL2NvZGVnZW4vZmlsdGVycy5ycykuCgojIyMgQ29kZWdlbiB0ZW1wbGF0ZSBpbmhlcml0YW5jZQoKQ29kZWdlbiBhbGxvd3MgdG8gZGVmaW5lZCBtdWx0aXBsZSBgLS10ZW1wbGF0ZWAgb3B0aW9ucy4KCmBgYApzY2hlbWF0b29scyBjb2RlZ2VuIG9wZW5hcGkuanNvbiAtLXRlbXBsYXRlIGRpcjEvIC0tdGVtcGxhdGUyIGRpcjIvIC0tdGFyZ2V0LWRpciBvdXRwdXQvCmBgYAoKRmlsZXMgZnJvbSBhbGwgZGlyZWN0b3JpZXMgYXJlIGxvYWRlZCBvbmUgYnkgb25lIGFuZCBpbiBjYXNlIG9mIGNvbmZsaWN0cyB0aGV5IGFyZSBvdmVyd3JpdHRlbi4gVGhlcmUgaXMgYWxzbyBvcHRpb24gdG8gcG9pbnQgdG8gcmVnaXN0cnkgd2hpY2ggY3VycmVudGx5IG1heSBiZSBvbmx5IGEgKipnaXQgcmVwb3NpdG9yeSoqOgoKYGBgCnNjaGVtYXRvb2xzIGNvZGVnZW4gb3BlbmFwaS5qc29uIC0tdGVtcGxhdGUgUkVHSVNUUlk6OmRpcjEvIC0tdGVtcGxhdGUyIGRpcjIvIC0tdGFyZ2V0LWRpciBvdXRwdXQvCmBgYAoKIyMjIENvZGVnZW4gcmVhZHkgdG8gdXNlIHRlbXBsYXRlcwoKVE9ETzogcHVzaCBjb2RlZ2VuIHRlbXBsYXRlcyB0byB0aGUgc2VwYXJhdGUgcmVwbyBhbmQgd3JpdGUgdGhlcmUgYW4gZXhhbXBsZQoKIyMgQ2hhaW4KClRoaXMgaXMgdGhlIHdob2xlIHBvaW50IG9mIHRoaXMgdG9vbC4gSXQgd3JhcHMgYWxsIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdGllcyB0b2dldGhlciBhbmQgYWRkcyBnbG9iYWwgYXBwbGljYXRpb24gY29udGV4dCB0byBvcGVuYXBpIHByb2Nlc3NpbmcuCgpgYGAKc2NoZW1hdG9vbHMgY2hhaW4gLXZ2dnYgXAogICAtYyAncHJvY2VzcyBtZXJnZS1hbGwtb2YgLS1sZWF2ZS1pbnZhbGlkLXByb3BlcnRpZXMgaHR0cHM6Ly9kb21haW4uY29tL29wZW5hcGkvb3JkZXJzL2FwaS55YW1sJyBcCiAgIC1jICdwcm9jZXNzIG5hbWUgLSAtLXJlc291cmNlLW1ldGhvZC12ZXJzaW9uIC0tb3ZlcndyaXRlJyBcCiAgIC1jICd2YWxpZGF0ZSBvcGVuYXBpIC0gLS1jb250aW51ZS1vbi1lcnJvcicgXAogICAtYyAnY29kZWdlbiBvcGVuYXBpIC0gXAogICAgICAgIC0tdGVtcGxhdGUgY29kZWdlbi9jbGllbnQvIFwKICAgICAgICAtLWZvcm1hdCAiZ29mbXQgLXciIFwKICAgICAgICAtLXRhcmdldC1kaXIgcGtnL2NsaWVudC8gXAogICAgICAgIC1vIG5hbWVzcGFjZT1vcmRlcnMgXAogICAgICAgIC1vIGNsaWVudE5hbWU9T3JkZXJzQ2xpZW50JwpgYGAKCkFsbCBjb21tYW5kcyB0YWtlIHNhbWUgYXJndW1lbnRzIGFzIHRoZXkgd2VyZSBleGVjdXRlZCBzZXBhcmF0ZWx5LiBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIGZpcnN0IGV4ZWN1dGlvbiBoYXMgdG8gdGFrZSByZWFsIHNjaGVtYSBmaWxlIGFzIGAtZmAgYXJndW1lbnQuIFRoZSBuZXh0IGV4ZWN1dGlvbnMgc2hvdWxkIHRha2UgYC1gIHRvIHVzZSBwcmV2aW91c2x5IGdlbmVyYXRlZCBzY2hlbWEgZmlsZS4KCmBgYApzY2hlbWF0b29scyBjaGFpbiAtdnZ2diBcCiAgIC1jICdwcm9jZXNzIG1lcmdlLWFsbC1vZiAtLWxlYXZlLWludmFsaWQtcHJvcGVydGllcyBzcGVjaWZpY2F0aW9ucy9hcGkueWFtbCcgXAogICAtYyAncHJvY2VzcyBuYW1lIC0gLS1yZXNvdXJjZS1tZXRob2QtdmVyc2lvbiAtLW92ZXJ3cml0ZScgXAogICAtYyAndmFsaWRhdGUgb3BlbmFwaSAtICcgCiAgIC1jICdjb2RlZ2VuIG9wZW5hcGkgLSBcCiAgICAgICAgLS10ZW1wbGF0ZSBjb2RlZ2VuL3NlcnZlci8gXAogICAgICAgIC0tZm9ybWF0ICJnb2ZtdCAtdyIgXAogICAgICAgIC0tdGFyZ2V0LWRpciBpbnRlcm5hbC9odHRwLyBcCiAgICAgICAgLW8gbmFtZXNwYWNlPW15c2VydmljZScKYGBgCgpUaGVyZSBpcyBhbiBvcHRpb24gdG8gZHVtcCBwcm9jZXNzZWQgc2NoZW1hIHRvIGEgZmlsZSBkdXJpbmcgY2hhaW5pbmcgdXNpbmcgYG91dHB1dGAgY29tbWFuZDoKCmBgYApzY2hlbWF0b29scyBjaGFpbiAtdnZ2diBcCiAgIC1jICdwcm9jZXNzIG1lcmdlLWFsbC1vZiAtLWxlYXZlLWludmFsaWQtcHJvcGVydGllcyBzcGVjaWZpY2F0aW9ucy9hcGkueWFtbCcgXAogICAtYyAncHJvY2VzcyBuYW1lIC0gLS1yZXNvdXJjZS1tZXRob2QtdmVyc2lvbiAtLW92ZXJ3cml0ZScgXAogICAtYyAndmFsaWRhdGUgb3BlbmFwaSAtICcgXAogICAtYyAnb3V0cHV0IC0tdG8tZmlsZT10ZXN0Lmpzb24gLW8ganNvbicgXAogICAtYyAnY29kZWdlbiBvcGVuYXBpIC0gXAogICAgICAgIC0tdGVtcGxhdGUgY29kZWdlbi9zZXJ2ZXIvIFwKICAgICAgICAtLWZvcm1hdCAiZ29mbXQgLXciIFwKICAgICAgICAtLXRhcmdldC1kaXIgaW50ZXJuYWwvaHR0cC8gXAogICAgICAgIC1vIG5hbWVzcGFjZT1teXNlcnZpY2UnCmBgYAoKIyMjIFJlZ2lzdHJ5CgpUaGVyZSBpcyBhbiBvcHRpb24gdG8gdHJlYXQgYSBzZXBhcmF0ZSBnaXQgcmVwb3NpdG9yeSBhcyBzb3VyY2Ugb2YgdGVtcGxhdGVzOgoKYGBgCnNjaGVtYXRvb2xzIGNoYWluIC12dnZ2IFwKICAgLWMgJ3JlZ2lzdHJ5IGFkZCBjb21tb24gZ2l0Oi8vZ2l0aHViLmNvbS9rc3Rhc2lrL3NjaGVtYS10b29scyAtLXRhZyB2MC4wLjEnIFwKICAgLWMgJ3Byb2Nlc3MgbWVyZ2UtYWxsLW9mIC0tbGVhdmUtaW52YWxpZC1wcm9wZXJ0aWVzIGNsaWVudHMvY2xpZW50MS55YW1sJyBcCiAgIC1jICdwcm9jZXNzIG5hbWUgLSAtLXJlc291cmNlLW1ldGhvZC12ZXJzaW9uIC0tb3ZlcndyaXRlJyBcCiAgIC1jICd2YWxpZGF0ZSBvcGVuYXBpIC0gLS1jb250aW51ZS1vbi1lcnJvcicgXAogICAtYyAnY29kZWdlbiBvcGVuYXBpIC0gLS10ZW1wbGF0ZSBjb21tb246OnJlc291cmNlcy9vcGVuYXBpLyAtLXRhcmdldC1kaXIgcGtnL2NsaWVudDEvIC1vIG5hbWVzcGFjZT1jbGllbnQxIC1vIGNsaWVudE5hbWU9Q2xpZW50MScKYGBgCgpUbyB0YXJnZXQgc3VjaCByZWdpc3RyeSB5b3Ugc2ltcGx5IHVzZTogYC0tdGVtcGxhdGUgUkVHSVNUUllfTkFNRTo6cGF0aC9gCgojIyBFeGFtcGxlIG9mIHVzYWdlCgpUaGlzIGV4YW1wbGUgc2hvd3Mgb3BlbmFwaSBodHRwIHNlcnZlciB3aXRoIHR3byBleHRlcm5hbCBvcGVuYXBpIGNsaWVudCBkZXBlbmRlbmNpZXM6CgpgYGAKc2NoZW1hdG9vbHMgY2hhaW4gLXZ2IFwKICAjIDAuIFJlZ2lzdGVyIGV4dGVybmFsIHJlcG9zaXRvcnkgd2l0aCB0ZW1wbGF0ZXMgYW5kIGZpeCBpdCB0byB0YWcKICAtYyAncmVnaXN0cnkgYWRkIGRlZmF1bHQgaHR0cHM6Ly9jb2RlZ2VuLXRlbXBsYXRlcy90ZW1wbGF0ZXMuZ2l0IC0tdGFnIHYwLjUuMCcgXAogICMgMS4gTG9hZCBsb2NhbCBvcGVuYXBpIHNwZWNpZmljYXRpb24gZnJvbSBmaWxlIGFuZCBkZXJlZmVyZW5jZQogIC1jICdwcm9jZXNzIGRlcmVmZXJlbmNlIHNwZWMvYXBpLnlhbWwgLS1za2lwLXJvb3QtaW50ZXJuYWwtcmVmZXJlbmNlcyAtLWNyZWF0ZS1pbnRlcm5hbC1yZWZlcmVuY2VzJyBcCiAgIyAxLiBDb252ZXJ0IGFsbE9mIHRvIHN0cnVjdHMKICAtYyAncHJvY2VzcyBtZXJnZS1hbGwtb2YgLSAtLWxlYXZlLWludmFsaWQtcHJvcGVydGllcycgXAogICMgMS4gT3ZlcndyaXRlIHRpdGxlcyBvZiBzY2hlbWFzIGFuZCBvcGVyYXRpb25JZHMgb2YgZW5kcG9pbnRzIGluIG9wZW5hcGkKICAtYyAncHJvY2VzcyBuYW1lIC0gLS1vdmVyd3JpdGUgLS1yZXNvdXJjZS1tZXRob2QtdmVyc2lvbicgXAogICMgMS4gUGVyZm9ybSB2YWxpZGF0aW9uIG9mIG91ciBvcGVuYXBpIHNwZWNpZmljYXRpb24gLSBpbnRlcnJ1cHQgYnVpbGQgb24gZXJyb3IKICAtYyAndmFsaWRhdGUgb3BlbmFwaSAtICcgXAogICMgMS4gQ3JlYXRlIG1vZGVscyBhbmQgcm91dGVycwogIC1jICdjb2RlZ2VuIG9wZW5hcGkgLSAtLXRlbXBsYXRlIGRlZmF1bHQ6OnJ1c3QtYWN0aXgtc2VydmVyLyAtLWZvcm1hdCAicnVzdGZtdCAtLWVkaXRpb24gMjAxOCIgLS10YXJnZXQtZGlyIHNyYy9hcHAvIC1vIG5hbWU9U2hpcHBpbmdBcHAnICBcCiAgXAogICMgMi4gTG9hZCByZW1vdGUgb3BlbmFwaSBkZWZpbml0aW9uIG9mIGV4dGVybmFsIHNlcnZpY2UKICAtYyAncHJvY2VzcyBkZXJlZmVyZW5jZSBodHRwczovL3NjaGVtYXMuY29tL29wZW5hcGkvb3JkZXJzL3YwLjEuMC5qc29uIC0tc2tpcC1yb290LWludGVybmFsLXJlZmVyZW5jZXMnIFwKICAjIDIuIENvbnZlcnQgYWxsT2YgdG8gc3RydWN0cwogIC1jICdwcm9jZXNzIG1lcmdlLWFsbC1vZiAtIC0tbGVhdmUtaW52YWxpZC1wcm9wZXJ0aWVzJyBcCiAgIyAyLiBPdmVyd3JpdGUgdGl0bGVzIG9mIHNjaGVtYXMgYW5kIG9wZXJhdGlvbklkcyBvZiBlbmRwb2ludHMgaW4gb3BlbmFwaSBiZWNhdXNlIGl0IGZvbGxvdyByZXN0ZnVsIHN0YW5kYXJkcwogIC1jICdwcm9jZXNzIG5hbWUgLSAtLW92ZXJ3cml0ZSAtLXJlc291cmNlLW1ldGhvZC12ZXJzaW9uJyBcCiAgIyAyLiBQYXRjaCBvcGVuYXBpIHNwZWNpZmljYXRpb24gYmVjYXVzZSBpdCBoYXMgYW4gZXJyb3IgYW5kIHdlIGRvbid0IHdhbnQgdG8gd2FpdCBmb3IgYSBmaXggdG8gYmUgcHVibGlzaGVkIGJ5IG90aGVyIHByb2plY3QKICAtYyAncGF0Y2ggLSBhcHBseSBzcGVjcy9maXhlcy9vcmRlcnMueWFtbCcgXAogICMgMi4gVmFsaWRhdGUgb3BlbmFwaSBkZWZpbml0aW9uIGJ1dCBjb250aW51ZSBvbiBmYWlsdXJlIGJlY2F1c2UgaXQncyBhbiBleHRlcm5hbCBjbGllbnQgbm90IG93bmVkIGJ5IHByb2plY3QKICAtYyAndmFsaWRhdGUgb3BlbmFwaSAtIC0tY29udGludWUtb24tZXJyb3InIFwKICAjIDIuIENyZWF0ZSBjbGllbnQKICAtYyAiY29kZWdlbiBvcGVuYXBpIC0gLS1vcHRpb25hbC1hbmQtbnVsbGFibGUtYXMtbW9kZWxzIC0tdGVtcGxhdGUgZGVmYXVsdDo6cnVzdC1yZXF3ZXN0LWh0dHAvIC0tZm9ybWF0ICdydXN0Zm10IC0tZWRpdGlvbiAyMDE4JyBcCiAgICAtbyAndXNlZEVuZHBvaW50cz1+W1wib3JkZXJzTGlzdFYzXCIsXCJvcmRlcnNDcmVhdGVWM1wiXScgXAogICAgLS10YXJnZXQtZGlyIHNyYy9jbGllbnRzLyAtbyBuYW1lPU9yZGVyc0NsaWVudCIgXAogIFwKICAjIDMuIExvYWQgcmVtb3RlIG9wZW5hcGkgZGVmaW5pdGlvbiBvZiBleHRlcm5hbCBzZXJ2aWNlCiAgLWMgJ3Byb2Nlc3MgZGVyZWZlcmVuY2UgaHR0cHM6Ly9zY2hlbWFzLmNvbS9vcGVuYXBpL3VzZXJzL3YwLjEuMC5qc29uIC0tc2tpcC1yb290LWludGVybmFsLXJlZmVyZW5jZXMnIFwKICAjIDMuIENvbnZlcnQgYWxsT2YgdG8gc3RydWN0cwogIC1jICdwcm9jZXNzIG1lcmdlLWFsbC1vZiAtIC0tbGVhdmUtaW52YWxpZC1wcm9wZXJ0aWVzJyBcCiAgIyAzLiBPdmVyd3JpdGUgdGl0bGVzIG9mIHNjaGVtYXMgYW5kIG9wZXJhdGlvbklkcyBvZiBlbmRwb2ludHMgaW4gb3BlbmFwaSBiZWNhdXNlIGl0IGZvbGxvdyByZXN0ZnVsIHN0YW5kYXJkcwogIC1jICdwcm9jZXNzIG5hbWUgLSAtLW92ZXJ3cml0ZSAtLXJlc291cmNlLW1ldGhvZC12ZXJzaW9uJyBcCiAgIyAzLiBWYWxpZGF0ZSBvcGVuYXBpIGRlZmluaXRpb24gYnV0IGNvbnRpbnVlIG9uIGZhaWx1cmUgYmVjYXVzZSBpdCdzIGFuIGV4dGVybmFsIGNsaWVudCBub3Qgb3duZWQgYnkgcHJvamVjdAogIC1jICd2YWxpZGF0ZSBvcGVuYXBpIC0gLS1jb250aW51ZS1vbi1lcnJvcicgXAogICMgMy4gQ3JlYXRlIGNsaWVudAogIC1jICJjb2RlZ2VuIG9wZW5hcGkgLSAtLW9wdGlvbmFsLWFuZC1udWxsYWJsZS1hcy1tb2RlbHMgLS10ZW1wbGF0ZSBkZWZhdWx0OjpydXN0LXJlcXdlc3QtaHR0cC8gLS1mb3JtYXQgJ3J1c3RmbXQgLS1lZGl0aW9uIDIwMTgnIFwKICAgIC1vICd1c2VkRW5kcG9pbnRzPX5bXCJ1c2Vyc0xpc3RWM1wiLFwidXNlcnNDcmVhdGVWM1wiXScgXAogICAgLS10YXJnZXQtZGlyIHNyYy9jbGllbnRzLyAtbyBuYW1lPVVzZXJzQ2xpZW50IgpgYGAK readmeEtag: '"298bcf0416c32261ce2fa9a8daa99d4a2d4ea35b"' readmeLastModified: Sun, 15 Jun 2025 17:56:48 GMT repositoryId: 319082686 description: >- Set of tools for codegen, preprocessing and validation of json-schema and openapi spec created: '2020-12-06T16:48:56Z' updated: '2025-11-18T09:09:31Z' language: Rust archived: false stars: 48 watchers: 7 forks: 15 owner: kstasik logo: https://avatars.githubusercontent.com/u/676617?v=4 license: MIT repoEtag: '"8835e1cdc6c0cf56ed72289282bb972c25041b0edf4314b943a79f49e626a69b"' repoLastModified: Tue, 18 Nov 2025 09:09:31 GMT category: Parsers foundInMaster: true id: 152cddaa4f413487d9d5bab9d4eb78cb - source: openapi3 tags repository: https://github.com/alidehbansiahkarbon/openapiclientwizard v3: true id: 8ebb675de44da3df54a6c6b891575bd3 repositoryMetadata: base64Readme: >- PGltZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vQWxpRGVoYmFuc2lhaGthcmJvbi9PcGVuQVBJQ2xpZW50V2l6YXJkL2Fzc2V0cy81NjAxNjA4LzllYWIwOTM3LTkwZTQtNDZhZS1iY2UyLTI5YTI0YzAyYmQ5ZCIgYWx0PSIiLz4gCgojIE9wZW5BUElDbGllbnRXaXphcmQoYmV0YS0gbm8gcHJvZHVjdGlvbiByZWFkeSkKCldlbGNvbWUgdG8gKipPcGVuQVBJQ2xpZW50V2l6YXJkKiog4oCTIHRoZSB1bHRpbWF0ZSBwbHVnaW4gZm9yIFJBRCBTdHVkaW8gdGhhdCByZXZvbHV0aW9uaXplcyB0aGUgd2F5IERlbHBoaSBkZXZlbG9wZXJzIGltcGxlbWVudCBSRVNUIEFQSSBjbGllbnRzLgoKIyMgT3ZlcnZpZXcKCkFzIERlbHBoaSBkZXZlbG9wZXJzLCB3ZSBvZnRlbiBmYWNlIHRoZSBjaGFsbGVuZ2Ugb2YgaW1wbGVtZW50aW5nIFJFU1QgQVBJIGNsaWVudHMuIEFQSSBkb2N1bWVudGF0aW9uIHJhcmVseSBpbmNsdWRlcyBEZWxwaGkgY29kZSBzbmlwcGV0cywgZm9yY2luZyB1cyB0byByZWFkIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBpbXBsZW1lbnQgZWFjaCBtZXRob2QgLSBHRVQsIFBPU1QsIFBVVCwgREVMRVRFIC0gbWFudWFsbHkuIEV2ZW4gd2l0aCBTd2FnZ2VyIG9yIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMsIGl0J3MgYSB0aW1lLWNvbnN1bWluZyBwcm9jZXNzLiBXaXRob3V0IHRoZXNlIHNwZWNpZmljYXRpb25zLCB3ZSByZXNvcnQgdG8gdG9vbHMgbGlrZSBEZWxwaGkncyBSRVNUIERlYnVnZ2VyIG9yIFBvc3RtYW4sIHRlc3RpbmcgZWFjaCBtZXRob2QgaW5kaXZpZHVhbGx5IGJlZm9yZSBjb2RpbmcgdGhlbSBpbnRvIG91ciBwcm9qZWN0cy4KCioqT3BlbkFQSUNsaWVudFdpemFyZCoqIGNoYW5nZXMgYWxsIHRoYXQuIFRoaXMgcG93ZXJmdWwgcGx1Z2luIHJlYWRzIFN3YWdnZXIsIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMsIG9yIFBvc3RtYW4gY29sbGVjdGlvbiBhbmQgZ2VuZXJhdGVzIGEgZnVsbHkgaW1wbGVtZW50ZWQgY2xpZW50LXNpZGUgc2FtcGxlKFZDTCkgcHJvamVjdCBpbiBEZWxwaGksIHJlYWR5IHRvIGNvbXBpbGUsIGluIGp1c3QgMi0zIHNlY29uZHMhCgojIyBJREUgVmVyc2lvbiBzdXBwb3J0Ci0gKipTdXBwb3J0cyBmcm9tIERlbHBoaSAxMC4xIEJlcmxpbiB0byAxMi54IEF0aGVucyoqCgojIyBGZWF0dXJlcwoKLSAqKlN1cHBvcnRzIFN3YWdnZXIgU3BlY2lmaWNhdGlvbnM6KiogSGFuZGxlcyBKU09OIGZvcm1hdCBlZmZvcnRsZXNzbHkuCi0gKipTdXBwb3J0cyBPcGVuQVBJIFNwZWNpZmljYXRpb25zOioqIEhhbmRsZXMgYm90aCBKU09OIGFuZCBZQU1MIGZvcm1hdHMgZWZmb3J0bGVzc2x5LgotICoqUG9zdG1hbiBDb2xsZWN0aW9uIENvbnZlcnNpb246KiogQ29udmVydHMgUG9zdG1hbiBjb2xsZWN0aW9ucyBpbnRvIGNvbXBsZXRlIERlbHBoaSBjbGllbnQgcHJvamVjdHMuCi0gKipSYXBpZCBQcm9qZWN0IEdlbmVyYXRpb246KiogR2VuZXJhdGVzIGZ1bGx5IGltcGxlbWVudGVkIGNsaWVudC1zaWRlIHByb2plY3RzIGluIHNlY29uZHMsIHNhdmluZyB5b3UgYSBodWdlIHRpbWUod2Vla3Mgb2YgZGV2ZWxvcG1lbnQpLgoKCiMjIEJlbmVmaXRzCgotICoqU2F2ZSBUaW1lOioqIFJlZHVjZXMgd2Vla3Mgb2Ygd29yayB0byBtZXJlIHNlY29uZHMuCi0gKipJbmNyZWFzZSBQcm9kdWN0aXZpdHk6KiogRm9jdXMgb24gYnVpbGRpbmcgYW1hemluZyBhcHBsaWNhdGlvbnMgaW5zdGVhZCBvZiBzcGVuZGluZyB0aW1lIG9uIHJlcGV0aXRpdmUgY29kaW5nIHRhc2tzLgotICoqU2ltcGxpZnkgRGV2ZWxvcG1lbnQ6KiogQXV0b21hdGUgdGhlIGNyZWF0aW9uIG9mIERlbHBoaSBjbGllbnQtc2lkZSBwcm9qZWN0cyBmcm9tIEFQSSBzcGVjaWZpY2F0aW9ucy4KCiMjIEdldHRpbmcgU3RhcnRlZAoKMS4gKipEb3dubG9hZCBhbmQgSW5zdGFsbDoqKiBGb2xsb3cgdGhlIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgaW4gdGhlIHJlcG9zaXRvcnkuCjIuICoqUnVuIE9wZW5BUElDbGllbnRXaXphcmQ6KiogT3BlbiB5b3VyIFJBRCBTdHVkaW8gSURFIGFuZCBydW4gdGhlIHBsdWdpbi4KMy4gKipDcmVhdGUgYSBuZXcgcHJvamVjdCoqIGluIFJBRCBTdHVkaW8gYnkgZm9sbG93aW5nIHRoaXMgcGF0aDogRmlsZS9OZXcvT3RoZXI6CgoKIVtpbWFnZV0oaHR0cHM6Ly9naXRodWIuY29tL0FsaURlaGJhbnNpYWhrYXJib24vT3BlbkFQSUNsaWVudFdpemFyZC9hc3NldHMvNTYwMTYwOC9mMGRmZWFlNy01ZDFhLTQ5YjYtYjk3MC00N2UyNWQzYjM5NDQpCgo0LiAqKlNldHVwIHRoZSBwcm9qZWN0J3MgcHJlZmVyZW5jZXMqKgoKCiFbaW1hZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy84YjhkMWMzYi1hNTRiLTQzNzgtYWFhZC04MDI4NTJlYjc0YjApCgogICAKNi4gKipHZW5lcmF0ZSBZb3VyIFByb2plY3Q6KiogUHJvdmlkZSB5b3VyIFN3YWdnZXIgb3IgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLCBvciBQb3N0bWFuIGNvbGxlY3Rpb24sIGFuZCBsZXQgdGhlIHBsdWdpbiBkbyB0aGUgcmVzdC4KCiFbaW1hZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9BbGlEZWhiYW5zaWFoa2FyYm9uL09wZW5BUElDbGllbnRXaXphcmQvYXNzZXRzLzU2MDE2MDgvNDliYTFlMGQtOGI0YS00ZjA4LTg5YTgtODVkYjBiY2ZmOWJmKQoKCgojIyBSZW1hcmtzCioqVG8gZG93bmxvYWQsIHlvdSBtdXN0IHByb3ZpZGUgdGhlIGRpcmVjdCBVUkwgb2YgdGhlIGZpbGU7IHJlZGlyZWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuKioKKipZb3UgY2Fubm90IHVzZSB0aGUgZmlyc3QgVVJMIHRvIGRvd25sb2FkIHRoZSBKU09OIHNwZWNpZmljYXRpb24sIGJ1dCB0aGUgc2Vjb25kIG9uZSBpcyBhY2NlcHRhYmxlLioqCgoxLSBodHRwczovL2dpdGh1Yi5jb20vYWRld2cvSUNBUi9ibG9iL0FERS0xL3VybC1zY2hlbWVzL3JlcHJvZHVjdGlvblVSTFNjaGVtZS5qc29uIOKdjAoKMi0gaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2FkZXdnL0lDQVIvQURFLTEvdXJsLXNjaGVtZXMvcmVwcm9kdWN0aW9uVVJMU2NoZW1lLmpzb24g4pyFCgoKIyMgRGVtbyBWaWRlbwoqKldhdGNoIGEgc2hvcnQgdmlkZW8gW2hlcmVdKGh0dHBzOi8veW91dHUuYmUvN0I3blNISXNWNjQpOioqIHRvIGxlYXJuIGhvdyB0byB1c2UgdGhlIHBsdWctaW4gKG9yIGNsaWNrIG9uIHRoZSBiZWxvdyBpbWFnZfCfkYfwn5GHKQoKPGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS83QjduU0hJc1Y2NCIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vQWxpRGVoYmFuc2lhaGthcmJvbi9PcGVuQVBJQ2xpZW50V2l6YXJkL2Fzc2V0cy81NjAxNjA4LzkwMTVjYTQzLTNkM2EtNGRmYS04NDM2LTFiYmJhN2FjNmZkZCIgd2lkdGggPSAiMzAwIiBoZWlnaHQgPSAiMzAwIiAvPjwvYT4KCiMjIFN1cHBvcnQKCklmIHlvdSBmaW5kIE9wZW5BUElDbGllbnRXaXphcmQgdXNlZnVsLCBwbGVhc2UgZ2l2ZSBpdCBhICoqc3RhcioqLgoKWW91ciBzdXBwb3J0IGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQhCgpZb3UgY2FuIGFsc28gc3VwcG9ydCBteSB3b3JrIGJ5IGJ1eWluZyBtZSBhIGNvZmZlZS4gVGhpcyBoZWxwcyBtZSBjb250aW51ZSBkZXZlbG9waW5nIHRoaXMgcGx1Z2luIGFuZCBvdGhlciB0b29scyBsaWtlIFtDaGF0R1BUV2l6YXJkXShodHRwczovL2dpdGh1Yi5jb20vQWxpRGVoYmFuc2lhaGthcmJvbi9DaGF0R1BUV2l6YXJkKSBhbmQgW0Vhc3lEQk1pZ3JhdG9yXShodHRwczovL2dpdGh1Yi5jb20vQWxpRGVoYmFuc2lhaGthcmJvbi9FYXN5REJNaWdyYXRvcikuCgo8YSBocmVmPSJodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2FkZWhiYW5yIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vY2RuLmJ1eW1lYWNvZmZlZS5jb20vYnV0dG9ucy9kZWZhdWx0LW9yYW5nZS5wbmciIGFsdD0iQnV5IE1lIEEgQ29mZmVlIiBoZWlnaHQ9IjQxIiB3aWR0aD0iMTc0Ij48L2E+CgojIyMgQXNrIGZvciBkaXJlY3Qgc3VwcG9ydCBvciBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbgoKT3BlbkFQSUNsaWVudFdpemFyZCBpcyBwcm92aWRlZCBhcyBpcy4gSWYgeW91IG5lZWQgYW55IHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGNvbnRhY3QgbWUgdmlhIFtlbWFpbF0oYWRlaGJhbkBnbWFpbC5jb20pLCBwbGVhc2UuCgojIyBDb250cmlidXRpbmcKCkNvbnRyaWJ1dGlvbnMgYXJlIHdlbGNvbWUhIApJZiB5b3UgaGF2ZSBzdWdnZXN0aW9ucyBmb3IgaW1wcm92ZW1lbnRzIG9yIGZpbmQgYW55IGlzc3VlcywgcGxlYXNlIG9wZW4gYW4gaXNzdWUgb3Igc3VibWl0IGEgcHVsbCByZXF1ZXN0LgoKIyMgTGljZW5zZQpUaGlzIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiAKU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCgojIyBEZXBlbmRlbmNpZXMKVGhpcyBwbHVnaW4gdXRpbGl6ZXMgdGhlIE5lc2xpYiBsaWJyYXJ5IHRvIHBhcnNlIFlhbWwgZm9ybWF0LCB3aGljaCBpcyBpbmNsdWRlZCBpbiB0aGUgcmVwb3NpdG9yeSBmb3IgY29udmVuaWVuY2UuIAoKTm8gYWN0aW9uIGlzIHJlcXVpcmVkIG9uIHlvdXIgcGFydC4gCgpIb3dldmVyLCB5b3UgY2FuIGZpbmQgdGhlIGxhdGVzdCBzb3VyY2UgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9uZXNsaWIvTmVzbGliLkpzb24pLgoKLS0tCgpUcmFuc2Zvcm0gdGhlIHdheSB5b3UgZGV2ZWxvcCBSRVNUIEFQSSBjbGllbnRzIGluIERlbHBoaSB3aXRoICoqT3BlbkFQSUNsaWVudFdpemFyZCoqLiAKCkRvd25sb2FkIGl0IHRvZGF5IGFuZCBzdHJlYW1saW5lIHlvdXIgd29ya2Zsb3chCgo8aHI+CjxwIGFsaWduPSJjZW50ZXIiPgo8aW1nIHNyYz0iaHR0cHM6Ly9pMC53cC5jb20vYmxvZ3MuZW1iYXJjYWRlcm8uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzExL2Rsb2dvbmV3LTU1ODI3NDAucG5nP3Jlc2l6ZT0yNTQlMkMyNDImc3NsPTEiIGFsdD0iRGVscGhpIj4KPC9wPgo8aDUgYWxpZ249ImNlbnRlciI+Ck1hZGUgd2l0aCA6aGVhcnQ6IG9uIERlbHBoaQo8L2g1Pgo= readmeEtag: '"f25aed280079a9f45bd4b6decd9534447425add8"' readmeLastModified: Tue, 03 Sep 2024 20:56:51 GMT repositoryId: 812935191 description: >- OpenAPIClientWizard – the ultimate plugin for RAD Studio that revolutionizes the way Delphi developers implement REST API clients. created: '2024-06-10T07:29:10Z' updated: '2026-01-13T13:04:12Z' language: Pascal archived: false stars: 51 watchers: 8 forks: 6 owner: AliDehbansiahkarbon logo: https://avatars.githubusercontent.com/u/5601608?v=4 license: MIT repoEtag: '"b0c869463b73cde3922e2dcd761f40af733cd7c205e264003c30808ad6c9d739"' repoLastModified: Tue, 13 Jan 2026 13:04:12 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/networknt/light-codegen v3: true repositoryMetadata: base64Readme: >- QSBjb2RlIGdlbmVyYXRvciBiYXNlZCBvbiBbcm9ja2VyXShodHRwczovL2dpdGh1Yi5jb20vZml6emVkL3JvY2tlcikgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGNvbW1hbmQgbGluZSB1dGlsaXR5IG9yIHdlYiBzZXJ2aWNlLgoKW1N0YWNrIE92ZXJmbG93XShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy90YWdnZWQvbGlnaHQtNGopIHwKW0dvb2dsZSBHcm91cF0oaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIWZvcnVtL2xpZ2h0LTRqKSB8CltHaXR0ZXIgQ2hhdF0oaHR0cHM6Ly9naXR0ZXIuaW0vbmV0d29ya250L2xpZ2h0LWNvZGVnZW4pIHwKW1N1YnJlZGRpdF0oaHR0cHM6Ly93d3cucmVkZGl0LmNvbS9yL2xpZ2h0YXBpLykgfApbWW91dHViZSBDaGFubmVsXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDSENSTVdKVlh3OGlCN3pLeEY1NUJ5dykgfApbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2MubmV0d29ya250LmNvbS90b29sL2xpZ2h0LWNvZGVnZW4vKSB8CltDb250cmlidXRpb24gR3VpZGVdKGh0dHBzOi8vZG9jLm5ldHdvcmtudC5jb20vY29udHJpYnV0ZS8pIHwKClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL25ldHdvcmtudC9saWdodC1jb2RlZ2VuLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL25ldHdvcmtudC9saWdodC1jb2RlZ2VuKQoKVGhlIExpZ2h0IHBsYXRmb3JtIGNvbnRhaW5zIHNldmVyYWwgZnJhbWV3b3JrcyB0byBidWlsZCBkaWZmZXJlbnQgc3R5bGVzIG9mIEFQSXMgb3IgbWljcm9zZXJ2aWNlcyBiYXNlZCBvbiB0aGUgY29udHJhY3Qgc3BlY2lmaWNhdGlvbnMuIEl0IGVuY291cmFnZXMgdXNlcnMgdG8gY3JlYXRlIHNlcnZpY2UgY29udHJhY3Qgc3BlY2lmaWNhdGlvbiBiZWZvcmUgY29kaW5nLCBhbmQgaXQgd291bGQgYmUgbmljZSBpZiB3ZSBjYW4gc2NhZmZvbGQgYSBwcm9qZWN0IGJhc2VkIG9uIHRoZSBkZXNpZ25lZCBzcGVjaWZpY2F0aW9uLiBGdXJ0aGVyLCBpdCB3b3VsZCBiZSBldmVuIHN3ZWV0ZXIgaWYgd2UgY291bGQgdXRpbGl6ZSB0aGUgc3BlY2lmaWNhdGlvbiBkdXJpbmcgcnVudGltZSB0byB2ZXJpZnkgdGhlIHNlY3VyaXR5IGFuZCB2YWxpZGF0ZSBpbnB1dCByZXF1ZXN0L291dCByZXNwb25zZSBiYXNlZCBvbiB0aGUgc2FtZSBzcGVjaWZpY2F0aW9uLgoKQmVmb3JlIHdlIGJ1aWx0IG91ciBnZW5lcmF0b3IsIHdlIGxvb2tlZCBhdCB0aGUgb3Blbi1zb3VyY2UgY29tbXVuaXR5IGFuZCBjb3VsZG4ndCBmaW5kIGFueXRoaW5nIHN1aXRhYmxlIGZvciBvdXIgbmVlZHMuIFNvIHdlIGNyZWF0ZWQgb25lIG92ZXIgYSB3ZWVrZW5kLCBhbmQgaXQgdHVybmVkIG91dCB2ZXJ5IHN1Y2Nlc3NmdWwuIElmIHlvdSB3YW50IHRvIGtub3cgbW9yZSBhYm91dCBpdCwgcGxlYXNlIGNoZWNrIG91dCB0aGUgW2xpZ2h0LWNvZGVnZW4gZG9jdW1lbnRdKGh0dHBzOi8vZG9jLm5ldHdvcmtudC5jb20vdG9vbC9saWdodC1jb2RlZ2VuLykuCgpUaGUgZ2VuZXJhdG9yIGlzIHZlcnkgZWFzeSB0byB1c2UsIGFuZCB0aGVyZSBhcmUgbnVtZXJpYyB3YXlzIHRvIHVzZSBpdC4gQ29tbWFuZC1saW5lLCBEb2NrZXIsIFNjcmlwdGluZywgYW5kIFtXZWIgVUldKGh0dHBzOi8vY29kZWdlbi5saWdodGFwaS5uZXQpLiBUbyBnZXQgc3RhcnRlZCwgcGxlYXNlIGZvbGxvdyB0aGUgW2dldHRpbmctc3RhcnRlZF0oaHR0cHM6Ly9kb2MubmV0d29ya250LmNvbS9nZXR0aW5nLXN0YXJ0ZWQvbGlnaHQtY29kZWdlbi8pLgoKSWYgeW91IHdhbnQgdG8ga25vdyBhbGwgdGhlIG9wdGlvbnMgd2l0aCB0aGUgbGlnaHQtY29kZWdlbiwgeW91IGNhbiBmb2xsb3cgdGhlIHR1dG9yaWFscyBmb3IgZWFjaCBnZW5lcmF0b3IgYXQgW2xpZ2h0LWNvZGVnZW4gdHV0b3JpYWxdKGh0dHBzOi8vZG9jLm5ldHdvcmtudC5jb20vdHV0b3JpYWwvZ2VuZXJhdG9yLykuCgpBbHNvLCB0aGVyZSBhcmUgc28gbWFueSBbb3RoZXIgdHV0b3JpYWxzXShodHRwczovL2RvYy5uZXR3b3JrbnQuY29tL3R1dG9yaWFsLykgdGhhdCBhcmUgdXNpbmcgbGlnaHQtY29kZWdlbiB0byBzY2FmZm9sZCBwcm9qZWN0cywgYW5kIHRoZXNlIGNhbiBiZSBmb3VuZCBpbiB0aGUgdHV0b3JpYWwgc2VjdGlvbi4K readmeEtag: '"3e249f4adf8a02097ffe857091c3fd6de2561e9c"' readmeLastModified: Sat, 22 Jun 2024 15:21:05 GMT repositoryId: 89109684 description: >- A code generator based on rocker that can be used as an utility or web service created: '2017-04-23T01:25:59Z' updated: '2026-02-03T00:39:44Z' language: Java archived: false stars: 46 watchers: 20 forks: 24 owner: networknt logo: https://avatars.githubusercontent.com/u/8740739?v=4 license: Apache-2.0 repoEtag: '"f2aff630c0694ac423bf76b10371b4f6e4489be11da3cacc4a9f3de25ceaf7bc"' repoLastModified: Tue, 03 Feb 2026 00:39:44 GMT foundInMaster: true category: - Code Generators - Parsers id: d81400a71f884e180d82047ee75eafea - source: - openapi3 tags - openapi31 tags name: openapi-processor-spring category: Server language: Java link: https://docs.openapiprocessor.io/spring repository: https://github.com/openapi-processor/openapi-processor-spring source_description: >- Generates java interfaces & model classes for Spring Boot (annotation based, MVC & WebFlux) from an openapi.yaml. Provides type mapping capabilities to adjust the generated code. Gradle support. v2: false v3: true repositoryMetadata: base64Readme: >- WyFbXVtiYWRnZS1jaV1dW3dvcmtmbG93LWNpXQpbIVtdW3NvbmFyLXRlY2RlYnRdXVtzb25hcl0KWyFbXVtiYWRnZS1jZW50cmFsXV1bb2FwLWNlbnRyYWxdCgohW29wZW5hcGktcHJvY2Vzc29yLXNwcmluZyBsb2dvXShpbWFnZXMvb3BlbmFwaS1wcm9jZXNzb3Itc3ByaW5nQDEyODB4MjAwLnBuZykKCiMgb3BlbmFwaS1wcm9jZXNzb3Itc3ByaW5nCgphbiBbT3BlbkFQSV1bb3BlbmFwaV0gaW50ZXJmYWNlIG9ubHkgJiBtb2RlbCBqYXZhIGNvZGUgZ2VuZXJhdG9yIGZvciBbU3ByaW5nIEJvb3RdW3NwcmluZ2Jvb3RdLgogCgojIGRvY3VtZW50YXRpb24KClNlZSBbaGVyZV1bb2FwLWRvY3NdLgoKIyBzbmFwc2hvdCByZXBvc2l0b3J5Cgp0byB1c2Ugc25hcHNob3QgdmVyc2lvbnMgYWRkIGBodHRwczovL2NlbnRyYWwuc29uYXR5cGUuY29tL3JlcG9zaXRvcnkvbWF2ZW4tc25hcHNob3RzYCBhcyBtYXZlbiByZXBvc2l0b3J5IHRvIHlvdXIgYnVpbGQgZmlsZS4KCgpbb2FwLWNlbnRyYWxdOiBodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9aW8ub3BlbmFwaXByb2Nlc3NvcgpbYmFkZ2UtY2VudHJhbF06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tY2VudHJhbC92L2lvLm9wZW5hcGlwcm9jZXNzb3Ivb3BlbmFwaS1wcm9jZXNzb3Itc3ByaW5nP2xhYmVsPU1hdmVuJTIwQ2VudHJhbApbYmFkZ2UtbGljZW5zZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGljZW5zZS1BcGFjaGUlMjAyLjAtYmx1ZS5zdmc/bGFiZWxDb2xvcj0zMTNBNDIKW2JhZGdlLWNpXTogaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktcHJvY2Vzc29yL29wZW5hcGktcHJvY2Vzc29yLXNwcmluZy93b3JrZmxvd3MvYnVpbGQvYmFkZ2Uuc3ZnCltvYXAtbGljZW5zZV06IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLXByb2Nlc3Nvci9vcGVuYXBpLXByb2Nlc3Nvci1zcHJpbmcvYmxvYi9tYXN0ZXIvTElDRU5TRQpbd29ya2Zsb3ctY2ldOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1wcm9jZXNzb3Ivb3BlbmFwaS1wcm9jZXNzb3Itc3ByaW5nL2FjdGlvbnM/cXVlcnk9d29ya2Zsb3clM0FidWlsZApbc29uYXItY292ZXJhZ2VdOiBodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1vcGVuYXBpLXByb2Nlc3Nvcl9vcGVuYXBpLXByb2Nlc3Nvci1zcHJpbmcmbWV0cmljPWNvdmVyYWdlCltzb25hci10ZWNkZWJ0XTogaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9b3BlbmFwaS1wcm9jZXNzb3Jfb3BlbmFwaS1wcm9jZXNzb3Itc3ByaW5nJm1ldHJpYz1zcWFsZV9pbmRleApbc29uYXJdOiBodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPW9wZW5hcGktcHJvY2Vzc29yX29wZW5hcGktcHJvY2Vzc29yLXNwcmluZwpbb2FwLWRvY3NdOiBodHRwczovL2RvY3Mub3BlbmFwaXByb2Nlc3Nvci5pbwpbb3BlbmFwaV06IGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8KW3NwcmluZ2Jvb3RdOiBodHRwczovL3NwcmluZy5pby9wcm9qZWN0cy9zcHJpbmctYm9vdAo= readmeEtag: '"4a95bb31365ca4b7430f2bf90bf3458a3d98a74c"' readmeLastModified: Thu, 03 Jul 2025 06:41:44 GMT repositoryId: 196863956 description: >- an OpenAPI 3.2, 3.1 & 3.0 interface & model java code generator for Spring Boot created: '2019-07-14T17:16:49Z' updated: '2026-01-31T17:39:33Z' language: Kotlin archived: false stars: 49 watchers: 2 forks: 11 owner: openapi-processor logo: https://avatars.githubusercontent.com/u/66728774?v=4 license: Apache-2.0 repoEtag: '"7e68f50d41eeddf04804ea934b63300d6c8247ce2cec58da415abf3d02c357d4"' repoLastModified: Sat, 31 Jan 2026 17:39:33 GMT foundInMaster: true id: 544de493e48dbce482dd3fcfc87ad568 v3_1: true - source: openapi3 tags repository: https://github.com/oas-tools/oas-generator v3: true repositoryMetadata: base64Readme: >- PiAqKldhcm5pbmcqKgo+Cj4gVGhpcyBwYWNrYWdlIGlzIG5vdyBpbmNsdWRlZCBpbiBbT0FTIFRvb2xzIENMSV0oaHR0cHM6Ly9naXRodWIuY29tL29hcy10b29scy9vYXMtY2xpKS4gQ2hlY2sgdGhlIFtkb2NzXShodHRwczovL29hcy10b29scy5naXRodWIuaW8vZG9jcy9jbGkpIGZvciBtb3JlIGluZm8uCgojIG9hcy1nZW5lcmF0b3IKClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL2lzYS1ncm91cC9vYXMtZ2VuZXJhdG9yLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL2lzYS1ncm91cC9vYXMtZ2VuZXJhdG9yKQpbIVtkZXBlbmRlbmNpZXMgU3RhdHVzXShodHRwczovL2RhdmlkLWRtLm9yZy9pc2EtZ3JvdXAvb2FzLWdlbmVyYXRvci9zdGF0dXMuc3ZnKV0oaHR0cHM6Ly9kYXZpZC1kbS5vcmcvaXNhLWdyb3VwL29hcy1nZW5lcmF0b3IpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9pc2EtZ3JvdXAvb2FzLWdlbmVyYXRvci9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2ZyldKGh0dHBzOi8vY29kZWNvdi5pby9naC9pc2EtZ3JvdXAvb2FzLWdlbmVyYXRvcikKWyFbS25vd24gVnVsbmVyYWJpbGl0aWVzXShodHRwczovL3NueWsuaW8vdGVzdC9ucG0vb2FzLWdlbmVyYXRvci9iYWRnZS5zdmcpXShodHRwczovL3NueWsuaW8vdGVzdC9ucG0vb2FzLWdlbmVyYXRvcikKWyFbR3JlZW5rZWVwZXIgYmFkZ2VdKGh0dHBzOi8vYmFkZ2VzLmdyZWVua2VlcGVyLmlvL2lzYS1ncm91cC9vYXMtZ2VuZXJhdG9yLnN2ZyldKGh0dHBzOi8vZ3JlZW5rZWVwZXIuaW8vKQoKWyFbTlBNXShodHRwczovL25vZGVpLmNvL25wbS9vYXMtZ2VuZXJhdG9yLnBuZz9kb3dubG9hZHM9dHJ1ZSZkb3dubG9hZFJhbms9dHJ1ZSZzdGFycz10cnVlKV0oaHR0cHM6Ly9ub2RlaS5jby9ucG0vb2FzLWdlbmVyYXRvci8pCgpUaGlzIG1vZHVsZSBwcm92aWRlcyBOb2RlSlMgUkVTVGZ1bGwgQVBJcyBzY2FmZm9sZGluZyBiYXNlZCBPcGVuQVBJIDMueCBzcGVjcyB1c2luZyBbb2FzLXRvb2xzXShodHRwczovL2dpdGh1Yi5jb20vaXNhLWdyb3VwL29hcy10b29scykgYW5kIFtleHByZXNzXShodHRwczovL2dpdGh1Yi5jb20vZXhwcmVzc2pzL2V4cHJlc3MpLiBJdCBpcyBjb21wYXRpYmxlIHdpdGggc2VydmVycyBnZW5lcmF0ZWQgd2l0aCB0aGUgc3dhZ2dlci10b29sIHN1aXRlIHRvIGhlbHAgaW4gdGhlIHRyYW5zaXRpb24gZnJvbSBwcmUtZXhpc3Rpbmcgc2VydmVycyBiYXNlZCBvbiAyLnggc3BlY3MuCgpXZSBoYXZlIGEgMiBtaW4uIHR1dG9yaWFsOgoKPGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS9PWmh0b1hQMkdpNCIgYWx0PSJvYXMtZ2VuZXJhdG9yIGludHJvZHVjdGlvbiAodjIuMC42KSAtIENsaWNrIHRvIFdhdGNoISI+PGltZyBzcmM9Imh0dHBzOi8vaS5pbWd1ci5jb20vZmNxYVdDcS5qcGciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIzMDAiIGFsdD0ib2FzLWdlbmVyYXRvciBpbnRyb2R1Y3Rpb24gKHYyLjAuNikgLSBDbGljayB0byBXYXRjaCEiPjwvYT4KCgojIyAxXC4gSW5zdGFsbCBvYXMtZ2VuZXJhdG9yCgpgYGBiYXNoCm5wbSBpbnN0YWxsIG9hcy1nZW5lcmF0b3IgLWcKYGBgCgojIyAyXC4gVXNlIG9hcy1nZW5lcmF0b3IgY29tbWFuZAoKIyMjIDIuMVwuIEhlbHAKCmBgYGJhc2gKJCBvYXMtZ2VuZXJhdG9yIC0taGVscAoKVXNhZ2U6ICBvYXMtZ2VuZXJhdG9yIDxPQVMgdjMgZmlsZSBpbiBZQU1MIG9yIEpTT04+CgogIE9wdGlvbnM6CgogICAgLW4sIC0tcHJvamVjdE5hbWUgPHByb2plY3ROYW1lPiAgTmFtZSBmb3IgdGhlIGdlbmVyYXRlZCBmb2xkZXIKICAgIC16LCAtLWdlbmVyYXRlWmlwICAgICAgICAgICAgICAgIEluZGljYXRlIHdoZXRoZXIgdGhlIGdlbmVyYXRlZCBmb2xkZXIgbXVzdCBiZSBkZWxldGVkIGFmdGVyIGNvbXByZXNzaW9uCiAgICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgdXNhZ2UgaW5mb3JtYXRpb24KYGBgCgojIyMgMi4yIEV4YW1wbGVzCgpHZW5lcmF0ZSBhIE5vZGVKUyBwcm9qZWN0OiBUaGUgZm9sbG93aW5nIGNvbW1hbmQgd2lsIGNyZWF0ZSB0aGUgY29kZSBvZiBhIE5vZGVKUyBhcHBsaWNhdGlvbiBiYXNlZCBvbiB0aGUgT3BlbkFQSSBTcGVjIDMueCBgZG9ja2VyLWVuZ2luZS55YW1sYCBhbmQgcGxhY2UgaXRzIGNvZGUgaW4gYSBmb2xkZXIgYnkgdGhlIG5hbWUgYGdlbmVyYXRlZFNlcnZlcmAuCgpgYGBiYXNoCiQgb2FzLWdlbmVyYXRvciBzcGVjcy9kb2NrZXItZW5naW5lLnlhbWwgLW4gZ2VuZXJhdGVkU2VydmVyCmBgYAoKT25jZSB0aGUgZm9sZGVyIGlzIGNyZWF0ZWQgbG9jYXRlIGludG8gaXQuIEluc3RhbGwgZGVwZW5kZW5jaWVzIGFuZCBydW4gaXQgYnkgZG9pbmcgbnBtIHN0YXJ0OgoKYGBgYmFzaAokIGNkIGdlbmVyYXRlZFNlcnZlcgokIG5wbSBzdGFydApgYGAKCk5vdyB5b3VyIGFwcCBpcyBydW5uaW5nIG9uIHBvcnQgODA4MC4KWW91IGNhbiB0cnkgdGhlIHVybCBbaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YxLjMzL3ZvbHVtZXNdKGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC92MS4zMy92b2x1bWVzKQoKSW4gdGhlIGZvbGRlciBgY29udHJvbGxlcnNgIHRoZXJlIHdpbGwgYmUgYSBzZXQgb2YganMgZmlsZXMgd2l0aCB0aGUgdGVtcGxhdGVzIGZvciBlYWNoIG1ldGhvZCBzcGVjaWZpZWQgaW4gdGhlIHNwZWMgdGhhdCBzaG91bGQgYmUgY29tcGxldGVkIHRvIGhhdmUgYSBmdWxseSB3b3JraW5nIEFQSS4KCkhhcHB5IGNvZGluZyEgCgoKIyMgTGljZW5zZQoKQ29weXJpZ2h0IDIwMTgsIFtJU0EgR3JvdXBdKGh0dHA6Ly93d3cuaXNhLnVzLmVzKSwgW1VuaXZlcnNpdHkgb2YgU2V2aWxsYV0oaHR0cDovL3d3dy51cy5lcykKCkZvciB0ZWNobmljYWwgaW5xdWlyeSBwbGVhc2UgY29udGFjdCB0byBbZW5naW5lZXJpbmcgdGVhbV0oLi9leHRyYS90ZWFtLm1kKS4KClshW0lTQSBHcm91cF0oaHR0cDovL3d3dy5pc2EudXMuZXMvMi4wL2Fzc2V0cy9pbWcvdGhlbWUvbG9nbzIucG5nKV0oaHR0cDovL3d3dy5pc2EudXMuZXMpCgpMaWNlbnNlZCB1bmRlciB0aGUgKipBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAqKiAodGhlICJbTGljZW5zZV0oLi9MSUNFTlNFKSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCBhcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo= readmeEtag: '"21e0d301092f58c02c880708a88bd38cd13d9555"' readmeLastModified: Mon, 15 Aug 2022 00:25:20 GMT repositoryId: 134678864 description: >- NodeJS RESTful APIs scaffolding based OpenAPI 3.x specs using oas-tools and express. created: '2018-05-24T07:35:23Z' updated: '2025-08-27T12:16:51Z' language: JavaScript archived: true stars: 42 watchers: 7 forks: 4 owner: oas-tools logo: https://avatars.githubusercontent.com/u/97441539?v=4 license: Apache-2.0 repoEtag: '"3d9649d36eaa89ff9c5fc5171d565e1bd6383dd261bd90c590234f7e3c3e8630"' repoLastModified: Wed, 27 Aug 2025 12:16:51 GMT foundInMaster: true category: - Server - Parsers id: 18da66b6dce72c18901effa0c36ae85a oldLocations: - https://github.com/isa-group/oas-generator - source: openapi3 tags repository: https://github.com/hpoul/openapi_dart v3: true repositoryMetadata: base64Readme: >- IyBEYXJ0IE9wZW5BUEkgQ29kZSBHZW5lcmF0b3IKCkRhcnQgaW1wbGVtZW50YXRpb24gdG8gZ2VuZXJhdGUgKGRhcnQpIHNlcnZlcgpzdHVicyBhbmQgY2xpZW50IGxpYnJhcmllcy4KClNlZSBbcGFja2FnZXMvb3BlbmFwaV9jb2RlX2J1aWxkZXIvUkVBRE1FLm1kXShwYWNrYWdlcy9vcGVuYXBpX2NvZGVfYnVpbGRlci9SRUFETUUubWQpIGZvciBkZXRhaWxzLgo= readmeEtag: '"0b2f1170acd3a87d380fb9559d68595bf4ec8fba"' readmeLastModified: Sun, 26 May 2024 10:39:04 GMT repositoryId: 270302676 description: >- Dart implementation to generate (dart) server stubs and client libraries from OpenAPI 3.0 yaml files. created: '2020-06-07T12:41:17Z' updated: '2026-01-14T07:13:42Z' language: Dart archived: false stars: 42 watchers: 2 forks: 25 owner: hpoul logo: https://avatars.githubusercontent.com/u/313066?v=4 repoEtag: '"9541f5a241ec4cb3bf3208e69d5d839f0c7cae88b9308494c7c498f46cbba237"' repoLastModified: Wed, 14 Jan 2026 07:13:42 GMT foundInMaster: true category: Code Generators id: ced3cf309aea10ea14f4d94579214646 - source: openapi3 tags name: go-openapi homepage: https://github.com/nasa9084/go-openapi language: Go source_description: Golang struct model for OpenAPI 3.x. category: - Low-level Tooling - Parsers repository: https://github.com/nasa9084/go-openapi v3: true repositoryMetadata: base64Readme: >- T3BlbkFQSSBTcGVjaWZpY2F0aW9uIG9iamVjdCBtb2RlbAo9PT0KClshW0dvRG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL25hc2E5MDg0L2dvLW9wZW5hcGk/c3RhdHVzLnN2ZyldKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vbmFzYTkwODQvZ28tb3BlbmFwaSkKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvbmFzYTkwODQvZ28tb3BlbmFwaS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9uYXNhOTA4NC9nby1vcGVuYXBpKQpbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvbmFzYTkwODQvZ28tb3BlbmFwaS9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2ZyldKGh0dHBzOi8vY29kZWNvdi5pby9naC9uYXNhOTA4NC9nby1vcGVuYXBpKQoKLS0tCgoqKlRoaXMgcGFja2FnZSBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCwgc28gdGhlIEFQSSB3aWxsIGJlIGNoYW5nZWQgd2l0aG91dCBhbnkgbm90aWZpY2F0aW9uKioKCiMjIE92ZXJ2aWV3CgpUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIFtPcGVuQVBJIFNwZWNpZmljYXRpb24gMy4wXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgb2JqZWN0IG1vZGVsIHdpdGggc29tZSB1c2FibGUgZnVuY3Rpb25zLgoKIyMgU3lub3BzaXMKCmBgYCBnbwpwYWNrYWdlIG1haW4KCmltcG9ydCAoCiAgICAiZm10IgoKICAgICJnaXRodWIuY29tL25hc2E5MDg0L2dvLW9wZW5hcGkiCikKCmZ1bmMgbWFpbigpIHsKICAgIGRvYywgXyA6PSBvcGVuYXBpLkxvYWRGaWxlKCJwYXRoL3RvL3NwZWMiKQogICAgZm10LlByaW50KGRvYy5WZXJzaW9uKQp9CmBgYAoKIyMgU3RhdHVzCgoqIFt4XSBNb2RlbCBkZWZpbml0aW9uCiogW3hdIExvYWQgT3BlbkFQSSAzLjAgc3BlYyBmaWxlCiogWyBdIFJlc29sdmUgUmVmZXJlbmNlIG9iamVjdAogICogW3hdIFJlc29sdmUgIy9jb21wb25lbnQgcmVmZXJlbmNlCiAgKiBbIF0gUmVzb2x2ZSBvdGhlciBmaWxlIHJlZmVyZW5jZQoqIFsgXSBWYWxpZGF0aW9uCiAgKiBbeF0gVmFsaWRhdGUgc3BlYyB2YWx1ZXMKICAgICogWyBdIHRlc3QgZm9yIHZhbGlkYXRpb24KICAgICAgKiBbeF0gRG9jdW1lbnQKICAgICAgKiBbeF0gSW5mbwogICAgICAqIFt4XSBDb250YWN0CiAgICAgICogW3hdIExpY2Vuc2UKICAgICAgKiBbeF0gU2VydmVyCiAgICAgICogW3hdIFNlcnZlclZhcmlhYmxlCiAgICAgICogW3hdIFBhdGhzCiAgICAgICogW3hdIFBhdGhJdGVtCiAgICAgICogW3hdIE9wZXJhdGlvbgogICAgICAqIFt4XSBQYXJhbWV0ZXIKICAgICAgKiBbeF0gUmVxdWVzdEJvZHkKICAgICAgKiBbeF0gUmVzcG9uc2VzCiAgICAgICogW3hdIFJlc3BvbnNlCiAgICAgICogW3hdIENhbGxiYWNrcwogICAgICAqIFt4XSBDYWxsYmFjawogICAgICAqIFsgXSBTY2hlbWEKICAgICAgKiBbeF0gRXhhbXBsZQogICAgICAqIFsgXSBNZWRpYVR5cGUKICAgICAgKiBbIF0gSGVhZGVyCiAgICAgICogWyBdIExpbmsKICAgICAgKiBbIF0gRW5jb2RpbmcKICAgICAgKiBbeF0gRGlzY3JpbWluYXRvcgogICAgICAqIFt4XSBYTUwKICAgICAgKiBbeF0gQ29tcG9uZW50cwogICAgICAqIFt4XSBTZWN1cml0eVNjaGVtZQogICAgICAqIFt4XSBPQXV0aEZsb3dzCiAgICAgICogW3hdIE9BdXRoRmxvdwogICAgICAqIFsgXSBTZWN1cml0eVJlcXVpcmVtZW50CiAgICAgICogW3hdIFRhZwogICAgICAqIFt4XSBFeHRlcm5hbERvY3VtZW50YXRpb24KICAqIFsgXSBWYWxpZGF0ZSBIVFRQIFJlcXVlc3QKICAqIFsgXSBWYWxpZGF0ZSBIVFRQIFJlc3BvbnNlCg== readmeEtag: '"41aa7a6b31dade11ea34606947980743473497e8"' readmeLastModified: Wed, 19 Jun 2024 11:38:10 GMT repositoryId: 113154608 description: OpenAPI Specification (OAS) 3.0 implementation for Go created: '2017-12-05T08:30:55Z' updated: '2026-01-13T04:15:15Z' language: Go archived: false stars: 37 watchers: 1 forks: 3 owner: nasa9084 logo: https://avatars.githubusercontent.com/u/11725486?v=4 license: MIT repoEtag: '"6908356c7ee35f5998a048cfdc93b6d6f27509fc7edf9871ba32d1b0636a76c3"' repoLastModified: Tue, 13 Jan 2026 04:15:15 GMT foundInMaster: true id: 7b277653d8ebb25b494d8eda45d7b35e - source: openapi3 tags repository: https://github.com/quantmind/aio-openapi v3: true repositoryMetadata: base64Readme: >- IyBhaW8tb3BlbmFwaQoKWyFbUHlQSSB2ZXJzaW9uXShodHRwczovL2JhZGdlLmZ1cnkuaW8vcHkvYWlvLW9wZW5hcGkuc3ZnKV0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL3B5L2Fpby1vcGVuYXBpKQpbIVtQeXRob24gdmVyc2lvbnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL2Fpby1vcGVuYXBpLnN2ZyldKGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9haW8tb3BlbmFwaSkKWyFbQnVpbGRdKGh0dHBzOi8vZ2l0aHViLmNvbS9xdWFudG1pbmQvYWlvLW9wZW5hcGkvd29ya2Zsb3dzL2J1aWxkL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9xdWFudG1pbmQvYWlvLW9wZW5hcGkvYWN0aW9ucz9xdWVyeT13b3JrZmxvdyUzQWJ1aWxkKQpbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2l0aHViL3F1YW50bWluZC9haW8tb3BlbmFwaS9icmFuY2gvbWFpbi9ncmFwaC9iYWRnZS5zdmc/dG9rZW49WFYyR0Q5NDZRSSldKGh0dHBzOi8vY29kZWNvdi5pby9naXRodWIvcXVhbnRtaW5kL2Fpby1vcGVuYXBpKQpbIVtEb2N1bWVudGF0aW9uIFN0YXR1c10oaHR0cHM6Ly9yZWFkdGhlZG9jcy5vcmcvcHJvamVjdHMvYWlvLW9wZW5hcGkvYmFkZ2UvP3ZlcnNpb249bGF0ZXN0KV0oaHR0cHM6Ly9haW8tb3BlbmFwaS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvP2JhZGdlPWxhdGVzdCkKWyFbRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvZGQvYWlvLW9wZW5hcGkuc3ZnKV0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2Fpby1vcGVuYXBpLykKCkFzeW5jaHJvbm91cyB3ZWIgbWlkZGxld2FyZSBmb3IgW2Fpb2h0dHBdW10gYW5kIHNlcnZpbmcgUmVzdCBBUElzIHdpdGggW09wZW5BUEldW10gdiAzCnNwZWNpZmljYXRpb24gYW5kIHdpdGggb3B0aW9uYWwgW1Bvc3RncmVTcWxdW10gZGF0YWJhc2UgYmluZGluZ3MuCgpTZWUgdGhlIFt0dXRvcmlhbF0oaHR0cHM6Ly9haW8tb3BlbmFwaS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvdHV0b3JpYWwuaHRtbCkgZm9yIGEgcXVpY2sgaW50cm9kdWN0aW9uLgoKClthaW9odHRwXTogaHR0cHM6Ly9haW9odHRwLnJlYWR0aGVkb2NzLmlvL2VuL3N0YWJsZS8KW29wZW5hcGldOiBodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvCltwb3N0Z3Jlc3FsXTogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvCltzcWxhbGNoZW15XTogaHR0cHM6Ly93d3cuc3FsYWxjaGVteS5vcmcvCltjbGlja106IGh0dHBzOi8vZ2l0aHViLmNvbS9wYWxsZXRzL2NsaWNrClthbGVtYmljXTogaHR0cDovL2FsZW1iaWMuenp6Y29tcHV0aW5nLmNvbS9lbi9sYXRlc3QvClthc3luY3BnXTogaHR0cHM6Ly9naXRodWIuY29tL01hZ2ljU3RhY2svYXN5bmNwZwo= readmeEtag: '"47846cd96146992f3d69208b90bf08036431f616"' readmeLastModified: Thu, 31 Aug 2023 20:48:01 GMT repositoryId: 133532636 description: >- A python module for building OpenAPI compliant asynchronous Rest Servers. Auto documentation, serialization and validation in the same unified API. created: '2018-05-15T15:00:21Z' updated: '2024-11-23T06:34:06Z' language: Python archived: true stars: 37 watchers: 3 forks: 3 owner: quantmind logo: https://avatars.githubusercontent.com/u/144099?v=4 license: BSD-3-Clause repoEtag: '"b852b6459f3cfd98740779dc511dd6e6bbc6281593e3ea2cd403b080f7fac684"' repoLastModified: Sat, 23 Nov 2024 06:34:06 GMT foundInMaster: true category: Server Implementations id: feb4cad12aee75a89800812a52852fdc - source: openapi3 tags repository: https://github.com/apidevtools/openapi-schemas v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNwZWNpZmljYXRpb24gU2NoZW1hcwoKWyFbQ3Jvc3MtUGxhdGZvcm0gQ29tcGF0aWJpbGl0eV0oaHR0cHM6Ly9hcGl0b29scy5kZXYvaW1nL2JhZGdlcy9vcy1iYWRnZXMuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL0FQSURldlRvb2xzL29wZW5hcGktc2NoZW1hcy9hY3Rpb25zKQpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9BUElEZXZUb29scy9vcGVuYXBpLXNjaGVtYXMvd29ya2Zsb3dzL0NJLUNEL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9naXRodWIuY29tL0FQSURldlRvb2xzL29wZW5hcGktc2NoZW1hcy9hY3Rpb25zKQoKWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIvQVBJRGV2VG9vbHMvb3BlbmFwaS1zY2hlbWFzL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL0FQSURldlRvb2xzL29wZW5hcGktc2NoZW1hcykKWyFbRGVwZW5kZW5jaWVzXShodHRwczovL2RhdmlkLWRtLm9yZy9BUElEZXZUb29scy9vcGVuYXBpLXNjaGVtYXMuc3ZnKV0oaHR0cHM6Ly9kYXZpZC1kbS5vcmcvQVBJRGV2VG9vbHMvb3BlbmFwaS1zY2hlbWFzKQoKWyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0BhcGlkZXZ0b29scy9vcGVuYXBpLXNjaGVtYXMuc3ZnKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQGFwaWRldnRvb2xzL29wZW5hcGktc2NoZW1hcykKWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9AYXBpZGV2dG9vbHMvb3BlbmFwaS1zY2hlbWFzLnN2ZyldKExJQ0VOU0UpClshW0J1eSB1cyBhIHRyZWVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvVHJlZXdhcmUtJUYwJTlGJThDJUIzLWxpZ2h0Z3JlZW4pXShodHRwczovL3BsYW50LnRyZWV3YXJlLmVhcnRoL0FQSURldlRvb2xzL29wZW5hcGktc2NoZW1hcykKCgoKVGhpcyBwYWNrYWdlIGNvbnRhaW5zIFsqKnRoZSBvZmZpY2lhbCBKU09OIFNjaGVtYXMqKl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vdHJlZS9tYXN0ZXIvc2NoZW1hcykgZm9yIGV2ZXJ5IHZlcnNpb24gb2YgU3dhZ2dlci9PcGVuQVBJIFNwZWNpZmljYXRpb246Cgp8IFZlcnNpb24gfCBTY2hlbWEgfCBEb2NzCnwtLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLQp8IFN3YWdnZXIgMS4yICAgfCBbdjEuMiBzY2hlbWFdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL3RyZWUvbWFzdGVyL3NjaGVtYXMvdjEuMikgICAgICAgICAgICAgICB8IFt2MS4yIGRvY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzEuMi5tZCkKfCBTd2FnZ2VyIDIuMCAgIHwgW3YyLjAgc2NoZW1hXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci9zY2hlbWFzL3YyLjAvc2NoZW1hLmpzb24pICAgfCBbdjIuMCBkb2NzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8yLjAubWQpCnwgT3BlbkFQSSAzLjAueCB8IFt2My4wLnggc2NoZW1hXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci9zY2hlbWFzL3YzLjAvc2NoZW1hLmpzb24pIHwgW3YzLjAuMyBkb2NzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMy5tZCkKfCBPcGVuQVBJIDMuMS54IHwgW3YzLjEueCBzY2hlbWFdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3NjaGVtYXMvdjMuMS9zY2hlbWEuanNvbikgfCBbdjMuMS4wIGRvY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMS4wLm1kKQoKCkFsbCBzY2hlbWFzIGFyZSBrZXB0IHVwLXRvLWRhdGUgd2l0aCB0aGUgbGF0ZXN0IG9mZmljaWFsIGRlZmluaXRpb25zIHZpYSBhbiBhdXRvbWF0ZWQgQ0kvQ0Qgam9iLiDwn6SW8J+TpgoKCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KWW91IGNhbiBpbnN0YWxsIE9wZW5BUEkgU2NoZW1hcyB2aWEgW25wbV0oaHR0cHM6Ly9kb2NzLm5wbWpzLmNvbS9hYm91dC1ucG0vKS4KCmBgYGJhc2gKbnBtIGluc3RhbGwgQGFwaWRldnRvb2xzL29wZW5hcGktc2NoZW1hcwpgYGAKCgoKVXNhZ2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZSBkZWZhdWx0IGV4cG9ydCBjb250YWlucyBhbGwgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIHZlcnNpb25zOgoKYGBgamF2YXNjcmlwdApjb25zdCBvcGVuYXBpID0gcmVxdWlyZSgiQGFwaWRldnRvb2xzL29wZW5hcGktc2NoZW1hcyIpOwoKY29uc29sZS5sb2cob3BlbmFwaS52MSk7ICAgIC8vIHsgJHNjaGVtYSwgaWQsIHByb3BlcnRpZXMsIGRlZmluaXRpb25zLCAuLi4gfQpjb25zb2xlLmxvZyhvcGVuYXBpLnYyKTsgICAgLy8geyAkc2NoZW1hLCBpZCwgcHJvcGVydGllcywgZGVmaW5pdGlvbnMsIC4uLiB9CmNvbnNvbGUubG9nKG9wZW5hcGkudjMpOyAgICAvLyB7ICRzY2hlbWEsIGlkLCBwcm9wZXJ0aWVzLCBkZWZpbml0aW9ucywgLi4uIH0KY29uc29sZS5sb2cob3BlbmFwaS52MzEpOyAgICAvLyB7ICRzY2hlbWEsIGlkLCBwcm9wZXJ0aWVzLCBkZWZpbml0aW9ucywgLi4uIH0KYGBgCgpPciB5b3UgY2FuIGltcG9ydCB0aGUgc3BlY2lmaWMgdmVyc2lvbihzKSB0aGF0IHlvdSBuZWVkOgoKYGBgamF2YXNjcmlwdApjb25zdCB7IG9wZW5hcGlWMSwgb3BlbmFwaVYyLCBvcGVuYXBpVjMsIG9wZW5hcGlWMzEgfSA9IHJlcXVpcmUoIkBhcGlkZXZ0b29scy9vcGVuYXBpLXNjaGVtYXMiKTsKCmNvbnNvbGUubG9nKG9wZW5hcGlWMSk7ICAgIC8vIHsgJHNjaGVtYSwgaWQsIHByb3BlcnRpZXMsIGRlZmluaXRpb25zLCAuLi4gfQpjb25zb2xlLmxvZyhvcGVuYXBpVjIpOyAgICAvLyB7ICRzY2hlbWEsIGlkLCBwcm9wZXJ0aWVzLCBkZWZpbml0aW9ucywgLi4uIH0KY29uc29sZS5sb2cob3BlbmFwaVYzKTsgICAgLy8geyAkc2NoZW1hLCBpZCwgcHJvcGVydGllcywgZGVmaW5pdGlvbnMsIC4uLiB9CmNvbnNvbGUubG9nKG9wZW5hcGlWMzEpOyAgICAvLyB7ICRzY2hlbWEsIGlkLCBwcm9wZXJ0aWVzLCBkZWZpbml0aW9ucywgLi4uIH0KYGBgCgpZb3UgY2FuIHVzZSBhIEpTT04gU2NoZW1hIHZhbGlkYXRvciBzdWNoIGFzIFtaLVNjaGVtYV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvei1zY2hlbWEpIG9yIFtBSlZdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2FqdikgdG8gdmFsaWRhdGUgT3BlbkFQSSBkZWZpbml0aW9ucyBhZ2FpbnN0IHRoZSBzcGVjaWZpY2F0aW9uLgoKYGBgamF2YXNjcmlwdApjb25zdCB7IG9wZW5hcGlWMzEgfSA9IHJlcXVpcmUoIkBhcGlkZXZ0b29scy9vcGVuYXBpLXNjaGVtYXMiKTsKY29uc3QgWlNjaGVtYSA9IHJlcXVpcmUoInotc2NoZW1hIik7CgovLyBDcmVhdGUgYSBaU2NoZW1hIHZhbGlkYXRvcgpsZXQgdmFsaWRhdG9yID0gbmV3IFpTY2hlbWEoKTsKCi8vIFZhbGlkYXRlIGFuIE9wZW5BUEkgZGVmaW5pdGlvbiBhZ2FpbnN0IHRoZSBPcGVuQVBJIHYzLjAgc3BlY2lmaWNhdGlvbgp2YWxpZGF0b3IudmFsaWRhdGUob3BlbmFwaURlZmluaXRpb24sIG9wZW5hcGlWMzEpOwpgYGAKCgoKQ29udHJpYnV0aW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkNvbnRyaWJ1dGlvbnMsIGVuaGFuY2VtZW50cywgYW5kIGJ1Zy1maXhlcyBhcmUgd2VsY29tZSEgIFtPcGVuIGFuIGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20vQVBJRGV2VG9vbHMvb3BlbmFwaS1zY2hlbWFzL2lzc3Vlcykgb24gR2l0SHViIGFuZCBbc3VibWl0IGEgcHVsbCByZXF1ZXN0XShodHRwczovL2dpdGh1Yi5jb20vQVBJRGV2VG9vbHMvb3BlbmFwaS1zY2hlbWFzL3B1bGxzKS4KCiMjIyMgQnVpbGRpbmcKVG8gYnVpbGQgdGhlIHByb2plY3QgbG9jYWxseSBvbiB5b3VyIGNvbXB1dGVyOgoKMS4gX19DbG9uZSB0aGlzIHJlcG9fXzxicj4KYGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vQVBJRGV2VG9vbHMvb3BlbmFwaS1zY2hlbWFzLmdpdGAKCjIuIF9fSW5zdGFsbCBkZXBlbmRlbmNpZXNfXzxicj4KYG5wbSBpbnN0YWxsYAoKMy4gX19CdWlsZCB0aGUgY29kZV9fPGJyPgpgbnBtIHJ1biBidWlsZGAKCjQuIF9fUnVuIHRoZSB0ZXN0c19fPGJyPgpgbnBtIHRlc3RgCgoKCkxpY2Vuc2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KT3BlbkFQSSBTY2hlbWFzIGlzIDEwMCUgZnJlZSBhbmQgb3Blbi1zb3VyY2UsIHVuZGVyIHRoZSBbTUlUIGxpY2Vuc2VdKExJQ0VOU0UpLiBVc2UgaXQgaG93ZXZlciB5b3Ugd2FudC4KClRoaXMgcGFja2FnZSBpcyBbVHJlZXdhcmVdKGh0dHA6Ly90cmVld2FyZS5lYXJ0aCkuIElmIHlvdSB1c2UgaXQgaW4gcHJvZHVjdGlvbiwgdGhlbiB3ZSBhc2sgdGhhdCB5b3UgWyoqYnV5IHRoZSB3b3JsZCBhIHRyZWUqKl0oaHR0cHM6Ly9wbGFudC50cmVld2FyZS5lYXJ0aC9BUElEZXZUb29scy9vcGVuYXBpLXNjaGVtYXMpIHRvIHRoYW5rIHVzIGZvciBvdXIgd29yay4gQnkgY29udHJpYnV0aW5nIHRvIHRoZSBUcmVld2FyZSBmb3Jlc3QgeW914oCZbGwgYmUgY3JlYXRpbmcgZW1wbG95bWVudCBmb3IgbG9jYWwgZmFtaWxpZXMgYW5kIHJlc3RvcmluZyB3aWxkbGlmZSBoYWJpdGF0cy4KCgoKQmlnIFRoYW5rcyBUbwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUaGFua3MgdG8gdGhlc2UgYXdlc29tZSBjb21wYW5pZXMgZm9yIHRoZWlyIHN1cHBvcnQgb2YgT3BlbiBTb3VyY2UgZGV2ZWxvcGVycyDinaQKClshW0dpdEh1Yl0oaHR0cHM6Ly9hcGl0b29scy5kZXYvaW1nL2JhZGdlcy9naXRodWIuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW4tc291cmNlKQpbIVtOUE1dKGh0dHBzOi8vYXBpdG9vbHMuZGV2L2ltZy9iYWRnZXMvbnBtLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS8pClshW0NvdmVyYWxsc10oaHR0cHM6Ly9hcGl0b29scy5kZXYvaW1nL2JhZGdlcy9jb3ZlcmFsbHMuc3ZnKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8pClshW1RyYXZpcyBDSV0oaHR0cHM6Ly9hcGl0b29scy5kZXYvaW1nL2JhZGdlcy90cmF2aXMtY2kuc3ZnKV0oaHR0cHM6Ly90cmF2aXMtY2kuY29tKQpbIVtTYXVjZUxhYnNdKGh0dHBzOi8vYXBpdG9vbHMuZGV2L2ltZy9iYWRnZXMvc2F1Y2UtbGFicy5zdmcpXShodHRwczovL3NhdWNlbGFicy5jb20pCg== readmeEtag: '"630689d883f00bf566fa29ef5b93e65f2cdee68c"' readmeLastModified: Sat, 01 May 2021 15:44:27 GMT repositoryId: 193236806 description: JSON Schemas for every version of the OpenAPI Specification created: '2019-06-22T13:26:54Z' updated: '2025-11-01T05:42:28Z' language: JavaScript archived: false stars: 45 watchers: 2 forks: 2 owner: APIDevTools logo: https://avatars.githubusercontent.com/u/43750074?v=4 license: MIT repoEtag: '"0c0a5efeeed8cbf96bf38b01ebfd7a2e94aa00ecf1d8ce6db99a8a77b862427c"' repoLastModified: Sat, 01 Nov 2025 05:42:28 GMT foundInMaster: true category: Parsers id: 1dbb49e9733b078e9e04a157e4d9dc56 - source: openapi3 tags repository: https://github.com/vymalo/keycloak-webhook v3: true id: ed4d4928e6bf8f5d23dd3eeccc015ab0 repositoryMetadata: base64Readme: >- IyBLZXljbG9hayBXZWJob29rIFBsdWdpbgoKQSBtb2R1bGFyIEtleWNsb2FrIGV2ZW50IGxpc3RlbmVyIHBsdWdpbiB0aGF0IHRyaWdnZXJzIHdlYmhvb2tzIHdoZW5ldmVyIHNwZWNpZmljIGV2ZW50cyAobGlrZSBsb2dpbiwgcmVnaXN0cmF0aW9uLCBvcgpsb2dvdXQpIG9jY3VyIGluIEtleWNsb2FrLiBUaGlzIHByb2plY3QgbGV2ZXJhZ2VzIGEgbXVsdGktbW9kdWxlIGRlc2lnbiBzbyB5b3UgY2FuIGNob29zZSB3aGljaCB0cmFuc3BvcnQgcHJvdmlkZXIgKApIVFRQLApBTVFQLCBvciBTeXNsb2cpIHRvIGRlcGxveSBiYXNlZCBvbiB5b3VyIG5lZWRzLgoKfCBLZXljbG9hayBWZXJzaW9uIHwgUGx1Z2luIFZlcnNpb24gfAp8LS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS18CnwgMjEgICAgICAgICAgICAgICB8IOKchSAwLjEwLjAtcmMuMSAgfAp8IDIyICAgICAgICAgICAgICAgfCDinIUgMC4xMC4wLXJjLjEgIHwKfCAyMyAgICAgICAgICAgICAgIHwg4pyFIDAuMTAuMC1yYy4xICB8CnwgMjQgICAgICAgICAgICAgICB8IOKchSAwLjEwLjAtcmMuMSAgfAp8IDI1ICAgICAgICAgICAgICAgfCDinIUgMC4xMC4wLXJjLjEgIHwKfCAyNiAgICAgICAgICAgICAgIHwg4pyFIDAuMTAuMC1yYy4xICB8CgotLS0KCiMjIDEuIFdoYXQgSXQgSXMKClRoZSBLZXljbG9hayBXZWJob29rIFBsdWdpbiBjb25zaXN0cyBvZiBmb3VyIG1vZHVsZXM6CgotICoqQ29yZSBNb2R1bGUgKGBrZXljbG9hay13ZWJob29rLXByb3ZpZGVyLWNvcmVgKSoqICAKICBDb250YWlucyBjb21tb24gU1BJIGludGVyZmFjZXMsIHNoYXJlZCBtb2RlbHMsIGFuZCBoZWxwZXIgdXRpbGl0aWVzLgoKLSAqKkFNUVAgUHJvdmlkZXIgKGBrZXljbG9hay13ZWJob29rLXByb3ZpZGVyLWFtcXBgKSoqICAKICBJbXBsZW1lbnRzIHdlYmhvb2sgbm90aWZpY2F0aW9ucyBvdmVyIEFNUVAgKGUuZy4sIFJhYmJpdE1RKS4gSWYgdGhlIEFNUVAgZGVwZW5kZW5jeSBpcyBwcmVzZW50IG9uIHRoZSBjbGFzc3BhdGgsIHRoaXMKICBwcm92aWRlciBpcyBsb2FkZWQgYXV0b21hdGljYWxseS4KCi0gKipIVFRQIFByb3ZpZGVyIChga2V5Y2xvYWstd2ViaG9vay1wcm92aWRlci1odHRwYCkqKiAgCiAgSW1wbGVtZW50cyB3ZWJob29rIG5vdGlmaWNhdGlvbnMgb3ZlciBIVFRQLiBUaGlzIHByb3ZpZGVyIHVzZXMgT3BlbkFQSS1nZW5lcmF0ZWQgY2xpZW50cyB0byBlbnN1cmUgY29tcGxpYW5jZSB3aXRoIHRoZQogIHRhcmdldCBBUEkuCgotICoqU3lzbG9nIFByb3ZpZGVyIChga2V5Y2xvYWstd2ViaG9vay1wcm92aWRlci1zeXNsb2dgKSoqICAKICBJbXBsZW1lbnRzIHdlYmhvb2sgbm90aWZpY2F0aW9ucyBvdmVyIFN5c2xvZyAoVENQL1VEUCkuIFN1cHBvcnRzIFJGQyAzMTY0IGFuZCBSRkMgNTQyNCBtZXNzYWdlIGZvcm1hdHMuCgpLZXljbG9hayB1c2VzIEphdmEncyBgU2VydmljZUxvYWRlcmAgbWVjaGFuaXNtIHRvIGNvbmRpdGlvbmFsbHkgbG9hZCB0aGVzZSBwcm92aWRlcnMgYXQgcnVudGltZSBpZiB0aGVpciBKQVJzIChhbmQKZGVwZW5kZW5jaWVzKSBhcmUgYXZhaWxhYmxlLgoKLS0tCgojIyAyLiBIb3cgdG8gVXNlIEl0CgojIyMgRG93bmxvYWRpbmcgdGhlIFBsdWdpbnMKCkRvd25sb2FkIHRoZSBsYXRlc3QgcmVsZWFzZSBhcnRpZmFjdHMgKHNoYWRlZCBKQVJzKSBmcm9tIHRoZSBHaXRIdWIgcmVsZWFzZXMgcGFnZS4gRm9yIGV4YW1wbGUsIHVzaW5nIGBjdXJsYDoKCmBgYGJhc2gKIyBSZXBsYWNlIDx2ZXJzaW9uPiB3aXRoIHRoZSBkZXNpcmVkIHJlbGVhc2UgdmVyc2lvbi4KClZFUlNJT049PHZlcnNpb24+OyBjdXJsIC1MIC1vIGtleWNsb2FrLXdlYmhvb2stcHJvdmlkZXItY29yZS5qYXIgaHR0cHM6Ly9naXRodWIuY29tL3Z5bWFsby9rZXljbG9hay13ZWJob29rL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1ZFUlNJT059L2tleWNsb2FrLXdlYmhvb2stcHJvdmlkZXItY29yZS0ke1ZFUlNJT059LWFsbC5qYXI7IFwKY3VybCAtTCAtbyBrZXljbG9hay13ZWJob29rLXByb3ZpZGVyLWFtcXAuamFyIGh0dHBzOi8vZ2l0aHViLmNvbS92eW1hbG8va2V5Y2xvYWstd2ViaG9vay9yZWxlYXNlcy9kb3dubG9hZC92JHtWRVJTSU9OfS9rZXljbG9hay13ZWJob29rLXByb3ZpZGVyLWFtcXAtJHtWRVJTSU9OfS1hbGwuamFyOyBcCmN1cmwgLUwgLW8ga2V5Y2xvYWstd2ViaG9vay1wcm92aWRlci1odHRwLmphciBodHRwczovL2dpdGh1Yi5jb20vdnltYWxvL2tleWNsb2FrLXdlYmhvb2svcmVsZWFzZXMvZG93bmxvYWQvdiR7VkVSU0lPTn0va2V5Y2xvYWstd2ViaG9vay1wcm92aWRlci1odHRwLSR7VkVSU0lPTn0tYWxsLmphcjsgXApjdXJsIC1MIC1vIGtleWNsb2FrLXdlYmhvb2stcHJvdmlkZXItc3lzbG9nLmphciBodHRwczovL2dpdGh1Yi5jb20vdnltYWxvL2tleWNsb2FrLXdlYmhvb2svcmVsZWFzZXMvZG93bmxvYWQvdiR7VkVSU0lPTn0va2V5Y2xvYWstd2ViaG9vay1wcm92aWRlci1zeXNsb2ctJHtWRVJTSU9OfS1hbGwuamFyOyBcCmBgYAoKIyMjIGEuIERvY2tlcgoKV2hlbiBydW5uaW5nIEtleWNsb2FrIGluIERvY2tlciwgbW91bnQgdGhlIGRvd25sb2FkZWQgSkFScyBpbnRvIEtleWNsb2FrJ3MgcHJvdmlkZXJzIGRpcmVjdG9yeS4gRm9yIGV4YW1wbGUsIGluIHlvdXIKYGRvY2tlci1jb21wb3NlLnlhbWxgOgoKYGBgeWFtbApzZXJ2aWNlczoKICBrZXljbG9hazoKICAgIGltYWdlOiBxdWF5LmlvL2tleWNsb2FrL2tleWNsb2FrOjI2LjQuMAogICAgcG9ydHM6CiAgICAgIC0gIjkxMDA6OTEwMCIKICAgIGVudmlyb25tZW50OgogICAgICAjIEhUVFAgUHJvdmlkZXIgQ29uZmlndXJhdGlvbgogICAgICBXRUJIT09LX0hUVFBfQkFTRV9QQVRIOiAiaHR0cDovL3ByaXNtOjQwMTAiCiAgICAgIFdFQkhPT0tfSFRUUF9BVVRIX1VTRVJOQU1FOiAiYWRtaW4iCiAgICAgIFdFQkhPT0tfSFRUUF9BVVRIX1BBU1NXT1JEOiAicGFzc3dvcmQiCiAgICAgICMgQU1RUCBQcm92aWRlciBDb25maWd1cmF0aW9uCiAgICAgIFdFQkhPT0tfQU1RUF9IT1NUOiByYWJiaXRtcQogICAgICBXRUJIT09LX0FNUVBfVVNFUk5BTUU6IHVzZXJuYW1lCiAgICAgIFdFQkhPT0tfQU1RUF9QQVNTV09SRDogcGFzc3dvcmQKICAgICAgV0VCSE9PS19BTVFQX1BPUlQ6IDU2NzIKICAgICAgV0VCSE9PS19BTVFQX1ZIT1NUOiAiLyIKICAgICAgV0VCSE9PS19BTVFQX0VYQ0hBTkdFOiBrZXljbG9hawogICAgICBXRUJIT09LX0FNUVBfU1NMOiAibm8iCiAgICAgICMgU3lzbG9nIFByb3ZpZGVyIENvbmZpZ3VyYXRpb24KICAgICAgV0VCSE9PS19TWVNMT0dfUFJPVE9DT0w6IHVkcAogICAgICBXRUJIT09LX1NZU0xPR19IT1NUTkFNRToga2V5Y2xvYWsKICAgICAgV0VCSE9PS19TWVNMT0dfQVBQX05BTUU6IEtleWNsb2FrCiAgICAgIFdFQkhPT0tfU1lTTE9HX0ZBQ0lMSVRZOiBVU0VSCiAgICAgIFdFQkhPT0tfU1lTTE9HX1NFVkVSSVRZOiBJTkZPUk1BVElPTkFMCiAgICAgIFdFQkhPT0tfU1lTTE9HX1NFUlZFUl9IT1NUTkFNRTogc3lzbG9nLW5nCiAgICAgIFdFQkhPT0tfU1lTTE9HX1NFUlZFUl9QT1JUOiA1NTE0CiAgICAgIFdFQkhPT0tfU1lTTE9HX01FU1NBR0VfRk9STUFUOiBSRkNfNTQyNQogICAgICAjIEtleWNsb2FrIEFkbWluIENyZWRlbnRpYWxzCiAgICAgIEtFWUNMT0FLX0FETUlOOiBhZG1pbgogICAgICBLRVlDTE9BS19BRE1JTl9QQVNTV09SRDogcGFzc3dvcmQKICAgICAgS0NfSFRUUF9QT1JUOiA5MTAwCiAgICAgIEtDX01FVFJJQ1NfRU5BQkxFRDogInRydWUiCiAgICAgIEtDX0xPR19DT05TT0xFX0NPTE9SOiAidHJ1ZSIKICAgICAgS0NfSEVBTFRIX0VOQUJMRUQ6ICJ0cnVlIgogICAgZW50cnlwb2ludDogL2Jpbi9zaAogICAgY29tbWFuZDoKICAgICAgLSAtYwogICAgICAtIHwKICAgICAgICBzZXQgLWV4CiAgICAgICAgIyBDb3B5IGFsbCBwbHVnaW4gSkFScyBmcm9tIHRoZSBtb3VudGVkIHZvbHVtZSBpbnRvIEtleWNsb2FrJ3MgcHJvdmlkZXJzIGZvbGRlcgogICAgICAgIGNwIC90bXAvcGx1Z2lucy8qLmphciAvb3B0L2tleWNsb2FrL3Byb3ZpZGVycwogICAgICAgIC9vcHQva2V5Y2xvYWsvYmluL2tjLnNoIHN0YXJ0LWRldiAtLWltcG9ydC1yZWFsbQogICAgdm9sdW1lczoKICAgICAgLSAuL3BsdWdpbnM6L3RtcC9wbHVnaW5zOnJvICMgUGxhY2UgeW91ciBkb3dubG9hZGVkIEpBUnMgaW4gdGhpcyBmb2xkZXIKICAgICAgLSAuLy5kb2NrZXIva2V5Y2xvYWstY29uZmlnLzovb3B0L2tleWNsb2FrL2RhdGEvaW1wb3J0LzpybwpgYGAKCiMjIyBiLiBLdWJlcm5ldGVzCgpJbiBLdWJlcm5ldGVzLCB5b3UgY2FuIHVzZSBhbiBpbml0IGNvbnRhaW5lciB0byBkb3dubG9hZCB0aGUgcGx1Z2luIEpBUnMgZnJvbSBHaXRIdWIgYXJ0aWZhY3RzIGFuZCBjb3B5IHRoZW0gaW50bwpLZXljbG9haydzIHByb3ZpZGVycyBmb2xkZXIuIEZvciBleGFtcGxlOgoKYGBgeWFtbAphcGlWZXJzaW9uOiBhcHBzL3YxCmtpbmQ6IERlcGxveW1lbnQKbWV0YWRhdGE6CiAgbmFtZToga2V5Y2xvYWsKc3BlYzoKICByZXBsaWNhczogMQogIHNlbGVjdG9yOgogICAgbWF0Y2hMYWJlbHM6CiAgICAgIGFwcDoga2V5Y2xvYWsKICB0ZW1wbGF0ZToKICAgIG1ldGFkYXRhOgogICAgICBsYWJlbHM6CiAgICAgICAgYXBwOiBrZXljbG9hawogICAgc3BlYzoKICAgICAgdm9sdW1lczoKICAgICAgICAtIG5hbWU6IHByb3ZpZGVycy12b2x1bWUKICAgICAgICAgIGVtcHR5RGlyOiB7IH0KICAgICAgaW5pdENvbnRhaW5lcnM6CiAgICAgICAgLSBuYW1lOiBkb3dubG9hZC1wbHVnaW5zCiAgICAgICAgICBpbWFnZTogY3VybGltYWdlcy9jdXJsOjguMS4yCiAgICAgICAgICBjb21tYW5kOgogICAgICAgICAgICAtIHNoCiAgICAgICAgICAgIC0gLWMKICAgICAgICAgICAgLSB8CiAgICAgICAgICAgICAgbWtkaXIgLXAgL3BsdWdpbnMKICAgICAgICAgICAgICAjIERvd25sb2FkIHRoZSBwbHVnaW5zIGZyb20gR2l0SHViIHJlbGVhc2VzICh1cGRhdGUgdGhlIFVSTHMgYWNjb3JkaW5nbHkpCiAgICAgICAgICAgICAgY3VybCAtTCAtbyAvcGx1Z2lucy9rZXljbG9hay13ZWJob29rLXByb3ZpZGVyLWNvcmUuamFyIGh0dHBzOi8vZ2l0aHViLmNvbS92eW1hbG8va2V5Y2xvYWstd2ViaG9vay9yZWxlYXNlcy9kb3dubG9hZC92PHZlcnNpb24+L2tleWNsb2FrLXdlYmhvb2stcHJvdmlkZXItY29yZS08dmVyc2lvbj4tYWxsLmphcgogICAgICAgICAgICAgIGN1cmwgLUwgLW8gL3BsdWdpbnMva2V5Y2xvYWstd2ViaG9vay1wcm92aWRlci1hbXFwLmphciBodHRwczovL2dpdGh1Yi5jb20vdnltYWxvL2tleWNsb2FrLXdlYmhvb2svcmVsZWFzZXMvZG93bmxvYWQvdjx2ZXJzaW9uPi9rZXljbG9hay13ZWJob29rLXByb3ZpZGVyLWFtcXAtPHZlcnNpb24+LWFsbC5qYXIKICAgICAgICAgICAgICBjdXJsIC1MIC1vIC9wbHVnaW5zL2tleWNsb2FrLXdlYmhvb2stcHJvdmlkZXItaHR0cC5qYXIgaHR0cHM6Ly9naXRodWIuY29tL3Z5bWFsby9rZXljbG9hay13ZWJob29rL3JlbGVhc2VzL2Rvd25sb2FkL3Y8dmVyc2lvbj4va2V5Y2xvYWstd2ViaG9vay1wcm92aWRlci1odHRwLTx2ZXJzaW9uPi1hbGwuamFyCiAgICAgICAgICAgICAgY3VybCAtTCAtbyAvcGx1Z2lucy9rZXljbG9hay13ZWJob29rLXByb3ZpZGVyLXN5c2xvZy5qYXIgaHR0cHM6Ly9naXRodWIuY29tL3Z5bWFsby9rZXljbG9hay13ZWJob29rL3JlbGVhc2VzL2Rvd25sb2FkL3Y8dmVyc2lvbj4va2V5Y2xvYWstd2ViaG9vay1wcm92aWRlci1zeXNsb2ctPHZlcnNpb24+LWFsbC5qYXIKICAgICAgICAgICAgICBjcCAvcGx1Z2lucy8qLmphciAvcHJvdmlkZXJzLwogICAgICAgICAgdm9sdW1lTW91bnRzOgogICAgICAgICAgICAtIG5hbWU6IHByb3ZpZGVycy12b2x1bWUKICAgICAgICAgICAgICBtb3VudFBhdGg6IC9wcm92aWRlcnMKICAgICAgY29udGFpbmVyczoKICAgICAgICAtIG5hbWU6IGtleWNsb2FrCiAgICAgICAgICBpbWFnZTogcXVheS5pby9rZXljbG9hay9rZXljbG9hazoyNi40LjAKICAgICAgICAgIGVudjoKICAgICAgICAgICAgLSBuYW1lOiBXRUJIT09LX0hUVFBfQkFTRV9QQVRICiAgICAgICAgICAgICAgdmFsdWU6ICJodHRwOi8vcHJpc206NDAxMCIKICAgICAgICAgICAgLSBuYW1lOiBXRUJIT09LX0hUVFBfQVVUSF9VU0VSTkFNRQogICAgICAgICAgICAgIHZhbHVlOiAiYWRtaW4iCiAgICAgICAgICAgIC0gbmFtZTogV0VCSE9PS19IVFRQX0FVVEhfUEFTU1dPUkQKICAgICAgICAgICAgICB2YWx1ZTogInBhc3N3b3JkIgogICAgICAgICAgICAtIG5hbWU6IFdFQkhPT0tfQU1RUF9IT1NUCiAgICAgICAgICAgICAgdmFsdWU6ICJyYWJiaXRtcSIKICAgICAgICAgICAgLSBuYW1lOiBXRUJIT09LX0FNUVBfVVNFUk5BTUUKICAgICAgICAgICAgICB2YWx1ZTogInVzZXJuYW1lIgogICAgICAgICAgICAtIG5hbWU6IFdFQkhPT0tfQU1RUF9QQVNTV09SRAogICAgICAgICAgICAgIHZhbHVlOiAicGFzc3dvcmQiCiAgICAgICAgICAgIC0gbmFtZTogV0VCSE9PS19BTVFQX1BPUlQKICAgICAgICAgICAgICB2YWx1ZTogIjU2NzIiCiAgICAgICAgICAgIC0gbmFtZTogV0VCSE9PS19BTVFQX1ZIT1NUCiAgICAgICAgICAgICAgdmFsdWU6ICIvIgogICAgICAgICAgICAtIG5hbWU6IFdFQkhPT0tfQU1RUF9FWENIQU5HRQogICAgICAgICAgICAgIHZhbHVlOiAia2V5Y2xvYWsiCiAgICAgICAgICAgIC0gbmFtZTogV0VCSE9PS19BTVFQX1NTTAogICAgICAgICAgICAgIHZhbHVlOiAibm8iCiAgICAgICAgICAgIC0gbmFtZTogV0VCSE9PS19TWVNMT0dfUFJPVE9DT0wKICAgICAgICAgICAgICB2YWx1ZTogInVkcCIKICAgICAgICAgICAgLSBuYW1lOiBXRUJIT09LX1NZU0xPR19TRVJWRVJfSE9TVE5BTUUKICAgICAgICAgICAgICB2YWx1ZTogInN5c2xvZy1uZyIKICAgICAgICAgICAgLSBuYW1lOiBXRUJIT09LX1NZU0xPR19TRVJWRVJfUE9SVAogICAgICAgICAgICAgIHZhbHVlOiAiNTUxNCIKICAgICAgICAgIHZvbHVtZU1vdW50czoKICAgICAgICAgICAgLSBuYW1lOiBwcm92aWRlcnMtdm9sdW1lCiAgICAgICAgICAgICAgbW91bnRQYXRoOiAvb3B0L2tleWNsb2FrL3Byb3ZpZGVycwpgYGAKCi0tLQoKIyMgMy4gRW52aXJvbm1lbnQgVmFyaWFibGVzCgojIyMgSFRUUCBQcm92aWRlcgoKLSAqKmBXRUJIT09LX0hUVFBfQkFTRV9QQVRIYCoqICAKICBDb21hLXNlcGFyYXRlZCBsaXN0IG9mIGVuZHBvaW50IFVSTHMgd2hlcmUgd2ViaG9vayByZXF1ZXN0cyBhcmUgc2VudC4KCi0gKipgV0VCSE9PS19IVFRQX0FVVEhfVVNFUk5BTUVgIChvcHRpb25hbCkqKiAgCiAgQmFzaWMgYXV0aCB1c2VybmFtZS4KCi0gKipgV0VCSE9PS19IVFRQX0FVVEhfUEFTU1dPUkRgIChvcHRpb25hbCkqKiAgCiAgQmFzaWMgYXV0aCBwYXNzd29yZC4KCiMjIyBBTVFQIFByb3ZpZGVyCgotICoqYFdFQkhPT0tfQU1RUF9IT1NUYCoqICAKICBSYWJiaXRNUSBzZXJ2ZXIgaG9zdG5hbWUuCgotICoqYFdFQkhPT0tfQU1RUF9VU0VSTkFNRWAqKiAgCiAgVXNlcm5hbWUgZm9yIFJhYmJpdE1RLgoKLSAqKmBXRUJIT09LX0FNUVBfUEFTU1dPUkRgKiogIAogIFBhc3N3b3JkIGZvciBSYWJiaXRNUS4KCi0gKipgV0VCSE9PS19BTVFQX1BPUlRgKiogIAogIFBvcnQgZm9yIFJhYmJpdE1RLgoKLSAqKmBXRUJIT09LX0FNUVBfVkhPU1RgIChvcHRpb25hbCkqKiAgCiAgVmlydHVhbCBob3N0IGZvciBSYWJiaXRNUS4KCi0gKipgV0VCSE9PS19BTVFQX0VYQ0hBTkdFYCoqICAKICBFeGNoYW5nZSBuYW1lIGZvciBSYWJiaXRNUS4KCi0gKipgV0VCSE9PS19BTVFQX1NTTGAgKG9wdGlvbmFsKSoqICAKICBgInllcyJgIG9yIGAibm8iYCwgaW5kaWNhdGluZyBpZiBTU0wgaXMgZW5hYmxlZC4KCiMjIyBTeXNsb2cgUHJvdmlkZXIKCi0gKipgV0VCSE9PS19TWVNMT0dfUFJPVE9DT0xgKiogIAogIGAiVENQImAgb3IgYCJVRFAiYCBwcm90b2NvbCBmb3IgU3lzbG9nIGNvbW11bmljYXRpb24uCgotICoqYFdFQkhPT0tfU1lTTE9HX0hPU1ROQU1FYCoqICAKICBIb3N0bmFtZSBvZiB0aGUgS2V5Y2xvYWsgaW5zdGFuY2UuCgotICoqYFdFQkhPT0tfU1lTTE9HX0FQUF9OQU1FYCoqICAKICBBcHBsaWNhdGlvbiBuYW1lIGZvciBTeXNsb2cgbWVzc2FnZXMuCgotICoqYFdFQkhPT0tfU1lTTE9HX0ZBQ0lMSVRZYCoqICAKICBTeXNsb2cgZmFjaWxpdHkgKGUuZy4sIFVTRVIsIERBRU1PTiwgQVVUSCkuCgotICoqYFdFQkhPT0tfU1lTTE9HX1NFVkVSSVRZYCoqICAKICBTeXNsb2cgc2V2ZXJpdHkgbGV2ZWwgKGUuZy4sIElORk9STUFUSU9OQUwsIFdBUk5JTkcsIEVSUk9SKS4KCi0gKipgV0VCSE9PS19TWVNMT0dfU0VSVkVSX0hPU1ROQU1FYCoqICAKICBIb3N0bmFtZSBvZiB0aGUgU3lzbG9nIHNlcnZlci4KCi0gKipgV0VCSE9PS19TWVNMT0dfU0VSVkVSX1BPUlRgKiogIAogIFBvcnQgb2YgdGhlIFN5c2xvZyBzZXJ2ZXIuCgotICoqYFdFQkhPT0tfU1lTTE9HX01FU1NBR0VfRk9STUFUYCoqICAKICBgIlJGQ18zMTY0ImAsIGAiUkZDXzU0MjQiYCBvciBgIlJGQ181NDI1ImAgbWVzc2FnZSBmb3JtYXQuCgotICoqYFdFQkhPT0tfRVZFTlRTX1RBS0VOYCAob3B0aW9uYWwpKiogIAogIEEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgS2V5Y2xvYWsgZXZlbnRzIChlLmcuLCBgIkxPR0lOLFJFR0lTVEVSLExPR09VVCJgKSB0aGF0IHNob3VsZCB0cmlnZ2VyIHdlYmhvb2tzLiBJZiBub3QKICBzcGVjaWZpZWQsIGFsbCBldmVudHMgYXJlIHByb2Nlc3NlZC4KCi0tLQoKIyMgNC4gQXJjaGl0ZWN0dXJlCgpUaGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBLZXljbG9hayBXZWJob29rIFBsdWdpbiBpcyBpbGx1c3RyYXRlZCB1c2luZyBhIE1lcm1haWQgZGlhZ3JhbSBiZWxvdzoKCmBgYG1lcm1haWQKZ3JhcGggVEQKICAgIEFbIktleWNsb2FrIChFdmVudCBTb3VyY2UpIl0KICAgIEJbIlNlcnZpY2VMb2FkZXIgKFNQSSkiXQogICAgQ1tDb3JlIE1vZHVsZV0KICAgIERbSFRUUCBQcm92aWRlcl0KICAgIEVbQU1RUCBQcm92aWRlcl0KICAgIEZbU3lzbG9nIFByb3ZpZGVyXQogICAgR1tFeHRlcm5hbCBIVFRQIFNlcnZlcl0KICAgIEhbUmFiYml0TVEgQnJva2VyXQogICAgSVtTeXNsb2cgU2VydmVyXQogICAgQSAtLT4gQgogICAgQiAtLT4gQwogICAgQyAtLT4gRAogICAgQyAtLT4gRQogICAgQyAtLT4gRgogICAgRCAtLT4gRwogICAgRSAtLT4gSAogICAgRiAtLT4gSQpgYGAKCi0gKipDb3JlIE1vZHVsZToqKiAgCiAgUHJvdmlkZXMgY29tbW9uIGludGVyZmFjZXMsIG1vZGVscywgYW5kIHV0aWxpdGllcy4KCi0gKipQcm92aWRlciBNb2R1bGVzOioqICAKICBJbXBsZW1lbnQgc3BlY2lmaWMgd2ViaG9vayBkZWxpdmVyeSBtZWNoYW5pc21zIChIVFRQLCBBTVFQLCBvciBTeXNsb2cpIGFuZCBhcmUgY29uZGl0aW9uYWxseSBsb2FkZWQgaWYgdGhlaXIgSkFScyBhcmUKICBwcmVzZW50LgoKLSAqKlNlcnZpY2VMb2FkZXI6KiogIAogIFVzZXMgSmF2YSdzIFNQSSB0byBkaXNjb3ZlciBhbmQgbG9hZCB0aGUgcHJvdmlkZXJzLgoKLSAqKkV4dGVybmFsIFN5c3RlbXM6KiogIAogIFdlYmhvb2sgbm90aWZpY2F0aW9ucyBhcmUgc2VudCB0byBhbiBIVFRQIHNlcnZlciwgcHVibGlzaGVkIHRvIGEgUmFiYml0TVEgYnJva2VyLCBvciBmb3J3YXJkZWQgdG8gYSBTeXNsb2cgc2VydmVyLgoKLS0tCgojIyA1LiBDb250cmlidXRlCgpXZSB3ZWxjb21lIGNvbnRyaWJ1dGlvbnMhIFRvIGdldCBzdGFydGVkOgoKMS4gKipGb3JrIHRoZSBSZXBvc2l0b3J5OioqICAKICAgQ3JlYXRlIHlvdXIgb3duIGZvcmsgb2YgdGhlIHByb2plY3Qgb24gR2l0SHViLgoKMi4gKipTZXQgVXAgWW91ciBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDoqKgoKLSBDbG9uZSB5b3VyIGZvcmsgbG9jYWxseS4KLSBFbnN1cmUgeW91IGhhdmUgSkRLIDE3IGFuZCBHcmFkbGUgaW5zdGFsbGVkLgotIEJ1aWxkIHRoZSBwcm9qZWN0IHVzaW5nOgogIGBgYGJhc2gKICAuL2dyYWRsZXcgY2xlYW4gc2hhZG93CiAgYGBgCgozLiAqKkZvbGxvdyBDb2RlIENvbnZlbnRpb25zOioqCgotIEtlZXAgdGhlIGNvZGUgc3R5bGUgY29uc2lzdGVudCB3aXRoIHRoZSBleGlzdGluZyBtb2R1bGVzLgotIFdyaXRlIHRlc3RzIHdoZXJlIGFwcGxpY2FibGUuCi0gVXBkYXRlIHRoZSBSRUFETUUgYW5kIGRvY3VtZW50YXRpb24gaWYgeW91ciBjaGFuZ2VzIHJlcXVpcmUgaXQuCgo0LiAqKlN1Ym1pdCBhIFB1bGwgUmVxdWVzdDoqKiAgCiAgIE9wZW4gYSBwdWxsIHJlcXVlc3Qgd2l0aCB5b3VyIHByb3Bvc2VkIGNoYW5nZXMuIFBsZWFzZSBpbmNsdWRlIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gYW5kIHJlZmVyZW5jZSBhbnkgcmVsYXRlZAogICBpc3N1ZXMuCgo1LiAqKkpvaW4gRGlzY3Vzc2lvbnM6KiogIAogICBVc2UgR2l0SHViIGlzc3VlcyB0byBkaXNjdXNzIGlkZWFzLCByZXBvcnQgYnVncywgb3IgYXNrIGZvciBoZWxwLgoKLS0tCgpUaGlzIG1vZHVsYXIgYW5kIGZsZXhpYmxlIGRlc2lnbiBhbGxvd3MgeW91IHRvIGRlcGxveSBvbmx5IHRoZSBwcm92aWRlcnMgeW91IG5lZWQgd2hpbGUga2VlcGluZyB0aGUgcHJvamVjdCBtYWludGFpbmFibGUKYW5kIGV4dGVuc2libGUuIEhhcHB5IGNvZGluZyEK readmeEtag: '"4267215ab32a08545cffb81def25c6687abff42e"' readmeLastModified: Sun, 16 Nov 2025 08:42:39 GMT repositoryId: 628094839 description: Event-based Webhook plugin for Keycloak created: '2023-04-14T22:47:31Z' updated: '2026-01-31T13:25:51Z' language: Kotlin archived: false stars: 95 watchers: 1 forks: 30 owner: vymalo logo: https://avatars.githubusercontent.com/u/128943481?v=4 license: MIT repoEtag: '"09767b061ee6445dea21007b3c70685da400ef955c0994e20f826bd2c3c764c7"' repoLastModified: Sat, 31 Jan 2026 13:25:51 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/namsor/namsor-python-sdk2 v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWNsaWVudApOYW1Tb3IgQVBJIHYyIDogZW5wb2ludHMgdG8gcHJvY2VzcyBwZXJzb25hbCBuYW1lcyAoZ2VuZGVyLCBjdWx0dXJhbCBvcmlnaW4gb3IgZXRobmljaXR5KSBpbiBhbGwgYWxwaGFiZXRzIG9yIGxhbmd1YWdlcy4gQnkgZGVmYXVsdCwgZW5wb2ludHMgdXNlIDEgdW5pdCBwZXIgbmFtZSAoZXguIEdlbmRlciksIGJ1dCBFdGhuaWNpdHkgY2xhc3NpZmljYXRpb24gdXNlcyAxMCB0byAyMCB1bml0cyBwZXIgbmFtZSBkZXBlbmRpbmcgb24gdGF4b25vbXkuIFVzZSBHRVQgbWV0aG9kcyBmb3Igc21hbGwgdGVzdHMsIGJ1dCBwcmVmZXIgUE9TVCBtZXRob2RzIGZvciBoaWdoZXIgdGhyb3VnaHB1dCAoYmF0Y2ggcHJvY2Vzc2luZyBvZiB1cCB0byAxMDAgbmFtZXMgYXQgYSB0aW1lKS4gTmVlZCBzb21ldGhpbmcgeW91IGNhbid0IGZpbmQgaGVyZT8gV2UgaGF2ZSBtYW55IG1vcmUgZmVhdHVyZXMgY29taW5nIHNvb24uIExldCB1cyBrbm93LCB3ZSdsbCBkbyBvdXIgYmVzdCB0byBhZGQgaXQhIAoKVGhpcyBQeXRob24gcGFja2FnZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSB0aGUgW09wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpIHByb2plY3Q6CgotIEFQSSB2ZXJzaW9uOiAyLjAuMjcKLSBQYWNrYWdlIHZlcnNpb246IDIuMC4yNwotIEJ1aWxkIHBhY2thZ2U6IG9yZy5vcGVuYXBpdG9vbHMuY29kZWdlbi5sYW5ndWFnZXMuUHl0aG9uQ2xpZW50Q29kZWdlbgpGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpc2l0IFtodHRwOi8vd3d3Lm5hbXNvci5jb20vXShodHRwOi8vd3d3Lm5hbXNvci5jb20vKQoKIyMgUmVxdWlyZW1lbnRzLgoKUHl0aG9uICZndDsmI3gzRDszLjcKCiMjIE1pZ3JhdGlvbiBmcm9tIG90aGVyIGdlbmVyYXRvcnMgbGlrZSBweXRob24gYW5kIHB5dGhvbi1sZWdhY3kKCiMjIyBDaGFuZ2VzCjEuIFRoaXMgZ2VuZXJhdG9yIHVzZXMgc3BlYyBjYXNlIGZvciBhbGwgKG9iamVjdCkgcHJvcGVydHkgbmFtZXMgYW5kIHBhcmFtZXRlciBuYW1lcy4KICAgIC0gU28gaWYgdGhlIHNwZWMgaGFzIGEgcHJvcGVydHkgbmFtZSBsaWtlIGNhbWVsQ2FzZSwgaXQgd2lsbCB1c2UgY2FtZWxDYXNlIHJhdGhlciB0aGFuIGNhbWVsX2Nhc2UKICAgIC0gU28geW91IHdpbGwgbmVlZCB0byB1cGRhdGUgaG93IHlvdSBpbnB1dCBhbmQgcmVhZCBwcm9wZXJ0aWVzIHRvIHVzZSBzcGVjIGNhc2UKMi4gRW5kcG9pbnQgcGFyYW1ldGVycyBhcmUgc3RvcmVkIGluIGRpY3Rpb25hcmllcyB0byBwcmV2ZW50IGNvbGxpc2lvbnMgKGV4cGxhbmF0aW9uIGJlbG93KQogICAgLSBTbyB5b3Ugd2lsbCBuZWVkIHRvIHVwZGF0ZSBob3cgeW91IHBhc3MgZGF0YSBpbiB0byBlbmRwb2ludHMKMy4gRW5kcG9pbnQgcmVzcG9uc2VzIG5vdyBpbmNsdWRlIHRoZSBvcmlnaW5hbCByZXNwb25zZSwgdGhlIGRlc2VyaWFsaXplZCByZXNwb25zZSBib2R5LCBhbmQgKHRvZG8pdGhlIGRlc2VyaWFsaXplZCBoZWFkZXJzCiAgICAtIFNvIHlvdSB3aWxsIG5lZWQgdG8gdXBkYXRlIHlvdXIgY29kZSB0byB1c2UgcmVzcG9uc2UuYm9keSB0byBhY2Nlc3MgZGVzZXJpYWxpemVkIGRhdGEKNC4gQWxsIHZhbGlkYXRlZCBkYXRhIGlzIGluc3RhbnRpYXRlZCBpbiBhbiBpbnN0YW5jZSB0aGF0IHN1YmNsYXNzZXMgYWxsIHZhbGlkYXRlZCBTY2hlbWEgY2xhc3NlcyBhbmQgRGVjaW1hbC9zdHIvbGlzdC90dXBsZS9mcm96ZW5kaWN0L05vbmVDbGFzcy9Cb29sQ2xhc3MvYnl0ZXMvaW8uRmlsZUlPCiAgICAtIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHVzZSBpc2luc3RhbmNlIHRvIGNoZWNrIGlmIGEgcGF5bG9hZCB2YWxpZGF0ZWQgYWdhaW5zdCBhIHNjaGVtYSBjbGFzcwogICAgLSBUaGlzIG1lYW5zIHRoYXQgbm8gZGF0YSB3aWxsIGJlIG9mIHR5cGUgTm9uZS9UcnVlL0ZhbHNlCiAgICAgICAgLSBpbmdlc3RlZCBOb25lIHdpbGwgc3ViY2xhc3MgTm9uZUNsYXNzCiAgICAgICAgLSBpbmdlc3RlZCBUcnVlIHdpbGwgc3ViY2xhc3MgQm9vbENsYXNzCiAgICAgICAgLSBpbmdlc3RlZCBGYWxzZSB3aWxsIHN1YmNsYXNzIEJvb2xDbGFzcwogICAgICAgIC0gU28gaWYgeW91IG5lZWQgdG8gY2hlY2sgaXMgVHJ1ZS9GYWxzZS9Ob25lLCBpbnN0ZWFkIHVzZSBpbnN0YW5jZS5pc190cnVlX29hcGcoKS8uaXNfZmFsc2Vfb2FwZygpLy5pc19ub25lX29hcGcoKQo1LiBBbGwgdmFsaWRhdGVkIGNsYXNzIGluc3RhbmNlcyBhcmUgaW1tdXRhYmxlIGV4Y2VwdCBmb3Igb25lcyBiYXNlZCBvbiBpby5GaWxlCiAgICAtIFRoaXMgaXMgYmVjYXVzZSBpZiBwcm9wZXJ0aWVzIHdlcmUgY2hhbmdlZCBhZnRlciB2YWxpZGF0aW9uLCB0aGF0IHZhbGlkYXRpb24gd291bGQgbm8gbG9uZ2VyIGFwcGx5CiAgICAtIFNvIG5vIGNoYW5naW5nIHZhbHVlcyBvciBwcm9wZXJ0eSB2YWx1ZXMgYWZ0ZXIgYSBjbGFzcyBoYXMgYmVlbiBpbnN0YW50aWF0ZWQKNi4gU3RyaW5nICsgTnVtYmVyIHR5cGVzIHdpdGggZm9ybWF0cwogICAgLSBTdHJpbmcgdHlwZSBkYXRhIGlzIHN0b3JlZCBhcyBhIHN0cmluZyBhbmQgaWYgeW91IG5lZWQgdG8gYWNjZXNzIHR5cGVzIGJhc2VkIG9uIGl0cyBmb3JtYXQgbGlrZSBkYXRlLAogICAgZGF0ZS10aW1lLCB1dWlkLCBudW1iZXIgZXRjIHRoZW4geW91IHdpbGwgbmVlZCB0byB1c2UgYWNjZXNzb3IgZnVuY3Rpb25zIG9uIHRoZSBpbnN0YW5jZQogICAgLSB0eXBlIHN0cmluZyArIGZvcm1hdDogU2VlIC5hc19kYXRlX29hcGcsIC5hc19kYXRldGltZV9vYXBnLCAuYXNfZGVjaW1hbF9vYXBnLCAuYXNfdXVpZF9vYXBnCiAgICAtIHR5cGUgbnVtYmVyICsgZm9ybWF0OiBTZWUgLmFzX2Zsb2F0X29hcGcsIC5hc19pbnRfb2FwZwogICAgLSB0aGlzIHdhcyBkb25lIGJlY2F1c2Ugb3BlbmFwaS9qc29uLXNjaGVtYSBkZWZpbmVzIGNvbnN0cmFpbnRzLiBzdHJpbmcgZGF0YSBtYXkgYmUgdHlwZSBzdHJpbmcgd2l0aCBubyBmb3JtYXQKICAgIGtleXdvcmQgaW4gb25lIHNjaGVtYSwgYW5kIGluY2x1ZGUgYSBmb3JtYXQgY29uc3RyYWludCBpbiBhbm90aGVyIHNjaGVtYQogICAgLSBTbyBpZiB5b3UgbmVlZCB0byBhY2Nlc3MgYSBzdHJpbmcgZm9ybWF0IGJhc2VkIHR5cGUsIHVzZSBhc19kYXRlX29hcGcvYXNfZGF0ZXRpbWVfb2FwZy9hc19kZWNpbWFsX29hcGcvYXNfdXVpZF9vYXBnCiAgICAtIFNvIGlmIHlvdSBuZWVkIHRvIGFjY2VzcyBhIG51bWJlciBmb3JtYXQgYmFzZWQgdHlwZSwgdXNlIGFzX2ludF9vYXBnL2FzX2Zsb2F0X29hcGcKNy4gUHJvcGVydHkgYWNjZXNzIG9uIEFueVR5cGUodHlwZSB1bnNldCkgb3Igb2JqZWN0KGRpY3QpIHNjaGVtYXMKICAgIC0gT25seSByZXF1aXJlZCBrZXlzIHdpdGggdmFsaWQgcHl0aG9uIG5hbWVzIGFyZSBwcm9wZXJ0aWVzIGxpa2UgLnNvbWVQcm9wIGFuZCBoYXZlIHR5cGUgaGludHMKICAgIC0gQWxsIG9wdGlvbmFsIGtleXMgbWF5IG5vdCBleGlzdCwgc28gcHJvcGVydGllcyBhcmUgbm90IGRlZmluZWQgZm9yIHRoZW0KICAgIC0gT25lIGNhbiBhY2Nlc3Mgb3B0aW9uYWwgdmFsdWVzIHdpdGggZGljdF9pbnN0YW5jZVsnb3B0aW9uYWxQcm9wJ10gYW5kIEtleUVycm9yIHdpbGwgYmUgcmFpc2VkIGlmIGl0IGRvZXMgbm90IGV4aXN0CiAgICAtIFVzZSBnZXRfaXRlbV9vYXBnIGlmIHlvdSBuZWVkIGEgd2F5IHRvIGFsd2F5cyBnZXQgYSB2YWx1ZSB3aGV0aGVyIG9yIG5vdCB0aGUga2V5IGV4aXN0cwogICAgICAgIC0gSWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdCwgc2NoZW1hcy51bnNldCBpcyByZXR1cm5lZCBmcm9tIGNhbGxpbmcgZGljdF9pbnN0YW5jZS5nZXRfaXRlbV9vYXBnKCdvcHRpb25hbFByb3AnKQogICAgICAgIC0gQWxsIHJlcXVpcmVkIGFuZCBvcHRpb25hbCBrZXlzIGhhdmUgdHlwZSBoaW50cyBmb3IgdGhpcyBtZXRob2QsIGFuZCBAdHlwaW5nLm92ZXJsb2FkIGlzIHVzZWQKICAgICAgICAtIEEgdHlwZSBoaW50IGlzIGFsc28gZ2VuZXJhdGVkIGZvciBhZGRpdGlvbmFsUHJvcGVydGllcyBhY2Nlc3NlZCB1c2luZyB0aGlzIG1ldGhvZAogICAgLSBTbyB5b3Ugd2lsbCBuZWVkIHRvIHVwZGF0ZSB5b3UgY29kZSB0byB1c2Ugc29tZV9pbnN0YW5jZVsnb3B0aW9uYWxQcm9wJ10gdG8gYWNjZXNzIG9wdGlvbmFsIHByb3BlcnR5CiAgICBhbmQgYWRkaXRpb25hbFByb3BlcnR5IHZhbHVlcwo4LiBUaGUgbG9jYXRpb24gb2YgdGhlIGFwaSBjbGFzc2VzIGhhcyBjaGFuZ2VkCiAgICAtIEFwaSBjbGFzc2VzIGFyZSBsb2NhdGVkIGluIHlvdXJfcGFja2FnZS5hcGlzLnRhZ3Muc29tZV9hcGkKICAgIC0gVGhpcyBjaGFuZ2Ugd2FzIG1hZGUgdG8gZWxpbWluYXRlIHJlZHVuZGFudCBjb2RlIGdlbmVyYXRpb24KICAgIC0gTGVnYWN5IGdlbmVyYXRvcnMgZ2VuZXJhdGVkIHRoZSBzYW1lIGVuZHBvaW50IHR3aWNlIGlmIGl0IGhhZCA+IDEgdGFnIG9uIGl0CiAgICAtIFRoaXMgZ2VuZXJhdG9yIGRlZmluZXMgYW4gZW5kcG9pbnQgaW4gb25lIGNsYXNzLCB0aGVuIGluaGVyaXRzIHRoYXQgY2xhc3MgdG8gZ2VuZXJhdGUKICAgICAgYXBpcyBieSB0YWdzIGFuZCBieSBwYXRocwogICAgLSBUaGlzIGNoYW5nZSByZWR1Y2VzIGNvZGUgYW5kIGFsbG93cyBxdWlja2VyIHJ1biB0aW1lIGlmIHlvdSB1c2UgdGhlIHBhdGggYXBpcwogICAgICAgIC0gcGF0aCBhcGlzIGFyZSBhdCB5b3VyX3BhY2thZ2UuYXBpcy5wYXRocy5zb21lX3BhdGgKICAgIC0gVGhvc2UgYXBpcyB3aWxsIG9ubHkgbG9hZCB0aGVpciBuZWVkZWQgbW9kZWxzLCB3aGljaCBpcyBsZXNzIHRvIGxvYWQgdGhhbiBhbGwgb2YgdGhlIHJlc291cmNlcyBuZWVkZWQgaW4gYSB0YWcgYXBpCiAgICAtIFNvIHlvdSB3aWxsIG5lZWQgdG8gdXBkYXRlIHlvdXIgaW1wb3J0IHBhdGhzIHRvIHRoZSBhcGkgY2xhc3NlcwoKIyMjIFdoeSBhcmUgT2FwZyBhbmQgX29hcGcgdXNlZCBpbiBjbGFzcyBhbmQgbWV0aG9kIG5hbWVzPwpDbGFzc2VzIGNhbiBoYXZlIGFyYml0cmFyaWx5IG5hbWVkIHByb3BlcnRpZXMgc2V0IG9uIHRoZW0KRW5kcG9pbnRzIGNhbiBoYXZlIGFyYml0cmFyeSBvcGVyYXRpb25JZCBtZXRob2QgbmFtZXMgc2V0CkZvciB0aG9zZSByZWFzb25zLCBJIHVzZSB0aGUgcHJlZml4IE9hcGcgYW5kIF9vYXBnIHRvIGdyZWF0bHkgcmVkdWNlIHRoZSBsaWtlbGlob29kIG9mIGNvbGxpc2lvbnMKb24gcHJvdGVjdGVkICsgcHVibGljIGNsYXNzZXMvbWV0aG9kcy4Kb2FwZyBzdGFuZHMgZm9yIE9wZW5BcGkgUHl0aG9uIEdlbmVyYXRvci4KCiMjIyBPYmplY3QgcHJvcGVydHkgc3BlYyBjYXNlClRoaXMgd2FzIGRvbmUgYmVjYXVzZSB3aGVuIHBheWxvYWRzIGFyZSBpbmdlc3RlZCwgdGhleSBjYW4gYmUgdmFsaWRhdGVkIGFnYWluc3QgTiBudW1iZXIgb2Ygc2NoZW1hcy4KSWYgdGhlIGlucHV0IHNpZ25hdHVyZSB1c2VkIGEgZGlmZmVyZW50IHByb3BlcnR5IG5hbWUgdGhlbiB0aGF0IGhhcyBtdXRhdGVkIHRoZSBwYXlsb2FkLgpTbyBTY2hlbWFBIGFuZCBTY2hlbWFCIG11c3QgYm90aCBzZWUgdGhlIGNhbWVsQ2FzZSBzcGVjIG5hbWVkIHZhcmlhYmxlLgpBbHNvIGl0IGlzIHBvc3NpYmxlIHRvIHNlbmQgaW4gdHdvIHByb3BlcnRpZXMsIG5hbWVkIGNhbWVsQ2FzZSBhbmQgY2FtZWxfY2FzZSBpbiB0aGUgc2FtZSBwYXlsb2FkLgpUaGF0IHVzZSBjYXNlIHNob3VsZCBiZSBzdXBwb3J0IHNvIHNwZWMgY2FzZSBpcyB1c2VkLgoKIyMjIFBhcmFtZXRlciBzcGVjIGNhc2UKUGFyYW1ldGVycyBjYW4gYmUgaW5jbHVkZWQgaW4gZGlmZmVyZW50IGxvY2F0aW9ucyBpbmNsdWRpbmc6Ci0gcXVlcnkKLSBwYXRoCi0gaGVhZGVyCi0gY29va2llCgpBbnkgb2YgdGhvc2UgcGFyYW1ldGVycyBjb3VsZCB1c2UgdGhlIHNhbWUgcGFyYW1ldGVyIG5hbWVzLCBzbyBpZiBldmVyeSBwYXJhbWV0ZXIKd2FzIGluY2x1ZGVkIGFzIGFuIGVuZHBvaW50IHBhcmFtZXRlciBpbiBhIGZ1bmN0aW9uIHNpZ25hdHVyZSwgdGhleSB3b3VsZCBjb2xsaWRlLgpGb3IgdGhhdCByZWFzb24sIGVhY2ggb2YgdGhvc2UgaW5wdXRzIGhhdmUgYmVlbiBzZXBhcmF0ZWQgb3V0IGludG8gc2VwYXJhdGUgdHlwZWQgZGljdGlvbmFyaWVzOgotIHF1ZXJ5X3BhcmFtcwotIHBhdGhfcGFyYW1zCi0gaGVhZGVyX3BhcmFtcwotIGNvb2tpZV9wYXJhbXMKClNvIHdoZW4gdXBkYXRpbmcgeW91ciBjb2RlLCB5b3Ugd2lsbCBuZWVkIHRvIHBhc3MgZW5kcG9pbnQgcGFyYW1ldGVycyBpbiB1c2luZyB0aG9zZQpkaWN0aW9uYXJpZXMuCgojIyMgRW5kcG9pbnQgcmVzcG9uc2VzCkVuZHBvaW50IHJlc3BvbnNlcyBoYXZlIGJlZW4gZW5yaWNoZWQgdG8gbm93IGluY2x1ZGUgbW9yZSBpbmZvcm1hdGlvbi4KQW55IHJlc3BvbnNlIHJlb20gYW4gZW5kcG9pbnQgd2lsbCBub3cgaW5jbHVkZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CnJlc3BvbnNlOiB1cmxsaWIzLkhUVFBSZXNwb25zZQpib2R5OiB0eXBpbmcuVW5pb25bVW5zZXQsIFNjaGVtYV0KaGVhZGVyczogdHlwaW5nLlVuaW9uW1Vuc2V0LCBUT0RPXQpOb3RlOiByZXNwb25zZSBoZWFkZXIgZGVzZXJpYWxpemF0aW9uIGhhcyBub3QgeWV0IGJlZW4gYWRkZWQKCgojIyBJbnN0YWxsYXRpb24gJiBVc2FnZQojIyMgcGlwIGluc3RhbGwKCklmIHRoZSBweXRob24gcGFja2FnZSBpcyBob3N0ZWQgb24gYSByZXBvc2l0b3J5LCB5b3UgY2FuIGluc3RhbGwgZGlyZWN0bHkgdXNpbmc6CgpgYGBzaApwaXAgaW5zdGFsbCBnaXQraHR0cHM6Ly9naXRodWIuY29tL25hbXNvci9uYW1zb3ItcHl0aG9uLXNkazIuZ2l0CmBgYAooeW91IG1heSBuZWVkIHRvIHJ1biBgcGlwYCB3aXRoIHJvb3QgcGVybWlzc2lvbjogYHN1ZG8gcGlwIGluc3RhbGwgZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9uYW1zb3IvbmFtc29yLXB5dGhvbi1zZGsyLmdpdGApCgpUaGVuIGltcG9ydCB0aGUgcGFja2FnZToKYGBgcHl0aG9uCmltcG9ydCBvcGVuYXBpX2NsaWVudApgYGAKCiMjIyBTZXR1cHRvb2xzCgpJbnN0YWxsIHZpYSBbU2V0dXB0b29sc10oaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NldHVwdG9vbHMpLgoKYGBgc2gKcHl0aG9uIHNldHVwLnB5IGluc3RhbGwgLS11c2VyCmBgYAoob3IgYHN1ZG8gcHl0aG9uIHNldHVwLnB5IGluc3RhbGxgIHRvIGluc3RhbGwgdGhlIHBhY2thZ2UgZm9yIGFsbCB1c2VycykKClRoZW4gaW1wb3J0IHRoZSBwYWNrYWdlOgpgYGBweXRob24KaW1wb3J0IG9wZW5hcGlfY2xpZW50CmBgYAoKIyMgR2V0dGluZyBTdGFydGVkCgpQbGVhc2UgZm9sbG93IHRoZSBbaW5zdGFsbGF0aW9uIHByb2NlZHVyZV0oI2luc3RhbGxhdGlvbi0tdXNhZ2UpIGFuZCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nOgoKYGBgcHl0aG9uCgppbXBvcnQgdGltZQppbXBvcnQgb3BlbmFwaV9jbGllbnQKZnJvbSBwcHJpbnQgaW1wb3J0IHBwcmludApmcm9tIG9wZW5hcGlfY2xpZW50LmFwaXMudGFncyBpbXBvcnQgYWRtaW5fYXBpCmZyb20gb3BlbmFwaV9jbGllbnQubW9kZWwuYXBpX2NsYXNzaWZpZXJfdGF4b25vbXlfb3V0IGltcG9ydCBBUElDbGFzc2lmaWVyVGF4b25vbXlPdXQKZnJvbSBvcGVuYXBpX2NsaWVudC5tb2RlbC5hcGlfY2xhc3NpZmllcnNfc3RhdHVzX291dCBpbXBvcnQgQVBJQ2xhc3NpZmllcnNTdGF0dXNPdXQKZnJvbSBvcGVuYXBpX2NsaWVudC5tb2RlbC5hcGlfa2V5X291dCBpbXBvcnQgQVBJS2V5T3V0CmZyb20gb3BlbmFwaV9jbGllbnQubW9kZWwuYXBpX3BlcmlvZF91c2FnZV9vdXQgaW1wb3J0IEFQSVBlcmlvZFVzYWdlT3V0CmZyb20gb3BlbmFwaV9jbGllbnQubW9kZWwuYXBpX3NlcnZpY2VzX291dCBpbXBvcnQgQVBJU2VydmljZXNPdXQKZnJvbSBvcGVuYXBpX2NsaWVudC5tb2RlbC5hcGlfdXNhZ2VfYWdncmVnYXRlZF9vdXQgaW1wb3J0IEFQSVVzYWdlQWdncmVnYXRlZE91dApmcm9tIG9wZW5hcGlfY2xpZW50Lm1vZGVsLmFwaV91c2FnZV9oaXN0b3J5X291dCBpbXBvcnQgQVBJVXNhZ2VIaXN0b3J5T3V0CmZyb20gb3BlbmFwaV9jbGllbnQubW9kZWwucmVnaW9uX291dCBpbXBvcnQgUmVnaW9uT3V0CmZyb20gb3BlbmFwaV9jbGllbnQubW9kZWwuc29mdHdhcmVfdmVyc2lvbl9vdXQgaW1wb3J0IFNvZnR3YXJlVmVyc2lvbk91dAojIERlZmluaW5nIHRoZSBob3N0IGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byBodHRwczovL3YyLm5hbXNvci5jb20vTmFtU29yQVBJdjIKIyBTZWUgY29uZmlndXJhdGlvbi5weSBmb3IgYSBsaXN0IG9mIGFsbCBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpjb25maWd1cmF0aW9uID0gb3BlbmFwaV9jbGllbnQuQ29uZmlndXJhdGlvbigKICAgIGhvc3QgPSAiaHR0cHM6Ly92Mi5uYW1zb3IuY29tL05hbVNvckFQSXYyIgopCgojIFRoZSBjbGllbnQgbXVzdCBjb25maWd1cmUgdGhlIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIHBhcmFtZXRlcnMKIyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIEFQSSBzZXJ2ZXIgc2VjdXJpdHkgcG9saWN5LgojIEV4YW1wbGVzIGZvciBlYWNoIGF1dGggbWV0aG9kIGFyZSBwcm92aWRlZCBiZWxvdywgdXNlIHRoZSBleGFtcGxlIHRoYXQKIyBzYXRpc2ZpZXMgeW91ciBhdXRoIHVzZSBjYXNlLgoKIyBDb25maWd1cmUgQVBJIGtleSBhdXRob3JpemF0aW9uOiBhcGlfa2V5CmNvbmZpZ3VyYXRpb24uYXBpX2tleVsnYXBpX2tleSddID0gJ1lPVVJfQVBJX0tFWScKCiMgVW5jb21tZW50IGJlbG93IHRvIHNldHVwIHByZWZpeCAoZS5nLiBCZWFyZXIpIGZvciBBUEkga2V5LCBpZiBuZWVkZWQKIyBjb25maWd1cmF0aW9uLmFwaV9rZXlfcHJlZml4WydhcGlfa2V5J10gPSAnQmVhcmVyJwoKIyBFbnRlciBhIGNvbnRleHQgd2l0aCBhbiBpbnN0YW5jZSBvZiB0aGUgQVBJIGNsaWVudAp3aXRoIG9wZW5hcGlfY2xpZW50LkFwaUNsaWVudChjb25maWd1cmF0aW9uKSBhcyBhcGlfY2xpZW50OgogICAgIyBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIEFQSSBjbGFzcwogICAgYXBpX2luc3RhbmNlID0gYWRtaW5fYXBpLkFkbWluQXBpKGFwaV9jbGllbnQpCiAgICBzb3VyY2UgPSAic291cmNlX2V4YW1wbGUiICMgc3RyIHwgCmFub255bWl6ZWQgPSBUcnVlICMgYm9vbCB8IAp0b2tlbiA9ICJ0b2tlbl9leGFtcGxlIiAjIHN0ciB8IAoKICAgIHRyeToKICAgICAgICAjIEFjdGl2YXRlL2RlYWN0aXZhdGUgYW5vbnltaXphdGlvbiBmb3IgYSBzb3VyY2UuCiAgICAgICAgYXBpX3Jlc3BvbnNlID0gYXBpX2luc3RhbmNlLmFub255bWl6ZShzb3VyY2Vhbm9ueW1pemVkdG9rZW4pCiAgICAgICAgcHByaW50KGFwaV9yZXNwb25zZSkKICAgIGV4Y2VwdCBvcGVuYXBpX2NsaWVudC5BcGlFeGNlcHRpb24gYXMgZToKICAgICAgICBwcmludCgiRXhjZXB0aW9uIHdoZW4gY2FsbGluZyBBZG1pbkFwaS0+YW5vbnltaXplOiAlc1xuIiAlIGUpCmBgYAoKIyMgRG9jdW1lbnRhdGlvbiBmb3IgQVBJIEVuZHBvaW50cwoKQWxsIFVSSXMgYXJlIHJlbGF0aXZlIHRvICpodHRwczovL3YyLm5hbXNvci5jb20vTmFtU29yQVBJdjIqCgpDbGFzcyB8IE1ldGhvZCB8IEhUVFAgcmVxdWVzdCB8IERlc2NyaXB0aW9uCi0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLQoqQWRtaW5BcGkqIHwgWyoqYW5vbnltaXplKipdKGRvY3MvYXBpcy90YWdzL0FkbWluQXBpLm1kI2Fub255bWl6ZSkgfCAqKmdldCoqIC9hcGkyL2pzb24vYW5vbnltaXplL3tzb3VyY2V9L3thbm9ueW1pemVkfS97dG9rZW59IHwgQWN0aXZhdGUvZGVhY3RpdmF0ZSBhbm9ueW1pemF0aW9uIGZvciBhIHNvdXJjZS4KKkFkbWluQXBpKiB8IFsqKmFub255bWl6ZTEqKl0oZG9jcy9hcGlzL3RhZ3MvQWRtaW5BcGkubWQjYW5vbnltaXplMSkgfCAqKmdldCoqIC9hcGkyL2pzb24vYW5vbnltaXplL3tzb3VyY2V9L3thbm9ueW1pemVkfSB8IEFjdGl2YXRlL2RlYWN0aXZhdGUgYW5vbnltaXphdGlvbiBmb3IgYSBzb3VyY2UuCipBZG1pbkFwaSogfCBbKiphcGlfa2V5X2luZm8qKl0oZG9jcy9hcGlzL3RhZ3MvQWRtaW5BcGkubWQjYXBpX2tleV9pbmZvKSB8ICoqZ2V0KiogL2FwaTIvanNvbi9hcGlLZXlJbmZvIHwgUmVhZCBBUEkgS2V5IGluZm8uCipBZG1pbkFwaSogfCBbKiphcGlfc3RhdHVzKipdKGRvY3MvYXBpcy90YWdzL0FkbWluQXBpLm1kI2FwaV9zdGF0dXMpIHwgKipnZXQqKiAvYXBpMi9qc29uL2FwaVN0YXR1cyB8IFByaW50cyB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIGNsYXNzaWZpZXJzLiBBIGNsYXNzaWZpZXIgbmFtZSBpbiBhcGlTdGF0dXMgY29ycmVzcG9uZHMgdG8gYSBzZXJ2aWNlIG5hbWUgaW4gYXBpU2VydmljZXMuCipBZG1pbkFwaSogfCBbKiphcGlfdXNhZ2UqKl0oZG9jcy9hcGlzL3RhZ3MvQWRtaW5BcGkubWQjYXBpX3VzYWdlKSB8ICoqZ2V0KiogL2FwaTIvanNvbi9hcGlVc2FnZSB8IFByaW50IGN1cnJlbnQgQVBJIHVzYWdlLgoqQWRtaW5BcGkqIHwgWyoqYXBpX3VzYWdlX2hpc3RvcnkqKl0oZG9jcy9hcGlzL3RhZ3MvQWRtaW5BcGkubWQjYXBpX3VzYWdlX2hpc3RvcnkpIHwgKipnZXQqKiAvYXBpMi9qc29uL2FwaVVzYWdlSGlzdG9yeSB8IFByaW50IGhpc3RvcmljYWwgQVBJIHVzYWdlLgoqQWRtaW5BcGkqIHwgWyoqYXBpX3VzYWdlX2hpc3RvcnlfYWdncmVnYXRlKipdKGRvY3MvYXBpcy90YWdzL0FkbWluQXBpLm1kI2FwaV91c2FnZV9oaXN0b3J5X2FnZ3JlZ2F0ZSkgfCAqKmdldCoqIC9hcGkyL2pzb24vYXBpVXNhZ2VIaXN0b3J5QWdncmVnYXRlIHwgUHJpbnQgaGlzdG9yaWNhbCBBUEkgdXNhZ2UgKGluIGFuIGFnZ3JlZ2F0ZWQgdmlldywgYnkgc2VydmljZSwgYnkgZGF5L2hvdXIvbWluKS4KKkFkbWluQXBpKiB8IFsqKmF2YWlsYWJsZV9zZXJ2aWNlcyoqXShkb2NzL2FwaXMvdGFncy9BZG1pbkFwaS5tZCNhdmFpbGFibGVfc2VydmljZXMpIHwgKipnZXQqKiAvYXBpMi9qc29uL2FwaVNlcnZpY2VzIHwgTGlzdCBvZiBjbGFzc2lmaWNhdGlvbiBzZXJ2aWNlcyBhbmQgdXNhZ2UgY29zdCBpbiBVbml0cyBwZXIgY2xhc3NpZmljYXRpb24gKGRlZmF1bHQgaXMgMSYjeDNEO09ORSBVbml0KS4gU29tZSBBUEkgZW5kcG9pbnRzIChleC4gQ29ycmlkb3IpIGNvbWJpbmUgbXVsdGlwbGUgY2xhc3NpZmllcnMuCipBZG1pbkFwaSogfCBbKipkaXNhYmxlKipdKGRvY3MvYXBpcy90YWdzL0FkbWluQXBpLm1kI2Rpc2FibGUpIHwgKipnZXQqKiAvYXBpMi9qc29uL2Rpc2FibGUve3NvdXJjZX0ve2Rpc2FibGVkfSB8IEFjdGl2YXRlL2RlYWN0aXZhdGUgYW4gQVBJIEtleS4KKkFkbWluQXBpKiB8IFsqKmxlYXJuYWJsZSoqXShkb2NzL2FwaXMvdGFncy9BZG1pbkFwaS5tZCNsZWFybmFibGUpIHwgKipnZXQqKiAvYXBpMi9qc29uL2xlYXJuYWJsZS97c291cmNlfS97bGVhcm5hYmxlfS97dG9rZW59IHwgQWN0aXZhdGUvZGVhY3RpdmF0ZSBsZWFybmluZyBmcm9tIGEgc291cmNlLgoqQWRtaW5BcGkqIHwgWyoqbGVhcm5hYmxlMSoqXShkb2NzL2FwaXMvdGFncy9BZG1pbkFwaS5tZCNsZWFybmFibGUxKSB8ICoqZ2V0KiogL2FwaTIvanNvbi9sZWFybmFibGUve3NvdXJjZX0ve2xlYXJuYWJsZX0gfCBBY3RpdmF0ZS9kZWFjdGl2YXRlIGxlYXJuaW5nIGZyb20gYSBzb3VyY2UuCipBZG1pbkFwaSogfCBbKipyZWdpb25zKipdKGRvY3MvYXBpcy90YWdzL0FkbWluQXBpLm1kI3JlZ2lvbnMpIHwgKipnZXQqKiAvYXBpMi9qc29uL3JlZ2lvbnMgfCBQcmludCBiYXNpYyBzb3VyY2Ugc3RhdGlzdGljcy4KKkFkbWluQXBpKiB8IFsqKnNvZnR3YXJlX3ZlcnNpb24qKl0oZG9jcy9hcGlzL3RhZ3MvQWRtaW5BcGkubWQjc29mdHdhcmVfdmVyc2lvbikgfCAqKmdldCoqIC9hcGkyL2pzb24vc29mdHdhcmVWZXJzaW9uIHwgR2V0IHRoZSBjdXJyZW50IHNvZnR3YXJlIHZlcnNpb24KKkFkbWluQXBpKiB8IFsqKnRheG9ub215X2NsYXNzZXMqKl0oZG9jcy9hcGlzL3RhZ3MvQWRtaW5BcGkubWQjdGF4b25vbXlfY2xhc3NlcykgfCAqKmdldCoqIC9hcGkyL2pzb24vdGF4b25vbXlDbGFzc2VzL3tjbGFzc2lmaWVyTmFtZX0gfCBQcmludCB0aGUgdGF4b25vbXkgY2xhc3NlcyB2YWxpZCBmb3IgdGhlIGdpdmVuIGNsYXNzaWZpZXIuCipDaGluZXNlQXBpKiB8IFsqKmNoaW5lc2VfbmFtZV9jYW5kaWRhdGVzKipdKGRvY3MvYXBpcy90YWdzL0NoaW5lc2VBcGkubWQjY2hpbmVzZV9uYW1lX2NhbmRpZGF0ZXMpIHwgKipnZXQqKiAvYXBpMi9qc29uL2NoaW5lc2VOYW1lQ2FuZGlkYXRlcy97Y2hpbmVzZVN1cm5hbWVMYXRpbn0ve2NoaW5lc2VHaXZlbk5hbWVMYXRpbn0gfCBJZGVudGlmeSBDaGluZXNlIG5hbWUgY2FuZGlkYXRlcywgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIGV4LiBXYW5nIFhpYW9taW5nCipDaGluZXNlQXBpKiB8IFsqKmNoaW5lc2VfbmFtZV9jYW5kaWRhdGVzX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL0NoaW5lc2VBcGkubWQjY2hpbmVzZV9uYW1lX2NhbmRpZGF0ZXNfYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9jaGluZXNlTmFtZUNhbmRpZGF0ZXNCYXRjaCB8IElkZW50aWZ5IENoaW5lc2UgbmFtZSBjYW5kaWRhdGVzLCBiYXNlZCBvbiB0aGUgcm9tYW5pemVkIG5hbWUgKGZpcnN0TmFtZSAmI3gzRDsgY2hpbmVzZUdpdmVuTmFtZTsgbGFzdE5hbWUmI3gzRDtjaGluZXNlU3VybmFtZSksIGV4LiBXYW5nIFhpYW9taW5nCipDaGluZXNlQXBpKiB8IFsqKmNoaW5lc2VfbmFtZV9jYW5kaWRhdGVzX2dlbmRlcl9iYXRjaCoqXShkb2NzL2FwaXMvdGFncy9DaGluZXNlQXBpLm1kI2NoaW5lc2VfbmFtZV9jYW5kaWRhdGVzX2dlbmRlcl9iYXRjaCkgfCAqKnBvc3QqKiAvYXBpMi9qc29uL2NoaW5lc2VOYW1lQ2FuZGlkYXRlc0dlbmRlckJhdGNoIHwgSWRlbnRpZnkgQ2hpbmVzZSBuYW1lIGNhbmRpZGF0ZXMsIGJhc2VkIG9uIHRoZSByb21hbml6ZWQgbmFtZSAoZmlyc3ROYW1lICYjeDNEOyBjaGluZXNlR2l2ZW5OYW1lOyBsYXN0TmFtZSYjeDNEO2NoaW5lc2VTdXJuYW1lKSBleC4gV2FuZyBYaWFvbWluZy4KKkNoaW5lc2VBcGkqIHwgWyoqY2hpbmVzZV9uYW1lX2dlbmRlcl9jYW5kaWRhdGVzKipdKGRvY3MvYXBpcy90YWdzL0NoaW5lc2VBcGkubWQjY2hpbmVzZV9uYW1lX2dlbmRlcl9jYW5kaWRhdGVzKSB8ICoqZ2V0KiogL2FwaTIvanNvbi9jaGluZXNlTmFtZUdlbmRlckNhbmRpZGF0ZXMve2NoaW5lc2VTdXJuYW1lTGF0aW59L3tjaGluZXNlR2l2ZW5OYW1lTGF0aW59L3trbm93bkdlbmRlcn0gfCBJZGVudGlmeSBDaGluZXNlIG5hbWUgY2FuZGlkYXRlcywgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIGV4LiBXYW5nIFhpYW9taW5nIC0gaGF2aW5nIGEga25vd24gZ2VuZGVyICgmI3gyNzttYWxlJiN4Mjc7IG9yICYjeDI3O2ZlbWFsZSYjeDI3OykKKkNoaW5lc2VBcGkqIHwgWyoqY2hpbmVzZV9uYW1lX21hdGNoKipdKGRvY3MvYXBpcy90YWdzL0NoaW5lc2VBcGkubWQjY2hpbmVzZV9uYW1lX21hdGNoKSB8ICoqZ2V0KiogL2FwaTIvanNvbi9jaGluZXNlTmFtZU1hdGNoL3tjaGluZXNlU3VybmFtZUxhdGlufS97Y2hpbmVzZUdpdmVuTmFtZUxhdGlufS97Y2hpbmVzZU5hbWV9IHwgUmV0dXJuIGEgc2NvcmUgZm9yIG1hdGNoaW5nIENoaW5lc2UgbmFtZSBleC4g546L5pmT5piOIHdpdGggYSByb21hbml6ZWQgbmFtZSBleC4gV2FuZyBYaWFvbWluZwoqQ2hpbmVzZUFwaSogfCBbKipjaGluZXNlX25hbWVfbWF0Y2hfYmF0Y2gqKl0oZG9jcy9hcGlzL3RhZ3MvQ2hpbmVzZUFwaS5tZCNjaGluZXNlX25hbWVfbWF0Y2hfYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9jaGluZXNlTmFtZU1hdGNoQmF0Y2ggfCBJZGVudGlmeSBDaGluZXNlIG5hbWUgY2FuZGlkYXRlcywgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIChmaXJzdE5hbWUgJiN4M0Q7IGNoaW5lc2VHaXZlbk5hbWU7IGxhc3ROYW1lJiN4M0Q7Y2hpbmVzZVN1cm5hbWUpLCBleC4gV2FuZyBYaWFvbWluZwoqQ2hpbmVzZUFwaSogfCBbKipnZW5kZXJfY2hpbmVzZV9uYW1lKipdKGRvY3MvYXBpcy90YWdzL0NoaW5lc2VBcGkubWQjZ2VuZGVyX2NoaW5lc2VfbmFtZSkgfCAqKmdldCoqIC9hcGkyL2pzb24vZ2VuZGVyQ2hpbmVzZU5hbWUve2NoaW5lc2VOYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEgQ2hpbmVzZSBmdWxsIG5hbWUgZXguIOeOi+aZk+aYjgoqQ2hpbmVzZUFwaSogfCBbKipnZW5kZXJfY2hpbmVzZV9uYW1lX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL0NoaW5lc2VBcGkubWQjZ2VuZGVyX2NoaW5lc2VfbmFtZV9iYXRjaCkgfCAqKnBvc3QqKiAvYXBpMi9qc29uL2dlbmRlckNoaW5lc2VOYW1lQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiB1cCB0byAxMDAgZnVsbCBuYW1lcyBleC4g546L5pmT5piOCipDaGluZXNlQXBpKiB8IFsqKmdlbmRlcl9jaGluZXNlX25hbWVfcGlueWluKipdKGRvY3MvYXBpcy90YWdzL0NoaW5lc2VBcGkubWQjZ2VuZGVyX2NoaW5lc2VfbmFtZV9waW55aW4pIHwgKipnZXQqKiAvYXBpMi9qc29uL2dlbmRlckNoaW5lc2VOYW1lUGlueWluL3tjaGluZXNlU3VybmFtZUxhdGlufS97Y2hpbmVzZUdpdmVuTmFtZUxhdGlufSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEgQ2hpbmVzZSBuYW1lIGluIExBVElOIChQaW55aW4pLgoqQ2hpbmVzZUFwaSogfCBbKipnZW5kZXJfY2hpbmVzZV9uYW1lX3Bpbnlpbl9iYXRjaCoqXShkb2NzL2FwaXMvdGFncy9DaGluZXNlQXBpLm1kI2dlbmRlcl9jaGluZXNlX25hbWVfcGlueWluX2JhdGNoKSB8ICoqcG9zdCoqIC9hcGkyL2pzb24vZ2VuZGVyQ2hpbmVzZU5hbWVQaW55aW5CYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIHVwIHRvIDEwMCBDaGluZXNlIG5hbWVzIGluIExBVElOIChQaW55aW4pLgoqQ2hpbmVzZUFwaSogfCBbKipwYXJzZV9jaGluZXNlX25hbWUqKl0oZG9jcy9hcGlzL3RhZ3MvQ2hpbmVzZUFwaS5tZCNwYXJzZV9jaGluZXNlX25hbWUpIHwgKipnZXQqKiAvYXBpMi9qc29uL3BhcnNlQ2hpbmVzZU5hbWUve2NoaW5lc2VOYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiDnjovmmZPmmI4gLSZndDsg546LKHN1cm5hbWUpIOaZk+aYjihnaXZlbiBuYW1lKQoqQ2hpbmVzZUFwaSogfCBbKipwYXJzZV9jaGluZXNlX25hbWVfYmF0Y2gqKl0oZG9jcy9hcGlzL3RhZ3MvQ2hpbmVzZUFwaS5tZCNwYXJzZV9jaGluZXNlX25hbWVfYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9wYXJzZUNoaW5lc2VOYW1lQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGZpcnN0L2xhc3QgbmFtZSBzdHJ1Y3R1cmUgb2YgYSBuYW1lLCBleC4g546L5pmT5piOIC0mZ3Q7IOeOiyhzdXJuYW1lKSDmmZPmmI4oZ2l2ZW4gbmFtZSkuCipDaGluZXNlQXBpKiB8IFsqKnBpbnlpbl9jaGluZXNlX25hbWUqKl0oZG9jcy9hcGlzL3RhZ3MvQ2hpbmVzZUFwaS5tZCNwaW55aW5fY2hpbmVzZV9uYW1lKSB8ICoqZ2V0KiogL2FwaTIvanNvbi9waW55aW5DaGluZXNlTmFtZS97Y2hpbmVzZU5hbWV9IHwgUm9tYW5pemUgdGhlIENoaW5lc2UgbmFtZSB0byBQaW55aW4sIGV4LiDnjovmmZPmmI4gLSZndDsgV2FuZyAoc3VybmFtZSkgWGlhb21pbmcgKGdpdmVuIG5hbWUpCipDaGluZXNlQXBpKiB8IFsqKnBpbnlpbl9jaGluZXNlX25hbWVfYmF0Y2gqKl0oZG9jcy9hcGlzL3RhZ3MvQ2hpbmVzZUFwaS5tZCNwaW55aW5fY2hpbmVzZV9uYW1lX2JhdGNoKSB8ICoqcG9zdCoqIC9hcGkyL2pzb24vcGlueWluQ2hpbmVzZU5hbWVCYXRjaCB8IFJvbWFuaXplIGEgbGlzdCBvZiBDaGluZXNlIG5hbWUgdG8gUGlueWluLCBleC4g546L5pmT5piOIC0mZ3Q7IFdhbmcgKHN1cm5hbWUpIFhpYW9taW5nIChnaXZlbiBuYW1lKS4KKkdlbmVyYWxBcGkqIHwgWyoqbmFtZV90eXBlKipdKGRvY3MvYXBpcy90YWdzL0dlbmVyYWxBcGkubWQjbmFtZV90eXBlKSB8ICoqZ2V0KiogL2FwaTIvanNvbi9uYW1lVHlwZS97cHJvcGVyTm91bn0gfCBJbmZlciB0aGUgbGlrZWx5IHR5cGUgb2YgYSBwcm9wZXIgbm91biAocGVyc29uYWwgbmFtZSwgYnJhbmQgbmFtZSwgcGxhY2UgbmFtZSBldGMuKQoqR2VuZXJhbEFwaSogfCBbKipuYW1lX3R5cGVfYmF0Y2gqKl0oZG9jcy9hcGlzL3RhZ3MvR2VuZXJhbEFwaS5tZCNuYW1lX3R5cGVfYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9uYW1lVHlwZUJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBjb21tb24gdHlwZSBvZiB1cCB0byAxMDAgcHJvcGVyIG5vdW5zIChwZXJzb25hbCBuYW1lLCBicmFuZCBuYW1lLCBwbGFjZSBuYW1lIGV0Yy4pCipHZW5lcmFsQXBpKiB8IFsqKm5hbWVfdHlwZV9nZW8qKl0oZG9jcy9hcGlzL3RhZ3MvR2VuZXJhbEFwaS5tZCNuYW1lX3R5cGVfZ2VvKSB8ICoqZ2V0KiogL2FwaTIvanNvbi9uYW1lVHlwZUdlby97cHJvcGVyTm91bn0ve2NvdW50cnlJc28yfSB8IEluZmVyIHRoZSBsaWtlbHkgdHlwZSBvZiBhIHByb3BlciBub3VuIChwZXJzb25hbCBuYW1lLCBicmFuZCBuYW1lLCBwbGFjZSBuYW1lIGV0Yy4pCipHZW5lcmFsQXBpKiB8IFsqKm5hbWVfdHlwZV9nZW9fYmF0Y2gqKl0oZG9jcy9hcGlzL3RhZ3MvR2VuZXJhbEFwaS5tZCNuYW1lX3R5cGVfZ2VvX2JhdGNoKSB8ICoqcG9zdCoqIC9hcGkyL2pzb24vbmFtZVR5cGVHZW9CYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgY29tbW9uIHR5cGUgb2YgdXAgdG8gMTAwIHByb3BlciBub3VucyAocGVyc29uYWwgbmFtZSwgYnJhbmQgbmFtZSwgcGxhY2UgbmFtZSBldGMuKQoqSW5kaWFuQXBpKiB8IFsqKmNhc3RlX2luZGlhbl9iYXRjaCoqXShkb2NzL2FwaXMvdGFncy9JbmRpYW5BcGkubWQjY2FzdGVfaW5kaWFuX2JhdGNoKSB8ICoqcG9zdCoqIC9hcGkyL2pzb24vY2FzdGVJbmRpYW5CYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IEluZGlhbiBuYW1lIGNhc3RlIG9mIHVwIHRvIDEwMCBwZXJzb25hbCBJbmRpYW4gSGluZHUgbmFtZXMuIAoqSW5kaWFuQXBpKiB8IFsqKmNhc3RlZ3JvdXBfaW5kaWFuKipdKGRvY3MvYXBpcy90YWdzL0luZGlhbkFwaS5tZCNjYXN0ZWdyb3VwX2luZGlhbikgfCAqKmdldCoqIC9hcGkyL2pzb24vY2FzdGVncm91cEluZGlhbi97c3ViRGl2aXNpb25Jc28zMTY2Mn0ve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfSB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IEluZGlhbiBuYW1lIGNhc3RlZ3JvdXAgb2YgYSBmaXJzdCAvIGxhc3QgbmFtZS4KKkluZGlhbkFwaSogfCBbKipjYXN0ZWdyb3VwX2luZGlhbl9iYXRjaCoqXShkb2NzL2FwaXMvdGFncy9JbmRpYW5BcGkubWQjY2FzdGVncm91cF9pbmRpYW5fYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9jYXN0ZWdyb3VwSW5kaWFuQmF0Y2ggfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBJbmRpYW4gbmFtZSBjYXN0ZWdyb3VwIG9mIHVwIHRvIDEwMCBwZXJzb25hbCBmaXJzdCAvIGxhc3QgbmFtZXMuIAoqSW5kaWFuQXBpKiB8IFsqKmNhc3RlZ3JvdXBfaW5kaWFuX2Z1bGwqKl0oZG9jcy9hcGlzL3RhZ3MvSW5kaWFuQXBpLm1kI2Nhc3RlZ3JvdXBfaW5kaWFuX2Z1bGwpIHwgKipnZXQqKiAvYXBpMi9qc29uL2Nhc3RlZ3JvdXBJbmRpYW5GdWxsL3tzdWJEaXZpc2lvbklzbzMxNjYyfS97cGVyc29uYWxOYW1lRnVsbH0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBJbmRpYW4gbmFtZSBjYXN0ZWdyb3VwIG9mIGEgcGVyc29uYWwgZnVsbCBuYW1lLgoqSW5kaWFuQXBpKiB8IFsqKmNhc3RlZ3JvdXBfaW5kaWFuX2Z1bGxfYmF0Y2gqKl0oZG9jcy9hcGlzL3RhZ3MvSW5kaWFuQXBpLm1kI2Nhc3RlZ3JvdXBfaW5kaWFuX2Z1bGxfYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9jYXN0ZWdyb3VwSW5kaWFuRnVsbEJhdGNoIHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgSW5kaWFuIG5hbWUgY2FzdGVncm91cCBvZiB1cCB0byAxMDAgcGVyc29uYWwgZnVsbCBuYW1lcy4gCipJbmRpYW5BcGkqIHwgWyoqY2FzdGVncm91cF9pbmRpYW5faGluZHUqKl0oZG9jcy9hcGlzL3RhZ3MvSW5kaWFuQXBpLm1kI2Nhc3RlZ3JvdXBfaW5kaWFuX2hpbmR1KSB8ICoqZ2V0KiogL2FwaTIvanNvbi9jYXN0ZUluZGlhbi97c3ViRGl2aXNpb25Jc28zMTY2Mn0ve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfSB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IEluZGlhbiBuYW1lIGNhc3RlIG9mIGEgcGVyc29uYWwgSGluZHUgbmFtZS4KKkluZGlhbkFwaSogfCBbKipyZWxpZ2lvbioqXShkb2NzL2FwaXMvdGFncy9JbmRpYW5BcGkubWQjcmVsaWdpb24pIHwgKipnZXQqKiAvYXBpMi9qc29uL3JlbGlnaW9uSW5kaWFuRnVsbC97c3ViRGl2aXNpb25Jc28zMTY2Mn0ve3BlcnNvbmFsTmFtZUZ1bGx9IHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgcmVsaWdpb24gb2YgYSBwZXJzb25hbCBJbmRpYW4gZnVsbCBuYW1lLCBwcm92aWRlZCB0aGUgSW5kaWFuIHN0YXRlIG9yIFVuaW9uIHRlcnJpdG9yeSAoTkIvIHRoaXMgY2FuIGJlIGluZmVycmVkIHVzaW5nIHRoZSBzdWJjbGFzc2lmaWNhdGlvbiBlbmRwb2ludCkuCipJbmRpYW5BcGkqIHwgWyoqcmVsaWdpb24xKipdKGRvY3MvYXBpcy90YWdzL0luZGlhbkFwaS5tZCNyZWxpZ2lvbjEpIHwgKipnZXQqKiAvYXBpMi9qc29uL3JlbGlnaW9uSW5kaWFuL3tzdWJEaXZpc2lvbklzbzMxNjYyfS97Zmlyc3ROYW1lfS97bGFzdE5hbWV9IHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgcmVsaWdpb24gb2YgYSBwZXJzb25hbCBJbmRpYW4gZmlyc3QvbGFzdCBuYW1lLCBwcm92aWRlZCB0aGUgSW5kaWFuIHN0YXRlIG9yIFVuaW9uIHRlcnJpdG9yeSAoTkIvIHRoaXMgY2FuIGJlIGluZmVycmVkIHVzaW5nIHRoZSBzdWJjbGFzc2lmaWNhdGlvbiBlbmRwb2ludCkuCipJbmRpYW5BcGkqIHwgWyoqcmVsaWdpb25faW5kaWFuX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL0luZGlhbkFwaS5tZCNyZWxpZ2lvbl9pbmRpYW5fYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9yZWxpZ2lvbkluZGlhbkJhdGNoIHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgcmVsaWdpb24gb2YgdXAgdG8gMTAwIHBlcnNvbmFsIGZpcnN0L2xhc3QgSW5kaWFuIG5hbWVzLCBwcm92aWRlZCB0aGUgc3ViY2xhc3NpZmljYXRpb24gYXQgU3RhdGUgb3IgVW5pb24gdGVycml0b3J5IGxldmVsIChOQi8gY2FuIGJlIGluZmVycmVkIHVzaW5nIHRoZSBzdWJjbGFzc2lmaWNhdGlvbiBlbmRwb2ludCkuCipJbmRpYW5BcGkqIHwgWyoqcmVsaWdpb25faW5kaWFuX2Z1bGxfYmF0Y2gqKl0oZG9jcy9hcGlzL3RhZ3MvSW5kaWFuQXBpLm1kI3JlbGlnaW9uX2luZGlhbl9mdWxsX2JhdGNoKSB8ICoqcG9zdCoqIC9hcGkyL2pzb24vcmVsaWdpb25JbmRpYW5GdWxsQmF0Y2ggfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSByZWxpZ2lvbiBvZiB1cCB0byAxMDAgcGVyc29uYWwgZnVsbCBJbmRpYW4gbmFtZXMsIHByb3ZpZGVkIHRoZSBzdWJjbGFzc2lmaWNhdGlvbiBhdCBTdGF0ZSBvciBVbmlvbiB0ZXJyaXRvcnkgbGV2ZWwgKE5CLyBjYW4gYmUgaW5mZXJyZWQgdXNpbmcgdGhlIHN1YmNsYXNzaWZpY2F0aW9uIGVuZHBvaW50KS4KKkluZGlhbkFwaSogfCBbKipzdWJjbGFzc2lmaWNhdGlvbl9pbmRpYW4qKl0oZG9jcy9hcGlzL3RhZ3MvSW5kaWFuQXBpLm1kI3N1YmNsYXNzaWZpY2F0aW9uX2luZGlhbikgfCAqKmdldCoqIC9hcGkyL2pzb24vc3ViY2xhc3NpZmljYXRpb25JbmRpYW4ve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfSB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IEluZGlhbiBzdGF0ZSBvZiBVbmlvbiB0ZXJyaXRvcnkgYWNjb3JkaW5nIHRvIElTTyAzMTY2LTI6SU4gYmFzZWQgb24gdGhlIG5hbWUuCipJbmRpYW5BcGkqIHwgWyoqc3ViY2xhc3NpZmljYXRpb25faW5kaWFuX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL0luZGlhbkFwaS5tZCNzdWJjbGFzc2lmaWNhdGlvbl9pbmRpYW5fYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9zdWJjbGFzc2lmaWNhdGlvbkluZGlhbkJhdGNoIHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgSW5kaWFuIHN0YXRlIG9mIFVuaW9uIHRlcnJpdG9yeSBhY2NvcmRpbmcgdG8gSVNPIDMxNjYtMjpJTiBiYXNlZCBvbiBhIGxpc3Qgb2YgdXAgdG8gMTAwIG5hbWVzLgoqSW5kaWFuQXBpKiB8IFsqKnN1YmNsYXNzaWZpY2F0aW9uX2luZGlhbl9mdWxsKipdKGRvY3MvYXBpcy90YWdzL0luZGlhbkFwaS5tZCNzdWJjbGFzc2lmaWNhdGlvbl9pbmRpYW5fZnVsbCkgfCAqKmdldCoqIC9hcGkyL2pzb24vc3ViY2xhc3NpZmljYXRpb25JbmRpYW5GdWxsL3tmdWxsTmFtZX0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBJbmRpYW4gc3RhdGUgb2YgVW5pb24gdGVycml0b3J5IGFjY29yZGluZyB0byBJU08gMzE2Ni0yOklOIGJhc2VkIG9uIHRoZSBuYW1lLgoqSW5kaWFuQXBpKiB8IFsqKnN1YmNsYXNzaWZpY2F0aW9uX2luZGlhbl9mdWxsX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL0luZGlhbkFwaS5tZCNzdWJjbGFzc2lmaWNhdGlvbl9pbmRpYW5fZnVsbF9iYXRjaCkgfCAqKnBvc3QqKiAvYXBpMi9qc29uL3N1YmNsYXNzaWZpY2F0aW9uSW5kaWFuRnVsbEJhdGNoIHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgSW5kaWFuIHN0YXRlIG9mIFVuaW9uIHRlcnJpdG9yeSBhY2NvcmRpbmcgdG8gSVNPIDMxNjYtMjpJTiBiYXNlZCBvbiBhIGxpc3Qgb2YgdXAgdG8gMTAwIG5hbWVzLgoqSmFwYW5lc2VBcGkqIHwgWyoqZ2VuZGVyX2phcGFuZXNlX25hbWVfZnVsbCoqXShkb2NzL2FwaXMvdGFncy9KYXBhbmVzZUFwaS5tZCNnZW5kZXJfamFwYW5lc2VfbmFtZV9mdWxsKSB8ICoqZ2V0KiogL2FwaTIvanNvbi9nZW5kZXJKYXBhbmVzZU5hbWVGdWxsL3tqYXBhbmVzZU5hbWV9IHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBKYXBhbmVzZSBmdWxsIG5hbWUgZXguIOeOi+aZk+aYjgoqSmFwYW5lc2VBcGkqIHwgWyoqZ2VuZGVyX2phcGFuZXNlX25hbWVfZnVsbF9iYXRjaCoqXShkb2NzL2FwaXMvdGFncy9KYXBhbmVzZUFwaS5tZCNnZW5kZXJfamFwYW5lc2VfbmFtZV9mdWxsX2JhdGNoKSB8ICoqcG9zdCoqIC9hcGkyL2pzb24vZ2VuZGVySmFwYW5lc2VOYW1lRnVsbEJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwIGZ1bGwgbmFtZXMKKkphcGFuZXNlQXBpKiB8IFsqKmdlbmRlcl9qYXBhbmVzZV9uYW1lX3BpbnlpbioqXShkb2NzL2FwaXMvdGFncy9KYXBhbmVzZUFwaS5tZCNnZW5kZXJfamFwYW5lc2VfbmFtZV9waW55aW4pIHwgKipnZXQqKiAvYXBpMi9qc29uL2dlbmRlckphcGFuZXNlTmFtZS97amFwYW5lc2VTdXJuYW1lfS97amFwYW5lc2VHaXZlbk5hbWV9IHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBKYXBhbmVzZSBuYW1lIGluIExBVElOIChQaW55aW4pLgoqSmFwYW5lc2VBcGkqIHwgWyoqZ2VuZGVyX2phcGFuZXNlX25hbWVfcGlueWluX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL0phcGFuZXNlQXBpLm1kI2dlbmRlcl9qYXBhbmVzZV9uYW1lX3Bpbnlpbl9iYXRjaCkgfCAqKnBvc3QqKiAvYXBpMi9qc29uL2dlbmRlckphcGFuZXNlTmFtZUJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwIEphcGFuZXNlIG5hbWVzIGluIExBVElOIChQaW55aW4pLgoqSmFwYW5lc2VBcGkqIHwgWyoqamFwYW5lc2VfbmFtZV9nZW5kZXJfa2FuamlfY2FuZGlkYXRlc19iYXRjaCoqXShkb2NzL2FwaXMvdGFncy9KYXBhbmVzZUFwaS5tZCNqYXBhbmVzZV9uYW1lX2dlbmRlcl9rYW5qaV9jYW5kaWRhdGVzX2JhdGNoKSB8ICoqcG9zdCoqIC9hcGkyL2pzb24vamFwYW5lc2VOYW1lR2VuZGVyS2FuamlDYW5kaWRhdGVzQmF0Y2ggfCBJZGVudGlmeSBqYXBhbmVzZSBuYW1lIGNhbmRpZGF0ZXMgaW4gS0FOSkksIGJhc2VkIG9uIHRoZSByb21hbml6ZWQgbmFtZSAoZmlyc3ROYW1lICYjeDNEOyBqYXBhbmVzZUdpdmVuTmFtZTsgbGFzdE5hbWUmI3gzRDtqYXBhbmVzZVN1cm5hbWUpIHdpdGggS05PV04gZ2VuZGVyLCBleC4gWWFtYW1vdG8gU2FuYWUKKkphcGFuZXNlQXBpKiB8IFsqKmphcGFuZXNlX25hbWVfa2FuamlfY2FuZGlkYXRlcyoqXShkb2NzL2FwaXMvdGFncy9KYXBhbmVzZUFwaS5tZCNqYXBhbmVzZV9uYW1lX2thbmppX2NhbmRpZGF0ZXMpIHwgKipnZXQqKiAvYXBpMi9qc29uL2phcGFuZXNlTmFtZUthbmppQ2FuZGlkYXRlcy97amFwYW5lc2VTdXJuYW1lTGF0aW59L3tqYXBhbmVzZUdpdmVuTmFtZUxhdGlufSB8IElkZW50aWZ5IGphcGFuZXNlIG5hbWUgY2FuZGlkYXRlcyBpbiBLQU5KSSwgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIGV4LiBZYW1hbW90byBTYW5hZQoqSmFwYW5lc2VBcGkqIHwgWyoqamFwYW5lc2VfbmFtZV9rYW5qaV9jYW5kaWRhdGVzMSoqXShkb2NzL2FwaXMvdGFncy9KYXBhbmVzZUFwaS5tZCNqYXBhbmVzZV9uYW1lX2thbmppX2NhbmRpZGF0ZXMxKSB8ICoqZ2V0KiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVLYW5qaUNhbmRpZGF0ZXMve2phcGFuZXNlU3VybmFtZUxhdGlufS97amFwYW5lc2VHaXZlbk5hbWVMYXRpbn0ve2tub3duR2VuZGVyfSB8IElkZW50aWZ5IGphcGFuZXNlIG5hbWUgY2FuZGlkYXRlcyBpbiBLQU5KSSwgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIGV4LiBZYW1hbW90byBTYW5hZSAtIGFuZCBhIGtub3duIGdlbmRlci4KKkphcGFuZXNlQXBpKiB8IFsqKmphcGFuZXNlX25hbWVfa2FuamlfY2FuZGlkYXRlc19iYXRjaCoqXShkb2NzL2FwaXMvdGFncy9KYXBhbmVzZUFwaS5tZCNqYXBhbmVzZV9uYW1lX2thbmppX2NhbmRpZGF0ZXNfYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVLYW5qaUNhbmRpZGF0ZXNCYXRjaCB8IElkZW50aWZ5IGphcGFuZXNlIG5hbWUgY2FuZGlkYXRlcyBpbiBLQU5KSSwgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIChmaXJzdE5hbWUgJiN4M0Q7IGphcGFuZXNlR2l2ZW5OYW1lOyBsYXN0TmFtZSYjeDNEO2phcGFuZXNlU3VybmFtZSksIGV4LiBZYW1hbW90byBTYW5hZQoqSmFwYW5lc2VBcGkqIHwgWyoqamFwYW5lc2VfbmFtZV9sYXRpbl9jYW5kaWRhdGVzKipdKGRvY3MvYXBpcy90YWdzL0phcGFuZXNlQXBpLm1kI2phcGFuZXNlX25hbWVfbGF0aW5fY2FuZGlkYXRlcykgfCAqKmdldCoqIC9hcGkyL2pzb24vamFwYW5lc2VOYW1lTGF0aW5DYW5kaWRhdGVzL3tqYXBhbmVzZVN1cm5hbWVLYW5qaX0ve2phcGFuZXNlR2l2ZW5OYW1lS2Fuaml9IHwgUm9tYW5pemUgamFwYW5lc2UgbmFtZSwgYmFzZWQgb24gdGhlIG5hbWUgaW4gS2FuamkuCipKYXBhbmVzZUFwaSogfCBbKipqYXBhbmVzZV9uYW1lX2xhdGluX2NhbmRpZGF0ZXNfYmF0Y2gqKl0oZG9jcy9hcGlzL3RhZ3MvSmFwYW5lc2VBcGkubWQjamFwYW5lc2VfbmFtZV9sYXRpbl9jYW5kaWRhdGVzX2JhdGNoKSB8ICoqcG9zdCoqIC9hcGkyL2pzb24vamFwYW5lc2VOYW1lTGF0aW5DYW5kaWRhdGVzQmF0Y2ggfCBSb21hbml6ZSBqYXBhbmVzZSBuYW1lcywgYmFzZWQgb24gdGhlIG5hbWUgaW4gS0FOSkkKKkphcGFuZXNlQXBpKiB8IFsqKmphcGFuZXNlX25hbWVfbWF0Y2gqKl0oZG9jcy9hcGlzL3RhZ3MvSmFwYW5lc2VBcGkubWQjamFwYW5lc2VfbmFtZV9tYXRjaCkgfCAqKmdldCoqIC9hcGkyL2pzb24vamFwYW5lc2VOYW1lTWF0Y2gve2phcGFuZXNlU3VybmFtZUxhdGlufS97amFwYW5lc2VHaXZlbk5hbWVMYXRpbn0ve2phcGFuZXNlTmFtZX0gfCBSZXR1cm4gYSBzY29yZSBmb3IgbWF0Y2hpbmcgSmFwYW5lc2UgbmFtZSBpbiBLQU5KSSBleC4g5bGx5pysIOaXqeiLlyB3aXRoIGEgcm9tYW5pemVkIG5hbWUgZXguIFlhbWFtb3RvIFNhbmFlCipKYXBhbmVzZUFwaSogfCBbKipqYXBhbmVzZV9uYW1lX21hdGNoX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL0phcGFuZXNlQXBpLm1kI2phcGFuZXNlX25hbWVfbWF0Y2hfYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVNYXRjaEJhdGNoIHwgUmV0dXJuIGEgc2NvcmUgZm9yIG1hdGNoaW5nIGEgbGlzdCBvZiBKYXBhbmVzZSBuYW1lcyBpbiBLQU5KSSBleC4g5bGx5pysIOaXqeiLlyB3aXRoIHJvbWFuaXplZCBuYW1lcyBleC4gWWFtYW1vdG8gU2FuYWUKKkphcGFuZXNlQXBpKiB8IFsqKmphcGFuZXNlX25hbWVfbWF0Y2hfZmVlZGJhY2tfbG9vcCoqXShkb2NzL2FwaXMvdGFncy9KYXBhbmVzZUFwaS5tZCNqYXBhbmVzZV9uYW1lX21hdGNoX2ZlZWRiYWNrX2xvb3ApIHwgKipnZXQqKiAvYXBpMi9qc29uL2phcGFuZXNlTmFtZU1hdGNoRmVlZGJhY2tMb29wL3tqYXBhbmVzZVN1cm5hbWVMYXRpbn0ve2phcGFuZXNlR2l2ZW5OYW1lTGF0aW59L3tqYXBhbmVzZU5hbWV9IHwgW0NSRURJVFMgMSBVTklUXSBGZWVkYmFjayBsb29wIHRvIGJldHRlciBwZXJmb3JtIG1hdGNoaW5nIEphcGFuZXNlIG5hbWUgaW4gS0FOSkkgZXguIOWxseacrCDml6noi5cgd2l0aCBhIHJvbWFuaXplZCBuYW1lIGV4LiBZYW1hbW90byBTYW5hZQoqSmFwYW5lc2VBcGkqIHwgWyoqcGFyc2VfamFwYW5lc2VfbmFtZSoqXShkb2NzL2FwaXMvdGFncy9KYXBhbmVzZUFwaS5tZCNwYXJzZV9qYXBhbmVzZV9uYW1lKSB8ICoqZ2V0KiogL2FwaTIvanNvbi9wYXJzZUphcGFuZXNlTmFtZS97amFwYW5lc2VOYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiDlsbHmnKwg5pep6IuXIG9yIFlhbWFtb3RvIFNhbmFlCipKYXBhbmVzZUFwaSogfCBbKipwYXJzZV9qYXBhbmVzZV9uYW1lX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL0phcGFuZXNlQXBpLm1kI3BhcnNlX2phcGFuZXNlX25hbWVfYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9wYXJzZUphcGFuZXNlTmFtZUJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBmaXJzdC9sYXN0IG5hbWUgc3RydWN0dXJlIG9mIGEgbmFtZSwgZXguIOWxseacrCDml6noi5cgb3IgWWFtYW1vdG8gU2FuYWUgCipQZXJzb25hbEFwaSogfCBbKipjb3JyaWRvcioqXShkb2NzL2FwaXMvdGFncy9QZXJzb25hbEFwaS5tZCNjb3JyaWRvcikgfCAqKmdldCoqIC9hcGkyL2pzb24vY29ycmlkb3Ive2NvdW50cnlJc28yRnJvbX0ve2ZpcnN0TmFtZUZyb219L3tsYXN0TmFtZUZyb219L3tjb3VudHJ5SXNvMlRvfS97Zmlyc3ROYW1lVG99L3tsYXN0TmFtZVRvfSB8IFtVU0VTIDIwIFVOSVRTIFBFUiBOQU1FIENPVVBMRV0gSW5mZXIgc2V2ZXJhbCBjbGFzc2lmaWNhdGlvbnMgZm9yIGEgY3Jvc3MgYm9yZGVyIGludGVyYWN0aW9uIGJldHdlZW4gbmFtZXMgKGV4LiByZW1pdCwgdHJhdmVsLCBpbnRsIGNvbSkKKlBlcnNvbmFsQXBpKiB8IFsqKmNvcnJpZG9yX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL1BlcnNvbmFsQXBpLm1kI2NvcnJpZG9yX2JhdGNoKSB8ICoqcG9zdCoqIC9hcGkyL2pzb24vY29ycmlkb3JCYXRjaCB8IFtVU0VTIDIwIFVOSVRTIFBFUiBOQU1FIFBBSVJdIEluZmVyIHNldmVyYWwgY2xhc3NpZmljYXRpb25zIGZvciB1cCB0byAxMDAgY3Jvc3MgYm9yZGVyIGludGVyYWN0aW9uIGJldHdlZW4gbmFtZXMgKGV4LiByZW1pdCwgdHJhdmVsLCBpbnRsIGNvbSkKKlBlcnNvbmFsQXBpKiB8IFsqKmNvdW50cnkqKl0oZG9jcy9hcGlzL3RhZ3MvUGVyc29uYWxBcGkubWQjY291bnRyeSkgfCAqKmdldCoqIC9hcGkyL2pzb24vY291bnRyeS97cGVyc29uYWxOYW1lRnVsbH0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBjb3VudHJ5IG9mIHJlc2lkZW5jZSBvZiBhIHBlcnNvbmFsIGZ1bGwgbmFtZSwgb3Igb25lIHN1cm5hbWUuIEFzc3VtZXMgbmFtZXMgYXMgdGhleSBhcmUgaW4gdGhlIGNvdW50cnkgb2YgcmVzaWRlbmNlIE9SIHRoZSBjb3VudHJ5IG9mIG9yaWdpbi4KKlBlcnNvbmFsQXBpKiB8IFsqKmNvdW50cnlfYmF0Y2gqKl0oZG9jcy9hcGlzL3RhZ3MvUGVyc29uYWxBcGkubWQjY291bnRyeV9iYXRjaCkgfCAqKnBvc3QqKiAvYXBpMi9qc29uL2NvdW50cnlCYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgb2YgcmVzaWRlbmNlIG9mIHVwIHRvIDEwMCBwZXJzb25hbCBmdWxsIG5hbWVzLCBvciBzdXJuYW1lcy4gQXNzdW1lcyBuYW1lcyBhcyB0aGV5IGFyZSBpbiB0aGUgY291bnRyeSBvZiByZXNpZGVuY2UgT1IgdGhlIGNvdW50cnkgb2Ygb3JpZ2luLgoqUGVyc29uYWxBcGkqIHwgWyoqZGlhc3BvcmEqKl0oZG9jcy9hcGlzL3RhZ3MvUGVyc29uYWxBcGkubWQjZGlhc3BvcmEpIHwgKipnZXQqKiAvYXBpMi9qc29uL2RpYXNwb3JhL3tjb3VudHJ5SXNvMn0ve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfSB8IFtVU0VTIDIwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGV0aG5pY2l0eS9kaWFzcG9yYSBvZiBhIHBlcnNvbmFsIG5hbWUsIGdpdmVuIGEgY291bnRyeSBvZiByZXNpZGVuY2UgSVNPMiBjb2RlIChleC4gVVMsIENBLCBBVSwgTlogZXRjLikKKlBlcnNvbmFsQXBpKiB8IFsqKmRpYXNwb3JhX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL1BlcnNvbmFsQXBpLm1kI2RpYXNwb3JhX2JhdGNoKSB8ICoqcG9zdCoqIC9hcGkyL2pzb24vZGlhc3BvcmFCYXRjaCB8IFtVU0VTIDIwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGV0aG5pY2l0eS9kaWFzcG9yYSBvZiB1cCB0byAxMDAgcGVyc29uYWwgbmFtZXMsIGdpdmVuIGEgY291bnRyeSBvZiByZXNpZGVuY2UgSVNPMiBjb2RlIChleC4gVVMsIENBLCBBVSwgTlogZXRjLikKKlBlcnNvbmFsQXBpKiB8IFsqKmdlbmRlcioqXShkb2NzL2FwaXMvdGFncy9QZXJzb25hbEFwaS5tZCNnZW5kZXIpIHwgKipnZXQqKiAvYXBpMi9qc29uL2dlbmRlci97Zmlyc3ROYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEganVzdCBhIGZpdmVuIG5hbWUsIGFzc3VtaW5nIGRlZmF1bHQgJiN4Mjc7VVMmI3gyNzsgbG9jYWwgY29udGV4dC4gUGxlYXNlIHVzZSBwcmVmZXJhYmx5IGZ1bGwgbmFtZXMgYW5kIGxvY2FsIGdlb2dyYXBoaWMgY29udGV4dCBmb3IgYmV0dGVyIGFjY3VyYWN5LgoqUGVyc29uYWxBcGkqIHwgWyoqZ2VuZGVyMSoqXShkb2NzL2FwaXMvdGFncy9QZXJzb25hbEFwaS5tZCNnZW5kZXIxKSB8ICoqZ2V0KiogL2FwaTIvanNvbi9nZW5kZXIve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEgbmFtZS4KKlBlcnNvbmFsQXBpKiB8IFsqKmdlbmRlcl9iYXRjaCoqXShkb2NzL2FwaXMvdGFncy9QZXJzb25hbEFwaS5tZCNnZW5kZXJfYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9nZW5kZXJCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIHVwIHRvIDEwMCBuYW1lcywgZGV0ZWN0aW5nIGF1dG9tYXRpY2FsbHkgdGhlIGN1bHR1cmFsIGNvbnRleHQuCipQZXJzb25hbEFwaSogfCBbKipnZW5kZXJfZnVsbCoqXShkb2NzL2FwaXMvdGFncy9QZXJzb25hbEFwaS5tZCNnZW5kZXJfZnVsbCkgfCAqKmdldCoqIC9hcGkyL2pzb24vZ2VuZGVyRnVsbC97ZnVsbE5hbWV9IHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBmdWxsIG5hbWUsIGV4LiBKb2huIEguIFNtaXRoCipQZXJzb25hbEFwaSogfCBbKipnZW5kZXJfZnVsbF9iYXRjaCoqXShkb2NzL2FwaXMvdGFncy9QZXJzb25hbEFwaS5tZCNnZW5kZXJfZnVsbF9iYXRjaCkgfCAqKnBvc3QqKiAvYXBpMi9qc29uL2dlbmRlckZ1bGxCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIHVwIHRvIDEwMCBmdWxsIG5hbWVzLCBkZXRlY3RpbmcgYXV0b21hdGljYWxseSB0aGUgY3VsdHVyYWwgY29udGV4dC4KKlBlcnNvbmFsQXBpKiB8IFsqKmdlbmRlcl9mdWxsX2dlbyoqXShkb2NzL2FwaXMvdGFncy9QZXJzb25hbEFwaS5tZCNnZW5kZXJfZnVsbF9nZW8pIHwgKipnZXQqKiAvYXBpMi9qc29uL2dlbmRlckZ1bGxHZW8ve2Z1bGxOYW1lfS97Y291bnRyeUlzbzJ9IHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBmdWxsIG5hbWUsIGdpdmVuIGEgbG9jYWwgY29udGV4dCAoSVNPMiBjb3VudHJ5IGNvZGUpLgoqUGVyc29uYWxBcGkqIHwgWyoqZ2VuZGVyX2Z1bGxfZ2VvX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL1BlcnNvbmFsQXBpLm1kI2dlbmRlcl9mdWxsX2dlb19iYXRjaCkgfCAqKnBvc3QqKiAvYXBpMi9qc29uL2dlbmRlckZ1bGxHZW9CYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIHVwIHRvIDEwMCBmdWxsIG5hbWVzLCB3aXRoIGEgZ2l2ZW4gY3VsdHVyYWwgY29udGV4dCAoY291bnRyeSBJU08yIGNvZGUpLgoqUGVyc29uYWxBcGkqIHwgWyoqZ2VuZGVyX2dlbyoqXShkb2NzL2FwaXMvdGFncy9QZXJzb25hbEFwaS5tZCNnZW5kZXJfZ2VvKSB8ICoqZ2V0KiogL2FwaTIvanNvbi9nZW5kZXJHZW8ve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfS97Y291bnRyeUlzbzJ9IHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBuYW1lLCBnaXZlbiBhIGxvY2FsIGNvbnRleHQgKElTTzIgY291bnRyeSBjb2RlKS4KKlBlcnNvbmFsQXBpKiB8IFsqKmdlbmRlcl9nZW9fYmF0Y2gqKl0oZG9jcy9hcGlzL3RhZ3MvUGVyc29uYWxBcGkubWQjZ2VuZGVyX2dlb19iYXRjaCkgfCAqKnBvc3QqKiAvYXBpMi9qc29uL2dlbmRlckdlb0JhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwIG5hbWVzLCBlYWNoIGdpdmVuIGEgbG9jYWwgY29udGV4dCAoSVNPMiBjb3VudHJ5IGNvZGUpLgoqUGVyc29uYWxBcGkqIHwgWyoqb3JpZ2luKipdKGRvY3MvYXBpcy90YWdzL1BlcnNvbmFsQXBpLm1kI29yaWdpbikgfCAqKmdldCoqIC9hcGkyL2pzb24vb3JpZ2luL3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBjb3VudHJ5IG9mIG9yaWdpbiBvZiBhIHBlcnNvbmFsIG5hbWUuIEFzc3VtZXMgbmFtZXMgYXMgdGhleSBhcmUgaW4gdGhlIGNvdW50cnkgb2Ygb3JpZ2luLiBGb3IgVVMsIENBLCBBVSwgTlogYW5kIG90aGVyIG1lbHRpbmctcG90cyA6IHVzZSAmI3gyNztkaWFzcG9yYSYjeDI3OyBpbnN0ZWFkLgoqUGVyc29uYWxBcGkqIHwgWyoqb3JpZ2luX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL1BlcnNvbmFsQXBpLm1kI29yaWdpbl9iYXRjaCkgfCAqKnBvc3QqKiAvYXBpMi9qc29uL29yaWdpbkJhdGNoIHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgY291bnRyeSBvZiBvcmlnaW4gb2YgdXAgdG8gMTAwIG5hbWVzLCBkZXRlY3RpbmcgYXV0b21hdGljYWxseSB0aGUgY3VsdHVyYWwgY29udGV4dC4KKlBlcnNvbmFsQXBpKiB8IFsqKnBhcnNlX25hbWUqKl0oZG9jcy9hcGlzL3RhZ3MvUGVyc29uYWxBcGkubWQjcGFyc2VfbmFtZSkgfCAqKmdldCoqIC9hcGkyL2pzb24vcGFyc2VOYW1lL3tuYW1lRnVsbH0gfCBJbmZlciB0aGUgbGlrZWx5IGZpcnN0L2xhc3QgbmFtZSBzdHJ1Y3R1cmUgb2YgYSBuYW1lLCBleC4gSm9obiBTbWl0aCBvciBTTUlUSCwgSm9obiBvciBTTUlUSDsgSm9obi4gCipQZXJzb25hbEFwaSogfCBbKipwYXJzZV9uYW1lX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL1BlcnNvbmFsQXBpLm1kI3BhcnNlX25hbWVfYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9wYXJzZU5hbWVCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiBKb2huIFNtaXRoIG9yIFNNSVRILCBKb2huIG9yIFNNSVRIOyBKb2huLgoqUGVyc29uYWxBcGkqIHwgWyoqcGFyc2VfbmFtZV9nZW8qKl0oZG9jcy9hcGlzL3RhZ3MvUGVyc29uYWxBcGkubWQjcGFyc2VfbmFtZV9nZW8pIHwgKipnZXQqKiAvYXBpMi9qc29uL3BhcnNlTmFtZS97bmFtZUZ1bGx9L3tjb3VudHJ5SXNvMn0gfCBJbmZlciB0aGUgbGlrZWx5IGZpcnN0L2xhc3QgbmFtZSBzdHJ1Y3R1cmUgb2YgYSBuYW1lLCBleC4gSm9obiBTbWl0aCBvciBTTUlUSCwgSm9obiBvciBTTUlUSDsgSm9obi4gRm9yIGJldHRlciBhY2N1cmFjeSwgcHJvdmlkZSBhIGdlb2dyYXBoaWMgY29udGV4dC4KKlBlcnNvbmFsQXBpKiB8IFsqKnBhcnNlX25hbWVfZ2VvX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL1BlcnNvbmFsQXBpLm1kI3BhcnNlX25hbWVfZ2VvX2JhdGNoKSB8ICoqcG9zdCoqIC9hcGkyL2pzb24vcGFyc2VOYW1lR2VvQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGZpcnN0L2xhc3QgbmFtZSBzdHJ1Y3R1cmUgb2YgYSBuYW1lLCBleC4gSm9obiBTbWl0aCBvciBTTUlUSCwgSm9obiBvciBTTUlUSDsgSm9obi4gR2l2aW5nIGEgbG9jYWwgY29udGV4dCBpbXByb3ZlcyBwcmVjaXNpb24uIAoqUGVyc29uYWxBcGkqIHwgWyoqcmVsaWdpb24yKipdKGRvY3MvYXBpcy90YWdzL1BlcnNvbmFsQXBpLm1kI3JlbGlnaW9uMikgfCAqKmdldCoqIC9hcGkyL2pzb24vcmVsaWdpb24ve2NvdW50cnlJc28yfS97c3ViRGl2aXNpb25Jc28zMTY2Mn0ve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfSB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IHJlbGlnaW9uIG9mIGEgcGVyc29uYWwgZmlyc3QvbGFzdCBuYW1lLiBOQjogb25seSBmb3IgSU5ESUEgKGFzIG9mIGN1cnJlbnQgdmVyc2lvbikuCipQZXJzb25hbEFwaSogfCBbKipyZWxpZ2lvbl9iYXRjaCoqXShkb2NzL2FwaXMvdGFncy9QZXJzb25hbEFwaS5tZCNyZWxpZ2lvbl9iYXRjaCkgfCAqKnBvc3QqKiAvYXBpMi9qc29uL3JlbGlnaW9uQmF0Y2ggfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSByZWxpZ2lvbiBvZiB1cCB0byAxMDAgcGVyc29uYWwgZmlyc3QvbGFzdCBuYW1lcy4gTkI6IG9ubHkgZm9yIEluZGlhIGFzIG9mIGN1cnJlbnRseS4KKlBlcnNvbmFsQXBpKiB8IFsqKnJlbGlnaW9uX2Z1bGwqKl0oZG9jcy9hcGlzL3RhZ3MvUGVyc29uYWxBcGkubWQjcmVsaWdpb25fZnVsbCkgfCAqKmdldCoqIC9hcGkyL2pzb24vcmVsaWdpb25GdWxsL3tjb3VudHJ5SXNvMn0ve3N1YkRpdmlzaW9uSXNvMzE2NjJ9L3twZXJzb25hbE5hbWVGdWxsfSB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IHJlbGlnaW9uIG9mIGEgcGVyc29uYWwgZnVsbCBuYW1lLiBOQjogb25seSBmb3IgSU5ESUEgKGFzIG9mIGN1cnJlbnQgdmVyc2lvbikuCipQZXJzb25hbEFwaSogfCBbKipyZWxpZ2lvbl9mdWxsX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL1BlcnNvbmFsQXBpLm1kI3JlbGlnaW9uX2Z1bGxfYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9yZWxpZ2lvbkZ1bGxCYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IHJlbGlnaW9uIG9mIHVwIHRvIDEwMCBwZXJzb25hbCBmdWxsIG5hbWVzLiBOQjogb25seSBmb3IgSW5kaWEgYXMgb2YgY3VycmVudGx5LgoqUGVyc29uYWxBcGkqIHwgWyoqc3ViY2xhc3NpZmljYXRpb24qKl0oZG9jcy9hcGlzL3RhZ3MvUGVyc29uYWxBcGkubWQjc3ViY2xhc3NpZmljYXRpb24pIHwgKipnZXQqKiAvYXBpMi9qc29uL3N1YmNsYXNzaWZpY2F0aW9uL3tjb3VudHJ5SXNvMn0ve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfSB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IG9yaWdpbiBvZiBhIG5hbWUgYXQgYSBjb3VudHJ5IHN1YmNsYXNzaWZpY2F0aW9uIGxldmVsIChzdGF0ZSBvciByZWdlaW9uKS4gSW5pdGlhbGx5LCB0aGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBJbmRpYSAoSVNPMiBjb2RlICYjeDI3O0lOJiN4Mjc7KS4KKlBlcnNvbmFsQXBpKiB8IFsqKnN1YmNsYXNzaWZpY2F0aW9uX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL1BlcnNvbmFsQXBpLm1kI3N1YmNsYXNzaWZpY2F0aW9uX2JhdGNoKSB8ICoqcG9zdCoqIC9hcGkyL2pzb24vc3ViY2xhc3NpZmljYXRpb25CYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IG9yaWdpbiBvZiBhIGxpc3Qgb2YgdXAgdG8gMTAwIG5hbWVzIGF0IGEgY291bnRyeSBzdWJjbGFzc2lmaWNhdGlvbiBsZXZlbCAoc3RhdGUgb3IgcmVnZWlvbikuIEluaXRpYWxseSwgdGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgSW5kaWEgKElTTzIgY29kZSAmI3gyNztJTiYjeDI3OykuCipQZXJzb25hbEFwaSogfCBbKipzdWJjbGFzc2lmaWNhdGlvbl9mdWxsKipdKGRvY3MvYXBpcy90YWdzL1BlcnNvbmFsQXBpLm1kI3N1YmNsYXNzaWZpY2F0aW9uX2Z1bGwpIHwgKipnZXQqKiAvYXBpMi9qc29uL3N1YmNsYXNzaWZpY2F0aW9uRnVsbC97Y291bnRyeUlzbzJ9L3tmdWxsTmFtZX0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBvcmlnaW4gb2YgYSBuYW1lIGF0IGEgY291bnRyeSBzdWJjbGFzc2lmaWNhdGlvbiBsZXZlbCAoc3RhdGUgb3IgcmVnZWlvbikuIEluaXRpYWxseSwgdGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgSW5kaWEgKElTTzIgY29kZSAmI3gyNztJTiYjeDI3OykuCipQZXJzb25hbEFwaSogfCBbKipzdWJjbGFzc2lmaWNhdGlvbl9mdWxsX2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL1BlcnNvbmFsQXBpLm1kI3N1YmNsYXNzaWZpY2F0aW9uX2Z1bGxfYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9zdWJjbGFzc2lmaWNhdGlvbkZ1bGxCYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IG9yaWdpbiBvZiBhIGxpc3Qgb2YgdXAgdG8gMTAwIG5hbWVzIGF0IGEgY291bnRyeSBzdWJjbGFzc2lmaWNhdGlvbiBsZXZlbCAoc3RhdGUgb3IgcmVnZWlvbikuIEluaXRpYWxseSwgdGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgSW5kaWEgKElTTzIgY29kZSAmI3gyNztJTiYjeDI3OykuCipQZXJzb25hbEFwaSogfCBbKip1c19yYWNlX2V0aG5pY2l0eSoqXShkb2NzL2FwaXMvdGFncy9QZXJzb25hbEFwaS5tZCN1c19yYWNlX2V0aG5pY2l0eSkgfCAqKmdldCoqIC9hcGkyL2pzb24vdXNSYWNlRXRobmljaXR5L3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgYSBVUyByZXNpZGVudCYjeDI3O3MgbGlrZWx5IHJhY2UvZXRobmljaXR5IGFjY29yZGluZyB0byBVUyBDZW5zdXMgdGF4b25vbXkgV19OTCAod2hpdGUsIG5vbiBsYXRpbm8pLCBITCAoaGlzcGFubyBsYXRpbm8pLCAgQSAoYXNpYW4sIG5vbiBsYXRpbm8pLCBCX05MIChibGFjaywgbm9uIGxhdGlubykuIE9wdGlvbmFsbHkgYWRkIGhlYWRlciBYLU9QVElPTi1VU1JBQ0VFVEhOSUNJVFktVEFYT05PTVk6IFVTUkFDRUVUSE5JQ0lUWS02Q0xBU1NFUyBmb3IgdHdvIGFkZGl0aW9uYWwgY2xhc3NlcywgQUlfQU4gKEFtZXJpY2FuIEluZGlhbiBvciBBbGFza2FuIE5hdGl2ZSkgYW5kIFBJIChQYWNpZmljIElzbGFuZGVyKS4KKlBlcnNvbmFsQXBpKiB8IFsqKnVzX3JhY2VfZXRobmljaXR5X2JhdGNoKipdKGRvY3MvYXBpcy90YWdzL1BlcnNvbmFsQXBpLm1kI3VzX3JhY2VfZXRobmljaXR5X2JhdGNoKSB8ICoqcG9zdCoqIC9hcGkyL2pzb24vdXNSYWNlRXRobmljaXR5QmF0Y2ggfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdXAtdG8gMTAwIFVTIHJlc2lkZW50JiN4Mjc7cyBsaWtlbHkgcmFjZS9ldGhuaWNpdHkgYWNjb3JkaW5nIHRvIFVTIENlbnN1cyB0YXhvbm9teS4gT3V0cHV0IGlzIFdfTkwgKHdoaXRlLCBub24gbGF0aW5vKSwgSEwgKGhpc3Bhbm8gbGF0aW5vKSwgIEEgKGFzaWFuLCBub24gbGF0aW5vKSwgQl9OTCAoYmxhY2ssIG5vbiBsYXRpbm8pLiBPcHRpb25hbGx5IGFkZCBoZWFkZXIgWC1PUFRJT04tVVNSQUNFRVRITklDSVRZLVRBWE9OT01ZOiBVU1JBQ0VFVEhOSUNJVFktNkNMQVNTRVMgZm9yIHR3byBhZGRpdGlvbmFsIGNsYXNzZXMsIEFJX0FOIChBbWVyaWNhbiBJbmRpYW4gb3IgQWxhc2thbiBOYXRpdmUpIGFuZCBQSSAoUGFjaWZpYyBJc2xhbmRlcikuCipQZXJzb25hbEFwaSogfCBbKip1c19yYWNlX2V0aG5pY2l0eV96aXA1KipdKGRvY3MvYXBpcy90YWdzL1BlcnNvbmFsQXBpLm1kI3VzX3JhY2VfZXRobmljaXR5X3ppcDUpIHwgKipnZXQqKiAvYXBpMi9qc29uL3VzUmFjZUV0aG5pY2l0eVpJUDUve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfS97emlwNUNvZGV9IHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIGEgVVMgcmVzaWRlbnQmI3gyNztzIGxpa2VseSByYWNlL2V0aG5pY2l0eSBhY2NvcmRpbmcgdG8gVVMgQ2Vuc3VzIHRheG9ub215LCB1c2luZyAob3B0aW9uYWwpIFpJUDUgY29kZSBpbmZvLiBPdXRwdXQgaXMgV19OTCAod2hpdGUsIG5vbiBsYXRpbm8pLCBITCAoaGlzcGFubyBsYXRpbm8pLCAgQSAoYXNpYW4sIG5vbiBsYXRpbm8pLCBCX05MIChibGFjaywgbm9uIGxhdGlubykuIE9wdGlvbmFsbHkgYWRkIGhlYWRlciBYLU9QVElPTi1VU1JBQ0VFVEhOSUNJVFktVEFYT05PTVk6IFVTUkFDRUVUSE5JQ0lUWS02Q0xBU1NFUyBmb3IgdHdvIGFkZGl0aW9uYWwgY2xhc3NlcywgQUlfQU4gKEFtZXJpY2FuIEluZGlhbiBvciBBbGFza2FuIE5hdGl2ZSkgYW5kIFBJIChQYWNpZmljIElzbGFuZGVyKS4KKlBlcnNvbmFsQXBpKiB8IFsqKnVzX3ppcF9yYWNlX2V0aG5pY2l0eV9iYXRjaCoqXShkb2NzL2FwaXMvdGFncy9QZXJzb25hbEFwaS5tZCN1c196aXBfcmFjZV9ldGhuaWNpdHlfYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi91c1ppcFJhY2VFdGhuaWNpdHlCYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB1cC10byAxMDAgVVMgcmVzaWRlbnQmI3gyNztzIGxpa2VseSByYWNlL2V0aG5pY2l0eSBhY2NvcmRpbmcgdG8gVVMgQ2Vuc3VzIHRheG9ub215LCB3aXRoIChvcHRpb25hbCkgWklQIGNvZGUuIE91dHB1dCBpcyBXX05MICh3aGl0ZSwgbm9uIGxhdGlubyksIEhMIChoaXNwYW5vIGxhdGlubyksICBBIChhc2lhbiwgbm9uIGxhdGlubyksIEJfTkwgKGJsYWNrLCBub24gbGF0aW5vKS4gT3B0aW9uYWxseSBhZGQgaGVhZGVyIFgtT1BUSU9OLVVTUkFDRUVUSE5JQ0lUWS1UQVhPTk9NWTogVVNSQUNFRVRITklDSVRZLTZDTEFTU0VTIGZvciB0d28gYWRkaXRpb25hbCBjbGFzc2VzLCBBSV9BTiAoQW1lcmljYW4gSW5kaWFuIG9yIEFsYXNrYW4gTmF0aXZlKSBhbmQgUEkgKFBhY2lmaWMgSXNsYW5kZXIpLgoqU29jaWFsQXBpKiB8IFsqKnBob25lX2NvZGUqKl0oZG9jcy9hcGlzL3RhZ3MvU29jaWFsQXBpLm1kI3Bob25lX2NvZGUpIHwgKipnZXQqKiAvYXBpMi9qc29uL3Bob25lQ29kZS97Zmlyc3ROYW1lfS97bGFzdE5hbWV9L3twaG9uZU51bWJlcn0gfCBbVVNFUyAxMSBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBjb3VudHJ5IGFuZCBwaG9uZSBwcmVmaXgsIGdpdmVuIGEgcGVyc29uYWwgbmFtZSBhbmQgZm9ybWF0dGVkIC8gdW5mb3JtYXR0ZWQgcGhvbmUgbnVtYmVyLgoqU29jaWFsQXBpKiB8IFsqKnBob25lX2NvZGVfYmF0Y2gqKl0oZG9jcy9hcGlzL3RhZ3MvU29jaWFsQXBpLm1kI3Bob25lX2NvZGVfYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9waG9uZUNvZGVCYXRjaCB8IFtVU0VTIDExIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgYW5kIHBob25lIHByZWZpeCwgb2YgdXAgdG8gMTAwIHBlcnNvbmFsIG5hbWVzLCBkZXRlY3RpbmcgYXV0b21hdGljYWxseSB0aGUgbG9jYWwgY29udGV4dCBnaXZlbiBhIG5hbWUgYW5kIGZvcm1hdHRlZCAvIHVuZm9ybWF0dGVkIHBob25lIG51bWJlci4KKlNvY2lhbEFwaSogfCBbKipwaG9uZV9jb2RlX2dlbyoqXShkb2NzL2FwaXMvdGFncy9Tb2NpYWxBcGkubWQjcGhvbmVfY29kZV9nZW8pIHwgKipnZXQqKiAvYXBpMi9qc29uL3Bob25lQ29kZUdlby97Zmlyc3ROYW1lfS97bGFzdE5hbWV9L3twaG9uZU51bWJlcn0ve2NvdW50cnlJc28yfSB8IFtVU0VTIDExIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IHBob25lIHByZWZpeCwgZ2l2ZW4gYSBwZXJzb25hbCBuYW1lIGFuZCBmb3JtYXR0ZWQgLyB1bmZvcm1hdHRlZCBwaG9uZSBudW1iZXIsIHdpdGggYSBsb2NhbCBjb250ZXh0IChJU08yIGNvdW50cnkgb2YgcmVzaWRlbmNlKS4KKlNvY2lhbEFwaSogfCBbKipwaG9uZV9jb2RlX2dlb19iYXRjaCoqXShkb2NzL2FwaXMvdGFncy9Tb2NpYWxBcGkubWQjcGhvbmVfY29kZV9nZW9fYmF0Y2gpIHwgKipwb3N0KiogL2FwaTIvanNvbi9waG9uZUNvZGVHZW9CYXRjaCB8IFtVU0VTIDExIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgYW5kIHBob25lIHByZWZpeCwgb2YgdXAgdG8gMTAwIHBlcnNvbmFsIG5hbWVzLCB3aXRoIGEgbG9jYWwgY29udGV4dCAoSVNPMiBjb3VudHJ5IG9mIHJlc2lkZW5jZSkuCipTb2NpYWxBcGkqIHwgWyoqcGhvbmVfY29kZV9nZW9fZmVlZGJhY2tfbG9vcCoqXShkb2NzL2FwaXMvdGFncy9Tb2NpYWxBcGkubWQjcGhvbmVfY29kZV9nZW9fZmVlZGJhY2tfbG9vcCkgfCAqKmdldCoqIC9hcGkyL2pzb24vcGhvbmVDb2RlR2VvRmVlZGJhY2tMb29wL3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0ve3Bob25lTnVtYmVyfS97cGhvbmVOdW1iZXJFMTY0fS97Y291bnRyeUlzbzJ9IHwgW0NSRURJVFMgMSBVTklUXSBGZWVkYmFjayBsb29wIHRvIGJldHRlciBpbmZlciB0aGUgbGlrZWx5IHBob25lIHByZWZpeCwgZ2l2ZW4gYSBwZXJzb25hbCBuYW1lIGFuZCBmb3JtYXR0ZWQgLyB1bmZvcm1hdHRlZCBwaG9uZSBudW1iZXIsIHdpdGggYSBsb2NhbCBjb250ZXh0IChJU08yIGNvdW50cnkgb2YgcmVzaWRlbmNlKS4KCiMjIERvY3VtZW50YXRpb24gRm9yIE1vZGVscwoKIC0gW0FQSUJpbGxpbmdQZXJpb2RVc2FnZU91dF0oZG9jcy9tb2RlbHMvQVBJQmlsbGluZ1BlcmlvZFVzYWdlT3V0Lm1kKQogLSBbQVBJQ2xhc3NpZmllck91dF0oZG9jcy9tb2RlbHMvQVBJQ2xhc3NpZmllck91dC5tZCkKIC0gW0FQSUNsYXNzaWZpZXJUYXhvbm9teU91dF0oZG9jcy9tb2RlbHMvQVBJQ2xhc3NpZmllclRheG9ub215T3V0Lm1kKQogLSBbQVBJQ2xhc3NpZmllcnNTdGF0dXNPdXRdKGRvY3MvbW9kZWxzL0FQSUNsYXNzaWZpZXJzU3RhdHVzT3V0Lm1kKQogLSBbQVBJQ291bnRlclYyT3V0XShkb2NzL21vZGVscy9BUElDb3VudGVyVjJPdXQubWQpCiAtIFtBUElLZXlPdXRdKGRvY3MvbW9kZWxzL0FQSUtleU91dC5tZCkKIC0gW0FQSVBlcmlvZFVzYWdlT3V0XShkb2NzL21vZGVscy9BUElQZXJpb2RVc2FnZU91dC5tZCkKIC0gW0FQSVBsYW5TdWJzY3JpcHRpb25PdXRdKGRvY3MvbW9kZWxzL0FQSVBsYW5TdWJzY3JpcHRpb25PdXQubWQpCiAtIFtBUElTZXJ2aWNlT3V0XShkb2NzL21vZGVscy9BUElTZXJ2aWNlT3V0Lm1kKQogLSBbQVBJU2VydmljZXNPdXRdKGRvY3MvbW9kZWxzL0FQSVNlcnZpY2VzT3V0Lm1kKQogLSBbQVBJVXNhZ2VBZ2dyZWdhdGVkT3V0XShkb2NzL21vZGVscy9BUElVc2FnZUFnZ3JlZ2F0ZWRPdXQubWQpCiAtIFtBUElVc2FnZUhpc3RvcnlPdXRdKGRvY3MvbW9kZWxzL0FQSVVzYWdlSGlzdG9yeU91dC5tZCkKIC0gW0JhdGNoQ29ycmlkb3JJbl0oZG9jcy9tb2RlbHMvQmF0Y2hDb3JyaWRvckluLm1kKQogLSBbQmF0Y2hDb3JyaWRvck91dF0oZG9jcy9tb2RlbHMvQmF0Y2hDb3JyaWRvck91dC5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZUNhc3RlT3V0XShkb2NzL21vZGVscy9CYXRjaEZpcnN0TGFzdE5hbWVDYXN0ZU91dC5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZUNhc3RlZ3JvdXBPdXRdKGRvY3MvbW9kZWxzL0JhdGNoRmlyc3RMYXN0TmFtZUNhc3RlZ3JvdXBPdXQubWQpCiAtIFtCYXRjaEZpcnN0TGFzdE5hbWVEaWFzcG9yYWVkT3V0XShkb2NzL21vZGVscy9CYXRjaEZpcnN0TGFzdE5hbWVEaWFzcG9yYWVkT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lR2VuZGVySW5dKGRvY3MvbW9kZWxzL0JhdGNoRmlyc3RMYXN0TmFtZUdlbmRlckluLm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lR2VuZGVyZWRPdXRdKGRvY3MvbW9kZWxzL0JhdGNoRmlyc3RMYXN0TmFtZUdlbmRlcmVkT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lR2VvSW5dKGRvY3MvbW9kZWxzL0JhdGNoRmlyc3RMYXN0TmFtZUdlb0luLm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lR2VvU3ViY2xhc3NpZmljYXRpb25PdXRdKGRvY3MvbW9kZWxzL0JhdGNoRmlyc3RMYXN0TmFtZUdlb1N1YmNsYXNzaWZpY2F0aW9uT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lR2VvU3ViZGl2aXNpb25Jbl0oZG9jcy9tb2RlbHMvQmF0Y2hGaXJzdExhc3ROYW1lR2VvU3ViZGl2aXNpb25Jbi5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZUdlb1ppcHBlZEluXShkb2NzL21vZGVscy9CYXRjaEZpcnN0TGFzdE5hbWVHZW9aaXBwZWRJbi5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZUluXShkb2NzL21vZGVscy9CYXRjaEZpcnN0TGFzdE5hbWVJbi5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZU9yaWdpbmVkT3V0XShkb2NzL21vZGVscy9CYXRjaEZpcnN0TGFzdE5hbWVPcmlnaW5lZE91dC5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZVBob25lQ29kZWRPdXRdKGRvY3MvbW9kZWxzL0JhdGNoRmlyc3RMYXN0TmFtZVBob25lQ29kZWRPdXQubWQpCiAtIFtCYXRjaEZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckdlb0luXShkb2NzL21vZGVscy9CYXRjaEZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckdlb0luLm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lUGhvbmVOdW1iZXJJbl0oZG9jcy9tb2RlbHMvQmF0Y2hGaXJzdExhc3ROYW1lUGhvbmVOdW1iZXJJbi5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZVJlbGlnaW9uZWRPdXRdKGRvY3MvbW9kZWxzL0JhdGNoRmlyc3RMYXN0TmFtZVJlbGlnaW9uZWRPdXQubWQpCiAtIFtCYXRjaEZpcnN0TGFzdE5hbWVTdWJkaXZpc2lvbkluXShkb2NzL21vZGVscy9CYXRjaEZpcnN0TGFzdE5hbWVTdWJkaXZpc2lvbkluLm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lVVNSYWNlRXRobmljaXR5T3V0XShkb2NzL21vZGVscy9CYXRjaEZpcnN0TGFzdE5hbWVVU1JhY2VFdGhuaWNpdHlPdXQubWQpCiAtIFtCYXRjaE1hdGNoUGVyc29uYWxGaXJzdExhc3ROYW1lSW5dKGRvY3MvbW9kZWxzL0JhdGNoTWF0Y2hQZXJzb25hbEZpcnN0TGFzdE5hbWVJbi5tZCkKIC0gW0JhdGNoTmFtZUdlb0luXShkb2NzL21vZGVscy9CYXRjaE5hbWVHZW9Jbi5tZCkKIC0gW0JhdGNoTmFtZUluXShkb2NzL21vZGVscy9CYXRjaE5hbWVJbi5tZCkKIC0gW0JhdGNoTmFtZU1hdGNoQ2FuZGlkYXRlc091dF0oZG9jcy9tb2RlbHMvQmF0Y2hOYW1lTWF0Y2hDYW5kaWRhdGVzT3V0Lm1kKQogLSBbQmF0Y2hOYW1lTWF0Y2hlZE91dF0oZG9jcy9tb2RlbHMvQmF0Y2hOYW1lTWF0Y2hlZE91dC5tZCkKIC0gW0JhdGNoUGVyc29uYWxOYW1lQ2FzdGVncm91cE91dF0oZG9jcy9tb2RlbHMvQmF0Y2hQZXJzb25hbE5hbWVDYXN0ZWdyb3VwT3V0Lm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVHZW5kZXJlZE91dF0oZG9jcy9tb2RlbHMvQmF0Y2hQZXJzb25hbE5hbWVHZW5kZXJlZE91dC5tZCkKIC0gW0JhdGNoUGVyc29uYWxOYW1lR2VvSW5dKGRvY3MvbW9kZWxzL0JhdGNoUGVyc29uYWxOYW1lR2VvSW4ubWQpCiAtIFtCYXRjaFBlcnNvbmFsTmFtZUdlb091dF0oZG9jcy9tb2RlbHMvQmF0Y2hQZXJzb25hbE5hbWVHZW9PdXQubWQpCiAtIFtCYXRjaFBlcnNvbmFsTmFtZUdlb1N1YmNsYXNzaWZpY2F0aW9uT3V0XShkb2NzL21vZGVscy9CYXRjaFBlcnNvbmFsTmFtZUdlb1N1YmNsYXNzaWZpY2F0aW9uT3V0Lm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVHZW9TdWJkaXZpc2lvbkluXShkb2NzL21vZGVscy9CYXRjaFBlcnNvbmFsTmFtZUdlb1N1YmRpdmlzaW9uSW4ubWQpCiAtIFtCYXRjaFBlcnNvbmFsTmFtZUluXShkb2NzL21vZGVscy9CYXRjaFBlcnNvbmFsTmFtZUluLm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVQYXJzZWRPdXRdKGRvY3MvbW9kZWxzL0JhdGNoUGVyc29uYWxOYW1lUGFyc2VkT3V0Lm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVSZWxpZ2lvbmVkT3V0XShkb2NzL21vZGVscy9CYXRjaFBlcnNvbmFsTmFtZVJlbGlnaW9uZWRPdXQubWQpCiAtIFtCYXRjaFBlcnNvbmFsTmFtZVN1YmRpdmlzaW9uSW5dKGRvY3MvbW9kZWxzL0JhdGNoUGVyc29uYWxOYW1lU3ViZGl2aXNpb25Jbi5tZCkKIC0gW0JhdGNoUHJvcGVyTm91bkNhdGVnb3JpemVkT3V0XShkb2NzL21vZGVscy9CYXRjaFByb3Blck5vdW5DYXRlZ29yaXplZE91dC5tZCkKIC0gW0NvcnJpZG9ySW5dKGRvY3MvbW9kZWxzL0NvcnJpZG9ySW4ubWQpCiAtIFtDb3JyaWRvck91dF0oZG9jcy9tb2RlbHMvQ29ycmlkb3JPdXQubWQpCiAtIFtGZWVkYmFja0xvb3BPdXRdKGRvY3MvbW9kZWxzL0ZlZWRiYWNrTG9vcE91dC5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVDYXN0ZU91dF0oZG9jcy9tb2RlbHMvRmlyc3RMYXN0TmFtZUNhc3RlT3V0Lm1kKQogLSBbRmlyc3RMYXN0TmFtZUNhc3RlZ3JvdXBPdXRdKGRvY3MvbW9kZWxzL0ZpcnN0TGFzdE5hbWVDYXN0ZWdyb3VwT3V0Lm1kKQogLSBbRmlyc3RMYXN0TmFtZURpYXNwb3JhZWRPdXRdKGRvY3MvbW9kZWxzL0ZpcnN0TGFzdE5hbWVEaWFzcG9yYWVkT3V0Lm1kKQogLSBbRmlyc3RMYXN0TmFtZUdlbmRlckluXShkb2NzL21vZGVscy9GaXJzdExhc3ROYW1lR2VuZGVySW4ubWQpCiAtIFtGaXJzdExhc3ROYW1lR2VuZGVyZWRPdXRdKGRvY3MvbW9kZWxzL0ZpcnN0TGFzdE5hbWVHZW5kZXJlZE91dC5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVHZW9Jbl0oZG9jcy9tb2RlbHMvRmlyc3RMYXN0TmFtZUdlb0luLm1kKQogLSBbRmlyc3RMYXN0TmFtZUdlb1N1YmNsYXNzaWZpY2F0aW9uT3V0XShkb2NzL21vZGVscy9GaXJzdExhc3ROYW1lR2VvU3ViY2xhc3NpZmljYXRpb25PdXQubWQpCiAtIFtGaXJzdExhc3ROYW1lR2VvU3ViZGl2aXNpb25Jbl0oZG9jcy9tb2RlbHMvRmlyc3RMYXN0TmFtZUdlb1N1YmRpdmlzaW9uSW4ubWQpCiAtIFtGaXJzdExhc3ROYW1lR2VvWmlwcGVkSW5dKGRvY3MvbW9kZWxzL0ZpcnN0TGFzdE5hbWVHZW9aaXBwZWRJbi5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVJbl0oZG9jcy9tb2RlbHMvRmlyc3RMYXN0TmFtZUluLm1kKQogLSBbRmlyc3RMYXN0TmFtZU9yaWdpbmVkT3V0XShkb2NzL21vZGVscy9GaXJzdExhc3ROYW1lT3JpZ2luZWRPdXQubWQpCiAtIFtGaXJzdExhc3ROYW1lT3V0XShkb2NzL21vZGVscy9GaXJzdExhc3ROYW1lT3V0Lm1kKQogLSBbRmlyc3RMYXN0TmFtZVBob25lQ29kZWRPdXRdKGRvY3MvbW9kZWxzL0ZpcnN0TGFzdE5hbWVQaG9uZUNvZGVkT3V0Lm1kKQogLSBbRmlyc3RMYXN0TmFtZVBob25lTnVtYmVyR2VvSW5dKGRvY3MvbW9kZWxzL0ZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckdlb0luLm1kKQogLSBbRmlyc3RMYXN0TmFtZVBob25lTnVtYmVySW5dKGRvY3MvbW9kZWxzL0ZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckluLm1kKQogLSBbRmlyc3RMYXN0TmFtZVJlbGlnaW9uZWRPdXRdKGRvY3MvbW9kZWxzL0ZpcnN0TGFzdE5hbWVSZWxpZ2lvbmVkT3V0Lm1kKQogLSBbRmlyc3RMYXN0TmFtZVN1YmRpdmlzaW9uSW5dKGRvY3MvbW9kZWxzL0ZpcnN0TGFzdE5hbWVTdWJkaXZpc2lvbkluLm1kKQogLSBbRmlyc3RMYXN0TmFtZVVTUmFjZUV0aG5pY2l0eU91dF0oZG9jcy9tb2RlbHMvRmlyc3RMYXN0TmFtZVVTUmFjZUV0aG5pY2l0eU91dC5tZCkKIC0gW01hdGNoUGVyc29uYWxGaXJzdExhc3ROYW1lSW5dKGRvY3MvbW9kZWxzL01hdGNoUGVyc29uYWxGaXJzdExhc3ROYW1lSW4ubWQpCiAtIFtOYW1lR2VvSW5dKGRvY3MvbW9kZWxzL05hbWVHZW9Jbi5tZCkKIC0gW05hbWVJbl0oZG9jcy9tb2RlbHMvTmFtZUluLm1kKQogLSBbTmFtZU1hdGNoQ2FuZGlkYXRlT3V0XShkb2NzL21vZGVscy9OYW1lTWF0Y2hDYW5kaWRhdGVPdXQubWQpCiAtIFtOYW1lTWF0Y2hDYW5kaWRhdGVzT3V0XShkb2NzL21vZGVscy9OYW1lTWF0Y2hDYW5kaWRhdGVzT3V0Lm1kKQogLSBbTmFtZU1hdGNoZWRPdXRdKGRvY3MvbW9kZWxzL05hbWVNYXRjaGVkT3V0Lm1kKQogLSBbUGVyc29uYWxOYW1lQ2FzdGVncm91cE91dF0oZG9jcy9tb2RlbHMvUGVyc29uYWxOYW1lQ2FzdGVncm91cE91dC5tZCkKIC0gW1BlcnNvbmFsTmFtZUdlbmRlcmVkT3V0XShkb2NzL21vZGVscy9QZXJzb25hbE5hbWVHZW5kZXJlZE91dC5tZCkKIC0gW1BlcnNvbmFsTmFtZUdlb0luXShkb2NzL21vZGVscy9QZXJzb25hbE5hbWVHZW9Jbi5tZCkKIC0gW1BlcnNvbmFsTmFtZUdlb091dF0oZG9jcy9tb2RlbHMvUGVyc29uYWxOYW1lR2VvT3V0Lm1kKQogLSBbUGVyc29uYWxOYW1lR2VvU3ViY2xhc3NpZmljYXRpb25PdXRdKGRvY3MvbW9kZWxzL1BlcnNvbmFsTmFtZUdlb1N1YmNsYXNzaWZpY2F0aW9uT3V0Lm1kKQogLSBbUGVyc29uYWxOYW1lR2VvU3ViZGl2aXNpb25Jbl0oZG9jcy9tb2RlbHMvUGVyc29uYWxOYW1lR2VvU3ViZGl2aXNpb25Jbi5tZCkKIC0gW1BlcnNvbmFsTmFtZUluXShkb2NzL21vZGVscy9QZXJzb25hbE5hbWVJbi5tZCkKIC0gW1BlcnNvbmFsTmFtZVBhcnNlZE91dF0oZG9jcy9tb2RlbHMvUGVyc29uYWxOYW1lUGFyc2VkT3V0Lm1kKQogLSBbUGVyc29uYWxOYW1lUmVsaWdpb25lZE91dF0oZG9jcy9tb2RlbHMvUGVyc29uYWxOYW1lUmVsaWdpb25lZE91dC5tZCkKIC0gW1BlcnNvbmFsTmFtZVN1YmRpdmlzaW9uSW5dKGRvY3MvbW9kZWxzL1BlcnNvbmFsTmFtZVN1YmRpdmlzaW9uSW4ubWQpCiAtIFtQcm9wZXJOb3VuQ2F0ZWdvcml6ZWRPdXRdKGRvY3MvbW9kZWxzL1Byb3Blck5vdW5DYXRlZ29yaXplZE91dC5tZCkKIC0gW1JlZ2lvbklTT10oZG9jcy9tb2RlbHMvUmVnaW9uSVNPLm1kKQogLSBbUmVnaW9uT3V0XShkb2NzL21vZGVscy9SZWdpb25PdXQubWQpCiAtIFtSZWxpZ2lvblN0YXRPdXRdKGRvY3MvbW9kZWxzL1JlbGlnaW9uU3RhdE91dC5tZCkKIC0gW1NvZnR3YXJlVmVyc2lvbk91dF0oZG9jcy9tb2RlbHMvU29mdHdhcmVWZXJzaW9uT3V0Lm1kKQoKIyMgRG9jdW1lbnRhdGlvbiBGb3IgQXV0aG9yaXphdGlvbgoKQXV0aGVudGljYXRpb24gc2NoZW1lcyBkZWZpbmVkIGZvciB0aGUgQVBJOgo8YSBpZD0iYXBpX2tleSI+PC9hPgojIyMgYXBpX2tleQoKLSAqKlR5cGUqKjogQVBJIGtleQotICoqQVBJIGtleSBwYXJhbWV0ZXIgbmFtZSoqOiBYLUFQSS1LRVkKLSAqKkxvY2F0aW9uKio6IEhUVFAgaGVhZGVyCgoKIyMgQXV0aG9yCgpjb250YWN0QG5hbXNvci5jb20KY29udGFjdEBuYW1zb3IuY29tCmNvbnRhY3RAbmFtc29yLmNvbQpjb250YWN0QG5hbXNvci5jb20KY29udGFjdEBuYW1zb3IuY29tCmNvbnRhY3RAbmFtc29yLmNvbQpjb250YWN0QG5hbXNvci5jb20KCiMjIE5vdGVzIGZvciBMYXJnZSBPcGVuQVBJIGRvY3VtZW50cwpJZiB0aGUgT3BlbkFQSSBkb2N1bWVudCBpcyBsYXJnZSwgaW1wb3J0cyBpbiBvcGVuYXBpX2NsaWVudC5hcGlzIGFuZCBvcGVuYXBpX2NsaWVudC5tb2RlbHMgbWF5IGZhaWwgd2l0aCBhClJlY3Vyc2lvbkVycm9yIGluZGljYXRpbmcgdGhlIG1heGltdW0gcmVjdXJzaW9uIGxpbWl0IGhhcyBiZWVuIGV4Y2VlZGVkLiBJbiB0aGF0IGNhc2UsIHRoZXJlIGFyZSBhIGNvdXBsZSBvZiBzb2x1dGlvbnM6CgpTb2x1dGlvbiAxOgpVc2Ugc3BlY2lmaWMgaW1wb3J0cyBmb3IgYXBpcyBhbmQgbW9kZWxzIGxpa2U6Ci0gYGZyb20gb3BlbmFwaV9jbGllbnQuYXBpcy5kZWZhdWx0X2FwaSBpbXBvcnQgRGVmYXVsdEFwaWAKLSBgZnJvbSBvcGVuYXBpX2NsaWVudC5tb2RlbC5wZXQgaW1wb3J0IFBldGAKClNvbHV0aW9uIDE6CkJlZm9yZSBpbXBvcnRpbmcgdGhlIHBhY2thZ2UsIGFkanVzdCB0aGUgbWF4aW11bSByZWN1cnNpb24gbGltaXQgYXMgc2hvd24gYmVsb3c6CmBgYAppbXBvcnQgc3lzCnN5cy5zZXRyZWN1cnNpb25saW1pdCgxNTAwKQppbXBvcnQgb3BlbmFwaV9jbGllbnQKZnJvbSBvcGVuYXBpX2NsaWVudC5hcGlzIGltcG9ydCAqCmZyb20gb3BlbmFwaV9jbGllbnQubW9kZWxzIGltcG9ydCAqCmBgYAo= readmeEtag: '"f1e8481de55c3dbef80e7be35ac335d84669b148"' readmeLastModified: Wed, 23 Aug 2023 08:02:50 GMT repositoryId: 165632249 description: >- NamSor API v2 Python SDK - classify personal names accurately by gender, country of origin, or ethnicity. created: '2019-01-14T09:22:11Z' updated: '2026-01-16T13:28:18Z' language: Python archived: false stars: 37 watchers: 5 forks: 8 owner: namsor logo: https://avatars.githubusercontent.com/u/6951565?v=4 license: AGPL-3.0 repoEtag: '"7f72a8ab6c2aa7e7ee74f957beba5aedd5a921cf579da27da52fe98057ac6f0b"' repoLastModified: Fri, 16 Jan 2026 13:28:18 GMT foundInMaster: true category: - Server Implementations - Description Validators id: 78fde2a8b60c871d4f8c2b5f7bb08775 - source: openapi3 tags repository: https://github.com/rexagon/opg v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgICA8aDMgYWxpZ249ImNlbnRlciI+b3BnPC9oMz4KICAgIDxwIGFsaWduPSJjZW50ZXIiPlJ1c3QgT3BlbkFQSSAzLjAgZG9jcyBnZW5lcmF0b3I8L3A+CiAgICA8cCBhbGlnbj0iY2VudGVyIj4KICAgICAgICA8YSBocmVmPSIvTElDRU5TRSI+CiAgICAgICAgICAgIDxpbWcgYWx0PSJHaXRIdWIiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9SZXhhZ29uL29wZyIgLz4KICAgICAgICA8L2E+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1JleGFnb24vb3BnL2FjdGlvbnM/cXVlcnk9d29ya2Zsb3clM0FtYXN0ZXIiPgogICAgICAgICAgICA8aW1nIGFsdD0iR2l0SHViIFdvcmtmbG93IFN0YXR1cyIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi93b3JrZmxvdy9zdGF0dXMvUmV4YWdvbi9vcGcvbWFzdGVyIiAvPgogICAgICAgIDwvYT4KICAgICAgICA8YSBocmVmPSJodHRwczovL2NyYXRlcy5pby9jcmF0ZXMvb3BnIj4KICAgICAgICAgICAgPGltZyBhbHQ9IkNyYXRlcy5pbyBWZXJzaW9uIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY3JhdGVzL3Yvb3BnIiAvPgogICAgICAgIDwvYT4KICAgICAgICA8YSBocmVmPSJodHRwczovL2RvY3MucnMvb3BnIj4KICAgICAgICAgICAgPGltZyBhbHQ9IkRvY3MucnMiIHNyYz0iaHR0cHM6Ly9kb2NzLnJzL29wZy9iYWRnZS5zdmciIC8+CiAgICAgICAgPC9hPgogICAgPC9wPgo8L3A+CgojIyMjIEV4YW1wbGU6Cj4gT3Igc2VlIG1vcmUgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZXhhZ29uL29wZy90cmVlL21hc3Rlci90ZXN0X3N1aXRlL3Rlc3RzKQoKYGBgcnVzdAp1c2Ugb3BnOjoqOwp1c2Ugc2VyZGU6OntTZXJpYWxpemUsIERlc2VyaWFsaXplfTsKCiNbZGVyaXZlKFNlcmlhbGl6ZSwgRGVzZXJpYWxpemUsIE9wZ01vZGVsKV0KI1tzZXJkZShyZW5hbWVfYWxsID0gImNhbWVsQ2FzZSIpXQojW29wZygiU2ltcGxlIGVudW0iKV0KZW51bSBTaW1wbGVFbnVtIHsKICAgIFRlc3QsCiAgICBBbm90aGVyLAogICAgWWF5LAp9CgojW2Rlcml2ZShTZXJpYWxpemUsIERlc2VyaWFsaXplLCBPcGdNb2RlbCldCiNbb3BnKCJuZXd0eXBlIHN0cmluZyIsIGZvcm1hdCA9ICJpZCIsIGV4YW1wbGUgPSAiYWJjZDAwMDEiKV0Kc3RydWN0IE5ld1R5cGUoU3RyaW5nKTsKCiNbZGVyaXZlKFNlcmlhbGl6ZSwgRGVzZXJpYWxpemUsIE9wZ01vZGVsKV0Kc3RydWN0IFNpbXBsZVN0cnVjdCB7CiAgICBmaXJzdF9maWVsZDogaTMyLAogICAgI1tvcGcoIkZpZWxkIGRlc2NyaXB0aW9uIildCiAgICBzZWNvbmQ6IFN0cmluZywKfQoKI1tkZXJpdmUoU2VyaWFsaXplLCBEZXNlcmlhbGl6ZSwgT3BnTW9kZWwpXQojW3NlcmRlKHJlbmFtZV9hbGwgPSAia2ViYWItY2FzZSIpXQplbnVtIEV4dGVybmFsbHlUYWdnZWRFbnVtIHsKICAgIFRlc3QoU3RyaW5nKSwKICAgIEFub3RoZXJUZXN0KFN0cmluZywgI1tvcGcoIlNlY29uZCIpXSBTdHJpbmcpLAp9CgojW2Rlcml2ZShTZXJpYWxpemUsIERlc2VyaWFsaXplLCBPcGdNb2RlbCldCiNbc2VyZGUodW50YWdnZWQpXQplbnVtIFVudGFnZ2VkRW51bSB7CiAgICBGaXJzdCB7CiAgICAgICAgdmFsdWU6IE5ld1R5cGUsCiAgICB9LAogICAgI1tvcGcoIlZhcmlhbnQgZGVzY3JpcHRpb24iKV0KICAgIFNlY29uZCB7CiAgICAgICAgI1tvcGcoIklubGluZWQgc3RydWN0IiwgaW5saW5lKV0KICAgICAgICBhbm90aGVyOiBTaW1wbGVTdHJ1Y3QsCiAgICB9LAp9CgojW2Rlcml2ZShTZXJpYWxpemUsIERlc2VyaWFsaXplLCBPcGdNb2RlbCldCiNbc2VyZGUodGFnID0gInRhZyIsIHJlbmFtZV9hbGwgPSAibG93ZXJjYXNlIildCmVudW0gSW50ZXJuYWxseVRhZ2dlZEVudW0gewogICAgRmlyc3QoU2ltcGxlU3RydWN0KSwKICAgIFNlY29uZCB7IGZpZWxkOiBTdHJpbmcgfSwKfQoKI1tkZXJpdmUoU2VyaWFsaXplLCBEZXNlcmlhbGl6ZSwgT3BnTW9kZWwpXQojW3NlcmRlKHRhZyA9ICJ0YWciLCBjb250ZW50ID0gImNvbnRlbnQiLCByZW5hbWVfYWxsID0gImxvd2VyY2FzZSIpXQplbnVtIEFkamFjZW50bHlUYWdnZWRFbnVtIHsKICAgIEZpcnN0KFN0cmluZyksCiAgICBTZWNvbmQoTmV3VHlwZSwgTmV3VHlwZSksCn0KCiNbZGVyaXZlKFNlcmlhbGl6ZSwgRGVzZXJpYWxpemUsIE9wZ01vZGVsKV0KI1tzZXJkZShyZW5hbWVfYWxsID0gImNhbWVsQ2FzZSIpXQpzdHJ1Y3QgVHlwZUNoYW5nZWRTdHJ1Y3QgewogICAgI1tzZXJkZSh3aXRoID0gImNocm9ubzo6bmFpdmU6OnNlcmRlOjp0c19taWxsaXNlY29uZHMiKV0KICAgICNbb3BnKCJVVEMgdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcyIsIGludGVnZXIsIGZvcm1hdCA9ICJpbnQ2NCIpXQogICAgcHViIHRpbWVzdGFtcDogY2hyb25vOjpOYWl2ZURhdGVUaW1lLAp9CgojW2Rlcml2ZShTZXJpYWxpemUsIERlc2VyaWFsaXplLCBPcGdNb2RlbCldCnN0cnVjdCBTdHJ1Y3RXaXRoQ29tcGxleE9iamVjdHMgewogICAgI1tzZXJkZShza2lwX3NlcmlhbGl6aW5nX2lmID0gIk9wdGlvbjo6aXNfbm9uZSIpXQogICAgI1tvcGcob3B0aW9uYWwpXQogICAgc3VwZXJfb3B0aW9uYWw6IE9wdGlvbjxPcHRpb248U3RyaW5nPj4sCiAgICBmaWVsZDogT3B0aW9uPFN0cmluZz4sCiAgICBib3hlZDogQm94PE9wdGlvbjxpMzI+PiwKfQoKI1tkZXJpdmUoU2VyaWFsaXplLCBPcGdNb2RlbCldCnN0cnVjdCBHZW5lcmljU3RydWN0V2l0aFJlZjwnYSwgVD4gewogICAgbWVzc2FnZTogJidhIHN0ciwKICAgIHRlc3Q6IFQsCn0KCiNbZGVyaXZlKFNlcmlhbGl6ZSwgT3BnTW9kZWwpXQpzdHJ1Y3QgU3VwZXJSZXNwb25zZSB7CiAgICBzaW1wbGVfZW51bTogU2ltcGxlRW51bSwKICAgICNbc2VyZGUocmVuYW1lID0gIm5ld190eXBlIildCiAgICBuZXd0eXBlOiBOZXdUeXBlLAogICAgZXh0ZXJuYWxseV90YWdnZWRfZW51bTogRXh0ZXJuYWxseVRhZ2dlZEVudW0sCiAgICB1bnRhZ2dlZF9lbnVtOiBVbnRhZ2dlZEVudW0sCiAgICBpbnRlcm5hbGx5X3RhZ2dlZF9lbnVtOiBJbnRlcm5hbGx5VGFnZ2VkRW51bSwKICAgIGFkamFjZW50bHlfdGFnZ2VkX2VudW06IEFkamFjZW50bHlUYWdnZWRFbnVtLAogICAgdHlwZV9jaGFuZ2VkX3N0cnVjdDogVHlwZUNoYW5nZWRTdHJ1Y3QsCiAgICBzdHJ1Y3Rfd2l0aF9jb21wbGV4X29iamVjdHM6IFN0cnVjdFdpdGhDb21wbGV4T2JqZWN0cywKfQoKI1t0ZXN0XQpmbiBwcmludF9hcGkoKSB7CiAgICBsZXQgdGVzdCA9IGRlc2NyaWJlX2FwaSEgewogICAgICAgIGluZm86IHsKICAgICAgICAgICAgdGl0bGU6ICJNeSBzdXBlciBBUEkiLAogICAgICAgICAgICB2ZXJzaW9uOiAiMC4wLjAiLAogICAgICAgIH0sCiAgICAgICAgdGFnczoge2ludGVybmFsLCBhZG1pbigiU3VwZXIgYWRtaW4gbWV0aG9kcyIpfSwKICAgICAgICBzZXJ2ZXJzOiB7CiAgICAgICAgICAgICJodHRwczovL215LnN1cGVyLnNlcnZlci5jb20vdjEiLAogICAgICAgIH0sCiAgICAgICAgc2VjdXJpdHlfc2NoZW1lczogewogICAgICAgICAgICAoaHR0cCAiYmVhcmVyQXV0aCIpOiB7CiAgICAgICAgICAgICAgICBzY2hlbWU6IEJlYXJlciwKICAgICAgICAgICAgICAgIGJlYXJlcl9mb3JtYXQ6ICJKV1QiLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgcGF0aHM6IHsKICAgICAgICAgICAgKCJoZWxsbyIgLyAid29ybGQiIC8geyBwYXJhbVRlc3Q6IFN0cmluZyB9KTogewogICAgICAgICAgICAgICAgc3VtbWFyeTogIlNvbWUgdGVzdCBncm91cCBvZiByZXF1ZXN0cyIsCiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkFub3RoZXIgdGVzdCBkZXNjcmlwdGlvbiIsCiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgKGhlYWRlciAieC1yZXF1ZXN0LWlkIik6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBHRVQ6IHsKICAgICAgICAgICAgICAgICAgICB0YWdzOiB7aW50ZXJuYWx9LAogICAgICAgICAgICAgICAgICAgIHN1bW1hcnk6ICJTbWFsbCBzdW1tYXJ5IiwKICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogIlNtYWxsIGRlc2NyaXB0aW9uIiwKICAgICAgICAgICAgICAgICAgICBkZXByZWNhdGVkOiB0cnVlLAogICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgKHF1ZXJ5IHNvbWVQYXJhbTogdTMyKTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgMjAwOiBTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgNDE4ICgiT3B0aW9uYWwgcmVzcG9uc2UgZGVzY3JpcHRpb24iKTogU3RyaW5nCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgUE9TVDogewogICAgICAgICAgICAgICAgICAgIHRhZ3M6IHthZG1pbn0sCiAgICAgICAgICAgICAgICAgICAgc2VjdXJpdHk6IHsiYmVhcmVyQXV0aCJ9LAogICAgICAgICAgICAgICAgICAgIGJvZHk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJTb21lIGludGVyZXN0aW5nIGRlc2NyaXB0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hOiBHZW5lcmljU3RydWN0V2l0aFJlZjwnc3RhdGljLCBpNjQ+LAogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIDIwMDogU3VwZXJSZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tVcmw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiY2FsbGJhY2tVcmwiKTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBPU1Q6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwOiBzdGQ6OnZlYzo6VmVjPFN0cmluZz4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICBwcmludGxuISgie30iLCBzZXJkZV95YW1sOjp0b19zdHJpbmcoJnRlc3QpLnVud3JhcCgpKTsKfQpgYGAKCjxkZXRhaWxzPjxzdW1tYXJ5PjxiPlJlc3VsdDo8L2I+PC9zdW1tYXJ5Pgo8cD4KCmBgYHlhbWwKLS0tCm9wZW5hcGk6IDMuMC4zCmluZm86CiAgdGl0bGU6IE15IHN1cGVyIEFQSQogIHZlcnNpb246IDAuMC4wCnRhZ3M6CiAgLSBuYW1lOiBhZG1pbgogICAgZGVzY3JpcHRpb246IFN1cGVyIGFkbWluIG1ldGhvZHMKICAtIG5hbWU6IGludGVybmFsCnNlcnZlcnM6CiAgLSB1cmw6ICJodHRwczovL215LnN1cGVyLnNlcnZlci5jb20vdjEiCnBhdGhzOgogICIvaGVsbG8vd29ybGQve3BhcmFtVGVzdH0iOgogICAgc3VtbWFyeTogU29tZSB0ZXN0IGdyb3VwIG9mIHJlcXVlc3RzCiAgICBkZXNjcmlwdGlvbjogQW5vdGhlciB0ZXN0IGRlc2NyaXB0aW9uCiAgICBnZXQ6CiAgICAgIHRhZ3M6CiAgICAgICAgLSBpbnRlcm5hbAogICAgICBzdW1tYXJ5OiBTbWFsbCBzdW1tYXJ5CiAgICAgIGRlc2NyaXB0aW9uOiBTbWFsbCBkZXNjcmlwdGlvbgogICAgICBkZXByZWNhdGVkOiB0cnVlCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAyMDA6CiAgICAgICAgICBkZXNjcmlwdGlvbjogT0sKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgNDE4OgogICAgICAgICAgZGVzY3JpcHRpb246IE9wdGlvbmFsIHJlc3BvbnNlIGRlc2NyaXB0aW9uCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICBwYXJhbWV0ZXJzOgogICAgICAgIC0gbmFtZTogc29tZVBhcmFtCiAgICAgICAgICBkZXNjcmlwdGlvbjogVGVzdAogICAgICAgICAgaW46IHF1ZXJ5CiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgICAgZm9ybWF0OiB1aW50MzIKICAgIHBvc3Q6CiAgICAgIHRhZ3M6CiAgICAgICAgLSBhZG1pbgogICAgICBzZWN1cml0eToKICAgICAgICAtIGJlYXJlckF1dGg6IFtdCiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgZGVzY3JpcHRpb246IFNvbWUgaW50ZXJlc3RpbmcgZGVzY3JpcHRpb24KICAgICAgICBjb250ZW50OgogICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICRyZWY6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9HZW5lcmljU3RydWN0V2l0aFJlZiIKICAgICAgcmVzcG9uc2VzOgogICAgICAgIDIwMDoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBPSwogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvU3VwZXJSZXNwb25zZSIKICAgICAgY2FsbGJhY2tzOgogICAgICAgIGNhbGxiYWNrVXJsOgogICAgICAgICAgL2NhbGxiYWNrVXJsOgogICAgICAgICAgICBwb3N0OgogICAgICAgICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgICAgICAgIDIwMDoKICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IE9LCiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICBwYXJhbWV0ZXJzOgogICAgICAtIG5hbWU6IHBhcmFtVGVzdAogICAgICAgIGluOiBwYXRoCiAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICBzY2hlbWE6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgLSBuYW1lOiB4LXJlcXVlc3QtaWQKICAgICAgICBkZXNjcmlwdGlvbjogVGVzdAogICAgICAgIGluOiBoZWFkZXIKICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgIHNjaGVtYToKICAgICAgICAgIHR5cGU6IHN0cmluZwpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBBZGphY2VudGx5VGFnZ2VkRW51bToKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgY29udGVudDoKICAgICAgICAgIG9uZU9mOgogICAgICAgICAgICAtIHR5cGU6IHN0cmluZwogICAgICAgICAgICAtIHR5cGU6IGFycmF5CiAgICAgICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgICAgICBvbmVPZjoKICAgICAgICAgICAgICAgICAgLSAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvTmV3VHlwZSIKICAgICAgICAgICAgICAgICAgLSAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvTmV3VHlwZSIKICAgICAgICB0YWc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogQWRqYWNlbnRseVRhZ2dlZEVudW0gdHlwZSB2YXJpYW50CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGVudW06CiAgICAgICAgICAgIC0gZmlyc3QKICAgICAgICAgICAgLSBzZWNvbmQKICAgICAgICAgIGV4YW1wbGU6IGZpcnN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gdGFnCiAgICAgICAgLSBjb250ZW50CiAgICBFeHRlcm5hbGx5VGFnZ2VkRW51bToKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOgogICAgICAgIG9uZU9mOgogICAgICAgICAgLSB0eXBlOiBzdHJpbmcKICAgICAgICAgIC0gdHlwZTogYXJyYXkKICAgICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgICAgb25lT2Y6CiAgICAgICAgICAgICAgICAtIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgLSBkZXNjcmlwdGlvbjogU2Vjb25kCiAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgR2VuZXJpY1N0cnVjdFdpdGhSZWY6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIG1lc3NhZ2U6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICB0ZXN0OgogICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgZm9ybWF0OiBpbnQ2NAogICAgICByZXF1aXJlZDoKICAgICAgICAtIG1lc3NhZ2UKICAgICAgICAtIHRlc3QKICAgIEludGVybmFsbHlUYWdnZWRFbnVtOgogICAgICBvbmVPZjoKICAgICAgICAtIHR5cGU6IG9iamVjdAogICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgZmlyc3RfZmllbGQ6CiAgICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgICAgIGZvcm1hdDogaW50MzIKICAgICAgICAgICAgc2Vjb25kOgogICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBGaWVsZCBkZXNjcmlwdGlvbgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICB0YWc6CiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IEludGVybmFsbHlUYWdnZWRFbnVtIHR5cGUgdmFyaWFudAogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgIGVudW06CiAgICAgICAgICAgICAgICAtIGZpcnN0CiAgICAgICAgICAgICAgZXhhbXBsZTogZmlyc3QKICAgICAgICAgIHJlcXVpcmVkOgogICAgICAgICAgICAtIGZpcnN0X2ZpZWxkCiAgICAgICAgICAgIC0gc2Vjb25kCiAgICAgICAgICAgIC0gdGFnCiAgICAgICAgLSB0eXBlOiBvYmplY3QKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIGZpZWxkOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICB0YWc6CiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IEludGVybmFsbHlUYWdnZWRFbnVtIHR5cGUgdmFyaWFudAogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgIGVudW06CiAgICAgICAgICAgICAgICAtIHNlY29uZAogICAgICAgICAgICAgIGV4YW1wbGU6IHNlY29uZAogICAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgICAgIC0gZmllbGQKICAgICAgICAgICAgLSB0YWcKICAgIE5ld1R5cGU6CiAgICAgIGRlc2NyaXB0aW9uOiBuZXd0eXBlIHN0cmluZwogICAgICB0eXBlOiBzdHJpbmcKICAgICAgZm9ybWF0OiBpZAogICAgICBleGFtcGxlOiBhYmNkMDAwMQogICAgU2ltcGxlRW51bToKICAgICAgZGVzY3JpcHRpb246IFNpbXBsZSBlbnVtCiAgICAgIHR5cGU6IHN0cmluZwogICAgICBlbnVtOgogICAgICAgIC0gdGVzdAogICAgICAgIC0gYW5vdGhlcgogICAgICAgIC0geWF5CiAgICAgIGV4YW1wbGU6IHRlc3QKICAgIFN0cnVjdFdpdGhDb21wbGV4T2JqZWN0czoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgYm94ZWQ6CiAgICAgICAgICBudWxsYWJsZTogdHJ1ZQogICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgZm9ybWF0OiBpbnQzMgogICAgICAgIGZpZWxkOgogICAgICAgICAgbnVsbGFibGU6IHRydWUKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIHN1cGVyX29wdGlvbmFsOgogICAgICAgICAgbnVsbGFibGU6IHRydWUKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICByZXF1aXJlZDoKICAgICAgICAtIGZpZWxkCiAgICAgICAgLSBib3hlZAogICAgU3VwZXJSZXNwb25zZToKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgYWRqYWNlbnRseV90YWdnZWRfZW51bToKICAgICAgICAgICRyZWY6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9BZGphY2VudGx5VGFnZ2VkRW51bSIKICAgICAgICBleHRlcm5hbGx5X3RhZ2dlZF9lbnVtOgogICAgICAgICAgJHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzL0V4dGVybmFsbHlUYWdnZWRFbnVtIgogICAgICAgIGludGVybmFsbHlfdGFnZ2VkX2VudW06CiAgICAgICAgICAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvSW50ZXJuYWxseVRhZ2dlZEVudW0iCiAgICAgICAgbmV3X3R5cGU6CiAgICAgICAgICAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvTmV3VHlwZSIKICAgICAgICBzaW1wbGVfZW51bToKICAgICAgICAgICRyZWY6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9TaW1wbGVFbnVtIgogICAgICAgIHN0cnVjdF93aXRoX2NvbXBsZXhfb2JqZWN0czoKICAgICAgICAgICRyZWY6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9TdHJ1Y3RXaXRoQ29tcGxleE9iamVjdHMiCiAgICAgICAgdHlwZV9jaGFuZ2VkX3N0cnVjdDoKICAgICAgICAgICRyZWY6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9UeXBlQ2hhbmdlZFN0cnVjdCIKICAgICAgICB1bnRhZ2dlZF9lbnVtOgogICAgICAgICAgJHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzL1VudGFnZ2VkRW51bSIKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBzaW1wbGVfZW51bQogICAgICAgIC0gbmV3X3R5cGUKICAgICAgICAtIGV4dGVybmFsbHlfdGFnZ2VkX2VudW0KICAgICAgICAtIHVudGFnZ2VkX2VudW0KICAgICAgICAtIGludGVybmFsbHlfdGFnZ2VkX2VudW0KICAgICAgICAtIGFkamFjZW50bHlfdGFnZ2VkX2VudW0KICAgICAgICAtIHR5cGVfY2hhbmdlZF9zdHJ1Y3QKICAgICAgICAtIHN0cnVjdF93aXRoX2NvbXBsZXhfb2JqZWN0cwogICAgVHlwZUNoYW5nZWRTdHJ1Y3Q6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIHRpbWVzdGFtcDoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBVVEMgdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcwogICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgZm9ybWF0OiBpbnQ2NAogICAgICByZXF1aXJlZDoKICAgICAgICAtIHRpbWVzdGFtcAogICAgVW50YWdnZWRFbnVtOgogICAgICBvbmVPZjoKICAgICAgICAtIHR5cGU6IG9iamVjdAogICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgdmFsdWU6CiAgICAgICAgICAgICAgJHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzL05ld1R5cGUiCiAgICAgICAgICByZXF1aXJlZDoKICAgICAgICAgICAgLSB2YWx1ZQogICAgICAgIC0gZGVzY3JpcHRpb246IFZhcmlhbnQgZGVzY3JpcHRpb24KICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgYW5vdGhlcjoKICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogSW5saW5lZCBzdHJ1Y3QKICAgICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgZmlyc3RfZmllbGQ6CiAgICAgICAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgICAgICAgICAgZm9ybWF0OiBpbnQzMgogICAgICAgICAgICAgICAgc2Vjb25kOgogICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogRmllbGQgZGVzY3JpcHRpb24KICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgICAgICAgICAtIGZpcnN0X2ZpZWxkCiAgICAgICAgICAgICAgICAtIHNlY29uZAogICAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgICAgIC0gYW5vdGhlcgogIHNlY3VyaXR5U2NoZW1lczoKICAgIGJlYXJlckF1dGg6CiAgICAgIHR5cGU6IGh0dHAKICAgICAgc2NoZW1lOiBiZWFyZXIKICAgICAgYmVhcmVyRm9ybWF0OiBKV1QKYGBgCjwvcD4KPC9kZXRhaWxzPgo= readmeEtag: '"93ada7b30d97fd956334f7b2152c7c9a3a52bc79"' readmeLastModified: Wed, 05 Apr 2023 13:48:24 GMT repositoryId: 273586856 description: Rust OpenAPI 3.0 docs generator created: '2020-06-19T21:08:55Z' updated: '2025-06-03T09:55:56Z' language: Rust archived: false stars: 36 watchers: 2 forks: 8 owner: Rexagon logo: https://avatars.githubusercontent.com/u/7278479?v=4 license: Apache-2.0 repoEtag: '"c9a2185cf3173111e0c9b7c6e22e605d6a58d0ff55381cc98e9fa15ca515594a"' repoLastModified: Tue, 03 Jun 2025 09:55:56 GMT foundInMaster: true category: Parsers id: 06fd1d157b70af7d99fc62cfd47a1723 - source: openapi3 tags repository: https://github.com/frameio/rolodex v3: true repositoryMetadata: base64Readme: >- IyBSb2xvZGV4CgpbIVtoZXgucG0gdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9oZXhwbS92L3JvbG9kZXguc3ZnKV0oaHR0cHM6Ly9oZXgucG0vcGFja2FnZXMvcm9sb2RleCkgWyFbQ2lyY2xlQ0ldKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL0ZyYW1laW8vcm9sb2RleC5zdmc/c3R5bGU9c3ZnKV0oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvRnJhbWVpby9yb2xvZGV4KQoKUm9sb2RleCBnZW5lcmF0ZXMgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciBQaG9lbml4IEFQSS4KClNpbXBseSBhbm5vdGF0ZSB5b3VyIFBob2VuaXggY29udHJvbGxlciBhY3Rpb24gZnVuY3Rpb25zIHdpdGggYEBkb2NgIG1ldGFkYXRhLCBhbmQgUm9sb2RleCB3aWxsIHR1cm4gdGhlc2UgZGVzY3JpcHRpb25zIGludG8gdmFsaWQgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHBsYXRmb3JtLgoKQ3VycmVudGx5IHN1cHBvcnRzOgotIFtPcGVuQVBJIDMuMF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vKQoKIyMgRGlzY2xhaW1lcgoKUm9sb2RleCBpcyBjdXJyZW50bHkgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50ISBUaGUgQVBJIGlzIGEgd29yayBpbiBwcm9ncmVzcyBhcyB3ZSBoZWFkIHRvd2FyZHMgdjEuMC4KCiMjIERvY3VtZW50YXRpb24KClNlZSBbaHR0cHM6Ly9oZXhkb2NzLnBtL3JvbG9kZXhdKGh0dHBzOi8vaGV4ZG9jcy5wbS9yb2xvZGV4L1JvbG9kZXguaHRtbCkKCiMjIEluc3RhbGxhdGlvbgoKUm9sb2RleCBpcyBbYXZhaWxhYmxlIGluIEhleF0oaHR0cHM6Ly9oZXgucG0vcGFja2FnZXMvcm9sb2RleCkuIEFkZCBpdCB0byB5b3VyCmRlcHMgaW4gYG1peC5leHNgOgoKYGBgZWxpeGlyCmRlZiBkZXBzIGRvCiAgWwogICAgezpyb2xvZGV4LCAifj4gMC4xMC4wIn0KICBdCmVuZApgYGAK readmeEtag: '"3f157d5eb96f9c9fe916623cc7b67602c4262e0f"' readmeLastModified: Tue, 14 Apr 2020 15:29:38 GMT repositoryId: 164505694 description: 📇API Documentation Generator for Phoenix created: '2019-01-07T22:18:10Z' updated: '2026-02-03T18:15:03Z' language: Elixir archived: false stars: 38 watchers: 19 forks: 2 owner: Frameio logo: https://avatars.githubusercontent.com/u/8882715?v=4 license: MIT repoEtag: '"6194425ed3c5a35ae282827a1907ac8ebdf068094de1628882d85e319139626e"' repoLastModified: Tue, 03 Feb 2026 18:15:03 GMT foundInMaster: true category: Server id: b5c2d746eddf512431874f73431f26ba - source: openapi3 tags repository: https://github.com/bezkoder/spring-boot-swagger-3-example v3: true id: 2dcf393fa42baff255226528de79cac5 repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIDMgYW5kIFNwcmluZyBCb290IGV4YW1wbGUgKHdpdGggT3BlbkFQSSAzKQoKRG9jdW1lbnQgUkVTVCBBUEkgd2l0aCBTd2FnZ2VyIDMgaW4gU3ByaW5nIEJvb3QgZXhhbXBsZSAoZm9sbG93IE9wZW5BUEkgMyBzcGVjaWZpY2F0aW9uKS4gWW91IHdpbGwgYWxzbyBrbm93IHNldmVyYWwgd2F5cyB0byBjb25maWd1cmUgU3dhZ2dlciBBUEkgZGVzY3JpcHRpb24gYW5kIHJlc3BvbnNlLgoKRm9yIG1vcmUgZGV0YWlsLCBwbGVhc2UgdmlzaXQ6Cj4gW1NwcmluZyBCb290IHdpdGggU3dhZ2dlciAzIGV4YW1wbGVdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9zcHJpbmctYm9vdC1zd2FnZ2VyLTMvKQoKWW91IGNhbiBhbHNvIGFwcGx5IHRoZSBjb2RlIGVhc2lseSBvbiBmb2xsb3dpbmcgUHJvamVjdHM6Cj4gW1NwcmluZyBCb290IDMgUkVTVCBBUEkgZXhhbXBsZV0oaHR0cHM6Ly93d3cuYmV6a29kZXIuY29tL3NwcmluZy1ib290LTMtcmVzdC1hcGkvKQoKPiBbU3ByaW5nIEJvb3QgUmVzdCBBUEkgd2l0aCBIMl0oaHR0cHM6Ly93d3cuYmV6a29kZXIuY29tL3NwcmluZy1ib290LWpwYS1oMi1leGFtcGxlLykKCj4gW1NwcmluZyBCb290IFJlc3QgQVBJIHdpdGggTXlTUUxdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9zcHJpbmctYm9vdC1qcGEtY3J1ZC1yZXN0LWFwaS8pCgo+IFtTcHJpbmcgQm9vdCBSZXN0IEFQSSB3aXRoIFBvc3RncmVTUUxdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9zcHJpbmctYm9vdC1wb3N0Z3Jlc3FsLWV4YW1wbGUvKQoKPiBbU3ByaW5nIEJvb3QgUmVzdCBBUEkgd2l0aCBTUUwgU2VydmVyXShodHRwczovL3d3dy5iZXprb2Rlci5jb20vc3ByaW5nLWJvb3Qtc3FsLXNlcnZlci8pCgo+IFtTcHJpbmcgQm9vdCBSZXN0IEFQSSB3aXRoIE1vbmdvREJdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9zcHJpbmctYm9vdC1tb25nb2RiLWNydWQvKQoKPiBbU3ByaW5nIEJvb3QgUmVzdCBBUEkgd2l0aCBDYXNzYW5kcmFdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9zcHJpbmctYm9vdC1jYXNzYW5kcmEtY3J1ZC8pCgo+IFtTcHJpbmcgQm9vdCBSZXN0IEFQSSB3aXRoIE9yYWNsZV0oaHR0cHM6Ly93d3cuYmV6a29kZXIuY29tL3NwcmluZy1ib290LWhpYmVybmF0ZS1vcmFjbGUvKQoKRnJvbnQtZW5kIHRoYXQgd29ya3Mgd2VsbCB3aXRoIHRoaXMgQmFjay1lbmQKPiBbQW5ndWxhciA4IENsaWVudF0oaHR0cHM6Ly93d3cuYmV6a29kZXIuY29tL2FuZ3VsYXItY3J1ZC1hcHAvKSAvIFtBbmd1bGFyIDEwIENsaWVudF0oaHR0cHM6Ly93d3cuYmV6a29kZXIuY29tL2FuZ3VsYXItMTAtY3J1ZC1hcHAvKSAvIFtBbmd1bGFyIDExIENsaWVudF0oaHR0cHM6Ly93d3cuYmV6a29kZXIuY29tL2FuZ3VsYXItMTEtY3J1ZC1hcHAvKSAvIFtBbmd1bGFyIDEyIENsaWVudF0oaHR0cHM6Ly93d3cuYmV6a29kZXIuY29tL2FuZ3VsYXItMTItY3J1ZC1hcHAvKSAvIFtBbmd1bGFyIDEzIENsaWVudF0oaHR0cHM6Ly93d3cuYmV6a29kZXIuY29tL2FuZ3VsYXItMTMtY3J1ZC1leGFtcGxlLykgLyBbQW5ndWxhciAxNCBDbGllbnRdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9hbmd1bGFyLTE0LWNydWQtZXhhbXBsZS8pIC8gW0FuZ3VsYXIgMTUgQ2xpZW50XShodHRwczovL3d3dy5iZXprb2Rlci5jb20vYW5ndWxhci0xNS1jcnVkLWV4YW1wbGUvKQoKPiBbVnVlIDIgQ2xpZW50XShodHRwczovL3d3dy5iZXprb2Rlci5jb20vdnVlLWpzLWNydWQtYXBwLykgLyBbVnVlIDMgQ2xpZW50XShodHRwczovL3d3dy5iZXprb2Rlci5jb20vdnVlLTMtY3J1ZC8pIC8gW1Z1ZXRpZnkgQ2xpZW50XShodHRwczovL3d3dy5iZXprb2Rlci5jb20vdnVldGlmeS1kYXRhLXRhYmxlLWV4YW1wbGUvKQoKPiBbUmVhY3QgQ2xpZW50XShodHRwczovL3d3dy5iZXprb2Rlci5jb20vcmVhY3QtaG9va3MtY3J1ZC1heGlvcy1hcGkvKSAvIFtSZWFjdCBSZWR1eCBDbGllbnRdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9yZWR1eC10b29sa2l0LWNydWQtcmVhY3QtaG9va3MvKQoKTW9yZSBQcmFjdGljZToKPiBbU3ByaW5nIEJvb3QgRmlsZSB1cGxvYWQgZXhhbXBsZSB3aXRoIE11bHRpcGFydCBGaWxlXShodHRwczovL3d3dy5iZXprb2Rlci5jb20vc3ByaW5nLWJvb3QtZmlsZS11cGxvYWQvKQoKPiBbU3ByaW5nIEJvb3QgUGFnaW5hdGlvbiAmIEZpbHRlciBleGFtcGxlIHwgU3ByaW5nIEpQQSwgUGFnZWFibGVdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9zcHJpbmctYm9vdC1wYWdpbmF0aW9uLWZpbHRlci1qcGEtcGFnZWFibGUvKQoKPiBbU3ByaW5nIERhdGEgSlBBIFNvcnQvT3JkZXIgYnkgbXVsdGlwbGUgQ29sdW1ucyB8IFNwcmluZyBCb290XShodHRwczovL3d3dy5iZXprb2Rlci5jb20vc3ByaW5nLWRhdGEtc29ydC1tdWx0aXBsZS1jb2x1bW5zLykKCj4gW1NwcmluZyBCb290IFJlcG9zaXRvcnkgVW5pdCBUZXN0IHdpdGggQERhdGFKcGFUZXN0XShodHRwczovL3d3dy5iZXprb2Rlci5jb20vc3ByaW5nLWJvb3QtdW5pdC10ZXN0LWpwYS1yZXBvLWRhdGFqcGF0ZXN0LykKCj4gW0RlcGxveSBTcHJpbmcgQm9vdCBBcHAgb24gQVdTIOKAkyBFbGFzdGljIEJlYW5zdGFsa10oaHR0cHM6Ly93d3cuYmV6a29kZXIuY29tL2RlcGxveS1zcHJpbmctYm9vdC1hd3MtZWIvKQoKRXhjZXB0aW9uIEhhbmRsaW5nOgo+IFtTcHJpbmcgQm9vdCBAQ29udHJvbGxlckFkdmljZSAmIEBFeGNlcHRpb25IYW5kbGVyIGV4YW1wbGVdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9zcHJpbmctYm9vdC1jb250cm9sbGVyYWR2aWNlLWV4Y2VwdGlvbmhhbmRsZXIvKQoKPiBbQFJlc3RDb250cm9sbGVyQWR2aWNlIGV4YW1wbGUgaW4gU3ByaW5nIEJvb3RdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9zcHJpbmctYm9vdC1yZXN0Y29udHJvbGxlcmFkdmljZS8pCgpTZWN1cml0eToKPiBbU3ByaW5nIEJvb3QgKyBTcHJpbmcgU2VjdXJpdHkgSldUIEF1dGhlbnRpY2F0aW9uICYgQXV0aG9yaXphdGlvbl0oaHR0cHM6Ly93d3cuYmV6a29kZXIuY29tL3NwcmluZy1ib290LWp3dC1hdXRoZW50aWNhdGlvbi8pCgpGdWxsc3RhY2s6Cj4gW1Z1ZSArIFNwcmluZyBCb290IGV4YW1wbGVdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9zcHJpbmctYm9vdC12dWUtanMtY3J1ZC1leGFtcGxlLykKCj4gW0FuZ3VsYXIgOCArIFNwcmluZyBCb290IGV4YW1wbGVdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9hbmd1bGFyLXNwcmluZy1ib290LWNydWQvKQoKPiBbQW5ndWxhciAxMCArIFNwcmluZyBCb290IGV4YW1wbGVdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9hbmd1bGFyLTEwLXNwcmluZy1ib290LWNydWQvKQoKPiBbQW5ndWxhciAxMSArIFNwcmluZyBCb290IGV4YW1wbGVdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9hbmd1bGFyLTExLXNwcmluZy1ib290LWNydWQvKQoKPiBbQW5ndWxhciAxMiArIFNwcmluZyBCb290IGV4YW1wbGVdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9hbmd1bGFyLTEyLXNwcmluZy1ib290LWNydWQvKQoKPiBbQW5ndWxhciAxMyArIFNwcmluZyBCb290IGV4YW1wbGVdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9zcHJpbmctYm9vdC1hbmd1bGFyLTEzLWNydWQvKQoKPiBbQW5ndWxhciAxNCArIFNwcmluZyBCb290IGV4YW1wbGVdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9zcHJpbmctYm9vdC1hbmd1bGFyLTE0LWNydWQvKQoKPiBbQW5ndWxhciAxNSArIFNwcmluZyBCb290IGV4YW1wbGVdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9zcHJpbmctYm9vdC1hbmd1bGFyLTE1LWNydWQvKQoKPiBbUmVhY3QgKyBTcHJpbmcgQm9vdCArIE15U1FMIGV4YW1wbGVdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9yZWFjdC1zcHJpbmctYm9vdC1jcnVkLykKCj4gW1JlYWN0ICsgU3ByaW5nIEJvb3QgKyBQb3N0Z3JlU1FMIGV4YW1wbGVdKGh0dHBzOi8vd3d3LmJlemtvZGVyLmNvbS9zcHJpbmctYm9vdC1yZWFjdC1wb3N0Z3Jlc3FsLykKClJ1biBib3RoIEJhY2stZW5kICYgRnJvbnQtZW5kIGluIG9uZSBwbGFjZToKPiBbSW50ZWdyYXRlIEFuZ3VsYXIgd2l0aCBTcHJpbmcgQm9vdCBSZXN0IEFQSV0oaHR0cHM6Ly93d3cuYmV6a29kZXIuY29tL2ludGVncmF0ZS1hbmd1bGFyLXNwcmluZy1ib290LykKCj4gW0ludGVncmF0ZSBSZWFjdC5qcyB3aXRoIFNwcmluZyBCb290IFJlc3QgQVBJXShodHRwczovL3d3dy5iZXprb2Rlci5jb20vaW50ZWdyYXRlLXJlYWN0anMtc3ByaW5nLWJvb3QvKQoKPiBbSW50ZWdyYXRlIFZ1ZS5qcyB3aXRoIFNwcmluZyBCb290IFJlc3QgQVBJXShodHRwczovL3d3dy5iZXprb2Rlci5jb20vaW50ZWdyYXRlLXZ1ZS1zcHJpbmctYm9vdC8pCgojIyBSdW4gU3ByaW5nIEJvb3QgYXBwbGljYXRpb24KYGBgCm12biBzcHJpbmctYm9vdDpydW4KYGBgCgo= readmeEtag: '"b53f18bde83eb6f6547ef70b47e6267d2a12e859"' readmeLastModified: Wed, 15 Mar 2023 03:35:06 GMT repositoryId: 614175956 description: >- Spring Boot and Swagger 3 example - configuration for API description / response example - Swagger annotations with OpenAPI 3 created: '2023-03-15T03:33:57Z' updated: '2025-10-10T10:56:48Z' language: Java archived: false stars: 36 watchers: 1 forks: 38 owner: bezkoder logo: https://avatars.githubusercontent.com/u/52996966?v=4 repoEtag: '"c6206eb3bb391fe040672e4fa2c4f111c6d0d158c969ad04afb158f138030a91"' repoLastModified: Fri, 10 Oct 2025 10:56:48 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/cxxxr/apispec v3: true repositoryMetadata: base64Readme: >- IyBhcGlzcGVjCgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9mdWthbWFjaGkvYXBpc3BlYy5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9mdWthbWFjaGkvYXBpc3BlYykKWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9mdWthbWFjaGkvYXBpc3BlYy9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vY292ZXJhbGxzLmlvL3IvZnVrYW1hY2hpL2FwaXNwZWMpCgpBIENvbW1vbiBMaXNwIGxpYnJhcnkgZm9yIGhhbmRsaW5nIFdlYiBBUEkgc3BlY2lmaWNhdGlvbnMuIFRoaXMgYWxsb3dzIHRvIHZhbGlkYXRlIGFuZCBwYXJzZSBIVFRQIHJlcXVlc3QgaGVhZGVycywgcGFyYW1ldGVycyBhbmQgYm9kaWVzIHdpdGggT3BlbkFQSTMgc3BlY2lmaWNhdGlvbi4KCiMjIFdhcm5pbmcKClRoaXMgc29mdHdhcmUgaXMgc3RpbGwgQUxQSEEgcXVhbGl0eS4gVGhlIEFQSXMgd2lsbCBiZSBsaWtlbHkgdG8gY2hhbmdlLgoKIyMgUHJlcmVxdWlzaXRlCgoqIFtsaWJ5YW1sXShodHRwOi8vcHl5YW1sLm9yZy93aWtpL0xpYllBTUwpIGZvciBsb2FkaW5nIE9wZW5BUEkgc3BlYyBmaWxlcy4KCiMjIFVzYWdlCgojIyMgTG9hZGluZyBzcGVjaWZpY2F0aW9uIGZpbGUKCmBgYGNvbW1vbi1saXNwCihkZWZ2YXIgKnNwZWMqCiAgKGFwaXNwZWM6bG9hZC1mcm9tLWZpbGUgI1AiZG9jcy9hcGkueWFtbCIpKQoKKGFwaXNwZWM6c3BlYy12ZXJzaW9uICpzcGVjKikKOz0+ICIzLjAuMiIKYGBgCgojIyMgR2V0dGluZyB0aGUgb3BlcmF0aW9uCgpgYGBjb21tb24tbGlzcAooZGVmdmFyICpyb3V0ZXIqIChhcGlzcGVjOnNwZWMtcm91dGVyICpzcGVjKikpCgooYXBpc3BlYzpmaW5kLXJvdXRlICpyb3V0ZXIqIDpHRVQgIi91c2Vycy8xMiIpCjs9PiAjPEFQSVNQRUMvQ0xBU1NFUy9PUEVSQVRJT046T1BFUkFUSU9OIHsxMDAzRERCMDczfT4KYGBgCgojIyMgUGFyc2luZyBhbmQgVmFsaWRhdGluZyBIVFRQIHJlcXVlc3RzCgpgYGBjb21tb24tbGlzcAooaW1wb3J0ICcobGFjay5yZXF1ZXN0OnJlcXVlc3QtcXVlcnktcGFyYW1ldGVycwogICAgICAgICAgbGFjay5yZXF1ZXN0OnJlcXVlc3QtYm9keS1wYXJhbWV0ZXJzCiAgICAgICAgICBsYWNrLnJlcXVlc3Q6cmVxdWVzdC1jb29raWVzCiAgICAgICAgICBhcGlzcGVjOnJlcXVlc3QtcGF0aC1wYXJhbWV0ZXJzKSkKCjs7IENsYWNrIGFwcGxpY2F0aW9uCihkZWZ2YXIgKmFwcCoKICAobGFtYmRhIChlbnYpCiAgICAobXVsdGlwbGUtdmFsdWUtYmluZCAob3BlcmF0aW9uIHBhdGgtcGFyYW1ldGVycykKICAgICAgICAoYXBpc3BlYzpmaW5kLXJvdXRlIChzcGVjLXJvdXRlciAqc3BlYyopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2V0ZiBlbnYgOnJlcXVlc3QtbWV0aG9kKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdldGYgZW52IDpwYXRoLWluZm8pKQogICAgICA7OyBHZXR0aW5nIExhY2suUmVxdWVzdAogICAgICAobGV0ICgocmVxdWVzdCAoYXBpc3BlYzp2YWxpZGF0ZS1yZXF1ZXN0IG9wZXJhdGlvbiBlbnYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cGF0aC1wYXJhbWV0ZXJzIHBhdGgtcGFyYW1ldGVycykpKQogICAgICAgIDs7IFdyaXRlIHRoZSBtYWluIGFwcGxpY2F0aW9uIGhlcmUuCgogICAgICAgIDs7IEFjY2Vzc29ycyBmb3IgZ2V0dGluZyBlYWNoIHBhcmFtZXRlcnMuCiAgICAgICAgKHJlcXVlc3QtcXVlcnktcGFyYW1ldGVycyByZXF1ZXN0KSAgOz0+IFF1ZXJ5IHBhcmFtZXRlcnMgKGFsaXN0KQogICAgICAgIChyZXF1ZXN0LWJvZHktcGFyYW1ldGVycyByZXF1ZXN0KSAgIDs9PiBCb2R5IHBhcmFtZXRlcnMgKGFsaXN0KQogICAgICAgIChyZXF1ZXN0LXBhdGgtcGFyYW1ldGVycyByZXF1ZXN0KSAgIDs9PiBQYXRoIHBhcmFtZXRlcnMgKGFsaXN0KQogICAgICAgIChyZXF1ZXN0LWNvb2tpZXMpICAgICAgICAgICAgICAgICAgIDs9PiBDb29raWUgcGFyYW1ldGVycyAoYWxpc3QpCgogICAgICAgICkpKSkKCjs7IFN0YXJ0IHRoZSBzZXJ2ZXIKKGNsYWNrOmNsYWNrdXAgKmFwcCopCmBgYAoKIyMjIFZhbGlkYXRpbmcgYW5kIEVuY29kaW5nIEhUVFAgcmVzcG9uc2VzCgpgYGBjb21tb24tbGlzcAooaW1wb3J0ICdsYWNrLnJlc3BvbnNlOm1ha2UtcmVzcG9uc2UpCgooYXBpc3BlYzp2YWxpZGF0ZS1yZXNwb25zZSBvcGVyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1ha2UtcmVzcG9uc2UgMjAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoOmNvbnRlbnQtdHlwZSAiYXBwbGljYXRpb24vanNvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKCJpZCIgLiAzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgibmFtZSIgLiAi5Yid6Z+z44Of44KvIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlzX2FkbWluIiAuIG5pbCkpKSkKOz0+ICgyMDAgKDpDT05URU5ULVRZUEUgImFwcGxpY2F0aW9uL2pzb24iKSAoIntcImlkXCI6MyxcIm5hbWVcIjpcIuWInemfs+ODn+OCr1wiLFwiaXNfYWRtaW5cIjpmYWxzZX0iKSkKYGBgCgojIyMgQ3VzdG9tIEVuY29kZXIgZm9yIHN0YW5kYXJkIG9iamVjdHMKCmBgYGNvbW1vbi1saXNwCihpbXBvcnQgJ2xhY2sucmVzcG9uc2U6bWFrZS1yZXNwb25zZSkKCjs7IEN1c3RvbSBjbGFzcwooZGVmY2xhc3MgdXNlciAoKQogICgoaWQgOmluaXRhcmcgOmlkKQogICAobmFtZSA6aW5pdGFyZyA6bmFtZSkKICAgKGlzLWFkbWluIDppbml0YXJnIDppcy1hZG1pbikpKQoKOzsgRGVmaW5lIEFQSVNQRUM6RU5DT0RFLU9CSkVDVCBmb3IgdGhlIGNsYXNzCihkZWZtZXRob2QgYXBpc3BlYzplbmNvZGUtb2JqZWN0ICgodXNlciB1c2VyKSkKICBgKCgiaWQiIC4gLChzbG90LXZhbHVlIHVzZXIgJ2lkKSkKICAgICgibmFtZSIgLiAsKHNsb3QtdmFsdWUgdXNlciAnbmFtZSkpCiAgICAoImlzX2FkbWluIiAuICwoc2xvdC12YWx1ZSB1c2VyICdpcy1hZG1pbikpKSkKCihkZWZ2YXIgKnl1a2FyaSoKICAobWFrZS1pbnN0YW5jZSAndXNlcgogICAgICAgICAgICAgICAgIDppZCAxNAogICAgICAgICAgICAgICAgIDpuYW1lICLntZDmnIjjgobjgYvjgooiCiAgICAgICAgICAgICAgICAgOmlzLWFkbWluIG5pbCkpCgooYXBpc3BlYzp2YWxpZGF0ZS1yZXNwb25zZSBvcGVyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1ha2UtcmVzcG9uc2UgMjAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoOmNvbnRlbnQtdHlwZSAiYXBwbGljYXRpb24vanNvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp5dWthcmkqKSkKOz0+ICgyMDAgKDpDT05URU5ULVRZUEUgImFwcGxpY2F0aW9uL2pzb24iKSAoIntcImlkXCI6MTQsXCJuYW1lXCI6XCLntZDmnIjjgobjgYvjgopcIixcImlzX2FkbWluXCI6ZmFsc2V9IikpCmBgYAoKIyMgRXhhbXBsZXMKClNlZSBbZXhhbXBsZXMvXShleGFtcGxlcy8pLgoKIyMgU2VlIEFsc28KCiogW09wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24pCiogW0xhY2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9mdWthbWFjaGkvbGFjaykKCiMjIEF1dGhvcgoKKiBFaXRhcm8gRnVrYW1hY2hpIChlLmFycm93c0BnbWFpbC5jb20pCgojIyBDb3B5cmlnaHQKCkNvcHlyaWdodCAoYykgMjAxOSBFaXRhcm8gRnVrYW1hY2hpIChlLmFycm93c0BnbWFpbC5jb20pCgojIyBMaWNlbnNlCgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIDMtQ2xhdXNlIExpY2Vuc2UuCg== readmeEtag: '"6d45557234331003c7fd2f1c0e77d3f996e3e5c8"' readmeLastModified: Wed, 17 Jan 2024 07:44:28 GMT repositoryId: 200196107 description: A Common Lisp library for handling Web API requests and responses. created: '2019-08-02T08:23:34Z' updated: '2025-12-21T20:20:57Z' language: Common Lisp archived: false stars: 36 watchers: 4 forks: 8 owner: cxxxr logo: https://avatars.githubusercontent.com/u/13656378?v=4 repoEtag: '"ca18c1701592cfc8fc2cc162bd0625674248f355c0782811b3375aa28d7e1490"' repoLastModified: Sun, 21 Dec 2025 20:20:57 GMT foundInMaster: true category: Data Validators id: 6c1ee68ee37441a94526d023a6d888e6 - source: openapi3 tags repository: https://github.com/dolmen-go/openapi-preprocessor v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXByZXByb2Nlc3NvcgoKYG9wZW5hcGktcHJlcHJvY2Vzc29yYCBpcyBhbiBwcm9jZXNzaW5nIHRvb2wgdGhhdCBnaXZlcyBmbGV4aWJpbGl0eSB0byBBUEkgZG9jdW1lbnRhdGlvbiBhdXRob3JzIGZvciB3cml0aW5nIE9wZW5BUEkgMi4wLzMueCBzcGVjaWZpY2F0aW9ucy4KClshW1RyYXZpcy1DSV0oaHR0cHM6Ly9hcGkudHJhdmlzLWNpLm9yZy9kb2xtZW4tZ28vb3BlbmFwaS1wcmVwcm9jZXNzb3Iuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvZG9sbWVuLWdvL29wZW5hcGktcHJlcHJvY2Vzc29yKQpbIVtDb2RlY292XShodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRodWIvZG9sbWVuLWdvL29wZW5hcGktcHJlcHJvY2Vzc29yL21hc3Rlci5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvZG9sbWVuLWdvL29wZW5hcGktcHJlcHJvY2Vzc29yL2JyYW5jaC9tYXN0ZXIpClshW0dvIFJlcG9ydCBDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9kb2xtZW4tZ28vb3BlbmFwaS1wcmVwcm9jZXNzb3IpXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vZG9sbWVuLWdvL29wZW5hcGktcHJlcHJvY2Vzc29yKQoKIyMgVXNlcyBDYXNlcwoKLSBBdXRob3IgeW91ciBPcGVuQVBJIHNwZWMgaW4gWUFNTCBidXQgcHVibGlzaCBhcyBKU09OLgotIFNwbGl0IHlvdXIgT3BlbkFQSSBzcGVjIHNvdXJjZSBpbiBtdWx0aXBsZSBmaWxlcyBmb3IgYXV0aG9yaW5nLCBidXQgcHVibGlzaCBhIHNpbmdsZSBmaWxlLgotIEJ1aWxkIG11bHRpcGxlIHNwZWNzIGZyb20gc2hhcmVkIHBhcnRzLgotIE1lcmdlIHNwZWMgZ2VuZXJhdGVkIGZyb20gc291cmNlIGNvZGUgd2l0aCB5b3VyIGFkZGl0aW9uYWwgY29udGVudCBjcmVhdGVkIGJ5IGhhbmQuCi0gVXNlIGFkdmFuY2VkIGlubGluaW5nIChgJGlubGluZWAsIGAkbWVyZ2VgKSB0byByZW1vdmUgZHVwbGljYXRpb24gKHNvdXJjZSBvZiBpbmNvbnNpc3RlbmNpZXMpLgotIFVzZSBhZHZhbmNlZCBpbmxpbmluZyAoYCRpbmxpbmVgLCBgJG1lcmdlYCkgdG8gcHJvZHVjZSBjb21wbGV4IHNjaGVtYXMgdGhhdCBzaGFyZSBzdWJzZXQgb2YgcHJvcGVydGllcy4KLSBEZXJpdmF0ZSBhIHNwZWMgdG8gYnVpbGQgYSBuZXcgc3BlYyB3aXRoIGFsdGVyZWQgc2VydmVycyBzZXR0aW5ncyBmb3IgbG9jYWxob3N0L3N0YWdpbmcvcHJlcHJvZCBlbnZpcm9ubWVudHMuCi0gRGVyaXZhdGUgYSBzcGVjIGZvciBpbnRlcm9wZXJhYmlsaXR5IHdpdGggcHJvY2Vzc2luZyB0b29scyAoZXg6IGFwcGx5IGEgcGF0Y2ggZm9yIGRvd25ncmFkaW5nIHRoZSBPcGVuQVBJCiAgdmVyc2lvbiBmb3IgYSBjb2RlIGdlbmVyYXRpb24gdG9vbCB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgbGF0ZXN0IHN0YW5kYXJkKS4KLSBEZXJpdmF0ZSBhIHNwZWMgZnJvbSBhIHBhcnRuZXIgdG8gZml4IGludGVyb3BlcmFiaWxpdHkgaXNzdWVzOiBlbmFibGUgdGhlIG1haW50ZW5hbmNlIG9mIGEgc2V0IG9mIHBhdGNoZXMKICB0byBhcHBseSB0byB0aGUgcHVibGljIHNwZWMgcmVsZWFzZXMgYmVmb3JlIHVzaW5nIHRoZW0gaW50ZXJuYWxseS4KLSAqU3VibWl0IHlvdXJzLi4uKgoKIyMgRmVhdHVyZXMKCi0gRXZlcnkgdmFsaWQgT3BlbkFQSSAyLjAvMy54IHNwZWNpZmljYXRpb24gaXMgYSB2YWxpZCBpbnB1dCAoc28geW91IGNhbiBlYXNpbHkgc3RhcnQgcmVmYWN0b3JpbmcgZ3JhZHVhbGx5IGZyb20gYW4gZXhpc3Rpbmcgc3BlYykKLSBBbGxvd3MgdG8gYnVpbGQgYSBzcGVjIGZyb20gbXVsdGlwbGUgZmlsZXM7IHByb2R1Y2VzIGEgc2luZ2xlIG91dHB1dCBmaWxlCi0gWUFNTCBvciBKU09OIGlucHV0Ci0gUHJvZHVjZXMgYW4gT3BlbkFQSSB3aXRoIG1heGltdW0gY29tcGF0aWJpbGl0eSB3aXRoIGNvbnN1bW1pbmcgdG9vbHM6CiAgLSBzaW1wbGlmaWVzIGNvbXBsZXggcGFydHMgb2YgdGhlIHNwZWMgbm90IHN1cHBvcnRlZCBieSBhbGwgdG9vbHMKICAtIEpTT04gb3V0cHV0Ci0gQWRkcyBhIGZldyBrZXl3b3JkcyAoYCRpbmxpbmVgLCBgJG1lcmdlYCkgdGhhdCBhbGxvdyB0byBhdm9pZCBkdXBsaWNhdGlvbiBvZiBjb250ZW50IGFuZCBlYXNlIHRoZSB3cml0aW5nIG9mIGNvbnNpc3RlbnQgZG9jdW1lbnRhdGlvbgotIFJlbW92ZXMgdW51c2VkIGdsb2JhbCBzY2hlbWFzICh1bmRlciBgL2NvbXBvbmVudHMvc2NoZW1hc2ApLCBwYXJhbWV0ZXJzICh1bmRlciBgL2NvbXBvbmVudHMvcGFyYW1ldGVyc2ApIGFuZCByZXNwb25zZXMgKHVuZGVyIGAvY29tcG9uZW50cy9yZXNwb25zZXNgKS4gVGhpcyByZWR1Y2VzIHJpc2sgb2YgbGVha2luZyB3b3JrIGluIHByb2dyZXNzIG9yIGludGVybmFsIGRldGFpbHMuCgojIyBJbnN0YWxsCgojIyMgSW5zdGFsbCBmcm9tIHNvdXJjZQoKQSBbR28gMS4yMysgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRdKGh0dHBzOi8vZ28uZGV2L2RvYy9pbnN0YWxsI2luc3RhbGwpIGlzIHJlcXVpcmVkLgoKQnVpbGQgYG9wZW5hcGktcHJlcHJvY2Vzc29yYCBiaW5hcnkgYW5kIGluc3RhbGwgaW4gYCRHT1BBVEgvYmluYDoKCiAgICAkIG1ha2UgaW5zdGFsbAoKIyMgVXNhZ2UKCiAgICBvcGVuYXBpLXByZXByb2Nlc3NvciBbPG9wdGlvbj4uLi5dIDxmaWxlPgoKIyMgS2V5d29yZHMKCiMjIyBgJHJlZmAKCiAgICB7ICIkcmVmIjogIjxmaWxlPiIgfQogICAgeyAiJHJlZiI6ICI8ZmlsZT4jPHBvaW50ZXI+IiB9CiAgICB7ICIkcmVmIjogIiM8cG9pbnRlcj4iIH0KCmAkcmVmYCBpcyBsaWtlIGluIE9wZW5BUEksIGJ1dCBpdCBjYW4gcmVmZXJlbmNlIGNvbnRlbnQgaW4gZXh0ZXJuYWwgZmlsZXMgdXNpbmcgcmVsYXRpdmUgVVJMcyBhcyB3ZWxsIGFzIGludHJhLWRvY3VtZW50LiBUaGUgcmVmZXJlbmNlZCBwYXJ0IG9mIHRoZSBwb2ludGVkIGRvY3VtZW50IGlzIGluamVjdGVkIGludG8gdGhlIG91dHB1dCBkb2N1bWVudC4KClJlc3RyaWN0aW9uczoKLSBKU09OIHBvaW50ZXIgbG9jYXRpb24gaW4gdGhlIG91dHB1dCBkb2N1bWVudCB3aWxsIGJlIHRoZSBzYW1lIGxvY2F0aW9uIGFzIGluIHRoZSByZWYgbGluay4gRXhhbXBsZTogYHsiJHJlZiI6ICJleHRlcm5hbC55bWwjL2NvbXBvbmVudHMvcGFyYW1ldGVycy9JZCJ9YCB3aWxsIGltcG9ydCB0aGUgY29udGVudCB0byBgL2NvbXBvbmVudHMvcGFyYW1ldGVycy9JZGAuIFRoaXMgaW1wbGllcyB0aGF0IHBhcnRpYWwgZmlsZXMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgbGF5b3V0IGFzIGEgZnVsbCBzcGVjICh0aGlzIGlzIGEgZmVhdHVyZSBhcyBpdCBlbmZvcmNlcyByZWFkYWJpbGl0eSBvZiBwYXJ0aWFscykuCi0gb3RoZXIgcHJvcGVydGllcyBhbG9uZyBgJHJlZmAgYXJlIG5vdCBhbGxvd2VkIGFzIHRoZSBzZW1hbnRpY3MgaW4gSlNPTiBTY2hlbWEgYW5kIFN3YWdnZXIvT3BlbkFQSSBoYXMgZXZvbHZlZCBhbmQgdGhlIHN1cHBvcnQgaW4gY29uc3VtaW5nIHRvb2xzIG1heSB2YXJ5LiBVc2UgYCRtZXJnZWAgaW5zdGVhZCB0aGF0IGhhcyBhIHN0cmljdCBiZWhhdmlvdXIgaW4gdGhpcyB0b29sLgoKIyMjIGAkaW5saW5lYAoKICAgIHsgIiRpbmxpbmUiOiAiPGZpbGU+Izxwb2ludGVyPiJ9CgogICAgewogICAgICAgICIkaW5saW5lIjogIjxmaWxlPiM8cG9pbnRlcj4iLAogICAgICAgICJwb2ludGVyMSI6IDx2YWx1ZT4sIC8vIE92ZXJyaWRlcyB2YWx1ZSBhdCA8ZmlsZT4jPHBvaW50ZXI+L3BvaW50ZXIxCiAgICAgICAgInBvaW50ZXIyL3NsYXNoIjogPHZhbHVlPiAvLyBPdmVycmlkZXMgdmFsdWUgZGVlcGx5IGF0IDxmaWxlPiM8cG9pbnRlcj4vcG9pbnRlci9zbGFzaAogICAgfQoKYCRpbmxpbmVgIGlzIGFuIE9wZW5BUEkgZXh0ZW5zaW9uIGFsbG93aW5nIHRvIGluamVjdCBhIGNvcHkgb2YgYW5vdGhlciBwYXJ0IG9mIGEgZG9jdW1lbnQgaW4gcGxhY2UuIEtleXMgYWxvbmcgdGhlIGAkaW5saW5lYCBrZXl3b3JkIGFyZSBKU09OIHBvaW50ZXJzICh3aXRoIHRoZSBsZWFkaW5nIGAvYCByZW1vdmVkKSBhbGxvd2luZyB0byBvdmVycmlkZSBzb21lIHBhcnRzIG9mIHRoZSBpbmxpbmVkIGNvbnRlbnQuCgpJZiB0aGUgdGFyZ2V0IG9mIGAkaW5saW5lYCBpcyBhIGAkcmVmYCBhbmQgYCRpbmxpbmVgIGhhcyBvdmVycmlkZXMsIHRoZSBsaW5rIGlzIGRlcmVmZXJlbmNlZCByZWN1cnNpdmVseSBiZWZvcmUgaW5saW5pbmcuCgpOb3RlOiBkZWVwIGlubGluaW5nIChpbmxpbmluZyBhIG5vZGUgd2hpY2ggaXRzZWxmIHVzZSBgJGlubGluZWAgaW4gaXRzIHRyZWUpIG1pZ2h0IHdvcmssIGJ1dCB3aWxsIHByb2JhYmx5IG5vdCAoc2VlIFtpc3N1ZSAjNl0oaHR0cHM6Ly9naXRodWIuY29tL2RvbG1lbi1nby9vcGVuYXBpLXByZXByb2Nlc3Nvci9pc3N1ZXMvNikgYXMgYW4gZXhhbXBsZSkuIFVzZSBpbnN0ZWFkIGAkbWVyZ2VgIHdoaWNoIHN1cHBvcnRzIGl0LgoKIyMjIGAkbWVyZ2VgCgogICAgewogICAgICAgICIkbWVyZ2UiOiAiPGZpbGU+Izxwb2ludGVyPiIsCiAgICAgICAgImtleSI6IDx2YWx1ZT4sCiAgICAgICAgImtleS9zbGFzaCI6IDx2YWx1ZT4gLy8gT3ZlcnJpZGVzIHZhbHVlIGF0IDxmaWxlPiM8cG9pbnRlcj4va2V5fjFzbGFzaAogICAgfQoKICAgIHsKICAgICAgICAiJG1lcmdlIjogWwogICAgICAgICAgICAiPGZpbGUxPiM8cG9pbnRlcjE+IiwKICAgICAgICAgICAgIjxmaWxlMj4jPHBvaW50ZXIyPiIgLy8gT3ZlcnJpZGVzIGtleXMgZnJvbSA8ZmlsZTE+Izxwb2ludGVyMT4KICAgICAgICBdCiAgICAgICAgImtleSI6IDx2YWx1ZT4sCiAgICAgICAgImtleS9zbGFzaCI6IDx2YWx1ZT4gLy8gT3ZlcnJpZGVzIHZhbHVlIGF0IDxmaWxlMj4jPHBvaW50ZXIyPi9rZXl+MXNsYXNoCiAgICB9CgoKYCRtZXJnZWAgaXMgYW4gT3BlbkFQSSBleHRlbnNpb24gYWxsb3dpbmcgdG8gY29weSBhIG5vZGUsIG92ZXJyaWRpbmcgc29tZSBrZXlzLiBUaGlzIGlzIGEga2luZCBvZiBpbmxpbmVkICpgJHJlZmAgd2l0aCBrZXlzIG92ZXJyaWRlcyouCgojIyBFeGFtcGxlcwoKU2VlIHRoZSBbdGVzdHN1aXRlXShodHRwczovL2dpdGh1Yi5jb20vZG9sbWVuLWdvL29wZW5hcGktcHJlcHJvY2Vzc29yL3RyZWUvbWFzdGVyL3Rlc3RkYXRhKS4KClJ1bm5pbmcgYSBiYXNpYyBleGFtcGxlOgoKICAgICQgbWFrZQogICAgJCAuL29wZW5hcGktcHJlcHJvY2Vzc29yIHRlc3RkYXRhLzEwLXJlZi1leHQvaW5wdXQueW1sCgojIyBMaWNlbnNlCgpDb3B5cmlnaHQgMjAxOC0yMDIyIE9saXZpZXIgTWVuZ3XDqQoKTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKClVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuClNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCg== readmeEtag: '"785ab3381e81ad7814c3313f61b1a48abd845ff8"' readmeLastModified: Tue, 21 Oct 2025 17:01:43 GMT repositoryId: 141041148 description: An authoring tool for OpenAPI specifications created: '2018-07-15T16:16:48Z' updated: '2025-10-21T17:02:05Z' language: Go archived: false stars: 38 watchers: 3 forks: 5 owner: dolmen-go logo: https://avatars.githubusercontent.com/u/22580372?v=4 license: Apache-2.0 repoEtag: '"78a861fdc5c2c1ba013bd1aa6e0e8d4e7f9054bfb99725c127295ee6d3240d4e"' repoLastModified: Tue, 21 Oct 2025 17:02:05 GMT foundInMaster: true category: Parsers id: 084230f40fdffa9865facd7e88ca7499 - source: openapi3 tags repository: https://github.com/data-fair/data-fair v3: true repositoryMetadata: base64Readme: >- IyA8aW1nIGFsdD0iRGF0YSBGQUlSIGxvZ28iIHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL2RhdGEtZmFpci9kYXRhLWZhaXJAbWFzdGVyL3B1YmxpYy9hc3NldHMvbG9nby5zdmciIHdpZHRoPSI0MCI+IERhdGEgRkFJUgoKKkZpbmRhYmxlLCBBY2Nlc3NpYmxlLCBJbnRlcm9wZXJhYmxlIGFuZCBSZXVzYWJsZSBEYXRhKgoKW1Zpc2l0IGRvY3VtZW50YXRpb24gd2Vic2l0ZV0oaHR0cHM6Ly9kYXRhLWZhaXIuZ2l0aHViLmlvLzMvKQoKIVtdKGRvYy9zdGF0aWMvZGF0YS1mYWlyLmdpZikKCiMjIFNwb25zb3JzCgp8IHwgQ2xpY2sgW2hlcmUgdG8gc3VwcG9ydCB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBwcm9qZWN0XShodHRwczovL2dpdGh1Yi5jb20vc3BvbnNvcnMva291bW91bC1kZXYpLiB8CnwtfC18CnwgWzxpbWcgYWx0PSJLb3Vtb3VsIGxvZ28iIHNyYz0iaHR0cHM6Ly9rb3Vtb3VsLmNvbS9zdGF0aWMvbG9nby1zbG9nYW4ucG5nIiBoZWlnaHQ9IjQwIj5dKGh0dHBzOi8va291bW91bC5jb20pIHwgW0tvdW1vdWxdKGh0dHBzOi8va291bW91bC5jb20pIGRldmVsb3BzIHRoZSBEYXRhIEZhaXIgZWNvc3lzdGVtIGFuZCBob3N0cyBpdCBhcyBhbiBvbmxpbmUgc2VydmljZS4gfAp8IFs8aW1nIGFsdD0iRGF3aXp6IGxvZ28iIHNyYz0iaHR0cHM6Ly9kYXdpenouZnIvbG9nby1EYXdpenotYWxsLWFib3V0LXlvdXItZGF0YS1ob21lLnBuZyIgaGVpZ2h0PSI0MCI+XShodHRwczovL2Rhd2l6ei5mcikgfCBbRGF3aXp6XShodHRwczovL2Rhd2l6ei5mcikgdXNlcyBEYXRhIEZhaXIgaW5zaWRlIGl0cyBwbGF0Zm9ybSBhbmQgc3VwcG9ydHMgaXRzIGRldmVsb3BtZW50LiB8CgojIyBEZXZlbG9wZXJzCgpUYWtlIGEgbG9vayBhdCB0aGUgW2NvbnRyaWJ1dGlvbiBndWlkZWxpbmVzXSguL0NPTlRSSUJVVElORy5tZCku readmeEtag: '"371ffe787bc5809f23aff5dfc3933f5feea445cb"' readmeLastModified: Tue, 13 Aug 2024 13:20:53 GMT repositoryId: 111959381 description: >- Findable, Accessible, Interoperable and Reusable Data. A complete open-source solution for your open and private data needs. French only for the time being, internationalization coming soon. created: '2017-11-24T22:19:00Z' updated: '2026-02-05T11:02:28Z' language: JavaScript archived: false stars: 42 watchers: 3 forks: 9 owner: data-fair logo: https://avatars.githubusercontent.com/u/83776320?v=4 license: AGPL-3.0 repoEtag: '"0167a1fe3358d9119742f26ae000c6282b29161b34a7851d1bfccdaf771e43f7"' repoLastModified: Thu, 05 Feb 2026 11:02:28 GMT foundInMaster: true category: - Documentation - Server Implementations id: 384e501654823f177688cd3302ea80ee - source: openapi3 tags repository: https://github.com/luoyunchong/igeekfan.aspnetcore.rapidoc v3: true repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KPGgxIGFsaWduPSJjZW50ZXIiPiA8aW1nIGFsdD0iTXJpbkRvYyBsb2dvIiBzcmM9ImRvY3MvaW1hZ2VzL2xvZ28ucG5nIiB3aWR0aD0iNDBweCIgLz4gIElHZWVrRmFuLkFzcE5ldENvcmUuUmFwaURvYyA8L2gxPgoKKipbUmFwaURvY10oaHR0cHM6Ly9naXRodWIuY29tL21yaW45L1JhcGlEb2MpKiogQ3VzdG9tIEVsZW1lbnQgZm9yIE9wZW4tQVBJIHNwZWMgdmlld2luZyDvvIxTdXBwb3J0IC5ORVQgQ29yZTMuMSDjgIEuTkVUIFN0YW5kYXJkMi4w44CBLk5FVDUuMOOAgS5ORVQ2LjDjgIIKClshWy5ORVQgSURFIFJpZGVyXShodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YXRpYy92MT9zdHlsZT1mbG9hdCZsb2dvPXJpZGVyJmxhYmVsPVJpZGVyJm1lc3NhZ2U9amV0YnJhaW5zJmNvbG9yPXJlZCldKGh0dHBzOi8vd3d3LmpldGJyYWlucy5jb20vcmlkZXIvKQpbIVtHaXRIdWIgbGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ibHVlLnN2ZyldKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9sdW95dW5jaG9uZy9JR2Vla0Zhbi5Bc3BOZXRDb3JlLlJhcGlEb2MvbWFzdGVyL0xJQ0VOU0UpCjxwPgogICAgPHNwYW4+RW5nbGlzaDwvc3Bhbj4gfCAgCiAgICA8YSBocmVmPSJSRUFETUUuemgtQ04ubWQiPuS4reaWhzwvYT4KPC9wPgo8L2Rpdj4KCkFuIEFQSSBkb2N1bWVudCB0aGF0IGltcGxlbWVudHMgc3dhZ2dlciAyLjAgYW5kIE9wZW5BUEkgMy4wLiBJIGludGVncmF0ZSBpdCBpbnRvIGFzcG5ldGNvcmXjgIIKCiMjIEZlYXR1cmVzCi0gU3VwcG9ydHMgU3dhZ2dlciAyLjAgYW5kIE9wZW5BUEkgMy4wCi0gV29ya3Mgd2l0aCBhbnkgZnJhbWV3b3JrIG9yIHdpdGggbm8gZnJhbWV3b3JrCi0gQWxsb3dzIG1ha2luZyBBUEkgY2FsbHMuIEFuZCBNb3JlLi4uLgotIEZvciBtb3JlIGZlYXR1cmVzLCBwbGVhc2UgcmVmZXIgdG8gKipbUmFwaURvY10oaHR0cHM6Ly9naXRodWIuY29tL21yaW45L1JhcGlEb2MpIFJFQURNRSoqCgojIyBOdWdldCBQYWNrYWdlcwoKUGFja2FnZSBuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWZXJzaW9uICAgICAgICAgICAgICAgICAgICAgfCBEb3dubG9hZHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0KYElHZWVrRmFuLkFzcE5ldENvcmUuUmFwaURvY2AgfCBbIVtOdUdldF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9udWdldC92L0lHZWVrRmFuLkFzcE5ldENvcmUuUmFwaURvYy5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmbGFiZWw9bnVnZXQmY29sb3I9ZmVkY2JhKV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL0lHZWVrRmFuLkFzcE5ldENvcmUuUmFwaURvYy8pIHwgIVtkb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvZHQvSUdlZWtGYW4uQXNwTmV0Q29yZS5SYXBpRG9jLnN2ZykKYElHZWVrRmFuLkFzcE5ldENvcmUuUmFwaURvYy5FeHRyYWAgfCBbIVtOdUdldF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9udWdldC92L0lHZWVrRmFuLkFzcE5ldENvcmUuUmFwaURvYy5FeHRyYS5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmbGFiZWw9bnVnZXQpXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvSUdlZWtGYW4uQXNwTmV0Q29yZS5SYXBpRG9jLkV4dHJhLykgfCAhW2Rvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9udWdldC9kdC9JR2Vla0Zhbi5Bc3BOZXRDb3JlLlJhcGlEb2MuRXh0cmEuc3ZnKQoKIAojIyBEZXBlbmRlbmNpZXMKIyMjIFtSYXBpRG9jXShodHRwczovL2dpdGh1Yi5jb20vbXJpbjkvUmFwaURvYykKLSByYXBpZG9jXih2ZXJzaW9uKSBbaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvcmFwaWRvY10oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvcmFwaWRvYykKIyMjIFtTd2FzaGJ1Y2tsZS5Bc3BOZXRDb3JlXShodHRwczovL2dpdGh1Yi5jb20vZG9tYWluZHJpdmVuZGV2L1N3YXNoYnVja2xlLkFzcE5ldENvcmUpCi0gU3dhc2hidWNrbGUuQXNwTmV0Q29yZS5Td2FnZ2VyCi0gU3dhc2hidWNrbGUuQXNwTmV0Q29yZS5Td2FnZ2VyR2VuCgojIyBEZW1vCi0gW0Jhc2ljXShodHRwczovL2dpdGh1Yi5jb20vbHVveXVuY2hvbmcvSUdlZWtGYW4uQXNwTmV0Q29yZS5SYXBpRG9jL2Jsb2IvbWFzdGVyL3Rlc3QvQmFzaWMpCi0gW1JhcGlEb2NEZW1vXShodHRwczovL2dpdGh1Yi5jb20vbHVveXVuY2hvbmcvSUdlZWtGYW4uQXNwTmV0Q29yZS5SYXBpRG9jL2Jsb2IvbWFzdGVyL3Rlc3QvUmFwaURvY0RlbW8pCi0gW09BdXRoMkludGVncmF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vbHVveXVuY2hvbmcvSUdlZWtGYW4uQXNwTmV0Q29yZS5SYXBpRG9jL2Jsb2IvbWFzdGVyL3Rlc3QvV2ViU2l0ZXMvT0F1dGgySW50ZWdyYXRpb24pCi0gW0FTUE5FVCBDb3JlIDZdKGh0dHBzOi8vZ2l0aHViLmNvbS9sdW95dW5jaG9uZy9JR2Vla0Zhbi5Bc3BOZXRDb3JlLlJhcGlEb2MvYmxvYi9tYXN0ZXIvdGVzdC9Bc3BOZXRDb3JlNl9SYXBpRGVtbykKIyMg8J+TmiBRdWlja1N0YXJ0CgojIyMg8J+agCBJbnN0YWxsIFBhY2thZ2UKdXNlIFN3YXNoYnVja2xlLkFzcE5ldENvcmUuU3dhZ2dlciBDb21wb25lbnRzCgoxLkluc3RhbGwgdGhlIHN0YW5kYXJkIE51Z2V0IHBhY2thZ2UgaW50byB5b3VyIEFTUC5ORVQgQ29yZSBhcHBsaWNhdGlvbi4KCmBgYApQYWNrYWdlIE1hbmFnZXIgOiAKCkluc3RhbGwtUGFja2FnZSBTd2FzaGJ1Y2tsZS5Bc3BOZXRDb3JlLlN3YWdnZXIKSW5zdGFsbC1QYWNrYWdlIFN3YXNoYnVja2xlLkFzcE5ldENvcmUuU3dhZ2dlckdlbgpJbnN0YWxsLVBhY2thZ2UgSUdlZWtGYW4uQXNwTmV0Q29yZS5SYXBpRG9jCgpPUgoKQ0xJIDoKCmRvdG5ldCBhZGQgcGFja2FnZSBTd2FzaGJ1Y2tsZS5Bc3BOZXRDb3JlLlN3YWdnZXIKZG90bmV0IGFkZCBwYWNrYWdlIFN3YXNoYnVja2xlLkFzcE5ldENvcmUuU3dhZ2dlckdlbgpkb3RuZXQgYWRkIHBhY2thZ2UgSUdlZWtGYW4uQXNwTmV0Q29yZS5SYXBpRG9jCmBgYAoKMi5JbiB0aGUgQ29uZmlndXJlU2VydmljZXMgbWV0aG9kIG9mIFN0YXJ0dXAuY3MsIHJlZ2lzdGVyIHRoZSBTd2FnZ2VyIGdlbmVyYXRvciwgZGVmaW5pbmcgb25lIG9yIG1vcmUgU3dhZ2dlciBkb2N1bWVudHMuCgpgYGAKdXNpbmcgTWljcm9zb2Z0LkFzcE5ldENvcmUuTXZjLkNvbnRyb2xsZXJzCnVzaW5nIE1pY3Jvc29mdC5PcGVuQXBpLk1vZGVsczsKdXNpbmcgU3dhc2hidWNrbGUuQXNwTmV0Q29yZS5Td2FnZ2VyR2VuOwp1c2luZyBJR2Vla0Zhbi5Bc3BOZXRDb3JlLlJhcGlEb2M7CmBgYAojIyMg8J+agSBDb25maWd1cmVTZXJ2aWNlcwoKMy5TZXJ2aWNlcyBDb25maWd1cmUKYGBgCiAgIHNlcnZpY2VzLkFkZFN3YWdnZXJHZW4oYyA9PgogICAgewogICAgICAgIGMuU3dhZ2dlckRvYygidjEiLG5ldyBPcGVuQXBpSW5mb3tUaXRsZSA9ICJBUEkgVjEiLFZlcnNpb24gPSAidjEifSk7CiAgICAgICAgdmFyIGZpbGVQYXRoID0gUGF0aC5Db21iaW5lKFN5c3RlbS5BcHBDb250ZXh0LkJhc2VEaXJlY3RvcnksJCJ7dHlwZW9mKFN0YXJ0dXApLkFzc2VtYmx5LkdldE5hbWUoKS5OYW1lfS54bWwiKTsKICAgICAgICBjLkluY2x1ZGVYbWxDb21tZW50cyhmaWxlUGF0aCwgdHJ1ZSk7CiAgICB9KTsKYGBgCgojIyMg8J+SqiBDb25maWd1cmUKNC4gTWlkZGxld2FyZSBDb25maWd1cmUKYGBgCmFwcC5Vc2VTd2FnZ2VyKCk7CgphcHAuVXNlUmFwaURvY1VJKGMgPT4KewogICAgYy5Sb3V0ZVByZWZpeCA9ICIiOyAvLyBzZXJ2ZSB0aGUgVUkgYXQgcm9vdAogICAgYy5Td2FnZ2VyRW5kcG9pbnQoIi92MS9hcGktZG9jcyIsICJWMSBEb2NzIik7CiAgICAvL2h0dHBzOi8vbXJpbjkuZ2l0aHViLmlvL1JhcGlEb2MvYXBpLmh0bWwKICAgIC8vVGhpcyBDb25maWcgSGlnaGVyIHByaW9yaXR5CiAgICBjLkdlbmVyaWNSYXBpQ29uZmlnID0gbmV3IEdlbmVyaWNSYXBpQ29uZmlnKCkKICAgIHsKICAgICAgICBSZW5kZXJTdHlsZSA9ICJyZWFkIiwKICAgICAgICBUaGVtZSA9ICJsaWdodCIsLy9saWdodCB8IGRhcmsKICAgICAgICBTY2hlbWFTdHlsZSA9ICJ0YWJsZSIvLy8vdHJlZSB8IHRhYmxlCiAgICB9Owp9KTsKCmFwcC5Vc2VFbmRwb2ludHMoZW5kcG9pbnRzID0+CnsKICAgIGVuZHBvaW50cy5NYXBDb250cm9sbGVycygpOwogICAgZW5kcG9pbnRzLk1hcFN3YWdnZXIoIntkb2N1bWVudE5hbWV9L2FwaS1kb2NzIik7Cn0pOwpgYGAKW2h0dHBzOi8vbXJpbjkuZ2l0aHViLmlvL1JhcGlEb2MvYXBpLmh0bWxdKGh0dHBzOi8vbXJpbjkuZ2l0aHViLmlvL1JhcGlEb2MvYXBpLmh0bWwpIEdlbmVyaWNSYXBpQ29uZmlnIENvbmZpZ3VyYXRpb24gaXRlbXMgcmVmZXIgdG8gdGhpcyBkb2N1bWVudAoKIyMjIPCflI4gVmlld3MKUnVuIFByb2plY3TvvIxPcGVuIFdlYlNpdGUgaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9pbmRleC5odG1sIy9ob21lCgohW2RvY3MvaW1hZ2VzL3ZpZXcucG5nXShkb2NzL2ltYWdlcy92aWV3LnBuZykKCjUuTW9yZSBDb25maWd1cmUKClRvIGFkZCBjb21tZW50cyB0byBhIGRvY3VtZW50LCByaWdodC1jbGljayBvbiB0aGUgcHJvamVjdCAtIHByb3BlcnRpZXMgLSBnZW5lcmF0ZQoKIVtdKGh0dHBzOi8vcGljLmRvd25rLmNjL2l0ZW0vNWYzNDE2MWQxNDE5NWFhNTk0MTNmMGZjLmpwZykKCkluIEFkZFN3YWdnZXJHZW4gTWV0aG9kcyBZb3Ugc2hvdWxkIGFkZCB0aGlzIG1ldGhvbmQKCmBgYApjLkluY2x1ZGVYbWxDb21tZW50cyhQYXRoLkNvbWJpbmUoQXBwQ29udGV4dC5CYXNlRGlyZWN0b3J5LCAiU3dhZ2dlckRlbW8ueG1sIiksdHJ1ZSk7CmBgYApUaGUgbGFzdCBwYXJhbWV0ZXIgaXMgc2V0IHRvIHRydWUgdG8gZW5hYmxlIGNvbW1lbnRzIG9uIHRoZSBjb250cm9sbGVyCgoKCiMjIyBOU3dhZy5Bc3BOZXRDb3JlCgpBbm90aGVyIHdheQoKUGxlYXNlIHJlZmVyIHRvIHRoZSB0YWJsZSBvZiBjb250ZW50cyBbdGVzdC9XZWJTaXRlcy9OU3dhZy5Td2FnZ2VyLlJhcGlEb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9sdW95dW5jaG9uZy9JR2Vla0Zhbi5Bc3BOZXRDb3JlLlJhcGlEb2MvdHJlZS9tYXN0ZXIvdGVzdC9XZWJTaXRlcy9OU3dhZy5Td2FnZ2VyLlJhcGlEb2MpCgpgYGAKUGFja2FnZSBNYW5hZ2VyIDogCgpJbnN0YWxsLVBhY2thZ2UgSUdlZWtGYW4uQXNwTmV0Q29yZS5SYXBpRG9jCgpPUgoKQ0xJIDoKCmRvdG5ldCBhZGQgcGFja2FnZSBOU3dhZy5Bc3BOZXRDb3JlCmBgYAoKYGBgCnB1YmxpYyB2b2lkIENvbmZpZ3VyZVNlcnZpY2VzKElTZXJ2aWNlQ29sbGVjdGlvbiBzZXJ2aWNlcykKIHsKICAgIC8vIOWFtuWug1NlcnZpY2UKICAgICBzZXJ2aWNlcy5BZGRPcGVuQXBpRG9jdW1lbnQoKTsKIH0KYGBgCgpgYGAKcHVibGljIHZvaWQgQ29uZmlndXJlKElBcHBsaWNhdGlvbkJ1aWxkZXIgYXBwLCBJV2ViSG9zdEVudmlyb25tZW50IGVudikKewogICAgICAgIC8vIOWFtuWugyBVc2UKICAgICAgYXBwLlVzZU9wZW5BcGkoKTsKICAgICAgYXBwLlVzZVJhcGlEb2NVSShjID0+CiAgICAgewogICAgICAgICAgIGMuUm91dGVQcmVmaXggPSAiIjsKICAgICAgICAgICBjLlN3YWdnZXJFbmRwb2ludCgiL3N3YWdnZXIvdjEvc3dhZ2dlci5qc29uIik7CiAgICAgICAgICAgLy9odHRwczovL21yaW45LmdpdGh1Yi5pby9SYXBpRG9jL2FwaS5odG1sCiAgICAgICAgICAgLy9UaGlzIENvbmZpZyBIaWdoZXIgcHJpb3JpdHkKICAgICAgICAgICBjLkdlbmVyaWNSYXBpQ29uZmlnID0gbmV3IEdlbmVyaWNSYXBpQ29uZmlnKCkKICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSA9ICJyZWFkIiwKICAgICAgICAgICAgICAgIFRoZW1lID0gImxpZ2h0IiwvL2xpZ2h0IHwgZGFyawogICAgICAgICAgICAgICAgU2NoZW1hU3R5bGUgPSAidGFibGUiLy8vL3RyZWUgfCB0YWJsZQogICAgICAgICAgIH07CiAgICAgIH0pOwp9CmBgYApFdmVyeSBUaGluZ3MgaXMgT2suIE5vd++8jCBZb3UgY2FuIHZpc2lzdCBSYXBpRG9jCgoKCiMjIyBJR2Vla0Zhbi5Bc3BOZXRDb3JlLlJhcGlEb2MuRXh0cmEKVGhlcmUgaXMgb25seSBvbmUgY2xhc3PvvIxEaXNwbGF5IGxhYmVscyBvbiBtZXRob2RzIHRocm91Z2ggJ2ZpbHRlcicKCkNMSSAKYGBgCmRvdG5ldCBhZGQgcGFja2FnZSBJR2Vla0Zhbi5Bc3BOZXRDb3JlLlJhcGlEb2MuRXh0cmEKYGBgCgppbiBBZGRTd2FnZ2VyR2VuIHNlcnZpY2VzIGFkZCBgUmFwaURvY0xhYmxlT3BlcmF0aW9uRmlsdGVyYCBGaWx0ZXLjgIEKCllvdXIgbmVlZCBhZGQgdGhpcyBuYW1lc3BhY2VgSUdlZWtGYW4uQXNwTmV0Q29yZS5SYXBpRG9jLkV4dHJhYAoKYGBgZGlmZgpidWlsZGVyLlNlcnZpY2VzLkFkZFN3YWdnZXJHZW4oYyA9Pgp7CisgICBjLk9wZXJhdGlvbkZpbHRlcjxSYXBpRG9jTGFibGVPcGVyYXRpb25GaWx0ZXI+KCk7CiAgICB2YXIgZmlsZVBhdGggPSBQYXRoLkNvbWJpbmUoU3lzdGVtLkFwcENvbnRleHQuQmFzZURpcmVjdG9yeSwgJCJ7dHlwZW9mKFByb2dyYW0pLkFzc2VtYmx5LkdldE5hbWUoKS5OYW1lfS54bWwiKTsKICAgIGMuSW5jbHVkZVhtbENvbW1lbnRzKGZpbGVQYXRoLCB0cnVlKTsKICAgIGMuU3dhZ2dlckRvYygidjEiLCBuZXcgT3BlbkFwaUluZm8geyBUaXRsZSA9ICJBc3BOZXRDb3JlNl9SYXBpRGVtbyIsIFZlcnNpb24gPSAidjEiIH0pOwp9KTsKYGBgCgoKSW4gWW91ciBDb250cm9sbGVy77yMWW91IGNhbiBhZGQgdGhpcyBhdHRyaWJ1dGUgdG8gdGhlIG1ldGhvZAoKYGBgZGlmZgorICAgW1JhcGlEb2NMYWJlbCgiQ29yZSBBcGkiKV0KKyAgIFtSYXBpRG9jTGFiZWwoIlRlc3QiLFJhcGlEb2NDb2xvci5SRUQpXQogICAgW0h0dHBHZXQoTmFtZSA9ICJHZXRXZWF0aGVyRm9yZWNhc3QiKV0KICAgIHB1YmxpYyBJRW51bWVyYWJsZTxXZWF0aGVyRm9yZWNhc3Q+IEdldCgpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CmBgYApWaWV3cwoKIVtkb2NzL2ltYWdlcy9saWdodC1iYWRnZXMucG5nXShkb2NzL2ltYWdlcy9saWdodC1iYWRnZXMucG5nKQoKLSBJbiBhcHBzZXR0aW5ncy5qc29uIAoKYGBgY3NoYXJwCmJ1aWxkZXIuU2VydmljZXMuQ29uZmlndXJlPFJhcGlEb2NPcHRpb25zPihjID0+ewogICAgYnVpbGRlci5Db25maWd1cmF0aW9uLkJpbmQoIlJhcGlEb2MiLCBjKTsKfSk7CmBgYAoKYW9vc2V0dGluZ3MuanNvbgpgYGBqc29uCiAiUmFwaURvYyI6IHsKICAgICJSb3V0ZVByZWZpeCI6ICJzd2FnZ2VyIiwKICAgICJEb2N1bWVudFRpdGxlIjogIkFTUE5FVCBDT1JFIDYgUkFQSSBET0MiLAogICAgIkdlbmVyaWNSYXBpQ29uZmlnIjogewogICAgICAiVGhlbWUiOiAiZGFyayIKICAgIH0KICB9CmBgYApVc2UgTWlkZGxld2FyZSBDb25maWcgSGlnaGVyIHByaW9yaXR5LCBBbGwgR2VuZXJpY1JhcGlDb25maWcgY2FuIGNvbmZpZ3VyYXRpb24gaW4geW91IGFwcHNldHRpbmdzLmpzb24sUGxlYXNlIHJlZmVyIHRvIHRoaXMgZG9jdW1lbnRzIFtodHRwczovL21yaW45LmdpdGh1Yi5pby9SYXBpRG9jL2FwaS5odG1sXShodHRwczovL21yaW45LmdpdGh1Yi5pby9SYXBpRG9jL2FwaS5odG1sKQpgYGBjc2hhcnAKIGFwcC5Vc2VSYXBpRG9jVUkoYyA9PgogICAgewogICAgICAgIC8vVGhpcyBDb25maWcgSGlnaGVyIHByaW9yaXR5CiAgICAgICAgYy5HZW5lcmljUmFwaUNvbmZpZyA9IG5ldyBHZW5lcmljUmFwaUNvbmZpZygpCiAgICAgICAgewogICAgICAgICAgICBSZW5kZXJTdHlsZT0gInJlYWQiLC8vcmVhZCB8IHZpZXcgfCBmb2N1c2VkCiAgICAgICAgICAgIFRoZW1lPSJsaWdodCIsLy9saWdodCB8IGRhcmsKICAgICAgICAgICAgU2NoZW1hU3R5bGU9ICJ0YWJsZSIvL3RyZWUgfCB0YWJsZQogICAgICAgIH07CgogICAgfSk7CmBgYAoKIyMjIE1vcmUgQ29uZmlndXJlCgotIFtodHRwczovL2dpdGh1Yi5jb20vZG9tYWluZHJpdmVuZGV2L1N3YXNoYnVja2xlLkFzcE5ldENvcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21haW5kcml2ZW5kZXYvU3dhc2hidWNrbGUuQXNwTmV0Q29yZSkKLSBbaHR0cHM6Ly9tcmluOS5naXRodWIuaW8vUmFwaURvYy9hcGkuaHRtbF0oaHR0cHM6Ly9tcmluOS5naXRodWIuaW8vUmFwaURvYy9hcGkuaHRtbCkKCg== readmeEtag: '"4b762d10a1a847aa413b673b6d8043b50af83d96"' readmeLastModified: Fri, 03 May 2024 06:20:10 GMT repositoryId: 352583663 description: RapiDoc Custom Element for Open-API spec viewing +asp.net core created: '2021-03-29T09:17:57Z' updated: '2025-08-10T13:23:55Z' language: C# archived: false stars: 35 watchers: 1 forks: 2 owner: luoyunchong logo: https://avatars.githubusercontent.com/u/18613266?v=4 license: MIT repoEtag: '"7bdead23824fb94a1e3d28983fcf0a8595d5acfa04fd13c55623ce0ac59e5760"' repoLastModified: Sun, 10 Aug 2025 13:23:55 GMT foundInMaster: true category: SDK id: 35f12ae192b1843f5eb2aa583dc33f45 - source: - openapi3 tags - openapi31 tags repository: https://github.com/shapehq/framna-docs v3: true v3_1: true id: 8e493592c82829f4d1bb7891c4ac356c repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KPGltZyB3aWR0aD0iMjAwIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaGFwZWhxL2ZyYW1uYS1kb2NzL3Jhdy9tYWluL2xvZ28ucG5nIiBhbHQ9IkZyYW1uYSBEb2NzIGxvZ28iIC8+CjwvZGl2PgoKPGRpdiBhbGlnbj0iY2VudGVyIj4KPGgzPvCfkYsgV2VsY29tZSB0byBGcmFtbmEgRG9jczwvaDM+CjxoND5TZWxmLWhvc3RlZCB3ZWIgcG9ydGFsIHRoYXQgY2VudHJhbGl6ZXMgT3BlbkFQSSBkb2N1bWVudGF0aW9uIGFuZCBmYWNpbGl0YXRlcyBzcGVjLWRyaXZlbiBkZXZlbG9wbWVudCwgYnVpbHQgd2l0aCBHaXRIdWItYmFzZWQgYXV0aG9yaXphdGlvbi48L2g0Pgo8L2Rpdj4KCjxkaXYgYWxpZ249ImNlbnRlciI+CjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaGFwZWhxL2ZyYW1uYS1kb2NzL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbCI+PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaGFwZWhxL2ZyYW1uYS1kb2NzL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbC9iYWRnZS5zdmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NoYXBlaHEvZnJhbW5hLWRvY3MvYWN0aW9ucy93b3JrZmxvd3MvcnVuLXVuaXQtdGVzdHMueW1sIj48aW1nIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3NoYXBlaHEvZnJhbW5hLWRvY3MvYWN0aW9ucy93b3JrZmxvd3MvcnVuLXVuaXQtdGVzdHMueW1sL2JhZGdlLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2hhcGVocS9mcmFtbmEtZG9jcy9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LXNxbC1xdWVyaWVzLnltbCI+PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaGFwZWhxL2ZyYW1uYS1kb2NzL2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3Qtc3FsLXF1ZXJpZXMueW1sL2JhZGdlLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2hhcGVocS9mcmFtbmEtZG9jcy9hY3Rpb25zL3dvcmtmbG93cy9saW50LnltbCI+PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaGFwZWhxL2ZyYW1uYS1kb2NzL2FjdGlvbnMvd29ya2Zsb3dzL2xpbnQueW1sL2JhZGdlLnN2ZyI+PC9hPgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2hhcGVocS9mcmFtbmEtZG9jcy9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC1kb2NrZXItaW1hZ2UiPjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vc2hhcGVocS9mcmFtbmEtZG9jcy9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC1kb2NrZXItaW1hZ2UueW1sL2JhZGdlLnN2ZyI+PC9hPgo8L2Rpdj4KCi0tLQoKPGRpdiBhbGlnbj0iY2VudGVyIj4KPGEgaHJlZj0iIy1nZXR0aW5nLXN0YXJ0ZWQiPvCfmoAgR2V0dGluZyBTdGFydGVkPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwo8YSBocmVmPSIjLWhvdy1kb2VzLWl0LXdvcmsiPvCfkajigI3wn5SnIEhvdyBkb2VzIGl0IHdvcms/PC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwo8YSBocmVmPSIjLWhvdy1jYW4taS1jb250cmlidXRlIj7wn5Gp4oCN8J+SuyBIb3cgY2FuIEkgY29udHJpYnV0ZT88L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaGFwZWhxL2ZyYW1uYS1kb2NzL3dpa2kiPvCfk5YgV2lraTwvYT4KPC9kaXY+Cgo8aHIgLz4KCkZyYW1uYSBEb2NzIG1ha2VzIG1hbmFnaW5nIGFuZCBwcmV2aWV3aW5nIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBhIGJyZWV6ZSwgc3RyZWFtbGluaW5nIHNwZWMtZHJpdmVuIGRldmVsb3BtZW50LiBXaXRoIEdpdEh1Yi1iYXNlZCBhdXRob3JpemF0aW9uLCB5b3UgY2FuIGVhc2lseSBjb250cm9sIHdobyBhY2Nlc3NlcyB5b3VyIGRvY3MuIEZyYW1uYSBEb2NzIGNvbW1lbnRzIG9uIHB1bGwgcmVxdWVzdHMgdGhhdCB0d2VhayB5b3VyIE9wZW5BUEkgc3BlY3MsIGdpdmluZyB5b3UgcHJldmlldyBVUkxzIHRvIGVuc3VyZSBldmVyeSB1cGRhdGUgaXMgd2VsbC1yZXZpZXdlZC4KCjxkaXYgYWxpZ249ImNlbnRlciI+CjxpbWcgd2lkdGg9IjYwMCIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vc2hhcGVocS9mcmFtbmEtZG9jcy9yYXcvbWFpbi93aWtpL2hvbWUucG5nP3Jhdz10cnVlIiBhbHQ9IlNjcmVlbnNob3Qgb2YgRnJhbW5hIERvY3MiLz4KPC9kaXY+CgojIyDwn5qAIEdldHRpbmcgU3RhcnRlZAoKUGxlYXNlIHJlZmVyIHRvIHRoZSBmb2xsb3dpbmcgYXJ0aWNsZXMgaW4gW3RoZSB3aWtpXShodHRwczovL2dpdGh1Yi5jb20vc2hhcGVocS9mcmFtbmEtZG9jcy93aWtpKSB0byBnZXQgc3RhcnRlZCB3aXRoIEZyYW1uYSBEb2NzLgoKLSBbQWRkaW5nIERvY3VtZW50YXRpb24gdG8gRnJhbW5hIERvY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9zaGFwZWhxL2ZyYW1uYS1kb2NzL3dpa2kvQWRkaW5nLURvY3VtZW50YXRpb24tdG8tRnJhbW5hLURvY3MpCi0gW0Jyb3dzaW5nIERvY3VtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9zaGFwZWhxL2ZyYW1uYS1kb2NzL3dpa2kvQnJvd3NpbmctRG9jdW1lbnRhdGlvbikKLSBbVXBkYXRpbmcgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3NoYXBlaHEvZnJhbW5hLWRvY3Mvd2lraS9VcGRhdGluZy1Eb2N1bWVudGF0aW9uKQotIFtEZXBsb3lpbmcgRnJhbW5hIERvY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9zaGFwZWhxL2ZyYW1uYS1kb2NzL3dpa2kvRGVwbG95aW5nLUZyYW1uYS1Eb2NzKQoKIyMjIEluc3RhbGwgdGhlIE9wZW5BUEkgZGlmZiB0b29sIGxvY2FsbHkKCkZyYW1uYSBEb2NzIHJlbGllcyBvbiB0aGUgW2BvYXNkaWZmYF0oaHR0cHM6Ly9naXRodWIuY29tL29hc2RpZmYvb2FzZGlmZikgQ0xJIHdoZW4gY29tcGFyaW5nIHNwZWNpZmljYXRpb25zLiAgCgpPbiBNYWNPUyB5b3UgY2FuIGluc3RhbGwgd2l0aCBob21lYnJldzoKCmBgYGJhc2gKYnJldyB0YXAgb2FzZGlmZi9ob21lYnJldy1vYXNkaWZmCmJyZXcgaW5zdGFsbCBvYXNkaWZmCmBgYAoKIyMg8J+RqOKAjfCflKcgSG93IGRvZXMgaXQgd29yaz8KCkZyYW1uYSBEb2NzIHVzZXMgW09wZW5BUEkgc3BlY2lmaWNhdGlvbnNdKGh0dHBzOi8vc3dhZ2dlci5pbykgZnJvbSBHaXRIdWIgcmVwb3NpdG9yaWVzLiBVc2VycyBsb2cgaW4gd2l0aCB0aGVpciBHaXRIdWIgYWNjb3VudCB0byBhY2Nlc3MgZG9jdW1lbnRhdGlvbiBmb3IgcHJvamVjdHMgdGhleSBoYXZlIGFjY2VzcyB0by4gQSByZXBvc2l0b3J5IG9ubHkgbmVlZHMgYW4gT3BlbkFQSSBzcGVjIHRvIGJlIHJlY29nbml6ZWQgYnkgRnJhbW5hIERvY3MsIGJ1dCBjdXN0b21pemF0aW9uIGlzIHBvc3NpYmxlIHdpdGggYSAuZnJhbW5hLWRvY3MueW1sIGZpbGUuIEhlcmUncyBhbiBleGFtcGxlOgoKPGltZyB3aWR0aD0iNjUwIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaGFwZWhxL2ZyYW1uYS1kb2NzL3Jhdy9tYWluL3dpa2kvZXhhbXBsZS1vcGVuYXBpLXJlcG9zaXRvcnktd2l0aC1jb25maWcucG5nP3Jhdz10cnVlIi8+CgpGcmFtbmEgRG9jcyBzdXBwb3J0cyBzcGVjLWRyaXZlbiBkZXZlbG9wbWVudCBieSByZXF1aXJpbmcgT3BlbkFQSSBzcGVjcyBpbiBHaXRIdWIgcmVwb3MsIGVuc3VyaW5nIHZlcnNpb24gY29udHJvbCBhbmQgcGVlciByZXZpZXcuIFdoZW4gYSBwdWxsIHJlcXVlc3QgaXMgb3BlbmVkLCBGcmFtbmEgRG9jcyBjb21tZW50cyB3aXRoIGxpbmtzIHRvIHByZXZpZXcgdGhlIGRvY3VtZW50YXRpb246Cgo8aW1nIHdpZHRoPSI3NjAiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3NoYXBlaHEvZnJhbW5hLWRvY3MvcmF3L21haW4vd2lraS9wci1jb21tZW50LnBuZz9yYXc9dHJ1ZSIvPgoKTGVhcm4gbW9yZSBmcm9tIHRoZSBbQWRkaW5nIERvY3VtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9zaGFwZWhxL2ZyYW1uYS1kb2NzL3dpa2kvQWRkaW5nLURvY3VtZW50YXRpb24tdG8tRnJhbW5hLURvY3MpLCBbQnJvd3NpbmcgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3NoYXBlaHEvZnJhbW5hLWRvY3Mvd2lraS9Ccm93c2luZy1Eb2N1bWVudGF0aW9uKSwgYW5kIFtVcGRhdGluZyBEb2N1bWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vc2hhcGVocS9mcmFtbmEtZG9jcy93aWtpL1VwZGF0aW5nLURvY3VtZW50YXRpb24pIGFydGljbGVzIGluIHRoZSB3aWtpLgoKIyMg8J+RqeKAjfCfkrsgSG93IGNhbiBJIGNvbnRyaWJ1dGU/CgpQdWxsIHJlcXVlc3RzIHdpdGggYnVnZml4ZXMgYW5kIG5ldyBmZWF0dXJlcyBhcmUgbXVjaCBhcHByZWNpYXRlZC4gV2UgYXJlIGhhcHB5IHRvIHJldmlldyBQUnMgYW5kIG1lcmdlIHRoZW0gb25jZSB0aGV5IGFyZSByZWFkeSwgYXMgbG9uZyBhcyB0aGV5IGNvbnRhaW4gY2hhbmdlcyB0aGF0IGZpdCB3aXRoaW4gdGhlIHZpc2lvbiBvZiBGcmFtbmEgRG9jcy4KCkNsb25lIHRoZSByZXBvc2l0b3J5IGFuZCBjb25zdWx0IHRoZSBhcnRpY2xlcyBvbiBbcnVubmluZyBGcmFtbmEgRG9jcyBsb2NhbGx5XShodHRwczovL2dpdGh1Yi5jb20vc2hhcGVocS9mcmFtbmEtZG9jcy93aWtpL1J1bm5pbmctRnJhbW5hLURvY3MtTG9jYWxseSkgYW5kIFtjb250cmlidXRpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9zaGFwZWhxL2ZyYW1uYS1kb2NzL3dpa2kvQ29udHJpYnV0aW5nKSB0byBnZXQgc3RhcnRlZCBjb250cmlidXRpbmcgY2hhbmdlcyB0aGUgcHJvamVjdC4KCmBgYGJhc2gKZ2l0IGNsb25lIGdpdEBnaXRodWIuY29tOnNoYXBlaHEvZnJhbW5hLWRvY3MuZ2l0CmBgYAoKIyMjIPCflIAgR2l0IFdvcmtmbG93CgpUd28gZm9sbG93aW5nIGxvbmctbGl2ZWQgYnJhbmNoZXMgZXhpc3Q6CgoqICoqbWFpbioqOiBTdGFibGUvcmVsZWFzZSBicmFuY2ggbWVhbnQgZm9yIGRlcGxveW1lbnQgdG8gdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuCiogKipkZXZlbG9wKio6IEJyYW5jaCBtZWFudCBmb3IgZGVwbG95bWVudCB0byBhIHN0YWdpbmcgZW52aXJvbm1lbnQuCgoqKkRvJ3Mg8J+RjSoqCgotIEZlYXR1cmVzIGFyZSBicmFuY2hlZCBvZmYgZnJvbSBgZGV2ZWxvcGAgYW5kIG1lcmdlZCBiYWNrIGluIHVzaW5nIGEgUFIgd2hlbiByZWFkeS4gUmViYXNlIG9yIG1lcmdlIGBkZXZlbG9wYCBpbiB0byBrZWVwIHRoZSBmZWF0dXJlIGJyYW5jaCB1cCB0byBkYXRlLiBTcXVhc2ggbWVyZ2UgdGhlIGZlYXR1cmUgYnJhbmNoIGludG8gYGRldmVsb3BgLgotIGBkZXZlbG9wYCBpcyBtZXJnZWQgaW50byBgbWFpbmAgd2hlbmV2ZXIgYSBuZXcgcmVsZWFzZSBpcyBtYWRlLiBPbmx5IHJlZ3VsYXIgbWVyZ2UgY29tbWl0cyBhcmUgYWxsb3dlZCBpbiB0aGlzIGNhc2UuIFlvdSBkbyBub3QgbmVlZCB0byBicmluZyBkZXZlbG9wIHVwIHRvIGRhdGUgd2l0aCBgbWFpbmAgYmVmb3JlIG1lcmdpbmcuCi0gQSBob3RmaXggaXMgYXBwbGllZCBieSBicmFuY2hpbmcgb3V0IGZyb20gYG1haW5gLiBUaGUgaG90Zml4IGJyYW5jaCBfbXVzdF8gYmUgbWVyZ2VkIGludG8gYm90aCBgbWFpbmAgYW5kIGBkZXZlbG9wYC4KCioqRG9uJ3RzIPCfmYXigI3imYLvuI8qKgoKLSBOZXZlciBzcXVhc2ggbWVyZ2UgYGRldmVsb3BgIGludG8gYG1haW5gLgoKIyMg4p2k77iPIFRoZSBQcm9kdWN0IG9mIGEgU2hhcGUgV2Vla2VuZAoKQmVmb3JlIHdlIGJlY2FtZSBGcmFtbmEsIG91ciBjb21wYW55IHdhcyBrbm93biBhcyBTaGFwZS4gRXZlcnkgeWVhciwgd2UgaGVsZCAiU2hhcGUgV2Vla2VuZCIsIGEgdGhyZWUtZGF5IGhhY2thdGhvbiB3aGVyZSBhbGwgZW1wbG95ZWVzIGNhbWUgdG9nZXRoZXIgdG8gYnVpbGQgZXhjaXRpbmcgbmV3IHByb2R1Y3RzLiBJbiAyMDIzLCBvbmUgb2YgdGhvc2UgdGVhbXMsIHBhc3Npb25hdGUgYWJvdXQgZG9jdW1lbnRhdGlvbiBhbmQgc3BlYy1kcml2ZW4gZGV2ZWxvcG1lbnQsIGJ1aWx0IEZyYW1uYSBEb2NzLiBXZSBoYXZlIHVzZWQgaXQgZGFpbHkgZXZlciBzaW5jZS4KCi0tLQoKRnJhbW5hIERvY3MgaXMgYnVpbHQgd2l0aCDinaTvuI8gYnkgW0ZyYW1uYV0oaHR0cHM6Ly9mcmFtbmEuY29tLykgaW4gRGVubWFyay4gT2gsIGFuZCBbd2UgYXJlIGhpcmluZ10oaHR0cHM6Ly9mcmFtbmEuY29tL2NhcmVlcnMpIPCfpJcK readmeEtag: '"dda1ecea634317f2453f752915413f8c7b576c3e"' readmeLastModified: Mon, 08 Dec 2025 08:01:45 GMT repositoryId: 702539097 description: >- 📖❤️ Self-hosted web portal that centralizes OpenAPI documentation and facilitates spec-driven development, built with GitHub-based authorization. created: '2023-10-09T14:04:55Z' updated: '2026-02-01T09:39:50Z' language: TypeScript archived: false stars: 44 watchers: 1 forks: 2 owner: shapehq logo: https://avatars.githubusercontent.com/u/818802?v=4 license: MIT repoEtag: '"870faba9e401d760d32d1957ffb606a83b777c37dee73368c465305247873ab1"' repoLastModified: Sun, 01 Feb 2026 09:39:50 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/contentjet/openapi-ui v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFVJCgpUaGlzIGlzIGEgUmVhY3QgYmFzZWQgc2luZ2xlIHBhZ2UgYXBwIHdoaWNoIHJlbmRlcnMgZG9jdW1lbnRhdGlvbiBmcm9tIGEgdmFsaWQgT3BlbkFQSSAzLjAuMC1SQzAgZG9jdW1lbnQuCgojIE5PVEUKClRoaXMgcHJvamVjdCB3YXMgZXhwZXJpbWVudGFsIGFuZCBpcyBub3QgYmVpbmcgYWN0aXZlbHkgbWFpbnRhaW5lZC4KCiMjIEdldHRpbmcgc3RhcnRlZAoKIyMjIyBQcm9qZWN0IHNldHVwCgpJbnN0YWxsIHByb2plY3QgZGVwZW5kZW5jaWVzOgoKYGBgCm5wbSBpbnN0YWxsCmBgYAoKIyMjIyBSdW4gZGV2ZWxvcG1lbnQgc2VydmVyCgpgYGAKbnBtIHN0YXJ0CmBgYAoKIyMjIyBSdW4gbGludGVyCgpgYGAKbnBtIHJ1biBsaW50CmBgYAoKIyMjIyBDcmVhdGUgcHJvZHVjdGlvbiBidWlsZAoKYGBgCm5wbSBydW4gYnVpbGQKYGBgCg== readmeEtag: '"096c9725fbaffffd629a454da4dc657fefc07dd4"' readmeLastModified: Thu, 15 Aug 2019 06:16:12 GMT repositoryId: 84547405 description: React based OpenAPI 3.0+ documentation generator created: '2017-03-10T10:16:22Z' updated: '2024-10-03T09:19:57Z' language: JavaScript archived: false stars: 33 watchers: 1 forks: 3 owner: contentjet logo: https://avatars.githubusercontent.com/u/21168640?v=4 repoEtag: '"9b597ef219dfcbfdf5c3b0609722f3587270938ae9df8d3e0efaf46cbbcafd4d"' repoLastModified: Thu, 03 Oct 2024 09:19:57 GMT foundInMaster: true category: - Description Validators - Server Implementations id: 28b84909b56d604ecd1db7ae362fec50 - source: openapi3 tags repository: https://github.com/anupsaund/vertx-auto-swagger v3: true repositoryMetadata: base64Readme: >- IyB2ZXJ0eC1hdXRvLXN3YWdnZXIKCj4gVEw7RFIgLSBIb3cgdG8gZ2V0IGphdmEgVmVydC54IHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBPcGVuIEFQSSB2MyBzcGVjIChBLmsuYS4gU3dhZ2dlcikgYW5kIHNlcnZlIGl0IHRvIFN3YWdnZXIgVUksIHNlcnZlZCB0aHJvdWdoIFZlcnQueC4KCiMjIyBNb3RpdmF0aW9uCkkgbmVlZGVkIGEgd2F5IHRvIGdlbmVyYXRlIGEgc3dhZ2dlciBzcGVjIGZyb20gSmF2YSBjb2RlLCBpbnN0ZWFkIG9mIGhhdmluZyB0byBoYW5kIGNyYWZ0IGEgc3dhZ2dlciBKU09OIGZpbGUuCgpJIGFsc28gd2FudGVkIHRvIHNlcnZlIG91dCB0aGUgc3BlYyBmcm9tIFZlcnQueCBpbnRvIFN3YWdnZXIgVUkgc28gdGhhdCBpdCBjb3VsZCBiZSB1c2VkIGJ5IGFsbC4KClRoZXJlIGlzIGEgbW9yZSBkZXRhaWxlZCB3cml0ZSB1cCBhdmFpbGFibGUgb24gbXkgYmxvZyBwb3N0OiAKaHR0cDovL2FudXBzYXVuZC5jb20vaG93LXRvLWdlbmVyYXRlLW9wZW5hcGktMy0wLXN3YWdnZXItc3BlYy1mcm9tLXZlcnR4LWphdmEtYW5kLXNlcnZlLWl0LXZpYS1zd2FnZ2VyLXVpCgojIyMgV2hhdCBkb2VzIGl0IGRvPwoKMS4gIFJlYWQgSmF2YSBBbm5vdGF0aW9ucyBhbmQgbWFwIHRoZW0gaW50byBhIG9wZW5BUEkgc3BlYy4KMi4gIFNlcnZlIHRoZSBvcGVuQVBJIHNwZWMgb3V0IG9uIGFuIGVuZCBwb2ludC4KMy4gIFNlcnZlIGEgZGlzdHJpYnV0YWJsZSB2ZXJzaW9uIG9mIFN3YWdnZXJVSSB3aGljaCBwcmVzZW50cyB0aGUgc3dhZ2dlciBzcGVjIGZyb20gcG9pbnQgMi4KCgojIyMgU2NyZWVuc2hvdCBvZiBTd2FnZ2VyIFVJCiFbU3dhZ2dlclVJXShVSS5QTkcgIlN3YWdnZXJVSSIpCgojIyMgV2hhdCBkb2VzIGEgdHlwaWNhbCBKYXZhIGFubm90YXRpb24gbG9vayBsaWtlPwoKYGBgamF2YQpAT3BlcmF0aW9uKHN1bW1hcnkgPSAiRmluZCBwcm9kdWN0cyBieSBJRCIsIG1ldGhvZCA9ICJHRVQiLCBvcGVyYXRpb25JZCA9ICJwcm9kdWN0Lzpwcm9kdWN0SWQiLAogICAgdGFncyA9IHsKICAgICAgIlByb2R1Y3QiCiAgICB9LAogICAgcGFyYW1ldGVycyA9IHsKICAgICAgQFBhcmFtZXRlcihpbiA9IFBhcmFtZXRlckluLlBBVEgsIG5hbWUgPSAicHJvZHVjdElkIiwKICAgICAgICByZXF1aXJlZCA9IHRydWUsIGRlc2NyaXB0aW9uID0gIlRoZSB1bmlxdWUgSUQgYmVsb25naW5nIHRvIHRoZSBwcm9kdWN0Iiwgc2NoZW1hID0gQFNjaGVtYSh0eXBlID0gInN0cmluZyIpKQogICAgfSwKICAgIHJlc3BvbnNlcyA9IHsKICAgICAgQEFwaVJlc3BvbnNlKHJlc3BvbnNlQ29kZSA9ICIyMDAiLCBkZXNjcmlwdGlvbiA9ICJPSyIsCiAgICAgICAgY29udGVudCA9IEBDb250ZW50KAogICAgICAgICAgbWVkaWFUeXBlID0gImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgZW5jb2RpbmcgPSBARW5jb2RpbmcoY29udGVudFR5cGUgPSAiYXBwbGljYXRpb24vanNvbiIpLAogICAgICAgICAgc2NoZW1hID0gQFNjaGVtYShuYW1lID0gInByb2R1Y3QiLCBleGFtcGxlID0KICAgICAgICAgICAgInsiICsKICAgICAgICAgICAgICAiJ19pZCc6J2FiYycsIiArCiAgICAgICAgICAgICAgIid0aXRsZSc6J1JlZCBUcnVjaycsIiArCiAgICAgICAgICAgICAgIidpbWFnZV91cmwnOidodHRwczovL2ltYWdlcy5wZXhlbHMuY29tL3Bob3Rvcy8xMTEyNTk3L3BleGVscy1waG90by0xMTEyNTk3LmpwZWcnLCIgKwogICAgICAgICAgICAgICInZnJvbV9kYXRlJzonMjAxOC0wOC0zMCcsIiArCiAgICAgICAgICAgICAgIid0b19kYXRlJzonMjAxOS0wOC0zMCcsIiArCiAgICAgICAgICAgICAgIidwcmljZSc6JzEyNS4wMCcsIiArCiAgICAgICAgICAgICAgIidlbmFibGVkJzp0cnVlIiArCiAgICAgICAgICAgICAgIn0iLAogICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiA9IFByb2R1Y3QuY2xhc3MpCiAgICAgICAgKQogICAgICApLAogICAgICBAQXBpUmVzcG9uc2UocmVzcG9uc2VDb2RlID0gIjQwNCIsIGRlc2NyaXB0aW9uID0gIk5vdCBmb3VuZC4iKSwKICAgICAgQEFwaVJlc3BvbnNlKHJlc3BvbnNlQ29kZSA9ICI1MDAiLCBkZXNjcmlwdGlvbiA9ICJJbnRlcm5hbCBTZXJ2ZXIgRXJyb3IuIikKICAgIH0KICApCmBgYAoKIyMgSG93IHRvIGdldCBpdCBydW5uaW5nCgo+IERlcGVuZGFuY2llczogTWF2ZW4sIEpBVkEgYW5kIGEgSkFWQSBJREUgaXMgaGVscGZ1bC4KCjEuIENsb25lIHRoZSByZXBvc2l0b3J5IGFuZCB1c2UgTWF2ZW4gdG8gaW5zdGFsbCBkZXBlbmRhbmNpZXMuCjEuIEluIEludGVsbGlqIHNldCB1cCBhIGNvbmZpZyB0byBydW4gYSBKYXZhIEFwcGxpY2F0aW9uIHdpdGggdGhlIGZvbGxvd2luZyBzZXR0aW5ncy4KCmBgYCAKICBNYWluIENsYXNzOiBpby52ZXJ0eC5jb3JlLkxhdW5jaGVyCiAgVk0gT3B0aW9uczogPHVwIHRvIHlvdSwgb3IgbGVhdmUgYmxhbms+CiAgUHJvZ3JhbSBBcmd1bWVudHM6IHJ1biBpby52ZXJ0eC5WZXJ0eEF1dG9Td2FnZ2VyLk1haW5WZXJ0aWNsZQpgYGAKCjMuIEFmdGVyIHRoYSBhcHBsaWNhdGlvbiBoYXMgbGF1bmNoZWQsIGdvIHRvIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9kb2MvaW5kZXguaHRtbAoKIyMjIyBTcGVjaWFsIENyZWRpdApHb2VzIHRvIENocmlzdG9zIEthcmF0emFzIGZvciBjcmVhdGluZyB0aGUgZ2VuZXJhdG9yIGNsYXNzIHdoaWNoIGhhcyBiZWVuIHVzZWQgYW5kIGVuaGFuY2VkIGZvciB0aGlzIHJlc3Bvc2l0b3J5OgogCkhpcyBvcmlnaW5hbCByZXBvc2l0b3J5IGlzIGF2YWlsYWJsZSBhdDogaHR0cHM6Ly9naXRodWIuY29tL2NrYXJhdHphcy92ZXJ0eC1vcGVuYXBpLXNwZWMtZ2VuZXJhdG9yCgo= readmeEtag: '"b8f5574724322b3a9f82670fee3c87e13b84bb50"' readmeLastModified: Wed, 23 Feb 2022 05:43:43 GMT repositoryId: 147231389 description: Java Micro Service API Generation created: '2018-09-03T16:50:50Z' updated: '2024-12-20T07:55:56Z' language: Java archived: false stars: 33 watchers: 4 forks: 15 owner: anupsaund logo: https://avatars.githubusercontent.com/u/6728822?v=4 license: MIT repoEtag: '"a07e82fe65046a5699d893963f706fa94f7f62285d35818a58ab5662ae4aad06"' repoLastModified: Fri, 20 Dec 2024 07:55:56 GMT foundInMaster: true category: Parsers id: d2fbd0151824a8918e13f184d83e8083 - source: openapi3 tags repository: https://github.com/ryan-mars/workers-queue-demo v3: true repositoryMetadata: base64Readme: >- IyBEdXJhYmxlIE9iamVjdHMgUkVTVCBNZXNzYWdlIFF1ZXVlIEV4YW1wbGUKCj4gTm90ZTogWW91IG11c3QgdXNlIFt3cmFuZ2xlcl0oaHR0cHM6Ly9kZXZlbG9wZXJzLmNsb3VkZmxhcmUuY29tL3dvcmtlcnMvY2xpLXdyYW5nbGVyL2luc3RhbGwtdXBkYXRlKSAxLjE5LjMgb3IgbmV3ZXIgdG8gZGVwbG95IHRoaXMgcHJvamVjdC4KCkFuIGVkZ2UgbWVzc2FnZSBxdWV1ZSBzZXJ2aWNlIHRoYXQgcnVucyBvbiBDbG91ZGZsYXJlIFdvcmtlcnMgdXNpbmcgRHVyYWJsZSBPYmplY3RzIGFuZCBLVi4gSXQgaXMgaW1wbGVtZW50ZWQgYXMgYSBzaW1wbGUgUkVTVCBBUEkuCgpUaGlzIGRlbW8gdXNlczoKCi0gW0Nsb3VkZmxhcmUgV29ya2Vyc10oaHR0cHM6Ly9kZXZlbG9wZXJzLmNsb3VkZmxhcmUuY29tL3dvcmtlcnMvbGVhcm5pbmcvaG93LXdvcmtlcnMtd29ya3MpCi0gW0R1cmFibGUgT2JqZWN0c10oaHR0cHM6Ly9kZXZlbG9wZXJzLmNsb3VkZmxhcmUuY29tL3dvcmtlcnMvbGVhcm5pbmcvdXNpbmctZHVyYWJsZS1vYmplY3RzKQotIFtLVl0oaHR0cHM6Ly9kZXZlbG9wZXJzLmNsb3VkZmxhcmUuY29tL3dvcmtlcnMvcnVudGltZS1hcGlzL2t2KQotIFtNaW5pZmxhcmUgdjJdKGh0dHBzOi8vdjIubWluaWZsYXJlLmRldikKLSBbVHlwZVNjcmlwdF0oaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnKQotIFtKZXN0XShodHRwczovL2plc3Rqcy5pbykKLSBbRVMgTW9kdWxlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9HdWlkZS9Nb2R1bGVzKQotIFtlc2J1aWxkXShodHRwczovL2VzYnVpbGQuZ2l0aHViLmlvKQotIFtXcmFuZ2xlcl0oaHR0cHM6Ly9kZXZlbG9wZXJzLmNsb3VkZmxhcmUuY29tL3dvcmtlcnMvY2xpLXdyYW5nbGVyL2luc3RhbGwtdXBkYXRlKQoKIyMgUnVubmluZyB0aGUgRGVtbwoKLSBgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9yeWFuLW1hcnMvd29ya2Vycy1xdWV1ZS1kZW1vLmdpdGAKLSBJbnN0YWxsIFt3cmFuZ2xlcl0oaHR0cHM6Ly9kZXZlbG9wZXJzLmNsb3VkZmxhcmUuY29tL3dvcmtlcnMvY2xpLXdyYW5nbGVyL2luc3RhbGwtdXBkYXRlKQotIGBjZCB3b3JrZXJzLXF1ZXVlLWRlbW9gCi0gYG5wbSBpbnN0YWxsYAotIGB3cmFuZ2xlciBsb2dpbmAKLSBgd3JhbmdsZXIga3Y6bmFtZXNwYWNlIGNyZWF0ZSBRVUVVRVNfS1ZgCiAgWW91IHNob3VsZCBzZWUgc29tZXRoaW5nIGxpa2U6CgpgYGAK8J+MgCAgQ3JlYXRpbmcgbmFtZXNwYWNlIHdpdGggdGl0bGUgIndvcmtlcnMtcXVldWUtZGVtby1RVUVVRVNfS1YiCuKcqCAgU3VjY2VzcyEKQWRkIHRoZSBmb2xsb3dpbmcgdG8geW91ciBjb25maWd1cmF0aW9uIGZpbGUgaW4geW91ciBrdl9uYW1lc3BhY2VzIGFycmF5Ogp7IGJpbmRpbmcgPSAiUVVFVUVTX0tWIiwgaWQgPSAiYmFmMDg1YzIzYy4uLiIgfQpgYGAKCi0gQWRkIHRoZSBLViBjb25maWcgdG8gYHdyYW5nbGVyLnRvbWxgCi0gYHdyYW5nbGVyIHB1Ymxpc2hgIHdpbGwgYnVpbGQsIHJ1biB0ZXN0cywgYW5kIGRlcGxveSB0byBDbG91ZGZsYXJlCgpZb3Ugc2hvdWxkIHNlZSBzb21ldGhpbmcgbGlrZToKCmBgYArinKggIEJ1aWxkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhYArinKggIFN1Y2Nlc3NmdWxseSBwdWJsaXNoZWQgeW91ciBzY3JpcHQgdG8KIGh0dHBzOi8vd29ya2Vycy1xdWV1ZS1kZW1vLnlvdTEyMzQud29ya2Vycy5kZXYKYGBgCgo+IE5vdGUgdGhlIFVSTCDwn5GG8J+PuwoKQ29weS9wYXN0ZSB0aGUgY29udGVudHMgb2YgYHNjaGVtYS55YW1sYCBpbnRvIFtTd2FnZ2VyIEVkaXRvcl0oaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pby8pLiBDaGFuZ2UgdGhlIGBzZXJ2ZXJzYCBrZXkgdG8gbWF0Y2ggeW91ciBkZXBsb3llZCBVUkwuCgpIYXZlIGZ1biEKCiMjIFdoZXJlIHRvIGZpbmQgdGhpbmdzCgotIFJFU1QgQVBJIHNwZWMgaXMgaW4gYHNjaGVtYS55YW1sYC4KLSBXb3JrZXIgY29kZSBpcyBpbiBgc3JjL2AuIFRoZSBEdXJhYmxlIE9iamVjdCBgUXVldWVgIGNsYXNzIGlzIGluIGBzcmMvcXVldWUudHNgLCBhbmQgdGhlIFdvcmtlciBzY3JpcHQgaXMgaW4gYHNyYy9pbmRleC50c2AuCi0gZXNidWlsZCBpcyBjb25maWd1cmVkIHRvIG91dHB1dCBhIGJ1bmRsZWQgRVMgTW9kdWxlIHRvIGBkaXN0L2luZGV4Lm1qc2AuCi0gVW5pdCB0ZXN0cyBpbiBgc3JjL2luZGV4LnNwZWMudHNgLCB3aGljaCB3aWxsIHJ1biBhcyBwYXJ0IG9mIGB3cmFuZ2xlciBidWlsZGAuIFRvIHJ1biB0ZXN0cyBvbiB0aGVpciBvd24gdXNlIGBucG0gdGVzdGAuCg== readmeEtag: '"f9c76c7d6c392322cbda83405447e0547810b5f3"' readmeLastModified: Sun, 21 Nov 2021 06:08:47 GMT repositoryId: 430176829 description: >- Edge message queue service on Cloudflare Workers using Durable Objects and KV. It provides a simple REST API. created: '2021-11-20T18:14:55Z' updated: '2025-10-16T08:08:15Z' language: TypeScript archived: false stars: 38 watchers: 2 forks: 3 owner: ryan-mars logo: https://avatars.githubusercontent.com/u/824046?v=4 license: MIT repoEtag: '"22d242be1f2c69b4e8ff36b87539890fd826434db3daad065e5852b4e6ead135"' repoLastModified: Thu, 16 Oct 2025 08:08:15 GMT foundInMaster: true category: - Documentation - Server Implementations id: 1f14d7ec72292757f719d521c8fd5f54 - source: openapi3 tags repository: https://github.com/tfranzel/drf-spectacular-sidecar v3: true repositoryMetadata: base64Readme: >- PT09PT09PT09PT09PT09PT09PT09PT0KZHJmLXNwZWN0YWN1bGFyLXNpZGVjYXIKPT09PT09PT09PT09PT09PT09PT09PT0KCnxweXBpLXZlcnNpb258IHxweXBpLWRsfAoKU2VydmUgc2VsZi1jb250YWluZWQgZGlzdHJpYnV0aW9uIGJ1aWxkcyBvZiBgU3dhZ2dlciBVSWBfIGFuZCBgUmVkb2NgXyB3aXRoIGBEamFuZ29gXyBlaXRoZXIgdmlhIGBydW5zZXJ2ZXJgXyBvciBgY29sbGVjdHN0YXRpY2BfLgoKVGhpcyBEamFuZ28gYXBwIGlzIGFuIG9wdGlvbmFsIGFkZGl0aW9uIHRvIGBkcmYtc3BlY3RhY3VsYXJgXywgYnV0IGRvZXMgbm90IGRlcGVuZCBvbiBpdC4gSXQgbWF5IGFsc28gYmUgdXNlZCBpbmRlcGVuZGVudGx5LgoKKiBgU3dhZ2dlciBVSWBfIHZlcnNpb24gYGA1LjMxLjBgYCAoYG5wbSA8aHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvc3dhZ2dlci11aS1kaXN0PmBfXykKKiBgUmVkb2NgXyB2ZXJzaW9uIGBgMi41LjJgYCAoYG5wbSA8aHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvcmVkb2M+YF9fKQoKVGhpcyBpcyBhIHNlbGYtdXBkYXRpbmcgYW5kIHNlbGYtcHVibGlzaGluZyByZXBvc2l0b3J5IHRoYXQgbG9va3MgZm9yIHVwZGF0ZXMgb24gdGhlIDFzdCBvZiBldmVyeSBtb250aC4KVGhlIGRpc3RyaWJ1dGlvbiBmaWxlcyBhcmUgc291cmNlZCBmcm9tIG5wbSB2aWEgYGpzZGVsaXZyYF8sIHZhbGlkYXRlZCwgcGFja2FnZWQgYW5kIHVwbG9hZGVkIHRvIGBQeVBJYF8uCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgouLiBjb2RlOjogYmFzaAoKICAgICQgcGlwIGluc3RhbGwgZHJmLXNwZWN0YWN1bGFyLXNpZGVjYXIKClRoZSBwYWNrYWdlIG5lZWRzIHRvIGJlIHJlZ2lzdGVyZWQgdG8gYWxsb3cgRGphbmdvIHRvIGRpc2NvdmVyIHRoZSBzdGF0aWMgZmlsZXMuCgouLiBjb2RlOjogcHl0aG9uCgogICAgSU5TVEFMTEVEX0FQUFMgPSBbCiAgICAgICAgIyBBTEwgWU9VUiBBUFBTCiAgICAgICAgJ2RyZl9zcGVjdGFjdWxhcl9zaWRlY2FyJywKICAgIF0KClJlcXVpcmVtZW50cwotLS0tLS0tLS0tLS0KCkRqYW5nbyA+PSAyLjIKCkxpY2Vuc2VzCi0tLS0tLS0tCgpQcm92aWRlZCBieSBgVC4gRnJhbnplbCA8aHR0cHM6Ly9naXRodWIuY29tL3RmcmFuemVsPmBfLiBgTGljZW5zZWQgdW5kZXIgMy1DbGF1c2UgQlNEIDxodHRwczovL2dpdGh1Yi5jb20vdGZyYW56ZWwvZHJmLXNwZWN0YWN1bGFyLXNpZGVjYXIvYmxvYi9tYXN0ZXIvTElDRU5TRT5gXy4KClRoaXMgcGFja2FnZSBpbmNsdWRlcyBkaXN0cmlidXRpb24gYnVpbGRzIG9mCgoqIGBTd2FnZ2VyIFVJYF86IFRoZSBgb3JpZ2luYWwgbGljZW5zZSAoQXBhY2hlIDIuMCkgPGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpL2Jsb2IvbWFzdGVyL0xJQ0VOU0U+YF8gYW5kIGNvcHlyaWdodCBhcHBseSB0byB0aG9zZSBmaWxlcy4KKiBgUmVkb2NgXzogVGhlIGBvcmlnaW5hbCBsaWNlbnNlIChNSVQpIDxodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvYy9ibG9iL21hc3Rlci9MSUNFTlNFPmBfIGFuZCBjb3B5cmlnaHQgYXBwbHkgdG8gdGhvc2UgZmlsZXMuCgoKLi4gfHB5cGktdmVyc2lvbnwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9kcmYtc3BlY3RhY3VsYXItc2lkZWNhci5zdmcKICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2RyZi1zcGVjdGFjdWxhci1zaWRlY2FyLwouLiB8cHlwaS1kbHwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvZG0vZHJmLXNwZWN0YWN1bGFyLXNpZGVjYXIKICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2RyZi1zcGVjdGFjdWxhci1zaWRlY2FyLwoKLi4gX1B5UEk6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9kcmYtc3BlY3RhY3VsYXItc2lkZWNhci8KLi4gX2pzZGVsaXZyOiBodHRwczovL3d3dy5qc2RlbGl2ci5jb20vCi4uIF9EamFuZ286IGh0dHBzOi8vd3d3LmRqYW5nb3Byb2plY3QuY29tLwouLiBfZHJmLXNwZWN0YWN1bGFyOiBodHRwczovL2dpdGh1Yi5jb20vdGZyYW56ZWwvZHJmLXNwZWN0YWN1bGFyCi4uIF9SZWRvYzogaHR0cHM6Ly9naXRodWIuY29tL1JlZG9jbHkvcmVkb2MKLi4gX1N3YWdnZXIgVUk6IGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpCi4uIF9jb2xsZWN0c3RhdGljOiBodHRwczovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMy4yL3JlZi9jb250cmliL3N0YXRpY2ZpbGVzLyNjb2xsZWN0c3RhdGljCi4uIF9ydW5zZXJ2ZXI6IGh0dHBzOi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8zLjIvcmVmL2NvbnRyaWIvc3RhdGljZmlsZXMvI3J1bnNlcnZlcgo= readmeEtag: '"45ee5d750fd05b791465879df4cd4df938129de0"' readmeLastModified: Thu, 01 Jan 2026 11:27:07 GMT repositoryId: 410115575 description: >- Serve self-contained distribution builds of Swagger UI and Redoc with Django. created: '2021-09-24T22:17:14Z' updated: '2026-01-13T18:15:48Z' language: Python archived: false stars: 46 watchers: 1 forks: 6 owner: tfranzel logo: https://avatars.githubusercontent.com/u/13507857?v=4 license: BSD-3-Clause repoEtag: '"daf8f9de5c7d4734e00ff9cc7d70c6275e83a27349614086d6a3418e42c71a5f"' repoLastModified: Tue, 13 Jan 2026 18:15:48 GMT foundInMaster: true category: - Converters - Server Implementations id: efb63b84a6a36939fb408835301f3b03 - source: openapi3 tags repository: https://github.com/maximiliankoestler/hcloud-openapi v3: true repositoryMetadata: base64Readme: >- IyBVbm9mZmljaWFsIE9wZW5BUEkgRGVzY3JpcHRpb24gZm9yIHRoZSBIZXR6bmVyIENsb3VkIEFQSQoKIVtdKGh0dHBzOi8vZ2l0aHViLmNvbS9NYXhpbWlsaWFuS29lc3RsZXIvaGNsb3VkLW9wZW5hcGkvd29ya2Zsb3dzL0NJJTIwQnVpbGQlMjBhbmQlMjBPcGVuQVBJJTIwU3BlYyUyMEdlbmVyYXRpb24vYmFkZ2Uuc3ZnKQoKVGhpcyBpcyBhbiBhdHRlbXB0IHRvIGltcHJvdmUgSGV0em5lcidzIG93biBPcGVuQVBJIHNwZWNpZmljYXRpb24gdG8gbWFrZSBpdCB1c2FibGUgaW4gY29kZSBnZW5lcmF0aW9uLgoKV2hlbiB0aGlzIHByb2plY3Qgd2FzIHN0YXJ0ZWQsIEhldHpuZXIgaGFkIG5vdCBwdWJsaXNoZWQgdGhlaXIgb3duIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmb3IgdGhlaXIgY2xvdWQgQVBJLCBzbyBJIGRlY2lkZWQgdG8gYnVpbGQgbXkgb3duIGJhc2VkIG9uIHRoZSBIVE1MIGRvY3VtZW50YXRpb24gb24gdGhlaXIgd2Vic2l0ZS4KQnkgbm93LCBIZXR6bmVyIGhhcyBhY3R1YWxseSBwdWJsaXNoZWQgYW4gW09wZW5BUEkgc3BlYyBmb3IgdGhlaXIgQ2xvdWQgQVBJXShodHRwczovL2RvY3MuaGV0em5lci5jbG91ZC9jbG91ZC5zcGVjLmpzb24pIGFuZCByZWNlbnRseSBhbHNvIFt0aGUgSGV0em5lciBBUEldKGh0dHBzOi8vZG9jcy5oZXR6bmVyLmNsb3VkL2hldHpuZXIuc3BlYy5qc29uKSBIb3dldmVyLCBJIHRoaW5rIHRoaXMgcHJvamVjdCBzdGlsbCBhZGRzIHNvbWUgdmFsdWUuCgpXaGlsZSBIZXR6bmVyIG5vdyBhcHBlYXJzIHRvIGdlbmVyYXRlIHRoZWlyIGRvY3VtZW50YXRpb24gd2Vic2l0ZSBmcm9tIHRoZSBPcGVuQVBJIHNwZWMsIHRoZSBzcGVjIGlzIG5vdCB2ZXJ5IHVzZWZ1bCBmb3IgYXV0b21hdGljIGNvZGUgZ2VuZXJhdGlvbi4KVGhpcyBwcm9qZWN0IGFpbXMgdG8gY29udmVydCB0aGUgb2ZmaWNpYWwgc3BlY3MgdG8gYW4gaW1wcm92ZWQgdmVyc2lvbiB3aXRoIHRoZSBmb2xsb3dpbmcgbWFpbiBmZWF0dXJlczoKCi0gQSBzaW5nbGUgZmlsZSBkZXNjcmliaW5nIGFsbCBBUEkgZW5kcG9pbnRzIGZyb20gbXVsdGlwbGUgc291cmNlIGRvY3VtZW50cwotIERlZmluaXRpb24gb2YgY29tbW9uIGNvbXBvbmVudHMgdGhhdCBhcmUgcmV1c2VkIHRocm91Z2hvdXQgdGhlIHNjaGVtYQotIEFQSS1mcmllbmRseSB0YWcgbmFtZXMKLSBVbmlxdWUgYG9wZXJhdGlvbklkYHMKCkFzIGFuIGFkZGVkIGJlbmVmaXQsIG1haW5seSBmcm9tIHVzZSBvZiBjb21tb24gY29tcG9uZW50cywgdGhlIGltcHJvdmVkIHNwZWMgaXMgbXVjaCBzbWFsbGVyICgxLjE2MiBNQiB2cyAyLjkwMiBNQikgdGhhbiB0aGUgb3JpZ2luYWwuCgojIyBGdXJ0aGVyIFJlYWRpbmcKCi0gW0xpbmsgdG8gdGhlIGdlbmVyYXRlZCBvcGVuQVBJIGRvY3VtZW50XShvcGVuYXBpL2hjbG91ZC5qc29uKQotIFtPZmZpY2lhbCBBUEkgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2NzLmhldHpuZXIuY2xvdWQvKQotIFtPcGVuQVBJIHNwZWMgZG9jdW1lbnQgcHJvdmlkZWQgYnkgSGV0em5lciBmb3IgdGhlIEhldHpuZXIgQ2xvdWQgQVBJXShodHRwczovL2RvY3MuaGV0em5lci5jbG91ZC9jbG91ZC5zcGVjLmpzb24pCi0gW09wZW5BUEkgc3BlYyBkb2N1bWVudCBwcm92aWRlZCBieSBIZXR6bmVyIGZvciB0aGUgSGV0em5lciBBUEldKGh0dHBzOi8vZG9jcy5oZXR6bmVyLmNsb3VkL2hldHpuZXIuc3BlYy5qc29uKQotIFtPcGVuQVBJIHN0YW5kYXJkXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pCgojIyBVc2UgQ2FzZXMKClRoaXMgQVBJIGRlc2NyaXB0aW9uIGlzIGN1cnJlbnRseSBiZWluZyB1c2VkIGJ5IHRoZSBmb2xsb3dpbmcgcHJvamVjdHM6CgotIFtoY2xvdWQtcnVzdF0oaHR0cHM6Ly9naXRodWIuY29tL0hlbm5pbmdIb2xtREUvaGNsb3VkLXJ1c3QpCiAgWyFbQ3JhdGVzLmlvXShodHRwczovL2ltZy5zaGllbGRzLmlvL2NyYXRlcy92L2hjbG91ZC5zdmcpXShodHRwczovL2NyYXRlcy5pby9jcmF0ZXMvaGNsb3VkKQogIFshW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5ycy9oY2xvdWQvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9kb2NzLnJzL2hjbG91ZC8pCgojIyBTdXBwb3J0ZWQgRW5kcG9pbnRzCgotIGFjdGlvbnMKLSBjZXJ0aWZpY2F0ZXMKLSBkYXRhY2VudGVycwotIGZpcmV3YWxscwotIGZsb2F0aW5nX2lwcwotIGltYWdlcwotIGlzb3MKLSBsb2FkX2JhbGFuY2VyX3R5cGVzCi0gbG9hZF9iYWxhbmNlcnMKLSBsb2NhdGlvbnMKLSBuZXR3b3JrcwotIHBsYWNlbWVudF9ncm91cHMKLSBwcmljaW5nCi0gcHJpbWFyeV9pcHMKLSBzZXJ2ZXJfdHlwZXMKLSBzZXJ2ZXJzCi0gc3NoX2tleXMKLSBzdG9yYWdlX2JveF90eXBlcwotIHN0b3JhZ2VfYm94ZXMKLSB2b2x1bWVzCi0gem9uZXMKCmBgYAojIE1haW4gaGNsb3VkIEFQSQoKL2FjdGlvbnMgKEdFVCkKL2FjdGlvbnMve2lkfSAoR0VUKQovY2VydGlmaWNhdGVzIChHRVQsIFBPU1QpCi9jZXJ0aWZpY2F0ZXMve2lkfSAoREVMRVRFLCBHRVQsIFBVVCkKL2NlcnRpZmljYXRlcy97aWR9L2FjdGlvbnMgKEdFVCkKL2NlcnRpZmljYXRlcy97aWR9L2FjdGlvbnMve2FjdGlvbl9pZH0gKEdFVCkKL2NlcnRpZmljYXRlcy97aWR9L2FjdGlvbnMvcmV0cnkgKFBPU1QpCi9jZXJ0aWZpY2F0ZXMvYWN0aW9ucyAoR0VUKQovY2VydGlmaWNhdGVzL2FjdGlvbnMve2lkfSAoR0VUKQovZGF0YWNlbnRlcnMgKEdFVCkKL2RhdGFjZW50ZXJzL3tpZH0gKEdFVCkKL2ZpcmV3YWxscyAoR0VULCBQT1NUKQovZmlyZXdhbGxzL3tpZH0gKERFTEVURSwgR0VULCBQVVQpCi9maXJld2FsbHMve2lkfS9hY3Rpb25zIChHRVQpCi9maXJld2FsbHMve2lkfS9hY3Rpb25zL3thY3Rpb25faWR9IChHRVQpCi9maXJld2FsbHMve2lkfS9hY3Rpb25zL2FwcGx5X3RvX3Jlc291cmNlcyAoUE9TVCkKL2ZpcmV3YWxscy97aWR9L2FjdGlvbnMvcmVtb3ZlX2Zyb21fcmVzb3VyY2VzIChQT1NUKQovZmlyZXdhbGxzL3tpZH0vYWN0aW9ucy9zZXRfcnVsZXMgKFBPU1QpCi9maXJld2FsbHMvYWN0aW9ucyAoR0VUKQovZmlyZXdhbGxzL2FjdGlvbnMve2lkfSAoR0VUKQovZmxvYXRpbmdfaXBzIChHRVQsIFBPU1QpCi9mbG9hdGluZ19pcHMve2lkfSAoREVMRVRFLCBHRVQsIFBVVCkKL2Zsb2F0aW5nX2lwcy97aWR9L2FjdGlvbnMgKEdFVCkKL2Zsb2F0aW5nX2lwcy97aWR9L2FjdGlvbnMve2FjdGlvbl9pZH0gKEdFVCkKL2Zsb2F0aW5nX2lwcy97aWR9L2FjdGlvbnMvYXNzaWduIChQT1NUKQovZmxvYXRpbmdfaXBzL3tpZH0vYWN0aW9ucy9jaGFuZ2VfZG5zX3B0ciAoUE9TVCkKL2Zsb2F0aW5nX2lwcy97aWR9L2FjdGlvbnMvY2hhbmdlX3Byb3RlY3Rpb24gKFBPU1QpCi9mbG9hdGluZ19pcHMve2lkfS9hY3Rpb25zL3VuYXNzaWduIChQT1NUKQovZmxvYXRpbmdfaXBzL2FjdGlvbnMgKEdFVCkKL2Zsb2F0aW5nX2lwcy9hY3Rpb25zL3tpZH0gKEdFVCkKL2ltYWdlcyAoR0VUKQovaW1hZ2VzL3tpZH0gKERFTEVURSwgR0VULCBQVVQpCi9pbWFnZXMve2lkfS9hY3Rpb25zIChHRVQpCi9pbWFnZXMve2lkfS9hY3Rpb25zL3thY3Rpb25faWR9IChHRVQpCi9pbWFnZXMve2lkfS9hY3Rpb25zL2NoYW5nZV9wcm90ZWN0aW9uIChQT1NUKQovaW1hZ2VzL2FjdGlvbnMgKEdFVCkKL2ltYWdlcy9hY3Rpb25zL3tpZH0gKEdFVCkKL2lzb3MgKEdFVCkKL2lzb3Mve2lkfSAoR0VUKQovbG9hZF9iYWxhbmNlcl90eXBlcyAoR0VUKQovbG9hZF9iYWxhbmNlcl90eXBlcy97aWR9IChHRVQpCi9sb2FkX2JhbGFuY2VycyAoR0VULCBQT1NUKQovbG9hZF9iYWxhbmNlcnMve2lkfSAoREVMRVRFLCBHRVQsIFBVVCkKL2xvYWRfYmFsYW5jZXJzL3tpZH0vYWN0aW9ucyAoR0VUKQovbG9hZF9iYWxhbmNlcnMve2lkfS9hY3Rpb25zL3thY3Rpb25faWR9IChHRVQpCi9sb2FkX2JhbGFuY2Vycy97aWR9L2FjdGlvbnMvYWRkX3NlcnZpY2UgKFBPU1QpCi9sb2FkX2JhbGFuY2Vycy97aWR9L2FjdGlvbnMvYWRkX3RhcmdldCAoUE9TVCkKL2xvYWRfYmFsYW5jZXJzL3tpZH0vYWN0aW9ucy9hdHRhY2hfdG9fbmV0d29yayAoUE9TVCkKL2xvYWRfYmFsYW5jZXJzL3tpZH0vYWN0aW9ucy9jaGFuZ2VfYWxnb3JpdGhtIChQT1NUKQovbG9hZF9iYWxhbmNlcnMve2lkfS9hY3Rpb25zL2NoYW5nZV9kbnNfcHRyIChQT1NUKQovbG9hZF9iYWxhbmNlcnMve2lkfS9hY3Rpb25zL2NoYW5nZV9wcm90ZWN0aW9uIChQT1NUKQovbG9hZF9iYWxhbmNlcnMve2lkfS9hY3Rpb25zL2NoYW5nZV90eXBlIChQT1NUKQovbG9hZF9iYWxhbmNlcnMve2lkfS9hY3Rpb25zL2RlbGV0ZV9zZXJ2aWNlIChQT1NUKQovbG9hZF9iYWxhbmNlcnMve2lkfS9hY3Rpb25zL2RldGFjaF9mcm9tX25ldHdvcmsgKFBPU1QpCi9sb2FkX2JhbGFuY2Vycy97aWR9L2FjdGlvbnMvZGlzYWJsZV9wdWJsaWNfaW50ZXJmYWNlIChQT1NUKQovbG9hZF9iYWxhbmNlcnMve2lkfS9hY3Rpb25zL2VuYWJsZV9wdWJsaWNfaW50ZXJmYWNlIChQT1NUKQovbG9hZF9iYWxhbmNlcnMve2lkfS9hY3Rpb25zL3JlbW92ZV90YXJnZXQgKFBPU1QpCi9sb2FkX2JhbGFuY2Vycy97aWR9L2FjdGlvbnMvdXBkYXRlX3NlcnZpY2UgKFBPU1QpCi9sb2FkX2JhbGFuY2Vycy97aWR9L21ldHJpY3MgKEdFVCkKL2xvYWRfYmFsYW5jZXJzL2FjdGlvbnMgKEdFVCkKL2xvYWRfYmFsYW5jZXJzL2FjdGlvbnMve2lkfSAoR0VUKQovbG9jYXRpb25zIChHRVQpCi9sb2NhdGlvbnMve2lkfSAoR0VUKQovbmV0d29ya3MgKEdFVCwgUE9TVCkKL25ldHdvcmtzL3tpZH0gKERFTEVURSwgR0VULCBQVVQpCi9uZXR3b3Jrcy97aWR9L2FjdGlvbnMgKEdFVCkKL25ldHdvcmtzL3tpZH0vYWN0aW9ucy97YWN0aW9uX2lkfSAoR0VUKQovbmV0d29ya3Mve2lkfS9hY3Rpb25zL2FkZF9yb3V0ZSAoUE9TVCkKL25ldHdvcmtzL3tpZH0vYWN0aW9ucy9hZGRfc3VibmV0IChQT1NUKQovbmV0d29ya3Mve2lkfS9hY3Rpb25zL2NoYW5nZV9pcF9yYW5nZSAoUE9TVCkKL25ldHdvcmtzL3tpZH0vYWN0aW9ucy9jaGFuZ2VfcHJvdGVjdGlvbiAoUE9TVCkKL25ldHdvcmtzL3tpZH0vYWN0aW9ucy9kZWxldGVfcm91dGUgKFBPU1QpCi9uZXR3b3Jrcy97aWR9L2FjdGlvbnMvZGVsZXRlX3N1Ym5ldCAoUE9TVCkKL25ldHdvcmtzL2FjdGlvbnMgKEdFVCkKL25ldHdvcmtzL2FjdGlvbnMve2lkfSAoR0VUKQovcGxhY2VtZW50X2dyb3VwcyAoR0VULCBQT1NUKQovcGxhY2VtZW50X2dyb3Vwcy97aWR9IChERUxFVEUsIEdFVCwgUFVUKQovcHJpY2luZyAoR0VUKQovcHJpbWFyeV9pcHMgKEdFVCwgUE9TVCkKL3ByaW1hcnlfaXBzL3tpZH0gKERFTEVURSwgR0VULCBQVVQpCi9wcmltYXJ5X2lwcy97aWR9L2FjdGlvbnMgKEdFVCkKL3ByaW1hcnlfaXBzL3tpZH0vYWN0aW9ucy97YWN0aW9uX2lkfSAoR0VUKQovcHJpbWFyeV9pcHMve2lkfS9hY3Rpb25zL2Fzc2lnbiAoUE9TVCkKL3ByaW1hcnlfaXBzL3tpZH0vYWN0aW9ucy9jaGFuZ2VfZG5zX3B0ciAoUE9TVCkKL3ByaW1hcnlfaXBzL3tpZH0vYWN0aW9ucy9jaGFuZ2VfcHJvdGVjdGlvbiAoUE9TVCkKL3ByaW1hcnlfaXBzL3tpZH0vYWN0aW9ucy91bmFzc2lnbiAoUE9TVCkKL3ByaW1hcnlfaXBzL2FjdGlvbnMgKEdFVCkKL3ByaW1hcnlfaXBzL2FjdGlvbnMve2lkfSAoR0VUKQovc2VydmVyX3R5cGVzIChHRVQpCi9zZXJ2ZXJfdHlwZXMve2lkfSAoR0VUKQovc2VydmVycyAoR0VULCBQT1NUKQovc2VydmVycy97aWR9IChERUxFVEUsIEdFVCwgUFVUKQovc2VydmVycy97aWR9L2FjdGlvbnMgKEdFVCkKL3NlcnZlcnMve2lkfS9hY3Rpb25zL3thY3Rpb25faWR9IChHRVQpCi9zZXJ2ZXJzL3tpZH0vYWN0aW9ucy9hZGRfdG9fcGxhY2VtZW50X2dyb3VwIChQT1NUKQovc2VydmVycy97aWR9L2FjdGlvbnMvYXR0YWNoX2lzbyAoUE9TVCkKL3NlcnZlcnMve2lkfS9hY3Rpb25zL2F0dGFjaF90b19uZXR3b3JrIChQT1NUKQovc2VydmVycy97aWR9L2FjdGlvbnMvY2hhbmdlX2FsaWFzX2lwcyAoUE9TVCkKL3NlcnZlcnMve2lkfS9hY3Rpb25zL2NoYW5nZV9kbnNfcHRyIChQT1NUKQovc2VydmVycy97aWR9L2FjdGlvbnMvY2hhbmdlX3Byb3RlY3Rpb24gKFBPU1QpCi9zZXJ2ZXJzL3tpZH0vYWN0aW9ucy9jaGFuZ2VfdHlwZSAoUE9TVCkKL3NlcnZlcnMve2lkfS9hY3Rpb25zL2NyZWF0ZV9pbWFnZSAoUE9TVCkKL3NlcnZlcnMve2lkfS9hY3Rpb25zL2RldGFjaF9mcm9tX25ldHdvcmsgKFBPU1QpCi9zZXJ2ZXJzL3tpZH0vYWN0aW9ucy9kZXRhY2hfaXNvIChQT1NUKQovc2VydmVycy97aWR9L2FjdGlvbnMvZGlzYWJsZV9iYWNrdXAgKFBPU1QpCi9zZXJ2ZXJzL3tpZH0vYWN0aW9ucy9kaXNhYmxlX3Jlc2N1ZSAoUE9TVCkKL3NlcnZlcnMve2lkfS9hY3Rpb25zL2VuYWJsZV9iYWNrdXAgKFBPU1QpCi9zZXJ2ZXJzL3tpZH0vYWN0aW9ucy9lbmFibGVfcmVzY3VlIChQT1NUKQovc2VydmVycy97aWR9L2FjdGlvbnMvcG93ZXJvZmYgKFBPU1QpCi9zZXJ2ZXJzL3tpZH0vYWN0aW9ucy9wb3dlcm9uIChQT1NUKQovc2VydmVycy97aWR9L2FjdGlvbnMvcmVib290IChQT1NUKQovc2VydmVycy97aWR9L2FjdGlvbnMvcmVidWlsZCAoUE9TVCkKL3NlcnZlcnMve2lkfS9hY3Rpb25zL3JlbW92ZV9mcm9tX3BsYWNlbWVudF9ncm91cCAoUE9TVCkKL3NlcnZlcnMve2lkfS9hY3Rpb25zL3JlcXVlc3RfY29uc29sZSAoUE9TVCkKL3NlcnZlcnMve2lkfS9hY3Rpb25zL3Jlc2V0IChQT1NUKQovc2VydmVycy97aWR9L2FjdGlvbnMvcmVzZXRfcGFzc3dvcmQgKFBPU1QpCi9zZXJ2ZXJzL3tpZH0vYWN0aW9ucy9zaHV0ZG93biAoUE9TVCkKL3NlcnZlcnMve2lkfS9tZXRyaWNzIChHRVQpCi9zZXJ2ZXJzL2FjdGlvbnMgKEdFVCkKL3NlcnZlcnMvYWN0aW9ucy97aWR9IChHRVQpCi9zc2hfa2V5cyAoR0VULCBQT1NUKQovc3NoX2tleXMve2lkfSAoREVMRVRFLCBHRVQsIFBVVCkKL3ZvbHVtZXMgKEdFVCwgUE9TVCkKL3ZvbHVtZXMve2lkfSAoREVMRVRFLCBHRVQsIFBVVCkKL3ZvbHVtZXMve2lkfS9hY3Rpb25zIChHRVQpCi92b2x1bWVzL3tpZH0vYWN0aW9ucy97YWN0aW9uX2lkfSAoR0VUKQovdm9sdW1lcy97aWR9L2FjdGlvbnMvYXR0YWNoIChQT1NUKQovdm9sdW1lcy97aWR9L2FjdGlvbnMvY2hhbmdlX3Byb3RlY3Rpb24gKFBPU1QpCi92b2x1bWVzL3tpZH0vYWN0aW9ucy9kZXRhY2ggKFBPU1QpCi92b2x1bWVzL3tpZH0vYWN0aW9ucy9yZXNpemUgKFBPU1QpCi92b2x1bWVzL2FjdGlvbnMgKEdFVCkKL3ZvbHVtZXMvYWN0aW9ucy97aWR9IChHRVQpCi96b25lcyAoR0VULCBQT1NUKQovem9uZXMvYWN0aW9ucyAoR0VUKQovem9uZXMvYWN0aW9ucy97aWR9IChHRVQpCi96b25lcy97aWRfb3JfbmFtZX0gKERFTEVURSwgR0VULCBQVVQpCi96b25lcy97aWRfb3JfbmFtZX0vYWN0aW9ucyAoR0VUKQovem9uZXMve2lkX29yX25hbWV9L2FjdGlvbnMvY2hhbmdlX3ByaW1hcnlfbmFtZXNlcnZlcnMgKFBPU1QpCi96b25lcy97aWRfb3JfbmFtZX0vYWN0aW9ucy9jaGFuZ2VfcHJvdGVjdGlvbiAoUE9TVCkKL3pvbmVzL3tpZF9vcl9uYW1lfS9hY3Rpb25zL2NoYW5nZV90dGwgKFBPU1QpCi96b25lcy97aWRfb3JfbmFtZX0vYWN0aW9ucy9pbXBvcnRfem9uZWZpbGUgKFBPU1QpCi96b25lcy97aWRfb3JfbmFtZX0vYWN0aW9ucy97YWN0aW9uX2lkfSAoR0VUKQovem9uZXMve2lkX29yX25hbWV9L3Jyc2V0cyAoR0VULCBQT1NUKQovem9uZXMve2lkX29yX25hbWV9L3Jyc2V0cy97cnJfbmFtZX0ve3JyX3R5cGV9IChERUxFVEUsIEdFVCwgUFVUKQovem9uZXMve2lkX29yX25hbWV9L3Jyc2V0cy97cnJfbmFtZX0ve3JyX3R5cGV9L2FjdGlvbnMvYWRkX3JlY29yZHMgKFBPU1QpCi96b25lcy97aWRfb3JfbmFtZX0vcnJzZXRzL3tycl9uYW1lfS97cnJfdHlwZX0vYWN0aW9ucy9jaGFuZ2VfcHJvdGVjdGlvbiAoUE9TVCkKL3pvbmVzL3tpZF9vcl9uYW1lfS9ycnNldHMve3JyX25hbWV9L3tycl90eXBlfS9hY3Rpb25zL2NoYW5nZV90dGwgKFBPU1QpCi96b25lcy97aWRfb3JfbmFtZX0vcnJzZXRzL3tycl9uYW1lfS97cnJfdHlwZX0vYWN0aW9ucy9yZW1vdmVfcmVjb3JkcyAoUE9TVCkKL3pvbmVzL3tpZF9vcl9uYW1lfS9ycnNldHMve3JyX25hbWV9L3tycl90eXBlfS9hY3Rpb25zL3NldF9yZWNvcmRzIChQT1NUKQovem9uZXMve2lkX29yX25hbWV9L3Jyc2V0cy97cnJfbmFtZX0ve3JyX3R5cGV9L2FjdGlvbnMvdXBkYXRlX3JlY29yZHMgKFBPU1QpCi96b25lcy97aWRfb3JfbmFtZX0vem9uZWZpbGUgKEdFVCkKCiMgU3RvcmFnZSBCb3hlcwoKL3N0b3JhZ2VfYm94X3R5cGVzIChHRVQpCi9zdG9yYWdlX2JveF90eXBlcy97aWR9IChHRVQpCi9zdG9yYWdlX2JveGVzIChHRVQsIFBPU1QpCi9zdG9yYWdlX2JveGVzL2FjdGlvbnMgKEdFVCkKL3N0b3JhZ2VfYm94ZXMvYWN0aW9ucy97aWR9IChHRVQpCi9zdG9yYWdlX2JveGVzL3tpZH0gKERFTEVURSwgR0VULCBQVVQpCi9zdG9yYWdlX2JveGVzL3tpZH0vYWN0aW9ucyAoR0VUKQovc3RvcmFnZV9ib3hlcy97aWR9L2FjdGlvbnMvY2hhbmdlX3Byb3RlY3Rpb24gKFBPU1QpCi9zdG9yYWdlX2JveGVzL3tpZH0vYWN0aW9ucy9jaGFuZ2VfdHlwZSAoUE9TVCkKL3N0b3JhZ2VfYm94ZXMve2lkfS9hY3Rpb25zL2Rpc2FibGVfc25hcHNob3RfcGxhbiAoUE9TVCkKL3N0b3JhZ2VfYm94ZXMve2lkfS9hY3Rpb25zL2VuYWJsZV9zbmFwc2hvdF9wbGFuIChQT1NUKQovc3RvcmFnZV9ib3hlcy97aWR9L2FjdGlvbnMvcmVzZXRfcGFzc3dvcmQgKFBPU1QpCi9zdG9yYWdlX2JveGVzL3tpZH0vYWN0aW9ucy9yb2xsYmFja19zbmFwc2hvdCAoUE9TVCkKL3N0b3JhZ2VfYm94ZXMve2lkfS9hY3Rpb25zL3VwZGF0ZV9hY2Nlc3Nfc2V0dGluZ3MgKFBPU1QpCi9zdG9yYWdlX2JveGVzL3tpZH0vYWN0aW9ucy97YWN0aW9uX2lkfSAoR0VUKQovc3RvcmFnZV9ib3hlcy97aWR9L2ZvbGRlcnMgKEdFVCkKL3N0b3JhZ2VfYm94ZXMve2lkfS9zbmFwc2hvdHMgKEdFVCwgUE9TVCkKL3N0b3JhZ2VfYm94ZXMve2lkfS9zbmFwc2hvdHMve3NuYXBzaG90X2lkfSAoREVMRVRFLCBHRVQsIFBVVCkKL3N0b3JhZ2VfYm94ZXMve2lkfS9zdWJhY2NvdW50cyAoR0VULCBQT1NUKQovc3RvcmFnZV9ib3hlcy97aWR9L3N1YmFjY291bnRzL3tzdWJhY2NvdW50X2lkfSAoREVMRVRFLCBHRVQsIFBVVCkKL3N0b3JhZ2VfYm94ZXMve2lkfS9zdWJhY2NvdW50cy97c3ViYWNjb3VudF9pZH0vYWN0aW9ucy9jaGFuZ2VfaG9tZV9kaXJlY3RvcnkgKFBPU1QpCi9zdG9yYWdlX2JveGVzL3tpZH0vc3ViYWNjb3VudHMve3N1YmFjY291bnRfaWR9L2FjdGlvbnMvcmVzZXRfc3ViYWNjb3VudF9wYXNzd29yZCAoUE9TVCkKL3N0b3JhZ2VfYm94ZXMve2lkfS9zdWJhY2NvdW50cy97c3ViYWNjb3VudF9pZH0vYWN0aW9ucy91cGRhdGVfYWNjZXNzX3NldHRpbmdzIChQT1NUKQpgYGAKCiMjIFF1aWNrIFN0YXJ0CgpgYGAKbnBtIHJ1biBjb252ZXJ0IC0tIC0tb3V0cHV0IG9wZW5hcGkvaGNsb3VkLmpzb24KYGBgCgojIyBVc2FnZSB3aXRoIE9wZW5BUEkgR2VuZXJhdG9yCgpbT3BlbkFQSSBHZW5lcmF0b3Igb24gR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKQoKIyMjIFZhbGlkYXRlCgpgYGAKamF2YSAtamFyIDxwYXRoPi9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIHZhbGlkYXRlIC0taW5wdXQtc3BlYyBvcGVuYXBpL2hjbG91ZC5qc29uCmBgYAoKIyMjIEdlbmVyYXRlCgpgYGAKamF2YSAtamFyIDxwYXRoPi9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGdlbmVyYXRlIC0taW5wdXQtc3BlYyBvcGVuYXBpL2hjbG91ZC5qc29uIC0tZ2VuZXJhdG9yLW5hbWUgPG5hbWU+IC0tb3V0cHV0IDxwYXRoPgpgYGAK readmeEtag: '"b962530eb9ecab391ceb782e33931d3550798a09"' readmeLastModified: Tue, 16 Dec 2025 22:08:10 GMT repositoryId: 266785930 description: >- This is the unofficial OpenAPI description of the Hetzner Cloud API. It allows automatic code generation for the hcloud API. created: '2020-05-25T13:26:36Z' updated: '2026-02-05T13:17:15Z' language: TypeScript archived: false stars: 35 watchers: 3 forks: 5 owner: MaximilianKoestler logo: https://avatars.githubusercontent.com/u/6814304?v=4 license: MIT repoEtag: '"93710ea79283e7cde25177cdfeef0a438b42d581c9508a3e14b023a783c426d9"' repoLastModified: Thu, 05 Feb 2026 13:17:15 GMT foundInMaster: true category: Testing id: faad796cc6069f33f77380c65a4256f3 - source: openapi3 tags repository: https://github.com/kota65535/openapi-merger v3: true id: 6e88483ef2d9b10f9f1f1268e7d4834b repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLW1lcmdlcgoKWWV0IGFub3RoZXIgQ0xJIHRvb2wgZm9yIG1lcmdpbmcgbXVsdGlwbGUgT3BlbkFQSSBmaWxlcyBpbnRvIGEgc2luZ2xlIGZpbGUuCgohW2J1aWxkIHdvcmtmbG93XShodHRwczovL2dpdGh1Yi5jb20va290YTY1NTM1L29wZW5hcGktbWVyZ2VyL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbC9iYWRnZS5zdmcpClshW05QTV0oaHR0cHM6Ly9ub2RlaS5jby9ucG0vb3BlbmFwaS1tZXJnZXIucG5nKV0oaHR0cHM6Ly9ub2RlaS5jby9ucG0vb3BlbmFwaS1tZXJnZXIvKQoKIyMgRmVhdHVyZXMKLSBTaW1pbGFyIHRvIFtzd2FnZ2VyLW1lcmdlcl0oaHR0cHM6Ly9naXRodWIuY29tL1dpbmRvbVovc3dhZ2dlci1tZXJnZXIpCi0gQ29udmVydCBhbGwgcmVtb3RlICYgVVJMIHJlZnMgaW50byBsb2NhbCByZWZzCiAgLSBUaGlzIGlzIHVzZWZ1bCBvbiBjb2RlIGdlbmVyYXRpb24sIGJlY2F1c2UgaXQgaGVscHMgW29wZW5hcGktZ2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKQogICAgdG8gb3V0cHV0IHVuaXF1ZSBtb2RlbCBjbGFzc2VzIHdpdGhvdXQgZHVwbGljYXRpb24uCi0gYCRpbmNsdWRlYCBrZXl3b3JkOiBzYW1lIGFzIGAkcmVmYCwgZXhjZXB0IGl0IG1lcmdlcyB0aGUgb2JqZWN0IHdpdGggc2libGluZyBlbGVtZW50cy4gKGAkcmVmYCBpZ25vcmVzIHRoZW0pCgojIyBVc2FnZQoKYGBgc2gKJCBucG0gaW5zdGFsbCAtZyBvcGVuYXBpLW1lcmdlcgokIG9wZW5hcGktbWVyZ2VyIC1pIG9wZW5hcGkueWFtbCAtbyBtZXJnZWQueWFtbApgYGAKCiMjICRpbmNsdWRlIGtleXdvcmQKCm9wZW5hcGktbWVyZ2VyIGludHJvZHVjZXMgdGhlIHNwZWNpYWwga2V5d29yZCBgJGluY2x1ZGVgLgpJdCBoYXMgc2ltaWxhciBzeW50YXggYXMgYCRyZWZgLCB3aGljaCB0YWtlcyBKU09OIHJlZmVyZW5jZSBhcyBpdHMgdmFsdWUuCgpgYGB5YW1sCiRpbmNsdWRlOiAncmVmZXJlbmNlIHRvIGNvbnRlbnQnCmBgYAoKVGhlIGJpZ2dlc3QgZGlmZmVyZW5jZSBpcyB0aGF0IGAkaW5jbHVkZWAgcmVwbGFjZXMgaXRzZWxmIGRpcmVjdGx5IGJ5IHRoZSByZWZlcmVuY2VkIGNvbnRlbnQsIGFsbG93aW5nIHRvIG1lcmdlIGl0cyBzaWJsaW5nIGVsZW1lbnRzLgoKCiMjIyBNZXJnZSBvYmplY3RzICYgYXJyYXlzCgpJZiBgJGluY2x1ZGVgIGlzIHVzZWQgaW4gYW4gb2JqZWN0IGFuZCB0aGVuIHJlZmVyZW5jZWQgY29udGVudCBpcyBhbiBvYmplY3QgdG9vLCB0aGV5IGFyZSBtZXJnZWQuCgotIG1haW4ueW1sCmBgYHlhbWwKb2JqZWN0OgogICRpbmNsdWRlOiBvYmplY3QueW1sCiAga2V5MzogdmFsMwpgYGAKCi0gb2JqZWN0LnltbApgYGB5YW1sCmtleTE6IHZhbDEKa2V5MjogdmFsMgpgYGAKCi0gcmVzdWx0cyBpbjoKYGBgeWFtbApvYmplY3Q6CiAga2V5MTogdmFsMQogIGtleTI6IHZhbDIKICBrZXkzOiB2YWwzCmBgYCAKCkFycmF5cyBnbyBpbiB0aGUgc2FtZSBtYW5uZXIuCgotIG1haW4ueW1sCmBgYHlhbWwKYXJyYXk6CiAgLSAkaW5jbHVkZTogYXJyYXkueW1sCiAgLSB2YWwzCmBgYAoKLSBhcnJheS55bWwKYGBgeWFtbAotIHZhbDEKLSB2YWwyCmBgYAoKLSByZXN1bHRzIGluOgpgYGB5YW1sCmFycmF5OgogIC0gdmFsMQogIC0gdmFsMgogIC0gdmFsMwpgYGAgCgpJZiB5b3Ugd2FudCBub3QgdG8gbWVyZ2UgYXJyYXlzLCB1c2UgYCRpbmNsdWRlYCBpbiBhIG5lc3RlZCBhcnJheS4KCi0gbWFpbi55bWwKYGBgeWFtbAphcnJheToKICAtIC0gJGluY2x1ZGU6IGFycmF5LnltbAogIC0gdmFsMwpgYGAKCi0gYXJyYXkueW1sCmBgYHlhbWwKLSB2YWwxCi0gdmFsMgpgYGAKCi0gcmVzdWx0cyBpbjoKYGBgeWFtbAphcnJheToKICAtIC0gdmFsMQogICAgLSB2YWwyCiAgLSB2YWwzCmBgYCAKCiMjIyBNdWx0aXBsZSAkaW5jbHVkZSBhdCBzYW1lIHBsYWNlCgpgJGluY2x1ZGVgIGNhbiBiZSB1c2VkIG11bHRpcGxlIHRpbWVzIGluIHRoZSBzYW1lIHBsYWNlIGJ5IGFwcGVuZGluZyBgI2Agd2l0aCBzb21lIElELCBhdm9pZGluZyBrZXkgZHVwbGljYXRpb24uCgpgYGB5YW1sCiRpbmNsdWRlI2ZvbzogLi9mb28ueW1sCiRpbmNsdWRlI2JhcjogLi9iYXIueW1sCmBgYAoKCiMjIyBLZXkgbW9kaWZpY2F0aW9uICYgRmlsdGVyaW5nCgpgJGluY2x1ZGVgIGlzIGNhcGFibGUgb2YgbW9kaWZpY2F0aW9uIGFuZCBmaWx0ZXJpbmcgb2YgdGhlIGtleXMgb2YgdGhlIHJlZmVyZW5jZWQgY29udGVudC4KVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBhZ2dyZWdhdGUgbXVsdGlwbGUgT3BlbkFQSSBkb2N1bWVudHMgb2YgYmFja2VuZCBzZXJ2aWNlcyBpbnRvIG9uZSBmb3IgQVBJIEdhdGV3YXkuCgpUbyB1dGlsaXplIHRoaXMgZnVuY3Rpb24sIGEgY29uZmlndXJhdGlvbiBmaWxlIHNob3VsZCBiZSBnaXZlbiBieSBgLWNgIG9wdGlvbi4KVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBsaWtlIGZvbGxvd2luZzoKCmBgYHlhbWwKaW5jbHVkZToKICAjICdmb28nIGNsYXNzLCB3aGljaCBhZGQgJy92MScgcHJlZml4IHRvIGVhY2gga2V5CiAgZm9vOgogICAgcHJlZml4OiAvdjEKICAjICdiYXInIGNsYXNzLCB3aGljaCBzZWxlY3RzIG9ubHkga2V5cyBtYXRjaGluZyB0byByZWdleCAKICAjIGhlcmUgZXhjbHVkaW5nIHBhdGhzIHRoYXQgYmVnaW5zICdpbnRlcm5hbCcKICBiYXI6IAogICAgZmlsdGVyOiBeKD8hL2ludGVybmFsKS4qCmBgYAoKVXNlIGRlZmluZWQgY2xhc3MgYXMgZm9sbG93aW5nOgotIG1haW4ueW1sCmBgYHlhbWwKIyB1c2luZyBmb28gY2xhc3MKJGluY2x1ZGUuZm9vOiBwYXRocy55bWwgCiMgdXNpbmcgYmFyIGNsYXNzCiRpbmNsdWRlLmJhcjogcGF0aHMueW1sCmBgYAoKLSBwYXRocy55bWwKYGBgeWFtbAovdXNlcnM6CiAgcG9zdDoKICAgIC4uLgoKL3VzZXJzL3tpZH06CiAgZ2V0OgogICAgLi4uCgovaW50ZXJuYWwvcGV0czoKICBwb3N0OgogICAgLi4uCmBgYAoKLSByZXN1bHRzIGluOgpgYGB5YW1sCiMgZnJvbSAkaW5jbHVkZS5mb28KL3YxL3VzZXJzOgogIHBvc3Q6CiAgICAuLi4KCi92MS91c2Vycy97aWR9OgogIGdldDoKICAgIC4uLgoKL3YxL2ludGVybmFsL3BldHM6CiAgcG9zdDoKICAgIC4uLgoKIyBmcm9tICRpbmNsdWRlLmJhcgovdXNlcnM6CiAgcG9zdDoKICAgIC4uLgoKL3VzZXJzL3tpZH06CiAgZ2V0OgogICAgLi4uCmBgYAoKWW91IGNhbiBzdGlsbCB1c2UgYCNgIG5vdGF0aW9uIHRvIGF2b2lkIGtleSBjb25mbGljdHMgbGlrZSBiZWxvdy4gCgpgYGB5YW1sCiRpbmNsdWRlI2EuZm9vOiBwYXRoczEueW1sCiRpbmNsdWRlI2IuZm9vOiBwYXRoczIueW1sCmBgYAo= readmeEtag: '"2f6bd1fba948ab091412152a8319c37185f35c2b"' readmeLastModified: Fri, 15 Mar 2024 09:27:33 GMT repositoryId: 275802208 description: Merges multiple OpenAPI document files into a single file. created: '2020-06-29T12:02:45Z' updated: '2025-09-22T13:43:19Z' language: JavaScript archived: false stars: 34 watchers: 1 forks: 9 owner: kota65535 logo: https://avatars.githubusercontent.com/u/10975834?v=4 license: MIT repoEtag: '"c02a50b5e96f20477c35b790ba25002532891702ceb3bdce532f3695bfdfecf2"' repoLastModified: Mon, 22 Sep 2025 13:43:19 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/openapitools/sbt-openapi-generator v3: true repositoryMetadata: base64Readme: >- IyBzYnQtb3BlbmFwaS1nZW5lcmF0b3IKCkEgU2J0IHBsdWdpbiB0byBzdXBwb3J0IHRoZSBPcGVuQVBJIGdlbmVyYXRvciBwcm9qZWN0LgoKIyBVc2FnZQoKQWRkIHRvIHlvdXIgYHByb2plY3QvcGx1Z2lucy5zYnRgOgoKYGBgc2J0CmFkZFNidFBsdWdpbigib3JnLm9wZW5hcGl0b29scyIgJSAic2J0LW9wZW5hcGktZ2VuZXJhdG9yIiAlICI3LjE5LjAiKQpgYGAKCiMgQ29uZmlndXJhdGlvbgoKQ29uZmlndXJhdGlvbiBiYXNlZCBvbiBwcm9qZWN0IG1vZHVsZSBpcyByZWNvbW1lbmRlZCB3YXkgdG8gc2VwYXJhdGUgc3BlY2lmaWNhdGlvbnMgYnkgbW9kdWxlcy4KCllvdSBtdXN0IGRlZmluZSBvbmUgb2YgdGhlIHNldHRpbmdzIGBvcGVuQXBpSW5wdXRTcGVjYCBvciBgb3BlbkFwaUNvbmZpZ0ZpbGVgIHRvIGFibGUgcnVuIHBsdWdpbiB0byBnZW5lcmF0ZS4KClNldHRpbmdzIHdpbGwgYmUgcGlja2VkIHVwIGZyb20gYG9wZW5BcGlDb25maWdGaWxlYCBmaXJzdCBpZiBkZWZpbmVkIGFuZCB0aGVuIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCBtb2R1bGUgc3BlY2lmaWVkCnNldHRpbmdzIGlmIHByb3ZpZGVkCgpXaXRoIHRoZSBuZXh0IGV4YW1wbGUgbW9kdWxlIGBnZW5lcmF0ZWRgIHdpbGwgYmUgZGVmaW5lZCBhczoKCmBgYHNidApsYXp5IHZhbCBnZW5lcmF0ZWQgPSBwcm9qZWN0LmluKGZpbGUoImdlbmVyYXRlZCIpKQogIC5zZXR0aW5ncygKICAgIG9wZW5BcGlJbnB1dFNwZWMgOj0gIm9wZW5hcGkueWFtbCIsCiAgICBvcGVuQXBpQ29uZmlnRmlsZSA6PSAiY29uZmlnLnlhbWwiCiAgKQpgYGAKClRoZXJlIGlzIGEgaGVscGVycyB0byBoYXZlIGJvb2xlYW4gc2V0dGluZ3MgbW9yZSByZWFkYWJsZS4gSW5zdGVhZCBvZiBgU29tZSh0cnVlKWAgaXQgcG9zc2libGUgdG8gZG8gbmV4dDoKYGBgc2J0CiAgICBvcGVuQXBpVmFsaWRhdGVTcGVjIDo9IFNldHRpbmdEaXNhYmxlZCwKICAgIG9wZW5BcGlHZW5lcmF0ZU1vZGVsVGVzdHMgOj0gU2V0dGluZ0VuYWJsZWQsCmBgYAojIEV4ZWN1dGlvbgoKVG8gcHJpbnQgYWxsIGF2YWlsYWJsZSBsYW5ndWFnZXMgdXNlCmBgYHNoZWxsIHNjcmlwdApzYnQgb3BlbkFwaUdlbmVyYXRvcnMKYGBgCgpUbyBydW4gdGVtcGxhdGUgZ2VuZXJhdGlvbiBwcm9jZXNzCmBgYHNoZWxsIHNjcmlwdApzYnQgb3BlbkFwaUdlbmVyYXRlCmBgYApvciBwZXIgZGVmaW5lZCBtb2R1bGUKYGBgc2hlbGwgc2NyaXB0CnNidCBnZW5lcmF0ZWQvb3BlbkFwaUdlbmVyYXRlCmBgYAoKIyBTZXR0aW5ncwoKCnwgU2V0dGluZyAgfCBUeXBlICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBvcGVuQXBpR2VuZXJhdG9yTmFtZSAqfCBgU3RyaW5nYCB8IFRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0b3Igd2hpY2ggd2lsbCBoYW5kbGUgY29kZWdlbi4gKHNlZSBcIm9wZW5BcGlHZW5lcmF0b3JzXCIgdGFzayk8YnI+IFJlcXVpcmVkLiBDYW4gYmUgcHJvdmlkZWQgYXMgYGdlbmVyYXRvck5hbWVgIG9wdGlvbiBvZiBgb3BlbkFwaUNvbmZpZ0ZpbGVgIGpzb24gY29uZmlnIHwKfCBvcGVuQXBpSW5wdXRTcGVjICp8IGBTdHJpbmdgIHwgVGhlIE9wZW4gQVBJIDIuMC8zLnggc3BlY2lmaWNhdGlvbiBsb2NhdGlvbiAoZmlsZSBvciB1cmwpPGJyPiBSZXF1aXJlZC4gQ2FuIGJlIHByb3ZpZGVkIGFzIGBpbnB1dFNwZWNgIG9wdGlvbiBvZiBgb3BlbkFwaUNvbmZpZ0ZpbGVgIGpzb24gY29uZmlnIHwKfCBvcGVuQXBpT3V0cHV0RGlyfCBgU3RyaW5nYCB8IFRoZSBvdXRwdXQgdGFyZ2V0IGRpcmVjdG9yeSBpbnRvIHdoaWNoIGNvZGUgd2lsbCBiZSBnZW5lcmF0ZWQgfAp8IG9wZW5BcGlDb25maWdGaWxlICoqfCBgU3RyaW5nYCB8IFBhdGggdG8ganNvbiBjb25maWd1cmF0aW9uIGZpbGU8YnI+IFRoaXMgc2V0dGluZyBpcyByZXF1aXJlZCB3aXRoIGBnZW5lcmF0b3JOYW1lYCBhbmQgYGlucHV0U3BlY2Agc2V0dGluZ3MgcHJvdmlkZWQgaWYgc2J0IHNldHRpbmdzIGBvcGVuQXBpR2VuZXJhdG9yTmFtZWAgYW5kIGBvcGVuQXBpSW5wdXRTcGVjYCBhcmUgYWJzZW50IHwKfCBvcGVuQXBpQWRkaXRpb25hbFByb3BlcnRpZXMgfCBgTWFwW1N0cmluZywgU3RyaW5nXWAgfCBTZXRzIGFkZGl0aW9uYWwgcHJvcGVydGllcyB0aGF0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IHRoZSBtdXN0YWNoZSB0ZW1wbGF0ZXMgaW4gdGhlIGZvcm1hdCBvZiBuYW1lPXZhbHVlLG5hbWU9dmFsdWUuIFlvdSBjYW4gYWxzbyBoYXZlIG11bHRpcGxlIG9jY3VycmVuY2VzIG9mIHRoaXMgb3B0aW9uIHwKfCBvcGVuQXBpR2xvYmFsUHJvcGVydGllcyB8IGBNYXBbU3RyaW5nLCBTdHJpbmddYCB8U2V0cyBzcGVjaWZpZWQgc3lzdGVtIHByb3BlcnRpZXMgfAp8IG9wZW5BcGlWZXJib3NlIHwgYE9wdGlvbltCb29sZWFuXWAgfCBUaGUgdmVyYm9zaXR5IG9mIGdlbmVyYXRpb24gfAp8IG9wZW5BcGlWYWxpZGF0ZVNwZWMgfCBgT3B0aW9uW0Jvb2xlYW5dYCB8IFdoZXRoZXIgb3Igbm90IGFuIGlucHV0IHNwZWNpZmljYXRpb24gc2hvdWxkIGJlIHZhbGlkYXRlZCB1cG9uIGdlbmVyYXRpb24gfAp8IG9wZW5BcGlUZW1wbGF0ZURpciB8IGBTdHJpbmdgIHwgVGhlIHRlbXBsYXRlIGRpcmVjdG9yeSBob2xkaW5nIGEgY3VzdG9tIHRlbXBsYXRlIHwKfCBvcGVuQXBpQXV0aCB8IGBTdHJpbmdgIHwgQWRkcyBhdXRob3JpemF0aW9uIGhlYWRlcnMgd2hlbiBmZXRjaGluZyB0aGUgT3BlbkFQSSBkZWZpbml0aW9ucyByZW1vdGVseS4gUGFzcyBpbiBhIFVSTC1lbmNvZGVkIHN0cmluZyBvZiBuYW1lOmhlYWRlciB3aXRoIGEgY29tbWEgc2VwYXJhdGluZyBtdWx0aXBsZSB2YWx1ZXMgfAp8IG9wZW5BcGlTa2lwT3ZlcndyaXRlIHwgYE9wdGlvbltCb29sZWFuXWAgfCBTcGVjaWZpZXMgaWYgdGhlIGV4aXN0aW5nIGZpbGVzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgdGhlIGdlbmVyYXRpb24gfAp8IG9wZW5BcGlQYWNrYWdlTmFtZSB8IGBTdHJpbmdgIHwgUGFja2FnZSBmb3IgZ2VuZXJhdGVkIGNsYXNzZXMgKHdoZXJlIHN1cHBvcnRlZCkgfAp8IG9wZW5BcGlBcGlQYWNrYWdlIHwgYFN0cmluZ2AgfCBQYWNrYWdlIGZvciBnZW5lcmF0ZWQgYXBpIGNsYXNzZXMgfAp8IG9wZW5BcGlNb2RlbFBhY2thZ2UgfCBgU3RyaW5nYCB8IFBhY2thZ2UgZm9yIGdlbmVyYXRlZCBtb2RlbHMgfAp8IG9wZW5BcGlNb2RlbE5hbWVQcmVmaXggfCBgU3RyaW5nYCB8IFByZWZpeCB0aGF0IHdpbGwgYmUgcHJlcGVuZGVkIHRvIGFsbCBtb2RlbCBuYW1lcyB8Cnwgb3BlbkFwaU1vZGVsTmFtZVN1ZmZpeCB8IGBTdHJpbmdgIHwgU3VmZml4IHRoYXQgd2lsbCBiZSBhcHBlbmRlZCB0byBhbGwgbW9kZWwgbmFtZXMgfAp8IG9wZW5BcGlJbnN0YW50aWF0aW9uVHlwZXMgfCBgTWFwW1N0cmluZywgU3RyaW5nXWAgfCBTZXRzIGluc3RhbnRpYXRpb24gdHlwZSBtYXBwaW5ncyB8Cnwgb3BlbkFwaVR5cGVNYXBwaW5ncyB8IGBNYXBbU3RyaW5nLCBTdHJpbmddYCB8IFNldHMgbWFwcGluZ3MgYmV0d2VlbiBPcGVuQVBJIHNwZWMgdHlwZXMgYW5kIGdlbmVyYXRlZCBjb2RlIHR5cGVzIHwKfCBvcGVuQXBpU2VydmVyVmFyaWFibGVzIHwgYE1hcFtTdHJpbmcsIFN0cmluZ11gIHwgU2V0cyBzZXJ2ZXIgdmFyaWFibGUgZm9yIHNlcnZlciBVUkwgdGVtcGxhdGUgc3Vic3RpdHV0aW9uLCBpbiB0aGUgZm9ybWF0IG9mIG5hbWU9dmFsdWUsbmFtZT12YWx1ZS4gWW91IGNhbiBhbHNvIGhhdmUgbXVsdGlwbGUgb2NjdXJyZW5jZXMgb2YgdGhpcyBvcHRpb24gfAp8IG9wZW5BcGlMYW5ndWFnZVNwZWNpZmljUHJpbWl0aXZlcyB8IGBMaXN0W1N0cmluZ11gIHwgU3BlY2lmaWVzIGFkZGl0aW9uYWwgbGFuZ3VhZ2Ugc3BlY2lmaWMgcHJpbWl0aXZlIHR5cGVzIGluIHRoZSBmb3JtYXQgb2YgdHlwZTEsdHlwZTIsdHlwZTMsdHlwZTMuIEZvciBleGFtcGxlOiBTdHJpbmcsYm9vbGVhbixCb29sZWFuLERvdWJsZSB8Cnwgb3BlbkFwaUltcG9ydE1hcHBpbmdzIHwgYE1hcFtTdHJpbmcsIFN0cmluZ11gIHwgU3BlY2lmaWVzIG1hcHBpbmdzIGJldHdlZW4gYSBnaXZlbiBjbGFzcyBhbmQgdGhlIGltcG9ydCB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciB0aGF0IGNsYXNzIHwKfCBvcGVuQXBpSW52b2tlclBhY2thZ2UgfCBgU3RyaW5nYCB8IFJvb3QgcGFja2FnZSBmb3IgZ2VuZXJhdGVkIGNvZGUgfAp8IG9wZW5BcGlHcm91cElkIHwgYFN0cmluZ2AgfCBncm91cElkIGluIGdlbmVyYXRlZCBwb20ueG1sL2J1aWxkLnNidCB8Cnwgb3BlbkFwaUlkIHwgYFN0cmluZ2AgfCBhcnRpZmFjdElkIGluIGdlbmVyYXRlZCBwb20ueG1sL2J1aWxkLnNidC4gVGhpcyBhbHNvIGJlY29tZXMgcGFydCBvZiB0aGUgZ2VuZXJhdGVkIGxpYnJhcnkncyBmaWxlbmFtZSB8Cnwgb3BlbkFwaUxpYnJhcnkgfCBgU3RyaW5nYCB8IGxpYnJhcnkgdGVtcGxhdGUgKHN1Yi10ZW1wbGF0ZSkgfAp8IG9wZW5BcGlHaXRIb3N0IHwgYFN0cmluZ2AgfEdpdCBob3N0LCBlLmcuIGdpdGxhYi5jb20gfAp8IG9wZW5BcGlHaXRVc2VySWQgfCBgU3RyaW5nYCB8IEdpdCB1c2VyIElELCBlLmcuIG9wZW5hcGl0b29scyB8Cnwgb3BlbkFwaUdpdFJlcG9JZCB8IGBTdHJpbmdgIHwgR2l0IHJlcG8gSUQsIGUuZy4gb3BlbmFwaS1nZW5lcmF0b3IgfAp8IG9wZW5BcGlSZWxlYXNlTm90ZSB8IGBTdHJpbmdgIHwgUmVsZWFzZSBub3RlLCBkZWZhdWx0IHRvICdNaW5vciB1cGRhdGUnIHwKfCBvcGVuQXBpSHR0cFVzZXJBZ2VudCB8IGBTdHJpbmdgIHwgSFRUUCB1c2VyIGFnZW50LCBlLmcuIGNvZGVnZW5fY3NoYXJwX2FwaV9jbGllbnQsIGRlZmF1bHQgdG8gJ09wZW5BUEktR2VuZXJhdG9yL3twYWNrYWdlVmVyc2lvbn19L3tsYW5ndWFnZX0nIHwKfCBvcGVuQXBpUmVzZXJ2ZWRXb3Jkc01hcHBpbmdzIHwgYE1hcFtTdHJpbmcsIFN0cmluZ11gIHwgXSgiU3BlY2lmaWVzIGhvdyBhIHJlc2VydmVkIG5hbWUgc2hvdWxkIGJlIGVzY2FwZWQgdG8gfAp8IG9wZW5BcGlJZ25vcmVGaWxlT3ZlcnJpZGUgfCBgU3RyaW5nYCB8IFNwZWNpZmllcyBhbiBvdmVycmlkZSBsb2NhdGlvbiBmb3IgdGhlIC5vcGVuYXBpLWdlbmVyYXRvci1pZ25vcmUgZmlsZS4gTW9zdCB1c2VmdWwgb24gaW5pdGlhbCBnZW5lcmF0aW9uLiB8Cnwgb3BlbkFwaVJlbW92ZU9wZXJhdGlvbklkUHJlZml4IHwgYE9wdGlvbltCb29sZWFuXWAgfCBSZW1vdmUgcHJlZml4IG9mIG9wZXJhdGlvbklkLCBlLmcuIGNvbmZpZ19nZXRJZCA9PiBnZXRJZCB8Cnwgb3BlbkFwaUFwaUZpbGVzQ29uc3RyYWluZWRUbyB8IGBMaXN0W1N0cmluZ11gIHwgRGVmaW5lcyB3aGljaCBBUEktcmVsYXRlZCBmaWxlcyBzaG91bGQgYmUgZ2VuZXJhdGVkLiBUaGlzIGFsbG93cyB5b3UgdG8gY3JlYXRlIGEgc3Vic2V0IG9mIGdlbmVyYXRlZCBmaWxlcyAob3Igbm9uZSBhdCBhbGwpIHwKfCBvcGVuQXBpTW9kZWxGaWxlc0NvbnN0cmFpbmVkVG8gfCBgTGlzdFtTdHJpbmddYCB8IERlZmluZXMgd2hpY2ggbW9kZWwtcmVsYXRlZCBmaWxlcyBzaG91bGQgYmUgZ2VuZXJhdGVkLiBUaGlzIGFsbG93cyB5b3UgdG8gY3JlYXRlIGEgc3Vic2V0IG9mIGdlbmVyYXRlZCBmaWxlcyAob3Igbm9uZSBhdCBhbGwpIHwKfCBvcGVuQXBpU3VwcG9ydGluZ0ZpbGVzQ29uc3RyYWluZWRUbyB8IGBMaXN0W1N0cmluZ11gIHwgRGVmaW5lcyB3aGljaCBzdXBwb3J0aW5nIGZpbGVzIHNob3VsZCBiZSBnZW5lcmF0ZWQuIFRoaXMgYWxsb3dzIHlvdSB0byBjcmVhdGUgYSBzdWJzZXQgb2YgZ2VuZXJhdGVkIGZpbGVzIChvciBub25lIGF0IGFsbCB8Cnwgb3BlbkFwaUdlbmVyYXRlTW9kZWxUZXN0cyB8IGBPcHRpb25bQm9vbGVhbl1gIHwgU3BlY2lmaWVzIHRoYXQgbW9kZWwgdGVzdHMgYXJlIHRvIGJlIGdlbmVyYXRlZCB8Cnwgb3BlbkFwaUdlbmVyYXRlTW9kZWxEb2N1bWVudGF0aW9uIHwgYE9wdGlvbltCb29sZWFuXWAgfCBEZWZpbmVzIHdoZXRoZXIgb3Igbm90IG1vZGVsLXJlbGF0ZWQgX2RvY3VtZW50YXRpb25fIGZpbGVzIHNob3VsZCBiZSBnZW5lcmF0ZWQgfAp8IG9wZW5BcGlHZW5lcmF0ZUFwaVRlc3RzIHwgYE9wdGlvbltCb29sZWFuXWAgfCBTcGVjaWZpZXMgdGhhdCBhcGkgdGVzdHMgYXJlIHRvIGJlIGdlbmVyYXRlZCB8Cnwgb3BlbkFwaUdlbmVyYXRlQXBpRG9jdW1lbnRhdGlvbiB8IGBPcHRpb25bQm9vbGVhbl1gIHwgRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCBhcGktcmVsYXRlZCBfZG9jdW1lbnRhdGlvbl8gZmlsZXMgc2hvdWxkIGJlIGdlbmVyYXRlZCB8Cnwgb3BlbkFwaVdpdGhYbWwgfCBgT3B0aW9uW0Jvb2xlYW5dYCB8IEEgc3BlY2lhbC1jYXNlIHNldHRpbmcgd2hpY2ggY29uZmlndXJlcyBzb21lIGdlbmVyYXRvcnMgd2l0aCBYTUwgc3VwcG9ydC4gSW4gc29tZSBjYXNlcywgdGhpcyBmb3JjZXMganNvbiBPUiB4bWwsIHNvIHRoZSBkZWZhdWx0IGhlcmUgaXMgZmFsc2UgfAp8IG9wZW5BcGlMb2dUb1N0ZGVyciB8IGBPcHRpb25bQm9vbGVhbl1gIHwgVG8gd3JpdGUgYWxsIGxvZyBtZXNzYWdlcyAobm90IGp1c3QgZXJyb3JzKSB0byBTVERPVVQgfAp8IG9wZW5BcGlFbmFibGVQb3N0UHJvY2Vzc0ZpbGUgfCBgT3B0aW9uW0Jvb2xlYW5dYCB8IEVuYWJsZSBwb3N0LXByb2Nlc3NpbmcgZmlsZSB1c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgfCBcCnwgb3BlbkFwaVNraXBWYWxpZGF0ZVNwZWMgfCBgT3B0aW9uW0Jvb2xlYW5dYCB8IFRvIHNraXAgc3BlYyB2YWxpZGF0aW9uLiBXaGVuIHRydWUsIHdlIHdpbGwgc2tpcCB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB2YWxpZGF0aW5nIGEgc3BlYyBiZWZvcmUgZ2VuZXJhdGlvbiB8Cnwgb3BlbkFwaUdlbmVyYXRlQWxpYXNBc01vZGVsIHwgYE9wdGlvbltCb29sZWFuXWAgfCBHZW5lcmF0ZSBtb2RlbCBpbXBsZW1lbnRhdGlvbiBmb3IgYWxpYXNlcyB0byBtYXAgYW5kIGFycmF5IHNjaGVtYXMgfAp8IG9wZW5BcGlHZW5lcmF0ZU1ldGFkYXRhIHwgYE9wdGlvbltCb29sZWFuXWAgfCBHZW5lcmF0ZSBtZXRhZGF0YSBmaWxlcyB1c2VkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yLiBUaGlzIGluY2x1ZGVzIGAub3BlbmFwaS1nZW5lcmF0b3ItaWdub3JlYCBhbmQgYW55IGZpbGVzIHdpdGhpbiBgLm9wZW5hcGktZ2VuZXJhdG9yYC4gfAoKIyBFeGFtcGxlcwoKUGxlYXNlIHNlZSBbYW4gc2J0LXRlc3QgY29uZmlndXJhdGlvbl0oc3JjL3NidC10ZXN0KSBmb3IgZXhhbXBsZXMgb2YgdXNpbmcgdGhlIHBsdWdpbi4KRG8gbm90IHJ1biB0aG9zZSBleGFtcGxlcyBkaXJlY3RseSwgcGxlYXNlIGNvcHkgdGhlbSB0byBzZXBhcmF0ZSBwbGFjZSBmaXJzdC4KCiMgQ29udHJpYnV0aW9uIGFuZCBUZXN0cwoKV3JpdGUgcGx1Z2luIGludGVncmF0aW9uIHRlc3RzIHVuZGVyIFtzcmMvc2J0LXRlc3RdKHNyYy9zYnQtdGVzdCkKCkV4ZWN1dGUgbmV4dCBjb21tYW5kIHRvIHJ1biB0ZXN0czoKCmBgYHNoZWxsIHNjcmlwdApzYnQgc2NyaXB0ZWQKYGBgCgpNb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byB3cml0ZSBhbmQgZXhlY3V0ZSB0ZXN0cyBbaXMgaGVyZV0oaHR0cHM6Ly93d3cuc2NhbGEtc2J0Lm9yZy8xLngvZG9jcy9UZXN0aW5nLXNidC1wbHVnaW5zLmh0bWwpCg== readmeEtag: '"187154c00bfc91b3037e2cf22099350c2ada490d"' readmeLastModified: Wed, 21 Jan 2026 08:29:48 GMT repositoryId: 244148241 description: null created: '2020-03-01T12:49:22Z' updated: '2026-01-21T08:29:52Z' language: Scala archived: false stars: 37 watchers: 3 forks: 41 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: NOASSERTION repoEtag: '"434e981fc4179d911b37b0850b59a2e2a7ad0b4cd50c5a7311e5a4cc5889a44d"' repoLastModified: Wed, 21 Jan 2026 08:29:52 GMT foundInMaster: true category: Description Validators id: b442d7afc94f3b9d9e3009c0936c0e9c - source: - openapi3 tags - openapi31 tags repository: https://github.com/redocly/redocly-cli-cookbook v3: true v3_1: true id: 2d252e6d912a2772d88fd6f022fff74f repositoryMetadata: base64Readme: >- IyBSZWRvY2x5IENMSSBDb29rYm9vawoKQSBjb21tdW5pdHkgY29sbGVjdGlvbiBvZiBydWxlc2V0cywgY29uZmlndXJhdGlvbiwgY3VzdG9tIHBsdWdpbnMgYW5kIG90aGVyIGFkZGl0aW9ucyBmb3IgW1JlZG9jbHkgQ0xJXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvY2x5LWNsaSkuIFdlIGtub3cgb3VyIHVzZXJzIGhhdmUgc29tZSBncmVhdCB0aXBzLCBleGFtcGxlcywgYW5kIGNvZGUgdG8gc2hhcmUsIGFuZCB0aGlzIGlzIHRoZSBwbGFjZSB0byBkbyBqdXN0IHRoYXQuIFdlIHdvdWxkIGxvdmUgdG8gaGF2ZSB5b3VyIFtjb250cmlidXRpb25zXSgjY29udHJpYnV0aW5nKSBoZXJlIHRvbyEKCj4gWyFJTVBPUlRBTlRdCj4gUmVkb2NseSBhcmUgdGhlIHJlcG9zaXRvcnkgbWFpbnRhaW5lcnMsIGJ1dCB3ZSBjYW4ndCB0aG9yb3VnaGx5IHRlc3QgZXZlcnl0aGluZyBoZXJlLiBQbGVhc2UgYnJvd3NlLCBzaGFyZSwgYW5kIHVzZSB3aGF0IHlvdSBmaW5kIGF0IHlvdXIgb3duIHJpc2suCgpJZiB5b3UncmUgbmV3IHRvIFJlZG9jbHkgQ0xJLCBzdGFydCB3aXRoIHRoZSBbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2NsaS8pIHRvIGdldCB1cCBhbmQgcnVubmluZywgdGhlbiBjb21lIGJhY2sgaGVyZSB0byBwaWNrIG91dCBhbnkgZWxlbWVudHMgeW91IHdvdWxkIGxpa2UgdG8gcmUtdXNlIHlvdXJzZWxmLiBUbyBrZWVwIHVwIHdpdGggbmV3IGRldmVsb3BtZW50cywgZWl0aGVyIHN1YnNjcmliZSB0byB0aGUgcHJvamVjdCByZXBvc2l0b3J5LCBvciBbc2lnbiB1cCBmb3IgdGhlIFJlZG9jbHkgcHJvZHVjdCBuZXdzbGV0dGVyXShodHRwczovL3JlZG9jbHkuY29tL3Byb2R1Y3QtdXBkYXRlcy8pLgoKIyMgVXNhZ2UKClVzZSB0aGUgY29udGVudCBoZXJlIGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdXIgb3duIHdvcmsuCgoxLiBUYWtlIGEgbG9vayBhdCB3aGF0J3MgYXZhaWxhYmxlIGluIGVhY2ggY2F0ZWdvcnksIGFuZCBwaWNrIGFueSB0aGF0IHlvdSB0aGluayBhcHBseSB0byB5b3VyIHNpdHVhdGlvbi4KCjIuIEVhY2ggc2VjdGlvbiBsaW5rcyB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBmZWF0dXJlLCBpbmNhc2UgeW91IG5lZWQgYW4gaW50cm9kdWN0aW9uIG9yIHJlZnJlc2hlci4KCjMuIENvcHkgYW5kIHBhc3RlIHRoZSBleGFtcGxlcyB5b3Ugd2FudCB0byB1c2UgaW50byB5b3VyIG93biBzZXR1cCwgdGhlbiBlZGl0IHRoZW0gdG8gZml0IHlvdXIgb3duIG5lZWRzLgoKSWYgeW91IGNvbWUgdXAgd2l0aCBzb21ldGhpbmcgbmV3LCBwbGVhc2UgY29uc2lkZXIgc2hhcmluZyBpdCBoZXJlIGJ5IG9wZW5pbmcgYSBwdWxsIHJlcXVlc3QuCgojIyBDYXRlZ29yaWVzCgojIyMgUnVsZXNldHMKCkNvbWJpbmUgZXhpc3RpbmcgW2J1aWx0LWluIHJ1bGVzXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL3J1bGVzL2J1aWx0LWluLXJ1bGVzLykgaW4gd2F5cyB0aGF0IHNlcnZlIGEgc3BlY2lmaWMgcHVycG9zZSwgYW5kIG1ha2UgYSBbcmVzdWFibGUgcnVsZXNldF0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2NsaS9ndWlkZXMvY29uZmlndXJlLXJ1bGVzLyNjcmVhdGUtYS1yZXVzYWJsZS1ydWxlc2V0KS4KCi0gW1NwZWMtY29tcGxpYW50IHJ1bGVzZXRdKHJ1bGVzZXRzL3NwZWMtY29tcGxpYW50LykKLSBbU3BvdCBjb21tb24gbWlzdGFrZXNdKHJ1bGVzZXRzL2NvbW1vbi1taXN0YWtlcykKLSBbU2VjdXJpdHkgcnVsZXNldF0ocnVsZXNldHMvc2VjdXJpdHkpIGFkZHMgc29tZSBkZWZlbnNpdmUgcnVsZXMgdG8geW91ciBkZXNjcmlwdGlvbi4KCiMjIyBDb25maWd1cmFibGUgcnVsZXMKClRoZXJlIGFyZSBzb21lIGZhbnRhc3RpYyBleGFtcGxlcyBvZiBbY29uZmlndXJhYmxlIHJ1bGVzXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL3J1bGVzL2NvbmZpZ3VyYWJsZS1ydWxlcy8pIGluIHRoZSB3aWxkLCB3ZSBob3BlIHRoZSBsaXN0IGhlcmUgaW5zcGlyZXMgeW91IHRvIHNoYXJlIG1vcmUgb2YgeW91ciBvd24hCgotIFtCYW4gY2VydGFpbiB3b3JkcyBmcm9tIGRlc2NyaXB0aW9uc10oY29uZmlndXJhYmxlLXJ1bGVzL2Rlc2NyaXB0aW9uLWJhbm5lZC13b3Jkcy8pCi0gW1JlcXVpcmUgYGl0ZW1zYCBmaWVsZCBmb3Igc2NoZW1hcyBvZiB0eXBlIGBhcnJheWBdKGNvbmZpZ3VyYWJsZS1ydWxlcy9yZXF1aXJlZC1pdGVtcy1mb3ItYXJyYXktc2NoZW1hcy8pCi0gW0Vuc3VyZSBzZW50ZW5jZSBjYXNlIGluIG9wZXJhdGlvbiBzdW1tYXJpZXNdKGNvbmZpZ3VyYWJsZS1ydWxlcy9vcGVyYXRpb24tc3VtbWFyeS1zZW50ZW5jZS1jYXNlKQotIFtgUE9TVGAgU0hPVUxEIGRlZmluZSBgcmVxdWVzdEJvZHlgIHNjaGVtYV0oY29uZmlndXJhYmxlLXJ1bGVzL29wZXJhdGlvbi1wb3N0LXNob3VsZC1kZWZpbmUtcmVxdWVzdC1ib2R5LykKLSBbYEdFVGAgU0hPVUxEIE5PVCBkZWZpbmUgYHJlcXVlc3RCb2R5YCBzY2hlbWFdKGNvbmZpZ3VyYWJsZS1ydWxlcy9vcGVyYXRpb24tZ2V0LXNob3VsZC1ub3QtZGVmaW5lLXJlcXVlc3RCb2R5LykKLSBbYERFTEVURWAgU0hPVUxEIE5PVCBkZWZpbmUgYHJlcXVlc3RCb2R5YCBzY2hlbWFdKGNvbmZpZ3VyYWJsZS1ydWxlcy9vcGVyYXRpb24tZGVsZXRlLXNob3VsZC1ub3QtZGVmaW5lLXJlcXVlc3RCb2R5LykKLSBbSW5mbyBzZWN0aW9uIG11c3QgaGF2ZSBhIGRlc2NyaXB0aW9uXShjb25maWd1cmFibGUtcnVsZXMvaW5mby1kZXNjcmlwdGlvbikKLSBbTm8gYDxzY3JpcHQ+YCB0YWdzIGluIGRlc2NyaXB0aW9uc10oY29uZmlndXJhYmxlLXJ1bGVzL25vLXNjcmlwdCkKLSBbUGF0aHMgc2hvdWxkIG5vdCBtYXRjaCBhIHBhdHRlcm5dKGNvbmZpZ3VyYWJsZS1ydWxlcy9wYXRoLWV4Y2x1ZGVzLXBhdHRlcm4vKQotIFtBUEkgaGVhbHRoY2hlY2sgcnVsZXNdKGNvbmZpZ3VyYWJsZS1ydWxlcy9hcGktaGVhbHRoLykKLSBbU3RyaW5nIHNjaGVtYXMgbGVuZ3RoIGRlZmluZWRdKGNvbmZpZ3VyYWJsZS1ydWxlcy9zdHJpbmctc2NoZW1hcy1sZW5ndGgtZGVmaW5lZC8pCi0gW0pTT04gU2NoZW1hIG1pc2NvbmZpZ3VyYXRpb25zXShjb25maWd1cmFibGUtcnVsZXMvanNvbi1zY2hlbWEtbWlzY29uZmlndXJhdGlvbnMvKQotIFtBenVyZSBBUElNIHVuc3VwcG9ydGVkIGtleXdvcmRzXShjb25maWd1cmFibGUtcnVsZXMvYXp1cmUtYXBpbS11bnN1cHBvcnRlZC1rZXl3b3JkLykKCiMjIyBDdXN0b20gcGx1Z2lucwoKVGhlIFtjdXN0b20gcGx1Z2luXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL2N1c3RvbS1wbHVnaW5zLykgaXMgdGhlIHVsdGltYXRlIGluIGV4dGVuc2liaWxpdHksIGJ1dCBpdCdzIGFuIGFkdmFuY2VkIGZlYXR1cmUuIFRyeSB0aGVzZSBwbHVnaW5zIGZvciBpbnNwaXJhdGlvbiBhbmQgdG8gZ2V0IHlvdSBzdGFydGVkLiBSYXRoZXIgdGhhbiBpbmNsdWRpbmcgdGhlIHdob2xlIHBsdWdpbiwgdGhlcmUgYXJlIGFsc28gc2VjdGlvbnMgZm9yIGluZGl2aWR1YWwgcnVsZXMgYW5kIGRlY29yYXRvcnMgZnVydGhlciBkb3duLgoKLSBbU29ydGluZyBwbHVnaW5dKC4vY3VzdG9tLXBsdWdpbnMvc29ydGluZykgLSBydWxlcyB0byBjaGVjayBzb3J0IG9yZGVyIGFuZCBkZWNvcmF0b3JzIHRvIHRyYW5zZm9ybSBhbiBBUEkgZGVzY3JpcHRpb24gaW50byB0aGUgY29ycmVjdCBvcmRlci4gSW5jbHVkZXMgc29ydGluZyBmb3IgdGFncywgbWV0aG9kcywgcHJvcGVydGllcyBhbmQgZW51bSB2YWx1ZXMuCgojIyMjIERlY29yYXRvcnMgKGZvciBjdXN0b20gcGx1Z2lucykKCi0gW1RhZyBzb3J0aW5nXSguL2N1c3RvbS1wbHVnaW4tZGVjb3JhdG9ycy90YWctc29ydGluZykgLSBwdXQgeW91ciB0YWdzIGxpc3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgotIFtTdWJzdGl0dXRlIGRhdGV0aW1lIHBsYWNlaG9sZGVycyBpbiBhbiBBUEkgZGVzY3JpcHRpb25dKC4vY3VzdG9tLXBsdWdpbi1kZWNvcmF0b3JzL3VwZGF0ZS1leGFtcGxlLWRhdGVzKSAtIHVwZGF0ZSBkYXRlcyBpbiBleGFtcGxlcyB0byB0aGUgY3VycmVudCBkYXRlLgotIFtPcGVuQUkgaXNDb25zZXF1ZW50aWFsXSguL2N1c3RvbS1wbHVnaW4tZGVjb3JhdG9ycy9vcGVuYWktaXMtY29uc2VxdWVudGlhbCkgLSBhZGQgYHgtb3BlbmFpLWlzQ29uc2VxdWVudGlhbDogdHJ1ZWAgc3BlY2lmaWNhdGlvbiBleHRlbnNpb24gdG8gR0VUIG9wZXJhdGlvbnMuCi0gW1JlbW92ZSBleHRlbnNpb25zXSguL2N1c3RvbS1wbHVnaW4tZGVjb3JhdG9ycy9yZW1vdmUtZXh0ZW5zaW9ucykgLSByZW1vdmUgYW55IGdpdmVuIFtPcGVuQVBJIEV4dGVuc2lvbnNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNzcGVjaWZpY2F0aW9uLWV4dGVuc2lvbnMpIGZyb20gYW4gT3BlbkFQSSBkb2N1bWVudC4KLSBbUmVtb3ZlIHVudXNlZCB0YWdzXSguL2N1c3RvbS1wbHVnaW4tZGVjb3JhdG9ycy9yZW1vdmUtdW51c2VkLXRhZ3MpIC0gcmVtb3ZlIHRhZ3MgdGhhdCBhcmUgZGVjbGFyZWQgYnV0IG5vdCB1c2VkIGJ5IGFueSBvcGVyYXRpb25zLgotIFtBenVyZSBBUElNXSguL2N1c3RvbS1wbHVnaW4tZGVjb3JhdG9ycy9henVyZS1hcGltKSAtIHJlbW92ZSBmZWF0dXJlcyB1bnN1cHBvcnRlZCBieSBBenVyZSBBUElNIHN1Y2ggYXMgZXhhbXBsZXMuCi0gW1N3YXAgc3VtbWFyeSBhbmQgZGVzY3JpcHRpb25dKC4vY3VzdG9tLXBsdWdpbi1kZWNvcmF0b3JzL3N3YXAtc3VtbWFyeS1kZXNjcmlwdGlvbikgLSBzd2FwIHRoZSBjb250ZW50cyBvZiBzdW1tYXJ5IGFuZCBkZXNjcmlwdGlvbiBmaWVsZHMgaWYgdGhleSBhcmUgdGhlIHdyb25nIHdheSByb3VuZC4KCiMjIyMgUnVsZXMgKGZvciBjdXN0b20gcGx1Z2lucykKCi0gW1ZhbGlkYXRlIE1hcmtkb3duXSguL2N1c3RvbS1wbHVnaW4tcnVsZXMvbWFya2Rvd24tdmFsaWRhdG9yKSAtIGNoZWNrIE1hcmtkb3duIGluIGRlc2NyaXB0aW9uIGZpZWxkcyBpcyB2YWxpZC4KLSBbQ2hlY2sgY29kZSBzYW1wbGVzXSguL2N1c3RvbS1wbHVnaW4tcnVsZXMvY29kZS1zYW1wbGUtY2hlY2tzKSAtIGNoZWNrIHRoYXQgYW4gZXhwZWN0ZWQgbGlzdCBvZiBjb2RlIHNhbXBsZXMgaXMgcHJlc2VudCBpbiBgeC1jb2RlLXNhbXBsZXNgIGZvciBldmVyeSBvcGVyYXRpb24uCgojIyMgTWlzY2VsbGFuZW91cyAoaW5jbHVkaW5nIHRpcHMgYW5kIHRyaWNrcykKClNoYXJlIGFueXRoaW5nIHRoYXQgZGlkbid0IGZpdCB0aGUgZXhpc3RpbmcgY2F0ZWdvcmllcyBoZXJlLgoKLSBbU2NyaXB0IHRvIHJlLW9yZGVyIGFuIEFQSSBkZXNjcmlwdGlvbl0oLi9taXNjZWxsYW5lb3VzL3Jlb3JkZXItYnVuZGxlZC1kZXNjcmlwdGlvbi1wcm9wZXJ0aWVzLykgYW5kIHB1dCB0aGUgdG9wLWxldmVsIHByb3BlcnRpZXMgaW4gYSBwYXJ0aWN1bGFyIG9yZGVyLgoKIyMgQ29udHJpYnV0aW5nCgpQbGVhc2Ugc2hhcmUgeW91ciBiZXN0IFJlZG9jbHkgQ0xJIHVzYWdlIHdpdGggdXMhIEVhY2ggaXRlbSBzaG91bGQgYmUgc2hhcmVkIGluIGl0cyBvd24gcHVsbCByZXF1ZXN0LCBmb2xsb3dpbmcgdGhlIGV4aXN0aW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgYW5kIGluY2x1ZGluZyB0aGUgW1JFQURNRSB0ZW1wbGF0ZV0ocmVhZG1lLXRlbXBsYXRlLm1kKSBjb3BpZWQgaW50byBlYWNoIGZvbGRlci4gRnVsbCBpbnN0cnVjdGlvbnMgYXJlIGluIHRoZSBbQ09OVFJJQlVUSU5HIGZpbGVdKENPTlRSSUJVVElORy5tZCkuCgojIyBSZXF1ZXN0cwoKSWYgdGhlcmUncyBzb21ldGhpbmcgeW91IHRoaW5rIHNob3VsZCBiZSBpbiB0aGUgY29sbGVjdGlvbiBhbmQgaXQgaXNuJ3QsIGxldCB1cyBrbm93ISBPcGVuIGFuIGlzc3VlLCBhbmQgZGVzY3JpYmUgdGhlIHByb2JsZW0geW91J2QgbGlrZSB0byBzZWUgc29sdmVkIHdpdGggUmVkb2NseSBDTEkuIFdlIGNhbid0IG1ha2UgcHJvbWlzZXMsIGJ1dCB3ZSBhcmUgcHJldHR5IHN1cmUgc29tZW9uZSBvdXQgdGhlcmUgd2lsbCBrbm93IHRoZSBhbnN3ZXIuCg== readmeEtag: '"0edeb5c62c6fee81a5914cc4cd2adf6e16c21dd2"' readmeLastModified: Wed, 23 Oct 2024 07:48:19 GMT repositoryId: 697834648 description: >- A community-created collection of configuration, plugins and techniques for getting the best from Redocly CLI in every situation. created: '2023-09-28T15:12:02Z' updated: '2026-02-03T10:46:30Z' language: JavaScript archived: false stars: 43 watchers: 13 forks: 9 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT repoEtag: '"c5280db260dacb8b4123544856c791092e1471658cceebe9cb3c6d98560a5807"' repoLastModified: Tue, 03 Feb 2026 10:46:30 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/franeklubi/clubi v3: true repositoryMetadata: base64Readme: >- IyBDbHViaQoKIVtsb2dvLnBuZ10oLi9hc3NldHMvbG9nby5wbmcpCgojIyMgQ2x1YmkgaXMgYSBncm91cC1vcmllbnRlZCBzb2NpYWwgbWVkaWEgcGxhdGZvcm0gd3JpdHRlbiBpbiBMYXJhdmVsLgoKVmlzaXQgdXMgYXQ6IGh0dHBzOi8vY2x1YmkuZnJhbmVrbHViaS5jb20vCgotLS0KKiBbRmVhdHVyZXNdKCNmZWF0dXJlcykKKiBbRG9jdW1lbnRhdGlvbl0oI2RvY3VtZW50YXRpb24pCiogW0NvbnRyaWJ1dGluZ10oI2NvbnRyaWJ1dGluZykKLS0tCgohW3Jlc3BvbnNpdmUucG5nXSguL2Fzc2V0cy9yZXNwb25zaXZlLnBuZykKKlNob3djYXNlIG9mIHRoZSByZXNwb25zaXZlIGRlc2lnbioKCiMgRmVhdHVyZXMKKiBvcGVuIGFwaSB3aXRoIHRva2VuIGF1dGggdGhhdCdzIHByZXBhcmVkIGZvciBwb3RlbnRpYWwgYXBwIGRldmVsb3BtZW50IChnbyB0byBbZG9jdW1lbnRhdGlvbl0oI2RvY3VtZW50YXRpb24pIHRvIGxlYXJuIG1vcmUpCiogYWxsb3dzIGZvciBlYXN5IChwdWJsaWMgb3IgcHJpdmF0ZSkgZ3JvdXAgY3JlYXRpb24gYW5kIG1hbmFnZW1lbnQKKiBkaXNwbGF5cyBub3RpZmljYXRpb25zLCBzdWNoIGFzOgogICAgLSBuZXcgcG9zdCBpbiBZb3VyIGdyb3VwCiAgICAtIHNvbWVvbmUgaGFzIGxpa2VkIFlvdXIgcG9zdC9jb21tZW50CiAgICAtIHNvbWVvbmUgaGFzIGpvaW5lZCBZb3VyIGdyb3VwCiAgICAtIHNvbWVvbmUgaGFzIGxlZnQgYSBjb21tZW50IG9uIFlvdXIgcG9zdAoqIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiB1c2VycywgZ3JvdXAgYWRtaW5zLCBhbmQgc2l0ZSBhZG1pbnMKKiBpbXBsZW1lbnRzIHVzZXItc3BlY2lmaWMgZmVlZCBjb250YWluaW5nIGxhdGVzdCBwb3N0cyBmcm9tIGFsbCBncm91cHMgdGhlIHVzZXIgaGFzIGpvaW5lZAoqIGltcGxlbWVudHMgaW52aXRhdGlvbiBzeXN0ZW0gd2l0aCBzcGVjaWZpZWQgY29udHJvbHMgc3VjaCBhczogbmVjZXNzYXJ5IGFkbWluIGFwcHJvdmFsIGZvciBpbnZpdGF0aW9ucyB0byBwcml2YXRlIGdyb3VwcwoqIHJhbmtzIDEwIG1vc3QgcG9wdWxhciBncm91cHMgb24gc2l0ZQoqIGFsbG93cyBmb3Igc2VhcmNoaW5nIGdyb3VwcyBieSBuYW1lIG9yIHRoZWlyIGlkIHN0cmluZwoqIHVzZXJzIGFyZSBhYmxlIHRvIGF0dGFjaCBwaWN0dXJlcyB0byBwb3N0cy9jb21tZW50cyBhbmQgYWxzbyBsaWtlIHRoZW0KKiBjb250YWlucyBiYWRnZXMgbmV4dCB0byB1c2VybmFtZSBpbmRpY2F0aW5nIHVzZXIncyByZWxldmFuY2U6CiAgICAtIHBvc3QgYXV0aG9yCiAgICAtIGdyb3VwIGFkbWluCiAgICAtIHNpdGUgYWRtaW4KKiBpbXBsZW1lbnRzICdMb2FkIG1vcmUnIGZ1bmN0aW9uYWxpdHkgZm9yIHBvc3RzIGFuZCBjb21tZW50cwoqIHVzZXMgcmVzcG9uc2l2ZSBkZXNpZ24KCiMgRG9jdW1lbnRhdGlvbgoKRm9yIEFQSSBkb2N1bWVudGF0aW9uLCB2aXNpdCB0aGlzIGxpbms6IFtnZW5lcmF0ZWQgc3dhZ2dlciBkb2NdKGh0dHBzOi8vZ2VuZXJhdG9yLnN3YWdnZXIuaW8vP3VybD1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZnJhbmVrbHViaS9jbHViaS9tYXN0ZXIvZG9jcy9vcGVuYXBpLnlhbWwpCgojIENvbnRyaWJ1dGluZwoKQ2x1Ymkgd2VsY29tZXMgY29udHJpYnV0aW9ucyBvZiBhbnkga2luZCA6KQoKVG8gc3RhcnQgY29udHJpYnV0aW5nIGNsb25lIHRoZSByZXBvc2l0b3J5IGFuZCBydW4gYC4vZGV2X3NldHVwLnNoYCB0byBoZWxwIGdldCBZb3Ugc3RhcnRlZC4gVGhpcyBzY3JpcHQgd2lsbDoKKiBpbnN0YWxsIGNvbXBvc2VyIGFuZCBucG0gcGFja2FnZXMKKiBjb21waWxlIGpzIGFzc2V0cwoqIGNvcHkgdGhlIC5lbnYuZXhhbXBsZSB0byAuZW52CiogZ2VuZXJhdGUgc2VjdXJlIGtleSB3aXRoIGFydGlzYW4KKiBvcGVuIC5lbnYgaW4gdmltIGZvciBZb3UgdG8gbW9kaWZ5IGl0Cg== readmeEtag: '"02f9329c336de4dfe43fca97896180f7ea8bd184"' readmeLastModified: Tue, 06 Dec 2022 19:49:21 GMT repositoryId: 280255962 description: A group-oriented social media platform written in Laravel and Vue created: '2020-07-16T20:52:54Z' updated: '2025-09-16T04:31:06Z' language: PHP archived: false stars: 32 watchers: 4 forks: 2 owner: franeklubi logo: https://avatars.githubusercontent.com/u/33394849?v=4 license: MIT repoEtag: '"24aa7ae35aa8d7da4d2915bdfd2080695555ac93f40ccde703b130516151d7d2"' repoLastModified: Tue, 16 Sep 2025 04:31:06 GMT foundInMaster: true category: - Testing - Server Implementations id: 45fe333e65955184af9db3099d28c59b - source: openapi3 tags repository: https://github.com/namuan/http-rider v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9uYW11YW4vaHR0cC1yaWRlci9yYXcvbWFzdGVyL3Jlc291cmNlcy9pbWFnZXMvaHR0cHJpZGVyLXJlYWRtZS5wbmciIHdpZHRoPSIxMjhweCIvPgo8L3A+CjxoMSBhbGlnbj0iY2VudGVyIj5IdHRwUmlkZXIgOjogU2ltcGxlIGFuZCBQb3dlcmZ1bCBDcm9zcy1QbGF0Zm9ybSBBUEkgQ2xpZW50PC9oMT4KClshW01hY09TIFJlbGVhc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3YvcmVsZWFzZS9uYW11YW4vaHR0cC1yaWRlci1vc3g/bGFiZWw9bWFjb3MpXShodHRwczovL2dpdGh1Yi5jb20vbmFtdWFuL2h0dHAtcmlkZXItb3N4L3JlbGVhc2VzL2xhdGVzdCkgWyFbV2luZG93cyBSZWxlYXNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi92L3JlbGVhc2UvbmFtdWFuL2h0dHAtcmlkZXItd2luP2xhYmVsPXdpbmRvd3MpXShodHRwczovL2dpdGh1Yi5jb20vbmFtdWFuL2h0dHAtcmlkZXItd2luL3JlbGVhc2VzL2xhdGVzdCkgWyFbTGludXggUmVsZWFzZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvdi9yZWxlYXNlL25hbXVhbi9odHRwLXJpZGVyP2xhYmVsPUxpbnV4KV0oaHR0cHM6Ly9naXRodWIuY29tL25hbXVhbi9odHRwLXJpZGVyL3JlbGVhc2VzL2xhdGVzdCkgWyFbR2l0SHViIGxpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvbmFtdWFuL2h0dHAtcmlkZXIuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL25hbXVhbi9odHRwLXJpZGVyL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpIFshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kuY29tL25hbXVhbi9odHRwLXJpZGVyLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL25hbXVhbi9odHRwLXJpZGVyKSBbIVtHaXRIdWIgbGFzdCBjb21taXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhc3QtY29tbWl0L25hbXVhbi9odHRwLXJpZGVyKV0oaHR0cHM6Ly9naXRodWIuY29tL25hbXVhbi9odHRwLXJpZGVyL2NvbW1pdHMvbWFzdGVyKSBbIVtHaXRIdWIgY29tbWl0IGFjdGl2aXR5IHRoZSBwYXN0IHdlZWssIDQgd2Vla3MsIHllYXJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2NvbW1pdC1hY3Rpdml0eS95L25hbXVhbi9odHRwLXJpZGVyKV0oaHR0cHM6Ly9naXRodWIuY29tL25hbXVhbi9odHRwLXJpZGVyL2NvbW1pdHMvbWFzdGVyKSBbIVtUd2l0dGVyIEZvbGxvd10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90d2l0dGVyL2ZvbGxvdy9kZXNrcmlkZXJzX3R3dC5zdmc/c3R5bGU9c29jaWFsJmxhYmVsPUZvbGxvdyldKGh0dHBzOi8vdHdpdHRlci5jb20vZGVza3JpZGVyc190d3QpIFshW0dpdHRlcl0oaHR0cHM6Ly9iYWRnZXMuZ2l0dGVyLmltL2h0dHAtcmlkZXIvY29tbXVuaXR5LnN2ZyldKGh0dHBzOi8vZ2l0dGVyLmltL2h0dHAtcmlkZXIvY29tbXVuaXR5P3V0bV9zb3VyY2U9YmFkZ2UmdXRtX21lZGl1bT1iYWRnZSZ1dG1fY2FtcGFpZ249cHItYmFkZ2UpCgpbIVtIdHRwUmlkZXIgSW50cm9dKGh0dHBzOi8vaW1nLnlvdXR1YmUuY29tL3ZpL3JXbXZ3VnV1TjZJLzAuanBnKV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1yV212d1Z1dU42SSkKCiMjIyBEb3dubG9hZHMKCkRvd25sb2FkcyBhcmUgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgTWFjT1MgYW5kIFdpbmRvd3MgaG93ZXZlciBpdCBpcyBzaW1wbGUgdG8gcnVuIGZyb20gc291cmNlIGlmIHlvdSBwcmVmZXIgdGhhdC4KClNlZSBbaHR0cHM6Ly93d3cuaHR0cHJpZGVyLmNvbS9kb2NzL2dldHRpbmctc3RhcnRlZC9pbnN0YWxsYXRpb24vXShodHRwczovL25hbXVhbi5naXRodWIuaW8vaHR0cC1yaWRlci1kb2NzL2RvY3MvZ2V0dGluZy1zdGFydGVkL2luc3RhbGxhdGlvbi8pIGZvciBpbnN0cnVjdGlvbnMgZm9yIGRpZmZlcmVudCBvcGVyYXRpbmcgc3lzdGVtcy4KCiMjIyBJbnN0YWxsYXRpb24gZnJvbSBTb3VyY2UKClRvIGluc3RhbGwgSHR0cFJpZGVyIGZyb20gc291cmNlOgoKMS4gKipDbG9uZSB0aGUgcmVwb3NpdG9yeSBvciBkb3dubG9hZCB0aGUgWklQIGZpbGU6KioKCiAgIGBgYGJhc2gKICAgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9uYW11YW4vaHR0cC1yaWRlci5naXQKICAgY2QgaHR0cC1yaWRlcgogICBgYGAKCjIuICoqUnVuIHRoZSBpbnN0YWxsYXRpb24gc2NyaXB0IChtYWNPUyk6KioKCiAgIGBgYGJhc2gKICAgLi9pbnN0YWxsLmNvbW1hbmQKICAgYGBgCgogICBUaGlzIHNjcmlwdCB3aWxsOgoKICAgLSBJbnN0YWxsIGB1dmAgKGlmIG5vdCBhbHJlYWR5IGluc3RhbGxlZCkKICAgLSBTZXQgdXAgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgYW5kIGRlcGVuZGVuY2llcwogICAtIEluc3RhbGwgdGhlIGFwcGxpY2F0aW9uIGluIHlvdXIgYH4vQXBwbGljYXRpb25zYCBmb2xkZXIKCjMuICoqQWx0ZXJuYXRpdmUgbWFudWFsIGluc3RhbGxhdGlvbjoqKgogICBgYGBiYXNoCiAgIG1ha2UgaW5zdGFsbCAgIyBJbnN0YWxsIGRlcGVuZGVuY2llcyBhbmQgcHJlLWNvbW1pdCBob29rcwogICBtYWtlIHJ1biAgICAgICMgUnVuIHRoZSBhcHBsaWNhdGlvbgogICBgYGAKCiMjIyBGZWF0dXJlcwoK8J+agCBGZWF0dXJlIGNvbXBsZXRlIHwg8J+ZiCBFeHBlcmltZW50YWwgfCDwn5OdIEluIGRldmVsb3BtZW50IHwg4piB77iP77iPIFBsYW5uZWQKCi0tLQoK8J+agCBNYWtpbmcgYSBzaW1wbGUgcmVxdWVzdCAtIFtEZW1vXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWZ3OGpNalFwZnk4KQoK8J+agCBBZGRpbmcgcXVlcnkgcGFyYW0sIGhlYWRlciwgcmVxdWVzdCBib2R5Cgrwn5qAIFJ1bm5pbmcgbXVsdGlwbGUgQVBJcy9SZWFycmFuZ2luZyBBUElzCgrwn5qAIFRhZ3MvTGFiZWxzIGFuZCBTZWFyY2ggYW5kIGZpbHRlcmluZwoK8J+agCBIdHRwIHJlcXVlc3RzIGhpc3RvcnkKCvCfmoAgUHJvamVjdHMgc3VwcG9ydAoK8J+agCBFbnZpcm9ubWVudHMgYW5kIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcwoK8J+agCBJbXBvcnRpbmcvRXhwb3J0aW5nIGVudmlyb25tZW50cwoK8J+agCBVc2luZyBGYWtlIG9yIHJhbmRvbSBkYXRhIGdlbmVyYXRvcnMKCvCfmoAgVXNpbmcgdmFyaWFibGVzIGJldHdlZW4gQVBJIHJlcXVlc3RzCgrwn5qAIEFzc2VydGlvbnMKCvCfmoAgTW9ja2luZyByZXNwb25zZXMKCioqRXhwb3J0ZXJzKioKCvCfmoAgRXhwb3J0IFtQbGFudFVNTF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9wbGFudHVtbCkgU2VxdWVuY2UgZGlhZ3JhbSAtIFtEZW1vXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTRBc3JfNGlPeFVNKQoK8J+agCBFeHBvcnQgW1Nsb3cgQ29va2VyXShodHRwczovL2dpdGh1Yi5jb20vYnVveWFudGlvL3Nsb3dfY29va2VyKSBwZXJmb3JtYW5jZSB0ZXN0cwoK8J+agCBFeHBvcnQgW0xvY3VzdC5pb10oaHR0cHM6Ly9sb2N1c3QuaW8pIHBlcmZvcm1hbmNlIHRlc3RzIC0gW0RlbW9dKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9N3pxY1ltWklkVnMpCgrwn5qAIEV4cG9ydCBQeXRob24gY29kZSB1c2luZyByZXF1ZXN0cyBtb2R1bGUKCvCfmoAgRXhwb3J0IE1hcmtkb3duIGZvciBkb2N1bWVudGluZyBBUEkgcmVxdWVzdHMvcmVzcG9uc2VzCgrwn5qAIEV4cG9ydCBbQXBpY2tsaV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWNrbGkvYXBpY2tsaSkgZnVuY3Rpb25hbCB0ZXN0cyBbRGVtb10oaHR0cHM6Ly9kZXNrcmlkZXJzLmRldi9nZW5lcmF0aW5nLWJkZC10ZXN0cy13aXRoLWh0dHByaWRlci8pCgrwn5qAIEV4cG9ydCBjdXJsIHJlcXVlc3RzCgrwn5qAIEV4cG9ydCBbTWVybWFpZEpTXShodHRwczovL21lcm1haWRqcy5naXRodWIuaW8vKSBTZXF1ZW5jZSBkaWFncmFtCgrwn5qAIEV4cG9ydCBbUnVuc2NvcGVdKGh0dHBzOi8vd3d3LnJ1bnNjb3BlLmNvbSkgbW9uaXRvcmluZyB0ZXN0cyBbRGVtb10oaHR0cHM6Ly9kZXNrcmlkZXJzLmRldi9nZW5lcmF0aW5nLXJ1bnNjb3BlLW1vbml0b3JpbmctdGVzdHMvKQoK8J+agCBFeHBvcnQgW09wZW5BcGkgVjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kKSBkb2N1bWVudAoK8J+agCBFeHBvcnQgW1Jlc3RBc3N1cmVkXShodHRwOi8vcmVzdC1hc3N1cmVkLmlvKSBmdW5jdGlvbmFsIHRlc3RzCgoqKkltcG9ydGVycyoqCgrwn5qAIEltcG9ydCBbT3BlbkFwaSBWM10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQpIGRvY3VtZW50Cgrwn5qAIEltcG9ydCBQb3N0bWFuIGNvbGxlY3Rpb25zCgojIyMgRGV2ZWxvcG1lbnQKClJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gc2V0LXVwIHZpcnR1YWwgZW52aXJvbm1lbnQgYW5kIGluc3RhbGwgcHJlLWNvbW1pdCBob29rcwoKYGBgCiQgbWFrZSBpbnN0YWxsCmBgYAoKVGhlbiBgbWFrZSBydW5gIHNob3VsZCBzdGFydHVwIHRoZSBhcHBsaWNhdGlvbi4KCmBgYAokIG1ha2UgcnVuCmBgYAoKWW91IGNhbiBydW4gYG1ha2UgaGVscGAgb3IganVzdCBgbWFrZWAgdG8gZGlzcGxheSBsaXN0IG9mIGF2YWlsYWJsZSBjb21tYW5kcy4K readmeEtag: '"6bdfa73890ee7843e263e4417cd54a05b7ff12a3"' readmeLastModified: Sun, 21 Sep 2025 08:12:39 GMT repositoryId: 196688038 description: Simple and Powerful desktop client for working with JSON APIs created: '2019-07-13T06:41:18Z' updated: '2025-12-20T21:19:51Z' language: Python archived: false stars: 31 watchers: 1 forks: 8 owner: namuan logo: https://avatars.githubusercontent.com/u/575441?v=4 license: MIT repoEtag: '"2d62e63e3d0373f6b9b5e7aa81c06a02b72cd884d1ed20eb30219212a2c542e1"' repoLastModified: Sat, 20 Dec 2025 21:19:51 GMT foundInMaster: true category: SDK id: f0ed41f04fc11f264ffb1b4221371aec - source: openapi3 tags repository: https://github.com/hei-school/hei-admin-api v3: true repositoryMetadata: base64Readme: >- VGhpcyBwcm9qZWN0IGJvdGggc3BlY2lmaWVzIHRoZQpbSEVJIEFkbWluIEFQSV0oaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvLz91cmw9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2hlaS1zY2hvb2wvaGVpLWFkbWluLWFwaS9kZXYvZG9jL2FwaS55bWwpCmFuZCBpbXBsZW1lbnRzIGl0IGluIEphdmEuCgpbUmVsZWFzZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9oZWktc2Nob29sL2hlaS1hZG1pbi1hcGkvcmVsZWFzZXMpIGFyZSBwdWJsaXNoZWQgW2hlcmVdKGh0dHBzOi8vZ2FsbGVyeS5lY3IuYXdzL3E2aTZ5NW80L2hlaS1hZG1pbi1hcGkpIGFzIERvY2tlciBpbWFnZXMuIEZlZWwgZnJlZSB0byB1c2UgdGhlbS4KCldlIHdlbGNvbWUgW2NvbnRyaWJ1dGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9oZWktc2Nob29sL2hlaS1hZG1pbi1hcGkvYmxvYi9kZXYvQ09OVFJJQlVUSU5HLm1kKS4K readmeEtag: '"acfd1751707c93d0284459681d3566f9b375948c"' readmeLastModified: Fri, 16 Aug 2024 08:38:47 GMT repositoryId: 393620909 description: RESTful API for managing a school created: '2021-08-07T08:06:01Z' updated: '2026-02-05T12:35:07Z' language: Java archived: false stars: 30 watchers: 0 forks: 126 owner: hei-school logo: https://avatars.githubusercontent.com/u/88576095?v=4 license: MIT repoEtag: '"a316e0908f5671e125395b77f8b436e70869ebdf30f39136eaa748556fde2dc1"' repoLastModified: Thu, 05 Feb 2026 12:35:07 GMT foundInMaster: true category: Code Generators id: bf98240ea893afa32efc180fb73dd5b6 - source: openapi3 tags repository: https://github.com/outofcoffee/vertx-oas v3: true repositoryMetadata: base64Readme: >- IyB2ZXJ0eC1vYXMKCkdlbmVyYXRlcyBhIFN3YWdnZXIvT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZyb20gYSBWZXJ0LnggV2ViIFJvdXRlci4KCiMjIFVzYWdlCgpBc3N1bWluZyB5b3UncmUgdXNpbmcgVmVydC54IFdlYiwgdXNlIGl0IHdpdGggeW91ciBgUm91dGVyYCBhcyBmb2xsb3dzOgoKYGBgamF2YQovLyB5b3VyIG5vcm1hbCBWZXJ0LnggV2ViIFJvdXRlciB3aXRoIHBhdGhzIGV0Yy4KUm91dGVyIHJvdXRlciA9IFJvdXRlci5yb3V0ZXIodmVydHgpOwpyb3V0ZXIucG9zdCgiL3VzZXJzIikuaGFuZGxlciggcm91dGluZ0NvbnRleHQgLT4geyAvKiBldGMuLi4gKi8gfSk7CnJvdXRlci5nZXQoIi91c2Vycy86dXNlcklkIikuaGFuZGxlciggcm91dGluZ0NvbnRleHQgLT4geyAvKiBldGMuLi4gKi8gfSk7CgovLyBwdWJsaXNoIHRoZSBTd2FnZ2VyL09wZW5BUEkgc3BlY2lmaWNhdGlvbiB0byBhIFVSTApSb3V0ZXJTcGVjR2VuZXJhdG9yLnB1Ymxpc2hBcGlEb2NzKHJvdXRlciwgIi9hcGkvc3BlYyIpOwpgYGAKCkluIHRoaXMgZXhhbXBsZSwgdGhlIHNwZWNpZmljYXRpb24gaXMgcHVibGlzaGVkIHRvIGAvYXBpL3NwZWNgLgoKWW91IGNhbiBvYnRhaW4gWUFNTCBvciBKU09OIHZlcnNpb25zIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGJ5IGFkZGluZyB0aGUgYXBwcm9wcmlhdGUgZmlsZSBleHRlbnNpb24uCgotLS0KCkZvciBleGFtcGxlLCBmZXRjaGluZyBgL2FwaS9zcGVjLnlhbWxgIHdvdWxkIHByb2R1Y2U6CgpgYGB5YW1sCm9wZW5hcGk6ICIzLjAuMSIKaW5mbzoKICB0aXRsZTogIlZlcnQueCBBUElzIgogIGRlc2NyaXB0aW9uOiAiVGhpcyBzcGVjaWZpY2F0aW9uIHdhcyBnZW5lcmF0ZWQgZnJvbSBhIFZlcnQueCBXZWIgUm91dGVyLiIKcGF0aHM6CiAgL3VzZXJzOgogICAgcG9zdDoKICAgICAgcGFyYW1ldGVyczogW10KICAvdXNlcnMve3VzZXJJZH06CiAgICBnZXQ6CiAgICAgIHBhcmFtZXRlcnM6CiAgICAgIC0gbmFtZTogInVzZXJJZCIKICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgIGFsbG93RW1wdHlWYWx1ZTogZmFsc2UKYGBgCgojIyBMaW1pdGF0aW9ucwoKLSBEb2Vzbid0IHVuZGVyc3RhbmQgcmVnZXggcGF0aHMKLSBEb2Vzbid0IGtub3cgdGhlIHR5cGUgb2YgcGF0aCBwYXJhbWV0ZXJzCi0gRG9lc24ndCBrbm93IGFib3V0IHJlcXVlc3Qgb3IgcmVzcG9uc2UgYm9keSBtb2RlbHMKCiMjIFVzZSBpbiB5b3VyIHByb2plY3QKCiMjIyBNYXZlbgoKQWRkIHJlcG9zaXRvcnk6CgpgYGB4bWwKPHByb2plY3Q+Ci4uLgogIDxyZXBvc2l0b3JpZXM+CiAgICA8cmVwb3NpdG9yeT4KICAgICAgPGlkPmdhdGVoaWxsc29mdHdhcmUtc25hcHNob3RzPC9pZD4KICAgICAgPG5hbWU+R2F0ZWhpbGwgU29mdHdhcmUgU25hcHNob3RzPC9uYW1lPgogICAgICA8dXJsPmh0dHBzOi8vczMtZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vZ2F0ZWhpbGxzb2Z0d2FyZS1tYXZlbi9zbmFwc2hvdHM8L3VybD4KICAgIDwvcmVwb3NpdG9yeT4KICAgIDxyZXBvc2l0b3J5PgogICAgICA8aWQ+c29uYXR5cGUtc25hcHNob3RzPC9pZD4KICAgICAgPG5hbWU+U29uYXR5cGUgT1NTIFNuYXBzaG90czwvbmFtZT4KICAgICAgPHVybD5odHRwczovL29zcy5zb25hdHlwZS5vcmcvY29udGVudC9yZXBvc2l0b3JpZXMvc25hcHNob3RzPC91cmw+CiAgICA8L3JlcG9zaXRvcnk+CiAgPC9yZXBvc2l0b3JpZXM+Ci4uLgo8L3Byb2plY3Q+CmBgYAogICAgCkFkZCBkZXBlbmRlbmN5OgoKYGBgeG1sCjxkZXBlbmRlbmNpZXM+CiAgICAuLi4KICAgIDxkZXBlbmRlbmN5PgogICAgICAgIDxncm91cElkPmNvbS5nYXRlaGlsbC52ZXJ0eC1vYXM8L2dyb3VwSWQ+CiAgICAgICAgPGFydGlmYWN0SWQ+dmVydHgtb2FzPC9hcnRpZmFjdElkPgogICAgICAgIDx2ZXJzaW9uPjEuMC4xPC92ZXJzaW9uPgogICAgPC9kZXBlbmRlbmN5PgogICAgLi4uCjwvZGVwZW5kZW5jaWVzPgpgYGAKCiMjIyBHcmFkbGUKCkFkZCByZXBvc2l0b3J5OgoKICAgIHJlcG9zaXRvcmllcyB7CiAgICAgICAgbWF2ZW4gewogICAgICAgICAgICB1cmwgJ2h0dHBzOi8vczMtZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vZ2F0ZWhpbGxzb2Z0d2FyZS1tYXZlbi9zbmFwc2hvdHMnCiAgICAgICAgfQogICAgICAgIG1hdmVuIHsKICAgICAgICAgICAgdXJsICdodHRwczovL29zcy5zb25hdHlwZS5vcmcvY29udGVudC9yZXBvc2l0b3JpZXMvc25hcHNob3RzJwogICAgICAgIH0KICAgIH0KICAgIApBZGQgZGVwZW5kZW5jeToKCiAgICBjb21waWxlICdjb20uZ2F0ZWhpbGwudmVydHgtb2FzOnZlcnR4LW9hczoxLjAuMScgIAoKIyMgQnVpbGQKCklmIHlvdSdkIGxpa2UgdG8gYnVpbGQgdGhlIGNvZGUgbG9jYWxseSwgZm9sbG93IHRoZXNlIGluc3RydWN0aW9ucy4KCiMjIyBQcmVyZXF1aXNpdGVzCgotIEpESzgKCiMjIyBDb21waWxlIGFuZCB0ZXN0CgogICAgLi9ncmFkbGV3IGNsZWFuIGJ1aWxkCgojIyMgUHVibGlzaAoKUHVibGlzaCB0byBsb2NhbCBNYXZlbiByZXBvc2l0b3J5OgoKICAgIC4vZ3JhZGxldyBwdWJsaXNoVG9NYXZlbkxvY2FsCgpQdWJsaXNoIHRvIHJlbW90ZSBNYXZlbiByZXBvc2l0b3J5OgoKICAgIC4vZ3JhZGxldyBwdWJsaXNoCgojIyBDb250cmlidXRpbmcKCiogUHVsbCByZXF1ZXN0cyBhcmUgd2VsY29tZS4KKiBQbGVhc2UgcnVuIGBrdGxpbnRgIG9uIHlvdXIgYnJhbmNoLgoKIyMgQXV0aG9yCgpQZXRlIENvcm5pc2ggKG91dG9mY29mZmVlQGdtYWlsLmNvbSkK readmeEtag: '"c0adb9fa3d4ca39583c24d35776d56936c0cee2a"' readmeLastModified: Sun, 04 Mar 2018 17:57:03 GMT repositoryId: 118284639 description: Generates a Swagger/OpenAPI specification from a Vert.x Web Router. created: '2018-01-20T22:08:13Z' updated: '2025-03-03T08:13:08Z' language: Kotlin archived: false stars: 30 watchers: 5 forks: 4 owner: outofcoffee logo: https://avatars.githubusercontent.com/u/1248633?v=4 repoEtag: '"da23116d879cd0d9fe64dfc8d5cde0c2e240f1609bb96baed9530144d6bc0f51"' repoLastModified: Mon, 03 Mar 2025 08:13:08 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: 0b55bd32d15d8b2237f4f34d7fc0335e - source: openapi3 tags repository: https://github.com/mermade/openapi-extract v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWV4dHJhY3QKCiFbY2ldKGh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL29wZW5hcGktZXh0cmFjdC93b3JrZmxvd3MvY2kvYmFkZ2Uuc3ZnKQoKRXh0cmFjdCBwYXRocywgb3BlcmF0aW9ucywgcGFyYW1ldGVycywgc2NoZW1hcyBldGMgZnJvbSBPcGVuQVBJL1N3YWdnZXIgZGVmaW5pdGlvbnMuCgpXb3JrcyB3aXRoIE9wZW5BUEkvU3dhZ2dlciAyLjAgYW5kIDMueCBkZWZpbml0aW9ucy4KCmBgYApVc2FnZTogb3BlbmFwaS1leHRyYWN0IFtvcHRpb25zXSB7aW5maWxlfSBbe291dGZpbGV9XQoKT3B0aW9uczoKICAtaCwgLS1oZWxwICAgICAgICAgICAgIFNob3cgaGVscCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KICAtLXZlcnNpb24gICAgICAgICAgICAgIFNob3cgdmVyc2lvbiBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KICAtLW9wZW5haSAgICAgICAgICAgICAgIG1ha2UgdGhlIGRlZmluaXRpb24gT3BlbkFJIGNvbXBsaWFudCAgICAgICAgICBbYm9vbGVhbl0KICAtLXNlcnZlciAgICAgICAgICAgICAgIGluY2x1ZGUgc2VydmVyIGluZm9ybWF0aW9uICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KICAtLXNoYXJkICAgICAgICAgICAgICAgIHNoYXJkIHRoZSBpbnB1dCB0byBhbiBvdXRwdXQgZGlyZWN0b3J5ICAgICAgICAgW3N0cmluZ10KICAtcCwgLS1wYXRoICAgICAgICAgICAgIHRoZSBwYXRoIHRvIGV4dHJhY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KICAtbywgLS1vcGVyYXRpb25pZCAgICAgIHRoZSBvcGVyYXRpb25JZHMgdG8gZXh0cmFjdCAgICAgICAgICAgICAgICAgICAgIFthcnJheV0KICAtbSwgLS1tZXRob2QgICAgICAgICAgIHRoZSBtZXRob2QgdG8gZXh0cmFjdCBmb3IgdGhlIGdpdmVuIHBhdGggICAgICAgW3N0cmluZ10KICAtaSwgLS1pbmZvICAgICAgICAgICAgIGNvcHkgZnVsbCBpbmZvIG9iamVjdCwgb3RoZXJ3aXNlIG1pbmltYWwgICAgICBbYm9vbGVhbl0KICAtZCwgLS1yZW1vdmVEb2NzICAgICAgIHJlbW92ZSBhbGwgZXh0ZXJuYWxEb2NzIHByb3BlcnRpZXMgICAgICAgICAgICBbYm9vbGVhbl0KICAtciwgLS1yZW1vdmVFeGFtcGxlcyAgIHJlbW92ZSBhbGwgZXhhbXBsZS9leGFtcGxlcyBwcm9wZXJ0aWVzICAgICAgICBbYm9vbGVhbl0KICAteCwgLS1yZW1vdmVFeHRlbnNpb25zIHJlbW92ZSBhbGwgeC0gZXh0ZW5zaW9uIHByb3BlcnRpZXMgICAgICAgICAgICBbYm9vbGVhbl0KICAtcywgLS1zZWN1cml0eSAgICAgICAgIGluY2x1ZGUgc2VjdXJpdHkgaW5mb3JtYXRpb24gICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KICAtdiwgLS12ZXJib3NlICAgICAgICAgIGluY3JlYXNlIHZlcmJvc2l0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KYGBgCgpvcgoKYGBgamF2YXNjcmlwdApjb25zdCBvcGVuYXBpRXh0cmFjdG9yID0gcmVxdWlyZSgnb3BlbmFwaS1leHRyYWN0Jyk7CmNvbnN0IG9wdGlvbnMgPSB7fTsKLy8gb3B0aW9ucy5wYXRoID0gJy4uLic7Ci8vIG9wdGlvbnMubWV0aG9kID0gJy4uLic7Ci8vIG9wdGlvbnMub3BlcmF0aW9uaWQgPSBbJy4uLiddOwpjb25zdCByZXMgPSBvcGVuYXBpRXh0cmFjdG9yLmV4dHJhY3Qob2JqLCBvcHRpb25zKTsKCmNvbnN0IG1hcCA9IG9wZW5hcGlFeHRyYWN0b3Iuc2hhcmQob2JqLCBvcHRpb25zKTsKYGBgCgpUaGUgYG9wdGlvbnNgIG9iamVjdCB0YWtlcyB0aGUgc2FtZSB2YWx1ZXMgYXMgdGhlIENMSSwgZm9yIHRoZXNlIGtleXMgYW5kIGRlZmF1bHQgdmFsdWVzOgoKKiAgIHBhdGggPSAnJwoqICAgbWV0aG9kID0gJycKKiAgIGluZm8gPSBmYWxzZQoqICAgb3BlbmFpID0gZmFsc2UKKiAgIHJlbW92ZURvY3MgPSBmYWxzZQoqICAgcmVtb3ZlRXhhbXBsZXMgPSBmYWxzZQoqICAgcmVtb3ZlRXh0ZW5zaW9ucyA9IGZhbHNlCiogICBzZXJ2ZXIgPSBmYWxzZQoqICAgc2VjdXJpdHkgPSBmYWxzZQoqICAgb3BlcmF0aW9uaWQgPSBbXQoKIyMgT3BlbkFJIGNvbXBsaWFudCBtb2RlCgpUaGlzIG9wdGlvbiB0dXJucyBvbiB0aGUgZm9sbG93aW5nIHJ1bGVzOgoKMS4gVGhlIGBkZXNjcmlwdGlvbmAgcHJvcGVydGllcyBtdXN0IGhhdmUgYSBtYXhpbXVtIGxlbmd0aCBvZiAzMDAgY2hhcmFjdGVycwo= readmeEtag: '"5f353389f7717a81f71aa1c92d7ed45243239dd2"' readmeLastModified: Thu, 20 Apr 2023 05:29:05 GMT repositoryId: 118493814 description: Extract single paths/operations from OpenAPI definitions created: '2018-01-22T17:56:20Z' updated: '2026-01-06T07:35:58Z' language: JavaScript archived: false stars: 34 watchers: 2 forks: 8 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: BSD-3-Clause repoEtag: '"88cf457ba6d17c7140dd53af6f04db4103e18b247eacf63b67c1edc08fd8733a"' repoLastModified: Tue, 06 Jan 2026 07:35:58 GMT foundInMaster: true category: Parsers id: 8345bfb16b8aa0dc647fa5b2ab90b100 - source: openapi3 tags repository: https://github.com/mrtimofey/vue-admin v3: true repositoryMetadata: base64Readme: >- IyMgV2hhdCBpcyBpdD8KClRoaXMgaXMgdGhlIGxhc3QgcGFja2FnZSB5b3Ugd2lsbCBldmVyIG5lZWQgdG8gYnVpbGQgeW91ciBjdXN0b20gZGFzaGJvYXJkIG9yIGFkbWluaXN0cmF0aXZlIHBhbmVsLiBJdCBpbmNsdWRlczoKKiBBZG1pbkxURSAob25seSBzdHlsZXMpCiogVnVlLmpzIGJhc2VkIHJlYWR5LXRvLXVzZSBvdXQgb2YgdGhlIGJveCBTUEEKKiBTaW1wbGUgYnV0IGZsZXhpYmxlIGN1c3RvbWl6YXRpb24gc3lzdGVtCiogT3BlbkFQSSAzIChmb3JtZXJseSBrbm93biBhcyBTd2FnZ2VyKSBzcGVjaWZpY2F0aW9uIGZvciBhIGNvbXBhdGlibGUgc2VydmVyIEFQSSBpbXBsZW1lbnRhdGlvbgoqIEJpZyB2YXJpZXR5IG9mIGJ1aWx0LWluIGZpZWxkIHR5cGVzCiogQmlnIHZhcmlldHkgb2YgYnVpbHQtaW4gZGF0YSBkaXNwbGF5IGZvcm1hdCB0eXBlcwoqIFR5cGUtc2FmZSBieSBkZXNpZ24KKiBTdWl0YWJsZSBmb3IgYSBmYXN0IHByb3RvdHlwaW5nCgpbRGVtbyB3aXRoIExhcmF2ZWwgNS42IGJhY2tlbmRdKGh0dHA6Ly9hZG1pbi1kZW1vLnNoaXQtZnJlZS5zcGFjZSkKCltEb2N1bWVudGF0aW9uXShodHRwczovL21yLXRpbW9mZXkuZ2l0Ym9va3MuaW8vdnVlLWFkbWluKQoKIyMgSG93IGRvZXMgaXQgd29yaz8KClRoZSBwYWNrYWdlIGNvbnRhaW5zIGFsbCB0aGUgbmVjZXNzYXJ5IGZpbGVzIGZvciBidWlsZCBhbmQgZGV2ZWxvcG1lbnQuIFRoZXJlIGlzIG5vIHByZWJ1aWx0IHZlcnNpb24gc2luY2UKYHZ1ZS1hZG1pbi1mcm9udGAgYWltcyB0byBwcm92aWRlIGEgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgd2hlcmUgeW91IGNhbiBjdXN0b21pemUgYWxtb3N0IGV2ZXJ5dGhpbmcgaW5jbHVkaW5nCmJ1aWxkLXRpbWUgc3R1ZmYuIEJ1dCB5b3UgY2FuIHVzZSB0aGlzIGp1c3QgYXMtaXMgYnkgZXhlY3V0aW5nIGEgYnVpbGQgY29tbWFuZCBkZXNjcmliZWQgYmVsbG93LgoKQWxsIHRoZSB0aGluZ3MgcmVsYXRlZCB0byB5b3VyIHByb2plY3QgZGF0YSBzdHJ1Y3R1cmUgYW5kIGRhdGEgbWFuaXB1bGF0aW9uIGNhcGFiaWxpdGllcyBzaG91bGQgYmUgcHJvdmlkZWQKYnkgeW91ciBiYWNrZW5kIFJFU1QgQVBJIGVuZHBvaW50cwpbZGVzY3JpYmVkIGluIE9wZW5BUEkgMyBmb3JtYXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9tclRpbW9mZXkvdnVlLWFkbWluL2Jsb2IvbWFzdGVyL2RvY3Mvc3dhZ2dlci55bWwpCgojIyBXaGF0IGFib3V0IHNlcnZlciBzb2x1dGlvbnM/CgpPbmx5IFtQSFA3LjEvTGFyYXZlbCBiYXNlZCBzb2x1dGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL21yVGltb2ZleS9sYXJhdmVsLWFkbWluLWFwaSkgZXhpc3RzIGF0IHRoZSBtb21lbnQuCk1ha2luZyBtb3JlIG9mIHRoZW0gd2lsbCBiZSB2ZXJ5IGFwcHJlY2lhdGVkLgpbUmVhZCB0aGUgZG9jc10oaHR0cHM6Ly9tci10aW1vZmV5LmdpdGJvb2tzLmlvL3Z1ZS1hZG1pbi9zZXJ2ZXItYXBpLXByZXJlcXVpc2l0aWVzLmh0bWwpIGZvciBtb3JlIGluZm8uCgojIyBIb3cgdG8gdXNlPwoKSW5zdGFsbDoKYGBgYmFzaApucG0gaSAtUyB2dWUtYWRtaW4tZnJvbnQgY3Jvc3MtZW52IHJpbXJhZiB3ZWJwYWNrLW5hbm8KYGBgCgpBZGQgdGhpcyB0byBwYWNrYWdlLmpzb24gc2NyaXB0czoKYGBganNvbgp7CgkiYWRtaW46ZGV2IjogIm5vZGUgbm9kZV9tb2R1bGVzL3Z1ZS1hZG1pbi1mcm9udC9pbmRleC5qcyIsCgkiYWRtaW46YnVpbGQiOiAicmltcmFmIHB1YmxpYy9hZG1pbi1kaXN0ICYmIGNyb3NzLWVudiBOT0RFX0VOVj1wcm9kdWN0aW9uIHdwIC0tY29uZmlnIG5vZGVfbW9kdWxlcy92dWUtYWRtaW4tZnJvbnQvd2VicGFjay5jb25maWcuanMiCn0KYGBgCgpVc2UgYG5wbSBydW4gYWRtaW46ZGV2YCB0byBzdGFydCBkZXYgc2VydmVyLCBgbnBtIHJ1biBhZG1pbjpidWlsZGAgdG8gbWFrZSBhIHN0YXRpYyBidWlsZCB3aXRoaW4gYHB1YmxpYy9hZG1pbi1kaXN0YCBkaXJlY3RvcnkuCgpNb3JlIGluZm8gW2hlcmVdKGh0dHBzOi8vbXItdGltb2ZleS5naXRib29rcy5pby92dWUtYWRtaW4vcXVpY2stc3RhcnQuaHRtbCkuCg== readmeEtag: '"e61e7c35756e2a6624a0f2f5f6fd4e5cdab04dae"' readmeLastModified: Wed, 07 Oct 2020 08:58:30 GMT repositoryId: 112570086 description: Vue.js based administrative interface created: '2017-11-30T05:46:35Z' updated: '2023-08-18T22:29:38Z' language: Vue archived: false stars: 28 watchers: 2 forks: 4 owner: mrTimofey logo: https://avatars.githubusercontent.com/u/7373909?v=4 license: MIT repoEtag: '"70798c5bfcbd1e15f95f9aeee3da26aedd6f9932def36247b9635f51a60d3758"' repoLastModified: Fri, 18 Aug 2023 22:29:38 GMT foundInMaster: true category: - Documentation - Server Implementations id: 74974a7100769636130f55d931ed814f - source: openapi3 tags repository: https://github.com/redocly/json-to-json-schema v3: true repositoryMetadata: base64Readme: >- IyBqc29uLXRvLWpzb24tc2NoZW1hCgpbIVtucG0gdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZW4ubmV0L25wbS92L0ByZWRvY2x5L2pzb24tdG8tanNvbi1zY2hlbWEpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AcmVkb2NseS9qc29uLXRvLWpzb24tc2NoZW1hKSBbIVtidW5kbGUgc2l6ZV0oaHR0cHM6Ly9iYWRnZW4ubmV0L2J1bmRsZXBob2JpYS9taW4vQHJlZG9jbHkvanNvbi10by1qc29uLXNjaGVtYSldKGh0dHBzOi8vYnVuZGxlcGhvYmlhLmNvbS9wYWNrYWdlL0ByZWRvY2x5L2pzb24tdG8tanNvbi1zY2hlbWEpIFshW2RlcGVuZGVuY3kgc2l6ZV0oaHR0cHM6Ly9iYWRnZW4ubmV0L2J1bmRsZXBob2JpYS9kZXBlbmRlbmN5LWNvdW50L0ByZWRvY2x5L2pzb24tdG8tanNvbi1zY2hlbWEpXShodHRwczovL2J1bmRsZXBob2JpYS5jb20vcGFja2FnZS9AcmVkb2NseS9qc29uLXRvLWpzb24tc2NoZW1hKSBbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi9SZWRvY2x5L2pzb24tdG8tanNvbi1zY2hlbWEvYmFkZ2Uuc3ZnP2JyYW5jaD1tYWluKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL1JlZG9jbHkvanNvbi10by1qc29uLXNjaGVtYT9icmFuY2g9bWFpbikKCkNvbnZlcnQgSlNPTiBleGFtcGxlcyBpbnRvIEpTT04gc2NoZW1hLgoKU3VwcG9ydHMgSlNPTiBTY2hlbWEgYGRyYWZ0LTA1YCB1c2VkIGluIFN3YWdnZXIgMi4wIGFuZCBPcGVuQVBJIDMuMCBhbmQgbmV3IGRyYWZ0IGBkcmFmdC0yMDIwLTEyYCB1c2VkIGluIE9wZW5BUEkgMy4xLgoKIyMgVXNhZ2UKCmBgYGpzCmltcG9ydCB7IGNvbnZlcnQsIGZvcm1hdCB9IGZyb20gJ0ByZWRvY2x5L2pzb24tdG8tanNvbi1zY2hlbWEnOwoKY29uc3QgZXhhbXBsZSA9IHsgZmlyc3RuYW1lOiAnSm9obicsIHN1cm5hbWU6ICdEb2UnLCBiaXJ0aGRheTogJzE5OTAtMDItMjMnIH07Cgpjb25zdCBzY2hlbWEgPSBjb252ZXJ0KGV4YW1wbGUsIHsKICB0YXJnZXQ6ICdkcmFmdC0wNS1vYXMnLCAvLyBvciBkcmFmdC0yMDIwLTEyCiAgaW5jbHVkZUV4YW1wbGVzOiBmYWxzZSwKICBkaXNhYmxlQWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLAogIGluZmVyUmVxdWlyZWQ6IGZhbHNlLAp9KTsKYGBgCgpPdXRwdXQ6CgpgYGB5YW1sCmZpcnN0bmFtZToKICB0eXBlOiBzdHJpbmcKc3VybmFtZToKICB0eXBlOiBzdHJpbmcKYmlydGhkYXk6CiAgdHlwZTogc3RyaW5nCiAgZm9ybWF0OiBkYXRlCmBgYAoKIyMgU2ltaWxhciB0b29scwoKaHR0cHM6Ly9naXRodWIuY29tL21vaHNlbjEvanNvbi10by1qc29uLXNjaGVtYQo= readmeEtag: '"e67a573719c6836f2f476fc15cd6c16a2afe4c2b"' readmeLastModified: Tue, 09 Jul 2024 12:53:52 GMT repositoryId: 470442887 description: >- Convert JSON examples into JSON schema (supports Swagger 2, OpenAPI 3 and 3.1) created: '2022-03-16T05:21:04Z' updated: '2026-01-27T17:29:06Z' language: TypeScript archived: false stars: 31 watchers: 11 forks: 6 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 repoEtag: '"4196ca454760694e7750485a426b1a4a399d2455e280b8d1bd4d95c9fb88463f"' repoLastModified: Tue, 27 Jan 2026 17:29:06 GMT foundInMaster: true category: - Data Validators - Parsers id: b3e82f9d6dce83866b919d7eb14c19bc - source: openapi3 tags repository: https://github.com/aerokube/selenium-openapi v3: true repositoryMetadata: base64Readme: >- IyBTZWxlbml1bSBPcGVuQVBJIFNwZWMKClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyBTZWxlbml1bSBPcGVuQVBJIDMuMCAoZXgtU3dhZ2dlcikgc3BlYy4KCiMjIFVzaW5nIFN3YWdnZXIgRWRpdG9yCgoxKSBMYXVuY2ggU3dhZ2dlciBFZGl0b3IgRG9ja2VyIGNvbnRhaW5lcjoKYGBgCiQgZG9ja2VyIHJ1biAtZCAtLW5hbWUgc3dhZ2dlci1lZGl0b3IgLXAgODA4MDo4MDgwIHN3YWdnZXJhcGkvc3dhZ2dlci1lZGl0b3IKYGBgCgoyKSBPcGVuIGBodHRwOi8vbG9jYWxob3N0OjgwODAvYCBpbiBicm93c2VyLgozKSBDb3B5IGFuZCBwYXN0ZSBgc2VsZW5pdW0ueWFtbGAgY29udGVudHMgdG8gZWRpdG9yLgo= readmeEtag: '"56432a639227e29ac74f08e20891709988efc3f6"' readmeLastModified: Sat, 03 Sep 2022 17:21:07 GMT repositoryId: 185360868 description: The missing Selenium OpenAPI spec created: '2019-05-07T08:50:02Z' updated: '2023-01-29T06:21:22Z' language: Shell archived: false stars: 27 watchers: 3 forks: 9 owner: aerokube logo: https://avatars.githubusercontent.com/u/26328913?v=4 license: Apache-2.0 repoEtag: '"19e2bfd15e8f4f4a96bbaf2da874672cdf53c1179eac5b8eb6706e96061dc475"' repoLastModified: Sun, 29 Jan 2023 06:21:22 GMT foundInMaster: true category: - Code Generators - Server Implementations id: f034b9fb8c5913474475f9f688e93960 - source: openapi3 tags repository: https://github.com/mockoon/mock-samples v3: true repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL21vY2tvb24uY29tIiBhbHQ9Im1vY2tvb24gbG9nbyI+CiAgICA8aW1nIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiBzcmM9Imh0dHBzOi8vbW9ja29vbi5jb20vaW1hZ2VzL2xvZ28tc3F1YXJlLXdlYnNpdGUucG5nIj4KICA8L2E+CiAgPGJyPgogIDxhIGhyZWY9Imh0dHBzOi8vbW9ja29vbi5jb20vZG93bmxvYWQvIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9Eb3dubG9hZCUyMGFwcC1Hby1ncmVlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmY29sb3JCPTE5OTdjNiIvPjwvYT4KICA8YSBocmVmPSJodHRwczovL21vY2tvb24uY29tLyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvV2Vic2l0ZS1Hby1ncmVlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmY29sb3JCPTE5OTdjNiIvPjwvYT4KICA8YSBocmVmPSJodHRwczovL21vY2tvb24uY29tL25ld3NsZXR0ZXIvIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9OZXdzbGV0dGVyLVN1YnNjcmliZS1ncmVlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUiLz48L2E+CiAgPGJyPgogIDxicj4KICA8aDE+TW9ja29vbidzIG1vY2sgc2FtcGxlczwvaDE+CjwvZGl2PgoKV2VsY29tZSB0byBNb2Nrb29uJ3MgbW9jayBBUEkgc2FtcGxlcyByZXBvc2l0b3J5LiBZb3Ugd2lsbCBmaW5kIGluIHRoZSBbYGFwaXNgXSgvbW9jay1hcGlzKSBmb2xkZXIgbWFueSBtb2NrIHNhbXBsZXMgZnJvbSBwb3B1bGFyIEFQSXMgKE9wZW4gV2VhdGhlciwgR2lwaHksIGV0Yy4pLiBXZSB3aWxsIGJlIGFkZGluZyBtb3JlIHNhbXBsZXMgZnJvbSB0aW1lIHRvIHRpbWUuCgpZb3Ugd2lsbCBmaW5kIHRoZSBmdWxsIGxpc3Qgb2Ygc2FtcGxlIG1vY2sgQVBJcyBvbiBvdXIgd2Vic2l0ZSB0b286IGh0dHBzOi8vbW9ja29vbi5jb20vbW9jay1zYW1wbGVzLwoKLS0tCgojIyBIb3cgdG8gb3BlbiB0aGUgc2FtcGxlcyBpbiBNb2Nrb29uCgpUbyBvcGVuIHRoZSBzYW1wbGVzIGluIE1vY2tvb24gYXBwbGljYXRpb24sIHlvdSBoYXZlIHR3byBwb3NzaWJpbGl0aWVzOgoKMS4gRG93bmxvYWQgdGhlIHNhbXBsZSBKU09OIGZpbGUgYW5kIGNsaWNrIG9uIHRoZSBvcGVuIGJ1dHRvbjoKCiAgICFbb3BlbiBlbnZpcm9ubWVudF0oL2RvY3Mvb3Blbi1lbnZpcm9ubWVudC5wbmcpCgoxLiBDb3B5IHRoZSBzYW1wbGUgZmlsZSBjb250ZW50IGZyb20gdGhpcyByZXBvc2l0b3J5IHRvIHRoZSBjbGlwYm9hcmQgYW5kIG9wZW4gdGhlIGBGaWxlYCBtZW51IGFuZCBjaG9vc2UgYE5ldyBlbnZpcm9ubWVudCBmcm9tIGNsaXBib2FyZGA6CgogICAhW25ldyBlbnZpcm9ubWVudCBmcm9tIGNsaXBib2FyZF0oL2RvY3MvbmV3LWVudmlyb25tZW50LWZyb20tY2xpcGJvYXJkLnBuZykKCkluIGJvdGggY2FzZXMsIGEgbmV3IGVudmlyb25tZW50IHdpbGwgYmUgY3JlYXRlZCBhbmQgcmVhZHkgdG8gdXNlIGFmdGVyIHJ1bm5pbmcgaXQgYnkgcHJlc3NpbmcgdGhlIGdyZWVuICJwbGF5IiBidXR0b24uCgohW1J1biB0aGUgbW9jayBBUEldKC9kb2NzL3J1bi1hcGkucG5nKQoKIyMgSG93IHRvIHVzZSB0aGUgc2FtcGxlcyB3aXRoIE1vY2tvb24gQ0xJCgpUbyBydW4gdGhlIG1vY2sgc2FtcGxlcyB3aXRoIHRoZSBbQ0xJXShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi9jbGkpIHlvdSBjYW4gZGlyYWN0bHkgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB1c2luZyB0aGUgc2FtcGxlIHJhdyBmaWxlIEdpdEh1YiBVUkw6CgpgbW9ja29vbi1jbGkgc3RhcnQgLS1kYXRhIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9tb2Nrb29uL21vY2stc2FtcGxlcy9tYWluL21vY2stYXBpcy9kYXRhL2dpcGh5Y29tLmpzb25gCgojIyBTdXBwb3J0L2ZlZWRiYWNrCgpZb3UgY2FuIGRpc2N1c3MgYWxsIHRoaW5ncyByZWxhdGVkIHRvIE1vY2tvb24sIGFuZCBhc2sgZm9yIGhlbHAsIG9uIHRoZSBbb2ZmaWNpYWwgY29tbXVuaXR5XShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi9tb2Nrb29uL2Rpc2N1c3Npb25zKS4gSXQncyBhbHNvIGEgZ29vZCBwbGFjZSB0byBkaXNjdXNzIGJ1Z3MgYW5kIGZlYXR1cmUgcmVxdWVzdHMgYmVmb3JlIG9wZW5pbmcgYW4gaXNzdWUgb24gdGhpcyByZXBvc2l0b3J5LgoKIyMgQ29udHJpYnV0aW5nCgpJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gY29udHJpYnV0aW5nIHRvIE1vY2tvb24gd2Vic2l0ZSBhbmQgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHRha2UgYSBsb29rIGF0IHRoZSBbY29udHJpYnV0aW5nIGd1aWRlbGluZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL21vY2tvb24uY29tL2Jsb2IvbWFpbi9DT05UUklCVVRJTkcubWQpLgoKUGxlYXNlIGFsc28gdGFrZSBhIGxvb2sgYXQgb3VyIFtDb2RlIG9mIENvbmR1Y3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uLy5naXRodWIvYmxvYi9tYWluL0NPREVfT0ZfQ09ORFVDVC5tZCkuCgojIyBEb2N1bWVudGF0aW9uCgpZb3Ugd2lsbCBmaW5kIE1vY2tvb24ncyBbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9tb2Nrb29uLmNvbS9kb2NzL2xhdGVzdC8pIG9uIHRoZSBvZmZpY2lhbCB3ZWJzaXRlLiBJdCBjb3ZlcnMgTW9ja29vbidzIG1vc3QgY29tcGxleCBmZWF0dXJlcy4gRmVlbCBmcmVlIHRvIGNvbnRyaWJ1dGUgb3IgYXNrIGZvciBuZXcgdG9waWNzIHRvIGJlIGNvdmVyZWQuCgojIyBSb2FkbWFwCgpJZiB5b3Ugd2FudCB0byBrbm93IHdoYXQgd2lsbCBiZSBjb21pbmcgaW4gdGhlIG5leHQgcmVsZWFzZSB5b3UgY2FuIGNoZWNrIHRoZSBnbG9iYWwgW1JvYWRtYXBdKGh0dHBzOi8vbW9ja29vbi5jb20vcHVibGljLXJvYWRtYXAvKSBvciBbc3Vic2NyaWJlIHRvIG91ciBuZXdzbGV0dGVyXShodHRwczovL21vY2tvb24uY29tL25ld3NsZXR0ZXIvKS4K readmeEtag: '"8ed035cd01844de1f302bbb2a131cbbd51791b33"' readmeLastModified: Mon, 29 Sep 2025 14:56:39 GMT repositoryId: 310602836 description: 'Start using Mockoon in no time with popular APIs mock samples. ' created: '2020-11-06T13:20:14Z' updated: '2026-01-07T08:12:51Z' language: TypeScript archived: false stars: 33 watchers: 2 forks: 23 owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: MIT repoEtag: '"85253cadab0ebe35459c4303917fedb0eb67b60d129f964379cfb0340b1969b5"' repoLastModified: Wed, 07 Jan 2026 08:12:51 GMT foundInMaster: true category: - Documentation - Testing id: af9630261912faa3f1476d3277e03d2a - source: openapi3 tags repository: https://github.com/rafaelcaricio/sticker v3: true repositoryMetadata: base64Readme: >- Li4gaW1hZ2U6OiBodHRwczovL2dpdGh1Yi5jb20vcmFmYWVsY2FyaWNpby9zdGlja2VyL3Jhdy9tYXN0ZXIvZG9jcy9pbWFnZXMvc3RpY2tlcl9sb2dvLnBuZwogICAgOmFsaWduOiBjZW50ZXIKICAgIDphbHQ6IFN0aWNrZXIKICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9yYWZhZWxjYXJpY2lvL3N0aWNrZXIKCnwKCi4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvc3RpY2tlci5zdmcKICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc3RpY2tlcgoKLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvbC9zdGlja2VyLnN2ZwogICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zdGlja2VyCgouLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL3N0aWNrZXIuc3ZnCiAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3N0aWNrZXIKCi4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvY29udHJpYnV0b3JzL3JhZmFlbGNhcmljaW8vc3RpY2tlci5zdmcKICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9yYWZhZWxjYXJpY2lvL3N0aWNrZXIvZ3JhcGhzL2NvbnRyaWJ1dG9ycwoKV3JpdGUgYm9pbGVycGxhdGUtZnJlZSBQeXRob24gZnVuY3Rpb25zIGFuZCB1c2UgdGhlbSBhcyB5b3VyIEFQSSBoYW5kbGVycy4KU3RpY2tlciBhbGxvd3MgeW91IHRvIGNob29zZSBGbGFzaywgYm90dGxlLnB5LCBTYW5pYywgb3IgVG9ybmFkbyBhcyB5b3VyCmFwcGxpY2F0aW9uIHJ1bnRpbWUuCgoqKkhpZ2hsaWdodHMqKjoKCiogQ29tbXVuaXR5IGNyZWF0ZWQgYW5kIG1haW50YWluZWQKKiBTdXBwb3J0IGZvciBgT3BlbkFQSSAzLjAgPGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLz5gXwoqIE11bHRpLWZyYW1ld29yayBzdXBwb3J0OiBgRmxhc2sgPGh0dHA6Ly9mbGFzay5wb2Nvby5vcmcvPmBfLCBgYm90dGxlLnB5IDxodHRwczovL2dpdGh1Yi5jb20vYm90dGxlcHkvYm90dGxlPmBfLCBgU2FuaWMgPGh0dHBzOi8vZ2l0aHViLmNvbS9jaGFubmVsY2F0L3NhbmljPmBfLCBhbmQgYFRvcm5hZG8gPGh0dHA6Ly93d3cudG9ybmFkb3dlYi5vcmcvZW4vc3RhYmxlLz5gXwoqIFN1cHBvcnQgZm9yICoqcHVyZSBQeXRob24gaGFuZGxlcnMqKiAobm8gYm9pbGVycGxhdGUgY29kZSkKCkl0J3MgRWFzeSB0byBXcml0ZQo9PT09PT09PT09PT09PT09PT0KCllvdSBuZWVkIGEgbGl0dGxlIGJpdCBvZiBQeXRob24uCgouLiBjb2RlLWJsb2NrOjogcHl0aG9uCgogICAgZGVmIHNheV9oZWxsbyhwYXJhbXMpOgogICAgICAgIHJldHVybiB7ImNvbnRlbnRzIjogIkhlbGxvIFdvcmxkISJ9CgpQbHVzIGJpdHMgb2YgeW91ciBBUEkgZGVzY3JpcHRpb24uCgouLiBjb2RlLWJsb2NrOjogWUFNTAoKICAgIG9wZW5hcGk6ICIzLjAuMCIKICAgIHBhdGhzOgogICAgICAvOgogICAgICAgIGdldDoKICAgICAgICAgIG9wZXJhdGlvbklkOiBoZWxsby5zYXlfaGVsbG8KCk5vdyB0aGUgZnVuIHBhcnQsIHlvdSBjaG9vc2Ugd2hpY2ggd2ViIGZyYW1ld29yayB5b3Ugd2FudCB0byB1c2UuCgpSdW4gd2l0aCBGbGFzazoKCi4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICBmcm9tIHN0aWNrZXIgaW1wb3J0IEZsYXNrQVBJCiAgICBhcGkgPSBGbGFza0FQSSgnaGVsbG8ueW1sJykKICAgIGFwaS5nZXRfYXBwKF9fbmFtZV9fKS5ydW4oKQoKUnVuIHdpdGggQm90dGxlLnB5OgoKLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgIGZyb20gc3RpY2tlciBpbXBvcnQgQm90dGxlQVBJCiAgICBhcGkgPSBCb3R0bGVBUEkoJ2hlbGxvLnltbCcpCiAgICBhcGkucnVuKCkKClJ1biB3aXRoIFNhbmljOgoKLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgIGZyb20gc3RpY2tlciBpbXBvcnQgU2FuaWNBUEkKICAgIGFwaSA9IFNhbmljQVBJKCdoZWxsby55bWwnKQogICAgYXBpLmdldF9hcHAoX19uYW1lX18pLnJ1bigpCgpSdW4gd2l0aCBUb3JuYWRvOgoKLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgIGZyb20gc3RpY2tlciBpbXBvcnQgVG9ybmFkb0FQSQogICAgaW1wb3J0IHRvcm5hZG8uaW9sb29wCiAgICBhcGkgPSBUb3JuYWRvQVBJKCdoZWxsby55bWwnKQogICAgYXBpLmdldF9hcHAoKS5saXN0ZW4oODg4OCkKICAgIHRvcm5hZG8uaW9sb29wLklPTG9vcC5jdXJyZW50KCkuc3RhcnQoKQoKVGhlIGZyYW1ld29yayBzZXR1cCwgdmFsaWRhdGlvbiwgdHlwZXMgY29udmVyc2lvbiwgYW5kIG1vY2tpbmcgaXMgaGFuZGxlZCBhdCBydW50aW1lIGJ5IFN0aWNrZXIuCgrinKgKCkluc3RhbGxhdGlvbgo9PT09PT09PT09PT0KClN0aWNrZXIgaXMgcHVibGlzaGVkIGF0IFB5UEksIHNvIHlvdSBjYW4gdXNlIGBgcGlwYGAgdG8gaW5zdGFsbDoKCi4uIGNvZGUtYmxvY2s6OiBiYXNoCgogICAgJCBwaXAgaW5zdGFsbCBzdGlja2VyCgpSZXF1aXJlbWVudHMKPT09PT09PT09PT09CgpTdGlja2VyIHdhcyBkZXZlbG9wZWQgZm9yICoqUHl0aG9uID49My42KiogYW5kICoqT3BlbkFQSSAzLjAqKi4gU3VwcG9ydCBmb3IgUHl0aG9uIDIuNyBpcyBub3QgcHJlc2VudCBub3IgcGxhbm5lZCBmb3IgdGhpcyBwcm9qZWN0LgoKRG9jdW1lbnRhdGlvbgo9PT09PT09PT09PT09CgpTdGlja2VyIGlzIGEgZmxleGlibGUgbWV0YWZyYW1ld29yayBmb3IgV2ViIEFQSSBkZXZlbG9wbWVudCBhbmQgZXhlY3V0aW9uLiBUaGUgT3BlbkFQSSAzLjAgc3RhbmRhcmQgaXMgdXNlZCBhcwpkZXNjcmlwdGlvbiBmb3JtYXQgZm9yIFN0aWNrZXIgcG93ZXJlZCBBUElzLiBZb3UgcHJvdmlkZSB0aGUgQVBJIHNwZWNpZmljYXRpb24gYW5kIGNob29zZSBvbmUgb2YgdGhlClN0aWNrZXIncyBydW50aW1lcyB0byBoYXZlIGEgd2Vic2VydmVyIHVwIGFuZCBydW5uaW5nLgoKSW4gdGhpcyBkb2N1bWVudCB3ZSB3aWxsIGRlc2NyaWJlIGEgZmV3IGRpZmZlcmVudCB3YXlzIHRvIHdyaXRlIGNvZGUgdGhhdCB3b3JrcyB3ZWxsIHdpdGggU3RpY2tlci4KClB1cmUgUHl0aG9uIEhhbmRsZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgpTdGlja2VyIHN1cHBvcnRzIHRoZSB1c2Ugb2YgcHVyZSBQeXRob24gZnVuY3Rpb25zIGFzIGhhbmRsZXJzLiBZb3VyIGNvZGUgd2lsbCBiZSBmcmVlIG9mIGFueSBmcmFtZXdvcmsKc3BlY2lmaWMgYm9pbGVycGxhdGUgY29kZSwgaW5jbHVkaW5nIFN0aWNrZXIncyBpdHNlbGYuIFRoaXMgYWxsb3dzIHlvdSB0byBzd2FwIGJldHdlZW4gZGlmZmVyZW50IGZyYW1ld29ya3MKYXMgeW91IHdpc2guIFN0aWNrZXIgd2lsbCB0YWtlIGNhcmUgb2YgcHV0dGluZyB0b2dldGhlciB5b3VyIGNvZGUsIHlvdXIgQVBJLCBhbmQgdGhlIGZyYW1ld29yayB5b3UgY2hvb3NlLgoKLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgIGRlZiBteWhhbmRsZXIocGFyYW1zKToKICAgICAgICByZXR1cm4gewogICAgICAgICAgICAiY29udGVudCI6IGYiSGVsbG8ge3BhcmFtcy5nZXQoIm5hbWUiLCAiV29ybGQiKX0hIiwKICAgICAgICAgICAgInN0YXR1cyI6IDIwMAogICAgICAgIH0KCldyaXRpbmcgdGVzdHMgZm9yIHB1cmUgUHl0aG9uIGhhbmRsZXMgaXMgZWFzeSBhbmQgYWxzbwpmcmVlIG9mIGJvaWxlcnBsYXRlIGNvZGUuCgouLiBjb2RlLWJsb2NrOjogcHl0aG9uCgogICAgZGVmIHRlc3RfbXloYW5kbGVyKCk6CiAgICAgICAgcGFyYW1zID0gewogICAgICAgICAgICAibmFtZSI6ICJKb2huIERvZSIKICAgICAgICB9CiAgICAgICAgcmVzcG9uc2UgPSBteWhhbmRsZXIocGFyYW1zKQogICAgICAgIGFzc2VydCByZXNwb25zZVsiY29udGVudCJdID09ICJIZWxsbyBKb2huIERvZSEiCgpBcyB5b3UgY291bGQgc2VlIGluIHRoZSBleGFtcGxlIGFib3ZlLCBubyBpbXBvcnRzIGZyb20gU3RpY2tlciB3ZXJlIG5lY2Vzc2FyeSB0byBkZWZpbmUgdGhlIEFQSSBoYW5kbGVyIGZ1bmN0aW9uLgpUaGlzIGlzIG9ubHkgcG9zc2libGUgYmVjYXVzZSBTdGlja2VyIGV4cGVjdHMgeW91ciBoYW5kbGVycyB0byBmb2xsb3cgYSBjb2RlIGNvbnZlbnRpb24uCgpBbmF0b215IE9mIEFuIEFQSSBIYW5kbGVyIEZ1bmN0aW9uCl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KCldyaXRlIHRoaXMgcGFydC4KClJlc3BvbnNlcwpeXl5eXl5eXl4KCkFQSSBoYW5kbGVycyBhcmUgZXhwZWN0ZWQgdG8gcmV0dXJuIGEgUHl0aG9uIGRpY3Rpb25hcnkgKGBgZGljdGBgKSBvYmplY3QuIFRoZSByZXR1cm5lZCBkaWN0aW9uYXJ5IGRlZmluZXMgaG93IGEgcmVzcG9uc2UKd2lsbCBsb29rIGxpa2UuIEFsbCBrZXlzIGluIHRoZSBkaWN0aW9uYXJ5IGFyZSBvcHRpb25hbC4gVGhlIGV4cGVjdGVkIGtleXMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgdGFibGUgYmVsbG93LgoKPT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09CktleSAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbgo9PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT0KY29udGVudCAgICAgc3RyICAgICAgICAgICAgICAgICAgICAgIEJvZHkgb2YgSFRUUCByZXF1ZXN0LiBObyB0cmVhdG1lbnQvcGFyc2luZyBvZiB0aGlzIHZhbHVlIGlzIGRvbmUuIFRoZSB2YWx1ZSBpcyBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGNob3NlbiBmcmFtZXdvcmsuCmpzb24gICAgICAgIFVuaW9uW2RpY3QsIExpc3RbZGljdF1dICBKU09OIHZhbHVlIHRvIGJlIHVzZWQgaW4gdGhlIGJvZHkgb2YgdGhlIHJlcXVlc3QuIFRoaXMgaXMgYSBzaG9ydGN1dCB0byBoYXZpbmcgdGhlIGhlYWRlciAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiBhbmQgc2VyaWFsaXppbmcgdGhpcyB2YWx1ZSB1c2luZyB0aGUgbW9zdCBjb21tb24gd2F5IGRvbmUgYnkgdGhlIGNob3NlbiBmcmFtZXdvcmsuCmZpbGUgICAgICAgIFVuaW9uW0lPW0FueVN0cl0sIHN0cl0gICBEYXRhIHRvIGJlIHJldHVybmVkIGFzIGJ5dGUgc3RyZWFtLiBUaGlzIGlzIGEgc2hvcnRjdXQgZm9yIGhhdmluZyB0aGUgaGVhZGVyICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIuIFVzZXMgdGhlIG1vc3QgY29tbW9uIHdheSB0byBzdHJlYW0gZmlsZXMgd2l0aCB0aGUgY2hvc2VuIGZyYW1ld29yay4KcmVkaXJlY3QgICAgc3RyICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYXRoIG9yIGZ1bGwgVVJMIHRvIGJlIHJlZGlyZWN0ZWQuIFRoaXMgaXMgYSBzaG9ydGN1dCBmb3IgaGF2aW5nIHRoZSBoZWFkZXIgIkxvY2F0aW9uOiIgd2l0aCBIVFRQIHN0YXR1cyBgMzAxYC4Kc3RhdHVzICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgIFRoZSBIVFRQIHN0YXR1cyBjb2RlIHRvIGJlIHVzZWQgaW4gdGhlIHJlc3BvbnNlLiBUaGlzIHZhbHVlIG92ZXJyaWRlcyBhbnkgc2hvcnRjdXQgZGVmYXVsdCBzdGF0dXMgY29kZS4KaGVhZGVycyAgICAgRGljdFtzdHIsIHN0cl0gICAgICAgICAgIFRoZSBIVFRQIGhlYWRlcnMgdG8gYmUgdXNlZCBpbiB0aGUgcmVzcG9uc2UuIFRoaXMgdmFsdWUgaXMgbWVyZ2VkIHdpdGggdGhlIHNob3J0Y3V0IHZhbHVlcyB3aXRoIHByaW9yaXR5Lgo9PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT0KCgpXZSBoYXZlIGV4cG9zZWQgaGVyZSBzb21lIGV4YW1wbGVzIG9mIHVzaW5nIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBvZiB0aGUgYGBkaWN0YGAgd2UndmUgZGVmaW5lZCBhYm92ZSB0byBkZXNjcmliZSB0aGUKSFRUUCByZXNwb25zZSBvZiBBUEkgaGFuZGxlcnMuIFRoZSBhY3R1YWwgSFRUUCByZXNwb25zZSB2YWx1ZSBnZW5lcmF0ZWQgd2lsbCB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgZnJhbWV3b3JrIGNob3NlbiBhcwpydW50aW1lLiBUaGUgZXhhbXBsZXMgYXJlIGEgbWluaW1hbCBpbGx1c3RyYXRpb24gb2Ygd2hhdCB0byBleHBlY3QgdG8gYmUgdGhlIEhUVFAgcmVzcG9uc2UuCgpUaGUgImNvbnRlbnQiIGtleSBjYW4gYmUgdXNlZCB3aGVuIGl0J3MgZGVzaXJlZCB0byByZXR1cm4gYSAiSGVsbG8gd29ybGQhIiBzdHJpbmcgd2l0aCBzdGF0dXMgYGAyMDBgYC4KCi4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICBkZWYgc2F5X2hlbGxvKHBhcmFtcyk6CiAgICAgICAgcmV0dXJuIHsiY29udGVudCI6ICJIZWxsbyB3b3JsZCEifQoKUmVzdWx0cyBpbiB0aGUgSFRUUCByZXNwb25zZSBzaW1pbGFyIHRvOgoKLi4gY29kZS1ibG9jazo6CgogICAgSFRUUC8xLjEgMjAwIE9LCiAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW4KCiAgICBIZWxsbyB3b3JsZCEKClRoZSAianNvbiIga2V5IGNhbiBiZSB1c2VkIHdoZW4gZGVzaXJlZCB0byByZXR1cm4gYW4gSlNPTiByZXNwb25zZSB3aXRoIHN0YXR1cyBgYDIwMWBgLgoKLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgIGRlZiBjcmVhdGUocGFyYW1zKToKICAgICAgICBkYXRhID0gewogICAgICAgICAgICAiaWQiOiAidWhIdWVodUUiLAogICAgICAgICAgICAidmFsdWUiOiAic29tZXRoaW5nIgogICAgICAgIH0KICAgICAgICByZXR1cm4geyJqc29uIjogZGF0YSwgInN0YXR1cyI6IDIwMX0KClRoZSBIVFRQIHJlc3BvbnNlIGdlbmVyYXRlZCB3aWxsIGJlIHNpbWlsYXIgdG86CgouLiBjb2RlLWJsb2NrOjoKCiAgICBIVFRQLzEuMSAyMDEgQ3JlYXRlZAogICAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uCgogICAgeyJpZCI6InVoSHVlaHVFIiwidmFsdWUiOiJzb21ldGhpbmcifQoKVGhlICJmaWxlIiBrZXkgaXMgdXNlZCB0byByZXR1cm4gZmlsZSBjb250ZW50cy4KCi4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICBkZWYgaG9tZXBhZ2UocGFyYW1zKToKICAgICAgICByZXR1cm4gewogICAgICAgICAgICAiZmlsZSI6IG9wZW4oJ3RlbXBsYXRlcy9ob21lLmh0bWwnLCAncicpLAogICAgICAgICAgICAiaGVhZGVycyI6IHsKICAgICAgICAgICAgICAgICJDb250ZW50LVR5cGUiOiAidGV4dC9odG1sIgogICAgICAgICAgICB9CiAgICAgICAgfQoKVGhlIEhUVFAgcmVzcG9uc2Ugd2lsbCBiZSBzaW1pbGFyIHRvOgoKLi4gY29kZS1ibG9jazo6CgogICAgSFRUUC8xLjEgMjAwIE9LCiAgICBDb250ZW50LVR5cGU6IHRleHQvaHRtbAoKICAgIDxodG1sPjx0aXRsZT5NeSBob21lcGFnZTwvdGl0bGU+PGJvZHk+PGgxPldlbGNvbWUhPC9oMT48L2JvZHk+PC9odG1sPgoKV2hlbiBuZWNlc3NhcnkgdG8gcmVkaXJlY3QgcmVxdWVzdCwgdGhlICJyZWRpcmVjdCIga2V5IGNhbiBiZSB1c2VkLgoKLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgIGRlZiBvbGRfZW5kcG9pbnQocGFyYW1zKToKICAgICAgICByZXR1cm4geydyZWRpcmVjdCc6ICcvbmV3LXBhdGgnfQoKVGhlIEhUVFAgcmVzcG9uc2Ugd2lsbCBiZSBzaW1pbGFyIHRvOgoKLi4gY29kZS1ibG9jazo6CgogICAgSFRUUC8xLjEgMzAxIE1vdmVkIFBlcm1hbmVudGx5CiAgICBMb2NhdGlvbjogaHR0cHM6Ly9leGFtcGxlLmNvbS9uZXctcGF0aAoKVGhlIHVzYWdlIG9mIGtleXMgInN0YXR1cyIgYW5kICJoZWFkZXJzIiB3ZXJlIHNob3duIGluIHRoZSBwcmV2aW91cyBleGFtcGxlcy4gVGhlICJzdGF0dXMiIGFuZCAiaGVhZGVycyIga2V5cywgd2hlbiBzZXQsCm92ZXJyaWRlIHRoZSB2YWx1ZXMgc2V0IGJ5IGRlZmF1bHQgd2hlbiB1c2luZyB0aGUgc2hvcnRjdXQga2V5cyAoImpzb24iLCAiZmlsZSIsIGFuZCAicmVkaXJlY3QiKS4KCkVycm9yIEhhbmRsaW5nCi0tLS0tLS0tLS0tLS0tCgpTdGlja2VyIGV4cGVjdHMgeW91IHRvIGRlZmluZSB0aGUgZXJyb3IgZm9ybWF0IHRvIGJlIHJldHVybmVkIGJ5IHlvdXIgQVBJLiBBIGVycm9yIGhhbmRsZXIgaXMgY29uZmlndXJhYmxlLAphbmQgY2FsbGVkIGV2ZXJ5IHRpbWUgdmFsaWRhdGlvbiBmb3IgdGhlIGVuZHBvaW50IGZhaWxzLgoKLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgIGRlZiBlcnJvcl9oYW5kbGVyKGVycm9yKToKICAgICAgICByZXR1cm4gewogICAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgICAgICJlcnJvciI6IGVycm9yWyJtZXNzYWdlIl0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImhlYWRlcnMiOiB7CiAgICAgICAgICAgICAgICAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL2pzb24iCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdGF0dXNfY29kZSI6IDQwMAogICAgICAgIH0KCkRldmVsb3BpbmcKPT09PT09PT09PQoKV2UgZm9sbG93IGBTZW1hbnRpYyBWZXJzaW9uaW5nIDxodHRwczovL3NlbXZlci5vcmcvc3BlYy92Mi4wLjAuaHRtbD5gXy4KCkNvbnRyaWJ1dGluZwo9PT09PT09PT09PT0KClN0aWNrZXIgaXMgZGV2ZWxvcGVkIHVuZGVyIHRoZSBgQXBhY2hlIDIuMCBsaWNlbnNlIDxodHRwczovL2dpdGh1Yi5jb20vcmFmYWVsY2FyaWNpby9zdGlja2VyL2Jsb2IvbWFzdGVyL0xJQ0VOU0U+YF8KYW5kIGlzIHB1YmxpY2x5IGF2YWlsYWJsZSB0byBldmVyeW9uZS4gV2UgYXJlIGhhcHB5IHRvIGFjY2VwdCBjb250cmlidXRpb25zLgoKSG93IHRvIENvbnRyaWJ1dGUKLS0tLS0tLS0tLS0tLS0tLS0KCiMuIENoZWNrIGZvciBvcGVuIGlzc3VlcyBvciBvcGVuIGEgZnJlc2ggaXNzdWUgdG8gc3RhcnQgYSBkaXNjdXNzaW9uIGFyb3VuZCBhIGZlYXR1cmUgaWRlYSBvciBhIGJ1Zy4gVGhlcmUgaXMgYSBgR29vZCBGaXJzdCBJc3N1ZWBfIHRhZyBmb3IgaXNzdWVzIHRoYXQgc2hvdWxkIGJlIGlkZWFsIGZvciBwZW9wbGUgd2hvIGFyZSBub3QgdmVyeSBmYW1pbGlhciB3aXRoIHRoZSBjb2RlYmFzZSB5ZXQuCiMuIEZvcmsgYHRoZSByZXBvc2l0b3J5YF8gb24gR2l0SHViIHRvIHN0YXJ0IG1ha2luZyB5b3VyIGNoYW5nZXMgdG8gdGhlICoqbWFzdGVyKiogYnJhbmNoIChvciBicmFuY2ggb2ZmIG9mIGl0KS4KIy4gV3JpdGUgYSB0ZXN0IHdoaWNoIHNob3dzIHRoYXQgdGhlIGJ1ZyB3YXMgZml4ZWQgb3IgdGhhdCB0aGUgZmVhdHVyZSB3b3JrcyBhcyBleHBlY3RlZC4KIy4gU2VuZCBhIHB1bGwgcmVxdWVzdCBhbmQgYnVnIHRoZSBtYWludGFpbmVyIHVudGlsIGl0IGdldHMgbWVyZ2VkIGFuZCBwdWJsaXNoZWQuIDopIE1ha2Ugc3VyZSB0byBhZGQgeW91cnNlbGYgdG8gQVVUSE9SU18uCgouLiBfYHRoZSByZXBvc2l0b3J5YDogaHR0cHM6Ly9naXRodWIuY29tL3JhZmFlbGNhcmljaW8vc3RpY2tlcgouLiBfQVVUSE9SUzogaHR0cHM6Ly9naXRodWIuY29tL3JhZmFlbGNhcmljaW8vc3RpY2tlci9ibG9iL21hc3Rlci9BVVRIT1JTLnJzdAouLiBfR29vZCBGaXJzdCBJc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL3JhZmFlbGNhcmljaW8vc3RpY2tlci9pc3N1ZXM/cT1pcyUzQWlzc3VlK2lzJTNBb3BlbitsYWJlbCUzQSUyMmdvb2QrZmlyc3QraXNzdWUlMjIK readmeEtag: '"32a10c263ca8bfd42a12eb6312b770f0514a8a67"' readmeLastModified: Sat, 01 May 2021 22:48:47 GMT repositoryId: 126081831 description: >- Sticker is a powerful yet boilerplate-free alternative to writing your web API. created: '2018-03-20T21:00:32Z' updated: '2023-01-27T23:43:25Z' language: Python archived: true stars: 26 watchers: 2 forks: 1 owner: rafaelcaricio logo: https://avatars.githubusercontent.com/u/107613?v=4 license: Apache-2.0 repoEtag: '"531fb023aa42fa3cb2ae6f50d9761c795897303c41418f09be9b823d90311c3d"' repoLastModified: Fri, 27 Jan 2023 23:43:25 GMT foundInMaster: true category: Server Implementations id: cb1a6cacac08f3879554ade8788535c8 - source: openapi3 tags repository: https://github.com/chanced/openapi v3: true id: 7ee990b4d1feb380f92d50101672d759 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpIC0gQW4gT3BlbkFQSSAzLnggbGlicmFyeSBmb3IgZ28KClshW0dvIFJlZmVyZW5jZV0oaHR0cHM6Ly9wa2cuZ28uZGV2L2JhZGdlL2dpdGh1Yi5jb20vY2hhbmNlZC9vcGVuYXBpLnN2ZyldKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL2NoYW5jZWQvb3BlbmFwaSkKWyFbTGF0ZXN0IFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3YvdGFnL2NoYW5jZWQvb3BlbmFwaS5zdmc/c29ydD1zZW12ZXImc3R5bGU9ZmxhdC1zcXVhcmUmbGFiZWw9dmVyc2lvbiZjb2xvcj1ibHVlKV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvdi90YWcvY2hhbmNlZC9vcGVuYXBpLnN2Zz9zb3J0PXNlbXZlciZzdHlsZT1mbGF0LXNxdWFyZSZsYWJlbD12ZXJzaW9uJmNvbG9yPWJsdWUpCiFbQnVpbGQgU3RhdHVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi93b3JrZmxvdy9zdGF0dXMvY2hhbmNlZC9vcGVuYXBpL0J1aWxkP3N0eWxlPWZsYXQtc3F1YXJlKQoKb3BlbmFwaSBpcyBhIGxpYnJhcnkgZm9yIHBhcnNpbmcgYW5kIHZhbGlkYXRpbmcgT3BlbkFQSQpbMy4xXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjApLApbMy4wXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMpLiBUaGUgaW50ZW50IG9mIHRoZSBsaWJyYXJ5IGlzIHRvCm9mZmVyIGJ1aWxkaW5nIGJsb2NrcyBmb3IgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLgoKOndhcm5pbmc6IFRoaXMgbGlicmFyeSBpcyB1bmRlciBhY3RpdmUgZGV2ZWxvcG1lbnQ7IHRoZXJlIG1heSBiZSBicmVha2luZyBjaGFuZ2VzIGFuZCBidWdzLgoKIyMgRmVhdHVyZXMKCi0gICBgJHJlZmAgcmVzb2x1dGlvbgotICAgQWxsIGtleXMgcmV0YWluIHRoZWlyIG9yZGVyIGZyb20gdGhlIG1hcmt1cCB1c2luZyBzbGljZXMgb2Yga2V5L3ZhbHVlcyB3aGljaAogICAgYWlkcyBpbiBjb2RlIGdlbmVyYXRpb24uCi0gICBWYWxpZGF0aW9uIChbc2VlIHRoZSB2YWxpZGF0aW9uIHNlY3Rpb25dKCN2YWxpZGF0aW9uKSkKLSAgIEFsbCBub24tcHJpbWl0aXZlIG5vZGVzIGhhdmUgYW4gYWJzb2x1dGUgJiByZWxhdGl2ZSBsb2NhdGlvbgotICAgU3RyaW5ncyBhcmUgW3RleHQuVGV4dF0oaHR0cHM6Ly9naXRodWIuY29tL2NoYW5jZWQvY2Fwcykgd2hpY2ggaGFzIGNhc2UKICAgIGNvbnZlcnNpb25zIGFuZCBgc3RyaW5nc2AgZnVuY3Rpb25zIGFzIG1ldGhvZHMuCi0gICBFeHRlbnNpb25zLCB1bmtub3duIEpTT04gU2NoZW1hIGtleXdvcmRzLCBleGFtcGxlcywgYW5kIGEgZmV3IG90aGVyIGZpZWxkcwogICAgYXJlIGluc3RhbmNlcyBvZiBbanNvbnguUmF3TWVzc2FnZV0oaHR0cHM6Ly9naXRodWIuY29tL2NoYW5jZWQvanNvbngpIHdoaWNoCiAgICBjb21lcyB3aXRoIGEgZmV3IGhlbHBlciBtZXRob2RzLgotICAgU3VwcG9ydHMgYm90aCBKU09OIGFuZCBZQU1MCgojIyBVc2FnZQoKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAogICAgImdpdGh1Yi5jb20vY2hhbmNlZC9vcGVuYXBpIgogICAgImdpdGh1Yi5jb20vY2hhbmNlZC91cmkiCiAgICAiZ2l0aHViLmNvbS9zYW50aG9zaC10ZWt1cmkvanNvbnNjaGVtYS92NSIKICAgICJlbWJlZCIKICAgICJpbyIKICAgICJwYXRoL2ZpbGVwYXRoIgogICAgImxvZyIKKQoKLy9nbzplbWJlZCBzcGVjCnZhciBzcGVjRmlsZXMgZW1iZWQuRlMKCmZ1bmMgbWFpbigpIHsKICAgIGN0eCA6PSBjb250ZXh0LkJhY2tncm91bmQoKQoKICAgIGMsIGVyciA6PSBvcGVuYXBpLlNldHVwQ29tcGlsZXIoanNvbnNjaGVtYS5OZXdDb21waWxlcigpKSAvLyBhZGRpbmcgc2NoZW1hIGZpbGVzCiAgICBpZiBlcnIgIT0gbmlsIHsKICAgICAgICBsb2cuRmF0YWwoZXJyKQogICAgfQogICAgdiwgZXJyIDo9IG9wZW5hcGkuTmV3VmFsaWRhdG9yKGMpCiAgICBpZiBlcnIgIT0gbmlsIHsKICAgICAgICBsb2cuRmF0YWwoZXJyKQogICAgfQoKICAgIGZuIDo9IGZ1bmMoXyBjb250ZXh0LkNvbnRleHQsIHVyaSB1cmkuVVJJLCBraW5kIG9wZW5hcGkuS2luZCkgKG9wZW5hcGkuS2luZCwgW11ieXRlLCBlcnJvcil7CiAgICAgICAgZiwgZXJyIDo9IHNwZWNGaWxlcy5PcGVuKGZwKQogICAgICAgIGlmIGVyciAhPSBuaWwgewogICAgICAgICAgICBsb2cuRmF0YWwoZXJyKQogICAgICAgIH0KICAgICAgICAvLyB5b3UgY2FuIHJldHVybiBlaXRoZXIgSlNPTiBvciBZQU1MCiAgICAgICAgZCwgZXJyIDo9IGlvLlJlYWRBbGwoZikKICAgICAgICBpZiBlcnIgIT0gbmlsewogICAgICAgICAgICBsb2cuZmF0YWwoZXJyKQogICAgICAgIH0KICAgICAgICAvLyB1c2UgdGhlIHVyaSBvciB0aGUgZGF0YSB0byBkZXRlcm1pbmUgdGhlIEtpbmQKICAgICAgICByZXR1cm4gb3BlbmFwaS5LaW5kRG9jdW1lbnQsIGQsIG5pbAogICAgfQogICAgLy8geW91IGNhbiBMb2FkIGVpdGhlciBKU09OIG9yIFlBTUwKICAgIC8vIExvYWQgdmFsaWRhdGVzIHRoZSBEb2N1bWVudCBhcyB3ZWxsLgogICAgZG9jLCBlcnIgOj0gb3BlbmFwaS5Mb2FkKGN0eCwgInNwZWMvb3BlbmFwaS55YW1sIiwgdiwgZm4pCiAgICBpZiBlcnIgIT0gbmlsewogICAgICAgIGxvZy5GYXRhbChlcnIpCiAgICB9CiAgICBfID0gZG9jIC8vICpvcGVuYXBpLkRvY3VtZW50Cn0KYGBgCgojIyBWYWxpZGF0aW9uCgpUaGUgc3RhbmRhcmQgdmFsaWRhdG9yIChgU3RkVmFsaWRhdG9yYCkgY3VycmVudGx5IHZhbGlkYXRlcyBPcGVuQVBJIGRvY3VtZW50cwp3aXRoIEpTT04gU2NoZW1hLiBQZXIgT3BlbkFQSSdzIGRvY3VtZW50YXRpb24sIHRoaXMgbWF5IG5vdCBiZSBlbm91Z2ggdG8KcHJvcGVybHkgZW5jYXBzdWxhdGUgYWxsIHRoZSBudWFuY2VzIG9mIGEgc3BlY2lmaWNhdGlvbi4gSG93ZXZlciwgSlNPTiBTY2hlbWEgaXMKYWJsZSB0byBzdWNjZXNzZnVsbHkgdmFsaWRhdGUgdGhlIGN1cnJlbnQgT3BlbkFQSSAzLjEgU3BlY2lmaWNhdGlvbiB0ZXN0IHN1aXRlLgoKVmFsaWRhdGlvbiBpcyBhbiBhcmVhIHRoYXQgc3RpbGwgbmVlZHMgd29yay4gSWYgeW91IGRvIGZpbmQgY2FzZXMgd2hlcmUgdGhlCmN1cnJlbnQgdmFsaWRhdG9yIGlzIG5vdCBzdWZmaWNpZW50LCBwbGVhc2Ugb3BlbiBhbiBpc3N1ZSBzbyB0aGF0IHRoZSBsaWJyYXJ5CmNhbiBiZSB1cGRhdGVkIHdpdGggcHJvcGVyIGNvdmVyYWdlIG9mIHRoYXQgY2FzZS4KCiMjIERlcGVuZGVuY2llcwoKfCBEZXBlbmRlbmN5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVzYWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IFtnaXRodWIuY29tL3NhbnRob3NoLXRla3VyaS9qc29uc2NoZW1hL3Y1XShodHRwczovL2dpdGh1Yi5jb20vc2FudGhvc2gtdGVrdXJpL2pzb25zY2hlbWEvdjUpIHwgdXNlZCBpbiB0aGUgYFN0ZFZhbGlkYXRvcmAgdG8gdmFsaWRhdGUgT3BlbkFQSSBkb2N1bWVudHMgJiBjb21wb25lbnRzICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBbZ2l0aHViLmNvbS9jaGFuY2VkL2NhcHMvdGV4dF0oaHR0cHM6Ly9naXRodWIuY29tL2NoYW5jZWQvY2FwcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVzZWQgZm9yIGFsbCBzdHJpbmcgZmllbGRzIHRvIHByb3ZpZGUgY2FzZSBjb252ZXJzaW9uIGFuZCBmdW5jdGlvbnMgZnJvbSBgc3RyaW5nc2AgYXMgbWV0aG9kcyB8CnwgW2dpdGh1Yi5jb20vY2hhbmNlZC9qc29ucG9pbnRlcl0oaHR0cHM6Ly9naXRodWIuY29tL2NoYW5jZWQvanNvbnBvaW50ZXIpICAgICAgICAgICAgICAgICAgICAgfCByZWxhdGl2ZSBsb2NhdGlvbnMgb2YgYWxsIG5vbi1zY2FsYXIgbm9kZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFtnaXRodWIuY29tL3RpZHdhbGwvZ2pzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS90aWR3YWxsL2dqc29uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSlNPTiBwYXJzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBbZ2l0aHViLmNvbS9jaGFuY2VkL2pzb254XShodHRwczovL2dpdGh1Yi5jb20vY2hhbmNlZC9qc29ueCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJhdyBKU09OIHR5cGUgYW5kIGEgdG9vbGtpdCBmb3IganNvbiB0eXBlIGRldGVjdGlvbiAmIHBhcnNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgW2dpdGh1Yi5jb20vY2hhbmNlZC9tYXBzXShodHRwczovL2dpdGh1Yi5jb20vY2hhbmNlZC9tYXBzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzbWFsbCB1dGlsaXR5IHVzZWQgdG8gc29ydCBgRXh0ZW5zaW9uc2AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFtnaXRodWIuY29tL2NoYW5jZWQvdHJhbnNjb2RlXShodHRwczovL2dpdGh1Yi5jb20vY2hhbmNlZC90cmFuc2NvZGUpICAgICAgICAgICAgICAgICAgICAgICAgIHwgdXNlZCB0byB0cmFuc2Zvcm0gWUFNTCBpbnRvIEpTT04gYW5kIHZpY2UgdmVyc2EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBbZ2l0aHViLmNvbS9jaGFuY2VkL3VyaV0oaHR0cHM6Ly9naXRodWIuY29tL2NoYW5jZWQvdXJpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVzZWQgdG8gcmVwcmVzZW50IFVSSXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgW2dpdGh1Yi5jb20vTWFzdGVybWluZHMvc2VtdmVyXShodHRwczovL2dpdGh1Yi5jb20vTWFzdGVybWluZHMvc2VtdmVyKSAgICAgICAgICAgICAgICAgICAgICAgfCBvcGVuYXBpIGZpZWxkIGFuZCB2ZXJzaW9uIGRldGVjdGlvbiBvZiBPcGVuQVBJIGRvY3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFtnb3BrZy5pbi95YW1sLnYzXShodHRwczovL2dvcGtnLmluL3lhbWwudjMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbmVlZGVkIHRvIHNhdGlzZnkgYHlhbWwuTWFyc2hhbGVyYCBhbmQgYHlhbWwuVW5tYXJzaGFsZXJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBbZ2l0aHViLmNvbS9nb29nbGUvZ28tY21wXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvLWNtcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRlc3RpbmcgcHVycG9zZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgojIyBDb250cmlidXRpb25zCgpQbGVhc2UgZmVlbCBmcmVlIHRvIG9wZW4gdXAgYW4gaXNzdWUgb3IgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IGlmIHlvdSBmaW5kIGlzc3VlcwpvciBpZiB0aGVyZSBhcmUgZmVhdHVyZXMgeW91J2QgbGlrZSB0byBzZWUgYWRkZWQuCgojIyBMaWNlbnNlCgpNSVQK readmeEtag: '"148e14ce9c3d302f82a384f2ae0020f85d5818b9"' readmeLastModified: Sat, 01 Oct 2022 17:55:19 GMT repositoryId: 433235623 description: an OpenAPI 3.x library for go created: '2021-11-30T00:04:28Z' updated: '2024-05-30T08:21:32Z' language: Go archived: false stars: 26 watchers: 2 forks: 2 owner: chanced logo: https://avatars.githubusercontent.com/u/1073892?v=4 license: MIT repoEtag: '"2e82edb867610e6548c3e4cea028224669b4bd5e26423059bdf980db5f227828"' repoLastModified: Thu, 30 May 2024 08:21:32 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/mermade/openapi3-examples v3: true repositoryMetadata: repositoryId: 84428973 description: Passing and failing test cases for OpenAPI 3.x validators created: '2017-03-09T10:24:25Z' updated: '2025-11-25T12:52:24Z' language: null archived: false stars: 28 watchers: 4 forks: 15 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: Apache-2.0 repoEtag: '"b90b2fdb527e641a11e0ca17e933015f66e65c60d0e212353329a18b1259d3ec"' repoLastModified: Tue, 25 Nov 2025 12:52:24 GMT foundInMaster: true id: a3fce9bef41c3b8feb3992adbd1f694e - source: openapi3 tags repository: https://github.com/typeable/comparest v3: true repositoryMetadata: base64Readme: >- IyBjb21wYVJFU1QKClshW0hhY2thZ2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vaGFja2FnZS92L2NvbXBhUkVTVC5zdmc/bG9nbz1oYXNrZWxsKV0oaHR0cHM6Ly9oYWNrYWdlLmhhc2tlbGwub3JnL3BhY2thZ2UvY29tcGFSRVNUKQpbIVtNSVQgbGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ibHVlLnN2ZyldKExJQ0VOU0UpCgpDb21wYXRpYmlsaXR5IGNoZWNrZXIgZm9yIE9wZW5BUEkKCiMjIFVzaW5nIGNvbXBhUkVTVCBpbiBHaXRodWIgQWN0aW9ucwoKQWRkIHRoZSBmb2xsb3dpbmcgc3RlcCB0byB5b3VyICBHaXRodWIgQWN0aW9ucyB3b3JrZmxvdzoKCmBgYHlhbWwKLSB1c2VzOiB0eXBlYWJsZS9jb21wYXJlc3QKICAgIGlmOiAke3sgZ2l0aHViLmV2ZW50X25hbWUgPT0gJ3B1bGxfcmVxdWVzdCcgfX0KICAgIHdpdGg6CiAgICAgIG9sZDogb2xkLW9wZW5hcGkueWFtbAogICAgICBuZXc6IG5ldy1vcGVuYXBpLnlhbWwKYGBgCgpUaGUgYG5ld2AgYW5kIGBvbGRgIHZhbHVlcyBzaG91bGQgYmUgcGF0aHMgdG8geW91ciBPcGVuQVBJIHNwZWNpZmljYXRpb25zIHlvdSB3YW50IHRvIGNvbXBhcmUuCgpZb3Ugd2lsbCBnZXQgc29tZXRoaW5nIGxpa2UgdGhpcyBpbiB5b3VyIHB1bGwgcmVxdWVzdHM6CgohW10oZG9jcy9pbWcvZ2l0aHViLWFjdGlvbi1yZXBvcnQucG5nKQoKRm9yIG1vcmUgZGV0YWlsIHBsZWFzZSBzZWUgb3VyIFtpbnRlZ3JhdGlvbiBndWlkZV0oZG9jcy9JbnRlZ3JhdGlvbl9ndWlkZS5tZCkuCgojIyBBbiBleGFtcGxlCgojIyMgWW91ciBzaXR1YXRpb24KCllvdSBhcmUgZGV2ZWxvcGluZyBhIHZlcnkgaW1wb3J0YW50IHNlcnZlciB3aXRoIGEgUkVTVCBBUEkuIFlvdSBoYXZlIGNsaWVudHMgd2hvIHVzZSB5b3VyIEFQSSB0aGF0IHlvdSBkbyBub3QgY29udHJvbC4gU2F5LCB5b3UgYXJlIGFsc28gZGV2ZWxvcGluZyBhIG1vYmlsZSBhcHAgdGhhdCB1c2VzIHlvdXIgQVBJIGFuZCB5b3UgY2FuJ3QgZm9yY2Ugc29tZW9uZSB0byB1cGRhdGUgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uLiAoT3IgeW91IHByZWZlciBub3QgdG8gZm9yIFVYIHJlYXNvbnMuKQoKWW91IGhhdmUgcmVjZW50bHkgcmVsZWFzZWQgdmVyc2lvbiAxLjAgYW5kIHRoaW5ncyBhcmUgZ29pbmcgZ3JlYXQ6IHVzZXIgYXJlIGRvd25sb2FkaW5nIHlvdXIgYXBwLCBzZXJ2ZXJzIGFyZSBwcm9jZXNzaW5nIHJlcXVlc3RzLgoKWW91IGRlc2NyaWJlIHlvdXIgQVBJIGluIGEgZmlsZSBgYXBpLTEuMC4wLnlhbWxgOgoKYGBgeWFtbApvcGVuYXBpOiAiMy4wLjAiCmluZm86CiAgdmVyc2lvbjogMS4wLjAKICB0aXRsZTogU3dhZ2dlciBQZXRzdG9yZQogIGxpY2Vuc2U6CiAgICBuYW1lOiBNSVQKc2VydmVyczoKICAtIHVybDogaHR0cHM6Ly9leGFtcGxlLmNvbQpwYXRoczoKICAvcGV0czoKICAgIGdldDoKICAgICAgcGFyYW1ldGVyczoKICAgICAgICAtIG5hbWU6IGxpbWl0CiAgICAgICAgICBpbjogcXVlcnkKICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZQogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICAgIG1heGltdW06IDIwCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAiMjAwIjoKICAgICAgICAgIGRlc2NyaXB0aW9uOiAiIgogICAgICAgICAgaGVhZGVyczoKICAgICAgICAgICAgeC1uZXh0OgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0cyIKICAgIHBvc3Q6CiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgJHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzL1BldCIKICAgICAgcmVzcG9uc2VzOgogICAgICAgICIyMDEiOgogICAgICAgICAgZGVzY3JpcHRpb246ICIiCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIFBldDoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gaWQKICAgICAgICAtIG5hbWUKICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBtaW5MZW5ndGg6IDMKICAgICAgICAgIG1heExlbmd0aDogMTAKICAgIFBldHM6CiAgICAgIHR5cGU6IGFycmF5CiAgICAgIGl0ZW1zOgogICAgICAgICRyZWY6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXQiCmBgYAoKIyMjIEV2b2x2aW5nIHlvdXIgcHJvZHVjdAoKRW50aHVzZWQgb3ZlciB5b3VyIGluaXRpYWwgc3VjY2VzcyB5b3UgaHVycnkgdG8gcmVsZWFzZSBhIG5ldyBhbmQgaW1wcm92ZWQgdmVyc2lvbiBvZiB5b3VyIEFQSSBhbmQgbW9iaWxlIGFwcC4KCkFmdGVyIGEgcm91bmQgb2YgdmVyeSBpbnRlbnNlIHByb2dyYW1taW5nIHlvdSB0YWtlIGEgbG9vayBhdCB5b3VyIG5ldyBgYXBpLTEuMS4wLnlhbWxgOgoKYGBgeWFtbApvcGVuYXBpOiAiMy4wLjAiCmluZm86CiAgdmVyc2lvbjogMS4xLjAKICB0aXRsZTogU3dhZ2dlciBQZXRzdG9yZQogIGxpY2Vuc2U6CiAgICBuYW1lOiBNSVQKc2VydmVyczoKICAtIHVybDogaHR0cHM6Ly9leGFtcGxlLmNvbQpwYXRoczoKICAvcGV0czoKICAgIGdldDoKICAgICAgcGFyYW1ldGVyczoKICAgICAgICAtIG5hbWU6IGxpbWl0CiAgICAgICAgICBpbjogcXVlcnkKICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZQogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICAgIG1heGltdW06IDMwCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAiMjAwIjoKICAgICAgICAgIGRlc2NyaXB0aW9uOiAiIgogICAgICAgICAgaGVhZGVyczoKICAgICAgICAgICAgeC1uZXh0OgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0cyIKICAgIHBvc3Q6CiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgJHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzL1BldCIKICAgICAgcmVzcG9uc2VzOgogICAgICAgICIyMDEiOgogICAgICAgICAgZGVzY3JpcHRpb246ICIiCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIFBldDoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gaWQKICAgICAgICAtIG5hbWUKICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBtaW5MZW5ndGg6IDEKICAgICAgICAgIG1heExlbmd0aDogMTUKICAgICAgICB3ZWlnaHQ6CiAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICBQZXRzOgogICAgICB0eXBlOiBhcnJheQogICAgICBpdGVtczoKICAgICAgICAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0IgpgYGAKCkxvb2tpbmcgYXQgdGhlIHZlcnkgbGFyZ2UgYW5kIGNvbXBsZXggQVBJIGRlc2NyaXB0aW9uLCB5b3UgZ3JvdyBtb3JlIGFuZCBtb3JlIGNvbmNlcm5lZCB0aGF0IHlvdXIgb2xkIG1vYmlsZSBhcHAgbWlnaHQgc3RvcCB3b3JraW5nIHdoZW4geW91IHVwZGF0ZSB0aGUgc2VydmVyLiBCdXQgdGhlIHNwZWMgaXMgdG9vIGxhcmdlIGFuZCB0b28gY29tcGxleCB0byByZWFzb25hYmx5IGFzc2VzcyB0aGlzIG1hbnVhbGx5LgoKIyMjIEFzc2Vzc2luZyBjb21wYXRpYmlsaXR5IGF1dG9tYXRpY2FsbHkKCkx1Y2tpbHksIHlvdSBoYXZlIGFjY2VzcyB0byBjb21wYVJFU1Qgd2hpY2ggY2FuIHByb2dyYW1tYXRpY2FsbHkgYW5hbHl6ZSB5b3VyIEFQSXMgYW5kIGRldGVybWluZSB3aGF0LCBpZiBhbnl0aGluZywgYnJlYWtzIGNvbXBhdGliaWxpdHkgYW5kIHdoYXQgZG9lc24ndC4KCllvdSBjYW4gY2FsbCBpdCwgcGFzc2luZyB0aGUgQVBJIHlvdXIgY2xpZW50IHdpbGwgYmUgYXdhcmUgb2YsIGFuZCB0aGUgQVBJIHlvdXIgc2VydmVyIHdpbGwgc2VydmUgbGlrZSBzbzoKCmBgYGJhc2gKZG9ja2VyIHJ1biAtLXJtIC12ICQocHdkKTovZGF0YTpydyB0eXBlYWJsZS9jb21wYXJlc3QgLS1jbGllbnQgL2RhdGEvYXBpLTEuMC4wLnlhbWwgLS1zZXJ2ZXIgL2RhdGEvYXBpLTEuMS4wLnlhbWwgLS1vdXRwdXQgL2RhdGEvcmVwb3J0Lm1kCmBgYAoKUnVubmluZyB0aGlzIGNvbW1hbmQgd2lsbCBvdXRwdXQgYSBmaWxlIGByZXBvcnQubWRgLCBjb250YWluaW5nIHRoZSBjb21wYXRpYmlsaXR5IHJlcG9ydCBiZXR3ZWVuIHRoZSB0d28gQVBJczoKCj4gIyBTdW1tYXJ5Cj4KPiB8IFvinYwgQnJlYWtpbmcgY2hhbmdlc10oI2JyZWFraW5nLWNoYW5nZXMpIHwgW+KaoO+4jyBOb24tYnJlYWtpbmcgY2hhbmdlc10oI25vbi1icmVha2luZy1jaGFuZ2VzKSB8Cj4gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKPiB8IDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Cj4gIyA8c3BhbiBpZD0iYnJlYWtpbmctY2hhbmdlcyI+PC9zcGFuPuKdjCBCcmVha2luZyBjaGFuZ2VzCj4KPiAjIyAqKkdFVCoqIC9wZXRzCj4KPiAjIyMg4qyF77iP4piB77iPIEpTT04gUmVzcG9uc2Ug4oCTIDIwMAo+Cj4gIyMjIyBgJFsqXS5uYW1lKFN0cmluZylgCj4KPiAxLiAgTWF4aW11bSBsZW5ndGggb2YgdGhlIHN0cmluZyBjaGFuZ2VkIGZyb20gMTAgdG8gMTUuCj4KPiAyLiAgTWluaW11bSBsZW5ndGggb2YgdGhlIHN0cmluZyBjaGFuZ2VkIGZyb20gMyB0byAxLgo+Cj4gIyMgKipQT1NUKiogL3BldHMKPgo+ICMjIyDinqHvuI/imIHvuI8gSlNPTiBSZXF1ZXN0Cj4KPiAjIyMjIGAkLndlaWdodGAKPgo+IDEuICBWYWx1ZXMgYXJlIG5vdyBsaW1pdGVkIHRvIHRoZSBmb2xsb3dpbmcgdHlwZXM6Cj4KPiAgICAgLSAgIE51bWJlcgo+Cj4gMi4gIFRoZSBwcm9wZXJ0eSB3YXMgcHJldmlvdXNseSBpbXBsaWNpdGx5IGRlc2NyaWJlZCBieSB0aGUgY2F0Y2gtYWxsCj4gICAgICJhZGRpdGlvbmFsIHByb3BlcnRpZXMiIGNhc2UuIEl0IGlzIG5vdyBleHBsaWNpdGx5IGRlZmluZWQuCj4KPiAjIyMjIGAkLndlaWdodChOdW1iZXIpYAo+Cj4gVmFsdWUgaXMgbm93IGEgbXVsdGlwbGUgb2YgMS4wLgo+Cj4gIyA8c3BhbiBpZD0ibm9uLWJyZWFraW5nLWNoYW5nZXMiPjwvc3Bhbj7imqDvuI8gTm9uLWJyZWFraW5nIGNoYW5nZXMKPgo+ICMjICoqR0VUKiogL3BldHMKPgo+ICMjIyBQYXJhbWV0ZXIgbGltaXQKPgo+ICMjIyMgSlNPTiBTY2hlbWEKPgo+ICMjIyMjIGAkKE51bWJlcilgCj4KPiBVcHBlciBib3VuZCBjaGFuZ2VkIGZyb20gMjAuMCBpbmNsdXNpdmUgdG8gMzAuMCBpbmNsdXNpdmUuCj4KPiAjIyMg4qyF77iP4piB77iPIEpTT04gUmVzcG9uc2Ug4oCTIDIwMAo+Cj4gIyMjIyBgJFsqXS53ZWlnaHRgCj4KPiAxLiAgVmFsdWVzIGFyZSBub3cgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIHR5cGVzOgo+Cj4gICAgIC0gICBOdW1iZXIKPgo+IDIuICBUaGUgcHJvcGVydHkgd2FzIHByZXZpb3VzbHkgaW1wbGljaXRseSBkZXNjcmliZWQgYnkgdGhlIGNhdGNoLWFsbAo+ICAgICAiYWRkaXRpb25hbCBwcm9wZXJ0aWVzIiBjYXNlLiBJdCBpcyBub3cgZXhwbGljaXRseSBkZWZpbmVkLgo+Cj4gIyMjIyBgJFsqXS53ZWlnaHQoTnVtYmVyKWAKPgo+IFZhbHVlIGlzIG5vdyBhIG11bHRpcGxlIG9mIDEuMC4KPgo+ICMjICoqUE9TVCoqIC9wZXRzCj4KPiAjIyMg4p6h77iP4piB77iPIEpTT04gUmVxdWVzdAo+Cj4gIyMjIyBgJC5uYW1lKFN0cmluZylgCj4KPiAxLiAgTWF4aW11bSBsZW5ndGggb2YgdGhlIHN0cmluZyBjaGFuZ2VkIGZyb20gMTAgdG8gMTUuCj4KPiAyLiAgTWluaW11bSBsZW5ndGggb2YgdGhlIHN0cmluZyBjaGFuZ2VkIGZyb20gMyB0byAxLgoKWW91IG5vdyBrbm93IGV4YWN0bHkgaW4gd2hhdCBzaXR1YXRpb25zIGFuZCBpbiB3aGF0IHdheSB5b3VyIDEuMCB2ZXJzaW9uIG9mIHRoZSBhcHAgd2lsbCBicmVhayBpZiB5b3UgZGVwbG95IHlvdXIgMS4xIHZlcnNpb24gb2YgdGhlIHNlcnZlci4KCiMjIyBBZGRpdGlvbmFsIGZvcm1hdHMKCllvdSBjYW4gYWxzbyBwcm9kdWNlIGEgc2VsZi1jb250YWluZWQgSFRNTCByZXBvcnQgdGhhdCB5b3UgY2FuIG9wZW4gaW4geW91ciBicm93c2VyIGJ5IHNpbXBseSBvbWl0dGluZyB0aGUgZmlsZSBleHRlbnNpb24gb2YgdGhlIG91dHB1dCBmaWxlOgoKYGBgYmFzaApkb2NrZXIgcnVuIC0tcm0gLXYgJChwd2QpOi9kYXRhOnJ3IHR5cGVhYmxlL2NvbXBhcmVzdCAtLWNsaWVudCAvZGF0YS9hcGktMS4wLjAueWFtbCAtLXNlcnZlciAvZGF0YS9hcGktMS4xLjAueWFtbCAtLW91dHB1dCAvZGF0YS9yZXBvcnQKYGBgCgojIyBDTEkgZG9jcwoKRm9yIG1vcmUgZGV0YWlsIHBsZWFzZSBzZWUgb3VyIFt1c2VyIGd1aWRlXShkb2NzL1VzZXJfZ3VpZGUubWQpLgoKYGBgClVzYWdlOiBjb21wYXJlc3QgKC1jfC0tY2xpZW50IEFSRykgKC1zfC0tc2VydmVyIEFSRykKICAgICAgICAgICAgICAgICBbLS1zaWxlbnQgfCAtLW9ubHktYnJlYWtpbmcgfCAtLWFsbF0gWy1vfC0tb3V0cHV0IEFSR10KICAgICAgICAgICAgICAgICBbLS1mb2xkaW5nLWJsb2NrLXF1b3Rlcy1zdHlsZSB8IC0taGVhZGVyLXN0eWxlXQogICAgICAgICAgICAgICAgIFstLXNpZ25hbC1leGl0LWNvZGVdCiAgQSB0b29sIHRvIGNoZWNrIGNvbXBhdGliaWxpdHkgYmV0d2VlbiB0d28gT3BlbkFQSSBzcGVjaWZpY2F0aW9ucy4KCiAgVXNhZ2UgZXhhbXBsZXMKCiAgICAgIENvbXBhcmUgZmlsZXMgb2xkLnlhbWwgd2l0aCBuZXcueWFtbCBhbmQgb3V0cHV0IHRoZSByZXN1bHRpbmcgcmVwb3J0IHRvCiAgICAgIHN0ZG91dDoKCiAgICAgICAgICBjb21wYXJlc3QgLWMgb2xkLnlhbWwgLXMgbmV3LnlhbWwKCiAgICAgIE9ubHkgb3V0cHV0IGJyZWFraW5nIGNoYW5nZXMgYW5kIHdyaXRlIGEgc3R5bGVkIEhUTUwgcmVwb3J0IHRvIGZpbGUKICAgICAgcmVwb3J0Lmh0bWw6CgogICAgICAgICAgY29tcGFyZXN0IC1jIG9sZC55YW1sIC1zIG5ldy55YW1sIC0tb25seS1icmVha2luZyAtbyByZXBvcnQKCiAgICAgIERvbid0IG91dHB1dCBhbnl0aGluZywgb25seSBmYWlsIGlmIHRoZXJlIGFyZSBicmVha2luZyBjaGFuZ2VzOgoKICAgICAgICAgIGNvbXBhcmVzdCAtYyBvbGQuanNvbiAtcyBuZXcuanNvbiAtLXNpbGVudAoKICAgICAgV3JpdGUgZnVsbCByZXBvcnQgc3VpdGFibGUgZm9yIGVtYmVkZGluZyBpbnRvIGEgR2l0SHViIGNvbW1lbnQgdG8KICAgICAgcmVwb3J0Lmh0bWw6CgogICAgICAgICAgY29tcGFyZXN0IC1jIG9sZC5qc29uIC1zIG5ldy5qc29uIC0tZm9sZGluZy1ibG9jay1xdW90ZXMtc3R5bGUgLW8gcmVwb3J0Lmh0bWwKCkF2YWlsYWJsZSBvcHRpb25zOgogIC1oLC0taGVscCAgICAgICAgICAgICAgICBTaG93IHRoaXMgaGVscCB0ZXh0CiAgLWMsLS1jbGllbnQgQVJHICAgICAgICAgIEEgcGF0aCB0byB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBzcGVjaWZpY2F0aW9uIHRoYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSB1c2VkIGZvciB0aGUgY2xpZW50IG9mIHRoZSBBUEkuIENhbiBiZSBlaXRoZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBZQU1MIG9yIEpTT04gZmlsZS4KICAtcywtLXNlcnZlciBBUkcgICAgICAgICAgQSBwYXRoIHRvIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIHNwZWNpZmljYXRpb24gdGhhdAogICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHVzZWQgZm9yIHRoZSBzZXJ2ZXIgb2YgdGhlIEFQSS4gQ2FuIGJlIGVpdGhlcgogICAgICAgICAgICAgICAgICAgICAgICAgICBhIFlBTUwgb3IgSlNPTiBmaWxlLgogIC0tc2lsZW50ICAgICAgICAgICAgICAgICBTaWxlbmNlIGFsbCBvdXRwdXQuIE9ubHkgbWFrZXMgc2Vuc2UgaW4gY29tYmluYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCAtLXNpZ25hbC1leGl0LWNvZGUuCiAgLS1vbmx5LWJyZWFraW5nICAgICAgICAgIE9ubHkgcmVwb3J0IGJyZWFraW5nIGNoYW5nZXMgaW4gdGhlIG91dHB1dC4KICAtLWFsbCAgICAgICAgICAgICAgICAgICAgUmVwb3J0IGJvdGggaW5jb21wYXRpYmxlIGFuZCBjb21wYXRpYmxlIGNoYW5nZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBhdGlibGUgY2hhbmdlcyB3aWxsIG5vdCB0cmlnZ2VyIGEgZmFpbHVyZSBleGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUuCiAgLW8sLS1vdXRwdXQgQVJHICAgICAgICAgIFRoZSBmaWxlIHBhdGggd2hlcmUgdGhlIG91dHB1dCBzaG91bGQgYmUgd3JpdHRlbi4gSWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9wdGlvbiBpcyBvbWl0dGVkIHRoZSByZXN1bHQgd2lsbCBiZSB3cml0dGVuIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dC4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIGV4dGVuc2lvbiBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgdHlwZSBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3V0cHV0IGZpbGUuCgogICAgICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0cyBtYW55IGZvcm1hdHMgc3VjaCBhcyBtYXJrZG93biwgaHRtbCwgcnRmLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkb2MsIHR4dCwgcnN0LCBhbmQgbWFueSBtb3JlLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVhdmUgb3V0IHRoZSBleHRlbnNpb24gdG8gcHJvZHVjZSBhIHNlbGYtY29udGFpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUTUwgcmVwb3J0IHdpdGggc3R5bGluZy4KICAtLWZvbGRpbmctYmxvY2stcXVvdGVzLXN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXBvcnQgdHJlZSBpcyBzdHJ1Y3R1cmVkIHVzaW5nIHN1bW1hcnkvZGV0YWlsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUTUwgZWxlbWVudHMgYW5kIGluZGVudGVkIHVzaW5nIGJsb2NrIHF1b3Rlcy4gVGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSByZW5kZXJzIHdlbGwgb24gR2l0SHViLkludGVuZGVkIGZvciBIVE1MIG91dHB1dAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQuIE1hcmtkb3duIGhhcyByZW5kZXJpbmcgYnVncyBvbiBHaXRIdWIuCiAgLS1oZWFkZXItc3R5bGUgICAgICAgICAgIFRoZSByZXBvcnQgdHJlZSBpcyBzdHJ1Y3R1cmVkIHVzaW5nIGluY3JlYXNpbmcgbGV2ZWxzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGhlYWRlcnMuCiAgLS1zaWduYWwtZXhpdC1jb2RlICAgICAgIFNpZ25hbCBBUEkgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBleGl0IGNvZGUuCgogICAgICAgICAgICAgICAgICAgICAgICAgICBFeGl0IHdpdGggMCBpZiB0aGVyZSBhcmUgbm8gYnJlYWtpbmcgY2hhbmdlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhpdCB3aXRoIDEgaWYgdGhlcmUgYXJlIGJyZWFraW5nIGNoYW5nZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4aXQgd2l0aCAyIGlmIGNvdWxkIG5vdCBkZXRlcm1pbmUgY29tcGF0aWJpbGl0eS4KYGBgCg== readmeEtag: '"9cadc60d8914e12b5fe7f44ec8cec9782c6dd8a9"' readmeLastModified: Mon, 29 Jul 2024 18:37:22 GMT repositoryId: 340356702 description: Compatibility checker for OpenAPI created: '2021-02-19T12:03:06Z' updated: '2025-12-01T22:53:41Z' language: Haskell archived: false stars: 26 watchers: 1 forks: 2 owner: typeable logo: https://avatars.githubusercontent.com/u/22911778?v=4 license: MIT repoEtag: '"e35d7d116b5e6744f6ecb8748dc21b7ad482767c2d0e7d87e48dac75356ec14a"' repoLastModified: Mon, 01 Dec 2025 22:53:41 GMT foundInMaster: true category: Parsers id: 7658feea5b221bdef8d18a4d78f0ae7f - source: openapi3 tags repository: https://github.com/chukmunnlee/caddy-openapi v3: true repositoryMetadata: base64Readme: >- IyBjYWRkeS1vcGVuYXBpCgpUaGlzIG1pZGRsZXdhcmUgdmFsaWRhdGVzIEhUVFAgcmVxdWVzdCBhbmQgcmVzcG9uc2UgYWdhaW5zdCBhIE9wZW5BUEkgVjMgU3BlY2lmaWNhdGlvbiBmaWxlCgojIyBJbnN0YWxsYXRpb24KCkJ1aWxkIGNhZGR5IHdpdGggY2FkZHktb3BlbmFwaSwgcnVuIGBtYWtlYC4gVGhpcyB3aWxsIGJ1aWxkIGZvciBMaW51eCwgV2luZG93cyBhbmQgT1NYLgoKWW91IGNhbiBhbHNvIGJ1aWxkIHdpdGggYHhjYWRkeWAKYGBgCnhjYWRkeSBidWlsZCBcCiAgICAtLXdpdGggZ2l0aHViLmNvbS9jaHVrbXVubmxlZS9jYWRkeS1vcGVuYXBpCmBgYAoKVGVzdGVkIHdpdGggYGdvIHZlcnNpb24gZ28xLjIyLjMgbGludXgvYW1kNjRgIG9uIGBMaW51eCA8bmFtZT4gNi41LjAtMzUtZ2VuZXJpYyAjMzV+MjIuMDQuMS1VYnVudHUgU01QIFBSRUVNUFRfRFlOQU1JQyA8dGltZXN0YW1wPiB4ODZfNjQgeDg2XzY0IHg4Nl82NCBHTlUvTGludXhgCgojIyBVc2FnZQoKIyMjIENhZGR5ZmlsZQoKTG9hZCBgZXhhbXBsZXMvY3VzdG9tZXIvY3VzdG9tZXIueWFtbGAgZmlsZSB3aXRoIGRlZmF1bHRzCgpgYGAKOjgwODAgewogIHJvdXRlIC9hcGkgewogICAgb3BlbmFwaSAuL2V4YW1wbGVzL2N1c3RvbWVyL2N1c3RvbWVyLnlhbWwKICB9Cn0KYGBgCgpPbmUgd2l0aCBhbGwgdGhlIG9wdGlvbnMKCmBgYAo6ODA4MCB7CiAgcm91dGUgL2FwaSB7CiAgICBvcGVuYXBpIHsKICAgICAgc3BlYyAuL2V4YW1wbGVzL2N1c3RvbWVyL2N1c3RvbWVyLnlhbWwKICAgICAgZmFsbF90aHJvdWdoCiAgICAgIGxvZ19lcnJvcgogICAgfQogIH0KfQpgYGAKClJlcG9ydHMgYW55IGVycm9ycyBhcyBhIGB7b3BlbmFwaS5lcnJvcn1gIFtwbGFjZWhvbGRlcl0oaHR0cHM6Ly9jYWRkeXNlcnZlci5jb20vZG9jcy9jYWRkeWZpbGUvY29uY2VwdHMjcGxhY2Vob2xkZXJzKSB3aGljaCBjYW4gYmUgdXNlZCBpbiBvdGhlciBbZGlyZWN0aXZlc10oaHR0cHM6Ly9jYWRkeXNlcnZlci5jb20vZG9jcy9jYWRkeWZpbGUvZGlyZWN0aXZlcykgbGlrZSBbYHJlc3BvbmRgXShodHRwczovL2NhZGR5c2VydmVyLmNvbS9kb2NzL2NhZGR5ZmlsZS9kaXJlY3RpdmVzL3Jlc3BvbmQpCgp8IEZpZWxkcyAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgYHNwZWMgPG9hc19maWxlPmAgICAgICAgIHwgVGhlIE9wZW5BUEkzIFlBTUwgZmlsZS4gVGhpcyBhdHRyaWJ1dGUgaXMgYSBtYW5kYXRvcnkgfAp8IGBwb2xpY3lfYnVuZGxlIDxidW5kbGU+YCB8IFtPUEFdKGh0dHBzOi8vd3d3Lm9wZW5wb2xpY3lhZ2VudC5vcmcvKSBwb2xpY3kgYnVuZGxlIGNyZWF0ZWQgd2l0aCBgb3BhIGJ1aWxkYC4gfAp8IGBmYWxsX3Rocm91Z2hgICAgICAgICAgICB8IFRvZ2dsZXMgZmFsbCB0aHJvdWdoIHdoZW4gdGhlIHJlcXVlc3QgZG9lcyBkbyBtYXRjaCB0aGUgcHJvdmlkZWQgT3BlbkFQSSBzcGVjLiBEZWZhdWx0IGlzIGBmYWxzZWAgfAp8IGB2YWxpZGF0ZV9zZXJ2ZXJzYCAgICAgICB8IEVuYWJsZSBzZXJ2ZXIgdmFsaWRhdGlvbi4gQWNjZXB0cyBgdHJ1ZWAsIGBmYWxzZWAgb3IganVzdCB0aGUgZGlyZWN0aXZlIHdoaWNoIGVuYWJsZXMgdmFsaWRhdGlvbi4gRGVmYXVsdCBpcyBgdHJ1ZWAuIHwKfCBgbG9nX2Vycm9yYCAgICAgICAgICAgICAgfCBUb2dnbGVzIGVycm9yIGxvZ2dpbmcuIERlZmF1bHQgaXMgYGZhbHNlYCB8CnwgYGNoZWNrYCAgICAgICAgICAgICAgICAgIHwgRW5hYmxlIHZhbGlkYXRpb24gb2YgdGhlIHJlcXVlc3QgcGFyYW1ldGVyczsgaW5jbHVkZSBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIGRpcmVjdGl2ZXMgaW4gdGhlIGJvZHk6YHJlcV9wYXJhbXNgLCBgcmVxX2JvZHlgIGFuZCBgcmVzcF9ib2R5YC4gYHJlc3BfYm9keWAgb25seSB2YWxpZGF0ZXMgYGFwcGxpY2F0aW9uL2pzb25gIHBheWxvYWQuIE5vdGUgdGhhdCB2YWxpZGF0aW5nIHRoZSByZXF1ZXN0IGJvZHkgd2lsbCBpbXBsaWNpdGx5IHNldCBgcmVxX3BhcmFtc2AgfAoKRXJyb3JzIGFyZSByZXBvcnRlZCBpbiB0aGUgZm9sbG93aW5nIFtwbGFjZWhvbGRlcnNdKGh0dHBzOi8vY2FkZHlzZXJ2ZXIuY29tL2RvY3MvY2FkZHlmaWxlL2NvbmNlcHRzI3BsYWNlaG9sZGVycykuIFlvdSBjYW4gdXNlIHRoZW0gaW4gb3RoZXIgW2RpcmVjdGl2ZXNdKGh0dHBzOi8vY2FkZHlzZXJ2ZXIuY29tL2RvY3MvY2FkZHlmaWxlL2RpcmVjdGl2ZXMpIGxpa2UgW2ByZXNwb25kYF0oaHR0cHM6Ly9jYWRkeXNlcnZlci5jb20vZG9jcy9jYWRkeWZpbGUvZGlyZWN0aXZlcy9yZXNwb25kKQoKfCBQbGFjZWhvbGRlcnMgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8IGBvcGVuYXBpLmVycm9yYCAgICAgICAgICB8IERlc2NyaXB0aW9uIG9mIHRoZSBlcnJvciB8CnwgYG9wZW5hcGkuc3RhdHVzX2NvZGVgICAgIHwgU3VnZ2VzdGVkIHN0YXR1cyBjb2RlIHwKfCBgb3BlbmFwaS5yZXNwb25zZV9lcnJvcmAgfCBSZXNvbnNlIGVycm9yIHwKCiMjIEV4YW1wbGUKClRoZSBmb2xsb3dpbmcgZXhhbXBsZSB2YWxpZGF0ZXMgYWxsIHJlcXVlc3QsIGluY2x1ZGluZyBxdWVyeSBzdHJpbmcgYXMgd2VsbCBhcyBwYXlsb2FkcywgdG8gYGxvY2FsaG9zdDo4MDgwL2FwaWAgCmFnYWluc3QgdGhlIGAuL2V4YW1wbGVzL2N1c3RvbWVyL2N1c3RvbWVyLnlhbWxgIGZpbGUuICBBbnkgbm9uIGNvbXBsaWFudCByZXF1ZXN0IHdpbGwgYmUgbG9nZ2VkIHRvIENhZGR5J3MgY29uc29sZS4gClJlc3BvbmQgdG8gdGhlIGNsaWVudCB3aXRoIHRoZSBlcnJvciBge29wZW5hcGkuZXJyb3J9YC4KCmBgYAo6ODA4MCB7CgogIEBhcGkgewogICAgcGF0aCAvYXBpLyoKICB9CgogIHJldmVyc2VfcHJveHkgQGFwaSB7CiAgICB0byBsb2NhbGhvc3Q6MzAwMAogIH0KCiAgcm91dGUgQGFwaSB7CiAgICBvcGVuYXBpIHsKICAgICAgc3BlYyAuL2V4YW1wbGVzL2N1c3RvbWVyL2N1c3RvbWVyLnlhbWwgCiAgICAgIHBvbGljeV9idW5kbGUgLi9leGFtcGxlcy9wb2xpY3kvYnVuZGxlLnRhci5negogICAgICBjaGVjayB7CiAgICAgICAgcmVxX2JvZHkgCiAgICAgICAgcmVzcF9ib2R5IAogICAgICB9CiAgICAgIHZhbGlkYXRlX3NlcnZlcnMKICAgICAgbG9nX2Vycm9yIAogICAgfQogIH0KCiAgaGFuZGxlX2Vycm9ycyB7CiAgICByZXNwb25kIEBhcGkgIlJlc291cmNlOiB7aHR0cC5yZXF1ZXN0Lm9yaWdfdXJpfS4gRXJyb3I6IHtvcGVuYXBpLmVycm9yfSIge29wZW5hcGkuc3RhdHVzX2NvZGV9ICB7CiAgICAgIGNsb3NlCiAgICB9CiAgfQp9CmBgYAoKVHJ5IG91dCB0aGUgYGN1c3RvbWVyLnlhbWxgIEFQSSBieSBydW5uaW5nIHRoZSBhY2NvbXBhbnlpbmcgbm9kZSBhcHBsaWNhdGlvbi4KCiMjIFVzaW5nIE9wZW5Qb2xpY3lBZ2VudAoKWW91IGNhbiBlbmZvcmNlIHBvbGljaWVzIG9uIHJvdXRlcyBieSBhZGRpbmcgdGhlIGB4LXBvbGljeWAgZmllbGQgdG8gZWl0aGVyIHRoZSBbT3BlbkFQSTMgZG9jdW1lbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjEuMC5tZCNzY2hlbWEpIGxldmVsLCBvciB0aGUgW3BhdGggaXRlbV0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kI3BhdGhJdGVtT2JqZWN0KSBsZXZlbCBvciBvciB0aGUgW29wZXJhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kI29wZXJhdGlvbk9iamVjdCkgbGV2ZWwuIAoKSWYgYSBgeC1wb2xpY3lgIGZpZWxkIGlzIGFkZGVkIGF0IHRoZQotICpPcGVuQVBJMyBkb2N1bWVudCogdGhlbiB0aGUgcG9saWN5IHdpbGwgYmUgYXBwbGllZCB0byBhbGwgcGF0aAotICpQYXRoIGl0ZW0qIHRoZW4gdGhlIHBvbGljeSB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIG1ldGhvZHMgc3BlY2lmaWVkIGZvciB0aGF0IHBhdGggZWcgYFBPU1RgLCBgR0VUYCB0byBgL2FwaS92MS9jdXN0b21lcmAKLSAqT3BlcmF0aW9uKiB0aGVuIHRoZSBwb2xpY3kgd2lsbCBvbmx5IGJlIGFwcGxpZWQgdG8gdGhhdCBvcGVyYXRpb24gZWcuIGBHRVQvYXBpL3YxL2N1c3RvbWVyYApgeC1wb2xpY3lgIGF0dHJpYnV0ZSBuZXN0ZWQgZGVlcGVyIGludG8gdGhlIAoKVGhlICdkZWVwZXInIGEgYHgtcG9saWN5YCBmaWVsZCwgdGhlIGhpZ2hlciBpdHMgcHJlY2VkZW5jZS4gU2luY2UgYHBvbGljeV9idW5kbGVgIGlzIG9wdGlvbmFsLCBubyBgeC1wb2xpY3lgIHdpbGwgYmUgZXZhbHVhdGVkIGlmIG5vIGJ1bmRsZSBhcmUgbG9hZGVkLgoKQXNzdW1lIHRoZSBmb2xsb3dpbmcgT1BBIHBvbGljeSBmaWxlCmBgYApwYWNrYWdlIGF1dGh6CgpkZWZhdWx0IGFsbG93ID0gZmFsc2UKCmFsbG93IHsKICBsb3dlcihpbnB1dC5tZXRob2QpID0gImdldCIKICBhcnJheS5zbGljZShpbnB1dC5wYXRoLCAwLCAyKSA9IFsgImFwaSIsICJjdXN0b21lciIgXQogIHRvX251bWJlcihpbnB1dC5wYXRoUGFyYW1zLmN1c3RJZCkgPj0gMTAwCn0KYGBgCmhhcyBiZWVuIGJ1bmRsZWQgYXMgYGJ1bmRsZS50YXIuZ3pgLiBMb2FkIGl0IHdpdGggYHBvbGljeV9idW5kbGVgCgpUaGUgZm9sbG93aW5nIE9wZW5BUEkzIGZyYWdtZW50IHNob3cgaG93IHlvdSBjYW4gZXZhbHVhdGUgYGF1dGh6LmFsbG93YCBvbiBhbGwgYEdFVCAvYXBpL2N1c3RvbWVyL2AKYGBgCnBhdGhzOgogIC9hcGkvY3VzdG9tZXIve2N1c3RJZH06CiAgICBnZXQ6CiAgICAgIGRlc2NyaXB0aW9uOiBHZXQgY3VzdG9tZXIKICAgICAgb3BlcmF0aW9uSWQ6IGdldEN1c3RvbWVyCiAgICAgIHgtcG9saWN5OiBhdXRoei5hbGxvdwogICAgICBwYXJhbWV0ZXJzOgogICAgICAtIG5hbWU6IGN1c3RJZAogICAgICAgIGluOiBwYXRoCiAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgdHlwZTogbnVtYmVyCmBgYAoKVGhlIEhUVFAgcmVxdWVzdCBhcmUgY29udmVydGVkIGludG8gYGlucHV0YCBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyB0YWJsZQoKfCBGaWVsZHMgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8IGBpbnB1dC5zY2hlbWVgICAgICAgICAgICB8IEhUVFAgb3IgSFRUUFMgfAp8IGBpbnB1dC5ob3N0YCAgICAgICAgICAgICB8IEhvc3QgYW5kIHBvcnQgbnVtYmVyIHwKfCBgaW5wdXQubWV0aG9kYCAgICAgICAgICAgfCBIVFRQIG1ldGhvZCAgfAp8IGBpbnB1dC5wYXRoYCAgICAgICAgICAgICB8IEFycmF5IG9mIHBhdGggZWxlbWVudHMgZWcuIGAvYXBpL2N1c3RvbWVyLzEyM2AgaXMgY29udmVydGVkIHRvIGBbICdhcGknLCAnY3VzdG9tZXInLCAnMTIzJyBdYCB8CnwgYGlucHV0LnJlbW90ZUFkZHJgICAgICAgIHwgSG9zdCBhbmQgcG9ydCBudW1iZXIgb2YgdGhlIGNsaWVudCB8CnwgYGlucHV0LnF1ZXJ5U3RyaW5nYCAgICAgIHwgSWYgYSBxdWVyeSBzdHJpbmcgaXMgcHJlc2VudCwgdGhlIHF1ZXJ5IHN0cmluZyB3aWxsIGJlIGRlc3RydWN0ZWQgaW50byBhIG1hcCB1bmRlciBgcXVlcnlTdHJpbmdgIHJvb3QuIEV4YW1wbGUgYD9vZmZzZXQ9MTAmbGltaXQ9MTBgIHdpbGwgYmUgY29udmVydGVkIHRvIHRoZSBmb2xsb3dpbmcga2V5czogYGlucHV0LnF1ZXJ5U3RyaW5nLm9mZnNldGAgYW5kIGBpbnB1dC5xdWVyeVN0cmluZy5saW1pdGAuIFF1ZXJ5IHBhcmFtZXRlcnMgd2l0aCBtdWx0aXBsZSB2YWx1ZSB3aWxsIGhhdmUgYW4gYXJyYXkgYXMgaXRzIHZhbHVlLiBgcXVlcnlTdHJpbmdgIHdpbGwgbm90IGJlIHByZXNlbnQgaWYgdGhlIHJlcXVlc3QgZG8gbm90IGNvbnRhaW4gYW55IHF1ZXJ5IHBhcmFtcyB8CnwgYGlucHV0LnBhdGhQYXJhbXNgICAgICAgIHwgTGlrZSBxdWVyeSBzdHJpbmcgYnV0IGEgbWFwIG9mIG1hdGNoZWQgcGF0aCBwYXJhbWV0ZXJzIGZyb20gdGhlIE9wZW5BUEkzIHNwZWMgd2hlcmUgcGFyYW1ldGVyIHR5cGUgaXMgYGluOiBwYXRoYC4gU2VlIGFib3ZlIGV4YW1wbGUgfAp8IGBpbnB1dC5oZWFkZXJzYCAgICAgICAgICB8IE1hcCBvZiBhbGwgdGhlIHJlcXVlc3QgaGVhZGVycyB8CnwgYGlucHV0LmJvZHlgICAgICAgICAgICAgIHwgQWNjZXNzIHRvIHRoZSByZXF1ZXN0J3MgYm9keS4gT25seSBzdXBwb3J0cyBgYXBwbGljYXRpb24vanNvbmAgY29udGVudCB0eXBlLiAqKk5vdCBpbXBsZW1lbnRlZCB5ZXQqKiB8CgpBc3N1bWUgYWxsIHZhbHVlcyBhcmUgc3RyaW5nCgpUaGlzIHBsdWdpbiBjdXJyZW50bHkgY2FuIG9ubHkgd29yayB3aXRoIHBvbGljaWVzL3J1bGVzIHRoYXQgcmV0dXJuIHRydWUgb3IgZmFsc2UuCg== readmeEtag: '"a0da3c3c39baa725bb64411929b5a519a0991567"' readmeLastModified: Wed, 05 Jun 2024 00:13:19 GMT repositoryId: 288679362 description: >- A Caddy module to validate HTTP request and response against a OpenAPI spec (V3) file created: '2020-08-19T08:42:14Z' updated: '2025-12-21T22:10:43Z' language: Go archived: false stars: 28 watchers: 1 forks: 8 owner: chukmunnlee logo: https://avatars.githubusercontent.com/u/5455699?v=4 license: Apache-2.0 repoEtag: '"5ab37dae2b1ab4ec1adaf6df8a5dca1e25bc90a4cc3e1fddbbe328bdfeb585df"' repoLastModified: Sun, 21 Dec 2025 22:10:43 GMT foundInMaster: true category: Parsers id: 522bdf41bdbd2bfe5d70f1b36466741d - source: openapi3 tags repository: https://github.com/stackql/stackql-provider-registry v3: true id: ab1223f46183efa011bd7c836c344820 repositoryMetadata: base64Readme: >- PCEtLSBsYW5ndWFnZTogbGFuZy1ub25lIC0tPgpbIVtHaXRIdWIgQWN0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrcWwvc3RhY2txbC1wcm92aWRlci1yZWdpc3RyeS9hY3Rpb25zL3dvcmtmbG93cy9tYWluLnltbC9iYWRnZS5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL2dpdGh1Yi5jb20vc3RhY2txbC9zdGFja3FsLXByb3ZpZGVyLXJlZ2lzdHJ5L2FjdGlvbnMvd29ya2Zsb3dzL21haW4ueW1sKQohW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2Uvc3RhY2txbC9zdGFja3FsKQoKIyBTdGFja1FMIFByb3ZpZGVyIFJlZ2lzdHJ5CgpBIHJlcG9zaXRvcnkgb2YgYHByb3ZpZGVyYCBpbnRlcmZhY2UgZG9jdW1lbnRzIHN1cHBvcnRpbmcgW3N0YWNrcWxdKGh0dHBzOi8vc3RhY2txbC5pby8pIChbc3RhY2txbCBHaXRIdWIgcmVwb10oaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrcWwvc3RhY2txbCkpLiAKCiMjIENvbnRleHQKCgpTdGFja1FMIHByb3ZpZGVyIGludGVyZmFjZSBkb2N1bWVudHMgaW5mb3JtIHRoZSBzdGFja3FsIGFwcGxpY2F0aW9uIG9uIGhvdyB0byBpbnRlcmFjdCB3aXRoIGEgZ2l2ZW4gcHJvdmlkZXIgKGxpa2UgYGF3c2AsIGBhenVyZWAsIGBnb29nbGVgLCBldGMpLCBpbmNsdWRpbmcgd2hhdCBtZXRob2RzIGFyZSBhdmFpbGFibGUgaW4gdGhlIHByb3ZpZGVyIGFuZCBob3cgdG8gaW52b2tlIHRoZXNlIHVzaW5nIFNRTCBzZW1hbnRpY3MuICBQcm92aWRlciBpbnRlcmZhY2UgZG9jdW1lbnRzIGFyZSBgeWFtbGAgZm9ybWF0dGVkLCBPcGVuQVBJIHNwZWNpZmljYXRpb25zIHdpdGggZXh0ZW5zaW9ucy4gIAoKVGhlIGRvY3VtZW50cyBhcmUgdmVyc2lvbmVkIHBlciBwcm92aWRlciBpbiB0aGlzIHJlcG9zaXRvcnksIGFuZCBidWlsdCBhcyBzaWduZWQgYW5kIGNvbXByZXNzZWQgYXMgcGFja2FnZWQgYXJ0aWZhY3RzLiAgVGhlIHBhY2thZ2VkIGFydGlmYWN0cyBhcmUgcmVnaXN0ZXJlZCBhbmQgcHVibGlzaGVkIHRvIHRoZSBTdGFja1FMIFByb3ZpZGVyIFJlZ2lzdHJ5IEFydGlmYWN0IFJlcG9zaXRvcnkgaW4gQVdTIFMzLiAgVGhlIHByb3ZpZGVyIHJlZ2lzdHJ5IEFQSSBpcyBhIFtEZW5vIERlcGxveV0oaHR0cHM6Ly9kZW5vLmNvbS9kZXBsb3kpIGFwcGxpY2F0aW9uIHRoYXQgc2VydmVzIHRoZSBwcm92aWRlciBpbnRlcmZhY2UgZG9jdW1lbnRzIHRvIHRoZSBzdGFja3FsIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBgUkVHSVNUUlkgTElTVGAgYW5kIGBSRUdJU1RSWSBQVUxMYCBjb21tYW5kcy4gIAoKVGhlIGZvbGxvd2luZyBkaWFncmFtIHNob3dzIHRoZSBjb250ZXh0IG9mIHRoZSBwcm92aWRlciByZWdpc3RyeTogIAoKYGBgbWVybWFpZApDNENvbnRleHQKICAgIFN5c3RlbV9FeHQoZ2l0aHViX3JlcG8sICJzdGFja3FsLXByb3ZpZGVyLXJlZ2lzdHJ5IiwgIkdpdEh1YiBSZXBvc2l0b3J5IikKICAgIFN5c3RlbV9FeHQoZ2l0aHViX2FjdGlvbnMsICJCdWlsZCBhbmQgRGVwbG95IiwgIkdpdEh1YiBBY3Rpb25zIikKICAgIFN5c3RlbURiKGFydGlmYWN0X3JlcG8sICJBcnRpZmFjdCBSZXBvc2l0b3J5IiwgIkFXUyBTMyIpCiAgICBTeXN0ZW0oZGVub19yZWdpc3RyeSwgIlByb3ZpZGVyIFJlZ2lzdHJ5IEFQSSIsICJEZW5vIERlcGxveSIpCiAgICBTeXN0ZW0oc3RhY2txbCwgIlN0YWNrUUwgQXBwbGljYXRpb24iLCAic3RhY2txbCIpCgogICAgUmVsKGdpdGh1Yl9yZXBvLCBnaXRodWJfYWN0aW9ucywgInRyaWdnZXJzLi4uIikKICAgIFJlbChnaXRodWJfYWN0aW9ucywgYXJ0aWZhY3RfcmVwbywgInJlZ2lzdGVycyBhbmQgcHVzaGVzIHRvLi4uIiwgInNpZ25lZCB0Z3ogcGFja2FnZSIpCiAgICBSZWwoZ2l0aHViX2FjdGlvbnMsIGRlbm9fcmVnaXN0cnksICJwdXNoZXMgdG8uLi4iLCAic2lnbmVkIHRneiBwYWNrYWdlIikKICAgIFJlbChzdGFja3FsLCBkZW5vX3JlZ2lzdHJ5LCAibGlzdCBhbmQgcHVsbHMgcmVnaXN0cnkgZG9jcyBmcm9tLi4uIiwgIlJFR0lTVFJZIExJU1QgfCBSRUdJU1RSWSBQVUxMIikKICAgIFVwZGF0ZUxheW91dENvbmZpZygkYzRTaGFwZUluUm93PSIzIiwgJGM0Qm91bmRhcnlJblJvdz0iMCIpCiAgICBVcGRhdGVSZWxTdHlsZShnaXRodWJfcmVwbywgZ2l0aHViX2FjdGlvbnMsICRvZmZzZXRZPSIxMCIsICRvZmZzZXRYPSItMjAiKQogICAgVXBkYXRlUmVsU3R5bGUoZ2l0aHViX2FjdGlvbnMsIGFydGlmYWN0X3JlcG8sICRvZmZzZXRZPSI0NCIsICRvZmZzZXRYPSItNTUiKQogICAgVXBkYXRlUmVsU3R5bGUoZ2l0aHViX2FjdGlvbnMsIGRlbm9fcmVnaXN0cnksICRvZmZzZXRZPSItMTgiLCAkb2Zmc2V0WD0iLTEzMCIpCiAgICBVcGRhdGVSZWxTdHlsZShzdGFja3FsLCBkZW5vX3JlZ2lzdHJ5LCAkb2Zmc2V0WT0iNDAiLCAkb2Zmc2V0WD0iLTQwIikKYGBgCgpUaGUgcHVibGljIFN0YWNrUUwgUHJvdmlkZXIgUmVnaXN0cnkgaXMgZGlzdHJpYnV0ZWQgdmlhIFtEZW5vIERlcGxveV0oaHR0cHM6Ly9kZW5vLmNvbS9kZXBsb3kpLCB1c2luZyB0aGUgZm9sbG93aW5nIGVuZHBvaW50czogIAoKfCBFbmRwb2ludCB8IERlc2NyaXB0aW9uIHwKfCAtLS0gfCAtLS0gfAp8IFtyZWdpc3RyeS5zdGFja3FsLmFwcF0oaHR0cHM6Ly9yZWdpc3RyeS5zdGFja3FsLmFwcC9waW5nKSB8IFByb2R1Y3Rpb24gcmVnaXN0cnkgKGJ1aWx0IGZyb20gYG1haW5gKSB8CnwgW3JlZ2lzdHJ5LWRldi5zdGFja3FsLmFwcF0oaHR0cHM6Ly9yZWdpc3RyeS5zdGFja3FsLmFwcC9waW5nKSB8IERldmVsb3BtZW50IHJlZ2lzdHJ5IChidWlsdCBmcm9tIGBkZXZlbG9wYCkgfAoKIyMgQ29udHJpYnV0aW5nCgpQbGVhc2Ugc2VlIFsuZ2l0aHViL0NPTlRSSUJVVElORy5tZF0oLy5naXRodWIvQ09OVFJJQlVUSU5HLm1kKS4KCiMjIERldmVsb3BpbmcgYSBQcm92aWRlcgoKU3RhY2tRTCBwcm92aWRlcnMgYXJlIGdlbmVyYXRlZCBmcm9tIHByb3ZpZGVyIE9wZW5BUEkgb3IgU3dhZ2dlciBzcGVjaWZpY2F0aW9ucyAoZWl0aGVyIHN1cHBsaWVkIGJ5IHRoZSBwcm92aWRlciBvciBjb25zdGl0dXRlZCB0aHJvdWdoIG90aGVyIHNjcmlwdHMgLSBmb3IgZXhhbXBsZSwgW2dvb2dsZS1kaXNjb3ZlcnktdG8tb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrcWwvZ29vZ2xlLWRpc2NvdmVyeS10by1vcGVuYXBpKSBvciBbc3RhY2txbC1henVyZS1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vc3RhY2txbC9zdGFja3FsLWF6dXJlLW9wZW5hcGkpKS4gIAoKT25jZSB5b3UgaGF2ZSBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24sIHlvdSBjYW4gdXNlIHRoZSBbb3BlbmFwaXNhdXJ1c10oaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrcWwvb3BlbmFwaXNhdXJ1cykgdXRpbGl0eSBwcm9qZWN0IHRvIGdlbmVyYXRlIGEgU3RhY2tRTCBwcm92aWRlciBkb2N1bWVudC4gIAoKIyMgQnVpbGQgYW5kIERlcGxveW1lbnQgV29ya2Zsb3cKClRoZSBwcm92aWRlciByZWdpc3RyeSBpcyBidWlsdCBhbmQgZGVwbG95ZWQgdXNpbmcgR2l0SHViIEFjdGlvbnMuICBQcm92aWRlciBkb2N1bWVudHMgYXJlIHZhbGlkYXRlZCBhbmQgdGVzdGVkIGluIHdvcmtmbG93IHN0ZXBzIGFuZCB0aGVuIHBhY2thZ2VkIGFuZCBzdG9yZWQgaW4gdGhlIGFydGlmYWN0IHJlcG9zaXRvcnkuICBUaGUgbW9zdCByZWNlbnQgcGFja2FnZWQgdmVyc2lvbnMgYXJlIHB1Ymxpc2hlZCB0byB0aGUgcmVnaXN0cnkgQVBJIChhIFtEZW5vIERlcGxveV0oaHR0cHM6Ly9kZW5vLmNvbS9kZXBsb3kpIGFwcGxpY2F0aW9uKSwgd2hlcmUgdGhleSBhcmUgYXZhaWxhYmxlIGZyb20gdGhlIGBzdGFja3FsYCBhcHBsaWNhdGlvbiB1c2luZyBgUkVHSVNUUlkgTElTVGAgb3IgYFJFR0lTVFJZIFBVTExgLiAgU2VlIFtkb2NzL2J1aWxkLWFuZC1kZXBsb3ltZW50Lm1kXShkb2NzL2J1aWxkLWFuZC1kZXBsb3ltZW50Lm1kKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gIAoKIyMgVGVzdGluZyBhIFByb3ZpZGVyIHVzaW5nIHRoZSBgZGV2YCBSZWdpc3RyeQoKVXNlIHRoZSBmb2xsb3dpbmcgc3RlcHMgdG8gdGVzdCBhIHByb3ZpZGVyIHVzaW5nIHRoZSBgZGV2YCByZWdpc3RyeTogIAoKYGBgYmFzaApleHBvcnQgREVWX1JFRz0ieyBcInVybFwiOiBcImh0dHBzOi8vcmVnaXN0cnktZGV2LnN0YWNrcWwuYXBwL3Byb3ZpZGVyc1wiIH0iCi4vc3RhY2txbCAtLXJlZ2lzdHJ5PSIke0RFVl9SRUd9IiBzaGVsbApgYGA= readmeEtag: '"49bf6971ba5d86cf1233c839a45ebb41f6c1e236"' readmeLastModified: Wed, 31 Jul 2024 13:53:02 GMT repositoryId: 441087132 description: >- Registry for cloud and SaaS providers for StackQL, generated from extensions to the providers OpenAPI3 specification created: '2021-12-23T06:39:01Z' updated: '2026-01-20T11:01:25Z' language: Go archived: false stars: 27 watchers: 2 forks: 3 owner: stackql logo: https://avatars.githubusercontent.com/u/95105302?v=4 repoEtag: '"51ad0a86fd86249b196e17af83ef8dee35e31f31f16185a159d62f1d53a8dd43"' repoLastModified: Tue, 20 Jan 2026 11:01:25 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/shipengine/shipengine-openapi v3: true repositoryMetadata: base64Readme: >- IVtPcGVuQVBJIExvZ29dKGh0dHBzOi8vc2hpcGVuZ2luZS5naXRodWIuaW8vaW1nL29wZW5hcGktbG9nby5wbmcpIFNoaXBFbmdpbmXihKIgT3BlbkFQSSBEZWZpbml0aW9uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClRoaXMgcmVwbyBjb250YWlucyB0aGUgb2ZmaWNpYWwgW09wZW5BUEkgMy4wXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMi5tZCkgZGVmaW5pdGlvbnMgZm9yIHRoZSBbU2hpcEVuZ2luZSBBUEldKGh0dHBzOi8vc2hpcGVuZ2luZS5jb20pLiAgWW91IGNhbiB1c2UgdGhlc2UgZGVmaW5pdGlvbnMgd2l0aCBhbnkgb2YgY291bnRsZXNzIFtPcGVuQVBJIHRvb2xzXShodHRwczovL29wZW5hcGkudG9vbHMvKSB0byBnZW5lcmF0ZSBzYW1wbGUgY29kZSwgdGVzdHMsIG1vY2sgc2VydmVycywgZXRjLgoKCldoaWNoIGZpbGUgdG8gdXNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRlcGVuZGluZyBvbiB5b3VyIHByZWZlcmVuY2VzIGFuZC9vciB0b29saW5nLCB5b3UgbWF5IGNob29zZSB0byB1c2Ugb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZyBmaWxlczoKCnxQYXRoICAgICAgICAgICAgICAgIHxEZXNjcmlwdGlvbgp8Oi0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnxbYG9wZW5hcGkueWFtbGBdKG9wZW5hcGkueWFtbCkgICAgICAgIHxUaGUgZW50aXJlIFNoaXBFbmdpbmUgT3BlbkFQSSBkZWZpbml0aW9uLCBpbiBhIHNpbmdsZSBZQU1MIGZpbGUuICBUaGlzIGZpbGUgdXNlcyBbYCRyZWZgIHBvaW50ZXJzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMi5tZCNyZWZlcmVuY2Utb2JqZWN0KSB0byByZWR1Y2UgZHVwbGljYXRpb24gYW5kIGtlZXAgdGhlIGZpbGUgc21hbGwgYW5kIGZhaXJseSBodW1hbi1yZWFkYWJsZS48YnI+PGJyPiBTb21lIFtPcGVuQVBJIHRvb2xzXShodHRwczovL29wZW5hcGkudG9vbHMvKSBkb24ndCBzdXBwb3J0IFlBTUwgb3IgZG9uJ3Qgc3VwcG9ydCBgJHJlZmAgcG9pbnRlcnMsIHNvIHlvdSBtYXkgbmVlZCB0byB1c2UgdGhlIFtgb3BlbmFwaS5qc29uYCBmaWxlXShvcGVuYXBpLmpzb24pIGluc3RlYWQuCnxbYG9wZW5hcGkuanNvbmBdKG9wZW5hcGkuanNvbikgICAgICAgIHxUaGUgZW50aXJlIFNoaXBFbmdpbmUgT3BlbkFQSSBkZWZpbml0aW9uLCBpbiBhIHNpbmdsZSBKU09OIGZpbGUuICBUaGlzIGZpbGUgKipkb2VzIG5vdCoqIGNvbnRhaW4gYW55IGAkcmVmYCBwb2ludGVycywgd2hpY2ggbWVhbnMgaXQgc2hvdWxkIHdvcmsgd2l0aCBhbnkgW09wZW5BUEkgdG9vbF0oaHR0cHM6Ly9vcGVuYXBpLnRvb2xzLykuCgoKT3RoZXIgQVBJIERlZmluaXRpb24gRm9ybWF0cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIyMgIVtSZWRvYyBMb2dvXShodHRwczovL3NoaXBlbmdpbmUuZ2l0aHViLmlvL2ltZy9yZWRvYy1sb2dvLXNtYWxsLnBuZykKVmlldyB0aGUgU2hpcEVuZ2luZSBBUEkgZGVmaW5pdGlvbiBbb25saW5lIGluIHlvdXIgYnJvd3Nlcl0oaHR0cHM6Ly9zaGlwZW5naW5lLmdpdGh1Yi5pby9zaGlwZW5naW5lLW9wZW5hcGkvKS4gVGhpcyB3ZWIgcGFnZSBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgW09wZW5BUEkgZGVmaW5pdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL1NoaXBFbmdpbmUvc2hpcGVuZ2luZS1vcGVuYXBpKSB1c2luZyBbUmVEb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jKS4KCgojIyMgIVtQb3N0bWFuIExvZ29dKGh0dHBzOi8vc2hpcGVuZ2luZS5naXRodWIuaW8vaW1nL3Bvc3RtYW4tbG9nby1zbWFsbC5wbmcpIFBvc3RtYW4KVGhlIG9mZmljaWFsIFtQb3N0bWFuIHJlZmVyZW5jZSBjb2xsZWN0aW9uXShodHRwczovL2RvY3VtZW50ZXIuZ2V0cG9zdG1hbi5jb20vdmlldy8zMDUyMDQvU1c3VzVWNm8pIGZvciBTaGlwRW5naW5lLiAgSnVzdCBpbXBvcnQgaXQgaW50byBbUG9zdG1hbl0oaHR0cHM6Ly9nZXRwb3N0bWFuLmNvbSkgYW5kIGltbWVkaWF0ZWx5IGJlZ2luIGludGVyYWN0aW5nIHdpdGggdGhlIFNoaXBFbmdpbmUgQVBJLiAKCgpOZXcgdG8gU2hpcEVuZ2luZT8gRG93bmxvYWQgb3VyIFt3YWxrdGhyb3VnaCBjb2xsZWN0aW9uIGluc3RlYWRdKGh0dHBzOi8vZG9jdW1lbnRlci5nZXRwb3N0bWFuLmNvbS92aWV3LzMwNTIwNC9TVzdYYkE2VikuCgoKIyMjICFbSlNPTiBTY2hlbWEgTG9nb10oaHR0cHM6Ly9zaGlwZW5naW5lLmdpdGh1Yi5pby9pbWcvanNvbi1zY2hlbWEtbG9nby1zbWFsbC5wbmcpIEpTT04gU2NoZW1hCklmIHlvdSBuZWVkIHRvIHZhbGlkYXRlIEFQSSByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzLCB0aGVuIHlvdSBtYXkgd2FudCB0byB1c2UgW291ciBKU09OIFNjaGVtYSBkZWZpbml0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL1NoaXBFbmdpbmUvc2hpcGVuZ2luZS1qc29uLXNjaGVtYSkuCg== readmeEtag: '"905646882c040ce5f7cbff386973219b5fc0b66b"' readmeLastModified: Tue, 13 Aug 2024 01:33:22 GMT repositoryId: 155577069 description: The official OpenAPI 3.0 definitions for ShipEngine™ created: '2018-10-31T15:06:25Z' updated: '2026-02-06T01:39:28Z' language: null archived: false stars: 26 watchers: 22 forks: 16 owner: ShipEngine logo: https://avatars.githubusercontent.com/u/42709242?v=4 repoEtag: '"12edf10ff8a52c48f2e6ccf999eda36b6cb155ac9c1250ed2c6fde5b94933181"' repoLastModified: Fri, 06 Feb 2026 01:39:28 GMT foundInMaster: true category: Parsers id: ff407dc64fade9a4275ec5d32f20aab5 - source: openapi3 tags repository: https://github.com/contractual-dev/contractual v3: true id: 626dd00f9d9912930334e688a8dffb7a repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPkNvbnRyYWN0dWFsPC9oMT4NCg0KQ29udHJhY3R1YWwgaXMgYSB0b29sIGZvciBtYW5hZ2luZyBBUEkgYW5kIGRhdGEgc2NoZW1hcyBhcyBzdHJ1Y3R1cmVkIGNvbnRyYWN0cy4gSXQgZW5zdXJlcyB0aGF0IHNjaGVtYXMNCmFyZSBkZWZpbmVkLCB2ZXJzaW9uZWQsIGFuZCBlbmZvcmNlZCBhY3Jvc3MgdGVhbXMsIHdoZXRoZXIgZm9yIFJFU1QgQVBJcywgZXZlbnQtZHJpdmVuIHN5c3RlbXMsIG9yIHN0cnVjdHVyZWQgZGF0YQ0KZXhjaGFuZ2VzLg0KDQpDb21tb24gdXNlIGNhc2VzIGluY2x1ZGU6IFwNCvCflLkgS2VlcGluZyBBUEkgQ29udHJhY3RzIGluIFN5bmMgQmV0d2VlbiBCYWNrZW5kIGFuZCBGcm9udGVuZCBcDQrwn5S5IEdlbmVyYXRpbmcgVHlwZS1TYWZlIENsaWVudHMgYW5kIFNlcnZlciBDb250cmFjdHMgXA0K8J+UuSBQcmV2ZW50aW5nIEJyZWFraW5nIENoYW5nZXMgYW5kIERldGVjdGluZyBTY2hlbWEgRHJpZnQgXA0K8J+UuSBFbnN1cmluZyBDb25zaXN0ZW5jeSBCZXR3ZWVuIEJhY2tlbmQgYW5kIERhdGEgVGVhbXMgXA0K8J+UuSBHZW5lcmF0aW5nIExhbmd1YWdlLVNwZWNpZmljIFR5cGVzIGZyb20gYSBTaGFyZWQgQ29udHJhY3QNCg0KQnkgdHJlYXRpbmcgc2NoZW1hcyBhcyBmaXJzdC1jbGFzcyBlbnRpdGllcywgQ29udHJhY3R1YWwgZWxpbWluYXRlcyB1bmNlcnRhaW50eSBhdCBpbnRlZ3JhdGlvbiBwb2ludHMsIGVuYWJsaW5nIGJhY2tlbmQsDQpmcm9udGVuZCwgYW5kIGRhdGEgZW5naW5lZXJpbmcgdGVhbXMgdG8gbWFpbnRhaW4gcHJlZGljdGFibGUgYW5kIGVuZm9yY2VhYmxlIEFQSXMgYW5kIHN0cnVjdHVyZWQgZGF0YSBhY3Jvc3MgdGhlIGVudGlyZQ0Kc3RhY2suDQoNCj4gSW5pdGlhbGx5IGJ1aWx0IGZvciB0aGUgKipOb2RlLmpzIGFuZCBUeXBlU2NyaXB0IGVjb3N5c3RlbSoqLCBDb250cmFjdHVhbCBpcyBwbGFubmVkIHRvIHN1cHBvcnQgYWRkaXRpb25hbA0KPiBsYW5ndWFnZXMuDQoNCiMjIPCfmoAgSW4gUHJhY3RpY2UNCg0KIyMjIEluc3RhbGwgQ29udHJhY3R1YWwNCg0KVG8gZ2V0IHN0YXJ0ZWQsIGluc3RhbGwgdGhlIENvbnRyYWN0dWFsIENMSSBnbG9iYWxseToNCg0KYGBgYmFzaA0KbnBtIGkgLWcgQGNvbnRyYWN0dWFsL2NsaQ0KYGBgDQoNCiMjIyBJbml0aWFsaXplIFlvdXIgUHJvamVjdA0KDQpSdW4gdGhlIGBpbml0YCBjb21tYW5kIHRvIHNjYWZmb2xkIGEgbmV3IHByb2plY3Q6DQoNCmBgYGJhc2gNCmNvbnRyYWN0dWFsIGluaXQNCmBgYA0KDQpUaGlzIGNvbW1hbmQgY3JlYXRlcyB0aGUgZm9sbG93aW5nIHByb2plY3Qgc3RydWN0dXJlOg0KDQpgYGANCmZyb250ZW5kLyAgICAgICAgICAjIFlvdXIgZnJvbnRlbmQgYXBwbGljYXRpb24NCnNlcnZlci8gICAgICAgICAgICAjIFlvdXIgc2VydmVyIGFwcGxpY2F0aW9uDQpjb250cmFjdHVhbC8gICAgICAgIyBDb250cmFjdHVhbCBmaWxlcw0K4pSc4pSA4pSAIGFwaS50c3AgICAgICAgICMgVHlwZVNwZWMgQVBJIGRlZmluaXRpb24NCuKUnOKUgOKUgCBzcGVjcy8gICAgICAgICAjIE9wZW5BUEkgYXV0by1nZW5lcmF0ZWQgc3BlY3MNCmBgYA0KDQo+IENvbnRyYWN0dWFsIHdvcmtzIHNlYW1sZXNzbHkgd2l0aCAqKm1vbm9yZXBvcyoqLCAqKm1vbm9saXRocyoqLCBhbmQgZGlzdHJpYnV0ZWQgcmVwb3NpdG9yaWVzLg0KDQojIyMgRGVmaW5lIFlvdXIgQVBJDQoNCldyaXRlIHlvdXIgQVBJIGRlZmluaXRpb24gaW4gdGhlIGBhcGkudHNwYCBmaWxlLiBGb3IgZXhhbXBsZToNCg0KYGBgdHNwDQppbXBvcnQgIkB0eXBlc3BlYy9odHRwIjsNCmltcG9ydCAiQHR5cGVzcGVjL29wZW5hcGkiOw0KaW1wb3J0ICJAdHlwZXNwZWMvb3BlbmFwaTMiOw0KDQp1c2luZyBUeXBlU3BlYy5IdHRwOw0KDQpAc2VydmljZSh7DQogIHRpdGxlOiAiUGV0c3RvcmUgQVBJIiwNCn0pDQpuYW1lc3BhY2UgUGV0c3RvcmVBUEk7DQoNCm1vZGVsIFBldCB7DQogIGlkOiBzdHJpbmc7DQogIG5hbWU6IHN0cmluZzsNCn0NCg0KQHJvdXRlKCIvcGV0IikNCkBwb3N0DQpvcCBhZGRQZXQoQGJvZHkgYm9keTogUGV0KTogUGV0Ow0KYGBgDQoNCj4gWW91IGNhbiBleHBlcmltZW50IGFuZCB2YWxpZGF0ZSB5b3VyIEFQSSBkZWZpbml0aW9ucyBbdXNpbmcgdGhlIFR5cGVTcGVjIHBsYXlncm91bmRdKGh0dHBzOi8vdHlwZXNwZWMuaW8vcGxheWdyb3VuZC8pDQoNCiMjIyBNYW5hZ2UgQVBJIENoYW5nZXMNCg0KIyMjIyBTYXZlIHRoZSBDdXJyZW50IFN0YXRlIG9mIFlvdXIgQVBJDQoNClJ1biB0aGUgYHNwZWMgZ3JhZHVhdGVgIGNvbW1hbmQgdG8gc2F2ZSB0aGUgY3VycmVudCBzdGF0ZSBvZiB5b3VyIE9wZW5BUEkgc3BlYzoNCg0KYGBgYmFzaA0KY29udHJhY3R1YWwgc3BlYyBncmFkdWF0ZQ0KYGBgDQoNClRoaXMgd2lsbCBnZW5lcmF0ZSBhIG5ldyBPcGVuQVBJICgzLjEuMCkgWUFNTCBmaWxlIHdpdGggdmVyc2lvbmluZywgZW5hYmxpbmcgdG8gdHJhY2sgQVBJIGNoYW5nZXMgb3ZlciB0aW1lLiBUaGUNCnVwZGF0ZWQgc3RydWN0dXJlIHdpbGwgbG9vayBsaWtlIHRoaXM6DQoNCmBgYA0KY29udHJhY3R1YWwvDQrilJzilIDilIAgYXBpLnRzcCAgICAgICAgICAgICAgICAgICMgVHlwZVNwZWMgQVBJIGRlZmluaXRpb24NCuKUnOKUgOKUgCBzcGVjcy8gICAgICAgICAgICAgICAgICAgIyBPcGVuQVBJIGF1dG8tZ2VuZXJhdGVkIHNwZWNzDQrilIIgICDilJzilIDilIAgb3BlbmFwaS12MS4wLjAueWFtbA0KY2xpZW50LyAgICAgICAgICAgICAgICAgICAgICAjIEdlbmVyYXRlZCBBUEkgY2xpZW50cw0Kc2VydmVyLyAgICAgICAgICAgICAgICAgICAgICAjIFNlcnZlciBjb250cmFjdHMNCmUyZS8gICAgICAgICAgICAgICAgICAgICAgICAgIyBUeXBlLXNhZmUgQVBJLWRyaXZlbiB0ZXN0cw0KYGBgDQoNCj4gWW91IGNhbiB0cmFjayBBUEkgZXZvbHV0aW9uIGFuZCBjaGFuZ2VzIGVhc2lseSB3aXRoIGNsZWFyLCB2ZXJzaW9uZWQgT3BlbkFQSSBzcGVjcy4NCg0KSGVyZeKAmXMgYSBxdWljayB2aWRlbyBzaG93aW5nIGhvdyB0aGlzIHdvcmtzOg0KDQo8ZGl2IGFsaWduPSJjZW50ZXIiPg0KICA8aW1nIHNyYz0ic3BlYy1ncmFkdWF0ZS5naWYiIC8+DQo8L2Rpdj4NCg0KIyMjIEdlbmVyYXRlIENvbnRyYWN0cw0KDQpSdW4gdGhlIGBjb250cmFjdCBnZW5lcmF0ZWAgY29tbWFuZCB0byBnZW5lcmF0ZSB0eXBlLXNhZmUgY2xpZW50cywgc2VydmVyIGNvbnRyYWN0cywgYW5kIHVwZGF0ZWQgT3BlbkFQSSBzcGVjczoNCg0KYGBgYmFzaA0KY29udHJhY3R1YWwgY29udHJhY3QgZ2VuZXJhdGUNCmBgYA0KDQpUaGlzIGNvbW1hbmQgY3JlYXRlczoNCg0KLSAqKlR5cGUtc2FmZSBjbGllbnQgbGlicmFyaWVzKiogW3VzaW5nICoqdHMtcmVzdCoqXShodHRwczovL3RzLXJlc3QuY29tKSwgaW50ZWdyYXRlZCB3aXRoICoqWm9kKiogZm9yIHJ1bnRpbWUNCiAgdmFsaWRhdGlvbi4NCi0gKipTZXJ2ZXIgY29udHJhY3RzKiogZm9yIGZyYW1ld29ya3MgbGlrZSAqKkV4cHJlc3MqKiwgKipGYXN0aWZ5KiosIGFuZCAqKk5lc3RKUyoqLg0KLSAqKlVwZGF0ZWQgT3BlbkFQSSBzcGVjcyoqLg0KDQpIZXJl4oCZcyBhIHNob3J0IHZpZGVvIHNob3dpbmcgY29udHJhY3QgZ2VuZXJhdGlvbiBpbiBhY3Rpb246DQoNCjxkaXYgYWxpZ249ImNlbnRlciI+DQogIDxpbWcgc3JjPSJjb250cmFjdC1nZW5lcmF0ZS5naWYiIC8+DQo8L2Rpdj4NCmBgYA0KDQojIyDwn5SNIFdoeSBDb250cmFjdHVhbD8NCg0KTWFpbnRhaW5pbmcgdGhlIGNvbnNpc3RlbmN5IG9mIHNjaGVtYXMgYWNyb3NzIHZhcmlvdXMgc2VydmljZXMgcHJlc2VudHMgc2lnbmlmaWNhbnQgY2hhbGxlbmdlcy4gQXMgc3lzdGVtcyBldm9sdmUsDQp0eXBlLWRlZmluaXRpb25zIGFuZCBzY2hlbWFzIGRyaWZ0LCB1bm5vdGljZWQgYnJlYWtpbmcgY2hhbmdlcyBvY2N1ciwgYW5kIGRpZmZlcmVudCB0ZWFtcyBmaW5kIGl0IGNoYWxsZW5naW5nIHRvDQpzeW5jaHJvbml6ZS4gQVBJcywgZXZlbnQgc2NoZW1hcywgYW5kIHN0cnVjdHVyZWQgZGF0YSBmb3JtYXRzIG9mdGVuIGJlY29tZSBkaXNjb25uZWN0ZWQgZnJvbSB0aGVpciBvcmlnaW5hbCBpbnRlbnQsDQpsZWFkaW5nIHRvIGJyaXR0bGUgaW50ZWdyYXRpb25zLCBtYW51YWwgZml4ZXMsIGFuZCB1bmV4cGVjdGVkIGZhaWx1cmVzLg0KDQoqKlNvbWUgb2YgdGhlIGJpZ2dlc3QgcGFpbiBwb2ludHMgdGVhbXMgZmFjZSBpbmNsdWRlOioqDQoNCi0gKipTY2hlbWEgRHJpZnQgJiBNaXNhbGlnbm1lbnQ6KiogQVBJcyBhbmQgZGF0YSBjb250cmFjdHMgYmVjb21lIGluY29uc2lzdGVudCBhY3Jvc3MgdGVhbXMsIGxlYWRpbmcgdG8gbWlzbWF0Y2hlcywgYnJva2VuIGludGVncmF0aW9ucywgYW5kIHJlZ3Jlc3Npb25zLg0KDQotICoqVW50cmFja2VkIENoYW5nZXMgJiBCcmVha2luZyBVcGRhdGVzOioqIFdpdGhvdXQgdHJhY2tpbmcgbW9kaWZpY2F0aW9ucywgdXBkYXRlcyBjYW4gdW5leHBlY3RlZGx5IGJyZWFrIGNvbnN1bWVycywgY2F1c2luZyBkb3dudGltZSBhbmQgY29zdGx5IGRlYnVnZ2luZy4NCg0KLSAqKlNjYXR0ZXJlZCBTY2hlbWFzICYgQ29kZSBNYWludGVuYW5jZToqKiBPdXRkYXRlZCBkb2N1bWVudGF0aW9uIGFuZCBtYW51YWxseSBtYW5hZ2VkIHR5cGUgZGVmaW5pdGlvbnMgY3JlYXRlIHVucmVsaWFibGUgaW50ZWdyYXRpb25zIGFuZCBtYWtlIG1haW50YWluaW5nIGVudGl0eSBtb2RlbHMgZXJyb3ItcHJvbmUuDQoNCiMjIPCflJEgVGhlIENvbnRyYWN0LUZpcnN0IEFwcHJvYWNoDQpNb3N0IHRlYW1zIHRha2UgYSAqKmNvZGUtZmlyc3QqKiBhcHByb2FjaCB0byBBUEkgZGV2ZWxvcG1lbnQsIHdoZXJlIHNjaGVtYXMgYXJlIGdlbmVyYXRlZCBhZnRlciBpbXBsZW1lbnRhdGlvbi4gVGhpcyBvZnRlbiByZXN1bHRzIGluICoqbWlzYWxpZ25tZW50IGJldHdlZW4gc2VydmljZXMsIG91dGRhdGVkIGRvY3VtZW50YXRpb24sIGFuZCBhY2NpZGVudGFsIGJyZWFraW5nIGNoYW5nZXMuKiogQmFja2VuZCB0ZWFtcyBkZWZpbmUgQVBJcywgZnJvbnRlbmQgdGVhbXMgY29uc3VtZSB0aGVtLCBhbmQgZGF0YSBlbmdpbmVlcnMgcmVseSBvbiBzdHJ1Y3R1cmVkIGRhdGEgZm9ybWF0c+KAlGFsbCBvZiB3aGljaCBjYW4gZHJpZnQgb3ZlciB0aW1lIHdoZW4gc2NoZW1hcyBhcmUgYW4gYWZ0ZXJ0aG91Z2h0Lg0KDQpBICoqY29udHJhY3QtZmlyc3QqKiBhcHByb2FjaCBmbGlwcyB0aGlzIHByb2Nlc3M6IHNjaGVtYXMgYXJlIGRlc2lnbmVkIGJlZm9yZSBhbnkgaW1wbGVtZW50YXRpb24gYmVnaW5zLCBlbnN1cmluZyB0aGF0IEFQSSBzdHJ1Y3R1cmVzLCBldmVudCBkZWZpbml0aW9ucywgYW5kIGRhdGEgZm9ybWF0cyByZW1haW4gc3RhYmxlIGFuZCBwcmVkaWN0YWJsZS4gVGhpcyBhcHByb2FjaCBhbGxvd3MgdGVhbXMgdG86DQoNCi0gRGVmaW5lIHNjaGVtYXMgdXBmcm9udCBhbmQgZW5mb3JjZSB0aGVtIGFzIHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoLg0KDQotIFRyYWNrIGNoYW5nZXMgYW5kIHByZXZlbnQgYnJlYWtpbmcgdXBkYXRlcyBiZWZvcmUgdGhleSBpbXBhY3QgY29uc3VtZXJzLg0KDQotIEdlbmVyYXRlIHR5cGUtc2FmZSBjbGllbnRzIGFuZCBzZXJ2ZXIgY29udHJhY3RzIGluIG11bHRpcGxlIGxhbmd1YWdlcywgcmVkdWNpbmcgZnJpY3Rpb24gYmV0d2VlbiB0ZWFtcy4NCg0KIyMg8J+TmCBSb2FkbWFwDQoNCldhbnQgdG8gY29udHJpYnV0ZT8gQ2hlY2sgb3V0IHRoZSBhbHBoYSB2ZXJzaW9uIFtSb2FkbWFwXShodHRwczovL2dpdGh1Yi5jb20vY29udHJhY3R1YWwtZGV2L2NvbnRyYWN0dWFsL2lzc3Vlcy84KSBhbmQNCmpvaW4gdGhlIGpvdXJuZXkhIPCfmoANCg0KIyMg4p2k77iPIEpvaW4gdGhlIENvbW11bml0eQ0KDQpDb250cmFjdHVhbCBpcyBvcGVuLXNvdXJjZSwgYW5kIHdl4oCZcmUgbG9va2luZyBmb3IgY29udHJpYnV0b3JzIHRvIGhlbHAgc2hhcGUgaXRzIGZ1dHVyZSwgaWYgeW914oCZcmUgaW50ZXJlc3RlZCBpbg0KY29sbGFib3JhdGluZywgcGxlYXNlIHJlYWNoIG91dC4NCg0K8J+TqSAqKkZlZWRiYWNrIG9yIFF1ZXN0aW9ucz8qKiBSZWFjaCBvdXQNCnZpYSBbR2l0SHViIERpc2N1c3Npb25zXShodHRwczovL2dpdGh1Yi5jb20vY29udHJhY3R1YWwtZGV2L2NvbnRyYWN0dWFsL2Rpc2N1c3Npb25zKS4NCg0KIyMg8J+UkiBMaWNlbnNlDQoNCkxpY2Vuc2VkIHVuZGVyIFtNSVRdKExJQ0VOU0UpLg0K readmeEtag: '"eeff71ed86a8bbd6bfc24ab55e6eafbf68fc7332"' readmeLastModified: Fri, 07 Feb 2025 15:37:24 GMT repositoryId: 917350111 description: >- Contractual is a tool for managing API and data schemas as structured contracts. It ensures that schemas are defined, versioned, and enforced across teams, whether for REST APIs, event-driven systems, or structured data exchanges. created: '2025-01-15T20:18:28Z' updated: '2026-01-10T18:10:07Z' language: TypeScript archived: false stars: 33 watchers: 3 forks: 0 owner: contractual-dev logo: https://avatars.githubusercontent.com/u/195186508?v=4 license: MIT repoEtag: '"98056c624066e87ff7a2951dc0a4dd193eda9202e2d8e1b86b3cb6a4306ef421"' repoLastModified: Sat, 10 Jan 2026 18:10:07 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/curvednebula/apibake-js v3: true id: bf23379a010e0d69a29b65a9831316fd repositoryMetadata: base64Readme: >- IyBBcGlCYWtlCgpDb252ZXJ0IE9wZW5BUEkgc3BlYyB0byBQREYuIFN1cHBvcnRzIE9wZW5BUEkgMy4wLjArIGpzb24gYW5kIHlhbWwuCgojIyBRdWljayBTdGFydAoKTm9kZS5qcyAxNisgcmVxdWlyZWQuCgpgYGAKbnBtIGluc3RhbGwgLWcgYXBpYmFrZQoKYXBpYmFrZSA8b3BlbmFwaS5qc29ufC55YW1sfGZvbGRlci1uYW1lPiBbPGZpbGUtb3ItZm9sZGVyMj4gPGZpbGUtb3ItZm9sZGVyMz4gLi4uXSBbPG9wdGlvbnM+XQpgYGAKCioqT3B0aW9uczoqKgoKYGBgCiAtLW91dCA8c3RyaW5nPjogT3V0cHV0IFBERiBmaWxlIG5hbWUuCiAtLXRpdGxlIDxzdHJpbmc+OiBEb2N1bWVudCB0aXRsZS4KIC0tc3VidGl0bGUgPHN0cmluZz46IERvY3VtZW50IHN1YiB0aXRsZS4KIC0tc2VwYXJhdGUtc2NoZW1hczogV2hlbiBtdWx0aXBsZSBBUEkgZmlsZXMgcGFyc2VkLCBjcmVhdGUgc2VwYXJhdGUgc2NoZW1hcyBzZWN0aW9uIGZvciBlYWNoLgogLS1mb290ZXIgPHN0cmluZz46IERlZmluZXMgY29udGVudCBvZiBjb21tb24gcGFnZSBmb290ZXIuIE9wdGlvbnM6ICJwYWdlLW51bWJlciIuIFRvIHR1cm4gb2ZmOiAiIi4KIC0tY29uZmlnIDxzdHJpbmc+OiBQYXRoIHRvIGFwaWJha2UtY29uZmlnLmpzb24uIFNlZSAtLWV4cG9ydC1jb25maWcuCiAtLWV4cG9ydC1jb25maWc6IFNhdmUgZGVmYXVsdCBjb25maWcgaW50byBqc29uIGZpbGUgZm9yIGVkaXRpbmcuCiAtaDogU2hvdyB0aGlzIGhlbHAuCmBgYAoKIyMgRXhhbXBsZXMKClNwZWNpZnkgdGl0bGUgYW5kIHN1YnRpdGxlIGZvciB5b3VyIFBERjoKCmBgYAphcGliYWtlIG9wZW5hcGkuanNvbiAtLXRpdGxlICdSRVNUIEFQSSBTcGVjJyAtLXN1YnRpdGxlICdjcmVhdGVkIHdpdGggQXBpQmFrZScKYGBgCgpDb21iaW5lIHNldmVyYWwgT3BlbkFQSSBzcGVjcyBpbnRvIG9uZSBQREY6CgpgYGAKYXBpYmFrZSBhcGkxLmpzb24gYXBpMi55YW1sIC0tdGl0bGUgJ1JFU1QgQVBJIFNwZWMnCmFwaWJha2UgZGlyL3dpdGgvb3BlbmFwaS1zcGVjcyAtLXRpdGxlICdSRVNUIEFQSSBTcGVjJwpgYGAKCiMjIEN1c3RvbSBjb25maWc6IGZvbnRzLCBjb2xvcnMsIHBhZ2UgbWFyZ2lucy4KClRvIG1vZGlmeSBkZWZhdWx0IGFwaWJha2UgY29uZmlnIC0gZmlyc3QgZXhwb3J0IGl0IGludG8gYSBmaWxlOgoKYGBgCmFwaWJha2UgLS1leHBvcnQtY29uZmlnCmBgYAoKTW9kaWZ5IGFwaWJha2UtY29uZmlnLmpzb24gYW5kIHRlbGwgYXBpYmFrZSB0byB1c2UgaXQ6CgpgYGAKYXBpYmFrZSBvcGVuYXBpLmpzb24gLS1jb25maWcgYXBpYmFrZS1jb25maWcuanNvbgpgYGAKClBERiBkZWZhdWx0IGZvbnRzIGNhbiBiZSBzcGVjaWZpZWQgYnkgdGhlaXIgbmFtZXM6CgogLSBDb3VyaWVyCiAtIENvdXJpZXItQm9sZAogLSBDb3VyaWVyLU9ibGlxdWUKIC0gQ291cmllci1Cb2xkT2JsaXF1ZQogLSBIZWx2ZXRpY2EKIC0gSGVsdmV0aWNhLUJvbGQKIC0gSGVsdmV0aWNhLU9ibGlxdWUKIC0gSGVsdmV0aWNhLUJvbGRPYmxpcXVlCiAtIFN5bWJvbAogLSBUaW1lcy1Sb21hbgogLSBUaW1lcy1Cb2xkCiAtIFRpbWVzLUl0YWxpYwogLSBUaW1lcy1Cb2xkSXRhbGljCiAtIFphcGZEaW5nYmF0cwoKQWx0ZXJuYXRpdmVseSwgZXh0ZXJuYWwgZm9udCBmaWxlcyBjYW4gYmUgc3BlY2lmaWVkLiBTdXBwb3J0ZWQgZm9udCBmb3JtYXRzOiBUcnVlVHlwZSAoLnR0ZiksIE9wZW5UeXBlICgub3RmKSwgV09GRiwgV09GRjIsIFRydWVUeXBlIENvbGxlY3Rpb24gKC50dGMpLCBhbmQgRGF0YWZvcmsgVHJ1ZVR5cGUgKC5kZm9udCkgZm9udHMuCgpFeGFtcGxlOgoKYGBgCnsKICAiZm9udCI6IHsKICAgICJiYXNlU2l6ZSI6IDEwLAogICAgIm1haW4iOiB7CiAgICAgICJub3JtIjogewogICAgICAgICJmYWNlIjogImZvbnRzL1JvYm90by1SZWd1bGFyLnR0ZiIKICAgICAgfSwKICAgICAgImJvbGQiOiB7CiAgICAgICAgImZhY2UiOiAiZm9udHMvUm9ib3RvLUJvbGQudHRmIgogICAgICB9LAogICAgICAiaXRhbGljIjogewogICAgICAgICJmYWNlIjogImZvbnRzL1JvYm90by1JdGFsaWMudHRmIgogICAgICB9CiAgICB9LAogICAgIm1vbm8iOiB7CiAgICAgICJub3JtIjogewogICAgICAgICJmYWNlIjogIkNvdXJpZXIiCiAgICAgIH0sCiAgICAgICJib2xkIjogewogICAgICAgICJmYWNlIjogIkNvdXJpZXItQm9sZCIKICAgICAgfSwKICAgICAgIml0YWxpYyI6IHsKICAgICAgICAiZmFjZSI6ICJDb3VyaWVyLU9ibGlxdWUiCiAgICAgIH0KICAgIH0KICB9LAogIC4uLgp9CmBgYAoKTm90ZTogaWYgZm9udCBmaWxlIGlzIGEgY29sbGVjdGlvbiAoLnR0YykgLSB0aGVuIGZvbnQgc3R5bGUgbXVzdCBiZSBhbHNvIHNwZWNpZmllZC4gRXhhbXBsZToKCmBgYAogImZvbnQiOiB7CiAgICAibWFpbiI6IHsKICAgICAgIm5vcm0iOiB7CiAgICAgICAgImZhY2UiOiAiZm9udHMvUm9ib3RvLnR0YyIsCiAgICAgICAgInN0eWxlIjogIlJvYm90by1SZWd1bGFyIgogICAgICB9LAogICAgICAiYm9sZCI6IHsKICAgICAgICAiZmFjZSI6ICJmb250cy9Sb2JvdG8udHRjIiwKICAgICAgICAic3R5bGUiOiAiUm9ib3RvLUJvbGQiCiAgICAgIH0sCiAgICB9LAogICAgLi4uCiB9CmBgYAoKIyBNSVQgTGljZW5zZQoKQ29weXJpZ2h0IChjKSAyMDIzIEN1cnZlZE5lYnVsYS5jb20KClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwp0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKU09GVFdBUkUuCg== readmeEtag: '"99e8b092bf3a384ed53c1dddb9bfeac2ed13457d"' readmeLastModified: Mon, 20 May 2024 19:20:55 GMT repositoryId: 683452181 description: Convert OpenAPI to PDF. created: '2023-08-26T16:09:46Z' updated: '2025-11-12T14:43:40Z' language: TypeScript archived: false stars: 33 watchers: 2 forks: 4 owner: curvednebula logo: https://avatars.githubusercontent.com/u/1443238?v=4 repoEtag: '"5c5df2ea54914d26cdc7acdaf11af486fbdf0f79157efc49d6c804d9eaedff04"' repoLastModified: Wed, 12 Nov 2025 14:43:40 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/liveramp/reslang v3: true repositoryMetadata: base64Readme: >- IyBSZXNsYW5nOiBBUEkgZGVmaW5pdGlvbnMgbWFkZSBlYXN5CgpSZXNsYW5nIGlzIGEgc2ltcGxlIGxhbmd1YWdlIGZvciBkZXNjcmliaW5nIHJlc291cmNlLW9yaWVudGVkIEFQSXMgJiB0dXJuaW5nIHRoZW0gaW50byBTd2FnZ2VyLiBJdCBwcm9kdWNlcyBTd2FnZ2VyL09wZW5BUEkgd2hpY2ggaXMgZnVsbHkgYWxpZ25lZCB3aXRoIFtMaXZlUmFtcCdzIEFQSSBzdGFuZGFyZHNdKGh0dHBzOi8vbGl2ZXJhbXAuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9DSS9wYWdlcy8xMDE0NDk4MjczL1JGQytBUEktMytMaXZlUmFtcCtBUEkrU3RhbmRhcmRzKS4KCkl0IGNhbiBhbHNvIGdlbmVyYXRlIGFuIFtBc3luY0FQSSBzcGVjaWZpY2F0aW9uXShodHRwczovL3d3dy5hc3luY2FwaS5jb20vKSwgZGVzY3JpYmluZyBldmVudHMsIGZyb20gdGhlIHNhbWUgc3BlYy4gUmVjZW50bHkgd2UgaGF2ZSBhZGRlZCB0aGUgYWJpbGl0eSB0byBnZW5lcmF0ZSBbSlNPTiBzY2hlbWFdKGh0dHBzOi8vanNvbi1zY2hlbWEub3JnLykgZnJvbSB0aGUgUmVzbGFuZyBzcGVjIHRvby4KCltSZWxlYXNlIG5vdGVzXSguL2RvY3MvcmVsZWFzZXMubWQpCgpSZXNsYW5nIGlzIGxpY2Vuc2VkIHVuZGVyIFtBcGFjaGUgVjJdKGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApCgojIyBEb2NzCgp8IFRvcGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IFtXaHkgcmVzbGFuZz9dKC4vZG9jcy93aHkubWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgV2h5IGRvIHdlIG5lZWQgdGhpcyB0b29sIGFuZCB3aGF0IGRvZXMgaXQgb2ZmZXI/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFtJbnRybyB0dXRvcmlhbF0oLi9kb2NzL2ludHJvLm1kKSAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpYmVzIG1ha2luZyBhIHRveSBBUEkgZm9yIG1hbmlwdWxhdGluZyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFtUaGUgQVBJIHBhcmFkaWdtXSguL2RvY3MvcGFyYWRpZ20ubWQpICAgICAgICAgICAgICAgICAgIHwgV2hhdCBpcyB0aGUgUmVzbGFuZyBwYXJhZGlnbSBhbmQgaG93IGRvZXMgaXQgcmVsYXRlIHRvIFJFU1QsIE9PIGFuZCBSUEMgICAgICAgICAgICAgICAgICAgICAgfAp8IFtFdmVudCBpbnRybyB0dXRvcmlhbF0oLi9kb2NzL2ludHJvLWV2ZW50cy5tZCkgICAgICAgICAgIHwgRGVzY3JpYmVzIGEgc2ltcGxlIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIEFzeW5jQVBJIHRvIGRlc2NyaWJlIGV2ZW50cyAgICAgICAgICAgICAgICAgICAgfAp8IFtTZWN0aW9uc10oLi9kb2NzL3NlY3Rpb25zLm1kKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGhpcyBleHBsYWlucyBob3cgdG8gcmVvcmRlciAvIGdyb3VwIHRoZSBwcmVzZW50YXRpb24gb2YgeW91ciByZXNvdXJjZXMgICAgICAgICAgICAgICAgICAgICAgfAp8IFtEaXJlY3QyRGlzdCBBUEldKC4vZG9jcy9kaXJlY3QyZGlzdC1leHBsYW5hdGlvbi5tZCkgICAgIHwgVGhpcyBpcyBhIG1vcmUgY29tcGxleCBleGFtcGxlIHdoaWNoIHJlY3JlYXRlcyB0aGUgZW50aXJlIERpcmVjdDJEaXN0IEFQSS4gICAgICAgICAgICAgICAgICAgfAp8IFtNVUxUSSB2ZXJic10oLi9kb2NzL211bHRpLm1kKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpYmVzIE1VTFRJLSB2ZXJicyBzdWNoIGFzIE1VTFRJUE9TVCwgTVVMVElQQVRDSCBldGMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFtSZWZlcmVuY2UgbWFudWFsXSguL2RvY3MvcmVmZXJlbmNlLm1kKSAgICAgICAgICAgICAgICAgIHwgVGhpcyBkZXNjcmliZXMgdGhlIHN5bnRheCBhbmQgZmVhdHVyZXMgaW4gbW9yZSBkZXB0aC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFtTZXJ2ZXIgYmxvY2tzXSguL2RvY3Mvc2VydmVyLWJsb2Nrcy5tZCkgICAgICAgICAgICAgICAgIHwgVGhpcyBleHBsYWlucyBob3cgdG8gZGVmaW5lIHNlcnZlcnMgZm9yIFJFU1QgYW5kIGV2ZW50cyBBUElzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFtKU09OIHNjaGVtYSBnZW5lcmF0aW9uXSguL2RvY3MvanNvbnNjaGVtYS5tZCkgICAgICAgICAgIHwgVGhpcyBleHBsYWlucyBob3cgdG8gZ2VuZXJhdGUgSlNPTiBzY2hlbWEgZGVmaW5pdGlvbnMgZnJvbSBSZXNsYW5nIGNvZGUgICAgICAgICAgICAgICAgICAgICAgfAp8IFtJbnRlcm5hbCBTeXN0ZW0gRGVzaWduXSguL2RvY3MvUmVzbGFuZ1N5c3RlbURlc2lnbi5wZGYpIHwgRXhwbGFpbnMgaG93IFJlc2xhbmcgaXMgc3RydWN0dXJlZCBhcyBhIHR5cGVzY3JpcHQgYXBwbGljYXRpb24sIGFuZCBob3cgdGhlIHRyYW5zcGlsZXIgd29ya3MgfAp8IFtWU0NvZGUgU3ludGF4IGhpZ2hsaWdodGluZ10oLi92c2NvZGUvUkVBRE1FLm1kKSAgICAgICAgIHwgRXhwbGFpbnMgaG93IHRvIGluc3RhbGwgVlNDb2RlIHN5bnRheCBoaWdobGlnaHRpbmcuIEhpbnQgc2VhcmNoIGV4dGVuc2lvbnMgZm9yIFJlc2xhbmchICAgICAgfAoKIyMgSW5zdGFsbGF0aW9uCgojIyMgRm9yIGxvY2FsIHVzZQoKMS4gZW5zdXJlIG5vZGUgJiB5YXJuIGFyZSBpbnN0YWxsZWQKCihUaGlzIGlzIHRoZSBub2RlLmpzIHN0YWNrIC0gcGxlYXNlIHNlZSBoZXJlIGZvciBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zOiBbbm9kZS5qc10oaHR0cHM6Ly9ub2RlanMub3JnL2VuL2Rvd25sb2FkLykgJiBbeWFybl0oaHR0cHM6Ly9jbGFzc2ljLnlhcm5wa2cuY29tL2VuL2RvY3MvaW5zdGFsbC8jbWFjLXN0YWJsZSkpCgoyLiBjbG9uZSB0aGUgcmVzbGFuZyByZXBvCjMuIHlhcm4gaW5zdGFsbAo0LiAuL2luc3RhbGwtcmVzbGFuZwoKTm90ZSB0aGF0IHN0ZXAgNCBpbnN0YWxscyBpdCBhcyBhIGNvbW1hbmQgbGluZSB0b29sIHVzaW5nICJ5YXJuIGxpbmsiCgojIyBSdW5uaW5nCgpUZXN0IGl0IG91dCBieSB0eXBpbmc6CgogICAgcmVzbGFuZwoKVGhpcyBzaG91bGQgYnJpbmcgdXAgdGhlIG9wdGlvbnMuCgo8ZGV0YWlscz4KICA8c3VtbWFyeT5DbGljayB0byBzZWUgSW5zdGFsbGF0aW9uIG9wdGlvbnM8L3N1bW1hcnk+CgojIyBSdW5uaW5nIGluIERvY2tlciAoZm9yIGludGVybmFsIExpdmVSYW1wIHVzZXJzIG9ubHkpCgpJbmRpdmlkdWFscyB3aG8gZG8gbm90IHdhbnQgdG8gYnVpbGQgUmVzbGFuZyBmcm9tIHNjcmF0Y2ggYXJlIGZyZWUgdG8gdXNlIHRoZSBgcmVzbGFuZy1kb2NrZXJgIHNjcmlwdCB3aGljaCBwcm92aWRlcyBjb252ZW5pZW50LCBidXQgbGltaXRlZCwgZnVuY3Rpb25hbGl0eSB3aXRoIGEgcmVzbGFuZyBjb250YWluZXIuClRoaXMgc2NyaXB0IG91dHB1dHMgdGhlIGdlbmVyYXRlZCBzd2FnZ2VyIHRvIFNURE9VVCBhbmQgcmVxdWlyZXMgYW4gYWJzb2x1dGUgcGF0aCB0byBmdW5jdGlvbi4KCmBgYAogICAgYmFzaCAuL3Jlc2xhbmctZG9ja2VyLnNoICRQV0QvbW9kZWxzL2Rpc3RyaWJ1dGlvbgpgYGAKCjwvZGV0YWlscz4KCiMjIENyZWF0aW5nICYgdmlld2luZyB0aGUgU3dhZ2dlciAvIE9wZW5BUEkKClRvIGNyZWF0ZSBzd2FnZ2VyLCB5b3UgZmlyc3QgY3JlYXRlIGEgcmVzbGFuZyBmaWxlLiBUaGVuIHlvdSBzaW1wbHkgYXNrIHRoZSByZXNsYW5nIHByb2dyYW0gdG8gdHVybiB0aGlzIGludG8gc3dhZ2dlci4KCk5vdGUgdGhhdCB0aGUgbW9kZWxzIGRpcmVjdG9yeSBoYXMgYSBzZXQgb2YgZXhhbXBsZSBkZWZpbml0aW9ucy4KClRoZSBmb2xsb3dpbmcgY29waWVzIHRoZSBzd2FnZ2VyIHRvIHRoZSBjbGlwYm9hcmQgYW5kIG9wZW5zIHRoZSBSZURvYyBicm93c2VyIGZvciB5b3UuCgogICAgcmVzbGFuZyBtb2RlbHMvc2ltcGxlLXJlc291cmNlIC0tb3BlbgoKSWYgeW91IHdhbnQganVzdCB3YW50IHRvIHByaW50IHRvIHN0ZG91dCB1c2U6CgogICAgcmVzbGFuZyBtb2RlbHMvc2ltcGxlLXJlc291cmNlIC0tc3Rkb3V0CgojIyBWaWV3aW5nIFN3YWdnZXIgLyBPcGVuQVBJIGluIFN3YWdnZXIgZWRpdG9yCgpJZiB5b3Ugd2FudCB0byB1c2UgdGhlIFN3YWdnZXIgZWRpdG9yLCBhZGQgLS13ZWIgdG8gdGhlIGNtZCBsaW5lOgoKICAgIHJlc2xhbmcgbW9kZWxzL3NpbXBsZS1yZXNvdXJjZSAtLW9wZW4gLS13ZWIKClRoZW4gcGFzdGUgdGhlIGNsaXBib2FyZCBpbnRvIHRoZSBsZWZ0IHdpbmRvdyBwYW5lIG9mIHRoZSBlZGl0b3IuCgojIyBDcmVhdGluZyBhIGdyYXBoaWNhbCB2aWV3CgpSZXNsYW5nIGNhbiBnZW5lcmF0ZSBkb3R2aXogb3V0cHV0LCB3aGljaCBwcm92aWRlcyBhIG5pY2UgZ3JhcGhpY2FsIHZpZXcgb2YgdGhlIHJlc291cmNlcy4KClRoZSBmb2xsb3dpbmcgY29tbWFuZCB3aWxsIGNvcHkgdGhlIGRvdHZpeiBvdXRwdXQgdG8gdGhlIGNsaXBib2FyZC4KCiAgICByZXNsYW5nIG1vZGVscy9zaW1wbGUtcmVzb3VyY2UgLS1vcGVuIC0tZGlhZ3JhbSBtYWluCgpUaGlzIHdpbGwgb3BlbiB5b3VyIGJyb3dzZXIgYXQgYSBuaWNlIGdyYXBodml6IG9ubGluZSBlZGl0b3IuIFBhc3RlIHRoZSBjbGlwYm9hcmQgaW50byB0aGUgZWRpdG9yIGFuZCB5b3Ugd2lsbCBnZXQgeW91ciBncmFwaGljYWwgdmlldyBvZiB5b3VyIEFQSSAtIGEgcmVzb3VyY2UgZGlhZ3JhbS4KCiMjIFZpZXdpbmcgZXZlbnRzIHZpYSBBc3luY0FQSQoKUmVzbGFuZyBjYW4gZ2VuZXJhdGUgQXN5bmNBUEksIGRlc2NyaWJpbmcgdGhlIGV2ZW50cyBhIFJFU1QgQVBJIGNhbiBnZW5lcmF0ZS4gSXQgYWxzbyBwcm92aWRlcyBhbiAiZXZlbnQiIGtleXdvcmQgd2hpY2ggeW91IGNhbiB1c2UgdG8gZGVzY3JpYmUgYWRob2MgZXZlbnRzLgoKICAgIHJlc2xhbmcgbW9kZWxzL2V2ZW50aW5nIC0tb3BlbiAtLWV2ZW50cwoKSWYgaW5zdGVhZCB5b3Ugd2lzaCB0byB2aWV3IHRoZSBldmVudHMgaW4gdGhlIEFzeW5jQVBJIFBsYXlncm91bmRlciBmb3IgZWRpdGluZywgcGxlYXNlIGFkZCB0aGUgLS13ZWIgb3B0aW9uLgoKICAgIHJlc2xhbmcgbW9kZWxzL2V2ZW50aW5nIC0tb3BlbiAtLWV2ZW50cyAtLXdlYgoKTm90ZSB0aGF0IHRoZSBBc3luY0FQSSBzcGVjIGhhcyBiZWVuIGNvcGllZCB0byB0aGUgY2xpcGJvYXJkIC0geW91IHdpbGwgbmVlZCB0byBwYXN0ZSBpdCBpbnRvIHRoZSBvcGVuZWQgZWRpdG9yLCBvbiB0aGUgbGVmdC4KCiMjIFByZXR0eSBQcmludGluZyAtIFN0cmlwcGluZyBvdXQgdGhlIGNvbW1lbnRzIGZvciByZXZpZXcKClJlc2xhbmcgY2FuIHByb2R1Y2UgYSBuaWNlIHByZXR0eS1wcmludGVkLCBzdHJpcHBlZCBkb3duIHZlcnNpb24gb2YgdGhlIFJlc2xhbmcgaW4gaHRtbC4gSXQgaXMgb2Z0ZW4gZWFzaWVyIHRvIHJldmlldyB0aGlzIGZvcm0sIGFzIGl0IHJlbW92ZXMgdGhlIGNvbW1lbnRzIGFuZCBlcnJvciBzdHJ1Y3R1cmVzLgoKICAgIHJlc2xhbmcgbW9kZWxzL3Jlc291cmNlcyAtLXN0cmlwcGVkIC0tb3BlbgoKV2lsbCBvcGVuIGEgYnJvd3NlciBvbiB0aGUgc3RyaXBwZWQgZG93biBmaWxlLiBJZiB5b3UganVzdCB3YW50IHBsYWluIHRleHQsIGFkZCAtLXBsYWluCgojIyBSZXF1ZXN0aW5nIG5ldyBmZWF0dXJlcwoKTmV3IGZlYXR1cmVzIGFuZCBlbmhhbmNlbWVudHMgdGhhdCBpbnZvbHZlIGNoYW5naW5nIExpdmVSYW1wJ3MgQVBJIHN0YW5kYXJkcwp3aWxsIG5vdCBiZSBjb25zaWRlcmVkIHVudGlsIHRoZSBbQVBJIHN0YW5kYXJkcyBwcm9wb3NhbCBwcm9jZXNzXVtzdGFuZGFyZHMgcHJvY2Vzc10gaXMgY29tcGxldGUuCgpPdGhlciBlbmhhbmNlbWVudHMgc2hvdWxkIGJlIHJlcXVlc3RlZCBieSBvcGVuaW5nIGEgR2l0SHViIElzc3VlIHVzaW5nIHRoZQphcHByb3ByaWF0ZSBpc3N1ZSB0ZW1wbGF0ZSBvciBieSBvcGVuaW5nIGEgUHVsbCBSZXF1ZXN0IGFuZCBoYXZpbmcgeW91ciBjaGFuZ2VzCnJldmlld2VkIGJ5IHRoZSBBUEkgU3F1YWQuCgpbc3RhbmRhcmRzIHByb2Nlc3NdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFYM2ZjRllMZHNSenNRZVg4OXpkbUNPb2lzTnNENlgtd2NydFljYjhNa0dBL2VkaXQK readmeEtag: '"341f1bfef251d4848c3ed009ef4013654b3c046a"' readmeLastModified: Mon, 01 Apr 2024 08:11:04 GMT repositoryId: 195102746 description: >- A language for describing resource-oriented APIs & turning them into Swagger or resource diagrams. Oriented around the concepts we want to expose in the APIs. created: '2019-07-03T17:51:56Z' updated: '2025-10-22T07:29:24Z' language: TypeScript archived: false stars: 24 watchers: 75 forks: 6 owner: LiveRamp logo: https://avatars.githubusercontent.com/u/2374529?v=4 license: Apache-2.0 repoEtag: '"1e4ad56a91d9c594ceecdd97e4228e912553ca9f801447d3c85e81eaaa42303a"' repoLastModified: Wed, 22 Oct 2025 07:29:24 GMT foundInMaster: true category: - Documentation - Server Implementations id: 9b8ed2b3568ac6aa6c9cbbd70e4574b4 - source: openapi3 tags repository: https://github.com/eikek/sbt-openapi-schema v3: true repositoryMetadata: base64Readme: >- IyBTQlQgT3BlbkFwaSBTY2hlbWEgQ29kZWdlbgoKWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9laWtlay9zYnQtb3BlbmFwaS1zY2hlbWEvYWN0aW9ucy93b3JrZmxvd3MvY2kueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9laWtlay9zYnQtb3BlbmFwaS1zY2hlbWEvYWN0aW9ucy93b3JrZmxvd3MvY2kueW1sKQpbIVtTY2FsYSBTdGV3YXJkIGJhZGdlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1NjYWxhX1N0ZXdhcmQtaGVscGluZy1ibHVlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSZsb2dvPWRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQTRBQUFBUUNBTUFBQUFSU3I0SUFBQUFWRkJNVkVVQUFBQ0hqb2psT3k1Tldsckt6Y1lSS2pHRmpJYnAyOTNZeWN1TGEzcFlZMkxTcXFsNGYzcENVRlRnU2pOb2RZUm1jWFVzUEQvTlRUYmpSUysyam9taGduek5jMjIzY0d2WlMwSGFTRDBYTGpiYVNqRWxoSXIrQUFBQUFYUlNUbE1BUU9iWVpnQUFBSGxKUkVGVUNOZE55b3NPd3lBSWhXSEFRUzFWdDdhNzcvM2ZjeHhkbXYweHdtY2t1dEFSMW5rbTRnZ2J5RWNnL3dXbWxHTERBQTNvTDUweGk2Zms1ZmZaM0UyRTNRZlpEQ2NDTjJZdGJFV1p0K0RyYzZ1NnJscXY3VWswTGRLcXFyNXJrMlVDUlhPazB2bVFLR2ZjOTRuT0p5UWpvdUY5SC93Q2M5Z0VDRVlmT05vQUFBQUFTVVZPUks1Q1lJST0pXShodHRwczovL3NjYWxhLXN0ZXdhcmQub3JnKQpbIVtMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL2Vpa2VrL3NidC1vcGVuYXBpLXNjaGVtYS5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmY29sb3I9c3RlZWxibHVlKV0oaHR0cHM6Ly9naXRodWIuY29tL2Vpa2VrL3NidC1vcGVuYXBpLXNjaGVtYS9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dCkKCgpUaGlzIGlzIGFuIHNidCBwbHVnaW4gdG8gZ2VuZXJhdGUgU2NhbGEgb3IgRWxtIGNvZGUgZ2l2ZW4gYW4gb3BlbmFwaQozLnggc3BlY2lmaWNhdGlvbi4gVW5saWtlIG90aGVyIGNvZGVnZW4gdG9vbHMsIHRoaXMgZm9jdXNlcyBvbmx5IG9uCnRoZSBgIy9jb21wb25lbnRzL3NjaGVtYWAgc2VjdGlvbi4gQWxzbywgaXQgZ2VuZXJhdGVzIGltbXV0YWJsZQpjbGFzc2VzIGFuZCBvcHRpb25hbGx5IHRoZSBjb3JyZXNwb25kaW5nIEpTT04gY29udmVyc2lvbnMuCgotIFNjYWxhOiBgY2FzZSBjbGFzc2BlcyBhcmUgZ2VuZXJhdGVkIGFuZCBKU09OIGNvbnZlcnNpb24gdmlhIGNpcmNlLgotIEVsbTogcmVjb3JkcyBhcmUgZ2VuZXJhdGVkIGFuZCBjb25zdHJ1Y3RvcnMgZm9yICJlbXB0eSIgdmFsdWVzLiBJdAogIHdvcmtzIG9ubHkgZm9yIG9iamVjdHMuIEpTT04gY29udmVyc2lvbiBpcyBnZW5lcmF0ZWQgdXNpbmcgRWxtJ3MKICBkZWZhdWx0IGVuY29kaW5nIHN1cHBvcnQgYW5kIHRoZQogIFtqc29uLWRlY29kZS1waXBlbGluZV0oaHR0cHM6Ly9naXRodWIuY29tL05vUmVkSW5rL2VsbS1qc29uLWRlY29kZS1waXBlbGluZSkKICBtb2R1bGUgZm9yIGRlY29kaW5nLgotIEpTT04gc3VwcG9ydCBpcyBvcHRpb25hbC4KClRoZSBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiB0aGUKW3N3YWdnZXItcGFyc2VyXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1wYXJzZXIpCnByb2plY3QuCgpJdCBpcyBwb3NzaWJsZSB0byBjdXN0b21pemUgdGhlIGNvZGUgZ2VuZXJhdGlvbi4KCiMjIFVzYWdlCgpBZGQgdGhpcyBwbHVnaW4gdG8geW91ciBidWlsZCBpbiBgcHJvamVjdC9wbHVnaW5zLnNidGA6CgpgYGAKYWRkU2J0UGx1Z2luKCJjb20uZ2l0aHViLmVpa2VrIiAlICJzYnQtb3BlbmFwaS1zY2hlbWEiICUgIngueS56IikKYGBgCgpQbGVhc2UgY2hlY2sgdGhlIGdpdCB0YWdzIG9yIG1hdmVuIGNlbnRyYWwgZm9yIHRoZSBjdXJyZW50IHZlcnNpb24uClRoZW4gZW5hYmxlIHRoZSBwbHVnaW4gaW4gc29tZSBwcm9qZWN0OgoKYGBgCmVuYWJsZVBsdWdpbnMoT3BlbkFwaVNjaGVtYSkKYGBgCgpUaGVyZSBhcmUgdHdvIHJlcXVpcmVkIHNldHRpbmdzOiBgb3BlbmFwaVNwZWNgIGFuZApgb3BlbmFwaVRhcmdldExhbmd1YWdlYC4gVGhlIGZpcnN0IGRlZmluZXMgdGhlIG9wZW5hcGkueW1sIGZpbGUgYW5kCnRoZSBvdGhlciBpcyBhIGNvbnN0YW50IGZyb20gdGhlIGBMYW5ndWFnZWAgb2JqZWN0OgoKYGBgc2NhbGEKaW1wb3J0IGNvbS5naXRodWIuZWlrZWsuc2J0Lm9wZW5hcGkuXwoKcHJvamVjdC4KICBlbmFibGVQbHVnaW5zKE9wZW5BcGlTY2hlbWEpLgogIHNldHRpbmdzKAogICAgb3BlbmFwaVRhcmdldExhbmd1YWdlIDo9IExhbmd1YWdlLlNjYWxhCiAgICBvcGVuYXBpU3BlYyA6PSAoQ29tcGlsZS9yZXNvdXJjZURpcmVjdG9yeSkudmFsdWUvInRlc3QueW1sIgogICkKYGBgCgpUaGUgc291cmNlcyBhcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgd2hlbiB5b3UgcnVuIGBjb21waWxlYC4gVGhlCnRhc2sgYG9wZW5hcGlDb2RlZ2VuYCBjYW4gYmUgdXNlZCB0byBydW4gdGhlIGdlbmVyYXRpb24gaW5kZXBlbmRlbnQKZnJvbSB0aGUgYGNvbXBpbGVgIHRhc2suCgojIyBDb25maWd1cmF0aW9uCgpUaGUgY29uZmlndXJhdGlvbiBpcyBzcGVjaWZpYyB0byB0aGUgdGFyZ2V0IGxhbmd1YWdlLiBUaGVyZSBleGlzdHMgYQpzZXBhcmF0ZSBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgU2NhbGEgYW5kIEVsbS4KClRoZSBrZXkgYG9wZW5hcGlTY2FsYUNvbmZpZ2AgZGVmaW5lcyBzb21lIGNvbmZpZ3VyYXRpb24gdG8gY3VzdG9taXplCnRoZSBjb2RlIGdlbmVyYXRpb24uCgpGb3IgU2NhbGEsIGl0IGxvb2tzIGxpa2UgdGhpczoKYGBgc2NhbGEKY2FzZSBjbGFzcyBTY2FsYUNvbmZpZygKICAgIG1hcHBpbmc6IEN1c3RvbU1hcHBpbmcgPSBDdXN0b21NYXBwaW5nLm5vbmUsCiAgICBqc29uOiBTY2FsYUpzb24gPSBTY2FsYUpzb24ubm9uZQopIHsKCiAgZGVmIHdpdGhKc29uKGpzb246IFNjYWxhSnNvbik6IFNjYWxhQ29uZmlnID0KICAgIGNvcHkoanNvbiA9IGpzb24pCgogIGRlZiBhZGRNYXBwaW5nKGNtOiBDdXN0b21NYXBwaW5nKTogU2NhbGFDb25maWcgPQogICAgY29weShtYXBwaW5nID0gbWFwcGluZy5hbmRUaGVuKGNtKSkKCiAgZGVmIHNldE1hcHBpbmcoY206IEN1c3RvbU1hcHBpbmcpOiBTY2FsYUNvbmZpZyA9CiAgICBjb3B5KG1hcHBpbmcgPSBjbSkKfQpgYGAKCkJ5IGRlZmF1bHQsIG5vIEpTT04gc3VwcG9ydCBpcyBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIGNsYXNzZXMuIFRoaXMKY2FuIGJlIGNoYW5nZWQgdmlhOgoKYGBgCm9wZW5hcGlTY2FsYUNvbmZpZyA6PSBTY2FsYUNvbmZpZygpLndpdGhKc29uKFNjYWxhSnNvbi5jaXJjZVNlbWlhdXRvKQpgYGAKClRoaXMgZ2VuZXJhdGVzIHRoZSBlbmNvZGVyIGFuZCBkZWNvZGVyIHVzaW5nCltjaXJjZV0oaHR0cHM6Ly9naXRodWIuY29tL2NpcmNlL2NpcmNlKS4gTm90ZSwgdGhhdCB0aGlzIHBsdWdpbgpkb2Vzbid0IGNoYW5nZSB5b3VyIGBsaWJyYXJ5RGVwZW5kZW5jaWVzYCBzZXR0aW5nLiBTbyB5b3UgbmVlZCB0byBhZGQKdGhlIGNpcmNlIGRlcGVuZGVuY2llcyB5b3Vyc2VsZi4KClRoZSBgQ3VzdG9tTWFwcGluZ2AgY2xhc3MgYWxsb3dzIHRvIGNoYW5nZSB0aGUgY2xhc3MgbmFtZXMgb3IgdXNlCmRpZmZlcmVudCB0eXBlcyAoZm9yIGV4YW1wbGUsIHlvdSBtaWdodCB3YW50IHRvIGNoYW5nZSBgTG9jYWxEYXRlYCB0bwpgRGF0ZWApLgoKSXQgbG9va3MgbGlrZSB0aGlzOgpgYGBzY2FsYQp0cmFpdCBDdXN0b21NYXBwaW5nIHsgc2VsZiA9PgoKICBkZWYgY2hhbmdlVHlwZSh0ZDogVHlwZURlZik6IFR5cGVEZWYKCiAgZGVmIGNoYW5nZVNvdXJjZShzcmM6IFNvdXJjZUZpbGUpOiBTb3VyY2VGaWxlCgogIGRlZiBhbmRUaGVuKGNtOiBDdXN0b21NYXBwaW5nKTogQ3VzdG9tTWFwcGluZyA9IG5ldyBDdXN0b21NYXBwaW5nIHsKICAgIGRlZiBjaGFuZ2VUeXBlKHRkOiBUeXBlRGVmKTogVHlwZURlZiA9CiAgICAgIGNtLmNoYW5nZVR5cGUoc2VsZi5jaGFuZ2VUeXBlKHRkKSkKCiAgICBkZWYgY2hhbmdlU291cmNlKHNyYzogU291cmNlRmlsZSk6IFNvdXJjZUZpbGUgPQogICAgICBjbS5jaGFuZ2VTb3VyY2Uoc2VsZi5jaGFuZ2VTb3VyY2Uoc3JjKSkKICB9Cn0KYGBgCgpUaGVyZSBhcmUgY29udmVuaWVudCBjb25zdHJ1Y3RvcnMgaW4gaXRzIGNvbXBhbmlvbiBvYmplY3QuCgpJdCBhbGxvd3MgdG8gdXNlIGRpZmZlcmVudCB0eXBlcyB2aWEgYGNoYW5nZVR5cGVgIG9yIGNoYW5nZSB0aGUgc291cmNlCmZpbGUuIEhlcmUgaXMgYSBgYnVpbGQuc2J0YCBleGFtcGxlIHNuaXBwZXQ6CgpgYGBzY2FsYQppbXBvcnQgY29tLmdpdGh1Yi5laWtlay5zYnQub3BlbmFwaS5fCgp2YWwgQ2lyY2VWZXJzaW9uICAgICAgICAgICAgPSAiMC4xNC4xIgpsaWJyYXJ5RGVwZW5kZW5jaWVzICsrPSBTZXEoCiAgImlvLmNpcmNlIiAlJSAiY2lyY2UtZ2VuZXJpYyIgJSBDaXJjZVZlcnNpb24sCiAgImlvLmNpcmNlIiAlJSAiY2lyY2UtcGFyc2VyIiAgJSBDaXJjZVZlcnNpb24KKQoKb3BlbmFwaVNwZWMgOj0gKENvbXBpbGUvcmVzb3VyY2VEaXJlY3RvcnkpLnZhbHVlLyJ0ZXN0LnltbCIKb3BlbmFwaVRhcmdldExhbmd1YWdlIDo9IExhbmd1YWdlLlNjYWxhCkNvbXBpbGUvb3BlbmFwaVNjYWxhQ29uZmlnIDo9IFNjYWxhQ29uZmlnKCkKICAgIC53aXRoSnNvbihTY2FsYUpzb24uY2lyY2VTZW1pYXV0bykKICAgIC5hZGRNYXBwaW5nKEN1c3RvbU1hcHBpbmcuZm9yVHlwZSh7IGNhc2UgVHlwZURlZigiTG9jYWxEYXRlVGltZSIsIF8pID0+CiAgICAgIFR5cGVEZWYoIlRpbWVzdGFtcCIsIEltcG9ydHMoImNvbS5teXBhY2thZ2UuVGltZXN0YW1wIikpCiAgICB9KSkKICAgIC5hZGRNYXBwaW5nKEN1c3RvbU1hcHBpbmcuZm9yTmFtZSh7IGNhc2UgcyA9PiBzICsgIkR0byIgfSkpCgplbmFibGVQbHVnaW5zKE9wZW5BcGlTY2hlbWEpCmBgYAoKSXQgYWRkcyBjaXJjZSBKU09OIHN1cHBvcnQgYW5kIGNoYW5nZXMgdGhlIG5hbWUgb2YgYWxsIGNsYXNzZXMgYnkKYXBwZW5kaW5nIHRoZSBzdWZmaXggIkR0byIuIEl0IGFsc28gY2hhbmdlcyB0aGUgdHlwZSB1c2VkIGZvciBsb2NhbApkYXRlcyB0byBiZSBgY29tLm15cGFja2FnZS5UaW1lc3RhbXBgLgoKCiMjIEVsbQoKVGhlcmUgaXMgc29tZSBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgZ2VuZXJhdGluZyBFbG0gZGF0YSBzdHJ1Y3R1cmVzCmFuZCBjb3JyZXNwb25kaW5nIEpTT04gY29udmVyc2lvbiBmdW5jdGlvbnMuIFdoZW4gdXNpbmcgdGhlCmBkZWNvZGVQaXBlbGluZWAganNvbiB2YXJpYW50LCB5b3UgbmVlZCB0byBpbnN0YWxsIHRoZXNlIHBhY2thZ2VzOgoKYGBgCmVsbSBpbnN0YWxsIGVsbS9qc29uCmVsbSBpbnN0YWxsIE5vUmVkSW5rL2VsbS1qc29uLWRlY29kZS1waXBlbGluZQpgYGAKClRoZSBkZWZhdWx0IG91dHB1dCBwYXRoIGZvciBlbG0gc291cmNlcyBpcyBgdGFyZ2V0L2VsbS1zcmNgLiBTbyBpbgp5b3VyIGBlbG0uanNvbmAgZmlsZSwgYWRkIHRoaXMgZGlyZWN0b3J5IHRvIHRoZSBgc291cmNlLWRpcmVjdG9yaWVzYApsaXN0IGFsb25nIHdpdGggdGhlIG1haW4gc291cmNlIGRpci4gSXQgbWF5IGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKCmBgYGpzb24KewogICAgInR5cGUiOiAiYXBwbGljYXRpb24iLAogICAgInNvdXJjZS1kaXJlY3RvcmllcyI6IFsKICAgICAgICAibW9kdWxlcy93ZWJhcHAvdGFyZ2V0L2VsbS1zcmMiLAogICAgICAgICJtb2R1bGVzL3dlYmFwcC9zcmMvbWFpbi9lbG0iCiAgICBdLAogICAgImVsbS12ZXJzaW9uIjogIjAuMTkuMCIsCiAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJkaXJlY3QiOiB7CiAgICAgICAgICAgICJOb1JlZEluay9lbG0tanNvbi1kZWNvZGUtcGlwZWxpbmUiOiAiMS4wLjAiLAogICAgICAgICAgICAiZWxtL2Jyb3dzZXIiOiAiMS4wLjEiLAogICAgICAgICAgICAiZWxtL2NvcmUiOiAiMS4wLjIiLAogICAgICAgICAgICAiZWxtL2h0bWwiOiAiMS4wLjAiLAogICAgICAgICAgICAiZWxtL2pzb24iOiAiMS4xLjMiCiAgICAgICAgfSwKICAgICAgICAiaW5kaXJlY3QiOiB7CiAgICAgICAgICAgICJlbG0vdGltZSI6ICIxLjAuMCIsCiAgICAgICAgICAgICJlbG0vdXJsIjogIjEuMC4wIiwKICAgICAgICAgICAgImVsbS92aXJ0dWFsLWRvbSI6ICIxLjAuMiIKICAgICAgICB9CiAgICB9LAogICAgInRlc3QtZGVwZW5kZW5jaWVzIjogewogICAgICAgICJkaXJlY3QiOiB7fSwKICAgICAgICAiaW5kaXJlY3QiOiB7fQogICAgfQp9CmBgYAoKSXQgYWx3YXlzIGdlbmVyYXRlcyB0eXBlIGFsaWFzZXMgZm9yIHJlY29yZHMuCgpXaGlsZSBzb3VyY2UgZmlsZXMgZm9yIHNjYWxhIGFyZSBhZGRlZCB0byBzYnQncyBgc291cmNlR2VuZXJhdG9yc2Agc28KdGhhdCB0aGV5IGdldCBjb21waWxlZCB3aXRoIHlvdXIgc291cmNlcywgdGhlIGVsbSBzb3VyY2UgZmlsZXMgYXJlIG5vdAphZGRlZCBhbnl3aGVyZSwgYmVjYXVzZSB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBFbG0gaW4gc2J0LiBIb3dldmVyLAppbiB0aGUgYGJ1aWxkLnNidGAgZmlsZSwgeW91IGNhbiB0ZWxsIHNidCB0byBnZW5lcmF0ZSB0aGUgZmlsZXMgYmVmb3JlCmNvbXBpbGluZyB5b3VyIGVsbSBhcHAuIFRoaXMgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gcnVuIGR1cmluZyByZXNvdXJjZQpnZW5lcmF0aW9uLiBFeGFtcGxlOgoKYGBgIHNjYWxhCgovLyBQdXQgcmVzdWx0aW5nIGpzIGZpbGUgaW50byB0aGUgd2ViamFyIGxvY2F0aW9uCmRlZiBjb21waWxlRWxtKGxvZ2dlcjogTG9nZ2VyLCB3ZDogRmlsZSwgb3V0QmFzZTogRmlsZSwgYXJ0aWZhY3Q6IFN0cmluZywgdmVyc2lvbjogU3RyaW5nKTogU2VxW0ZpbGVdID0gewogIGxvZ2dlci5pbmZvKCJDb21waWxlIGVsbSBmaWxlcyAuLi4iKQogIHZhbCB0YXJnZXQgPSBvdXRCYXNlLyJNRVRBLUlORiIvInJlc291cmNlcyIvIndlYmphcnMiL2FydGlmYWN0L3ZlcnNpb24vIm15LWFwcC5qcyIKICB2YWwgcHJvYyA9IFByb2Nlc3MoU2VxKCJlbG0iLCAibWFrZSIsICItLW91dHB1dCIsIHRhcmdldC50b1N0cmluZykgKysgU2VxKHdkLyJzcmMiLyJtYWluIi8iZWxtIi8iTWFpbi5lbG0iKS5tYXAoXy50b1N0cmluZyksIFNvbWUod2QpKQogIHZhbCBvdXQgPSBwcm9jLiEhCiAgbG9nZ2VyLmluZm8ob3V0KQogIFNlcSh0YXJnZXQpCn0KCnZhbCB3ZWJhcHAgPSBwcm9qZWN0LmluKGZpbGUoIndlYmFwcCIpKS4KICBlbmFibGVQbHVnaW5zKE9wZW5BcGlTY2hlbWEpLgogIHNldHRpbmdzKAogICAgb3BlbmFwaVRhcmdldExhbmd1YWdlIDo9IExhbmd1YWdlLkVsbSwKICAgIG9wZW5hcGlQYWNrYWdlIDo9IFBrZygiQXBpLk1vZGVsIiksCiAgICBvcGVuYXBpU3BlYyA6PSAoQ29tcGlsZS9yZXNvdXJjZURpcmVjdG9yeSkudmFsdWUvIm9wZW5hcGkueW1sIiwKICAgIG9wZW5hcGlFbG1Db25maWcgOj0gRWxtQ29uZmlnKCkud2l0aEpzb24oRWxtSnNvbi5kZWNvZGVQaXBlbGluZSksCiAgICBDb21waWxlL3Jlc291cmNlR2VuZXJhdG9ycyArPSAoRGVmLnRhc2sgewogICAgICBvcGVuYXBpQ29kZWdlbi52YWx1ZSAvLyBnZW5lcmF0ZSBhcGkgbW9kZWwgZmlsZXMKICAgICAgY29tcGlsZUVsbShzdHJlYW1zLnZhbHVlLmxvZwogICAgICAgICwgKENvbXBpbGUvYmFzZURpcmVjdG9yeSkudmFsdWUKICAgICAgICAsIChDb21waWxlL3Jlc291cmNlTWFuYWdlZCkudmFsdWUKICAgICAgICAsIG5hbWUudmFsdWUKICAgICAgICAsIHZlcnNpb24udmFsdWUpCiAgICB9KS50YXNrVmFsdWUsCiAgICB3YXRjaFNvdXJjZXMgKz0gV2F0Y2hlZC5XYXRjaFNvdXJjZSgKICAgICAgKENvbXBpbGUvc291cmNlRGlyZWN0b3J5KS52YWx1ZS8iZWxtIgogICAgICAgICwgRmlsZUZpbHRlci5nbG9iRmlsdGVyKCIqLmVsbSIpCiAgICAgICAgLCBIaWRkZW5GaWxlRmlsdGVyCiAgICApCiAgKQpgYGAKClRoaXMgZXhhbXBsZSBhc3N1bWVzIGEgYGVsbS5qc29uYCBwcm9qZWN0IGZpbGUgaW4gdGhlIHNvdXJjZSByb290LgoKIyMgRGlzY3JpbWluYXRvciBTdXBwb3J0CgpPcGVuQVBJIDMuMCBlbmFibGVzIHRvIGludHJvZHVjZSBzdWJ0eXBpbmcgb24gZ2VuZXJhdGVkIHNjaGVtYXMgYnkgdXNpbmcgW2Rpc2NyaW1pbmF0b3JzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMC5tZCNkaXNjcmltaW5hdG9yT2JqZWN0KS4KClR3byBvZiB0aGVzZSBhcmUgY3VycmVudGx5IHN1cHBvcnRlZCBvbmx5IGluIFNjYWxhIDogYG9uZU9mYCBhbmQgYGFsbE9mYC4gICAKCiMjIyMgU2V0dXAKCkluIG9yZGVyIHRvIHByb3ZpZGUgSlNPTiBjb252ZXJzaW9uIGZvciB0aGVzZSBkaXNjcmltaW5hdG9ycyB3aXRoIENpcmNlLCB3ZSBuZWVkIHRvIG1ha2UgdXNlIG9mIFtjaXJjZS1nZW5lcmljLWV4dHJhc10oaHR0cHM6Ly9naXRodWIuY29tL2NpcmNlL2NpcmNlLWdlbmVyaWMtZXh0cmFzKQoKQW4gZXhhbXBsZSBidWlsZC5zYnQgdXNpbmcgdGhlIHBsdWdpbiB3b3VsZCBsb29rIGxpa2UgdGhlIGZvbGxvd2luZzoKYGBgc2NhbGEKaW1wb3J0IGNvbS5naXRodWIuZWlrZWsuc2J0Lm9wZW5hcGkuXwoKbGlicmFyeURlcGVuZGVuY2llcyArKz0gU2VxKAogICJpby5jaXJjZSIgJSUgImNpcmNlLWdlbmVyaWMtZXh0cmFzIiAlICIwLjExLjEiLAogICJpby5jaXJjZSIgJSUgImNpcmNlLWNvcmUiICUgIjAuMTEuMSIsCiAgImlvLmNpcmNlIiAlJSAiY2lyY2UtZ2VuZXJpYyIgJSAiMC4xMS4xIiwKICAiaW8uY2lyY2UiICUlICJjaXJjZS1wYXJzZXIiICUgIjAuMTEuMSIKKQoKb3BlbmFwaVNwZWMgOj0gKENvbXBpbGUvcmVzb3VyY2VEaXJlY3RvcnkpLnZhbHVlLyJ0ZXN0LnltbCIKb3BlbmFwaVRhcmdldExhbmd1YWdlIDo9IExhbmd1YWdlLlNjYWxhCm9wZW5hcGlTY2FsYUNvbmZpZyA6PSBTY2FsYUNvbmZpZygpLgogIHdpdGhKc29uKFNjYWxhSnNvbi5jaXJjZVNlbWlhdXRvRXh0cmEpLgogIGFkZE1hcHBpbmcoQ3VzdG9tTWFwcGluZy5mb3JOYW1lKHsgY2FzZSBzID0+IHMgKyAiRHRvIiB9KSkKCmVuYWJsZVBsdWdpbnMoT3BlbkFwaVNjaGVtYSkKYGBgCgoKIyMjIyBIYW5kbGUgYGFsbE9mYCBrZXl3b3JkcyBpbiBTY2FsYQoKSGVyZSBpcyBhbiBleGFtcGxlIE9wZW5BUEkgc3BlYyBhbmQgdGhlIHJlc3VsdGluZyBTY2FsYSBtb2RlbHMgd2l0aCBKU09OIGNvbnZlcnNpb25zCgpgYGB5YW1sCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIFBldDoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIGRpc2NyaW1pbmF0b3I6CiAgICAgICAgcHJvcGVydHlOYW1lOiBwZXRUeXBlCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgbmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIHBldFR5cGU6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgcmVxdWlyZWQ6CiAgICAgIC0gbmFtZQogICAgICAtIHBldFR5cGUKICAgIENhdDogICMjICJDYXQiIHdpbGwgYmUgdXNlZCBhcyB0aGUgZGlzY3JpbWluYXRvciB2YWx1ZQogICAgICBkZXNjcmlwdGlvbjogQSByZXByZXNlbnRhdGlvbiBvZiBhIGNhdAogICAgICBhbGxPZjoKICAgICAgLSAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0JwogICAgICAtIHR5cGU6IG9iamVjdAogICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICBodW50aW5nU2tpbGw6CiAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICBkZXNjcmlwdGlvbjogVGhlIG1lYXN1cmVkIHNraWxsIGZvciBodW50aW5nCiAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBodW50aW5nU2tpbGwKICAgIERvZzogICMjICJEb2ciIHdpbGwgYmUgdXNlZCBhcyB0aGUgZGlzY3JpbWluYXRvciB2YWx1ZQogICAgICBkZXNjcmlwdGlvbjogQSByZXByZXNlbnRhdGlvbiBvZiBhIGRvZwogICAgICBhbGxPZjoKICAgICAgLSAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0JwogICAgICAtIHR5cGU6IG9iamVjdAogICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICBwYWNrU2l6ZToKICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgICBmb3JtYXQ6IGludDMyCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGUgc2l6ZSBvZiB0aGUgcGFjayB0aGUgZG9nIGlzIGZyb20KICAgICAgICByZXF1aXJlZDoKICAgICAgICAtIHBhY2tTaXplCmBgYAoKYGBgc2NhbGEKaW1wb3J0IGlvLmNpcmNlLl8KaW1wb3J0IGlvLmNpcmNlLmdlbmVyaWMuZXh0cmFzLnNlbWlhdXRvLl8KaW1wb3J0IGlvLmNpcmNlLmdlbmVyaWMuZXh0cmFzLkNvbmZpZ3VyYXRpb24KCnNlYWxlZCB0cmFpdCBQZXREdG8gewogIHZhbCBuYW1lOiBTdHJpbmcKfQpvYmplY3QgUGV0RHRvIHsKICBpbXBsaWNpdCB2YWwgY3VzdG9tQ29uZmlnOiBDb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5kZWZhdWx0LndpdGhEZWZhdWx0cy53aXRoRGlzY3JpbWluYXRvcigicGV0VHlwZSIpCgogIGNhc2UgY2xhc3MgQ2F0ICgKICAgIGh1bnRpbmdTa2lsbDogU3RyaW5nLCBuYW1lOiBTdHJpbmcKICApIGV4dGVuZHMgUGV0RHRvCgogIGNhc2UgY2xhc3MgRG9nICgKICAgIHBhY2tTaXplOiBJbnQsIG5hbWU6IFN0cmluZwogICkgZXh0ZW5kcyBQZXREdG8KCiAgb2JqZWN0IENhdCB7CiAgICBpbXBsaWNpdCB2YWwgY3VzdG9tQ29uZmlnOiBDb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5kZWZhdWx0LndpdGhEZWZhdWx0cy53aXRoRGlzY3JpbWluYXRvcigicGV0VHlwZSIpCiAgICBwcml2YXRlIGltcGxpY2l0IHZhbCBqc29uRGVjb2RlcjogRGVjb2RlcltDYXRdID0gZGVyaXZlRGVjb2RlcltDYXRdCiAgICBwcml2YXRlIGltcGxpY2l0IHZhbCBqc29uRW5jb2RlcjogRW5jb2RlcltDYXRdID0gZGVyaXZlRW5jb2RlcltDYXRdCiAgfQoKICBvYmplY3QgRG9nIHsKICAgIGltcGxpY2l0IHZhbCBjdXN0b21Db25maWc6IENvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmRlZmF1bHQud2l0aERlZmF1bHRzLndpdGhEaXNjcmltaW5hdG9yKCJwZXRUeXBlIikKICAgIHByaXZhdGUgaW1wbGljaXQgdmFsIGpzb25EZWNvZGVyOiBEZWNvZGVyW0RvZ10gPSBkZXJpdmVEZWNvZGVyW0RvZ10KICAgIHByaXZhdGUgaW1wbGljaXQgdmFsIGpzb25FbmNvZGVyOiBFbmNvZGVyW0RvZ10gPSBkZXJpdmVFbmNvZGVyW0RvZ10KICB9CgogIGltcGxpY2l0IHZhbCBqc29uRGVjb2RlcjogRGVjb2RlcltQZXREdG9dID0gZGVyaXZlRGVjb2RlcltQZXREdG9dCiAgaW1wbGljaXQgdmFsIGpzb25FbmNvZGVyOiBFbmNvZGVyW1BldER0b10gPSBkZXJpdmVFbmNvZGVyW1BldER0b10KfQoKYGBgCgpOb3RlcyBhYm91dCB0aGUgYWJvdmUgZXhhbXBsZToKLSBUaGUgaW50ZXJuYWwgc2NoZW1hcyAoIkRvZyIgYW5kICJDYXQiKSBoYXZlIHByaXZhdGUgZW5jb2Rlci9kZWNvZGVycyBzbyB0aGF0IHRoZXkgYXJlIG9ubHkgZW5jb2RlZCBhbmQgZGVjb2RlZCBhcyB0aGUgdHJhaXQgaW50ZXJmYWNlLiBJZiB5b3UgdHJ5IHRvIGRlY29kZSBhcyBhIERvZyBvciBDYXQgdHlwZSwgdGhlIGNpcmNlLWdlbmVyaWMtZXh0cmFzIGRvZXNuJ3QgaW5jbHVkZSB0aGUgZGlzY3JpbWluYW50IHR5cGUKLSBUaGUgbWFwcGluZyBmdW5jdGlvbmFsaXR5IChhZGRpbmcgIkR0byIpIGlzIG9ubHkgdXNlZCBvbiB0aGUgc2VhbGVkIHRyYWl0IHNpbmNlIHRoZSBkaXNjcmltaW5hbnQgdHlwZSB1c2VzIHRoZSBuYW1lIG9mIHRoZSBpbm5lciBjYXNlIGNsYXNzZXMgKCJEb2ciIGFuZCAiQ2F0IikuCgojIyMjIEhhbmRsZSBgb25lT2ZgIGtleXdvcmRzIGluIFNjYWxhCgpBbm90aGVyIHdheSBvZiB0cmFuc2Zvcm0gY29tcG9zZWQgc2NoZW1hcyBpbnRvIGBzZWFsZWQgdHJhaXRgIGhpZXJhcmNoaWVzIGlzIHRvIHVzZSBgb25lT2ZgLgoKYGBgeWFtbCAKUGV0OgogIHR5cGU6IG9iamVjdAogIGRpc2NyaW1pbmF0b3I6CiAgICBwcm9wZXJ0eU5hbWU6IHBldFR5cGUKICBvbmVPZjoKICAgIC0gJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0NhdCcKICAgIC0gJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0RvZycKQ2F0OiAgIyMgIkNhdCIgd2lsbCBiZSB1c2VkIGFzIHRoZSBkaXNjcmltaW5hdG9yIHZhbHVlCiAgZGVzY3JpcHRpb246IEEgcmVwcmVzZW50YXRpb24gb2YgYSBjYXQKICBwcm9wZXJ0aWVzOgogICAgaHVudGluZ1NraWxsOgogICAgICB0eXBlOiBzdHJpbmcKICAgICAgZGVzY3JpcHRpb246IFRoZSBtZWFzdXJlZCBza2lsbCBmb3IgaHVudGluZwogICAgICBlbnVtOgogICAgICAgIC0gY2x1ZWxlc3MKICAgICAgICAtIGxhenkKICAgICAgICAtIGFkdmVudHVyb3VzCiAgICAgICAgLSBhZ2dyZXNzaXZlCiAgICBuYW1lOgogICAgICB0eXBlOiBzdHJpbmcKICAgIHBldFR5cGU6CiAgICAgIHR5cGU6IHN0cmluZwogIHJlcXVpcmVkOgogICAgLSBodW50aW5nU2tpbGwKICAgIC0gbmFtZQogICAgLSBwZXRUeXBlCkRvZzogICMjICJEb2ciIHdpbGwgYmUgdXNlZCBhcyB0aGUgZGlzY3JpbWluYXRvciB2YWx1ZQogIGRlc2NyaXB0aW9uOiBBIHJlcHJlc2VudGF0aW9uIG9mIGEgZG9nCiAgcHJvcGVydGllczoKICAgIHBhY2tTaXplOgogICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgIGZvcm1hdDogaW50MzIKICAgICAgZGVzY3JpcHRpb246IHRoZSBzaXplIG9mIHRoZSBwYWNrIHRoZSBkb2cgaXMgZnJvbQogICAgICBkZWZhdWx0OiAwCiAgICAgIG1pbmltdW06IDAKICAgIG5hbWU6CiAgICAgIHR5cGU6IHN0cmluZwogICAgcGV0VHlwZToKICAgICAgdHlwZTogc3RyaW5nCiAgcmVxdWlyZWQ6CiAgICAtIHBhY2tTaXplCiAgICAtIG5hbWUKICAgIC0gcGV0VHlwZQpgYGAKCmBgYHNjYWxhCmltcG9ydCBpby5jaXJjZS5fCmltcG9ydCBpby5jaXJjZS5nZW5lcmljLmV4dHJhcy5zZW1pYXV0by5fCmltcG9ydCBpby5jaXJjZS5nZW5lcmljLmV4dHJhcy5Db25maWd1cmF0aW9uCgpzZWFsZWQgdHJhaXQgUGV0RHRvIHsKfSAKb2JqZWN0IFBldER0byB7CiAgaW1wbGljaXQgdmFsIGN1c3RvbUNvbmZpZzogQ29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb24uZGVmYXVsdC53aXRoRGVmYXVsdHMud2l0aERpc2NyaW1pbmF0b3IoInBldFR5cGUiKQogIGNhc2UgY2xhc3MgQ2F0ICgKICAgIGh1bnRpbmdTa2lsbDogU3RyaW5nLCBuYW1lOiBTdHJpbmcsIHBldFR5cGU6IFN0cmluZwogICkgZXh0ZW5kcyBQZXREdG8KICBjYXNlIGNsYXNzIERvZyAoCiAgICBwYWNrU2l6ZTogSW50LCBuYW1lOiBTdHJpbmcsIHBldFR5cGU6IFN0cmluZwogICkgZXh0ZW5kcyBQZXREdG8KICBvYmplY3QgQ2F0IHsKICAgIGltcGxpY2l0IHZhbCBjdXN0b21Db25maWc6IENvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmRlZmF1bHQud2l0aERlZmF1bHRzLndpdGhEaXNjcmltaW5hdG9yKCJwZXRUeXBlIikKICAgIHByaXZhdGUgaW1wbGljaXQgdmFsIGpzb25EZWNvZGVyOiBEZWNvZGVyW0NhdF0gPSBkZXJpdmVEZWNvZGVyW0NhdF0KICAgIHByaXZhdGUgaW1wbGljaXQgdmFsIGpzb25FbmNvZGVyOiBFbmNvZGVyW0NhdF0gPSBkZXJpdmVFbmNvZGVyW0NhdF0KICB9CiAgb2JqZWN0IERvZyB7CiAgICBpbXBsaWNpdCB2YWwgY3VzdG9tQ29uZmlnOiBDb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5kZWZhdWx0LndpdGhEZWZhdWx0cy53aXRoRGlzY3JpbWluYXRvcigicGV0VHlwZSIpCiAgICBwcml2YXRlIGltcGxpY2l0IHZhbCBqc29uRGVjb2RlcjogRGVjb2RlcltEb2ddID0gZGVyaXZlRGVjb2RlcltEb2ddCiAgICBwcml2YXRlIGltcGxpY2l0IHZhbCBqc29uRW5jb2RlcjogRW5jb2RlcltEb2ddID0gZGVyaXZlRW5jb2RlcltEb2ddCiAgfQogIGltcGxpY2l0IHZhbCBqc29uRGVjb2RlcjogRGVjb2RlcltQZXREdG9dID0gZGVyaXZlRGVjb2RlcltQZXREdG9dCiAgaW1wbGljaXQgdmFsIGpzb25FbmNvZGVyOiBFbmNvZGVyW1BldER0b10gPSBkZXJpdmVFbmNvZGVyW1BldER0b10KfSAKYGBgCgpVbmxpa2UgYGFsbE9mYCwgYG9uZU9mYCBkb2Vzbid0IHBlcm1pdCBzdWJzY2hlbWFzIHRvIGluaGVyaXQgZmllbGRzIGZyb20gdGhlaXIgcGFyZW50LiBUaGlzIGtpbmQgb2YgcmVsYXRpb24gZml0cyB3ZWxsIHRvIGFsZ2VicmFpYyBkYXRhIHR5cGVzIGVuY29kaW5ncyBpbiBTY2FsYS4KCiMjIFN0YXRpYyBEb2N1bWVudGF0aW9uCgpUaGUgcGx1Z2luIGNhbiBydW4gdGhlIFtzd2FnZ2VyIGNvZGVnZW4KdG9vbF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikgb3IKW3JlZG9jXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvYykgdG8gcHJvZHVjZSBhIHN0YXRpYyBIVE1MCnBhZ2Ugb2YgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmaWxlLgoKRGVmaW5lIHdoaWNoIGdlbmVyYXRvciB0byB1c2UgdmlhOgoKYGBgIHNjYWxhCm9wZW5hcGlTdGF0aWNHZW4gOj0gT3BlbkFwaURvY0dlbmVyYXRvci5SZWRvYyAvL29yCm9wZW5hcGlTdGF0aWNHZW4gOj0gT3BlbkFwaURvY0dlbmVyYXRvci5Td2FnZ2VyCmBgYAoKTm90ZSB0aGF0IG5vZGVqcyAodGhlIGBucHhgIGNvbW1hbmQpIGlzIHJlcXVpcmVkIGZvciByZWRvYyEgVGhlCmRlZmF1bHQgaXMgc3dhZ2dlci4KClRoZW4gdXNlIHRoZSBgb3BlbmFwaVN0YXRpY0RvY2AgdGFzayB0byBnZW5lcmF0ZSB0aGUgZG9jdW1lbnRhdGlvbgpmcm9tIHlvdXIgb3BlbmFwaSBzcGVjaWZpY2F0aW9uLgoKCkFkZGl0aW9uYWxseSwgdGhlcmUgaXMgYWxzbyBhIHRhc2sgdGhhdCBydW5zIFtgb3BlbmFwaS1jbGkKbGludGBdKGh0dHBzOi8vcmVkb2MubHkvZG9jcy9jbGkvKSBhZ2FpbnN0IHlvdXIgc3BlY2lmaWNhdGlvbiBmaWxlLgpUaGlzIGFsc28gcmVxdWlyZXMgdG8gaGF2ZSBub2RlanMgaW5zdGFsbGVkLgoKCgojIyBDcmVkaXRzCgpGaXJzdCwgdGhhbmsgeW91IGFsbCB3aG8gcmVwb3J0ZWQgaXNzdWVzISBJdCBmb2xsb3dzIGEgbGlzdCBvZgpjb250cmlidXRpb25zIGluIGZvcm0gb2YgY29kZS4gSWYgeW91IGZpbmQgeW91cnNlbGYgbWlzc2luZywgcGxlYXNlCmxldCBtZSBrbm93IG9yIG9wZW4gYSBQUi4KCi0gQHhlbGE4NSBmb3IgYWRkaW5nIGBvbmVPZmAga2V5d29yZHMgc3VwcG9ydCAoIzQyKQotIEBtaGVydG9ncyBmb3IgYWRkaW5nIHN1cHBvcnQgZm9yIGRpc2NyaW1pbmF0b3JzICgjOCkK readmeEtag: '"6e5a4e6bd94d6f320f02b9b00de4e8ed3e3b5cba"' readmeLastModified: Tue, 23 Jul 2024 06:13:55 GMT repositoryId: 178213765 description: Generate schema sources for Scala, Java and Elm from an openapi 3.0 spec. created: '2019-03-28T13:53:17Z' updated: '2026-02-02T21:15:52Z' language: Scala archived: false stars: 26 watchers: 2 forks: 8 owner: eikek logo: https://avatars.githubusercontent.com/u/701128?v=4 license: MIT repoEtag: '"dcba4248f9059d7b6f26651a3c9f04a95330ec84e88e16578f5edd011538de99"' repoLastModified: Mon, 02 Feb 2026 21:15:52 GMT foundInMaster: true category: Parsers id: c55aff4f35aaeecc6904953f3eb67cb6 - source: openapi3 tags repository: https://github.com/eropple/fastify-openapi3 v3: true repositoryMetadata: base64Readme: >- IyBgQGVyb3BwbGUvZmFzdGlmeS1vcGVuYXBpM2AgIwpfQmVjYXVzZSBJIGp1c3QgY2FuJ3Qgc3RvcCBtYWtpbmcgT3BlbkFQSSBsaWJyYXJpZXMsIEkgZ3Vlc3MuXwoKWyFbTlBNIHZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGVyb3BwbGUvZmFzdGlmeS1vcGVuYXBpMyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0Blcm9wcGxlL2Zhc3RpZnktb3BlbmFwaTMpIFshW0NJXShodHRwczovL2dpdGh1Yi5jb20vZXJvcHBsZS9mYXN0aWZ5LW9wZW5hcGkzL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnlhbWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2Vyb3BwbGUvZmFzdGlmeS1vcGVuYXBpMy9hY3Rpb25zL3dvcmtmbG93cy9jaS55YW1sKQoKIyMgV2hhdCBpcyBpdD8gIyMKVGhpcyBpcyBhIGxpYnJhcnkgdG8gaGVscCB5b3UgZ2VuZXJhdGUgW09wZW5BUEkgMy4xXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjApLWNvbXBsaWFudCAob3IgMy4wLjMgaWYgeW91IGRvIGEgbGl0dGxlIHdvcmsgb24geW91ciBvd24pIHNwZWNzIGZyb20geW91ciBbRmFzdGlmeV0oaHR0cHM6Ly93d3cuZmFzdGlmeS5pby8pIGFwcC4gT3RoZXJzIGV4aXN0LCBidXQgdG8gbXkgbWluZCBkb24ndCBzY3JhdGNoIHRoZSBpdGNoIHRoYXQgdGhlIGJlc3QgT0FTIHRvb2xpbmcgZG9lczogbWFraW5nIGl0IGZhc3RlciBhbmQgZWFzaWVyIHRvIGNyZWF0ZSBjb3JyZWN0IHNwZWNzIGFuZCB2YWxpZCBBUEkgY2xpZW50cyBmcm9tIHRob3NlIHNwZWNzLiBCZWNhdXNlIG9mIG15IFtvd25dKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Rlcm4tcHJvamVjdC9tb2Rlcm4tcnVieSkgW2JhY2tncm91bmRdKGh0dHBzOi8vZ2l0aHViLmNvbS9lcm9wcGxlL25lc3Rqcy1vcGVuYXBpMykgaW4gYnVpbGRpbmcgT3BlbkFQSSBsaWJyYXJpZXMsIGFuZCBteSBncm93aW5nIGFwcHJlY2lhdGlvbiBmb3IgRmFzdGlmeSwgSSBkZWNpZGVkIHRvIHRha2UgYSBjcmFjayBhdCBpdC4KClRoaXMgbGlicmFyeSBwcmVzdXBwb3NlcyB0aGF0IHlvdSB1c2UgW2BAc2luY2xhaXIvdHlwZWJveGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5jbGFpcnp4ODEvdHlwZWJveCkgdG8gZGVmaW5lIHRoZSBKU09OIHNjaGVtYSB1c2VkIGluIHlvdXIgcmVxdWVzdHMsIGFuZCBmcm9tIHRoYXQgSlNPTiBTY2hlbWEgZGVyaXZlcyB0eXBlcy4gKEVyZ29ub21pY3MgZm9yIG5vbi1UeXBlU2NyaXB0IHVzZXJzIGlzIHNwZWNpZmljYWxseSBvdXQtb2Ytc2NvcGUuKSBJdCB3aWxsIHdhbGsgYWxsIHlvdXIgcm91dGVzLCBkZXRlcm1pbmUgeW91ciBzY2hlbWEsIGFuZCBleHRyYWN0IGFuZCBkZWR1cGxpY2F0ZSB0aG9zZSBzY2hlbWFzIHRvIHByZXNlbnQgYSByZWxhdGl2ZWx5IGNsZWFuIGFuZCBlYXN5LXRvLXVzZSBPcGVuQVBJIGRvY3VtZW50LiBJdCdsbCB0aGVuIGFsc28gc2VydmUgSlNPTiBhbmQgWUFNTCB2ZXJzaW9ucyBvZiB5b3VyIHNwZWNpZmljYXRpb24sIGFzIHdlbGwgYXMgaG9zdCBhbiBpbnRlcmFjdGl2ZSBBUEkgZXhwbG9yZXIgd2l0aCB0cnktaXQtb3V0IGZlYXR1cmVzIGNvdXJ0ZXN5IG9mIFtSYXBpZG9jXShodHRwczovL21yaW45LmdpdGh1Yi5pby9SYXBpRG9jLykgb3IgW1NjYWxhcl0oaHR0cHM6Ly9zY2FsYXIuY29tKS4KCioqRmFpciB3YXJuaW5nOioqIFRoaXMgbGlicmFyeSBpcyBpbiBFYXJseSBBY2Nlc3ModG0pIGFuZCB3aGlsZSB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0J3MgaGVyZSBkb2VzIHdvcmssIHRoZXJlJ3Mgc29tZSBmdW5jdGlvbmFsaXR5IHRoYXQgX2RvZXNuJ3RfIGV4aXN0LiBUaGUgc3R1ZmYgdGhhdCBzdGFuZHMgb3V0IHRvIG1lIHBlcnNvbmFsbHkgY2FuIGJlIGZvdW5kIGluIFtUT0RPLm1kXShodHRwczovL2dpdGh1Yi5jb20vZXJvcHBsZS9mYXN0aWZ5LW9wZW5hcGkzL2Jsb2IvbWFpbi9UT0RPLm1kKSwgaW5jbHVkaW5nIGEgc2hvcnQgbGlzdCBvZiB0aGluZ3MgdGhpcyBwbHVnaW4gX3dvbid0XyBkby4KCiMjIFVzYWdlICMjCgpGaXJzdCwgaW5zdGFsbCBpdCwgZXRjLiBldGMuOgoKYGBgYmFzaApucG0gaW5zdGFsbCBAZXJvcHBsZS9mYXN0aWZ5LW9wZW5hcGkzCnBucG0gYWRkIEBlcm9wcGxlL2Zhc3RpZnktb3BlbmFwaTMKeWFybiBhZGQgQGVyb3BwbGUvZmFzdGlmeS1vcGVuYXBpMwpgYGAKCk9uY2UgeW91J3ZlIGluc3RhbGxlZCBpdC0td2VsbCwgeW91J2QgYmVzdCBnbyBkbyBzb21lIHRoaW5ncyB0byBzZXQgaXQgdXAsIGh1aD8gVGhlcmUncyBhIG1hbnVhbCB0ZXN0IChvcmlnaW5hbGx5IGFkZGVkIHRvIHNtb2tlIG91dCBpc3N1ZXMgd2l0aCBSYXBpZG9jIHNlcnZpbmcpIGluIFtgZXhhbXBsZXMvc3RhcnQtc2VydmVyLnRzYF0sIHdoaWNoIGNhbiBhbHNvIGJlIGRpcmVjdGx5IGludm9rZWQgZnJvbSB0aGUgcmVwb3NpdG9yeSB3aXRoIGBucG0gcnVuIGRlbW9gLiBCZWxvdyBhcmUgdGhlIGltcG9ydGFudCBiaXRzIGZyb20gdGhhdCBkZW1vOgoKYGBgdHMKaW1wb3J0IEZhc3RpZnksIHsgRmFzdGlmeUluc3RhbmNlIH0gZnJvbSAnZmFzdGlmeSc7CmltcG9ydCB7IFN0YXRpYywgVHlwZSB9IGZyb20gJ0BzaW5jbGFpci90eXBlYm94JzsKCmltcG9ydCBPQVMzUGx1Z2luLCB7IE9BUzNQbHVnaW5PcHRpb25zLCBzY2hlbWFUeXBlLCBvYXMzUGx1Z2luQWp2IH0gZnJvbSAnLi4vc3JjL2luZGV4LmpzJzsKYGBgCgpZb3VyIGltcG9ydHMuIChPYnZpb3VzbHksIGluIHlvdXIgcHJvamVjdCwgdGhlIGxhc3QgaW1wb3J0IHdpbGwgYmUgZnJvbSBgIkBlcm9wcGxlL2Zhc3RpZnktb3BlbmFwaTMiYC4pCgpgYGB0cwpjb25zdCBmYXN0aWZ5T3B0czogRmFzdGlmeVNlcnZlck9wdGlvbnMgPSB7CiAgbG9nZ2VyOiB7IGxldmVsOiAnZXJyb3InIH0sCiAgYWp2OiB7CiAgICBwbHVnaW5zOiBbb2FzM1BsdWdpbkFqdl0sCiAgfQp9Cgpjb25zdCBmYXN0aWZ5ID0gRmFzdGlmeShmYXN0aWZ5T3B0cyk7CmF3YWl0IGZhc3RpZnkucmVnaXN0ZXIoT0FTM1BsdWdpbiwgeyAuLi5wbHVnaW5PcHRzIH0pOwpgYGAKClJlZ2lzdGVyIHRoZSBPQVMzIHBsdWdpbi4gVGhpcyBwbHVnaW4gdXNlcyB0aGUgRmFzdGlmeSBsb2dnZXIgYW5kIGNhbiBiZSBwcmV0dHkgY2hhdHR5IG9uIGBkZWJ1Z2AsIHNvIGJlYXIgdGhhdCBpbiBtaW5kLiBgcGx1Z2luT3B0c2AgaXMgdmlzaWJsZSBpbiB0aGF0IGZpbGUgZm9yIGFuIGV4YW1wbGUsIGJ1dCBpdCdzIGFsc28gY29tbWVudGVkIGV4aGF1c3RpdmVseSBmb3IgeW91ciBJbnRlbGxTZW5zaW5nIHBsZWFzdXJlIHdoaWxlIHlvdSdyZSB3cml0aW5nIGl0LgoKYGBgdHMKY29uc3QgUGluZ1Jlc3BvbnNlID0gc2NoZW1hVHlwZSgnUGluZ1Jlc3BvbnNlJywgVHlwZS5PYmplY3QoeyBwb25nOiBUeXBlLkJvb2xlYW4oKSB9KSk7CnR5cGUgUGluZ1Jlc3BvbnNlID0gU3RhdGljPHR5cGVvZiBQaW5nUmVzcG9uc2U+OwpgYGAKCllvdXIgc2NoZW1hLiBgc2NoZW1hVHlwZWAgdGFrZXMgYSBzdHJpbmcgYXMgYSBuYW1lLCB3aGljaCBfbXVzdCBiZSB1bmlxdWUgZm9yIHlvdXIgZW50aXJlIHByb2plY3RfLCBhcyB3ZWxsIGFzIGEgYEBzaW5jbGFpci90eXBlYm94YCBgVHlwZWAgKHdoaWNoIHlvdSBjYW4gdGhlbiB1c2UgYXMgYSBUeXBlU2NyaXB0IHR5cGUgYnkgZG9pbmcgYFN0YXRpYzx0eXBlb2YgVD5gLCBpdCdzIGF3ZXNvbWUpLiBUaGlzIGlzIG5vdyBhIGBUYWdnZWRTY2hlbWFgLCB3aGljaCBjYW4gYmUgdXNlZCBhbnl3aGVyZSBhIG5vcm1hbCBKU09OIFNjaGVtYSBvYmplY3QgY2FuIGJlIHVzZWQgd2l0aGluIEZhc3RpZnkgYW5kIHdpbGwgaGFuZGxlIHZhbGlkYXRpb24gYXMgeW91IHdvdWxkIGV4cGVjdC4KCklmIHlvdSB1c2UgYSBgVGFnZ2VkU2NoZW1hYCB3aXRoaW4gYW5vdGhlciBzY2hlbWEsIHRoZSBPQVMzIHBsdWdpbiBpcyBzbWFydCBlbm91Z2ggdG8gZXh0cmFjdCBpdCBpbnRvIGl0cyBvd24gT3BlbkFQSSBgIy9jb21wb25lbnRzL3NjaGVtYXMvWW91clR5cGVIZXJlYCBlbnRyeSwgc28geW91ciBnZW5lcmF0ZWQgY2xpZW50cyB3aWxsIGFsc28gb25seSBoYXZlIHRoZSBtaW5pbWFsIHNldCBvZiBtb2RlbCBjbGFzc2VzLCBldGMuIHRvIHdvcnJ5IGFib3V0LiBEaXR0byBoYXZpbmcgdGhlbSBpbiBhcnJheXMgYW5kIHNvIG9uLiBJJ3ZlIHRyaWVkIHRvIG1ha2UgdGhpcyBhcyBzaW1wbGUgdG8gZGVhbCB3aXRoIGFzIHBvc3NpYmxlOyBpZiBpdCBhY3RzIGluIHdheXMgeW91IGRvbid0IGV4cGVjdCwgX3BsZWFzZSBmaWxlIGFuIGlzc3VlXy4KCkFuZCBub3cgbGV0J3MgbWFrZSBhIHJvdXRlOgoKYGBgdHMKICBhd2FpdCBmYXN0aWZ5LnJlZ2lzdGVyKGFzeW5jIChmYXN0aWZ5OiBGYXN0aWZ5SW5zdGFuY2UpID0+IHsKICAgIGZhc3RpZnkucm91dGU8eyBSZXBseTogUGluZ1Jlc3BvbnNlIH0+KHsKICAgICAgdXJsOiAnL3BpbmcnLAogICAgICBtZXRob2Q6ICdHRVQnLAogICAgICBzY2hlbWE6IHsKICAgICAgICByZXNwb25zZTogewogICAgICAgICAgMjAwOiBQaW5nUmVzcG9uc2UsCiAgICAgICAgfSwKICAgICAgfSwKICAgICAgb2FzOiB7CiAgICAgICAgb3BlcmF0aW9uSWQ6ICdwaW5nUGluZ1BpbmdBbmREZWZpbml0ZWx5Tm90UG9uZycsCiAgICAgICAgc3VtbWFyeTogImEgcGluZyB0byB0aGUgc2VydmVyIiwKICAgICAgICBkZXNjcmlwdGlvbjogIlRoaXMgcGluZyB0byB0aGUgc2VydmVyIGxldHMgeW91IGtub3cgdGhhdCBpdCBoYXMgbm90IGJlZW4gZWF0ZW4gYnkgYSBncnVlLiIsCiAgICAgICAgZGVwcmVjYXRlZDogZmFsc2UsCiAgICAgICAgdGFnczogWydtZXRhJ10sCiAgICAgICAgdmVuZG9yUHJlZml4ZWRGaWVsZHM6IHsKICAgICAgICAgICJ4LW15LXZlbmRvci1maWVsZCI6IHRydWUsCiAgICAgICAgfSwKICAgICAgfSwKICAgICAgaGFuZGxlcjogYXN5bmMgKHJlcSwgcmVwbHkpID0+IHsKICAgICAgICByZXR1cm4geyBwb25nOiB0cnVlIH07CiAgICAgIH0KICAgIH0pOwogIH0sIHsgcHJlZml4OiAnL2FwaScgfSk7CmBgYAoKWW91IGRvbid0IGhhdmUgdG8gcHV0IHlvdXJzIGluc2lkZSBhIHByZWZpeGVkIHJvdXRlLCBidXQgSSBsaWtlIHRvLCBzbywgd2VsbCwgdGhlcmUgeW91IGdvLgoKSWYgeW91IGRvIGEgYG5wbSBydW4gZGVtb2AsIHlvdSdsbCBnZXQgYSBVSSB0aGF0IGxvb2tzIGxpa2UgdGhlIGZvbGxvd2luZzoKCiFbYSBkb2NzIHNjcmVlbnNob3RdKGh0dHBzOi8vaS5pbWd1ci5jb20vaU9QQXBtcS5wbmcpCgpBbmQgdGhlcmUgeW91IGdvLgoKIyMgQXV0b3dpcmVkIFNlY3VyaXR5ICMjCgpUaGlzIHBsdWdpbiBpbmNsdWRlcyBhbiBhdXRvd2lyZWQgc2VjdXJpdHkgc3lzdGVtIHRoYXQgYXV0b21hdGljYWxseSBoYW5kbGVzIGF1dGhlbnRpY2F0aW9uIGJhc2VkIG9uIHlvdXIgT3BlbkFQSSBzZWN1cml0eSBzY2hlbWVzLiBEZWZpbmUgeW91ciBzZWN1cml0eSBzY2hlbWVzIG9uY2UsIGFuZCB0aGUgcGx1Z2luIHdpbGwgYXV0b21hdGljYWxseSB2YWxpZGF0ZSBjcmVkZW50aWFscyBvbiByb3V0ZXMgdGhhdCB1c2UgdGhlbS4KCiMjIyBCYXNpYyBTZXR1cCAjIyMKCmBgYHRzCmF3YWl0IGZhc3RpZnkucmVnaXN0ZXIoT0FTM1BsdWdpbiwgewogIG9wZW5hcGlJbmZvOiB7IHRpdGxlOiAnTXkgQVBJJywgdmVyc2lvbjogJzEuMC4wJyB9LAogIGF1dG93aXJlZFNlY3VyaXR5OiB7CiAgICBzZWN1cml0eVNjaGVtZXM6IHsKICAgICAgQXBpS2V5OiB7CiAgICAgICAgdHlwZTogJ2FwaUtleScsCiAgICAgICAgaW46ICdoZWFkZXInLAogICAgICAgIG5hbWU6ICdYLUFwaS1LZXknLAogICAgICAgIGZuOiAoYXBpS2V5LCByZXF1ZXN0KSA9PiB7CiAgICAgICAgICByZXR1cm4gYXBpS2V5ID09PSAnc2VjcmV0JyA/IHsgb2s6IHRydWUgfSA6IHsgb2s6IGZhbHNlLCBjb2RlOiA0MDEgfTsKICAgICAgICB9LAogICAgICB9LAogICAgICBCZWFyZXJBdXRoOiB7CiAgICAgICAgdHlwZTogJ2h0dHAnLAogICAgICAgIHNjaGVtZTogJ2JlYXJlcicsCiAgICAgICAgZm46ICh0b2tlbiwgcmVxdWVzdCkgPT4gewogICAgICAgICAgLy8gVmFsaWRhdGUgSldUIG9yIG90aGVyIGJlYXJlciB0b2tlbgogICAgICAgICAgcmV0dXJuIGlzVmFsaWRUb2tlbih0b2tlbikgPyB7IG9rOiB0cnVlIH0gOiB7IG9rOiBmYWxzZSwgY29kZTogNDAxIH07CiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sCiAgfSwKfSk7CgovLyBVc2Ugc2VjdXJpdHkgb24gcm91dGVzCmZhc3RpZnkuZ2V0KCcvcHJvdGVjdGVkJywgewogIG9hczogewogICAgc2VjdXJpdHk6IHsgQXBpS2V5OiBbXSB9LAogIH0sCn0sIGFzeW5jIChyZXEsIHJlcGx5KSA9PiB7CiAgcmV0dXJuIHsgZGF0YTogJ3NlY3JldCBzdHVmZicgfTsKfSk7CmBgYAoKIyMjIEhhbmRsZXIgUmV0dXJuIFZhbHVlcyAjIyMKClNlY3VyaXR5IGhhbmRsZXJzIHJldHVybiBgeyBvazogdHJ1ZSB9YCBmb3Igc3VjY2Vzcywgb3IgYHsgb2s6IGZhbHNlLCBjb2RlOiA0MDEgfCA0MDMgfWAgZm9yIGZhaWx1cmU6Ci0gUmV0dXJuIGA0MDFgIChVbmF1dGhvcml6ZWQpIHdoZW4gY3JlZGVudGlhbHMgYXJlIG1pc3Npbmcgb3IgaW52YWxpZAotIFJldHVybiBgNDAzYCAoRm9yYmlkZGVuKSB3aGVuIGNyZWRlbnRpYWxzIGFyZSB2YWxpZCBidXQgYWNjZXNzIGlzIGRlbmllZAoKIyMjIEFORC9PUiBTZWN1cml0eSBMb2dpYyAjIyMKCk9wZW5BUEkgc3VwcG9ydHMgY29tYmluaW5nIHNlY3VyaXR5IHJlcXVpcmVtZW50czoKCmBgYHRzCi8vIE9SIGxvZ2ljOiBlaXRoZXIgc2NoZW1lIGNhbiBncmFudCBhY2Nlc3MKb2FzOiB7CiAgc2VjdXJpdHk6IFt7IEFwaUtleTogW10gfSwgeyBCZWFyZXJBdXRoOiBbXSB9XSwKfQoKLy8gQU5EIGxvZ2ljOiBib3RoIHNjaGVtZXMgbXVzdCBwYXNzCm9hczogewogIHNlY3VyaXR5OiB7IEFwaUtleTogW10sIEJlYXJlckF1dGg6IFtdIH0sCn0KYGBgCgojIyMgT3B0aW9uYWwgQ3JlZGVudGlhbHMgd2l0aCBgcGFzc051bGxJZk5vbmVQcm92aWRlZGAgIyMjCgpCeSBkZWZhdWx0LCBtaXNzaW5nIGNyZWRlbnRpYWxzIHJldHVybiA0MDEgaW1tZWRpYXRlbHkuIFNldCBgcGFzc051bGxJZk5vbmVQcm92aWRlZDogdHJ1ZWAgdG8gcmVjZWl2ZSBgbnVsbGAgaW4geW91ciBoYW5kbGVyIGluc3RlYWQsIGFsbG93aW5nIHlvdSB0byBpbXBsZW1lbnQgb3B0aW9uYWwgYXV0aGVudGljYXRpb246CgpgYGB0cwpzZWN1cml0eVNjaGVtZXM6IHsKICBPcHRpb25hbEFwaUtleTogewogICAgdHlwZTogJ2FwaUtleScsCiAgICBpbjogJ2hlYWRlcicsCiAgICBuYW1lOiAnWC1BcGktS2V5JywKICAgIHBhc3NOdWxsSWZOb25lUHJvdmlkZWQ6IHRydWUsCiAgICBmbjogKGFwaUtleSwgcmVxdWVzdCkgPT4gewogICAgICBpZiAoYXBpS2V5ID09PSBudWxsKSB7CiAgICAgICAgLy8gTm8ga2V5IHByb3ZpZGVkIC0gYWxsb3cgYW5vbnltb3VzIGFjY2VzcwogICAgICAgIHJldHVybiB7IG9rOiB0cnVlIH07CiAgICAgIH0KICAgICAgLy8gS2V5IHByb3ZpZGVkIC0gdmFsaWRhdGUgaXQKICAgICAgcmV0dXJuIGFwaUtleSA9PT0gJ3NlY3JldCcgPyB7IG9rOiB0cnVlIH0gOiB7IG9rOiBmYWxzZSwgY29kZTogNDAxIH07CiAgICB9LAogIH0sCn0KYGBgCgojIyMgQWNjZXNzaW5nIFJlcXVlc3QgQm9keSB3aXRoIGByZXF1aXJlc1BhcnNlZEJvZHlgICMjIwoKU29tZXRpbWVzIGF1dGhlbnRpY2F0aW9uIGRlY2lzaW9ucyBkZXBlbmQgb24gdGhlIHJlcXVlc3QgYm9keSAoZS5nLiwgcmVxdWVzdCBzaWduaW5nLCBib2R5LWJhc2VkIGF1dGhvcml6YXRpb24pLiBTZXQgYHJlcXVpcmVzUGFyc2VkQm9keTogdHJ1ZWAgdG8gcmVjZWl2ZSB0aGUgcGFyc2VkIGJvZHkgaW4geW91ciBoYW5kbGVyOgoKYGBgdHMKc2VjdXJpdHlTY2hlbWVzOiB7CiAgQm9keUF3YXJlQXV0aDogewogICAgdHlwZTogJ2FwaUtleScsCiAgICBpbjogJ2hlYWRlcicsCiAgICBuYW1lOiAnWC1BcGktS2V5JywKICAgIHJlcXVpcmVzUGFyc2VkQm9keTogdHJ1ZSwKICAgIGZuOiAoYXBpS2V5LCByZXF1ZXN0LCBjb250ZXh0KSA9PiB7CiAgICAgIC8vIGNvbnRleHQuYm9keSBjb250YWlucyB0aGUgcGFyc2VkIHJlcXVlc3QgYm9keQogICAgICBjb25zdCBib2R5ID0gY29udGV4dD8uYm9keSBhcyB7IHJlc291cmNlSWQ/OiBzdHJpbmcgfTsKCiAgICAgIC8vIENoZWNrIGlmIHVzZXIgaGFzIGFjY2VzcyB0byB0aGUgcmVxdWVzdGVkIHJlc291cmNlCiAgICAgIGlmICghdXNlckNhbkFjY2Vzc1Jlc291cmNlKGFwaUtleSwgYm9keT8ucmVzb3VyY2VJZCkpIHsKICAgICAgICByZXR1cm4geyBvazogZmFsc2UsIGNvZGU6IDQwMyB9OwogICAgICB9CiAgICAgIHJldHVybiB7IG9rOiB0cnVlIH07CiAgICB9LAogIH0sCn0KYGBgCgpXaGVuIGByZXF1aXJlc1BhcnNlZEJvZHlgIGlzIG5vdCBzZXQgb3IgaXMgYGZhbHNlYCwgdGhlIGBjb250ZXh0YCBwYXJhbWV0ZXIgd2lsbCBiZSBgdW5kZWZpbmVkYC4KCiMjIyBSYXcgQm9keSBBY2Nlc3MgZm9yIFNpZ25hdHVyZSBWYWxpZGF0aW9uICMjIwoKRm9yIHdlYmhvb2sgc2lnbmF0dXJlIHZhbGlkYXRpb24gb3IgSE1BQyB2ZXJpZmljYXRpb24sIHlvdSBuZWVkIGFjY2VzcyB0byB0aGUgcmF3ICh1bnBhcnNlZCkgcmVxdWVzdCBib2R5LiBVc2UgdGhlIFtgZmFzdGlmeS1yYXctYm9keWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9Fb21tL2Zhc3RpZnktcmF3LWJvZHkpIHBsdWdpbiBhbG9uZ3NpZGUgYHJlcXVpcmVzUGFyc2VkQm9keWA6CgpgYGB0cwppbXBvcnQgZmFzdGlmeVJhd0JvZHkgZnJvbSAnZmFzdGlmeS1yYXctYm9keSc7CgovLyBSZWdpc3RlciBmYXN0aWZ5LXJhdy1ib2R5IEJFRk9SRSB0aGUgT0FTIHBsdWdpbgphd2FpdCBmYXN0aWZ5LnJlZ2lzdGVyKGZhc3RpZnlSYXdCb2R5LCB7CiAgZ2xvYmFsOiBmYWxzZSwgIC8vIE9ubHkgb24gcm91dGVzIHRoYXQgbmVlZCBpdAogIHJ1bkZpcnN0OiB0cnVlLCAvLyBHZXQgcmF3IGJvZHkgYmVmb3JlIGFueSB0cmFuc2Zvcm1zCn0pOwoKYXdhaXQgZmFzdGlmeS5yZWdpc3RlcihPQVMzUGx1Z2luLCB7CiAgLy8gLi4uIG90aGVyIG9wdGlvbnMKICBhdXRvd2lyZWRTZWN1cml0eTogewogICAgc2VjdXJpdHlTY2hlbWVzOiB7CiAgICAgIFdlYmhvb2tTaWduYXR1cmU6IHsKICAgICAgICB0eXBlOiAnYXBpS2V5JywKICAgICAgICBpbjogJ2hlYWRlcicsCiAgICAgICAgbmFtZTogJ1gtU2lnbmF0dXJlJywKICAgICAgICByZXF1aXJlc1BhcnNlZEJvZHk6IHRydWUsCiAgICAgICAgZm46IChzaWduYXR1cmUsIHJlcXVlc3QsIGNvbnRleHQpID0+IHsKICAgICAgICAgIC8vIHJlcXVlc3QucmF3Qm9keSBjb250YWlucyB0aGUgcmF3IHN0cmluZy9idWZmZXIKICAgICAgICAgIGNvbnN0IGV4cGVjdGVkU2lnID0gY3J5cHRvCiAgICAgICAgICAgIC5jcmVhdGVIbWFjKCdzaGEyNTYnLCBzZWNyZXQpCiAgICAgICAgICAgIC51cGRhdGUocmVxdWVzdC5yYXdCb2R5IGFzIHN0cmluZykKICAgICAgICAgICAgLmRpZ2VzdCgnaGV4Jyk7CgogICAgICAgICAgaWYgKHNpZ25hdHVyZSAhPT0gZXhwZWN0ZWRTaWcpIHsKICAgICAgICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBjb2RlOiA0MDEgfTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiB7IG9rOiB0cnVlIH07CiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sCiAgfSwKfSk7CgovLyBFbmFibGUgcmF3Qm9keSBvbiBzcGVjaWZpYyByb3V0ZXMKZmFzdGlmeS5wb3N0KCcvd2ViaG9vaycsIHsKICBjb25maWc6IHsgcmF3Qm9keTogdHJ1ZSB9LAogIG9hczogeyBzZWN1cml0eTogeyBXZWJob29rU2lnbmF0dXJlOiBbXSB9IH0sCn0sIGhhbmRsZXIpOwpgYGAKCiMjIyBTdXBwb3J0ZWQgU2VjdXJpdHkgU2NoZW1lcyAjIyMKCi0gKipBUEkgS2V5KiogKGB0eXBlOiAnYXBpS2V5J2ApOiBWYWxpZGF0ZXMga2V5cyBmcm9tIGhlYWRlcnMgb3IgY29va2llcwotICoqSFRUUCBCYXNpYyoqIChgdHlwZTogJ2h0dHAnLCBzY2hlbWU6ICdiYXNpYydgKTogVmFsaWRhdGVzIHVzZXJuYW1lL3Bhc3N3b3JkIGNyZWRlbnRpYWxzCi0gKipIVFRQIEJlYXJlcioqIChgdHlwZTogJ2h0dHAnLCBzY2hlbWU6ICdiZWFyZXInYCk6IFZhbGlkYXRlcyBiZWFyZXIgdG9rZW5zCgojIyBDb250cmlidXRpbmcgIyMKSXNzdWVzIGFuZCBQUnMgd2VsY29tZSEgQ29uc3RydWN0aXZlIGNyaXRpY2lzbSBvbiBob3cgdG8gaW1wcm92ZSB0aGUgbGlicmFyeSB3b3VsZCBiZSBhd2Vzb21lLCBldmVuIGFzIEkgdXNlIGl0IGluIG15IG93biBzdHVmZiBhbmQgZmlndXJlIG91dCB3aGVyZSB0byBnbyBmcm9tIHRoZXJlLCB0b28uCgoqKkJlZm9yZSB5b3Ugc3RhcnQgaW4gb24gYSBQUiwgaG93ZXZlcioqLCBwbGVhc2UgZG8gbWUgYSBzb2xpZCBhbmQgZHJvcCBhbiBpc3N1ZSBzbyB3ZSBjYW4gZGlzY3VzcyB0aGUgYXBwcm9hY2guIFRoYW5rcyEK readmeEtag: '"69e0ac3b9a0770d1bad22d0f56419b89267d0f1a"' readmeLastModified: Thu, 15 Jan 2026 21:48:04 GMT repositoryId: 459027206 description: Developer-friendly OpenAPI3 tooling for Fastify that's easy to use. created: '2022-02-14T05:24:29Z' updated: '2026-02-05T01:38:39Z' language: TypeScript archived: false stars: 27 watchers: 3 forks: 3 owner: eropple logo: https://avatars.githubusercontent.com/u/109262?v=4 repoEtag: '"2158c66f92ca102f416544877880fe6c5a116173fa19f9e75ff8b9ab0e1244b7"' repoLastModified: Thu, 05 Feb 2026 01:38:39 GMT foundInMaster: true category: - Server - Parsers id: 69aabd9435e6e1468c8a137c700edcaf - source: - openapi3 tags - openapi31 tags repository: https://github.com/janbuchar/payload-oapi v3: true v3_1: true id: a75ea2a00fbf40d2b02b06915b51c5f4 repositoryMetadata: base64Readme: >- IyBQYXlsb2FkIE9wZW5BUEkgUGx1Z2luCgpbIVtucG0gdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL3BheWxvYWQtb2FwaS5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9wYXlsb2FkLW9hcGkpCgpBdXRvZ2VuZXJhdGUgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZyb20geW91ciBQYXlsb2FkIENNUyBpbnN0YW5jZSBhbmQgdXNlIGl0IGZvciBkb2N1bWVudGF0aW9uIG9yIHRvIGdlbmVyYXRlIGNsaWVudCBTREtzLgoKIyBSb2FkbWFwCgotIFt4XSBDb21wbGV0ZSBkZXNjcmlwdGlvbiBvZiBjb2xsZWN0aW9uIENSVUQgZW5kcG9pbnRzCi0gW3hdIENvbXBsZXRlIGRlc2NyaXB0aW9uIG9mIGdsb2JhbHMgQ1JVRCBlbmRwb2ludHMKLSBbeF0gSW50ZWdyYXRlZCBTd2FnZ2VyIFVJIGFuZCBSYXBpZG9jCi0gW3hdIEF1dGhlbnRpY2F0aW9uIGVuZHBvaW50cyBhbmQgc3BlY2lmaWNhdGlvbgotIFt4XSBQcmVmZXJlbmNlcyBlbmRwb2ludHMKLSBbeF0gU3VwcG9ydCBQYXlsb2FkIENNUyAzLngKLSBbeF0gU3VwcG9ydCBnZW5lcmF0aW5nIGJvdGggT3BlbkFQSSAzLjAgYW5kIDMuMQotIFsgXSBDdXN0b20gZW5kcG9pbnRzCgojIEluc3RhbGxhdGlvbgoKWW91IGNhbiBpbnN0YWxsIHRoZSBwbHVnaW4gdXNpbmcgeW91ciBwcmVmZXJyZWQgcGFja2FnZSBtYW5hZ2VyOgoKLSBgcG5wbSBhZGQgcGF5bG9hZC1vYXBpYAotIGBucG0gaW5zdGFsbCBwYXlsb2FkLW9hcGlgCi0gYHlhcm4gYWRkIHBheWxvYWQtb2FwaWAKCiMgU2V0dXAKCiMjIDEuIEFkZCB0aGUgT3BlbkFQSSBjb3JlIHBsdWdpbgoKVG8gYWRkIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gZW5kcG9pbnQgdG8geW91ciBQYXlsb2FkIGFwcCwgc2ltcGx5IGltcG9ydCB0aGUgYG9wZW5hcGlgIHBsdWdpbiBhbmQgYWRkIGl0IHRvIHlvdXIgcGF5bG9hZCBjb25maWd1cmF0aW9uOgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgeyBvcGVuYXBpIH0gZnJvbSAncGF5bG9hZC1vYXBpJwoKYnVpbGRDb25maWcoewogIHBsdWdpbnM6IFsKICAgIG9wZW5hcGkoeyBvcGVuYXBpVmVyc2lvbjogJzMuMCcsIG1ldGFkYXRhOiB7IHRpdGxlOiAnRGV2IEFQSScsIHZlcnNpb246ICcwLjAuMScgfSB9KSwKICBdLAogIC8vIC4uLgp9KQpgYGAKCiMjIDIuIEFkZCBhIGRvY3VtZW50YXRpb24gVUkgcGx1Z2luIChvcHRpb25hbCkKClRvIHByb3ZpZGUgYSB1c2VyIGludGVyZmFjZSBmb3IgeW91ciBBUEkgZG9jdW1lbnRhdGlvbiwgeW91IGNhbiBhZGQgb25lIG9mIHRoZSBmb2xsb3dpbmcgcGx1Z2luczoKCi0gW2BzY2FsYXJgXShodHRwczovL2dpdGh1Yi5jb20vc2NhbGFyL3NjYWxhcikKLSBbYHN3YWdnZXJVSWBdKGh0dHBzOi8vc3dhZ2dlci5pby90b29scy9zd2FnZ2VyLXVpLykKLSBbYHJhcGlkb2NgXShodHRwczovL21yaW45LmdpdGh1Yi5pby9SYXBpRG9jLykKLSBbYHJlZG9jYF0oaHR0cHM6Ly9naXRodWIuY29tL1JlZG9jbHkvcmVkb2MpCgpFeGFtcGxlIHVzYWdlOgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgeyBvcGVuYXBpLCBzY2FsYXIsIHN3YWdnZXJVSSwgcmFwaWRvYywgcmVkb2MgfSBmcm9tICdwYXlsb2FkLW9hcGknCgovLyBDaG9vc2Ugb25lIGRvY3VtZW50YXRpb24gVUkgcGx1Z2lucyBhcyBuZWVkZWQKYnVpbGRDb25maWcoewogIHBsdWdpbnM6IFsKICAgIG9wZW5hcGkoLyogLi4uICovKSwKICAgIC8vIFVuY29tbWVudCB0aGUgVUkgeW91IHdhbnQgdG8gdXNlOgogICAgc2NhbGFyKHsgLyogLi4ub3B0aW9ucyAqLyB9KSwKICAgIC8vIHN3YWdnZXJVSSh7IC8qIC4uLm9wdGlvbnMgKi8gfSksCiAgICAvLyByYXBpZG9jKHsgLyogLi4ub3B0aW9ucyAqLyB9KSwKICAgIC8vIHJlZG9jKHsgLyogLi4ub3B0aW9ucyAqLyB9KSwKICBdLAogIC8vIC4uLgp9KQpgYGAKCiMgVXNhZ2UKClVubGVzcyB5b3UgY29uZmlndXJlZCBpdCBvdGhlcndpc2UsIHlvdXIgc3BlYyB3aWxsIGJlIGFjY2Vzc2libGUgdmlhIDxodHRwczovL3lvdXItcGF5bG9hZC5jb20vYXBpL29wZW5hcGkuanNvbj4uIElmIHlvdQphZGRlZCBhIGRvY3VtZW50YXRpb24gVUksIHRoYXQgd2lsbCBiZSBhY2Nlc3NpYmxlIHZpYSA8aHR0cHM6Ly95b3VyLXBheWxvYWQuY29tL2FwaS9kb2NzPiAodGhpcyBpcyBhbHNvIGNvbmZpZ3VyYWJsZSkuCg== readmeEtag: '"28915de6673eeecdd68f6fd6c4045c0dee7a2936"' readmeLastModified: Tue, 27 May 2025 14:53:12 GMT repositoryId: 618796772 description: A Payload CMS plugin for OpenAPI (3.0, 3.1) specification generation created: '2023-03-25T11:34:02Z' updated: '2026-02-06T00:52:31Z' language: TypeScript archived: false stars: 114 watchers: 2 forks: 24 owner: janbuchar logo: https://avatars.githubusercontent.com/u/461515?v=4 license: MIT repoEtag: '"350588071a807d885387742852a2df9de9e7be9c69e1fbe40bc8a47a3820a9fb"' repoLastModified: Fri, 06 Feb 2026 00:52:31 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/teyras/payload-oapi - source: openapi3 tags repository: https://github.com/microprofile-extensions/openapi-ext v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQXBpIEV4dGVuc2lvbnMKClshW2J1aWxkX3N0YXR1c10oaHR0cHM6Ly9hcHAudHJhdmlzLWNpLmNvbS9taWNyb3Byb2ZpbGUtZXh0ZW5zaW9ucy9vcGVuYXBpLWV4dC5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL2FwcC50cmF2aXMtY2kuY29tL2dpdGh1Yi9taWNyb3Byb2ZpbGUtZXh0ZW5zaW9ucy9vcGVuYXBpLWV4dCkgWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLUFwYWNoZSUyMDItYmx1ZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9wcm9maWxlLWV4dGVuc2lvbnMvb3BlbmFwaS1leHQvYmxvYi9tYWluL0xJQ0VOU0UpCl9fX19fX19fX19fCkhlcmUgeW91IHdpbGwgZmluZCBzb21lIGV4dHJhIHRvb2xzIGZvciBPcGVuIEFQSQoKKiBbT3BlbkFwaSBVSV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3JvcHJvZmlsZS1leHRlbnNpb25zL29wZW5hcGktZXh0L2Jsb2IvbWFpbi9vcGVuYXBpLXVpL1JFQURNRS5tZCkKCiMjIEV4YW1wbGVzCgpBbHNvIGxvb2sgYXQgdGhlIFtleGFtcGxlIGFwcGxpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9wcm9maWxlLWV4dGVuc2lvbnMvb3BlbmFwaS1leHQvYmxvYi9tYWluL29wZW5hcGktZXhhbXBsZXMvYmFzaWMtZXhhbXBsZS9SRUFETUUubWQpIHRvIHNlZSBob3cgdGhpcyBpcyB1c2VkLgpbSGVsaWRvbiBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9wcm9maWxlLWV4dGVuc2lvbnMvb3BlbmFwaS1leHQvYmxvYi9tYWluL29wZW5hcGktZXhhbXBsZXMvaGVsaWRvbi1iYXNpYy1leGFtcGxlL1JFQURNRS5tZCkgZGVtb25zdHJhdGUgT3BlbkFwaSB1c2FnZSB3aXRoIEhlbGlkb24gTWljcm9Qcm9maWxlLgo= readmeEtag: '"310bf9c993b51c13e1dc837e3d10c7c41e32aba4"' readmeLastModified: Mon, 01 May 2023 10:37:19 GMT repositoryId: 149434703 description: Some extensions for MicroProfile OpenAPI created: '2018-09-19T10:39:23Z' updated: '2025-01-21T03:51:15Z' language: Java archived: false stars: 23 watchers: 2 forks: 14 owner: microprofile-extensions logo: https://avatars.githubusercontent.com/u/43223776?v=4 license: Apache-2.0 repoEtag: '"25a18a618cac59c72b0a6ea99d878b956d5899d090eacd5e09d42b7af135abbd"' repoLastModified: Tue, 21 Jan 2025 03:51:15 GMT foundInMaster: true category: - SDK - Parsers id: a6ea8a703b31ae1a40d92590739ef8a4 - source: openapi3 tags repository: https://github.com/riconijeboer/laravel-to-swagger v3: true repositoryMetadata: base64Readme: >- IyBMYXJhdmVsIHRvIFN3YWdnZXIKCjxhIGhyZWY9Imh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9yaWNvbmlqZWJvZXIvbGFyYXZlbC10by1zd2FnZ2VyIiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IlBhY2thZ2lzdCB2ZXJzaW9uIj4KICAgIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3BhY2thZ2lzdC92L3JpY29uaWplYm9lci9sYXJhdmVsLXRvLXN3YWdnZXIiIGFsdD0iUGFja2FnaXN0IHZlcnNpb24iPgo8L2E+CjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3BhY2thZ2lzdC9kbS9yaWNvbmlqZWJvZXIvbGFyYXZlbC10by1zd2FnZ2VyIiBhbHQ9IlBhY2thZ2lzdCBkb3dubG9hZHMiPgoKVGhpcyBwYWNrYWdlIGFpbXMgdG8gYnJpbmcgdGhlIGVhc2llc3QgcGF0aCB0byBjcmVhdGluZyBhIFN3YWdnZXIgLyBPcGVuQXBpIDMgY29uZmlnIGZvciB5b3VyIExhcmF2ZWwgQVBJJ3MuCgojIyBJbnN0YWxsYXRpb24KCkZvciBsb2NhbCBvbmx5IGluc3RhbGxhdGlvbiBnbyBbaGVyZV0oI2xvY2FsLW9ubHktaW5zdGFsbGF0aW9uKQoKMS4gYGNvbXBvc2VyIHJlcXVpcmUgcmljb25pamVib2VyL2xhcmF2ZWwtdG8tc3dhZ2dlcmAKMS4gYHBocCBhcnRpc2FuIHZlbmRvcjpwdWJsaXNoIC0tcHJvdmlkZXI9IlJpY29OaWplYm9lclxTd2FnZ2VyXFN3YWdnZXJTZXJ2aWNlUHJvdmlkZXIiYAogICAgLSBUaGlzIHdpbGwgcHVibGlzaCB0aGUgcGFja2FnZSdzIGNvbmZpZy1maWxlIGFuZCBtaWdyYXRpb25zCgojIyMgTG9jYWwgT25seSBpbnN0YWxsYXRpb24KCjEuIGBjb21wb3NlciByZXF1aXJlIHJpY29uaWplYm9lci9sYXJhdmVsLXRvLXN3YWdnZXIgLS1kZXZgCjEuIGBwaHAgYXJ0aXNhbiB2ZW5kb3I6cHVibGlzaCAtLXByb3ZpZGVyPSJSaWNvTmlqZWJvZXJcU3dhZ2dlclxTd2FnZ2VyU2VydmljZVByb3ZpZGVyImAKICAgIC0gVGhpcyB3aWxsIHB1Ymxpc2ggdGhlIHBhY2thZ2UncyBjb25maWctZmlsZSBhbmQgbWlncmF0aW9ucwoxLiBGaW5hbGx5LCB5b3Ugc2hvdWxkIHByZXZlbnQgdGhlIFN3YWdnZXIgcGFja2FnZSBmcm9tIGJlaW5nIFthdXRvLWRpc2NvdmVyZWRdKGh0dHBzOi8vbGFyYXZlbC5jb20vZG9jcy84LngvcGFja2FnZXMjcGFja2FnZS1kaXNjb3ZlcnkpIGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIHRvIHlvdXIgYGNvbXBvc2VyLmpzb25gIGZpbGU6CiAgIGBgYAogICAiZXh0cmEiOiB7CiAgICAgICAibGFyYXZlbCI6IHsKICAgICAgICAgICAiZG9udC1kaXNjb3ZlciI6IFsKICAgICAgICAgICAgICAgInJpY29uaWplYm9lci9sYXJhdmVsLXRvLXN3YWdnZXIiCiAgICAgICAgICAgXQogICAgICAgfQogICB9CiAgIGBgYAoxLiBOb3cgdGhhdCBhdXRvLWRpc2NvdmVyeSBpcyBkaXNhYmxlZCB5b3Ugc2hvdWxkIG1hbnVhbGx5IHJlZ2lzdGVyIHRoZSBzZXJ2aWNlIHByb3ZpZGVyIGluIHRoZSBgcmVnaXN0ZXJgIG1ldGhvZCBvZiB5b3VyIGBBcHBcUHJvdmlkZXJzXEFwcFNlcnZpY2VQcm92aWRlcmAgY2xhc3MuCiAgIEluIHRoZSBleGFtcGxlIHdlIG9ubHkgZW5hYmxlIHRoZSBwYWNrYWdlIHdoZW4gd2UgYXJlIHJ1bm5pbmcgaW4gYSBgbG9jYWxgIGVudmlyb25tZW50LgogICBgYGBwaHAKICAgLyoqCiAgICAqIFJlZ2lzdGVyIGFueSBhcHBsaWNhdGlvbiBzZXJ2aWNlcy4KICAgICoKICAgICogQHJldHVybiB2b2lkCiAgICAqLwogICBwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXIoKQogICB7CiAgICAgICBpZiAoJHRoaXMtPmFwcC0+ZW52aXJvbm1lbnQoJ2xvY2FsJykpIHsKICAgICAgICAgICAkdGhpcy0+YXBwLT5yZWdpc3RlcihcUmljb05pamVib2VyXFN3YWdnZXJcU3dhZ2dlclNlcnZpY2VQcm92aWRlcjo6Y2xhc3MpOwogICAgICAgfQogICB9CiAgIGBgYAoKIyMjIFJlcXVpcmVtZW50cwoKLSAqKlBIUCoqOiA3LjQueCBvciA4LjAueAotICoqTGFyYXZlbCoqOiB2NiAvIHY3IC8gdjgKCiMjIyBVcGRhdGluZwoKV2hlbiBjaGFuZ2VzIGFyZSBtYWRlIHRoYXQgaW1wYWN0IGV4aXN0aW5nIHVzZXJzLCBJIHdpbGwgbWFrZSBzdXJlIHRoYXQgdGhleSBhcmUgZG9jdW1lbnRlZCBpbiB0aGUgW0NoYW5nZWxvZ10oI2NoYW5nZWxvZykuCgpUaGVzZSB3aWxsIGNvbnRhaW4gY2hhbmdlcyBsaWtlIGRhdGFiYXNlIGNvbHVtbnMgYWRkZWQgLyByZW1vdmVkIC8gcmVuYW1lZC4gT3IgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgbmVlZCBhY3Rpb24gd2l0aGluIHlvdXIgY29kZS4KCiMjIyMgdjIuMS54IHRvIHYyLjIueAoKLSBXaGVuIHVwZGF0aW5nIGZyb20gdjIuMSB0byB2Mi4yIGFkZCBhIG51bGxhYmxlIGByb3V0ZV9kb21haW5gIHN0cmluZy1jb2x1bW4gdG8gdGhlIGBzd2FnZ2VyX2JhdGNoZXNgIGRvbWFpbi4gICAKICBgJHRhYmxlLT5zdHJpbmcoJ3JvdXRlX2RvbWFpbicpLT5udWxsYWJsZSgpO2AKCiMjIFVzYWdlCgojIyMgUmVnaXN0ZXJpbmcgdGhlIFJlZG9jIERvY3VtZW50YXRpb24gcm91dGUuCgpSZWFkaW5nIGEgU3dhZ2dlciBjb25maWcgaXMgYW4gYWNxdWlyZWQgdGFzdGUuIFRvIGRpc3BsYXkgdGhlIGNvbmZpZyBpbiBhIG1vcmUgdXNlci1mcmllbmRseSB3YXkgSSd2ZSB1c2VkIFtSZWRvY10oaHR0cHM6Ly9naXRodWIuY29tL1JlZG9jbHkvcmVkb2MpLiBUbyByZWdpc3RlciB0aGUgZG9jdW1lbnRhdGlvbiByb3V0ZSB5b3UgY2FuIHNpbXBseQphZGQgdGhlIGNvZGUgYmVsb3cgdG8geW91ciBgcm91dGVzL3dlYi5waHBgIGZpbGUgb3Igd2l0aGluIGEgU2VydmljZVByb3ZpZGVyLgoKYGBgcGhwCnVzZSBSaWNvTmlqZWJvZXJcU3dhZ2dlclxTd2FnZ2VyOwoKU3dhZ2dlcjo6cm91dGVzKCk7CmBgYAoKIyMjIyBDdXN0b21pemluZyB0aGUgL2RvY3MgVXJsCgpgYGBwaHAKdXNlIFJpY29OaWplYm9lclxTd2FnZ2VyXEh0dHBcUm91dGluZ1xSb3V0ZVJlZ2lzdHJhcjsKdXNlIFJpY29OaWplYm9lclxTd2FnZ2VyXFN3YWdnZXI7CgpTd2FnZ2VyOjpyb3V0ZXMoZm4gKFJvdXRlUmVnaXN0cmFyICRyb3V0ZXMpID0+ICRyb3V0ZXMtPmZvckRvY3VtZW50YXRpb24oJy9kaWZmZXJlbnQtdXJsL2RvY3MnKSk7CmBgYAoKIyMjIyBDdXN0b21pemluZyB0aGUgcm91dGluZyBncm91cAoKYGBgcGhwCnVzZSBSaWNvTmlqZWJvZXJcU3dhZ2dlclxTd2FnZ2VyOwoKU3dhZ2dlcjo6cm91dGVzKG51bGwsIFsKICAgICdwcmVmaXgnID0+ICdzd2FnZ2VyJywgLy8gVGhpcyB3aWxsIGRvIFJvdXRlOjpncm91cChbJ3ByZWZpeCcgPT4gJ3N3YWdnZXInXSkgdW5kZXIgdGhlIGhvb2QuCl0pOwpgYGAKCiMjIyMgVXNpbmcgU3dhZ2dlciBVSSBpbnN0ZWFkIG9mIFJlZG9jCgpZb3UgY2FuIGRpc2FibGUgUmVkb2MgYW5kIHVzZSBTd2FnZ2VyIFVJIGluc3RlYWQgYnkgcGFzc2luZyBgZmFsc2VgIGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHRvIHRoZSBgZm9yRG9jdW1lbnRhdGlvbmAgbWV0aG9kLgoKYGBgcGhwCnVzZSBSaWNvTmlqZWJvZXJcU3dhZ2dlclxIdHRwXFJvdXRpbmdcUm91dGVSZWdpc3RyYXI7CnVzZSBSaWNvTmlqZWJvZXJcU3dhZ2dlclxTd2FnZ2VyOwoKU3dhZ2dlcjo6cm91dGVzKGZuIChSb3V0ZVJlZ2lzdHJhciAkcm91dGVzKSA9PiAkcm91dGVzLT5mb3JEb2N1bWVudGF0aW9uKCcvZG9jcycsIGZhbHNlKSk7CmBgYAoKIyMjIFJlZ2lzdGVyaW5nIHJvdXRlcyBmb3IgeW91ciBTd2FnZ2VyIGNvbmZpZwoKVG8gYWRkIHJvdXRlcyB0byB5b3VyIFN3YWdnZXIgY29uZmlnIHlvdSB3YW50IHRvIGFkZCB0aGUgYFxSaWNvTmlqZWJvZXJcU3dhZ2dlclxIdHRwXE1pZGRsZXdhcmVcU3dhZ2dlclJlYWRlcmAgbWlkZGxld2FyZS4gV2hpY2ggaXMgYWxpYXNlZCB0byBib3RoIGBzd2FnZ2VyX3JlYWRlcmAgYW5kIGBvcGVuYXBpX3JlYWRlcmAuCgpgYGBwaHAKUm91dGU6Om1pZGRsZXdhcmUoJ3N3YWdnZXJfcmVhZGVyJyktPmdldCgncHJvZHVjdHMnLCBbUHJvZHVjdENvbnRyb2xsZXI6OmNsYXNzLCdpbmRleCddKTsKYGBgCgojIyMjIFRhZ2dpbmcgLyBHcm91cGluZyByb3V0ZXMKClRvIGdyb3VwIG11bHRpcGxlIHJvdXRlcyBpbiBTd2FnZ2VyIHlvdSBhZGQgYSB0YWcgdG8gdGhlIHBhdGguIFVzaW5nIHRoZSBwYWNrYWdlIHlvdSBtYXkgcmVnaXN0ZXIgYSB0YWcgdGhyb3VnaCBhZGRpbmcgYSBtaWRkbGV3YXJlIHRvIHlvdXIgcm91dGUgYW5kIHN1cHBseWluZyBpdCB3aXRoIHRoZSBkZXNpcmVkIHRhZ3MgYXMgc2hvd24gYmVsb3cuCgo+IEtlZXAgaW4gbWluZCB0aGF0IHRoZSBgc3dhZ2dlcl90YWdgIChgXFJpY29OaWplYm9lclxTd2FnZ2VyXEh0dHBcTWlkZGxld2FyZVxTd2FnZ2VyVGFnYCkgbWlkZGxld2FyZSBpcyBvbmx5IGdvaW5nIHRvIHRhZyB5b3VyIHJlcXVlc3Qgb25jZSB0aGUgYmF0Y2ggaGFzIGJlZW4gc3RvcmVkLgo+IElmIGEgYmF0Y2ggaGFzIG5vdCBiZWVuIGNyZWF0ZWQgaXQgd2lsbCBjb250aW51ZSBhbmQgZG8gbm90aGluZywgbm8gcXVlc3Rpb25zIGFza2VkLgoKYGBgcGhwCi8vIFVzaW5nIHRoZSBTd2FnZ2VyUmVhZGVyIG1pZGRsZXdhcmUKUm91dGU6Om1pZGRsZXdhcmUoJ3N3YWdnZXJfcmVhZGVyOnRhZy1vbmUsdGFnLXR3bycpLT5nZXQoJ3Byb2R1Y3RzJywgW1Byb2R1Y3RDb250cm9sbGVyOjpjbGFzcywnaW5kZXgnXSk7CgovLyBVc2luZyB0aGUgU3dhZ2dlclRhZyBtaWRkbGV3YXJlClJvdXRlOjptaWRkbGV3YXJlKCdzd2FnZ2VyX3RhZzp0YWctb25lLHRhZy10d28nKS0+Z2V0KCdwcm9kdWN0cycsIFtQcm9kdWN0Q29udHJvbGxlcjo6Y2xhc3MsJ2luZGV4J10pOwpgYGAKCiMjIENvbmZpZ3VyYXRpb24KCiMjIyBEYXRhYmFzZSBjb25uZWN0aW9uCgpZb3UgbWF5IHdhbnQgeW91ciBkYXRhYmFzZSBlbnRyaWVzIGZyb20gdGhlIExhcmF2ZWwgdG8gU3dhZ2dlciBwYWNrYWdlIGluIGEgc2VwYXJhdGUgZGF0YWJhc2Ugb3IgdG8gaGF2ZSBhbiBleHRyYSBwcmVmaXguIFRvIGRvIHRoaXMsIGFkZCBhbiBleHRyYSBjb25uZWN0aW9uIHRvIHlvdXIgTGFyYXZlbCBwcm9qZWN0IGFuZCBqdXN0IHNpbXBseQpzZXQgdGhlIGBzd2FnZ2VyLmRhdGFiYXNlLmNvbm5lY3Rpb25gIGNvbmZpZyB2YWx1ZS4KCkZvciBleGFtcGxlLCBpZiBJIHdhbnQgYWxsIHBhcnRzIG9mIHRoZSBTd2FnZ2VyIGRhdGFiYXNlIHRvIGJlIGluIGEgY29ubmVjdGlvbiBJJ3ZlIG5hbWVkIGBzd2FnZ2VyYCwgSSdkIHNldCB0aGUgY29uZmlnIGxpa2UgYmVsb3cuCgpgYGBwaHAKcmV0dXJuIFsKICAgIC8vLi4uCiAgICAnZGF0YWJhc2UnID0+IFsKICAgICAgICAnY29ubmVjdGlvbicgPT4gJ3N3YWdnZXInLAogICAgXSwKICAgIC8vLi4uCl07CmBgYAoKIyMjIEV2YWx1YXRpb24gZGVsYXksIGNvbmZpZ3VyZSBob3cgb2Z0ZW4geW91ciBlbmRwb2ludHMgYXJlIHJlLWV2YWx1YXRlZAoKQnkgZGVmYXVsdCwgdGhlIHBhY2thZ2Ugb25seSB1cGRhdGVzIHRoZSBjb25maWd1cmF0aW9uIG9mIHlvdXIgcm91dGUgZXZlcnkgMTIgaG91cnMsIHdpdGhpbiBhIGNvdXBsZSByZXN0cmFpbnRzLiBUaGlzIGRvZXMga2VlcCBpbnRvIGFjY291bnQgdGhlIHJlc3BvbnNlIGNvZGVzIHlvdSBhcmUgc2VuZGluZyBiYWNrIHRvIHlvdXIgdXNlcnMuCgpJZiB5b3Ugd2FudCB0byBjaGFuZ2UgdGhpcyB0byBmb3IgZXhhbXBsZSAyNCBob3VycywgeW91J2Qgc2V0IHRoZSBgc3dhZ2dlci5ldmFsdWF0aW9uLWRlbGF5YCBjb25maWcgdmFsdWUgdG8gdGhlIHRpbWUgaW4gc2Vjb25kcy4KCmBgYHBocApyZXR1cm4gWwogICAgLy8uLi4KICAgICdldmFsdWF0aW9uLWRlbGF5JyA9PiAyNCAqIDYwICogNjAsIC8vIE9yIDg2NDAwCiAgICAvLy4uLgpdOwpgYGAKCiMjIyBTd2FnZ2VyIE1ldGEgSW5mb3JtYXRpb24KClN3YWdnZXIgYWxsb3dzIHlvdSB0byBwcm92aWRlIHRoZSB1c2VycyB3aXRoIGEgYml0IG9mIGluZm8gYWJvdXQgeW91ciBBUEk7IGEgdGl0bGUsIGEgZGVzY3JpcHRpb24gYW5kIGEgdmVyc2lvbi4KCkluIHRoZSBjb25maWcgdGhlcmUgaXMgYSBgc3dhZ2dlci5pbmZvYCBhcnJheSB3aGVyZSB5b3UgY2FuIGFkZCB5b3VyIEFQSSdzIHRpdGxlLCBkZXNjcmlwdGlvbiBhbmQgdmVyc2lvbiwgYXMgc2hvd24gYmVsb3cuCgpgYGBwaHAKcmV0dXJuIFsKICAgIC8vLi4uCiAgICAnaW5mbycgICAgICAgICAgICAgPT4gWwogICAgICAgICd0aXRsZScgICAgICAgPT4gJ0xhcmF2ZWwgdG8gU3dhZ2dlcicsCiAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiBudWxsLAogICAgICAgICd2ZXJzaW9uJyAgICAgPT4gJzIuMS4yJywKICAgIF0sCiAgICAvLy4uLgpdOwpgYGAKCiMjIyBTd2FnZ2VyIFNlcnZlcnMKClN3YWdnZXIgYWxsb3dzIHlvdSB0byBzaG93IHRoZSB1c2VyIHNlcnZlcnMgdGhhdCB5b3UgY2FuIGFjY2VzcyB0aGUgQVBJIGZyb20uIEEgYmFzaWMgc2V0dXAgd291bGQgYmUgdGhlIG9uZSBiZWxvdzsKCi0gWW91IGhhdmUgb25lIEFQSSB3aGVyZSB5b3VyIHVzZXJzIGNhbiBhY2Nlc3MgbGl2ZSBkYXRhIGFuZCBvbmUgd2hlcmUgdGhleSBjYW4gYWNjZXNzIHNvbWUgZGVtbyBpbmZvcm1hdGlvbi4KCmBgYHBocApyZXR1cm4gWwogICAgLy8uLi4KICAgICdzZXJ2ZXJzJyAgICAgICAgICA9PiBbCiAgICAgICAgWwogICAgICAgICAgICAndXJsJyAgICAgICAgID0+ICdodHRwOi8vYXBpLmV4YW1wbGUuY29tL3YxJywKICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiBudWxsLAogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgICAndXJsJyAgICAgICAgID0+ICdodHRwOi8vZGVtby1hcGkuZXhhbXBsZS5jb20vdjEnLAogICAgICAgICAgICAnZGVzY3JpcHRpb24nID0+ICdUaGUgZGVtbyBlbnZpcm9ubWVudCBkZXNjcmlwdGlvbicsCiAgICAgICAgXSwKICAgIF0sCiAgICAvLy4uLgpdOwpgYGAKCiMjIyMgU2VydmVyIHRlbXBsYXRpbmcKClN3YWdnZXIgYWxzbyBzdXBwb3J0cyBbU2VydmVyIHRlbXBsYXRpbmddKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYXBpLWhvc3QtYW5kLWJhc2UtcGF0aC8pLiBZb3UgYXJlIGFibGUgdG8gYWRkIHZhcmlhYmxlcyB0byB5b3VyIHNlcnZlciB3aGljaCBnaXZlcyB5b3UgdGhlIHBvc3NpYmlsaXR5IHRvIG9iZnVzY2F0ZSB0aGUKdXJscyBhIGJpdC4KCkFuIGV4YW1wbGUgZnJvbSB0aGVpciBkb2N1bWVudGF0aW9uIGlzIGEgc2VydmVyIHdoZXJlIHlvdSBoYXZlIGBodHRwczovL3tjdXN0b21lcklkfS5zYWFzLWFwcC5jb206e3BvcnR9L3YyYCBhcyB0aGUgVVJMLiBUaGlzIGlzIHRyYW5zbGF0ZWQgdG8gdGhlaXIgWWFtbCBhcyBzaG93biBiZWxvdy4gVGhleSBkZWZpbmUgdGhlIHVybCwKY29udGFpbmluZyBpdHMgdmFyaWFibGVzLCBhbmQgZGVzY3JpYmUgd2hhdCB0aGUgdmFyaWFibGVzIGRvIGFuZCB3aGF0IHRoZWlyIGRlZmF1bHQgdmFsdWVzIGFyZS4KCkxhcmF2ZWwgdG8gU3dhZ2dlciBzdXBwb3J0cyBiYXNpY2FsbHkgdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBZYW1sIGZpbGUsIGJlbG93IHRoZSBZYW1sIHlvdSBjYW4gc2VlIGhvdyB5b3UgdHJhbnNsYXRlIGl0IHRvIHRoZSBTd2FnZ2VyIGNvbmZpZy4gSSd2ZSBhZGRlZCB2ZXJ5IGxpZ2h0IHZhbGlkYXRpb24gdG8gdGhpcywgc28gaWYgdGhlClN3YWdnZXIgVUkgLyBSZWRvYyBVSSBicmVha3MgdHJ5IHRvIGZpcnN0IGVuc3VyZSB0aGF0IHlvdSd2ZSBjb3JyZWN0bHkgY29uZmlndXJlZCB0aGUgY29uZmlnIGFjY29yZGluZyB0byB0aGUgW1N3YWdnZXIgZG9jc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9hcGktaG9zdC1hbmQtYmFzZS1wYXRoLykKCioqU3dhZ2dlciBZYW1sKioKCmBgYHlhbWwKc2VydmVyczoKICAtIHVybDogaHR0cHM6Ly97Y3VzdG9tZXJJZH0uc2Fhcy1hcHAuY29tOntwb3J0fS92MgogICAgdmFyaWFibGVzOgogICAgICBjdXN0b21lcklkOgogICAgICAgIGRlZmF1bHQ6IGRlbW8KICAgICAgICBkZXNjcmlwdGlvbjogQ3VzdG9tZXIgSUQgYXNzaWduZWQgYnkgdGhlIHNlcnZpY2UgcHJvdmlkZXIKICAgICAgcG9ydDoKICAgICAgICBlbnVtOgogICAgICAgICAgLSAnNDQzJwogICAgICAgICAgLSAnODQ0MycKICAgICAgICBkZWZhdWx0OiAnNDQzJwpgYGAKCioqTGFyYXZlbCB0byBTd2FnZ2VyIENvbmZpZyoqCgpgYGBwaHAKcmV0dXJuIFsKICAgIC8vLi4uCiAgICAnc2VydmVycycgICAgICAgICAgPT4gWwogICAgICAgIFsKICAgICAgICAgICAgJ3VybCcgICAgICAgPT4gJ2h0dHBzOi8ve2N1c3RvbWVySWR9LnNhYXMtYXBwLmNvbTp7cG9ydH0vdjInLAogICAgICAgICAgICAndmFyaWFibGVzJyA9PiBbCiAgICAgICAgICAgICAgICAnY3VzdG9tZXJJZCcgPT4gWwogICAgICAgICAgICAgICAgICAgICdkZWZhdWx0JyAgICAgPT4gJ2RlbW8nLAogICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbicgPT4gJ0N1c3RvbWVyIElEIGFzc2lnbmVkIGJ5IHRoZSBzZXJ2aWNlIHByb3ZpZGVyJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAncG9ydCcgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICdlbnVtJyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICc0NDMnLAogICAgICAgICAgICAgICAgICAgICAgICAnODQ0MycsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdCcgPT4gJzQ0MycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICBdLAogICAgLy8uLi4KXTsKYGBgCgojIyMgUmVkb2MgVmVyc2lvbgoKTGV0J3Mgc2F5IHlvdSBydW4gaW50byBhIGJ1ZyB3aXRoaW4gdGhlIFJlZG9jIHRoYXQgdGhlIHRlYW0gYmVoaW5kIFJlZG9jIGhhcyBmaXhlZCBpbiBhIG5ld2VyIHZlcnNpb24sIGFuZCBJIGhhdmUgbm90IHVwZGF0ZWQgdGhlIHBhY2thZ2UgeWV0IHRvIGhhdmUgdGhlIGZpeGVkIHZlcnNpb24gdXNlZC4gSSBoYXZlIGFkZGVkIGEgY29uZmlnCnZhbHVlIChgc3dhZ2dlci5yZWRvYy52ZXJzaW9uYCksIHNvIHlvdSBkb24ndCBoYXZlIHRvIG1lc3MgYXJvdW5kIHdpdGggdGhpbmdzIGxpa2UgcHVibGlzaGVkIHZpZXdzIG9yIGFueXRoaW5nOyBZb3UgY2FuIHNpbXBseSBjaGFuZ2UgdGhlIHZlcnNpb24gYmFzZWQgb24KdGhlaXIgW3JlbGVhc2VzXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvYy9yZWxlYXNlcyksIGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgdGhpcyBkb2N1bWVudGF0aW9uIHRoZSBsYXRlc3QgdmVyc2lvbiBpcyBgdjIuMC4wLXJjLjUzYC4KCmBgYHBocApyZXR1cm4gWwogICAgLy8uLi4KICAgICdyZWRvYycgPT4gWwogICAgICAgICd2ZXJzaW9uJyA9PiAndjIuMC4wLXJjLjUzJywKICAgICAgICAvLy4uLgogICAgXSwKICAgIC8vLi4uCl07CmBgYAoKIyMjIEdyb3VwaW5nIFRhZ3MKIVtyZWRvYy1vbmx5XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1JlZG9jJTIwT25seS1yZWQuc3ZnKQoKSWYgeW91IGFyZSB1c2luZyBSZWRvYyB5b3UgYXJlIGFibGUgdG8gZ3JvdXAgeW91ciB0YWdzIGJ5IHVzaW5nIHRoZSBjb25maWcuCkluIHRoZSBleGFtcGxlIGJlbG93IGEgZ3JvdXAgY2FsbGVkICJVc2VyIE1hbmFnZW1lbnQiIGlzIGNyZWF0ZWQgY29udGFpbmluZyB0aGUgdGFncyAiVXNlcnMiLCAiQWRtaW4iIGFuZCAiQVBJIGtleXMiLgoKPiBUYWdzIHRoYXQgYXJlIG5vdCBncm91cGVkIGJ5IHlvdSB3aWxsIGJlIGFkZGVkIHVuZGVyIGEgZGVmYXVsdCBncm91cCwgPGJyPgogIHRoZSBuYW1lIG9mIHdoaWNoIGNhbiBiZSBjaGFuZ2VkIHVzaW5nIHRoZSBjb25maWcgKGBzd2FnZ2VyLnJlZG9jLmRlZmF1bHQtZ3JvdXBgKQoKYGBgcGhwCnJldHVybiBbCiAgICAvLy4uLgogICAgJ3JlZG9jJyA9PiBbCiAgICAgICAgLy8uLi4KICAgICAgICAnZGVmYXVsdC1ncm91cCcgPT4gbnVsbCwKICAgICAgICAndGFnLWdyb3VwcycgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1VzZXIgTWFuYWdlbWVudCcsCiAgICAgICAgICAgICAgICAndGFncycgPT4gWyAnVXNlcnMnLCAnQWRtaW4nLCAnQVBJIGtleXMnIF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgIF0sCiAgICAvLy4uLgpdOwpgYGAKCiMjIyBBZGRpbmcgYSBsb2dvCiFbcmVkb2Mtb25seV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9SZWRvYyUyME9ubHktcmVkLnN2ZykKCllvdSBjYW4gYWRkIGEgbG9nbyB0byB0aGUgc2lkZWJhciBpbiB5b3VyIFJlZG9jIHZpc3VhbGl6YXRpb24gYnkgYWRkaW5nIGEgZnVsbC11cmwgdG8gdGhlIGBzd2FnZ2VyLmluZm8ubG9nby51cmxgLgoKPiBUaGUgbG9nbyBpcyBvbmx5IGRpc3BsYXllZCB3aGVuIHlvdSB1c2UgdGhlIFJlZG9jIGRvY3VtZW50YXRpb24gcm91dGUuCgpgYGBwaHAKcmV0dXJuIFsKICAgIC8vLi4uCiAgICAnaW5mbycgPT4gWwogICAgICAgIC8vLi4uCiAgICAgICAgJ2xvZ28nID0+IFsKICAgICAgICAgICAgJ3VybCcgPT4gJ2h0dHBzOi8vcGljc3VtLnBob3Rvcy8zMDAvMjAwJywKICAgICAgICBdLAogICAgXSwKICAgIC8vLi4uCl07CmBgYAoKIyMgVGVzdGluZwoKYGBgCmNvbXBvc2VyIHRlc3QKYGBgCgojIyBDcmVkaXRzCgotIFtSaWNvIE5pamVib2VyXShodHRwczovL2dpdGh1Yi5jb20vUmljb05pamVib2VyLykKLSBbQWxsIENvbnRyaWJ1dG9yc10oaHR0cHM6Ly9naXRodWIuY29tL1JpY29OaWplYm9lci9sYXJhdmVsLXRvLXN3YWdnZXIvZ3JhcGhzL2NvbnRyaWJ1dG9ycykKCiMjIExpY2Vuc2UKClRoZSBNSVQgTGljZW5zZSAoTUlUKS4gUGxlYXNlIHNlZSBbTGljZW5zZSBGaWxlXShMSUNFTlNFLm1kKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiMjIENoYW5nZWxvZwoKQWxsIG5vdGFibGUgY2hhbmdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIFtDSEFOR0VMT0cubWRdKENIQU5HRUxPRy5tZCkuCg== readmeEtag: '"f64ef8febcfdad081fee6d050fdd1c1de5ec2b0f"' readmeLastModified: Tue, 15 Feb 2022 07:38:07 GMT repositoryId: 350056876 description: >- This package aims to bring you the easiest way to create a Swagger / OpenApi 3 config for your Laravel API's. created: '2021-03-21T16:37:23Z' updated: '2025-02-22T10:32:09Z' language: PHP archived: true stars: 22 watchers: 1 forks: 0 owner: RicoNijeboer logo: https://avatars.githubusercontent.com/u/26306300?v=4 license: MIT repoEtag: '"429ce68b3d44c5f504d147137e368735025a5acf59aa9d6be33608ab264c47d8"' repoLastModified: Sat, 22 Feb 2025 10:32:09 GMT foundInMaster: true category: Server Implementations id: 79cd08ad7f4391e56675bdf9ed635f89 - source: openapi3 tags repository: https://github.com/cdimascio/kotlin-spring-mvc-template v3: true repositoryMetadata: base64Readme: >- IyBrb3RsaW4tc3ByaW5nLW12Yy10ZW1wbGF0ZQoKU3ByaW5nIDUgTVZDIHRlbXBsYXRlIHdpdGggKktvdGxpbiogYW5kICpPcGVuQVBJIDMuMCouIChBbHNvIFN1cHBvcnRzICpTd2FnZ2VyIDIuMCopCgpGZWF0dXJlcyBhdXRvbWF0aWMgcmVxdWVzdC9yZXNwb25zZSB2YWxpZGF0aW9uIGFuZCBpbnRlcmFjdGl2ZSBBUEkgZG9jCgo8cCBhbGlnbj0ibGVmdCI+CjxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY2RpbWFzY2lvL2tvdGxpbi1zcHJpbmctbXZjLXRlbXBsYXRlL21hc3Rlci9hc3NldHMvc3ByaW5nLW12Yy1vcGVuYXBpLnBuZyIgd2lkdGg9IjYwMCIvPgo8L3A+CgoqKkZlYXR1cmVzKio6CgotIEF1dG9tYXRpYyByZXF1ZXN0IGFuZCByZXNwb25zZSB2YWxpZGF0aW9uIHZpYSBhdGxhc3NpYW4gW09wZW5BcGkgMy4wXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2Fib3V0LykKLSBBdXRvbWF0aWMgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uIHZpYSBbU3dhZ2dlciBVSV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3Rvb2xzL3N3YWdnZXItdWkvKQotIDEyIGZhY3RvciBjb21wbGlhbnQgY29uZmlndXJhdGlvbiB2aWEgW2phdmEtZG90ZW52XShodHRwczovL2dpdGh1Yi5jb20vY2RpbWFzY2lvL2phdmEtZG90ZW52KQotIEF1dG9tYXRpYyBjb2RlIGZvcm1hdHRpbmcgYW5kIGxpbnRpbmcgdmlhIFtrdGxpbnRdKGh0dHBzOi8va3RsaW50LmdpdGh1Yi5pbykKLSBGdWxseSBvcGVyYXRpb25hbCBzYW1wbGUgUkVTVCBBUEkKLSBBUEkgaW50ZWdyYXRpb24gdGVzdHMgd2l0aCBbVW5pcmVzdF0oaHR0cDovL3VuaXJlc3QuaW8vamF2YS5odG1sKSBSRVNUIGNsaWVudAotIFNpbXBsZSBIVFRQIGVycm9ycyB2aWEgW2phcGktZXJyb3JzXShodHRwczovL2dpdGh1Yi5jb20vY2RpbWFzY2lvL2phcGktZXJyb3JzKQotIERvY2tlcmZpbGUKCiMjIFNldHVwCgotIENsb25lIHRoaXMgcmVwbwotIGNvcHkgYC5lbnYudGVtcGxhdGVgIHRvIGBzcmMvbWFpbi9yZXNvdXJjZXMvLmVudmAKCgoKIyMgQnVpbGQKCmBgYHNoZWxsCi4vZ3JhZGxldyBidWlsZApgYGAKCiMjIEZvcm1hdC9MaW50IAoKYGBgc2hlbGwKLi9ncmFkbGV3IGxpbnRLb3RsaW4gIyBzZWUgbGludCBlcnJvcnMKLi9ncmFkbGV3IGZvcm1hdEtvdGxpbiAjIGF0dGVtcHQgdG8gYXV0b21hdGljYWxseSBmaXggbGludCBlcnJvcnMKYGBgCgojIyBSdW4KYGBgc2hlbGwKLi9ncmFkbGV3IGJvb3RSdW4KYGBgCgojIyBUZXN0CgpgYGBzaGVsbAouL2dyYWRsZXcgdGVzdApgYGAKCiMjIFBhY2thZ2UgLyBEaXN0CgpgYGBzaGVsbAouL2dyYWRsZXcgamFyCgojIFJ1biB0aGUgZGlzdApqYXZhIC1qYXIgLi9idWlsZC9saWJzL2V4YW1wbGUtc2VydmljZS0xLjAuMC5qYXIgIApgYGAKCiMjIFRyeSBJdAoKTmF2aWdhdGUgdG8gW2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGlfZXhwbG9yZXIvaW5kZXguaHRtbF0oaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaV9leHBsb3Jlci9pbmRleC5odG1sKQoKIyMgVmFsaWRhdGUgRXhhbXBsZQoKCmBgYHNoZWxsCmN1cmwgLVggUE9TVCAiaHR0cDovL2xvY2FsaG9zdDo4MDgwL3VzZXJzIiAtSCAiYWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIiAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiAtZCAie1wibWVcIjpcImNhcm1pbmVcIn0iCgp7CiAgImVycm9yIjogIiBPYmplY3QgaW5zdGFuY2UgaGFzIHByb3BlcnRpZXMgd2hpY2ggYXJlIG5vdCBhbGxvd2VkIGJ5IHRoZSBzY2hlbWE6IFtcIm1lXCJdIiwKICAiY29kZSI6IDQwMAp9CmBgYAojIyBJbnRlcmFjdGl2ZSBBcGkgZG9jCgohW10oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2NkaW1hc2Npby9rb3RsaW4tc3ByaW5nLW12Yy10ZW1wbGF0ZS9tYXN0ZXIvYXNzZXRzL3N3YWdnZXItdWkucG5nKQoKIyMgTGljZW5zZQpBcGFjaGUgMi4wCg== readmeEtag: '"6f5c449cd0dd9eb5a7267b2983326b53e82bd1a1"' readmeLastModified: Fri, 15 Feb 2019 02:10:19 GMT repositoryId: 151765325 description: >- 12-factor compliant Spring MVC Kotlin template. Features automatic request/response validation and interactive API doc created: '2018-10-05T18:57:20Z' updated: '2024-11-19T12:58:03Z' language: Kotlin archived: false stars: 23 watchers: 1 forks: 8 owner: cdimascio logo: https://avatars.githubusercontent.com/u/4706618?v=4 repoEtag: '"3e5a241f7d4c3e243a6cd4b0a4f811d51fb10e343e5d41c0ec0b23e4fc8dc7d8"' repoLastModified: Tue, 19 Nov 2024 12:58:03 GMT foundInMaster: true category: - Data Validators - Server Implementations id: f8dfb37ecbaed15a1f658a4017e9e785 - source: openapi3 tags repository: https://github.com/postgrest/postgrest-openapi v3: true id: 587979cc8238ff762a0d0bea8a052e41 repositoryMetadata: base64Readme: >- IyBQb3N0Z1JFU1QgT3BlbkFQSQoKU1FMIGZ1bmN0aW9ucyB0byBidWlsZCB0aGUgT3BlbkFQSSBvdXRwdXQgb2YgYSBQb3N0Z1JFU1QgaW5zdGFuY2UuCgojIyBSb2FkbWFwCgotIFRoZSBmaXJzdCBzdGVwIGluIHRoZSByb2FkbWFwIGlzIHRvIG1pZ3JhdGUgdGhlIE9wZW5BUEkgc3BlYyBmcm9tIHRoZSBQb3N0Z1JFU1QgY29yZSByZXBvc2l0b3J5ICh2ZXJzaW9uIDIuMCB0byAzLjEpOgogIC0gW3hdIEluZm8gb2JqZWN0CiAgLSBbeF0gU2VydmVyIG9iamVjdCAocmVwbGFjZXMgaG9zdCwgYmFzZVBhdGggYW5kIHNjaGVtZXMgZnJvbSBPQVMgMi4wKQogIC0gW3hdIENvbXBvbmVudHMgb2JqZWN0CiAgICAtIFt4XSBTY2hlbWFzIChkZWZpbml0aW9ucyBpbiBPQVMgMi4wKQogICAgLSBbeF0gU2VjdXJpdHkgc2NoZW1lIChzZWN1cml0eSBkZWZpbml0aW9ucyBpbiBPQVMgMi4wKQogICAgLSBbeF0gUGFyYW1ldGVycwogIC0gW3hdIFBhdGhzIG9iamVjdAogICAgLSBbeF0gVGFibGVzIGFuZCBWaWV3cwogICAgICAtIFt4XSBHRVQKICAgICAgLSBbeF0gUE9TVAogICAgICAtIFt4XSBQQVRDSAogICAgICAtIFt4XSBERUxFVEUKICAgIC0gW3hdIEZ1bmN0aW9ucwogICAgICAtIFt4XSBHRVQKICAgICAgLSBbeF0gUE9TVAogIC0gWyBdIEV4dGVybmFsIERvY3VtZW50YXRpb24gT2JqZWN0CiAgLSBbIF0gSGFuZGxlIHJlbGV2YW50IE9wZW5BUEkgZWxlbWVudHMgYWNjb3JkaW5nIHRvIHVzZXIgcGVybWlzc2lvbnMKLSBUaGUgbmV4dCBzdGVwIGlzIHRvIGZpeCB0aGUgaXNzdWVzIHRhZ2dlZCB3aXRoIGBPcGVuQVBJYCBpbiB0aGUgY29yZSByZXBvLgoKIyMgSW5zdGFsbGF0aW9uCgpgYGBiYXNoCm1ha2UgJiYgc3VkbyBtYWtlIGluc3RhbGwKYGBgCgojIyBEZXZlbG9wbWVudAoKQ2hlY2sgdGhlIGNvZGUgZG9jdW1lbnRhdGlvbiBhdCBbL2RvY3NdKC9kb2NzKSB0byBmYW1pbGlhcml6ZSB5b3Vyc2VsZiB3aXRoIHRoZSBwcm9qZWN0IHN0cnVjdHVyZSBhbmQgZnVuY3Rpb24gdXNhZ2UuCgpGb3IgdGVzdGluZyBvbiB5b3VyIGxvY2FsIGRhdGFiYXNlOgoKYGBgYmFzaAojIHRoaXMgd2lsbCBsb2FkIGZpeHR1cmVzIGluIGEgY29udHJpYl9yZWdyZXNzaW9uIGRiIG9uIHlvdXIgbG9jYWwgcG9zdGdyZXMKbWFrZSBmaXh0dXJlcwoKIyBydW4gdGhlIHRlc3RzLCB0aGV5IGNhbiBiZSBydW4gcmVwZWF0ZWRseQptYWtlIGluc3RhbGxjaGVjawoKIyB0byBjbGVhbiB0aGUgZml4dHVyZXMgeW91IGNhbiB1c2UKbWFrZSBjbGVhbgpgYGAKCkZvciBhbiBpc29sYXRlZCBhbmQgcmVwcm9kdWNpYmxlIGVudmlyb21lbnQgeW91IGNhbiB1c2UgW05peF0oaHR0cHM6Ly9uaXhvcy5vcmcvZG93bmxvYWQuaHRtbCkuCgpgYGBiYXNoCiMgdG8gcnVuIHRlc3RzCm5peC1zaGVsbCAtLXJ1biAid2l0aC1wZy0xNSBtYWtlIGluc3RhbGxjaGVjayIKCiMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgbG9jYWwgZGF0YWJhc2Ugd2l0aCBmaXh0dXJlcyBsb2FkZWQKbml4LXNoZWxsIC0tcnVuICJ3aXRoLXBnLTE1IHBzcWwgY29udHJpYl9yZWdyZXNzaW9uIgoKIyB5b3UgY2FuIGNob29zZSB0aGUgcGcgdmVyc2lvbgpuaXgtc2hlbGwgLS1ydW4gIndpdGgtcGctMTMgbWFrZSBpbnN0YWxsY2hlY2siCmBgYAoKRm9yIHRob3NlIHdobyBpbnNpc3Qgb24gRG9ja2VyOgpgYGBiYXNoCiMgVG8gYnVpbGQgYSBkb2NrZXIgaW1hZ2UgYW5kIHJ1biB0aGUgdGVzdHMgaW4gaXQKbWFrZSBkb2NrZXItYnVpbGQtdGVzdAoKIyBUbyBidWlsZCBhIGRvY2tlciBpbWFnZSBmb3IgYWN0dWFsIHVzZQptYWtlIGRvY2tlci1idWlsZApgYGAKCiMjIFJlZmVyZW5jZXMKCi0gW09wZW5BUEkgMyBTcGVjaWZpY2F0aW9uIERvY3VtZW50YXRpb25dKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCk6IFRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIG9mIHRoZSBzcGVjLgotIFtPcGVuQVBJIFNwZWNpZmljYXRpb24gRXhwbGFpbmVkXShodHRwczovL2xlYXJuLm9wZW5hcGlzLm9yZy9zcGVjaWZpY2F0aW9uLyk6IEludHJvZHVjdG9yeSBleHBsYW5hdGlvbiBvZiB0aGUgc3BlYy4KLSBbT3BlbkFQSSBHdWlkZV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9hYm91dC8pOiBEZXRhaWxlZCBleHBsYW5hdGlvbiBmb3IgZWFjaCBjb25jZXB0IG9mIHRoZSBzcGVjLCB1c2VmdWwgdG8gYnVpbGQgaXQgZnJvbSBzY3JhdGNoLgotIFtPcGVuQVBJIFZpc3VhbCBNYXBdKGh0dHA6Ly9vcGVuYXBpLW1hcC5hcGloYW5keW1hbi5pby8/dmVyc2lvbj0zLjApOiBWaXN1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNwZWMgdXNpbmcgYW4gaW50ZXJhY3RpdmUgR1VJIHRvIG5hdmlnYXRlIHRocm91Z2ggaXRzIGNvbXBvbmVudHMuCg== readmeEtag: '"c01c958911e1dcde69044c23a149a1e65108d47b"' readmeLastModified: Mon, 11 Nov 2024 22:01:59 GMT repositoryId: 638743792 description: OpenAPI output generated in SQL for a PostgREST instance created: '2023-05-10T02:33:03Z' updated: '2025-11-05T14:01:19Z' language: PLpgSQL archived: false stars: 25 watchers: 5 forks: 6 owner: PostgREST logo: https://avatars.githubusercontent.com/u/15115011?v=4 license: MIT repoEtag: '"2c473f33f6322840e96775801e62e1ba82e77911cb029f1136902d2cd675f94c"' repoLastModified: Wed, 05 Nov 2025 14:01:19 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/azcodingaccount/igomokugame v3: true id: b51a5e8608a4db43e47c31fe151fe98c repositoryMetadata: base64Readme: >- IyBpR29tb2t1R2FtZQoKPGhyPgoKIyMg5LuL57uN8J+TmAoK4oCLCQlpR29tb2t1R2FtZeaYr+S4gOS4quWfuuS6jioqVnVlMyoq44CBKipTcHJpbmdCb290Myoq77yMKipFbGVtZW50LVBsdXMqKuOAgSoqV2ViU29ja2V0KirjgIEqKlNwcmluZ1Rhc2sqKuOAgSoqRGF0YVYqKuOAgSoq5LqU5a2Q5qOLQUnnrpfms5UqKuetieWunueOsOeahOS4gOasvuWcqOe6v+S6lOWtkOaji+a4uOaIj+OAguaUr+aMgSoq5o6S6KGM5qacKirjgIEqKuWlveWPiyoq44CBKirkurrmnLrlr7nmiJgqKuOAgSoq5Lq65py65LqS5YqoKirjgIEqKuiBlOacuuWvueaImCoq44CBKirmlbDmja7lj6/op4bljJbliIbmnpAqKuetieWKn+iDveOAgumhueebruS9v+eUqOacgOaWsOaKgOacr+W8gOWPke+8jOW8gOWPkei/h+eoi+inhOiMg++8jOmAu+i+keS4peiwqOOAggoKQuermemhueebruS7i+e7jeWcsOWdgO+8miBodHRwczovL2IyMy50di9waDRPejVsCgojIyDlnKjnur/pooTop4jwn5GACgotIOWJjeWPsO+8mmh0dHA6Ly9nYW1lLmJ1Z2Rlc2lnbmVyLmNuCQnotKblj7dgZGVtbzFgOmBkZW1vMWDjgIJgZGVtbzJgOmBkZW1vMmDjgIJgZGVtbzNgOmBkZW1vM2Ag77yM5oKo5Lmf5Y+v5Lul6Ieq6KGM5rOo5YaM6LSm5Y+3Ci0g5ZCO5Y+w77yaaHR0cDovL2dhbWUuYnVnZGVzaWduZXIuY24vYWRtaW4gICAg6LSm5Y+377yaYGFkbWluYCDlr4bnoIHvvJpgYWRtaW5gCgrihLnvuI8g5a+55LqO55So5oi356uv77yM5oKo5Y+v6IO96ZyA6KaBKipDdHJsK+a7mui9rioq5bCG5bGP5bmV57yp5pS+5Yiw5LiA5a6a5bC65a+477yI5LiA6Iis5pivODAl77yJCgrihLnvuI8g56ys5LiA5qyh6K6/6Zeu6K+36ICQ5b+D562J5b6F5rWP6KeI5Zmo5LuO5pyN5Yqh5Zmo5ouJ5Y+W6LWE5rqQCgojIyDms6jmhI/wn5SSCgrnlLHkuo7mnKzpobnnm67kuLvopoHkuLrmvJTnpLrpobnnm67vvIzlpoLpnIDms6jlhozotKblj7fvvIzor7fpgb/lhY3kvb/nlKjkuKrkurrluLjnlKjnlKjmiLflkI3kuI7lr4bnoIHvvIzku6XlhY3lm6DmlbDmja7ms4TpnLLooqvpu5HlrqLojrflj5bov5vooYwqKuaSnuW6k+aUu+WHuyoqCgojIyDku6PnoIHku5PlupPwn4yfCgotIEdpdGVl77yaaHR0cHM6Ly9naXRlZS5jb20vQWxiZXJ0X2hhbi9pLWdvbW9rdS1nYW1lCi0gR2l0SHVi77yaaHR0cHM6Ly9naXRodWIuY29tL0FaQ29kaW5nQWNjb3VudC9pR29tb2t1R2FtZQoKIyMg6aG555uu5Lqu54K58J+SoQoKMS4g5oqA5pyv5paw44CC6YeH55So5pyA5paw54mI5LyB5Lia5Li75rWB5Y2V5L2T5bqU55So5byA5Y+R5oqA5pyv44CCCjIuIOW6lOeUqOaWsOOAguaOoue0okFJ6K+t6Z+z44CB5LqS5Yqo5Lqk5Y+L5LiO5qOL57G75ri45oiP57uT5ZCI55qE5paw5Y+v6IO944CCCjMuIOeul+azleaWsOOAguWunueOsOe7j+WFuOeul+azleW5tuWKoOWFpeWOn+WIm+mDqOWIhuOAggo0LiDmnInlub/luqbjgILlrozmlbRDUlVE44CBQUnnrpfms5XjgIHmlbDmja7lrp7ml7bpgJrkv6HjgIHmlbDmja7lj6/op4bljJblupTnlKjnrYkKCiMjIOmhueebruaKgOacr+W6lOeUqPCfm6DvuI8KCjEuIOacrOmhueebrumHh+eUqGBWdWUzYCtgU3ByaW5nQm9vdDNg5Li65Li76KaB5byA5Y+R5oqA5pyv44CCCgoyLiDkvb/nlKhgU3ByaW5nIFRhc2tg5oqA5pyv5a6e546w5a6a5pe25Lu75YqhLOiHquWKqOWFs+mXreaIv+mXtOOAggoKMy4g5L2/55SoYFdlYlNvY2tldGDmioDmnK/lrp7njrDnlKjmiLfogYrlpKnkuI7ogZTmnLrlr7nmiJjnmoTlrp7njrDjgIIKCjQuIOS9v+eUqGDljZrlvIjmoJFgK2DmnoHlpKfmnoHlsI/mkJzntKJgK2BBbHBoYS1CZXRh5Ymq5p6dYCtg6K+E5Lyw5Ye95pWwYOWunueOsOS6uuacuuWvueaImAoKNS4g5L2/55SoYEVjaGFydHNg5ZKMYERhdGFWaWV3YOWunueOsOaVsOaNruWPr+inhuWMlgoKNi4gYEhUVFDnn63ova7or6Jg5a6e546w5pWw5o2u5Y+v6KeG5YyW5Lit5pWw5o2u55qE5pu05pawCgo3LiDkvb/nlKjliY3nq6/nmoRgRXhjZWxg5YyF5a6e546w5pWw5o2u55qE5a+85YWl5a+85Ye6Cgo4LiDkvb/nlKhgYW5pbWF0ZS5jc3Ng5a6e546w5ri45oiP57uT5p2f5pe25Yqo55S755qE5pKt5pS+Cgo5LiDkvb/nlKhgVFRTYOaKgOacr+WunueOsOaWh+acrOi9rOivremfs+WujOaIkEFJ5LiO55So5oi35LqS5Yqo55qE5Yqf6IO9CgoxMC4g5Z+65LqOYGtuaWZlNGpg6YG15b6qYE9wZW5BUEkzYOazqOino+inhOiMg+iHquWKqOeUn+aIkOaOpeWPo+aWh+ahowoKMTEuIOS9v+eUqGBJUDJSZWdpb25g5a6e546w5qC55o2uSVDojrflj5bnlKjmiLflnLDlnYAKCiMjIOW/q+mAn+W8gOWniyDwn5qACgotICoq5ouJ5Y+W6aG555uuKiogKOaCqOmcgOimgeWFiOWuieijhUdpdCkKCmBgYGJhc2gKIyBHaXRlZQpnaXQgcHVsbCBodHRwczovL2dpdGVlLmNvbS9BbGJlcnRfaGFuL2ktZ29tb2t1LWdhbWUuZ2l0CiMgR2l0SHViCmdpdCBwdWxsIGh0dHBzOi8vZ2l0aHViLmNvbS9BWkNvZGluZ0FjY291bnQvaUdvbW9rdUdhbWUKYGBgCgotICoq6L+Q6KGM5YmN56uv6aG555uuKioKCmBgYGJhc2gKY2Qg5YmN56uv6aG555uu55uu5b2VCnBucG0gaQkgICAjIOWuieijheS+nei1lgpwbnBtIGRldiAgICMg6L+Q6KGM56iL5bqPCQpgYGAKCi0gKirov5DooYzmlbDmja7lupPohJrmnKwqKgoKaW5pdC5zcWzmlofku7blnKggIGAvaUdvbW9rdUdhbWUtU2VydmVyL3NyYy9tYWluL3Jlc291cmNlcy9zcWxg55uu5b2V5LiL44CCCgox77ya5Y+z6ZSu5L2/55SoaWRlYei/kOihjAoKMu+8muaJvuWIsOS4gOasvuaVsOaNruW6k+euoeeQhuW3peWFt++8jOWmgk5hdmljYXQg77yMRGF0YUdyaXDnrYnvvIzlr7zlhaVzcWzmlofku7bvvIzov5DooYzjgIIKCjPvvJrkvb/nlKjlkb3ku6TooYzov5DooYwKCmBgYGJhc2gKbXlzcWwgLXUgdXNlcm5hbWUgLXAgPCAuL2luaXQuc3FsCSMgc3Fs5paH5Lu255qE55u45a+55oiW57ud5a+56Lev5b6ECmBgYAoKLSAqKui/kOihjOWQjuerr+mhueebrioqCgox77ya5Y+z6ZSu5L2/55SoaWRlYeaJk+W8gOOAgueCueWHu3J1buWNs+WPr+i/kOihjAoKMu+8muS9v+eUqOWRveS7pOihjOi/kOihjAoKYGBgYmFzaAogY2Qg5YmN56uv6aG555uu55uu5b2VCiBtdm4gY2xlYW4gcGFja2FnZQkjIOaJk+WMhemhueebrgogY2QgdGFyZ2V0IAogamF2YSAtamFyIGphcuWMheWQjSAgIyDov5DooYzpobnnm64KYGBgCgoqKumhueebrumDqOe9sioqCgrpobnnm67pg6jnvbLor7fnp7vmraXljZrlrqLmlofnq6DvvJpbRG9ja2Vy6YOo572ySmF2YemhueebrueahOatpemqpCBdKGh0dHBzOi8vYmxvZy5idWdkZXNpZ25lci5jbi9kb2NrZXLpg6jnvbJqYXZh6aG555uu55qE5q2l6aqkLykKCiMjIOmhueebrumDqOWIhueVjOmdoumihOiniPCfkYHvuI8KCi0g5Li76aG1CgohW2ltYWdlLTIwMjMxMjI2MTYwMDQzODYzXShodHRwczovL215LXBpY3R1cmUtYmVkMS0xMzIxMTAwMjAxLmNvcy5hcC1iZWlqaW5nLm15cWNsb3VkLmNvbS9teXBpY3R1cmVzL2ltYWdlLTIwMjMxMjI2MTYwMDQzODYzLnBuZykKCi0g5Lq65py65a+55oiY6aG1CgohW2ltYWdlLTIwMjMxMjI2MTkxNjA0Mjc2XShodHRwczovL215LXBpY3R1cmUtYmVkMS0xMzIxMTAwMjAxLmNvcy5hcC1iZWlqaW5nLm15cWNsb3VkLmNvbS9teXBpY3R1cmVzL2ltYWdlLTIwMjMxMjI2MTkxNjA0Mjc2LnBuZykKCgoKLSDlkI7lj7DpppbpobUKCiFbaW1hZ2UtMjAyMzEyMjYxNjAzMDA0MTVdKGh0dHBzOi8vbXktcGljdHVyZS1iZWQxLTEzMjExMDAyMDEuY29zLmFwLWJlaWppbmcubXlxY2xvdWQuY29tL215cGljdHVyZXMvaW1hZ2UtMjAyMzEyMjYxNjAzMDA0MTUucG5nKQoKCgotIOWPr+inhuWMluWkp+WxjwoKIVtpbWFnZS0yMDIzMTIyNjE2MDQzNTc1Ml0oaHR0cHM6Ly9teS1waWN0dXJlLWJlZDEtMTMyMTEwMDIwMS5jb3MuYXAtYmVpamluZy5teXFjbG91ZC5jb20vbXlwaWN0dXJlcy9pbWFnZS0yMDIzMTIyNjE2MDQzNTc1Mi5wbmcpCgoKCi0g5rWB6YeP5YiG5p6Q6aG1CgohW2ltYWdlLTIwMjMxMjI2MTYwNTA3MTM0XShodHRwczovL215LXBpY3R1cmUtYmVkMS0xMzIxMTAwMjAxLmNvcy5hcC1iZWlqaW5nLm15cWNsb3VkLmNvbS9teXBpY3R1cmVzL2ltYWdlLTIwMjMxMjI2MTYwNTA3MTM0LnBuZykKCiMjIOm4o+iwovCfjLkKCjEuIFRUU+aWh+acrOi9rOa8lOiusuaKgOacryAKCuKAiwkJQUnlmInnhLbvvJrmqKHlnovkvZzogIXvvJpgWHrkuZTluIxgCgrigIsJCUFJ5LiB55yf77ya6a2U5aGU56S+5Yy66aG555uu5Zyw5Z2A77yaaHR0cHM6Ly9tb2RlbHNjb3BlLmNuL3N0dWRpb3MvTWlEZDFFeWUvRFotQmVydC1WSVRTMi9zdW1tYXJ5CgrigIsJ5LqM6ICF5Z+65LqOQmVydC1WSVRTMuaooeWei++8jEdpdGh1YumhueebruWcsOWdgO+8miAgaHR0cHM6Ly9naXRodWIuY29tL2Zpc2hhdWRpby9CZXJ0LVZJVFMyCgoyLiBEYXRhVuaVsOaNruWPr+inhuWMluaKgOacrwoKICAg5a6Y572R77yaaHR0cDovL2RhdGF2LmppYW1pbmdoaS5jb20vZ3VpZGUvCgozLiBLbmlmZTRqCgrigIsJCUdpdGh1YumhueebruWcsOWdgO+8mmh0dHBzOi8vZ2l0aHViLmNvbS94aWFveW1pbi9rbmlmZTRqCgoyLiBJUDJSZWdpb24KCiAgIEdpdGh1YumhueebruWcsOWdgO+8mmh0dHBzOi8vZ2l0aHViLmNvbS9saW9uc291bDIwMTQvaXAycmVnaW9uCgozLiDkupTlrZDmo4tBSeeul+azleWPguiAg+WNmuWuogoKICAgW+OAkOeul+azleOAkeaegeWkp+aegeWwj86xLc6y5Ymq5p6d566X5rOVIC0g55+l5LmOICh6aGlodS5jb20pXShodHRwczovL3podWFubGFuLnpoaWh1LmNvbS9wLzY1MjE5NDQ2KQoKIyMg5o2Q6LWg8J+NtQoK5aaC5p6c5oKo6K6k5Li66L+Z5Liq6aG555uu5a+55oKo5pyJ5biu5Yqp77yM5Y+v5Lul6YCa6L+H5LiL6Z2i5pa55byP5pSv5oyB5oiRCgotIFN0YXLjgIFGb3Jr44CBV2F0Y2gg5LiA6ZSu5LiJ6L+eIPCfjJ8KLSDpgJrov4flvq7kv6HvvIzmlK/ku5jlrp3or7fmiJHllp3mna/lpbbojLYg4p2kCgp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICDlvq7kv6EgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg5pSv5LuY5a6dICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTogfAp8IDxpbWcgc3JjPSJodHRwczovL215LXBpY3R1cmUtYmVkMS0xMzIxMTAwMjAxLmNvcy5hcC1iZWlqaW5nLm15cWNsb3VkLmNvbS9teXBpY3R1cmVzL3dlY2hhdC5qcGciIGFsdD0id2VjaGF0IiBzdHlsZT0iem9vbTogMTUlO21hcmdpbjowIGF1dG8iIC8+IHwgPGltZyBzcmM9Imh0dHBzOi8vbXktcGljdHVyZS1iZWQxLTEzMjExMDAyMDEuY29zLmFwLWJlaWppbmcubXlxY2xvdWQuY29tL215cGljdHVyZXMvYWxpcGF5LmpwZyIgYWx0PSJhbGlwYXkiIHN0eWxlPSJ6b29tOjE1JTttYXJnaW46MCBhdXRvIiAvPiB8CgoKCg== readmeEtag: '"ce42366b098d6304b2e5db990453941e7e2dcbcb"' readmeLastModified: Sat, 25 May 2024 14:11:27 GMT repositoryId: 735775072 description: 一个基于vue3、springboot3、websocket、alpha-beta cut的五子棋游戏 created: '2023-12-26T03:35:56Z' updated: '2026-01-26T10:45:13Z' language: Java archived: false stars: 31 watchers: 3 forks: 3 owner: AZCodingAccount logo: https://avatars.githubusercontent.com/u/145426558?v=4 license: MIT repoEtag: '"cdf00b891a2c444c9f500bbf6ecb7fa77d200ba7cee81e79e8104cb7bd3eacdb"' repoLastModified: Mon, 26 Jan 2026 10:45:13 GMT category: Code Generators foundInMaster: true - source: - openapi3 tags - openapi31 tags repository: https://github.com/apiaddicts/apigen.springboot v3: true v3_1: true id: fd840bafced1deba1ac3d162e2c56928 repositoryMetadata: base64Readme: >- CiMg8J+boO+4jyBBcGlnZW4gIVtSZWxlYXNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3JlbGVhc2UtMi4wLjItcHVycGxlKSAhW1N3YWdnZXJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvLW9wZW5hcGktJTIzQ2xvanVyZT9zdHlsZT1mbGF0JmxvZ289c3dhZ2dlciZsb2dvQ29sb3I9d2hpdGUpICFbSmF2YV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9qYXZhLSUyM0VEOEIwMC5zdmc/c3R5bGU9ZmxhdCZsb2dvPW9wZW5qZGsmbG9nb0NvbG9yPXdoaXRlKSAhW1NwcmluZ10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9zcHJpbmctJTIzNkRCMzNGLnN2Zz9zdHlsZT1mbGF0JmxvZ289c3ByaW5nJmxvZ29Db2xvcj13aGl0ZSkgWyFbTGljZW5zZTogTEdQTCB2M10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLUxHUExfdjMtYmx1ZS5zdmcpXShodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wKQoKV2VsY29tZSB0byAqKmFwaWdlbi5zcHJpbmdib290KiosIG1hZGUgaW4gc3BhaW4gIVtTcGFpbl0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N0ZXZlbnJza2VsdG9uL2ZsYWctaWNvbi9tYXN0ZXIvcG5nLzE2L2NvdW50cnktNHgzL2VzLnBuZyAiU3BhaW4iKSwgdGhlIG9wZW5zb3VyY2UgcHJvamVjdCBpbiBKYXZhIHRoYXQgYWxsb3dzIHlvdSB0byBnZW5lcmF0ZSBhbiBhcmNoZXR5cGUgb2YgdGhlIHNwcmluZ2Jvb3QgZnJhbWV3b3JrIHVzaW5nIHRoZSBvcGVuYXBpIGZpbGUgYXMgYSBtYXBwaW5nIHRvb2wgYmV0d2VlbiB0aGUgb3BlbmFwaSBkZWZpbml0aW9uIGFuZCB0aGUgZGF0YWJhc2UuIENsaWNrIG1hdmVuIHRvIHNlZSBhdmFpbGFibGUgbXZucmVwb3NpdG9yeSBkZXBlbmRlbmNpZXMuCgo8YSB0aXRsZT0ibXZucmVwb3NpdG9yeSIgaHJlZj0iaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9vcmcuYXBpYWRkaWN0cy5hcGl0b29scy5hcGlnZW4vYXBpZ2VuIj4KICAgIDxpbWcgd2lkdGg9IjE1MCIgIHNyYz0iaHR0cHM6Ly9ibG9nLmlyb250ZWMuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDE5LzEyLzEyODBweC1NYXZlbl9sb2dvLnN2Z18tMzAweDc2LnBuZyI+CjwvYT4KCiMjIyBUaGlzIHJlcG9zaXRvcnkgaXMgaW50ZW5kZWQgZm9yIDpvY3RvY2F0OiAqKmNvbW11bml0eSoqIHVzZSwgaXQgY2FuIGJlIG1vZGlmaWVkIGFuZCBhZGFwdGVkIHdpdGhvdXQgY29tbWVyY2lhbCB1c2UuIElmIHlvdSBuZWVkIGEgdmVyc2lvbiwgc3VwcG9ydCBvciBoZWxwIGZvciB5b3VyICoqZW50ZXJwcmlzZSoqIG9yIHByb2plY3QsIHBsZWFzZSBjb250YWN0IHVzIPCfk6cgZGV2cmVsQGFwaWFkZGljdHMub3JnCgpbIVtUd2l0dGVyXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1R3aXR0ZXItJTIzMDAwMDAwLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289eCZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL3R3aXR0ZXIuY29tL0FQSUFkZGljdHMpClshW0Rpc2NvcmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRGlzY29yZC0lMjM1ODY1RjIuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1kaXNjb3JkJmxvZ29Db2xvcj13aGl0ZSldKGh0dHBzOi8vZGlzY29yZC5nZy9aZGJHcU1CWXk4KQpbIVtMaW5rZWRJbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saW5rZWRpbi0lMjMwMDc3QjUuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1saW5rZWRpbiZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tcGFueS9hcGlhZGRpY3RzLykKWyFbRmFjZWJvb2tdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRmFjZWJvb2stJTIzMTg3N0YyLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289RmFjZWJvb2smbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL2FwaWFkZGljdHMpClshW1lvdVR1YmVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvWW91VHViZS0lMjNGRjAwMDAuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1Zb3VUdWJlJmxvZ29Db2xvcj13aGl0ZSldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL0BBUElBZGRpY3RzbG1hb28pCgojIPCfmYwgSm9pbiB0aGUgKipBcGlnZW4qKiBBZG9wdGVycyBsaXN0CvCfk6IgSWYgQXBpZ2VuIGlzIHBhcnQgb2YgeW91ciBvcmdhbml6YXRpb24ncyB0b29sa2l0LCB3ZSBraW5kbHkgZW5jb3VyYWdlIHlvdSB0byBpbmNsdWRlIHlvdXIgY29tcGFueSdzIG5hbWUgaW4gb3VyIEFkb3B0ZXJzIGxpc3QuIPCfmY8gVGhpcyBub3Qgb25seSBzaWduaWZpY2FudGx5IGJvb3N0cyB0aGUgcHJvamVjdCdzIHZpc2liaWxpdHkgYW5kIHJlcHV0YXRpb24gYnV0IGFsc28gcmVwcmVzZW50cyBhIHNtYWxsIHlldCBpbXBhY3RmdWwgd2F5IHRvIGdpdmUgYmFjayB0byB0aGUgcHJvamVjdC4KCnwgT3JnYW5pemF0aW9uICB8IERlc2NyaXB0aW9uIG9mIFVzZSAvIFJlZmVyZW5jIHwKfC0tLXwtLS18CnwgIFtDbG91ZEFwcGldKGh0dHBzOi8vY2xvdWRhcHBpLm5ldC8pICB8IEFwaWZpY2F0aW9uIGFuZCBnZW5lcmF0aW9uIG9mIG1pY3Jvc2VydmljZXMgfAp8IFtBY2Npb25hXShodHRwczovL3d3dy5hY2Npb25hLmNvbS8pICB8IEdlbmVyYXRpb24gb2YgbWljcm9zZXJ2aWNlcyB8CnwgW01hZHJpZCBEaWdpdGFsXShodHRwczovL3d3dy5jb211bmlkYWQubWFkcmlkL3NlcnZpY2lvcy9zZWRlLWVsZWN0cm9uaWNhL21hZHJpZC1kaWdpdGFsLykgIHwgR2VuZXJhdGlvbiBvZiBtaWNyb3NlcnZpY2VzICB8CnwgW0FwaXF1YWxpdHldKGh0dHBzOi8vYXBpcXVhbGl0eS5pby8pICB8IEdlbmVyYXRpb24gb2YgbWljcm9zZXJ2aWNlcyAgfAoKIyDwn5Gp8J+PveKAjfCfkrsgIENvbnRyaWJ1dGUgdG8gQXBpQWRkaWN0cwoKV2UncmUgYW4gaW5jbHVzaXZlIGFuZCBvcGVuIGNvbW11bml0eSwgd2VsY29taW5nIHlvdSB0byBqb2luIG91ciBlZmZvcnQgdG8gZW5oYW5jZSBBcGlBZGRpY3RzLCBhbmQgd2UncmUgZXhjaXRlZCB0byBwcmlvcml0aXplIHRhc2tzIGJhc2VkIG9uIGNvbW11bml0eSBpbnB1dCwgaW52aXRpbmcgeW91IHRvIHJldmlldyBhbmQgY29sbGFib3JhdGUgdGhyb3VnaCBvdXIgR2l0SHViIGlzc3VlIHRyYWNrZXIuCgpGZWVsIGZyZWUgdG8gZHJvcCBieSBhbmQgZ3JlZXQgdXMgb24gb3VyIEdpdEh1YiBkaXNjdXNzaW9uIG9yIERpc2NvcmQgY2hhdC4gWW91IGNhbiBhbHNvIHNob3cgeW91ciBzdXBwb3J0IGJ5IGdpdmluZyB1cyBzb21lIEdpdEh1YiBzdGFycyDirZDvuI8sIG9yIGJ5IGZvbGxvd2luZyB1cyBvbiBUd2l0dGVyLCBMaW5rZWRJbiwgYW5kIHN1YnNjcmliaW5nIHRvIG91ciBZb3VUdWJlIGNoYW5uZWwhIPCfmoAKClshWyJCdXkgTWUgQSBDb2ZmZWUiXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2Fzc2V0cy9pbWcvY3VzdG9tX2ltYWdlcy9vcmFuZ2VfaW1nLnBuZyldKGh0dHBzOi8vd3d3LmJ1eW1lYWNvZmZlZS5jb20vYXBpYWRkaWN0cykKCgojIPCfk5EgR2V0dGluZyBzdGFydGVkCgojIyDwn5al77iPIENMSQoKYGBgYmFzaApqYXZhIC1qYXIgZ2VuZXJhdG9yLWNsaS5qYXIgZ2VuZXJhdGUgLWYgb3BlbmFwaS55YW1sIC1vIC4vY29kZQoKamF2YSAtamFyIGdlbmVyYXRvci1jbGkuamFyIGhlbHAKYGBgCgojIyDwn5CLIERvY2tlciBjb21wb3NlCgpgYGB5YW1sCnZlcnNpb246ICIzLjMiCnNlcnZpY2VzOgogIGFwaWdlbjoKICAgIGltYWdlOiAiYXBpYWRkaWN0cy9hcGl0b29scy1hcGlnZW46Mi4wLjIiCiAgICBwb3J0czoKICAgICAgLSAiODA4MDo4MDgwIgpgYGAKCmBgYGJhc2gKY3VybCAtWCBQT1NUICJodHRwOi8vbG9jYWxob3N0OjgwODAvZ2VuZXJhdG9yL2ZpbGUiIFwKICAtRiAiZmlsZT1Ab3BlbmFwaS55YW1sIgpgYGAKCiMjIFByb2plY3QKCiMjIyBTY2hlbWUKICAgIHgtYXBpZ2VuLXByb2plY3Q6CiAgICAgIG5hbWU6IHN0cmluZwogICAgICBkZXNjcmlwdGlvbjogc3RyaW5nCiAgICAgIHZlcnNpb246IHN0cmluZwogICAgICBqYXZhLXByb3BlcnRpZXM6CiAgICAgICAgZ3JvdXAtaWQ6IHN0cmluZwogICAgICAgIGFydGlmYWN0LWlkOiBzdHJpbmcKCiMjIyBEZWZpbml0aW9uCi0gYHgtYXBpZ2VuLXByb2plY3RgOiBTZWN0aW9uIHdoZXJlIHByb2plY3QgaW5mb3JtYXRpb24gaXMgZGVmaW5lZAogIC0gYG5hbWVgOiBQcm9qZWN0IG5hbWUKICAtIGBkZXNjcmlwdGlvbmA6IEJyaWVmIHByb2plY3QgZGVzY3JpcHRpb24KICAtIGB2ZXJzaW9uYDogUHJvamVjdCB2ZXJzaW9uCiAgLSBgamF2YS1wcm9wZXJ0aWVzYDogU2VjdGlvbiB3aGVyZSBzcGVjaWZpYyBKYXZhIHByb2plY3QgaW5mb3JtYXRpb24gaXMgZGVmaW5lZAogICAgLSBgZ3JvdXAtaWRgOiBJbml0aWFsIHBhY2thZ2UgbmFtZSB3aGVyZSB0aGUgcHJvamVjdCByZXNpZGVzLiBJZiBpdCBjb25zaXN0cyBvZiBtdWx0aXBsZSB3b3JkcywgdGhleSB3aWxsIGJlIHNlcGFyYXRlZCBieSBgLmAKICAgIC0gYGFydGlmYWN0LWlkYDogSWRlbnRpZmllciBuYW1lIGZvciB0aGUgcHJvamVjdAogICAgLSBgYmFzZS1wYWNrYWdlYDogTmFtZSBvZiB0aGUgYmFzZSBwYWNrYWdlIHRvIHVzZSBpbiB0aGUgZ2VuZXJhdGVkIGNvZGU7IGlmIG5vdCBzcGVjaWZpZWQsIGl0IGlzIG9idGFpbmVkIGZyb20gdGhlIGBncm91cC1pZGAgYW5kIGBhcnRpZmFjdC1pZGAKICAtIGBzdGFuZGFyZC1yZXNwb25zZS1vcGVyYXRpb25zYDogU2VjdGlvbiB3aGVyZSBzdGFuZGFyZCBhcGlnZW4gcmVzcG9uc2UgdHJhbnNmb3JtYXRpb24gb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCAob3B0aW9uYWwpCiAgICAtIGA8anNvbnBhdGNoIG9wZXJhdGlvbiBub2RlPmA6IE5vZGUgdGhhdCBjb21wbGllcyB3aXRoIHRoZSBqc29uLXBhdGNoIHN0YW5kYXJkLCBhbGxvd2luZyBvcHRpb25hbCBvcGVyYXRpb25zIHRvIGJlIGRlY2xhcmVkIG9uIGFsbCBlbGVtZW50cyBvZiBhbiBhcnJheQoKIyMjIFNhbXBsZXMKICAgIHgtYXBpZ2VuLXByb2plY3Q6CiAgICAgIG5hbWU6IENvbG9ycwogICAgICBkZXNjcmlwdGlvbjogVGhpcyB3b3VsZCBiZSB0aGUgQ29sb3JzIHByb2plY3QKICAgICAgdmVyc2lvbjogMS4wLjAKICAgICAgamF2YS1wcm9wZXJ0aWVzOgogICAgICAgIGdyb3VwLWlkOiB0aGUuZ3JvdXAKICAgICAgICBhcnRpZmFjdC1pZDogYXBwCgojIyBNb2RlbHMKCiMjIyBTY2hlbWUKICAgIHgtYXBpZ2VuLW1vZGVsczoKICAgICAgPG1vZGVsX25hbWU+OgogICAgICAgIHJlbGF0aW9uYWwtcGVyc2lzdGVuY2U6CiAgICAgICAgICB0YWJsZTogc3RyaW5nCiAgICAgICAgYXR0cmlidXRlczoKICAgICAgICAgIC0gbmFtZTogc3RyaW5nCiAgICAgICAgICAgIHR5cGU6IHN0cmluZyBbRU5VTVtBcnJheSwgU3RyaW5nLCBCb29sZWFuLCBEb3VibGUsIEZsb2F0LCBCaWdEZWNpbWFsLCBJbnRlZ2VyLCBMb25nLCBCaWdJbnRlZ2VyLCBMb2NhbERhdGUsIExvY2FsRGF0ZVRpbWUsIFpvbmVkRGF0ZVRpbWUsIE9mZnNldERhdGVUaW1lLCBJbnN0YW50LCBDb21wb3NlZElEXSBvIDxtb2RlbF9uYW1lPl0KICAgICAgICAgICAgaXRlbXMtdHlwZTogc3RyaW5nIFs8bW9kZWxfbmFtZT5dCiAgICAgICAgICAgIHJlbGF0aW9uYWwtcGVyc2lzdGVuY2U6CiAgICAgICAgICAgICAgY29sdW1uOiBzdHJpbmcKICAgICAgICAgICAgICBwcmltYXJ5LWtleTogYm9vbGVhbgogICAgICAgICAgICAgIGZvcmVpZ24tY29sdW1uOiBzdHJpbmcKICAgICAgICAgICAgICBpbnRlcm1lZGlhdGUtdGFibGU6IHN0cmluZwogICAgICAgICAgICAgIG93bmVyOiBib29sZWFuCiAgICAgICAgICAgIHZhbGlkYXRpb25zOgogICAgICAgICAgICAgIC0gdHlwZTogc3RyaW5nIFtFTlVNW05vdE51bGwsIFNpemUsIE1pbiwgTWF4LCBFbWFpbCwgTm90RW1wdHksIE5vdEJsYW5rLCBQb3NpdGl2ZSwgUG9zaXRpdmVPclplcm8sIE5lZ2F0aXZlLCBOZWdhdGl2ZU9yWmVybywgUGFzdCwgUGFzdE9yUHJlc2VudCwgRnV0dXJlLCBGdXR1cmVPclByZXNlbnQsIFBhdHRlcm4sIERpZ2l0cywgRGVjaW1hbE1pbiwgRGVjaW1hbE1heF1dCiAgICAgICAgICAgICAgICBtaW46IGludGVnZXIKICAgICAgICAgICAgICAgIG1heDogaW50ZWdlcgogICAgICAgICAgICAgICAgcmVnZXg6IHN0cmluZwogICAgICAgICAgICAgICAgdmFsdWU6IGludGVnZXIgfCBzdHJpbmcKICAgICAgICAgICAgICAgIGludGVnZXI6IGludGVnZXIKICAgICAgICAgICAgICAgIGZyYWN0aW9uOiBpbnRlZ2VyCiAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IGJvb2xlYW4gICAKCiMjIyBEZWZpbml0aW9uCi0gYHgtYXBpZ2VuLW1vZGVsc2A6IFNlY3Rpb24gd2hlcmUgcHJvamVjdCBtb2RlbHMgYXJlIGRlZmluZWQKICAtIGA8bW9kZWxfbmFtZT5gOiBOYW1lIG9mIHRoZSBtb2RlbAogICAgLSBgcmVsYXRpb25hbC1wZXJzaXN0ZW5jZWA6IFNlY3Rpb24gd2hlcmUgYWxsIGFzcGVjdHMgcmVsYXRlZCB0byB0aGUgbW9kZWwncyByZWxhdGlvbmFsIHBlcnNpc3RlbmNlIGFyZSBpbmRpY2F0ZWQKICAgICAgLSBgdGFibGVgOiBOYW1lIG9mIHRoZSB0YWJsZSBpbiB0aGUgZGF0YWJhc2UKICAgIC0gYGF0dHJpYnV0ZXNgOiBTZWN0aW9uIHRoYXQgY29udGFpbnMgdGhlIG1vZGVsJ3MgYXR0cmlidXRlcwogICAgICAtIGBuYW1lYDogTmFtZSBvZiB0aGUgYXR0cmlidXRlCiAgICAgIC0gYHR5cGVgOiBUeXBlIG9mIHRoZSBhdHRyaWJ1dGUsIHN1cHBvcnRlZCB0eXBlcyBhcmU6IFtBcnJheSwgU3RyaW5nLCBCb29sZWFuLCBEb3VibGUsIEZsb2F0LCBJbnRlZ2VyLCBMb25nLCBMb2NhbERhdGUsIE9mZnNldERhdGVUaW1lLCBDb21wb3NlZElEXSwgb3IgaW4gdGhlIGNhc2Ugb2YgYW5vdGhlciBtb2RlbCwgdGhlIG5hbWUgb2YgdGhhdCBtb2RlbAogICAgICAtIGBpdGVtcy10eXBlYDogSW4gdGhlIGNhc2Ugb2YgdGhlIGB0eXBlYCBiZWluZyBhbiBgQXJyYXlgLCB0aGlzIGZpZWxkIHNob3VsZCBiZSBkZWZpbmVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIHJlZmVyZW5jZWQgbW9kZWwKICAgICAgLSBgYXR0cmlidXRlc2A6IFNpbWlsYXIgdG8gdGhlIGBhdHRyaWJ1dGVzYCBvZiB0aGUgbW9kZWwsIG9ubHkgdXNlZCB3aGVuIHRoZSBgdHlwZWAgaXMgQ29tcG9zZWRJRCB0byBpbmRpY2F0ZSB0aGUgYXR0cmlidXRlcyB0aGF0IG1ha2UgdXAgdGhlIGlkZW50aWZpZXIKICAgICAgLSBgcmVsYXRpb25hbC1wZXJzaXN0ZW5jZWA6IFNlY3Rpb24gd2hlcmUgYWxsIGFzcGVjdHMgcmVsYXRlZCB0byB0aGUgcmVsYXRpb25hbCBwZXJzaXN0ZW5jZSBvZiB0aGUgbW9kZWwncyBhdHRyaWJ1dGUgYXJlIGluZGljYXRlZAogICAgICAgIC0gYGNvbHVtbmA6IE5hbWUgb2YgdGhlIGNvbHVtbiBpbiB0aGUgZGF0YWJhc2UKICAgICAgICAtIGBjb2x1bW5zYDogUmVsYXRpb25zaGlwIG9mIGNvbHVtbnMgZnJvbSB0aGUgY3VycmVudCB0YWJsZSB0byBhbm90aGVyIHJlbGF0ZWQgdGFibGUgd2hlbiBkZWFsaW5nIHdpdGggYSBtb2RlbCB3aXRoIGEgY29tcG9zaXRlIGlkZW50aWZpZXIgKGVhY2ggZW50cnkgaXMgZGVmaW5lZCBhcyBrZXk6IHZhbHVlIHdoZXJlIHRoZSBrZXkgaXMgdGhlIG5hbWUgaW4gdGhlIGN1cnJlbnQgdGFibGUgYW5kIHRoZSB2YWx1ZSBpcyB0aGUgbmFtZSBpbiB0aGUgcmVsYXRlZCB0YWJsZSkKICAgICAgICAtIGBwcmltYXJ5LWtleWA6IEluZGljYXRlcyBpZiBpdCBpcyB0aGUgcHJpbWFyeSBrZXksIGlmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgYGZhbHNlYAogICAgICAgIC0gYGZvcmVpZ24tY29sdW1uYDogSW5kaWNhdGVzIHRoZSBuYW1lIG9mIHRoZSBjb2x1bW4gaW4gdGhlIHJlbGF0ZWQgdGFibGUKICAgICAgICAtIGBmb3JlaWduLWNvbHVtbnNgOiBSZWxhdGlvbnNoaXAgb2YgY29sdW1ucyBpbiB0aGUgcmVsYXRlZCB0YWJsZSB0byB0aGUgY3VycmVudCB0YWJsZSB3aGVuIGRlYWxpbmcgd2l0aCBhIG1vZGVsIHdpdGggYSBjb21wb3NpdGUgaWRlbnRpZmllciAoZWFjaCBlbnRyeSBpcyBkZWZpbmVkIGFzIGtleTogdmFsdWUgd2hlcmUgdGhlIGtleSBpcyB0aGUgbmFtZSBpbiB0aGUgcmVsYXRlZCB0YWJsZSBhbmQgdGhlIHZhbHVlIGlzIHRoZSBuYW1lIGluIHRoZSBjdXJyZW50IHRhYmxlKQogICAgICAgIC0gYGludGVybWVkaWF0ZS10YWJsZWA6IE5hbWUgb2YgdGhlIGludGVybWVkaWF0ZSB0YWJsZSBpbiB0aG9zZSBhdHRyaWJ1dGVzIHRoYXQgcmVwcmVzZW50IGEgbWFueS10by1tYW55IHJlbGF0aW9uc2hpcAogICAgICAgIC0gYG93bmVyYDogSW5kaWNhdGVzIGlmIHRoaXMgcGFydCBvZiB0aGUgcmVsYXRpb25zaGlwIGlzIHRoZSBvd25lciwgbmVjZXNzYXJ5IGluIG9uZS10by1vbmUgb3Igb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwcwogICAgICAgIC0gYHNlcXVlbmNlYDogU2VjdGlvbiB3aGVyZSB0aGUgb3B0aW9uYWwgZ2VuZXJhdG9yIHRvIHVzZSBmb3IgdGhlIHByaW1hcnkga2V5IGNhbiBiZSBpbmRpY2F0ZWQKICAgICAgLSBgdmFsaWRhdGlvbnNgOiBTZWN0aW9uIHdoZXJlIGF0dHJpYnV0ZSB2YWxpZGF0aW9ucyBhcmUgZGVmaW5lZAogICAgICAgIC0gYHR5cGVgOiBUaGUgc3VwcG9ydGVkIHR5cGVzIGZvciB2YWxpZGF0aW9uIGFyZSBhcyBmb2xsb3dzOiBbTm90TnVsbCwgU2l6ZSwgTWluLCBNYXgsIEVtYWlsLCBOb3RFbXB0eSwgTm90QmxhbmssIFBvc2l0aXZlLCBQb3NpdGl2ZU9yWmVybywgTmVnYXRpdmUsIE5lZ2F0aXZlT3JaZXJvLCBQYXN0LCBQYXN0T3JQcmVzZW50LCBGdXR1cmUsIEZ1dHVyZU9yUHJlc2VudCwgUGF0dGVybiwgRGlnaXRzLCBEZWNpbWFsTWluLCBEZWNpbWFsTWF4XQogICAgICAgIC0gYG1pbmA6IFZhbHVlIHVzZWQgd2hlbiB0aGUgYHR5cGVgIGZpZWxkIGlzIGBTaXplYAogICAgICAgIC0gYG1heGA6IFZhbHVlIHVzZWQgd2hlbiB0aGUgYHR5cGVgIGZpZWxkIGlzIGBTaXplYAogICAgICAgIC0gYHJlZ2V4YDogVmFsdWUgdXNlZCB3aGVuIHRoZSBgdHlwZWAgZmllbGQgaXMgYFBhdHRlcm5gCiAgICAgICAgLSBgdmFsdWVgOiBWYWx1ZSB1c2VkIHdoZW4gdGhlIGB0eXBlYCBmaWVsZCBpcyBgTWluYCwgYE1heGAsIGBEZWNpbWFsTWluYCwgb3IgYERlY2ltYWxNYXhgCiAgICAgICAgLSBgaW50ZWdlcmA6IFZhbHVlIHVzZWQgd2hlbiB0aGUgYHR5cGVgIGZpZWxkIGlzIGBEaWdpdHNgLCByZXByZXNlbnRpbmcgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZSBudW1iZXIKICAgICAgICAtIGBmcmFjdGlvbmA6IFZhbHVlIHVzZWQgd2hlbiB0aGUgYHR5cGVgIGZpZWxkIGlzIGBEaWdpdHNgLCByZXByZXNlbnRpbmcgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgZGVjaW1hbCBwYXJ0IG9mIHRoZSBudW1iZXIKICAgICAgICAtIGBpbmNsdXNpdmVgOiBWYWx1ZSB1c2VkIHdoZW4gdGhlIGB0eXBlYCBmaWVsZCBpcyBgRGVjaW1hbE1pbmAgb3IgYERlY2ltYWxNYXhgCgojIyMgU2FtcGxlcwogICAgeC1hcGlnZW4tbW9kZWxzOgogICAgICBDb2xvcjoKICAgICAgICByZWxhdGlvbmFsLXBlcnNpc3RlbmNlOgogICAgICAgICAgdGFibGU6IGNvbG9ycwogICAgICAgIGF0dHJpYnV0ZXM6CiAgICAgICAgICAtIG5hbWU6IGlkCiAgICAgICAgICAgIHR5cGU6IExvbmcKICAgICAgICAgICAgcmVsYXRpb25hbC1wZXJzaXN0ZW5jZToKICAgICAgICAgICAgICBjb2x1bW46IGlkCiAgICAgICAgICAgICAgcHJpbWFyeS1rZXk6IHRydWUKICAgICAgICAgICAgdmFsaWRhdGlvbnM6CiAgICAgICAgICAgICAgLSB0eXBlOiBOb3ROdWxsCiAgICAgICAgICAtIG5hbWU6IG5hbWUKICAgICAgICAgICAgdHlwZTogU3RyaW5nCiAgICAgICAgICAgIHJlbGF0aW9uYWwtcGVyc2lzdGVuY2U6CiAgICAgICAgICAgICAgY29sdW1uOiBuYW1lCiAgICAgICAgICAgIHZhbGlkYXRpb25zOgogICAgICAgICAgICAgIC0gdHlwZTogUGF0dGVybgogICAgICAgICAgICAgICAgcmVnZXg6IFtBLVpdKwogICAgICBDb21wb3NlZDoKICAgICAgICByZWxhdGlvbmFsLXBlcnNpc3RlbmNlOgogICAgICAgICAgdGFibGU6IGNvbXBvc2VkCiAgICAgICAgYXR0cmlidXRyZXM6CiAgICAgICAgICAtIG5hbWU6IGlkCiAgICAgICAgICAgIHR5cGU6IENvbXBvc2VkSUQKICAgICAgICAgICAgdmFsaWRhdGlvbnM6CiAgICAgICAgICAgICAgIC0gdHlwZTogTm90TnVsbAogICAgICAgICAgICBhdHRyaWJ1dGVzOgogICAgICAgICAgICAgIC0gbmFtZTogb25lCiAgICAgICAgICAgICAgICB0eXBlOiBTdHJpbmcKICAgICAgICAgICAgICAgIHJlbGF0aW9uYWwtcGVyc2lzdGVuY2U6CiAgICAgICAgICAgICAgICAgIGNvbHVtbjogY19vbmUKICAgICAgICAgICAgICAgIHZhbGlkYXRpb25zOgogICAgICAgICAgICAgICAgIC0gdHlwZTogTm90TnVsbAogICAgICAgICAgICAgIC0gbmFtZTogdHdvCiAgICAgICAgICAgICAgICB0eXBlOiBJbnRlZ2VyICAgICAgCiAgICAgICAgICAgICAgICByZWxhdGlvbmFsLXBlcnNpc3RlbmNlOgogICAgICAgICAgICAgICAgICBjb2x1bW46IGNfdHdvICAgICAgCiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uczoKICAgICAgICAgICAgICAgICAtIHR5cGU6IE5vdE51bGwKCiMjIFBhdGggZXhwYW5zaW9uCgojIyMgU2NoZW1lCiAgICBwYXRoczoKICAgICAgPHBhdGg+OgogICAgICAgIC4uLgogICAgICAgIHgtYXBpZ2VuLWJpbmRpbmc6CiAgICAgICAgICBtb2RlbDogc3RyaW5nCgojIyMgRGVmaW5pdGlvbgotIGB4LWFwaWdlbi1iaW5kaW5nYDogU2VjdGlvbiB3aGVyZSB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBlbmRwb2ludCBhbmQgdGhlIG1vZGVsIHdlIHdpbGwgdXNlIGlzIGRlZmluZWQKICAtIGBtb2RlbGA6IEluIHRoaXMgZmllbGQsIHdlIGNhbiBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBtb2RlbC4KICAtIGBjaGlsZC1tb2RlbGA6IEluIHRoaXMgZmllbGQsIHdlIHdpbGwgcHV0IHRoZSBuYW1lIG9mIHRoZSBjaGlsZCBtb2RlbC4gT25seSBuZWNlc3NhcnkgZm9yIHNlbGYtbWFuYWdlZCBlbmRwb2ludHMgb2YgcGFyZW50LWNoaWxkIHR5cGUgZW50aXRpZXMuCiAgLSBgY2hpbGQtcGFyZW50LXJlbGF0aW9uLXByb3BlcnR5YDogSW4gdGhpcyBmaWVsZCwgd2Ugd2lsbCBwdXQgdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBjaGlsZCB0aGF0IHJlbGF0ZXMgdG8gdGhlIHBhcmVudC4gT25seSBuZWNlc3NhcnkgZm9yIHNlbGYtbWFuYWdlZCBlbmRwb2ludHMgb2YgcGFyZW50LWNoaWxkIHR5cGUgZW50aXRpZXMuCgojIyMgU2FtcGxlCiAgICBwYXRoczoKICAgICAgL2NvbG9yczoKICAgICAgICB4LWFwaWdlbi1iaW5kaW5nOgogICAgICAgICAgbW9kZWw6IENvbG9yCgojIyBFeHRlbnNpb24gb2YgdGhlIHNjaGVtYSBzZWN0aW9uIG9mIHRoZSByZXF1ZXN0Qm9keQoKIyMjIFNjaGVtZQoKICAgIHNjaGVtYXM6CiAgICAgIDxzY2hlbWE+OgogICAgICAgIHgtYXBpZ2VuLW1hcHBpbmc6CiAgICAgICAgICBtb2RlbDogc3RyaW5nCiAgICAgIHR5cGU6IG9iamVjdAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIDxwcm9wX25hbWU+OgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICB4LWFwaWdlbi1tYXBwaW5nOgogICAgICAgICAgICBtb2RlbDogc3RyaW5nCiAgICAgICAgICAgIGZpZWxkOiBzdHJpbmcKICAgICAgICA8cHJvcF9uYW1lXzI+OgogICAgICAgICAgeC1hcGlnZW4tbWFwcGluZzoKICAgICAgICAgICAgbW9kZWw6IHN0cmluZwoKIyMjIERlZmluaXRpb24KCi0gYHgtYXBpZ2VuLW1hcHBpbmdgOiBTZWN0aW9uIHdoZXJlIGFsbCBtYXBwaW5nIGRhdGEgYmV0d2VlbiByZXNvdXJjZXMgYW5kIG1vZGVscyBhcmUgZGVmaW5lZC4gRWFjaCBhdHRyaWJ1dGUgb2YgYW4gaW5wdXQgcmVzb3VyY2UsIGluY2x1ZGluZyB0aGUgaW5wdXQgcmVzb3VyY2UgaXRzZWxmLCBjYW4gaGF2ZSB0aGlzIHNlY3Rpb24gZGVmaW5lZC4gSWYgaXQgaXMgbm90IGRlZmluZWQsIGl0IGlzIGFzc3VtZWQgdG8gaGF2ZSB0aGUgZGVmYXVsdCB2YWx1ZXMgaW5kaWNhdGVkIGluIGVhY2ggc2VjdGlvbi4KICAtIGBtb2RlbGA6IE5hbWUgb2YgdGhlIG1vZGVsIHRoYXQgdGhlIHJlc291cmNlIG9yIGF0dHJpYnV0ZSByZXByZXNlbnRzLiBJZiBub3Qgc3BlY2lmaWVkIGF0IHRoZSByZXNvdXJjZSBsZXZlbCwgaXQgaXMgbm90IGNvbnNpZGVyZWQgYSBzdGFuZGFyZCBpbnB1dCByZXNvdXJjZS4KICAtIGBmaWVsZGA6IE5hbWUgb2YgdGhlIG1vZGVsIGF0dHJpYnV0ZSB0byB3aGljaCB0aGUgcmVzb3VyY2UgYXR0cmlidXRlIHdpbGwgYmUgbWFwcGVkLiBCeSBkZWZhdWx0LCBpZiBub3RoaW5nIGlzIHNwZWNpZmllZCwgaXQgd2lsbCBiZSBtYXBwZWQgdG8gYW4gYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgbmFtZSBpZiBpdCBleGlzdHM7IG90aGVyd2lzZSwgaXQgd2lsbCBiZSBpZ25vcmVkLiBUaGVyZSBhcmUgdHdvIHNwZWNpZmljIGNhc2VzIGluIHdoaWNoIGl0IGlzIG1hbmRhdG9yeSB0byBkZWZpbmUgdGhpcyBmaWVsZDoKICAgIC0gV2hlbiB0aGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIGluIHRoZSByZXNvdXJjZSBhbmQgaW4gdGhlIG1vZGVsIGFyZSBkaWZmZXJlbnQ6CiAgICAgIGBgYHlhbWwKICAgICAgbm9tYnJlOgogICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIHgtYXBpZ2VuLW1hcHBpbmc6CiAgICAgICAgICBmaWVsZDogcHJpbWVyTm9tYnJlCiAgICAgIGBgYAogICAgLSBXaGVuIHRoZSBhdHRyaWJ1dGUgaW4gdGhlIHJlc291cmNlIGlzIGFuIGFiYnJldmlhdGlvbiBvZiB0aGUgaWRlbnRpZmllciBvZiBhIG5lc3RlZCBtb2RlbDoKICAgICAgYGBgeWFtbAogICAgICBjb2xvcjoKICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICB4LWFwaWdlbi1tYXBwaW5nOgogICAgICAgICAgbW9kZWw6IGNvbG9yCiAgICAgICAgICBmaWVsZDogdmFsb3JDcm9tYXRpY28uaWQKICAgICAgYGBgCgojIyBFeHBhbnNpb24gb2YgdGhlIHJlc3BvbnNlIG91dGxpbmUgc2VjdGlvbgoKIyMjIFByZWNvbmRpdGlvbnMKClRoZSBBcGlnZW4gZXh0ZW5zaW9uIGZvciBPcGVuQVBJIGZvcmNlcyB1cyB0byB0YWtlIGludG8gYWNjb3VudCBhIHNlcmllcyBvZiBjb25kaXRpb25zIHNvIHRoYXQgZW5kcG9pbnQgcmVzcG9uc2VzIGNvbXBseSB3aXRoIHRoZSBzdGFuZGFyZC4KCiMjIyMgSGF2ZSBhIGRlZmluZWQgc3RhbmRhcmQgcmVzcG9uc2UKCmBgYGB5YW1sCiAgc2NoZW1hczoKICAgIHN0YW5kYXJkX3Jlc3BvbnNlX3Jlc3VsdDoKICAgICAgcHJvcGVydGllczoKICAgICAgICByZXN1bHQ6CiAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIHN0YXR1czoKICAgICAgICAgICAgICB0eXBlOiBib29sZWFuCiAgICAgICAgICAgIGh0dHBfY29kZToKICAgICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICAgIGVycm9yczoKICAgICAgICAgICAgICB0eXBlOiBhcnJheQogICAgICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL3N0YW5kYXJkX2Vycm9yJwogICAgICAgICAgICBpbmZvOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICB0cmFjZV9pZDoKICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgbnVtX2VsZW1lbnRzOgogICAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIHJlcXVpcmVkOgogICAgICAgICAgICAtIHN0YXR1cwogICAgICAgICAgICAtIGh0dHBfY29kZQogICAgICAgICAgICAtIHRyYWNlX2lkCiAgICBzdGFuZGFyZF9lcnJvcjoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgY29kZToKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICBtZXNzYWdlOgogICAgICAgICAgdHlwZTogc3RyaW5nCmBgYGAKCiMjIyMgSGF2ZSBhIHNpbmdsZSBzdGFuZGFyZCBjb2xsZWN0aW9uIHJlc3BvbnNlIGRlZmluZWQgZm9yIGVhY2ggbW9kZWwKCmBgYGB5YW1sCiAgc2NoZW1hczoKICAgIHN0YW5kYXJkX3Jlc3BvbnNlX2NvbGxlY3Rpb25fPG1vZGVsPjoKICAgICAgYWxsT2Y6CiAgICAgICAgLSAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvc3RhbmRhcmRfcmVzcG9uc2VfcmVzdWx0IgogICAgICAgIC0gdHlwZTogb2JqZWN0CiAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICBkYXRhOgogICAgICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICA8bW9kZWxfcGx1cmFsPjoKICAgICAgICAgICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgICAgICAgICAgJHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzLzxtb2RlbF9yZXNvdXJjZT4iCmBgYGAKCiMjIyMgSGF2ZSBhIHNpbmdsZSBzaW1wbGUgc3RhbmRhcmQgcmVzcG9uc2UgZGVmaW5lZCBmb3IgZWFjaCBtb2RlbAoKYGBgYHlhbWwKICBzY2hlbWFzOgogICAgc3RhbmRhcmRfcmVzcG9uc2VfPG1vZGVsPjoKICAgICAgYWxsT2Y6CiAgICAgICAgLSAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvc3RhbmRhcmRfcmVzcG9uc2VfcmVzdWx0IgogICAgICAgIC0gdHlwZTogb2JqZWN0CiAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICBkYXRhOgogICAgICAgICAgICAgICRyZWY6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy88bW9kZWxfcmVzb3VyY2U+IgpgYGBgCgojIyMgU2NoZW1lCgogICAgc2NoZW1hczoKICAgICAgPHNjaGVtYT46CiAgICAgICAgeC1hcGlnZW4tbWFwcGluZzoKICAgICAgICAgIG1vZGVsOiBzdHJpbmcKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgPHByb3BfbmFtZT46CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIHgtYXBpZ2VuLW1hcHBpbmc6CiAgICAgICAgICAgIGZpZWxkOiBzdHJpbmcKCiMjIyBEZWZpbml0aW9uCi0gYHgtYXBpZ2VuLW1hcHBpbmdgOiBTZWN0aW9uIHdoZXJlIGFsbCBtYXBwaW5nIGRhdGEgYmV0d2VlbiByZXNvdXJjZXMgYW5kIG1vZGVscyBhcmUgZGVmaW5lZC4gRWFjaCBvdXRwdXQgcmVzb3VyY2UgbXVzdCBoYXZlIHRoaXMgc2VjdGlvbiBkZWZpbmVkLgogIC0gYG1vZGVsYDogTmFtZSBvZiB0aGUgbW9kZWwgdGhhdCB0aGUgcmVzb3VyY2UgcmVwcmVzZW50cy4KICAtIGBmaWVsZGA6IE5hbWUgb2YgdGhlIG1vZGVsIGF0dHJpYnV0ZSB0byB3aGljaCB0aGUgcmVzb3VyY2UgYXR0cmlidXRlIHdpbGwgYmUgbWFwcGVkLgoKIyMjIFNhbXBsZQoKICAgIGNvbG9yOgogICAgICB4LWFwaWdlbi1tYXBwaW5nOgogICAgICAgIG1vZGVsOiBDb2xvcgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcHJvcGVydGllczoKICAgICAgICBqc29uX2lkOgogICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgeC1hcGlnZW4tbWFwcGluZzoKICAgICAgICAgICAgZmllbGQ6IGlkCiAgICAgICAgbmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIGZvcm1zOgogICAgICAgICAgJHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzL2Zvcm1zIgoKCiMjIPCfkpsgU3BvbnNvcnMKPHAgYWxpZ249ImNlbnRlciI+Cgk8YSBocmVmPSJodHRwczovL2FwaWFkZGljdHMub3JnLyI+CiAgICAJPGltZyBzcmM9Imh0dHBzOi8vYXBpYWRkaWN0cy5jbG91ZGFwcGkubmV0L3dlYi9pbWFnZS80MjQ4L0xPR09DbG91ZGFwcGkyMDIwVmVyc2lvbmVzLTAxLnBuZyIgYWx0PSJjbG91ZGFwcGkiIHdpZHRoPSIxNTAiLz4KICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly93d3cuY29tdW5pZGFkLm1hZHJpZC9zaXRlcy9kZWZhdWx0L2ZpbGVzL3N0eWxlcy9ibG9ja190ZWFzZXJfaW1hZ2UvcHVibGljL2ltZy9sb2dvcy1zaW1ib2xvcy9sb2dvX2NlbnRyYWRvX21kLnBuZz9pdG9rPTRyVFVobWNqIiBhbHQ9Im1kIiB3aWR0aD0iMTUwIi8+CiAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXBpcXVhbGl0eS5pby93cC1jb250ZW50L3VwbG9hZHMvMjAyMi8wOS9jcm9wcGVkLWxvZ28tYXBpcXVhbGl0eS1wcmluY2lwYWwtMS0xNzB4NzAucG5nIiBoZWlnaHQgPSAiNzUiPgogICAgICAgIDxpbWcgc3JjPSJodHRwczovL2FwaWFkZGljdHMtd2ViLnMzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzAzLzE3MTU1NzM2L2Nyb3BwZWQtQVBJQWRkaWN0cy1sb2dvdGlwb19yb2pvLnBuZyIgaGVpZ2h0ID0gIjc1Ij4KCTwvYT4KPC9wPg== readmeEtag: '"31288d1b58f708375566235e5058fa977dc4ce06"' readmeLastModified: Tue, 03 Feb 2026 11:19:57 GMT repositoryId: 317847354 description: >- Apigen allow generate springboot archetipe using openapi file as mapping tool between the openapi definition and the database. created: '2020-12-02T11:56:38Z' updated: '2026-02-03T12:04:45Z' language: Java archived: false stars: 29 watchers: 2 forks: 3 owner: apiaddicts logo: https://avatars.githubusercontent.com/u/31730093?v=4 license: LGPL-3.0 repoEtag: '"8ca4a3599e24471c8b93f836c7e0386376bb526f81b450c35ee50026d5d4e24c"' repoLastModified: Tue, 03 Feb 2026 12:04:45 GMT category: SDK foundInMaster: true oldLocations: - https://github.com/apiaddicts/apigen - source: - openapi3 tags - openapi31 tags repository: https://github.com/fatal1ty/openapify v3: true v3_1: true id: 2e5e94dab0e4592660585f4aecadb841 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpZnkKCiMjIyMjIyBGcmFtZXdvcmsgYWdub3N0aWMgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIGdlbmVyYXRpb24gZm9yIGNvZGUgbG92ZXJzCgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9GYXRhbDF0eS9vcGVuYXBpZnkvd29ya2Zsb3dzL3Rlc3RzL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9GYXRhbDF0eS9vcGVuYXBpZnkvYWN0aW9ucykKWyFbTGF0ZXN0IFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L29wZW5hcGlmeS5zdmcpXShodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL29wZW5hcGlmeSkKWyFbUHl0aG9uIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL29wZW5hcGlmeS5zdmcpXShodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL29wZW5hcGlmeSkKWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUFwYWNoZSUyMDIuMC1ibHVlLnN2ZyldKGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQXBhY2hlLTIuMCkKCi0tLQoKVGhpcyBsaWJyYXJ5IGlzIGRlc2lnbmVkIGZvciBjb2RlLWZpcnN0IHBlb3BsZSB3aG8gZG9uJ3Qgd2FudCB0byBib3RoZXIgZGl2aW5nCmludG8gdGhlIGRldGFpbHMKb2YgW09wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wKSwgYnV0IHdobwppbnN0ZWFkIHdhbnQgdG8gdXNlIGFkdmFudGFnZXMgb2YgUHl0aG9uIHR5cGluZyBzeXN0ZW0sIElERSBjb2RlLWNvbXBsZXRpb24gYW5kCnN0YXRpYyB0eXBlIGNoZWNrZXJzIHRvIGNvbnRpbnVvdXNseSBidWlsZCB0aGUgQVBJIGRvY3VtZW50YXRpb24gYW5kIGtlZXAgaXQKYWx3YXlzIHVwIHRvIGRhdGUuCgpPcGVuYXBpZnkgaXMgYmFzZWQgb24gdGhlIGlkZWEgb2YgYXBwbHlpbmcgZGVjb3JhdG9ycyBvbiByb3V0ZSBoYW5kbGVycy4gQW55CndlYi1mcmFtZXdvcmsgaGFzIGEgcm91dGluZyBzeXN0ZW0gdGhhdCBsZXQgdXMgbGluayBhIHJvdXRlIHRvIGEgaGFuZGxlcgooYSBoaWdoLWxldmVsIGZ1bmN0aW9uIG9yIGEgY2xhc3MgbWV0aG9kKS4gQnkgdXNpbmcgZGVjb3JhdG9ycywgd2UgY2FuIGFkZAppbmZvcm1hdGlvbiBhYm91dCByZXF1ZXN0cywgcmVzcG9uc2VzIGFuZCBvdGhlciBkZXRhaWxzIHRoYXQgd2lsbCB0aGVuIGJlIHVzZWQKdG8gY3JlYXRlIGFuIGVudGlyZSBPcGVuQVBJIGRvY3VtZW50LgoKPiBbIVdBUk5JTkddXAo+IFRoaXMgbGlicmFyeSBpcyBjdXJyZW50bHkgaW4gcHJlLXJlbGVhc2Ugc3RhZ2UgYW5kIG1heSBoYXZlIGJhY2t3YXJkCj4gaW5jb21wYXRpYmxlIGNoYW5nZXMgcHJpb3IgdG8gdmVyc2lvbiAxLjAuIFBsZWFzZSB1c2UgY2F1dGlvbiB3aGVuIHVzaW5nIHRoaXMKPiBsaWJyYXJ5IGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIGFuZCBiZSBzdXJlIHRvIHRob3JvdWdobHkgdGVzdCBhbnkgdXBkYXRlcwo+IGJlZm9yZSB1cGdyYWRpbmcgdG8gYSBuZXcgdmVyc2lvbi4KClRhYmxlIG9mIGNvbnRlbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoqIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCiogW1F1aWNrc3RhcnRdKCNxdWlja3N0YXJ0KQoqIFtCdWlsZGluZyB0aGUgT3BlbkFQSSBEb2N1bWVudF0oI2J1aWxkaW5nLXRoZS1vcGVuYXBpLWRvY3VtZW50KQoqIFtJbnRlZ3JhdGlvbiB3aXRoIHdlYi1mcmFtZXdvcmtzXSgjaW50ZWdyYXRpb24td2l0aC13ZWItZnJhbWV3b3JrcykKICAgICogW2Fpb2h0dHBdKCNhaW9odHRwKQogICAgKiBbV3JpdGluZyB5b3VyIG93biBpbnRlZ3JhdGlvbl0oI3dyaXRpbmcteW91ci1vd24taW50ZWdyYXRpb24pCiogW0RlY29yYXRvcnNdKCNkZWNvcmF0b3JzKQogICAgKiBbR2VuZXJpYyBvcGVyYXRpb24gaW5mb10oI2dlbmVyaWMtb3BlcmF0aW9uLWluZm8pCiAgICAqIFtSZXF1ZXN0XSgjcmVxdWVzdCkKICAgICogW1Jlc3BvbnNlXSgjcmVzcG9uc2UpCiAgICAqIFtTZWN1cml0eSByZXF1aXJlbWVudHNdKCNzZWN1cml0eS1yZXF1aXJlbWVudHMpCiogW1BsdWdpbnNdKCNwbHVnaW5zKQogICogW2BzY2hlbWFfaGVscGVyYF0oI3NjaGVtYV9oZWxwZXIpCiAgKiBbYG1lZGlhX3R5cGVfaGVscGVyYF0oI21lZGlhX3R5cGVfaGVscGVyKQoKSW5zdGFsbGF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpVc2UgcGlwIHRvIGluc3RhbGw6CgpgYGBzaGVsbAokIHBpcCBpbnN0YWxsIG9wZW5hcGlmeQpgYGAKClF1aWNrc3RhcnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCj4gWyFOT1RFXVwKPiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIHdlIHdpbGwgaW50ZW50aW9uYWxseSBkZW1vbnN0cmF0ZSB0aGUgcHJvY2VzcyBvZgo+IGNyZWF0aW5nIGFuIE9wZW5BUEkgZG9jdW1lbnQgd2l0aG91dCBiZWluZyB0aWVkIHRvIGEgc3BlY2lmaWMgd2ViLWZyYW1ld29yay4KPiBIb3dldmVyLCB0aGlzIHByb2Nlc3MgbWF5IGJlIGVhc2llciBvbiBhIHN1cHBvcnRlZCB3ZWItZnJhbWV3b3JrLgo+IFNlZSBbSW50ZWdyYXRpb24gd2l0aCB3ZWItZnJhbWV3b3Jrc10oI2ludGVncmF0aW9uLXdpdGgtd2ViLWZyYW1ld29ya3MpIGZvcgo+IG1vcmUgaW5mby4KCkxldCdzIHNlZSBob3cgdG8gYnVpbGQgYW4gT3BlbkFQSSBkb2N1bWVudCB3aXRoIG9wZW5hcGlmeS4gU3VwcG9zZSB3ZSBhcmUKd3JpdGluZyBhbiBhcHAgZm9yIGEgYm9va3N0b3JlIHRoYXQgcmV0dXJuIGEgbGlzdCBvZiBuZXcgYm9va3MuIEhlcmUgd2UgaGF2ZSBhCmRhdGFjbGFzcyBtb2RlbCBgQm9va2AgdGhhdCB3b3VsZCBiZSB1c2VkIGFzIGEgcmVzcG9uc2UgbW9kZWwgaW4gYSByZWFsLWxpZmUKc2NlbmFyaW8uIEEgZnVuY3Rpb24gYGdldF9uZXdfYm9va3NgIGlzIG91ciBoYW5kbGVyLgoKYGBgcHl0aG9uCmZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcwoKQGRhdGFjbGFzcwpjbGFzcyBCb29rOgogICAgdGl0bGU6IHN0cgogICAgYXV0aG9yOiBzdHIKICAgIHllYXI6IGludAoKZGVmIGdldF9uZXdfYm9va3MoLi4uKToKICAgIC4uLgpgYGAKCk5vdyB3ZSB3YW50IHRvIHNheSB0aGF0IG91ciBoYW5kbGVyIHJldHVybnMgYSBqc29uIHNlcmlhbGl6ZWQgbGlzdCBvZiBib29rcwpsaW1pdGVkIGJ5IHRoZSBvcHRpb25hbCBgY291bnRgIHBhcmFtZXRlci4gV2UgdXNlIGByZXF1ZXN0X3NjaGVtYWAKYW5kIGByZXNwb25zZV9zY2hlbWFgIGRlY29yYXRvcnMgYWNjb3JkaW5nbHk6CgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkgaW1wb3J0IHJlcXVlc3Rfc2NoZW1hLCByZXNwb25zZV9zY2hlbWEKCkByZXF1ZXN0X3NjaGVtYShxdWVyeV9wYXJhbXM9eyJjb3VudCI6IGludH0pCkByZXNwb25zZV9zY2hlbWEobGlzdFtCb29rXSkKZGVmIGdldF9uZXdfYm9va3MoLi4uKToKICAgIC4uLgpgYGAKCkFuZCBub3cgd2UgbmVlZCB0byBjb2xsZWN0IGFsbCB0aGUgcm91dGUgZGVmaW5pdGlvbnMgYW5kIHBhc3MgdGhlbSB0byB0aGUKYGJ1aWxkX3NwZWNgIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHRoYXQgaGFzIGB0b195YW1sYAptZXRob2QuCgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkgaW1wb3J0IGJ1aWxkX3NwZWMKZnJvbSBvcGVuYXBpZnkuY29yZS5tb2RlbHMgaW1wb3J0IFJvdXRlRGVmCgpyb3V0ZXMgPSBbUm91dGVEZWYoIi9ib29rcyIsICJnZXQiLCBnZXRfbmV3X2Jvb2tzKV0Kc3BlYyA9IGJ1aWxkX3NwZWMocm91dGVzKQpwcmludChzcGVjLnRvX3lhbWwoKSkKYGBgCgpBcyBhIHJlc3VsdCwgd2Ugd2lsbCBnZXQgdGhlIGZvbGxvd2luZyBPcGVuQVBJIGRvY3VtZW50IHdoaWNoIGNhbiBiZSByZW5kZXJlZAp1c2luZyB0b29scyBzdWNoIGFzIFN3YWdnZXIgVUk6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMS4wCmluZm86CiAgdGl0bGU6IEFQSQogIHZlcnNpb246IDEuMC4wCnBhdGhzOgogIC9ib29rczoKICAgIGdldDoKICAgICAgcGFyYW1ldGVyczoKICAgICAgLSBuYW1lOiBjb3VudAogICAgICAgIGluOiBxdWVyeQogICAgICAgIHNjaGVtYToKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgcmVzcG9uc2VzOgogICAgICAgICcyMDAnOgogICAgICAgICAgZGVzY3JpcHRpb246IE9LCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICAgICAgICBpdGVtczoKICAgICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0Jvb2snCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIEJvb2s6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICB0aXRsZTogQm9vawogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIHRpdGxlOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgYXV0aG9yOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgeWVhcjoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlCiAgICAgIHJlcXVpcmVkOgogICAgICAtIHRpdGxlCiAgICAgIC0gYXV0aG9yCiAgICAgIC0geWVhcgpgYGAKCkJ1aWxkaW5nIHRoZSBPcGVuQVBJIERvY3VtZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRoZSBmaW5hbCBnb2FsIG9mIHRoaXMgbGlicmFyeSBpcyB0byBidWlsZAp0aGUgW09wZW5BUEkgRG9jdW1lbnRdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVuYXBpLWRvY3VtZW50KQpmb3IgeW91ciB3ZWItYXBwbGljYXRpb24uIFRoaXMgZG9jdW1lbnQgY29uc2lzdHMgb2YgY29tbW9uIGluZm9ybWF0aW9uIGFib3V0CnRoZSBhcHBsaWNhdGlvbiwgc3VjaCBhcyBhIHRpdGxlIGFuZCB2ZXJzaW9uLCBhbmQgc3BlY2lmaWMgaW5mb3JtYXRpb24gdGhhdApvdXRsaW5lcyB0aGUgZnVuY3Rpb25hbGl0aWVzIG9mIHRoZSBBUEkuCgpTaW5jZSBvcGVuYXBpZnkgaXMgbm93IGJhc2VkCm9uIFthcGlzcGVjXShodHRwczovL2dpdGh1Yi5jb20vbWFyc2htYWxsb3ctY29kZS9hcGlzcGVjKSBsaWJyYXJ5LCB0aGUgT3BlbkFQSQpkb2N1bWVudCBpcyBwcmVzZW50ZWQgYnkgYEFQSVNwZWNgIGNsYXNzIGZvciB0aGUgY29udmVuaWVuY2Ugb2YgdXNpbmcgdGhlCmV4aXN0aW5nIGVjb3N5c3RlbSBvZiBwbHVnaW5zLiBIb3dldmVyLCBvcGVuYXBpZnkgaGFzIGl0cyBvd24Kc3ViY2xhc3MgYE9wZW5BUElEb2N1bWVudGAgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIGFkZCBzb21lIGNvbW1vbiBmaWVsZHMsCnN1Y2ggYXMgYW4gYXJyYXkKb2YgW1NlcnZlcl0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3NlcnZlci1vYmplY3QpIG9iamVjdHMgb3IKYXJyYXkgb2YKY29tbW9uIFtTZWN1cml0eSBTY2hlbWVdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNzZWN1cml0eS1zY2hlbWUtb2JqZWN0KQpvYmplY3RzLgoKVG8gYnVpbGQgdGhlIGRvY3VtZW50LCB0aGVyZSBpcyBgYnVpbGRfc3BlY2AgZnVuY3Rpb24uIFRoZSB2ZXJ5IGJhc2ljIGRvY3VtZW50CmNhbiBiZSBjcmVhdGVkIGJ5IGNhbGxpbmcgaXQgd2l0aCBhbiBlbXB0eSBsaXN0IG9mIHJvdXRlIGRlZmluaXRpb25zLCBsZWF2aW5nCmFsbCB0aGUgcGFyYW1ldGVycyB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWVzLgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkgaW1wb3J0IGJ1aWxkX3NwZWMKCnByaW50KGJ1aWxkX3NwZWMoW10pLnRvX3lhbWwoKSkKYGBgCgpBcyBhIHJlc3VsdCwgd2Ugd2lsbCBnZXQgdGhlIGZvbGxvd2luZyBkb2N1bWVudDoKCmBgYHlhbWwKb3BlbmFwaTogMy4xLjAKaW5mbzoKICB0aXRsZTogQVBJCiAgdmVyc2lvbjogMS4wLjAKcGF0aHM6IHt9CmBgYAoKV2UgY2FuIGNoYW5nZSB0aGUgY29tbW9uIGRvY3VtZW50IGF0dHJpYnV0ZXMgZWl0aGVyIGJ5IHBhc3NpbmcgdGhlbQp0byBgYnVpbGRfc3BlY2A6CgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkgaW1wb3J0IGJ1aWxkX3NwZWMKZnJvbSBvcGVuYXBpZnkuY29yZS5vcGVuYXBpLm1vZGVscyBpbXBvcnQgSFRUUFNlY3VyaXR5U2NoZW1lCgpidWlsZF9zcGVjKAogICAgcm91dGVzPVtdLAogICAgdGl0bGU9Ik15IEJvb2tzdG9yZSBBUEkiLAogICAgdmVyc2lvbj0iMS4xLjAiLAogICAgb3BlbmFwaV92ZXJzaW9uPSIzLjEuMCIsCiAgICBzZXJ2ZXJzPVsiaHR0cDovLzEyNy4wLjAuMSJdLAogICAgc2VjdXJpdHlfc2NoZW1lcz17ImJhc2ljX2F1dGgiOiBIVFRQU2VjdXJpdHlTY2hlbWUoKX0KKQpgYGAKCm9yIHVzaW5nIGEgcHJlcGFyZWQgYE9wZW5BUElEb2N1bWVudGAgb2JqZWN0OgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5IGltcG9ydCBPcGVuQVBJRG9jdW1lbnQsIGJ1aWxkX3NwZWMKZnJvbSBvcGVuYXBpZnkuY29yZS5vcGVuYXBpLm1vZGVscyBpbXBvcnQgSFRUUFNlY3VyaXR5U2NoZW1lCgpzcGVjID0gT3BlbkFQSURvY3VtZW50KAogICAgdGl0bGU9Ik15IEJvb2tzdG9yZSBBUEkiLAogICAgdmVyc2lvbj0iMS4xLjAiLAogICAgb3BlbmFwaV92ZXJzaW9uPSIzLjEuMCIsCiAgICBzZXJ2ZXJzPVsiaHR0cDovLzEyNy4wLjAuMSJdLAogICAgc2VjdXJpdHlfc2NoZW1lcz17ImJhc2ljX2F1dGgiOiBIVFRQU2VjdXJpdHlTY2hlbWUoKX0sCikKYnVpbGRfc3BlYyhbXSwgc3BlYykKYGBgCgpUbyBhZGQgbWVhbmluZyB0byBvdXIgZG9jdW1lbnQsIHdlIGNhbgphZGQgW1BhdGhdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNwYXRocy1vYmplY3QpLApbQ29tcG9uZW50XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjY29tcG9uZW50cy1vYmplY3QpCmFuZCBvdGhlciBPcGVuQVBJIG9iamVjdHMgYnkgYXBwbHlpbmcgW2RlY29yYXRvcnNdKCNkZWNvcmF0b3JzKSBvbiBvdXIgcm91dGUKaGFuZGxlcnMgYW5kIGNvbnN0cnVjdGluZyByb3V0ZSBkZWZpbml0aW9ucyB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBidWlsZGVyLgpBIHNpbmdsZSBjb21wbGV0ZSByb3V0ZSBkZWZpbml0aW9uIHByZXNlbnRlZCBieSBgUm91dGVEZWZgIGNsYXNzIGNhbiBsb29rIGxpa2UKdGhpczoKCmBgYHB5dGhvbgpmcm9tIG9wZW5hcGlmeS5jb3JlLm1vZGVscyBpbXBvcnQgUm91dGVEZWYKZnJvbSBvcGVuYXBpZnkuY29yZS5vcGVuYXBpLm1vZGVscyBpbXBvcnQgUGFyYW1ldGVyLCBQYXJhbWV0ZXJMb2NhdGlvbgoKZGVmIGdldF9ib29rX2J5X2lkX2hhbmRsZXIoLi4uKToKICAgIC4uLgoKUm91dGVEZWYoCiAgICBwYXRoPSIvYm9vay97aWR9IiwKICAgIG1ldGhvZD0iZ2V0IiwKICAgIGhhbmRsZXI9Z2V0X2Jvb2tfYnlfaWRfaGFuZGxlciwKICAgIHN1bW1hcnk9IkdldHRpbmcgdGhlIGJvb2siLAogICAgZGVzY3JpcHRpb249IkdldHRpbmcgdGhlIGJvb2sgYnkgaWQiLAogICAgcGFyYW1ldGVycz1bCiAgICAgICAgUGFyYW1ldGVyKAogICAgICAgICAgICBuYW1lPSJpZCIsCiAgICAgICAgICAgIGxvY2F0aW9uPVBhcmFtZXRlckxvY2F0aW9uLlBBVEgsCiAgICAgICAgICAgIHJlcXVpcmVkPVRydWUsCiAgICAgICAgICAgIHNjaGVtYT17InR5cGUiOiAiaW50ZWdlciJ9LAogICAgICAgICkKICAgIF0sCiAgICB0YWdzPVsiYm9vayJdLAopCmBgYAoKQXMgd2lsbCBiZSBzaG93biBmdXJ0aGVyLCBvcHRpb25hbAphcmd1bWVudHMgYHN1bW1hcnlgLCBgZGVzY3JpcHRpb25gLCBgcGFyYW1ldGVyc2AgYW5kIGB0YWdzYCBjYW4gYmUgb3ZlcnJpZGRlbgpvciBleHRlbmRlZCBieSBgb3BlcmF0aW9uX2RvY3NgIGFuZCBgcmVxdWVzdF9zY2hlbWFgIGRlY29yYXRvcnMuCgpUaGUgY3JlYXRpbmcgb2YgdGhlc2Ugcm91dGUgZGVmaW5pdGlvbnMgY2FuIGJlIGF1dG9tYXRlZCBhbmQgYWRhcHRlZCB0byBhCnNwZWNpZmljIHdlYi1mcmFtZXdvcmssIGFuZCBvcGVuYXBpZnkgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIGEgZmV3IG9mIHRoZW0uClNlZSBbSW50ZWdyYXRpb24gd2l0aCB3ZWItZnJhbWV3b3Jrc10oI2ludGVncmF0aW9uLXdpdGgtd2ViLWZyYW1ld29ya3MpIGZvcgpkZXRhaWxzLgoKSW50ZWdyYXRpb24gd2l0aCB3ZWItZnJhbWV3b3JrcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhlcmUgaXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgYSBmZXcgd2ViLWZyYW1ld29ya3MsIHdoaWNoIG1ha2VzIGNyZWF0aW5nIHRoZQpkb2N1bWVudGF0aW9uIGV2ZW4gZWFzaWVyIGFuZCBtb3JlIGZ1bi4gQW55IG90aGVyIGZyYW1ld29ya3MgY2FuIGJlIGludGVncmF0ZWQKd2l0aCBhIGxpdHRsZSBlZmZvcnQuIElmIHlvdSBhcmUgcmVhZHkgdG8gdGFrZSBvbiB0aGlzLCB5b3UgYXJlIHZlcnkgd2VsY29tZSB0bwpjcmVhdGUgYSBbcHVsbCByZXF1ZXN0XShodHRwczovL2dpdGh1Yi5jb20vRmF0YWwxdHkvb3BlbmFwaWZ5L3B1bGxzKS4KCiMjIyBhaW9odHRwCgpUaGUgZG9jdW1lbnRhdGlvbiBmb3IgW2Fpb2h0dHBdKGh0dHBzOi8vZ2l0aHViLmNvbS9haW8tbGlicy9haW9odHRwKQp3ZWItYXBwbGljYXRpb24gY2FuIGJlIGJ1aWx0IGluIHRocmVlIHdheXM6CgoqIFVzaW5nIGFuIGFscmVhZHkgZXhpc3RpbmcgW2BhaW9odHRwLndlYi5BcHBsaWNhdGlvbmBdKGh0dHBzOi8vZG9jcy5haW9odHRwLm9yZy9lbi9zdGFibGUvd2ViX3JlZmVyZW5jZS5odG1sI2FwcGxpY2F0aW9uKSBvYmplY3QKKiBVc2luZyBhIHNldCBvZiBbYGFpb2h0dHAud2ViLlJvdXRlRGVmYF0oaHR0cHM6Ly9kb2NzLmFpb2h0dHAub3JnL2VuL3N0YWJsZS93ZWJfcmVmZXJlbmNlLmh0bWwjYWlvaHR0cC53ZWIuUm91dGVEZWYpIG9iamVjdHMKKiBVc2luZyBhIHNldCBvZiBvYmplY3RzIGltcGxlbWVudGluZyBbYEFpb0h0dHBSb3V0ZURlZmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9GYXRhbDF0eS9vcGVuYXBpZnkvYmxvYi8yYmJmMmU5OWMwNmIzMWZhMmYxNDY1ZjJlYmMxMTg4ODRjZTJiYjk1L29wZW5hcGlmeS9leHQvd2ViL2Fpb2h0dHAucHkjTDQzLUw0NikgcHJvdG9jb2wKCkFsbCB3ZSBuZWVkIGlzIHRvIHBhc3MgZWl0aGVyIGFuIGFwcGxpY2F0aW9uLCBvciBhIHNldCBvZiByb3V0ZSBkZWZzIHRvCm1vZGlmaWVkIGBidWlsZF9zcGVjYCBmdW5jdGlvbi4gU2VlIHRoZSBleGFtcGxlOgpgYGBweXRob24KZnJvbSBhaW9odHRwIGltcG9ydCB3ZWIKZnJvbSBvcGVuYXBpZnkgaW1wb3J0IHJlcXVlc3Rfc2NoZW1hLCByZXNwb25zZV9zY2hlbWEKZnJvbSBvcGVuYXBpZnkuZXh0LndlYi5haW9odHRwIGltcG9ydCBidWlsZF9zcGVjCgpyb3V0ZXMgPSB3ZWIuUm91dGVUYWJsZURlZigpCgpAcmVzcG9uc2Vfc2NoZW1hKHN0ciwgbWVkaWFfdHlwZT0idGV4dC9wbGFpbiIpCkByb3V0ZXMucG9zdCgiLyIpCmFzeW5jIGRlZiBoZWxsbyhyZXF1ZXN0KToKICAgIHJldHVybiB3ZWIuUmVzcG9uc2UodGV4dD0iSGVsbG8sIHdvcmxkIikKCmFwcCA9IHdlYi5BcHBsaWNhdGlvbigpCmFwcC5hZGRfcm91dGVzKHJvdXRlcykKCnByaW50KGJ1aWxkX3NwZWMoYXBwKS50b195YW1sKCkpCmBgYApBcyBhIHJlc3VsdCwgd2Ugd2lsbCBnZXQgdGhlIGZvbGxvd2luZyBkb2N1bWVudDoKCmBgYHlhbWwKb3BlbmFwaTogMy4xLjAKaW5mbzoKICB0aXRsZTogQVBJCiAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgLzoKICAgIHBvc3Q6CiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBPSwogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgdGV4dC9wbGFpbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKYGBgCgojIyMgV3JpdGluZyB5b3VyIG93biBpbnRlZ3JhdGlvbgoK8J+apyBUbyBiZSBkZXNjcmliZWQKCkRlY29yYXRvcnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk9wZW5hcGlmeSBoYXMgc2V2ZXJhbCBkZWNvcmF0b3JzIHRoYXQgZW1iZWQgbmVjZXNzYXJ5IHNwZWNpZmljIGluZm9ybWF0aW9uIGZvcgpsYXRlciB1c2Ugd2hlbiBidWlsZGluZyB0aGUgT3BlbkFQSSBkb2N1bWVudC4gSW4gZ2VuZXJhbCwgZGVjb3JhdG9ycyB3aWxsCmRlZmluZSB0aGUgaW5mb3JtYXRpb24gdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCnRoZSBbT3BlcmF0aW9uIE9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCndoaWNoIGRlc2NyaWJlcyBhIHNpbmdsZSBBUEkgb3BlcmF0aW9uIG9uIGEgcGF0aC4gV2Ugd2lsbCBsb29rIGF0IHdoYXQgZWFjaApkZWNvcmF0b3IgcGFyYW1ldGVyIGlzIHJlc3BvbnNpYmxlIGZvciBhbmQgaG93IGl0IGlzIHJlZmxlY3RlZCBpbiB0aGUgZmluYWwKZG9jdW1lbnQuCgojIyMgR2VuZXJpYyBvcGVyYXRpb24gaW5mbwoKRGVjb3JhdG9yIGBvcGVyYXRpb25fZG9jc2AgYWRkcyBnZW5lcmljIGluZm9ybWF0aW9uIGFib3V0IHRoZSBPcGVyYXRpb24gb2JqZWN0LAp3aGljaCBpbmNsdWRlcyBzdW1tYXJ5LCBkZXNjcmlwdGlvbiwgdGFncywgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbiBhbmQKZGVwcmVjYXRpb24gbWFya2VyLgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5IGltcG9ydCBvcGVyYXRpb25fZG9jcwpgYGAKCiMjIyMgc3VtbWFyeQoKQW4gb3B0aW9uYWwsIHN0cmluZyBzdW1tYXJ5LCBpbnRlbmRlZCB0byBhcHBseSB0byB0aGUgb3BlcmF0aW9uLiBUaGlzIGFmZmVjdHMKdGhlIHZhbHVlIG9mCnRoZSBbYHN1bW1hcnlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkgZmllbGQgb2YKdGhlIE9wZXJhdGlvbiBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgIkdldHRpbmcgbmV3IGJvb2tzImAgfAoKIyMjIyBkZXNjcmlwdGlvbgoKQW4gb3B0aW9uYWwsIHN0cmluZyBkZXNjcmlwdGlvbiwgaW50ZW5kZWQgdG8gYXBwbHkgdG8gdGhlCm9wZXJhdGlvbi4gW0NvbW1vbk1hcmsgc3ludGF4XShodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcpIE1BWSBiZSB1c2VkIGZvcgpyaWNoIHRleHQgcmVwcmVzZW50YXRpb24uIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgZGVzY3JpcHRpb25gXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgIlJldHVybnMgYSBsaXN0IG9mIGJvb2tzImAgfAoKIyMjIyB0YWdzCgpBIGxpc3Qgb2YgdGFncyBmb3IgQVBJIGRvY3VtZW50YXRpb24gY29udHJvbC4gVGFncyBjYW4gYmUgdXNlZCBmb3IgbG9naWNhbApncm91cGluZyBvZiBvcGVyYXRpb25zIGJ5IHJlc291cmNlcyBvciBhbnkgb3RoZXIgcXVhbGlmaWVyLiBUaGlzIGFmZmVjdHMgdGhlCnZhbHVlIG9mIHRoZSBbYHRhZ3NgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzICB8IEV4YW1wbGVzICAgfAp8LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfAp8IGBTZXF1ZW5jZVtzdHJdYCB8IGBbImJvb2siXWAgfAoKIyMjIyBvcGVyYXRpb25faWQKClVuaXF1ZSBzdHJpbmcgdXNlZCB0byBpZGVudGlmeSB0aGUgb3BlcmF0aW9uLiBUaGlzIGFmZmVjdHMgdGhlCnZhbHVlIG9mCnRoZSBbYG9wZXJhdGlvbklkYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LgoKfCBQb3NzaWJsZSB0eXBlcyB8IEV4YW1wbGVzICAgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgZ2V0Qm9va3NgIHwKCiMjIyMgZXh0ZXJuYWxfZG9jcwoKQWRkaXRpb25hbCBleHRlcm5hbCBkb2N1bWVudGF0aW9uIGZvciB0aGUgb3BlcmF0aW9uLiBJdCBjYW4gYmUgYSBzaW5nbGUgdXJsIG9yCih1cmwsIGRlc2NyaXB0aW9uKSBwYWlyLiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHN1bW1hcnlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkgZmllbGQgb2YKdGhlIE9wZXJhdGlvbiBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzICAgIHwgRXhhbXBsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBgc3RyYCAgICAgICAgICAgICB8IGAiaHR0cHM6Ly9leGFtcGxlLm9yZy9kb2NzL2Jvb2tzImAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBUdXBsZVtzdHIsIHN0cl1gIHwgYCgiaHR0cHM6Ly9leGFtcGxlLm9yZy9kb2NzL2Jvb2tzIiwgIkV4dGVybmFsIGRvY3VtZW50YXRpb24gZm9yIC9ib29rcyIpYCB8CgojIyMjIGRlcHJlY2F0ZWQKCkRlY2xhcmVzIHRoZSBvcGVyYXRpb24gdG8gYmUgZGVwcmVjYXRlZC4gQ29uc3VtZXJzIFNIT1VMRCByZWZyYWluIGZyb20gdXNhZ2UKb2YgdGhlIGRlY2xhcmVkIG9wZXJhdGlvbi4gRGVmYXVsdCB2YWx1ZSBpcyBmYWxzZS4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2BkZXByZWNhdGVkYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpIGZpZWxkCm9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LgoKfCBQb3NzaWJsZSB0eXBlcyB8IEV4YW1wbGVzICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IGBib29sYCAgICAgICAgIHwgPGNvZGUgbGFuZz0icHl0aG9uIj5UcnVlPC9wcmU+IHwKCiMjIyBSZXF1ZXN0CgpEZWNvcmF0b3IgYHJlcXVlc3Rfc2NoZW1hYCBhZGRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvcGVyYXRpb24gcmVxdWVzdHMuClJlcXVlc3QgY2FuIGhhdmUgYSBib2R5LCBxdWVyeSBwYXJhbWV0ZXJzLCBoZWFkZXJzIGFuZCBjb29raWVzLgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5IGltcG9ydCByZXF1ZXN0X3NjaGVtYQpgYGAKCiMjIyMgYm9keQoKQSByZXF1ZXN0IGJvZHkgY2FuIGJlIGRlc2NyaWJlZCBlbnRpcmVseSBieSBvbmUgYGJvZHlgIHBhcmFtZXRlciBvZiB0eXBlIGBCb2R5YApvciBwYXJ0aWFsbHkgYnkgc2VwYXJhdGUgYGJvZHlfKmAgcGFyYW1ldGVycyAoc2VlIGJlbG93KS4KCkluIHRoZSBmaXJzdCBjYXNlIGl0IGlzIGBvcGVuYXBpZnkuY29yZS5tb2RlbHMuQm9keWAgb2JqZWN0IHRoYXQgaGFzIGFsbCB0aGUKc2VwYXJhdGUgYGJvZHlfKmAgcGFyYW1ldGVycyBpbnNpZGUuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVxdWVzdEJvZHlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QuCgpJbiB0aGUgc2Vjb25kIGNhc2UgaXQgaXMgdGhlIHJlcXVlc3QgYm9keSBQeXRob24gZGF0YSB0eXBlIGZvciB3aGljaCB0aGUgSlNPTgpTY2hlbWEgd2lsbCBiZSBidWlsdC4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2ByZXF1ZXN0Qm9keWBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYHNjaGVtYWBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNtZWRpYS10eXBlLW9iamVjdCkgZmllbGQgb2YKTWVkaWEgVHlwZSBvYmplY3QgaW5zaWRlCnRoZSB2YWx1ZQpvZiBbYGNvbnRlbnRgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVxdWVzdC1ib2R5LW9iamVjdCkgZmllbGQKb2YgUmVxdWVzdCBCb2R5IG9iamVjdC4KCjx0YWJsZT4KPHRyPgo8dGg+UG9zc2libGUgdHlwZXM8L3RoPgo8dGg+RXhhbXBsZXM8L3RoPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+VHlwZTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCkJvb2sKYGBgCgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+Qm9keTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCkJvZHkoCiAgICB2YWx1ZV90eXBlPUJvb2ssCiAgICBtZWRpYV90eXBlPSJhcHBsaWNhdGlvbi9qc29uIiwKICAgIHJlcXVpcmVkPVRydWUsCiAgICBkZXNjcmlwdGlvbj0iQSBib29rIiwKICAgIGV4YW1wbGU9ewogICAgICAgICJ0aXRsZSI6ICJBbm5hIEthcmVuaW5hIiwKICAgICAgICAiYXV0aG9yIjogIkxlbyBUb2xzdG95IiwKICAgICAgICAieWVhciI6IDE4NzcsCiAgICB9LAopCmBgYAoKPC90ZD4KPC90cj4KPC90YWJsZT4KCiMjIyMgbWVkaWFfdHlwZQoKQSBtZWRpYSB0eXBlCm9yIFttZWRpYSB0eXBlIHJhbmdlXShodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNzIzMSNhcHBlbmRpeC1EKSBvZiB0aGUKcmVxdWVzdCBib2R5LiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlcXVlc3RCb2R5YF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIGtleQpvZiBbYGNvbnRlbnRgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVxdWVzdC1ib2R5LW9iamVjdCkgZmllbGQKb2YgUmVxdWVzdCBCb2R5IG9iamVjdC4KClRoZSBkZWZhdWx0IHZhbHVlIGlzIGAiYXBwbGljYXRpb24vanNvbiJgLgoKfCBQb3NzaWJsZSB0eXBlcyB8IEV4YW1wbGVzICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgImFwcGxpY2F0aW9uL3htbCJgIHwKCiMjIyMgYm9keV9yZXF1aXJlZAoKRGV0ZXJtaW5lcyBpZiB0aGUgcmVxdWVzdCBib2R5IGlzIHJlcXVpcmVkIGluIHRoZSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS4KVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2ByZXF1ZXN0Qm9keWBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYHJlcXVpcmVkYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3JlcXVlc3QtYm9keS1vYmplY3QpCmZpZWxkIG9mIFJlcXVlc3QgQm9keSBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGBib29sYCAgICAgICAgIHwgYFRydWVgICAgfAoKIyMjIyBib2R5X2Rlc2NyaXB0aW9uCgpBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSByZXF1ZXN0IGJvZHkuIFRoaXMgY291bGQgY29udGFpbiBleGFtcGxlcyBvZgp1c2UuIFtDb21tb25NYXJrIHN5bnRheF0oaHR0cHM6Ly9zcGVjLmNvbW1vbm1hcmsub3JnKSBNQVkgYmUgdXNlZCBmb3IgcmljaCB0ZXh0CnJlcHJlc2VudGF0aW9uLiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlcXVlc3RCb2R5YF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIFtgZGVzY3JpcHRpb25gXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVxdWVzdC1ib2R5LW9iamVjdCkKZmllbGQgb2YgUmVxdWVzdCBCb2R5IG9iamVjdC4KCnwgUG9zc2libGUgdHlwZXMgfCBFeGFtcGxlcyAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfAp8IGBzdHJgICAgICAgICAgIHwgYCJBIGJvb2siYCB8CgojIyMjIGJvZHlfZXhhbXBsZQoKRXhhbXBsZSBvZiB0aGUgcmVxdWVzdCBib2R5LiBUaGUgZXhhbXBsZSBvYmplY3QgU0hPVUxEIGJlIGluIHRoZSBjb3JyZWN0IGZvcm1hdAphcyBzcGVjaWZpZWQgYnkgdGhlIG1lZGlhIHR5cGUuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVxdWVzdEJvZHlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QsIG9yIG1vcmUgcHJlY2lzZWx5LAp0aGUgW2BleGFtcGxlYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI21lZGlhLXR5cGUtb2JqZWN0KSBmaWVsZApvZgpNZWRpYSBUeXBlIG9iamVjdCBpbnNpZGUKdGhlIHZhbHVlCm9mIFtgY29udGVudGBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNyZXF1ZXN0LWJvZHktb2JqZWN0KSBmaWVsZApvZiBSZXF1ZXN0IEJvZHkgb2JqZWN0LgoKPHRhYmxlPgo8dHI+Cjx0aD5Qb3NzaWJsZSB0eXBlczwvdGg+Cjx0aD5FeGFtcGxlczwvdGg+CjwvdHI+Cjx0cj4KPHRkPiA8Y29kZT5Bbnk8L2NvZGU+IDwvdGQ+Cjx0ZD4KCmBgYHB5dGhvbgp7CiAgICAidGl0bGUiOiAiQW5uYSBLYXJlbmluYSIsCiAgICAiYXV0aG9yIjogIkxlbyBUb2xzdG95IiwKICAgICJ5ZWFyIjogMTg3NywKfQpgYGAKCjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMjIGJvZHlfZXhhbXBsZXMKCkV4YW1wbGVzIG9mIHRoZSByZXF1ZXN0IGJvZHkuIEVhY2ggZXhhbXBsZSBvYmplY3QgU0hPVUxEIG1hdGNoIHRoZSBtZWRpYSB0eXBlCmFuZCBzcGVjaWZpZWQgc2NoZW1hIGlmIHByZXNlbnQuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVxdWVzdEJvZHlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QsIG9yIG1vcmUgcHJlY2lzZWx5LAp0aGUgW2BleGFtcGxlc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNtZWRpYS10eXBlLW9iamVjdCkgZmllbGQKb2YKTWVkaWEgVHlwZSBvYmplY3QgaW5zaWRlCnRoZSB2YWx1ZQpvZiBbYGNvbnRlbnRgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVxdWVzdC1ib2R5LW9iamVjdCkgZmllbGQKb2YgUmVxdWVzdCBCb2R5IG9iamVjdC4KClRoZSB2YWx1ZXMgb2YgdGhpcyBkaWN0aW9uYXJ5IGNvdWxkIGJlIGVpdGhlciBleGFtcGxlcyB0aGVtc2VsdmVzLApvciBgb3BlbmFwaWZ5LmNvcmUub3BlbmFwaS5tb2RlbHMuRXhhbXBsZWAgb2JqZWN0cy4gSW4gdGhlIGxhdHRlciBjYXNlLApleHRlbmRlZCBpbmZvcm1hdGlvbiBhYm91dCBleGFtcGxlcywgc3VjaCBhcyBhIHN1bW1hcnkgYW5kIGRlc2NyaXB0aW9uLCBjYW4gYmUKYWRkZWQgdG8gdGhlIFtFeGFtcGxlXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjZXhhbXBsZS1vYmplY3QpCm9iamVjdC4KCjx0YWJsZT4KPHRyPgo8dGg+UG9zc2libGUgdHlwZXM8L3RoPgo8dGg+RXhhbXBsZXM8L3RoPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+TWFwcGluZ1tzdHIsIEFueV08L2NvZGU+IDwvdGQ+Cjx0ZD4KCmBgYHB5dGhvbgp7CiAgICAiQW5uYSBLYXJlbmluYSI6IHsKICAgICAgICAidGl0bGUiOiAiQW5uYSBLYXJlbmluYSIsCiAgICAgICAgImF1dGhvciI6ICJMZW8gVG9sc3RveSIsCiAgICAgICAgInllYXIiOiAxODc3LAogICAgfQp9CmBgYAoKPC90ZD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBFeGFtcGxlXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsKICAgICJBbm5hIEthcmVuaW5hIjogRXhhbXBsZSgKICAgICAgICB2YWx1ZT17CiAgICAgICAgICAgICJ0aXRsZSI6ICJBbm5hIEthcmVuaW5hIiwKICAgICAgICAgICAgImF1dGhvciI6ICJMZW8gVG9sc3RveSIsCiAgICAgICAgICAgICJ5ZWFyIjogMTg3NywKICAgICAgICB9LAogICAgICAgIHN1bW1hcnk9IlRoZSBib29rICdBbm5hIEthcmVuaW5hJyIsCiAgICApCn0KYGBgCgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKIyMjIyBxdWVyeV9wYXJhbXMKCkRpY3Rpb25hcnkgb2YgcXVlcnkgcGFyYW1ldGVycyBhcHBsaWNhYmxlIGZvciB0aGUgb3BlcmF0aW9uLCB3aGVyZSB0aGUga2V5IGlzCnRoZSBwYXJhbWV0ZXIgbmFtZSBhbmQgdGhlIHZhbHVlIGNhbiBiZSBlaXRoZXIgYSBQeXRob24gZGF0YSB0eXBlIG9yCmEgYFF1ZXJ5UGFyYW1gIG9iamVjdC4KCkluIHRoZSBmaXJzdCBjYXNlIGl0IGlzIHRoZSBQeXRob24gZGF0YSB0eXBlIGZvciB0aGUgcXVlcnkgcGFyYW1ldGVyIGZvciB3aGljaAp0aGUgSlNPTiBTY2hlbWEgd2lsbCBiZSBidWlsdC4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2BwYXJhbWV0ZXJzYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIFtgc2NoZW1hYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3BhcmFtZXRlci1vYmplY3QpIGZpZWxkIG9mClBhcmFtZXRlciBvYmplY3QuCgpJbiB0aGUgc2Vjb25kIGNhc2UgaXQgaXMgYG9wZW5hcGlmeS5jb3JlLm1vZGVscy5RdWVyeVBhcmFtYCBvYmplY3QgdGhhdCBjYW4KaGF2ZSBleHRlbmRlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFyYW1ldGVyLCBzdWNoIGFzIGEgZGVmYXVsdCB2YWx1ZSwKZGVwcmVjYXRpb24gbWFya2VyLCBleGFtcGxlcyBldGMuCgo8dGFibGU+Cjx0cj4KPHRoPlBvc3NpYmxlIHR5cGVzPC90aD4KPHRoPkV4YW1wbGVzPC90aD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBUeXBlXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsiY291bnQiOiBpbnR9CmBgYAoKPC90ZD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBRdWVyeVBhcmFtXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsKICAgICJjb3VudCI6IFF1ZXJ5UGFyYW0oCiAgICAgICAgdmFsdWVfdHlwZT1pbnQsCiAgICAgICAgZGVmYXVsdD0xMCwKICAgICAgICByZXF1aXJlZD1UcnVlLAogICAgICAgIGRlc2NyaXB0aW9uPSJMaW1pdHMgdGhlIG51bWJlciBvZiBib29rcyByZXR1cm5lZCIsCiAgICAgICAgZGVwcmVjYXRlZD1GYWxzZSwKICAgICAgICBhbGxvd0VtcHR5VmFsdWU9RmFsc2UsCiAgICAgICAgZXhhbXBsZT00MiwKICAgICkKfQpgYGAKCjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMgcGF0aF9wYXJhbXMKCkRpY3Rpb25hcnkgb2YgcGF0aCBwYXJhbWV0ZXJzIGFwcGxpY2FibGUgZm9yIHRoZSBvcGVyYXRpb24sIHdoZXJlIHRoZSBrZXkgaXMKdGhlIHBhcmFtZXRlciBuYW1lIGFuZCB0aGUgdmFsdWUgY2FuIGJlIGVpdGhlciBhIFB5dGhvbiBkYXRhIHR5cGUgb3IKYSBgUGF0aFBhcmFtYCBvYmplY3QuCgpJbiB0aGUgZmlyc3QgY2FzZSBpdCBpcyB0aGUgUHl0aG9uIGRhdGEgdHlwZSBmb3IgdGhlIHBhdGggcGFyYW1ldGVyIGZvciB3aGljaAp0aGUgSlNPTiBTY2hlbWEgd2lsbCBiZSBidWlsdC4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2BwYXJhbWV0ZXJzYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIFtgc2NoZW1hYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3BhcmFtZXRlci1vYmplY3QpIGZpZWxkIG9mClBhcmFtZXRlciBvYmplY3QuCgpJbiB0aGUgc2Vjb25kIGNhc2UgaXQgaXMgYG9wZW5hcGlmeS5jb3JlLm1vZGVscy5QYXRoUGFyYW1gIG9iamVjdCB0aGF0IGNhbgpoYXZlIGV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwYXJhbWV0ZXIsIHN1Y2ggYXMgYSBkZXNjcmlwdGlvbiwgZXhhbXBsZXMuCgo8dGFibGU+Cjx0cj4KPHRoPlBvc3NpYmxlIHR5cGVzPC90aD4KPHRoPkV4YW1wbGVzPC90aD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBUeXBlXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsiaWQiOiBVVUlEfQpgYGAKCjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPiA8Y29kZT5NYXBwaW5nW3N0ciwgUGF0aFBhcmFtXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsKICAgICJpZCI6IFBhdGhQYXJhbSgKICAgICAgICB2YWx1ZV90eXBlPVVVSUQsCiAgICAgICAgZGVzY3JpcHRpb249IklEIG9mIHRoZSBib29rIiwKICAgICAgICBleGFtcGxlPSJlYWI5ZDY2ZC00MzE3LTQ2NGEtYTk5NS01MTBiZDZlMjE0OGYiLAogICAgKQp9CmBgYAoKPC90ZD4KPC90cj4KPC90YWJsZT4KCiMjIyMgaGVhZGVycwoKRGljdGlvbmFyeSBvZiByZXF1ZXN0IGhlYWRlcnMgYXBwbGljYWJsZSBmb3IgdGhlIG9wZXJhdGlvbiwgd2hlcmUgdGhlIGtleSBpcwp0aGUgaGVhZGVyIG5hbWUgYW5kIHRoZSB2YWx1ZSBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEgYEhlYWRlcmAgb2JqZWN0LgoKSW4gdGhlIGZpcnN0IGNhc2UgaXQgaXMgdGhlIGhlYWRlciBkZXNjcmlwdGlvbi4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2BwYXJhbWV0ZXJzYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIFtgZGVzY3JpcHRpb25gXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcGFyYW1ldGVyLW9iamVjdCkKZmllbGQgb2YgUGFyYW1ldGVyIG9iamVjdC4KCkluIHRoZSBzZWNvbmQgY2FzZSBpdCBpcyBgb3BlbmFwaWZ5LmNvcmUubW9kZWxzLkhlYWRlcmAgb2JqZWN0IHRoYXQgY2FuIGhhdmUKZXh0ZW5kZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhlYWRlciwgc3VjaCBhcyBhIGRlc2NyaXB0aW9uLCBkZXByZWNhdGlvbgptYXJrZXIsIGV4YW1wbGVzIGV0Yy4KCjx0YWJsZT4KPHRyPgo8dGg+UG9zc2libGUgdHlwZXM8L3RoPgo8dGg+RXhhbXBsZXM8L3RoPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+TWFwcGluZ1tzdHIsIHN0cl08L2NvZGU+IDwvdGQ+Cjx0ZD4KCmBgYHB5dGhvbgp7IlgtUmVxdWVzdGVkLVdpdGgiOiAiSW5mb3JtYXRpb24gYWJvdXQgdGhlIGNyZWF0aW9uIG9mIHRoZSByZXF1ZXN0In0KYGBgCgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+TWFwcGluZ1tzdHIsIEhlYWRlcl08L2NvZGU+IDwvdGQ+Cjx0ZD4KCmBgYHB5dGhvbgp7CiAgICAiWC1SZXF1ZXN0ZWQtV2l0aCI6IEhlYWRlcigKICAgICAgICBkZXNjcmlwdGlvbj0iSW5mb3JtYXRpb24gYWJvdXQgdGhlIGNyZWF0aW9uIG9mIHRoZSByZXF1ZXN0IiwKICAgICAgICByZXF1aXJlZD1UcnVlLAogICAgICAgIHZhbHVlX3R5cGU9c3RyLAogICAgICAgIGRlcHJlY2F0ZWQ9RmFsc2UsCiAgICAgICAgYWxsb3dFbXB0eVZhbHVlPUZhbHNlLAogICAgICAgIGV4YW1wbGU9IlhNTEh0dHBSZXF1ZXN0IiwKICAgICkKfQpgYGAKCjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMjIGNvb2tpZXMKCkRpY3Rpb25hcnkgb2YgcmVxdWVzdCBjb29raWVzIGFwcGxpY2FibGUgZm9yIHRoZSBvcGVyYXRpb24sIHdoZXJlIHRoZSBrZXkgaXMKdGhlIGNvb2tpZSBuYW1lIGFuZCB0aGUgdmFsdWUgY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhIGBDb29raWVgIG9iamVjdC4KCkluIHRoZSBmaXJzdCBjYXNlIGl0IGlzIHRoZSBjb29raWUgZGVzY3JpcHRpb24uIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcGFyYW1ldGVyc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYGRlc2NyaXB0aW9uYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3BhcmFtZXRlci1vYmplY3QpCmZpZWxkIG9mIFBhcmFtZXRlciBvYmplY3QuCgpJbiB0aGUgc2Vjb25kIGNhc2UgaXQgaXMgYG9wZW5hcGlmeS5jb3JlLm1vZGVscy5Db29raWVgIG9iamVjdCB0aGF0IGNhbiBoYXZlCmV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb29raWUsIHN1Y2ggYXMgYSBkZXNjcmlwdGlvbiwgZGVwcmVjYXRpb24KbWFya2VyLCBleGFtcGxlcyBldGMuCgo8dGFibGU+Cjx0cj4KPHRoPlBvc3NpYmxlIHR5cGVzPC90aD4KPHRoPkV4YW1wbGVzPC90aD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBzdHJdPC9jb2RlPiA8L3RkPgo8dGQ+CgpgYGBweXRob24KeyJfX2dhIjogIkEgcmFuZG9tbHkgZ2VuZXJhdGVkIG51bWJlciBhcyBhIGNsaWVudCBJRCJ9CmBgYAoKPC90ZD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBDb29raWVdPC9jb2RlPiA8L3RkPgo8dGQ+CgpgYGBweXRob24KewogICAgIl9fZ2EiOiBDb29raWUoCiAgICAgICAgZGVzY3JpcHRpb249IkEgcmFuZG9tbHkgZ2VuZXJhdGVkIG51bWJlciBhcyBhIGNsaWVudCBJRCIsCiAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKICAgICAgICB2YWx1ZV90eXBlPXN0ciwKICAgICAgICBkZXByZWNhdGVkPUZhbHNlLAogICAgICAgIGFsbG93RW1wdHlWYWx1ZT1GYWxzZSwKICAgICAgICBleGFtcGxlPSIxLjIuMzQ1Njc4OTAxLjIzNDU2Nzg5MDEiLAogICAgKQp9CmBgYAoKPC90ZD4KPC90cj4KPC90YWJsZT4KCiMjIyBSZXNwb25zZQoKRGVjb3JhdG9yIGByZXNwb25zZV9zY2hlbWFgIGRlc2NyaWJlcyBhIHNpbmdsZSByZXNwb25zZSBmcm9tIHRoZSBBUEkgT3BlcmF0aW9uLgpSZXNwb25zZSBjYW4gaGF2ZSBhbiBIVFRQIGNvZGUsIGJvZHkgYW5kIGhlYWRlcnMuIElmIHRoZSBPcGVyYXRpb24gc3VwcG9ydHMKbW9yZSB0aGFuIG9uZSByZXNwb25zZSwgdGhlbiB0aGUgZGVjb3JhdG9yIG11c3QgYmUgYXBwbGllZCBtdWx0aXBsZSB0aW1lcyB0bwpjb3ZlciBlYWNoIG9mIHRoZW0uCgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkgaW1wb3J0IHJlc3BvbnNlX3NjaGVtYQpgYGAKCiMjIyMgYm9keQoKQSBQeXRob24gZGF0YSB0eXBlIGZvciB0aGUgcmVzcG9uc2UgYm9keSBmb3Igd2hpY2gKdGhlIEpTT04gU2NoZW1hIHdpbGwgYmUgYnVpbHQuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVzcG9uc2VzYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIFtgc2NoZW1hYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI21lZGlhLXR5cGUtb2JqZWN0KSBmaWVsZCBvZgpNZWRpYSBUeXBlIG9iamVjdCBpbnNpZGUgdGhlIHZhbHVlCm9mIFtgY29udGVudGBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNyZXNwb25zZS1vYmplY3QpIGZpZWxkCm9mIFJlc3BvbnNlIG9iamVjdC4KCnwgUG9zc2libGUgdHlwZXMgfCBFeGFtcGxlcyB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgYFR5cGVgICAgICAgICAgfCBgQm9va2AgICB8CgojIyMjIGh0dHBfY29kZQoKQW4gSFRUUCBjb2RlIG9mIHRoZSByZXNwb25zZS4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2ByZXNwb25zZXNgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QsIG9yIG1vcmUgcHJlY2lzZWx5LCB0aGUgcGF0dGVybmVkIGtleSBpbgp0aGUgW1Jlc3BvbnNlc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3Jlc3BvbnNlcy1vYmplY3QpIG9iamVjdC4KCnwgUG9zc2libGUgdHlwZXMgfCBFeGFtcGxlcyB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgIjIwMCJgICB8CnwgYGludGAgICAgICAgICAgfCBgNDAwYCAgICB8CgojIyMjIG1lZGlhX3R5cGUKCkEgbWVkaWEgdHlwZQpvciBbbWVkaWEgdHlwZSByYW5nZV0oaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzcyMzEjYXBwZW5kaXgtRCkgb2YgdGhlCnJlc3BvbnNlIGJvZHkuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVzcG9uc2VzYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwgdGhlIGtleQpvZiBbYGNvbnRlbnRgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVzcG9uc2Utb2JqZWN0KSBmaWVsZCBvZgpSZXNwb25zZSBvYmplY3QuCgpUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgImFwcGxpY2F0aW9uL2pzb24iYC4KCnwgUG9zc2libGUgdHlwZXMgfCBFeGFtcGxlcyAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IGBzdHJgICAgICAgICAgIHwgYCJhcHBsaWNhdGlvbi94bWwiYCB8CgojIyMjCgojIyMjIGRlc2NyaXB0aW9uCgpBIGRlc2NyaXB0aW9uIG9mIHRoZSByZXNwb25zZS4gW0NvbW1vbk1hcmsgc3ludGF4XShodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcpCk1BWSBiZSB1c2VkIGZvciByaWNoIHRleHQgcmVwcmVzZW50YXRpb24uIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVzcG9uc2VzYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIFtgZGVzY3JpcHRpb25gXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVzcG9uc2Utb2JqZWN0KSBmaWVsZApvZiBSZXNwb25zZSBvYmplY3QuCgoKfCBQb3NzaWJsZSB0eXBlcyB8IEV4YW1wbGVzICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBgc3RyYCAgICAgICAgICB8IGAiSW52YWxpZCBJRCBTdXBwbGllZCJgIHwKCiMjIyMgaGVhZGVycwoKRGljdGlvbmFyeSBvZiByZXNwb25zZSBoZWFkZXJzIGFwcGxpY2FibGUgZm9yIHRoZSBvcGVyYXRpb24sIHdoZXJlIHRoZSBrZXkgaXMKdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgdmFsdWUgY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhIGBIZWFkZXJgIG9iamVjdC4KCkluIHRoZSBmaXJzdCBjYXNlIGl0IGlzIHRoZSBoZWFkZXIgZGVzY3JpcHRpb24uIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVzcG9uc2VzYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIFtgZGVzY3JpcHRpb25gXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjaGVhZGVyLW9iamVjdCkKZmllbGQgb2YgSGVhZGVyIG9iamVjdC4KCkluIHRoZSBzZWNvbmQgY2FzZSBpdCBpcyBgb3BlbmFwaWZ5LmNvcmUubW9kZWxzLkhlYWRlcmAgb2JqZWN0IHRoYXQgY2FuIGhhdmUKZXh0ZW5kZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhlYWRlciwgc3VjaCBhcyBhIGRlc2NyaXB0aW9uLCBkZXByZWNhdGlvbgptYXJrZXIsIGV4YW1wbGVzIGV0Yy4KCjx0YWJsZT4KPHRyPgo8dGg+UG9zc2libGUgdHlwZXM8L3RoPgo8dGg+RXhhbXBsZXM8L3RoPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+TWFwcGluZ1tzdHIsIHN0cl08L2NvZGU+IDwvdGQ+Cjx0ZD4KCmBgYHB5dGhvbgp7IkNvbnRlbnQtTG9jYXRpb24iOiAiQW4gYWx0ZXJuYXRlIGxvY2F0aW9uIGZvciB0aGUgcmV0dXJuZWQgZGF0YSJ9CmBgYAoKPC90ZD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBIZWFkZXJdPC9jb2RlPiA8L3RkPgo8dGQ+CgpgYGBweXRob24KewogICAgIkNvbnRlbnQtTG9jYXRpb24iOiBIZWFkZXIoCiAgICAgICAgZGVzY3JpcHRpb249IkFuIGFsdGVybmF0ZSBsb2NhdGlvbiBmb3IgdGhlIHJldHVybmVkIGRhdGEiLAogICAgICAgIGV4YW1wbGU9Ii9pbmRleC5odG0iLAogICAgKQp9CmBgYAoKPC90ZD4KPC90cj4KPC90YWJsZT4KCiMjIyMgZXhhbXBsZQoKRXhhbXBsZSBvZiB0aGUgcmVzcG9uc2UgYm9keS4gVGhlIGV4YW1wbGUgb2JqZWN0IFNIT1VMRCBiZSBpbiB0aGUgY29ycmVjdCBmb3JtYXQKYXMgc3BlY2lmaWVkIGJ5IHRoZSBtZWRpYSB0eXBlLiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlc3BvbnNlc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYGV4YW1wbGVgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjbWVkaWEtdHlwZS1vYmplY3QpIGZpZWxkCm9mIE1lZGlhIFR5cGUgb2JqZWN0IGluc2lkZSB0aGUgdmFsdWUKb2YgW2Bjb250ZW50YF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3Jlc3BvbnNlLW9iamVjdCkgZmllbGQgb2YKUmVzcG9uc2Ugb2JqZWN0LgoKPHRhYmxlPgo8dHI+Cjx0aD5Qb3NzaWJsZSB0eXBlczwvdGg+Cjx0aD5FeGFtcGxlczwvdGg+CjwvdHI+Cjx0cj4KPHRkPiA8Y29kZT5Bbnk8L2NvZGU+IDwvdGQ+Cjx0ZD4KCmBgYHB5dGhvbgp7CiAgICAidGl0bGUiOiAiQW5uYSBLYXJlbmluYSIsCiAgICAiYXV0aG9yIjogIkxlbyBUb2xzdG95IiwKICAgICJ5ZWFyIjogMTg3NywKfQpgYGAKCjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMjIGV4YW1wbGVzCgpFeGFtcGxlcyBvZiB0aGUgcmVzcG9uc2UgYm9keS4gRWFjaCBleGFtcGxlIG9iamVjdCBTSE9VTEQgbWF0Y2ggdGhlIG1lZGlhIHR5cGUKYW5kIHNwZWNpZmllZCBzY2hlbWEgaWYgcHJlc2VudC4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2ByZXNwb25zZXNgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QsIG9yIG1vcmUgcHJlY2lzZWx5LAp0aGUgW2BleGFtcGxlc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNtZWRpYS10eXBlLW9iamVjdCkgZmllbGQKb2YgTWVkaWEgVHlwZSBvYmplY3QgaW5zaWRlIHRoZSB2YWx1ZQpvZiBbYGNvbnRlbnRgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVzcG9uc2Utb2JqZWN0KSBmaWVsZCBvZgpSZXNwb25zZSBvYmplY3QuCgpUaGUgdmFsdWVzIG9mIHRoaXMgZGljdGlvbmFyeSBjb3VsZCBiZSBlaXRoZXIgZXhhbXBsZXMgdGhlbXNlbHZlcywKb3IgYG9wZW5hcGlmeS5jb3JlLm9wZW5hcGkubW9kZWxzLkV4YW1wbGVgIG9iamVjdHMuIEluIHRoZSBsYXR0ZXIgY2FzZSwKZXh0ZW5kZWQgaW5mb3JtYXRpb24gYWJvdXQgZXhhbXBsZXMsIHN1Y2ggYXMgYSBzdW1tYXJ5IGFuZCBkZXNjcmlwdGlvbiwgY2FuIGJlCmFkZGVkIHRvIHRoZSBbRXhhbXBsZV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI2V4YW1wbGUtb2JqZWN0KQpvYmplY3QuCgo8dGFibGU+Cjx0cj4KPHRoPlBvc3NpYmxlIHR5cGVzPC90aD4KPHRoPkV4YW1wbGVzPC90aD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBBbnldPC9jb2RlPiA8L3RkPgo8dGQ+CgpgYGBweXRob24KewogICAgIkFubmEgS2FyZW5pbmEiOiB7CiAgICAgICAgInRpdGxlIjogIkFubmEgS2FyZW5pbmEiLAogICAgICAgICJhdXRob3IiOiAiTGVvIFRvbHN0b3kiLAogICAgICAgICJ5ZWFyIjogMTg3NywKICAgIH0KfQpgYGAKCjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPiA8Y29kZT5NYXBwaW5nW3N0ciwgRXhhbXBsZV08L2NvZGU+IDwvdGQ+Cjx0ZD4KCmBgYHB5dGhvbgp7CiAgICAiQW5uYSBLYXJlbmluYSI6IEV4YW1wbGUoCiAgICAgICAgdmFsdWU9ewogICAgICAgICAgICAidGl0bGUiOiAiQW5uYSBLYXJlbmluYSIsCiAgICAgICAgICAgICJhdXRob3IiOiAiTGVvIFRvbHN0b3kiLAogICAgICAgICAgICAieWVhciI6IDE4NzcsCiAgICAgICAgfSwKICAgICAgICBzdW1tYXJ5PSJUaGUgYm9vayAnQW5uYSBLYXJlbmluYSciLAogICAgKQp9CmBgYAoKPC90ZD4KPC90cj4KPC90YWJsZT4KCiMjIyBTZWN1cml0eSByZXF1aXJlbWVudHMKCkRlY29yYXRvciBgc2VjdXJpdHlfcmVxdWlyZW1lbnRzYApkZWNsYXJlcyBbc2VjdXJpdHkgbWVjaGFuaXNtc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3NlY3VyaXR5UmVxdWlyZW1lbnRPYmplY3QpCnRoYXQgY2FuIGJlIHVzZWQgZm9yIHRoZSBvcGVyYXRpb24uCgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkgaW1wb3J0IHNlY3VyaXR5X3JlcXVpcmVtZW50cwpgYGAKClRoaXMgZGVjb3JhdG9yIHRha2VzIG9uZSBvciBtb3JlIGBTZWN1cml0eVJlcXVpcmVtZW50YCBtYXBwaW5ncywgd2hlcmUgdGhlIGtleQppcyB0aGUgcmVxdWlyZW1lbnQgbmFtZSBhbmQgdGhlIHZhbHVlIGlzIGBTZWN1cml0eVNjaGVtZWAgb2JqZWN0LiBUaGVyZSBhcmUKY2xhc3NlcyBmb3IKZWFjaCBbc2VjdXJpdHkgc2NoZW1lXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjc2VjdXJpdHktc2NoZW1lLW9iamVjdCkKd2hpY2ggY2FuIGJlIGltcG9ydGVkIGFzIGZvbGxvd3M6CgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkuY29yZS5vcGVuYXBpLm1vZGVscyBpbXBvcnQgKAogICAgQVBJS2V5U2VjdXJpdHlTY2hlbWUsCiAgICBIVFRQU2VjdXJpdHlTY2hlbWUsCiAgICBPQXV0aDJTZWN1cml0eVNjaGVtZSwKICAgIE9wZW5JRENvbm5lY3RTZWN1cml0eVNjaGVtZSwKKQpgYGAKCkZvciBleGFtcGxlLCB0byBhZGQgYXV0aG9yaXphdGlvbiBieSB0b2tlbiwgeW91IGNhbiB3cml0ZSBzb21ldGhpbmcgbGlrZSB0aGlzOgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5IGltcG9ydCBzZWN1cml0eV9yZXF1aXJlbWVudHMKZnJvbSBvcGVuYXBpZnkuY29yZS5vcGVuYXBpLm1vZGVscyBpbXBvcnQgKAogICAgQVBJS2V5U2VjdXJpdHlTY2hlbWUsCiAgICBTZWN1cml0eVNjaGVtZUFQSUtleUxvY2F0aW9uLAopCgpYQXV0aFRva2VuU2VjdXJpdHlSZXF1aXJlbWVudCA9IHsKICAgICJ4LWF1dGgtdG9rZW4iOiBBUElLZXlTZWN1cml0eVNjaGVtZSgKICAgICAgICBuYW1lPSJYLUF1aC1Ub2tlbiIsCiAgICAgICAgbG9jYXRpb249U2VjdXJpdHlTY2hlbWVBUElLZXlMb2NhdGlvbi5IRUFERVIsCiAgICApCn0KCkBzZWN1cml0eV9yZXF1aXJlbWVudHMoWEF1dGhUb2tlblNlY3VyaXR5UmVxdWlyZW1lbnQpCmRlZiBzZWN1cmVfb3BlcmF0aW9uKCk6CiAgICAuLi4KYGBgCgpBbmQgdGhlIGdlbmVyYXRlZCBzcGVjaWZpY2F0aW9uIGRvY3VtZW50IHdpbGwgbG9vayBsaWtlIHRoaXM6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMS4wCmluZm86CiAgdGl0bGU6IEFQSQogIHZlcnNpb246IDEuMC4wCnBhdGhzOgogIC9zZWN1cmVfcGF0aDoKICAgIGdldDoKICAgICAgc2VjdXJpdHk6CiAgICAgIC0geC1hdXRoLXRva2VuOiBbXQpjb21wb25lbnRzOgogIHNlY3VyaXR5U2NoZW1lczoKICAgIHgtYXV0aC10b2tlbjoKICAgICAgdHlwZTogYXBpS2V5CiAgICAgIG5hbWU6IFgtQXVoLVRva2VuCiAgICAgIGluOiBoZWFkZXIKYGBgCgpQbHVnaW5zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpTb21lIGFzcGVjdHMgb2YgY3JlYXRpbmcgYW4gT3BlbkFQSSBkb2N1bWVudCBjYW4gYmUgY2hhbmdlZCB1c2luZyBwbHVnaW5zLgpUaGVyZSBpcyBgb3BlbmFwaWZ5LnBsdWdpbnMuQmFzZVBsdWdpbmAgYmFzZSBjbGFzcywgd2hpY2ggaGFzIGFsbCB0aGUgbWV0aG9kcwphdmFpbGFibGUgZm9yIGRlZmluaXRpb24uIElmIHlvdSB3YW50IHRvIHdyaXRlIGEgcGx1Z2luIHRoYXQsIGZvciBleGFtcGxlLCB3aWxsCm9ubHkgZ2VuZXJhdGUgc2NoZW1hIGZvciByZXF1ZXN0IHBhcmFtZXRlcnMsIHRoZW4gaXQgd2lsbCBiZSBlbm91Z2ggZm9yIHlvdSB0bwpkZWZpbmUgb25seSBvbmUgYXBwcm9wcmlhdGUgbWV0aG9kLCBhbmQgbGVhdmUgdGhlIHJlc3Qgbm9uLWltcGxlbWVudGVkLgpQbHVnaW4gc3lzdGVtIHdvcmtzIGJ5IGdvaW5nIHRocm91Z2ggYWxsIHJlZ2lzdGVyZWQgcGx1Z2lucyBhbmQgY2FsbGluZwp0aGUgYXBwcm9wcmlhdGUgbWV0aG9kLiBJZiBzdWNoIGEgbWV0aG9kIHJhaXNlcyBgTm90SW1wbGVtZW50ZWRFcnJvcmAgb3IKcmV0dXJucyBgTm9uZWAsIGl0IGlzIGFzc3VtZWQgdGhhdCB0aGlzIHBsdWdpbiBkb2Vzbid0IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeQpmdW5jdGlvbmFsaXR5LiBJdGVyYXRpb24gc3RvcHMgYXQgdGhlIGZpcnN0IHBsdWdpbiB0aGF0IHJldHVybmVkIHNvbWV0aGluZwpvdGhlciB0aGFuIGBOb25lYC4KClBsdWdpbnMgYXJlIHJlZ2lzdGVyZWQgdmlhIHRoZSBgcGx1Z2luc2AgYXJndW1lbnQgb2YgdGhlIGBidWlsZF9zcGVjYCBmdW5jdGlvbjoKCmBgYHB5dGhvbgpmcm9tIG9wZW5hcGlmeSBpbXBvcnQgQmFzZVBsdWdpbiwgYnVpbGRfc3BlYwoKCmNsYXNzIE15UGx1Z2luMShCYXNlUGx1Z2luKToKICAgIGRlZiBzY2hlbWFfaGVscGVyKC4uLik6CiAgICAgICAgIyByZXR1cm4gc29tZXRoaW5nIG1lYW5pbmdmdWwgaGVyZSwgc2VlIHRoZSBmb2xsb3dpbmcgY2hhcHRlcnMKICAgICAgICAuLi4KCgpidWlsZF9zcGVjKC4uLiwgcGx1Z2lucz1bTXlQbHVnaW4xKCldKQpgYGAKCiMjIyBgc2NoZW1hX2hlbHBlcmAKCk9wZW5BUEkgW1NjaGVtYV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3NjaGVtYU9iamVjdCkgb2JqZWN0CmlzIGJ1aWx0IGZyb20gcHl0aG9uIHR5cGVzIHN0b3JlZCBpbiB0aGUgYHZhbHVlX3R5cGVgIGF0dHJpYnV0ZSBvZiB0aGUKZm9sbG93aW5nIG9wZW5hcGlmeSBkYXRhY2xhc3NlcyBkZWZpbmVkIGluIGBvcGVuYXBpZnkuY29yZS5tb2RlbHNgOgoqIGBCb2R5YAoqIGBDb29raWVgCiogYEhlYWRlcmAKKiBgUXVlcnlQYXJhbWAKCk91dCBvZiB0aGUgYm94LCB0aGUgc2NoZW1hIGlzIGdlbmVyYXRlZCBieSB1c2luZwpbYG1hc2h1bWFyb2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9GYXRhbDF0eS9tYXNodW1hcm8pIGxpYnJhcnkgKHNlZSB0aGUgbm90ZQpiZWxvdyksIGJ1dCBzdXBwb3J0IGZvciB0aGlyZC1wYXJ0eSBlbnRpdHkgc2NoZW1hIGdlbmVyYXRvcnMgY2FuIGJlIGFjaGlldmVkCnRocm91Z2ggYHNjaGVtYV9oZWxwZXJgIG1ldGhvZC4gRm9yIGV4YW1wbGUsIGhlcmUncyB3aGF0IGEgcGx1Z2luIGZvciBweWRhbnRpYwptb2RlbHMgbWlnaHQgbG9vayBsaWtlOgoKYGBgcHl0aG9uCmZyb20gdHlwaW5nIGltcG9ydCBBbnkKCmZyb20gb3BlbmFwaWZ5IGltcG9ydCBCYXNlUGx1Z2luCmZyb20gb3BlbmFwaWZ5LmNvcmUubW9kZWxzIGltcG9ydCBCb2R5LCBDb29raWUsIEhlYWRlciwgUXVlcnlQYXJhbQpmcm9tIHB5ZGFudGljIGltcG9ydCBCYXNlTW9kZWwKCgpjbGFzcyBQeWRhbnRpY1NjaGVtYVBsdWdpbihCYXNlUGx1Z2luKToKICAgIGRlZiBzY2hlbWFfaGVscGVyKAogICAgICAgIHNlbGYsCiAgICAgICAgb2JqOiBCb2R5IHwgQ29va2llIHwgSGVhZGVyIHwgUXVlcnlQYXJhbSwKICAgICAgICBuYW1lOiBzdHIgfCBOb25lID0gTm9uZSwKICAgICkgLT4gZGljdFtzdHIsIEFueV0gfCBOb25lOgogICAgICAgIGlmIGlzc3ViY2xhc3Mob2JqLnZhbHVlX3R5cGUsIEJhc2VNb2RlbCk6CiAgICAgICAgICAgIHNjaGVtYSA9IG9iai52YWx1ZV90eXBlLm1vZGVsX2pzb25fc2NoZW1hKAogICAgICAgICAgICAgICAgcmVmX3RlbXBsYXRlPSIjL2NvbXBvbmVudHMvc2NoZW1hcy97bW9kZWx9IgogICAgICAgICAgICApCiAgICAgICAgICAgIHNlbGYuc3BlYy5jb21wb25lbnRzLnNjaGVtYXMudXBkYXRlKHNjaGVtYS5wb3AoIiRkZWZzIiwge30pKQogICAgICAgICAgICByZXR1cm4gc2NoZW1hCmBgYAoKPiBbIU5PVEVdXAo+IFRoZSBbYEJhc2VTY2hlbWFQbHVnaW5gXShodHRwczovL2dpdGh1Yi5jb20vRmF0YWwxdHkvb3BlbmFwaWZ5L2Jsb2IvbWFzdGVyL29wZW5hcGlmeS9jb3JlL2Jhc2VfcGx1Z2lucy5weSNMNDEtTDY0KSwKPiB3aGljaCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgYW5kIGhhcyB0aGUgbG93ZXN0IHByaW9yaXR5LCBpcyByZXNwb25zaWJsZSBmb3IKPiBnZW5lcmF0aW5nIHRoZSBzY2hlbWEuIFRoaXMgcGx1Z2luIHV0aWxpemVzIHRoZSBtYXNodW1hcm8gbGlicmFyeSBmb3Igc2NoZW1hCj4gZ2VuZXJhdGlvbiwgd2hpY2ggaW4gdHVybiBpbmNvcnBvcmF0ZXMgaXRzIG93biBbcGx1Z2luIHN5c3RlbV0oaHR0cHM6Ly9naXRodWIuY29tL0ZhdGFsMXR5L21hc2h1bWFybz90YWI9cmVhZG1lLW92LWZpbGUjanNvbi1zY2hlbWEtcGx1Z2lucyksCj4gZW5hYmxpbmcgY3VzdG9taXphdGlvbiBvZiBKU09OIFNjaGVtYSBnZW5lcmF0aW9uIGFuZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsCj4gZGF0YSB0eXBlcy4gRm9yIG1vcmUgbnVhbmNlZCBtb2RpZmljYXRpb25zLCBwYXJ0aWN1bGFybHkgd2l0aGluIG5lc3RlZCBkYXRhCj4gbW9kZWxzLCB5b3UgY2FuIGVtcGxveSBgQmFzZVNjaGVtYVBsdWdpbmAgd2l0aCBhIHNwZWNpZmllZCBsaXN0IG9mIG1hc2h1bWFybyBKU09OCj4gU2NoZW1hIHBsdWdpbnMuIFRoaXMgYXBwcm9hY2ggYWxsb3dzIGZvciBmaW5lciBjb250cm9sIG92ZXIgc2NoZW1hIGdlbmVyYXRpb24KPiB3aGVuIG5lZWRlZDoKPiBgYGBweXRob24KPiBmcm9tIG1hc2h1bWFyby5qc29uc2NoZW1hLnBsdWdpbnMgaW1wb3J0IERvY3N0cmluZ0Rlc2NyaXB0aW9uUGx1Z2luCj4KPiBmcm9tIG9wZW5hcGlmeSBpbXBvcnQgYnVpbGRfc3BlYwo+IGZyb20gb3BlbmFwaWZ5LmNvcmUuYmFzZV9wbHVnaW5zIGltcG9ydCBCYXNlU2NoZW1hUGx1Z2luCj4KPiBzcGVjID0gYnVpbGRfc3BlYygKPiAgICAgcm91dGVzPVsuLi5dLAo+ICAgICBwbHVnaW5zPVsKPiAgICAgICAgIEJhc2VTY2hlbWFQbHVnaW4oCj4gICAgICAgICAgICAgcGx1Z2lucz1bCj4gICAgICAgICAgICAgICAgIERvY3N0cmluZ0Rlc2NyaXB0aW9uUGx1Z2luKCksCj4gICAgICAgICAgICAgXQo+ICAgICAgICAgKSwKPiAgICAgXSwKPiApCj4gYGBgCgojIyMgbWVkaWFfdHlwZV9oZWxwZXIKCkEgbWVkaWEgdHlwZSBpcyB1c2VkIGluIE9wZW5BUEkgUmVxdWVzdApbQm9keV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3JlcXVlc3QtYm9keS1vYmplY3QpIGFuZApbUmVzcG9uc2VdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNyZXNwb25zZS1vYmplY3QpIG9iamVjdHMuCkJ5IGRlZmF1bHQsIGBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1gIGlzIGFwcGxpZWQgZm9yIGBieXRlc2Agb3IgYGJ5dGVhcnJheWAKdHlwZXMsIGFuZCBgYXBwbGljYXRpb24vanNvbmAgaXMgYXBwbGllZCBvdGhlcndpc2UuIFlvdSBjYW4gc3VwcG9ydCBtb3JlIG1lZGlhCnR5cGVzIG9yIG92ZXJyaWRlIGV4aXN0aW5nIG9uZXMgd2l0aCBgbWVkaWFfdHlwZV9oZWxwZXJgIG1ldGhvZC4KCkxldCdzIGltYWdpbmUgdGhhdCB5b3UgaGF2ZSBhbiBBUEkgcm91dGUgdGhhdCByZXR1cm5zIFBORyBpbWFnZXMgYXMgdGhlIGJvZHkuCllvdSBjYW4gaGF2ZSBhIHNlcGFyYXRlIG1vZGVsIGNsYXNzIHJlcHJlc2VudGluZyBpbWFnZXMsIGJ1dCB0aGUgbW9yZSBjb21tb24KY2FzZSBpcyB0byB1c2UgYHR5cGluZy5Bbm5vdGF0ZWRgIHdyYXBwZXIgZm9yIGJ5dGVzLiBIZXJlJ3Mgd2hhdCBhIHBsdWdpbiBmb3IKYGltYWdlL3BuZ2AgbWVkaWEgdHlwZSBtaWdodCBsb29rIGxpa2U6CgpgYGBweXRob24KZnJvbSB0eXBpbmcgaW1wb3J0IEFubm90YXRlZCwgQW55LCBEaWN0LCBPcHRpb25hbAoKZnJvbSBvcGVuYXBpZnkgaW1wb3J0IEJhc2VQbHVnaW4sIGJ1aWxkX3NwZWMsIHJlc3BvbnNlX3NjaGVtYQpmcm9tIG9wZW5hcGlmeS5jb3JlLm1vZGVscyBpbXBvcnQgQm9keSwgUm91dGVEZWYKCkltYWdlUE5HID0gQW5ub3RhdGVkW2J5dGVzLCAiUE5HIl0KCgpjbGFzcyBJbWFnZVBOR1BsdWdpbihCYXNlUGx1Z2luKToKICAgIGRlZiBtZWRpYV90eXBlX2hlbHBlcigKICAgICAgICBzZWxmLCBib2R5OiBCb2R5LCBzY2hlbWE6IERpY3Rbc3RyLCBBbnldCiAgICApIC0+IE9wdGlvbmFsW3N0cl06CiAgICAgICAgaWYgYm9keS52YWx1ZV90eXBlIGlzIEltYWdlUE5HOgogICAgICAgICAgICByZXR1cm4gImltYWdlL3BuZyIKCgpAcmVzcG9uc2Vfc2NoZW1hKGJvZHk9SW1hZ2VQTkcpCmRlZiBmb28oKToKICAgIC4uLgoKCnJvdXRlcyA9IFtSb3V0ZURlZigiL2ZvbyIsICJnZXQiLCBmb28pXQpzcGVjID0gYnVpbGRfc3BlYyhyb3V0ZXMsIHBsdWdpbnM9W0ltYWdlUE5HUGx1Z2luKCldKQpwcmludChzcGVjLnRvX3lhbWwoKSkKYGBgCgpUaGUgcmVzdWx0aW5nIGRvY3VtZW50IHdpbGwgY29udGFpbiBgaW1hZ2UvcG5nYCBjb250ZW50IGluIHRoZSByZXNwb25zZToKYGBgeWFtbApvcGVuYXBpOiAzLjEuMAppbmZvOgogIHRpdGxlOiBBUEkKICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAvZm9vOgogICAgZ2V0OgogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogT0sKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGltYWdlL3BuZzoKICAgICAgICAgICAgICBzY2hlbWE6IHt9CmBgYAo= readmeEtag: '"43fecb544f81b9b8c6ab4a1d89041b9081cde12c"' readmeLastModified: Mon, 08 Sep 2025 11:50:42 GMT repositoryId: 625681832 description: Framework agnostic OpenAPI Specification generation for code lovers created: '2023-04-09T21:19:19Z' updated: '2026-01-28T04:26:22Z' language: Python archived: false stars: 28 watchers: 1 forks: 0 owner: Fatal1ty logo: https://avatars.githubusercontent.com/u/323962?v=4 license: Apache-2.0 repoEtag: '"c6519917d28f2ce13be99903be843d5be357e264cea83b1e60e1c5e9e4d28152"' repoLastModified: Wed, 28 Jan 2026 04:26:22 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/skyffel/airbyte-connector-generator-poc v3: true id: 860d1acedb05489453d89925436dff89 repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KCTxwPjxpbWcgd2lkdGg9IjE2MHB4IiBzcmM9Imh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9SaE9DUVMwZTJ4OTRXWnEyZDhocGh0N0lOUlEucG5nIiAvPjwvcD4KCTxwPm1vdmluZyB5b3VyIGRhdGEgZnJvbSBhIHRvIGIsIG9uZSBzaG92ZWwgYXQgYSB0aW1lLjwvcD4KCTxwIGFsaWduPSJjZW50ZXIiPgoJCTxhIGhyZWY9IiMta2V5LWZlYXR1cmVzIj5GZWF0dXJlczwvYT4g4oCiCgkJPGEgaHJlZj0iIy1pbnN0YWxsYXRpb24iPkluc3RhbGxhdGlvbjwvYT4g4oCiCgkJPGEgaHJlZj0iIy1ob3ctdG8tdXNlIj5Ib3cgdG8gdXNlPC9hPgogICAJIDwvcD4KPC9kaXY+CgpUaGlzIGlzIGEgcHJvb2Ygb2YgY29uY2VwdCB0byBnZW5lcmF0ZSBBaXJieXRlIGxvdy1jb2RlIFlBTUwgY29ubmVjdG9ycyBmcm9tIEFQSSBkb2N1bWVudGF0aW9uLiBXZSB3YW50IHRoaXMgdG8gc2VydmUgYXMgaW5zcGlyYXRpb24gdG8gd2hhdCBjYW4gYmUgZG9uZSB3aXRoIExMTXMuIEhlcmUncyBob3cgaXQgd29ya3M6CgotIFNwZWNpZnkgYSBnb2FsLCBlLmcgIl9GZXRjaCBhbGwgcGFnZXMgcG9zdHNfIgotIFByb3ZpZGUgb25lIG9yIG1vcmUgbGlua3MgdG8gZG9jdW1lbnRhdGlvbiwgZS5nIGZvciBOb3Rpb246IFtBUEkgSW50cm9dKGh0dHBzOi8vZGV2ZWxvcGVycy5ub3Rpb24uY29tL3JlZmVyZW5jZS9pbnRybyksIFtBUEkgVmVyc2lvbmluZ10oaHR0cHM6Ly9kZXZlbG9wZXJzLm5vdGlvbi5jb20vcmVmZXJlbmNlL3ZlcnNpb25pbmcpIGFuZCBbU2VhcmNoIEVuZHBvaW50XShodHRwczovL2RldmVsb3BlcnMubm90aW9uLmNvbS9yZWZlcmVuY2UvcG9zdC1zZWFyY2gpCgpUaGlzIHdpbGwgZ2VuZXJhdGUgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW4gYW5kIGEgQWlyYnl0ZSBsb3ctY29kZSBjb25uZWN0b3IuIFRyeSBpdCEKCiMjIPCfk73vuI8gRGVtbwoKIyMjIE5vdGlvbgpodHRwczovL2dpdGh1Yi5jb20vc2t5ZmZlbC9haXJieXRlLWNvbm5lY3Rvci1nZW5lcmF0b3ItcG9jL2Fzc2V0cy8zMTM0ODk1L2Y3ZTAzZjZkLTYwZDktNDRiNi04OGVlLTNiYzBlNGJjZDMzOQoKIyMjIFBlcnBsZXhpdHkKaHR0cHM6Ly9naXRodWIuY29tL3NreWZmZWwvYWlyYnl0ZS1jb25uZWN0b3ItZ2VuZXJhdG9yLXBvYy9hc3NldHMvMjU2MjI0MTIvZTI5MjJhYWEtNGYxOS00NjA4LThmYmEtZTFlMDhjMjAxMDMzCgoKIyMg4pyFIEtleSBmZWF0dXJlcwoKLSBDby1waWxvdCBmb3IgZ2VuZXJhdGluZyBFVEwgY29kZSBmb3IgSFRUUCBBUElzCi0gU3VwcG9ydCBBaXJieXRlIGxvdy1jb2RlIFlBTUwgY29ubmVjdG9ycwotIFNjcmFwZXMgQVBJIGRvY3VtZW50YXRpb24KLSBQcm9kdWNlcyBPcGVuQVBJIHNwZWNpZmljYXRpb25zCgojIyDwn5OmIEluc3RhbGxhdGlvbgoKMS4gQ2xvbmUgdGhlIHJlcG9zaXRvcnkKCiAgIGBgYGJhc2gKICAgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9za3lmZmVsL2FpcmJ5dGUtY29ubmVjdG9yLWdlbmVyYXRvci1wb2MKICAgY2QgYWlyYnl0ZS1jb25uZWN0b3ItZ2VuZXJhdG9yLXBvYwogICBgYGAKCjIuIFNldHVwIHZpcnR1YWwgZW52aXJvbm1lbnQKCiAgIGBgYGJhc2gKICAgIyBVc2luZyB2aXJ0dWFsZW52CiAgIHZpcnR1YWxlbnYgZW52CiAgIHNvdXJjZSBlbnYvYmluL2FjdGl2YXRlCgogICAjIE9yIHVzaW5nIHZlbnYKICAgcHl0aG9uMyAtbSB2ZW52IGVudgogICBzb3VyY2UgZW52L2Jpbi9hY3RpdmF0ZQoKICAgIyBPciB1c2luZyBwb2V0cnkKICAgcG9ldHJ5IHNoZWxsCiAgIGBgYAoKMy4gSW5zdGFsbCByZXF1aXJlZCBwYWNrYWdlcwoKICAgYGBgYmFzaAogICBwb2V0cnkgaW5zdGFsbAogICBwbGF5d3JpZ2h0IGluc3RhbGwKICAgYGBgCgojIyDwn5qAIEhvdyB0byB1c2UKCkdlbmVyYXRlcyBhbiBBaXJieXRlIGxvdy1jb2RlIFlBTUwgY29ubmVjdG9yIHVzaW5nIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBwcm92aWRlZCB2aWEgVVJMcy4KCj4gU2V0IGBERUJVRz10cnVlYCBpbiBgLmVudmAgdG8gZW5hYmxlIGxvZ3MKCmBgYGJhc2gKc2t5ZmZlbCAtLWdvYWwgIjxNWSBFVEwgR09BTD4iIC0tdXJscyAiPFVSTCBET0MgMT4iIC0tdXJscyAiPFVSTCBET0MgMj4iCmBgYAoKSGVyZSB3ZSBnZW5lcmF0ZSBhIGNvbm5lY3RvciBmb3IgZXh0cmFjdGluZyBhbGwgYmxvZyBwb3N0cyBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIEp1c3RpY2UuCgpgYGBiYXNoCnNreWZmZWwgXAogICAgLS1nb2FsICJleHRyYWN0IGFsbCBibG9nIGVudHJpZXMgZnJvbSBkZXBhcnRtZW50IG9mIGp1c3RpY2UiIFwKICAgIC0tdXJscyBodHRwczovL3d3dy5qdXN0aWNlLmdvdi9kZXZlbG9wZXIvYXBpLWRvY3VtZW50YXRpb24vYXBpX3YxCmBgYAoKIyMjIPCfk6UgSW1wb3J0IHRvIEFpcmJ5dGUKCkFmdGVyIGdlbmVyYXRpbmcgdGhlIGNvbm5lY3RvciwgeW91IG5lZWQgdG8gaW1wb3J0IGl0IHRvIEFpcmJ5dGUuIEV2ZW50dWFsbHkgdGhleSBtaWdodCBleHBvc2UgYW4gQVBJIHRvIGRvIHRoaXMgcHJvZ3JhbWF0aWNhbGx5IPCfpJ4gVW50aWwgdGhlbiwgaGVyZSdzIGhvdzoKCjEuIEdvIHRvIHlvdXIgQWlyYnl0ZSB3b3Jrc3BhY2UKMi4gQ2xpY2sgb24gQnVpbGRlciBbQkVUQV0gaW4gdGhlIG1lbnUKCiAgIDxpbWcgd2lkdGg9IjIwMHB4IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9za3lmZmVsL2FpcmJ5dGUtY29ubmVjdG9yLWdlbmVyYXRvci1wb2MvYXNzZXRzLzI1NjIyNDEyLzRiN2NlMTgyLTAzYjQtNDhkNy1hOTlhLWJlYWQyODdmZjI5NyIgLz4KCjMuIENsaWNrIOKAnE5ldyBjdXN0b20gY29ubmVjdG9y4oCdIGluIHRoZSB1cHBlciByaWdodCBjb3JuZXIKCiAgIDxpbWcgd2lkdGg9IjIwMHB4IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9za3lmZmVsL2FpcmJ5dGUtY29ubmVjdG9yLWdlbmVyYXRvci1wb2MvYXNzZXRzLzI1NjIyNDEyL2Y4OWQwNjYwLTFkYzEtNGYzNy1iNDZjLWMyMmE5NGU3Y2VlMCIgLz4KCjQuIENsaWNrIOKAnEltcG9ydCBhIFlBTUzigJ0gYW5kIHNlbGVjdCB0aGUgZ2VuZXJhdGVkIGBhaXJieXRlX2Nvbm5lY3Rvci55YW1sYAoKICAgPGltZyB3aWR0aD0iMjAwcHgiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3NreWZmZWwvYWlyYnl0ZS1jb25uZWN0b3ItZ2VuZXJhdG9yLXBvYy9hc3NldHMvMjU2MjI0MTIvZGMyMTAyNDAtYjIzZC00N2IwLWEwMjQtMjZlNzA4MzRiMjhhIiAvPgoKNS4gRmlsbCBpbiB0aGUgdGVzdCB2YWx1ZXMgYW5kIHJ1biB0aGUgdGVzdAo2LiBQcmVzcyDigJxQdWJsaXNoIHRvIHdvcmtzcGFjZeKAnQo= readmeEtag: '"cb5b34a23d3565e46223887f3bfb4f1e8756ad04"' readmeLastModified: Mon, 11 Mar 2024 15:30:53 GMT repositoryId: 761669694 description: >- proof of concept to generate Airbyte low-code YAML connectors from API documentation created: '2024-02-22T09:11:10Z' updated: '2025-10-19T23:12:03Z' language: Python archived: false stars: 27 watchers: 1 forks: 2 owner: skyffel logo: https://avatars.githubusercontent.com/u/160840259?v=4 license: NOASSERTION repoEtag: '"ae21bac233536dd5f55c7e3e02fa4b8bb7eaacaaf041d34c26a24c58e2e9c4e3"' repoLastModified: Sun, 19 Oct 2025 23:12:03 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/outline/openapi v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNwZWNpZmljYXRpb24KClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyBbT3BlbkFQSSBzcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vKSBmb3IgT3V0bGluZSdzIEFQSS4KCiMjIyBEZXZlbG9wbWVudAoKSXQgaXMgcmVjb21tZW5kZWQgdG8gW2VkaXQgdGhlIHNwZWNpZmljYXRpb24gdXNpbmcgdGhlIFN3YWdnZXIgZWRpdG9yLF0oaHR0cDovL2VkaXRvci5zd2FnZ2VyLmlvLz91cmw9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL291dGxpbmUvb3BlbmFwaS9tYWluL3NwZWMzLnltbCkgd2hpY2ggd2lsbCB2YWxpZGF0ZSB0aGUgc3BlYyBhcyB5b3UgdHlwZS4gSWYgc3VnZ2VzdGluZyBjaGFuZ2VzIG9yIGZpeGVzIHRvIHRoaXMgcmVwb3NpdG9yeSBwbGVhc2UgbWFrZSBzdXJlIHRvIGluY2x1ZGUgYm90aCB0aGUganNvbiBhbmQgeW1sIHZlcnNpb25zIGluIHRoZSBQUi4gCgoKIyMjIERlcGxveW1lbnQKCkNoYW5nZXMgdG8gdGhpcyByZXBvc2l0b3J5IGFwcGVhciBhdCBbZ2V0b3V0bGluZS5jb20vZGV2ZWxvcGVyc10oaHR0cHM6Ly9nZXRvdXRsaW5lLmNvbS9kZXZlbG9wZXJzKSBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIFttYXJrZXRpbmcgd2Vic2l0ZV0oaHR0cHM6Ly9naXRodWIuY29tL291dGxpbmUvd2Vic2l0ZSkgaXMgZGVwbG95ZWQuCg== readmeEtag: '"aea3c806ec00242ad22a0e442f652ffb918d249c"' readmeLastModified: Sat, 06 Jul 2024 01:43:53 GMT repositoryId: 272337808 description: OpenAPI specification for the Outline API created: '2020-06-15T03:58:23Z' updated: '2026-02-01T14:54:17Z' language: JavaScript archived: false stars: 28 watchers: 3 forks: 11 owner: outline logo: https://avatars.githubusercontent.com/u/1765001?v=4 license: BSD-3-Clause repoEtag: '"f3fe2a62ab4a73465b9f8153a735e7c4fa39fc613ecf75c425f00717b248e69b"' repoLastModified: Sun, 01 Feb 2026 14:54:17 GMT foundInMaster: true category: - Converters - Parsers id: 859f9bdad31e9a5c13169e55d6f37e73 - source: openapi3 tags repository: https://github.com/yhnavein/swaggie v3: true id: 4dabb31099f545ae69a12182a15f3739 repositoryMetadata: base64Readme: >- PGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW46IDBweCBhdXRvIDMwcHg7IG1heC13aWR0aDogNjAwcHgiPgogIDxpbWcgc3JjPSIuL3N3YWdnaWUuc3ZnIiBhbHQ9IlN3YWdnaWUgbG9nbyI+CjwvZGl2PgoKIyBTd2FnZ2llCgohW25wbSBsYXRlc3QgdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9zd2FnZ2llKQohW05vZGVDSV0oaHR0cHM6Ly9naXRodWIuY29tL3lobmF2ZWluL3N3YWdnaWUvd29ya2Zsb3dzL05vZGVDSS9iYWRnZS5zdmcpCiFbVGVzdCBDb3ZlcmFnZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS90ZXN0X2NvdmVyYWdlLTk4JTI1LWJyaWdodGdyZWVuKQohW25wbSBkb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2R3L3N3YWdnaWUuc3ZnKQohW25wbSBpbnN0YWxsIHNpemVdKGh0dHBzOi8vcGFja2FnZXBob2JpYS5ub3cuc2gvYmFkZ2U/cD1zd2FnZ2llKQoKR2VuZXJhdGUgVHlwZXNjcmlwdCBjb2RlIGZyb20gYW4gT3BlbkFQSSAzLjAgZG9jdW1lbnQsIHNvIHRoYXQgYWNjZXNzaW5nIFJFU1QgQVBJIHJlc291cmNlcyBmcm9tIHRoZSBjbGllbnQgY29kZSBpcyBsZXNzIGVycm9yLXByb25lLCBzdGF0aWMtdHlwZWQgYW5kIGp1c3QgZWFzaWVyIHRvIHVzZSBsb25nLXRlcm0uCgpZb3UgY2FuIHRha2UgYSBsb29rIGF0IHRoZSBbRXhhbXBsZXMgc2VjdGlvbl0oI2V4YW1wbGUpIGRvd24gYmVsb3cuCgpQcm9qZWN0IGlzIGJhc2VkIGFuZCBpbnNwaXJlZCBieSBbT3BlbkFwaSBDbGllbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWtlc3RlYWQvb3BlbmFwaS1jbGllbnQpLgoKIyMjIEZlYXR1cmVzCgotIEdlbmVyYXRlIFR5cGVTY3JpcHQgY29kZSBmcm9tIE9wZW5BUEkgMy4wIHNwZWMKLSBTdXBwb3J0cyBgZmV0Y2hgLCBgYXhpb3NgLCBgeGlvcmAsIGBTV1IgKyBheGlvc2AsIGBBbmd1bGFyIDFgLCBgQW5ndWxhciAyK2AgdGVtcGxhdGVzLiBJdCdzIGZsZXhpYmxlLgotIFBvc3NpYmxlIHRvIGNyZWF0ZSB5b3VyIG93biB0ZW1wbGF0ZSB0aGF0IHdvcmtzIHdpdGggeW91ciBleGlzdGluZyBjb2RlYmFzZQotIEl0J3MgYSBkZXYgdG9vbCB0aGF0IGdlbmVyYXRlcyBjb2RlLCBzbyBpdCdzIG5vdCBhIHJ1bnRpbWUgZGVwZW5kZW5jeQotIFN1cHBvcnQgZm9yIGBhbGxPZmAsIGBvbmVPZmAsIGBhbnlPZmAgYW5kIGAkcmVmYCBpbiBzY2hlbWFzCi0gU3VwcG9ydCBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIGVudW1zCi0gU3VwcG9ydCBmb3IgZGlmZmVyZW50IGNvbnRlbnQgdHlwZXMKLSBKU0RvYyBjb21tZW50cyBmb3IgZ2VuZXJhdGVkIGNvZGUKLSBTbWFsbCBsaWJyYXJ5IHNpemUgYW5kIHZlcnkgc21hbGwgYW5kIHRyZWUtc2hha2FibGUgb3V0cHV0IHRoYXQgaXMgYWxsIHBsYWNlZCBpbiBvbmUgZmlsZQotIE9wZW5BUEkgMy4xIGlzIHBhcnRpYWxseSBzdXBwb3J0ZWQgKG1vc3RseSBlbnVtcywgbW9yZSB0byBjb21lKQoKIyMgSW5zdGFsbAoKSW4geW91ciBwcm9qZWN0CgogICAgbnBtIGluc3RhbGwgc3dhZ2dpZSAtLXNhdmUtZGV2CgpPciBnbG9iYWxseSB0byBydW4gQ0xJIGZyb20gYW55d2hlcmUKCiAgICBucG0gaW5zdGFsbCBzd2FnZ2llIC1nCgojIyBPcGVuQVBJIHZlcnNpb25zCgpTd2FnZ2llIGZyb20gdmVyc2lvbiAxLjAgc3VwcG9ydHMgT3BlbkFQSSAzLjAgKGFuZCBzb21lIGZlYXR1cmVzIG9mIDMuMSkuIFN3YWdnZXIgb3IgT3BlbkFQSSAyLjAgZG9jdW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIGFueW1vcmUsIGJ1dCB5b3UgaGF2ZSBmZXcgb3B0aW9ucyBob3cgdG8gZGVhbCB3aXRoIGl0OgoKLSAqKihwcmVmZXJyZWQpKiogRnJvbSB5b3VyIGJhY2tlbmQgc2VydmVyIGdlbmVyYXRlIE9wZW5BUEkgMy4wIHNwZWMgaW5zdGVhZCBvZiB2ZXJzaW9uIDIgKHNhbXBsZXMgYXJlIHVwZGF0ZWQgdG8gdXNlIE9wZW5BUEkgMy4wKQotIENvbnZlcnQgeW91ciBPcGVuQVBJIDIuMCBzcGVjIHRvIDMuMCB1c2luZyBbc3dhZ2dlcjJvcGVuYXBpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zd2FnZ2VyMm9wZW5hcGkpIHRvb2wgKG9yIHNvbWV0aGluZyBzaW1pbGFyKQotIElmIHlvdSBjYW4ndCBkbyB0aGF0IGZvciBhbnkgcmVhc29uLCB5b3UgY2FuIHN0aWNrIHRvIGBTd2FnZ2llIHYwLnhgLiBCdXQgdXBncmFkZSBpcyBzdWdnZXN0ZWQKClBsZWFzZSBub3RlIHRoYXQgT3BlbkFQSSAzLjAgaXMgYSBtYWpvciBzcGVjIHVwZ3JhZGUgYW5kIGl0J3MgcG9zc2libGUgdGhhdCB0aGVyZSB3aWxsIGJlIHNvbWUgYnJlYWtpbmcgY2hhbmdlcyBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUuCkkgaGF2ZSB0cmllZCBteSBiZXN0IHRvIG1pbmltaXplIHRoZSBpbXBhY3QsIGJ1dCBpdCB3YXMgbm90IHBvc3NpYmxlIHRvIGF2b2lkIGl0IGNvbXBsZXRlbHkuCgpNb3JlIGluZm8gYWJvdXQgYnJlYWtpbmcgY2hhbmdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIFtSZWxlYXNlc10oaHR0cHM6Ly9naXRodWIuY29tL3lobmF2ZWluL3N3YWdnaWUvcmVsZWFzZXMpLgoKIyMjIENMSQoKYGBgClVzYWdlOiBzd2FnZ2llIFtvcHRpb25zXQoKT3B0aW9uczoKCiAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgICBvdXRwdXQgdGhlIHZlcnNpb24gbnVtYmVyCiAgLWMsIC0tY29uZmlnIDxwYXRoPiAgICAgICBUaGUgcGF0aCB0byB0aGUgY29uZmlndXJhdGlvbiBKU09OIGZpbGUuIFlvdSBjYW4gZG8gYWxsIHRoZSBzZXQgdXAgdGhlcmUgaW5zdGVhZCBvZiBwYXJhbWV0ZXJzIGluIHRoZSBDTEkKICAtcywgLS1zcmMgPHVybHxwYXRoPiAgICAgIFRoZSB1cmwgb3IgcGF0aCB0byB0aGUgT3BlbiBBUEkgc3BlYyBmaWxlCiAgLW8sIC0tb3V0IDxmaWxlUGF0aD4gICAgICBUaGUgcGF0aCB0byB0aGUgZmlsZSB3aGVyZSB0aGUgQVBJIHdvdWxkIGJlIGdlbmVyYXRlZC4gVXNlIHN0ZG91dCBpZiBsZWZ0IGVtcHR5CiAgLWIsIC0tYmFzZVVybCA8c3RyaW5nPiAgICBCYXNlIFVSTCB0aGF0IHdpbGwgYmUgdXNlZCBhcyBhIGRlZmF1bHQgdmFsdWUgaW4gdGhlIGNsaWVudHMgKGRlZmF1bHQ6ICIiKQogIC10LCAtLXRlbXBsYXRlIDxzdHJpbmc+ICAgVGVtcGxhdGUgdXNlZCBmb3IgZ2VuZXJhdGluZyBBUEkgY2xpZW50LiBEZWZhdWx0OiAiYXhpb3MiCiAgLS1wcmVmZXJBbnkgICAgICAgICAgICAgICBVc2UgImFueSIgdHlwZSBpbnN0ZWFkIG9mICJ1bmtub3duIiAoZGVmYXVsdDogZmFsc2UpCiAgLS1za2lwRGVwcmVjYXRlZCAgICAgICAgICBTa2lwIGRlcHJlY2F0ZWQgb3BlcmF0aW9ucy4gV2hlbiBlbmFibGVkLCBkZXByZWNhdGVkIG9wZXJhdGlvbnMgd2lsbCBiZSBza2lwcGVkIGZyb20gdGhlIGdlbmVyYXRlZCBjb2RlIChkZWZhdWx0OiBmYWxzZSkKICAtLXNlcnZpY2VQcmVmaXggPHN0cmluZz4gIFByZWZpeCBmb3Igc2VydmljZSBuYW1lcy4gVXNlZnVsIHdoZW4geW91IGhhdmUgbXVsdGlwbGUgQVBJcyBhbmQgeW91IHdhbnQgdG8gYXZvaWQgbmFtZSBjb2xsaXNpb25zIChkZWZhdWx0OiAiIikKICAtLWFsbG93RG90cyA8Ym9vbD4gICAgICAgIERldGVybWluZXMgaWYgZG90cyBzaG91bGQgYmUgdXNlZCBmb3Igc2VyaWFsaXphdGlvbiBvYmplY3QgcHJvcGVydGllcwogIC0tYXJyYXlGb3JtYXQgPGZvcm1hdD4gICAgRGV0ZXJtaW5lcyBob3cgYXJyYXlzIHNob3VsZCBiZSBzZXJpYWxpemVkIChjaG9pY2VzOiAiaW5kaWNlcyIsICJyZXBlYXQiLCAiYnJhY2tldHMiKQogIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgZGlzcGxheSBoZWxwIGZvciBjb21tYW5kCmBgYAoKU2FtcGxlIENMSSB1c2FnZSB1c2luZyBTd2FnZ2VyJ3MgUGV0IFN0b3JlOgoKYGBgYmFzaApzd2FnZ2llIC1zIGh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzL29wZW5hcGkuanNvbiAtbyAuL2NsaWVudC9wZXRzdG9yZS50cwpgYGAKCmBzd2FnZ2llYCBvdXRwdXRzIFR5cGVTY3JpcHQgdGhhdCBpcyBzb21laG93IGZvcm1hdHRlZCwgYnV0IGl0J3MgZmFyIGZyb20gcGVyZmVjdC4gWW91IGNhbiBhZGp1c3QgdGhlIGdlbmVyYXRlZCBjb2RlIGJ5IHByZXR0aWZ5aW5nIG91dHB1dCB1c2luZyB5b3VyIHByZWZlcnJlZCBiZWF1dGlmeSB0b29sIHVzaW5nIHlvdXIgcmVwbydzIHN0eWxpbmcgZ3VpZGVsaW5lcy4gRm9yIGV4YW1wbGUgaW52b2x2aW5nIGBwcmV0dGllcmAgbG9va3MgbGlrZSB0aGlzOgoKYGBgYmFzaApzd2FnZ2llIC1zICRVUkwgLW8gLi9jbGllbnQvcGV0c3RvcmUudHMgJiYgcHJldHRpZXIgLi9jbGllbnQvcGV0c3RvcmUudHMgLS13cml0ZWAKYGBgCgpBbmQgdGhpcyBjYW4gYmUgZWFzaWx5IGF1dG9tYXRlZCAoaW4gdGhlIGBucG1gIHNjcmlwdHMgZm9yIGV4YW1wbGUpCgojIyMgQ29uZmlndXJhdGlvbiBGaWxlCgpJbnN0ZWFkIG9mIHByb3ZpZGluZyBhbGwgcmVxdWlyZWQgZmxhZ3MgZnJvbSB0aGUgY29tbWFuZCBsaW5lIHlvdSBjYW4gYWx0ZXJuYXRpdmVseSBjcmVhdGUgYSBuZXcgSlNPTiBmaWxlIHdoZXJlIHlvdSBjYW4gZmlsbCB1cCBhbGwgc2V0dGluZ3MuCgpTYW1wbGUgY29uZmlndXJhdGlvbiBsb29rcyBsaWtlIHRoaXM6CgpgYGBqc29uCnsKICAiJHNjaGVtYSI6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20veWhuYXZlaW4vc3dhZ2dpZS9tYXN0ZXIvc2NoZW1hLmpzb24iLAogICJvdXQiOiAiLi9zcmMvY2xpZW50L3BldHN0b3JlLnRzIiwKICAic3JjIjogImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzL29wZW5hcGkuanNvbiIsCiAgInRlbXBsYXRlIjogImF4aW9zIiwKICAiYmFzZVVybCI6ICIvYXBpIiwKICAicHJlZmVyQW55IjogdHJ1ZSwKICAic2VydmljZVByZWZpeCI6ICIiLAogICJkYXRlRm9ybWF0IjogIkRhdGUiLCAvLyAic3RyaW5nIiB8ICJEYXRlIgogICJxdWVyeVBhcmFtc1NlcmlhbGl6YXRpb24iOiB7CiAgICAiYXJyYXlGb3JtYXQiOiAicmVwZWF0IiwgLy8gInJlcGVhdCIgfCAiYnJhY2tldHMiIHwgImluZGljZXMiCiAgICAiYWxsb3dEb3RzIjogdHJ1ZQogIH0KfQpgYGAKCiMjIyBUZW1wbGF0ZXMKClRoZSBmb2xsb3dpbmcgdGVtcGxhdGVzIGFyZSBidW5kbGVkIHdpdGggU3dhZ2dpZToKCmBgYApheGlvcyAgICAgICBEZWZhdWx0IHRlbXBsYXRlLiBSZWNvbW1lbmRlZCBmb3IgUmVhY3QgLyBWdWUgLyBzaW1pbGFyIGZyYW1ld29ya3MuIFVzZXMgYXhpb3MKeGlvciAgICAgICAgTGlnaHR3ZWlnaHQgYW5kIG1vZGVybiBhbHRlcm5hdGl2ZSB0byBheGlvcy4gVXNlcyBbeGlvcl0oaHR0cHM6Ly9naXRodWIuY29tL3N1aGFvdGlhbi94aW9yI2ludHJvKQpzd3ItYXhpb3MgICBTV1IgZm9yIEdFVCByZXF1ZXN0cyB3aXRoIGF4aW9zIGFzIGJhY2tlbmQKdHNxLXhpb3IgICAgVGFuU3RhY2sgUXVlcnkgZm9yIEdFVCByZXF1ZXN0cyB3aXRoIHhpb3IgYXMgYmFja2VuZApmZXRjaCAgICAgICBCYXJlYm9uZSBmZXRjaCBBUEkuIFJlY29tbWVuZGVkIGZvciBSZWFjdCAvIFZ1ZSAvIHNpbWlsYXIgZnJhbWV3b3JrcwpuZzEgICAgICAgICBBbmd1bGFyIDEgY2xpZW50ICh0aGlzIGlzIGZvciB0aGUgb2xkIG9uZSkKbmcyICAgICAgICAgQW5ndWxhciAyKyBjbGllbnQgKHVzZXMgSHR0cENsaWVudCwgSW5qZWN0aW9uVG9rZW5zLCBldGMpCmBgYAoKSWYgeW91IHdhbnQgdG8gdXNlIHlvdXIgb3duIHRlbXBsYXRlLCB5b3UgY2FuIHVzZSB0aGUgcGF0aCB0byB5b3VyIHRlbXBsYXRlIGZvciB0aGUgYC10YCBwYXJhbWV0ZXI6CgpgYGBiYXNoCnN3YWdnaWUgLXMgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uIC1vIC4vY2xpZW50L3BldHN0b3JlIC0tdGVtcGxhdGUgLi9teS1zd2FnZ2llLXRlbXBsYXRlLwpgYGAKCiMjIFVzYWdlIOKAkyBJbnRlZ3JhdGluZyBpbnRvIHlvdXIgcHJvamVjdAoKTGV0J3MgYXNzdW1lIHRoYXQgeW91IGhhdmUgYSBbUGV0U3RvcmUgQVBJXShodHRwOi8vcGV0c3RvcmUuc3dhZ2dlci5pby8pIGFzIHlvdXIgUkVTVCBBUEkgYW5kIHlvdSBhcmUgZGV2ZWxvcGluZyBhIGNsaWVudCBhcHAgd3JpdHRlbiBpbiBUeXBlU2NyaXB0IHRoYXQgd2lsbCBjb25zdW1lIHRoaXMgQVBJLgoKSW5zdGVhZCBvZiB3cml0aW5nIGFueSBjb2RlIGJ5IGhhbmQgZm9yIGZldGNoaW5nIHBhcnRpY3VsYXIgcmVzb3VyY2VzLCB3ZSB3aWxsIGxldCBTd2FnZ2llIGRvIGl0IGZvciB1cy4KCiMjIyBRdWVyeSBQYXJhbWV0ZXJzIFNlcmlhbGl6YXRpb24KCldoZW4gaXQgY29tZXMgdG8gdXNlIG9mIHF1ZXJ5IHBhcmFtZXRlcnMgdGhlbiB5b3UgbWlnaHQgbmVlZCB0byBhZGp1c3QgdGhlIHdheSB0aGVzZSBwYXJhbWV0ZXJzIHdpbGwgYmUgc2VyaWFsaXplZCwgYXMgYmFja2VuZCBzZXJ2ZXIgeW91IGFyZSB1c2luZyBleHBlY3RzIHRoZW0gdG8gYmUgaW4gYSBzcGVjaWZpYyBmb3JtYXQuIFRoYW5rZnVsbHkgaW4gU3dhZ2dpZSB5b3UgY2FuIHNwZWNpZnkgaG93IHRoZXkgc2hvdWxkIGJlIGhhbmRsZWQuIElmIHlvdSB3b24ndCBwcm92aWRlIGFueSBjb25maWd1cmF0aW9uLCB0aGVuIFN3YWdnaWUgd2lsbCB1c2UgdGhlIGRlZmF1bHRzIHZhbHVlcyBleHBlY3RlZCBpbiB0aGUgQVNQLk5FVCBDb3JlIHdvcmxkLgoKRm9yIHlvdXIgY29udmVuaWVuY2UgdGhlcmUgYXJlIGZldyBjb25maWcgZXhhbXBsZXMgdG8gYWNoaWV2ZSBkaWZmZXJlbnQgc2VyaWFsaXphdGlvbiBmb3JtYXRzIGZvciBhbiBvYmplY3QgYHsgImEiOiB7ICJiIjogMSB9LCAiYyI6IFsyLCAzXSB9YDoKCnwgRXhwZWN0ZWQgRm9ybWF0ICAgICAgICAgfCBhbGxvd0RvdHMgfCBhcnJheUZvcm1hdCB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8CnwgYD9hLmI9MSZjPTImYz0zYCAgICAgICAgfCBgdHJ1ZWAgICAgfCBgcmVwZWF0YCAgICB8CnwgYD9hLmI9MSZjW109MiZjW109M2AgICAgfCBgdHJ1ZWAgICAgfCBgYnJhY2tldHNgICB8CnwgYD9hLmI9MSZjWzBdPTImY1sxXT0zYCAgfCBgdHJ1ZWAgICAgfCBgaW5kaWNlc2AgICB8CnwgYD9hW2JdPTEmYz0yJmM9M2AgICAgICAgfCBgZmFsc2VgICAgfCBgcmVwZWF0YCAgICB8CnwgYD9hW2JdPTEmY1tdPTImY1tdPTNgICAgfCBgZmFsc2VgICAgfCBgYnJhY2tldHNgICB8CnwgYD9hW2JdPTEmY1swXT0yJmNbMV09M2AgfCBgZmFsc2VgICAgfCBgaW5kaWNlc2AgICB8CgpPbmNlIHlvdSBrbm93IHdoYXQgeW91ciBiYWNrZW5kIGV4cGVjdHMsIHlvdSBjYW4gYWRqdXN0IHRoZSBjb25maWd1cmF0aW9uIGZpbGUgYWNjb3JkaW5nbHk6IChiZWxvdyBhcmUgZGVmYXVsdCB2YWx1ZXMpCgpgYGBqc29uCnsKICAicXVlcnlQYXJhbXNTZXJpYWxpemF0aW9uIjogewogICAgImFycmF5Rm9ybWF0IjogInJlcGVhdCIsCiAgICAiYWxsb3dEb3RzIjogdHJ1ZQogIH0KfQpgYGAKCiMjIyBDb2RlIFF1YWxpdHkKCj4gUGxlYXNlIG5vdGUgdGhhdCBpdCdzICoqcmVjb21tZW5kZWQqKiB0byBwaXBlIFN3YWdnaWUgY29tbWFuZCB0byBzb21lIHByZXR0aWZpZXIgbGlrZSBgcHJldHRpZXJgLCBgYmlvbWVgIG9yIGBkcHJpbnRgIHRvIG1ha2UgdGhlIGdlbmVyYXRlZCBjb2RlIGxvb2sgbm90IG9ubHkgbmljZSwgYnV0IGFsc28gcGVyc2lzdGVudC4KPiBCZWNhdXNlIFN3YWdnaWUgcmVsaWVzIG9uIGEgdGVtcGxhdGluZyBlbmdpbmUsIHdoaXRlc3BhY2VzIGFyZSBnZW5lcmFsbHkgYSBtZXNzLCBzbyB0aGV5IG1heSBjaGFuZ2UgYmV0d2VlbiB2ZXJzaW9ucy4KCioqU3VnZ2VzdGVkIHByZXR0aWVycyoqCgpbcHJldHRpZXJdKGh0dHBzOi8vcHJldHRpZXIuaW8vKSAtIHRoZSBtb3N0IHBvcHVsYXIgb25lCgpgYGBiYXNoCnByZXR0aWVyIC4vRklMRV9QQVRILnRzIC0td3JpdGUKYGBgCgpbYmlvbWVdKGh0dHBzOi8vYmlvbWVqcy5kZXYpIC0gdGhlIHN1cGVyIGZhc3Qgb25lCgpgYGBiYXNoCmJpb21lIGNoZWNrIC4vRklMRV9QQVRILnRzIC0tYXBwbHktdW5zYWZlCmBgYAoKWW91IGFyZSBub3QgbGltaXRlZCB0byBhbnkgb2YgdGhlc2UsIGJ1dCBpbiBvdXIgZXhhbXBsZXMgd2Ugd2lsbCB1c2UgUHJldHRpZXIuIFBsZWFzZSByZW1lbWJlciB0aGF0IHRoZXNlIHRvb2xzIG5lZWRzIHRvIGJlIGluc3RhbGxlZCBmaXJzdCBhbmQgdGhleSBuZWVkIGEgY29uZmlnIGZpbGUgaW4geW91ciBwcm9qZWN0LgoKIyMjIEV4YW1wbGUKCkxldCdzIHJ1biBgc3dhZ2dpZWAgYWdhaW5zdCBQZXRTdG9yZSBBUEkgYW5kIHNlZSB3aGF0IHdpbGwgaGFwcGVuOgoKYGBgYmFzaApzd2FnZ2llIC1zIGh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzL29wZW5hcGkuanNvbiAtbyAuL2FwaS9wZXRzdG9yZS50cyAmJiBwcmV0dGllciAuL2FwaS9wZXRzdG9yZS50cyAtLXdyaXRlCmBgYAoKYGBgdHlwZXNjcmlwdAovLyAuL2FwaS9wZXRzdG9yZS50cwoKaW1wb3J0IEF4aW9zLCB7IEF4aW9zUHJvbWlzZSB9IGZyb20gJ2F4aW9zJzsKY29uc3QgYXhpb3MgPSBBeGlvcy5jcmVhdGUoewogIGJhc2VVUkw6ICcvYXBpJywKICBwYXJhbXNTZXJpYWxpemVyOiAocGFyYW1zKSA9PgogICAgZW5jb2RlUGFyYW1zKHBhcmFtcywgbnVsbCwgewogICAgICBhbGxvd0RvdHM6IHRydWUsCiAgICAgIGFycmF5Rm9ybWF0OiAncmVwZWF0JywKICAgIH0pLAp9KTsKCi8qKiBbLi4uXSAqKi8KCmV4cG9ydCBjb25zdCBwZXRDbGllbnQgPSB7CiAgLyoqCiAgICogQHBhcmFtIHBldElkCiAgICovCiAgZ2V0UGV0QnlJZChwZXRJZDogbnVtYmVyKTogQXhpb3NQcm9taXNlPFBldD4gewogICAgbGV0IHVybCA9IGAvcGV0LyR7ZW5jb2RlVVJJQ29tcG9uZW50KGAke3BldElkfWApfWA7CgogICAgcmV0dXJuIGF4aW9zLnJlcXVlc3Q8UGV0Pih7CiAgICAgIHVybDogdXJsLAogICAgICBtZXRob2Q6ICdHRVQnLAogICAgfSk7CiAgfSwKCiAgLy8gLi4uIGFuZCBvdGhlciBtZXRob2RzIC4uLgp9OwpgYGAKCldoZW4gd2UgaGF2ZSB0aGF0IHdlIGNhbiB3cml0ZSBzb21lIGRvbWFpbiBjb2RlIGFuZCB1c2UgdGhpcyBhdXRvLWdlbmVyYXRlZCBjbGFzc2VzOgoKYGBgdHlwZXNjcmlwdAovLyBhcHAudHMKCmltcG9ydCB7IHBldENsaWVudCB9IGZyb20gJy4vYXBpL3BldENsaWVudCc7CgpwZXRDbGllbnQuZ2V0UGV0QnlJZCgxMjMpLnRoZW4oKHBldCkgPT4gY29uc29sZS5sb2coJ1BldDogJywgcGV0KSk7CmBgYAoKSWYgUGV0c3RvcmUgb3duZXJzIGRlY2lkZSB0byByZW1vdmUgbWV0aG9kIHdlIHVzZSwgdGhlbiBhZnRlciBydW5uaW5nIGBzd2FnZ2llYCBhZ2FpbiBpdCB3aWxsIG5vIGxvbmdlciBiZSBwcmVzZW50IGluIHRoZSBgcGV0Q2xpZW50YCBjbGFzcy4gVGhpcyB3aWxsIHJlc3VsdCBpbiB0aGUgYnVpbGQgZXJyb3IsIHdoaWNoIGlzIHZlcnkgbXVjaCBhcHByZWNpYXRlZCBhdCB0aGlzIHN0YWdlLgoKV2l0aG91dCB0aGlzIGFwcHJvYWNoLCB0aGUgZXJyb3Igd291bGQgYmUgc3BvdHRlZCBieSBvdXIgZW5kLXVzZXIgYW5kIGhlL3NoZSB3b3VsZCBub3QgYXBwcmVjaWF0ZSBpdCBhdCBhbGwhCgojIyBPdGhlciBmZWF0dXJlcwoKIyMjIFBhcmFtZXRlciBhZGp1c3RtZW50CgpJbiBzb21lIGNhc2VzIHlvdSBtaWdodCB3YW50IHRvIGFkanVzdCB0aGUgcGFyYW1ldGVycyBnbG9iYWxseSBidXQgd2l0aG91dCB0b3VjaGluZyB0aGUgT3BlbkFQSSBzcGVjLiBGb3IgZXhhbXBsZSwgdGhlIHNwZWMgbWF5IGV4cGxpY2l0bHkgZGVmaW5lIHNvbWUgb2YgcGFyYW1ldGVycyBhcyBgcmVxdWlyZWRgLCBidXQgeW91IHdpbGwgaGFuZGxlIHRoZW0gaW4gdGhlIGludGVyY2VwdG9yLiBJbiBzdWNoIGNhc2UsIHlvdSBkb24ndCB3YW50IHRvIGRlZmluZSB0aGVtIGlzIGV2ZXJ5IHNpbmdsZSBtZXRob2QuIFRoaXMgaXMgd2hlcmUgdGhpcyBmZWF0dXJlIGNvbWVzIGluIGhhbmR5LgoKRXhhbXBsZSAoaW4gdGhlIGNvbmZpZyBmaWxlKToKCmBgYGpzb24KewogICJtb2RpZmllcnMiOiB7CiAgICAicGFyYW1ldGVycyI6IHsKICAgICAgImNsaWVudElkIjogImlnbm9yZSIsCiAgICAgICJvcmdJZCI6ICJvcHRpb25hbCIsCiAgICAgICJjb3VudHJ5IjogInJlcXVpcmVkIgogICAgfQogIH0KfQpgYGAKClRoaXMgd2lsbCBlbnN1cmUgdGhhdCBgY2xpZW50SWRgIHBhcmFtZXRlcnMgd2lsbCBuZXZlciBhcHBlYXIgaW4gYW55IG9mIHRoZSBnZW5lcmF0ZWQgbWV0aG9kcywgYW5kIGBvcmdJZGAgd2lsbCBiZSBvcHRpb25hbCAocmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBzcGVjIHNheXMpLgpZb3UgY2FuIGFsc28gdXNlIGByZXF1aXJlZGAgdmFsdWUgdG8gZW5mb3JjZSB0aGUgcGFyYW1ldGVyIHRvIGJlIHJlcXVpcmVkLCBfKGJ1dCBpbiB0aGlzIGNhc2UsIHJlYWxpc3RpY2FsbHkgaXQgd291bGQgYmUgYmV0dGVyIHRvIGp1c3QgZml4IHRoZSBzcGVjKV8uCgojIyBTZXJ2ZXIgY29uZmlnCgpZb3UgbWlnaHQgd29uZGVyIGhvdyB0byBzZXQgdXAgc2VydmVyIHRvIGZ1bGx5IHV0aWxpemUgU3dhZ2dpZSdzIGZlYXR1cmVzLiBGb3IgdGhhdCBJJ3ZlIGFkZGVkIGEgYHNhbXBsZXMvYCBmb2xkZXIgd2l0aCBzYW1wbGUgY29uZmlndXJhdGlvbnMuCgpbQVNQLk5FVCBDb3JlICsgTnN3YWddKC4vc2FtcGxlcy9kb3RuZXRjb3JlL25zd2FnL1JFQURNRS5tZCkKCltBU1AuTkVUIENvcmUgKyBTd2FzaGJ1Y2tsZV0oLi9zYW1wbGVzL2RvdG5ldGNvcmUvc3dhc2hidWNrbGUvUkVBRE1FLm1kKQoKU2VydmVyIGlzIG5vdCBuZWNlc3NhcnkgdG8gdXNlIFN3YWdnaWUuIFN3YWdnaWUgY2FyZXMgb25seSBhYm91dCB0aGUgSlNPTi95YW1sIGZpbGUgd2l0aCB0aGUgT3BlbiBBUEkgc3BlYywgYnV0IGZvciB5b3VyIGRldmVsb3BtZW50IHB1cnBvc2UgeW91IG1pZ2h0IHdhbnQgdG8gaGF2ZSBhIHNlcnZlciB0aGF0IGNhbiBzZXJ2ZSB0aGlzIGZpbGUgYXV0b21hdGljYWxseSBmcm9tIHRoZSBhY3R1YWwgZW5kcG9pbnRzLgoKIyMgVXNpbmcgU3dhZ2dpZSBwcm9ncmFtbWF0aWNhbGx5CgpgYGBqYXZhc2NyaXB0CmNvbnN0IHN3YWdnaWUgPSByZXF1aXJlKCdzd2FnZ2llJyk7CnN3YWdnaWUKICAuZ2VuQ29kZSh7CiAgICBzcmM6ICdodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92My9vcGVuYXBpLmpzb24nLAogICAgb3V0OiAnLi9hcGkvcGV0c3RvcmUudHMnLAogIH0pCiAgLnRoZW4oY29tcGxldGUsIGVycm9yKTsKCmZ1bmN0aW9uIGNvbXBsZXRlKHNwZWMpIHsKICBjb25zb2xlLmluZm8oJ1NlcnZpY2UgZ2VuZXJhdGlvbiBjb21wbGV0ZScpOwp9CgpmdW5jdGlvbiBlcnJvcihlKSB7CiAgY29uc29sZS5lcnJvcihlLnRvU3RyaW5nKCkpOwp9CmBgYAoKIyMgTm90ZXMKCnwgU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90IHN1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBPcGVuQVBJIDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTd2FnZ2VyLCBPcGVuIEFQSSAyLjAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGFsbE9mYCwgYG9uZU9mYCwgYGFueU9mYCwgYCRyZWZgIHRvIHNjaGVtYXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYG5vdGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFNwZWMgZm9ybWF0czogYEpTT05gLCBgWUFNTGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlcnkgY29tcGxleCBxdWVyeSBwYXJhbXMgICAgICAgICAgICAgICAgICAgICAgIHwKfCBFeHRlbnNpb25zOiBgeC1wb3NpdGlvbmAsIGB4LW5hbWVgLCBgeC1lbnVtTmFtZXNgLCBgeC1lbnVtLXZhcm5hbWVzYCAgICAgICAgICAgfCBNdWx0aXBsZSByZXNwb25zZSB0eXBlcyAob25seSBvbmUgd2lsbCBiZSB1c2VkKSB8CnwgQ29udGVudCB0eXBlczogYEpTT05gLCBgdGV4dGAsIGBtdWx0aXBhcnQvZm9ybS1kYXRhYCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTXVsdGlwbGUgcmVxdWVzdCB0eXBlcyAob25seSBvbmUgd2lsbCBiZSB1c2VkKSAgfAp8IENvbnRlbnQgdHlwZXM6IGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgLCBgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtYCB8IFJlZmVyZW5jZXMgdG8gb3RoZXIgc3BlYyBmaWxlcyAgICAgICAgICAgICAgICAgIHwKfCBEaWZmZXJlbnQgdHlwZXMgb2YgZW51bSBkZWZpbml0aW9ucyAoKyBPcGVuQVBJIDMuMSBzdXBwb3J0IGZvciBlbnVtcykgICAgICAgICAgfCBPcGVuQVBJIGNhbGxiYWNrcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUGF0aHMgaW5oZXJpdGFuY2UsIGNvbW1lbnRzIChkZXNjcmlwdGlvbnMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkFQSSB3ZWJob29rcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEdldHRpbmcgZG9jdW1lbnRzIGZyb20gcmVtb3RlIGxvY2F0aW9ucyBvciBhcyBwYXRoIHJlZmVyZW5jZSAobG9jYWwgZmlsZSkgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBHcm91cGluZyBlbmRwb2ludHMgYnkgdGFncyArIGhhbmRsZSBncmFjZWZ1bGx5IGR1cGxpY2F0ZSBvcGVyYXRpb24gaWRzICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgojIyBVc2VkIGJ5Cgo8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBnYXA6IDFyZW07Ij4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuYnJpdGlzaGNvdW5jaWwub3JnIj48aW1nIGFsdD0iQnJpdGlzaCBDb3VuY2lsIiBzcmM9Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvZS9lMS9Ccml0aXNoQ291bmNpbC5wbmcvMzIwcHgtQnJpdGlzaENvdW5jaWwucG5nIiBzdHlsZT0iaGVpZ2h0OiA1MHB4OyIgLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8va3BtZy5jb20vIj48aW1nIGFsdD0iS1BNRyIgc3JjPSJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iLzMvMzEvS1BNRy5zdmcvMzIwcHgtS1BNRy5zdmcucG5nIiBzdHlsZT0iaGVpZ2h0OiA1MHB4OyIgLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8va2xhcm5hLmNvbS8iPjxpbWcgYWx0PSJLbGFybmEiIHNyYz0iaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy80LzQwL0tsYXJuYV9QYXltZW50X0JhZGdlLnN2ZyIgc3R5bGU9ImhlaWdodDogNTBweDsiIC8+PC9hPgo8L2Rpdj4K readmeEtag: '"f93660b15104019b13a8c6c53d17639900d9ed0c"' readmeLastModified: Mon, 18 Aug 2025 22:21:54 GMT repositoryId: 120893123 description: Tool for generating TypeScript client code for given Swagger API endpoints created: '2018-02-09T10:37:44Z' updated: '2026-01-04T21:44:46Z' language: TypeScript archived: false stars: 24 watchers: 2 forks: 9 owner: yhnavein logo: https://avatars.githubusercontent.com/u/516709?v=4 license: MIT repoEtag: '"921d9be24f4405c0b5819aaa7c9d13f31e7c060f8de1e62c40be1f94e7af216e"' repoLastModified: Sun, 04 Jan 2026 21:44:46 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/mnf-group/openapimux v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJTXV4Ck9wZW5BUElNdXggaXMgYSAic2NoZW1hLWZpcnN0IiBIVFRQIHJvdXRlci4gSXQgdGFrZXMgb25lIG9yIG11bHRpcGxlCltPcGVuQVBJICAoU3dhZ2dlcildKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykgc2NoZW1hIGZpbGVzIGFzIGFuIGlucHV0CmFuZCB0aGVuIG1hdGNoZXMsIHZhbGlkYXRlcyBhbmQgaGFuZGxlcyBhbGwgaW5jb21pbmcgSFRUUCBiYXNlZCBvbiB0aGVzZSBzY2hlbWFzLgpVbmRlciB0aGUgaG9vZCwgaXQgdXNlcyBba2luLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvKSBmb3IKT3BlbkFQSSBzY2hlbWEgcGFyc2luZyBhbmQgdmFsaWRhdGlvbi4KCiMgTW90aXZhdGlvbgpPcGVuQVBJIG9mZmVycyBhIGdyZWF0IHdheSBvZiBkb2N1bWVudGluZyBBUEkuIEhvd2V2ZXIsIG5vbmUgb2YKW2V4aXN0aW5nIGdvIHJvdXRlcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmVsaW5vL2F3ZXNvbWUtZ28jcm91dGVycykgb2ZmZXJzCiJzY2hlbWEgZmlyc3QiIGFwcHJvYWNoLiBJbiBlYWNoIHJvdXRlciwgeW91IG5lZWQgdG8gaW5pdGlhbGl6ZSBhIGxpc3Qgb2YgYXZhaWxhYmxlCnJvdXRlcyBhbmQgdGhlbiBkbyB0aGUgcmVxdWVzdCB2YWxpZGF0aW9uIG1hbnVhbGx5LiBPcGVuQVBJTXV4IGZpbGxzIHRoaXMgZ2FwIGJ5CmFsbG93aW5nIHRvIGluaXRpYWxpemUgYSByb3V0ZXIgZGlyZWN0bHkgZnJvbSB0aGUgT3BlbkFQSSBzY2hlbWEgZGVmaW5pdGlvbiBmaWxlLgoKIyBGZWF0dXJlcwoqIFdvcmtzIHdpdGggYm90aCBPcGVuQVBJIDMuMCBhbmQgT3BlbkFQSSAyLjAgKGFrYSBTd2FnZ2VyKS4gQXMgd2VsbCBhcyBib3RoIGpzb24gYW5kIHlhbWwgc2NoZW1hcwoqIE11bHRpcGxlIE9wZW5BUEkgc2NoZW1hIGZpbGVzIGNhbiBiZSB1c2VkIGF0IHRoZSBzYW1lIHJvdXRlciB0byBzdXBwb3J0IEFQSSB2ZXJzaW9uaW5nCiogSW1wbGVtZW50cyBgaHR0cC5IYW5kbGVyYCBpbnRlcmZhY2UsIHNvIGl0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc3RhbmRhcmQgaHR0cC5TZXJ2ZU11eAoqIFN1cHBvcnRzIGdsb2JhbCBsZXZlbCBgaHR0cC5IYW5kbGVyYCBtaWRkbGV3YXJlcywgc28gaXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoaXJkLXBhcnR5IG1pZGRsZXdhcmVzCiogU3VwcG9ydHMgY3VzdG9tIGVycm9yIGhhbmRsZXIgZm9yIG1vcmUgY29udHJvbAoKIyBSb3V0aW5nCiogYG9wZXJhdGlvbklkYCBhdHRyaWJ1dGUgb2YgYW4gT3BlbkFQSSBwYXRoIGlzIHVzZWQgdG8gcmVzb2x2ZSBpdCB0byBhbiBhcHByb3ByaWF0ZSBoYW5kbGVyCiogT3BlbkFQSU11eCBjYW4gZW5jYXBzdWxhdGUgb25lIG9yIG1vcmUgc3dhZ2dlciByb3V0ZXJzLiBFYWNoIHJvdXRlciBjb3VsZApiZSBjcmVhdGVkIGZyb20gYW4gT3BlbkFQSSBzY2hlbWEgZmlsZSBvciBkaXJlY3RseSBhcyBhIHN3YWdnZXIgb2JqZWN0CiogVG8gaGFuZGxlIG11bHRpcGxlIHZlcnNpb25zLCB1c2UgdGhlIGBzZXJ2ZXJzLnVybGAgYXR0cmlidXRlIGluIE9wZW5BUEkgc2NoZW1hLiBFZwogYGBgeWFtbAogc2VydmVyczoKICAtIHVybDogIi92MS4yIgpgYGAKKiBXaGVuIGZpbmRpbmcgYSBtYXRjaGluZyByb3V0ZSwgcm91dGVycyB3aXRoIGBzZXJ2ZXJzYCBhdHRyaWJ1dGUgc2V0IHRha2UgcHJpb3JpdHkKCiMgSW5zdGFsbApgZ28gZ2V0IC11IGdpdGh1Yi5jb20vTU5GR3JvdXAvb3BlbmFwaW11eGAKCiMgRnVsbCBFeGFtcGxlCkFzc3VtaW5nIGBvcGVuYXBpLnlhbWxgIGhhcyB0aGUgZm9sbG93aW5nIHNjaGVtYQpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCgpwYXRoczoKICAvZm9vOgogICAgZ2V0OgogICAgICBvcGVyYXRpb25JZDogZ2V0Rm9vCmBgYAoKSXQgd2lsbCBjcmVhdGUgYW5kIHN0YXJ0IGEgc2VydmVyIG9uIDgwODAKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAoJImZtdCIKCSJsb2ciCgkibmV0L2h0dHAiCgoJImdpdGh1Yi5jb20vZ28tY2hpL2NoaS9taWRkbGV3YXJlIgopCgp0eXBlIGZvb0hhbmRsZXIgc3RydWN0e30KCmZ1bmMgKGYgZm9vSGFuZGxlcikgU2VydmVIVFRQKHcgaHR0cC5SZXNwb25zZVdyaXRlciwgciAqaHR0cC5SZXF1ZXN0KSB7CglmbXQuRnByaW50KHcsICJIZWxsbyIpCn0KCmZ1bmMgbWFpbigpIHsKCXIsIGVyciA6PSBOZXdSb3V0ZXIoIi4vb3BlbmFwaS55YW1sIikKCWlmIGVyciAhPSBuaWwgewoJCXBhbmljKGVycikKCX0KCglyLlVzZUhhbmRsZXJzKG1hcFtzdHJpbmddaHR0cC5IYW5kbGVyewoJCSJnZXRGb28iOiBmb29IYW5kbGVye30sCgl9KQoKCXIuVXNlTWlkZGxld2FyZSgKCQltaWRkbGV3YXJlLlJlY292ZXJlciwKCQltaWRkbGV3YXJlLlJlcXVlc3RJRCwKCQltaWRkbGV3YXJlLkRlZmF1bHRDb21wcmVzcywKCSkKCglyLkVycm9ySGFuZGxlciA9IGZ1bmModyBodHRwLlJlc3BvbnNlV3JpdGVyLCByICpodHRwLlJlcXVlc3QsIGRhdGEgc3RyaW5nLCBjb2RlIGludCkgewoJCXcuV3JpdGVIZWFkZXIoY29kZSkKCQlpZiBjb2RlID09IGh0dHAuU3RhdHVzSW50ZXJuYWxTZXJ2ZXJFcnJvciB7CgkJCWZtdC5QcmludGxuKCJGYXRhbDoiLCBkYXRhKQoJCQl3LldyaXRlKFtdYnl0ZSgiT29wcyIpKQoJCX0gZWxzZSB7CgkJCXcuV3JpdGUoW11ieXRlKGRhdGEpKQoJCX0KCX0KCglsb2cuRmF0YWwoaHR0cC5MaXN0ZW5BbmRTZXJ2ZSgiOjgwODAiLCByKSkKfQpgYGAK readmeEtag: '"b2584cc991f2bbdf819484e0b0bb0dc68fe11eb3"' readmeLastModified: Mon, 11 Oct 2021 22:26:40 GMT repositoryId: 193996898 description: Open API router in go created: '2019-06-27T00:45:48Z' updated: '2023-08-14T14:37:21Z' language: Go archived: false stars: 22 watchers: 4 forks: 3 owner: mnf-group logo: https://avatars.githubusercontent.com/u/40686352?v=4 license: MIT repoEtag: '"ae2ba003e9a06dab47032d5b7fcad6177bb18eb04c1c7e059975169876901bd7"' repoLastModified: Mon, 14 Aug 2023 14:37:21 GMT foundInMaster: true category: - Data Validators - Parsers id: c89db4b421338959f10cb6d1be0f8c7b - source: openapi3 tags repository: https://github.com/datazoode/flapi v3: true id: 1cf545e15d0ee2560d0090440fcc77b2 repositoryMetadata: base64Readme: >- IyBmbEFQSTogSW5zdGFudCBTUUwgYmFzZWQgQVBJcwoKZmxBUEkgaXMgYSBwb3dlcmZ1bCBzZXJ2aWNlIHRoYXQgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgcmVhZC1vbmx5IEFQSXMgZm9yIGRhdGFzZXRzIGJ5IHV0aWxpemluZyBTUUwgdGVtcGxhdGVzLiBCdWlsdCBvbiB0b3Agb2YgW0R1Y2tEQl0oaHR0cHM6Ly9kdWNrZGIub3JnLykgYW5kIGxldmVyYWdpbmcgaXRzIFNRTCBlbmdpbmUgYW5kIGV4dGVuc2lvbiBlY29zeXN0ZW0sIGZsQVBJIG9mZmVycyBhIHNlYW1sZXNzIHdheSB0byBjb25uZWN0IHRvIHZhcmlvdXMgZGF0YSBzb3VyY2VzIGFuZCBleHBvc2UgdGhlbSBhcyBSRVNUZnVsIEFQSXMuCgohW292ZXJ2aWV3IG9mIGZsQVBJXShodHRwczovL2kuaW1ndXIuY29tL203VVZabFIucG5nKQoKIyMg4pqhIEZlYXR1cmVzCgotICoqQXV0b21hdGljIEFQSSBHZW5lcmF0aW9uKio6IENyZWF0ZSBBUElzIGZvciB5b3VyIGRhdGFzZXRzIHdpdGhvdXQgY29kaW5nCi0gKipNQ1AgKE1vZGVsIENvbnRleHQgUHJvdG9jb2wpIFN1cHBvcnQqKjogRGVjbGFyYXRpdmUgY3JlYXRpb24gb2YgQUkgdG9vbHMgYWxvbmdzaWRlIFJFU1QgZW5kcG9pbnRzCi0gKipNdWx0aXBsZSBEYXRhIFNvdXJjZXMqKjogQ29ubmVjdCB0byBbQmlnUXVlcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9oYWZlbmtyYW4vZHVja2RiLWJpZ3F1ZXJ5KSwgU0FQIEVSUCAmIEJXICh2aWEgW0VSUExdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRhem9vZGUvZXJwbCkpLCBQYXJxdWV0LCBbSWNlYmVyZ10oaHR0cHM6Ly9naXRodWIuY29tL2R1Y2tkYi9kdWNrZGJfaWNlYmVyZyksIFtQb3N0Z3Jlc10oaHR0cHM6Ly9naXRodWIuY29tL2R1Y2tkYi9wb3N0Z3Jlc19zY2FubmVyKSwgW015U1FMXShodHRwczovL2dpdGh1Yi5jb20vZHVja2RiL2R1Y2tkYl9teXNxbCksIGFuZCBtb3JlCi0gKipTUUwgVGVtcGxhdGVzKio6IFVzZSBNdXN0YWNoZS1saWtlIHN5bnRheCBmb3IgZHluYW1pYyBxdWVyaWVzCi0gKipDYWNoaW5nKio6IER1Y2tMYWtlLWJhY2tlZCBjYWNoZSB3aXRoIGZ1bGwgcmVmcmVzaCBhbmQgaW5jcmVtZW50YWwgc3luYwotICoqU2VjdXJpdHkqKjogSW1wbGVtZW50IHJvdy1sZXZlbCBhbmQgY29sdW1uLWxldmVsIHNlY3VyaXR5IHdpdGggZWFzZQotICoqRWFzeSBkZXBsb3ltZW50Kio6IERlcGxveSBmbEFQSSB3aXRoIGEgc2luZ2xlIGJpbmFyeSBmaWxlCgojIyDwn5ugIFF1aWNrIFN0YXJ0ClRoZSBlYXNpZXN0IHdheSB0byBnZXQgc3RhcnRlZCB3aXRoIGZsQVBJIGlzIHRvIHVzZSB0aGUgcHJlLWJ1aWx0IGRvY2tlciBpbWFnZS4KCiMjIyMgMS4gUHVsbCB0aGUgZG9ja2VyIGltYWdlIGZyb20gdGhlIEdpdGh1YiBDb250YWluZXIgUmVnaXN0cnk6CgpgYGBiYXNoCj4gZG9ja2VyIHB1bGwgZ2hjci5pby9kYXRhem9vZGUvZmxhcGk6bGF0ZXN0CmBgYAoKClRoZSBpbWFnZSBpcyBwcmV0dHkgc21hbGwgYW5kIG1haW5seSBjb250YWlucyB0aGUgZmxBUEkgYmluYXJ5IHdoaWNoIGlzIHN0YXRpY2FsbHkgbGlua2VkIGFnYWluc3QgW0R1Y2tEQiB2MS40LjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9kdWNrZGIvZHVja2RiL3JlbGVhc2VzL3RhZy92MS40LjMpLiBEZXRhaWxzIGFib3V0IHRoZSBkb2NrZXIgaW1hZ2UgY2FuIGJlIGZvdW5kIGluIHRoZSBbRG9ja2VyZmlsZV0oLi9kb2NrZXIvZGV2ZWxvcG1lbnQvRG9ja2VyZmlsZSkuCgojIyMjIDIuIFJ1biBmbEFQSToKT25jZSB5b3UgaGF2ZSBkb3dubG9hZGVkIHRoZSBiaW5hcnksIHlvdSBjYW4gcnVuIGZsQVBJIGJ5IGV4ZWN1dGluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGAKPiBkb2NrZXIgcnVuIC1pdCAtLXJtIC1wIDgwODA6ODA4MCAtcCA4MDgxOjgwODEgLXYgJChwd2QpL2V4YW1wbGVzLzovY29uZmlnIGdoY3IuaW8vZGF0YXpvb2RlL2ZsYXBpIC1jIC9jb25maWcvZmxhcGkueWFtbApgYGAKClRoZSBkaWZmZXJlbnQgYXJndW1lbnRzIGluIHRoaXMgZG9ja2VyIGNvbW1hbmQgYXJlOgotIGAtaXQgLS1ybWA6IFJ1biB0aGUgY29udGFpbmVyIGluIGludGVyYWN0aXZlIG1vZGUgYW5kIHJlbW92ZSBpdCBhZnRlciB0aGUgcHJvY2VzcyBoYXMgZmluaXNoZWQKLSBgLXAgODA4MDo4MDgwYDogRXhwb3NlcyBwb3J0IDgwODAgb2YgdGhlIGNvbnRhaW5lciB0byB0aGUgaG9zdCwgdGhpcyBtYWtlcyB0aGUgUkVTVCBBUEkgYXZhaWxhYmxlIGF0IGBodHRwOi8vbG9jYWxob3N0OjgwODBgCi0gYC1wIDgwODE6ODA4MWA6IEV4cG9zZXMgcG9ydCA4MDgxIGZvciB0aGUgTUNQIHNlcnZlciAod2hlbiBlbmFibGVkKQotIGAtdiAkKHB3ZCkvZXhhbXBsZXMvOi9jb25maWdgOiBUaGlzIG1vdW50cyB0aGUgbG9jYWwgYGV4YW1wbGVzYCBkaXJlY3RvcnkgdG8gdGhlIGAvY29uZmlnYCBkaXJlY3RvcnkgaW4gdGhlIGNvbnRhaW5lciwgdGhpcyBpcyB3aGVyZSB0aGUgZmxBUEkgY29uZmlndXJhdGlvbiBmaWxlCmlzIGV4cGVjdGVkIHRvIGJlIGZvdW5kLgotIGBnaGNyLmlvL2RhdGF6b29kZS9mbGFwaWA6IFRoZSBkb2NrZXIgaW1hZ2UgdG8gdXNlCi0gYC1jIC9jb25maWcvZmxhcGkueWFtbGA6IFRoaXMgaXMgYW4gYXJndW1lbnQgdG8gdGhlIGZsQVBJIGFwcGxpY2F0aW9uIHdoaWNoIHRlbGxzIGl0IHRvIHVzZSB0aGUgYGZsYXBpLnlhbWxgIGZpbGUgaW4gdGhlIGAvY29uZmlnYCBkaXJlY3RvcnkgYXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4KCiMjIyMgMi4xIEVuYWJsZSBNQ1AgU3VwcG9ydDoKVG8gZW5hYmxlIE1DUCBzdXBwb3J0LCB5b3UgY2FuIGVpdGhlcjoKCioqT3B0aW9uIEE6IFVzZSB0aGUgY29tbWFuZCBsaW5lIGZsYWcqKgpgYGAKPiBkb2NrZXIgcnVuIC1pdCAtLXJtIC1wIDgwODA6ODA4MCAtcCA4MDgxOjgwODEgLXYgJChwd2QpL2V4YW1wbGVzLzovY29uZmlnIGdoY3IuaW8vZGF0YXpvb2RlL2ZsYXBpIC1jIC9jb25maWcvZmxhcGkueWFtbCAtLWVuYWJsZS1tY3AKYGBgCgoqKk9wdGlvbiBCOiBDb25maWd1cmUgaW4gZmxhcGkueWFtbCoqCmBgYHlhbWwKbWNwOgogIGVuYWJsZWQ6IHRydWUKICBwb3J0OiA4MDgxCiAgIyAuLi4gb3RoZXIgTUNQIGNvbmZpZ3VyYXRpb24KYGBgCgojIyMjIDMuMSBUZXN0IHRoZSBBUEkgc2VydmVyOgpJZiBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHksIHlvdSBzaG91bGQgYmUgYWJsZSB0byBhY2Nlc3MgdGhlIEFQSSBhdCB0aGUgVVJMIHNwZWNpZmllZCBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgoKYGBgYmFzaAo+IGN1cmwgJ2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MC8nCgoKICAgICAgICAgX19fCiAgICAgX19fKCBvKT4gICBXZWxjb21lIHRvCiAgICAgXCA8Xy4gKSAgICBmbEFQSQogICAgICBgLS0tJyAgICAKCiAgICBGYXN0IGFuZCBGbGV4aWJsZSBBUEkgRnJhbWV3b3JrCiAgICBwb3dlcmVkIGJ5IER1Y2tEQgpgYGAKCiMjIyMgMy4yIEdldCBhbiBvdmVydmlldyBvZiB0aGUgYXZhaWxhYmxlIGVuZHBvaW50czoKVGhlIGZsQVBJIHNlcnZlciBjcmVhdGVzIGVtYmVkZGVkIFN3YWdnZXIgVUkgYXQgd2hpY2ggcHJvdmlkZXMgYW4gb3ZlcnZpZXcgb2YgdGhlIGF2YWlsYWJsZSBlbmRwb2ludHMgYW5kIGFsbG93cyB5b3UgdG8gdGVzdCB0aGVtLiBJdCBjYW4gYmUgZm91bmQgYXQKCltgPiBodHRwOi8vbG9jYWxob3N0OjgwODAvZG9jYF0oaHR0cDovL2xvY2FsaG9zdDo4MDgwL2RvYykKCllvdSBzaG91bGQgc2VlIHRoZSBmYW1pbGlhciBTd2FnZ2VyIFVJIHBhZ2U6CgohW2ZsQVBJIFN3YWdnZXIgVUldKGh0dHBzOi8vaS5pbWd1ci5jb20vSHFqSE1sQS5wbmcpCgpUaGUgcmF3IHlhbWwgW1N3YWdnZXIgMi4wXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIGlzIGFsc28gYXZhaWxhYmxlIGF0IFtgaHR0cDovL2xvY2FsaG9zdDo4MDgwL2RvYy55YW1sYF0oaHR0cDovL2xvY2FsaG9zdDo4MDgwL2RvYy55YW1sKQoKIyMjIyAzLjMgVGVzdCB0aGUgTUNQIHNlcnZlcjoKSWYgTUNQIGlzIGVuYWJsZWQsIHlvdSBjYW4gdGVzdCB0aGUgTUNQIHNlcnZlciBhcyB3ZWxsOgoKYGBgYmFzaAojIENoZWNrIE1DUCBzZXJ2ZXIgaGVhbHRoCj4gY3VybCAnaHR0cDovL2xvY2FsaG9zdDo4MDgxL21jcC9oZWFsdGgnCgp7InN0YXR1cyI6ImhlYWx0aHkiLCJzZXJ2ZXIiOiJmbGFwaS1tY3Atc2VydmVyIiwidmVyc2lvbiI6IjAuMy4wIiwicHJvdG9jb2xfdmVyc2lvbiI6IjIwMjQtMTEtMDUiLCJ0b29sc19jb3VudCI6MH0KCiMgSW5pdGlhbGl6ZSBNQ1AgY29ubmVjdGlvbgo+IGN1cmwgLVggUE9TVCBodHRwOi8vbG9jYWxob3N0OjgwODEvbWNwL2pzb25ycGMgXAogIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtZCAneyJqc29ucnBjIjogIjIuMCIsICJpZCI6IDEsICJtZXRob2QiOiAiaW5pdGlhbGl6ZSJ9JwoKIyBMaXN0IGF2YWlsYWJsZSB0b29scwo+IGN1cmwgLVggUE9TVCBodHRwOi8vbG9jYWxob3N0OjgwODEvbWNwL2pzb25ycGMgXAogIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtZCAneyJqc29ucnBjIjogIjIuMCIsICJpZCI6IDIsICJtZXRob2QiOiAidG9vbHMvbGlzdCJ9JwpgYGAKCiMjIPCfpJYgTUNQIChNb2RlbCBDb250ZXh0IFByb3RvY29sKSBTdXBwb3J0CgpmbEFQSSBub3cgc3VwcG9ydHMgdGhlICoqTW9kZWwgQ29udGV4dCBQcm90b2NvbCAoTUNQKSoqIGluIGEgKip1bmlmaWVkIGNvbmZpZ3VyYXRpb24gYXBwcm9hY2gqKi4gRXZlcnkgZmxBUEkgaW5zdGFuY2UgYXV0b21hdGljYWxseSBydW5zIGJvdGggYSBSRVNUIEFQSSBzZXJ2ZXIgYW5kIGFuIE1DUCBzZXJ2ZXIgY29uY3VycmVudGx5LCBhbGxvd2luZyB5b3UgdG8gY3JlYXRlIEFJIHRvb2xzIGFsb25nc2lkZSB5b3VyIFJFU1QgZW5kcG9pbnRzIHVzaW5nIHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIFNRTCB0ZW1wbGF0ZXMuCgojIyMgS2V5IEZlYXR1cmVzCgotICoqVW5pZmllZCBDb25maWd1cmF0aW9uKio6IFNpbmdsZSBZQU1MIGZpbGVzIGNhbiBkZWZpbmUgUkVTVCBlbmRwb2ludHMsIE1DUCB0b29scywgYW5kIE1DUCByZXNvdXJjZXMKLSAqKkF1dG9tYXRpYyBEZXRlY3Rpb24qKjogQ29uZmlndXJhdGlvbiB0eXBlIGlzIGRldGVybWluZWQgYnkgcHJlc2VuY2Ugb2YgYHVybC1wYXRoYCAoUkVTVCksIGBtY3AtdG9vbGAgKE1DUCB0b29sKSwgb3IgYG1jcC1yZXNvdXJjZWAgKE1DUCByZXNvdXJjZSkKLSAqKlNoYXJlZCBDb21wb25lbnRzKio6IE1DUCB0b29scyBhbmQgcmVzb3VyY2VzIHVzZSB0aGUgc2FtZSBTUUwgdGVtcGxhdGVzLCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiwgYXV0aGVudGljYXRpb24sIGFuZCBjYWNoaW5nIGFzIFJFU1QgZW5kcG9pbnRzCi0gKipDb25jdXJyZW50IFNlcnZlcnMqKjogUkVTVCBBUEkgKHBvcnQgODA4MCkgYW5kIE1DUCBzZXJ2ZXIgKHBvcnQgODA4MSkgcnVuIHNpbXVsdGFuZW91c2x5Ci0gKipEZWNsYXJhdGl2ZSBEZWZpbml0aW9uKio6IERlZmluZSBldmVyeXRoaW5nIHVzaW5nIFlBTUwgY29uZmlndXJhdGlvbiB3aXRoIFNRTCB0ZW1wbGF0ZXN0b2NvbAotICoqVG9vbCBEaXNjb3ZlcnkqKjogQXV0b21hdGljIHRvb2wgZGlzY292ZXJ5IGFuZCBzY2hlbWEgZ2VuZXJhdGlvbgotICoqU2VjdXJpdHkgSW50ZWdyYXRpb24qKjogUmV1c2UgZXhpc3RpbmcgYXV0aGVudGljYXRpb24sIHJhdGUgbGltaXRpbmcsIGFuZCBjYWNoaW5nIGZlYXR1cmVzCgojIyMgTUNQIEVuZHBvaW50cwoKLSBgUE9TVCAvbWNwL2pzb25ycGNgIC0gTWFpbiBKU09OLVJQQyBlbmRwb2ludCBmb3IgdG9vbCBjYWxscwotIGBHRVQgL21jcC9oZWFsdGhgIC0gSGVhbHRoIGNoZWNrIGVuZHBvaW50CgojIyMgVW5pZmllZCBDb25maWd1cmF0aW9uCgoqKk1DUCBpcyBub3cgYXV0b21hdGljYWxseSBlbmFibGVkKiogLSBubyBzZXBhcmF0ZSBjb25maWd1cmF0aW9uIG5lZWRlZCEgRXZlcnkgZmxBUEkgaW5zdGFuY2UgcnVucyBib3RoIFJFU1QgQVBJIGFuZCBNQ1Agc2VydmVycyBjb25jdXJyZW50bHkuCgpDb25maWd1cmF0aW9uIGZpbGVzIGNhbiBkZWZpbmUgbXVsdGlwbGUgZW50aXR5IHR5cGVzOgoKIyMjIyBSRVNUIEVuZHBvaW50ICsgTUNQIFRvb2wgKFVuaWZpZWQpCgpgYGB5YW1sCiMgU2luZ2xlIGNvbmZpZ3VyYXRpb24gZmlsZSBzZXJ2ZXMgYXMgQk9USCBSRVNUIGVuZHBvaW50IEFORCBNQ1AgdG9vbAp1cmwtcGF0aDogL2N1c3RvbWVycy8gICAgICAgICAgICAgICAgICAgICMgTWFrZXMgdGhpcyBhIFJFU1QgZW5kcG9pbnQKbWNwLXRvb2w6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFsc28gbWFrZXMgdGhpcyBhbiBNQ1AgdG9vbAogIG5hbWU6IGdldF9jdXN0b21lcnMKICBkZXNjcmlwdGlvbjogUmV0cmlldmUgY3VzdG9tZXIgaW5mb3JtYXRpb24gYnkgSUQKICByZXN1bHQtbWltZS10eXBlOiBhcHBsaWNhdGlvbi9qc29uCgpyZXF1ZXN0OgogIC0gZmllbGQtbmFtZTogaWQKICAgIGZpZWxkLWluOiBxdWVyeQogICAgZGVzY3JpcHRpb246IEN1c3RvbWVyIElECiAgICByZXF1aXJlZDogZmFsc2UKICAgIHZhbGlkYXRvcnM6CiAgICAgIC0gdHlwZTogaW50CiAgICAgICAgbWluOiAxCiAgICAgICAgbWF4OiAxMDAwMDAwCiAgICAgICAgcHJldmVudFNxbEluamVjdGlvbjogdHJ1ZQoKdGVtcGxhdGUtc291cmNlOiBjdXN0b21lcnMuc3FsCmNvbm5lY3Rpb246IFtjdXN0b21lcnMtcGFycXVldF0KCnJhdGUtbGltaXQ6CiAgZW5hYmxlZDogdHJ1ZQogIG1heDogMTAwCiAgaW50ZXJ2YWw6IDYwCgphdXRoOgogIGVuYWJsZWQ6IHRydWUKICB0eXBlOiBiYXNpYwogIHVzZXJzOgogICAgLSB1c2VybmFtZTogYWRtaW4KICAgICAgcGFzc3dvcmQ6IHNlY3JldAogICAgICByb2xlczogW2FkbWluXQpgYGAKCiMjIyMgTUNQIFJlc291cmNlIE9ubHkKCmBgYHlhbWwKIyBNQ1AgUmVzb3VyY2UgZXhhbXBsZQptY3AtcmVzb3VyY2U6CiAgbmFtZTogY3VzdG9tZXJfc2NoZW1hCiAgZGVzY3JpcHRpb246IEN1c3RvbWVyIGRhdGFiYXNlIHNjaGVtYSBkZWZpbml0aW9uCiAgbWltZS10eXBlOiBhcHBsaWNhdGlvbi9qc29uCgp0ZW1wbGF0ZS1zb3VyY2U6IGN1c3RvbWVyLXNjaGVtYS5zcWwKY29ubmVjdGlvbjogW2N1c3RvbWVycy1wYXJxdWV0XQpgYGAKCiMjIyBVc2luZyBNQ1AgVG9vbHMKCk9uY2UgTUNQIGlzIGVuYWJsZWQsIHlvdSBjYW4gaW50ZXJhY3Qgd2l0aCB0b29scyB1c2luZyBKU09OLVJQQyAyLjA6CgpgYGBiYXNoCiMgQ2hlY2sgTUNQIHNlcnZlciBoZWFsdGgKY3VybCAnaHR0cDovL2xvY2FsaG9zdDo4MDgxL21jcC9oZWFsdGgnCgojIEluaXRpYWxpemUgTUNQIGNvbm5lY3Rpb24KY3VybCAtWCBQT1NUIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MS9tY3AvanNvbnJwYyBcCiAgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgXAogIC1kICd7Impzb25ycGMiOiAiMi4wIiwgImlkIjogMSwgIm1ldGhvZCI6ICJpbml0aWFsaXplIn0nCgojIExpc3QgYXZhaWxhYmxlIHRvb2xzIChkaXNjb3ZlcmVkIGZyb20gdW5pZmllZCBjb25maWd1cmF0aW9uKQpjdXJsIC1YIFBPU1QgaHR0cDovL2xvY2FsaG9zdDo4MDgxL21jcC9qc29ucnBjIFwKICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiBcCiAgLWQgJ3sianNvbnJwYyI6ICIyLjAiLCAiaWQiOiAyLCAibWV0aG9kIjogInRvb2xzL2xpc3QifScKCiMgQ2FsbCBhIHRvb2wgKHNhbWUgU1FMIHRlbXBsYXRlIHVzZWQgZm9yIGJvdGggUkVTVCBhbmQgTUNQKQpjdXJsIC1YIFBPU1QgaHR0cDovL2xvY2FsaG9zdDo4MDgxL21jcC9qc29ucnBjIFwKICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiBcCiAgLWQgJ3sianNvbnJwYyI6ICIyLjAiLCAiaWQiOiAzLCAibWV0aG9kIjogInRvb2xzL2NhbGwiLCAicGFyYW1zIjogeyJuYW1lIjogImdldF9jdXN0b21lcnMiLCAiYXJndW1lbnRzIjogeyJpZCI6ICIxMjMifX19JwpgYGAKCiMjIPCfjpMgRXhhbXBsZQoKSGVyZSdzIGEgc2ltcGxlIGV4YW1wbGUgb2YgaG93IHRvIGNyZWF0ZSBhbiBBUEkgZW5kcG9pbnQgdXNpbmcgZmxBUEk6CgojIyMgMS4gQ3JlYXRlIGEgYmFzaWMgZmxBUEkgY29uZmlndXJhdGlvbgpmbEFQSSB1c2VzIHRoZSBwb3B1bGFyIFtZQU1MXShodHRwczovL3lhbWwub3JnLykgZm9ybWF0IHRvIGNvbmZpZ3VyZSB0aGUgQVBJIGVuZHBvaW50cy4gQSBiYXNpYyBjb25maWd1cmF0aW9uIGZpbGUgbG9va3MgbGlrZSB0aGlzOgoKYGBgeWFtbApwcm9qZWN0X25hbWU6IGV4YW1wbGUtZmxhcGktcHJvamVjdApwcm9qZWN0X2Rlc2NyaXB0aW9uOiBBbiBleGFtcGxlIGZsQVBJIHByb2plY3QgZGVtb25zdHJhdGluZyB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucwp0ZW1wbGF0ZToKICBwYXRoOiAnLi9zcWxzJyAgICAgICAgICAgICMgVGhlIHBhdGggd2hlcmUgU1FMIHRlbXBsYXRlcyBhbmQgQVBJIGVuZHBvaW50IGNvbmZpZ3VyYXRpb25zIGFyZSBzdG9yZWQKICBlbnZpcm9ubWVudC13aGl0ZWxpc3Q6ICAgICMgT3B0aW9uYWw6IExpc3Qgb2YgcmVndWxhciBleHByZXNzaW9ucyBmb3Igd2hpdGVsaXN0aW5nIGVudnZhcnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBpbiB0aGUgdGVtcGxhdGVzCiAgICAtICdeRkxBUElfLionCgpkdWNrZGI6ICAgICAgICAgICAgICAgICAgICAgIyBDb25maWd1cmF0aW9uIG9mIHRoZSBEdWNrREIgZW1iZWRkZWQgaW50byBmbEFQSQogIGRiX3BhdGg6IC4vZmxhcGlfY2FjaGUuZGIgIyBPcHRpb25hbDogcmVtb3ZlIG9yIGNvbW1lbnQgb3V0IGZvciBpbi1tZW1vcnkgZGF0YWJhc2UsIHdlIHVzZSB0aGlzIHN0b3JlIGFsc28gYXMgY2FjaGUKICBhY2Nlc3NfbW9kZTogUkVBRF9XUklURSAgICMgU2VlIHRoZSBodHRwczovL2R1Y2tkYi5vcmcvZG9jcy9jb25maWd1cmF0aW9uL292ZXJ2aWV3KSBmb3IgbW9yZSBkZXRhaWxzCiAgdGhyZWFkczogOAogIG1heF9tZW1vcnk6IDhHQgogIGRlZmF1bHRfb3JkZXI6IERFU0MKCmNvbm5lY3Rpb25zOiAgICAgICAgICAgICAgICAjIEEgWUFNTCBtYXAgb2YgZGF0YWJhc2UgY29ubmVjdGlvbiBjb25maWd1cmF0aW9ucywgYSBBUEkgZW5kcG9pbnQgbmVlZHMgdG8gcmVmZXJlbmNlIG9uZSBvZiB0aGVzZSBjb25uZWN0aW9ucwogICBiaWdxdWVyeS1sYWtlaG91c2U6IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTUUwgY29tbWFuZHMgdG8gaW5pdGlhbGl6ZSB0aGUgY29ubmVjdGlvbiAoZS5nLiwgZS5nLiBpbnN0YWxsaW5nLCBsb2FkaW5nIGFuZCBjb25maWd1cmluZyB0aGUgQlEgYSBEdWNrREIgZXh0ZW5zaW9uKQogICAgICBpbml0OiB8CiAgICAgICAgIElOU1RBTEwgJ2JpZ3F1ZXJ5JyBGUk9NICdodHRwOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9oYWZlbmtyYW4nOwogICAgICAgICBMT0FEICdiaWdxdWVyeSc7CiAgICAgIHByb3BlcnRpZXM6ICAgICAgICAgICAjIEEgWUFNTCBtYXAgb2YgY29ubmVjdGlvbi1zcGVjaWZpYyBwcm9wZXJ0aWVzIChhY2Nlc3NpYmxlIGluIHRlbXBsYXRlcyB2aWEge3sgY29udGV4dC5jb25uLnByb3BlcnR5X25hbWUgfX0pCiAgICAgICAgIHByb2plY3RfaWQ6ICdteS1wcm9qZWN0LWlkJwoKICAgY3VzdG9tZXJzLXBhcnF1ZXQ6IAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgICBwYXRoOiAnLi9kYXRhL2N1c3RvbWVycy5wYXJxdWV0JwoKaGVhcnRiZWF0OgogIGVuYWJsZWQ6IHRydWUgICAgICAgICAgICAjIFRoZSBlYXJ0YmVhdCB3b3JrZXIgaXMgYSBiYWNrZ3JvdW5kIHRocmVhZCB3aGljaCBjYW4gY2FuIGJlIHVzZWQgdG8gcGVyaW9kaWNhbGx5IHRyaWdnZXIgZW5kcGlvbnRzCiAgd29ya2VyLWludGVydmFsOiAxMCAgICAgICMgVGhlIGludGVydmFsIGluIHNlY29uZHMgYXQgd2hpY2ggdGhlIGhlYXJ0YmVhdCB3b3JrZXIgd2lsbCB0cmlnZ2VyIGVuZHBvaW50cwoKZW5mb3JjZS1odHRwczoKICBlbmFibGVkOiBmYWxzZSAgICAgICAgICAgIyBXaGV0aGVyIHRvIGZvcmNlIEhUVFBTIGZvciB0aGUgQVBJIGNvbm5lY3Rpb25zLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQgdG8gdXNlIGEgcmV2ZXJzZSBwcm94eSB0byBkbyBTU0wgdGVybWluYXRpb24KICAjIHNzbC1jZXJ0LWZpbGU6ICcuL3NzbC9jZXJ0LnBlbScKICAjIHNzbC1rZXktZmlsZTogJy4vc3NsL2tleS5wZW0nCgpgYGAKCkFmdGVyIHRoYXQgZW5zdXJlIHRoYXQgdGhlIHRlbXBsYXRlIHBhdGggKGAuL3NxbHNgIGluIHRoaXMgZXhhbXBsZSkgZXhpc3RzLgoKIyMjIDEuIERlZmluZSB5b3VyIEFQSSBlbmRwb2ludCAoYC4vc3Fscy9jdXN0b21lcnMueWFtbGApOgpFYWNoIGVuZHBvaW50IGlzIGF0IGxlYXN0IGRlZmluZWQgYnkgYSBZQU1MIGZpbGUgYW5kIGEgY29ycmVzcG9uZGluZyBTUUwgdGVtcGxhdGUgaW4gdGhlIHRlbXBsYXRlIHBhdGguIEZvciBvdXIgZXhhbXBsZSB3ZSB3aWxsIGNyZWF0ZSB0aGUgZmlsZSBgLi9zcWxzL2N1c3RvbWVycy55YW1sYDoKCmBgYHlhbWwKdXJsLXBhdGg6IC9jdXN0b21lcnMvICAgICAgIyBUaGUgVVJMIHBhdGggYXQgd2hpY2ggdGhlIGVuZHBvaW50IHdpbGwgYmUgYXZhaWxhYmxlCgpyZXF1ZXN0OiAgICAgICAgICAgICAgICAgICMgVGhlIHJlcXVlc3QgY29uZmlndXJhdGlvbiBmb3IgdGhlIGVuZHBvaW50LCB0aGlzIGRlZmluZXMgdGhlIHBhcmFtZXRlcnMgdGhhdCBjYW4gYmUgdXNlZCBpbiB0aGUgcXVlcnkKICAtIGZpZWxkLW5hbWU6IGlkCiAgICBmaWVsZC1pbjogcXVlcnkgICAgICAgIyBUaGUgbG9jYXRpb24gb2YgdGhlIHBhcmFtZXRlciwgb3RoZXIgb3B0aW9ucyBhcmUgJ3BhdGgnLCAncXVlcnknIGFuZCAnYm9keScKICAgIGRlc2NyaXB0aW9uOiBDdXN0b21lciBJRCAjIEEgZGVzY3JpcHRpb24gb2YgdGhlIHBhcmFtZXRlciwgdGhpcyBpcyB1c2VkIGluIHRoZSBhdXRvLWdlbmVyYXRlZCBBUEkgZG9jdW1lbnRhdGlvbgogICAgcmVxdWlyZWQ6IGZhbHNlICAgICAgICMgV2hldGhlciB0aGUgcGFyYW1ldGVyIGlzIHJlcXVpcmVkCiAgICB2YWxpZGF0b3JzOiAgICAgICAgICAgIyBBIGxpc3Qgb2YgdmFsaWRhdG9ycyB0aGF0IHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcGFyYW1ldGVyCiAgICAgIC0gdHlwZTogaW50CiAgICAgICAgbWluOiAxCiAgICAgICAgbWF4OiAxMDAwMDAwCiAgICAgICAgcHJldmVudFNxbEluamVjdGlvbjogdHJ1ZQoKdGVtcGxhdGUtc291cmNlOiBjdXN0b21lcnMuc3FsICMgVGhlIHBhdGggdG8gdGhlIFNRTCB0ZW1wbGF0ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgZW5kcG9pbnQKY29ubmVjdGlvbjogCiAgLSBjdXN0b21lcnMtcGFycXVldCAgICAgICAgICAjIFRoZSBjb25uZWN0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIHF1ZXJ5CgpyYXRlLWxpbWl0OgogIGVuYWJsZWQ6IHRydWUgICAgICAgICAgICMgV2hldGhlciByYXRlIGxpbWl0aW5nIGlzIGVuYWJsZWQgZm9yIHRoZSBlbmRwb2ludAogIG1heDogMTAwICAgICAgICAgICAgICAgICMgVGhlIG1heGltdW0gbnVtYmVyIG9mIHJlcXVlc3RzIHBlciBpbnRlcnZhbAogIGludGVydmFsOiA2MCAgICAgICAgICAgICMgVGhlIGludGVydmFsIGluIHNlY29uZHMKICAKYXV0aDoKICBlbmFibGVkOiB0cnVlICAgICAgICAgICAjIFdoZXRoZXIgYXV0aGVudGljYXRpb24gaXMgZW5hYmxlZCBmb3IgdGhlIGVuZHBvaW50CiAgdHlwZTogYmFzaWMgICAgICAgICAgICAgIyBUaGUgdHlwZSBvZiBhdXRoZW50aWNhdGlvbiwgb3RoZXIgb3B0aW9ucyBhcmUgJ2Jhc2ljJyBhbmQgJ2JlYXJlcicKICB1c2VyczogICAgICAgICAgICAgICAgICAjIFRoZSB1c2VycyB0aGF0IGFyZSBhbGxvd2VkIHRvIGFjY2VzcyB0aGUgZW5kcG9pbnQKICAgIC0gdXNlcm5hbWU6IGFkbWluCiAgICAgIHBhc3N3b3JkOiBzZWNyZXQKICAgICAgcm9sZXM6IFthZG1pbl0KICAgIC0gdXNlcm5hbWU6IHVzZXIKICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkCiAgICAgIHJvbGVzOiBbcmVhZF0KCmhlYXJ0YmVhdDoKICBlbmFibGVkOiB0cnVlICAgICAgICAgICAjIFdoZXRoZXIgdGhlIGhlYXJ0YmVhdCB3b3JrZXIgaWYgZW5hYmxlZCB3aWxsIHRyaWdnZXIgdGhlIGVuZHBvaW50IHBlcmlvZGljYWxseQogIHBhcmFtczogICAgICAgICAgICAgICAgICMgQSBZQU1MIG1hcCBvZiBwYXJhbWV0ZXJzIHRoYXQgd2lsbCBiZSBwYXNzZWQgYnkgdGhlIGhlYXJ0YmVhdCB3b3JrZXIgdG8gdGhlIGVuZHBvaW50CiAgICBpZDogMTIzCgpgYGAKVGhlcmUgYXJlIG1hbnkgbW9yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXZhaWxhYmxlLCBzZWUgdGhlIFtmdWxsIGRvY3VtZW50YXRpb25dKGxpbmstdG8teW91ci1kb2NzKSBmb3IgbW9yZSBkZXRhaWxzLgoKIyMjIDIuIENvbmZpZ3VyZSB0aGUgZW5kcG9pbnRzIFNRTCB0ZW1wbGF0ZSAoYC4vc3Fscy9jdXN0b21lcnMuc3FsYCk6CkFmdGVyIHRoZSBjcmVhdGlvbiBvZiB0aGUgWUFNTCBlbmRwb2ludCBjb25maWd1cmF0aW9uIHdlIG5lZWQgdG8gY29ubmVjdCB0aGUgU1FMIHRlbXBsYXRlIHdoaWNoIGNvbm5lY3RzIHRoZSBlbnBvaW50IHRvIHRoZSBkYXRhIGNvbm5lY3Rpb24uClRoZSB0ZW1wbGF0ZSBmaWxlcyB1c2UgdGhlIFtNdXN0YWNoZSB0ZW1wbGF0aW5nIGxhbmd1YWdlXShodHRwczovL211c3RhY2hlLmdpdGh1Yi5pby8pIHRvIGR5bmFtaWNhbGx5IGdlbmVyYXRlIHRoZSBTUUwgcXVlcnkuIAoKYGBgc3FsClNFTEVDVCAqIEZST00gJ3t7e2Nvbm4ucGF0aH19fScKV0hFUkUgMT0xCnt7I3BhcmFtcy5pZH19CiAgQU5EIGNfY3VzdGtleSA9IHt7eyBwYXJhbXMuaWQgfX19Cnt7L3BhcmFtcy5pZH19CmBgYAoKVGhlIGFib3ZlIHRlbXBsYXRlIHVzZXMgdGhlIGBwYXRoYCBwYXJhbWV0ZXIgZGVmaW5lZCBpbiB0aGUgY29ubmVjdGlvbiBjb25maWd1cmF0aW9uIHRvIGRpcmVjdGx5IHF1ZXJ5IGEgbG9jYWwgcGFycXVldCBmaWxlLiBJZiB0aGUgaWQgcGFyYW1ldGVyIGlzIApwcm92aWRlZCwgaXQgd2lsbCBiZSB1c2VkIHRvIGZpbHRlciB0aGUgcmVzdWx0cy4KCiMjIyAzLiBTZW5kIGEgcmVxdWVzdDoKVG8gdGVzdCB0aGUgZW5kcG9pbnQgYW5kIHNlZSBpZiBldmVyeXRoaW5nIHdvcmtlZCwgd2UgY2FuIHVzZSBjdXJsLiBXZSBzaG91bGQgYWxzbyBwcm92aWRlIHRoZSBjb3JyZWN0IGJhc2ljIGF1dGggY3JlZGVudGlhbHMgKGBhZG1pbjpzZWNyZXRgIGluIHRoaXMgY2FzZSkuIFRvIG1ha2UgdGhlIEpTT04gcmVzdWx0IGVhc2llciB0byByZWFkLCB3ZSBwaXBlIHRoZSBvdXRwdXQgdG8gW2BqcWBdKGh0dHBzOi8vanFsYW5nLmdpdGh1Yi5pby9qcS8pLgoKYGBgYmFzaAo+IGN1cmwgLVggR0VUIC11IGFkbWluOnNlY3JldCAiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2N1c3RvbWVycz9pZD0xMjMiIHwganEgLgoKewogICJuZXh0IjogIiIsCiAgInRvdGFsX2NvdW50IjogMSwKICAiZGF0YSI6IFsKICAgIHsKICAgICAgImNfbWt0c2VnbWVudCI6ICJCVUlMRElORyIsCiAgICAgICJjX2FjY3RiYWwiOiA1ODk3LjgyOTk5OTk5OTk5OTkyNzI0LAogICAgICAiY19waG9uZSI6ICIxNS04MTctMTUxLTExNjgiLAogICAgICAiY19hZGRyZXNzIjogIllzT25hYUVSOE1rdks1Y3BmNFZTbHEiLAogICAgICAiY19uYXRpb25rZXkiOiA1LAogICAgICAiY19uYW1lIjogIkN1c3RvbWVyIzAwMDAwMDEyMyIsCiAgICAgICJjX2NvbW1lbnQiOiAiZXBlbmRlbmNpZXMuIHJlZ3VsYXIsIGlyb25pYyByZXF1ZXN0cyBhcmUgZmx1ZmZpbHkgcmVndSIsCiAgICAgICJjX2N1c3RrZXkiOiAxMjMKICAgIH0KICBdCn0KCmBgYAoKIyMg4oGJ77iPIER1Y2tMYWtlLWJhY2tlZCBjYWNoaW5nIChjdXJyZW50IGltcGxlbWVudGF0aW9uKQpmbEFQSSB1c2VzIHRoZSBEdWNrREIgRHVja0xha2UgZXh0ZW5zaW9uIHRvIHByb3ZpZGUgbW9kZXJuLCBzbmFwc2hvdC1iYXNlZCBjYWNoaW5nLiBZb3Ugd3JpdGUgdGhlIFNRTCB0byBkZWZpbmUgdGhlIGNhY2hlZCB0YWJsZSwgYW5kIGZsQVBJIG1hbmFnZXMgc2NoZW1hcywgc25hcHNob3RzLCByZXRlbnRpb24sIHNjaGVkdWxpbmcsIGFuZCBhdWRpdCBsb2dzLgoKIyMjIFF1aWNrIHN0YXJ0OiBGdWxsIHJlZnJlc2ggY2FjaGUKMSkgQ29uZmlndXJlIER1Y2tMYWtlIGdsb2JhbGx5IChhbGlhcyBpcyBgY2FjaGVgIGJ5IGRlZmF1bHQpOgpgYGB5YW1sCmR1Y2tsYWtlOgogIGVuYWJsZWQ6IHRydWUKICBhbGlhczogY2FjaGUKICBtZXRhZGF0YS1wYXRoOiAuL2V4YW1wbGVzL2RhdGEvY2FjaGUuZHVja2xha2UKICBkYXRhLXBhdGg6IC4vZXhhbXBsZXMvZGF0YS9jYWNoZS5kdWNrbGFrZQogIGRhdGEtaW5saW5pbmctcm93LWxpbWl0OiAxMCAgIyBFbmFibGUgZGF0YSBpbmxpbmluZyBmb3Igc21hbGwgY2hhbmdlcyAob3B0aW9uYWwpCiAgcmV0ZW50aW9uOgogICAgbWF4LXNuYXBzaG90LWFnZTogMTRkCiAgY29tcGFjdGlvbjoKICAgIGVuYWJsZWQ6IGZhbHNlCiAgc2NoZWR1bGVyOgogICAgZW5hYmxlZDogdHJ1ZQpgYGAKCjIpIEFkZCBjYWNoZSBibG9jayB0byB5b3VyIGVuZHBvaW50IChubyBgcHJpbWFyeS1rZXlgL2BjdXJzb3JgIOKGkiBmdWxsIHJlZnJlc2gpOgpgYGB5YW1sCnVybC1wYXRoOiAvcHVibGljaXMKdGVtcGxhdGUtc291cmNlOiBwdWJsaWNpcy5zcWwKY29ubmVjdGlvbjogW2JpZ3F1ZXJ5LWxha2Vob3VzZV0KCmNhY2hlOgogIGVuYWJsZWQ6IHRydWUKICB0YWJsZTogcHVibGljaXNfY2FjaGUKICBzY2hlbWE6IGFuYWx5dGljcwogIHNjaGVkdWxlOiA1bQogIHJldGVudGlvbjoKICAgIG1heF9zbmFwc2hvdF9hZ2U6IDE0ZAogIHRlbXBsYXRlX2ZpbGU6IHB1YmxpY2lzL3B1YmxpY2lzX2NhY2hlLnNxbApgYGAKCjMpIFdyaXRlIHRoZSBjYWNoZSBTUUwgdGVtcGxhdGUgKENUQVMpOgpgYGBzcWwKLS0gcHVibGljaXMvcHVibGljaXNfY2FjaGUuc3FsCkNSRUFURSBPUiBSRVBMQUNFIFRBQkxFIHt7Y2FjaGUuY2F0YWxvZ319Lnt7Y2FjaGUuc2NoZW1hfX0ue3tjYWNoZS50YWJsZX19IEFTClNFTEVDVAogIHAuY291bnRyeSwKICBwLnByb2R1Y3RfY2F0ZWdvcnksCiAgcC5jYW1wYWlnbl90eXBlLAogIHAuY2hhbm5lbCwKICBzdW0ocC5jbGlja3MpIEFTIGNsaWNrcwpGUk9NIGJpZ3F1ZXJ5X3NjYW4oJ3t7e2Nvbm4ucHJvamVjdF9pZH19fS5sYW5kaW5nX19wdWJsaWNpcy5rYWVyY2hlcl91bmlvbl9hbGwnKSBBUyBwCkdST1VQIEJZIDEsIDIsIDMsIDQ7CmBgYAoKNCkgUXVlcnkgZnJvbSB0aGUgY2FjaGUgaW4geW91ciBtYWluIFNRTDoKYGBgc3FsCi0tIHB1YmxpY2lzLnNxbApTRUxFQ1QKICBwLmNvdW50cnksCiAgcC5wcm9kdWN0X2NhdGVnb3J5LAogIHAuY2FtcGFpZ25fdHlwZSwKICBwLmNoYW5uZWwsCiAgcC5jbGlja3MKRlJPTSB7e2NhY2hlLmNhdGFsb2d9fS57e2NhY2hlLnNjaGVtYX19Lnt7Y2FjaGUudGFibGV9fSBBUyBwCldIRVJFIDE9MQpgYGAKCk5vdGVzOgotIFRoZSBjYWNoZSBzY2hlbWEgKGBjYWNoZS5hbmFseXRpY3NgKSBpcyBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgaWYgbWlzc2luZy4KLSBSZWd1bGFyIEdFVCByZXF1ZXN0cyBuZXZlciByZWZyZXNoIHRoZSBjYWNoZS4gUmVmcmVzaGVzIGhhcHBlbiBvbiB3YXJtdXAsIG9uIHNjaGVkdWxlLCBvciB2aWEgdGhlIG1hbnVhbCBBUEkuCi0gKipEYXRhIElubGluaW5nKio6IFdoZW4gYGRhdGEtaW5saW5pbmctcm93LWxpbWl0YCBpcyBjb25maWd1cmVkLCBzbWFsbCBjYWNoZSBjaGFuZ2VzICjiiaQgc3BlY2lmaWVkIHJvdyBsaW1pdCkgYXJlIHdyaXR0ZW4gZGlyZWN0bHkgdG8gRHVja0xha2UgbWV0YWRhdGEgaW5zdGVhZCBvZiBjcmVhdGluZyBzZXBhcmF0ZSBQYXJxdWV0IGZpbGVzLiBUaGlzIGltcHJvdmVzIHBlcmZvcm1hbmNlIGZvciBzbWFsbCBpbmNyZW1lbnRhbCB1cGRhdGVzLgoKIyMjIyBEYXRhIGlubGluaW5nIChvcHRpb25hbCwgZm9yIHNtYWxsIGNoYW5nZXMpCgpEdWNrTGFrZSBzdXBwb3J0cyB3cml0aW5nIHZlcnkgc21hbGwgaW5zZXJ0cyBkaXJlY3RseSBpbnRvIHRoZSBtZXRhZGF0YSBjYXRhbG9nIGluc3RlYWQgb2YgY3JlYXRpbmcgYSBQYXJxdWV0IGZpbGUgZm9yIGV2ZXJ5IG1pY3JvLWJhdGNoLiBUaGlzIGlzIGNhbGxlZCAiRGF0YSBJbmxpbmluZyIgYW5kIGNhbiBzaWduaWZpY2FudGx5IHNwZWVkIHVwIHNtYWxsLCBmcmVxdWVudCB1cGRhdGVzLgoKLSAqKkVuYWJsZSBnbG9iYWxseSoqOiBjb25maWd1cmUgb25jZSB1bmRlciB0aGUgdG9wLWxldmVsIGBkdWNrbGFrZWAgYmxvY2s6CgogIGBgYHlhbWwKICBkdWNrbGFrZToKICAgIGVuYWJsZWQ6IHRydWUKICAgIGFsaWFzOiBjYWNoZQogICAgbWV0YWRhdGFfcGF0aDogLi9leGFtcGxlcy9kYXRhL2NhY2hlLmR1Y2tsYWtlCiAgICBkYXRhX3BhdGg6IC4vZXhhbXBsZXMvZGF0YS9jYWNoZS5kdWNrbGFrZQogICAgZGF0YV9pbmxpbmluZ19yb3dfbGltaXQ6IDEwICAjIGlubGluZSBpbnNlcnRzIHVwIHRvIDEwIHJvd3MKICBgYGAKCi0gKipCZWhhdmlvcioqOgogIC0gSW5zZXJ0cyB3aXRoIHJvd3Mg4omkIGBkYXRhLWlubGluaW5nLXJvdy1saW1pdGAgYXJlIGlubGluZWQgaW50byB0aGUgY2F0YWxvZyBtZXRhZGF0YS4KICAtIExhcmdlciBpbnNlcnRzIGF1dG9tYXRpY2FsbHkgZmFsbCBiYWNrIHRvIG5vcm1hbCBQYXJxdWV0IGZpbGUgd3JpdGVzLgogIC0gSW5saW5pbmcgYXBwbGllcyB0byBhbGwgY2FjaGVzIChnbG9iYWwgc2V0dGluZyksIG5vIHBlci1lbmRwb2ludCB0b2dnbGUuCgotICoqTWFudWFsIGZsdXNoIChvcHRpb25hbCkqKjogeW91IGNhbiBmbHVzaCBpbmxpbmVkIGRhdGEgdG8gUGFycXVldCBmaWxlcyBhdCBhbnkgdGltZSB1c2luZyBEdWNrTGFrZeKAmXMgZnVuY3Rpb24uIEFzc3VtaW5nIHlvdXIgRHVja0xha2UgYWxpYXMgaXMgYGNhY2hlYDoKCiAgYGBgc3FsCiAgLS0gRmx1c2ggYWxsIGlubGluZWQgZGF0YSBpbiB0aGUgY2F0YWxvZwogIENBTEwgZHVja2xha2VfZmx1c2hfaW5saW5lZF9kYXRhKCdjYWNoZScpOwoKICAtLSBGbHVzaCBvbmx5IGEgc3BlY2lmaWMgc2NoZW1hCiAgQ0FMTCBkdWNrbGFrZV9mbHVzaF9pbmxpbmVkX2RhdGEoJ2NhY2hlJywgc2NoZW1hX25hbWUgPT4gJ2FuYWx5dGljcycpOwoKICAtLSBGbHVzaCBvbmx5IGEgc3BlY2lmaWMgdGFibGUgKGRlZmF1bHQgc2NoZW1hICJtYWluIikKICBDQUxMIGR1Y2tsYWtlX2ZsdXNoX2lubGluZWRfZGF0YSgnY2FjaGUnLCB0YWJsZV9uYW1lID0+ICdldmVudHNfY2FjaGUnKTsKCiAgLS0gRmx1c2ggYSBzcGVjaWZpYyB0YWJsZSBpbiBhIHNwZWNpZmljIHNjaGVtYQogIENBTEwgZHVja2xha2VfZmx1c2hfaW5saW5lZF9kYXRhKCdjYWNoZScsIHNjaGVtYV9uYW1lID0+ICdhbmFseXRpY3MnLCB0YWJsZV9uYW1lID0+ICdldmVudHNfY2FjaGUnKTsKICBgYGAKCi0gKipOb3RlcyoqOgogIC0gVGhpcyBmZWF0dXJlIGlzIHByb3ZpZGVkIGJ5IER1Y2tMYWtlIGFuZCBpcyBjdXJyZW50bHkgbWFya2VkIGV4cGVyaW1lbnRhbCB1cHN0cmVhbS4gU2VlIHRoZSBEdWNrTGFrZSBkb2NzIGZvciBkZXRhaWxzOiBbRGF0YSBJbmxpbmluZ10oaHR0cHM6Ly9kdWNrbGFrZS5zZWxlY3QvZG9jcy9zdGFibGUvZHVja2RiL2FkdmFuY2VkX2ZlYXR1cmVzL2RhdGFfaW5saW5pbmcuaHRtbCkuCiAgLSBJZiB5b3UgZG9u4oCZdCBzZXQgYGRhdGFfaW5saW5pbmdfcm93X2xpbWl0YCwgZmxBUEkgd29u4oCZdCBlbmFibGUgaW5saW5pbmcgYW5kIER1Y2tMYWtlIHdpbGwgdXNlIHJlZ3VsYXIgUGFycXVldCB3cml0ZXMuCgojIyMgQWR2YW5jZWQ6IEluY3JlbWVudGFsIGFwcGVuZCBhbmQgbWVyZ2UKVGhlIGVuZ2luZSBpbmZlcnMgc3luYyBtb2RlIGZyb20geW91ciBZQU1MOgotIE5vIGBwcmltYXJ5LWtleWAsIG5vIGBjdXJzb3JgIOKGkiBmdWxsIHJlZnJlc2ggKENUQVMpCi0gV2l0aCBgY3Vyc29yYCBvbmx5IOKGkiBpbmNyZW1lbnRhbCBhcHBlbmQKLSBXaXRoIGBwcmltYXJ5LWtleWAgKyBgY3Vyc29yYCDihpIgaW5jcmVtZW50YWwgbWVyZ2UgKHVwc2VydCkKCkV4YW1wbGUgWUFNTHM6CmBgYHlhbWwKIyBJbmNyZW1lbnRhbCBhcHBlbmQKY2FjaGU6CiAgZW5hYmxlZDogdHJ1ZQogIHRhYmxlOiBldmVudHNfY2FjaGUKICBzY2hlbWE6IGFuYWx5dGljcwogIHNjaGVkdWxlOiAxMG0KICBjdXJzb3I6CiAgICBjb2x1bW46IGNyZWF0ZWRfYXQKICAgIHR5cGU6IHRpbWVzdGFtcAogIHRlbXBsYXRlLWZpbGU6IGV2ZW50cy9ldmVudHNfY2FjaGUuc3FsCgojIEluY3JlbWVudGFsIG1lcmdlICh1cHNlcnQpCmNhY2hlOgogIGVuYWJsZWQ6IHRydWUKICB0YWJsZTogY3VzdG9tZXJzX2NhY2hlCiAgc2NoZW1hOiBhbmFseXRpY3MKICBzY2hlZHVsZTogMTVtCiAgcHJpbWFyeS1rZXk6IFtpZF0KICBjdXJzb3I6CiAgICBjb2x1bW46IHVwZGF0ZWRfYXQKICAgIHR5cGU6IHRpbWVzdGFtcAogIHRlbXBsYXRlX2ZpbGU6IGN1c3RvbWVycy9jdXN0b21lcnNfY2FjaGUuc3FsCmBgYAoKQ2FjaGUgdGVtcGxhdGUgdmFyaWFibGVzIGF2YWlsYWJsZSB0byB5b3VyIFNRTDoKLSBge3tjYWNoZS5jYXRhbG9nfX1gLCBge3tjYWNoZS5zY2hlbWF9fWAsIGB7e2NhY2hlLnRhYmxlfX1gLCBge3tjYWNoZS5zY2hlZHVsZX19YAotIGB7e2NhY2hlLnNuYXBzaG90SWR9fWAsIGB7e2NhY2hlLnNuYXBzaG90VGltZXN0YW1wfX1gIChjdXJyZW50KQotIGB7e2NhY2hlLnByZXZpb3VzU25hcHNob3RJZH19YCwgYHt7Y2FjaGUucHJldmlvdXNTbmFwc2hvdFRpbWVzdGFtcH19YCAocHJldmlvdXMpCi0gYHt7Y2FjaGUuY3Vyc29yQ29sdW1ufX1gLCBge3tjYWNoZS5jdXJzb3JUeXBlfX1gCi0gYHt7Y2FjaGUucHJpbWFyeUtleXN9fWAKLSBge3twYXJhbXMuY2FjaGVNb2RlfX1gIGlzIGF2YWlsYWJsZSB3aXRoIHZhbHVlcyBgZnVsbGAsIGBhcHBlbmRgLCBvciBgbWVyZ2VgCgpJbmNyZW1lbnRhbCBhcHBlbmQgZXhhbXBsZToKYGBgc3FsCi0tIGV2ZW50cy9ldmVudHNfY2FjaGUuc3FsCklOU0VSVCBJTlRPIHt7Y2FjaGUuY2F0YWxvZ319Lnt7Y2FjaGUuc2NoZW1hfX0ue3tjYWNoZS50YWJsZX19ClNFTEVDVCAqCkZST00gc291cmNlX2V2ZW50cwpXSEVSRSB7eyNjYWNoZS5wcmV2aW91c1NuYXBzaG90VGltZXN0YW1wfX0gZXZlbnRfdGltZSA+IFRJTUVTVEFNUCAne3tjYWNoZS5wcmV2aW91c1NuYXBzaG90VGltZXN0YW1wfX0nIHt7L2NhY2hlLnByZXZpb3VzU25hcHNob3RUaW1lc3RhbXB9fQpgYGAKCkluY3JlbWVudGFsIG1lcmdlIGV4YW1wbGU6CmBgYHNxbAotLSBjdXN0b21lcnMvY3VzdG9tZXJzX2NhY2hlLnNxbApNRVJHRSBJTlRPIHt7Y2FjaGUuY2F0YWxvZ319Lnt7Y2FjaGUuc2NoZW1hfX0ue3tjYWNoZS50YWJsZX19IEFTIHQKVVNJTkcgKAogIFNFTEVDVCAqIEZST00gc291cmNlX2N1c3RvbWVycwogIFdIRVJFIHt7I2NhY2hlLnByZXZpb3VzU25hcHNob3RUaW1lc3RhbXB9fSB1cGRhdGVkX2F0ID4gVElNRVNUQU1QICd7e2NhY2hlLnByZXZpb3VzU25hcHNob3RUaW1lc3RhbXB9fScge3svY2FjaGUucHJldmlvdXNTbmFwc2hvdFRpbWVzdGFtcH19CikgQVMgcwpPTiB0LmlkID0gcy5pZApXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUgU0VUCiAgbmFtZSA9IHMubmFtZSwKICBlbWFpbCA9IHMuZW1haWwsCiAgdXBkYXRlZF9hdCA9IHMudXBkYXRlZF9hdApXSEVOIE5PVCBNQVRDSEVEIFRIRU4gSU5TRVJUICgqKSBWQUxVRVMgKHMuKik7CmBgYAoKIyMjIFdoZW4gZG9lcyB0aGUgY2FjaGUgcmVmcmVzaD8KLSBTdGFydHVwIHdhcm11cDogZmxBUEkgcmVmcmVzaGVzIGNhY2hlcyBmb3IgZW5kcG9pbnRzIHdpdGggY2FjaGUgZW5hYmxlZC4KLSBTY2hlZHVsZWQgcmVmcmVzaDogY29udHJvbGxlZCBieSBgY2FjaGUuc2NoZWR1bGVgIG9uIGVhY2ggZW5kcG9pbnQgKGUuZy4sIGA1bWApLgotIE1hbnVhbCByZWZyZXNoOiBjYWxsIHRoZSByZWZyZXNoIEFQSSAoc2VlIGJlbG93KS4KLSBSZWd1bGFyIEdFVCByZXF1ZXN0cyBkbyBub3QgcmVmcmVzaCB0aGUgY2FjaGUuCgojIyMgQXVkaXQsIHJldGVudGlvbiwgY29tcGFjdGlvbiwgYW5kIGNvbnRyb2wgQVBJcwpmbEFQSSBtYWludGFpbnMgYW4gYXVkaXQgdGFibGUgaW5zaWRlIER1Y2tMYWtlIGF0IGBjYWNoZS5hdWRpdC5zeW5jX2V2ZW50c2AgYW5kIHByb3ZpZGVzIGNvbnRyb2wgZW5kcG9pbnRzOgoKLSBNYW51YWwgcmVmcmVzaDoKYGBgYmFzaApjdXJsIC1YIFBPU1QgImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvdjEvX2NvbmZpZy9lbmRwb2ludHMvcHVibGljaXMvY2FjaGUvcmVmcmVzaCIKYGBgCgotIEF1ZGl0IGxvZ3MgKGVuZHBvaW50LXNwZWNpZmljIGFuZCBnbG9iYWwpOgpgYGBiYXNoCmN1cmwgImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvdjEvX2NvbmZpZy9lbmRwb2ludHMvcHVibGljaXMvY2FjaGUvYXVkaXQiCmN1cmwgImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvdjEvX2NvbmZpZy9jYWNoZS9hdWRpdCIKYGBgCgotIEdhcmJhZ2UgY29sbGVjdGlvbiAocmV0ZW50aW9uKToKUmV0ZW50aW9uIGNhbiBiZSBjb25maWd1cmVkIHBlciBlbmRwb2ludCB1bmRlciBgY2FjaGUucmV0ZW50aW9uYDoKYGBgeWFtbApjYWNoZToKICByZXRlbnRpb246CiAgICBtYXgtc25hcHNob3QtYWdlOiA3ZCAgICAgIyB0aW1lLWJhc2VkIHJldGVudGlvbgogICAgIyBrZWVwLWxhc3Qtc25hcHNob3RzOiAzICMgdmVyc2lvbi1iYXNlZCByZXRlbnRpb24gKHN1YmplY3QgdG8gRHVja0xha2Ugc3VwcG9ydCkKYGBgClRoZSBzeXN0ZW0gYXBwbGllcyByZXRlbnRpb24gYWZ0ZXIgZWFjaCByZWZyZXNoIGFuZCB5b3UgY2FuIGFsc28gdHJpZ2dlciBHQyBtYW51YWxseToKYGBgYmFzaApjdXJsIC1YIFBPU1QgImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvdjEvX2NvbmZpZy9lbmRwb2ludHMvcHVibGljaXMvY2FjaGUvZ2MiCmBgYAoKLSBDb21wYWN0aW9uOgpJZiBlbmFibGVkIGluIGdsb2JhbCBgZHVja2xha2Uuc2NoZWR1bGVyYCwgcGVyaW9kaWMgZmlsZSBtZXJnaW5nIGlzIHBlcmZvcm1lZCB2aWEgRHVja0xha2UgYGR1Y2tsYWtlX21lcmdlX2FkamFjZW50X2ZpbGVzYC4KCiMjIyBUZW1wbGF0ZSBhdXRob3JpbmcgZ3VpZGUgKHJlZmVyZW5jZSkKVXNlIHRoZXNlIHZhcmlhYmxlcyBpbnNpZGUgeW91ciBjYWNoZSB0ZW1wbGF0ZXMgYW5kIG1haW4gcXVlcmllczoKCi0gSWRlbnRpZmljYXRpb24KICAtIGB7e2NhY2hlLmNhdGFsb2d9fWAg4oaSIHVzdWFsbHkgYGNhY2hlYAogIC0gYHt7Y2FjaGUuc2NoZW1hfX1gIOKGkiBlLmcuLCBgYW5hbHl0aWNzYCAoYXV0by1jcmVhdGVkIGlmIG1pc3NpbmcpCiAgLSBge3tjYWNoZS50YWJsZX19YCDihpIgeW91ciBjYWNoZSB0YWJsZSBuYW1lCgotIE1vZGUgYW5kIHNjaGVkdWxpbmcKICAtIGB7e3BhcmFtcy5jYWNoZU1vZGV9fWAg4oaSIGBmdWxsYCB8IGBhcHBlbmRgIHwgYG1lcmdlYAogIC0gYHt7Y2FjaGUuc2NoZWR1bGV9fWAg4oaSIGlmIHNldCBpbiBZQU1MCgotIFNuYXBzaG90cwogIC0gYHt7Y2FjaGUuc25hcHNob3RJZH19YCwgYHt7Y2FjaGUuc25hcHNob3RUaW1lc3RhbXB9fWAKICAtIGB7e2NhY2hlLnByZXZpb3VzU25hcHNob3RJZH19YCwgYHt7Y2FjaGUucHJldmlvdXNTbmFwc2hvdFRpbWVzdGFtcH19YAoKLSBJbmNyZW1lbnRhbCBoaW50cwogIC0gYHt7Y2FjaGUuY3Vyc29yQ29sdW1ufX1gLCBge3tjYWNoZS5jdXJzb3JUeXBlfX1gCiAgLSBge3tjYWNoZS5wcmltYXJ5S2V5c319YCDihpIgY29tbWEtc2VwYXJhdGVkIGxpc3QsIGUuZy4sIGBpZCx0ZW5hbnRfaWRgCgpBdXRob3JpbmcgdGlwczoKLSBGdWxsIHJlZnJlc2g6IHVzZSBgQ1JFQVRFIE9SIFJFUExBQ0UgVEFCTEUgLi4uIEFTIFNFTEVDVCAuLi5gLgotIEFwcGVuZDogYElOU0VSVCBJTlRPIGNhY2hlLnRhYmxlIFNFTEVDVCAuLi4gV0hFUkUgZXZlbnRfdGltZSA+IHByZXZpb3VzU25hcHNob3RUaW1lc3RhbXBgLgotIE1lcmdlOiBgTUVSR0UgSU5UTyBjYWNoZS50YWJsZSBVU0lORyAoU0VMRUNUIC4uLikgT04gcGsgLi4uYC4KLSBEbyBub3QgY3JlYXRlIHNjaGVtYXMgaW4gdGVtcGxhdGVzOyBmbEFQSSBkb2VzIHRoYXQgYXV0b21hdGljYWxseS4KCiMjIyBUcm91Ymxlc2hvb3RpbmcKLSBDYWNoZSByZWZyZXNoIGhhcHBlbnMgb24gZXZlcnkgcmVxdWVzdDogYnkgZGVzaWduIHRoaXMgaXMgZGlzYWJsZWQuIEVuc3VyZSB5b3XigJlyZSBub3QgY2FsbGluZyB0aGUgbWFudWFsIHJlZnJlc2ggZW5kcG9pbnQgZnJvbSBhIGNsaWVudCBhbmQgdGhhdCB5b3VyIGxvZ3Mgc2hvdyBzY2hlZHVsZWQgb3Igd2FybXVwIHJlZnJlc2hlcyBvbmx5LgotIFNjaGVtYSBub3QgZm91bmQ6IHZlcmlmeSBgY2FjaGUuc2NoZW1hYCBpcyBzZXQ7IGZsQVBJIHdpbGwgYXV0by1jcmVhdGUgaXQuCi0gUmV0ZW50aW9uIGVycm9yczogdXNlIHRpbWUtYmFzZWQgYG1heC1zbmFwc2hvdC1hZ2VgIGZpcnN0LiBWZXJzaW9uLWJhc2VkIHJldGVudGlvbiBkZXBlbmRzIG9uIER1Y2tMYWtlIHN1cHBvcnQuCgojIyDwn6epIFlBTUwgaW5jbHVkZXMgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcwpmbEFQSSBleHRlbmRzIHBsYWluIFlBTUwgd2l0aCBsaWdodHdlaWdodCBpbmNsdWRlIGFuZCBlbnZpcm9ubWVudC12YXJpYWJsZSBmZWF0dXJlcyBzbyB5b3UgY2FuIGtlZXAgY29uZmlndXJhdGlvbnMgbW9kdWxhciBhbmQgZW52aXJvbm1lbnQtYXdhcmUuCgojIyMgRW52aXJvbm1lbnQgdmFyaWFibGVzCi0gV3JpdGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFzIGB7e2Vudi5WQVJfTkFNRX19YCBhbnl3aGVyZSBpbiB5b3VyIFlBTUwuCi0gT25seSB2YXJpYWJsZXMgdGhhdCBtYXRjaCB0aGUgd2hpdGVsaXN0IGluIHlvdXIgcm9vdCBjb25maWcgYXJlIHN1YnN0aXR1dGVkOgogIGBgYHlhbWwKICB0ZW1wbGF0ZToKICAgIHBhdGg6ICcuL3NxbHMnCiAgICBlbnZpcm9ubWVudC13aGl0ZWxpc3Q6CiAgICAgIC0gJ15GTEFQSV8uKicgICAgICMgYWxsb3cgYWxsIHZhcmlhYmxlcyBzdGFydGluZyB3aXRoIEZMQVBJXwogICAgICAtICdeUFJPSkVDVF8uKicgICAjIG9wdGlvbmFsIGFkZGl0aW9uYWwgcHJlZml4ZXMKICBgYGAKLSBJZiB0aGUgd2hpdGVsaXN0IGlzIGVtcHR5IG9yIG9taXR0ZWQsIGFsbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGFsbG93ZWQuCgpFeGFtcGxlczoKYGBgeWFtbAojIFN1YnN0aXR1dGUgaW5zaWRlIHN0cmluZ3MKcHJvamVjdC1uYW1lOiAiJHt7ZW52LlBST0pFQ1RfTkFNRX19IgoKIyBCdWlsZCBpbmNsdWRlIHBhdGhzIGR5bmFtaWNhbGx5CnRlbXBsYXRlOgogIHBhdGg6ICJ7e2Vudi5DT05GSUdfRElSfX0vc3FscyIKYGBgCgojIyMgSW5jbHVkZSBzeW50YXgKWW91IGNhbiBzcGxpY2UgY29udGVudCBmcm9tIGFub3RoZXIgWUFNTCBmaWxlIGRpcmVjdGx5IGludG8gdGhlIGN1cnJlbnQgZG9jdW1lbnQuCgotIEJhc2ljIGluY2x1ZGU6IGB7e2luY2x1ZGUgZnJvbSBwYXRoL3RvL2ZpbGUueWFtbH19YAotIFNlY3Rpb24gaW5jbHVkZTogYHt7aW5jbHVkZTp0b3BfbGV2ZWxfa2V5IGZyb20gcGF0aC90by9maWxlLnlhbWx9fWAgaW5jbHVkZXMgb25seSB0aGF0IGtleQotIENvbmRpdGlvbmFsIGluY2x1ZGU6IGFwcGVuZCBgaWYgPGNvbmRpdGlvbj5gIHRvIGVpdGhlciBmb3JtCgpDb25kaXRpb25zIHN1cHBvcnRlZDoKLSBgdHJ1ZWAgb3IgYGZhbHNlYAotIGBlbnYuVkFSX05BTUVgIChpbmNsdWRlIGlmIHRoZSB2YXJpYWJsZSBleGlzdHMgYW5kIGlzIG5vbi1lbXB0eSkKLSBgIWVudi5WQVJfTkFNRWAgKGluY2x1ZGUgaWYgdGhlIHZhcmlhYmxlIGlzIG1pc3Npbmcgb3IgZW1wdHkpCgpFeGFtcGxlczoKYGBgeWFtbAojIEluY2x1ZGUgYW5vdGhlciBZQU1MIGZpbGUgcmVsYXRpdmUgdG8gdGhpcyBmaWxlCnt7aW5jbHVkZSBmcm9tIGNvbW1vbi9zZXR0aW5ncy55YW1sfX0KCiMgSW5jbHVkZSBvbmx5IGEgc2VjdGlvbiAodG9wLWxldmVsIGtleSkgZnJvbSBhIGZpbGUKe3tpbmNsdWRlOmNvbm5lY3Rpb25zIGZyb20gc2hhcmVkL2Nvbm5lY3Rpb25zLnlhbWx9fQoKIyBDb25kaXRpb25hbCBpbmNsdWRlIGJhc2VkIG9uIGFuIGVudmlyb25tZW50IHZhcmlhYmxlCnt7aW5jbHVkZSBmcm9tIG92ZXJyaWRlcy9kZXYueWFtbCBpZiBlbnYuRkxBUElfRU5WfX0KCiMgVXNlIGVudiB2YXIgaW4gdGhlIGluY2x1ZGUgcGF0aAp7e2luY2x1ZGUgZnJvbSB7e2Vudi5DT05GSUdfRElSfX0vc2VjcmV0cy55YW1sfX0KYGBgCgpSZXNvbHV0aW9uIHJ1bGVzIGFuZCBiZWhhdmlvcjoKLSBQYXRocyBhcmUgcmVzb2x2ZWQgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZmlsZSBmaXJzdDsgYWJzb2x1dGUgcGF0aHMgYXJlIHN1cHBvcnRlZC4KLSBJbmNsdWRlcyBpbnNpZGUgWUFNTCBjb21tZW50cyBhcmUgaWdub3JlZCAoZS5nLiwgbGluZXMgc3RhcnRpbmcgd2l0aCBgI2ApLgotIEluY2x1ZGVzIGFyZSBleHBhbmRlZCBiZWZvcmUgdGhlIFlBTUwgaXMgcGFyc2VkLgotIEluY2x1ZGVzIGRvIG5vdCByZWN1cnNlOiBpbmNsdWRlIGRpcmVjdGl2ZXMgd2l0aGluIGluY2x1ZGVkIGZpbGVzIGFyZSBub3QgcHJvY2Vzc2VkIGZ1cnRoZXIuCi0gQ2lyY3VsYXIgaW5jbHVkZXMgYXJlIGd1YXJkZWQgYWdhaW5zdCB3aXRoaW4gYSBzaW5nbGUgZXhwYW5zaW9uIHBhc3M7IGF2b2lkIGN5Y2xlcy4KClRpcHM6Ci0gUHJlZmVyIHNlY3Rpb24gaW5jbHVkZXMgKGB7e2luY2x1ZGU6Li4ufX1gKSB0byBhdm9pZCB1bmludGVudGlvbmFsbHkgb3ZlcndyaXRpbmcgdW5yZWxhdGVkIGtleXMuCi0gS2VlcCBzaGFyZWQgYmxvY2tzIGluIHNtYWxsIGZpbGVzIChlLmcuLCBgY29ubmVjdGlvbnMueWFtbGAsIGBhdXRoLnlhbWxgKSBhbmQgaW5jbHVkZSB0aGVtIHdoZXJlIG5lZWRlZC4KCgoKIyMg8J+PrSBCdWlsZGluZyBmcm9tIHNvdXJjZQpUaGUgc291cmNlIGNvZGUgb2YgZmxBUEkgaXMgd3JpdHRlbiBpbiBDKysgYW5kIGNsb3NlbHkgcmVzZW1ibGVzIHRoZSBbRHVja0RCIGJ1aWxkIHByb2Nlc3NdKGh0dHBzOi8vZHVja2RiLm9yZy9kb2NzL2Rldi9idWlsZGluZy9vdmVydmlldykuIEEgZ29vZCBkb2N1bWVudGF0aW9uIG9mIHRoZSBidWlsZCBwcm9jZXNzIGlzIHRoZSBHaXRIdWIgYWN0aW9uIGluIFtgYnVpbGQueWFtbGBdKC5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWwpLiBJbiBlc3NlY2VuY2UgYSBmZXcgcHJlcmVxdWlzaXRlcyBuZWVkIHRvIGJlIG1ldDoKSW4gZXNzZWNlbmNlIGEgZmV3IHByZXJlcXVpc2l0ZXMgbmVlZCB0byBiZSBtZXQ6CgotIEluc3RhbGwgdGhlIGRlcGVuZGVuY2llczogYHN1ZG8gYXB0LWdldCBpbnN0YWxsIC15IGJ1aWxkLWVzc2VudGlhbCBjbWFrZSBuaW5qYS1idWlsZGAKLSBDaGVja291dCB0aGUgcmVwb3NpdG9yeSBhbmQgc3VibW9kdWxlczogYGdpdCBjbG9uZSAtLXJlY3Vyc2Utc3VibW9kdWxlcyBodHRwczovL2dpdGh1Yi5jb20vZGF0YXpvb2RlL2ZsYXBpLmdpdGAKLSBCdWlsZCB0aGUgcHJvamVjdDogYG1ha2UgcmVsZWFzZWAKClRoZSBidWlsZCBwcm9jZXNzIHdpbGwgZG93bmxvYWQgYW5kIGJ1aWxkIER1Y2tEQiB2MS4xLjIgYW5kIGluc3RhbGwgdGhlIHZjcGtnIHBhY2thZ2UgbWFuYWdlci4gV2UgZGVwZW5kIG9uIHRoZSBmb2xsb3dpbmcgdmNwa2cgcG9ydHM6CgotIFtgYXJncGFyc2VgXShodHRwczovL2dpdGh1Yi5jb20vcC1yYW5hdi9hcmdwYXJzZSkgLSBDb21tYW5kIGxpbmUgYXJndW1lbnQgcGFyc2VyCi0gW2Bjcm93YF0oaHR0cHM6Ly9naXRodWIuY29tL0Nyb3dDcHAvQ3JvdykgLSBPdXIgUkVTVC1XZWIgZnJhbWV3b3JrIGFuZCBKU09OIGhhbmRsaW5nCi0gW2B5YW1sLWNwcGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9qYmVkZXIveWFtbC1jcHApIC0gWUFNTCBwYXJzZXIKLSBbYGp3dC1jcHBgXShodHRwczovL2dpdGh1Yi5jb20vVGhhbGhhbW1lci9qd3QtY3BwKSAtIEpTT04gV2ViIFRva2VuIGxpYnJhcnkKLSBbYG9wZW5zc2xgXShodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzbC9vcGVuc3NsKSAtIENyeXB0byBsaWJyYXJ5Ci0gW2BjYXRjaDJgXShodHRwczovL2dpdGh1Yi5jb20vY2F0Y2hvcmcvQ2F0Y2gyKSAtIFRlc3RpbmcgZnJhbWV3b3JrCgoqKk5vdGUqKjogTUNQIHN1cHBvcnQgaXMgYnVpbHQtaW4gYW5kIGRvZXNuJ3QgcmVxdWlyZSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyBiZXlvbmQgd2hhdCdzIGFscmVhZHkgaW5jbHVkZWQuCgojIyDwn5OaIERvY3VtZW50YXRpb24KCkZvciBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uLCBjaGVjayBvdXQgb3VyIFtmdWxsIGRvY3VtZW50YXRpb25dKGRvY3MvKToKCi0gKipbUmVmZXJlbmNlIERvY3VtZW50YXRpb24gTWFwXShkb2NzL1JFRkVSRU5DRV9NQVAubWQpKiogLSBRdWljayBuYXZpZ2F0aW9uIGd1aWRlIGZvciBhbGwgZG9jcwotICoqW0NvbmZpZ3VyYXRpb24gUmVmZXJlbmNlXShkb2NzL0NPTkZJR19SRUZFUkVOQ0UubWQpKiogLSBDb21wbGV0ZSBmbGFwaS55YW1sIGNvbmZpZ3VyYXRpb24gb3B0aW9ucwotICoqW01DUCBSZWZlcmVuY2VdKGRvY3MvTUNQX1JFRkVSRU5DRS5tZCkqKiAtIE1vZGVsIENvbnRleHQgUHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBhbmQgaW1wbGVtZW50YXRpb24KLSAqKltDb25maWcgU2VydmljZSBBUEkgUmVmZXJlbmNlXShkb2NzL0NPTkZJR19TRVJWSUNFX0FQSV9SRUZFUkVOQ0UubWQpKiogLSBSRVNUIEFQSSBmb3IgcnVudGltZSBjb25maWd1cmF0aW9uCi0gKipbQ0xJIFJlZmVyZW5jZV0oZG9jcy9DTElfUkVGRVJFTkNFLm1kKSoqIC0gU2VydmVyIGV4ZWN1dGFibGUgY29tbWFuZC1saW5lIG9wdGlvbnMKLSAqKltDbG91ZCBTdG9yYWdlIEd1aWRlXShkb2NzL0NMT1VEX1NUT1JBR0VfR1VJREUubWQpKiogLSBVc2luZyBjbG91ZCBzdG9yYWdlIGJhY2tlbmRzIChTMywgR0NTLCBBenVyZSkKLSAqKltBcmNoaXRlY3R1cmUgJiBEZXNpZ25dKGRvY3Mvc3BlYy8pKiogLSBTeXN0ZW0gYXJjaGl0ZWN0dXJlLCBkZXNpZ24gZGVjaXNpb25zLCBhbmQgY29tcG9uZW50IGRvY3VtZW50YXRpb24KCiMjIPCfpJ0gQ29udHJpYnV0aW5nCgpXZSB3ZWxjb21lIGNvbnRyaWJ1dGlvbnMhIFBsZWFzZSBzZWUgb3VyIFtDb250cmlidXRpbmcgR3VpZGVdKENPTlRSSUJVVElORy5tZCkgZm9yIG1vcmUgZGV0YWlscy4KCiMjIPCfk4QgTGljZW5zZQoKZmxBUEkgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIDIuMC4gU2VlIHRoZSBbTElDRU5TRV0oTElDRU5TRSkgZmlsZSBmb3IgbW9yZSBkZXRhaWxzLgoKIyMg8J+Zi+KAjeKZgO+4jyBTdXBwb3J0CgpJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgaGVscCwgcGxlYXNlIFtvcGVuIGFuIGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20veW91cnVzZXJuYW1lL2ZsYXBpL2lzc3Vlcykgb3Igam9pbiBvdXIgW2NvbW11bml0eSBjaGF0XShsaW5rLXRvLXlvdXItY2hhdCkuCgotLS0K readmeEtag: '"0ed289390b9a92677f6fc0a168faa97988d4b14a"' readmeLastModified: Sun, 25 Jan 2026 15:30:32 GMT repositoryId: 864915169 description: >- API Framework heavily relying on the power of DuckDB and DuckDB extensions. Ready to build performant and cost-efficient APIs on top of BigQuery or Snowflake for AI Agents and Data Apps created: '2024-09-29T14:06:01Z' updated: '2026-02-01T17:44:15Z' language: C++ archived: false stars: 65 watchers: 3 forks: 3 owner: DataZooDE logo: https://avatars.githubusercontent.com/u/136052936?v=4 license: Apache-2.0 repoEtag: '"74bbbe8627af85a241acd2f6f8e9de5698c9e238a5824088277526858e6ea064"' repoLastModified: Sun, 01 Feb 2026 17:44:15 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/juststeveking/go-api v3: true repositoryMetadata: base64Readme: >- IyBHbyBBUEkKCkEgc2ltcGxlIEdvIEFQSSBmb2xsb3dpbmcgY29uY2VwdHMgb2YgRG9tYWluIERyaXZlbiBEZXNpZ24gZm9yIGVkdWNhdGlvbmFsIHB1cnBvc2VzLgoKT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiBjYW4gYmUgZm91bmQgW2hlcmVdKGRvY3MvcmVmZXJlbmNlL29wZW5hcGkudjEueWFtbCkKCiMjIEluc3RhbGxhdGlvbgoKQ2xvbmUgdGhlIHJlcG8KCmBgYGJhc2gKJCBnaXQgY2xvbmUgZ2l0QGdpdGh1Yi5jb206SnVzdFN0ZXZlS2luZy9nby1hcGkuZ2l0CmBgYAoKYGBgYmFzaAokIGNkIGdvLWFwaQpgYGAKCiMjIFJ1bm5pbmcKCk9uY2UgaW5zdGFsbGVkLCBzaW1wbHkgc3BpbiB1cCB0aGUgZG9ja2VyIGNvbnRhaW5lcjoKCmBgYGJhc2gKJCBkb2NrZXItY29tcG9zZSB1cCAtZCAtLWJ1aWxkCmBgYAoKVGhpcyB3aWxsIGdpdmUgeW91IGEgc2luZ2xlIGVuZHBvaW50IGZvciBub3cgdW5kZXI6IGBodHRwOi8vbG9jYWxob3N0OjgwODAvcGluZ2Agd2hpY2ggaXMgYSBoZWFsdGhjaGVjayBVUkwsIGFuZCB3aWxsIHJldHVybiB0aGUgZm9sbG93aW5nOgoKYGBganNvbgp7CiAgICAibWVzc2FnZSI6ICJTZXJ2aWNlIE9ubGluZSIKfQpgYGAK readmeEtag: '"69eb1ee01846f68945f716e4100d11270378bf27"' readmeLastModified: Mon, 20 Jul 2020 10:51:45 GMT repositoryId: 279888235 description: >- A simple Go API following concepts of Domain Driven Design for educational purposes. created: '2020-07-15T14:18:30Z' updated: '2025-10-14T07:57:32Z' language: Go archived: false stars: 23 watchers: 0 forks: 3 owner: JustSteveKing logo: https://avatars.githubusercontent.com/u/6368379?v=4 repoEtag: '"a1c17e0ae2491ddf21b04a00197af227306ed77b770dbe999a10fefbb15bbf22"' repoLastModified: Tue, 14 Oct 2025 07:57:32 GMT foundInMaster: true category: - Code Generators - Server Implementations id: a5ef021c7ce2024aa60ecd3895fd1304 - source: openapi3 tags repository: https://github.com/simonireilly/compeller v3: true repositoryMetadata: base64Readme: >- IyBDb21wZWxsZXIKCkEgc3Ryb25nIHR5cGVzY3JpcHQgYmluZGluZyBmb3IgeW91ciBPcGVuQVBJIFNjaGVtYSB0aGF0IGRvZXNuJ3QgbmVlZCBnZW5lcmF0aW9uLCBhbmQgaXNuJ3QgcHJlc2NyaXB0aXZlLgoKIVtob3cgdG8gZ2V0IHN0YXJ0ZWQgd2l0aCBjb21wZWxsZXJdKC4vYXNzZXRzL3VzYWdlLmdpZikKCgotIFtDb21wZWxsZXJdKCNjb21wZWxsZXIpCiAgLSBb8J+aqCBBbHBoYSBzb2Z0d2FyZSDwn5qoXSgjLWFscGhhLXNvZnR3YXJlLSkKICAtIFtBYm91dF0oI2Fib3V0KQogIC0gW0dldCBzdGFydGVkXSgjZ2V0LXN0YXJ0ZWQpCiAgLSBb8J+bo++4jyBSb2FkIG1hcF0oI++4jy1yb2FkLW1hcCkKICAgIC0gW1VzYWdlXSgjdXNhZ2UpCiAgLSBbU2hvdWxkZXJzXSgjc2hvdWxkZXJzKQoKIyMg8J+aqCBBbHBoYSBzb2Z0d2FyZSDwn5qoCgpDb21wZWxsZXIgaXMgaW4gYWxwaGEsIHNvIGl0J3MgQVBJIG1pZ2h0IGNoYW5nZSwgbWF5YmUgeW91IGhhdmUgc29tZSB0aG91Z2h0cz8KCiMjIEFib3V0CgpDb21wZWxsZXIgdHJpZXMgdG8gaW5mZXIgeW91ciBPcGVuQVBJIHZhbGlkYXRpb25zIGFuZCByZXNwb25zZXMsIGZyb20gYSB0eXBlZCBPcGVuQVBJIHNwZWNpZmljYXRpb24uCgojIyBHZXQgc3RhcnRlZAoKWW91IGNhbiB1c2UgdGhlIENMSSB0byBzdGFydCBhIG5ldyBwcm9qZWN0LCBnZW5lcmF0aW5nIGFuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4KCmBgYGJhc2gKbnB4IGNvbXBlbGxlckBhbHBoYSBuZXcKYGBgCgojIyDwn5uj77iPIFJvYWQgbWFwCgotIFt4XSBTdXBwb3J0IGZvciByZXF1ZXN0IGJvZHkgdmFsaWRhdGlvbiB0byB0eXBlIGd1YXJkIChhanYpCi0gW3hdIFN1cHBvcnQgZm9yIGhlYWRlciByZXNwb25zZSB0eXBlcwotIFsgXSBTdXBwb3J0IGZvciByZXNwb25zZSB0eXBlIG1hcHBpbmcKLSBbIF0gU3VwcG9ydCBmb3IgcGF0aCB2YWxpZGF0aW9uCi0gWyBdIFN1cHBvcnQgaGVhZGVyIHZhbGlkYXRpb24KCiMjIyBVc2FnZQoKQ3JlYXRlIGEgU2NoZW1hIHNwZWNpZmljYXRpb24gZm9yIGFuIEFQSSBNb2RlbCBsaWtlOgoKYGBgdHMKLy8gLi9leGFtcGxlcy9zdGFuZGFsb25lL29wZW5hcGkvc2NoZW1hcy92ZXJzaW9uLnNjaGVtYS50cwoKaW1wb3J0IHsgRnJvbVNjaGVtYSB9IGZyb20gJ2pzb24tc2NoZW1hLXRvLXRzJzsKCmV4cG9ydCBjb25zdCBWZXJzaW9uU2NoZW1hID0gewogIHR5cGU6ICdvYmplY3QnLAogIHJlcXVpcmVkOiBbJ3ZlcnNpb24nXSwKICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsCiAgcHJvcGVydGllczogewogICAgdmVyc2lvbjogewogICAgICB0eXBlOiAnc3RyaW5nJywKICAgIH0sCiAgfSwKfSBhcyBjb25zdDsKCmV4cG9ydCB0eXBlIFZlcnNpb24gPSBGcm9tU2NoZW1hPHR5cGVvZiBWZXJzaW9uU2NoZW1hPjsKCmBgYAoKTmV4dCwgYmluZCB0aGUgbW9kZWwgaW50byBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gb2JqZWN0LgoKYGBgdHMKLy8gLi9leGFtcGxlcy9zdGFuZGFsb25lL29wZW5hcGkvc3BlYy50cwoKaW1wb3J0IHsgVmVyc2lvblNjaGVtYSB9IGZyb20gJy4vc2NoZW1hcy92ZXJzaW9uLnNjaGVtYSc7CgpleHBvcnQgY29uc3QgT3BlbkFQSVNwZWNpZmljYXRpb24gPSB7CiAgaW5mbzogewogICAgdGl0bGU6ICdOZXcgQVBJIGdlbmVyYXRlZCB3aXRoIGNvbXBlbGxlcicsCiAgICB2ZXJzaW9uOiAnMS4wLjAnLAogIH0sCiAgb3BlbmFwaTogJzMuMS4wJywKICBwYXRoczogewogICAgJ3YxL3ZlcnNpb24nOiB7CiAgICAgIGdldDogewogICAgICAgIHJlc3BvbnNlczogewogICAgICAgICAgJzIwMCc6IHsKICAgICAgICAgICAgZGVzY3JpcHRpb246ICdHZXQgdGhlIGN1cnJlbnQgQVBJIHZlcnNpb24nLAogICAgICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7CiAgICAgICAgICAgICAgICBzY2hlbWE6IFZlcnNpb25TY2hlbWEsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sCiAgfSwKfTsKCmBgYAoKV2l0aCBjb21wZWxsZXIgeW91IGNhbiBjb21waWxlIHRoaXMgaW50byBhIHR5cGVkIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGhhbmRsZXIgbGlrZToKCmBgYHRzCmltcG9ydCB7IE9wZW5BUElTcGVjaWZpY2F0aW9uIH0gZnJvbSAnLi9zcGVjJzsKCi8vIFRoZSBhcGkgaXMgaW5mZXJyZWQsIGFuZCB2YWxpZGF0aW9ucyBhcmUgZ2VuZXJhdGVkCmNvbnN0IGFwaSA9IGNvbXBlbGxlcihPcGVuQVBJU3BlY2lmaWNhdGlvbik7CgovLyBUaGVzZSByb3V0ZXMgYW5kIG1ldGhvZHMgYXJlIGVuZm9yY2VkCmNvbnN0IHsgcmVzcG9uc2UgfSA9IGFwaSgnL3YxL3ZlcnNpb24nLCAnZ2V0Jyk7CgovLyBUaGUgcmVzcG9uc2UgY29kZSBhbmQgYm9keSBzY2hlbWEgYXJlIGJvdW5kCmNvbnN0IHJlc3AgPSByZXNwb25zZSgnMjAwJywgeyBuYW1lOiAnVHlwZS1zYWZlIHJlcGx5JyB9KTsKYGBgCgpTZWUgWy4vZXhhbXBsZXNdKC4vZXhhbXBsZXMpCgojIyBTaG91bGRlcnMKCkNvbXBlbGwgaXMgYnVpbHQgb24gdG9wIG9mIHNvbWUgZ3JlYXQgbGlicmFyaWVzLCBhdCBpdCdzIGNvcmUgaXQgcmVsaWVzIG9uOgoKLSBbb3BlbmFwaTMtdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tZXRhZGV2cHJvL29wZW5hcGkzLXRzKQotIFtqc29uLXNjaGVtYS10by10c10oaHR0cHM6Ly9naXRodWIuY29tL1Rob21hc0FyaWJhcnQvanNvbi1zY2hlbWEtdG8tdHMpCgpJdCBhbHNvIGxheWVycyBvbiByZXF1ZXN0IGFuZCByZXNwb25zZSB2YWxpZGF0aW9uIHBvd2VyZWQgYnk6CgotIFthanZdKGh0dHBzOi8vZ2l0aHViLmNvbS9hanYtdmFsaWRhdG9yL2FqdikKCkknbSBncmF0ZWZ1bCBmb3IgdGhlc2UgbGlicmFyaWVzCg== readmeEtag: '"0c64ee60e30f8b960c24d00b92244b4f9157b5ab"' readmeLastModified: Mon, 31 Jan 2022 21:08:10 GMT repositoryId: 452000471 description: >- A strong typescript binding for your OpenAPI Schema that doesn't need generation and is not prescriptive in coding style created: '2022-01-25T18:44:08Z' updated: '2024-08-13T03:40:21Z' language: TypeScript archived: false stars: 22 watchers: 4 forks: 1 owner: simonireilly logo: https://avatars.githubusercontent.com/u/30017294?v=4 license: MIT repoEtag: '"a80f043e73215cd0b38c8d823ddc3854efd1652fec839da5cae15a6f4502ac17"' repoLastModified: Tue, 13 Aug 2024 03:40:21 GMT foundInMaster: true category: Parsers id: c2573db36bc9c133fcb66e2714f9a37c - source: openapi3 tags repository: https://github.com/zweidenker/openapi v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJCgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy96d2VpZGVua2VyL09wZW5BUEkuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvendlaWRlbmtlci9PcGVuQVBJKQo= readmeEtag: '"79163d291a392028dcd86abd2b0143eb4f734b1b"' readmeLastModified: Thu, 21 Jan 2021 16:35:59 GMT repositoryId: 118589193 description: A pharo implementation of OpenAPI 3.0.1 created: '2018-01-23T09:38:10Z' updated: '2023-08-13T00:57:19Z' language: Smalltalk archived: false stars: 22 watchers: 5 forks: 7 owner: zweidenker logo: https://avatars.githubusercontent.com/u/20300491?v=4 license: MIT repoEtag: '"9b21a980252330951eb3210abff815894c4378b2bb2fc85e0aed793ed7ae5ec5"' repoLastModified: Sun, 13 Aug 2023 00:57:19 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: 1dbc4782ef0fd6319683bd896d58b471 - source: - openapi3 tags - openapi31 tags repository: https://github.com/mnahkies/openapi-code-generator v3: true repositoryMetadata: base64Readme: >- IyBAbmFoa2llcy9vcGVuYXBpLWNvZGUtZ2VuZXJhdG9yCgpbIVtDSS9DRF0oaHR0cHM6Ly9naXRodWIuY29tL21uYWhraWVzL29wZW5hcGktY29kZS1nZW5lcmF0b3IvYWN0aW9ucy93b3JrZmxvd3MvY2kueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9tbmFoa2llcy9vcGVuYXBpLWNvZGUtZ2VuZXJhdG9yL2FjdGlvbnM/cXVlcnk9YnJhbmNoJTNBbWFpbitldmVudCUzQXB1c2gpClshW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AbmFoa2llcy9vcGVuYXBpLWNvZGUtZ2VuZXJhdG9yLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BuYWhraWVzL29wZW5hcGktY29kZS1nZW5lcmF0b3IpCgpgQG5haGtpZXMvb3BlbmFwaS1jb2RlLWdlbmVyYXRvcmAgaXMgYSBDTEkgdG9vbCB0aGF0IGFpbXMgdG8gZ2VuZXJhdGUgaGlnaCBxdWFsaXR5IHR5cGVzY3JpcHQgY2xpZW50IFNESydzLAphbmQgQVBJIHNlcnZlciBzY2FmZm9sZGluZyAocm91dGluZywgdmFsaWRhdGlvbiwgc2VyaWFsaXphdGlvbikgZnJvbSBhcGkgc3BlY2lmaWNhdGlvbnMuCgpDdXJyZW50bHksIFtPcGVuQVBJIDMuMC54XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCksIFtPcGVuQVBJIDMuMS54XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjEuaHRtbCksCmFuZCBbVHlwZVNwZWNdKGh0dHBzOi8vdHlwZXNwZWMuaW8vKSBhcmUgc3VwcG9ydGVkIGFzIGlucHV0IHNwZWNpZmljYXRpb25zLgoKV2l0aCB0eXBlc2NyaXB0IHRlbXBsYXRlcyBmb3IgW2tvYV0oaHR0cHM6Ly9vcGVuYXBpLWNvZGUtZ2VuZXJhdG9yLm5haGtpZXMuY28ubnovZ3VpZGVzL3NlcnZlci10ZW1wbGF0ZXMvdHlwZXNjcmlwdC1rb2EpLCBbZXhwcmVzc10oaHR0cHM6Ly9vcGVuYXBpLWNvZGUtZ2VuZXJhdG9yLm5haGtpZXMuY28ubnovZ3VpZGVzL3NlcnZlci10ZW1wbGF0ZXMvdHlwZXNjcmlwdC1leHByZXNzKSwgW2ZldGNoXShodHRwczovL29wZW5hcGktY29kZS1nZW5lcmF0b3IubmFoa2llcy5jby5uei9ndWlkZXMvY2xpZW50LXRlbXBsYXRlcy90eXBlc2NyaXB0LWZldGNoKSwgW2F4aW9zXShodHRwczovL29wZW5hcGktY29kZS1nZW5lcmF0b3IubmFoa2llcy5jby5uei9ndWlkZXMvY2xpZW50LXRlbXBsYXRlcy90eXBlc2NyaXB0LWF4aW9zKSwgYW5kIFthbmd1bGFyXShodHRwczovL29wZW5hcGktY29kZS1nZW5lcmF0b3IubmFoa2llcy5jby5uei9ndWlkZXMvY2xpZW50LXRlbXBsYXRlcy90eXBlc2NyaXB0LWFuZ3VsYXIpIGN1cnJlbnRseSBhdmFpbGFibGUuCgpUaGUgW2ZldGNoXShodHRwczovL29wZW5hcGktY29kZS1nZW5lcmF0b3IubmFoa2llcy5jby5uei9ndWlkZXMvY2xpZW50LXRlbXBsYXRlcy90eXBlc2NyaXB0LWZldGNoKSBhbmQgW2F4aW9zXShodHRwczovL29wZW5hcGktY29kZS1nZW5lcmF0b3IubmFoa2llcy5jby5uei9ndWlkZXMvY2xpZW50LXRlbXBsYXRlcy90eXBlc2NyaXB0LWF4aW9zKSB0ZW1wbGF0ZXMgd29yayBncmVhdCBpbiBjb25qdW5jdGlvbiB3aXRoIFtyZWFjdC1xdWVyeV0oaHR0cHM6Ly90YW5zdGFjay5jb20vcXVlcnkvbGF0ZXN0KQoKPiBcWyFUSVBdCj4gVHJ5IG91dCBvdXIgW2ludGVyYWN0aXZlIHBsYXlncm91bmQgaGVyZV0oaHR0cHM6Ly9vcGVuYXBpLWNvZGUtZ2VuZXJhdG9yLm5haGtpZXMuY28ubnovcGxheWdyb3VuZCkKCjwhLS0gdG9jIC0tPgoKKiBbRG9jdW1lbnRhdGlvbl0oI2RvY3VtZW50YXRpb24pCiogW1Byb2plY3QgU3RydWN0dXJlXSgjcHJvamVjdC1zdHJ1Y3R1cmUpCiogW0NvbnRyaWJ1dGluZ10oI2NvbnRyaWJ1dGluZykKKiBbTGljZW5zZV0oI2xpY2Vuc2UpCgo8IS0tIHRvY3N0b3AgLS0+CgojIyBEb2N1bWVudGF0aW9uCgpWaXNpdCBodHRwczovL29wZW5hcGktY29kZS1nZW5lcmF0b3IubmFoa2llcy5jby5uei8gZm9yIGRldGFpbGVkIGRvY3VtZW50YXRpb24gaW5jbHVkaW5nCnF1aWNrIHN0YXJ0IGd1aWRlcyBhbmQgcmVmZXJlbmNlIG1hdGVyaWFsLgoKVGhlIGRvY3VtZW50YXRpb24gaXMgYnVpbHQgdXNpbmcgTmV4dEpTIC8gTmV4dHJhLCBhbmQgZGVwbG95ZWQgdXNpbmcgR2l0aHViIHBhZ2VzLgpZb3UgY2FuIGNvbnRyaWJ1dGUgdG8gaXQgaW4gWy4vcGFja2FnZXMvZG9jdW1lbnRhdGlvbl0oLi9wYWNrYWdlcy9kb2N1bWVudGF0aW9uKQoKIyMgUHJvamVjdCBTdHJ1Y3R1cmUKClRoZSByZXBvc2l0b3J5IGlzIHN0cnVjdHVyZWQgYXMgYSBtb25vIHJlcG8gb2Ygc2V2ZXJhbCBucG0gcGFja2FnZXMgdGhhdCB3b3JrIHRvZ2V0aGVyIHVuZGVyIFsuL3BhY2thZ2VzXSguL3BhY2thZ2VzKToKCiogW29wZW5hcGktY29kZS1nZW5lcmF0b3JdKC4vcGFja2FnZXMvb3BlbmFwaS1jb2RlLWdlbmVyYXRvcikKKiBbdHlwZXNjcmlwdC1heGlvcy1ydW50aW1lXSguL3BhY2thZ2VzL3R5cGVzY3JpcHQtYXhpb3MtcnVudGltZSkKKiBbdHlwZXNjcmlwdC1leHByZXNzLXJ1bnRpbWVdKC4vcGFja2FnZXMvdHlwZXNjcmlwdC1leHByZXNzLXJ1bnRpbWUpCiogW3R5cGVzY3JpcHQtZmV0Y2gtcnVudGltZV0oLi9wYWNrYWdlcy90eXBlc2NyaXB0LWZldGNoLXJ1bnRpbWUpCiogW3R5cGVzY3JpcHQta29hLXJ1bnRpbWVdKC4vcGFja2FnZXMvdHlwZXNjcmlwdC1rb2EtcnVudGltZSkKClRoZSBgb3BlbmFwaS1jb2RlLWdlbmVyYXRvcmAgcGFja2FnZSBpcyB0aGUgbWFpbiBwYWNrYWdlLCB3aGlsc3QgdGhlIG90aGVycyBhcmUgc3VwcG9ydGluZyBwYWNrYWdlcyB1c2VkIGF0IHJ1bnRpbWUgYnkKdGhlIGNvZGUgb3V0cHV0IGJ5IHNvbWUgb2YgdGhlIHRlbXBsYXRlcy4KCkludGVncmF0aW9uIHRlc3QgZGVmaW5pdGlvbnMgbGl2ZSBpbiBbLi9pbnRlZ3JhdGlvbi10ZXN0cy1kZWZpbml0aW9uc10oLi9pbnRlZ3JhdGlvbi10ZXN0cy1kZWZpbml0aW9ucykgYW5kIHRoZSBnZW5lcmF0ZWQKY29kZSBvdXRwdXQgdG8gWy4vaW50ZWdyYXRpb24tdGVzdHNdKC4vaW50ZWdyYXRpb24tdGVzdHMpCgpTY3JpcHRzIHRvIHJlZnJlc2ggdGhlIHRlc3QgZGF0YSBsaXZlIGluIFsuL3NjcmlwdHNdKC4vc2NyaXB0cykKCiMjIENvbnRyaWJ1dGluZwoKQ29udHJpYnV0aW5nIGd1aWRlbGluZXMgY2FuIGJlIGZvdW5kIGluIFsuL0NPTlRSSUJVVElORy5tZF0oLi9DT05UUklCVVRJTkcubWQpLgoKIyMgTGljZW5zZQoKTUlUIExpY2Vuc2VkLCBzZWUgWy4vTElDRU5TRV0oLi9MSUNFTlNFKQo= readmeEtag: '"1d2ed0cd775c5ab5ed6b4f9d7a1eaf2f1aeba583"' readmeLastModified: Sun, 02 Nov 2025 13:00:54 GMT repositoryId: 283031380 description: >- A code generation tool for openapi 3 / 3.1 specifications written in typescript, primarily aimed at generating typescript clients and server stubs. Other target languages may be added in future. created: '2020-07-27T22:27:40Z' updated: '2026-02-04T12:58:14Z' language: TypeScript archived: false stars: 34 watchers: 4 forks: 5 owner: mnahkies logo: https://avatars.githubusercontent.com/u/2555533?v=4 license: MIT repoEtag: '"8f014148c4febd6403bda05a03da4e6d57f7c4db197fcbb2ec443124511cdcaf"' repoLastModified: Wed, 04 Feb 2026 12:58:14 GMT foundInMaster: true category: Parsers id: f48e00de5360ad43542a200fc9b5769b v3_1: true - source: openapi3 tags repository: https://github.com/dkackman/chia-api v3: true repositoryMetadata: base64Readme: >- IyBjaGlhLWFwaQoKWyFbT3BlbkFQSSBMaW50ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9ka2Fja21hbi9jaGlhLWFwaS9hY3Rpb25zL3dvcmtmbG93cy9saW50ZXIueWFtbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vZGthY2ttYW4vY2hpYS1hcGkvYWN0aW9ucy93b3JrZmxvd3MvbGludGVyLnlhbWwpCgpBbiB1bm9mZmljYWwgW09wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pIGRlc2NyaXB0aW9uIG9mIFtjaGlhXShodHRwczovL2dpdGh1Yi5jb20vQ2hpYS1OZXR3b3JrL2NoaWEtYmxvY2tjaGFpbikgUlBDIGludGVyZmFjZXMuCgpWaWV3IGN1cnJlbnQgc3BlYyBiYXNlZCBvbiBjaGlhIDIuNS4wOgoKLSBbSW4gdGhlIHN3YWdnZXIgVUldKGh0dHBzOi8vZGthY2ttYW4uZ2l0aHViLmlvL2NoaWEtYXBpLz91cmxzLnByaW1hcnlOYW1lPUZ1bGwlMjBOb2RlKQotIFtBcyBhIHJlZG9jIGdlbmVyYXRlZCBzaXRlXShodHRwczovL2RrYWNrbWFuLmdpdGh1Yi5pby9jaGlhLWFwaS9yZWRvYy8pCi0gW0FzIGEgc3dhZ2dlci1jb2RlZ2VuIGdlbmVyYXRlZCBzaXRlXShodHRwczovL2RrYWNrbWFuLmdpdGh1Yi5pby9jaGlhLWFwaS9zdGF0aWMvKQoKX19fCgpfY2hpYSBhbmQgaXRzIGxvZ28gYXJlIHRoZSByZWdpc3RlcmVkIHRyYWRlbWFyayBvciB0cmFkZW1hcmsgb2YgW0NoaWEgTmV0d29yaywgSW5jXShodHRwczovL2NoaWEubmV0KS4gaW4gdGhlIFVuaXRlZCBTdGF0ZXMgYW5kIHdvcmxkd2lkZS5fCg== readmeEtag: '"e4bfe01c7e75933fb5d725934e998f18a61c4861"' readmeLastModified: Sat, 11 Jan 2025 02:05:45 GMT repositoryId: 453839137 description: Swagger for chia https://dkackman.github.io/chia-api/ created: '2022-01-31T00:32:10Z' updated: '2025-03-19T21:03:36Z' language: Mustache archived: false stars: 22 watchers: 1 forks: 5 owner: dkackman logo: https://avatars.githubusercontent.com/u/5160233?v=4 license: Apache-2.0 repoEtag: '"6e7a458e227ca08a9d814d1bfe1de07df1143da5074882677cf46a99d80fb70b"' repoLastModified: Wed, 19 Mar 2025 21:03:36 GMT foundInMaster: true category: Server id: af8d79e99ec00e2f41229885f84248da - source: openapi3 tags repository: https://github.com/postman-open-technologies/bingchain v3: true id: 7775903803c68ddd46ca381ffe39c75b repositoryMetadata: base64Readme: >- IyDwn5W177iP8J+UlyBCaW5nQ2hhaW4KClRoaXMgaXMgYW4gZXZvbHV0aW9uIG9mIFtsYW5nY2hhaW4tbWluaV0oaHR0cHM6Ly9naXRodWIuY29tL0NvbGluRWJlcmhhcmR0L2xhbmdjaGFpbi1taW5pKSwgYSB2ZXJ5IHNpbXBsZSByZS1pbXBsZW1lbnRhdGlvbiBvZiBbTGFuZ0NoYWluXShodHRwczovL2dpdGh1Yi5jb20vaHdjaGFzZTE3L2xhbmdjaGFpbiksIGluIH4zNTAgbGluZXMgb2YgY29yZSBjb2RlLiBJbiBlc3NlbmNlLCBpdCBpcyBhIG11bHRpLW1vZGVsIExMTS1wb3dlcmVkIGNoYXQgYXBwbGljYXRpb24gdGhhdCBpcyBhYmxlIHRvIHVzZSB0b29scyAoTWljcm9zb2Z0ICoqQmluZyoqIHNlYXJjaCwgVVJMIHJldHJpZXZhbCwgQVBJIHBsdWdpbiBpbnN0YWxsYXRpb24sIEFQSSBjYWxscywgYSBKYXZhc2NyaXB0IHNhbmRib3gsIEpzRmlkZGxlIGNyZWF0aW9uLCBpbWFnZSBhbmQgdmlkZW8gcHJldmlldywgYW5kIGEgc2NpZW50aWZpYyBjYWxjdWxhdG9yLCBhcyB3ZWxsIGFzIG1ldGEtdG9vbHMgc3VjaCBhcyBgbGlzdGAsIGBkaXNhYmxlYCwgYHJlc2V0YCBhbmQgYGRlYnVnYCkgaW4gb3JkZXIgdG8gYnVpbGQgYSAqKmNoYWluKiogb2YgdGhvdWdodCB0byBob2xkIGNvbnZlcnNhdGlvbnMgYW5kIGFuc3dlciBxdWVzdGlvbnMuCgpIZXJlJ3MgYW4gZXhhbXBsZToKCn5+fgpROiBXaGF0IGlzIHRoZSB3b3JsZCByZWNvcmQgZm9yIHNvbHZpbmcgYSBydWJpa3MgY3ViZT8KVGhlIHdvcmxkIHJlY29yZCBmb3Igc29sdmluZyBhIFJ1YmlrJ3MgQ3ViZSBpcyA0LjY5IHNlY29uZHMsIGhlbGQgYnkgWWloZW5nIFdhbmcgKENoaW5hKS4KUTogQ2FuIGEgcm9ib3Qgc29sdmUgaXQgZmFzdGVyPwpUaGUgZmFzdGVzdCB0aW1lIGEgcm9ib3QgaGFzIHNvbHZlZCBhIFJ1YmlrJ3MgQ3ViZSBpcyAwLjYzNyBzZWNvbmRzLgpROiBXaG8gbWFkZSB0aGlzIHJvYm90PwpJbmZpbmVvbiBjcmVhdGVkIHRoZSByb2JvdCB0aGF0IHNvbHZlZCBhIFJ1YmlrJ3MgQ3ViZSBpbiAwLjYzNyBzZWNvbmRzLgpROiBXaGF0IHRpbWUgd291bGQgYW4gYXZlcmFnZSBodW1hbiBleHBlY3QgZm9yIHNvbHZpbmc/Ckl0IHRha2VzIHRoZSBhdmVyYWdlIHBlcnNvbiBhYm91dCB0aHJlZSBob3VycyB0byBzb2x2ZSBhIFJ1YmlrJ3MgY3ViZSBmb3IgdGhlIGZpcnN0IHRpbWUuCn5+fgoKVGhpcyBpcyBub3QgaW50ZW5kZWQgdG8gYmUgYSByZXBsYWNlbWVudCBmb3IgTGFuZ0NoYWluLCB3aGljaCBoYXMgbWFueSBhbHRlcm5hdGl2ZSBhbmQgY29tcG9zYWJsZSBidWlsZGluZyBibG9ja3MsIGluc3RlYWQgaXQgd2FzIGJ1aWx0IHRvIGRlbW9uc3RyYXRlIHRoZSBwb3dlciBvZiBhc3NlbWJsaW5nIGEgc2V0IG9mIHRvb2xzIChzdWNoIGFzIEFQSSBjYWxsaW5nIGFuZCBKYXZhc2NyaXB0IGV4ZWN1dGlvbikuIElmIHlvdSdyZSBpbnRlcmVzdGVkIGluIGhvdyBMYW5nQ2hhaW4sIGFuZCBzaW1pbGFyIHRvb2xzIHdvcmssIHRoaXMgaXMgYSB2ZXJ5IGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgojIyBSdW5uaW5nIC8gZGV2ZWxvcGluZwoKSW5zdGFsbCBkZXBlbmRlbmNpZXMsIGFuZCBydW4gKHdpdGggbm9kZSA+PSB2MTgpOgoKfn5+CiUgbnBtIGluc3RhbGwKfn5+CgpUbyBkaXNwbGF5IHZpZGVvcyBpbiB0aGUgdGVybWluYWwsIHlvdSB3aWxsIG5lZWQgdG8gaW5zdGFsbCBgZmZtcGVnYC4KCllvdSdsbCBuZWVkIHRvIGhhdmUgYW4gT3BlbkFJIEFQSSBrZXksIGFuZCBvcHRpb25hbGx5IGEgQmluZyBTZWFyY2ggQVBJIGtleS4gVGhlc2UgY2FuIGJlIHN1cHBsaWVkIHRvIHRoZSBhcHBsaWNhdGlvbiB2aWEgYSBgLmVudmAgZmlsZToKCmBgYHNoZWxsCk9QRU5BSV9BUElfS0VZPSIuLi4iCkJJTkdfQVBJX0tFWT0iLi4uIgpNT0RFTD1ncHQtNApUT0tFTl9MSU1JVD0zMjc2OApURU1QRVJBVFVSRT0wLjI1ClJFU1BPTlNFX0xJTUlUPTUxMgpQT1JUPTEzMzcKR1VJPTEKI0xBTkc9VWtyYWluaWFuCiNERUJVRz0yCiNTRUVEX1FVRVJJRVM9MQojUFJPTVBUX09WRVJSSURFPVJpZGRsZSBtZSB0aGlzISAke3F1ZXN0aW9ufQpgYGAKCllvdSBjYW4gYWxzbyBzZXQgYFBST1ZJREVSPWFudGhyb3BpY2AgKHdpdGggYSByZWxldmFudCBgQU5USFJPUElDX0FQSV9LRVlgLCBgTU9ERUxgIGFuZCBgVE9LRU5fTElNSVRgKSB0byB1c2UgYW4gYWx0ZXJuYXRpdmUgTExNL0FQSSBwcm92aWRlci4KClNldCB0aGUgdG9rZW4gbGltaXQgdG8gdGhlIGFkdmVydGlzZWQgbGltaXQgb2YgdGhlIG1vZGVsIHlvdSBhcmUgdXNpbmcsIHNvIDMyNzY4IGZvciBgZ3B0LTRgLCA0MDk2IGZvciBgdGV4dC1kYXZpbmNpLTAwM2AgYW5kIDIwNDggZm9yIGB0ZXh0LWN1cmllLTAwMWAuCgpUaGUgY2xldmVyIHBhcnQgaXMgdGhlIGRlZmF1bHQgaW5pdGlhbCBwcm9tcHQsIHdoaWNoIGlzIGhlbGQgaW4gW2Bwcm9tcHQudHh0YF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Bvc3RtYW4tb3Blbi10ZWNobm9sb2dpZXMvYmluZ2NoYWluL21haW4vcHJvbXB0LnR4dCksIHVubGVzcyBvdmVycmlkZGVuIGJ5IHRoZSBgUFJPTVBUX09WRVJSSURFYCBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCkV4YW1wbGUgcHJvbXB0cyBhbmQgcmVzcG9uc2VzIHRvIHNob3cgaG93IHRoZSB2YXJpb3VzIGJ1aWx0LWluIHRvb2xzIHdvcmsgY2FuIGJlIGZvdW5kIGluIHRoZSBbYGV4YW1wbGVzYF0oaHR0cHM6Ly9naXRodWIuY29tL3Bvc3RtYW4tb3Blbi10ZWNobm9sb2dpZXMvYmluZ2NoYWluL3RyZWUvbWFpbi9leGFtcGxlcykgZGlyZWN0b3J5LiBUaGUgdG9vbHMgdGhlbXNlbHZlcyBhcmUgZGVmaW5lZCBpbiBbYGxpYi90b29scy5tanNgXShodHRwczovL2dpdGh1Yi5jb20vcG9zdG1hbi1vcGVuLXRlY2hub2xvZ2llcy9iaW5nY2hhaW4vdHJlZS9tYWluL2xpYi90b29scy5tanMpLCBpbmNsdWRpbmcgdGhlIGBkZXNjcmlwdGlvbmAgcHJvcGVydGllcyB3aGljaCBhY3QgYXMgZnVydGhlciBwcm9tcHRzIHRvIHRoZSBMTE0gdG8gc3VnZ2VzdCB3aGVuIGFuZCBob3cgdGhlIHRvb2xzIHNob3VsZCBiZSB1c2VkLgoKVGhlcmUgYXJlIGEgZmV3IEphdmFzY3JpcHQgYW5kIENTUyBmaWxlcyBzY2F0dGVyZWQgYWJvdXQgZnJvbSBbanNmaWRkbGUubmV0XShodHRwczovL2pzZmlkZGxlLm5ldC8pIHRvIG1ha2UgdGhlIGBzYXZldGV4dGAsIGBzYXZlaHRtbGAgYW5kIGBzYXZlY29kZWAgdG9vbHMgd29yayBsb2NhbGx5LgoKKipOb3RlKio6IHRvIGVuYWJsZSB0aGUgSmF2YXNjcmlwdCBzYW5kYm94LCB5b3UgbXVzdCBwYXNzIHRoZSBvcHRpb24gYC0tZXhwZXJpbWVudGFsLXZtLW1vZHVsZXNgIHRvIE5vZGUuanMuIFRoZSBpbmNsdWRlZCBgZ28uc2hgIHNjcmlwdCBzZXRzIHRoZSBOb2RlLmpzIHJlY29tbWVuZGVkIG9wdGlvbnMuCgojIyBTdGFydC11cAoKVGhlIGFwcGxpY2F0aW9uIHdpbGwgZGlzcGxheSB0aGUgYnVpbHQtaW4gdG9vbHMgYXMgaXQgaW5pdGlhbGlzZXMgdGhlbS4gVG9vbCBuYW1lcyBmb2xsb3dlZCBieSBbMV0gYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIHNlY3VyaXR5IHJlYXNvbnMgKGkuZS4gdGhleSBtYXkgYWNjZXNzIGZpbGVzIG9uIHlvdXIgbG9jYWwgZmlsZXN5c3RlbSBvciB5b3VyIGVudmlyb25tZW50IHZhcmlhYmxlcykuIFlvdSBjYW4gZW5hYmxlIHRoZW0gYnkgdHlwaW5nIGBlbmFibGUgW3Rvb2xuYW1lXWAgYXQgdGhlIHByb21wdC4gVG9vbCBuYW1lcyBmb2xsb3dlZCBieSBbMl0gYXJlIGRpc2FibGVkIGJlY3Vhc2UgeW91IGRvIG5vdCBoYXZlIHRoZSByZXF1aXNpdGUgQVBJIGtleSBpbiB5b3VyIGVudmlyb25tZW50IG9yIHlvdXIgdmVyc2lvbiBvZiBOb2RlLmpzIGRvZXMgbm90IHN1cHBvcnQgdGhlIHJlcXVpcmVkIGZlYXR1cmVzLgoKIyMgRXhhbXBsZSBkaWFsb2d1ZQoKWW91IGNhbiBub3cgcnVuIHRoZSBjaGFpbjoKCmBgYHJlcGwKJSAuL2dvLnNoCkhvdyBjYW4gSSBoZWxwPyA+IHdoYXQgd2FzIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCB3b21hbiBpbiBzcGFjZT8KYGBgCgoqIEkgbmVlZCB0byBzZWFyY2ggZm9yIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCB3b21hbiBpbiBzcGFjZS4KKiAqQWN0aW9uKjogYHNlYXJjaGAKKiAqQWN0aW9uIElucHV0KjogYGZpcnN0IHdvbWFuIGluIHNwYWNlIG5hbWVgCgpDYWxsaW5nIGBzZWFyY2hgIHdpdGggYGZpcnN0IHdvbWFuIGluIHNwYWNlIG5hbWVgCgoxLiAqKlZhbGVudGluYSBUZXJlc2hrb3ZhIC0gRmlyc3QgV29tYW4gaW4gU3BhY2UgLSBCaW9ncmFwaHkqKgoyLiAqKlZhbGVudGluYSBUZXJlc2hrb3ZhOiBGaXJzdCBXb21hbiBpbiBTcGFjZSB8IFNwYWNlKioKMy4gKipUaGUgRmlyc3QgV29tYW4gaW4gU3BhY2U6IFZhbGVudGluYSBUZXJlc2hrb3ZhIC0gVGhvdWdodENvKioKCiogKlRob3VnaHQqOiBJIG5vdyBrbm93IHRoZSBmaW5hbCBhbnN3ZXIuCiogKkZpbmFsIEFuc3dlcio6IFRoZSBuYW1lIG9mIHRoZSBmaXJzdCB3b21hbiBpbiBzcGFjZSBpcyBWYWxlbnRpbmEgVGVyZXNoa292YS4KKiAqKlRoZSBuYW1lIG9mIHRoZSBmaXJzdCB3b21hbiBpbiBzcGFjZSBpcyBWYWxlbnRpbmEgVGVyZXNoa292YS4qKgoKIyMjIEV4aXRpbmcgdGhlIGNoYWluIC8gdmkgbW9kZQoKKiBZb3UgY2FuIHVzZSBgdmlgL2B2aW1gLWxpa2UgY29tbWFuZHMgdG8gZXhpdCwgc3VjaCBhcyBgOnFgIG9yIHlvdSBjYW4gQ3RybC1DIHR3aWNlIHRvIGV4aXQuCiogWW91IGNhbiB1c2UgYDpzZXRgIHRvIHF1ZXJ5IGFsbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgYDpzZXQgW3ZhcmlhYmxlXT1bdmFsdWVdYCB0byB0ZW1wb3JhcmlseSBhbWVuZCB0aGUgY3VycmVudCBlbnZpcm9ubWVudC4KCiMjIEF1dGhvcnMKCiogW01pa2UgUmFscGhzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9NaWtlUmFscGhzb24pCiogW0diYWRleWJvaCBCZWxsb10oaHR0cHM6Ly9naXRodWIuY29tL0diYWhkZXlib2gpCiogW0NvbGluIEViZXJoYXJkdF0oaHR0cHM6Ly9naXRodWIuY29tL0NvbGluRWJlcmhhcmR0KQoKIyMgRnV0dXJlIHdvcmsgcGxhbm5lZAoKKiBJZGVhcyBhbmQgUFJzIGdyYXRlZnVsbHkgcmVjZWl2ZWQuCg== readmeEtag: '"212c190a1f5a844903068a3e6c9644f508923de8"' readmeLastModified: Fri, 19 May 2023 10:39:01 GMT repositoryId: 636541324 description: Capable Langchain/AutoGPT alternative in ~350 lines of core code created: '2023-05-05T04:49:20Z' updated: '2025-11-26T00:14:37Z' language: JavaScript archived: false stars: 20 watchers: 5 forks: 2 owner: postman-open-technologies logo: https://avatars.githubusercontent.com/u/79494470?v=4 license: MIT repoEtag: '"e41bd45fa6dc65acd0aba7e7f9514007f41c1f9704a3fe066aed536aab9dffef"' repoLastModified: Wed, 26 Nov 2025 00:14:37 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/cloudedbats/cloudedbats_wurb_2020 v3: true repositoryMetadata: base64Readme: >- IyAgQ2xvdWRlZEJhdHMgLSBXVVJCIDIwMjAKCldlbGNvbWUgdG8gQ2xvdWRlZEJhdHMtV1VSQiwgdGhlIERJWSBiYXQgZGV0ZWN0b3IuCgoqKk5vdGU6IFRoaXMgaXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgV1VSQiBiYXQgZGV0ZWN0b3IuClRoZSBvbGQgdmVyc2lvbiBjYW4gc3RpbGwgYmUgZm91bmQgaGVyZTogCmh0dHBzOi8vZ2l0aHViLmNvbS9jbG91ZGVkYmF0cy9jbG91ZGVkYmF0c193dXJiKioKCiFbV1VSQi0yMDIwXShpbWFnZXMvQ2xvdWRlZEJhdHMtV1VSQi5qcGc/cmF3PXRydWUgICJDbG91ZGVkQmF0cyBXVVJCIDIwMjAuIikKQ2xvdWRlZEJhdHMgLSBXVVJCIDIwMjAuIENsb3VkZWRCYXRzLm9yZyAvIFtDQy1CWV0oaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMC8pCgojIyBJbnRyb2R1Y3Rpb24KClRoaXMgaXMgd2hhdCB5b3UgbmVlZCB0byBidWlsZCB5b3VyIG93biBiYXQgZGV0ZWN0b3I7IGFuIHVsdHJhc29uaWMgVVNCIG1pY3JvcGhvbmUsIGEgUmFzcGJlcnJ5IFBpIGNvbXB1dGVyIAp3aXRoIFNEIGNhcmQsIHBvd2VyIHN1cHBseSBhbmQgdGhpcyBDbG91ZGVkQmF0cy1XVVJCIDIwMjAgb3BlbiBzb3VyY2Ugc29mdHdhcmUuIE9wdGlvbmFsIHBhcnRzIHRoYXQgCmFyZSByZWNvbW1lbmRlZCBhcmUgVVNCIG1lbW9yeSBzdGlja3MsIGFuIFVTQiBHUFMgcmVjZWl2ZXIgYW5kIGEgUG93ZXIgYmFuayBmb3Igc2luZ2xlIG5pZ2h0IHNlc3Npb25zLgpGb3IgdGhlIHYwLjkuMCByZWxlYXNlIHlvdSB3aWxsIGFsc28gbmVlZCBoZWFkcGhvbmVzIHdpdGggYSAzLjUgbW0gamFjayBmb3IgYXVkaW8gZmVlZGJhY2suCgojIyBGdW5jdGlvbmFsIGZlYXR1cmVzLCBmcm9tIHRoZSBlYXJsaWVyIENsb3VkZWRCYXRzLVdVUkI6CgotIFN1cHBvcnQgZm9yIFVTQiB1bHRyYXNvbmljIG1pY3JvcGhvbmVzIGZyb20gUGV0dGVyc3NvbiBhbmQgRG9kb3Ryb25pYyAKICAodGVzdGVkIHdpdGggUGV0dGVyc3NvbiB1MjU2LCB1Mzg0LCBNNTAwICh0aGUgNTAwIGtIeiB2YXJpYW50KSwgTTUwMC0zODQgKDM4NCBrSHopIGFuZCAKICBEb2RvdHJvbmljIFVsdHJhTWljIDE5MkssIDI1MEssIDM4NEsgQkxFKS4KLSBTdXBwb3J0IGZvciBVU0IgR1BTIHJlY2VpdmVycyAodGVzdGVkIHdpdGggIk5hdmlsb2NrIE5MLTYwMlUiLCAiRy1TVEFSIElWLCBCVS0zNTNTNCIgCiAgYW5kICJHUFMvR0xPTkFTUyBVLWJsb3g3IikuCi0gRmlsZSBzdG9yYWdlIGFsdGVybmF0aXZlcyBhcmU7IGludGVybmFsbHkgKG9uIHRoZSBTRCBjYXJkKSwgVVNCIG1lbW9yeSBvciBVU0IgZGlzYy4KLSBSZWNvcmRpbmcgbW9kZXMgYXJlIGZ1bGwgc3BlY3RydW0gb3IgdGltZSBleHBhbmRlZCAid2F2IiBmaWxlcy4KLSBTb3VuZCBkZXRlY3Rpb24gYWxnb3JpdGhtIHRvIGF2b2lkIGVtcHR5IGZpbGVzLiBCdWZmZXIgYmVmb3JlIHRoZSBkZXRlY3RlZCBzb3VuZCBpcyBhbHdheXMgb24uCi0gVGltZSBhbmQgcG9zaXRpb24gZnJvbSBhdHRhY2hlZCBHUFMgcmVjZWl2ZXIgaXMgdXNlZCBpbiBmaWxlbmFtZXMgYW5kIGZvciB0aGUgc2NoZWR1bGVycyBjYWxjdWxhdGlvbnMuCi0gU2NoZWR1bGVyIGZvciBzdGFydCBhbmQgc3RvcCByZWxhdGVkIHRvIHRpbWVzdGFtcHMsIHN1bnNldCwgZGF3biwgZXRjLiB0aGF0IGFyZSBjYWxjdWxhdGVkIGZyb20gR1BTIHRpbWUgYW5kIHBvc2l0aW9uLgotIE1hbnVhbGx5IGNvbnRyb2xsZWQgdmlhIHN3aXRjaGVzIG9yIGEgY29tcHV0ZXIgbW91c2UuCi0gTG9nIGZpbGVzIGZvciBwZXJmb3JtZWQgYWN0aW9ucyBhbmQgZXJyb3JzLgotIFRoaXMgdmVyc2lvbiB3YXMgY29uZmlndXJlZCB2aWEgc2V0dGluZ3MgZmlsZXMgc3RvcmVkIG9uIHRoZSBVU0IgbWVtb3J5IHN0aWNrLgoKIyMgQWRkZWQgZmVhdHVyZXMgaW4gQ2xvdWRlZEJhdHMtV1VSQiAyMDIwOgoKUmVsZWFzZSB2MC44OgoKLSBUaGUgZGV0ZWN0b3IgYWN0cyBhcyBhIFdpRmkgSG90c3BvdC9BY2Nlc3NQb2ludCBhbmQgY29udGFpbnMgYSB3ZWIgc2VydmVyLiAKLSBXZWIgcGFnZXMgYXJlIHVzZWQgZm9yIGNvbmZpZ3VyYXRpb24gYW5kIGNvbnRyb2wuIEFkYXB0aXZlIGxheW91dCBmb3IgYm90aCBzbWFydHBob25lcyBhbmQgY29tcHV0ZXJzLgotIEF1dG9tYXRpYyBkZXRlY3Rpb24gb2YgY29ubmVjdGVkIFVsdHJhc29uaWMgbWljcm9waG9uZXMgKHZhbGlkIGZvciBQZXR0ZXJzc29uIGFuZCBEb2RvdHJvbmljKS4KLSBBdXRvbWF0aWMgZGV0ZWN0aW9uIG9mIGNvbm5lY3RlZCBVU0IgR1BTIFJlY2VpdmVyLgotIFNvdW5kIHBlYWtzIGluIGtIeiBhbmQgZEJGUyBhcmUgcHJlc2VudGVkIGluIGxpdmUgbG9nIGFuZCBpbiBmaWxlIG5hbWVzLgotIEF1dG9tYXRpYyBjaGVjayB3aGVyZSByZWNvcmRlZCBmaWxlcyBzaG91bGQgYmUgc3RvcmVkLiBPbiBVU0IgbWVtb3J5IChtdWx0aXBsZSBjYW4gYmUgdXNlZCkgb3IgCiAgaW50ZXJuYWxseSBpZiBubyBVU0IgYXJlIGZvdW5kLiBBdXRvbWF0aWMgZmFpbG92ZXIgdG8gaW50ZXJuYWwgc3RvcmFnZSB3aGVuIFVTQiBtZW1vcnkgaXMgZnVsbC4KLSBQb3NzaWJsZSB0byBydW4gdGhlIGRldGVjdG9ycyB1c2VyIGludGVyZmFjZSBvdmVyIGludGVybmV0LCBhbmQgdG8gZG93bmxvYWQgZmlsZXMgdmlhIFNGVFAuCgpSZWxlYXNlIHYwLjk6CgotIFJlb3JnYW5pemVkIHVzZXIgaW50ZXJmYWNlIHdpdGggYSBtb3JlIGludHVpdGl2ZSBkZXRlY3RvciBtb2RlIHNlbGVjdG9yLgotIEF1ZGlvIGZlZWRiYWNrIHZpYSB0aGUgMy41IG1tIGF1ZGlvIGphY2sgZm9yIGFjdGl2ZSBtb25pdG9yaW5nIHdpdGggYWRqdXN0YWJsZSBwaXRjaCBsZXZlbC4KLSBOZXcgYWx0ZXJuYXRpdmVzIGZvciBHUFMgc291cmNlcyB3aXRoIGZhbGxiYWNrIGFsdGVybmF0aXZlcyBzdWl0YWJsZSBmb3IgcGFzc2l2ZSBtb25pdG9yaW5nLgotIFR3byBjb25maWd1cmFibGUgc2V0dGluZ3M6ICJ1c2VyIGRlZmF1bHQgc2V0dGluZ3MiIGFuZCAic3RhcnQtdXAgc2V0dGluZ3MiLgotIEJhc2ljIGNvbnRyb2wgdmlhIHN3aXRjaGVzIG9yIGEgY29tcHV0ZXIgbW91c2UgKHJlaW50cm9kdWNlZCwgd2FzIG1pc3NpbmcgaW4gdjAuOCkuCi0gQ29uZmlndXJhYmxlIGhvc3QgYW5kIHBvcnQgZm9yIGludGVybmV0IHRyYWZmaWMgdmlhIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSBQb3NzaWJsZSB0byBleHBlcmltZW50IGFuZCB1c2Ugb3RoZXIgc291bmQgY2FyZHMgdGhhdCBhcmUgY29tcGF0aWJsZSB3aXRoIEFMU0Egb24gUmFzcGJlcnJ5IFBpLgogIEVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgdXNlZCB0byBzcGVjaWZ5IHNvdW5kIGNhcmQgbmFtZSBhbmQgc2FtcGxpbmcgZnJlcXVlbmN5LgotIFVzZXIgbWFudWFsIGZvciBiYXNpYyB1c2FnZS4KCiMjIE90aGVyIGNoYXJhY3RlcmlzdGljcwoKLSBUaGUgQ2xvdWRlZEJhdHMgc29mdHdhcmUgaXMgZGV2ZWxvcGVkIGFzIG9wZW4gc291cmNlIHNvZnR3YXJlLiBGcmVlIHRvIHVzZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1JVCBsaWNlbnNlLgotIFRoZSBzb2Z0d2FyZSBpcyBkZXZlbG9wZWQgb24gdG9wIG9mIG1vZGVybiBvcGVuIHNvdXJjZSBjb2RlIGxpYnJhcmllcyBhbmQgZnJhbWV3b3Jrcy4KLSBJbmV4cGVuc2l2ZSBoYXJkd2FyZSBjYW4gYmUgdXNlZC4gTW9zdCBvZiBpdCBpcyBhdmFpbGFibGUgd2hlcmUgdGhleSBhcmUgc2VsbGluZyBlbGVjdHJvbmljIHRoaW5ncywgZXhjZXB0IGZvciB0aGUgdWx0cmFzb25pYyBtaWNyb3Bob25lLgotIFRoZSBSYXNwYmVycnkgUGkgY29tcHV0ZXIgb2ZmZXJzIG1hbnkgb3B0aW9ucyBmb3IgZW5oYW5jZW1lbnRzLCBsaWtlIGFkZGluZyBjYW1lcmFzIGFuZCBkaWZmZXJlbnQgdHlwZXMgb2Ygc2Vuc29ycy4KLSBTb2Z0d2FyZSBkZXZlbG9wZXJzIGNhbiBmb3JrIHRoZSBjb2RlIGZyb20gR2l0SHViIHRvIGFkanVzdCB0aGUgZGV0ZWN0b3IgY29kZSB0byBtYXRjaCB0aGVpciBvd24gbmVlZHMuCgojIyBEcmF3YmFja3MKCi0gSGlnaGVyIHBvd2VyIGNvbnN1bXB0aW9uIGNvbXBhcmVkIHRvIG90aGVyIHBhc3NpdmUgbW9uaXRvcmluZyBzeXN0ZW1zLiAKLSBZb3UgbXVzdCBwdXQgdG9nZXRoZXIgdGhlIHN5c3RlbSB5b3Vyc2VsZi4KLSBUaGUgY29kZSBpcyBkZWxpdmVyZWQgImFzLWlzIiB3aXRoIG5vIHdhcnJhbnRpZXMgYXQgYWxsLiBIb3dldmVyLCBtb3N0IHNvZnR3YXJlIGRldmVsb3BlcnMgdXNpbmcgTGludXggLyBQeXRob24gCiAgc2hvdWxkIHVuZGVyc3RhbmQgdGhlIGNvZGUgYW5kIHN5c3RlbSBzZXR1cCB0byBjb3JyZWN0IGVycm9ycyBpZiBJIGNhbid0IGhlbHAuCgojIyBVc2VyIG1hbnVhbHM6Ci0gVXNlciBtYW51YWwgZm9yIGJhc2ljIHVzYWdlOgogIGh0dHBzOi8vZ2l0aHViLmNvbS9jbG91ZGVkYmF0cy9jbG91ZGVkYmF0c193dXJiXzIwMjAvYmxvYi9tYXN0ZXIvZG9jcy91c2VyX21hbnVhbF9iYXNpYy5tZAotIFRoZSB1c2VyIG1hbnVhbCBmb3IgYWR2YW5jZWQgdXNhZ2UgaXMgbm90IHdyaXR0ZW4geWV0LiBQbGVhc2UgY29udGFjdCBtZSBpZiB0aGVyZSBhcmUgcXVlc3Rpb25zLgoKIyMgU29mdHdhcmUgbm90ZXMsIGZvciBkZXZlbG9wZXJzOgoKVGhpcyBpcyB2YWxpZCBmb3IgdGhlIENsb3VkZWRCYXRzLVdVUkIgMjAyMCB2ZXJzaW9uLgoKLSBTb2Z0d2FyZSBjb21wbGV0ZWx5IHJld3JpdHRlbi4gUHl0aG9uIDMuNysgbmVlZGVkLgotIFJhc3BiaWFuIEJ1c3RlciBMaXRlIHVzZWQgZm9yIFJhc3BiZXJyeSBQaSA0IHN1cHBvcnQuCi0gUmFzcEFQIChodHRwczovL3Jhc3BhcC5jb20vKSB1c2VkIHRvIHJ1biB0aGUgZGV0ZWN0b3IgYXMgYSBXaUZpIEhvdHNwb3QvQWNjZXNzUG9pbnQuCi0gVGhlIHNvZnR3YXJlIGRlc2lnbiBpcyBpbnNwaXJlZCBieSBtaWNybyBzZXJ2aWNlcy4KLSBUaGUgUkVTVCBBUEkgaXMgc3BlY2lmaWVkIGFzIE9wZW5BUEkgMy4wLgotIEFzeW5jaHJvbm91cyAoYXN5bmMvYXdhaXQpIHByb2dyYW1taW5nIGJvdGggaW4gZnJvbnRlbmQgYW5kIGJhY2tlbmQuCi0gV2ViU29ja2V0cyBhcmUgdXNlZCBmb3IgZmFzdCBjbGllbnQgdXBkYXRlcy4KLSBTdHlsZXNoZWV0cyBmb3IgcmVzcG9uc2l2ZSB3ZWIgcGFnZXMgYXJlIGJhc2VkIG9uIEJ1bG1hIChodHRwczovL2J1bG1hLmlvKS4KLSBGYXN0QVBJIGFuZCB1dmljb3JuIChodHRwczovL3d3dy51dmljb3JuLm9yZykgYXJlIHVzZWQgdG8gcnVuIHRoZSBhc3luY2hyb25vdXMgd2ViIHNlcnZpY2VzLgotIFB5dGhvbnMgbmV3IGFzeW5jaW8gbGlicmFyeSBpcyB1c2VkIHRvIHJlcGxhY2UgYWxsIHRocmVhZHMgaW4gdGhlIGJhY2tlbmQgc2VydmljZXMuIAotIFNvdW5kZGV2aWNlIGFuZCBweWF1ZGlvIGhhdmUgcHJldmlvdXNseSBiZWVuIHVzZWQgZm9yIGNvbW11bmljYXRpb24gd2l0aCBhdWRpbyBkZXZpY2VzLCBidXQKICB0aGV5IGFyZSBub3cgcmVwbGFjZWQgYnkgYWxzYWF1ZGlvIChodHRwczovL2xhcnNpbW1pc2NoLmdpdGh1Yi5pby9weWFsc2FhdWRpby8pLgoKIyMgSGFyZHdhcmUKCkFueSBSYXNwYmVycnkgUGkgbW9kZWwgd2l0aCBXaUZpLiAoUlBpIFplcm8gVyB3b3JrcyBpZiBhdXRvIGRldGVjdGlvbiBhbmQgCmF1ZGlvIGZlZWRiYWNrIGlzIHR1cm5lZCBvZmYpLiBSYXNwYmVycnkgUGkgNCBpcyByZWNvbW1lbmRlZCBpZiB5b3Ugd2FudCBoaWdoIHNwZWVkIHRyYW5zZmVyCm9mIHJlY29yZGVkIGZpbGVzIG92ZXIgaW50ZXJuZXQuCgpNb3N0IFNEIGNhcmRzIHNlZW1zIHRvIHdvcmsgYnV0IGZhc3RlciBvbmVzIGFyZSByZWNvbW1lbmRlZC4KUGVyc29uYWxseSBJIG1vc3RseSB1c2UgVTMgKFVIUyBTcGVlZCBDbGFzcyBVMyksIGZvciBleGFtcGxlIFRvc2hpYmEgRXhjZXJpYSBQcm8uCgoqKk5vdGU6KiogRm9yIHNvbWUgc3RyYW5nZSByZWFzb24gYm90aCBNNTAwIGFuZCBNNTAwLTM4NCBoYXZlIHByb2JsZW1zIGlmIGNvbm5lY3RlZCBkaXJlY3RseSB0byBhIApSYXNwYmVycnkgUGkgNCBhdCBzdGFydHVwIChSUGkzQisgd29ya3MgZmluZSkuIFdvcmthcm91bmRzIGFyZSB0byB1c2UgYW4gZXh0cmEgVVNCIDIuMCBIdWIgKHBhc3NpdmUgaXMgb2spLCAKb3IgYXR0YWNoIHRoZSBNNTAwIG9yIE01MDAtMzg0IG1pY3JvcGhvbmUgYWZ0ZXIgc3RhcnR1cC4KCiMjIEluc3RhbGxhdGlvbgoKTm90ZTogVGhpcyBpbnN0YWxsYXRpb24gZ3VpZGUgaXMgdXBkYXRlZCB0byBtYXRjaCB0aGUgQW5zaWJsZQppbnN0YWxsYXRpb24gZ3VpZGUgdGhhdCBpcyB1c2VkIGZvciBtb3JlIGF1dG9tYXRlZCBpbnN0YWxsYXRpb25zLgpJZiB5b3UgYXJlIGZhbWlsaWFyIHdpdGggQW5zaWJsZSwgdGhlbiBwbGVhc2UgaGF2ZSBhIGxvb2sgaGVyZToKaHR0cHM6Ly9naXRodWIuY29tL2Nsb3VkZWRiYXRzL2Fuc2libGUtcGxheWJvb2tzCgojIyMgTWFpbiB3b3JrZmxvdywgb3ZlcnZpZXcKClRoZSBtYWluIHN0ZXBzIGR1cmluZyB0aGUgaW5zdGFsbGF0aW9uIGFyZToKCi0gSW5zdGFsbCB0aGUgUmFzcGJlcnJ5IFBpIE9wZXJhdGluZyBzeXN0ZW0gb24gYW4gU0QgY2FyZCwgd2l0aCBzb21lIGJhc2ljIGNvbmZpZ3VyYXRpb25zLgotIE1vdmUgdGhlIFNEIGNhcmQgdG8gYSBSYXNwYmVycnkgUGkgY29tcHV0ZXIgYW5kIHBvd2VyIGl0IHVwLgotIFRoZSBSYXNwYmVycnkgUGkgc2hvdWxkIG5vdyBiZSBjb25uZWN0ZWQgdG8geW91ciBsb2NhbCBXaUZpIG5ldHdvcmssIG9yIHZpYSBhbiBvcHRpb25hbCBFdGhlcm5ldCBjYWJsZS4KLSBMb2dpbiB0byB0aGUgUmFzcGJlcnJ5IFBpIHdpdGggU1NIIGJ5IHVzaW5nIGEgdGVybWluYWwgd2luZG93LgotIE1ha2Ugc29tZSBiYXNpYyBjb25maWd1cmF0aW9ucy4KLSBJbnN0YWxsIG5lZWRlZCBMaW51eCBtb2R1bGVzLgotIEluc3RhbGwgdGhlIENsb3VkZWRCYXRzIFdVUkItMjAyMCBzb2Z0d2FyZS4KLSBSZXN0YXJ0IHRoZSBSYXNwYmVycnkgUGkuCi0gQWRkIGV4dHJhIG9wdGlvbmFsIGZlYXR1cmVzIGxpa2UgUmFzcEFQLCBldGMuCgojIyMgSW5zdGFsbCB0aGUgUmFzcGJlcnJ5IFBpIE9TCgpVc2UgdGhlICoqUmFzcGJlcnJ5IFBpIEltYWdlcioqIHRvIGluc3RhbGwgdGhlIFJhc3BiZXJyeSBQaSBvcGVyYXRpbmcgc3lzdGVtLgoKLSBEb3dubG9hZCBhbmQgaW5zdGFsbCB0aGUgUmFzcGJlcnJ5IFBpIEltYWdlciBmcm9tIGhlcmU6Cmh0dHBzOi8vd3d3LnJhc3BiZXJyeXBpLmNvbS9zb2Z0d2FyZS8KLSBTdGFydCB0aGUgUmFzcGJlcnJ5IFBpIEltYWdlci4KLSBTZWxlY3QgdGhlIG9wZXJhdGluZyBzeXN0ZW0gKioiUmFzcGJlcnJ5IFBpIE9TIExpdGUiKiosIHVzZSB0aGUgMzItYml0IHZlcnNpb24uIChUaGUgIkRlc2t0b3AiIHZlcnNpb24gd2lsbCBub3Qgd29yaywgaXQgbXVzdCBiZSB0aGUgKioiTGl0ZSIqKiB2ZXJzaW9uLikKLSBBdHRhY2ggYW4gU0QgY2FyZCBhbmQgc2VsZWN0IGl0IGluIHRoZSBSYXNwYmVycnkgUGkgSW1hZ2VyLgotIENsaWNrIHRoZSDigJxzZXR0aW5nc+KAnSBidXR0b24gKHRoZSBjb2d3aGVlbCkuCgpUaGVuIG1ha2UgdGhlc2Ugc2V0dGluZywgdG8gYmUgdXNlZCBhcyBhbiBleGFtcGxlLiBJdCB3aWxsIGFsc28gd29yayB3aXRoIGFuCkV0aGVybmV0IGNhYmxlIGNvbm5lY3RlZCB0byB0aGUgUmFzcGJlcnJ5IFBpLCBhbmQgdGhlbiB0aGUgV2lGaSAod2lyZWxlc3MgTEFOKSBwYXJ0IGNhbiBiZSBvbWl0dGVkLgoKTm90ZSB0aGF0IHRoZSB1c2VybmFtZSBtdXN0IGJlICoqcGkqKiBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIFdVUkIgYmF0IGRldGVjdG9yLgoKLSBIb3N0bmFtZTogd3VyYjk5Ci0gRW5hYmxlIFNTSAotIFVzZSBwYXNzd29yZCBhdXRoZW50aWNhdGlvbgotIFVzZXJuYW1lOiBwaQotIFBhc3N3b3JkOiBteS13dXJiOTktcGFzc3dvcmQKLSBDb25maWd1cmUgd2lyZWxlc3MgTEFOCiAgLSBTU0lEOiBteS1ob21lLXdpZmkKICAtIFBhc3N3b3JkOiBteS1ob21lLXdpZmktcGFzc3dvcmQKICAtIFdpcmVsZXNzIExBTiBjb3VudHJ5OiBTRQotIExvY2FsZSBzZXR0aW5ncwogIC0gVGltZSB6b25lOiBFdXJvcGUvU3RvY2tob2xtCiAgLSBLZXlib2FyZCBsYXlvdXQ6IHNlCgpGaW5hbGx5IHdyaXRlIHRvIHRoZSBTRCBjYXJkLiBXaGVuIGZpbmlzaGVkIHJlbW92ZSB0aGUgU0QgY2FyZC4KCklmIHlvdSBoYXZlIG1hbnkgZGV0ZWN0b3JzLCB0aGVuIGJlIHN1cmUgdGhhdCB5b3UgdXNlIGRpZmZlcmVudCBob3N0bmFtZXMuCk90aGVyd2lzZSB0aGVyZSB3aWxsIGJlIHByb2JsZW1zIHdoZW4gdGhleSBhcmUgY29ubmVjdGVkIHRvIHRoZSBzYW1lIG5ldHdvcmsKaWYgbW9yZSB0aGFuIG9uZSBpcyBpZGVudGlmaWVkIGFzLCBmb3IgZXhhbXBsZSwgInd1cmI5OS5sb2NhbCIuCgojIyMgU3RhcnQgdGhlIFJhc3BiZXJyeSBQaQoKSW5zZXJ0IHRoZSBTRCBjYXJkIGludG8gdGhlIFJhc3BiZXJyeSBQaSBhbmQgcG93ZXIgaXQgdXAuCgpUaGUgUmFzcGJlcnJ5IFBpIHNob3VsZCBub3cgYmUgY29ubmVjdGVkIHRvIHlvdXIgbG9jYWwgbmV0d29yaywgZWl0aGVyIHZpYSAKV2lGaSBvciBhbiBFdGhlcm5ldCBjYWJsZSBkZXBlbmRpbmcgb24geW91ciBjb25maWd1cmF0aW9uIGFib3ZlLgoKU3RhcnQgYSB0ZXJtaW5hbCB3aW5kb3cgYW5kIGNvbm5lY3Qgd2l0aCBTU0guCkZvciBXaW5kb3dzIHVzZXJzIFB1dHR5IGlzIGEgd2VsbCBrbm93biBhbHRlcm5hdGl2ZS4KCiAgICBzc2ggcGlAd3VyYjk5LmxvY2FsCgpJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGF0dGFjaCBhIHNjcmVlbiBhbmQga2V5Ym9hcmQvbW91c2UgZGlyZWN0bHkgdG8KdGhlIFJhc3BiZXJyeSBQaSBpbnN0ZWFkIG9mIHVzaW5nIHNzaC4gCk5vIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSB3aWxsIGJlIGF2YWlsYWJsZSwgb25seSBjb21tYW5kIGxpbmUgbW9kZS4KCiMjIyBCYXNpYyBjb25maWd1cmF0aW9ucwoKVXBkYXRlIHRoZSBSYXNwYmVycnkgUGkgc29mdHdhcmUuCgogICAgc3VkbyBhcHQgdXBkYXRlCiAgICBzdWRvIGFwdCB1cGdyYWRlCgpNYWtlIHNvbWUgY29uZmlndXJhdGlvbnMuCk1vc3Qgb2YgdGhlbSBhcmUgYWxyZWFkeSBtYWRlIHdoZW4gcnVubmluZwpSYXNwYmVycnkgUGkgSW1hZ2VyIGFib3ZlLCBidXQgdGhlIGxhc3QgdHdvIG11c3QKYmUgZG9uZSBoZXJlLiBMYXRlciBtb2RpZmljYXRpb24gY2FuIGJlIGRvbmUKd2hlbmV2ZXIgeW91IHdhbnQgYnkgcnVubmluZyByYXNwaS1jb25maWcuCgogICAgc3VkbyByYXNwaS1jb25maWcKCkNoZWNrIG9yIGNoYW5nZSB0aGlzIChleGFtcGxlIGZvciBTd2VkaXNoIHVzZXJzKToKCi0gU3lzdGVtIE9wdGlvbnMgLSBIb3N0bmFtZTogd3VyYjk5IAotIFN5c3RlbSBPcHRpb25zIC0gUGFzc3dvcmQ6IG15LXd1cmI5OS1wYXNzd29yZAotIExvY2FsaXphdGlvbiBPcHRpb25zIC0gVGltZXpvbmU6IEV1cm9wZSAtIFN0b2NraG9sbQoKTWFuZGF0b3J5OgoKLSBTeXN0ZW0gT3B0aW9ucyAtIE5ldHdvcmsgYXQgYm9vdDogTm8KLSBBZHZhbmNlZCBPcHRpb25zIC0gRXhwYW5kIEZpbGVzeXN0ZW0uCgpBIHJlYm9vdCBpcyBuZWVkZWQgdG8gZXhwYW5kIHRoZSBmaWxlIHN5c3RlbS4KCiAgICBzdWRvIHJlYm9vdAoKSGludDogV2lGaSBuZXR3b3JrcyBjYW4gYmUgY2hhbmdlZCB2aWEgcmFzcGktY29uZmlnLgpBbm90aGVyIGFsdGVybmF0aXZlIGlzIHRvIGVkaXQgdGhlIHdwYV9zdXBwbGljYW50LmNvbmYgZmlsZQphbmQgY2hhbmdlIFNTSUQgYW5kIHBhc3N3b3JkIGZvciB0aGUgbmV0d29yay4KRXZlbiBhIGxpc3Qgb2YgbmV0d29ya3MgY2FuIGJlIGFkZGVkIGluIHRoaXMgZmlsZSBpZiB0aGUKZGV0ZWN0b3IgaXMgdXNlZCBhdCBkaWZmZXJlbnQgcGxhY2VzLgoKICAgIHN1ZG8gbmFubyAvZXRjL3dwYV9zdXBwbGljYW50L3dwYV9zdXBwbGljYW50LmNvbmYKCiMjIyBJbnN0YWxsIExpbnV4IHBhY2thZ2VzCgpJbnN0YWxsIG5lZWRlZCBzb2Z0d2FyZSBwYWNrYWdlcy4KCiAgICBzdWRvIGFwdCBpbnN0YWxsIGdpdCBweXRob24zLXZlbnYgcHl0aG9uMy1kZXYgbGliYXRsYXMtYmFzZS1kZXYgdWRldmlsCgpUbyBtYWtlIGl0IHdvcmsgd2l0aCB0aGUgIkJvb2t3b3JtIiByZWxlYXNlIG9mIHRoZSBSYXNwYmVycnkgUGkgT1MgdGhlc2UgCmluc3RhbGxhdGlvbnMgbXVzdCBiZSBkb25lLiBOb3RlIHRoYXQgIm51bXB5IiBhbmQgInNjaXB5IiBub3cgaXMgcmVtb3ZlZCBmcm9tCnRoZSAicmVxdWlyZW1lbnRzLnR4dCIgZmlsZSB1c2VkIGJ5ICJwaXAgaW5zdGFsbCIuIFRoZSBjb21tYW5kIGZvciBjcmVhdGluZwp2aXJ0dWFsIGVudmlyb25tZW50cyBmb3IgcHl0aG9uIGlzIGFsc28gbW9kaWZpZWQgdG8gYWNjZXB0IG51bXB5IGFuZCAKc2NpcHkgd2hlbiB0aGV5IGFyZSBub3QgY3JlYXRlZCBpbnNpZGUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuIApUaGUgcGFja2FnZSAicHlhbHNhYXVkaW8iIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIDY0IGJpdHMgdmVyc2lvbiwgCmFuZCB3ZSBoYXZlIHRvIHN0YXkgd2l0aCB0aGUgMzIgYml0cyB2ZXJzaW9uIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtLgoKICAgIHN1ZG8gYXB0IGluc3RhbGwgcHVsc2VhdWRpbyBweXRob24zLW51bXB5IHB5dGhvbjMtc2NpcHkKCiMjIyBQZXR0ZXJzc29uIE01MDAgKDUwMGtIeikKClRoZSBQZXR0ZXJzc29uIE01MDAgbWljcm9waG9uZSAodGhlIDUwMGtIeiB2ZXJzaW9uKSBkaWZmZXIgaW4gY29tbXVuaWNhdGlvbgpmb3JtYXQgY29tcGFyZWQgdG8gTTUwMC0zODQsIHUyNTYsIGFuZCB1Mzg0LiBTb21lIHVkZXYgcnVsZXMgbXVzdCBiZSBzZXR1cAp0byBhbGxvdyB0aGUgZGV0ZWN0b3IgdG8gY29tbXVuaWNhdGUgd2l0aCBpdC4KCiAgICAjIENyZWF0ZSBhIGZpbGUgd2l0aCB1ZGV2IHJ1bGVzOgogICAgc3VkbyBuYW5vIC9ldGMvdWRldi9ydWxlcy5kL3BldHRlcnNzb25fbTUwMF9iYXRtaWMucnVsZXMKICAgIAogICAgIyBBZGQgdGhpcyByb3cgaW4gdGhlIG5ldyBmaWxlLiAKICAgIFNVQlNZU1RFTT09InVzYiIsIEVOVntERVZUWVBFfT09InVzYl9kZXZpY2UiLCBNT0RFPSIwNjY0IiwgR1JPVVA9InBpIgoKIyMjIEluc3RhbGwgdGhlIENsb3VkZWRCYXRzIFdVUkItMjAyMCBzb2Z0d2FyZQoKQ2xvbmUgdGhlIHNvZnR3YXJlIGZyb20gdGhlIEdpdEh1YiByZXBvc2l0b3J5IGFuZCBpbnN0YWxsIFB5dGhvbiByZWxhdGVkIHBhY2thZ2VzLgoKICAgIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vY2xvdWRlZGJhdHMvY2xvdWRlZGJhdHNfd3VyYl8yMDIwLmdpdAogICAgY2QgY2xvdWRlZGJhdHNfd3VyYl8yMDIwLwogICAgcHl0aG9uIC1tIHZlbnYgLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyB2ZW52CiAgICBzb3VyY2UgdmVudi9iaW4vYWN0aXZhdGUKICAgIHBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQgCgpOb3RlOiBXaGVuIGluc3RhbGxpbmcgcGFja2FnZXMgbW9zdCBvZiB0aGVtIGFyZSBwcmUtcHJlcGFyZWQgaW4gc29tZXRoaW5nCmNhbGxlZCAid2hlZWxzIi4KVGhlIG1haW4gc291cmNlIGZvciB3aGVlbHMgZm9yIFJhc3BiZXJyeSBQaSBjYW4gYmUgZm91bmQgaGVyZSwKd2l0aCBhbiBleGFtcGxlIGZvciBTY2lQeToKaHR0cHM6Ly9waXdoZWVscy5vcmcvcHJvamVjdC9zY2lweS8KSWYgdGhhdCBidWlsZCBoYXMgZmFpbGVkLCB0aGVuIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSBhbiBvbGRlciB2ZXJzaW9uLgpUaGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MgbWF5IGZpbmQgYSB3b3JraW5nIHZlcnNpb24gYXV0b21hdGljYWxseSB3aXRoIGEKbG90IG9mIHdhcm5pbmdzIGR1cmluZyB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MuClRoZW4gaXQgaXMgcG9zc2libGUgdG8gZWRpdCB0aGUgcmVxdWlyZW1lbnRzLnR4dCBmaWxlIHRvIHNwZWVkIHVwIHRoZQppbnN0YWxsYXRpb24gcHJvY2Vzcy4gSW4gdGhlIFNjaVB5IGNhc2UgdGhlIHJvdyBjYW4gYmUgY2hhbmdlZApmcm9tICJzY2lweSIgdG8gInNjaXB5PDEuOS4wIiBpZiB0aGVyZSBhcmUgcHJvYmxlbXMgd2l0aCB2ZXJzaW9uIDEuOS4wLgoKIyMjIFJ1biB0aGUgZGV0ZWN0b3Igc29mdHdhcmUgYXMgYSBzZXJ2aWNlCgpJbnN0YWxsIHRoZSBzZXJ2aWNlIGFuZCBlbmFibGUgaXQuIEVuYWJsZSBtZWFucyB0aGF0IHRoZSBzZXJ2aWNlIHdpbGwKc3RhcnQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBSYXNwYmVycnkgUGkgaXMgc3RhcnRlZC4KCiAgICBzdWRvIGNwIHd1cmJfMjAyMC5zZXJ2aWNlIC9ldGMvc3lzdGVtZC9zeXN0ZW0vd3VyYl8yMDIwLnNlcnZpY2UKICAgIHN1ZG8gc3lzdGVtY3RsIGRhZW1vbi1yZWxvYWQKICAgIHN1ZG8gc3lzdGVtY3RsIGVuYWJsZSB3dXJiXzIwMjAuc2VydmljZQogICAgc3VkbyBzeXN0ZW1jdGwgc3RhcnQgd3VyYl8yMDIwLnNlcnZpY2UKCiMjIyBBZGp1c3Qgc291bmQgbGV2ZWwKClNldCB0aGUgaGVhZHBob25lIHZvbHVtZSB1c2VkIGZvciBhdWRpbyBmZWVkYmFjay4KCiAgICBhbWl4ZXIgc2V0ICdQQ00nIDEwMCUKICAgICMgT3RoZXIgdXNlZnVsIGNvbW1hbmRzIGlmIHRoZXJlIGFyZSBwcm9ibGVtczoKICAgIGFwbGF5IC1MCiAgICBhbWl4ZXIgc2NvbnRyb2xzCiAgICBhbHNhbWl4ZXIgLWMwCgojIyMgQW5kIGZpbmFsbHksIHJlc3RhcnQgdGhlIGRldGVjdG9yCgogICAgc3VkbyByZWJvb3QKCiMjIyBSYXNwQVAsIG9wdGlvbmFsIGluc3RhbGxhdGlvbgoKSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBkZXRlY3RvciBhd2F5IGZyb20gY29tcHV0ZXIgbmV0d29ya3MsIHRoZW4KdGhlIFJhc3BBUCBzb2Z0d2FyZSBjYW4gaGVscC4gUmVhZCBtb3JlIGhlcmU6IGh0dHBzOi8vcmFzcGFwLmNvbQoKTm90ZSB0aGF0IHRoZSBidWlsdC1pbiBXaUZpIG1vZHVsZSB3aWxsIGJlIHVzZWQgYnkgUmFzcEFQIHRvIHByb3ZpZGUgYSBXaUZpCmFjY2VzcyBwb2ludC4gVGhhdCBtZWFucyB0aGF0IHRoZSBwcmV2aW91c2x5IHVzZWQgV2lGaSBjb25uZWN0aW9uIHRvCnRoZSBsb2NhbCB3aXJlbGVzcyBuZXR3b3JrIHdpbGwgbm90IHdvcmsgd2hlbiBSYXNwQVAgaXMgaW5zdGFsbGVkLgpXaGVuIGludGVybmV0IGFjY2VzcyBpcyBuZWVkZWQgeW91IGhhdmUgdG8gY29ubmVjdCBhbiBFdGhlcm5ldCBjYWJsZS4KQW5vdGhlciBvcHRpb24gaXMgdG8gdXNlIGEgNEcvTFRFIG1vZGVtLCBsaWtlIHRoZSBIVUFXRUkgRTMzNzIsIGFuZCB0aGVuCnRoZSBkZXRlY3RvciBhbHNvIGNhbiBiZSB1c2VkIGFzIGEgV2lGaSBhY2Nlc3MgcG9pbnQgZm9yIGludGVybmV0IGFjY2Vzcy4KCkRvd25sb2FkIGFuZCBpbnN0YWxsIFJhc3BBcC4KCiAgICBjdXJsIC1zTCBodHRwczovL2luc3RhbGwucmFzcGFwLmNvbSB8IGJhc2gKCiAgICAjIEl0IGlzIG9rIHRvIHNlbGVjdCAiWSIgb24gYWxsIHN0ZXBzIGR1cmluZyB0aGUgaW5zdGFsbGF0aW9uLgogICAgIyBPcGVuVlBOIGFuZCBXaXJlZ3VhcmQgYXJlIG5vdCB1c2VkLCB5b3UgY2FuIHByZXNzICJOIiBmb3IgdGhlbS4KClJlc3RhcnQgdGhlIGRldGVjdG9yLgoKICAgIHN1ZG8gcmVib290CgpDb25uZWN0IHRvIHRoZSB3aWZpIG5ldHdvcmsgbmFtZWQgcmFzcGktd2ViZ3VpLiBQYXNzd29yZDogQ2hhbmdlTWUuCgpTdGFydCBhIHdlYiBicm93c2VyIGFuZCBnbyB0bzogaHR0cDovLzEwLjMuMTQxLjEuCgpJZiB0aGUgZGV0ZWN0b3IgaXMgdXNpbmcgYW4gRXRoZXJuZXQgY2FibGUgdGhlIHdlYiBhZGRyZXNzICJodHRwOi8vd3VyYjk5LmxvY2FsLyIKd2lsbCB3b3JrIGZyb20gYW55IGNvbXB1dGVyIGluIHRoZSBuZXR3b3JrIChpZiB0aGUgaG9zdG5hbWUgaXMgd3VyYjk5KS4KCkxvZ2luIGZvciB0aGUgYWRtaW5pc3RyYXRpb24gcGFnZTogVXNlcm5hbWU6ICoqYWRtaW4qKiwgcGFzc3dvcmQ6ICoqc2VjcmV0KiouCgpDaGFuZ2UgdGhlIGRlZmF1bHRzIHNldHRpbmdzIGZyb206CgotIEhvdHNwb3QtQmFzaWMtU1NJRCAod2lmaSBuYW1lKTogcmFzcGktd2ViZ3VpCi0gSG90c3BvdC1TZWN1cml0eS1QU0sgKHdpZmkgcGFzc3dvcmQpOiBDaGFuZ2VNZQotIEF1dGhlbnRpY2F0aW9uLVVzZXJuYW1lIChhZG1pbiB1c2VybmFtZSk6IGFkbWluCi0gQXV0aGVudGljYXRpb24tUGFzc3dvcmQgKGFkbWluIHBhc3N3b3JkKTogc2VjcmV0CgpDaGFuZ2UgdG8gKGV4YW1wbGUgZm9yIFN3ZWRpc2ggdXNlcnMpOgoKLSBIb3RzcG90LUJhc2ljLVNTSUQgKHdpZmkgbmFtZSk6IHdpZmk0YmF0cwotIEhvdHNwb3QtU2VjdXJpdHktUFNLICh3aWZpIHBhc3N3b3JkKTogY2hpcm9wdGVyYQotIEF1dGhlbnRpY2F0aW9uLVVzZXJuYW1lIChhZG1pbiB1c2VybmFtZSk6IGJhdG1hbgotIEF1dGhlbnRpY2F0aW9uLVBhc3N3b3JkIChhZG1pbiBwYXNzd29yZCk6IGNoaXJvcHRlcmEKLSBIb3RzcG90LUFkdmFuY2VkLUNvdW50cnkgQ29kZTogU3dlZGVuCgojIyBSdW4gdGhlIGRldGVjdG9yCgotIENvbm5lY3QgdGhlIHVsdHJhc29uaWMgbWljcm9waG9uZSB0byB0aGUgZGV0ZWN0b3IgKGNhbiBhbHNvIGJlIGRvbmUgYWZ0ZXIgc3RhcnR1cCkuCi0gQ29ubmVjdCBVU0IgbWVtb3J5IHN0aWNrKHMpIChvcHRpb25hbCwgb3IgY2FuIGJlIGRvbmUgYWZ0ZXIgc3RhcnR1cCkuCi0gU3RhcnQgdGhlIFJhc3BiZXJyeSBQaS4gSXQgd2lsbCBzdGFydCBhdXRvbWF0aWNhbGx5IHdoZW4gcG93ZXIgaXMgYWRkZWQuCi0gQ29ubmVjdCBhIGNvbXB1dGVyIG9yIG1vYmlsZSBwaG9uZSB0byB0aGUgV2lGaSBuZXR3b3JrIGNhbGxlZCAid2lmaTRiYXRzIi4gUGFzc3dvcmQ6IGNoaXJvcHRlcmEuCi0gT3BlbiBhIHdlYiBicm93c2VyIGFuZCBnbyB0byBodHRwOi8vMTAuMy4xNDEuMTo4MDAwIChodHRwOi8vd3VyYjk5OjgwMDAgd2lsbCB3b3JrIGlmIG5vdCB1c2luZyBSYXNwQVAuKQotIENoZWNrICJHZW9ncmFwaGljIGxvY2F0aW9uIiBhbmQgIlNldHRpbmdzIi4KLSBQcmVzcyAiU2V0IHRpbWUiLgotIFNlbGVjdCAiTW9kZSIsIGZvciBleGFtcGxlICJSZWNvcmRpbmcgLSBBdXRvIGRldGVjdGlvbiIuCi0gQ29ubmVjdCBoZWFkcGhvbmVzICgzLjUgbW0gamFja2V0IG9uIHRoZSBSYXNwYmVycnkgUGkpIGFuZCBsaXN0ZW4gdG8gdGhlIGJhdHMuCi0gUmVjb3JkIHNvbWUgYmF0cy4KLSBQcmVzcyAiU3RvcCByZWNvcmRpbmciLgoKVGhlcmUgYXJlIGRpZmZlcmVudCB3YXlzIHRvIHR1cm4gdGhlIFJhc3BiZXJyeSBQaSBkZXRlY3RvciBvZmYgKHBvd2VyIG9mZiBvbmx5IGlzIG5vdApyZWNvbW1lbmRlZCBzaW5jZSB0aGVyZSBpcyBhIHNtYWxsIHJpc2sgb2YgY29ycnVwdGVkIFNEIGNhcmQgb3IgVVNCIG1lbW9yeSBzdGlja3MpOgoKLSBTZWxlY3QgIk1vZGUiOiAiRGV0ZWN0b3IgLSBQb3dlciBvZmYuLi4iIGFuZCBwcmVzcyB0aGUgIlNodXRkb3duIiBidXR0b24uCi0gR28gdG8gdGhlIFdpRmkgYWRtaW5pc3RyYXRpb24gcGFnZSBhdCBodHRwOi8vMTAuMy4xNDEuMS4gU2VsZWN0ICJTeXN0ZW0iIGFuZCBwcmVzcyAiU2h1dGRvd24iLgotIEF0dGFjaCBhbiBVU0IgQ29tcHV0ZXIgbW91c2UgYW5kIGhvbGQgZG93biBib3RoIHRoZSBsZWZ0IGVuZCByaWdodCBidXR0b24gZm9yIDUgc2VjLgotIENvbm5lY3QgYSBwaHlzaWNhbCBidXR0b24gdG8gR1BJTyBwaW4gIzM3IGFuZCBwaW4gIzM5IChidXQgYmUgY2FyZWZ1bCwgY29ubmVjdGluZyB0aGUgd3JvbmcgR1BJTyAKICBwaW5zIGNhbiBkZXN0cm95IHlvdXIgUmFzcGJlcnJ5IFBpKS4gVGhlbiBwcmVzcyB0aGF0IGJ1dHRvbiBmb3IgYSBmZXcgc2Vjb25kcy4KCk1vcmUgdGhhbiBvbmUgVVNCIG1lbW9yeSBzdGljayBjYW4gYmUgdXNlZC4gVGhleSB3aWxsIGJlIGZpbGxlZCB1cCB3aXRoIHdhdmUgZmlsZXMKaW4gYWxwaGFiZXRpYyBvcmRlci4gV2hlbiB0aGUgbGFzdCBVU0IgbWVtb3J5IHN0aWNrIGlzIGZ1bGwsIHRoZW4gaXQgd2lsbCBjb250aW51ZQpvbiB0aGUgU0QgY2FyZC4gSXQgd2lsbCBzdG9wIHdoZW4gdGhlcmUgaXMgbGVzcyB0aGFuIDAuNSBHQiBsZWZ0IG9uIHRoZSBTRCBjYXJkLgoKSWYgZmlsZXMgYXJlIHN0b3JlZCBvbiB0aGUgU0QgY2FyZCB0aGVuIHRoZXkgY2FuIGJlIGRvd25sb2FkZWQgYW5kL29yIHJlbW92ZWQgYnkKdXNpbmcgZm9yIGV4YW1wbGUgRmlsZVppbGxhLiBDb25uZWN0IHdpdGggU0ZUUCB0byBodHRwOi8vMTAuMy4xNDEuMSAKd2l0aCB1c2VyICJwaSIgYW5kIHBhc3N3b3JkICJjaGlyb3B0ZXJhIi4KUGF0aCB0byBmaWxlcyBvbiB0aGUgU0QgY2FyZDogIi9ob21lL3BpL3d1cmJfcmVjb3JkaW5ncyIuCgpJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGRvd25sb2FkIGZpbGVzIGJ5IHVzaW5nIEZpbGVaaWxsYSwgb3Igc2ltaWxhciwgZnJvbSB0aGUgVVNCCm1lbW9yeSBzdGljayBkdXJpbmcgYW4gb25nb2luZyByZWNvcmRpbmcgc2Vzc2lvbi4gVGhlIHBhdGggdG8gdGhlIFVTQiBtZW1vcnkgaXMgdGhlbgoiL21lZGlhL3BpLzx5b3VyLXVzYi1tZW1vcnktc3RpY2stbmFtZT4iLgoKTm90ZTogU29tZSBtb2JpbGUgcGhvbmVzIGNvbXBsYWlucyBpZiB0aGUgIndpZmk0YmF0cyIgbmV0d29yayBub3QgaXMKY29ubmVjdGVkIHRvIGludGVybmV0LiBJZiB0aGF0IGhhcHBlbnMsIHRoZW4gdGVsbCBpdCB0byBmb3JnZXQgdGhlIG5ldHdvcmssCmNvbm5lY3QgdG8gaSBhZ2FpbiBhbmQgYW5zd2VyIHRoZSBxdWVzdGlvbiBpZiB5b3Ugd2FudCB0byBjb25uZWN0IHRvIGl0CmFueXdheS4KCiMjIFRoZSBNSVQgbGljZW5zZQoKVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgdGhhdCBtZWFucyB0aGF0IHlvdSBhcmUgZnJlZSB0byB1c2UgaXQgYXMgeW91IHdhbnQ7CnVzZSBpdCwgc2hhcmUgaXQsIGN1dCBpdCBpbnRvIHBpZWNlcywgZXh0ZW5kIGl0LCBvciBldmVuIHNlbGwgaXQgZm9yIG1vbmV5LgpCdXQgeW91IGFyZSBub3QgYWxsb3dlZCB0byByZW1vdmUgdGhlIE1JVCBsaWNlbnNlIGNsYXVzZQooanVzdCBjaGFuZ2UgbXkgbmFtZSB0byB5b3VycyBpbiB0aGUgY29weXJpZ2h0IHJvdyBmb3IgbW9kaWZpZWQgY29kZSBmaWxlcyksCmFuZCBpdCBjb21lcyAiYXMtaXMiIHdpdGggbm8gd2FycmFudGllcyBhdCBhbGwuCgojIyBDb250YWN0CgpBcm5vbGQgQW5kcmVhc3NvbiwgU3dlZGVuLgoKaW5mb0BjbG91ZGVkYmF0cy5vcmcK readmeEtag: '"55170a91d0eadc6be1eba1b1416e91cb13990471"' readmeLastModified: Mon, 23 Oct 2023 19:21:41 GMT repositoryId: 247984856 description: CloudedBats-WURB. The DIY bat detector. created: '2020-03-17T14:03:00Z' updated: '2026-01-22T16:38:38Z' language: Python archived: false stars: 24 watchers: 4 forks: 3 owner: cloudedbats logo: https://avatars.githubusercontent.com/u/16818499?v=4 license: MIT repoEtag: '"cd4bb2d66a0793d4072f1d20cbcc4992ef621a7db80a1fbfc380a5225fe46b04"' repoLastModified: Thu, 22 Jan 2026 16:38:38 GMT foundInMaster: true category: Server Implementations id: 2acd0e2152c96fbe7f024c2c46ddd40c - source: openapi3 tags repository: https://github.com/httptoolkit/openapi-directory-js v3: true repositoryMetadata: base64Readme: >- IyBBbiBPcGVuQVBJIERpcmVjdG9yeSBmb3IgSlMgWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vaHR0cHRvb2xraXQvb3BlbmFwaS1kaXJlY3RvcnktanMvd29ya2Zsb3dzL0NJL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9odHRwdG9vbGtpdC9vcGVuYXBpLWRpcmVjdG9yeS1qcy9hY3Rpb25zKSBbIVtucG0gdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL29wZW5hcGktZGlyZWN0b3J5LnN2ZyldKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9qcy9vcGVuYXBpLWRpcmVjdG9yeSkKCj4gX1BhcnQgb2YgW0hUVFAgVG9vbGtpdF0oaHR0cHM6Ly9odHRwdG9vbGtpdC5jb20pOiBwb3dlcmZ1bCB0b29scyBmb3IgYnVpbGRpbmcsIHRlc3RpbmcgJiBkZWJ1Z2dpbmcgSFRUUChTKV8KClRoaXMgcmVwbyBidWlsZHMgJiBidW5kbGVzIHRoZSBbT3BlbkFQSSBEaXJlY3RvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9BUElzLWd1cnUvb3BlbmFwaS1kaXJlY3RvcnkpLCBzbyB5b3UgY2FuIGVhc2lseSBmaW5kLCByZXF1aXJlIGFuZCB1c2UgYW55IE9wZW5BUEkgc3BlYyBmcm9tIHRoZSBkaXJlY3RvcnkgaW4geW91ciBKUyBwcm9qZWN0cy4KCkl0IHByb3ZpZGVzIGZpbGVzIHRoYXQgY2FuIGJlIGluZGl2aWR1YWxseSByZXF1aXJlZCBvciByZW1vdGVseSBkb3dubG9hZGVkICh2aWEgaHR0cHM6Ly91bnBrZy5jb20vb3BlbmFwaS1kaXJlY3RvcnkvKSBmb3IgZXZlcnkgQVBJIGluIHRoZSBjb2xsZWN0aW9uLCBhbmQgYW4gaW5kZXggdG8gcXVpY2tseSBmaW5kIHRoZSByZWxldmFudCBPcGVuQVBJIHNwZWMgZm9yIGEgZ2l2ZW4gVVJMLgoKQWxsIHNwZWNzIGFyZToKCiogUHJlLXBhcnNlZCBhbmQgZXhwb3NlZCBhcyBKYXZhU2NyaXB0IG9iamVjdHMgKG5vdCBZQU1MIHN0cmluZ3MpLgoqIENvbnZlcnRlZCB0byBPcGVuQVBJIHYzLgoqIFByZS1idW5kbGVkIHdpdGggYWxsIGV4dGVybmFsICRyZWZzLgoKVGhhdCBtZWFucyB5b3UgY2FuIGltcG9ydCB0aGVtLCBhbmQgaW1tZWRpYXRlbHkgJiBjb25zaXN0ZW50bHkgc3RhcnQgdXNpbmcgdGhlbS4KCiMjIEhvdyB0byB1c2UgaXQKCkZpcnN0IHVwLCBpbnN0YWxsIGl0IHdpdGg6CgpgYGBiYXNoCm5wbSBpbnN0YWxsIG9wZW5hcGktZGlyZWN0b3J5CmBgYAoKQWxsIE9wZW5BUEkgc3BlY3MgY2FuIGJlIG5vdyByZXF1aXJlZCB3aXRoOgoKYGBganMKY29uc3Qgc3BlYyA9IHJlcXVpcmUoJ29wZW5hcGktZGlyZWN0b3J5L2FwaS88c3BlYy1pZD4uanNvbicpOwpgYGAKCihvciByZWFkIGZyb20gYGh0dHBzOi8vdW5wa2cuY29tL29wZW5hcGktZGlyZWN0b3J5L2FwaS88c3BlYy1pZD4uanNvbmApCgpUaGUgZWFzaWVzdCB3YXkgdG8gb2J0YWluIGEgc3BlYyBpZCBpcyB0byB1c2UgdGhlIGluZGV4LiBZb3UgY2FuIGxvb2sgdXAgYSBVUkwgaW4gdGhlIGluZGV4IHdpdGg6CgpgYGBqcwpjb25zdCB7IGZpbmRBcGkgfSA9IHJlcXVpcmUoJ29wZW5hcGktZGlyZWN0b3J5Jyk7CgpmaW5kQXBpKCd3aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL2ZlZWQvYXZhaWxhYmlsaXR5Jyk7CmBgYAoKYGZpbmRBcGlgIHRha2VzIGEgVVJMIChob3N0IGFuZCBwYXRoLCBfd2l0aG91dF8gdGhlIHByb3RvY29sKSB3aXRoaW4gYW55IEFQSSwgYW5kIHdpbGwgcmV0dXJuIGVpdGhlcjoKCiogVW5kZWZpbmVkLCBpZiB0aGVyZSBpcyBubyBtYXRjaGluZyBBUElzLgoqIEEgc3RyaW5nIHNwZWMgaWQsIGlmIHRoZXJlIGlzIGV4YWN0bHkgb25lIEFQSSB0aGF0J3MgcmVsZXZhbnQgdG8gdGhhdCBVUkwuCiogQSBsaXN0IG9mIHNwZWMgaWRzLCBpbiByYXJlIGNhc2VzIHdoZXJlIG11bHRpcGxlIHNwZWNzIG1heSBjb3ZlciB0aGUgc2FtZSBVUkwuCgpBbHRlcm5hdGl2ZWx5IGlmIHlvdSBrbm93IGluIGFkdmFuY2Ugd2hpY2ggc3BlYyB5b3Ugd2FudCB5b3UgY2FuIHJlcXVpcmUgaXQgZGlyZWN0bHkuIFRoZSBpZCBmb3IgZXZlcnkgc3BlYyBpbiB0aGUgZGlyZWN0b3J5IGlzIG1hZGUgdXAgb2YgdGhlIHByb3ZpZGVyIG5hbWUsIGZvbGxvd2VkIGJ5IGEgc2xhc2ggYW5kIHRoZSBzZXJ2aWNlIG5hbWUgaWYgYSBzZXJ2aWNlIG5hbWUgZXhpc3RzLiBTb21lIGV4YW1wbGUgaWRzOgoKKiBgeGtjZC5jb21gIChwcm92aWRlciBpcyB4a2NkLmNvbSwgbm8gc2VydmljZSBuYW1lKQoqIGBhbWF6b25hd3MuY29tL2FjbWAgKHByb3ZpZGVyIGlzIGFtYXpvbmF3cy5jb20sIHNlcnZpY2UgbmFtZSBpcyBhY20pLgoKWW91IGNhbiBmaW5kIHRoZSBwcm92aWRlciBhbmQgc2VydmljZSBuYW1lIGluIHRoZSBzcGVjIGl0c2VsZiAodW5kZXIgYGluZm9gLCBgeC1wcm92aWRlck5hbWVgIGFuZCBgeC1zZXJ2aWNlTmFtZWApLCBhbmQgeW91IGNhbiBicm93c2UgdGhlIHJhdyBzcGVjcyBkaXJlY3RseSBhdCBodHRwczovL2dpdGh1Yi5jb20vQVBJcy1ndXJ1L29wZW5hcGktZGlyZWN0b3J5LgoKIyMgTGljZW5zZQoKVGhpcyByZXBvL25wbSBtb2R1bGUgaXMgbGljZW5zZWQgYXMgTUlULgoKVGhlIGxpY2Vuc2UgZm9yIEFQSSBkZWZpbml0aW9ucyB2YXJpZXMgYnkgc3BlYywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9BUElzLWd1cnUvb3BlbmFwaS1kaXJlY3RvcnkjbGljZW5zZXMgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgpJbiBnZW5lcmFsIGl0J3MgdmVyeSBsaWtlbHkgdGhhdCB5b3VyIHVzZSBvZiBhbnkgQVBJIGRlZmluaXRpb24gaXMgY292ZXJlZCBlaXRoZXIgYnkgQ0MwIChmb3Igc3BlY3Mgc3VibWl0dGVkIGRpcmVjdGx5IHRvIHRoZSBkaXJlY3RvcnkpLCB0aGUgc3BlYydzIG93biBsaWNlbnNlIChjaGVjayBgaW5mby5saWNlbnNlYCkgb3IgYnkgRmFpciBVc2UgcHJvdmlzaW9ucyB3aGVuIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBzZXJ2aWNlLiBUaGlzIGlzIG5vdCBmb3JtYWwgbGVnYWwgYWR2aWNlIHRob3VnaCwgaXRzIHlvdXIgcmVzcG9uc2liaWxpdHkgdG8gY29uZmlybSB0aGlzIGZvciB5b3Vyc2VsZiBmb3IgdGhlIHNwZWNzIHlvdSdyZSB1c2luZy4= readmeEtag: '"5124ae309ffc8962b2afc7add3307aab28133a19"' readmeLastModified: Thu, 15 Aug 2024 13:41:53 GMT repositoryId: 170318480 description: >- Building & bundling https://github.com/APIs-guru/openapi-directory for easy use from JS created: '2019-02-12T12:59:30Z' updated: '2026-01-14T19:39:20Z' language: TypeScript archived: false stars: 26 watchers: 2 forks: 6 owner: httptoolkit logo: https://avatars.githubusercontent.com/u/39777515?v=4 license: MIT repoEtag: '"3badaca7c181b85bcb5ddefb4ddd75705c0e149801c0d03f8195e0dc858328d8"' repoLastModified: Wed, 14 Jan 2026 19:39:20 GMT foundInMaster: true category: - Testing - Parsers id: 0b4f0ec3b8efec08b4c9de26e8119588 - source: openapi3 tags repository: https://github.com/lornajane/openapi-overlays-js v3: true id: 23a1b93a676dfb84bfc1d9adb30b4875 repositoryMetadata: base64Readme: >- IyBPdmVybGF5cyBmb3IgT3BlbkFQSQoKVGhpcyBOb2RlSlMgbGlicmFyeSBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaW4tcHJvZ3Jlc3MgW09wZW5BUEkgT3ZlcmxheXMgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PdmVybGF5LVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzEuMC4wLm1kKS4KCiMjIEFib3V0IE92ZXJsYXlzCgpPdmVybGF5cyBhcmUgYSB3YXkgdG8gZXh0ZW5kIG9yIGVuaGFuY2UgYW4gZXhpc3RpbmcgW09wZW5BUEkgZGVzY3JpcHRpb25dKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pIGJ5IGFkZGluZywgdXBkYXRpbmcgb3IgcmVtb3ZpbmcgZmllbGRzLiBGb3IgZXhhbXBsZToKCiogVGhlIE9wZW5BUEkgZGVzY3JpcHRpb24gbGl2ZXMgaW4gdGhlIGNvZGViYXNlLCBidXQgeW91ciB0ZWNoIHdyaXRlcnMgbmVlZCB0byBhZGQgZXhhbXBsZXMgYW5kIGluZm9ybWF0aW9uIGJlZm9yZSBkb2N1bWVudGF0aW9uIGlzIHByb2R1Y2VkLgoqIFlvdXIgb3JnYW5pc2F0aW9uIHVzZXMgT3BlbkFQSSBidXQgaXQncyBnZW5lcmF0ZWQgZnJvbSBjb2RlLCBhbmQgbmVlZHMgYW1lbmRtZW50cyBvciBhZGRpdGlvbnMgdG8gYmUgdXNlZnVsIHRvIHVzZXJzLgoqIFlvdSdyZSB1c2luZyBvdGhlciB0b29scyBzdWNoIGFzIEFQSSBjbGllbnQgZ2VuZXJhdG9ycywgdGhhdCBjYW4gbWFrZSB1c2Ugb2YgYWRkaXRpb25hbCBjb250ZXh0IGFkZGVkIHRvIHRoZSBBUEkgZGVzY3JpcHRpb24sIHN1Y2ggYXMgdGFncyB0byByZW1vdmUgY2VydGFpbiBlbmRwb2ludHMsIHdoaWNoIGFyZW4ndCBpbiB0aGUgbWFpbiBBUEkgZGVzY3JpcHRpb24gZmlsZS4KCioqQnkgdXNpbmcgT3ZlcmxheXMgdG8gZGVzY3JpYmUgYW5kIGFwcGx5IHRoZSBjaGFuZ2VzLCB3aGVuIHRoZSBBUEkgZGVzY3JpcHRpb24gaXMgdXBkYXRlZCwgdGhlIHNhbWUgY2hhbmdlcyBjYW4gaW5zdGFudGx5IGJlIHJlLWFwcGxpZWQuKioKCiMjIEluc3RhbGxhdGlvbgoKSW5zdGFsbCB0aGUgYG92ZXJsYXlqc2AgY29tbWFuZCBmcm9tIFtucG1dKGh0dHBzOi8vbnBtanMuY29tKSB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYHRleHQKbnBtIGluc3RhbGwgLWcgb3BlbmFwaS1vdmVybGF5cy1qcwpgYGAKClRoZSBgLWdgIHN3aXRjaCBpbnN0YWxscyBpdCBnbG9iYWxseSBzbyB5b3UgY2FuIHVzZSB0aGUgY29tbWFuZCBmcm9tIGFueXdoZXJlIG9uIHlvdXIgc3lzdGVtLgoKPiAqKlByby10aXA6KiogdXNlIGBub2RlIGluZGV4LmpzYCBmcm9tIHRoZSByb290IG9mIHRoZSBwcm9qZWN0IGlmIHlvdSdyZSB1c2luZyB0aGUgYmxlZWRpbmcgZWRnZSBvZiB0aGUgcHJvamVjdCBvciB3b3JraW5nIG9uIGEgYnJhbmNoLgoKIyMgVXNhZ2UKCkV4YW1wbGU6IGBvdmVybGF5anMgLS1vcGVuYXBpIG9wZW5hcGkueW1sIC0tb3ZlcmxheSBhZGQtc3BhcmtsZS55YW1sYAoKVXNlIGBvdmVybGF5anMgLS1oZWxwYCB0byBzZWUgdGhlIHVzYWdlIGluZm9ybWF0aW9uLgoKU2VlIFtkb2NzL2V4YW1wbGVzXShodHRwczovL2dpdGh1Yi5jb20vbG9ybmFqYW5lL29wZW5hcGktb3ZlcmxheXMtanMvYmxvYi9tYWluL2RvY3MvZXhhbXBsZXMvaW5kZXgubWQpIGZvciBtb3JlIGV4YW1wbGVzLgoKIyMgUHJvamVjdCBzdGF0dXMKCjp3YXJuaW5nOiBQcm9qZWN0IHN0YXR1czogYWxwaGEKClRoaXMgcHJvamVjdCBpcyB2ZXJ5IG11Y2ggYXQgYW4gYWxwaGEgc3RhZ2UgYnV0IGZlZWRiYWNrLCBjb21tZW50cyBhbmQgcXVlc3Rpb25zIGFyZSBhbGwgdmVyeSB3ZWxjb21lIGFzIGlzc3VlcyBvbiB0aGlzIHJlcG9zaXRvcnkgLSBhbmQgcHVsbCByZXF1ZXN0cyBhcmUgYWxzbyBncmF0ZWZ1bGx5IHJlY2VpdmVkLiBJdCB3b3VsZCBiZSBleGNlbGxlbnQgdG8gaGVhciB3aGF0IHByb2JsZW0gdGhpcyB0b29sIGNhbiBzb2x2ZSwgYW5kIGhvdyB5b3UgZ2V0IG9uIHdpdGggaXQuIEJvbnVzIHBvaW50cyBpZiB5b3UgY2FuIHNoYXJlIGV4YW1wbGVzICh3b3JraW5nIG9yIGJyb2tlbikgb2Ygd2hhdCB5b3UgdHJpZWQuCg== readmeEtag: '"ce407838371cebf7ca08a8e42486a447ce1acf30"' readmeLastModified: Tue, 20 May 2025 19:39:48 GMT repositoryId: 591983470 description: Apply overlays to OpenAPI descriptions created: '2023-01-22T15:11:54Z' updated: '2026-01-27T18:39:10Z' language: JavaScript archived: false stars: 26 watchers: 3 forks: 7 owner: lornajane logo: https://avatars.githubusercontent.com/u/172607?v=4 license: Apache-2.0 repoEtag: '"cd11161a36dcb9ddf3f66c7fa5d290845e2f56af3b52b43039202de0c97b19b1"' repoLastModified: Tue, 27 Jan 2026 18:39:10 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/mikekonan/go-oas3 v3: true repositoryMetadata: base64Readme: >- IyBHbyBPcGVuQVBJIHYzIFNlcnZlciBDb2RlIEdlbmVyYXRvcgoKQSBwb3dlcmZ1bCwgbW9kZXJuIGNvZGUgZ2VuZXJhdG9yIHRoYXQgY3JlYXRlcyBjbGVhbiBzZXJ2ZXIgYm9pbGVycGxhdGUgZnJvbSBPcGVuQVBJIHYzIHNwZWNpZmljYXRpb25zLiBCdWlsdCB3aXRoIEdvIDEuMjIrIGFuZCB0aGUgbGF0ZXN0IGRlcGVuZGVuY2llcywgZmVhdHVyaW5nIGVuaGFuY2VkIGVycm9yIGhhbmRsaW5nIGFuZCBleHRlbnNpdmUgY3VzdG9taXphdGlvbiBvcHRpb25zLgoKIyMgVGFibGUgb2YgQ29udGVudHMKCi0gW1F1aWNrIFN0YXJ0XSgjcXVpY2stc3RhcnQpCi0gW0tleSBJZGVhc10oI2tleS1pZGVhcykKLSBbSW5zdGFsbGF0aW9uXSgjaW5zdGFsbGF0aW9uKQotIFtVc2FnZV0oI3VzYWdlKQotIFtDb21wbGV0ZSBXb3JrZmxvdyBFeGFtcGxlXSgjY29tcGxldGUtd29ya2Zsb3ctZXhhbXBsZSkKLSBbT3BlbkFQSSBGZWF0dXJlc10oI29wZW5hcGktZmVhdHVyZXMpCi0gW0V4dGVuc2lvbnMgUmVmZXJlbmNlXSgjZXh0ZW5zaW9ucy1yZWZlcmVuY2UpCi0gW0xpbWl0YXRpb25zXSgjbGltaXRhdGlvbnMpCi0gW1F1ZXN0aW9ucyBvciBGZWF0dXJlIFJlcXVlc3RzXSgjcXVlc3Rpb25zLW9yLWZlYXR1cmUtcmVxdWVzdHMpCi0gW0NvbnRyaWJ1dGluZ10oI2NvbnRyaWJ1dGluZykKCiMjIFF1aWNrIFN0YXJ0CgojIyMgUHJlcmVxdWlzaXRlcwotICoqR28gMS4yMisqKiAodXBkYXRlZCBmb3IgbGF0ZXN0IGxhbmd1YWdlIGZlYXR1cmVzKQotIFZhbGlkIE9wZW5BUEkgMy4wKyBzcGVjaWZpY2F0aW9uIGZpbGUKLSBCYXNpYyB1bmRlcnN0YW5kaW5nIG9mIEdvIG1vZHVsZXMKCiMjIyBJbnN0YWxsYXRpb24KCmBgYGJhc2gKZ28gaW5zdGFsbCBnaXRodWIuY29tL21pa2Vrb25hbi9nby1vYXMzQGxhdGVzdApgYGAKCiMjIyBCYXNpYyBVc2FnZQoKYGBgYmFzaAojIEdlbmVyYXRlIGZyb20gbG9jYWwgZmlsZQpnby1vYXMzIC1zd2FnZ2VyLWFkZHIgc3dhZ2dlci55YW1sIC1wYWNrYWdlIG15YXBpIC1wYXRoIC4vZ2VuZXJhdGVkCgojIEdlbmVyYXRlIGZyb20gcmVtb3RlIFVSTApnby1vYXMzIC1zd2FnZ2VyLWFkZHIgaHR0cHM6Ly9leGFtcGxlLmNvbS9hcGkvc3dhZ2dlci55YW1sIC1wYWNrYWdlIG15YXBpIC1wYXRoIC4vZ2VuZXJhdGVkCmBgYAoKIyMgS2V5IElkZWFzCgotICoqUmVxdWVzdCBQYXJzaW5nKio6IFN0dWJzIGhhbmRsZSBhbGwgcmVxdWVzdCBwYXJzaW5nIGxvZ2ljIGF1dG9tYXRpY2FsbHkKLSAqKlR5cGUgU2FmZXR5Kio6IFJlc3BvbnNlIGJ1aWxkZXJzIGVuc3VyZSB5b3UgY2FuIG9ubHkgcmVzcG9uZCBhY2NvcmRpbmcgdG8geW91ciBzcGVjaWZpY2F0aW9uICAKLSAqKlZhbGlkYXRpb24qKjogQnVpbHQtaW4gdmFsaWRhdGlvbiBmb3IgYWxsIHJlcXVlc3QgcGFyYW1ldGVycyBhbmQgYm9kaWVzCi0gKipTZWN1cml0eSoqOiBBdXRvbWF0aWMgc2VjdXJpdHkgbWlkZGxld2FyZSBnZW5lcmF0aW9uIGZyb20gT3BlbkFQSSBzZWN1cml0eSBzY2hlbWVzCgoqKk5vdGU6KiogUGF0aCBzdHViIGdlbmVyYXRpb24gcmVsaWVzIG9uIHRoZSAqKmZpcnN0IHRhZyoqIGZyb20geW91ciBwYXRocy4gV2hpbGUgdGFncyBhcmUgbm90IHJlcXVpcmVkLCB0aGV5IGFyZSAqKnN0cm9uZ2x5IHJlY29tbWVuZGVkKiogZm9yIGJldHRlciBvcmdhbml6YXRpb246Ci0gKipXaXRoIHRhZ3MqKjogQ3JlYXRlcyBzZXBhcmF0ZSBzZXJ2aWNlIGludGVyZmFjZXMgcGVyIHRhZyAoZS5nLiwgYFVzZXJTZXJ2aWNlYCwgYE9yZGVyU2VydmljZWApCi0gKipXaXRob3V0IHRhZ3MqKjogQWxsIG9wZXJhdGlvbnMgYXJlIGdyb3VwZWQgdW5kZXIgYSBzaW5nbGUgYERlZmF1bHRTZXJ2aWNlYCBpbnRlcmZhY2UKCkV4YW1wbGUgd2l0aCB0YWdzOgpgYGB5YW1sCnBhdGhzOgogIC91c2VyczoKICAgIGdldDoKICAgICAgdGFnczogW3VzZXJzXSAgIyBDcmVhdGVzIFVzZXJTZXJ2aWNlIGludGVyZmFjZQogIC9vcmRlcnM6CiAgICBwb3N0OgogICAgICB0YWdzOiBbb3JkZXJzXSAgIyBDcmVhdGVzIE9yZGVyU2VydmljZSBpbnRlcmZhY2UKYGBgCiMjIFVzYWdlCgojIyMgQ29tbWFuZCBMaW5lIEFyZ3VtZW50cwoKfCBGbGFnIHwgVHlwZSB8IERlc2NyaXB0aW9uIHwgRGVmYXVsdCB8CnwtLS0tLS18LS0tLS0tfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfAp8IGAtc3dhZ2dlci1hZGRyYCB8IHN0cmluZyB8IFBhdGggb3IgVVJMIHRvIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiB8IGBzd2FnZ2VyLnlhbWxgIHwKfCBgLXBhY2thZ2VgIHwgc3RyaW5nIHwgKipSZXF1aXJlZC4qKiBHbyBwYWNrYWdlIG5hbWUgZm9yIGdlbmVyYXRlZCBjb2RlIHwgLSB8CnwgYC1wYXRoYCB8IHN0cmluZyB8ICoqUmVxdWlyZWQuKiogT3V0cHV0IGRpcmVjdG9yeSBmb3IgZ2VuZXJhdGVkIGZpbGVzIHwgLSB8CnwgYC1jb21wb25lbnRzUGFja2FnZWAgfCBzdHJpbmcgfCBQYWNrYWdlIG5hbWUgZm9yIGNvbXBvbmVudHMgKGlmIGRpZmZlcmVudCBmcm9tIG1haW4pIHwgU2FtZSBhcyBgLXBhY2thZ2VgIHwKfCBgLWNvbXBvbmVudHNQYXRoYCB8IHN0cmluZyB8IFBhdGggZm9yIGNvbXBvbmVudHMgKGlmIGRpZmZlcmVudCBmcm9tIG1haW4pIHwgU2FtZSBhcyBgLXBhdGhgIHwKfCBgLWF1dGhvcml6YXRpb25gIHwgc3RyaW5nIHwgSGVhZGVycyBmb3IgcmVtb3RlIHN3YWdnZXIgZmlsZXMgKGBrZXkxOnZhbHVlMSxrZXkyOnZhbHVlMmApIHwgLSB8CnwgYC1wcmlvcml0aXplLXgtZ28tdHlwZWAgfCBib29sIHwgUHJpb3JpdGl6ZSBgeC1nby10eXBlYCBvdmVyIHNjaGVtYSBwcm9wZXJ0aWVzIHwgYGZhbHNlYCB8CnwgYC1wYXNzLXJhdy1yZXF1ZXN0YCB8IGJvb2wgfCBQYXNzIHJhdyBIVFRQIHJlcXVlc3QgdG8gaGFuZGxlciBmdW5jdGlvbnMgfCBgZmFsc2VgIHwKCiMjIyBFeGFtcGxlcwoKYGBgYmFzaAojIEJhc2ljIGxvY2FsIGdlbmVyYXRpb24KZ28tb2FzMyAtc3dhZ2dlci1hZGRyIHN3YWdnZXIueWFtbCAtcGFja2FnZSBhcGkgLXBhdGggLi9nZW5lcmF0ZWQKCiMgUmVtb3RlIGZpbGUgd2l0aCBjdXN0b20gY29tcG9uZW50cwpnby1vYXMzIFwKICAtc3dhZ2dlci1hZGRyIGh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzL29wZW5hcGkuanNvbiBcCiAgLXBhY2thZ2UgcGV0c3RvcmUgXAogIC1wYXRoIC4vYXBpIFwKICAtY29tcG9uZW50c1BhY2thZ2UgbW9kZWxzIFwKICAtY29tcG9uZW50c1BhdGggLi9hcGkvbW9kZWxzCgojIFdpdGggYXV0aG9yaXphdGlvbiBoZWFkZXJzCmdvLW9hczMgXAogIC1zd2FnZ2VyLWFkZHIgaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vc3dhZ2dlci55YW1sIFwKICAtcGFja2FnZSBteWFwaSBcCiAgLXBhdGggLi9nZW5lcmF0ZWQgXAogIC1hdXRob3JpemF0aW9uICJYLUFQSS1LZXk6c2VjcmV0LEF1dGhvcml6YXRpb246QmVhcmVyIHRva2VuIgpgYGAKCiMjIENvbXBsZXRlIFdvcmtmbG93IEV4YW1wbGUKCkhlcmUncyBhIGNvbXBsZXRlIGV4YW1wbGUgZnJvbSBhbiBPcGVuQVBJIHNwZWMgdG8gYSBydW5uaW5nIHNlcnZlcjoKCiMjIyAxLiBDcmVhdGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIChgYXBpLnlhbWxgKQpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgdGl0bGU6IFVzZXIgQVBJCiAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgL3VzZXJzL3tpZH06CiAgICBnZXQ6CiAgICAgIHRhZ3M6IFt1c2Vyc10KICAgICAgcGFyYW1ldGVyczoKICAgICAgICAtIG5hbWU6IGlkCiAgICAgICAgICBpbjogcGF0aAogICAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgIHgtZ28tdHlwZTogZ2l0aHViLmNvbS9nb29nbGUvdXVpZC5VVUlECiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBVc2VyIGZvdW5kCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Vc2VyJwogICAgICAgICc0MDQnOgogICAgICAgICAgZGVzY3JpcHRpb246IFVzZXIgbm90IGZvdW5kCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIFVzZXI6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICByZXF1aXJlZDogW2lkLCBlbWFpbF0KICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZm9ybWF0OiB1dWlkCiAgICAgICAgZW1haWw6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGZvcm1hdDogZW1haWwKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICB4LWdvLW9taXRlbXB0eTogdHJ1ZQpgYGAKCiMjIyAyLiBHZW5lcmF0ZSBDb2RlCmBgYGJhc2gKZ28tb2FzMyAtc3dhZ2dlci1hZGRyIGFwaS55YW1sIC1wYWNrYWdlIHVzZXJhcGkgLXBhdGggLi9nZW5lcmF0ZWQKYGBgCgojIyMgMy4gSW1wbGVtZW50IEhhbmRsZXJzCmBgYGdvCnBhY2thZ2UgbWFpbgoKaW1wb3J0ICgKICAgICJjb250ZXh0IgogICAgIm5ldC9odHRwIgogICAgImdpdGh1Yi5jb20vZ28tY2hpL2NoaS92NSIKICAgIHVzZXJhcGkgIi4vZ2VuZXJhdGVkIgopCgp0eXBlIFVzZXJzU2VydmljZSBzdHJ1Y3R7fQoKZnVuYyAocyAqVXNlcnNTZXJ2aWNlKSBHZXRVc2Vyc0lkKGN0eCBjb250ZXh0LkNvbnRleHQsIHJlcXVlc3QgdXNlcmFwaS5HZXRVc2Vyc0lkUmVxdWVzdE9iamVjdCkgdXNlcmFwaS5HZXRVc2Vyc0lkUmVzcG9uc2VPYmplY3QgewogICAgLy8gWW91ciBidXNpbmVzcyBsb2dpYyBoZXJlCiAgICB1c2VyIDo9IHVzZXJhcGkuVXNlcnsKICAgICAgICBJZDogICAgcmVxdWVzdC5JZCwKICAgICAgICBFbWFpbDogInVzZXJAZXhhbXBsZS5jb20iLAogICAgICAgIE5hbWU6ICAiSm9obiBEb2UiLAogICAgfQogICAgCiAgICByZXR1cm4gdXNlcmFwaS5HZXRVc2Vyc0lkMjAwSlNPTlJlc3BvbnNlewogICAgICAgIEJvZHk6IHVzZXIsCiAgICB9Cn0KCmZ1bmMgbWFpbigpIHsKICAgIHNlcnZpY2UgOj0gJlVzZXJzU2VydmljZXt9CiAgICAKICAgIHIgOj0gY2hpLk5ld1JvdXRlcigpCiAgICB1c2VyYXBpLkhhbmRsZXJGcm9tTXV4KHNlcnZpY2UsIHIpCiAgICAKICAgIGh0dHAuTGlzdGVuQW5kU2VydmUoIjo4MDgwIiwgcikKfQpgYGAKCiMjIyA0LiBTZXQgVXAgWW91ciBQcm9qZWN0CmBgYGJhc2gKIyBJbml0aWFsaXplIEdvIG1vZHVsZQpnbyBtb2QgaW5pdCBteXByb2plY3QKCiMgQWRkIGRlcGVuZGVuY2llcyBhbmQgcnVuCmdvIG1vZCB0aWR5CmdvIHJ1biBtYWluLmdvCmBgYAoKIyMjIDUuIFRlc3QgWW91ciBBUEkKYGBgYmFzaAojIFRlc3QgdGhlIGVuZHBvaW50CmN1cmwgaHR0cDovL2xvY2FsaG9zdDo4MDgwL3VzZXJzLzU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAwMAoKIyBSZXNwb25zZToKIyB7CiMgICAiaWQiOiAiNTUwZTg0MDAtZTI5Yi00MWQ0LWE3MTYtNDQ2NjU1NDQwMDAwIiwKIyAgICJlbWFpbCI6ICJ1c2VyQGV4YW1wbGUuY29tIiwgCiMgICAibmFtZSI6ICJKb2huIERvZSIKIyB9CmBgYAoKVGhlIGdlbmVyYXRlZCBib2lsZXJwbGF0ZSBpbmNsdWRlczoKLSAqKlR5cGUtc2FmZSBoYW5kbGVycyoqIC0gUmVxdWVzdC9yZXNwb25zZSBvYmplY3RzIHdpdGggcHJvcGVyIEdvIHR5cGVzCi0gKipBdXRvbWF0aWMgdmFsaWRhdGlvbioqIC0gQnVpbHQtaW4gdmFsaWRhdGlvbiBmb3IgYWxsIHBhcmFtZXRlcnMgYW5kIHJlcXVlc3QgYm9kaWVzCi0gKipSb3V0ZXIgaW50ZWdyYXRpb24qKiAtIFJlYWR5LXRvLXVzZSBjaGkgcm91dGVyIHNldHVwCi0gKipFcnJvciBoYW5kbGluZyoqIC0gU3RydWN0dXJlZCBlcnJvciByZXNwb25zZXMgbWF0Y2hpbmcgeW91ciBPcGVuQVBJIHNwZWMKCiMjIE9wZW5BUEkgRmVhdHVyZXMKCiMjIyBSZXF1aXJlZCBGaWVsZHMKUmVxdWlyZWQgZmllbGRzIGluIHBhdGgsIHF1ZXJ5LCBoZWFkZXJzLCBhbmQgY29tcG9uZW50cyBhcmUgc3VwcG9ydGVkLgoKIyMjIFNlY3VyaXR5ClNlY3VyaXR5IHNjaGVtZXMgZm9yIEhUVFAgYW5kIEFQSSBrZXkgKGhlYWRlci9jb29raWUpIGFyZSBzdXBwb3J0ZWQuCgojIyMgQ29va2llClJlc3BvbnNlIGhlYWRlciBgU2V0LUNvb2tpZWAgaXMgc3VwcG9ydGVkLiBDb29raWVzIGluIHJlcXVlc3RzIGFyZSBzdXBwb3J0ZWQgdmlhIHNlY3VyaXR5IHNjaGVtZXMgb25seS4KCiMjIyBWYWxpZGF0aW9uClR5cGUgdmFsaWRhdGlvbiBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGRhdGEgdHlwZXM6Ci0gKipzdHJpbmcqKjogbWluTGVuZ3RoLCBtYXhMZW5ndGgKLSAqKm51bWJlcioqLCAqKmludGVnZXIqKjogbWluaW11bSwgbWF4aW11bSwgZXhjbHVzaXZlTWluaW11bSwgZXhjbHVzaXZlTWF4aW11bQoKIyMjIEN1c3RvbSBUeXBlcwpUaGUgZ2VuZXJhdG9yIHN1cHBvcnRzIHNldmVyYWwgT3BlbkFQSSB0eXBlcyBmb3IgY29tcG9uZW50czoKCnwgT3BlbkFQSSBUeXBlIHwgR28gVHlwZSB8CnwtLS18LS0tfAp8IHV1aWQgfCBbZ2l0aHViLmNvbS9nb29nbGUvdXVpZC5VVUlEXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3V1aWQpIHwKfCBpc280MjE3LWN1cnJlbmN5LWNvZGUgfCBbZ2l0aHViLmNvbS9taWtla29uYW4vZ28tdHlwZXMvdjIvY3VycmVuY3kuQ29kZV0oaHR0cHM6Ly9naXRodWIuY29tL21pa2Vrb25hbi9nby10eXBlcykgfAp8IGlzbzMxNjYtYWxwaGEtMiB8IFtnaXRodWIuY29tL21pa2Vrb25hbi9nby10eXBlcy92Mi9jb3VudHJ5LkFscGhhMkNvZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWtla29uYW4vZ28tdHlwZXMpIHwKfCBpc28zMTY2LWFscGhhLTMgfCBbZ2l0aHViLmNvbS9taWtla29uYW4vZ28tdHlwZXMvdjIvY291bnRyeS5BbHBoYTNDb2RlXShodHRwczovL2dpdGh1Yi5jb20vbWlrZWtvbmFuL2dvLXR5cGVzKSB8CgojIyBFeHRlbnNpb25zIFJlZmVyZW5jZQoKVGhlIGdlbmVyYXRvciBzdXBwb3J0cyBwb3dlcmZ1bCBPcGVuQVBJIGV4dGVuc2lvbnMgdG8gY3VzdG9taXplIEdvIGNvZGUgZ2VuZXJhdGlvbjoKCiMjIyBDb3JlIFR5cGUgRXh0ZW5zaW9ucwoKIyMjIyBgeC1nby10eXBlYCAtIEN1c3RvbSBHbyBUeXBlcwpTcGVjaWZ5IGN1c3RvbSBHbyB0eXBlcyBmb3IgYW55IHNjaGVtYToKCmBgYHlhbWwKIyBVc2UgZW5jb2RpbmcvanNvbi5SYXdNZXNzYWdlIGZvciBmbGV4aWJsZSBKU09OCm1ldGFkYXRhOgogIHR5cGU6IG9iamVjdAogIHgtZ28tdHlwZTogZW5jb2RpbmcvanNvbi5SYXdNZXNzYWdlCgojIFVzZSB0aGlyZC1wYXJ0eSB0eXBlcwp1c2VyX2lkOgogIHR5cGU6IHN0cmluZwogIHgtZ28tdHlwZTogZ2l0aHViLmNvbS9nb29nbGUvdXVpZC5VVUlECgojIFVzZSBjdXN0b20gZG9tYWluIHR5cGVzCmFtb3VudDoKICB0eXBlOiBzdHJpbmcKICB4LWdvLXR5cGU6IGdpdGh1Yi5jb20vc2hvcHNwcmluZy9kZWNpbWFsLkRlY2ltYWwKYGBgCgojIyMjIGB4LWdvLXR5cGUtc3RyaW5nLXBhcnNlYCAtIEN1c3RvbSBQYXJzaW5nCkZvciBzdHJpbmcgcGFyYW1ldGVycyB0aGF0IG5lZWQgY3VzdG9tIHBhcnNpbmc6CgpgYGB5YW1sCiMgQ3VzdG9tIFVVSUQgcGFyc2luZyBmcm9tIHN0cmluZwp1c2VyX2lkOgogIHR5cGU6IHN0cmluZwogIHgtZ28tdHlwZTogZ2l0aHViLmNvbS9nb29nbGUvdXVpZC5VVUlECiAgeC1nby10eXBlLXN0cmluZy1wYXJzZTogZ2l0aHViLmNvbS9nb29nbGUvdXVpZC5QYXJzZQoKIyBDdXN0b20gdGltZSBwYXJzaW5nCmNyZWF0ZWRfYXQ6CiAgdHlwZTogc3RyaW5nCiAgeC1nby10eXBlOiB0aW1lLlRpbWUKICB4LWdvLXR5cGUtc3RyaW5nLXBhcnNlOiBnaXRodWIuY29tL3NwZjEzL2Nhc3QuVG9UaW1lRQpgYGAKCiMjIyBGaWVsZCBNb2RpZmllcnMKCiMjIyMgYHgtZ28tcG9pbnRlcmAgLSBGb3JjZSBQb2ludGVyIFR5cGVzCmBgYHlhbWwKIyBNYWtlIGZpZWxkIGEgcG9pbnRlciAodXNlZnVsIGZvciBvcHRpb25hbCBmaWVsZHMpCm9wdGlvbmFsX2Ftb3VudDoKICB0eXBlOiBpbnRlZ2VyCiAgeC1nby1wb2ludGVyOiB0cnVlCiAgIyBHZW5lcmF0ZXM6IE9wdGlvbmFsQW1vdW50ICppbnQgYGpzb246Im9wdGlvbmFsX2Ftb3VudCxvbWl0ZW1wdHkiYApgYGAKCiMjIyMgYHgtZ28tb21pdGVtcHR5YCAtIEpTT04gT21pdGVtcHR5IFRhZwpgYGB5YW1sCiMgQWRkIG9taXRlbXB0eSB0byBKU09OIHRhZwpkZXNjcmlwdGlvbjoKICB0eXBlOiBzdHJpbmcKICB4LWdvLW9taXRlbXB0eTogdHJ1ZQogICMgR2VuZXJhdGVzOiBEZXNjcmlwdGlvbiBzdHJpbmcgYGpzb246ImRlc2NyaXB0aW9uLG9taXRlbXB0eSJgCmBgYAoKIyMjIyBgeC1nby1zdHJpbmctdHJpbW1hYmxlYCAtIEF1dG8tdHJpbSBTdHJpbmdzCmBgYHlhbWwKIyBBdXRvbWF0aWNhbGx5IHRyaW0gd2hpdGVzcGFjZSBiZWZvcmUgdmFsaWRhdGlvbgp0aXRsZToKICB0eXBlOiBzdHJpbmcKICBtaW5MZW5ndGg6IDEKICB4LWdvLXN0cmluZy10cmltbWFibGU6IHRydWUKICAjIFRyaW1zIHNwYWNlcyBiZWZvcmUgY2hlY2tpbmcgbWluTGVuZ3RoCmBgYAoKIyMjIFZhbGlkYXRpb24gRXh0ZW5zaW9ucwoKIyMjIyBgeC1nby1yZWdleGAgLSBSZWdleCBWYWxpZGF0aW9uCmBgYHlhbWwKIyBBZGQgcmVnZXggdmFsaWRhdGlvbiB0byBwYXJhbWV0ZXJzCnBob25lOgogIHR5cGU6IHN0cmluZwogIHgtZ28tcmVnZXg6IF5cKz9bMS05XVxkezEsMTR9JAogICMgR2VuZXJhdGVzIHZhbGlkYXRpb24gY29kZSB3aXRoIHJlZ2V4cC5NdXN0Q29tcGlsZQpgYGAKCiMjIyMgYHgtZ28tc2tpcC12YWxpZGF0aW9uYCAtIERpc2FibGUgVmFsaWRhdGlvbgpgYGB5YW1sCiMgU2tpcCB2YWxpZGF0aW9uIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBwYXRocwpsYXJnZV9wYXlsb2FkOgogIHR5cGU6IG9iamVjdAogIHByb3BlcnRpZXM6CiAgICBkYXRhOiAKICAgICAgdHlwZTogc3RyaW5nCiAgeC1nby1za2lwLXZhbGlkYXRpb246IHRydWUKYGBgCgojIyMgU2VjdXJpdHkgRXh0ZW5zaW9ucwoKIyMjIyBgeC1nby1za2lwLXNlY3VyaXR5LWNoZWNrYCAtIFNraXAgU2VjdXJpdHkgVmFsaWRhdGlvbgpgYGB5YW1sCiMgRm9yIG9wZXJhdGlvbnMgdGhhdCBwYXJzZSBhdXRoIGJ1dCBkb24ndCBlbmZvcmNlIGl0CnBhdGhzOgogIC9oZWFsdGg6CiAgICBnZXQ6CiAgICAgIHgtZ28tc2tpcC1zZWN1cml0eS1jaGVjazogdHJ1ZQogICAgICBzZWN1cml0eToKICAgICAgICAtIEFwaUtleUF1dGg6IFtdCiAgICAgICMgUGFyc2VzIGF1dGggaGVhZGVyIGJ1dCBkb2Vzbid0IGZhaWwgb24gbWlzc2luZy9pbnZhbGlkIGF1dGgKYGBgCgojIyMgQWR2YW5jZWQgTWFwIFR5cGVzCgojIyMjIGB4LWdvLW1hcC10eXBlYCAtIEN1c3RvbSBNYXAgVHlwZXMKYGBgeWFtbAojIEN1c3RvbSBtYXAgd2l0aCB0eXBlZCBrZXlzL3ZhbHVlcwptZXRhZGF0YToKICB0eXBlOiBvYmplY3QKICBhZGRpdGlvbmFsUHJvcGVydGllczoKICAgIHR5cGU6IHN0cmluZwogIHgtZ28tbWFwLXR5cGU6IG1hcFtnaXRodWIuY29tL2dvb2dsZS91dWlkLlVVSURdc3RyaW5nCiAgIyBHZW5lcmF0ZXM6IG1hcFt1dWlkLlVVSURdc3RyaW5nIGluc3RlYWQgb2YgbWFwW3N0cmluZ11zdHJpbmcKYGBgCgojIyMgQ29tcGxldGUgRXh0ZW5zaW9uIEV4YW1wbGUKCmBgYHlhbWwKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgVXNlcjoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOiBbaWQsIGVtYWlsXQogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGlkOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICB4LWdvLXR5cGU6IGdpdGh1Yi5jb20vZ29vZ2xlL3V1aWQuVVVJRAogICAgICAgIGVtYWlsOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBmb3JtYXQ6IGVtYWlsCiAgICAgICAgICB4LWdvLXJlZ2V4OiBeW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcLlthLXpBLVpdezIsfSQKICAgICAgICBwcm9maWxlOgogICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICB4LWdvLXBvaW50ZXI6IHRydWUKICAgICAgICAgIHgtZ28tb21pdGVtcHR5OiB0cnVlCiAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICBiaW86CiAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgeC1nby1zdHJpbmctdHJpbW1hYmxlOiB0cnVlCiAgICAgICAgbWV0YWRhdGE6CiAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOgogICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIHgtZ28tdHlwZTogbWFwW3N0cmluZ11pbnRlcmZhY2V7fQogICAgICB4LWdvLXNraXAtdmFsaWRhdGlvbjogZmFsc2UKCiAgcGFyYW1ldGVyczoKICAgIFVzZXJJRDoKICAgICAgbmFtZTogdXNlcl9pZAogICAgICBpbjogcGF0aAogICAgICByZXF1aXJlZDogdHJ1ZQogICAgICBzY2hlbWE6CiAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgeC1nby10eXBlOiBnaXRodWIuY29tL2dvb2dsZS91dWlkLlVVSUQKICAgICAgICB4LWdvLXR5cGUtc3RyaW5nLXBhcnNlOiBnaXRodWIuY29tL2dvb2dsZS91dWlkLlBhcnNlCmBgYAoKIyMgTGltaXRhdGlvbnMKCiMjIyBLbm93biBMaW1pdGF0aW9ucwoKIyMjIyBJbmxpbmUgU2NoZW1hIFJlc3BvbnNlcwpUaGUgZ2VuZXJhdG9yIGN1cnJlbnRseSBoYXMgbGltaXRlZCBzdXBwb3J0IGZvciBpbmxpbmUgc2NoZW1hcyBpbiByZXNwb25zZXMuIEZvciBleGFtcGxlOgoKYGBgeWFtbAojIOKdjCBOb3QgZnVsbHkgc3VwcG9ydGVkIC0gbWF5IGNhdXNlIGNvbXBpbGF0aW9uIGlzc3VlcwpyZXNwb25zZXM6CiAgJzIwMCc6CiAgICBjb250ZW50OgogICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgIHNjaGVtYToKICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgbWVzc2FnZTogCiAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCgojIOKchSBSZWNvbW1lbmRlZCAtIHVzZSAkcmVmIHRvIGNvbXBvbmVudHMKcmVzcG9uc2VzOgogICcyMDAnOgogICAgY29udGVudDoKICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICBzY2hlbWE6CiAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvU3VjY2Vzc1Jlc3BvbnNlJwpgYGAKCioqV29ya2Fyb3VuZCoqOiBEZWZpbmUgYWxsIHJlc3BvbnNlIHNjaGVtYXMgaW4gYGNvbXBvbmVudHMvc2NoZW1hc2AgYW5kIHJlZmVyZW5jZSB0aGVtIHVzaW5nIGAkcmVmYC4KCiMjIyMgQW5vbnltb3VzIFR5cGVzCi0gQW5vbnltb3VzIHNsaWNlIGVsZW1lbnRzIGFuZCBtYXAgZW50cmllcyBoYXZlIGxpbWl0ZWQgc3VwcG9ydAotIENvbXBsZXggbmVzdGVkIGFub255bW91cyB0eXBlcyBtYXkgbm90IGdlbmVyYXRlIGNvcnJlY3RseQoKKipXb3JrYXJvdW5kKio6IERlZmluZSBleHBsaWNpdCBjb21wb25lbnQgc2NoZW1hcyBmb3IgY29tcGxleCB0eXBlcy4KCiMjIyBCZXN0IFByYWN0aWNlcwoKMS4gKipBbHdheXMgdXNlICRyZWYgZm9yIHNjaGVtYXMqKiAtIEF2b2lkIGlubGluZSB0eXBlIGRlZmluaXRpb25zCjIuICoqRGVmaW5lIHJldXNhYmxlIGNvbXBvbmVudHMqKiAtIENyZWF0ZSBzY2hlbWFzIGluIGBjb21wb25lbnRzL3NjaGVtYXNgCjMuICoqVXNlIG1lYW5pbmdmdWwgbmFtZXMqKiAtIENvbXBvbmVudCBuYW1lcyBiZWNvbWUgR28gdHlwZSBuYW1lcwo0LiAqKlRlc3QgZ2VuZXJhdGVkIGNvZGUqKiAtIEFsd2F5cyBjb21waWxlIGFuZCB0ZXN0IGFmdGVyIGdlbmVyYXRpb24KCgojIyBRdWVzdGlvbnMgb3IgRmVhdHVyZSBSZXF1ZXN0cwoKSGF2ZSBhIHF1ZXN0aW9uIG9yIG5lZWQgc29tZSBmdW5jdGlvbmFsaXR5PyBGZWVsIGZyZWUgdG8gb3BlbiBhbiBpc3N1ZSBvciBzdWJtaXQgYSBwdWxsIHJlcXVlc3QuCgojIyBDb250cmlidXRpbmcKCkdvIE9wZW5BUEkgdjMgc2VydmVyIGNvZGUgZ2VuZXJhdG9yIHVzZXMgW2dpdGh1Yi5jb20vZGF2ZS9qZW5uaWZlcl0oaHR0cHM6Ly9naXRodWIuY29tL2RhdmUvamVubmlmZXIpIGZvciBjb2RlIGdlbmVyYXRpb24uIApVc2luZyBbZ2l0aHViLmNvbS9hbG9kZXIvdG9qZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9hbG9kZXIvdG9qZW4pIGlzIHRoZSBzdWdnZXN0ZWQgd2F5IHRvIGdlbmVyYXRlIEplbm5pZmVyIGNvZGUuCgo= readmeEtag: '"b8182949e4b0c36cbae298126e2d5ba07374de57"' readmeLastModified: Thu, 06 Nov 2025 10:25:50 GMT repositoryId: 315667251 description: Open API v3 server code generator created: '2020-11-24T15:03:56Z' updated: '2026-01-29T11:12:28Z' language: Go archived: false stars: 21 watchers: 2 forks: 9 owner: mikekonan logo: https://avatars.githubusercontent.com/u/36304777?v=4 license: MIT repoEtag: '"b4f1324c65c12c5c2c457d5bc7822f85be1f3de3d9b4447812e3c6635cfa8b32"' repoLastModified: Thu, 29 Jan 2026 11:12:28 GMT foundInMaster: true category: Parsers id: 15bb9572a91297aa6595fb0450194d91 - source: openapi3 tags repository: https://github.com/uderline/openapi-php-attributes v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFBIUCBBdHRyaWJ1dGVzIEdlbmVyYXRvcgoKVGhpcyBDTEkgVG9vbCBpcyBhYmxlIHRvIGdlbmVyYXRlIGFuIE9wZW5BcGkgSlNPTiBmaWxlIGRlc2NyaXB0aW9uIGFjY29yZGluZyB0byBQSFAgYXR0cmlidXRlcyBjb250YWluZWQgaW4geW91ciBmaWxlcy4KCiMjIOKaoO+4jyBNaXNzaW5nIHNvbWV0aGluZyA/Ckp1c3Qgb3BlbiBhbiBpc3N1ZSBzYXlpbmcgd2hhdCdzIG1pc3NpbmcgISBGZWVsIGZyZWUgdG8gb3BlbiBhIFBSIGJ1dCB3ZSByZWNvbW1lbmQgb3BlbmluZyBhbiBpc3N1ZSBiZWZvcmVoYW5kLgoKIyMgV2hlcmUgdG8gc3RhcnQgPwoxIC0gSW5zdGFsbCB0aGUgcGFja2FnZSBvcGVuYXBpLXBocC1hdHRyaWJ1dGVzLWdlbmVyYXRvciB3aXRoIGNvbXBvc2VyLgoKYGBgYmFzaApjb21wb3NlciByZXF1aXJlIHVkZXJsaW5lL29wZW5hcGktcGhwLWF0dHJpYnV0ZXMKYGBgCgoyIC0gRGVzY3JpYmUgeW91ciBBUEkgYnkgZm9sbG93aW5nIHRoaXMgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly91ZGVybGluZS5naXRodWIuaW8vb3BlbmFwaS1waHAtYXR0cmlidXRlcy8KCjMgLSBHZW5lcmF0ZSB0aGUgSlNPTiBmaWxlOgpgYGBiYXNoCnBocCAuL3ZlbmRvci9iaW4vb3BhZyAvc3JjL2ZpbGVzL3Byb2plY3Qgb3BlbmFwaS5qc29uCmBgYAoKQSBuZXcgZmlsZSBjYWxsZWQgYG9wZW5hcGkuanNvbmAgaGFzIGJlZW4gZ2VuZXJhdGVkICEKCiMjIEV4YW1wbGUKYGBgcGhwCiNbQ29udHJvbGxlcl0KY2xhc3MgQ29udHJvbGxlciB7CiAgICAjWwogICAgICAgIEdFVCgiL3BhdGgve2lkfSIsIFsiVGFnMSIsICJUYWcyIl0sICJEZXNjcmlwdGlvbiBvZiB0aGUgbWV0aG9kIiksCiAgICAgICAgUHJvcGVydHkoVHlwZTo6U1RSSU5HLCAicHJvcDEiLCBkZXNjcmlwdGlvbjogIlByb3BlcnR5IGRlc2NyaXB0aW9uIiwgZW51bTogQmFja2VkRW51bTo6Y2xhc3MpLAogICAgICAgIFByb3BlcnR5KFR5cGU6OklOVCwgInByb3AyIiwgZXhhbXBsZTogMSksCiAgICAgICAgUHJvcGVydHkoVHlwZTo6Qk9PTEVBTiwgInByb3AzIiksCiAgICAgICAgUHJvcGVydHkoVHlwZTo6UkVGLCAicHJvcDQiLCByZWY6IFJlZlNjaGVtYTo6Y2xhc3MpCiAgICAgICAgUmVzcG9uc2UocmVmOiBTY2hlbWFOYW1lOjpjbGFzcywgZGVzY3JpcHRpb246ICJSZXNwb25zZSBkZXNjcmlwdGlvbiIpCiAgICBdCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0KCNbUGFyYW1ldGVyKCJQYXJhbWV0ZXIgZGVzY3JpcHRpb24iKV0gaW50ICRpZCk6IEpzb25SZXNwb25zZSB7CiAgICAgICAgLy8gLi4uCiAgICB9Cn0KCmVudW0gQmFja2VkRW51bTogc3RyaW5nCnsKICAgIGNhc2UgVkFMMTogInZhbDEiOwogICAgY2FzZSBWQUwyOiAidmFsMiI7Cn0KCiNbCiAgICBTY2hlbWEsCiAgICBQcm9wZXJ0eShUeXBlOjpTVFJJTkcsICJQcm9wZXJ0eSAxIiksCiAgICBQcm9wZXJ0eShUeXBlOjpJTlQsICJQcm9wZXJ0eSAyIiksCl0KY2xhc3MgUmVmU2NoZW1hCnsKICAgIHB1YmxpYyBzdHJpbmcgJHByb3BlcnR5MTsKICAgIHB1YmxpYyBpbnQgJHByb3BlcnR5MjsKfQpgYGAKCldpbGwgZ2VuZXJhdGUKYGBganNvbgp7CiAgICAicGF0aHMiOiB7CiAgICAgICAgIi9wYXRoL3tpZH0iOiB7CiAgICAgICAgICAgICJwb3N0IjogewogICAgICAgICAgICAgICAgInRhZ3MiOiBbCiAgICAgICAgICAgICAgICAgICAgIlRhZzEiLAogICAgICAgICAgICAgICAgICAgICJUYWcyIgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJzdW1tYXJ5IjogIkRlc2NyaXB0aW9uIG9mIHRoZSBtZXRob2QiLAogICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJpZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJpbiI6ICJwYXRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBhcmFtZXRlciBkZXNjcmlwdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJpbnRlZ2VyIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJyZXF1ZXN0Qm9keSI6IHsKICAgICAgICAgICAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9wMSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHJvcGVydHkgZGVzY3JpcHRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVudW0iOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbDEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWwyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvcDIiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJpbnRlZ2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9wMyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImJvb2xlYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByb3A0IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvUmVmU2NoZW1hIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlc3BvbnNlIGRlc2NyaXB0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRlbnQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9EdW1teUNvbXBvbmVudCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KYGBgCg== readmeEtag: '"496c83d0500db6d82730fb9964a6eae3d6662ee4"' readmeLastModified: Mon, 25 Mar 2024 20:17:29 GMT repositoryId: 374416484 description: >- Automatically render your OpenApi 3 file describing your PHP API using attributes created: '2021-06-06T16:59:48Z' updated: '2024-05-03T14:58:45Z' language: PHP archived: false stars: 21 watchers: 3 forks: 8 owner: uderline logo: https://avatars.githubusercontent.com/u/10776690?v=4 license: MIT repoEtag: '"3adb88f7edc335ac394f5ca64f9b0d1e3ab2b0e91fe3c61583d2566b14c21bb2"' repoLastModified: Fri, 03 May 2024 14:58:45 GMT foundInMaster: true category: Parsers id: c9db84b60f30668d6e75ceb8a14d8e62 - source: openapi3 tags repository: https://github.com/ben-jamin-chen/kafka-streams-redis-statestore v3: true id: 574d5c6f9e5705994875220ae1875d15 repositoryMetadata: base64Readme: >- IyBLYWZrYSBTdHJlYW1zICgyLjYuMCkgd2l0aCBhIFJlZGlzLWJhY2tlZCBTdGF0ZSBTdG9yZQpCeSBkZWZhdWx0LCBLYWZrYSBTdHJlYW1zIHV0aWxpemVzIHRoZSBSb2Nrc0RCIHN0b3JhZ2UgZW5naW5lIGZvciBwZXJzaXN0ZW50IHN0YXRlIHN0b3Jlcy4gT25lIGdsYXJpbmcgaXNzdWUgeW91IG1heSBoYXZlIG5vdGljZWQgaXMgdGhlIGJpZ2dlc3QgZGVsYXkgb2NjdXJzIHdoZW4gS2Fma2EgU3RyZWFtcyBpcyBpbiBhIHJlYmFsYW5jaW5nIHN0YXRlLCB3aGVyZSBpdCBpbnRlcm5hbGx5IHJlYnVpbGRzIHRoZXNlIHN0YXRlIHN0b3JlcyBmcm9tIHRoZSBjaGFuZ2UtbG9nIHRvcGljcy4gVGhpcyBpcyBlc3BlY2lhbGx5IGEgY29tbW9uIHByb2JsZW0gaWYgeW91IHVzZSBbS3ViZXJuZXRlc10oaHR0cHM6Ly9rdWJlcm5ldGVzLmlvKSBhbmQgeW91ciBlbnZpcm9ubWVudCBpcyBkZXNpZ25lZCB0byBzY2FsZSB1cCAobmV3IHBvZHMpIG9yIGRvd24gKG5vZGVzIGFyZSByZW1vdmVkKS4gV2hpbGUgaXTigJlzIGluIGEgcmViYWxhbmNpbmcgc3RhdGUsIGFsbCBpbnZvbHZlZCBjb25zdW1lciBwcm9jZXNzaW5nIGlzIGJsb2NrZWQsIHNvIHdoYXQgdGhpcyBtZWFucyBpcyB0aGUgYXBwbGljYXRpb24gd29u4oCZdCBiZSBhYmxlIHRvIHNlcnZpY2UgYW55IHJlcXVlc3RzIHVudGlsIHRoZSBwcm9jZXNzIGJlY29tZXMgdW5ibG9ja2VkLiBUaGlzIGlzbuKAmXQgaWRlYWwgZXNwZWNpYWxseSBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQgb3IgZnJvbSBhIHByYWN0aWNhbGl0eSBzdGFuZHBvaW50LiBUaGUgb3ZlcmFsbCB0aW1lIHdpdGggdGhpcyBkZWxheSBzZWVtcyB0byBjb3JyZXNwb25kIHdpdGggaG93IGxhcmdlIHlvdXIgZGF0YXNldCBpcyBpbiB5b3VyIHRvcGljcywgc28gaWYgeW91J3JlIGRldmVsb3BpbmcgdW5kZXIgYSBjb250aW51b3VzIGludGVncmF0aW9uIGVudmlyb25tZW50IHRoaXMgcG9zZXMgYSBtYWpvciBjaGFsbGVuZ2Ugc2luY2UgZXZlcnkgZGVwbG95bWVudCB3aWxsIHJlcXVpcmUgc29tZSBhbW91bnQgb2YgdXBmcm9udCB0aW1lIHRvIHJlYmFsYW5jZS4KCkFueXdheXMsIHRoaXMgaXMgdGhlIHByaW1hcnkgbW90aXZhdGlvbiBmb3Igc3dpdGNoaW5nIG92ZXIgdG8gYSBjdXN0b20gc3RhdGUgc3RvcmUuIFdlIGNhbiBsZXZlcmFnZSBhIHBlcm1hbmVudCBzdG9yYWdlIHNvbHV0aW9uIGxpa2UgUmVkaXMgc3VjaCB0aGF0IGluIGFueSBuZXcgZGVwbG95bWVudCBvciBhcHBsaWNhdGlvbiByZXN0YXJ0LCB3ZSBjYW4gYXZvaWQgdGhlc2UgdXBmcm9udCByZWJhbGFuY2luZyBkZWxheS4KCiMjIFdoYXQgWW91IE5lZWQKCiogSmF2YSAxNAoqIE1hdmVuIDMuNi4wKwoqIERvY2tlciAxOSsKKiBSZWRpcyA1KwoKIyMgR2V0dGluZyBTdGFydGVkCkZpcnN0LCBpbnN0YWxsIGEgbG9jYWwgaW5zdGFuY2Ugb2YgUmVkaXMgKGlmIHlvdSBoYXZlbid0IGFscmVhZHkpLiBJZiB5b3UncmUgcnVubmluZyBvbiBNYWMgT1MgWCwgeW91IGNhbiB1c2UgW0hvbWVicmV3XShodHRwczovL2JyZXcuc2gpIHZpYSB0aGUgY29tbWFuZDoKCmBgYHpzaAokICBicmV3IGluc3RhbGwgcmVkaXMKYGBgCgpGb3IgV2luZG93cywgdGhlcmUncyBhIGNvdXBsZSBvZiB3YXlzIHRvIGRvIHRoaXMsIGJ1dCBJIGdlbmVyYWxseSBsaWtlIHRvIGRlcGxveSBhbmQgcnVuIFtSZWRpc10oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9fL3JlZGlzKSBpbiBbRG9ja2VyXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9kb2NrZXItZm9yLXdpbmRvd3MvaW5zdGFsbCkuCgpgYGBwd3NoCj4gIGRvY2tlciBydW4gLS1uYW1lIHNvbWUtcmVkaXMgLXAgNjM3OSAtZCByZWRpcwpgYGAKClRoZSBlYXNpZXN0IHdheSB0byBzdGFydCB0aGUgUmVkaXMgc2VydmVyIGlzIGp1c3QgZXhlY3V0aW5nIHRoZSBgcmVkaXMtc2VydmVyYCBjb21tYW5kIHdpdGhvdXQgYW55IGFyZ3VtZW50cy4KCmBgYHpzaAokICByZWRpcy1zZXJ2ZXIKYGBgCgpZb3UgY2FuIGNvbm5lY3QgdG8gdGhlIFJlZGlzIGluc3RhbmNlICh3aXRoIGRlZmF1bHQgY29uZmlndXJhdGlvbnMpIHVzaW5nIHRoZSBgcmVkaXMtY2xpYCBjb21tYW5kOgoKYGBgenNoCiQgIHJlZGlzLWNsaSAtaCBsb2NhbGhvc3QgLXAgNjM3OQpgYGAKCk5leHQsIHdlIG5lZWQgdG8gbGF1bmNoIHRoZSB2YXJpb3VzIENvbmZsdWVudCBzZXJ2aWNlcyAoaS5lLiBTY2hlbWEgUmVnaXN0cnksIEJyb2tlciwgWm9vS2VlcGVyKSBsb2NhbGx5IGJ5IHJ1bm5pbmcgdGhlIGBkb2NrZXItY29tcG9zZSB1cCAtZGAgQ0xJIGNvbW1hbmQgd2hlcmUgdGhlIFtkb2NrZXItY29tcG9zZS55bWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9iY2hlbjA0L2thZmthLXN0cmVhbXMtcmVkaXMtc3RhdGVzdG9yZS9ibG9iL21hc3Rlci9kb2NrZXItY29tcG9zZS55bWwpIGZpbGUgaXMuIFR5cGljYWxseSwgeW91IGNhbiBjcmVhdGUgYSBzdGFjayBmaWxlIChpbiB0aGUgZm9ybSBvZiBhIFlBTUwgZmlsZSkgdG8gZGVmaW5lIHlvdXIgYXBwbGljYXRpb25zLiBZb3UgY2FuIGFsc28gcnVuIGBkb2NrZXItY29tcG9zZSBwc2AgdG8gY2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3RhY2suIE5vdGljZSwgdGhlIGVuZHBvaW50cyBmcm9tIHdpdGhpbiB0aGUgY29udGFpbmVycyBvbiB5b3VyIGhvc3QgbWFjaGluZS4KCnwgTmFtZSB8IEZyb20gd2l0aGluIGNvbnRhaW5lcnMgfCBGcm9tIGhvc3QgbWFjaGluZSB8CnwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwKfCBLYWZrYSBCcm9rZXIgfCBicm9rZXI6OTA5MiB8IGxvY2FsaG9zdDo5MDkyIHwKfCBTY2hlbWEgUmVnaXN0cnkgIHwgaHR0cDovL3NjaGVtYS1yZWdpc3RyeTo4MDgxIHwgaHR0cDovL2xvY2FsaG9zdDo4MDgxIHwKfCBab29LZWVwZXIgfCB6b29rZWVwZXI6MjE4MSB8IGxvY2FsaG9zdDoyMTgxIHwKCj4gTm90ZTogeW91IGNhbiBydW4gYGRvY2tlci1jb21wb3NlIGRvd25gIHRvIHN0b3AgYWxsIHNlcnZpY2VzIGFuZCBjb250YWluZXJzLgoKQXMgcGFydCBvZiB0aGlzIHNhbXBsZSwgSSd2ZSByZXRyb2ZpdHRlZCB0aGUgYXZlcmFnZSBhZ2dyZWdhdGUgZXhhbXBsZSBmcm9tIFtDb25mbHVlbnQncyBLYWZrYSBUdXRvcmlhbHNdKGh0dHBzOi8va2Fma2EtdHV0b3JpYWxzLmNvbmZsdWVudC5pby9hZ2dyZWdhdGluZy1hdmVyYWdlL2tzdHJlYW1zLmh0bWwpIGludG8gdGhpcyBwcm9qZWN0LiBUaGUgQVBJIHdpbGwgY2FsY3VsYXRlIGFuZCByZXR1cm4gYSBydW5uaW5nIGF2ZXJhZ2UgcmF0aW5nIGZvciBhIGdpdmVuIG1vdmllIGlkZW50aWZpZXIuIFRoaXMgc2hvdWxkIGRlbW9uc3RyYXRlIGhvdyB0byBidWlsZCBhIGJhc2ljIEFQSSBzZXJ2aWNlIG9uIHRvcCBvZiBhbiBhZ2dyZWdhdGlvbiByZXN1bHQuCgpOb3RpY2UgaW4gdGhlIGB+L3NyYy9tYWluL2F2cm9gIGRpcmVjdG9yeSwgd2UgaGF2ZSBhbGwgb3VyIEF2cm8gc2NoZW1hIGZpbGVzIGZvciB0aGUgc3RyZWFtIG9mIGByYXRpbmdzYCBhbmQgYGNvdW50c3VtYC4gRm9yIHlvdXIgY29udmVuaWVuY2UsIHRoZSBjbGFzc2VzIHdlcmUgYWxyZWFkeSBnZW5lcmF0ZWQgdW5kZXIgdGhlIGB+L3NyYy9tYWluL2phdmEvaW8vY29uZmx1ZW50L2RlbW9gIGRpcmVjdG9yeSwgYnV0IGZlZWwgZnJlZSB0byB0aW5rZXIgd2l0aCB0aGVtIGFuZCByZWNvbXBpbGUgdGhlIHNjaGVtYXMgaWYgbmVlZGVkLiBUaGUgQXZybyBjbGFzc2VzIGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGdlbmVyYXRlZCB1c2luZyBgTWF2ZW5gIG9yIGJ5IG1hbnVhbGx5IGludm9raW5nIHRoZSBbc2NoZW1hIGNvbXBpbGVyXShodHRwczovL2F2cm8uYXBhY2hlLm9yZy9kb2NzLzEuMTAuMC9nZXR0aW5nc3RhcnRlZGphdmEuaHRtbCNDb21waWxpbmcrdGhlK3NjaGVtYSkuIAoKU28gYmVmb3JlIGJ1aWxkaW5nIGFuZCBydW5uaW5nIHRoZSBwcm9qZWN0LCBvcGVuIGEgbmV3IHRlcm1pbmFsIGFuZCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBnZW5lcmF0ZSB5b3VyIGlucHV0IGFuZCBvdXRwdXQgdG9waWNzLgoKYGBgenNoCiQgIGRvY2tlci1jb21wb3NlIGV4ZWMgYnJva2VyIGthZmthLXRvcGljcyAtLWNyZWF0ZSAtLWJvb3RzdHJhcC1zZXJ2ZXIgXAogICBsb2NhbGhvc3Q6OTA5MiAtLXJlcGxpY2F0aW9uLWZhY3RvciAxIC0tcGFydGl0aW9ucyAxIC0tdG9waWMgcmF0aW5ncwoKJCAgZG9ja2VyLWNvbXBvc2UgZXhlYyBicm9rZXIga2Fma2EtdG9waWNzIC0tY3JlYXRlIC0tYm9vdHN0cmFwLXNlcnZlciBcCiAgIGxvY2FsaG9zdDo5MDkyIC0tcmVwbGljYXRpb24tZmFjdG9yIDEgLS1wYXJ0aXRpb25zIDEgLS10b3BpYyByYXRpbmctYXZlcmFnZXMKYGBgCgpOZXh0LCB3ZSB3aWxsIG5lZWQgdG8gcHJvZHVjZSBzb21lIGRhdGEgb250byB0aGUgaW5wdXQgdG9waWMuCgpgYGB6c2gKJCAgZG9ja2VyIGV4ZWMgLWkgc2NoZW1hLXJlZ2lzdHJ5IC91c3IvYmluL2thZmthLWF2cm8tY29uc29sZS1wcm9kdWNlciAtLXRvcGljIHJhdGluZ3MgLS1icm9rZXItbGlzdCBicm9rZXI6OTA5MlwKICAgIC0tcHJvcGVydHkgInBhcnNlLmtleT1mYWxzZSJcCiAgICAtLXByb3BlcnR5ICJrZXkuc2VwYXJhdG9yPToiXAogICAgLS1wcm9wZXJ0eSB2YWx1ZS5zY2hlbWE9IiQoPCBzcmMvbWFpbi9hdnJvL3JhdGluZy5hdnNjKSIKIGBgYAogClBhc3RlIGluIHRoZSBmb2xsb3dpbmcgYGpzb25gIGRhdGEgd2hlbiBwcm9tcHRlZCBhbmQgYmUgc3VyZSB0byBwcmVzcyBlbnRlciB0d2ljZSB0byBhY3R1YWxseSBzdWJtaXQgaXQuCgpgYGBqc29uCnsibW92aWVfaWQiOjM2MiwicmF0aW5nIjoxMH0KeyJtb3ZpZV9pZCI6MzYyLCJyYXRpbmciOjh9CiBgYGAKCk9wdGlvbmFsbHksIHlvdSBjYW4gYWxzbyBzZWUgdGhlIGNvbnN1bWVyIHJlc3VsdHMgb24gdGhlIG91dHB1dCB0b3BpYyBieSBydW5uaW5nIHRoaXMgY29tbWFuZCBvbiBhIG5ldyB0ZXJtaW5hbCB3aW5kb3c6CgpgYGB6c2gKJCAgZG9ja2VyIGV4ZWMgLWl0IGJyb2tlciAvdXNyL2Jpbi9rYWZrYS1jb25zb2xlLWNvbnN1bWVyIC0tdG9waWMgcmF0aW5nLWF2ZXJhZ2VzIC0tYm9vdHN0cmFwLXNlcnZlciBicm9rZXI6OTA5MiBcCiAgICAtLXByb3BlcnR5ICJwcmludC5rZXk9dHJ1ZSJcCiAgICAtLXByb3BlcnR5ICJrZXkuZGVzZXJpYWxpemVyPW9yZy5hcGFjaGUua2Fma2EuY29tbW9uLnNlcmlhbGl6YXRpb24uTG9uZ0Rlc2VyaWFsaXplciIgXAogICAgLS1wcm9wZXJ0eSAidmFsdWUuZGVzZXJpYWxpemVyPW9yZy5hcGFjaGUua2Fma2EuY29tbW9uLnNlcmlhbGl6YXRpb24uRG91YmxlRGVzZXJpYWxpemVyIiBcCiAgICAtLWZyb20tYmVnaW5uaW5nCmBgYAoKIyMgQnVpbGQgYW5kIFJ1biB0aGUgU2FtcGxlCgpZb3UgY2FuIGltcG9ydCB0aGUgY29kZSBzdHJhaWdodCBpbnRvIHlvdXIgcHJlZmVycmVkIElERSBvciBydW4gdGhlIHNhbXBsZSB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQgKGluIHRoZSByb290IHByb2plY3QgZm9sZGVyKS4KCmBgYHpzaAokICBtdm4gc3ByaW5nLWJvb3Q6cnVuCmBgYAoKQWZ0ZXIgdGhlIGFwcGxpY2F0aW9uIHJ1bnMsIGZyb20gdGhlIGByZWRpcy1jbGlgLCBvYnNlcnZlIHRoYXQgYSBuZXcgW1JlZGlzIHN0cmVhbV0oaHR0cHM6Ly9yZWRpcy5pby90b3BpY3Mvc3RyZWFtcy1pbnRybykgZ290IGNyZWF0ZWQgdXNpbmcgdGhlIGBLRVlTYCBjb21tYW5kOgoKYGBgenNoCmxvY2FsaG9zdDo2Mzc5PiBrZXlzICoKMSkgInJhdGluZy1hdmVyYWdlcy1zdHJlYW0iCmBgYAoKVG8gcXVlcnkgdGhlIHN0cmVhbSwgeW91IGNhbiB1c2UgdGhlIGBYUkFOR0VgIGNvbW1hbmQgd2hlcmUgZWFjaCBlbnRyeSByZXR1cm5lZCBpcyBhbiBhcnJheSBvZiB0aGUgSUQgYW5kIHRoZSBsaXN0IG9mIGZpZWxkLXZhbHVlIHBhaXJzLiBUaGUgYC1gIGFuZCBgK2AgcmVwcmVzZW50IHRoZSBzbWFsbGVzdCBhbmQgdGhlIGdyZWF0ZXN0IElEIHBvc3NpYmxlLiBJZiB5b3UgdXNlZCB0aGUgc2FtZSBpbnB1dCBkYXRhIGZyb20gYWJvdmUsIGl0IHNob3VsZCByZXR1cm4gc29tZXRoaW5nIHNpbWlsYXIgbGlrZSB0aGlzIGJlbG93OgoKYGBgenNoCmxvY2FsaG9zdDo2Mzc5PiB4cmFuZ2UgcmF0aW5nLWF2ZXJhZ2VzLXN0cmVhbSAtICsKMSkgMSkgIjE2MDUwNDM2MTQwMTEtMCIKICAgMikgMSkgIjM2MiIKICAgICAgMikgIjkuMCIKYGBgCgpGaW5hbGx5LCBuYXZpZ2F0ZSB0byBbaHR0cDovL2xvY2FsaG9zdDo3MDAxL3N3YWdnZXItdWkvaW5kZXguaHRtbD9jb25maWdVcmw9L2FwaS1kb2NzL3N3YWdnZXItY29uZmlnXShodHRwOi8vbG9jYWxob3N0OjcwMDEvc3dhZ2dlci11aS9pbmRleC5odG1sP2NvbmZpZ1VybD0vYXBpLWRvY3Mvc3dhZ2dlci1jb25maWcpIGluIHlvdXIgd2ViIGJyb3dzZXIgdG8gYWNjZXNzIHRoZSBTd2FnZ2VyIFVJLiBZb3UgY2FuIGVudGVyIGAzNjJgIGFzIHRoZSBgbW92aWVJZGAgYW5kIGl0IHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgZnJvbSBhYm92ZS4KCmBgYGpzb24KewogICJtb3ZpZUlkIjogMzYyLAogICJyYXRpbmciOiA5Cn0KYGBgCgpZb3UnbGwgZmluZCB0aGF0IHRoZSBgc3RvcmUucmVhZCguLi4pYCBtZXRob2QgaW4gdGhlIGNvbnRyb2xsZXIgaXMgYWJsZSB0byBxdWVyeSBpbnRvIHRoaXMgUmVkaXMtYmFja2VkIHN0YXRlIHN0b3JlLgoKPiBOb3RlOiBrZWVwIGluIG1pbmQgdGhlIHZhcmlvdXMgW3N0YXRlc10oaHR0cHM6Ly9rYWZrYS5hcGFjaGUub3JnLzI2L2phdmFkb2Mvb3JnL2FwYWNoZS9rYWZrYS9zdHJlYW1zL0thZmthU3RyZWFtcy5TdGF0ZS5odG1sKSBvZiB0aGUgY2xpZW50LiBXaGVuIGEgS2Fma2EgU3RyZWFtcyBpbnN0YW5jZSBpcyBpbiBgUlVOTklOR2Agc3RhdGUsIGl0IGFsbG93cyBmb3IgaW5zcGVjdGlvbiBvZiB0aGUgc3RyZWFtJ3MgbWV0YWRhdGEgdXNpbmcgbWV0aG9kcyBsaWtlIGBxdWVyeU1ldGFkYXRhRm9yS2V5KClgLiBXaGlsZSBpdCBpcyBpbiBgUkVCQUxBTkNJTkdgIHN0YXRlLCB0aGUgUkVTVCBzZXJ2aWNlIGNhbm5vdCBpbW1lZGlhdGVseSBhbnN3ZXIgcmVxdWVzdHMgdW50aWwgdGhlIHN0YXRlIHN0b3JlcyBhcmUgZnVsbHkgcmVidWlsdC4KCiMjIFRyb3VibGVzaG9vdGluZwoKKiBJbiBjZXJ0YWluIGNvbmRpdGlvbnMsIHlvdSBtYXkgbmVlZCB0byBkbyBhIGNvbXBsZXRlIGFwcGxpY2F0aW9uIHJlc2V0LiBZb3UgY2FuIGRlbGV0ZSB0aGUgYXBwbGljYXRpb27igJlzIGxvY2FsIHN0YXRlIGRpcmVjdG9yeSB3aGVyZSB0aGUgYXBwbGljYXRpb24gaW5zdGFuY2Ugd2FzIHJ1bi4gSW4gdGhpcyBwcm9qZWN0LCBLYWZrYSBTdHJlYW1zIHBlcnNpc3RzIGxvY2FsIHN0YXRlcyB1bmRlciB0aGUgYH4vZGF0YWAgZm9sZGVyLgo= readmeEtag: '"ee740369c0ba2ffe584b7045371f503358c5048d"' readmeLastModified: Wed, 11 Nov 2020 18:21:16 GMT repositoryId: 289421697 description: >- A demo project demonstrating how to read and write data into a Redis-backed state store using Kafka Streams. created: '2020-08-22T04:54:11Z' updated: '2026-01-19T07:49:11Z' language: Java archived: false stars: 24 watchers: 1 forks: 6 owner: ben-jamin-chen logo: https://avatars.githubusercontent.com/u/41641688?v=4 license: MIT repoEtag: '"0b5c336194be21fcc7a2df86631826d1828fac3ec239283a603288d7682ce11b"' repoLastModified: Mon, 19 Jan 2026 07:49:11 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/technocreatives/openapi-eller v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgc3JjPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8yNzkwOTkvMzk2NzcyNjQtMzk2Zjk1NjgtNTE3OC0xMWU4LTlhZmMtYjg0NWZkZDIyMThmLnBuZyIgYWx0PSJFbGxlciBsb2dvIi8+CjwvcD4KClshW0FjdGlvbnMgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vdGVjaG5vY3JlYXRpdmVzL29wZW5hcGktZWxsZXIvd29ya2Zsb3dzL25vZGVqcy1idWlsZC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vdGVjaG5vY3JlYXRpdmVzL29wZW5hcGktZWxsZXIvYWN0aW9ucykgWyFbTlBNIHZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3Yvb3BlbmFwaS1lbGxlci5zdmc/c3R5bGU9ZmxhdCldKGh0dHBzOi8vd3d3Lm5wbWpzLm9yZy9wYWNrYWdlL29wZW5hcGktZWxsZXIpCgojIE9wZW5BUEkgR2VuZXJhdG9yLCBlbGxlcj8KCkdlbmVyYXRlIE9wZW5BUEkgdjMgY2xpZW50cyBhbmQgc2VydmVycyBmcm9tIHRoZSBjb21tYW5kIGxpbmUgd2l0aCBub3RoaW5nIG1vcmUKdGhhbiBOb2RlLmpzLgoKCkp1c3QgcnVuOgoKYGBgCm5wbSBpIC1nIG9wZW5hcGktZWxsZXIKYGBgCgpTZWUgYG9wZW5hcGktZWxsZXIgLS1oZWxwYCBmb3IgdXNhZ2UgZGV0YWlscy4KCi0gW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vdGVjaG5vY3JlYXRpdmVzLmdpdGh1Yi5pby9vcGVuYXBpLWVsbGVyKQoKLS0tCgpMb29raW5nIGZvciBhbiBlYXN5IHdheSB0byBnZW5lcmF0ZSBhIG1vY2sgc2VydmVyIGZyb20gYW4gT3BlbkFQSSB2MyBzcGVjPyBXZSd2ZSBnb3QgeW91IGNvdmVyZWQuCgpUcnkgW29wZW5hcGktbW9jay1lbGxlcl0oaHR0cHM6Ly9naXRodWIuY29tL3RlY2hub2NyZWF0aXZlcy9vcGVuYXBpLW1vY2stZWxsZXIpIHRvZGF5IQoKLS0tCgoqKlBMRUFTRSBOT1RFOiBUaGlzIGNvZGViYXNlIGlzIHN0aWxsIGEgd29yay1pbi1wcm9ncmVzcywgYnV0IGl0IGRvZXMgcHJvZHVjZSBwcm9kdWN0aW9uLWdyYWRlIGNvZGUKZm9yIHRob3NlIHRhcmdldHMgbGlzdGVkIGFzIHN1cHBvcnRlZC4gQmVoYXZpb3VyIGlzIHN1YmplY3QgdG8gY2hhbmdlIGJldHdlZW4gdmFyaWFudHMgdW50aWwgMS4wLjAuKioKCiMjIEZlYXR1cmVzCgotIFN1cHBvcnRzKiB0aGUgZnVsbCBPcGVuQVBJIHYzIHNwZWNpZmljYXRpb24KLSBVc2VzIGFuIGludGVyY2VwdG9yIHBhdHRlcm4gZm9yIGhhbmRsaW5nIHNlY3VyaXR5IHNjaGVtYXMgaW4gY2xpZW50cwotIE9BdXRoIDIgY2xpZW50cyBjb21wbHkgd2l0aCBbUkZDNjc0OV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY3NDkpIGFuZCAKICBbUkZDNjc1MF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY3NTApIChCZWFyZXIgVG9rZW4gVXNhZ2UpCi0gVGFyZ2V0cyBjYW4gYmUgY29uZmlndXJlZCB3aXRoIGEgSlNPTiBvciBZQU1MIGZpbGUgZm9yIHNpbXBsZSwgcmVwcm9kdWNhYmxlIGdlbmVyYXRpb25zCi0gRWFzaWx5IGV4dGVuc2libGUgSGFuZGxlYmFycyB0ZW1wbGF0ZXMgZm9yIGNvcmUgc3RydWN0dXJlIG9mIGZpbGVzLCB3aXRoIFR5cGVTY3JpcHQgCiAgdGFyZ2V0LXNwZWNpZmljIGNvZGUgZm9yIGhhbmRsaW5nIHdpdGggcG9pbnR5IGJpdHMKCiMjIFN1cHBvcnRlZCB0YXJnZXRzCgotIENsaWVudHM6CiAgLSBLb3RsaW4gKEFuZHJvaWQpCiAgLSBTd2lmdCAoaU9TKQogIC0gVHlwZVNjcmlwdAotIFNlcnZlcnM6CiAgLSBBU1AuTkVUIChNVkMgRnJhbWV3b3JrIDQuNSkKClRoZXJlIGFyZSBvdGhlciB0YXJnZXRzIGluIHRoZSB0cmVlLCB0aG91Z2ggdGhleSBhcmUgYSB3b3JrLWluLXByb2dyZXNzLgoKIyMgUm9hZG1hcCB0byAwLjQKCi0gWyBdIEdlbmVyYXRpbmcgcGxhdGZvcm0tY29uZm9ybWFudCBBUEkgZG9jdW1lbnRhdGlvbgotIFsgXSBIYW5kbGUgcmV0dXJuaW5nIGhlYWRlcnMsIHN0YXR1cyBjb2RlcyBhbmQgcmF3IHJlc3BvbnNlIG9iamVjdHMgd2hlcmUgbmVjZXNzYXJ5Ci0gWyBdIEhhbmRsZSBtYW5kYXRvcnkgY29uZmlndXJhdGlvbiBmb3IgdGFyZ2V0cwotIFsgXSBHZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZvciB0YXJnZXQgY29uZmlndXJhdGlvbgoKIyMgVXNlcnMKCi0gVGhlIFRlY2hubyBDcmVhdGl2ZXMKCiMjIENvbnRyaWJ1dGluZwoKV2UgaGFwcGlseSBhY2NlcHQgY29udHJpYnV0aW9ucyEgV2Ugc2ltcGx5IGFzayB0aGF0IHlvdSBwbGVhc2UgbWFrZSBzdXJlIHRoYXQgYW55IGRlcGVuZGVuY2llcyAKb2YgeW91ciB0YXJnZXRzIHVzZSBhIHBlcm1pc3NpdmUgbGljZW5zZSBjb21wYXRpYmxlIHdpdGggdGhlIElTQyBsaWNlbnNlICh3aGljaCBtZWFucyBubyBBR1BMIG9yIApHUEwgZGVwZW5kZW5jaWVzLCB1bmZvcnR1bmF0ZWx5LikKCklmIHlvdSdyZSB1bnN1cmUsIG9wZW4gYW4gaXNzdWUgYW5kIHdlIGNhbiBoZWxwIHlvdSBvdXQhCgojIyBMaWNlbnNlCgpJU0MgbGljZW5zZSAtIHNlZSBMSUNFTlNFIGZpbGUuCgpBbnkgY29kZSBvdXRwdXR0ZWQgYnkgdGhpcyBnZW5lcmF0b3IgaXMgdGhlIGxpY2Vuc2Ugb2YgeW91ciBjaG9pY2UuCg== readmeEtag: '"14a1bcf12a26b2a7e23f2ea775a520b7ac613910"' readmeLastModified: Tue, 12 May 2020 08:48:11 GMT repositoryId: 130574986 description: Generate OpenAPI v3 clients and servers from the command line created: '2018-04-22T14:25:35Z' updated: '2024-06-10T18:55:28Z' language: TypeScript archived: false stars: 20 watchers: 6 forks: 4 owner: technocreatives logo: https://avatars.githubusercontent.com/u/4668783?v=4 license: ISC repoEtag: '"94511f5aa63dc43c3f5d92bf1f4771106c493e7ff596d6b95e5e9fc8f2e6ba08"' repoLastModified: Mon, 10 Jun 2024 18:55:28 GMT foundInMaster: true category: - Server - Parsers id: 9ab6e634f0f3553238502aa27b3e5a45 - source: openapi3 tags repository: https://github.com/vanmoof/gopenapi v3: true repositoryMetadata: base64Readme: >- PSBHT3BlbkFQSQoKaW1hZ2U6aHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvVmFuTW9vZi9nb3BlbmFwaS5zdmc/c3R5bGU9c3ZnJmNpcmNsZS10b2tlbj0zYWY2MjY4YjJjOGRhMjBjMjI2MzIyNjE4ODJkMzU4ZTMwMjdjMDQ1WyJDaXJjbGVDSSIsIGxpbms9Imh0dHBzOi8vY2lyY2xlY2kuY29tL2doL1Zhbk1vb2YvZ29wZW5hcGkiXQoKQW4gT3BlbkFQSSB1dGlsaXR5IGZvciBHby4KVGhpcyBwcm9qZWN0IGFpbXMgdG8gYnJpbmcgc3VwcG9ydCBvZiBPcGVuQVBJIHYzLgoKPT0gVXNhZ2UKCmBgYGJhc2gKJCBnb3BlbmFwaSBbY29tbWFuZF0gW2FyZ10KYGBgCgo9PT0gR2VuZXJhdGluZyBTcGVjaWZpY2F0aW9ucyBGcm9tIENvZGUKCmBgYGJhc2gKZ29wZW5hcGkgZ2VuZXJhdGUgc3BlYyBbb3B0aW9uYWwgcGF0aF0gW2ZsYWdzXQpgYGAKCj09PT0gQXJncwoKYGBgYmFzaApbb3B0aW9uYWwgcGF0aF0gICBPcHRpb25hbGx5IHNwZWNpZnkgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0byBzZWFyY2guIEFjY2VwdHMgYWJzb2x1dGUgcGF0aHMuIFJlbGF0aXZlIHBhdGhzIGFyZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuIChkZWZhdWx0ICIuIikKYGBgCgo9PT09IEZsYWdzCgpgYGBiYXNoCi1mLCAtLWZvcm1hdCBzdHJpbmcgICBUaGUgZm9ybWF0IG9mIHRoZSBvdXRwdXQuIE1heSBiZSBqc29uIG9yIHlhbWwgKGRlZmF1bHQgImpzb24iKQotbywgLS1vdXRwdXQgc3RyaW5nICAgV2hlcmUgdGhlIG91dHB1dCBzaG91bGQgYmUgZGlyZWN0ZWQuIE1heSBiZSAnLScgKHN0ZG91dCkgb3IgYSBwYXRoIHRvIGEgZmlsZSAoZGVmYXVsdCAiLSIpCmBgYAoKPT09PSBGb3JtYXQKCkNvZGUgaXMgYW5ub3RhdGVkIHdpdGggZGlmZmVyZW50IHR5cGVzIG9mIGNvbW1lbnRzIHRoYXQgaGVscCBnZW5lcmF0ZSB0aGUgc3BlYy4KClRoZSBjb21tZW50IGNvbnRhaW5zIGEga2V5d29yZCB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgT3BlbkFQSSBlbGVtZW50LgoKVGhlIGNvbnRlbnQgb2YgdGhlIGNvbW1lbnQgc2hvdWxkIGJlIGEgdmFsaWQgWUFNTCBPcGVuQVBJIGVsZW1lbnQKCj09PT09IEluZm8KCkJlZ2luIGEgY29tbWVudCB3aXRoIGBnb3BlbmFwaTppbmZvYCBhbmQgZm9sbG93IHVwIHdpdGggYSBZQU1MIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBPcGVuQVBJIEluZm8gZWxlbWVudC4KClRoaXMgZWxlbWVudCBpcyB0aGVuIHNldCB0byB0aGUgYGluZm9gIHByb3BlcnR5IG9mIHRoZSBzcGVjaWZpY2F0aW9uLgoKYGBgZ28KcGFja2FnZSBtYWluCgovKgpnb3BlbmFwaTppbmZvCnRpdGxlOiBUaGUgQXBwIE5hbWUKdmVyc2lvbjogMS4wCmRlc2NyaXB0aW9uOiB8LQogIFRoZSBhcHAgZGVzY3JpcHRpb24KY29udGFjdDoKICBuYW1lOiBKaW1ib2IgSm9uZXMKICB1cmw6IGh0dHBzOi8vam9uZXMuY29tCiAgZW1haWw6IGppbWJvYkBqb25lcy5jb20KbGljZW5zZToKICBuYW1lOiBBcGFjaGUgMi4wCiAgdXJsOiBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wLmh0bWwKKi8KZnVuYyBtYWluKCkgewp9CmBgYAoKPT09PT0gUGF0aAoKQmVnaW4gYSBjb21tZW50IHdpdGggYGdvcGVuYXBpOnBhdGhgIGFuZCBmb2xsb3cgdXAgd2l0aCBhIFlBTUwgcmVwcmVzZW50YXRpb24gb2YgdGhlIE9wZW5BUEkgUGF0aEl0ZW0gZWxlbWVudC4KClRoaXMgZWxlbWVudCBpcyB0aGVuIGFwcGVuZGVkIHRvIHRoZSBgcGF0aHNgIHByb3BlcnR5IG9mIHRoZSBzcGVjaWZpY2F0aW9uLgoKYGBgZ28KcGFja2FnZSBtYWluCgovKgpnb3BlbmFwaTpwYXRoCi9waW5nOgogIGdldDoKICAgIHJlc3BvbnNlczoKICAgICAgMjAwOgogICAgICAgIGRlc2NyaXB0aW9uOiB8LQogICAgICAgICAgVGhlIGRlZmF1bHQgcmVzcG9uc2Ugb2YgInBpbmciCiAgICAgICAgY29udGVudDoKICAgICAgICAgIHRleHQvcGxhaW46CiAgICAgICAgICAgIGV4YW1wbGU6IHBvbmcKKi8KZnVuYyBDb250cm9sbGVyRnVuYygpIHsKfQpgYGAKCj09PT09IE9iamVjdCBTY2hlbWEKCkFubm90YXRlIGEgc3RydWN0IHdpdGggYSBgZ29wZW5hcGk6b2JqZWN0U2NoZW1hYC4KClRoZSBnZW5lcmF0ZWQgT2JqZWN0U2NoZW1hIGVsZW1lbnQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgYGNvbXBvbmVudHMuc2NoZW1hc2AgcHJvcGVydHkgb2YgdGhlIHNwZWNpZmljYXRpb24uCgpgYGBnbwovL2dvcGVuYXBpOm9iamVjdFNjaGVtYQp0eXBlIFJvb3RNb2RlbCBzdHJ1Y3QgewoJSW50RmllbGQgICAgaW50NjQgIGBqc29uOiJpbnRGaWVsZCJgCglTdHJpbmdGaWVsZCBzdHJpbmcgYGpzb246InN0cmluZ0ZpZWxkImAKfQoKLy8gVGhpcyBzdHJ1Y3Qgd2lsbCBiZSBpZ25vcmVkCnR5cGUgSWdub3JlZE1vZGVsIHN0cnVjdCB7Cn0KCi8vZ29wZW5hcGk6b2JqZWN0U2NoZW1hCnR5cGUgQWxpYXNlZE1vZGVscyBbXSpBbGlhc2VkTW9kZWwgLy8gVGhpcyBhbGlhcyB3aWxsIGFwcGVhciBhcyBhIHNjaGVtYSB0b28KCi8vZ29wZW5hcGk6b2JqZWN0U2NoZW1hCnR5cGUgQWxpYXNlZE1vZGVsIHN0cnVjdCB7CglJZ25vcmVkRmllbGQgc3RyaW5nIGBqc29uOiItImAgLy8gVGhpcyBmaWVsZCB3aWxsIGJlIGlnbm9yZWQKCVRpbWVGaWVsZCAgICB0aW1lLlRpbWUKfQoKYGBgCgo9PT09PSBQYXJhbWV0ZXIKCkFubm90YXRlIGEgYGNvbnN0YCBvciBhIGB2YXJgIHdpdGggYSBgZ29wZW5hcGk6cGFyYW1ldGVyYC4KClRoZSBhbm5vdGF0ZWQgZmllbGQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgYGNvbXBvbmVudHMucGFyYW1ldGVyc2AgcHJvcGVydHkgb2YgdGhlIHNwZWNpZmljYXRpb24uCgpgYGBnbwovKgpnb3BlbmFwaTpwYXJhbWV0ZXIKaW46IHBhdGgKcmVxdWlyZWQ6IHRydWUKY29udGVudDoKICB0ZXh0L3BsYWluOgogICAgZXhhbXBsZTogMzAKKi8KY29uc3QgTGltaXQgPSAibGltaXQiCmBgYAoKVGhlIG5hbWUgb2YgdGhlIGZpZWxkIChgTGltaXRgKSB3aWxsIGJlIHRoZSBwYXJhbWV0ZXIgaWRlbnRpZmllciBhbmQgdGhlIHZhbHVlIG9mIHRoZSBmaWVsZCAoYGxpbWl0YCkgd2lsbCBiZSB0aGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyLg== readmeEtag: '"d002052719c18775f586320321423b3be79c70a5"' readmeLastModified: Tue, 15 Oct 2019 10:03:39 GMT repositoryId: 209779146 description: An OpenAPI v3 utility for Go created: '2019-09-20T11:53:43Z' updated: '2025-03-06T13:03:14Z' language: Go archived: false stars: 19 watchers: 5 forks: 1 owner: VanMoof logo: https://avatars.githubusercontent.com/u/26412800?v=4 license: MIT repoEtag: '"77ec456a852f3eef49f4466aa83ce459be68eb1623d93dc5db000c22c9c684bc"' repoLastModified: Thu, 06 Mar 2025 13:03:14 GMT foundInMaster: true category: Parsers id: 87176f9790da6975ca8309ca566efc2d - source: openapi3 tags repository: https://github.com/speakeasy-api/openapi-reference-documentation v3: true id: 529feb5341d9e218d083e115c280ae49 repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICA8cGljdHVyZT4KICAgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iLi9pbWFnZXMvbG9nb3Mvb3BlbmFwaS1kYXJrLnN2ZyI+CiAgICA8aW1nIGFsdD0iT3BlbkFQSSBsb2dvIiBzcmM9Ii4vaW1hZ2VzL2xvZ29zL29wZW5hcGktbGlnaHQuc3ZnIiB3aWR0aD0iOTAlIj4KICA8L3BpY3R1cmU+CjwvZGl2PgoKPGJyPjxicj4KCjxkaXYgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9zcGVha2Vhc3lhcGkuZGV2LyI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9jdXN0b20taWNvbi1iYWRnZXMuZGVtb2xhYi5jb20vYmFkZ2UvLUJ1aWx0JTIwQnklMjBTcGVha2Vhc3ktMjEyMDE1P3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nb0NvbG9yPUZCRTMzMSZsb2dvPXNwZWFrZWFzeSZsYWJlbENvbG9yPTU0NTQ1NCIgLz48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQiPgogICAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGljZW5zZS1NSVQtYmx1ZS5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSIgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAyOHB4OyIgLz48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NwZWFrZWFzeS1hcGkvb3BlbmFwaS1yZWZlcmVuY2UtZG9jdW1lbnRhdGlvbi9pc3N1ZXMiPgogICAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy9zcGVha2Vhc3ktYXBpL29wZW5hcGktcmVmZXJlbmNlLWRvY3VtZW50YXRpb24/c3R5bGU9Zm9yLXRoZS1iYWRnZSIgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAyOHB4OyIgLz48L2E+CjwvZGl2PgoKPGJyIC8+CjxiciAvPgoKPGgxIGFsaWduPSJjZW50ZXIiPlRoZSBPcGVuQVBJIFJlZmVyZW5jZTwvaDE+CjxkaXYgYWxpZ249ImNlbnRlciI+CkFuIGV4YW1wbGUtcmljaCwgZWFzeSB0byB1bmRlcnN0YW5kIHJlZmVyZW5jZSBmb3IgT3BlbkFQSS4KPC9kaXY+CjwvYnI+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL3d3dy5zcGVha2Vhc3lhcGkuZGV2L29wZW5hcGkiPiBMaXZlIFJlZmVyZW5jZTwvYT4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LWFwaS9vcGVuYXBpLXJlZmVyZW5jZS1kb2N1bWVudGF0aW9uL2lzc3Vlcy9uZXc/YXNzaWduZWVzPSZsYWJlbHM9YnVnJnByb2plY3RzPSZ0ZW1wbGF0ZT1idWdfcmVwb3J0Lm1kIj5SZXBvcnQgSXNzdWU8L2E+CiAgICDCtwogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NwZWFrZWFzeS1hcGkvb3BlbmFwaS1yZWZlcmVuY2UtZG9jdW1lbnRhdGlvbi9pc3N1ZXMvbmV3P2Fzc2lnbmVlcz0mbGFiZWxzPWVuaGFuY2VtZW50JnByb2plY3RzPSZ0ZW1wbGF0ZT1mZWF0dXJlX3JlcXVlc3QubWQiPlJlcXVlc3QgRmVhdHVyZTwvYT4KICAgIMK3CiAgPGEgaHJlZj0iaHR0cHM6Ly9qb2luLnNsYWNrLmNvbS90L3NwZWFrZWFzeS1kZXYvc2hhcmVkX2ludml0ZS96dC0xY3diM2ZseHotbFM1U3laeEFzRl8zTk9xNXhjOENqdyI+Sm9pbiBPdXIgU2xhY2s8L2E+CiAgCiAgPC9wPgoKIyMgV2hhdCBpcyB0aGlzIHJlZmVyZW5jZSBmb3I/CgpPcGVuQVBJIGlzIGEgc3BlY2lmaWNhdGlvbiBmb3IgZGVzY3JpYmluZyBSRVNUZnVsIEFQSXMuIEZ1bmN0aW9uYWxseSwgaXQgc2VydmVzIGFzIGEgc291cmNlIG9mIHRydXRoIGZvciBBUEkgdG9vbGluZywgZG9jdW1lbnRhdGlvbiwgYW5kIHRlc3RpbmcuIEFzIHN1Y2gsIGl0IGlzIGVzc2VudGlhbCBmb3IgZGV2ZWxvcGVycyB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY2F0aW9uLgoKVGhpcyByZWZlcmVuY2UgaXMgaW50ZW5kZWQgdG8gYmUgY29tcGxlbWVudGFyeSBvZiB0aGUgW29mZmljaWFsIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBSZWZlcmVuY2VdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCkuIEl0IGlzIGZvY3VzZWQgb24gYmVpbmcgZGV2LWZyaWVuZGx5OiBleGFtcGxlLWJhc2VkIHdpdGggdGhvcm91Z2ggZXhwbGFuYXRpb25zLCBwbHVzIEFJIHNlYXJjaCEKCklmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUgdG8gdGhpcyByZWZlcmVuY2UsIHBsZWFzZSBzZWUgdGhlIFtjb250cmlidXRpbmcgZ3VpZGVdKENPTlRSSUJVVElORy5tZCkuCgojIyBXaGF0IGlzIFNwZWFrZWFzeQoKQXQgU3BlYWtlYXN5IHdlIGFyZSBidWlsZGluZyB0aGUgdG9vbGNoYWluIHRvIG1ha2UgQVBJcyBlYXN5IHRvIGNyZWF0ZSBhbmQgY29uc3VtZS4KClRvZGF5LCBvdXIgcGxhdGZvcm0gYWxsb3dzIHlvdSB0byBjcmVhdGUgYSByb2J1c3QgZGV2ZWxvcGVyIGV4cGVyaWVuY2UgZm9yIHlvdXIgQVBJIHVzaW5nIGFuIE9wZW5BUEkgc3BlYzoKCi0gW1NES3MgaW4gOSBsYW5ndWVzXShodHRwczovL3d3dy5zcGVha2Vhc3lhcGkuZGV2L2RvY3MvY3JlYXRlLWNsaWVudC1zZGtzKTogVHlwZVNjcmlwdCwgUHl0aG9uLCBHbywgSmF2YSwgQyMsIFJ1YnksIFBIUCwgU3dpZnQgYW5kIFVuaXR5Ci0gW1RlcnJhZm9ybSBQcm92aWRlcnNdKGh0dHBzOi8vd3d3LnNwZWFrZWFzeWFwaS5kZXYvZG9jcy9jcmVhdGUtdGVycmFmb3JtKQoKRHVlIHRvIHRoZSBuYXR1cmUgb2Ygb3VyIHdvcmssIHdlIHNwZW5kIGEgbG90IG9mIHRpbWUgd29ya2luZyB3aXRoIE9wZW5BUEkgYW5kIGhhdmUgYmVjb21lIGV4cGVydHMgb24gaG93IHRoZSBzcGVjIGltcGFjdHMgZG93bnN0cmVhbSB3b3JrZmxvd3MuIFRoaXMgcmVmZXJlbmNlIGlzIGEgd2F5IGZvciB1cyB0byBnaXZlIGJhY2sgdG8gdGhlIGNvbW11bml0eSBhbmQgcGFzcyBvbiBzb21lIG9mIHRoZSBsZWFybmluZyB0aGF0IHdlJ3ZlIGRvbmUgYWxvbmcgdGhlIHdheS4KCiMjIENvbnRyaWJ1dGluZwoKV2hpbGUgd2UgaGF2ZSBhIGxvdCBvZiBpbnRlcm5hbCBvcGluaW9ucyBvbiBob3cgdG8gd3JpdGUgT3BlbkFQSSwgd2UgdmFsdWUgb3BpbmlvbnMgZnJvbSB0aGUgY29tbXVuaXR5LiBXZSB3b3VsZCBsb3ZlIGZvciBjb250cmlidXRpb25zIHRvIHRoaXMgcmVmZXJlbmNlIHRvIGNvbWUgZnJvbSBhIHdpZGUgcmFuZ2Ugb2YgcGVvcGxlLCB3aXRoIGRpZmZlcmVudCBiYWNrZ3JvdW5kcyBhbmQgZXhwZXJpZW5jZXMuCgpUaGlzIE9wZW5BUEkgUmVmZXJlbmNlIGlzIE9wZW4gU291cmNlIHVuZGVyIHRoZSBbTUlUXShMSUNFTlNFKSwgYW5kIGlzIHRoZSBbY29weXJpZ2h0IG9mIGl0cyBjb250cmlidXRvcnNdKE5PVElDRSkuIElmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUgdG8gdGhlIHNvZnR3YXJlLCB5b3UgbXVzdDoKCjEuIFJlYWQgdGhlIERldmVsb3BlciBDZXJ0aWZpY2F0ZSBvZiBPcmlnaW4gVmVyc2lvbiAxLjEgKGh0dHBzOi8vZGV2ZWxvcGVyY2VydGlmaWNhdGUub3JnLykKMi4gU2lnbmluZyBhbGwgY29tbWl0cyB0byB0aGUgT3BlbkFQSSBSZWZlcmVuY2UgcHJvamVjdC4KClRoaXMgZW5zdXJlcyB0aGF0IHVzZXJzLCBkaXN0cmlidXRvcnMsIGFuZCBvdGhlciBjb250cmlidXRvcnMgY2FuIHJlbHkgb24gYWxsIHRoZSBzb2Z0d2FyZSByZWxhdGVkIHRvIFNwZWFrZWFzeSBiZWluZyBjb250cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIFtMaWNlbnNlXShMSUNFTlNFKS4gTm8gY29udHJpYnV0aW9ucyB3aWxsIGJlIGFjY2VwdGVkIHdpdGhvdXQgZm9sbG93aW5nIHRoaXMgcHJvY2Vzcy4KCkFmdGVyd2FyZHMsIG5hdmlnYXRlIHRvIHRoZSBbY29udHJpYnV0aW5nIGd1aWRlXShDT05UUklCVVRJTkcubWQpIHRvIGdldCBzdGFydGVkLgoKIyMgTGljZW5zZQoKVGhpcyByZXBvc2l0b3J5IGNvbnRhaW5zIFNwZWFrZWFzeSdzIE9wZW5BUEkgUmVmZXJlbmNlLCBjb3ZlcmVkIHVuZGVyIHRoZSBbTUlUXShMSUNFTlNFKSwgZXhjZXB0IHdoZXJlIG5vdGVkIChhbnkgRGF5dG9uYSBsb2dvcyBvciB0cmFkZW1hcmtzIGFyZSBub3QgY292ZXJlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIGFuZCBzaG91bGQgYmUgZXhwbGljaXRseSBub3RlZCBieSBhIExJQ0VOU0UgZmlsZS4pCgpTcGVha2Vhc3kgaXMgYSBwcm9kdWN0IHRoYXQgbWFrZXMgdXNlIG9mIHRoaXMgb3BlbiBzb3VyY2UgZG9jdW1lbnRhdGlvbi4gSXQgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgb3VyIGNvbW1lcmNpYWwgdGVybXMuCgpPdGhlcnMgYXJlIGFsbG93ZWQgdG8gbWFrZSB0aGVpciBvd24gZGlzdHJpYnV0aW9uIG9mIHRoaXMgZG9jdW1lbnRhdGlvbiwgYnV0IHRoZXkgY2Fubm90IHVzZSBhbnkgb2YgdGhlIFNwZWFrZWFzeSB0cmFkZW1hcmtzLCBjbG91ZCBzZXJ2aWNlcywgZXRjLgoKIyMgQ29kZSBvZiBDb25kdWN0CgpUaGlzIHByb2plY3QgaGFzIGFkYXB0ZWQgdGhlIENvZGUgb2YgQ29uZHVjdCBmcm9tIHRoZSBbQ29udHJpYnV0b3IgQ292ZW5hbnRdKGh0dHBzOi8vd3d3LmNvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZy8pLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIFtDb2RlIG9mIENvbmR1Y3RdKENPREVfT0ZfQ09ORFVDVC5tZCkuCgojIyBRdWVzdGlvbnMKCkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgYW5kIGRldmVsb3AgU3BlYWtlYXN5LCB0YWxrIHRvIHVzIG9uCltTbGFja10oaHR0cHM6Ly9qb2luLnNsYWNrLmNvbS90L3NwZWFrZWFzeS1kZXYvc2hhcmVkX2ludml0ZS96dC0xY3diM2ZseHotbFM1U3laeEFzRl8zTk9xNXhjOENqdykuCg== readmeEtag: '"5d53ec1c7efd99d73fe1abf3b311807aae3081d14f10a6890440a829e1895692"' readmeLastModified: Tue, 09 Apr 2024 11:51:00 GMT repositoryId: 648239100 description: Best in class OpenAPI reference documentation created: '2023-06-01T14:08:03Z' updated: '2025-03-27T18:07:57Z' language: MDX archived: false stars: 21 watchers: 12 forks: 5 owner: speakeasy-api logo: https://avatars.githubusercontent.com/u/91446104?v=4 repoEtag: '"a217844bfc1b98b48e1942c5503bc1702f0360d9a561f696252abae39c36a350"' repoLastModified: Thu, 27 Mar 2025 18:07:57 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/erasys/openapi-php v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXBocAoKWyFbTGF0ZXN0IFZlcnNpb24gb24gUGFja2FnaXN0XVtpY28tdmVyc2lvbl1dW2xpbmstcmVsZWFzZXNdClshW1NvZnR3YXJlIExpY2Vuc2VdW2ljby1saWNlbnNlXV0oTElDRU5TRSkKWyFbQnVpbGQgU3RhdHVzXVtpY28tdHJhdmlzXV1bbGluay10cmF2aXNdClshW0NvdmVyYWdlIFN0YXR1c11baWNvLWNvdmVyYWdlXV1bbGluay1jb3ZlcmFnZV0KWyFbUXVhbGl0eSBTY29yZV1baWNvLXNjcnV0aW5pemVyXV1bbGluay1zY3J1dGluaXplcl0KWyFbVG90YWwgRG93bmxvYWRzXVtpY28tZG93bmxvYWRzXV1bbGluay1kb3dubG9hZHNdCgpPcGVuIEFQSSAzLjAgYnVpbGRlciBhbmQgdmFsaWRhdGlvbiBsaWJyYXJ5IGZvciBQSFAgdGhhdCBoZWxwcyB5b3Ugd3JpdGUgdmFsaWQgc3BlY3MuCgpbUFNSLTFdOiBodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9maWctc3RhbmRhcmRzL2Jsb2IvbWFzdGVyL2FjY2VwdGVkL1BTUi0xLWJhc2ljLWNvZGluZy1zdGFuZGFyZC5tZApbUFNSLTJdOiBodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9maWctc3RhbmRhcmRzL2Jsb2IvbWFzdGVyL2FjY2VwdGVkL1BTUi0yLWNvZGluZy1zdHlsZS1ndWlkZS5tZApbUFNSLTRdOiBodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9maWctc3RhbmRhcmRzL2Jsb2IvbWFzdGVyL2FjY2VwdGVkL1BTUi00LWF1dG9sb2FkZXIubWQKCgpUaGlzIHByb2plY3QgaXMgY29tcGxpYW50IHdpdGggW1BTUi0xXSwgW1BTUi0yXSBhbmQgW1BTUi00XS4KSWYgeW91IG5vdGljZSBjb21wbGlhbmNlIG92ZXJzaWdodHMsIHBsZWFzZSBzZW5kIGEgcGF0Y2ggdmlhIHB1bGwgcmVxdWVzdC4KCiMjIEZlYXR1cmVzCgotIEZ1bGx5IGRvY3VtZW50ZWQgb2JqZWN0LW9yaWVudGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSAKW09wZW4gQVBJIDMuMCtdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL3RyZWUvbWFzdGVyL3ZlcnNpb25zKSBzcGVjaWZpY2F0aW9uIHdpdGggaGVscGVyIG1ldGhvZHMKdG8gd3JpdGUgdmFsaWQgZG9jdW1lbnRzLgotIFN1cHBvcnRzIElsbHVtaW5hdGUgKExhcmF2ZWwpIFtgSnNvbmFibGVgXShodHRwczovL2dpdGh1Yi5jb20vaWxsdW1pbmF0ZS9jb250cmFjdHMvYmxvYi92NS40LjAvU3VwcG9ydC9Kc29uYWJsZS5waHApIAphbmQgW2BBcnJheWFibGVgXShodHRwczovL2dpdGh1Yi5jb20vaWxsdW1pbmF0ZS9jb250cmFjdHMvYmxvYi92NS40LjAvU3VwcG9ydC9BcnJheWFibGUucGhwKS4KLSBHZW5lcmF0ZXMgYW4gc3BlY2lmaWNhdGlvbiBpbiBwbGFpbiBQSFAgYXJyYXlzLCBwbGFpbiBvYmplY3RzLCBKU09OIG9yIFlBTUwuCi0gVmFsaWRhdGVzIE9wZW4gQVBJIGRvY3VtZW50cyBhZ2FpbnN0IHRoZSBPcGVuIEFQSSAzLjAueCBKU09OIFNjaGVtYS4KCgojIyBJbnN0YWxsCgpWaWEgQ29tcG9zZXIKCmBgYCBiYXNoCiQgY29tcG9zZXIgcmVxdWlyZSBlcmFzeXMvb3BlbmFwaS1waHAKYGBgCgpWaWEgR2l0CgpgYGAgYmFzaAokIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vZXJhc3lzL29wZW5hcGktcGhwLmdpdApgYGAKCiMjIFVzYWdlCgpCYXNpYyBleGFtcGxlOgoKYGBgcGhwCjw/cGhwCgp1c2UgZXJhc3lzXE9wZW5BcGlcU3BlY1x2MyBhcyBPQVN2MzsKCiRkb2MgPSBuZXcgT0FTdjNcRG9jdW1lbnQoCiAgICBuZXcgT0FTdjNcSW5mbygnTXkgQVBJJywgJzEuMC4wJywgJ015IEFQSSBkZXNjcmlwdGlvbicpLAogICAgWwogICAgICAgICcvZm9vL2JhcicgPT4gbmV3IE9BU3YzXFBhdGhJdGVtKAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnZ2V0JyA9PiBuZXcgT0FTdjNcT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgJzIwMCcgPT4gbmV3IE9BU3YzXFJlc3BvbnNlKCdTdWNjZXNzZnVsIHJlc3BvbnNlLicpLAogICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdCcgPT4gbmV3IE9BU3YzXFJlc3BvbnNlKCdEZWZhdWx0IGVycm9yIHJlc3BvbnNlLicpLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgIF0KICAgICAgICApLAogICAgXQopOwoKJHlhbWwgPSAkZG9jLT50b1lhbWwoKTsKJGpzb24gPSAkZG9jLT50b0pzb24oKTsKJGFyciAgPSAkZG9jLT50b0FycmF5KCk7CiRvYmogID0gJGRvYy0+dG9PYmplY3QoKTsKCmBgYAoKIyMgVGVzdGluZwoKYGBgIGJhc2gKJCBjb21wb3NlciB0ZXN0CmBgYAoKb3IKCmBgYCBiYXNoCiQgdmVuZG9yL2Jpbi9waHB1bml0CiQgdmVuZG9yL2Jpbi9waHBjcwpgYGAKCiMjIENvbnRyaWJ1dGluZwoKUGxlYXNlIHNlZSBbQ09OVFJJQlVUSU5HXShodHRwczovL2dpdGh1Yi5jb20vZXJhc3lzL29wZW5hcGktcGhwL2Jsb2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCkgZm9yIGRldGFpbHMuCgojIyBMaWNlbnNlCgpUaGUgTUlUIExpY2Vuc2UgKE1JVCkuClBsZWFzZSBzZWUgW0xpY2Vuc2UgRmlsZV0oaHR0cHM6Ly9naXRodWIuY29tL2VyYXN5cy9vcGVuYXBpLXBocC9ibG9iL21hc3Rlci9MSUNFTlNFKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCgpbaWNvLXZlcnNpb25dOiBodHRwczovL2ltZy5zaGllbGRzLmlvL3BhY2thZ2lzdC92L2VyYXN5cy9vcGVuYXBpLXBocC5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUKW2ljby1saWNlbnNlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1icmlnaHRncmVlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUKW2ljby10cmF2aXNdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL3RyYXZpcy9lcmFzeXMvb3BlbmFwaS1waHAvbWFzdGVyLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZQpbaWNvLWRvd25sb2Fkc106IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L2R0L2VyYXN5cy9vcGVuYXBpLXBocC5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUKW2ljby1jb3ZlcmFnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vc2NydXRpbml6ZXIvY292ZXJhZ2UvZy9lcmFzeXMvb3BlbmFwaS1waHAuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlCltpY28tc2NydXRpbml6ZXJdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL3NjcnV0aW5pemVyL2cvZXJhc3lzL29wZW5hcGktcGhwLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZQpbbGluay1yZWxlYXNlc106IGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9lcmFzeXMvb3BlbmFwaS1waHAKW2xpbmstdHJhdmlzXTogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2VyYXN5cy9vcGVuYXBpLXBocApbbGluay1kb3dubG9hZHNdOiBodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvZXJhc3lzL29wZW5hcGktcGhwCltsaW5rLWNvdmVyYWdlXTogaHR0cHM6Ly9zY3J1dGluaXplci1jaS5jb20vZy9lcmFzeXMvb3BlbmFwaS1waHAvY29kZS1zdHJ1Y3R1cmUKW2xpbmstc2NydXRpbml6ZXJdOiBodHRwczovL3NjcnV0aW5pemVyLWNpLmNvbS9nL2VyYXN5cy9vcGVuYXBpLXBocAo= readmeEtag: '"a68dd99cb7a4677ca15321a9279bf5bc88ee1cc5"' readmeLastModified: Fri, 03 Nov 2023 09:41:25 GMT repositoryId: 129788604 description: >- 📚Swagger / Open API 3.0 builder and validation library for PHP that helps you write valid specs. created: '2018-04-16T18:32:26Z' updated: '2024-10-19T14:24:07Z' language: PHP archived: false stars: 20 watchers: 12 forks: 13 owner: erasys logo: https://avatars.githubusercontent.com/u/1845621?v=4 license: MIT repoEtag: '"7f5b5958acda76b1e2bc9d930edd2df5e587c548f5b9aba33217efbd670438b7"' repoLastModified: Sat, 19 Oct 2024 14:24:07 GMT foundInMaster: true category: Data Validators id: acce8eb5c93c964fa251e3fed927c64d - source: openapi3 tags repository: https://github.com/hunyadi/pyopenapi v3: true id: 9a608e628c0c1af0db91578fd6850e9f repositoryMetadata: base64Readme: >- IyBHZW5lcmF0ZSBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gZnJvbSBhIFB5dGhvbiBjbGFzcwoKKlB5T3BlbkFQSSogcHJvZHVjZXMgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGluIEpTT04sIFlBTUwgb3IgSFRNTCBmb3JtYXQgd2l0aCBlbmRwb2ludCBkZWZpbml0aW9ucyBleHRyYWN0ZWQgZnJvbSBtZW1iZXIgZnVuY3Rpb25zIG9mIGEgc3Ryb25nbHktdHlwZWQgUHl0aG9uIGNsYXNzLgoKIyMgRmVhdHVyZXMKCiogc3VwcG9ydHMgc3RhbmRhcmQgYW5kIGFzeW5jaHJvbm91cyBmdW5jdGlvbnMgKGBhc3luYyBkZWZgKQoqIG1hcHMgZnVuY3Rpb24gbmFtZSBwcmVmaXhlcyBzdWNoIGFzIGBnZXRfYCBvciBgY3JlYXRlX2AgdG8gSFRUUCBHRVQsIFBPU1QsIFBVVCwgREVMRVRFLCBQQVRDSAoqIGhhbmRsZXMgYm90aCBzaW1wbGUgYW5kIGNvbXBvc2l0ZSB0eXBlcyAoYGludGAsIGBzdHJgLCBgRW51bWAsIGBAZGF0YWNsYXNzYCkKKiBoYW5kbGVzIGdlbmVyaWMgdHlwZXMgKGBsaXN0W1RdYCwgYGRpY3RbSywgVl1gLCBgT3B0aW9uYWxbVF1gLCBgVW5pb25bVDEsIFQyLCBUM11gKQoqIG1hcHMgUHl0aG9uIHBvc2l0aW9uYWwtb25seSBhbmQga2V5d29yZC1vbmx5IGFyZ3VtZW50cyAob2Ygc2ltcGxlIHR5cGVzKSB0byBwYXRoIGFuZCBxdWVyeSBwYXJhbWV0ZXJzLCByZXNwZWN0aXZlbHkKKiBtYXBzIGNvbXBvc2l0ZSB0eXBlcyB0byBIVFRQIHJlcXVlc3QgYm9keQoqIHN1cHBvcnRzIHVzZXItZGVmaW5lZCByb3V0ZXMsIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHNhbXBsZXMgd2l0aCBkZWNvcmF0b3IgYEB3ZWJtZXRob2RgCiogZXh0cmFjdHMgZGVzY3JpcHRpb24gdGV4dCBmcm9tIGNsYXNzIGFuZCBmdW5jdGlvbiBkb2Mtc3RyaW5ncyAoYF9fZG9jX19gKQoqIHJlY29nbml6ZXMgcGFyYW1ldGVyIGRlc2NyaXB0aW9uIHRleHQgZ2l2ZW4gaW4gcmVTdHJ1Y3R1cmVkVGV4dCBkb2Mtc3RyaW5nIGZvcm1hdCAoYDpwYXJhbSBuYW1lOiAuLi5gKQoqIGNvbnZlcnRzIGV4Y2VwdGlvbnMgZGVjbGFyZWQgaW4gZG9jLXN0cmluZ3MgaW50byBIVFRQIDR4eCBhbmQgNXh4IHJlc3BvbnNlcyAoZS5nLiBgOnJhaXNlcyBUeXBlRXJyb3I6YCkKKiByZWN1cnNpdmVseSBjb252ZXJ0cyBjb21wb3NpdGUgdHlwZXMgaW50byBKU09OIHNjaGVtYXMKKiBncm91cHMgZnJlcXVlbnRseSB1c2VkIGNvbXBvc2l0ZSB0eXBlcyBpbnRvIGEgc2VwYXJhdGUgc2VjdGlvbiBhbmQgcmUtdXNlcyB0aGVtIHdpdGggYCRyZWZgCiogZGlzcGxheXMgZ2VuZXJhdGVkIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBpbiBIVE1MIHdpdGggW1JlRG9jXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvYykKCiMjIExpdmUgZXhhbXBsZXMKCiogW0VuZHBvaW50IGRlZmluaXRpb24gaW4gUHl0aG9uXShodHRwczovL2h1bnlhZGkuZ2l0aHViLmlvL3B5b3BlbmFwaS9leGFtcGxlcy9weXRob24vaW5kZXguaHRtbCkKKiBbR2VuZXJhdGVkIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBpbiBKU09OXShodHRwczovL2h1bnlhZGkuZ2l0aHViLmlvL3B5b3BlbmFwaS9leGFtcGxlcy9qc29uL2luZGV4Lmh0bWwpCiogW0dlbmVyYXRlZCBPcGVuQVBJIHNwZWNpZmljYXRpb24gaW4gWUFNTF0oaHR0cHM6Ly9odW55YWRpLmdpdGh1Yi5pby9weW9wZW5hcGkvZXhhbXBsZXMveWFtbC9pbmRleC5odG1sKQoqIFtHZW5lcmF0ZWQgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGluIEhUTUwgd2l0aCBSZURvY10oaHR0cHM6Ly9odW55YWRpLmdpdGh1Yi5pby9weW9wZW5hcGkvZXhhbXBsZXMvaW5kZXguaHRtbCkKCiMjIFVzZXIgZ3VpZGUKCiMjIyBUaGUgc3BlY2lmaWNhdGlvbiBvYmplY3QKCkluIG9yZGVyIHRvIGdlbmVyYXRlIGFuIFtPcGVuQVBJIHNwZWNpZmljYXRpb24gZG9jdW1lbnRdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL2xhdGVzdC5odG1sKSwgeW91IHNob3VsZCBmaXJzdCBjb25zdHJ1Y3QgYSBgU3BlY2lmaWNhdGlvbmAgb2JqZWN0LCB3aGljaCBlbmNhcHN1bGF0ZXMgdGhlIGZvcm1hbCBkZWZpbml0aW9uOgoKYGBgcHl0aG9uCnNwZWNpZmljYXRpb24gPSBTcGVjaWZpY2F0aW9uKAogICAgTXlFbmRwb2ludCwKICAgIE9wdGlvbnMoCiAgICAgICAgc2VydmVyPVNlcnZlcih1cmw9Imh0dHA6Ly9leGFtcGxlLmNvbS9hcGkiKSwKICAgICAgICBpbmZvPUluZm8oCiAgICAgICAgICAgIHRpdGxlPSJFeGFtcGxlIHNwZWNpZmljYXRpb24iLAogICAgICAgICAgICB2ZXJzaW9uPSIxLjAiLAogICAgICAgICAgICBkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbiwKICAgICAgICApLAogICAgICAgIGRlZmF1bHRfc2VjdXJpdHlfc2NoZW1lPVNlY3VyaXR5U2NoZW1lSFRUUCgKICAgICAgICAgICAgIkF1dGhlbnRpY2F0ZXMgYSByZXF1ZXN0IGJ5IHZlcmlmeWluZyBhIEpXVCAoSlNPTiBXZWIgVG9rZW4pIHBhc3NlZCBpbiB0aGUgYEF1dGhvcml6YXRpb25gIEhUVFAgaGVhZGVyLiIsCiAgICAgICAgICAgICJiZWFyZXIiLAogICAgICAgICAgICAiSldUIiwKICAgICAgICApLAogICAgICAgIGV4dHJhX3R5cGVzPVtFeGFtcGxlVHlwZSwgVW5yZWZlcmVuY2VkVHlwZV0sCiAgICAgICAgZXJyb3Jfd3JhcHBlcj1UcnVlLAogICAgKSwKKQpgYGAKClRoZSBmaXJzdCBhcmd1bWVudCB0byBgU3BlY2lmaWNhdGlvbmAgaXMgYSBQeXRob24gY2xhc3MgKGB0eXBlYCkgd2hvc2UgbWV0aG9kcyB3aWxsIGJlIGluc3BlY3RlZCBhbmQgY29udmVydGVkIGludG8gT3BlbkFQSSBlbmRwb2ludCBvcGVyYXRpb25zLiBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIGFkZGl0aW9uYWwgb3B0aW9ucyB0aGF0IGZpbmUtdHVuZSBob3cgdGhlIHNwZWNpZmljYXRpb24gaXMgZ2VuZXJhdGVkLgoKIyMjIERlZmluaW5nIGVuZHBvaW50IG9wZXJhdGlvbnMKCkxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBkZWZpbml0aW9uIG9mIGEgc2ltcGxlIGVuZHBvaW50IGNhbGxlZCBgSm9iTWFuYWdlbWVudGA6CgpgYGBweXRob24KY2xhc3MgSm9iTWFuYWdlbWVudDoKICAgIGRlZiBjcmVhdGVfam9iKHNlbGYsIGl0ZW1zOiBsaXN0W1VSTF0pIC0+IHV1aWQuVVVJRDoKICAgICAgICAuLi4KCiAgICBkZWYgZ2V0X2pvYihzZWxmLCBqb2JfaWQ6IHV1aWQuVVVJRCwgLywgZm9ybWF0OiBGb3JtYXQpIC0+IEpvYjoKICAgICAgICAuLi4KCiAgICBkZWYgcmVtb3ZlX2pvYihzZWxmLCBqb2JfaWQ6IHV1aWQuVVVJRCwgLykgLT4gTm9uZToKICAgICAgICAuLi4KCiAgICBkZWYgdXBkYXRlX2pvYihzZWxmLCBqb2JfaWQ6IHV1aWQuVVVJRCwgLywgam9iOiBKb2IpIC0+IE5vbmU6CiAgICAgICAgLi4uCmBgYAoKVGhlIG5hbWUgb2YgZWFjaCBtZXRob2QgYmVnaW5zIHdpdGggYSBwcmVmaXggc3VjaCBhcyBgY3JlYXRlYCwgYGdldGAsIGByZW1vdmVgIG9yIGB1cGRhdGVgLCBlYWNoIG9mIHdoaWNoIG1hcHMgdG8gYW4gSFRUUCB2ZXJiLCBlLmcuIGBQT1NUYCwgYEdFVGAsIGBERUxFVEVgIG9yIGBQQVRDSGAuIFRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbiBuYW1lIHNlcnZlcyBhcyBhbiBpZGVudGlmaWVyLCBlLmcuIGBqb2JgLiBUaGUgYHNlbGZgIGFyZ3VtZW50IHRvIHRoZSBmdW5jdGlvbiBpcyBpZ25vcmVkLiBPdGhlciBhcmd1bWVudHMgaW5kaWNhdGUgd2hhdCBwYXRoIGFuZCBxdWVyeSBbcGFyYW1ldGVyIG9iamVjdHNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL2xhdGVzdC5odG1sI3BhcmFtZXRlci1vYmplY3QpLCBhbmQgd2hhdCBbSFRUUCByZXF1ZXN0IGJvZHldKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL2xhdGVzdC5odG1sI3JlcXVlc3QtYm9keS1vYmplY3QpIHRoZSBvcGVyYXRpb24gYWNjZXB0cy4KCiMjIyBGdW5jdGlvbiBzaWduYXR1cmVzIGZvciBvcGVyYXRpb25zCgpGdW5jdGlvbiBzaWduYXR1cmVzIGZvciBvcGVyYXRpb25zIG11c3QgaGF2ZSBmdWxsIHR5cGUgYW5ub3RhdGlvbiwgaW5jbHVkaW5nIHBhcmFtZXRlciB0eXBlcyBhbmQgcmV0dXJuIHR5cGUuCgpQeXRob24gW3Bvc2l0aW9uYWwtb25seSBhcmd1bWVudHNdKGh0dHBzOi8vcGVwcy5weXRob24ub3JnL3BlcC0wNTcwLykgbWFwIHRvIHBhdGggcGFyYW1ldGVycy4gUHl0aG9uIHBvc2l0aW9uYWwtb3Ita2V5d29yZCBhcmd1bWVudHMgbWFwIHRvIHF1ZXJ5IHBhcmFtZXRlcnMgaWYgdGhleSBhcmUgb2YgYSBzaW1wbGUgdHlwZSAoZS5nLiBgaW50YCBvciBgc3RyYCkuIElmIGEgY29tcG9zaXRlIHR5cGUgKGUuZy4gYSBjbGFzcywgYSBsaXN0IG9yIGEgdW5pb24pIG9jY3VycyBpbiB0aGUgUHl0aG9uIHBhcmFtZXRlciBsaXN0LCBpdCBpcyB0cmVhdGVkIGFzIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBIVFRQIHJlcXVlc3QgYm9keS4gT25seSBvbmUgY29tcG9zaXRlIHR5cGUgbWF5IGFwcGVhciBpbiB0aGUgcGFyYW1ldGVyIGxpc3QuIFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gaXMgdHJlYXRlZCBhcyB0aGUgSFRUUCByZXNwb25zZSBib2R5LiBJZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBgTm9uZWAsIGl0IGNvcnJlc3BvbmRzIHRvIGFuIEhUVFAgcmVzcG9uc2Ugd2l0aCBubyBwYXlsb2FkIChpLmUuIGEgYENvbnRlbnQtTGVuZ3RoYCBvZiAwKS4KClRoZSBKU09OIHNjaGVtYSBmb3IgdGhlIEhUVFAgcmVxdWVzdCBhbmQgcmVzcG9uc2UgYm9keSBpcyBnZW5lcmF0ZWQgd2l0aCB0aGUgbGlicmFyeSBbanNvbl9zdHJvbmdfdHlwaW5nXShodHRwczovL2dpdGh1Yi5jb20vaHVueWFkaS9zdHJvbmdfdHlwaW5nKSwgYW5kIGlzIGF1dG9tYXRpY2FsbHkgZW1iZWRkZWQgaW4gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBkb2N1bWVudC4KCiMjIyBVc2VyLWRlZmluZWQgb3BlcmF0aW9uIHBhdGgKCkJ5IGRlZmF1bHQsIHRoZSBsaWJyYXJ5IGNvbnN0cnVjdHMgdGhlIG9wZXJhdGlvbiBwYXRoIGZyb20gdGhlIFB5dGhvbiBmdW5jdGlvbiBuYW1lIGFuZCBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycy4gSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gc3VwcGx5IGEgY3VzdG9tIHBhdGggKHJvdXRlKSB1c2luZyB0aGUgYEB3ZWJtZXRob2RgIGRlY29yYXRvcjoKCmBgYHB5dGhvbgpAd2VibWV0aG9kKAogICAgcm91dGU9Ii9wZXJzb24vbmFtZS97ZmFtaWx5fS97Z2l2ZW59IiwKKQpkZWYgZ2V0X3BlcnNvbl9ieV9uYW1lKHNlbGYsIGZhbWlseTogc3RyLCBnaXZlbjogc3RyLCAvKSAtPiBQZXJzb246CiAgICAuLi4KYGBgCgpUaGUgY3VzdG9tIHBhdGggbXVzdCBoYXZlIHBsYWNlaG9sZGVycyBmb3IgYWxsIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzIGluIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUsIGFuZCB2aWNlIHZlcnNhLgoKIyMjIERvY3VtZW50aW5nIG9wZXJhdGlvbnMKClVzZSBQeXRob24gUmVTVCAoUmVTdHJ1Y3R1cmVkIFRleHQpIGRvYy1zdHJpbmdzIHRvIGF0dGFjaCBkb2N1bWVudGF0aW9uIHRvIG9wZXJhdGlvbnM6CgpgYGBweXRob24KZGVmIGdldF9qb2Ioc2VsZiwgam9iX2lkOiB1dWlkLlVVSUQsIC8sIGZvcm1hdDogRm9ybWF0KSAtPiBKb2I6CiAgICAiIiIKICAgIFF1ZXJ5IHN0YXR1cyBpbmZvcm1hdGlvbiBhYm91dCBhIGpvYi4KCiAgICA6cGFyYW0gam9iX2lkOiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGpvYiB0byBxdWVyeS4KICAgIDpyZXR1cm5zOiBTdGF0dXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGpvYi4KICAgIDpyYWlzZXMgTm90Rm91bmRFcnJvcjogVGhlIGpvYiBkb2VzIG5vdCBleGlzdC4KICAgIDpyYWlzZXMgVmFsaWRhdGlvbkVycm9yOiBUaGUgaW5wdXQgaXMgbWFsZm9ybWVkLgogICAgIiIiCiAgICAuLi4KYGBgCgpGaWVsZHMgc3VjaCBhcyBgcGFyYW1gIGFuZCBgcmV0dXJuc2AgaGVscCBkb2N1bWVudCBwYXRoIGFuZCBxdWVyeSBwYXJhbWV0ZXJzLCBIVFRQIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGJvZHkuIFRoZSBmaWVsZCBgcmFpc2VzYCBoZWxwcyBkb2N1bWVudCBlcnJvciByZXNwb25zZXMgYnkgaWRlbnRpZnlpbmcgdGhlIGV4YWN0IHJldHVybiB0eXBlIHdoZW4gYW4gZXJyb3Igb2NjdXJzLiBUaGUgUHl0aG9uIHR5cGUgZm9yIGByZXR1cm5zYCBhbmQgYHJhaXNlc2AgaXMgdHJhbnNsYXRlZCB0byBhIEpTT04gc2NoZW1hIGFuZCBlbWJlZGRlZCBpbiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGRvY3VtZW50LgoKIyMjIFJlcXVlc3QgYW5kIHJlc3BvbnNlIGV4YW1wbGVzCgpPcGVuQVBJIHN1cHBvcnRzIHNwZWNpZnlpbmcgW2V4YW1wbGVzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy9sYXRlc3QuaHRtbCNleGFtcGxlLW9iamVjdCkgZm9yIHRoZSBIVFRQIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGJvZHkgb2YgZW5kcG9pbnQgb3BlcmF0aW9ucy4gVGhpcyBpcyBzdXBwb3J0ZWQgdmlhIHRoZSBgQHdlYm1ldGhvZGAgZGVjb3JhdG9yOgoKYGBgcHl0aG9uCiAgICBAd2VibWV0aG9kKAogICAgICAgIHJvdXRlPSIvbWVtYmVyL25hbWUve2ZhbWlseX0ve2dpdmVufSIsCiAgICAgICAgcmVzcG9uc2VfZXhhbXBsZXM9WwogICAgICAgICAgICBTdHVkZW50KCJTesO2cm55ZXRlZyIsICJMYWpvcyIpLAogICAgICAgICAgICBTdHVkZW50KCJMw7MiLCAiU3plcmFmaW4iKSwKICAgICAgICAgICAgU3R1ZGVudCgiQnJ1Y2tuZXIiLCAiU3ppZ2ZyaWQiKSwKICAgICAgICAgICAgU3R1ZGVudCgiTmFneSIsICJab8OhcmQiKSwKICAgICAgICAgICAgVGVhY2hlcigiTWlra2EiLCAiTWFra2EiLCAiTsOpZ3lzesO2Z2xldMWxIEtlcmVrIEVyZMWRIiksCiAgICAgICAgICAgIFRlYWNoZXIoIlZhY3NrYSIsICJNYXRpIiwgIk7DqWd5c3rDtmdsZXTFsSBLZXJlayBFcmTFkSIpLAogICAgICAgIF0sCiAgICApCiAgICBkZWYgZ2V0X21lbWJlcl9ieV9uYW1lKHNlbGYsIGZhbWlseTogc3RyLCBnaXZlbjogc3RyLCAvKSAtPiBVbmlvbltTdHVkZW50LCBUZWFjaGVyXToKICAgICAgICAuLi4KYGBgCgpBIHJlc3BvbnNlIGV4YW1wbGUgbWF5IGJlIGFuIGV4Y2VwdGlvbiBvciBlcnJvciBjbGFzcyAoYSB0eXBlIHRoYXQgZGVyaXZlcyBmcm9tIGBFeGNlcHRpb25gKS4gVGhlc2UgYXJlIHVzdWFsbHkgc2hvd24gdW5kZXIgYW4gSFRUUCBzdGF0dXMgY29kZSBvZiA0eHggb3IgNXh4LgoKVGhlIFB5dGhvbiBvYmplY3RzIGluIGByZXF1ZXN0X2V4YW1wbGVzYCBhbmQgYHJlc3BvbnNlX2V4YW1wbGVzYCBhcmUgdHJhbnNsYXRlZCB0byBKU09OIHdpdGggdGhlIGxpYnJhcnkgW2pzb25fc3Ryb25nX3R5cGluZ10oaHR0cHM6Ly9naXRodWIuY29tL2h1bnlhZGkvc3Ryb25nX3R5cGluZykuCgojIyMgTWFwcGluZyBmdW5jdGlvbiBuYW1lIHByZWZpeGVzIHRvIEhUVFAgdmVyYnMKClRoZSBmb2xsb3dpbmcgdGFibGUgaWRlbnRpZmllcyB3aGljaCBmdW5jdGlvbiBuYW1lIHByZWZpeGVzIG1hcCB0byB3aGljaCBIVFRQIHZlcmJzOgoKfCBQcmVmaXggfCBIVFRQIHZlcmIgICB8CnwgLS0tLS0tIHwgLS0tLS0tLS0tLS0gfAp8IGNyZWF0ZSB8IFBPU1QgICAgICAgIHwKfCBkZWxldGUgfCBSRU1PVkUgICAgICB8CnwgZG8gICAgIHwgR0VUIG9yIFBPU1QgfAp8IGdldCAgICB8IEdFVCAgICAgICAgIHwKfCBwb3N0ICAgfCBQT1NUICAgICAgICB8CnwgcHV0ICAgIHwgUE9TVCAgICAgICAgfAp8IHJlbW92ZSB8IFJFTU9WRSAgICAgIHwKfCBzZXQgICAgfCBQVVQgICAgICAgICB8CnwgdXBkYXRlIHwgUEFUQ0ggICAgICAgfAoKSWYgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBjb25mbGljdHMgd2l0aCB0aGUgSFRUUCB2ZXJiIChlLmcuIGEgZnVuY3Rpb24gbmFtZSBzdGFydHMgd2l0aCBgZ2V0YCBidXQgaGFzIGEgY29tcG9zaXRlIHR5cGUgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCB3aGljaCBtYXBzIHRvIGEgbm9uLWVtcHR5IEhUVFAgcmVxdWVzdCBib2R5KSwgdGhlIEhUVFAgdmVyYiBpcyBhdXRvbWF0aWNhbGx5IGFkanVzdGVkLgoKIyMjIEFzc29jaWF0aW5nIEhUVFAgc3RhdHVzIGNvZGVzIHdpdGggcmVzcG9uc2UgdHlwZXMKCkJ5IGRlZmF1bHQsIHRoZSBsaWJyYXJ5IGFzc29jaWF0ZXMgc3VjY2VzcyByZXNwb25zZXMgd2l0aCBIVFRQIHN0YXR1cyBjb2RlIDIwMCwgYW5kIGVycm9yIHJlc3BvbnNlcyB3aXRoIEhUVFAgc3RhdHVzIGNvZGUgNTAwLiBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0byBhc3NvY2lhdGUgYW55IFB5dGhvbiB0eXBlIHdpdGggYW55IEhUVFAgc3RhdHVzIGNvZGU6CgpgYGBweXRob24Kc3BlY2lmaWNhdGlvbiA9IFNwZWNpZmljYXRpb24oCiAgICBNeUVuZHBvaW50LAogICAgT3B0aW9ucygKICAgICAgICBzZXJ2ZXI9U2VydmVyKHVybD0iaHR0cDovL2V4YW1wbGUuY29tL2FwaSIpLAogICAgICAgIGluZm89SW5mbygKICAgICAgICAgICAgdGl0bGU9IkV4YW1wbGUgc3BlY2lmaWNhdGlvbiIsCiAgICAgICAgICAgIHZlcnNpb249IjEuMCIsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uPWRlc2NyaXB0aW9uLAogICAgICAgICksCiAgICAgICAgc3VjY2Vzc19yZXNwb25zZXM9ewogICAgICAgICAgICBTdHVkZW50OiBIVFRQU3RhdHVzLkNSRUFURUQsCiAgICAgICAgICAgIFRlYWNoZXI6IEhUVFBTdGF0dXMuQUNDRVBURUQsCiAgICAgICAgfSwKICAgICAgICBlcnJvcl9yZXNwb25zZXM9ewogICAgICAgICAgICBBdXRoZW50aWNhdGlvbkVycm9yOiBIVFRQU3RhdHVzLlVOQVVUSE9SSVpFRCwKICAgICAgICAgICAgQmFkUmVxdWVzdEVycm9yOiA0MDAsCiAgICAgICAgICAgIEludGVybmFsU2VydmVyRXJyb3I6IDUwMCwKICAgICAgICAgICAgTm90Rm91bmRFcnJvcjogSFRUUFN0YXR1cy5OT1RfRk9VTkQsCiAgICAgICAgICAgIFZhbGlkYXRpb25FcnJvcjogIjQwMCIsCiAgICAgICAgfSwKICAgICAgICBlcnJvcl93cmFwcGVyPVRydWUsCiAgICApLAopCmBgYAoKVGhlIGFyZ3VtZW50cyBgc3VjY2Vzc19yZXNwb25zZXNgIGFuZCBgZXJyb3JfcmVzcG9uc2VzYCB0YWtlIGEgZGljdGlvbmFyeSB0aGF0IG1hcHMgdHlwZXMgdG8gc3RhdHVzIGNvZGVzLiBTdGF0dXMgY29kZXMgbWF5IGJlIGludGVnZXJzIChlLmcuIGA0MDBgKSwgc3RyaW5ncyAoZS5nLiBgIjQwMCJgIG9yIGAiNHh4ImApIG9yIFtIVFRQU3RhdHVzXShodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvaHR0cC5odG1sI2h0dHAuSFRUUFN0YXR1cykgZW51bWVyYXRpb24gdmFsdWVzLiBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdGF0dXMgY29kZSBtdXN0IGJlIHZhbGlkIGFzIHBlciB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgo= readmeEtag: '"f896afc900eeb4fcf79e22c548548d79c479c6f3"' readmeLastModified: Mon, 07 Apr 2025 09:44:51 GMT repositoryId: 429913601 description: Generate an OpenAPI specification from a Python class definition created: '2021-11-19T19:34:39Z' updated: '2025-10-09T09:33:33Z' language: Python archived: false stars: 23 watchers: 1 forks: 2 owner: hunyadi logo: https://avatars.githubusercontent.com/u/7794010?v=4 license: MIT repoEtag: '"5256f9dee04a2642768147892c9d4a4b553061eb73eacbf876b7252612db040f"' repoLastModified: Thu, 09 Oct 2025 09:33:33 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/antonk52/swaggerlint v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VybGludAoKYFN3YWdnZXJsaW50YCBoZWxwcyB5b3UgdG8gaGF2ZSBhIGNvbnNpc3RlbnQgQVBJIHN0eWxlIGJ5IGxpbnRpbmcgeW91ciBzd2FnZ2VyIC8gT3BlbkFQSSBTY2hlbWUuCgo8cCBhbGlnbj0iY2VudGVyIj48aW1nIHNyYz0iaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNTgxNzgwOS83MjAxMzQ5NS0wYjQ0MzcwMC0zMjZmLTExZWEtOTU0OS04NGRjZTFlYzg2MWUucG5nIiB3aWR0aD0iNzUwIiBhbHQ9Im5wbSBjb21tYW5kIj48L3A+CgojIyBJbnN0YWxsYXRpb24KCkluc3RhbGwgaXQgaW4geW91ciBwcm9qZWN0CgpgYGBzaApucG0gaW5zdGFsbCBzd2FnZ2VybGludApgYGAKCkluc3RhbGwgaXQgZ2xvYmFsbHkKCmBgYHNoCm5wbSBpbnN0YWxsIC0tZ2xvYmFsIHN3YWdnZXJsaW50CmBgYAoKIyMgVXNhZ2UKCiMjIyBDTEkKCllvdSBjYW4gbGludCB5b3VyIHN3YWdnZXIgc2NoZW1lIGJ5IHBhdGgKCmBgYHNoCnN3YWdnZXJsaW50IC9wYXRoL3RvL3N3YWdnZXIuanNvbgpgYGAKCk9yIGJ5IHByb3ZpZGluZyBhIFVSTAoKYGBgc2gKc3dhZ2dlcmxpbnQgaHR0cHM6Ly8uLi4KYGBgCgojIyMjIENvbmZpZyBmbGFnCgpgc3dhZ2dlcmxpbnRgIHdpbGwgYXV0b21hdGljYWxseSBzZWFyY2ggdXAgdGhlIGRpcmVjdG9yeSB0cmVlIGZvciBhIGBzd2FnZ2VybGludC5jb25maWcuanNgIGZpbGUuIE9yIHlvdSBjYW4gc3BlY2lmeSBpdCBleHBsaWNpdGx5CgpgYGBzaApzd2FnZ2VybGludCAtLWNvbmZpZyAvcGF0aC90by9zd2FnZ2VybGludC5jb25maWcuanMKYGBgCgojIyMgTm9kZWpzCgpgYGBqcwpjb25zdCB7c3dhZ2dlcmxpbnR9ID0gcmVxdWlyZSgnc3dhZ2dlcmxpbnQnKTsKY29uc3QgY29uZmlnID0gcmVxdWlyZSgnLi9jb25maWdzL3N3YWdnZXJsaW50LmNvbmZpZy5qcycpOwpjb25zdCBzd2FnZ2VyU2NoZW1lID0gcmVxdWlyZSgnLi9zd2FnZ2VyLmpzb24nKTsKCmNvbnN0IHJlc3VsdCA9IHN3YWdnZXJsaW50KHN3YWdnZXJTY2hlbWUsIGNvbmZpZyk7Cgpjb25zb2xlLmxvZyhyZXN1bHQpOyAvLyBhbiBhcnJheSBvciBlcnJvcnMKCi8qKgogKiBbewogKiAgIG5hbWU6ICdzdHJpbmcnLCAvLyBydWxlIG5hbWUKICogICBtc2c6ICdzdHJpbmcnLCAvLyBtZXNzYWdlIGZyb20gdGhlIHJ1bGUgY2hlY2tlcgogKiAgIGxvY2F0aW9uOiBbJ3BhdGgnLCAndG8nLCAnZXJyb3InXSAvLyB3aGF0IGNhdXNlZCBhbiBlcnJvcgogKiB9XQogKi8KYGBgCgojIyMgRG9ja2VyIGltYWdlCgpJZiB5b3UgZG8gbm90IGhhdmUgbm9kZWpzIGluc3RhbGxlZCB5b3UgY2FuIHVzZSB0aGUgW3N3YWdnZXJsaW50IGRvY2tlciBpbWFnZV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2FudG9uazUyL2FscGluZS1zd2FnZ2VybGludCkuCgojIyBDb25maWcKCmBgYGpzCi8vIHN3YWdnZXJsaW50LmNvbmZpZy5qcwptb2R1bGUuZXhwb3J0cyA9IHsKICAgIHJ1bGVzOiB7CiAgICAgICAgJ29iamVjdC1wcm9wLWNhc2luZyc6IFsnY2FtZWwnXSwKICAgICAgICAncHJvcGVydGllcy1mb3Itb2JqZWN0LXR5cGUnOiB0cnVlLAogICAgICAgICdsYXRpbi1kZWZpbml0aW9ucy1vbmx5JzogdHJ1ZSwKICAgIH0sCn07CmBgYAoKIyMgUnVsZXMKCllvdSBjYW4gc2V0IGFueSBydWxlIHZhbHVlIHRvIGBmYWxzZWAgdG8gZGlzYWJsZSBpdCBvciB0byBgdHJ1ZWAgdG8gZW5hYmxlIGFuZCBzZXQgaXRzIHNldHRpbmcgdG8gZGVmYXVsdCB2YWx1ZS4KCjwhLS0gR0VORVJBVEVEX1NUQVJUKGlkOnJ1bGVzdGFibGU7aGFzaDo3OGYzYjcyNGQ4ZWY2NjdhNGJjZWYyMGQ2YzkyZDIyZSkgVGhpcyBpcyBnZW5lcmF0ZWQgY29udGVudCwgZG8gbm90IG1vZGlmeSBieSBoYW5kLCB0byByZWdlbmVyYXRlIHJ1biAibnBtIHJ1biB1cGRhdGVEb2NzIiAtLT4KCnwgcnVsZSBuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRlZmF1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBbYGV4cHJlc3NpdmUtcGF0aC1zdW1tYXJ5YF0oLi9zcmMvcnVsZXMvZXhwcmVzc2l2ZS1wYXRoLXN1bW1hcnkvcmVhZG1lLm1kKSAgICAgICAgICAgICAgIHwgRW5mb3JjZXMgYW4gaW50ZW50aW9uYWwgcGF0aCBzdW1tYXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgW2BsYXRpbi1kZWZpbml0aW9ucy1vbmx5YF0oLi9zcmMvcnVsZXMvbGF0aW4tZGVmaW5pdGlvbnMtb25seS9yZWFkbWUubWQpICAgICAgICAgICAgICAgICB8IEJhbnMgbm9uIExhdGluIGNoYXJhY3RlcnMgdXNhZ2UgaW4gZGVmaW5pdGlvbiBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFsicGxhY2Vob2xkZXJfdG9fYmVfcmVtb3ZlZCIseyJpZ25vcmUiOltdfV0gfAp8IFtgbm8tZW1wdHktb2JqZWN0LXR5cGVgXSguL3NyYy9ydWxlcy9uby1lbXB0eS1vYmplY3QtdHlwZS9yZWFkbWUubWQpICAgICAgICAgICAgICAgICAgICAgfCBPYmplY3QgdHlwZXMgaGF2ZSB0byBoYXZlIHRoZWlyIHByb3BlcnRpZXMgc3BlY2lmaWVkIGV4cGxpY2l0bHkgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBbYG5vLWV4dGVybmFsLXJlZnNgXSguL3NyYy9ydWxlcy9uby1leHRlcm5hbC1yZWZzL3JlYWRtZS5tZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRm9yYmlkcyB0aGUgdXNhZ2Ugb2YgZXh0ZXJuYWwgUmVmZXJlbmNlT2JqZWN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgW2Buby1pbmxpbmUtZW51bXNgXSguL3NyYy9ydWxlcy9uby1pbmxpbmUtZW51bXMvcmVhZG1lLm1kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVudW1zIG11c3QgYmUgaW4gYERlZmluaXRpb25zT2JqZWN0YCBvciBgQ29tcG9uZW50c09iamVjdGAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFtgbm8tcmVmLXByb3BlcnRpZXNgXSguL3NyYy9ydWxlcy9uby1yZWYtcHJvcGVydGllcy9yZWFkbWUubWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEaXNhbGxvd3MgdG8gaGF2ZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMgaW4gUmVmZXJlbmNlIG9iamVjdHMgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBbYG5vLXNpbmdsZS1hbGxvZmBdKC4vc3JjL3J1bGVzL25vLXNpbmdsZS1hbGxvZi9yZWFkbWUubWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT2JqZWN0IHR5cGVzIHNob3VsZCBub3QgaGF2ZSBhIHJlZHVuZGFudCBzaW5nbGUgYGFsbE9mYCBwcm9wZXJ0eSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgW2Buby10cmFpbGluZy1zbGFzaGBdKC4vc3JjL3J1bGVzL25vLXRyYWlsaW5nLXNsYXNoL3JlYWRtZS5tZCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVSTHMgbXVzdCBOT1QgZW5kIHdpdGggYSBzbGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFtgb2JqZWN0LXByb3AtY2FzaW5nYF0oLi9zcmMvcnVsZXMvb2JqZWN0LXByb3AtY2FzaW5nL3JlYWRtZS5tZCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBDYXNpbmcgZm9yIHlvdXIgb2JqZWN0IHByb3BlcnR5IG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbImNhbWVsIl0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBbYG9ubHktdmFsaWQtbWltZS10eXBlc2BdKC4vc3JjL3J1bGVzL29ubHktdmFsaWQtbWltZS10eXBlcy9yZWFkbWUubWQpICAgICAgICAgICAgICAgICAgIHwgQ2hlY2tzIG1pbWUgdHlwZXMgYWdhaW5zdCBrbm93biBmcm9tIFtgbWltZS1kYmBdKGh0dHBzOi8vbnBtLmltL21pbWUtZGIpICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgW2BwYXJhbWV0ZXItY2FzaW5nYF0oLi9zcmMvcnVsZXMvcGFyYW1ldGVyLWNhc2luZy9yZWFkbWUubWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENhc2luZyBmb3IgeW91ciBwYXJhbWV0ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFsiY2FtZWwiLHsiaGVhZGVyIjoia2ViYWIifV0gICAgICAgICAgICAgICAgfAp8IFtgcGF0aC1wYXJhbS1yZXF1aXJlZC1maWVsZGBdKC4vc3JjL3J1bGVzL3BhdGgtcGFyYW0tcmVxdWlyZWQtZmllbGQvcmVhZG1lLm1kKSAgICAgICAgICAgfCBIZWxwcyB0byBrZWVwIGNvbnNpc3RlbnRseSBzZXQgb3B0aW9uYWwgYHJlcXVpcmVkYCBwcm9wZXJ0eSBpbiBwYXRoIHBhcmFtZXRlcnMgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBbYHJlcXVpcmVkLW9wZXJhdGlvbi10YWdzYF0oLi9zcmMvcnVsZXMvcmVxdWlyZWQtb3BlcmF0aW9uLXRhZ3MvcmVhZG1lLm1kKSAgICAgICAgICAgICAgIHwgQWxsIG9wZXJhdGlvbnMgbXVzdCBoYXZlIHRhZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgW2ByZXF1aXJlZC1wYXJhbWV0ZXItZGVzY3JpcHRpb25gXSguL3NyYy9ydWxlcy9yZXF1aXJlZC1wYXJhbWV0ZXItZGVzY3JpcHRpb24vcmVhZG1lLm1kKSB8IEFsbCBwYXJhbWV0ZXJzIG11c3QgaGF2ZSBkZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFtgcmVxdWlyZWQtdGFnLWRlc2NyaXB0aW9uYF0oLi9zcmMvcnVsZXMvcmVxdWlyZWQtdGFnLWRlc2NyaXB0aW9uL3JlYWRtZS5tZCkgICAgICAgICAgICAgfCBBbGwgdGFncyBtdXN0IGhhdmUgZGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCjwhLS0gR0VORVJBVEVEX0VORChpZDpydWxlc3RhYmxlKSAtLT4KCiMjIERvY3VtZW50YXRpb24KCi0gICBbSG93IHRvIHdyaXRlIGEgcnVsZV0oLi9kb2NzL2hvdy10by13cml0ZS1hLXJ1bGUubWQpCgojIyMgQWNrbm93bGVkZ21lbnRzCgpUaGlzIHRvb2wgaGFzIGJlZW4gaW5zcGlyZWQgYnkgYWxyZWFkeSBleGlzdGluZyBzd2FnZ2VyIHZhbGlkYXRpb24gY2hlY2tlcnM6CgotICAgW2FwaSBsaW50XShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9hcGlsaW50KQotICAgW3NwZWNjeV0oaHR0cHM6Ly9naXRodWIuY29tL3dld29yay9zcGVjY3kpCi0gICBbemFsbHldKGh0dHBzOi8vZ2l0aHViLmNvbS96YWxhbmRvL3phbGx5KQotICAgW29wZW5hcGktdmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vSUJNL29wZW5hcGktdmFsaWRhdG9yKQo= readmeEtag: '"43e61a83ca19a938628f274362a0f9069a40ac9e"' readmeLastModified: Fri, 10 Mar 2023 13:40:44 GMT repositoryId: 227476747 description: Keep your API consistent created: '2019-12-11T23:03:15Z' updated: '2023-08-22T16:29:55Z' language: TypeScript archived: false stars: 20 watchers: 1 forks: 1 owner: antonk52 logo: https://avatars.githubusercontent.com/u/5817809?v=4 repoEtag: '"7e1db7f844552fb527e7a935c474680eea29615a4abb57ba4804ad7fed36720e"' repoLastModified: Tue, 22 Aug 2023 16:29:55 GMT foundInMaster: true category: Description Validators id: ab3e4e31e5204b176458f2b5fc9126e7 - source: openapi3 tags repository: https://github.com/mockoon/mockoon.com v3: true repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL21vY2tvb24uY29tIiBhbHQ9Im1vY2tvb24gbG9nbyI+CiAgICA8aW1nIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiBzcmM9Imh0dHBzOi8vbW9ja29vbi5jb20vaW1hZ2VzL2xvZ28tc3F1YXJlLXdlYnNpdGUucG5nIj4KICA8L2E+CiAgPGJyPgogIDxhIGhyZWY9Imh0dHBzOi8vbW9ja29vbi5jb20vZG93bmxvYWQvIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9Eb3dubG9hZCUyMGFwcC1Hby1ncmVlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmY29sb3JCPTE5OTdjNiIvPjwvYT4KICA8YSBocmVmPSJodHRwczovL21vY2tvb24uY29tLyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvV2Vic2l0ZS1Hby1ncmVlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmY29sb3JCPTE5OTdjNiIvPjwvYT4KICA8YSBocmVmPSJodHRwczovL21vY2tvb24uY29tL25ld3NsZXR0ZXIvIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9OZXdzbGV0dGVyLVN1YnNjcmliZS1ncmVlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUiLz48L2E+CiAgPGJyPgogIDxicj4KICA8aDE+TW9ja29vbidzIHdlYnNpdGUgcmVwb3NpdG9yeTwvaDE+CjwvZGl2PgoKVGhpcyByZXBvc2l0b3J5IGlzIGhvbWUgb2YgTW9ja29vbidzIGRvY3VtZW50YXRpb24sIHR1dG9yaWFscyBhbmQgYmxvZyBwb3N0cy4KCi0tLQoKIyMgU3VwcG9ydC9mZWVkYmFjawoKWW91IGNhbiBkaXNjdXNzIGFsbCB0aGluZ3MgcmVsYXRlZCB0byBNb2Nrb29uLCBhbmQgYXNrIGZvciBoZWxwLCBvbiB0aGUgW29mZmljaWFsIGNvbW11bml0eV0oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vbW9ja29vbi9kaXNjdXNzaW9ucykuIEl0J3MgYWxzbyBhIGdvb2QgcGxhY2UgdG8gZGlzY3VzcyBidWdzIGFuZCBmZWF0dXJlIHJlcXVlc3RzIGJlZm9yZSBvcGVuaW5nIGFuIGlzc3VlIG9uIHRoaXMgcmVwb3NpdG9yeS4KCiMjIENvbnRyaWJ1dGluZwoKSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIGNvbnRyaWJ1dGluZyB0byBNb2Nrb29uIHdlYnNpdGUgYW5kIGRvY3VtZW50YXRpb24sIHBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGUgW2NvbnRyaWJ1dGluZyBndWlkZWxpbmVzXShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi9tb2Nrb29uLmNvbS9ibG9iL21haW4vQ09OVFJJQlVUSU5HLm1kKS4KClBsZWFzZSBhbHNvIHRha2UgYSBsb29rIGF0IG91ciBbQ29kZSBvZiBDb25kdWN0XShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi8uZ2l0aHViL2Jsb2IvbWFpbi9DT0RFX09GX0NPTkRVQ1QubWQpLgoKIyMgRG9jdW1lbnRhdGlvbgoKWW91IHdpbGwgZmluZCBNb2Nrb29uJ3MgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vbW9ja29vbi5jb20vZG9jcy9sYXRlc3QvKSBvbiB0aGUgb2ZmaWNpYWwgd2Vic2l0ZS4gSXQgY292ZXJzIE1vY2tvb24ncyBtb3N0IGNvbXBsZXggZmVhdHVyZXMuIEZlZWwgZnJlZSB0byBjb250cmlidXRlIG9yIGFzayBmb3IgbmV3IHRvcGljcyB0byBiZSBjb3ZlcmVkLgoKIyMgUm9hZG1hcAoKSWYgeW91IHdhbnQgdG8ga25vdyB3aGF0IHdpbGwgYmUgY29taW5nIGluIHRoZSBuZXh0IHJlbGVhc2UgeW91IGNhbiBjaGVjayB0aGUgZ2xvYmFsIFtSb2FkbWFwXShodHRwczovL21vY2tvb24uY29tL3B1YmxpYy1yb2FkbWFwLykgb3IgW3N1YnNjcmliZSB0byBvdXIgbmV3c2xldHRlcl0oaHR0cHM6Ly9tb2Nrb29uLmNvbS9uZXdzbGV0dGVyLykuCg== readmeEtag: '"e2d0f3d2c5ac5f13bc35498c9d5136cf56c2ce77"' readmeLastModified: Tue, 09 Sep 2025 20:50:44 GMT repositoryId: 98350934 description: Mockoon application official website repository and documentation created: '2017-07-25T21:19:22Z' updated: '2026-02-05T16:38:15Z' language: TypeScript archived: false stars: 24 watchers: 1 forks: 18 owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: MIT repoEtag: '"d8c641a5b88556822827bc8d5ce0052cb7223e16bf4c347c7090045f7928ba41"' repoLastModified: Thu, 05 Feb 2026 16:38:15 GMT foundInMaster: true category: Testing id: 84d3391fa9deedcd6398666ba504eb78 - source: openapi3 tags repository: https://github.com/orsinium-labs/valdo v3: true id: 65eda01d79d1e4a40435ef8f687e6ff2 repositoryMetadata: base64Readme: >- IyB2YWxkbwoKWyBb8J+TmiBkb2NzXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9vcnNpbml1bS1sYWJzL3ZhbGRvL3ZhbGRvKSBdIFsgW/CfkJkgZ2l0aHViXShodHRwczovL2dpdGh1Yi5jb20vb3JzaW5pdW0tbGFicy92YWxkbykgXQoKR28gcGFja2FnZSBmb3IgdmFsaWRhdGluZyBKU09OLiBDYW4gZ2VuZXJhdGUgW0pTT04gU2NoZW1hXShodHRwczovL2pzb24tc2NoZW1hLm9yZy9vdmVydmlldy93aGF0LWlzLWpzb25zY2hlbWEpICgxMDAlIGNvbXBhdGlibGUgd2l0aCBbT3BlbkFQSV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vKSksIHByb2R1Y2VzIHVzZXItZnJpZW5kbHkgZXJyb3JzLCBzdXBwb3J0cyB0cmFuc2xhdGlvbnMuCgpZb3UgY291bGQgd3JpdGUgT3BlbkFQSSBkb2N1bWVudGF0aW9uIGJ5IGhhbmQgKHdoaWNoIGlzIHZlcnkgcGFpbmZ1bCkgYW5kIHRoZW4gdXNlIGl0IHRvIHZhbGlkYXRlIHVzZXIgaW5wdXQgaW4geW91ciBIVFRQIHNlcnZpY2UsIGJ1dCB0aGVuIGVycm9yIG1lc3NhZ2VzIGFyZSB2ZXJ5IGNvbmZ1c2luZywgbm90IHVzZXItZnJpZW5kbHksIGFuZCBvbmx5IGluIEVuZ2xpc2guIE9yIHlvdSBjb3VsZCB3cml0ZSBpbnB1dCB2YWxpZGF0aW9uIGJ5IGhhbmQgYW5kIHRoZW4gbWFpbnRhaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBzZXBhcmF0ZWx5IGJ1dCB0aGVuIHRoZSB0d28gd2lsbCBldmVudHVhbGx5IGRyaWZ0IGFuZCB5b3VyIGRvY3VtZW50YXRpb24gd2lsbCBiZSBhIGxpZS4gVmFsZG8gc29sdmVzIGFsbCB0aGVzZSBwcm9ibGVtczogd3JpdGUgdmFsaWRhdGlvbiBvbmNlIHVzaW5nIGEgcmVhbCBwcm9ncmFtbWluZyBsYW5ndWFnZSwgdXNlIGl0IGV2ZXJ5d2hlcmUuCgpGZWF0dXJlczoKCiogTWVjaGFuaXNtIHRvIHRyYW5zbGF0ZSBlcnJvciBtZXNzYWdlcy4KKiBPdXQtb2YtdGhlLWJveCB0cmFuc2xhdGlvbnMgZm9yIHNvbWUgbGFuZ3VhZ2VzLgoqIFN1cHBvcnRzIHRoZSBsYXRlc3QgSlNPTiBTY2hlbWEgc3BlY2lmaWNhdGlvbiAoMjAyMC0xMikuCiogUHVyZSBHby4KKiBObyBjb2RlIGdlbmVyYXRpb24sIG5vIHJlZmxlY3Rpb24sIG5vIHVuc2FmZSBjb2RlLgoqIFVzZXItZnJpZW5kbHkgZXJyb3IgbWVzc2FnZXMuCiogQ29uY3VycmVuY3ktc2FmZSwgbm8gZ2xvYmFsIHN0YXRlLgoqIFN0cmljdCBieSBkZWZhdWx0LCB3aXRob3V0IGltcGxpY2l0IHR5cGUgY2FzdGluZy4KKiBUeXBlLXNhZmUsIHRoYW5rcyB0byBnZW5lcmljcy4KCiMjIEluc3RhbGxhdGlvbgoKYGBgYmFzaApnbyBnZXQgZ2l0aHViLmNvbS9vcnNpbml1bS1sYWJzL3ZhbGRvCmBgYAoKIyMgVXNhZ2UKCmBgYGdvCnZhbGlkYXRvciA6PSB2YWxkby5PYmplY3QoCiAgICB2YWxkby5Qcm9wZXJ0eSgibmFtZSIsIHZhbGRvLlN0cmluZyh2YWxkby5NaW5MZW4oMSkpKSwKICAgIHZhbGRvLlByb3BlcnR5KCJhZG1pbiIsIHZhbGRvLkJvb2woKSksCikKCi8vIHZhbGlkYXRlIEpTT04KaW5wdXQgOj0gW11ieXRlKGB7Im5hbWUiOiAiYXJhZ29ybiIsICJhZG1pbiI6IHRydWV9YCkKZXJyIDo9IHZhbGRvLlZhbGlkYXRlKHZhbGlkYXRvciwgcmF3KQoKLy8gdmFsaWRhdGUgYW5kIHVubWFyc2hhbCBKU09OCnR5cGUgVXNlciBzdHJ1Y3QgewogICAgTmFtZSAgc3RyaW5nIGBqc29uOiJuYW1lImAKICAgIEFkbWluIGJvb2wgICBganNvbjoiYWRtaW4iYAp9CnVzZXIsIGVyciA6PSB2YWxkby5Vbm1hcnNoYWxbVXNlcl0odmFsaWRhdG9yLCBpbnB1dCkKCi8vIGdlbmVyYXRlIEpTT04gU2NoZW1hCnNjaGVtYSA6PSB2YWxkby5TY2hlbWEodmFsaWRhdG9yKQpgYGAKClNlZSBbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vb3JzaW5pdW0tbGFicy92YWxkby92YWxkbykgZm9yIG1vcmUuCg== readmeEtag: '"095879191918ac2ed7ba8727b83b8c39a19a1b6b"' readmeLastModified: Fri, 31 Oct 2025 03:42:26 GMT repositoryId: 809004064 description: >- ✅ Go package for validating JSON. It's the first Go package that can generate JSON Schema (OpeanAPI-compatible), produces user-friendly errors, and supports translations. created: '2024-06-01T12:09:15Z' updated: '2025-11-20T15:38:11Z' language: Go archived: false stars: 19 watchers: 2 forks: 0 owner: orsinium-labs logo: https://avatars.githubusercontent.com/u/62876761?v=4 license: MIT repoEtag: '"c019b157235240de45bca145da09d171d199b37ee85ec1a81aeace7faad28e8f"' repoLastModified: Thu, 20 Nov 2025 15:38:11 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/lusingander/topi v3: true repositoryMetadata: base64Readme: >- IyB0b3BpCgpUZXJtaW5hbCBPcGVuQVBJIGRvY3VtZW50YXRpb24gdmlld2VyIPCfkJAKCiMjIEFib3V0Cgo+IHRvcGkgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQuLi4g8J+QkAoKdG9waSBpcyB0aGUgZG9jdW1lbnRhdGlvbiB2aWV3ZXIgZm9yIE9wZW5BUEkgdjMgZGVmaW5pdGlvbnMgaW4gdGhlIHRlcm1pbmFsLgoKPGltZyBzcmM9Ii4vaW1nL2ltYWdlLmdpZiIgd2lkdGg9ODAwPgoKKFRoaXMgaW1hZ2Ugc2hvdyBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL3Jlc3QtYXBpLWRlc2NyaXB0aW9uKQoKIyMgSW5zdGFsbGF0aW9uCgpgJCBnbyBpbnN0YWxsIGdpdGh1Yi5jb20vbHVzaW5nYW5kZXIvdG9waUBsYXRlc3RgCgoocmVxdWlyZSBHbyAxLjE4KykKCiMjIFVzYWdlCgpgJCB0b3BpIDxwYXRoPmAKCj4gYHBhdGhgIGNhbiBiZSBsb2NhbCBmaWxlIHBhdGggb3IgcmVtb3RlIFVSTC4KCiMjIyBLZXliaW5kaW5ncwoKIyMjIyBDb21tb24KCmNvbW1vbiBrZXliaW5kaW5ncyBmb3IgYWxsIHBhZ2VzCgp8S2V5fERlc2NyaXB0aW9ufAp8LXwtfAp8PGtiZD5CYWNrc3BhY2U8L2tiZD58YmFjayB0byBwZXJ2IHBhZ2V8Cnw8a2JkPkN0cmwrYzwva2JkPnxxdWl0fAp8PGtiZD4/PC9rYmQ+fHNob3cgaGVscCBwYWdlfAoKIyMjIyBMaXN0IHBhZ2UKCmtleWJpbmRpbmdzIGZvciBsaXN0LXN5bGUgcGFnZXMgCgp8S2V5fERlc2NyaXB0aW9ufAp8LXwtfAp8PGtiZD5qPC9rYmQ+fGN1cnNvciBkb3dufAp8PGtiZD5rPC9rYmQ+fGN1cnNvciB1cHwKfDxrYmQ+Zjwva2JkPiA8a2JkPmw8L2tiZD58bmV4dCBwYWdlfAp8PGtiZD5iPC9rYmQ+IDxrYmQ+aDwva2JkPnxwcmV2IHBhZ2V8Cnw8a2JkPmc8L2tiZD58Z28gdG8gc3RhcnR8Cnw8a2JkPkc8L2tiZD58Z28gdG8gZW5kfAp8PGtiZD4vPC9rYmQ+fEVudGVyIGZpbHRlcmluZyBtb2RlfAp8PGtiZD5FbnRlcjwva2JkPnwoZGVmYXVsdCkgc2VsZWN0IGl0ZW0sIChmaWx0ZXJpbmcpIGFwcGx5IGZpbHRlcnwKfDxrYmQ+RXNjPC9rYmQ+fChmaWx0ZXJpbmcpIGNhbmNlbCBmaWx0ZXIsIChmaWx0ZXIgYXBwbGllZCkgcmVtb3ZlIGZpbHRlcnwKCiMjIyMgRG9jdW1lbnQgcGFnZQoKa2V5YmluZGluZ3MgZm9yIGRvY3VtZW50IHBhZ2VzIAoKfEtleXxEZXNjcmlwdGlvbnwKfC18LXwKfDxrYmQ+ajwva2JkPnxwYWdlIGRvd24gb25lIGxpbmV8Cnw8a2JkPms8L2tiZD58cGFnZSB1cCBvbmUgbGluZXwKfDxrYmQ+Zjwva2JkPnxwYWdlIGRvd258Cnw8a2JkPmI8L2tiZD58cGFnZSB1cHwKfDxrYmQ+ZDwva2JkPnxoYWxmIHBhZ2UgZG93bnwKfDxrYmQ+dTwva2JkPnxoYWxmIHBhZ2UgdXB8Cnw8a2JkPlRhYjwva2JkPnxzZWxlY3QgbGlua3wKfDxrYmQ+eDwva2JkPnxvcGVuIHNlbGVjdGluZyBsaW5rfAoKc3BlY2lmaWMgdG8gdGhlIGNyZWRpdHMgcGFnZQoKfEtleXxEZXNjcmlwdGlvbnwKfC18LXwKfDxrYmQ+dDwva2JkPnx0b2dnbGUgY3JlZGl0cyBsaXN0fAoKIyMgTGljZW5zZQoKTUlUCg== readmeEtag: '"ea4e07f1cf4fd5b52dc4b092a72088a0f71a95bf"' readmeLastModified: Sun, 26 Jun 2022 07:45:32 GMT repositoryId: 463991716 description: Terminal OpenAPI documentation viewer 🐐 created: '2022-02-26T23:31:07Z' updated: '2024-11-11T01:46:26Z' language: Go archived: false stars: 19 watchers: 1 forks: 0 owner: lusingander logo: https://avatars.githubusercontent.com/u/31386431?v=4 license: MIT repoEtag: '"4ba262133c5670d5e0d72db5d0eba0368ee12fd04b22e191b9269e81273340bd"' repoLastModified: Mon, 11 Nov 2024 01:46:26 GMT foundInMaster: true category: Documentation id: 236a30079db63d08dcedfb42b08f615d - source: openapi3 tags repository: https://github.com/mikekonan/go-types v3: true repositoryMetadata: base64Readme: >- WyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL21pa2Vrb25hbi9nby10eXBlcyldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9taWtla29uYW4vZ28tdHlwZXMpIFshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kuY29tL21pa2Vrb25hbi9nby10eXBlcy5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL3RyYXZpcy1jaS5jb20vbWlrZWtvbmFuL2dvLXR5cGVzKSBbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvbWlrZWtvbmFuL2dvLXR5cGVzL2JyYW5jaC9tYWluL2dyYXBoL2JhZGdlLnN2Zz90b2tlbj04M1EwNE9XNEkxKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL21pa2Vrb25hbi9nby10eXBlcykKIyBnby10eXBlcwpUaGlzIGxpYnJhcnkgaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHRoZSBwdXJwb3NlIHRvIGZhY2lsaXRhdGUgdGhlIHN0b3JlLCB2YWxpZGF0aW9uLCBhbmQgdHJhbnNmZXIgb2YgR28gSVNPLTMxNjYvSVNPLTQyMTcvdGltZXpvbmVzL2VtYWlscy9VUkwgdHlwZXMuIFRoZXJlIGlzIGEgW29wZW5hcGkzIHNwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWtla29uYW4vZ28tdHlwZXMvYmxvYi9tYWluL3N3YWdnZXIueWFtbCkgb2YgdGhhdCB0eXBlIGFuZCBtYWtlIHlvdSBhYmxlIHRvIGluY2x1ZGUgaXQgaW50byB5b3VyIHNwZWMuIEFsbCB0eXBlcyBoYXMgb3duIG96em8uVmFsaWRhdGUsIGpzb24uVW5tYXJzaGFsZXIsIFN0cmluZ2VyIGFuZCBkcml2ZXIuVmFsdWVyIGltcGxlbWVudGF0aW9ucy4KCiMgSW5zdGFsbGF0aW9uCmBgYGJhc2gKZ28gZ2V0IGdpdGh1Yi5jb20vbWlrZWtvbmFuL2dvLXR5cGVzL3YyCmBgYAojIFVzYWdlOgoKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAoJImVuY29kaW5nL2pzb24iCgkiZm10IgoJImxvZyIKCgl2YWxpZGF0aW9uICJnaXRodWIuY29tL2dvLW96em8vb3p6by12YWxpZGF0aW9uL3Y0IgoJImdpdGh1Yi5jb20vbWlrZWtvbmFuL2dvLXR5cGVzL3YyL2NvdW50cnkiCgkiZ2l0aHViLmNvbS9taWtla29uYW4vZ28tdHlwZXMvdjIvY291bnRyeS9hbHBoYTIiCgkiZ2l0aHViLmNvbS9taWtla29uYW4vZ28tdHlwZXMvdjIvY291bnRyeS9hbHBoYTMiCgkiZ2l0aHViLmNvbS9taWtla29uYW4vZ28tdHlwZXMvdjIvbGFuZ3VhZ2UiCgkiZ2l0aHViLmNvbS9taWtla29uYW4vZ28tdHlwZXMvdjIvY291bnRyeS9uYW1lIgoJImdpdGh1Yi5jb20vbWlrZWtvbmFuL2dvLXR5cGVzL3YyL2N1cnJlbmN5IgoJImdpdGh1Yi5jb20vbWlrZWtvbmFuL2dvLXR5cGVzL3YyL2N1cnJlbmN5L2NvZGUiCgkiZ2l0aHViLmNvbS9taWtla29uYW4vZ28tdHlwZXMvdjIvcGhvbmUiCgkiZ2l0aHViLmNvbS9taWtla29uYW4vZ28tdHlwZXMvdjIvcG9zdGFsX2NvZGUiCikKCi8vIDEuIHVzZSBpbiB5b3VyIHN0cnVjdHMKdHlwZSBVc2VyIHN0cnVjdCB7CglOYW1lICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgIGBqc29uOiJuYW1lIiBkYjoibmFtZSJgCglDb3VudHJ5ICAgICAgICAgY291bnRyeS5BbHBoYTJDb2RlICAgIGBqc29uOiJjb3VudHJ5IiBkYjoiY291bnRyeSJgCglDdXJyZW5jeSAgICAgICAgY3VycmVuY3kuQ29kZSAgICAgICAgIGBqc29uOiJjdXJyZW5jeSIgZGI6ImN1cnJlbmN5ImAKCUxhbmd1YWdlICAgICAgICBsYW5ndWFnZS5BbHBoYTJDb2RlICAgYGpzb246Imxhbmd1YWdlIiBkYjoibGFuZ3VhZ2UiYAoJUGhvbmUgICAgICAgICAgIHBob25lLk51bWJlciAgICAgICAgICBganNvbjoicGhvbmUiIGRiOiJwaG9uZSJgCglDb3VudHJ5RGlhbENvZGUgcGhvbmUuRGlhbENvZGUgICAgICAgIGBqc29uOiJkaWFsQ29kZSIgZGI6ImRpYWxDb2RlImAKCVBvc3RhbENvZGUgICAgICBwb3N0YWxjb2RlLlBvc3RhbENvZGUgYGpzb246InBvc3RhbENvZGUiIGRiOiJwb3N0YWxDb2RlImAKfQoKZnVuYyBtYWluKCkgewoJLy8gMi4gdXNlIGluIHlvdXIgd2lyZQoJdXNlciA6PSBVc2Vye30KCV8gPSBqc29uLlVubWFyc2hhbChbXWJ5dGUoYHsibmFtZSI6Im5hbWUiLCAiY291bnRyeSI6ICJDQSIsICJjdXJyZW5jeSI6ICJDQUQiLCAibGFuZ3VhZ2UiOiAiZnIiLCAicGhvbmUiOiAiMTIzNDU2Nzg5IiwgImRpYWxDb2RlIjogIjEifWApLCAmdXNlcikKCgkvLyAzLiBjaGVjayBpcyBzZXQKCXVzZXIuQ291bnRyeS5Jc1NldCgpCgl1c2VyLkN1cnJlbmN5LklzU2V0KCkKCXVzZXIuTGFuZ3VhZ2UuSXNTZXQoKQoKCS8vIDQuIHZhbGlkYXRlIHVzaW5nIG96em8tdmFsaWRhdGlvbgoJaWYgZXJyIDo9IHZhbGlkYXRpb24uVmFsaWRhdGVTdHJ1Y3QoJnVzZXIsIHZhbGlkYXRpb24uRmllbGQoJnVzZXIuQ291bnRyeSksIHZhbGlkYXRpb24uRmllbGQoJnVzZXIuQ3VycmVuY3kpKTsgZXJyICE9IG5pbCB7CiAgICAgICAgICAgIGxvZy5GYXRhbChlcnIpCgl9CgoJLy8gNS4gbG9va3VwIGJ5IGFscGhhMiwgYWxwaGEzLCBjb3VudHJ5IG5hbWUKCWlmIHVzZXJDb3VudHJ5LCBvayA6PSBjb3VudHJ5LkJ5QWxwaGEyQ29kZSh1c2VyLkNvdW50cnkpOyBvayB7CiAgICAgICAgICAgIGZtdC5QcmludGYoImNvdW50cnkgbmFtZSAtICclcycsIGFscGhhLTIgLSAnJXMnLCBhbHBoYS0zIC0gJyVzJyIsIHVzZXJDb3VudHJ5Lk5hbWUoKSwgdXNlckNvdW50cnkuQWxwaGEyQ29kZSgpLCB1c2VyQ291bnRyeS5BbHBoYTNDb2RlKCkpCgl9CgoJLy8gNi4gbG9va3VwIGJ5IDIgYW5kIDMgY2hhciBjb2RlcywgbGFuZ3VhZ2UgbmFtZQoJaWYgdXNlckxhbmd1YWdlLCBvayA6PSBsYW5ndWFnZS5CeUFscGhhMkNvZGUodXNlci5MYW5ndWFnZSk7IG9rIHsKICAgICAgICAgICAgZm10LlByaW50ZigibGFuZ3VhZ2UgbmFtZSAtICclcycsIGFscGhhLTIgLSAnJXMnLCBhbHBoYS0zIC0gJyVzJyIsIHVzZXJMYW5ndWFnZS5OYW1lKCksIHVzZXJMYW5ndWFnZS5BbHBoYTJDb2RlKCksIHVzZXJMYW5ndWFnZS5BbHBoYTNDb2RlKCkpCgl9CgoJLy8gNy4gbG9va3VwIGJ5IGNvdW50cnkgZGlhbCBjb2RlCglpZiBwaG9uZUNvdW50cmllcywgb2sgOj0gcGhvbmUuQ291bnRyaWVzQnlEaWFsQ29kZSh1c2VyLkNvdW50cnlEaWFsQ29kZSk7IG9rIHsKICAgICAgICAgICAgZm9yIF8sIHBob25lQ291bnRyeSA6PSByYW5nZSBwaG9uZUNvdW50cmllcyB7CiAgICAgICAgICAgICAgICBmbXQuUHJpbnRmKCJjb3VudHJ5IGJ5IGRpYWwgY29kZSAtICclcyciLCBwaG9uZUNvdW50cnkpCiAgICAgICAgICAgIH0KCX0KCgkvLyA4LiBsb29rdXAgYnkgY291bnRyeQoJaWYgZGlhbENvZGUsIG9rIDo9IHBob25lLkRpYWxCeUFscGhhMkNvZGUodXNlci5Db3VudHJ5KTsgb2sgewogICAgICAgICAgICBmbXQuUHJpbnRmKCInJXMnIGRpYWwgY29kZSBpcyAnJXMnIiwgdXNlci5Db3VudHJ5LCBkaWFsQ29kZSkKICAgICAgICB9CgoJLy8gOS4gbG9va3VwIGJ5IGN1cnJlbmN5IGNvZGUKCWlmIHVzZXJDdXJyZW5jeSwgb2sgOj0gY3VycmVuY3kuQnlDb2RlKHVzZXIuQ3VycmVuY3kpOyBvayB7CiAgICAgICAgICAgIGZtdC5QcmludGYoImN1cnJlbmN5IG5hbWUgLSAnJXMnLCBjb2RlIC0gJyVzJywgbnVtYmVyIC0gJyVzJywgY291bnRyaWVzIC0gJyVzJywgZGVjaW1hbCBwbGFjZXMgLSAnJWQnIiwKICAgICAgICAgICAgICAgIHVzZXJDdXJyZW5jeS5DdXJyZW5jeSgpLCB1c2VyQ3VycmVuY3kuQ29kZSgpLCB1c2VyQ3VycmVuY3kuTnVtYmVyKCksIHVzZXJDdXJyZW5jeS5Db3VudHJpZXMoKSwgdXNlckN1cnJlbmN5LkRlY2ltYWxQbGFjZXMoKSkKCX0KCgkvLyAxMC4gc3RvcmUgaW4gZGIKCWZtdC5QcmludGxuKHVzZXIuQ291bnRyeS5WYWx1ZSgpKSAgLy9wcmludHMgJ0NBJwoJZm10LlByaW50bG4odXNlci5DdXJyZW5jeS5WYWx1ZSgpKSAvL3ByaW50cyAnQ0FOJwoJZm10LlByaW50bG4odXNlci5MYW5ndWFnZS5WYWx1ZSgpKSAvL3ByaW50cyAnZnInCgoJLy8gMTEuIHVzZSBzcGVjaWZpYyBjb3VudHJ5IGNvbnN0YW50cwoJZm10LlByaW50bG4oY291bnRyeS5DYW5hZGEuQWxwaGEyQ29kZSgpKQoJZm10LlByaW50bG4oIm5hbWU6IiwgbmFtZS5DYW5hZGEpCglmbXQuUHJpbnRsbigiYWxwaGEtMjoiLCBhbHBoYTIuQ0EpCglmbXQuUHJpbnRsbigiYWxwaGEtMzoiLCBhbHBoYTMuQ0FOKQoKCS8vIDEyLiB1c2Ugc3BlY2lmaWMgY3VycmVuY3kgY29kZXMKCWZtdC5QcmludGxuKGNvZGUuQ0FEKQp9CmBgYAoKIyMgTGlua3M6Ci0gQ3VycmVuY3kgQ29kZXMgWyhJU08gNDIxNyldKGh0dHBzOi8vd3d3LmN1cnJlbmN5LWlzby5vcmcvZW4vaG9tZS90YWJsZXMvdGFibGUtYTEuaHRtbCkgLSBbd2lraV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzQyMTcpLCBbZGF0YSBzb3VyY2VdKGh0dHBzOi8vd3d3LnNpeC1ncm91cC5jb20vZGFtL2Rvd25sb2FkL2ZpbmFuY2lhbC1pbmZvcm1hdGlvbi9kYXRhLWNlbnRlci9pc28tY3VycnJlbmN5L2xpc3RzL2xpc3Qtb25lLnhtbCkKLSBDb3VudHJ5IENvZGVzIFsoSVNPIDMxNjYpXShodHRwczovL3d3dy5pc28ub3JnL2lzby0zMTY2LWNvdW50cnktY29kZXMuaHRtbCkgLSBbd2lraV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzMxNjYtMikKLSBVUkwoaW5jbHVkaW5nIEh0dHBVUkwpIFsoc3RhbmRhcmQpXShodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvKSAtIFt3aWtpXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VUkwpCi0gRW1haWwgWyhwYXJ0IG9mIFJGQzUzMjIpXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTMyMikgLSBbd2lraV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW1haWxfYWRkcmVzcykKLSBUaW1lem9uZSBbKFJGQzY1NTcgSUFOQSB0aW1lem9uZXMpXShodHRwczovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzKSAtIFt3aWtpXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaW1lX3pvbmUpCi0gTGFuZ3VhZ2VzIFsoSVNPIDYzOS0xKV0oaHR0cHM6Ly93d3cuaXNvLm9yZy9zdGFuZGFyZC8yMjEwOS5odG1sKSAtIFt3aWtpXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX0lTT182MzktMV9jb2Rlcyk7IFsoSVNPIDYzOS0yKV0oaHR0cHM6Ly93d3cuaXNvLm9yZy9zdGFuZGFyZC80NzY3Lmh0bWwpIC0gW3dpa2ldKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rfb2ZfSVNPXzYzOS0yX2NvZGVzKSwgW2RhdGEgc291cmNlXShodHRwczovL2RhdGFodWIuaW8vY29yZS9sYW5ndWFnZS1jb2Rlcy9yL2xhbmd1YWdlLWNvZGVzLTNiMi5qc29uKQotIERpYWwgQ29kZXMgWyhFLjE2NCldKGh0dHBzOi8vd3d3Lml0dS5pbnQvcmVjL1QtUkVDLUUuMTY0LTIwMTIwMy1JIVN1cDYvZW4pIC0gW3dpa2ldKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0UuMTY0KSwgW2RhdGEgc291cmNlXShodHRwczovL2RhdGFodWIuaW8vY29yZS9jb3VudHJ5LWNvZGVzL3IvY291bnRyeS1jb2Rlcy5qc29uKQotIEJDUDQ3IGxhbmd1YWdlIHRhZ3MgWyh3aWtpKV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUVURl9sYW5ndWFnZV90YWcpLCBbcmZjXShodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9pbmZvL2JjcDQ3KQo= readmeEtag: '"ac383a2beb748745027f0ecef63e948c2f69d7e1"' readmeLastModified: Fri, 26 Jul 2024 20:27:42 GMT repositoryId: 360145760 description: >- Library providing opanapi3 and Go types for store/validation and transfer of ISO-4217, ISO-3166, and other types. created: '2021-04-21T11:34:25Z' updated: '2026-01-29T10:01:52Z' language: Go archived: false stars: 23 watchers: 1 forks: 13 owner: mikekonan logo: https://avatars.githubusercontent.com/u/36304777?v=4 license: MIT repoEtag: '"48da50d77071f5a4512ff3a68ee1ae0a6346493b493735c5a8075c7f24807d9d"' repoLastModified: Thu, 29 Jan 2026 10:01:52 GMT foundInMaster: true category: Low-level Tooling id: fe04f57bdbf5a56f74b29a4a912ef4c2 - source: - openapi3 tags - openapi31 tags repository: https://github.com/pb33f/doctor v3: true id: 74c08eebdc1d3c5abe3120f4b374bb0a repositoryMetadata: base64Readme: >- IyBUaGUgRG9jdG9yCgojIyBEciwgV2hvPwoKIyMjIEp1c3QgdGhlIGRvY3Rvci4KClRoZSBkb2N0b3IgcHJvdmlkZXMgc3VwZXItY2hhcmdlZCB2ZXJzaW9ucyBvZiBwYjMzZiBsaWJyYXJpZXMgYW5kIHRvb2xzLiBPZmZlcmluZyBjYXBhYmlsaXRpZXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgT1NTLgoKLS0tCgpUaGlzIGlzIGEgQlVTTC0xLjEgbGljZW5zZWQgcHJvamVjdC4gWW91IGNhbiBmaW5kIHRoZSBsaWNlbnNlIGluIHRoZSBMSUNFTlNFIGZpbGUuCgpJZiB5b3UncmUgdXNpbmcgaXQgZm9yIGludGVybmFsIG9yIG5vbi1jb21tZXJjaWFsIC8gb3BlbiBzb3VyY2UgcHVycG9zZXMsIHlvdSBjYW4gdXNlIGl0IGZvciBmcmVlLiAKCklmIHlvdSdyZSB1c2luZyBpdCBmb3IgY29tbWVyY2lhbCBwdXJwb3NlcywgeW91IG5lZWQgdG8gW2NvbnRhY3QgdXMgYXQgc2FsZXNAcGIzM2YuaW9dKG1haWx0bzpzYWxlc0BwYjMzZi5pbykuCgpUaGlzIGxpYnJhcnkgY29tZXMgd2l0aCBubyBkb2N1bWVudGF0aW9uIGFuZCBubyBzdXBwb3J0IGZvciBmcmVlIHVzZXJzLgoKLS0t readmeEtag: '"236afb7ba0daa364b724772c5033540bf8a11d2c"' readmeLastModified: Wed, 09 Jul 2025 15:47:42 GMT repositoryId: 736423336 description: >- The Doctor. Just the doctor, no more, no less. The OpenAPI all in one suite. created: '2023-12-27T21:41:40Z' updated: '2026-02-04T15:20:41Z' language: Go archived: false stars: 37 watchers: 1 forks: 7 owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: NOASSERTION repoEtag: '"e418d1f6e8c217b175c7014c78ca2ff147f395c6e2af0286bb33c196308bd9e4"' repoLastModified: Wed, 04 Feb 2026 15:20:41 GMT category: Server Implementations foundInMaster: true v3_1: true - source: openapi3 tags repository: https://github.com/rpstreef/aws-sam-node-example v3: true repositoryMetadata: base64Readme: IyBPcGVuQVBJIE5vZGUgY29kZSBleGFtcGxlCgo= readmeEtag: '"e9ba7d0270059b5e2bb339f36a56857576323f15"' readmeLastModified: Thu, 07 Jan 2021 02:46:27 GMT repositoryId: 261105398 description: AWS SAM NodeJS project example created: '2020-05-04T07:17:35Z' updated: '2024-08-13T03:40:19Z' language: JavaScript archived: false stars: 19 watchers: 1 forks: 13 owner: rpstreef logo: https://avatars.githubusercontent.com/u/15830262?v=4 license: Apache-2.0 repoEtag: '"9b9773ccb637fe8a0b02a037c05a47320d66b92aa3e44b60ada50fc4632e3259"' repoLastModified: Tue, 13 Aug 2024 03:40:19 GMT foundInMaster: true category: Parsers id: ad0e4c9c11802319236236fb57f3c0be - source: openapi3 tags repository: https://github.com/lrstanley/entrest v3: true id: 71bac1f375dfb3f22aec8de61c4aab9f repositoryMetadata: base64Readme: >- PCEtLSB0ZW1wbGF0ZTpkZWZpbmU6b3B0aW9ucwp7CiAgIm5vZGVzY3JpcHRpb24iOiB0cnVlCn0KLS0+CiFbbG9nb10oaHR0cHM6Ly9saWFtLnNoLy0vZ2gvc3ZnL2xyc3RhbmxleS9lbnRyZXN0P2xheW91dD1sZWZ0Jmljb249bG9nb3MlM0FvcGVuYXBpJmljb24uaGVpZ2h0PTYwJmJnPWdlb21ldHJpYyZiZ2NvbG9yPXJnYmElMjgxMCUyQysxMCUyQysxMCUyQysxJTI5KQoKPCEtLSB0ZW1wbGF0ZTpiZWdpbjpoZWFkZXIgLS0+CjwhLS0gZG8gbm90IGVkaXQgYW55dGhpbmcgaW4gdGhpcyAidGVtcGxhdGUiIGJsb2NrLCBpdHMgYXV0by1nZW5lcmF0ZWQgLS0+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbHJzdGFubGV5L2VudHJlc3QvdGFncyI+CiAgICA8aW1nIHRpdGxlPSJMYXRlc3QgU2VtdmVyIFRhZyIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi92L3RhZy9scnN0YW5sZXkvZW50cmVzdD9zdHlsZT1mbGF0LXNxdWFyZSI+CiAgPC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9scnN0YW5sZXkvZW50cmVzdC9jb21taXRzL21hc3RlciI+CiAgICA8aW1nIHRpdGxlPSJMYXN0IGNvbW1pdCIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9sYXN0LWNvbW1pdC9scnN0YW5sZXkvZW50cmVzdD9zdHlsZT1mbGF0LXNxdWFyZSI+CiAgPC9hPgoKCgoKICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbHJzdGFubGV5L2VudHJlc3QvYWN0aW9ucz9xdWVyeT13b3JrZmxvdyUzQXRlc3QrZXZlbnQlM0FwdXNoIj4KICAgIDxpbWcgdGl0bGU9IkdpdEh1YiBXb3JrZmxvdyBTdGF0dXMgKHRlc3QgQCBtYXN0ZXIpIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL2xyc3RhbmxleS9lbnRyZXN0L3Rlc3QueW1sP2JyYW5jaD1tYXN0ZXImbGFiZWw9dGVzdCZzdHlsZT1mbGF0LXNxdWFyZSI+CiAgPC9hPgoKCgoKICA8YSBocmVmPSJodHRwczovL2NvZGVjb3YuaW8vZ2gvbHJzdGFubGV5L2VudHJlc3QiPgogICAgPGltZyB0aXRsZT0iQ29kZSBDb3ZlcmFnZSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRodWIvbHJzdGFubGV5L2VudHJlc3QvbWFzdGVyP3N0eWxlPWZsYXQtc3F1YXJlIj4KICA8L2E+CgogIDxhIGhyZWY9Imh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL2xyc3RhbmxleS9lbnRyZXN0Ij4KICAgIDxpbWcgdGl0bGU9IkdvIERvY3VtZW50YXRpb24iIHNyYz0iaHR0cHM6Ly9wa2cuZ28uZGV2L2JhZGdlL2dpdGh1Yi5jb20vbHJzdGFubGV5L2VudHJlc3Q/c3R5bGU9ZmxhdC1zcXVhcmUiPgogIDwvYT4KICA8YSBocmVmPSJodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vbHJzdGFubGV5L2VudHJlc3QiPgogICAgPGltZyB0aXRsZT0iR28gUmVwb3J0IENhcmQiIHNyYz0iaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vbHJzdGFubGV5L2VudHJlc3Q/c3R5bGU9ZmxhdC1zcXVhcmUiPgogIDwvYT4KPC9wPgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbHJzdGFubGV5L2VudHJlc3QvaXNzdWVzP3E9aXM6b3Blbitpczppc3N1ZStsYWJlbDpidWciPgogICAgPGltZyB0aXRsZT0iQnVnIHJlcG9ydHMiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvaXNzdWVzL2xyc3RhbmxleS9lbnRyZXN0L2J1Zz9sYWJlbD1pc3N1ZXMmc3R5bGU9ZmxhdC1zcXVhcmUiPgogIDwvYT4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbHJzdGFubGV5L2VudHJlc3QvaXNzdWVzP3E9aXM6b3Blbitpczppc3N1ZStsYWJlbDplbmhhbmNlbWVudCI+CiAgICA8aW1nIHRpdGxlPSJGZWF0dXJlIHJlcXVlc3RzIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy9scnN0YW5sZXkvZW50cmVzdC9lbmhhbmNlbWVudD9sYWJlbD1mZWF0dXJlJTIwcmVxdWVzdHMmc3R5bGU9ZmxhdC1zcXVhcmUiPgogIDwvYT4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbHJzdGFubGV5L2VudHJlc3QvcHVsbHMiPgogICAgPGltZyB0aXRsZT0iT3BlbiBQdWxsIFJlcXVlc3RzIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy1wci9scnN0YW5sZXkvZW50cmVzdD9sYWJlbD1wcnMmc3R5bGU9ZmxhdC1zcXVhcmUiPgogIDwvYT4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbHJzdGFubGV5L2VudHJlc3QvZGlzY3Vzc2lvbnMvbmV3P2NhdGVnb3J5PXEtYSI+CiAgICA8aW1nIHRpdGxlPSJBc2sgYSBRdWVzdGlvbiIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3N1cHBvcnQtYXNrX2FfcXVlc3Rpb24hLWJsdWU/c3R5bGU9ZmxhdC1zcXVhcmUiPgogIDwvYT4KICA8YSBocmVmPSJodHRwczovL2xpYW0uc2gvY2hhdCI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGlzY29yZC1ieXRlY29yZC1ibHVlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSIgdGl0bGU9IkRpc2NvcmQgQ2hhdCI+PC9hPgo8L3A+CjwhLS0gdGVtcGxhdGU6ZW5kOmhlYWRlciAtLT4KCjwhLS0gdGVtcGxhdGU6YmVnaW46dG9jIC0tPgo8IS0tIGRvIG5vdCBlZGl0IGFueXRoaW5nIGluIHRoaXMgInRlbXBsYXRlIiBibG9jaywgaXRzIGF1dG8tZ2VuZXJhdGVkIC0tPgojIyA6bGluazogVGFibGUgb2YgQ29udGVudHMKCiAgLSBbRmVhdHVyZXNdKCNzcGFya2xlcy1mZWF0dXJlcykKICAtIFtVc2FnZV0oI2dlYXItdXNhZ2UpCiAgLSBbU3VwcG9ydCAmYW1wOyBBc3Npc3RhbmNlXSgjcmFpc2luZ19oYW5kX21hbi1zdXBwb3J0LS1hc3Npc3RhbmNlKQogIC0gW0NvbnRyaWJ1dGluZ10oI2hhbmRzaGFrZS1jb250cmlidXRpbmcpCiAgLSBbTGljZW5zZV0oI2JhbGFuY2Vfc2NhbGUtbGljZW5zZSkKPCEtLSB0ZW1wbGF0ZTplbmQ6dG9jIC0tPgoKIyMgOnNwYXJrbGVzOiBGZWF0dXJlcwoKKiplbnRyZXN0KiogaXMgYW4gW0VudEdvXShodHRwczovL2VudGdvLmlvLykgZXh0ZW5zaW9uIGZvciBnZW5lcmF0aW5nIGNvbXBsaWFudCBPcGVuQVBJCnNwZWNzIGFuZCBhbiBIVFRQIGhhbmRsZXIgaW1wbGVtZW50YXRpb24gdGhhdCBtYXRjaGVzIHRoYXQgc3BlYy4gSXQgZXhwYW5kcyB1cG9uIHRoZQphcHByb2FjaCB1c2VkIGJ5IFtlbnRvYXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9lbnQvY29udHJpYi90cmVlL21hc3Rlci9lbnRvYXMjZW50b2FzKSwKd2l0aCBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHksIGFuZCBwYWlycyB0aGUgZ2VuZXJhdGVkIHNwZWNpZmljYXRpb24gd2l0aCBhCmZ1bGx5LWZ1bmN0aW9uYWwgSFRUUCBoYW5kbGVyIGltcGxlbWVudGF0aW9uLgoKLSA6c3BhcmtsZXM6IEdlbmVyYXRlcyBPcGVuQVBJIHNwZWNzIGZvciB5b3VyIEVudEdvIHNjaGVtYS4KLSA6c3BhcmtsZXM6IEdlbmVyYXRlcyBhIGZ1bGx5IGZ1bmN0aW9uYWwgSFRUUCBoYW5kbGVyIGltcGxlbWVudGF0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgT3BlbkFQSSBzcGVjLgotIDpzcGFya2xlczogU3VwcG9ydHMgYXV0b21hdGljIHBhZ2luYXRpb24gKHdoZXJlIGFwcGxpY2FibGUpLgotIDpzcGFya2xlczogU3VwcG9ydHMgYWR2YW5jZWQgZmlsdGVyaW5nICh1c2luZyBxdWVyeSBwYXJhbWV0ZXJzLCBgQU5EYC9gT1JgIHByZWRpY2F0ZXMsIGV0YykuCi0gOnNwYXJrbGVzOiBTdXBwb3J0cyBlYWdlci1sb2FkaW5nIGVkZ2VzLCBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBtYWtlIGFkZGl0aW9uYWwgY2FsbHMgdW5uZWNlc3NhcmlseS4KLSA6c3BhcmtsZXM6IFN1cHBvcnRzIHZhcmlvdXMgZm9ybXMgb2Ygc29ydGluZy4KLSA6c3BhcmtsZXM6IEFuZCBtb3JlIQoKLS0tCgojIyA6Z2VhcjogVXNhZ2UKClRha2UgYSBsb29rIGF0IHRoZSBbb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9scnN0YW5sZXkuZ2l0aHViLmlvL2VudHJlc3QvKSBmb3IgZ3VpZGVzLCBleGFtcGxlcywgYW5kIG1vcmUuCgo8IS0tIHRlbXBsYXRlOmJlZ2luOmdvZ2V0IC0tPgo8IS0tIGRvIG5vdCBlZGl0IGFueXRoaW5nIGluIHRoaXMgInRlbXBsYXRlIiBibG9jaywgaXRzIGF1dG8tZ2VuZXJhdGVkIC0tPgpgYGBjb25zb2xlCmdvIGdldCAtdSBnaXRodWIuY29tL2xyc3RhbmxleS9lbnRyZXN0QGxhdGVzdApgYGAKPCEtLSB0ZW1wbGF0ZTplbmQ6Z29nZXQgLS0+CgotLS0KCjwhLS0gdGVtcGxhdGU6YmVnaW46c3VwcG9ydCAtLT4KPCEtLSBkbyBub3QgZWRpdCBhbnl0aGluZyBpbiB0aGlzICJ0ZW1wbGF0ZSIgYmxvY2ssIGl0cyBhdXRvLWdlbmVyYXRlZCAtLT4KIyMgOnJhaXNpbmdfaGFuZF9tYW46IFN1cHBvcnQgJiBBc3Npc3RhbmNlCgoqIDpoZWFydDogUGxlYXNlIHJldmlldyB0aGUgW0NvZGUgb2YgQ29uZHVjdF0oLmdpdGh1Yi9DT0RFX09GX0NPTkRVQ1QubWQpIGZvcgogICAgIGd1aWRlbGluZXMgb24gZW5zdXJpbmcgZXZlcnlvbmUgaGFzIHRoZSBiZXN0IGV4cGVyaWVuY2UgaW50ZXJhY3Rpbmcgd2l0aAogICAgIHRoZSBjb21tdW5pdHkuCiogOnJhaXNpbmdfaGFuZF9tYW46IFRha2UgYSBsb29rIGF0IHRoZSBbc3VwcG9ydF0oLmdpdGh1Yi9TVVBQT1JULm1kKSBkb2N1bWVudCBvbgogICAgIGd1aWRlbGluZXMgZm9yIHRpcHMgb24gaG93IHRvIGFzayB0aGUgcmlnaHQgcXVlc3Rpb25zLgoqIDpsYWR5X2JlZXRsZTogRm9yIGFsbCBmZWF0dXJlcy9idWdzL2lzc3Vlcy9xdWVzdGlvbnMvZXRjLCBbaGVhZCBvdmVyIGhlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9scnN0YW5sZXkvZW50cmVzdC9pc3N1ZXMvbmV3L2Nob29zZSkuCjwhLS0gdGVtcGxhdGU6ZW5kOnN1cHBvcnQgLS0+Cgo8IS0tIHRlbXBsYXRlOmJlZ2luOmNvbnRyaWJ1dGluZyAtLT4KPCEtLSBkbyBub3QgZWRpdCBhbnl0aGluZyBpbiB0aGlzICJ0ZW1wbGF0ZSIgYmxvY2ssIGl0cyBhdXRvLWdlbmVyYXRlZCAtLT4KIyMgOmhhbmRzaGFrZTogQ29udHJpYnV0aW5nCgoqIDpoZWFydDogUGxlYXNlIHJldmlldyB0aGUgW0NvZGUgb2YgQ29uZHVjdF0oLmdpdGh1Yi9DT0RFX09GX0NPTkRVQ1QubWQpIGZvciBndWlkZWxpbmVzCiAgICAgb24gZW5zdXJpbmcgZXZlcnlvbmUgaGFzIHRoZSBiZXN0IGV4cGVyaWVuY2UgaW50ZXJhY3Rpbmcgd2l0aCB0aGUKICAgIGNvbW11bml0eS4KKiA6Y2xpcGJvYXJkOiBQbGVhc2UgcmV2aWV3IHRoZSBbY29udHJpYnV0aW5nXSguZ2l0aHViL0NPTlRSSUJVVElORy5tZCkgZG9jIGZvciBzdWJtaXR0aW5nCiAgICAgaXNzdWVzL2EgZ3VpZGUgb24gc3VibWl0dGluZyBwdWxsIHJlcXVlc3RzIGFuZCBoZWxwaW5nIG91dC4KKiA6b2xkX2tleTogRm9yIGFueXRoaW5nIHNlY3VyaXR5IHJlbGF0ZWQsIHBsZWFzZSByZXZpZXcgdGhpcyByZXBvc2l0b3JpZXMgW3NlY3VyaXR5IHBvbGljeV0oaHR0cHM6Ly9naXRodWIuY29tL2xyc3RhbmxleS9lbnRyZXN0L3NlY3VyaXR5L3BvbGljeSkuCjwhLS0gdGVtcGxhdGU6ZW5kOmNvbnRyaWJ1dGluZyAtLT4KCjwhLS0gdGVtcGxhdGU6YmVnaW46bGljZW5zZSAtLT4KPCEtLSBkbyBub3QgZWRpdCBhbnl0aGluZyBpbiB0aGlzICJ0ZW1wbGF0ZSIgYmxvY2ssIGl0cyBhdXRvLWdlbmVyYXRlZCAtLT4KIyMgOmJhbGFuY2Vfc2NhbGU6IExpY2Vuc2UKCmBgYApNSVQgTGljZW5zZQoKQ29weXJpZ2h0IChjKSAyMDI0IExpYW0gU3RhbmxleSA8bGlhbUBsaWFtLnNoPgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4KYGBgCgpfQWxzbyBsb2NhdGVkIFtoZXJlXShMSUNFTlNFKV8KPCEtLSB0ZW1wbGF0ZTplbmQ6bGljZW5zZSAtLT4K readmeEtag: '"76dde167d103063d415dfecb3815b11a4eca99a0"' readmeLastModified: Sun, 25 Jan 2026 07:10:42 GMT repositoryId: 809436745 description: >- Extension that generates a compliant OpenAPI spec and server implementation created: '2024-06-02T17:24:14Z' updated: '2026-02-01T09:47:11Z' language: Go archived: false stars: 40 watchers: 2 forks: 8 owner: lrstanley logo: https://avatars.githubusercontent.com/u/1847365?v=4 license: MIT repoEtag: '"f5a0abd03a2874ccd04bd0e230fc5d94fe4aff4ba821afc892b922d9b52807a7"' repoLastModified: Sun, 01 Feb 2026 09:47:11 GMT category: Documentation foundInMaster: true - source: openapi3 tags repository: https://github.com/edo1z/rust-axum-sqlx-sample v3: true repositoryMetadata: base64Readme: >- IyBydXN0LWF4dW0tc3FseC1zYW1wbGUKCiMjIEluc3RhbGwKCmBgYHNoZWxsCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vd2ViM3RlbjAvcnVzdC1heHVtLXNxbHgtMS5naXQKY2QgcnVzdC1heHVtLXNxbHgtMS9sb2NhbApkb2NrZXItY29tcG9zZSB1cCAtZApzaCBzY3JpcHRzL2V4ZWNfaW5pdF9kYgpgYGAKCiMjIE1pZ3JhdGlvbgoKLSDlj4Lnhac6IGh0dHBzOi8vZ2l0aHViLmNvbS9sYXVuY2hiYWRnZS9zcWx4L3RyZWUvbWFzdGVyL3NxbHgtY2xpCgpgYGBzaGVsbApjZCBsb2NhbC9zY3JpcHRzCnNoIG1pZ3JhdGUgYWRkIC1yIHVzZXJzCnNoIG1pZ3JhdGUgcnVuCnNoIG1pZ3JhdGUgcmV2ZXJ0CmBgYAoKIyMgU3dhZ2dlcgojIyMgc3dhZ2dlci11aeOBrlVSTAotIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMQoK readmeEtag: '"d7b06b401cbbc36c5f51365937fa9fe6fa2002e4"' readmeLastModified: Tue, 19 Sep 2023 21:37:10 GMT repositoryId: 450315160 description: Rust Axum+SQLx Sample created: '2022-01-21T01:33:05Z' updated: '2025-05-30T13:45:08Z' language: Rust archived: false stars: 20 watchers: 1 forks: 3 owner: edo1z logo: https://avatars.githubusercontent.com/u/89882017?v=4 license: MIT repoEtag: '"b92114c0502a6c1ddfa937f1fcedc5754e0a82e1bc9b98af8e562d6f65ee639b"' repoLastModified: Fri, 30 May 2025 13:45:08 GMT foundInMaster: true category: Code Generators id: 3bcd05d3559d8a12b7772c87d59d8c84 oldLocations: - https://github.com/net3i/rust-axum-sqlx-sample - source: openapi3 tags repository: https://github.com/igor-baiborodine/campsite-booking v3: true id: d2c07b19920cc8af4f5cbac91985559f repositoryMetadata: base64Readme: >- IyBDYW1wc2l0ZSBCb29raW5nIEFQSSAoSmF2YSkgIAohW01hc3RlciBCcmFuY2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9pZ29yLWJhaWJvcm9kaW5lL2NhbXBzaXRlLWJvb2tpbmcvd29ya2Zsb3dzL0J1aWxkJTIwTWFzdGVyJTIwQnJhbmNoL2JhZGdlLnN2ZykKWyFbU29uYXJjbG91ZCBTdGF0dXNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWlnb3ItYmFpYm9yb2RpbmVfY2FtcHNpdGUtYm9va2luZyZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1pZ29yLWJhaWJvcm9kaW5lX2NhbXBzaXRlLWJvb2tpbmcpIApbIVtDb3ZlcmFnZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9aWdvci1iYWlib3JvZGluZV9jYW1wc2l0ZS1ib29raW5nJm1ldHJpYz1jb3ZlcmFnZSldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPWlnb3ItYmFpYm9yb2RpbmVfY2FtcHNpdGUtYm9va2luZykKCvCflKUgQSBHby1iYXNlZCBpbXBsZW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhlIFtjYW1wc2l0ZS1ib29raW5nLWdvXShodHRwczovL2dpdGh1Yi5jb20vaWdvci1iYWlib3JvZGluZS9jYW1wc2l0ZS1ib29raW5nLWdvKSByZXBvc2l0b3J5LiAKCiMjIyBBIFJFU1RmdWwgd2ViIHNlcnZpY2UgdGhhdCBtYW5hZ2VzIGNhbXBzaXRlIGJvb2tpbmdzLiAKClJlYWQgdGhlc2UgYXJ0aWNsZXMgdG8gZ2V0IG1vcmUgaW5zaWdodHM6CiogW0NhbXBzaXRlIEJvb2tpbmcgQVBJOiBSZXZpc2l0ZWRdKGh0dHBzOi8vd3d3Lmtpcm91bGUuY29tL2FydGljbGUvY2FtcHNpdGUtYm9va2luZy1hcGktcmV2aXNpdGVkLykKKiBbQ2FtcHNpdGUgQm9va2luZyBBUEk6IFJldmlzaXRlZCAyXShodHRwczovL3d3dy5raXJvdWxlLmNvbS9hcnRpY2xlL2NhbXBzaXRlLWJvb2tpbmctYXBpLXJldmlzaXRlZC0yLykKKiBbQ2FtcHNpdGUgQm9va2luZyBBUEk6IFJldmlzaXRlZCAzXShodHRwczovL3d3dy5raXJvdWxlLmNvbS9hcnRpY2xlL2NhbXBzaXRlLWJvb2tpbmctYXBpLXJldmlzaXRlZC0zLykKCjwhLS0gU1RBUlQgZG9jdG9jIGdlbmVyYXRlZCBUT0MgcGxlYXNlIGtlZXAgY29tbWVudCBoZXJlIHRvIGFsbG93IGF1dG8gdXBkYXRlIC0tPgo8IS0tIERPTidUIEVESVQgVEhJUyBTRUNUSU9OLCBJTlNURUFEIFJFLVJVTiBkb2N0b2MgVE8gVVBEQVRFIC0tPgoqKlRhYmxlIG9mIENvbnRlbnRzKioKCi0gW1RlY2huaWNhbCBUYXNrXSgjdGVjaG5pY2FsLXRhc2spCiAgLSBbQm9va2luZyBDb25zdHJhaW50c10oI2Jvb2tpbmctY29uc3RyYWludHMpCiAgLSBbU3lzdGVtIFJlcXVpcmVtZW50c10oI3N5c3RlbS1yZXF1aXJlbWVudHMpCi0gW0ltcGxlbWVudGF0aW9uIERldGFpbHNdKCNpbXBsZW1lbnRhdGlvbi1kZXRhaWxzKQotIFtVcCAmIFJ1bm5pbmddKCN1cC0tcnVubmluZykKICAtIFtSdW4gd2l0aCBNYXZlbl0oI3J1bi13aXRoLW1hdmVuKQogIC0gW0V4ZWN1dGFibGUgSkFSXSgjZXhlY3V0YWJsZS1qYXIpCiAgLSBbRG9ja2VyXSgjZG9ja2VyKQotIFtUZXN0c10oI3Rlc3RzKQogIC0gW01hdmVuXSgjbWF2ZW4pCiAgLSBbU3dhZ2dlciBVSV0oI3N3YWdnZXItdWkpCiAgLSBbQ29uY3VycmVudCBUZXN0c10oI2NvbmN1cnJlbnQtdGVzdHMpCiAgICAtIFtCb29raW5ncyBDcmVhdGlvbl0oI2Jvb2tpbmdzLWNyZWF0aW9uKQogICAgLSBbQm9va2luZyBVcGRhdGVdKCNib29raW5nLXVwZGF0ZSkKICAtIFtCYXNpYyBMb2FkIFRlc3RpbmddKCNiYXNpYy1sb2FkLXRlc3RpbmcpCi0gW0NvbnRpbnVvdXMgSW50ZWdyYXRpb25dKCNjb250aW51b3VzLWludGVncmF0aW9uKQogIC0gW0J1aWxkIE1hc3RlciBCcmFuY2hdKCNidWlsZC1tYXN0ZXItYnJhbmNoKQogIC0gW0J1aWxkIG9uIFB1bGwgUmVxdWVzdF0oI2J1aWxkLW9uLXB1bGwtcmVxdWVzdCkKICAtIFtHZW5lcmF0ZSBSRUFETUUgVE9DXSgjZ2VuZXJhdGUtcmVhZG1lLXRvYykKICAtIFtQZXJmb3JtIFJlbGVhc2VdKCNwZXJmb3JtLXJlbGVhc2UpCgo8IS0tIEVORCBkb2N0b2MgZ2VuZXJhdGVkIFRPQyBwbGVhc2Uga2VlcCBjb21tZW50IGhlcmUgdG8gYWxsb3cgYXV0byB1cGRhdGUgLS0+CgojIyBUZWNobmljYWwgVGFzawoKIyMjIEJvb2tpbmcgQ29uc3RyYWludHMKKiBUaGUgY2FtcHNpdGUgY2FuIGJlIHJlc2VydmVkIGZvciBtYXggMyBkYXlzLgoqIFRoZSBjYW1wc2l0ZSBjYW4gYmUgcmVzZXJ2ZWQgbWluaW11bSAxIGRheShzKSBhaGVhZCBvZiBhcnJpdmFsIGFuZCB1cCB0byAxIG1vbnRoIGluIGFkdmFuY2UuCiogUmVzZXJ2YXRpb25zIGNhbiBiZSBjYW5jZWxsZWQgYW55dGltZS4KKiBGb3Igc2FrZSBvZiBzaW1wbGljaXR5IGFzc3VtZSB0aGUgY2hlY2staW4gJiBjaGVjay1vdXQgdGltZSBpcyAxMjowMCBBTS4KCiMjIyBTeXN0ZW0gUmVxdWlyZW1lbnRzCiogVGhlIHVzZXJzIHdpbGwgbmVlZCB0byBmaW5kIG91dCB3aGVuIHRoZSBjYW1wc2l0ZSBpcyBhdmFpbGFibGUuIFNvIHRoZSBzeXN0ZW0gc2hvdWxkIGV4cG9zZSBhbiBBUEkgdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBvZiB0aGUKYXZhaWxhYmlsaXR5IG9mIHRoZSBjYW1wc2l0ZSBmb3IgYSBnaXZlbiBkYXRlIHJhbmdlIHdpdGggdGhlIGRlZmF1bHQgYmVpbmcgMSBtb250aC4KKiBQcm92aWRlIGFuIGVuZCBwb2ludCBmb3IgcmVzZXJ2aW5nIHRoZSBjYW1wc2l0ZS4gVGhlIHVzZXIgd2lsbCBwcm92aWRlIGhpcy9oZXIgZW1haWwgJiBmdWxsIG5hbWUgYXQgdGhlIHRpbWUgb2YgcmVzZXJ2aW5nIHRoZSBjYW1wc2l0ZQphbG9uZyB3aXRoIGludGVuZGVkIGFycml2YWwgZGF0ZSBhbmQgZGVwYXJ0dXJlIGRhdGUuIFJldHVybiBhIHVuaXF1ZSBib29raW5nIGlkZW50aWZpZXIgYmFjayB0byB0aGUgY2FsbGVyIGlmIHRoZSByZXNlcnZhdGlvbiBpcyBzdWNjZXNzZnVsLgoqIFRoZSB1bmlxdWUgYm9va2luZyBpZGVudGlmaWVyIGNhbiBiZSB1c2VkIHRvIG1vZGlmeSBvciBjYW5jZWwgdGhlIHJlc2VydmF0aW9uIGxhdGVyIG9uLiBQcm92aWRlIGFwcHJvcHJpYXRlIGVuZCBwb2ludChzKSB0byBhbGxvdwptb2RpZmljYXRpb24vY2FuY2VsbGF0aW9uIG9mIGFuIGV4aXN0aW5nIHJlc2VydmF0aW9uLgoqIER1ZSB0byB0aGUgcG9wdWxhcml0eSBvZiB0aGUgY2FtcHNpdGUsIHRoZXJlIGlzIGEgaGlnaCBsaWtlbGlob29kIG9mIG11bHRpcGxlIHVzZXJzIGF0dGVtcHRpbmcgdG8gcmVzZXJ2ZSB0aGUgY2FtcHNpdGUgZm9yIHRoZSBzYW1lL292ZXJsYXBwaW5nCmRhdGUocykuIERlbW9uc3RyYXRlIHdpdGggYXBwcm9wcmlhdGUgdGVzdCBjYXNlcyB0aGF0IHRoZSBzeXN0ZW0gY2FuIGdyYWNlZnVsbHkgaGFuZGxlIGNvbmN1cnJlbnQgcmVxdWVzdHMgdG8gcmVzZXJ2ZSB0aGUgY2FtcHNpdGUuCiogUHJvdmlkZSBhcHByb3ByaWF0ZSBlcnJvciBtZXNzYWdlcyB0byB0aGUgY2FsbGVyIHRvIGluZGljYXRlIHRoZSBlcnJvciBjYXNlcy4KKiBUaGUgc3lzdGVtIHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSBsYXJnZSB2b2x1bWUgb2YgcmVxdWVzdHMgZm9yIGdldHRpbmcgdGhlIGNhbXBzaXRlIGF2YWlsYWJpbGl0eS4KKiBUaGVyZSBhcmUgbm8gcmVzdHJpY3Rpb25zIG9uIGhvdyByZXNlcnZhdGlvbnMgYXJlIHN0b3JlZCBhcyBsb25nIGFzIHN5c3RlbSBjb25zdHJhaW50cyBhcmUgbm90IHZpb2xhdGVkLgoKIyMgSW1wbGVtZW50YXRpb24gRGV0YWlscwoKVGhpcyBwcm9qZWN0IGlzIGltcGxlbWVudGVkIHVzaW5nIGFuIEFQSS1maXJzdChvciBjb250cmFjdC1maXJzdCkgYXBwcm9hY2ggYWxvbmcgd2l0aCBNYXZlbidzCm11bHRpLW1vZHVsZSBwcm9qZWN0IHN0cnVjdHVyZS4gWW91IGNhbiByZWFkCm1vcmUgW2hlcmVdKGh0dHBzOi8vc3dhZ2dlci5pby9yZXNvdXJjZXMvYXJ0aWNsZXMvYWRvcHRpbmctYW4tYXBpLWZpcnN0LWFwcHJvYWNoLykgb24gdGhlIEFQSS1maXJzdApkZXZlbG9wbWVudCBhcHByb2FjaC4KCiMjIFVwICYgUnVubmluZwojIyMgUnVuIHdpdGggTWF2ZW4KYGBgYmFzaAokIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vaWdvci1iYWlib3JvZGluZS9jYW1wc2l0ZS1ib29raW5nLmdpdAokIGNkIGNhbXBzaXRlLWJvb2tpbmcKJCBtdm4gY2xlYW4gaW5zdGFsbCAtRHNraXBUZXN0cyAtRHNraXBJVHMKJCBtdm4gc3ByaW5nLWJvb3Q6cnVuIC1Ec3ByaW5nLWJvb3QucnVuLnByb2ZpbGVzPWluLW1lbW9yeS1kYiAtZiBjYW1wc2l0ZS1ib29raW5nLXNlcnZpY2UvcG9tLnhtbApgYGAKVGhlIFN3YWdnZXIgVUkgaXMgYXZhaWxhYmxlIGF0IGBodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS5odG1sYC4KCiMjIyBFeGVjdXRhYmxlIEpBUgpgYGBiYXNoCiQgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9pZ29yLWJhaWJvcm9kaW5lL2NhbXBzaXRlLWJvb2tpbmcuZ2l0CiQgY2QgY2FtcHNpdGUtYm9va2luZwokIG12biBjbGVhbiBpbnN0YWxsIC1Ec2tpcFRlc3RzIC1Ec2tpcElUcwokIG12biBwYWNrYWdlIHNwcmluZy1ib290OnJlcGFja2FnZSAtRHNraXBUZXN0cyAtRHNraXBJVHMgLWYgY2FtcHNpdGUtYm9va2luZy1zZXJ2aWNlL3BvbS54bWwKJCBqYXZhIC1qYXIgLURzcHJpbmcucHJvZmlsZXMuYWN0aXZlPWluLW1lbW9yeS1kYiBjYW1wc2l0ZS1ib29raW5nLXNlcnZpY2UvdGFyZ2V0L2NhbXBzaXRlLWJvb2tpbmctc2VydmljZS08dmVyc2lvbj4uamFyCmBgYApUaGUgU3dhZ2dlciBVSSBpcyBhdmFpbGFibGUgYXQgYGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9zd2FnZ2VyLXVpLmh0bWxgLgoKIyMjIERvY2tlcgpgYGBiYXNoCiQgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9pZ29yLWJhaWJvcm9kaW5lL2NhbXBzaXRlLWJvb2tpbmcuZ2l0CiQgY2QgY2FtcHNpdGUtYm9va2luZwokIGRvY2tlciBidWlsZCAtLXJtIC0tZmlsZSBjb250YWluZXIvRG9ja2VyZmlsZSAtLXRhZyBjYW1wc2l0ZS1ib29raW5nLXNlcnZpY2UgLgokIGRvY2tlciBydW4gLWUgIlNQUklOR19QUk9GSUxFU19BQ1RJVkU9aW4tbWVtb3J5LWRiIiAtLW5hbWUgY2FtcHNpdGUtYm9va2luZy1zZXJ2aWNlIC1kIGNhbXBzaXRlLWJvb2tpbmctc2VydmljZQokIGRvY2tlciBsb2dzIC1mIGNhbXBzaXRlLWJvb2tpbmctc2VydmljZSAKYGBgCgpUaGUgU3dhZ2dlciBVSSBpcyBhdmFpbGFibGUgYXQgYGh0dHA6Ly88Y29udGFpbmVyLWlwPjo4MDgwL3N3YWdnZXItdWkuaHRtbGAuIFRvIGdldCB0aGUgY29udGFpbmVyIElQCmFkZHJlc3MsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgY29uc29sZQokIGRvY2tlciBpbnNwZWN0IC1mICd7e3JhbmdlIC5OZXR3b3JrU2V0dGluZ3MuTmV0d29ya3N9fXt7LklQQWRkcmVzc319e3tlbmR9fScgY2FtcHNpdGUtYm9va2luZy1zZXJ2aWNlCmBgYAoKVmlhIHRoZSBob3N0IG1hY2hpbmUgb24gcG9ydCA4MDoKYGBgY29uc29sZQokIGRvY2tlciBydW4gLWUgIlNQUklOR19QUk9GSUxFU19BQ1RJVkU9aW4tbWVtb3J5LWRiIiAtLW5hbWUgY2FtcHNpdGUtYm9va2luZy1zZXJ2aWNlIC1wIDgwOjgwODAgLWQgY2FtcHNpdGUtYm9va2luZy1zZXJ2aWNlCmBgYApUaGUgU3dhZ2dlciBVSSBpcyBhdmFpbGFibGUgYXQgYGh0dHA6Ly9sb2NhbGhvc3Q6ODAvc3dhZ2dlci11aS5odG1sYCBvciBgaHR0cDovL2hvc3QtaXA6ODAvc3dhZ2dlci11aS5odG1sYC4KCi4uLiBvciB3aXRoIGFuIFtpbWFnZSBmcm9tIERvY2tlciBIdWJdKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9pYmFpYm9yb2RpbmUvY2FtcHNpdGUtYm9va2luZyk6CmBgYGNvbnNvbGUKJCBkb2NrZXIgcnVuIC1lICJTUFJJTkdfUFJPRklMRVNfQUNUSVZFPWluLW1lbW9yeS1kYiIgLS1uYW1lIGNhbXBzaXRlLWJvb2tpbmctc2VydmljZSAtcCA4MDo4MDgwIC1kIGliYWlib3JvZGluZS9jYW1wc2l0ZS1ib29raW5nLXNlcnZpY2UKYGBgCi4uLiBvciB3aXRoIGluLW1lbW9yeSBEQiBbZG9ja2VyLWNvbXBvc2VdKC4uL2NvbnRhaW5lci9kb2NrZXItY29tcG9zZS55bWwpOgpgYGBjb25zb2xlCiQgZG9ja2VyIGNvbXBvc2UgLWYgY29udGFpbmVyL2RvY2tlci1jb21wb3NlLnltbCB1cCAtZApgYGAKLi4uIG9yIHdpdGggTXlTUUwgW2RvY2tlci1jb21wb3NlXSguLi9jb250YWluZXIvY2FtcHNpdGUtYm9va2luZy1zZXJ2aWNlLW15c3FsL2RvY2tlci1jb21wb3NlLnltbCk6CmBgYGNvbnNvbGUKJCBkb2NrZXIgY29tcG9zZSAtZiBjb250YWluZXIvY2FtcHNpdGUtYm9va2luZy1zZXJ2aWNlLW15c3FsL2RvY2tlci1jb21wb3NlLnltbCB1cCAtZApgYGAKIAojIyBUZXN0cwoKIyMjIE1hdmVuCiogUnVuIG9ubHkgdW5pdCB0ZXN0czoKYGBgYmFzaAokIG12biBjbGVhbiB0ZXN0CmBgYAoqIFJ1biBvbmx5IGludGVncmF0aW9uIHRlc3RzOgpgYGBiYXNoCiQgbXZuIGNsZWFuIGZhaWxzYWZlOmludGVncmF0aW9uLXRlc3QKYGBgCiogUnVuIHVuaXQgYW5kIGludGVncmF0aW9uIHRlc3RzOgpgYGBiYXNoCiQgbXZuIGNsZWFuIHZlcmlmeQpgYGAKKiBSdW4gU29uYXJDbG91ZCBhbmFseXNpcywgaW5jbHVkaW5nIHRlc3QgY292ZXJhZ2UsIGNvZGUgc21lbGxzLCB2dWxuZXJhYmlsaXRpZXMsIGV0Yy46CmBgYGJhc2gKJCBtdm4gY2xlYW4gdmVyaWZ5IHNvbmFyOnNvbmFyIC1Ec29uYXIubG9naW49PFNPTkFSX1RPS0VOPgpgYGAKCiMjIyBTd2FnZ2VyIFVJClRoZSBBUEkgY2FuIGJlIHRlc3RlZCB2aWEgdGhlIFN3YWdnZXIgVUk6CgohW1N3YWdnZXIgVUkgTWFpbiBWaWV3XSgvcmVhZG1lL3N3YWdnZXItbWFpbi12aWV3LnBuZykKCkZvciBleGFtcGxlLCB0byBhZGQgYSBuZXcgYm9va2luZywgZXhwYW5kIHRoZSBgUE9TVGAgb3BlcmF0aW9uLiBUaGVuIGNsaWNrIG9uIHRoZSBgVHJ5IGl0IG91dGAsIGFkZAp0aGUgcGF5bG9hZCBiZWxvdyB0byB0aGUgYFJlcXVlc3QgQm9keWAgdGV4dCBhcmVhLCBhbmQgY2xpY2sgb24gdGhlIGBFeGVjdXRlYDoKCmBgYGpzb24KewogICJjYW1wc2l0ZUlkIjogMSwKICAiZW1haWwiOiAiSm9obiBTbWl0aCIsCiAgImZ1bGxOYW1lIjogImpvaG4uc21pdGhAZW1haWwuY29tIiwKICAic3RhcnREYXRlIjogIjIwMjMtMTEtMTkiLAogICJlbmREYXRlIjogIjIwMjMtMTEtMjEiLAogICJhY3RpdmUiOiB0cnVlCn0KYGBgCiFbU3dhZ2dlciBVSSBBZGQgQm9va2luZyAxXSgvcmVhZG1lL3N3YWdnZXItYWRkLWJvb2tpbmctMS5wbmcpCgpJZiB0aGUgb3BlcmF0aW9uIGlzIHN1Y2Nlc3NmdWwsIHlvdSB3aWxsIGdldCB0aGUgZm9sbG93aW5nIHJlc3BvbnNlOgoKIVtTd2FnZ2VyIFVJIEFkZCBCb29raW5nIDFdKC9yZWFkbWUvc3dhZ2dlci1hZGQtYm9va2luZy0yLnBuZykKCiMjIyBDb25jdXJyZW50IFRlc3RzCgpTdGFydCBhbiBpbnN0YW5jZSBvZiB0aGUgQ2FtcHNpdGUgQm9va2luZyBBUEkgdmlhIERvY2tlciBDb21wb3NlIGVpdGhlcgppbiBbdGhlIGluLW1lbW9yeS1kYl0oLi4vY29udGFpbmVyL2RvY2tlci1jb21wb3NlLnltbCkgb3IKaW4gW215c3FsXSguLi9jb250YWluZXIvY2FtcHNpdGUtYm9va2luZy1zZXJ2aWNlLW15c3FsL2RvY2tlci1jb21wb3NlLnltbCkgcHJvZmlsZS4KCmBgYGJhc2gKJCBkb2NrZXItY29tcG9zZS55bWwgdXAgLWQKYGBgCgojIyMjIEJvb2tpbmdzIENyZWF0aW9uCgpFeGVjdXRlIHRoZSBbY29uY3VycmVudC1jcmVhdGUtYm9va2luZ3Muc2hdKC4uL3NjcmlwdC90ZXN0L2NvbmN1cnJlbnQtY3JlYXRlLWJvb2tpbmdzLnNoKSBzY3JpcHQgdG8Kc2ltdWxhdGUgY29uY3VycmVudCBib29raW5nIGNyZWF0aW9uIGZvciB0aGUgc2FtZSBib29raW5nIGRhdGVzOgoKYGBgYmFzaAokIC4vc2NyaXB0L3Rlc3QvY29uY3VycmVudC1jcmVhdGUtYm9va2luZ3Muc2ggMjAyMy0xMS0xNiAyMDIzLTExLTE3IGh0dHA6L2xvY2FsaG9zdDo4MApgYGAKVGhlIHJlc3BvbnNlIHNob3VsZCBiZSBhcyBmb2xsb3dzIGFmdGVyIGZvcm1hdHRpbmcsIGkuZS4sIG9ubHkgb25lIGJvb2tpbmcgd2FzIGNyZWF0ZWQ6CmBgYGpzb24KWwogIHsKICAgICJ1dWlkIjogIjRkYTE4MThjLTJkOWUtNGVmZS1iNTlkLTM4OTE1ZDZiYzVkMyIsCiAgICAidmVyc2lvbiI6IDAsCiAgICAiY2FtcHNpdGVJZCI6IDEsCiAgICAiZW1haWwiOiAiam9obi5zbWl0aC4yQGVtYWlsLmNvbSIsCiAgICAiZnVsbE5hbWUiOiAiSm9obiBTbWl0aCAyIiwKICAgICJzdGFydERhdGUiOiAiMjAyMy0xMS0xNiIsCiAgICAiZW5kRGF0ZSI6ICIyMDIzLTExLTE3IiwKICAgICJhY3RpdmUiOiB0cnVlCiAgfSwKICB7CiAgICAic3RhdHVzIjogNDAwLAogICAgIm1lc3NhZ2UiOiAiTm8gdmFjYW50IGRhdGVzIGF2YWlsYWJsZSBmcm9tIDIwMjMtMTEtMTYgdG8gMjAyMy0xMS0xNyIsCiAgICAidGltZXN0YW1wIjogIjIwMjMtMTEtMTJUMjA6MzE6MjMuNzUxKzAwOjAwIiwKICAgICJzdWJFcnJvcnMiOiBbXQogIH0sCiAgewogICAgInN0YXR1cyI6IDQwMCwKICAgICJtZXNzYWdlIjogIk5vIHZhY2FudCBkYXRlcyBhdmFpbGFibGUgZnJvbSAyMDIzLTExLTE2IHRvIDIwMjMtMTEtMTciLAogICAgInRpbWVzdGFtcCI6ICIyMDIzLTExLTEyVDIwOjMxOjIzLjc1NiswMDowMCIsCiAgICAic3ViRXJyb3JzIjogW10KICB9Cl0KYGBgCgojIyMjIEJvb2tpbmcgVXBkYXRlCgpFeGVjdXRlIHRoZSBbY29uY3VycmVudC11cGRhdGUtYm9va2luZy5zaF0oLi4vc2NyaXB0L3Rlc3QvY29uY3VycmVudC11cGRhdGUtYm9va2luZy5zaCkgc2NyaXB0IHRvCnNpbXVsYXRlIGNvbmN1cnJlbnQgdXBkYXRlcyBmb3IgdGhlIHNhbWUgYm9va2luZzoKCmBgYGJhc2gKJCAuL3NjcmlwdC90ZXN0L2NvbmN1cnJlbnQtdXBkYXRlLWJvb2tpbmcuc2ggMjAyMy0xMS0xNSAyMDIzLTExLTE2IGh0dHA6L2xvY2FsaG9zdDo4MApgYGAKVGhlIHJlc3BvbnNlIHNob3VsZCBiZSBhcyBmb2xsb3dzIGFmdGVyIGZvcm1hdHRpbmcsIGkuZS4sIG9ubHkgb25lIGJvb2tpbmcgd2FzIHVwZGF0ZWQ6CmBgYGpzb24KWwogIHsKICAgICJ1dWlkIjogImVhMTAwMDhiLWM2MGUtNDFmOS05N2JiLTMxM2U5NTAyZTdmNCIsCiAgICAidmVyc2lvbiI6IDEsCiAgICAiY2FtcHNpdGVJZCI6IDMsCiAgICAiZW1haWwiOiAiam9obi5zbWl0aC4xQGVtYWlsLmNvbSIsCiAgICAiZnVsbE5hbWUiOiAiSm9obiBTbWl0aCAxIiwKICAgICJzdGFydERhdGUiOiAiMjAyMy0xMS0xNSIsCiAgICAiZW5kRGF0ZSI6ICIyMDIzLTExLTE2IiwKICAgICJhY3RpdmUiOiB0cnVlCiAgfSwKICB7CiAgICAic3RhdHVzIjogNDA5LAogICAgIm1lc3NhZ2UiOiAiT3B0aW1pc3RpYyBsb2NraW5nIGVycm9yOiBjb20ua2lyb3VsZS5jYW1wc2l0ZWJvb2tpbmcucmVwb3NpdG9yeS5lbnRpdHkuQm9va2luZ0VudGl0eSB3aXRoIGlkIDEgd2FzIHVwZGF0ZWQgYnkgYW5vdGhlciB0cmFuc2FjdGlvbiIsCiAgICAidGltZXN0YW1wIjogIjIwMjMtMTEtMTJUMjA6Mjk6NTUuMDA4KzAwOjAwIiwKICAgICJzdWJFcnJvcnMiOiBbXQogIH0KXQpgYGAKCiMjIyBCYXNpYyBMb2FkIFRlc3RpbmcgCkJhc2ljIGxvYWQgdGVzdGluZyBmb3IgcmV0cmlldmluZyB2YWNhbnQgZGF0ZXMgY2FuIGJlIHBlcmZvcm1lZCB3aXRoIHRoZSBBcGFjaGVCZW5jaCBieSBleGVjdXRpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgpgYGBCYXNoCiQgZG9ja2VyLWNvbXBvc2UueW1sIHVwIC1kCiQgYWIgLW4gMTAwMDAgLWMgMTAwIC1rIGh0dHA6Ly9sb2NhbGhvc3Q6ODAvYXBpL3YyL2Jvb2tpbmcvdmFjYW50LWRhdGVzCmBgYAoqICoqLW4gMTAwMDAqKiBpcyB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIHRvIG1ha2UKKiAqKi1jIDEwMCoqIGlzIHRoZSBudW1iZXIgb2YgY29uY3VycmVudCByZXF1ZXN0cyB0byBtYWtlIGF0IGEgdGltZQoqICoqLWsqKiBzZW5kcyB0aGUgKipLZWVwQWxpdmUqKiBoZWFkZXIsIHdoaWNoIGFza3MgdGhlIHdlYiBzZXJ2ZXIgdG8gbm90IHNodXQgZG93biB0aGUgY29ubmVjdGlvbiBhZnRlciBlYWNoIHJlcXVlc3QgaXMgZG9uZSwgYnV0IHRvIGluc3RlYWQga2VlcCByZXVzaW5nIGl0CgpSZXN1bHQ6CmBgYApCZW5jaG1hcmtpbmcgbG9jYWxob3N0IChiZSBwYXRpZW50KQpDb21wbGV0ZWQgMTAwMCByZXF1ZXN0cwpDb21wbGV0ZWQgMjAwMCByZXF1ZXN0cwpDb21wbGV0ZWQgMzAwMCByZXF1ZXN0cwpDb21wbGV0ZWQgNDAwMCByZXF1ZXN0cwpDb21wbGV0ZWQgNTAwMCByZXF1ZXN0cwpDb21wbGV0ZWQgNjAwMCByZXF1ZXN0cwpDb21wbGV0ZWQgNzAwMCByZXF1ZXN0cwpDb21wbGV0ZWQgODAwMCByZXF1ZXN0cwpDb21wbGV0ZWQgOTAwMCByZXF1ZXN0cwpDb21wbGV0ZWQgMTAwMDAgcmVxdWVzdHMKRmluaXNoZWQgMTAwMDAgcmVxdWVzdHMKClNlcnZlciBTb2Z0d2FyZTogICAgICAgIApTZXJ2ZXIgSG9zdG5hbWU6ICAgICAgICBsb2NhbGhvc3QKU2VydmVyIFBvcnQ6ICAgICAgICAgICAgODAKCkRvY3VtZW50IFBhdGg6ICAgICAgICAgIC9hcGkvdjIvYm9va2luZy92YWNhbnQtZGF0ZXMKRG9jdW1lbnQgTGVuZ3RoOiAgICAgICAgMTU5IGJ5dGVzCgpDb25jdXJyZW5jeSBMZXZlbDogICAgICAxMDAKVGltZSB0YWtlbiBmb3IgdGVzdHM6ICAgMi4xMzQgc2Vjb25kcwpDb21wbGV0ZSByZXF1ZXN0czogICAgICAxMDAwMApGYWlsZWQgcmVxdWVzdHM6ICAgICAgICAwCk5vbi0yeHggcmVzcG9uc2VzOiAgICAgIDEwMDAwCktlZXAtQWxpdmUgcmVxdWVzdHM6ICAgIDAKVG90YWwgdHJhbnNmZXJyZWQ6ICAgICAgMjcyMDAwMCBieXRlcwpIVE1MIHRyYW5zZmVycmVkOiAgICAgICAxNTkwMDAwIGJ5dGVzClJlcXVlc3RzIHBlciBzZWNvbmQ6ICAgIDQ2ODUuOTUgWyMvc2VjXSAobWVhbikKVGltZSBwZXIgcmVxdWVzdDogICAgICAgMjEuMzQwIFttc10gKG1lYW4pClRpbWUgcGVyIHJlcXVlc3Q6ICAgICAgIDAuMjEzIFttc10gKG1lYW4sIGFjcm9zcyBhbGwgY29uY3VycmVudCByZXF1ZXN0cykKVHJhbnNmZXIgcmF0ZTogICAgICAgICAgMTI0NC43MCBbS2J5dGVzL3NlY10gcmVjZWl2ZWQKCkNvbm5lY3Rpb24gVGltZXMgKG1zKQogICAgICAgICAgICAgIG1pbiAgbWVhblsrLy1zZF0gbWVkaWFuICAgbWF4CkNvbm5lY3Q6ICAgICAgICAwICAgIDEgICAwLjggICAgICAxICAgICAgIDcKUHJvY2Vzc2luZzogICAgIDIgICAyMCAgIDkuNiAgICAgMTkgICAgICA4OApXYWl0aW5nOiAgICAgICAgMSAgIDE5ICAgOS4wICAgICAxOCAgICAgIDg3ClRvdGFsOiAgICAgICAgICAyICAgMjEgICA5LjMgICAgIDE5ICAgICAgODgKClBlcmNlbnRhZ2Ugb2YgdGhlIHJlcXVlc3RzIHNlcnZlZCB3aXRoaW4gYSBjZXJ0YWluIHRpbWUgKG1zKQogIDUwJSAgICAgMTkKICA2NiUgICAgIDIzCiAgNzUlICAgICAyNQogIDgwJSAgICAgMjcKICA5MCUgICAgIDMyCiAgOTUlICAgICAzOAogIDk4JSAgICAgNDcKICA5OSUgICAgIDU1CiAxMDAlICAgICA4OCAobG9uZ2VzdCByZXF1ZXN0KQpgYGAKCiMjIENvbnRpbnVvdXMgSW50ZWdyYXRpb24KCkNvbnRpbnVvdXMgaW50ZWdyYXRpb24gaXMgaW1wbGVtZW50ZWQgdXNpbmcgR2l0SHViIEFjdGlvbnMsIGFuZCBpdCBpbmNsdWRlcwp0aGUgYEJ1aWxkIE1hc3RlciBCcmFuY2hgLCBgQnVpbGQgb24gUHVsbCBSZXF1ZXN0YCwgYEdlbmVyYXRlIFJFQURNRSBUT0NgLCBhbmQgYFBlcmZvcm0gUmVsZWFzZWAKd29ya2Zsb3dzOgoKIVtHaXRIdWIgQWN0aW9uc10oL3JlYWRtZS9naXRodWItYWN0aW9ucy5wbmcpCgojIyMgQnVpbGQgTWFzdGVyIEJyYW5jaAoKVGhpcyB3b3JrZmxvdyBpcyBleGVjdXRlZCBhdXRvbWF0aWNhbGx5IG9uIGFueSBjb21taXQgdG8gdGhlIGBtYXN0ZXJgIGJyYW5jaCBhbmQgY29uc2lzdHMgb2YKdGhlIGBTb25hckNsb3VkIFNjYW5gIGFuZCBgU25hcHNob3QgUHVibGlzaGluZ2Agam9iczoKCiFbQnVpbGQgTWFzdGVyIEJyYW5jaCBXb3JrZmxvd10oL3JlYWRtZS9naXRodWItYWN0aW9ucy1idWlsZC1tYXN0ZXItYnJhbmNoLnBuZykKCiMjIyBCdWlsZCBvbiBQdWxsIFJlcXVlc3QKClRoaXMgd29ya2Zsb3cgaXMgZXhlY3V0ZWQgYXV0b21hdGljYWxseSBvbiBhbnkgcHVsbCByZXF1ZXN0IGFuZCBjb25zaXN0cyBvZgp0aGUgYFVuaXQgJiBTb25hckNsb3VkIFNjYW5gIGpvYjoKCiFbQnVpbGQgb24gUHVsbCBSZXF1ZXN0IFdvcmtmbG93XSgvcmVhZG1lL2dpdGh1Yi1hY3Rpb25zLWJ1aWxkLW9uLXB1bGwtcmVxdWVzdC5wbmcpCgojIyMgR2VuZXJhdGUgUkVBRE1FIFRPQwoKVGhpcyB3b3JrZmxvdyBpcyBleGVjdXRlZCBhdXRvbWF0aWNhbGx5IG9uIGFueSB1cGRhdGUgb2YgdGhlIGByZWFkbWUvUkVBRE1FLm1kYCBmaWxlIHB1c2hlZCB0bwp0aGUgYG1hc3RlcmAgYnJhbmNoIGFuZCBjb25zaXN0cyBvZiB0aGUgYEdlbmVyYXRlIFRPQ2Agam9iOgoKIVtHZW5lcmF0ZSBSRUFETUUgVE9DIFdvcmtmbG93XSgvcmVhZG1lL2dpdGh1Yi1hY3Rpb25zLWdlbmVyYXRlLXJlYWRtZS10b2MucG5nKQoKIyMjIFBlcmZvcm0gUmVsZWFzZQpUaGlzIHdvcmtmbG93IGlzIGV4ZWN1dGVkIG1hbnVhbGx5IGFuZCBjb25zaXN0cyBvZiB0aGUgYE1hdmVuIFJlbGVhc2VgIGFuZCBgRG9ja2VyIEltYWdlYCBqb2JzOgoKIVtQZXJmb3JtIFJlbGVhc2UgV29ya2Zsb3ddKC9yZWFkbWUvZ2l0aHViLWFjdGlvbnMtcGVyZm9ybS1yZWxlYXNlLnBuZykKClRoZSBgUmVsZWFzZSBWZXJzaW9uYCBwYXJhbWV0ZXIgdmFsdWUgc2hvdWxkIGJlIHByb3ZpZGVkIGJlZm9yZSBleGVjdXRpbmcgdGhpcyAgd29ya2Zsb3c6CgohW1BlcmZvcm0gUmVsZWFzZSBXb3JrZmxvd10oL3JlYWRtZS9naXRodWItYWN0aW9ucy1wZXJmb3JtLXJlbGVhc2UtcGFyYW1ldGVyLnBuZykK readmeEtag: '"31ed882b5511c5fd30c0828e941f8b76391fbb96"' readmeLastModified: Mon, 23 Sep 2024 00:10:46 GMT repositoryId: 154585856 description: An example REST API service built using Java and Spring Boot 3. created: '2018-10-25T00:16:09Z' updated: '2025-07-04T21:13:47Z' language: Java archived: false stars: 18 watchers: 1 forks: 12 owner: igor-baiborodine logo: https://avatars.githubusercontent.com/u/1027701?v=4 repoEtag: '"068fdc9282ecef950afa23d8ad515930bc90cb37c1702116e23776ea67a76ce2"' repoLastModified: Fri, 04 Jul 2025 21:13:47 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/mikuhuyo/file-service v3: true id: 22c13f95118be85ee3165ce5f382e8ad repositoryMetadata: base64Readme: >- IyDmlofku7bmnI3liqEKClshW0dpdEh1YiBsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL21pa3VodXlvL2ZpbGUtc2VydmljZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWt1aHV5by9maWxlLXNlcnZpY2UvYmxvYi9tYXN0ZXIvTElDRU5TRSkKWyFbR2l0SHViIGlzc3Vlc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvaXNzdWVzL21pa3VodXlvL2ZpbGUtc2VydmljZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWt1aHV5by9maWxlLXNlcnZpY2UvaXNzdWVzKQpbIVtHaXRIdWIgc3RhcnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL21pa3VodXlvL2ZpbGUtc2VydmljZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWt1aHV5by9maWxlLXNlcnZpY2Uvc3RhcmdhemVycykKWyFbR2l0SHViIGZvcmtzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9mb3Jrcy9taWt1aHV5by9maWxlLXNlcnZpY2UpXShodHRwczovL2dpdGh1Yi5jb20vbWlrdWh1eW8vZmlsZS1zZXJ2aWNlL25ldHdvcmspCiFbSmF2YSB2ZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0pkay0xMS15ZWxsb3cpCiFbU3ByaW5nQm9vdCB2ZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1NwcmluZ0Jvb3QtMi4zLjEyLlJFTEVBU0UtYnJpZ2h0Z3JlZW4pCgo+IGh0dHA6Ly8xMjcuMC4wLjE6NTEwMDAvc3dhZ2dlci11aS5odG1sCgojIyDlkK/liqgKCmBgYHlhbWwKdmVyc2lvbjogIjMuNyIKc2VydmljZXM6CiAgbWluaW86CiAgICBpbWFnZTogbWluaW8vbWluaW86UkVMRUFTRS4yMDIyLTA4LTAyVDIzLTU5LTE2WgogICAgcHJpdmlsZWdlZDogdHJ1ZQogICAgY29udGFpbmVyX25hbWU6IG1pbmlvCiAgICBwb3J0czoKICAgICAgLSAiOTAwMDo5MDAwIgogICAgICAtICI5MDAxOjkwMDEiCiAgICB2b2x1bWVzOgogICAgICAtIC9yb290L2RvY2tlci9taW5pby9kYXRhMTovZGF0YTEKICAgICAgLSAvcm9vdC9kb2NrZXIvbWluaW8vZGF0YTI6L2RhdGEyCiAgICBjb21tYW5kOiBzZXJ2ZXIgLS1jb25zb2xlLWFkZHJlc3MgIjo5MDAxIiBodHRwOi8vbWluaW8vZGF0YXsxLi4uMn0KICAgIGVudmlyb25tZW50OgogICAgICAtIE1JTklPX1JPT1RfVVNFUj1yb290CiAgICAgIC0gTUlOSU9fUk9PVF9QQVNTV09SRD15dWVsaW1pbnZjQG91dGxvb2suY29tCiAgICAgICMtIE1JTklPX0FDQ0VTU19LRVk9QUtJQUlPU0ZPRE5ON0VYQU1QTEUKICAgICAgIy0gTUlOSU9fU0VDUkVUX0tFWT13SmFsclhVdG5GRU1JL0s3TURFTkcvYlB4UmZpQ1lFWEFNUExFS0VZCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDogWyJDTUQiLCAiY3VybCIsICItZiIsICJodHRwOi8vbG9jYWxob3N0OjkwMDAvbWluaW8vaGVhbHRoL2xpdmUiXQogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAzCmBgYAoKPiBkb2NrZXItY29tcG9zZSB1cCAtZAoKIyMg54m55Yir6bij6LCiCgojIyMg5YWz5rOo6ICFCgpbIVtTdGFyZ2F6ZXJzIHJlcG8gcm9zdGVyIGZvciBAbWlrdWh1eW8vZmlsZS1zZXJ2aWNlXShodHRwczovL3JlcG9yb3N0ZXIuY29tL3N0YXJzL21pa3VodXlvL2ZpbGUtc2VydmljZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWt1aHV5by9maWxlLXNlcnZpY2Uvc3RhcmdhemVycykKCiMjIyDmlLbol4/ogIUKClshW0ZvcmtlcnMgcmVwbyByb3N0ZXIgZm9yIEBtaWt1aHV5by9maWxlLXNlcnZpY2VdKGh0dHBzOi8vcmVwb3Jvc3Rlci5jb20vZm9ya3MvbWlrdWh1eW8vZmlsZS1zZXJ2aWNlKV0oaHR0cHM6Ly9naXRodWIuY29tL21pa3VodXlvL2ZpbGUtc2VydmljZS9uZXR3b3JrL21lbWJlcnMpCgojIyDor7fov5nkuKpi5Zad5p2v5rC0PwoKIVtBbGlwYXldKC4vaW1hZ2UvYWxpcGF5cy5wbmcpCgotLS0KCiFbV2VDaGF0UGF5XSguL2ltYWdlL3dlY2hhdHMucG5nKQo= readmeEtag: '"c8a92ce1d18dad63b05f91592df245a5eec41253"' readmeLastModified: Mon, 27 Feb 2023 13:11:35 GMT repositoryId: 400815425 description: 单纯的文件服务, 目前仅仅集成了minio(人在电信外包差点没了) created: '2021-08-28T14:40:30Z' updated: '2025-07-28T17:05:26Z' language: Java archived: false stars: 19 watchers: 1 forks: 6 owner: mikuhuyo logo: https://avatars.githubusercontent.com/u/42843191?v=4 repoEtag: '"4032751b7a8c0a2209e20da4d6633cd1d7a63ebcdeeccf2cd58ba97c5f7ffe95"' repoLastModified: Mon, 28 Jul 2025 17:05:26 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/openehr/specifications-its-rest v3: true id: 975080575406c455891722c24cae7045 repositoryMetadata: base64Readme: >- IyBzcGVjaWZpY2F0aW9ucy1JVFMtUkVTVCAtIG9wZW5FSFIgUkVTVCBBUEkgU3BlY2lmaWNhdGlvbnMKClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyB0aGUgZG9jdW1lbnRzIGFuZCBzb3VyY2VzIChpbiBodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjNbT3BlbkFQSSAzLjBdIGZvcm1hdCkgb2YgdGhlIG9wZW5FSFIgUkVTVCBBUEkgc3BlY2lmaWNhdGlvbnMuClRoZSBsYXRlc3QgcHVibGlzaGVkIGZvcm0gY2FuIGJlIGFjY2Vzc2VkIGF0IGh0dHBzOi8vc3BlY2lmaWNhdGlvbnMub3BlbmVoci5vcmcvcmVsZWFzZXMvSVRTLVJFU1QvbGF0ZXN0W0lUUy1SRVNUIHNwZWNpZmljYXRpb25zIGluZGV4IHBhZ2VdLgo= readmeEtag: '"4c8cf33553f29e93cdebed4245936615305d036c"' readmeLastModified: Tue, 12 Mar 2024 09:28:48 GMT repositoryId: 40630650 description: openEHR REST API Specifications created: '2015-08-13T00:20:48Z' updated: '2025-12-17T16:28:16Z' language: PHP archived: false stars: 18 watchers: 19 forks: 18 owner: openEHR logo: https://avatars.githubusercontent.com/u/1481762?v=4 license: Apache-2.0 repoEtag: '"6f791c6a80e3e1e29c9b4cb17705b5eda92273c1414d0cceafc35942de5a394c"' repoLastModified: Wed, 17 Dec 2025 16:28:16 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/yinzhenyu-su/api-typing v3: true id: 79905bfab17d50136d875818f7c1066e repositoryMetadata: base64Readme: >- IyBhcGktdHlwaW5nCgpbIVtucG0gdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZW4ubmV0L25wbS92L2FwaS10eXBpbmcpXShodHRwczovL25wbS5pbS9hcGktdHlwaW5nKQoKIyMgIVthcGktdHlwaW5nXShodHRwczovL2dpdGh1Yi5jb20veWluemhlbnl1LXN1L2FwaS10eXBpbmcvYmxvYi9tYWluL2FwaS10eXBpbmcuZ2lmP3Jhdz10cnVlKQoKLS0tCgpFbmdsaXNoIHwgW+eugOS9k+S4reaWh10oLi9SRUFETUUuemgtSGFucy5tZCkgfCBbRGVlcFdpa2ldKGh0dHBzOi8vZGVlcHdpa2kuY29tL3lpbnpoZW55dS1zdS9hcGktdHlwaW5nKQoKIyMgQSBzdHJvbmcgdHlwZS1oaW50IGh0dHAgY2xpZW50IGZyYW13b3JrKGJhc2VkIG9uIGF4aW9zKS4KCiAgICBEZWFyIGZyb250LWVuZCBjb2xsZWFndWVzLCBhcmUgeW91IGZlZCB1cCB3aXRoIHRoZSBpbnRlcmZhY2Ugd2l0aCB0aGUgYmFjay1lbmQgZXZlcnkgZGF5LCBhZGp1c3RpbmcgdGhlIGludGVyZmFjZSBwYXRoIGFuZCBwYXJhbWV0ZXIgdHJhbnNmZXIgZm9ybWF0PyBUaXJlZCBvZiB2aWV3aW5nIGJhY2tlbmQgZG9jdW1lbnRhdGlvbj8gQXJlIHlvdSB0aXJlZCBvZiBjaGVja2luZyBhbmQgc3luY2hyb25pemluZyB0aGUgaW50ZXJmYWNlIGZpZWxkIGNoYW5nZXMgYWZ0ZXIgZWFjaCB1cGRhdGU/IEl0J3MgdGltZSB0byBtYWtlIHRoZXNlIGpvYnMgYSBsaXR0bGUgZWFzaWVyLgoKIyMgSW5zdGFsbAoKYGBgYmFzaApwbnBtIGkgYXBpLXR5cGluZwpgYGAKCiMjIFVzYWdlCgoxLiAgc2V0IGEgc2NyaXB0IHRvIHJ1biBgZ2V0LXR5cGVzYCBpbiBgcGFja2FnZS5qc29uYAoKICAgIGBgYGpzb24KICAgIHsKICAgICAgInNjcmlwdHMiOiB7CiAgICAgICAgImdldC10eXBlcyI6ICJnZXQtdHlwZXMgXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9tYWluL2V4YW1wbGVzL3YzLjAvcGV0c3RvcmUtZXhwYW5kZWQuanNvblwiIFwiLi9hcGktdHlwaW5nLW1ldGEuZC50c1wiIgogICAgICB9CiAgICB9CiAgICBgYGAKCiAgICB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBvcGVuYXBpIGRlZmluaXRpb24gZmlsZSwganNvbiBmb3JtYXQuCiAgICB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGF1dG8tZ2VuZXJhdGVkIHR5cGUgZGVmaW5ldGlvbiBmaWxlIG5hbWUgd2l0aCBkZWZhdWx0IHZhbHVlIGBhcGktdHlwaW5nLW1ldGEuZC50c2AKCjIuICBydW4KCiAgICBgYGBiYXNoCiAgICBwbnBtIHJ1biBnZXQtdHlwZXMKICAgIGBgYAoKICAgIHRoZSB0eXBlIGRlZmluaXRpb24gZmlsZSB3b3VsZCBiZSBnZW5lcmF0ZWQgaW4geW91ciBwcm9qZWN0IHJvb3QuCgozLiAgYWZ0ZXIgYGFwaS10eXBpbmctbWV0YS5kLnRzYCBnZW5ncmF0ZWQgaW4geW91ciBwcm9qZWN0IHJvb3QuIG1ha2Ugc3VyZSB5b3VyIGB0c2NvbmZpZy5qc29uYCBpbmNsdWRlIHRoaXMgZGVjbGFyZS4KCiAgICBgYGBqc29uCiAgICB7CiAgICAgICJpbmNsdWRlIjogWyJhcGktdHlwaW5nLW1ldGEuZC50cyJdCiAgICB9CiAgICBgYGAKCjQuICBpbXBvcnQgYW5kIGVuam95IGl0IQoKICAgIGBgYHRzCiAgICBpbXBvcnQgeyBjcmVhdGVIVFRQQ2xpZW50IH0gZnJvbSAiYXBpLXR5cGluZyIKICAgIGNyZWF0ZUhUVFBDbGllbnQoeyBiYXNlVVJMOiAieW91ciBiYXNlVVJMIiB9KQogICAgICAucG9zdCgiY2hvb3NlL3VybC93aXRoL2hpbnQiLCB7CiAgICAgICAgLyoqCiAgICAgICAgICogcmVxdWVzdCBmaWVsZCB3aXRoIHR5cGUtaGludAogICAgICAgICAqLwogICAgICB9KQogICAgICAudGhlbigoZCkgPT4gewogICAgICAgIC8qKgogICAgICAgICAqIHJlc3BvbnNlIGZpZWxkIHdpdGggdHlwZS1oaW50CiAgICAgICAgICovCiAgICAgIH0pCiAgICBgYGAK readmeEtag: '"fcfb4df58df26db70be3dd9afc2a7d534469a0da"' readmeLastModified: Sun, 27 Apr 2025 05:08:00 GMT repositoryId: 530271572 description: Axios based HTTP client with type hint created: '2022-08-29T15:06:26Z' updated: '2026-01-17T02:39:06Z' language: TypeScript archived: false stars: 18 watchers: 1 forks: 0 owner: yinzhenyu-su logo: https://avatars.githubusercontent.com/u/16461374?v=4 license: MIT repoEtag: '"ad51ad4541f5c189570249c3d2e1bfb623cb9a26aa8d233fda7ffe36f6febec7"' repoLastModified: Sat, 17 Jan 2026 02:39:06 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/felipementel/deploy.cachorro.api v3: true id: 0812df37e319298aadaf68398b59b2d5 repositoryMetadata: base64Readme: >- IyBERVBMT1kuQ2FjaG9ycm8uQXBpCgohW0ltYWdlbSBwcm9qZXRvIGFwaSBkZSBjYWNob3Jyb10oLi9kb2NzL2ltZ3JlYWRtZTEucG5nKQoKWyFbUXVhbGl0eSBnYXRlXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL3F1YWxpdHlfZ2F0ZT9wcm9qZWN0PWZlbGlwZW1lbnRlbF9ERVBMT1kuQ2FjaG9ycm8uQXBpKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9ZmVsaXBlbWVudGVsX0RFUExPWS5DYWNob3Jyby5BcGkpCiFbYWN0aW9ucy5dKGh0dHBzOi8vZ2l0aHViLmNvbS9mZWxpcGVtZW50ZWwvREVQTE9ZLkNhY2hvcnJvLkFwaS9hY3Rpb25zL3dvcmtmbG93cy9wdXNoLWltYWdlLnlhbWwvYmFkZ2Uuc3ZnP2JyYW5jaD1tYWluKQo8aW1nIGFsdD0iZ2l0bGVha3MgYmFkZ2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9wcm90ZWN0ZWQlMjBieS1naXRsZWFrcy1ibHVlIj4KIyBDb25maWd1cmHDp8OjbyBsb2NhbCBkbyBHaXQKCmBgYApnaXQgY29uZmlnIC0tbG9jYWwgLS1saXN0CmBgYAoKYGBgCmdpdCBjb25maWcgLS1sb2NhbCB1c2VyLm5hbWUgIkZlbGlwZSBBdWd1c3RvIgpgYGAKCmBgYApnaXQgY29uZmlnIC0tbG9jYWwgdXNlci5lbWFpbCBmZWxpcGVtZW50ZWxAaG90bWFpbC5jb20KYGBgCgpgYGAKCmdpdCBmZXRjaCBvcmlnaW4gLS1wcnVuZQoKYGBgCgpQcm9qZXRvIGVkdWNhY2lvbmFsLCBjcmlhZG8gZSBtYW50aWRvIGF0cmF2w6lzIGRvIGNhbmFsIERFUExPWSBubyBZb3VUdWJlLgoKPiBQYXJhIGNyaWFyIGEgaW1hZ2VtLCBhIHBhcnRpciBkbyBkaXJldMOzcmlvIHJvb3QgZGEgYXBsaWNhw6fDo28gKHBhc3RhIHF1ZSBjb250ZW0gbyBhcnF1aXZvIHNsbikKCiMgcHJlLXJlcXVpc2l0b3MgcGFyYSBleGVjdXRhciBvIHByb2pldG8KCjEuIERvY2tlcgoyLiBVbSBjb250YSBubyBBenVyZSBwYXJhIGNyaWFyIHJlY3Vyc29zCgo+IFBhcmEgZXhlY3V0YXIgbyBwcm9qZXRvIGxvY2FsOgoKYGBgCmRvdG5ldCBydW4gLS1wcm9qZWN0IC4vc3JjL0RFUExPWS5DYWNob3Jyby5BcGkvREVQTE9ZLkNhY2hvcnJvLkFwaS5jc3Byb2ogQVNQTkVUQ09SRV9FTlZJUk9OTUVOVD1hYWEgQ29ubmVjdGlvblN0cmluZ3M6QXBwbGljYXRpb25JbnNpZ2h0cz0iYmJiIiBDb25uZWN0aW9uU3RyaW5nczpEZWZhdWx0Q29ubmVjdGlvbj0iY2NjIiBDb25uZWN0aW9uU3RyaW5nczpBcHBDb25maWd1cmF0aW9uPSJkZGQiCkFwcGxpY2F0aW9uSW5zaWdodHM6QXBpS2V5PSJlZWUiIEtleVZhdWx0OlZhdWx0VXJpPSJmZmYiCmBgYAoKPiBQYXJhIGV4ZWN1dGFyIG8gcHJvamV0byBsb2NhbCwgdXRpbGl6YW5kbyBkb2NrZXIKCmBgYApkb2NrZXIgY29udGFpbmVyIHJ1biAtLXJtIC1wIDgwODg6ODAgXAotZSBBU1BORVRDT1JFX0VOVklST05NRU5UPWFhYSBcCi1lIENvbm5lY3Rpb25TdHJpbmdzX19BcHBsaWNhdGlvbkluc2lnaHRzPSJiYmIiIFwKLWUgQ29ubmVjdGlvblN0cmluZ3NfX0RlZmF1bHRDb25uZWN0aW9uPSJjY2MiIFwKLWUgQ29ubmVjdGlvblN0cmluZ3NfX0FwcENvbmZpZ3VyYXRpb249ImRkZCIgXAotZSBBcHBsaWNhdGlvbkluc2lnaHRzX19BcGlLZXk9ImVlZSIgXAotZSBLZXlWYXVsdF9fVmF1bHRVcmk9ImZmZiIgXAotZSBBenVyZUFkX19JbnN0YW5jZT0iaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tIiBcCi1lIEF6dXJlQWRfX0NsaWVudElkPSJnZ2ciIFwKLWUgQXp1cmVBZF9fVGVuYW50SWQ9ImhoaCIgXApmZWxpcGVtZW50ZWwvY2FjaG9ycm8uYXBpOmxhdGVzdApgYGAKCmBgYAphYWEgPSBEZXZlbG9wbWVudHxQcm9kdWN0aW9uCmJiYiA9IENvbm5lY3Rpb25TdHJpbmcgZG8gQXBwbGljYXRpb24gSW5zaWdodHMKY2NjID0gQ29ubmVjdGlvbiBTdHJpbmcgKEF6dXJlIFNRTCBEYXRhYmFzZSBvdSBodHRwczovL2h1Yi5kb2NrZXIuY29tL18vbWljcm9zb2Z0LWF6dXJlLXNxbC1lZGdlKQpkZGQgPSBDb25uZWN0aW9uIHN0cmluZyBkbyBBcHAgQ29uZmlndXJhdGlvbgplZWUgPSBBcGlLZXkgZ2VyYWRhIGRlbnRybyBkbyBBcHBsaWNhdGlvbiBJbnNpZ2h0cwpmZmYgPSBVUkkgZG8gQXp1cmUgS2V5VmF1bHQKZ2dnID0gSWRlbnRpZmljYWRvciBkbyBjbGllbnRlIGNyaWFkbyBubyBFbnRyYSBJRApoaGggPSBJZGVudGlmaWNhZG9yIGRvIFRlbmFudApgYGAKCkNvbWFuZG8gcGFyYSBzdWJpciBvIGJhbmNvIGRlIGRhZG9zIGxvY2FsOgoKYGBgCmRvY2tlciBydW4gLS1jYXAtYWRkIFNZU19QVFJBQ0UgLWUgJ0FDQ0VQVF9FVUxBPTEnIC1lICdNU1NRTF9TQV9QQVNTV09SRD1BYmNkMTIzNCUnIC1lICdNU1NRTF9QSUQ9RGV2ZWxvcGVyJyAtcCAxNDMzOjE0MzMgLS1uYW1lIGF6dXJlc3FsZWRnZSAtZCBtY3IubWljcm9zb2Z0LmNvbS9henVyZS1zcWwtZWRnZToyLjAuMApgYGAKCkNhc28gcXVlaXJhIHRlc3RhciBjb20gb3V0cmEgdGFnLCB1dGlsaXplIG9zIGNvbWFuZG9zIGFiYWl4byBwYXJhIG9idGVyIGEgbGlzdGEgZGUgdGFncwoKYGBgCmh0dHBzOi8vbWNyLm1pY3Jvc29mdC5jb20vdjIvYXp1cmUtc3FsLWVkZ2UvdGFncy9saXN0CmBgYAoKIyBUZXN0ZXMgZGUgdW5pZGFkZQoKVGVjbm9sb2dpYTogWFVuaXQKCjAuIFByZSByZXF1aXNpdG8KICAgU2Vyw6EgbmVjZXNzw6FyaW8gaW5zdGFsYXIgb3MgZG9pcyBwYWNvdGVzIGFiYWl4byBwYXJhIHRlciBzdWNlc3NvIGFvIGV4ZWN1dGFyIG9zIGNvbWFuZG9zIGRlc2NyaXRvcyBuZXNzZSBhcnF1aXZvLgoKYGBgCmRvdG5ldCB0b29sIGluc3RhbGwgLS1nbG9iYWwgZG90bmV0LXJlcG9ydGdlbmVyYXRvci1nbG9iYWx0b29sCmBgYAoKYGBgCmRvdG5ldCB0b29sIGluc3RhbGwgLS1nbG9iYWwgZG90bmV0LWNvdmVyYWdlCmBgYAoKMS4gQ29tbyBFeGVjdXRhcjoKICAgMS4xIEEgcGFydGlyIGRhIHBhc3RhIHNyYyBleGVjdXRlIG8gY29tYW5kbzoKCmBgYApkb3RuZXQgdGVzdApgYGAKCjIuIEdlcmHDp8OjbyBkZSByZWxhdMOzcmlvIGRlIHRlc3RlcwoKICAgMS4xIEEgcGFydGlyIGRhIHBhc3RhIHNyYyBleGVjdXRlIG8gY29tYW5kbzoKCmBgYApkb3RuZXQgdGVzdCAtLWNvbGxlY3Q6IlhQbGF0IENvZGUgQ292ZXJhZ2UiIC0tbG9nZ2VyICJjb25zb2xlO3ZlcmJvc2l0eT1kZXRhaWxlZCIgLS1yZXN1bHRzLWRpcmVjdG9yeSAuLlxUZXN0UmVzdWx0c1xYUGxhdENvZGVDb3ZlcmFnZVwKYGBgCgplIGRlcG9pcyBleGVjdXRlOgoKYGBgCnJlcG9ydGdlbmVyYXRvciAtcmVwb3J0czouLlxUZXN0UmVzdWx0c1xYUGxhdENvZGVDb3ZlcmFnZVwqKlxjb3ZlcmFnZS5jb2JlcnR1cmEueG1sICAtdGFyZ2V0ZGlyOi4uXFRlc3RSZXN1bHRzXFhQbGF0Q29kZUNvdmVyYWdlXENvdmVyYWdlUmVwb3J0IC1yZXBvcnR0eXBlczoiSHRtbDtTb25hclF1YmU7SnNvblN1bW1hcnk7QmFkZ2VzIiAtY2xhc3NmaWx0ZXJzOiItKi5NaWdyYXRpb25zLioiIC12ZXJib3NpdHk6VmVyYm9zZSAtdGl0bGU6Q2FjaG9ycm8uQVBJIC10YWc6Y2FuYWwtZGVwbG95CmBgYAoKb3UKCmBgYAokdmFyID0gKEdldC1EYXRlKS5Ub1N0cmluZygieXl5eU1NZGQtSEhtbXNzIik7IGRvdG5ldC1jb3ZlcmFnZSBjb2xsZWN0ICJkb3RuZXQgdGVzdCIgLWYgeG1sIC1vICIuLlxUZXN0UmVzdWx0c1xEb3RuZXRDb3ZlcmFnZUNvbGxlY3RcJHZhclxjb3ZlcmFnZS5jb2JlcnR1cmEueG1sIgpgYGAKCmUgZGVwb2lzIGV4ZWN1dGU6CgpgYGAKcmVwb3J0Z2VuZXJhdG9yIC1yZXBvcnRzOi4uXFRlc3RSZXN1bHRzXERvdG5ldENvdmVyYWdlQ29sbGVjdFwqKlxjb3ZlcmFnZS5jb2JlcnR1cmEueG1sICAtdGFyZ2V0ZGlyOi4uXFRlc3RSZXN1bHRzXERvdG5ldENvdmVyYWdlQ29sbGVjdFxDb3ZlcmFnZVJlcG9ydCAtcmVwb3J0dHlwZXM6Ikh0bWw7U29uYXJRdWJlO0pzb25TdW1tYXJ5O0JhZGdlcyIgLXZlcmJvc2l0eTpWZXJib3NlIC10aXRsZTpDYWNob3Jyby5BUEkgLXRhZzpjYW5hbC1kZXBsb3kKYGBgCgoxLjIgQSBwYXJ0aXIgZGEgcGFzdGEgc3JjIGV4ZWN1dGUgbyBjb21hbmRvOgoKIyBBbWJpZW50ZSBMb2NhbAoKIyMgU29uYXJRdWJlCgoxLiBDb21hbmRvcyBwYXJhIHN1Ym1ldGVyIG8gY8OzZGlnbyBhbyBzb25hcnF1YmUgZG8gQ29udGFpbmVyCgpgYGAKZG90bmV0IHNvbmFyc2Nhbm5lciBiZWdpbiAvazoiQ2FjaG9ycm9BUEkiIC9kOnNvbmFyLmhvc3QudXJsPSJodHRwOi8vbG9jYWxob3N0OjkwNDQiIC9kOnNvbmFyLnRva2VuPSJ4eHh4eCIgL2Q6c29uYXIuY3MudnNjb3ZlcmFnZXhtbC5yZXBvcnRzUGF0aHM9Y292ZXJhZ2UueG1sIC9kOnNvbmFyLmV4Y2x1c2lvbnM9IioqL01pZ3JhdGlvbnMvKioiCmBgYAoKYGBgCmRvdG5ldCByZXN0b3JlIC5cc3JjXERFUExPWS5DYWNob3Jyby5BcGlcREVQTE9ZLkNhY2hvcnJvLkFwaS5jc3Byb2oKYGBgCgpgYGAKZG90bmV0IGJ1aWxkIC5cc3JjXERFUExPWS5DYWNob3Jyby5BcGlcREVQTE9ZLkNhY2hvcnJvLkFwaS5jc3Byb2ogLS1uby1pbmNyZW1lbnRhbApgYGAKCmBgYApkb3RuZXQtY292ZXJhZ2UgY29sbGVjdCAnZG90bmV0IHRlc3QgLi9zcmMvJyAtZiB4bWwgLW8gJ2NvdmVyYWdlLnhtbCcKYGBgCgpgYGAKZG90bmV0LXNvbmFyc2Nhbm5lciBlbmQgL2Q6c29uYXIudG9rZW49Inh4eHh4IgpgYGAKCi0tLQoKIyBFbnRpdHlGcmFtZXdvcmsgQ29tbWFuZHMKCmBgYAoKZG90bmV0IHRvb2wgaW5zdGFsbCAtLWdsb2JhbCBkb3RuZXQtZWYKCmBgYAoKYGBgCgpkb3RuZXQgZWYgbWlncmF0aW9ucyBhZGQgSW5pdERhdGFiYXNlQVBJIC1zIERFUExPWS5DYWNob3Jyby5BcGkgLXAgREVQTE9ZLkNhY2hvcnJvLkluZnJhLlJlcG9zaXRvcnkgLWMgREVQTE9ZLkNhY2hvcnJvLkluZnJhLlJlcG9zaXRvcnkuQ2FjaG9ycm9EYkNvbnRleHQgLS1vdXRwdXQtZGlyIE1pZ3JhdGlvbnMvQVBJIC12CgpgYGAKCmBgYAoKZG90bmV0IGVmIGRhdGFiYXNlIHVwZGF0ZSBJbml0RGF0YWJhc2VBUEkgLS1zdGFydHVwLXByb2plY3QgREVQTE9ZLkNhY2hvcnJvLkFwaSAtLXByb2plY3QgREVQTE9ZLkNhY2hvcnJvLkluZnJhLlJlcG9zaXRvcnkgLS1jb250ZXh0IERFUExPWS5DYWNob3Jyby5JbmZyYS5SZXBvc2l0b3J5LkNhY2hvcnJvRGJDb250ZXh0IC0tdmVyYm9zZQoKYGBgCgpDb25uZWN0aW9uIFN0cmluZwoKYGBgCgpEYXRhIFNvdXJjZT0xMjcuMC4wLjEsMTQzMztJbml0aWFsIENhdGFsb2c9Q2FjaG9ycm87VXNlciBJZD1zYTtQYXNzd29yZD1BYmNkMTIzNCU7SW50ZWdyYXRlZCBTZWN1cml0eT1GYWxzZTtNdWx0aXBsZUFjdGl2ZVJlc3VsdFNldHM9VHJ1ZTtUcnVzdFNlcnZlckNlcnRpZmljYXRlPXRydWU7CgpgYGAKCiMgQXp1cmUgRW50cmEgSUQKCmBgYAoKaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2VudHJhL2lkZW50aXR5LXBsYXRmb3JtL3YyLW92ZXJ2aWV3CmBgYAoKYGBgCmh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9lbnRyYS9pZGVudGl0eS1wbGF0Zm9ybS9xdWlja3N0YXJ0LXJlZ2lzdGVyLWFwcApgYGAKCmBgYApodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvZW50cmEvaWRlbnRpdHktcGxhdGZvcm0vc2NvcGVzLW9pZGMKYGBgCgpgYGAKCmh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9lbnRyYS9pZGVudGl0eS1wbGF0Zm9ybS9zY2VuYXJpby1wcm90ZWN0ZWQtd2ViLWFwaS1hcHAtY29uZmlndXJhdGlvbj90YWJzPWFzcG5ldGNvcmUjYmVhcmVyLXRva2VuCgpgYGAKCmBgYAoKaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2VudHJhL2lkZW50aXR5LXBsYXRmb3JtL3NjZW5hcmlvLXdlYi1hcHAtc2lnbi11c2VyLWFwcC1jb25maWd1cmF0aW9uP3RhYnM9YXNwbmV0CgpgYGAKCjxici8+Cjxici8+Cjxici8+Cjxici8+Cjxici8+CgojIyBMaW5rIGRlIGRvY3VtZW50YcOnw7VlcyBjaXRhZGFzIGR1cmFudGUgYSBjcmlhw6dhbyBkbyBwcm9qZXRvCgpgYGAKaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2RvdG5ldC9jb3JlL3Rvb2xzL2RvdG5ldApgYGAKCmBgYAoKaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2FzcG5ldC9jb3JlL2Z1bmRhbWVudGFscy9sb2dnaW5nLz92aWV3PWFzcG5ldGNvcmUtNy4wCgpgYGAKCmBgYApodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvZG90bmV0L2NvcmUvY29tcGF0aWJpbGl0eS9jb250YWluZXJzLzguMC9hcHAtdXNlcgoKYGBgCgpgYGAKCmh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9hc3BuZXQvY29yZS9zZWN1cml0eS9hcHAtc2VjcmV0cz92aWV3PWFzcG5ldGNvcmUtNy4wJnRhYnM9d2luZG93cwoKYGBgCgojIyMgR2l0aHViCgpgYGAKaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucwoKYGBgCgpgYGAKaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbHBhbG1lL1JlcG9ydEdlbmVyYXRvcgpgYGAKCmBgYApodHRwczovL2dpdGh1Yi5jb20vbWFya2V0cGxhY2UvYWN0aW9ucy9yZXBvcnRnZW5lcmF0b3IKYGBgCgpgYGAKaHR0cHM6Ly9naXRodWIuY29tL21hcmtldHBsYWNlL2FjdGlvbnMvcmVwb3J0Z2VuZXJhdG9yCmBgYAoKIyMjIElMb2dnZXIKCmBgYAoKaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2FzcG5ldC9jb3JlL2Z1bmRhbWVudGFscy9sb2dnaW5nLz92aWV3PWFzcG5ldGNvcmUtNy4wCgpgYGAKCmBgYAoKaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2RvdG5ldC9jb3JlL3Rvb2xzL2RvdG5ldC10ZXN0CgpgYGAKCmBgYAoKaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL2F6dXJlLW1vbml0b3IvYXBwL2lsb2dnZXI/dGFicz1kb3RuZXQ2CgpgYGAKCiMjIyBBcHBsaWNhdGlvbiBJbnNpZ2h0cwoKYGBgCgpodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vcHQtYnIvYXp1cmUvYXp1cmUtbW9uaXRvci9hcHAvYXNwLW5ldC1jb3JlP3RhYnM9bmV0Y29yZW5ldyUyQ25ldGNvcmU2CgpgYGAKCkxpdmUgU3RyZWFtIC8gTGl2ZSBNZXRyaWNzCgpgYGAKCmh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9henVyZS9henVyZS1tb25pdG9yL2FwcC9saXZlLXN0cmVhbT90YWJzPWRvdG5ldDYKCmBgYAoKIyMjIEtleSBWYXVsdAoKYGBgCgpodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vcHQtYnIvYXp1cmUva2V5LXZhdWx0L2dlbmVyYWwvYmFzaWMtY29uY2VwdHMKCmBgYAoKYGBgCmh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9kb3RuZXQvYXp1cmUvc2RrL2RlcGVuZGVuY3ktaW5qZWN0aW9uP3RhYnM9d2ViLWFwcC1idWlsZGVyCmBgYAoKYGBgCmh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9wdC1ici9hc3BuZXQvY29yZS9zZWN1cml0eS9rZXktdmF1bHQtY29uZmlndXJhdGlvbj92aWV3PWFzcG5ldGNvcmUtMy4xCmBgYAoKIyMjIENvbmZpZ3VyYXRpb24KCmBgYAoKaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2FzcG5ldC9jb3JlL2Z1bmRhbWVudGFscy9jb25maWd1cmF0aW9uLz92aWV3PWFzcG5ldGNvcmUtNy4wCgpgYGAKCiMjIyBTb25hclF1YmUKCmBgYAoKaHR0cHM6Ly9kb2NzLnNvbmFyc291cmNlLmNvbS9zb25hcmNsb3VkL2FkdmFuY2VkLXNldHVwL2FuYWx5c2lzLXBhcmFtZXRlcnMvCgpgYGAKCiMjIyBBenVyZSBBcHAgQ29uZmlndXJhdGlvbgoKYGBgCgpodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvYXp1cmUvYXp1cmUtYXBwLWNvbmZpZ3VyYXRpb24vcXVpY2tzdGFydC1hc3BuZXQtY29yZS1hcHA/dGFicz1jb3JlNngKYGBgCgpgYGAKaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL2F6dXJlLWFwcC1jb25maWd1cmF0aW9uL2hvd3RvLWZlYXR1cmUtZmlsdGVycy1hc3BuZXQtY29yZQpgYGAKCmBgYApodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvYXp1cmUvYXp1cmUtYXBwLWNvbmZpZ3VyYXRpb24vZW5hYmxlLWR5bmFtaWMtY29uZmlndXJhdGlvbi1hc3BuZXQtY29yZT90YWJzPWNvcmU2eAoKYGBgCgojIyMgRG9ja2VyIENvbW1hbmRzCgpgYGAKCmRvY2tlciBjb250YWluZXIgcm0gLWYgJChkb2NrZXIgY29udGFpbmVyIGxzIC1hIC1xKQoKYGBgCgpgYGAKCmRvY2tlciB2b2x1bWUgcm0gJChkb2NrZXIgdm9sdW1lIGxzIC1xKQoKYGBgCgpgYGAKCmRvY2tlciBpbWFnZSBybSAtZiAkKGRvY2tlciBpbWFnZSBscyAtYSAtcSkKCmBgYAoKYGBgCgpkb2NrZXIgc3lzdGVtIHBydW5lCgpgYGAKCmBgYAoKZG9ja2VyIGltYWdlIGxzCgpgYGAKCmBgYAoKZG9ja2VyIGJ1aWxkIC1mIC4vc3JjL0RFUExPWS5DYWNob3Jyby5BcGkvRG9ja2VyZmlsZSAtdCBmZWxpcGVtZW50ZWwvY2FjaG9ycm8uYXBpOmxvY2FsIC4vc3JjCgpgYGAKCmBgYAoKZG9ja2VyIHRhZyA0MzBmNWQ5ZjQyMjkgY3JjYW5hbGRlcGxveWRldi5henVyZWNyLmlvL2NhY2hvcnJvLmFwaTpsYXRlc3QKCmBgYAoKYGBgCgpkb2NrZXIgcHVzaCBjcmNhbmFsZGVwbG95ZGV2LmF6dXJlY3IuaW8vY2FjaG9ycm8uYXBpOmxhdGVzdAoKYGBgCgpgYGAKCmRvY2tlciBwdXNoIGdoY3IuaW8vZmVsaXBlbWVudGVsL2NhY2hvcnJvLmFwaTpsYXRlc3QKCmBgYAoKYGBgCgpkb2NrZXIgY29udGFpbmVyIHJ1biAtcCA4MDg4OjgwIGNyY2FuYWxkZXBsb3lkZXYuYXp1cmVjci5pby9jYWNob3Jyby5hcGk6bGF0ZXN0CgpgYGAKCmBgYAoKZG9ja2VyIGNvbnRhaW5lciBydW4gLS1ybSAtLW5hbWUgc29uYXItY2FuYWwtZGVwbG95IC1wIDkwNDQ6OTAwMCBzb25hcnF1YmU6MTAuMy4wLWNvbW11bml0eQoKYGBgCgojIyMgQ29tYW5kb3MgQXp1cmUgS2V5IFZhdWx0CgpgYGAKCmF6IGtleXZhdWx0IHNlY3JldCBzaG93IC0tbmFtZSBDYWNob3Jyb0Nvbm5lY3Rpb25TdHJpbmcgLS12YXVsdC1uYW1lIGt2LWNhbmFsZGVwbG95LWRldgoKYGBgCgpgYGAKCkBNaWNyb3NvZnQuS2V5VmF1bHQoU2VjcmV0VXJpPWh0dHBzOi8va3YtY2FuYWxkZXBsb3ktZGV2LnZhdWx0LmF6dXJlLm5ldC9zZWNyZXRzL0Nvbm5lY3Rpb25TdHJpbmdzLS1BcHBsaWNhdGlvbkluc2lnaHRzLykKCmBgYAoKYGBgCgpATWljcm9zb2Z0LktleVZhdWx0KFZhdWx0TmFtZT1rdi1jYW5hbGRlcGxveS1kZXY7U2VjcmV0TmFtZT1Db25uZWN0aW9uU3RyaW5ncy0tQXBwbGljYXRpb25JbnNpZ2h0cykKCmBgYAoKIyMjIENvbWFuZG9zIEF6dXJlIENvbnRhaW5lciBJbnN0YW5jZQoKYGBgCgpheiBjb250YWluZXIgbG9ncyAtLXJlc291cmNlLWdyb3VwIHJnLWNhbmFsZGVwbG95LWRldiAtLW5hbWUgYXBpLWNhY2hvcnJvCgpgYGAKCmBgYAoKYXogY29udGFpbmVyIGV4ZWMgLWcgZy1jYW5hbGRlcGxveS1kZXYgLS1uYW1lIGNhY2hvcnJvLmFwaSAtLWV4ZWMtY29tbWFuZCAiL2Jpbi9iYXNoIgoKYGBgCgojZ2l0CiNnaXRodWIKI2dpdGh1Yi1hY3Rpb25zCiNzb25hci1xdWJlCiN3c2wtMgojZG9ja2VyCiNkb2NrZXItY29tcG9zZQojZG9ja2VyLWh1YgojZG9uZXQKI2VmLWNvcmUKI2VudGl0eS1mcmFtZXdvcmstY29yZQojeC11bml0CiNwb3N0bWFuCiNhenVyZQojYXp1cmUtYXBwbGljYXRpb24taW5naXNodHMKI2F6dXJlLXNxbC1kYXRhYmFzZQojYXp1cmUtYXBwLWNvbmZpZ3VyYXRpb24KI2F6dXJlLWNvbnRhaW5lci1yZWdpc3RyeQojYXp1cmUtY29udGFpbmVyLWluc3RhbmNlCiNhenVyZS1jb250YWluZXItYXBwcwojYXp1cmUta2V5LXZhdWx0Cg== readmeEtag: '"b8c9dc24197c5c3f12f5047f2084de6b78fcc2e3"' readmeLastModified: Thu, 17 Oct 2024 12:04:05 GMT repositoryId: 682787791 description: API criada no canal DEPLOY para fins de estudo created: '2023-08-24T23:30:51Z' updated: '2026-01-13T15:30:24Z' language: C# archived: false stars: 24 watchers: 2 forks: 4 owner: felipementel logo: https://avatars.githubusercontent.com/u/14238257?v=4 license: Apache-2.0 repoEtag: '"c76a2c1f502a72d203a4135cfd50f1d3fc6fe431a556054e687f33a80be12f72"' repoLastModified: Tue, 13 Jan 2026 15:30:24 GMT category: Code Generators foundInMaster: true - source: openapi3 tags repository: https://github.com/wblondel/tgtg-api-wrapper v3: true repositoryMetadata: base64Readme: >- IyB0Z3RnLWFwaS13cmFwcGVyCnRndGctYXBpLXdyYXBwZXIgaXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgW1Rvb0dvb2RUb0dvXShodHRwczovL3Rvb2dvb2R0b2dvLmNvbS8pIEFQSS4KCiMjIFdvcmsgaW4gcHJvZ3Jlc3MKQ3VycmVudGx5IHJlZGFjdGluZyB0aGUgQVBJIHN0cnVjdHVyZSBpbiBPcGVuQVBJIDMgc3RhbmRhcmQuCkEgUHl0aG9uIHdyYXBwZXIgd2lsbCBiZSB3cml0dGVuIG5leHQuCgojIyBMaXN0IG9mIEFQSSBzZXJ2ZXJzCgpUaGUgbGlzdCBvZiBUb29Hb29kVG9HbydzIEFQSSBzZXJ2ZXJzIGNhbiBiZSBmb3VuZCBhdCB0aGlzIGFkZHJlc3M6IGh0dHBzOi8vbWV0YS5hcHB0b29nb29kdG9nby5jb20vZW52L3YxL2xpc3QuanNvbgoKQXMgb2YgMjAgRmVicnVhcnkgMjAyNCwgdGhlIHNlcnZlcnMgYXJlOgoKfCBOYW1lICAgICAgICAgICAgICAgICAgICAgCXwgUHVibGljIFVSTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCXwgIkhpZGRlbiIgVVJMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQl8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQl8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JfAp8IFByb2R1Y3Rpb24gKE5lYXJlc3QpICAgICAJfCBodHRwczovL2FwcHRvb2dvb2R0b2dvLmNvbSAgICAgICAgICAgICAgICAgICAgICAJfCBodHRwczovL25lYXJlc3QtcHJvZC1iYWNrZW5kLXB1YmxpYy5wci1iZS1zaGFyZWQudGd0Zy5uaW5qYSAgCXwKfCBQcm9kdWN0aW9uIChFVSkgICAgICAgICAgCXwgaHR0cHM6Ly9ldXcxLmFwcHRvb2dvb2R0b2dvLmNvbSAgICAgICAgICAgICAgICAgCXwgaHR0cHM6Ly9wcm9kLWJhY2tlbmQtcHVibGljLnByb2QtZWtzLTEudGd0Zy5uaW5qYSAgICAgICAgICAgIAl8CnwgUHJvZHVjdGlvbiAoVVMpICAgICAgICAgIAl8IGh0dHBzOi8vdXNlMS5hcHB0b29nb29kdG9nby5jb20gICAgICAgICAgICAgICAgIAl8IGh0dHBzOi8vcHJvZC1iYWNrZW5kLXB1YmxpYy5wci1iZS11c2UxLnRndGcubmluamEgICAgICAgICAgICAJfAp8IFN0YWdpbmcgKE5lYXJlc3QpICAgICAgICAJfCBodHRwczovL2JhY2tlbmQtc3RhZ2luZy5hcHB0b29nb29kdG9nby5jb20gICAgICAJfCBodHRwczovL25lYXJlc3Qtc3RhZ2luZy1iYWNrZW5kLXB1YmxpYy5kZXYtc2hhcmVkLnRndGcubmluamEgCXwKfCBTdGFnaW5nIChFVSkgICAgICAgICAgICAgCXwgaHR0cHM6Ly9iYWNrZW5kLXN0YWdpbmctZXV3MS5hcHB0b29nb29kdG9nby5jb20gCXwgaHR0cHM6Ly9zdGFnaW5nLWJhY2tlbmQtcHVibGljLmRldi1ldXcxLnRndGcubmluamEgICAgICAgICAgIAl8CnwgU3RhZ2luZyAoVVMpICAgICAgICAgICAgIAl8IGh0dHBzOi8vYmFja2VuZC1zdGFnaW5nLXVzZTEuYXBwdG9vZ29vZHRvZ28uY29tIAl8IGh0dHBzOi8vc3RhZ2luZy1iYWNrZW5kLXB1YmxpYy5kZXYtdXNlMS50Z3RnLm5pbmphICAgICAgICAgICAJfAp8IEdvbGQgKEVVKSAoUmVxdWlyZXMgVlBOKSAJfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJfCBodHRwczovL2dvbGQtYmFja2VuZC1pbnRlcm5hbC5kZXYtZXV3MS50Z3RnLm5pbmphICAgICAgICAgICAgCXwKfCBHb2xkIChVUykgKFJlcXVpcmVzIFZQTikgCXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCXwgaHR0cHM6Ly9nb2xkLWJhY2tlbmQtaW50ZXJuYWwuZGV2LXVzZTEudGd0Zy5uaW5qYSAgICAgICAgICAgIAl8CnwgUGFydG5lciAoRVUpICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC1wYXJ0bmVyLWV1dzEuYXBwdG9vZ29vZHRvZ28uY29tICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBQYXJ0bmVyIChVUykgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXBhcnRuZXItdXNlMS5hcHB0b29nb29kdG9nby5jb20gICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFFBIChFVSkgICAgICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtcWEtZXV3MS5hcHB0b29nb29kdG9nby5jb20gICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUUEgKFVTKSAgICAgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC1xYS11c2UxLmFwcHRvb2dvb2R0b2dvLmNvbSAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBUZXN0MSAoRVUpICAgICAgICAgICAgICAgCXwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QxLmFwcHRvb2dvb2R0b2dvLmNvbSAgICAgICAgCXwgaHR0cHM6Ly90ZXN0MS1iYWNrZW5kLXB1YmxpYy5kZXYtZXV3MS50Z3RnLm5pbmphICAgICAgICAgICAgIAl8CnwgVGVzdDEgKFVTKSAgICAgICAgICAgICAgIAl8IGh0dHBzOi8vYmFja2VuZC10ZXN0MS11c2UxLmFwcHRvb2dvb2R0b2dvLmNvbSAgIAl8IGh0dHBzOi8vdGVzdDEtYmFja2VuZC1wdWJsaWMuZGV2LXVzZTEudGd0Zy5uaW5qYSAgICAgICAgICAgICAJfAp8IFRlc3QyIChFVSkgICAgICAgICAgICAgICAJfCBodHRwczovL2JhY2tlbmQtdGVzdDIuYXBwdG9vZ29vZHRvZ28uY29tICAgICAgICAJfCBodHRwczovL3Rlc3QyLWJhY2tlbmQtcHVibGljLmRldi1ldXcxLnRndGcubmluamEgICAgICAgICAgICAgCXwKfCBUZXN0MiAoVVMpICAgICAgICAgICAgICAgCXwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QyLXVzZTEuYXBwdG9vZ29vZHRvZ28uY29tICAgCXwgaHR0cHM6Ly90ZXN0Mi1iYWNrZW5kLXB1YmxpYy5kZXYtdXNlMS50Z3RnLm5pbmphICAgICAgICAgICAgIAl8CnwgVGVzdDMgKEVVKSAgICAgICAgICAgICAgIAl8IGh0dHBzOi8vYmFja2VuZC10ZXN0My5hcHB0b29nb29kdG9nby5jb20gICAgICAgIAl8IGh0dHBzOi8vdGVzdDMtYmFja2VuZC1wdWJsaWMuZGV2LWV1dzEudGd0Zy5uaW5qYSAgICAgICAgICAgICAJfAp8IFRlc3QzIChVUykgICAgICAgICAgICAgICAJfCBodHRwczovL2JhY2tlbmQtdGVzdDMtdXNlMS5hcHB0b29nb29kdG9nby5jb20gICAJfCBodHRwczovL3Rlc3QzLWJhY2tlbmQtcHVibGljLmRldi11c2UxLnRndGcubmluamEgICAgICAgICAgICAgCXwKfCBUZXN0NCAoRVUpICAgICAgICAgICAgICAgCXwgaHR0cHM6Ly9iYWNrZW5kLXRlc3Q0LmFwcHRvb2dvb2R0b2dvLmNvbSAgICAgICAgCXwgaHR0cHM6Ly90ZXN0NC1iYWNrZW5kLXB1YmxpYy5kZXYtZXV3MS50Z3RnLm5pbmphICAgICAgICAgICAgIAl8CnwgVGVzdDQgKFVTKSAgICAgICAgICAgICAgIAl8IGh0dHBzOi8vYmFja2VuZC10ZXN0NC11c2UxLmFwcHRvb2dvb2R0b2dvLmNvbSAgIAl8IGh0dHBzOi8vdGVzdDQtYmFja2VuZC1wdWJsaWMuZGV2LXVzZTEudGd0Zy5uaW5qYSAgICAgICAgICAgICAJfAp8IFRlc3Q1IChFVSkgICAgICAgICAgICAgICAJfCBodHRwczovL2JhY2tlbmQtdGVzdDUuYXBwdG9vZ29vZHRvZ28uY29tICAgICAgICAJfCBodHRwczovL3Rlc3Q1LWJhY2tlbmQtcHVibGljLmRldi1ldXcxLnRndGcubmluamEgICAgICAgICAgICAgCXwKfCBUZXN0NSAoVVMpICAgICAgICAgICAgICAgCXwgaHR0cHM6Ly9iYWNrZW5kLXRlc3Q1LXVzZTEuYXBwdG9vZ29vZHRvZ28uY29tICAgCXwgaHR0cHM6Ly90ZXN0NS1iYWNrZW5kLXB1YmxpYy5kZXYtdXNlMS50Z3RnLm5pbmphICAgICAgICAgICAgIAl8CnwgVGVzdDYgKEVVKSAgICAgICAgICAgICAgIAl8IGh0dHBzOi8vYmFja2VuZC10ZXN0Ni5hcHB0b29nb29kdG9nby5jb20gICAgICAgIAl8IGh0dHBzOi8vdGVzdDYtYmFja2VuZC1wdWJsaWMuZGV2LWV1dzEudGd0Zy5uaW5qYSAgICAgICAgICAgICAJfAp8IFRlc3Q2IChVUykgICAgICAgICAgICAgICAJfCBodHRwczovL2JhY2tlbmQtdGVzdDYtdXNlMS5hcHB0b29nb29kdG9nby5jb20gICAJfCBodHRwczovL3Rlc3Q2LWJhY2tlbmQtcHVibGljLmRldi11c2UxLnRndGcubmluamEgICAgICAgICAgICAgCXwKfCBUZXN0NyAoRVUpICAgICAgICAgICAgICAgCXwgaHR0cHM6Ly9iYWNrZW5kLXRlc3Q3LmFwcHRvb2dvb2R0b2dvLmNvbSAgICAgICAgCXwgaHR0cHM6Ly90ZXN0Ny1iYWNrZW5kLXB1YmxpYy5kZXYtZXV3MS50Z3RnLm5pbmphICAgICAgICAgICAgIAl8CnwgVGVzdDcgKFVTKSAgICAgICAgICAgICAgIAl8IGh0dHBzOi8vYmFja2VuZC10ZXN0Ny11c2UxLmFwcHRvb2dvb2R0b2dvLmNvbSAgIAl8IGh0dHBzOi8vdGVzdDctYmFja2VuZC1wdWJsaWMuZGV2LXVzZTEudGd0Zy5uaW5qYSAgICAgICAgICAgICAJfAp8IFRlc3Q4IChFVSkgICAgICAgICAgICAgICAJfCBodHRwczovL2JhY2tlbmQtdGVzdDguYXBwdG9vZ29vZHRvZ28uY29tICAgICAgICAJfCBodHRwczovL3Rlc3Q4LWJhY2tlbmQtcHVibGljLmRldi1ldXcxLnRndGcubmluamEgICAgICAgICAgICAgCXwKfCBUZXN0OCAoVVMpICAgICAgICAgICAgICAgCXwgaHR0cHM6Ly9iYWNrZW5kLXRlc3Q4LXVzZTEuYXBwdG9vZ29vZHRvZ28uY29tICAgCXwgaHR0cHM6Ly90ZXN0OC1iYWNrZW5kLXB1YmxpYy5kZXYtdXNlMS50Z3RnLm5pbmphICAgICAgICAgICAgIAl8CnwgVGVzdDkgKEVVKSAgICAgICAgICAgICAgIAl8IGh0dHBzOi8vYmFja2VuZC10ZXN0OS5hcHB0b29nb29kdG9nby5jb20gICAgICAgIAl8IGh0dHBzOi8vdGVzdDktYmFja2VuZC1wdWJsaWMuZGV2LWV1dzEudGd0Zy5uaW5qYSAgICAgICAgICAgICAJfAp8IFRlc3Q5IChVUykgICAgICAgICAgICAgICAJfCBodHRwczovL2JhY2tlbmQtdGVzdDktdXNlMS5hcHB0b29nb29kdG9nby5jb20gICAJfCBodHRwczovL3Rlc3Q5LWJhY2tlbmQtcHVibGljLmRldi11c2UxLnRndGcubmluamEgICAgICAgICAgICAgCXwKfCBUZXN0MTAgKEVVKSAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QxMC5hcHB0b29nb29kdG9nby5jb20gICAgICAgIAl8IGh0dHBzOi8vdGVzdDEwLWJhY2tlbmQtcHVibGljLmRldi1ldXcxLnRndGcubmluamEgICAgICAgICAgICAgfAp8IFRlc3QxMCAoVVMpICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtdGVzdDEwLXVzZTEuYXBwdG9vZ29vZHRvZ28uY29tICAgCXwgaHR0cHM6Ly90ZXN0MTAtYmFja2VuZC1wdWJsaWMuZGV2LXVzZTEudGd0Zy5uaW5qYSAgICAgICAgICAgICB8CnwgVGVzdDExIChFVSkgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC10ZXN0MTEuYXBwdG9vZ29vZHRvZ28uY29tICAgICAgICAJfCBodHRwczovL3Rlc3QxMS1iYWNrZW5kLXB1YmxpYy5kZXYtZXV3MS50Z3RnLm5pbmphICAgICAgICAgICAgIHwKfCBUZXN0MTEgKFVTKSAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QxMS11c2UxLmFwcHRvb2dvb2R0b2dvLmNvbSAgIAl8IGh0dHBzOi8vdGVzdDExLWJhY2tlbmQtcHVibGljLmRldi11c2UxLnRndGcubmluamEgICAgICAgICAgICAgfAp8IFRlc3QxMiAoRVUpICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtdGVzdDEyLmFwcHRvb2dvb2R0b2dvLmNvbSAgICAgICAgCXwgaHR0cHM6Ly90ZXN0MTItYmFja2VuZC1wdWJsaWMuZGV2LWV1dzEudGd0Zy5uaW5qYSAgICAgICAgICAgICB8CnwgVGVzdDEyIChVUykgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC10ZXN0MTItdXNlMS5hcHB0b29nb29kdG9nby5jb20gICAJfCBodHRwczovL3Rlc3QxMi1iYWNrZW5kLXB1YmxpYy5kZXYtdXNlMS50Z3RnLm5pbmphICAgICAgICAgICAgIHwKfCBUZXN0MTMgKEVVKSAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QxMy5hcHB0b29nb29kdG9nby5jb20gICAgICAgIAl8IGh0dHBzOi8vdGVzdDEzLWJhY2tlbmQtcHVibGljLmRldi1ldXcxLnRndGcubmluamEgICAgICAgICAgICAgfAp8IFRlc3QxMyAoVVMpICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtdGVzdDEzLXVzZTEuYXBwdG9vZ29vZHRvZ28uY29tICAgCXwgaHR0cHM6Ly90ZXN0MTMtYmFja2VuZC1wdWJsaWMuZGV2LXVzZTEudGd0Zy5uaW5qYSAgICAgICAgICAgICB8CnwgVGVzdDE0IChFVSkgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC10ZXN0MTQuYXBwdG9vZ29vZHRvZ28uY29tICAgICAgICAJfCBodHRwczovL3Rlc3QxNC1iYWNrZW5kLXB1YmxpYy5kZXYtZXV3MS50Z3RnLm5pbmphICAgICAgICAgICAgIHwKfCBUZXN0MTQgKFVTKSAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QxNC11c2UxLmFwcHRvb2dvb2R0b2dvLmNvbSAgIAl8IGh0dHBzOi8vdGVzdDE0LWJhY2tlbmQtcHVibGljLmRldi11c2UxLnRndGcubmluamEgICAgICAgICAgICAgfAp8IFRlc3QxNSAoRVUpICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtdGVzdDE1LmFwcHRvb2dvb2R0b2dvLmNvbSAgICAgICAgCXwgaHR0cHM6Ly90ZXN0MTUtYmFja2VuZC1wdWJsaWMuZGV2LWV1dzEudGd0Zy5uaW5qYSAgICAgICAgICAgICB8CnwgVGVzdDE1IChVUykgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC10ZXN0MTUtdXNlMS5hcHB0b29nb29kdG9nby5jb20gICAJfCBodHRwczovL3Rlc3QxNS1iYWNrZW5kLXB1YmxpYy5kZXYtdXNlMS50Z3RnLm5pbmphICAgICAgICAgICAgIHwKfCBUZXN0MTYgKEVVKSAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QxNi5hcHB0b29nb29kdG9nby5jb20gICAgICAgIAl8IGh0dHBzOi8vdGVzdDE2LWJhY2tlbmQtcHVibGljLmRldi1ldXcxLnRndGcubmluamEgICAgICAgICAgICAgfAp8IFRlc3QxNiAoVVMpICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtdGVzdDE2LXVzZTEuYXBwdG9vZ29vZHRvZ28uY29tICAgCXwgaHR0cHM6Ly90ZXN0MTYtYmFja2VuZC1wdWJsaWMuZGV2LXVzZTEudGd0Zy5uaW5qYSAgICAgICAgICAgICB8CnwgVGVzdDE3IChFVSkgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC10ZXN0MTcuYXBwdG9vZ29vZHRvZ28uY29tICAgICAgICAJfCBodHRwczovL3Rlc3QxNy1iYWNrZW5kLXB1YmxpYy5kZXYtZXV3MS50Z3RnLm5pbmphICAgICAgICAgICAgIHwKfCBUZXN0MTcgKFVTKSAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QxNy11c2UxLmFwcHRvb2dvb2R0b2dvLmNvbSAgIAl8IGh0dHBzOi8vdGVzdDE3LWJhY2tlbmQtcHVibGljLmRldi11c2UxLnRndGcubmluamEgICAgICAgICAgICAgfAp8IFRlc3QxOCAoRVUpICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtdGVzdDE4LmFwcHRvb2dvb2R0b2dvLmNvbSAgICAgICAgCXwgaHR0cHM6Ly90ZXN0MTgtYmFja2VuZC1wdWJsaWMuZGV2LWV1dzEudGd0Zy5uaW5qYSAgICAgICAgICAgIAl8CnwgVGVzdDE4IChVUykgICAgICAgICAgICAgIAl8IGh0dHBzOi8vYmFja2VuZC10ZXN0MTgtdXNlMS5hcHB0b29nb29kdG9nby5jb20gICAJfCBodHRwczovL3Rlc3QxOC1iYWNrZW5kLXB1YmxpYy5kZXYtdXNlMS50Z3RnLm5pbmphICAgICAgICAgICAgIHwKfCBUZXN0MTkgKEVVKSAgICAgICAgICAgICAgCXwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QxOS5hcHB0b29nb29kdG9nby5jb20gICAgICAgIAl8IGh0dHBzOi8vdGVzdDE5LWJhY2tlbmQtcHVibGljLmRldi1ldXcxLnRndGcubmluamEgICAgICAgICAgICAgfAp8IFRlc3QxOSAoVVMpICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtdGVzdDE5LXVzZTEuYXBwdG9vZ29vZHRvZ28uY29tICAgCXwgaHR0cHM6Ly90ZXN0MTktYmFja2VuZC1wdWJsaWMuZGV2LXVzZTEudGd0Zy5uaW5qYSAgICAgICAgICAgICB8CnwgVGVzdDIwIChFVSkgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC10ZXN0MjAuYXBwdG9vZ29vZHRvZ28uY29tICAgICAgICAJfCBodHRwczovL3Rlc3QyMC1iYWNrZW5kLXB1YmxpYy5kZXYtZXV3MS50Z3RnLm5pbmphICAgICAgICAgICAgIHwKfCBUZXN0MjAgKFVTKSAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QyMC11c2UxLmFwcHRvb2dvb2R0b2dvLmNvbSAgIAl8IGh0dHBzOi8vdGVzdDIwLWJhY2tlbmQtcHVibGljLmRldi11c2UxLnRndGcubmluamEgICAgICAgICAgICAgfAp8IFRlc3QyMSAoRVUpICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtdGVzdDIxLmFwcHRvb2dvb2R0b2dvLmNvbSAgICAgICAgCXwgaHR0cHM6Ly90ZXN0MjEtYmFja2VuZC1wdWJsaWMuZGV2LWV1dzEudGd0Zy5uaW5qYSAgICAgICAgICAgICB8CnwgVGVzdDIxIChVUykgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC10ZXN0MjEtdXNlMS5hcHB0b29nb29kdG9nby5jb20gICAJfCBodHRwczovL3Rlc3QyMS1iYWNrZW5kLXB1YmxpYy5kZXYtdXNlMS50Z3RnLm5pbmphICAgICAgICAgICAgIHwKfCBUZXN0MjIgKEVVKSAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QyMi5hcHB0b29nb29kdG9nby5jb20gICAgICAgIAl8IGh0dHBzOi8vdGVzdDIyLWJhY2tlbmQtcHVibGljLmRldi1ldXcxLnRndGcubmluamEgICAgICAgICAgICAgfAp8IFRlc3QyMiAoVVMpICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtdGVzdDIyLXVzZTEuYXBwdG9vZ29vZHRvZ28uY29tICAgCXwgaHR0cHM6Ly90ZXN0MjItYmFja2VuZC1wdWJsaWMuZGV2LXVzZTEudGd0Zy5uaW5qYSAgICAgICAgICAgICB8CnwgVGVzdDIzIChFVSkgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC10ZXN0MjMuYXBwdG9vZ29vZHRvZ28uY29tICAgICAgICAJfCBodHRwczovL3Rlc3QyMy1iYWNrZW5kLXB1YmxpYy5kZXYtZXV3MS50Z3RnLm5pbmphICAgICAgICAgICAgIHwKfCBUZXN0MjMgKFVTKSAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QyMy11c2UxLmFwcHRvb2dvb2R0b2dvLmNvbSAgIAl8IGh0dHBzOi8vdGVzdDIzLWJhY2tlbmQtcHVibGljLmRldi11c2UxLnRndGcubmluamEgICAgICAgICAgICAgfAp8IFRlc3QyNCAoRVUpICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtdGVzdDI0LmFwcHRvb2dvb2R0b2dvLmNvbSAgICAgICAgCXwgaHR0cHM6Ly90ZXN0MjQtYmFja2VuZC1wdWJsaWMuZGV2LWV1dzEudGd0Zy5uaW5qYSAgICAgICAgICAgICB8CnwgVGVzdDI0IChVUykgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC10ZXN0MjQtdXNlMS5hcHB0b29nb29kdG9nby5jb20gICAJfCBodHRwczovL3Rlc3QyNC1iYWNrZW5kLXB1YmxpYy5kZXYtdXNlMS50Z3RnLm5pbmphICAgICAgICAgICAgIHwKfCBUZXN0MjUgKEVVKSAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QyNS5hcHB0b29nb29kdG9nby5jb20gICAgICAgIAl8IGh0dHBzOi8vdGVzdDI1LWJhY2tlbmQtcHVibGljLmRldi1ldXcxLnRndGcubmluamEgICAgICAgICAgICAgfAp8IFRlc3QyNSAoVVMpICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtdGVzdDI1LXVzZTEuYXBwdG9vZ29vZHRvZ28uY29tICAgCXwgaHR0cHM6Ly90ZXN0MjUtYmFja2VuZC1wdWJsaWMuZGV2LXVzZTEudGd0Zy5uaW5qYSAgICAgICAgICAgICB8CnwgVGVzdDI2IChFVSkgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC10ZXN0MjYuYXBwdG9vZ29vZHRvZ28uY29tICAgICAgICAJfCBodHRwczovL3Rlc3QyNi1iYWNrZW5kLXB1YmxpYy5kZXYtZXV3MS50Z3RnLm5pbmphICAgICAgICAgICAgIHwKfCBUZXN0MjYgKFVTKSAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QyNi11c2UxLmFwcHRvb2dvb2R0b2dvLmNvbSAgIAl8IGh0dHBzOi8vdGVzdDI2LWJhY2tlbmQtcHVibGljLmRldi11c2UxLnRndGcubmluamEgICAgICAgICAgICAgfAp8IFRlc3QyNyAoRVUpICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtdGVzdDI3LmFwcHRvb2dvb2R0b2dvLmNvbSAgICAgICAgCXwgaHR0cHM6Ly90ZXN0MjctYmFja2VuZC1wdWJsaWMuZGV2LWV1dzEudGd0Zy5uaW5qYSAgICAgICAgICAgICB8CnwgVGVzdDI3IChVUykgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC10ZXN0MjctdXNlMS5hcHB0b29nb29kdG9nby5jb20gICAJfCBodHRwczovL3Rlc3QyNy1iYWNrZW5kLXB1YmxpYy5kZXYtdXNlMS50Z3RnLm5pbmphICAgICAgICAgICAgIHwKfCBUZXN0MjggKEVVKSAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QyOC5hcHB0b29nb29kdG9nby5jb20gICAgICAgIAl8IGh0dHBzOi8vdGVzdDI4LWJhY2tlbmQtcHVibGljLmRldi1ldXcxLnRndGcubmluamEgICAgICAgICAgICAgfAp8IFRlc3QyOCAoVVMpICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtdGVzdDI4LXVzZTEuYXBwdG9vZ29vZHRvZ28uY29tICAgCXwgaHR0cHM6Ly90ZXN0MjgtYmFja2VuZC1wdWJsaWMuZGV2LXVzZTEudGd0Zy5uaW5qYSAgICAgICAgICAgICB8CnwgVGVzdDI5IChFVSkgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC10ZXN0MjkuYXBwdG9vZ29vZHRvZ28uY29tICAgICAgICAJfCBodHRwczovL3Rlc3QyOS1iYWNrZW5kLXB1YmxpYy5kZXYtZXV3MS50Z3RnLm5pbmphICAgICAgICAgICAgIHwKfCBUZXN0MjkgKFVTKSAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXRlc3QyOS11c2UxLmFwcHRvb2dvb2R0b2dvLmNvbSAgIAl8IGh0dHBzOi8vdGVzdDI5LWJhY2tlbmQtcHVibGljLmRldi11c2UxLnRndGcubmluamEgICAgICAgICAgICAgfAp8IFRlc3QzMCAoRVUpICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtdGVzdDMwLmFwcHRvb2dvb2R0b2dvLmNvbSAgICAgICAgCXwgaHR0cHM6Ly90ZXN0MzAtYmFja2VuZC1wdWJsaWMuZGV2LWV1dzEudGd0Zy5uaW5qYSAgICAgICAgICAgICB8CnwgVGVzdDMwIChVUykgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC10ZXN0MzAtdXNlMS5hcHB0b29nb29kdG9nby5jb20gICAJfCBodHRwczovL3Rlc3QzMC1iYWNrZW5kLXB1YmxpYy5kZXYtdXNlMS50Z3RnLm5pbmphICAgICAgICAgICAgIHwKfCBQZW50ZXN0IChFVSkgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXBlbnRlc3QuYXBwdG9vZ29vZHRvZ28uY29tICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFBlbnRlc3QgKFVTKSAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtcGVudGVzdC11c2UxLmFwcHRvb2dvb2R0b2dvLmNvbSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQm91bnR5IChFVSkgICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC1ib3VudHkuYXBwdG9vZ29vZHRvZ28uY29tICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBCb3VudHkgKFVTKSAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLWJvdW50eS11c2UxLmFwcHRvb2dvb2R0b2dvLmNvbSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFBhcnRuZXIgKEVVKSAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtcGFydG5lci5hcHB0b29nb29kdG9nby5jb20gICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUGFydG5lciAoVVMpICAgICAgICAgICAgICB8IGh0dHBzOi8vYmFja2VuZC1wYXJ0bmVyLXVzZTEuYXBwdG9vZ29vZHRvZ28uY29tICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBRQSAoRVUpICAgICAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9iYWNrZW5kLXFhLmFwcHRvb2dvb2R0b2dvLmNvbSAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFFBIChVUykgICAgICAgICAgICAgICAgICAgfCBodHRwczovL2JhY2tlbmQtcWEtdXNlMS5hcHB0b29nb29kdG9nby5jb20gICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgoKClRoZSBiYXNlIHBhdGggZm9yIHRoZSBBUEkgaXMgYC9hcGkvYC4KClRoZSBkb2N1bWVudGF0aW9uIHNlZW1zIHRvIGJlIGF0IGAvYXBpL2FwaS1kb2NzYCBidXQgaXMgb25seSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlaXIgVlBOLgoKQSBHRVQgcmVxdWVzdCB0byBgL3dlYmAgdGhyb3dzIGEgNDAzIEZvcmJpZGRlbiBlcnJvciB3aXRoIHRoZSBtZXNzYWdlICJJbnZhbGlkIENTUkYgdG9rZW4iLgoKQSBHRVQgcmVxdWVzdCB0byBgL2xvZ291dGAgcmVkaXJlY3RzICgzMDIpIHRvIGAvbG9naW4/bG9nb3V0YCwgd2hpY2ggdGhyb3dzIGEgNDA0IE5vdCBGb3VuZCBlcnJvci4KCkEgR0VUIHJlcXVlc3QgdG8gYC9waW5nYCByZXR1cm5zIGBwb25nYCA6RAoKQSBHRVQgcmVxdWVzdCB0byBgL2FwaS9gIG9uIGEgcHVibGljIFVSTCByZWRpcmVjdHMgKDMwMikgdG8gYC9hcGkvYXBpLWRvY3NgIG9uIHRoZSBjb3JyZXNwb25kaW5nICJIaWRkZW4iIHNlcnZlci4KClRoZSBBUElzIHNlZW0gdG8gYmUgYnVpbHQgd2l0aCBTcHJpbmcgQm9vdCAoY2x1ZTogdGhlIGBXaGl0ZWxhYmVsIEVycm9yIFBhZ2VgKQo= readmeEtag: '"ed7b0bc073189ec9dc5b179944913f2d527b0d3f"' readmeLastModified: Tue, 20 Feb 2024 10:45:29 GMT repositoryId: 242966436 description: Attempt to reverse-engineer the TooGoodToGo API created: '2020-02-25T09:57:17Z' updated: '2025-12-21T21:16:46Z' language: Java archived: false stars: 19 watchers: 1 forks: 3 owner: wblondel logo: https://avatars.githubusercontent.com/u/7508531?v=4 repoEtag: '"91b83f5ba93d6e47b560a2b75e85a6350abcfd0bc970eb2b7ae843cce8196888"' repoLastModified: Sun, 21 Dec 2025 21:16:46 GMT foundInMaster: true category: Server Implementations id: 85d23379e17d8db6ffff513aa15140c5 - source: openapi3 tags name: openapi homepage: https://github.com/wzshiming/openapi language: Go source_description: OpenAPI 3 Specification for golang category: - Low-level Tooling - Parsers repository: https://github.com/wzshiming/openapi v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJCgpbIVtHb0RvY10oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS93enNoaW1pbmcvb3BlbmFwaT9zdGF0dXMuc3ZnKV0oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS93enNoaW1pbmcvb3BlbmFwaSkKWyFbR2l0SHViIGxpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2Uvd3pzaGltaW5nL29wZW5hcGkuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3d6c2hpbWluZy9vcGVuYXBpL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpCgpUaGUgb2JqZWN0IG1vZGVsIGZvciBbT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGRvY3VtZW50c10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24pCgpVSSBtb3ZlIHRvIFtnaXRodWIuY29tL3d6c2hpbWluZy9vcGVuYXBpdWldKGh0dHBzOi8vZ2l0aHViLmNvbS93enNoaW1pbmcvb3BlbmFwaXVpKQoKIyMgTGljZW5zZQoKUG91Y2ggaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgW0xJQ0VOU0VdKGh0dHBzOi8vZ2l0aHViLmNvbS93enNoaW1pbmcvb3BlbmFwaS9ibG9iL21hc3Rlci9MSUNFTlNFKSBmb3IgdGhlIGZ1bGwgbGljZW5zZSB0ZXh0Lgo= readmeEtag: '"ebf44953ba48498ad777498d0330c0eae5ced41c"' readmeLastModified: Fri, 03 Jul 2020 17:16:32 GMT repositoryId: 138125024 description: OpenAPI 3 Specification for golang created: '2018-06-21T05:49:32Z' updated: '2023-09-08T17:41:57Z' language: Go archived: false stars: 17 watchers: 1 forks: 0 owner: wzshiming logo: https://avatars.githubusercontent.com/u/6565744?v=4 license: MIT repoEtag: '"b7291bded4c0746cdfa4322beb734d10720985f257c006a4c04f70160f105fda"' repoLastModified: Fri, 08 Sep 2023 17:41:57 GMT foundInMaster: true id: 4cfd529550011a9abf3d56ff76ff174b - source: openapi3 tags repository: https://github.com/tavis-software/tavis.openapi v3: true repositoryMetadata: base64Readme: >- IyBUYXZpcy5PcGVuQVBJCgoqKk5vdGU6IFRoaXMgbGlicmFyeSBoYXMgYmVlbiBzdXBlcmNlZGVkIGJ5IFtNaWNyb3NvZnQuT3BlbkFQSS5ORVRdKGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvT3BlbkFQSS5ORVQpLiAgSSBkb24ndCBleHBlY3QgYW55IGZ1cnRoZXIgZGV2ZWxvcG1lbnQgb24gdGhpcyBwcm9qZWN0LioqCgpUaGlzIGxpYnJhcnkgaXMgYSBwYXJzZXIgZm9yIHRoZSBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShodHRwczovL29wZW5hcGlzLm9yZy8pLiAgVGhlIG1vZGVsIGlzIGJhc2VkIGFyb3VuZCBPcGVuQVBJIDMuMCBzcGVjaWZpY2F0aW9uLgoKIyMgU2ltcGxlIEV4YW1wbGUKCmBgYGNzaGFycAogICAgICAgICAgICB2YXIgcGFyc2luZ0NvbnRleHQgPSBPcGVuQXBpUGFyc2VyLlBhcnNlKEAiCiAgICAgICAgICAgICAgICAgICAgb3BlbmFwaTogMy4wLjAKICAgICAgICAgICAgICAgICAgICBpbmZvOgogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogQSBzaW1wbGUgaW5saW5lIGV4YW1wbGUKICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjogMS4wLjAKICAgICAgICAgICAgICAgICAgICBwYXRoczoKICAgICAgICAgICAgICAgICAgICAgIC9hcGkvaG9tZToKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OgogICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IEEgaG9tZSBkb2N1bWVudAogICAgICAgICAgICAgICAgICAgICIpOwoKICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKCIzLjAuMCIsIHBhcnNpbmdDb250ZXh0Lk9wZW5BcGlEb2MuVmVyc2lvbik7CiAgICAgICAgICAgIEFzc2VydC5FcXVhbCgwLCBwYXJzaW5nQ29udGV4dC5QYXJzaW5nRXJyb3JzLkNvdW50KCkpOwpgYGAKCiMjIEdvYWxzCgotIEltcG9ydCBPcGVuQVBJIFYzIGRlZmluaXRpb25zIGluIGJvdGggWUFNTCBhbmQgSlNPTiBmb3JtYXRzLgotIEV4cG9ydCBPcGVuQVBJIGRlZmluaXRpb24gaW4gWUFNTCBmb3JtYXQKLSBJbXBvcnQgT3BlbkFQSSBWMiBkZWZpbml0aW9ucwotIFByb3ZpZGUgY29tcHJlaGVuc2l2ZSBzeW50YXggYW5kIHNlbWFudGljIGVycm9yIHJlcG9ydGluZyAKLSBFbmFibGUgY29uc3RydWN0aW5nIG9mIE9wZW5BUEkgZGVzY3JpcHRpb25zIHZpYSBhIGRvY3VtZW50IG9iamVjdCBtb2RlbAo= readmeEtag: '"ec945c4a56aa3941d5db5e51a3f812ef03184da0"' readmeLastModified: Fri, 19 Jan 2018 19:15:32 GMT repositoryId: 69284017 description: Parser for OpenAPI Specification created: '2016-09-26T19:13:14Z' updated: '2023-09-27T14:30:38Z' language: JavaScript archived: true stars: 17 watchers: 2 forks: 3 owner: tavis-software logo: https://avatars.githubusercontent.com/u/1613247?v=4 license: Apache-2.0 repoEtag: '"78621f56672cdc7b56901d109ec1d8a540dc63b2b616793853c966751ca8b0cb"' repoLastModified: Wed, 27 Sep 2023 14:30:38 GMT foundInMaster: true category: Parsers id: a804baa6bc67699b99d15abe7827381b - source: - openapi3 tags - openapi31 tags repository: https://github.com/isa-group/idl v3: true v3_1: true id: d1ffb665bb9f1281ca8a6c9e385b648e repositoryMetadata: base64Readme: >- IyBJREw6IEludGVyLXBhcmFtZXRlciBEZXBlbmRlbmN5IExhbmd1YWdlCgpJbnRlci1QYXJhbWV0ZXIgRGVwZW5kZW5jeSBMYW5ndWFnZSAoSURMKSBpcyBhIHRleHR1YWwgZG9tYWluLXNwZWNpZmljIGxhbmd1YWdlIGZvciB0aGUgc3BlY2lmaWNhdGlvbiBvZiBkZXBlbmRlbmNpZXMgYW1vbmcgaW5wdXQgcGFyYW1ldGVycyBpbiB3ZWIgQVBJcy4KSURMIGlzIGRlc2lnbmVkIHRvIGV4cHJlc3MgdGhlIHNldmVuIHR5cGVzIG9mIGludGVyLXBhcmFtZXRlciBkZXBlbmRlbmNpZXMgaWRlbnRpZmllZCBvbiByZWFsLXdvcmxkIEFQSXMsIGluY2x1ZGluZyAoKipSZXF1aXJlcyoqLCAqKk9yKiosICoqT25seU9uZSoqLCAqKkFsbE9yTm9uZSoqLCAqKlplcm9Pck9uZSoqLCAqKkFyaXRobWV0aWMvUmVsYXRpb25hbCoqLCAqKkNvbXBsZXgqKikuIEZvciBtb3JlIGRldGFpbHMgYWJvdXQgSURMIHByb2plY3RzIGFuZCB0byBleHBsb3JlIGl0cyBhcHBsaWNhdGlvbnMsIHBsZWFzZSB2aXNpdCB0aGUgKipbSURMIHdlYnNpdGVdKGh0dHBzOi8vaXNhLWdyb3VwLmdpdGh1Yi5pby9JREwvKSoqLgoKIyMgSW5kZXg6CgoxLiBbQ2F0YWxvZ3VlIG9mIGludGVyLXBhcmFtZXRlciBkZXBlbmRlbmNpZXNdKCNjYXRhbG9ndWUtb2YtaW50ZXItcGFyYW1ldGVyLWRlcGVuZGVuY2llcykKMi4gW0hvdyB0byB1c2UgSURMP10oI2hvdy10by11c2UtaWRsKQozLiBbSURMIGdyYW1tYXJdKCNpZGwtZ3JhbW1hcikKNC4gW0lETCBFZGl0b3JdKCNpZGwtZWRpdG9yKQoKCiMjIENhdGFsb2d1ZSBvZiBpbnRlci1wYXJhbWV0ZXIgZGVwZW5kZW5jaWVzOgoKKiAqKlJlcXVpcmVzOioqIFRoaXMgdHlwZSBvZiBkZXBlbmRlbmN5IGlzIGV4cHJlc3NlZCBhcyAqKuKAnElGIHByZWRpY2F0ZSBUSEVOIHByZWRpY2F0ZTvigJ0qKiwgd2hlcmUgdGhlIGZpcnN0IHByZWRpY2F0ZSBpcyB0aGUgY29uZGl0aW9uIGFuZCB0aGUgc2Vjb25kIGlzIHRoZSBjb25zZXF1ZW5jZS4gCiAgKiBFeGFtcGxlOiAqKltQYXlQYWwgQVBJIC0gQ3JlYXRlIGludm9pY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLnBheXBhbC5jb20vZG9jcy9hcGkvaW52b2ljaW5nL3YxLyNpbnZvaWNlc19jcmVhdGUpKioKCiAgICAgICAgSUYgY3VzdG9tLmxhYmVsIFRIRU4gY3VzdG9tLmFtb3VudDsKICAgICAgICBJRiBtaW5pbXVtX2Ftb3VudF9kdWUgVEhFTiBhbGxvd19wYXJ0aWFsX3BheW1lbnQ9PXRydWU7CgoqICoqT3I6KiogVGhpcyB0eXBlIG9mIGRlcGVuZGVuY3kgaXMgZXhwcmVzc2VkIHVzaW5nIHRoZSBrZXl3b3JkICoq4oCcT3LigJ0qKiBmb2xsb3dlZCBieSBhIGxpc3Qgb2YgdHdvIG9yIG1vcmUgcHJlZGljYXRlcyBwbGFjZWQgaW5zaWRlIHBhcmVudGhlc2VzOiAqKuKAnE9yKHByZWRpY2F0ZSwgcHJlZGljYXRlIFssIC4uLl0pO+KAnSoqLiBUaGUgZGVwZW5kZW5jeSBpcyBzYXRpc2ZpZWQgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBwcmVkaWNhdGVzIGV2YWx1YXRlcyB0byB0cnVlLgogICogRXhhbXBsZTogKipbUmVkZGl0IEFQSSAtIFVwbG9hZCBzdWJyZWRkaXQgaW1hZ2VdKGh0dHBzOi8vd3d3LnJlZGRpdC5jb20vZGV2L2FwaSNQT1NUX2FwaV91cGxvYWRfc3JfaW1nKSoqCgogICAgICAgIElGIHVwbG9hZF90eXBlPT0naW1nJyBUSEVOIG5hbWU7CiAgICAgICAgT3IoaGVhZGVyLCB1cGxvYWRfdHlwZSk7CgoqICoqT25seU9uZToqKiBUaGVzZSBkZXBlbmRlbmNpZXMgYXJlIHNwZWNpZmllZCB1c2luZyB0aGUga2V5d29yZCAqKuKAnE9ubHlPbmXigJ0qKiBmb2xsb3dlZCBieSBhIGxpc3Qgb2YgdHdvIG9yIG1vcmUgcHJlZGljYXRlcyBwbGFjZWQgaW5zaWRlIHBhcmVudGhlc2VzOiAqKuKAnE9ubHlPbmUocHJlZGljYXRlLCBwcmVkaWNhdGUgWywgLi4uXSk74oCdKiouIFRoZSBkZXBlbmRlbmN5IGlzIHNhdGlzZmllZCBpZiBvbmUsIGFuZCBvbmx5IG9uZSBvZiB0aGUgcHJlZGljYXRlcyBldmFsdWF0ZXMgdG8gdHJ1ZS4KICAqIEV4YW1wbGU6ICoqW1N0cmlwZSBBUEkgLSBDcmVhdGUgY291cG9uXShodHRwczovL3N0cmlwZS5jb20vZG9jcy9hcGkvY291cG9ucy9jcmVhdGUpKioKICAKICAgICAgICBPbmx5T25lKGFtb3VudF9vZmYsIHBlcmNlbnRfb2ZmKTsKICAgICAgICBJRiBhbW91bnRfb2ZmIFRIRU4gY3VycmVuY3k7CiAgICAgICAgQWxsT3JOb25lKGR1cmF0aW9uPT0ncmVwZWF0aW5nJywgZHVyYXRpb25faW5fbW9udGhzKTsKCiogKipBbGxPck5vbmU6KiogVGhpcyB0eXBlIG9mIGRlcGVuZGVuY3kgaXMgc3BlY2lmaWVkIHVzaW5nIHRoZSBrZXl3b3JkICoq4oCcQWxsT3JOb25l4oCdKiogZm9sbG93ZWQgYnkgYSBsaXN0IG9mIHR3byBvciBtb3JlIHByZWRpY2F0ZXMgcGxhY2VkIGluc2lkZSBwYXJlbnRoZXNlczogKirigJxBbGxPck5vbmUocHJlZGljYXRlLCBwcmVkaWNhdGUgWywgLi4uXSk74oCdKiouIFRoZSBkZXBlbmRlbmN5IGlzIHNhdGlzZmllZCBpZiBlaXRoZXIgYWxsIHRoZSBwcmVkaWNhdGVzIGV2YWx1YXRlIHRvIHRydWUsIG9yIGFsbCBvZiB0aGVtIGV2YWx1YXRlIHRvIGZhbHNlLgogICogRXhhbXBsZTogKipbTmFwc3RlciBBUEkgLSBHZXQgZmF2b3JpdGVzXShodHRwczovL2RldmVsb3Blci5wcm9kLm5hcHN0ZXIuY29tLyNtZW1iZXItZmF2b3JpdGVzKSoqCgogICAgICAgIEFsbE9yTm9uZShyaWdodHMsIGZpbHRlcj09J3RyYWNrJ3wnYWxidW0nKTsKCiogKipaZXJvT3JPbmU6KiogVGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBzcGVjaWZpZWQgdXNpbmcgdGhlIGtleXdvcmQgKirigJxaZXJvT3JPbmXigJ0qKiBmb2xsb3dlZCBieSBhIGxpc3Qgb2YgdHdvIG9yIG1vcmUgcHJlZGljYXRlcyBwbGFjZWQgaW5zaWRlIHBhcmVudGhlc2VzOiAqKuKAnFplcm9Pck9uZShwcmVkaWNhdGUsIHByZWRpY2F0ZSBbLCAuLi5dKTvigJ0qKi4gVGhlIGRlcGVuZGVuY3kgaXMgc2F0aXNmaWVkIGlmIG5vbmUgb3IgYXQgbW9zdCBvbmUgb2YgdGhlIHByZWRpY2F0ZXMgZXZhbHVhdGVzIHRvIHRydWUuCiAgKiBFeGFtcGxlOiAqKltHaXRodWIgQVBJIC0gR2V0IFVzZXIgUmVwb3NdKGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL3Jlc3QvcmVwb3MvcmVwb3MjbGlzdC1yZXBvc2l0b3JpZXMtZm9yLXRoZS1hdXRoZW50aWNhdGVkLXVzZXIpKioKCiAgICAgICAgWmVyb09yT25lKHR5cGUsIHZpc2liaWxpdHkpOwogICAgICAgIFplcm9Pck9uZSh0eXBlLCBhZmZpbGlhdGlvbik7CgoqICoqQXJpdGhtZXRpYy9SZWxhdGlvbmFsOioqIFJlbGF0aW9uYWwgZGVwZW5kZW5jaWVzIGFyZSBzcGVjaWZpZWQgYXMgcGFpcnMgb2YgcGFyYW1ldGVycyBqb2luZWQgYnkgYW55IG9mIHRoZSBmb2xsb3dpbmcgcmVsYXRpb25hbCBvcGVyYXRvcnM6ID09LCAhPSwgPD0sIDwsID49IG9yID4uIEFyaXRobWV0aWMgZGVwZW5kZW5jaWVzIHJlbGF0ZSB0d28gb3IgbW9yZSBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBvcGVyYXRvcnMgKywgLSAsICosIC8gZm9sbG93ZWQgYnkgYSBmaW5hbCBjb21wYXJpc29uIHVzaW5nIGEgcmVsYXRpb25hbCBvcGVyYXRvci4KICAqIEV4YW1wbGU6ICoqW1Nob3BpZnkgQVBJIC0gR2V0IHByaWNlIHJ1bGVzXShodHRwczovL3Nob3BpZnkuZGV2L2FwaS9hZG1pbi1yZXN0LzIwMjItMTAvcmVzb3VyY2VzL3ByaWNlcnVsZSNpbmRleC0yMDIwLTAxKSoqCgogICAgICAgIGNyZWF0ZWRfYXRfbWluIDw9IGNyZWF0ZWRfYXRfbWF4OwogICAgICAgIHVwZGF0ZWRfYXRfbWluIDw9IHVwZGF0ZWRfYXRfbWF4OwogICAgICAgIHN0YXJ0c19hdF9taW4gPD0gc3RhcnRzX2F0X21heDsKICAgICAgICBlbmRzX2F0X21pbiA8PSBlbmRzX2F0X21heDsKICAKKiAqKkNvbXBsZXg6KiogVGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBzcGVjaWZpZWQgYXMgYSBjb21iaW5hdGlvbiBvZiB0aGUgcHJldmlvdXMgb25lcy4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZSwgcHJlZGljYXRlcyBjYW5ub3QgaW5jbHVkZSBSZXF1aXJlcyBkZXBlbmRlbmNpZXMgdG8gYXZvaWQgb3Zlci1jb21wbGljYXRlZCBzcGVjaWZpY2F0aW9ucyAoc3VjaCBkZXBlbmRlbmNpZXMgY2FuIGJlIGV4cHJlc3NlZCBpbiBzaW1wbGVyIHdheXMpLgoKIyMjIE1vcmUgSURMIGV4YW1wbGVzCklmIHlvdSB3YW50IHRvIHNlZSBtb3JlIGV4YW1wbGVzIG9mIElETCBzcGVjaWZpY2F0aW9ucyBmcm9tIHJlYWwgQVBJcywgY2hlY2sgW2hlcmVdKGVzLnVzLmlzYS5pbnRlcnBhcmFtZGVwL3Jlc291cmNlcy9leHByZXNzaXZlbmVzc19ldmFsdWF0aW9uKS4KCiMjIEhvdyB0byB1c2UgSURMPwoKSURMIGRlcGVuZGVuY2llcyBjYW4gYmUgc3RyYWlnaHRmb3J3YXJkbHkgc3BlY2lmaWVkIGluIE9BUyBzcGVjaWZpY2F0aW9ucyB1c2luZyAqKklETDRPQVMqKiwgYW4gT0FTIGV4dGVuc2lvbi4gCllvdSBqdXN0IG5lZWQgdG8gaW5jbHVkZSB0aGUga2V5d29yZCBgeC1kZXBlbmRlbmNpZXNgIGF0IHRoZSBvcGVyYXRpb24gbGV2ZWwsIGFuZCBpbmNsdWRlIHRoZSBsaXN0IG9mIGRlcGVuZGVuY2llcyBhcyBhbiBhcnJheS4gU2VlIHRoaXMgZXhhbXBsZSBmcm9tIHRoZSBzZWFyY2ggb3BlcmF0aW9uIGZyb20KdGhlIEdvb2dsZSBNYXBzIFBsYWNlcyBBUEkgZXh0ZW5kZWQgd2l0aCBJREw0T0FTLgoKICAgICAgICAgICAgIHBhdGhzOgogICAgICAgICAgICAgICAvc2VhcmNoOgogICAgICAgICAgICAgICAgIGdldDoKICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOgogICAgICAgICAgICAgICAgICAgLSBuYW1lOiByYWRpdXMgWy4uLl0KICAgICAgICAgICAgICAgICAgIC0gbmFtZTogcmFua2J5IFsuLi5dCiAgICAgICAgICAgICAgICAgICAtIG5hbWU6IGtleXdvcmQgWy4uLl0KICAgICAgICAgICAgICAgICAgIC0gbmFtZTogbmFtZSBbLi4uXQogICAgICAgICAgICAgICAgICAgLSBuYW1lOiB0eXBlIFsuLi5dCiAgICAgICAgICAgICAgICAgICAtIG5hbWU6IG1pbnByaWNlIFsuLi5dCiAgICAgICAgICAgICAgICAgICAtIG5hbWU6IG1heHByaWNlIFsuLi5dCiAgICAgICAgICAgICAgICAgICAtIFsuLi5dCiAgICAgICAgICAgICAgICAgICBbLi4uXQogICAgICAgICAgICAgICAgIHgtZGVwZW5kZW5jaWVzOgogICAgICAgICAgICAgICAgICAgLSBaZXJvT3JPbmUocmFkaXVzLCByYW5rYnk9PSdkaXN0YW5jZScpOwogICAgICAgICAgICAgICAgICAgLSBJRiByYW5rYnk9PSdkaXN0YW5jZScgVEhFTiBrZXl3b3JkIE9SIG5hbWUgT1IgdHlwZTsKICAgICAgICAgICAgICAgICAgIC0gbWF4cHJpY2UgPj0gbWlucHJpY2U7CgojIyBJREwgZ3JhbW1hcgpUaGUgZm9sbG93aW5nIHNlY3Rpb24gcHJlc2VudHMgYSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgdGhlIElETCBncmFtbWFyLiBUaGUgZnVsbCB2ZXJzaW9uIGlzIGF2YWlsYWJsZSBhcyBhIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIElETCBjYW4gYmUgZm91bmQgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9pc2EtZ3JvdXAvSURML2Jsb2IvbWFzdGVyL2VzLnVzLmlzYS5pbnRlcnBhcmFtZGVwL3NyYy9lcy91cy9pc2EvaW50ZXJwYXJhbWRlcC9JbnRlcnBhcmFtZXRlckRlcGVuZGVuY2llc0xhbmd1YWdlLnh0ZXh0KS4KCiAgICAgICAgICAgIE1vZGVsOgogICAgICAgICAgICAgICAgRGVwZW5kZW5jeSo7CiAgICAgICAgICAgIERlcGVuZGVuY3k6CiAgICAgICAgICAgICAgICBSZWxhdGlvbmFsRGVwZW5kZW5jeSB8IEFyaXRobWV0aWNEZXBlbmRlbmN5IHwKICAgICAgICAgICAgICAgIENvbmRpdGlvbmFsRGVwZW5kZW5jeSB8IFByZWRlZmluZWREZXBlbmRlbmN5OwogICAgICAgICAgICBSZWxhdGlvbmFsRGVwZW5kZW5jeToKICAgICAgICAgICAgICAgIFBhcmFtIFJlbGF0aW9uYWxPcGVyYXRvciBQYXJhbTsKICAgICAgICAgICAgQXJpdGhtZXRpY0RlcGVuZGVuY3k6CiAgICAgICAgICAgICAgICBPcGVyYXRpb24gUmVsYXRpb25hbE9wZXJhdG9yIERPVUJMRTsKICAgICAgICAgICAgT3BlcmF0aW9uOgogICAgICAgICAgICAgICAgUGFyYW0gT3BlcmF0aW9uQ29udGludWF0aW9uIHwKICAgICAgICAgICAgICAgICcoJyBPcGVyYXRpb24gJyknIE9wZXJhdGlvbkNvbnRpbnVhdGlvbj87CiAgICAgICAgICAgIE9wZXJhdGlvbkNvbnRpbnVhdGlvbjoKICAgICAgICAgICAgICAgIEFyaXRobWV0aWNPcGVyYXRvciAoUGFyYW0gfCBPcGVyYXRpb24pOwogICAgICAgICAgICBDb25kaXRpb25hbERlcGVuZGVuY3k6CiAgICAgICAgICAgICAgICAnSUYnIFByZWRpY2F0ZSAnVEhFTicgUHJlZGljYXRlOwogICAgICAgICAgICBQcmVkaWNhdGU6CiAgICAgICAgICAgICAgICBDbGF1c2UgQ2xhdXNlQ29udGludWF0aW9uPzsKICAgICAgICAgICAgQ2xhdXNlOgogICAgICAgICAgICAgICAgKFRlcm0gfCBSZWxhdGlvbmFsRGVwZW5kZW5jeSB8IEFyaXRobWV0aWNEZXBlbmRlbmN5CiAgICAgICAgICAgICAgICB8IFByZWRlZmluZWREZXBlbmRlbmN5KSB8ICdOT1QnPyAnKCcgUHJlZGljYXRlICcpJzsKICAgICAgICAgICAgVGVybToKICAgICAgICAgICAgICAgICdOT1QnPyAoUGFyYW0gfCBQYXJhbVZhbHVlUmVsYXRpb24pOwogICAgICAgICAgICBQYXJhbToKICAgICAgICAgICAgICAgIElEIHwgJ1snIElEICddJzsKICAgICAgICAgICAgUGFyYW1WYWx1ZVJlbGF0aW9uOgogICAgICAgICAgICAgICAgUGFyYW0gJz09JyBTVFJJTkcoJ3wnU1RSSU5HKSogfAogICAgICAgICAgICAgICAgUGFyYW0gJ0xJS0UnIFBBVFRFUk5fU1RSSU5HIHwgUGFyYW0gJz09JyBCT09MRUFOIHwKICAgICAgICAgICAgICAgIFBhcmFtIFJlbGF0aW9uYWxPcGVyYXRvciBET1VCTEU7CiAgICAgICAgICAgIENsYXVzZUNvbnRpbnVhdGlvbjoKICAgICAgICAgICAgICAgICgnQU5EJyB8ICdPUicpIFByZWRpY2F0ZTsKICAgICAgICAgICAgUHJlZGVmaW5lZERlcGVuZGVuY3k6CiAgICAgICAgICAgICAgICAnTk9UJz8gKCdPcicgfCAnT25seU9uZScgfCAnQWxsT3JOb25lJyB8CiAgICAgICAgICAgICAgICAnWmVyb09yT25lJykgJygnIENsYXVzZSAoJywnIENsYXVzZSkrICcpJzsKICAgICAgICAgICAgUmVsYXRpb25hbE9wZXJhdG9yOgogICAgICAgICAgICAgICAgJzwnIHwgJz4nIHwgJzw9JyB8ICc+PScgfCAnPT0nIHwgJyE9JzsKICAgICAgICAgICAgQXJpdGhtZXRpY09wZXJhdG9yOgogICAgICAgICAgICAgICAgJysnIHwgJy0nIHwgJyonIHwgJy8nOwoKIyMgSURMIEVkaXRvcjoKClRoZSBJREwgaXMgaW1wbGVtZW50ZWQgdXNpbmcgWHRleHQsIGEgcG9wdWxhciBmcmFtZXdvcmsgZm9yIHRoZSBkZXZlbG9wbWVudCBvZiBwcm9ncmFtbWluZyBsYW5ndWFnZXMgYW5kIERTTHMuIFh0ZXh0IHRha2VzIGEgZ3JhbW1hciBhcyBpbnB1dCBhbmQgZ2VuZXJhdGVzIGEgY29tcGxldGUgc2V0IG9mIHRvb2xzIGFzIG91dHB1dCwgaW5jbHVkaW5nIGEgbGlua2VyLCBhIGNvbXBpbGVyLCBhIHBhcnNlciBhbmQgYSBmdWxseS1mbGVkZ2VkIGVkaXRvciBzdXBwb3J0aW5nIGZlYXR1cmVzIHN1Y2ggYXMgY29kZSBjb21wbGV0aW9uLCB0eXBlIGNoZWNraW5nLCBzeW50YXggY29sb3JpbmcgYW5kIHZhbGlkYXRpb24gYXMgY2FuIGJlIG9ic2VydmVkIGluIHRoZSBmaWd1cmUgYmVsb3cuIEZvciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGdlbmVyYXRlIHRoZSBYdGV4dCBhcnRpZmFjdHMgYW5kIHRlc3QgdGhlIERTTCwgcmVmZXIgdG8gW3RoaXMgdHV0b3JpYWxdKGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL1h0ZXh0L2RvY3VtZW50YXRpb24vMTAyX2RvbWFpbm1vZGVsd2Fsa3Rocm91Z2guaHRtbCkuCgohW0lETCBFZGl0b3JdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9pc2EtZ3JvdXAvSURML0lETFdlYnNpdGUvYXNzZXRzL2ltYWdlcy9JRExFZGl0b3IucG5nKQoKIyMjIFRoaW5ncyB0byBub3RpY2UKLSBUaGUgcHJvamVjdCBjb250YWluaW5nIHRoZSBncmFtbWFyIGRlZmluaXRpb24gYW5kIGFsbCBsYW5ndWFnZS1zcGVjaWZpYyBjb21wb25lbnRzIChwYXJzZXIsIGxleGVyLCBsaW5rZXIsIHZhbGlkYXRpb24sIGV0Yy4pIGlzIGBgYCdlcy51cy5pc2EuaW50ZXJwYXJhbWRlcCdgYGAuCi0gRm9yIGluc3RydWN0aW9ucyBvbiBob3cgdG8gZ2VuZXJhdGUgdGhlIFh0ZXh0IGFydGlmYWN0cyBhbmQgdGVzdCB0aGUgRFNMLCByZWZlciB0byBbdGhpcyB0dXRvcmlhbF0oaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvWHRleHQvZG9jdW1lbnRhdGlvbi8xMDJfZG9tYWlubW9kZWx3YWxrdGhyb3VnaC5odG1sKS4KCgo= readmeEtag: '"e8bc0f87fa5ef755da5206762212626fd82ff119"' readmeLastModified: Sun, 17 Sep 2023 16:47:13 GMT repositoryId: 211313406 description: 'IDL: Inter-parameter Dependency Language' created: '2019-09-27T12:22:42Z' updated: '2026-01-06T11:19:48Z' language: Java archived: false stars: 20 watchers: 9 forks: 0 owner: isa-group logo: https://avatars.githubusercontent.com/u/2708867?v=4 license: GPL-3.0 repoEtag: '"26ccab84a3601be697aabafb42439b65bbb81fc3aa2ebdd962a44d0e8d0992f3"' repoLastModified: Tue, 06 Jan 2026 11:19:48 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/elixir-cloud-aai/foca v3: true id: 1b552721e4edb94864dd3f1fad63ef9f repositoryMetadata: base64Readme: >- IyAhW0ZPQ0FfbG9nb11bZm9jYS1sb2dvXSAmZW5zcDtfRGV2ZWxvcCBGbGFzayBtaWNyb3NlcnZpY2VzIHF1aWNrbHkhXwoKWyFbTGljZW5zZV1bYmFkZ2UtbGljZW5zZV1dW2JhZGdlLXVybC1saWNlbnNlXQpbIVtCdWlsZF9zdGF0dXNdW2JhZGdlLWJ1aWxkLXN0YXR1c11dW2JhZGdlLXVybC1idWlsZC1zdGF0dXNdClshW0RvY3NdW2JhZGdlLWRvY3NdXVtiYWRnZS11cmwtZG9jc10KWyFbQ292ZXJhZ2VdW2JhZGdlLWNvdmVyYWdlXV1bYmFkZ2UtdXJsLWNvdmVyYWdlXQpbIVtHaXRIdWJfdGFnXVtiYWRnZS1naXRodWItdGFnXV1bYmFkZ2UtdXJsLWdpdGh1Yi10YWddClshW1B5UElfcmVsZWFzZV1bYmFkZ2UtcHlwaV1dW2JhZGdlLXVybC1weXBpXQoKKipGT0NBKiogKCoqRioqbGFzay0qKk8qKnBlbkFQSS0qKkMqKm9ubmV4aW9uLSoqQSoqcmNoZXR5cGUpIGlzIGFuIG9waW5pb25hdGVkCmFyY2hldHlwZSB0aGF0IGVuYWJsZXMgZmFzdCBkZXZlbG9wbWVudCBvZiBbT3BlbkFQSV1bcmVzLW9wZW5hcGldLWJhc2VkIEhUVFAKQVBJIG1pY3Jvc2VydmljZXMgaW4gW0ZsYXNrXVtyZXMtZmxhc2tdLCBsZXZlcmFnaW5nIHRoZSBleGNlbGxlbnQKW0Nvbm5leGlvbl1bcmVzLWNvbm5leGlvbl0gZnJhbWV3b3JrLgoKRk9DQSByZWR1Y2VzIHRoZSByZXF1aXJlZCBib2lsZXJwbGF0ZSBjb2RlIHRvIGZpcmUgdXAgeW91ciBhcHAgdG8gYSBiYXJlCm1pbmltdW0gYW5kIGFsbG93cyB5b3UgdG8gXyoqZm9jdXMgb24geW91ciBhcHBsaWNhdGlvbiBsb2dpYyoqXy4gSXQgYWxzbyBhdm9pZHMKdW5uZWNlc3NhcnkgY29kZSByZXBldGl0aW9uIGFuZCBpbnRyb2R1Y2VzIGNyb3NzLXNlcnZpY2UgY29uc2lzdGVuY3kgd2hlbgpkZXZlbG9waW5nIG11bHRpcGxlIGFwcGxpY2F0aW9ucy4gU2ltcGx5IHdyaXRlIGEgY29uZmlndXJhdGlvbiBmaWxlLCBwYXNzCml0IHRvIEZPQ0EgYW5kIHlvdSdyZSBnb29kIHRvIGdvIQoKQ3VycmVudGx5IHN1cHBvcnRlZCBmZWF0dXJlczoKCiogTWFuYWdlIGFwcCBjb25maWd1cmF0aW9uCiogSGFuZGxlIGV4Y2VwdGlvbnMKKiBSZWdpc3RlciBPcGVuQVBJIDIueC8zLnggc3BlY2lmaWNhdGlvbnMKKiBQcm90ZWN0IGVuZHBvaW50cyB2aWEgW0pXVF1bcmVzLWp3dF0gdmFsaWRhdGlvbgoqIFJlZ2lzdGVyIFtNb25nb0RCXVtyZXMtbW9uZ28tZGJdIGNvbGxlY3Rpb25zCiogUnVuIGFzeW5jaHJvbm91cyB0YXNrcyB2aWEgW1JhYmJpdE1RXVtyZXMtcmFiYml0bXFdICYgW0NlbGVyeV1bcmVzLWNlbGVyeV0KKiBbQ09SU11bcmVzLWNvcnNdIHN1cHBvcnQKCkNoZWNrIHRoZSBbQVBJIGRvY3NdW2JhZGdlLXVybC1kb2NzXSBmb3IgZnVydGhlciBkZXRhaWxzLgoKIyMgVGFibGUgb2YgQ29udGVudHMKCiogW1VzYWdlXSgjdXNhZ2UpCiogW0NvbmZpZ3VyYXRpb25dKCNjb25maWd1cmF0aW9uKQogICogW0NvbmZpZ3VyaW5nIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnNdKCNjb25maWd1cmluZy1vcGVuYXBpLXNwZWNpZmljYXRpb25zKQogICogW0NvbmZpZ3VyaW5nIE1vbmdvREJdKCNjb25maWd1cmluZy1tb25nb2RiKQogICogW0NvbmZpZ3VyaW5nIGV4Y2VwdGlvbnNdKCNjb25maWd1cmluZy1leGNlcHRpb25zKQogICogW0NvbmZpZ3VyaW5nIGFzeW5jaHJvbm91cyB0YXNrc10oI2NvbmZpZ3VyaW5nLWFzeW5jaHJvbm91cy10YXNrcykKICAqIFtDb25maWd1cmluZyBsb2dnaW5nXSgjY29uZmlndXJpbmctbG9nZ2luZykKICAqIFtDb25maWd1cmluZyBzZWN1cml0eV0oI2NvbmZpZ3VyaW5nLXNlY3VyaXR5KQogICogW0NvbmZpZ3VyaW5nIHRoZSBzZXJ2ZXJdKCNjb25maWd1cmluZy10aGUtc2VydmVyKQogICogW0N1c3RvbSBjb25maWd1cmF0aW9uXSgjY3VzdG9tLWNvbmZpZ3VyYXRpb24pCiAgKiBbQWNjZXNzaW5nIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyc10oI2FjY2Vzc2luZy1jb25maWd1cmF0aW9uLXBhcmFtZXRlcnMpCiogW1V0aWxpdGllc10oI3V0aWxpdGllcykKICAqIFtEYXRhYmFzZSB1dGlsaXRpZXNdKCNkYXRhYmFzZS11dGlsaXRpZXMpCiAgKiBbTG9nZ2luZyB1dGl0bGllc10oI2xvZ2dpbmctdXRpbGl0aWVzKQogICogW01pc2NlbGxhbmVvdXMgdXRpbGl0aWVzXSgjbWlzY2VsbGFuZW91cy11dGlsaXRpZXMpCiAgKiBbQWNjZXNzIENvbnRyb2wgdXRpbGl0aWVzXSgjYWNjZXNzLWNvbnRyb2wtdXRpbGl0aWVzKQoqIFtDb250cmlidXRpbmddKCNjb250cmlidXRpbmcpCiogW1ZlcnNpb25pbmddKCN2ZXJzaW9uaW5nKQoqIFtMaWNlbnNlXSgjbGljZW5zZSkKKiBbQ29udGFjdF0oI2NvbnRhY3QpCgojIyBVc2FnZQoKKDEpIEluc3RhbGwgdGhlIFtGT0NBIHBhY2thZ2VdW2JhZGdlLXVybC1weXBpXSB3aXRoIGBwaXBgOgoKYGBgYmFzaApwaXAgaW5zdGFsbCBmb2NhCmBgYAoKKDIpIENyZWF0ZSBhIFtjb25maWd1cmF0aW9uXSgjY29uZmlndXJhdGlvbikgZmlsZS4KCigzKSBJbXBvcnQgdGhlIEZPQ0EgY2xhc3MgYW5kIHBhc3MgeW91ciBjb25maWcgZmlsZToKCmBgYHB5dGhvbgpmcm9tIGZvY2EgaW1wb3J0IEZvY2EKCmZvY2EgPSBGb2NhKGNvbmZpZ19maWxlPSJwYXRoL3RvL215L2FwcC9jb25maWcueWFtbCIpCmFwcCA9IGZvY2EuY3JlYXRlX2FwcCgpICAjIHJldHVybnMgYSBDb25uZXhpb24gYXBwIGluc3RhbmNlCmBgYAoKKDQpIFN0YXJ0IHlvdXIgW0ZsYXNrXVtyZXMtZmxhc2tdIGFwcCBhcyB1c3VhbC4KCiFbSGludF1baW1nLWhpbnRdIF8qKkNoZWNrIG91dCB0aGUgW1BldHN0b3JlIGV4YW1wbGUgYXBwbGljYXRpb25dW2V4YW1wbGVdCnNoaXBwZWQgd2l0aCB0aGlzIHJlcG9zaXRvcnkgdG8gc2VlIEZPQ0EgaW4gYWN0aW9uISoqXwoKIyMgQ29uZmlndXJhdGlvbgoKIVtIaW50XVtpbWctaGludF0gXyoqSW4gb3JkZXIgdG8gZ2V0IHlvdSBzdGFydGVkIHdyaXRpbmcgeW91ciBvd24gYXBwCmNvbmZpZ3VyYXRpb24sIHlvdSBjYW4gY29weSB0aGUgWyoqYW5ub3RhdGVkIHRlbXBsYXRlKipdW2NvbmZpZy10ZW1wbGF0ZV0Kc2hpcHBlZCB3aXRoIHRoaXMgcmVwb3NpdG9yeSBhbmQgbW9kaWZ5IGl0LioqXwoKSW4gb3JkZXIgdG8gdXNlIEZPQ0EgZnVuY3Rpb25hbGl0aWVzLCB5b3UgbXVzdCBjcmVhdGUgYSBbWUFNTF1bcmVzLXlhbWxdCmNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IGluY2x1ZGVzIGtleXdvcmQgc2VjdGlvbnMgcmVzZXJ2ZWQgYnkgRk9DQS4gVGhlCmZvbGxvd2luZyB0b3AtbGV2ZWwgc2VjdGlvbnMgYXJlIGludGVycHJldGVkIGJ5IEZPQ0EgKGV4aGF1c3RpdmU7IGxpbmtzIGFyZQpwcm92aWRlZCB0byB0aGUgY29ycmVzcG9uZGluZyBzZWN0aW9ucyBpbiB0aGlzIGRvY3VtZW50YXRpb24sIGFzIHdlbGwgYXMgdG8gdGhlCmNvcnJlc3BvbmRpbmcgbW9kZWxzIGluIHRoZSBbQVBJIGRvY3VlbWVudGF0aW9uXVtiYWRnZS11cmwtZG9jc10pOgoKKiBbYGFwaWBdKCNjb25maWd1cmluZy1vcGVuYXBpLXNwZWNpZmljYXRpb25zKSAvIFttb2RlbF1bZG9jcy1tb2RlbHMtYXBpXQoqIFtgZGJgXSgjY29uZmlndXJpbmctbW9uZ29kYikgLyBbbW9kZWxdW2RvY3MtbW9kZWxzLWRiXQoqIFtgZXhjZXB0aW9uc2BdKCNjb25maWd1cmluZy1leGNlcHRpb25zKSAvIFttb2RlbF1bZG9jcy1tb2RlbHMtZXhjZXB0aW9uc10KKiBbYGpvYnNgXSgjY29uZmlndXJpbmctYXN5bmNocm9ub3VzLXRhc2tzKSAvIFttb2RlbF1bZG9jcy1tb2RlbHMtam9ic10KKiBbYGxvZ2BdKCNjb25maWd1cmluZy1sb2dnaW5nKSAvIFttb2RlbF1bZG9jcy1tb2RlbHMtbG9nXQoqIFtgc2VjdXJpdHlgXSgjY29uZmlndXJpbmctc2VjdXJpdHkpIC8gW21vZGVsXVtkb2NzLW1vZGVscy1zZWN1cml0eV0KKiBbYHNlcnZlcmBdKCNjb25maWd1cmluZy10aGUtc2VydmVyKSAvIFttb2RlbF1bZG9jcy1tb2RlbHMtc2VydmVyXQoKKipfQW55IHZhbHVlcyBwYXNzZWQgdG8gcmVzZXJ2ZWQga2V5d29yZHMgYXJlIGF1dG9tYXRpY2FsbHkgdmFsaWRhdGVkXyoqLCBhbmQgYQpjb3JyZXNwb25kaW5nIGluZm9ybWF0aXZlIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuZXZlciBhIHZhbHVlIGRvZXMgbm90CmFkaGVyZSB0byB0aGUgY29ycmVzcG9uZGluZyBtb2RlbCBhcyBkZXNjcmliZWQgaW4gdGhlIFtBUEkKZG9jdW1lbnRhdGlvbl1bZG9jcy1tb2RlbHNdLiBJZiB5b3UgZG8gX25vdF8gd2FudCB0byBtYWtlIHVzZSBvZiBhIHNwZWNpZmljCkZPQ0EgZnVuY3Rpb25hbGl0eSwgc2ltcGx5IG9taXQgdGhlIGNvcnJlc3BvbmRpbmcgc2VjdGlvbi4KCiMjIyBDb25maWd1cmluZyBPcGVuQVBJIHNwZWNpZmljYXRpb25zCgpUaGUgYGFwaWAgc2VjdGlvbiBpcyB1c2VkIHRvIHNwZWNpZnkgYW55IFtPcGVuQVBJXVtyZXMtb3BlbmFwaV0gc3BlY2lmaWNhdGlvbnMKY29uc3VtZWQgYXMgcGFydCBvZiB5b3VyIGFwcGxpY2F0aW9uLiBFc3NlbnRpYWxseSwgRk9DQSBhZGRzIGEgd3JhcHBlciBhcm91bmQKW0Nvbm5leGlvbl1bcmVzLWNvbm5leGlvbl0sIHdoaWNoIHZhbGlkYXRlcyByZXF1ZXN0cy9yZXNwb25zZXMgYW5kIGNhbiBzZXJ2ZQp0aGUgc3BlY2lmaWNhdGlvbnMgYXMgd2VsbCBhcyBhIFtTd2FnZ2VyXVtyZXMtc3dhZ2dlcl0tYmFzZWQgdXNlciBpbnRlcmZhY2UgdG8KZXhwbG9yZSB0aGUgQVBJLiBGT0NBIHN1cHBvcnRzIG11bHRpcGxlIHNwZWNpZmljYXRpb24gZmlsZXMgKHZlcnNpb25zClN3YWdnZXIvT3BlbkFQSSAyLngsIE9wZW5BUEkgMy54IGFuZCBtaXhlZCkgYW5kIG11bHRpcGxlIGZyYWdtZW50cyB0aGVyZW9mLCBhbmQKaXQgYWRkcyBhZGRpdGlvbmFsIGZlYXR1cmVzIHRoYXQgYWxsb3cgZWFzeSBtb2RpZmljYXRpb24gb2Ygc3BlY2lmaWNhdGlvbnMgb24KdGhlIGZseS4gSW4gcGFydGljdWxhciwgbGlua3MgdG8gcm91dGVycyBhbmQgc2VjdXJpdHkgZGVmaW5pdGlvbnMgY2FuIGJlIGFkZGVkCnRvIGVhY2ggc3BlY2lmaWVkIGVuZHBvaW50LgoKX0V4YW1wbGU6XwoKYGBgeWFtbAphcGk6CiAgc3BlY3M6CiAgICAtIHBhdGg6CiAgICAgICAgLSBwYXRoL3RvL29wZW5hcGkvc3BlY3MueWFtbAogICAgICAgIC0gcGF0aC90by9vcGVuYXBpL2FkZGl0aW9ucy55YW1sCiAgICAgIGFkZF9vcGVyYXRpb25fZmllbGRzOgogICAgICAgIHgtb3BlbmFwaS1yb3V0ZXItY29udHJvbGxlcjogbXlhcGkuY29udHJvbGxlcnMKICAgICAgYWRkX3NlY3VyaXR5X2ZpZWxkczoKICAgICAgICB4LWJlYXJlckluZm9GdW5jOiBhcHAudmFsaWRhdGVfdG9rZW4KICAgICAgZGlzYWJsZV9hdXRoOiBGYWxzZQogICAgICBjb25uZXhpb246CiAgICAgICAgc3RyaWN0X3ZhbGlkYXRpb246IFRydWUKICAgICAgICB2YWxpZGF0ZV9yZXNwb25zZXM6IFRydWUKICAgICAgICBvcHRpb25zOgogICAgICAgICAgc3dhZ2dlcl91aTogVHJ1ZQogICAgICAgICAgc2VydmVfc3BlYzogVHJ1ZQogICAgLSBwYXRoOgogICAgICAgIC0gcGF0aC90by9vcGVuYXBpL290aGVyX3NwZWNzLnlhbWwKYGBgCgo+IEluIHRoaXMgZXhhbXBsZSwgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBsaXN0cyB0d28gc2VwYXJhdGUgc3BlY2lmaWNhdGlvbnMuCj4gVGhlIGZpcnN0IGlzIGEgY29tcG9zaXRlIG9uZSB0aGF0IEZPQ0Egd2lsbCBjb21waWxlIGZyb20gdHdvIGZpbGVzLAo+IGBwYXRoL3RvL29wZW5hcGkvc3BlY3MueWFtbGAgYW5kIGBwYXRoL3RvL29wZW5hcGkvYWRkaXRpb25zLnlhbWxgLiBJdCBjb21lcwo+IHdpdGggYSByYW5nZSBvZiBkaWZmZXJlbnQgZXhwbGljaXRseSBzcGVjaWZpZWQgcGFyYW1ldGVycyB0byBmdXJ0aGVyCj4gY3VzdG9taXplIHRoZSBzcGVjaWZpY2F0aW9uIGl0c2VsZiAoY2xhc3Nlcy9mdW5jdGlvbnMgaW1wbGVtZW50aW5nCj4gY29udHJvbGxlcnMgYW5kIHRva2VuIHZhbGlkYXRpb24gYXJlIGxpbmtlZCB0byBlYWNoIGVuZHBvaW50IHZpYQo+IGBhZGRfb3BlcmF0aW9uX2ZpZWxkc2A7IGB4LW9wZW5hcGktcm91dGVyLWNvbnRyb2xsZXJgIGFuZCBgeC1iZWFyZXJJbmZvRnVuY2AKPiBjYW4gYmUgdXNlZCB0byBsaW5rIGNvbnRyb2xsZXIgZnVuY3Rpb25zL2NsYXNzZXMgYW5kIGF1dGhvcml6YXRpb24gdmFsaWRhdGlvbgo+IGZ1bmN0aW9ucyB0byBlbmRwb2ludHMsIHJlc3BlY3RpdmVseS4gRnVydGhlcm1vcmUsIGEgZmxhZyB0byBkaXNhYmxlIHRoZSBuZWVkCj4gZm9yIHBhc3NpbmcgYXV0aG9yaXphdGlvbiB0b2tlbnMgYW5kIHNldmVyYWwgW0Nvbm5leGlvbl1bcmVzLWNvbm5leGlvbl0KPiBvcHRpb25zIGFyZSBleHBsaWNpdGx5IHNldCBmb3IgdGhpcyBzcGVjaWZpY2F0aW9uLiBJbiBjb250cmFzdCwgb25seSB0aGUgcGF0aAo+IHRvIGEgc2luZ2xlIGZpbGUgaXMgc3BlY2lmaWVkIGZvciB0aGUgc2Vjb25kIHNwZWNpZmljYXRpb24sIGltcGx5aW5nIGRlZmF1bHQKPiB2YWx1ZXMgZm9yIGFsbCBvdGhlciBvcHRpb25zLiAgCj4gIAo+IEZ1cnRoZXIgc3VwcG9ydCBmb3IgdmFsaWRhdGluZyBhdXRob3JpemF0aW9uIGNhbiBhbHNvIGJlIGFkZGVkIHRvCj4gc3BlY2lmaWNhdGlvbnMgdmlhIHRoZSBgYWRkX3NlY3VyaXR5X2ZpZWxkc2AgcGFyYW1ldGVyIHVuZGVyIGBzcGVjc2AgKG5vdAo+IHNob3duIGhlcmUpLiBDZi4gdGhlIFtBUEkgbW9kZWxdW2RvY3MtbW9kZWxzLWFwaV0gZm9yIHRoaXMgYW5kIG90aGVyIG9wdGlvbnMsCj4gYXMgd2VsbCBhcyBmdXJ0aGVyIGRldGFpbHMuCgojIyMgQ29uZmlndXJpbmcgTW9uZ29EQgoKRk9DQSBjYW4gcmVnaXN0ZXIgb25lIG9yIG1vcmUgW01vbmdvREJdW3Jlcy1tb25nby1kYl0gZGF0YWJhc2VzIGFuZC9vcgpjb2xsZWN0aW9ucyBmb3IgeW91LiBUbyB1c2UgdGhhdCBmdW5jdGlvbmFsaXR5LCBzaW1wbHkgaW5jbHVkZSB0aGUgdG9wLWxldmVsCmBkYmAga2V5d29yZCBzZWN0aW9uIGluIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlIGFuZCB0dW5lIGl0cyBiZWhhdmlvciB0aHJvdWdoCnRoZSBhdmFpbGFibGUgcGFyYW1ldGVycy4KCl9FeGFtcGxlOl8KCmBgYHlhbWwKZGI6CiAgaG9zdDogbW9uZ29kYgogIHBvcnQ6IDI3MDE3CiAgZGJzOgogICAgbXlEYjoKICAgICAgY29sbGVjdGlvbnM6CiAgICAgICAgbXlDb2xsZWN0aW9uOgogICAgICAgICAgaW5kZXhlczoKICAgICAgICAgICAgLSBrZXlzOgogICAgICAgICAgICAgICAgaWQ6IDEKICAgICAgICAgICAgICBvcHRpb25zOgogICAgICAgICAgICAgICAgJ3VuaXF1ZSc6IFRydWUKICAgICAgICBteVNlY29uZENvbGxlY3Rpb246CiAgICAgICAgICBpbmRleGVzOgogICAgICAgICAgICAtIGtleXM6CiAgICAgICAgICAgICAgICBvdGhlcl9pZDogMQogICAgbXlPdGhlckRiOgogICAgICBjb2xsZWN0aW9uczoKICAgICAgICBteVRoaXJkQ29sbGVjdGlvbjoKICAgICAgICAgIGluZGV4ZXM6CiAgICAgICAgICAgIC0ga2V5czoKICAgICAgICAgICAgICAgIHRoaXJkX2lkOiAxCmBgYAoKPiBJbiB0aGlzIGV4YW1wbGUsIHR3byBkYXRhYmFzZXMgKGBteURiYCBhbmQgYG15T3RoZXJEYmApIGFyZSBjb25maWd1cmVkLCB0aGUKPiBmb3JtZXIgd2l0aCB0d28gYW5kIHRoZSBsYXR0ZXIgd2l0aCBvbmUgY29sbGVjdGlvbiAoYG15Q29sbGVjdGlvbmAsCj4gYG15U2Vjb25kQ29sbGVjdGlvbmAgYW5kIGBteVRoaXJkQ29sbGVjdGlvbmAsIHJlc3BlY3RpdmVseSkuIEZPQ0Egd2lsbAo+IGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXIgYW5kIGluaXRpYWxpemUgdGhlc2UgZGF0YWJhc2VzIGFuZCBjb2xsZWN0aW9ucyBmb3IgeW91Cj4gYW5kIGFkZCBjb252ZW5pZW50IGNsaWVudHMgdG8gdGhlIGFwcCBpbnN0YW5jZSAoYWNjZXNzaWJsZSBhcyBjaGlsZHJlbiBvZgo+IGBjdXJyZW50X2FwcC5jb25maWcuZm9jYWAgaW4gYW4gW2FwcGxpY2F0aW9uCj4gY29udGV4dF1bcmVzLWZsYXNrLWFwcC1jb250ZXh0XSkuIFRoZSBjb2xsZWN0aW9ucyB3b3VsZCBiZSBpbmRleGVkIGJ5IGtleXMKPiBgaWRgLCBgb3RoZXJfaWRgIGFuZCBgdGhpcmRfaWRgLCByZXNwZWN0aXZlbHkuIE91dCBvZiB0aGVzZSwgb25seSBgaWRgCj4gd2lsbCBiZSByZXF1aXJlZCB0byBiZSB1bmlxdWUuICAKPiAgCj4gQ2YuIHRoZSBbQVBJIG1vZGVsXVtkb2NzLW1vZGVscy1kYl0gZm9yIGZ1cnRoZXIgb3B0aW9ucyBhbmQgZGV0YWlscy4KCiMjIyBDb25maWd1cmluZyBleGNlcHRpb25zCgpGT0NBIHByb3ZpZGVzIGEgY29udmVuaWVudCwgY29uZmlndXJhYmxlIGV4Y2VwdGlvbiBoYW5kbGVyIGFuZCBhIHNpbXBsZSB3YXkKb2YgYWRkaW5nIG5ldyBleGNlcHRpb25zIHRvIGJlIHVzZWQgd2l0aCB0aGF0IGhhbmRsZXIuIFRvIHVzZSBpdCwgc3BlY2lmeSBhCnRvcC1sZXZlbCBgZXhjZXB0aW9uc2Agc2VjdGlvbiBpbiB0aGUgYXBwIGNvbmZpZ3VyYXRpb24gZmlsZS4KCl9FeGFtcGxlOl8KCmBgYHlhbWwKZXhjZXB0aW9uczoKICByZXF1aXJlZF9tZW1iZXJzOiBbWydtc2cnXSwgWydzdGF0dXMnXV0KICBzdGF0dXNfbWVtYmVyOiBbJ3N0YXR1cyddCiAgZXhjZXB0aW9uczogbXlfYXBwLmV4Y2VwdGlvbnMuZXhjZXB0aW9ucwogIGxvZ2dpbmc6IG9uZV9saW5lCmBgYAoKPiBUaGlzIGV4YW1wbGUgY29uZmlndXJhdGlvbiB3b3VsZCBhdHRhY2ggdGhlIGV4Y2VwdGlvbnMgZGVmaW5lZCBpbiB0aGUKPiBgbXlfYXBwLmV4Y2VwdGlvbnMuZXhjZXB0aW9uc2AgZGljdGlvbmFyeSB0byB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuIFRoZQo+IGV4Y2VwdGlvbiBoYW5kbGVyIGVuc3VyZXMgdGhhdCBldmVyeSBleGNlcHRpb24gaW4gdGhhdCBkaWN0aW9uYXJ5IGRlZmluZXMKPiBhdCBsZWFzdCBtZW1iZXJzIGBtc2dgIGFuZCBgc3RhdHVzYC4gT3V0IG9mIHRoZXNlLCBgc3RhdHVzYCB3aWxsIGJlIHVzZWQKPiB0byBpbmZvcm0gdGhlIHN0YXR1cyBjb2RlIGZvciB0aGUgZXJyb3IgcmVzcG9uc2UuIEV4Y2VwdGlvbnMgcHJvY2Vzc2VkIHZpYQo+IEZPQ0EncyBleGNlcHRpb24gaGFuZGxlciB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgbG9nZ2VkLCBpZiByZXF1ZXN0ZWQuIEluIHRoaXMKPiBjYXNlLCB0aGUgaGFuZGxlciBpcyBjb25maWd1cmVkIHRvIGxvZyBhbGwgZXJyb3JzIHZlcmJvc2VseSAoaW5jbHVkaW5nIGFueQo+IHRyYWNlYmFjayBpbmZvcm1hdGlvbiwgaWYgYXBwbGljYWJsZSkgb24gYSBzaW5nbGUgbGluZSAob3RoZXIgcmVuZGVyaW5nCj4gb3B0aW9ucyBhcmUgYWxzbyBzdXBwb3J0ZWQpLgo+ICAKPiBZb3UgbWF5IGZ1cnRoZXIgY29uZmlndXJlIG9wdGlvbmFsIG1lbWJlcnMsIGEgbGlzdCBvZiBgcHVibGljIG1lbWJlcnNgICh0byBiZQo+IGluY2x1ZGVkIGluIGVycm9yIHJlc3BvbnNlcykgYW5kIGBwcml2YXRlIG1lbWJlcnNgIChvbmx5IHZpc2libGUgaW4gbG9ncykuCj4gQ2YuIHRoZSBbQVBJIG1vZGVsXVtkb2NzLW1vZGVscy1leGNlcHRpb25zXSBmb3IgZnVydGhlciBvcHRpb25zIGFuZCBkZXRhaWxzLgoKIyMjIENvbmZpZ3VyaW5nIGFzeW5jaHJvbm91cyB0YXNrcwoKRk9DQSBvZmZlcnMgbGltaXRlZCBzdXBwb3J0IGZvciBydW5uaW5nIGFzeW5jaHJvbm91cyB0YXNrcyB2aWEgdGhlCltSYWJiaXRNUV1bcmVzLXJhYmJpdG1xXSBicm9rZXIgYW5kIFtDZWxlcnldW3Jlcy1jZWxlcnldLiBUbyBtYWtlIHVzZSBvZiBpdCwKaW5jbHVkZSB0aGUgYGpvYnNgIHRvcC1sZXZlbCBzZWN0aW9uIGluIHRoZSBhcHAgY29uZmlndXJhdGlvbiBmaWxlLgoKX0V4YW1wbGU6XwoKYGBgeWFtbApqb2JzOgogIGhvc3Q6IHJhYmJpdG1xCiAgcG9ydDogNTY3MgogIGJhY2tlbmQ6ICdycGM6Ly8nCiAgaW5jbHVkZToKICAgIC0gbXlfYXBwLnRhc2tzLm15X3Rhc2tfMQogICAgLSBteV9hcHAudGFza3MubXlfdGFza18yCmBgYAoKPiBUaGlzIGNvbmZpZyBhdHRhY2hlcyB0aGUgYHJhYmJpdG1xYCBicm9rZXIgaG9zdCBydW5uaW5nIG9uIHBvcnQgYDU2NzJgIHRvCj4gRk9DQSBhbmQgcmVnaXN0ZXJzIHRoZSB0YXNrcyBmb3VuZCBpbiBtb2R1bGVzIGBteV90YXNrXzFgIGFuZCBgbXlfdGFza18yYC4gIAo+ICAKPiBDZi4gdGhlIFtBUEkgbW9kZWxdW2RvY3MtbW9kZWxzLWpvYnNdIGZvciBmdXJ0aGVyIGRldGFpbHMuICAKClRoZSBgZm9jYS5Gb2NhYCBjbGFzcyBwcm92aWRlcyBhIG1ldGhvZCBgLmNyZWF0ZV9jZWxlcnlfYXBwKClgIHRoYXQgeW91IGNhbgp1c2UgaW4geW91ciBDZWxlcnkgd29ya2VyIGVudHJ5IHBvaW50IHRvIGNyYXRlIGEgQ2VsZXJ5IGFwcCwgbGlrZSBzbzoKCmBgYHB5CmZyb20gZm9jYSBpbXBvcnQgRm9jYQoKZm9jYSA9IEZvY2EoY29uZmlnPSJteV9hcHAvY29uZmlnLnlhbWwiKQpteV9jZWxlcnlfYXBwID0gZm9jYS5jcmVhdGVfY2VsZXJ5X2FwcCgpCmBgYAoKIyMjIENvbmZpZ3VyaW5nIGxvZ2dpbmcKCkZPQ0EgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGEgWUFNTC1iYXNlZCBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gdG8gY29udHJvbCB5b3VyCmFwcGxpY2F0aW9uJ3MgbG9nZ2luZyBiZWhhdmlvciBpbiBhbiBlZmZvcnQgdG8gcHJvdmlkZSBhIHNpbmdsZSBjb25maWd1cmF0aW9uCmZpbGUgZm9yIGV2ZXJ5IGFwcGxpY2F0aW9uLiBUbyB1c2UgaXQsIHNpbXBseSBhZGQgYSBgbG9nYCB0b3AtbGV2ZWwgc2VjdGlvbiBpbgp5b3VyIGFwcCBjb25maWd1cmF0aW9uIGZpbGUuCgpfRXhhbXBsZTpfCgpgYGB5YW1sCmxvZzoKICB2ZXJzaW9uOiAxCiAgZGlzYWJsZV9leGlzdGluZ19sb2dnZXJzOiBGYWxzZQogIGZvcm1hdHRlcnM6CiAgICBzdGFuZGFyZDoKICAgICAgY2xhc3M6IGxvZ2dpbmcuRm9ybWF0dGVyCiAgICAgIHN0eWxlOiAieyIKICAgICAgZm9ybWF0OiAiW3thc2N0aW1lfToge2xldmVsbmFtZTo8OH1dIHttZXNzYWdlfSBbe25hbWV9XSIKICBoYW5kbGVyczoKICAgIGNvbnNvbGU6CiAgICAgIGNsYXNzOiBsb2dnaW5nLlN0cmVhbUhhbmRsZXIKICAgICAgbGV2ZWw6IDIwCiAgICAgIGZvcm1hdHRlcjogc3RhbmRhcmQKICAgICAgc3RyZWFtOiBleHQ6Ly9zeXMuc3RkZXJyCiAgcm9vdDoKICAgIGxldmVsOiAxMAogICAgaGFuZGxlcnM6IFtjb25zb2xlXQpgYGAKCj4gVGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBpcyBzaW1wbHkgcGFzc2VkIG9uIHRvIFB5dGhvbidzIGBsb2dnaW5nJyBwYWNrYWdlLAo+IGFuZCBzbyBpdCBoYXMgdG8gY29uZm9ybSB3aXRoIHRoYXQgW3BhY2thZ2Uncwo+IHJlcXVpcmVtZW50c11bcmVzLXB5dGhvbi1sb2dnaW5nXS4gU2VlIFtoZXJlXVtyZXMtcHl0aG9uLWxvZ2dpbmctaG93LXRvXSBmb3IKPiBtb3JlIGluZm8uCgojIyMgQ29uZmlndXJpbmcgc2VjdXJpdHkKCkZPQ0Egb2ZmZXJzIHNvbWUgY29udmVuaWVuY2UgZnVuY3Rpb25hbGl0aWVzIGZvciBzZWN1cmluZyB5b3VyIGFwcC4KU3BlY2lmaWNhbGx5LCBpdCBhbGxvd3MgeW91IHRvIGNvbmZpZ3VyZSB0aGUgdmFsaWRhdGlvbiBvZiBbSlNPTiBXZWIKVG9rZW4gKEpXVCldW3Jlcy1qd3RdLWJhc2VkIGF1dGhvcml6YXRpb24sIGEgW0Nhc2Jpbl1bcmVzLWNhc2Jpbl0tYmFzZWQgYWNjZXNzCmNvbnRyb2wgbW9kZWwsIGFuZCB0aGUgdXNlIG9mIFtjcm9zcy1vcmlnaW4gcmVzb3VyY2Ugc2hhcmluZyAoQ09SUyldW3Jlcy1jb3JzXS4KVG8gbWFrZSB1c2Ugb2YgdGhlbSwgaW5jbHVkZSB0aGUgYHNlY3VyaXR5YCB0b3AtbGV2ZWwgc2VjdGlvbiBpbiB5b3VyIGFwcApjb25maWd1cmF0aW9uLCBhcyB3ZWxsIGFzIHRoZSBkZXNpcmVkIHN1YmxldmVsIHNlY3Rpb24ocyk6CgpgYGB5YW1sCnNlY3VyaXR5OgogIGF1dGg6CiAgICBhbGdvcml0aG1zOgogICAgICAtIFJTMjU2CiAgICBhbGxvd19leHBpcmVkOiBGYWxzZQogICAgdmFsaWRhdGlvbl9tZXRob2RzOgogICAgICAtIHVzZXJpbmZvCiAgICAgIC0gcHVibGljX2tleQogICAgdmFsaWRhdGlvbl9jaGVja3M6IGFueQogIGFjY2Vzc19jb250cm9sOgogICAgYXBpX3NwZWNzOiAncGF0aC90by95b3VyL2FjY2Vzcy9jb250cm9sL3NwZWNzJwogICAgYXBpX2NvbnRyb2xsZXJzOiAncGF0aC90by95b3VyL2FjY2Vzcy9jb250cm9sL3NwZWMvY29udHJvbGxlcnMnCiAgICBhcGlfcm91dGU6ICcvcm91dGUvdG8vYWNjZXNzX2NvbnRyb2xfYXBpJwogICAgZGJfbmFtZTogYWNjZXNzX2NvbnRyb2xfZGJfbmFtZQogICAgY29sbGVjdGlvbl9uYW1lOiBhY2Nlc3NfY29udHJvbF9jb2xsZWN0aW9uX25hbWUKICAgIG1vZGVsOiBhY2Nlc3NfY29udHJvbF9tb2RlbF9kZWZpbml0aW9uCiAgY29yczoKICAgIGVuYWJsZWQ6IFRydWUKYGBgCgo+IEluIHRoaXMgZXhhbXBsZSwgdGhlIHZhbGlkYXRpb24gb2YgSldUIEJlYXJlciB0b2tlbnMgd291bGQgbWFrZSB1c2Ugb2YgdGhlCj4gYFJTMjU2YCBhbGdvcml0aG0sIHdvdWxkIG5vdCBhbGxvdyBleHBpcmVkIHRva2VucyBhbmQgd291bGQgZ3JhbnQgYWNjZXNzIHRvCj4gYSBwcm90ZWN0ZWQgZW5kcG9pbnQgaWYgYGFueWAgb2YgdGhlIHR3byBsaXN0ZWQgdmFsaWRhdGlvbiBtZXRob2RzICh2aWEgdGhlCj4gaWRlbnRpdHkgcHJvdmlkZXIncyBgL3VzZXJpbmZvYCBlbmRwb2ludCBvciBpdHMgSlNPTiBXZWIgS2V5IChKV0spIHB1YmxpYwo+IGtleS4gRnVydGhlcm1vcmUsIHRoZSBhcHBsaWNhdGlvbiBjcmVhdGVkIHdpdGggdGhpcyBjb25maWcgd291bGQgcHJvdmlkZQo+IGFuIGFjY2VzcyBjb250cm9sIG1vZGVsIGBtb2RlbGAuIENvcnJlc3BvbmRpbmcgcGVybWlzc2lvbnMgY291bGQgYmUgYWNjZXNzZWQKPiBhbmQgYWx0ZXJlZCBieSBhIHVzZXIgd2l0aCBhZG1pbiBwZXJtaXNzaW9ucyB2aWEgdGhlIGRlZGljYXRlZCBlbmRwb2ludHMKPiBkZWZpbmVkIGluIHRoZSBgYXBpX3NwZWNzYCwgb3BlcmF0aW9uYWxpemVkIGJ5IHRoZSBjb250cm9sbGVycyBpbgo+IGBhcGlfY29udHJvbGxlcnNgIGFuZCBob3N0ZWQgYXQgYGFwaV9yb3V0ZWAuIFBlcm1pc3Npb25zIHdpbGwgYmUgc3RvcmVkIGluCj4gY29sbGVjdGlvbiBgY29sbGVjdGlvbl9uYW1lYCBvZiBhIGRlZGljYXRlZCBNb25nb0RCIGRhdGFiYXNlIGBkYl9uYW1lYC4KPiBGaW5hbGx5LCBDT1JTIHdvdWxkIGJlIGVuYWJsZWQgZm9yIHRoaXMgYXBwbGljYXRpb24uCj4gIAo+IENmLiB0aGUgW0FQSSBtb2RlbF1bZG9jcy1tb2RlbHMtc2VjdXJpdHldIGZvciBmdXJ0aGVyIG9wdGlvbnMgYW5kIGRldGFpbHMuCgoqKk5vdGU6KiogQSBkZXRhaWxlZCBleHBsYWluYXRpb24gb2YgdGhlIGFjY2VzcyBjb250cm9sIGltcGxlbWVudGF0aW9uIGNhbiBiZQpmb3VuZCBbaGVyZV1bZG9jcy1hY2Nlc3MtY29udHJvbF0uCgojIyMgQ29uZmlndXJpbmcgdGhlIHNlcnZlcgoKRk9DQSBhbGxvd3MgeW91IHRvIHBhc3MgY2VydGFpbiBiYXNpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8geW91ciBGbGFzawphcHBsaWNhdGlvbi4gVG8gbW9kaWZ5IGRlZmF1bHRzLCBpbmNsdWRlIHRoZSB0b3AtbGV2ZWwgYHNlcnZlcmAga2V5d29yZCBzZWN0aW9uCmluIHlvdXIgYXBwIGNvbmZpZ3VyYXRpb24gZmlsZToKCmBgYHlhbWwKc2VydmVyOgogIGhvc3Q6ICcwLjAuMC4wJwogIHBvcnQ6IDgwODAKICBkZWJ1ZzogVHJ1ZQogIGVudmlyb25tZW50OiBkZXZlbG9wbWVudAogIHVzZV9yZWxvYWRlcjogRmFsc2UKYGBgCgo+IFRoaXMgY29uZmlnIHdvdWxkIGNyZWF0ZSBhbiBhcHBsaWNhdGlvbiBzZXJ2ZXIgaG9zdGluZyBhIEZsYXNrIGBkZXZlbG9wbWVudGAKPiBlbnZpcm9ubWVudCBhdCBgMC4wLjAuMDo4MDgwYCwgRmxhc2sncyBkZWJ1Z2dlciBzd2l0Y2hlZCBvbiwgYW5kIGl0cyByZWxvYWRlcgo+IG9mZi4KPiAgCj4gQ2YuIHRoZSBbQVBJIG1vZGVsXVtkb2NzLW1vZGVscy1zZXJ2ZXJdIGZvciBmdXJ0aGVyIG9wdGlvbnMgYW5kIGRldGFpbHMuCgojIyMgQ3VzdG9tIGNvbmZpZ3VyYXRpb24KCklmIHlvdSB3b3VsZCBsaWtlIEZPQ0EgdG8gdmFsaWRhdGUgeW91ciBjdXN0b20gYXBwIGNvbmZpZ3VyYXRpb24gKGUuZy4sCnBhcmFtZXRlcnMgcmVxdWlyZWQgZm9yIGluZGl2aWR1YWwgY29udHJvbGxlcnMsIHlvdSBjYW4gcHJvdmlkZSBhIHBhdGgsIGluCmRvdCBub3RhdGlvbiwgdG8gYSBbYHB5ZGFudGljYF1bcmVzLXB5ZGFudGljXSBgQmFzZU1vZGVsYC1kZXJpdmVkIG1vZGVsLiBGT0NBCnRoZW4gdHJpZXMgdG8gaW5zdGFudGlhdGUgdGhlIG1vZGVsIGNsYXNzIHdpdGggYW55IGN1c3RvbSBwYXJhbWV0ZXJzIGxpc3RlZAp1bmRlciBrZXl3b3JkIHNlY3Rpb24gYGN1c3RvbWAuCgpTdXBwb3NlIHlvdSBoYXZlIGEgbW9kZWwgbGlrZSB0aGUgZm9sbG93aW5nIGRlZmluZWQgaW4gbW9kdWxlCmBteV9hcHAuY3VzdG9tX2NvbmZpZ2A6CgpgYGBweQpmcm9tIHB5ZGFudGljIGltcG9ydCBCYXNlTW9kZWwKCgpjbGFzcyBDdXN0b21Db25maWcoQmFzZU1vZGVsKToKICAgIG15X3BhcmFtOiBpbnQgPSA1CmBgYAoKQW5kIHlvdSBoYXZlLCBpbiB5b3VyIGFwcCBjb25maWd1cmF0aW9uIGZpbGUgYG15X2FwcC9jb25maWcueWFtbGAsIHRoZQpmb2xsb3dpbmcgc2VjdGlvbjoKCmBgYGNvbnNvbGUKY3VzdG9tOgogIG15X3BhcmFtOiAxMApgYGAKCllvdSBjYW4gdGhlbiBoYXZlIEZPQ0EgdmFsaWRhdGUgeW91ciBjdXN0b20gY29uZmlndXJhdGlvbiBhZ2FpbnN0IHRoZQpgQ3VzdG9tQ29uZmlnYCBjbGFzcyBieSBpbmNsdWRpbmcgaXQgaW4gdGhlIGBGb2NhKClgIGNhbGwgbGlrZSBzbzoKCmBgYHB5CmZyb20gZm9jYSBpbXBvcnQgRm9jYQoKZm9jYSA9IEZvY2EoCiAgY29uZmlnPSJteV9hcHAvY29uZmlnLnlhbWwiLAogIGN1c3RvbV9jb25maWdfbW9kZWw9Im15X2FwcC5jdXN0b21fY29uZmlnLkN1c3RvbUNvbmZpZyIsCikKbXlfYXBwID0gZm9jYS5jcmVhdGVfYXBwKCkKYGBgCgpXZSByZWNvbW1lbmQgdGhhdCwgd2hlbiBkZWZpbmluZyB5b3VyIGBweWRhbnRpY2AgbW9kZWwsIHRoYXQgeW91IHN1cHBseQpkZWZhdWx0IHZhbHVlcyB3aGVyZXZlciBwb3NzaWJsZS4gSW4gdGhpcyB3YXksIHRoZSBjdXN0b20gY29uZmlndXJhdGlvbgpwYXJhbWV0ZXJzIHdpbGwgYWx3YXlzIGJlIGF2YWlsYWJsZSwgZXZlbiBpZiBub3QgZXhwbGljaXRseSBsaXN0ZWQgaW4gdGhlIGFwcApjb25maWd1cmF0aW9uIChsaWtlIHdpdGggdGhlIEZPQ0Etc3BlY2lmaWMgcGFyYW1ldGVycykuCgo+IE5vdGUgdGhhdCB0aGVyZSBpcyB0b29saW5nIGF2YWlsYWJsZSB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGBweWRhbnRpY2AKPiBtb2RlbHMgZnJvbSBkaWZmZXJlbnQgZmlsZSBmb3JtYXRzIGxpa2UgSlNPTiBTY2hlbWEgZXRjLiBTZWUgaGVyZSBmb3IgdGhlCj4gW2RhdGFtb2RlbC1jb2RlLWdlbmVyYXRvcl1bcmVzLWRhdGFtb2RlbC1jb2RlLWdlbmVyYXRvcl0gcHJvamVjdC4KCkFwYXJ0IGZyb20gdGhlIHJlc2VydmVkIGtleXdvcmQgc2VjdGlvbnMgbGlzdGVkIGFib3ZlLCB5b3UgYXJlIGZyZWUgdG8gaW5jbHVkZQphbnkgb3RoZXIgc2VjdGlvbnMgYW5kIHBhcmFtZXRlcnMgaW4geW91ciBhcHAgY29uZmlndXJhdGlvbiBmaWxlLiBGT0NBIHdpbGwKc2ltcGx5IGF0dGFjaCB0aGVzZSB0byB5b3VyIGFwcGxpY2F0aW9uIGluc3RhbmNlIGFzIGRlc2NyaWJlZApbYWJvdmVdKCNjb25maWd1cmF0aW9uKSBhbmQgc2hvd24gW2JlbG93XSgjYWNjZXNzaW5nLWNvbmZpZ3VyYXRpb24tcGFyYW1ldGVycykuCk5vdGUsIGhvd2V2ZXIsIHRoYXQgYW55IHN1Y2ggcGFyYW1ldGVycyBuZWVkIHRvIGJlIF9tYW51YWxseV8gdmFsaWRhdGVkLiBUaGUKc2FtZSBpcyB0cnVlIGlmIHlvdSBpbmNsdWRlIGEgYGN1c3RvbWAgc2VjdGlvbiBidXQgZG8gX25vdF8gcHJvdmlkZSBhCnZhbGlkYXRpb24gbW9kZWwgY2xhc3MgdmlhIHRoZSBgY3VzdG9tX2NvbmZpZ19tb2RlbGAgcGFyYW1ldGVyIHdoZW4KaW5zdGFudGlhdGluZyBgRm9jYWAuCgpfRXhhbXBsZTpfCgpgYGB5YW1sCm15X2N1c3RvbV9wYXJhbTogJ3NvbWVfdmFsdWUnCgpteV9jdXN0b21fcGFyYW1fc2VjdGlvbjoKICBhbm90aGVyX2N1c3RvbV9wYXJhbTogMwogIG15X2N1c3RvbV9saXN0X3BhcmFtOgogICAgLSAxCiAgICAtIDIKICAgIC0gMwpgYGAKCiMjIyBBY2Nlc3NpbmcgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzCgpPbmNlIHRoZSBhcHBsaWNhdGlvbiBpcyBjcmVhdGVkIHVzaW5nIGBmb2NhKClgLCBvbmUgY2FuIGVhc2lseSBhY2Nlc3MgYW55CmNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmcm9tIHdpdGhpbiB0aGUgW2FwcGxpY2F0aW9uCmNvbnRleHRdW3Jlcy1mbGFzay1hcHAtY29udGV4dF0gdGhyb3VnaCBgY3VycmVudF9hcHAuY29uZmlnLmZvY2EgbGlrZSBzbzoKCmBgYHB5dGhvbgpmcm9tIGZsYXNrIGltcG9ydCBjdXJyZW50X2FwcAoKYXBwX2NvbmZpZyA9IGN1cnJlbnRfYXBwLmNvbmZpZy5mb2NhCgpkYiA9IGFwcF9jb25maWcuZGIKYXBpID0gYXBwX2NvbmZpZy5hcGkKc2VydmVyID0gYXBwX2NvbmZpZy5zZXJ2ZXIKZXhjZXB0aW9ucyA9IGFwcF9jb25maWcuZXhjZXB0aW9ucwpzZWN1cml0eSA9IGFwcF9jb25maWcuc2VjdXJpdHkKam9icyA9IGFwcF9jb25maWcuam9icwpsb2cgPSBhcHBfY29uZmlnLmxvZwphcHBfc3BlY2lmaWNfcGFyYW0gPSBjdXJyZW50X2FwcC5jb25maWdbJ2FwcF9zcGVjaWZpY19wYXJhbSddCmBgYAoKX091dHNpZGUgb2YgdGhlIGFwcGxpY2F0aW9uIGNvbnRleHRfLCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYXJlIGF2YWlsYWJsZQp2aWEgYGFwcC5jb25maWcuZm9jYWAgaW4gYSBzaW1pbGFyIHdheS4KCiMjIyBNb3JlIGV4YW1wbGVzCgpBcGFydCBmcm9tIHRoZSBbYW5ub3RhdGVkIHRlbXBsYXRlXVtjb25maWctdGVtcGxhdGVdLCB5b3UgY2FuIGFsc28gY2hlY2sKb3V0IHRoZSBbY29uZmlndXJhdGlvbiBmaWxlXVtjb25maWctcGV0c3RvcmVdIG9mIHRoZSBbUGV0c3RvcmUgYXBwXVtleGFtcGxlXQpmb3IgYW5vdGhlciBleGFtcGxlLgoKIVtIaW50XVtpbWctaGludF0gXyoqT3Igd2h5IG5vdCBleHBsb3JlIFthcHBzIHRoYXQgYWxyZWFkeSB1c2UKRk9DQV1bcmVzLXVzaW5nLWZvY2FdPyoqXwoKIyMgVXRpbGl0aWVzCgpGT0NBIHByb3ZpZGVzIHNvbWUgZnVuY3Rpb25zIHRoYXQgbWF5IGJlIHVzZWZ1bCBmb3Igc2V2ZXJhbCBhcHBsaWNhdGlvbnMuClNpbXBseSBpbXBvcnQgdGhlbSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlbS4KCiMjIyBEYXRhYmFzZSB1dGlsaXRpZXMKCkZPQ0EgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBnZW5lcmFsLXB1cnBvc2UgTW9uZ29EQiBjb250cm9sbGVyczoKCiogRmV0Y2ggbGF0ZXN0IG9iamVjdCBnaXZlbiB0aGUgZGIgYGNvbGxlY3Rpb25gOgoKYGBgcHl0aG9uCmZyb20gZm9jYS51dGlscy5kYiBpbXBvcnQgZmluZF9vbmVfbGF0ZXN0CgpsYXRlc3Rfb2JqZWN0ID0gZmluZF9vbmVfbGF0ZXN0KCJ5b3VyX2RiX2NvbGxlY3Rpb25faW5zdGFuY2UiKQpgYGAKCiogRmV0Y2ggbGF0ZXN0IG9iamVjdCBpZGVudGlmaWVyIChgaWRgKSBnaXZlbiB0aGUgZGIgYGNvbGxlY3Rpb25gOgoKYGBgcHl0aG9uCmZyb20gZm9jYS51dGlscy5kYiBpbXBvcnQgZmluZF9pZF9sYXRlc3QKCmxhdGVzdF9vYmplY3RfaWQgPSBmaW5kX2lkX2xhdGVzdCgieW91cl9kYl9jb2xsZWN0aW9uX2luc3RhbmNlIikKYGBgCgojIyMgTG9nZ2luZyB1dGlsaXRpZXMKCkZPQ0EgcHJvdmlkZXMgYSBkZWNvcmF0b3IgdGhhdCBjYW4gYmUgdXNlZCBvbiBhbnkgcm91dGUgdG8gYXV0b21hdGljYWxseSBsb2cKYW55IHJlcXVlc3RzIGFuZC9vciByZXNwb25zZXMgcGFzc2luZyB0aHJvdWdoIHRoYXQgcm91dGU6CgpgYGBweXRob24KZnJvbSBmb2NhLnV0aWxzLmxvZ2dpbmcgaW1wb3J0IGxvZ190cmFmZmljCgpAbG9nX3RyYWZmaWMobG9nX3JlcXVlc3Q9VHJ1ZSwgbG9nX3Jlc3BvbnNlPVRydWUsIGxvZ19sZXZlbD0yMCkKZGVmIHlvdXJfY29udHJvbGxlcigpOgogICAgcGFzcwpgYGAKCj4gVGhlIGFib3ZlIGRlY29yYXRlciB3aWxsIGxvZyBib3RoIHJlcXVlc3RzIGFuZCByZXNwb25zZXMgd2l0aCB0aGUgc3BlY2lmaWVkCj4gbG9nZ2luZyBsZXZlbCAoYDIwYCwgb3IgYElORk9gKS4KCiMjIyBNaXNjZWxsYW5lb3VzIHV0aWxpdGllcwoKKiBHZW5lcmF0ZSBhIHJhbmRvbSBvYmplY3QgZnJvbSBhIGdpdmVuIGNoYXJhY3RlciBzZXQ6CgpgYGBweXRob24KaW1wb3J0IHN0cmluZwoKZnJvbSBmb2NhLnV0aWxzLm1pc2MgaW1wb3J0IGdlbmVyYXRlX2lkCgpvYmpfaWQgPSBnZW5lcmF0ZV9pZChjaGFyc2V0PXN0cmluZy5kaWdpdHMsIGxlbmd0aD02KQpgYGAKCj4gVGhlIGFib3ZlIGZ1bmN0aW9uIHByb2Nlc3NlcyBhbmQgcmV0dXJucyBhIHJhbmRvbSBgb2JqX2lkYCBvZiBsZW5ndGggYDZgCj4gY29uc2lzdGluZyBvZiBvbmx5IGRpZ2l0cyAoYHN0cmluZy5kaWdpdHNgKS4KCiMjIyBBY2Nlc3MgQ29udHJvbCB1dGlsaXRpZXMKCkZPQ0EgcHJvdmlkZXMgYSBkZWNvcmF0b3IgdGhhdCBjYW4gYmUgdXNlZCBvbiBhbnkgcm91dGUgdG8gYXV0b21hdGljYWxseQp2YWxpZGF0ZSByZXF1ZXN0IG9uIHRoZSBiYXNpcyBvZiBwZXJtaXNzaW9uIHJ1bGVzLgoKYGBgcHl0aG9uCmZyb20gZm9jYS5zZWN1cml0eS5hY2Nlc3NfY29udHJvbC5yZWdpc3Rlcl9hY2Nlc3NfY29udHJvbCBpbXBvcnQgKAogICAgY2hlY2tfcGVybWlzc2lvbnMKKQoKQGNoZWNrX3Blcm1pc3Npb25zCmRlZiB5b3VyX2NvbnRyb2xsZXIoKToKICAgIHBhc3MKYGBgCgojIyBDb250cmlidXRpbmcKClRoaXMgcHJvamVjdCBpcyBhIGNvbW11bml0eSBlZmZvcnQgYW5kIGxpdmVzIG9mZiB5b3VyIGNvbnRyaWJ1dGlvbnMsIGJlIGl0IGluCnRoZSBmb3JtIG9mIGJ1ZyByZXBvcnRzLCBmZWF0dXJlIHJlcXVlc3RzLCBkaXNjdXNzaW9ucywgb3IgZml4ZXMgYW5kIG90aGVyIGNvZGUKY2hhbmdlcy4gUGxlYXNlIHJlZmVyIHRvIG91ciBvcmdhbml6YXRpb24ncyBbY29udHJpYnV0aW5nCmd1aWRlbGluZXNdW3Jlcy1lbGl4aXItY2xvdWQtY29udHJpYnV0aW5nXSBpZiB5b3UgYXJlIGludGVyZXN0ZWQgdG8gY29udHJpYnV0ZS4KUGxlYXNlIG1pbmQgdGhlIFtjb2RlIG9mIGNvbmR1Y3RdW3Jlcy1lbGl4aXItY2xvdWQtY29jXSBmb3IgYWxsIGludGVyYWN0aW9ucwp3aXRoIHRoZSBjb21tdW5pdHkuCgojIyBWZXJzaW9uaW5nCgpUaGUgcHJvamVjdCBhZG9wdHMgW3NlbWFudGljIHZlcnNpb25pbmddW3Jlcy1zZW12ZXJdLiBDdXJyZW50bHkgdGhlIHNlcnZpY2UKaXMgaW4gYmV0YSBzdGFnZSwgc28gdGhlIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgZnVydGhlciBub3RpY2UuCgojIyBMaWNlbnNlCgpUaGlzIHByb2plY3QgaXMgY292ZXJlZCBieSB0aGUgW0FwYWNoZSBMaWNlbnNlIDIuMF1bbGljZW5zZS1hcGFjaGVdIGFsc28KW3NoaXBwZWQgd2l0aCB0aGlzIHJlcG9zaXRvcnldW2xpY2Vuc2VdLgoKIyMgQ29udGFjdAoKVGhlIHByb2plY3QgaXMgYSBjb2xsYWJvcmF0aXZlIGVmZm9ydCB1bmRlciB0aGUgdW1icmVsbGEgb2YgW0VMSVhJUiBDbG91ZCAmCkFBSV1bb3JnLWVsaXhpci1jbG91ZF0uIEZvbGxvdyB0aGUgbGluayB0byBnZXQgaW4gdG91Y2ggd2l0aCB1cyB2aWEgY2hhdCBvcgplbWFpbC4gUGxlYXNlIG1lbnRpb24gdGhlIG5hbWUgb2YgdGhpcyBzZXJ2aWNlIGZvciBhbnkgaW5xdWlyeSwgcHJvcG9zYWwsCnF1ZXN0aW9uIGV0Yy4KCiFbTG9nb19iYW5uZXJdW2ltZy1sb2dvLWJhbm5lcl0KCltiYWRnZS1idWlsZC1zdGF0dXNdOiA8aHR0cHM6Ly9naXRodWIuY29tL2VsaXhpci1jbG91ZC1hYWkvZm9jYS9hY3Rpb25zL3dvcmtmbG93cy9jaGVja3MueW1sL2JhZGdlLnN2Zz4KW2JhZGdlLWNvdmVyYWdlXTogPGh0dHBzOi8vY29kZWNvdi5pby9naC9lbGl4aXItY2xvdWQtYWFpL2ZvY2EvYnJhbmNoL2Rldi9ncmFwaC9iYWRnZS5zdmc/YnJhbmNoPWRldj4KW2JhZGdlLWRvY3NdOiA8aHR0cHM6Ly9yZWFkdGhlZG9jcy5vcmcvcHJvamVjdHMvZm9jYS9iYWRnZS8+CltiYWRnZS1naXRodWItdGFnXTogPGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3YvdGFnL2VsaXhpci1jbG91ZC1hYWkvZm9jYT9jb2xvcj1DMzlCRDM+CltiYWRnZS1saWNlbnNlXTogPGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1BcGFjaGUlMjAyLjAtYmx1ZS5zdmc+CltiYWRnZS1weXBpXTogPGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L2ZvY2Euc3ZnP3N0eWxlPWZsYXQmY29sb3I9QzM5QkQzPgpbYmFkZ2UtdXJsLWJ1aWxkLXN0YXR1c106IDxodHRwczovL2dpdGh1Yi5jb20vZWxpeGlyLWNsb3VkLWFhaS9mb2NhL2FjdGlvbnMvd29ya2Zsb3dzL2NoZWNrcy55bWw+CltiYWRnZS11cmwtY292ZXJhZ2VdOiA8aHR0cHM6Ly9jb2RlY292LmlvL2doL2VsaXhpci1jbG91ZC1hYWkvZm9jYT9icmFuY2g9ZGV2PgpbYmFkZ2UtdXJsLWRvY3NdOiA8aHR0cHM6Ly9mb2NhLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8+CltiYWRnZS11cmwtZ2l0aHViLXRhZ106IDxodHRwczovL2dpdGh1Yi5jb20vZWxpeGlyLWNsb3VkLWFhaS9mb2NhL3JlbGVhc2VzPgpbYmFkZ2UtdXJsLWxpY2Vuc2VdOiA8aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPgpbYmFkZ2UtdXJsLXB5cGldOiA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9mb2NhPgpbY29uZmlnLXRlbXBsYXRlXTogdGVtcGxhdGVzL2NvbmZpZy55YW1sCltjb25maWctcGV0c3RvcmVdOiBleGFtcGxlcy9wZXRzdG9yZS9jb25maWcueWFtbApbZG9jcy1hY2Nlc3MtY29udHJvbF06IGRvY3MvYWNjZXNzX2NvbnRyb2wvUkVBRE1FLm1kCltkb2NzLW1vZGVsc106IDxodHRwczovL2ZvY2EucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L21vZHVsZXMvZm9jYS5tb2RlbHMuaHRtbD4KW2RvY3MtbW9kZWxzLWFwaV06IDxodHRwczovL2ZvY2EucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L21vZHVsZXMvZm9jYS5tb2RlbHMuaHRtbCNmb2NhLm1vZGVscy5jb25maWcuQVBJQ29uZmlnPgpbZG9jcy1tb2RlbHMtZGJdOiA8aHR0cHM6Ly9mb2NhLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9tb2R1bGVzL2ZvY2EubW9kZWxzLmh0bWwjZm9jYS5tb2RlbHMuY29uZmlnLkRCQ29uZmlnPgpbZG9jcy1tb2RlbHMtZXhjZXB0aW9uc106IDxodHRwczovL2ZvY2EucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L21vZHVsZXMvZm9jYS5tb2RlbHMuaHRtbCNmb2NhLm1vZGVscy5jb25maWcuRXhjZXB0aW9uQ29uZmlnPgpbZG9jcy1tb2RlbHMtam9ic106IDxodHRwczovL2ZvY2EucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L21vZHVsZXMvZm9jYS5tb2RlbHMuaHRtbCNmb2NhLm1vZGVscy5jb25maWcuSm9ic0NvbmZpZz4KW2RvY3MtbW9kZWxzLWxvZ106IDxodHRwczovL2ZvY2EucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L21vZHVsZXMvZm9jYS5tb2RlbHMuaHRtbCNmb2NhLm1vZGVscy5jb25maWcuTG9nQ29uZmlnPgpbZG9jcy1tb2RlbHMtc2VjdXJpdHldOiA8aHR0cHM6Ly9mb2NhLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9tb2R1bGVzL2ZvY2EubW9kZWxzLmh0bWwjZm9jYS5tb2RlbHMuY29uZmlnLlNlY3VyaXR5Q29uZmlnPgpbZG9jcy1tb2RlbHMtc2VydmVyXTogPGh0dHBzOi8vZm9jYS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvbW9kdWxlcy9mb2NhLm1vZGVscy5odG1sI2ZvY2EubW9kZWxzLmNvbmZpZy5TZXJ2ZXJDb25maWc+CltleGFtcGxlXTogZXhhbXBsZXMvcGV0c3RvcmUvUkVBRE1FLm1kCltmb2NhLWxvZ29dOiBpbWFnZXMvZm9jYV9sb2dvXzE5MnB4LnBuZwpbaW1nLWhpbnRdOiBpbWFnZXMvaGludC5zdmcKW2ltZy1sb2dvLWJhbm5lcl06IGltYWdlcy9sb2dvLWJhbm5lci5zdmcKW2xpY2Vuc2VdOiBMSUNFTlNFCltsaWNlbnNlLWFwYWNoZV06IDxodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPgpbb3JnLWVsaXhpci1jbG91ZF06IDxodHRwczovL2dpdGh1Yi5jb20vZWxpeGlyLWNsb3VkLWFhaS9lbGl4aXItY2xvdWQtYWFpPgpbcmVzLWNhc2Jpbl06IDxodHRwczovL2Nhc2Jpbi5vcmcvPgpbcmVzLWNlbGVyeV06IDxodHRwOi8vZG9jcy5jZWxlcnlwcm9qZWN0Lm9yZy8+CltyZXMtY29ubmV4aW9uXTogPGh0dHBzOi8vZ2l0aHViLmNvbS96YWxhbmRvL2Nvbm5leGlvbj4KW3Jlcy1jb3JzXTogPGh0dHBzOi8vZmxhc2stY29ycy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvPgpbcmVzLWVsaXhpci1jbG91ZC1jb2NdOiA8aHR0cHM6Ly9naXRodWIuY29tL2VsaXhpci1jbG91ZC1hYWkvZWxpeGlyLWNsb3VkLWFhaS9ibG9iL2Rldi9DT0RFX09GX0NPTkRVQ1QubWQ+CltyZXMtZWxpeGlyLWNsb3VkLWNvbnRyaWJ1dGluZ106IDxodHRwczovL2dpdGh1Yi5jb20vZWxpeGlyLWNsb3VkLWFhaS9lbGl4aXItY2xvdWQtYWFpL2Jsb2IvZGV2L0NPTlRSSUJVVElORy5tZD4KW3Jlcy1mbGFza106IDxodHRwOi8vZmxhc2sucG9jb28ub3JnLz4KW3Jlcy1mbGFzay1hcHAtY29udGV4dF06IDxodHRwczovL2ZsYXNrLnBhbGxldHNwcm9qZWN0cy5jb20vZW4vMS4xLngvYXBwY29udGV4dC8+CltyZXMtand0XTogPGh0dHBzOi8vand0LmlvPgpbcmVzLW1vbmdvLWRiXTogPGh0dHBzOi8vd3d3Lm1vbmdvZGIuY29tLz4KW3Jlcy1vcGVuYXBpXTogPGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8+CltyZXMtcHlkYW50aWNdOiA8aHR0cHM6Ly9weWRhbnRpYy1kb2NzLmhlbHBtYW51YWwuaW8vPgpbcmVzLXJhYmJpdG1xXTogPGh0dHBzOi8vd3d3LnJhYmJpdG1xLmNvbS8+CltyZXMtc2VtdmVyXTogPGh0dHBzOi8vc2VtdmVyLm9yZy8+CltyZXMtc3dhZ2dlcl06IDxodHRwczovL3N3YWdnZXIuaW8vdG9vbHMvc3dhZ2dlci11aS8+CltyZXMtdXNpbmctZm9jYV06IDxodHRwczovL2dpdGh1Yi5jb20vZWxpeGlyLWNsb3VkLWFhaS9mb2NhL25ldHdvcmsvZGVwZW5kZW50cz4KW3Jlcy15YW1sXTogPGh0dHBzOi8veWFtbC5vcmcvPgo= readmeEtag: '"49341f02d708e9732db76eb3f2d2ca068f40ca86"' readmeLastModified: Thu, 11 Jul 2024 10:51:55 GMT repositoryId: 238483669 description: >- Opinionated Flask microservice archetype for quick OpenAPI-based microservice development created: '2020-02-05T15:30:51Z' updated: '2026-01-30T05:13:52Z' language: Python archived: false stars: 17 watchers: 26 forks: 13 owner: elixir-cloud-aai logo: https://avatars.githubusercontent.com/u/60704687?v=4 license: Apache-2.0 repoEtag: '"d7bd0983800339e902f97ab2fca717b7eb96ecc1d2fabf49216fa299d95cd5f5"' repoLastModified: Fri, 30 Jan 2026 05:13:52 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/spaceavocado/apidoc v3: true repositoryMetadata: base64Readme: >- IyBBUElEb2MKPiBDdXJyZW50IHZlcnNpb246IGJldGEtMC4zLjMKCjxicj4KPHAgYWxpZ249ImNlbnRlciI+CiAgICA8aW1nIGFsdD0iYXBpZG9jIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9zcGFjZWF2b2NhZG8vYXBpZG9jL3Jhdy9tYXN0ZXIvYXNzZXRzL2FwaWRvYy5wbmciIHdpZHRoPSIyNDAiPgo8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICBHZW5lcmF0ZSBSRVNUZnVsIEFQSSBkb2N1bWVudGF0aW9uIGZyb20gR08gc291cmNlIGZpbGVzIGludG8gdGhlIDxhIGhyZWY9Imh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyI+T3BlbkFQSSB2My4wLjI8L2E+IHNwZWNpZmljYXRpb24gKGZvcm1hbCBTd2FnZ2VyIDIuMCBTcGVjaWZpY2F0aW9uKS4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CjxhIGhyZWY9Imh0dHBzOi8vdHJhdmlzLWNpLm9yZy9zcGFjZWF2b2NhZG8vYXBpZG9jLnN2Zz9icmFuY2g9bWFzdGVyIj48aW1nIGFsdD0iVHJhdmlzIFN0YXR1cyIgc3JjPSJodHRwczovL3RyYXZpcy1jaS5vcmcvc3BhY2Vhdm9jYWRvL2FwaWRvYy5zdmc/YnJhbmNoPW1hc3RlciI+PC9hPiA8YSBocmVmPSJodHRwczovL2NvZGVjb3YuaW8vZ2gvc3BhY2Vhdm9jYWRvL2FwaWRvYyI+CiAgPGltZyBzcmM9Imh0dHBzOi8vY29kZWNvdi5pby9naC9zcGFjZWF2b2NhZG8vYXBpZG9jL2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnIiAvPgo8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL3NwYWNlYXZvY2Fkby9hcGlkb2MiPjxpbWcgYWx0PSJHbyBSZXBvcnQgQ2FyZCIgc3JjPSJodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9zcGFjZWF2b2NhZG8vYXBpZG9jIj48L2E+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmNvZGFjeS5jb20vYXBwL2RhdmlkaG9yYWsvYXBpZG9jP3V0bV9zb3VyY2U9Z2l0aHViLmNvbSZhbXA7dXRtX21lZGl1bT1yZWZlcnJhbCZhbXA7dXRtX2NvbnRlbnQ9c3BhY2Vhdm9jYWRvL2FwaWRvYyZhbXA7dXRtX2NhbXBhaWduPUJhZGdlX0dyYWRlIj48aW1nIHNyYz0iaHR0cHM6Ly9hcGkuY29kYWN5LmNvbS9wcm9qZWN0L2JhZGdlL0dyYWRlL2VkNzAxZDVlNDJmMzQyNmQ4MzJkZTk3MzkwNmJhMTliIi8+PC9hPiA8YSBocmVmPSJodHRwczovL2FwcC5mb3NzYS5pby9wcm9qZWN0cy9naXQlMkJnaXRodWIuY29tJTJGc3BhY2Vhdm9jYWRvJTJGYXBpZG9jP3JlZj1iYWRnZV9zaGllbGQiIGFsdD0iRk9TU0EgU3RhdHVzIj48aW1nIHNyYz0iaHR0cHM6Ly9hcHAuZm9zc2EuaW8vYXBpL3Byb2plY3RzL2dpdCUyQmdpdGh1Yi5jb20lMkZzcGFjZWF2b2NhZG8lMkZhcGlkb2Muc3ZnP3R5cGU9c2hpZWxkIi8+PC9hPiA8YSBocmVmPSJodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL3NwYWNlYXZvY2Fkby9hcGlkb2MiPjxpbWcgYWx0PSJHbyBEb2MiIHNyYz0iaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9zcGFjZWF2b2NhZG8vYXBpZG9jP3N0YXR1cy5zdmciPjwvYT4KPC9wPgoKIyMgVGFibGUgb2YgQ29udGVudHMKLSBbQVBJRG9jXSgjYXBpZG9jKQogIC0gW1RhYmxlIG9mIENvbnRlbnRzXSgjdGFibGUtb2YtY29udGVudHMpCiAgLSBbU3VtbWFyeV0oI3N1bW1hcnkpCiAgLSBbRXhhbXBsZXNdKCNleGFtcGxlcykKICAtIFtHZXR0aW5nIFN0YXJ0ZWRdKCNnZXR0aW5nLXN0YXJ0ZWQpCi0gW0FQSSBBbm5vdGF0aW9uIGluIENvbW1lbnRzXSgjYXBpLWFubm90YXRpb24taW4tY29tbWVudHMpCiAgLSBbTWFpbiBTZWN0aW9uXSgjbWFpbi1zZWN0aW9uKQogICAgLSBbU3VwcG9ydGVkIFRhZ3NdKCNzdXBwb3J0ZWQtdGFncykKICAgIC0gW0V4YW1wbGVdKCNleGFtcGxlKQogIC0gW0FuIEVuZHBvaW50XSgjYW4tZW5kcG9pbnQpCiAgICAtIFtTdXBwb3J0ZWQgVGFnc10oI3N1cHBvcnRlZC10YWdzLTEpCiAgICAtIFtQYXJhbSBUYWddKCNwYXJhbS10YWcpCiAgICAgIC0gW25hbWVdKCNuYW1lKQogICAgICAtIFtpbl0oI2luKQogICAgICAtIFt0eXBlXSgjdHlwZSkKICAgIC0gW0JvZHkgVGFnXSgjYm9keS10YWcpCiAgICAgIC0gW3JlZmVyZW5jZV0oI3JlZmVyZW5jZSkKICAgIC0gW1dyYXBwZXIgVGFnXSgjd3JhcHBlci10YWcpCiAgICAgIC0gW0V4YW1wbGVdKCNleGFtcGxlLTEpCiAgICAtIFtSZXNwb25zZSBUYWddKCNyZXNwb25zZS10YWcpCiAgICAgIC0gW2NvZGVdKCNjb2RlKQogICAgICAtIFt0eXBlXSgjdHlwZS0xKQogICAgICAtIFtyZWZlcmVuY2VdKCNyZWZlcmVuY2UtMSkKICAgIC0gW1BhdGggVGFnXSgjcGF0aC10YWcpCiAgICAgIC0gW3BhdGhdKCNwYXRoKQogICAgICAtIFttZXRob2RdKCNtZXRob2QpCiAgICAtIFtFeGFtcGxlIEVuZHBvaW50IEFubm90YXRpb25dKCNleGFtcGxlLWVuZHBvaW50LWFubm90YXRpb24pCiAgLSBbZ29yaWxsYS9tdXggSGFuZGxlciBGdW5jdGlvbnNdKCNnb3JpbGxhbXV4LWhhbmRsZXItZnVuY3Rpb25zKQogICAgLSBbTm90ZXNdKCNub3RlcykKICAtIFtnb3JpbGxhL211eCBTdWJyb3V0ZXJdKCNnb3JpbGxhbXV4LXN1YnJvdXRlcikKICAgIC0gW1N1YnJvdXRlciBBbm5vdGF0aW9uXSgjc3Vicm91dGVyLWFubm90YXRpb24pCiAgICAgIC0gW0V4YW1wbGVdKCNleGFtcGxlLTIpCiAgLSBbTWltZSBUeXBlcyBBbm5vdGF0aW9uXSgjbWltZS10eXBlcy1hbm5vdGF0aW9uKQogIC0gW1N0cnVjdCBBbm5vdGF0aW9uXSgjc3RydWN0LWFubm90YXRpb24pCiAgLSBbRGF0YSBUeXBlcyBDb252ZXJzaW9uXSgjZGF0YS10eXBlcy1jb252ZXJzaW9uKQotIFtUaXBzXSgjdGlwcykKICAtIFtBbm5vdGF0aW9uIG92ZXIgTXVsdGlwbGUgTGluZXNdKCNhbm5vdGF0aW9uLW92ZXItbXVsdGlwbGUtbGluZXMpCiAgLSBbQXJyYXkgUmVmZXJlbmNlc10oI2FycmF5LXJlZmVyZW5jZXMpCiAgLSBbQW5kIEVuZHBvaW50IFdpdGggTWFueSBEZWNyYWxhcmlvbnNdKCNhbmQtZW5kcG9pbnQtd2l0aC1tYW55LWRlY3JhbGFyaW9ucykKICAgIC0gW0V4YW1wbGVdKCNleGFtcGxlLTMpCi0gW0FQSURvYyBDTEldKCNhcGlkb2MtY2xpKQotIFtBYm91dCB0aGUgUHJvamVjdF0oI2Fib3V0LXRoZS1wcm9qZWN0KQotIFtDb250cmlidXRpbmddKCNjb250cmlidXRpbmcpCiAgLSBbUHVsbCBSZXF1ZXN0IFByb2Nlc3NdKCNwdWxsLXJlcXVlc3QtcHJvY2VzcykKLSBbTGljZW5zZV0oI2xpY2Vuc2UpCgojIyBTdW1tYXJ5CkFQSURvYyBleHRyYWN0cyB0aGUgQVBJIGRvY3VtZW50YXRpb24gYW5ub3RhdGlvbiBmcm9tIHlvdXIgR08gc291cmNlIGZpbGVzLCByZWN1cnNpdmVseSByZXNvbGVzIHN0cnVjdCByZWZlcmVuY2VzLCBhbmQgaXQgZ2VuZXJhdGVzIHRoZSBZQU1MIFtPcGVuQVBJIHYzLjAuMl0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vKSBzcGVjLiBmaWxlLCB3aGljaCBjb3VsZCBiZSB0ZXN0ZWQgaW4gdGhlIFtTd2FnZ2VyIEVkaXRvcl0oaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pby8pIGFuZCBxdWlja2x5IGludGVncmF0ZWQgd2l0aCBbU3dhZ2dlciBVSV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3Rvb2xzL3N3YWdnZXItdWkvZG93bmxvYWQvKS4KClRoZSBnZW5lcmF0b3IgaXMgYWxzbyBhYmxlIHRvIHJlYWQgW2dvcmlsbGEvbXV4XShodHRwczovL2dpdGh1Yi5jb20vZ29yaWxsYS9tdXgpICoqSGFuZGxlcioqIGFuZCAqKkhhbmRsZXJGdW5jKiogZnVuYyBzaWduYXR1cmUgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSB0aGUgYEByb3V0ZXJgIHRhZywgYW5kIGBAcGFyYW1gIHRhZy9zLiBbU2VlIGdvcmlsbGEvbXV4IEhhbmRsZXIgRnVuY3Rpb25zXSgjZ29yaWxsYW11eC1oYW5kbGVyLWZ1bmN0aW9ucykuCgo+IE5vdGU6IEl0IGRvZXMgbm90IGdlbmVyYXRlL3N1cHBvcnQgYWxsIE9wZW5BUEkgdjMuMC4yIGJsb2NrcywgdGhlIHRvb2wgaGFuZGxlcyBqdXN0IGEgc3Vic2V0IHJlcXVpcmVkIGJ5IG91ciBpbnRlcm5hbCBuZWVkcywgaXQgbWlnaHQgYmUgZXh0ZW5kZWQgaWYgdGhlcmUgd2lsbCBiZSBoaWdoIGRlbWFuZCBvbiBleHRlbnNpb24sIG9yIGlmIGFueW9uZSB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUuCgojIyBFeGFtcGxlcwpbQmFzaWMgQVBJIFByb2plY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9zcGFjZWF2b2NhZG8vYXBpZG9jL3RyZWUvbWFzdGVyL2V4YW1wbGUpCgojIyBHZXR0aW5nIFN0YXJ0ZWQKMS4gQWRkIGFubm90YXRpb24gaW50byB5b3VyIEFQSSBzb3VyY2UgY29kZSBmaWxlcywgW1NlZSBBUEkgQW5ub3RhdGlvbiBpbiBDb21tZW50c10oI2FwaS1hbm5vdGF0aW9uLWluLWNvbW1lbnRzKS4KICAgCjIuIEdldCB0aGUgQVBJRG9jIGJ5IHVzaW5nOgogICAgYGBgc2gKICAgIGdvIGdldCAtdSBnaXRodWIuY29tL3NwYWNlYXZvY2Fkby9hcGlkb2MKICAgIGBgYAogICAgPiBUaGlzIHdpbGwgY3JlYXRlIGEgYmluYXJ5IGluIHlvdXIgKiokR09QQVRIL2JpbioqIGZvbGRlciBjYWxsZWQgYGFwaWRvY2AgKE1hYy9Vbml4KSBvciBgYXBpZG9jLmV4ZWAgKFdpbmRvd3MpLgoKMy4gTm93IHlvdSBjYW4gcnVuIGBhcGlkb2NgIGNvbW1hbmQgZnJvbSB5b3VyIHNoZWxsLgogICA+IE1ha2Ugc3VyZSB0aGF0ICoqJEdPUEFUSC9iaW4qKiBpcyBpbiB5b3VyIEVudmlyb25tZW50IFZhcmlhYmxlczoKICAgIC0gKipMaW51eCoqOgogICAgICBgYGBzaAogICAgICBleHBvcnQgUEFUSD0kUEFUSDokR09QQVRIL2JpbgogICAgICBgYGAKICAgICAgKk5vdGUqOiBhc3N1bXB0aW9uIHRoYXQgeW91ciBoYXZlIGNvcnJlY3RseSBzZXQgJEdPUEFUSCBlbnYuIHZhcmlhYmxlLgoKICAgIC0gKipXaW5kb3dzKio6ICJDb250cm9sIFBhbmVsIiA+ICJTeXN0ZW0iID4gIkVkaXQgdGhlIHN5c3RlbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMiID4gIkFkdmFuY2VkIiA+ICJFbnZpcm9ubWVudCBWYXJpYWJsZXMiID4gIlBhdGgiID4gIkVkaXQiLiBhbmQgYWRkIHRoZSBkaXJlY3RvcnkuCgo0LiBSdW4gYGFwaWRvY2AgaW4gdGhlIHlvdXIgcHJvamVjdCdzIHJvb3QgZm9sZGVyLiBUaGlzIHdpbGwgZXh0cmFjdCBhbmQgcHJvY2VzcyB5b3VyIGFubm90YXRpb24gYW5kIGl0IGdlbmVyYXRlcyB0aGUgb3V0cHV0IFlBTUwgZmlsZS4KICAgIGBgYHNoCiAgICBhcGlkb2MgLW0gbWFpbi5nbyAtZSBoYW5kbGVyIC1vIGRvY3MvYXBpCiAgICBgYGAKICAgICpOb3RlKjogdGhlIGV4YW1wbGUgc2hvd3MgdGhlIGRlZmF1bHQgZmxhZyB2YWx1ZXMsIGZvciBtb3JlIGRldGFpbHMsIFtTZWUgQVBJRG9jIENMSV0oI2FwaWRvYy1jbGkpLgoKNS4gUHJldmlldyB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgW1N3YWdnZXIgRWRpdG9yXShodHRwczovL2VkaXRvci5zd2FnZ2VyLmlvLyksIGkuZS4gcHV0IHRoZSBvcGVuYXBpLnlhbWwgY29udGVudCBpbnRvIHRoZSBlZGl0b3IuCgojIEFQSSBBbm5vdGF0aW9uIGluIENvbW1lbnRzCkFuIEFQSSBhbm5vdGF0aW9uIGlzIHJlcHJlc2VudGVkIGFzIGFuIGNvZGUgY29tbWVudCBzdGFydGluZyB3aXRoICoqQCoqIHN5bWJvbCBmb2xsb3dlZCBieSBkb2N1bWVudGF0aW9uIHRhZyBhbmQgaXQgdmFsdWUgb3IgcGFyYW1ldGVycy4gRXhhbXBsZXM6CgoqIGAvLyBAdGl0bGUgRXhhbXBsZSBSRVNUZnVsIEFQSWAsIHRhZyAqKnRpdGxlKiogd2l0aCB2YWx1ZSAiRXhhbXBsZSBSRVNUZnVsIEFQSSIKKiBgLy8gQHNlcnZlciBhcGkuZG9tYWluLmNvbS92MyBQcm9kdWN0aW9uYCwgdGFnICoqc2VydmVyKiogd2l0aCBwYXJhbXM6ICJhcGkuZG9tYWluLmNvbS92MyIsICJQcm9kdWN0aW9uIiAKClRoZSB0aGUgdmFsdWUgb2YgdGhlIHRhZyBvciB0aGUgbGFzdCBwYXJhbWV0ZXIgb2YgdGhlIHRhZyBjYXB0dXJlcyB0aGUgbXVsdGlsaW5lIGNvbW1lbnRzLCBleGFtcGxlOgpgYGBnbwovLyBAZGVzYyBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZwovLyBlbGl0LiBOdWxsYW0gcmhvbmN1cyBtYWduYSBudW5jLCBpbiBmYXVjaWJ1cyBtZXR1cyBwdWx2aW5hcgovLyBldC4gTWF1cmlzIHBlbGxlbnRlc3F1ZSAKYGBgCj4gVGhlIHZhbHVlIG9mIGRlc2MgdGFnIGlzIGNhcHR1cmVkIGFzOiAiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gTnVsbGFtIHJob25jdXMgbWFnbmEgbnVuYywgaW4gZmF1Y2lidXMgbWV0dXMgcHVsdmluYXIgZXQuIE1hdXJpcyBwZWxsZW50ZXNxdWUiCmBgYGdvCi8vIEBzZXJ2ZXIgYXBpLmRvbWFpbi5jb20vdjMgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyCi8vIGVsaXQuIE51bGxhbSByaG9uY3VzIG1hZ25hIG51bmMuCmBgYAo+IFRoZSBsYXN0IHBhcmFtZXRlciwgKipkZXNjcmlwdGlvbioqIG9mIHRoZSBzZXJ2ZXIgdGFnIGlzIGNhcHR1cmVkIGFzOiAiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGVsaXQuIE51bGxhbSByaG9uY3VzIG1hZ25hIG51bmMuIgogIAojIyBNYWluIFNlY3Rpb24KVGhpcyBzZWN0aW9uIHNob3VsZCBiZSBsb2NhdGVkIGluIHRoZSAqKm1haW4qKiBmaWxlLCBwYXNzZWQgdG8gdGhlIFtBUElEb2MgQ0xJXSgjYXBpZG9jLWNsaSkgaW4gKiotbSoqIGZsYWcgKGRlZmF1bHRzIHRvICoqbWFpbi5nbyoqKS4KCiMjIyBTdXBwb3J0ZWQgVGFncwo+IE5vdGU6ICoqKCkqKiB3aXRoaW4gKipBbm5vdGF0aW9uKiogaW5kaWNhdGVzIGFuIGFubm90YXRpb24gcGFyYW1ldGVyIGNhcHR1cmVkIGJ5IHRoZSBnZW5lcmF0b3IuCgp8IEFubm90YXRpb24gICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9wZW5BUEkgU3BlYy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEV4YW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCB0aXRsZSAodmFsdWUpICAgICAgICAgICAgICB8ICoqUkVRVUlSRUQqKi4gVGhlIHRpdGxlIG9mIHRoZSBhcHBsaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jaW5mb09iamVjdCBmaWVsZDogdGl0bGUgICAgICAgICAgfCAvLyBAdGl0bGUgRXhhbXBsZSBSRVNUZnVsIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGRlc2MgKHZhbHVlKSAgICAgICAgICAgICAgIHwgQSBzaG9ydCBkZXNjcmlwdGlvbiBvZiB0aGUgYXBwbGljYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNpbmZvT2JqZWN0IGZpZWxkOiBkZXNjcmlwdGlvbiAgICB8IC8vIEBkZXNjIEFuIGV4YW1wbGUgb2YgcHVibGljbHkgYWNjZXNzaWJsZSBBUEkgICAgICAgICAgICAgICB8CnwgdmVyICh2YWx1ZSkgICAgICAgICAgICAgICAgfCAqKlJFUVVJUkVEKiouIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI2luZm9PYmplY3QgZmllbGQ6IHZlcnNpb24gICAgICAgIHwgLy8gQHZlciAxLjAuMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCB0ZXJtcyAodmFsdWUpICAgICAgICAgICAgICB8IEEgVVJMIHRvIHRoZSBUZXJtcyBvZiBTZXJ2aWNlIGZvciB0aGUgQVBJLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jaW5mb09iamVjdCBmaWVsZDogdGVybXNPZlNlcnZpY2UgfCAvLyBAdGVybXMgaHR0cHM6Ly9kb21haW4uY29tL2FwaS90ZXJtcyAgICAgICAgICAgICAgICAgICAgICAgfAp8IGNvbnRhY3QubmFtZSAodmFsdWUpICAgICAgIHwgVGhlIGlkZW50aWZ5aW5nIG5hbWUgb2YgdGhlIGNvbnRhY3QgcGVyc29uL29yZ2FuaXphdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNjb250YWN0T2JqZWN0IGZpZWxkOiBuYW1lICAgICAgICB8IC8vIEBjb250YWN0Lm5hbWUgQVBJIFN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgY29udGFjdC51cmwgKHZhbHVlKSAgICAgICAgfCBUaGUgVVJMIHBvaW50aW5nIHRvIHRoZSBjb250YWN0IGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI2NvbnRhY3RPYmplY3QgZmllbGQ6IHVybCAgICAgICAgIHwgLy8gQGNvbnRhY3QudXJsIGh0dHBzOi8vZG9tYWluLmNvbS9hcGkvc3VwcG9ydCAgICAgICAgICAgICAgIHwKfCBjb250YWN0LmVtYWlsICh2YWx1ZSkgICAgICB8IFRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSBjb250YWN0IHBlcnNvbi9vcmdhbml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jY29udGFjdE9iamVjdCBmaWVsZDogZW1haWwgICAgICAgfCAvLyBAY29udGFjdC5lbWFpbCBzdXBwb3J0QGRvbWFpbi5jb20gICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGxpYy5uYW1lICh2YWx1ZSkgICAgICAgICAgIHwgVGhlIGxpY2Vuc2UgbmFtZSB1c2VkIGZvciB0aGUgQVBJLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNsaWNlbnNlT2JqZWN0IGZpZWxkOiBuYW1lICAgICAgICB8IC8vIEBsaWMubmFtZSBBcGFjaGUgMi4wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgbGljLnVybCAodmFsdWUpICAgICAgICAgICAgfCBBIFVSTCB0byB0aGUgbGljZW5zZSB1c2VkIGZvciB0aGUgQVBJLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI2xpY2Vuc2VPYmplY3QgZmllbGQ6IHVybCAgICAgICAgIHwgLy8gQGxpYy51cmwgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMC5odG1sIHwKfCBzZXJ2ZXIgKHVybCkgKGRlc2NyaXB0aW9uKSB8IEFuIG9iamVjdCByZXByZXNlbnRpbmcgYSBTZXJ2ZXIgPGJyPjxicj5Ob3RlOiBUaGVyZSBtaWdodCBiZSBtYW55IEBzZXJ2ZXIgdGFncyB3aXRoaW4gdGhlIG1haW4gc2VjdGlvbi4gfCBodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jc2VydmVyT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgfCAvLyBAc2VydmVyIGFwaS5kb21haW4uY29tL3YzIFByb2R1Y3Rpb24gICAgICAgICAgICAgICAgICAgICAgfAoKIyMjIEV4YW1wbGUKYGBgZ28KLy8gQHRpdGxlIEFuIGV4YW1wbGUgYXV0aGVudGljYXRpb24gQVBJCi8vIEBkZXNjIFB1YmxpY2x5IGFjY2Vzc2libGUgYXV0aGVudGljYXRpb24gUkVTVCBBUEkuCi8vIEB0ZXJtcyBodHRwczovL2RvbWFpbi5jb20vZG9jcy9hcGkvdGVybXMKLy8KLy8gQGNvbnRhY3QubmFtZSBBUEkgU3VwcG9ydAovLyBAY29udGFjdC51cmwgaHR0cHM6Ly9kb21haW4uY29tL2NvbnRhY3QKLy8gQGNvbnRhY3QuZW1haWwgc3VwcG9ydEBkb21haW4uY29tCi8vCi8vIEBsaWMubmFtZSBBcGFjaGUgMi4wCi8vIEBsaWMudXJsIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAuaHRtbAovLwovLyBAdmVyIDEuMAovLyBAc2VydmVyIGh0dHBzOi8vYXV0aC5kb21haW4uY29tL3YzIFByb2R1Y3Rpb24gQVBJCi8vIEBzZXJ2ZXIgaHR0cHM6Ly9hdXRoLmRldi5kb21haW4uY29tL3YzIERldmVsb3BtZW50IEFQSQpmdW5jIG1haW4oKSB7fQpgYGAKCiMjIEFuIEVuZHBvaW50CkFuIGVuZHBvaW50IGlzIGJlaW5nIGNvbnNpZGVyZWQgYXMgYSBBUEkgY29tbWVudCBhbm5vdGF0aW9uIGJsb2NrIGZvdW5kIHdpdGhpbiBhbnkgZmlsZSBsb2NhdGVkIGluc2lkZSB0aGUgKiplbmRwb2ludHMqKiByb290IGZvbGRlciwgcGFzc2VkIHRvIHRoZSBbQVBJRG9jIENMSV0oI2FwaWRvYy1jbGkpIGluICoqLWUqKiBmbGFnIChkZWZhdWx0cyB0byAqKi4vKiopLgo+IEZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvIHBhc3MgdGhlIGVuZHBvaW50cyByb290IGZvbGRlciBhcyBhIGZsYWcgdG8gdGhlIENMSSB0byBhdm9pZCB1bm5lY2Vzc2FyeSBmaWxlIHByb2Nlc3NpbmcuCgojIyMgU3VwcG9ydGVkIFRhZ3MKPiBOb3RlOiAqKigpKiogd2l0aGluICoqQW5ub3RhdGlvbioqIGluZGljYXRlcyBhbiBhbm5vdGF0aW9uIHBhcmFtZXRlciBjYXB0dXJlZCBieSB0aGUgZ2VuZXJhdG9yLgoKfCBBbm5vdGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkFQSSBTcGVjLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeGFtcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IHN1bW1hcnkgKHZhbHVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBIHNob3J0IHN1bW1hcnkgb2Ygd2hhdCB0aGUgb3BlcmF0aW9uIGRvZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jb3BlcmF0aW9uT2JqZWN0IGZpZWxkOiBzdW1tYXJ5ICAgICB8IEBzdW1hbXJ5IExvcmVtIGlwc3VtIGRvbG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBkZXNjICh2YWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQSB2ZXJib3NlIGV4cGxhbmF0aW9uIG9mIHRoZSBvcGVyYXRpb24gYmVoYXZpb3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI29wZXJhdGlvbk9iamVjdCBmaWVsZDogZGVzY3JpcHRpb24gfCBAZGVzYyBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgaWQgKHZhbHVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVuaXF1ZSBzdHJpbmcgdXNlZCB0byBpZGVudGlmeSB0aGUgb3BlcmF0aW9uLiBUaGUgaWQgTVVTVCBiZSB1bmlxdWUgYW1vbmcgYWxsIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGluIHRoZSBBUEkuIFRoZSBvcGVyYXRpb25JZCB2YWx1ZSBpcyBjYXNlLXNlbnNpdGl2ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNvcGVyYXRpb25PYmplY3QgZmllbGQ6IG9wZXJhdGlvbklkIHwgLy8gQGlkIGxvZ2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHRhZyAoYXJyYXkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBIGxpc3Qgb2YgdGFncyBmb3IgQVBJIGRvY3VtZW50YXRpb24gY29udHJvbC4gVGFncyBjYW4gYmUgdXNlZCBmb3IgbG9naWNhbCBncm91cGluZyBvZiBvcGVyYXRpb25zIGJ5IHJlc291cmNlcyBvciBhbnkgb3RoZXIgcXVhbGlmaWVyLjxicj48YnI+Tm90ZTogQ29tbWEgc2VwYXJhdGVkIHZhbHVlLCBvciBhIHNpbmdsZSB2YWx1ZS4gfCBodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jb3BlcmF0aW9uT2JqZWN0IGZpZWxkOiB0YWdzICAgICAgICB8IC8vIEB0YWcgVXNlcjxicj48YnI+Ly8gQHRhZyBVc2VyLCBBdXRoZW50aWNhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBhY2NlcHQgKGFycmF5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQSBsaXN0IG9mIGFjY2VwdGVkIHJlcXVlc3QgY29udGVudCBtaW1lIHR5cGVzPGJyPjxicj5bU2VlIE1pbWUgVHlwZXMgQW5ub3RhdGlvbl0oI21pbWUtdHlwZXMtYW5ub3RhdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbi9hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAvLyBAYWNjZXB0IGpzb248YnI+PGJyPi8vIEBhY2NlcHQgYXBwbGljYXRpb24vanNvbiwgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkICAgICAgICAgICAgICAgICB8CnwgcHJvZHVjZSAoYXJyYXkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICoqUkVRVUlSRUQqKi4gQSBsaXN0IG9mIHN1cHBvcnRlZCBjb250ZW50IHJlc3BvbnNlIG1pbWUgdHlwZXM8YnI+PGJyPltTZWUgTWltZSBUeXBlcyBBbm5vdGF0aW9uXSgjbWltZS10eXBlcy1hbm5vdGF0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG4vYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgLy8gQHByb2R1Y2UganNvbjxicj48YnI+Ly8gQHByb2R1Y2UgYXBwbGljYXRpb24vanNvbiwgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkICAgICAgICAgICAgICAgfAp8IHBhcmFtIChuYW1lKSAoaW4pIHsodHlwZSl9IChyZXF1aXJlZCkgKGRlc2NyaXB0aW9uKSAgICAgICAgfCBEZXNjcmliZXMgYSBzaW5nbGUgb3BlcmF0aW9uIHBhcmFtZXRlci4gPGJyPjxicj5bU2VlIFBhcmFtIFRhZ10oI3BhcmFtLXRhZyk8YnI+PGJyPk5vdGU6IFRoZXJlIG1pZ2h0IGJlIG1hbnkgQHBhcmFtIHRhZ3Mgd2l0aGluIHRoZSBlbmRwb2ludCBibG9jay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jcGFyYW1ldGVyT2JqZWN0ICAgICAgICAgICAgICAgICAgICB8IC8vIEBwYXJhbSB0b2tlbiBwYXRoIHtzdHJpbmd9IHRydWUgU2VjdXJpdHkgVG9rZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBib2R5IChyZWZlcmVuY2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpYmVzIGEgc2luZ2xlIHJlcXVlc3QgYm9keS48YnI+PGJyPltTZWUgQm9keSBUYWddKCNib2R5LXRhZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI3JlcXVlc3RCb2R5T2JqZWN0ICAgICAgICAgICAgICAgICAgfCAvL0Bib2R5IG1vZGVsLkxvZ2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cnwgc3dyYXAgKHJlZmVyZW5jZSkgKGZpZWxkIHBvaW50ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1Y2Nlc3Mgb2JqZWN0IHdyYXBwZXIuIElmIHRoaXMgdGFnIGlzIHNldCwgYW55IHN1Y2Nlc3MgcmVzcG9uc2Ugb2JqZWN0IGlzIGJlaW5nIHdyYXBwZWQgd2l0aCB0aGlzIG9iamVjdCBvbiB0aGUgZGVzaXJlZCAqKnBvaW50ZXIgZmllbGQqKjxicj48YnI+W1NlZSBXcmFwcGVyIFRhZ10oI3dyYXBwZXItdGFnKSAgICAgICAgICAgICB8IG4vYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgLy8gQHN3cmFwIHJlc3BvbnNlLlN1Y2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHN1Y2Nlc3MgKGNvZGUpIHsodHlwZSl9IChyZWZlcmVuY2Ugb3IgZW1wdHkpIChkZXNjcmlwdGlvbikgfCAqKlJFUVVJUkVEKiouIERlc2NyaWJlcyBhIHNpbmdsZSBzdWNjZXNzIHJlc3BvbnNlIGZyb20gYW4gQVBJIE9wZXJhdGlvbi48YnI+PGJyPltTZWUgUmVzcG9uc2UgVGFnXSgjcmVzcG9uc2UtdGFnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jcmVzcG9uc2VPYmplY3QgICAgICAgICAgICAgICAgICAgICB8IC8vIEBzdWNjZXNzIDIwMCB7b2JqZWN0fSByZXNwb25zZS5TdWNjZXNzIE9LPGJyPjxicj4vLyBAc3VjY2VzcyAyMDAge3N0cmluZ30gT0sgICAgICAgICAgICAgICAgICAgICAgIHwKfCBmd3JhcCAocmVmZXJlbmNlKSAoZmllbGQgcG9pbnRlcikgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmFpbHVyZSBvYmplY3Qgd3JhcHBlci4gSWYgdGhpcyB0YWcgaXMgc2V0LCBhbnkgZmFpbHVyZSByZXNwb25zZSBvYmplY3QgaXMgYmVpbmcgd3JhcHBlZCB3aXRoIHRoaXMgb2JqZWN0IG9uIHRoZSBkZXNpcmVkICoqcG9pbnRlciBmaWVsZCoqPGJyPjxicj5bU2VlIFdyYXBwZXIgVGFnXSgjd3JhcHBlci10YWcpICAgICAgICAgICAgIHwgbi9hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAvLyBAZndyYXAgcmVzcG9uc2UuRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgZmFpbHVyZSAoY29kZSkgeyh0eXBlKX0gKHJlZmVyZW5jZSBvciBlbXB0eSkgKGRlc2NyaXB0aW9uKSB8IERlc2NyaWJlcyBhIHNpbmdsZSBmYWlsdXJlIHJlc3BvbnNlIGZyb20gYW4gQVBJIE9wZXJhdGlvbi48YnI+PGJyPltTZWUgUmVzcG9uc2UgVGFnXSgjcmVzcG9uc2UtdGFnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNyZXNwb25zZU9iamVjdCAgICAgICAgICAgICAgICAgICAgIHwgLy8gQGZhaWx1cmUgNDAxIHtvYmplY3R9IHJlc3BvbnNlLkF1dGhFcnJvciBVbmF1dGhvcml6ZWQ8YnI+PGJyPi8vIEBmYWlsdXJlIDQwMSB7c3RyaW5nfSBVbmF1dGhvcml6ZWQgfAp8IHN1YnJvdXRlciAodmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOYW1lIG9mIHRoZSBzdWJyb3V0ZXIgdXNlZCBmb3IgdGhpcyBlbmRwb2ludC4gPGJyPjxicj5bU2VlIGdvcmlsbGEvbXV4IFN1YnJvdXRlcl0oI2dvcmlsbGFtdXgtc3Vicm91dGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBuL2EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC8vIEBzdWJyb3V0ZXIgdXNlciBbcG9zdF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCByb3V0ZXIgKHBhdGgpIFsobWV0aG9kKV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKipSRVFVSVJFRCoqLiBEZXNjcmliZXMgdGhlIG9wZXJhdGlvbnMgYXZhaWxhYmxlIG9uIGEgc2luZ2xlIHBhdGgsIGkuZS4gZW5kcG9pbnQgVVJMPGJyPjxicj5bU2VlIFBhdGggVGFnXSgjcGF0aC10YWcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jcGF0aEl0ZW1PYmplY3QgICAgICAgICAgICAgICAgICAgICB8IC8vIEByb3V0ZXIgL2xvZ2luIFtwb3N0XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCiMjIyBQYXJhbSBUYWcKPiAqQW5ub3RhdGlvbjoqIHBhcmFtIChuYW1lKSAoaW4pIHsodHlwZSl9IChyZXF1aXJlZCkgKGRlc2NyaXB0aW9uKQoKVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSAqKnBhcmFtKiogdGFnCiMjIyMgbmFtZSAKKiBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyLiBQYXJhbWV0ZXIgbmFtZXMgYXJlIGNhc2Ugc2Vuc2l0aXZlLgoqIElmIGBpbmAgaXMgInBhdGgiLCB0aGUgbmFtZSBmaWVsZCBNVVNUIGNvcnJlc3BvbmQgdG8gdGhlIGFzc29jaWF0ZWQgcm91dGVyIHVybCBwYXJhbWV0ZXIsIGUuZy46CiAgIGAvLyBAcGFyYW0gdG9rZW4gcGF0aCB7c3RyaW5nfSB0cnVlIFNlY3VyaXR5IHRva2VuYCBtdXN0IG1hdGNoIHdpdGggYC8vIEByb3V0ZXIgL2F1dGgve3Rva2VufSBbZ2V0XWAKCiMjIyMgaW4gCiogVGhlIGxvY2F0aW9uIG9mIHRoZSBwYXJhbWV0ZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmUgInF1ZXJ5IiwgImhlYWRlciIsICJwYXRoIiBvciAiY29va2llIi4KCiMjIyMgdHlwZQoqIHRoZSBvdXRlciAie30iIGFyZSB1c2VkIGp1c3QgYXMgdmlzdWFsIHNlcGFyYXRvcnMgb2YgdHlwZSBmaWVsZCwgaS5lLiB0aGVpciBhcmUgbm90IHJlcXVpcmVkLgogIEUuZy4gYC8vIEBwYXJhbSB0b2tlbiBwYXRoIHtzdHJpbmd9IHRydWUgU2VjdXJpdHkgdG9rZW5gID0gYC8vIEBwYXJhbSB0b2tlbiBwYXRoIHN0cmluZyB0cnVlIFNlY3VyaXR5IHRva2VuYAoqIFBhcmFtIHRhZyBkb2VzIG5vdCBzdXBwb3J0IHN0cnVjdCB0eXBlLCBqdXN0IGJhc2UgZ28gdHlwZXMsIFtTZWUgVHlwZSBNYXBwaW5nXSgjdHlwZS1tYXBwaW5nKQoqICoqQXJyYXkgYW5ub3RhdGlvbioqOiBge1tdc3RyaW5nfWAsIGB7W11pbnR9YCwgZXRjLgoKIyMjIEJvZHkgVGFnCj4gKkFubm90YXRpb246KiBib2R5IChyZWZlcmVuY2UpCgojIyMjIHJlZmVyZW5jZQoqIGdvIHN0cnVjdHVyZSB1c2VkIGFzIHJlcXVlc3QgbW9kZWwsIGV4YW1wbGU6IGAvLyBAYm9keSBtb2RlbC5Mb2dpbmAKICAKICBgYGBnbwogIC8vIExvZ2luIHN0cnVjdCBsb2NhdGVkIGluICJtb2RlbCIgcGFja2FnZSwKICAvLyByZWZlcmVuY2VkIGluIHRoZSBnbyBmaWxlIHdoZXJlIHRoZSBlbmRwb2ludAogIC8vIGFubm90YXRpb24gaXMgc2V0CiAgdHlwZSBMb2dpbiBzdHJ1Y3QgewogICAgLy8gVXNlcidzIGVtYWlsIGFkZHJlc3MKICAgIFVzZXJuYW1lIHN0cmluZyBganNvbjoidXNlcm5hbWUiYAogICAgUGFzc3dvcmQgc3RyaW5nCiAgfQogIGBgYAogIHdpbGwgYmUgcmVzb2x2ZWQgYXM6CiAgYGBgeWFtbAogIHNjaGVtYToKICAgIHR5cGU6IG9iamVjdAogICAgcGFyYW1ldGVyczoKICAgICAgdXNlcm5hbWU6CiAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgZGVzY3JpcHRpb246IFVzZXIncyBlbWFpbCBhZGRyZXNzCiAgICAgIHBhc3N3b3JkOgogICAgICAgIHR5cGU6IHN0cmluZwogIGBgYAoqIFRoZSByZWZlcmVuY2Ugc3RydWN0dXJlIGlzIGJlaW5nIHJlc29sdmVkIHJlY3Vyc2l2ZWx5LCBpLmUuIGl0IG1pZ2h0IGNvbnRhaW4gZmllbGRzIHJlZmVyZW5jaW5nIG90aGVyIGdvIHN0cnVjdC4KKiBbU2VlIFN0cnVjdCBBbm5vdGF0aW9uXSgjc3RydWN0LWFubm90YXRpb24pIGZvciBtb3JlIGRldGFpbHMuCgojIyMgV3JhcHBlciBUYWcKPiAqQW5ub3RhdGlvbjoqIHN3cmFwIChyZWZlcmVuY2UpIChwb2ludGVyIGZpZWxkKSwgZndyYXAgKHJlZmVyZW5jZSkgKGZpZWxkIHBvaW50ZXIpCgpJZiB0aGlzIHRhZyBpcyBzZXQsIGFueSBzdWNjZXNzL2ZhaWx1cmUgcmVzcG9uc2Ugb2JqZWN0IGlzIGJlaW5nIHdyYXBwZWQgd2l0aCB0aGlzIG9iamVjdCBvbiB0aGUgZGVzaXJlZCBwb2ludGVyIGZpZWxkLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIGEgZ2VuZXJpYyBBUEkgcmVzcG9uc2Ugb2JqZWN0IHdpdGggdmFyaW91cyBkYXRhIGZpZWxkLgoKIyMjIyBFeGFtcGxlCmBgYGdvCnR5cGUgQVBJU3VjY2VzcyBzdHJ1Y3QgewogIFN0YXR1cyBzdHJpbmcgYGpzb246InN0YXR1cyJgCiAgRGF0YSBpbnRlcmZhY2V7fSBganNvbjoiZGF0YSJgCn0KdHlwZSBQcm9maWxlIHN0cnVjdCB7CiAgRmlyc3RuYW1lIGludCBganNvbjoiZmlyc3RuYW1lImAKICBMYXN0bmFtZSBzdHJpbmcgYGpzb246Imxhc3RuYW1lImAKfQpgYGAKCmAvLyBAc3dyYXAgQVBJU3VjY2VzcyBkYXRhYCBhbmQgYC8vIEBzdWNjZXNzIDIwMCB7b2JqZWN0fSBQcm9maWxlIE9LYCB3aWxsIHByb2R1Y2U6CmBgYHlhbWwKIjIwMCI6CiAgZGVzY3JpcHRpb246IE9LCiAgY29udGVudDoKICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgIHNjaGVtYToKICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgc3RhdHVzOgogICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGRhdGE6CiAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvUHJvZmlsZSIKYGBgCgoqIFRoZSByZWZlcmVuY2Ugc3RydWN0dXJlIGlzIGJlaW5nIHJlc29sdmVkIHJlY3Vyc2l2ZWx5LCBpLmUuIGl0IG1pZ2h0IGNvbnRhaW4gZmllbGRzIHJlZmVyZW5jaW5nIG90aGVyIGdvIHN0cnVjdC4KKiBbU2VlIFN0cnVjdCBBbm5vdGF0aW9uXSgjc3RydWN0LWFubm90YXRpb24pIGZvciBtb3JlIGRldGFpbHMuCgojIyMgUmVzcG9uc2UgVGFnCj4gKkFubm90YXRpb246KiBzdWNjZXNzIChjb2RlKSB7KHR5cGUpfSAocmVmZXJlbmNlIG9yIHN0cmluZykgKGRlc2NyaXB0aW9uKSwgZmFpbHVyZSAoY29kZSkgeyh0eXBlKX0gKHJlZmVyZW5jZSBvciBzdHJpbmcpIChkZXNjcmlwdGlvbikKCiMjIyMgY29kZQoqIEFueSB2YWxpZCBIVFRQIHJlcG9uc2UgY29kZQoKIyMjIyB0eXBlCiogVGhlIG91dGVyICJ7fSIgYXJlIHVzZWQganVzdCBhcyB2aXN1YWwgc2VwYXJhdG9ycyBvZiB0eXBlIGZpZWxkLCBpLmUuIHRoZWlyIGFyZSBub3QgcmVxdWlyZWQuCiAgRS5nLiBgLy8gQHN1Y2Nlc3MgMjAwIHtzdHJpbmd9IHN0cmluZyBPS2AgPSBgLy8gQHN1Y2Nlc3MgMjAwIHN0cmluZyBzdHJpbmcgT0tgCiogU3VwcG9ydGVkOiBvYmplY3QsIHN0cmluZwogICogaWYgc2V0IHRvIG9iamVjdCwgdGhlIG5leHQgcGFyYW1ldGVyIGV4cGVjdGVkIGlzICoqcmVmZXJlbmNlKioKICAqIGlmIHNldCB0byBzdHJpbmcsIG5leHQgcGFyYW1ldGVyIGlzIHNraXBwZWQgKHJlZmVyZW5jZSkKCiMjIyMgcmVmZXJlbmNlCiogUmVmZXJlbmNlIHJlc3BvbnNlIGdvIHN0cnVjdAoqICoqQXJyYXkgYW5ub3RhdGlvbioqOiBge1tdcmVzcG9uc2UuQ2FyfWAsIGV0Yy4KKiBUaGUgcmVmZXJlbmNlIHN0cnVjdHVyZSBpcyBiZWluZyByZXNvbHZlZCByZWN1cnNpdmVseSwgaS5lLiBpdCBtaWdodCBjb250YWluIGZpZWxkcyByZWZlcmVuY2luZyBvdGhlciBnbyBzdHJ1Y3QuCiogW1NlZSBTdHJ1Y3QgQW5ub3RhdGlvbl0oI3N0cnVjdC1hbm5vdGF0aW9uKSBmb3IgbW9yZSBkZXRhaWxzLgoKIyMjIFBhdGggVGFnCj4gKkFubm90YXRpb246KiByb3V0ZXIgKHBhdGgpIFsobWV0aG9kKV0KCiMjIyMgcGF0aCAKKiBJdCBtaWdodCBjb250YWluIHRoZSAicGF0aCIgcGFyYW1ldGVycywgaXQgdGhpcyBmb3JtYXQ6IGAvbG9naW4ve3Rva2VufWAgd2hlcmUgdG9rZW4gaXMgdGhlIG5hbWUgb2YgcGFyYW0gZGVmaW5lZCBpbiB0aGUgW1BhcmFtIFRhZ10oI3BhdGFtLXRhZykuCgojIyMjIG1ldGhvZAoqIEhUVFAgbWV0aG9kCiogVGhlIG91dGVyICJbXSIgYXJlIHVzZWQganVzdCBhcyB2aXN1YWwgc2VwYXJhdG9ycyBvZiBtZXRob2QgZmllbGQsIGkuZS4gdGhlaXIgYXJlIG5vdCByZXF1aXJlZC4KICBFLmcuIGAvLyBAcm91dGVyIC9sb2dpbiBbcG9zdF1gID0gYC8vIEByb3V0ZXIgL2xvZ2luIHBvc3RgCiogSXQgbWlnaHQgY29udGFpbiBhbiBhcnJheSBvZiBtZXRob2RzLCBlLmcuOiBgW3Bvc3QsIHB1dF1gCgojIyMgRXhhbXBsZSBFbmRwb2ludCBBbm5vdGF0aW9uCmBgYGdvCi8vIExvZ2luIHJlcXVlc3QKLy8gQHN1bW1hcnkgTG9naW4gdXNlcgovLyBAZGVzYyBBdXRoZW50aWNhdGlvbiByZXF1ZXN0Ci8vIEBpZCBsb2dpbgovLyBAdGFnIEF1dGhlbnRpY2F0aW9uCi8vIEBhY2NlcHQganNvbiwgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCi8vIEBwcm9kdWNlIGpzb24KLy8gQGJvZHkgbW9kZWwuTG9naW4KLy8gQHN3cmFwIHJlc3BvbnNlLkRhdGEgZGF0YQovLyBAc3VjY2VzcyAyMDAge29iamVjdH0gcmVxdWVzdC5Ub2tlbiBPSwovLyBAZmFpbHVyZSA0MDEge29iamVjdH0gcmVzcG9uc2UuRXJyb3IgVW5hdXRob3JpemVkLgovLyBTZWUgZXJyb3IgY29kZSBhbmQgZXJyb3IgbWVzc2FnZSBmb3IgbW9yZSBkZXRhaWxzLgovLyBAZmFpbHVyZSA1MDAge3N0cmluZ30gSW50ZXJuYWwgU2VydmVyIEVycm9yCi8vIEByb3V0ZXIgL2xvZ2luIFtwb3N0XQpmdW5jIGhhbmRsZXIodyBodHRwLlJlc3BvbnNlV3JpdGVyLCByICpodHRwLlJlcXVlc3QpIHt9CgovLyBAc3VtbWFyeSBBY3RpdmF0ZSB1c2VyCi8vIEBkZXNjIFVzZXIgYWN0aXZhdGlvbiB2aWEgdGhlIHRva2VuIHJlcXVlc3QuCi8vIEBpZCBhY3RpdmF0ZQovLyBAdGFnIFJlZ2lzdHJhdGlvbgovLyBAcGFyYW0gdG9rZW4gcGF0aCB7c3RyaW5nfSB0cnVlIEFjdGl2YXRpb24gdG9rZW4KLy8gQHByb2R1Y2UganNvbgovLyBAc3VjY2VzcyAyMDAge3N0cmluZ30gT0sKLy8gQGZhaWx1cmUgNTAwIHtzdHJpbmd9IEludGVybmFsIFNlcnZlciBFcnJvcgovLyBAcm91dGVyIC9yZWdpc3RyYXRpb24vYWN0aXZhdGUve3Rva2VufSBbZ2V0XQpmdW5jIGhhbmRsZXIodyBodHRwLlJlc3BvbnNlV3JpdGVyLCByICpodHRwLlJlcXVlc3QpIHt9CgovLyBIYW5kbGVycyB3aXRoIHBhc3NlZCBnb3JpbGxhIG11eCByb3V0ZXIKLy8KLy8gSW4gdGhpcyBleGFtcGxlIHRoZSBAcm91dGVyIHRhZyBpcyBiZWluZyByZXNvbHZlZAovLyBmcm9tIHRoZSBIYW5kbGVGdW5jIG9yIEhhbmRsZSBnb3JpbGxhICptdXguUm91dGVyIGZ1bmMuCi8vIEBwYXJhbSB0YWdzIGFyYSBhbHNvIHJlc29sdmVkIGZyb20gdGhlIGZ1bmMgcGF0aCBzdHJpbmcuCi8vCi8vIFRoZXNlIHRhZ3Mgd2lsbCBiZSBleHRyYWN0ZWQgYXV0b21hdGljYWxseToKLy8gQHJvdXRlciAvcGVyc29uL3tpZH0gW2dldF0KLy8gQHBhcmFtIGlkIHBhdGgge3N0cmluZ30gdHJ1ZQpmdW5jIEhhbmRsZXJzKHIgKm11eC5Sb3V0ZXIpIHsKICAvLyBHZXRQZXJzb24gaGFuZGxlcgogIC8vIEBzdW1tYXJ5IFBlcnNvbgogIC8vIEBkZXNjIEdldCBwZXJzb24gYnkgSUQuCiAgLy8gQGlkIHBlcnNvbgogIC8vIEB0YWcgUGVyc29uCiAgLy8gQHByb2R1Y2UganNvbgogIC8vIEBzdWNjZXNzIDIwMCB7b2JqZWN0fSBQZXJzb24gT0sKICAvLyBAZmFpbHVyZSA1MDAge3N0cmluZ30gSW50ZXJuYWwgU2VydmVyIEVycm9yCiAgci5IYW5kbGVGdW5jKCIvcGVyc29uL3tpZDpbMC05XSt9IiwgR2V0UGVyc29uKS5NZXRob2RzKCJHRVQiKQp9CmBgYAoKIyMgZ29yaWxsYS9tdXggSGFuZGxlciBGdW5jdGlvbnMKYEByb3V0ZXJgIHRhZyBhbmQgIGBAcGFyYW1gIHRhZ3MgY291bGQgYXV0b21hdGljYWxseSByZXNvbHZlZCBpZiB0aGUgZW5kcG9pbnQgYW5ub3RhdGlvbiBpcyBwbGFjZWQgYWJvdmUgdGhlIFtnb3JpbGxhL211eF0oaHR0cHM6Ly9naXRodWIuY29tL2dvcmlsbGEvbXV4KSBIYW5kbGVyIG9yIEhhbmRsZXJGdW5jIGZ1bmN0aW9uOgpgYGBnbwovLyBHZXRQZXJzb24gaGFuZGxlcgovLyBAc3VtbWFyeSBQZXJzb24KLy8gQGRlc2MgR2V0IHBlcnNvbiBieSBJRC4KLy8gQGlkIHBlcnNvbgovLyBAdGFnIFBlcnNvbgovLyBAcHJvZHVjZSBqc29uCi8vIEBzdWNjZXNzIDIwMCB7b2JqZWN0fSBQZXJzb24gT0sKLy8gQGZhaWx1cmUgNTAwIHtzdHJpbmd9IEludGVybmFsIFNlcnZlciBFcnJvcgpyLkhhbmRsZUZ1bmMoIi9wZXJzb24ve2lkOlswLTldK30iLCBHZXRQZXJzb24pLk1ldGhvZHMoIkdFVCIpCmBgYApBdXRvbWF0aWNhbGx5IHJlc29sdmVkIHRhZ3Mgd2lsbCBiZSBiZToKKiBgQHJvdXRlciAvcGVyc29uL3tpZH0gW2dldF1gCiogYEBwYXJhbSBpZCBwYXRoIHtzdHJpbmd9IHRydWVgCgojIyMgTm90ZXMKKiBUaGlzIHByb2Nlc3MgaXMgc2tpcHBlZCBpZiB0aGUgZW5kcG9pbnQgYW5ub3RhdGlvbiBjb250YWlucyB0aGUgYEByb3V0ZXJgIHRhZwoqIElmIHRoZSBlbmRwb2ludCBhbm5vdGF0aW9uIGNvbnRhaW5zIGEgYEBwYXJhbWAgdGFnIGZvdW5kIGluIHRoZSBmdW5jIHBhdGggcGFyYW1ldGVyLCBpdCBpcyBub3QgYmVpbmcgb3ZlcndyaXR0ZW4gYnkgdGhlIHRoaXMgcHJvY2VzcyBub3IgZG91YmxlIGFubm90YXRlZC4KKiBQbGVhc2UgW3NlZSBnb3JpbGxhL211eCBTdWJyb3V0ZXJdKCNnb3JpbGxhbXV4LXN1YnJvdXRlcikgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBob3cgdG8gd29yayB3aXRoIGdvcmlsbGEvbXV4IHN1YnJvdXRlcnMuCgojIyBnb3JpbGxhL211eCBTdWJyb3V0ZXIKQW4gZW5kcG9pbnQgY2FuIHVzZSBgc3Vicm91dGVyYCB0YWcgdG8gY29ubmVjdCBhIGVuZHBvaW50IHdpdGggdGhlIHN1YnJvdXRlciB0byByZXNvbHZlIHRoZSBmaW5hbCBlbmRwb2ludCBVUkwuCgojIyMgU3Vicm91dGVyIEFubm90YXRpb24KfCBBbm5vdGF0aW9uICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgfCBFeGFtcGxlICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCByb3V0ZXIgKG5hbWUpICAgIHwgTmFtZSBvZiB0aGUgc3Vicm91dGVyLiAgICAgICAgfCAvLyBAcm91dGVyIGFjY291bnQgIHwKfCBzdWJyb3V0ZXIgKG5hbWUpIHwgTmFtZSBvZiB0aGUgcGFyZW50IHN1YnJvdXRlci4gfCAvLyBAc3Vicm91dGVyIGFkbWluIHwKClRoZSBhbm5vdGF0aW9uIG11c3QgYmUgcGxhY2VkIGFib3ZlIHRoZSAqKmdvcmlsbGEubXV4IFN1YnJvdXRlcioqIG1ldGhvZCBhbnl3aGVyZSB3aXRoaW4gdGhlIE1haW4gZmlsZSBvciBpbiBhbnkgZmlsZSB3aXRoaW4gdGhlIGVuZHBvaW50cyByb290IGZvbGRlci4KCiMjIyMgRXhhbXBsZQpgYGBnbwovLyBAcm91dGVyIGFkbWluCnIuUGF0aFByZWZpeCgiL2FkbWluIikuU3Vicm91dGVyKCkKCi8vIEByb3V0ZXIgdXNlcgovLyBAc3Vicm91dGVyIGFkbWluCnIuUGF0aFByZWZpeCgiL3VzZXIiKS5TdWJyb3V0ZXIoKQoKLy8gQHN1bW1hcnkgTGlzdCBvZiB1c2VycwovLyBAcHJvZHVjZSBqc29uCi8vIEBzdWNjZXNzIDIwMCB7b2JqZWN0fSBQZXJzb24gT0sKLy8gQHN1YnJvdXRlciB1c2VyCnIuSGFuZGxlRnVuYygiL2xpc3QiLCBHZXRQZXJzb25MaXN0KS5NZXRob2RzKCJHRVQiKQpgYGAKPiBUaGUgVVJMIHJlc29sdmVkIGZvciB0aGUgIkxpc3Qgb2YgdXNlcnMiIGVuZHBvaW50IHdpbGwgYmUgYC9hZG1pbi91c2VyL2xpc3RgCgojIyBNaW1lIFR5cGVzIEFubm90YXRpb24KfCBNaW1lIFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgfCBBbm5vdGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgdGV4dC9wbGFpbiAgICAgICAgICAgICAgICAgICAgICAgIHwgdGV4dCwgdGV4dC9wbGFpbiAgICAgICAgICAgICAgICAgICAgICAgIHwKfCB0ZXh0L2h0bWwgICAgICAgICAgICAgICAgICAgICAgICAgfCBodG1sLCB0ZXh0L2h0bWwgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHRleHQveG1sICAgICAgICAgICAgICAgICAgICAgICAgICB8IHhtbCwgdGV4dC94bWwgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYXBwbGljYXRpb24vanNvbiAgICAgICAgICAgICAgICAgIHwganNvbiwgYXBwbGljYXRpb24vanNvbiAgICAgICAgICAgICAgICAgIHwKfCBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgfCBmb3JtLCBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgfAp8IG11bHRpcGFydC9mb3JtLWRhdGEgICAgICAgICAgICAgICB8IG11bHRpcGFydCwgbXVsdGlwYXJ0L2Zvcm0tZGF0YSAgICAgICAgICB8CnwgYXBwbGljYXRpb24vdm5kLmFwaStqc29uICAgICAgICAgIHwganNvbi1hcGksIGFwcGxpY2F0aW9uL3ZuZC5hcGkranNvbiAgICAgIHwKfCBhcHBsaWNhdGlvbi94LWpzb24tc3RyZWFtICAgICAgICAgfCBqc29uLXN0cmVhbSwgYXBwbGljYXRpb24veC1qc29uLXN0cmVhbSAgfAp8IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSAgICAgICAgICB8IG9jdGV0LXN0cmVhbSwgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtICB8CnwgaW1hZ2UvcG5nICAgICAgICAgICAgICAgICAgICAgICAgIHwgcG5nLCBpbWFnZS9wbmcgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBpbWFnZS9qcGVnICAgICAgICAgICAgICAgICAgICAgICAgfCBqcGVnLCBpbWFnZS9qcGVnICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGltYWdlL2pwZWcgICAgICAgICAgICAgICAgICAgICAgICB8IGpwZywgIGltYWdlL2pwZWcgICAgICAgICAgICAgICAgICAgICAgICB8CnwgaW1hZ2UvZ2lmICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2lmLCAgaW1hZ2UvZ2lmICAgICAgICAgICAgICAgICAgICAgICAgIHwKCiMjIFN0cnVjdCBBbm5vdGF0aW9uCmBgYGdvCnR5cGUgUHJvZmlsZSBzdHJ1Y3QgewogIC8vIFVzZXIncyBlbWFpbAogIFVzZXJuYW1lIHN0cmluZyBganNvbjoidXNlcm5hbWUiIHJlcXVpcmVkOiJ0cnVlImAKICBTdGF0dXMgVXNlclN0YXR1cyBgYXBpdHlwZToiaW50ImAKfQp0eXBlIFVzZXJTdGF0dXMgaW50CmBgYAoKKiBDb21tZW50IGFib3ZlIHRoZSBmaWVsZCBpcyBiZWluZyBjYXB0dXJlZCBhcyBmaWVsZCAiZGVzY3JpcHRpb24iCiogYGpzb246IngiYCBvdmVycmlkZXMgdGhlIGZpZWxkIG5hbWUKKiBgYXBpdHlwZToieCJgIG92ZXJyaWRlcyB0aGUgZmllbGQgdHlwZQoqIGByZXF1aXJlZDoidHJ1ZSJgIG1hcmtzIHRoZSBmaWVsZCBhcyByZXF1aXJlZAoKIyMgRGF0YSBUeXBlcyBDb252ZXJzaW9uCkdvIHR5cGVzIGFyZSBiZWluZyBjb252ZXJ0ZWQgaW50byBPcGVuQVBJIGFjY2VwdGVkIGZvcm1hdAoKfCBnbyBUeXBlIHwgQ29udmVydGVkIFR5cGUgfAp8IC0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLSB8CnwgYnl0ZSAgICB8IGludGVnZXIgICAgICAgIHwKfCBydW5lICAgIHwgaW50ZWdlciAgICAgICAgfAp8IGludCAgICAgfCBpbnRlZ2VyICAgICAgICB8CnwgaW50OCAgICB8IGludGVnZXIgICAgICAgIHwKfCBpbnQxNiAgIHwgaW50ZWdlciAgICAgICAgfAp8IGludDMyICAgfCBpbnRlZ2VyICAgICAgICB8CnwgaW50NjQgICB8IGludGVnZXIgICAgICAgIHwKfCB1aW50ICAgIHwgaW50ZWdlciAgICAgICAgfAp8IHVpbnQ4ICAgfCBpbnRlZ2VyICAgICAgICB8CnwgdWludDE2ICB8IGludGVnZXIgICAgICAgIHwKfCB1aW50MzIgIHwgaW50ZWdlciAgICAgICAgfAp8IHVpbnQ2NCAgfCBpbnRlZ2VyICAgICAgICB8CnwgdWludHB0ciB8IGludGVnZXIgICAgICAgIHwKfCBmbG9hdDMyIHwgbnVtYmVyICAgICAgICAgfAp8IGZsb2F0NjQgfCBudW1iZXIgICAgICAgICB8CnwgYm9vbCAgICB8IGJvb2xlYW4gICAgICAgIHwKCiMgVGlwcwoKIyMgQW5ub3RhdGlvbiBvdmVyIE11bHRpcGxlIExpbmVzCkxhc3QgcGFyYW1ldGVyIG9mIGFueSB0YWcgaXMgY291bGQgc3ByZWFkIG92ZXIgbXVsdGlwbGUgbGluZXMsIGUuZy46CmBgYGdvCi8vIEBkZXNjIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nCi8vIGVsaXQuIE51bGxhbSByaG9uY3VzIG1hZ25hIG51bmMsIGluIGZhdWNpYnVzIG1ldHVzIHB1bHZpbmFyCi8vIGV0LiBNYXVyaXMgcGVsbGVudGVzcXVlIGVuaW0ganVzdG8KCi8vIEBmYWlsdXJlIDUwMCB7c3RyaW5nfSBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIKLy8gYWRpcGlzY2luZyBlbGl0LiBOdWxsYW0gcmhvbmN1cyBtYWduYSBudW5jLCBpbiBmYXVjaWJ1cyBtZXR1cwovLyBwdWx2aW5hciBldC4gTWF1cmlzIHBlbGxlbnRlc3F1ZSBlbmltIGp1c3RvLgpgYGAKCiMjIEFycmF5IFJlZmVyZW5jZXMKVXNlICoqW10qKiBhbm5vdGF0aW9uIGluIGZyb20gb2YgdGhlIHJlZmVyZW5jZS4KYGBgZ28KLy8gQGJvZHkgW11yZXF1ZXN0LlBlcnNvbgoKLy8gQHN1Y2Nlc3MgMjAwIHtvYmplY3R9IFtdcmVzcG9uc2UuUGVyc29uIE9LCmBgYAoKIyMgQW5kIEVuZHBvaW50IFdpdGggTWFueSBEZWNyYWxhcmlvbnMKQW4gZW5kcG9pbnQsIHdpdGggdGhlIHNhbWUgVVJMIGNvdWxkIGJlIGRlY2xhcmVkIHNlcGFyYXRlbHkgd2l0aCBkaWZmZXJlbnQgbWV0aG9kcywgYW5kIHRoZSBnZW5lcmF0b3Igd2lsbCBwcm9wZXJseSBncm91cCB0aGVtLgojIyMgRXhhbXBsZQpgYGBnbwovLyBAc3VtbWFyeSBHZXQgVXNlcgovLyBAcGFyYW0gaWQgcGF0aCB7aW50fSB0cnVlIFVzZXIgSUQKLy8gQHByb2R1Y2UgdGV4dAovLyBAc3VjY2VzcyAyMDAge3N0cmluZ30gT0sKLy8gQHJvdXRlciAvdXNlci97aWR9IFtwb3N0XQoKLy8gLi4uCgovLyBAc3VtbWFyeSBEZWxldGUgVXNlcgovLyBAcGFyYW0gaWQgcGF0aCB7aW50fSB0cnVlIFVzZXIgSUQKLy8gQHByb2R1Y2UgdGV4dAovLyBAc3VjY2VzcyAyMDAge3N0cmluZ30gT0sKLy8gQHJvdXRlciAvdXNlci97aWR9IFtkZWxldGVdCmBgYAp3aWxsIHByb2R1Y2UKYGBgeWFtbAovdXNlci97aWR9OgogIGdldDoKICAgIHN1bW1hcnk6IEdldCBVc2VyCiAgICBwYXJhbWV0ZXJzOgogICAgLSBuYW1lOiBpZAogICAgICBkZXNjcmlwdGlvbjogVXNlciBJRAogICAgICBpbjogcGF0aAogICAgICByZXF1aXJlZDogdHJ1ZQogICAgICBzY2hlbWE6CiAgICAgICAgdHlwZTogaW50ZWdlcgogICAgcmVzcG9uc2VzOgogICAgICAiMjAwIjoKICAgICAgICBkZXNjcmlwdGlvbjogT0sKICAgICAgICBjb250ZW50OgogICAgICAgICAgcGxhaW4vdGV4dDoKICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogIGRlbGV0ZToKICAgIHN1bW1hcnk6IERlbGV0ZSBVc2VyCiAgICBwYXJhbWV0ZXJzOgogICAgLSBuYW1lOiBpZAogICAgICBkZXNjcmlwdGlvbjogVXNlciBJRAogICAgICBpbjogcGF0aAogICAgICByZXF1aXJlZDogdHJ1ZQogICAgICBzY2hlbWE6CiAgICAgICAgdHlwZTogaW50ZWdlcgogICAgcmVzcG9uc2VzOgogICAgICAiMjAwIjoKICAgICAgICBkZXNjcmlwdGlvbjogT0sKICAgICAgICBjb250ZW50OgogICAgICAgICAgcGxhaW4vdGV4dDoKICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwpgYGAKCiMgQVBJRG9jIENMSQpSdW4gdGhlIGBhcGlkb2MgLWhgIHRvIGFsbCBmbGFncyBhbmQgY29tbWFuZHM6CmBgYGNvbnNvbGUKQVBJIERvY3VtZW50YXRpb24gR2VuZXJhdG9yCgpVc2FnZToKICAgW2ZsYWdzXQogICBbY29tbWFuZF0KCkF2YWlsYWJsZSBDb21tYW5kczoKICBoZWxwICAgICAgICBIZWxwIGFib3V0IGFueSBjb21tYW5kCiAgdmVyc2lvbiAgICAgU2hvdyB0aGUgQVBJRG9jIHZlcnNpb24KCkZsYWdzOgogIC1lLCAtLWVuZHBvaW50cyBzdHJpbmcgICBSb290IGVuZHBvaW50cyBmb2xkZXIgKGRlZmF1bHQgIi4vIikKICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgSGVscCBmb3IgdGhpcyBjb21tYW5kCiAgLW0sIC0tbWFpbiBzdHJpbmcgICAgICAgIE1haW4gQVBJIGRvY3VtZW50YXRpb24gZmlsZSAoZGVmYXVsdCAibWFpbi5nbyIpCiAgLW8sIC0tb3V0cHV0IHN0cmluZyAgICAgIERvY3VtZW50YXRpb24gb3V0cHV0IGZvbGRlciAoZGVmYXVsdCAiZG9jcy9hcGkiKQogIC12LCAtLXZlcmJvc2UgICAgICAgICAgICBTaG93IGdlbmVyYXRpb24gd2FybmluZ3MKClVzZSAiIFtjb21tYW5kXSAtLWhlbHAiIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4KYGBgCgojIEFib3V0IHRoZSBQcm9qZWN0ClRoaXMgcHJvamVjdCB3YXMgaW5zcGlyZWQgYnkgW3N3YWdnby9zd2FnXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dvL3N3YWcvKSwgZGVzaWduZWQgbWFpbmx5IHRvIGhhbmRsZSBvdXIgQVBJIGRvY3VtZW50YXRpb24gbmVlZHMsIGkuZS4gYWRkIHN1cHBvcnQgZm9yIHJlc3BvbnNlIHdyYXBwZXJzLCBnZW5lcmF0ZSBPcGVuQVBJIHYzLlggZG9jdW1lbnRhdGlvbi4gQW55IGZlZWRiYWNrLCBjb250cmlidXRpb24gdG8gdGhpcyBwcm9qZWN0IGlzIHdlbGNvbWVkLgoKVGhlIHByb2plY3QgaXMgaW4gYSBiZXRhIHBoYXNlLCB0aGVyZWZvcmUgdGhlcmUgbWlnaHQgYmUgbWFqb3IgY2hhbmdlcyBpbiBuZWFyIGZ1dHVyZSwgdGhlIGFubm90YXRpb24gc2hvdWxkIHN0YXkgdGhlIHNhbWUsIHRob3VnaC4KCiMgQ29udHJpYnV0aW5nCldoZW4gY29udHJpYnV0aW5nIHRvIHRoaXMgcmVwb3NpdG9yeSwgcGxlYXNlIGZpcnN0IGRpc2N1c3MgdGhlIGNoYW5nZSB5b3Ugd2lzaCB0byBtYWtlIHZpYSBpc3N1ZSwgZW1haWwsIG9yIGFueSBvdGhlciBtZXRob2Qgd2l0aCB0aGUgb3duZXJzIG9mIHRoaXMgcmVwb3NpdG9yeSBiZWZvcmUgbWFraW5nIGEgY2hhbmdlLiAKCiMjIFB1bGwgUmVxdWVzdCBQcm9jZXNzCjEuIEZvcmsgaXQKMi4gQ3JlYXRlIHlvdXIgZmVhdHVyZSBicmFuY2ggKGBnaXQgY2hlY2tvdXQgLWIgZnQvbmV3LWZlYXR1cmUtbmFtZWApCjMuIENvbW1pdCB5b3VyIGNoYW5nZXMgKGBnaXQgY29tbWl0IC1hbSAnQWRkIHNvbWUgZmVhdHVyZSdgKQo0LiBQdXNoIHRvIHRoZSBicmFuY2ggKGBnaXQgcHVzaCBvcmlnaW4gZnQvbmV3LWZlYXR1cmUtbmFtZWApCjUuIENyZWF0ZSBuZXcgUHVsbCBSZXF1ZXN0Cgo+IFBsZWFzZSBtYWtlIGFuIGlzc3VlIGZpcnN0IGlmIHRoZSBjaGFuZ2UgaXMgbGlrZWx5IHRvIGluY3JlYXNlLgoKIyBMaWNlbnNlCkFQSURvYyBpcyByZWxlYXNlZCB1bmRlciB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlLiBTZWUgW0xJQ0VOU0UudHh0XShodHRwczovL2dpdGh1Yi5jb20vc3BhY2Vhdm9jYWRvL2FwaWRvYy9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dCkKCg== readmeEtag: '"407860f005d432f04e671a9e1ddb89f05aa66be2"' readmeLastModified: Wed, 13 Mar 2019 21:55:10 GMT repositoryId: 168361295 description: >- Generate RESTful API documentation from GO source files into the OpenAPI v3.0.2 specification (formal Swagger 2.0 Specification). created: '2019-01-30T15:00:04Z' updated: '2023-10-13T20:53:04Z' language: Go archived: false stars: 17 watchers: 2 forks: 5 owner: spaceavocado logo: https://avatars.githubusercontent.com/u/47183501?v=4 license: Apache-2.0 repoEtag: '"3ef215bc75cc39a9969043252cad25d37021c12086b6ed8558d9fe559f015430"' repoLastModified: Fri, 13 Oct 2023 20:53:04 GMT foundInMaster: true category: Parsers id: 5dcebefc091c51707c14ac3e9f3253e5 - source: openapi3 tags repository: https://github.com/go-courier/oas v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNwZWMgQnVpbGRlcgoKWyFbR29Eb2MgV2lkZ2V0XShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dvLWNvdXJpZXIvb2FzP3N0YXR1cy5zdmcpXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dvLWNvdXJpZXIvb2FzKQpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9nby1jb3VyaWVyL29hcy5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9nby1jb3VyaWVyL29hcykKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2dvLWNvdXJpZXIvb2FzL2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2dvLWNvdXJpZXIvb2FzKQpbIVtHbyBSZXBvcnQgQ2FyZF0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vZ28tY291cmllci9vYXMpXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vZ28tY291cmllci9vYXMpCgoKW09wZW5BUEkgU3BlY10oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24pIDMuMC4zIGJ1aWxkZXIgZm9yIEdvbGFuZwoKIyMgVXNhZ2UKCmBgYGJhc2gKZ28gZ2V0IGdpdGh1Yi5jb20vZ28tY291cmllci9vYXMKYGBgCgo= readmeEtag: '"cad75c7f933591c657627a9abae8032d1d4fb8f3"' readmeLastModified: Wed, 24 Feb 2021 03:01:47 GMT repositoryId: 116089474 description: OpenAPI Spec builder in go created: '2018-01-03T04:01:46Z' updated: '2023-10-26T06:26:25Z' language: Go archived: false stars: 17 watchers: 4 forks: 3 owner: go-courier logo: https://avatars.githubusercontent.com/u/37426719?v=4 license: MIT repoEtag: '"b4e0e89e3b5e46ef080647421cb6cb12fff772bab9ee6da6cdaa80362df705d3"' repoLastModified: Thu, 26 Oct 2023 06:26:25 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: e6691a9306efe4c41d1db1f42c020391 - source: openapi3 tags repository: https://github.com/stefanbratanov/sofia-supermarkets-api v3: true repositoryMetadata: base64Readme: >- IyBzb2ZpYS1zdXBlcm1hcmtldHMtYXBpCgpbIVtidWlsZF0oaHR0cHM6Ly9naXRodWIuY29tL1N0ZWZhbkJyYXRhbm92L3NvZmlhLXN1cGVybWFya2V0cy1hcGkvYWN0aW9ucy93b3JrZmxvd3MvYnVpbGQueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9TdGVmYW5CcmF0YW5vdi9zb2ZpYS1zdXBlcm1hcmtldHMtYXBpL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbCkKWyFbUXVhbGl0eSBHYXRlIFN0YXR1c10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9U3RlZmFuQnJhdGFub3Zfc29maWEtc3VwZXJtYXJrZXRzLWFwaSZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9U3RlZmFuQnJhdGFub3Zfc29maWEtc3VwZXJtYXJrZXRzLWFwaSkKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL1N0ZWZhbkJyYXRhbm92L3NvZmlhLXN1cGVybWFya2V0cy1hcGkvYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmc/dG9rZW49M1YzVEhJWTZBWCldKGh0dHBzOi8vY29kZWNvdi5pby9naC9TdGVmYW5CcmF0YW5vdi9zb2ZpYS1zdXBlcm1hcmtldHMtYXBpKQoKQVBJINC30LAg0LjQt9Cy0LvQuNGH0LDQvdC1INC90LAg0LjQvdGE0L7RgNC80LDRhtC40Y8g0LfQsCDQv9GA0L7QtNGD0LrRgtC4INC+0YIg0YHRg9C/0LXRgNC80LDRgNC60LXRgtC4INCyINCh0L7RhNC40Y8uCgpbIVtTd2FnZ2VyIFVJXShodHRwczovL3ZhbGlkYXRvci5zd2FnZ2VyLmlvL3ZhbGlkYXRvcj91cmw9aHR0cHM6Ly9hcGkubmFvZmVydGEubmV0L3YzL2FwaS1kb2NzKV0oaHR0cHM6Ly9hcGkubmFvZmVydGEubmV0L3N3YWdnZXItdWkuaHRtbCkKCiMjINCh0LDQudGC0L7QstC1LCDQuNC30L/QvtC70LfQstCw0YnQuCDRgtC+0LLQsCBBUEkKCi0gW9CQ0LvQutC+0YXQvtC7INC90LAg0L7RhNC10YDRgtCwXShodHRwczovL25hb2ZlcnRhLm5ldC8pCgojIyDQn9C+0LTQtNGK0YDQttCw0L3QuCDRgdGD0L/QtdGA0LzQsNGA0LrQtdGC0LgKCi0gW3hdIEJpbGxhCgo+INCf0L7Qu9GD0YfQsNCy0LAg0LjQvdGE0L7RgNC80LDRhtC40Y8g0LfQsCDQv9GA0L7QtNGD0LrRgtC40YLQtSDQvtGCIGh0dHBzOi8vc3NiYmlsbGEuc2l0ZS8uINCY0LfQvtCx0YDQsNC20LXQvdC40Y/RgtCwINGB0LUg0LjQt9Cy0LvQuNGH0LDRgiDQstGK0Lcg0L7RgdC90L7QstCwCj4g0L3QsAo+INC/0YrRgNCy0LjRjyDRgNC10LfRg9C70YLQsNGCINCyINGC0YrRgNGB0LXQvdC10YLQviDQvdCwINC40LfQvtCx0YDQsNC20LXQvdC40Y8g0LIgR29vZ2xlCgotIFt4XSBGYW50YXN0aWNvCgo+INCY0LfRgtC10LPQu9GPIFBERiDQsdGA0L7RiNGD0YDQuNGC0LUg0L7RgiBodHRwczovL3d3dy5mYW50YXN0aWNvLmJnL3NwZWNpYWwtb2ZmZXJzINC4INCw0L3QsNC70LjQt9C40YDQsCDQuNC90YTQvtGA0LzQsNGG0LjRj9GC0LAg0LfQsAo+INC/0YDQvtC00YPQutGC0LjRgtC1INCyINGC0Y/RhS4g0JjQt9C+0LHRgNCw0LbQtdC90LjRj9GC0LAg0YHQtSDQuNC30LLQu9C40YfQsNGCINCy0YrQtyDQvtGB0L3QvtCy0LAg0L3QsCDQv9GK0YDQstC40Y8g0YDQtdC30YPQu9GC0LDRgiDQsiDRgtGK0YDRgdC10L3QtdGC0L4g0L3QsAo+INC40LfQvtCx0YDQsNC20LXQvdC40Y8KPiDQsiBHb29nbGUuCgotIFt4XSBLYXVmbGFuZAoKPiDQn9C+0LvRg9GH0LDQstCwINC40L3RhNC+0YDQvNCw0YbQuNGPINC30LAg0L/RgNC+0LTRg9C60YLQuNGC0LUg0L7RgiBodHRwczovL3d3dy5rYXVmbGFuZC5iZy8uCgotIFt4XSBMaWRsCgo+INCf0L7Qu9GD0YfQsNCy0LAg0LjQvdGE0L7RgNC80LDRhtC40Y8g0LfQsCDQv9GA0L7QtNGD0LrRgtC40YLQtSDQvtGCIGh0dHBzOi8vd3d3LmxpZGwuYmcvLgoKLSBbeF0gVC1NYXJrZXQKCj4g0J/QvtC70YPRh9Cw0LLQsCDQuNC90YTQvtGA0LzQsNGG0LjRjyDQt9CwINC/0YDQvtC00YPQutGC0LjRgtC1INC+0YIgaHR0cHM6Ly90bWFya2V0b25saW5lLmJnLy4KCi0gWyBdIE1FVFJPCi0gWyBdIEthbSBNYXJrZXQKLSBbIF0gQ0JBCi0gWyBdIFByb01hcmtldAotIFsgXSBIaXQgTWF4CgojIyBUZWNoIFN0YWNrCgoqIEtvdGxpbgoqIEdyYWRsZQoqIFNwcmluZyBCb290CgojIyBDb2RlIFN0eWxlCgpLb3RsaW4gY29kZSBjb252ZW50aW9ucywgYmFzZWQgb24gW2t0Zm10XShodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2sva3RmbXQpCmFuZCBbZ29vZ2xlLWphdmEtZm9ybWF0XShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZS1qYXZhLWZvcm1hdCkgYXJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LiBUbwpyZWZvcm1hdCBjb2RlLCBydW46CgpgYGAKLi9ncmFkbGV3IHNwb3RsZXNzQXBwbHkKYGBgCgojIyBSdW5uaW5nIExvY2FsbHkKCkluc3RhbGwgSkRLIDE3IG9yIGFib3ZlIGZyb20gW2hlcmVdKGh0dHBzOi8vamRrLmphdmEubmV0LykuCgoqICoqVW5peCoqCgpgYGAKLi9ncmFkbGV3IGJvb3RSdW4KYGBgCgoqICoqV2luZG93cyoqCgpgYGAKZ3JhZGxldy5iYXQgYm9vdFJ1bgpgYGAKClRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIG5lZWQgdG8gYmUgc2V0IHByaW9yIHRvIHJ1bm5pbmc6CgoqIERCX1VSTAoqIERCX1VTRVJOQU1FCiogREJfUEFTU1dPUkQKKiBHT09HTEVfQVBJX0tFWQoqIENMT1VESU5BUllfQVBJX1NFQ1JFVAoKTmF2aWdhdGUgdG8gPGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9zd2FnZ2VyLXVpLmh0bWw+IHRvIGNoZWNrIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBhbmQKdGVzdCB0aGUgZW5kcG9pbnRzLgoKIVtBUEkgRG9jdW1lbnRhdGlvbl0oaW1hZ2VzL3N3YWdnZXItdWkucG5nKQo= readmeEtag: '"008584ea68aebd1b1f7673db8853862c70c939a5"' readmeLastModified: Thu, 01 Aug 2024 20:36:54 GMT repositoryId: 346132785 description: API за извличане на информация за продукти от супермаркети в София created: '2021-03-09T20:16:47Z' updated: '2026-01-22T07:32:56Z' language: Kotlin archived: false stars: 24 watchers: 2 forks: 7 owner: StefanBratanov logo: https://avatars.githubusercontent.com/u/14827647?v=4 license: Apache-2.0 repoEtag: '"88df90a2419a2b94bdb5e46af695f3d907af7c7cd419ec83356d7b982bf8a30f"' repoLastModified: Thu, 22 Jan 2026 07:32:56 GMT foundInMaster: true category: SDK id: 04dc35e7b9c33ef61294aaf0e176d771 - source: openapi3 tags repository: https://github.com/serafin-labs/serafin v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+PGltZyBzcmM9Imh0dHBzOi8vc2VyYWZpbi1sYWJzLmdpdGh1Yi5pby9pbWFnZXMvbG9nby1zZXJhZmluLXdpdGgtdGV4dC0xMDgwLnBuZyIgd2lkdGg9IjMwMCIvPjwvcD4KCioqU2VyYWZpbioqIGlzIGFuICpBUEkgZnJhbWV3b3JrKiBkZXNpZ25lZCB0byBxdWlja2x5IHNldCB1cCBhIHJvYnVzdCAqKnNlbGYtZGVzY3JpcHRpdmUgUkVTVCBBUEkqKiB3cml0dGVuIGluICpub2RlSlMvVHlwZXNjcmlwdCouCgpJdCBpcyBiYXNlZCBvbiAqKk9wZW4gQVBJIDMqKiwgKipKU09OIFNjaGVtYSoqIGFuZCAqKkdyYXBoUUwqKiBzdGFuZGFyZHMuCgpbIVtHcmVlbmtlZXBlciBiYWRnZV0oaHR0cHM6Ly9iYWRnZXMuZ3JlZW5rZWVwZXIuaW8vc2VyYWZpbi1sYWJzL3NlcmFmaW4uc3ZnKV0oaHR0cHM6Ly9ncmVlbmtlZXBlci5pby8pClshW0RlcGVuZGVuY2llc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kYXZpZC9zZXJhZmluLWxhYnMvc2VyYWZpbi5zdmcpXShodHRwczovL2RhdmlkLWRtLm9yZy9zZXJhZmluLWxhYnMvc2VyYWZpbikKWyFbTWFpbnRhaW5hYmlsaXR5XShodHRwczovL2FwaS5jb2RlY2xpbWF0ZS5jb20vdjEvYmFkZ2VzL2JlYmExNjFhZTBlNWY0ZjY5Yzc5L21haW50YWluYWJpbGl0eSldKGh0dHBzOi8vY29kZWNsaW1hdGUuY29tL2dpdGh1Yi9zZXJhZmluLWxhYnMvc2VyYWZpbi9tYWludGFpbmFiaWxpdHkpClshW1Rlc3QgQ292ZXJhZ2VdKGh0dHBzOi8vYXBpLmNvZGVjbGltYXRlLmNvbS92MS9iYWRnZXMvYmViYTE2MWFlMGU1ZjRmNjljNzkvdGVzdF9jb3ZlcmFnZSldKGh0dHBzOi8vY29kZWNsaW1hdGUuY29tL2dpdGh1Yi9zZXJhZmluLWxhYnMvc2VyYWZpbi90ZXN0X2NvdmVyYWdlKQoKIyMgSW5zdGFsbGF0aW9uClRoZXJlJ3Mgbm8gbnBtIHBhY2thZ2UgeWV0ISBXZSBhcmUgY2xvc2UgdG8gdGhlIGFscGhhIHJlbGVhc2UgYW5kIHdlIHdpbGwgcHJvZHVjZSBwYWNrYWdlcyBmb3IgdGhpcyB2ZXJzaW9uLgpJZiB5b3Ugd2FudCB0byB0ZXN0ICoqc2VyYWZpbioqIHlvdSBjYW4gY2xvbmUgdGhlIHJlcG8gYW5kIHJ1biBpdCBsb2NhbGx5IG9yIHlvdSBjYW4gaW5jbHVkZSBhIGRpcmVjdCBnaXQgcmVmZXJlbmNlIHRvIHlvdXIgYGBgcGFja2FnZS5qc29uYGBgIDoKCmBgYGpzb24KIkBzZXJhZmluL2FwaSI6ICJnaXQrc3NoOi8vZ2l0QGdpdGh1Yi5jb20vc2VyYWZpbi1mcmFtZXdvcmsvc2VyYWZpbi5naXQiCmBgYAoKIyMgQ29uY2VwdHMKCklmIHlvdSB3YW50IHRvIGtub3cgbW9yZSBhYm91dCBTZXJhZmluIGNvbmNlcHRzIGFuZCBmZWF0dXJlcywgZ28gdG8gb3VyIFtvdmVydmlldyBkb2N1bWVudF0oLi9taXNjL2RvYy9PVkVSVklFVy5tZCkKCiMjIEdldHRpbmcgc3RhcnRlZAoKSWYgeW91IGp1c3Qgd2FudCB0byBnZXQgc3RhcnRlZCBhbmQgd3JpdGUgc29tZSBjb2RlLCBnbyB0byBvdXIgW3dhbGt0aHJvdWdoIGRvY3VtZW50XSguL21pc2MvZG9jL1dBTEtUSFJPVUdILm1kKQoKIyMgV2hhdCBkb2VzIGl0IGxvb2sgbGlrZSA/CgpBIHZlcnkgc2ltcGxlIGV4YW1wbGUgbG9va3MgbGlrZSB0aGF0IDoKCmBgYHR5cGVzY3JpcHQKaW1wb3J0ICogYXMgZXhwcmVzcyBmcm9tICdleHByZXNzJzsKaW1wb3J0ICogYXMgYm9keVBhcnNlciBmcm9tICdib2R5LXBhcnNlcic7CmltcG9ydCB7IFNjaGVtYUJ1aWxkZXIgfSBmcm9tICdAc2VyYWZpbi9zY2hlbWEtYnVpbGRlcic7CmltcG9ydCB7IEFwaSwgUGlwZWxpbmVTb3VyY2VJbk1lbW9yeSwgUmVzdFRyYW5zcG9ydCB9IGZyb20gJ0BzZXJhZmluL2FwaSc7CgovLyBleHByZXNzIGluaXRpYWxpemF0aW9uCmxldCBhcHAgPSBleHByZXNzKCk7CmFwcC51c2UoYm9keVBhcnNlci5qc29uKCkpOwoKLy8gRGVjbGFyZSBvdXIgQXBpIHdpdGggaXRzIGdlbmVyYWwgaW5mb3JtYXRpb24KbGV0IGFwaSA9IG5ldyBBcGkoYXBwLCB7CiAgICAib3BlbmFwaSI6ICIzLjAuMCIsCiAgICAiaW5mbyI6IHsKICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgICAgICAgInRpdGxlIjogIkFuIEFQSSIKICAgIH0sCiAgICBwYXRoczoge30KfSk7CmFwaS5jb25maWd1cmUobmV3IFJlc3RUcmFuc3BvcnQoKSk7CgovLyBEZWNsYXJlIGEgU2NoZW1hIGZvciBvdXIgImVudGl0eSIKbGV0IGFNb2RlbFNjaGVtYSA9IFNjaGVtYUJ1aWxkZXIuZW1wdHlTY2hlbWEoKS5hZGRTdHJpbmcoImlkIikuYWRkU3RyaW5nKCJkYXRhIik7CgovLyBEZWZpbmUgdGhlIHBpcGVsaW5lLCBpdCBzdG9yZXMgZGF0YSBpbnRvIG1lbW9yeSBkaXJlY3RseQpsZXQgYVBpcGVsaW5lID0gKG5ldyBQaXBlbGluZVNvdXJjZUluTWVtb3J5KGFNb2RlbFNjaGVtYSkpCiAgLy8ucGlwZSguLi4pIC8vIEFkZCBhIHBpcGVsaW5lIHRvIGV4dGVuZCB0aGUgYmVoYXZpb3IKCi8vIFVzZSB0aGUgcGlwZWxpbmUgaW4gdGhlIGFwaS4gSXQgd2lsbCBhZGQgYWxsIHRoZSByb3V0ZXMgYW5kIGNvbXB1dGUgT3BlbiBBcGkgc3BlYwphcGkudXNlKGFQaXBlbGluZSwgIm1vZGVsIik7CgovLyBTdGFydCB0aGUgc2VydmVyCmFwcC5saXN0ZW4ocHJvY2Vzcy5lbnYuUE9SVCB8fCA4MCk7CmBgYAoKV2l0aCB0aGlzIGJhc2ljIGV4YW1wbGUgeW91IG5vdyBoYXZlIHRoZSBmb2xsb3dpbmcgZW5kcG9pbnRzOgoKLSBHRVQgL2FwaS5qc29uIHdoaWNoIGNvbnRhaW5zIE9wZW4gQXBpIHNwZWMgZm9yIHRoaXMgQVBJCi0gR0VUIC9tb2RlbHMKLSBQT1NUIC9tb2RlbHMKLSBHRVQgL21vZGVscy86aWQKLSBQVVQgL21vZGVscy86aWQKLSBQQVRDSCAvbW9kZWxzLzppZAotIERFTEVURSAvbW9kZWxzLzppZAoKVGhlIGltcG9ydGFudCBwb2ludCBpcyB0aGF0IHRoZSAqKkFwaSoqIHJlYWN0IHRvIHRoZSAqKnBpcGVsaW5lKiogYmVoYXZpb3VyLiBXaGVuIHlvdSBkZWZpbmUgbmV3IGNvbnN0cmFpbnRzIG9uIHlvdXIgKipzY2hlbWEqKiBvciBuZXcgb3B0aW9ucyBpbiBhICoqcGlwZWxpbmUqKiwgdGhlICoqQXBpKiogd2lsbCByZWFjdCBhY2NvcmRpbmdseS4KCklmIHlvdSB3YW50IHRvIHNlZSBtb3JlIGNvbXBsZXggZXhhbXBsZXMsIHRha2UgYSBsb29rIGF0IHRoZSBgYGBzcmMvZXhhbXBsZWBgYCBmb2xkZXIuCgoKIyMgQ29udHJpYnV0aW5nCgpUaGUgcHJvamVjdCBpbnRlcmVzdHMgeW91ID8gUmVhZCBvdXIgW2NvbnRyaWJ1dGVyIGd1aWRlXSguL0NPTlRSSUJVVElORy5tZCkgc28geW91IGNhbiBnZXQgaW52b2x2ZWQuCgoKCgoKCg== readmeEtag: '"a63119ec4a801e2768bbe1efa68063d92b3eb7cf"' readmeLastModified: Thu, 09 May 2019 22:34:30 GMT repositoryId: 109129356 description: An API framework in Typescript/Node.js with OpenApi 3 & GraphQL created: '2017-11-01T12:35:17Z' updated: '2024-11-15T11:01:48Z' language: TypeScript archived: false stars: 17 watchers: 3 forks: 0 owner: serafin-labs logo: https://avatars.githubusercontent.com/u/33131861?v=4 license: MIT repoEtag: '"d9b04ddf97b11de385b58366e761eb7d0ec7ff8942b0c7d72eebe94a0c0e4691"' repoLastModified: Fri, 15 Nov 2024 11:01:48 GMT foundInMaster: true category: - Server - Parsers id: ab96ee28815dc64b9a94c061ff5169f1 - source: openapi3 tags repository: https://github.com/louis-lau/duckyapi v3: true repositoryMetadata: base64Readme: >- X19OT1RFOl9fIFRoaXMgcHJvamVjdCBpcyBzdGlsbCBhIHdvcmsgaW4gcHJvZ3Jlc3MuIFlvdSBjYW4gYWxyZWFkeSBjaGVjayBpdCBvdXQgaWYgeW91J3JlIGN1cmlvdXMuIFRoZSBBUEkgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgoKIyBEdWNreUFQSQoKQVBJIHRoYXQgaW50ZXJhY3RzIHdpdGggdGhlIFtXaWxkRHVja10oaHR0cHM6Ly9naXRodWIuY29tL25vZGVtYWlsZXIvd2lsZGR1Y2spIEFQSS4gTW9zdGx5IGJ1aWx0IGFzIGEgYmFja2VuZCB0byBbRHVja3lQYW5lbF0oaHR0cHM6Ly9naXRodWIuY29tL2xvdWlzLWxhdS9EdWNreVBhbmVsKS4KCgohW1dlIG5lZWQgdG8gZ28gZGVlcGVyXShkb2NzL2ltYWdlcy9kZWVwZXIuanBnKQoKIyMgV2h5PwpJbiBXaWxkRHVjayBhIHVzZXIgaXMgYSBzaW5nbGUgRW1haWwgQWNjb3VudCwgdXNpbmcgdGhlIGFwaSBhcyBhbiBlbmQtdXNlciB5b3UgY2FuIGFkZCBhZGRyZXNzIGFsaWFzZXMgdG8gdGhhdCBpbmJveC4gWW91IGNhbiBub3QgYWRkIGV4dHJhIGVtYWlsIGFjY291bnRzIG9yIG1hbmFnZSBkb21haW4gbGV2ZWwgZnVuY3Rpb25hbGl0eSBsaWtlIERLSU0uIFRoZSBhaW0gb2YgRHVja3lBUEkgaXMgdG8gb2ZmZXIgYW4gZW5kLXVzZXIgQVBJIHRoYXQgYWxsb3dzIGNvbXBsZXRlIG1hbmFnZW1lbnQgb2YgZG9tYWlucyBhbmQgZW1haWwgYWNjb3VudHMgd2l0aGluIHRob3NlIGRvbWFpbnMuCgojIyBIb3c/CkR1Y2t5QVBJIHN0b3JlcyBpdHMgdXNlcnMgaW4gTW9uZ29EQiwgdGhpcyBjYW4gYmUgdGhlIHNhbWUgaW5zdGFuY2UgdGhhdCB5b3UncmUgYWxyZWFkeSB1c2luZyBmb3IgV2lsZER1Y2suIEVhY2ggdXNlciBvd25zIGEgbGlzdCBvZiBkb21haW5zLCBncmFudGluZyBwZXJtaXNzaW9uIHRvIG1hbmFnZSBka2ltIG9yIGFkZC9lZGl0IGVtYWlsIGFjY291bnRzIGFuZCBmb3J3YXJkZXJzIHVuZGVyIHRoYXQgZG9tYWluLiBFYWNoIHVzZXIgY2FuIGJlIGFzc2lnbmVkIGEgcGFja2FnZSwgY29udGFpbmluZyBxdW90YXMgYW5kIGxpbWl0cyBmb3IgdGhlIHVzZXIuIEN1cnJlbnRseSBub3RoaW5nIGhhcHBlbnMgd2hlbiBxdW90YSBpcyBleGNlZWRlZCwgdGhpcyBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuCgpMaWtlIFdpbGREdWNrLCB0aGlzIGFwcGxpY2F0aW9uIGRvZXMgbm90IGRlcGVuZCBvbiBtZW1vcnkgZm9yIGFueXRoaW5nLiBVc2VycyBldGMgYXJlIHN0b3JlZCBpbiBtb25nb2RiLCBxdWV1ZSBtYW5hZ2VtZW50IGlzIGRvbmUgaW4gcmVkaXMuIFRoaXMgYXBwbGljYXRpb24gaXMgc3RhdGVsZXNzLgoKIyMgRmVhdHVyZXMKU2VlIFtEdWNreVBhbmVsIGZlYXR1cmVzXShodHRwczovL2dpdGh1Yi5jb20vbG91aXMtbGF1L0R1Y2t5UGFuZWwvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI2N1cnJlbnQtZmVhdHVyZXMpLgoKIyMgRGVwZW5kZW5jaWVzCiogTm9kZS5qcwoqIE1vbmdvREIKKiBSZWRpcwoqIFdpbGREdWNrCgojIyBJbnN0YWxsYXRpb24KYGBgYmFzaAokIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vbG91aXMtbGF1L0R1Y2t5QVBJLmdpdAokIGNkIER1Y2t5QVBJCiQgbnBtIGluc3RhbGwKYGBgCgojIyBDb25maWd1cmF0aW9uCkNvcHkgYGNvbmZpZy9leGFtcGxlLmVudmAgdG8gYGNvbmZpZy9wcm9kdWN0aW9uLmVudmAgb3IgYGNvbmZpZy9kZXZlbG9wbWVudC5lbnZgIGRlcGVuZGluZyBvbiB5b3VyIGVudmlyb25tZW50LiBZb3UgbXVzdCBjaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBzdGFydC4gSWYgeW91J3ZlIG1pc2NvbmZpZ3VyZWQgc29tZXRoaW5nIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgdGVsbCB5b3Ugb24gc3RhcnQuCgojIyBVc2FnZQpgYGBiYXNoCiQgbnBtIHJ1biBjbGVhbgokIG5wbSBydW4gYnVpbGQKJCBucG0gc3RhcnQKCiMgQ3JlYXRlIHlvdXIgZmlyc3QgYWRtaW4gdXNlciwgYWRtaW4gdXNlcnMgYXJlCiMgb25seSBtZWFudCBmb3IgYWRkaW5nIGFuZCB1cGRhdGluZyB1c2Vycy9wYWNrYWdlcwokIG5vZGUgZGlzdC9jbGkgY3JlYXRlLWFkbWluIDx1c2VybmFtZT4KIyBDcmVhdGUgYW4gYXBpIGtleSBmb3IgeW91ciBhZG1pbiB1c2VyCiQgbm9kZSBkaXN0L2NsaSBjcmVhdGUtYXBpa2V5IDx1c2VybmFtZT4gPGtleU5hbWU+CgojIEFkZCBhIG5vcm1hbCB1c2VyIHVzaW5nIHRoZSBhcGksIGJlIHN1cmUgdG8gcmVwbGFjZQojIHRoZSBhY2Nlc3MgdG9rZW4gd2l0aCB0aGUgb25lIHlvdSBqdXN0IGdvdCBmcm9tIGNyZWF0ZS1hcGlrZXkKY3VybCAtWCBQT1NUICJodHRwOi8vbG9jYWxob3N0OjMwMDAvdXNlcnMiIFwKLUggIkF1dGhvcml6YXRpb246IEJlYXJlciBZT1VSLUFDQ0VTUy1UT0tFTi1IRVJFIiBcCi1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKLWQgJ3sidXNlcm5hbWUiOiJqb2huZG9lIiwgInBhc3N3b3JkIjoic3VwZXJzZWNyZXQifScKCiMgTm93IHVzZSB0aGUgbm9ybWFsIHVzZXIgdG8gbG9nIGluIHRvIER1Y2t5UGFuZWwsCiMgb3IgcmVxdWVzdCBhbiBhY2Nlc3MgdG9rZW4gZnJvbSB0aGUgL2F1dGhlbnRpY2F0aW9uIGVuZHBvaW50CmBgYArwn5GGIEluc3RlYWQgb2YgdXNpbmcgY3VybCB5b3UgY2FuIGFsc28gZXhlY3V0ZSB0aGlzIHJlcXVlc3QgZnJvbSBbbG9jYWxob3N0OjMwMDAvc3dhZ2dlcl0oaHR0cDovL2xvY2FsaG9zdDozMDAwL3N3YWdnZXIpCgojIyBBUEkgZG9jdW1lbnRhdGlvbgpBUEkgZG9jdW1lbnRhdGlvbiB3aXRoIGNvZGUgZXhhbXBsZXMgaXMgYXZhaWxhYmxlIG9uIFtsb3Vpcy1sYXUuZ2l0aHViLmlvL0R1Y2t5QVBJXShodHRwczovL2xvdWlzLWxhdS5naXRodWIuaW8vRHVja3lBUEkpLgoKWW91IGNhbiBhbHNvIHZpc2l0IFtsb2NhbGhvc3Q6MzAwMC9zd2FnZ2VyXShodHRwOi8vbG9jYWxob3N0OjMwMDAvc3dhZ2dlcikgdG8gdHJ5IHRoZSBhcGkgb3V0IGxpdmUgaW4geW91ciBicm93c2VyLiBNdWNoIG5pY2UgdGhhbiB1c2luZyBjdXJsIQoKIyMgSW50ZWdyYXRlZCBEdWNreVBhbmVsCkR1Y2t5QXBpIGNhbiBzZXJ2ZSBEdWNreVBhbmVsIG9uIGl0cyBpbnRlZ3JhdGVkIHNlcnZlci4gSnVzdCBvcGVuIHlvdXIgY29uZmlndXJhdGlvbiBhbmQgc2V0IGBTRVJWRV9EVUNLWVBBTkVMYCB0byBgdHJ1ZWAuIFRoZW4gc2V0IGEgY3VzdG9tIGBCQVNFX1VSTGAgZm9yIHRoZSBhcGksIGZvciBleGFtcGxlIGAvYXBpYC4KCkR1Y2t5cGFuZWwgd2lsbCBub3cgYmUgbGl2ZSBhdCBbbG9jYWxob3N0OjMwMDBdKGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMCksIGFuZCBEdWNreUFwaSBhdCBbbG9jYWxob3N0OjMwMDAvYXBpXShodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpKS4KCiMjIFRhc2sgcXVldWUKQW55IGNyZWF0ZWQgYmFja2dyb3VuZCB0YXNrcyBhbmQgdGhlaXIgcHJvZ3Jlc3MgY2FuIGJlIHZpZXdlZCBvbiBbbG9jYWxob3N0OjMwMDAvcXVldWVzXShodHRwOi8vbG9jYWxob3N0OjMwMDAvcXVldWVzKSB3aXRoIGJhc2ljYXV0aCBpZiB5b3UndmUgZW5hYmxlZCB0aGlzIGluIHRoZSBjb25maWd1cmF0aW9uLiBSZW1vdmluZyBhIGRvbWFpbiBvciBzdXNwZW5kaW5nIGEgdXNlciB3aWxsIHRyaWdnZXIgYSBiYWNrZ3JvdW5kIHRhc2sgdG8gZXhlY3V0ZSBtYXNzIGNoYW5nZXMu readmeEtag: '"1910d5ed1d3bd579279e36aa22d64567a8a46a4a"' readmeLastModified: Fri, 30 Apr 2021 14:53:40 GMT repositoryId: 197958401 description: Domain admin API on top of the WildDuck API. Back-end for DuckyPanel. created: '2019-07-20T16:55:26Z' updated: '2024-12-03T11:53:02Z' language: TypeScript archived: false stars: 17 watchers: 3 forks: 15 owner: louis-lau logo: https://avatars.githubusercontent.com/u/1346804?v=4 license: AGPL-3.0 repoEtag: '"cadcf6fd47126c040af260b89cfe32d220d8d9c3df0d5f1e48eafaae71ae819c"' repoLastModified: Tue, 03 Dec 2024 11:53:02 GMT foundInMaster: true category: Server Implementations id: d8f0bcb887ddf1e1f6c1bcb9d08314e5 - source: openapi3 tags repository: https://github.com/ben-jamin-chen/springboot-kafka-streams-rest-api v3: true id: 0c2d44cef1118bbebe90119d0b6e9879 repositoryMetadata: base64Readme: >- IyBTcHJpbmcgQm9vdCAoMi4zLjMpIFJFU1RmdWwgQVBJIHdpdGggS2Fma2EgU3RyZWFtcyAoMi42LjApCgpXaGlsZSBsb29raW5nIHRocm91Z2ggdGhlIEthZmthIFR1dG9yaWFscyB0byBzZWUgaG93IEkgY291bGQgc2V0dXAgYSBTcHJpbmcgQm9vdCBBUEkgcHJvamVjdCB3aXRoIEthZmthIFN0cmVhbXMsIEkgZm91bmQgaXQgc3RyYW5nZSB0aGF0IHRoZXJlIHdhc24ndCBhIGNvbXBsZXRlIG9yIG1vcmUgaW5mb3JtYXRpdmUgZXhhbXBsZSBvbiBob3cgdGhpcyBjb3VsZCBiZSBhY2hpZXZlZC4gTW9zdCB1c2UgY2FzZXMgZGVtb25zdHJhdGVkIGhvdyB0byBjb21wdXRlIGFnZ3JlZ2F0aW9ucyBhbmQgaG93IHRvIGJ1aWxkIHNpbXBsZSB0b3BvbG9naWVzLCBidXQgaXQgd2FzIGRpZmZpY3VsdCB0byBmaW5kIGEgY29uY3JldGUgZXhhbXBsZSBvbiBob3cgdG8gYnVpbGQgYW4gQVBJIHNlcnZpY2UgdGhhdCBjb3VsZCBxdWVyeSBpbnRvIHRoZXNlIG1hdGVyaWFsaXplZCBuYW1lIHN0b3Jlcy4gQW55d2F5cywgSSB0aG91Z2h0IEnigJlkIGNyZWF0ZSBteSBvd24gdXNpbmcgYSBtb3JlIHJlY2VudCB2ZXJzaW9uIG9mIFNwcmluZyBCb290IHdpdGggSmF2YSAxNC4KCiMjIFdoYXQgWW91IE5lZWQKCiogSmF2YSAxNAoqIE1hdmVuIDMuNi4wKwoqIERvY2tlciAxOSsKCiMjIEdldHRpbmcgU3RhcnRlZApXZSBuZWVkIHRvIGZpcnN0IGxhdW5jaCB0aGUgQ29uZmx1ZW50IHNlcnZpY2VzIChpLmUuIFNjaGVtYSBSZWdpc3RyeSwgQnJva2VyLCBab29LZWVwZXIpIGxvY2FsbHkgYnkgcnVubmluZyB0aGUgYGRvY2tlci1jb21wb3NlIHVwIC1kYCBDTEkgY29tbWFuZCB3aGVyZSB0aGUgW2RvY2tlci1jb21wb3NlLnltbF0oaHR0cHM6Ly9naXRodWIuY29tL2JjaGVuMDQvc3ByaW5nYm9vdC1rYWZrYS1zdHJlYW1zLXJlc3QtYXBpL2Jsb2IvbWFzdGVyL2RvY2tlci1jb21wb3NlLnltbCkgZmlsZSBpcy4gVHlwaWNhbGx5LCB5b3UgY2FuIGNyZWF0ZSBhIHN0YWNrIGZpbGUgKGluIHRoZSBmb3JtIG9mIGEgWUFNTCBmaWxlKSB0byBkZWZpbmUgeW91ciBhcHBsaWNhdGlvbnMuIFlvdSBjYW4gYWxzbyBydW4gYGRvY2tlci1jb21wb3NlIHBzYCB0byBjaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzdGFjay4gTm90aWNlLCB0aGUgZW5kcG9pbnRzIGZyb20gd2l0aGluIHRoZSBjb250YWluZXJzIG9uIHlvdXIgaG9zdCBtYWNoaW5lLgoKfCBOYW1lIHwgRnJvbSB3aXRoaW4gY29udGFpbmVycyB8IEZyb20gaG9zdCBtYWNoaW5lIHwKfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfAp8IEthZmthIEJyb2tlciB8IGJyb2tlcjo5MDkyIHwgbG9jYWxob3N0OjkwOTIgfAp8IFNjaGVtYSBSZWdpc3RyeSAgfCBodHRwOi8vc2NoZW1hLXJlZ2lzdHJ5OjgwODEgfCBodHRwOi8vbG9jYWxob3N0OjgwODEgfAp8IFpvb0tlZXBlciB8IHpvb2tlZXBlcjoyMTgxIHwgbG9jYWxob3N0OjIxODEgfAoKPiBOb3RlOiB5b3UgY2FuIHJ1biBgZG9ja2VyLWNvbXBvc2UgZG93bmAgdG8gc3RvcCBhbGwgc2VydmljZXMgYW5kIGNvbnRhaW5lcnMuCgpBcyBwYXJ0IG9mIHRoaXMgc2FtcGxlLCBJJ3ZlIHJldHJvZml0dGVkIHRoZSBhdmVyYWdlIGFnZ3JlZ2F0ZSBleGFtcGxlIGZyb20gW0NvbmZsdWVudCdzIEthZmthIFR1dG9yaWFsc10oaHR0cHM6Ly9rYWZrYS10dXRvcmlhbHMuY29uZmx1ZW50LmlvL2FnZ3JlZ2F0aW5nLWF2ZXJhZ2Uva3N0cmVhbXMuaHRtbCkgaW50byB0aGlzIHByb2plY3QuIFRoZSBBUEkgd2lsbCBjYWxjdWxhdGUgYW5kIHJldHVybiBhIHJ1bm5pbmcgYXZlcmFnZSByYXRpbmcgZm9yIGEgZ2l2ZW4gbW92aWUgaWRlbnRpZmllci4gVGhpcyBzaG91bGQgZGVtb25zdHJhdGUgaG93IHRvIGJ1aWxkIGEgYmFzaWMgQVBJIHNlcnZpY2Ugb24gdG9wIG9mIGFuIGFnZ3JlZ2F0aW9uIHJlc3VsdC4KCk5vdGljZSBpbiB0aGUgYH4vc3JjL21haW4vYXZyb2AgZGlyZWN0b3J5LCB3ZSBoYXZlIGFsbCBvdXIgQXZybyBzY2hlbWEgZmlsZXMgZm9yIHRoZSBzdHJlYW0gb2YgYHJhdGluZ3NgIGFuZCBgY291bnRzdW1gLiBGb3IgeW91ciBjb252ZW5pZW5jZSwgdGhlIGNsYXNzZXMgd2VyZSBhbHJlYWR5IGdlbmVyYXRlZCB1bmRlciB0aGUgYH4vc3JjL21haW4vamF2YS9pby9jb25mbHVlbnQvZGVtb2AgZGlyZWN0b3J5LCBidXQgZmVlbCBmcmVlIHRvIHRpbmtlciB3aXRoIHRoZW0gYW5kIHJlY29tcGlsZSB0aGUgc2NoZW1hcyBpZiBuZWVkZWQuIFRoZSBBdnJvIGNsYXNzZXMgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZ2VuZXJhdGVkIHVzaW5nIGBNYXZlbmAgb3IgYnkgbWFudWFsbHkgaW52b2tpbmcgdGhlIFtzY2hlbWEgY29tcGlsZXJdKGh0dHBzOi8vYXZyby5hcGFjaGUub3JnL2RvY3MvMS4xMC4wL2dldHRpbmdzdGFydGVkamF2YS5odG1sI0NvbXBpbGluZyt0aGUrc2NoZW1hKS4gCgpTbyBiZWZvcmUgYnVpbGRpbmcgYW5kIHJ1bm5pbmcgdGhlIHByb2plY3QsIG9wZW4gYSBuZXcgdGVybWluYWwgYW5kIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHRvIGdlbmVyYXRlIHlvdXIgaW5wdXQgYW5kIG91dHB1dCB0b3BpY3MuCgpgYGB6c2gKJCAgZG9ja2VyLWNvbXBvc2UgZXhlYyBicm9rZXIga2Fma2EtdG9waWNzIC0tY3JlYXRlIC0tYm9vdHN0cmFwLXNlcnZlciBcCiAgIGxvY2FsaG9zdDo5MDkyIC0tcmVwbGljYXRpb24tZmFjdG9yIDEgLS1wYXJ0aXRpb25zIDEgLS10b3BpYyByYXRpbmdzCgokICBkb2NrZXItY29tcG9zZSBleGVjIGJyb2tlciBrYWZrYS10b3BpY3MgLS1jcmVhdGUgLS1ib290c3RyYXAtc2VydmVyIFwKICAgbG9jYWxob3N0OjkwOTIgLS1yZXBsaWNhdGlvbi1mYWN0b3IgMSAtLXBhcnRpdGlvbnMgMSAtLXRvcGljIHJhdGluZy1hdmVyYWdlcwpgYGAKCk5leHQsIHdlIHdpbGwgbmVlZCB0byBwcm9kdWNlIHNvbWUgZGF0YSBvbnRvIHRoZSBpbnB1dCB0b3BpYy4KCmBgYHpzaAokICBkb2NrZXIgZXhlYyAtaSBzY2hlbWEtcmVnaXN0cnkgL3Vzci9iaW4va2Fma2EtYXZyby1jb25zb2xlLXByb2R1Y2VyIC0tdG9waWMgcmF0aW5ncyAtLWJyb2tlci1saXN0IGJyb2tlcjo5MDkyXAogICAgLS1wcm9wZXJ0eSAicGFyc2Uua2V5PWZhbHNlIlwKICAgIC0tcHJvcGVydHkgImtleS5zZXBhcmF0b3I9OiJcCiAgICAtLXByb3BlcnR5IHZhbHVlLnNjaGVtYT0iJCg8IHNyYy9tYWluL2F2cm8vcmF0aW5nLmF2c2MpIgogYGBgCiAKUGFzdGUgaW4gdGhlIGZvbGxvd2luZyBganNvbmAgZGF0YSB3aGVuIHByb21wdGVkIGFuZCBiZSBzdXJlIHRvIHByZXNzIGVudGVyIHR3aWNlIHRvIGFjdHVhbGx5IHN1Ym1pdCBpdC4KCmBgYGpzb24KeyJtb3ZpZV9pZCI6MzYyLCJyYXRpbmciOjEwfQp7Im1vdmllX2lkIjozNjIsInJhdGluZyI6OH0KIGBgYAoKT3B0aW9uYWxseSwgeW91IGNhbiBhbHNvIHNlZSB0aGUgY29uc3VtZXIgcmVzdWx0cyBvbiB0aGUgb3V0cHV0IHRvcGljIGJ5IHJ1bm5pbmcgdGhpcyBjb21tYW5kIG9uIGEgbmV3IHRlcm1pbmFsIHdpbmRvdzoKCmBgYHpzaAokICBkb2NrZXIgZXhlYyAtaXQgYnJva2VyIC91c3IvYmluL2thZmthLWNvbnNvbGUtY29uc3VtZXIgLS10b3BpYyByYXRpbmctYXZlcmFnZXMgLS1ib290c3RyYXAtc2VydmVyIGJyb2tlcjo5MDkyIFwKICAgIC0tcHJvcGVydHkgInByaW50LmtleT10cnVlIlwKICAgIC0tcHJvcGVydHkgImtleS5kZXNlcmlhbGl6ZXI9b3JnLmFwYWNoZS5rYWZrYS5jb21tb24uc2VyaWFsaXphdGlvbi5Mb25nRGVzZXJpYWxpemVyIiBcCiAgICAtLXByb3BlcnR5ICJ2YWx1ZS5kZXNlcmlhbGl6ZXI9b3JnLmFwYWNoZS5rYWZrYS5jb21tb24uc2VyaWFsaXphdGlvbi5Eb3VibGVEZXNlcmlhbGl6ZXIiIFwKICAgIC0tZnJvbS1iZWdpbm5pbmcKYGBgCgojIyBCdWlsZCBhbmQgUnVuIHRoZSBTYW1wbGUKCllvdSBjYW4gaW1wb3J0IHRoZSBjb2RlIHN0cmFpZ2h0IGludG8geW91ciBwcmVmZXJyZWQgSURFIG9yIHJ1biB0aGUgc2FtcGxlIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZCAoaW4gdGhlIHJvb3QgcHJvamVjdCBmb2xkZXIpLgoKYGBgenNoCiQgIG12biBzcHJpbmctYm9vdDpydW4KYGBgCkFmdGVyIHRoZSBhcHBsaWNhdGlvbiBydW5zLCBuYXZpZ2F0ZSB0byBbaHR0cDovL2xvY2FsaG9zdDo3MDAxL3N3YWdnZXItdWkvaW5kZXguaHRtbD9jb25maWdVcmw9L2FwaS1kb2NzL3N3YWdnZXItY29uZmlnXShodHRwOi8vbG9jYWxob3N0OjcwMDEvc3dhZ2dlci11aS9pbmRleC5odG1sP2NvbmZpZ1VybD0vYXBpLWRvY3Mvc3dhZ2dlci1jb25maWcpIGluIHlvdXIgd2ViIGJyb3dzZXIgdG8gYWNjZXNzIHRoZSBTd2FnZ2VyIFVJLiBJZiB5b3UgdXNlZCB0aGUgc2FtZSBzYW1wbGUgZGF0YSBmcm9tIGFib3ZlLCB5b3UgY2FuIGVudGVyIGAzNjJgIGFzIHRoZSBgbW92aWVJZGAgYW5kIGl0IHNob3VsZCByZXR1cm4gc29tZXRoaW5nIHNpbWlsYXIgbGlrZSB0aGlzIGJlbG93OgoKYGBganNvbgp7CiAgIm1vdmllSWQiOiAzNjIsCiAgInJhdGluZyI6IDkKfQpgYGAKCj4gTm90ZToga2VlcCBpbiBtaW5kIHRoZSB2YXJpb3VzIFtzdGF0ZXNdKGh0dHBzOi8va2Fma2EuYXBhY2hlLm9yZy8yNS9qYXZhZG9jL29yZy9hcGFjaGUva2Fma2Evc3RyZWFtcy9LYWZrYVN0cmVhbXMuU3RhdGUuaHRtbCkgb2YgdGhlIGNsaWVudC4gV2hlbiBhIEthZmthIFN0cmVhbXMgaW5zdGFuY2UgaXMgaW4gYFJVTk5JTkdgIHN0YXRlLCBpdCBhbGxvd3MgZm9yIGluc3BlY3Rpb24gb2YgdGhlIHN0cmVhbSdzIG1ldGFkYXRhIHVzaW5nIG1ldGhvZHMgbGlrZSBgcXVlcnlNZXRhZGF0YUZvcktleSgpYC4gV2hpbGUgaXQgaXMgaW4gYFJFQkFMQU5DSU5HYCBzdGF0ZSwgdGhlIFJFU1Qgc2VydmljZSBjYW5ub3QgaW1tZWRpYXRlbHkgYW5zd2VyIHJlcXVlc3RzIHVudGlsIHRoZSBzdGF0ZSBzdG9yZXMgYXJlIGZ1bGx5IHJlYnVpbHQuCgojIyBUcm91Ymxlc2hvb3RpbmcKCiogSW4gY2VydGFpbiBjb25kaXRpb25zLCB5b3UgbWF5IG5lZWQgdG8gZG8gYSBjb21wbGV0ZSBhcHBsaWNhdGlvbiByZXNldC4gWW91IGNhbiBkZWxldGUgdGhlIGFwcGxpY2F0aW9u4oCZcyBsb2NhbCBzdGF0ZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlIHdhcyBydW4uIEluIHRoaXMgcHJvamVjdCwgS2Fma2EgU3RyZWFtcyBwZXJzaXN0cyBsb2NhbCBzdGF0ZXMgdW5kZXIgdGhlIGB+L2RhdGFgIGZvbGRlci4K readmeEtag: '"8c67934d12533f0829b86012ce9b09bb6fc938d6"' readmeLastModified: Sat, 15 Aug 2020 18:19:50 GMT repositoryId: 281567320 description: >- A sample RESTful API with Kafka Streams (2.6.0) using Spring Boot (2.3.3) and Java 14. created: '2020-07-22T03:43:45Z' updated: '2024-09-08T15:02:38Z' language: Java archived: false stars: 16 watchers: 3 forks: 9 owner: ben-jamin-chen logo: https://avatars.githubusercontent.com/u/41641688?v=4 license: MIT repoEtag: '"4da566a4962d385eb3f39c6a05026390e501984be947d5130094ea7be27c573d"' repoLastModified: Sun, 08 Sep 2024 15:02:38 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/oai/projects v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIEluaXRpYXRpdmUgKE9BSSkgUHJvamVjdHMKVGhpcyBpcyBhIHJlcG8gZm9yIG1vdmluZyBmb3J3YXJkIGEgdmFyaWV0eSBvZiBwcm9qZWN0cyB3aXRoaW4gdGhlIE9wZW5BUEkgY29tbXVuaXR5LiBJbiBhbiBlZmZvcnQgdG8gYmUgbW9yZSB0cmFuc3BhcmVudCBhbmQgaGVscCBpbnZvbHZlIHRoZSBjb21tdW5pdHkgaW4gYSB2YXJpZXR5IG9mIHdheXMgd2Ugd2lsbCBiZSBtYW5hZ2luZyBtb3N0IHByb2plY3RzIHdpdGhpbiB0aGlzIHJlcG9zaXRvcnkuIFRoaXMgUkVBRE1FIHNob3VsZCBwcm92aWRlIHlvdSB3aXRoIGV2ZXJ5dGhpbmcgeW91IG5lZWQgdG8gZ2V0IHN0YXJ0ZWQgd29ya2luZyBvbiBhbiBleGlzdGluZyBwcm9qZWN0LCBvciBzdWdnZXN0IGEgbmV3IHByb2plY3QuCgojIyBIb3cgSXQgQWxsIFdvcmtzCldlIGFyZSBqdXN0IGdldHRpbmcgc3RhcnRlZCB3aXRoIHRoaXMgZWZmb3J0IHRvIGV4dGVybmFsIHByb2plY3Qgd29yaywgc28gdGhpcyBwcm9jZXNzIHdpbGwgZXZvbHZlLiBIZXJlIGFyZSB0aGUgbW92aW5nIHBhcnRzIGZvciBtYW5hZ2luZyBwcm9qZWN0cyB1c2luZyB0aGlzIHJlcG9zaXRvcnk6CgotICoqUkVBRE1FKiogLSBUaGUgUkVBRE1FIGlzIHRoZSAiaG9tZSBwYWdlIiBmb3IgYWxsIHRoZSBwcm9qZWN0IGJlaW5nIG1hbmFnZWQgYW5kIHdpbGwgYmUga2VwdCBhcyBhbiBvdmVydmlldyBvZiBldmVyeXRoaW5nIHRoYXQgaXMgaGFwcGVuaW5nLgotICoqSXNzdWVzKiogLSBXZSBhcmUgdXNpbmcgaXNzdWVzIGZvciB0aGUgY2F0Y2ggYWxsIGJhc2tldCBmb3IgYW55IGNvbW1lbnRzLCBxdWVzdGlvbnMsIG9yIGZlZWRiYWNrLCBhbmQgcHJvamVjdHMgY2FuIGhhdmUgbXVsdGlwbGUgaXNzdWVzLgotICoqUHJvamVjdHMqKiAtIE9uY2UgYW4gaWRlYSBvciBzdWdnZXN0aW9uIGZvciBhIG5ldyBwcm9qZWN0IGlzIHNldCBpbnRvIG1vdGlvbiBpdCB3aWxsIGJlIGdpdmVuIGEgZm9ybWFsIHByb2plY3QgZm9yIG1hbmFnaW5nIGFsbCB0YXNrcy4KLSAqKlBhZ2VzKiogLSBPbmdvaW5nIHByb2plY3RzIG1heSBhbHNvIGhhdmUgYSBkZWRpY2F0ZWQgbWFya2Rvd24gcGFnZSB0aGF0IHByb3ZpZGVzIGFjY2VzcyB0byBhbnkgcmVsYXRlZCBkb2N1bWVudHMgYW5kIGFydGlmYWN0cy4KLSAqKkZvbGRlcioqIC0gUHJvamVjdHMgbWF5IGFsc28gYmUgYWJsZSB0byBoYXZlIHRoZWlyIG93biBmb2xkZXJzIHdpdGhpbiB0aGUgcmVwb3NpdG9yeSBmb3Igb3JnYW5pemluZyBhbnkgY29kZSBvciByZWxhdGVkIGFydGlmYWN0cy4KCkZlZWwgZnJlZSB0byBzdWdnZXN0IGEgbmV3IHByb2plY3QgYnkgc3VibWl0dGluZyBhbiBpc3N1ZSwgb3IgZ2V0IGludm9sdmVkIGluIGEgc3BlY2lmaWMgcHJvamVjdCBieSBqdW1waW5nIGluIG9uIHRoZSBpc3N1ZXMgb3IgdGhlIGRpc2N1c3Npb25zIGZvciBlYWNoIGFyZWEgb2Ygd29yay4KCjwhLS0gZHluYW1pYyBjb250ZW50IC0tPgojIyBBY3RpdmUgUHJvamVjdHMKVGhlc2UgYXJlIHRoZSBwcm9qZWN0cyBjdXJyZW50bHkgYmVpbmcgbW92ZWQgZm9yd2FyZCBpbiBzb21lIGNhcGFjaXR5LiBFYWNoIHByb2plY3QgaGFzIGEgbGlzdGluZyBvZiB0by1kbywgaW4gcHJvZ3Jlc3MsIGFuZCBkb25lIHRhc2tzLCBhcyB3ZWxsIGFzIGxpbmsgdG8gYW55IG9wZW4gaXNzdWVzIG9yIGRpc2N1c3Npb25zLgoKUHJvamVjdHxEZXNjcmlwdGlvbnwKfC0tLXwtLS18CnxbKipNZW1iZXIgU2hvd2Nhc2UgJiBFbmdhZ2VtZW50KipdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvUHJvamVjdHMvcHJvamVjdHMvMil8Q29udGludWFsbHkgaW1wcm92aW5nIGhvdyB3ZSBzaG93Y2FzZSBhbmQgZW5nYWdlIHdpdGggdGhlIG1lbWJlcnMgb2YgdGhlIE9BSSwgYW5kIGluY3JlYXNlIHRoZWlyIHBhcnRpY2lwYXRpb24gd2l0aGluIHRoZSBPQVMgY29tbXVuaXR5LnwKfFsqKlByb2ZpbGUgJiBFbmdhZ2Ugd2l0aCBBUEkgUHJvdmlkZXJzKipdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvUHJvamVjdHMvcHJvamVjdHMvMyl8V29yayB0byBpZGVudGlmeSwgcHJvZmlsZSwgYW5kIGJ1aWxkIHJlbGF0aW9uc2hpcHMgd2l0aCBBUEkgcHJvdmlkZXJzIHdobyBoYXZlIGltcGxlbWVudGVkIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24sIGFuZCBwdWJsaXNoIHByb2ZpbGUgdG8gYSBjZW50cmFsIGRhdGFiYXNlLnwKfFsqKlByb2ZpbGUgYW5kIEVuZ2FnZSB3aXRoIE9wZW4gU291cmNlIFRvb2xpbmcqKl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9Qcm9qZWN0cy9wcm9qZWN0cy80KXxFc3RhYmxpc2ggYW4gb2ZmaWNpYWwgZGlyZWN0b3J5IG9mIG9wZW4gc291cmNlIHRvb2xpbmcgdGhhdCB1c2VzIE9BUywgYW5kIGFjdGl2ZWx5IHdvcmsgdG8gZXN0YWJsaXNoIGFuZCBidWlsZCByZWxhdGlvbnNoaXBzIHdpdGggZWFjaCB0b29saW5nIHByb3ZpZGVyIHRvIGdldCB0aGVtIG1vcmUgaW52b2x2ZWQgaW4gdGhlIGNvbW11bml0eS58CnxbKipCdXNpbmVzcyBTZWN0b3IgU2hvd2Nhc2UgJiBFbmdhZ2VtZW50KipdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvUHJvamVjdHMvcHJvamVjdHMvNSl8V29yayB0byBwcm9maWxlIGJ1c2luZXNzIHNlY3RvcnMgdGhhdCBhcmUgcHV0dGluZyBPcGVuQVBJIHRvIHdvcmssIHRoZW4gZW5nYWdlLCBhbmQgYnVpbGQgcmVsYXRpb25zaGlwcyB3aXRoIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMsIHdoaWxlIGhlbHBpbmcgc3RpbXVsYXRlIE9BSSBzcGVjaWFsIGludGVyZXN0IGdyb3VwcyBpbiB0aGVzZSBhcmVhcy58CnxbKipRdWFudGlmeSB0aGUgU2NvcGUgb2YgdGhlIE9wZW5BUEkgQ29tbXVuaXR5KipdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvUHJvamVjdHMvcHJvamVjdHMvNil8V29yayB0byBlc3RhYmxpc2ggdGhlIHNpemUgYW5kIHNjb3BlIG9mIHRoZSBPcGVuQVBJIGNvbW11bml0eSBhbmQgdGhlbiB0cmFjayBvbiB0aGUgZ3Jvd3RoIG92ZXIgdGltZS58CnxbKipTdHJlbmd0aGVuIE11bHRpLVNwZWNpZmljYXRpb24gUmVsYXRpb25zaGlwcyoqXShodHRwczovL2dpdGh1Yi5jb20vT0FJL1Byb2plY3RzL3Byb2plY3RzLzcpfE9uZ29pbmcgd29yayB0byBoZWxwIHN0cmVuZ3RoZW4gdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgT0FJIGFuZCBvdGhlciBBUEkgc3BlY2lmaWNhdGlvbnMgbGlrZSBBc3luY0FQSSwgR3JhcGhRTCwgSlNPTiBTY2hlbWEsIGFuZCBnUlBDLnwKfFsqKkN1cmF0ZSBhbmQgUHVibGlzaCBBUEkgQXJ0aWNsZXMsIFBvZGNhc3RzLCBWaWRlb3MqKl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9Qcm9qZWN0cy9wcm9qZWN0cy84KXxXb3JrIHRvIGRpc2NvdmVyLCBjdXJhdGUsIGFuZCB0aGVuIHNob3djYXNlIGFuZCBzeW5kaWNhdGUgdGhlIGV4aXN0aW5nIGFydGljbGVzLCBwb2RjYXN0cywgYW5kIHZpZGVvcyB0aGF0IGV4aXN0IGFib3V0IE9wZW5BUEkufAp8WyoqQWRkaXRpb25hbCBPQUkgTGVhZGVyc2hpcCoqXShodHRwczovL2dpdGh1Yi5jb20vT0FJL1Byb2plY3RzL3Byb2plY3RzLzkpfFdvcmsgdG8gZGVmaW5lIHRoZSByb2xlcyBmb3IgMyBhZGRpdGlvbmFsIGxlYWRlcnNoaXAgd2l0aGluIHRoZSBPQUksIGFuZCBoZWxwIHRoZW0gYmUgc3VjY2Vzc2Z1bCBpbiB3b3JrIG92ZXIgYSB5ZWFyLnwKfFsqKkpTT04gU2NoZW1hIERvY3VtZW50YXRpb24gVXBkYXRlKipdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvUHJvamVjdHMvcHJvamVjdHMvMTApfFRoaXMgaXMgd29yayB0byBpbnZlc3QgaW4gdGhlIHVwZGF0aW5nIG9mIEpTT04gU2NoZW1hIGRvY3VtZW50YXRpb24sIGhlbHBpbmcgaW52ZXN0IGluIHN1cHBvcnRpbmcgc3BlY2lmaWNhdGlvbnMufAp8WyoqT3BlbkFQSSBTZWFyY2ggRW5naW5lIE9wdGltaXphdGlvbioqXShodHRwczovL2dpdGh1Yi5jb20vT0FJL1Byb2plY3RzL3Byb2plY3RzLzExKXxUaGlzIGlzIG9uZ29pbmcgd29yayB0byBoZWxwIGltcHJvdmUgdGhlIHNlYXJjaCBlbmdpbmUgb3B0aW1pemF0aW9uIGZvciB0aGUgT0FJIGFuZCBPQVMsIGhlbHBpbmcgaW5jcmVhc2UgaXQncyBwcmVzZW5jZS58CnxbKipXb3JrZmxvdyBTSUcqKl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9Qcm9qZWN0cy9wcm9qZWN0cy8xMyl8VGhpcyBpcyBhIGdyb3VwIHRvIG1vdmUgZm9yd2FyZCB0aGUgd29ya2Zsb3cgYW5kIHNjZW5hcmlvIGNvbnZlcnNhdGlvbi58CnxbKipTZWN1cml0eSBTSUcqKl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9Qcm9qZWN0cy9wcm9qZWN0cy8xNCl8VGhpcyBpcyBhIGdyb3VwIHRvIG1vdmUgZm9yd2FyZCB0aGUgc2VjdXJpdHkgZGlzY3Vzc2lvbi58CnxbKipTTEEgU0lHKipdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvUHJvamVjdHMvcHJvamVjdHMvMTUpfFRoaXMgaXMgYSBncm91cCB0byBtb3ZlIGZvcndhcmQgdGhlIFNMQSBjb252ZXJzYXRpb24ufAp8WyoqVHJhdmVsIFNJRyoqXShodHRwczovL2dpdGh1Yi5jb20vT0FJL1Byb2plY3RzL3Byb2plY3RzLzE2KXxUaGlzIGlzIGEgZ3JvdXAgdG8gbW92ZSB0aGUgdHJhdmVsIGNvbnZlcnNhdGlvbiBmb3J3YXJkLnwKfFsqKk92ZXJsYXlzKipdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvUHJvamVjdHMvcHJvamVjdHMvMTcpfFRoaXMgaXMgdG8gdHJhY2sgb24gYWxsIHRoZSBtb3ZpbmcgcGFydHMgb2YgdGhlIG92ZXJsYXlzIGNvbnZlcnNhdGlvbi58CnxbKipIZWFsdGhjYXJlIFNJRyoqXShodHRwczovL2dpdGh1Yi5jb20vT0FJL1Byb2plY3RzL3Byb2plY3RzLzE4KXxUaGlzIGlzIGEgcHJvamVjdCB0byBzZXR1cCBhIHdvcmtpbmcgZ3JvdXAgdG8gZm9jdXMgb24gdGhlIGhlYWx0aGNhcmUgaW5kdXN0cnkufAp8WyoqUGl0Y2ggRGVjayoqXShodHRwczovL2dpdGh1Yi5jb20vT0FJL1Byb2plY3RzL3Byb2plY3RzLzE5KXxNb3ZlIGZvcndhcmQgdGhlIHdvcmsgYXJvdW5kIGEgZm9ybWFsIHBpdGNoIGRlY2sgdG8gcmVwcmVzZW50IHdoYXQgT3BlbkFQSSBpcyB0byBpbmRpdmlkdWFsIG9uYm9hcmRpbmcgd2l0aCB0aGUgc3BlYyBvciB0aGUgT0FJIGFzIGFuIG9yZ2FuaXphdGlvbi58CnxbKipBUEkgU3BlY2lmaWNhdGlvbnMgQ29uZmVyZW5jZSoqXShodHRwczovL2dpdGh1Yi5jb20vT0FJL1Byb2plY3RzL3Byb2plY3RzLzIwKXxLZWVwIHRyYWNrIG9mIHNvbWUgb2YgdGhlIGdvaW5ncyBvbiBhcm91bmQgQVNDLnwKfFsqKk9mZmljZSBIb3VycyoqXShodHRwczovL2dpdGh1Yi5jb20vT0FJL1Byb2plY3RzL3Byb2plY3RzLzIyKXxUaGlzIGlzIGEgcHJvamVjdCB0byBvZmZlciBvbmdvaW5nIHdlZWtseSBvZmZpY2UgaG91cnMgd2hlcmUgYW55b25lIGNhbiBjb21lIGFuZCBsZWFybiBhYm91dCB0aGUgT0FJLCBPQVMsIGFuZCBob3cgaXQgYWxsIHdvcmtzLnwKfFsqKlNJRyBQbGFubmluZyoqXShodHRwczovL2dpdGh1Yi5jb20vT0FJL1Byb2plY3RzL3Byb2plY3RzLzIzKXxUaGlzIGlzIGEgcHJvamVjdCB0byB0cmFjayBvbiB0aGUgZGV0YWlscyBhY3Jvc3MgdGhlIFNJR3MuIEVhY2ggU0lHIGhhcyBvd24gcHJvamVjdCBib2FyZCwgYnV0IHRoaXMgaXMgdXNlZCB0byBwbGFuIGFjcm9zcyB0aGUgU0lHcy58CnxbKipOZXcgTWVtYmVyIElkZW50aWZpY2F0aW9uICYgRW5nYWdlbWVudCoqXShodHRwczovL2dpdGh1Yi5jb20vT0FJL1Byb2plY3RzL3Byb2plY3RzLzI0KXxXb3JrIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBuZXcgbWVtYmVycyB0byB0aGUgT0FJIGFuZCByZWFjaCBvdXQgdG8gdGhlbSB0byBoZWxwIHN0YXJ0IGEgY29udmVyc2F0aW9uIGFuZCBtYWtlIHRoZW0gYXdhcmUgb2YgdGhlIGJlbmVmaXRzIG9mIGJlaW5nIGEgbWVtYmVyLnwKfFsqKkJ1c2luZXNzIEdvdmVybmFuY2UgQm9hcmQgKEJHQikqKl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9Qcm9qZWN0cy9wcm9qZWN0cy8yNSl8VGhpcyBpcyB1c2VkIHRvIG1hbmFnZSB0YXNrcyBmb3IgdGhlIEJHQiwgaGVscGluZyBOZWFsLCBJc2FiZWwsIGFuZCBLaW4gYmUgbW9yZSBvcmdhbml6ZWQufAp8WyoqRXh0ZW5zaW9uIERpcmVjdG9yeSoqXShodHRwczovL2dpdGh1Yi5jb20vT0FJL1Byb2plY3RzL3Byb2plY3RzLzI2KXxUaGlzIGlzIGEgcHJvamVjdCB0byBtb3ZlIGZvcndhcmQgYW4gb2ZmaWNpYWwgT0FJIGV4dGVuc2lvbiByZWdpc3RyeSwgY2F0YWxvZ2luZyBob3cgdGhlIHNwZWNpZmljYXRpb24gaXMgYmVpbmcgZXh0ZW5kZWQufAp8WyoqQmxvZyBQcm9jZXNzKipdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvUHJvamVjdHMvcHJvamVjdHMvMjcpfEhvdyBkbyB5b3Ugc3VibWl0IGEgc3RvcnkgZm9yIGluY2x1c2lvbiBvbiB0aGUgYmxvZy58CgojIyBJbmN1YmF0b3IgUHJvamVjdHMKClByb2plY3R8RGVzY3JpcHRpb258CnwtLS18LS0tfAo8IS0tIGR5bmFtaWMgY29udGVudCAtLT4KCkFzIHByb2plY3RzIGFyZSBjb21wbGV0ZSB0aGV5IHdpbGwgYmUgY2xvc2VkLCB3aXRoIHNvbWUgcHJvamVjdHMgbGl2aW5nIG9uIGZvcmV2ZXIgYW5kIGlzc3VlcyBhbmQgZGlzY3Vzc2lvbnMgYmVpbmcgdXNlZCB0byBkcml2ZSBvbmdvaW5nIHdvcmsuCgojIyBBY3RpdmUgUGFydGljaXBhbnRzClRoZXNlIGFyZSB0aGUgaW5kaXZpZHVhbHMgd2hvIGFyZSBjdXJyZW50bHkgcGFydCBvZiBtb3ZpbmcgcHJvamVjdHMgZm9yd2FyZCBhcyBwYXJ0IG9mIHRoZSBPQUksIGFuZCBoZXJlIHRvIGFuc3dlciBhbnkgcXVlc3Rpb25zLgoKLSBbS2luIExhbmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9raW5sYW5lKSAtIFJlcHJlc2VudGluZyBhcyBjby1jaGFpciBvZiB0aGUgQkdCIEJvYXJkLgotIFtDaHJpcyBUc2FpXShodHRwczovL2dpdGh1Yi5jb20vZ3JpenppY2xlKSAtIElkZW50aWZ5aW5nICYgZW5nYWdpbmcgbmV3IG1lbWJlcnMgdG8gZ3JvdyB0aGUgT0FJLgotIFtDaHJpcyBXb29kXShodHRwczovL2dpdGh1Yi5jb20vU2Vuc2libGVXb29kKSAtIEVuZ2FnaW5nIHdpdGggb3BlbiBzb3VyY2UgdG9vbGluZyBhbmQgY3VyYXRlIGNvbnRlbnQuCi0gW1BoaWwgU3R1cmdlb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9waGlsc3R1cmdlb24pIC0gRW5nYWdpbmcgd2l0aCBBUElzLCBvcGVuIHNvdXJjZSB0b29saW5nIGFuZCBjdXJhdGUgY29udGVudC4KCklmIHlvdSdkIGxpa2UgdG8gYmUgYWRkZWQgcGxlYXNlIHN1Ym1pdCBhIEdpdGh1YiBpc3N1ZSBzdGF0aW5nIGhvdyB5b3UnZCBsaWtlIHRvIGhlbHAgYW5kIHdlJ2xsIGFkZCB5b3UgdG8gdGhlIGxpc3Qgb2YgcGFydGljaXBhbnRzLgo= readmeEtag: '"f619bc60a700df6dc6174ecd2fbb7071385653dc"' readmeLastModified: Wed, 05 Jan 2022 23:07:05 GMT repositoryId: 366089329 description: >- All of the open projects occurring within the Open API Initiative (OAI) community. created: '2021-05-10T15:25:36Z' updated: '2024-10-11T10:57:50Z' language: JavaScript archived: false stars: 16 watchers: 9 forks: 11 owner: OAI logo: https://avatars.githubusercontent.com/u/16343502?v=4 license: Apache-2.0 repoEtag: '"2ef014308f098ee88eaca0c31530de1507ef7d8ea9a9a8b1f85993d11b5443c0"' repoLastModified: Fri, 11 Oct 2024 10:57:50 GMT foundInMaster: true category: Server id: dd0109543e2834f7f902f1f438b6b874 - source: openapi3 tags repository: https://github.com/philosowaffle/vs-openapi-designer v3: true repositoryMetadata: base64Readme: >- IyB2cy1vcGVuYXBpLWRlc2lnbmVyIFtQcmV2aWV3XQoKIFZTIENvZGUgZXh0ZW5zaW9uIGZvciBwcmV2aWV3aW5nIFtPcGVuQXBpIFNjaGVtYSdzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgd2l0aGluIFZTIENvZGUuCgogRmluZCBpdCBpbiB0aGUgW1ZTIENvZGUgTWFya2V0UGxhY2VdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1waGlsb3Nvd2FmZmxlLm9wZW5hcGktZGVzaWduZXIpLgoKIyMgRmVhdHVyZXMKCi0gUHJldmlldyBPcGVuQXBpIHNwZWNzIGluIHNpZGUgcGFuZWwgaW4gVlMgQ29kZSBvciBpbiBCcm93c2VyCi0gU3dhZ2dlciAyLjAgU3BlYyBwcmV2aWV3aW5nIGFuZCB2YWxpZGF0aW9uCiAgLSBZQU1ML0pTT04KICAtIFNpbmdsZSBhbmQgTXVsdGktRmlsZSAoYm90aCBsb2NhbCBhbmQgcmVtb3RlIHJlZmVyZW5jZXMpCi0gT3BlbkFwaSAzLjAgU3BlYyBwcmV2aWV3aW5nIGFuZCB2YWxpZGF0aW9uCiAgLSBZQU1ML0pTT04KICAtIFNpbmdsZSBhbmQgTXVsdGktRmlsZSAoYm90aCBsb2NhbCBhbmQgcmVtb3RlIHJlZmVyZW5jZXMpCgojIyBVc2FnZQoKLSBPcGVuIHRoZSByb290IG9mIHlvdXIgc2NoZW1hCi0gYGN0cmwtc2hmdC1wYCA+IGBPcGVuQXBpIERlc2lnbmVyOiBQcmV2aWV3YAotIE90aGVyIEF2YWlsYWJsZSBDb21tYW5kcwogIC0gYE9wZW5BcGkgRGVzaWduZXI6IFByZXZpZXdgIC0gb3BlbnMgcHJldmlldyB1c2luZyB5b3VyIGRlZmF1bHQgdmlldyBwcmVmZXJlbmNlCiAgLSBgT3BlbkFwaSBEZXNpZ25lcjogUHJldmlldyBJbiBTaWRlIFBhbmVsYCAtIG9wZW4gcHJldmlldyBpbiBzaWRlIHBhbmVsCiAgLSBgT3BlbkFwaSBEZXNpZ25lcjogUHJldmlldyBJbiBCcm93c2VyYCAtIG9wZW4gcHJlaXZldyBpbiBicm93c2VyCiAgLSBgT3BlbkFwaSBEZXNpZ25lcjogQ29tcGlsZSBTY2hlbWFgIC0gQ29tcGlsZXMgYSB1bmlmaWVkIHNjaGVtYSBhbmQgZGVyZWZlcmVuY2VzIGFsbCBgJHJlZnNgIGludG8gYSBzaW5nbGUgZmlsZQoKIyMgUmVxdWlyZW1lbnRzCgotIE5vbmUKCiMjIEV4dGVuc2lvbiBTZXR0aW5ncwoKVGhpcyBleHRlbnNpb24gY29udHJpYnV0ZXMgdGhlIGZvbGxvd2luZyBzZXR0aW5nczoKCi0gYG9wZW5BcGlEZXNpZ25lci5kZWZhdWx0UG9ydGA6IGRlZmF1bHQgcG9ydCBmb3Igc2VydmluZyB0aGUgU3dhZ2dlciBVSSwgZGVmYXVsdCBgOTAwNWAKLSBgb3BlbkFwaURlc2lnbmVyLnByZXZpZXdJbkJyb3dzZXJgOiB3aGV0aGVyIHRvIG9wZW4gcHJldmlldyBpbiB0aGUgQnJvd3NlciBvciBpbiBWUyBDb2RlIHNpZGUgcGFuZWwsIGRlZmF1bHQgYGZhbHNlYAoKIyMgS25vd24gSXNzdWVzCgpTZWUga25vd24gaXNzdWVzIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vcGhpbG9zb3dhZmZsZS92cy1vcGVuYXBpLWRlc2lnbmVyL2lzc3VlcykuICBJZiB5b3VyIGlzc3VlIGlzIG5vdCBhbHJlYWR5IGxpc3RlZCB0aGVyZSBwbGVhc2UgbG9nIGEgbmV3IG9uZS4KCiMjIFJlbGVhc2UgTm90ZXMKClNlZSBbQ0hBTkdFTE9HXShodHRwczovL2dpdGh1Yi5jb20vcGhpbG9zb3dhZmZsZS92cy1vcGVuYXBpLWRlc2lnbmVyL2Jsb2IvbWFzdGVyL0NIQU5HRUxPRy5tZCkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyMgQ29udHJpYnV0aW5nCgojIyMgRGV2ZWxvcG1lbnQKCi0gY2QgZGlyLCBgbnBtIGluc3RhbGxgIHRvIGluc3RhbGwgbmVlZGVkIGRlcGVuZGVuY2llcwotIEY1IHRvIGxhdW5jaCBleHRlbnNpb24gYW5kIHZhbGlkYXRlCi0gYG5wbSBpbnN0YWxsIC1nIHZzY2VgIEZvciBwYWNrYWdpbmcgYW5kIHB1Ymxpc2hpbmcKICAgIC0gYHZzY2UgcGFja2FnZWAgLSBUbyBidWlsZCBwcmUtcmVsZWFzZSBwYWNha2FnZXMKICAgIC0gVG8gc2lkZSBsb2FkIGluIFZTIENvZGUgYGN0cmwtc2hmdC1wYCwgYEluc3RhbGwgRnJvbSBWU0lYYCwgbG9jYXRlIG91dHB1dCBmcm9tIGBwYWNrYWdlYAo= readmeEtag: '"7a32ffd2f503223348c02e00cf78ee0ea520dace"' readmeLastModified: Sun, 14 Apr 2019 20:00:46 GMT repositoryId: 142328036 description: OpenApi Designer Extension for VS Code created: '2018-07-25T16:45:17Z' updated: '2025-07-18T14:03:25Z' language: JavaScript archived: false stars: 17 watchers: 2 forks: 3 owner: philosowaffle logo: https://avatars.githubusercontent.com/u/7275041?v=4 license: GPL-3.0 repoEtag: '"486481da297745247f841f8554ee153311a80649ed102f5375f0a090b0f28277"' repoLastModified: Fri, 18 Jul 2025 14:03:25 GMT foundInMaster: true category: Documentation id: bbbe73cd6a16928706867d54bc485989 - source: - openapi3 tags - openapi31 tags name: aiopenapi3 homepage: https://github.com/commonism/aiopenapi3 language: Python source_description: >- OpenAPI 3, Python3.7+ client & validator with automatic data validation & serialization, sync or asyncio. category: - Client Implementations - Server Implementations repository: https://github.com/commonism/aiopenapi3 repositoryMetadata: base64Readme: >- IyBhaW9wZW5hcGkzCgpBIFB5dGhvbiBbT3BlbkFQSSAzIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjAuMy5tZCkgY2xpZW50IGFuZCB2YWxpZGF0b3IgZm9yIFB5dGhvbiAzLgoKWyFbVGVzdF0oaHR0cHM6Ly9naXRodWIuY29tL2NvbW1vbmlzbS9haW9wZW5hcGkzL2FjdGlvbnMvd29ya2Zsb3dzL2NvZGVjb3YueW1sL2JhZGdlLnN2Zz9ldmVudD1wdXNoJmJyYW5jaD1tYXN0ZXIpXShodHRwczovL2dpdGh1Yi5jb20vY29tbW9uaXNtL2Fpb3BlbmFwaTMvYWN0aW9ucz9xdWVyeT13b3JrZmxvdyUzQUNvZGVjb3YrZXZlbnQlM0FwdXNoK2JyYW5jaCUzQW1hc3RlcikKWyFbcHJlLWNvbW1pdC5jaSBzdGF0dXNdKGh0dHBzOi8vcmVzdWx0cy5wcmUtY29tbWl0LmNpL2JhZGdlL2dpdGh1Yi9jb21tb25pc20vYWlvcGVuYXBpMy9tYXN0ZXIuc3ZnKV0oaHR0cHM6Ly9yZXN1bHRzLnByZS1jb21taXQuY2kvbGF0ZXN0L2dpdGh1Yi9jb21tb25pc20vYWlvcGVuYXBpMy9tYXN0ZXIpClshW0NvdmVyYWdlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRodWIvY29tbW9uaXNtL2Fpb3BlbmFwaTMpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvY29tbW9uaXNtL2Fpb3BlbmFwaTMpClshW1N1cHBvcnRlZCBQeXRob24gdmVyc2lvbnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL2Fpb3BlbmFwaTMuc3ZnKV0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2Fpb3BlbmFwaTMpClshW0RvY3VtZW50YXRpb24gU3RhdHVzXShodHRwczovL3JlYWR0aGVkb2NzLm9yZy9wcm9qZWN0cy9haW9wZW5hcGkzL2JhZGdlLz92ZXJzaW9uPWxhdGVzdCldKGh0dHBzOi8vYWlvcGVuYXBpMy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvP2JhZGdlPWxhdGVzdCkKCgpUaGlzIHByb2plY3QgaXMgYSBmb3JrIG9mIFtEb3J0aHUvb3BlbmFwaTNdKGh0dHBzOi8vZ2l0aHViLmNvbS9Eb3J0aHUvb3BlbmFwaTMvKS4KCiMjIEZlYXR1cmVzCiAgKiBpbXBsZW1lbnRzIOKApgogICAgKiBTd2FnZ2VyIDIuMAogICAgKiBPcGVuQVBJIDMuMC4zCiAgICAqIE9wZW5BUEkgMy4xLjAKICAqIGRlc2NyaXB0aW9uIGRvY3VtZW50IHBhcnNpbmcgdmlhIFtweWRhbnRpY10oaHR0cHM6Ly9naXRodWIuY29tL3NhbXVlbGNvbHZpbi9weWRhbnRpYykKICAgICogcmVjdXJzaXZlIHNjaGVtYXMgKEEuYSAtPiBBKQogICogcmVxdWVzdCBib2R5IG1vZGVsIGNyZWF0aW9uIHZpYSBweWRhbnRpYwogICAgKiBweWRhbnRpYyBjb21wYXRpYmxlICJmb3JtYXQiLXR5cGUgY29lcmNpb24gKGUuZy4gZGF0ZXRpbWUuaW50ZXJ2YWwpCiAgICAqIGFkZGl0aW9uYWxQcm9wZXJ0aWVzIChsaW1pdGVkIHRvIHN0cmluZy10by1hbnkgZGljdGlvbmFyaWVzIHdpdGhvdXQgcHJvcGVydGllcykKICAqIHJlc3BvbnNlIGJvZHkgJiBoZWFkZXIgcGFyc2luZyB2aWEgcHlkYW50aWMKICAqIGJsb2NraW5nIGFuZCBub25ibG9ja2luZyAoYXN5bmNpbykgaW50ZXJmYWNlIHZpYSBbaHR0cHhdKGh0dHBzOi8vd3d3LnB5dGhvbi1odHRweC5vcmcvKQogICAgKiBTT0NLUzUgdmlhIGh0dHB4X3NvY2tzCiAgKiB0ZXN0cyB3aXRoIHB5dGVzdCAmIFtmYXN0YXBpXShodHRwczovL2Zhc3RhcGkudGlhbmdvbG8uY29tLykKICAqIHByb3ZpZGluZyBhY2Nlc3MgdG8gbWV0aG9kcyBhbmQgYXJndW1lbnRzIHZpYSB0aGUgc2FkIHNtaWxleSAuXy4gaW50ZXJmYWNlCiAgKiBQbHVnaW4gSW50ZXJmYWNlL2FwaSB0byBtb2RpZnkgZGVzY3JpcHRpb24gZG9jdW1lbnRzL3JlcXVlc3RzL3Jlc3BvbnNlcyB0byBhZGFwdCB0byBub24gY29tcGxpYW50IHNlcnZpY2VzCiAgKiBZQU1MIHR5cGUgY29lcmNpb24gaGludHMgZm9yIG5vdCB3ZWxsIGZvcm1hdHRlZCBkZXNjcmlwdGlvbiBkb2N1bWVudHMKICAqIERlc2NyaXB0aW9uIERvY3VtZW50IGRlcGVuZGVuY3kgZG93bmxvYWRzICh1c2luZyB0aGUgV2ViTG9hZGVyKQogICAgKiBsb2dnaW5nCiAgICAgICogYGV4cG9ydCBBSU9QRU5BUEkzX0xPR0dJTkdfSEFORExFUlM9ZGVidWdgIHRvIGdldCAvdG1wL2Fpb3BlbmFwaTMtZGVidWcubG9nCgoKIyMgRG9jdW1lbnRhdGlvbgpbQVBJIERvY3VtZW50YXRpb25dKGh0dHBzOi8vYWlvcGVuYXBpMy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvKQoKCiMjIFJ1bm5pbmcgVGVzdHMKClRoaXMgcHJvamVjdCBpbmNsdWRlcyBhIHRlc3Qgc3VpdGUsIHJ1biB2aWEgYGBweXRlc3RgYC4gIFRvIHJ1biB0aGUgdGVzdCBzdWl0ZSwKZW5zdXJlIHRoYXQgeW91J3ZlIGluc3RhbGxlZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGVuIHJ1biBgYHB5dGVzdGBgIGluIHRoZSByb290Cm9mIHRoaXMgcHJvamVjdC4KCmBgYHNoZWxsClBZVEhPTlBBVEg9LiBweXRlc3QgLS1jb3Y9Li8gLS1jb3YtcmVwb3J0PXhtbCAuCmBgYAo= readmeEtag: '"091767230f77346d3ea0eb78ac7448ca039d6745"' readmeLastModified: Wed, 07 Aug 2024 07:24:30 GMT repositoryId: 443839740 description: 'Python OpenAPI3 client/validator w\ {a,}syncio ' created: '2022-01-02T18:23:26Z' updated: '2026-02-04T07:32:28Z' language: Python archived: false stars: 18 watchers: 2 forks: 9 owner: commonism logo: https://avatars.githubusercontent.com/u/164513?v=4 license: BSD-3-Clause repoEtag: '"3a9c8e27e0872123a93c9a93ffab6b42cc8bf98dbcab7f3bcb795d7cd18f1d2b"' repoLastModified: Wed, 04 Feb 2026 07:32:28 GMT foundInMaster: true id: f7fe65d08545a563279e1526fe797380 v3: true v3_1: true - source: openapi3 tags repository: https://github.com/dgouyette/play-api-refiner v3: true repositoryMetadata: base64Readme: >- WyFbQnVpbGQgc3RhdHVzXShodHRwczovL2FwaS50cmF2aXMtY2kuY29tL2Rnb3V5ZXR0ZS9wbGF5LWFwaS1yZWZpbmVkLnN2Zz9icmFuY2g9ZGV2ZWxvcCldKGh0dHBzOi8vdHJhdmlzLWNpLmNvbS9kZ291eWV0dGUvcGxheS1hcGktcmVmaW5lZD9icmFuY2g9ZGV2ZWxvcCkKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2Rnb3V5ZXR0ZS9wbGF5LWFwaS1yZWZpbmVkL2JyYW5jaC9kZXZlbG9wL2dyYXBoL2JhZGdlLnN2ZyldKGh0dHBzOi8vY29kZWNvdi5pby9naC9kZ291eWV0dGUvcGxheS1hcGktcmVmaW5lZCkKWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby86bGljZW5zZS1NSVQtYmx1ZS5zdmcpXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkKCgojIFBsYXkgQVBJIFJlZmluZWQKCkEgdGlueSBsaWJyYXJ5IHRvIGdlbmVyYXRlIE9wZW5BUEkgIGRvY3VtZW50YXRpb24gYW5kIGpzb24gc2NoZW1hIGJhc2VkIG9uIFJlZmluZWQncyBjYXNlIGNsYXNzZXMuCgoKIyMgU2V0dXAKCkluIG9yZGVyIHRvIHVzZSBwbGF5LWpzb24tb3JnLmRnb3V5ZXR0ZS5yZWZpbmVkIHlvdSBuZWVkIHRvIGFkZCB0aGUgZm9sbG93aW5nIGxpbmVzIHRvIHlvdXIgYGJ1aWxkLnNidGA6CgpgYGBzY2FsYQpyZXNvbHZlcnMgKz0gUmVzb2x2ZXIuYmludHJheVJlcG8oImRnb3V5ZXR0ZSIsICJtYXZlbiIpCgpsaWJyYXJ5RGVwZW5kZW5jaWVzICs9ICJvcmcuZGdvdXlldHRlIiAlJSAiYXBpLXJlZmluZXIiICUgIjEuMC4wLU0xIgpgYGAKCiMjIFVzYWdlCgojIyMgUGxheSBKc29uIFJlZmluZWQgIGVycm9ycyAKClRvIHJldHVybiBqc29uIGVycm9ycyBiYXNlZCBvbiBvcmcuZGdvdXlldHRlLnJlZmluZWQgY2xhc3NlcyB5b3UgbXVzdCBpbXBvcnQgOgoKYGBgYHNjYWxhCmltcG9ydCBvcmcub3JnLmRnb3V5ZXR0ZS5qc29uLlJlZmluZWRSdW50aW1lVmFsaWRhdG9yLl8KYGBgYAoKIyMjIEpzb24gU2NoZW1hIGdlbmVyYXRpb24KCmBgYHNjYWxhCgpjYXNlIGNsYXNzIENvbGxlY3Rpb25TdHJpbmdOb25FbXB0eShlIDogTGlzdFtTdHJpbmddIFJlZmluZWQgTm9uRW1wdHkpCkpzb25TY2hlbWEuYXNKc1ZhbHVlW0NvbGxlY3Rpb25TdHJpbmdOb25FbXB0eV0gLy8gPT4geyJlIjp7Im1pbkxlbmd0aCI6MSwidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fX0KCmBgYAoKIyMjIEpzb24gU2NoZW1hIG9uIENsaWVudCBFcnJvciAKCmBgYHNjYWxhCmNhc2UgY2xhc3MgTG9naW5EVE8oZW1haWwgIDogU3RyaW5nIFJlZmluZWQgTm9uRW1wdHksIHBhc3N3b3JkIDogU3RyaW5nIFJlZmluZWQgTm9uRW1wdHkpCgoKQFNpbmdsZXRvbgpjbGFzcyBIb21lQ29udHJvbGxlciBASW5qZWN0KCkoYnA6IEJvZHlQYXJzZXJXaXRoSnNvblNjaGVtYSkgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2xsZXIoY2MpIHsKICBpbXBsaWNpdCB2YWwgbG9naW5TY2hlbWEgPSBKc29uU2NoZW1hLmFzSnNWYWx1ZVtMb2dpbkRUT10KICBpbXBsaWNpdCB2YWwgZHRvU2NoZW1hID0gSnNvblNjaGVtYS5hc0pzVmFsdWVbU2ltcGxlRFRPXQogIAogIGRlZiBsb2dpbigpOiBBY3Rpb25bTG9naW5EVE9dID0gQWN0aW9uKGJwLmpzb25SZWZpbmVkKExvZ2luRFRPLmZtdCwgbG9naW5TY2hlbWEpKSB7CiAgICBpbXBsaWNpdCByZXF1ZXN0ID0+CiAgICBPawogIH0KfQpgYGAgCgpXaXRoIGEgYmFkIGNsaWVudCByZXF1ZXN0IDogCgpgY3VybCAtWCBQT1NUIGh0dHA6Ly9sb2NhbGhvc3Q6OTAwMC9sb2dpbiAtZCAneyJlbWFpbCIgOiIiLCJwYXNzd29yZCIgOiIiIH0nYAoKWW91IHdpbGwgaGF2ZSB0aGlzIGVycm9yIAoKYGBganNvbgp7CiAgICAib2JqLmVtYWlsIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm1zZyI6IFsKICAgICAgICAgICAgICAgICJQcmVkaWNhdGUgaXNFbXB0eSgpIGRpZCBub3QgZmFpbC4iCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhcmdzIjogW10KICAgICAgICB9CiAgICBdLAogICAgIl9zY2hlbWEiOiB7CiAgICAgICAgInBhc3N3b3JkIjogewogICAgICAgICAgICAibWluTGVuZ3RoIjogMSwKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgIH0sCiAgICAgICAgImVtYWlsIjogewogICAgICAgICAgICAibWluTGVuZ3RoIjogMSwKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgIH0KICAgIH0sCiAgICAib2JqLnBhc3N3b3JkIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm1zZyI6IFsKICAgICAgICAgICAgICAgICJQcmVkaWNhdGUgaXNFbXB0eSgpIGRpZCBub3QgZmFpbC4iCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhcmdzIjogW10KICAgICAgICB9CiAgICBdCn0KYGBgCgojIyBHZW5lcmF0ZSBPcGVuQVBJIChTd2FnZ2VyKSBEb2N1bWVudGF0aW9uCgpPcGVuQVBJQ29udHJvbGxlciA6IApgYGBgc2NhbGEKZGVmIGpzb246IEFjdGlvbltVbml0XSA9IEFjdGlvbihwYXJzZS5lbXB0eSkgewogICAgaW1wbGljaXQgIHJlcSA9PgogICAgIE9rKE9wZW5BUEkuZnJvbVJvdXRlc0ZpbGUoImNvbmYvcm91dGVzIikpCiAgfQpgYGBgCgpjb25mL3JvdXRlcwpgYGAKUE9TVCAgICAgICAgL2xvZ2luICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcnMuSG9tZUNvbnRyb2xsZXIubG9naW4KR0VUICAgICAgICAgL2RvYy9qc29uICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcnMuT3BlbkFQSUNvbnRyb2xsZXIuanNvbgpgYGAKCiFbT3BlbkFQSSBEb2N1bWVudGF0aW9uXShvcGVuQVBJLnBuZykKCg== readmeEtag: '"2a3a7bda5cbb93243decfc59c607390854ff1ae5"' readmeLastModified: Wed, 16 Oct 2019 07:59:29 GMT repositoryId: 206240618 description: null created: '2019-09-04T05:43:38Z' updated: '2022-07-07T15:57:50Z' language: Scala archived: false stars: 16 watchers: 3 forks: 0 owner: dgouyette logo: https://avatars.githubusercontent.com/u/274061?v=4 repoEtag: '"469629d5ffa28ca34f5eb3c3b9cfb7a1596f2080ce5cc5ac41558723ce96016d"' repoLastModified: Thu, 07 Jul 2022 15:57:50 GMT foundInMaster: true category: Data Validators id: df6e428f59101c20eaeb110a9e268e9b - source: openapi3 tags repository: https://github.com/alekshura/sourceapi v3: true repositoryMetadata: base64Readme: >- IyA8aW1nIHNyYz0iL0NvbXBlbnRpby5Bc3NldHMvTG9nby5wbmciIGFsaWduPSJsZWZ0IiB3aWR0aD0iNTAiPiBTb3VyY2VBcGkKClshW051R2V0XShodHRwOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvdi9Db21wZW50aW8uU291cmNlQXBpLnN2ZyldKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9Db21wZW50aW8uU291cmNlQXBpKQohW051Z2V0XShodHRwczovL2ltZy5zaGllbGRzLmlvL251Z2V0L2R0L0NvbXBlbnRpby5Tb3VyY2VBcGkpCiFbR2l0SHViXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL2FsZWtzaHVyYS9Tb3VyY2VBcGkpCiFbR2l0SHViIHRvcCBsYW5ndWFnZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGFuZ3VhZ2VzL3RvcC9hbGVrc2h1cmEvU291cmNlQXBpKQoKIyBJbnRyb2R1Y3Rpb24KVHdvIGRpZmZlcmVudCBhcHByb2FjaGVzIGZvciBXZWIgQVBJIGltcGxlbWVudGF0aW9uIG9mdGVuIHVzZWQgYnkgZGV2ZWxvcG1lbnQgdGVhbXM6IGBjb2RlIGZpcnN0YCBhbmQgYEFQSSBmaXJzdGAuCkR1cmluZyB0aGUgYGNvZGUgZmlyc3RgIGFwcHJvYWNoIFdlYiBBUEkgQ29udHJvbGxlcnMgYXJlIGltcGxlbWVudGVkLCBTd2FnZ2VyL09wZW4gQVBJIGxpYnJhcmllcyBhcmUgYWRkZWQgdG8gdGhlIGFwcGxpY2F0aW9uIGFuZCBmaW5uYWx5IGl0IGRlcGxveWVkLgpPcGVuIEFQSSBsaWJyYXJpZXMgYWN0dWFsbHkgYWRkcyBhIG1pZGRsZXdhcmVzIHRvIGFwcGxpY2F0aW9uIHdoaWNoIHNlcnZlIE9wZW4gQVBJIGRlZmluaXRpb25zLCAKU3dhZ2dlciBVSSB0aHVzIHRoZSBjbGllbnRzIGNhbiB1c2UgdGhpcyBkZWZpbml0aW9ucyB0byBnZW5lcmF0ZSBjb2RlIG9yIHVzZSB0ZXN0IEFQSSB1c2luZyBVSS4gICAgCgpJbiBzZWNvbmQsIGBBUEkgRmlyc3RgIGFwcHJvYWNoLCBBUEkgZGVmaW5lZCBpbiBganNvbmAgb3IgYHlhbWxgIGZpbGVzIHVzaW5nIFtPcGVuIEFQSSBzdGFuZGFyZF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vKSBmaXJzdCBhbmQgYWZ0ZXIgdGhhdApzZXJ2ZXIgb3IgY2xpZW50IGNvZGUsIGludGVyZmFjZXMgb3IgRFRPJ3MgYXJlIGdlbmVyYXRlZCBpbiBhcHBsaWNhdGlvbi4KClRoaXMgYXBwcm9hY2ggaXMgdGVjaG5vbG9neSBhZ25vc3RpYzogQVBJIGNhbiBiZSBkaXNpZ25lZCBpbmRlcGVuZGVudGx5IGZyb20gdGVjaG5vbG9naWVzIHVzZWQgaW4gY2xvdWQgbmF0aXZlIGFyY2hpdGVjdHVyZSB3aXRoIGEgd2lkZSB0ZWNoIHN0YWNrLCB0aGVuIApzaGFyZWQgYmV0d2VlbiBkZWZmZXJlbnQgdGVhbXMgKGBKYXZhYCwgYC5ORVRgLCBgTm9kZUpTYCwgYEZyb250ZW5kYCwgZWN0LikgYW5kIGVjaCB0ZWFtIGNhbiBkZWNpZGUgYWJvdXQgd2hhdCBoYXMgdG8gYmUgZG9uZSB3aXRoIGl0OiB0byBnZW5lcmF0ZSBvbmx5IERUTydzLCBvciAKY3JlYXRlIGJhc2UgYWJzdHJhY3QgY29udHJvbGxlcnMsIHdpdGggcm91dGVzLCBkb2N1bWVudGF0aW9uIGFuZCBEVE8ncyBvciB0byBnZW5lcmF0ZSBjbGllbnQgY29kZSBmb3IgY29uc3VtZSB0aGUgQVBJLgoKYFNvdXJjZUFwaWAgaXMgYSBjb2RlIGdlbmVyYXRvciB0aGF0IGhlbHBzIHRvIHVzZSBgQVBJIEZpcnN0YCBhcHByb2FjaCBmb3IgLk5FVCBDb3JlIDMrIChhbHNvIC5ORVQgNSspIFdlYiBBUEkgYXBwbGljYXRpb25zOgpkdXJpbmcgZGVzaWduIHRpbWUgaW4gVmlzdWFsIFN0dWRpbyBJREUgaXQgZ2VuZXJhdGVzIGFic3RyYWN0IGJhc2UgQ29udHJvbGxlcnMgY2xhc3NlcyBhbmQgRFRPJ3MgdGhhdCBjYW4gYmUgdXNlZCBieSBkZXZlbG9wZXIgdG8gaW1wbGVtZW50IHRoZSB0YXJnZXQgZnVuY3Rpb25hbGl0eS4KCkl0IGlzIGJhc2VkIG9uIFtTb3VyY2UgR2VuZXJhdG9ycyBBZGRpdGlvbmFsIEZpbGUgVHJhbnNhZm9ybWF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vZG90bmV0L3Jvc2x5bi9ibG9iL21haW4vZG9jcy9mZWF0dXJlcy9zb3VyY2UtZ2VuZXJhdG9ycy5jb29rYm9vay5tZCNhZGRpdGlvbmFsLWZpbGUtdHJhbnNmb3JtYXRpb24pIGZlYXR1cmUKd2hlcmUgaXQgaXMgcG9zc2libGUgdG8gYmUgYWJsZSB0byB0cmFuc2Zvcm0gYW4gZXh0ZXJuYWwgbm9uLUMjIGZpbGUgaW50byBhbiBlcXVpdmFsZW50IEMjIHJlcHJlc2VudGF0aW9uLgoKUmljbyBTdXRlcidzIFtOU3dhZ10oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZykgaXMgdXNlZCB1bmRlcmhvb2Q6Ci0gW0NTaGFycENvbnRyb2xsZXJHZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcvd2lraS9DU2hhcnBDb250cm9sbGVyR2VuZXJhdG9yKSBpcyB1c2VkIGZvciBhYnN0cmFjdCBiYXNlIGNvbnRyb2xsZXJzIGNvZGUgZ2VuZXJhdGlvbgotIFtDU2hhcnBDbGllbnRHZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcvd2lraS9DU2hhcnBDbGllbnRHZW5lcmF0b3IpIHVzZWQgZm9yIERUTydzIG9ubHkgY29kZSBnZW5lcmF0aW9uIG1vZGUuIAoKIyBJbnN0YWxsYXRpb24KSW5zdGFsbCB1c2luZyBudWdldCBwYWNrYWdlIG1hbmFnZXI6CgpgYGBjb25zb2xlCkluc3RhbGwtUGFja2FnZSBDb21wZW50aW8uU291cmNlQXBpCmBgYAoKb3IgYC5ORVQgQ0xJYDoKCmBgYGNvbnNvbGUKZG90bmV0IGFkZCBwYWNrYWdlIENvbXBlbnRpby5Tb3VyY2VBcGkKYGBgCgojIEhvdyB0byB1c2UKSW4gYmFzaWMgYW5kIG1vc3Qgc2ltcGxlIHNjZW5hcmlvOiBhZGQgT3BlbiBBUEkgZGVmaW5pdGlvbiBmaWxlIG9yIGZpbGVzIChgKi5qc29uYCBhbmQgYCoueWFtbGAgZm9ybWF0cyBhcmUgc3VwcG9ydGVkKSB0byB5b3UgcHJvamVjdCBhcyBgQWRkaXRpb25hbEZpbGVzYDoKCj5gYGB4bWwKPjxJdGVtR3JvdXA+Cj4gICA8QWRkaXRpb25hbEZpbGVzIEluY2x1ZGU9Ik9wZW5BcGkvUGV0cy5qc29uIj4KPiAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5Pgo+ICAgPC9BZGRpdGlvbmFsRmlsZXM+Cj4gICA8QWRkaXRpb25hbEZpbGVzIEluY2x1ZGU9Ik9wZW5BcGkvVXNlcnMueWFtbCI+Cj4gICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KPiAgIDwvQWRkaXRpb25hbEZpbGVzPgo+IDwvSXRlbUdyb3VwPiAKCm9yIGluIGZpbGUgcHJvcGVydGllcyBpbiBWaXN1YWwgU3R1ZGlvOgoKPGltZyBzcmM9Ii9Db21wZW50aW8uQXNzZXRzL0FkZGl0aW9uYWxGaWxlLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9Ijk1JSI+CgpZb3Ugd2lsbCBzZWUgZ2VuZXJhdGVkIGFic3RyYWN0IGNvbnRyb2xsZXJzIGluIAo+IERlcGVuZGVuY2llcyAtPiBBbmFseXplcnMgLT4gQ29tcGVudGlvLlNvdXJjZUFwaSA+IENvbXBlbnRpby5Tb3VyY2VBcGkuR2VuZXJhdG9yLgoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyBzcmM9Ii9Db21wZW50aW8uQXNzZXRzL0dlbmVyYXRlZEZpbGVzLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjUwJSI+CjwvcD4KCj4hIEZvciBub3cgdXNlIG9uZSBPcGVuIEFQSSBmaWxlIHBlciBjb250cm9sbGVyLiBbT3BlbiBBUEkgVGFnc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9ncm91cGluZy1vcGVyYXRpb25zLXdpdGgtdGFncy8pIGFyZSBub3Qgc3VwcG9ydGVkLgoKTm93IHlvdSBjYW4gdXNlIHRoZXNlIGJhc2UgY29udHJvbGxlcnMgZHVyaW5nIGltcGxlbWVudGF0aW9uIG9mIHlvdSBXZWIgQVBJLiBUaGUgRFRPJ3MgYXJlIGdlbmVyYXRlZCwgcm91dGVzIGFyZSBkZWZpbmVkLCBkb2N1bWVudGF0aW9uIGZvciB0aGUgQVBJIG1ldGhvZHMgYWxzbyB1c2VkIGZyb20gCk9wZW4gQVBJIGRlZmluaXRpb25zOgoKYGBgY3MKW0FwaUNvbnRyb2xsZXJdCltBcGlDb252ZW50aW9uVHlwZSh0eXBlb2YoRGVmYXVsdEFwaUNvbnZlbnRpb25zKSldCnB1YmxpYyBjbGFzcyBTdG9yZUNvbnRyb2xsZXIgOiBTdG9yZUNvbnRyb2xsZXJCYXNlCnsKCS8vLyA8aW5oZXJpdGRvYyAvPgoJcHVibGljIG92ZXJyaWRlIFRhc2s8SUFjdGlvblJlc3VsdD4gRGVsZXRlT3JkZXIoW0JpbmRSZXF1aXJlZF0gbG9uZyBvcmRlcklkKQoJewoJCXRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigpOwoJfQoKCS8vLyA8aW5oZXJpdGRvYyAvPgoJcHVibGljIG92ZXJyaWRlIFRhc2s8QWN0aW9uUmVzdWx0PElEaWN0aW9uYXJ5PHN0cmluZywgaW50Pj4+IEdldEludmVudG9yeSgpCgl7CgkJdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKCk7Cgl9CgoJLy8vIDxpbmhlcml0ZG9jIC8+CglwdWJsaWMgb3ZlcnJpZGUgVGFzazxBY3Rpb25SZXN1bHQ8T3JkZXI+PiBHZXRPcmRlckJ5SWQoW0JpbmRSZXF1aXJlZF0gbG9uZyBvcmRlcklkKQoJewoJCXRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigpOwoJfQoKCS8vLyA8aW5oZXJpdGRvYyAvPgoJcHVibGljIG92ZXJyaWRlIFRhc2s8QWN0aW9uUmVzdWx0PE9yZGVyPj4gUGxhY2VPcmRlcihbQmluZFJlcXVpcmVkLCBGcm9tQm9keV0gT3JkZXIgYm9keSkKCXsKCQl0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24oKTsKCX0KfQpgYGAKCj4hIFlvdSBuZWVkIHRvIGFkZCBgPGluaGVyaXRkb2MgLz5gIHRhZyB0byBzaG93IGRvY3VtZW50YXRpb24gZnJvbSBiYXNlIGNsYXNzIGluIFN3YWdnZXIuCgpBbmQgZXhhbXBsZSBvZiBnZW5lcmF0ZWQgY29kZSBmb3IgYmFzZSBjb250cm9sbGVyIGNsYXNzOgoKYGBgY3MKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyA8YXV0by1nZW5lcmF0ZWQ+Ci8vICAgICBHZW5lcmF0ZWQgdXNpbmcgdGhlIE5Td2FnIHRvb2xjaGFpbiB2MTMuMTMuMi4wIChOSnNvblNjaGVtYSB2MTAuNS4yLjAgKE5ld3RvbnNvZnQuSnNvbiB2MTIuMC4wLjIpKSAoaHR0cDovL05Td2FnLm9yZykKLy8gPC9hdXRvLWdlbmVyYXRlZD4KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNwcmFnbWEgd2FybmluZyBkaXNhYmxlIDEwOCAvLyBEaXNhYmxlICJDUzAxMDggJ3tkZXJpdmVkRHRvfS5Ub0pzb24oKScgaGlkZXMgaW5oZXJpdGVkIG1lbWJlciAne2R0b0Jhc2V9LlRvSnNvbigpJy4gVXNlIHRoZSBuZXcga2V5d29yZCBpZiBoaWRpbmcgd2FzIGludGVuZGVkLiIKCiNwcmFnbWEgd2FybmluZyBkaXNhYmxlIDExNCAvLyBEaXNhYmxlICJDUzAxMTQgJ3tkZXJpdmVkRHRvfS5SYWlzZVByb3BlcnR5Q2hhbmdlZChTdHJpbmcpJyBoaWRlcyBpbmhlcml0ZWQgbWVtYmVyICdkdG9CYXNlLlJhaXNlUHJvcGVydHlDaGFuZ2VkKFN0cmluZyknLiBUbyBtYWtlIHRoZSBjdXJyZW50IG1lbWJlciBvdmVycmlkZSB0aGF0IGltcGxlbWVudGF0aW9uLCBhZGQgdGhlIG92ZXJyaWRlIGtleXdvcmQuIE90aGVyd2lzZSBhZGQgdGhlIG5ldyBrZXl3b3JkLiIKCiNwcmFnbWEgd2FybmluZyBkaXNhYmxlIDQ3MiAvLyBEaXNhYmxlICJDUzA0NzIgVGhlIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbiBpcyBhbHdheXMgJ2ZhbHNlJyBzaW5jZSBhIHZhbHVlIG9mIHR5cGUgJ0ludDMyJyBpcyBuZXZlciBlcXVhbCB0byAnbnVsbCcgb2YgdHlwZSAnSW50MzI/JwoKI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgMTU3MyAvLyBEaXNhYmxlICJDUzE1NzMgUGFyYW1ldGVyICcuLi4nIGhhcyBubyBtYXRjaGluZyBwYXJhbSB0YWcgaW4gdGhlIFhNTCBjb21tZW50IGZvciAuLi4KCiNwcmFnbWEgd2FybmluZyBkaXNhYmxlIDE1OTEgLy8gRGlzYWJsZSAiQ1MxNTkxIE1pc3NpbmcgWE1MIGNvbW1lbnQgZm9yIHB1YmxpY2x5IHZpc2libGUgdHlwZSBvciBtZW1iZXIgLi4uIgoKI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgODA3MyAvLyBEaXNhYmxlICJDUzgwNzMgVGhlIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbiBpcyBhbHdheXMgJ2ZhbHNlJyBzaW5jZSBhIHZhbHVlIG9mIHR5cGUgJ1QnIGlzIG5ldmVyIGVxdWFsIHRvICdudWxsJyBvZiB0eXBlICdUPyciCgojcHJhZ21hIHdhcm5pbmcgZGlzYWJsZSAzMDE2IC8vIERpc2FibGUgIkNTMzAxNiBBcnJheXMgYXMgYXR0cmlidXRlIGFyZ3VtZW50cyBpcyBub3QgQ0xTLWNvbXBsaWFudCIKCm5hbWVzcGFjZSBDb21wZW50aW8uU291cmNlQXBpLldlYkV4YW1wbGUuQ29udHJvbGxlcnMKewogICAgdXNpbmcgU3lzdGVtID0gZ2xvYmFsOjpTeXN0ZW07CgogICAgW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIk5Td2FnIiwgIjEzLjEzLjIuMCAoTkpzb25TY2hlbWEgdjEwLjUuMi4wIChOZXd0b25zb2Z0Lkpzb24gdjEyLjAuMC4yKSkiKV0KICAgIFtNaWNyb3NvZnQuQXNwTmV0Q29yZS5NdmMuUm91dGUoImFwaS92MSIpXQogICAgcHVibGljIGFic3RyYWN0IGNsYXNzIFN0b3JlQ29udHJvbGxlckJhc2UgOiBNaWNyb3NvZnQuQXNwTmV0Q29yZS5NdmMuQ29udHJvbGxlckJhc2UKICAgIHsKICAgICAgICAvLy8gPHN1bW1hcnk+UmV0dXJucyBwZXQgaW52ZW50b3JpZXMgYnkgc3RhdHVzPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmV0dXJucz5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgICAgICBbTWljcm9zb2Z0LkFzcE5ldENvcmUuTXZjLkh0dHBHZXQsIE1pY3Jvc29mdC5Bc3BOZXRDb3JlLk12Yy5Sb3V0ZSgic3RvcmUvaW52ZW50b3J5IildCiAgICAgICAgcHVibGljIGFic3RyYWN0IFN5c3RlbS5UaHJlYWRpbmcuVGFza3MuVGFzazxNaWNyb3NvZnQuQXNwTmV0Q29yZS5NdmMuQWN0aW9uUmVzdWx0PFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLklEaWN0aW9uYXJ5PHN0cmluZywgaW50Pj4+IEdldEludmVudG9yeSgpOwogICAgICAgIC8vLyA8c3VtbWFyeT5QbGFjZSBhbiBvcmRlciBmb3IgYSBwZXQ8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lID0gImJvZHkiPm9yZGVyIHBsYWNlZCBmb3IgcHVyY2hhc2luZyB0aGUgcGV0PC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L3JldHVybnM+CiAgICAgICAgW01pY3Jvc29mdC5Bc3BOZXRDb3JlLk12Yy5IdHRwUG9zdCwgTWljcm9zb2Z0LkFzcE5ldENvcmUuTXZjLlJvdXRlKCJzdG9yZS9vcmRlciIpXQogICAgICAgIHB1YmxpYyBhYnN0cmFjdCBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzLlRhc2s8TWljcm9zb2Z0LkFzcE5ldENvcmUuTXZjLkFjdGlvblJlc3VsdDxPcmRlcj4+IFBsYWNlT3JkZXIoW01pY3Jvc29mdC5Bc3BOZXRDb3JlLk12Yy5Gcm9tQm9keV1bTWljcm9zb2Z0LkFzcE5ldENvcmUuTXZjLk1vZGVsQmluZGluZy5CaW5kUmVxdWlyZWRdIE9yZGVyIGJvZHkpOwogICAgICAgIC8vLyA8c3VtbWFyeT5GaW5kIHB1cmNoYXNlIG9yZGVyIGJ5IElEPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cGFyYW0gbmFtZSA9ICJvcmRlcklkIj5JRCBvZiBwZXQgdGhhdCBuZWVkcyB0byBiZSBmZXRjaGVkPC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L3JldHVybnM+CiAgICAgICAgW01pY3Jvc29mdC5Bc3BOZXRDb3JlLk12Yy5IdHRwR2V0LCBNaWNyb3NvZnQuQXNwTmV0Q29yZS5NdmMuUm91dGUoInN0b3JlL29yZGVyL3tvcmRlcklkfSIpXQogICAgICAgIHB1YmxpYyBhYnN0cmFjdCBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzLlRhc2s8TWljcm9zb2Z0LkFzcE5ldENvcmUuTXZjLkFjdGlvblJlc3VsdDxPcmRlcj4+IEdldE9yZGVyQnlJZChbTWljcm9zb2Z0LkFzcE5ldENvcmUuTXZjLk1vZGVsQmluZGluZy5CaW5kUmVxdWlyZWRdIGxvbmcgb3JkZXJJZCk7CiAgICAgICAgLy8vIDxzdW1tYXJ5PkRlbGV0ZSBwdXJjaGFzZSBvcmRlciBieSBJRDwvc3VtbWFyeT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWUgPSAib3JkZXJJZCI+SUQgb2YgdGhlIG9yZGVyIHRoYXQgbmVlZHMgdG8gYmUgZGVsZXRlZDwvcGFyYW0+CiAgICAgICAgW01pY3Jvc29mdC5Bc3BOZXRDb3JlLk12Yy5IdHRwRGVsZXRlLCBNaWNyb3NvZnQuQXNwTmV0Q29yZS5NdmMuUm91dGUoInN0b3JlL29yZGVyL3tvcmRlcklkfSIpXQogICAgICAgIHB1YmxpYyBhYnN0cmFjdCBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzLlRhc2s8TWljcm9zb2Z0LkFzcE5ldENvcmUuTXZjLklBY3Rpb25SZXN1bHQ+IERlbGV0ZU9yZGVyKFtNaWNyb3NvZnQuQXNwTmV0Q29yZS5NdmMuTW9kZWxCaW5kaW5nLkJpbmRSZXF1aXJlZF0gbG9uZyBvcmRlcklkKTsKICAgIH0KCiAgICBbU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIuR2VuZXJhdGVkQ29kZSgiTkpzb25TY2hlbWEiLCAiMTAuNS4yLjAgKE5ld3RvbnNvZnQuSnNvbiB2MTIuMC4wLjIpIildCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBPcmRlcgogICAgewogICAgICAgIFtOZXd0b25zb2Z0Lkpzb24uSnNvblByb3BlcnR5KCJpZCIsIFJlcXVpcmVkID0gTmV3dG9uc29mdC5Kc29uLlJlcXVpcmVkLkRpc2FsbG93TnVsbCwgTnVsbFZhbHVlSGFuZGxpbmcgPSBOZXd0b25zb2Z0Lkpzb24uTnVsbFZhbHVlSGFuZGxpbmcuSWdub3JlKV0KICAgICAgICBwdWJsaWMgbG9uZyBJZCB7IGdldDsgc2V0OyB9CgogICAgICAgIFtOZXd0b25zb2Z0Lkpzb24uSnNvblByb3BlcnR5KCJwZXRJZCIsIFJlcXVpcmVkID0gTmV3dG9uc29mdC5Kc29uLlJlcXVpcmVkLkRpc2FsbG93TnVsbCwgTnVsbFZhbHVlSGFuZGxpbmcgPSBOZXd0b25zb2Z0Lkpzb24uTnVsbFZhbHVlSGFuZGxpbmcuSWdub3JlKV0KICAgICAgICBwdWJsaWMgbG9uZyBQZXRJZCB7IGdldDsgc2V0OyB9CgogICAgICAgIFtOZXd0b25zb2Z0Lkpzb24uSnNvblByb3BlcnR5KCJxdWFudGl0eSIsIFJlcXVpcmVkID0gTmV3dG9uc29mdC5Kc29uLlJlcXVpcmVkLkRpc2FsbG93TnVsbCwgTnVsbFZhbHVlSGFuZGxpbmcgPSBOZXd0b25zb2Z0Lkpzb24uTnVsbFZhbHVlSGFuZGxpbmcuSWdub3JlKV0KICAgICAgICBwdWJsaWMgaW50IFF1YW50aXR5IHsgZ2V0OyBzZXQ7IH0KCiAgICAgICAgW05ld3RvbnNvZnQuSnNvbi5Kc29uUHJvcGVydHkoInNoaXBEYXRlIiwgUmVxdWlyZWQgPSBOZXd0b25zb2Z0Lkpzb24uUmVxdWlyZWQuRGlzYWxsb3dOdWxsLCBOdWxsVmFsdWVIYW5kbGluZyA9IE5ld3RvbnNvZnQuSnNvbi5OdWxsVmFsdWVIYW5kbGluZy5JZ25vcmUpXQogICAgICAgIHB1YmxpYyBTeXN0ZW0uRGF0ZVRpbWVPZmZzZXQgU2hpcERhdGUgeyBnZXQ7IHNldDsgfQoKICAgICAgICAvLy8gPHN1bW1hcnk+T3JkZXIgU3RhdHVzPC9zdW1tYXJ5PgogICAgICAgIFtOZXd0b25zb2Z0Lkpzb24uSnNvblByb3BlcnR5KCJzdGF0dXMiLCBSZXF1aXJlZCA9IE5ld3RvbnNvZnQuSnNvbi5SZXF1aXJlZC5EaXNhbGxvd051bGwsIE51bGxWYWx1ZUhhbmRsaW5nID0gTmV3dG9uc29mdC5Kc29uLk51bGxWYWx1ZUhhbmRsaW5nLklnbm9yZSldCiAgICAgICAgW05ld3RvbnNvZnQuSnNvbi5Kc29uQ29udmVydGVyKHR5cGVvZihOZXd0b25zb2Z0Lkpzb24uQ29udmVydGVycy5TdHJpbmdFbnVtQ29udmVydGVyKSldCiAgICAgICAgcHVibGljIE9yZGVyU3RhdHVzIFN0YXR1cyB7IGdldDsgc2V0OyB9CgogICAgICAgIFtOZXd0b25zb2Z0Lkpzb24uSnNvblByb3BlcnR5KCJjb21wbGV0ZSIsIFJlcXVpcmVkID0gTmV3dG9uc29mdC5Kc29uLlJlcXVpcmVkLkRpc2FsbG93TnVsbCwgTnVsbFZhbHVlSGFuZGxpbmcgPSBOZXd0b25zb2Z0Lkpzb24uTnVsbFZhbHVlSGFuZGxpbmcuSWdub3JlKV0KICAgICAgICBwdWJsaWMgYm9vbCBDb21wbGV0ZSB7IGdldDsgc2V0OyB9ID0gZmFsc2U7CiAgICB9CgogICAgW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIk5Kc29uU2NoZW1hIiwgIjEwLjUuMi4wIChOZXd0b25zb2Z0Lkpzb24gdjEyLjAuMC4yKSIpXQogICAgcHVibGljIGVudW0gT3JkZXJTdGF0dXMKICAgIHsKICAgICAgICBbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5FbnVtTWVtYmVyKFZhbHVlID0gQCJwbGFjZWQiKV0KICAgICAgICBQbGFjZWQgPSAwLAogICAgICAgIFtTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkVudW1NZW1iZXIoVmFsdWUgPSBAImFwcHJvdmVkIildCiAgICAgICAgQXBwcm92ZWQgPSAxLAogICAgICAgIFtTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkVudW1NZW1iZXIoVmFsdWUgPSBAImRlbGl2ZXJlZCIpXQogICAgICAgIERlbGl2ZXJlZCA9IDIsCiAgICB9Cn0KI3ByYWdtYSB3YXJuaW5nIHJlc3RvcmUgMTU5MQojcHJhZ21hIHdhcm5pbmcgcmVzdG9yZSAxNTczCiNwcmFnbWEgd2FybmluZyByZXN0b3JlIDQ3MgojcHJhZ21hIHdhcm5pbmcgcmVzdG9yZSAxMTQKI3ByYWdtYSB3YXJuaW5nIHJlc3RvcmUgMTA4CiNwcmFnbWEgd2FybmluZyByZXN0b3JlIDMwMTYKCmBgYAo+IFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBoZXJlIGlzIGNvbmNhdGVuYXRpb24gb2YgeW91IHByb2plY3QgbmFtZSBhbmQgZGlyZWN0b3J5IG9mIE9wZW4gQVBJIGRlZmluaXRpb25zLgo+IFRvIGNoYW5nZSBuYW1lc3BhY2Ugc2VlIGBDb25maWd1cmF0aW9uYCAgIAoKIyBDb25maWd1cmF0aW9uCgpUbyBjdXN0b21pemUgdGhlIGdlbmVyYXRlZCBjb2RlIGFuZCBvdmVycmlkZSBkZWZhdWx0cyBgU291cmNlQXBpYCAKW2NvbnN1bWVzIE1TQnVpbGQgcHJvcGVydGllcyBhbmQgbWV0YWRhdGFdKGh0dHBzOi8vZ2l0aHViLmNvbS9kb3RuZXQvcm9zbHluL2Jsb2IvbWFpbi9kb2NzL2ZlYXR1cmVzL3NvdXJjZS1nZW5lcmF0b3JzLmNvb2tib29rLm1kI2NvbnN1bWUtbXNidWlsZC1wcm9wZXJ0aWVzLWFuZC1tZXRhZGF0YSkuCgpUd28gY29uZmlndXJhdGlvbiBwcm9wZXJpZXMgeW91IGNhbiBkYWZpbmUgaW4gYCouY3Byb2pgIGZpbGUgdG8gY3VzdG9taXplIFNvdXJjZUFwaSBnZW5lcmF0b3I6Ci0gU291cmNlQXBpX0dlbmVyYXRvck5hbWVzcGFjZSAtIHlvdSBjYW4gZGVmaW5lIG5hbWVzcGFjZSBmb3IgZ2VuZXJhdGVkIGNsYXNzZXMKLSBTb3VyY2VBcGlfR2VuZXJhdGVPbmx5Q29udHJhY3RzIC0geW91IGNhbiBnZW5lcmF0ZSBvbmx5IERUTydzIHdpdGhvdXQgQ29udHJvbGxlciBiYXNlIGNsYXNzZXMuCgo+SW4gYSBjYXNlIGlmIHByb3BlcnRpZXMgYXJlIG5vdCBhZGRlZCwgZGVmYXVsdCB2YWx1ZXMgYXJlIHVzZWQ6IGBTb3VyY2VBcGlfR2VuZXJhdGVPbmx5Q29udHJhY3RzYCBpcyBzZXQgdG8gYEZhbHNlYCBhbmQgZm9yIGBTb3VyY2VBcGlfR2VuZXJhdG9yTmFtZXNwYWNlYCAKPmNvbmNhdGVuYXRpb24gb2YgeW91IHByb2plY3QgbmFtZSBhbmQgZGlyZWN0b3J5IG9mIE9wZW4gQVBJIGRlZmluaXRpb25zIGlzIHVzZWQKCkZvciBnbG9iYWwgY29uZmlndXJhdGlvbiAodXNlZCBmb3IgYWxsIGFkZGVkIE9wZW4gQVBJIGZpbGVzKSBkZWZpbmUgdGhlc2UgcGFyYW1ldGVycyBpbiBgPFByb3BlcnR5R3JvdXA+IHNlY3Rpb246CgpgYGB4bWwKPFByb3BlcnR5R3JvdXA+CiAgIDxUYXJnZXRGcmFtZXdvcms+bmV0NS4wPC9UYXJnZXRGcmFtZXdvcms+CiAgIDxHZW5lcmF0ZURvY3VtZW50YXRpb25GaWxlPnRydWU8L0dlbmVyYXRlRG9jdW1lbnRhdGlvbkZpbGU+CiAgIDxOb1dhcm4+JChOb1dhcm4pOzE1OTE8L05vV2Fybj4KICAgLi4uCiAgIDxTb3VyY2VBcGlfR2VuZXJhdG9yTmFtZXNwYWNlPkNvbXBlbnRpby5Tb3VyY2VBcGkuV2ViRXhhbXBsZS5Db250cm9sbGVyczwvU291cmNlQXBpX0dlbmVyYXRvck5hbWVzcGFjZT4KICAgPFNvdXJjZUFwaV9HZW5lcmF0ZU9ubHlDb250cmFjdHM+ZmFsc2U8L1NvdXJjZUFwaV9HZW5lcmF0ZU9ubHlDb250cmFjdHM+CjwvUHJvcGVydHlHcm91cD4KIGBgYAoKCllvdSBjYW4gYWxzbyBkZWZpbmUgdGhlc2UgcGFyYW1ldGVycyBwZXIgZmlsZSBpbiBgPEl0ZW1Hcm91cD5gOiAKCmBgYHhtbAo8SXRlbUdyb3VwPgogICA8QWRkaXRpb25hbEZpbGVzIEluY2x1ZGU9Ik9wZW5BcGlcUGV0cy55YW1sIi8+CiAgIDxBZGRpdGlvbmFsRmlsZXMgSW5jbHVkZT0iT3BlbkFwaVxTdG9yZS55YW1sIiBTb3VyY2VBcGlfR2VuZXJhdG9yTmFtZXNwYWNlPSJDb21wZW50aW8uU291cmNlQXBpLldlYkV4YW1wbGUuV2ViQXBpIi8+CiAgIDxBZGRpdGlvbmFsRmlsZXMgSW5jbHVkZT0iT3BlbkFwaVxVc2Vycy55YW1sIiBTb3VyY2VBcGlfR2VuZXJhdG9yTmFtZXNwYWNlPSJDb21wZW50aW8uU291cmNlQXBpLldlYkV4YW1wbGUuV2ViQXBpIiBTb3VyY2VBcGlfR2VuZXJhdGVPbmx5Q29udHJhY3RzID0gInRydWUiLz4KIDwvSXRlbUdyb3VwPgogPEltcG9ydCBQcm9qZWN0PSIuLlxDb21wZW50aW8uU291cmNlQXBpXEdlbmVyYXRvci5wcm9wcyIgLz4KYGBgCgpIZXJlIGluIGEgY2FzZSBnbG9iYWwgY29uZmlndXJhdGlvbiBleGlzdHMsIGZvciBgUGV0cy55YW1sYCBnbG9iYWwgY29uZmlnIGlzIHVzZWQsIGZvciBgU3RvcmUueWFtbGAgbmFtZXNwYWNlIGlzIG92ZXJyaWRlbiBhbmQgZm9yIGBVc2Vycy55YW1sYCAKYFNvdXJjZUFwaV9HZW5lcmF0b3JOYW1lc3BhY2VgIGFuZCBgU291cmNlQXBpX0dlbmVyYXRlT25seUNvbnRyYWN0c2AgYXJlIG92ZXJyaWRlbi4KCg== readmeEtag: '"ded6d51ffe7f2a935d0d442a4c1eae2ff8f63b20"' readmeLastModified: Thu, 02 Dec 2021 10:31:06 GMT repositoryId: 420145950 description: 'API first Open API code generator based on json or yaml definitions. ' created: '2021-10-22T15:16:23Z' updated: '2025-10-08T00:55:40Z' language: C# archived: false stars: 15 watchers: 2 forks: 0 owner: alekshura logo: https://avatars.githubusercontent.com/u/4995545?v=4 license: MIT repoEtag: '"4901f8d71fb048a0f052e59a264c8a479a08303aea30b7af1e589a88d3b46abd"' repoLastModified: Wed, 08 Oct 2025 00:55:40 GMT foundInMaster: true category: SDK id: 482e24e836e1e54d828cc864a71c9b8e - source: openapi3 tags repository: https://github.com/briankinney/airtable-swagger v3: true repositoryMetadata: base64Readme: >- YWlydGFibGUtc3dhZ2dlcgo9PT0KCkdlbmVyYXRlIE9BUyAzLjAgQVBJIGRlZmluaXRpb24gZnJvbSBBaXJ0YWJsZSBzY2hlbWEgb2JqZWN0CgpCYWNrZ3JvdW5kCi0tLQoKRXZlcnkgQWlydGFibGUgYmFzZSBoYXMgYW4gYXV0by1nZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiBwYWdlIHRoYXQgaXMgbGFyZ2VseSBkcml2ZW4gYnkgYW4gb2JqZWN0IHRoYXQgZGVzY3JpYmVzIHRoZQpzY2hlbWEgb2YgdGhlIGJhc2UuIFRoaXMgdXRpbGl0eSB3aWxsIGNvbnZlcnQgdGhlIHNjaGVtYSBvYmplY3QgaW50byBhbiBPQVMgMy4wIChzd2FnZ2VyKSBkb2N1bWVudCBzbyB5b3UgY2FuIHRha2UKYWR2YW50YWdlIG9mIHRvb2xzIHRoYXQgbWFrZSB1c2Ugb2YgdGhpcyBBUEkgZGVmaW5pdGlvbiBmb3JtYXQuCgoKRmlyZWZveCBBZGRvbgotLS0KCiMjIyBTZXR1cAoKW0Rvd25sb2FkIGxpbmtdKGh0dHBzOi8vYWRkb25zLm1vemlsbGEub3JnL2VuLVVTL2ZpcmVmb3gvYWRkb24vYWlydGFibGUtc3dhZ2dlci1nZW5lcmF0b3IvKQoKIyMjIFVzYWdlCgoxLiBPcGVuIHlvdXIgQWlydGFibGUgZG9jdW1lbnRhdGlvbiBwYWdlCjIuIENsaWNrIHRoaXMgaWNvbiBpbiB5b3VyIFVSTCBiYXIgdG8gb3BlbiB0aGUgc2lkZSBwYW5lbAoKICAgICFbVXJsIGJhciBpY29uXShwbHVnaW4vaWNvbnMvaWNvbnM4LXVzZXItbWFudWFsLTQ4LnBuZykKMy4gQ2xpY2sgdGhlIGJ1dHRvbi4gQW4gT0FTIGpzb24gYmxvYiBzaG91bGQgYXBwZWFyIGluIHRoZSB0ZXh0IGFyZWEgYWJvdmUKCkNvbW1hbmQgTGluZSBUb29sCi0tLQoKIyMjIFNldHVwCgpJbnN0YWxsIGZyb20gc291cmNlIHVzaW5nIG5wbQpgYGBiYXNoCnlvdXItY29tcHV0ZXI6L3BhdGgvdG8vYWlydGFibGUtc3dhZ2dlciQgbnBtIGkgLWcgLgpgYGAKCiMjIyBVc2FnZQoKMS4gVmlldyB0aGUgc291cmNlIG9mIHRoZSBBaXJ0YWJsZSBkb2N1bWVudGF0aW9uIHBhZ2UgZ2VuZXJhdGVkIGZvciB5b3VyIGJhc2UKMi4gRmluZCB0aGUgbGluZSBjb250YWluaW5nIGB3aW5kb3cubG9jYXRpb24gPSB7Li4ufWAKMy4gQ29weSB0aGUgdmFsdWUgb2YgYHdpbmRvdy5sb2NhdGlvbmAgdG8gYSBmaWxlCjQuIFJ1biB0aGUgdG9vbDoKICAgIGBgYGJhc2gKICAgIGFpcnRhYmxlLXN3YWdnZXIgL3BhdGgvdG8vYWlydGFibGUtc2NoZW1hLmpzb24KICAgIGBgYAo1LiBVc2UgdGhlIG91dHB1dCB3aXRoIHlvdXIgZmF2b3JpdGUgc3dhZ2dlciB0b29s readmeEtag: '"6cc029e73b65b39ce49fe4b13665497a3f8525d0"' readmeLastModified: Tue, 07 Nov 2023 23:23:33 GMT repositoryId: 183827168 description: Build OAS 3.0 API Definitions from Airtable Schema Object created: '2019-04-27T22:26:25Z' updated: '2025-03-31T20:22:56Z' language: JavaScript archived: false stars: 16 watchers: 2 forks: 3 owner: briankinney logo: https://avatars.githubusercontent.com/u/6935747?v=4 license: ISC repoEtag: '"73da60f24437e201bd56a83297c2103979e21553a5cde68370d3643a63ca8866"' repoLastModified: Mon, 31 Mar 2025 20:22:56 GMT foundInMaster: true category: Parsers id: 5f05bc19eecf433b1626fbc38eeea108 - source: openapi3 tags repository: https://github.com/greenstand/treetracker-query-api v3: true repositoryMetadata: base64Readme: >- IyBUcmVldHJhY2tlciBRdWVyeSBBUEkKClRoaXMgQVBJIGV4cG9zZXMgYSBSRVNUZnVsIGludGVyZmFjZSB0byBxdWVyeSB0aGUgdHJlZXRyYWNrZXIgZGF0YSwgY2FwdHVyZSwgcGxhbnRlciBhbmQgb3JnYW5pemF0aW9uIGFuZCBvdGhlcnMuCgpPbmUgb2YgcXVlcnkgYXBpJ3MgY2xpZW50IGlzIG91ciB3ZWIgbWFwIGFwcDogaHR0cHM6Ly9naXRodWIuY29tL0dyZWVuc3RhbmQvdHJlZXRyYWNrZXItd2ViLW1hcC1jbGllbnQvCgojIERldmVsb3BtZW50IHRvb2xraXQKClRoaXMgcmVwb3NpdG9yeSB3YXMgY3JlYXRlZCBmcm9tIEdyZWVuc3RhbmQncyB0ZW1wbGF0ZSBmb3IgbWljcm9zZXJ2aWNlIHByb2plY3RzLiBUaGlzIG1lYW5zIGl0IGNvbWVzIHdpdGggbWFueSBkZXZlbG9wbWVudCB0b29scyB0aGF0IHdlIHVzZSBmb3IgZGV2ZWxvcG1lbnQgYW5kIGRlcGxveW1lbnQuIEFzIGEgY29udHJpYnV0b3IgdG8gdGhpcyByZXBvc2l0b3J5LCB5b3Ugc2hvdWxkIGxlYXJuIGFuZCB1c2UgdGhlc2UgdG9vbHMuIFRoZXkgYXJlIG91dGxpbmVkIGJlbG93LgoKLSBDb252ZW50aW9uYWwgQ29tbWl0cwotIGh1c2t5Ci0gcHJldHRpZXIgLyBsaW50Ci0gZ2l0aHViIGFjdGlvbnMKLSBKZXN0Ci0gVHlwZVNjcmlwdAoKIyBHZXR0aW5nIFN0YXJ0ZWQKCiMjIFByb2plY3QgU2V0dXAKCk9wZW4gdGVybWluYWwgYW5kIG5hdmlnYXRlIHRvIGEgZm9sZGVyIHRvIGluc3RhbGwgdGhpcyBwcm9qZWN0OgoKYGBgCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vR3JlZW5zdGFuZC90cmVldHJhY2tlci1yZXBvc2l0b3J5LW5hbWUuZ2l0CgpgYGAKCkluc3RhbGwgYWxsIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXM6CgpgYGAKbnBtIGNpCmBgYAoKUnVuIHRoZSBzZXJ2ZXIgd2l0aCBkYXRhYmFzZSBzZXR0aW5nczoKCmBgYApEQVRBQkFTRV9VUkw9Wy4uLl0gbnBtIHJ1biBkZXYKYGBgCgpQbGVhc2Ugam9pbiBvdXIgc2xhY2sgY2hhbm5lbCB0byBnZXQgaGVscCB3aXRoIHNldHRpbmcgdXAgdGhlIGRhdGFiYXNlLgoKIyBXb3JrZmxvdyB3aXRoIEdpdGh1YgoKW2NoZWNrIG91dCBoZXJlXShodHRwczovL2dpdGh1Yi5jb20vR3JlZW5zdGFuZC90cmVldHJhY2tlci13ZWItbWFwLWNsaWVudCN3b3JrZmxvdy13aXRoLWdpdGh1YikKCiMgRGV2ZWxvcG1lbnQgU3BlY2lmaWNhdGlvbgoKLSBFdmVyeSBlbmRwb2ludCBzaG91bGQgaGF2ZSBhIGUyZSB0ZXN0IHRvIGNvdmVyIHRoZSBtYWluIHVzZSBjYXNlcy4KCi0gRm9yIGVkZ2UgY2FzZXMsIHdlIGNhbiB1c2UgdW5pdCB0ZXN0cyB0byB0ZXN0IHRoZSBlZGdlIGNhc2VzLCBkb24ndCBuZWVkIHRvIHVzZSBlMmUgdGVzdCB0byBjb3ZlciBhbGwgY2FzZXMsIGUyZSBqdXN0IGNvdmVyIG1haW4gd29ya2Zsb3cuCgotIENsYXNzIG5hbWUgc2hvdWxkIGJlIGNhcGl0YWxpemVkLgoKLSBEbyBub3Qgd3JpdGUgU1FMIGRpcmVjdGx5IGluIGByb3V0ZXJgIGFuZCBgbW9kZWxgIGZpbGVzLCB0aGVyZSBpcyBhIGZ1bmN0aW9uIGNhbGxlZCBgZGVsZWdhdGVSZXBvc2l0b3J5YCBjYW4gaGVscCB0byBzaW1wbGlmeSBzb21lIHNpbXBsZSBjYXNlczsKCi0gUGxlYXNlIHVzZSBgbG9nbGV2ZWxgIHRvIHJlcGxhY2UgYGNvbnNvbGUubG9nYCwgYW5kIGFsd2F5cyB1c2UgYXBwcm9wcmlhdGUgbG9nIGxldmVsIHRvIGxvZy4KCiMgQXJjaGl0ZWN0dXJlIG9mIHRoaXMgcHJvamVjdAoKVGhpcyBwcm9qZWN0IHVzZSBtdWx0aXBsZSBsYXllciBzdHJ1Y3R1cmUgdG8gYnVpbGQgdGhlIHdob2xlIHN5c3RlbS4gVGhlIGFyY2hpdGVjdHVyZSBmb2xsb3dzIHNvbWUgcHJpbmNpcGxlcyBvZiBbRG9tYWluIERyaXZlbiBEZXNpZ25dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RvbWFpbi1kcml2ZW5fZGVzaWduKS4gQW5kIGluc3BpcmVkIGJ5IHRoaXMgYXJ0aWNsZTogaHR0cHM6Ly9tZWRpdW0uY29tL3Nwb3RsaWdodC1vbi1qYXZhc2NyaXB0L2RvbWFpbi1kcml2ZW4tZGVzaWduLWZvci1qYXZhc2NyaXB0LWRldmVsb3BlcnMtOWZjM2Y2ODE5MzFhCgpXZSBjb21wb3NlL2J1aWxkIHRoZSBtb2RlbCBpbnN0YW5jZSBpbiBhIGZ1bmN0aW9uYWwgc3R5bGUsIHRoZW4gZXhlY3V0ZSB0aGUgYnVzaW5lc3MuCgotICoqUHJvdG9jb2wgbGF5ZXIqKgoKSSB0aGluayB3ZSBjYW4gYWxzbyBjYWxsIGl0IHRoZSBBcHBsaWNhdGlvbiBMYXllciwgYSB0ZXJtIGluIHRoZSBEREQsIHRoZSBlbnRyeSBvZiB0aGlzIHByb2plY3QuCgpUaGlzIG1pY3Jvc2VydmljZSBvZmZlcnMgUkVTVEZ1bCBBUEkgaW50ZXJmYWNlIGJhc2VkIG9uIEhUVFAgcHJvdG9jb2wuIFdlIHVzZSBFeHByZXNzIHRvIGhhbmRsZSBhbGwgSFRUUCByZXF1ZXN0cy4KClRoZSBFeHByZXNzLXJvdXRlcnMgd29yayBsaWtlIHRoZSBjb250cm9sbGVyIHJvbGUgaW4gTVZDLCB0aGV5IHJlY2VpdmUgdGhlIHJlcXVlc3RzIGFuZCBwYXJhbWV0ZXJzIGZyb20gY2xpZW50LCBhbmQgdHJhbnNsYXRlIGl0IGFuZCBkaXNwYXRjaCB0YXNrcyB0byBhcHByb3ByaWF0ZSBidXNpbmVzcyBtb2RlbHMuIFRoZW4gcmVjZWl2ZSB0aGUgcmVzdWx0IGZyb20gdGhlbSwgdHJhbnNsYXRlIHRvIHRoZSAndmlldycsIHRoZSBKU09OIHJlc3BvbnNlLCB0byBjbGllbnQuCgotICoqTW9kZWwgbGF5ZXIqKgoKVGhlIGJ1c2luZXNzIG1vZGVsLCBtb3N0IG9mIHRoZSBidXNpbmVzcyBsb2dpYyBpcyBoZXJlLiBXZSBhcmUgY29uc2lkZXJpbmcgcHV0IG1vc3Qgb2YgdGhlIGJ1c2luZXNzIGxvZ2ljIGluIHRoZSBtb2RlbCBsYXllci4gU28gaXQgc2hvdWxkIGJlIHRoZSB0aGlja2VzdCBsYXllciwgaW5jbHVkaW5nIGFsbCB0aGUgYnVzaW5lc3MgbG9naWMsIGFuZCBidWlsZCB1cCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gbW9kZWxzKGJ1c2luZXNzKS4KCi0gKipJbmZyYXN0cnVjdHVyZSBsYXllcioqCgogIC0gKipSZXBvc2l0b3J5IGxheWVyKioKCiAgICBSZXBvc2l0b3J5IGlzIHJlc3BvbnNpYmxlIGZvciBjb21tdW5pY2F0aW5nIHdpdGggdGhlIHJlYWwgZGF0YWJhc2UuCgogICAgQWxsIHRoZSBTUUwgc3RhdGVtZW50cyBzaG91bGQgYmUgaGVyZS4KCiAgLSAqKk90aGVycyoqCgogICAgRm9yIGV4YW1wbGUsIHRoZSBNZXNzYWdlIFF1ZXVlLgoKIyBBYm91dCB0aGUgZG9jdW1lbnRhdGlvbi9zcGVjaWZpY2F0aW9uCgpXZSB1c2UgT3BlbkFQSSAzLjAgdG8gZG9jdW1lbnQgdGhlIEFQSS4KCllvdSBjYW4gY29weSB0aGUgeWFtbCBmaWxlIGFuZCBpbXBvcnQgdG8gc3dhZ2dlci11aSB0byBzZWUgdGhlIEFQSS4KCiMgSG93IHRvIHRlc3QKCiMjIFVuaXQgdGVzdAoKVG8gcnVuIHRoZSB1bml0IHRlc3RzOgoKYGBgCm5wbSBydW4gdGVzdC11bml0CmBgYAoKIyMgRW5kIHRvIEVuZCB0ZXN0CgpBbGwgdGhlIGVuZCB0byBlbmQgdGVzdHMgYXJlIGxvY2F0ZWQgdW5kZXIgZm9sZGVyIGBfX3Rlc3RzX18vZTJlYCwgdGhlIHRlc3Qgd2lsbCBydW4gYWdhaW5zdCB0aGUgZGV2IGRhdGFiYXNlLgoKVG8gcnVuIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0OgoKUnVuIHRlc3RzOgoKYGBgCm5wbSBydW4gdGVzdC1lMmUKYGBgCgoqKklmIGVycm9yczoqKgoKYGBgCgpEQVRBQkFTRV9VUkwgaXMgdW5kZWZpbmVkCgpvcgoKeyAiY29kZSI6IDUwMCwibWVzc2FnZSI6ICJVbmtub3duIGVycm9yIChzZWxmIHNpZ25lZCBjZXJ0aWZpY2F0ZSBpbiBjZXJ0aWZpY2F0ZSBjaGFpbikiIH0KYGBgCgoqKkZvbGxvd3MgdGhvc2Ugc3RlcHM6KioKCjEtIEdvIHRvIHRoZSAuZW52IGZpbGUsIGNvcHkgdGhlIERBVEFCQVNFX1VSTCB3aXRoIGl0cyB2YWx1ZS4KCjItIEFkZCBpdCB3aXRoIE5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ9JzAnICwgbnBtIHJ1biB0ZXN0LWUyZSwgYW5kIHJ1biB0aGUgdGVzdHMuCgpGb3IgZXhhbXBsZToKCmBgYAoKREFUQUJBU0VfVVJMPVt0aGUgbGluayBwcm92aWRlZF0gTk9ERV9UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRD0nMCcgbnBtIHJ1biB0ZXN0LWUyZQpgYGAKCi4KLgouCi4KLgouCi4K readmeEtag: '"5388e765dcc1d00f3a990488d39db21fd04ff112"' readmeLastModified: Mon, 08 Jul 2024 00:52:41 GMT repositoryId: 431701346 description: >- To fetch Greenstand map data for client's like web map, wallet app, and so on. created: '2021-11-25T03:25:18Z' updated: '2025-10-06T09:12:35Z' language: TypeScript archived: false stars: 16 watchers: 9 forks: 60 owner: Greenstand logo: https://avatars.githubusercontent.com/u/25363578?v=4 license: GPL-3.0 repoEtag: '"f8917d5ccef34e3f184191ea9a435e1a90b22182397f2265f33854d1303fc949"' repoLastModified: Mon, 06 Oct 2025 09:12:35 GMT foundInMaster: true category: Server Implementations id: 7d2ec66434cc6bbf5bad52bd1d32e0f7 - source: - openapi3 tags - openapi31 tags repository: https://github.com/ts-oas/ts-oas v3: true v3_1: true id: 8d7ac7c8151dcbc595ddbbcc548ccdad repositoryMetadata: base64Readme: >- IyBUeXBlc2NyaXB0IE9wZW5BUEkgU3BlYyBHZW5lcmF0b3IKClshW05QTSB2ZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L3RzLW9hcy5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS90cy1vYXMpCiFbR2l0SHViIExpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvdHMtb2FzL3RzLW9hcykKIVtOUE0gVW5wYWNrZWQgU2l6ZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdW5wYWNrZWQtc2l6ZS90cy1vYXMpCgpBdXRvbWF0aWNhbGx5IGdlbmVyYXRlIE9wZW5BUEkgKGZvcm1lcmx5IFN3YWdnZXIpIHNwZWNpZmljYXRpb25zIGZyb20gb3BpbmlvbmF0ZWQgVHlwZXNjcmlwdCB0eXBlcy4gU3VwcG9ydHMgT3BlbkFQSSAqKnYzLjEqKiBhbmQgKip2My4wKiouIFJlcXVpcmVzIGludGVyZmFjZXMvdHlwZXMgaW4gYSBzcGVjaWZpYyBmb3JtYXQuCgojIyBCZW5lZml0cwoKLSAgICoqV3JpdGUgb25jZSwgdXNlIG1hbnkuKiogVHlwZXNjcmlwdCBwcm92aWRlcyBhIGZsdWVudCB3YXkgdG8gZGVjbGFyZSBBUEkgc3BlY2lmaWNhdGlvbnMuIFdpdGggYHRzLW9hc2AsIHlvdSBjYW4gdXNlIHRoZSBnZW5lcmF0ZWQgc3BlY3MgZm9yIGRvY3VtZW50YXRpb24sIGlucHV0IHZhbGlkYXRpb24gKGUuZy4gd2l0aCBBSlYpLCBhbmQgc2VyaWFsaXphdGlvbiDigJQgd2hpbGUgc3RpbGwgcmV1c2luZyB0aGUgb3JpZ2luYWwgdHlwZXMgaW4geW91ciBidXNpbmVzcyBsb2dpYywgdW5pdCB0ZXN0cywgYW5kIG1vcmUuCi0gICAqKkF1dG9tYXRpb24gZmlyc3QuKiogU2ltcGx5IHdyaXRlIGEgc2NyaXB0IG9yIHVzZSB0aGUgQ0xJIHRvIHJlZ2VuZXJhdGUgc3BlY3MgYWNjb3JkaW5nbHkgYWZ0ZXIgYW55IHR5cGUgY2hhbmdlcy4KLSAgICoqRnJhbWV3b3JrLWFnbm9zdGljLioqIFdvcmtzIHNlYW1sZXNzbHkgd2l0aCBhbnkgc2VydmVyLXNpZGUgZnJhbWV3b3JrLCB1bmxpa2Ugc29tZSBvdGhlciB0b29scy4KCiMjIEZlYXR1cmVzCgotICAgQm90aCBbUHJvZ3JhbW1hdGljXSgjYS1xdWljay1leGFtcGxlKSBhbmQgW0NvbW1hbmQgbGluZV0oI2NsaSkgc3VwcG9ydC4KLSAgIFJlZmVyZW5jZSBzY2hlbWFzIGFuZCBjb21wb25lbnRzLiBHZW5lcmF0ZSBzY2hlbWEgcmVmZXJlbmNlcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlaXIgVHlwZXNjcmlwdCB0eXBlIHJlZmVyZW5jZXMuCi0gICBTdXBwb3J0cyBKU0RvYyBhbm5vdGF0aW9ucy4gV2l0aCBib3RoIHByZS1kZWZpbmVkIGFuZCBjdXN0b20ga2V5d29yZHMsIG1ldGFkYXRhIGNhbiBiZSBpbmNsdWRlZCBpbiBldmVyeSBzY2hlbWEgb2JqZWN0LgotICAgU2NoZW1hIHByb2Nlc3NvciBmdW5jdGlvbiBmb3IgYW55IGN1c3RvbSBwb3N0LXByb2Nlc3NpbmcgKGlmIEpTRG9jIGFubm90YXRpb25zIGFyZW4ndCBlbm91Z2gpLgotICAgR2VuZXJhdGUganNvbi1zY2hlbWFzIHNlcGFyYXRlbHkuCi0gICBUeXBlc2NyaXB0IDQgYW5kIDUgY29tcGxpYW50LgoKIyMgSW5zdGFsbAoKYGBgCm5wbSBpIHRzLW9hcwpgYGAKCiMjIEdldHRpbmcgU3RhcnRlZAoKRmlyc3RseSwgV2UgbmVlZCB0eXBlcyBmb3IgZWFjaCBBUEksIGNvbXBhdGlibGUgd2l0aCB0aGUgZm9sbG93aW5nIGZvcm1hdDoKCmBgYHRzCnR5cGUgQXBpID0gewogICAgcGF0aDogc3RyaW5nOwogICAgbWV0aG9kOiBIVFRQTWV0aG9kOwogICAgYm9keT86IFJlY29yZDxzdHJpbmcsIGFueT47CiAgICBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OwogICAgcXVlcnk/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OwogICAgcmVzcG9uc2VzOiBQYXJ0aWFsPFJlY29yZDxIdHRwU3RhdHVzQ29kZSwgYW55Pj47CiAgICBzZWN1cml0eT86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPltdOwp9OwpgYGAKCiMjIyBBIHF1aWNrIGV4YW1wbGUKCldlIGhhdmUgYGludGVyZmFjZXMudHNgIHdoZXJlIG91ciBBUEkgdHlwZXMgYXJlIHByZXNlbnQ6CgpgYGB0cwppbXBvcnQgeyBBcGlNYXBwZXIgfSBmcm9tICJ0cy1vYXMiOwovLyBBcGlNYXBwZXIgb25seSB2YWxpZGF0ZXMgdGhlIHR5cGUgc3RydWN0dXJlIGF0IGNvbXBpbGUgdGltZSwKLy8gaXQncyBvcHRpb25hbCwgb21pdCBpdCBpZiB5b3UgbmVlZCBkZXBlbmRlbmN5LWZyZWUgaW50ZXJmYWNlIGZpbGVzLgoKZXhwb3J0IHR5cGUgR2V0QmFyQVBJID0gewogICAgcGF0aDogIi9mb28vYmFyL3tpZH0iOwogICAgbWV0aG9kOiAiR0VUIjsKICAgIHBhcmFtczogewogICAgICAgIGlkOiBudW1iZXI7CiAgICB9OwogICAgcXVlcnk6IHsKICAgICAgICBmcm9tX2RhdGU6IERhdGU7CiAgICB9OwogICAgcmVzcG9uc2VzOiB7CiAgICAgICAgLyoqIEBjb250ZW50VHlwZSBhcHBsaWNhdGlvbi9qc29uICovCiAgICAgICAgIjIwMCI6IEJhcjsKICAgICAgICAiNDA0IjogeyBzdWNjZXNzOiBmYWxzZSB9OwogICAgfTsKfTsKCi8qKgogKiBTYW1wbGUgZGVzY3JpcHRpb24uCiAqIEBzdW1tYXJ5IEFkZCBhIEJhcgogKi8KZXhwb3J0IHR5cGUgQWRkQmFyQVBJID0gQXBpTWFwcGVyPHsKICAgIHBhdGg6ICIvZm9vL2JhciI7CiAgICBtZXRob2Q6ICJQT1NUIjsKICAgIGJvZHk6IEJhcjsKICAgIHJlc3BvbnNlczogewogICAgICAgIC8qKiBObyBjb250ZW50ICovCiAgICAgICAgIjIwMSI6IG5ldmVyOwogICAgfTsKfT47CgpleHBvcnQgdHlwZSBCYXIgPSB7CiAgICAvKioKICAgICAqIERlc2NyaXB0aW9uIGZvciBiYXJOYW1lLgogICAgICogQG1pbkxlbmd0aCAxMAogICAgICovCiAgICBiYXJOYW1lOiBzdHJpbmc7CiAgICBiYXJUeXBlOiAib25lIiB8ICJ0d28iOwp9OwpgYGAKCkluIGBzY3JpcHQudHNgIGZpbGU6CgpgYGB0cwppbXBvcnQgeyBjcmVhdGVQcm9ncmFtLCBUc09BUyB9IGZyb20gInRzLW9hcyI7CmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICJwYXRoIjsKCi8vIGNyZWF0ZSBhIFR5cGVzY3JpcHQgcHJvZ3JhbS4gb3IgYW55IGdlbmVyaWMgdHMgcHJvZ3JhbSBjYW4gYmUgdXNlZC4KY29uc3QgdHNQcm9ncmFtID0gY3JlYXRlUHJvZ3JhbShbImludGVyZmFjZXMudHMiXSwgeyBzdHJpY3ROdWxsQ2hlY2tzOiB0cnVlIH0sIHJlc29sdmUoKSk7CgovLyBpbml0aWF0ZSB0aGUgT0FTIGdlbmVyYXRvci4KY29uc3QgdHNvYXMgPSBuZXcgVHNPQVModHNQcm9ncmFtLCB7IHJlZjogdHJ1ZSB9KTsKCi8vIGdldCB0aGUgY29tcGxldGUgT0FTLiBkZXRlcm1pbmUgdHlwZSBuYW1lcyAoUmVnZXgvZXhhY3QgbmFtZSkgdG8gYmUgY29uc2lkZXJlZCBmb3Igc3BlY3MuCmNvbnN0IHNwZWNPYmplY3QgPSB0c29hcy5nZXRPcGVuQXBpU3BlYyhbL0FQSSQvXSk7IC8vIGFsbCB0eXBlcyB0aGF0IGVuZHMgd2l0aCAiQVBJIgoKLy8gbG9nIHJlc3VsdHM6CmNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHNwZWNPYmplY3QsIG51bGwsIDQpKTsKCi8vIG9yIHdyaXRlIGludG8gYSB0cyBmaWxlOgovLyB3cml0ZUZpbGVTeW5jKCIuL3NjaGVtYS50cyIsIGBjb25zdCBzcGVjID0gJHtpbnNwZWN0KHNwZWNPYmplY3QsIHsgZGVwdGg6IG51bGwgfSl9O1xuYCk7CmBgYAoKUnVuIHRoZSBhYm92ZSBzY3JpcHQuCgo8ZGV0YWlscz48c3VtbWFyeT5FeHBlY3RlZCBvdXRwdXQ8L3N1bW1hcnk+CgpgYGBqc29uCnsKICAgICJvcGVuYXBpIjogIjMuMS4wIiwKICAgICJpbmZvIjogewogICAgICAgICJ0aXRsZSI6ICJPcGVuQVBJIHNwZWNpZmljYXRpb24iLAogICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIgogICAgfSwKICAgICJjb21wb25lbnRzIjogewogICAgICAgICJzY2hlbWFzIjogewogICAgICAgICAgICAiQmFyIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgICAgICJiYXJOYW1lIjogewogICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGVzY3JpcHRpb24gZm9yIGJhck5hbWUuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIm1pbkxlbmd0aCI6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiYmFyVHlwZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImVudW0iOiBbIm9uZSIsICJ0d28iXSwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiBbImJhck5hbWUiLCAiYmFyVHlwZSJdCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LAogICAgInBhdGhzIjogewogICAgICAgICIvZm9vL2Jhci97aWR9IjogewogICAgICAgICAgICAiZ2V0IjogewogICAgICAgICAgICAgICAgIm9wZXJhdGlvbklkIjogIkdldEJhckFQSSIsCiAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImlkIiwKICAgICAgICAgICAgICAgICAgICAgICAgImluIjogInBhdGgiLAogICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAibnVtYmVyIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImZyb21fZGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJpbiI6ICJxdWVyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCI6ICJkYXRlLXRpbWUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInJlc3BvbnNlcyI6IHsKICAgICAgICAgICAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRlbnQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9CYXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiNDA0IjogewogICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRlbnQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKi8qIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1Y2Nlc3MiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVudW0iOiBbZmFsc2VdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IFsic3VjY2VzcyJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiL2Zvby9iYXIiOiB7CiAgICAgICAgICAgICJwb3N0IjogewogICAgICAgICAgICAgICAgIm9wZXJhdGlvbklkIjogIkFkZEJhckFQSSIsCiAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2FtcGxlIGRlc2NyaXB0aW9uLiIsCiAgICAgICAgICAgICAgICAic3VtbWFyeSI6ICJBZGQgYSBCYXIiLAogICAgICAgICAgICAgICAgInJlcXVlc3RCb2R5IjogewogICAgICAgICAgICAgICAgICAgICJjb250ZW50IjogewogICAgICAgICAgICAgICAgICAgICAgICAiKi8qIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9CYXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgInJlc3BvbnNlcyI6IHsKICAgICAgICAgICAgICAgICAgICAiMjAxIjogewogICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTm8gY29udGVudCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KYGBgCgo8L2RldGFpbHM+CgojIyMgR2V0IGpzb24tc2NoZW1hcyBzZXBhcmF0ZWx5CgpTY2hlbWFzIHdpdGggYW55IGZvcm1hdCBjYW4gYmUgZ2VuZXJhdGVkIGJ5OgoKYGBgdHMKY29uc3Qgc2NoZW1hID0gdHNvYXMuZ2V0U2NoZW1hcyhbIkJhciJdKTsKY29uc29sZS5sb2coc2NoZW1hKTsKYGBgCgo8ZGV0YWlscz48c3VtbWFyeT5FeHBlY3RlZCBvdXRwdXQ8L3N1bW1hcnk+CgpgYGAKewogIEJhcjogewogICAgdHlwZTogJ29iamVjdCcsCiAgICBwcm9wZXJ0aWVzOiB7CiAgICAgIGJhck5hbWU6IHsKICAgICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uIGZvciBiYXJOYW1lLicsCiAgICAgICAgbWluTGVuZ3RoOiAxMCwKICAgICAgICB0eXBlOiAnc3RyaW5nJwogICAgICB9LAogICAgICBiYXJUeXBlOiB7IGVudW06IFsgJ29uZScsICd0d28nIF0sIHR5cGU6ICdzdHJpbmcnIH0KICAgIH0sCiAgICByZXF1aXJlZDogWyAnYmFyTmFtZScsICdiYXJUeXBlJyBdCiAgfQp9CmBgYAoKPC9kZXRhaWxzPgoKIyMgQ0xJCgpDb21tYW5kIGxpbmUgdG9vbCBpcyBkZXNpZ25lZCB0byBiZWhhdmUganVzdCBsaWtlIHRoZSBwcm9ncmFtbWF0aWMgd2F5LiBPbmNlIGl0IGhhcyBiZWVuIGluc3RhbGxlZCwgQ0xJIGNhbiBiZSBleGVjdXRlZCB1c2luZyBgbnB4IHRzLW9hc2AsIG9yIGp1c3QgYHRzLW9hc2AgaWYgaW5zdGFsbGVkIGdsb2JhbGx5LgoKYGBgClVzYWdlOiB0cy1vYXMgPGZpbGUtcGF0aHM+IDx0eXBlLW5hbWVzPiBbb3B0aW9uc10KCjxmaWxlLXBhdGhzPiA6IENvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHJlbGF0aXZlIC50cyBmaWxlIHBhdGhzIHdoaWNoIGNvbnRhaW4KdHlwZXMuCjx0eXBlLW5hbWVzPiA6IENvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHR5cGUgbmFtZXMgKFJlZ2V4L2V4YWN0IG5hbWUpIHRvIGJlCmNvbnNpZGVyZWQgaW4gZmlsZXMuCgpPcHRpb25zOgogIC1jLCAtLXRzY29uZmlnLWZpbGUgIFBhdGggdG8gYSBKU09OIHRzY29uZmlnIGZpbGUuICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogIC1wLCAtLW9wdGlvbnMtZmlsZSAgIFBhdGggdG8gYSBKU09OIGZpbGUgY29udGFpbmluZyAndHMtb2FzJyBPcHRpb25zLiBSZWZlciB0bwogICAgICAgICAgICAgICAgICAgICAgIHRoZSBkb2N1bWVudGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogIC1zLCAtLXNwZWMtZmlsZSAgICAgIFBhdGggdG8gYSBKU09OIGZpbGUgY29udGFpbmluZyBhZGRpdGlvbmFsIE9wZW5BUEkKICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY2F0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KICAtZSwgLS1zY2hlbWEtb25seSAgICBPbmx5IGdlbmVyYXRlcyBwdXJlIHNjaGVtYXMgZnJvbSBnaXZlbiB0eXBlcy4KICAgICAgICAgICAgICAgICAgICAgICAoJ3NwZWMtZmlsZScgd2lsbCBiZSBpZ25vcmVkLikgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KICAtbywgLS1vdXRwdXQgICAgICAgICBQYXRoIHRvIGEgSlNPTiBmaWxlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHdyaXRlIHRoZQogICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC4gV2lsbCBjcmVhdGUgdGhlIGZpbGUgaWYgbm90IGV4aXN0ZWQuICAgICBbc3RyaW5nXQogIC1oLCAtLWhlbHAgICAgICAgICAgIFNob3cgaGVscCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXQogIC12LCAtLXZlcnNpb24gICAgICAgIFNob3cgdmVyc2lvbiBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXQoKRXhhbXBsZXM6CiAgdHMtb2FzIC4vaW50ZXJmYWNlcy9zYW1wbGUudHMgbXlBcGksbXlTZWNvbmRBcGkKCmBgYAoKIyMgRG9jdW1lbnRhdGlvbnMKCiMjIyBKU0RvYyBhbm5vdGF0aW9ucwoKfCBLZXl3b3JkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpZWxkcyAgfCBFeGFtcGxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgQGRlZmF1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbnkgICAgIHwgYEBkZWZhdWx0IGZvb2AgYEBkZWZhdWx0IDNgIGBAZGVmYXVsdCBbImEiLCAiYiIsICJjIl1gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBAZm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZ3MgfCBgQGZvcm1hdCBlbWFpbGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEBpdGVtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJyYXlzICB8IGBAaXRlbXMubWluaW11bSAxYCBgQGl0ZW1zLmZvcm1hdCBlbWFpbGAgYEBpdGVtcyB7InR5cGUiOiJpbnRlZ2VyIiwgIm1pbmltdW0iOjB9YCBgQGRlZmF1bHQgWyJhIiwgImIiLCAiYyJdYCB8CnwgQCRyZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbnkgICAgIHwgYEByZWYgaHR0cDovL215LXNjaGVtYS5vcmdgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBAdGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFueSAgICAgfCBgQHRpdGxlIGZvb2AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEBtaW5pbXVtPGJyPkBtYXhpbXVtPGJyPkBleGNsdXNpdmVNaW5pbXVtPGJyPkBleGNsdXNpdmVNYXhpbXVtIHwgbnVtYmVycyB8IGBAbWluaW11bSAxMGAgYEBtYXhpbXVtIDEwMGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQG1pbkxlbmd0aDxicj5AbWF4TGVuZ3RoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmdzIHwgYEBtaW5MZW5ndGggMTBgIGBAbWF4TGVuZ3RoIDEwMGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBAbWluSXRlbXM8YnI+QG1heEl0ZW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFycmF5cyAgfCBgQG1pbkl0ZW1zIDEwYCBgQG1heEl0ZW1zIDEwMGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEBtaW5Qcm9wZXJ0aWVzPGJyPkBtYXhQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2JqZWN0cyB8IGBAbWluUHJvcGVydGllcyAxMGAgYEBtYXhQcm9wZXJ0aWVzIDEwMGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQGFkZGl0aW9uYWxQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvYmplY3RzIHwgYEBhZGRpdGlvbmFsUHJvcGVydGllc2AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBAaWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFueSAgICAgfCBgQGlnbm9yZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEBwYXR0ZXJuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5ncyB8IGBAcGF0dGVybiAvXlswLTlhLXpdKyQvZ2AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQGV4YW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbnkgICAgIHwgYEBleGFtcGxlIGZvb2AgYEBleGFtcGxlIHsiYWJjIjp0cnVlfWAgYEBleGFtcGxlIHJlcXVpcmUoJy4vZXhhbXBsZXMudHMnKS5teUV4YW1wbGVDb25zdGAgICAgICAgICAgICAgICAgICAgIHwKfCBAZXhhbXBsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFueSAgICAgfCBgQGV4YW1wbGUgWyJmb28iLCAiYmFyIl1gIGBAZXhhbXBsZSByZXF1aXJlKCcuL2V4YW1wbGVzLnRzJykubXlFeGFtcGxlQXJyYXlDb25zdGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKIyMjIyBTcGVjaWFsIGtleXdvcmRzIGZvciByb290IG9mIEFQSSB0eXBlcwoKfCBLZXl3b3JkICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgQHN1bW1hcnkgICAgICAgICAgfCBQcm92aWRlcyBhIGJyaWVmIHN1bW1hcnkgb2YgdGhlIEFQSSBlbmRwb2ludCAgICAgICAgICAgICAgIHwKfCBAb3BlcmF0aW9uSWQgICAgICB8IFNldHMgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIG9wZXJhdGlvbiAgICAgICAgICAgICAgICAgfAp8IEB0YWdzICAgICAgICAgICAgIHwgQXNzaWducyB0YWdzIHRvIGdyb3VwIHJlbGF0ZWQgb3BlcmF0aW9ucyAoY29tbWEtc2VwYXJhdGVkKSB8CnwgQGRlcHJlY2F0ZWQgICAgICAgfCBNYXJrcyB0aGUgb3BlcmF0aW9uIGFzIGRlcHJlY2F0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBAaWdub3JlICAgICAgICAgICB8IEV4Y2x1ZGVzIHRoZSBBUEkgdHlwZSBmcm9tIHRoZSBnZW5lcmF0ZWQgc3BlY2lmaWNhdGlvbiAgICAgfAp8IEBib2R5LmRlc2NyaXB0aW9uIHwgQWRkcyBhIGRlc2NyaXB0aW9uIGZvciB0aGUgcmVxdWVzdCBib2R5ICAgICAgICAgICAgICAgICAgICB8CnwgQGJvZHkuY29udGVudFR5cGUgfCBTZXRzIHRoZSBjb250ZW50LXR5cGUgZm9yIHRoZSByZXF1ZXN0IGJvZHkgICAgICAgICAgICAgICAgIHwKCjxkZXRhaWxzPjxzdW1tYXJ5PkV4YW1wbGU8L3N1bW1hcnk+CgpgYGB0cwovKioKICogU2FtcGxlIGRlc2NyaXB0aW9uLgogKiBAc3VtbWFyeSBTdW1tYXJ5IG9mIEVuZHBvaW50CiAqIEBvcGVyYXRpb25JZCBhZGRCYXIKICogQHRhZ3MgZm9vcyxiYXJzCiAqIEBkZXByZWNhdGVkCiAqIEBpZ25vcmUKICogQGJvZHkuZGVzY3JpcHRpb24gRGVzY3JpcHRpb24gZm9yIGJvZHkgb2YgcmVxdWVzdC4KICogQGJvZHkuY29udGVudFR5cGUgYXBwbGljYXRpb24vanNvbgogKi8KZXhwb3J0IHR5cGUgQWRkQmFyQVBJID0gQXBpTWFwcGVyPHsKICAgIHBhdGg6ICIvZm9vL2JhciI7CiAgICBtZXRob2Q6ICJQT1NUIjsKICAgIGJvZHk6IEJhcjsKICAgIHJlc3BvbnNlczogewogICAgICAgICIyMDEiOiB7fTsKICAgIH07Cn0+OwpgYGAKCjwvZGV0YWlscz4KCiMjIyMgU3BlY2lhbCBrZXl3b3JkcyBmb3IgcmVzcG9uc2UgaXRlbXMKCnwgS2V5d29yZCAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBAY29udGVudFR5cGUgfCBTZXRzIHRoZSBjb250ZW50LXR5cGUgZm9yIHRoZSByZXNwb25zZSB8Cgo8ZGV0YWlscz48c3VtbWFyeT5FeGFtcGxlPC9zdW1tYXJ5PgoKYGBgdHMKICAgIC4uLgogICAgcmVzcG9uc2VzOiB7CiAgICAgICAgLyoqCiAgICAgICAgKiBEZXNjcmlwdGlvbiBmb3IgcmVzcG9uc2UgMjAwLgogICAgICAgICogQGNvbnRlbnRUeXBlIGFwcGxpY2F0aW9uL2pzb24KICAgICAgICAqLwogICAgICAgICIyMDAiOiB7IHN1Y2Nlc3M6IHRydWUgfTsKICAgIH07CmBgYAoKPC9kZXRhaWxzPgoKIyMjIE9wdGlvbnMKCiMjIyMgYHJlZmAKCj4gX2RlZmF1bHQ6IGZhbHNlXwoKRGVmaW5lcyByZWZlcmVuY2VzIGZvciBzY2hlbWFzIGJhc2VkIG9uIHRoZWlyIHR5cGUgcmVmZXJlbmNlcy4KCiMjIyMgYHRpdGxlc2AKCj4gX2RlZmF1bHQ6IGZhbHNlXwoKUHJvdmlkZXMgYSBgdGl0bGVgIGZpZWxkIGluIGVhY2ggc2NoZW1hLCBmaWxsZWQgd2l0aCBpdHMgY29ycmVzcG9uZGluZyBmaWVsZCBuYW1lIG9yIHR5cGUgbmFtZS4KCiMjIyMgYGlnbm9yZVJlcXVpcmVkYAoKPiBfZGVmYXVsdDogZmFsc2VfCgpJZ25vcmVzIHRoZSBgcmVxdWlyZWRgIGZpZWxkIGluIGFsbCBzY2hlbWFzLgoKIyMjIyBgaWdub3JlRXJyb3JzYAoKPiBfZGVmYXVsdDogZmFsc2VfCgpJZ25vcmVzIGVycm9ycyBpbiBUeXBlc2NyaXB0IGZpbGVzLiBNYXkgaW50cm9kdWNlIHdyb25nIHNjaGVtYXMuCgojIyMjIGB1bmlxdWVOYW1lc2AKCj4gX2RlZmF1bHQ6IGZhbHNlXwoKUmVwbGFjZXMgZXZlcnkgdHlwZSBuYW1lIHdpdGggYSB1bmlxdWUgaGFzaCB0byBhdm9pZCBkdXBsaWNhdGlvbiBpc3N1ZXMuCgojIyMjIGB0c05vZGVSZWdpc3RlcmAKCj4gX2RlZmF1bHQ6IGZhbHNlXwoKVXNlcyBgdHMtbm9kZS9yZWdpc3RlcmAgYXMgYSBydW50aW1lIGFyZ3VtZW50LCBlbmFibGluZyBkaXJlY3QgZXhlY3V0aW9uIG9mIFR5cGVTY3JpcHQgb24gTm9kZS5qcyB3aXRob3V0IHByZWNvbXBpbGluZy4KCiMjIyMgYG51bGxhYmxlS2V5d29yZGAKCj4gX2RlZmF1bHQ6IHRydWVfCgpQcm92aWRlcyBgbnVsbGFibGU6IHRydWVgIGZvciBudWxsYWJsZSBmaWVsZHM7IG90aGVyd2lzZSwgc2V0IGB0eXBlOiAibnVsbCJgLgoKIyMjIyBgZGVmYXVsdENvbnRlbnRUeXBlYAoKPiBfZGVmYXVsdDogIlwqL1wqIl8KClNldHMgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlIGZvciBhbGwgb3BlcmF0aW9ucy4gVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBjYXNlLWJ5LWNhc2UgKHNlZSB0aGUgYW5ub3RhdGlvbnMgc2VjdGlvbikuCgojIyMjIGBkZWZhdWx0TnVtYmVyVHlwZWAKCj4gX2RlZmF1bHQ6ICJudW1iZXIiXwoKU2V0cyB0aGUgZGVmYXVsdCBzY2hlbWEgdHlwZSBmb3IgbnVtYmVyIHZhbHVlcywgd2hpY2ggY2FuIGJlIG92ZXJyaWRkZW4gY2FzZS1ieS1jYXNlIChzZWUgdGhlIGFubm90YXRpb25zIHNlY3Rpb24pLgoKIyMjIyBgY3VzdG9tS2V5d29yZHNgCgpBIGxpc3Qgb2YgY3VzdG9tIGtleXdvcmRzIHRvIGNvbnNpZGVyIGluIGFubm90YXRpb25zLgoKIyMjIyBgY3VzdG9tS2V5d29yZFByZWZpeGAKCj4gX2RlZmF1bHQ6ICJ4LSJfCgpUaGUgcHJlZml4IGFkZGVkIHRvIGFsbCBgY3VzdG9tS2V5d29yZHNgLgoKIyMjIyBgY3VzdG9tT3BlcmF0aW9uUHJvcGVydGllc2AKCj4gX2RlZmF1bHQ6IGZhbHNlXwoKV2hldGhlciB0byBjb25zaWRlciBjdXN0b20gb3BlcmF0aW9uIHByb3BlcnRpZXMgaW4gdGhlIHJvb3Qgb2YgQVBJIHR5cGVzLgpJZiB0cnVlLCBhdm9pZCB1c2luZyBgQXBpTWFwcGVyYCwgYXMgaXQgd2lsbCBvdmVycmlkZSB0aGVzZSBwcm9wZXJ0aWVzLgoKIyMjIyBgc2NoZW1hUHJvY2Vzc29yYAoKQSBmdW5jdGlvbiB0aGF0IHJ1bnMgb3ZlciBlYWNoIGdlbmVyYXRlZCBzY2hlbWEuCgojIyBJbnNwaXJhdGlvbnMKCmB0cy1vYXNgIGlzIGhpZ2hseSBpbnNwaXJlZCBieSBbdHlwZXNjcmlwdC1qc29uLXNjaGVtYV0oaHR0cHM6Ly9naXRodWIuY29tL1lvdXNlZkVEL3R5cGVzY3JpcHQtanNvbi1zY2hlbWEpLiBXaGlsZSB1c2luZyB0aGUgc28tY2FsbGVkIGxpYnJhcnksIGl0IHRvb2sgbG90cyBvZiB3b3JrYXJvdW5kcyB0byBjcmVhdGUgY29tcGF0aWJsZSBPcGVuQVBJIHYzLjAgc3BlY3MuIEZvciBleGFtcGxlLCBtb2RpZnlpbmcgb3V0cHV0IHNjaGVtYXMgZW5mb3JjZWQgdXMgdG8gdXNlIHNjaGVtYS13YWxrZXIgdG9vbHMgd2hpY2ggYWRkZWQgbG90cyBvZiBvdmVyaGVhZCBpbiBvdXIgc2NyaXB0cyAoRGVzcGl0ZSBvZiBjb21wYXRpYmxlIE9wZW5BUEkgc2NoZW1hcyBpbiBgdHMtb2FzYCwgd2UgYWRkZWQgYSBzY2hlbWEtcHJvY2Vzc29yIGN1c3RvbSBmdW5jdGlvbiBhcyBhbiBvcHRpb24gYXMgd2VsbCkuCgojIyBDb250cmlidXRpbmcKCkNvbnRyaWJ1dGlvbnMgb2YgYW55IGtpbmQgYXJlIHdlbGNvbWUhCgo8ZGV0YWlscz48c3VtbWFyeT5UT0RPczwvc3VtbWFyeT4KCi0gICBbeF0gQ0xJCi0gICBbIF0gU3VwcG9ydCBmb3IgcmVxdWVzdCBhbmQgcmVzcG9uc2UgaGVhZGVyIHNwZWNzCi0gICBbIF0gTW9yZSBkb2NzIGFuZCBleGFtcGxlcwotICAgWyBdIENvbXBsZXRlIHRlc3RzCg== readmeEtag: '"4b2d24c2972d4c623a6ad3a31e86d7da81a0c41d"' readmeLastModified: Thu, 25 Sep 2025 06:15:28 GMT repositoryId: 559674094 description: >- Automatically generate OpenAPI specifications from opinionated Typescript types. created: '2022-10-30T20:36:46Z' updated: '2026-01-12T09:31:20Z' language: TypeScript archived: false stars: 43 watchers: 2 forks: 6 owner: ts-oas logo: https://avatars.githubusercontent.com/u/117396202?v=4 license: MIT repoEtag: '"88b43d9daebc7eae5dae189636d0f7caec2b9646e04adaf8d518532c908d7b22"' repoLastModified: Mon, 12 Jan 2026 09:31:20 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/marcelthole/openapi-merge v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIE1lcmdlCgoKWyFbVGVzdCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjZWx0aG9sZS9vcGVuYXBpLW1lcmdlL3dvcmtmbG93cy9UZXN0cy9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbWFyY2VsdGhvbGUvb3BlbmFwaS1tZXJnZS9hY3Rpb25zKQpbIVtEb2NrZXIgQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vbWFyY2VsdGhvbGUvb3BlbmFwaS1tZXJnZS93b3JrZmxvd3MvRG9ja2VyLUJ1aWxkL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjZWx0aG9sZS9vcGVuYXBpLW1lcmdlL2FjdGlvbnMpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9tYXJjZWx0aG9sZS9vcGVuYXBpLW1lcmdlL2JyYW5jaC9tYWluL2dyYXBoL2JhZGdlLnN2Zz90b2tlbj1kZmZWYmhxeHZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL21hcmNlbHRob2xlL29wZW5hcGktbWVyZ2UpClshW011dGF0aW9uIHRlc3RpbmcgYmFkZ2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZW5kcG9pbnQ/c3R5bGU9ZmxhdCZ1cmw9aHR0cHMlM0ElMkYlMkZiYWRnZS1hcGkuc3RyeWtlci1tdXRhdG9yLmlvJTJGZ2l0aHViLmNvbSUyRm1hcmNlbHRob2xlJTJGb3BlbmFwaS1tZXJnZSUyRm1haW4pXShodHRwczovL2Rhc2hib2FyZC5zdHJ5a2VyLW11dGF0b3IuaW8vcmVwb3J0cy9naXRodWIuY29tL21hcmNlbHRob2xlL29wZW5hcGktbWVyZ2UvbWFpbikKWyFbTGF0ZXN0IFN0YWJsZSBWZXJzaW9uXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL21hcmNlbHRob2xlL29wZW5hcGktbWVyZ2UvdildKC8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9tYXJjZWx0aG9sZS9vcGVuYXBpLW1lcmdlKQpbIVtMaWNlbnNlXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL21hcmNlbHRob2xlL29wZW5hcGktbWVyZ2UvbGljZW5zZSldKC8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9tYXJjZWx0aG9sZS9vcGVuYXBpLW1lcmdlKQoKClJlYWQgbXVsdGlwbGUgT3BlbkFQSSAzLjAueCBZQU1MIGFuZCBKU09OIGZpbGVzIGFuZCBtZXJnZSB0aGVtIGludG8gb25lIGxhcmdlIGZpbGUuICAKVGhpcyBhcHBsaWNhdGlvbiBpcyBidWlsZCBvbiBbY2ViZS9waHAtb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL2NlYmUvcGhwLW9wZW5hcGkpIAoKIyBJbnN0YWxsYXRpb24KYGBgCmNvbXBvc2VyIHJlcXVpcmUgbWFyY2VsdGhvbGUvb3BlbmFwaS1tZXJnZQpgYGAKCiMgVXNhZ2UKIyMgQ0xJCmBgYAokIHZlbmRvci9iaW4vb3BlbmFwaS1tZXJnZSAtLWhlbHAKClVzYWdlOgogICAgb3BlbmFwaS1tZXJnZSBiYXNlZmlsZS55bWwgYWRkaXRpb25hbEZpbGVBLnltbCBhZGRpdGlvbmFsRmlsZUIueW1sIFsuLi5dICA+IGNvbWJpbmVkLnltbAoKYGBgCgojIyMgQXJndW1lbnRzCnwgQXJndW1lbnQgfCBNZWFuaW5nIHwKfCAtLS0gfCAtLS0gIHwKfCAtLW1hdGNoWz1NQVRDSF0gfCBVc2UgYSBSZWdFeCBwYXR0ZXJuIHRvIGRldGVybWluZSB0aGUgYWRkaXRpb25hbEZpbGVzLiBJZiB0aGlzIG9wdGlvbiBpcyBzZXQgdGhlIGFkZGl0aW9uYWxGaWxlcyBjb3VsZCBiZSBvbWl0dGVkIChtdWx0aXBsZSB2YWx1ZXMgYWxsb3dlZCkgfAp8IC0tcmVzb2x2ZS1yZWZlcmVuY2VzWz1SRVNPTFZFLVJFRkVSRU5DRVNdIHwgUmVzb2x2ZSB0aGUgIiRyZWZzIiBpbiB0aGUgZ2l2ZW4gZmlsZXMgW2RlZmF1bHQ6IHRydWVdIHwKfCAtbywgLS1vdXRwdXRmaWxlWz1PVVRQVVRGSUxFXSB8IERlZmluZXMgdGhlIG91dHB1dCBmaWxlIGZvciB0aGUgcmVzdWx0LiBEZWZhdWx0cyB0aGUgcmVzdWx0IHdpbGwgcHJpbnRlZCB0byBzdGRvdXQgfAoKCiMjIERvY2tlcgpSdW4gdGhlIGBvcGVuYXBpLW1lcmdlYCBjb21tYW5kIHdpdGhpbiBhIGRvY2tlciBjb250YWluZXIKYGBgCmRvY2tlciBwdWxsIGdoY3IuaW8vbWFyY2VsdGhvbGUvb3BlbmFwaS1tZXJnZQpkb2NrZXIgcnVuIC12ICRQV0Q6L2FwcCAtLXJtIGdoY3IuaW8vbWFyY2VsdGhvbGUvb3BlbmFwaS1tZXJnZSBbYXJndW1lbnRzXQpgYGAKCkJ1aWxkIHRoZSBpbWFnZSBsb2NhbGx5IGZyb20gdGhlIHNvdXJjZWNvZGU6CmBgYApkb2NrZXIgYnVpbGQgLS1idWlsZC1hcmcgQ09NUE9TRVJfUkVRVUlSRV9WRVJTSU9OPTx2ZXJzaW9uPiAtLW5vLWNhY2hlIC10IG1hcmNlbHRob2xlL29wZW5hcGktbWVyZ2U6ZGV2IGRvY2tlcgpkb2NrZXIgcnVuIC12ICRQV0Q6L2FwcCAtLXJtIG1hcmNlbHRob2xlL29wZW5hcGktbWVyZ2U6ZGV2IFthcmd1bWVudHNdCmBgYAoKIyMgT3V0cHV0Zm9ybWF0ClRoZSBvdXRwdXQgZm9ybWF0IGlzIGRldGVybWluZWQgYnkgdGhlIGJhc2VmaWxlIGV4dGVuc2lvbi4K readmeEtag: '"f38a618bcdaad980cdeebe190ddf0b31e15dde62"' readmeLastModified: Tue, 06 Aug 2024 10:46:53 GMT repositoryId: 306759712 description: null created: '2020-10-23T22:26:31Z' updated: '2025-10-06T09:08:30Z' language: PHP archived: false stars: 18 watchers: 1 forks: 6 owner: marcelthole logo: https://avatars.githubusercontent.com/u/850125?v=4 license: MIT repoEtag: '"cad5d7d983a9c7c14c21e2d5520cd20f5b96abc2e80de5bbf9c63043c06a432f"' repoLastModified: Mon, 06 Oct 2025 09:08:30 GMT foundInMaster: true category: Description Validators id: d4f30650d1fe678296b5e48ab1cf97bb - source: openapi3 tags repository: https://github.com/yukihirop/r2-oas v3: true repositoryMetadata: base64Readme: >- WyFbR2VtIFZlcnNpb25dKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9yYi9yMi1vYXMuc3ZnKV0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL3JiL3IyLW9hcykKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcveXVraWhpcm9wL3IyLW9hcy5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy95dWtpaGlyb3AvcjItb2FzKQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi95dWtpaGlyb3AvcjItb2FzL2JhZGdlLnN2ZyldKGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi95dWtpaGlyb3AvcjItb2FzKQpbIVtNYWludGFpbmFiaWxpdHldKGh0dHBzOi8vYXBpLmNvZGVjbGltYXRlLmNvbS92MS9iYWRnZXMvZjhjMzg0NmYzNTBiYjQxMmZkNjMvbWFpbnRhaW5hYmlsaXR5KV0oaHR0cHM6Ly9jb2RlY2xpbWF0ZS5jb20vZ2l0aHViL3l1a2loaXJvcC9yMi1vYXMvbWFpbnRhaW5hYmlsaXR5KQoKPHAgYWxpZ249ImNlbnRlciI+Cgk8aW1nIGFsdD0ibG9nbyIgd2lkdGg9IjE5NiIgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20veXVraWhpcm9wL3IyLW9hcy9tYXN0ZXIvZG9jcy9hc3NldHMvbG9nby5wbmciPgo8L3A+Cgo8aDEgYWxpZ249ImNlbnRlciIgc3R5bGU9ImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyBmb250LXNpemU6IDUwcHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjQ0MzNDJEIDIwJSwgI0U2M0QzNiA2MCUsICNGRjVDNTUgMTAwJSk7IC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OyBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7IC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDsgY29sb3I6IHRyYW5zcGFyZW50OyI+UjItT0FTPC9oMT4KCjxwIGFsaWduPSJjZW50ZXIiPgoJPGEgaHJlZj0iaHR0cHM6Ly95dWtpaGlyb3AuZ2l0aHViLmlvL3IyLW9hcy8iIHRhcmdldD0iX2JsYW5rIj7wn5OaIERvY3VtZW50YXRpb248L2E+CjwvcD4KCkdlbmVyYXRlIGFwaSBkb2N1bWVudCAoT3BlbkFQSSkgc2lkZSBvbmx5IGZyb20gYFJhaWxzYCByb3V0aW5nLgoKUHJvdmlkZXMgYSByYWtlIGNvbW1hbmQgdG8gaGVscCBgZ2VuZXJhdGVgLCBgdmlld2AsIGFuZCBgZWRpdGAgT3BlbkFQSSBkb2N1bWVudHMuCgpgYGBiYXNoCmJ1bmRsZSBleGVjIHJha2Ugcm91dGVzOm9hczppbml0ICAgICMgcjItb2FzIGluaXRpYWxpemUKYnVuZGxlIGV4ZWMgcmFrZSByb3V0ZXM6b2FzOmRvY3MgICAgIyBnZW5lcmF0ZSBvYXNfZG9jcwpidW5kbGUgZXhlYyByYWtlIHJvdXRlczpvYXM6dWkgICAgICAjIHZpZXcgYXQgc3dhZ2dlciB1aQpidW5kbGUgZXhlYyByYWtlIHJvdXRlczpvYXM6ZWRpdG9yICAjIGVkaXQgYXQgc3dhZ2dlciBlZGl0b3IKYnVuZGxlIGV4ZWMgcmFrZSByb3V0ZXM6b2FzOm1vbml0b3IgIyBtb25pdG9yIG9hc19kb2NzIGFuZCBhbmFseXplCmJ1bmRsZSBleGVjIHJha2Ugcm91dGVzOm9hczpidWlsZCAgICMgYnVpbGQgb2FzX2RvY3MgZnJvbSBzcmMKYnVuZGxlIGV4ZWMgcmFrZSByb3V0ZXM6b2FzOmNsZWFuICAgIyBjbGVhbiB1bnVzZWQgY29tcG9uZW50cwpidW5kbGUgZXhlYyByYWtlIHJvdXRlczpvYXM6YW5hbHl6ZSAjIGFuYWx5emUgb2FzX2RvY3MgYW5kIGdlbmVyYWUgc3JjCmJ1bmRsZSBleGVjIHJha2Ugcm91dGVzOm9hczpkZXBsb3kgICMgZGVwbG95IG9hc19kb2NzIHRvIGRlcGxveV9kb2NzCmBgYAoKIyMg8J+SjiBJbnN0YWxsYXRpb24KCkFkZCB0aGlzIGxpbmUgdG8geW91ciBhcHBsaWNhdGlvbidzIEdlbWZpbGU6CgpgYGBydWJ5Cmdyb3VwIDpkZXZlbG9wbWVudCBkbwogIGdlbSAncjItb2FzJwplbmQKYGBgCgpBbmQgdGhlbiBleGVjdXRlOgoKICAgICQgYnVuZGxlCgpPciBpbnN0YWxsIGl0IHlvdXJzZWxmIGFzOgoKICAgICQgZ2VtIGluc3RhbGwgcjItb2FzCgojIyDwn5SmIFJlcXVpcmVtZW50cwoKSWYgeW91IHdhbnQgdG8gdmlldyB3aXRoIGBTd2FnZ2VyIFVJYCBvciBlZGl0IHdpdGggYFN3YWdnZXIgRWRpdG9yYCwgVGhpcyBnZW0gbmVlZHMgdGhlIGZvbGxvd2luZzoKCi0gW2Bzd2FnZ2VyYXBpL3N3YWdnZXItdWk6bGF0ZXN0YCBkb2NrZXIgaW1hZ2VdKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9zd2FnZ2VyYXBpL3N3YWdnZXItdWkvKQotIFtgc3dhZ2dlcmFwaS9zd2FnZ2VyLWVkaXRvcjpsYXRlc3RgIGRvY2tlciBpbWFnZV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL3N3YWdnZXJhcGkvc3dhZ2dlci1lZGl0b3IvKQotIFtgY2hyb21lZHJpdmVyYF0oaHR0cDovL2Nocm9tZWRyaXZlci5jaHJvbWl1bS5vcmcvZG93bmxvYWRzKQoKSWYgeW91IGRvIG5vdCBoYXZlIGl0IGRvd25sb2FkIGFzIGJlbG93LgoKYGBgCiQgZG9ja2VyIHB1bGwgc3dhZ2dlcmFwaS9zd2FnZ2VyLWVkaXRvcjpsYXRlc3QKJCBkb2NrZXIgcHVsbCBzd2FnZ2VyYXBpL3N3YWdnZXItdWk6bGF0ZXN0CiQgYnJldyBpbnN0YWxsIGNocm9tZWRyaXZlcgpgYGAKCiMjIPCfmoAgVHV0b3JpYWwKCkFmdGVyIHJlcXVpcmluZyBhIGdlbSBhbmQgQ29uZmlndXJlIGBSYWtlZmlsZWAgaW4geW91ciByYWlscyBwcm9qZWN0CgpgYGByYgpSMk9BUy5sb2FkX3Rhc2tzCmBgYAoKYGBgYmFzaAokIGJ1bmRsZSBleGVjIHJha2Ugcm91dGVzOm9hczppbml0CiAgICAgIGNyZWF0ZQlvYXNfZG9jcwogICAgICBjcmVhdGUJb2FzX2RvY3MvLnBhdGhzCiAgICAgIGNyZWF0ZQlvYXNfZG9jcy9wbHVnaW5zL2hlbHBlcnMKICAgICAgY3JlYXRlCW9hc19kb2NzL3Rhc2tzL2hlbHBlcnMKICAgICAgY3JlYXRlCW9hc19kb2NzL3BsdWdpbnMvLmdpdGtlZXAKICAgICAgY3JlYXRlCW9hc19kb2NzL3BsdWdpbnMvaGVscGVycy8uZ2l0a2VlcAogICAgICBjcmVhdGUJb2FzX2RvY3MvdGFza3MvLmdpdGtlZXAKICAgICAgY3JlYXRlCW9hc19kb2NzL3Rhc2tzL2hlbHBlcnMvLmdpdGtlZXAKJCBidW5kbGUgZXhlYyByYWtlIHJvdXRlczpvYXM6ZG9jcwokIGJ1bmRsZSBleGVjIHJha2Ugcm91dGVzOm9hczplZGl0b3IKYGBgCgojIyMjIEdlbmVyYXRlIGRvY3MKCmh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8wZDA5NGE5Mi1kYmNkLTQ5ZjAtOWVmMC1lMTgwOWYwNzEwYTkKCiMjIyMgRWRpdCBkb2NzCgpodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvZTEwYTY5NWMtMWQxOC00ZGE2LTg4MjctMjhjYjNkMGI5ZTNhCgojIyBVc2FnZQoKWW91IGNhbiBleGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgcmFpbHMuICAKVGhlIGZvbGxvd2luZyBhcmUgZXhhbXBsZXMgb2YgdHlwaWNhbCBjb21tYW5kIHVzYWdlLgoKRnVsbCBkb2NzIGFyZSBhdmFpbGFibGUgYXQgaHR0cHM6Ly95dWtpaGlyb3AuZ2l0aHViLmlvL3IyLW9hcwoKIyMjIEluaXRpYWxpemUKCkluaXRpYWxpemUgcjItb2FzLgoKYGBgYmFzaAokIGJ1bmRsZSBleGVjIHJha2Ugcm91dGVzOm9hczppbml0CiAgICAgIGNyZWF0ZQlvYXNfZG9jcwogICAgICBjcmVhdGUJb2FzX2RvY3MvLnBhdGhzCiAgICAgIGNyZWF0ZQlvYXNfZG9jcy9wbHVnaW5zL2hlbHBlcnMKICAgICAgY3JlYXRlCW9hc19kb2NzL3Rhc2tzL2hlbHBlcnMKICAgICAgY3JlYXRlCW9hc19kb2NzL3BsdWdpbnMvLmdpdGtlZXAKICAgICAgY3JlYXRlCW9hc19kb2NzL3BsdWdpbnMvaGVscGVycy8uZ2l0a2VlcAogICAgICBjcmVhdGUJb2FzX2RvY3MvdGFza3MvLmdpdGtlZXAKICAgICAgY3JlYXRlCW9hc19kb2NzL3Rhc2tzL2hlbHBlcnMvLmdpdGtlZXAKYGBgCgojIyMgR2VuZXJhdGUKCkdlbmVyYXRlIGRvY3MuCgpgYGBiYXNoCiQgYnVuZGxlIGV4ZWMgcmFrZSByb3V0ZXM6b2FzOmRvY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHZW5lcmF0ZSBkb2NzCiQgUEFUSFNfRklMRT0ib2FzX2RvY3Mvc2NoZW1hL3BhdGhzL2FwaS92MS90YXNrLnltbCIgYnVuZGxlIGV4ZWMgcmFrZSByb3V0ZXM6b2FzOmRvY3MgICAgIyBHZW5lcmF0ZSBkb2NzIGJ5IHNwZWNpZnkgdW5pdCBwYXRocwpgYGAKCiMjIyBFZGl0b3IKClN0YXJ0IFN3YWdnZXIgZWRpdG9yLgoKYGBgYmFzaAokIGJ1bmRsZSBleGVjIHJha2Ugcm91dGVzOm9hczplZGl0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU3RhcnQgc3dhZ2dlciBlZGl0b3IKJCBQQVRIU19GSUxFPSJvYXNfZG9jcy9zY2hlbWEvcGF0aHMvYXBpL3YxL3Rhc2sueW1sIiBidW5kbGUgZXhlYyByYWtlIHJvdXRlczpvYXM6ZWRpdG9yICAjIFN0YXJ0IHN3YWdnZXIgZWRpdG9yIGJ5IHNwZWNpZnkgdW5pdCBwYXRocwpgYGAKCiMjIyBVSQoKU3RhcnQgc3dhZ2dlciB1aS4KCmBgYGJhc2gKJCBidW5kbGUgZXhlYyByYWtlIHJvdXRlczpvYXM6dWkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFN0YXJ0IHN3YWdnZXIgdWkKJCBQQVRIU19GSUxFPSJvYXNfZG9jcy9zY2hlbWEvcGF0aHMvYXBpL3YxL3Rhc2sueW1sIiBidW5kbGUgZXhlYyByYWtlIHJvdXRlczpvYXM6dWkgICAgICAjIFN0YXJ0IHN3YWdnZXIgdWkgYnkgc3BlY2lmeSB1bml0IHBhdGhzCmBgYAoKIyMjIEJ1aWxkCgpCdWlsZCBkb2NzLiAgCmBQbHVnaW4gaXMgYXBwbGllZGAKCmBgYGJhc2gKJCBidW5kbGUgZXhlYyByYWtlIHJvdXRlczpvYXM6YnVpbGQKYGBgCgojIyMgQW5hbHl6ZQoKQW5hbHl6ZSBkb2NzLiAgClJlYWRzIE9wZW5BUEkgZm9ybWF0IGRvY3VtZW50IGFuZCBkaXZpZGVzIGl0IGludG8gc2V2ZXJhbCBwYXJ0cyB0byBnZW5lcmF0ZSBhIHNvdXJjZSBmaWxlCgpgYGBiYXNoCiQgT0FTX0ZJTEU9In4vRGVza3RvcC9zd2FnZ2VyLnltbCIgYnVuZGxlIGV4ZWMgcmFrZSByb3V0ZXM6b2FzOmFuYWx5emUKYGBgCgojIyDwn5OaIERvY3VtZW50cwoKRnVsbCBkb2NzIGFyZSBhdmFpbGFibGUgYXQgaHR0cHM6Ly95dWtpaGlyb3AuZ2l0aHViLmlvL3IyLW9hcwoKIyMg4p2k77iPIFN1cHBvcnQgUmFpbHMgVmVyc2lvbgoKLSBSYWlscyA3LjIuMi4yCi0gUmFpbHMgKD49IDgueCkKCiMjIOKdpO+4jyBTdXBwb3J0IFJ1YnkgVmVyc2lvbgoKLSBSdWJ5IDMuMi42Ci0gUnVieSAzLjMuNgotIFJ1YnkgKD49IDMuNC54KQoKIyMg4p2k77iPIFN1cHBvcnQgUm91Z2luZwoKLSBSYWlscyBFbmdpbmUgUm91dGluZwotIFJhaWxzIE5vcm1hbCBSb3V0aW5nCgojIyDinaTvuI8gU3VwcG9ydCBPcGVuQVBJIFNjaGVtYQoKRnVsbCBkb2NzIGFyZSBhdmFpbGFibGUgYXQgaHR0cHM6Ly95dWtpaGlyb3AuZ2l0aHViLmlvL3IyLW9hcy8jL3NjaGVtYS8zLjAuMAoKIyMg4p2X77iPIENvbnZlbnRpb24gb3ZlciBDb25maWd1cmF0aW9uIChDb0MpCgotIGB0YWcgbmFtZWAgcmVwcmVzZW50cyBgY29udHJvbGxlciBuYW1lYCBhbmQgZGV0ZXJtaW5lcyBgcGF0aHMgZmlsZSBuYW1lYC4KICAtIEZvciBleGFtcGxlLCBJZiBgY29udHJvbGxlciBuYW1lYCBpcyBgQXBpOjpWMTo6VXNlcnNDb250cm9sbGVyYCwgYHRhZ19uYW1lYCBpcyBgYXBpL3YxL3VzZXJgLCB0aGVuIGBwYXRocyBmaWxlIG5hbWVgIGlzIGBhcGkvdjEvdXNlci55bWxgCgotIGBfYCBvZiBgY29tcG9uZW50cy97c2NoZW1hcyxyZXF1ZXN0Qm9kaWVzLCAuLi59IG5hbWVgIGNvbnZlcnQgYC9gIHdoZW4gc2F2ZSBmaWxlLgogIC0gRm9yIGV4YW1wbGUsIElmIGBjb21wb25lbnRzL3NjaGVtYXMgbmFtZWAgaXMgYEFwaV9WMV9Vc2VyYCwgYGNvbXBvbmVudHMvc2NoZW1hcyBmaWxlIG5hbWVgIGlzIGBhcGkvdjEvdXNlci55bWxgLgogIC0gYF9gIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgdG8gZXhwcmVzcyBgbmFtZXNwYWNlYC4KICAtIGZvcm1hdCBpcyBgTmFtZXNwYWNlMV9OYW1lc3BhY2UyX01vZGVsYC4KCi0gYC5gIG9mIGBjb21wb25lbnRzL3tzY2hlbWFzLHJlcXVlc3RCb2RpZXMsIC4uLn0gbmFtZWAgY29udmVydCBgL2Agd2hlbiBzYXZpbmcgdGhlIGZpbGUuCiAgLSBGb3IgZXhhbXBsZSwgSWYgYGNvbXBvbmVudHMvc2NoZW1hcyBuYW1lYCBpcyBgYXBpLnYxLlVzZXJgLCBgY29tcG9uZW50cy9zY2hlbWFzIGZpbGUgbmFtZWAgaXMgYGFwaS92MS91c2VyLnltbGAuCiAgLSBgLmAgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCB0byBleHByZXNzIGBuYW1lc3BhY2VgLgogIC0gZm9ybWF0IGlzIGBuYW1lc3BhY2UxLm5hbWVzcGFjZTIuTW9kZWxgLgoKIyMg4pqZIENvbmZpZ3VyZQoKQWxsIHNldHRpbmdzIGFyZSBgb3B0aW9uYWxgCgpGdWxsIGRvY3MgYXJlIGF2YWlsYWJsZSBhdCBodHRwczovL3l1a2loaXJvcC5naXRodWIuaW8vcjItb2FzLyMvc2V0dGluZy9jb25maWd1cmUKCiMjIFJCUywgU3RlZXAKCmBgYGJhc2gKIyBFcnJvcnMgaGVyZSBjYW4gcHJldmVudCB0eXBlIGluZm9ybWF0aW9uIGZyb20gc2hvd2luZyB3aGVuIGhvdmVyaW5nIGluIHRoZSBlZGl0b3IKYnVuZGxlIGV4ZWMgc3RlZXAgc3RhdHMKIyBZb3UgY2FuIGNoZWNrIHRoZSBlcnJvciBkZXRhaWxzIHdpdGggdGhpcyBjb21tYW5kCmJ1bmRsZSBleGVjIHN0ZWVwIGNoZWNrCmBgYAoKIyMjIyBzdGVlcCByYWtlIHRhc2sKCmBgYGJhc2gKYnVuZGxlIGV4ZWMgcmFrZSBzdGVlcDppZ25vcmU6ZGlnIHwgcGJjb3B5CiMgPT4KIwojIGlnbm9yZSAnUkJTOjpEdXBsaWNhdGVkTWV0aG9kRGVmaW5pdGlvbicKIyBpZ25vcmUgJ1J1Ynk6OkFyZ3VtZW50VHlwZU1pc21hdGNoJwpgYGAKCmBgYGJhc2gKYnVuZGxlIGV4ZWMgcmFrZSBzdGVlcDppZ25vcmU6ZmlsZSB8IHBiY29weQojID0+CiMKIyBpZ25vcmUgJ2xpYi9yMi1vYXMucmInCiMgaWdub3JlICdsaWIvcjItb2FzL2FwcF9jb25maWd1cmF0aW9uLnJiJwojIGlnbm9yZSAnbGliL3IyLW9hcy9hcHBfY29uZmlndXJhdGlvbi9kZXByZWNhdGlvbi5yYicKYGBgCgpgYGBiYXNoCmJ1bmRsZSBleGVjIHJha2Ugc3RlZXA6aWdub3JlOnByZXZpZXcKIyA9PgojIPCfk4QgbGliL3IyLW9hcy9zY2hlbWEvbW9uaXRvci5yYgojICAgTGluZSA1MDogaWYgY3VycmVudF90aW1lIC0gbGFzdF9jaGVja190aW1lID49IGludGVydmFsX3RvX3NhdmVfZWRpdGVkX3RtcF9zY2hlbWEKIyAgICAgICAgICAgICAgIOKGkiAgICAgICAgICAgaWYgY3VycmVudF90aW1lIC0gbGFzdF9jaGVja190aW1lID49IGludGVydmFsX3RvX3NhdmVfZWRpdGVkX3RtcF9zY2hlbWEgIyBzdGVlcDppZ25vcmUgUnVieTo6Tm9NZXRob2QKIyAgIExpbmUgNjI6IGFuYWx5emVyLmFuYWx5emVfZG9jcwojICAgICAgICAgICAgICAg4oaSICAgICAgICAgYW5hbHl6ZXIuYW5hbHl6ZV9kb2NzICMgc3RlZXA6aWdub3JlIFJ1Ynk6Ok5vTWV0aG9kCiMgICBMaW5lIDY2OiBZQU1MLmxvYWRfZmlsZShkb2Nfc2F2ZV9maWxlX3BhdGgpIHx8IEBhZnRlcl9zY2hlbWFfZGF0YQojICAgICAgICAgICAgICAg4oaSICAgICAgICAgWUFNTC5sb2FkX2ZpbGUoZG9jX3NhdmVfZmlsZV9wYXRoKSB8fCBAYWZ0ZXJfc2NoZW1hX2RhdGEgIyBzdGVlcDppZ25vcmUgUnVieTo6VW5rbm93bkNvbnN0YW50CmBgYAoKYGBgYmFzaApidW5kbGUgZXhlYyByYWtlIHN0ZWVwOmlnbm9yZTphdXRvCiMgPT4KIyBBbmFseXppbmcgc3RlZXAgY2hlY2sgZXJyb3JzLi4uCiMg4pyFIE1vZGlmaWVkOiBsaWIvcjItb2FzL2FwcF9jb25maWd1cmF0aW9uL2RlcHJlY2F0aW9uLnJiICgyIGxpbmVzKQojIOKchSBNb2RpZmllZDogbGliL3IyLW9hcy9wbHVnaW4vYmFzZS5yYiAoMyBsaW5lcykKIyDinIUgTW9kaWZpZWQ6IGxpYi9yMi1vYXMvc2NoZW1hL3NxdWVlemVyLnJiICgyIGxpbmVzKQpgYGAKCiMjIEJ1bmRsZSBhbmQgUnNwZWMgd2l0aCBtdWx0aXBsZSBydWJ5IOKAi+KAi3ZlcnNpb25zCgojIyMjIEJ1bmRsZQoKYGBgYmFzaAovYmluL2Jhc2ggZGV2c2NyaXB0L2FsbF9zdXBwb3J0X3J1Ynkuc2ggYnVuZGxlCi4KLgouCj09PT09IEJ1bmRsZSBpbnN0YWxsIGZvciBBbGwgU3VwcG9ydCBSdWJ5IFJlc3VsdCA9PT09PQpydWJ5LTMuMi42OiAwCnJ1YnktMy4zLjY6IDAKcnVieS0zLjQuNzogMAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KYGBgCgpJZiBzcGVjaWZ5IHJ1YnkgdmVyc2lvbiBgMy4yLjZgIGFuZCBgMy4zLjZgCgpgYGBiYXNoCi9iaW4vYmFzaCBkZXZzY3JpcHQvYWxsX3N1cHBvcnRfcnVieS5zaCBidW5kbGUgMy4yLjYgMy4zLjYKLgouCi4KPT09PT0gQnVuZGxlIGluc3RhbGwgZm9yIEFsbCBTdXBwb3J0IFJ1YnkgUmVzdWx0ID09PT09CnJ1YnktMy4yLjY6IDAKcnVieS0zLjMuNjogMAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KYGBgCgojIyMjIFJzcGVjCgpgYGBiYXNoCi9iaW4vYmFzaCBkZXZzY3JpcHQvYWxsX3N1cHBvcnRfcnVieS5zaCByc3BlYwouCi4KLgo9PT09PSBSc3BlYyBmb3IgQWxsIFN1cHBvcnQgUnVieSBSZXN1bHQgPT09PT0KcnVieS0zLjIuNjogMApydWJ5LTMuMy42OiAwCnJ1YnktMy40Ljc6IDAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmBgYAoKSWYgc3BlY2lmeSBydWJ5IHZlcnNpb24gYDMuMi42YCBhbmQgYDMuMy42YAoKYGBgYmFzaAovYmluL2Jhc2ggZGV2c2NyaXB0L2FsbF9zdXBwb3J0X3J1Ynkuc2ggcnNwZWMgMy4yLjYgMy4zLjYKLgouCi4KPT09PT0gUnNwZWMgZm9yIEFsbCBTdXBwb3J0IFJ1YnkgUmVzdWx0ID09PT09CnJ1YnktMy4yLjY6IDAKcnVieS0zLjMuNjogMAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KYGBgCgojIyDwn5SpIENPUlMKClVzZSBbcmFjay1jb3JzXShodHRwczovL2dpdGh1Yi5jb20vY3l1L3JhY2stY29ycykgdG8gZW5hYmxlIENPUlMuCgpgYGBydWJ5CnJlcXVpcmUgJ3JhY2svY29ycycKdXNlIFJhY2s6OkNvcnMgZG8KICBhbGxvdyBkbwogICAgb3JpZ2lucyAnKicKICAgIHJlc291cmNlICcqJywgaGVhZGVyczogOmFueSwgbWV0aG9kczogWyA6Z2V0LCA6cG9zdCwgOnB1dCwgOmRlbGV0ZSwgOm9wdGlvbnMgXQogIGVuZAplbmQKYGBgCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHNldCBDT1JTIGhlYWRlcnMgaW4gYSBgYmVmb3JlYCBibG9jay4KCmBgYHJ1YnkKYmVmb3JlIGRvCiAgaGVhZGVyWydBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nXSA9ICcqJwogIGhlYWRlclsnQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1NZXRob2QnXSA9ICcqJwplbmQKYGBgCgojIyDwn5OdIExpY2Vuc2UKClRoZSBnZW0gaXMgYXZhaWxhYmxlIGFzIG9wZW4gc291cmNlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgW01JVCBMaWNlbnNlXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuCgojIyDwn6SdIENvbnRyaWJ1dGluZwoKMS4gRm9yayBpdCAoIGh0dHA6Ly9naXRodWIuY29tL3l1a2loaXJvcC9yMi1vYXMvZm9yayApCjIuIENyZWF0ZSB5b3VyIGZlYXR1cmUgYnJhbmNoIChgZ2l0IGNoZWNrb3V0IC1iIG15LW5ldy1mZWF0dXJlYCkKMy4gQ29tbWl0IHlvdXIgY2hhbmdlcyAoYGdpdCBjb21taXQgLWFtICdBZGQgc29tZSBmZWF0dXJlJ2ApCjQuIFB1c2ggdG8gdGhlIGJyYW5jaCAoYGdpdCBwdXNoIG9yaWdpbiBteS1uZXctZmVhdHVyZWApCjUuIENyZWF0ZSBuZXcgUHVsbCBSZXF1ZXN0Cg== readmeEtag: '"b085ebc730bf84831c6de8439577a5326c93b9b9"' readmeLastModified: Fri, 31 Oct 2025 15:28:04 GMT repositoryId: 175621234 description: >- r2-oas allows generation of OpenAPI Specification (V3) from config/routes.rb in Rails application. https://deepwiki.com/yukihirop/r2-oas created: '2019-03-14T12:51:19Z' updated: '2025-10-31T15:28:09Z' language: Ruby archived: false stars: 15 watchers: 1 forks: 4 owner: yukihirop logo: https://avatars.githubusercontent.com/u/11146767?v=4 license: MIT repoEtag: '"4fe3c959af3f3d52be57fa0a9bd2519d979acf4441c9a581cb8deab0c8ac0840"' repoLastModified: Fri, 31 Oct 2025 15:28:09 GMT foundInMaster: true category: Data Validators id: c0d7926604df1b7fdea354fdb2b100b9 - source: openapi3 tags repository: https://github.com/vymalo/keycloak-phone-number v3: true id: cdc1a6a78dba21b420011984b42b5d12 repositoryMetadata: base64Readme: >- IyBLZXljbG9hayBQaG9uZSBOdW1iZXIgTG9naW4gUGx1Z2luCgpUaGlzIHBsdWdpbiBoZWxwcyB5b3UgdG8gbG9naW4gYnkgcGhvbmUgbnVtYmVyLgoKfCBLZXljbG9hayBWZXJzaW9uIHwgUGx1Z2luIFZlcnNpb24gfAp8LS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS18CnwgMjEgICAgICAgICAgICAgICB8IOKchSAxLjEuMCAgICAgICAgfAp8IDIyICAgICAgICAgICAgICAgfCDinIUgMjYuMS4zICAgICAgIHwKfCAyMyAgICAgICAgICAgICAgIHwg4pyFIDI2LjEuMyAgICAgICB8CnwgMjQgICAgICAgICAgICAgICB8IOKchSAyNi4xLjMgICAgICAgfAp8IDI1ICAgICAgICAgICAgICAgfCDinIUgMjYuMS4zICAgICAgIHwKfCAyNiAgICAgICAgICAgICAgIHwg4pyFIDI2LjEuMyAgICAgICB8CgohW0V4YW1wbGVdKC4vZG9jcy9zY3JlZW5zaG90LnBuZykKCiMjIDEuIFdoYXQgSXQgSXMKClRoZSAqKktleWNsb2FrIFBob25lIE51bWJlciBMb2dpbiBQbHVnaW4qKiBpcyBhIGN1c3RvbSBleHRlbnNpb24gZm9yIEtleWNsb2FrIHRoYXQgZW5hYmxlcyBhdXRoZW50aWNhdGlvbiB2aWEgU01TLWJhc2VkCnBob25lIG51bWJlciBsb2dpbi4gSW5zdGVhZCBvZiAob3IgaW4gYWRkaXRpb24gdG8pIHRyYWRpdGlvbmFsIHVzZXJuYW1lL3Bhc3N3b3JkIGxvZ2lucywgdGhpcyBwbHVnaW4gYWxsb3dzIGVuZC11c2VycyB0bwphdXRoZW50aWNhdGUgdXNpbmcgdGhlaXIgcGhvbmUgbnVtYmVyLiBUaGUgcHJvY2VzcyBpbmNsdWRlczoKCi0gKipQaG9uZSBOdW1iZXIgRW50cnk6KiogVXNlcnMgZW50ZXIgdGhlaXIgcGhvbmUgbnVtYmVyLgotICoqQ29uZmlybWF0aW9uOioqIFRoZSBzeXN0ZW0gZGlzcGxheXMgYSBmb3JtYXR0ZWQgdmVyc2lvbiBvZiB0aGUgbnVtYmVyIGZvciB1c2VyIGNvbmZpcm1hdGlvbi4KLSAqKlVzZXIgTG9va3VwL0NyZWF0aW9uOioqIFRoZSBwbHVnaW4gY2hlY2tzIGlmIHRoZSB1c2VyIGV4aXN0cyAoY3JlYXRpbmcgb25lIGlmIG5vdCkuCi0gKipTTVMgVEFOIFNlbmRpbmc6KiogQSBUcmFuc2FjdGlvbiBBdXRoZW50aWNhdGlvbiBOdW1iZXIgKFRBTikgaXMgZ2VuZXJhdGVkIGFuZCBzZW50IHZpYSBhbiBleHRlcm5hbCBTTVMgQVBJLgotICoqVEFOIFZhbGlkYXRpb246KiogVGhlIHVzZXIgaW5wdXRzIHRoZSBUQU4gdG8gY29tcGxldGUgYXV0aGVudGljYXRpb24uCi0gKipQcm9maWxlIFVwZGF0ZToqKiBPbiBzdWNjZXNzZnVsIFRBTiB2ZXJpZmljYXRpb24sIHVzZXJzIGNhbiB1cGRhdGUgdGhlaXIgcHJvZmlsZSBpbmZvcm1hdGlvbi4KClRoaXMgbW9kdWxhciBwbHVnaW4gdXNlcyBhIG11bHRpLXN0ZXAgZmxvdyBhbmQgaXMgZGVzaWduZWQgd2l0aCBzZXBhcmF0aW9uIG9mIGNvbmNlcm5zIGluIG1pbmQsIHVzaW5nIGEgZGVkaWNhdGVkCnNlcnZpY2UgbGF5ZXIgZm9yIFNNUyBhbmQgcGhvbmUgbnVtYmVyIHByb2Nlc3NpbmcuCgojIyBOZXcgRmVhdHVyZTogRHVhbCBBdXRoZW50aWNhdGlvbiBTdXBwb3J0IGZvciBTTVMgU2VydmljZQoKVGhlIGBTbXNTZXJ2aWNlYCBoYXMgYmVlbiBlbmhhbmNlZCB0byBzdXBwb3J0IGJvdGggKipCYXNpYyBBdXRoZW50aWNhdGlvbioqIGFuZCAqKk9BdXRoMiBDbGllbnQgQ3JlZGVudGlhbHMgR3JhbnQqKiBmb3Igc2VjdXJlIGNvbW11bmljYXRpb24gd2l0aCB0aGUgU01TIHByb3ZpZGVyLiBUaGUgcGx1Z2luIHByaW9yaXRpemVzIE9BdXRoMiBpZiB0aGUgcmVxdWlyZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBzZXQ7IG90aGVyd2lzZSwgaXQgZmFsbHMgYmFjayB0byBCYXNpYyBBdXRoLgoKIyMgMi4gSG93IHRvIFVzZSBJdAoKIyMjIERvd25sb2FkaW5nIHRoZSBQbHVnaW4KCllvdSBjYW4gZG93bmxvYWQgdGhlIGxhdGVzdCBwbHVnaW4gSkFSIGZyb20gdGhlIEdpdEh1YiBhcnRpZmFjdHMgdXNpbmcgYSBgY3VybGAgY29tbWFuZC4gRm9yIGV4YW1wbGU6CgpgYGBiYXNoCmN1cmwgLUwgLW8ga2V5Y2xvYWstcGhvbmVudW1iZXItbG9naW4uamFyIGh0dHBzOi8vZ2l0aHViLmNvbS92eW1hbG8va2V5Y2xvYWstcGhvbmUtbnVtYmVyL3JlbGVhc2VzL2Rvd25sb2FkL3Y8dmVyc2lvbj4va2V5Y2xvYWstcGhvbmVudW1iZXItbG9naW4tPHZlcnNpb24+LmphcgpgYGAKCiMjIyBNb3VudGluZyBpbnRvIEtleWNsb2FrCgpPbmNlIHlvdSBoYXZlIHRoZSBKQVIsIG1vdW50IGl0IGludG8gdGhlIEtleWNsb2FrIHNlcnZlci4gRm9yIGV4YW1wbGUsIHdoZW4gcnVubmluZyBLZXljbG9hayBpbiBEb2NrZXIsIHlvdSBjYW4gbW91bnQKdGhlIHBsdWdpbiBhcyBhIHZvbHVtZToKCiMjIyMgRG9ja2VyIEV4YW1wbGUKCmBgYGJhc2gKZG9ja2VyIHJ1biAtZCBcCiAgLS1uYW1lIGtleWNsb2FrIFwKICAtcCA4MDgwOjgwODAgXAogIC1lIEtFWUNMT0FLX0FETUlOPWFkbWluIFwKICAtZSBLRVlDTE9BS19BRE1JTl9QQVNTV09SRD1wYXNzd29yZCBcCiAgLWUgU01TX0FQSV9VUkw9aHR0cDovL3lvdXItc21zLWFwaS11cmwgXAogIC1lIFNNU19BUElfQ09VTlRSWV9QQVRURVJOPSdjbXxkZXxmcicgXAogIC1lIFNNU19BUElfQVVUSF9VU0VSTkFNRT1zb21ldXNlciBcCiAgLWUgU01TX0FQSV9BVVRIX1BBU1NXT1JEPXNvbWVwYXNzd29yZCBcCiAgLWUgT0FVVEgyX0NMSUVOVF9JRD1zb21lLWNsaWVudC1pZCBcCiAgLWUgT0FVVEgyX0NMSUVOVF9TRUNSRVQ9c29tZS1jbGllbnQtc2VjcmV0IFwKICAtZSBPQVVUSDJfVE9LRU5fRU5EUE9JTlQ9aHR0cDovL3Rva2VuLW1vY2s6ODA4MC90b2tlbiBcCiAgLXYgL3BhdGgvdG8va2V5Y2xvYWstcGhvbmVudW1iZXItbG9naW4uamFyOi9vcHQva2V5Y2xvYWsvcHJvdmlkZXJzL2tleWNsb2FrLXBob25lbnVtYmVyLWxvZ2luLmphciBcCiAgcXVheS5pby9rZXljbG9hay9rZXljbG9hazoyNi4xLjIgc3RhcnQtZGV2CmBgYAoKIyMjIyBLdWJlcm5ldGVzIEV4YW1wbGUKCmBgYHlhbWwKYXBpVmVyc2lvbjogYXBwcy92MQpraW5kOiBEZXBsb3ltZW50Cm1ldGFkYXRhOgogIG5hbWU6IGtleWNsb2FrCnNwZWM6CiAgcmVwbGljYXM6IDEKICBzZWxlY3RvcjoKICAgIG1hdGNoTGFiZWxzOgogICAgICBhcHA6IGtleWNsb2FrCiAgdGVtcGxhdGU6CiAgICBtZXRhZGF0YToKICAgICAgbGFiZWxzOgogICAgICAgIGFwcDoga2V5Y2xvYWsKICAgIHNwZWM6CiAgICAgIHZvbHVtZXM6CiAgICAgICAgLSBuYW1lOiBwbHVnaW4tdm9sdW1lCiAgICAgICAgICBlbXB0eURpcjoge30KICAgICAgaW5pdENvbnRhaW5lcnM6CiAgICAgICAgLSBuYW1lOiBkb3dubG9hZC1wbHVnaW4KICAgICAgICAgIGltYWdlOiBjdXJsaW1hZ2VzL2N1cmw6OC4xLjIKICAgICAgICAgIGVudjoKICAgICAgICAgICAgLSBuYW1lOiBWRVJTSU9OCiAgICAgICAgICAgICAgdmFsdWU6IDI2LjEuMwogICAgICAgICAgY29tbWFuZDoKICAgICAgICAgICAgLSBzaAogICAgICAgICAgICAtIC1jCiAgICAgICAgICAgIC0gfAogICAgICAgICAgICAgIGN1cmwgLUwgLW8gL3BsdWdpbi9rZXljbG9hay1waG9uZW51bWJlci1sb2dpbi5qYXIgaHR0cHM6Ly9naXRodWIuY29tL3Z5bWFsby9rZXljbG9hay1waG9uZS1udW1iZXIvcmVsZWFzZXMvZG93bmxvYWQvdiRWRVJTSU9OL2tleWNsb2FrLXBob25lbnVtYmVyLWxvZ2luLSRWRVJTSU9OLmphcgogICAgICAgICAgdm9sdW1lTW91bnRzOgogICAgICAgICAgICAtIG5hbWU6IHBsdWdpbi12b2x1bWUKICAgICAgICAgICAgICBtb3VudFBhdGg6IC9wbHVnaW4KICAgICAgY29udGFpbmVyczoKICAgICAgICAtIG5hbWU6IGtleWNsb2FrCiAgICAgICAgICBpbWFnZTogcXVheS5pby9rZXljbG9hay9rZXljbG9hazoyNi4xLjIKICAgICAgICAgIHBvcnRzOgogICAgICAgICAgICAtIGNvbnRhaW5lclBvcnQ6IDgwODAKICAgICAgICAgIGVudjoKICAgICAgICAgICAgLSBuYW1lOiBLRVlDTE9BS19BRE1JTgogICAgICAgICAgICAgIHZhbHVlOiAiYWRtaW4iCiAgICAgICAgICAgIC0gbmFtZTogS0VZQ0xPQUtfQURNSU5fUEFTU1dPUkQKICAgICAgICAgICAgICB2YWx1ZTogInBhc3N3b3JkIgogICAgICAgICAgICAtIG5hbWU6IFNNU19BUElfVVJMCiAgICAgICAgICAgICAgdmFsdWU6ICJodHRwOi8veW91ci1zbXMtYXBpLXVybCIKICAgICAgICAgICAgLSBuYW1lOiBTTVNfQVBJX0NPVU5UUllfUEFUVEVSTgogICAgICAgICAgICAgIHZhbHVlOiAiY218ZGV8ZnIiCiAgICAgICAgICAgIC0gbmFtZTogU01TX0FQSV9BVVRIX1VTRVJOQU1FCiAgICAgICAgICAgICAgdmFsdWU6ICJzb21ldXNlciIKICAgICAgICAgICAgLSBuYW1lOiBTTVNfQVBJX0FVVEhfUEFTU1dPUkQKICAgICAgICAgICAgICB2YWx1ZTogInNvbWVwYXNzd29yZCIKICAgICAgICAgICAgLSBuYW1lOiBPQVVUSDJfQ0xJRU5UX0lECiAgICAgICAgICAgICAgdmFsdWU6ICJzb21lLWNsaWVudC1pZCIKICAgICAgICAgICAgLSBuYW1lOiBPQVVUSDJfQ0xJRU5UX1NFQ1JFVAogICAgICAgICAgICAgIHZhbHVlOiAic29tZS1jbGllbnQtc2VjcmV0IgogICAgICAgICAgICAtIG5hbWU6IE9BVVRIMl9UT0tFTl9FTkRQT0lOVAogICAgICAgICAgICAgIHZhbHVlOiAiaHR0cDovL3Rva2VuLW1vY2s6ODA4MC90b2tlbiIKICAgICAgICAgIHZvbHVtZU1vdW50czoKICAgICAgICAgICAgLSBuYW1lOiBwbHVnaW4tdm9sdW1lCiAgICAgICAgICAgICAgbW91bnRQYXRoOiAvb3B0L2tleWNsb2FrL3Byb3ZpZGVycwpgYGAKCipUaXA6KiBGb3IgS3ViZXJuZXRlcywgaXQncyBtb3JlIGNvbW1vbiB0byB1c2UgYSBzaWRlY2FyIG9yIGluaXQgY29udGFpbmVyIHRvIGRvd25sb2FkIHRoZSBwbHVnaW4gZnJvbSBHaXRIdWIgYW5kIGNvcHkKaXQgaW50byB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0b3J5LgoKLS0tCgojIyAzLiBFbnZpcm9ubWVudCBWYXJpYWJsZXMKClRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSB1c2VkIGJ5IHRoZSBwbHVnaW46CgotICoqS0VZQ0xPQUtfQURNSU4qKjogVGhlIGFkbWluaXN0cmF0b3IgdXNlcm5hbWUgZm9yIEtleWNsb2FrLiAgCi0gKipLRVlDTE9BS19BRE1JTl9QQVNTV09SRCoqOiBUaGUgYWRtaW5pc3RyYXRvciBwYXNzd29yZCBmb3IgS2V5Y2xvYWsuICAKLSAqKktDX0xPR19DT05TT0xFX0NPTE9SKio6IEVuYWJsZXMgY29sb3JlZCBsb2dnaW5nIGluIHRoZSBjb25zb2xlIChzZXQgdG8gYCd0cnVlJ2Agb3IgYCdmYWxzZSdgKS4gIAotICoqS0NfSFRUUF9QT1JUKio6IFRoZSBIVFRQIHBvcnQgb24gd2hpY2ggS2V5Y2xvYWsgcnVucy4gIAotICoqU01TX0FQSV9VUkwqKjogVGhlIGJhc2UgVVJMIG9mIHRoZSBTTVMgQVBJIHNlcnZpY2UuICAKLSAqKlNNU19BUElfQ09VTlRSWV9QQVRURVJOKio6IEEgcmVnZXggcGF0dGVybiB0byBtYXRjaCBzdXBwb3J0ZWQgcGhvbmUgbnVtYmVyIGNvdW50cnkgY29kZXMuCi0gKipTTVNfQVBJX0FVVEhfVVNFUk5BTUUqKjogVGhlIGJhc2ljIGF1dGggdXNlcm5hbWUgZm9yIHRoZSBTTVMgQVBJLgotICoqU01TX0FQSV9BVVRIX1BBU1NXT1JEKio6IFRoZSBiYXNpYyBhdXRoIHBhc3N3b3JkIGZvciB0aGUgU01TIEFQSS4KLSAqKk9BVVRIMl9DTElFTlRfSUQqKjogVGhlIGNsaWVudCBJRCBmb3IgT0F1dGgyIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIFNNUyBwcm92aWRlci4gIAotICoqT0FVVEgyX0NMSUVOVF9TRUNSRVQqKjogVGhlIGNsaWVudCBzZWNyZXQgZm9yIE9BdXRoMiBhdXRoZW50aWNhdGlvbiB3aXRoIHRoZSBTTVMgcHJvdmlkZXIuICAKLSAqKk9BVVRIMl9UT0tFTl9FTkRQT0lOVCoqOiBUaGUgVVJMIG9mIHRoZSB0b2tlbiBlbmRwb2ludCBmb3IgT0F1dGgyIGF1dGhlbnRpY2F0aW9uIChlLmcuLCBgaHR0cDovL3Rva2VuLW1vY2s6ODA4MC90b2tlbmAgZm9yIHRlc3RpbmcsIG9yIGBodHRwOi8veW91ci1hdXRoLXNlcnZlci9vYXV0aC90b2tlbmAgaW4gcHJvZHVjdGlvbikuCgoKQ29uZmlndXJlIHRoZXNlIHZhcmlhYmxlcyBpbiB5b3VyIGRlcGxveW1lbnQgKERvY2tlciwgS3ViZXJuZXRlcywgZXRjLikgYXMgc2hvd24gaW4gdGhlIGV4YW1wbGVzIGFib3ZlLiAgCgotLS0KCiMjIDQuIEFyY2hpdGVjdHVyZQoKVGhlIHBsdWdpbiBpcyBidWlsdCB1c2luZyBhIG11bHRpLW1vZHVsZSBNYXZlbiBzdHJ1Y3R1cmUgd2l0aCB0aGUgZm9sbG93aW5nIGxheWVyczoKCi0gKipDb3JlIE1vZHVsZToqKiAgCiAgQ29udGFpbnMgc2hhcmVkIGNvbnN0YW50cywgdXRpbGl0aWVzLCBhbmQgbW9kZWxzIChlLmcuLCBwaG9uZSBudW1iZXIgaGVscGVycywgY291bnRyeSBjb2RlcykuCgotICoqQXV0aGVudGljYXRvciBNb2R1bGU6KiogIAogIEltcGxlbWVudHMgY3VzdG9tIEtleWNsb2FrIGF1dGhlbnRpY2F0b3JzIHRoYXQgY29udHJvbCB0aGUgbXVsdGktc3RlcCBhdXRoZW50aWNhdGlvbiBmbG93OgogICAgLSAqKlBob25lTnVtYmVyR2V0TnVtYmVyOioqIENvbGxlY3RzIHVzZXIgcGhvbmUgbnVtYmVycy4KICAgIC0gKipQaG9uZU51bWJlckNvbmZpcm1OdW1iZXI6KiogRGlzcGxheXMgdGhlIGNvbmZpcm1lZCBwaG9uZSBudW1iZXIuCiAgICAtICoqUGhvbmVOdW1iZXJDaG9vc2VVc2VyOioqIExvb2tzIHVwIG9yIGNyZWF0ZXMgdXNlcnMgYmFzZWQgb24gcGhvbmUgbnVtYmVyLgogICAgLSAqKlBob25lTnVtYmVyU2VuZFRhbjoqKiBTZW5kcyBhIFRBTiB2aWEgYW4gU01TIHNlcnZpY2UuCiAgICAtICoqUGhvbmVOdW1iZXJWYWxpZGF0ZVRhbjoqKiBWYWxpZGF0ZXMgdGhlIFRBTiBlbnRlcmVkIGJ5IHRoZSB1c2VyLgogICAgLSAqKlBob25lTnVtYmVyVXBkYXRlVXNlcjoqKiBQcm9tcHRzIHVzZXJzIHRvIHVwZGF0ZSB0aGVpciBwcm9maWxlIHBvc3QtYXV0aGVudGljYXRpb24uCgotICoqU2VydmljZSBNb2R1bGU6KiogIAogIEVuY2Fwc3VsYXRlcyBidXNpbmVzcyBsb2dpYyBmb3IgcGhvbmUgbnVtYmVyIHByb2Nlc3NpbmcgYW5kIFNNUyBvcGVyYXRpb25zOgogICAgLSAqKlBob25lTnVtYmVyU2VydmljZToqKiBWYWxpZGF0ZXMgYW5kIGZvcm1hdHMgcGhvbmUgbnVtYmVycy4KICAgIC0gKipTbXNTZXJ2aWNlOioqIEhhbmRsZXMgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGV4dGVybmFsIFNNUyBBUEkgKHVzaW5nIGFuIE9wZW5BUEktZ2VuZXJhdGVkIGNsaWVudCkuCgotICoqT3BlbkFQSSBDbGllbnQgTW9kdWxlOioqICAKICBDb250YWlucyB0aGUgZ2VuZXJhdGVkIGNsaWVudCBjb2RlIGZvciB0aGUgU01TIEFQSSBpbnRlZ3JhdGlvbiwgZW5zdXJpbmcgYSByb2J1c3QgYW5kIHR5cGUtc2FmZSBjb21tdW5pY2F0aW9uIHdpdGggdGhlCiAgZXh0ZXJuYWwgc2VydmljZS4KCkRlcGVuZGVuY3kgaW5qZWN0aW9uICh2aWEgQ0RJKSBpcyB1c2VkIHRvIHdpcmUgY29tcG9uZW50cyB0b2dldGhlciwgbWFraW5nIHRoZSBzeXN0ZW0gbW9yZSBtb2R1bGFyLCB0ZXN0YWJsZSwgYW5kCm1haW50YWluYWJsZS4KCi0tLQoKIyMgNS4gQ29udHJpYnV0ZQoKV2Ugd2VsY29tZSBjb250cmlidXRpb25zISBIZXJl4oCZcyBob3cgeW91IGNhbiBnZXQgaW52b2x2ZWQ6CgojIyMgUmVwb3J0aW5nIElzc3VlcwoKLSBVc2UgdGhlIEdpdEh1YiBpc3N1ZXMgcGFnZSB0byByZXBvcnQgYnVncywgc3VnZ2VzdCBlbmhhbmNlbWVudHMsIG9yIHJlcXVlc3QgZmVhdHVyZXMuCi0gRW5zdXJlIHlvdXIgaXNzdWUgaW5jbHVkZXMgZGV0YWlsZWQgcmVwcm9kdWN0aW9uIHN0ZXBzIGFuZCByZWxldmFudCBsb2dzLgoKIyMjIENvbnRyaWJ1dGluZyBDb2RlCgotICoqRm9yayB0aGUgUmVwb3NpdG9yeToqKiAgCiAgQ3JlYXRlIGEgZm9yaywgdGhlbiBjbG9uZSBpdCBsb2NhbGx5LgotICoqQnJhbmNoaW5nIE1vZGVsOioqCiAgICAtIFVzZSBmZWF0dXJlIGJyYW5jaGVzIGZvciBuZXcgZmVhdHVyZXMgb3IgZml4ZXMuCiAgICAtIEVuc3VyZSB5b3VyIGJyYW5jaCBuYW1lIGlzIGRlc2NyaXB0aXZlIChlLmcuLCBgZmVhdHVyZS9zbXMtc2VydmljZS1yZWZhY3RvcmApLgotICoqQ29kaW5nIFN0YW5kYXJkczoqKiAgCiAgRm9sbG93IHRoZSBleGlzdGluZyBjb2RpbmcgY29udmVudGlvbnMuCiAgICAtIFdyaXRlIHVuaXQgdGVzdHMgZm9yIHlvdXIgY2hhbmdlcy4KICAgIC0gUnVuIGBtdm4gY2xlYW4gaW5zdGFsbGAgYW5kIGVuc3VyZSBhbGwgdGVzdHMgcGFzcy4KLSAqKlB1bGwgUmVxdWVzdHM6KiogIAogIFN1Ym1pdCBhIHB1bGwgcmVxdWVzdCB3aXRoIGEgY2xlYXIgZGVzY3JpcHRpb24gb2YgeW91ciBjaGFuZ2VzLCByZWZlcmVuY2luZyBhbnkgaXNzdWVzIGFkZHJlc3NlZC4KCiMjIyBEb2N1bWVudGF0aW9uICYgRmVlZGJhY2sKCi0gVXBkYXRlIGRvY3VtZW50YXRpb24gYXMgbmVlZGVkIHdpdGggeW91ciBjaGFuZ2VzLgotIFByb3ZpZGUgZmVlZGJhY2sgb24gYXJlYXMgZm9yIGltcHJvdmVtZW50IG9yIGFkZGl0aW9uYWwgZmVhdHVyZXMuCgotLS0KCipGb3IgbW9yZSBkZXRhaWxzIG9yIHF1ZXN0aW9ucywgcGxlYXNlIGNvbnRhY3QgW2RldkBzc2VnbmluZy5jb21dKG1haWx0bzpkZXZAc3NlZ25pbmcuY29tKS4q readmeEtag: '"0820e74afb4a959bfd759b9e73db6af3d15c6971"' readmeLastModified: Sat, 22 Mar 2025 07:56:06 GMT repositoryId: 290233843 description: Keycloak plugin for logins using phone number created: '2020-08-25T14:13:59Z' updated: '2026-02-04T03:31:59Z' language: Java archived: false stars: 44 watchers: 1 forks: 12 owner: vymalo logo: https://avatars.githubusercontent.com/u/128943481?v=4 license: MIT repoEtag: '"f279a177a3b5293635781f356f262b73605256784351663a4d556bef1d1a49d8"' repoLastModified: Wed, 04 Feb 2026 03:31:59 GMT category: Server Implementations oldLocations: - https://github.com/bayamsell/keycloak-phone-number foundInMaster: true - source: openapi3 tags repository: https://github.com/0xsirsaif/frappeapi v3: true id: 13092aaf1a2505f819c5f57374f67408 repositoryMetadata: base64Readme: >- IyBGcmFwcGVBUEkKCkJldHRlciBBUElzIGZvciBGcmFwcGUuCgpGcmFwcGVBUEkgYnJpbmdzIEZhc3RBUEktc3R5bGUgcm91dGluZyBhbmQgdmFsaWRhdGlvbiB0byB0aGUgRnJhcHBlIEZyYW1ld29yay4gRGVmaW5lIGVuZHBvaW50cyB3aXRoIHR5cGUgaGludHMsIGdldCBhdXRvbWF0aWMgdmFsaWRhdGlvbiBhbmQgZG9jdW1lbnRhdGlvbi4KCiMjIEluc3RhbGxhdGlvbgoKYGBgYmFzaApwaXAgaW5zdGFsbCBmcmFwcGVhcGkKYGBgCgojIyBRdWljayBTdGFydAoKYGBgcHl0aG9uCmZyb20gZnJhcHBlYXBpIGltcG9ydCBGcmFwcGVBUEkKCmFwcCA9IEZyYXBwZUFQSSgpCgpAYXBwLmdldCgpCmRlZiBoZWxsbyhuYW1lOiBzdHIgPSAiV29ybGQiKToKICAgIHJldHVybiB7Im1lc3NhZ2UiOiBmIkhlbGxvLCB7bmFtZX0hIn0KYGBgCgojIyBFeGFtcGxlcwoKIyMjIFBhdGggUGFyYW1ldGVycwoKRW5hYmxlIEZhc3RBUEktc3R5bGUgcGF0aHMgZm9yIGNsZWFuZXIgVVJMczoKCmBgYHB5dGhvbgpmcm9tIGZyYXBwZWFwaSBpbXBvcnQgRnJhcHBlQVBJCgphcHAgPSBGcmFwcGVBUEkoZmFzdGFwaV9wYXRoX2Zvcm1hdD1UcnVlKQoKQGFwcC5nZXQoIi9pdGVtcy97aXRlbV9pZH0iKQpkZWYgZ2V0X2l0ZW0oaXRlbV9pZDogc3RyKToKICAgIHJldHVybiB7ImlkIjogaXRlbV9pZH0KCiMgR0VUIC9hcGkvaXRlbXMvYWJjMTIzCiMgUmVzcG9uc2U6IHsiaWQiOiAiYWJjMTIzIn0KYGBgCgpNdWx0aXBsZSBwYXRoIHBhcmFtZXRlcnM6CgpgYGBweXRob24KQGFwcC5nZXQoIi91c2Vycy97dXNlcl9pZH0vb3JkZXJzL3tvcmRlcl9pZH0iKQpkZWYgZ2V0X3VzZXJfb3JkZXIodXNlcl9pZDogc3RyLCBvcmRlcl9pZDogaW50KToKICAgIHJldHVybiB7InVzZXJfaWQiOiB1c2VyX2lkLCAib3JkZXJfaWQiOiBvcmRlcl9pZH0KCiMgR0VUIC9hcGkvdXNlcnMvam9obi9vcmRlcnMvNDIKIyBSZXNwb25zZTogeyJ1c2VyX2lkIjogImpvaG4iLCAib3JkZXJfaWQiOiA0Mn0KYGBgCgpDb21iaW5lIHBhdGggYW5kIHF1ZXJ5IHBhcmFtZXRlcnM6CgpgYGBweXRob24KQGFwcC5nZXQoIi9wcm9kdWN0cy97Y2F0ZWdvcnl9IikKZGVmIGxpc3RfcHJvZHVjdHMoCiAgICBjYXRlZ29yeTogc3RyLCAgICAgICAgICAgIyBQYXRoIHBhcmFtZXRlcgogICAgc29ydF9ieTogc3RyID0gIm5hbWUiLCAgICMgUXVlcnkgcGFyYW1ldGVyCiAgICBsaW1pdDogaW50ID0gMTAgICAgICAgICAgIyBRdWVyeSBwYXJhbWV0ZXIKKToKICAgIHJldHVybiB7ImNhdGVnb3J5IjogY2F0ZWdvcnksICJzb3J0X2J5Ijogc29ydF9ieSwgImxpbWl0IjogbGltaXR9CgojIEdFVCAvYXBpL3Byb2R1Y3RzL2VsZWN0cm9uaWNzP3NvcnRfYnk9cHJpY2UmbGltaXQ9MjAKYGBgCgojIyMgUXVlcnkgUGFyYW1ldGVycwoKQXV0b21hdGljIHR5cGUgcGFyc2luZzoKCmBgYHB5dGhvbgpAYXBwLmdldCgpCmRlZiBnZXRfcHJvZHVjdF9kZXRhaWxzKAogICAgcHJvZHVjdF9pZDogaW50LAogICAgdW5pdF9wcmljZTogZmxvYXQsCiAgICBpbl9zdG9jazogYm9vbAopOgogICAgcmV0dXJuIHsKICAgICAgICAicHJvZHVjdF9pZCI6IHByb2R1Y3RfaWQsICAjICIxMjMiIC0+IDEyMwogICAgICAgICJ1bml0X3ByaWNlIjogdW5pdF9wcmljZSwgICMgIjkuOTkiIC0+IDkuOTkKICAgICAgICAiaW5fc3RvY2siOiBpbl9zdG9jayAgICAgICAjICJ0cnVlIiAtPiBUcnVlCiAgICB9CmBgYAoKT3B0aW9uYWwgcGFyYW1ldGVycyB3aXRoIGRlZmF1bHRzOgoKYGBgcHl0aG9uCkBhcHAuZ2V0KCkKZGVmIGxpc3RfcHJvZHVjdHMoCiAgICBjYXRlZ29yeTogc3RyID0gImFsbCIsCiAgICBwYWdlOiBpbnQgPSAxLAogICAgc2VhcmNoOiBzdHIgfCBOb25lID0gTm9uZQopOgogICAgcmV0dXJuIHsiY2F0ZWdvcnkiOiBjYXRlZ29yeSwgInBhZ2UiOiBwYWdlLCAic2VhcmNoIjogc2VhcmNofQpgYGAKCkVudW0gcGFyYW1ldGVyczoKCmBgYHB5dGhvbgpmcm9tIGVudW0gaW1wb3J0IEVudW0KCmNsYXNzIE9yZGVyU3RhdHVzKHN0ciwgRW51bSk6CiAgICBwZW5kaW5nID0gInBlbmRpbmciCiAgICBwcm9jZXNzaW5nID0gInByb2Nlc3NpbmciCiAgICBjb21wbGV0ZWQgPSAiY29tcGxldGVkIgoKQGFwcC5nZXQoKQpkZWYgbGlzdF9vcmRlcnMoc3RhdHVzOiBPcmRlclN0YXR1cyA9IE9yZGVyU3RhdHVzLnBlbmRpbmcpOgogICAgcmV0dXJuIHsic3RhdHVzIjogc3RhdHVzfQpgYGAKCkxpc3QgcGFyYW1ldGVyczoKCmBgYHB5dGhvbgpmcm9tIGZyYXBwZWFwaSBpbXBvcnQgUXVlcnkKCkBhcHAuZ2V0KCkKZGVmIHNlYXJjaF9wcm9kdWN0cygKICAgIHRhZ3M6IExpc3Rbc3RyXSA9IFF1ZXJ5KGRlZmF1bHQ9W10pLAogICAgY2F0ZWdvcmllczogTGlzdFtpbnRdID0gUXVlcnkoZGVmYXVsdD1bXSkKKToKICAgIHJldHVybiB7InRhZ3MiOiB0YWdzLCAiY2F0ZWdvcmllcyI6IGNhdGVnb3JpZXN9CgojIEdFVCA/dGFncz1lbGVjdHJvbmljcyZ0YWdzPXNhbGUmY2F0ZWdvcmllcz0xJmNhdGVnb3JpZXM9MgojIFJlc3BvbnNlOiB7InRhZ3MiOiBbImVsZWN0cm9uaWNzIiwgInNhbGUiXSwgImNhdGVnb3JpZXMiOiBbMSwgMl19CmBgYAoKQWxpYXNlZCBwYXJhbWV0ZXJzOgoKYGBgcHl0aG9uCmZyb20gdHlwaW5nIGltcG9ydCBBbm5vdGF0ZWQKZnJvbSBmcmFwcGVhcGkgaW1wb3J0IFF1ZXJ5CgpAYXBwLmdldCgpCmRlZiBzZWFyY2hfaXRlbXMoCiAgICBzZWFyY2hfdGV4dDogQW5ub3RhdGVkW3N0ciwgUXVlcnkoYWxpYXM9InEiKV0gPSAiIiwKICAgIHBhZ2VfbnVtYmVyOiBBbm5vdGF0ZWRbaW50LCBRdWVyeShhbGlhcz0icCIpXSA9IDEKKToKICAgIHJldHVybiB7InNlYXJjaCI6IHNlYXJjaF90ZXh0LCAicGFnZSI6IHBhZ2VfbnVtYmVyfQoKIyBHRVQgP3E9bGFwdG9wJnA9MgpgYGAKClF1ZXJ5IHBhcmFtZXRlciBtb2RlbHM6CgpgYGBweXRob24KZnJvbSBweWRhbnRpYyBpbXBvcnQgQmFzZU1vZGVsLCBGaWVsZAoKY2xhc3MgUHJvZHVjdEZpbHRlcihCYXNlTW9kZWwpOgogICAgc2VhcmNoOiBzdHIgfCBOb25lID0gTm9uZQogICAgY2F0ZWdvcnk6IHN0ciA9ICJhbGwiCiAgICBtaW5fcHJpY2U6IGZsb2F0ID0gRmllbGQoMCwgZ2U9MCkKICAgIGluX3N0b2NrOiBib29sID0gVHJ1ZQoKQGFwcC5nZXQoKQpkZWYgZmlsdGVyX3Byb2R1Y3RzKGZpbHRlcnM6IEFubm90YXRlZFtQcm9kdWN0RmlsdGVyLCBRdWVyeSgpXSk6CiAgICByZXR1cm4gZmlsdGVycwpgYGAKCiMjIyBSZXF1ZXN0IEJvZHkKClNpbmdsZSBtb2RlbDoKCmBgYHB5dGhvbgpmcm9tIHB5ZGFudGljIGltcG9ydCBCYXNlTW9kZWwsIEZpZWxkCgpjbGFzcyBJdGVtKEJhc2VNb2RlbCk6CiAgICBuYW1lOiBzdHIgPSBGaWVsZCguLi4sIG1pbl9sZW5ndGg9MSwgbWF4X2xlbmd0aD01MCkKICAgIGRlc2NyaXB0aW9uOiBzdHIgfCBOb25lID0gTm9uZQogICAgcHJpY2U6IGZsb2F0ID0gRmllbGQoLi4uLCBndD0wKQoKQGFwcC5wb3N0KCkKZGVmIGNyZWF0ZV9pdGVtKGl0ZW06IEl0ZW0pOgogICAgcmV0dXJuIGl0ZW0KYGBgCgpNdWx0aXBsZSBib2R5IHBhcmFtZXRlcnM6CgpgYGBweXRob24KY2xhc3MgVXNlcihCYXNlTW9kZWwpOgogICAgdXNlcm5hbWU6IHN0cgogICAgZW1haWw6IHN0cgoKY2xhc3MgSXRlbShCYXNlTW9kZWwpOgogICAgbmFtZTogc3RyCiAgICBwcmljZTogZmxvYXQKCkBhcHAucG9zdCgpCmRlZiBjcmVhdGVfdXNlcl9pdGVtKHVzZXI6IFVzZXIsIGl0ZW06IEl0ZW0pOgogICAgcmV0dXJuIHsidXNlciI6IHVzZXIsICJpdGVtIjogaXRlbX0KCiMgUmVxdWVzdCBib2R5OgojIHsKIyAgICAgInVzZXIiOiB7InVzZXJuYW1lIjogImpvaG4iLCAiZW1haWwiOiAiam9obkBleGFtcGxlLmNvbSJ9LAojICAgICAiaXRlbSI6IHsibmFtZSI6ICJMYXB0b3AiLCAicHJpY2UiOiA5OTkuOTl9CiMgfQpgYGAKCk5lc3RlZCBtb2RlbHM6CgpgYGBweXRob24KZnJvbSBweWRhbnRpYyBpbXBvcnQgSHR0cFVybAoKY2xhc3MgSW1hZ2UoQmFzZU1vZGVsKToKICAgIHVybDogSHR0cFVybAogICAgbmFtZTogc3RyCgpjbGFzcyBQcm9kdWN0KEJhc2VNb2RlbCk6CiAgICBuYW1lOiBzdHIKICAgIHByaWNlOiBmbG9hdAogICAgaW1hZ2VzOiBMaXN0W0ltYWdlXQoKQGFwcC5wb3N0KCkKZGVmIGNyZWF0ZV9wcm9kdWN0KHByb2R1Y3Q6IFByb2R1Y3QpOgogICAgcmV0dXJuIHByb2R1Y3QKYGBgCgojIyMgRm9ybSBEYXRhCgpgYGBweXRob24KZnJvbSB0eXBpbmcgaW1wb3J0IEFubm90YXRlZApmcm9tIGZyYXBwZWFwaSBpbXBvcnQgRm9ybQoKQGFwcC5wb3N0KCkKZGVmIGNyZWF0ZV91c2VyX3Byb2ZpbGUoCiAgICB1c2VybmFtZTogQW5ub3RhdGVkW3N0ciwgRm9ybSgpXSwKICAgIGVtYWlsOiBBbm5vdGF0ZWRbc3RyLCBGb3JtKCldLAogICAgYmlvOiBBbm5vdGF0ZWRbc3RyIHwgTm9uZSwgRm9ybSgpXSA9IE5vbmUKKToKICAgIHJldHVybiB7InVzZXJuYW1lIjogdXNlcm5hbWUsICJlbWFpbCI6IGVtYWlsLCAiYmlvIjogYmlvfQpgYGAKCiMjIyBGaWxlIFVwbG9hZHMKClNtYWxsIGZpbGVzIChpbi1tZW1vcnkpOgoKYGBgcHl0aG9uCmZyb20gdHlwaW5nIGltcG9ydCBBbm5vdGF0ZWQKZnJvbSBmcmFwcGVhcGkgaW1wb3J0IEZpbGUsIEZvcm0KCkBhcHAucG9zdCgpCmRlZiB1cGxvYWRfZG9jdW1lbnQoCiAgICBmaWxlOiBBbm5vdGF0ZWRbYnl0ZXMsIEZpbGUoKV0sCiAgICBkZXNjcmlwdGlvbjogQW5ub3RhdGVkW3N0ciB8IE5vbmUsIEZvcm0oKV0gPSBOb25lCik6CiAgICByZXR1cm4geyJmaWxlX3NpemUiOiBsZW4oZmlsZSksICJkZXNjcmlwdGlvbiI6IGRlc2NyaXB0aW9ufQpgYGAKCkxhcmdlIGZpbGVzIChzdHJlYW1lZCk6CgpgYGBweXRob24KZnJvbSBmcmFwcGVhcGkgaW1wb3J0IFVwbG9hZEZpbGUKCkBhcHAucG9zdCgpCmRlZiB1cGxvYWRfbGFyZ2VfZmlsZShmaWxlOiBVcGxvYWRGaWxlKToKICAgIHJldHVybiB7CiAgICAgICAgImZpbGVuYW1lIjogZmlsZS5maWxlbmFtZSwKICAgICAgICAiY29udGVudF90eXBlIjogZmlsZS5jb250ZW50X3R5cGUKICAgIH0KYGBgCgojIyMgUmVzcG9uc2UgTW9kZWxzCgpGaWx0ZXIgcmVzcG9uc2UgZGF0YToKCmBgYHB5dGhvbgpjbGFzcyBVc2VyUmVzcG9uc2UoQmFzZU1vZGVsKToKICAgIGlkOiBpbnQKICAgIHVzZXJuYW1lOiBzdHIKICAgIGVtYWlsOiBzdHIKCkBhcHAuZ2V0KHJlc3BvbnNlX21vZGVsPVVzZXJSZXNwb25zZSkKZGVmIGdldF91c2VyKHVzZXJfaWQ6IGludCk6CiAgICByZXR1cm4gewogICAgICAgICJpZCI6IHVzZXJfaWQsCiAgICAgICAgInVzZXJuYW1lIjogImpvaG5fZG9lIiwKICAgICAgICAiZW1haWwiOiAiam9obkBleGFtcGxlLmNvbSIsCiAgICAgICAgInBhc3N3b3JkIjogInNlY3JldCIgICMgRmlsdGVyZWQgb3V0CiAgICB9CmBgYAoKTGlzdCByZXNwb25zZXM6CgpgYGBweXRob24KY2xhc3MgUHJvZHVjdChCYXNlTW9kZWwpOgogICAgaWQ6IGludAogICAgbmFtZTogc3RyCiAgICBwcmljZTogZmxvYXQKCkBhcHAuZ2V0KHJlc3BvbnNlX21vZGVsPUxpc3RbUHJvZHVjdF0pCmRlZiBsaXN0X3Byb2R1Y3RzKCk6CiAgICByZXR1cm4gWwogICAgICAgIHsiaWQiOiAxLCAibmFtZSI6ICJMYXB0b3AiLCAicHJpY2UiOiA5OTkuOTl9LAogICAgICAgIHsiaWQiOiAyLCAibmFtZSI6ICJNb3VzZSIsICJwcmljZSI6IDI0Ljk5fQogICAgXQpgYGAKCiMjIyBFcnJvciBIYW5kbGluZwoKUmFpc2UgSFRUUCBleGNlcHRpb25zOgoKYGBgcHl0aG9uCmZyb20gZnJhcHBlYXBpLmV4Y2VwdGlvbnMgaW1wb3J0IEhUVFBFeGNlcHRpb24KCkBhcHAuZ2V0KCkKZGVmIGdldF9pdGVtKGl0ZW1faWQ6IGludCk6CiAgICBpZiBpdGVtX2lkIDwgMDoKICAgICAgICByYWlzZSBIVFRQRXhjZXB0aW9uKHN0YXR1c19jb2RlPTQwMCwgZGV0YWlsPSJJdGVtIElEIG11c3QgYmUgcG9zaXRpdmUiKQogICAgcmV0dXJuIHsiaWQiOiBpdGVtX2lkfQpgYGAKCkN1c3RvbSBleGNlcHRpb24gaGFuZGxlcnM6CgpgYGBweXRob24KZnJvbSBmcmFwcGVhcGkgaW1wb3J0IEpTT05SZXNwb25zZSwgUmVxdWVzdAoKY2xhc3MgSXRlbU5vdEZvdW5kKEV4Y2VwdGlvbik6CiAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlbV9pZDogaW50KToKICAgICAgICBzZWxmLml0ZW1faWQgPSBpdGVtX2lkCgpAYXBwLmV4Y2VwdGlvbl9oYW5kbGVyKEl0ZW1Ob3RGb3VuZCkKZGVmIGl0ZW1fbm90X2ZvdW5kX2hhbmRsZXIocmVxdWVzdDogUmVxdWVzdCwgZXhjOiBJdGVtTm90Rm91bmQpOgogICAgcmV0dXJuIEpTT05SZXNwb25zZSgKICAgICAgICBzdGF0dXNfY29kZT00MDQsCiAgICAgICAgY29udGVudD17ImVycm9yIjogIklURU1fTk9UX0ZPVU5EIiwgImRldGFpbCI6IGYiSXRlbSB7ZXhjLml0ZW1faWR9IG5vdCBmb3VuZCJ9CiAgICApCmBgYAoKT3ZlcnJpZGUgdmFsaWRhdGlvbiBlcnJvciBoYW5kbGVyOgoKYGBgcHl0aG9uCmZyb20gZnJhcHBlYXBpLmV4Y2VwdGlvbnMgaW1wb3J0IFJlcXVlc3RWYWxpZGF0aW9uRXJyb3IKCkBhcHAuZXhjZXB0aW9uX2hhbmRsZXIoUmVxdWVzdFZhbGlkYXRpb25FcnJvcikKZGVmIHZhbGlkYXRpb25fZXJyb3JfaGFuZGxlcihyZXF1ZXN0OiBSZXF1ZXN0LCBleGM6IFJlcXVlc3RWYWxpZGF0aW9uRXJyb3IpOgogICAgcmV0dXJuIEpTT05SZXNwb25zZSgKICAgICAgICBzdGF0dXNfY29kZT00MjIsCiAgICAgICAgY29udGVudD17CiAgICAgICAgICAgICJlcnJvciI6ICJWQUxJREFUSU9OX0VSUk9SIiwKICAgICAgICAgICAgImRldGFpbHMiOiBbeyJmaWVsZCI6IGVbImxvYyJdWy0xXSwgIm1lc3NhZ2UiOiBlWyJtc2ciXX0gZm9yIGUgaW4gZXhjLmVycm9ycygpXQogICAgICAgIH0KICAgICkKYGBgCgojIyMgSGVhZGVyIFBhcmFtZXRlcnMKCmBgYHB5dGhvbgpmcm9tIHR5cGluZyBpbXBvcnQgQW5ub3RhdGVkCmZyb20gZnJhcHBlYXBpIGltcG9ydCBIZWFkZXIKCkBhcHAuZ2V0KCkKZGVmIGdldF91c2VyX2luZm8oCiAgICB1c2VyX2FnZW50OiBBbm5vdGF0ZWRbc3RyLCBIZWFkZXIoKV0sCiAgICB4X2N1c3RvbV9oZWFkZXI6IEFubm90YXRlZFtzdHIsIEhlYWRlcigpXQopOgogICAgcmV0dXJuIHsidXNlcl9hZ2VudCI6IHVzZXJfYWdlbnQsICJjdXN0b21faGVhZGVyIjogeF9jdXN0b21faGVhZGVyfQoKIyBIZWFkZXJzOiBVc2VyLUFnZW50LCBYLUN1c3RvbS1IZWFkZXIgKGh5cGhlbiBjb252ZXJ0ZWQgdG8gdW5kZXJzY29yZSkKYGBgCgojIyMgRmllbGQgVmFsaWRhdGlvbgoKU3RyaW5nIHZhbGlkYXRpb246CgpgYGBweXRob24KY2xhc3MgUHJvZHVjdChCYXNlTW9kZWwpOgogICAgbmFtZTogc3RyID0gRmllbGQobWluX2xlbmd0aD0zLCBtYXhfbGVuZ3RoPTUwKQogICAgc2t1OiBzdHIgPSBGaWVsZChwYXR0ZXJuPSJeW0EtWl17Mn0tWzAtOV17NH0kIikgICMgRm9ybWF0OiBYWC0wMDAwCmBgYAoKTnVtZXJpYyB2YWxpZGF0aW9uOgoKYGBgcHl0aG9uCmNsYXNzIE9yZGVyKEJhc2VNb2RlbCk6CiAgICBxdWFudGl0eTogaW50ID0gRmllbGQoZ3Q9MCwgbGU9MTAwKQogICAgdW5pdF9wcmljZTogZmxvYXQgPSBGaWVsZChndD0wKQogICAgZGlzY291bnRfcGVyY2VudDogZmxvYXQgPSBGaWVsZChnZT0wLCBsZT0xMDApCmBgYAoKIyMgVmVyc2lvbiBDb21wYXRpYmlsaXR5CgpGcmFwcGVBUEkgYXV0b21hdGljYWxseSBkZXRlY3RzIHlvdXIgRnJhcHBlIHZlcnNpb246Cgp8IEZyYXBwZSBWZXJzaW9uIHwgU3VwcG9ydCB8CnwtLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfAp8IHYxNC54IHwgU3RhYmxlIHwKfCB2MTUueCB8IFN0YWJsZSB8CnwgdjE2LnggfCBCZXRhIHwKCkNoZWNrIGRldGVjdGVkIHZlcnNpb246CgpgYGBweXRob24KaW1wb3J0IGZyYXBwZWFwaQpwcmludChmcmFwcGVhcGkuZ2V0X2RldGVjdGVkX2ZyYXBwZV92ZXJzaW9uKCkpICAjIFJldHVybnM6IDE0LCAxNSwgb3IgMTYKYGBgCgojIyBEb2N1bWVudGF0aW9uCgpGcmFwcGVBUEkgZm9sbG93cyBGYXN0QVBJJ3MgaW50ZXJmYWNlLiBGb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24sIHNlZSBbRmFzdEFQSSdzIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vKS4KCiMjIFJvYWRtYXAKCiMjIyBGcmFwcGUgVmVyc2lvbnMKCi0gW3hdIEZyYXBwZSBWMTQgc3VwcG9ydAotIFt4XSBGcmFwcGUgVjE1IHN1cHBvcnQKLSBbeF0gRnJhcHBlIFYxNiBzdXBwb3J0IChkZXZlbG9wIGJyYW5jaCkKCiMjIyBNZXRob2RzCgotIFt4XSBgYXBwLmdldCguLi4pYAotIFt4XSBgYXBwLnBvc3QoLi4uKWAKLSBbeF0gYGFwcC5wdXQoLi4uKWAKLSBbeF0gYGFwcC5wYXRjaCguLi4pYAotIFt4XSBgYXBwLmRlbGV0ZSguLi4pYAoKIyMjIFF1ZXJ5IFBhcmFtZXRlcnMKCi0gW3hdIEF1dG9tYXRpYyB0eXBlIHBhcnNpbmcgYmFzZWQgb24gdHlwZSBoaW50cwotIFt4XSBSZXF1aXJlZCBwYXJhbWV0ZXJzIChgbmVlZHk6IHN0cmAsIGBuZWVkeTogc3RyID0gLi4uYCkKLSBbeF0gT3B0aW9uYWwgcGFyYW1ldGVycyB3aXRoIGRlZmF1bHRzIChgc2tpcDogaW50ID0gMGApCi0gW3hdIE9wdGlvbmFsIHBhcmFtZXRlcnMgd2l0aG91dCBkZWZhdWx0cyAoYGxpbWl0OiBpbnQgfCBOb25lID0gTm9uZWApCi0gW3hdIEVudW0gc3VwcG9ydAotIFt4XSBCb29sZWFuIHBhcmFtZXRlcnMKLSBbeF0gTGlzdCBwYXJhbWV0ZXJzIChgP3E9Zm9vJnE9YmFyYCkKLSBbeF0gQWxpYXNlZCBwYXJhbWV0ZXJzIChgUXVlcnkoYWxpYXM9InF1ZXJ5IilgKQotIFt4XSBRdWVyeSBwYXJhbWV0ZXIgbW9kZWxzCi0gW3hdIEF1dG9tYXRpYyBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24KCiMjIyBCb2R5IFBhcmFtZXRlcnMKCi0gW3hdIFB5ZGFudGljIG1vZGVsIGJvZHkgKGBpdGVtOiBJdGVtYCkKLSBbeF0gTXVsdGlwbGUgYm9keSBwYXJhbWV0ZXJzCi0gW3hdIFNpbmd1bGFyIHZhbHVlcyB3aXRoIGBCb2R5KClgCi0gW3hdIEVtYmVkIGJvZHkgcGFyYW1ldGVyCi0gW3hdIE5lc3RlZCBtb2RlbHMKLSBbeF0gQXV0b21hdGljIHR5cGUgcGFyc2luZwoKIyMjIEhlYWRlciBQYXJhbWV0ZXJzCgotIFt4XSBCYXNpYyBoZWFkZXIgc3VwcG9ydAotIFsgXSBIZWFkZXIgcGFyYW1ldGVyIG1vZGVscwotIFsgXSBEdXBsaWNhdGUgaGVhZGVycwotIFsgXSBGb3JiaWQgZXh0cmEgaGVhZGVycwoKIyMjIENvb2tpZSBQYXJhbWV0ZXJzCgotIFsgXSBDb29raWUgcGFyYW1ldGVyIHN1cHBvcnQKCiMjIyBGb3JtIERhdGEKCi0gW3hdIEZvcm0gZmllbGRzIHdpdGggYEZvcm0oKWAKLSBbeF0gTXVsdGlwbGUgZm9ybSBmaWVsZHMKLSBbeF0gRm9ybSBkYXRhIGFzIFB5ZGFudGljIG1vZGVsCi0gWyBdIEZvcmJpZCBleHRyYSBmb3JtIGZpZWxkcwoKIyMjIEZpbGUgVXBsb2FkcwoKLSBbeF0gU21hbGwgZmlsZXMgd2l0aCBgRmlsZSgpYAotIFt4XSBMYXJnZSBmaWxlcyB3aXRoIGBVcGxvYWRGaWxlYAotIFsgXSBPcHRpb25hbCBmaWxlIHVwbG9hZHMKLSBbIF0gTXVsdGlwbGUgZmlsZSB1cGxvYWRzCgojIyMgRXJyb3IgSGFuZGxpbmcKCi0gW3hdIEhUVFBFeGNlcHRpb24KLSBbeF0gUmVxdWVzdFZhbGlkYXRpb25FcnJvcgotIFt4XSBSZXNwb25zZVZhbGlkYXRpb25FcnJvcgotIFt4XSBDdXN0b20gZXhjZXB0aW9uIGhhbmRsZXJzCi0gW3hdIE92ZXJyaWRlIGRlZmF1bHQgaGFuZGxlcnMKLSBbIF0gRnJhcHBlIHRyYW5zYWN0aW9uIG1hbmFnZW1lbnQKCiMjIyBSZXNwb25zZSBNb2RlbHMKCi0gW3hdIGByZXNwb25zZV9tb2RlbGAgcGFyYW1ldGVyCi0gW3hdIFJldHVybiB0eXBlIGFubm90YXRpb25zCi0gW3hdIE91dHB1dCBmaWx0ZXJpbmcKLSBbeF0gYHJlc3BvbnNlX21vZGVsYCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgcmV0dXJuIHR5cGUKCiMjIyBWYWxpZGF0aW9uCgotIFt4XSBTdHJpbmcgdmFsaWRhdGlvbnMgKGBtaW5fbGVuZ3RoYCwgYG1heF9sZW5ndGhgLCBgcGF0dGVybmApCi0gW3hdIE51bWVyaWMgdmFsaWRhdGlvbnMgKGBndGAsIGBnZWAsIGBsdGAsIGBsZWApCi0gW3hdIE1ldGFkYXRhIChgdGl0bGVgLCBgZGVzY3JpcHRpb25gLCBgZGVwcmVjYXRlZGApCi0gW3hdIGBpbmNsdWRlX2luX3NjaGVtYWAKCiMjIyBQbGFubmVkCgotIFsgXSBSYXRlIGxpbWl0aW5nCi0gWyBdIERlcGVuZGVuY2llcwotIFsgXSBNaWRkbGV3YXJlCi0gWyBdIERlYnVnZ2luZyBjYXBhYmlsaXRpZXMKLSBbIF0gRG90dGVkIHBhdGggcGFyYW1ldGVycwoKIyMgUmVsYXRlZAoKLSBbUFIgIzIzMTM1XShodHRwczovL2dpdGh1Yi5jb20vZnJhcHBlL2ZyYXBwZS9wdWxsLzIzMTM1KTogVHlwZSBoaW50cyBmb3IgQVBJIGZ1bmN0aW9ucwotIFtQUiAjMjIzMDBdKGh0dHBzOi8vZ2l0aHViLmNvbS9mcmFwcGUvZnJhcHBlL3B1bGwvMjIzMDApOiBFbmhhbmNlZCBgZnJhcHBlLndoaXRlbGlzdCgpYAotIFtQUiAjMTkwMjldKGh0dHBzOi8vZ2l0aHViLmNvbS9mcmFwcGUvZnJhcHBlL3B1bGwvMTkwMjkpOiBUeXBlIHNhZmV0eSBpbXByb3ZlbWVudHMKLSBbSXNzdWUgIzE0OTA1XShodHRwczovL2dpdGh1Yi5jb20vZnJhcHBlL2ZyYXBwZS9pc3N1ZXMvMTQ5MDUpOiBBUEkgZG9jdW1lbnRhdGlvbiBkaXNjdXNzaW9uCg== readmeEtag: '"d081126ee5cb104ed843358dd2707482a7344ec8"' readmeLastModified: Sat, 24 Jan 2026 21:40:41 GMT repositoryId: 825093329 description: FastAPI for Frappe created: '2024-07-06T18:48:18Z' updated: '2026-01-24T21:40:46Z' language: Python archived: false stars: 57 watchers: 4 forks: 4 owner: 0xsirsaif logo: https://avatars.githubusercontent.com/u/55336614?v=4 repoEtag: '"c6d5e63caccc357e7a7529e6ba0766540dbca610532573ec8a8b79129381881e"' repoLastModified: Sat, 24 Jan 2026 21:40:46 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/0xsirsaif/frappe-api - source: openapi3 tags repository: https://github.com/180protocol/codaptor v3: true repositoryMetadata: base64Readme: >- PGltZyBzcmM9Ii5naXRodWIvQ29kYXB0b3ItbG9nby5wbmciIGFsdD0iQ29kYXB0b3IgTG9nbyIgd2lkdGg9IjQwJSIvPgoKQ29kYXB0b3IgaXMgYW4gb3BlbiBzb3VyY2UgcHJvamVjdCBkZXNpZ25lZCB0byBhZGRyZXNzIHRoZSBuZWVkcyBvZiB0ZWFtcyBidWlsZGluZyBkZWNlbnRyYWxpemVkIGFwcGxpY2F0aW9ucwpvbiBbQ29yZGFdKGh0dHBzOi8vZ2l0aHViLmNvbS9jb3JkYS9jb3JkYSkgb3IgaW50ZWdyYXRpbmcgQ29yRGFwcHMgd2l0aCBvdGhlciBzeXN0ZW1zLiBDb3JkYSBpcyBhIGdyZWF0IGVuZ2luZQpmb3IgZGVjZW50cmFsaXplZCBhcHBsaWNhdGlvbnMsIGJ1dCBpbiBvcmRlciB0byBjb21tdW5pY2F0ZSB3aXRoIGEgQ29yZGEgbm9kZSwgdGVhbXMgaGF2ZSB0byBkZXZlbG9wIGJlc3Bva2UKaW50ZWdyYXRpb25zIHVzaW5nIGl0cyBKYXZhIGNsaWVudCBsaWJyYXJpZXMuIFRoaXMgY29tZXMgd2l0aCBhIHN0ZWVwIGxlYXJuaW5nIGN1cnZlLCBhbmQgYWRkcyBjb21wbGV4aXR5IGZvcgpmb3IgdGVhbXMgd29ya2luZyBvdXRzaWRlIEphdmEgZWNvc3lzdGVtLCBlLmcuIE5vZGUuanMsIC5OZXQsIG9yIFB5dGhvbi4KCkNvZGFwdG9yIHNvbHZlcyB0aGlzIHByb2JsZW0gYnkgYXV0b21hdGljYWxseSBjcmVhdGluZyBSRVNUIEFQSSBmb3IgYW55IENvckRhcHAgcnVubmluZyBvbiBhIENvcmRhIG5vZGUuIFRoZXJlIGFyZQptYW55IHRvb2xzIHRoYXQgdW5kZXJzdGFuZCBSRVNUIEFQSXMgaW4gZXZlcnkgdGVjaG5vbG9neSBzdGFjaywgYW5kIHRlYW1zIGNhbiBwaWNrIGFuZCBjaG9vc2Ugd2hhdCB3b3JrcyBmb3IgdGhlbS4KQ29kYXB0b3IgYWxzbyBhbGxvd3MgdG8gZGVjb3VwbGUgQVBJIHVzZXJzIGZyb20gdGhlIHVuZGVybHlpbmcgQ29yZGEgbm9kZSBpbiBvcmRlciB0byBpbXByb3ZlIHRoZSBhdmFpbGFiaWxpdHksCnJlbGlhYmlsaXR5LCBhbmQgZmxleGliaWxpdHkgb2YgdGhlIG92ZXJhbGwgc3lzdGVtLgoKIyMgRmVhdHVyZXMKCiogWmVyby1jb25maWd1cmF0aW9uIGRlcGxveW1lbnQgb3B0aW9uIGFzIGFuIGVtYmVkZGVkIENvcmRhIHNlcnZpY2UgLS0gZ3JlYXQgZm9yIGRldmVsb3BtZW50IGFuZCBpbnRlZ3JhdGlvbiB0ZXN0aW5nCiogR2VuZXJhdGlvbiBvZiBbT3BlbkFQSSAzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgSlNPTiBzcGVjIGZvciB0aGUgQVBJIGVuZHBvaW50IGJhc2VkIAogIG9uIGFjdHVhbCBmbG93cyBhbmQgY29udHJhY3Qgc3RhdGUgY2xhc3NlcyBvZiBhdmFpbGFibGUgQ29yRGFwcHMKKiBFbWJlZGRlZCBbU3dhZ2dlciBVSV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3Rvb2xzL3N3YWdnZXItdWkvKSBmb3IgZXhwbG9yaW5nIHRoZSBBUEkgaW4geW91ciBicm93c2VyCiogRG9ja2VyLWZyaWVuZGx5IHN0YW5kYWxvbmUgZGVwbG95bWVudCBvcHRpb24gY29uZmlndXJhYmxlIHZpYSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIGNvbXBhdGlibGUgd2l0aAogIEt1YmVybmV0ZXMgc2VjcmV0cyBtYW5hZ2VtZW50CiogU3luY2hyb25vdXMgb3IgYXN5bmNocm9ub3VzIGV4ZWN1dGlvbiBvZiBDb3JkYSBmbG93cyB2aWEgdGhlIEFQSQoqIENvbXByZWhlbnNpdmUgQVBJIGZvciBub2RlIHZhdWx0IHF1ZXJpZXMKKiBGbGV4aWJsZSBBUEkgc2VjdXJpdHkgYmFzZWQgb24gW1BBQzRKXShodHRwczovL3d3dy5wYWM0ai5vcmcvKSBhbGxvd2luZyBzdWNoIGF1dGhvcml6YXRpb24gbW9kZWxzIGFzIEFQSSBrZXlzLAogIE9wZW5JRCBDb25uZWN0LCBTQU1MIDIsIG9yIGp1c3QgYWJvdXQgYW55dGhpbmcgZWxzZSAtLSBncmVhdCBmb3IgaW50ZWdyYXRpbmcgbWFuYWdlZCBzZXJ2aWNlcyBsaWtlIEFXUyBDb2duaXRvCiogRnVsbCBzdXBwb3J0IGZvciBTU0wgb3V0IG9mIHRoZSBib3gKKiBFeHRlbnNpYmxlIGFyY2hpdGVjdHVyZSBhbGxvd2luZyBiZXNwb2tlIGZlYXR1cmVzIHRvIGJlIGFkZGVkIGFzIHNpbXBseSBhcyBkcm9wcGluZyBhIEpBUiBmaWxlIGludG8gYSBkaXJlY3RvcnkKCiMjIFZlcnNpb25zIGFuZCBhcnRpZmFjdHMKCkF0IHRoZSBtb21lbnQgQ29kYXB0b3IgaXMgYSBwcmUtMS4wIHRlY2hub2xvZ3kgcHJldmlldyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgY29tbXVuaXR5IHRvIGdhdGhlciBmZWVkYmFjayBhbmQgaWRlbnRpZnkKYXJlYXMgZm9yIGltcHJvdmVtZW50LiBJdCBpcyBub3QgY29uc2lkZXJlZCBwcm9kdWN0aW9uLXJlYWR5IHlldC4KCkxhdGVzdCBDb2RhcHRvciByZWxlYXNlIGlzIFswLjQuMV0oaHR0cHM6Ly9naXRodWIuY29tLzE4MFByb3RvY29sL2NvZGFwdG9yL3JlbGVhc2VzL3RhZy8wLjQuMSkuIFlvdSBjYW4gZG93bmxvYWQKc3RhbmRhbG9uZSBidW5kbGUgYXJjaGl2ZSBmcm9tIHRoZSByZWxlYXNlIHBhZ2Ugb24gR2l0SHViLiBGcm9tIHZlcnNpb24gMC40LjEgY29yZGFwdG9yIHJlbGVhc2VzIGFyZSB0YWdnZWQgd2l0aCB0aGUgY29yZGEgcGxhdGZvcm0gdmVyc2lvbiB0aGV5IGFyZSBidWlsdCB1bmRlci4gRm9yIGV4LCB0aGUgY3VycmVudCAwLjQuMSB2ZXJzaW9uIGlzIHRhZ2dlZCBhcyBgMC40LjEtY29yZGE0LjdgLiBBbGwgQ29kYXB0b3IgbW9kdWxlcyBhcmUgClthdmFpbGFibGUgaW4gTWF2ZW4gQ2VudHJhbF0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnL3NlYXJjaD9xPWc6dGVjaC5iMTgwLmNvcmRhcHRvciUyMEFORCUyMHY6MC40LjEtY29yZGE0LjcpLgpFbWJlZGRlZCBDb3JEYXBwIGJ1bmRsZSBjYW4gYmUgYWRkZWQgdXNpbmcgY29vcmRpbmF0ZXMgYHRlY2guYjE4MC5jb3JkYXB0b3I6Y29yZGFwdG9yLWJ1bmRsZS1yZXN0LWVtYmVkZGVkOjAuNC4xLWNvcmRhNC43YCAoCnNlZSBbZ2V0dGluZyBzdGFydGVkIGd1aWRlXSguL2RvY3MvZ2V0dGluZy1zdGFydGVkLm1kKSkKCkJyYW5jaCBbMC4xLnhdKGh0dHBzOi8vZ2l0aHViLmNvbS9iMTgwdGVjaC9jb3JkYXB0b3IvdHJlZS8wLjEueCkgd2FzIGNyZWF0ZWQgZm9yIGJ1ZyBmaXhlcywgYW5kIHN1YnNlcXVlbnQKcmVsZWFzZXMgb2YgdGhlIDAueC54IGFyZSBnb2luZyB0byBiZSBidWdmaXggb25seS4gU25hcHNob3QgdmVyc2lvbnMgb2YgYWxsIGFydGlmYWN0cyAoYDAuNC4xLWNvcmRhNC43LVNOQVBTSE9UYCkKYXJlIGF2YWlsYWJsZSBmcm9tIFtPU1MgU29uYXR5cGUgQ29yZGFwdG9yXShodHRwczovL29zcy5zb25hdHlwZS5vcmcvI25leHVzLXNlYXJjaDtnYXZ+dGVjaC5iMTgwLmNvcmRhcHRvcikKTWF2ZW4gcmVwb3NpdG9yeSBpZiB5b3UgZG8gbm90IHdhbnQgdG8gd2FpdCBmb3IgdGhlIHJlbGVhc2UuIFB1Ymxpc2hlZCBzbmFwc2hvdCB2ZXJzaW9ucyBwYXNzIGFsbCBhdXRvbWF0ZWQgdGVzdHMuCgpBbGwgbmV3IGZ1bmN0aW9uYWxpdHkgaXMgZGV2ZWxvcGVkIGluIGBtYXN0ZXJgIGJyYW5jaCwgYW5kIHRoZSBuZXh0IG1ham9yIG1pbGVzdG9uZSByZWxlYXNlIGlzIGdvaW5nIHRvIGJlIDAuNS4wLgpTbmFwc2hvdCB2ZXJzaW9ucyBvZiBhbGwgYXJ0aWZhY3RzIChgMC40LjEtY29yZGE0LjctU05BUFNIT1RgKSBhcmUgYXZhaWxhYmxlIGZyb20KW09TUyBTb25hdHlwZSBDb3JkYXB0b3JdKGh0dHBzOi8vb3NzLnNvbmF0eXBlLm9yZy8jbmV4dXMtc2VhcmNoO2dhdn50ZWNoLmIxODAuY29yZGFwdG9yKQpNYXZlbiByZXBvc2l0b3J5IGlmIHlvdSBkbyBub3Qgd2FudCB0byB3YWl0IGZvciB0aGUgcmVsZWFzZS4gUHVibGlzaGVkIHNuYXBzaG90IHZlcnNpb25zIHBhc3MgYWxsIGF1dG9tYXRlZCB0ZXN0cy4KCiMjIEdldHRpbmcgc3RhcnRlZAoKQ29kYXB0b3IgaXMgZGVzaWduZWQgZnJvbSB0aGUgZ3JvdW5kIHVwIHRvIGJlIHVub2JzdHJ1Y3RlZCwgc28gdGhlcmUgaXMgKipubyBjb2RlIG9yIGNvbmZpZ3VyYXRpb24gcmVxdWlyZWQqKiEKU2ltcGx5IGRvd25sb2FkIHRoZSBlbWJlZGRlZCBDb3JEYXBwIGJ1bmRsZSBKQVIgZmlsZSBmcm9tIHRoZQpbbGF0ZXN0IHJlbGVhc2UgcGFnZV0oaHR0cHM6Ly9naXRodWIuY29tL2IxODB0ZWNoL2NvcmRhcHRvci9yZWxlYXNlcykgYW5kIGRyb3AgaXQgaW50byBgY29yZGFwcHNgIApkaXJlY3Rvcnkgb2YgeW91ciBDb3JkYSBub2RlLiBSZXN0YXJ0IHRoZSBub2RlIGFuZCBmaXJlIHVwIHlvdXIgYnJvd3NlciB0byBhY2Nlc3MgdGhlIFN3YWdnZXIgVUkuCgpSZWFkIG1vcmUgaW4gW0dldHRpbmcgc3RhcnRlZF0oLi9kb2NzL2dldHRpbmctc3RhcnRlZC5tZCkgZ3VpZGUgYWJvdXQgb3RoZXIgd2F5cyB0byBnZXQgaW1tZWRpYXRlbHkKcHJvZHVjdGl2ZSB3aXRoIENvZGFwdG9yLgoKIyMgTmV4dCBzdGVwcwoKKiBMZWFybiBob3cgdG8gW2dldCBzdGFydGVkXSguL2RvY3MvZ2V0dGluZy1zdGFydGVkLm1kKSB3aXRoIENvZGFwdG9yCiogTGVhcm4gbW9yZSBhYm91dCBbdXNpbmddKC4vZG9jcy9ob3ctdG8tdXNlLm1kKSBDb2RhcHRvcgoqIFJlYWQgYWJvdXQgaG93IENvZGFwdG9yIGZpdHMgaW50byB5b3VyIFthcmNoaXRlY3R1cmVdKC4vZG9jcy9hcmNoaXRlY3R1cmUubWQpCiogVW5kZXJzdGFuZCBob3cgdG8gW2NvbmZpZ3VyZV0oLi9kb2NzL2NvbmZpZ3VyYXRpb24ubWQpIENvZGFwdG9yCiogTGVhcm4gaG93IHRvIFtjcmVhdGUgZXh0ZW5zaW9uc10oLi9kb2NzL2V4dGVuc2lvbnMubWQpIGZvciBDb2RhcHRvcgoqIFN0YXkgdHVuZWQgdG8gdXBkYXRlcyBpbiB0aGUgW2RldmVsb3BtZW50IGJsb2ddKGh0dHBzOi8vbWVkaXVtLmNvbS9iMTgwdGVjaCkKKiBJZiB5b3UgYXJlIGRldmVsb3BpbmcgZm9yIHRoZSBDb2RhcHRvciBbZGV2ZWxvcGVyIGd1aWRlXSguL2RvY3MvZGV2ZWxvcGVyLWd1aWRlLm1kKQoKIyMgR2V0dGluZyBzdXBwb3J0CgpXZSBvZmZlciBjb21tdW5pdHkgc3VwcG9ydCBmb3IgQ29kYXB0b3IgaW4gYCNjb3JkYXB0b3JgIGNoYW5uZWwgb24gW0NvcmRhbGVkZ2VyIFNsYWNrXShodHRwczovL3NsYWNrLmNvcmRhLm5ldC8pLgpUaGUgZGV2ZWxvcG1lbnQgdGVhbSBtZW1iZXJzIGNhbiBvZnRlbiBiZSBzZWVuIGhhbmdpbmcgb3V0IHRoZXJlLgoKSWYgc29tZXRoaW5nIGlzbid0IHdvcmtpbmcsIGZlZWwgZnJlZSB0byBmaWxlIGEgYnVnIHJlcG9ydCB0aHJvdWdoCltHaXRIdWIgSXNzdWVzXShodHRwczovL2dpdGh1Yi5jb20vYjE4MHRlY2gvY29yZGFwdG9yL2lzc3VlcykuIEFsdGhvdWdoLCB3ZSBhc2sgeW91IHRvIHNlYXJjaCBmb3IKcmVsYXRlZCBtZXNzYWdlcyBpbiB0aGUgYWJvdmUgU2xhY2sgY2hhbm5lbCBhbmQgYW1vbmcgZXhpc3RpbmcgcmVwb3J0ZWQgaXNzdWVzIG9uIEdpdEh1YiBmaXJzdAp0byBhdm9pZCBjcmVhdGluZyBkdXBsaWNhdGVzLgoKRm9yIGJlc3Bva2UgZmVhdHVyZSBkZXZlbG9wbWVudCwgY3VzdG9tIGludGVncmF0aW9ucyBhbmQgZXh0ZW5zaW9ucywgb3IgY29tbWVyY2lhbCBzdXBwb3J0IGVucXVpcmllcywgcGxlYXNlIGVtYWlsIAp0byBbbWFuYWdlbWVudEBib25kMTgwLmNvbV0obWFpbHRvOm1hbmFnZW1lbnRAYm9uZDE4MC5jb20/c3ViamVjdD1Db3JkYXB0b3IpLgoKIyMgQ29udHJpYnV0aW5nCgpDb2RhcHRvciBpcyBhbiBvcGVuLXNvdXJjZSBwcm9qZWN0IGFuZCBjb250cmlidXRpb25zIGFyZSB3ZWxjb21lIQoKIyMgTGljZW5zZQoKW0dOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgb3IgbGF0ZXJdKC4vTElDRU5TRSkKClNQRFg6QUdQTC0zLjAtb3ItbGF0ZXIKCkNvcHlyaWdodCAoQykgMjAyMCBCb25kMTgwIExpbWl0ZWQKCioqSW1wb3J0YW50IG5vdGljZSoqOiBmb3IgdGhlIGF2b2lkYW5jZSBvZiBkb3VidCBpbiB0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGxpY2Vuc2UgdGVybXMsCnRoZSBjb3B5cmlnaHQgaG9sZGVycyBjb21taXQgdG8gdHJlYXQgdGhlIGZvbGxvd2luZyB1c2VzIG9mIENvZGFwdG9yIGFzICdhZ2dyZWdhdGUnIGFzIG9wcG9zZWQgdG8gJ21vZGlmaWVkIHZlcnNpb25zJzoKMS4gRGVwbG95aW5nIGVtYmVkZGVkIENvZGFwdG9yIGJ1bmRsZSBKQVIgZmlsZSBpbnRvIGEgQ29yZGEgbm9kZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIGEgZmlsZQpkaXN0cmlidXRlZCBhcyBhIGJpbmFyeSBvciBidWlsdCBmcm9tIHRoZSBzb3VyY2UgY29kZSwgYXMgbG9uZyBhcyB0aGUgc291cmNlIGNvZGUgb2YgYWxsIG1vZHVsZXMgaW4gdGhlIGJ1bmRsZQpyZW1haW5zIHVubW9kaWZpZWQuCjIuIEFubm90YXRpbmcgYXBwbGljYXRpb24gY29kZSB3aXRoIGFubm90YXRpb24gdHlwZXMgcHJvdmlkZWQgYnkgQ29kYXB0b3IgaW4gb3JkZXIgdG8gZmluZS10dW5lIHRoZSBiZWhhdmlvdXIKb2YgQ29kYXB0b3IgY29tcG9uZW50cyBpbnRlcmFjdGluZyB3aXRoIHRoZSBhcHBsaWNhdGlvbiBjb2RlLgozLiBDcmVhdGluZyBleHRlbnNpb25zIGZvciBDb2RhcHRvciB1c2luZyBpdCdzIHB1Ymxpc2hlZCBtaWNyb2tlcm5lbCdzIGFuZCBtb2R1bGVzJyBBUElzLCB3aGVyZSB0aGUKZXh0ZW5zaW9ucycgY29kZSBpcyBhc3NlbWJsZWQgaW50byBzZXBhcmF0ZSBKQVIgZmlsZXMgYW5kIG1hZGUgYXZhaWxhYmxlIGZvciBDb2RhcHRvciBtaWNyb2tlcm5lbAp0byBkeW5hbWljYWxseSBkaXNjb3ZlciBhdCBydW50aW1lLiBGb3IgY2xhcml0eSdzIHNha2UsIGNvZGUgY29uc3RpdHV0aW5nIHB1Ymxpc2hlZCBBUElzIG11c3QgYmUgYXBwcm9wcmlhdGVseQphbm5vdGF0ZWQsIHNlZSBbRXh0ZW5kaW5nIENvcmRhcHRvcl0oLi9kb2NzL2V4dGVuc2lvbnMubWQpIGZvciBmdXJ0aGVyIGRldGFpbHMuCjQuIEluY2x1ZGluZyBDb2RhcHRvciBhcyBhIGNvbXBvbmVudCBvZiBhIGJyb2FkZXIgYXBwbGljYXRpb24gYXJjaGl0ZWN0dXJlIHdoZXJlIG90aGVyIGNvbXBvbmVudHMgaW50ZXJhY3Qgd2l0aCBpdAp1c2luZyBuZXR3b3JrIGNvbW11bmljYXRpb24gcHJvdG9jb2xzIHJlZ2FyZGxlc3Mgb2YgaG93IENvZGFwdG9yIGlzIGRlcGxveWVkIGFuZCBjb25maWd1cmVkLgoKVGhlIGludGVudCBvZiB1c2luZyBBR1BMIGlzIHRvIHByb3RlY3QgdGhlIGludGVyZXN0cyBvZiB0aGUgQ29kYXB0b3IgdXNlciBjb21tdW5pdHkgYW5kIGVuc3VyZSBhbnkgYnVnIGZpeGVzCmFuZCBpbXBvcnRhbnQgbmV3IGZlYXR1cmVzIGRldmVsb3BlZCBieSBzb21lIHVzZXJzIGJlY29tZSBhdmFpbGFibGUgdG8gZXZlcnlvbmUgZWxzZS4gSXQgaXMgbm90IHRoZSBpbnRlbnQgb2YKdXNpbmcgQUdQTCB0byBmb3JjZSBkaXNjbG9zZSBvZiBhbnkgcHJvcHJpZXRhcnkgYXBwbGljYXRpb24gY29kZSByZWx5aW5nIG9uIENvZGFwdG9yLgo= readmeEtag: '"d2e9e89471e0f2d0b4e1e640d59978a8ce286929"' readmeLastModified: Thu, 21 Jul 2022 11:16:00 GMT repositoryId: 311944546 description: >- Instantly add Corda to any tech stack and improve resiliency of your architecture created: '2020-11-11T11:02:29Z' updated: '2025-04-27T20:09:21Z' language: Kotlin archived: false stars: 14 watchers: 2 forks: 5 owner: 180Protocol logo: https://avatars.githubusercontent.com/u/74298369?v=4 license: AGPL-3.0 repoEtag: '"6b4bca34f9036c3150d56b3349ec2dcb87f07a78387d9bf47232b39bc1b2d453"' repoLastModified: Sun, 27 Apr 2025 20:09:21 GMT foundInMaster: true category: - Documentation - Server Implementations id: f46a7821f80968f7a52b8d1d69aabac9 - source: openapi3 tags repository: https://github.com/nijens/openapi-bundle v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIGJ1bmRsZQoKWyFbTGF0ZXN0IHZlcnNpb24gb24gUGFja2FnaXN0XVtpY28tdmVyc2lvbl1dW2xpbmstdmVyc2lvbl0KWyFbU29mdHdhcmUgTGljZW5zZV1baWNvLWxpY2Vuc2VdXVtsaW5rLWxpY2Vuc2VdClshW0J1aWxkIFN0YXR1c11baWNvLWJ1aWxkXV1bbGluay1idWlsZF0KWyFbQ29kZSBRdWFsaXR5XVtpY28tY29kZS1xdWFsaXR5XV1bbGluay1jb2RlLXF1YWxpdHldCgpIZWxwcyB5b3UgY3JlYXRlIGEgUkVTVCBBUEkgZnJvbSB5b3VyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4KClRoaXMgYnVuZGxlIHN1cHBvcnRzIGEgZGVzaWduLWZpcnN0IG1ldGhvZG9sb2d5IGZvciBjcmVhdGluZyBhbiBBUEkgd2l0aCBTeW1mb255IGJ5IHByb3ZpZGluZyB0aGUgZm9sbG93aW5nIHRvb2xzOgoKKiBbTG9hZGluZyB0aGUgcGF0aCBpdGVtcyBhbmQgb3BlcmF0aW9ucyBvZiBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gYXMgcm91dGVzXSgjcm91dGluZykKKiBbVmFsaWRhdGlvbiBvZiB0aGUgcmVxdWVzdCB0byB0aG9zZSByb3V0ZXNdKCN2YWxpZGF0aW9uLW9mLXRoZS1yZXF1ZXN0KQoqIFtEZXNlcmlhbGl6YXRpb24gb2YgYSB2YWxpZGF0ZWQgSlNPTiByZXF1ZXN0IGJvZHkgaW50byBhbiBvYmplY3RdKCNkZXNlcmlhbGl6ZS1hLWpzb24tcmVxdWVzdC1ib2R5KQoqIFtPcGVuQVBJLWJhc2VkIHNlcmlhbGl6YXRpb24gY29udGV4dCBmb3IgdGhlIFN5bWZvbnkgU2VyaWFsaXplcl0oI29wZW5hcGktYmFzZWQtc2VyaWFsaXphdGlvbi1jb250ZXh0LWZvci10aGUtc3ltZm9ueS1zZXJpYWxpemVyKQoqIFtFeGNlcHRpb24gaGFuZGxpbmddKCNleGNlcHRpb24taGFuZGxpbmcpCgojIyBJbnN0YWxsYXRpb24KCiMjIyBBcHBsaWNhdGlvbnMgdGhhdCB1c2UgU3ltZm9ueSBGbGV4Ck9wZW4gYSBjb21tYW5kIGNvbnNvbGUsIGVudGVyIHlvdXIgcHJvamVjdCBkaXJlY3RvcnkgYW5kIGV4ZWN1dGU6CgpgYGBjb25zb2xlCmNvbXBvc2VyIHJlcXVpcmUgbmlqZW5zL29wZW5hcGktYnVuZGxlCmBgYAoKIyMjIEFwcGxpY2F0aW9ucyB0aGF0IGRvbid0IHVzZSBTeW1mb255IEZsZXgKCiMjIyMgU3RlcCAxOiBEb3dubG9hZCB0aGUgQnVuZGxlCgpPcGVuIGEgY29tbWFuZCBjb25zb2xlLCBlbnRlciB5b3VyIHByb2plY3QgZGlyZWN0b3J5IGFuZCBleGVjdXRlIHRoZQpmb2xsb3dpbmcgY29tbWFuZCB0byBkb3dubG9hZCB0aGUgbGF0ZXN0IHN0YWJsZSB2ZXJzaW9uIG9mIHRoaXMgYnVuZGxlOgoKYGBgY29uc29sZQpjb21wb3NlciByZXF1aXJlIG5pamVucy9vcGVuYXBpLWJ1bmRsZQpgYGAKClRoaXMgY29tbWFuZCByZXF1aXJlcyB5b3UgdG8gaGF2ZSBDb21wb3NlciBpbnN0YWxsZWQgZ2xvYmFsbHksIGFzIGV4cGxhaW5lZAppbiB0aGUgW2luc3RhbGxhdGlvbiBjaGFwdGVyXShodHRwczovL2dldGNvbXBvc2VyLm9yZy9kb2MvMDAtaW50cm8ubWQpCm9mIHRoZSBDb21wb3NlciBkb2N1bWVudGF0aW9uLgoKIyMjIyBTdGVwIDI6IEVuYWJsZSB0aGUgQnVuZGxlCgpUaGVuLCBlbmFibGUgdGhlIGJ1bmRsZSBieSBhZGRpbmcgaXQgdG8gdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBidW5kbGVzCmluIHRoZSBgc3JjL0tlcm5lbC5waHBgIGZpbGUgb2YgeW91ciBwcm9qZWN0OgoKYGBgcGhwCjw/cGhwCi8vIHNyYy9LZXJuZWwucGhwCgovLyAuLi4KY2xhc3MgS2VybmVsIGV4dGVuZHMgQmFzZUtlcm5lbAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXJCdW5kbGVzKCk6IGl0ZXJhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgLy8gLi4uCiAgICAgICAgICAgIG5ldyBOaWplbnNcT3BlbmFwaUJ1bmRsZVxOaWplbnNPcGVuYXBpQnVuZGxlKCksCiAgICAgICAgXTsKICAgIH0KCiAgICAvLyAuLi4KfQpgYGAKCiMjIFVzYWdlCkJlZm9yZSBzdGFydGluZyB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYnVuZGxlLCB5b3Ugc2hvdWxkIHRha2UgdGhlIHRpbWUgdG8gZGVzaWduIHlvdXIgQVBJIGFjY29yZGluZwp0byB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgoKVGhlIGZvbGxvd2luZyByZXNvdXJjZXMgY2FuIGhlbHAgeW91IHdpdGggZGVzaWduaW5nIHRoZSBzcGVjaWZpY2F0aW9uOgoqIFtPcGVuQVBJIHNwZWNpZmljYXRpb24gdmVyc2lvbiAzXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbikKKiBbU3dhZ2dlciBzcGVjaWZpY2F0aW9uIGVkaXRvcl0oaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pbykKCiMjIyBSb3V0aW5nClRoaXMgYnVuZGxlIHByb3ZpZGVzIGEgcm91dGUgbG9hZGVyIHRoYXQgbG9hZHMgW3BhdGggaXRlbXNdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNwYXRoSXRlbU9iamVjdCkKYW5kIFtvcGVyYXRpb25zXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jb3BlcmF0aW9uT2JqZWN0KSBmcm9tIHlvdXIgT3BlbkFQSSBkb2N1bWVudC4KCllvdSBsb2FkIHlvdXIgT3BlbkFQSSBkb2N1bWVudCBieSBjb25maWd1cmluZyBpdCBpbiB0aGUgcm91dGluZyBvZiB5b3VyIGFwcGxpY2F0aW9uOgoKYGBgeWFtbAojIGFwcC9jb25maWcvcm91dGVzLnltbAoKYXBpOgogICAgcHJlZml4OiAvYXBpCiAgICByZXNvdXJjZTogLi4vb3BlbmFwaS55YW1sICMgb3IgLi4vb3BlbmFwaS5qc29uCiAgICB0eXBlOiBvcGVuYXBpCiAgICBuYW1lX3ByZWZpeDogImFwaV8iCmBgYAoKV2l0aGluIHRoZSBPcGVuQVBJIGRvY3VtZW50IHdlIHdpbGwgdXNlIHRoZSBgeC1vcGVuYXBpLWJ1bmRsZWAgc3BlY2lmaWNhdGlvbiBleHRlbnNpb24gdG8gYWRkIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbgp0byB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGluIHRoZSBkb2N1bWVudC4KCiMjIyMgQ29uZmlndXJpbmcgYSBjb250cm9sbGVyIGZvciBhIHJvdXRlCkEgU3ltZm9ueSBjb250cm9sbGVyIGZvciBhIHJvdXRlIGlzIGNvbmZpZ3VyZWQgYnkgYWRkaW5nIHRoZSBgY29udHJvbGxlcmAgcHJvcGVydHkgdG8gdGhlIGB4LW9wZW5hcGktYnVuZGxlYApzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbiB3aXRoaW4gYW4gb3BlcmF0aW9uIHdpdGhpbiB5b3VyIE9wZW5BUEkgZG9jdW1lbnQuCgpgYGB5YW1sCnBhdGhzOgogIC9wZXRzL3t1dWlkfToKICAgIHB1dDoKICAgICAgeC1vcGVuYXBpLWJ1bmRsZToKICAgICAgICBjb250cm9sbGVyOiAnTmlqZW5zXE9wZW5hcGlCdW5kbGVcQ29udHJvbGxlclxQZXRDb250cm9sbGVyOjpwdXQnCiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BldCcKICAgICAgcmVzcG9uc2VzOgogICAgICAgICcyMDAnOgogICAgICAgICAgZGVzY3JpcHRpb246ICdSZXR1cm5zIHRoZSBzdG9yZWQgcGV0LicKYGBgCgo8ZGV0YWlscz4KPHN1bW1hcnk+RXhhbXBsZSBvZiBhbiBPcGVuQVBJIGRvY3VtZW50IGluIEpTT04gZm9ybWF0PC9zdW1tYXJ5PgoKYGBganNvbgp7CiAgInBhdGhzIjogewogICAgIi9wZXRzL3t1dWlkfSI6IHsKICAgICAgInB1dCI6IHsKICAgICAgICAieC1vcGVuYXBpLWJ1bmRsZSI6IHsKICAgICAgICAgICJjb250cm9sbGVyIjogIk5pamVuc1xcT3BlbmFwaUJ1bmRsZVxcQ29udHJvbGxlclxcUGV0Q29udHJvbGxlcjo6cHV0IgogICAgICAgIH0sCiAgICAgICAgInJlcXVlc3RCb2R5IjogewogICAgICAgICAgImNvbnRlbnQiOiB7CiAgICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIjogewogICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXQiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIHN0b3JlZCBwZXQuIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KfQpgYGAKCjwvZGV0YWlscz4KClRoZSB2YWx1ZSBvZiB0aGUgYGNvbnRyb2xsZXJgIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFzIHlvdSB3b3VsZCBub3JtYWxseSBhZGQgdG8gYSBbU3ltZm9ueSByb3V0ZV0oaHR0cHM6Ly9zeW1mb255LmNvbS9kb2MvY3VycmVudC9yb3V0aW5nLmh0bWwjY3JlYXRpbmctcm91dGVzKS4KCiMjIyMgVXNpbmcgdGhlIG9wZXJhdGlvbklkIG9mIGFuIG9wZXJhdGlvbiBhcyB0aGUgbmFtZSBvZiB0aGUgU3ltZm9ueSByb3V0ZQpXaXRoaW4gYW4gT3BlbkFQSSBkb2N1bWVudCwgeW91IGNhbiBnaXZlIGVhY2ggb3BlcmF0aW9uIGFuCltvcGVyYXRpb25JZF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvbGF0ZXN0Lmh0bWwjZml4ZWQtZmllbGRzLTcpIHRvIGJldHRlciBpZGVudGlmeSBpdC4KVG8gdXNlIHRoZSBgb3BlcmF0aW9uSWRgIGFzIHRoZSBuYW1lIGZvciBhIGxvYWRlZCBTeW1mb255IHJvdXRlLCBhZGQgdGhlIGZvbGxvd2luZyBidW5kbGUgY29uZmlndXJhdGlvbjoKCmBgYHlhbWwKIyBjb25maWcvcGFja2FnZXMvbmlqZW5zX29wZW5hcGkueWFtbApuaWplbnNfb3BlbmFwaToKICAgIHJvdXRpbmc6CiAgICAgICAgb3BlcmF0aW9uX2lkX2FzX3JvdXRlX25hbWU6IHRydWUKYGBgCgpVc2luZyB0aGUgYG9wZXJhdGlvbklkYCBmb3IgeW91ciByb3V0ZXMgZ2l2ZXMgeW91IG1vcmUgY29udHJvbCBvdmVyIHRoZSBBUEkgcm91dGUgbmFtZXMgYW5kIGFsbG93cyB5b3UgdG8gYmV0dGVyIHVzZQp0aGVtIHdpdGggYSBgVXJsR2VuZXJhdG9yYC4KCiMjIyBWYWxpZGF0aW9uIG9mIHRoZSByZXF1ZXN0CkJ5IGRlZmF1bHQsIHRoZSBbZGVwcmVjYXRlZCB2YWxpZGF0aW9uIGNvbXBvbmVudF0oZG9jcy92YWxpZGF0aW9uL2RlcHJlY2F0ZWQtdmFsaWRhdGlvbi1jb21wb25lbnQubWQpIGlzIGVuYWJsZWQuClRvIGVuYWJsZSB0aGUgaW1wcm92ZWQgdmFsaWRhdGlvbiBjb21wb25lbnQsIGFkZCB0aGUgZm9sbG93aW5nIFlBTUwgY29uZmlndXJhdGlvbi4KCmBgYHlhbWwKIyBjb25maWcvcGFja2FnZXMvbmlqZW5zX29wZW5hcGkueWFtbApuaWplbnNfb3BlbmFwaToKICAgIGV4Y2VwdGlvbl9oYW5kbGluZzoKICAgICAgICBlbmFibGVkOiB0cnVlCgogICAgdmFsaWRhdGlvbjoKICAgICAgICBlbmFibGVkOiB0cnVlCmBgYAoKSXQgaXMgc3Ryb25nbHkgYWR2aXNlZCB0byBhbHNvIGVuYWJsZSB0aGUgaW1wcm92ZWQgZXhjZXB0aW9uIGhhbmRsaW5nIGNvbXBvbmVudCwgYXMgaXQgd2lsbCBjb252ZXJ0IHRoZSBkZXRhaWxzIG9mCnRoZSB2YWxpZGF0aW9uIGV4Y2VwdGlvbnMgaW50byBwcm9wZXIgSlNPTiByZXNwb25zZXMuCgpUaGUgdmFsaWRhdGlvbiBjb21wb25lbnQgY29tZXMgd2l0aCB2YWxpZGF0aW9uIGZvciB0aGUgZm9sbG93aW5nIHBhcnRzIG9mIGEgcmVxdWVzdDoKCiogKipDb250ZW50LXR5cGUqKjogQmFzZWQgb24gdGhlIGNvbmZpZ3VyZWQgY29udGVudCB0eXBlcyBjb25maWd1cmVkIGluIHRoZSBgcmVxdWVzdEJvZHlgIHByb3BlcnR5IG9mIGFuIG9wZXJhdGlvbgoqICoqUXVlcnkgcGFyYW1ldGVycyoqOiBWYWxpZGF0ZXMgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMgY29uZmlndXJlZCBvZiB0aGUgb3BlcmF0aW9uIGFuZCBwYXRoIGl0ZW0uCiAgKk5vdGUgdGhhdCB0aGlzIHR5cGUgb2YgdmFsaWRhdGlvbiBpcyBleHBlcmltZW50YWwgYXMgaXQgbWlnaHQgYmUgbWlzc2luZyB2YWxpZGF0aW9uIG9mIGNlcnRhaW4gcXVlcnkgcGFyYW1ldGVyIHR5cGVzLioKKiAqKkpTT04gcmVxdWVzdCBib2R5Kio6IEJhc2VkIG9uIHRoZSBKU09OIHNjaGVtYSBpbiB0aGUgYHJlcXVlc3RCb2R5YCBwcm9wZXJ0eSBvZiBhbiBvcGVyYXRpb24KCiMjIyMgTGVhcm4gbW9yZQoKKiBbQWN0aXZhdGUgcXVlcnkgcGFyYW1ldGVyIHJlcXVlc3QgdmFsaWRhdGlvbl0oZG9jcy92YWxpZGF0aW9uL2FjdGl2YXRlLXF1ZXJ5LXBhcmFtZXRlci1yZXF1ZXN0LXZhbGlkYXRpb24ubWQpCiogW0NyZWF0ZSB5b3VyIGN1c3RvbSByZXF1ZXN0IHZhbGlkYXRvcl0oZG9jcy92YWxpZGF0aW9uL2NyZWF0ZS15b3VyLWN1c3RvbS1yZXF1ZXN0LXZhbGlkYXRvci5tZCkKKiBDb250ZW50LXR5cGUgdmFsaWRhdGlvbiBleHBsYWluZWQgKGNvbWluZyBzb29u4oSiKQoqIEpTT04gcmVxdWVzdCBib2R5IHZhbGlkYXRpb24gZXhwbGFpbmVkIChjb21pbmcgc29vbuKEoikKKiBRdWVyeSBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBleHBsYWluZWQgKGNvbWluZyBzb29u4oSiKQoKIyMjIERlc2VyaWFsaXplIGEgSlNPTiByZXF1ZXN0IGJvZHkKCkFkZGluZyB0aGUgYGRlc2VyaWFsaXphdGlvbk9iamVjdGAgcHJvcGVydHkgdG8gdGhlIGB4LW9wZW5hcGktYnVuZGxlYCBzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbiBvZiBhbiBvcGVyYXRpb24gYWN0aXZhdGVzCnRoZSByZXF1ZXN0IGJvZHkgZGVzZXJpYWxpemF0aW9uLgoKV2hlbiB0aGUgcmVxdWVzdCBib2R5IGlzIHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgYWdhaW5zdCB0aGUgSlNPTiBzY2hlbWEgd2l0aGluIHlvdXIgT3BlbkFQSSBkb2N1bWVudCwKaXQgd2lsbCBkZXNlcmlhbGl6ZSB0aGUgcmVxdWVzdCBib2R5IGludG8gdGhlIGNvbmZpZ3VyZWQgZGVzZXJpYWxpemF0aW9uIG9iamVjdC4KClRoZSBkZXNlcmlhbGl6ZWQgb2JqZWN0IGlzIGluamVjdGVkIGludG8gdGhlIGNvbnRyb2xsZXIgYmFzZWQgb246CgoxLiBUaGUgdHlwZSBoaW50IG9mIHRoZSBhcmd1bWVudCBpbiB0aGUgY29udHJvbGxlciBtZXRob2QuCgoyLiBUaGUgYCNbRGVzZXJpYWxpemVkT2JqZWN0XWAgcGFyYW1ldGVyIGF0dHJpYnV0ZS4gKHN1cHBvcnRlZCBzaW5jZSBQSFAgOC4wKQoKICAgVGhpcyBtZXRob2QgaXMgdGhlIHJlY29tbWVuZGVkIHdheSwgYXMgaXQgc3VwcG9ydHMgYXJndW1lbnQgcmVzb2x2aW5nIGZvciBib3RoIGFycmF5IGRlc2VyaWFsaXphdGlvbgogICBhbmQgbWl4ZWQgYXJndW1lbnQgdHlwZXMuCgozLiBUaGUgYGRlc2VyaWFsaXphdGlvbk9iamVjdEFyZ3VtZW50TmFtZWAgcHJvcGVydHkgdGhhdCBjYW4gYmUgYWRkZWQgdG8gdGhlIGB4LW9wZW5hcGktYnVuZGxlYAogICBzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbi4KCiMjIyMgTGVhcm4gbW9yZQoKKiBbSG93IHRvIHVzZSBhIHNpbmdsZSBjb250cm9sbGVyIHdpdGggdGhlIFN5bWZvbnkgTWVzc2VuZ2VyIGNvbXBvbmVudF0oZG9jcy9kZXNlcmlhbGl6YXRpb24vaG93LXRvLXVzZS1hLXNpbmdsZS1jb250cm9sbGVyLXdpdGgtdGhlLXN5bWZvbnktbWVzc2VuZ2VyLWNvbXBvbmVudC5tZCkKCiMjIyBPcGVuQVBJLWJhc2VkIHNlcmlhbGl6YXRpb24gY29udGV4dCBmb3IgdGhlIFN5bWZvbnkgU2VyaWFsaXplcgrimqAgXyoqUGxlYXNlIG5vdGU6KiogVGhpcyBmZWF0dXJlIGlzIHN0aWxsIGV4cGVyaW1lbnRhbC4gVGhlIEFQSSBtaWdodCBjaGFuZ2UgaW4gYSBmdXR1cmUgbWlub3IgdmVyc2lvbi5fCgpUaGUgYFNlcmlhbGl6YXRpb25Db250ZXh0QnVpbGRlcmAgaGVscHMgeW91IHdpdGggY3JlYXRpbmcgYSBzZXJpYWxpemF0aW9uIGNvbnRleHQgZm9yIHRoZSBTeW1mb255IFNlcmlhbGl6ZXIuCkl0IGFsbG93cyB5b3UgdG8gZWFzaWx5IGNyZWF0ZSBhIEpTT04gcmVzcG9uc2UgZnJvbSBhbiBvYmplY3Qgb3IgZW50aXR5IGJhc2VkIG9uIHlvdXIgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgoKVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyB0byB1c2UgdGhlIHNlcmlhbGl6YXRpb24gY29udGV4dCBidWlsZGVyIGJ5IGxldmVyYWdpbmcgdGhlIHJlcXVlc3QgYXR0cmlidXRlcyBhZGRlZApieSB0aGUgcm91dGluZy4KCmBgYHBocAo8P3BocAoKdXNlIE5pamVuc1xPcGVuYXBpQnVuZGxlXFJvdXRpbmdcUm91dGVDb250ZXh0Owp1c2UgTmlqZW5zXE9wZW5hcGlCdW5kbGVcU2VyaWFsaXphdGlvblxTZXJpYWxpemF0aW9uQ29udGV4dEJ1aWxkZXJJbnRlcmZhY2U7CnVzZSBTeW1mb255XENvbXBvbmVudFxIdHRwRm91bmRhdGlvblxKc29uUmVzcG9uc2U7CnVzZSBTeW1mb255XENvbXBvbmVudFxIdHRwRm91bmRhdGlvblxSZXF1ZXN0Owp1c2UgU3ltZm9ueVxDb21wb25lbnRcU2VyaWFsaXplclxTZXJpYWxpemVySW50ZXJmYWNlOwoKY2xhc3MgRXhhbXBsZUNvbnRyb2xsZXIKewogICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKAogICAgICAgIFJlcXVlc3QgJHJlcXVlc3QsCiAgICAgICAgU2VyaWFsaXplckludGVyZmFjZSAkc2VyaWFsaXplciwKICAgICAgICBTZXJpYWxpemF0aW9uQ29udGV4dEJ1aWxkZXJJbnRlcmZhY2UgJHNlcmlhbGl6YXRpb25Db250ZXh0QnVpbGRlcgogICAgKTogSnNvblJlc3BvbnNlIHsKICAgICAgICAkcGV0ID0gbmV3IFBldCgpOwoKICAgICAgICAkc2VyaWFsaXphdGlvbkNvbnRleHQgPSAkc2VyaWFsaXphdGlvbkNvbnRleHRCdWlsZGVyLT5nZXRDb250ZXh0Rm9yU2NoZW1hT2JqZWN0KAogICAgICAgICAgICAnUGV0JywKICAgICAgICAgICAgJHJlcXVlc3QtPmF0dHJpYnV0ZXMtPmdldChSb3V0ZUNvbnRleHQ6OlJFUVVFU1RfQVRUUklCVVRFKVtSb3V0ZUNvbnRleHQ6OlJFU09VUkNFXQogICAgICAgICk7CgogICAgICAgIHJldHVybiBKc29uUmVzcG9uc2U6OmZyb21Kc29uU3RyaW5nKAogICAgICAgICAgICAkc2VyaWFsaXplci0+c2VyaWFsaXplKCRwZXQsICdqc29uJywgJHNlcmlhbGl6YXRpb25Db250ZXh0KQogICAgICAgICk7CiAgICB9Cn0KYGBgCgojIyMgRXhjZXB0aW9uIGhhbmRsaW5nCkJ5IGRlZmF1bHQsIHRoZSBbcHJldmlvdXMgZXhjZXB0aW9uIGhhbmRsaW5nIGNvbXBvbmVudF0oZG9jcy9wcmV2aW91cy1leGNlcHRpb24taGFuZGxpbmcubWQpIGlzIGVuYWJsZWQuClRvIGVuYWJsZSB0aGUgbmV3IGV4Y2VwdGlvbiBoYW5kbGluZyBjb21wb25lbnQsIGFkZCB0aGUgZm9sbG93aW5nIFlBTUwgY29uZmlndXJhdGlvbi4KCmBgYHlhbWwKIyBjb25maWcvcGFja2FnZXMvbmlqZW5zX29wZW5hcGkueWFtbApuaWplbnNfb3BlbmFwaToKICAgIGV4Y2VwdGlvbl9oYW5kbGluZzoKICAgICAgICBlbmFibGVkOiB0cnVlCmBgYAoKVGhlIG5ldyBleGNlcHRpb24gaGFuZGxpbmcgY29tcG9uZW50IHVzZXMgdGhlIFtQcm9ibGVtIERldGFpbHMgSlNPTiBPYmplY3RdKGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzgwNyNzZWN0aW9uLTMpCmZvcm1hdCB0byB0dXJuIGFuIGV4Y2VwdGlvbiAob3IgYFRocm93YWJsZWApIGludG8gYSBjbGVhciBlcnJvciByZXNwb25zZS4KCklmIHlvdSB3YW50IHRvIGltcGxlbWVudCB5b3VyIG93biBleGNlcHRpb24gaGFuZGxpbmc/IENoYW5nZSBgZW5hYmxlZGAgdG8gYGZhbHNlYC4gSXQgd2lsbCBkaXNhYmxlIHRoZQpleGNlcHRpb24gaGFuZGxpbmcgY29tcG9uZW50IG9mIHRoZSBidW5kbGUuCgojIyMjIEN1c3RvbWl6aW5nIHRoZSBQcm9ibGVtIERldGFpbHMgSlNPTiBPYmplY3QgcmVzcG9uc2Ugb2YgYW4gZXhjZXB0aW9uClRocm91Z2ggdGhlIGV4Y2VwdGlvbiBoYW5kbGluZyBjb25maWd1cmF0aW9uIG9mIHRoZSBidW5kbGUsIHlvdSBjYW4gbW9kaWZ5IHRoZSByZXNwb25zZSBzdGF0dXMgY29kZSBhbmQKcHJvYmxlbSBKU09OIHJlc3BvbnNlIGJvZHkgb2YgYW55IGBUaHJvd2FibGVgLiBTZWUgdGhlIGZvbGxvd2luZyBleGFtcGxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKYGBgeWFtbAojIGNvbmZpZy9wYWNrYWdlcy9uaWplbnNfb3BlbmFwaS55YW1sCm5pamVuc19vcGVuYXBpOgogICAgZXhjZXB0aW9uX2hhbmRsaW5nOgogICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICBleGNlcHRpb25zOgogICAgICAgICAgICBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb246ICAgICAgICAgICAgICAgIyBUaGUgZnVsbHkgcXVhbGlmaWVkIGNsYXNzbmFtZSBvZiB0aGUgZXhjZXB0aW9uLgogICAgICAgICAgICAgICAgc3RhdHVzX2NvZGU6IDQwMCAgICAgICAgICAgICAgICAgICAgIyBNb2RpZnkgdGhlIHJlc3BvbnNlIHN0YXR1cyBjb2RlIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBleGNlcHRpb24gcmVzcG9uc2UuCgogICAgICAgICAgICAgICAgdHlwZV91cmk6IGh0dHBzOi8vZXhhbXBsZS5jb20vZXJyb3IgIyBBZGQgYSB1bmlxdWUgdHlwZSBVUkkgdG8gdGhlIFByb2JsZW0gRGV0YWlscy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBjb3VsZCBiZSBhIFVSTCB0byBhZGRpdGlvbmFsIGRvY3VtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWJvdXQgdGhlIGVycm9yLgoKICAgICAgICAgICAgICAgIHRpdGxlOiBUaGUgcmVxdWVzdCB3YXMgaW52YWxpZC4gICAgICMgQWRkIGEgY2xlYXIgaHVtYW4tcmVhZGFibGUgdGl0bGUgcHJvcGVydHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG8gdGhlIFByb2JsZW0gRGV0YWlscy4KCiAgICAgICAgICAgICAgICBhZGRfaW5zdGFuY2VfdXJpOiB0cnVlICAgICAgICAgICAgICAjIEFkZCB0aGUgY3VycmVudCByb3V0ZSBhcyBpbnN0YW5jZV91cmkgcHJvcGVydHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG8gdGhlIFByb2JsZW0gRGV0YWlscy4KYGBgCgpUbyBoZWxwIHlvdSBpbmNsdWRlIHRoZSBQcm9ibGVtIERldGFpbHMgSlNPTiBvYmplY3QgaW4geW91ciBPcGVuQVBJIGRvY3VtZW50LCB3ZSBwcm92aWRlIGFuCltPcGVuQVBJIHRlbXBsYXRlXShzcmMvUmVzb3VyY2VzL3NwZWNpZmljYXRpb25zL29wZW5hcGlfcHJvYmxlbWRldGFpbHMueWFtbCkgd2l0aCBzY2hlbWFzCmZvciB0aGUgc3BlY2lmaWMgUHJvYmxlbSBEZXRhaWxzIEpTT04gb2JqZWN0cyB0aGlzIGJ1bmRsZSBjcmVhdGVzLgoKIyMgQ3JlZGl0cyBhbmQgYWNrbm93bGVkZ2VtZW50cwoKKiBBdXRob3I6IFtOaWVscyBOaWplbnNdW2xpbmstYXV0aG9yXQoKQWxzbywgc2VlIHRoZSBsaXN0IG9mIFtjb250cmlidXRvcnNdW2xpbmstY29udHJpYnV0b3JzXSB3aG8gcGFydGljaXBhdGVkIGluIHRoaXMgcHJvamVjdC4KCiMjIExpY2Vuc2UKVGhlIE9wZW5BUEkgYnVuZGxlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gUGxlYXNlIHNlZSB0aGUgW0xJQ0VOU0UgZmlsZV1bbGluay1saWNlbnNlXSBmb3IgZGV0YWlscy4KCltpY28tdmVyc2lvbl06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L3YvbmlqZW5zL29wZW5hcGktYnVuZGxlLnN2ZwpbaWNvLXByZS1yZWxlYXNlLXZlcnNpb25dOiBodHRwczovL2ltZy5zaGllbGRzLmlvL3BhY2thZ2lzdC92cHJlL25pamVucy9vcGVuYXBpLWJ1bmRsZS5zdmcKW2ljby1saWNlbnNlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1icmlnaHRncmVlbi5zdmcKW2ljby1idWlsZF06IGh0dHBzOi8vZ2l0aHViLmNvbS9uaWplbnMvb3BlbmFwaS1idW5kbGUvYWN0aW9ucy93b3JrZmxvd3MvY29udGludW91cy1pbnRlZ3JhdGlvbi55YW1sL2JhZGdlLnN2ZwpbaWNvLWNvZGUtcXVhbGl0eV06IGh0dHBzOi8vc2NydXRpbml6ZXItY2kuY29tL2cvbmlqZW5zL29wZW5hcGktYnVuZGxlL2JhZGdlcy9xdWFsaXR5LXNjb3JlLnBuZz9iPW1haW4KCltsaW5rLXZlcnNpb25dOiBodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvbmlqZW5zL29wZW5hcGktYnVuZGxlCltsaW5rLWxpY2Vuc2VdOiBMSUNFTlNFCltsaW5rLWJ1aWxkXTogaHR0cHM6Ly9naXRodWIuY29tL25pamVucy9vcGVuYXBpLWJ1bmRsZS9hY3Rpb25zL3dvcmtmbG93cy9jb250aW51b3VzLWludGVncmF0aW9uLnlhbWwKW2xpbmstY292ZXJhZ2VdOiBodHRwczovL2NvdmVyYWxscy5pby9yL25pamVucy9vcGVuYXBpLWJ1bmRsZT9icmFuY2g9bWFzdGVyCltsaW5rLWNvZGUtcXVhbGl0eV06IGh0dHBzOi8vc2NydXRpbml6ZXItY2kuY29tL2cvbmlqZW5zL29wZW5hcGktYnVuZGxlLz9icmFuY2g9bWFzdGVyCltsaW5rLWF1dGhvcl06IGh0dHBzOi8vZ2l0aHViLmNvbS9uaWVscy1uaWplbnMKW2xpbmstY29udHJpYnV0b3JzXTogaHR0cHM6Ly9naXRodWIuY29tL25pamVucy9vcGVuYXBpLWJ1bmRsZS9jb250cmlidXRvcnMK readmeEtag: '"5b8d3a9794523acde50cfa484177df781071a6a3"' readmeLastModified: Wed, 15 May 2024 14:57:05 GMT repositoryId: 134330854 description: Helps you create a REST API from your OpenAPI specification. created: '2018-05-21T22:16:39Z' updated: '2026-01-20T14:41:16Z' language: PHP archived: false stars: 18 watchers: 4 forks: 5 owner: nijens logo: https://avatars.githubusercontent.com/u/22254531?v=4 license: MIT repoEtag: '"0254bee988a5a638051a8feb4f46bce43c94f280a6a1daf2c4d0b9e5b4f4590b"' repoLastModified: Tue, 20 Jan 2026 14:41:16 GMT foundInMaster: true category: - Data Validators - Parsers id: 2081e3bef767fdcec32955dc3c047f98 - source: - openapi3 tags - openapi31 tags repository: https://github.com/apiaddicts/openapi2postman v3: true v3_1: true id: 582d0c64ef558eda3703792449bdfa30 repositoryMetadata: base64Readme: >- IyDwn5ug77iPIE9wZW5hcGkyUG9zdG1hbiAhW1JlbGVhc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcmVsZWFzZS0yLjAueC1wdXJwbGUpICFbT3BlbkFwaV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS8tb3BlbmFwaS0lMjNDbG9qdXJlP3N0eWxlPWZsYXQmbG9nbz1vcGVuYXBpaW5pdGlhdGl2ZSZsb2dvQ29sb3I9d2hpdGUpICFbUG9zdG1hbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9wb3N0bWFuLUZGNkMzNz9zdHlsZT1mbGF0JmxvZ289cG9zdG1hbiZsb2dvQ29sb3I9d2hpdGUpIFshW05QTV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9ucG0tJTIzQ0IzODM3LnN2Zz9zdHlsZT1mbGF0JmxvZ289bnBtJmxvZ29Db2xvcj13aGl0ZSldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGkycG9zdG1hbikgWyFbTGljZW5zZTogTEdQTCB2M10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLUxHUExfdjMtYmx1ZS5zdmcpXShodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wKQoKKipPcGVuYXBpMlBvc3RtYW4qKiBjcmVhdGVzIGF1dG9tYXRpYyB0ZXN0cyBmcm9tIE9wZW5hcGkgMy4wIHVzaW5nIHBvc3RtYW4gZm9ybWF0LiBBbHNvLCBpdCBjcmVhdGVzIGVudmlyb25tZW50cyBmaWxlcywgZGVwZW5kaW5nIG9mIGNvbmZpZ3VyYXRpb24uClRob3NlIGNvbGxlY3Rpb25zIGNhbiBiZSBpbXBvcnRlbmQgaW4gcG9zdGFuIGFwcGxpY2F0aW9uLiBUaGUgdGVzdHMgaW5jbHVkZXMgdGVzdHMgZm9yIDJ4eCwgNHh4Li4uIGFuZCB0ZXN0cyB0byB2YWxpZGF0ZSBvdXRwdXQgZm9ybWF0cy4KCjxwIGFsaWduPSJjZW50ZXIiPgoJPGEgaHJlZj0iaHR0cHM6Ly9hcGlhZGRpY3RzLm9yZy8iPgoJICA8aW1nIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL2FwaWFkZGljdHMvb3BlbmFwaTJwb3N0bWFuL3Jhdy9tYXN0ZXIvaW1ncy9vcGVuYXBpMnBvc3RtYW4uc3ZnIiBoZWlnaHQgPSAnMTAwJz4KCTwvYT4KPC9wPgoKIyMjIFRoaXMgcmVwb3NpdG9yeSBpcyBpbnRlbmRlZCBmb3IgOm9jdG9jYXQ6ICoqY29tbXVuaXR5KiogdXNlLCBpdCBjYW4gYmUgbW9kaWZpZWQgYW5kIGFkYXB0ZWQgd2l0aG91dCBjb21tZXJjaWFsIHVzZS4gSWYgeW91IG5lZWQgYSB2ZXJzaW9uLCBzdXBwb3J0IG9yIGhlbHAgZm9yIHlvdXIgKiplbnRlcnByaXNlKiogb3IgcHJvamVjdCwgcGxlYXNlIGNvbnRhY3QgdXMg8J+TpyBkZXZyZWxAYXBpYWRkaWN0cy5vcmcKClshW1R3aXR0ZXJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvVHdpdHRlci0lMjMwMDAwMDAuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz14JmxvZ29Db2xvcj13aGl0ZSldKGh0dHBzOi8vdHdpdHRlci5jb20vQVBJQWRkaWN0cykKWyFbRGlzY29yZF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9EaXNjb3JkLSUyMzU4NjVGMi5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPWRpc2NvcmQmbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly9kaXNjb3JkLmdnL1pkYkdxTUJZeTgpClshW0xpbmtlZEluXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpbmtlZGluLSUyMzAwNzdCNS5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPWxpbmtlZGluJmxvZ29Db2xvcj13aGl0ZSldKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21wYW55L2FwaWFkZGljdHMvKQpbIVtGYWNlYm9va10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9GYWNlYm9vay0lMjMxODc3RjIuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1GYWNlYm9vayZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL3d3dy5mYWNlYm9vay5jb20vYXBpYWRkaWN0cykKWyFbWW91VHViZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9Zb3VUdWJlLSUyM0ZGMDAwMC5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPVlvdVR1YmUmbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vQEFQSUFkZGljdHNsbWFvbykKCiMg8J+ZjCBKb2luIHRoZSAqKk9wZW5hcGkycG9zdG1hbioqIEFkb3B0ZXJzIGxpc3QKCvCfk6IgSWYgT3BlbmFwaTJwb3N0bWFuIGlzIHBhcnQgb2YgeW91ciBvcmdhbml6YXRpb24ncyB0b29sa2l0LCB3ZSBraW5kbHkgZW5jb3VyYWdlIHlvdSB0byBpbmNsdWRlIHlvdXIgY29tcGFueSdzIG5hbWUgaW4gb3VyIEFkb3B0ZXJzIGxpc3QuIPCfmY8gVGhpcyBub3Qgb25seSBzaWduaWZpY2FudGx5IGJvb3N0cyB0aGUgcHJvamVjdCdzIHZpc2liaWxpdHkgYW5kIHJlcHV0YXRpb24gYnV0IGFsc28gcmVwcmVzZW50cyBhIHNtYWxsIHlldCBpbXBhY3RmdWwgd2F5IHRvIGdpdmUgYmFjayB0byB0aGUgcHJvamVjdC4KCnwgT3JnYW5pemF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiBvZiBVc2UgLyBSZWZlcmVuYyAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IFtDbG91ZEFwcGldKGh0dHBzOi8vY2xvdWRhcHBpLm5ldC8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXBpZmljYXRpb24gYW5kIGdlbmVyYXRpb24gb2YgbWljcm9zZXJ2aWNlcyB8CnwgW01hZHJpZCBEaWdpdGFsXShodHRwczovL3d3dy5jb211bmlkYWQubWFkcmlkL3NlcnZpY2lvcy9zZWRlLWVsZWN0cm9uaWNhL21hZHJpZC1kaWdpdGFsLykgfCBHZW5lcmF0aW9uIG9mIG1pY3Jvc2VydmljZXMgICAgICAgICAgICAgICAgIHwKfCBbQVBJcXVhbGl0eV0oaHR0cHM6Ly9hcGlxdWFsaXR5LmlvLykgIHwgQ29tbW9uIGNvbnRyaWJ1dG9yICB8CgojIPCfkanwn4+94oCN8J+SuyBDb250cmlidXRlIHRvIEFwaUFkZGljdHMKCldlJ3JlIGFuIGluY2x1c2l2ZSBhbmQgb3BlbiBjb21tdW5pdHksIHdlbGNvbWluZyB5b3UgdG8gam9pbiBvdXIgZWZmb3J0IHRvIGVuaGFuY2UgQXBpQWRkaWN0cywgYW5kIHdlJ3JlIGV4Y2l0ZWQgdG8gcHJpb3JpdGl6ZSB0YXNrcyBiYXNlZCBvbiBjb21tdW5pdHkgaW5wdXQsIGludml0aW5nIHlvdSB0byByZXZpZXcgYW5kIGNvbGxhYm9yYXRlIHRocm91Z2ggb3VyIEdpdEh1YiBpc3N1ZSB0cmFja2VyLgoKRmVlbCBmcmVlIHRvIGRyb3AgYnkgYW5kIGdyZWV0IHVzIG9uIG91ciBHaXRIdWIgZGlzY3Vzc2lvbiBvciBEaXNjb3JkIGNoYXQuIFlvdSBjYW4gYWxzbyBzaG93IHlvdXIgc3VwcG9ydCBieSBnaXZpbmcgdXMgc29tZSBHaXRIdWIgc3RhcnMg4q2Q77iPLCBvciBieSBmb2xsb3dpbmcgdXMgb24gVHdpdHRlciwgTGlua2VkSW4sIGFuZCBzdWJzY3JpYmluZyB0byBvdXIgWW91VHViZSBjaGFubmVsISDwn5qACgpbIVsiQnV5IE1lIEEgQ29mZmVlIl0oaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9hc3NldHMvaW1nL2N1c3RvbV9pbWFnZXMvb3JhbmdlX2ltZy5wbmcpXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2FwaWFkZGljdHMpCgojIPCfk5EgR2V0dGluZyBzdGFydGVkCgpbIVtOUE1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvb3BlbmFwaTJwb3N0bWFuLSUyM0NCMzgzNy5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPW5wbSZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vcGVuYXBpMnBvc3RtYW4pCgojIyMgSW5zdGFsbCBwYWNrYWdlCgpgYGAKbnBtIGkgb3BlbmFwaTJwb3N0bWFuIC1nCmBgYAoKIyMjIEZpcnN0IHN0ZXBzCgojIyMjIGBBcmd1bWVudHNgCgp8IGFyZ3YgICAgICAgICAgICB8IGEgICB8IGRlc2NyaXB0aW9uICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0gfCAtLS0gfCAtLS0tLS0tLS0tLS0tLS0tLSB8CnwgLS1maWxlICAgICAgICAgIHwgLWYgIHwgcGF0aCBvcGVuYXBpIGZpbGUgfAp8IC0tY29uZmlndXJhdGlvbiB8IC1jICB8IHBhdGggY29uZmlnIGZpbGUgIHwKCiMjIyMgYE5vcm1hbGAgdXNhZ2UKCmBgYApvMnAgLWMgLlxleGFtcGxlXG8ycF9jb25maWdfZmlsZS5qc29uIC1mIC5cZXhhbXBsZVxwZXRzdG9yZS55YW1sCmBgYAoKIyMjIyBgRGVmYXVsdGAgY29uZmlnCgpgYGAKbzJwICAtZiAuXGV4YW1wbGVccGV0c3RvcmUueWFtbApgYGAKCklmIHlvdSBkbyBub3QgdXNlIHRoZSAtYyBhcmd1bWVudCwgdGhlIGZvbGxvd2luZyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSB1c2VkLiBUaGUgb3V0cHV0IHBhdGggYHRhcmdldF9mb2xkZXJgIGlzIGAuL291dGAuCgpgYGAKICBhcGlfbmFtZTogZmlsZW5hbWUsCiAgaXNfaW5saW5lOiBmYWxzZSwKICBzY2hlbWFfaXNfaW5saW5lOiBmYWxzZSwKICBzY2hlbWFfcHJldHR5X3ByaW50OiB0cnVlLAogIGdlbmVyYXRlX29uZU9mX2FueU9mOmZhbHNlLAogIG1pbmltYWxfZW5kcG9pbnRzOmZhbHNlLAogIGVudmlyb25tZW50czpbCiAgICB7CiAgICAgIG5hbWUgOiAiREVWIiwKICAgICAgcG9zdG1hbl9jb2xsZWN0aW9uX25hbWU6ICIlYXBpX25hbWUlX0RFViIsCiAgICAgIHBvc3RtYW5fZW52aXJvbm1lbnRfbmFtZTogIiVhcGlfbmFtZSVfREVWIiwKICAgICAgdGFyZ2V0X2ZvbGRlcjogIi4vb3V0IiwKICAgICAgaGFzX3Njb3BlczogZmFsc2UsCiAgICAgIGFwcGxpY2F0aW9uX3Rva2VuOiBmYWxzZSwKICAgICAgbnVtYmVyX29mX3Njb3BlczogMCwKICAgICAgbWljcm9ja3NfaGVhZGVyczogZmFsc2UKICAgICAgcmVhZF9vbmx5OiBmYWxzZSwKICAgICAgdmFsaWRhdGVfc2NoZW1hOmZhbHNlLAoJICAgIGhvc3Rfc2VydmVyX3BhdHRlcm46IiVkZXYlIiwKICAgIH0KICBdCmBgYAoKIyMgVGFibGUgb2YgY29udGVudAoKLSBbU3RydWN0dXJlIGFuZCBzdWJtb2R1bGVzXSgjc3RydWN0dXJlLWFuZC1zdWJtb2R1bGVzKQotIFtCdWlsZCBhbmQgcnVuXSgjYnVpbGQtYW5kLXJ1bikKICAtIFtQcmVyZXF1aXNpdGVzXSgjcHJlcmVxdWlzaXRlcykKICAtIFtHZXQgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgZmlyc3QgdGltZV0oI2dldC10aGUtc291cmNlLWNvZGUtZm9yLXRoZS1maXJzdC10aW1lKQogIC0gW1J1bl0oI3J1bikKICAtIFtHZXQgdGhlIGxhdGVzdCBjaGFuZ2VzXSgjZ2V0LXRoZS1sYXRlc3QtY2hhbmdlcykKLSBbQ29udHJpYnV0ZV0oI2NvbnRyaWJ1dGUpCiAgLSBbSURFIHN1cHBvcnRdKCNpZGUtc3VwcG9ydCkKICAgIC0gW0ludGVsbGlKIElERUFdKCNpbnRlbGxpai1pZGVhKQogICAgLSBbRWNsaXBzZV0oI2VjbGlwc2UpCi0gW0RvY3VtZW50YXRpb25dKCNkb2N1bWVudGF0aW9uKQotIFtBZHZhbmNlZCBGdW5jdGlvbmFsaXR5XSgjYWR2YW5jZWQtZnVuY3Rpb25hbGl0eSkKLSBbQWRkaXRpb25hbCByZXNvdXJjZXNdKCNhZGRpdGlvbmFsLXJlc291cmNlcykKCiMjIFN0cnVjdHVyZSBhbmQgc3VibW9kdWxlcwoKLSBfW2RvY3NdKGRvY3MpXyAtIFRoaXMgbW9kdWxlIGNvbnRlbnRzIHRoZSBndWlkZXMgdG8gY29uZmlndXJhdGUgYW5kIHJ1biB0aGUgcHJvZHVjdC4gRG9jdW1lbnRzIFBkZnMgYnkgQ2xvdWRBcHBpLgotIF9bZXhhbXBsZV0oZXhhbXBsZSlfIC0gSW50ZWdyYXRpb24gYW5kIHN5c3RlbSB0ZXN0cyBmb3IgU29hcFVJLgotIF9bc3JjXShzcmMpXyDigJMgU291cmNlIGNvZGUKLSBfW3Rlc3RdKHNvYXB1aS1tYXZlbi1wbHVnaW4tdGVzdGVyKV8gLSBUZXN0aW5nIGZvbGRlcgoKIyMgQnVpbGQgYW5kIHJ1bgoKIyMjIFByZXJlcXVpc2l0ZXMKCllvdSBuZWVkIG5vZGUgdjEwIG9yIGxhdGVyLgoKIyMjIHJ1bgoKUGxlYXNlIHJldmlldyB0aGUgbzJwX2NvbmZpZ19maWxlLmpzb24gYmVmb3JlIHRvIGV4ZWN1dGUgdGhlIGNvbW1hbmQKRXhlY3V0ZQpub2RlIGluZGV4LmpzIC0tY29uZmlndXJhdGlvbiBvMnBfY29uZmlnX2ZpbGUuanNvbiAtLWZpbGUgZXhhbXBsZS9zd2FnZ2VyX3Byb3ZpbmNpYXMueW1sCgpUaGUgb3V0cHV0IGZpbGVzIGFyZSB0aGUgZm9sbG93aW5nIChpbiBleGFtcGxlIGZvbGRlcik6CgotIFNXQUdHRVJfQVBJX1Rlc3RTdWl0ZV9ERVYucG9zdG1hbl9jb2xsZWN0aW9uLmpzb24KLSBTV0FHR0VSX0FQSV9UZXN0U3VpdGVFbnZfREVWLnBvc3RtYW5fZW52aXJvbm1lbnQuanNvbgotIFNXQUdHRVJfQVBJX1Rlc3RTdWl0ZV9QUk9ELnBvc3RtYW5fY29sbGVjdGlvbi5qc29uCi0gU1dBR0dFUl9BUElfVGVzdFN1aXRlRW52X1BST0QucG9zdG1hbl9lbnZpcm9ubWVudC5qc29uCgpJbiBwb3N0bWFuOgoKLSBpbXBvcnQgZ2VuZXJhdGVkIHBvc3RtYW4gY29sbGVjdGlvbiBmaWxlIGluIHBvc3RtYW4KLSBpbXBvcnQgZ2VuZXJhdGVkIHBvc3RtYW4gZW52aXJvbm1lbnQgZmlsZSBpbiBwb3N0bWFuCi0gdXBkYXRlIHZhcmlhYmxlcyBpbiB0aGUgZW52aXJub21lbnQgdG8gdGVzdCBhbGwgY2FzZXMKCiMjIyBDb25maWd1cmF0aW9uIGZpbGUKCkNvbGxlY3Rpb25zIGFuZCBlbnZpcm9ubWVudHMgdG8gZ2VuZXJhdGUgY2FuIGJlIGNvbmZpZ3VyZWQgdXNpbmcgYSBKU09OIGNvbmZpZ3VyYXRpb24gZmlsZS4gQ29sbGVjdGlvbiBhbmQgZW52aXJvbm1lbnQgbmFtZSBjYW4gYmUgc3BlY2lmaWVkLCBhcyB3ZWxsIGFzIHRoZSB0YXJnZXQgZm9sZGVyIGZvciByZXN1bHRpbmcgZmlsZXMsIHRoZSBhdXRob3JpemF0aW9ucyBjb2xsZWN0aW9uIHRvIGJlIHVzZWQgYW5kIHNvbWUgb3RoZXIgY2hhcmFjdGVyaXN0aWNzLiBUaGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBoYXMgYW4gc3BlY2lmaWNhdGlvbiBhbmQgZXhhbXBsZXMgdGhhdCBjYW4gYmUgcmVhZCBvbiB0aGUgZm9sbG93aW5nIGRvY3VtZW50OiAgCltDb25maWd1cmF0aW9uIGZpbGUgb3BlbmFwaTJwb3N0bWFuXSguL2RvY3Mvb3BlbmFwaTJwb3N0bWFuLWd1aWEucGRmKS4gVGhpcyBkb2N1bWVudCBpcyBvbmx5IGF2YWlsYWJsZSBpbiBzcGFuaXNoIGJ5IG5vdy4gaXQgd2lsbCBiZSBzb29uIHRyYW5zbGF0ZWQgdG8gZW5nbGlzaC4KCmFuIGV4YW1wbGUgY29uZmlndXJhdGlvbiBmaWxlIGlzIGluY2x1ZGVkIGluIGZpbGUgc3RydWN0dXJlLgoKIyMjIFdvcmtzcGFjZSBjb25maWd1cmF0aW9uCgpOb2RlLmpzIGFuZCBucG0gcGFja2FnZSBtYW5hZ2VyIGFyZSByZXF1aXJlZCB0byBydW4gdGhlIHRvb2wuIEl0cyBhZHZpY2VkIHRvIHVzZSBwcmVjb25maWd1cmVkIGluc3RhbGxhdGlvbiB0b29scyBwcm92aWRlZCBieSB0aGUgbWFudWZhY3R1cmVyOgpbaHR0cHM6Ly9ub2RlanMub3JnL2VzL2Rvd25sb2FkL10oaHR0cHM6Ly9ub2RlanMub3JnL2VzL2Rvd25sb2FkLykKCiMjIPCfkpsgU3BvbnNvcnMKCjxwIGFsaWduPSJjZW50ZXIiPgoJPGEgaHJlZj0iaHR0cHM6Ly9hcGlhZGRpY3RzLm9yZy8iPgogICAgCTxpbWcgc3JjPSJodHRwczovL2FwaWFkZGljdHMuY2xvdWRhcHBpLm5ldC93ZWIvaW1hZ2UvNDI0OC9MT0dPQ2xvdWRhcHBpMjAyMFZlcnNpb25lcy0wMS5wbmciIGFsdD0iY2xvdWRhcHBpIiB3aWR0aD0iMTUwIi8+CiAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vd3d3LmNvbXVuaWRhZC5tYWRyaWQvc2l0ZXMvZGVmYXVsdC9maWxlcy9zdHlsZXMvYmxvY2tfdGVhc2VyX2ltYWdlL3B1YmxpYy9pbWcvbG9nb3Mtc2ltYm9sb3MvbG9nb19jZW50cmFkb19tZC5wbmc/aXRvaz00clRVaG1jaiIgYWx0PSJtZCIgd2lkdGg9IjE1MCIvPgogICAgICAgIDxpbWcgc3JjPSJodHRwczovL2FwaWFkZGljdHMtd2ViLnMzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzAzLzE3MTU1NzM2L2Nyb3BwZWQtQVBJQWRkaWN0cy1sb2dvdGlwb19yb2pvLnBuZyIgaGVpZ2h0ID0gIjc1Ij4KCTwvYT4KPC9wPgo= readmeEtag: '"d18c0813d610b703eaf2b5932294408a653a349c"' readmeLastModified: Mon, 30 Dec 2024 17:38:54 GMT repositoryId: 259690576 description: >- Project open source financed by Madrid Digital (Spain) and CloudAPPi S.L and promoted by APIAddicts. With this project, you can generate all tests automatically using a Swagger document, and you can add it to CI using newman. created: '2020-04-28T16:21:37Z' updated: '2025-12-31T15:47:07Z' language: JavaScript archived: false stars: 21 watchers: 8 forks: 7 owner: apiaddicts logo: https://avatars.githubusercontent.com/u/31730093?v=4 license: NOASSERTION repoEtag: '"5f37bb074b8f11be1606df69d26273d6ad62894a3f379205cceff1ea8d5055fe"' repoLastModified: Wed, 31 Dec 2025 15:47:07 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/mermade/openapi-webconverter v3: true repositoryMetadata: base64Readme: >- IyBPbmxpbmUgU3dhZ2dlciAyLjAgdG8gT3BlbkFQSSAzLjAueCBjb252ZXJ0ZXIKCltDb252ZXJ0XShodHRwczovL21lcm1hZGUub3JnLnVrL29wZW5hcGktY29udmVydGVyKSBTd2FnZ2VyIDIuMCBkZWZpbml0aW9ucyBvciBbdmFsaWRhdGVdKGh0dHBzOi8vbWVybWFkZS5vcmcudWsvb3BlbmFwaS1jb252ZXJ0ZXIpIE9wZW5BUEkgMy4wLnggZGVmaW5pdGlvbnMKCkNvbnZlcnNpb25zIGFuZCB2YWxpZGF0aW9ucyBhcmUgcGVyZm9ybWVkIGJ5IFtPQVMtS2l0XShodHRwczovL2dpdGh1Yi5jb20vbWVybWFkZS9vYXMta2l0KQoKWW91IG1heSBhbHNvIHVzZSB0aGUgW0FQSV0oaHR0cHM6Ly9yZWRvY2x5LmdpdGh1Yi5pby9yZWRvYy8/dXJsPWh0dHBzOi8vbWVybWFkZS5vcmcudWsvb3BlbmFwaS1jb252ZXJ0ZXIvY29udHJhY3Qvc3dhZ2dlci5qc29uKSB0byBjb252ZXJ0IFN3YWdnZXIgMi4wIGRlZmluaXRpb25zIG9yIHZhbGlkYXRlIGEgMy4wLnggZGVmaW5pdGlvbgo8cD4KPHVsPgogICA8bGk+PGk+UE9TVDwvaT4gPGI+L2FwaS92MS9jb252ZXJ0PC9iPiAtIHdpdGggYSBzb3VyY2Ugb3IgZmlsZW5hbWUgcGFyYW1ldGVyLCBvcHRpb25hbGx5IHdpdGggdmFsaWRhdGU9b248L2xpPgogICA8bGk+PGk+UE9TVDwvaT4gPGI+L2FwaS92MS92YWxpZGF0ZTwvYj4gLSB3aXRoIGEgc291cmNlIG9yIGZpbGVuYW1lIHBhcmFtZXRlcjwvbGk+CiAgIDxsaT48aT5HRVQ8L2k+IDxhIGhyZWY9Imh0dHBzOi8vbWVybWFkZS5vcmcudWsvb3BlbmFwaS1jb252ZXJ0ZXIvYXBpL3YxL3N0YXR1cyI+L2FwaS92MS9zdGF0dXM8L2E+PC9saT4KICAgPGxpPjxpPkdFVDwvaT4gPGI+L2FwaS92MS9jb252ZXJ0P3VybD0uLi48L2I+IG9wdGlvbmFsbHkgd2l0aCBhIDxiPnZhbGlkYXRlPC9iPiBwYXJhbWV0ZXI8L2xpPgogICA8bGk+PGk+R0VUPC9pPiA8Yj4vYXBpL3YxL3ZhbGlkYXRlP3VybD0uLi48L2I+PC9saT4KICAgPGxpPjxpPkdFVDwvaT4gPGI+L2FwaS92MS9iYWRnZT91cmw9Li4uPC9iPiByZXR1cm5zIGEgcmVkaXJlY3QgdG8gYW4gU1ZHIGJhZGdlPC9saT4KPC91bD4KCg== readmeEtag: '"970c4b85bc245c7750c2a7fbe4768c08a8acfe50"' readmeLastModified: Tue, 04 Apr 2023 05:17:26 GMT repositoryId: 83992765 description: Mermade Swagger 2.0 to OpenAPI 3.0.0 converter front-end created: '2017-03-05T18:33:45Z' updated: '2025-02-12T06:50:03Z' language: JavaScript archived: false stars: 15 watchers: 1 forks: 8 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: BSD-3-Clause repoEtag: '"79d06f940af2369a0e752d74fae187f361867dc0b5ac2a463e475b81e10176c9"' repoLastModified: Wed, 12 Feb 2025 06:50:03 GMT foundInMaster: true category: - Converters - Parsers id: 54a547cbd73c5b26b11a1f473a6d1e15 - source: openapi3 tags repository: https://github.com/vaclavnovotny/nswag.examples v3: true repositoryMetadata: base64Readme: >- IVtCdWlsZCBhbmQgUHVibGlzaF0oaHR0cHM6Ly9naXRodWIuY29tL3ZhY2xhdm5vdm90bnkvTlN3YWcuRXhhbXBsZXMvd29ya2Zsb3dzL0J1aWxkJTIwYW5kJTIwUHVibGlzaC9iYWRnZS5zdmcpICFbTnVnZXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvdi9OU3dhZy5FeGFtcGxlcz9jb2xvcj1ibHVlKQojIFJlc3BvbnNlIGFuZCBSZXF1ZXN0IEV4YW1wbGVzIGZvciBOU3dhZzwhLS0gb21pdCBmcm9tIHRvYyAtLT4KVGhpcyBsaWJyYXJ5IGFsbG93cyB5b3UgdG8gcHJvZ3JhbW1hdGljYWxseSBkZWZpbmUgc3dhZ2dlciBleGFtcGxlcyBpbiB5b3VyIE5TV2FnIGFwcGxpY2F0aW9uLiBFeGFtcGxlIGRpc2NvdmVyeSBvY2N1cnMgYXQgc3RhcnQgb2YgYXBwbGljYXRpb24gYW5kIHVzZXMgcmVmbGVjdGlvbi4gCgojIyMgT3ZlcnZpZXc6PCEtLSBvbWl0IGZyb20gdG9jIC0tPgotIFtTZXR1cF0oI3NldHVwKQogIC0gW0luc3RhbGwgcGFja2FnZV0oI2luc3RhbGwtcGFja2FnZSkKICAtIFtTZXR1cCBTdGFydHVwLmNzXSgjc2V0dXAtc3RhcnR1cGNzKQotIFtEZWZpbmUgZXhhbXBsZXMgZm9yIHlvdXIgdHlwZXNdKCNkZWZpbmUtZXhhbXBsZXMtZm9yLXlvdXItdHlwZXMpCiAgLSBbUmVxdWVzdCBQYXJhbWV0ZXJzXSgjcmVxdWVzdC1wYXJhbWV0ZXJzKQogIC0gW1JlcXVlc3QgQm9keSBQYXJhbWV0ZXJzXSgjcmVxdWVzdC1ib2R5LXBhcmFtZXRlcnMpCiAgLSBbUmVzcG9uc2UgQm9keV0oI3Jlc3BvbnNlLWJvZHkpCi0gW1VzZSBkZXBlbmRlbmN5IGluamVjdGlvbl0oI3VzZS1kZXBlbmRlbmN5LWluamVjdGlvbikKLSBbTXVsdGlwbGUgZXhhbXBsZXNdKCNtdWx0aXBsZS1leGFtcGxlcykKLSBbTmFtaW5nIHRoZSBleGFtcGxlc10oI25hbWluZy10aGUtZXhhbXBsZXMpCi0gW1NldCBleGFtcGxlIGZvciBzcGVjaWZpYyBlbmRwb2ludF0oI3NldC1leGFtcGxlLWZvci1zcGVjaWZpYy1lbmRwb2ludCkKLSBbUG9seW1vcnBoaXNtXSgjcG9seW1vcnBoaXNtKQotIFtTdXBwb3J0XSgjc3VwcG9ydCkKCgojIFNldHVwCgojIyBJbnN0YWxsIHBhY2thZ2UKCmBgYGNzaGFycApJbnN0YWxsLVBhY2thZ2UgTlN3YWcuRXhhbXBsZXMKYGBgCgojIyBTZXR1cCBTdGFydHVwLmNzCgpBZGQgc2VydmljZXMgbmVlZGVkIGZvciBleGFtcGxlIGRlZmluaXRpb24gdXNpbmcgYEFkZEV4YW1wbGVQcm92aWRlcnMoKWAgYW5kIHByb3ZpZGUgYXNzZW1ibGllcyB3aGVyZSBhcmUgeW91ciBleGFtcGxlcyBsb2NhdGVkLgpgYGBjc2hhcnAKcHVibGljIHZvaWQgQ29uZmlndXJlU2VydmljZXMoSVNlcnZpY2VDb2xsZWN0aW9uIHNlcnZpY2VzKQp7CiAgICBzZXJ2aWNlcy5BZGRDb250cm9sbGVycygpOwoKICAgIHNlcnZpY2VzLkFkZEV4YW1wbGVQcm92aWRlcnModHlwZW9mKENpdHlFeGFtcGxlKS5Bc3NlbWJseSk7CiAgICBzZXJ2aWNlcy5BZGRPcGVuQXBpRG9jdW1lbnQoKHNldHRpbmdzLCBwcm92aWRlcikgPT4KICAgIHsKICAgICAgICBzZXR0aW5ncy5BZGRFeGFtcGxlcyhwcm92aWRlcik7CiAgICB9KTsKfQpgYGAKCiMgRGVmaW5lIGV4YW1wbGVzIGZvciB5b3VyIHR5cGVzCgpDcmVhdGUgY2xhc3MgYW5kIGltcGxlbWVudCBpbnRlcmZhY2UgSUV4YW1wbGVQcm92aWRlcjxUPiB3aGVyZSBUIGlzIHRoZSB0eXBlIHlvdSB3YW50IHRvIGRlZmluZSBleGFtcGxlIGZvci4KYGBgY3NoYXJwCnB1YmxpYyBjbGFzcyBDaXR5RXhhbXBsZSA6IElFeGFtcGxlUHJvdmlkZXI8Q2l0eT4KewogICAgcHVibGljIENpdHkgR2V0RXhhbXBsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBDaXR5KCkKICAgICAgICB7CiAgICAgICAgICAgIElkID0gNSwKICAgICAgICAgICAgTmFtZSA9ICJCcm5vIiwKICAgICAgICAgICAgUGVvcGxlID0gbmV3IExpc3Q8UGVyc29uPigpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5ldyBQZXJzb24oKSB7SWQgPSAxLCBGaXJzdE5hbWUgPSAiSGVucnkiLCBMYXN0TmFtZSA9ICJDYXZpbGwifSwKICAgICAgICAgICAgICAgIG5ldyBQZXJzb24oKSB7SWQgPSAyLCBGaXJzdE5hbWUgPSAiSm9obiIsIExhc3ROYW1lID0gIkRvZSJ9CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQp9CgpgYGAKIyMgUmVxdWVzdCBQYXJhbWV0ZXJzCkZvciByZXF1ZXN0IG90aGVyIHRoYW4gYm9keSBwYXJhbWV0ZXJzIGxpa2UgcXVlcnksIHJvdXRlIG9yIGhlYWRlciBwYXJhbWV0ZXJzLCBzaW1wbHkgZGVmaW5lIHRoZSBleGFtcGxlIHVzaW5nIGBFeGFtcGxlQW5ub3RhdGlvbmAgYXRyaWJ1dGUgYW5kIHNldCBgRXhhbXBsZVR5cGVgIHRvIGBSZXF1ZXN0YCBvciBgQm90aGAuIApgYGBjc2hhcnAKW0V4YW1wbGVBbm5vdGF0aW9uKE5hbWUgPSAiU2VhcmNoIHRleHQgJ2luc3Bla3RvciciLCBFeGFtcGxlVHlwZSA9IEV4YW1wbGVUeXBlLlJlcXVlc3QpXQpwdWJsaWMgY2xhc3MgUGVyc29uVGV4dEV4YW1wbGUxIDogSUV4YW1wbGVQcm92aWRlcjxzdHJpbmc+CnsKICAgIHB1YmxpYyBzdHJpbmcgR2V0RXhhbXBsZSgpID0+ICJpbnNwZWt0b3IiOwp9CmBgYApBZnRlciB0aGF0LCB5b3UgYWxzbyBuZWVkIGRlY29yYXRlIGVuZHBvaW50IHdoaWNoIGV4YW1wbGVzIHlvdSB3aXNoIHRvIGJlIHNob3dlZAoKYGBgY3NoYXJwCltIdHRwR2V0XQpbRW5kcG9pbnRTcGVjaWZpY0V4YW1wbGUodHlwZW9mKFBlcnNvblRleHRFeGFtcGxlMSksIFBhcmFtZXRlck5hbWUgPSAic2VhcmNoVGV4dCIsIEV4YW1wbGVUeXBlID0gRXhhbXBsZVR5cGUuUmVxdWVzdCldCnB1YmxpYyBJQWN0aW9uUmVzdWx0IEdldFBlb3BsZShbRnJvbVF1ZXJ5XSBpbnQ/IG1pbkFnZSA9IG51bGwsIFtGcm9tUXVlcnldIHN0cmluZyBzZWFyY2hUZXh0ID0gbnVsbCkKewogICAgLi4uCn0KYGBgCgojIyBSZXF1ZXN0IEJvZHkgUGFyYW1ldGVycwoKRm9yIHJlcXVlc3QgYm9keSBwYXJhbWV0ZXJzIHRoZXJlIGlzIG5vdGhpbmcgeW91IG5lZWQgdG8gd29ycnkgYWJvdXQsIGp1c3QgbWFyayB5b3VyIHBhcmFtZXRlciBgW0Zyb21Cb2R5XWAuCmBgYGNzaGFycApbSHR0cFBvc3RdCnB1YmxpYyBhc3luYyBUYXNrPElBY3Rpb25SZXN1bHQ+IENyZWF0ZVBlcnNvbihbRnJvbUJvZHksIEJpbmRSZXF1aXJlZF0gUGVyc29uIHBlcnNvbikKewogICAgLy8gY3JlYXRlIHBlcnNvbiBsb2dpYwogICAgcmV0dXJuIE9rKCk7Cn0KYGBgClJlc3VsdCBpbiBzd2FnZ2VyOgohW0ltYWdlIG9mIHJlcXVlc3QgYm9keV0oaHR0cHM6Ly9naXRodWIuY29tL3ZhY2xhdm5vdm90bnkvaW1hZ2VzL2Jsb2IvbWFpbi9yZXF1ZXN0RXhhbXBsZS5KUEcpCgojIyBSZXNwb25zZSBCb2R5CgpGb3IgcmVzcG9uc2UgYm9keSB0eXBlcyB5b3UgbmVlZCB0byBkZWNvcmF0ZSB5b3VyIG1ldGhvZCB3aXRoIGBbUHJvZHVjZXNSZXNwb25zZVR5cGVdYApgYGBjc2hhcnAKW0h0dHBHZXQoIntpZH0iKV0KW1Byb2R1Y2VzUmVzcG9uc2VUeXBlKFN0YXR1c0NvZGVzLlN0YXR1czIwME9LLCBUeXBlID0gdHlwZW9mKFBlcnNvbikpXQpwdWJsaWMgYXN5bmMgVGFzazxJQWN0aW9uUmVzdWx0PiBHZXRQZXJzb24oW0Zyb21Sb3V0ZV1pbnQgaWQpCnsKICAgIHJldHVybiBPayhuZXcgUGVyc29uKCkpOwp9CmBgYAoKUmVzdWx0IGluIHN3YWdnZXI6CiFbSW1hZ2Ugb2YgcmVxdWVzdCBib2R5XShodHRwczovL2dpdGh1Yi5jb20vdmFjbGF2bm92b3RueS9pbWFnZXMvYmxvYi9tYWluL3Jlc3BvbnNlRXhhbXBsZVNpbmdsZS5KUEcpCgojIFVzZSBkZXBlbmRlbmN5IGluamVjdGlvbgoKWW91IGNhbiBhbHNvIHVzZSBkZXBlbmRlbmN5IGluamVjdGlvbiBpbiBjb25zdHJ1Y3RvciBvZiB5b3VyIGV4YW1wbGUgcHJvdmlkZXIgY2xhc3MuCgpDb25zdHJ1Y3RvciBhbmQgYEdldEV4YW1wbGVgIG1ldGhvZCBnZXRzIGNhbGxlZCB3aGVuIG9wZXJhdGlvbiBwcm9jZXNzb3JzIGFyZSBleGVjdXRlZCAtIHdoZW4gc3dhZ2dlciBzcGVjaWZpY2F0aW9uIGlzIGJlaW5nIGdlbmVyYXRlZCB3aGljaCBpcyBkdXJpbmcgZmlyc3QgcmVxdWVzdCBvbiBzd2FnZ2VyLgpgYGBjc2hhcnAKcHVibGljIGNsYXNzIFBlcnNvbkV4YW1wbGUgOiBJRXhhbXBsZVByb3ZpZGVyPFBlcnNvbj4KewogICAgcHJpdmF0ZSByZWFkb25seSBJUGVyc29uTmFtZUdlbmVyYXRvciBfbmFtZUdlbmVyYXRvcjsKICAgIHByaXZhdGUgcmVhZG9ubHkgUmFuZG9tIF9yYW5kb207CgogICAgcHVibGljIFBlcnNvbkV4YW1wbGUoSVBlcnNvbk5hbWVHZW5lcmF0b3IgbmFtZUdlbmVyYXRvcikKICAgIHsKICAgICAgICBfbmFtZUdlbmVyYXRvciA9IG5hbWVHZW5lcmF0b3I7CiAgICAgICAgX3JhbmRvbSA9IG5ldyBSYW5kb20oKTsgCiAgICB9CgogICAgcHVibGljIFBlcnNvbiBHZXRFeGFtcGxlKCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFBlcnNvbigpCiAgICAgICAgewogICAgICAgICAgICBJZCA9IF9yYW5kb20uTmV4dCgxLCAxMDApLAogICAgICAgICAgICBGaXJzdE5hbWUgPSBfbmFtZUdlbmVyYXRvci5HZW5lcmF0ZVJhbmRvbUZpcnN0TmFtZSgpLAogICAgICAgICAgICBMYXN0TmFtZSA9IF9uYW1lR2VuZXJhdG9yLkdlbmVyYXRlUmFuZG9tTGFzdE5hbWUoKQogICAgICAgIH07CiAgICB9Cn0KYGBgCgpZb3UgY2FuIGFsc28gY29tYmluZSBleGFtcGxlcyBieSByZXVzaW5nIGBJRXhhbXBsZVByb3ZpZGVyPFQ+YC4gWW91IGNhbiBkaXJlY3RseSBpbmplY3QgZGVzaXJlZCBleGFtcGxlIHByb3ZpZGVycyBpbnRvIGNvbnN0cnVjdG9yIGFuZCB1c2UgdGhlbSB3aXRoaW4geW91ciBleGFtcGxlIHByb3ZpZGVyLgpgYGBjc2hhcnAKcHVibGljIGNsYXNzIFByYWd1ZUV4YW1wbGUgOiBJRXhhbXBsZVByb3ZpZGVyPENpdHk+CnsKICAgIHByaXZhdGUgcmVhZG9ubHkgSUVudW1lcmFibGU8SUV4YW1wbGVQcm92aWRlcjxQZXJzb24+PiBfcGVvcGxlRXhhbXBsZXM7CgogICAgcHVibGljIFByYWd1ZUV4YW1wbGUoSUVudW1lcmFibGU8SUV4YW1wbGVQcm92aWRlcjxQZXJzb24+PiBwZW9wbGVFeGFtcGxlcykgewogICAgICAgIF9wZW9wbGVFeGFtcGxlcyA9IHBlb3BsZUV4YW1wbGVzOwogICAgfQogICAgCiAgICBwdWJsaWMgQ2l0eSBHZXRFeGFtcGxlKCkgewogICAgICAgIHJldHVybiBuZXcgQ2l0eSB7CiAgICAgICAgICAgIElkID0gNDIwLAogICAgICAgICAgICBOYW1lID0gIlByYWd1ZSIsCiAgICAgICAgICAgIFBlb3BsZSA9IF9wZW9wbGVFeGFtcGxlcy5TZWxlY3QoeCA9PiB4LkdldEV4YW1wbGUoKSkuVG9MaXN0KCkKICAgICAgICB9OwogICAgfQp9CmBgYAoKIyBNdWx0aXBsZSBleGFtcGxlcwpUbyBkZWZpbmUgbXVsdGlwbGUgZXhhbXBsZXMgZm9yIHJlcXVlc3Qgb3IgcmVzcG9uc2UgYm9keSwgc2ltcGx5IGNyZWF0ZSBtb3JlIGNsYXNzZXMgaW1wbGVtZW50aW5nIGBJRXhhbXBsZVByb3ZpZGVyPFQ+YCBtdWx0aXBsZSB0aW1lcy4KSGVyZSwgdG8gZGVmaW5lIG11bHRpcGxlIGV4YW1wbGVzIG9mIHR5cGUgYENpdHlgLCB3ZSBjcmVhdGUgdHdvIGNsYXNzZXMgdGhhdCBpbXBsZW1lbnQgaW50ZXJmYWNlIGBJRXhhbXBsZVByb3ZpZGVyPENpdHk+YC4KYGBgY3NoYXJwCnB1YmxpYyBjbGFzcyBCcm5vRXhhbXBsZSA6IElFeGFtcGxlUHJvdmlkZXI8Q2l0eT4KewogICAgcHVibGljIENpdHkgR2V0RXhhbXBsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBDaXR5IHsKICAgICAgICAgICAgSWQgPSA1LAogICAgICAgICAgICBOYW1lID0gIkJybm8iLAogICAgICAgICAgICBQZW9wbGUgPSBuZXcgTGlzdDxQZXJzb24+IHsKICAgICAgICAgICAgICAgIG5ldyBQZXJzb24ge0lkID0gMSwgRmlyc3ROYW1lID0gIkhlbnJ5IiwgTGFzdE5hbWUgPSAiQ2F2aWxsIn0sCiAgICAgICAgICAgICAgICBuZXcgUGVyc29uIHtJZCA9IDIsIEZpcnN0TmFtZSA9ICJKb2huIiwgTGFzdE5hbWUgPSAiRG9lIn0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9Cn0KCnB1YmxpYyBjbGFzcyBQcmFndWVFeGFtcGxlIDogSUV4YW1wbGVQcm92aWRlcjxDaXR5Pgp7CiAgICBwdWJsaWMgQ2l0eSBHZXRFeGFtcGxlKCkgewogICAgICAgIHJldHVybiBuZXcgQ2l0eSB7CiAgICAgICAgICAgIElkID0gNDIwLAogICAgICAgICAgICBOYW1lID0gIlByYWd1ZSIsCiAgICAgICAgICAgIFBlb3BsZSA9IG5ldyBMaXN0PFBlcnNvbj4gewogICAgICAgICAgICAgICAgbmV3IFBlcnNvbiB7SWQgPSAxLCBGaXJzdE5hbWUgPSAiSGVucnkiLCBMYXN0TmFtZSA9ICJDYXZpbGwifSwKICAgICAgICAgICAgICAgIG5ldyBQZXJzb24ge0lkID0gMiwgRmlyc3ROYW1lID0gIkpvaG4iLCBMYXN0TmFtZSA9ICJEb2UifQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIH0KfQpgYGAKU3dhZ2dlciB0aGVuIGNvbnRhaW5zIGRyb3Bkb3duIHdpdGggdGhlc2Ugb3B0aW9uczoKIVtNdWx0aXBsZSBleGFtcGxlc10oaHR0cHM6Ly9naXRodWIuY29tL3ZhY2xhdm5vdm90bnkvaW1hZ2VzL2Jsb2IvbWFpbi9tdWx0aXBsZWV4YW1wbGVzLmpwZykKCiMgTmFtaW5nIHRoZSBleGFtcGxlcwpZb3UgY2FuIG5hbWUgZXhhbXBsZXMgc28gdGhleSBkbyBub3Qgc2hvdyB1cCBpbiBTd2FnZ2VyIGFzIEV4YW1wbGUgMSwgRXhhbXBsZSAyLCBldGMuClNpbXBseSBhbm5vdGF0ZSB5b3VyIGV4YW1wbGUgd2l0aCBgRXhhbXBsZUFubm90YXRpb25gIGF0dHJpYnV0ZSBhbmQgc2V0IGBOYW1lYCBwcm9wZXJ0eS4KCmBgYGNzaGFycApbRXhhbXBsZUFubm90YXRpb24oTmFtZSA9ICJCcm5vIildCnB1YmxpYyBjbGFzcyBCcm5vRXhhbXBsZSA6IElFeGFtcGxlUHJvdmlkZXI8Q2l0eT4KYGBgClN3YWdnZXIgdGhlbiBzaG93cyB0aGVzZSBuYW1lcyBpbiBkcm9wZG93bjoKIVtOYW1lZCBleGFtcGxlc10oaHR0cHM6Ly9naXRodWIuY29tL3ZhY2xhdm5vdm90bnkvaW1hZ2VzL2Jsb2IvbWFpbi9uYW1pbmdleGFtcGxlcy5qcGcpCgojIFJlc3RyaWN0aW5nIGV4YW1wbGVzIHRvIHJlcXVlc3Qgb3IgcmVzcG9uc2UgY29udGVudApFeGFtcGxlcyBjYW4gYmUgYW5ub3RhdGVkIHRvIHJlc3RyaWN0IHRoZWlyIHVzYWdlIHRvIGVpdGhlciBhIHJlcXVlc3Qgb3IgYSByZXNwb25zZSBib2R5LiAgVGhpcyBpcyB1c2VmdWwgd2hlbiB0aGUgc2FtZSB0eXBlIG1heSBiZSB1c2VkIG9uIGJvdGggcmVxdWVzdHMgYW5kIHJlc3BvbnNlcywgYW5kIHlvdSB3YW50IHRvIHJlc3RyaWN0IGV4YW1wbGVzIHdpdGhvdXQgc3BlY2lmeWluZyBzcGVjaWZpYyBleGFtcGxlcy4KYGBgY3NoYXJwCltFeGFtcGxlQW5ub3RhdGlvbihFeGFtcGxlVHlwZSA9IEV4YW1wbGVUeXBlLlJlcXVlc3QpXQpwdWJsaWMgY2xhc3MgUmVxdWVzdEV4YW1wbGUgOiBJRXhhbXBsZVByb3ZpZGVyPENpdHk+IHsuLi59CgpbRXhhbXBsZUFubm90YXRpb24oRXhhbXBsZVR5cGUgPSBFeGFtcGxlVHlwZS5SZXNwb25zZSldCnB1YmxpYyBjbGFzcyBSZXNwb25zZUV4YW1wbGUgOiBJRXhhbXBsZVByb3ZpZGVyPENpdHk+IHsuLi59CmBgYAoKIyBTZXQgZXhhbXBsZSBmb3Igc3BlY2lmaWMgZW5kcG9pbnQKSXQgaXMgcG9zc2libGUgdG8gc2V0IHNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIGBJRXhhbXBsZVByb3ZpZGVyPFQ+YCB0byBkZXNpcmVkIEFQSSBlbmRwb2ludC4gVGhpcyBtYXkgYmUgaGFuZHkgd2hlbiBtdWx0aXBsZSBlbmRwb2ludHMgcmV0dXJuIHNhbWUgdHlwZSBvciBpZiBwcmltaXRpdmUgdHlwZSBpcyByZXR1cm5lZCBidXQgeW91IG5lZWQgdG8gc3BlY2lmeSBzcGVjaWZpYyB2YWx1ZS4KVG8gc2V0IHNwZWNpZmljIGV4YW1wbGUsIHNpbXBseSBhbm5vdGF0ZSBjb250cm9sbGVycyBtZXRob2Qgd2l0aCBgRW5kcG9pbnRTcGVjaWZpY0V4YW1wbGVgIGF0dHJpYnV0ZSBhbmQgcHJvdmlkZSB0eXBlIG9mIHRoZSBleGFtcGxlIGNsYXNzLgoKYGBgY3NoYXJwCltIdHRwR2V0KCJ7aWR9L2FnZSIpXQpbUHJvZHVjZXNSZXNwb25zZVR5cGUoU3RhdHVzQ29kZXMuU3RhdHVzMjAwT0ssIFR5cGUgPSB0eXBlb2YoaW50KSldCltFbmRwb2ludFNwZWNpZmljRXhhbXBsZSh0eXBlb2YoUGVyc29uU3BlY2lmaWNBZ2VFeGFtcGxlKSldIC8vIDwtLS0tLQpwdWJsaWMgSUFjdGlvblJlc3VsdCBHZXRQZXJzb25BZ2UoW0Zyb21Sb3V0ZV0gaW50IGlkKSB7Li4ufQoKcHVibGljIGNsYXNzIFBlcnNvblNwZWNpZmljQWdlRXhhbXBsZSA6IElFeGFtcGxlUHJvdmlkZXI8aW50Pgp7CiAgICBwdWJsaWMgaW50IEdldEV4YW1wbGUoKSA9PiA2OTsKfQpgYGAKCiMgU3BlY2lmeSB0aGF0IGFuIGV4YW1wbGUgaXMgc3BlY2lmaWNhbGx5IGZvciBhIHJlcXVlc3Qgb3IgcmVzcG9uc2UKV2hlbiBzZXR0aW5nIGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgYElFeGFtcGxlUHJvdmlkZXI8VD5gIGZvciBhIGRlc2lyZWQgQVBJIGVuZHBvaW50LCBpdCBtYXkgYmUgZGVzaXJlZCB0byBzcGVjaWZ5IHNwZWNpZmljYWxseSB3aGV0aGVyIHRoaXMgZXhhbXBsZSBhcHBsaWVzIHRvIHRoZSByZXF1ZXN0IG9yIHJlc3BvbnNlLgoKYGBgY3NoYXJwCltIdHRwUG9zdCgiYWdlIildCltQcm9kdWNlc1Jlc3BvbnNlVHlwZShTdGF0dXNDb2Rlcy5TdGF0dXMyMDBPSywgVHlwZSA9IHR5cGVvZihpbnQpKV0KW0VuZHBvaW50U3BlY2lmaWNFeGFtcGxlKHR5cGVvZihQZXJzb25TcGVjaWZpY0FnZTY5RXhhbXBsZSksIEV4YW1wbGVUeXBlID0gRXhhbXBsZVR5cGUuUmVzcG9uc2UpXSAvLyA8LS0tLS0gUHJldmVudHMgZXhhbXBsZSBmcm9tIGJlaW5nIHVzZWQgaW4gdGhlIHJlcXVlc3QKW0VuZHBvaW50U3BlY2lmaWNFeGFtcGxlKHR5cGVvZihQZXJzb25TcGVjaWZpY0FnZTUwRXhhbXBsZSksIEV4YW1wbGVUeXBlID0gRXhhbXBsZVR5cGUuUmVxdWVzdCldIC8vIDwtLS0tLSBQcmV2ZW50cyBleGFtcGxlIGZyb20gYmVpbmcgdXNlZCBpbiB0aGUgcmVzcG9uc2UKcHVibGljIElBY3Rpb25SZXN1bHQgR2V0UGVyc29uQWdlKFtGcm9tQm9keV0gaW50IGlkKSB7Li4ufQoKLy8gSW5jbHVkZWQgb24gcmVzcG9uc2UKcHVibGljIGNsYXNzIFBlcnNvblNwZWNpZmljQWdlNjlFeGFtcGxlIDogSUV4YW1wbGVQcm92aWRlcjxpbnQ+CnsKICAgIHB1YmxpYyBpbnQgR2V0RXhhbXBsZSgpID0+IDY5Owp9CgovLyBJbmNsdWRlZCBvbiByZXF1ZXN0CnB1YmxpYyBjbGFzcyBQZXJzb25TcGVjaWZpY0FnZTUwRXhhbXBsZSA6IElFeGFtcGxlUHJvdmlkZXI8aW50Pgp7CiAgICBwdWJsaWMgaW50IEdldEV4YW1wbGUoKSA9PiA1MDsKfQpgYGAKCiMgU3BlY2lmeSB0aGF0IGFuIGV4YW1wbGUgaXMgc3BlY2lmaWNhbGx5IGZvciBhIHNwZWNpZmljIHJlc3BvbnNlIGNvZGUKV2hlbiBzZXR0aW5nIGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgYElFeGFtcGxlUHJvdmlkZXI8VD5gIGZvciBhIGRlc2lyZWQgQVBJIGVuZHBvaW50LCBpdCBtYXkgYmUgZGVzaXJlZCB0byBzcGVjaWZ5IHNwZWNpZmljYWxseSB3aGV0aGVyIHRoaXMgZXhhbXBsZSBhcHBsaWVzIHRvIHRoZSByZXF1ZXN0IG9yIHJlc3BvbnNlLgoKYGBgY3NoYXJwCltIdHRwR2V0KCJ7aWR9L2FnZSIpXQpbUHJvZHVjZXNSZXNwb25zZVR5cGUoU3RhdHVzQ29kZXMuU3RhdHVzMjAwT0ssIFR5cGUgPSB0eXBlb2YoaW50KSldCltFbmRwb2ludFNwZWNpZmljRXhhbXBsZSh0eXBlb2YoUGVyc29uU3BlY2lmaWNBZ2VFeGFtcGxlKSwgRXhhbXBsZVR5cGUgPSBFeGFtcGxlVHlwZS5SZXNwb25zZSwgUmVzcG9uc2VTdGF0dXNDb2RlID0gU3RhdHVzQ29kZXMuU3RhdHVzMjAwT0spXSAvLyA8LS0tLS0gT25seSBzaG93biBmb3IgMjAwIHJlc3BvbnNlcwpbRW5kcG9pbnRTcGVjaWZpY0V4YW1wbGUodHlwZW9mKEJhZFJlcXVlc3RFeGFtcGxlKSwgRXhhbXBsZVR5cGUgPSBFeGFtcGxlVHlwZS5SZXNwb25zZSwgUmVzcG9uc2VTdGF0dXNDb2RlID0gU3RhdHVzQ29kZXMuU3RhdHVzNDAwQmFkUmVxdWVzdCldIC8vIDwtLS0tLSBPbmx5IHNob3duIGZvciA0MDAgcmVzcG9uc2VzCnB1YmxpYyBJQWN0aW9uUmVzdWx0IEdldFBlcnNvbkFnZShbRnJvbVJvdXRlXSBpbnQgaWQpIHsuLi59CgpwdWJsaWMgY2xhc3MgUGVyc29uU3BlY2lmaWNBZ2VFeGFtcGxlIDogSUV4YW1wbGVQcm92aWRlcjxpbnQ+CnsKICAgIHB1YmxpYyBpbnQgR2V0RXhhbXBsZSgpID0+IDY5Owp9CgpwdWJsaWMgY2xhc3MgQmFkUmVxdWVzdEV4YW1wbGUgOiBJRXhhbXBsZVByb3ZpZGVyPHN0cmluZz4KewogICAgcHVibGljIGludCBHZXRFeGFtcGxlKCkgPT4gIk9vcHMhIEludmFsaWQgaWQgZm9ybWF0IGVycm9yLiI7Cn0KYGBgCgojIFNldCBtdWx0aXBsZSBleGFtcGxlcyBmb3Igc3BlY2lmaWMgZW5kcG9pbnQKSXQgaXMgcG9zc2libGUgdG8gc2V0IG11bHRpcGxlIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucyBvZiBgSUV4YW1wbGVQcm92aWRlcjxUPmAgdG8gZGVzaXJlZCBBUEkgZW5kcG9pbnQuIFRoaXMgbWF5IGJlIGhhbmR5IHdoZW4gbXVsdGlwbGUgZW5kcG9pbnRzIHJldHVybiBzYW1lIHR5cGUgb3IgaWYgcHJpbWl0aXZlIHR5cGUgaXMgcmV0dXJuZWQgYnV0IHlvdSBuZWVkIHRvIHNwZWNpZnkgc3BlY2lmaWMgdmFsdWUuClRvIHNldCBzcGVjaWZpYyBleGFtcGxlLCBzaW1wbHkgYW5ub3RhdGUgY29udHJvbGxlcnMgbWV0aG9kIHdpdGggYEVuZHBvaW50U3BlY2lmaWNFeGFtcGxlYCBhdHRyaWJ1dGUgYW5kIHByb3ZpZGUgdHlwZSBvZiB0aGUgZXhhbXBsZSBjbGFzcy4KCmBgYGNzaGFycApbSHR0cEdldCgie2lkfS9hZ2UiKV0KW1Byb2R1Y2VzUmVzcG9uc2VUeXBlKFN0YXR1c0NvZGVzLlN0YXR1czIwME9LLCBUeXBlID0gdHlwZW9mKGludCkpXQpbRW5kcG9pbnRTcGVjaWZpY0V4YW1wbGUodHlwZW9mKFBlcnNvblNwZWNpZmljQWdlNjlFeGFtcGxlKSwgdHlwZW9mKFBlcnNvblNwZWNpZmljQWdlNTBFeGFtcGxlKSldIC8vIDwtLS0tLQpwdWJsaWMgSUFjdGlvblJlc3VsdCBHZXRQZXJzb25BZ2UoW0Zyb21Sb3V0ZV0gaW50IGlkKSB7Li4ufQoKLy8gSW5jbHVkZWQKcHVibGljIGNsYXNzIFBlcnNvblNwZWNpZmljQWdlNjlFeGFtcGxlIDogSUV4YW1wbGVQcm92aWRlcjxpbnQ+CnsKICAgIHB1YmxpYyBpbnQgR2V0RXhhbXBsZSgpID0+IDY5Owp9CgovLyBJbmNsdWRlZApwdWJsaWMgY2xhc3MgUGVyc29uU3BlY2lmaWNBZ2U1MEV4YW1wbGUgOiBJRXhhbXBsZVByb3ZpZGVyPGludD4KewogICAgcHVibGljIGludCBHZXRFeGFtcGxlKCkgPT4gNTA7Cn0KCi8vIEV4Y2x1ZGVkCnB1YmxpYyBjbGFzcyBQZXJzb25TcGVjaWZpY0FnZTM1RXhhbXBsZSA6IElFeGFtcGxlUHJvdmlkZXI8aW50Pgp7CiAgICBwdWJsaWMgaW50IEdldEV4YW1wbGUoKSA9PiAzNTsKfQpgYGAKCiMgUG9seW1vcnBoaXNtClRvIGRlZmluZSBzcGVjaWZpYyBleGFtcGxlcyBvZiBhYnN0cmFjdCBjbGFzc2VzIHRoYXQgYXJlIHJldHVybmVkIG9yIHJlY2VpdmVkIGluIGNvbnRyb2xsZXIsIHNpbXBseSBpbXBsZW1lbnQgYElFeGFtcGxlUHJvdmlkZXI8VD5gIHdoZXJlIGBUYCBpcyB0aGUgdHlwZSBvZiBhYnN0cmFjdCBjbGFzcy4gCkluIGV4YW1wbGUgYmVsb3csIHdlIGhhdmUgYWJzdHJhY3QgY2xhc3MgYEFuaW1hbGAgd2hpY2ggaXMgcmV0dXJuZWQgYXMgY29sbGVjdGlvbiBmcm9tIGBHZXRBbmltYWxzYCBlbmRwb2ludC4gVG8gc3BlY2lmeSBleGFtcGxlcyBmb3IgZWFjaCBpbXBsZW1lbnRhdGlvbiBvZiBgQW5pbWFsYCB0eXBlLCB3ZSBjcmVhdGUgY2xhc3NlcyB0aGF0IGltcGxlbWVudCBgSUV4YW1wbGVQcm92aWRlcjxBbmltYWw+YC4KYGBgY3NoYXJwCltIdHRwR2V0XQpbUHJvZHVjZXNSZXNwb25zZVR5cGUoU3RhdHVzQ29kZXMuU3RhdHVzMjAwT0ssIFR5cGUgPSB0eXBlb2YoSUVudW1lcmFibGU8QW5pbWFsPikpXQpwdWJsaWMgSUFjdGlvblJlc3VsdCBHZXRBbmltYWxzKCkgey4uLn0KCnB1YmxpYyBhYnN0cmFjdCBjbGFzcyBBbmltYWwgey4uLn0KCnB1YmxpYyBjbGFzcyBNb25rZXkgOiBBbmltYWwKewogICAgcHVibGljIGludCBQb29wc1Rocm93biB7IGdldDsgc2V0OyB9Cn0KCnB1YmxpYyBjbGFzcyBTbG90aCA6IEFuaW1hbAp7CiAgICBwdWJsaWMgdWludCBZYXduc0NvdW50IHsgZ2V0OyBzZXQ7IH0KfQoKW0V4YW1wbGVBbm5vdGF0aW9uKE5hbWUgPSAiTW9ua2V5IildCnB1YmxpYyBjbGFzcyBNb25rZXlFeGFtcGxlIDogSUV4YW1wbGVQcm92aWRlcjxBbmltYWw+CnsKICAgIHB1YmxpYyBBbmltYWwgR2V0RXhhbXBsZSgpID0+IG5ldyBNb25rZXkgeyBBZ2UgPSA1LCBOYW1lID0gIkhhcmFtYmUiLCBQYXduQ291bnQgPSA0LCBQb29wc1Rocm93biA9IDE4IH07Cn0KCltFeGFtcGxlQW5ub3RhdGlvbihOYW1lID0gIlNsb3RoIildCnB1YmxpYyBjbGFzcyBTbG90aEV4YW1wbGUgOiBJRXhhbXBsZVByb3ZpZGVyPEFuaW1hbD4KewogICAgcHVibGljIEFuaW1hbCBHZXRFeGFtcGxlKCkgPT4gbmV3IFNsb3RoIHsgQWdlID0gMTgsIE5hbWUgPSAiVmVuY2UiLCBQYXduQ291bnQgPSA0LCBZYXduc0NvdW50ID0gMTU4IH07Cn0KYGBgClN3YWdnZXIgdGhlbiBzaG93cyBhbGwgZXhhbXBsZXMgaW4gcmVzcG9uc2UgYm9keSB3aXRoIGRyb3Bkb3duOgohW1BvbHltb3JwaGlzbSBzaW5nbGUgaXRlbSByZXNwb25zZSBib2R5XShodHRwczovL2dpdGh1Yi5jb20vdmFjbGF2bm92b3RueS9pbWFnZXMvYmxvYi9tYWluL3BvbHltb3JwaGlzbTMuanBnKQoKT3IgaW4gY2FzZSBvZiBlbnVtZXJhYmxlIGluIHJlc3BvbnNlIGJvZHk6CiFbUG9seW1vcnBoaXNtIGluIHJlc3BvbnNlIGJvZHldKGh0dHBzOi8vZ2l0aHViLmNvbS92YWNsYXZub3ZvdG55L2ltYWdlcy9ibG9iL21haW4vcG9seW1vcnBoaXNtLmpwZykKCk9yIGluIGNhc2Ugb2YgcmVxdWVzdCBib2R5LCBTd2FnZ2VyIHNob3dzIGRyb3Bkb3duIG9mIGFsbCBkZWZpbmVkIGV4YW1wbGVzOgohW1BvbHltb3JwaGlzbSBpbiByZXF1ZXN0IGJvZHldKGh0dHBzOi8vZ2l0aHViLmNvbS92YWNsYXZub3ZvdG55L2ltYWdlcy9ibG9iL21haW4vcG9seW1vcnBoaXNtMi5qcGcpCgpfTm90ZTpfIFNldCB5b3VyIEpzb25TZXJpYWxpemVyIHNldHRpbmdzIFtUeXBlTmFtZUhhbmRsaW5nXShodHRwczovL3d3dy5uZXd0b25zb2Z0LmNvbS9qc29uL2hlbHAvaHRtbC9zZXJpYWxpemV0eXBlbmFtZWhhbmRsaW5nLmh0bSkgdG8gc2VlIGRpc2NyaW1pbmF0b3IuIEZvciBleGFtcGxlOgoKYGBgY3NoYXJwCnNlcnZpY2VzLkFkZE9wZW5BcGlEb2N1bWVudCgKICAgIChzZXR0aW5ncywgcHJvdmlkZXIpID0+CiAgICB7CiAgICAgICAgc2V0dGluZ3MuU2VyaWFsaXplclNldHRpbmdzID0gbmV3IEpzb25TZXJpYWxpemVyU2V0dGluZ3MoKSB7IFR5cGVOYW1lSGFuZGxpbmcgPSBUeXBlTmFtZUhhbmRsaW5nLkF1dG8gfTsKICAgICAgICBzZXR0aW5ncy5BZGRFeGFtcGxlcyhwcm92aWRlcik7CiAgICB9KTsKYGBgCgoKIyBTdXBwb3J0CkkgcGVyc29uYWxseSB1c2UgdGhpcyBOdUdldCBpbiBteSBwcm9qZWN0cywgc28gSSB3aWxsIGtlZXAgdGhpcyByZXBvc2l0b3J5IHVwLXRvLWRhdGUuIEFueSBpZGVhcyBmb3IgZXh0ZW5kaW5nIGZ1bmN0aW9uYWxpdGllcyBhcmUgd2VsY29tZSwgc28gY3JlYXRlIGFuIGlzc3VlIHdpdGggcHJvcG9zYWwuIAoKIyMjIERpZCBJIHNhdmUgeW91IHNvbWUgaG91cnM/PCEtLSBvbWl0IGZyb20gdG9jIC0tPgpbIVtrby1maV0oaHR0cHM6Ly93d3cua28tZmkuY29tL2ltZy9naXRodWJidXR0b25fc20uc3ZnKV0oaHR0cHM6Ly9rby1maS5jb20vVTdVNzJHMUEyKQo= readmeEtag: '"8cba263a77f9875a5583d6efad6f978de2162493"' readmeLastModified: Sat, 18 May 2024 11:11:36 GMT repositoryId: 303455072 description: >- NSwag processor to programmatically define strongly-typed examples for response and request parameters. created: '2020-10-12T16:48:05Z' updated: '2025-10-06T09:08:23Z' language: C# archived: false stars: 19 watchers: 2 forks: 13 owner: vaclavnovotny logo: https://avatars.githubusercontent.com/u/17833494?v=4 license: MIT repoEtag: '"b33e0c5d214f3d2c3c13fc6c3f56afbcb6c2c5e582c4dac461829d45eec45bc1"' repoLastModified: Mon, 06 Oct 2025 09:08:23 GMT foundInMaster: true id: 2baf0af965838620471c5542f55d29e8 - source: openapi3 tags repository: https://github.com/env0/serverless-openapi-typescript v3: true repositoryMetadata: base64Readme: >- IyBTZXJ2ZXJsZXNzIE9wZW5BUEkgVHlwZVNjcmlwdCBQbHVnaW4KCkdlbmVyYXRlcyBbKipPcGVuQVBJIDMuMS4wKipdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvMy4xLjAvdmVyc2lvbnMvMy4xLjAubWQpIGRvY3VtZW50YXRpb24gZnJvbSBzZXJ2ZXJsZXNzIGNvbmZpZ3VyYXRpb24gZmlsZXMgKippbmNsdWRpbmcgZnVsbHkgZ2VuZXJhdGVkIHJlcXVlc3QvcmVzcG9uc2UgbW9kZWxzIGZyb20gVHlwZVNjcmlwdCoqLiAgCgpUaGlzIGlzIGFuIGV4dGVuc2lvbiBwbHVnaW4gdG8gdGhlIG1vc3QgZXhjZWxsZW50IFtAY29ucWEvc2VydmVybGVzcy1vcGVuYXBpLWRvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0Bjb25xYS9zZXJ2ZXJsZXNzLW9wZW5hcGktZG9jdW1lbnRhdGlvbikuICAKClBhcnRpbGx5IHdvcmtzIHdpdGggW1JlRG9jXShodHRwczovL2dpdGh1Yi5jb20vUmViaWxseS9SZURvYykgYXMgdGhleSdyZSBzdGlsbCB3b3JraW5nIG9uIE9wZW5BUEkgMy4xLjAgc3VwcG9ydC4gIApXb3JrcyB3ZWxsIHdpdGggW1N0b3BsaWdodC5pb10oaHR0cHM6Ly9zdG9wbGlnaHQuaW8vKSAgICAKCj4gKipXaHkgT3BlbkFQSSAzLjEuMCBhbmQgbm90IDMuMC4wPyoqICAKPiBCZWNhdXNlIHR5cGVzIGdlbmVyYXRlZCBmcm9tIFR5cGVTY3JpcHQgYXJlIGNvbXBsZXggYW5kIHJlcXVpcmUgYXQgbGVhc3QganNvbi1zY2hlbWEgZHJhZnQwNyB0byBiZSBkZXNjcmliZWQgcHJvcGVybHkuICAKPiBPcGVuQVBJIDMuMS4wIGlzIHRoZSBmaXJzdCB2ZXJzaW9uIHRvIGJlIGZ1bGx5IGNvbXBhdGlibGUgd2l0aCBKU09OIFNjaGVtYSAtIDMuMC4wIGlzIGp1c3QgYW4gImV4dGVuZGVkIHN1YnNldCIgb2YgZHJhZnQwNQoKLS0tCgotIFtVc2FnZV0oI3VzYWdlKQogICAgLSBbT3B0aW9uc10oI29wdGlvbnMpCiAgICAtIFtDb25maWd1cmF0aW9uXSgjY29uZmlndXJhdGlvbikKICAgICAgICAtIFtNb2RlbHNdKCNtb2RlbHMpCiAgICAgICAgLSBbRnVuY3Rpb25zXSgjZnVuY3Rpb25zKQogICAgICAgIC0gW2BxdWVyeVBhcmFtc2BdKCNxdWVyeXBhcmFtcykKICAgICAgICAtIFtgcGF0aFBhcmFtc2BdKCNwYXRocGFyYW1zKQogICAgICAgIC0gW2Bjb29raWVQYXJhbXNgXSgjY29va2llcGFyYW1zKQogICAgICAgIC0gW2ByZXF1ZXN0TW9kZWxzYF0oI3JlcXVlc3Rtb2RlbHMpCiAgICAgICAgLSBbYG1ldGhvZFJlc3BvbnNlc2BdKCNtZXRob2RyZXNwb25zZXMtYW5kLXJlc3BvbnNlbW9kZWxzKQogICAgICAgIC0gW2B3ZWJob29rc2BdKCN3ZWJob29rcykKLSBbSW5zdGFsbF0oI2luc3RhbGwpCgotLS0KCiMjIFVzYWdlCgpUaGlzIHBsdWdpbiByZXF1aXJlcyBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gdG8gdXNlLCBzZWUgdGhlICJbQ29uZmlndXJhdGlvbl0oI2NvbmZpZ3VyYXRpb24pIiBzZWN0aW9uIGZvciBob3cgdG8gY29uZmlndXJlIHRoZSBwbHVnaW4gdG8gZ2VuZXJhdGUgZG9jdW1lbnRhdGlvbi4KCkJlbG93IGFyZSB0aGUgY29tbWFuZGxpbmUgb3B0aW9ucyB0byBydW4gdGhlIGdlbmVyYXRvcjoKCmBgYGJhc2gKc2VydmVybGVzcyBvcGVuYXBpIGdlbmVyYXRlIFtvcHRpb25zXQpgYGAKCiMjIyBPcHRpb25zCgpgYGBiYXNoClBsdWdpbjogU2VydmVybGVzc09wZW5BUElEb2N1bWVudGF0aW9uCm9wZW5hcGkgZ2VuZXJhdGUgIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gR2VuZXJhdGUgT3BlbkFQSSB2MyBEb2N1bWVudGF0aW9uCiAgICAtLW91dHB1dCAvIC1vIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT3V0cHV0IGZpbGUgbG9jYXRpb24gW2RlZmF1bHQ6IG9wZW5hcGkueW1sfGpzb25dCiAgICAtLWZvcm1hdCAvIC1mIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gT3BlbkFQSSBmaWxlIGZvcm1hdCAoeW1sfGpzb24pIFtkZWZhdWx0OiB5bWxdCiAgICAtLWluZGVudCAvIC1pIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gRmlsZSBpbmRlbnRhdGlvbiBpbiBzcGFjZXMgW2RlZmF1bHQ6IDJdCiAgICAtLWhlbHAgLyAtaCAgIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gSGVscApgYGAKCiMjIyBDb25maWd1cmF0aW9uCgpUbyBjb25maWd1cmUgdGhpcyBwbHVnaW4gdG8gZ2VuZXJhdGUgdmFsaWQgT3BlbkFQSSBkb2N1bWVudGF0aW9uIHRoZXJlIGFyZSB0d28gcGxhY2VzIHlvdSdsbCBuZWVkIHRvIG1vZGlmeSBpbiB5b3VyIGBzZXJ2ZXJsZXNzLnltbGAgZmlsZSwgdGhlIGBjdXN0b21gIHZhcmlhYmxlcyBzZWN0aW9uIGFuZCB0aGUgYGh0dHBgIGV2ZW50IHNlY3Rpb24gZm9yIGVhY2ggZ2l2ZW4gZnVuY3Rpb24gaW4geW91ciBzZXJ2aWNlLgoKVGhpcyBwbHVnaW4gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBzYW1lIGRvY3VtZW50YXRpb24gY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgaW4gW0Bjb25xYS9zZXJ2ZXJsZXNzLW9wZW5hcGktZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQGNvbnFhL3NlcnZlcmxlc3Mtb3BlbmFwaS1kb2N1bWVudGF0aW9uKSBhbmQgbmVlZHMgdG8gYmUgcnVuIGJlc2lkZSBpdC4KClRoZSBgY3VzdG9tYCBzZWN0aW9uIG9mIHlvdXIgYHNlcnZlcmxlc3MueW1sYCBjYW4gYmUgY29uZmlndXJlZCBhcyBiZWxvdzoKCmBgYHltbApjdXN0b206CiAgZG9jdW1lbnRhdGlvbjoKICAgIHZlcnNpb246ICcxJwogICAgdGl0bGU6ICdNeSBBUEknCiAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgbXkgQVBJJwogICAgIyBodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMi5tZCNzZWN1cml0eVNjaGVtZU9iamVjdAogICAgc2VjdXJpdHlTY2hlbWVzOiB7fQogICAgIyBodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMi5tZCNzZWN1cml0eS1yZXF1aXJlbWVudC1vYmplY3QKICAgIHNlY3VyaXR5OiB7fQogICAgbW9kZWxzOiB7fQogICAgdHlwZXNjcmlwdEFwaVBhdGg6ICdhcGkuZC50cycKICAgIHRzY29uZmlnUGF0aDogJ3RzY29uZmlnLmpzb24nCmBgYAoKVGhlc2UgY29uZmlndXJhdGlvbnMgY2FuIGJlIHF1aXRlIHZlcmJvc2U7IHlvdSBjYW4gc2VwYXJhdGUgaXQgb3V0IGludG8gaXQncyBvd24gZmlsZSwgc3VjaCBhcyBgc2VydmVybGVzcy5kb2MueW1sYCBhcyBiZWxvdzoKCmBgYHltbApjdXN0b206CiAgZG9jdW1lbnRhdGlvbjogJHtmaWxlKHNlcnZlcmxlc3MuZG9jLnltbCk6ZG9jdW1lbnRhdGlvbn0KCmZ1bmN0aW9uczoKICBteUZ1bmM6CiAgICBldmVudHM6CiAgICAgIC0gaHR0cDoKICAgICAgICAgIHBhdGg6IGdldFN0dWZmCiAgICAgICAgICBtZXRob2Q6IGdldAogICAgICAgICAgZG9jdW1lbnRhdGlvbjogJHtmaWxlKHNlcnZlcmxlc3MuZG9jLnltbCk6ZW5kcG9pbnRzLm15RnVuY30KYGBgCgpGb3IgbW9yZSBpbmZvIG9uIGBzZXJ2ZXJsZXNzLnltbGAgc3ludGF4LCBzZWUgdGhlaXIgZG9jcy4KCiMjIyMgTW9kZWxzCgpUaGVzZSB3aWxsIGJlIGdlbmVyYXRlZCBmb3IgeW91IGZyb20gVHlwZVNjcmlwdC4gIApGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHNwZWNpZnkgdGhlc2UgeW91cnNlbGYsIHNlZSBbTW9kZWxzXShodHRwczovL2dpdGh1Yi5jb20vY29ucWEvc2VydmVybGVzcy1vcGVuYXBpLWRvY3VtZW50YXRpb24jbW9kZWxzKSBvbiB0aGUgYmFzZSBwbHVnaW4gcGFnZS4gICAgCgojIyMjIEZ1bmN0aW9ucwoKVG8gZGVmaW5lIHRoZSBkb2N1bWVudGF0aW9uIGZvciBhIGdpdmVuIGZ1bmN0aW9uIGV2ZW50LCB5b3UgbmVlZCB0byBjcmVhdGUgYSBgZG9jdW1lbnRhdGlvbmAgYXR0cmlidXRlIGZvciB5b3VyIGh0dHAgZXZlbnQgaW4geW91ciBgc2VydmVybGVzcy55bWxgIGZpbGUuICAKClRoaXMgcGx1Z2luIHdpbGwgYXNzZXJ0IHRoZSBgZG9jdW1lbnRhdGlvbmAgYXR0cmlidXRlIGlzIHNldCBvbiBldmVyeSBub24gYHByaXZhdGU6IHRydWVgIGZ1bmN0aW9uIHdpdGggYW4gYGh0dHBgIGV2ZW50LiAgCgpJZiB5b3Ugd2lzaCBhIGZ1bmN0aW9uIHRvIG5vdCBiZSBsaXN0ZWQgb24geW91ciBkb2N1bWVudGF0aW9uLCB5b3UgbXVzdCBleHBsaWNpdGx5IHNldCBgZG9jdW1lbnRhdGlvbjogfmAgdG8gZGlzYWJsZSBkb2NzIG9uIHRoYXQgZnVuY3Rpb24uICAgIAoKVGhlIGBkb2N1bWVudGF0aW9uYCBzZWN0aW9uIG9mIHRoZSBldmVudCBjb25maWd1cmF0aW9uIGNhbiBjb250YWluIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKCiogYHN1bW1hcnlgOiBhIHNob3J0IGRlc2NyaXB0aW9uIG9mIHRoZSBtZXRob2QKKiBgZGVzY3JpcHRpb25gOiBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBtZXRob2QKKiBgdGFnc2A6IGFuIGFycmF5IG9mIHRhZ3MgZm9yIHRoaXMgZXZlbnQKKiBgZGVwcmVjYXRlZGA6IGJvb2xlYW4gaW5kaWNhdG9yIHRoYXQgaW5kaWNhdGVzIGNsaWVudHMgc2hvdWxkIG1pZ3JhdGUgYXdheSBmcm9tIHRoaXMgZnVuY3Rpb24KKiBgcmVxdWVzdEJvZHlgOiBjb250YWlucyBkZXNjcmlwdGlvbiBvZiB0aGUgcmVxdWVzdAogICAgKiBgZGVzY3JpcHRpb25gOiBhIGRlc2NyaXB0aW9uIG9mIHRoZSByZXF1ZXN0IGJvZHkKKiBgcmVxdWVzdE1vZGVsc2A6IGEgbGlzdCBvZiBtb2RlbHMgdG8gZGVzY3JpYmUgdGhlIHJlcXVlc3QgYm9kaWVzIChzZWUgW3JlcXVlc3RNb2RlbHNdKCNyZXF1ZXN0bW9kZWxzKSBiZWxvdykgLSAqKnRoZXNlIHdpbGwgYmUgYXV0b2dlbmVyYXRlZCBmb3IgeW91IGZyb20gVHlwZVNjcmlwdCoqCiogYHF1ZXJ5UGFyYW1zYDogYSBsaXN0IG9mIHF1ZXJ5IHBhcmFtZXRlcnMgKHNlZSBbcXVlcnlQYXJhbXNdKCNxdWVyeXBhcmFtcykgYmVsb3cpIC0gKip0aGVzZSBfY2FuXyBiZSBhdXRvZ2VuZXJhdGVkIGZvciB5b3UgZnJvbSBUeXBlU2NyaXB0KioKKiBgcGF0aFBhcmFtc2A6IGEgbGlzdCBvZiBwYXRoIHBhcmFtZXRlcnMgKHNlZSBbcGF0aFBhcmFtc10oI3BhdGhwYXJhbXMpIGJlbG93KSAtICoqdGhlc2UgX2Nhbl8gYmUgYXV0b2dlbmVyYXRlZCBmb3IgeW91IGZyb20gVHlwZVNjcmlwdCoqCiogYGNvb2tpZVBhcmFtc2A6IGEgbGlzdCBvZiBjb29raWUgcGFyYW1ldGVycyAoc2VlIFtjb29raWVQYXJhbXNdKCNjb29raWVwYXJhbXMpIGJlbG93KQoqIGBtZXRob2RSZXNwb25zZXNgOiBhbiBhcnJheSBvZiByZXNwb25zZSBtb2RlbHMgYW5kIGFwcGxpY2FibGUgc3RhdHVzIGNvZGVzIChzZWUgW21ldGhvZFJlc3BvbnNlc10oI21ldGhvZHJlc3BvbnNlcy1hbmQtcmVzcG9uc2Vtb2RlbHMpKSAtICoqdGhlc2UgX3dpbGxfIGJlIGF1dG9nZW5lcmF0ZWQgZm9yIHlvdSBmcm9tIFR5cGVTY3JpcHQqKgoqIGB3ZWJob29rc2A6IGFuIG9iamVjdCB3aXRoIGFsbCB0aGUgd2ViaG9va3Mgd2l0aCBkZXNjcmlwdGlvbnMgKHNlZSBbd2ViaG9va3NdKCN3ZWJob29rcykpIC0gKip0aGVzZSBfd2lsbF8gYmUgYXV0b2dlbmVyYXRlZCBmb3IgeW91IGZyb20gVHlwZVNjcmlwdCoqCgpgYGB5bWwKZnVuY3Rpb25zOgogIGNyZWF0ZVVzZXI6CiAgICBoYW5kbGVyOiAiaGFuZGxlci5jcmVhdGUiCiAgICBldmVudHM6CiAgICAgIC0gaHR0cDoKICAgICAgICBwYXRoOiAiY3JlYXRlIgogICAgICAgIG1ldGhvZDogInBvc3QiCiAgICAgICAgZG9jdW1lbnRhdGlvbjoKICAgICAgICAgIHN1bW1hcnk6ICJDcmVhdGUgVXNlciIKICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ3JlYXRlcyBhIHVzZXIgYW5kIHRoZW4gc2VuZHMgYSBnZW5lcmF0ZWQgcGFzc3dvcmQgZW1haWwiCiAgICAgICAgICByZXF1ZXN0Qm9keToKICAgICAgICAgICAgZGVzY3JpcHRpb246ICJBIHVzZXIgaW5mb3JtYXRpb24gb2JqZWN0IgogICAgICAgICAgcmVxdWVzdE1vZGVsczoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjogIlB1dERvY3VtZW50UmVxdWVzdCIKICAgICAgICAgIHBhdGhQYXJhbXM6CiAgICAgICAgICAgIC0gbmFtZTogInVzZXJuYW1lIgogICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiVGhlIHVzZXJuYW1lIGZvciBhIHVzZXIgdG8gY3JlYXRlIgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6ICJzdHJpbmciCiAgICAgICAgICAgICAgICBwYXR0ZXJuOiAiXlstYS16MC05X10rJCIKICAgICAgICAgIHF1ZXJ5UGFyYW1zOgogICAgICAgICAgICAtIG5hbWU6ICJtZW1iZXJzaGlwVHlwZSIKICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogIlRoZSB1c2VyJ3MgTWVtYmVyc2hpcCBUeXBlIgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6ICJzdHJpbmciCiAgICAgICAgICAgICAgICBlbnVtOgogICAgICAgICAgICAgICAgICAtICJwcmVtaXVtIgogICAgICAgICAgICAgICAgICAtICJzdGFuZGFyZCIKICAgICAgICAgIGNvb2tpZVBhcmFtczoKICAgICAgICAgICAgLSBuYW1lOiAiU2Vzc2lvbklkIgogICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQSBTZXNzaW9uIElEIHZhcmlhYmxlIgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6ICJzdHJpbmciCiAgICAgICAgICBtZXRob2RSZXNwb25zZXM6CiAgICAgICAgICAgIC0gc3RhdHVzQ29kZTogMjAxCiAgICAgICAgICAgICAgcmVzcG9uc2VCb2R5OgogICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJBIHVzZXIgb2JqZWN0IGFsb25nIHdpdGggZ2VuZXJhdGVkIEFQSSBLZXlzIgogICAgICAgICAgICAgIHJlc3BvbnNlTW9kZWxzOgogICAgICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjogIlB1dERvY3VtZW50UmVzcG9uc2UiCiAgICAgICAgICAgIC0gc3RhdHVzQ29kZTogNTAwCiAgICAgICAgICAgICAgcmVzcG9uc2VCb2R5OgogICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJBbiBlcnJvciBtZXNzYWdlIHdoZW4gY3JlYXRpbmcgYSBuZXcgdXNlciIKICAgICAgICAgICAgICByZXNwb25zZU1vZGVsczoKICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246ICJFcnJvclJlc3BvbnNlIgpgYGAKCiMjIyMgYHF1ZXJ5UGFyYW1zYAoKUXVlcnkgcGFyYW1ldGVycyBjYW4gYmUgZGVzY3JpYmVkIGFzIGZvbGxvdzoKCiogYG5hbWVgOiB0aGUgbmFtZSBvZiB0aGUgcXVlcnkgdmFyaWFibGUKKiBgZGVzY3JpcHRpb25gOiBhIGRlc2NyaXB0aW9uIG9mIHRoZSBxdWVyeSB2YXJpYWJsZQoqIGByZXF1aXJlZGA6IHdoZXRoZXIgdGhlIHF1ZXJ5IHBhcmFtZXRlciBpcyBtYW5kYXRvcnkgKGJvb2xlYW4pCiogYHNjaGVtYWA6IEpTT04gc2NoZW1hIChpbmxpbmUgb3IgZmlsZSkgKipvciBhIHN0cmluZyByZXByZXNlbnRpbmcgZnVsbHkgcXVhbGlmaWVkIFR5cGVTY3JpcHQgdHlwZSB0byBnZW5lcmF0ZSBzY2hlbWEgZnJvbSoqCgo+IE5vdGU6IElmIHNjaGVtYSBpcyBub3Qgc3BlY2lmaWVkIG9uZSB3aWxsIGJlIGF1dG9nZW5lcmF0ZWQgZm9yIHlvdSBhcyBgeyAidHlwZSI6ICJzdHJpbmciIH1gIGlmIHlvdSBzcGVjaWZ5IGBxdWVyeXN0cmluZ3NgIGluIHlvdXIgW1NlcnZlcmxlc3MgcmVxdWVzdCBwYXJhbWV0ZXJzXShodHRwczovL3d3dy5zZXJ2ZXJsZXNzLmNvbS9mcmFtZXdvcmsvZG9jcy9wcm92aWRlcnMvYXdzL2V2ZW50cy9hcGlnYXRld2F5I3JlcXVlc3QtcGFyYW1ldGVycykKCiMjIyMjIEV4cGxpY2l0IHNjaGVtYSBleGFtcGxlCmBgYHltbApxdWVyeVBhcmFtczoKICAtIG5hbWU6ICJmaWx0ZXIiCiAgICBkZXNjcmlwdGlvbjogIlRoZSBmaWx0ZXIgcGFyYW1ldGVyIgogICAgcmVxdWlyZWQ6IHRydWUKICAgIHNjaGVtYToKICAgICAgdHlwZTogInN0cmluZyIKYGBgCgojIyMjIyBBdXRvZ2VuZXJhdGVkIFNjaGVtYSBmcm9tIFNlcnZlcmxlc3MgY29uZmlnCmBgYHltbApmdW5jdGlvbnM6CiAgZm9vOgogICAgZXZlbnRzOgogICAgICAtIGh0dHA6CiAgICAgICAgICByZXF1ZXN0OgogICAgICAgICAgICBwYXJhbWV0ZXJzOgogICAgICAgICAgICAgIHF1ZXJ5c3RyaW5nczoKICAgICAgICAgICAgICAgIGZpbHRlcjogdHJ1ZQoKIyBUaGlzIHdpbGwgYmUgYXV0b2dlbmVyYXRlZCBmb3IgeW91IGJhc2VkIG9uIHlvdXIgU2VydmVybGVzcyBjb25maWcgYWJvdmUhIE5vIG5lZWQgdG8gd3JpdGUgaXQgeW91cnNlbGY6ICAgICAgICAgICAgICAgIAojIHF1ZXJ5UGFyYW1zOgojICAtIG5hbWU6ICJmaWx0ZXIiCiMgICAgcmVxdWlyZWQ6IHRydWUgCiMgICAgc2NoZW1hOgojICAgICAgdHlwZTogInN0cmluZyIKYGBgCgojIyMjIyBHZW5lcmF0ZWQgU2NoZW1hIGZyb20gVHlwZVNjcmlwdCB0eXBlCmBgYHR5cGVzY3JpcHQKZXhwb3J0IG5hbWVzcGFjZSBNeUFwaSB7CiAgICBleHBvcnQgbmFtZXNwYWNlIEZvb0JhciB7CiAgICAgICAgZXhwb3J0IG5hbWVzcGFjZSBSZXF1ZXN0IHsKICAgICAgICAgICAgZXhwb3J0IG5hbWVzcGFjZSBRdWVyeVBhcmFtcyB7CiAgICAgICAgICAgICAgICAvLyBZb3UgbWF5IHVzZSBKU2RvYyB0byBzZXQgSlNPTiBTY2hlbWEgYXR0cmlidXRlcyEgCiAgICAgICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBmaWx0ZXIgcGFyYW1ldGVyICoqLwogICAgICAgICAgICAgICAgZXhwb3J0IHR5cGUgRmlsdGVyID0gJ2hlbGxvJyB8ICd3b3JsZCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KYGBgCgpgYGB5bWwKZnVuY3Rpb25zOgogIGZvb0JhcjoKICAgIGV2ZW50czoKICAgICAgLSBodHRwOgogICAgICAgICAgZG9jdW1lbnRhdGlvbjoKICAgICAgICAgICAgcXVlcnlQYXJhbXM6CiAgICAgICAgICAgICAgLSBuYW1lOiAiZmlsdGVyIgogICAgICAgICAgICAgICAgc2NoZW1hOiAiTXlBcGkuRm9vQmFyLlJlcXVlc3QuUXVlcnlQYXJhbXMuRmlsdGVyIgogICAgICAgICAgcmVxdWVzdDoKICAgICAgICAgICAgcGFyYW1ldGVyczoKICAgICAgICAgICAgICBxdWVyeXN0cmluZ3M6CiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZhbHNlCgojIFRoaXMgd2lsbCBiZSBhdXRvZ2VuZXJhdGVkIGZvciB5b3UgYmFzZWQgZnJvbSBUeXBlU2NyaXB0ISBObyBuZWVkIHRvIHdyaXRlIGl0IHlvdXJzZWxmICAgICAgICAgICAgICAgIAojIHF1ZXJ5UGFyYW1zOgojICAtIG5hbWU6ICJmaWx0ZXIiCiMgICAgcmVxdWlyZWQ6IGZhbHNlCiMgICAgZGVzY3JpcHRpb246ICJUaGUgZmlsdGVyIHBhcmFtZXRlciIgIAojICAgIHNjaGVtYToKIyAgICAgIHR5cGU6IHN0cmluZwojICAgICAgZW51bToKIyAgICAgICAgLSBoZWxsbwojICAgICAgICAtIHdvcmxkCmBgYAoKIyMjIyBgcGF0aFBhcmFtc2AKClBhdGggcGFyYW1ldGVycyBjYW4gYmUgZGVzY3JpYmVkIGFzIGZvbGxvdzoKCiogYG5hbWVgOiB0aGUgbmFtZSBvZiB0aGUgcXVlcnkgdmFyaWFibGUKKiBgZGVzY3JpcHRpb25gOiBhIGRlc2NyaXB0aW9uIG9mIHRoZSBxdWVyeSB2YXJpYWJsZQoqIGBzY2hlbWFgOiBKU09OIHNjaGVtYSAoaW5saW5lIG9yIGZpbGUpICoqb3IgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGZ1bGx5IHF1YWxpZmllZCBUeXBlU2NyaXB0IHR5cGUgdG8gZ2VuZXJhdGUgc2NoZW1hIGZyb20qKgoKIyMjIyMgRXhwbGljaXQgc2NoZW1hIGV4YW1wbGUKCmBgYHltbApwYXRoUGFyYW1zOgogIC0gbmFtZTogInVzZXJuYW1lSWQiCiAgICBkZXNjcmlwdGlvbjogIlRoZSB1c2VybmFtZUlkIHBhcmFtZXRlciIKICAgIHNjaGVtYToKICAgICAgdHlwZTogInN0cmluZyIKYGBgCgojIyMjIyBBdXRvZ2VuZXJhdGVkIFNjaGVtYSBmcm9tIFNlcnZlcmxlc3MgY29uZmlnCmBgYHltbApmdW5jdGlvbnM6CiAgZm9vOgogICAgZXZlbnRzOgogICAgICAtIGh0dHA6CiAgICAgICAgICByZXF1ZXN0OgogICAgICAgICAgICBwYXJhbWV0ZXJzOgogICAgICAgICAgICAgIHBhaHRzOgogICAgICAgICAgICAgICAgdXNlcm5hbWVJZDogdHJ1ZQoKIyBUaGlzIHdpbGwgYmUgYXV0b2dlbmVyYXRlZCBmb3IgeW91IGJhc2VkIG9uIHlvdXIgU2VydmVybGVzcyBjb25maWcgYWJvdmUhIE5vIG5lZWQgdG8gd3JpdGUgaXQgeW91cnNlbGY6ICAgICAgICAgICAgICAgIAojIHF1ZXJ5UGFyYW1zOgojICAtIG5hbWU6ICJmaWx0ZXIiCiMgICAgcmVxdWlyZWQ6IHRydWUgCiMgICAgc2NoZW1hOgojICAgICAgdHlwZTogInN0cmluZyIKYGBgCgojIyMjIyBHZW5lcmF0ZWQgU2NoZW1hIGZyb20gVHlwZVNjcmlwdCB0eXBlCmBgYHR5cGVzY3JpcHQKZXhwb3J0IG5hbWVzcGFjZSBNeUFwaSB7CiAgICBleHBvcnQgbmFtZXNwYWNlIEZvb0JhciB7CiAgICAgICAgZXhwb3J0IG5hbWVzcGFjZSBSZXF1ZXN0IHsKICAgICAgICAgICAgZXhwb3J0IG5hbWVzcGFjZSBQYXRoUGFyYW1zIHsKICAgICAgICAgICAgICAgIC8vIFlvdSBtYXkgdXNlIEpTZG9jIHRvIHNldCBKU09OIFNjaGVtYSBhdHRyaWJ1dGVzISAKICAgICAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHVzZXJuYW1lSWQgcGFyYW1ldGVyICoqLwogICAgICAgICAgICAgICAgZXhwb3J0IHR5cGUgVXNlcm5hbWVJZCA9IHN0cmluZzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpgYGAKCmBgYHltbApmdW5jdGlvbnM6CiAgZm9vQmFyOgogICAgZXZlbnRzOgogICAgICAtIGh0dHA6CiAgICAgICAgICBkb2N1bWVudGF0aW9uOgogICAgICAgICAgICBwYXRoczoKICAgICAgICAgICAgICAtIG5hbWU6ICJ1c2VybmFtZUlkIgogICAgICAgICAgICAgICAgc2NoZW1hOiAiTXlBcGkuRm9vQmFyLlJlcXVlc3QuUXVlcnlQYXJhbXMuRmlsdGVyIgogICAgICAgICAgcmVxdWVzdDoKICAgICAgICAgICAgcGFyYW1ldGVyczoKICAgICAgICAgICAgICBwYXRoczoKICAgICAgICAgICAgICAgIHVzZXJuYW1lSWQ6IHRydWUKCiMgVGhpcyB3aWxsIGJlIGF1dG9nZW5lcmF0ZWQgZm9yIHlvdSBiYXNlZCBmcm9tIFR5cGVTY3JpcHQhIE5vIG5lZWQgdG8gd3JpdGUgaXQgeW91cnNlbGYgICAgICAgICAgICAgICAgCiMgcXVlcnlQYXJhbXM6CiMgIC0gbmFtZTogImZpbHRlciIKIyAgICByZXF1aXJlZDogdHJ1ZSAKIyAgICBkZXNjcmlwdGlvbjogIlRoZSB1c2VybmFtZUlkIHBhcmFtZXRlciIKIyAgICBzY2hlbWE6CiMgICAgICB0eXBlOiBzdHJpbmcKYGBgCgojIyMjIGBjb29raWVQYXJhbXNgCgpUeXBlU2NyaXB0IGdlbmVyYXRpb24gZm9yIHRoZXNlIGlzbid0IHN1cHBvcnRlZC4gIApGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHNwZWNpZnkgdGhlc2UgeW91cnNlbGYsIHNlZSBbQ29va2llIFBhcmFtZXRlcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9jb25xYS9zZXJ2ZXJsZXNzLW9wZW5hcGktZG9jdW1lbnRhdGlvbiNjb29raWVwYXJhbXMpIG9uIHRoZSBiYXNlIHBsdWdpbiBwYWdlLgoKIyMjIyBgcmVxdWVzdE1vZGVsc2AKClRoZSBgcmVxdWVzdE1vZGVsc2AgcHJvcGVydHkgYWxsb3dzIHlvdSB0byBkZWZpbmUgbW9kZWxzIGZvciB0aGUgSFRUUCBSZXF1ZXN0IG9mIHRoZSBmdW5jdGlvbiBldmVudC4gIAoKVGhlc2Ugd2lsbCBiZSBhdXRvZ2VuZXJhdGVkIGZvciB5b3UgZnJvbSBUeXBlU2NyaXB0ICoqYnkgY29udmVudGlvbioqLiAgClRoZSBwbHVnaW4gd2lsbCBhdXRvZ2VuZXJhdGUgYSByZXF1ZXN0IG1vZGVsIGZvciBldmVyeSBgcHV0YCwgYHBhdGNoYCBvciBgcG9zdGAgbWV0aG9kIGJhc2VkIG9uIHRoZSBUeXBlU2NyaXB0IHR5cGUgZm91bmQgYnkgY29udmVudGlvbi4gICAgClRoZSBsb29rIHN0cmF0ZWd5IHdpbGwgYmUgYnk6ICAKYCR7c2VydmVybGVzcy5jdXN0b20uZG9jdW1lbnRhdGlvbi5hcGlOYW1lc3BhY2V9LiR7dXBwZXItY2FzZS1uYW1lLW9mLWZ1bmN0aW9ufS5SZXF1ZXN0LkJvZHlgLiBOb3RlIHRoYXQgYW55IHVuZGVyc2NvcmVzIChgX2ApIG9yIGh5cGhlbnMgKGAtYCkgaW4gZnVuY3Rpb24gbmFtZXMgd2lsbCBiZSBleGNsdWRlZCBpbiB0aGUgcmVzb2x2ZWQgdHlwZSAoZS5nLiB0aGUgU2VydmVybGVzcyBmdW5jdGlvbiBgbXlfZ2V0LWZ1bmN0aW9uYCB3aWxsIHJlc29sdmUgdG8gYE15R2V0RnVuY3Rpb25gIGluIFR5cGVzY3JpcHQpICAKCkZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uOiAgCmBgYHlhbWwKZnVuY3Rpb25zOgogIG15RnVuY3Rpb246IAogICAgZXZlbnRzOgogICAgICAtIGh0dHA6CiAgICAgICAgZG9jdW1lbnRhdGlvbjoKICAgICAgICAgIHN1bW1hcnk6ICJEb2VzIGEgbG90IGZvciB5b3UiCmBgYAoKV2lsbCBsb29rIGZvciB0aGUgcmVzb2x2ZSB0eXBlIGFzIGl0cyByZXF1ZXN0IG1vZGVsOiAgCmBgYHR5cGVzY3JpcHQKLy8gYXBpLmQudHMKCmV4cG9ydCBuYW1lc3BhY2UgTXlBcGkgewogICAgZXhwb3J0IG5hbWVzcGFjZSBNeUZ1bmN0aW9uIHsKICAgICAgICBleHBvcnQgbmFtZXNwYWNlIFJlcXVlc3QgewogICAgICAgICAgICBleHBvcnQgdHlwZSBCb2R5ID0gewogICAgICAgICAgICAgICAgaWQ6IHN0cmluZywKICAgICAgICAgICAgICAgIG5hbWU6IHN0cmluZywKICAgICAgICAgICAgICAgIGFnZTogbnVtYmVyCiAgICAgICAgICAgICAgICAvLyAuLi4KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpgYGAKCiMjIyMgYG1ldGhvZFJlc3BvbnNlc2AgYW5kIGByZXNwb25zZU1vZGVsc2AKClRoZXNlIHdpbGwgYmUgYXV0b2dlbmVyYXRlZCBmb3IgeW91IGZyb20gVHlwZVNjcmlwdCAqKmJ5IGNvbnZlbnRpb24qKi4gIApUaGUgcGx1Z2luIHdpbGwgYXV0b2dlbmVyYXRlIGEgcmVzcG9uc2UgbW9kZWwgZm9yIGV2ZXJ5IGBwdXRgLCBgcGF0Y2hgLCBgcG9zdGAgYW5kIGBnZXRgIG1ldGhvZCBiYXNlZCBvbiB0aGUgVHlwZVNjcmlwdCB0eXBlIGZvdW5kIGJ5IGNvbnZlbnRpb24uICAKVGhlIHJlc3BvbnNlIHdpbGwgdXNlIHRoZSBnZW5lcmF0ZWQgdHlwZSBhcyBib2R5LCBhbmQgd2lsbCBoYXZlIGEgMjAwIHN0YXR1cyBjb2RlLiAgCmBkZWxldGVgIG1ldGhvZCB3aWxsIGJlIGdlbmVyYXRlZCB3aXRoIGFuIGVtcHR5IGJvZHkgYW5kIDIwNCBzdGF0dXMgY29kZS4gIApPbmx5IGBhcHBsaWNhdGlvbi9qc29uYCByZXNwb25zZSB0eXBlcyBhcmUgc3VwcG9ydGVkLiAgCgpUaGUgbG9vayBzdHJhdGVneSB3aWxsIGJlIGJ5OiAgCmAke3NlcnZlcmxlc3MuY3VzdG9tLmRvY3VtZW50YXRpb24uYXBpTmFtZXNwYWNlfS4ke3VwcGVyLWNhc2UtbmFtZS1vZi1mdW5jdGlvbn0uUmVzcG9uc2VgCgpGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbjoKYGBgeWFtbApmdW5jdGlvbnM6CiAgbXlGdW5jdGlvbjogCiAgICBldmVudHM6CiAgICAgIC0gaHR0cDoKICAgICAgICBkb2N1bWVudGF0aW9uOgogICAgICAgICAgc3VtbWFyeTogIkRvZXMgYSBsb3QgZm9yIHlvdSIKYGBgCgpXaWxsIGxvb2sgZm9yIHRoZSByZXNvbHZlIHR5cGUgYXMgaXRzIHJlcXVlc3QgbW9kZWw6CmBgYHR5cGVzY3JpcHQKLy8gYXBpLmQudHMKCmV4cG9ydCBuYW1lc3BhY2UgTXlBcGkgewogIGV4cG9ydCBuYW1lc3BhY2UgTXlGdW5jdGlvbiB7CiAgICBleHBvcnQgdHlwZSBSZXNwb25zZSA9IHsKICAgICAgaWQ6IHN0cmluZywKICAgICAgbmFtZTogc3RyaW5nLAogICAgICBhZ2U6IG51bWJlcgogICAgICAvLyAuLi4KICAgIH0KICB9Cn0KYGBgCgojIyMjIyBgcmVzcG9uc2VIZWFkZXJzYCBhbmQgYHJlcXVlc3RIZWFkZXJzYAoKVGhlIGByZXNwb25zZUhlYWRlcnMvcmVxdWVzdEhlYWRlcnNgIHNlY3Rpb24gb2YgdGhlIGNvbmZpZ3VyYXRpb24gYWxsb3dzIHlvdSB0byBkZWZpbmUgdGhlIEhUVFAgaGVhZGVycyBmb3IgdGhlIGZ1bmN0aW9uIGV2ZW50LiAgICAKVHlwZVNjcmlwdCBnZW5lcmF0aW9uIGZvciB0aGVzZSBpc24ndCBzdXBwb3J0ZWQuICAgIApGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHNwZWNpZnkgdGhlc2UgeW91cnNlbGYsIHNlZSBbUmVzcG9uc2UgSGVhZGVyc10oaHR0cHM6Ly9naXRodWIuY29tL2NvbnFhL3NlcnZlcmxlc3Mtb3BlbmFwaS1kb2N1bWVudGF0aW9uI3Jlc3BvbnNlaGVhZGVycy1hbmQtcmVxdWVzdGhlYWRlcnMpIG9uIHRoZSBiYXNlIHBsdWdpbiBwYWdlLiAgCgojIyMjIyBgY3VzdG9tVGFnc2AKCkluIHNvbWUgY2FzZXMgd2hlcmUgYSBzaW5nbGUgc2VydmVybGVzcy55bWwgY29udGFpbnMgZW5kcG9pbnRzIHdoaWNoIGNhbiBiZSBncm91cGVkIGRpZmZlcmVudGx5LAp5b3UgY2FuIGRlZmluZSBjdXN0b20gdGFncyBhcyBmb2xsb3dpbmc6CgpgYGB5YW1sCmN1c3RvbToKICBkb2N1bWVudGF0aW9uOgogICAgdGl0bGU6ICdQcm9qZWN0JwogICAgZGVzY3JpcHRpb246IER1bW15RGVzY3JpcHRpb24KCiAgICBhcGlOYW1lc3BhY2U6IFByb2plY3RBcGkKICAgIHRhZ3M6CiAgICAgICAtIG5hbWU6IEZvb0JhclRpdGxlCiAgICAgICAgIGRlc2NyaXB0aW9uOiBGb29CYXJEZXNjcmlwdGlvbgogICAgICAgLSBuYW1lOiBCYXpUaXRsZQogICAgICAgICBkZXNjcmlwdGlvbjogQmF6RGVzY3JpcHRpb24KYGBgCgpgYGB5YW1sCmZ1bmN0aW9uczoKICBjcmVhdGVGdW5jOgogICAgaGFuZGxlcjogaGFuZGxlci5jcmVhdGUKICAgIGV2ZW50czoKICAgICAgLSBodHRwOgogICAgICAgICAgZG9jdW1lbnRhdGlvbjoKICAgICAgICAgICAgc3VtbWFyeTogIkNyZWF0ZSBGdW5jdGlvbiIKICAgICAgICAgICAgdGFnOiBGb29CYXJUaXRsZQpgYGAKCkVuZHBvaW50cyB0aGF0IGFyZSBub3QgYXR0YWNoZWQgdG8gYSBjdXN0b20gdGFnLCBhcmUgc3RpbGwgYXR0YWNoZWQgdG8gdGhlIHRpdGxlICggd2hpY2ggaXMgdGhlIGRlZmF1bHQgdGFnICkuCgojIyMjIGB3ZWJob29rc2AKT3BlbkFQSSBoYXZlIGFuIG9wdGlvbiB0byBhZGQgeW91ciBhcHBsaWNhdGlvbiBgd2ViaG9va3NgLCB3aGlsZSB0aGlzIGZlYXR1cmUgaXNuJ3Qgc3VwcG9ydGVkIGJ5IGBzZXJ2ZXJsZXNzYC4KCkZvciB0aG9zZSB0aGUgcGx1Z2luIHdpbGwgbG9vayBmb3IgdGhlIHdlYmhvb2tzIHVuZGVyIGBjdXN0b20uZG9jdW1lbnRhdGlvbi53ZWJob29rc2AuCgpGb3IgZXhhbXBsZQoKYGBgeWFtbApjdXN0b206CiAgZG9jdW1lbnRhdGlvbjoKICAgIGFwaU5hbWVzcGFjZTogTXlBcGkKICAgIHdlYmhvb2tzOgogICAgICBXZWJob29rTmFtZToKICAgICAgICBwb3N0OgogICAgICAgICAgcmVxdWVzdEJvZHk6CiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB8CiAgICAgICAgICAgICAgVGhpcyBpcyBhIHJlcXVlc3QgYm9keSBkZXNjcmlwdGlvbgogICAgICAgICAgcmVzcG9uc2VzOgogICAgICAgICAgICAyMDA6CiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHwKICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBleHBlY3RlZCByZXNwb25zZSBkZXNjcmlwdGlvbgpgYGAKCnRoaXMgd2lsbCBnZW5lcmF0ZSB0aGUgbmV4dCBPcGVuQVBJIGZpbGUKCmBgYHlhbWwKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgTXlBcGkuV2ViaG9va3MuV2ViaG9va05hbWU6CiAgICAgIHR5cGU6IG9iamVjdAp3ZWJob29rczoKICBXZWJob29rTmFtZToKICAgIHBvc3Q6CiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgIGRlc2NyaXB0aW9uOiB8CiAgICAgICAgICBUaGlzIGlzIGEgcmVxdWVzdCBib2R5IGRlc2NyaXB0aW9uCiAgICAgICAgY29udGVudDoKICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvTXlBcGkuV2ViaG9va3MuV2ViaG9va05hbWUnCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiB8CiAgICAgICAgICAgIFRoaXMgaXMgYSBleHBlY3RlZCByZXNwb25zZSBkZXNjcmlwdGlvbgpgYGAKCldpdGggdGhlIG5leHQgYGFwaS5kLnRzYDoKCmBgYHR5cGVzY3JpcHQKZXhwb3J0IG5hbWVzcGFjZSBNeUFwaSB7CiAgZXhwb3J0IG5hbWVzcGFjZSBXZWJob29rcyB7CiAgICBleHBvcnQgdHlwZSBXZWJob29rTmFtZSA9IHsKICAgICAgaWQ6IHN0cmluZywKICAgICAgbmFtZTogc3RyaW5nLAogICAgICBhZ2U6IG51bWJlcgogICAgICAvLyAuLi4KICAgIH0KICB9Cn0KYGBgCgpZb3UgY2FuIGFsc28gYWRkIFdlYmhvb2sgdGFncyBieSB1c2luZyBgd2ViaG9va1RhZ3NgIGtleXdvcmQgaXQgd2lsbCBhdXRvIGFkZCB0YWcgdG8gYWxsIHdlYmhvb2tzCmBgYHlhbWwKY3VzdG9tOgogIGRvY3VtZW50YXRpb246CiAgICBhcGlOYW1lc3BhY2U6IE15QXBpCiAgICB3ZWJob29rVGFnczoKICAgICAgLSBuYW1lOiBQcm9qZWN0V2ViaG9va3MKICAgICAgICBkZXNjcmlwdGlvbjogVGhpcyBpcyB0aGUgZGVzY3JpcHRpb24gZm9yIFByb2plY3RXZWJob29rcwogICAgd2ViaG9va3M6CiAgICAgIFdlYmhvb2tOYW1lOgogICAgICAgIHBvc3Q6CiAgICAgICAgICByZXF1ZXN0Qm9keToKICAgICAgICAgICAgZGVzY3JpcHRpb246IHwKICAgICAgICAgICAgICBUaGlzIGlzIGEgcmVxdWVzdCBib2R5IGRlc2NyaXB0aW9uCiAgICAgICAgICByZXNwb25zZXM6CiAgICAgICAgICAgIDIwMDoKICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogfAogICAgICAgICAgICAgICAgVGhpcyBpcyBhIGV4cGVjdGVkIHJlc3BvbnNlIGRlc2NyaXB0aW9uCmBgYAoKCiMjIEluc3RhbGwKClRoaXMgcGx1Z2luIGlzICoqYW4gZXh0ZW5zaW9uKiouICAKSXQgbWVhbnMgeW91IG11c3QgaW5zdGFsbCBhbmQgZW5hYmxlIGBAY29ucWEvc2VydmVybGVzcy1vcGVuYXBpLWRvY3VtZW50YXRpb25gIHRvby4KClRvIGFkZCB0aGVzZSBwbHVnaW5zIHRvIHlvdXIgcGFja2FnZS5qc29uOgoKKipVc2luZyBucG06KioKYGBgYmFzaApucG0gaW5zdGFsbCBAY29ucWEvc2VydmVybGVzcy1vcGVuYXBpLWRvY3VtZW50YXRpb24gLS1zYXZlLWRldgpucG0gaW5zdGFsbCBzZXJ2ZXJsZXNzLW9wZW5hcGktdHlwZXNjcmlwdCAtLXNhdmUtZGV2CmBgYAoKKipVc2luZyBZYXJuOioqCmBgYGJhc2gKeWFybiBhZGQgQGNvbnFhL3NlcnZlcmxlc3Mtb3BlbmFwaS1kb2N1bWVudGF0aW9uIC0tZGV2Cnlhcm4gYWRkIHNlcnZlcmxlc3Mtb3BlbmFwaS10eXBlc2NyaXB0IC0tZGV2CmBgYAoKTmV4dCB5b3UgbmVlZCB0byBhZGQgdGhlIHBsdWdpbiB0byB0aGUgYHBsdWdpbnNgIHNlY3Rpb24gb2YgeW91ciBgc2VydmVybGVzcy55bWxgIGZpbGUuCgpgYGB5bWwKcGx1Z2luczoKICAtIEBjb25xYS9zZXJ2ZXJsZXNzLW9wZW5hcGktZG9jdW1lbnRhdGlvbgogIC0gc2VydmVybGVzcy1vcGVuYXBpLXR5cGVzY3JpcHQKICAjIE5PVEU6IE9yZGVyIGlzIGltcG9ydGFudCBoZXJlIC0gdGhpcyBwbHVnaW4gbXVzdCBiZSBhZGRlZCBhZnRlciB0aGUgYmFzZSBAY29ucWEvc2VydmVybGVzcy1vcGVuYXBpLWRvY3VtZW50YXRpb24gcGx1Z2luCiAgIyBUaGlzIHBsdWdpbiBhc3NlcnRzIHRoYXQgLSB5b3Ugd2lsbCBnZXQgYSB2YWxpZGF0aW9uIG1lc3NhZ2UgaWYgeW91IGdldCB0aGUgb3JkZXJpbmcgd3JvbmcgCmBgYAoKPiBOb3RlOiBBZGQgdGhpcyBwbHVnaW4gX2FmdGVyXyBgc2VydmVybGVzcy1vZmZsaW5lYCB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIGBTdHJpbmcucmVwbGFjZUFsbGAgYmVpbmcgb3ZlcnJpZGRlbiBpbmNvcnJlY3RseS4KCiMjIExpY2Vuc2UKCk1JVAo= readmeEtag: '"805379935366bacdc6beb284e7684d85a00c68c2"' readmeLastModified: Mon, 27 May 2024 12:03:39 GMT repositoryId: 400071702 description: >- Serverless plugin to generate OpenAPI 3.1.0 documentation including models from serverless configuration and TypeScript created: '2021-08-26T06:57:36Z' updated: '2024-05-27T12:03:43Z' language: TypeScript archived: false stars: 14 watchers: 8 forks: 7 owner: env0 logo: https://avatars.githubusercontent.com/u/46656519?v=4 repoEtag: '"11f9e7469e230d9f4d07c8dc839930723b6de6bfedde1243ed7c84a68b1b01ff"' repoLastModified: Mon, 27 May 2024 12:03:43 GMT foundInMaster: true category: - Code Generators - Parsers id: 1f0ebfad51f6d4b3b4f19310e8beaae8 - source: openapi3 tags repository: https://github.com/superfaceai/openapi-linter v3: true id: 86b53702824389b1522bcbb79dcb880b repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIExpbnRlcgoKWyFbR2l0SHViIFdvcmtmbG93IFN0YXR1c10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvd29ya2Zsb3cvc3RhdHVzL3N1cGVyZmFjZWFpL29wZW5hcGktbGludGVyL0NJKV0oaHR0cHM6Ly9naXRodWIuY29tL3N1cGVyZmFjZWFpL29wZW5hcGktbGludGVyL2FjdGlvbnMvd29ya2Zsb3dzL21haW4ueW1sKQpbIVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQHN1cGVyZmFjZWFpL29wZW5hcGktbGludGVyKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHN1cGVyZmFjZWFpL29wZW5hcGktbGludGVyKQpbIVtsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9sL0BzdXBlcmZhY2VhaS9vcGVuYXBpLWxpbnRlcildKExJQ0VOU0UpClshW0NMSSBidWlsdCB3aXRoIG9jbGlmXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NsaS1vY2xpZi1icmlnaHRncmVlbi5zdmcpXShodHRwczovL29jbGlmLmlvKQpbIVtHaXRIdWIgRGlzY3Vzc2lvbnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2Rpc2N1c3Npb25zL3N1cGVyZmFjZWFpLy5naXRodWI/bG9nbz1naXRodWImbG9nb0NvbG9yPWZmZildKGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdzL3N1cGVyZmFjZWFpL2Rpc2N1c3Npb25zKQoKPiBJcyB5b3VyIE9wZW5BUEkgU3BlYyByZWFkeSBmb3IgU0RLIGdlbmVyYXRvcnM/CgpPcGVuQVBJIExpbnRlciBpcyBhIENMSSBhbmQgYSBOb2RlLmpzIGxpYnJhcnkgdG8gdmFsaWRhdGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgpJdCBpcyBiYXNlZCBvbiBbU3BlY3RyYWxdIGJ5IFN0b3BsaWdodCB3aXRoIFtPcGVuQVBJIHJ1bGVzXShodHRwczovL21ldGEuc3RvcGxpZ2h0LmlvL2RvY3Mvc3BlY3RyYWwvNGRlYzI0NDYxZjNhZi1vcGVuLWFwaS1ydWxlcykgd2l0aCBhZGRpdGlvbmFsIHJ1bGVzLiBUaGUgZ29hbCBvZiBMaW50ZXIgaXMgdG8gY2hlY2sgd2hldGhlciB0aGUgc3BlYyBjb250YWlucyBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgaGlnaCBxdWFsaXR5LCB3ZWxsIGRvY3VtZW50ZWQgU0RLLgpXZSB1c2UgT3BlbkFQSSBMaW50ZXIgaW4gW1N1cGVyZmFjZSBJbnRlZ3JhdGlvbiBEZXNpZ25lcl1bZGVzaWduZXJdLCBidXQgYW55IGNsaWVudCBjb2RlIGdlbmVyYXRvciBiZW5lZml0cyBmcm9tIHdlbGwgd3JpdHRlbiBPcGVuQVBJIHNwZWNzLgoKIyMgU2V0dXAKCkluc3RhbGwgZnJvbSBucG0gZ2xvYmFsbHk6CgpgYGBzaGVsbApucG0gaSAtZyBAc3VwZXJmYWNlYWkvb3BlbmFwaS1saW50ZXIKYGBgCgpOb3cgeW91IGNhbiB1c2UgdGhlIGxpbnRlciB3aXRoIGNvbW1hbmRzIGBvcGVuYXBpLWxpbnRlcmAgb3IgYG9hbGAuCgpBbHRlcm5hdGl2ZWx5IHlvdSBjYW4gdXNlIHRoZSBsaW50ZXIgd2l0aG91dCBpbnN0YWxsYXRpb24gd2l0aCBgbnB4YDoKCmBgYApucHggQHN1cGVyZmFjZWFpL29wZW5hcGktbGludGVyIGxpbnQgPGZpbGUgb3IgVVJMPgpgYGAKCiMjIENMSSBjb21tYW5kcwoKICA8IS0tIGNvbW1hbmRzIC0tPgoKLSBbYG9wZW5hcGktbGludGVyIGxpbnQgU1BFQ0lGSUNBVElPTlBBVEhgXSgjb3BlbmFwaS1saW50ZXItbGludC1zcGVjaWZpY2F0aW9ucGF0aCkKCiMjIyBgb3BlbmFwaS1saW50ZXIgbGludCBTUEVDSUZJQ0FUSU9OUEFUSGAKCkxpbnRzIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiB1c2luZyB0aHJlZSBkaWZmZXJlbnQgcGFyc2Vycy92YWxpZGF0b3JzLgoKYGBgClVTQUdFCiAgJCBvcGVuYXBpLWxpbnRlciBsaW50IFtTUEVDSUZJQ0FUSU9OUEFUSF0gWy1mIHlhbWx8anNvbl0gWy1lIGVycm9yfHdhcm5pbmd8YW55XQoKQVJHVU1FTlRTCiAgU1BFQ0lGSUNBVElPTlBBVEggIFBhdGggb3IgVVJMIHRvIHNwZWNpZmljYXRpb24gZmlsZQoKRkxBR1MKICAtZSwgLS10aHJvd09uPTxvcHRpb24+ICAgICBbZGVmYXVsdDogZXJyb3JdIE9uIHdoaWNoIGtpbmQgb2Ygc2V2ZXJ0eSBlcnJvciBzaG91bGQgYmUgdGhyb3duLiBXaGVuIHNldCB0byB3YXJuaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB3aWxsIHRocm93IHdoZW4gdGhlcmUgaXMgYSByZXN1bHQgd2l0aCAid2FybmluZyIgb3IgImVycm9yIiBzZXZlcml0eS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uczogZXJyb3J8d2FybmluZ3xhbnk+CiAgLWYsIC0tZmlsZUZvcm1hdD08b3B0aW9uPiAgRm9ybWF0IG9mIHNwZWNpZmljYXRpb24uIE11c3QgYmUgInlhbWwiIG9yICJqc29uIiB3aGVuIGRlZmluZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uczogeWFtbHxqc29uPgoKREVTQ1JJUFRJT04KICBMaW50cyBPcGVuQVBJIHNwZWNpZmljYXRpb24gdXNpbmcgdGhyZWUgZGlmZmVyZW50IHBhcnNlcnMvdmFsaWRhdG9ycy4KCkVYQU1QTEVTCiAgJCBvYWwgbGludCBodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1wZXRzdG9yZS9ibG9iL21hc3Rlci9zcmMvbWFpbi9yZXNvdXJjZXMvb3BlbmFwaS55YW1sCgogICQgb2FsIGxpbnQgZXhhbXBsZXMvcGV0c3RvcmUueWFtbAoKICAkIG9hbCBsaW50IGV4YW1wbGVzL3BldHN0b3JlLnlhbWwgLWUgYW55CgogICQgb2FsIGxpbnQgZXhhbXBsZXMvcGV0c3RvcmUueWFtbCAtZiB5YW1sCmBgYAoKPCEtLSBjb21tYW5kc3N0b3AgLS0+CgojIyBVc2FnZSBpbiBjb2RlCgpJbnN0YWxsIHRoZSBsaW50ZXIgYXMgYSBkZXBlbmRlbmN5IGludG8geW91ciBwcm9qZWN0OgoKYGBgc2hlbGwKbnBtIGkgQHN1cGVyZmFjZWFpL29wZW5hcGktbGludGVyCmBgYAoKVXNlIHRoZSBgbGludGAgZnVuY3Rpb246Cgo8IS0tIFRPRE86IEFkZCBleGFtcGxlIHdoYXQncyBpbiBsaW50UmVzdWx0IC0tPgoKYGBgdHMKaW1wb3J0IHsgbGludCB9IGZyb20gJ29wZW5hcGktbGludGVyJzsKCi8vIEdldCBzcGVjaWZpY2F0aW9uIGFzIHN0cmluZwpjb25zdCBzcGVjaWZpY2F0aW9uID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aFRvU3BlYywgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTsKCi8vIFBhc3Mgc3BlY2lmaWNhdGlvbiwgaXRzIGV4dGVuc2lvbiAoInlhbWwiIG9yICJqc29uIikgYW5kIG5hbWUKY29uc3QgbGludFJlc3VsdCA9IGF3YWl0IGxpbnQoc3BlY2lmaWNhdGlvbiwgJ3lhbWwnLCAnbXktc3BlYy1uYW1lJyk7CgovL0RvIHNvbWV0aGluZyB3aXRoIHJlc3VsdApjb25zb2xlLmxvZyhsaW50UmVzdWx0KTsKYGBgCgo8IS0tIFRPRE8KIyMgQWRkZWQgcnVsZXMgKFdJUCkKCiogRWFjaCBvcGVyYXRpb24gaGFzIHRvIGRlZmluZSBhdCBsZWFzdCBvbmUgc3VjY2VzcyByZXNwb25zZQoqIEVhY2ggb3BlcmF0aW9uIGhhcyB0byBkZWZpbmUgYXQgbGVhc3Qgb25lIGVycm9yIG9yIGRlZmF1bHQgcmVzcG9uc2UKLS0+CgojIyBSZWxhdGVkIHByb2plY3RzCgotIFtTcGVjdHJhbF0sIGdlbmVyaWMgbGludGVyIGZvciBKU09OIGFuZCBZQU1MIHRoaXMgcHJvamVjdCBpcyBiYXNlZCBvbgotIFtPcGVuQVBJIEVuZm9yY2VyXShodHRwczovL29wZW5hcGktZW5mb3JjZXIuY29tLykKLSBbT3BlbkFQSSBWYWxpZGF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9JQk0vb3BlbmFwaS12YWxpZGF0b3IpCi0gW09BUyBUb29sc10oaHR0cHM6Ly9vYXMtdG9vbHMuZ2l0aHViLmlvLykKLSBbUmVkb2NseSBDTEldKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jbHktY2xpKQotIFtDaGVycnlib21iXShodHRwczovL2dpdGh1Yi5jb20vYmxzdC1zZWN1cml0eS9jaGVycnlib21iKSAoUnVzdCkKLSBhbmQgW21hbnkgbW9yZV0oaHR0cHM6Ly9vcGVuYXBpLnRvb2xzLykKCiMjIE1haW50YWluZXJzCgotIFtKYWt1YiBWYWNla10oaHR0cHM6Ly9naXRodWIuY29tL0pha3ViLVZhY2VrKQotIFtSYWRlayBLeXNlbMO9XShodHRwczovL2dpdGh1Yi5jb20va3lzZWx5KQoKIyMgTGljZW5zZQoKVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBbTUlUIGxpY2Vuc2VdKExJQ0VOU0UpLgoKwqkgMjAyMyBTdXBlcmZhY2Ugcy5yLm8uCgpbc3BlY3RyYWxdOiBodHRwczovL3N0b3BsaWdodC5pby9vcGVuLXNvdXJjZS9zcGVjdHJhbApbZGVzaWduZXJdOiBodHRwczovL3N1cGVyZmFjZS5haS9kZXNpZ25lcgo= readmeEtag: '"dcc032fec32455a2fa8825288981763ef91c0e33"' readmeLastModified: Wed, 19 Jul 2023 11:32:46 GMT repositoryId: 530604809 description: Is your OpenAPI Spec ready for SDK generators? created: '2022-08-30T10:24:31Z' updated: '2025-05-13T07:44:23Z' language: TypeScript archived: false stars: 15 watchers: 5 forks: 0 owner: superfaceai logo: https://avatars.githubusercontent.com/u/57067369?v=4 license: MIT repoEtag: '"543970980a5b0907b8638a470ff840dc8d9fb04a204a6dcff9b4297cfba77800"' repoLastModified: Tue, 13 May 2025 07:44:23 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/ndsev/zswag v3: true id: 9ce9cc067be88c2fb444f0cda133e0ff repositoryMetadata: base64Readme: >- IyBac3dhZwoKWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9uZHNldi96c3dhZy9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC1kZXBsb3kueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9uZHNldi96c3dhZy9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC1kZXBsb3kueW1sKQpbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2l0aHViL25kc2V2L3pzd2FnL2dyYXBoL2JhZGdlLnN2Zz90b2tlbj01RFRYMk04SURFKV0oaHR0cHM6Ly9jb2RlY292LmlvL2dpdGh1Yi9uZHNldi96c3dhZykKWyFbUXVhbGl0eSBHYXRlIFN0YXR1c10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9bmRzZXZfenN3YWcmbWV0cmljPWFsZXJ0X3N0YXR1cyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPW5kc2V2X3pzd2FnKQpbIVtSZWxlYXNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9yZWxlYXNlL25kc2V2L3pzd2FnKV0oaHR0cHM6Ly9HaXRIdWIuY29tL25kc2V2L3pzd2FnL3JlbGVhc2VzLykKWyFbQ292ZXJhZ2VdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PW5kc2V2X3pzd2FnJm1ldHJpYz1jb3ZlcmFnZSldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPW5kc2V2X3pzd2FnKQpbIVtMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL25kc2V2L3pzd2FnKV0oaHR0cHM6Ly9naXRodWIuY29tL25kc2V2L3pzd2FnL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpCgp6c3dhZyBpcyBhIHNldCBvZiBsaWJyYXJpZXMgZm9yIHVzaW5nL2hvc3RpbmcgenNlcmlvIHNlcnZpY2VzIHRocm91Z2ggT3BlbkFQSS4KCioqVGFibGUgb2YgQ29udGVudHM6KioKCiAgKiBbQ29tcG9uZW50c10oI2NvbXBvbmVudHMpCiAgKiBbU2V0dXBdKCNzZXR1cCkKICAgICsgW0ZvciBQeXRob24gVXNlcnNdKCNmb3ItcHl0aG9uLXVzZXJzKQogICAgKyBbRm9yIEMrKyBVc2Vyc10oI2Zvci1jLXVzZXJzKQogICAgICAtIFtPZmZsaW5lL0Rpc2Nvbm5lY3RlZCBCdWlsZHNdKCNvZmZsaW5lZGlzY29ubmVjdGVkLWJ1aWxkcykKICAqIFtDSS9DRCBhbmQgUmVsZWFzZSBQcm9jZXNzXSgjY2ljZC1hbmQtcmVsZWFzZS1wcm9jZXNzKQogICAgKyBbQ29udGludW91cyBJbnRlZ3JhdGlvbl0oI2NvbnRpbnVvdXMtaW50ZWdyYXRpb24pCiAgICArIFtSZWxlYXNlIFByb2Nlc3NdKCNyZWxlYXNlLXByb2Nlc3MpCiAgICArIFtEZXZlbG9wbWVudCBTbmFwc2hvdHNdKCNkZXZlbG9wbWVudC1zbmFwc2hvdHMpCiAgICArIFtWZXJzaW9uIFZhbGlkYXRpb25dKCN2ZXJzaW9uLXZhbGlkYXRpb24pCiAgKiBbT3BlbkFQSSBHZW5lcmF0b3IgQ0xJXSgjb3BlbmFwaS1nZW5lcmF0b3ItY2xpKQogICAgKyBbR2VuZXJhdG9yIFVzYWdlIEV4YW1wbGVdKCNnZW5lcmF0b3ItdXNhZ2UtZXhhbXBsZSkKICAgICsgW0RvY3VtZW50YXRpb24gZXh0cmFjdGlvbl0oI2RvY3VtZW50YXRpb24tZXh0cmFjdGlvbikKICAqIFtTZXJ2ZXIgQ29tcG9uZW50IChQeXRob24pXSgjc2VydmVyLWNvbXBvbmVudCkKICAqIFtVc2luZyB0aGUgUHl0aG9uIENsaWVudF0oI3VzaW5nLXRoZS1weXRob24tY2xpZW50KQogICogW0MrKyBDbGllbnRdKCNjLWNsaWVudCkKICAqIFtDbGllbnQgRW52aXJvbm1lbnQgU2V0dGluZ3NdKCNjbGllbnQtZW52aXJvbm1lbnQtc2V0dGluZ3MpCiAgKiBbSFRUUCBQcm94aWVzIGFuZCBBdXRoZW50aWNhdGlvbl0oI3BlcnNpc3RlbnQtaHR0cC1oZWFkZXJzLXByb3h5LWNvb2tpZS1hbmQtYXV0aGVudGljYXRpb24pCiAgKiBbU3dhZ2dlciBVc2VyIEludGVyZmFjZV0oI3N3YWdnZXItdXNlci1pbnRlcmZhY2UpCiAgKiBbQ2xpZW50IFJlc3VsdCBDb2RlIEhhbmRsaW5nXSgjY2xpZW50LXJlc3VsdC1jb2RlLWhhbmRsaW5nKQogICogW09wZW5BUEkgT3B0aW9ucyBJbnRlcm9wZXJhYmlsaXR5XSgjb3BlbmFwaS1vcHRpb25zLWludGVyb3BlcmFiaWxpdHkpCiAgICArIFtIVFRQIG1ldGhvZF0oI2h0dHAtbWV0aG9kKQogICAgKyBbUmVxdWVzdCBCb2R5XSgjcmVxdWVzdC1ib2R5KQogICAgKyBbVVJMIEJsb2IgUGFyYW1ldGVyXSgjdXJsLWJsb2ItcGFyYW1ldGVyKQogICAgKyBbVVJMIFNjYWxhciBQYXJhbWV0ZXJdKCN1cmwtc2NhbGFyLXBhcmFtZXRlcikKICAgICsgW1VSTCBBcnJheSBQYXJhbWV0ZXJdKCN1cmwtYXJyYXktcGFyYW1ldGVyKQogICAgKyBbVVJMIENvbXBvdW5kIFBhcmFtZXRlcl0oI3VybC1jb21wb3VuZC1wYXJhbWV0ZXIpCiAgICArIFtTZXJ2ZXIgVVJMIEJhc2UgUGF0aF0oI3NlcnZlci11cmwtYmFzZS1wYXRoKQogICAgKyBbQXV0aGVudGljYXRpb24gU2NoZW1lc10oI2F1dGhlbnRpY2F0aW9uLXNjaGVtZXMpCgojIyBDb21wb25lbnRzCgpUaGUgenN3YWcgcmVwb3NpdG9yeSBjb250YWlucyB0d28gbWFpbiBsaWJyYXJpZXMgd2hpY2ggcHJvdmlkZQpPcGVuQVBJIGxheWVycyBmb3IgenNlcmlvIFB5dGhvbiBhbmQgQysrIGNsaWVudHMuIEZvciBQeXRob24sIHRoZXJlCmlzIGV2ZW4gYSBnZW5lcmljIHpzZXJpbyBPcGVuQVBJIHNlcnZlciBsYXllci4KClRoZSBmb2xsb3dpbmcgVU1MIGRpYWdyYW0gcHJvdmlkZXMgYSBtb3JlIGluLWRlcHRoIG92ZXJ2aWV3OgoKIVtDb21wb25lbnQgT3ZlcnZpZXddKGRvYy96c3dhZy1hcmNoaXRlY3R1cmUucG5nKQoKSGVyZSBhcmUgc29tZSBicmllZiBkZXNjcmlwdGlvbnMgb2YgdGhlIG1haW4gY29tcG9uZW50czoKCiogYHpzd2FnY2xgIGlzIGEgQysrIExpYnJhcnkgd2hpY2ggZXhwb3NlcyB0aGUgenNlcmlvIE9wZW5BUEkgc2VydmljZSBjbGllbnQgYE9BQ2xpZW50YAogIGFzIHdlbGwgYXMgdGhlIG1vcmUgZ2VuZXJpYyBgT3BlbkFwaUNsaWVudGAgYW5kIGBPcGVuQXBpQ29uZmlnYCBjbGFzc2VzLgogIFRoZSBsYXR0ZXIgdHdvIGFyZSByZXVzZWQgZm9yIHRoZSBQeXRob24gY2xpZW50IGxpYnJhcnkuCiogYHpzd2FnYCBpcyBhIFB5dGhvbiBMaWJyYXJ5IHdoaWNoIHByb3ZpZGVzIGJvdGggYSB6c2VyaW8gUHl0aG9uIHNlcnZpY2UgY2xpZW50CiAgKGBPQUNsaWVudGApIGFzIHdlbGwgYXMgYSB6c2VyaW8tT3BlbkFQSSBzZXJ2ZXIgbGF5ZXIgYmFzZWQgb24gRmxhc2svQ29ubmV4aW9uCiAgKGBPQVNlcnZlcmApLiBJdCBhbHNvIGNvbnRhaW5zIHRoZSBjb21tYW5kLWxpbmUgdG9vbCBgenN3YWcuZ2VuYCwgd2hpY2ggY2FuIGJlCiAgdXNlZCB0byBnZW5lcmF0ZSBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gZnJvbSBhIHpzZXJpbyBQeXRob24gc2VydmljZSBjbGFzcy4KKiBgcHl6c3dhZ2NsYCBpcyBhIGJpbmRpbmcgbGlicmFyeSB3aGljaCBleHBvc2VzIHRoZSBDKystYmFzZWQgT3BlbkFwaQogIHBhcnNpbmcvcmVxdWVzdCBmdW5jdGlvbmFsaXR5IHRvIFB5dGhvbi4gKipQbGVhc2UgY29uc2lkZXIgaXQgImludGVybmFsIi4qKgoqIGBodHRwY2xgIGlzIGEgd3JhcHBlciBhcm91bmQgW2NwcC1odHRwbGliXShodHRwczovL2dpdGh1Yi5jb20veWhpcm9zZS9jcHAtaHR0cGxpYiksCiAgSFRUUCByZXF1ZXN0IGNvbmZpZ3VyYXRpb24gYW5kIE9TIHNlY3JldCBzdG9yYWdlIGFiaWxpdGllcyBiYXNlZCBvbgogIHRoZSBba2V5Y2hhaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9ocmFudHpzY2gva2V5Y2hhaW4pIGxpYnJhcnkuCiAgCiMjIFNldHVwCgojIyMgRm9yIFB5dGhvbiBVc2VycwoKU2ltcGx5IHJ1biBgcGlwIGluc3RhbGwgenN3YWdgLiAqKk5vdGU6IFRoaXMgb25seSB3b3JrcyB3aXRoIC4uLioqCgoqIDY0LWJpdCBQeXRob24gMy4xMC0zLjEzLCBgcGlwIC0tdmVyc2lvbmAgPj0gMTkuMwoqIFN1cHBvcnRlZCBwbGF0Zm9ybXM6IExpbnV4ICh4ODZfNjQpLCBtYWNPUyAoeDg2XzY0IGFuZCBhcm02NCksIFdpbmRvd3MgKHg2NCkKCioqTm90ZXM6KioKKiBPbiBXaW5kb3dzLCBtYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSB0aGUgKk1pY3Jvc29mdCBWaXN1YWwgQysrIFJlZGlzdHJpYnV0YWJsZSBCaW5hcmllcyogaW5zdGFsbGVkLiBZb3UgY2FuIGZpbmQgdGhlIHg2NCBpbnN0YWxsZXIgaGVyZTogaHR0cHM6Ly9ha2EubXMvdnMvMTYvcmVsZWFzZS92Y19yZWRpc3QueDY0LmV4ZQoqIHpzd2FnIGZvciBQeXRob24gMy4xMCBpcyBub3Qgc3VwcG9ydGVkIG9uIEFwcGxlIFNpbGljb24gKGFybTY0KSBiZWNhdXNlIG5vIGNvbXBhdGlibGUgR2l0SHViIEFjdGlvbnMgcnVubmVyIGlzIGF2YWlsYWJsZS4KICBIb3dldmVyLCB0aGlzIGlzIHR5cGljYWxseSBub3QgYW4gaXNzdWUsIGFzIG1hY09TIGluY2x1ZGVzIG1vcmUgcmVjZW50IFB5dGhvbiB2ZXJzaW9ucyBieSBkZWZhdWx0LgoKIyMjIEZvciBDKysgVXNlcnMKClVzaW5nIENNYWtlLCB5b3UgY2FuIC4uLgoKKiDwn4yfcnVuIHRlc3RzLgoqIPCfjJ9idWlsZCB0aGUgenN3YWcgd2hlZWxzIGZvciBhIGN1c3RvbSBQeXRob24gdmVyc2lvbi4KKiDwn4yfW2ludGVncmF0ZSB0aGUgQysrIGNsaWVudCBpbnRvIGEgQysrIHByb2plY3QuXSgjYy1jbGllbnQpCgpEZXBlbmRlbmNpZXMgYXJlIG1hbmFnZWQgdmlhIENNYWtlJ3MgYEZldGNoQ29udGVudGAgbWVjaGFuaXNtLiBNYWtlIHN1cmUgeW91IGhhdmUgYSByZWNlbnQgdmVyc2lvbiBvZiBDTWFrZSAoPj0gMy4yMi4zKSBpbnN0YWxsZWQuCgpUaGUgYmFzaWMgc2V0dXAgZm9sbG93cyB0aGUgdXN1YWwgQ01ha2UgY29uZmlndXJlL2J1aWxkIHN0ZXBzOgpgYGBiYXNoCm1rZGlyIGJ1aWxkICYmIGNkIGJ1aWxkCmNtYWtlIC4uCmNtYWtlIC0tYnVpbGQgLgpgYGAKCioqTm90ZToqKiBUaGUgUHl0aG9uIGVudmlyb25tZW50IHVzZWQgZm9yIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSB1c2VkCnRvIGJ1aWxkIHRoZSByZXN1bHRpbmcgd2hlZWxzLiBBZnRlciBidWlsZGluZywgeW91IHdpbGwgZmluZCB0aGUgUHl0aG9uCndoZWVscyB1bmRlciBgYnVpbGQvYmluL3doZWVsYC4KCioqVG8gcnVuIHRlc3RzKiosIGp1c3QgZXhlY3V0ZSBDVGVzdCBhdCB0aGUgdG9wIG9mIHRoZSBidWlsZCBkaXJlY3Rvcnk6CmBgYGJhc2gKY2QgYnVpbGQgJiYgY3Rlc3QgLS12ZXJib3NlCmBgYAoKIyMjIyBPZmZsaW5lL0Rpc2Nvbm5lY3RlZCBCdWlsZHMKCkZvciBlbnZpcm9ubWVudHMgd2l0aG91dCBpbnRlcm5ldCBhY2Nlc3Mgb3IgZm9yIHJlcHJvZHVjaWJsZSBidWlsZHMsIHpzd2FnIHN1cHBvcnRzIG9mZmxpbmUgYnVpbGRzIHVzaW5nIENNYWtlJ3MgRmV0Y2hDb250ZW50IG1lY2hhbmlzbS4KCioqT2ZmbGluZSBCdWlsZCBQcm9jZXNzKioKCkZvciBvZmZsaW5lIGJ1aWxkcywgeW91IGNhbiBwcmUtZmV0Y2ggYWxsIGRlcGVuZGVuY2llcyB3aGlsZSBvbmxpbmUgYW5kIHRoZW4gYnVpbGQgd2l0aG91dCBuZXR3b3JrIGFjY2VzczoKCmBgYGJhc2gKIyBGaXJzdCwgZmV0Y2ggYWxsIGRlcGVuZGVuY2llcyB3aGlsZSBvbmxpbmUKbWtkaXIgYnVpbGQgJiYgY2QgYnVpbGQKY21ha2UgLURGRVRDSENPTlRFTlRfRlVMTFlfRElTQ09OTkVDVEVEPU9GRiAuLgojIFRoaXMgd2lsbCBkb3dubG9hZCBhbGwgZGVwZW5kZW5jaWVzCgojIFRoZW4gYnVpbGQgb2ZmbGluZQpjbWFrZSAtREZFVENIQ09OVEVOVF9GVUxMWV9ESVNDT05ORUNURUQ9T04gLi4KY21ha2UgLS1idWlsZCAuCmBgYAoKVGhlIGBGRVRDSENPTlRFTlRfRlVMTFlfRElTQ09OTkVDVEVEPU9OYCBvcHRpb24gdGVsbHMgQ01ha2UgdG8gdXNlIG9ubHkgdGhlIHByZS1mZXRjaGVkIGRlcGVuZGVuY2llcyBhbmQgbmV2ZXIgYXR0ZW1wdCBuZXR3b3JrIGFjY2Vzcy4KCioqTG9jYWwgRGV2ZWxvcG1lbnQgd2l0aCBDdXN0b20gRGVwZW5kZW5jaWVzKioKCkZvciBkZXZlbG9wbWVudCwgeW91IGNhbiBvdmVycmlkZSBzcGVjaWZpYyBkZXBlbmRlbmNpZXMgd2l0aCBsb2NhbCBzb3VyY2VzOgpgYGBiYXNoCm1rZGlyIGJ1aWxkICYmIGNkIGJ1aWxkCmNtYWtlIC1ERkVUQ0hDT05URU5UX1NPVVJDRV9ESVJfU1BETE9HPS9wYXRoL3RvL2xvY2FsL3NwZGxvZyAuLgpjbWFrZSAtLWJ1aWxkIC4KYGBgCgpBdmFpbGFibGUgb3ZlcnJpZGUgdmFyaWFibGVzOgotIGBGRVRDSENPTlRFTlRfU09VUkNFX0RJUl9aTElCYCAtIHpsaWIgY29tcHJlc3Npb24gbGlicmFyeQotIGBGRVRDSENPTlRFTlRfU09VUkNFX0RJUl9TUERMT0dgIC0gc3BkbG9nIGxvZ2dpbmcgbGlicmFyeSAgCi0gYEZFVENIQ09OVEVOVF9TT1VSQ0VfRElSX1lBTUxfQ1BQYCAtIHlhbWwtY3BwIHBhcnNpbmcgbGlicmFyeQotIGBGRVRDSENPTlRFTlRfU09VUkNFX0RJUl9TVFhgIC0gc3R4IHV0aWxpdHkgbGlicmFyeQotIGBGRVRDSENPTlRFTlRfU09VUkNFX0RJUl9TUEVFRFlKYCAtIHNwZWVkeWogSlNPTiBsaWJyYXJ5Ci0gYEZFVENIQ09OVEVOVF9TT1VSQ0VfRElSX0hUVFBMSUJgIC0gY3BwLWh0dHBsaWIgSFRUUCBsaWJyYXJ5Ci0gYEZFVENIQ09OVEVOVF9TT1VSQ0VfRElSX09QRU5TU0xgIC0gT3BlblNTTCBjcnlwdG9ncmFwaHkgbGlicmFyeQotIGBGRVRDSENPTlRFTlRfU09VUkNFX0RJUl9QWUJJTkQxMWAgLSBweWJpbmQxMSAod2hlbiBgWlNXQUdfQlVJTERfV0hFRUxTPU9OYCkKLSBgRkVUQ0hDT05URU5UX1NPVVJDRV9ESVJfUFlUSE9OX0NNQUtFX1dIRUVMYCAtIHB5dGhvbi1jbWFrZS13aGVlbCAod2hlbiBgWlNXQUdfQlVJTERfV0hFRUxTPU9OYCkKLSBgRkVUQ0hDT05URU5UX1NPVVJDRV9ESVJfWlNFUklPX0NNQUtFX0hFTFBFUmAgLSB6c2VyaW8gYnVpbGQgaGVscGVycwotIGBGRVRDSENPTlRFTlRfU09VUkNFX0RJUl9LRVlDSEFJTmAgLSBrZXljaGFpbiBsaWJyYXJ5ICh3aGVuIGBaU1dBR19LRVlDSEFJTl9TVVBQT1JUPU9OYCkKLSBgRkVUQ0hDT05URU5UX1NPVVJDRV9ESVJfQ0FUQ0gyYCAtIENhdGNoMiB0ZXN0aW5nIGZyYW1ld29yayAod2hlbiBgWlNXQUdfRU5BQkxFX1RFU1RJTkc9T05gKQoKKipCdWlsZCBPcHRpb25zKioKCkNvbW1vbiBidWlsZCBjb25maWd1cmF0aW9uIG9wdGlvbnM6CmBgYGJhc2gKIyBNaW5pbWFsIGJ1aWxkIChubyB3aGVlbHMsIG5vIGtleWNoYWluLCBubyB0ZXN0cykKY21ha2UgLURaU1dBR19CVUlMRF9XSEVFTFM9T0ZGIC1EWlNXQUdfS0VZQ0hBSU5fU1VQUE9SVD1PRkYgLURaU1dBR19FTkFCTEVfVEVTVElORz1PRkYgLi4KCiMgT2ZmbGluZSBidWlsZCB3aXRoIGN1c3RvbSBzcGRsb2cKY21ha2UgLURGRVRDSENPTlRFTlRfRlVMTFlfRElTQ09OTkVDVEVEPU9OIC1ERkVUQ0hDT05URU5UX1NPVVJDRV9ESVJfU1BETE9HPS9wYXRoL3RvL3NwZGxvZyAuLgoKIyBEZXZlbG9wbWVudCBidWlsZCB3aXRoIHdoZWVscyBlbmFibGVkCmNtYWtlIC1EWlNXQUdfQlVJTERfV0hFRUxTPU9OIC1EWlNXQUdfRU5BQkxFX1RFU1RJTkc9T04gLi4KYGBgCgojIyMjIENvZGUgQ292ZXJhZ2UKClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9uZHNldi96c3dhZy9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2ZyldKGh0dHBzOi8vY29kZWNvdi5pby9naC9uZHNldi96c3dhZykKCnpzd2FnIGluY2x1ZGVzIGNvbXByZWhlbnNpdmUgQysrIHRlc3QgY292ZXJhZ2UgYW5hbHlzaXMgZm9yIHRoZSBgaHR0cGNsYCBhbmQgYHpzd2FnY2xgIGxpYnJhcmllcy4gQ292ZXJhZ2UgaXMgYXV0b21hdGljYWxseSBjb2xsZWN0ZWQgaW4gQ0kgYW5kIHJlcG9ydGVkIHRvIFtDb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvbmRzZXYvenN3YWcpLgoKKirwn5OKIFtWaWV3IEhUTUwgQ292ZXJhZ2UgUmVwb3J0XShodHRwczovL25kc2V2LmdpdGh1Yi5pby96c3dhZy9jb3ZlcmFnZS8pKiogLSBCcm93c2FibGUgY292ZXJhZ2UgcmVwb3J0IGhvc3RlZCBvbiBHaXRIdWIgUGFnZXMKCioqTG9jYWwgQ292ZXJhZ2UgQW5hbHlzaXMqKgoKVG8gZ2VuZXJhdGUgY292ZXJhZ2UgcmVwb3J0cyBsb2NhbGx5LCB5b3UnbGwgbmVlZDoKLSBHQ0Mgb3IgQ2xhbmcgY29tcGlsZXIKLSBgbGNvdmAgYW5kIGBnZW5odG1sYCB0b29scyAoaW5zdGFsbCB3aXRoIGBzdWRvIGFwdC1nZXQgaW5zdGFsbCBsY292YCBvbiBVYnVudHUvRGViaWFuKQoKQnVpbGQgd2l0aCBjb3ZlcmFnZSBlbmFibGVkOgpgYGBiYXNoCm1rZGlyIGJ1aWxkICYmIGNkIGJ1aWxkCmNtYWtlIC1EQ01BS0VfQlVJTERfVFlQRT1EZWJ1ZyBcCiAgICAgIC1EWlNXQUdfRU5BQkxFX0NPVkVSQUdFPU9OIFwKICAgICAgLURaU1dBR19FTkFCTEVfVEVTVElORz1PTiBcCiAgICAgIC1EWlNXQUdfQlVJTERfV0hFRUxTPU9GRiBcCiAgICAgIC1EWlNXQUdfS0VZQ0hBSU5fU1VQUE9SVD1PRkYgLi4KY21ha2UgLS1idWlsZCAuCmBgYAoKKipOb3RlOioqIFRoZSBmbGFncyBgLURaU1dBR19CVUlMRF9XSEVFTFM9T0ZGYCBhbmQgYC1EWlNXQUdfS0VZQ0hBSU5fU1VQUE9SVD1PRkZgIGRpc2FibGUgZmVhdHVyZXMgdGhhdCBhcmVuJ3QgbmVlZGVkIGZvciBjb3ZlcmFnZSBhbmFseXNpcyBhbmQgYXZvaWQgcmVxdWlyaW5nIFB5dGhvbiBkZXZlbG9wbWVudCBoZWFkZXJzIG9yIHN5c3RlbSBrZXljaGFpbiBsaWJyYXJpZXMuCgpHZW5lcmF0ZSBjb3ZlcmFnZSByZXBvcnRzOgpgYGBiYXNoCiMgUnVuIHRlc3RzIHRvIGdlbmVyYXRlIGNvdmVyYWdlIGRhdGEKY3Rlc3QgLS1vdXRwdXQtb24tZmFpbHVyZQoKIyBHZW5lcmF0ZSBIVE1MIGNvdmVyYWdlIHJlcG9ydApjbWFrZSAtLWJ1aWxkIC4gLS10YXJnZXQgY292ZXJhZ2UtcmVwb3J0CmBgYAoKVGhlIEhUTUwgY292ZXJhZ2UgcmVwb3J0IHdpbGwgYmUgYXZhaWxhYmxlIGF0IGBidWlsZC9jb3ZlcmFnZS9odG1sL2luZGV4Lmh0bWxgLgoKKipBdmFpbGFibGUgQ292ZXJhZ2UgVGFyZ2V0czoqKgotIGBjb3ZlcmFnZS1jbGVhbmAgLSBSZW1vdmUgYWxsIGNvdmVyYWdlIGRhdGEKLSBgY292ZXJhZ2UtcmVwb3J0YCAtIEdlbmVyYXRlIGNvdmVyYWdlIHJlcG9ydCBmcm9tIGV4aXN0aW5nIHRlc3QgcnVucwotIGBjb3ZlcmFnZWAgLSBDbGVhbiwgcnVuIHRlc3RzLCBhbmQgZ2VuZXJhdGUgcmVwb3J0IChhbGwtaW4tb25lKQoKKipDb3ZlcmFnZSBDb25maWd1cmF0aW9uOioqCi0gKipHb2FsOioqIDcwJSsgbGluZSBjb3ZlcmFnZSAoaW5pdGlhbCksIG5lYXIgMTAwJSBsaW5lIGFuZCBicmFuY2ggY292ZXJhZ2UgKHVsdGltYXRlKQotICoqU2NvcGU6KiogQ292ZXJhZ2UgaXMgdHJhY2tlZCBvbmx5IGZvciBsaWJyYXJ5IHNvdXJjZSBmaWxlcyAoYGxpYnMvaHR0cGNsYCwgYGxpYnMvenN3YWdjbGApCi0gKipOb3QgaW5jbHVkZWQ6KiogVGVzdCBjb2RlLCBkZXBlbmRlbmNpZXMsIGdlbmVyYXRlZCBjb2RlICh6c2VyaW8pCgoqKlRyb3VibGVzaG9vdGluZyBDb3ZlcmFnZSBCdWlsZHM6KioKCklmIHlvdSBnZXQgImdjb3Ygbm90IGZvdW5kIiB3YXJuaW5nczoKYGBgYmFzaAojIENoZWNrIGlmIHZlcnNpb25lZCBnY292IGV4aXN0cwp3aGljaCBnY292LTEzIGdjb3YtMTIgZ2Nvdi0xMQoKIyBDcmVhdGUgc3ltbGluayAoZXhhbXBsZSBmb3IgZ2Nvdi0xMykKc3VkbyBsbiAtcyAvdXNyL2Jpbi9nY292LTEzIC91c3IvYmluL2djb3YKCiMgT3IgaW5zdGFsbCBnY2MgcGFja2FnZQpzdWRvIGFwdC1nZXQgaW5zdGFsbCBnY2MKYGBgCgpJZiB5b3Ugd2FudCB0byBidWlsZCBjb3ZlcmFnZSAqKndpdGgqKiB3aGVlbCBzdXBwb3J0IChyZXF1aXJlcyBQeXRob24gZGV2ZWxvcG1lbnQgaGVhZGVycyk6CmBgYGJhc2gKY21ha2UgLURDTUFLRV9CVUlMRF9UWVBFPURlYnVnIFwKICAgICAgLURaU1dBR19FTkFCTEVfQ09WRVJBR0U9T04gXAogICAgICAtRFpTV0FHX0VOQUJMRV9URVNUSU5HPU9OIFwKICAgICAgLURaU1dBR19CVUlMRF9XSEVFTFM9T04gXAogICAgICAtRFpTV0FHX0tFWUNIQUlOX1NVUFBPUlQ9T0ZGIC4uCmBgYApOb3RlOiBUaGlzIHJlcXVpcmVzIGBweXRob24zLWRldmAgcGFja2FnZSAoVWJ1bnR1L0RlYmlhbikgb3IgZXF1aXZhbGVudCBvbiB5b3VyIHN5c3RlbS4KCiMjIENJL0NEIGFuZCBSZWxlYXNlIFByb2Nlc3MKCiMjIyBDb250aW51b3VzIEludGVncmF0aW9uCgpUaGUgcHJvamVjdCB1c2VzIEdpdEh1YiBBY3Rpb25zIGZvciBhdXRvbWF0ZWQgYnVpbGRpbmcgYW5kIGRlcGxveW1lbnQ6CgotICoqUGxhdGZvcm1zKio6IExpbnV4ICh4ODZfNjQpLCBtYWNPUyAoSW50ZWwgeDg2XzY0IGFuZCBBcHBsZSBTaWxpY29uIGFybTY0KSwgV2luZG93cyAoeDY0KQotICoqUHl0aG9uIHZlcnNpb25zKio6IDMuMTAsIDMuMTEsIDMuMTIsIDMuMTMKLSAqKlRyaWdnZXJzKio6IFB1bGwgcmVxdWVzdHMsIHB1c2hlcyB0byBtYWluIGJyYW5jaCwgYW5kIHZlcnNpb24gdGFncwoKIyMjIFJlbGVhc2UgUHJvY2VzcwoKUmVsZWFzZXMgYXJlIGF1dG9tYXRlZCB0aHJvdWdoIHRoZSBDSS9DRCBwaXBlbGluZToKCjEuICoqVXBkYXRlIHZlcnNpb24qKjogTW9kaWZ5IGBaU1dBR19WRVJTSU9OYCBpbiBgQ01ha2VMaXN0cy50eHRgCjIuICoqQ3JlYXRlIHJlbGVhc2UgdGFnKio6IFRhZyB0aGUgY29tbWl0IHdpdGggYHZ7dmVyc2lvbn1gIChlLmcuLCBgdjEuNy4yYCkKMy4gKipBdXRvbWF0aWMgZGVwbG95bWVudCoqOiBUaGUgQ0kgcGlwZWxpbmUgd2lsbDoKICAgLSBWYWxpZGF0ZSB0aGF0IHRoZSB0YWcgdmVyc2lvbiBtYXRjaGVzIHRoZSBDTWFrZSB2ZXJzaW9uCiAgIC0gQnVpbGQgd2hlZWxzIGZvciBhbGwgc3VwcG9ydGVkIHBsYXRmb3JtcwogICAtIERlcGxveSB0byBQeVBJIGF1dG9tYXRpY2FsbHkKCiMjIyBEZXZlbG9wbWVudCBTbmFwc2hvdHMKClB1c2hlcyB0byB0aGUgbWFpbiBicmFuY2ggYXV0b21hdGljYWxseSBjcmVhdGUgZGV2ZWxvcG1lbnQgcmVsZWFzZXM6Ci0gVmVyc2lvbiBmb3JtYXQ6IGB7YmFzZV92ZXJzaW9ufS5kZXZ7Y29tbWl0X2NvdW50fWAgKGUuZy4sIGAxLjcuMi5kZXYzYCkKLSBBdXRvbWF0aWNhbGx5IGRlcGxveWVkIHRvIFB5UEkgZm9yIHRlc3RpbmcKCiMjIyBWZXJzaW9uIFZhbGlkYXRpb24KClRoZSBidWlsZCBwcm9jZXNzIGVuc3VyZXMgdmVyc2lvbiBjb25zaXN0ZW5jeToKLSBHaXQgdGFncyBtdXN0IG1hdGNoIHRoZSB2ZXJzaW9uIGluIGBDTWFrZUxpc3RzLnR4dGAKLSBNaXNtYXRjaGVkIHZlcnNpb25zIHdpbGwgY2F1c2UgdGhlIGJ1aWxkIHRvIGZhaWwKLSBUaGlzIHByZXZlbnRzIGFjY2lkZW50YWwgZGVwbG95bWVudCBvZiBpbmNvcnJlY3QgdmVyc2lvbnMKCiMjIE9wZW5BUEkgR2VuZXJhdG9yIENMSQoKQWZ0ZXIgaW5zdGFsbGluZyBgenN3YWdgIHZpYSBwaXAgYXMgW2Rlc2NyaWJlZCBhYm92ZV0oI2Zvci1weXRob24tdXNlcnMpLAp5b3UgY2FuIHJ1biBgcHl0aG9uIC1tIHpzd2FnLmdlbmAsIGEgQ0xJIHRvIGdlbmVyYXRlIE9wZW5BUEkgWUFNTCBmaWxlcy4KVGhlIENMSSBvZmZlcnMgdGhlIGZvbGxvd2luZyBvcHRpb25zCgpgYGAKdXNhZ2U6IFpzZXJpbyBPcGVuQXBpIFlBTUwgR2VuZXJhdG9yIFstaF0gLXMgc2VydmljZS1pZGVudGlmaWVyIC1pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6c2VyaW8tb3ItcHl0aG9uLXBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFstciB6c2VyaW8tc3JjLXJvb3QtZGlyXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWy1wIHRvcC1sZXZlbC1wYWNrYWdlXSBbLWMgdGFncyBbdGFncyAuLi5dXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWy1vIG91dHB1dF0gWy1iIEJBU0VfQ09ORklHX1lBTUxdCgpvcHRpb25hbCBhcmd1bWVudHM6CiAgLWgsIC0taGVscAogICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKICAtcyBzZXJ2aWNlLWlkZW50aWZpZXIsIC0tc2VydmljZSBzZXJ2aWNlLWlkZW50aWZpZXIKCiAgICAgICAgRnVsbHkgcXVhbGlmaWVkIHpzZXJpbyBzZXJ2aWNlIGlkZW50aWZpZXIuCgogICAgICAgIEV4YW1wbGU6CiAgICAgICAgICAgIC1zIG15LnBhY2thZ2UuU2VydmljZUNsYXNzCgogIC1pIHpzZXJpby1vci1weXRob24tcGF0aCwgLS1pbnB1dCB6c2VyaW8tb3ItcHl0aG9uLXBhdGgKCiAgICAgICAgQ2FuIGJlIGVpdGhlciAuLi4KICAgICAgICAoQSkgUGF0aCB0byBhIHpzZXJpbyAuenMgZmlsZS4gTXVzdCBiZSBlaXRoZXIgYSB0b3AtCiAgICAgICAgICAgIGxldmVsIGVudHJ5cG9pbnQgKGUuZy4gYWxsLnpzKSwgb3IgYSBzdWJwYWNrYWdlCiAgICAgICAgICAgIChlLmcuIHNlcnZpY2VzL215c2VydmljZS56cykgaW4gY29uanVuY3Rpb24gd2l0aAogICAgICAgICAgICBhICItLXpzZXJpby1zb3VyY2Utcm9vdHwtciA8ZGlyPiIgYXJndW1lbnQuCiAgICAgICAgKEIpIFBhdGggdG8gcGFyZW50IGRpciBvZiBhIHpzZXJpbyBQeXRob24gcGFja2FnZS4KCiAgICAgICAgRXhhbXBsZXM6CiAgICAgICAgICAgIC1pIHBhdGgvdG8vc2NoZW1hL21haW4uenMgICAgICAgICAoQSkKICAgICAgICAgICAgLWkgcGF0aC90by9weXRob24vcGFja2FnZS9wYXJlbnQgIChCKQoKICAtciB6c2VyaW8tc3JjLXJvb3QtZGlyLCAtLXpzZXJpby1zb3VyY2Utcm9vdCB6c2VyaW8tc3JjLXJvb3QtZGlyCgogICAgICAgIFdoZW4gLWkgc3BlY2lmaWVzIGEgenMgZmlsZSAoT3B0aW9uIEEpLCBpbmRpY2F0ZSB0aGUKICAgICAgICBkaXJlY3RvcnkgZm9yIHRoZSB6c2VyaW8gLXNyYyBkaXJlY3RvcnkgYXJndW1lbnQuIElmCiAgICAgICAgbm90IHNwZWNpZmllZCwgdGhlIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlIHpzIGZpbGUKICAgICAgICB3aWxsIGJlIHVzZWQuCgogIC1wIHRvcC1sZXZlbC1wYWNrYWdlLCAtLXBhY2thZ2UgdG9wLWxldmVsLXBhY2thZ2UKCiAgICAgICAgV2hlbiAtaSBzcGVjaWZpZXMgYSB6cyBmaWxlIChPcHRpb24gQSksIGluZGljYXRlCiAgICAgICAgdGhhdCBhIHNwZWNpZmljIHRvcC1sZXZlbCB6c2VyaW8gcGFja2FnZSBuYW1lCiAgICAgICAgc2hvdWxkIGJlIHVzZWQuCgogICAgICAgIEV4YW1wbGVzOgogICAgICAgICAgICAtcCB6c2VyaW9fcGtnX25hbWUKCiAgLWMgdGFncyBbdGFncyAuLi5dLCAtLWNvbmZpZyB0YWdzIFt0YWdzIC4uLl0KCiAgICAgICAgQ29uZmlndXJhdGlvbiB0YWdzIGZvciBhIHNwZWNpZmljIG9yIGFsbCBtZXRob2RzLgogICAgICAgIFRoZSBhcmd1bWVudCBzeW50YXggZm9sbG93cyB0aGlzIHBhdHRlcm46CgogICAgICAgICAgIFsoc2VydmljZS1tZXRob2QtbmFtZSk6XShjb21tYS1zZXBhcmF0ZWQtdGFncykKCiAgICAgICAgTm90ZTogVGhlIC1jIGFyZ3VtZW50IG1heSBiZSBhcHBsaWVkIG11bHRpcGxlIHRpbWVzLgogICAgICAgIFRoZSBgY29tbWEtc2VwYXJhdGVkLXRhZ3NgIG11c3QgYmUgYSBsaXN0IG9mIHRhZ3MKICAgICAgICB3aGljaCBpbmRpY2F0ZSBPcGVuQXBpIG1ldGhvZCBnZW5lcmF0b3IgcHJlZmVyZW5jZXMuCiAgICAgICAgVGhlIGZvbGxvd2luZyB0YWdzIGFyZSBzdXBwb3J0ZWQ6CgogICAgICAgIGdldHxwdXR8cG9zdHxkZWxldGUgOiBIVFRQIG1ldGhvZCB0YWdzCiAgICAgICAgICAgICAgICBxdWVyeXxwYXRofCA6IFBhcmFtZXRlciBsb2NhdGlvbiB0YWdzCiAgICAgICAgICAgICAgICBoZWFkZXJ8Ym9keQogICAgICAgICAgICAgICAgICBmbGF0fGJsb2IgOiBGbGF0dGVuIHJlcXVlc3Qgb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBwYXNzIGl0IGFzIHdob2xlIGJsb2IuCiAgICAgICAgICAocGFyYW0tc3BlY2lmaWVyKSA6IFNwZWNpZnkgcGFyYW1ldGVyIG5hbWUsIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbG9jYXRpb24gZm9yIGEgc3BlY2lmaWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC1wYXJ0LiBTZWUgYmVsb3cuCiAgICAgICAgICAgIHNlY3VyaXR5PShuYW1lKSA6IFNldCBhIHBhcnRpY3VsYXIgc2VjdXJpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lIHRvIGJlIHVzZWQuIFRoZSBzY2hlbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscyBtdXN0IGJlIHByb3ZpZGVkIHRocm91Z2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIC0tYmFzZS1jb25maWcteWFtbC4KICAgICAgICAgcGF0aD0obWV0aG9kLXBhdGgpIDogU2V0IGEgcGFydGljdWxhciBtZXRob2QgcGF0aC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF5IGNvbnRhaW4gcGxhY2Vob2xkZXJzIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIHBhcmFtcy4KCiAgICAgICAgQSAocGFyYW0tc3BlY2lmaWVyKSB0YWcgaGFzIHRoZSBmb2xsb3dpbmcgc2NoZW1hOgoKICAgICAgICAgICAgKGZpZWxkP25hbWU9Li4uCiAgICAgICAgICAgICAgICAgICZpbj1bcGF0aHxib2R5fHF1ZXJ5fGhlYWRlcl0KICAgICAgICAgICAgICAgICAgJmZvcm1hdD1bYmluYXJ5fGJhc2U2NHxoZXhdCiAgICAgICAgICAgICAgICAgIFsmc3R5bGU9Li4uXQogICAgICAgICAgICAgICAgICBbJmV4cGxvZGU9Li4uXSkKCiAgICAgICAgRXhhbXBsZXM6CgogICAgICAgICAgRXhwb3NlIGFsbCBtZXRob2RzIGFzIFBPU1QsIGJ1dCBgZ2V0TGF5ZXJCeVRpbGVJZGAKICAgICAgICAgIGFzIEdFVCB3aXRoIGZsYXQgcGF0aC1wYXJhbWV0ZXJzOgoKICAgICAgICAgICAgYC1jIHBvc3QgZ2V0TGF5ZXJCeVRpbGVJZDpnZXQsZmxhdCxwYXRoYAoKICAgICAgICAgIEZvciBteU1ldGhvZCwgcHV0IHRoZSB3aG9sZSByZXF1ZXN0IGJsb2IgaW50byB0aGUgYQogICAgICAgICAgcXVlcnkgImRhdGEiIHBhcmFtZXRlciBhcyBiYXNlNjQ6CgogICAgICAgICAgICBgLWMgbXlNZXRob2Q6Kj9uYW1lPWRhdGEmaW49cXVlcnkmZm9ybWF0PWJhc2U2NGAKCiAgICAgICAgICBGb3IgbXlNZXRob2QsIHNldCB0aGUgIkF3ZXNvbWVBdXRoIiBhdXRoIHNjaGVtZToKCiAgICAgICAgICAgIGAtYyBteU1ldGhvZDpzZWN1cml0eT1Bd2Vzb21lQXV0aGAKCiAgICAgICAgICBGb3IgbXlNZXRob2QsIHByb3ZpZGUgdGhlIHBhdGggYW5kIHBsYWNlIG15RmllbGQKICAgICAgICAgIGV4cGxpY2l0ZWx5IGluIGEgcGF0aCBwbGFjZWhvbGRlcjoKCiAgICAgICAgICAgIGAtYyAnbXlNZXRob2Q6cGF0aD0vbXktbWV0aG9kL3twYXJhbX0sLi4uCiAgICAgICAgICAgICAgICAgbXlGaWVsZD9uYW1lPXBhcmFtJmluPXBhdGgmZm9ybWF0PXN0cmluZydgCgogICAgICAgIE5vdGU6CiAgICAgICAgICAgICogVGhlIEhUVFAtbWV0aG9kIGRlZmF1bHRzIHRvIGBwb3N0YC4KICAgICAgICAgICAgKiBUaGUgcGFyYW1ldGVyICdpbicgZGVmYXVsdHMgdG8gYHF1ZXJ5YCBmb3IKICAgICAgICAgICAgICBgZ2V0YCwgYGJvZHlgIG90aGVyd2lzZS4KICAgICAgICAgICAgKiBJZiBhIG1ldGhvZCB1c2VzIGEgcGFyYW1ldGVyIHNwZWNpZmllciwgdGhlCiAgICAgICAgICAgICAgYGZsYXRgLCBgYm9keWAsIGBxdWVyeWAsIGBwYXRoYCwgYGhlYWRlcmAgYW5kCiAgICAgICAgICAgICAgYGJvZHlgLXRhZ3MgYXJlIGlnbm9yZWQuCiAgICAgICAgICAgICogVGhlIGBmbGF0YCB0YWcgaXMgb25seSBtZWFuaW5nZnVsIGluIGNvbmp1bmN0aW9uCiAgICAgICAgICAgICAgd2l0aCBgcXVlcnlgIG9yIGBwYXRoYC4KICAgICAgICAgICAgKiBBbiB1bnNwZWNpZmljIHRhZyBsaXN0IChubyBzZXJ2aWNlLW1ldGhvZC1uYW1lKQogICAgICAgICAgICAgIGFmZmVjdHMgdGhlIGRlZmF1bHRzIG9ubHkgZm9yIGZvbGxvd2luZywgbm90CiAgICAgICAgICAgICAgcHJlY2VkaW5nIHNwZWNpYWxpemVkIHRhZyBhc3NpZ25tZW50cy4KCiAgLW8gb3V0cHV0LCAtLW91dHB1dCBvdXRwdXQKCiAgICAgICAgT3V0cHV0IGZpbGUgcGF0aC4gSWYgbm90IHNwZWNpZmllZCwgdGhlIG91dHB1dCB3aWxsIGJlCiAgICAgICAgd3JpdHRlbiB0byBzdGRvdXQuCgogIC1iIEJBU0VfQ09ORklHX1lBTUwsIC0tYmFzZS1jb25maWcteWFtbCBCQVNFX0NPTkZJR19ZQU1MCgogICAgICAgIEJhc2UgY29uZmlndXJhdGlvbiBmaWxlLiBDYW4gYmUgdXNlZCB0byBmdWxseSBvciBwYXJ0aWFsbHkKICAgICAgICBzdWJzdGl0dXRlIC0tY29uZmlnIGFyZ3VtZW50cywgYW5kIHRvIHByb3ZpZGUgYWRkaXRpb25hbAogICAgICAgIE9wZW5BUEkgaW5mb3JtYXRpb24uIFRoZSBZQU1MIGZpbGUgbXVzdCBsb29rIGxpa2UgdGhpczoKCiAgICAgICAgICBtZXRob2Q6ICMgT3B0aW9uYWwgbWV0aG9kIHRhZ3MgZGljdGlvbmFyeQogICAgICAgICAgICA8bWV0aG9kLW5hbWV8Kj46IDxsaXN0IG9mIGNvbmZpZyB0YWdzPgogICAgICAgICAgc2VjdXJpdHlTY2hlbWVzOiAuLi4gIyBPcHRpb25hbCBPcGVuQVBJIHNlY3VyaXR5U2NoZW1lcwogICAgICAgICAgaW5mbzogLi4uICAgICAgICAgICAgIyBPcHRpb25hbCBPcGVuQVBJIGluZm8gc2VjdGlvbgogICAgICAgICAgc2VydmVyczogLi4uICAgICAgICAgIyBPcHRpb25hbCBPcGVuQVBJIHNlcnZlcnMgc2VjdGlvbgogICAgICAgICAgc2VjdXJpdHk6IC4uLiAgICAgICAgIyBPcHRpb25hbCBPcGVuQVBJIGdsb2JhbCBzZWN1cml0eQpgYGAKCiMjIyBHZW5lcmF0b3IgVXNhZ2UgZXhhbXBsZQoKTGV0J3MgY29uc2lkZXIgdGhlIGZvbGxvd2luZyB6c2VyaW8gc2VydmljZSBzYXZlZCB1bmRlciBgbXlhcHAvc2VydmljZXMuenNgOgoKYGBgCnBhY2thZ2Ugc2VydmljZXM7CgpzdHJ1Y3QgUmVxdWVzdCB7CiAgaW50MzIgdmFsdWU7Cn07CgpzdHJ1Y3QgUmVzcG9uc2UgewogIGludDMyIHZhbHVlOwp9OwoKc2VydmljZSBNeVNlcnZpY2UgewogIFJlc3BvbnNlIG15QXBpKFJlcXVlc3QpOwp9OwpgYGAKCkFuIE9wZW5BUEkgZmlsZSBgYXBpLnlhbWxgIGZvciBgTXlTZXJ2aWNlYCBjYW4gbm93IGJlCmNyZWF0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIGB6c3dhZy5nZW5gIGludm9jYXRpb246CgpgYGBiYXNoCmNkIG15YXBwCnB5dGhvbiAtbSB6c3dhZy5nZW4gLXMgc2VydmljZXMuTXlTZXJ2aWNlIC1pIHNlcnZpY2VzLnpzIC1vIGFwaS55YW1sCmBgYAoKWW91IGNhbiBmdXJ0aGVyIGN1c3RvbWl6ZSB0aGUgZ2VuZXJhdGlvbiB1c2luZyBgLWNgIGNvbmZpZ3VyYXRpb24KYXJndW1lbnRzLiBGb3IgZXhhbXBsZSwgYC1jIGdldCxmbGF0LHBhdGhgIHdpbGwgcmVjdXJzaXZlbHkgImZsYXR0ZW4iCnRoZSB6c2VyaW8gcmVxdWVzdCBvYmplY3QgaW50byBpdCdzIGNvbXBvdW5kIHNjYWxhciBmaWVsZHMgdXNpbmcKW3gtenNlcmlvLXJlcXVlc3QtcGFydF0oI3VybC1zY2FsYXItcGFyYW1ldGVyKSBmb3IgYWxsIG1ldGhvZHMuCklmIHlvdSB3YW50IHRvIGNoYW5nZSBPcGVuQVBJIHBhcmFtZXRlcnMgb25seSBmb3Igb25lIHBhcnRpY3VsYXIKbWV0aG9kLCB5b3UgY2FuIHByZWZpeCB0aGUgdGFnIGNvbmZpZyBhcmd1bWVudCB3aXRoIHRoZSBtZXRob2QKbmFtZSAoYC1jIG1ldGhvZE5hbWU6dGFncy4uLmApLgoKIyMjIERvY3VtZW50YXRpb24gRXh0cmFjdGlvbgoKV2hlbiBpbnZva2luZyBgenN3YWcuZ2VuYCB3aXRoIGAtaSB6c2VyaW8tZmlsZWAgYW4gYXR0ZW1wdAp3aWxsIGJlIG1hZGUgdG8gcG9wdWxhdGUgdGhlIHNlcnZpY2UvbWV0aG9kL3JlcXVlc3QvcmVzcG9uc2UKZGVzY3JpcHRpb25zIHdpdGggZG9jLXN0cmluZ3MgdGhhdCBhcmUgZXh0cmFjdGVkIGZyb20gdGhlIHpzZXJpbwpzb3VyY2VzLgoKRm9yIHN0cnVjdHMgYW5kIHNlcnZpY2VzLCB0aGUgZG9jdW1lbnRhdGlvbiBpcyBleHBlY3RlZCB0byBiZQplbmNsb3NlZCBieSBgLyohIC4uLi4gISovYCBtYXJrZXJzIHByZWNlZGluZyB0aGUgZGVjbGFyYXRpb246CgpgYGBDCi8qIQojIyMgTXkgTWFya2Rvd24gU3RydWN0IERvYwpJIGNob29zZSB0byBfX2hpZ2hsaWdodF9fIHRoaXMgd29yZC4KISovCgpzdHJ1Y3QgTXlTdHJ1Y3QgewogICAgLi4uCn07CmBgYAoKRm9yIHNlcnZpY2UgbWV0aG9kcywgYSBzaW5nbGUtbGluZSBkb2Mtc3RyaW5nIGlzIHBhcnNlZCB3aGljaAppbW1lZGlhdGVseSBwcmVjZWRlcyB0aGUgZGVjbGFyYXRpb246CgpgYGBDCi8qKiBUaGlzIG1ldGhvZCBpcyBkb2N1bWVudGVkLiAqLwpSZXR1cm5UeXBlIG15TWV0aG9kKEFyZ3VtZW50VHlwZSk7CmBgYAoKIyMgU2VydmVyIENvbXBvbmVudAoKVGhlIGBPQVNlcnZlcmAgY29tcG9uZW50IGdpdmVzIHlvdSB0aGUgcG93ZXIgdG8gbWFycnkgYSB6c2VyaW8tZ2VuZXJhdGVkIGFwcApzZXJ2ZXIgY2xhc3Mgd2l0aCBhIHVzZXItd3JpdHRlbiBhcHAgY29udHJvbGxlciBhbmQgYSBmaXR0aW5nIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4KSXQgaXMgYmFzZWQgb24gW0ZsYXNrXShodHRwczovL2ZsYXNrLnBhbGxldHNwcm9qZWN0cy5jb20vZW4vMS4xLngvKSBhbmQKW0Nvbm5leGlvbl0oaHR0cHM6Ly9jb25uZXhpb24ucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0LykuCgoqKkltcGxlbWVudGF0aW9uIGNob2ljZSByZWdhcmRpbmcgSFRUUCByZXNwb25zZSBjb2RlczoqKiBUaGUgc2VydmVyIGFzIGltcGxlbWVudGVkCmhlcmUgd2lsbCByZXR1cm4gSFRUUCBjb2RlIGA0MDBgIChCYWQgUmVxdWVzdCkgd2hlbiB0aGUgdXNlciByZXF1ZXN0IGNvdWxkIG5vdApiZSBwYXJzZWQsIGFuZCBgNTAwYCAoSW50ZXJuYWwgU2VydmVyIEVycm9yKSB3aGVuIGEgZGlmZmVyZW50IGV4Y2VwdGlvbiBvY2N1cnJlZCB3aGlsZQpnZW5lcmF0aW5nIHRoZSByZXNwb25zZS9ydW5uaW5nIHRoZSB1c2VyJ3MgY29udHJvbGxlciBpbXBsZW1lbnRhdGlvbi4KCiMjIyBJbnRlZ3JhdGlvbiBFeGFtcGxlCgpXZSBjb25zaWRlciB0aGUgc2FtZSBgbXlhcHBgIGRpcmVjdG9yeSB3aXRoIGEgYHNlcnZpY2VzLnpzYCB6c2VyaW8gZmlsZQphcyBhbHJlYWR5IHVzZWQgaW4gdGhlIFtPcGVuQVBJIEdlbmVyYXRvciBFeGFtcGxlXSgjZ2VuZXJhdG9yLXVzYWdlLWV4YW1wbGUpLgoKKipOb3RlOioqCgoqIGBteWFwcGAgbXVzdCBiZSBhdmFpbGFibGUgYXMgYSBtb2R1bGUgKGl0IG11c3QgYmUKcG9zc2libGUgdG8gYGltcG9ydCBteWFwcGApLiAKKiBXZSByZWNvbW1lbmQgdG8gcnVuIHRoZSB6c2VyaW8gUHl0aG9uIGdlbmVyYXRvciBpbnZvY2F0aW9uCiAgaW5zaWRlIHRoZSBgbXlhcHBgIG1vZHVsZSdzIGBfX2luaXRfXy5weWAsIGxpa2UgdGhpczoKCmBgYHB5CmltcG9ydCB6c2VyaW8KZnJvbSBvcy5wYXRoIGltcG9ydCBkaXJuYW1lLCBhYnNwYXRoCgp3b3JraW5nX2RpciA9IGRpcm5hbWUoYWJzcGF0aChfX2ZpbGVfXykpCnpzZXJpby5nZW5lcmF0ZSgKICB6c19kaXI9d29ya2luZ19kaXIsCiAgbWFpbl96c19maWxlPSJzZXJ2aWNlcy56cyIsCiAgZ2VuX2Rpcj13b3JraW5nX2RpcikKYGBgCgpBIHNlcnZlciBzY3JpcHQgbGlrZSBgbXlhcHAvc2VydmVyLnB5YCBtaWdodCB0aGVuIGxvb2sgYXMgZm9sbG93czoKCmBgYHB5CmltcG9ydCB6c3dhZwppbXBvcnQgbXlhcHAuY29udHJvbGxlciBhcyBjb250cm9sbGVyCmZyb20gbXlhcHAgaW1wb3J0IHdvcmtpbmdfZGlyCgojIFRoaXMgaW1wb3J0IG9ubHkgd29ya3MgYWZ0ZXIgenNlcmlvIGdlbmVyYXRpb24uCmltcG9ydCBzZXJ2aWNlcy5hcGkgYXMgc2VydmljZXMKCmFwcCA9IHpzd2FnLk9BU2VydmVyKAogIGNvbnRyb2xsZXJfbW9kdWxlPWNvbnRyb2xsZXIsCiAgc2VydmljZV90eXBlPXNlcnZpY2VzLk15U2VydmljZS5TZXJ2aWNlLAogIHlhbWxfcGF0aD13b3JraW5nX2RpcisiL2FwaS55YW1sIiwKICB6c19wa2dfcGF0aD13b3JraW5nX2RpcikKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBhcHAucnVuKCkKYGBgCgpUaGUgc2VydmVyIHNjcmlwdCBhYm92ZSByZWZlcmVuY2VzIHR3byBpbXBvcnRhbnQgY29tcG9uZW50czoKKiBBbiAqKk9wZW5BUEkgZmlsZSoqIChgbXlhcHAvYXBpLnlhbWxgKTogVXBvbiBzdGFydHVwLCBgT0FTZXJ2ZXJgCiAgd2lsbCBvdXRwdXQgYW4gZXJyb3IgbWVzc2FnZSBpZiB0aGlzIGZpbGUgZG9lcyBub3QgZXhpc3QuIFRoZQogIGVycm9yIG1lc3NhZ2UgYWxyZWFkeSBjb250YWlucyB0aGUgY29ycmVjdCBjb21tYW5kIHRvCiAgaW52b2tlIHRoZSBbT3BlbkFQSSBHZW5lcmF0b3IgQ0xJXSgjb3BlbmFwaS1nZW5lcmF0b3ItY2xpKQogIHRvIGdlbmVyYXRlIGBteWFwcC9hcGkueWFtbGAuCiogQSAqKmNvbnRyb2xsZXIgbW9kdWxlKiogKGBteWFwcC9jb250cm9sbGVyLnB5YCk6IFRoaXMgZmlsZSBwcm92aWRlcwogIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb25zIGZvciB5b3VyIHNlcnZpY2UgZW5kcG9pbnRzLgogIApGb3IgdGhlIGN1cnJlbnQgZXhhbXBsZSwgYGNvbnRyb2xsZXIucHlgIG1pZ2h0IGxvb2sgYXMgZm9sbG93czoKCmBgYHB5CmltcG9ydCBzZXJ2aWNlcy5hcGkgYXMgc2VydmljZXMKCiMgV3JpdHRlbiBieSB5b3UKZGVmIG15X2FwaShyZXF1ZXN0OiBzZXJ2aWNlcy5SZXF1ZXN0KToKICAgIHJldHVybiBzZXJ2aWNlcy5SZXNwb25zZShyZXF1ZXN0LnZhbHVlICogNDIpCmBgYAoKIyMgVXNpbmcgdGhlIFB5dGhvbiBDbGllbnQKClRoZSBnZW5lcmljIFB5dGhvbiBjbGllbnQgdGFsa3MgdG8gYW55IHpzZXJpbyBzZXJ2aWNlIHRoYXQgaXMgcnVubmluZwp2aWEgSFRUUC9SRVNULCBhbmQgcHJvdmlkZXMgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIG9mIGl0J3MgaW50ZXJmYWNlLgoKIyMjIEludGVncmF0aW9uIEV4YW1wbGUKCkFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIGEgUHl0aG9uIG1vZHVsZSBjYWxsZWQgYG15YXBwYCB3aGljaCBoYXMgdGhlCnNhbWUgYG15YXBwL19faW5pdF9fLnB5YCBhbmQgYG15YXBwL3NlcnZpY2VzLnpzYCB6c2VyaW8gZGVmaW5pdGlvbiBhcwpbcHJldmlvdXNseSBtZW50aW9uZWRdKCNnZW5lcmF0b3ItdXNhZ2UtZXhhbXBsZSkuIFdlIGNvbnNpZGVyCnRoYXQgdGhlIHNlcnZlciBpcyBwcm92aWRpbmcgaXRzIE9wZW5BUEkgc3BlYyB1bmRlciBgbG9jYWxob3N0OjUwMDAvb3BlbmFwaS5qc29uYC4KCkluIHRoaXMgc2V0dGluZywgYSBjbGllbnQgYG15YXBwL2NsaWVudC5weWAgbWlnaHQgbG9vayBhcyBmb2xsb3dzOgoKYGBgcHl0aG9uCmZyb20genN3YWcgaW1wb3J0IE9BQ2xpZW50CmltcG9ydCBzZXJ2aWNlcy5hcGkgYXMgc2VydmljZXMKCm9wZW5hcGlfdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9vcGVuYXBpLmpzb24iCgojIFRoZSBjbGllbnQgcmVhZHMgcGVyLW1ldGhvZCBIVFRQIGRldGFpbHMgZnJvbSB0aGUgT3BlbkFQSSBVUkwuCiMgWW91IGNhbiBhbHNvIHBhc3MgYSBsb2NhbCBmaWxlIGJ5IHNldHRpbmcgdGhlIGBpc19sb2NhbF9maWxlYCBhcmd1bWVudAojIG9mIHRoZSBPQUNsaWVudCBjb25zdHJ1Y3Rvci4KY2xpZW50ID0gc2VydmljZXMuTXlTZXJ2aWNlLkNsaWVudChPQUNsaWVudChvcGVuYXBpX3VybCkpCgojIFRoaXMgd2lsbCB0cmlnZ2VyIGFuIEhUVFAgcmVxdWVzdCB1bmRlciB0aGUgaG9vZC4KY2xpZW50Lm15X2FwaShzZXJ2aWNlcy5SZXF1ZXN0KDEpKQpgYGAKCkFzIHlvdSBjYW4gc2VlLCBhbiBpbnN0YW5jZSBvZiBgT0FDbGllbnRgIGlzIHBhc3NlZCBpbnRvIHRoZSBjb25zdHJ1Y3Rvcgpmb3IgenNlcmlvIHRvIHVzZSBhcyB0aGUgc2VydmljZSBjbGllbnQncyB0cmFuc3BvcnQgaW1wbGVtZW50YXRpb24uCgoqKk5vdGU6KiogV2hpbGUgY29ubmVjdGluZywgdGhlIGNsaWVudCB3aWxsIGFsc28gdXNlIC4uLgoxLiBbUGVyc2lzdGVudCBIVFRQIGNvbmZpZ3VyYXRpb25dKCNwZXJzaXN0ZW50LWh0dHAtaGVhZGVycy1wcm94eS1jb29raWUtYW5kLWF1dGhlbnRpY2F0aW9uKS4KMi4gQWRkaXRpb25hbCBIVFRQIHF1ZXJ5L2hlYWRlci9jb29raWUvcHJveHkvYmFzaWMtYXV0aCBjb25maWdzIHBhc3NlZAogICBpbnRvIHRoZSBgT0FDbGllbnRgIGNvbnN0cnVjdG9yIHVzaW5nIGFuIGluc3RhbmNlIG9mIGB6c3dhZy5IVFRQQ29uZmlnYC4KICAgRm9yIGV4YW1wbGU6CiAgIAogICBgYGBweXRob24KICAgZnJvbSB6c3dhZyBpbXBvcnQgT0FDbGllbnQsIEhUVFBDb25maWcKICAgaW1wb3J0IHNlcnZpY2VzLmFwaSBhcyBzZXJ2aWNlcwogICBjb25maWcgPSBIVFRQQ29uZmlnKCkgXAogICAgICAgLmhlYWRlcihrZXk9IlgtTXktSGVhZGVyIiwgdmFsPSJ2YWx1ZSIpIFwgICMgQ2FuIGJlIHNwZWNpZmllZCAKICAgICAgIC5jb29raWUoa2V5PSJNeUNvb2tpZSIsIHZhbD0idmFsdWUiKSAgICBcICAjIG11bHRpcGxlIHRpbWVzLgogICAgICAgLnF1ZXJ5KGtleT0iTXlDb29raWUiLCB2YWw9InZhbHVlIikgICAgIFwgICMgCiAgICAgICAucHJveHkoaG9zdD0ibG9jYWxob3N0IiwgcG9ydD01MDUwLCB1c2VyPSJqb2huIiwgcHc9ImRvZSIpIFwKICAgICAgIC5iYXNpY19hdXRoKHVzZXI9ImpvaG4iLCBwdz0iZG9lIikgXAogICAgICAgLmJlYXJlcigiYmVhcmVyLXRva2VuIikgXAogICAgICAgLmFwaV9rZXkoInRva2VuIikKICAgCiAgIGNsaWVudCA9IHNlcnZpY2VzLk15U2VydmljZS5DbGllbnQoCiAgICAgICBPQUNsaWVudCgiaHR0cDovL2xvY2FsaG9zdDo4MDgwL29wZW5hcGkuIiwgY29uZmlnPWNvbmZpZykpCiAgIAogICAjIEFsdGVybmF0aXZlIHdoZW4gc3BlY2lmeWluZyBhcGkta2V5IG9yIGJlYXJlcgogICBjbGllbnQgPSBzZXJ2aWNlcy5NeVNlcnZpY2UuQ2xpZW50KAogICAgICAgT0FDbGllbnQoImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9vcGVuYXBpLiIsIGFwaV9rZXk9InRva2VuIiwgYmVhcmVyPSJ0b2tlbiIpKQogICBgYGAKICAgCiAgICoqTm90ZToqKiBUaGUgYWRkaXRpb25hbCBgY29uZmlnYCB3aWxsIG9ubHkgZW5yaWNoLCBub3Qgb3ZlcndyaXRlIHRoZQogICBkZWZhdWx0IHBlcnNpc3RlbnQgY29uZmlndXJhdGlvbi4gSWYgeW91IHdvdWxkIGxpa2UgdG8gcHJldmVudCBwZXJzaXN0ZW50CiAgIGNvbmZpZyBmcm9tIGJlaW5nIGNvbnNpZGVyZWQgYXQgYWxsLCBzZXQgYEhUVFBfU0VUVElOR1NfRklMRWAgdG8gZW1wdHksCiAgIGUuZy4gdmlhIGBvcy5lbnZpcm9uWydIVFRQX1NFVFRJTkdTX0ZJTEUnXT0nJ2AKCiMjIEMrKyBDbGllbnQKClRoZSBnZW5lcmljIEMrKyBjbGllbnQgdGFsa3MgdG8gYW55IHpzZXJpbyBzZXJ2aWNlIHRoYXQgaXMgcnVubmluZwp2aWEgSFRUUC9SRVNULCBhbmQgcHJvdmlkZXMgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIG9mIGl0cyBpbnRlcmZhY2UuCldoZW4gdXNpbmcgdGhlIEMrKyBgT0FDbGllbnRgIHdpdGggeW91ciB6c2VyaW8gc2NoZW1hLCBtYWtlIHN1cmUKdGhhdCB0aGUgZmxhZ3MgW2Atd2l0aFR5cGVJbmZvQ29kZWAgYW5kIGAtd2l0aFJlZmxlY3Rpb25Db2RlYF0oaHR0cDovL3pzZXJpby5vcmcvZG9jL1pzZXJpb1VzZXJHdWlkZS5odG1sI3pzZXJpby1jb21tYW5kLWxpbmUtaW50ZXJmYWNlKSBhcmUgcGFzc2VkIHRvIHRoZSB6c2VyaW8gQysrIGVtaXR0ZXIuCgojIyMgSW50ZWdyYXRpb24gRXhhbXBsZQoKQXMgYW4gZXhhbXBsZSwgd2UgY29uc2lkZXIgdGhlIGBteWFwcGAgZGlyZWN0b3J5IHdoaWNoIGNvbnRhaW5zIGEgYHNlcnZpY2VzLnpzYAp6c2VyaW8gZGVmaW5pdGlvbiBhcyBbcHJldmlvdXNseSBtZW50aW9uZWRdKCNnZW5lcmF0b3ItdXNhZ2UtZXhhbXBsZSkuCgpXZSBhc3N1bWUgdGhhdCB6c3dhZyBpcyBhZGRlZCB0byBgbXlhcHBgIGFzIGEgW0dpdCBzdWJtb2R1bGVdKGh0dHBzOi8vZ2l0LXNjbS5jb20vYm9vay9lbi92Mi9HaXQtVG9vbHMtU3VibW9kdWxlcykKdW5kZXIgYG15YXBwL3pzd2FnYC4KCk5leHQgdG8gYG15YXBwL3NlcnZpY2VzLnpzYCwgd2UgcGxhY2UgYSBgbXlhcHAvQ01ha2VMaXN0cy50eHRgIHdoaWNoIGRlc2NyaWJlcyBvdXIgcHJvamVjdDoKCmBgYGNtYWtlCnByb2plY3QobXlhcHApCgojIElmIHlvdSBhcmUgbm90IGludGVyZXN0ZWQgaW4gYnVpbGRpbmcgenN3YWcgUHl0aG9uCiMgd2hlZWxzLCB5b3UgY2FuIHNldCB0aGUgZm9sbG93aW5nIG9wdGlvbjoKIyBzZXQoWlNXQUdfQlVJTERfV0hFRUxTIE9GRikKCiMgSWYgeW91ciBjb21waWxhdGlvbiBlbnZpcm9ubWVudCBkb2VzIG5vdCBwcm92aWRlCiMgbGlic2VjcmV0LCB0aGUgZm9sbG93aW5nIHN3aXRjaCB3aWxsIGRpc2FibGUga2V5Y2hhaW4gaW50ZWdyYXRpb246CiMgc2V0KFpTV0FHX0tFWUNIQUlOX1NVUFBPUlQgT0ZGKQoKIyBPcHRpb25hbDogRm9yIG9mZmxpbmUvZGlzY29ubmVjdGVkIGJ1aWxkcywgeW91IGNhbgojIHByZWRlZmluZSBkZXBlbmRlbmN5IHNvdXJjZXMgdXNpbmcgRkVUQ0hDT05URU5UX1NPVVJDRV9ESVJfKgojIHZhcmlhYmxlcyAoc2VlIFJFQURNRSBvZmZsaW5lIGJ1aWxkcyBzZWN0aW9uIGZvciBkZXRhaWxzKQoKIyBUaGlzIGlzIGhvdyBDKysgd2lsbCBrbm93IGFib3V0IHRoZSB6c3dhZyBsaWIKIyBhbmQgaXRzIGRlcGVuZGVuY2llcywgc3VjaCBhcyB6c2VyaW8uCmlmIChOT1QgVEFSR0VUIHpzd2FnKQogICAgICAgIEZldGNoQ29udGVudF9EZWNsYXJlKHpzd2FnCiAgICAgICAgICAgICAgICBHSVRfUkVQT1NJVE9SWSAiaHR0cHM6Ly9naXRodWIuY29tL25kc2V2L3pzd2FnLmdpdCIKICAgICAgICAgICAgICAgIEdJVF9UQUcgICAgICAgICJ2MS42LjciCiAgICAgICAgICAgICAgICBHSVRfU0hBTExPVyAgICBPTikKICAgICAgICBGZXRjaENvbnRlbnRfTWFrZUF2YWlsYWJsZSh6c3dhZykKZW5kaWYoKQoKZmluZF9wYWNrYWdlKE9wZW5TU0wgQ09ORklHIFJFUVVJUkVEKQp0YXJnZXRfbGlua19saWJyYXJpZXMoaHR0cGxpYiBJTlRFUkZBQ0UgT3BlblNTTDo6U1NMKQoKIyBUaGlzIGNvbW1hbmQgaXMgcHJvdmlkZWQgYnkgenN3YWcgdG8gZWFzaWx5IGNyZWF0ZQojIGEgQ01ha2UgQysrIHJlZmxlY3Rpb24gbGlicmFyeSBmcm9tIHpzZXJpbyBjb2RlLgphZGRfenNlcmlvX2xpYnJhcnkoJHtQUk9KRUNUX05BTUV9LXpzZXJpby1jcHAKICBXSVRIX1JFRkxFQ1RJT04KICBST09UICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0iCiAgRU5UUlkgc2VydmljZXMuenMKICBUT1BfTEVWRUxfUEtHIG15YXBwX3NlcnZpY2VzKQoKIyBXZSBjcmVhdGUgYSBteWFwcCBjbGllbnQgZXhlY3V0YWJsZSB3aGljaCBsaW5rcyB0bwojIHRoZSBnZW5lcmF0ZWQgenNlcmlvIEMrKyBsaWJyYXJ5IGFuZCB0aGUgenN3YWcgY2xpZW50CiMgbGlicmFyeS4KYWRkX2V4ZWN1dGFibGUoJHtQUk9KRUNUX05BTUV9IGNsaWVudC5jcHApCgojIE1ha2Ugc3VyZSB0byBsaW5rIHRvIHRoZSBgenN3YWdjbGAgdGFyZ2V0CnRhcmdldF9saW5rX2xpYnJhcmllcygke1BST0pFQ1RfTkFNRX0KICAgICR7UFJPSkVDVF9OQU1FfS16c2VyaW8tY3BwIHpzd2FnY2wpCmBgYAoKKipOb3RlOioqIE9wZW5TU0wgaXMgYXNzdW1lZCB0byBiZSBpbnN0YWxsZWQgb3IgYnVpbHQgdXNpbmcgdGhlIGBsaWJgIChub3QgYGxpYjY0YCkgZGlyZWN0b3J5IG5hbWUuCgpUaGUgYGFkZF9leGVjdXRhYmxlYCBjb21tYW5kIGFib3ZlIHJlZmVyZW5jZXMgdGhlIGZpbGUgYG15YXBwL2NsaWVudC5jcHBgLAp3aGljaCBjb250YWlucyB0aGUgY29kZSB0byBhY3R1YWxseSB1c2UgdGhlIHpzd2FnIEMrKyBjbGllbnQuCgpgYGBjcHAKI2luY2x1ZGUgInpzd2FnY2wvb2FjbGllbnQuaHBwIgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlICJteWFwcF9zZXJ2aWNlcy9zZXJ2aWNlcy9NeVNlcnZpY2UuaCIKCnVzaW5nIG5hbWVzcGFjZSB6c3dhZ2NsOwp1c2luZyBuYW1lc3BhY2UgaHR0cGNsOwpuYW1lc3BhY2UgTXlTZXJ2aWNlID0gbXlhcHBfc2VydmljZXM6OnNlcnZpY2VzOjpNeVNlcnZpY2U7CgppbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKewogICAgLy8gQXNzdW1lIHRoYXQgdGhlIHNlcnZlciBwcm92aWRlcyBpdHMgT3BlbkFQSSBkZWZpbml0aW9uIGhlcmUKICAgIGF1dG8gb3BlbkFwaVVybCA9ICJodHRwOi8vbG9jYWxob3N0OjUwMDAvb3BlbmFwaS5qc29uIjsKICAgIAogICAgLy8gQ3JlYXRlIGFuIEhUVFAgY2xpZW50IHRvIGJlIHVzZWQgYnkgb3VyIE9wZW5BUEkgY2xpZW50CiAgICBhdXRvIGh0dHBDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEh0dHBMaWJIdHRwQ2xpZW50PigpOwogICAgCiAgICAvLyBGZXRjaCB0aGUgT3BlbkFQSSBjb25maWd1cmF0aW9uIHVzaW5nIHRoZSBIVFRQIGNsaWVudAogICAgYXV0byBvcGVuQXBpQ29uZmlnID0gZmV0Y2hPcGVuQVBJQ29uZmlnKG9wZW5BcGlVcmwsICpodHRwQ2xpZW50KTsKICAgIAogICAgLy8gQ3JlYXRlIGEgWnNlcmlvIHJlZmxlY3Rpb24tYmFzZWQgT3BlbkFQSSBjbGllbnQgdGhhdAogICAgLy8gdXNlcyB0aGUgT3BlbkFQSSBjb25maWd1cmF0aW9uIHdlIGp1c3QgcmV0cmlldmVkLgogICAgYXV0byBvcGVuQXBpQ2xpZW50ID0gT0FDbGllbnQob3BlbkFwaUNvbmZpZywgc3RkOjptb3ZlKGh0dHBDbGllbnQpKTsKICAgICAgICAKICAgIC8vIENyZWF0ZSBhIE15U2VydmljZSBjbGllbnQgYmFzZWQgb24gdGhlIE9wZW5BcGktQ2xpZW50CiAgICAvLyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgenNlcmlvOjpJU2VydmljZUNsaWVudCBpbnRlcmZhY2UuCiAgICBhdXRvIG15U2VydmljZUNsaWVudCA9IE15U2VydmljZTo6Q2xpZW50KG9wZW5BcGlDbGllbnQpOwogICAgCiAgICAvLyBDcmVhdGUgdGhlIHJlcXVlc3Qgb2JqZWN0CiAgICBhdXRvIHJlcXVlc3QgPSBteWFwcF9zZXJ2aWNlczo6c2VydmljZXM6OlJlcXVlc3QoMik7CgogICAgLy8gSW52b2tlIHRoZSBSRVNUIGVuZHBvaW50LiBNaW5kIHRoYXQgeW91ciBtZXRob2QtCiAgICAvLyBuYW1lIGZyb20gdGhlIHNjaGVtYSBpcyBhcHBlbmRlZCB3aXRoIGEgIi4uLk1ldGhvZCIgc3VmZml4LgogICAgYXV0byByZXNwb25zZSA9IG15U2VydmljZUNsaWVudC5teUFwaU1ldGhvZChyZXF1ZXN0KTsKICAgIAogICAgLy8gUHJpbnQgdGhlIHJlc3BvbnNlCiAgICBzdGQ6OmNvdXQgPDwgIkdvdCAiIDw8IHJlc3BvbnNlLmdldFZhbHVlKCkgPDwgc3RkOjplbmRsOwp9CmBgYAoKKipOb3RlOioqIFdoaWxlIGNvbm5lY3RpbmcsIGBIdHRwTGliSHR0cENsaWVudGAgd2lsbCBhbHNvIHVzZSAuLi4KMS4gW1BlcnNpc3RlbnQgSFRUUCBjb25maWd1cmF0aW9uXSgjcGVyc2lzdGVudC1odHRwLWhlYWRlcnMtcHJveHktY29va2llLWFuZC1hdXRoZW50aWNhdGlvbikuCjIuIEFkZGl0aW9uYWwgSFRUUCBxdWVyeS9oZWFkZXIvY29va2llL3Byb3h5L2Jhc2ljLWF1dGggY29uZmlncyBwYXNzZWQKICAgaW50byB0aGUgYE9BQ2xpZW50YCBjb25zdHJ1Y3RvciB1c2luZyBhbiBpbnN0YW5jZSBvZiBgaHR0cGNsOjpDb25maWdgLgogICBZb3UgY2FuIGluY2x1ZGUgdGhpcyBjbGFzcyB2aWEgYCNpbmNsdWRlICJodHRwY2wvaHR0cC1zZXR0aW5ncy5ocHAiYC4KICAgVGhlIGFkZGl0aW9uYWwgYENvbmZpZ2Agd2lsbCBvbmx5IGVucmljaCwgbm90IG92ZXJ3cml0ZSB0aGUKICAgZGVmYXVsdCBwZXJzaXN0ZW50IGNvbmZpZ3VyYXRpb24uIElmIHlvdSB3b3VsZCBsaWtlIHRvIHByZXZlbnQgcGVyc2lzdGVudAogICBjb25maWcgZnJvbSBiZWluZyBjb25zaWRlcmVkIGF0IGFsbCwgc2V0IGBIVFRQX1NFVFRJTkdTX0ZJTEVgIHRvIGVtcHR5LAogICBlLmcuIHZpYSBgc2V0ZW52YC4KCiMjIENsaWVudCBFbnZpcm9ubWVudCBTZXR0aW5ncwoKQm90aCB0aGUgUHl0aG9uIGFuZCBDKysgQ2xpZW50cyBjYW4gYmUgY29uZmlndXJlZCB1c2luZyB0aGUgZm9sbG93aW5nCmVudmlyb25tZW50IHZhcmlhYmxlczoKCjwhLS0gLS04PC0tIFtzdGFydDplbnZdIC0tPgoKfCBWYXJpYWJsZSBOYW1lIHwgRGV0YWlscyAgIHwKfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tIHwKfCBgSFRUUF9TRVRUSU5HU19GSUxFYCB8IFBhdGggdG8gc2V0dGluZ3MgZmlsZSBmb3IgSFRUUCBwcm94aWVzIGFuZCBhdXRoZW50aWNhdGlvbiwgc2VlIFtuZXh0IHNlY3Rpb25dKCNwZXJzaXN0ZW50LWh0dHAtaGVhZGVycy1wcm94eS1jb29raWUtYW5kLWF1dGhlbnRpY2F0aW9uKSB8CnwgYEhUVFBfTE9HX0xFVkVMYCB8IFZlcmJvc2l0eSBsZXZlbCBmb3IgY29uc29sZS9sb2cgb3V0cHV0LiBTZXQgdG8gYGRlYnVnYCBmb3IgZGV0YWlsZWQgb3V0cHV0LiB8CnwgYEhUVFBfTE9HX0ZJTEVgIHwgTG9nZmlsZS1wYXRoIChpbmNsdWRpbmcgZmlsZW5hbWUpIHRvIHJlZGlyZWN0IGNvbnNvbGUgb3V0cHV0LiBUaGUgbG9nIHdpbGwgcm90YXRlIHdpdGggdGhyZWUgZmlsZXMgKGBIVFRQX0xPR19GSUxFYCwgYEhUVFBfTE9HX0ZJTEUtMWAsIGBIVFRQX0xPR19GSUxFLTJgKS4gfAp8IGBIVFRQX0xPR19GSUxFX01BWFNJWkVgIHwgTWF4aW11bSBzaXplIG9mIHRoZSBsb2dmaWxlLCBpbiBieXRlcy4gRGVmYXVsdHMgdG8gMUdCLiB8CnwgYEhUVFBfVElNRU9VVGAgfCBUaW1lb3V0IGZvciBIVFRQIHJlcXVlc3RzIChjb25uZWN0aW9uK3RyYW5zZmVyKSBpbiBzZWNvbmRzLiBEZWZhdWx0cyB0byA2MHMuIHwKfCBgSFRUUF9TU0xfU1RSSUNUYCB8IFNldCB0byBhbnkgbm9uZW1wdHkgdmFsdWUgZm9yIHN0cmljdCBTU0wgY2VydGlmaWNhdGUgdmFsaWRhdGlvbi4gfAoKPCEtLSAtLTg8LS0gW2VuZDplbnZdIC0tPgoKIyMgUGVyc2lzdGVudCBIVFRQIEhlYWRlcnMsIFByb3h5LCBDb29raWUgYW5kIEF1dGhlbnRpY2F0aW9uCgpCb3RoIHRoZSBQeXRob24gYE9BQ2xpZW50YCBhbmQgQysrIGBIdHRwTGliSHR0cENsaWVudGAgcmVhZCBhIFlBTUwgZmlsZQpzdG9yZWQgdW5kZXIgYSBwYXRoIHdoaWNoIGlzIGdpdmVuIGJ5IHRoZSBgSFRUUF9TRVRUSU5HU19GSUxFYCBlbnZpcm9ubWVudAp2YXJpYWJsZS4KCjwhLS0gLS04PC0tIFtzdGFydDpzZXR0aW5nc10gLS0+CgojIyMgSFRUUCBTZXR0aW5ncyBGaWxlIEZvcm1hdCAKClRoZSBZQU1MIGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIEhUVFAtcmVsYXRlZCBjb25maWdzIHRoYXQgYXJlCmFwcGxpZWQgdG8gSFRUUCByZXF1ZXN0cyBiYXNlZCBvbiBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aGljaCBpcyBtYXRjaGVkCmFnYWluc3QgdGhlIHJlcXVlc3RlZCBVUkwuCgpGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBlbnRyeSB3b3VsZCBtYXRjaCBhbGwgcmVxdWVzdHMgZHVlIHRvIHRoZSBgKmAKdXJsLW1hdGNoLXBhdHRlcm4gZm9yIHRoZSBgc2NvcGVgIGZpZWxkOgoKYGBgeWFtbApodHRwLXNldHRpbmdzOgogICMgVW5kZXIgaHR0cC1zZXR0aW5ncywgYSBsaXN0IG9mIHNldHRpbmdzIGlzIGRlZmluZWQgZm9yIHNwZWNpZmljIFVSTCBzY29wZXMuCiAgLSBzY29wZTogKiAgICAgIyBVUkwgc2NvcGUgLSBlLmcuIGh0dHBzOi8vKi5uZHMubGl2ZS8qIG9yICouZ29vZ2xlLmNvbS4KICAgIGJhc2ljLWF1dGg6ICAjIEJhc2ljIGF1dGggY3JlZGVudGlhbHMgZm9yIG1hdGNoaW5nIHJlcXVlc3RzLgogICAgICB1c2VyOiBqb2huZG9lCiAgICAgIGtleWNoYWluOiBrZXljaGFpbi1zZXJ2aWNlLXN0cmluZwogICAgICBwYXNzd29yZDogY2xlYXJ0ZXh0LXBhc3N3b3JkICAjIGFsdGVybmF0aXZlIHRvIGtleWNoYWluCiAgICBwcm94eTogICAgICAjIFByb3h5IHNldHRpbmdzIGZvciBtYXRjaGluZyByZXF1ZXN0cy4KICAgICAgaG9zdDogbG9jYWxob3N0CiAgICAgIHBvcnQ6IDg4ODgKICAgICAgdXNlcjogdGVzdAogICAgICBrZXljaGFpbjogLi4uCiAgICAgIHBhc3N3b3JkOiBjbGVhcnRleHQtcGFzc3dvcmQgICMgYWx0ZXJuYXRpdmUgdG8ga2V5Y2hhaW4KICAgIGNvb2tpZXM6ICAgICMgQWRkaXRpb25hbCBDb29raWVzIGZvciBtYXRjaGluZyByZXF1ZXN0cy4KICAgICAga2V5OiB2YWx1ZQogICAgaGVhZGVyczogICAgIyBBZGRpdGlvbmFsIEhlYWRlcnMgZm9yIG1hdGNoaW5nIHJlcXVlc3RzLgogICAgICBrZXk6IHZhbHVlCiAgICBxdWVyeTogICAgICAjIEFkZGl0aW9uYWwgUXVlcnkgcGFyYW1ldGVycyBmb3IgbWF0Y2hpbmcgcmVxdWVzdHMuCiAgICAgIGtleTogdmFsdWUKICAgIGFwaS1rZXk6IHZhbHVlICAjIEFQSSBLZXkgYXMgcmVxdWlyZWQgYnkgT3BlbkFQSSBjb25maWcgLSBzZWUgZGVzY3JpcHRpb24gYmVsb3cuCiAgICBvYXV0aDI6CiAgICAgICMgUkVRVUlSRUQgZmllbGRzCiAgICAgIGNsaWVudElkOiBteS1jbGllbnQtaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSRVFVSVJFRDogT0F1dGgyIGNsaWVudCBpZGVudGlmaWVyCgogICAgICAjIFJFUVVJUkVEIGlmIHVzZUZvclNwZWNGZXRjaD10cnVlIChkZWZhdWx0KSwgT1BUSU9OQUwgb3RoZXJ3aXNlCiAgICAgIHRva2VuVXJsOiBodHRwczovL2lzc3Vlci5leGFtcGxlLmNvbS9vYXV0aC90b2tlbiAgICAgIyBUb2tlbiBlbmRwb2ludCBVUkwgKHNlZSBwcmVjZWRlbmNlIHJ1bGVzIGJlbG93KQoKICAgICAgIyBDbGllbnQgc2VjcmV0IChjaG9vc2Ugb25lIG1ldGhvZCkKICAgICAgY2xpZW50U2VjcmV0S2V5Y2hhaW46IGtleWNoYWluLXNlcnZpY2Utc3RyaW5nICAgICAgICAjIFJFQ09NTUVOREVEOiBMb2FkIHNlY3JldCBmcm9tIE9TIGtleWNoYWluCiAgICAgIGNsaWVudFNlY3JldDogY2xlYXJ0ZXh0LXNlY3JldCAgICAgICAgICAgICAgICAgICAgICAgIyBESVNDT1VSQUdFRDogQ2xlYXJ0ZXh0IHNlY3JldCAodXNlIGtleWNoYWluIGluc3RlYWQpCgogICAgICAjIE9QVElPTkFMIGZpZWxkcyAod2l0aCBkZWZhdWx0cy9wcmVjZWRlbmNlKQogICAgICByZWZyZXNoVXJsOiBodHRwczovL2lzc3Vlci5leGFtcGxlLmNvbS9vYXV0aC90b2tlbiAgICMgT3B0aW9uYWwgb3ZlcnJpZGU7IGRlZmF1bHRzIHRvIHJlZnJlc2hVcmwgZnJvbSBPcGVuQVBJLCB0aGVuIHRva2VuVXJsCiAgICAgIGF1ZGllbmNlOiBodHRwczovL2FwaS5leGFtcGxlLmNvbS8gICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbDogYXVkaWVuY2UgcGFyYW1ldGVyIChyZXF1aXJlZCBieSBzb21lIHByb3ZpZGVycykKICAgICAgc2NvcGU6IFsib3JkZXJzLnJlYWQiLCAuLi5dICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsOiBzY29wZSBvdmVycmlkZTsgZGVmYXVsdHMgdG8gT3BlbkFQSSBzcGVjJ3MgcGVyLW9wZXJhdGlvbiBzY29wZXMKICAgICAgdXNlRm9yU3BlY0ZldGNoOiB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsOiBhY3F1aXJlIHRva2VuIGJlZm9yZSBmZXRjaGluZyBPcGVuQVBJIHNwZWMgKGRlZmF1bHQ6IHRydWUpCiAgICAgIHRva2VuRW5kcG9pbnRBdXRoOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbDogdG9rZW4gZW5kcG9pbnQgYXV0aGVudGljYXRpb24gbWV0aG9kCiAgICAgICAgbWV0aG9kOiByZmM2NzQ5LWNsaWVudC1zZWNyZXQtYmFzaWMgICAgICAgICAgICAgICAgIyBPcHRpb25zOiByZmM2NzQ5LWNsaWVudC1zZWNyZXQtYmFzaWMgKGRlZmF1bHQpLCByZmM1ODQ5LW9hdXRoMS1zaWduYXR1cmUKICAgICAgICBub25jZUxlbmd0aDogMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZvciByZmM1ODQ5LW9hdXRoMS1zaWduYXR1cmU6IG5vbmNlIGxlbmd0aCAoOC02NCwgZGVmYXVsdDogMTYpCmBgYAoKKipOb3RlOioqIEZvciBgcHJveHlgIGNvbmZpZ3MsIHRoZSBjcmVkZW50aWFscyBhcmUgb3B0aW9uYWwuCgojIyMgT0F1dGgyIENvbmZpZ3VyYXRpb246IFJlcXVpcmVkIHZzIE9wdGlvbmFsIEZpZWxkcwoKKipJbXBvcnRhbnQ6KiogWnN3YWcgb25seSBzdXBwb3J0cyB0aGUgKipPQXV0aDIgYGNsaWVudENyZWRlbnRpYWxzYCBmbG93KiouIE90aGVyIGZsb3dzIChgYXV0aG9yaXphdGlvbkNvZGVgLCBgaW1wbGljaXRgLCBgcGFzc3dvcmRgKSBhcmUgbm90IHN1cHBvcnRlZC4KCioqRmllbGQgUmVxdWlyZW1lbnRzOioqCgp8IEZpZWxkIHwgUmVxdWlyZWQ/IHwgTm90ZXMgfAp8LS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tfAp8IGBjbGllbnRJZGAgfCDinIUgQWx3YXlzIHwgT0F1dGgyIGNsaWVudCBpZGVudGlmaWVyIHwKfCBgdG9rZW5VcmxgIHwg4pqg77iPIENvbmRpdGlvbmFsIHwgKipSRVFVSVJFRCoqIHdoZW4gYHVzZUZvclNwZWNGZXRjaDogdHJ1ZWAgKGRlZmF1bHQpPGJyPioqT1BUSU9OQUwqKiB3aGVuIGB1c2VGb3JTcGVjRmV0Y2g6IGZhbHNlYCAoZGVmYXVsdHMgdG8gT3BlbkFQSSBzcGVjKSB8CnwgYGNsaWVudFNlY3JldGAgLyBgY2xpZW50U2VjcmV0S2V5Y2hhaW5gIHwg4pqg77iPIENvbmRpdGlvbmFsIHwgKipSRVFVSVJFRCoqIGZvciBjb25maWRlbnRpYWwgY2xpZW50czxicj4qKk9QVElPTkFMKiogZm9yIHB1YmxpYyBjbGllbnRzIChpZiBvbWl0dGVkLCBjbGllbnRfaWQgaXMgc2VudCBpbiByZXF1ZXN0IGJvZHkpIHwKfCBgcmVmcmVzaFVybGAgfCDinYwgT3B0aW9uYWwgfCBEZWZhdWx0cyB0byBgcmVmcmVzaFVybGAgZnJvbSBPcGVuQVBJIHNwZWMsIHRoZW4gYHRva2VuVXJsYCB8CnwgYHNjb3BlYCB8IOKdjCBPcHRpb25hbCB8IERlZmF1bHRzIHRvIHNjb3BlcyBmcm9tIE9wZW5BUEkgc3BlYydzIHBlci1vcGVyYXRpb24gYHNlY3VyaXR5YCByZXF1aXJlbWVudHMgfAp8IGBhdWRpZW5jZWAgfCDinYwgT3B0aW9uYWwgfCBPbmx5IHJlcXVpcmVkIGJ5IHNvbWUgT0F1dGgyIHByb3ZpZGVycyB8CnwgYHVzZUZvclNwZWNGZXRjaGAgfCDinYwgT3B0aW9uYWwgfCBEZWZhdWx0OiBgdHJ1ZWAgKGFjcXVpcmUgdG9rZW4gYmVmb3JlIGZldGNoaW5nIE9wZW5BUEkgc3BlYykgfAp8IGB0b2tlbkVuZHBvaW50QXV0aGAgfCDinYwgT3B0aW9uYWwgfCBEZWZhdWx0OiBgcmZjNjc0OS1jbGllbnQtc2VjcmV0LWJhc2ljYCB8CgoqKlByZWNlZGVuY2UgUnVsZXMgKGh0dHAtc2V0dGluZ3MueWFtbCB2cyBPcGVuQVBJIHNwZWMpOioqCgpXaGVuIGJvdGggaHR0cC1zZXR0aW5ncy55YW1sIGFuZCB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIHByb3ZpZGUgdmFsdWVzLCB0aGUgZm9sbG93aW5nIHByZWNlZGVuY2UgYXBwbGllczoKCjEuICoqYHRva2VuVXJsYCoqOiBodHRwLXNldHRpbmdzLnlhbWwgYHRva2VuVXJsYCAqKm92ZXJyaWRlcyoqIE9wZW5BUEkgc3BlYydzIGBmbG93cy5jbGllbnRDcmVkZW50aWFscy50b2tlblVybGAKMi4gKipgcmVmcmVzaFVybGAqKjogaHR0cC1zZXR0aW5ncy55YW1sIGByZWZyZXNoVXJsYCAqKm92ZXJyaWRlcyoqIE9wZW5BUEkgc3BlYydzIGBmbG93cy5jbGllbnRDcmVkZW50aWFscy5yZWZyZXNoVXJsYAozLiAqKmBzY29wZWAqKjogaHR0cC1zZXR0aW5ncy55YW1sIGBzY29wZWAgKipvdmVycmlkZXMqKiBPcGVuQVBJIHNwZWMncyBwZXItb3BlcmF0aW9uIGBzZWN1cml0eWAgc2NvcGVzCgoqKkNvbW1vbiBTY2VuYXJpb3M6KioKCnwgU2NlbmFyaW8gfCBgdXNlRm9yU3BlY0ZldGNoYCB8IGB0b2tlblVybGAgaW4gaHR0cC1zZXR0aW5ncyB8IGB0b2tlblVybGAgaW4gT3BlbkFQSSBzcGVjIHwgUmVzdWx0IHwKfC0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLXwKfCAqKlByb3RlY3RlZCBPcGVuQVBJIHNwZWMqKiB8IGB0cnVlYCAoZGVmYXVsdCkgfCDinIUgUmVxdWlyZWQgfCBVc2VkIGFzIGZhbGxiYWNrIHwgaHR0cC1zZXR0aW5ncyB2YWx1ZSB1c2VkIHwKfCAqKlB1YmxpYyBPcGVuQVBJIHNwZWMqKiB8IGBmYWxzZWAgfCDinYwgT3B0aW9uYWwgfCDinIUgUmVxdWlyZWQgaW4gc3BlYyB8IE9wZW5BUEkgc3BlYyB2YWx1ZSB1c2VkIHwKfCAqKk92ZXJyaWRlIHNwZWMgc2V0dGluZ3MqKiB8IGB0cnVlYCBvciBgZmFsc2VgIHwg4pyFIFByb3ZpZGVkIHwgQW55IHwgaHR0cC1zZXR0aW5ncyB2YWx1ZSAqKmFsd2F5cyB3aW5zKiogfAoKIyMjIE9BdXRoMiBUb2tlbiBFbmRwb2ludCBBdXRoZW50aWNhdGlvbiBNZXRob2RzCgpUaGUgYHRva2VuRW5kcG9pbnRBdXRoYCBmaWVsZCBjb250cm9scyBob3cgdGhlIGNsaWVudCBhdXRoZW50aWNhdGVzIHdoZW4gcmVxdWVzdGluZyBPQXV0aDIgdG9rZW5zLiBUd28gbWV0aG9kcyBhcmUgc3VwcG9ydGVkOgoKKipgcmZjNjc0OS1jbGllbnQtc2VjcmV0LWJhc2ljYCAoZGVmYXVsdCk6KiogSFRUUCBCYXNpYyBBdXRoZW50aWNhdGlvbiAoUkZDIDY3NDkgU2VjdGlvbiAyLjMuMSkKLSBCb3RoIGBjbGllbnRJZGAgYW5kIGBjbGllbnRTZWNyZXRgIGFyZSBzZW50IGluIHRoZSBgQXV0aG9yaXphdGlvbjogQmFzaWNgIGhlYWRlcgotIFdvcmtzIHdpdGggbW9zdCBPQXV0aDIgcHJvdmlkZXJzCgoqKmByZmM1ODQ5LW9hdXRoMS1zaWduYXR1cmVgOioqIE9BdXRoIDEuMCBITUFDLVNIQTI1NiByZXF1ZXN0IHNpZ25pbmcgKFJGQyA1ODQ5KQotIGBjbGllbnRJZGAgaXMgc2VudCBhcyBgb2F1dGhfY29uc3VtZXJfa2V5YCBpbiBib3RoIGhlYWRlciBhbmQgYm9keQotIGBjbGllbnRTZWNyZXRgIGlzIHVzZWQgb25seSBmb3IgSE1BQy1TSEEyNTYgc2lnbmF0dXJlIGNvbXB1dGF0aW9uIChuZXZlciB0cmFuc21pdHRlZCkKLSBSZXF1aXJlZCBieSBzb21lIHByb3ZpZGVycyB0aGF0IHVzZSBPQXV0aCAxLjAgc2lnbmF0dXJlLWJhc2VkIHRva2VuIGF1dGhlbnRpY2F0aW9uCi0gUHJvdmlkZXMgZW5oYW5jZWQgc2VjdXJpdHkgdGhyb3VnaCBjcnlwdG9ncmFwaGljIHJlcXVlc3Qgc2lnbmluZwotICoqTm90ZToqKiBPbmx5IEhNQUMtU0hBMjU2IHNpZ25hdHVyZSBtZXRob2QgaXMgc3VwcG9ydGVkCgojIyMgT0F1dGgyLUF1dGhlbnRpY2F0ZWQgT3BlbkFQSSBTcGVjIEZldGNoaW5nCgpCeSBkZWZhdWx0LCB3aGVuIE9BdXRoMiBpcyBjb25maWd1cmVkLCB6c3dhZyB3aWxsIGFjcXVpcmUgYW4gT0F1dGgyIGFjY2VzcyB0b2tlbiAqKmJlZm9yZSoqIGZldGNoaW5nIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24uIFRoaXMgc29sdmVzIHRoZSAiY2hpY2tlbi1hbmQtZWdnIiBwcm9ibGVtIHdoZXJlIHRoZSBPcGVuQVBJIHNwZWMgZW5kcG9pbnQgaXRzZWxmIHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uLgoKKipIb3cgaXQgd29ya3M6KioKCjEuICoqV2l0aCBgdXNlRm9yU3BlY0ZldGNoOiB0cnVlYCAoZGVmYXVsdCk6KioKICAgLSBDbGllbnQgYWNxdWlyZXMgT0F1dGgyIHRva2VuIHVzaW5nIGNvbmZpZ3VyZWQgYXV0aGVudGljYXRpb24gbWV0aG9kCiAgIC0gVG9rZW4gaXMgaW5jbHVkZWQgYXMgYEF1dGhvcml6YXRpb246IEJlYXJlciA8dG9rZW4+YCBoZWFkZXIgd2hlbiBmZXRjaGluZyBPcGVuQVBJIHNwZWMKICAgLSBPcGVuQVBJIHNwZWMgZmV0Y2ggc3VjY2VlZHMgZXZlbiBpZiBlbmRwb2ludCByZXF1aXJlcyBhdXRoZW50aWNhdGlvbgogICAtIFNhbWUgdG9rZW4gaXMgY2FjaGVkIGFuZCByZXVzZWQgZm9yIHN1YnNlcXVlbnQgQVBJIGNhbGxzCgoyLiAqKldpdGggYHVzZUZvclNwZWNGZXRjaDogZmFsc2VgOioqCiAgIC0gT3BlbkFQSSBzcGVjIGlzIGZldGNoZWQgd2l0aG91dCBPQXV0aDIgdG9rZW4gKHBsYWluIEhUVFAgR0VUKQogICAtIE9BdXRoMiB0b2tlbiBhY3F1aXNpdGlvbiBpcyBkZWZlcnJlZCB1bnRpbCBmaXJzdCBBUEkgbWV0aG9kIGNhbGwKICAgLSBVc2UgdGhpcyB3aGVuIHRoZSBPcGVuQVBJIHNwZWMgZW5kcG9pbnQgaXMgcHVibGljIChkb2Vzbid0IHJlcXVpcmUgYXV0aGVudGljYXRpb24pCgoqKkNvbmZpZ3VyYXRpb246KioKCmBgYHlhbWwKLSBzY29wZTogaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vKgogIG9hdXRoMjoKICAgIGNsaWVudElkOiB5b3VyLWNsaWVudC1pZAogICAgY2xpZW50U2VjcmV0OiB5b3VyLWNsaWVudC1zZWNyZXQKICAgIHRva2VuVXJsOiBodHRwczovL2FwaS5leGFtcGxlLmNvbS9vYXV0aC90b2tlbgogICAgdXNlRm9yU3BlY0ZldGNoOiB0cnVlICAjIERlZmF1bHQ6IHRydWUuIFNldCB0byBmYWxzZSBpZiBzcGVjIGlzIHB1YmxpYy4KYGBgCgoqKldoZW4gdG8gdXNlIGB1c2VGb3JTcGVjRmV0Y2g6IGZhbHNlYDoqKgotIE9wZW5BUEkgc3BlYyBlbmRwb2ludCBpcyBwdWJsaWNseSBhY2Nlc3NpYmxlCi0gQXZvaWRzIHVubmVjZXNzYXJ5IHRva2VuIGFjcXVpc2l0aW9uIGlmIG9ubHkgdGhlIHNwZWMgaXMgbmVlZGVkCi0gSW1wcm92ZXMgcGVyZm9ybWFuY2UgYnkgZGVmZXJyaW5nIE9BdXRoMiBmbG93IHVudGlsIGZpcnN0IEFQSSBjYWxsCgoqKldoZW4gdG8ga2VlcCBgdXNlRm9yU3BlY0ZldGNoOiB0cnVlYCAoZGVmYXVsdCk6KioKLSBPcGVuQVBJIHNwZWMgZW5kcG9pbnQgcmVxdWlyZXMgYXV0aGVudGljYXRpb24KLSBTZXJ2aWNlIHJldHVybnMgNDAxLzQwMyB3aGVuIGZldGNoaW5nIHNwZWMgd2l0aG91dCBjcmVkZW50aWFscwotIE1vc3Qgc2VjdXJlIG9wdGlvbiAoZW5zdXJlcyB0b2tlbiBpcyBhdmFpbGFibGUgZnJvbSB0aGUgc3RhcnQpCgoqKkRlYnVnZ2luZyBPQXV0aDIgSXNzdWVzOioqCgpUbyB0cm91Ymxlc2hvb3QgT0F1dGgyIGF1dGhlbnRpY2F0aW9uIHByb2JsZW1zLCBlbmFibGUgZGV0YWlsZWQgbG9nZ2luZzoKCmBgYGJhc2gKZXhwb3J0IEhUVFBfTE9HX0xFVkVMPWRlYnVnICAgIyBTaG93cyBPQXV0aDIgZmxvdyAodG9rZW4gYWNxdWlzaXRpb24sIGNhY2hlIGhpdHMvbWlzc2VzKQpleHBvcnQgSFRUUF9MT0dfTEVWRUw9dHJhY2UgICAjIFNob3dzIGFkZGl0aW9uYWwgZGV0YWlscyAocmVxdWVzdC9yZXNwb25zZSBib2RpZXMsIHNpZ25hdHVyZXMpCmBgYAoKVGhlIGxvZ3Mgd2lsbCBzaG93OgotIFRva2VuIGVuZHBvaW50IGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBiZWluZyB1c2VkCi0gVG9rZW4gcmVxdWVzdC9yZXNwb25zZSBzdGF0dXMKLSBUb2tlbiBjYWNoZSBoaXQvbWlzcy9leHBpcmVkIGV2ZW50cwotIE9BdXRoMiBjb25maWd1cmF0aW9uIHN0YXR1cyBmb3IgT3BlbkFQSSBzcGVjIGZldGNoCi0gV2hldGhlciBPQXV0aDIgdG9rZW4gaXMgYmVpbmcgdXNlZCBmb3Igc3BlYyBmZXRjaAoKIyMjIFRlc3RpbmcgT0F1dGggMS4wIFNpZ25hdHVyZSB3aXRoIFlvdXIgU2VydmljZQoKVG8gdmVyaWZ5IE9BdXRoIDEuMCBzaWduYXR1cmUgYXV0aGVudGljYXRpb24gd2l0aCB5b3VyIHNlcnZpY2U6CgoqKjEuIEluc3RhbGwgenN3YWc6KioKCkZvciBvZmZpY2lhbCByZWxlYXNlczoKYGBgYmFzaApwaXAgaW5zdGFsbCB6c3dhZwpgYGAKCkZvciBjdXN0b20gYnVpbGRzIG9yIGRldmVsb3BtZW50IHNuYXBzaG90czoKYGBgYmFzaApwaXAgaW5zdGFsbCAvcGF0aC90by9weXpzd2FnY2wtKi53aGwgL3BhdGgvdG8venN3YWctKi53aGwKYGBgCgoqKjIuIENyZWF0ZSBgaHR0cC1zZXR0aW5ncy55YW1sYCoqIHdpdGggeW91ciBzZXJ2aWNlIGRldGFpbHM6CmBgYHlhbWwKLSBzY29wZTogaHR0cHM6Ly95b3VyLWFwaS5leGFtcGxlLmNvbS8qCiAgb2F1dGgyOgogICAgY2xpZW50SWQ6IHlvdXItY2xpZW50LWlkCiAgICBjbGllbnRTZWNyZXQ6IHlvdXItY2xpZW50LXNlY3JldAogICAgdG9rZW5Vcmw6IGh0dHBzOi8veW91ci1hcGkuZXhhbXBsZS5jb20vb2F1dGgvdG9rZW4KICAgIHRva2VuRW5kcG9pbnRBdXRoOgogICAgICBtZXRob2Q6IHJmYzU4NDktb2F1dGgxLXNpZ25hdHVyZQogICAgICBub25jZUxlbmd0aDogMTYKYGBgCgoqKjMuIENyZWF0ZSBhIHRlc3Qgc2NyaXB0KiogKGB0ZXN0X29hdXRoMS5weWApOgpgYGBweXRob24KaW1wb3J0IG9zCmZyb20genN3YWcgaW1wb3J0IE9BQ2xpZW50CgojIFBvaW50IHRvIHlvdXIgaHR0cC1zZXR0aW5ncyBmaWxlCm9zLmVudmlyb25bJ0hUVFBfU0VUVElOR1NfRklMRSddID0gJy9wYXRoL3RvL2h0dHAtc2V0dGluZ3MueWFtbCcKCiMgQ3JlYXRlIGNsaWVudCB3aXRoIHlvdXIgT3BlbkFQSSBzcGVjCmNsaWVudCA9IE9BQ2xpZW50KCJodHRwczovL3lvdXItYXBpLmV4YW1wbGUuY29tL29wZW5hcGkuanNvbiIpCgojIEltcG9ydCB5b3VyIGdlbmVyYXRlZCB6c2VyaW8gc2VydmljZQppbXBvcnQgeW91cl9zZXJ2aWNlLmFwaSBhcyBhcGkKCiMgQ3JlYXRlIHNlcnZpY2UgY2xpZW50IGFuZCBtYWtlIGEgdGVzdCBjYWxsCnNlcnZpY2UgPSBhcGkuWW91clNlcnZpY2UuQ2xpZW50KGNsaWVudCkKcmVxdWVzdCA9IGFwaS5Zb3VyUmVxdWVzdCguLi4pCnJlc3BvbnNlID0gc2VydmljZS55b3VyX21ldGhvZChyZXF1ZXN0KQoKcHJpbnQoZiJTdWNjZXNzISBSZXNwb25zZToge3Jlc3BvbnNlfSIpCmBgYAoKKio0LiBSdW4gdGhlIHRlc3Q6KioKYGBgYmFzaApweXRob24gdGVzdF9vYXV0aDEucHkKYGBgCgoqKlZlcmlmaWNhdGlvbjoqKiBDaGVjayB5b3VyIHNlcnZlciBsb2dzIHRvIGNvbmZpcm0gT0F1dGggMS4wIEhNQUMtU0hBMjU2IHNpZ25hdHVyZXMgYXJlIGJlaW5nIHZhbGlkYXRlZCBjb3JyZWN0bHkgYW5kIHRoZSB0b2tlbiBlbmRwb2ludCByZWNlaXZlcyBwcm9wZXJseSBzaWduZWQgcmVxdWVzdHMuCgpUaGUgKipgYXBpLWtleWAqKiBzZXR0aW5nIHdpbGwgYmUgYXBwbGllZCB1bmRlciB0aGUgY29ycmVjdApjb29raWUvaGVhZGVyL3F1ZXJ5IHBhcmFtZXRlciwgaWYgdGhlIHNlcnZpY2UKeW91IGFyZSBjb25uZWN0aW5nIHRvIHVzZXMgYW4gW09wZW5BUEkgYGFwaUtleWAgYXV0aCBzY2hlbWVdKCNhdXRoZW50aWNhdGlvbi1zY2hlbWVzKS4KClBhc3N3b3JkcyBjYW4gYmUgc3RvcmVkIGluIGNsZWFyIHRleHQgYnkgc2V0dGluZyBhIGBwYXNzd29yZGAgZmllbGQgaW5zdGVhZApvZiB0aGUgYGtleWNoYWluYCBmaWVsZC4gS2V5Y2hhaW4gZW50cmllcyBjYW4gYmUgbWFkZSB3aXRoIGRpZmZlcmVudCB0b29scwpvbiBlYWNoIHBsYXRmb3JtOgoKKiBbTGludXggYHNlY3JldC10b29sYF0oaHR0cHM6Ly93d3cubWFyaWFuLWRhbi5yby9ibG9nL3N0b3Jpbmctc2VjcmV0cy11c2luZy1zZWNyZXQtdG9vbCkgCiogW21hY09TIGBhZGQtZ2VuZXJpYy1wYXNzd29yZGBdKGh0dHBzOi8vd3d3Lm5ldG1laXN0ZXIub3JnL2Jsb2cva2V5Y2hhaW4tcGFzc3dvcmRzLmh0bWwpCiogW1dpbmRvd3MgYGNtZGtleWBdKGh0dHBzOi8vd3d3LnNjcmlwdGluZ2xpYnJhcnkuY29tL2xhbmd1YWdlcy9wb3dlcnNoZWxsL2hvdy10by1tYW5hZ2Utc2VjcmV0cy1hbmQtcGFzc3dvcmRzLXdpdGgtY3JlZGVudGlhbG1hbmFnZXItYW5kLXBvd2Vyc2hlbGwvKQoKPCEtLSAtLTg8LS0gW2VuZDpzZXR0aW5nc10gLS0+CgojIyBDbGllbnQgUmVzdWx0IENvZGUgSGFuZGxpbmcKCkJvdGggY2xpZW50cyAoUHl0aG9uIGFuZCBDKyspIHdpbGwgdHJlYXQgYW55IEhUVFAgcmVzcG9uc2UgY29kZSBvdGhlciB0aGFuIGAyMDBgIGFzIGFuIGVycm9yIHNpbmNlIHpzZXJpbyBzZXJ2aWNlcyBhcmUgZXhwZWN0ZWQgdG8gcmV0dXJuIGEgcGFyc2FibGUgcmVzcG9uc2Ugb2JqZWN0LiBUaGUgY2xpZW50IHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggYSBkZXNjcmlwdGl2ZSBtZXNzYWdlIGlmIHRoZSByZXNwb25zZSBjb2RlIGlzIG5vdCBgMjAwYC4KCkluIGNhc2UgYXBwbGljYXRpb25zIHdhbnQgdG8gdXRpbGl6ZSBmb3IgZXhhbXBsZSB0aGUgYDIwNCAoTm8gQ29udGVudClgIHJlc3BvbnNlIGNvZGUsIHRoZXkgaGF2ZSB0byBjYXRjaCB0aGUgZXhjZXB0aW9uIGFuZCBoYW5kbGUgaXQgYWNjb3JkaW5nbHkuCgojIyBTd2FnZ2VyIFVzZXIgSW50ZXJmYWNlIAoKSWYgeW91IGhhdmUgaW5zdGFsbGVkIGBwaXAgaW5zdGFsbCAiY29ubmV4aW9uW3N3YWdnZXItdWldImAsIHlvdSBjYW4gdmlldwpBUEkgZG9jcyBvZiB5b3VyIHNlcnZpY2UgdW5kZXIgYFsvcHJlZml4XS91aWAuCgojIyBPcGVuQVBJIE9wdGlvbnMgSW50ZXJvcGVyYWJpbGl0eQoKVGhlIFNlcnZlciwgQ2xpZW50cyBhbmQgR2VuZXJhdG9yIG9mZmVyIHZhcmlvdXMgZGVncmVlcyBvZiBmcmVlZG9tCnJlZ2FyZGluZyB0aGUgT3BlbkFQSSBZQU1MIGZpbGUuIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZGV0YWlsIHdoaWNoCmNvbXBvbmVudHMgc3VwcG9ydCB3aGljaCBhc3BlY3RzIG9mIE9wZW5BUEkuIFRoZSBkaWZmZXJlbmNlIGluIGNvbXBsaWFuY2UKaXMgbW9zdGx5IGR1ZSB0byBsaW1pdGVkIGRldmVsb3BtZW50IHNjb3Blcy4gSWYgeW91IGFyZSBtaXNzaW5nIGEgcGFydGljdWxhcgpPcGVuQVBJIGZlYXR1cmUgZm9yIGEgcGFydGljdWxhciBjb21wb25lbnQsIGZlZWwgZnJlZSB0byBjcmVhdGUgYW4gaXNzdWUhCgoqKk5vdGU6KiogRm9yIGFsbCBvcHRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgYHpzd2FnLmdlbmAsIHlvdQp3aWxsIG5lZWQgdG8gbWFudWFsbHkgZWRpdCB0aGUgT3BlbkFQSSBZQU1MIGZpbGUgdG8gYWNoaWV2ZSB0aGUgZGVzaXJlZApjb25maWd1cmF0aW9uLiBZb3Ugd2lsbCBhbHNvIG5lZWQgdG8gZWRpdCB0aGUgZmlsZSBtYW51YWxseSB0byBmaWxsIGluCm1ldGEtaW5mbyAocHJvdmlkZXIgbmFtZSwgc2VydmljZSB2ZXJzaW9uLCBldGMuKS4KCiMjIyBIVFRQIG1ldGhvZAoKVG8gY2hhbmdlIHRoZSAqKkhUVFAgbWV0aG9kKiosIHRoZSBkZXNpcmVkIG1ldGhvZCBuYW1lIGlzIHBsYWNlZCAKYXMgdGhlIGtleSB1bmRlciB0aGUgbWV0aG9kIHBhdGgsIHN1Y2ggYXMgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlOgpgYGB5YW1sCnBhdGhzOgogIC9tZXRob2ROYW1lOgogICAge2dldHxwb3N0fHB1dHxkZWxldGV9OgogICAgICAuLi4KYGBgCgojIyMjIENvbXBvbmVudCBTdXBwb3J0Cgp8IEZlYXR1cmUgICAgICAgICAgICB8IEMrKyBDbGllbnQgfCBQeXRob24gQ2xpZW50IHwgT0FTZXJ2ZXIgfCB6c3dhZy5nZW4gfAp8IC0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0gfAp8IGBnZXRgIGBwb3N0YCBgcHV0YCBgZGVsZXRlYCB8IOKclO+4jyB8IOKclO+4jyB8IOKclO+4jyB8IOKclO+4jyB8CnwgYHBhdGNoYCB8IOKdjO+4jyB8IOKdjO+4jyB8IOKdjO+4jyB8IOKdjO+4jyB8CgoqKk5vdGU6KiogUGF0Y2ggaXMgdW5zdXBwb3J0ZWQsIGJlY2F1c2UgdGhlIHJlcXVpcmVkIHNlbWFudGljcyBvZgphIHBhcnRpYWwgb2JqZWN0IHVwZGF0ZSBjYW5ub3QgYmUgcmVhbGl6ZWQgaW4gdGhlIHpzZXJpbyB0cmFuc3BvcnQKbGF5ZXIgaW50ZXJmYWNlLgoKIyMjIFJlcXVlc3QgQm9keQoKQSBzZXJ2ZXIgY2FuIGluc3RydWN0IGNsaWVudHMgdG8gdHJhbnNtaXQgdGhlaXIgenNlcmlvIHJlcXVlc3Qgb2JqZWN0IGluIHRoZQpyZXF1ZXN0IGJvZHkgd2hlbiB1c2luZyBIVFRQIGBwb3N0YCwgYHB1dGAgb3IgYGRlbGV0ZWAuClRoaXMgaXMgZG9uZSBieSBzZXR0aW5nIHRoZSBPcGVuQVBJIGByZXF1ZXN0Qm9keS9jb250ZW50YCB0bwpgYXBwbGljYXRpb24veC16c2VyaW8tb2JqZWN0YDoKCmBgYHlhbWwKcmVxdWVzdEJvZHk6CiAgY29udGVudDoKICAgIGFwcGxpY2F0aW9uL3gtenNlcmlvLW9iamVjdDoKICAgICAgc2NoZW1hOgogICAgICAgIHR5cGU6IHN0cmluZwpgYGAKCiMjIyMgQ29tcG9uZW50IFN1cHBvcnQKCnwgRmVhdHVyZSAgICAgICAgICAgIHwgQysrIENsaWVudCB8IFB5dGhvbiBDbGllbnQgfCBPQVNlcnZlciB8IHpzd2FnLmdlbiB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLSB8CnwgYGFwcGxpY2F0aW9uL3gtenNlcmlvLW9iamVjdGAgfCDinJTvuI8gfCDinJTvuI8gfCDinJTvuI8gfCDinJTvuI8gfAoKIyMjIFVSTCBCbG9iIFBhcmFtZXRlcgoKWnN3YWcgdG9vbHMgc3VwcG9ydCBhbiBhZGRpdGlvbmFsIE9wZW5BUEkgbWV0aG9kIHBhcmFtZXRlcgpmaWVsZCBjYWxsZWQgYHgtenNlcmlvLXJlcXVlc3QtcGFydGAuIFRocm91Z2ggdGhpcyBmaWVsZCwKYSBzZXJ2aWNlIHByb3ZpZGVyIGNhbiBleHByZXNzIHRoYXQgYSBjZXJ0YWluIHJlcXVlc3QgcGFyYW1ldGVyCm9ubHkgY29udGFpbnMgYSBwYXJ0IG9mLCBvciB0aGUgd2hvbGUgenNlcmlvIHJlcXVlc3Qgb2JqZWN0LgpXaGVuIHBhcmFtZXRlciBjb250YWlucyB0aGUgd2hvbGUgcmVxdWVzdCBvYmplY3QsIGB4LXpzZXJpby1yZXF1ZXN0LXBhcnRgCnNob3VsZCBiZSBzZXQgdG8gYW4gYXN0ZXJpc2sgKGAqYCk6CgpgYGB5YW1sCnBhcmFtZXRlcnM6Ci0gZGVzY3JpcHRpb246ICcnCiAgaW46IHF1ZXJ5fHBhdGh8aGVhZGVyCiAgbmFtZTogcGFyYW1ldGVyTmFtZQogIHJlcXVpcmVkOiB0cnVlCiAgeC16c2VyaW8tcmVxdWVzdC1wYXJ0OiAiKiIKICBzY2hlbWE6CiAgICBmb3JtYXQ6IHN0cmluZ3xieXRlfGJhc2U2NHxiYXNlNjR1cmx8aGV4fGJpbmFyeQpgYGAKCkFib3V0IHRoZSBgZm9ybWF0YCBzcGVjaWZpZXIgdmFsdWU6CiogQm90aCBgc3RyaW5nYCBhbmQgYGJpbmFyeWAgcmVzdWx0IGluIGEgcmF3IFVSTC1lbmNvZGVkIHN0cmluZyBidWZmZXIuCiogQm90aCBgYnl0ZWAgYW5kIGBiYXNlNjRgIHJlc3VsdCBpbiBhIHN0YW5kYXJkIEJhc2U2NC1lbmNvZGVkIHZhbHVlLgogIFRoZSBgYmFzZTY0dXJsYCBvcHRpb24gaW5kaWNhdGVzIFVSTC1zYWZlIEJhc2U2NCBmb3JtYXQuCiogVGhlIGBoZXhgIGVuY29kaW5nIHByb2R1Y2VzIGEgaGV4YWRlY2ltYWwgZW5jb2Rpbmcgb2YgdGhlIHJlcXVlc3QgYmxvYi4KCioqTm90ZToqKiBXaGVuIGEgcGFyYW1ldGVyIGlzIHBhc3NlZCB3aXRoIGBpbj1wYXRoYCwgaXRzIHZhbHVlCioqbXVzdCBub3QgYmUgZW1wdHkqKi4gVGhpcyBob2xkcyB0cnVlIGZvciBzdHJpbmdzIGFuZCBieXRlcywKYnV0IGFsc28gZm9yIGFycmF5cyAoc2VlIGJlbG93KS4KCiMjIyMgQ29tcG9uZW50IFN1cHBvcnQKCnwgRmVhdHVyZSAgICAgICAgICAgIHwgQysrIENsaWVudCB8IFB5dGhvbiBDbGllbnQgfCBPQVNlcnZlciB8IHpzd2FnLmdlbiB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLSB8CnwgYHgtenNlcmlvLXJlcXVlc3QtcGFydDogKmAgfCDinJTvuI8gfCDinJTvuI8gfCDinJTvuI8gfCDinJTvuI8gfAp8IGBmb3JtYXQ6IHN0cmluZ2AgfCDinJTvuI8gfCDinJTvuI8gfCDinJTvuI8gfCDinJTvuI8gfAp8IGBmb3JtYXQ6IGJ5dGVgIHwg4pyU77iPIHwg4pyU77iPIHwg4pyU77iPIHwg4pyU77iPIHwKfCBgZm9ybWF0OiBoZXhgIHwg4pyU77iPIHwg4pyU77iPIHwg4pyU77iPIHwg4pyU77iPIHwKCiMjIyBVUkwgU2NhbGFyIFBhcmFtZXRlcgoKVXNpbmcgYHgtenNlcmlvLXJlcXVlc3QtcGFydGAsIGl0IGlzIGFsc28gcG9zc2libGUgdG8gdHJhbnNmZXIKb25seSBhIHNpbmdsZSBzY2FsYXIgKG5lc3RlZCkgbWVtYmVyIG9mIHRoZSByZXF1ZXN0IG9iamVjdDoKCmBgYHlhbWwKcGFyYW1ldGVyczoKLSBkZXNjcmlwdGlvbjogJycKICBpbjogcXVlcnl8cGF0aHxoZWFkZXIKICBuYW1lOiBwYXJhbWV0ZXJOYW1lCiAgcmVxdWlyZWQ6IHRydWUKICB4LXpzZXJpby1yZXF1ZXN0LXBhcnQ6ICJbcGFyZW50Ll0qbWVtYmVyIgogIHNjaGVtYToKICAgIGZvcm1hdDogc3RyaW5nfGJ5dGV8YmFzZTY0fGJhc2U2NHVybHxoZXh8YmluYXJ5CmBgYAoKSW4gdGhpcyBjYXNlLCBgeC16c2VyaW8tcmVxdWVzdC1wYXJ0YCBzaG91bGQgcG9pbnQgdG8gYSBzY2FsYXIgdHlwZSwKc3VjaCBhcyBgdWludDhgLCBgZmxvYXQzMmAsIGBzdHJpbmdgIGV0Yy4KClRoZSBgZm9ybWF0YCB2YWx1ZSBlZmZlY3QgcmVtYWlucyBhcyBleHBsYWluZWQgYWJvdmUuIEEgc21hbGwKZGlmZmVyZW5jZSBleGlzdHMgZm9yIGludGVnZXIgdHlwZXM6IFRoZWlyIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uCndpbGwgYmUgdGhlIG5hdHVyYWwgbnVtZXJpYyBvbmUsIG5vdCBiaW5hcnkuCgojIyMjIENvbXBvbmVudCBTdXBwb3J0Cgp8IEZlYXR1cmUgICAgICAgICAgICB8IEMrKyBDbGllbnQgfCBQeXRob24gQ2xpZW50IHwgT0FTZXJ2ZXIgfCB6c3dhZy5nZW4gfAp8IC0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0gfAp8IGB4LXpzZXJpby1yZXF1ZXN0LXBhcnQ6IDxbcGFyZW50Ll0qbWVtYmVyPmAgfCDinJTvuI8gfCDinJTvuI8gfCDinJTvuI8gfCDinJTvuI8gfAoKIyMjIFVSTCBBcnJheSBQYXJhbWV0ZXIKClRoZSBgeC16c2VyaW8tcmVxdWVzdC1wYXJ0YCBtYXkgYWxzbyBwb2ludCB0byBhbiBhcnJheSBtZW1iZXIgb2YKdGhlIHpzZXJpbyByZXF1ZXN0IHN0cnVjdCwgbGlrZSBzbzoKCmBgYHlhbWwKcGFyYW1ldGVyczoKLSBkZXNjcmlwdGlvbjogJycKICBpbjogcXVlcnl8cGF0aHxoZWFkZXIKICBzdHlsZTogZm9ybXxzaW1wbGV8bGFiZWx8bWF0cml4CiAgZXhwbG9kZTogdHJ1ZXxmYWxzZQogIG5hbWU6IHBhcmFtZXRlck5hbWUKICByZXF1aXJlZDogdHJ1ZQogIHgtenNlcmlvLXJlcXVlc3QtcGFydDogIltwYXJlbnQuXSphcnJheV9tZW1iZXIiCiAgc2NoZW1hOgogICAgZm9ybWF0OiBzdHJpbmd8Ynl0ZXxiYXNlNjR8YmFzZTY0dXJsfGhleHxiaW5hcnkKYGBgCgpJbiB0aGlzIGNhc2UsIGB4LXpzZXJpby1yZXF1ZXN0LXBhcnRgIHNob3VsZCBwb2ludCB0byBhbiBhcnJheSBvZgpzY2FsYXIgdHlwZXMuIFRoZSBhcnJheSB3aWxsIGJlIGVuY29kZWQgYWNjb3JkaW5nCnRvIHRoZSBbZm9ybWF0LCBzdHlsZSBhbmQgZXhwbG9kZV0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4xLjAubWQjcGFyYW1ldGVyLW9iamVjdCkKc3BlY2lmaWVycy4KCnwgRmVhdHVyZSAgICAgICAgICAgIHwgQysrIENsaWVudCB8IFB5dGhvbiBDbGllbnQgfCBPQVNlcnZlciB8IHpzd2FnLmdlbiB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLSB8CnwgYHgtenNlcmlvLXJlcXVlc3QtcGFydDogPFtwYXJlbnQuXSphcnJheV9tZW1iZXI+YCAgfCDinJTvuI8gfCDinJTvuI8gfCDinJTvuI8gfCDinJTvuI8gfAp8IGBzdHlsZTogc2ltcGxlYCB8IOKclO+4jyB8IOKclO+4jyB8IOKclO+4jyB8IOKclO+4jyB8CnwgYHN0eWxlOiBmb3JtYCB8IOKclO+4jyB8IOKclO+4jyB8IOKclO+4jyB8IOKclO+4jyB8CnwgYHN0eWxlOiBsYWJlbGAgfCDinJTvuI8gfCDinJTvuI8gfCDinYwgfCDinJTvuI8gfAp8IGBzdHlsZTogbWF0cml4YCB8IOKclO+4jyB8IOKclO+4jyB8IOKdjCB8IOKclO+4jyB8CnwgYGV4cGxvZGU6IHRydWVgIHwg4pyU77iPIHwg4pyU77iPIHwg4pyU77iPIHwg4pyU77iPIHwKfCBgZXhwbG9kZTogZmFsc2VgIHwg4pyU77iPIHwg4pyU77iPIHwg4pyU77iPIHwg4pyU77iPIHwKCiMjIyBVUkwgQ29tcG91bmQgUGFyYW1ldGVyCgpJbiB0aGlzIGNhc2UsIGB4LXpzZXJpby1yZXF1ZXN0LXBhcnRgIHBvaW50cyB0byBhIHpzZXJpbyBjb21wb3VuZCBzdHJ1Y3QKaW5zdGVhZCBvZiBhIGZpZWxkIHdpdGggYSBzY2FsYXIgdmFsdWUuICoqVGhpcyBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4qKgoKIyMjIyBDb21wb25lbnQgU3VwcG9ydAoKfCBGZWF0dXJlICAgICAgICAgICAgfCBDKysgQ2xpZW50IHwgUHl0aG9uIENsaWVudCB8IE9BU2VydmVyIHwgenN3YWcuZ2VuIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tIHwKfCBgeC16c2VyaW8tcmVxdWVzdC1wYXJ0OiA8W3BhcmVudC5dKmNvbXBvdW5kX21lbWJlcj5gICB8IOKdjO+4jyB8IOKdjO+4jyB8IOKdjO+4jyB8IOKdjO+4jyB8CgojIyMgU2VydmVyIFVSTCBCYXNlIFBhdGgKCk9wZW5BUEkgYWxsb3dzIGZvciBhIGBzZXJ2ZXJzYCBmaWVsZCBpbiB0aGUgc3BlYyB0aGF0IGxpc3RzIFVSTCBwYXRoIHByZWZpeGVzCnVuZGVyIHdoaWNoIHRoZSBzcGVjaWZpZWQgQVBJIG1heSBiZSByZWFjaGVkLiBUaGUgT3BlbkFQSSBjbGllbnRzCmxvb2tzIGludG8gdGhpcyBsaXN0IHRvIGRldGVybWluZSBhIFVSTCBiYXNlIHBhdGggZnJvbQp0aGUgZmlyc3QgZW50cnkgaW4gdGhpcyBsaXN0LiBBIHNhbXBsZSBlbnRyeSBtaWdodCBsb29rIGFzIGZvbGxvd3M6CgpgYGAKc2VydmVyczoKLSBodHRwOi8vdW51c2VkLWhvc3QtaW5mb3JtYXRpb24vcGF0aC90by9teS9hcGkKYGBgIAoKVGhlIE9wZW5BUEkgY2xpZW50IHdpbGwgdGhlbiBjYWxsIG1ldGhvZHMgd2l0aCB5b3VyIHNwZWNpZmllZCBob3N0CmFuZCBwb3J0LCBidXQgcHJlZml4IHRoZSBgL3BhdGgvdG8vbXkvYXBpYCBzdHJpbmcuIAoKIyMjIyBDb21wb25lbnQgU3VwcG9ydAoKfCBGZWF0dXJlICAgICAgICAgICAgfCBDKysgQ2xpZW50IHwgUHl0aG9uIENsaWVudCB8IE9BU2VydmVyIHwgenN3YWcuZ2VuIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tIHwKfCBgc2VydmVyc2AgIHwg4pyU77iPIHwg4pyU77iPIHwg4pyU77iPIHwg4pyU77iPIHwKCiMjIyBBdXRoZW50aWNhdGlvbiBTY2hlbWVzCgpUbyBmYWNpbGl0YXRlIHRoZSBjb21tdW5pY2F0aW9uIG9mIGF1dGhlbnRpY2F0aW9uIG5lZWRzIGZvciB0aGUgd2hvbGUgb3IgcGFydHMKb2YgYSBzZXJ2aWNlLCBPcGVuQVBJIGFsbG93cyBmb3IgYHNlY3VyaXR5U2NoZW1lc2AgYW5kIGBzZWN1cml0eWAgZmllbGRzIGluIHRoZSBzcGVjLgpQbGVhc2UgcmVmZXIgdG8gdGhlIHJlbGV2YW50IHBhcnRzIG9mIHRoZSBbT3BlbkFQSSAzIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYXV0aGVudGljYXRpb24vKSBmb3Igc29tZQpleGFtcGxlcyBvbiBob3cgdG8gaW50ZWdyYXRlIHRoZXNlIGZpZWxkcyBpbnRvIHlvdXIgc3BlYy4KCiMjIyMgV2hlbiBTZWN1cml0eSBTY2hlbWVzIEFyZSBBcHBsaWVkCgoqKkltcG9ydGFudDoqKiBTZWN1cml0eSBzY2hlbWVzIChpbmNsdWRpbmcgT0F1dGgyKSBhcmUgKipvbmx5IGFwcGxpZWQgd2hlbiBleHBsaWNpdGx5IGRlY2xhcmVkKiogaW4gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4gWnN3YWcgY2xpZW50cyByZXNwZWN0IHRoZSBzZWN1cml0eSByZXF1aXJlbWVudHMgZGVmaW5lZCBpbiB0aGUgc3BlYyBhY2NvcmRpbmcgdG8gdGhlIFtPcGVuQVBJIDMuMCBTZWN1cml0eSBSZXF1aXJlbWVudCBzcGVjaWZpY2F0aW9uXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMjc2VjdXJpdHktcmVxdWlyZW1lbnQtb2JqZWN0KS4KCioqU2VjdXJpdHkgQ29uZmlndXJhdGlvbiBMZXZlbHM6KioKCjEuICoqR2xvYmFsIFNlY3VyaXR5KiogLSBBcHBsaWVkIHRvIGFsbCBlbmRwb2ludHMgYnkgZGVmYXVsdCAocm9vdC1sZXZlbCBgc2VjdXJpdHlgIGZpZWxkKToKICAgYGBgeWFtbAogICBjb21wb25lbnRzOgogICAgIHNlY3VyaXR5U2NoZW1lczoKICAgICAgIEhlYWRlckF1dGg6CiAgICAgICAgIHR5cGU6IGFwaUtleQogICAgICAgICBpbjogaGVhZGVyCiAgICAgICAgIG5hbWU6IFgtR2VuZXJpYy1Ub2tlbgoKICAgc2VjdXJpdHk6CiAgICAgLSBIZWFkZXJBdXRoOiBbXSAgIyBBcHBsaWVkIHRvIGFsbCBlbmRwb2ludHMgYnkgZGVmYXVsdAoKICAgcGF0aHM6CiAgICAgL21ldGhvZFdpdGhHbG9iYWxBdXRoOgogICAgICAgZ2V0OgogICAgICAgICAjIFVzZXMgZ2xvYmFsIEhlYWRlckF1dGgKICAgYGBgCgoyLiAqKlBlci1FbmRwb2ludCBTZWN1cml0eSoqIC0gT3ZlcnJpZGUgZ2xvYmFsIHNlY3VyaXR5IGZvciBzcGVjaWZpYyBvcGVyYXRpb25zOgogICBgYGB5YW1sCiAgIHBhdGhzOgogICAgIC9wcm90ZWN0ZWQ6CiAgICAgICBwb3N0OgogICAgICAgICBzZWN1cml0eToKICAgICAgICAgICAtIG9hdXRoMjogW3JlYWQsIHdyaXRlXSAgIyBPdmVycmlkZXMgZ2xvYmFsIHNlY3VyaXR5CiAgICAgL2FkbWluOgogICAgICAgcG9zdDoKICAgICAgICAgc2VjdXJpdHk6CiAgICAgICAgICAgLSBvYXV0aDI6IFthZG1pbl0gICMgRGlmZmVyZW50IHNjb3BlcyBmb3IgYWRtaW4gZW5kcG9pbnQKICAgYGBgCgozLiAqKk5vIEF1dGhlbnRpY2F0aW9uKiogLSBFeHBsaWNpdGx5IGRpc2FibGUgc2VjdXJpdHkgZm9yIHB1YmxpYyBlbmRwb2ludHM6CiAgIGBgYHlhbWwKICAgcGF0aHM6CiAgICAgL3B1YmxpYzoKICAgICAgIGdldDoKICAgICAgICAgc2VjdXJpdHk6IFtdICAjIEV4cGxpY2l0bHkgbm8gYXV0aGVudGljYXRpb24gcmVxdWlyZWQgKG92ZXJyaWRlcyBnbG9iYWwpCiAgIGBgYAoKKipQcmVjZWRlbmNlIFJ1bGU6KiogUGVyLW9wZXJhdGlvbiBgc2VjdXJpdHlgIHNldHRpbmdzICoqb3ZlcnJpZGUqKiBnbG9iYWwgYHNlY3VyaXR5YCBzZXR0aW5ncy4gSWYgYW4gb3BlcmF0aW9uIHNwZWNpZmllcyBpdHMgb3duIHNlY3VyaXR5IHJlcXVpcmVtZW50cyAoaW5jbHVkaW5nIGBzZWN1cml0eTogW11gKSwgdGhlIGdsb2JhbCBzZWN1cml0eSBjb25maWd1cmF0aW9uIGlzIGlnbm9yZWQgZm9yIHRoYXQgb3BlcmF0aW9uLgoKKipDb21wbGV0ZSBXb3JraW5nIEV4YW1wbGVzOioqCgotICoqT0F1dGgyIHdpdGggcGVyLWVuZHBvaW50IHNlY3VyaXR5Kio6IFNlZSBbYGxpYnMvenN3YWdjbC90ZXN0L3Rlc3RkYXRhL29hdXRoMi1vcGVuYXBpLnlhbWxgXShsaWJzL3pzd2FnY2wvdGVzdC90ZXN0ZGF0YS9vYXV0aDItb3BlbmFwaS55YW1sKSB3aGljaCBkZW1vbnN0cmF0ZXMgZGlmZmVyZW50IE9BdXRoMiBzY29wZXMgcGVyIGVuZHBvaW50IGFuZCBwdWJsaWMgZW5kcG9pbnRzIHdpdGhvdXQgYXV0aGVudGljYXRpb24uCi0gKipHbG9iYWwgc2VjdXJpdHkgd2l0aCBvdmVycmlkZXMqKjogU2VlIFtgbGlicy96c3dhZy90ZXN0L2NhbGMvYXBpLnlhbWxgXShsaWJzL3pzd2FnL3Rlc3QvY2FsYy9hcGkueWFtbCkgd2hpY2ggc2hvd3MgZ2xvYmFsIGBIZWFkZXJBdXRoYCBzZWN1cml0eSB3aXRoIHBlci1lbmRwb2ludCBvdmVycmlkZXMgYW5kIGV4cGxpY2l0IG5vLWF1dGggZGVjbGFyYXRpb25zLgoKWnN3YWcgY3VycmVudGx5IHVuZGVyc3RhbmRzIHRoZSBmb2xsb3dpbmcgYXV0aGVudGljYXRpb24gc2NoZW1lczoKCiogKipIVFRQIEJhc2ljIEF1dGhvcml6YXRpb246KiogSWYgYSBjYWxsZWQgZW5kcG9pbnQgcmVxdWlyZXMgSFRUUCBiYXNpYyBhdXRoLAogIHpzd2FnIHdpbGwgdmVyaWZ5IHRoYXQgdGhlIEhUVFAgY29uZmlnIGNvbnRhaW5zIGJhc2ljLWF1dGggY3JlZGVudGlhbHMuCiAgSWYgdGhlcmUgYXJlIG5vbmUsIHpzd2FnIHdpbGwgdGhyb3cgYSBkZXNjcmlwdGl2ZSBydW50aW1lIGVycm9yLgoqICoqSFRUUCBCZWFyZXIgQXV0aG9yaXphdGlvbjoqKiBJZiBhIGNhbGxlZCBlbmRwb2ludCByZXF1aXJlcyBIVFRQIGJlYXJlciBhdXRoLAogIHpzd2FnIHdpbGwgdmVyaWZ5IHRoYXQgdGhlIEhUVFAgY29uZmlnIGNvbnRhaW5zIGEgaGVhZGVyIHdpdGggdGhlCiAga2V5IG5hbWUgYEF1dGhvcml6YXRpb25gIGFuZCB0aGUgdmFsdWUgYEJlYXJlciA8dG9rZW4+YCwgKmNhc2Utc2Vuc2l0aXZlKi4KKiAqKkFQSS1LZXkgQ29va2llOioqIElmIGEgY2FsbGVkIGVuZHBvaW50IHJlcXVpcmVzIGEgQ29va2llIEFQSS1LZXksCiAgenN3YWcgd2lsbCBlaXRoZXIgYXBwbHkgW3RoZSBgYXBpLWtleWAgc2V0dGluZ10oI3BlcnNpc3RlbnQtaHR0cC1oZWFkZXJzLXByb3h5LWNvb2tpZS1hbmQtYXV0aGVudGljYXRpb24pLCBvciB2ZXJpZnkgdGhhdCB0aGUKICBIVFRQIGNvbmZpZyBjb250YWlucyBhIGNvb2tpZSB3aXRoIHRoZSByZXF1aXJlZCBuYW1lLCAqY2FzZS1zZW5zaXRpdmUqLgoqICoqQVBJLUtleSBRdWVyeSBQYXJhbWV0ZXI6KiogSWYgYSBjYWxsZWQgZW5kcG9pbnQgcmVxdWlyZXMgYSBRdWVyeSBBUEktS2V5LAogIHpzd2FnIHdpbGwgZWl0aGVyIGFwcGx5IHRoZSBgYXBpLWtleWAgc2V0dGluZywgb3IgdmVyaWZ5IHRoYXQgdGhlCiAgSFRUUCBjb25maWcgY29udGFpbnMgYSBxdWVyeSBrZXktdmFsdWUgcGFpciB3aXRoIHRoZSByZXF1aXJlZCBuYW1lLCAqY2FzZS1zZW5zaXRpdmUqLgoqICoqQVBJLUtleSBIZWFkZXI6KiogSWYgYSBjYWxsZWQgZW5kcG9pbnQgcmVxdWlyZXMgYW4gQVBJLUtleSBIZWFkZXIsCiAgenN3YWcgd2lsbCBlaXRoZXIgYXBwbHkgdGhlIGBhcGkta2V5YCBzZXR0aW5nLCBvciB2ZXJpZnkgdGhhdCB0aGUKICBIVFRQIGNvbmZpZyBjb250YWlucyBhIGhlYWRlciBrZXktdmFsdWUgcGFpciB3aXRoIHRoZSByZXF1aXJlZCBuYW1lLCAqY2FzZS1zZW5zaXRpdmUqLgoqICoqT0F1dGgyIENsaWVudCBDcmVkZW50aWFsczoqKiBJZiBhIGNhbGxlZCBlbmRwb2ludCByZXF1aXJlcyBPQXV0aDIgYXV0aGVudGljYXRpb24sCiAgenN3YWcgd2lsbCAqKmF1dG9tYXRpY2FsbHkgYWNxdWlyZSwgY2FjaGUsIGFuZCByZWZyZXNoKiogYWNjZXNzIHRva2VucyBmcm9tIHRoZSBjb25maWd1cmVkCiAgT0F1dGgyIHRva2VuIGVuZHBvaW50LiBUaGUgY2xpZW50IGhhbmRsZXMgdGhlIGVudGlyZSBPQXV0aDIgY2xpZW50IGNyZWRlbnRpYWxzIGZsb3cKICB0cmFuc3BhcmVudGx5LCBpbmNsdWRpbmcgdG9rZW4gZXhwaXJ5IGFuZCByZWZyZXNoLiAqKk5vdGU6KiogT25seSB0aGUgYGNsaWVudENyZWRlbnRpYWxzYAogIGZsb3cgaXMgc3VwcG9ydGVkLiBTZWUgdGhlIFtPQXV0aDIgY29uZmlndXJhdGlvbiBzZWN0aW9uXSgjcGVyc2lzdGVudC1odHRwLWhlYWRlcnMtcHJveHktY29va2llLWFuZC1hdXRoZW50aWNhdGlvbikKICBmb3IgZGV0YWlsZWQgc2V0dXAgaW5zdHJ1Y3Rpb25zLgoKKipOb3RlKio6IElmIHlvdSBkb24ndCB3YW50IHRvIHBhc3MgeW91ciBCYXNpYy1BdXRoL0JlYXJlci9RdWVyeS9Db29raWUvSGVhZGVyCmNyZWRlbnRpYWwgdGhyb3VnaCB5b3VyIFtwZXJzaXN0ZW50IGNvbmZpZ10oI3BlcnNpc3RlbnQtaHR0cC1oZWFkZXJzLXByb3h5LWNvb2tpZS1hbmQtYXV0aGVudGljYXRpb24pLAp5b3UgY2FuIHBhc3MgYSBgaHR0cGNsOjpDb25maWdgL1tgSFRUUENvbmZpZ2BdKCN1c2luZy10aGUtcHl0aG9uLWNsaWVudCkgb2JqZWN0IHRvIHRoZSBgT0FDbGllbnRgL1tgT0FDbGllbnRgXSgjdXNpbmctdGhlLXB5dGhvbi1jbGllbnQpLgpjb25zdHJ1Y3RvciBpbiBDKysvUHl0aG9uIHdpdGggdGhlIHJlbGV2YW50IGRldGFpbC4KCiMjIyMgQ29tcG9uZW50IFN1cHBvcnQKCnwgRmVhdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDKysgQ2xpZW50IHwgUHl0aG9uIENsaWVudCB8IE9BU2VydmVyIHwgenN3YWcuZ2VuIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IC0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0gfAp8IGBIVFRQIEJhc2ljLUF1dGhgIGBIVFRQIEJlYXJlci1BdXRoYCBgQ29va2llIEFQSS1LZXlgIGBIZWFkZXIgQVBJLUtleWAgYFF1ZXJ5IEFQSS1LZXlgIHwg4pyU77iPIHwg4pyU77iPIHwg4pyU77iPKCoqKSB8IOKclO+4jyB8CnwgYE9BdXRoMltjbGllbnRDcmVkZW50aWFsc11gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCDinJTvuI8gfCDinJTvuI8gfCDinJTvuI8oKiopIHwg4pyU77iPIHwKfCBgT3BlbklEIENvbm5lY3RgIGBPQXV0aDJbYXV0aG9yaXphdGlvbkNvZGVdYCBgT0F1dGgyW2ltcGxpY2l0XWAgYE9BdXRoMltwYXNzd29yZF1gICAgICB8IOKdjO+4jyB8IOKdjO+4jyB8IOKclO+4jygqKikgfCDinYzvuI8gfAoKKiooXCpcKikqKjogVGhlIHNlcnZlciBzdXBwb3J0IGZvciBhbGwgYXV0aGVudGljYXRpb24gc2NoZW1lcyBkZXBlbmRzIG9uIHlvdXIKY29uZmlndXJhdGlvbiBvZiB0aGUgV1NHSSBzZXJ2ZXIgKEFwYWNoZS9OZ2lueC8uLi4pIHdoaWNoIHdyYXBzIHRoZSB6c3dhZyBGbGFzayBhcHAuCg== readmeEtag: '"48ae6026d8bc0786bccf7d12d0aa96fc649a2476"' readmeLastModified: Thu, 04 Dec 2025 17:19:26 GMT repositoryId: 253472682 description: Access/Serve zserio services via REST/OpenAPI 🌍. created: '2020-04-06T11:07:06Z' updated: '2025-12-05T11:20:42Z' language: C++ archived: false stars: 15 watchers: 5 forks: 4 owner: ndsev logo: https://avatars.githubusercontent.com/u/38692822?v=4 license: BSD-3-Clause repoEtag: '"fced908ee3fc615ac4b2fde8ab723b5cf2ceaef25da9feb02246ae8ca784dbb6"' repoLastModified: Fri, 05 Dec 2025 11:20:42 GMT foundInMaster: true oldLocations: - https://github.com/klebert-engineering/zswag - source: openapi3 tags name: openapi-data-validator category: - Data Validators - Parsers repository: https://github.com/authress-engineering/openapi-data-validator.js language: - Node.js - Javascript source_description: >- Validate API requests against an OpenAPI schema. Lightweight, focused, and integrates with any framework link: https://github.com/Rhosys/openapi-data-validator.js/blob/main/README.md v2: false v3: true repositoryMetadata: base64Readme: >- IyMgT3BlbkFQSSBEYXRhIFZhbGlkYXRvcgpMaWdodHdlaWdodCBPcGVuQVBJIGNvbXBsZXRlIHJlcXVlc3QgbW9kZWwgdmFsaWRhdG9yLiBGYXN0LCB1bm9waW5pb25hdGVkLCBmdWxsIGZlYXR1cmVkIHZhbGlkYXRvciBmb3IgQVBJIHJlcXVlc3RzIHRoYXQgdXRpbGl6ZSBPcGVuQVBJIGRvY3MgZm9yIEFQSSBkb2N1bWVudGF0aW9uLgoKVGhpcyBpcyBhbiBvcGVuIHNvdXJjZSBwcm9qZWN0IG1hbmFnZWQgYnkgdGhlIFtBdXRocmVzcyBFbmdpbmVlcmluZyB0ZWFtXShodHRwczovL2F1dGhyZXNzLmlvKS4KClshW0F1dGhyZXNzIEVuZ2luZWVyaW5nXShodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YXRpYy92MT9sYWJlbD1BdXRocmVzcytFbmdpbmVlcmluZyZtZXNzYWdlPU9wZW5BUEklMjBEYXRhJTIwVmFsaWRhdG9yJmNvbG9yPSUyM0ZCQUYwQiZsb2dvPWFuZHJvaWRhdXRvJmxvZ29Db2xvcj0lMjNGQkFGMEIpXShodHRwczovL2F1dGhyZXNzLmlvKSBbIVtucG0gdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL29wZW5hcGktZGF0YS12YWxpZGF0b3Iuc3ZnKV0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL29wZW5hcGktZGF0YS12YWxpZGF0b3IpCgojIyBVc2FnZQpJdCBpcyBzaW1wbGUsIGFuZCB0aGF0J3MgYWxsIHRoZXJlIGlzIHRvIGl0IQoKYGBgc2gKbnBtIGluc3RhbGwgb3BlbmFwaS1kYXRhLXZhbGlkYXRvciAtLXNhdmUKYGBgCgpgYGBqcwpjb25zdCB7IE9wZW5BcGlWYWxpZGF0b3IgfSA9IHJlcXVpcmUoJ29wZW5hcGktZGF0YS12YWxpZGF0b3InKTsKY29uc3Qgc3BlYyA9IHJlcXVpcmUoJy4vb3BlbmFwaS5qc29uJyk7Cgpjb25zdCBvcGVuQXBpVmFsaWRhdG9yID0gbmV3IE9wZW5BcGlWYWxpZGF0b3IoeyBhcGlTcGVjOiBzcGVjIH0pOwpjb25zdCB2YWxpZGF0b3IgPSBvcGVuQXBpVmFsaWRhdG9yLmNyZWF0ZVZhbGlkYXRvcigpOwoKLy8gQ29uZmlndXJlIHRoaXMgdG8gdGhlIGNsaWVudCdzIHJlcXVlc3QuIEl0IHdpbGwgcmVzb2x2ZSB0aGUgZXhwZWN0ZWQgc2NoZW1hIGluIHRoZSBzcGVjIHVzaW5nIHRoZSBtZXRob2QgYW5kIHJvdXRlIGRlZmluZWQsIGFuZCB2YWxpZGF0ZSB0aGUgcmVxdWVzdCBwYXJhbWV0ZXJzLgpjb25zdCBuZXdSZXF1ZXN0ID0gewogIG1ldGhvZDogJ0dFVCcsCiAgLy8gTWF0Y2hlZCBvcGVuYXBpIHNwZWNpZmljYXRpb24gZ2VuZXJpYyByb3V0ZSwgdGhpcyBzaG91bGQgYmUgdGhlIGdlbmVyaWMgYHBhdGhgIGZyb20gdGhlIHNwZWMsIHN1Y2ggYXMgYC9yZXNvdXJjZXMve3Jlc291cmNlSWR9L2AsIGl0IG11c3QgbWF0Y2ggb25lIG9mIHRoZW0gZXhhY3RseS4KICByb3V0ZTogcmVxdWVzdC5yb3V0ZQoKICBoZWFkZXJzOiB7IEF1dGhvcml6YXRpb246ICdCZWFyZXIgVG9rZW4nIH0sCiAgCiAgLy8gUXVlcnkgc3RyaW5nIHBhcmFtZXRlcnMgZnJvbSB0aGUgcmVxdWVzdAogIHF1ZXJ5OiB7IGxpbWl0OiAxMCB9LAogIAogIC8vIEJvZHkgYWxyZWFkeSBwYXJzZWQgdG8gSlNPTgogIGJvZHk6IHsgZmllbGQ6IHRydWUgfSwKCiAgLy8gUGF0aCBwYXJhbWV0ZXJzCiAgcGF0aDogeyB1c2VyOiAndXNlcklkJyB9Cn07CmF3YWl0IHZhbGlkYXRvcihuZXdSZXF1ZXN0KTsKYGBgCgojIyBDb21waWxlIHZhbGlkYXRvcgpGb3IgaW1wcm92ZWQgcHJvY2Vzc2luZyBzcGVlZCB0aGUgdmFsaWRhdG9yIGNhbiBiZSBwcmUtY29tcGlsZWQgZnJvbSB0aGUgc3BlYwoKYGBganMKY29uc3Qgb3BlbkFwaVZhbGlkYXRvciA9IG5ldyBPcGVuQXBpVmFsaWRhdG9yKHsgYXBpU3BlYzogc3BlYywgY29tcGlsZWRGaWxlUGF0aDogJy4vY29tcGlsZWRWYWxpZGF0b3IuanNvbicgfSk7CmF3YWl0IG9wZW5BcGlWYWxpZGF0b3IuY29tcGlsZVZhbGlkYXRvcigpOwovLyBMYXRlcgpjb25zdCB2YWxpZGF0b3IgPSBhd2FpdCBvcGVuQXBpVmFsaWRhdG9yLmxvYWRWYWxpZGF0aW9uKCk7CgovLyAuLi4KYXdhaXQgdmFsaWRhdG9yKHJlcXVlc3QpOwpgYGAKCkNoZWNrb3V0IHRoZSBmdWxsOiBbQXN5bmMgZXhhbXBsZV0oLi9kb2NzL2FzeW5jLWV4YW1wbGUubWQpCgojIyBGQVFzCgojIyMjIFdoeSBub3QganVzdCB1c2UgQUpWCkFKViBpcyB0aGUgYmVzdCwgYnV0IHRoZXJlIGFyZSBzb21lIHRoaW5ncyB0aGF0IGp1c3QgYXJlIHZlcnkgT3BlbkFQSSBzcGVjaWZpYyB0aGF0IGRvbid0IG1ha2Ugc2Vuc2UgdG8gYmUgaW4gdGhlIHZhbGlkYXRvci4gRG9uJ3QgbmVlZCB0aGVtPyBHcmVhdCwgZ28gdXNlIEFKVi4KCiogVG9wIGxldmVsIGRlZmluZWQgUGF0aCBwYXJhbWV0ZXJzIC0gQUpWIGRvZXNuJ3QgdW5kZXJzdGFuZAoqIElubGluZSByZXF1ZXN0IGJvZHkgZGVmaW5pdGlvbnMsIEFKViBkb2Vzbid0IHVuZGVyc3RhbmQgc2NoZW1hIGRlZmluZWQgaW4gdGhlIG1ldGhvZCwgaXQgaGFzIHRvIGJlIGluIGEgY29tcG9uZW50CiogQm9keSBDb250ZW50LVR5cGUgdmFsaWRhdGlvbiAtIFJlcXVlc3QgYm9kaWVzIHdpdGggbXVsdGlwbGUgY29udGVudCB0eXBlcyBhbGxvd2VkCg== readmeEtag: '"83712693f8165c9b29fdb87cddc5f5574e655383"' readmeLastModified: Tue, 31 Oct 2023 18:33:44 GMT repositoryId: 373612289 description: OpenAPI Request Validation for API for any framework created: '2021-06-03T18:58:54Z' updated: '2025-10-14T20:46:58Z' language: JavaScript archived: false stars: 16 watchers: 2 forks: 7 owner: Authress-Engineering logo: https://avatars.githubusercontent.com/u/35577654?v=4 license: Apache-2.0 repoEtag: '"db2f1d20c6091427db4324d3cf5218fd94236fcb349720020c59bb8580e571e8"' repoLastModified: Tue, 14 Oct 2025 20:46:58 GMT foundInMaster: true id: c64a20817064b7b24a1f079a7b7b5363 oldLocations: - https://github.com/rhosys/openapi-data-validator.js - source: openapi3 tags repository: https://github.com/sake92/openapi4s v3: true id: 81d3023aafb15ff4a725e961e8da13d9 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpNHMKCk9wZW5BcGkgZ2VuZXJhdG9ycyBmb3IgU2NhbGEuCgpIZXJlIGlzIGEgc21hbGwgdmlkZW8gZGVtbzogaHR0cHM6Ly95b3V0dS5iZS9rZjB2R3JsS05iOAoKIyMgRmVhdHVyZXMgYW5kIEJlbmVmaXRzCi0gaW5jcmVtZW50YWwgZ2VuZXJhdG9yCiAgLSBkb2Vzbid0IHRvdWNoIHRoZSBjb2RlIHRoYXQgeW91IGFkZGVkIG1hbnVhbGx5CiAgLSBvbmx5IGFkZHMgbmV3IHByb3BlcnRpZXMvbWV0aG9kcy9jbGFzc2VzCi0gbGVuaWVudCBwYXJzZXIrZ2VuZXJhdG9yCiAgLSBpZiBzb21ldGhpbmcgaXMgbm90IHN1cHBvcnRlZCBpdCB3aWxsIHN0aWxsIChtb3N0bHkpIHdvcmsKICAtIHlvdSBjYW4gYWRhcHQgeW91ciBvcGVuYXBpIHNwZWMgdG8gd29yayBncmFkdWFsbHkKCiMjIExpbWl0YXRpb25zCi0gSlNPTiBvbmx5Ci0gb25seSAqbmFtZWQqIGVudGl0aWVzLCBubyBhbm9ueW1vdXMgb2JqZWN0cwoKLS0tCgojIyBHZW5lcmF0b3JzCgojIyMgU2hhcmFmIGJhY2tlbmQKU3VwcG9ydHMgYWxtb3N0IGFsbCBmZWF0dXJlczoKLSBjb250cm9sbGVycwotIGRpc2NyaW1pbmF0ZWQgbW9kZWxzIChzZWFsZWQgdHJhaXRzKQotIGVudW1zIChzY2FsYTMgc2luZ2xldG9uIGVudW1zKQotIHZhbGlkYXRpb25zCi0gcXVlcnkgcGFyYW1zCgojIyMgSHR0cDRzIGJhY2tlbmQKU3VwcG9ydHMgc29tZSBmZWF0dXJlczoKLSByb3V0ZXMgKGNvbnRyb2xsZXJzKQotIGRpc2NyaW1pbmF0ZWQgbW9kZWxzIChzZWFsZWQgdHJhaXRzKQotIGVudW1zIChzY2FsYTMgc2luZ2xldG9uIGVudW1zKQoKVE9ETzogcXVlcnkgcGFyYW1zLCB2YWxpZGF0aW9uLi4gIApDb250cmlidXRpb25zIHdlbGNvbWUhCgotLS0KCiMjIFVzYWdlCgojIyMgTWlsbCBwbHVnaW4KClNlZSBodHRwczovL2dpdGh1Yi5jb20vc2FrZTkyL21pbGwtb3BlbmFwaTRzCgojIyMgQ0xJCgpZb3UgY2FuIHVzZSBgb3BlbmFwaTRzLWNsaWAgd2l0aCBDb3Vyc2llciBsYXVuY2hlciB0byBnZW5lcmF0ZSB5b3VyIHNvdXJjZXM6CgpgYGBzaGVsbApjcyBsYXVuY2ggYmEuc2FrZTo6b3BlbmFwaTRzLWNsaTowLjYuMSAtTSBiYS5zYWtlLm9wZW5hcGk0cy5jbGkuT3BlbkFwaTRzTWFpbiAtLSBcCiAgLS1nZW5lcmF0b3Igc2hhcmFmIFwKICAtLXVybCBvcGVuYXBpLmpzb24gXAogIC0tYmFzZUZvbGRlciBzcmMgXAogIC0tYmFzZVBhY2thZ2UgY29tLmV4YW1wbGUKYGBgCgoK readmeEtag: '"0a0b438e170e4aae69680d729ffb066a6838a44f"' readmeLastModified: Wed, 16 Jul 2025 13:36:32 GMT repositoryId: 906544996 description: openapi4s created: '2024-12-21T07:37:30Z' updated: '2026-01-31T14:22:19Z' language: Scala archived: false stars: 26 watchers: 3 forks: 0 owner: sake92 logo: https://avatars.githubusercontent.com/u/12010694?v=4 license: Apache-2.0 repoEtag: '"c922c8197c2d17ca7f00200a2ded3c878596282cd6950eb29dbb9bf6148d3884"' repoLastModified: Sat, 31 Jan 2026 14:22:19 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/yapily/yapily-sdk-python v3: true id: d79b8bc72d6746f1ce7697d3680dfeb3 repositoryMetadata: base64Readme: >- IyBZYXBpbHkgUHl0aG9uIFNESwpbIVtHaXRIdWIgdmVyc2lvbl0oaHR0cHM6Ly9kMjVsY2lwemlqMTdkLmNsb3VkZnJvbnQubmV0L2JhZGdlLnN2Zz9pZD1naCZ0eXBlPTYmdj0meDI9MCldKGh0dHA6Ly9iYWRnZS5mdXJ5LmlvL2doL2JvZW5uZW1hbm4lMkZiYWRnZXMpCgpUaGlzIFNESyBsaWJyYXJ5IHdhcyBnZW5lcmF0ZWQgdXNpbmcgW09wZW5BcGkgR2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKS4gVGhlIFNESyBjYW4gYmUgdXNlZCBhcyBhIG1vZHVsZSBpbiB5b3VyIGNvZGUgYW5kIHRoZSBleGFtcGxlcyBkZW1vbnN0cmF0ZSBob3cgdG8gY29ubmVjdCB0byBmaW5hbmNpYWwgaW5zdGl0dXRpb25zIGludGVncmF0ZWQgd2l0aCBZYXBpbHkuCgojIyBSZXF1aXJlbWVudHMKClRvIGNvbm5lY3QgdG8gdGhlIFlhcGlseSBBUEksIHlvdSB3aWxsIG5lZWQgdG8gcmVnaXN0ZXIgeW91ciAKYXBwbGljYXRpb24gYXQgW2h0dHBzOi8vZGFzaGJvYXJkLnlhcGlseS5jb21dKCkuCgpUaGVzZSBhcHBsaWNhdGlvbiBjcmVkZW50aWFscyBjYW4gdGhlbiBiZSB1c2VkIHRvIGF1dGhvcmlzZSBhbGwKeW91ciBBUEkgcmVxdWVzdHMuCgojIyBJbnN0YWxsYXRpb24KClRoZSBTREsgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBpbiB0aGUgWWFwaWx5IGdpdGh1YiByZXBvc2l0b3J5IGFuZCAKY2FuIGJlIGluY2x1ZGVkIGluIHlvdXIgcHJvamVjdCAKYnkgYWRkaW5nIGl0IHRvIHlvdXIgZGVwZW5kZW5jaWVzCgojIyMjIHBpcCBpbnN0YWxsCgpwaXAzIGluc3RhbGwgZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS95YXBpbHkveWFwaWx5LXNkay1weXRob24uZ2l0I3N1YmRpcmVjdG9yeT1zZGsKCiMjIyMgcGlwIHVwZ3JhZGUKCnBpcDMgaW5zdGFsbCAtLXVwZ3JhZGUgZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS95YXBpbHkveWFwaWx5LXNkay1weXRob24uZ2l0I3N1YmRpcmVjdG9yeT1zZGsKCiMjIFVzYWdlCgpTYW1wbGUgdXNhZ2Ugb2YgdGhlIFNESyBjYW4gYmUgc2VlbiBpbiB0aGUgYGV4YW1wbGVzYCBmb2xkZXIuCgotIFJldHJpZXZlIGEgbGlzdCBvZiBhdmFpbGFibGUgZmluYW5jaWFsIGluc3RpdHV0aW9ucyB0byBjb25uZWN0IHRvCgpgYGBweXRob24KY29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb24oKQpjb25maWd1cmF0aW9uLnVzZXJuYW1lID0gY29uc3RhbnRzLkFQUExJQ0FUSU9OX0lECmNvbmZpZ3VyYXRpb24ucGFzc3dvcmQgPSBjb25zdGFudHMuQVBQTElDQVRJT05fU0VDUkVUCgphcGlDbGllbnQgPSBBcGlDbGllbnQoY29uZmlndXJhdGlvbikKaW5zdGl0dXRpb25zQXBpID0gSW5zdGl0dXRpb25zQXBpKGFwaUNsaWVudCkKaW5zdGl0dXRpb25zID0gaW5zdGl0dXRpb25zQXBpLmdldF9pbnN0aXR1dGlvbnNfdXNpbmdfZ2V0KCkKYGBgCgotIENyZWF0aW5nIHVzZXJzIGFuZCByZXRyaWV2aW5nIHVzZXJzIGZvciB5b3VyIGFwcGxpY2F0aW9uIHJlZ2lzdGVyZWQgaW4gdGhlIFlhcGlseSBEYXNoYm9hcmQKYGBgcHl0aG9uCmFwcGxpY2F0aW9uX3VzZXIgPSBOZXdBcHBsaWNhdGlvblVzZXIoYXBwbGljYXRpb25fdXNlcl9pZD1hcHBfdXNlcl9pZCkKdXNlcl9hcGkgPSBBcHBsaWNhdGlvblVzZXJzQXBpKGFwaUNsaWVudCkKdXNlcl9hcGkuYWRkX3VzZXJfdXNpbmdfcG9zdChhcHBsaWNhdGlvbl91c2VyKQpgYGAKCi0gQ3JlYXRlIGFuIGF1dGhvcmlzYXRpb24gVVJMIGZvciB5b3VyIHVzZXJzIHRvIHVzZSB0byBsb2cgaW50byB0aGVpciBpbnN0aXR1dGlvbgoKYGBgcHl0aG9uCmFjY291bnRfYXV0aG9yaXNhdGlvbl9yZXF1ZXN0ID0gQWNjb3VudEF1dGhvcmlzYXRpb25SZXF1ZXN0KAogICAgYXBwbGljYXRpb25fdXNlcl9pZD1jb25zdGFudHMuQVBQTElDQVRJT05fVVNFUl9JRCwgCiAgICBpbnN0aXR1dGlvbl9pZD1jb25zdGFudHMuSU5TVElUVVRJT05fSUQsCiAgICBjYWxsYmFjaz0nJywKICAgIG9uZV90aW1lX3Rva2VuPScnCikKCnJlc3BvbnNlID0gYWNjb3VudHNfYXBpLmluaXRpYXRlX2FjY291bnRfcmVxdWVzdF91c2luZ19wb3N0KGFjY291bnRfYXV0aF9yZXF1ZXN0PWFjY291bnRfYXV0aG9yaXNhdGlvbl9yZXF1ZXN0KQpyZWRpcmVjdF91cmwgPSByZXNwb25zZS5kYXRhLmF1dGhvcmlzYXRpb25fdXJsCmBgYAogCi0gT2J0YWluaW5nIGEgdmFsaWQgY29uc2VudCBmb3IgZmluYW5jaWFsIGRhdGEKCmBgYHB5dGhvbgpkZWYgZmlsdGVyQnlTdGF0dXMoY29uc2VudCk6CiAgICBpZiAoY29uc2VudC5zdGF0dXMgPT0gIkFVVEhPUklaRUQiKToKICAgICAgICByZXR1cm4gVHJ1ZQogICAgZWxzZToKICAgICAgICByZXR1cm4gRmFsc2UKCmNvbnNlbnRzID0gQ29uc2VudHNBcGkoYXBpQ2xpZW50KS5nZXRfY29uc2VudHNfdXNpbmdfZ2V0KAogICAgZmlsdGVyX2FwcGxpY2F0aW9uX3VzZXJfaWQ9W2NvbnN0YW50cy5BUFBMSUNBVElPTl9VU0VSX0lEXSwKICAgIGZpbHRlcl9pbnN0aXR1dGlvbj1bY29uc3RhbnRzLklOU1RJVFVUSU9OX0lEXQopLmRhdGEKCmF1dGhvcmlzZWRfY29uc2VudHMgPSBsaXN0KGZpbHRlcihmaWx0ZXJCeVN0YXR1cywgY29uc2VudHMpKQpjb25zZW50ID0gYXV0aG9yaXNlZF9jb25zZW50c1swXQpjb25zZW50X3Rva2VuID0gY29uc2VudC5jb25zZW50X3Rva2VuCmBgYAoKLSBSZXR1cm5pbmcgdXNlciBhY2NvdW50IGRldGFpbHMKYGBgcHl0aG9uCmFjY291bnRzQXBpID0gQWNjb3VudHNBcGkoYXBpQ2xpZW50KQphY2NvdW50cyA9IGFjY291bnRzQXBpLmdldF9hY2NvdW50c191c2luZ19nZXQoY29uc2VudF90b2tlbikKYGBgCgotIFJldHVybmluZyB1c2VyIHRyYW5zYWN0aW9uIGRldGFpbHMKCmBgYHB5dGhvbgp0cmFuc2FjdGlvbnNBcGkgPSBUcmFuc2FjdGlvbnNBcGkoYXBpQ2xpZW50KQp0cmFuc2FjdGlvbnMgPSB0cmFuc2FjdGlvbnNBcGkuZ2V0X3RyYW5zYWN0aW9uc191c2luZ19nZXQoY29uc2VudF90b2tlbiwgYWNjb3VudHMuZGF0YVswXS5faWQpCmBgYAoKLSBSZXR1cm5pbmcgdXNlciBpZGVudGl0eSBkZXRhaWxzCmBgYHB5dGhvbgppbnN0aXR1dGlvbnNfYXBpID0gSW5zdGl0dXRpb25zQXBpKGFwaUNsaWVudCkKZmVhdHVyZXMgPSBpbnN0aXR1dGlvbnNfYXBpLmdldF9pbnN0aXR1dGlvbl91c2luZ19nZXQoY29uc3RhbnRzLklOU1RJVFVUSU9OX0lEKS5mZWF0dXJlcwppZiAoIklERU5USVRZIiBpbiBmZWF0dXJlcyk6CiAgICBpZGVudGl0eV9hcGkgPSBJZGVudGl0eUFwaShhcGlDbGllbnQpCiAgICBpZGVudGl0eSA9IGlkZW50aXR5X2FwaS5nZXRfaWRlbnRpdHlfdXNpbmdfZ2V0KGNvbnNlbnRfdG9rZW4pCmBgYAoKIyMgRnVydGhlciBpbmZvcm1hdGlvbgoKRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGdldCBjb25uZWN0ZWQsIHZpc2l0IHRoZSBbWWFwaWx5IEtub3dsZWRnZSBCYXNlXShodHRwczovL2tiLnlhcGlseS5jb20pLgo= readmeEtag: '"6679845fa0b0b0596176a83fe0f33c26cbbbd044"' readmeLastModified: Fri, 25 Nov 2022 12:42:30 GMT repositoryId: 133962026 description: >- Python SDK generated against the Yapily API. This SDK can be used to connect to Open Banking entities. created: '2018-05-18T14:02:57Z' updated: '2026-02-01T22:44:14Z' language: Python archived: false stars: 15 watchers: 2 forks: 9 owner: yapily logo: https://avatars.githubusercontent.com/u/36482918?v=4 license: MIT repoEtag: '"cf92ad5ca07e35d792bcd8fa4a2d92582d7bb3457e27f9874d5213e559510a44"' repoLastModified: Sun, 01 Feb 2026 22:44:14 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/ckaratzas/tus-server-implementation v3: true repositoryMetadata: base64Readme: >- IyBUVVMgU2VydmVyIEphdmEgSW1wbGVtZW50YXRpb24KQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFR1cyBSZXN1bWFibGUgVXBsb2FkIHByb3RvY29sIFtodHRwczovL3R1cy5pby9wcm90b2NvbHMvcmVzdW1hYmxlLXVwbG9hZC5odG1sXSBpbiBqYXZhLiBWZXJ0eC1XZWIgaXMgdXNlZCBmb3IgdGhlIGh0dHAgc3RhY2sgcGFydAphbmQgcmVkaXMgYXMgdGhlIGJhY2tlbmQgZm9yIHVwbG9hZCBpbmZvcm1hdGlvbiBtYW5hZ2VtZW50LgpFeHRlbnNpb25zIHN1cHBvcnRlZCBhcmUgY3JlYXRpb24sY2hlY2tzdW0sdGVybWluYXRpb24sY29uY2F0ZW5hdGlvbi4gVGhlIHB1cnBvc2Ugb2YgdGhpcyByZXBvc2l0b3J5IGlzIHRvIHByb3ZpZGUgYSBUdXMgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYWdub3N0aWMKb2YgdGhlIHVuZGVybHlpbmcgc3RvcmFnZSBwcm92aWRlciB0aHVzIGFsbG93aW5nIGltcGxlbWVudG9ycyB0byBmb2N1cyBvbiB0aGVpciBidXNpbmVzcyBsb2dpYyBhbmQgc3BlY2lmaWMgbmVlZHMuCkFuIGlzc3VlIHRoYXQgaXMgbm90IGEgY29uY2VybiBvZiB0aGUgcHJvdG9jb2wgYnV0IGNvdWxkIGJlIGFuIGV4dGVuc2lvbiBpcyB0aGUgaGFuZGxpbmcgb2YgdGhlIGxvY2tzIGR1cmluZyBhIHBhdGNoIG9wZXJhdGlvbi4gU28gd2hlbiBhIHBhdGNoIGlzIGluaXRpYXRlZAphIGxvY2sgaXMgYWNxdWlyZWQgKGZvciBtb3N0IG9idmlvdXMgY2FzZXMpIHRvIGVuc3VyZSBjb25zaXN0ZW5jeS4gSWYgdGhlIHByb2Nlc3MgdHJpZ2dlcmVkIGZyb20gcGF0Y2ggZmFpbHMgYW5kIGxvY2sgaXMgbm90IHJlbGVhc2VkIHRoZXJlIGlzIGEgCnBoYW50b20gbG9jayByZW1haW5pbmcuIFRoaXMgZWRnZSBjYXNlIGNvdWxkIGJlIG1pdGlnYXRlZCBieSBlaXRoZXIgbWFraW5nIHRoZSBzZXJ2ZXIgc3RpY2t5IGFuZCBrZWVwaW5nIHRoZSBsb2NrcyBpbi1wcm9jZXNzIG9yIGJ5IHBlcmhhcHMgaXNzdWluZyBhIApyZWxlYXNlIHJlcXVlc3Qgd2l0aCBhIGxvY2sgdG9rZW4gb2J0YWluZWQgYnkgdGhlIGluaXRpYXRvciBvZiB0aGUgdXBsb2FkLgpObyBhdXRoZW50aWNhdGlvbiB2YWx2ZXMgYXJlIGltcGxlbWVudGVkIGhlcmUgYWxzby4KCiMgSW5zdHJ1Y3Rpb25zClRvIGp1c3QgYnVpbGQgdGhlIHR1cy1zZXJ2ZXItaW1wbGVtZW50YXRpb24ganVzdDoKCmBgYGNkIDxyb290PmBgYAoKYGBgbXZuIGNsZWFuIGluc3RhbGxgYGAKClRvIGJ1aWxkIHRoZSBkb2NrZXIgaW1hZ2UgZm9yIHRoZSB0dXMtc2VydmVyLWltcGxlbWVudGF0aW9uIGp1c3QgKGRvY2tlciBlZGdlIHJlbGVhc2UgW2h0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VkZ2UvXSBpcyByZXF1aXJlZCEpOgoKYGBgY2QgPHJvb3Q+YGBgCgpgYGBkb2NrZXIgYnVpbGQgLXQgdHVzX3NlcnZlciAuYGBgCgpJbiBvcmRlciB0byBydW4gdHVzLXNlcnZlci1pbXBsZW1lbnRhdGlvbiBhbG9uZyB3aXRoIGFsbCBkZXBlbmRlbmNpZXMganVzdCAoYXNzdW1pbmcgeW91IGFscmVhZHkgaGF2ZSB0aGUgZG9ja2VyIGltYWdlIGJ1aWx0IGZyb20gYWJvdmUpOgoKYGBgY2QgPHJvb3Q+YGBgCgpgYGBkb2NrZXItY29tcG9zZSAtZiB0dXMtc2VydmVyLnltbCB1cGBgYAoKSW4gb3JkZXIgdG8gc2V0dXAgdGhlIHR1cy1zZXJ2ZXItaW1wbGVtZW50YXRpb24gZm9yIGRldmVsb3BtZW50IGZyb20geW91ciBmYXZvcml0ZSBJREUgcmVkaXMgcnVubmluZyBpcyByZXF1aXJlZDoKCmBgYGNkIDxyb290PmBgYAoKYGBgZG9ja2VyLWNvbXBvc2UgLWYgcmVkaXMueW1sIHVwYGBgCgpBZnRlciB0aGF0IGluIG9yZGVyIHRvIHJ1biB0aGUgdHVzLXNlcnZlci1pbXBsZW1lbnRhdGlvbiBmcm9tIGluc2lkZSB5b3VyIGZhdm9yaXRlIElERSBqdXN0OgpSdW4gdGhlIGNvbS50dXMub3NzLnNlcnZlci5hcHBsaWNhdGlvbi5BcHBsaWNhdGlvbiBtYWluIGNsYXNzIAp3aXRoIHByb2dyYW0gYXJndW1lbnRzOgogLWMgPHJvb3Q+L2NvbmZpZ3VyYXRpb24vIC1iIHR1cy1zZXJ2ZXItYmVhbnMueG1sCmFuZCBWTSBwYXJhbWV0ZXJzOiAtRGxvZ2dpbmcuY29uZmlnPWZpbGU6PHJvb3Q+L2NvbmZpZ3VyYXRpb24vbG9nYmFjay54bWwKUmVkaXMgbXVzdCBiZSBsaXZlIGFsc28gKHNlZSBhYm92ZSBob3cgdG8gcnVuIGl0KQoKIyBUZXN0aW5nCkluIHRoZSB0ZXN0IGZvbGRlcjoKVGhlcmUgaXMgYSB2ZXJ5IHNpbXBsZSB1cGxvYWQgdGVzdCB0aGF0IHVzZXMgdHVzLWphdmEtY2xpZW50IFtodHRwczovL2dpdGh1Yi5jb20vdHVzL3R1cy1qYXZhLWNsaWVudF0uIApUaGVyZSBhcmUgYWxzbyBjdXJsIHRlc3RzIHRoYXQgdGVzdCBzaW1wbGUgdXBsb2FkIGFuZCBwYXJ0aWFsIHVwbG9hZHMgKGNvbmNhdGVuYXRpb24gZXh0ZW5zaW9uKQo= readmeEtag: '"b8fbdc615a000a14734483efc3465bad6c840924"' readmeLastModified: Sun, 04 Feb 2018 21:09:29 GMT repositoryId: 118587778 description: >- A java implementation of https://tus.io/protocols/resumable-upload.html protocol with vertx-web. created: '2018-01-23T09:26:44Z' updated: '2024-03-22T12:02:19Z' language: Java archived: false stars: 13 watchers: 2 forks: 1 owner: ckaratzas logo: https://avatars.githubusercontent.com/u/35725079?v=4 license: MIT repoEtag: '"d9b007a599bad97d6beafb8f54f134575587edad500b5e9d3a401f9e3be98a4e"' repoLastModified: Fri, 22 Mar 2024 12:02:19 GMT foundInMaster: true category: Server Implementations id: e81e01372ba901858d7fe6cb28c44c60 - source: openapi3 tags repository: https://github.com/arbs-io/api-studio-visualstudio v3: true id: 48eafce82bf409d993a951b9780d6826 repositoryMetadata: base64Readme: >- IVtWaXN1YWwgU3R1ZGlvIE1hcmtldHBsYWNlIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdmlzdWFsLXN0dWRpby1tYXJrZXRwbGFjZS92L0FuZHJld0J1dHNvbi5BcGlTdHVkaW8pCiFbVmlzdWFsIFN0dWRpbyBNYXJrZXRwbGFjZSBJbnN0YWxsc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL2kvQW5kcmV3QnV0c29uLkFwaVN0dWRpbykKIVtWaXN1YWwgU3R1ZGlvIE1hcmtldHBsYWNlIFJhdGluZ10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL3IvQW5kcmV3QnV0c29uLkFwaVN0dWRpbykKWyFbR2l0SHViIGlzc3Vlc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvaXNzdWVzL2FyYnMtaW8vYXBpLXN0dWRpby12aXN1YWxzdHVkaW8uc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2FyYnMtaW8vYXBpLXN0dWRpby12aXN1YWxzdHVkaW8vaXNzdWVzKQoKWyFbTWFpbnRhaW5hYmlsaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9YXJicy1pb19hcGktc3R1ZGlvLXZpc3VhbHN0dWRpbyZtZXRyaWM9c3FhbGVfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9YXJicy1pb19hcGktc3R1ZGlvLXZpc3VhbHN0dWRpbykKWyFbU2VjdXJpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1hcmJzLWlvX2FwaS1zdHVkaW8tdmlzdWFsc3R1ZGlvJm1ldHJpYz1zZWN1cml0eV9yYXRpbmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1hcmJzLWlvX2FwaS1zdHVkaW8tdmlzdWFsc3R1ZGlvKQpbIVtSZWxpYWJpbGl0eSBSYXRpbmddKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWFyYnMtaW9fYXBpLXN0dWRpby12aXN1YWxzdHVkaW8mbWV0cmljPXJlbGlhYmlsaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPWFyYnMtaW9fYXBpLXN0dWRpby12aXN1YWxzdHVkaW8pClshW0J1Z3NdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWFyYnMtaW9fYXBpLXN0dWRpby12aXN1YWxzdHVkaW8mbWV0cmljPWJ1Z3MpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1hcmJzLWlvX2FwaS1zdHVkaW8tdmlzdWFsc3R1ZGlvKQpbIVtWdWxuZXJhYmlsaXRpZXNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWFyYnMtaW9fYXBpLXN0dWRpby12aXN1YWxzdHVkaW8mbWV0cmljPXZ1bG5lcmFiaWxpdGllcyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPWFyYnMtaW9fYXBpLXN0dWRpby12aXN1YWxzdHVkaW8pCgojIyAqKldoYXQgaXMgQXBpIFN0dWRpbz8qKgoKQXBpIFN0dWRpbyBpcyBhIHByb2R1Y3Rpdml0eSBleHRlbnNpb24gZm9yIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvLiBUaGUgZXh0ZW5zaW9uIGJyaWRnZXMgdGhlIHJvbGUgb2YgYXJjaGl0ZWN0IGFuZCBkZXZlbG9wZXIsIHByb3ZpZGluZyByYXBpZCBwcm90b3R5cGluZyBhbmQgcHJvbW90aW5nIGluZHVzdHJ5IGJlc3QgcHJhY3RpY2VzLiBJbiBhZGRpdGlvbiwgQXBpIFN0dWRpbyBwcm92aWRlcyB0ZW1wbGF0aW5nIHRvIGd1YXJhbnRlZSBhIGNvbnNpc3RlbnQgbG9vayBhbmQgZmVlbCByZWdhcmRsZXNzIG9mIG9yZ2FuaXNhdGlvbiBvciBwcm9qZWN0IHNpemUuCgojIyAqKlZpc3VhbCBTdHVkaW8gRXh0ZW5zaW9uKioKCkFwaSBTdHVkaW8gRXh0ZW5zaW9uIGVuaGFuY2VzIFZpc3VhbCBTdHVkaW8gMjAyMisgYnkgcHJvdmlkaW5nIGEgZGVzaWduZXIsIHRvb2xib3gsIGV4cGxvcmVyIGFuZCBjb2RlIGdlbmVyYXRpb24gZW5naW5lIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIEFwaSBTdHVkaW8gYXNzZXRzLiBQcm9tb3RpbmcgQW4gQVBJLWZpcnN0IGFwcHJvYWNoIG1lYW5zIHRoYXQgeW91ciBBUElzIGFyZSB0cmVhdGVkIGFzICJmaXJzdC1jbGFzcyBjaXRpemVucyBmb3IgYW55IGRldmVsb3BtZW50IHByb2plY3QuIiBBcGkgU3R1ZGlvIHByb3ZpZGVzIGFyY2hpdGVjdHMgYW5kIGRldmVsb3BlcnMgd2l0aCBhIHNvbHV0aW9uIHRvIHF1aWNrbHkgZGVzaWduIGFuZCBjb2xsYWJvcmF0ZSwgcHJvdmlkaW5nIHRoZSBibHVlcHJpbnQgZm9yIHNvbHV0aW9uIGltcGxlbWVudGF0aW9uLiBJbiBhZGRpdGlvbiwgdGhlIGV4dGVuc2lvbiB3aWxsIGVuYWJsZSB0ZWFtcyB0byBxdWlja2x5IG1vY2sgc29sdXRpb24gZW5kcG9pbnRzLCBwcm9vZmluZyB1c2FiaWxpdHkgYmVmb3JlIGludmVzdGluZyBpbiBkZXZlbG9wbWVudC4KCiMjICoqSG93IGRvZXMgQXBpIFN0dWRpbyB3b3JrPyoqCgpBcGkgU3R1ZGlvIGNvbnRhaW5zIGEgdmlzdWFsIHN0dWRpbyBkZXNpZ25lciwgZG9tYWluLXNwZWNpZmljIGxhbmd1YWdlIChEU0wpIGFuZCBjb2RlIGdlbmVyYXRpb24gZW5naW5lIHRvIHByb3ZpZGUgYW4gZXhjZXB0aW9uYWwgZXhwZXJpZW5jZSBmb3IgYnVpbGRpbmcgbW9kZXJuIHJlc291cmNlLWJhc2VkIHNvbHV0aW9ucy4KCioqRG93bmxvYWQqKiBbQXBpIFN0dWRpbyBFeHRlbnNpb24gZm9yIFZpc3VhbCBTdHVkaW9dKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1BbmRyZXdCdXRzb24uQXBpU3R1ZGlvKSBmcm9tIHZpc3VhbCBzdHVkaW8gbWFya2V0cGxhY2UKCiMjICoqRmVhdHVyZXMqKgoKVGhlIGV4dGVuc2lvbiBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzLgoKLSA8c3BhbiBzdHlsZT0iY29sb3I6IzI2N0YwMDsiPioqRGVzaWduZXIqKjwvc3Bhbj46IFRoZSBWaXN1YWwgU3R1ZGlvIEFwaSBTdHVkaW8gRGVzaWduZXIgaXMgZGVkaWNhdGVkIHRvIGVkaXRpbmcgQXBpIFN0dWRpbyBEU0wgYXJ0ZWZhY3RzIHVzZWQgYnkgY29kZSBnZW5lcmF0ZWQgZGlyZWN0bHkgaW4gdGhlIFZpc3VhbCBTdHVkaW8gZW52aXJvbm1lbnQuIFRvIG9wZW4gYSAuQXBpU3R1ZGlvIGZpbGUsIHRoZSBkZXNpZ25lciBvcGVucyBpbiB0aGUgY2VudHJhbCBkb2NraW5nIGFyZWEgd2l0aGluIHZpc3VhbCBzdHVkaW8uIElmIHRoZXJlIGlzIG5vIHN1Y2ggZmlsZSwgeW91IG1heSBjcmVhdGUgaXQgdXNpbmcgdGhlIEFkZCAtLT4gTmV3IEl0ZW0gLS0+IEFwaVN0dWRpby4KCi0gPHNwYW4gc3R5bGU9ImNvbG9yOiNCMjAwRkY7Ij4qKlRvb2xib3gqKjwvc3Bhbj46IFRoZSBUb29sYm94IHdpbmRvdyBkaXNwbGF5cyBjb250cm9scyB0aGF0IHlvdSBjYW4gYWRkIHRvIFZpc3VhbCBTdHVkaW8gcHJvamVjdHMuIENob29zZSBWaWV3ID4gVG9vbGJveCBmcm9tIHRoZSBtZW51IGJhciBvciBwcmVzcyBDdHJsK0FsdCtYIHRvIG9wZW4gVG9vbGJveC4gWW91IGNhbiBkcmFnIGFuZCBkcm9wIGRpZmZlcmVudCBjb250cm9scyBvbnRvIHRoZSBzdXJmYWNlIG9mIHRoZSBBcGkgU3R1ZGlvIGRlc2lnbmVyIGFuZCByZXNpemUgYW5kIHBvc2l0aW9uIHRoZSBjb250cm9scy4gVG9vbGJveCBhcHBlYXJzIGluIGNvbmp1bmN0aW9uIHdpdGggQXBpIFN0dWRpbyBkZXNpZ25lciB2aWV3cy4gVG9vbGJveCBkaXNwbGF5cyBvbmx5IHRob3NlIGNvbnRyb2xzIHRoYXQgdGhlIGN1cnJlbnQgZGVzaWduZXIgY2FuIHVzZS4gWW91IGNhbiBzZWFyY2ggd2l0aGluIFRvb2xib3ggdG8gZnVydGhlciBmaWx0ZXIgdGhlIGl0ZW1zIHRoYXQgYXBwZWFyLgoKLSA8c3BhbiBzdHlsZT0iY29sb3I6IzAwOTRGRjsiPioqQXBpIFN0dWRpbyBFeHBsb3JlcioqPC9zcGFuPjogWW91IGNhbiB1c2UgdGhlIEV4cGxvcmVyIHRvb2wgd2luZG93IHRvIGNyZWF0ZSAmIG1hbmFnZSB5b3VyIHNvbHV0aW9ucyBhbmQgcHJvamVjdHMgYW5kIHRvIHZpZXcgJiBpbnRlcmFjdCB3aXRoIHlvdXIgY29kZS4KCi0gPHNwYW4gc3R5bGU9ImNvbG9yOiNGRkQ4MDA7Ij4qKlByb3BlcnR5Kio8L3NwYW4+OiBUaGUgVmlzdWFsIFN0dWRpbyBQcm9wZXJ0aWVzIHdpbmRvdyBpcyBhIHByb3BlcnR5IGJyb3dzZXIgZm9yIEFwaSBTdHVkaW8gY29tcG9uZW50cy4gVGhlIFByb3BlcnRpZXMgd2luZG93IGxpc3QgbWV0YWRhdGEgYXQgZGVzaWduIHRpbWUgZm9yIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgb2JqZWN0IGluIGFueSBvdGhlciB3aW5kb3cgaW4gdGhlIGludGVncmF0ZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgKElERSkuCgohW2FwaS1zdHVkaW8tdmlzdWFsc3R1ZGlvLW92ZXJ2aWV3LWhpZ2hsaWdodGVkX18xLnBuZ10oaW1hZ2VzL2FwaS1zdHVkaW8tdmlzdWFsc3R1ZGlvLW92ZXJ2aWV3LWhpZ2hsaWdodGVkLnBuZykKCiMjIyAqKlZpc3VhbCBTdHVkaW8gUHJvamVjdHMqKgoKQXBpIFN0dWRpbyBwcm92aWRlcyBhIHZpc3VhbCBzdHVkaW8gcHJvamVjdCBjb250YWluaW5nIGFsbCBhc3NldHMgdG8gZ2V0IHN0YXJ0ZWQuIFRoZSB0ZW1wbGF0ZSBvZmZlcnMgYSBjb21wbGV0ZSBidXQgbGlnaHR3ZWlnaHQgc29sdXRpb24uCgojIyMgQXZhaWxhYmxlIFByb2plY3QgVGVtcGxhdGVzCgp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMYW5ndWFnZSB8IExpYnJhcnkgICAgICAgIHwgRnJhbWV3b3JrIHwgVmVyc2lvbiB8IFN0YXR1cyB8IENvbW1lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTogfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tIHwgLS0tLS0tLSB8IDotLS0tOiB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8ICFbY3NoYXJwLWF6dXJlZnVuY3Rpb24tZG90bmV0Nl0oaW1hZ2VzL2FwaS1zdHVkaW8uY29kZWdlbi5jc2hhcnAtYXp1cmVmdW5jdGlvbi1kb3RuZXQ2LnBuZykgfCBjc2hhcnAgICB8IGF6dXJlX2Z1bmN0aW9uIHwgbmV0Ni4wICAgIHwgMS4wLjAgICB8ICAg4pyFICAgfAp8ICAgICFbY3NoYXJwLW1pbmltYWxhcGktZG90bmV0Nl0oaW1hZ2VzL2FwaS1zdHVkaW8uY29kZWdlbi5jc2hhcnAtbWluaW1hbGFwaS1kb3RuZXQ2LnBuZykgICAgfCBjc2hhcnAgICB8IG1pbmltdW1fYXBpICAgIHwgbmV0Ni4wICAgIHwgMS4wLjAgICB8ICAg4pyFICAgfCBuZXQ2LjAgb3BlbmFwaSBzcGVjaWZpY2F0aW9uIGxpbWl0YXRpb25zLCBhbnRpY2lwYXRlZCBmdWxsIHN1cHBvcnQgaW4gbmV0Ny4wIHwKCiMjIyBUZW1wbGF0ZSBTdGFuZGFyZHMKCkFwaSBTdHVkaW8gcHJvdmlkZXMgdGVtcGxhdGVkIHN0YW5kYXJkcyBmb3IgaGVhZGVyLCByZXNwb25zZSBjb2RlcyBhbmQgc2VjdXJpdHkgbW9kZWxzLiBBbGxvd2luZyBlbnRlcnByaXNlIHN0YW5kYXJkcyB0byBiZSBzaGFyZWQgYmV0d2VlbiBkZXZlbG9wbWVudCB0ZWFtcy4gVGhlIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdmlzdWFsIHN0dWRpb3Mgb3B0aW9ucyBUb29scyAtLT4gT3B0aW9ucyAtLT4gQXBpU3R1ZGlvLiBUaGUgb3B0aW9ucyBwYW5lbCBwcm92aWRlIEltcG9ydC9FeHBvcnQgZnVuY3Rpb25hbGl0eS4KCiFbYXBpLXN0dWRpby12aXN1YWxzdHVkaW8tb3B0aW9ucy5wbmddKGltYWdlcy9hcGktc3R1ZGlvLXZpc3VhbHN0dWRpby1vcHRpb25zLnBuZykKCiMjIyBBcGkgU3R1ZGlvIERlc2lnbmVyCgpUaGUgYXBpLXN0dWRpbyBmaWxlcyBhcmUgbG9jYXRlZCBpbiB0aGUgYCJcQXBpU3R1ZGlvImAgZm9sZGVyIHdpdGhpbiB0aGUgcHJvamVjdC4gVG8gb3BlbiB0aGUgZGVzaWduZXIgZG91YmxlIGNsaWNrIHRoZSBmaWxlLCBvciByaWdodCBjbGljayBhbmQgc2VsZWN0IGAiT3BlbiJgCgohW2FwaS1zdHVkaW8tdmlzdWFsc3R1ZGlvLXByb2plY3QucG5nXShpbWFnZXMvYXBpLXN0dWRpby12aXN1YWxzdHVkaW8tcHJvamVjdC5wbmcpCgojIyAqKkdldHRpbmcgU3RhcnRlZCoqCgpDcmVhdGluZyBhIG5ldyBwcm9qZWN0IGlzIHNpbXBsZS4gVmlzdWFsIFN0dWRpbyAiQ3JlYXRlIFByb2plY3QiLCBmaWx0ZXIgdXNpbmcgcHJvamVjdCB0eXBlICJBcGkgU3R1ZGlvIi4KCiFbYXBpLXN0dWRpby1wcm9qZWN0LXRlbXBsYXRlLWZpbHRlci5wbmddKGltYWdlcy9hcGktc3R1ZGlvLXByb2plY3QtdGVtcGxhdGUtZmlsdGVyLnBuZykKCiMjICoqV2hhdCdzIG5leHQqKgoKVGhpcyBleHRlbnNpb24gY3VycmVudGx5IHN1cHBvcnRzIFJFU1RmdWwtYmFzZWQgQVBJcywgYnV0IGV4dGVuc2lvbnMgdG8gYWxsb3cgc3VwcG9ydCBmb3IgZ1JwYywgV2ViSG9va3MgYW5kIFdlYlNvY2tldCBpbnRlcmZhY2VzIHNvb24uCgojIyAqKkhvdyBjYW4gSSBoZWxwPyoqCgpJZiB5b3UgZW5qb3kgdXNpbmcgdGhlIGV4dGVuc2lvbiwgcGxlYXNlIGdpdmUgaXQgYSByYXRpbmcgb24gdGhlIFtWaXN1YWwgU3R1ZGlvIE1hcmtldHBsYWNlXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9QW5kcmV3QnV0c29uLkFwaVN0dWRpbykuCgpTaG91bGQgeW91IGVuY291bnRlciBidWdzIG9yIGlmIHlvdSBoYXZlIGZlYXR1cmUgcmVxdWVzdHMsIGhlYWQgb24gb3ZlciB0byB0aGUgW0dpdEh1YiByZXBvXShodHRwczovL2dpdGh1Yi5jb20vYXJicy1pby9hcGktc3R1ZGlvLXZpc3VhbHN0dWRpbykgdG8gb3BlbiBhbiBpc3N1ZSBpZiBvbmUgZG9lc24ndCBhbHJlYWR5IGV4aXN0LgpQdWxsIHJlcXVlc3RzIGFyZSBhbHNvIHZlcnkgd2VsY29tZSBzaW5jZSBJIGNhbid0IGFsd2F5cyBnZXQgYXJvdW5kIHRvIGZpeGluZyBhbGwgYnVncyBteXNlbGYuCgpUaGlzIGlzIGEgcGVyc29uYWwgcGFzc2lvbiBwcm9qZWN0LCBzbyBteSB0aW1lIGlzIGxpbWl0ZWQuCgpBbm90aGVyIHdheSB0byBoZWxwIG91dCBpcyB0byBbc3BvbnNvciBtZSBvbiBHaXRIdWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9hcmJzLWlvKS4KCiMjICoqQ29weXJpZ2h0KioKCkNvcHlyaWdodCAyMDIzIEFwaSBTdHVkaW8sIEluYy4KCkxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZQo= readmeEtag: '"8e6b2f42fc70b9ab01ac2e06e7fdd87d58cf39b4"' readmeLastModified: Mon, 13 Feb 2023 21:09:35 GMT repositoryId: 448539420 description: >- Visual studio plug-in to create clean RESTful APIs. The plug-in provides a quick and easy ways to scaffold HTTP end-points following RFC and best practice. created: '2022-01-16T11:52:38Z' updated: '2025-05-28T04:28:35Z' language: C# archived: false stars: 12 watchers: 1 forks: 9 owner: arbs-io logo: https://avatars.githubusercontent.com/u/71968891?v=4 license: MIT repoEtag: '"df0baf455fc8d3542afb4ff7215f24da83a5966d5b9bc273741d4e58c5357871"' repoLastModified: Wed, 28 May 2025 04:28:35 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/bob-cd/wendy v3: true id: fb84178d96d3cb087e847830caeb1ba4 repositoryMetadata: base64Readme: >- IyBXZW5keQoKIyMgQm9iJ3MgcmVmZXJlbmNlIENMSSBhbmQgY29tbWFuZCBjZW50cmUKCiMjIFN0YXR1cwpBbHBoYQoKW0RvY3NdKGh0dHBzOi8vYm9iLWNkLmdpdGh1Yi5pby9jbGkvI3dlbmR5KQoKIyMgTGljZW5zZQpXZW5keSBsaWtlIEJvYiBpcyBbRnJlZV0oaHR0cHM6Ly93d3cuZ251Lm9yZy9waGlsb3NvcGh5L2ZyZWUtc3cuZW4uaHRtbCkgYW5kIE9wZW4gU291cmNlIGFuZCBhbHdheXMgd2lsbCBiZS4gTGljZW5zZWQgZnVsbHkgdW5kZXIgW01JVF0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQpCg== readmeEtag: '"c3d09bf4bf3b0a0b14d9cd412b6fa950aa110ce4"' readmeLastModified: Sat, 04 Jan 2025 08:29:36 GMT repositoryId: 174202758 description: Bob's command centre and the reference CLI/TUI created: '2019-03-06T18:57:09Z' updated: '2026-02-05T08:21:05Z' language: Go archived: false stars: 14 watchers: 8 forks: 6 owner: bob-cd logo: https://avatars.githubusercontent.com/u/32014218?v=4 license: MIT repoEtag: '"52b124cd93dcbad7751c1a273aa4bdec787da60b3383b4b7b03ee92808539cd7"' repoLastModified: Thu, 05 Feb 2026 08:21:05 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/pglass/py-openapi-schema-to-json-schema v3: true repositoryMetadata: base64Readme: >- T3ZlcnZpZXcKLS0tLS0tLS0KClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL3BnbGFzcy9weS1vcGVuYXBpLXNjaGVtYS10by1qc29uLXNjaGVtYS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9wZ2xhc3MvcHktb3BlbmFwaS1zY2hlbWEtdG8tanNvbi1zY2hlbWEpClshW1B5UEldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3B5LW9wZW5hcGktc2NoZW1hLXRvLWpzb24tc2NoZW1hLnN2ZyldKGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weS1vcGVuYXBpLXNjaGVtYS10by1qc29uLXNjaGVtYS8pClshW1B5UEkgLSBQeXRob24gVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3B5dmVyc2lvbnMvcHktb3BlbmFwaS1zY2hlbWEtdG8tanNvbi1zY2hlbWEuc3ZnKV0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5LW9wZW5hcGktc2NoZW1hLXRvLWpzb24tc2NoZW1hLykKCgoqKlRoaXMgaXMgYSBzdHJhaWdodCBQeXRob24gcG9ydCBvZiB0aGUgTUlULWxpY2Vuc2VkClttaWt1bm4vb3BlbmFwaS1zY2hlbWEtdG8tanNvbi1zY2hlbWFdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWt1bm4vb3BlbmFwaS1zY2hlbWEtdG8tanNvbi1zY2hlbWEpCihbdjIuMS4wXShodHRwczovL2dpdGh1Yi5jb20vbWlrdW5uL29wZW5hcGktc2NoZW1hLXRvLWpzb24tc2NoZW1hL3RyZWUvdjIuMS4wKSkqKi4KVGhpcyBwb3J0IGlzIHNpbWlsYXJseSBNSVQtbGljZW5zZWQuCgpJdCBjb252ZXJ0cyBmcm9tIFtPcGVuQVBJIDMuMF0oCmh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kKSB0bwpbSlNPTiBTY2hlbWEgRHJhZnQgNF0oaHR0cDovL2pzb24tc2NoZW1hLm9yZy9zcGVjaWZpY2F0aW9uLWxpbmtzLmh0bWwjZHJhZnQtNCkuCgojIyBXaHk/CgpPcGVuQVBJIDMgU2NoZW1hcyBhbmQgSlNPTiBTY2hlbWFzIGFyZSBtb3N0bHkgc2ltaWxhci4gSG93ZXZlciwgSlNPTiBTY2hlbWEKdmFsaWRhdG9ycyBhcmUgdW5hd2FyZSBvZiB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvIGZvcm1hdHMuIFRoaXMgbWVhbnMKdGhhdCB2YWxpZGF0aW5nIHJlcXVlc3QvcmVzcG9uc2UgSlNPTiB1c2luZyBhIHN0YW5kYXJkIEpTT04gU2NoZW1hIHZhbGlkYXRvcgp3aXRoIE9wZW5BUEkgMyBTY2hlbWFzIHdpbGwgcmVzdWx0IGluIGluY29ycmVjdCB2YWxpZGF0aW9ucyBpbiBjZXJ0YWluIGNvbW1vbgpjYXNlcy4KCk9uZSB3YXkgdG8gc29sdmUgdGhpcyBwcm9ibGVtIGlzIHRvIHRyYW5zbGF0ZSB0aGUgT3BlbkFQSSAzIHNjaGVtYSB0byBKU09OClNjaGVtYSwgd2hpY2ggaXMgdGhlIHB1cnBvc2Ugb2YgdGhpcyBsaWJyYXJ5LgoKU2VlIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vbWlrdW5uL29wZW5hcGktc2NoZW1hLXRvLWpzb24tc2NoZW1hL3RyZWUvdjIuMS4wI3doeSkKZm9yIG1vcmUgcmF0aW9uYWxlLCBhcyB3ZWxsIGFzIFtQaGlsIFN0dXJnZW9uJ3MgYmxvZyBwb3N0XSgKaHR0cHM6Ly9waGlsc3R1cmdlb24udWsvYXBpLzIwMTgvMDMvMzAvb3BlbmFwaS1hbmQtanNvbi1zY2hlbWEtZGl2ZXJnZW5jZS8pCmFib3V0IHRoZSBwcm9ibGVtLgoKIyMgRmVhdHVyZXMKCiogY29udmVydHMgT3BlbkFQSSAzLjAgU2NoZW1hIE9iamVjdCB0byBKU09OIFNjaGVtYSBEcmFmdCA0CiogZGVsZXRlcyBgbnVsbGFibGVgIGFuZCBhZGRzIGAibnVsbCJgIHRvIGB0eXBlYCBhcnJheSBpZiBgbnVsbGFibGVgIGlzIGB0cnVlYCBhbmQgYHR5cGVgIGlzIHByZXNlbnQKKiBhZGRzIGB7InR5cGUiOiAibnVsbCJ9YCB0byBgb25lT2ZgIG9yIGBhbnlPZmAgYXJyYXkgaWYgYG51bGxhYmxlYCBpcyBgdHJ1ZWAgYW5kIGB0eXBlYCBpcyBfbm90XyBwcmVzZW50Ciogc3VwcG9ydHMgZGVlcCBzdHJ1Y3R1cmVzIHdpdGggbmVzdGVkIGBhbGxPZmBzIGV0Yy4KKiByZW1vdmVzIFtPcGVuQVBJIHNwZWNpZmljCiAgcHJvcGVydGllc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQjZml4ZWQtZmllbGRzLTIwKQpzdWNoIGFzIGBkaXNjcmltaW5hdG9yYCwgYGRlcHJlY2F0ZWRgIGV0Yy4gdW5sZXNzIHNwZWNpZmllZCBvdGhlcndpc2UKKiBvcHRpb25hbGx5IHN1cHBvcnRzIGBwYXR0ZXJuUHJvcGVydGllc2Agd2l0aCBgeC1wYXR0ZXJuUHJvcGVydGllc2AgaW4gdGhlCiAgU2NoZW1hIE9iamVjdAoKKipOT1RFKio6IGAkcmVmYHMgYXJlIG5vdCBkZXJlZmVyZW5jZWQuIFlvdSB3aWxsIG5lZWQgYW5vdGhlciBsaWJyYXJ5IHRvCnJlYWQgdGhlIHNwZWMgYW5kIGZvbGxvdyBgJHJlZmAgZmllbGRzLgoKCiMjIEluc3RhbGxhdGlvbgoKYGBgYmFzaAokIHBpcCBpbnN0YWxsIHB5LW9wZW5hcGktc2NoZW1hLXRvLWpzb24tc2NoZW1hCmBgYAoKCiMjIFVzYWdlCgpgYGBweXRob24KaW1wb3J0IGpzb24KZnJvbSBvcGVuYXBpX3NjaGVtYV90b19qc29uX3NjaGVtYSBpbXBvcnQgdG9fanNvbl9zY2hlbWEKCm9wZW5hcGlfc2NoZW1hID0gewogICAgInR5cGUiOiAib2JqZWN0IiwKICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICJuYW1lIjogewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAibnVsbGFibGUiOiBUcnVlLAogICAgICAgIH0KICAgIH0sCiAgICAieC1wYXR0ZXJuUHJvcGVydGllcyI6IHsKICAgICAgICAiXlthLXpdKyQiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIm51bWJlciIsCiAgICAgICAgfQogICAgfQp9CgpvcHRpb25zID0geyJzdXBwb3J0UGF0dGVyblByb3BlcnRpZXMiOiBUcnVlfQpjb252ZXJ0ZWQgPSB0b19qc29uX3NjaGVtYShvcGVuYXBpX3NjaGVtYSwgb3B0aW9ucykKCnByaW50KGpzb24uZHVtcHMoY29udmVydGVkLCBpbmRlbnQ9MikpCmBgYAoKVGhpcyBvdXRwdXRzIHRoZSBmb2xsb3dpbmcgSlNPTiBzY2hlbWEuIFRoaXMgc2hvd3MgdGhlIGNvbnZlcnNpb24gb2YKYG51bGxhYmxlOiBUcnVlYCB0byBgdHlwZTogWyJzdHJpbmciLCAibnVsbCJdYCwgYW5kIHRoZSBlbmFibGVtZW50IG9mCnVuc3VwcG9ydGVkIEpTT04gU2NoZW1hIGZlYXR1cmVzIHVzaW5nIE9wZW5BUEkgZXh0ZW5zaW9uIGZpZWxkcwooYHgtcGF0dGVyblByb3BlcnRpZXNgIC0+IGBwYXR0ZXJuUHJvcGVydGllc2ApLgoKYGBganNvbgp7CiAgInBhdHRlcm5Qcm9wZXJ0aWVzIjogewogICAgIl5bYS16XSskIjogewogICAgICAidHlwZSI6ICJudW1iZXIiCiAgICB9CiAgfSwKICAicHJvcGVydGllcyI6IHsKICAgICJuYW1lIjogewogICAgICAidHlwZSI6IFsKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXQogICAgfQogIH0sCiAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIiwKICAidHlwZSI6ICJvYmplY3QiCn0KYGBgCgojIyMgT3B0aW9ucwoKVGhlIGB0b19qc29uX3NjaGVtYWAgZnVuY3Rpb24gYWNjZXB0cyBhbiBgb3B0aW9uc2AgZGljdGlvbmFyeSBhcyB0aGUgc2Vjb25kCmFyZ3VtZW50LgoKYGBgcHl0aG9uCiMgRGVmYXVsdHMKb3B0aW9ucyA9IHsKICAgICdjbG9uZVNjaGVtYSc6IFRydWUsCiAgICAnZGF0ZVRvRGF0ZVRpbWUnOiBGYWxzZSwKICAgICdzdXBwb3J0UGF0dGVyblByb3BlcnRpZXMnOiBGYWxzZSwKICAgICdrZWVwTm90U3VwcG9ydGVkJzogW10sCiAgICAncGF0dGVyblByb3BlcnRpZXNIYW5kbGVyJzoKICAgICAgICBvcGVuYXBpX3NjaGVtYV90b19qc29uX3NjaGVtYS5wYXR0ZXJuUHJvcGVydGllc0hhbmRsZXIsCiAgICAncmVtb3ZlUmVhZE9ubHknOiBGYWxzZSwKICAgICdyZW1vdmVXcml0ZU9ubHknOiBUcnVlLAp9CmBgYAoKIyMjIyBgY2xvbmVTY2hlbWFgIChib29sKQoKSWYgc2V0IHRvIGBGYWxzZWAsIGNvbnZlcnRzIHRoZSBwcm92aWRlZCBzY2hlbWEgaW4gcGxhY2UuIElmIGBUcnVlYCwgY2xvbmVzIHRoZQpzY2hlbWEgdXNpbmcgYGNvcHkuZGVlcGNvcHlgLiBEZWZhdWx0cyB0byBgVHJ1ZWAuCgojIyMjIGBkYXRlVG9EYXRlVGltZWAgKGJvb2wpCgpUaGlzIGlzIGBGYWxzZWAgYnkgZGVmYXVsdCBhbmQgbGVhdmVzIGBkYXRlYCBmb3JtYXQgYXMgaXMuIElmIHNldCB0byBgVHJ1ZWAsCnNldHMgYGZvcm1hdDogJ2RhdGUnYCB0byBgZm9ybWF0OiAnZGF0ZS10aW1lJ2AuCgpGb3IgZXhhbXBsZQoKYGBgcHl0aG9uCmltcG9ydCBqc29uCmZyb20gb3BlbmFwaV9zY2hlbWFfdG9fanNvbl9zY2hlbWEgaW1wb3J0IHRvX2pzb25fc2NoZW1hCgpzY2hlbWEgPSB7CiAgJ3R5cGUnOiAnc3RyaW5nJywKICAnZm9ybWF0JzogJ2RhdGUnLAp9Cgpjb252ZXJ0ZWQgPSB0b19qc29uX3NjaGVtYShzY2hlbWEsIHsnZGF0ZVRvRGF0ZVRpbWUnOiBUcnVlfSkKCnByaW50KGpzb24uZHVtcHMoY29udmVydGVkLCBpbmRlbnQ9MikpCmBgYAoKcHJpbnRzCgpgYGBqc29uCnsKICAiZm9ybWF0IjogImRhdGUtdGltZSIsCiAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIiwKICAidHlwZSI6ICJzdHJpbmciCn0KYGBgCgojIyMjIGBrZWVwTm90U3VwcG9ydGVkYCAobGlzdCkKCkJ5IGRlZmF1bHQsIHRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSByZW1vdmVkIGZyb20gdGhlIHJlc3VsdCBzY2hlbWE6CmBudWxsYWJsZWAsIGBkaXNjcmltaW5hdG9yYCwgYHJlYWRPbmx5YCwgYHdyaXRlT25seWAsIGB4bWxgLCBgZXh0ZXJuYWxEb2NzYCwKYGV4YW1wbGVgIGFuZCBgZGVwcmVjYXRlZGAgYXMgdGhleSBhcmUgbm90IHN1cHBvcnRlZCBieSBKU09OIFNjaGVtYSBEcmFmdCA0LgpQcm92aWRlIGEgbGlzdCBvZiB0aGUgb25lcyB5b3Ugd2FudCB0byBrZWVwIChhcyBzdHJpbmdzKSBhbmQgdGhleSB3b24ndCBiZQpyZW1vdmVkLgoKIyMjIyBgcmVtb3ZlUmVhZE9ubHlgIChib29sKQoKSWYgc2V0IHRvIGBUcnVlYCwgd2lsbCByZW1vdmUgcHJvcGVydGllcyBzZXQgYXMgYHJlYWRPbmx5YC4gSWYgdGhlIHByb3BlcnR5IGlzCnNldCBhcyBgcmVxdWlyZWRgLCBpdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgYHJlcXVpcmVkYCBsaXN0IGFzIHdlbGwuIFRoZQpwcm9wZXJ0eSB3aWxsIGJlIHJlbW92ZWQgZXZlbiBpZiBgcmVhZE9ubHlgIGlzIHNldCB0byBiZSBrZXB0IHdpdGgKYGtlZXBOb3RTdXBwb3J0ZWRgLgoKIyMjIyBgcmVtb3ZlV3JpdGVPbmx5YCAoYm9vbCkKClNpbWlsYXIgdG8gYHJlbW92ZVJlYWRPbmx5YCwgYnV0IGZvciBgd3JpdGVPbmx5YCBwcm9wZXJ0aWVzLgoKIyMjIyBgc3VwcG9ydFBhdHRlcm5Qcm9wZXJ0aWVzYCAoYm9vbCkKCklmIHNldCB0byBgVHJ1ZWAgYW5kIGB4LXBhdHRlcm5Qcm9wZXJ0aWVzYCBwcm9wZXJ0eSBpcyBwcmVzZW50LCBjaGFuZ2UKYHgtcGF0dGVyblByb3BlcnRpZXNgIHRvIGBwYXR0ZXJuUHJvcGVydGllc2AgYW5kIGNhbGwKYHBhdHRlcm5Qcm9wZXJ0aWVzSGFuZGxlcmAuIElmIGBwYXR0ZXJuUHJvcGVydGllc0hhbmRsZXJgIGlzIG5vdCBkZWZpbmVkLCBjYWxsCnRoZSBkZWZhdWx0IGhhbmRsZXIuIFNlZSBgcGF0dGVyblByb3BlcnRpZXNIYW5kbGVyYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiMjIyMgYHBhdHRlcm5Qcm9wZXJ0aWVzSGFuZGxlcmAgKGZ1bmN0aW9uKQoKUHJvdmlkZSBhIGZ1bmN0aW9uIHRvIGhhbmRsZSBwYXR0ZXJuIHByb3BlcnRpZXMgYW5kIHNldApgc3VwcG9ydFBhdHRlcm5Qcm9wZXJ0aWVzYCB0byB0YWtlIGVmZmVjdC4gVGhlIGZ1bmN0aW9uIHRha2VzIHRoZSBzY2hlbWEgd2hlcmUKYHgtcGF0dGVyblByb3BlcnRpZXNgIGlzIGRlZmluZWQgb24gdGhlIHJvb3QgbGV2ZWwuIEF0IHRoaXMgcG9pbnQKYHgtcGF0dGVyblByb3BlcnRpZXNgIGlzIGNoYW5nZWQgdG8gYHBhdHRlcm5Qcm9wZXJ0aWVzYC4gSXQgbXVzdCByZXR1cm4gdGhlCm1vZGlmaWVkIHNjaGVtYS4KCklmIHRoZSBoYW5kbGVyIGlzIG5vdCBwcm92aWRlZCwgdGhlIGRlZmF1bHQgaGFuZGxlciBpcyB1c2VkLiBJZgpgYWRkaXRpb25hbFByb3BlcnRpZXNgIGlzIHNldCBhbmQgaXMgYW4gb2JqZWN0LCB0aGUgZGVmYXVsdCBoYW5kbGVyIHNldHMgaXQgdG8KZmFsc2UgaWYgdGhlIGBhZGRpdGlvbmFsUHJvcGVydGllc2Agb2JqZWN0IGhhcyBkZWVwIGVxdWFsaXR5IHdpdGggYSBwYXR0ZXJuCm9iamVjdCBpbnNpZGUgYHBhdHRlcm5Qcm9wZXJ0aWVzYC4gVGhpcyBpcyBiZWNhdXNlIHdlIG1pZ2h0IHdhbnQgdG8gZGVmaW5lCmBhZGRpdGlvbmFsUHJvcGVydGllc2AgaW4gT3BlbkFQSSBzcGVjIGZpbGUsIGJ1dCB3YW50IHRvIHZhbGlkYXRlIGFnYWluc3QgYQpwYXR0ZXJuLiBUaGUgcGF0dGVybiB3b3VsZCB0dXJuIG91dCB0byBiZSB1c2VsZXNzIGlmIGBhZGRpdGlvbmFsUHJvcGVydGllc2Agb2YKdGhlIHNhbWUgc3RydWN0dXJlIHdlcmUgYWxsb3dlZC4gQ3JlYXRlIHlvdSBvd24gaGFuZGxlciB0byBvdmVycmlkZSB0aGlzCmZ1bmN0aW9uYWxpdHkuCgpTZWUgYHRlc3RzL3RvX2pzb25zY2hlbWEvdGVzdF9wYXR0ZXJuX3Byb3BlcnRpZXMucHlgIGZvciBleGFtcGxlcyBvZiB0aGlzLgoKCkNyZWRpdHMKLS0tLS0tLQoKLSBbbWlrdW5uXShodHRwczovL2dpdGh1Yi5jb20vbWlrdW5uKSBmb3IgdGhlIFtvcmlnaW5hbApvcGVuYXBpLXNjaGVtYS10by1qc29uLXNjaGVtYV0oaHR0cHM6Ly9naXRodWIuY29tL21pa3Vubi9vcGVuYXBpLXNjaGVtYS10by1qc29uLXNjaGVtYSkKLSBbUGhpbCBTdHVyZ2Vvbl0oaHR0cHM6Ly9naXRodWIuY29tL3BoaWxzdHVyZ2VvbikgZm9yIGhpcyBncmVhdCAKW2Jsb2cgcG9zdF0oaHR0cHM6Ly9waGlsc3R1cmdlb24udWsvYXBpLzIwMTgvMDMvMzAvb3BlbmFwaS1hbmQtanNvbi1zY2hlbWEtZGl2ZXJnZW5jZS8pCmFib3V0IHRoZSBpc3N1ZSAoYW5kIGhpcyBbcmV2ZXJzZSBpbXBsZW1lbnRhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3dld29yay9qc29uLXNjaGVtYS10by1vcGVuYXBpLXNjaGVtYSkpCg== readmeEtag: '"ed09d8d2c80770ebf18b14fa5917a334d1f42bed"' readmeLastModified: Sat, 25 Jul 2020 05:42:26 GMT repositoryId: 138369054 description: Python port of https://github.com/mikunn/openapi-schema-to-json-schema created: '2018-06-23T03:46:02Z' updated: '2025-07-01T12:59:50Z' language: Python archived: false stars: 14 watchers: 2 forks: 2 owner: pglass logo: https://avatars.githubusercontent.com/u/1077740?v=4 license: MIT repoEtag: '"034cb7b0c383d47cafaa405d3b9fc0239c71c174a3ba10b639970aba835b5718"' repoLastModified: Tue, 01 Jul 2025 12:59:50 GMT foundInMaster: true category: - Converters - Parsers id: c66a109574c000814bbca0c6afab6254 - source: openapi3 tags repository: https://github.com/python-lapidary/lapidary v3: true id: 6c315a3d79c2bbf8ff1d1567f057f64b repositoryMetadata: base64Readme: >- IyBMYXBpZGFyeQoKWyFbdGVzdF0oaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi1sYXBpZGFyeS9sYXBpZGFyeS9hY3Rpb25zL3dvcmtmbG93cy90ZXN0X3B1Ymxpc2gueWFtbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uLWxhcGlkYXJ5L2xhcGlkYXJ5L2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3RfcHVibGlzaC55YW1sKQoKUHl0aG9uIEhlbHBlciBmb3IgV2ViIEFQSSBjbGllbnRzLgoKIyMgV2h5CgpXZWIgQVBJIGNsaWVudHMgZm9sbG93IGEgcmVsYXRpdmVseSBzbWFsbCBzZXQgb2YgcGF0dGVybnMgYW5kIGltcGxlbWVudGluZyB0aGVtIGlzIHJhdGhlciByZXBldGl0aXZlIHRhc2suClByZXBhcmUgcmVxdWVzdCwgbWFrZSB0aGUgY2FsbCwgaGFuZGxlIHJlc3BvbnNlIHN0YXR1cywgZGVzZXJpYWxpemUgdGhlIGJvZHkKVHlwaWNhbCBleGFtcGxlcyBzaG93IGhvdyB0byB1c2UgYHJlcXVlc3QuZ2V0KClgIG9yIHNpbWlsYXIgbWV0aG9kLCBidXQgdGhpcyBpcyBhbiBhbnRpLXBhdHRlcm4uIFRoZXNlIGNhbGxzIHNob3VsZCBiZSBlbmNhcHN1bGF0ZWQgYXMgbW9kdWxlIGZ1bmN0aW9ucyBvciBtZXRob2RzLgoKIyMgSG93CgpMYXBpZGFyeSBpcyBhIGxpYnJhcnkgdGhhdCBwcm92aWRlcyBkZWNvcmF0b3JzIGFuZCBhbm5vdGF0aW9ucyBmb3IgZGVzY3JpYmluZyBXZWIgQVBJcyBpbiBhIHdheSBzaW1pbGFyIHRvIE9wZW5BUEkuCkluIGZhY3QgW2xhcGlkYXJ5IHJlbmRlcl0oaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi1sYXBpZGFyeS9sYXBpZGFyeS1yZW5kZXIvKSBjYW4gY29udmVydCBtdWNoIG9mIE9wZW5BUEkgMy4wIHRvIExhcGlkYXJ5IGNvZGUuCgpBdCBydW50aW1lLCB0aGUgbGlicmFyeSBpbnRlcnByZXRzIHVzZXItcHJvdmlkZWQgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGFuZCBtYWtlcyB0aGVtIGJlaGF2ZSBhcyBzcGVjaWZpZWQuCklmIGEgZnVuY3Rpb24gYWNjZXB0cyBwYXJhbWV0ZXIgb2YgdHlwZSBgWGAgYW5kIHJldHVybnMgYFlgLCBMYXBpZGFyeSB3aWxsIHRyeSB0byBjb252ZXJ0IGBYYCB0byBIVFRQIHJlcXVlc3QgYW5kIHRoZSByZXNwb25zZSBiYWNrIHRvIGBZYC4KCkNoZWNrIHRoZSBbZXhhbXBsZV0oaHR0cHM6Ly9weXRob24tbGFwaWRhcnkuZ2l0aHViLmlvL2xhcGlkYXJ5LyN1c2FnZSkK readmeEtag: '"f82617a4dbba47b4cc1895194c323704b1d64f93"' readmeLastModified: Tue, 23 Sep 2025 20:47:49 GMT repositoryId: 530807671 description: Write Web API clients using annotations in python created: '2022-08-30T19:50:12Z' updated: '2026-01-12T01:12:40Z' language: Python archived: false stars: 16 watchers: 1 forks: 0 owner: python-lapidary logo: https://avatars.githubusercontent.com/u/111730600?v=4 license: MIT repoEtag: '"83f80db413f685096cd4704d68e1c68c236c7cf09548dadc553735760052afc2"' repoLastModified: Mon, 12 Jan 2026 01:12:40 GMT category: - Parsers - SDK foundInMaster: true oldLocations: - https://github.com/lapis-project/lapis - source: openapi3 tags repository: https://github.com/yapily/yapily-openapi v3: true repositoryMetadata: base64Readme: >- IyBZYXBpbHktb3BlbmFwaTMtc3BlY2lmaWNhdGlvbnMKCiFbU2NoZW1hIFZhbGlkYXRvcl0oaHR0cHM6Ly92YWxpZGF0b3Iuc3dhZ2dlci5pby92YWxpZGF0b3I/dXJsPWh0dHBzOi8vb3BlbmFwaS55YXBpbHkuY29tL29wZW5hcGkuanNvbikKCllhcGlseSB1c2VzIHRoZSBgT3BlbkFQSSAzLjAuMWAgc3BlY2lmaWNhdGlvbiB0byBzY2hlbWF0aXplIG91ciBbZG9jc10oaHR0cHM6Ly9kb2NzLnlhcGlseS5jb20vKSBhbmQgZ2VuZXJhdGUgb3VyIHN1cHBvcnRlZCBjbGllbnQgbGlicmFyaWVzLiBUaGlzIHByb3ZpZGVzIGEgY29uc2lzdGVudCBkZXZlbG9wZXIgZXhwZXJpZW5jZSBhY3Jvc3Mgb3VyIGV4dGVybmFsIGludGVyZmFjZXMuCgotIFtZYXBpbHktb3BlbmFwaTMtc3BlY2lmaWNhdGlvbnNdKCN5YXBpbHktb3BlbmFwaTMtc3BlY2lmaWNhdGlvbnMpCiAgLSBbSW5zdGFsbGluZyB0aGUgSmF2YSBkZXBlbmRlbmNpZXNdKCNpbnN0YWxsaW5nLXRoZS1qYXZhLWRlcGVuZGVuY2llcykKICAtIFtKYXZhIHN1cHBvcnRdKCNqYXZhLXN1cHBvcnQpCiAgLSBbTm9kZSBzdXBwb3J0XSgjbm9kZS1zdXBwb3J0KQogIC0gW1B5dGhvbiBzdXBwb3J0XSgjcHl0aG9uLXN1cHBvcnQpCiAgLSBbS25vd24gaXNzdWVzIHdpdGggb3BlbmFwaS1nZW5lcmF0b3JdKCNrbm93bi1pc3N1ZXMtd2l0aC1vcGVuYXBpLWdlbmVyYXRvcikKICAtIFtFeGFtcGxlc10oI2V4YW1wbGVzKQoKIyMgSW5zdGFsbGluZyB0aGUgSmF2YSBkZXBlbmRlbmNpZXMKClRoZSBPcGVuQVBJIGdlbmVyYXRvciBpcyBhIG1hdmVuIHBsdWdpbiB1c2VkIHRvIGdlbmVyYXRlIHNlcnZlciBhbmQgY2xpZW50IGxpYnJhcmllcyBmcm9tIGEgZ2l2ZW4gT0FTIGZpbGUuCgpGaXJzdCByZXF1aXJlbWVudCB0byB1c2UgdGhlIE9wZW5BUEkgZ2VuZXJhdG9yIGlzIHRvIGluc3RhbGwgSmF2YS4gCgpUaGUgZm9sbG93aW5nIFt0dXRvcmlhbF0oaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL2phdmEvZG9jcy9zZXR1cCNpbnN0YWxsX2FfamRrX2phdmFfZGV2ZWxvcG1lbnRfa2l0KSBwcm92aWRlcyBhbiBleHRlbnNpdmUgc3RlcC1ieS1zdGVwIGd1aWRlIG9uIGhvdyB0byBzZXQgdXAgYW5kIGNvbmZpZ3VyZSB5b3VyIGRldmVsb3BtZW50IGVudmlyb25tZW50LgoKIyMgSmF2YSBzdXBwb3J0CgpQbGVhc2UgcmVmZXIgdG8gdGhpcyBbZG9jdW1lbnRdKC9tYWluLy4uL2RvY3MvamF2YS5tZCkgZm9yIEphdmEuCgojIyBOb2RlIHN1cHBvcnQKClBsZWFzZSByZWZlciB0byB0aGlzIFtkb2N1bWVudF0oL21haW4vLi4vZG9jcy9ub2RlLm1kKSBmb3IgTm9kZS4KCiMjIFB5dGhvbiBzdXBwb3J0CgpQbGVhc2UgcmVmZXIgdG8gdGhpcyBbZG9jdW1lbnRdKC9tYWluLy4uL2RvY3MvcHl0aG9uLm1kKSBmb3IgUHl0aG9uLgoKIyMgS25vd24gaXNzdWVzIHdpdGggb3BlbmFwaS1nZW5lcmF0b3IKClRoZSBbb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpIGdlbmVyYXRpb24gc3R5bGVzIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBjaG9zZW4gbGFuZ3VhZ2U6CgotIFdlIHJlZ2FyZCB0aGUgZXh0ZW5zaW9uIG9mIGVudW1lcmF0aW9ucyBpbiB0aGUgWWFwaWx5IEFQSSB0byBiZSBhIG5vbi1icmVha2luZyBjaGFuZ2UsIGFuZCB3ZSBtYXkgYWRkIG5ldyB2YWx1ZXMgd2l0aG91dCBhZHZhbmNlIHdhcm5pbmcuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBPcGVuQVBJIGdlbmVyYXRvcnMgYXV0b21hdGljYWxseSBlbXBsb3kgZW51bSB2YWxpZGF0aW9uIGJ5IGRlZmF1bHQsIGhvd2V2ZXIgd2UgZXhwZWN0IGNsaWVudHMgdG8gZGlzYWJsZSBzdHJpY3QgZW51bSB2YWxpZGF0aW9uIGZvciByZXNwb25zZXMgaW4geW91ciBnZW5lcmF0ZWQgbGlicmFyaWVzLiBPdGhlcndpc2UsIHlvdXIgY2xpZW50cyB3aWxsIGV4cGVyaWVuY2UgZXJyb3JzIHdoZW4gbmV3IGVudW0gdmFsdWVzIGFyZSBhZGRlZC4KCiMjIEV4YW1wbGVzCgpGb3IgYSBiZXR0ZXIgdmlldyBvZiB0aGUgaW1wbGVtZW50YXRpb24gcHJvY2VzcywgY2hlY2sgb3V0IG91ciBbZXhhbXBsZXNdKC9tYWluLy4uL2V4YW1wbGVzL1JFQURNRS5tZCkgc2VjdGlvbiB3aGljaCBwcmVzZW50cyBhIHN0cmF0ZWd5IGZvciBpbXBsZW1lbnRpbmcgZWFzaWx5IHdpdGggWWFwaWx5IGluIHlvdXIgbGFuZ3VhZ2Ugb2YgY2hvaWNlLgo= readmeEtag: '"cd917f5a69109701b406eb7f7ba6252573c6f9a8"' readmeLastModified: Mon, 05 Aug 2024 11:31:19 GMT repositoryId: 446895316 description: >- 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: '2026-01-21T10:13:00Z' language: null archived: false stars: 14 watchers: 3 forks: 2 owner: yapily logo: https://avatars.githubusercontent.com/u/36482918?v=4 repoEtag: '"cca5d5b711490f5f62bf89f9551b43d5f5fb860410605dcd3a8765f33a8d060f"' repoLastModified: Wed, 21 Jan 2026 10:13:00 GMT foundInMaster: true category: - SDK - Parsers id: 480ed47307537545205cc96bd408fb48 - source: openapi3 tags repository: https://github.com/mkbeh/fastapi-admin-panel v3: true repositoryMetadata: base64Readme: >- IyBGYXN0QVBJIGFuZCBQb3N0Z3JlU1FMIC0gQWRtaW4gUGFuZWwKCgpbIVtQeXRob24gMy45XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3B5dGhvbi0zLjktYmx1ZS5zdmcpXShodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy9yZWxlYXNlL3B5dGhvbi0zOTAvKQohW1BsYXRmb3JtXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3BsYXRmb3JtLWxpbnV4LWdyZWVuLnN2ZykKWyFbR2l0SHViIGxpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvTmFlcmVlbi9TdHJhcERvd24uanMuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL05hZXJlZW4vU3RyYXBEb3duLmpzL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpCgoKQmFja2VuZCBzdGFjayB1c2luZyBQeXRob24gLCBpbmNsdWRpbmcgaW50ZXJhY3RpdmUgQVBJIGRvY3VtZW50YXRpb24gYW5kIG1hbnkgdXNlZnVsIGZlYXR1cmVzIG91dCBvZiB0aGUgYm94LgoKCiMjIEludGVyYWN0aXZlIEFQSSBkb2N1bWVudGF0aW9uCgohW1N3YWdnZXJdKGltZy9zd2FnZ2VyX2RvY3MucG5nKQoKCiMjIEFsdGVybmF0aXZlIEFQSSBkb2N1bWVudGF0aW9uCgohW1JlZG9jXShpbWcvcmVkb2NfZG9jcy5wbmcpCgoKIyMgRmVhdHVyZXMKCiogRnVsbCAqKkRvY2tlcioqIGludGVncmF0aW9uIChEb2NrZXIgYmFzZWQpLgoKKiAqKkRvY2tlciBDb21wb3NlKiogaW50ZWdyYXRpb24uCgoqICoqUHJvZHVjdGlvbiByZWFkeSoqIFB5dGhvbiB3ZWIgc2VydmVyIHVzaW5nIFV2aWNvcm4uCgoqIFB5dGhvbiAqKkZhc3RBUEkqKiBiYWNrZW5kLgoKKiAqKlNlY3VyZSBwYXNzd29yZCoqIGhhc2hpbmcgYnkgZGVmYXVsdC4KCiogKipKV1QgdG9rZW4qKiBhdXRoZW50aWNhdGlvbi4KCiogKipTUUxBbGNoZW15KiogbW9kZWxzLgoKKiAqKkFsZW1iaWMqKiBtaWdyYXRpb25zLgoKKiAqKkNPUlMqKiAoQ3Jvc3MgT3JpZ2luIFJlc291cmNlIFNoYXJpbmcpLgoKKiBSRVNUIGJhY2tlbmQgdGVzdHMgYmFzZWQgb24gKipQeXRlc3QqKiwgaW50ZWdyYXRlZCB3aXRoIERvY2tlciwgc28geW91IGNhbiB0ZXN0IHRoZSBmdWxsIEFQSSBpbnRlcmFjdGlvbiwgaW5kZXBlbmRlbnQgb24gdGhlIGRhdGFiYXNlLiBBcyBpdCBydW5zIGluIERvY2tlciwgaXQgY2FuIGJ1aWxkIGEgbmV3IGRhdGEgc3RvcmUgZnJvbSBzY3JhdGNoIGVhY2ggdGltZS4KCiogKipTZWN1cmUgZG9jcyoqIGJlaGluZCBiYXNpYyBodHRwIGF1dGguCgoqICoqU2VudHJ5KiogaW50ZWdyYXRpb24gKGFwcGxpY2F0aW9uIG1vbml0b3JpbmcgYW5kIGVycm9yIHRyYWNraW5nKS4KCiogKipTZW5kR3JpZCoqIGludGVncmF0aW9uIChlbWFpbCBkZWxpdmVyeSBzZXJ2aWNlKS4KCiogKipFbWFpbCBjb25maXJtYXRpb24qKiB3aGVuIHJlZ2lzdGVyaW5nIGEgdXNlci4KCiogSW50ZWdyYXRpb24gd2l0aCAqKlNvY2lhbCBOZXR3b3JrcyoqIChWa29udGFrZSwgRmFjZWJvb2ssIEdtYWlsKS4KCiogQmVhdXR5IG1peGlucyBmb3IgKipBc3luY2hyb25vdXMgU1FMQWxjaGVteSoqLgoKCiMjIEhvdyB0byB1c2UgaXQKCiMjIyBHZW5lcmF0ZSBwYXNzd29yZHMKCllvdSB3aWxsIGJlIGFza2VkIHRvIHByb3ZpZGUgcGFzc3dvcmRzIGFuZCBzZWNyZXQga2V5cyBmb3Igc2V2ZXJhbCBjb21wb25lbnRzLiBPcGVuIGFub3RoZXIgdGVybWluYWwgYW5kIHJ1bjoKCmBgYApvcGVuc3NsIHJhbmQgLWhleCAzMgojIE91dHB1dHMgc29tZXRoaW5nIGxpa2U6IDk5ZDNiMWYwMWFhNjM5ZTRhNzZmNGZjMjgxZmM4MzQ3NDdhNTQzNzIwYmE0YzhhODY0OGJhNzU1YWVmOWJlN2YKYGBgCgojIyMgRW52aXJvbm1lbnQgdmFyaWFibGVzCgpUaGUgaW5wdXQgdmFyaWFibGVzLCB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWVzOgoKKiBgUFJPSkVDVF9OQU1FYDogVGhlIG5hbWUgb2YgdGhlIHByb2plY3QKCiogYFZFUlNJT05gOiBQcm9qZWN0IHZlcnNpb24KCiogYFNFUlZFUl9ET01BSU5gOiBUaGUgZG9tYWluIGluIHdoZXJlIHRvIGRlcGxveSB0aGUgcHJvamVjdC4gQnkgZGVmYXVsdCwgYmFzZWQgb24gdGhlIGBodHRwOi8vbG9jYWxob3N0OjgwMDBgLgoKKiBgRklSU1RfU1VQRVJVU0VSX0xPR0lOYDogVGhlIGZpcnN0IHN1cGVydXNlciBnZW5lcmF0ZWQsIHdpdGggaXQgeW91IHdpbGwgYmUgYWJsZSB0byBjcmVhdGUgbW9yZSB1c2VycywgZXRjLgoKKiBgRklSU1RfU1VQRVJVU0VSX1BBU1NXT1JEYDogRmlyc3Qgc3VwZXJ1c2VyIHBhc3N3b3JkLiBVc2UgdGhlIG1ldGhvZCBhYm92ZSB0byBnZW5lcmF0ZSBpdC4KCiogYERPQ1NfQURNSU5fVVNFUk5BTUVgOiBVc2VybmFtZSBmb3IgYmFzaWMgaHR0cCBhdXRoIG9mIHNlY3VyZSBkb2NzLgoKKiBgRE9DU19BRE1JTl9QQVNTV09SRGA6IFBhc3N3b3JkIGZvciBiYXNpYyBodHRwIGF1dGggb2Ygc2VjdXJlIGRvY3MuCgoqIGBFTlZgOiBFbnZpcm9ubWVudCBtb2RlLCBsaWtlIERFViBvciBQUk9ELgoKKiBgU0VOVFJZX0RTTmA6IEtleSBVUkwgKERTTikgb2YgU2VudHJ5LCBmb3IgbGl2ZSBlcnJvciByZXBvcnRpbmcuCgoqIGBBVVRIX1NFQ1JFVF9LRVlgOiBCYWNrZW5kIHNlcnZlciBzZWNyZXQga2V5LiBVc2UgdGhlIG1ldGhvZCBhYm92ZSB0byBnZW5lcmF0ZSBpdC4KCiogYEVNQUlMX1NFTkRfTU9ERWA6IFNlbmQgZW1haWxzIHZpYSBwb3N0IHNlcnZpY2UuIEJ5IGRlZmF1bHQgb2ZmIGFuZCBzaG93IG1lc3NhZ2UgY29udGV4dCBvbiBvdXRwdXQuCgoqIGBTRU5EX0dSSURfS0VZYDogS2V5IG9mIFNlbmRHcmlkLCBmb3Igc2VuZGluZyBlbWFpbHMuCgpPdGhlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgY291bGQgYmUgZm91bmQgaW4gYGVudi50ZW1wbGF0ZWAgb2YgYGJhY2tlbmRgIGRpcmVjdG9yeS4KCgojIyMgSG93IHRvIGRlcGxveQoKKiBDcmVhdGUgYC5lbnZgIGZpbGUgaW4gYGJhY2tlbmRgIGRpcmVjdG9yeSB3aXRoIHNldHRpbmdzIGZyb20gYC5lbnYudGVtcGxhdGVgLgoKKiBSdW4gY29tbWFuZCBgZG9ja2VyLWNvbXBvc2UgdXAgLS1idWlsZCAtZGAuCgoqIENoZWNrIFVSTCBgaHR0cDovLzEyNy4wLjAuMTo4MDAwYC4gQnkgZGVmYXVsdCBmb3Igc2VjdXJlIGRvY3MgdXNlIGNyZWRlbnRpYWxzOiBgYWRtaW46YWRtaW5gLgo= readmeEtag: '"6dd34f0197934fb88471aebc275fa0ede61ffcc6"' readmeLastModified: Thu, 18 Nov 2021 13:52:20 GMT repositoryId: 380564891 description: >- Backend application. Using FastAPI, PostgreSQL as database, Docker, SQLAlchemy and more. created: '2021-06-26T17:53:29Z' updated: '2025-04-13T11:51:10Z' language: HTML archived: false stars: 14 watchers: 1 forks: 5 owner: mkbeh logo: https://avatars.githubusercontent.com/u/26373902?v=4 license: MIT repoEtag: '"d7e2c90c7b5250d71f22d9eabe203d87610b916c8c194d9af0111d1c528f202f"' repoLastModified: Sun, 13 Apr 2025 11:51:10 GMT foundInMaster: true category: Server Implementations id: e236f6dafcb1ee24117db986ab0f4617 - source: openapi3 tags repository: https://github.com/bcgov/nr-arch-exploration v3: true id: 3f615b0e3b3fa8fcbfb93455f2b21739 repositoryMetadata: base64Readme: >- ClshW0NvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvY29udHJpYnV0b3JzL2JjZ292L2lpdC1hcmNoKV0oLy4uLy4uL2dyYXBocy9jb250cmlidXRvcnMpClshW0ZvcmtzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9mb3Jrcy9iY2dvdi9paXQtYXJjaCldKC8uLi8uLi9uZXR3b3JrL21lbWJlcnMpClshW1N0YXJnYXplcnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL2JjZ292L2lpdC1hcmNoKV0oLy4uLy4uL3N0YXJnYXplcnMpClshW0lzc3Vlc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvaXNzdWVzL2JjZ292L2lpdC1hcmNoKV0oLy4uLy4uL2lzc3VlcykKWyFbTUlUIExpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvYmNnb3YvaWl0LWFyY2guc3ZnKV0oL0xJQ0VOU0UubWQpCiFbTGlmZWN5Y2xlOkV4cGVyaW1lbnRhbF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWZlY3ljbGUtRXhwZXJpbWVudGFsLTMzOTk5OSkKIyBuci1hcmNoLWV4cGxvcmF0aW9uClRoaXMgY29kZSByZXBvIGNvbnRhaW5zIHZhcmlvdXMgZXhhbXBsZXMgZnJvbSBOUklEUyBBcmNoaXRlY3R1cmUgdGVhbQoxLiBBUElzCjIuIFVJcwozLiBNZXRhYmFzZSBEZXBsb3ltZW50IFNwZWNpZmljIHRvIExlZ2FjeSBPcmFjbGUgQ29ubmVjdGlvbiBvdmVyIGVuY3J5cHRlZCBsaXN0ZW5lcnMKClNjaGVtYXNweQpodHRwczovL2JjZ292LmdpdGh1Yi5pby9uci1hcmNoLWV4cGxvcmF0aW9uL3NjaGVtYXNweS9pbmRleC5odG1sCg== readmeEtag: '"51cae3045923ec4f524179bfc985e4147fcadce4"' readmeLastModified: Fri, 19 Jan 2024 00:33:14 GMT repositoryId: 467760840 description: >- This repo contains various examples on different APIs and UIs and Metabase deployment specific to Oracle connection created: '2022-03-09T03:17:27Z' updated: '2024-01-30T17:29:37Z' language: Shell archived: true stars: 13 watchers: 4 forks: 0 owner: bcgov logo: https://avatars.githubusercontent.com/u/916280?v=4 license: Apache-2.0 repoEtag: '"230106c995aa6972fe535330c3a6d1675780546c1a1f51a10ba55370ed97cbbf"' repoLastModified: Tue, 30 Jan 2024 17:29:37 GMT category: Documentation foundInMaster: true oldLocations: - https://github.com/bcgov/nr-arch-templates - source: openapi3 tags repository: https://github.com/tuwilof/tomograph v3: true id: d31c98262a36d04a86611f50ddbeb2b4 repositoryMetadata: base64Readme: >- IyBUb21vZ3JhcGggCgpDb252ZXJ0IEFQSSBCbHVlcHJpbnQsIFN3YWdnZXIgYW5kIE9wZW5BUEkgdG8gbWluaW1hbCByb3V0ZXMgd2l0aCBKU09OIFNjaGVtYS4gRm9yIGVhc2Ugb2YgdXNlIGFuZCBjcmVhdGlvbiBvZiBuZXcgdG9vbHMuCgpXaWxsIGxvb2sgbGlrZQoKICBgYGBqc29uCiAgWwogICAgewogICAgICAicGF0aCI6ICIvc2Vzc2lvbnMiLAogICAgICAibWV0aG9kIjogIlBPU1QiLAogICAgICAiY29udGVudC10eXBlIjogImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAicmVxdWVzdHMiOiBbewogICAgICAgICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICJsb2dpbiI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgICJwYXNzd29yZCI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgICJjYXB0Y2hhIjogewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgICAibG9naW4iLAogICAgICAgICAgInBhc3N3b3JkIgogICAgICAgIF0KICAgICAgfV0sCiAgICAgICJyZXNwb25zZXMiOiBbCiAgICAgICAgewogICAgICAgICAgInN0YXR1cyI6ICI0MDEiLAogICAgICAgICAgImNvbnRlbnQtdHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgICAgICJib2R5Ijoge30KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJzdGF0dXMiOiAiNDI5IiwKICAgICAgICAgICJjb250ZW50LXR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICAgICAiYm9keSI6IHt9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAic3RhdHVzIjogIjIwMSIsCiAgICAgICAgICAiY29udGVudC10eXBlIjogImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgImJvZHkiOiB7CiAgICAgICAgICAgICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyIsCiAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICJjb25maXJtYXRpb24iOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICAgICAgICJpZCI6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJ0eXBlIjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiI6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgICAgICAgICAgICJpZCIsCiAgICAgICAgICAgICAgICAgICJ0eXBlIiwKICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJjYXB0Y2hhIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgImNhcHRjaGFfZG9lc19ub3RfbWF0Y2giOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJib29sZWFuIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXQogICAgfQogIF0KICBgYGAKCiMjIEluc3RhbGxhdGlvbgoKVGhlbiBhZGQgdGhpcyBsaW5lIHRvIHlvdXIgYXBwbGljYXRpb24ncyBHZW1maWxlOgoKYGBgcnVieQpnZW0gJ3RvbW9ncmFwaCcKYGBgCgpBZnRlciB0aGF0IGV4ZWN1dGU6CgpgYGBiYXNoCiQgYnVuZGxlCmBgYAoKT3IgaW5zdGFsbCB0aGUgZ2VtIGJ5IHlvdXJzZWxmOgoKYGBgYmFzaAokIGdlbSBpbnN0YWxsIHRvbW9ncmFwaApgYGAKCiMjIFVzYWdlCgojIyMgSW4gY29kZQoKIyMjIyBPcGVuQVBJIDIuMAoKQWxzbyBTd2FnZ2VyCgpgYGBydWJ5CnJlcXVpcmUgJ3RvbW9ncmFwaCcKCnRvbW9ncmFtID0gVG9tb2dyYXBoOjpUb21vZ3JhbS5uZXcob3BlbmFwaTJfanNvbl9wYXRoOiAnL3BhdGgvdG8vZG9jLmpzb24nKQpgYGAKCiMjIyMgT3BlbkFQSSAzLjAKCkFsc28gT3BlbkFQSQoKYGBgcnVieQpyZXF1aXJlICd0b21vZ3JhcGgnCgp0b21vZ3JhbSA9IFRvbW9ncmFwaDo6VG9tb2dyYW0ubmV3KG9wZW5hcGkzX3lhbWxfcGF0aDogJy9wYXRoL3RvL2RvYy55YW1sJykKYGBgCgojIyMjIEFQSSBCbHVlcHJpbnQKCkZpcnN0IHlvdSBuZWVkIHRvIGluc3RhbGwgW2RyYWZ0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlhcnlpby9kcmFmdGVyKS4KV29ya3MgYWZ0ZXIgY29udmVyc2lvbiBmcm9tIEFQSSBCbHVlcHJpbnQgdG8gQVBJIEVsZW1lbnRzIChpbiBZQU1MIGZpbGUpIHdpdGggRHJhZnRlci4KClRoYXQgaXMsIEkgbWVhbiB0aGF0IHlvdSBmaXJzdCBuZWVkIHRvIGRvIHRoaXMKCmBgYGJhc2gKZHJhZnRlciBkb2MuYXBpYiAtbyBkb2MueWFtbApgYGAKCmFuZCB0aGVuCgpgYGBydWJ5CnJlcXVpcmUgJ3RvbW9ncmFwaCcKCnRvbW9ncmFtID0gVG9tb2dyYXBoOjpUb21vZ3JhbS5uZXcoZHJhZnRlcl95YW1sX3BhdGg6ICcvcGF0aC90by9kb2MueWFtbCcpCmBgYAoKIyMjIyBUb21vZ3JhcGgKClRvIHVzZSBhZGRpdGlvbmFsIGZlYXR1cmVzIG9mIHRoZSBwcmUtY29udmVydGVkCgpgYGBydWJ5CnJlcXVpcmUgJ3RvbW9ncmFwaCcKCnRvbW9ncmFtID0gVG9tb2dyYXBoOjpUb21vZ3JhbS5uZXcodG9tb2dyYW1fanNvbl9wYXRoOiAnL3BhdGgvdG8vZG9jLmpzb24nKQpgYGAKCiMjIyMgcHJlZml4CkRlZmF1bHQ6IGAnJ2AKCllvdSBjYW4gc3BlY2lmeSBBUEkgcHJlZml4IGFuZCBwYXRoIHRvIHRoZSBzcGVjIHVzaW5nIG9uZSBvZiB0aGUgcG9zc2libGUgZm9ybWF0czoKCmBgYHJ1YnkKVG9tb2dyYXBoOjpUb21vZ3JhbS5uZXcocHJlZml4OiAnL2FwaS92MicsIGRyYWZ0ZXJfeWFtbF9wYXRoOiAnL3BhdGgvdG8vZG9jLnlhbWwnKQpgYGAKCmBgYHJ1YnkKVG9tb2dyYXBoOjpUb21vZ3JhbS5uZXcocHJlZml4OiAnL2FwaS92MicsIHRvbW9ncmFtX2pzb25fcGF0aDogJy9wYXRoL3RvL2RvYy5qc29uJykKYGBgCgojIyMjIHRvX2pzb24KVXNlIGB0b19qc29uYCBmb3IgY29udmVydGluZyB0byBKU09OLCBleGFtcGxlIGZyb20gQVBJIEJsdWVwcmludDoKCmBgYHJ1YnkKdG9tb2dyYW0udG9fanNvbgpgYGAKCjxkZXRhaWxzPgogIDxzdW1tYXJ5PkV4YW1wbGUgaW5wdXQ8L3N1bW1hcnk+CgogIGBgYGFwaWIKICBGT1JNQVQ6IDFBCiAgSE9TVDogaHR0cDovL3Rlc3QubG9jYWwKICAKICAjIHByb2plY3QKICAKICAjIEdyb3VwIHByb2plY3QKICAKICBQcm9qZWN0CiAgCiAgIyMgQXV0aGVudGljYXRpb24gWy9zZXNzaW9uc10KICAKICAjIyMgU2lnbiBJbiBbUE9TVF0KICAKICArIFJlcXVlc3QgKGFwcGxpY2F0aW9uL2pzb24pCiAgCiAgICAgICsgQXR0cmlidXRlcwogICAgICAgKyBsb2dpbiAoc3RyaW5nLCByZXF1aXJlZCkKICAgICAgICsgcGFzc3dvcmQgKHN0cmluZywgcmVxdWlyZWQpCiAgICAgICArIGNhcHRjaGEgKHN0cmluZywgb3B0aW9uYWwpCiAgCiAgKyBSZXNwb25zZSA0MDEgKGFwcGxpY2F0aW9uL2pzb24pCiAgCiAgKyBSZXNwb25zZSA0MjkgKGFwcGxpY2F0aW9uL2pzb24pCiAgCiAgKyBSZXNwb25zZSAyMDEgKGFwcGxpY2F0aW9uL2pzb24pCiAgCiAgICAgICsgQXR0cmlidXRlcwogICAgICAgKyBjb25maXJtYXRpb24gKENvbmZpcm1hdGlvbiwgb3B0aW9uYWwpCiAgICAgICArIGNhcHRjaGEgKHN0cmluZywgb3B0aW9uYWwpCiAgICAgICArIGNhcHRjaGFfZG9lc19ub3RfbWF0Y2ggKGJvb2xlYW4sIG9wdGlvbmFsKQogIAogIAogICMgRGF0YSBTdHJ1Y3R1cmVzCiAgCiAgIyMgQ29uZmlybWF0aW9uIChvYmplY3QpCiAgICArIGlkIChzdHJpbmcsIHJlcXVpcmVkKQogICAgKyB0eXBlIChzdHJpbmcsIHJlcXVpcmVkKQogICAgKyBvcGVyYXRpb24gKHN0cmluZywgcmVxdWlyZWQpCiAgYGBgCjwvZGV0YWlscz4KCjxkZXRhaWxzPgogIDxzdW1tYXJ5PkV4YW1wbGUgb3V0cHV0PC9zdW1tYXJ5PgoKICBgYGBqc29uCiAgWwogICAgewogICAgICAicGF0aCI6ICIvc2Vzc2lvbnMiLAogICAgICAibWV0aG9kIjogIlBPU1QiLAogICAgICAiY29udGVudC10eXBlIjogImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAicmVxdWVzdHMiOiBbewogICAgICAgICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICJsb2dpbiI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgICJwYXNzd29yZCI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgICJjYXB0Y2hhIjogewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgICAibG9naW4iLAogICAgICAgICAgInBhc3N3b3JkIgogICAgICAgIF0KICAgICAgfV0sCiAgICAgICJyZXNwb25zZXMiOiBbCiAgICAgICAgewogICAgICAgICAgInN0YXR1cyI6ICI0MDEiLAogICAgICAgICAgImNvbnRlbnQtdHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgICAgICJib2R5Ijoge30KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJzdGF0dXMiOiAiNDI5IiwKICAgICAgICAgICJjb250ZW50LXR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICAgICAiYm9keSI6IHt9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAic3RhdHVzIjogIjIwMSIsCiAgICAgICAgICAiY29udGVudC10eXBlIjogImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgImJvZHkiOiB7CiAgICAgICAgICAgICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyIsCiAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICJjb25maXJtYXRpb24iOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICAgICAgICJpZCI6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJ0eXBlIjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiI6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgICAgICAgICAgICJpZCIsCiAgICAgICAgICAgICAgICAgICJ0eXBlIiwKICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJjYXB0Y2hhIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgImNhcHRjaGFfZG9lc19ub3RfbWF0Y2giOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJib29sZWFuIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXQogICAgfQogIF0KICBgYGAKPC9kZXRhaWxzPiAKCiMjIyMgdG9fYQpgYGBydWJ5CnRvbW9ncmFtLnRvX2EKYGBgCgojIyMjIGZpbmRfcmVxdWVzdApgYGBydWJ5CnJlcXVlc3QgPSB0b21vZ3JhbS5maW5kX3JlcXVlc3QobWV0aG9kOiAnR0VUJywgcGF0aDogJy9zdGF0dXMvMT9xd2U9cnR5JykKYGBgCgojIyMjIGZpbmRfcmVxdWVzdF93aXRoX2NvbnRlbnRfdHlwZQpgYGBydWJ5CnJlcXVlc3QgPSB0b21vZ3JhbS5maW5kX3JlcXVlc3Rfd2l0aF9jb250ZW50X3R5cGUobWV0aG9kOiAnR0VUJywgcGF0aDogJy9zdGF0dXMvMT9xd2U9cnR5JywgY29udGVudF90eXBlOiAnYXBwbGljYXRpb24vanNvbicpCmBgYAoKIyMjIyBgZmluZF9yZXNwb25zZXNgCmBgYHJ1YnkKcmVzcG9uc2VzID0gcmVxdWVzdC5maW5kX3Jlc3BvbnNlcyhzdGF0dXM6ICcyMDAnKQpgYGAKCiMjIyMgcHJlZml4X21hdGNoPwpUaGlzIG1heSBiZSB1c2VmdWwgaWYgeW91IHNwZWNpZnkgYSBwcmVmaXguCgpgYGBydWJ5CnRvbW9ncmFtLnByZWZpeF9tYXRjaD8oJ2h0dHA6Ly9sb2NhbC9hcGkvdjIvdXNlcnMnKQpgYGAKCiMjIyMgdG9fcmVzb3VyY2VzCk1hcHMgcmVzb3VyY2VzIGZvciBBUEkgQmx1ZXByaW50IHdpdGggcG9zc2libGUgcmVxdWVzdHMuCgpFeGFtcGxlIG91dHB1dDoKCmBgYHJ1YnkKewogICcvc2Vzc2lvbnMnID0+IFsnUE9TVCAvc2Vzc2lvbnMnXQp9CmBgYAoKIyMjIENvbW1hbmQgbGluZSB0b29sCgpDTEkgYWxsb3dzIHlvdSB0byBjb252ZXJ0IGZpbGVzIGZyb20gQVBJIEJsdWVwcmludCAoQVBJIEVsZW1lbnRzKSwgU3dhZ2dlciBhbmQgT3BlbkFQSSB0byBKU09OIFNjaGVtYS4KClJ1biBDTEkgd2l0aCBgLWhgIHRvIGdldCBkZXRhaWxlZCBoZWxwOgoKYGBgYmFzaAp0b21vZ3JhcGggLWgKYGBgCgpUbyBzcGVjaWZ5IHRoZSBoYW5kbGVyIHZlcnNpb24gdXNlIHRoZSBgLWRgIGZsYWc6CgojIyMjIE9wZW5BUEkgMi4wCmBgYGJhc2gKdG9tb2dyYXBoIC1kIG9wZW5hcGkyIG9wZW5hcGkyLmpzb24gdG9tb2dyYW0uanNvbgpgYGAKCiMjIyMgT3BlbkFQSSAzLjAKYGBgYmFzaAp0b21vZ3JhcGggLWQgb3BlbmFwaTMgb3BlbmFwaTMueWFtbCBkb2MuanNvbgpgYGAKCiMjIyMgQVBJIEJsdWVwcmludApgYGBiYXNoCnRvbW9ncmFwaCAtZCA0IGFwaWVsZW1ldG5zLnlhbWwgZG9jLmpzb24KYGBgCgojIyMjIGV4Y2x1ZGUtZGVzY3JpcHRpb24KCkV4Y2x1ZGUgImRlc2NyaXB0aW9uIiBrZXlzIGZyb20ganNvbi1zY2hlbWFzLgoKYGBgYmFzaAp0b21vZ3JhcGggLWQgNCBhcGllbGVtZXRucy55YW1sIGRvYy5qc29uIC0tZXhjbHVkZS1kZXNjcmlwdGlvbgpgYGAKCiMjIyMgc3BsaXQKClNwbGl0IG91dHB1dCBpbnRvIGZpbGVzIGJ5IG1ldGhvZC4gT3V0cHV0IGluIGRpciBwYXRoLgoKYGBgYmFzaAp0b21vZ3JhcGggLWQgNCAtLXNwbGl0IGFwaWVsZW1ldG5zLnlhbWwganNvbnMvCmBgYAoKIyMgTGljZW5zZQoKVGhlIGdlbSBpcyBhdmFpbGFibGUgYXMgb3BlbiBzb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBbTUlUIExpY2Vuc2VdKGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQpLgoKW1Nwb25zb3JlZCBieSBGdW5Cb3hdKGh0dHBzOi8vZnVuYm94LnJ1KQo= readmeEtag: '"1ce89b494851b667504536ff9080f94dd945f5bb"' readmeLastModified: Wed, 07 Aug 2024 20:54:22 GMT repositoryId: 81070217 description: >- Convert API Blueprint, Swagger and OpenAPI to JSON Schema and search through it created: '2017-02-06T09:27:24Z' updated: '2024-12-08T11:20:22Z' language: Ruby archived: false stars: 12 watchers: 4 forks: 6 owner: tuwilof logo: https://avatars.githubusercontent.com/u/5956924?v=4 license: MIT repoEtag: '"4459bd954b385607ad7ce411a12a8f5ca4fe627a9dfa4718208d8f47e1462c3b"' repoLastModified: Sun, 08 Dec 2024 11:20:22 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/prince-chrismc/user-management v3: true repositoryMetadata: base64Readme: >- IyBVc2VyIE1hbmFnZW1lbnQgWyFbRG9jc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9BUEklMjBEb2N1bWVudGF0aW9uLW1haW4tYmx1ZSldKGh0dHBzOi8vcHJpbmNlLWNocmlzbWMuZ2l0aHViLmlvL3VzZXItbWFuYWdlbWVudC8pCgpBbiBvcGVuLXNvdXJjZSBhcHBsaWNhdGlvbiBkZWxpdmVyaW5nIGEgcmVzcG9uc2l2ZSB1c2VyIG1hbmFnZW1lbnQgZXhwZXJpZW5jZS4KCjxwIGFsaWduPSJjZW50ZXIiPgogIDxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcHJpbmNlLWNocmlzbWMvdXNlci1tYW5hZ2VtZW50L21haW4vZG9jcy9TY3JlZW5jYXN0LTIwMjAtMDctMTgtMjMwNzU0LmdpZiI+CjwvcD4KCiMjIDptaWNyb3Njb3BlOiBUZWNobmljYWwgT3ZlcnZpZXcKClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyBhIGRpc3RyaWJ1dGVkIGNsb3VkIG5hdGl2ZSBhcHBsaWNhdGlvbiBjb21wcmlzZWQgb2YgdHdvIGNvbXBvbmVudHM6CgoqIFtGcm9udC1lbmRdKGZyb250ZW5kLykgLSBQcmltYXJ5IHBvaW50IG9mIGludGVyYWN0aW9uIHdpdGggdXNlcnMuIEl0IGlzIGEgW1JlYWN0XShodHRwczovL3JlYWN0anMub3JnLykgY2xpZW50IHNpZGUgYXBwbGljYXRpb24gYnVpbGQgdXNpbmcgW3dlYnBhY2tdKGh0dHBzOi8vd2VicGFjay5qcy5vcmcpIGZvciBfZmFzdF8gc3VyZmluZy4KKiBbQmFjay1lbmRdKGJhY2tlbmQvKSAtIENlbnRyYWxpemVkIGluLW1lbW9yeSBkYXRhIHN0b3JhZ2UgY29udGFpbmluZyB0aGUgaW5mb3JtYXRpb24gb2YgYWxsIGtub3duIHVzZXJzLiBXcml0dGVuIGluIFtDKytdKGh0dHBzOi8vaXNvY3BwLm9yZy8pIGZvciBmbGV4aWJpbGl0eSBhbmQgc2NhbGFiaWxpdHkgaXQgbGV2ZXJhZ2VzIG1hbnkgT3Blbi1Tb3VyY2UgdGVjaG5vbG9naWVzIFtsaXN0ZWQgaGVyZV0oYmFja2VuZC9jb25hbi5sb2NrKS4KCiMjIDpyb2NrZXQ6IENsb3VkIERlcGxveW1lbnRzCgo+IDppbmZvcm1hdGlvbl9zb3VyY2U6IFRoZSBnb2FsIGZvciB0aGlzIHByb2plY3QgaXMgdG8gc3BhbiBtdWx0aXBsZSBwdWJsaWMgOmNsb3VkOiBjbG91ZHMgYWxsIHRoZSB3aGlsZSBjb3N0aW5nIHRoZSBsZWFzdCBhbW91bnQgcG9zc2libGUKCjpub19lbnRyeV9zaWduOiBDdXJyZW50bHkgb2ZmbGluZSEKCiMjIDptYW5fc2NpZW50aXN0OiBEZXZlbG9wbWVudCBTdW1tYXJ5Cgp8IENvbXBvbmVudCB8IEJ1aWxkIHwgQ292ZXJhZ2UgfAp8IC0tLSB8IC0tLSB8IC0tLSB8CnwgQmFjay1lbmQgfCBbIVtDKysgQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9wcmluY2UtY2hyaXNtYy91c2VyLW1hbmFnZW1lbnQvd29ya2Zsb3dzL0MrKyUyMENJL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9wcmluY2UtY2hyaXNtYy91c2VyLW1hbmFnZW1lbnQvYWN0aW9ucz9xdWVyeT13b3JrZmxvdyUzQSUyMkMlMkIlMkIrQ0klMjIpfCBbIVtjb2RlY292XShodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRodWIvcHJpbmNlLWNocmlzbWMvdXNlci1tYW5hZ2VtZW50KV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3ByaW5jZS1jaHJpc21jL3VzZXItbWFuYWdlbWVudCkgfAp8IEZyb250LWVuZCB8IFshW05vZGUuanMgQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9wcmluY2UtY2hyaXNtYy91c2VyLW1hbmFnZW1lbnQvd29ya2Zsb3dzL05vZGUuanMlMjBDSS9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vcHJpbmNlLWNocmlzbWMvdXNlci1tYW5hZ2VtZW50L2FjdGlvbnM/cXVlcnk9d29ya2Zsb3clM0ElMjJOb2RlLmpzK0NJJTIyKSB8IFshW2NvZGVjb3ZdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY29kZWNvdi9jL2dpdGh1Yi9wcmluY2UtY2hyaXNtYy91c2VyLW1hbmFnZW1lbnQpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvcHJpbmNlLWNocmlzbWMvdXNlci1tYW5hZ2VtZW50KSB8Cg== readmeEtag: '"83f9102bdf5aa0ca38fbea1ecab79f6dd9118655"' readmeLastModified: Wed, 06 Sep 2023 18:52:51 GMT repositoryId: 245055601 description: >- An open-source application delivering a responsive user management experience. created: '2020-03-05T03:00:58Z' updated: '2025-03-30T06:54:47Z' language: C++ archived: false stars: 13 watchers: 2 forks: 1 owner: prince-chrismc logo: https://avatars.githubusercontent.com/u/16867443?v=4 license: MIT repoEtag: '"4579d60cde6fb6f58b753c4bc6698eb7d9560fb6616b4638e41128a93303ea6f"' repoLastModified: Sun, 30 Mar 2025 06:54:47 GMT foundInMaster: true category: Server id: becccc9cc767bca2f946cf466bd59707 - source: openapi3 tags repository: https://github.com/networknt/openapi-bundler v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWJ1bmRsZXIKQSB1dGlsaXR5IHRoYXQgbWVyZ2VzIG11bHRpcGxlIE9wZW5BUEkgZmlsZXMgaW50byBhIHNpbmdsZSBmaWxlIHdpdGggYWxsIGV4dGVybmFsCnJlZmVyZW5jZXMgcmVzb2x2ZWQgdG8gbG9jYWwgY29tcG9uZW50IHJlZmVyZW5jZXMuCgojIyBXaHkgdGhpcyBPcGVuQVBJIEJ1bmRsZXIKCk9wZW5BUEkgaXMgYmVjb21pbmcgdGhlIGRlLWZhY3RvIFJFU1QgQVBJIHNwZWNpZmljYXRpb24sIGFuZCBhIGxvdCBwZW9wbGUgaGF2ZSBhZG9wdGVkIGl0CnRvIHdyaXRlIHRoZWlyIFJFU1RmdWwgQVBJIHNwZWMuCgpGb3Igc21hbGwgQVBJcywgaXQgaXMgYWNjZXB0YWJsZSB0byBoYXZlIGEgc2luZ2xlIE9wZW5BUEkgZGVmaW5pdGlvbiBmaWxlLCBob3dldmVyIGZvciBhIGxhcmdlIHNjYWxlIEFQSQpwcm9qZWN0LCBpdCBpcyBoYXJkIHRvIG1hbmFnZSBtdWx0aXBsZSBBUEkgc3BlY2lmaWNhdGlvbnMgdG9nZXRoZXIuCgpGb3IgYW4gb3JnYW5pemF0aW9uIHdpdGggdG9vCm1hbnkgQVBJcywgaXQgaXMgdmVyeSBuYXR1cmFsIHRvIGRlZmluZSBzaGFyYWJsZSBvYmplY3QgZGVmaW5pdGlvbnMgaW4gc2VwYXJhdGUgZmlsZXMKaW4gb3JkZXIgdG8gYXZvaWQgZHVwbGljYXRpb25zIGFuZCBmb3N0ZXIgY29uc2lzdGVuY3kgYWNyb3NzIGFuIG9yZ2FuaXphdGlvbi4gV2l0aCBtdWx0aXBsZSBmaWxlcyBpbnRlci1jb25uZWN0ZWQgdG9nZXRoZXIgdG8gZm9ybQpvbmUgQVBJIHNwZWNpZmljYXRpb24sIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGFuZCBleHRlcm5hbCByZWZlcmVuY2VzIGFyZSB0b28gY29tcGxpY2F0ZWQKdG8gbWFuYWdlLgoKTHVja2lseSwgdGhlcmUgYXJlIGEgbG90IG9mIHRvb2xzIGxpa2UgZWRpdG9ycywgcGFyc2VycyBhbmQgYnVuZGxlcnMgaW4gdGhlIG1hcmtldCB0aGF0CnN1cHBvcnQgbXVsdGlwbGUgZmlsZXMuIFRoZXNlIHRvb2xzIGNhbiBidW5kbGUgbXVsdGlwbGUgWUFNTCBmaWxlcyB0b2dldGhlciB0byBjcmVhdGUKYSBmaW5hbCB2ZXJzaW9uIGluIEpTT04gb3IgWUFNTCBmb3JtYXQgYW5kIGRlLXJlZmVyZW5jZSBleHRlcm5hbCBkZXBlbmRlbmNpZXMuCgpBcyBvdXIgbGlnaHQtcmVzdC00aiBmcmFtZXdvcmsgZW5jb3VyYWdlcyBhIGNvbnRyYWN0IGRyaXZlbiBkZXNpZ24gYXBwcm9hY2gsIHRoZSBzcGVjaWZpY2F0aW9uCnNob3VsZCBiZSBjcmVhdGVkIGJlZm9yZSBjb2Rpbmcgc3RhcnRzLiBBY3R1YWxseSwgaWYgdGhlIHNwZWMgaXMgcmVhZHksIHlvdSBjYW4gdXNlCltsaWdodC1jb2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vbmV0d29ya250L2xpZ2h0LWNvZGVnZW4pIHRvIGdlbmVyYXRlIHRoZSBwcm9qZWN0LgoKVGhlIGdlbmVyYXRvciBmb3IgW2xpZ2h0LXJlc3QtNGpdKGh0dHBzOi8vZ2l0aHViLmNvbS9uZXR3b3JrbnQvbGlnaHQtcmVzdC00aikKZ2VuZXJhdGVzIGFsc28gdGhlIG9iamVjdCBtb2RlbCAoUE9KTykgZnJvbSB0aGUgb3BlbmFwaS5qc29uIHdoZXJlIG9iamVjdHMgYXJlIGRlZmluZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uIEluCmFkZGl0aW9uLCBsaWdodC1yZXN0LTRqIHJlcXVpcmVzIHRoZSBmaW5hbCB2ZXJzaW9uIG9mIHRoZSBvcGVuYXBpLmpzb24gdG8gYmUgaW5jbHVkZWQKaW50byB0aGUgc2VydmljZSBjb2RlIHRvIGRvIHJ1bnRpbWUgc2NoZW1hIHZhbGlkYXRpb24gYXMgd2VsbCBhcyBPQXV0aCAyLjAgc2NvcGUKdmVyaWZpY2F0aW9uIGF0IHJ1bnRpbWUuCgpUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIGZpbmFsIHZlcnNpb24gb2Ygb3BlbmFwaS5qc29uIGlzIHNlbGYtY29udGFpbmVkIGFuZCBhbGwgbW9kZWxzCnNob3VsZCBiZSBkZWZpbmVkIGluIHRoZSBjb21wb25lbnRzIHNlY3Rpb24gaW5zdGVhZCBvZiBiZWluZyBkZS1yZWZlcmVuY2VkIGlubGluZS4KCkV4aXN0aW5nIGJ1bmRsZXJzIHN1Y2ggYXMgW3N3YWdnZXItY2xpXShodHRwczovL2dpdGh1Yi5jb20vQmlnc3RpY2tDYXJwZXQvc3dhZ2dlci1jbGkpCmNhbm5vdCBoYW5kbGUgb3VyIHNwZWNpZmljYXRpb24gZmlsZXMgY29ycmVjdGx5LCB0aGVyZWZvcmUgdGhlIG5lZWQgYXJpc2VzIHRvIGNyZWF0ZSBhIGdlbmVyYWxseSByZS11c2FibGUgYnVuZGxlciBmb3IgT3BlbkFQSSBkZWZpbml0aW9ucy4KClRoZSB0b29sIHZhbGlkYXRlcyBidW5kbGVkIEFQSSBzcGVjaWZpY2F0aW9ucyBhbmQgb2ZmZXJzIGFsc28gaW5kZXBlbmRlbnQgdmFsaWRhdGlvbiBmdW5jdGlvbmFsaXR5LgoKIyMgRmVhdHVyZXMKCiMjIyBSZW1vdGUgUmVmZXJlbmNlCgpUaGlzIGJ1bmRsZXIgY2FuIHJlc29sdmUgYWxsIHJlbW90ZSByZWZlcmVuY2VzIGluIG9wZW5hcGkueWFtbCB3aGljaCBpcyB0aGUgbWFpbiBmaWxlCnRvIGJlIHByb2Nlc3NlZC4gSWYgdGhlIHJlZmVyZW5jZSBpcyBhbiBvYmplY3QsIGl0IHdpbGwgcmVzb2x2ZSBpdHMgaW50ZXJuYWwgcmVmZXJlbmNlcwpmaXJzdCBhbmQgdGhlbiBtb3ZlIGl0IGludG8gY29tcG9uZW50cyBpbiB0aGUgZ2VuZXJhdGVkIG9wZW5hcGkuanNvbi4gQXQgdGhlIHNhbWUgdGltZQp0aGUgZXh0ZXJuYWwgcmVmZXJlbmNlIGluIG9wZW5hcGkueWFtbCB3aWxsIGJlIGNoYW5nZWQgdG8gbG9jYWwgcmVmZXJlbmNlIHdpdGggIy9jb21wb25lbnRzL3trZXl9CgpJZiB0aGUgcmVtb3RlIHJlZmVyZW5jZSBpcyBub3QgYW4gb2JqZWN0LCBpdCB3aWxsIGJlIHJlc29sdmVkIGlubGluZSBpbiB0aGUgZ2VuZXJhdGVkCm9wZW5hcGkuanNvbiBmaWxlLgoKSWYgeW91IGhhdmUgc2VwYXJhdGUgcmVmZXJlbmNlIGZpbGVzLCB5b3UgbXVzdCBwbGFjZSB0aGVzZSBmaWxlcyBpbnRvIHRoZSBzYW1lIGZvbGRlciB5b3VyIG9wZW5hcGkueWFtbCwgb3IgcmVsYXRpdmUgdG8gdGhhdCBmb2xkZXIuIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBjb21tb24KZm9sZGVyIHRoYXQgY29udGFpbnMgYWxsIHRoZSBjb21tb24gT3BlbkFQSSBmaWxlcywgeW91IG1pZ2h0IG5lZWQgdG8gY29weSB0aGUgY29tbW9uCmZvbGRlciBpbnRvIHlvdXIgZm9sZGVyIHRoYXQgY29udGFpbnMgb3BlbmFwaS55YW1sIGZvciB5b3VyIEFQSS4KCiMjIyBMb2NhbCBSZWZlcmVuY2UKCklmIHRoZSByZWZlcmVuY2UgaXMgYW4gb2JqZWN0IGluIGNvbXBvbmVudHMsIGl0IHdpbGwgcmVzb2x2ZSBhbGwgdGhlIHJlbW90ZSByZWZlcmVuY2VzCmluIGRlZmluaXRpb25zLgoKSWYgdGhlIHJlZmVyZW5jZSBpcyBub3QgYW4gb2JqZWN0LCBhbiBlcnJvciB3aWxsIG9jY3VyIGFuZCB0aGUgcHJvY2VzcyB3aWxsIGV4aXQuCgojIyBVc2FnZQoKVGhlIGJ1bmRsZXIgYXNzdW1lcyB0aGF0IHRoZSBpbnB1dCBmaWxlIGlzIG9wZW5hcGkueWFtbCBhbmQgYWxsIHRoZSByZW1vdGUgcmVmZXJlbmNlIGZpbGVzCmFyZSBpbiB0aGUgcmlnaHQgcGF0aC4KCiMjIyBVc2UgaXQgYXMgSmF2YSB1dGlsaXR5CgpgYGAKamF2YSAtamFyIHRhcmdldC9vcGVuYXBpLWJ1bmRsZXIuamFyIDxvcGVyYXRpb24+IDxhcmd1bWVudHMuLi4uPgoKT3BlcmF0aW9ucyBhcmU6CiAgYnVuZGxlCiAgdmFsaWRhdGUKCkFyZ3VtZW50cyBhcmU6CiAgLS1kaXIsIC1kIDogVGhlIGlucHV0IGRpcmVjdG9yeSB3aGVyZSB0aGUgWUFNTCBmaWxlcyBjYW4gYmUgZm91bmQgZm9yIGJ1bmRsaW5nIHwgdmFsaWRhdGlvbi4gTWFuZGF0b3J5IHBhcmFtZXRlcgogIC0tZmlsZSwgLWYgOiBUaGUgbmFtZSBvZiB0aGUgWUFNTCBmaWxlIHRvIGJlIGJ1bmRsZWQgb3IgdmFsaWRhdGVkLiBEZWZhdWx0OiBvcGVuYXBpLnlhbWwKCiAgLS1vdXRwdXRGaWxlLCAtb2Y6IFRoZSBuYW1lIG9mIHRoZSBidW5kbGVkIGFuZCB2YWxpZGF0ZWQgT3BlbkFQSSBmaWxlLiBEZWZhdWx0OiBvcGVuYXBpLmJ1bmRsZWQKICAtLW91dHB1dERpciwgLW9kIDogVGhlIG91dHB1dCBkaXJlY3Rvcnkgb2YgdGhlIGJ1bmRsZWQgYW5kIHZhbGlkYXRlZCBmaWxlLiBEZWZhdWx0OiBzYW1lIGFzIGlucHV0IGRpcmVjdG9yeSBzcGVjaWZpZWQgaW4gPGRpcj4KICAtLW91dHB1dEZvcm1hdCwgLW8gOiBUVGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBidW5kbGVkIGZpbGU6IFlBTUwgfCBKU09OIHwgYm90aC4gRGVmYXVsdDogWUFNTAoKICAtZGVidWcgOiB0byB2aWV3IGRlYnVnIG91dHB1dAoKIyBHZW5lcmFsIHVzYWdlOgogIEJ1bmRsZTogCiAgICBqYXZhIC1qYXIgb3BlbmFwaS1idW5kbGVyLmphciBidW5kbGUgLWQgPG15Rm9sZGVyPiAtZiA8aW5wdXQgZmlsZT4gLW8gPGpzb258eWFtbHxib3RoPiAtb2YgPG91dHB1dCBmaWxlIG5hbWU+IC1vZCA8b3V0cHV0IGZvbGRlcj4KCiAgVmFsaWRhdGU6CiAgICBqYXZhIC1qYXIgb3BlbmFwaS1idW5kbGVyLmphciBidW5kbGUgLWQgPG15Rm9sZGVyPiAtZiA8aW5wdXQgZmlsZT4KCiMgVG8gdmlldyBkZWJ1ZyBtZXNzYWdlcyBkdXJpbmcgdGhlIGJ1bmRsaW5nIG9yIHZhbGRpYXRpb24gcHJvY2VzcywgdXNlIHRoZSB1dGlsaXR5IHdpdGggLWRlYnVnCiAgamF2YSAtZGVidWcgLWphciBvcGVuYXBpLWJ1bmRsZXIuamFyIGJ1bmRsZSAtZCA8bXlGb2xkZXI+IC1mIDxpbnB1dCBmaWxlPiAtbyA8anNvbnx5YW1sfGJvdGg+IAoKIyBUbyB2aWV3IGRlYnVnIG1lc3NhZ2VzIGR1cmluZyB0aGUgYnVuZGxpbmcgb3IgdmFsZGlhdGlvbiBwcm9jZXNzLCB1c2UgdGhlIHV0aWxpdHkgd2l0aCAtZGVidWcKICBqYXZhIC1kZWJ1ZyAtamFyIG9wZW5hcGktYnVuZGxlci5qYXIgdmFsaWRhdGUgLWQgPG15Rm9sZGVyPiAtZiA8aW5wdXQgZmlsZT4gCgojIFNpbXBsaWZpZWQgYnVuZGxlciBjYWxsLCB3aXRoIGRlZmF1bHQgdmFsdWVzLCB1c2VzIG9wZW5hcGkueWFtbCBhcyBpbnB1dCBhbmQganNvbiBhcyBvdXRwdXQgZm9ybWF0CmphdmEgLWphciBvcGVuYXBpLWJ1bmRsZXIuamFyICBidW5kbGUgLWQgPG15Rm9sZGVyPgoKCmBgYAoKVG8gdmlldyB1c2FnZSBoZWxwIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKYGBgCkNvbW1hbmQ6CmphdmEgLWphciBvcGVuYXBpLWJ1bmRsZXIuamFyICAtaAoKVXNhZ2U6IFtvcHRpb25zXSBvcGVyYXRpb246IFRoZSBvcGVyYXRpb24gdG8gYmUgcGVyZm9ybWVkLiAKICAgICAgIFN1cHBvcnRlZCBvcGVyYXRpb25zOiBidW5kbGUgfHZhbGlkYXRlLiBNdXN0IGJlIHNwZWNpZmllZAoKICBPcHRpb25zOgogICAgLS1kaXIsIC1kCiAgICAgIFRoZSBpbnB1dCBkaXJlY3Rvcnkgd2hlcmUgdGhlIFlBTUwgZmlsZXMgY2FuIGJlIGZvdW5kLiBNdXN0IGJlIHNwZWNpZmllZAogICAgLS1maWxlLCAtZgogICAgICBUaGUgbmFtZSBvZiB0aGUgWUFNTCBmaWxlIHRvIGJlIGJ1bmRsZWQuIERlZmF1bHQgPSBvcGVuYXBpLnlhbWwKICAgIC0tb3V0cHV0LCAtbwogICAgICBUaGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGJ1bmRsZWQgZmlsZTogeWFtbCB8IGpzb24gfCBib3RoLiBEZWZhdWx0ID0ganNvbgogICAgICBEZWZhdWx0OiBqc29uCiAgICAtLWhlbHAsIC1oICAgICAgCiAgICAtZGVidWcKICAgICAgRGVidWcgbW9kZQogICAgICBEZWZhdWx0OiBmYWxzZQpgYGAKIyMjIFNhbXBsZSBmaWxlcwpvcGVuYXBpLnlhbWwKYGBgCm9wZW5hcGk6IDMuMC4wCgpwYXRoczogCiAgL3Rlc3Q6CiAgICBnZXQ6CiAgICAgIG9wZXJhdGlvbklkOiB0ZXN0CiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAgICAgICAkcmVmOiAnY29tbW9uLnlhbWwjL015T2JqJwpgYGAKCmNvbW1vbi55YW1sCmBgYApNeU9iajoKICB0eXBlOiBvYmplY3QKICBwcm9wZXJ0aWVzOgogICAgdGVzdENvZGU6CiAgICAgIHR5cGU6IHN0cmluZwogICAgICByZWFkT25seTogdHJ1ZQogICAgbmFtZToKICAgICAgdHlwZTogc3RyaW5nCiAgICAgIHJlYWRPbmx5OiB0cnVlCmBgYAojIyMgVXNlIGl0IGluIGFuIElERQoKQW5vdGhlciB3YXkgdG8gcnVuIHRoZSBidW5kbGVyIGlzIGZyb20gYW4gSURFLiBKdXN0IHNldCB0aGUgZm9sZGVyIG9mIHRoZSBvcGVuYXBpLnlhbWwgZmlsZSBhcyBhIHByb2dyYW0gYXJndW1lbnQgYW5kIHlvdSBjYW4gZWFzaWx5IGRlYnVnIGludG8gaXQuCgojIyMgVXNlIERvY2tlcgoKVGhlcmUgaXMgYSBEb2NrZXIgW2ltYWdlXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvbmV0d29ya250L29wZW5hcGktYnVuZGxlci8pIHRoYXQgaXMKcHVibGlzaGVkIHRvIERvY2tlciBIdWIuCgpIZXJlIGlzIHRoZSBjb21tYW5kIGxpbmUgdG8gY2FsbCBpdC4KCmBgYApUQkQKYGBgCgoKV2l0aCBhYm92ZSBjb21tYW5kIGxpbmUsIHlvdSBjYW4gZWFzaWx5IGJ1aWxkIGEgc2NyaXB0IHRvIGNhbGwgaXQgYXMgcGFydCBvZiB5b3VyIERldk9wcwpmbG93Lgo= readmeEtag: '"61f411de5c7e566d9c7922477d174ecb6a947bea"' readmeLastModified: Thu, 13 Jun 2024 13:02:01 GMT repositoryId: 153839607 description: >- A utility that merges multiple OpenAPI specification files into a single file with all external references resolved to local reference. created: '2018-10-19T20:42:58Z' updated: '2026-01-29T19:33:38Z' language: Java archived: false stars: 13 watchers: 17 forks: 6 owner: networknt logo: https://avatars.githubusercontent.com/u/8740739?v=4 license: Apache-2.0 repoEtag: '"b5f4853a94b93b0bb6a0757d5a1fc4f596ea3afab6598624314cfce7525413ce"' repoLastModified: Thu, 29 Jan 2026 19:33:38 GMT foundInMaster: true category: Parsers id: 9e7d370d54bfa85bddd37c511827340b - source: openapi3 tags repository: https://github.com/namsor/namsor-r-sdk2 v3: true repositoryMetadata: base64Readme: >- IyBSIEFQSSBjbGllbnQgZm9yIG5hbXNvcgoKTk9URSA6IHRoaXMgU0RLIHdpbGwgc3RpbGwgd29yayBidXQgaXMgbm8gbG9uZ2VyIG1haW50YWluZWQuIFBsZWFzZSBjaGVjayBvbmUgb2YgdGhlIGFsdGVybmF0aXZlIFNES3MgOiBKYXZhLCBQeXRob24gb3IgR29sYW5nLgoKTmFtU29yIEFQSSB2MiA6IGVucG9pbnRzIHRvIHByb2Nlc3MgcGVyc29uYWwgbmFtZXMgKGdlbmRlciwgY3VsdHVyYWwgb3JpZ2luIG9yIGV0aG5pY2l0eSkgaW4gYWxsIGFscGhhYmV0cyBvciBsYW5ndWFnZXMuIFVzZSBHRVQgbWV0aG9kcyBmb3Igc21hbGwgdGVzdHMsIGJ1dCBwcmVmZXIgUE9TVCBtZXRob2RzIGZvciBoaWdoZXIgdGhyb3VnaHB1dCAoYmF0Y2ggcHJvY2Vzc2luZyBvZiB1cCB0byAxMDAgbmFtZXMgYXQgYSB0aW1lKS4gTmVlZCBzb21ldGhpbmcgeW91IGNhbid0IGZpbmQgaGVyZT8gV2UgaGF2ZSBtYW55IG1vcmUgZmVhdHVyZXMgY29taW5nIHNvb24uIExldCB1cyBrbm93LCB3ZSdsbCBkbyBvdXIgYmVzdCB0byBhZGQgaXQhIAoKIyMgT3ZlcnZpZXcKVGhpcyBBUEkgY2xpZW50IHdhcyBnZW5lcmF0ZWQgYnkgdGhlIFtPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKSBwcm9qZWN0LiBCeSB1c2luZyB0aGUgW09wZW5BUEkgc3BlY10oaHR0cHM6Ly9vcGVuYXBpcy5vcmcpIGZyb20gYSByZW1vdGUgc2VydmVyLCB5b3UgY2FuIGVhc2lseSBnZW5lcmF0ZSBhbiBBUEkgY2xpZW50LgoKLSBBUEkgdmVyc2lvbjogMi4wLjEwCi0gUGFja2FnZSB2ZXJzaW9uOiAyLjEuMAotIEJ1aWxkIHBhY2thZ2U6IG9yZy5vcGVuYXBpdG9vbHMuY29kZWdlbi5sYW5ndWFnZXMuUkNsaWVudENvZGVnZW4KRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSB2aXNpdCBbaHR0cDovL3d3dy5uYW1zb3IuY29tL10oaHR0cDovL3d3dy5uYW1zb3IuY29tLykKCiMjIEluc3RhbGxhdGlvbgoKIyMjIFByZXJlcXVpc2l0ZXMKCkluc3RhbGwgdGhlIGRlcGVuZGVuY2llcwoKYGBgUgppbnN0YWxsLnBhY2thZ2VzKCJqc29ubGl0ZSIpCmluc3RhbGwucGFja2FnZXMoImh0dHIiKQppbnN0YWxsLnBhY2thZ2VzKCJiYXNlNjRlbmMiKQpgYGAKCiMjIyBCdWlsZCB0aGUgcGFja2FnZQoKYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9uYW1zb3IvbmFtc29yLXItc2RrMgpjZCBuYW1zb3Itci1zZGsyClIgQ01EIGJ1aWxkIC4KUiBDTUQgY2hlY2sgbmFtc29yXzIuMS4wLnRhci5negpSIENNRCBJTlNUQUxMIG5hbXNvcl8yLjEuMC50YXIuZ3oKYGBgCgojIyMgSW5zdGFsbCB0aGUgcGFja2FnZQoKYGBgUgppbnN0YWxsLnBhY2thZ2VzKCJuYW1zb3IiKQpgYGAKClRvIGluc3RhbGwgZGlyZWN0bHkgZnJvbSBHaXRodWIsIHVzZSBgZGV2dG9vbHNgOgpgYGBSCmluc3RhbGwucGFja2FnZXMoImRldnRvb2xzIikKbGlicmFyeShkZXZ0b29scykKaW5zdGFsbF9naXRodWIoIm5hbXNvci9uYW1zb3Itci1zZGsyIikKYGBgCgojIyMgVXNhZ2UKYGBgUgpsaWJyYXJ5KG5hbXNvcikKCnZhci5maXJzdC5uYW1lIDwtICdKb2huJyAjIGNoYXJhY3RlciB8IAp2YXIubGFzdC5uYW1lIDwtICdTbWl0aCcgIyBjaGFyYWN0ZXIgfCAKdmFyLmNvdW50cnkuaXNvMiA8LSAnVVMnICMgY2hhcmFjdGVyIHwgCgojSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBuYW1lLCBnaXZlbiBhIGxvY2FsIGNvbnRleHQgKElTTzIgY291bnRyeSBjb2RlKS4KYXBpLmluc3RhbmNlIDwtIFBlcnNvbmFsQXBpJG5ldygpCiMgQ29uZmlndXJlIEFQSSBrZXkgYXV0aG9yaXphdGlvbjogYXBpX2tleSAKYXBpLmluc3RhbmNlJGFwaUNsaWVudCRhcGlLZXlzWydYLUFQSS1LRVknXSA8LSAnODNhZDI4ZTNiM2Y5MmRlMTQ5NDE4MTYyNDg2NGJlYzYnOwpyZXN1bHQgPC0gYXBpLmluc3RhbmNlJEdlbmRlckdlbyh2YXIuZmlyc3QubmFtZSwgdmFyLmxhc3QubmFtZSwgdmFyLmNvdW50cnkuaXNvMikKZHB1dChyZXN1bHQpCnByaW50KHJlc3VsdCkKYGBgCgojIyMgVXNhZ2UgdG8gcHJvY2VzcyBhIENTViBmaWxlCmBgYFIKCiNwcmVwYXJlIHdvcmtzcGFjZQppZighJ2RldnRvb2xzJyAlaW4lIGluc3RhbGxlZC5wYWNrYWdlcygpKXsKICBpbnN0YWxsLnBhY2thZ2VzKGRldnRvb2xzKQp9CgppZighJ3JlYWRyJyAlaW4lIGluc3RhbGxlZC5wYWNrYWdlcygpKXsKICBpbnN0YWxsLnBhY2thZ2VzKCJyZWFkciIpCn0KCmlmKCEnbmFtc29yJyAlaW4lIGluc3RhbGxlZC5wYWNrYWdlcygpKXsKICBpbnN0YWxsX2dpdGh1YigibmFtc29yL25hbXNvci1yLXNkazIiKQp9CgojY2FsbCBwYWNrYWdlcwpsaWJyYXJ5KGRldnRvb2xzKQpsaWJyYXJ5KG5hbXNvcikKbGlicmFyeShyZWFkcikKCiNjYWxsIGFwaQpodHRyOjpzZXRfY29uZmlnKGh0dHI6OmNvbmZpZyhzc2xfdmVyaWZ5cGVlciA9IDBMKSkKYXBpLmluc3RhbmNlIDwtIFBlcnNvbmFsQXBpJG5ldygpCmFwaS5pbnN0YW5jZSRhcGlDbGllbnQkYXBpS2V5c1snWC1BUEktS0VZJ10gPC0gJzgzYWQyOGUzYjNmOTJkZTE0OTQxODE2MjQ4NjRiZWM2JzsKCiNjYWxsIGZ1bmN0aW9uCmV4dHJhY3RvciA8LSBmdW5jdGlvbihuYW1lcyl7CiAgCiMjIyBGdW5jdGlvbiBjYWxscyBhcGkgdG8gYXNzaWduIGdlbmRlciBieSBhdHRyaWJ1dGVzICMjIwogIAogICNJbnB1dDoKICAKICAjbmFtZXMgLSBkYXRhLmZyYW1lIHdpdGggNCBjb2x1bW5zOgogICMgMS4gaWQoY2hhcikKICAjIDIuZmlyc3QgbmFtZShjaGFyKQogICMgMy4gc2Vjb25kIG5hbWUoY2hhcikKICAjIDQuIGNvdW50cnkoY2hhcikKICAKICAKICAjT3V0cHV0OgogICNuYW1lcyAtIGRhdGEuZnJhbWUgd2l0aCA1IGNvbHVtbnM6CiAgIyAxLiBpZChjaGFyKQogICMgMi5maXJzdCBuYW1lKGNoYXIpCiAgIyAzLiBzZWNvbmQgbmFtZShjaGFyKQogICMgNC4gY291bnRyeShjaGFyKQogICMgNS4gZ2VuZGVyKGNoYXIpCiAgCgoKIyMgU1BMSVQgVE8gTElTVApuYW1lc19saXN0IDwtIHNwbGl0KG5hbWVzLCAKICAgICAgICAgICAgICAgICAgICBmYWN0b3IocmVwKHNlcShjZWlsaW5nKG5yb3cobmFtZXMpLzEwMCkpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2ggPSAxMDApWzE6bnJvdyhuYW1lcyldKSkKCiMjIEFERCBJRApuYW1lc19saXN0IDwtIGxhcHBseShuYW1lc19saXN0LCBmdW5jdGlvbih4KXsKICBkYXRhLmZyYW1lKCduZXdfaWQnID0gc2VxKG5yb3coeCkpLCAKICAgICAgICAgICAgICdpZCcgPSB4WywgMV0sCiAgICAgICAgICAgICAnZmlyc3RfbmFtZScgPSB4WywgMl0sIAogICAgICAgICAgICAgJ2xhc3RfbmFtZScgPSB4WywgM10sIAogICAgICAgICAgICAgJ2NvdW50cnknID0geFssIDRdKQp9KQoKI2NyZWF0ZSByX2dlbmRlcgpyX2dlbmRlciA8LSBsYXBwbHkobmFtZXNfbGlzdCwgZnVuY3Rpb24oeCl7CiAgYXBwbHkoeCwgMSwgZnVuY3Rpb24oeSl7UGVyc29uYWxOYW1lR2VvSW4kbmV3KGFzLmNoYXJhY3Rlcih5WzFdKSx5WzNdLCB5WzRdKX0pCn0pCiNjb21iaW5lCnJfZ2VuZGVyIDwtIGxhcHBseShyX2dlbmRlciwgZnVuY3Rpb24oeCl7Yyh4KX0pCiNjcmVhdGUgdmFyIGdlbmRlcgp2YXJfZ2VuZGVyIDwtIGxhcHBseShyX2dlbmRlciwgZnVuY3Rpb24oeCl7CiAgQmF0Y2hQZXJzb25hbE5hbWVHZW9JbiRuZXcocGVyc29uYWxOYW1lcyA9IHgpfSkKI2NhbGwgYXBpCmFwaS5pbnN0YW5jZSA8LSBQZXJzb25hbEFwaSRuZXcoKQphcGkuaW5zdGFuY2UkYXBpQ2xpZW50JGFwaUtleXNbJ1gtQVBJLUtFWSddIDwtICc4M2FkMjhlM2IzZjkyZGUxNDk0MTgxNjI0ODY0YmVjNic7CiNnZXQgcmVzdWx0CnJlc3VsdF9nZW5kZXIgPC0gbGFwcGx5KHZhcl9nZW5kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHgpewogICAgICAgICAgICAgICAgICAgICAgICAgIGFwaS5pbnN0YW5jZSRHZW5kZXJGdWxsR2VvQmF0Y2goCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaC5wZXJzb25hbC5uYW1lLmdlby5pbj14KX0pCiNleHRyYWN0IGdlbmRlcgpnZW5kZXIgPC0gbGFwcGx5KHJlc3VsdF9nZW5kZXIsIGZ1bmN0aW9uKHgpe2xhcHBseSh4JHBlcnNvbmFsTmFtZXMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih5KXt5JGxpa2VseUdlbmRlcn0pfSkKICAKI2FkZCBnZW5kZXIKbmFtZXMkZ2VuZGVyIDwtIHVubGlzdChnZW5kZXIpCgojcmV0dXJuCnJldHVybihuYW1lcykKfQoKI2xvYWQgc21hbGwgZGF0YQpkZjEgPC0gcmVhZC5jc3YoJ2V4YW1wbGUyX2Nzdi5jc3YnLCBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCgojY29udmVydCB0byBjaGFyCmRmMVssIDFdIDwtIHNhcHBseShkZjFbLCAxXSwgYXMuY2hhcmFjdGVyKQoKI2NhbGwgZnVuY3Rpb24KZGYxX3dpdGhfbmFtZXMgPC0gZXh0cmFjdG9yKGRmMSkKCiNsb2FkIGJpZyBkYXRhCmRmMiA8LSBkYXRhLmZyYW1lKHJlYWRfZGVsaW0oImV4YW1wbGUxX3BpcGVfaW5wdXQudHh0IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInwiLCBlc2NhcGVfZG91YmxlID0gRkFMU0UsIHRyaW1fd3MgPSBUUlVFLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfbmFtZXMgPSBGQUxTRSkpCiNhbGwgY2hhcgpzdHIoZGYyKQoKI2NhbGwgZnVuY3Rpb24KZGYyX3dpdGhfbmFtZXMgPC0gZXh0cmFjdG9yKGRmMikKCmBgYAoKIyMgRG9jdW1lbnRhdGlvbiBmb3IgQVBJIEVuZHBvaW50cwoKQWxsIFVSSXMgYXJlIHJlbGF0aXZlIHRvICpodHRwczovL3YyLm5hbXNvci5jb20vTmFtU29yQVBJdjIqCgpDbGFzcyB8IE1ldGhvZCB8IEhUVFAgcmVxdWVzdCB8IERlc2NyaXB0aW9uCi0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLQoqQWRtaW5BcGkqIHwgWyoqQWRkQ3JlZGl0cyoqXShkb2NzL0FkbWluQXBpLm1kI0FkZENyZWRpdHMpIHwgKipHRVQqKiAvYXBpMi9qc29uL2FkZENyZWRpdHMve2FwaUtleX0ve3VzYWdlQ3JlZGl0c30ve3VzZXJNZXNzYWdlfSB8IEFkZCB1c2FnZSBjcmVkaXRzIHRvIGFuIEFQSSBLZXkuCipBZG1pbkFwaSogfCBbKipBbm9ueW1pemUqKl0oZG9jcy9BZG1pbkFwaS5tZCNBbm9ueW1pemUpIHwgKipHRVQqKiAvYXBpMi9qc29uL2Fub255bWl6ZS97c291cmNlfS97YW5vbnltaXplZH0gfCBBY3RpdmF0ZS9kZWFjdGl2YXRlIGFub255bWl6YXRpb24gZm9yIGEgc291cmNlLgoqQWRtaW5BcGkqIHwgWyoqQXBpU3RhdHVzKipdKGRvY3MvQWRtaW5BcGkubWQjQXBpU3RhdHVzKSB8ICoqR0VUKiogL2FwaTIvanNvbi9hcGlTdGF0dXMgfCBQcmludHMgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBjbGFzc2lmaWVycy4KKkFkbWluQXBpKiB8IFsqKkFwaVVzYWdlKipdKGRvY3MvQWRtaW5BcGkubWQjQXBpVXNhZ2UpIHwgKipHRVQqKiAvYXBpMi9qc29uL2FwaVVzYWdlIHwgUHJpbnQgY3VycmVudCBBUEkgdXNhZ2UuCipBZG1pbkFwaSogfCBbKipBcGlVc2FnZUhpc3RvcnkqKl0oZG9jcy9BZG1pbkFwaS5tZCNBcGlVc2FnZUhpc3RvcnkpIHwgKipHRVQqKiAvYXBpMi9qc29uL2FwaVVzYWdlSGlzdG9yeSB8IFByaW50IGhpc3RvcmljYWwgQVBJIHVzYWdlLgoqQWRtaW5BcGkqIHwgWyoqQXBpVXNhZ2VIaXN0b3J5QWdncmVnYXRlKipdKGRvY3MvQWRtaW5BcGkubWQjQXBpVXNhZ2VIaXN0b3J5QWdncmVnYXRlKSB8ICoqR0VUKiogL2FwaTIvanNvbi9hcGlVc2FnZUhpc3RvcnlBZ2dyZWdhdGUgfCBQcmludCBoaXN0b3JpY2FsIEFQSSB1c2FnZSAoaW4gYW4gYWdncmVnYXRlZCB2aWV3LCBieSBzZXJ2aWNlLCBieSBkYXkvaG91ci9taW4pLgoqQWRtaW5BcGkqIHwgWyoqQXZhaWxhYmxlUGxhbnMqKl0oZG9jcy9BZG1pbkFwaS5tZCNBdmFpbGFibGVQbGFucykgfCAqKkdFVCoqIC9hcGkyL2pzb24vYXZhaWxhYmxlUGxhbnMgfCBMaXN0IGFsbCBhdmFpbGFibGUgcGxhbnMgaW4gdGhlIGRlZmF1bHQgY3VycmVuY3kgKHVzZCkuCipBZG1pbkFwaSogfCBbKipBdmFpbGFibGVQbGFuczEqKl0oZG9jcy9BZG1pbkFwaS5tZCNBdmFpbGFibGVQbGFuczEpIHwgKipHRVQqKiAvYXBpMi9qc29uL2F2YWlsYWJsZVBsYW5zL3t0b2tlbn0gfCBMaXN0IGFsbCBhdmFpbGFibGUgcGxhbnMgaW4gdGhlIHVzZXIncyBwcmVmZXJyZWQgY3VycmVuY3kuCipBZG1pbkFwaSogfCBbKipBdmFpbGFibGVTZXJ2aWNlcyoqXShkb2NzL0FkbWluQXBpLm1kI0F2YWlsYWJsZVNlcnZpY2VzKSB8ICoqR0VUKiogL2FwaTIvanNvbi9hcGlTZXJ2aWNlcyB8IExpc3Qgb2YgQVBJIHNlcnZpY2VzIGFuZCB1c2FnZSBjb3N0IGluIFVuaXRzIChkZWZhdWx0IGlzIDE9T05FIFVuaXQpLgoqQWRtaW5BcGkqIHwgWyoqQmlsbGluZ0N1cnJlbmNpZXMqKl0oZG9jcy9BZG1pbkFwaS5tZCNCaWxsaW5nQ3VycmVuY2llcykgfCAqKkdFVCoqIC9hcGkyL2pzb24vYmlsbGluZ0N1cnJlbmNpZXMgfCBMaXN0IHBvc3NpYmxlIGN1cnJlbmN5IG9wdGlvbnMgZm9yIGJpbGxpbmcgKFVTRCwgRVVSLCBHQlAsIC4uLikKKkFkbWluQXBpKiB8IFsqKkJpbGxpbmdIaXN0b3J5KipdKGRvY3MvQWRtaW5BcGkubWQjQmlsbGluZ0hpc3RvcnkpIHwgKipHRVQqKiAvYXBpMi9qc29uL2JpbGxpbmdIaXN0b3J5L3t0b2tlbn0gfCBSZWFkIHRoZSBoaXN0b3J5IGJpbGxpbmcgaW5mb3JtYXRpb24gKGludm9pY2VzIHBhaWQgdmlhIFN0cmlwZSBvciBtYW51YWxseSkuCipBZG1pbkFwaSogfCBbKipCaWxsaW5nSW5mbyoqXShkb2NzL0FkbWluQXBpLm1kI0JpbGxpbmdJbmZvKSB8ICoqR0VUKiogL2FwaTIvanNvbi9iaWxsaW5nSW5mby97dG9rZW59IHwgUmVhZCB0aGUgYmlsbGluZyBpbmZvcm1hdGlvbiAoY29tcGFueSBuYW1lLCBhZGRyZXNzLCBwaG9uZSwgdmF0IElEKQoqQWRtaW5BcGkqIHwgWyoqQ2hhcmdlKipdKGRvY3MvQWRtaW5BcGkubWQjQ2hhcmdlKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vY2hhcmdlIHwgQ3JlYXRlIGEgU3RyaXBlIEN1c3RvbWVyLCBiYXNlZCBvbiBhIHBheW1lbnQgY2FyZCB0b2tlbiAoZnJvbSBzZWN1cmUgU3RyaXBlSlMpIGFuZCBlbWFpbC4KKkFkbWluQXBpKiB8IFsqKkNvcnBvcmF0ZUtleSoqXShkb2NzL0FkbWluQXBpLm1kI0NvcnBvcmF0ZUtleSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vY29ycG9yYXRlS2V5L3thcGlLZXl9L3tjb3Jwb3JhdGV9IHwgU2V0dGluZyBhbiBBUEkgS2V5IHRvIGEgY29ycG9yYXRlIHN0YXR1cy4KKkFkbWluQXBpKiB8IFsqKkRlYnVnTGV2ZWwqKl0oZG9jcy9BZG1pbkFwaS5tZCNEZWJ1Z0xldmVsKSB8ICoqR0VUKiogL2FwaTIvanNvbi9kZWJ1Z0xldmVsL3tsb2dnZXJ9L3tsZXZlbH0gfCBVcGRhdGUgZGVidWcgbGV2ZWwgZm9yIGEgY2xhc3NpZmllcgoqQWRtaW5BcGkqIHwgWyoqRmx1c2gqKl0oZG9jcy9BZG1pbkFwaS5tZCNGbHVzaCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vZmx1c2ggfCBGbHVzaCBjb3VudGVycy4KKkFkbWluQXBpKiB8IFsqKkludmFsaWRhdGVDYWNoZSoqXShkb2NzL0FkbWluQXBpLm1kI0ludmFsaWRhdGVDYWNoZSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vaW52YWxpZGF0ZUNhY2hlIHwgSW52YWxpZGF0ZSBzeXN0ZW0gY2FjaGVzLgoqQWRtaW5BcGkqIHwgWyoqTGVhcm5hYmxlKipdKGRvY3MvQWRtaW5BcGkubWQjTGVhcm5hYmxlKSB8ICoqR0VUKiogL2FwaTIvanNvbi9sZWFybmFibGUve3NvdXJjZX0ve2xlYXJuYWJsZX0gfCBBY3RpdmF0ZS9kZWFjdGl2YXRlIGxlYXJuaW5nIGZyb20gYSBzb3VyY2UuCipBZG1pbkFwaSogfCBbKipOYW1zb3JDb3VudGVyKipdKGRvY3MvQWRtaW5BcGkubWQjTmFtc29yQ291bnRlcikgfCAqKkdFVCoqIC9hcGkyL2pzb24vbmFtc29yQ291bnRlciB8IEdldCB0aGUgb3ZlcmFsbCBBUEkgY291bnRlcgoqQWRtaW5BcGkqIHwgWyoqUGF5bWVudEluZm8qKl0oZG9jcy9BZG1pbkFwaS5tZCNQYXltZW50SW5mbykgfCAqKkdFVCoqIC9hcGkyL2pzb24vcGF5bWVudEluZm8ve3Rva2VufSB8IEdldCB0aGUgU3RyaXBlIHBheW1lbnQgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IGdvb2dsZSBhdXRoIHNlc3Npb24gdG9rZW4uCipBZG1pbkFwaSogfCBbKipQcm9jdXJlS2V5KipdKGRvY3MvQWRtaW5BcGkubWQjUHJvY3VyZUtleSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vcHJvY3VyZUtleS97dG9rZW59IHwgUHJvY3VyZSBhbiBBUEkgS2V5IChzZW50IHZpYSBFbWFpbCksIGJhc2VkIG9uIGFuIGF1dGggdG9rZW4uIEtlZXAgeW91ciBBUEkgS2V5IHNlY3JldC4KKkFkbWluQXBpKiB8IFsqKlJlZGVwbG95VUkqKl0oZG9jcy9BZG1pbkFwaS5tZCNSZWRlcGxveVVJKSB8ICoqR0VUKiogL2FwaTIvanNvbi9yZWRlcGxveVVJIHwgUmVkZXBsb3kgVUkgZnJvbSBjdXJyZW50IGRldiBicmFuY2guCipBZG1pbkFwaSogfCBbKipSZWRlcGxveVVJMSoqXShkb2NzL0FkbWluQXBpLm1kI1JlZGVwbG95VUkxKSB8ICoqR0VUKiogL2FwaTIvanNvbi9yZWRlcGxveVVJL3tsaXZlfSB8IFJlZGVwbG95IFVJIGZyb20gY3VycmVudCBkZXYgYnJhbmNoLgoqQWRtaW5BcGkqIHwgWyoqUmVtb3ZlVXNlckFjY291bnQqKl0oZG9jcy9BZG1pbkFwaS5tZCNSZW1vdmVVc2VyQWNjb3VudCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vcmVtb3ZlVXNlckFjY291bnQve3Rva2VufSB8IFJlbW92ZSB0aGUgdXNlciBhY2NvdW50LgoqQWRtaW5BcGkqIHwgWyoqUmVtb3ZlVXNlckFjY291bnRPbkJlaGFsZioqXShkb2NzL0FkbWluQXBpLm1kI1JlbW92ZVVzZXJBY2NvdW50T25CZWhhbGYpIHwgKipHRVQqKiAvYXBpMi9qc29uL3JlbW92ZVVzZXJBY2NvdW50T25CZWhhbGYve2FwaUtleX0gfCBSZW1vdmUgKG9uIGJlaGFsZikgYSB1c2VyIGFjY291bnQuCipBZG1pbkFwaSogfCBbKipTaHV0ZG93bioqXShkb2NzL0FkbWluQXBpLm1kI1NodXRkb3duKSB8ICoqR0VUKiogL2FwaTIvanNvbi9zaHV0ZG93biB8IFN0b3AgbGVhcm5pbmcgYW5kIHNodXRkb3duIHN5c3RlbS4KKkFkbWluQXBpKiB8IFsqKlNvZnR3YXJlVmVyc2lvbioqXShkb2NzL0FkbWluQXBpLm1kI1NvZnR3YXJlVmVyc2lvbikgfCAqKkdFVCoqIC9hcGkyL2pzb24vc29mdHdhcmVWZXJzaW9uIHwgR2V0IHRoZSBjdXJyZW50IHNvZnR3YXJlIHZlcnNpb24KKkFkbWluQXBpKiB8IFsqKlNvdXJjZVN0YXRzKipdKGRvY3MvQWRtaW5BcGkubWQjU291cmNlU3RhdHMpIHwgKipHRVQqKiAvYXBpMi9qc29uL3NvdXJjZVN0YXRzL3tzb3VyY2V9IHwgUHJpbnQgYmFzaWMgc291cmNlIHN0YXRpc3RpY3MuCipBZG1pbkFwaSogfCBbKipTdGF0cyoqXShkb2NzL0FkbWluQXBpLm1kI1N0YXRzKSB8ICoqR0VUKiogL2FwaTIvanNvbi9zdGF0cyB8IFByaW50IGJhc2ljIHN5c3RlbSBzdGF0aXN0aWNzLgoqQWRtaW5BcGkqIHwgWyoqU3RyaXBlQ29ubmVjdCoqXShkb2NzL0FkbWluQXBpLm1kI1N0cmlwZUNvbm5lY3QpIHwgKipHRVQqKiAvYXBpMi9qc29uL3N0cmlwZUNvbm5lY3QgfCBDb25uZWN0cyBhIFN0cmlwZSBBY2NvdW50LgoqQWRtaW5BcGkqIHwgWyoqU3Vic2NyaWJlUGxhbioqXShkb2NzL0FkbWluQXBpLm1kI1N1YnNjcmliZVBsYW4pIHwgKipHRVQqKiAvYXBpMi9qc29uL3N1YnNjcmliZVBsYW4ve3BsYW5OYW1lfS97dG9rZW59IHwgU3Vic2NyaWJlIHRvIGEgZ2l2ZSBBUEkgcGxhbiwgdXNpbmcgdGhlIHVzZXIncyBwcmVmZXJyZWQgb3IgZGVmYXVsdCBjdXJyZW5jeS4KKkFkbWluQXBpKiB8IFsqKlN1YnNjcmliZVBsYW5PbkJlaGFsZioqXShkb2NzL0FkbWluQXBpLm1kI1N1YnNjcmliZVBsYW5PbkJlaGFsZikgfCAqKkdFVCoqIC9hcGkyL2pzb24vc3Vic2NyaWJlUGxhbk9uQmVoYWxmL3twbGFuTmFtZX0ve2FwaUtleX0gfCBTdWJzY3JpYmUgdG8gYSBnaXZlIEFQSSBwbGFuLCB1c2luZyB0aGUgdXNlcidzIHByZWZlcnJlZCBvciBkZWZhdWx0IGN1cnJlbmN5IChhZG1pbiBvbmx5KS4KKkFkbWluQXBpKiB8IFsqKlRheG9ub215Q2xhc3NlcyoqXShkb2NzL0FkbWluQXBpLm1kI1RheG9ub215Q2xhc3NlcykgfCAqKkdFVCoqIC9hcGkyL2pzb24vdGF4b25vbXlDbGFzc2VzL3tjbGFzc2lmaWVyTmFtZX0gfCBQcmludCB0aGUgdGF4b25vbXkgY2xhc3NlcyB2YWxpZCBmb3IgdGhlIGdpdmVuIGNsYXNzaWZpZXIuCipBZG1pbkFwaSogfCBbKipVcGRhdGVCaWxsaW5nSW5mbyoqXShkb2NzL0FkbWluQXBpLm1kI1VwZGF0ZUJpbGxpbmdJbmZvKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vdXBkYXRlQmlsbGluZ0luZm8ve3Rva2VufSB8IFNldHMgb3IgdXBkYXRlIHRoZSBiaWxsaW5nIGluZm9ybWF0aW9uIChjb21wYW55IG5hbWUsIGFkZHJlc3MsIHBob25lLCB2YXQgSUQpCipBZG1pbkFwaSogfCBbKipVcGRhdGVMaW1pdCoqXShkb2NzL0FkbWluQXBpLm1kI1VwZGF0ZUxpbWl0KSB8ICoqR0VUKiogL2FwaTIvanNvbi91cGRhdGVMaW1pdC97dXNhZ2VMaW1pdH0ve2hhcmRPclNvZnR9L3t0b2tlbn0gfCBNb2RpZmllcyB0aGUgaGFyZC9zb2Z0IGxpbWl0IG9uIHRoZSBBUEkgcGxhbidzIG92ZXJhZ2VzIChkZWZhdWx0IGlzIDAkIHNvZnQgbGltaXQpLgoqQWRtaW5BcGkqIHwgWyoqVXBkYXRlUGF5bWVudERlZmF1bHQqKl0oZG9jcy9BZG1pbkFwaS5tZCNVcGRhdGVQYXltZW50RGVmYXVsdCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vdXBkYXRlUGF5bWVudERlZmF1bHQve2RlZmF1dFNvdXJjZUlkfS97dG9rZW59IHwgVXBkYXRlIHRoZSBkZWZhdWx0IFN0cmlwZSBjYXJkIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBnb29nbGUgYXV0aCBzZXNzaW9uIHRva2VuLgoqQWRtaW5BcGkqIHwgWyoqVXNlckluZm8qKl0oZG9jcy9BZG1pbkFwaS5tZCNVc2VySW5mbykgfCAqKkdFVCoqIC9hcGkyL2pzb24vdXNlckluZm8ve3Rva2VufSB8IEdldCB0aGUgdXNlciBwcm9maWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBnb29nbGUgYXV0aCBzZXNzaW9uIHRva2VuLgoqQWRtaW5BcGkqIHwgWyoqVmVyaWZ5RW1haWwqKl0oZG9jcy9BZG1pbkFwaS5tZCNWZXJpZnlFbWFpbCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vdmVyaWZ5RW1haWwve2VtYWlsVG9rZW59IHwgVmVyaWZpZXMgYW4gZW1haWwsIGJhc2VkIG9uIHRva2VuIHNlbnQgdG8gdGhhdCBlbWFpbAoqQWRtaW5BcGkqIHwgWyoqVmVyaWZ5UmVtb3ZlRW1haWwqKl0oZG9jcy9BZG1pbkFwaS5tZCNWZXJpZnlSZW1vdmVFbWFpbCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vdmVyaWZ5UmVtb3ZlRW1haWwve2VtYWlsVG9rZW59IHwgVmVyaWZpZXMgYW4gZW1haWwsIGJhc2VkIG9uIHRva2VuIHNlbnQgdG8gdGhhdCBlbWFpbAoqQWRtaW5BcGkqIHwgWyoqVmV0KipdKGRvY3MvQWRtaW5BcGkubWQjVmV0KSB8ICoqR0VUKiogL2FwaTIvanNvbi92ZXR0aW5nL3tzb3VyY2V9L3t2ZXR0ZWR9IHwgVmV0dGluZyBvZiBhIHNvdXJjZS4KKkNoaW5lc2VBcGkqIHwgWyoqQ2hpbmVzZU5hbWVDYW5kaWRhdGVzKipdKGRvY3MvQ2hpbmVzZUFwaS5tZCNDaGluZXNlTmFtZUNhbmRpZGF0ZXMpIHwgKipHRVQqKiAvYXBpMi9qc29uL2NoaW5lc2VOYW1lQ2FuZGlkYXRlcy97Y2hpbmVzZVN1cm5hbWVMYXRpbn0ve2NoaW5lc2VHaXZlbk5hbWVMYXRpbn0gfCBJZGVudGlmeSBDaGluZXNlIG5hbWUgY2FuZGlkYXRlcywgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIGV4LiBXYW5nIFhpYW9taW5nCipDaGluZXNlQXBpKiB8IFsqKkNoaW5lc2VOYW1lQ2FuZGlkYXRlc0JhdGNoKipdKGRvY3MvQ2hpbmVzZUFwaS5tZCNDaGluZXNlTmFtZUNhbmRpZGF0ZXNCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2NoaW5lc2VOYW1lQ2FuZGlkYXRlc0JhdGNoIHwgSWRlbnRpZnkgQ2hpbmVzZSBuYW1lIGNhbmRpZGF0ZXMsIGJhc2VkIG9uIHRoZSByb21hbml6ZWQgbmFtZSAoZmlyc3ROYW1lID0gY2hpbmVzZUdpdmVuTmFtZTsgbGFzdE5hbWU9Y2hpbmVzZVN1cm5hbWUpLCBleC4gV2FuZyBYaWFvbWluZwoqQ2hpbmVzZUFwaSogfCBbKipDaGluZXNlTmFtZUNhbmRpZGF0ZXNHZW5kZXJCYXRjaCoqXShkb2NzL0NoaW5lc2VBcGkubWQjQ2hpbmVzZU5hbWVDYW5kaWRhdGVzR2VuZGVyQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9jaGluZXNlTmFtZUNhbmRpZGF0ZXNHZW5kZXJCYXRjaCB8IElkZW50aWZ5IENoaW5lc2UgbmFtZSBjYW5kaWRhdGVzLCBiYXNlZCBvbiB0aGUgcm9tYW5pemVkIG5hbWUgKGZpcnN0TmFtZSA9IGNoaW5lc2VHaXZlbk5hbWU7IGxhc3ROYW1lPWNoaW5lc2VTdXJuYW1lKSBleC4gV2FuZyBYaWFvbWluZy4KKkNoaW5lc2VBcGkqIHwgWyoqQ2hpbmVzZU5hbWVHZW5kZXJDYW5kaWRhdGVzKipdKGRvY3MvQ2hpbmVzZUFwaS5tZCNDaGluZXNlTmFtZUdlbmRlckNhbmRpZGF0ZXMpIHwgKipHRVQqKiAvYXBpMi9qc29uL2NoaW5lc2VOYW1lR2VuZGVyQ2FuZGlkYXRlcy97Y2hpbmVzZVN1cm5hbWVMYXRpbn0ve2NoaW5lc2VHaXZlbk5hbWVMYXRpbn0ve2tub3duR2VuZGVyfSB8IElkZW50aWZ5IENoaW5lc2UgbmFtZSBjYW5kaWRhdGVzLCBiYXNlZCBvbiB0aGUgcm9tYW5pemVkIG5hbWUgZXguIFdhbmcgWGlhb21pbmcgLSBoYXZpbmcgYSBrbm93biBnZW5kZXIgKCdtYWxlJyBvciAnZmVtYWxlJykKKkNoaW5lc2VBcGkqIHwgWyoqQ2hpbmVzZU5hbWVNYXRjaCoqXShkb2NzL0NoaW5lc2VBcGkubWQjQ2hpbmVzZU5hbWVNYXRjaCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vY2hpbmVzZU5hbWVNYXRjaC97Y2hpbmVzZVN1cm5hbWVMYXRpbn0ve2NoaW5lc2VHaXZlbk5hbWVMYXRpbn0ve2NoaW5lc2VOYW1lfSB8IFJldHVybiBhIHNjb3JlIGZvciBtYXRjaGluZyBDaGluZXNlIG5hbWUgZXguIOeOi+aZk+aYjiB3aXRoIGEgcm9tYW5pemVkIG5hbWUgZXguIFdhbmcgWGlhb21pbmcKKkNoaW5lc2VBcGkqIHwgWyoqQ2hpbmVzZU5hbWVNYXRjaEJhdGNoKipdKGRvY3MvQ2hpbmVzZUFwaS5tZCNDaGluZXNlTmFtZU1hdGNoQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9jaGluZXNlTmFtZU1hdGNoQmF0Y2ggfCBJZGVudGlmeSBDaGluZXNlIG5hbWUgY2FuZGlkYXRlcywgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIChmaXJzdE5hbWUgPSBjaGluZXNlR2l2ZW5OYW1lOyBsYXN0TmFtZT1jaGluZXNlU3VybmFtZSksIGV4LiBXYW5nIFhpYW9taW5nCipDaGluZXNlQXBpKiB8IFsqKkdlbmRlckNoaW5lc2VOYW1lKipdKGRvY3MvQ2hpbmVzZUFwaS5tZCNHZW5kZXJDaGluZXNlTmFtZSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vZ2VuZGVyQ2hpbmVzZU5hbWUve2NoaW5lc2VOYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEgQ2hpbmVzZSBmdWxsIG5hbWUgZXguIOeOi+aZk+aYjgoqQ2hpbmVzZUFwaSogfCBbKipHZW5kZXJDaGluZXNlTmFtZUJhdGNoKipdKGRvY3MvQ2hpbmVzZUFwaS5tZCNHZW5kZXJDaGluZXNlTmFtZUJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vZ2VuZGVyQ2hpbmVzZU5hbWVCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIHVwIHRvIDEwMCBmdWxsIG5hbWVzIGV4LiDnjovmmZPmmI4KKkNoaW5lc2VBcGkqIHwgWyoqR2VuZGVyQ2hpbmVzZU5hbWVQaW55aW4qKl0oZG9jcy9DaGluZXNlQXBpLm1kI0dlbmRlckNoaW5lc2VOYW1lUGlueWluKSB8ICoqR0VUKiogL2FwaTIvanNvbi9nZW5kZXJDaGluZXNlTmFtZVBpbnlpbi97Y2hpbmVzZVN1cm5hbWVMYXRpbn0ve2NoaW5lc2VHaXZlbk5hbWVMYXRpbn0gfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiBhIENoaW5lc2UgbmFtZSBpbiBMQVRJTiAoUGlueWluKS4KKkNoaW5lc2VBcGkqIHwgWyoqR2VuZGVyQ2hpbmVzZU5hbWVQaW55aW5CYXRjaCoqXShkb2NzL0NoaW5lc2VBcGkubWQjR2VuZGVyQ2hpbmVzZU5hbWVQaW55aW5CYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2dlbmRlckNoaW5lc2VOYW1lUGlueWluQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiB1cCB0byAxMDAgQ2hpbmVzZSBuYW1lcyBpbiBMQVRJTiAoUGlueWluKS4KKkNoaW5lc2VBcGkqIHwgWyoqUGFyc2VDaGluZXNlTmFtZSoqXShkb2NzL0NoaW5lc2VBcGkubWQjUGFyc2VDaGluZXNlTmFtZSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vcGFyc2VDaGluZXNlTmFtZS97Y2hpbmVzZU5hbWV9IHwgSW5mZXIgdGhlIGxpa2VseSBmaXJzdC9sYXN0IG5hbWUgc3RydWN0dXJlIG9mIGEgbmFtZSwgZXguIOeOi+aZk+aYjiAtPiDnjosoc3VybmFtZSkg5pmT5piOKGdpdmVuIG5hbWUpCipDaGluZXNlQXBpKiB8IFsqKlBhcnNlQ2hpbmVzZU5hbWVCYXRjaCoqXShkb2NzL0NoaW5lc2VBcGkubWQjUGFyc2VDaGluZXNlTmFtZUJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vcGFyc2VDaGluZXNlTmFtZUJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBmaXJzdC9sYXN0IG5hbWUgc3RydWN0dXJlIG9mIGEgbmFtZSwgZXguIOeOi+aZk+aYjiAtPiDnjosoc3VybmFtZSkg5pmT5piOKGdpdmVuIG5hbWUpLgoqQ2hpbmVzZUFwaSogfCBbKipQaW55aW5DaGluZXNlTmFtZSoqXShkb2NzL0NoaW5lc2VBcGkubWQjUGlueWluQ2hpbmVzZU5hbWUpIHwgKipHRVQqKiAvYXBpMi9qc29uL3BpbnlpbkNoaW5lc2VOYW1lL3tjaGluZXNlTmFtZX0gfCBSb21hbml6ZSB0aGUgQ2hpbmVzZSBuYW1lIHRvIFBpbnlpbiwgZXguIOeOi+aZk+aYjiAtPiBXYW5nIChzdXJuYW1lKSBYaWFvbWluZyAoZ2l2ZW4gbmFtZSkKKkNoaW5lc2VBcGkqIHwgWyoqUGlueWluQ2hpbmVzZU5hbWVCYXRjaCoqXShkb2NzL0NoaW5lc2VBcGkubWQjUGlueWluQ2hpbmVzZU5hbWVCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3BpbnlpbkNoaW5lc2VOYW1lQmF0Y2ggfCBSb21hbml6ZSBhIGxpc3Qgb2YgQ2hpbmVzZSBuYW1lIHRvIFBpbnlpbiwgZXguIOeOi+aZk+aYjiAtPiBXYW5nIChzdXJuYW1lKSBYaWFvbWluZyAoZ2l2ZW4gbmFtZSkuCipKYXBhbmVzZUFwaSogfCBbKipHZW5kZXJKYXBhbmVzZU5hbWVGdWxsKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjR2VuZGVySmFwYW5lc2VOYW1lRnVsbCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vZ2VuZGVySmFwYW5lc2VOYW1lRnVsbC97amFwYW5lc2VOYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEgSmFwYW5lc2UgZnVsbCBuYW1lIGV4LiDnjovmmZPmmI4KKkphcGFuZXNlQXBpKiB8IFsqKkdlbmRlckphcGFuZXNlTmFtZUZ1bGxCYXRjaCoqXShkb2NzL0phcGFuZXNlQXBpLm1kI0dlbmRlckphcGFuZXNlTmFtZUZ1bGxCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2dlbmRlckphcGFuZXNlTmFtZUZ1bGxCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIHVwIHRvIDEwMCBmdWxsIG5hbWVzCipKYXBhbmVzZUFwaSogfCBbKipHZW5kZXJKYXBhbmVzZU5hbWVQaW55aW4qKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNHZW5kZXJKYXBhbmVzZU5hbWVQaW55aW4pIHwgKipHRVQqKiAvYXBpMi9qc29uL2dlbmRlckphcGFuZXNlTmFtZS97amFwYW5lc2VTdXJuYW1lfS97amFwYW5lc2VHaXZlbk5hbWV9IHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBKYXBhbmVzZSBuYW1lIGluIExBVElOIChQaW55aW4pLgoqSmFwYW5lc2VBcGkqIHwgWyoqR2VuZGVySmFwYW5lc2VOYW1lUGlueWluQmF0Y2gqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNHZW5kZXJKYXBhbmVzZU5hbWVQaW55aW5CYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2dlbmRlckphcGFuZXNlTmFtZUJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwIEphcGFuZXNlIG5hbWVzIGluIExBVElOIChQaW55aW4pLgoqSmFwYW5lc2VBcGkqIHwgWyoqSmFwYW5lc2VOYW1lS2FuamlDYW5kaWRhdGVzKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjSmFwYW5lc2VOYW1lS2FuamlDYW5kaWRhdGVzKSB8ICoqR0VUKiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVLYW5qaUNhbmRpZGF0ZXMve2phcGFuZXNlU3VybmFtZUxhdGlufS97amFwYW5lc2VHaXZlbk5hbWVMYXRpbn0gfCBJZGVudGlmeSBqYXBhbmVzZSBuYW1lIGNhbmRpZGF0ZXMgaW4gS0FOSkksIGJhc2VkIG9uIHRoZSByb21hbml6ZWQgbmFtZSBleC4gWWFtYW1vdG8gU2FuYWUKKkphcGFuZXNlQXBpKiB8IFsqKkphcGFuZXNlTmFtZUthbmppQ2FuZGlkYXRlc0JhdGNoKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjSmFwYW5lc2VOYW1lS2FuamlDYW5kaWRhdGVzQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVLYW5qaUNhbmRpZGF0ZXNCYXRjaCB8IElkZW50aWZ5IGphcGFuZXNlIG5hbWUgY2FuZGlkYXRlcyBpbiBLQU5KSSwgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIChmaXJzdE5hbWUgPSBqYXBhbmVzZUdpdmVuTmFtZTsgbGFzdE5hbWU9amFwYW5lc2VTdXJuYW1lKSwgZXguIFlhbWFtb3RvIFNhbmFlCipKYXBhbmVzZUFwaSogfCBbKipKYXBhbmVzZU5hbWVMYXRpbkNhbmRpZGF0ZXMqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNKYXBhbmVzZU5hbWVMYXRpbkNhbmRpZGF0ZXMpIHwgKipHRVQqKiAvYXBpMi9qc29uL2phcGFuZXNlTmFtZUxhdGluQ2FuZGlkYXRlcy97amFwYW5lc2VTdXJuYW1lS2Fuaml9L3tqYXBhbmVzZUdpdmVuTmFtZUthbmppfSB8IFJvbWFuaXplIGphcGFuZXNlIG5hbWUsIGJhc2VkIG9uIHRoZSBuYW1lIGluIEthbmppLgoqSmFwYW5lc2VBcGkqIHwgWyoqSmFwYW5lc2VOYW1lTGF0aW5DYW5kaWRhdGVzQmF0Y2gqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNKYXBhbmVzZU5hbWVMYXRpbkNhbmRpZGF0ZXNCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2phcGFuZXNlTmFtZUxhdGluQ2FuZGlkYXRlc0JhdGNoIHwgUm9tYW5pemUgamFwYW5lc2UgbmFtZXMsIGJhc2VkIG9uIHRoZSBuYW1lIGluIEtBTkpJCipKYXBhbmVzZUFwaSogfCBbKipKYXBhbmVzZU5hbWVNYXRjaCoqXShkb2NzL0phcGFuZXNlQXBpLm1kI0phcGFuZXNlTmFtZU1hdGNoKSB8ICoqR0VUKiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVNYXRjaC97amFwYW5lc2VTdXJuYW1lTGF0aW59L3tqYXBhbmVzZUdpdmVuTmFtZUxhdGlufS97amFwYW5lc2VOYW1lfSB8IFJldHVybiBhIHNjb3JlIGZvciBtYXRjaGluZyBKYXBhbmVzZSBuYW1lIGluIEtBTkpJIGV4LiDlsbHmnKwg5pep6IuXIHdpdGggYSByb21hbml6ZWQgbmFtZSBleC4gWWFtYW1vdG8gU2FuYWUKKkphcGFuZXNlQXBpKiB8IFsqKkphcGFuZXNlTmFtZU1hdGNoQmF0Y2gqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNKYXBhbmVzZU5hbWVNYXRjaEJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vamFwYW5lc2VOYW1lTWF0Y2hCYXRjaCB8IFJldHVybiBhIHNjb3JlIGZvciBtYXRjaGluZyBhIGxpc3Qgb2YgSmFwYW5lc2UgbmFtZXMgaW4gS0FOSkkgZXguIOWxseacrCDml6noi5cgd2l0aCByb21hbml6ZWQgbmFtZXMgZXguIFlhbWFtb3RvIFNhbmFlCipKYXBhbmVzZUFwaSogfCBbKipKYXBhbmVzZU5hbWVNYXRjaEZlZWRiYWNrTG9vcCoqXShkb2NzL0phcGFuZXNlQXBpLm1kI0phcGFuZXNlTmFtZU1hdGNoRmVlZGJhY2tMb29wKSB8ICoqR0VUKiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVNYXRjaEZlZWRiYWNrTG9vcC97amFwYW5lc2VTdXJuYW1lTGF0aW59L3tqYXBhbmVzZUdpdmVuTmFtZUxhdGlufS97amFwYW5lc2VOYW1lfSB8IFtDUkVESVRTIDEgVU5JVF0gRmVlZGJhY2sgbG9vcCB0byBiZXR0ZXIgcGVyZm9ybSBtYXRjaGluZyBKYXBhbmVzZSBuYW1lIGluIEtBTkpJIGV4LiDlsbHmnKwg5pep6IuXIHdpdGggYSByb21hbml6ZWQgbmFtZSBleC4gWWFtYW1vdG8gU2FuYWUKKkphcGFuZXNlQXBpKiB8IFsqKlBhcnNlSmFwYW5lc2VOYW1lKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjUGFyc2VKYXBhbmVzZU5hbWUpIHwgKipHRVQqKiAvYXBpMi9qc29uL3BhcnNlSmFwYW5lc2VOYW1lL3tqYXBhbmVzZU5hbWV9IHwgSW5mZXIgdGhlIGxpa2VseSBmaXJzdC9sYXN0IG5hbWUgc3RydWN0dXJlIG9mIGEgbmFtZSwgZXguIOWxseacrCDml6noi5cgb3IgWWFtYW1vdG8gU2FuYWUKKkphcGFuZXNlQXBpKiB8IFsqKlBhcnNlSmFwYW5lc2VOYW1lQmF0Y2gqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNQYXJzZUphcGFuZXNlTmFtZUJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vcGFyc2VKYXBhbmVzZU5hbWVCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiDlsbHmnKwg5pep6IuXIG9yIFlhbWFtb3RvIFNhbmFlIAoqUGVyc29uYWxBcGkqIHwgWyoqQ291bnRyeSoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI0NvdW50cnkpIHwgKipHRVQqKiAvYXBpMi9qc29uL2NvdW50cnkve3BlcnNvbmFsTmFtZUZ1bGx9IHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgY291bnRyeSBvZiByZXNpZGVuY2Ugb2YgYSBwZXJzb25hbCBmdWxsIG5hbWUsIG9yIG9uZSBzdXJuYW1lLiBBc3N1bWVzIG5hbWVzIGFzIHRoZXkgYXJlIGluIHRoZSBjb3VudHJ5IG9mIHJlc2lkZW5jZSBPUiB0aGUgY291bnRyeSBvZiBvcmlnaW4uCipQZXJzb25hbEFwaSogfCBbKipDb3VudHJ5QmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNDb3VudHJ5QmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9jb3VudHJ5QmF0Y2ggfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBjb3VudHJ5IG9mIHJlc2lkZW5jZSBvZiB1cCB0byAxMDAgcGVyc29uYWwgZnVsbCBuYW1lcywgb3Igc3VybmFtZXMuIEFzc3VtZXMgbmFtZXMgYXMgdGhleSBhcmUgaW4gdGhlIGNvdW50cnkgb2YgcmVzaWRlbmNlIE9SIHRoZSBjb3VudHJ5IG9mIG9yaWdpbi4KKlBlcnNvbmFsQXBpKiB8IFsqKkRpYXNwb3JhKipdKGRvY3MvUGVyc29uYWxBcGkubWQjRGlhc3BvcmEpIHwgKipHRVQqKiAvYXBpMi9qc29uL2RpYXNwb3JhL3tjb3VudHJ5SXNvMn0ve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfSB8IFtVU0VTIDIwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGV0aG5pY2l0eS9kaWFzcG9yYSBvZiBhIHBlcnNvbmFsIG5hbWUsIGdpdmVuIGEgY291bnRyeSBvZiByZXNpZGVuY2UgSVNPMiBjb2RlIChleC4gVVMsIENBLCBBVSwgTlogZXRjLikKKlBlcnNvbmFsQXBpKiB8IFsqKkRpYXNwb3JhQmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNEaWFzcG9yYUJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vZGlhc3BvcmFCYXRjaCB8IFtVU0VTIDIwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGV0aG5pY2l0eS9kaWFzcG9yYSBvZiB1cCB0byAxMDAgcGVyc29uYWwgbmFtZXMsIGdpdmVuIGEgY291bnRyeSBvZiByZXNpZGVuY2UgSVNPMiBjb2RlIChleC4gVVMsIENBLCBBVSwgTlogZXRjLikKKlBlcnNvbmFsQXBpKiB8IFsqKkdlbmRlcioqXShkb2NzL1BlcnNvbmFsQXBpLm1kI0dlbmRlcikgfCAqKkdFVCoqIC9hcGkyL2pzb24vZ2VuZGVyL3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0gfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiBhIG5hbWUuCipQZXJzb25hbEFwaSogfCBbKipHZW5kZXJCYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI0dlbmRlckJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vZ2VuZGVyQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiB1cCB0byAxMDAgbmFtZXMsIGRldGVjdGluZyBhdXRvbWF0aWNhbGx5IHRoZSBjdWx0dXJhbCBjb250ZXh0LgoqUGVyc29uYWxBcGkqIHwgWyoqR2VuZGVyRnVsbCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI0dlbmRlckZ1bGwpIHwgKipHRVQqKiAvYXBpMi9qc29uL2dlbmRlckZ1bGwve2Z1bGxOYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEgZnVsbCBuYW1lLCBleC4gSm9obiBILiBTbWl0aAoqUGVyc29uYWxBcGkqIHwgWyoqR2VuZGVyRnVsbEJhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjR2VuZGVyRnVsbEJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vZ2VuZGVyRnVsbEJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwIGZ1bGwgbmFtZXMsIGRldGVjdGluZyBhdXRvbWF0aWNhbGx5IHRoZSBjdWx0dXJhbCBjb250ZXh0LgoqUGVyc29uYWxBcGkqIHwgWyoqR2VuZGVyRnVsbEdlbyoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI0dlbmRlckZ1bGxHZW8pIHwgKipHRVQqKiAvYXBpMi9qc29uL2dlbmRlckZ1bGxHZW8ve2Z1bGxOYW1lfS97Y291bnRyeUlzbzJ9IHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBmdWxsIG5hbWUsIGdpdmVuIGEgbG9jYWwgY29udGV4dCAoSVNPMiBjb3VudHJ5IGNvZGUpLgoqUGVyc29uYWxBcGkqIHwgWyoqR2VuZGVyRnVsbEdlb0JhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjR2VuZGVyRnVsbEdlb0JhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vZ2VuZGVyRnVsbEdlb0JhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwIGZ1bGwgbmFtZXMsIHdpdGggYSBnaXZlbiBjdWx0dXJhbCBjb250ZXh0IChjb3VudHJ5IElTTzIgY29kZSkuCipQZXJzb25hbEFwaSogfCBbKipHZW5kZXJHZW8qKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNHZW5kZXJHZW8pIHwgKipHRVQqKiAvYXBpMi9qc29uL2dlbmRlckdlby97Zmlyc3ROYW1lfS97bGFzdE5hbWV9L3tjb3VudHJ5SXNvMn0gfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiBhIG5hbWUsIGdpdmVuIGEgbG9jYWwgY29udGV4dCAoSVNPMiBjb3VudHJ5IGNvZGUpLgoqUGVyc29uYWxBcGkqIHwgWyoqR2VuZGVyR2VvQmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNHZW5kZXJHZW9CYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2dlbmRlckdlb0JhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwIG5hbWVzLCBlYWNoIGdpdmVuIGEgbG9jYWwgY29udGV4dCAoSVNPMiBjb3VudHJ5IGNvZGUpLgoqUGVyc29uYWxBcGkqIHwgWyoqT3JpZ2luKipdKGRvY3MvUGVyc29uYWxBcGkubWQjT3JpZ2luKSB8ICoqR0VUKiogL2FwaTIvanNvbi9vcmlnaW4ve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfSB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgb2Ygb3JpZ2luIG9mIGEgcGVyc29uYWwgbmFtZS4gQXNzdW1lcyBuYW1lcyBhcyB0aGV5IGFyZSBpbiB0aGUgY291bnRyeSBvZiBvcmlnaW4uIEZvciBVUywgQ0EsIEFVLCBOWiBhbmQgb3RoZXIgbWVsdGluZy1wb3RzIDogdXNlICdkaWFzcG9yYScgaW5zdGVhZC4KKlBlcnNvbmFsQXBpKiB8IFsqKk9yaWdpbkJhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjT3JpZ2luQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9vcmlnaW5CYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgb2Ygb3JpZ2luIG9mIHVwIHRvIDEwMCBuYW1lcywgZGV0ZWN0aW5nIGF1dG9tYXRpY2FsbHkgdGhlIGN1bHR1cmFsIGNvbnRleHQuCipQZXJzb25hbEFwaSogfCBbKipQYXJzZU5hbWUqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNQYXJzZU5hbWUpIHwgKipHRVQqKiAvYXBpMi9qc29uL3BhcnNlTmFtZS97bmFtZUZ1bGx9IHwgSW5mZXIgdGhlIGxpa2VseSBmaXJzdC9sYXN0IG5hbWUgc3RydWN0dXJlIG9mIGEgbmFtZSwgZXguIEpvaG4gU21pdGggb3IgU01JVEgsIEpvaG4gb3IgU01JVEg7IEpvaG4uIAoqUGVyc29uYWxBcGkqIHwgWyoqUGFyc2VOYW1lQmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNQYXJzZU5hbWVCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3BhcnNlTmFtZUJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBmaXJzdC9sYXN0IG5hbWUgc3RydWN0dXJlIG9mIGEgbmFtZSwgZXguIEpvaG4gU21pdGggb3IgU01JVEgsIEpvaG4gb3IgU01JVEg7IEpvaG4uCipQZXJzb25hbEFwaSogfCBbKipQYXJzZU5hbWVHZW8qKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNQYXJzZU5hbWVHZW8pIHwgKipHRVQqKiAvYXBpMi9qc29uL3BhcnNlTmFtZS97bmFtZUZ1bGx9L3tjb3VudHJ5SXNvMn0gfCBJbmZlciB0aGUgbGlrZWx5IGZpcnN0L2xhc3QgbmFtZSBzdHJ1Y3R1cmUgb2YgYSBuYW1lLCBleC4gSm9obiBTbWl0aCBvciBTTUlUSCwgSm9obiBvciBTTUlUSDsgSm9obi4gRm9yIGJldHRlciBhY2N1cmFjeSwgcHJvdmlkZSBhIGdlb2dyYXBoaWMgY29udGV4dC4KKlBlcnNvbmFsQXBpKiB8IFsqKlBhcnNlTmFtZUdlb0JhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjUGFyc2VOYW1lR2VvQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9wYXJzZU5hbWVHZW9CYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiBKb2huIFNtaXRoIG9yIFNNSVRILCBKb2huIG9yIFNNSVRIOyBKb2huLiBHaXZpbmcgYSBsb2NhbCBjb250ZXh0IGltcHJvdmVzIHByZWNpc2lvbi4gCipQZXJzb25hbEFwaSogfCBbKipQYXJzZWRHZW5kZXJCYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI1BhcnNlZEdlbmRlckJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vcGFyc2VkR2VuZGVyQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiB1cCB0byAxMDAgZnVsbHkgcGFyc2VkIG5hbWVzLCBkZXRlY3RpbmcgYXV0b21hdGljYWxseSB0aGUgY3VsdHVyYWwgY29udGV4dC4KKlBlcnNvbmFsQXBpKiB8IFsqKlBhcnNlZEdlbmRlckdlb0JhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjUGFyc2VkR2VuZGVyR2VvQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9wYXJzZWRHZW5kZXJHZW9CYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIHVwIHRvIDEwMCBmdWxseSBwYXJzZWQgbmFtZXMsIGRldGVjdGluZyBhdXRvbWF0aWNhbGx5IHRoZSBjdWx0dXJhbCBjb250ZXh0LgoqUGVyc29uYWxBcGkqIHwgWyoqVXNSYWNlRXRobmljaXR5KipdKGRvY3MvUGVyc29uYWxBcGkubWQjVXNSYWNlRXRobmljaXR5KSB8ICoqR0VUKiogL2FwaTIvanNvbi91c1JhY2VFdGhuaWNpdHkve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfSB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciBhIFVTIHJlc2lkZW50J3MgbGlrZWx5IHJhY2UvZXRobmljaXR5IGFjY29yZGluZyB0byBVUyBDZW5zdXMgdGF4b25vbXkgV19OTCAod2hpdGUsIG5vbiBsYXRpbm8pLCBITCAoaGlzcGFubyBsYXRpbm8pLCAgQSAoYXNpYW4sIG5vbiBsYXRpbm8pLCBCX05MIChibGFjaywgbm9uIGxhdGlubykuCipQZXJzb25hbEFwaSogfCBbKipVc1JhY2VFdGhuaWNpdHlCYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI1VzUmFjZUV0aG5pY2l0eUJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vdXNSYWNlRXRobmljaXR5QmF0Y2ggfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdXAtdG8gMTAwIFVTIHJlc2lkZW50J3MgbGlrZWx5IHJhY2UvZXRobmljaXR5IGFjY29yZGluZyB0byBVUyBDZW5zdXMgdGF4b25vbXkuCipQZXJzb25hbEFwaSogfCBbKipVc1JhY2VFdGhuaWNpdHlaSVA1KipdKGRvY3MvUGVyc29uYWxBcGkubWQjVXNSYWNlRXRobmljaXR5WklQNSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vdXNSYWNlRXRobmljaXR5WklQNS97Zmlyc3ROYW1lfS97bGFzdE5hbWV9L3t6aXA1Q29kZX0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgYSBVUyByZXNpZGVudCdzIGxpa2VseSByYWNlL2V0aG5pY2l0eSBhY2NvcmRpbmcgdG8gVVMgQ2Vuc3VzIHRheG9ub215LCB1c2luZyAob3B0aW9uYWwpIFpJUDUgY29kZSBpbmZvLiBPdXRwdXQgaXMgV19OTCAod2hpdGUsIG5vbiBsYXRpbm8pLCBITCAoaGlzcGFubyBsYXRpbm8pLCAgQSAoYXNpYW4sIG5vbiBsYXRpbm8pLCBCX05MIChibGFjaywgbm9uIGxhdGlubykuCipQZXJzb25hbEFwaSogfCBbKipVc1ppcFJhY2VFdGhuaWNpdHlCYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI1VzWmlwUmFjZUV0aG5pY2l0eUJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vdXNaaXBSYWNlRXRobmljaXR5QmF0Y2ggfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdXAtdG8gMTAwIFVTIHJlc2lkZW50J3MgbGlrZWx5IHJhY2UvZXRobmljaXR5IGFjY29yZGluZyB0byBVUyBDZW5zdXMgdGF4b25vbXksIHdpdGggKG9wdGlvbmFsKSBaSVAgY29kZS4KKlNvY2lhbEFwaSogfCBbKipQaG9uZUNvZGUqKl0oZG9jcy9Tb2NpYWxBcGkubWQjUGhvbmVDb2RlKSB8ICoqR0VUKiogL2FwaTIvanNvbi9waG9uZUNvZGUve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfS97cGhvbmVOdW1iZXJ9IHwgW1VTRVMgMTEgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgY291bnRyeSBhbmQgcGhvbmUgcHJlZml4LCBnaXZlbiBhIHBlcnNvbmFsIG5hbWUgYW5kIGZvcm1hdHRlZCAvIHVuZm9ybWF0dGVkIHBob25lIG51bWJlci4KKlNvY2lhbEFwaSogfCBbKipQaG9uZUNvZGVCYXRjaCoqXShkb2NzL1NvY2lhbEFwaS5tZCNQaG9uZUNvZGVCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3Bob25lQ29kZUJhdGNoIHwgW1VTRVMgMTEgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgY291bnRyeSBhbmQgcGhvbmUgcHJlZml4LCBvZiB1cCB0byAxMDAgcGVyc29uYWwgbmFtZXMsIGRldGVjdGluZyBhdXRvbWF0aWNhbGx5IHRoZSBsb2NhbCBjb250ZXh0IGdpdmVuIGEgbmFtZSBhbmQgZm9ybWF0dGVkIC8gdW5mb3JtYXR0ZWQgcGhvbmUgbnVtYmVyLgoqU29jaWFsQXBpKiB8IFsqKlBob25lQ29kZUdlbyoqXShkb2NzL1NvY2lhbEFwaS5tZCNQaG9uZUNvZGVHZW8pIHwgKipHRVQqKiAvYXBpMi9qc29uL3Bob25lQ29kZUdlby97Zmlyc3ROYW1lfS97bGFzdE5hbWV9L3twaG9uZU51bWJlcn0ve2NvdW50cnlJc28yfSB8IFtVU0VTIDExIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IHBob25lIHByZWZpeCwgZ2l2ZW4gYSBwZXJzb25hbCBuYW1lIGFuZCBmb3JtYXR0ZWQgLyB1bmZvcm1hdHRlZCBwaG9uZSBudW1iZXIsIHdpdGggYSBsb2NhbCBjb250ZXh0IChJU08yIGNvdW50cnkgb2YgcmVzaWRlbmNlKS4KKlNvY2lhbEFwaSogfCBbKipQaG9uZUNvZGVHZW9CYXRjaCoqXShkb2NzL1NvY2lhbEFwaS5tZCNQaG9uZUNvZGVHZW9CYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3Bob25lQ29kZUdlb0JhdGNoIHwgW1VTRVMgMTEgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgY291bnRyeSBhbmQgcGhvbmUgcHJlZml4LCBvZiB1cCB0byAxMDAgcGVyc29uYWwgbmFtZXMsIHdpdGggYSBsb2NhbCBjb250ZXh0IChJU08yIGNvdW50cnkgb2YgcmVzaWRlbmNlKS4KKlNvY2lhbEFwaSogfCBbKipQaG9uZUNvZGVHZW9GZWVkYmFja0xvb3AqKl0oZG9jcy9Tb2NpYWxBcGkubWQjUGhvbmVDb2RlR2VvRmVlZGJhY2tMb29wKSB8ICoqR0VUKiogL2FwaTIvanNvbi9waG9uZUNvZGVHZW9GZWVkYmFja0xvb3Ave2ZpcnN0TmFtZX0ve2xhc3ROYW1lfS97cGhvbmVOdW1iZXJ9L3twaG9uZU51bWJlckUxNjR9L3tjb3VudHJ5SXNvMn0gfCBbQ1JFRElUUyAxIFVOSVRdIEZlZWRiYWNrIGxvb3AgdG8gYmV0dGVyIGluZmVyIHRoZSBsaWtlbHkgcGhvbmUgcHJlZml4LCBnaXZlbiBhIHBlcnNvbmFsIG5hbWUgYW5kIGZvcm1hdHRlZCAvIHVuZm9ybWF0dGVkIHBob25lIG51bWJlciwgd2l0aCBhIGxvY2FsIGNvbnRleHQgKElTTzIgY291bnRyeSBvZiByZXNpZGVuY2UpLgoKCiMjIERvY3VtZW50YXRpb24gZm9yIE1vZGVscwoKIC0gW0FQSUJpbGxpbmdQZXJpb2RVc2FnZU91dF0oZG9jcy9BUElCaWxsaW5nUGVyaW9kVXNhZ2VPdXQubWQpCiAtIFtBUElDbGFzc2lmaWVyT3V0XShkb2NzL0FQSUNsYXNzaWZpZXJPdXQubWQpCiAtIFtBUElDbGFzc2lmaWVyVGF4b25vbXlPdXRdKGRvY3MvQVBJQ2xhc3NpZmllclRheG9ub215T3V0Lm1kKQogLSBbQVBJQ2xhc3NpZmllcnNTdGF0dXNPdXRdKGRvY3MvQVBJQ2xhc3NpZmllcnNTdGF0dXNPdXQubWQpCiAtIFtBUElDb3VudGVyVjJPdXRdKGRvY3MvQVBJQ291bnRlclYyT3V0Lm1kKQogLSBbQVBJS2V5T3V0XShkb2NzL0FQSUtleU91dC5tZCkKIC0gW0FQSVBlcmlvZFVzYWdlT3V0XShkb2NzL0FQSVBlcmlvZFVzYWdlT3V0Lm1kKQogLSBbQVBJUGxhbk91dF0oZG9jcy9BUElQbGFuT3V0Lm1kKQogLSBbQVBJUGxhblN1YnNjcmlwdGlvbk91dF0oZG9jcy9BUElQbGFuU3Vic2NyaXB0aW9uT3V0Lm1kKQogLSBbQVBJUGxhbnNPdXRdKGRvY3MvQVBJUGxhbnNPdXQubWQpCiAtIFtBUElTZXJ2aWNlT3V0XShkb2NzL0FQSVNlcnZpY2VPdXQubWQpCiAtIFtBUElTZXJ2aWNlc091dF0oZG9jcy9BUElTZXJ2aWNlc091dC5tZCkKIC0gW0FQSVVzYWdlQWdncmVnYXRlZE91dF0oZG9jcy9BUElVc2FnZUFnZ3JlZ2F0ZWRPdXQubWQpCiAtIFtCYXRjaEZpcnN0TGFzdE5hbWVEaWFzcG9yYWVkT3V0XShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZURpYXNwb3JhZWRPdXQubWQpCiAtIFtCYXRjaEZpcnN0TGFzdE5hbWVHZW5kZXJJbl0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVHZW5kZXJJbi5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZUdlbmRlcmVkT3V0XShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZUdlbmRlcmVkT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lR2VvSW5dKGRvY3MvQmF0Y2hGaXJzdExhc3ROYW1lR2VvSW4ubWQpCiAtIFtCYXRjaEZpcnN0TGFzdE5hbWVHZW9aaXBwZWRJbl0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVHZW9aaXBwZWRJbi5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZUluXShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZUluLm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lT3JpZ2luZWRPdXRdKGRvY3MvQmF0Y2hGaXJzdExhc3ROYW1lT3JpZ2luZWRPdXQubWQpCiAtIFtCYXRjaEZpcnN0TGFzdE5hbWVQaG9uZUNvZGVkT3V0XShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZVBob25lQ29kZWRPdXQubWQpCiAtIFtCYXRjaEZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckdlb0luXShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZVBob25lTnVtYmVyR2VvSW4ubWQpCiAtIFtCYXRjaEZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckluXShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZVBob25lTnVtYmVySW4ubWQpCiAtIFtCYXRjaEZpcnN0TGFzdE5hbWVVU1JhY2VFdGhuaWNpdHlPdXRdKGRvY3MvQmF0Y2hGaXJzdExhc3ROYW1lVVNSYWNlRXRobmljaXR5T3V0Lm1kKQogLSBbQmF0Y2hNYXRjaFBlcnNvbmFsRmlyc3RMYXN0TmFtZUluXShkb2NzL0JhdGNoTWF0Y2hQZXJzb25hbEZpcnN0TGFzdE5hbWVJbi5tZCkKIC0gW0JhdGNoTmFtZU1hdGNoQ2FuZGlkYXRlc091dF0oZG9jcy9CYXRjaE5hbWVNYXRjaENhbmRpZGF0ZXNPdXQubWQpCiAtIFtCYXRjaE5hbWVNYXRjaGVkT3V0XShkb2NzL0JhdGNoTmFtZU1hdGNoZWRPdXQubWQpCiAtIFtCYXRjaFBhcnNlZEZ1bGxOYW1lR2VvSW5dKGRvY3MvQmF0Y2hQYXJzZWRGdWxsTmFtZUdlb0luLm1kKQogLSBbQmF0Y2hQYXJzZWRGdWxsTmFtZUluXShkb2NzL0JhdGNoUGFyc2VkRnVsbE5hbWVJbi5tZCkKIC0gW0JhdGNoUGVyc29uYWxOYW1lR2VuZGVyZWRPdXRdKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVHZW5kZXJlZE91dC5tZCkKIC0gW0JhdGNoUGVyc29uYWxOYW1lR2VvSW5dKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVHZW9Jbi5tZCkKIC0gW0JhdGNoUGVyc29uYWxOYW1lR2VvT3V0XShkb2NzL0JhdGNoUGVyc29uYWxOYW1lR2VvT3V0Lm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVJbl0oZG9jcy9CYXRjaFBlcnNvbmFsTmFtZUluLm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVQYXJzZWRPdXRdKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVQYXJzZWRPdXQubWQpCiAtIFtCaWxsaW5nSGlzdG9yeU91dF0oZG9jcy9CaWxsaW5nSGlzdG9yeU91dC5tZCkKIC0gW0JpbGxpbmdJbmZvSW5PdXRdKGRvY3MvQmlsbGluZ0luZm9Jbk91dC5tZCkKIC0gW0NhY2hlTWV0cmljc091dF0oZG9jcy9DYWNoZU1ldHJpY3NPdXQubWQpCiAtIFtDbGFzc2lmaWVyTWV0cmljc091dF0oZG9jcy9DbGFzc2lmaWVyTWV0cmljc091dC5tZCkKIC0gW0N1cnJlbmNpZXNPdXRdKGRvY3MvQ3VycmVuY2llc091dC5tZCkKIC0gW0RlcGxveVVJT3V0XShkb2NzL0RlcGxveVVJT3V0Lm1kKQogLSBbRXhwZWN0ZWRDbGFzc01ldHJpY3NPdXRdKGRvY3MvRXhwZWN0ZWRDbGFzc01ldHJpY3NPdXQubWQpCiAtIFtGZWVkYmFja0xvb3BPdXRdKGRvY3MvRmVlZGJhY2tMb29wT3V0Lm1kKQogLSBbRmlyc3RMYXN0TmFtZURpYXNwb3JhZWRPdXRdKGRvY3MvRmlyc3RMYXN0TmFtZURpYXNwb3JhZWRPdXQubWQpCiAtIFtGaXJzdExhc3ROYW1lR2VuZGVySW5dKGRvY3MvRmlyc3RMYXN0TmFtZUdlbmRlckluLm1kKQogLSBbRmlyc3RMYXN0TmFtZUdlbmRlcmVkT3V0XShkb2NzL0ZpcnN0TGFzdE5hbWVHZW5kZXJlZE91dC5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVHZW9Jbl0oZG9jcy9GaXJzdExhc3ROYW1lR2VvSW4ubWQpCiAtIFtGaXJzdExhc3ROYW1lR2VvWmlwcGVkSW5dKGRvY3MvRmlyc3RMYXN0TmFtZUdlb1ppcHBlZEluLm1kKQogLSBbRmlyc3RMYXN0TmFtZUluXShkb2NzL0ZpcnN0TGFzdE5hbWVJbi5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVPcmlnaW5lZE91dF0oZG9jcy9GaXJzdExhc3ROYW1lT3JpZ2luZWRPdXQubWQpCiAtIFtGaXJzdExhc3ROYW1lT3V0XShkb2NzL0ZpcnN0TGFzdE5hbWVPdXQubWQpCiAtIFtGaXJzdExhc3ROYW1lUGhvbmVDb2RlZE91dF0oZG9jcy9GaXJzdExhc3ROYW1lUGhvbmVDb2RlZE91dC5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckdlb0luXShkb2NzL0ZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckdlb0luLm1kKQogLSBbRmlyc3RMYXN0TmFtZVBob25lTnVtYmVySW5dKGRvY3MvRmlyc3RMYXN0TmFtZVBob25lTnVtYmVySW4ubWQpCiAtIFtGaXJzdExhc3ROYW1lVVNSYWNlRXRobmljaXR5T3V0XShkb2NzL0ZpcnN0TGFzdE5hbWVVU1JhY2VFdGhuaWNpdHlPdXQubWQpCiAtIFtJbmxpbmVPYmplY3RdKGRvY3MvSW5saW5lT2JqZWN0Lm1kKQogLSBbSW52b2ljZUl0ZW1PdXRdKGRvY3MvSW52b2ljZUl0ZW1PdXQubWQpCiAtIFtJbnZvaWNlT3V0XShkb2NzL0ludm9pY2VPdXQubWQpCiAtIFtNYXRjaFBlcnNvbmFsRmlyc3RMYXN0TmFtZUluXShkb2NzL01hdGNoUGVyc29uYWxGaXJzdExhc3ROYW1lSW4ubWQpCiAtIFtOYW1Tb3JDb3VudGVyT3V0XShkb2NzL05hbVNvckNvdW50ZXJPdXQubWQpCiAtIFtOYW1lTWF0Y2hDYW5kaWRhdGVPdXRdKGRvY3MvTmFtZU1hdGNoQ2FuZGlkYXRlT3V0Lm1kKQogLSBbTmFtZU1hdGNoQ2FuZGlkYXRlc091dF0oZG9jcy9OYW1lTWF0Y2hDYW5kaWRhdGVzT3V0Lm1kKQogLSBbTmFtZU1hdGNoZWRPdXRdKGRvY3MvTmFtZU1hdGNoZWRPdXQubWQpCiAtIFtQYXJzZWRGdWxsTmFtZUdlb0luXShkb2NzL1BhcnNlZEZ1bGxOYW1lR2VvSW4ubWQpCiAtIFtQYXJzZWRGdWxsTmFtZUluXShkb2NzL1BhcnNlZEZ1bGxOYW1lSW4ubWQpCiAtIFtQZXJzb25hbE5hbWVHZW5kZXJlZE91dF0oZG9jcy9QZXJzb25hbE5hbWVHZW5kZXJlZE91dC5tZCkKIC0gW1BlcnNvbmFsTmFtZUdlb0luXShkb2NzL1BlcnNvbmFsTmFtZUdlb0luLm1kKQogLSBbUGVyc29uYWxOYW1lR2VvT3V0XShkb2NzL1BlcnNvbmFsTmFtZUdlb091dC5tZCkKIC0gW1BlcnNvbmFsTmFtZUluXShkb2NzL1BlcnNvbmFsTmFtZUluLm1kKQogLSBbUGVyc29uYWxOYW1lUGFyc2VkT3V0XShkb2NzL1BlcnNvbmFsTmFtZVBhcnNlZE91dC5tZCkKIC0gW1JvbWFuaXplZE5hbWVPdXRdKGRvY3MvUm9tYW5pemVkTmFtZU91dC5tZCkKIC0gW1NvZnR3YXJlVmVyc2lvbk91dF0oZG9jcy9Tb2Z0d2FyZVZlcnNpb25PdXQubWQpCiAtIFtTb3VyY2VEZXRhaWxlZE1ldHJpY3NPdXRdKGRvY3MvU291cmNlRGV0YWlsZWRNZXRyaWNzT3V0Lm1kKQogLSBbU291cmNlTWV0cmljc091dF0oZG9jcy9Tb3VyY2VNZXRyaWNzT3V0Lm1kKQogLSBbU3RyaXBlQ2FyZE91dF0oZG9jcy9TdHJpcGVDYXJkT3V0Lm1kKQogLSBbU3RyaXBlQ3VzdG9tZXJPdXRdKGRvY3MvU3RyaXBlQ3VzdG9tZXJPdXQubWQpCiAtIFtTeXN0ZW1NZXRyaWNzT3V0XShkb2NzL1N5c3RlbU1ldHJpY3NPdXQubWQpCiAtIFtVc2VySW5mb091dF0oZG9jcy9Vc2VySW5mb091dC5tZCkKCgojIyBEb2N1bWVudGF0aW9uIGZvciBBdXRob3JpemF0aW9uCgoKIyMjIGFwaV9rZXkKCi0gKipUeXBlKio6IEFQSSBrZXkKLSAqKkFQSSBrZXkgcGFyYW1ldGVyIG5hbWUqKjogWC1BUEktS0VZCi0gKipMb2NhdGlvbioqOiBIVFRQIGhlYWRlcgoKCgojIyBBdXRob3IKCmNvbnRhY3RAbmFtc29yLmNvbQoK readmeEtag: '"2662eb18fb456251adc73e369600b29eda77e51c"' readmeLastModified: Mon, 15 Mar 2021 08:47:25 GMT repositoryId: 168223476 description: >- NamSor API v2 R SDK - classify personal names accurately by gender, country of origin, or ethnicity. created: '2019-01-29T20:28:30Z' updated: '2025-10-06T09:26:42Z' language: R archived: false stars: 12 watchers: 4 forks: 2 owner: namsor logo: https://avatars.githubusercontent.com/u/6951565?v=4 repoEtag: '"6585122e969d20f98cab008ca5c6414eab3fd209183bc17676935225fe8e27f7"' repoLastModified: Mon, 06 Oct 2025 09:26:42 GMT foundInMaster: true category: - Server Implementations - Description Validators id: 10347725bd389e99e9dcfbeb8212e0be - source: openapi3 tags repository: https://github.com/jnig/fastify-flux v3: true id: 2b41fe1fc019c16cbb976ee69aa351e0 repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZsdXhhcGkvZmx1eGFwaSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+CiAgICA8aW1nIHdpZHRoPSIxODAiIHNyYz0iLi9sb2dvLnBuZyIgYWx0PSJGbHV4IGxvZ28iPgogIDwvYT4KPC9wPgo8YnIvPgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9jcmVhdGUtZmFzdGlmeS1mbHV4Ij48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9jcmVhdGUtZmFzdGlmeS1mbHV4LnN2ZyIgYWx0PSJucG0gcGFja2FnZSI+PC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vbm9kZWpzLm9yZy9lbi9hYm91dC9yZWxlYXNlcy8iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL25vZGUvdi9jcmVhdGUtZmFzdGlmeS1mbHV4LnN2ZyIgYWx0PSJub2RlIGNvbXBhdGliaWxpdHkiPjwvYT4KICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLU1JVC1ncmVlbi5zdmciIGFsdD0ibGljZW5zZSIgLz4KICA8aW1nIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL0puaWcvZmFzdGlmeS1mbHV4L2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3QueW1sL2JhZGdlLnN2ZyIgLz4KCjwvcD4KPGJyLz4KCiMgRmx1eEFQSSDimqEKCj4gRGVsaWdodGZ1bCBBUEkgZGV2ZWxvcG1lbnQKCi0g8J+SoSBJbnN0YW50IHNlcnZlciBzdGFydCB3aXRoIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ldmFudy9lc2J1aWxkIiB0YXJnZXQ9Il9ibGFuayI+ZXNidWlsZDwvYT4KLSDwn46vIEF1dG9tYXRpYyByZWxvYWRzIGFuZCBvcHRpb25hbCB0eXBlIGNoZWNraW5nCi0g4pqh77iPIExpZ2h0bmluZyBmYXN0IGh0dHAgcmVxdWVzdHMgd2l0aCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmFzdGlmeS9mYXN0aWZ5IiB0YXJnZXQ9Il9ibGFuayI+ZmFzdGlmeTwvYT4KLSDwn5ug77iPIEUyRSB0ZXN0cyB3aXRoIFtqZXN0XShodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svamVzdCkKLSDwn5OmIE9wZW5BUEkgdjMKLSDwn5SLIEJhdHRlcmllcyBpbmNsdWRlZDogQSB0eXBlZCBjbGllbnQgU0RLIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIHdpdGggPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FjYWNvZGUvc3dhZ2dlci10eXBlc2NyaXB0LWFwaSIgdGFyZ2V0PSJfYmxhbmsiPnN3YWdnZXItdHlwZXNjcmlwdC1hcGk8L2E+CgpGbHV4QVBJIGlzIGEgbmV3IEFQSSBidWlsZCB0b29sIHRoYXQgc2lnbmlmaWNhbnRseSBpbXByb3ZlcyB0aGUgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZS4gVHlwZXNjcmlwdCBpbnRlcmZhY2VzIGFyZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCBpbnRvIEpTT04gc2NoZW1hLgoKIyMgUXVpY2tzdGFydAoKYGBgc2gKbnB4IGNyZWF0ZS1mYXN0aWZ5LWZsdXhAbGF0ZXN0CmBgYAoKUnVuIHRoZSBjb21tYW5kIGFuZCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucy4gQWZ0ZXJ3YXJkcyB5b3Ugd2lsbCBoYXZlIGFuIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBhdCBodHRwOi8vbG9jYWxob3N0OjgwODAvIGFuZCBhIGNsaWVudCBTREsgZ2VuZXJhdGVkIGluIHRoZSBmaWxlIGBHZW5lcmF0ZWRBcGkudHNgLgoKIyMgTW90aXZhdGlvbgoKVGhlcmUgYXJlIGdyZWF0IE5vZGUuanMgZnJhbWV3b3JrcyBmb3IgYnVpbGRpbmcgQVBJcyB3aXRoIGRlY29yYXRvcnMuIEhvd2V2ZXIgdXNpbmcgdGhvc2UgY2FuIGdldCB2ZXJ5IHZlcmJvc2UuIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKCmBgYHRzCmV4cG9ydCBjbGFzcyBVcGRhdGVUb2RvRHRvIHsKICBASXNJbnQoKQogIHJlYWRvbmx5IGlkOiBudW1iZXI7CgogIEBJc1N0cmluZygpCiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nOwp9CgpAUG9zdCgnLzppZCcpCkBBcGlSZXNwb25zZSh7CiAgdHlwZTogVG9kbywKfSkKYXN5bmMgdXBkYXRlKEBQYXJhbSgnaWQnKSBpZDogbnVtYmVyLCBAQm9keSgpIGJvZHk6IFVwZGF0ZVRvZG9EdG8pOiBQcm9taXNlPFRvZG8+IHsKICAvLyBpbXBsZW1lbnRhdGlvbgp9CmBgYAoKVGhlIHBhcmFtZXRlciBkZWNvcmF0b3JzIG1ha2UgdGhlIGV4YW1wbGUgc2xpZ2h0bHkgaGFyZCB0byByZWFkLiBUaGUgQEFwaVJlc3BvbnNlIHR5cGUgaXMgcmVkdW5kYW50IHdpdGggZnVuY3Rpb24gcmV0dXJuIHR5cGUgYFByb21pc2U8VG9kbz5gLgoKV2l0aCBGbHV4QVBJIHRoZSBzYW1lIGNhbiBiZSBhY2hpZXZlZCB3aXRoIHRoZSBmb2xsb3dpbmc6CgpgYGB0cwppbnRlcmZhY2UgVXBkYXRlVG9kbyB7CiAgaWQgbnVtYmVyOwogIG5hbWU6IHN0cmluZzsKfQoKQFBvc3QoJy86aWQnKQphc3luYyB1cGRhdGUoaWQ6IG51bWJlciwgYm9keTogVXBkYXRlVG9kbyk6IFByb21pc2U8VG9kbz4gewogIC8vIGltcGxlbWVudGF0aW9uCn0KYGBgCgpUaGUgaWQgcGFyYW1ldGVyIGlzIG1hdGNoZWQgd2l0aCB0aGUgcGF0aCBgLzppZGAgYW5kIHRoZSBib2R5IGlzIHByb3ZpZGVkIHRvIHRoZSBwYXJhbXRlciBuYW1lZCBib2R5LiBUaGUgZnVuY3Rpb24gcmV0dXJuIHR5cGUgaXMgY29udmVydGVkIGludG8gYW4gT3BlbkFwaSByZXNwb25zZS4KCkFub3RoZXIgYWR2YW50YWdlIGlzIHRoYXQgeW91IGNhbiBsZXZlcmFnZSB0aGUgaW50ZXJmYWNlcyB3aGljaCBhcmUgcHJvdmlkZWQgYnkgYSBkYXRhYmFzZSBmcmFtZXdvcmsgZS5nLiBwcmlzbWEsIGJlY2F1c2UgaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIGNyZWF0ZSBhIER0byBjbGFzcy4KCiMjIFVzYWdlCgpUaGUgZm9sbG93aW5nIGNvZGUgc25pcHBldHMgYXJlIG9ubHkgcHJvdmlkZWQgYXMgZXhhbXBsZS4gSXQncyBiZXN0IHRvIHN0YXJ0IGEgbmV3IHByb2plY3QgdmlhCmBucG0gY3JlYXRlIGZsdXhgLgoKIyMjIERlZmluZSBhIGNvbnRyb2xsZXIKCmBUb2RvLmNvbnRyb2xsZXIudHNgCgpgYGB0cwppbXBvcnQgeyBDb250cm9sbGVyLCBEZWxldGUsIEdldCwgUG9zdCwgUHV0LCBTdGF0dXMgfSBmcm9tICdAZmx1eGFwaS9jb21tb24nOwppbXBvcnQgewogIENyZWF0ZVRvZG8sCiAgTGlzdFRvZG9RdWVyeSwKICBUb2RvUmVzcG9uc2UsCiAgVXBkYXRlVG9kbywKfSBmcm9tICcuL1RvZG8uc2NoZW1hJzsKCkBDb250cm9sbGVyKCcvdG9kb3MnLCB7IHRhZ3M6IFsndG9kb3MnXSB9KQpleHBvcnQgY2xhc3MgVG9kb0NvbnRyb2xsZXIgewogIEBHZXQoKQogIGFzeW5jIGxpc3QocXVlcnk6IExpc3RUb2RvUXVlcnkpOiBQcm9taXNlPFRvZG9SZXNwb25zZVtdPiB7CiAgICAvLyBpbXBsZW1lbnRhdGlvbgogIH0KCiAgQFBvc3QoKQogIGFzeW5jIGNyZWF0ZShib2R5OiBDcmVhdGVUb2RvKTogUHJvbWlzZTxUb2RvUmVzcG9uc2U+IHsKICAgIC8vIGltcGxlbWVudGF0aW9uCiAgfQoKICBAR2V0KCcvOmlkJykKICBhc3luYyBnZXQoaWQ6IG51bWJlcik6IFByb21pc2U8VG9kb1Jlc3BvbnNlPiB7CiAgICAvLyBpbXBsZW1lbnRhdGlvbgogIH0KCiAgQFB1dCgnLzppZCcpCiAgYXN5bmMgdXBkYXRlKGlkOiBudW1iZXIsIGJvZHk6IFVwZGF0ZVRvZG8pOiBQcm9taXNlPFRvZG9SZXNwb25zZT4gewogICAgLy8gaW1wbGVtZW50YXRpb24KICB9CgogIEBEZWxldGUoJy86aWQnKQogIEBTdGF0dXMoMjA0KQogIGFzeW5jIHJlbW92ZShpZDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7CiAgICAvLyBpbXBsZW1lbnRhdGlvbgogIH0KfQpgYGAKCiMjIyBEZWZpbmUgdGhlIHNjaGVtYQoKU2NoZW1hIGZpbGVzIG11c3QgZW5kIHdpdGggYHNjaGVtYS50c2AKCmBUb2RvLnNjaGVtYS50c2AKCmBgYHRzCmludGVyZmFjZSBUb2RvIHsKICBpZCBudW1iZXI7CiAgbmFtZTogc3RyaW5nOwogIGRvbmU6IGJvb2xlYW47Cn0KCmV4cG9ydCBpbnRlcmZhY2UgVG9kb1Jlc3BvbnNlIGV4dGVuZHMgVG9kbyB7fQoKZXhwb3J0IGludGVyZmFjZSBDcmVhdGVUb2RvIGV4dGVuZHMgT21pdDxUb2RvUmVzcG9uc2UsICdpZCc+IHt9CgpleHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVRvZG8gZXh0ZW5kcyBQYXJ0aWFsPE9taXQ8VG9kb1Jlc3BvbnNlLCAnaWQnPj4ge30KCmV4cG9ydCBpbnRlcmZhY2UgTGlzdFRvZG9RdWVyeSB7CiAgaW5jbHVkZURvbmU/OiBib29sZWFuOwp9CgpgYGAKCiMjIyBDcmVhdGUgdGhlIHNlcnZlcgoKYGluZGV4LnRzYAoKYGBgdHMKaW1wb3J0IEZhc3RpZnkgZnJvbSAnZmFzdGlmeSc7CmltcG9ydCB7IEZsdXhDb250cm9sbGVyLCBGbHV4T3BlbmFwaSB9IGZyb20gJ2Zhc3RpZnktZmx1eCc7CmltcG9ydCB7IFRvZG9Db250cm9sbGVyIH0gZnJvbSAnfi9Ub2RvLmNvbnRyb2xsZXInOwoKY29uc3QgZmFzdGlmeSA9IEZhc3RpZnkoKTsKCmZhc3RpZnkucmVnaXN0ZXIoRmx1eE9wZW5hcGkpOwpmYXN0aWZ5LnJlZ2lzdGVyKEZsdXhDb250cm9sbGVyLCB7CiAgY29udHJvbGxlcnM6IFtUb2RvQ29udHJvbGxlcl0sCn0pOwoKZmFzdGlmeS5saXN0ZW4oODA4MCwgJzEyNy4wLjAuMScsIChlcnIsIGFkZHJlc3MpID0+IHsKICBjb25zb2xlLmxvZyhgU2VydmVyIGxpc3RlbmluZyBhdCAke2FkZHJlc3N9YCk7Cn0pOwpgYGAKCiMjIEZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zCgo8ZGV0YWlscz4KICA8c3VtbWFyeT5Ib3cgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIEpTT04gU2NoZW1hIHByb3BlcnRpZXM/PC9zdW1tYXJ5PgoKWW91IGNhbiB1c2UgSlNEb2MgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIEpTT04gU2NoZW1hIHByb3BlcnRpZXMuIFlvdSBjYW4gYWxzbyBmaW5kIG1vcmUgZXhhbXBsZXMgaW4gdGhlIFt0cy1qc29uLXNjaGVtYS1nZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS92ZWdhL3RzLWpzb24tc2NoZW1hLWdlbmVyYXRvcikgcmVwb3NpdG9yeS4KCmBgYHRzCi8qKgogKiBAdGl0bGUgU29tZSB0aXRsZSBoZXJlCiAqIEBkZXNjcmlwdGlvbiBTb21lIGRlc2NyaXB0aW9uIGhlcmUKICovCmV4cG9ydCBpbnRlcmZhY2UgTXlPYmplY3QgewogIC8qKgogICAqIEBkZXNjcmlwdGlvbiBFeHBvcnQgZmllbGQgZGVzY3JpcHRpb24KICAgKiBAZGVmYXVsdCAnZm9vYmFyJwogICAqLwogIG5hbWU6IHN0cmluZzsKfQpgYGAKCjwvZGV0YWlscz4KCjxkZXRhaWxzPgogIDxzdW1tYXJ5PkhvdyB0byBjb25maWd1cmUgdGhlIE9wZW5BUEkgZG9jdW1lbnRhdGlvbj88L3N1bW1hcnk+CgpUaGUgb3BlbmFwaSBmdW5jdGlvbiBhY2NlcHRzIGFsbCBvcHRpb25zIGZyb20gW2Zhc3RpZnktc3dhZ2dlcl0oaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RpZnkvZmFzdGlmeS1zd2FnZ2VyKS4KCmBgYHRzCmZhc3RpZnkucmVnaXN0ZXIoRmx1eE9wZW5hcGksIHsKICByb3V0ZVByZWZpeDogJy9kb2N1bWVudGF0aW9uJywKICBzd2FnZ2VyOiB7CiAgICBpbmZvOiB7CiAgICAgIHRpdGxlOiAnVGVzdCBzd2FnZ2VyJywKICAgICAgZGVzY3JpcHRpb246ICdUZXN0aW5nIHRoZSBGYXN0aWZ5IHN3YWdnZXIgQVBJJywKICAgICAgdmVyc2lvbjogJzAuMS4wJywKICAgIH0sCiAgfSwKfSk7CmBgYAoKPC9kZXRhaWxzPgoKPGRldGFpbHM+CiAgPHN1bW1hcnk+V2hpY2ggZnVuY3Rpb24gcGFyYW1ldGVycyBhcmUgbWFwcGVkIGFuZCBob3cgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIG1hcHBpbmdzPzwvc3VtbWFyeT4KCk1hcHBpbmdzIGNhbiBiZSBwcm92aWRlZCBieSBwYXJhbWV0ZXIgYG5hbWVgIG9yIGB0eXBlYC4gVGhlIGZvbGxvd2luZyBtYXBwaW5ncyBhcmUgcHJvdmlkZWQgYnkgZGVmYXVsdCBhbmQgY2FuIGJlIGV4dGVuZGVkLgoKYGBgdHMKY29uc3QgZmFzdGlmeSA9IGZsdXgoewogIG1hcHBpbmc6IFsKICAgIHsKICAgICAgbmFtZTogJ3F1ZXJ5JywKICAgICAgbWFwcGVyKHsgcmVxdWVzdCB9KSB7CiAgICAgICAgcmV0dXJuIHJlcXVlc3QucXVlcnk7CiAgICAgIH0sCiAgICB9LAogICAgewogICAgICBuYW1lOiAnYm9keScsCiAgICAgIG1hcHBlcih7IHJlcXVlc3QgfSkgewogICAgICAgIHJldHVybiByZXF1ZXN0LmJvZHk7CiAgICAgIH0sCiAgICB9LAogICAgewogICAgICB0eXBlOiAnRmFzdGlmeVJlcGx5JywKICAgICAgbWFwcGVyKHsgcmVwbHkgfSkgewogICAgICAgIHJldHVybiByZXBseTsKICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgIHR5cGU6ICdGYXN0aWZ5UmVxdWVzdCcsCiAgICAgIG1hcHBlcih7IHJlcXVlc3QgfSkgewogICAgICAgIHJldHVybiByZXF1ZXN0OwogICAgICB9LAogICAgfSwKICBdLAp9KTsKYGBgCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KICA8c3VtbWFyeT5Ib3cgY2FuIEkgYWRkIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIHRvIHRoZSBBUEk/PC9zdW1tYXJ5PgoKRm9yIGF1dGhlbnRpY2F0aW9uIGZhc3RpZnkgaG9va3MgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdXNlciBieSBhIFRva2VuLCBKV1Qgb3IgYW55aGluZyBlbHNlLgoKVGhlIGBAQXV0aGAgZGVjb3JhdG9yIGNhbiBiZSB1c2VkIHRvIGFkZCB2YWx1ZXMgbGlrZSByb2xlcyBvciBwZXJtaXNzaW9ucyB0byBhbiBlbmRwb2ludC4gVmlhIGByZXBseS5jb250ZXh0LmNvbmZpZy5hdXRoYCB0aGUgYWRkZWQgdmFsdWUgY2FuIGJlIHVzZWQgaW4gZmFzdGlmeSBob29rcy4KCmBgYHRzCkBQb3N0KCkKQEF1dGgoJ2FkbWluJykKYXN5bmMgY3JlYXRlKGJvZHk6IENyZWF0ZVRvZG8pOiBQcm9taXNlPFRvZG9SZXNwb25zZT4gewp9CmBgYAoKYGBgdHMKZmFzdGlmeS5hZGRIb29rKCdvblJlcXVlc3QnLCBhc3luYyAocmVxdWVzdCwgcmVwbHkpID0+IHsKICBjb25zdCB7IGF1dGggfSA9IHJlcGx5LmNvbnRleHQuY29uZmlnOwogIGlmICghcmVxdWVzdC51c2VyLnJvbGVzLmluY2x1ZGVzKGF1dGgpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoKTsKICB9Cn0pOwpgYGAKCjwvZGV0YWlscz4KCiMjIEFsdGVybmF0aXZlcyB0byBjb25zaWRlcgoKVGhlIGZvbGxvd2luZyBmcmFtZXdvcmtzIHdlcmUgdXNlZCBhcyBpbnNwaXJhdGlvbi4KCltOZXN0SlNdKGh0dHBzOi8vZ2l0aHViLmNvbS9uZXN0anMvbmVzdCksIFtUcy5FRF0oaHR0cHM6Ly9naXRodWIuY29tL3RzZWRpby90c2VkKSwgW3Rzb2FdKGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlYXV0cnkvdHNvYSkK readmeEtag: '"2040d508a5097a4618112bdc03bf93188fd3d07d"' readmeLastModified: Sat, 17 Aug 2024 02:07:38 GMT repositoryId: 439055297 description: >- Delightful API development: Focused on developer experience and performance. created: '2021-12-16T16:23:45Z' updated: '2025-11-21T08:43:31Z' language: TypeScript archived: false stars: 11 watchers: 1 forks: 1 owner: Jnig logo: https://avatars.githubusercontent.com/u/3729585?v=4 license: MIT repoEtag: '"51f2e1c135cf08c5572c7e70bb42a921809a3c9fd858a0e71987d5e1e25e4167"' repoLastModified: Fri, 21 Nov 2025 08:43:31 GMT category: - Data Validators - Parsers foundInMaster: true oldLocations: - https://github.com/fluxapi/fluxapi - source: openapi3 tags repository: https://github.com/entrepreneur-interet-general/open_api_schemas_to_markdown v3: true repositoryMetadata: base64Readme: >- WyFbU29mdHdhcmUgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLU1JVC1vcmFuZ2Uuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9naXRodWIuY29tL2VudHJlcHJlbmV1ci1pbnRlcmV0LWdlbmVyYWwvb3Blbl9hcGlfc2NoZW1hc190b19tYXJrZG93bi9ibG9iL21hc3Rlci9MSUNFTlNFLm1kKQohW0NpcmNsZUNJXShodHRwczovL2ltZy5zaGllbGRzLmlvL2NpcmNsZWNpL3Byb2plY3QvZ2l0aHViL2VudHJlcHJlbmV1ci1pbnRlcmV0LWdlbmVyYWwvb3Blbl9hcGlfc2NoZW1hc190b19tYXJrZG93bi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpCiFbUHlQSV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL29wZW5fYXBpX3NjaGVtYXNfdG9fbWFya2Rvd24uc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKQoKCiMgT3BlbkFQSSBDb21wb25lbnRzIFNjaGVtYXMgdG8gTWFya2Rvd24KVGhlIGdvYWwgb2YgdGhpcyBwYWNrYWdlIGlzIHRvIGdlbmVyYXRlIFtHaXRodWIgRmxhdm9yZWQgTWFya2Rvd25dKGh0dHBzOi8vZ2l0aHViLmdpdGh1Yi5jb20vZ2ZtLykgZG9jdW1lbnRhdGlvbiBvZiBDb21wb25lbnRzIFNjaGVtYXMgZnJvbSB0aGUgW09wZW5BUEkgMyBzcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikuCgpTYXkgeW91J3ZlIGdvdCBhIFlBTUwgZmlsZToKYGBgeW1sCm9wZW5hcGk6ICIzLjAuMCIKaW5mbzoKICB2ZXJzaW9uOiAiMCIKICB0aXRsZTogRGVtbwpwYXRoczoKICAvZGVtbzoKICAgIGdldDoKICAgICAgc3VtbWFyeTogRGVtbwogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogT0sKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgUmVzdWx0YXRIdW1haW46CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgb3BlcmF0aW9uX2lkOgogICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgZm9ybWF0OiBpbnQ2NAogICAgICAgICAgZGVzY3JpcHRpb246IExlIG51bcOpcm8gdW5pcXVlIGRlIGwnb3DDqXJhdGlvbgogICAgICAgICAgZXhhbXBsZTogMTExOTkyMDM3MQogICAgICAgIGNhdGVnb3JpZV9wZXJzb25uZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZGVzY3JpcHRpb246IEluZGlxdWUgbGEgY2F0w6lnb3JpZSBkZSBwZXJzb25uZSBpbXBsaXF1w6llIGRhbnMgbGUgYmlsYW4gaHVtYWluCiAgICAgICAgICBleGFtcGxlOiBQw6pjaGV1ciBmcmFuw6dhaXMKICAgICAgICByZXN1bHRhdF9odW1haW46CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGRlc2NyaXB0aW9uOiBEZXNjcmlwdGlvbiBkdSBiaWxhbiBodW1haW4KICAgICAgICAgIGV4YW1wbGU6IFBlcnNvbm5lIHNlY291cnVlCiAgICAgICAgbm9tYnJlOgogICAgICAgICAgdHlwZTogbnVtYmVyCiAgICAgICAgICBmb3JtYXQ6IGludDMyCiAgICAgICAgICBtaW5pbXVtOiAwCiAgICAgICAgICBkZXNjcmlwdGlvbjogTm9tYnJlIGRlIHBlcnNvbm5lcyBpbXBsaXF1w6llcyBkYW5zIGNlIGJpbGFuCiAgICAgICAgICBleGFtcGxlOiAzCiAgICAgICAgZG9udF9ub21icmVfYmxlc3NlOgogICAgICAgICAgdHlwZTogbnVtYmVyCiAgICAgICAgICBmb3JtYXQ6IGludDMyCiAgICAgICAgICBtaW5pbXVtOiAwCiAgICAgICAgICBkZXNjcmlwdGlvbjogSW5kaXF1ZSBsZSBub21icmUgZGUgcGVyc29ubmVzIGJsZXNzw6llcyBkYW5zIGxlIGJpbGFuCiAgICAgICAgICBleGFtcGxlOiAxCgpgYGAKClRoZSBwYWNrYWdlIHdpbGwgcHJvZHVjZSBhIE1hcmtkb3duIGZpbGUgZnJvbSB0aGUgWUFNTCBzcGVjaWZpY2F0aW9uIGZpbGUgd2l0aCB0aGUgZm9sbG93aW5nIGNvbnRlbnQ6CmBgYG1hcmtkb3duCiMjIFJlc3VsdGF0SHVtYWluCnxGaWVsZHxUeXBlfERlc2NyaXB0aW9ufEV4YW1wbGV8UHJvcGVydGllc3wKfC0tLXwtLS18LS0tfC0tLXwtLS18CnxvcGVyYXRpb25faWR8aW50ZWdlcigkaW50NjQpfExlIG51bcOpcm8gdW5pcXVlIGRlIGwnb3DDqXJhdGlvbnwxMTE5OTIwMzcxfHwKfGNhdGVnb3JpZV9wZXJzb25uZXxzdHJpbmd8SW5kaXF1ZSBsYSBjYXTDqWdvcmllIGRlIHBlcnNvbm5lIGltcGxpcXXDqWUgZGFucyBsZSBiaWxhbiBodW1haW58UMOqY2hldXIgZnJhbsOnYWlzfHwKfHJlc3VsdGF0X2h1bWFpbnxzdHJpbmd8RGVzY3JpcHRpb24gZHUgYmlsYW4gaHVtYWlufFBlcnNvbm5lIHNlY291cnVlfHwKfG5vbWJyZXxudW1iZXIoJGludDMyKXxOb21icmUgZGUgcGVyc29ubmVzIGltcGxpcXXDqWVzIGRhbnMgY2UgYmlsYW58M3xtaW5pbXVtOiAwfAp8ZG9udF9ub21icmVfYmxlc3NlfG51bWJlcigkaW50MzIpfEluZGlxdWUgbGUgbm9tYnJlIGRlIHBlcnNvbm5lcyBibGVzc8OpZXMgZGFucyBsZSBiaWxhbnwxfG1pbmltdW06IDB8CmBgYAoKQW5kIGlmIHlvdSByZW5kZXIgaXQ6CiMjIFJlc3VsdGF0SHVtYWluCnxGaWVsZHxUeXBlfERlc2NyaXB0aW9ufEV4YW1wbGV8UHJvcGVydGllc3wKfC0tLXwtLS18LS0tfC0tLXwtLS18CnxvcGVyYXRpb25faWR8aW50ZWdlcigkaW50NjQpfExlIG51bcOpcm8gdW5pcXVlIGRlIGwnb3DDqXJhdGlvbnwxMTE5OTIwMzcxfHwKfGNhdGVnb3JpZV9wZXJzb25uZXxzdHJpbmd8SW5kaXF1ZSBsYSBjYXTDqWdvcmllIGRlIHBlcnNvbm5lIGltcGxpcXXDqWUgZGFucyBsZSBiaWxhbiBodW1haW58UMOqY2hldXIgZnJhbsOnYWlzfHwKfHJlc3VsdGF0X2h1bWFpbnxzdHJpbmd8RGVzY3JpcHRpb24gZHUgYmlsYW4gaHVtYWlufFBlcnNvbm5lIHNlY291cnVlfHwKfG5vbWJyZXxudW1iZXIoJGludDMyKXxOb21icmUgZGUgcGVyc29ubmVzIGltcGxpcXXDqWVzIGRhbnMgY2UgYmlsYW58M3xtaW5pbXVtOiAwfAp8ZG9udF9ub21icmVfYmxlc3NlfG51bWJlcigkaW50MzIpfEluZGlxdWUgbGUgbm9tYnJlIGRlIHBlcnNvbm5lcyBibGVzc8OpZXMgZGFucyBsZSBiaWxhbnwxfG1pbmltdW06IDB8CgojIyBJbnN0YWxsYXRpb24KYGBgCnBpcCBpbnN0YWxsIG9wZW4tYXBpLXNjaGVtYXMtdG8tbWFya2Rvd24KYGBgCgojIyBVc2FnZQpUaGUgcGFja2FnZSBwcm92aWRlcyBhIGNvbW1hbmQgbGluZSB0b29sLgpgYGAKJCBvYS10by1tZCAtaAp1c2FnZTogb2EtdG8tbWQgWy1oXSBpbnB1dF9maWxlcGF0aCBvdXRwdXRfZmlsZXBhdGggW2xvY2FsZV0KCnBvc2l0aW9uYWwgYXJndW1lbnRzOgogIGlucHV0X2ZpbGVwYXRoICAgVGhlIE9wZW5BUEkgMyBZQU1MIGZpbGVwYXRoCiAgb3V0cHV0X2ZpbGVwYXRoICBUaGUgZGVzaXJlZCBvdXRwdXQgZmlsZXBhdGggb2YgdGhlIE1hcmtkb3duIGZpbGUKICBsb2NhbGUgICAgICAgICAgIExvY2FsZSB0byB1c2Ugd2hlbiBnZW5lcmF0aW5nIHRoZSBNYXJrZG93biBmaWxlLiBBdmFpbGFibGU6CiAgICAgICAgICAgICAgICAgICBlbiwgZnIKCm9wdGlvbmFsIGFyZ3VtZW50czoKICAtaCwgLS1oZWxwICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKYGBgCgpFeGFtcGxlOgpgYGAKb2EtdG8tbWQgb3Blbl9hcGkueW1sIGRvY3VtZW50YXRpb24ubWQKYGBgCgojIyBOb3RpY2UKVGhpcyBzb2Z0d2FyZSBpcyBhdmFpbGFibGUgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGFuZCB3YXMgZGV2ZWxvcGVkIGFzIHBhcnQgb2YgdGhlIFtFbnRyZXByZW5ldXIgZCdJbnTDqXLDqnQgR8OpbsOpcmFsIHByb2dyYW1dKGh0dHBzOi8vZW50cmVwcmVuZXVyLWludGVyZXQtZ2VuZXJhbC5ldGFsYWIuZ291di5mcikgYnkgdGhlIEZyZW5jaCBnb3Zlcm5tZW50LgoKUHJvamV0IGTDqXZlbG9wcMOpIGRhbnMgbGUgY2FkcmUgZHUgcHJvZ3JhbW1lIMKrIFtFbnRyZXByZW5ldXIgZOKAmWludMOpcsOqdCBnw6luw6lyYWxdKGh0dHBzOi8vZW50cmVwcmVuZXVyLWludGVyZXQtZ2VuZXJhbC5ldGFsYWIuZ291di5mcikgwrsuCg== readmeEtag: '"481c87507a13293778520645ced4918c19cd0a36"' readmeLastModified: Wed, 03 Oct 2018 11:27:27 GMT repositoryId: 130189009 description: Generate Markdown documentation from OpenAPI 3 Components Schemas created: '2018-04-19T09:07:13Z' updated: '2025-07-01T15:45:32Z' language: Python archived: false stars: 14 watchers: 13 forks: 1 owner: entrepreneur-interet-general logo: https://avatars.githubusercontent.com/u/25084749?v=4 license: MIT repoEtag: '"8988bd551c7d73ae3f3e7297035f47c2e977b4088a157cf310db3297965b8db9"' repoLastModified: Tue, 01 Jul 2025 15:45:32 GMT foundInMaster: true category: Parsers id: 7cdbea5c957437085535437b028e8fa2 - source: openapi3 tags repository: https://github.com/amishfaldu/swagger-docs v3: true id: 634e51a90d74b30e957b1b9220cc414b repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIERvY3MKClRoaXMgbGlicmFyeSBoZWxwcyB5b3UgdG8gYnVpbGQgc3dhZ2dlciBhcGkgZG9jcyBoYXNzbGUgZnJlZSBieSB1c2luZyBkZWNvcmF0b3JzLCByZWZsZWN0IG1ldGFkYXRhIGFwaS4KCiMjIERvY3VtZW50YXRpb24KCkZvciBtb3JlIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gbGlicmFyeSB1c2FnZSBhbmQgYXBpIHJlZmVyZW5jZXMsIGhlYWQgb3ZlciB0byBwcm9qZWN0J3MgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9BbWlzaEZhbGR1L3N3YWdnZXItZG9jcy93aWtpKS4KClRvIGZpbmQgYW5zd2VycyBmb3IgeW91ciBxdWVzdGlvbiwgYXNrIHF1ZXN0aW9ucywgYWRkIHN1Z2dlc3Rpb25zIG9yIGlkZWFzIHRvIGltcHJvdmUgdGhpcyBwcm9qZWN0LCBlbmdhZ2UgaW4gZ2VuZXJhbCBkaXNjdXNzaW9uIGhlYWQgb3ZlciB0byBwcm9qZWN0J3MgW2Rpc2N1c3Npb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9BbWlzaEZhbGR1L3N3YWdnZXItZG9jcy9kaXNjdXNzaW9ucykuCgojIyBDdXJyZW50IHN0YXRlIC8gcHJvYmxlbXMgZmFjZWQKClRvIHdyaXRlIHN3YWdnZXIgYXBpIGRvY3MgZm9yIHdlYiBhcHBzIGRldmVsb3BlZCB1c2luZyBub2RlLmpzIHdpdGhvdXQgdXNlIG9mIGZyYW1ld29ya3MgbGlrZSBuZXN0LmpzLCB5b3Ugd2lsbCBuZWVkIHRvIHdyaXRlIGFubm90YXRlZCBqc2RvYyBhbmQgc2Nyb2xsIHRob3VnaCBjb25mdXNpbmcgc3dhZ2dlciBkb2N1bWVudGF0aW9uIHRvIGZpbmQgcmlnaHQgc3BlY2lmaWNhdGlvbiBzeW50YXggZm9yIGFwaSByb3V0ZXMuCgojIyBQcm9ibGVtcyBzb2x2ZWQKCldoYXQgeW91IGFjaGVpdmUgYnkgdXNpbmcgdGhpcyBsaWJyYXJ5CgoxLiBRdWljayBzd2FnZ2VyIGFwaSBkb2NzLiA6d2hpdGVfY2hlY2tfbWFyazoKCjIuIEF1dG8tZ2VuZXJhdGUgYXBpIGRvY3MgZm9yIHRoZSByb3V0ZXMgeW91IHdyaXRlIGFuZCBhdHRhY2ggdG8gd2ViIGZyYW1ld29ya3MuIDp3aGl0ZV9jaGVja19tYXJrOgoKMy4gQ2hhbmdlcyBtYWRlIHRvIGFwaSBhbHNvIHJlZmxlY3RzIGluIHN3YWdnZXIgYXBpIGRvY3Mgd2l0aG91dCBtb2RpZnlpbmcgZnJ1c3RyYXRpbmcgZG9jIGNvZGUuIDp3aGl0ZV9jaGVja19tYXJrOgoKNC4gQXV0by1kZXRlY3QgcGFyYW1ldGVycywgYXV0aGVudGljYXRpb24sIHJlcXVlc3QgYm9keSwgcmVzcG9uc2UgYm9keSBmcm9tIHRoZSBhcGkgcm91dGVzIGRlZmluZWQuIDp3aGl0ZV9jaGVja19tYXJrOgoKNS4gTWluaW1hbCBkZXBlbmRlbmN5IGxpYnJhcnkgZm9yIGdlbmVyYXRpbmcgc3dhZ2dlciBhcGkgZG9jcy4gOndoaXRlX2NoZWNrX21hcms6CgojIyBJbXBsZW1lbnRhdGlvbgoKVGhpcyBsaWJyYXJ5IGltcGxlbWVudHMgZGVjb3JhdG9ycyBmb3IgZGVmaW5pbmcgYXBpIHJvdXRlcywgcmVsZWN0IG1ldGFkYXRhIGFwaXMgdG8gZ2VuZXJhdGUgc3dhZ2dlciBhcGkgZG9jcwoKIyMgUmVmZXJlbmNlcwoKRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gZGVjb3JhdG9ycywgbWV0YWRhdGEgYW5kIHJlZmxlY3Rpb24KCjEuIFtEZWNvcmF0b3JzICYgbWV0YWRhdGEgcmVmbGVjdGlvbiBpbiBUeXBlc2NyaXB0XShodHRwOi8vYmxvZy53b2xrc29mdHdhcmUuY29tL2RlY29yYXRvcnMtcmVmbGVjdGlvbi1qYXZhc2NyaXB0LXR5cGVzY3JpcHQpCg== readmeEtag: '"27f6347e83ce936caa691cb0edefe219a840717e"' readmeLastModified: Sun, 11 Feb 2024 07:11:00 GMT repositoryId: 528825705 description: A node.js package used to build swagger docs hassle free created: '2022-08-25T11:45:33Z' updated: '2025-08-11T20:59:09Z' language: TypeScript archived: false stars: 13 watchers: 1 forks: 0 owner: AmishFaldu logo: https://avatars.githubusercontent.com/u/46478801?v=4 license: Apache-2.0 repoEtag: '"b7e2453dbfb5699b0fdfe13319ab72d47416293106d8a138706c5616fe2ea318"' repoLastModified: Mon, 11 Aug 2025 20:59:09 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/foxel/openapi3-typescript-codegen v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpMy10eXBlc2NyaXB0LWNvZGVnZW4KClR5cGVTY3JpcHQgY29kZSBnZW5lcmF0b3IgZm9yIE9wZW5BUEkgMy4wLjAKCkluc3BpcmVkIGJ5IHByb2JsZW1zIHdpdGggW29wZW5hcGktY29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL01lcm1hZGUvb3BlbmFwaS1jb2RlZ2VuKQoKSWRlYSBpcyB0byBwcm92aWRlIG5hdGl2ZSBPcGVuQVBJIDMgZ2VuZXJhdG9yIHdpdGggYWxsIGxhbmd1YWdlLXNwZWNpZmljIGNvZGUgYmVpbmcgcHV0IGludG8gdGVtcGxhdGVzIHdpdGggaGVscCBvZiBnZW5lcmljIGhlbHBlcnMuCgpDdXJyZW50bHkgb25seSBUeXBlU2NyaXB0IGxhbmd1YWdlIGFuZCBBbmd1bGFyIGZyYW1ld29ya3MgYXJlIHN1cHBvcnRlZC4KCioqV29yayBpbiBwcm9ncmVzcyoqCgojIyBVc2FnZQoKIyMjIEluc3RhbGxpbmcKCmBucG0gaSAtZyBvcGVuYXBpMy10eXBlc2NyaXB0LWNvZGVnZW5gCgojIyMgQ0xJCgpgYGAKb3AzLWNvZGVnZW4ge29wZW5hcGktZGVmaW5pdGlvbi55YW1sfSBbb3B0aW9uc10KCk9wdGlvbnM6CiAgLW8sIC0tb3V0cHV0ICAgICBTcGVjaWZ5IG91dHB1dCBkaXJlY3RvcnkgICAgICAgICBbc3RyaW5nXSBbZGVmYXVsdDogIi4vb3V0LyJdCiAgLXQsIC0tdGVtcGxhdGVzICBTcGVjaWZ5IHRlbXBsYXRlcyBkaXJlY3RvcnkgKHBybyBvbmx5KSAgICAgICAgICAgICAgIFtzdHJpbmddCmBgYAoKIyMgTGltaXRhdGlvbnMgaW4gT3BlbkFQSSBzdXBwb3J0ICh0byBiZSByZW1vdmVkKQoKKiBzdXBwb3J0IG9ubHkgZm9yICdodHRwJyAoJ2Jhc2ljJyBhbmQgJ2JlYXJlcicpIGFuZCAnYXBpS2V5JyBTZWN1cml0eSBzY2hlbWFzLAoqIHBhcmFtZXRlcnMgZW5jb2RlciBzdXBwb3J0cyBvbmx5IHN0eWxlPSdmb3JtJyxleHBsb2RlPWZhbHNlIGVuY29kaW5nIHNjaGVtZSwKKiBvbmx5IEdFVCwgUE9TVCwgUFVULCBERUxFVEUgb3BlcmF0aW9ucyBjb2RlIGlzIGdlbmVyYXRlZCAK readmeEtag: '"273df9af006ceae91d646cf22328361b9cf1a654"' readmeLastModified: Tue, 15 Sep 2020 15:01:05 GMT repositoryId: 128030151 description: typescript codegen for OpenAPI 3 created: '2018-04-04T08:14:52Z' updated: '2026-01-18T13:28:53Z' language: TypeScript archived: false stars: 13 watchers: 1 forks: 10 owner: foxel logo: https://avatars.githubusercontent.com/u/1551926?v=4 repoEtag: '"ce2f3376d9db00d54fd1100e5befc1d08ead5f95972fed9d0947852df57f1960"' repoLastModified: Sun, 18 Jan 2026 13:28:53 GMT foundInMaster: true category: Parsers id: 742ee9c0aa686f002325d9be63c367de - source: openapi3 tags repository: https://github.com/narazaka/swagger-serializer v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyOjpTZXJpYWxpemVyCgpbIVtBY3Rpb25zIFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL05hcmF6YWthL3N3YWdnZXItc2VyaWFsaXplci93b3JrZmxvd3MvUnVieS9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vTmFyYXpha2Evc3dhZ2dlci1zZXJpYWxpemVyL2FjdGlvbnMpClshW0dlbSBWZXJzaW9uXShodHRwczovL2JhZGdlLmZ1cnkuaW8vcmIvc3dhZ2dlci1zZXJpYWxpemVyLnN2ZyldKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9yYi9zd2FnZ2VyLXNlcmlhbGl6ZXIpCgpTd2FnZ2VyIChPcGVuQVBJIDMpIHNjaGVtYSBiYXNlZCBzZXJpYWxpemVyLgoKIyMgSW5zdGFsbGF0aW9uCgpBZGQgdGhpcyBsaW5lIHRvIHlvdXIgYXBwbGljYXRpb24ncyBHZW1maWxlOgoKYGBgcnVieQpnZW0gJ3N3YWdnZXItc2VyaWFsaXplcicKYGBgCgpBbmQgdGhlbiBleGVjdXRlOgoKICAgICQgYnVuZGxlCgpPciBpbnN0YWxsIGl0IHlvdXJzZWxmIGFzOgoKICAgICQgZ2VtIGluc3RhbGwgc3dhZ2dlci1zZXJpYWxpemVyCgojIyBVc2FnZQoKIyMjIFJhaWxzIHdpdGggc3dhZ2dlci1kc2wKCnVzZSAiW3N3YWdnZXItZHNsXShodHRwczovL2dpdGh1Yi5jb20vTmFyYXpha2Evc3dhZ2dlci1kc2wpIiEKCkxvYWQgaXQgaW4gaW5pdGlhbGl6ZXIuCgpgYGBydWJ5CiMgY29uZmlnL2luaXRpYWxpemVycy9zd2FnZ2VyX3NlcmlhbGl6ZXIucmIKCmlmIFJhaWxzLmFwcGxpY2F0aW9uLmNvbmZpZy5lYWdlcl9sb2FkCiAgU3dhZ2dlcjo6RFNMLmN1cnJlbnQuY29uZmlnLmxhenlfZGVmaW5lX3BhdGhzID0gdHJ1ZQogIFJhaWxzLmFwcGxpY2F0aW9uLmNvbmZpZy5hZnRlcl9pbml0aWFsaXplIGRvCiAgICBSYWlscy5hcHBsaWNhdGlvbi5yZWxvYWRfcm91dGVzIQogICAgU3dhZ2dlcjo6RFNMLmN1cnJlbnQuZGVmaW5lX3BhdGhzIQogICAgU3dhZ2dlcjo6U2NoZW1hLmN1cnJlbnQgPSBTd2FnZ2VyOjpTY2hlbWEubmV3KFN3YWdnZXI6OkRTTC5jdXJyZW50LnJlc29sdmVkKQogIGVuZAplbHNlCiAgU3dhZ2dlcjo6U2NoZW1hLmN1cnJlbnQgPSBTd2FnZ2VyOjpTY2hlbWEubmV3KFN3YWdnZXI6OkRTTC5jdXJyZW50KQogIFN3YWdnZXI6OlNlcmlhbGl6ZXI6OlN0b3JlLmN1cnJlbnQuc2VyaWFsaXplX29wdGlvbnNbOnJlc29sdmVyXSA9IFN3YWdnZXI6OkRTTC5jdXJyZW50LnJlc29sdmVyCiAgU3dhZ2dlcjo6U2VyaWFsaXplcjo6U3RvcmUuY3VycmVudC5kZXNlcmlhbGl6ZV9vcHRpb25zWzpyZXNvbHZlcl0gPSBTd2FnZ2VyOjpEU0wuY3VycmVudC5yZXNvbHZlcgplbmQKYGBgCgpVc2UgaXQgaW4gY29udHJvbGxlcnMuCgpgYGBydWJ5CiMgYXBwL2NvbnRyb2xsZXJzL2FwcGxpY2F0aW9uX2NvbnRyb2xsZXIucmIKY2xhc3MgQXBwbGljYXRpb25Db250cm9sbGVyIDwgQWN0aW9uQ29udHJvbGxlcjo6QmFzZQogIGluY2x1ZGUgU3dhZ2dlcjo6U2VyaWFsaXplcjo6UmFpbHNDb250cm9sbGVyCiAgZXh0ZW5kIFN3YWdnZXI6OkRTTDo6UmFpbHNDb250cm9sbGVyCgogIGRlZiByZW5kZXJfb2soZGF0YSwgY29udGV4dCA9IG5pbCkKICAgIHJlbmRlcl9hc19zY2hlbWEgMjAwLCA6anNvbiwgZGF0YSwgY29udGV4dAogIGVuZAoKICBkZWYgcmVuZGVyX2JhZChkYXRhLCBjb250ZXh0ID0gbmlsKQogICAgcmVuZGVyX2FzX3NjaGVtYSA0MDAsIDpqc29uLCBkYXRhLCBjb250ZXh0CiAgZW5kCmVuZApgYGAKCmBgYHJ1YnkKIyBhcHAvY29udHJvbGxlcnMvdXNlcnNfY29udHJvbGxlci5yYgpjbGFzcyBVc2Vyc0NvbnRyb2xsZXIgPCBBcHBsaWNhdGlvbkNvbnRyb2xsZXIKICBzd2FnZ2VyIDppbmRleCBkbwogICAgcmVuZGVyIDIwMCBkbwogICAgICBhcnJheSEgeyBjcmVmISBVc2VyU2VyaWFsaXplciB9CiAgICBlbmQKICBlbmQKICBkZWYgaW5kZXgKICAgIHJlbmRlcl9vayBVc2VyLmFsbAogIGVuZAoKICBzd2FnZ2VyIDpzaG93IGRvCiAgICBwYXJhbXMgZG8KICAgICAgcGF0aCA6aWQsIHNjaGVtYTogOmludGVnZXIKICAgIGVuZAoKICAgIHJlbmRlciAyMDAgZG8KICAgICAgY3JlZiEgVXNlclNlcmlhbGl6ZXIKICAgIGVuZAogIGVuZAogIGRlZiBzaG93CiAgICByZW5kZXJfb2sgVXNlci5maW5kKHNjaGVtYV9wYXJhbXNbOmlkXSkKICBlbmQKCiAgc3dhZ2dlciA6Y3JlYXRlIGRvCiAgICBib2R5IGZvcm1hdDogWzpmb3JtLCA6anNvbl0gZG8KICAgICAgdXNlciA6b2JqZWN0IGRvCiAgICAgICAgbmFtZSA6c3RyaW5nCiAgICAgIGVuZAogICAgZW5kCiAgICAKICAgIHJlbmRlciAyMDAgZG8KICAgICAgY3JlZiEgVXNlclNlcmlhbGl6ZXIKICAgIGVuZAogICAgcmVuZGVyIDQwMCBkbwogICAgICBhZGRpdGlvbmFsUHJvcGVydGllcyEgZG8KICAgICAgICBhcnJheSEgeyBzdHJpbmchIH0KICAgICAgZW5kCiAgICBlbmQKICBlbmQKICBkZWYgY3JlYXRlCiAgICBAdXNlciA9IFVzZXIubmV3KHNjaGVtYV9wYXJhbXNbOnVzZXJdKQoKICAgIGlmIEB1c2VyLnNhdmUKICAgICAgcmVuZGVyX29rIEB1c2VyCiAgICBlbHNlCiAgICAgIHJlbmRlcl9iYWQgQHVzZXIuZXJyb3JzCiAgICBlbmQKICBlbmQKCiAgc3dhZ2dlciA6dXBkYXRlIGRvCiAgICBwYXJhbXMgZG8KICAgICAgcGF0aCA6aWQsIHNjaGVtYTogOnN0cmluZwogICAgZW5kCgogICAgYm9keSBmb3JtYXQ6IFs6Zm9ybSwgOmpzb25dIGRvCiAgICAgIHVzZXIgOm9iamVjdCBkbwogICAgICAgIG5hbWUgOnN0cmluZwogICAgICBlbmQKICAgIGVuZAogICAgCiAgICByZW5kZXIgMjAwIGRvCiAgICAgIGNyZWYhIFVzZXJTZXJpYWxpemVyCiAgICBlbmQKICAgIHJlbmRlciA0MDAgZG8KICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXMhIGRvCiAgICAgICAgYXJyYXkhIHsgc3RyaW5nISB9CiAgICAgIGVuZAogICAgZW5kCiAgZW5kCiAgZGVmIHVwZGF0ZQogICAgQHVzZXIgPSBVc2VyLmZpbmQoc2NoZW1hX3BhcmFtc1s6aWRdKQoKICAgIGlmIEB1c2VyLnVwZGF0ZShzY2hlbWFfcGFyYW1zWzp1c2VyXSkKICAgICAgcmVuZGVyX29rIEB1c2VyCiAgICBlbHNlCiAgICAgIHJlbmRlcl9iYWQgQHVzZXIuZXJyb3JzCiAgICBlbmQKICBlbmQKCiAgc3dhZ2dlciA6ZGVzdHJveSBkbwogICAgcGFyYW1zIGRvCiAgICAgIHBhdGggOmlkLCBzY2hlbWE6IDpzdHJpbmcKICAgIGVuZAogIGVuZAogIGRlZiBkZXN0cm95CiAgICBAdXNlci5kZXN0cm95IQogICAgaGVhZCA6bm9fY29udGVudAogIGVuZAplbmQKYGBgCgpXb3VsZCB5b3Ugd2FudCB0byBjdXN0b21pemUgc2VyaWFsaXphdGlvbj8KCmBgYHJ1YnkKIyBhcHAvc2VyaWFsaXplcnMvYmFzZV9zZXJpYWxpemVyLnJiCmNsYXNzIEJhc2VTZXJpYWxpemVyCiAgaW5jbHVkZSBTd2FnZ2VyOjpTZXJpYWxpemVyCiAgZXh0ZW5kIFN3YWdnZXI6OkRTTDo6U2VyaWFsaXplcgplbmQKYGBgCgpgYGBydWJ5CiMgYXBwL3NlcmlhbGl6ZXJzL3VzZXJfc2VyaWFsaXplci5yYgpjbGFzcyBVc2VyU2VyaWFsaXplciA8IEJhc2VTZXJpYWxpemVyCiAgc3dhZ2dlciBkbwogICAgaWQgOmludGVnZXIKICAgIG5hbWUgOnN0cmluZywgb3B0aW9uYWw6IHRydWUKICBlbmQKCiAgZGVmIG5hbWUKICAgICIje0Btb2RlbC5uYW1lfSEhISEiCiAgZW5kCmVuZApgYGAKCk5vdyB5b3UgY2FuIGdldCBgeyAiaWQiID0+IDQyLCAibmFtZSIgPT4gIm1lISEhISIgfWAuCgpUaGlzIHNlcmlhbGl6ZXIgY2xhc3MgZGV0ZWN0aW9uIHVzZXMgdGhlIHNjaGVtYSdzIGB0aXRsZWAga2V5LgpJZiB5b3Ugd2FudCB0byB1c2UgYEZvbzo6QmFyU2VyaWFsaXplcmAsIHNldCBgRm9vLUJhcmAgdG8gYHRpdGxlYCBrZXkuCgpUaGUga2V5IGlzIGNvbmZpZ3VyYWJsZSBieQoKYGBgcnVieQojIGluIGNvbmZpZy9pbml0aWFsaXplcnMvc3dhZ2dlcl9zZXJpYWxpemVyLnJiClN3YWdnZXI6OlNlcmlhbGl6ZXI6OlN0b3JlLmN1cnJlbnQuc2VyaWFsaXplX29wdGlvbnNbOmluamVjdF9rZXldID0gIm15X2luamVjdF9rZXkiClN3YWdnZXI6OlNlcmlhbGl6ZXI6OlN0b3JlLmN1cnJlbnQuZGVzZXJpYWxpemVfb3B0aW9uc1s6aW5qZWN0X2tleV0gPSAibXlfaW5qZWN0X2tleSIKU3dhZ2dlcjo6RFNMLmN1cnJlbnQuY29uZmlnLmluamVjdF9rZXkgPSAibXlfaW5qZWN0X2tleSIKYGBgCgpTb21ldGltZXMgbW9kZWwgbmVlZHMgZGlyZWN0IHNlcmlhbGl6ZS4KCmBgYHJ1YnkKIyBhcHAvbW9kZWxzL2FwcGxpY2F0aW9uX3JlY29yZC5yYgpjbGFzcyBBcHBsaWNhdGlvblJlY29yZCA8IEFjdGl2ZVJlY29yZDo6QmFzZQogIHNlbGYuYWJzdHJhY3RfY2xhc3MgPSB0cnVlCiAgCiAgaW5jbHVkZSBTd2FnZ2VyOjpTZXJpYWxpemVyOjpNb2RlbAplbmQKYGBgCgpOb3cgeW91IGNhbiBnZXQgc2VyaWFsaXplZCByZXN1bHQgYnkgYHAgVXNlci5maXJzdC5zZXJpYWxpemVgLgoKIyMjIFJhaWxzIHdpdGggcmF3IHNjaGVtYQoKV3JpdGUgeW91ciBPcGVuQVBJIHNwZWMuCgpgYGB5YW1sCiMgc3dhZ2dlci55bWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICB0aXRsZTogZXhhbXBsZSBhcGkKICB2ZXJzaW9uOiAwLjEuMApjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBVc2VyOiAmVXNlcgogICAgICB0aXRsZTogVXNlcgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgIHJlcXVpcmVkOiBbaWRdCnBhdGhzOgogIC91c2VyczoKICAgIGdldDoKICAgICAgcmVzcG9uc2VzOgogICAgICAgIDIwMDoKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgICAgICAgIGl0ZW1zOiAqVXNlcgogIC91c2Vycy97aWR9OgogICAgZ2V0OgogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6ICpVc2VyCgpgYGAKCkxvYWQgaXQgaW4gaW5pdGlhbGl6ZXIuCgpgYGBydWJ5CiMgY29uZmlnL2luaXRpYWxpemVycy9zd2FnZ2VyX3NlcmlhbGl6ZXIucmIKClN3YWdnZXI6OlNjaGVtYS5sb2FkX2ZpbGVfdG9fY3VycmVudCgKICBfX2Rpcl9fICsgIi8uLi8uLi9zd2FnZ2VyLnltbCIsCikKYGBgCgpVc2UgaXQgaW4gY29udHJvbGxlcnMuCgpgYGBydWJ5CiMgYXBwL2NvbnRyb2xsZXJzL2FwcGxpY2F0aW9uX2NvbnRyb2xsZXIucmIKY2xhc3MgQXBwbGljYXRpb25Db250cm9sbGVyIDwgQWN0aW9uQ29udHJvbGxlcjo6QmFzZQogIGluY2x1ZGUgU3dhZ2dlcjo6U2VyaWFsaXplcjo6UmFpbHNDb250cm9sbGVyCgogIGRlZiByZW5kZXJfb2soZGF0YSwgY29udGV4dCA9IG5pbCkKICAgIHJlbmRlcl9hc19zY2hlbWEgMjAwLCA6anNvbiwgZGF0YSwgY29udGV4dAogIGVuZAplbmQKYGBgCgpgYGBydWJ5CiMgYXBwL2NvbnRyb2xsZXJzL3VzZXJzX2NvbnRyb2xsZXIucmIKY2xhc3MgVXNlcnNDb250cm9sbGVyIDwgQXBwbGljYXRpb25Db250cm9sbGVyCiAgZGVmIGluZGV4CiAgICByZW5kZXJfb2sgVXNlci5hbGwKICBlbmQKCiAgZGVmIHNob3cKICAgIHJlbmRlcl9vayBVc2VyLmZpbmQocGFyYW1zWzppZF0pCiAgZW5kCmVuZApgYGAKCldvdWxkIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSBzZXJpYWxpemF0aW9uPwoKYGBgcnVieQojIGFwcC9zZXJpYWxpemVycy9iYXNlX3NlcmlhbGl6ZXIucmIKY2xhc3MgQmFzZVNlcmlhbGl6ZXIKICBpbmNsdWRlIFN3YWdnZXI6OlNlcmlhbGl6ZXIKZW5kCmBgYAoKYGBgcnVieQojIGFwcC9zZXJpYWxpemVycy91c2VyX3NlcmlhbGl6ZXIucmIKY2xhc3MgVXNlclNlcmlhbGl6ZXIgPCBCYXNlU2VyaWFsaXplcgogIGRlZiBuYW1lCiAgICAiI3tAbW9kZWwubmFtZX0hISEhIgogIGVuZAplbmQKYGBgCgpOb3cgeW91IGNhbiBnZXQgYHsgImlkIiA9PiA0MiwgIm5hbWUiID0+ICJtZSEhISEiIH1gLgoKU29tZXRpbWVzIG1vZGVsIG5lZWRzIGRpcmVjdCBzZXJpYWxpemUuCgpgYGBydWJ5CiMgYXBwL21vZGVscy9hcHBsaWNhdGlvbl9yZWNvcmQucmIKY2xhc3MgQXBwbGljYXRpb25SZWNvcmQgPCBBY3RpdmVSZWNvcmQ6OkJhc2UKICBzZWxmLmFic3RyYWN0X2NsYXNzID0gdHJ1ZQogIAogIGluY2x1ZGUgU3dhZ2dlcjo6U2VyaWFsaXplcjo6TW9kZWwKZW5kCmBgYAoKTm93IHlvdSBjYW4gZ2V0IHNlcmlhbGl6ZWQgcmVzdWx0IGJ5IGBwIFVzZXIuZmlyc3Quc2VyaWFsaXplYC4KCiMjIyBAY29udGV4dAoKQ29sbGVjdGlvbiBzZXJpYWxpemF0aW9uIHNvbWV0aW1lcyBuZWVkcyBjb250ZXh0IGRhdGEgZm9yIGF2b2lkaW5nIE4rMSBhY2Nlc3Mgb3Igc29tZSBvdGhlciByZWFzb24uCgpgcmVuZGVyX2FzX3NjaGVtYWAncyA0dGggcGFyYW1ldGVyIGlzIHRoZSBjb250ZXh0IHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gc2VyaWFsaXplcnMgYEBjb250ZXh0YC4KCmBgYHJ1YnkKIyBhcHAvc2VyaWFsaXplcnMvaXRlbV9zZXJpYWxpemVyLnJiCmNsYXNzIEl0ZW1TZXJpYWxpemVyIDwgQmFzZVNlcmlhbGl6ZXIKICBzd2FnZ2VyIGRvCiAgICBpZCA6aW50ZWdlcgogICAgcmF0ZSA6aW50ZWdlcgogIGVuZAoKICBkZWYgcmF0ZQogICAgQGNvbnRleHRbOnJhdGVzXVtpZF0KICBlbmQKZW5kCgojIGFwcC9jb250cm9sbGVycy9pdGVtc19jb250cm9sbGVyLnJiCmNsYXNzIEl0ZW1zQ29udHJvbGxlciA8IEFwcGxpY2F0aW9uQ29udHJvbGxlcgogIHN3YWdnZXIgOmluZGV4IGRvCiAgICByZW5kZXIgMjAwIGRvCiAgICAgIGFycmF5ISBkbwogICAgICAgIGNyZWYhIEl0ZW1TZXJpYWxpemVyCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCgogIGRlZiBpbmRleAogICAgaXRlbXMgPSBJdGVtLmFsbAogICAgcmF0ZXMgPSBJdGVtUmF0ZS5jYWxjX2l0ZW1fcmF0ZXMoaXRlbXMpCiAgICByZW5kZXJfb2sgaXRlbXMsIHsgcmF0ZXM6IHJhdGVzIH0KICBlbmQKZW5kCmBgYAoKIyMgRGV2ZWxvcG1lbnQKCkFmdGVyIGNoZWNraW5nIG91dCB0aGUgcmVwbywgcnVuIGBiaW4vc2V0dXBgIHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzLiBUaGVuLCBydW4gYHJha2Ugc3BlY2AgdG8gcnVuIHRoZSB0ZXN0cy4gWW91IGNhbiBhbHNvIHJ1biBgYmluL2NvbnNvbGVgIGZvciBhbiBpbnRlcmFjdGl2ZSBwcm9tcHQgdGhhdCB3aWxsIGFsbG93IHlvdSB0byBleHBlcmltZW50LgoKVG8gaW5zdGFsbCB0aGlzIGdlbSBvbnRvIHlvdXIgbG9jYWwgbWFjaGluZSwgcnVuIGBidW5kbGUgZXhlYyByYWtlIGluc3RhbGxgLiBUbyByZWxlYXNlIGEgbmV3IHZlcnNpb24sIHVwZGF0ZSB0aGUgdmVyc2lvbiBudW1iZXIgaW4gYHZlcnNpb24ucmJgLCBhbmQgdGhlbiBydW4gYGJ1bmRsZSBleGVjIHJha2UgcmVsZWFzZWAsIHdoaWNoIHdpbGwgY3JlYXRlIGEgZ2l0IHRhZyBmb3IgdGhlIHZlcnNpb24sIHB1c2ggZ2l0IGNvbW1pdHMgYW5kIHRhZ3MsIGFuZCBwdXNoIHRoZSBgLmdlbWAgZmlsZSB0byBbcnVieWdlbXMub3JnXShodHRwczovL3J1YnlnZW1zLm9yZykuCgojIyBDb250cmlidXRpbmcKCkJ1ZyByZXBvcnRzIGFuZCBwdWxsIHJlcXVlc3RzIGFyZSB3ZWxjb21lIG9uIEdpdEh1YiBhdCBodHRwczovL2dpdGh1Yi5jb20vTmFyYXpha2Evc3dhZ2dlci1zZXJpYWxpemVyLgo= readmeEtag: '"c78406061fe60b821c3e0b80cbdf6a792e09da4e"' readmeLastModified: Mon, 21 Nov 2022 07:45:36 GMT repositoryId: 224905174 description: Swagger (OpenAPI 3) schema based serializer for ruby created: '2019-11-29T18:34:41Z' updated: '2025-05-13T13:09:20Z' language: Ruby archived: false stars: 13 watchers: 3 forks: 2 owner: Narazaka logo: https://avatars.githubusercontent.com/u/1712548?v=4 license: Zlib repoEtag: '"122226e232dea98a6f72e995b0d2caa80dc90ae021532f8f49afc02e922f6ea1"' repoLastModified: Tue, 13 May 2025 13:09:20 GMT foundInMaster: true category: Code Generators id: 68fbc50ba4ab0b9974f93a27abd30aea - source: openapi3 tags repository: https://github.com/lornajane/openapi-blockly-representation v3: true id: c97dc48c739fd02596e7521df5111ca3 repositoryMetadata: base64Readme: >- IyBCbG9ja2x5IHJlcHJlc2VudGF0aW9uIG9mIE9wZW5BUEkKClRoaXMgZG9lc24ndCBjb21waWxlIHRvIE9wZW5BUEkgKHB1bGwgcmVxdWVzdHMgd2VsY29tZSksIGJ1dCBJIHVzZSB0aGVzZSBibG9ja3MgYXMgYSB0ZWFjaGluZyBhaWQuIFlvdSdyZSB3ZWxjb21lIHRvIHVzZSB0aGVtIHRvby4KCiFbQSBzaW5nbGUgZW5kcG9pbnQgcmVwcmVzZW50ZWQgYnkgYmxvY2tzXSguL2ltYWdlcy9vcGVuYXBpLXNjaGVtYS1yZWYtYmxvY2tzLnBuZykKCiMjIEdldCBzdGFydGVkCgpSdW4gYG5wbSBpbnN0YWxsYC4KClRoZW4gc2VydmUgYGluZGV4Lmh0bWxgIGxvY2FsbHkuIEl0J3MgdXNlZnVsIHRvIGhhdmUgaXQgcmVsb2FkLCBzbyBJIHVzZSB0aGlzOgoKYGBgCm5weCBicm93c2VyLXN5bmMgc3RhcnQgLS1zZXJ2ZXIgLS1maWxlcyBpbmRleC5odG1sCmBgYAoKIyMjIEV4YW1wbGUgYmxvY2tzCgpUcnkgYGV4YW1wbGUuanNvbmAuCgojIyMgVGVjaG5pY2FsIG5vdGVzCgpUaGUgInNhdmUiIGZ1bmN0aW9uYWxpdHkgdXNlcyBsb2NhbCBzdG9yYWdlIHNvIHlvdSBjYW4gZW5naW5lZXIgdGhlIGJsb2NrcyB3aXRob3V0IGxvc2luZyB3aGF0IHlvdSBidWlsdCBvbiByZWxvYWQuCgojIyBVc2VkIGJ5CgpTZW5kIGEgcHVsbCByZXF1ZXN0IGlmIHlvdSB1c2UgdGhpcyBwcm9qZWN0PyBMZXQncyBzaGFyZSEKCi0gTG9ybmEgKCBbbWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb3JuYWphbmUvKSApIGluIG15IHRhbGsgW09wZW5BUEkgZm9yIERvY3VtZW50YXJpYW5zXShodHRwczovL25vdGkuc3QvbG9ybmFqYW5lLzRPamVtMi9vcGVuYXBpLWZvci1kb2N1bWVudGFyaWFucykK readmeEtag: '"824b101a611d17694bc05c076a3f012459386d2e"' readmeLastModified: Sat, 10 Jun 2023 19:00:45 GMT repositoryId: 637387454 description: Demo repo uses blockly to visualise structure of OpenAPI created: '2023-05-07T12:05:23Z' updated: '2025-01-17T07:12:59Z' language: HTML archived: false stars: 12 watchers: 1 forks: 0 owner: lornajane logo: https://avatars.githubusercontent.com/u/172607?v=4 license: Apache-2.0 repoEtag: '"44ca2b05dfbf8c6ce6eeda701667d798d74e6eae810fdd5be657fa8cd977bf23"' repoLastModified: Fri, 17 Jan 2025 07:12:59 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/yapily/yapily-sdk-java v3: true id: 41fae7ca06526a669b911fc4db371eb6 repositoryMetadata: base64Readme: >- IyBZYXBpbHkgSmF2YSBTREsKWyFbR2l0SHViIHZlcnNpb25dKGh0dHBzOi8vZDI1bGNpcHppajE3ZC5jbG91ZGZyb250Lm5ldC9iYWRnZS5zdmc/aWQ9Z2gmdHlwZT02JnY9Mi4xMy4xJngyPTApXShodHRwOi8vYmFkZ2UuZnVyeS5pby9naC9ib2VubmVtYW5uJTJGYmFkZ2VzKQoKVGhpcyBTREsgbGlicmFyeSB3YXMgZ2VuZXJhdGVkIHVzaW5nIFtPcGVuQXBpIEdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvcikuIFRoZSBTREsgY2FuIGJlIHVzZWQgYXMgYSBtb2R1bGUgaW4geW91ciBjb2RlIGFuZCB0aGUgZXhhbXBsZXMgZGVtb25zdHJhdGUgaG93IHRvIGNvbm5lY3QgdG8gZmluYW5jaWFsIGluc3RpdHV0aW9ucyBpbnRlZ3JhdGVkIHdpdGggWWFwaWx5LgoKIyMgUmVxdWlyZW1lbnRzCgpUbyBjb25uZWN0IHRvIHRoZSBZYXBpbHkgQVBJLCB5b3Ugd2lsbCBuZWVkIHRvIHJlZ2lzdGVyIHlvdXIgCmFwcGxpY2F0aW9uIGF0IFtodHRwczovL2Rhc2hib2FyZC55YXBpbHkuY29tXSgpLgoKU3BlY2lmeSB0aGUgZmluYW5jaWFsIGluc3RpdHV0aW9ucyB5b3Ugd2FudCB0byB3b3JrIHdpdGggYW5kIHNhdmUgeW91ciBhcHBsaWNhdGlvbi4gWW91IHdpbGwgdGhlbiBiZSBwcm9tcHRlZCB0byBkb3dubG9hZCB5b3VyIGFwcGxpY2F0aW9uIGNyZWRlbnRpYWxzLiAKVGhlc2UgYXBwbGljYXRpb24gY3JlZGVudGlhbHMgY2FuIHRoZW4gYmUgdXNlZCB0byBhdXRob3Jpc2UgeW91ciByZXF1ZXN0cyBhZ2FpbnN0IHRoZSBbWWFwaWx5IEFQSV0oaHR0cHM6Ly9kb2NzLnlhcGlseS5jb20vI2dldC1zdGFydGVkKS4KCiMjIEluc3RhbGxhdGlvbgoKVGhlIFNESyBpcyBjdXJyZW50bHkgYXZhaWxhYmxlIGluIHRoZSBZYXBpbHkgbWF2ZW4gcmVwb3NpdG9yeSBhbmQgCmNhbiBiZSBpbmNsdWRlZCBpbiB5b3VyIHByb2plY3QgCmJ5IGFkZGluZyBpdCB0byB5b3VyIGRlcGVuZGVuY2llcwoKIyMjIyBNYXZlbgoKUmVwb3NpdG9yeToKCmBgYHhtbAo8cmVwb3NpdG9yaWVzPgogICA8IS0tIG90aGVyIHJlcG9zLS0+CiAgIDxyZXBvc2l0b3J5PgogICAgICAgPGlkPnlhcGlseS1yZXBvPC9pZD4KICAgICAgIDxuYW1lPnlhcGlseS1yZXBvPC9uYW1lPgogICAgICAgPHVybD5odHRwOi8vbWF2ZW4ueWFwaWx5LmNvbS88L3VybD4KICAgPC9yZXBvc2l0b3J5Pgo8L3JlcG9zaXRvcmllcz4KYGBgCgpEZXBlbmRlbmN5OgoKYGBgeG1sCjxkZXBlbmRlbmNpZXM+CiAgIDwhLS0gb3RoZXIgZGVwZW5kZW5jaWVzIC0tPgogICA8ZGVwZW5kZW5jeT4KICAgICAgIDxncm91cElkPnlhcGlseTwvZ3JvdXBJZD4KICAgICAgIDxhcnRpZmFjdElkPnlhcGlseS1zZGs8L2FydGlmYWN0SWQ+CiAgICAgICA8dmVyc2lvbj4yLjEzLjE8L3ZlcnNpb24+CiAgIDwvZGVwZW5kZW5jeT4KPC9kZXBlbmRlbmNpZXM+CmBgYAoKIyMjIyBHcmFkbGUKClJlcG9zaXRvcnk6CgpgYGBncm9vdnkKcmVwb3NpdG9yaWVzIHsKICAgIC8vIG90aGVyIHJlcG9zCiAgICBtYXZlbiB7CiAgICAgICAgdXJsICJodHRwOi8vbWF2ZW4ueWFwaWx5LmNvbS8iCiAgICB9Cn0KYGBgCgpEZXBlbmRlbmN5OgoKYGBgZ3Jvb3Z5CmNvbXBpbGUgZ3JvdXA6ICd5YXBpbHknLCBuYW1lOiAneWFwaWx5LXNkaycsIHZlcnNpb246ICcyLjEzLjEnCmBgYAoKIyMjIyBEb3dubG9hZCBKQVIKClRoZSBKQVIgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBmcm9tIGEgdGFnZ2VkIHJlbGVhc2UsIApvciB0aGlzIHByb2plY3QgY2FuIGJlIGNsb25lZC9kb3dubG9hZGVkIGFuZCBwYWNrYWdlZCBpbnRvIGEgCmxpYnJhcnkgSkFSIHRvIGJlIGluY2x1ZGVkIGluIHlvdXIgcHJvamVjdC4KCiMjIFVzYWdlCgpTYW1wbGUgdXNhZ2VzIG9mIHRoZSBTREsgY2FuIGJlIHNlZW4gaW4gdGhlIGBleGFtcGxlc2AgZm9sZGVyLgoKLSBDb25maWd1cmUgdGhlIGRlZmF1bHQgYXBpIGNsaWVudAoKYGBgamF2YQpBcGlDbGllbnQgZGVmYXVsdENsaWVudCA9IENvbmZpZ3VyYXRpb24uZ2V0RGVmYXVsdEFwaUNsaWVudCgpOwovLyBDb25maWd1cmUgdGhlIEFQSSBhdXRoZW50aWNhdGlvbgpIdHRwQmFzaWNBdXRoIGJhc2ljQXV0aCA9IChIdHRwQmFzaWNBdXRoKSBkZWZhdWx0Q2xpZW50LmdldEF1dGhlbnRpY2F0aW9uKCJiYXNpY0F1dGgiKTsKLy8gUmVwbGFjZSB0aGVzZSBkZW1vIGNvbnN0YW50cyB3aXRoIHlvdXIgYXBwbGljYXRpb24gY3JlZGVudGlhbHMKYmFzaWNBdXRoLnNldFVzZXJuYW1lKEFQUExJQ0FUSU9OX0lEKTsKYmFzaWNBdXRoLnNldFBhc3N3b3JkKEFQUExJQ0FUSU9OX1NFQ1JFVCk7CmBgYAoKLSBPciBjb25maWd1cmUgYSBuZXcgb25lIGZvciBtdWx0aXBsZSBhcHBsaWNhdGlvbiBjYXNlcyAKCmBgYGphdmEKQXBpQ2xpZW50IGFwcGxpY2F0aW9uQ2xpZW50ID0gbmV3IEFwaUNsaWVudCgpOwovLyBDb25maWd1cmUgdGhlIEFQSSBhdXRoZW50aWNhdGlvbgpIdHRwQmFzaWNBdXRoIGJhc2ljQXV0aCA9IChIdHRwQmFzaWNBdXRoKSBhcHBsaWNhdGlvbkNsaWVudC5nZXRBdXRoZW50aWNhdGlvbigiYmFzaWNBdXRoIik7Ci8vIFJlcGxhY2UgdGhlc2UgZGVtbyBjb25zdGFudHMgd2l0aCB5b3VyIGFwcGxpY2F0aW9uIGNyZWRlbnRpYWxzCmJhc2ljQXV0aC5zZXRVc2VybmFtZShBUFBMSUNBVElPTl9JRCk7CmJhc2ljQXV0aC5zZXRQYXNzd29yZChBUFBMSUNBVElPTl9TRUNSRVQpOwpJbnN0aXR1dGlvbnNBcGkgaW5zdGl0dXRpb25zQXBpID0gbmV3IEluc3RpdHV0aW9uc0FwaSgpOwppbnN0aXR1dGlvbnNBcGkuc2V0QXBpQ2xpZW50KGFwcGxpY2F0aW9uQ2xpZW50KTsKYGBgCgotIFJldHJpZXZlIGEgbGlzdCBvZiBhdmFpbGFibGUgZmluYW5jaWFsIGluc3RpdHV0aW9ucyB0byBjb25uZWN0IHRvCgpgYGBqYXZhCkluc3RpdHV0aW9uc0FwaSBpbnN0aXR1dGlvbnNBcGkgPSBuZXcgSW5zdGl0dXRpb25zQXBpKCk7Ckxpc3Q8SW5zdGl0dXRpb24+IGluc3RpdHV0aW9ucyA9IGluc3RpdHV0aW9uc0FwaS5nZXRJbnN0aXR1dGlvbnNVc2luZ0dFVCgpLmdldERhdGEoKTsKYGBgCgotIENyZWF0aW5nIHVzZXJzIGFuZCByZXRyaWV2aW5nIHVzZXJzIGZvciB5b3VyIGFwcGxpY2F0aW9uIHJlZ2lzdGVyZWQgaW4gdGhlIFlhcGlseSBEYXNoYm9hcmQKYGBgamF2YQpmaW5hbCBBcHBsaWNhdGlvblVzZXJzQXBpIGFwcGxpY2F0aW9uVXNlcnNBcGkgPSBuZXcgQXBwbGljYXRpb25Vc2Vyc0FwaSgpOwpOZXdBcHBsaWNhdGlvblVzZXIgZXhhbXBsZVVzZXIgPSBuZXcgTmV3QXBwbGljYXRpb25Vc2VyKCk7CmV4YW1wbGVVc2VyLnNldEFwcGxpY2F0aW9uVXNlcklkKCJqYXZhLXNka0B5YXBpbHkuY29tIik7CmFwcGxpY2F0aW9uVXNlcnNBcGkuYWRkVXNlclVzaW5nUE9TVChleGFtcGxlVXNlcik7CgpMaXN0PEFwcGxpY2F0aW9uVXNlcj4gdXNlcnMgPSBhcHBsaWNhdGlvblVzZXJzQXBpLmdldFVzZXJzVXNpbmdHRVQoKTsKYGBgCgotIENyZWF0ZSBhbiBhdXRob3JpemF0aW9uIHVybCBpbiBvcmRlciBmb3IgeW91ciB1c2VycyB0byBnaXZlIGNvbnNlbnQgb24gYWNjZXNzaW5nIHRoZWlyIGFjY291bnQgZGF0YS4gCgpgYGBqYXZhCmZpbmFsIEFjY291bnRzQXBpIGFjY291bnRzQXBpID0gbmV3IEFjY291bnRzQXBpKCk7CkFjY291bnRBdXRob3Jpc2F0aW9uUmVxdWVzdCBhY2NvdW50QXV0aG9yaXNhdGlvblJlcXVlc3QgPSBuZXcgQWNjb3VudEF1dGhvcmlzYXRpb25SZXF1ZXN0KCk7CmFjY291bnRBdXRob3Jpc2F0aW9uUmVxdWVzdC5zZXRBcHBsaWNhdGlvblVzZXJJZChhcHBsaWNhdGlvblVzZXJJZCk7CmFjY291bnRBdXRob3Jpc2F0aW9uUmVxdWVzdC5zZXRJbnN0aXR1dGlvbklkKGluc3RpdHV0aW9uSWQpOwovKioKKiBVc2UgdGhlIGRlZmF1bHRzCiovCmFjY291bnRBdXRob3Jpc2F0aW9uUmVxdWVzdC5zZXRBY2NvdW50UmVxdWVzdChuZXcgQWNjb3VudFJlcXVlc3QoKSk7CkFwaVJlc3BvbnNlT2ZBdXRob3Jpc2F0aW9uUmVxdWVzdFJlc3BvbnNlIGF1dGhvcml6YXRpb25SZXNwb25zZSA9IGFjY291bnRzQXBpLmluaXRpYXRlQWNjb3VudFJlcXVlc3RVc2luZ1BPU1QoYWNjb3VudEF1dGhvcmlzYXRpb25SZXF1ZXN0LCBudWxsLCBudWxsLCBudWxsKTsKU3RyaW5nIGRpcmVjdFVybCA9IGF1dGhvcml6YXRpb25SZXNwb25zZS5nZXREYXRhKCkuZ2V0QXV0aG9yaXNhdGlvblVybCgpOwpgYGAKCi0gR2V0IHRoZSBtb3N0IHJlc2VudCBDb25zZW50IGZvciB0aGUgY29uZmlndXJlZCB1c2VyIGFuZCBpbnN0aXR1dGlvbi4gTWFrZSBzdXJlIHRvIGNoZWNrIHRoYXQgdGhlIENvbnNlbnQgaXMgQVVUSE9SSVpFRCBvdGhlcndpc2UgZmFpbCB0aGUgcmVxdWVzdApgYGBqYXZhCkNvbnNlbnQgY29uc2VudCA9IGNvbnNlbnRzQXBpLmdldENvbnNlbnRzVXNpbmdHRVQoCiAgICAgICAgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChhcHBsaWNhdGlvblVzZXJJZCksCiAgICAgICAgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCksCiAgICAgICAgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChpbnN0aXR1dGlvbklkKSwKICAgICAgICBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKSwKICAgICAgICBudWxsLAogICAgICAgIG51bGwsCiAgICAgICAgMSwKICAgICAgICBudWxsKS5nZXREYXRhKCkuc3RyZWFtKCkKICAgICAgICAuZmlsdGVyKGMgLT4gYy5nZXRTdGF0dXMoKS5lcXVhbHMoQ29uc2VudC5TdGF0dXNFbnVtLkFVVEhPUklaRUQpKQogICAgICAgIC5maW5kRmlyc3QoKQogICAgICAgIC5vckVsc2VUaHJvdygoKSAtPiBuZXcgUnVudGltZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJObyB2YWxpZCBjb25zZW50IHRva2VuIHByZXNlbnQgZm9yIGFwcGxpY2F0aW9uIHVzZXIgJXMiLCBhcHBsaWNhdGlvblVzZXJJZCkpKTsKCmBgYAogCi0gUHJvdmlkaW5nIHRoYXQgdGhlIHVzZXIgaGFzIGdpdmVuIGNvbnNlbnQgYW5kIHlvdSBoYXZlIGFuIEFVVEhPUklaRUQgQ29uc2VudCwgb2J0YWluIHRoZSB1c2VyIGFjY291bnQgZGV0YWlscyB1c2luZyB0aGUgY29uc2VudCB0b2tlbgoKYGBgamF2YQpTdHJpbmcgY29uc2VudFRva2VuID0gY29uc2VudC5nZXRDb25zZW50VG9rZW4oKTsKQXBpTGlzdFJlc3BvbnNlT2ZBY2NvdW50IGFjY291bnRzUmVzcG9uc2UgPSBhY2NvdW50c0FwaS5nZXRBY2NvdW50c1VzaW5nR0VUKGNvbnNlbnRUb2tlbik7Ckxpc3Q8QWNjb3VudD4gYWNjb3VudHMgPSBhY2NvdW50c1Jlc3BvbnNlLmdldERhdGEoKTsKYGBgCgotIFJldHVybiB1c2VyIHRyYW5zYWN0aW9uIGRldGFpbHMsIHVzaW5nIGFuIGFjY291bnQgdGhlIHVzZXIgaGFzIGdpdmVuIGNvbnNlbnQgdG8uCgpgYGBqYXZhClN0cmluZyBjb25zZW50VG9rZW4gPSBjb25zZW50LmdldENvbnNlbnRUb2tlbigpOwpBcGlMaXN0UmVzcG9uc2VPZlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uc1Jlc3BvbnNlID0gdHJhbnNhY3Rpb25zQXBpLmdldFRyYW5zYWN0aW9uc1VzaW5nR0VUKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc2VudFRva2VuLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnRJZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxOTgwLTAxLTAxVDAwOjAwOjAwLjAwMFoiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIwMjAtMDEtMDFUMDA6MDA6MDAuMDAwWiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCk7Ckxpc3Q8VHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9ucyA9IHRyYW5zYWN0aW9uc1Jlc3BvbnNlLmdldERhdGEoKTsKYGBgCgotIENoZWNrIHRoYXQgdGhlIGlkZW50aXR5IGZlYXR1cmUgaXMgcHJvdmlkZWQgZm9yIHRoaXMgaW5zdGl0dXRpb24uCmBgYGphdmEKSW5zdGl0dXRpb24gaW5zdGl0dXRpb24gPSBpbnN0aXR1dGlvbnNBcGkuZ2V0SW5zdGl0dXRpb25Vc2luZ0dFVChpbnN0aXR1dGlvbklkKTsKQm9vbGVhbiBzdXBwb3J0c0lkZW50aXR5ID0gaW5zdGl0dXRpb24uZ2V0RmVhdHVyZXMoKS5zdHJlYW0oKQogICAgICAgIC5hbnlNYXRjaChmZWF0dXJlc0VudW0gLT4gZmVhdHVyZXNFbnVtICE9IG51bGwgJiYgZmVhdHVyZXNFbnVtLmVxdWFscyhJbnN0aXR1dGlvbi5GZWF0dXJlc0VudW0uSURFTlRJVFkpKTsKYGBgCgotIElmIHRoZSBpZGVudGl0eSBmZWF0dXJlIGlzIHN1cHBvcnRlZCByZXR1cm4gdXNlciBpZGVudGl0eSBkZXRhaWxzLiBUaGlzIHdpbGwgZmFpbCBpZiB0aGUgaWRlbnRpdHkgZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVkLgpgYGBqYXZhClN0cmluZyBjb25zZW50VG9rZW4gPSBjb25zZW50LmdldENvbnNlbnRUb2tlbigpOwpJZGVudGl0eUFwaSBpZGVudGl0eUFwaSA9IG5ldyBJZGVudGl0eUFwaSgpOwpBcGlSZXNwb25zZU9mSWRlbnRpdHkgaWRlbnRpdHlSZXNwID0gaWRlbnRpdHlBcGkuZ2V0SWRlbnRpdHlVc2luZ0dFVChjb25zZW50VG9rZW4pOyAKSWRlbnRpdHkgaWRlbnRpdHkgPSBpZGVudGl0eVJlc3AuZ2V0RGF0YSgpOwpgYGAKCi0gQ3JlYXRlIGEgbmV3IHBheW1lbnQgcmVxdWVzdCBkZXRhaWxpbmcgd2hhdCB0eXBlIG9mIHBheW1lbnQgeW91IHdhbnQgdG8gaXNzdWUgb24gYmVoYWxmIG9mIHlvdXIgdXNlciBlLmcuIGEgRG9tZXN0aWMgCnBheW1lbnQgdG8gc2VuZCDCozEuMDAgdG8gYW5vdGhlciBhY2NvdW50IHVzaW5nIGFuIGFjY291bnQgbnVtYmVyIGFuZCBzb3J0IGNvZGU6CgpgYGBqYXZhClBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0ID0gbmV3IFBheW1lbnRSZXF1ZXN0KCk7CgpBbW91bnQgYW1vdW50ID0gbmV3IEFtb3VudCgpOwphbW91bnQuc2V0QW1vdW50KG5ldyBCaWdEZWNpbWFsKDEpKTsKYW1vdW50LnNldEN1cnJlbmN5KCJHQlAiKTsKClBheWVlIHBheWVlID0gbmV3IFBheWVlKCk7CnBheWVlLnNldE5hbWUoIkpvaG4gRG9lIik7CgpMaXN0PEFjY291bnRJZGVudGlmaWNhdGlvbj4gcGF5ZWVBY2NvdW50SWRlbnRpZmljYXRpb25zID0gbmV3IEFycmF5TGlzdDw+KCk7CgpBY2NvdW50SWRlbnRpZmljYXRpb24gYWNjb3VudE51bWJlcklkZW50aWZpY2F0aW9uID0gbmV3IEFjY291bnRJZGVudGlmaWNhdGlvbigpOwphY2NvdW50TnVtYmVySWRlbnRpZmljYXRpb24uc2V0VHlwZShBY2NvdW50SWRlbnRpZmljYXRpb24uVHlwZUVudW0uQUNDT1VOVF9OVU1CRVIpOwphY2NvdW50TnVtYmVySWRlbnRpZmljYXRpb24uc2V0SWRlbnRpZmljYXRpb24oIjcwMDAwMDA1Iik7CnBheWVlQWNjb3VudElkZW50aWZpY2F0aW9ucy5hZGQoYWNjb3VudE51bWJlcklkZW50aWZpY2F0aW9uKTsKCkFjY291bnRJZGVudGlmaWNhdGlvbiBzb3J0Q29kZUlkZW50aWZpY2F0aW9uID0gbmV3IEFjY291bnRJZGVudGlmaWNhdGlvbigpOwpzb3J0Q29kZUlkZW50aWZpY2F0aW9uLnNldFR5cGUoQWNjb3VudElkZW50aWZpY2F0aW9uLlR5cGVFbnVtLlNPUlRfQ09ERSk7CnNvcnRDb2RlSWRlbnRpZmljYXRpb24uc2V0SWRlbnRpZmljYXRpb24oIjcwMDAwMSIpOwpwYXllZUFjY291bnRJZGVudGlmaWNhdGlvbnMuYWRkKHNvcnRDb2RlSWRlbnRpZmljYXRpb24pOwoKcGF5ZWUuc2V0QWNjb3VudElkZW50aWZpY2F0aW9ucyhwYXllZUFjY291bnRJZGVudGlmaWNhdGlvbnMpOwoKcGF5bWVudFJlcXVlc3Quc2V0QW1vdW50KGFtb3VudCk7CnBheW1lbnRSZXF1ZXN0LnNldFBheWVlKHBheWVlKTsKcGF5bWVudFJlcXVlc3Quc2V0VHlwZShQYXltZW50UmVxdWVzdC5UeXBlRW51bS5ET01FU1RJQ19QQVlNRU5UKTsKcGF5bWVudFJlcXVlc3Quc2V0UmVmZXJlbmNlKCJTZW5kaW5nIMKjMS4wMCB0byBKb2huIERvZSB2aWEuIFlhcGlseSIpOwpwYXltZW50UmVxdWVzdC5zZXRQYXltZW50SWRlbXBvdGVuY3lJZCgiYW55VW5pcXVlU3RyaW5nT3ZlcjE4Y2hhcmFjdGVycyIpOwpgYGAKCi0gQ3JlYXRlIGEgbmV3IHBheW1lbnQgYXV0aG9yaXNhdGlvbiByZXF1ZXN0IHVzaW5nIHRoZSBwYXltZW50IHJlcXVlc3QgdG8gZ2VuZXJhdGUgYW4gYXV0aG9yaXphdGlvbiB1cmwgdGhhdCB5b3VyIHVzZXJzIGNhbiB1c2UgdG8gYXV0aG9yaXplIHRoZSBwYXltZW50OgoKYGBgamF2YQpQYXltZW50c0FwaSBwYXltZW50c0FwaSA9IG5ldyBQYXltZW50c0FwaSgpOwpQYXltZW50QXV0aG9yaXNhdGlvblJlcXVlc3QgcGF5bWVudEF1dGhvcmlzYXRpb25SZXF1ZXN0ID0gbmV3IFBheW1lbnRBdXRob3Jpc2F0aW9uUmVxdWVzdCgpOwpwYXltZW50QXV0aG9yaXNhdGlvblJlcXVlc3Quc2V0QXBwbGljYXRpb25Vc2VySWQoYXBwbGljYXRpb25Vc2VySWQpOwpwYXltZW50QXV0aG9yaXNhdGlvblJlcXVlc3Quc2V0SW5zdGl0dXRpb25JZChpbnN0aXR1dGlvbklkKTsKcGF5bWVudEF1dGhvcmlzYXRpb25SZXF1ZXN0LnNldFBheW1lbnRSZXF1ZXN0KHBheW1lbnRSZXF1ZXN0KTsKQXBpUmVzcG9uc2VPZlBheW1lbnRBdXRob3Jpc2F0aW9uUmVxdWVzdFJlc3BvbnNlIGF1dGhvcml6YXRpb25SZXNwb25zZSA9IAogICAgICAgICAgICAgICAgICAgICAgICBwYXltZW50c0FwaS5jcmVhdGVQYXltZW50QXV0aG9yaXNhdGlvblVzaW5nUE9TVChwYXltZW50QXV0aG9yaXNhdGlvblJlcXVlc3QsIG51bGwsIG51bGwsIG51bGwpOwpTdHJpbmcgdXJsID0gYXV0aG9yaXphdGlvblJlc3BvbnNlLmdldERhdGEoKS5nZXRBdXRob3Jpc2F0aW9uVXJsKCk7CmBgYAoKLSBTdWJtaXQgYSBwYXltZW50IHJlcXVlc3QgdXNpbmcgdGhlIHNhbWUgcGF5bWVudCByZXF1ZXN0IG9iamVjdCBpbiB0aGUgYXV0aG9yaXphdGlvbiByZXF1ZXN0IGFuZCB0aGUgQVVUSE9SSVpFRCBjb25zZW50IGdpdmVuIGJ5IHRoZSB1c2VyOgoKYGBgamF2YQpTdHJpbmcgY29uc2VudFRva2VuID0gY29uc2VudC5nZXRDb25zZW50VG9rZW4oKTsKQXBpUmVzcG9uc2VPZlBheW1lbnRSZXNwb25zZSByZXNwb25zZSA9IHBheW1lbnRzQXBpLmNyZWF0ZVBheW1lbnRVc2luZ1BPU1QoY29uc2VudFRva2VuLCBwYXltZW50UmVxdWVzdCk7CmBgYAoKLSBDaGVjayB0aGUgcGF5bWVudCBzdGF0dXM6CmBgYGphdmEKU3RyaW5nIGNvbnNlbnRUb2tlbiA9IGNvbnNlbnQuZ2V0Q29uc2VudFRva2VuKCk7ClN0cmluZyBwYXltZW50SWQgPSAgcGF5bWVudFJlc3BvbnNlLmdldERhdGEoKS5nZXRJZCgpOwpBcGlSZXNwb25zZU9mUGF5bWVudFJlc3BvbnNlIGFwaVJlc3BvbnNlT2ZQYXltZW50UmVzcG9uc2UgPSBwYXltZW50c0FwaS5nZXRQYXltZW50U3RhdHVzVXNpbmdHRVQocGF5bWVudElkLCBjb25zZW50VG9rZW4pOwpgYGAKCgojIyBGdXJ0aGVyIGluZm9ybWF0aW9uCgpGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZ2V0IGNvbm5lY3RlZCwgdmlzaXQgdGhlIFtZYXBpbHkgS25vd2xlZGdlIEJhc2VdKGh0dHBzOi8va2IueWFwaWx5LmNvbSkuCgojIyMjIyMgW1dlYnNpdGVdKGh0dHBzOi8veWFwaWx5LmNvbSkgfCBbTGVnYWxdKGh0dHBzOi8veWFwaWx5LmNvbS9sZWdhbC1wb2xpY2llcykgfCBbQ29udGFjdCBVc10obWFpbHRvOmluZm9AeWFwaWx5LmNvbSkgCgo= readmeEtag: '"47d36eb12a8b997bf64a83f71f118f6684009623"' readmeLastModified: Fri, 07 Oct 2022 11:52:19 GMT repositoryId: 148512801 description: >- Java SDK generated against the Yapily API. This SDK can be used to connect to Open Banking entities. created: '2018-09-12T16:54:43Z' updated: '2022-06-09T14:16:35Z' language: Java archived: false stars: 12 watchers: 6 forks: 3 owner: yapily logo: https://avatars.githubusercontent.com/u/36482918?v=4 license: MIT repoEtag: '"2c32f50f3c1a175ed1d9091ccccebf56acb6f36bc4b3b33dd380da5c9ddf271b"' repoLastModified: Thu, 09 Jun 2022 14:16:35 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/notethan/scorpio v3: true repositoryMetadata: base64Readme: >- IyBTY29ycGlvCgohW1Rlc3QgQ0kgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vbm90RXRoYW4vc2NvcnBpby9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbC9iYWRnZS5zdmc/YnJhbmNoPXN0YWJsZSkKWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIvbm90RXRoYW4vc2NvcnBpby9iYWRnZS5zdmcpXShodHRwczovL2NvdmVyYWxscy5pby9naXRodWIvbm90RXRoYW4vc2NvcnBpbykKClNjb3JwaW8gaXMgYSBsaWJyYXJ5IHRoYXQgaGVscHMgeW91LCBhcyBhIGNsaWVudCwgY29uc3VtZSBhbiBIVFRQIHNlcnZpY2UgZGVzY3JpYmVkIGJ5IGFuIE9wZW5BUEkgZG9jdW1lbnQuIFlvdSBwcm92aWRlIHRoZSBPcGVuQVBJIGRlc2NyaXB0aW9uIGRvY3VtZW50LCBhIGxpdHRsZSBiaXQgb2YgY29uZmlndXJhdGlvbiwgYW5kIFNjb3JwaW8gd2lsbCB0YWtlIHRoYXQgYW5kIGR5bmFtaWNhbGx5IGdlbmVyYXRlIGFuIGludGVyZmFjZSBmb3IgeW91IHRvIGNhbGwgdGhlIHNlcnZpY2UncyBvcGVyYXRpb25zIGFuZCBpbnRlcmFjdCB3aXRoIGl0cyByZXNvdXJjZXMgYXMgYW4gT1JNLgoKTm90ZTogVGhlIGNhbm9uaWNhbCBsb2NhdGlvbiBvZiB0aGlzIFJFQURNRSBpcyBvbiBbUnVieURvY10oaHR0cDovL3J1Ynlkb2MuaW5mby9nZW1zL3Njb3JwaW8vKS4gV2hlbiB2aWV3ZWQgb24gW0dpdGh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL25vdEV0aGFuL3Njb3JwaW8vKSwgaXQgbWF5IGJlIGluY29uc2lzdGVudCB3aXRoIHRoZSBsYXRlc3QgcmVsZWFzZWQgZ2VtLCBhbmQgWWFyZG9jIGxpbmtzIHdpbGwgbm90IHdvcmsuCgojIyBCYWNrZ3JvdW5kCgpUbyBzdGFydCB3aXRoLCB5b3UgbmVlZCBhbiBPcGVuQVBJIChmb3JtZXJseSBrbm93biBhcyBTd2FnZ2VyKSBkb2N1bWVudCBkZXNjcmliaW5nIGEgc2VydmljZSB5b3Ugd2lsbCBiZSBjb25zdW1pbmcuIHYyIGFuZCB2MyBhcmUgYm90aCBzdXBwb3J0ZWQuW14xXSBUaGlzIGRvY3VtZW50IGNhbiBiZSB3cml0dGVuIGJ5IGhhbmQgb3Igc29tZXRpbWVzIGdlbmVyYXRlZCBmcm9tIG90aGVyIGV4aXN0aW5nIHNvdXJjZXMuIFRoZSBjcmVhdGlvbiBvZiBhbiBPcGVuQVBJIGRvY3VtZW50IGRlc2NyaWJpbmcgeW91ciBzZXJ2aWNlIGlzIG91dHNpZGUgdGhlIHNjb3BlIG9mIFNjb3JwaW8uIEhlcmUgYXJlIHNldmVyYWwgcmVzb3VyY2VzIG9uIE9wZW5BUEk6CgotIFtPcGVuQVBJIFNwZWNpZmljYXRpb24gYXQgV2lraXBlZGlhXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcGVuQVBJX1NwZWNpZmljYXRpb24pCi0gW09wZW5BUEkgSW5pdGlhdGl2ZV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgaXMgdGhlIG9mZmljaWFsIHdlYiBzaXRlIGZvciBPcGVuQVBJCi0gW09wZW5BUEkgU3BlY2lmaWNhdGlvbiBvbiBHaXRIdWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKQotIFtzd2FnZ2VyLmlvXShodHRwczovL3N3YWdnZXIuaW8vKSBBUEkgdG9vbGluZwoKT3BlbkFQSSByZWxpZXMgb24gdGhlIGRlZmluaXRpb24gb2Ygc2NoZW1hcyB1c2luZyB0aGUgSlNPTiBzY2hlbWEgc3BlY2lmaWNhdGlvbiwgd2hpY2ggY2FuIGJlIGxlYXJuZWQgYWJvdXQgYXQgaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvCgpPbmNlIHlvdSBoYXZlIHRoZSBPcGVuQVBJIGRvY3VtZW50IGRlc2NyaWJpbmcgdGhlIHNlcnZpY2UgeW91IHdpbGwgY29uc3VtZSwgeW91IGNhbiBnZXQgc3RhcnRlZCBpbXBsZW1lbnRpbmcgdGhlIGNvZGUgdGhhdCB3aWxsIGludGVyYWN0IHdpdGggdGhhdCBzZXJ2aWNlLgoKW14xXTogQ2VydGFpbiBmZWF0dXJlcyBtYXkgYmUgbWlzc2luZywgYnV0IFNjb3JwaW8gdHJpZXMgdG8gbWFrZSB3b3JrYXJvdW5kcyBlYXN5LiBJc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgcmVnYXJkaW5nIG1pc3NpbmcgZnVuY3Rpb25hbGl0eSBhcmUgd2VsY29tZS4KCiMjIFBldCBTdG9yZSAodXNpbmcgU2NvcnBpbzo6UmVzb3VyY2VCYXNlKQoKTGV0J3MgZGl2ZSBpbnRvIHNvbWUgY29kZSwgc2hhbGwgd2U/IElmIHlvdSBoYXZlIGxlYXJuZWQgYWJvdXQgT3BlbkFQSSwgeW91IGxpa2VseSBsZWFybmVkIHVzaW5nIHRoZSBleGFtcGxlIG9mIHRoZSBQZXQgU3RvcmUgc2VydmljZS4gVGhpcyBSRUFETUUgd2lsbCB1c2UgdGhlIHNhbWUgc2VydmljZS4gSXRzIGRvY3VtZW50YXRpb24gaXMgYXQgaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvLy4KClVzaW5nIHRoZSBPcGVuQVBJIGRvY3VtZW50LCB3ZSBjYW4gc3RhcnQgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgcGV0IHN0b3JlIHdpdGggdmVyeSBsaXR0bGUgY29kZS4gSGVyZSBpcyB0aGF0IGNvZGUsIHdpdGggZXhwbGFuYXRpb25zIG9mIGVhY2ggcGFydCBpbiB0aGUgY29tbWVudHMuCgpgYGBydWJ5CnJlcXVpcmUgJ3Njb3JwaW8nCiMgUGV0U3RvcmUgaXMgYSBtb2R1bGUgdG8gY29udGFpbiBvdXIgcGV0IHN0b3JlIHJlbGF0ZWQgY2xhc3Nlcy4KIyBpdCBpcyBvcHRpb25hbCAtIHlvdXIgbmFtaW5nIGNvbnZlbnRpb25zIGFyZSB5b3VyIG93bi4KbW9kdWxlIFBldFN0b3JlCiAgIyBTY29ycGlvJ3MgcmVjb21tZW5kZWQgc3RydWN0dXJlIGlzIHRvIGhhdmUgYSBiYXNlIGNsYXNzIHdoaWNoIGluaGVyaXRzIGZyb20KICAjIFNjb3JwaW86OlJlc291cmNlQmFzZSB0byByZXByZXNlbnQgdGhlIFBldCBTdG9yZSBhbmQgYWxsIGl0cyByZXNvdXJjZXMuCiAgIwogICMgeW91IGNvbmZpZ3VyZSB0aGUgb3BlbmFwaSBkb2N1bWVudCBhbmQgb3RoZXIgc2hhcmVkIGNvbmZpZ3VyYXRpb24gb24gdGhpcyBjbGFzcy4KICBjbGFzcyBSZXNvdXJjZSA8IFNjb3JwaW86OlJlc291cmNlQmFzZQogICAgIyBzZXQgdGhlIG9wZW5hcGkgZG9jdW1lbnQuIHlvdSdsbCB1c3VhbGx5IHdhbnQgdGhpcyB0byBiZSBhIGZpbGUgaW4geW91ciBsb2NhbCBmaWxlc3lzdGVtCiAgICAjIChtYWtpbmcgbmV0d29yayBjYWxscyBhdCBhcHBsaWNhdGlvbiBib290IHRpbWUgaXMgdXN1YWxseSBhIGJhZCBpZGVhKSwgYnV0IGZvciB0aGlzCiAgICAjIGV4YW1wbGUgd2Ugd2lsbCBkbyBhIHF1aWNrLWFuZC1kaXJ0eSBodHRwIGdldC4KICAgIHJlcXVpcmUgJ2pzb24nCiAgICBzZWxmLm9wZW5hcGlfZG9jdW1lbnQgPSBKU09OLnBhcnNlKEZhcmFkYXkuZ2V0KCdodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uJykuYm9keSkKICBlbmQKCiAgIyBhIFBldCBpcyBhIHJlc291cmNlIG9mIHRoZSBwZXQgc3RvcmUsIHNvIGluaGVyaXRzIGZyb20gUGV0U3RvcmU6OlJlc291cmNlCiAgY2xhc3MgUGV0IDwgUmVzb3VyY2UKICAgICMgc2V0dGluZyB0aGUgdGFnIG5hbWUgdGVsbHMgU2NvcnBpbyB0byBhc3NvY2lhdGUgb3BlcmF0aW9ucyB0YWdnZWQgd2l0aCAncGV0JyB3aXRoIHRoaXMKICAgICMgY2xhc3MgYW5kIGl0cyBpbnN0YW5jZXMuIHRoaXMgbGV0cyB5b3UgY2FsbCBvcGVyYXRpb25zIHN1Y2ggYXMgYWRkUGV0LCB1cGRhdGVQZXQsIGV0Yy4KICAgIHNlbGYudGFnX25hbWUgPSAncGV0JwoKICAgICMgc2V0dGluZyB0aGUgc2NoZW1hcyB3aGljaCByZXByZXNlbnQgYSBQZXQgd2lsbCBsZXQgc2NvcnBpbyByZXR1cm4gcmVzdWx0cyBmcm9tIG9wZXJhdGlvbgogICAgIyBjYWxscyBwcm9wZXJseSBpbnN0YW50aWF0ZWQgYXMgUGV0IGluc3RhbmNlcy4gZm9yIGV4YW1wbGUsIGNhbGxpbmcgZ2V0UGV0QnlJZCB3aWxsIHJldHVybgogICAgIyBhIFBldFN0b3JlOjpQZXQgaW5zdGFuY2Ugc2luY2UgaXRzIHN1Y2Nlc3MgcmVzcG9uc2UgcmVmZXJzIHRvICMvZGVmaW5pdGlvbnMvUGV0LgogICAgIwogICAgIyB0aGlzIHdvcmtzIGZvciBuZXN0ZWQgc3RydWN0dXJlcyBhcyB3ZWxsLCBlLmcuIGZpbmRQZXRzQnlTdGF0dXMgcmV0dXJucyBhbiBhcnJheSBvZgogICAgIyAjL2RlZmluaXRpb25zL1BldCBhbmQgbGlrZXdpc2UgU2NvcnBpbyB3aWxsIHJldHVybiBhbiBhcnJheSBvZiBQZXRTdG9yZTo6UGV0IGluc3RhbmNlcy4KICAgICMKICAgICMgdGhpcyBhbHNvIGFkZHMgYWNjZXNzb3JzIGZvciBwcm9wZXJ0aWVzIG9mIHRoZSBzY2hlbWEgLSBpbiB0aGlzIGNhc2UgI2lkLCAjbmFtZSwgI3RhZ3MsIGV0Yy4KICAgIHNlbGYucmVwcmVzZW50ZWRfc2NoZW1hcyA9IFtvcGVuYXBpX2RvY3VtZW50LmRlZmluaXRpb25zWydQZXQnXV0KICBlbmQKZW5kCmBgYAoKVGhhdCBzaG91bGQgYmUgYWxsIHlvdSBuZWVkIHRvIHN0YXJ0IGNhbGxpbmcgb3BlcmF0aW9uczoKCmBgYHJ1YnkKIyBjYWxsIHRoZSBvcGVyYXRpb24gZmluZFBldHNCeVN0YXR1cwojIGRvYzogaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvLyMvcGV0L2ZpbmRQZXRzQnlTdGF0dXMKc29sZF9wZXRzID0gUGV0U3RvcmU6OlBldC5maW5kUGV0c0J5U3RhdHVzKHN0YXR1czogJ3NvbGQnKQojIHNvbGRfcGV0cyBpcyBhbiBhcnJheS1saWtlIGNvbGxlY3Rpb24gb2YgUGV0U3RvcmU6OlBldCBpbnN0YW5jZXMKCnBldCA9IHNvbGRfcGV0cy5zYW1wbGUKCnBldC50YWdzLm1hcCgmOm5hbWUpCiMgbm90ZSB0aGF0IHlvdSBoYXZlIGFjY2Vzc29ycyBvbiBQZXRTdG9yZTo6UGV0IGxpa2UgI3RhZ3MsIGFuZCBhbHNvIHRoYXQKIyB0YWdzIGhhdmUgYWNjZXNzb3JzIGZvciBwcm9wZXJ0aWVzICduYW1lJyBhbmQgJ2lkJyBmcm9tIHRoZSB0YWdzIHNjaGVtYQojICh5b3VyIHRhZyBuYW1lcyB3aWxsIGJlIGRpZmZlcmVudCBkZXBlbmRpbmcgb24gd2hhdCdzIGluIHRoZSBwZXQgc3RvcmUpCiMgPT4gWyJhdWN1bmUiXQoKIyBjb21wYXJlIHRvIGdldFBldEJ5SWQ6IGh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby8jL3BldC9nZXRQZXRCeUlkCnBldCA9PSBQZXRTdG9yZTo6UGV0LmdldFBldEJ5SWQocGV0SWQ6IHBldFsnaWQnXSkKIyBwZXQgaXMgdGhlIHNhbWUsIHJldHJpZXZlZCB1c2luZyB0aGUgZ2V0UGV0QnlJZCBvcGVyYXRpb24KCiMgbGV0J3MgbmFtZSB0aGUgcGV0IGFmdGVyIG91cnNlbGYKcGV0Lm5hbWUgPSBFTlZbJ1VTRVInXQoKIyBzdG9yZSB0aGUgcmVzdWx0IGluIHRoZSBwZXQgc3RvcmUuIG5vdGUgdGhlIHVwZGF0ZVBldCBjYWxsIGZyb20gdGhlIGluc3RhbmNlIC0gb3VyCiMgY2FsbHMgc28gZmFyIGhhdmUgYmVlbiBvbiB0aGUgY2xhc3MgUGV0U3RvcmU6OlBldCwgYnV0IHNjb3JwaW8gZGVmaW5lcyBpbnN0YW5jZQojIG1ldGhvZHMgdG8gY2FsbCBvcGVyYXRpb25zIHdoZXJlIGFwcHJvcHJpYXRlIGFzIHdlbGwuCiMgdXBkYXRlUGV0OiBodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vIy9wZXQvdXBkYXRlUGV0CnBldC51cGRhdGVQZXQKCiMgY2hlY2sgdGhhdCBpdCB3YXMgc2F2ZWQKUGV0U3RvcmU6OlBldC5nZXRQZXRCeUlkKHBldElkOiBwZXRbJ2lkJ10pLm5hbWUKIyA9PiAiZXRoYW4iICh1bmxlc3MgZm9yIHNvbWUgcmVhc29uIHlvdXIgbmFtZSBpcyBub3QgRXRoYW4pCgojIGhlcmUgaXMgaG93IGVycm9ycyBhcmUgaGFuZGxlZDoKUGV0U3RvcmU6OlBldC5nZXRQZXRCeUlkKHBldElkOiAwKQojIHJhaXNlczogU2NvcnBpbzo6SFRUUEVycm9yczo6Tm90Rm91bmQ0MDRFcnJvcgojICAgRXJyb3IgY2FsbGluZyBvcGVyYXRpb24gZ2V0UGV0QnlJZCBvbiBQZXRTdG9yZTo6UGV0OgojICAgeyJjb2RlIjoxLCJ0eXBlIjoiZXJyb3IiLCJtZXNzYWdlIjoiUGV0IG5vdCBmb3VuZCJ9CmBgYAoKSXNuJ3QgdGhhdCBjb29sPyBZb3UgZ2V0IGNsYXNzIG1ldGhvZHMgbGlrZSBnZXRQZXRCeUlkLCBpbnN0YW5jZSBtZXRob2RzIGxpa2UgdXBkYXRlUGV0LCBhdHRyaWJ1dGUgYWNjZXNzb3JzIGxpa2UgI25hbWUgYW5kICN0YWdzLCBhbGwgZHluYW1pY2FsbHkgZ2VuZXJhdGVkIGZyb20gdGhlIE9wZW5BUEkgZGVzY3JpcHRpb24uIFlvdSBqdXN0IG1ha2UgYSBmZXcgY2xhc3NlcyB3aXRoIGEgbGluZSBvciB0d28gb2YgY29uZmlndXJhdGlvbiBpbiBlYWNoLgoKIyMgUGV0IFN0b3JlICh1c2luZyBTY29ycGlvOjpPcGVuQVBJIGNsYXNzZXMpCgpZb3UgZG8gbm90IGhhdmUgdG8gZGVmaW5lIHJlc291cmNlIGNsYXNzZXMgdG8gdXNlIFNjb3JwaW8gdG8gY2FsbCBPcGVuQVBJIG9wZXJhdGlvbnMgLSB0aGUgY2xhc3NlcyBTY29ycGlvIHVzZXMgdG8gcmVwcmVzZW50IGNvbmNlcHRzIGZyb20gT3BlbkFQSSBjYW4gYmUgY2FsbGVkIGRpcmVjdGx5LiBTY29ycGlvIHVzZXMgW0pTSV0oaHR0cHM6Ly9naXRodWIuY29tL25vdEV0aGFuL2pzaSkgY2xhc3NlcyB0byByZXByZXNlbnQgT3BlbkFQSSBzY2hlbWVzIHN1Y2ggYXMgdGhlIERvY3VtZW50IGFuZCBpdHMgT3BlcmF0aW9ucy4KCldlIHN0YXJ0IGJ5IGluc3RhbnRpYXRpbmcgdGhlIE9wZW5BUEkgZG9jdW1lbnQuIGBTY29ycGlvOjpPcGVuQVBJOjpEb2N1bWVudC5mcm9tX2luc3RhbmNlYCByZXR1cm5zIGEgVjIgb3IgVjMgT3BlbkFQSSBEb2N1bWVudCBjbGFzcyBpbnN0YW5jZS4KCmBgYHJ1YnkKcmVxdWlyZSAnc2NvcnBpbycKcGV0X3N0b3JlX2RvYyA9IFNjb3JwaW86Ok9wZW5BUEk6OkRvY3VtZW50LmZyb21faW5zdGFuY2UoSlNPTi5wYXJzZShGYXJhZGF5LmdldCgnaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YyL3N3YWdnZXIuanNvbicpLmJvZHkpKQojID0+ICN7PFNjb3JwaW86Ok9wZW5BUEk6OlYyOjpEb2N1bWVudCBmcmFnbWVudD0iIyI+ICJzd2FnZ2VyIiA9PiAiMi4wIiwgLi4ufQpgYGAKClRoZSBPcGVuQVBJIGRvY3VtZW50IGhvbGRzIHRoZSBKU09OIHRoYXQgcmVwcmVzZW50cyBpdCwgc28gdG8gZ2V0IGFuIE9wZXJhdGlvbiB5b3UgZ28gdGhyb3VnaCB0aGUgZG9jdW1lbnQncyBwYXRocywganVzdCBhcyBpdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgSlNPTi4KCmBgYHJ1YnkKIyB0aGUgc3RvcmUgaW52ZW50b3J5IG9wZXJhdGlvbiB3aWxsIGxldCB1cyBzZWUgd2hhdCBzdGF0dXNlcyB0aGVyZSBhcmUgaW4gdGhlIHN0b3JlLgppbnZlbnRvcnlfb3AgPSBwZXRfc3RvcmVfZG9jLnBhdGhzWycvc3RvcmUvaW52ZW50b3J5J11bJ2dldCddCiMgPT4gI3s8SlNJIChTY29ycGlvOjpPcGVuQVBJOjpWMjo6T3BlcmF0aW9uKT4KIyAgICAgICJzdW1tYXJ5IiA9PiAiUmV0dXJucyBwZXQgaW52ZW50b3JpZXMgYnkgc3RhdHVzIiwKIyAgICAgICJvcGVyYXRpb25JZCIgPT4gImdldEludmVudG9yeSIsCiMgICAgICAuLi4KIyAgICB9CmBgYAoKQWx0ZXJuYXRpdmVseSwgU2NvcnBpbyBkZWZpbmVzIGEgaGVscGVyIGBEb2N1bWVudCNvcGVyYXRpb25zYCB3aGljaCBiZWhhdmVzIGxpa2UgYW4gRW51bWVyYWJsZSBvZiBhbGwgdGhlIE9wZXJhdGlvbnMgaW4gdGhlIERvY3VtZW50LiBJdCBjYW4gYmUgc3Vic2NyaXB0ZWQgd2l0aCB0aGUgYG9wZXJhdGlvbklkYDoKCmBgYHJ1YnkKaW52ZW50b3J5X29wID0gcGV0X3N0b3JlX2RvYy5vcGVyYXRpb25zWydnZXRJbnZlbnRvcnknXQojID0+IHJldHVybnMgdGhlIHNhbWUgaW52ZW50b3J5X29wIGFzIGFib3ZlLgpgYGAKCk5vdyB0aGF0IHdlIGhhdmUgYW4gb3BlcmF0aW9uLCB3ZSBjYW4gcnVuIHJlcXVlc3RzIGZyb20gaXQuIHtTY29ycGlvOjpPcGVuQVBJOjpPcGVyYXRpb24jcnVufSBwZXJmb3JtcyB0aGUgb3BlcmF0aW9uIGJ5IHJ1bm5pbmcgYSByZXF1ZXN0LiBJZiB0aGUgcmVzcG9uc2UgaXMgYW4gZXJyb3IsIGEge1Njb3JwaW86OkhUVFBFcnJvcn0gc3ViY2xhc3Mgd2lsbCBiZSByYWlzZWQuIE9uIHN1Y2Nlc3MsIGl0IHJldHVybnMgdGhlIHJlc3BvbnNlIGJvZHkgZW50aXR5LCBpbnN0YW50aWF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBPcGVuQVBJIHNjaGVtYSBmb3IgdGhlIG9wZXJhdGlvbiByZXNwb25zZSwgaWYgc3BlY2lmaWVkLiBGb3IgbW9yZSBkZXRhaWwgb24gaG93IGpzb24tc2NoZW1hIGluc3RhbmNlcyBhcmUgcmVwcmVzZW50ZWQsIHNlZSB0aGUgZ2VtIFtKU0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9ub3RFdGhhbi9qc2kpLgoKYGBgcnVieQppbnZlbnRvcnkgPSBpbnZlbnRvcnlfb3AucnVuCiMgPT4gI3s8SlNJPgojICAgICAgInVuYXZhaWxhYmxlIiA9PiA0LAojICAgICAgInVubG92ZWQgLSBuZWVkcyBhIGhvbWUiID0+IDEsCiMgICAgICAiYXZhaWxhYmxlIiA9PiAyMzUwLAojICAgICAgInNvbGQiID0+IDU3OTAsCiMgICAgICAiZG9nIiA9PiAxLAojICAgIH0KYGBgCgpsZXQncyBwaWNrIGEgc3RhdGUgYW5kIGZpbmQgYSBwZXQuIHdlJ2xsIGdvIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGV4YW1wbGUgaW4gdGhlIFJlc291cmNlQmFzZSBzZWN0aW9uIHByZXR0eSBtdWNoIGxpa2UgaXQgaXMgdXAgdGhlcmU6CgpgYGBydWJ5CiMgY2FsbCB0aGUgb3BlcmF0aW9uIGZpbmRQZXRzQnlTdGF0dXMKIyBkb2M6IGh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby8jL3BldC9maW5kUGV0c0J5U3RhdHVzCnNvbGRfcGV0cyA9IHBldF9zdG9yZV9kb2Mub3BlcmF0aW9uc1snZmluZFBldHNCeVN0YXR1cyddLnJ1bihzdGF0dXM6ICdzb2xkJykKIyBzb2xkX3BldHMgaXMgYW4gYXJyYXktbGlrZSBjb2xsZWN0aW9uIG9mIEpTSSBpbnN0YW5jZXMKCnBldCA9IHNvbGRfcGV0cy5kZXRlY3QgeyB8cGV0fCBwZXQudGFncy5hbnk/IH0KCnBldC50YWdzLm1hcCgmOm5hbWUpCiMgbm90ZSB0aGF0IHlvdSBoYXZlIGFjY2Vzc29ycyBvbiB0aGUgcmV0dXJuZWQgSlNJIGxpa2UgI3RhZ3MsIGFuZCBhbHNvIHRoYXQKIyB0YWdzIGhhdmUgYWNjZXNzb3JzIGZvciBwcm9wZXJ0aWVzICduYW1lJyBhbmQgJ2lkJyBmcm9tIHRoZSB0YWdzIHNjaGVtYQojICh5b3VyIHRhZyBuYW1lcyB3aWxsIGJlIGRpZmZlcmVudCBkZXBlbmRpbmcgb24gd2hhdCdzIGluIHRoZSBwZXQgc3RvcmUpCiMgPT4gWyJhdWN1bmUiXQoKIyBjb21wYXJlIHRoZSBwZXQgZnJvbSBmaW5kUGV0c0J5U3RhdHVzIHRvIG9uZSByZXR1cm5lZCBmcm9tIGdldFBldEJ5SWQKIyBkb2M6IGh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby8jL3BldC9nZXRQZXRCeUlkCnBldF9ieV9pZCA9IHBldF9zdG9yZV9kb2Mub3BlcmF0aW9uc1snZ2V0UGV0QnlJZCddLnJ1bihwZXRJZDogcGV0WydpZCddKQoKIyB1bmxpa2UgUmVzb3VyY2VCYXNlIGluc3RhbmNlcyBhYm92ZSwgSlNJIGluc3RhbmNlcyBoYXZlIHN0cmljdGVyCiMgZXF1YWxpdHkgYW5kIHRoZSBwZXRzIHJldHVybmVkIGZyb20gZGlmZmVyZW50IG9wZXJhdGlvbnMgYXJlIG5vdAojIGVxdWFsLCBiZWNhdXNlIHRoZXkgYXJlIGluIGRpZmZlcmVudCBKU09OIGRvY3VtZW50cy4KcGV0X2J5X2lkID09IHBldAojID0+IGZhbHNlCgojIGxldCdzIG5hbWUgdGhlIHBldCBhZnRlciBvdXJzZWxmCnBldC5uYW1lID0gRU5WWydVU0VSJ10KCiMgc3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUgcGV0IHN0b3JlLgojIHVwZGF0ZVBldDogaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvLyMvcGV0L3VwZGF0ZVBldApwZXRfc3RvcmVfZG9jLm9wZXJhdGlvbnNbJ3VwZGF0ZVBldCddLnJ1bihib2R5X29iamVjdDogcGV0KQoKIyBjaGVjayB0aGF0IGl0IHdhcyBzYXZlZApwZXRfc3RvcmVfZG9jLm9wZXJhdGlvbnNbJ2dldFBldEJ5SWQnXS5ydW4ocGV0SWQ6IHBldFsnaWQnXSkubmFtZQojID0+ICJldGhhbiIgKHVubGVzcyBmb3Igc29tZSByZWFzb24geW91ciBuYW1lIGlzIG5vdCBFdGhhbikKCiMgaGVyZSBpcyBob3cgZXJyb3JzIGFyZSBoYW5kbGVkOgpwZXRfc3RvcmVfZG9jLm9wZXJhdGlvbnNbJ2dldFBldEJ5SWQnXS5ydW4ocGV0SWQ6IDApCiMgcmFpc2VzOiBTY29ycGlvOjpIVFRQRXJyb3JzOjpOb3RGb3VuZDQwNEVycm9yCiMgICBFcnJvciBjYWxsaW5nIG9wZXJhdGlvbiBnZXRQZXRCeUlkOgojICAgeyJjb2RlIjoxLCJ0eXBlIjoiZXJyb3IiLCJtZXNzYWdlIjoiUGV0IG5vdCBmb3VuZCJ9CmBgYAoKIyMjIEFub3RoZXIgRXhhbXBsZTogQmxvZwoKRm9yIGFub3RoZXIgZXhhbXBsZSBvZiBhbiBBUEkgdGhhdCBhIGNsaWVudCBpbnRlcmFjdHMgd2l0aCB1c2luZyBTY29ycGlvOjpSZXNvdXJjZUJhc2UsIFNjb3JwaW8ncyB0ZXN0cyBpbXBsZW1lbnQgdGhlIEJsb2cgc2VydmljZS4gVGhpcyBpcyBkZWZpbmVkIGluIHRlc3QvYmxvZy5yYi4gVGhlIHNlcnZpY2UgdXNlcyBBY3RpdmVSZWNvcmQgbW9kZWxzIGFuZCBTaW5hdHJhIHRvIG1ha2UgYSBzaW1wbGUgUkVTVGZ1bCBzZXJ2aWNlLgoKSXRzIEFQSSBpcyBkZXNjcmliZWQgaW4gYHRlc3QvYmxvZy5vcGVuYXBpLnltbGAsIGRlZmluaW5nIHRoZSBBcnRpY2xlIHJlc291cmNlLCBzZXZlcmFsIG9wZXJhdGlvbnMsIGFuZCBzY2hlbWFzLiBUaGUgY2xpZW50IGlzIHNldCB1cCBpbiBgdGVzdC9ibG9nX3Njb3JwaW9fbW9kZWxzLnJiYC4gVGhlIGJhc2UgY2xhc3MgQmxvZ01vZGVsIGRlZmluZXMgdGhlIGJhc2VfdXJsIGFuZCB0aGUgYXBpIGRlc2NyaXB0aW9uLCBhcyB3ZWxsIGFzIHNvbWUgb3RoZXIgb3B0aW9uYWwgc2V0dXAgZG9uZSBmb3IgdGVzdGluZy4gSXRzIG9wZXJhdGlvbnMgYXJlIHRlc3RlZCBpbiBgdGVzdC9zY29ycGlvX3Rlc3QucmJgLgoKIyMgU2NvcnBpbzo6UmVzb3VyY2VCYXNlCgpTY29ycGlvOjpSZXNvdXJjZUJhc2UgaXMgdGhlIG1haW4gY2xhc3MgdXNlZCBpbiBhYnN0cmFjdGluZyBvbiBPcGVuQVBJIGRvY3VtZW50LiBTY29ycGlvOjpSZXNvdXJjZUJhc2UgYWltcyB0byByZXByZXNlbnQgUkVTVGZ1bCByZXNvdXJjZXMgaW4gcnVieSBjbGFzc2VzIHdpdGggYXMgbGl0dGxlIGNvZGUgYXMgcG9zc2libGUsIGdpdmVuIGEgc2VydmljZSB3aXRoIGEgcHJvcGVybHkgY29uc3RydWN0ZWQgT3BlbkFQSSBkb2N1bWVudC4KCkEgY2xhc3Mgd2hpY2ggc3ViY2xhc3NlcyBTY29ycGlvOjpSZXNvdXJjZUJhc2UgZGlyZWN0bHkgKHN1Y2ggYXMgUGV0U3RvcmU6OlJlc291cmNlIGFib3ZlKSBzaG91bGQgZ2VuZXJhbGx5IHJlcHJlc2VudCB0aGUgd2hvbGUgQVBJIC0geW91IHNldCB0aGUgb3BlbmFwaV9kb2N1bWVudCBhbmQgb3RoZXIgY29uZmlndXJhdGlvbiBvbiB0aGlzIGNsYXNzLiBBcyBzdWNoLCBpdCBpcyBnZW5lcmFsbHkgbm90IGluc3RhbnRpYXRlZC4gSXRzIHN1YmNsYXNzZXMsIHJlcHJlc2VudGluZyByZXNvdXJjZXMgd2l0aCBhIHRhZyBvciB3aXRoIHNjaGVtYSBkZWZpbml0aW9ucyBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudCwgYXJlIHdoYXQgeW91IG1vc3RseSBpbnN0YW50aWF0ZSBhbmQgaW50ZXJhY3Qgd2l0aC4KCkEgbW9kZWwgcmVwcmVzZW50aW5nIGEgcmVzb3VyY2UgbmVlZHMgdG8gYmUgY29uZmlndXJlZCwgbWluaW1hbGx5LCB3aXRoOgoKLSB0aGUgT3BlbkFQSSBkb2N1bWVudCBkZXNjcmliaW5nIHRoZSBBUEkKLSB0aGUgc2NoZW1hcyB0aGF0IHJlcHJlc2VudCBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsLCBpZiBhbnkKCklmIHRoZSByZXNvdXJjZSBoYXMgSFRUUCBvcGVyYXRpb25zIGFzc29jaWF0ZWQgd2l0aCBpdCAobW9zdCwgYnV0IG5vdCBhbGwgcmVzb3VyY2VzIHdpbGwpOgoKLSBhIHRhZyBuYW1lIGlkZW50aWZ5aW5nIGl0cyB0YWdnZWQgb3BlcmF0aW9ucwoKV2hlbiB0aGVzZSBhcmUgc2V0LCBTY29ycGlvOjpSZXNvdXJjZUJhc2UgbG9va3MgdGhyb3VnaCB0aGUgQVBJIGRlc2NyaXB0aW9uIGFuZCBkeW5hbWljYWxseSBzZXRzIHVwIG1ldGhvZHMgZm9yIHRoZSBtb2RlbDoKCi0gYWNjZXNzb3JzIGZvciBwcm9wZXJ0aWVzIG9mIHRoZSBtb2RlbCBkZWZpbmVkIGFzIHByb3BlcnRpZXMgb2Ygc2NoZW1hcyByZXByZXNlbnRpbmcgdGhlIHJlc291cmNlIGluIHRoZSBkZXNjcmlwdGlvbiBkb2N1bWVudAotIEFQSSBtZXRob2QgY2FsbHMgb24gdGhlIG1vZGVsIGNsYXNzIGFuZCwgd2hlcmUgYXBwcm9wcmlhdGUsIG9uIHRoZSBtb2RlbCBpbnN0YW5jZQoKIyMgU2NvcnBpbzo6VXIKCklmIHlvdSBuZWVkIGEgbW9yZSBjb21wbGV0ZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgSFRUUCByZXF1ZXN0IGFuZC9vciByZXNwb25zZSwgU2NvcnBpbzo6T3BlbkFQSTo6T3BlcmF0aW9uI3J1bl91ciBvciBTY29ycGlvOjpSZXF1ZXN0I3J1bl91ciB3aWxsIHJldHVybiBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXF1ZXN0IGFuZCByZXNwb25zZSBkZWZpbmVkIGJ5IHRoZSBnZW0gW1VyXShodHRwczovL2dpdGh1Yi5jb20vbm90RXRoYW4vdXIpLiBTZWUgdGhhdCBsaW5rIGZvciBtb3JlIGRldGFpbC4gUmVsYXRpbmcgdG8gdGhlIGV4YW1wbGUgYWJvdmUgdGl0bGVkICJQZXQgU3RvcmUgKHVzaW5nIFNjb3JwaW86Ok9wZW5BUEkgY2xhc3NlcykiLCB0aGlzIGNvZGUgd2lsbCByZXR1cm4gYW4gVXI6CgpgYGBydWJ5CmludmVudG9yeV9vcCA9IFNjb3JwaW86Ok9wZW5BUEk6OkRvY3VtZW50LmZyb21faW5zdGFuY2UoSlNPTi5wYXJzZShGYXJhZGF5LmdldCgnaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YyL3N3YWdnZXIuanNvbicpLmJvZHkpKS5wYXRoc1snL3N0b3JlL2ludmVudG9yeSddWydnZXQnXQppbnZlbnRvcnlfdXIgPSBpbnZlbnRvcnlfb3AucnVuX3VyCiMgPT4gI3s8U2NvcnBpbzo6VXIgZnJhZ21lbnQ9IiMiPiAuLi59CmBgYAoKIyMjIFNjb3JwaW8gUmVzb3VyY2VCYXNlIHBpY2tsZSBhZGFwdGVyCgpTY29ycGlvIHByb3ZpZGVzIGEgcGlja2xlIGFkYXB0ZXIgdG8gdXNlIG1vZGVscyB3aXRoIFtQaWNrbGVdKGh0dHBzOi8vcnVieWdlbXMub3JnL2dlbXMvcGlja2xlKS4gYHJlcXVpcmUgJ3Njb3JwaW8vcGlja2xlX2FkYXB0ZXInYCwgZW5zdXJlIHRoYXQgdGhlIHBpY2tsZSBPUk0gYWRhcHRlciBpcyBlbmFibGVkLCBhbmQgeW91IHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBtb2RlbHMgYXMgbm9ybWFsIHdpdGggcGlja2xlLgoKIyMjIEdvb2dsZSBBUEkgZGlzY292ZXJ5IHNlcnZpY2UKCkFuIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgU2NvcnBpbzo6UmVzb3VyY2VCYXNlIHdhcyBiYXNlZCBvbiB0aGUgZm9ybWF0IGRlZmluZWQgZm9yIEdvb2dsZSdzIEFQSSBkaXNjb3Zlcnkgc2VydmljZS4KCkZvciBiYWNrZ3JvdW5kIG9uIHRoZSBHb29nbGUgZGlzY292ZXJ5IHNlcnZpY2UgYW5kIHRoZSBBUEkgZGVzY3JpcHRpb24gZm9ybWF0IGl0IGRlZmluZXMsIHNlZToKCi0gaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vZGlzY292ZXJ5LwotIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2Rpc2NvdmVyeS92MS9yZWZlcmVuY2UvCgpUaGlzIGZvcm1hdCBpcyBzdGlsbCBzdXBwb3J0ZWQgaW5kaXJlY3RseSwgYnkgY29udmVydGluZyBmcm9tIGEgR29vZ2xlIEFQSSBkb2N1bWVudCB0byBPcGVuQVBJIHVzaW5nIGBTY29ycGlvOjpHb29nbGU6OlJlc3REZXNjcmlwdGlvbiN0b19vcGVuYXBpX2RvY3VtZW50YC4gRXhhbXBsZSBjb252ZXJzaW9uIGxvb2tzIGxpa2U6CgpgYGBydWJ5CmNsYXNzIE15TW9kZWwgPCBTY29ycGlvOjpSZXNvdXJjZUJhc2UKICByZXN0X2Rlc2NyaXB0aW9uX2RvYyA9IFlBTUwubG9hZF9maWxlKCdwYXRoL3RvL2RvYy55bWwnKQogIHJlc3RfZGVzY3JpcHRpb24gPSBTY29ycGlvOjpHb29nbGU6OlJlc3REZXNjcmlwdGlvbi5uZXcocmVzdF9kZXNjcmlwdGlvbl9kb2MpCiAgc2VsZi5vcGVuYXBpX2RvY3VtZW50ID0gcmVzdF9kZXNjcmlwdGlvbi50b19vcGVuYXBpX2RvY3VtZW50CgogICMgLi4uIHRoZSByZW1haW5kZXIgb2YgeW91ciBzZXR1cCBhbmQgbW9kZWwgY29kZSBoZXJlCmVuZApgYGAKCiMjIE90aGVyCgpUaGUgZGV0YWlsZWQsIG1hY2hpbmUtaW50ZXJwcmV0YWJsZSBkZXNjcmlwdGlvbiBvZiBhbiBBUEkgcHJvdmlkZWQgYnkgYSBwcm9wZXJseS1jb25zdHJ1Y3RlZCBPcGVuQVBJIGRvY3VtZW50IG9wZW5zIHVwIG51bWVyb3VzIHBvc3NpYmlsaXRpZXMgdG8gYXV0b21hdGUgYXNwZWN0cyBvZiBjbGllbnRzIGFuZCBzZXJ2aWNlcyB0byBhbiBBUEkuIFRoZXNlIGFyZSBwbGFubmVkIHRvIGJlIGltcGxlbWVudGVkIGluIFNjb3JwaW86CgotIGNvbnN0cnVjdGluZyB0ZXN0IG9iamVjdHMgaW4gYSBtYW5uZXIgc2ltaWxhciB0byBGYWN0b3J5Qm90LCBhbGxvd2luZyB5b3UgdG8gd3JpdGUgdGVzdHMgdGhhdCBkZXBlbmQgb24gYSBzZXJ2aWNlIHdpdGhvdXQgaGF2aW5nIHRvIGludGVyYWN0IHdpdGggYW4gYWN0dWFsIHJ1bm5pbmcgaW5zdGFuY2Ugb2YgdGhhdCBzZXJ2aWNlIHRvIHJ1biB5b3VyIHRlc3RzCi0gcmFjayBtaWRkbGV3YXJlIHRvIHRlc3QgdGhhdCBvdXRnb2luZyBIVFRQIHJlc3BvbnNlcyBhcmUgY29uZm9ybWFudCB0byB0aGVpciByZXNwb25zZSBzY2hlbWFzCi0gcmFjayBtaWRkbGV3YXJlIHRvIHRlc3QgdGhhdCBpbmNvbWluZyBIVFRQIHJlcXVlc3RzIGFyZSBjb25mb3JtYW50IHRvIHRoZWlyIHJlcXVlc3Qgc2NoZW1hcywgYW5kIHRoYXQgdGhlIHNlcnZpY2UgaGFuZGxlcyBiYWQgcmVxdWVzdHMgYXBwcm9wcmlhdGVseSAoZS5nLiBlbnN1cmluZyB0aGF0IGZvciBhbnkgYmFkIHJlcXVlc3QsIHRoZSBzZXJ2aWNlIHJlc3BvbmRzIHdpdGggYSA0eHggZXJyb3IgaW5zdGVhZCBvZiAyeHgpLgotIGludGVncmF0aW5nIHdpdGggT1JNcyB0byBnZW5lcmF0ZSBIVFRQIHJlc3BvbnNlcyB0aGF0IGFyZSBjb25mb3JtYW50IHRvIHRoZSByZXNwb25zZSBzY2hlbWEgY29ycmVzcG9uZGluZyB0byB0aGUgcmVzb3VyY2UgY29ycmVzcG9uZGluZyB0byB0aGUgT1JNIG1vZGVsCi0gZ2VuZXJhdGluZyBtb2RlbCB2YWxpZGF0aW9ucyBmb3IgT1JNcwoKIyMgTGljZW5zZQoKWzxpbWcgYWxpZ249InJpZ2h0IiBzcmM9Imh0dHBzOi8vd3d3LmdudS5vcmcvZ3JhcGhpY3MvYWdwbHYzLTE1NXg1MS5wbmciPl0oaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLTMuMC5odG1sKQoKU2NvcnBpbyBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIFtHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzXShodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwtMy4wLmh0bWwpLgoKVW5saWtlIHRoZSBNSVQgb3IgQlNEIGxpY2Vuc2VzIG1vcmUgY29tbW9ubHkgdXNlZCB3aXRoIFJ1YnkgZ2VtcywgdGhpcyBsaWNlbnNlIHJlcXVpcmVzIHRoYXQgaWYgeW91IG1vZGlmeSBTY29ycGlvIGFuZCBwcm9wYWdhdGUgeW91ciBjaGFuZ2VzLCBlLmcuIGJ5IGluY2x1ZGluZyBpdCBpbiBhIHdlYiBhcHBsaWNhdGlvbiwgeW91ciBtb2RpZmllZCB2ZXJzaW9uIG11c3QgYmUgcHVibGljbHkgYXZhaWxhYmxlLiBUaGUgY29tbW9uIHBhdGggb2YgZm9ya2luZyBvbiBHaXRodWIgc2hvdWxkIHNhdGlzZnkgdGhpcyByZXF1aXJlbWVudC4K readmeEtag: '"519bf7dee47656ac88fa65e1d1dc5105840f42b0"' readmeLastModified: Mon, 01 Jul 2024 20:54:51 GMT repositoryId: 69611598 description: Resource-based Web API Client built on OpenAPI created: '2016-09-29T22:03:37Z' updated: '2026-02-02T21:24:52Z' language: Ruby archived: false stars: 12 watchers: 1 forks: 2 owner: notEthan logo: https://avatars.githubusercontent.com/u/133719?v=4 license: NOASSERTION repoEtag: '"cf136f0653f9141230418b52a14657d2945b2e348a99b9be4221a3865027d6d7"' repoLastModified: Mon, 02 Feb 2026 21:24:52 GMT foundInMaster: true name: Scorpio homepage: https://github.com/notEthan/Scorpio language: Ruby source_description: OpenAPI 2 and 3 implementation offering a HTTP client library category: - Client Implementations - Parsers id: f5eaaee9b2fb544cef330dcd2c4f0546 - source: openapi3 tags repository: https://github.com/avanov/openapi-type v3: true repositoryMetadata: base64Readme: >- Li4gX2JhZGdlczoKCi4uIGltYWdlOjogaHR0cHM6Ly9naXRodWIuY29tL2F2YW5vdi9vcGVuYXBpLXR5cGUvd29ya2Zsb3dzL0NJL2JhZGdlLnN2Zz9icmFuY2g9ZGV2ZWxvcAogICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL2F2YW5vdi9vcGVuYXBpLXR5cGUvYWN0aW9ucz9xdWVyeT1icmFuY2glM0FkZXZlbG9wCgouLiBpbWFnZTo6IGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi9hdmFub3Yvb3BlbmFwaS10eXBlL2JhZGdlLnN2Zz9icmFuY2g9ZGV2ZWxvcAogICAgOnRhcmdldDogaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL2F2YW5vdi9vcGVuYXBpLXR5cGU/YnJhbmNoPWRldmVsb3AKCi4uIGltYWdlOjogaHR0cHM6Ly9yZXF1aXJlcy5pby9naXRodWIvYXZhbm92L29wZW5hcGktdHlwZS9yZXF1aXJlbWVudHMuc3ZnP2JyYW5jaD1tYXN0ZXIKICAgIDp0YXJnZXQ6IGh0dHBzOi8vcmVxdWlyZXMuaW8vZ2l0aHViL2F2YW5vdi9vcGVuYXBpLXR5cGUvcmVxdWlyZW1lbnRzLz9icmFuY2g9bWFzdGVyCiAgICA6YWx0OiBSZXF1aXJlbWVudHMgU3RhdHVzCgouLiBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL29wZW5hcGktdHlwZS9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKICAgIDp0YXJnZXQ6IGh0dHBzOi8vb3BlbmFwaS10eXBlLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8KICAgIDphbHQ6IERvY3VtZW50YXRpb24gU3RhdHVzCgouLiBpbWFnZTo6IGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvb3BlbmFwaS10eXBlLnN2ZwogICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9vcGVuYXBpLXR5cGUKICAgIDphbHQ6IExhdGVzdCBQeVBJIFJlbGVhc2UKCgpPcGVuQVBJIFR5cGUKPT09PT09PT09PT09CgpPcGVuQVBJIHNwZWNpZmljYXRpb24gcmVwcmVzZW50ZWQgYXMgYSBQeXRob24gdHlwZS4gVXNlIGl0IHRvIHBhcnNlIHNwZWNpZmljYXRpb25zIHdyaXR0ZW4gaW4gSlNPTiBhbmQgWUFNTCBmb3JtYXRzLgoKLi4gY29kZTo6IGJhc2gKCiAgICBwaXAgaW5zdGFsbCBvcGVuYXBpLXR5cGUKCgouLiBjb2RlOjogcHl0aG9uCgogICAgZnJvbSBvcGVuYXBpX3R5cGUgaW1wb3J0IE9wZW5BUEksIHBhcnNlX3NwZWMsIHNlcmlhbGl6ZV9zcGVjCgoKICAgIHNwZWM6IE9wZW5BUEkgPSBwYXJzZV9zcGVjKHsKICAgICAgICAieW91ciBPcGVuQVBJIFNwZWMgYXMgUHl0aG9uIGRpY3Rpb25hcnkiOiAid2lsbCBiZSBwYXJzZWQgaW50byBhIHByb3BlciBQeXRob24gdHlwZSIKICAgIH0pCiAgICBhc3NlcnQgcGFyc2Vfc3BlYyhzZXJpYWxpemVfc3BlYyhzcGVjKSkgPT0gc3BlYwoKLi4gY29kZTo6IGJhc2gKCiAgICAkIGN1cmwgLXMgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uIHwgb3BlbmFwaS10eXBlIGNoZWNrCiAgICBTdWNjZXNzZnVsbHkgcGFyc2VkLgoKCkNvZGVnZW4KLS0tLS0tLQoKSWYgeW91IGFyZSBsb29raW5nIGZvciBhIGNvbXBsZXRlIGNsaWVudCBjb2RlIGdlbmVyYXRvciwgY29uc2lkZXIgYG9wZW5hcGktY2xpZW50LWdlbmVyYXRvciA8aHR0cHM6Ly9naXRodWIuY29tL2F2YW5vdi9vcGVuYXBpLWNsaWVudC1nZW5lcmF0b3I+YF8KdGhhdCB1c2VzIHRoaXMgbGlicmFyeSB1bmRlciB0aGUgaG9vZC4KCkNsb25pbmcgdGhpcyByZXBvCi0tLS0tLS0tLS0tLS0tLS0tCgpUaGUgcHJvcGVyIHdheSB0byBjbG9uZSB0aGlzIHJlcG8gaXM6CgouLiBjb2RlLWJsb2NrOjogYmFzaAoKICAgIGdpdCBjbG9uZSAtLXJlY3Vyc2Utc3VibW9kdWxlcyA8cmVwby11cmw+IDxsb2NhbC1wcm9qZWN0LXJvb3Q+CiAgICBjZCA8bG9jYWwtcHJvamVjdC1yb290PgoKICAgICMgZm9yIHNob3dpbmcgc3VibW9kdWxlIHN0YXR1cyB3aXRoIGBnaXQgc3RhdHVzYAogICAgZ2l0IGNvbmZpZyBzdGF0dXMuc3VibW9kdWxlc3VtbWFyeSAxCgogICAgIyBmb3IgbG9nZ2luZyBzdWJtb2R1bGUgZGlmZiB3aXRoIGBnaXQgZGlmZmAKICAgIGdpdCBjb25maWcgZGlmZi5zdWJtb2R1bGUgbG9nCgoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpEb2N1bWVudGF0aW9uIGlzIGhvc3RlZCBvbiBSZWFkVGhlRG9jczogaHR0cHM6Ly9vcGVuYXBpLXR5cGUucmVhZHRoZWRvY3MuaW8vZW4vZGV2ZWxvcC8KCgpUZXN0IGZyYW1ld29yawotLS0tLS0tLS0tLS0tLQoKVGhlIHByb2plY3QgdXNlcyBgTml4IDxodHRwczovL25peG9zLm9yZy8+YF8gZm9yIGJvb3RzdHJhcHBpbmcgaXRzIGRldiBlbnZpcm9ubWVudC4KCllvdSBjYW4gcnVuIGV4aXN0aW5nIHRlc3Qgc3VpdGUgd2l0aAoKLi4gY29kZTo6IGJhc2gKCiAgIG5peC1zaGVsbCAtLXJ1biAibWFrZSB0ZXN0IgoKCkNoYW5nZWxvZwotLS0tLS0tLS0KClNlZSBgQ0hBTkdFTE9HIDxodHRwczovL2dpdGh1Yi5jb20vYXZhbm92L29wZW5hcGktdHlwZS9ibG9iL21hc3Rlci9DSEFOR0VMT0cucnN0PmBfLgo= readmeEtag: '"0fb8f518fd543da507fe9cca940d4537689e1dc4"' readmeLastModified: Sun, 19 Jun 2022 15:47:24 GMT repositoryId: 324717113 description: >- OpenAPI represented as a Python type. Use it to parse specifications written in JSON and YAML formats. created: '2020-12-27T08:19:27Z' updated: '2024-01-08T03:17:19Z' language: Python archived: false stars: 11 watchers: 1 forks: 3 owner: avanov logo: https://avatars.githubusercontent.com/u/601955?v=4 license: MIT repoEtag: '"38e8cf348056a5c515f2d5bfe7de4ea7175c315ce3c95cf2ea1b141e09a20d1a"' repoLastModified: Mon, 08 Jan 2024 03:17:19 GMT foundInMaster: true category: - Description Validators - Server Implementations id: f7745a6b6f7d618239019b87dd2cd1b1 - source: openapi3 tags repository: https://github.com/asseco-voice/laravel-open-api v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9zZWUuYXNzZWNvLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vYXNzZWNvLXZvaWNlL2FydC9ibG9iL21haW4vZXZpbF9sb2dvLnBuZyIgd2lkdGg9IjUwMCI+PC9hPjwvcD4KCiMgTGFyYXZlbCBPcGVuQXBpIGdlbmVyYXRvcgoKVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHBhaW5sZXNzIE9wZW5BcGkgWU1MIGdlbmVyYXRpb24gZnJvbSBleGlzdGluZyByb3V0ZXMuIAoKVGhlIGlkZWEgaXMgdG8gaGF2ZSBhcyBsaXR0bGUgd29yayB0byBkbyBhcyBwb3NzaWJsZSBpbiBvcmRlciB0byBnZW5lcmF0ZSB0aGUgCkFQSSBkb2N1bWVudGF0aW9uLCBzbyB0aGUgcGFja2FnZSB3aWxsIHRyeSB0byBhc3N1bWUgYSBsb3Qgb2YgdGhpbmdzIHN1Y2ggYXMKbW9kZWxzIGZyb20gY29udHJvbGxlciBuYW1lcywgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcGFyYW1ldGVyIGJhc2VkIG9uIGFjdHVhbAp0YWJsZXMgZXRjLiAKCkZvciBjdXN0b20gaW5wdXRzL291dHB1dHMsIG9wdGlvbnMgd2lsbCBiZSBwcm92aWRlZC4KCiMjIEluc3RhbGxhdGlvbgoKSW5zdGFsbCB0aGUgcGFja2FnZSB0aHJvdWdoIGNvbXBvc2VyLiBJdCBpcyBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyZWQKYXMgYSBMYXJhdmVsIHNlcnZpY2UgcHJvdmlkZXIuCgpgYGNvbXBvc2VyIHJlcXVpcmUgYXNzZWNvLXZvaWNlL2xhcmF2ZWwtb3Blbi1hcGlgYAoKIyMgVXNhZ2UKClJ1bm5pbmcgdGhlIGNvbW1hbmQgYGBwaHAgYXJ0aXNhbiBhc3NlY286b3Blbi1hcGlgYCB3aWxsIGdlbmVyYXRlIGEgbmV3IGAueW1sYApmaWxlIGF0IGBgcHJvamVjdF9yb290L29wZW4tYXBpLnltbGBgLgoKV2hhdCBpcyBjb3ZlcmVkIG91dC1vZi10aGUtYm94OgoKLSByZWFkIGFsbCByb3V0ZXMKLSBpbmZlcnJpbmcgbW9kZWwgbmFtZSBmcm9tIGNvbnRyb2xsZXIgbmFtZQotIGdyb3VwICh0YWcpIHRoZW0gYXV0b21hdGljYWxseQotIGdldCB0aXRsZSBhbmQgZGVzY3JpcHRpb24gZnJvbSAKLSBnZW5lcmF0ZSByZXF1ZXN0IGFuZCByZXNwb25zZSBwYXJhbWV0ZXJzCgpGb3IgY2FzZXMgbm90IGNvdmVyZWQgYnkgdGhpcyBjb252ZW50aW9uLCByZWZlciB0byBbb3ZlcnJpZGluZyBkZWZhdWx0cyBzZWN0aW9uXSgjb3ZlcnJpZGluZy1kZWZhdWx0cykuCgpGb3IgYWRkaXRpb25hbCB0d2Vha2luZywgcmVmZXIgdG8gW2NvbmZpZ10oI2NvbmZpZykuCgpEZXBlbmRpbmcgb24gbnVtYmVyIG9mIHJvdXRlcywgZmlyc3QgcnVuIG1heSB0YWtlIGEgZmV3IHNlY29uZHMgYXMgaXQgaXMgcmVxdWVzdGluZyBhIERCIHNjaGVtYSBmb3IKZWFjaCBtb2RlbCBpdCBjYW4gZmluZC4gVGhpcyBpcyBjYWNoZWQsIHNvIGV2ZXJ5IHN1YnNlcXVlbnQgcnVuIHdpbGwgcnVuIG11Y2ggZmFzdGVyLiAKCiMjIyBTaW1wbGUgb3V0LW9mLXRoZS1ib3ggZXhhbXBsZQoKR2l2ZW4gdGhlIGNvbnRyb2xsZXI6CgpgYGAKY2xhc3MgVXNlckNvbnRyb2xsZXIgZXh0ZW5kcyBDb250cm9sbGVyCnsKICAgIC8qKgogICAgICogU3RvcmUgYSBuZXdseSBjcmVhdGVkIHJlc291cmNlIGluIHN0b3JhZ2UuICAgIAogICAgICoKICAgICAqIENyZWF0ZSBuZXcgVXNlciBvYmplY3QgYW5kIHN0b3JlIGl0IGluIERCLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3RvcmUoUmVxdWVzdCAkcmVxdWVzdCk6IEpzb25SZXNwb25zZQogICAgewogICAgICAgICR1c2VyID0gVXNlcjo6cXVlcnkoKS0+Y3JlYXRlKCRyZXF1ZXN0LT5hbGwoKSk7CgogICAgICAgIHJldHVybiByZXNwb25zZSgpLT5qc29uKCR1c2VyKTsKICAgIH0KCiAgICAuLi4KYGBgCgotIGNvbW1hbmQgd2lsbCBpbmZlciBgYFVzZXJgYCBhcyBiZWluZyB0aGUgbWFpbiBtb2RlbCBmb3IgdGhlIGNvbnRyb2xsZXIKLSB0aXRsZTogYGBTdG9yZSBhIG5ld2x5IGNyZWF0ZWQgcmVzb3VyY2UgaW4gc3RvcmFnZS5gYCAKLSBkZXNjcmlwdGlvbjogYGBDcmVhdGUgbmV3IFVzZXIgb2JqZWN0IGFuZCBzdG9yZSBpdCBpbiBEQi5gYAotIHJlcXVlc3QgZGF0YTogYGBVc2VyYGAgbW9kZWwgdGFibGUgYXR0cmlidXRlcyB3aXRob3V0IGBpZGAsIGBjcmVhdGVkX2F0YCwgYHVwZGF0ZWRfYXRgIGF0dHJpYnV0ZXMKLSByZXNwb25zZSBkYXRhOiBjb21wbGV0ZSBgYFVzZXJgYCBtb2RlbCB0YWJsZSBhdHRyaWJ1dGVzCgojIyBPdmVycmlkaW5nIGRlZmF1bHRzCgpDdXN0b20gY2FzZXMgYXJlIGhhbmRsZWQgdGhyb3VnaCBjb250cm9sbGVyIGFuZCBtZXRob2QgYW5ub3RhdGlvbnMgaW4gZG9jIGJsb2NrczoKCmBgYAovKioKICogTXkgY29udHJvbGxlciBkb2MgYmxvY2sKICoKICogQGFubm90YXRpb24gcmFuZG9tIGFubm90YXRpb24KICovCmNsYXNzIE15Q29udHJvbGxlciBleHRlbmRzIENvbnRyb2xsZXIKewogICAgLyoqCiAgICAgKiBNeSBtZXRob2QgZG9jIGJsb2NrCiAgICAgKgogICAgICogQGFubm90YXRpb24gYW5vdGhlciByYW5kb20gYW5ub3RhdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5kZXgoKQogICAgewogICAgICAgIC4uLgogICAgfQoKICAgLi4uCn0KYGBgCgojIyMgR3JvdXBzICh0YWdzKQoKV2hlbiB0YWxraW5nIGFib3V0ICdncm91cHMnLCB3ZSBhcmUgYWN0dWFsbHkgdGFsa2luZyBhYm91dCBPcGVuQXBpICd0YWdzJy4gCgpCeSBkZWZhdWx0LCBjb21tYW5kIHdpbGwgdGFrZSB0aGUgY29udHJvbGxlciBuYW1lLCByZW1vdmUgYGBDb250cm9sbGVyYGAgZnJvbSBpdAphbmQgc3BsaXQgYFBhc2NhbENhc2VgIHdpdGggc3BhY2VzIChpLmUuIGBTeXNVc2VyQ29udHJvbGxlcmAgcmVzdWx0cyBpbiBgU3lzIFVzZXJgIGdyb3VwIG5hbWUpLgoKLSBgYEBncm91cGBgIHdpdGhpbiBhIGNvbnRyb2xsZXIgZG9jIGJsb2NrIHdpbGwgb3ZlcnJpZGUgZGVmYXVsdCBncm91cC4gCi0gYGBAZ3JvdXBgYCB3aXRoaW4gYSBtZXRob2QgZG9jIGJsb2NrIHdpbGwgb3ZlcnJpZGUgZGVmYXVsdCBncm91cCBhbmQgY29udHJvbGxlciBncm91cAptYWtpbmcgaXQgYW4gb3BlcmF0b3Igd2l0aCB0aGUgaGlnaGVzdCBwcmVjZWRlbmNlLgoKSXQgaXMgcG9zc2libGUgdG8gc3RhY2sgbXVsdGlwbGUgZ3JvdXAgYW5ub3RhdGlvbnMuCgojIyMgTW9kZWxzCgpNb2RlbCBpcyB1c2VkIHRvIHRyeSB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGlucHV0cyBhbmQgb3V0cHV0cyBmb3Igc3RhbmRhcmQgTGFyYXZlbApDUlVEIGZ1bmN0aW9ucy4KCioqSW5wdXQgKHJlcXVlc3QpOioqIG1vZGVsIERCIHNjaGVtYSB3aXRoIGVpdGhlciBvbmx5IGZpbGxhYmxlIHByb3BlcnRpZXMgb3IgZXhjZXB0IGd1YXJkZWQuCkZpbGxhYmxlIHByb3BlcnRpZXMgaGF2ZSBwcmVjZWRlbmNlLCBndWFyZGVkIHdpbGwgYmUgaWdub3JlZCBpZiBmaWxsYWJsZSBleGlzdHMuCgoqKk91dHB1dCAocmVzcG9uc2UpOioqIGNvbXBsZXRlIG1vZGVsIERCIHNjaGVtYSB3aXRob3V0IGhpZGRlbiBmaWVsZHMuIAoKSXQgaXMgY29tcGxldGVseSB2YWxpZCB0byBoYXZlIG5vIG1vZGVsIGFzc29jaWF0ZWQuIEluIHRoaXMgY2FzZSwgbm8gYXV0b21hdGljIGFjdGlvbnMKd2lsbCBiZSBwZXJmb3JtZWQgd2hpY2ggcmVxdWlyZSBhbiBleGlzdGluZyBtb2RlbCBjbGFzcy4KCkJ5IGRlZmF1bHQsIG1vZGVsIG5hbWUgaXMgZXh0cmFjdGVkIGZyb20gY29udHJvbGxlciBuYW1lLiBUbyBjaGFuZ2UgdGhpcyBiZWhhdmlvciwKeW91IGhhdmUgZmV3IG9wdGlvbnM6CgotIE1hcCBhIHNwZWNpZmljIGNvbnRyb2xsZXIgdG8gYSBzcGVjaWZpYyBtb2RlbC4gU2VlIFtjb25maWddKCNjb25maWcpIGZvciBkZXRhaWxzLgotIEluY2x1ZGUgYGBAbW9kZWxgYCB0YWcgd2l0aGluIGEgY29udHJvbGxlcjoKICAgLSBTcGVjaWZ5aW5nIG5hbWVzcGFjZWQgbW9kZWwgd2lsbCB1c2UgdGhhdCBtb2RlbCBgYEBtb2RlbCBNeVxOYW1lc3BhY2VkXE1vZGVsYGAgCiAgIC0gTm90IHNwZWNpZnlpbmcgdGhlIG5hbWVzcGFjZSB3aWxsIHVzZSBjb250cm9sbGVyJ3MgbmFtZXNwYWNlIGBgQG1vZGVsIE1vZGVsYGAKICAgCkNvbnRyb2xsZXIgdGFnIGhhcyBoaWdoZXIgcHJlY2VkZW5jZSBvdmVyIGNvbmZpZ3VyYXRpb24gbWFwcGluZy4gSWYgYm90aCBleGlzdCwgYW5kCmNvbnRyb2xsZXIgdGFnIGZhaWxzLCBjb25maWd1cmF0aW9uIHdpbGwgdHJ5IHRvIGZldGNoIHRoZSBtb2RlbCBhcyB3ZWxsLiBGYWlsaW5nIG9uCmJvdGggZnJvbnRzIHdpbGwgcmVzdWx0IGluIG1vZGVsIGJlaW5nIGBgbnVsbGBgLgoKSXQgaXMgcG9zc2libGUgdG8gZXhjbHVkZSBwYXJ0IG9mIHRoZSBtb2RlbCBmb3IgdGhlIHJlcXVlc3Q6CgotIGBgQGV4Y2x1ZGUgYXR0cmlidXRlMSBhdHRyaWJ1dGUyYGAgaXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBzcGVjaWZpZWQgbW9kZWwgYXR0cmlidXRlcwp3aGljaCB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiByZXF1ZXN0IGRhdGEuICAKCiMjIyBQYXRoIHBhcmFtZXRlcnMKCkJ5IGRlZmF1bHQsIHBhdGggcGFyYW1ldGVyKHMpIHdpbGwgYmUgc2V0IGFzIGludGVnZXIgKGFzc3VtaW5nIG1vc3Qgb2YgdGhlIHBhdGggcGFyYW1ldGVycyBhcmUgbW9kZWwgSURzKS4KSW4gY2FzZSB5b3Ugd2FudCB0byB1c2UgVVVJRHMsIHRoaXMgY2FuIGJlIGNoYW5nZWQgaW4gYGBhc3NlY28tb3Blbi1hcGlgYCBjb25maWcgZmlsZSBieQpzZXR0aW5nIGBgc2VydmljZV91c2VzX3V1aWRgYCB0byB0cnVlLgoKT3ZlcnJpZGUgdGhlbSBieSBpbmNsdWRpbmcgdGhlIGZvbGxvd2luZyBpbiB0aGUgbWV0aG9kIGRvYyBibG9jazoKCi0gYGBAcGF0aGBgIHdpbGwgb3ZlcnJpZGUgd2hhdCBpcyBmZXRjaGVkIGJ5IGRlZmF1bHQuIFlvdSBtdXN0IHByb3ZpZGUgaXQgaW4gdGhlIGZvbGxvd2luZwpjb252ZW50aW9uIGBgQHBhdGggbmFtZSB0eXBlIGRlc2NyaXB0aW9uYGAgd2hlcmU6CiAgIC0gYGBuYW1lYGAgLSBwYXJhbWV0ZXIgbmFtZS4KICAgLSBgYHR5cGVgYCAtIFtPcGVuQXBpIGRhdGEgdHlwZV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kYXRhLW1vZGVscy9kYXRhLXR5cGVzLykuCiAgIC0gYGBkZXNjcmlwdGlvbmBgIC0gdGV4dCB3aGljaCB3aWxsIGJlIHNldCBhcyBwYXJhbWV0ZXIgZGVzY3JpcHRpb24gKG5vdCByZXF1aXJlZCwgCiAgIGVtcHR5IGJ5IGRlZmF1bHQsIHNvIGl0IGNhbiBiZSBvbWl0dGVkKS4gCiAgIApFeGFtcGxlczoKCmBgYApAcGF0aCBuYW1lIHR5cGUKQHBhdGggbmFtZSB0eXBlIFNvbWUgZGVzY3JpcHRpb24KYGBgCgpJdCBpcyBub3QgcG9zc2libGUgdG8gc2V0IHBhdGggcGFyYW1ldGVyIGBgcmVxdWlyZWRgYCBwcm9wZXJ0eS4gSXQgaXMgYXV0b21hdGljYWxseSBzZXQgdG8gdHJ1ZSBiZWNhdXNlCk9wZW5BcGkgZG9lc24ndCBzdXBwb3J0IG9wdGlvbmFsIHBhdGggcGFyYW1ldGVycyAoZXZlbiB0aG91Z2ggTGFyYXZlbCBkb2VzKS4KCiMjIyBPcGVyYXRpb24gSUQKCkJ5IGRlZmF1bHQsIGBgb3BlcmF0aW9uSWRgYCB3aWxsIGJlIGdlbmVyYXRlZCBmb3IgZWFjaCByb3V0ZSwgYmFzZWQgb24gdGhlIGNvbnRyb2xsZXIvSFRUUCBtZXRob2QKbWFwcGluZyBhbmQgdGhlIG5hbWUgb2YgdGhlIG1vZGVsLiBJZiB5b3Ugd2FudCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCwgeW91IGNhbiB1c2UgYGBAb3BlcmF0aW9uSWRgYAp0byBwcm92aWRlIGEgZGlmZmVyZW50IHN1ZmZpeCB0byB0aGUgb3BlcmF0aW9uIElEICh3aGljaCB3aWxsIHJlcGxhY2Ugd2hhdCB3b3VsZCBiZSBhbiBhdXRvLWdlbmVyYXRlZCBtb2RlbCkuCgpQcmVwZW5kZWQgY29udHJvbGxlci9IVFRQIG1ldGhvZCB3aWxsIHN0YXkgaW50YWN0IGJlY2F1c2Ugb2YgcG9zc2libGUgY29uZmxpY3RzIHdoZW4gdXNpbmcgdXBkYXRlIHJvdXRlcwp3aGljaCBtYXAgdG8gYm90aCBQVVQgYW5kIFBBVENIIHZlcmJzLiAKCkV4YW1wbGU6CgpgYGAKLy8gUHJvdmlkZWQgZm9yIGFuIHNob3coKSBtZXRob2Q6CkBvcGVyYXRpb25JZCBzdWZmaXgKLy8gdGhpcyB3aWxsIG91dHB1dCBnZXRTdWZmaXgKCi8vIFByb3ZpZGVkIGZvciBhbiB1cGRhdGUoKSBtZXRob2Q6CkBvcGVyYXRpb25JZCBzdWZmaXgKLy8gdGhpcyB3aWxsIG91dHB1dCBwdXRTdWZmaXggYW5kIHBhdGNoU3VmZml4CmBgYAoKIyMjIFJlcXVlc3QvcmVzcG9uc2UgcGFyYW1ldGVycwoKQnkgZGVmYXVsdCwgcmVxdWVzdC9yZXNwb25zZSBwYXJhbWV0ZXIocykgd2lsbCBiZSBbZXh0cmFjdGVkIGZyb20gbW9kZWxdKCNtb2RlbHMpLgoKT3ZlcnJpZGUgdGhlbSBieSBpbmNsdWRpbmcgYGBAcmVxdWVzdGBgIG9yL2FuZCBgQHJlc3BvbnNlYCBpbiB0aGUgbWV0aG9kIGRvYyBibG9jay4KCkV4YW1wbGUgZm9yIGBgQHJlcXVlc3RgYCwgd29ya2luZyB0aGUgc2FtZSBmb3IgYEByZXNwb25zZWA6CgotIGBgQHJlcXVlc3RgYCB3aWxsIG92ZXJyaWRlIHdoYXQgaXMgZmV0Y2hlZCBieSBkZWZhdWx0LiBZb3UgbXVzdCBwcm92aWRlIGl0IGluIHRoZSBmb2xsb3dpbmcKY29udmVudGlvbiBgYEByZXF1ZXN0IG5hbWUgdHlwZSByZXF1aXJlZCBkZXNjcmlwdGlvbmBgIHdoZXJlOgogICAtIGBgbmFtZWBgIC0gcGFyYW1ldGVyIG5hbWUuCiAgIC0gYGB0eXBlYGAgLSBbT3BlbkFwaSBkYXRhIHR5cGVdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGF0YS1tb2RlbHMvZGF0YS10eXBlcy8pLgogICAtIGBgcmVxdWlyZWRgYCAtIGJvb2xlYW4gYHRydWUvZmFsc2VgIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIAogICAoaWYgb21pdHRlZCwgd2lsbCBiZSBzZXQgdG8gYHRydWVgKQogICAtIGBgZGVzY3JpcHRpb25gYCAtIHRleHQgd2hpY2ggd2lsbCBiZSBzZXQgYXMgcGFyYW1ldGVyIGRlc2NyaXB0aW9uIChpZiBvbWl0dGVkLCB3aWxsIGJlIHNldCB0bwogICAgZW1wdHkgc3RyaW5nKQogICAKRXhhbXBsZXM6CgpgYGAKQHJlcXVlc3QgbmFtZSB0eXBlCkByZXF1ZXN0IG5hbWUgdHlwZSB0cnVlCkByZXF1ZXN0IG5hbWUgdHlwZSBmYWxzZSBTb21lIGRlc2NyaXB0aW9uCmBgYAoKRm9yIG11bHRpcGxlIHBhcmFtZXRlcnMgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBhZG9wdCBhIGRpZmZlcmVudCBjb252ZW50aW9uOgoKYGBgCkByZXF1ZXN0Cm5hbWUgdHlwZSByZXF1aXJlZCBkZXNjcmlwdGlvbgpuYW1lIHR5cGUgcmVxdWlyZWQgZGVzY3JpcHRpb24KbmFtZSB0eXBlIHJlcXVpcmVkIGRlc2NyaXB0aW9uCmBgYAoKSW4gY2FzZSB5b3Ugd2FudCBhbiBhcmJpdHJhcnkgc3RyaW5nIGFzIGEgcmVxdWVzdC9yZXNwb25zZSwgaXQgY2FuIGJlIGFjaGlldmVkIApieSB1c2luZyBkb3VibGUgcXVvdGVzIHdoZW4gc2V0dGluZyByZXF1ZXN0L3Jlc3BvbnNlIHBhcmFtZXRlcnMuIFRoaXMgd2F5LCBhbGwgCm90aGVyIHBhcmFtZXRlcnMgd2lsbCBiZSBpZ25vcmVkIGFuZCBvbmx5IHRoZSBzdHJpbmcgaW5zaWRlIGRvdWJsZSBxdW90ZXMgd2lsbCAKYmUgcmV0dXJuZWQuCgpFeGFtcGxlOgoKYGBgCkByZXNwb25zZSAiZXhhbXBsZSIKYGBgCgpZb3UgY2FuIGluY2x1ZGUgYWRkaXRpb25hbCBpbnB1dC9vdXRwdXQgbW9kZWxzIGFsb25nc2lkZSBvcmlnaW5hbCBtb2RlbCB3aXRoIGBAcmVxdWVzdEFwcGVuZCBrZXkgQ2xhc3NgIG9yIApgQHJlc3BvbnNlQXBwZW5kIGtleSBDbGFzc2AgaW4geW91ciBtZXRob2QgZG9jIGJsb2NrLiBUaGlzIHdpbGwgYXBwZW5kIGdpdmVuIGBgQ2xhc3NgYCBwcm9wZXJ0aWVzIG9uIGFscmVhZHkgZXhpc3RpbmcgbW9kZWwgdXNpbmcgdGhlIGBrZXlgIGFzIGEga2V5LgoKSS5lLiBoYXZpbmcgb3JpZ2luYWwgbW9kZWwgYGBVc2VyYGAgKHdpdGggcHJvcGVydGllcyBuYW1lLCBlbWFpbCkgeW91IHdhbnQgdG8gYXBwZW5kIGBQb3N0YCBtb2RlbCAod2l0aCBwcm9wZXJ0aWVzCnRpdGxlLCBkZXNjcmlwdGlvbikgdG8gaXQgYXMgYSBsaXN0IG9mIGlucHV0cy4KCmBgYApAbW9kZWwgVXNlciAvLyA8LS0gbm90IG5lZWRlZCBpZiBpdCBpcyBVc2VyQ29udHJvbGxlciBvciB5b3UgYWxyZWFkeSBzcGVjaWZpZWQgbW9kZWwgb24gdGhlIGNvbnRyb2xsZXIKCkByZXF1ZXN0QXBwZW5kIHBvc3RzIFBvc3QKYGBgIAoKVGhpcyB3aWxsIHJlc3VsdCBpbiBmb2xsb3dpbmcgcmVxdWVzdDoKCmBgYAp7CiAgICAibmFtZSI6ICJzdHJpbmciCiAgICAiZW1haWwiOiAic3RyaW5nIgogICAgInBvc3RzIjogewogICAgICAgICJ0aXRsZSI6ICJzdHJpbmciCiAgICAgICAgImRlc2NyaXB0aW9uIjogInN0cmluZyIKICAgIH0KfQpgYGAKCiMjIyMgUmVzcG9uc2Ugc3BlY2lmaWMKClJlc3BvbnNlcyB3aWxsIGJ5IGRlZmF1bHQgYmUgbWFya2VkIGFzIG11bHRpcGxlIChpbmRpY2F0aW5nIGNvbGxlY3Rpb24gb3V0cHV0LCBub3QgYSBzaW5nbGUgbW9kZWwpCndoZW4gbG9va2luZyBhdCBgYEdFVGBgIHJlcXVlc3Qgd2l0aG91dCBwYXRoIHBhcmFtZXRlcnMuCgotIGluY2x1ZGluZyBgYEBtdWx0aXBsZSB0cnVlL2ZhbHNlYGAgaW4gdGhlIG1ldGhvZCBkb2MgYmxvY2sgd2lsbCBvdmVycmlkZSB0aG9zZSBkZWZhdWx0cyAKCklmIHRoZSB2YXJpYWJsZSB0eXBlIGlzIGBgYXJyYXlgYCwgeW91IGNhbiBwcm92aWRlIGFkZGl0aW9uYWwgcHJvcGVydHkgd2l0aGluIHRoZSBwYXJlbnRoZXNpcyAoYmUKc3VyZSBub3QgdG8gbGVhdmUgYmxhbmsgc3BhY2UgYmV0d2VlbiB0eXBlIGFuZCBwYXJlbnRoZXNpcykgdG8gaW5kaWNhdGUKb2Ygd2hhdCB0eXBlIGFyZSB0aGUgYXJyYXkgdmFsdWVzOiAKCmBgYApAcmVzcG9uc2UgYXR0cmlidXRlIGFycmF5W3N0cmluZ10gdHJ1ZSBTb21lIGRlc2NyaXB0aW9uCmBgYAoKSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBkaXJlY3RseSBhcHBlbmQgYSBwaXZvdCB0YWJsZSB0byB0aGUgcmVzcG9uc2UsIGV2ZW4gaWYgaXQgCmhhcyBubyBtb2RlbCBhc3NvY2lhdGVkIHdpdGggaXQuCgpgYGAKQHBpdm90IHRhYmxlX25hbWUKYGBgCgpGb3IgZXhhbXBsZSwgaWYgdGhlIHRhYmxlIHdhcyBhcHBlbmRlZCB0byB0aGUgYGBVc2VyYGAgbW9kZWwsIHRoZSBmb2xsb3dpbmcgCnJlc3BvbnNlIHdpbGwgYmUgcmV0dXJuZWQ6CgpgYGAKewogICAgIm5hbWUiOiAic3RyaW5nIgogICAgImVtYWlsIjogInN0cmluZyIKICAgICJwaXZvdCI6IHsKICAgICAgInVzZXJfaWQiOiAwCiAgICAgICJleGFtcGxlX2lkIjogMAogICAgfQp9CmBgYAoKIyMgQ2FjaGUKCk1vZGVscyBkYXRhYmFzZSBzY2hlbWEgaXMgYmVpbmcgY2FjaGVkIGZvciBwZXJmb3JtYW5jZSAoMWQgVFRMKSwgCmlmIHlvdSBtb2RpZnkgYSBtaWdyYXRpb24gYmUgc3VyZSB0byBydW4gYGBwaHAgYXJ0aXNhbiBhc3NlY286b3Blbi1hcGkgLS1idXN0LWNhY2hlYGAKd2hpY2ggd2lsbCBmb3JjZSByZS1jYWNoaW5nLiAKCiMjIENvbmZpZwoKUHVibGlzaCB0aGUgY29uZmlndXJhdGlvbiB3aXRoIApgYHBocCBhcnRpc2FuIHZlbmRvcjpwdWJsaXNoIC0tcHJvdmlkZXI9IkFzc2Vjb1xPcGVuQXBpXE9wZW5BcGlTZXJ2aWNlUHJvdmlkZXIiYGAuCgpDb25maWd1cmF0aW9uIHJlcXVpcmVzIHlvdXIgbWluaW1hbCBlbmdhZ2VtZW50LCBob3dldmVyIHRoZXJlIGFyZSBzb21lIHRoaW5ncyB3aGljaApwYWNrYWdlIGNhbid0IGFzc3VtZS4gCgotIEZvciBtb2RlbHMgb3V0c2lkZSBvZiBgYEFwcGBgIG5hbWVzcGFjZSwgYmUgc3VyZSB0byBpbmNsdWRlIGZ1bGwgbmFtZXNwYWNlCnRvIGBgbmFtZXNwYWNlc2BgIGNvbmZpZyBrZXkgYXMgd2VsbCBzbyB0aGF0IHBhY2thZ2UgY2FuIGF1dG9tYXRpY2FsbHkgZ2V0IHRoZSAKbW9kZWwgYXR0cmlidXRlcy4gCi0gRm9yIGNvbnRyb2xsZXJzIG5vdCBuYW1lZCBhZnRlciB0aGVpciBtb2RlbHMgKGluIGBgTW9kZWxDb250cm9sbGVyYGAgZm9ybWF0KQpyZW1hcCBpbiBgYGNvbnRyb2xsZXJfbW9kZWxfbWFwcGluZ2BgIGNvbmZpZyBrZXkuCg== readmeEtag: '"81e6662caa368de507e8192c6c8cf7d3049f803e"' readmeLastModified: Tue, 08 Aug 2023 08:15:58 GMT repositoryId: 299838936 description: OpenAPI 3.0. generator for Laravel 8 created: '2020-09-30T07:16:22Z' updated: '2024-06-25T15:23:31Z' language: PHP archived: false stars: 11 watchers: 6 forks: 2 owner: asseco-voice logo: https://avatars.githubusercontent.com/u/66362883?v=4 license: MIT repoEtag: '"1efccb2f9c9ff2f4b9f28b4f2dfec7efdaf6eb120a14c8e365e3d41ba5cad775"' repoLastModified: Tue, 25 Jun 2024 15:23:31 GMT foundInMaster: true category: - Server Implementations - Parsers id: 5c0da8cc4801fde67fbfe19cf237d93a - source: openapi3 tags repository: https://github.com/dzoukr/openapiparser v3: true repositoryMetadata: base64Readme: >- PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9Eem91a3IvT3BlbkFQSVR5cGVQcm92aWRlci9yYXcvbWFzdGVyL2xvZ28uanBnIiBhbHQ9ImRyYXdpbmciIHdpZHRoPSIxMDBweCIvPgoKIyBPcGVuIEFQSSBGIyBQYXJzZXIKClNpbXBsZSBsaWJyYXJ5IGZvciBwYXJzaW5nIFlBTUwvSlNPTiBPcGVuIEFQSSAocHJldmlvdXNseSBjYWxsZWQgYXMgU3dhZ2dlcikgc3BlY2lmaWNhdGlvbiAodmVyc2lvbiAzLjAuMSkuIE9yaWdpbmFsbHkgcGFydCBvZiBteSB0eXBlIHByb3ZpZGVyLCBidXQgSSB3aWxsIHByb2JhYmx5IG5ldmVyIGZpbmlzaCBpdCwgc28gYXQgbGVhc3QgY29tbXVuaXR5IGNhbiB1c2UgcGFydCBvZiBpdCBmb3Igb3duIHByb2plY3RzLiA6KQoKIyMgSW5zdGFsbGF0aW9uCkZpcnN0IGluc3RhbGwgTnVHZXQgcGFja2FnZQoKICAgIEluc3RhbGwtUGFja2FnZSBPcGVuQVBJUGFyc2VyCgpvciB1c2luZyBbUGFrZXRdKGh0dHA6Ly9mc3Byb2plY3RzLmdpdGh1Yi5pby9QYWtldC9nZXR0aW5nLXN0YXJ0ZWQuaHRtbCkKCiAgICBudWdldCBPcGVuQVBJUGFyc2VyCgojIyBIb3cgdG8gdXNlCgpUeXBpY2FsbHksIHlvdSB3b3VsZCB1c2Ugc29tZSBleGlzdGluZyBzcGVjaWZpY2F0aW9uIChzZWUgW29mZmljaWFsIGV4YW1wbGVzIGZvciB2ZXJzaW9uIDNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL3RyZWUvbWFzdGVyL2V4YW1wbGVzL3YzLjApKToKCmBgYGZzaGFycApvcGVuIE9wZW5BUElQYXJzZXIuVmVyc2lvbjMuUGFyc2VyCmxldCBvcGVuQVBJID0gRG9jdW1lbnQubG9hZEZyb21ZYW1sRmlsZSAibXlTcGVjLnlhbWwiIApgYGAKClRoZW4geW91IGhhdmUgYmFzaWMgRiMgcmVjb3JkIGZpbGxlZAoKYGBgZnNoYXJwCmxldCB2ZXJzaW9uID0gb3BlbkFQSS5JbmZvLlZlcnNpb24KbGV0IHRpdGxlID0gb3BlbkFQSS5JbmZvLlRpdGxlCmxldCBwYXRocyA9IG9wZW5BUEkuUGF0aHMKLi4uCmBgYAoKUGxlYXNlIGNoZWNrIFt0ZXN0IHByb2plY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9Eem91a3IvT3BlbkFQSVBhcnNlci90cmVlL21hc3Rlci90ZXN0cy9PcGVuQVBJUGFyc2VyLlRlc3RzKSBmb3IgbW9yZSBleGFtcGxlcy4KCiMjIExpbWl0YXRpb25zCgpOb3QgYWxsIHByb3BlcnRpZXMgZnJvbSBbMy4wLjEgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjEubWQpIGFyZSBpbXBsZW1lbnRlZC4gRXNwZWNpYWxseSBgYW55T2ZgIGFuZCBgb25lT2ZgIFNjaGVtYSBvYmplY3RzLCB3aGljaCB3aWxsIGJlIHByb2JhYmx5IGltcGxlbWVudGVkIGluIGZ1dHVyZSB2ZXJzaW9ucy4gUGxlYXNlIGNoZWNrIFtTcGVjaWZpY2F0aW9uIHJlY29yZCBkZWZpbml0aW9uXShodHRwczovL2dpdGh1Yi5jb20vRHpvdWtyL09wZW5BUElQYXJzZXIvYmxvYi9tYXN0ZXIvc3JjL09wZW5BUElQYXJzZXIvVmVyc2lvbjMvU3BlY2lmaWNhdGlvbi5mcykgZm9yIGFscmVhZHkgaW1wbGVtZW50ZWQgcHJvcGVydGllcy4KCiMjIENvbnRyaWJ1dGlvbgoKWW91IGtub3cgdGhlIGRyaWxsLiBDb2RlICsgVGVzdHMgPSBHb29kIFBSLiBBbnkgY29udHJpYnV0aW9uIG1vcmUgdGhhbiB3ZWxjb21lIQ== readmeEtag: '"55d043ec4becc96e42b52774ffe9db94053d91fb"' readmeLastModified: Tue, 16 Oct 2018 12:57:05 GMT repositoryId: 136714502 description: Simple Open API F# Parser created: '2018-06-09T10:43:53Z' updated: '2020-11-12T16:00:37Z' language: F# archived: false stars: 11 watchers: 4 forks: 2 owner: Dzoukr logo: https://avatars.githubusercontent.com/u/851307?v=4 license: MIT repoEtag: '"e659e8372c291e4acfb2d598492a818065f943ed37c11a0cfd4dbbb20cb9e9af"' repoLastModified: Thu, 12 Nov 2020 16:00:37 GMT foundInMaster: true category: Parsers id: bb5f2819cf8a06099262d0b9aac90a9b - source: openapi3 tags repository: https://github.com/friskes/drf-spectacular-websocket v3: true id: 1a1dd69dc7629c186e776da3f959fd4d repositoryMetadata: base64Readme: >- IyBFeHRlbmQgd2Vic29ja2V0IHNjaGVtYSBkZWNvcmF0b3IgZm9yIERqYW5nbyBDaGFubmVscwoKPGRpdiBhbGlnbj0iY2VudGVyIj4KCnwgUHJvamVjdCAgIHwgICAgIHwgU3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS18Oi0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBDSS9DRCAgICAgfCAgICAgfCBbIVtMYXRlc3QgUmVsZWFzZV0oaHR0cHM6Ly9naXRodWIuY29tL0ZyaXNrZXMvZHJmLXNwZWN0YWN1bGFyLXdlYnNvY2tldC9hY3Rpb25zL3dvcmtmbG93cy9wdWJsaXNoLXRvLXB5cGkueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9Gcmlza2VzL2RyZi1zcGVjdGFjdWxhci13ZWJzb2NrZXQvYWN0aW9ucy93b3JrZmxvd3MvcHVibGlzaC10by1weXBpLnltbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUXVhbGl0eSAgIHwgICAgIHwgWyFbQ292ZXJhZ2VdKGh0dHBzOi8vY29kZWNvdi5pby9naXRodWIvRnJpc2tlcy9kcmYtc3BlY3RhY3VsYXItd2Vic29ja2V0L2dyYXBoL2JhZGdlLnN2Zz90b2tlbj12S2V6NFB5Y3JjKV0oaHR0cHM6Ly9jb2RlY292LmlvL2dpdGh1Yi9Gcmlza2VzL2RyZi1zcGVjdGFjdWxhci13ZWJzb2NrZXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBQYWNrYWdlICAgfCAgICAgfCBbIVtQeVBJIC0gVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvZHJmLXNwZWN0YWN1bGFyLXdlYnNvY2tldD9sYWJlbENvbG9yPTIwMjIzNSZjb2xvcj1lZGI2NDEmbG9nbz1weXRob24mbG9nb0NvbG9yPWVkYjY0MSldKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9weS9kcmYtc3BlY3RhY3VsYXItd2Vic29ja2V0KSAhW1B5UEkgLSBTdXBwb3J0IFB5dGhvbiBWZXJzaW9uc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3B5dmVyc2lvbnMvZHJmLXNwZWN0YWN1bGFyLXdlYnNvY2tldD9sYWJlbENvbG9yPTIwMjIzNSZjb2xvcj1lZGI2NDEmbG9nbz1weXRob24mbG9nb0NvbG9yPWVkYjY0MSkgIVtQcm9qZWN0IFB5UEkgLSBEb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9kbS9kcmYtc3BlY3RhY3VsYXItd2Vic29ja2V0P2xvZ289cHl0aG9uJmxhYmVsPWRvd25sb2FkcyZsYWJlbENvbG9yPTIwMjIzNSZjb2xvcj1lZGI2NDEmbG9nb0NvbG9yPWVkYjY0MSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBNZXRhICAgICAgfCAgICAgfCBbIVt0eXBlcyAtIE15cHldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvdHlwZXMtTXlweS0yMDIyMzUuc3ZnP2xvZ289cHl0aG9uJmxhYmVsQ29sb3I9MjAyMjM1JmNvbG9yPWVkYjY0MSZsb2dvQ29sb3I9ZWRiNjQxKV0oaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9teXB5KSBbIVtMaWNlbnNlIC0gTUlUXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULTIwMjIzNS5zdmc/bG9nbz1weXRob24mbGFiZWxDb2xvcj0yMDIyMzUmY29sb3I9ZWRiNjQxJmxvZ29Db2xvcj1lZGI2NDEpXShodHRwczovL3NwZHgub3JnL2xpY2Vuc2VzLykgWyFbY29kZSBzdHlsZSAtIFJ1ZmZdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZW5kcG9pbnQ/dXJsPWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9hc3RyYWwtc2gvcnVmZi9tYWluL2Fzc2V0cy9iYWRnZS9mb3JtYXQuanNvbiZsYWJlbENvbG9yPTIwMjIzNSldKGh0dHBzOi8vZ2l0aHViLmNvbS9hc3RyYWwtc2gvcnVmZikgfAoKPC9kaXY+Cgo+IFByb3ZpZGVzIFtleHRlbmRfd3Nfc2NoZW1hXSgjQWJvdXQtZGVjb3JhdG9yKSBkZWNvcmF0b3IgdG8gZG9jdW1lbnRhdGlvbiBbQ3Vuc3VtZXJdKGh0dHBzOi8vY2hhbm5lbHMucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L3RvcGljcy9jb25zdW1lcnMuaHRtbCkgbWV0aG9kcyBmcm9tIFtjaGFubmVsc10oaHR0cHM6Ly9naXRodWIuY29tL2RqYW5nby9jaGFubmVscykganVzdCBsaWtlIGl0IGRvZXMgW2RyZi1zcGVjdGFjdWxhcl0oaHR0cHM6Ly9naXRodWIuY29tL3RmcmFuemVsL2RyZi1zcGVjdGFjdWxhcikKCgojIyBJbnN0YWxsCjEuIEluc3RhbGwgcGFja2FnZQogICAgYGBgYmFzaAogICAgcGlwIGluc3RhbGwgZHJmLXNwZWN0YWN1bGFyLXdlYnNvY2tldAogICAgYGBgCgoyLiBDcmVhdGUgc2lkZWNhciBzdGF0aWMKICAgIGBgYGJhc2gKICAgIHB5dGhvbiBtYW5hZ2UucHkgY29sbGVjdHN0YXRpYwogICAgYGBgCgozLiBBZGQgYXBwIG5hbWUgdG8gYElOU1RBTExFRF9BUFBTYAogICAgPiBgZHJmX3NwZWN0YWN1bGFyX3dlYnNvY2tldGAgbXVzdCBiZSBoaWdoZXIgdGhhbiBgZHJmX3NwZWN0YWN1bGFyYAogICAgYGBgcHl0aG9uCiAgICBJTlNUQUxMRURfQVBQUyA9IFsKICAgICAgICAnZHJmX3NwZWN0YWN1bGFyX3dlYnNvY2tldCcsCiAgICAgICAgJ2RyZl9zcGVjdGFjdWxhcicsCiAgICAgICAgJ2RyZl9zcGVjdGFjdWxhcl9zaWRlY2FyJywKICAgIF0KICAgIGBgYAoKCiMjIENvbmZpZ3VyZSBzZXR0aW5ncwpgYGBweXRob24KQVNHSV9BUFBMSUNBVElPTiA9ICdwYXRoLnRvLnlvdXIuYXBwbGljYXRpb24nCgojIChPcHRpb25hbCkgdGhpcyBpcyBkZWZhdWx0IHNldHRpbmdzIGFyZSBhdXRvbWF0aWNhbGx5IHNldCBieSB0aGUgZHJmX3NwZWN0YWN1bGFyX3dlYnNvY2tldC4KIyBZb3UgY2FuIG92ZXJyaWRlIHRoZW0gaW4geW91ciBhcHBsaWNhdGlvbiBpZiBuZWNlc3NhcnkuClNQRUNUQUNVTEFSX1NFVFRJTkdTID0gewogICAgJ0RFRkFVTFRfR0VORVJBVE9SX0NMQVNTJzogJ2RyZl9zcGVjdGFjdWxhcl93ZWJzb2NrZXQuc2NoZW1hcy5Xc1NjaGVtYUdlbmVyYXRvcicsCiAgICAnU1dBR0dFUl9VSV9ESVNUJzogJ1NJREVDQVInLAogICAgJ1NXQUdHRVJfVUlfRkFWSUNPTl9IUkVGJzogJ1NJREVDQVInLAogICAgJ1JFRE9DX0RJU1QnOiAnU0lERUNBUicsCiAgICAnU1dBR0dFUl9VSV9TRVRUSU5HUyc6IHsKICAgICAgICAnY29ubmVjdFNvY2tldCc6IFRydWUsICAjIEF1dG9tYXRpY2FsbHkgZXN0YWJsaXNoIGEgV1MgY29ubmVjdGlvbiB3aGVuIG9wZW5pbmcgc3dhZ2dlcgogICAgICAgICdzb2NrZXRNYXhNZXNzYWdlcyc6IDgsICAjIE1heCBudW1iZXIgb2YgbWVzc2FnZXMgZGlzcGxheWVkIGluIHRoZSBsb2cgd2luZG93IGluIHN3YWdnZXIKICAgICAgICAnc29ja2V0TWVzc2FnZXNJbml0aWFsT3BlbmVkJzogRmFsc2UsICAjIEF1dG9tYXRpY2FsbHkgb3BlbiB0aGUgbG9nIHdpbmRvdyB3aGVuIG9wZW5pbmcgc3dhZ2dlcgogICAgfSwKfQpgYGAKCj4gZHJmX3NwZWN0YWN1bGFyX3dlYnNvY2tldCBhdXRvbWF0aWNhbGx5IGZpbmRzIHdlYnNvY2tldCB1cmxzIGFuZCByZWxhdGVkIGNvbnN1bWVyIHVzaW5nIGBBU0dJX0FQUExJQ0FUSU9OYCBzZXR0aW5nLgoKIyMgQWJvdXQgZGVjb3JhdG9yCmBleHRlbmRfd3Nfc2NoZW1hYCBkZWNvcmF0b3IgYWNjZXB0cyBvbmUgbmV3IGB0eXBlYCBwYXJhbWV0ZXIgcmVsYXRpdmUgdG8gZHJmX3NwZWN0YWN1bGFyIGBleHRlbmRfc2NoZW1hYC4KLSBwb3NzaWJsZSB2YWx1ZXM6CiAgICAtIGBzZW5kYCAtIFR5cGUgb2YgaW50ZXJhY3Rpb24sIFtyZXF1ZXN0IC0+IHJlc3BvbnNlXQogICAgLSBgcmVjZWl2ZWAgLSBUeXBlIG9mIGludGVyYWN0aW9uLCBbcmVzcG9uc2Ugd2l0aG91dCByZXF1ZXN0XQoKIyMgVXNhZ2UgZXhhbXBsZQoKYGBgcHl0aG9uCmZyb20gY2hhbm5lbHMuZ2VuZXJpYy53ZWJzb2NrZXQgaW1wb3J0IEFzeW5jSnNvbldlYnNvY2tldENvbnN1bWVyCmZyb20gcmVzdF9mcmFtZXdvcmsuc2VyaWFsaXplcnMgaW1wb3J0IFNlcmlhbGl6ZXIsIENoYXJGaWVsZApmcm9tIGRyZl9zcGVjdGFjdWxhcl93ZWJzb2NrZXQuZGVjb3JhdG9ycyBpbXBvcnQgZXh0ZW5kX3dzX3NjaGVtYQoKCmNsYXNzIFNvbWVNZXRob2RJbnB1dFNlcmlhbGl6ZXIoU2VyaWFsaXplcik6CiAgICBzb21lX2ZpZWxkID0gQ2hhckZpZWxkKCkKCgpjbGFzcyBTb21lTWV0aG9kT3V0cHV0U2VyaWFsaXplcihTZXJpYWxpemVyKToKICAgIHNvbWVfZmllbGQgPSBDaGFyRmllbGQoKQoKCmNsYXNzIFNlbmRNZXNzYWdlT3V0cHV0U2VyaWFsaXplcihTZXJpYWxpemVyKToKICAgIHNvbWVfZmllbGQgPSBDaGFyRmllbGQoKQoKCmNsYXNzIFNvbWVDb25zdW1lcihBc3luY0pzb25XZWJzb2NrZXRDb25zdW1lcik6CgogICAgYXN5bmMgZGVmIHJlY2VpdmVfanNvbihzZWxmLCBjb250ZW50LCAqKmt3YXJncyk6CiAgICAgICAgc29tZV92YWx1ZSA9IGNvbnRlbnQuZ2V0KCdzb21lX2tleScpCiAgICAgICAgaWYgc29tZV92YWx1ZToKICAgICAgICAgICAgYXdhaXQgc2VsZi5zb21lX21ldGhvZChzb21lX3ZhbHVlKQoKICAgIEBleHRlbmRfd3Nfc2NoZW1hKAogICAgICAgIHR5cGU9J3NlbmQnLAogICAgICAgIHN1bW1hcnk9J3NvbWVfbWV0aG9kX3N1bW1hcnknLAogICAgICAgIGRlc2NyaXB0aW9uPSdzb21lX21ldGhvZF9kZXNjcmlwdGlvbicsCiAgICAgICAgcmVxdWVzdD1Tb21lTWV0aG9kSW5wdXRTZXJpYWxpemVyLAogICAgICAgIHJlc3BvbnNlcz1Tb21lTWV0aG9kT3V0cHV0U2VyaWFsaXplciwKICAgICkKICAgIGFzeW5jIGRlZiBzb21lX21ldGhvZChzZWxmLCBzb21lX3ZhbHVlKToKICAgICAgICBpbnB1dF9zZXJpYWxpemVyID0gU29tZU1ldGhvZElucHV0U2VyaWFsaXplcihkYXRhPXNvbWVfdmFsdWUpCiAgICAgICAgaW5wdXRfc2VyaWFsaXplci5pc192YWxpZChyYWlzZV9leGNlcHRpb249VHJ1ZSkKCiAgICAgICAgcmV0dXJuX3ZhbHVlID0gYXdhaXQgc29tZV9idXNpbmVzc19sb2dpYyhpbnB1dF9zZXJpYWxpemVyLnZhbGlkYXRlZF9kYXRhKQoKICAgICAgICBvdXRwdXRfc2VyaWFsaXplciA9IFNvbWVNZXRob2RPdXRwdXRTZXJpYWxpemVyKGRhdGE9cmV0dXJuX3ZhbHVlKQogICAgICAgIG91dHB1dF9zZXJpYWxpemVyLmlzX3ZhbGlkKHJhaXNlX2V4Y2VwdGlvbj1UcnVlKQoKICAgICAgICBhd2FpdCBzZWxmLnNlbmRfanNvbihvdXRwdXRfc2VyaWFsaXplci52YWxpZGF0ZWRfZGF0YSkKCiAgICBAZXh0ZW5kX3dzX3NjaGVtYSgKICAgICAgICB0eXBlPSdyZWNlaXZlJywKICAgICAgICBzdW1tYXJ5PSdzZW5kX21lc3NhZ2Vfc3VtbWFyeScsCiAgICAgICAgZGVzY3JpcHRpb249J3NlbmRfbWVzc2FnZV9kZXNjcmlwdGlvbicsCiAgICAgICAgcmVxdWVzdD1Ob25lLAogICAgICAgIHJlc3BvbnNlcz1TZW5kTWVzc2FnZU91dHB1dFNlcmlhbGl6ZXIsCiAgICApCiAgICBhc3luYyBkZWYgc2VuZF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgIGF3YWl0IHNlbGYuc2VuZF9qc29uKG1lc3NhZ2UpCmBgYAoKIyMgQ29udHJpYnV0aW5nCldlIHdvdWxkIGxvdmUgeW91IHRvIGNvbnRyaWJ1dGUgdG8gYGRyZi1zcGVjdGFjdWxhci13ZWJzb2NrZXRgLCBwdWxsIHJlcXVlc3RzIGFyZSB2ZXJ5IHdlbGNvbWUhIFBsZWFzZSBzZWUgW0NPTlRSSUJVVElORy5tZF0oaHR0cHM6Ly9naXRodWIuY29tL0ZyaXNrZXMvZHJmLXNwZWN0YWN1bGFyLXdlYnNvY2tldC9ibG9iL21haW4vQ09OVFJJQlVUSU5HLm1kKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiMjIFN3YWdnZXIgRXhhbXBsZXMKCiMjIyBTZW5kCiFbXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vRnJpc2tlcy9kcmYtc3BlY3RhY3VsYXItd2Vic29ja2V0L21haW4vaW1hZ2VzL2V4YW1wbGVfc2VuZC5wbmcpCgojIyMgUmVjZWl2ZQohW10oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0ZyaXNrZXMvZHJmLXNwZWN0YWN1bGFyLXdlYnNvY2tldC9tYWluL2ltYWdlcy9leGFtcGxlX3JlY2VpdmUucG5nKQo= readmeEtag: '"10ac7c491ecba05706d0f84baf56dfc2d4e3a4bb"' readmeLastModified: Tue, 25 Jun 2024 20:05:21 GMT repositoryId: 789855166 description: Extend websocket schema decorator for Django Channels created: '2024-04-21T18:27:01Z' updated: '2026-02-02T07:01:11Z' language: Python archived: false stars: 16 watchers: 1 forks: 2 owner: Friskes logo: https://avatars.githubusercontent.com/u/78731609?v=4 license: MIT repoEtag: '"16d71d9e49f780fb61c3a83e7db539979ccd8ca056b905cca5a359a51f3ccee3"' repoLastModified: Mon, 02 Feb 2026 07:01:11 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/rahul-ghadge/spring-boot-cassandra-crud v3: true repositoryMetadata: base64Readme: >- IyBzcHJpbmctYm9vdC1jYXNzYW5kcmEtY3J1ZApTcHJpbmcgYm9vdCBDUlVEIChDcmVhdGUsIFJlYWQsIFVwZGF0ZSwgRGVsZXRlKSBkZW1vIGFwcGxpY2F0aW9uIHdpdGggY2Fzc2FuZHJhIERCIC0gCkluIHRoaXMgYXBwbGljYXRpb24sIHdlIGhhdmUgaW1wbGVtZW50ZWQgQ1JVRCAoQ3JlYXRlLCBSZWFkLCBVcGRhdGUsIERlbGV0ZSkgb3BlcmF0aW9ucyB1c2luZyBzcHJpbmcgZGF0YSBhbmQgY2Fzc2FuZHJhIERCLiAgCgoKIyMgUHJlcmVxdWlzaXRlcyAKLSBKYXZhCi0gW1NwcmluZyBCb290XShodHRwczovL3NwcmluZy5pby9wcm9qZWN0cy9zcHJpbmctYm9vdCkKLSBbTWF2ZW5dKGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZy9ndWlkZXMvaW5kZXguaHRtbCkKLSBbQ2Fzc2FuZHJhXShodHRwczovL2Nhc3NhbmRyYS5hcGFjaGUub3JnLykKCgojIyBUb29scwotIEVjbGlwc2Ugb3IgSW50ZWxsaUogSURFQSAob3IgYW55IHByZWZlcnJlZCBJREUpIHdpdGggZW1iZWRkZWQgR3JhZGxlCi0gTWF2ZW4gKHZlcnNpb24gPj0gMy42LjApCi0gUG9zdG1hbiAob3IgYW55IFJFU1RmdWwgQVBJIHRlc3RpbmcgdG9vbCkKLSBjcWxzaCAoY2Fzc2FuZHJhIHF1ZXJ5IGxhbmd1YWdlIHNoZWxsKSAtIGZvciBtb25pdG9yaW5nIHN0b3JlZCBkYXRhCgoKCiMjIyAgQnVpbGQgYW5kIFJ1biBhcHBsaWNhdGlvbgpfR09UTyA+XyAqKn4vYWJzb2x1dGUtcGF0aC10by1kaXJlY3Rvcnkvc3ByaW5nLWJvb3QtY2Fzc2FuZHJhLWNydWQqKiAgCmFuZCB0cnkgYmVsb3cgY29tbWFuZCBpbiB0ZXJtaW5hbAo+ICoqYGBgbXZuIHNwcmluZy1ib290OnJ1bmBgYCoqIGl0IHdpbGwgcnVuIGFwcGxpY2F0aW9uIGFzIHNwcmluZyBib290IGFwcGxpY2F0aW9uCgpvcgo+ICoqYGBgbXZuIGNsZWFuIGluc3RhbGxgYGAqKiBpdCB3aWxsIGJ1aWxkIGFwcGxpY2F0aW9uIGFuZCBjcmVhdGUgKipqYXIqKiBmaWxlIHVuZGVyIHRhcmdldCBkaXJlY3RvcnkgCgpSdW4gamFyIGZpbGUgZnJvbSBiZWxvdyBwYXRoIHdpdGggZ2l2ZW4gY29tbWFuZAo+ICoqYGBgamF2YSAtamFyIH4vcGF0aC10by1zcHJpbmctYm9vdC1jYXNzYW5kcmEtY3J1ZC90YXJnZXQvc3ByaW5nLWJvb3QtY2Fzc2FuZHJhLWNydWQtMC4wLjEtU05BUFNIT1QuamFyYGBgKioKCk9yCj4gcnVuIG1haW4gbWV0aG9kIGZyb20gYFNwcmluZ0Jvb3RDYXNzYW5kcmFDcnVkQXBwbGljYXRpb24uamF2YWAgYXMgc3ByaW5nIGJvb3QgYXBwbGljYXRpb24uICAKCgp8fAp8ICAtLS0tLS0tLS0gICAgfAp8ICoqX05vdGVfKiogOiBJbiBgU3ByaW5nQm9vdENhc3NhbmRyYUNydWRBcHBsaWNhdGlvbi5qYXZhYCBjbGFzcyB3ZSBoYXZlIGF1dG93aXJlZCBTdXBlckhlcm8gcmVwb3NpdG9yeS4gPGJyLz5JZiB0aGVyZSBpcyBubyByZWNvcmQgcHJlc2VudCBpbiBEQiBmb3IgU3VwZXJIZXJvIG1vZGVsIGNsYXNzLCBzdGF0aWMgZGF0YSBpcyBnZXR0aW5nIGluc2VydGVkIGluIERCIGZyb20gYEhlbHBlclV0aWwuamF2YWAgY2xhc3Mgd2hlbiB3ZSBhcmUgc3RhcnRpbmcgdGhlIGFwcCBmb3IgdGhlIGZpcnN0IHRpbWUufCAKCgotLS0KIyMjIEZvciBBUEkgZG9jdW1lbnQgdXNpbmcgT3BlbkFQSSBVSSAKCj4gKipodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS1jdXN0b20uaHRtbCoqCgohW1N3YWdnZXIgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3JhaHVsLWdoYWRnZS9zcHJpbmctYm9vdC1jYXNzYW5kcmEtY3J1ZC9ibG9iL21hc3Rlci9zcmMvbWFpbi9yZXNvdXJjZXMvc3RhdGljL3NwcmluZy1ib290LWNhc3NhbmRyYS1jcnVkLVN3YWdnZXIuUE5HP3Jhdz10cnVlICJTcHJpbmcgRGF0YSBDYXNzYW5kcmEgU3dhZ2dlciIpCgotLS0KCiMjIyBJbnN0YWxsIEpESzgKU3RlcCAxOiBEb3dubG9hZCBKREs4IGZyb20gW0pESyBzaXRlXShodHRwczovL3d3dy5vcmFjbGUuY29tL2phdmEvdGVjaG5vbG9naWVzL2phdmFzZS9qYXZhc2UtamRrOC1kb3dubG9hZHMuaHRtbCkuICAKU3RlcCAyOiBJbnN0YWxsIGRvd25sb2FkZWQgYW4gZXhlY3V0YWJsZSBmaWxlLiAgClN0ZXAgMzogQWRkIEpESzggcGF0aCBhcyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIAoKCgojIyMgU2V0dXAgY3Fsc2ggKGNhc3NhbmRyYSBxdWVyeSBsYW5ndWFnZSBzaGVsbCkgLSBmb3IgbW9uaXRvcmluZyBzdG9yZWQgZGF0YQpTdGVwIDE6ICoqUHl0aG9uMi43KiogaXMgbWFuZGF0b3J5IGZvciBjcWxzaCB0byBoYW5kbGUgdXNlciByZXF1ZXN0cy4gRG93bmxvYWQgUHl0aG9uMi43IGZyb20gW1B5dGhvbiBzaXRlXShodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy9yZWxlYXNlL3B5dGhvbi0yNzE4LykuICAKU3RlcCAyOiBJbnN0YWxsIGRvd25sb2FkZWQgYW4gZXhlY3V0YWJsZSBmaWxlLiAgClN0ZXAgMzogQWRkIFB5dGhvbjIuNyBwYXRoIGFzIGVudmlyb25tZW50IHZhcmlhYmxlLiAgCgoKCgojIyMgU2V0dXAgQ2Fzc2FuZHJhClN0ZXAgMTogRG93bmxvYWQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGFwYWNoZS1jYXNzYW5kcmEteC54eC54IGZyb20gW0Nhc3NhbmRyYSBzaXRlXShodHRwczovL2Nhc3NhbmRyYS5hcGFjaGUub3JnL2Rvd25sb2FkLykuICAKU3RlcCAyOiBVbnppcCB0aGUgY29tcHJlc3NlZCB6aXAgZmlsZSB1c2luZyBhIGNvbXByZXNzaW9uIHRvb2wgdG8gYW55IGxvY2F0aW9uLiBFeC4gYzpcYXBhY2hlLWNhc3NhbmRyYS14Lnh4LnggIApTdGVwIDM6IEFkZCBjOlxhcGFjaGUtY2Fzc2FuZHJhLXgueHgueFxiaW4gcGF0aCBhcyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIAoKCi0tLQoKIyMjIyBTdGFydCB0aGUgQ2Fzc2FuZHJhIGFuZCBjcWxzaCAKCiMjIyMjIFN0YXJ0IENhc3NhbmRyYQpNYWtlIHN1cmUgYmluIHBhdGggaXMgc2V0IGZvciBjYXNzYW5kcmEgaW4gZW52aXJvbm1lbnQgdmFyaWFibGUuICAKPiBgY2Fzc2FuZHJhYAoKSWYgbm8gZXJyb3Igb24gdGhlIGNvbnNvbGUgbWVhbnMgY2Fzc2FuZHJhIGlzIHN0YXJ0ZWQgYW5kIHJ1bm5pbmcuCgoKIyMjIyMgU3RhcnQgY3Fsc2ggCk1ha2Ugc3VyZSBwYXRoIGlzIHNldCBmb3IgdGhlIHB5dGhvbiBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIAo+IGBjcWxzaGAKCklmIG5vIGVycm9yIG9uIHRoZSBjb25zb2xlIG1lYW5zICoqY3Fsc2gqKiBpcyBjb25uZWN0ZWQuCgoKIyMjIENvZGUgU25pcHBldHMKMS4gIyMjIyBNYXZlbiBEZXBlbmRlbmNpZXMKICAgIE5lZWQgdG8gYWRkIGJlbG93IGRlcGVuZGVuY3kgdG8gZW5hYmxlIGNhc3NhbmRyYSBpbiAqKnBvbS54bWwqKi4gICAgCiAgICBgYGAKCTxkZXBlbmRlbmN5PgoJICAgIDxncm91cElkPm9yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdDwvZ3JvdXBJZD4KCQk8YXJ0aWZhY3RJZD5zcHJpbmctYm9vdC1zdGFydGVyLWRhdGEtY2Fzc2FuZHJhPC9hcnRpZmFjdElkPgoJPC9kZXBlbmRlbmN5PgogICAJCQogICA8IS0tIEZvciBCb2lsZXJwbGF0ZSBjb2RlIChHZXR0ZXJzL1NldHRlcnMvQ29uc3RydWN0b3JzKSAtLT4KICAgPGRlcGVuZGVuY3k+CiAgIAkJPGdyb3VwSWQ+b3JnLnByb2plY3Rsb21ib2s8L2dyb3VwSWQ+CiAgIAkJPGFydGlmYWN0SWQ+bG9tYm9rPC9hcnRpZmFjdElkPgogICAJCTxvcHRpb25hbD50cnVlPC9vcHRpb25hbD4KICAgPC9kZXBlbmRlbmN5PgogICAgYGBgCiAgICAKICAgIEZvciBBUEkgZG9jdW1lbnRhdGlvbiB1c2luZyBzd2FnZ2VyIGFuZCBPcGVuQXBpIFVJIGFkZCBiZWxvdyBkZXBlbmRlbmN5LgoJYGBgCgk8ZGVwZW5kZW5jeT4KCSAgICA8Z3JvdXBJZD5vcmcuc3ByaW5nZG9jPC9ncm91cElkPgoJCTxhcnRpZmFjdElkPnNwcmluZ2RvYy1vcGVuYXBpLXVpPC9hcnRpZmFjdElkPgoJCTx2ZXJzaW9uPjEuNC40PC92ZXJzaW9uPgoJPC9kZXBlbmRlbmN5PgoJYGBgCiAgIAoyLiAjIyMjIFByb3BlcnRpZXMgZmlsZQogICAgIFBsYWNlZCBwcm9wZXJ0aWVzIGluICoqYXBwbGljYXRpb24ueW1sKiogZmlsZSByZWxhdGVkIHRvIGNhc3NhbmRyYSB3aGljaCB3ZSBhcmUgcmVhZGluZyBpbiAqKkNhc3NhbmRyYUNvbmZpZy5qYXZhKiogY2xhc3MKICAgICBhbmQgY29uZmlndXJpbmcgY2Fzc2FuZHJhIGNvbm5lY3Rpb24gZm9yIENhc3NhbmRyYS4gIAogICAgIEFQSSBkb2N1bWVudGF0aW9uIHJlbGF0ZWQgc3dhZ2dlciBVSSBwYXRoIGlzIGFsc28gcGxhY2VkIGhlcmUgd2hpY2ggd2lsbCBlbmFibGUgU3dhZ2dlciBBUEkgRG9jIG9uIHNhbWUgcGF0aC4gIAogICAgICoqc3JjL21haW4vcmVzb3VyY2VzL2FwcGxpY2F0aW9uLnltbCoqICAgICAKICAgICBgYGAKICAgICBzcHJpbmc6CiAgICAgICBkYXRhOgogICAgICAgICBjYXNzYW5kcmE6CiAgICAgICAgICAgY29udGFjdC1wb2ludHM6IGxvY2FsaG9zdAogICAgICAgICAgIHBvcnQ6IDkwNDIKICAgICAgICAgICBrZXlzcGFjZS1uYW1lOiBzaW1wbGVfY3J1ZAogICAgICAgICAgICN1c2VybmFtZTogY2Fzc2FuZHJhCiAgICAgICAgICAgI3Bhc3N3b3JkOiBjYXNzYW5kcmEKICAgICAgICAgICAjc2NoZW1hLWFjdDogY3JlYXRlX2lmX25vdF9leGlzdHMKICAgICAKICAgICBzcHJpbmdkb2M6CiAgICAgICB2ZXJzaW9uOiAxLjAuMAogICAgICAgc3dhZ2dlci11aToKICAgICAgICAgcGF0aDogL3N3YWdnZXItdWktY3VzdG9tLmh0bWwKICAgICBgYGAKCgozLiAjIyMjIE1vZGVsIGNsYXNzCiAgICBCZWxvdyBhcmUgdGhlIG1vZGVsIGNsYXNzZXMgd2hpY2ggd2Ugd2lsbCBzdG9yZSBpbiBjYXNzYW5kcmEgYW5kIHBlcmZvcm0gQ1JVRCBvcGVyYXRpb25zLiAgCiAgICAqKmNvbS5hcnlhLmNhc3NhbmRyYS5tb2RlbC5TdXBlckhlcm8uamF2YSoqICAKICAgICoqY29tLmFyeWEuY2Fzc2FuZHJhLm1vZGVsLlN1cGVyUG93ZXJzLmphdmEqKiAgCiAgICBgYGAKICAgIEBEYXRhCiAgICBAQnVpbGRlcgogICAgQFRhYmxlKCJzdXBlcl9oZXJvIikKICAgIHB1YmxpYyBjbGFzcyBTdXBlckhlcm8gaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeyAgICAKICAgICAgICBAUHJpbWFyeUtleQogICAgICAgIHByaXZhdGUgTG9uZyBpZDsgICAgCiAgICAgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsgICAgCiAgICAgICAgQENvbHVtbigic3VwZXJfbmFtZSIpCiAgICAgICAgcHJpdmF0ZSBTdHJpbmcgc3VwZXJOYW1lOyAgICAKICAgICAgICBwcml2YXRlIFN0cmluZyBwcm9mZXNzaW9uOyAgICAKICAgICAgICBwcml2YXRlIGludCBhZ2U7ICAgIAogICAgICAgIEBDb2x1bW4oInN1cGVyX3Bvd2VycyIpCiAgICAgICAgcHJpdmF0ZSBTdXBlclBvd2VycyBzdXBlclBvd2VyczsgICAgCiAgICB9CiAgIAogICAKICAgQERhdGEKICAgQEJ1aWxkZXIKICAgQFVzZXJEZWZpbmVkVHlwZSgic3VwZXJfcG93ZXJzIikKICAgcHVibGljIGNsYXNzIFN1cGVyUG93ZXJzIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsgICAKICAgICAgIHByaXZhdGUgU3RyaW5nIHN0cmVuZ3RoOyAgIAogICAgICAgcHJpdmF0ZSBTdHJpbmcgZHVyYWJpbGl0eTsgICAKICAgICAgIHByaXZhdGUgYm9vbGVhbiBjYW5GbHk7CiAgIH0KICAgIGBgYAoKCjQuICMjIyMgQ2Fzc2FuZHJhIENvbmZpZ3VyYXRpb24KICAgVGhpcyBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgY2xhc3MgaW4gdGhpcyBhcHBsaWNhdGlvbiwgd2hlcmUgYWxsIGNhc3NhbmRyYSByZWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgcGxhY2VkIAogICBhbmQgdXNpbmcgdGhpcyBjbGFzcyB3ZSBhcmUgY29ubmVjdGluZyB0byBjYXNzYW5kcmEgYW5kIGNyZWF0aW5nICoqS0VZU1BBQ0UqKiBhbmQgKipUQUJMRVMqKiBhbHNvIHdoaWxlIHN0YXJ0aW5nIHRoZSBhcHBsaWNhdGlvbi4KCiAgIGBgYAogICBpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uVmFsdWU7CiAgIGltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvbnRleHQuYW5ub3RhdGlvbi5Db25maWd1cmF0aW9uOwogICBpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5kYXRhLmNhc3NhbmRyYS5jb25maWcuQWJzdHJhY3RDYXNzYW5kcmFDb25maWd1cmF0aW9uOwogICBpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5kYXRhLmNhc3NhbmRyYS5jb25maWcuU2NoZW1hQWN0aW9uOwogICBpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5kYXRhLmNhc3NhbmRyYS5jb3JlLmNxbC5rZXlzcGFjZS5DcmVhdGVLZXlzcGFjZVNwZWNpZmljYXRpb247CiAgIGltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmRhdGEuY2Fzc2FuZHJhLmNvcmUuY3FsLmtleXNwYWNlLkRyb3BLZXlzcGFjZVNwZWNpZmljYXRpb247CiAgIGltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmRhdGEuY2Fzc2FuZHJhLmNvcmUuY3FsLmtleXNwYWNlLktleXNwYWNlT3B0aW9uOwogICAKICAgaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKICAgaW1wb3J0IGphdmEudXRpbC5MaXN0OwogICAKICAgQENvbmZpZ3VyYXRpb24KICAgcHVibGljIGNsYXNzIENhc3NhbmRyYUNvbmZpZyBleHRlbmRzIEFic3RyYWN0Q2Fzc2FuZHJhQ29uZmlndXJhdGlvbiB7CiAgIAogICAgICAgQFZhbHVlKCIke3NwcmluZy5kYXRhLmNhc3NhbmRyYS5rZXlzcGFjZS1uYW1lOiBzaW1wbGVfY3J1ZH0iKQogICAgICAgcHJpdmF0ZSBTdHJpbmcgS0VZU1BBQ0U7CiAgIAogICAgICAgQFZhbHVlKCIke3NwcmluZy5kYXRhLmNhc3NhbmRyYS5jb250YWN0LXBvaW50czogbG9jYWxob3N0fSIpCiAgICAgICBwcml2YXRlIFN0cmluZyBDT05UQUNUX1BPSU5UOwogICAKICAgICAgIEBWYWx1ZSgiJHtzcHJpbmcuZGF0YS5jYXNzYW5kcmEucG9ydDogOTA0Mn0iKQogICAgICAgcHJpdmF0ZSBpbnQgUE9SVDsKICAgCiAgIAogICAgICAgQE92ZXJyaWRlCiAgICAgICBwdWJsaWMgU3RyaW5nIGdldENvbnRhY3RQb2ludHMoKSB7CiAgICAgICAgICAgcmV0dXJuIENPTlRBQ1RfUE9JTlQ7CiAgICAgICB9CiAgIAogICAgICAgQE92ZXJyaWRlCiAgICAgICBwcm90ZWN0ZWQgaW50IGdldFBvcnQoKSB7CiAgICAgICAgICAgcmV0dXJuIFBPUlQ7CiAgICAgICB9CiAgIAogICAgICAgQE92ZXJyaWRlCiAgICAgICBwdWJsaWMgU2NoZW1hQWN0aW9uIGdldFNjaGVtYUFjdGlvbigpIHsKICAgICAgICAgICByZXR1cm4gU2NoZW1hQWN0aW9uLkNSRUFURV9JRl9OT1RfRVhJU1RTOwogICAgICAgfQogICAKICAgICAgIEBPdmVycmlkZQogICAgICAgcHJvdGVjdGVkIExpc3Q8Q3JlYXRlS2V5c3BhY2VTcGVjaWZpY2F0aW9uPiBnZXRLZXlzcGFjZUNyZWF0aW9ucygpIHsKICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChDcmVhdGVLZXlzcGFjZVNwZWNpZmljYXRpb24uY3JlYXRlS2V5c3BhY2UoS0VZU1BBQ0UpCiAgICAgICAgICAgICAgICAgICAuaWZOb3RFeGlzdHMoKQogICAgICAgICAgICAgICAgICAgLndpdGgoS2V5c3BhY2VPcHRpb24uRFVSQUJMRV9XUklURVMsIHRydWUpCiAgICAgICAgICAgICAgICAgICAud2l0aFNpbXBsZVJlcGxpY2F0aW9uKDNMKSk7CiAgICAgICB9CiAgIAogICAgICAgQE92ZXJyaWRlCiAgICAgICBwcm90ZWN0ZWQgU3RyaW5nIGdldExvY2FsRGF0YUNlbnRlcigpIHsKICAgICAgICAgICByZXR1cm4gImRhdGFjZW50ZXIxIjsKICAgICAgIH0KICAgCiAgICAgICAvL0BPdmVycmlkZQogICAgICAgLy9wcm90ZWN0ZWQgTGlzdDxEcm9wS2V5c3BhY2VTcGVjaWZpY2F0aW9uPiBnZXRLZXlzcGFjZURyb3BzKCkgewogICAgICAgLy8gICAgcmV0dXJuIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoRHJvcEtleXNwYWNlU3BlY2lmaWNhdGlvbi5kcm9wS2V5c3BhY2UoS0VZU1BBQ0UpKTsKICAgICAgIC8vfQogICAKICAgICAgIEBPdmVycmlkZQogICAgICAgcHJvdGVjdGVkIFN0cmluZyBnZXRLZXlzcGFjZU5hbWUoKSB7CiAgICAgICAgICAgcmV0dXJuIEtFWVNQQUNFOwogICAgICAgfQogICAgICAKICAgICAgIEBPdmVycmlkZQogICAgICAgcHVibGljIFN0cmluZ1tdIGdldEVudGl0eUJhc2VQYWNrYWdlcygpIHsKICAgICAgICAgICByZXR1cm4gbmV3IFN0cmluZ1tdIHsiY29tLmFyeWEuY2Fzc2FuZHJhLm1vZGVsIn07CiAgICAgICB9ICAgCiAgIH0KICAgYGBgCiAgIAogICAKICAgCjUuICMjIyMgQ1JVRCBvcGVyYXRpb24gZm9yIFN1cGVyIEhlcm9lcwoKICAgIEluICoqY29tLmFyeWEuY2Fzc2FuZHJhLmNvbnRyb2xsZXIuU3VwZXJIZXJvQ29udHJvbGxlci5qYXZhKiogY2xhc3MsIAogICAgd2UgaGF2ZSBleHBvc2VkIDUgZW5kcG9pbnRzIGZvciBiYXNpYyBDUlVEIG9wZXJhdGlvbnMKICAgIC0gR0VUIEFsbCBTdXBlciBIZXJvZXMKICAgIC0gR0VUIGJ5IElECiAgICAtIFBPU1QgdG8gc3RvcmUgU3VwZXIgSGVybyBpbiBEQgogICAgLSBQVVQgdG8gdXBkYXRlIFN1cGVyIEhlcm8KICAgIC0gREVMRVRFIGJ5IElECiAgICAKICAgIGBgYAogICAgQFJlc3RDb250cm9sbGVyCiAgICBAUmVxdWVzdE1hcHBpbmcoIi9zdXBlci1oZXJvZXMiKQogICAgcHVibGljIGNsYXNzIFN1cGVySGVyb0NvbnRyb2xsZXIgewogICAgICAgIAogICAgICAgIEBHZXRNYXBwaW5nKCIvc2F2ZSIpCiAgICAgICAgcHVibGljIFJlc3BvbnNlRW50aXR5PExpc3Q8U3VwZXJIZXJvPj4gc2F2ZSgpOwogICAKICAgICAgICBAR2V0TWFwcGluZwogICAgICAgIHB1YmxpYyBSZXNwb25zZUVudGl0eTxMaXN0PFN1cGVySGVybz4+IGZpbmRBbGwoKTsKICAgIAogICAgICAgIEBHZXRNYXBwaW5nKCIve2lkfSIpCiAgICAgICAgcHVibGljIFJlc3BvbnNlRW50aXR5PFN1cGVySGVybz4gZmluZEJ5SWQoQFBhdGhWYXJpYWJsZSBTdHJpbmcgaWQpOwogICAgCiAgICAgICAgQFBvc3RNYXBwaW5nCiAgICAgICAgcHVibGljIFJlc3BvbnNlRW50aXR5PFN1cGVySGVybz4gc2F2ZShAUmVxdWVzdEJvZHkgU3VwZXJIZXJvIHN1cGVySGVybyk7CiAgICAKICAgICAgICBAUHV0TWFwcGluZwogICAgICAgIHB1YmxpYyBSZXNwb25zZUVudGl0eTxTdXBlckhlcm8+IHVwZGF0ZShAUmVxdWVzdEJvZHkgU3VwZXJIZXJvIHN1cGVySGVybyk7CiAgICAKICAgICAgICBARGVsZXRlTWFwcGluZygiL3tpZH0iKQogICAgICAgIHB1YmxpYyBSZXNwb25zZUVudGl0eTxTdXBlckhlcm8+IGRlbGV0ZShAUGF0aFZhcmlhYmxlIFN0cmluZyBpZCk7CiAgICB9CiAgICBgYGAKICAgCiAgICBJbiAqKmNvbS5hcnlhLmNhc3NhbmRyYS5yZXBvc2l0b3J5LlN1cGVySGVyb1JlcG9zaXRvcnkuamF2YSoqLCB3ZSBhcmUgZXh0ZW5kaW5nIGBDYXNzYW5kcmFSZXBvc2l0b3J5PENsYXNzLCBJRD5gIGludGVyZmFjZSB3aGljaCBlbmFibGVzIENSVUQgcmVsYXRlZCBtZXRob2RzLgogICAgYGBgCiAgICBAUmVwb3NpdG9yeQogICAgcHVibGljIGludGVyZmFjZSBTdXBlckhlcm9SZXBvc2l0b3J5IGV4dGVuZHMgQ2Fzc2FuZHJhUmVwb3NpdG9yeTxTdXBlckhlcm8sIExvbmc+IHsKICAgIH0KICAgIGBgYAogICAKICAgSW4gKipjb20uYXJ5YS5jYXNzYW5kcmEuc2VydmljZS5pbXBsLlN1cGVySGVyb1NlcnZpY2VJbXBsLmphdmEqKiwgd2UgYXJlIGF1dG93aXJpbmcgYWJvdmUgaW50ZXJmYWNlIHVzaW5nIGBAQXV0b3dpcmVkYCBhbm5vdGF0aW9uIGFuZCBkb2luZyBDUlVEIG9wZXJhdGlvbi4KCgo2LiAjIyMjIFF1ZXJ5IG9wZXJhdGlvbiBmb3IgU3VwZXJIZXJvCiAgIEluICoqY29tLmFyeWEuY2Fzc2FuZHJhLmNvbnRyb2xsZXIuU3VwZXJIZXJvUXVlcnlDb250cm9sbGVyLmphdmEqKiBjbGFzcyBDYXNzYW5kcmEgcXVlcmllcyBBUEkgRW5kcG9pbnRzIGFyZSBwbGFjZWQuCiAgIHdlIGFyZSBhdXRvd2lyaW5nIFN1cGVySGVyb1F1ZXJ5U2VydmljZSBpbnRlcmZhY2UgdXNpbmcgYEBBdXRvd2lyZWRgIGFubm90YXRpb24gYW5kIHJlYWNoaW5nIHRvIFNlcnZpY2UgbGF5ZXIuICAKICAgSW4gKipjb20uYXJ5YS5jYXNzYW5kcmEuc2VydmljZS5pbXBsLlN1cGVySGVyb1F1ZXJ5U2VydmljZUltcGwuamF2YSoqLCAKICAgd2UgYXJlIGF1dG93aXJpbmcgU3VwZXJIZXJvUXVlcnlSZXBvc2l0b3J5IGludGVyZmFjZSB1c2luZyBgQEF1dG93aXJlZGAgYW5ub3RhdGlvbiBhbmQgcmVhY2hpbmcgdG8gREFPIGxheWVyLgogICBJbiAqKmNvbS5hcnlhLmNhc3NhbmRyYS5yZXBvc2l0b3J5LmltcGwuU3VwZXJIZXJvUXVlcnlSZXBvc2l0b3J5SW1wbC5qYXZhKiosIAogICB3ZSBhcmUgYXV0b3dpcmluZyBgQ2Fzc2FuZHJhT3BlcmF0aW9uc2AgaW50ZXJmYWNlIHdoaWNoIGVuYWJsZXMgQ1JVRCByZWxhdGVkIG1ldGhvZHMuCiAgIGBgYAogICBAQXV0b3dpcmVkCiAgIHByaXZhdGUgQ2Fzc2FuZHJhT3BlcmF0aW9ucyBjYXNzYW5kcmFUZW1wbGF0ZTsKICAgYGBgIAogICAgCgoKPGJyLz4KCiMjIyBBUEkgRW5kcG9pbnRzCgotICMjIyMgU3VwZXIgSGVybyBDUlVEIE9wZXJhdGlvbnMKICAgID4gKipHRVQgTWFwcGluZyoqIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9zdXBlci1oZXJvZXMgIC0gR2V0IGFsbCBTdXBlciBIZXJvZXMKICAgIAogICAgPiAqKkdFVCBNYXBwaW5nKiogaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N1cGVyLWhlcm9lcy8xICAtIEdldCBTdXBlciBIZXJvIGJ5IElECiAgICAgICAKICAgID4gKipQT1NUIE1hcHBpbmcqKiBodHRwOi8vbG9jYWxob3N0OjgwODAvc3VwZXItaGVyb2VzICAtIEFkZCBuZXcgU3VwZXIgSGVybyBpbiBEQiAgCiAgICAKICAgICBSZXF1ZXN0IEJvZHkgIAogICAgIGBgYAogICAgIHsKICAgICAgICAgImlkIjogMSwKICAgICAgICAgIm5hbWUiOiAiVG9ueSIsCiAgICAgICAgICJzdXBlck5hbWUiOiAiSXJvbiBNYW4iLAogICAgICAgICAicHJvZmVzc2lvbiI6ICJCdXNpbmVzcyIsCiAgICAgICAgICJhZ2UiOiA1MCwgICAgICAgICAgICAKICAgICAgICAgInN1cGVyUG93ZXJzIjogewogICAgICAgICAgICAgInN0cmVuZ3RoIjogIlN1aXQiLAogICAgICAgICAgICAgImR1cmFiaWxpdHkiOiAiTW9udGgiLAogICAgICAgICAgICAgImNhbkZseSI6IHRydWUKICAgICAgICAgfQogICAgIH0KICAgICBgYGAKICAgIAogICAgPiAqKlBVVCBNYXBwaW5nKiogaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N1cGVyLWhlcm9lcyAgLSBVcGRhdGUgZXhpc3RpbmcgU3VwZXIgSGVybyBmb3IgZ2l2ZW4gSUQgCiAgICAKICAgICBSZXF1ZXN0IEJvZHkgICAgCiAgICAgYGBgCiAgICAgewogICAgICAgICAiaWQiOiAxLAogICAgICAgICAibmFtZSI6ICJUb255IiwKICAgICAgICAgInN1cGVyTmFtZSI6ICJJcm9uIE1hbiIsCiAgICAgICAgICJwcm9mZXNzaW9uIjogIkJ1c2luZXNzIiwKICAgICAgICAgImFnZSI6IDUwLCAgICAgICAgIAogICAgICAgICAic3VwZXJQb3dlcnMiOiB7CiAgICAgICAgICAgICAic3RyZW5ndGgiOiAiT25seSBpZiBoZSBpcyBpbiBhIHN1aXQiLAogICAgICAgICAgICAgImR1cmFiaWxpdHkiOiAiTW9udGgiLAogICAgICAgICAgICAgImNhbkZseSI6IHRydWUKICAgICAgICAgfQogICAgIH0KICAgICBgYGAKICAgIAogICAgPiAqKkRFTEVURSBNYXBwaW5nKiogaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N1cGVyLWhlcm9lcy8xICAtIERlbGV0ZSBTdXBlciBIZXJvIGJ5IElECgoKCiMjIyBPdXRwdXQKCiFbQWx0IHRleHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9yYWh1bC1naGFkZ2Uvc3ByaW5nLWJvb3QtY2Fzc2FuZHJhLWNydWQvYmxvYi9tYXN0ZXIvc3JjL21haW4vcmVzb3VyY2VzL3N0YXRpYy9zcHJpbmctZGF0YS1jYXNzYW5kcmEtb3V0cHV0LlBORz9yYXc9dHJ1ZSAiU3ByaW5nIERhdGEgQ2Fzc2FuZHJhIG91dHB1dCIpCg== readmeEtag: '"093c47bc7c2169b6144bafdd6fe939dd42f133d5"' readmeLastModified: Thu, 03 Sep 2020 15:30:51 GMT repositoryId: 288662036 description: >- Spring boot CRUD (Create, Read, Update, Delete) demo application with cassandra DB and API documentation using Swaager and OpenAPI UI created: '2020-08-19T07:18:27Z' updated: '2024-06-11T00:46:01Z' language: Java archived: false stars: 11 watchers: 1 forks: 18 owner: rahul-ghadge logo: https://avatars.githubusercontent.com/u/54259667?v=4 repoEtag: '"ed63dded7107d979326a286d2b4649778ab6d49b664a46217fbdc2bbe496452e"' repoLastModified: Tue, 11 Jun 2024 00:46:01 GMT foundInMaster: true category: Low-level Tooling id: 09cb31f38ecae6d0bbbeeddd376b3966 - source: openapi3 tags repository: https://github.com/privacyengineering/tira v3: true repositoryMetadata: base64Readme: >- IyBUSVJBOiBBbiBPcGVuQVBJIEV4dGVuc2lvbiBhbmQgVG9vbGJveCBmb3IgR0RQUiBUcmFuc3BhcmVuY3kgaW4gUkVTVGZ1bCBBcmNoaXRlY3R1cmVzCgoKPHAgZmxvYXQ9ImxlZnQiIGFsaWduPSJjZW50ZXIiPgogIDxpbWcgc3JjPSIvZG9jcy9pbWcvYXBwbGljYXRpb25fZmluYWwucG5nIiB3aWR0aD0iNjYlIiAvPiAKPC9wPgoKClRyYW5zcGFyZW5jeSDigJMgdGhlIHByb3Zpc2lvbiBvZiBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IHBlcnNvbmFsIGRhdGEgaXMgY29sbGVjdGVkIGZvciB3aGljaCBwdXJwb3NlcywgaG93IGxvbmcgaXQgaXMgc3RvcmVkLCBvciB0byB3aGljaCBwYXJ0aWVzIGl0IGlzIHRyYW5zZmVycmVkIOKAkyBpcyBvbmUgb2YgdGhlIGNvcmUgcHJpdmFjeSBwcmluY2lwbGVzIHVuZGVybHlpbmcgcmVndWxhdGlvbnMgc3VjaCBhcyB0aGUgR0RQUi4gVGVjaG5pY2FsIGFwcHJvYWNoZXMgZm9yIGltcGxlbWVudGluZyB0cmFuc3BhcmVuY3kgaW4gcHJhY3RpY2UgYXJlLCBob3dldmVyLCBvbmx5IHJhcmVseSBjb25zaWRlcmVkLiBJbiB0aGlzIHBhcGVyLCB3ZSBwcmVzZW50IGEgbm92ZWwgYXBwcm9hY2ggZm9yIGRvaW5nIHNvIGluIGN1cnJlbnQsIFJFU1RmdWwgYXBwbGljYXRpb24gYXJjaGl0ZWN0dXJlcyBhbmQgaW4gbGluZSB3aXRoIHByZXZhaWxpbmcgYWdpbGUgYW5kIERldk9wcy1kcml2ZW4gcHJhY3RpY2VzLiBGb3IgdGhpcyBwdXJwb3NlLCB3ZSBpbnRyb2R1Y2UgMSkgYSB0cmFuc3BhcmVuY3ktZm9jdXNlZCBleHRlbnNpb24gb2YgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyB0aGF0IGFsbG93cyBpbmRpdmlkdWFsIHNlcnZpY2UgZGVzY3JpcHRpb25zIHRvIGJlIGVucmljaGVkIHdpdGggdHJhbnNwYXJlbmN5LXJlbGF0ZWQgYW5ub3RhdGlvbnMgaW4gYSBib3R0b20tdXAgZmFzaGlvbiBhbmQgMikgYSBzZXQgb2YgaGlnaGVyLW9yZGVyIHRvb2xzIGZvciBhZ2dyZWdhdGluZyByZXNwZWN0aXZlIGluZm9ybWF0aW9uIGFjcm9zcyBtdWx0aXBsZSwgaW50ZXJkZXBlbmRlbnQgc2VydmljZXMgYW5kIGZvciBjb2hlcmVudGx5IGludGVncmF0aW5nIG91ciBhcHByb2FjaCBpbnRvIGF1dG9tYXRlZCBDSS9DRC1waXBlbGluZXMuIFRvZ2V0aGVyLCB0aGVzZSBidWlsZGluZyBibG9ja3MgcGF2ZSB0aGUgd2F5IGZvciBwcm92aWRpbmcgdHJhbnNwYXJlbmN5IGluZm9ybWF0aW9uIHRoYXQgaXMgbW9yZSBzcGVjaWZpYyBhbmQgYXQgdGhlIHNhbWUgdGltZSBiZXR0ZXIgcmVmbGVjdHMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBnaXZlbnMgd2l0aGluIGNvbXBsZXggc2VydmljZSBhcmNoaXRlY3R1cmVzIHRoYW4gY3VycmVudCwgb3Zlcmx5IGJyb2FkIHByaXZhY3kgc3RhdGVtZW50cy4KCgojIyDwn5OaIFJlYWQgb3VyIHBhcGVyIHZpYSBbR2l0aHViXShodHRwczovL2dpdGh1Yi5jb20vUHJpdmFjeUVuZ2luZWVyaW5nL3RpcmEvcmF3L21haW4vVHJhbnNwYXJlbmN5X2luX1JFU1RmdWxfQXJjaGl0ZWN0dXJlc19JV1BFMjFfcHJlcHJpbnQucGRmKSwgW2FyWGl2XShodHRwczovL2FyeGl2Lm9yZy9hYnMvMjEwNi4wNjAwMSkgb3IgW0lFRUVYcGxvcmVdKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy9kb2N1bWVudC85NTgzNjg1KS4KCgpgYGAKQGlucHJvY2VlZGluZ3N7Z3J1ZW5ld2FsZDIwMjF0aXJhLAogIHRpdGxlID0ge1RJUkE6IEFuIE9wZW5BUEkgRXh0ZW5zaW9uIGFuZCBUb29sYm94IGZvciBHRFBSIFRyYW5zcGFyZW5jeSBpbiBSRVNUZnVsIEFyY2hpdGVjdHVyZXN9LAogIGF1dGhvciA9IHtFbGlhcyBHcsO8bmV3YWxkIGFuZCBQYXVsIFdpbGxlIGFuZCBGcmFuayBQYWxsYXMgYW5kIE1hcmlhIEMuIEJvcmdlcyBhbmQgTWF4LVIuIFVsYnJpY2h0fSwKICBib29rdGl0bGU9ezIwMjEgSUVFRSBFdXJvcGVhbiBTeW1wb3NpdW0gb24gU2VjdXJpdHkgYW5kIFByaXZhY3kgV29ya3Nob3BzIChFdXJvU1wmUFcpfSwKICBwdWJsaXNoZXIgPSB7SUVFRSBDb21wdXRlciBTb2NpZXR5fSwKICBkb2kgPSB7MTAuMTEwOS9FdXJvU1BXNTQ1NzYuMjAyMS4wMDAzOX0sCiAgeWVhciA9IHsyMDIxfQp9CmBgYAoKCgpQbGVhc2UgZ2V0IGluIHRvdWNoIHdpdGggdXMgdmlhIFtodHRwczovL3R1LmJlcmxpbi9pc2UvZWddKGh0dHBzOi8vdHUuYmVybGluL2lzZS9lZykuIAoKIyMgUGVyc29uYWwgZGF0YSBpbmRpY2F0b3JzClRvIGxlYXJuIG1vcmUgYWJvdXQgd2hlcmUgcGVyc29uYWwgZGF0YSBpbmRpY2F0b3JzIGluIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgbWF5IHJlc2lkZSwgc2VlICoqW2hlcmVdKGRvY3MvUERfSU5ESUNBVE9SUy5tZCkqKi4KCiMjIFZvY2FidWxhcnkKVG8gbGVhcm4gbW9yZSBhYm91dCBvdXIgdm9jYWJ1bGFyeSB1c2VkIGZvciB0aGUgcHJvcG9zZWQgT3BlbkFQSSBleHRlbnNpb24sIHNlZSAqKltoZXJlXShkb2NzL1ZPQ0FCVUxBUlkubWQpKiouCgo8cCBmbG9hdD0ibGVmdCIgYWxpZ249ImNlbnRlciI+CiAgPGltZyBzcmM9Ii9kb2NzL2ltZy94LXRpcmEtcGQucG5nIiB3aWR0aD0iNDUlIiAvPgogIDxpbWcgc3JjPSIvZG9jcy9pbWcvdGh1Yl9zdGVwY291bnRfc2NoZW1hLnBuZyIgd2lkdGg9IjQ1JSIgLz4KPC9wPgoKCiMjIEluc3RhbGxhdGlvbgoKTWFrZSBzdXJlIFJ1YnkgaXMgaW5zdGFsbGVkLgoKYGBgYmFzaApydWJ5IC0tdmVyc2lvbgpgYGAKClRJUkEgd2FzIGJ1aWx0IHVzaW5nIFJ1YnkgdmVyc2lvbiBgMi42LjNgLCBvdGhlci9uZXdlciB2ZXJzaW9ucyBzaG91bGQgd29yayBmaW5lLCBidXQgd2VyZSBub3QgdGVzdGVkIGFnYWluc3QuClVzZSBbcnZtXShodHRwczovL3J2bS5pby8pIG9yIGByYmVudiBpbnN0YWxsIC0tdmVyYm9zZSAyLjYuM2AuCgoKSW5zdGFsbCBidW5kbGVyCgpgYGBiYXNoCmdlbSBpbnN0YWxsIGJ1bmRsZXIKYGBgCgpDbG9uZSB0aGUgcmVwbwoKYGBgYmFzaApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL1ByaXZhY3lFbmdpbmVlcmluZy90aXJhLmdpdApjZCB0aXJhLwpgYGAKCkluc3RhbGwgYWxsIGdlbXMgdmlhIGJ1bmRsZXIKCmBgYGJhc2gKYnVuZGxlIGluc3RhbGwKYGBgCgpDb25maWd1cmUgc2VjcmV0cyBhbmQgY3JlZGVudGlscyAKCmBgYGJhc2gKYmluL3JhaWxzIGNyZWRlbnRpYWxzOmVkaXQKYGBgCgpSYWlscyB0cmllcyB0byBvcGVuIHRoZSBjcmVuZGVudGlhbHMgd2l0aCBgJEVESVRPUmAuCllvdSBjYW4gZGVmaW5lIGFuIGVkaXRvciBieSBzZXR0aW5nIHRoZSBgRURJVE9SYCB2YXJpYWJsZSBleHBsaWNpdGVseSwgZS5nLgoKYGBgYmFzaApFRElUT1I9Im5hbm8iIHJhaWxzIGNyZWRlbnRpYWxzOmVkaXQKYGBgCgoKVGhpcyB3aWxsIGNyZWF0ZSBhbiBlbmNyeXB0ZWQgY29uZmlnIGZpbGUgYW5kIGEgbWFzdGVyIGtleSwgZm9yIGRldGFpbHMgdmlzaXQgW3RoaXMgZ3VpZGVdKGh0dHBzOi8vZWRnZWd1aWRlcy5ydWJ5b25yYWlscy5vcmcvc2VjdXJpdHkuaHRtbCNjdXN0b20tY3JlZGVudGlhbHMpLgpUaGUgY29uZmlndXJhdGlvbiBmb3JtYXQgdXNlZCBjYW4gYmUgZm91bmQgaW4gdGhlIHNhbXBsZSBjb25maWd1cmF0aW9uIGZpbGUgaW4gYGNvbmZpZy9jcmVkZW50aWFsc19leGFtcGxlLnltbGAuCgpEYXRhYmFzZSBuYW1lIGFuZCBjcmVkZW50aWFscyBuZWVkIHRvIGJlIGNvbmZpZ3VyZWQuCklmIGEgZGlmZmVyZW50IGRhdGFiYXNlIGFkYXB0ZXIgdGhhbiBwb3N0Z3JlcyBpcyB1c2VkLCB0aGlzIG11c3QgYmUgY29uZmlndXJlZCBpbjoKCmBgYApjb25maWcvZGF0YWJhc2UueW1sCmBgYAoKClNldCB1cCBhIHBvc3RncmVzIGRhdGFiYXNlIChpZiB5b3UgY2hvc2UgdG8gbm90IHVzZSBwb3N0Z3Jlcywgc2V0IHVwIGEgZGF0YWJhc2UgYWNjb3JkaW5nIHRvIHlvdXIgY29uZmlndXJhdGlvbikuCgpZb3UgY2FuIHVzZSB0aGUgb2ZmaWNhbCBkb2NrZXIgaW1hZ2UKCmBgYGJhc2gKZG9ja2VyIHJ1biAtLW5hbWUgc29tZS1wb3N0Z3JlcyAtZSBQT1NUR1JFU19QQVNTV09SRD1teXNlY3JldHBhc3N3b3JkIC1kIHBvc3RncmVzCmBgYAoKb3Igc2V0IHVwIGEgcG9zdGdyZXMgZGF0YWJhc2UgbG9jYWxseQoKYGBgcHNxbApjcmVhdGUgZGF0YWJhc2UgJGRiX25hbWU7CgpjcmVhdGUgcm9sZSAkdXNlcl9uYW1lIHdpdGggY3JlYXRlZGIgbG9naW4gcGFzc3dvcmQgJ3Bhc3N3b3JkJzsKCmdyYW50IGFsbCBwcml2aWxlZ2VzIG9uIGRhdGFiYXNlICRkYl9uYW1lIHRvICR1c2VyX25hbWU7CgpgYGAKCk5vdyBydW4gdGhlIG1pZ3JhdGlvbnMgdG8gc2V0IHVwIHRoZSBkYXRhYmFzZQoKYGBgYmFzaApiaW4vcmFpbHMgZGI6bWlncmF0ZSBSQUlMU19FTlY9ZGV2ZWxvcG1lbnQKYGBgCgoKVHJhbnNwYXJlbmN5SHViIGlzIG5vdyBzZXQgdXAgYW5kIHlvdSBjYW4gc3RhcnQgdGhlIGFwcGxpY2F0aW9uCgpgYGBiYXNoCnJhaWxzIHMKYGBgCgpUaGUgYXBwIGlzIG5vdyBhY2Nlc3NpYmxlIHZpYSBgaHR0cDovL2xvY2FsaG9zdDozMDAwYAoKCiMjIEV4YW1wbGUgb2YgKngtdGlyYSogaW4gYW4gT3BlbkFQSSBkb2N1bWVudApXZSBkZXNjcmliZSBhIGBUb290aGJydXNoRXZlbnRgIHRoYXQgY2FuIGJlIHNoYXJlZCB3aXRoIG90aGVyIHV0aWxpemVycyB2aWEgdGhlIGV4YW1wbGUgc2VydmljZSBmcm9tIG91ciBwYXBlci4gCgpgYGB5YW1sCm9wZW5hcGk6ICIzLjAuMCIKeC10aXJhOiAKICB1dGlsaXplcjoKICAgIC0gbmFtZTogIkFXUyIKICAgICAgbm9uX2V1X2NvdW50cnk6IHRydWUKICAgICAgY291bnRyeTogIlVLIgppbmZvOgogIHZlcnNpb246ICIxLjAuMiIKICBkZXNjcmlwdGlvbjogIlRoaXMgc2VydmljZSBjYW4gc2hhcmUgaGVhbHRoIGRhdGEgd2l0aCBvdGhlciBoZWFsdGggZGF0YSBzZXJ2aWNlcyBhbmQgaW5zdXJhbmNlcyIKICB0aXRsZTogIkhlYWx0aCBEYXRhIFNoYXJpbmcgU2VydmljZSIKc2VydmVyczogCiAgLSB1cmw6ICJodHRwczovL2hlYWx0aC5kb21haW4udGxkIgpwYXRoczoKICAiL3t1c2VyX2lkfS90b290aGJydXNoL3NoYXJlIjoKICAgIHBhcmFtZXRlcnM6CiAgICAgIC0gbmFtZTogdXNlcl9pZAogICAgICAgIGluOiAicGF0aCIKICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgIGRlc2NyaXB0aW9uOiAiVXNlciBJRCBvZiBhIEhlYWx0aCBEYXRhIEh1YiBVc2VyIgogICAgICAgIHNjaGVtYToKICAgICAgICAgICAgdHlwZSA6IGludGVnZXIKICAgIGdldDogCiAgICAgIGRlc2NyaXB0aW9uOiBHZXQgYW4gYXJyYXkgb2YgVG9vdGhicnVzaCBFdmVudHMgZm9yIGEgZ2l2ZW4gdGltZSBpbnRlcnZhbC4KICAgICAgcGFyYW1ldGVyczoKICAgICAgICAtIG5hbWU6IHN0YXJ0ZGF5CiAgICAgICAgICBpbjogInF1ZXJ5IgogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICB0eXBlIDogc3RyaW5nCiAgICAgICAgICAgIGZvcm1hdDogZGF0ZS10aW1lCiAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgICAgZGVzY3JpcHRpb246ICJTdGFydCBkYXRlIG9mIHJlcXVlc3RlZCBpbnRlcnZhbC4iCiAgICAgICAgLSBuYW1lOiBlbmRkYXkKICAgICAgICAgIGluOiAicXVlcnkiCiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHR5cGUgOiBzdHJpbmcKICAgICAgICAgICAgZm9ybWF0OiBkYXRlLXRpbWUKICAgICAgICAgIGRlc2NyaXB0aW9uOiAiRW5kIGRhdGUgb2YgcmVxdWVzdGVkIGludGVydmFsLiIKICAgICAgcmVzcG9uc2VzOgogICAgICAgIDIwMDoKICAgICAgICAgIGRlc2NyaXB0aW9uOiAiUmVxdWVzdCBzdWNjZXNzZnVsLiIKICAgICAgICAgIGNvbnRlbnQ6IAogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Ub290aGJydXNoRXZlbnQnCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIFRvb3RoYnJ1c2hFdmVudDoKICAgICAgdHlwZTogIm9iamVjdCIKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSB1c2VyX2lkCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgc2Vjb25kczoKICAgICAgICAgIHR5cGU6ICJpbnRlZ2VyIgogICAgICAgIGRhdGV0aW1lOgogICAgICAgICAgdHlwZTogInN0cmluZyIKICAgICAgICB1c2VyX2lkOgogICAgICAgICAgdHlwZTogImludGVnZXIiCiAgICAgIHgtdGlyYTogCiAgICAgICAgcmV0ZW50aW9uLXRpbWU6CiAgICAgICAgICB2b2xhdGlsZTogdHJ1ZQogICAgICAgIHNwZWNpYWxfY2F0ZWdvcnk6CiAgICAgICAgICBjYXRlZ29yeTogIkhlYWx0aCBEYXRhIgogICAgICAgIHB1cnBvc2VzOgogICAgICAgICAgeWFwcGw6CiAgICAgICAgICAgICd7CiAgICAgICAgICAgICAgICJpZCI6MTIzLAogICAgICAgICAgICAgICAicHJlZmVyZW5jZSI6WwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICJydWxlIjp7CiAgICAgICAgICAgICAgICAgICAgICAgICJwdXJwb3NlIjp7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJtaXR0ZWQiOiBbICJGaXRuZXNzRGF0YSBTaGFyaW5nIiwgIkhlYWx0aCBJbnN1cmFuY2UgQm9udXMgUHJvZ3JhbSIgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1ZGVkIjogWyAuLi4gXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAidXRpbGl6ZXIiOnsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcm1pdHRlZCI6IFsgLi4uIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdWRlZCI6IFsgLi4uIF0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInRyYW5zZm9ybWF0aW9uIjogWyAuLi4gXSwKICAgICAgICAgICAgICAgICAgICAgICAgInZhbGlkX2Zyb20iOiIyMDIxLTA2LTA5VDAwOjAwOjAwLjAwMFoiLAogICAgICAgICAgICAgICAgICAgICAgICAiZXhwX2RhdGUiOiIwMDAwLTAxLTAxVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0nCiAgICAgICAgcHJvZmlsaW5nOgogICAgICAgICAgcmVhc29uOiAiSGVhbHRoIHByb2ZpbGUgYmFzZWQgb24gc2VyaWVzIG9mIGhlYWx0aCByZWxhdGVkIGJlaGF2aW91ci4iCiAgICAgICAgdXRpbGl6ZXI6CiAgICAgICAgICAtIG5hbWU6ICJNeUZpdG5lc3NQYWwiCiAgICAgICAgICAgIG5vbl9ldV9jb3VudHJ5OiBmYWxzZQogICAgICAgICAgLSBuYW1lOiAiU3RyYXZhIgogICAgICAgICAgICBub25fZXVfY291bnRyeTogdHJ1ZQogICAgICAgICAgICBjb3VudHJ5OiAiVVNBIgogICAgICAgIHV0aWxpemVyX2NhdGVnb3J5OgogICAgICAgICAgLSBuYW1lOiAiSGVhbHRoIEluc3VyYW5jZSBDb21wYW55IgogICAgICAgICAgICBjb3VudHJ5OiAiR2VybWFueSIKICAgICAgICAgICAgbm9uX2V1X2NvdW50cnk6IGZhbHNlCiAgICAgICAgICAgIHR5cGU6ICJJbnN1cmFuY2UgQ29tcGFueSIKICAgICAgICAgICAgc2VjdG9yOiAiSW5zdXJhbmNlIgogICAgICAgICAgICBzdWJfc2VjdG9yOiAKICAgICAgICAgICAgICAtICJIZWFsdGggSW5zdXJhbmNlIgogICAgICAgICAgICAgIC0gIkhlYWx0aCBUYXgiCmBgYAo= readmeEtag: '"125ae8b28d26a405ac0308cd0506292fc2c53603"' readmeLastModified: Mon, 18 Jul 2022 20:28:40 GMT repositoryId: 364238719 description: >- TIRA: An OpenAPI Extension and Toolbox for GDPR Transparency in RESTful Architectures created: '2021-05-04T11:50:35Z' updated: '2024-09-17T17:36:37Z' language: Ruby archived: false stars: 11 watchers: 3 forks: 2 owner: PrivacyEngineering logo: https://avatars.githubusercontent.com/u/38961961?v=4 license: MIT repoEtag: '"ee32144269a45ec12ddd5ac1544e47d22176c375fed0bbefc722378e0e565ece"' repoLastModified: Tue, 17 Sep 2024 17:36:37 GMT foundInMaster: true category: - Server - Server Implementations id: 9ea99a70abf57321f866ed8393822337 - source: openapi3 tags repository: https://github.com/openmobilityfoundation/mds-openapi v3: true id: 56fb933212775b9d92e503c946ed7a88 repositoryMetadata: base64Readme: >- IyBNb2JpbGl0eSBEYXRhIFNwZWNpZmljYXRpb24gT3BlbkFQSQoKVGhlIFtNb2JpbGl0eSBEYXRhIFNwZWNpZmljYXRpb24gKE1EUyldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVubW9iaWxpdHlmb3VuZGF0aW9uL21vYmlsaXR5LWRhdGEtc3BlY2lmaWNhdGlvbiksIGEgcHJvamVjdCBvZiB0aGUgT3BlbiBNb2JpbGl0eSBGb3VuZGF0aW9uIChPTUYpLCBpcyBhIGRhdGEgc3RhbmRhcmQgdG8gZW5hYmxlIHJpZ2h0LW9mLXdheSByZWd1bGF0aW9uIGFuZCB0d28td2F5IGNvbW11bmljYXRpb24gYmV0d2VlbiBtb2JpbGl0eSBjb21wYW5pZXMgYW5kIGxvY2FsIGdvdmVybm1lbnRzLgoKVGhpcyBpcyB0aGUgT3BlbkFQSSBkZXNjcmlwdGlvbiBmb3IgTURTIGRhdGEgZmVlZHMsIG1hbmFnZWQgYnkgdGhlIFtPcGVuIE1vYmlsaXR5IEZvdW5kYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVubW9iaWxpdHlmb3VuZGF0aW9uKS4KCk9ubGluZSBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBvbiBbU3RvcGxpZ2h0XShodHRwczovL29wZW5tb2JpbGl0eWZuZC5zdG9wbGlnaHQuaW8vZG9jcy9tZHMtb3BlbmFwaSkuCgpNRFMgdmVyc2lvbnMgYXJlIG9yZ2FuaXplZCBieSBicmFuY2hlcyBzdGFydGluZyB3aXRoIGEgYnJhbmNoIGZvciBgdjIuMGAuCgojIyBQeXRob24gcHJvamVjdAoKQSBzbWFsbCBQeXRob24gcHJvamVjdCBkZWZpbmVkIGluIFtgcHlwcm9qZWN0LnRvbWxgXSguL3B5cHJvamVjdC50b21sKSBzdXBwb3J0cyB0aGUgc2NoZW1hIGRldmVsb3BtZW50IHByb2Nlc3MuCgpgYGBiYXNoCiMgaW5zdGFsbCB0aGUgcHJvamVjdCBhbmQgaXRzIGRlcGVuZGVuY2llcwpwaXAgaW5zdGFsbCAtZSAuCmBgYAoKIyMjIFNjaGVtYSB2YWxpZGF0aW9uCgpUZXN0cyB3cml0dGVuIGluIFtgcHl0ZXN0YF0oaHR0cHM6Ly9weXRlc3Qub3JnKSBjaGVjayB2YXJpb3VzIGNvbXBvbmVudHMgb2YgdGhlIHNjaGVtYXMuIFRoZXNlIHRlc3RzIGNhbiBiZSBydW4gbG9jYWxseSwgYW5kCmFsc28gcnVuIGluIEdpdEh1YiBBY3Rpb25zIG9uIGNvbW1pdHMgdG8gdGhpcyByZXBvc2l0b3J5LgoKYGBgYmFzaAojIHJ1biB0aGUgdGVzdHMgd2l0aCBweXRlc3QgZnJvbSB0aGUgcm9vdCBvZiB0aGUgcmVwbwpweXRlc3QKYGBgCgojIyMgTm90ZWJvb2tzCgpbSnVweXRlciBOb3RlYm9va3NdKGh0dHBzOi8vanVweXRlci5vcmcvKSB0byBoZWxwIHdpdGggb25lLXRpbWUgZGF0YSBjbGVhbnVwcyBhbmQgaXNzdWUgY2hlY2tpbmcuCgpgYGBiYXNoCiMgaW5zdGFsbCB0aGUgJ25vdGVib29rcycgZXh0cmFzCnBpcCBpbnN0YWxsIC1lIC5bbm90ZWJvb2tzXQpgYGAKCiMjIExpY2Vuc2UKClRoZSBNRFMgT3BlbkFQSSwgbGlrZSBNRFMgaXRzZWxmLCBpcyBsaWNlbnNlZCB1bmRlciBbQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiA0LjAgSW50ZXJuYXRpb25hbCBQdWJsaWMgTGljZW5zZV0oLi4vTElDRU5TRSkK readmeEtag: '"73083afd08f874b78c4740e3fb1de2e4ee7ce1bc"' readmeLastModified: Tue, 23 May 2023 13:07:06 GMT repositoryId: 597157509 description: >- OpenAPI description for MDS data feeds, managed by the Open Mobility Foundation. created: '2023-02-03T18:55:31Z' updated: '2025-07-20T19:19:54Z' language: Python archived: false stars: 14 watchers: 2 forks: 6 owner: openmobilityfoundation logo: https://avatars.githubusercontent.com/u/52187191?v=4 license: NOASSERTION repoEtag: '"0260c4fe66ac1f768517fc1ad6a8d1ee754ed026cb74bade39394c41e1a431fa"' repoLastModified: Sun, 20 Jul 2025 19:19:54 GMT category: - Parsers - Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/karatelabs/intellij-plugin v3: true id: 35c019960e3f4a93899b4502d156c101 repositoryMetadata: base64Readme: >- PHRhYmxlPgogICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPGJyLz48YSBocmVmPSJodHRwczovL2thcmF0ZWxhYnMuaW8iPjxpbWcgc3JjPSJyZXNvdXJjZXMva2FyYXRlLWxvZ28uc3ZnIiBoZWlnaHQ9IjQ1cHgiLz48L2E+CiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICAgIDxoMj5JbnRlbGxpSiBQbHVnaW48L2gyPiAgICAgICAgICAgCiAgICAgICAgPC90ZD4KICAgICAgICA8dGg+CiAgICAgICAgICAgIDxoMz48YSBocmVmPSJodHRwczovL3lvdXR1LmJlL2hrSFFrcmxIOXhRP3NpPWMxNERKZkk2WV9LOVE0MTQiPjp0djogPGJyLz4mbmJzcDsmbmJzcDtWaWRlbyZuYnNwOyZuYnNwOzwvYT48L2gzPgogICAgICAgIDwvdGg+ICAgICAgICAKICAgICAgICA8dGg+CiAgICAgICAgICAgIDxoMz48YSBocmVmPSJodHRwczovL3d3dy5rYXJhdGVsYWJzLmlvL3ByaWNpbmciPjpoZWF2eV9kb2xsYXJfc2lnbjogPGJyLz4mbmJzcDsmbmJzcDtQcmljaW5nJm5ic3A7Jm5ic3A7PC9hPjwvaDM+CiAgICAgICAgPC90aD4gICAgICAgCiAgICAgICAgPHRoPgogICAgICAgICAgICA8aDM+PGEgaHJlZj0iaHR0cHM6Ly9wbHVnaW5zLmpldGJyYWlucy5jb20vcGx1Z2luLzE5MjMyLWthcmF0ZSI+PGJyLz46emFwOiA8YnIvPiZuYnNwO01hcmtldCZuYnNwOzxici8+cGxhY2U8L2E+PC9oMz4KICAgICAgICA8L3RoPgogICAgICAgIDx0aD4KICAgICAgICAgICAgPGgzPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2ludGVsbGlqLXBsdWdpbi9pc3N1ZXMiPjpvY3RvY2F0OiA8YnIvPiZuYnNwOyZuYnNwO0lzc3VlcyZuYnNwOyZuYnNwOzwvYT48L2gzPgogICAgICAgIDwvdGg+ICAgICAgICAKICAgIDwvdHI+CjwvdGFibGU+Cgo8dGFibGU+CiAgICA8dHI+CiAgICAgICAgPHRoPlBMVVM8L3RoPgogICAgICAgIDx0aD5QUk88L3RoPgogICAgICAgIDx0aD5VTFRJTUFURTwvdGg+CiAgICAgICAgPHRoPkVudGVycHJpc2U8L3RoPgogICAgPC90cj4gICAgCiAgICA8dHI+CiAgICAgICAgPHRkPiAgICAgICAgICAgIAogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICA8bGk+U3ludGF4IGNvbG9yaW5nPC9saT4gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8bGk+UnVuIEZlYXR1cmUgZnJvbSBlZGl0b3I8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNydW4tZnJvbS1lZGl0b3IiPlJ1biBzaW5nbGUgU2NlbmFyaW8gLyBFeGFtcGxlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI3J1bi1jb25maWd1cmF0aW9ucyI+UnVuIENvbmZpZ3VyYXRpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI3N0cnVjdHVyZS12aWV3Ij5TdHJ1Y3R1cmUgdmlldzwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNjb2RlLWZvcm1hdHRpbmciPkNvZGUgZm9ybWF0dGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiN0ZXN0LXJlc3VsdHMiPkluLUlERSB0ZXN0IHJlc3VsdHM8L2E+PC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPGk+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KGluY2x1ZGVzIGFsbCBpbiBQTFVTKTwvaT4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNhdXRvLWNvbXBsZXRlIj5BdXRvIGNvbXBsZXRlPC9hPjwvbGk+ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNjb2RlLWZvbGRpbmciPkNvZGUgZm9sZGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNyZWZlcmVuY2VzIj5KdW1wIHRvIHJlZmVyZW5jZXM8L2E+PC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjanNvbi1yZS1mb3JtYXR0aW5nIj5KU09OIHJlLWZvcm1hdHRpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjcnVuLWZvbGRlciI+UnVuIGFsbCB0ZXN0cyBpbiBmb2xkZXI8L2E+PC9saT4KICAgICAgICAgICAgICAgIDxsaT5SdW4gS2FyYXRlIExhYnMgYWRkLW9ucyAoZS5nLiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va2FyYXRlbGFicy9rYXJhdGUtYWRkb25zL2Jsb2IvbWFpbi9rYXJhdGUta2Fma2EvUkVBRE1FLm1kIj5LYWZrYTwvYT4pPC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjZGVidWciPkRlYnVnIEthcmF0ZSB0ZXN0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+RGVidWcgSmF2YSAmYW1wOyBLYXJhdGUgaW4gc2FtZSBzZXNzaW9uPC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjZGVidWcta2FyYXRlLWZyb20tamF2YSI+SmF2YSBkZWJ1ZyBzZXNzaW9uIHN0b3BzIGF0IEthcmF0ZSBicmVha3BvaW50czwvYT48L2xpPgogICAgICAgICAgICA8L3VsPiAgICAgICAgCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICAgIDxpPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyhpbmNsdWRlcyBhbGwgaW4gUFJPKTwvaT4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNvcGVuYXBpLWltcG9ydCI+SW1wb3J0IE9wZW5BUEkgKG9yIFN3YWdnZXIpIGRlZmluaXRpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI2NyZWF0ZS10ZXN0cy1mcm9tLXNwZWMiPkNvbnZlcnQgQVBJIHNwZWNpZmljYXRpb25zIHRvIEthcmF0ZSB0ZXN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNzcGVjLXBheWxvYWQtY2hvb3NlciI+Q2hvb3NlIHBheWxvYWQgc3ViLXNldHMgZnJvbSBzcGVjIHNjaGVtYXM8L2E+PC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjZXhwbG9yZS1hcGktZnJvbS1zcGVjIj5FeHBsb3JlIEFQSSBkaXJlY3RseSBmcm9tIE9wZW5BUEkgb3IgU3dhZ2dlciBzcGVjczwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNjcmVhdGUtbW9jay1mcm9tLXNwZWMiPkNvbnZlcnQgQVBJIHNwZWNpZmljYXRpb25zIHRvIEthcmF0ZSBtb2NrczwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNzcGVjLWltcGFjdC1hbmFseXNpcyI+SW1wYWN0IGFuYWx5aXMgb2YgQVBJIGNoYW5nZXM8L2E+PC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPlByaW9yaXR5IHN1cHBvcnQ8L2xpPgogICAgICAgICAgICAgICAgPGxpPlNTTyAvIFNBTUwgc3VwcG9ydDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI29mZmxpbmUtbGljZW5zZSI+T2ZmbGluZSBsaWNlbnNlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cua2FyYXRlbGFicy5pby9jb250YWN0LXVzIj5Db250YWN0IHVzPC9hPjwvbGk+CiAgICAgICAgICAgIDwvdWw+ICAgICAgICAKICAgICAgICA8L3RkPiAgICAgICAgCiAgICA8L3RyPgo8L3RhYmxlPgoKVGhpcyBwbHVnaW4gd29ya3MgZnVsbHktZmVhdHVyZWQgb24gW0ludGVsbGlKIENvbW11bml0eSBFZGl0aW9uXShodHRwczovL3d3dy5qZXRicmFpbnMuY29tL3Byb2R1Y3RzL2NvbXBhcmUvP3Byb2R1Y3Q9aWRlYSZwcm9kdWN0PWlkZWEtY2UpLiBKUyBzdXBwb3J0IGlzIGJ1aWx0LWluIGFuZCAqKmRvZXMgbm90KiogcmVxdWlyZSB5b3UgdG8gYmUgcnVubmluZyBbSW50ZWxsaUogSURFQSBVbHRpbWF0ZV0oaHR0cHM6Ly93d3cuamV0YnJhaW5zLmNvbS9pZGVhL2ZlYXR1cmVzLykuCgo+IEJ5IHVzaW5nIHRoaXMgcGx1Z2luLCB5b3UgYWdyZWUgdG8gdGhlIEthcmF0ZSBMYWJzIFtFVUxBXShodHRwczovL2thcmF0ZWxhYnMuaW8vZXVsYSkuIERhdGEgb24gYSBmZXcgdXNlciBhY3Rpb25zIGlzIGNvbGxlY3RlZCBhbmQgc3ViamVjdCB0byBvdXIgW1ByaXZhY3kgUG9saWN5XShodHRwczovL2thcmF0ZWxhYnMuaW8vcHJpdmFjeS1wb2xpY3kpLiBIVE1MIHJlcG9ydHMgZ2VuZXJhdGVkIGJ5IHRoZSBLYXJhdGUgb3Blbi1zb3VyY2UgbGlicmFyeSBoYXMgW2FkZGl0aW9uYWwgYW5hbHl0aWNzXShodHRwczovL2dpdGh1Yi5jb20va2FyYXRlbGFicy9rYXJhdGUvYmxvYi9tYXN0ZXIva2FyYXRlLWNvcmUvc3JjL3Rlc3QvcmVzb3VyY2VzL2FuYWx5dGljcy5tZCkuCgojIyBMaWNlbnNlIEFjdGl2YXRpb24KTGljZW5zZSBhY3RpdmF0aW9uIGFuZCBzdGF0dXMgaXMgdW5pZmllZCB3aXRoaW4gdGhlIEludGVsbGlKIHNldHRpbmdzIFVJLiBHbyB0byBgU2V0dGluZ3MgLT4gTGFuZ3VhZ2VzICYgRnJhbWV3b3JrcyAtPiBLYXJhdGVgIGFuZCB5b3Ugc2hvdWxkIHNlZSBzb21ldGhpbmcgbGlrZSB0aGlzLgoKPGltZyBzcmM9InJlc291cmNlcy9zaWduLWluLmpwZyIgaGVpZ2h0PSIzMDBweCIvPgoKPHA+Jm5ic3A7PC9wPgoKQ2xpY2sgdGhlIGBTaWduIEluYCBsaW5rIGFuZCB5b3Ugd2lsbCBiZSB0YWtlbiB0aHJvdWdoIHRoZSB1c3VhbCBmbG93IGxpbmtlZCB0byB5b3VyIGV4aXN0aW5nIHN1YnNjcmlwdGlvbiBkZXRhaWxzLgoKT25jZSB5b3UgaGF2ZSBhdXRoZW50aWNhdGVkIHN1Y2Nlc3NmdWxseSwgY29weSB0aGUgc2Vzc2lvbiBJRCBmcm9tIHRoZSBicm93c2VyIGFuZCBwYXN0ZSBpdCBpbnRvIHRoZSBpbnB1dC1ib3ggbm93IHNob3dpbmcgaW4gdGhlIEludGVsbGlKIHNldHRpbmdzIHZpZXcuIENsaWNrIGBBcHBseWAgdG8gY29tcGxldGUgdGhlIHNpZ24taW4uCgpPbmNlIHNpZ25lZC1pbiB5b3UgY2FuIHdvcmsgb2ZmbGluZS4gWW91IGNhbiBhbHdheXMgb3BlbiB0aGlzIHNldHRpbmdzIHBhZ2UgdG8gc2VlIGhvdyBtYW55IGRheXMgYXJlIGxlZnQgaW4geW91ciBzZXNzaW9uLgoKSWYgeW91IG5lZWQgYW4gW29mZmxpbmUgbGljZW5zZV0oI29mZmxpbmUtbGljZW5zZSkgYmVjYXVzZSBvZiBzdHJpY3Qgc2VjdXJpdHkgb3Igc2ltaWxhciByZXN0cmljdGlvbnMgaW4geW91ciBlbnZpcm9ubWVudCwgcGxlYXNlIFtjb250YWN0IHVzXShodHRwczovL3d3dy5rYXJhdGVsYWJzLmlvL2NvbnRhY3QtdXMpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgb3B0aW9uIGlzIGF2YWlsYWJsZSBvbmx5IGZvciBlbnRlcnByaXNlIGN1c3RvbWVycyBvZiBLYXJhdGUgTGFicy4KCiMjIyBTZXNzaW9uIFJlbmV3YWwKT25jZSB5b3UgaGF2ZSBzaWduZWQtaW4gb25jZSwgeW91IGNhbiByZW5ldyBvciBleHRlbmQgdGhlIHNlc3Npb24gaW4ganVzdCBvbmUtY2xpY2sgd2l0aG91dCBoYXZpbmcgdG8gYXV0aGVudGljYXRlIHZpYSBhIGJyb3dzZXIuIAoKVXNlIHRoZSBgUmVuZXcgU2Vzc2lvbmAgYnV0dG9uIGFzIHNob3duIGJlbG93LiBJZiB5b3UgaGF2ZSBhIHZhbGlkIHN1YnNjcmlwdGlvbiwgdGhpcyB3aWxsIHdvcmsgZXZlbiBpZiB5b3VyIHNlc3Npb24gaGFzIGV4cGlyZWQuCgo8aW1nIHNyYz0icmVzb3VyY2VzL3JlbmV3LmpwZyIgaGVpZ2h0PSIxNTBweCIvPgoKPHA+Jm5ic3A7PC9wPgoKRm9yIGNvbnZlbmllbmNlLCB3aGVuIHVzaW5nIHRoZSBLYXJhdGUgcGx1Z2luLCB5b3Ugd2lsbCBzZWUgYSBub3RpZmljYXRpb24gd2hlbiB0aGVyZSBhcmUgMTAgb3IgbGVzcyBkYXlzIGZvciB5b3VyIHNlc3Npb24gdG8gZXhwaXJlLgoKSWYgeW91IGNsaWNrIHRoZSBgUmVuZXcgTm93YCBsaW5rLCB5b3Ugd2lsbCBiZSB0YWtlbiBkaXJlY3RseSB0byB0aGUgS2FyYXRlIFNldHRpbmdzIHNjcmVlbiB3aGVyZSB5b3UgY2FuIGRvIHRoZSByZW5ld2FsIGluIG9uZS1jbGljay4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvcmVuZXctbm90aWZpY2F0aW9uLmpwZyIgaGVpZ2h0PSIxMDBweCIvPgoKIyMgUnVuIEZyb20gRWRpdG9yCllvdSBjYW4gcmlnaHQtY2xpY2sgYSBgKi5mZWF0dXJlYCBmaWxlIGluIHRoZSBleHBsb3JlciBvciB3aXRoaW4gdGhlIGVkaXRvciBhbmQgcnVuIGl0LiBBbiBJbnRlbGxpSiBbcnVuLWNvbmZpZ3VyYXRpb25dKCNydW4tY29uZmlndXJhdGlvbnMpIHdpbGwgYmUgY3JlYXRlZCB3aGljaCB5b3UgY2FuIGN1c3RvbWl6ZSBsYXRlciBpZiBuZWVkZWQuCgpZb3UgY2FuIGFsc28gcnVuIGEgc2luZ2xlIGBTY2VuYXJpb2AgYnkgcmlnaHQtY2xpY2tpbmcgb24gaXQgb3IgdXNpbmcgdGhlICJndXR0ZXIiIGljb24uIFJpZ2h0LWNsaWNraW5nIG9uIHRoZSBndXR0ZXItaWNvbiBhbHNvIGJyaW5ncyB1cCB0aGUgb3B0aW9uIHRvIGRlYnVnIGluc3RlYWQgb2YgcnVuLgoKPGltZyBzcmM9InJlc291cmNlcy9ydW4tc2NlbmFyaW8uanBnIiBoZWlnaHQ9IjMwMHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpZb3UgY2FuIGV2ZW4gcnVuIGEgc2luZ2xlICJleGFtcGxlIiBpbiBhIGBTY2VuYXJpbyBPdXRsaW5lYCBieSByaWdodC1jbGlja2luZyBvbiBvbmUgb2YgdGhlIGRhdGEtcm93cyB3aXRoaW4gYW4gYEV4YW1wbGVzYCB0YWJsZS4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvcnVuLWV4YW1wbGUuanBnIiBoZWlnaHQ9IjI1MHB4Ii8+CgojIyBUcm91Ymxlc2hvb3RpbmcKCklmIHlvdSBkb24ndCBzZWUgdGhlIG9wdGlvbnMgdG8gcnVuIGEgdGVzdCAoZGVzY3JpYmVkIGFib3ZlKSBtYWtlIHN1cmUgdGhhdCB0aGUgS2FyYXRlIGljb24gc2hvd3MgZm9yIG9wZW4gYCouZmVhdHVyZWAgZmlsZXMgaW4gdGhlIGVkaXRvciBhbmQgaW4gdGhlIHByb2plY3QtZXhwbG9yZXIuIElmIHRoZSAiQ3VjdW1iZXIgZm9yIEphdmEiIHBsdWdpbiBpcyBpbnN0YWxsZWQsIGl0IGNhbiBjb25mbGljdCB3aXRoIEthcmF0ZS4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvZmlsZS1pY29uLmpwZyIgaGVpZ2h0PSIyNTBweCIvPgoKPHA+Jm5ic3A7PC9wPgoKVG8gbWFrZSBzdXJlIHRoYXQgdGhlIEthcmF0ZSBwbHVnaW4gY2FuIHJ1biBgKi5mZWF0dXJlYCBmaWxlcywgeW91IGNhbiBnbyB0byBgU2V0dGluZ3MgLT4gRWRpdG9yIC0+IEZpbGUgVHlwZXMgLT4gUmVjb2duaXplZCBGaWxlIFR5cGVzYC4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvZmlsZS10eXBlcy5qcGciIGhlaWdodD0iMjUwcHgiLz4KCklmIHlvdSByZWFsbHkgbmVlZCB0byBtaXggQ3VjdW1iZXIgdGVzdHMgYW5kIEthcmF0ZSB0ZXN0cyBpbiB0aGUgc2FtZSB3b3Jrc3BhY2UsIHJlZmVyIHRvIFt0aGlzIHBvc3Qgb24gU3RhY2sgT3ZlcmZsb3ddKGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS83NjQ2MjI3Ny8xNDM0NzUpLgoKIyMgUnVuIENvbmZpZ3VyYXRpb25zCkludGVsbGlKIFtydW4tY29uZmlndXJhdGlvbnNdKGh0dHBzOi8vd3d3LmpldGJyYWlucy5jb20vaGVscC9pZGVhL3J1bi1kZWJ1Zy1jb25maWd1cmF0aW9uLmh0bWwpIGFyZSB1c2VmdWwgZm9yIGJlaW5nIGFibGUgdG8gcmUtcnVuIHRlc3RzIHdpdGggc3BlY2lmaWMgcGFyYW1ldGVycy4gQWxsIHRoZSB0eXBpY2FsIEthcmF0ZSBvcHRpb25zIHlvdSBuZWVkIGFyZSBzdXBwb3J0ZWQsIGluY2x1ZGluZyBjb250cm9sIG92ZXIgdGhlIEpWTSBwYXJhbWV0ZXJzIGFuZCB3b3JraW5nIGRpcmVjdG9yeS4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvcnVuLWNvbmZpZy5qcGciIGhlaWdodD0iNDUwcHgiLz4KCiMjIFN0cnVjdHVyZSBWaWV3ClRoZSBJbnRlbGxpSiBbc3RydWN0dXJlIHZpZXddKGh0dHBzOi8vd3d3LmpldGJyYWlucy5jb20vaGVscC9pZGVhL3ZpZXdpbmctc3RydWN0dXJlLW9mLWEtc291cmNlLWZpbGUuaHRtbCkgaXMgc3VwcG9ydGVkIHNvIHlvdSBjYW4gbmF2aWdhdGUgbGFyZ2UgZmlsZXMgd2l0aCBlYXNlLgoKPGltZyBzcmM9InJlc291cmNlcy9zdHJ1Y3R1cmUuanBnIiBoZWlnaHQ9IjQ1MHB4Ii8+CgojIyBDb2RlIEZvcm1hdHRpbmcKSW50ZWxsaWogW2NvZGUtZm9ybWF0dGluZ10oaHR0cHM6Ly93d3cuamV0YnJhaW5zLmNvbS9oZWxwL2lkZWEvcmVmb3JtYXQtYW5kLXJlYXJyYW5nZS1jb2RlLmh0bWwpIHNob3J0Y3V0cyB3b3JrIGFuZCBldmVuIEpTT04gd2l0aGluIGRvYy1zdHJpbmcgYmxvY2tzIHdpbGwgYmUgZm9ybWF0dGVkIGNvcnJlY3RseS4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvcmVmb3JtYXQuanBnIiBoZWlnaHQ9IjI1MHB4Ii8+CgojIyBUZXN0IFJlc3VsdHMKVGVzdCByZXN1bHRzIGludGVncmF0ZSBpbnRvIHRoZSBJbnRlbGxpSiB0ZXN0LXJlc3VsdHMgdmlldy4gVGhlIEhUTUwgcmVwb3J0IGlzIG9uZS1jbGljayBhd2F5LgoKPGltZyBzcmM9InJlc291cmNlcy90ZXN0LXJlc3VsdHMuanBnIiBoZWlnaHQ9IjMwMHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpXaGVuIHRoZXJlIGFyZSB0ZXN0IGVycm9ycyAtIHlvdSBjYW4gbmF2aWdhdGUgZGlyZWN0bHkgdG8gdGhlIGZlYXR1cmUgZmlsZSBhbmQgbGluZSB0aGF0IGZhaWxlZCBieSBjbGlja2luZyBvbiBoeXBlcmxpbmtzIGluIHRoZSBsb2cuCgo8aW1nIHNyYz0icmVzb3VyY2VzL3Rlc3QtZXJyb3ItbGluay5qcGciIGhlaWdodD0iMzAwcHgiLz4KCiMjIEF1dG8gQ29tcGxldGUKQmVzaWRlcyB0aGUgc3ludGF4IHZhbGlkYXRpb24sIHlvdSBoYXZlIGF1dG8tY29tcGxldGUgZm9yIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQga2V5d29yZHMuCgo8aW1nIHNyYz0icmVzb3VyY2VzL2F1dG9jb21wbGV0ZS5qcGciIGhlaWdodD0iMjUwcHgiLz4KCiMjIENvZGUgRm9sZGluZwpZb3UgY2FuIGNvbGxhcHNlIHNlY3Rpb25zIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYWwgd2l0aCBsb25nIHRlc3RzLgoKPGltZyBzcmM9InJlc291cmNlcy9jb2RlLWZvbGRpbmcuanBnIiBoZWlnaHQ9IjMwMHB4Ii8+CgojIyBSZWZlcmVuY2VzCllvdSBjYW4gY2xpY2sgdG8gbmF2aWdhdGUgdG8gY2FsbGVkIGZpbGVzLiBPciBob3ZlciB0byBzZWUgY29udGV4dC4gQ3VycmVudGx5IHRoaXMgaXMgc3VwcG9ydGVkIGZvciB0aGUgYHJlYWQoKWAgYW5kIGBKYXZhLnR5cGUoKWAgc3ludGF4LiBNb3JlIGNvbWluZyBzb29uLCBpbmNsdWRpbmcgYXV0by1jb21wbGV0ZS4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvcmVmZXJlbmNlLWphdmEuanBnIiBoZWlnaHQ9IjI1MHB4Ii8+CgojIyBKU09OIFJlLWZvcm1hdHRpbmcKUGxhY2UgdGhlIGN1cnNvciB3aXRoaW4gSlNPTiB0byBzZWUgb3B0aW9ucyB0byByZS1mb3JtYXQgaXQsIHlvdSB3aWxsIHNlZSBhICJidWxiIiBpY29uLgoKPGltZyBzcmM9InJlc291cmNlcy9qc29uLWJ1bGIuanBnIiBoZWlnaHQ9IjIwMHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIHBvc3NpYmxlIChkZXBlbmRpbmcgb24gY29udGV4dCk6CgoqIExlbmllbnQgLSBqdXN0IGxpa2UgSlMsIHdoZXJlIHNpbmdsZS1xdW90ZXMgYXJlIHVzZWQgYW5kIG5vIHF1b3RlcyBhcmUgbmVlZGVkIGZvciBwcm9wZXJ0eSBrZXlzCiogU3RyaWN0IC0gU3RyaWN0IEpTT04sIHVzaW5nIGRvdWJsZS1xdW90ZXMKKiBNYWtlIHNpbmdsZSBMaW5lIC0gY29udmVydCBtdWx0aS1saW5lIEpTT04gdG8gYSBzaW5nbGUgbGluZQoqIE1ha2UgbXVsdGktbGluZSAtIGNvbnZlcnQgYSBzaW5nbGUgbGluZSBvZiBKU09OIHRvIG11bHRpLWxpbmUsIGluY2x1ZGluZyB0cmlwbGUtcXVvdGVzCgojIyBSdW4gRm9sZGVyCgpBcyBhIGNvbnZlbmllbmNlLCB5b3UgY2FuIHJpZ2h0LWNsaWNrIGFuZCBydW4gYSBmb2xkZXIgZnJvbSB0aGUgZXhwbG9yZXIgdmlldy4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvcnVuLWZvbGRlci5qcGciIGhlaWdodD0iMjAwcHgiLz4KCiMjIERlYnVnCgpZb3UgY2FuIHNldCBicmVhay1wb2ludHMgb24gS2FyYXRlIGZlYXR1cmUgZmlsZXMgaW4gZGVidWcgbW9kZS4gVGhlIEthcmF0ZSBkZWJ1Z2dlciBjYW4gZXZlbiBzdGVwLWJhY2sgYW5kIGhvdC1yZWxvYWQgc2ltcGxlIGVkaXRzIHRvIHlvdXIgdGVzdC4gTm90ZSB0aGF0IHRoZSBvcHRpb25zIGZvciAiSG90IFJlbG9hZCIgYW5kICJTdGVwIEJhY2siIG1heSBiZSBoaWRkZW4gYXdheSBpbiBzb21lIHZlcnNpb25zIG9mIHRoZSBJbnRlbGxpSiBVSS4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvZGVidWcuanBnIiBoZWlnaHQ9IjYwMHB4Ii8+CgojIyMgRGVidWcgSmF2YSBmcm9tIEthcmF0ZQoKQSBLYXJhdGUgZGVidWcgc2Vzc2lvbiB3aWxsIGV2ZW4gc3RvcCBhdCBKYXZhIGJyZWFrcG9pbnRzLgoKIyMjIERlYnVnIEthcmF0ZSBmcm9tIEphdmEKCllvdSBjYW4gYWxzbyBzdGFydCBhIG5vcm1hbCBKYXZhIGRlYnVnIHNlc3Npb24gdGhhdCB1c2VzIHRoZSBbS2FyYXRlIGBSdW5uZXJgIEphdmEgQVBJXShodHRwczovL2dpdGh1Yi5jb20va2FyYXRlbGFicy9rYXJhdGUjanVuaXQtNS1wYXJhbGxlbC1leGVjdXRpb24pIGJ1dCBzdGlsbCBzdG9wIGF0IEthcmF0ZSBicmVha3BvaW50cy4gVGhpcyByZXF1aXJlcyB5b3UgdG8gYmUgdXNpbmcgS2FyYXRlIHZlcnNpb24gMS41LjAgb3IgZ3JlYXRlci4gVGhlIHR3byB0aGluZ3MgdG8gbm90ZSBhcmU6CgoqIFlvdSBoYXZlIHRvIHVzZSB0aGUgS2FyYXRlIGBSdW5uZXJgIEphdmEgQVBJIGxpa2UgaW4gW3RoaXMgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2thcmF0ZWxhYnMva2FyYXRlLXRvZG8vYmxvYi9tYWluL3NyYy90ZXN0L2phdmEvYXBwL2FwaS9BcGlUZXN0LmphdmEpLgoqIFlvdSBoYXZlIHRvIHVzZSBhbiBJbnRlbGxpSiBKYXZhIG9yIFtKVW5pdF0oaHR0cHM6Ly93d3cuamV0YnJhaW5zLmNvbS9oZWxwL2lkZWEvcnVuLWRlYnVnLWNvbmZpZ3VyYXRpb24tanVuaXQuaHRtbCkgUnVuIENvbmZpZ3VyYXRpb24gYnV0IGluIGBEZWJ1Z2AgbW9kZS4gUmlnaHQtY2xpY2tpbmcgb24gYSBKVW5pdCBjbGFzcyAob3IgbWV0aG9kKSBvciBhIEphdmEgY2xhc3Mgd2l0aCBhIGBtYWluYCBtZXRob2QgaXMgbm9ybWFsbHkgW2hvdyB5b3UgY3JlYXRlIG9uZV0oaHR0cHM6Ly93d3cuamV0YnJhaW5zLmNvbS9oZWxwL2lkZWEvcnVuLWRlYnVnLWNvbmZpZ3VyYXRpb24uaHRtbCkuCgpTaW5jZSB0aGUgYFJ1bm5lcmAgQVBJIGlzIGEgcHVyZSBKYXZhIEFQSSAtIGl0IGRvZXMgbm90IGdldCBpbiB0aGUgd2F5IG9mIHlvdXIgZmxvdyBvciBpbmZyYXN0cnVjdHVyZS4gRm9yIGV4YW1wbGUsIHlvdXIgSmF2YSBvciBKVW5pdCBjb2RlIGNhbiBzdGFydCBhIHNlcnZlciBhbmQgdGhlbiBzdGFydCB5b3VyIEthcmF0ZSB0ZXN0IHN1aXRlLCBhbmQgdGhlIGRlYnVnIHNlc3Npb24gd2lsbCBzdG9wIGF0IGJvdGggSmF2YSBhbmQgS2FyYXRlIGJyZWFrcG9pbnRzLgoKIyMjIERlYnVnIEdyYWRsZSBQcm9qZWN0cwoKSWYgeW91IGhhdmUgYSBHcmFkbGUgcHJvamVjdCwgdGhlIFJ1biBDb25maWd1cmF0aW9uIHRoYXQgSW50ZWxsaUogY3JlYXRlcyBtYXkgZGVmYXVsdCB0byBhIEdyYWRsZSBzcGVjaWZpYyBvbmUgYW5kIG5vdCB0aGUgSW50ZWxsaUogbmF0aXZlIEphdmEgUnVuIENvbmZpZ3VyYXRpb24gbmVlZGVkIHRvIGhvbm9yIGJyZWFrcG9pbnRzIGluIEthcmF0ZSBmZWF0dXJlIGZpbGVzLiBUaGUgZGVmYXVsdCBpcyBlYXN5IHRvIGNoYW5nZSBieSBnb2luZyB0byBgU2V0dGluZ3MgPiBCdWlsZCwgRXhlY3V0aW9uLCBEZXBsb3ltZW50ID4gQnVpbGQgVG9vbHMgPiBHcmFkbGUgPiBCdWlsZCBhbmQgcnVuYC4gU2V0IHRoZSBgUnVuIHRlc3RzIHVzaW5nYCBvcHRpb24gdG8gYENob29zZSBwZXIgdGVzdGAgYXMgc2hvd24gYmVsb3cuCgo8aW1nIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzM3NzBmZGY5LTE5OWYtNDE1Ny1iNmI2LWE5ODI3MDkwNTZiNCIgaGVpZ2h0PSI1MDAiLz4KCk5vdyB3aGVuIHJpZ2h0LWNsaWNraW5nIG9uIGEgSlVuaXQgdGVzdCBvciBKYXZhIGNsYXNzLCB5b3Ugd2lsbCBoYXZlIHRoZSBvcHRpb24gdG8gY2hvb3NlIHRoZSBKYXZhIFJ1biBDb25maWd1cmF0aW9uIGluc3RlYWQgb2YgdGhlIEdyYWRsZSBvbmUuCgo8aW1nIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2JiOWI3NTBjLTZjNTQtNDYzNy04NTE2LWJjMmI5MTY1ZTM5OCIgaGVpZ2h0PSIxNTAiLz4KCiMjIE9mZmxpbmUgTGljZW5zZQoKPiBbIUlNUE9SVEFOVF0gIAo+IFRoZSBPZmZsaW5lIExpY2Vuc2UgaXMgYSBbcGFpZCBmZWF0dXJlIGZvciBlbnRlcnByaXNlc10oaHR0cHM6Ly93d3cua2FyYXRlbGFicy5pby9wcmljaW5nKS4gUGxlYXNlIG1ha2Ugc3VyZSB5b3Uga25vdyB3aG8geW91ciBkZXNpZ25hdGVkIGFkbWluIGlzIGJlZm9yZSB5b3UgcGVyZm9ybSB0aGlzIHN0ZXAuCgpPbiB0aGUgW0xpY2Vuc2UgQWN0aXZhdGlvbl0oI2xpY2Vuc2UtYWN0aXZhdGlvbikgc2V0dGluZ3MgcGFnZSwgeW91IHNob3VsZCBzZWUgYSBsaW5rIGNhbGxlZCBgT2ZmbGluZSBMaWNlbnNlYC4gV2hlbiB5b3UgY2xpY2sgaXQgeW91IHNob3VsZCBzZWUgc29tZXRoaW5nIGxpa2UgdGhpcy4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvb2ZmbGluZS1saWNlbnNlLmpwZyIgaGVpZ2h0PSIyMDBweCIvPgoKQSB1bmlxdWUgY29kZSBmb3IgeW91ciBzeXN0ZW0gd2lsbCBiZSBzaG93biB3aGljaCB5b3UgY2FuIGN1dCBhbmQgcGFzdGUuIEluIHRoZSBleGFtcGxlIGFib3ZlLCBpdCBpczogYERoSE9GS0h2ZDdYWVRpK3JRbk5USlE9PWAKClNlbmQgdGhhdCB1bmlxdWUgY29kZSB0byB5b3VyIGRlc2lnbmF0ZWQgYWRtaW4uIFlvdSB3aWxsIGJlIGlzc3VlZCBhIGxpY2Vuc2UgdGhhdCBpcyB0aWVkIHRvIHRoaXMgdW5pcXVlIGNvZGUuIFRvIGFwcGx5IHRoZSBsaWNlbnNlLCBjb3B5IGFsbCB0aGUgdGV4dCBmcm9tIHRoZSBsaWNlbnNlIGZpbGUgKHdoaWNoIHNob3VsZCBzdGFydCB3aXRoOiBgLS0tLS1CRUdJTiBMSUNFTlNFIEZJTEUtLS0tLWApIGFuZCBwYXN0ZSBpdCBpbnRvIHRoZSB0ZXh0LWFyZWEgcHJvdmlkZWQuIE5vdyB5b3Ugc2hvdWxkIHNlZSBzb21ldGhpbmcgbGlrZSB0aGlzLgoKPGltZyBzcmM9InJlc291cmNlcy9vZmZsaW5lLWxpY2Vuc2UtcGFzdGUuanBnIiBoZWlnaHQ9IjUwMHB4Ii8+CgpDbGljayBbQXBwbHldIGFuZCB5b3Ugc2hvdWxkIGEgY29uZmlybWF0aW9uIG1lc3NhZ2UgYW5kIHlvdXIgbGljZW5zZSBkZXRhaWxzLgoKIyMgT3BlbkFQSSBJbXBvcnQKClJpZ2h0LWNsaWNraW5nIG9uIGFueSBmaWxlIGluIHRoZSBQcm9qZWN0IEV4cGxvcmVyIGJyaW5ncyB1cCBhIG1lbnUgY2FsbGVkIGBLYXJhdGUgSW1wb3J0YCBhcyBzaG93biBiZWxvdy4gT3BlbkFQSSBvciBTd2FnZ2VyIGZpbGVzIG9mIGFueSB2ZXJzaW9uIGFyZSBzdXBwb3J0ZWQuCgo8aW1nIHNyYz0icmVzb3VyY2VzL3NwZWMtaW1wb3J0LmpwZyIgaGVpZ2h0PSIzMDBweCIvPgoKV2hlbiBzdWNjZXNzZnVsLCB5b3Ugd2lsbCBzZWUgYSBLYXJhdGUgdG9vbC13aW5kb3cgdHlwaWNhbGx5IG9uIHRoZSB0b3AtcmlnaHQgb2YgeW91ciBJbnRlbGxpSiBsYXlvdXQsIHNob3duIGJlbG93LiBZb3UgY2FuIGV4YW5kIHRvIHRoZSBsZXZlbCBvZiBIVFRQIG1ldGhvZHMgcGVyIEFQSSBwYXRoIHN1Y2ggYXMgYEdFVGAsIGBQT1NUYCBldGMuCgpXaGVuIHlvdSBjbGljayBvbiBhbiBIVFRQIG1ldGhvZCwgeW91IGNhbiBwcmV2aWV3IHRoZSBlcXVpdmFsZW50IEthcmF0ZSBzbmlwcGV0LgoKPGltZyBzcmM9InJlc291cmNlcy9zcGVjLXRvb2wtd2luZG93LmpwZyIgaGVpZ2h0PSI0NTBweCIvPgoKIyMgQ3JlYXRlIFRlc3RzIEZyb20gU3BlYwoKQ3JlYXRpbmcgYSBLYXJhdGUgdGVzdCBmcm9tIGFuIE9wZW4gQVBJIG9yIFN3YWdnZXIgZmlsZSBpcyBtdWNoIHF1aWNrZXIgbm93LiBKdXN0IGNsaWNrIGFuZCBkcmFnIGZyb20gdGhlIHRyZWUgaW50byB0aGUgZWRpdG9yIHdpbmRvdy4gCgo8aW1nIHNyYz0icmVzb3VyY2VzL3NwZWMtdG8tdGVzdC5naWYiIGhlaWdodD0iNDUwcHgiLz4KClRoaXMgd2F5IHlvdSBoYXZlIGZ1bGwgY29udHJvbCBvdmVyIHRoZSBzZXF1ZW5jZSBvZiBBUEkgY2FsbHMgeW91IG1ha2Ugd2l0aGluIGEgS2FyYXRlIHRlc3QuCgojIyBTcGVjIFBheWxvYWQgQ2hvb3NlcgoKQSBjaGFsbGVuZ2Ugd2l0aCBjb21wbGV4IEFQSXMgaXMgdGhhdCB0aGUgc2NoZW1hcyBpbmNsdWRlIGFsbCBwb3NzaWJsZSB2YXJpYXRpb25zIGFuZCBwZXJtdXRhdGlvbnMgZXZlbiB0aG91Z2ggb25seSBzb21lIGZpZWxkcyBhcmUgY29tbW9ubHkgdXNlZC4gVG8gc29sdmUgdGhpcyBwcm9ibGVtLCB5b3UgY2FuIHJpZ2h0LWNsaWNrIG9uIGFuIEhUVFAgbWV0aG9kIGluIHRoZSB0cmVlLiBUaGlzIGdpdmVzIHlvdSBhIG1lbnUgdG8gdmlldyB0aGUgUmVxdWVzdCBvciBSZXNwb25zZSB3aGVuIGF2YWlsYWJsZS4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvc3BlYy1tZXRob2QtcGF5bG9hZC5qcGciIGhlaWdodD0iMzAwcHgiLz4KClRoaXMgYnJpbmdzIHVwIGEgZGlhbG9nIHdoZXJlIHlvdSBjYW4gdW4tc2VsZWN0IHRoZSBKU09OIGtleXMgeW91IG5lZWQuIEl0IGlzIHZlcnkgZWFzeSB0byBjaG9vc2UgcGF5bG9hZCBzdWItc2V0cyB1c2luZyB0aGlzIFVJLgoKPGltZyBzcmM9InJlc291cmNlcy9zcGVjLXNlbGVjdC1qc29uLmdpZiIgaGVpZ2h0PSI1MDBweCIgd2lkdGg9IjYwMCIvPgoKT25jZSBzYXRpc2ZpZWQgeW91IGNhbiBjdXQgYW5kIHBhc3RlIGludG8gYSB0ZXN0IG9yIHdoZXJldmVyIHlvdSBuZWVkIHRoZSBwYXlsb2FkLgoKIyMgRXhwbG9yZSBBUEkgRnJvbSBTcGVjCgpDb21pbmcgc29vbi4KCiMjIENyZWF0ZSBNb2NrIEZyb20gU3BlYwoKWW91IGNhbiBleHBvcnQgYWxsIGRhdGEgd2l0aGluIGFuIGltcG9ydGVkIHNjaGVtYSBpbnRvIGEgcGxhaW4tdmFuaWxsYSBKUyBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBLYXJhdGUgbW9jay4gQSBkZXRhaWxlZCBleHBsYW5hdGlvbiBhbmQgc2FtcGxlIGNhbiBiZSBmb3VuZCBhdCB0aGlzIEdpdEh1YiBwcm9qZWN0OiBba2FyYXRlLW9hcy1kZW1vXShodHRwczovL2dpdGh1Yi5jb20vcHRydGhvbWFzL2thcmF0ZS1vYXMtZGVtbykuCgpVc2UgdGhlIGBTYXZlIE1vY2tgIGJ1dHRvbiBhdCB0aGUgYm90dG9tIG9mIHRoZSB0b29sLXdpbmRvdy4KCiMjIFNwZWMgSW1wYWN0IEFuYWx5c2lzCgpZb3UgY2FuIGFsc28gZXhwb3J0IGEgcGxhaW4tdmFuaWxsYSBKUyBmaWxlIHRoYXQgZHVtcHMgYWxsIEFQSSBhbmQgc2NoZW1hIGluZm9ybWF0aW9uIGluIGEgZm9ybWF0IGRlc2lnbmVkIHRvIG1ha2UgaW1wYWN0IGFuYWx5c2lzIGVhc2llciB1c2luZyB5b3VyIGV4aXN0aW5nIElERSBkaWZmIGZlYXR1cmVzLiBUaGUgZm9ybWF0IGlzIGRlc2lnbmVkIHRvIGZsYXR0ZW4gYWxsIG1ldGRhdGEgaW50byBzaW5nbGUgbGluZXMgaW4gYSB0ZXh0IGZpbGUuCgpPbmNlIHlvdSBoYXZlIGV4cG9ydGVkIHRoaXMgZmlsZSwgeW91IGNhbiBjb21wYXJlIHR3byBvZiB0aGVzZSB1c2luZyB0aGUgSW50ZWxsaUogYENvbXBhcmUgV2l0aGAgbWVudSBhbmQgdmlldyB0aGUgZGlmZiBpbiBhbiBpbnR1aXRpdmUgbWFubmVyLgoKPGltZyBzcmM9InJlc291cmNlcy9zcGVjLWRpZmYuanBnIiBoZWlnaHQ9IjQwMHB4Ii8+CgpZb3UgY2FuIHNjcm9sbC1yaWdodCBhbmQgdmlldyB0aGUgZGlmZmVyZW5jZXMgZXZlbiBmb3IgdmVyeSBsYXJnZSBBUEkgc2NoZW1hcy4KCiMjIyBUZXN0IEltcGFjdCBBbmFseXNpcwoKQ29taW5nIHNvb24gLSB0aGUgY2FwYWJpbGl0eSB0byBzaG93IHdoaWNoIHRlc3RzIGFuZCBtb2NrcyBhcmUgaW1wYWN0ZWQgZHVlIHRvIGNoYW5nZXMgaW4gdGhlIEFQSSBzcGVjLg== readmeEtag: '"9407f160423616e4a9cea7872a9343c60b62f031"' readmeLastModified: Fri, 10 Jan 2025 10:21:09 GMT repositoryId: 496290531 description: Karate IntelliJ Plugin created: '2022-05-25T15:33:28Z' updated: '2026-01-29T12:28:05Z' language: null archived: false stars: 13 watchers: 3 forks: 6 owner: karatelabs logo: https://avatars.githubusercontent.com/u/91312095?v=4 repoEtag: '"5d8379951b41f093b9f1aa72c64aa135550fbb0e92447fa2068a52b5c86140f6"' repoLastModified: Thu, 29 Jan 2026 12:28:05 GMT category: Testing foundInMaster: true oldLocations: - https://github.com/karatelabs/karate-intellij-plugin - source: openapi3 tags repository: https://github.com/codewithpraveen/openapi-specification v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNwZWNpZmljYXRpb24gQ291cnNlIFJlcG8KT3BlbkFQSSAoU3dhZ2dlcikgU3BlY2lmaWNhdGlvbiBmb3IgU29mdHdhcmUgRGV2ZWxvcGVycywgYSBndWlkZSB0byBsZWFybmluZyBPcGVuQVBJIFNwZWNpZmljYXRpb24gZm9yIGhpZ2hseSBwcm9kdWN0aXZlIEFQSSBkZXNpZ24sIGRvY3VtZW50YXRpb24sIGRldmVsb3BtZW50LCAmYW1wOyB0ZXN0aW5nLiAKCiMjIFJlcG9zaXRvcnkgZm9yIHRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gQ291cnNlClRoaXMgcmVwbyBjb3ZlcnMgdGhlIGZvbGxvd2luZzoKKiBDb21wbGV0ZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gZm9yIENvbGxlZ2UgTWFuYWdlbWVudCBTeXN0ZW0gKENNUykgdXNlZCBpbiB0aGUgY291cnNlIHZpZGVvcy4KKiBBc3NpZ25tZW50IChyZWFkeS1tYWRlIHByb2plY3RzIHRvIHN0YXJ0IHdvcmtpbmcpCiogQXNzaWdubWVudCBTb2x1dGlvbnMKCiMjIENoZWNrIG91dCB0aGlzIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBpbiBQb3N0bWFuClshW1J1biBpbiBQb3N0bWFuXShodHRwczovL3J1bi5wc3Rtbi5pby9idXR0b24uc3ZnKV0oaHR0cHM6Ly9hcHAuZ2V0cG9zdG1hbi5jb20vcnVuLWNvbGxlY3Rpb24vMjU2ODQ5NS04N2FkMGQ2My1jMDNhLTQ5YTAtOTNlMy1mOGQ4NzIzMmJhZWI/YWN0aW9uPWNvbGxlY3Rpb24lMkZmb3JrJmNvbGxlY3Rpb24tdXJsPWVudGl0eUlkJTNEMjU2ODQ5NS04N2FkMGQ2My1jMDNhLTQ5YTAtOTNlMy1mOGQ4NzIzMmJhZWIlMjZlbnRpdHlUeXBlJTNEY29sbGVjdGlvbiUyNndvcmtzcGFjZUlkJTNEOTdiMjRiYjItNjI3Yi00ODhjLTk3OTYtOTU0YThiM2FhOTE0KQoKIyMgRW5yb2xsIGluIHRoaXMgY291cnNlIHdpdGggOTAlIGRpc2NvdW50CkNsaWNrIHRoaXMgbGluayB0byBlbnJvbGwgaW4gdGhpcyBjb3Vyc2U6Cmh0dHBzOi8vY29kZXdpdGhwcmF2ZWVuLmNvbS9vcGVuYXBpLWNvdXJzZQo= readmeEtag: '"94928c291cc14801f09f09798a5aaf74cdf689eb"' readmeLastModified: Wed, 02 Nov 2022 22:57:19 GMT repositoryId: 312802042 description: >- OpenAPI (Swagger) Specification for Software Developers, a guide to learning OpenAPI Specification for highly productive API design, documentation, development, & testing. created: '2020-11-14T11:21:51Z' updated: '2024-09-05T21:12:52Z' language: null archived: false stars: 11 watchers: 2 forks: 11 owner: CodeWithPraveen logo: https://avatars.githubusercontent.com/u/62539682?v=4 repoEtag: '"834a43e718a37104225808bfd08a3bf3b0e9963023fac55fbcfd861fc902d03b"' repoLastModified: Thu, 05 Sep 2024 21:12:52 GMT foundInMaster: true category: Testing id: 59826edff234d7fdd1f71a260e01f5d2 - source: openapi3 tags repository: https://github.com/responsibleapi/responsible v3: true id: b5dd9396be5b2f2cc6eb74770ebd2970 repositoryMetadata: base64Readme: >- IyBSZXNwb25zaWJsZUFQSQoKQSBzbWFsbCBsYW5ndWFnZSB0aGF0IGNvbXBpbGVzIHRvIE9wZW5BUEkgMy4xLjAuCgojIyBMYW5ndWFnZQoKUmVzcG9uc2libGUgaXMgYmFzZWQgb24gW0tETCAxLjAuMF0oaHR0cHM6Ly9rZGwuZGV2KS4KCi0gW0V4YW1wbGVzXShleGFtcGxlcy8pCi0gW0xhbmd1YWdlIHR1dG9yaWFsXShUVVRPUklBTC5tZCkKLSBbTGFuZ3VhZ2UgcmVmZXJlbmNlXShSRUZFUkVOQ0UubWQpCgojIyMgQ29tcGlsaW5nIHRvIE9wZW5BUEkKCk9uY2UgeW91J3ZlIGNyZWF0ZWQgeW91ciBSZXNwb25zaWJsZSBmaWxlLCB5b3UgY2FuIHVubG9jayBhbGwgb2YgdGhlIE9wZW5BUEkgdG9vbGluZzoKCmBgYHNoCmJ1bnggQHJlc3BvbnNpYmxlYXBpL2NsaSByZXNwb25zaWJsZS5rZGwgLW8gL3RtcC9vcGVuYXBpLmpzb24KYGBgCgpCZWxvdyBpcyBzb21lIG9mIHRoZSBPcGVuQVBJIHRvb2xpbmcgcHJvdmlkZWQgYnkgUmVzcG9uc2libGUgYW5kIHRoaXJkIHBhcnRpZXMuCgojIyBWYWxpZGF0aW5nIHJlcXVlc3RzCgojIyMgVHlwZXNjcmlwdAoKIyMjIyBbSG9ub10oaHR0cHM6Ly9ob25vLmRldikKClNlZSBbcGFja2FnZXMvaG9uby9SRUFETUUubWRdKHBhY2thZ2VzL2hvbm8vUkVBRE1FLm1kKQoKIyMjIEtvdGxpbgoKIyMjIyBbVmVydC54XShodHRwczovL3ZlcnR4LmlvKQoKVXNlIHRoZSBbYnVpbHQtaW4gT3BlbkFQSSByZXF1ZXN0IHZhbGlkYXRvcl0oaHR0cHM6Ly92ZXJ0eC5pby9kb2NzL3ZlcnR4LW9wZW5hcGkvamF2YS8jX3ZhbGlkYXRpb25fb2ZfcmVxdWVzdHMpLgoKIyMgR2VuZXJhdGluZyBhIGNsaWVudDoKCiMjIyBJbnN0YWxsCgpgYGBzaApicmV3IGluc3RhbGwgb3BlbmFwaS1nZW5lcmF0b3IKYGBgCgojIyMgVHlwZXNjcmlwdAoKYGBgc2gKb3BlbmFwaS1nZW5lcmF0b3IgZ2VuZXJhdGUgLWcgdHlwZXNjcmlwdC1mZXRjaCAtaSAvdG1wL29wZW5hcGkuanNvbiAtbyBnZW4vIC0tYWRkaXRpb25hbC1wcm9wZXJ0aWVzPXR5cGVzY3JpcHRUaHJlZVBsdXM9dHJ1ZSxtb2RlbFByb3BlcnR5TmFtaW5nPW9yaWdpbmFsLG51bGxTYWZlQWRkaXRpb25hbFByb3BzPXRydWUsZW51bVByb3BlcnR5TmFtaW5nPW9yaWdpbmFsLHN1cHBvcnRzRVM2PXRydWUsdXNlU2luZ2xlUmVxdWVzdFBhcmFtZXRlcj1mYWxzZQpgYGAKCiMjIyBLb3RsaW4KCmBgYHNoCm9wZW5hcGktZ2VuZXJhdG9yIGdlbmVyYXRlIC1nIGtvdGxpbiAtaSAvdG1wL29wZW5hcGkuanNvbiAtbyBnZW4vIC0tYWRkaXRpb25hbC1wcm9wZXJ0aWVzPWxpYnJhcnk9anZtLXZlcnR4CmBgYAoKIyMgVGVzdGluZwoKVGhlIGlkZWEgYmVoaW5kIHRlc3Rpbmcgd2l0aCBPcGVuQVBJIGlzIHZhbGlkYXRpbmcgc2VydmVyIHJlc3BvbnNlcyBhZ2FpbnN0IHRoZSBjb250cmFjdC4KCiMjIyBLb3RsaW4KCiMjIyMgVmVydC54CgpTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Jlc3BvbnNpYmxlYXBpL3Rlc3Qta290bGluLXZlcnR4CgojIyMgUHl0aG9uCgpUbyBiZSBwdWJsaXNoZWQsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbGlzdGVuYm94L3lhbmljL2Jsb2IvbWFzdGVyL3Rlc3RzL3Jlc3BvbnNpYmxlLnB5CgojIyMgVHlwZXNjcmlwdAoKIyMjIyBIb25vCgohW1Jlc3BvbnNpYmxlIEhvbm8gdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AcmVzcG9uc2libGVhcGkvaG9ubykKCmBgYHNoCmJ1biBpbnN0YWxsIEByZXNwb25zaWJsZWFwaS9ob25vCmBgYAoKYGBgdHlwZXNjcmlwdApjb25zdCByZXNwb25zaWJsZSA9IG5ldyBSZXNwb25zaWJsZTxrZXlvZiBIYW5kbGVycywgQXBwRW52PigKICBvcGVuQXBpSW50ZXJuYWwgYXMgb2FzMzEuT3BlbkFQSU9iamVjdCwKICBob25vLAopCgp0ZXN0KCJzaWdudXAiLCBhc3luYyAoKSA9PiB7CiAgYXdhaXQgcmVzcG9uc2libGUuY2hlY2soInNpZ251cCIsIHsKICAgIHJlcTogewogICAgICBib2R5OiB7CiAgICAgICAgbmFtZTogZ2VuU3RyKCksCiAgICAgICAgZW1haWw6IGdlbkVtYWlsKCksCiAgICAgICAgcGFzc3dvcmQ6IGdlblN0cigpLAogICAgICB9LAogICAgfSwKICAgIHN0YXR1czogMjAxLAogIH0pCn0pCmBgYAoKIyMgRnV6emluZwoKVXNlIGh0dHBzOi8vc2NoZW1hdGhlc2lzLmlvIGZvciBub3cKCmBgYHNoCmJyZXcgaW5zdGFsbCB1dgp1dnggc2NoZW1hdGhlc2lzIHJ1biAtLWNoZWNrcyBhbGwgLS1iYXNlLXVybCBodHRwOi8vbG9jYWxob3N0OjgwODAgLS13b3JrZXJzIDQwIHNyYy9tYWluL3Jlc291cmNlcy9vcGVuYXBpLmpzb24KYGBgCgpVbHRpbWF0ZWx5IHRoZSBwbGFuIGlzIHRvIGludGVncmF0ZSBmdXp6aW5nIGludG8gdGhlIHRlc3RpbmcgbGlicmFyaWVzLgoKIyMgU2VlIGFsc28KCi0gW09wZW5BUEldKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYWJvdXQvKQotIFtBV1MgU21pdGh5XShodHRwczovL3NtaXRoeS5pby8yLjAvaW5kZXguaHRtbCkKLSBbQVBJIEJsdWVwcmludF0oaHR0cHM6Ly9hcGlibHVlcHJpbnQub3JnLykKLSBbV1NETF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2ViX1NlcnZpY2VzX0Rlc2NyaXB0aW9uX0xhbmd1YWdlLykKLSBbUHJvdG9mb3JjZV0oaHR0cHM6Ly93d3cucHJvdG9mb3JjZS5pby8pCi0gW1N0b3BsaWdodF0oaHR0cHM6Ly9zdG9wbGlnaHQuaW8vKQotIFtSQU1MXShodHRwczovL3JhbWwub3JnLykK readmeEtag: '"15b5324f643b7d50daeaefca178e09f268256298"' readmeLastModified: Wed, 01 Jan 2025 12:16:55 GMT repositoryId: 451072524 description: A small language that compiles to OpenAPI created: '2022-01-23T10:39:17Z' updated: '2025-05-25T19:29:24Z' language: TypeScript archived: false stars: 10 watchers: 1 forks: 0 owner: responsibleapi logo: https://avatars.githubusercontent.com/u/119290467?v=4 repoEtag: '"488b89f8e5a82ea49d2e0522188928f16b45e5a5f3c6e3558deca80a3d38096b"' repoLastModified: Sun, 25 May 2025 19:29:24 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/meoyawn/responsible - source: openapi3 tags repository: https://github.com/scalar/sandbox v3: true id: 638257589df790fa77577129e5bdb83d repositoryMetadata: base64Readme: >- IyBTY2FsYXIgU2FuZGJveAoKQW4gZWFzeSB3YXkgdG8gc2hhcmUgT3BlbkFQSSBmaWxlcy4KCiMjIERldmVsb3BtZW50CgpgYGAKcG5wbSBpbnN0YWxsCnBucG0gZGI6bWlncmF0ZQpwbnBtIGRldgpgYGAKCiMjIFVwZGF0ZSB0aGUgc2NoZW1hCgoxLiBDaGFuZ2UgdGhlIHNjaGVtYTogZGIvc2NoZW1hLnRzCjIuIENyZWF0ZSBhIG1pZ3JhdGlvbjogYHBucG0gZGI6Z2VuZXJhdGVgCjMuIEFwcGx5IG1pZ3JhdGlvbnM6IGBwbnBtIGRiOm1pZ3JhdGVgCg== readmeEtag: '"1f42178be3a3b42e3811a2768270fb78005b13f2"' readmeLastModified: Fri, 16 Aug 2024 15:14:45 GMT repositoryId: 740729887 description: The easiest way to share OpenAPI files created: '2024-01-09T00:11:59Z' updated: '2026-02-04T15:35:30Z' language: Vue archived: false stars: 20 watchers: 1 forks: 6 owner: scalar logo: https://avatars.githubusercontent.com/u/301879?v=4 repoEtag: '"16d730c78a9a01892c77af28d432abec9b2197b3f2ad57d43836ea0ea32da691"' repoLastModified: Wed, 04 Feb 2026 15:35:30 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/javachinna/spring-boot-oauth2-jwt v3: true id: 78669f0233dab87b399d7de324a72dd0 repositoryMetadata: base64Readme: >- I1NlY3VyZSBSRVNUIEFQSSB3aXRoIE9BdXRoMiBKV1QgQXV0aGVudGljYXRpb24KCjEuIFtTcHJpbmcgQm9vdCBSRVNUIEFQSSBmb3IgVXNlciByZWdpc3RyYXRpb24gYW5kIGF1dGhlbnRpY2F0aW9uIHdpdGggT0F1dGggMi4wIFJlc291cmNlIHNlcnZlciB1c2luZyBKV1QgYXMgYmVhcmVyIHRva2VuXShodHRwczovL3d3dy5qYXZhY2hpbm5hLmNvbS9zZWN1cmUtc3ByaW5nLXJlc3QtYXBpLW9hdXRoMi1qd3QtYXV0aGVudGljYXRpb24vKQoKMi4gW0NvbmZpZ3VyZSBPcGVuQVBJIDMgU3BlYyB3aXRoIEJhc2ljICYgSldUIEF1dGhlbnRpY2F0aW9uXShodHRwczovL3d3dy5qYXZhY2hpbm5hLmNvbS9jb25maWd1cmUtb3BlbmFwaS1zcGVjLWJhc2ljLWp3dC1hdXRoZW50aWNhdGlvbi8pCjMuIFtDb25maWd1cmUgU3ByaW5nIFNlY3VyaXR5IOKAkyBTZWN1cmUgRGlmZmVyZW50IFVSTHMgRGlmZmVyZW50bHldKGh0dHBzOi8vd3d3LmphdmFjaGlubmEuY29tL3NwcmluZy1zZWN1cml0eS1zZWN1cmUtZGlmZmVyZW50LXVybHMtZGlmZmVyZW50bHkvKQo0LiBbUG9wdWxhdGUgRGF0YWJhc2UgZnJvbSBDU1YgZmlsZSBpbiAyIFNpbXBsZSBTdGVwc10oaHR0cHM6Ly93d3cuamF2YWNoaW5uYS5jb20vc3ByaW5nLWJvb3QtcmVhZC1jc3YtZmlsZS1wb3B1bGF0ZS1kYXRhYmFzZS8pCg== readmeEtag: '"bd56d9cf3f724bf5d64cc4293a5446d846090291"' readmeLastModified: Tue, 14 Feb 2023 23:41:03 GMT repositoryId: 599821532 description: Secure REST API with OAuth2 JWT Authentication created: '2023-02-10T00:20:30Z' updated: '2025-04-08T11:16:40Z' language: Java archived: false stars: 12 watchers: 1 forks: 15 owner: JavaChinna logo: https://avatars.githubusercontent.com/u/23244086?v=4 license: MIT repoEtag: '"1a9f97dc05af551067bc88274cc9df4324cec966a1069fd1393f530f65a0347a"' repoLastModified: Tue, 08 Apr 2025 11:16:40 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/kevinmmartins/python-flask-connexion-example-openapi3 v3: true repositoryMetadata: base64Readme: >- IyBCYXNpYyBwcm9qZWN0IHdpdGggRmxhc2ssIENvbm5leGlvbiBhbmQgT3BlbkFwaSAzCgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9rZXZpbm1tYXJ0aW5zL3B5dGhvbi1mbGFzay1jb25uZXhpb24tZXhhbXBsZS1vcGVuYXBpMy5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9rZXZpbm1tYXJ0aW5zL3B5dGhvbi1mbGFzay1jb25uZXhpb24tZXhhbXBsZS1vcGVuYXBpMykKCkJhc2ljIFB5dGhvbiBwcm9qZWN0IHVzaW5nIENvbm5leGlvbiBhbmQgRmxhc2sKCmBgYGh0dHAKaHR0cHM6Ly9naXRodWIuY29tL3NwZWMtZmlyc3QvY29ubmV4aW9uCmBgYAoKIyMgUmVxdWlyZW1lbnRzCgoqIERvY2tlciBDb21wb3NlIDEuMjEuMisKKiBQeXRob24gMy45ICsKCiMjIFJ1biB3aXRoIERvY2tlciBDb21wb3NlCgpgYGBiYXNoCiMgYnVpbGRpbmcgdGhlIGNvbnRhaW5lcgpzdWRvIGRvY2tlci1jb21wb3NlIGJ1aWxkCgojIHN0YXJ0aW5nIHVwIGEgY29udGFpbmVyCnN1ZG8gZG9ja2VyLWNvbXBvc2UgdXAKYGBgCgojIyBCdWlsZCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAoKYGBgYmFzaApwaXAzIGluc3RhbGwgdmlydHVhbGVudgp2aXJ0dWFsZW52IC1wIHB5dGhvbjMuOSB2ZW52CnNvdXJjZSB2ZW52L2Jpbi9hY3RpdmF0ZQpwaXAzIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dApwaXAzIGluc3RhbGwgLXIgdGVzdC1yZXF1aXJlbWVudHMudHh0CmBgYAoKIyMgTGF1bmNoIHRoZSBzZXJ2ZXIKCmBgYGJhc2gKcHl0aG9uMyAtbSBiYXNpYwpgYGAKCllvdSBzaG91bGQgc2VlIG91dHB1dCBzaW1pbGFyIHRvIHRoaXM6CgpgYGBiYXNoCmBDb25uZXhpb25NaWRkbGV3YXJlLnJ1bmAgaXMgb3B0aW1pemVkIGZvciBkZXZlbG9wbWVudC4gRm9yIHByb2R1Y3Rpb24sIHJ1biB1c2luZyBhIGRlZGljYXRlZCBBU0dJIHNlcnZlci4KSU5GTzogICAgIFN0YXJ0ZWQgc2VydmVyIHByb2Nlc3MgWzU3NTNdCklORk86ICAgICBXYWl0aW5nIGZvciBhcHBsaWNhdGlvbiBzdGFydHVwLgpJTkZPOiAgICAgQXBwbGljYXRpb24gc3RhcnR1cCBjb21wbGV0ZS4KSU5GTzogICAgIFV2aWNvcm4gcnVubmluZyBvbiBodHRwOi8vMTI3LjAuMC4xOjgwODEgKFByZXNzIENUUkwrQyB0byBxdWl0KQpgYGAKCiMjIFN3YWdnZXIgZGVmaW5pdGlvbgoKVmlldyB0aGUgZ2VuZXJhdGVkIFN3YWdnZXIgVUkgYXQgdGhpcyBVUkw6CgpgYGBodHRwCmh0dHA6Ly9sb2NhbGhvc3Q6ODA4MS92MS9iYXNpYy91aS8KYGBgCgojIyBIZWFsdGggQ2hlY2sKCkNoZWNrIHRoZSBzZXJ2ZXIgaGVhbHRoIGF0IHRoaXMgVVJMOgoKYGBgaHR0cApodHRwOi8vbG9jYWxob3N0OjgwODEvdjEvYmFzaWMvcGluZwpgYGAKCiMjIExhdW5jaCB0ZXN0cwoKYGBgYmFzaApzb3VyY2UgdmVudi9iaW4vYWN0aXZhdGUKcGlwMyBpbnN0YWxsIHRveAp0b3gKYGBgCg== readmeEtag: '"f0b9ffcee699fc9883a928f417df622ec88ded4d"' readmeLastModified: Thu, 10 Apr 2025 23:43:02 GMT repositoryId: 181561736 description: >- Basic REST project with Flask , Connexion by Zalando , OpenApi3, Docker and tox created: '2019-04-15T20:35:56Z' updated: '2025-10-07T01:30:06Z' language: Python archived: false stars: 10 watchers: 1 forks: 6 owner: kevinmmartins logo: https://avatars.githubusercontent.com/u/20428703?v=4 license: Apache-2.0 repoEtag: '"92301be75a940ce3bf50d96eb1d4d598bf03cc6d29d55ff0f16c9e31a09280c5"' repoLastModified: Tue, 07 Oct 2025 01:30:06 GMT foundInMaster: true category: - Mock - Server Implementations id: c3515799d051759b497d216efbf7d671 - source: openapi3 tags repository: https://github.com/mokkapps/openapi-angular-spring-demo v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWFuZ3VsYXItc3ByaW5nLWRlbW8KQSBkZW1vIGFwcGxpY2F0aW9uIHdoaWNoIGRlbW9uc3RyYXRlcyBPcGVuQVBJIGdlbmVyYXRvciBpbiBhIEFuZ3VsYXIgKyBTcHJpbmcgQm9vdCBhcHBsaWNhdGlvbgo= readmeEtag: '"3052e99afe77461677d14ac17f8d0413278b41ee"' readmeLastModified: Sun, 23 Feb 2020 14:05:05 GMT repositoryId: 242348703 description: >- A demo application which demonstrates OpenAPI generator in a Angular + Spring Boot application created: '2020-02-22T13:44:36Z' updated: '2023-11-05T10:51:03Z' language: Java archived: false stars: 10 watchers: 1 forks: 4 owner: Mokkapps logo: https://avatars.githubusercontent.com/u/3127210?v=4 license: MIT repoEtag: '"3fa25b7252fef84d9619aaa67d54b1ded0eb8fee455b9abb951bc799ca35a65e"' repoLastModified: Sun, 05 Nov 2023 10:51:03 GMT foundInMaster: true category: - Low-level Tooling - SDK - Server Implementations id: c0b59bc62c52bcac0736a7fc32b70d86 - source: openapi3 tags repository: https://github.com/systangotechnologies/swagger-generator-koa v3: true repositoryMetadata: base64Readme: >- IyBzd2FnZ2VyLWdlbmVyYXRvci1rb2EKCk5QTSBtb2R1bGUgdG8gZ2VuZXJhdGUgc3dhZ2dlciBkb2N1bWVudGF0aW9uIGZvciBLT0EgQVBJcyB3aXRoIG1pbmltdW0gYWRkaXRpb25hbCBlZmZvcnQuCgo+WyFbRG93bmxvYWRzXShodHRwczovL2JhZGdlbi5uZXQvbnBtL2R0L3N3YWdnZXItZ2VuZXJhdG9yLWtvYSldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3N3YWdnZXItZ2VuZXJhdG9yLWtvYSkgWyFbbnBtIGRlcGVuZGVudHNdKGh0dHBzOi8vYmFkZ2VuLm5ldC9ucG0vZGVwZW5kZW50cy9zd2FnZ2VyLWdlbmVyYXRvci1rb2EpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zd2FnZ2VyLWdlbmVyYXRvci1rb2E/YWN0aXZlVGFiPWRlcGVuZGVudHMpCgojIyBEZXNjcmlwdGlvbgpUaGlzIE5QTSBtb2R1bGUgbGV0J3MgeW91IHZhbGlkYXRlIGFuZCBnZW5lcmF0ZSBzd2FnZ2VyIChPcGVuQVBJKSBkb2N1bWVudGF0aW9uIGZvciB5b3VyIEtPQSBBUElzIHdpdGhvdXQgcHV0dGluZyBpbiBtdWNoIGV4dHJhIGVmZm9ydHMuIFlvdSBqdXN0IG5lZWQgdG8gZm9sbG93IHRoZSBjb252ZW50aW9uIGZvciB5b3VyIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9iamVjdHMsIGFuZCB0aGUgbW9kdWxlIHdpbGwgdGFrZSBjYXJlIG9mIHRoZSByZXN0LiBUaGlzIG1vZHVsZSB3aWxsIGNvdmVyIHlvdXIgY29udHJvbGxlcnMsIEFQSSBzcGVjcyBhbG9uZyB3aXRoIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9iamVjdCBzdHJ1Y3R1cmVzLgoKCiMjIFVzYWdlICMjCgpJbnN0YWxsIHVzaW5nIG5wbToKCmBgYGJhc2gKJCBucG0gaW5zdGFsbCAtLXNhdmUgc3dhZ2dlci1nZW5lcmF0b3Ita29hCmBgYAoKIyMjIEtvYSBzZXR1cCBgaW5kZXguanNgICMjIwoKYGBgamF2YXNjcmlwdApjb25zdCBLb2EgPSByZXF1aXJlKCdrb2EnKTsKY29uc3QgYXBwID0gbmV3IEtvYSgpOwpjb25zdCBzd2FnZ2VyID0gcmVxdWlyZSgic3dhZ2dlci1nZW5lcmF0b3Ita29hIik7CgovLyBEZWZpbmUgeW91ciByb3V0ZXIgaGVyZQoKY29uc3Qgb3B0aW9ucyA9IHsKCXRpdGxlOiAic3dhZ2dlci1nZW5lcmF0b3Ita29hIiwKCXZlcnNpb246ICIxLjAuMCIsCglob3N0OiAibG9jYWxob3N0OjUwMDAiLAoJYmFzZVBhdGg6ICIvIiwKCXNjaGVtZXM6IFsiaHR0cCIsICJodHRwcyJdLAoJc2VjdXJpdHlEZWZpbml0aW9uczogewoJCUJlYXJlcjogewoJCQlkZXNjcmlwdGlvbjogJ0V4YW1wbGUgdmFsdWU6LSBCZWFyZXIgZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBaQ0k2SWpVNU1tUXdNR0poTlRKallqSmpNJywKCQkJdHlwZTogJ2FwaUtleScsCgkJCW5hbWU6ICdBdXRob3JpemF0aW9uJywKCQkJaW46ICdoZWFkZXInCgkJfQoJfSwKCXNlY3VyaXR5OiBbe0JlYXJlcjogW119XSwKCWRlZmF1bHRTZWN1cml0eTogJ0JlYXJlcicKfTsKCgovKioKICogc2VydmVTd2FnZ2VyIG11c3QgYmUgY2FsbGVkIGFmdGVyIGRlZmluaW5nIHlvdXIgcm91dGVyLgogKiBAcGFyYW0gYXBwIEtvYSBvYmplY3QKICogQHBhcmFtIGVuZFBvaW50IFN3YWdnZXIgcGF0aCBvbiB3aGljaCBzd2FnZ2VyIFVJIGRpc3BsYXkKICogQHBhcmFtIG9wdGlvbnMgU3dhZ2dldCBPcHRpb25zLgogKiBAcGFyYW0gcGF0aC5yb3V0ZVBhdGggcGF0aCB0byBmb2xkZXIgaW4gd2hpY2ggcm91dGVzIGZpbGVzIGRlZmluZWQuCiAqIEBwYXJhbSBwYXRoLnJlcXVlc3RNb2RlbFBhdGggT3B0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHBhdGggdG8gZm9sZGVyIGluIHdoaWNoIHJlcXVlc3RNb2RlbCBkZWZpbmVkLCBpZiBub3QgZ2l2ZW4gcmVxdWVzdCBwYXJhbXMgd2lsbCBub3QgZGlzcGxheSBvbiBzd2FnZ2VyIGRvY3VtZW50YXRpb24uCiAqIEBwYXJhbSBwYXRoLnJlc3BvbnNlTW9kZWxQYXRoIE9wdGlvbmFsIHBhcmFtZXRlciB3aGljaCBpcyBwYXRoIHRvIGZvbGRlciBpbiB3aGljaCByZXNwb25zZU1vZGVsIGRlZmluZWQsIGlmIG5vdCBnaXZlbiByZXNwb25zZSBvYmplY3RzIHdpbGwgbm90IGRpc3BsYXkgb24gc3dhZ2dlciBkb2N1bWVudGF0aW9uLgogKi8Kc3dhZ2dlci5zZXJ2ZVN3YWdnZXIoYXBwLCAiL3N3YWdnZXIiLCBvcHRpb25zLCB7cm91dGVQYXRoIDogJy4vc3JjL3JvdXRlcy8nLCByZXF1ZXN0TW9kZWxQYXRoOiAnLi9zcmMvcmVxdWVzdE1vZGVsJywgcmVzcG9uc2VNb2RlbFBhdGg6ICcuL3NyYy9yZXNwb25zZU1vZGVsJ30pOwoKYGBgCgojIyMgS29hIHJvdXRlciBgdXNlci5qc2AgIyMjCgpgYGBqYXZhc2NyaXB0Cgpjb25zdCBSb3V0ZXIgPSByZXF1aXJlKCdrb2Etcm91dGVyJyk7CmNvbnN0IHJvdXRlciA9IG5ldyBSb3V0ZXIoKTsKY29uc3QgdXNlckNvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVyL3VzZXInKTsKY29uc3Qge3ZhbGlkYXRpb259ID0gcmVxdWlyZSgnc3dhZ2dlci1nZW5lcmF0b3Ita29hJyk7CnZhciByZXF1ZXN0TW9kZWwgPSByZXF1aXJlKCcuLi9yZXF1ZXN0TW9kZWwvdXNlcnMnKTsKY29uc3QgQkFTRV9VUkwgPSBgL3VzZXJzYDsKCnJvdXRlci5wb3N0KGAke0JBU0VfVVJMfS9gLCB2YWxpZGF0aW9uKHJlcXVlc3RNb2RlbFswXSksIHVzZXJDb250cm9sbGVyLmNyZWF0ZVVzZXIpOwoKcm91dGVyLmdldChgJHtCQVNFX1VSTH0vYCwgdXNlckNvbnRyb2xsZXIuZ2V0VXNlcnMpOwoKcm91dGVyLnB1dChgJHtCQVNFX1VSTH0vOnVzZXJJZGAsIHVzZXJDb250cm9sbGVyLnVwZGF0ZVVzZXIpOwoKcm91dGVyLmdldChgJHtCQVNFX1VSTH0vOnVzZXJJZGAsIHVzZXJDb250cm9sbGVyLmdldFVzZXJEZXRhaWxzKTsKCnJvdXRlci5kZWxldGUoYCR7QkFTRV9VUkx9Lzp1c2VySWRgLCB1c2VyQ29udHJvbGxlci5kZWxldGVVc2VyKTsKCm1vZHVsZS5leHBvcnRzID0gcm91dGVyOwoKYGBgCgojIyBSZXF1ZXN0IE1vZGVsIGAvcmVxdWVzdE1vZGVsL3VzZXIuanNgCiAgLSBGaWxlIG5hbWUgZm9yIHJlcXVlc3QgbW9kZWwgc2hvdWxkIGJlIHNhbWUgYXMgcm91dGVyIGZpbGUuCiAgLSBEZWZpbmUgcmVxdWVzdCBtb2RlbCB3aXRoIHRoZWlyIG9yZGVyIG9mIGFwaXMgaW4gcm91dGVyIGpzIGZpbGUuIEZvciBleGFtcGxlIGZpcnN0IGFwaSBpbiB1c2VyIHJvdXRlciBpcyBjcmVhdGUgdXNlciBzbyB5b3UgbmVlZCB0byBkZWZpbmUgY3JlYXRlVXNlciBzY2hlbWEgd2l0aCBrZXkgMC4KICAtIEFkZCBib29sZWFuIGZsYWcgImV4Y2x1ZGVGcm9tU3dhZ2dlciIgaW5zaWRlIHJlcXVlc3Rtb2RlbCBpZiB5b3Ugd2FudCB0byBleGNsdWRlIGFueSBwYXJ0aWN1bGFyIGFwaSBmcm9tIHN3YWdnZXIgZG9jdW1lbnRhdGlvbi4KICAtIFRoaXMgUmVxdWVzdCBtb2RlbCBmb2xsb3dzIEpvaSBtb2R1bGUgY29udmVudGlvbnMsIHNvIGl0IGNhbiBhbHNvIGJlIHVzZWQgZm9yIHJlcXVlc3QgcGFyYW1ldGVycyB2YWxpZGF0aW9uLgoKYGBgamF2YXNjcmlwdApjb25zdCBKb2kgPSByZXF1aXJlKCJAaGFwaS9qb2kiKTsKLyoqCiAqIEZpbGUgbmFtZSBmb3IgcmVxdWVzdCBhbmQgcmVzcG9uc2UgbW9kZWwgc2hvdWxkIGJlIHNhbWUgYXMgcm91dGVyIGZpbGUuCiAqIERlZmluZSByZXF1ZXN0IG1vZGVsIHdpdGggdGhlaXIgb3JkZXIgaW4gcm91dGVyIGpzIGZpbGUuCiAqIEZvciBleGFtcGxlIGZpcnN0IGFwaSBpbiB1c2VyIHJvdXRlciBpcyBjcmVhdGUgdXNlciBzbyB3ZSBkZWZpbmUgY3JlYXRlVXNlciBzY2hlbWEgd2l0aCBrZXkgMC4KICovCm1vZHVsZS5leHBvcnRzID0gewogICAgLy8gSGVyZSAwIGlzIHRoZSBvcmRlciBvZiBhcGkgaW4gcm91dGUgZmlsZS4KICAgIDA6IHsKICAgICAgICBib2R5OiB7CiAgICAgICAgICAgIGZpcnN0TmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksCiAgICAgICAgICAgIGxhc3ROYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSwKICAgICAgICAgICAgYWRkcmVzczogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksCiAgICAgICAgICAgIGNvbnRhY3Q6IEpvaS5udW1iZXIoKS5yZXF1aXJlZCgpCiAgICAgICAgfSwKICAgICAgICBtb2RlbDogImNyZWF0ZVVzZXIiLCAvLyBOYW1lIG9mIHRoZSBtb2RlbAogICAgICAgIGdyb3VwOiAiVXNlciIsIC8vIFN3YWdnZXIgdGFnIGZvciBhcGlzLgogICAgICAgIGRlc2NyaXB0aW9uOiAiQ3JlYXRlIHVzZXIgYW5kIHNhdmUgZGV0YWlscyBpbiBkYXRhYmFzZSIKICAgIH0sCiAgICAxOiB7CiAgICAgICAgcXVlcnk6IHt9LAogICAgICAgIHBhdGg6IHt9LCAvLyBEZWZpbmUgZm9yIGFwaSBwYXRoIHBhcmFtIGhlcmUuCiAgICAgICAgaGVhZGVyOiB7fSwgLy8gRGVmaW5lIGlmIGhlYWRlciByZXF1aXJlZC4KICAgICAgICBncm91cDogIlVzZXIiLAogICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IEFsbCBVc2VyIgogICAgfSwKICAgIDI6IHsKICAgICAgICBib2R5OiB7CiAgICAgICAgICAgIGZpcnN0TmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksCiAgICAgICAgICAgIGxhc3ROYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSwKICAgICAgICAgICAgYWRkcmVzczogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksCiAgICAgICAgICAgIGNvbnRhY3Q6IEpvaS5udW1iZXIoKS5yZXF1aXJlZCgpCiAgICAgICAgfSwKICAgICAgICBtb2RlbDogInVwZGF0ZVVzZXIiLAogICAgICAgIGdyb3VwOiAiVXNlciIsCiAgICAgICAgZGVzY3JpcHRpb246ICJVcGRhdGUgVXNlciIKICAgIH0sCiAgICAzOiB7CiAgICAgICAgcXVlcnk6IHt9LAogICAgICAgIHBhdGg6IHsKICAgICAgICAgICAgdXNlcklkOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKQogICAgICAgIH0sIC8vIERlZmluZSBmb3IgYXBpIHBhdGggcGFyYW0gaGVyZS4KICAgICAgICBoZWFkZXI6IHt9LCAvLyBEZWZpbmUgaWYgaGVhZGVyIHJlcXVpcmVkLgogICAgICAgIG1vZGVsOiAnZ2V0VXNlckRldGFpbHMnLAogICAgICAgIGdyb3VwOiAiVXNlciIsCiAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgdXNlciBkZXRhaWxzIgogICAgfSwKICAgIDQ6IHsKICAgICAgICBleGNsdWRlRnJvbVN3YWdnZXI6IGZhbHNlIC8vIE1ha2UgaXQgdHJ1ZSBpZiBuZWVkIHRvIGV4Y2x1ZGUgYXBpcyBmcm9tIHN3YWdnZXIuCiAgICB9Cn07CmBgYAoKIyMgUmVzcG9uc2UgTW9kZWwgYC9yZXNwb25zZU1vZGVsL3VzZXIuanNgCgogLSBGaWxlIG5hbWUgZm9yIHJlc3BvbnNlIG1vZGVsIHNob3VsZCBiZSBzYW1lIGFzIHJvdXRlciBmaWxlLgogLSBSZXNwb25zZSBuYW1lIHNob3VsZCBiZSBzYW1lIGFzIG1vZGVsIG5hbWUgZnJvbSByZXF1ZXN0bW9kZWwuIEZvciBleGFtcGxlIG1vZGVsIG5hbWUgb2YgY3JlYXRlIHVzZXIgYXBpIGlzICJjcmVhdGVVc2VyIiBzbyBrZXkgZm9yIHJlc3BvbnNlIG9iamVjdCB3aWxsIGJlICJjcmVhdGVVc2VyIi4KIC0gSW5zaWRlIHJlc3BvbnNlIG1vZGVsIGRlZmluZSByZXNwb25zZXMgd2l0aCByZXNwZWN0IHRvIHRoZWlyIHN0YXR1cyBjb2RlIHJldHVybmVkIGZyb20gYXBpcy4KCmBgYGphdmFzY3JpcHQKCi8vIFRoZSBuYW1lIG9mIGVhY2ggcmVzcG9uc2UgcGF5bG9hZCBzaG91bGQgYmUgbW9kZWwgbmFtZSBkZWZpbmVkIGluIFJlcXVlc3QgbW9kZWwgc2NoZW1hLgoKbW9kdWxlLmV4cG9ydHMgPSB7CiAgICBjcmVhdGVVc2VyOiB7IC8vIFRoaXMgbmFtZSBzaG91bGQgYmUgbW9kZWwgbmFtZSBkZWZpbmVkIGluIHJlcXVlc3QgbW9kZWwuCiAgICAgICAgMjAxOiB7CiAgICAgICAgICAgIG1lc3NhZ2U6IHsKICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDUwMDogewogICAgICAgICAgICBpbnRlcm5hbDogewogICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sCiAgICBnZXRVc2VyczogewogICAgICAgIDIwMDogW3sKICAgICAgICAgICAgaWQ6IHsKICAgICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZpcnN0TmFtZTogewogICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbGFzdE5hbWU6IHsKICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFkZHJlc3M6IHsKICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNvbnRhY3Q6IHsKICAgICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNyZWF0ZWRBdDogewogICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsCiAgICAgICAgICAgICAgICBmb3JtYXQ6ICdkYXRlLXRpbWUnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZWRBdDogewogICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsCiAgICAgICAgICAgICAgICBmb3JtYXQ6ICdkYXRlLXRpbWUnCiAgICAgICAgICAgIH0KICAgICAgICB9XSwKICAgICAgICA1MDA6IHsKICAgICAgICAgICAgaW50ZXJuYWw6IHsKICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LAogICAgdXBkYXRlVXNlcjogewogICAgICAgIDIwMTogewogICAgICAgICAgICBtZXNzYWdlOiB7CiAgICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICA1MDA6IHsKICAgICAgICAgICAgaW50ZXJuYWw6IHsKICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LAogICAgZ2V0VXNlckRldGFpbHM6IHsKICAgICAgICAyMDA6IHsKICAgICAgICAgICAgaWQ6IHsKICAgICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZpcnN0TmFtZTogewogICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbGFzdE5hbWU6IHsKICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFkZHJlc3M6IHsKICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNvbnRhY3Q6IHsKICAgICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNyZWF0ZWRBdDogewogICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsCiAgICAgICAgICAgICAgICBmb3JtYXQ6ICdkYXRlLXRpbWUnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZWRBdDogewogICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsCiAgICAgICAgICAgICAgICBmb3JtYXQ6ICdkYXRlLXRpbWUnCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIDUwMDogewogICAgICAgICAgICBpbnRlcm5hbDogewogICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sCn07CmBgYAoKT3BlbiBgaHR0cDovL2A8YXBwX2hvc3Q+YDpgPGFwcF9wb3J0PmAvc3dhZ2dlcmAgaW4geW91ciBicm93c2VyIHRvIHZpZXcgdGhlIGRvY3VtZW50YXRpb24uCgojIFZlcnNpb24gY2hhbmdlcwoKIyMgdjIuMC4wCgojIyMjIEFkZGVkIFJlcXVlc3QgUGFyYW1ldGVyIFZhbGlkYXRpb24gRnVuY3Rpb24KCi0gVXNlIGB2YWxpZGF0aW9uYCBmdW5jdGlvbiBleHBvcnRlZCBmcm9tIHRoaXMgbW9kdWxlIHRvIHZhbGlkYXRlIHJlcXVlc3QgcGFyYW1zLgoKYGBgamF2YXNjcmlwdAondXNlIHN0cmljdCc7CmNvbnN0IFJvdXRlciA9IHJlcXVpcmUoJ2tvYS1yb3V0ZXInKTsKY29uc3Qgcm91dGVyID0gbmV3IFJvdXRlcigpOwpjb25zdCB1c2VyQ29udHJvbGxlciA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXIvdXNlcicpOwpjb25zdCB7dmFsaWRhdGlvbn0gPSByZXF1aXJlKCdzd2FnZ2VyLWdlbmVyYXRvci1rb2EnKTsKdmFyIHJlcXVlc3RNb2RlbCA9IHJlcXVpcmUoJy4uL3JlcXVlc3RNb2RlbC91c2VycycpOwpjb25zdCBCQVNFX1VSTCA9IGAvdXNlcnNgOwoKcm91dGVyLnBvc3QoYCR7QkFTRV9VUkx9L2AsIHZhbGlkYXRpb24ocmVxdWVzdE1vZGVsWzBdKSwgdXNlckNvbnRyb2xsZXIuY3JlYXRlVXNlcik7Cgptb2R1bGUuZXhwb3J0cyA9IHJvdXRlcjsKCmBgYAoKIyMgUmVxdWlyZW1lbnRzCgotIE5vZGUgdjEwIG9yIGFib3ZlCi0gS09BIDIgb3IgYWJvdmUKCiMjIENvbnRyaWJ1dG9ycwoKW1Zpa2FzIFBhdGlkYXJdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi92aWthcy1wYXRpZGFyLTAxMDYvKQo= readmeEtag: '"55dcea9b3ce1e6c0bb35087ded7c7786c9e2ea3a"' readmeLastModified: Fri, 06 Mar 2020 13:53:57 GMT repositoryId: 201899371 description: >- Allows you to programatically annotate your koa models with swagger info and then generate and validate your json spec file created: '2019-08-12T09:28:50Z' updated: '2024-01-30T16:14:31Z' language: TypeScript archived: false stars: 10 watchers: 3 forks: 4 owner: SystangoTechnologies logo: https://avatars.githubusercontent.com/u/24825108?v=4 license: MIT repoEtag: '"66b3ef0866da08f174a350c47a4315f4d79263822d5177b36253d605e94050f1"' repoLastModified: Tue, 30 Jan 2024 16:14:31 GMT foundInMaster: true category: - Data Validators - Parsers id: b33cb0aa622983134244f762ccab16c6 - source: openapi3 tags repository: https://github.com/ckaratzas/vertx-openapi-spec-generator v3: true repositoryMetadata: base64Readme: >- IyBWZXJ0eC1PcGVuQXBpLVNwZWMtR2VuZXJhdG9yClRoZSBwdXJwb3NlIG9mIHRoaXMgcmVwb3NpdG9yeSBpcyB0byBmYWNpbGl0YXRlIHRoZSBhdXRvbWF0aWMgZ2VuZXJhdGlvbiBvZiBPcGVuQVBJIDMgc3BlYyBmcm9tICJyZXN0LWxpa2UiIHZlcnR4IHJvdXRlcy4gVGhlIGZ1bmN0aW9uYWwgbmF0dXJlIG9mIHZlcnR4Cm1ha2VzIHRoaXMgam9iIGRpZmZpY3VsdCB0aHVzIG5vIHNlcmlvdXMgb2ZmaWNpYWwgdG9vbCBleGlzdHMgYXQgdGhlIG1vbWVudC4gSW4gb3JkZXIgdG8gbWl0aWdhdGUgdGhlIHByb2JsZW0gd2UgdHJ5IHRvIGRlc2NyaWJlIHRoZSAKZ2VuZXJhbCBhbGdvcml0aG0gYW5kIGFzc3VtcHRpb25zIG1hZGU6CgoxLiBHZW5lcmF0aW9uIG9mIE9wZW5BUEkgMyBTcGVjIGlzIGdlbmVyYXRlZCBhdCBydW50aW1lIGJ5IGludHJvc3BlY3Rpb24gb2YgdGhlIHZlcnR4IFJvdXRlciBPYmplY3Qgd2hpY2ggY29udGFpbnMgdGhlIHJvdXRlcy4gSWYgc29tZW9uZSB3aXNoZXMKdG8gcGVyZm9ybSBnZW5lcmF0aW9uIGF0IGJ1aWxkIHRpbWUsIGEgcG9zc2libGUgc29sdXRpb24gaXMgdG8gZ2VuZXJhdGUgdGhlIHJvdXRlIGluIGEgdW5pdCB0ZXN0IGFuZCBjcmVhdGUgdGhlIHNwZWMgZHVyaW5nIHRlc3QgZXhlY3V0aW9uLgoyLiBFYWNoIHZlcnR4IHJvdXRlIHRoYXQgbmVlZHMgdG8gdGFrZSBwYXJ0IGluIHRoZSBzcGVjIG11c3QgY29udGFpbiBhdCBtb3N0IG9uZSBoYW5kbGVyIHRoYXQgZGVsZWdhdGVzIHRvIGEgbWV0aG9kIHRoYXQgaXMgZGVjb3JhdGVkIHdpdGgKYW4gJ2lvLnN3YWdnZXIudjMub2FzLmFubm90YXRpb25zLk9wZXJhdGlvbicgYW5ub3RhdGlvbi4gVGhlIGhhbmRsZXIgaXRzZWxmIG11c3Qgbm90IGNsb3NlIGluIG5vdGhpbmcgYnV0IHRoZSByb3V0aW5nIGNvbnRleHQuIFRoaXMgd2lsbCBhaWQKdGhlIGludHJvc3BlY3Rpb24gb2YgdGhlIGFjdHVhbCB0eXBlIGxvY2F0ZWQgaW4gdGhlIEpWTSBzeW50aGV0aWMgY2xhc3Mgb2YgdGhlIGhhbmRsZXIgd2hpY2ggYWN0dWFsbHkgY29udGFpbnMgdGhlIGFubm90YXRlZCBtZXRob2QuClRoYXQgaW1wbGllcyB0aGF0IGEgcm91dGUgY2FuIGhhdmUgbWFueSBpbnRlcm1lZGlhdGUgaGFuZGxlcnMgZGVwZW5kaW5nIG9uIHRoZSB1c2UgY2FzZSBhbmQgc3RpbGwgZXhwcmVzcyB0aGUgb3ZlcmFsbCByZXN1bHQgdGhyb3VnaCBhbgonaW8uc3dhZ2dlci52My5vYXMuYW5ub3RhdGlvbnMuT3BlcmF0aW9uJyBhbm5vdGF0aW9uIGZyb20gdGhlIHNlbGVjdGVkIGhhbmRsZXIuCjMuIEFsbCBpby5zd2FnZ2VyLnYzLm9hcy5hbm5vdGF0aW9ucy5PcGVyYXRpb24nIGFubm90YXRpb25zIG11c3QgY29udGFpbiB0aGUgJ21ldGhvZCcgYXR0cmlidXRlIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gYmUgY3Jvc3MtbWF0Y2hlZCB3aXRoIHRoZSByb3V0ZQpkZWZpbml0aW9uIChlLmcgcm91dGUuaGVhZCguLi4uKSAtPiBhbm5vdGF0aW9uIGluIG1ldGhvZCBtdXN0IGhhdmUgdGhlICdIRUFEJyB2YWx1ZSkKNC4gVGhlIGdlbmVyYXRvciBhdCB0aGUgbW9tZW50IHRyaWVzIHRvIGZvY3VzIG9uIE9wZXJhdGlvbnMgYW5kIGp1c3QgcHJvdmlkZSB0aGUgYmFzaWNzIGZvciBvdGhlciBwYXJ0cyBvZiB0aGUgc3BlYyAoSW5mbywgQ29udGFjdHMsIFNlcnZlcykgc2luY2UKbW9zdCBvZiB0aGVtIGFyZSBjb25maWd1cmF0aW9uIHNwZWNpZmljLgo1LiBNYXBwaW5ncyBiZXR3ZWVuIGFubm90YXRpb25zIGFuZCBPcGVuQVBJIDMgbW9kZWwgYXJlIG1pc3NpbmcgYnV0IHRoZSBvdmVyYWxsIGNvbmNlcHQgbWFrZXMgZXh0ZW5zaW9ucyBlYXNpbHkgYWRqdXN0ZWQuCjYuIE5PIEpBWC1SUyBhbm5vdGF0aW9ucyBtdXN0IGJlIHVzZWQuCgojIEV4YW1wbGUgQ2FzZQpBbiBhY3R1YWwgYXBwbGljYXRpb24gb2YgdGhlc2UgZnVuY3Rpb25zIGNhbiBiZSBmb3VuZCBhdDoKCmh0dHBzOi8vZ2l0aHViLmNvbS9ja2FyYXR6YXMvdHVzLXNlcnZlci1pbXBsZW1lbnRhdGlvbi9ibG9iL21hc3Rlci9zcmMvbWFpbi9qYXZhL2NvbS90dXMvb3NzL3NlcnZlci9jb3JlL1NlcnZlclZlcnRpY2xlLmphdmEgZm9yIGdlbmVyYXRpbmcgdGhlIHNwZWMKYW5kCmh0dHBzOi8vZ2l0aHViLmNvbS9ja2FyYXR6YXMvdHVzLXNlcnZlci1pbXBsZW1lbnRhdGlvbi9ibG9iL21hc3Rlci9zcmMvbWFpbi9qYXZhL2NvbS90dXMvb3NzL3NlcnZlci9jb3JlLypIYW5kbGVyLmphdmEgZm9yIHRoZSB1c2FnZSBvZiBhbm5vdGF0aW9ucyBpbiBoYW5kbGVycy4KCiMgQ3VycmVudCBTdGF0dXMKQnkgbm8gbWVhbnMgdGhlIHdob2xlIE9wZW5BUEkgMyBzcGVjIGlzIGNvdmVyZWQuIFRoZSBjdXJyZW50IGNvZGViYXNlIGNhbiBiZSBleHRlbmRlZCBiYXNlZCBvbiB0aGUgYWN0dWFsIHVzZSBjYXNlcyBhbmQgc3VwcG9ydCBtb3JlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4KVGhpcyByZXBvc2l0b3J5IGNhbiBiZSB1c2VkIGFzIGEgYmFzaXMgdG8gaW5zcGlyZSB0aGUgZGVzaWduIG9mIG9mZmljaWFsIHZlcnR4ICJvcGVuYXBpLWVuYWJsZWQiIHZlcnR4IHJvdXRlcyBpbiBvcmRlciB0byBtYWtlIHRoZSBpbnRyb3NwZWN0aW9uIGVhc2llciBhbmQKbW9yZSBlZmZlY3RpdmUuIAogCgo= readmeEtag: '"1e9c971aabf2a134539bc135ce13e7c0bc062014"' readmeLastModified: Fri, 16 Feb 2018 14:55:56 GMT repositoryId: 120278582 description: Runtime Generation of OpenApi 3 specification from vertx routes. created: '2018-02-05T08:50:42Z' updated: '2024-12-20T07:21:18Z' language: Java archived: false stars: 10 watchers: 1 forks: 5 owner: ckaratzas logo: https://avatars.githubusercontent.com/u/35725079?v=4 license: MIT repoEtag: '"401f941b18da3518720b203a1ab46b0eda797468e57df95faac4112b7de2a6ee"' repoLastModified: Fri, 20 Dec 2024 07:21:18 GMT foundInMaster: true category: - Server - Parsers id: a791ae1cc5890604063158dd13b67264 - source: openapi3 tags repository: https://github.com/elasticemail/elasticemail-python v3: true id: 04c0888f3dcc21c80cfe5e2ae425417f repositoryMetadata: base64Readme: >- IyBFbGFzdGljRW1haWwKVGhpcyBBUEkgaXMgYmFzZWQgb24gdGhlIFJFU1QgQVBJIGFyY2hpdGVjdHVyZSwgYWxsb3dpbmcgdGhlIHVzZXIgdG8gZWFzaWx5IG1hbmFnZSB0aGVpciBkYXRhIHdpdGggdGhpcyByZXNvdXJjZS1iYXNlZCBhcHByb2FjaC4NCg0KRXZlcnkgQVBJIGNhbGwgaXMgZXN0YWJsaXNoZWQgb24gd2hpY2ggc3BlY2lmaWMgcmVxdWVzdCB0eXBlIChHRVQsIFBPU1QsIFBVVCwgREVMRVRFKSB3aWxsIGJlIHVzZWQuDQoNClRoZSBBUEkgaGFzIGEgbGltaXQgb2YgMjAgY29uY3VycmVudCBjb25uZWN0aW9ucyBhbmQgYSBoYXJkIHRpbWVvdXQgb2YgNjAwIHNlY29uZHMgcGVyIHJlcXVlc3QuDQoNClRvIHN0YXJ0IHVzaW5nIHRoaXMgQVBJLCB5b3Ugd2lsbCBuZWVkIHlvdXIgQWNjZXNzIFRva2VuIChhdmFpbGFibGUgW2hlcmVdKGh0dHBzOi8vYXBwLmVsYXN0aWNlbWFpbC5jb20vbWFya2V0aW5nL3NldHRpbmdzL25ldy9tYW5hZ2UtYXBpKSkuIFJlbWVtYmVyIHRvIGtlZXAgaXQgc2FmZS4gUmVxdWlyZWQgYWNjZXNzIGxldmVscyBhcmUgbGlzdGVkIGluIHRoZSBnaXZlbiByZXF1ZXN04oCZcyBkZXNjcmlwdGlvbi4NCg0KRG93bmxvYWRhYmxlIGxpYnJhcnkgY2xpZW50cyBjYW4gYmUgZm91bmQgaW4gb3VyIEdpdGh1YiByZXBvc2l0b3J5IFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vRWxhc3RpY0VtYWlsL2VsYXN0aWNlbWFpbC1weXRob24pCgpUaGlzIFB5dGhvbiBwYWNrYWdlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkgcHJvamVjdDoKCi0gQVBJIHZlcnNpb246IDQuMC4wCi0gUGFja2FnZSB2ZXJzaW9uOiA0LjEuNAotIEdlbmVyYXRvciB2ZXJzaW9uOiA3LjUuMAotIEJ1aWxkIHBhY2thZ2U6IG9yZy5vcGVuYXBpdG9vbHMuY29kZWdlbi5sYW5ndWFnZXMuUHl0aG9uQ2xpZW50Q29kZWdlbgoKIyMgUmVxdWlyZW1lbnRzLgoKUHl0aG9uIDMuNysKCiMjIEluc3RhbGxhdGlvbiAmIFVzYWdlCiMjIyBwaXAgaW5zdGFsbAoKSWYgdGhlIHB5dGhvbiBwYWNrYWdlIGlzIGhvc3RlZCBvbiBhIHJlcG9zaXRvcnksIHlvdSBjYW4gaW5zdGFsbCBkaXJlY3RseSB1c2luZzoKCmBgYHNoCnBpcCBpbnN0YWxsIGdpdCtodHRwczovL2dpdGh1Yi5jb20vZWxhc3RpY2VtYWlsL2VsYXN0aWNlbWFpbC1weXRob24uZ2l0CmBgYAooeW91IG1heSBuZWVkIHRvIHJ1biBgcGlwYCB3aXRoIHJvb3QgcGVybWlzc2lvbjogYHN1ZG8gcGlwIGluc3RhbGwgZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9lbGFzdGljZW1haWwvZWxhc3RpY2VtYWlsLXB5dGhvbi5naXRgKQoKVGhlbiBpbXBvcnQgdGhlIHBhY2thZ2U6CmBgYHB5dGhvbgppbXBvcnQgRWxhc3RpY0VtYWlsCmBgYAoKIyMjIFNldHVwdG9vbHMKCkluc3RhbGwgdmlhIFtTZXR1cHRvb2xzXShodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2V0dXB0b29scykuCgpgYGBzaApweXRob24gc2V0dXAucHkgaW5zdGFsbCAtLXVzZXIKYGBgCihvciBgc3VkbyBweXRob24gc2V0dXAucHkgaW5zdGFsbGAgdG8gaW5zdGFsbCB0aGUgcGFja2FnZSBmb3IgYWxsIHVzZXJzKQoKVGhlbiBpbXBvcnQgdGhlIHBhY2thZ2U6CmBgYHB5dGhvbgppbXBvcnQgRWxhc3RpY0VtYWlsCmBgYAoKIyMjIFRlc3RzCgpFeGVjdXRlIGBweXRlc3RgIHRvIHJ1biB0aGUgdGVzdHMuCgojIyBHZXR0aW5nIFN0YXJ0ZWQKClBsZWFzZSBmb2xsb3cgdGhlIFtpbnN0YWxsYXRpb24gcHJvY2VkdXJlXSgjaW5zdGFsbGF0aW9uLS11c2FnZSkgYW5kIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmc6CgpgYGBweXRob24KCmltcG9ydCBFbGFzdGljRW1haWwKZnJvbSBFbGFzdGljRW1haWwucmVzdCBpbXBvcnQgQXBpRXhjZXB0aW9uCmZyb20gcHByaW50IGltcG9ydCBwcHJpbnQKCiMgRGVmaW5pbmcgdGhlIGhvc3QgaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIGh0dHBzOi8vYXBpLmVsYXN0aWNlbWFpbC5jb20vdjQKIyBTZWUgY29uZmlndXJhdGlvbi5weSBmb3IgYSBsaXN0IG9mIGFsbCBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpjb25maWd1cmF0aW9uID0gRWxhc3RpY0VtYWlsLkNvbmZpZ3VyYXRpb24oCiAgICBob3N0ID0gImh0dHBzOi8vYXBpLmVsYXN0aWNlbWFpbC5jb20vdjQiCikKCiMgVGhlIGNsaWVudCBtdXN0IGNvbmZpZ3VyZSB0aGUgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gcGFyYW1ldGVycwojIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgQVBJIHNlcnZlciBzZWN1cml0eSBwb2xpY3kuCiMgRXhhbXBsZXMgZm9yIGVhY2ggYXV0aCBtZXRob2QgYXJlIHByb3ZpZGVkIGJlbG93LCB1c2UgdGhlIGV4YW1wbGUgdGhhdAojIHNhdGlzZmllcyB5b3VyIGF1dGggdXNlIGNhc2UuCgojIENvbmZpZ3VyZSBBUEkga2V5IGF1dGhvcml6YXRpb246IGFwaWtleQpjb25maWd1cmF0aW9uLmFwaV9rZXlbJ2FwaWtleSddID0gb3MuZW52aXJvblsiQVBJX0tFWSJdCgojIFVuY29tbWVudCBiZWxvdyB0byBzZXR1cCBwcmVmaXggKGUuZy4gQmVhcmVyKSBmb3IgQVBJIGtleSwgaWYgbmVlZGVkCiMgY29uZmlndXJhdGlvbi5hcGlfa2V5X3ByZWZpeFsnYXBpa2V5J10gPSAnQmVhcmVyJwoKCiMgRW50ZXIgYSBjb250ZXh0IHdpdGggYW4gaW5zdGFuY2Ugb2YgdGhlIEFQSSBjbGllbnQKd2l0aCBFbGFzdGljRW1haWwuQXBpQ2xpZW50KGNvbmZpZ3VyYXRpb24pIGFzIGFwaV9jbGllbnQ6CiAgICAjIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgQVBJIGNsYXNzCiAgICBhcGlfaW5zdGFuY2UgPSBFbGFzdGljRW1haWwuQ2FtcGFpZ25zQXBpKGFwaV9jbGllbnQpCiAgICBuYW1lID0gJ25hbWVfZXhhbXBsZScgIyBzdHIgfCBOYW1lIG9mIENhbXBhaWduIHRvIGRlbGV0ZQoKICAgIHRyeToKICAgICAgICAjIERlbGV0ZSBDYW1wYWlnbgogICAgICAgIGFwaV9pbnN0YW5jZS5jYW1wYWlnbnNfYnlfbmFtZV9kZWxldGUobmFtZSkKICAgIGV4Y2VwdCBBcGlFeGNlcHRpb24gYXMgZToKICAgICAgICBwcmludCgiRXhjZXB0aW9uIHdoZW4gY2FsbGluZyBDYW1wYWlnbnNBcGktPmNhbXBhaWduc19ieV9uYW1lX2RlbGV0ZTogJXNcbiIgJSBlKQoKYGBgCgoKIyMgRXhhbXBsZXMKCkZ1bmN0aW9uIHx8Ci0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gClthZGRDYW1wYWlnbl0oZXhhbXBsZXMvZnVuY3Rpb25zL2FkZENhbXBhaWduLnB5KSB8IFtyZWFkbWVdKGV4YW1wbGVzL2Z1bmN0aW9ucy9hZGRDYW1wYWlnbi5tZCkKW2FkZENvbnRhY3RzXShleGFtcGxlcy9mdW5jdGlvbnMvYWRkQ29udGFjdHMucHkpIHwgW3JlYWRtZV0oZXhhbXBsZXMvZnVuY3Rpb25zL2FkZENvbnRhY3RzLm1kKQpbYWRkTGlzdF0oZXhhbXBsZXMvZnVuY3Rpb25zL2FkZExpc3QucHkpIHwgW3JlYWRtZV0oZXhhbXBsZXMvZnVuY3Rpb25zL2FkZExpc3QubWQpClthZGRUZW1wbGF0ZV0oZXhhbXBsZXMvZnVuY3Rpb25zL2FkZFRlbXBsYXRlLnB5KSB8IFtyZWFkbWVdKGV4YW1wbGVzL2Z1bmN0aW9ucy9hZGRUZW1wbGF0ZS5tZCkKW2RlbGV0ZUNhbXBhaWduXShleGFtcGxlcy9mdW5jdGlvbnMvZGVsZXRlQ2FtcGFpZ24ucHkpIHwgW3JlYWRtZV0oZXhhbXBsZXMvZnVuY3Rpb25zL2RlbGV0ZUNhbXBhaWduLm1kKQpbZGVsZXRlQ29udGFjdHNdKGV4YW1wbGVzL2Z1bmN0aW9ucy9kZWxldGVDb250YWN0cy5weSkgfCBbcmVhZG1lXShleGFtcGxlcy9mdW5jdGlvbnMvZGVsZXRlQ29udGFjdHMubWQpCltkZWxldGVMaXN0XShleGFtcGxlcy9mdW5jdGlvbnMvZGVsZXRlTGlzdC5weSkgfCBbcmVhZG1lXShleGFtcGxlcy9mdW5jdGlvbnMvZGVsZXRlTGlzdC5tZCkKW2RlbGV0ZVRlbXBsYXRlXShleGFtcGxlcy9mdW5jdGlvbnMvZGVsZXRlVGVtcGxhdGUucHkpIHwgW3JlYWRtZV0oZXhhbXBsZXMvZnVuY3Rpb25zL2RlbGV0ZVRlbXBsYXRlLm1kKQpbZXhwb3J0Q29udGFjdHNdKGV4YW1wbGVzL2Z1bmN0aW9ucy9leHBvcnRDb250YWN0cy5weSkgfCBbcmVhZG1lXShleGFtcGxlcy9mdW5jdGlvbnMvZXhwb3J0Q29udGFjdHMubWQpCltsb2FkQ2FtcGFpZ25dKGV4YW1wbGVzL2Z1bmN0aW9ucy9sb2FkQ2FtcGFpZ24ucHkpIHwgW3JlYWRtZV0oZXhhbXBsZXMvZnVuY3Rpb25zL2xvYWRDYW1wYWlnbi5tZCkKW2xvYWRDYW1wYWlnbnNTdGF0c10oZXhhbXBsZXMvZnVuY3Rpb25zL2xvYWRDYW1wYWlnbnNTdGF0cy5weSkgfCBbcmVhZG1lXShleGFtcGxlcy9mdW5jdGlvbnMvbG9hZENhbXBhaWduc1N0YXRzLm1kKQpbbG9hZENoYW5uZWxzU3RhdHNdKGV4YW1wbGVzL2Z1bmN0aW9ucy9sb2FkQ2hhbm5lbHNTdGF0cy5weSkgfCBbcmVhZG1lXShleGFtcGxlcy9mdW5jdGlvbnMvbG9hZENoYW5uZWxzU3RhdHMubWQpCltsb2FkTGlzdF0oZXhhbXBsZXMvZnVuY3Rpb25zL2xvYWRMaXN0LnB5KSB8IFtyZWFkbWVdKGV4YW1wbGVzL2Z1bmN0aW9ucy9sb2FkTGlzdC5tZCkKW2xvYWRTdGF0aXN0aWNzXShleGFtcGxlcy9mdW5jdGlvbnMvbG9hZFN0YXRpc3RpY3MucHkpIHwgW3JlYWRtZV0oZXhhbXBsZXMvZnVuY3Rpb25zL2xvYWRTdGF0aXN0aWNzLm1kKQpbbG9hZFRlbXBsYXRlXShleGFtcGxlcy9mdW5jdGlvbnMvbG9hZFRlbXBsYXRlLnB5KSB8IFtyZWFkbWVdKGV4YW1wbGVzL2Z1bmN0aW9ucy9sb2FkVGVtcGxhdGUubWQpCltzZW5kQnVsa0VtYWlsc10oZXhhbXBsZXMvZnVuY3Rpb25zL3NlbmRCdWxrRW1haWxzLnB5KSB8IFtyZWFkbWVdKGV4YW1wbGVzL2Z1bmN0aW9ucy9zZW5kQnVsa0VtYWlscy5tZCkKW3NlbmRUcmFuc2FjdGlvbmFsRW1haWxzXShleGFtcGxlcy9mdW5jdGlvbnMvc2VuZFRyYW5zYWN0aW9uYWxFbWFpbHMucHkpIHwgW3JlYWRtZV0oZXhhbXBsZXMvZnVuY3Rpb25zL3NlbmRUcmFuc2FjdGlvbmFsRW1haWxzLm1kKQpbdXBkYXRlQ2FtcGFpZ25dKGV4YW1wbGVzL2Z1bmN0aW9ucy91cGRhdGVDYW1wYWlnbi5weSkgfCBbcmVhZG1lXShleGFtcGxlcy9mdW5jdGlvbnMvdXBkYXRlQ2FtcGFpZ24ubWQpClt1cGxvYWRDb250YWN0c10oZXhhbXBsZXMvZnVuY3Rpb25zL3VwbG9hZENvbnRhY3RzLnB5KSB8IFtyZWFkbWVdKGV4YW1wbGVzL2Z1bmN0aW9ucy91cGxvYWRDb250YWN0cy5tZCkKCiMjIERvY3VtZW50YXRpb24gZm9yIEFQSSBFbmRwb2ludHMKCkFsbCBVUklzIGFyZSByZWxhdGl2ZSB0byAqaHR0cHM6Ly9hcGkuZWxhc3RpY2VtYWlsLmNvbS92NCoKCkNsYXNzIHwgTWV0aG9kIHwgSFRUUCByZXF1ZXN0IHwgRGVzY3JpcHRpb24KLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tCipDYW1wYWlnbnNBcGkqIHwgWyoqY2FtcGFpZ25zX2J5X25hbWVfZGVsZXRlKipdKGRvY3MvQ2FtcGFpZ25zQXBpLm1kI2NhbXBhaWduc19ieV9uYW1lX2RlbGV0ZSkgfCAqKkRFTEVURSoqIC9jYW1wYWlnbnMve25hbWV9IHwgRGVsZXRlIENhbXBhaWduCipDYW1wYWlnbnNBcGkqIHwgWyoqY2FtcGFpZ25zX2J5X25hbWVfZ2V0KipdKGRvY3MvQ2FtcGFpZ25zQXBpLm1kI2NhbXBhaWduc19ieV9uYW1lX2dldCkgfCAqKkdFVCoqIC9jYW1wYWlnbnMve25hbWV9IHwgTG9hZCBDYW1wYWlnbgoqQ2FtcGFpZ25zQXBpKiB8IFsqKmNhbXBhaWduc19ieV9uYW1lX3BhdXNlX3B1dCoqXShkb2NzL0NhbXBhaWduc0FwaS5tZCNjYW1wYWlnbnNfYnlfbmFtZV9wYXVzZV9wdXQpIHwgKipQVVQqKiAvY2FtcGFpZ25zL3tuYW1lfS9wYXVzZSB8IFBhdXNlIENhbXBhaWduCipDYW1wYWlnbnNBcGkqIHwgWyoqY2FtcGFpZ25zX2J5X25hbWVfcHV0KipdKGRvY3MvQ2FtcGFpZ25zQXBpLm1kI2NhbXBhaWduc19ieV9uYW1lX3B1dCkgfCAqKlBVVCoqIC9jYW1wYWlnbnMve25hbWV9IHwgVXBkYXRlIENhbXBhaWduCipDYW1wYWlnbnNBcGkqIHwgWyoqY2FtcGFpZ25zX2dldCoqXShkb2NzL0NhbXBhaWduc0FwaS5tZCNjYW1wYWlnbnNfZ2V0KSB8ICoqR0VUKiogL2NhbXBhaWducyB8IExvYWQgQ2FtcGFpZ25zCipDYW1wYWlnbnNBcGkqIHwgWyoqY2FtcGFpZ25zX3Bvc3QqKl0oZG9jcy9DYW1wYWlnbnNBcGkubWQjY2FtcGFpZ25zX3Bvc3QpIHwgKipQT1NUKiogL2NhbXBhaWducyB8IEFkZCBDYW1wYWlnbgoqQ29udGFjdHNBcGkqIHwgWyoqY29udGFjdHNfYnlfZW1haWxfZGVsZXRlKipdKGRvY3MvQ29udGFjdHNBcGkubWQjY29udGFjdHNfYnlfZW1haWxfZGVsZXRlKSB8ICoqREVMRVRFKiogL2NvbnRhY3RzL3tlbWFpbH0gfCBEZWxldGUgQ29udGFjdAoqQ29udGFjdHNBcGkqIHwgWyoqY29udGFjdHNfYnlfZW1haWxfZ2V0KipdKGRvY3MvQ29udGFjdHNBcGkubWQjY29udGFjdHNfYnlfZW1haWxfZ2V0KSB8ICoqR0VUKiogL2NvbnRhY3RzL3tlbWFpbH0gfCBMb2FkIENvbnRhY3QKKkNvbnRhY3RzQXBpKiB8IFsqKmNvbnRhY3RzX2J5X2VtYWlsX3B1dCoqXShkb2NzL0NvbnRhY3RzQXBpLm1kI2NvbnRhY3RzX2J5X2VtYWlsX3B1dCkgfCAqKlBVVCoqIC9jb250YWN0cy97ZW1haWx9IHwgVXBkYXRlIENvbnRhY3QKKkNvbnRhY3RzQXBpKiB8IFsqKmNvbnRhY3RzX2RlbGV0ZV9wb3N0KipdKGRvY3MvQ29udGFjdHNBcGkubWQjY29udGFjdHNfZGVsZXRlX3Bvc3QpIHwgKipQT1NUKiogL2NvbnRhY3RzL2RlbGV0ZSB8IERlbGV0ZSBDb250YWN0cyBCdWxrCipDb250YWN0c0FwaSogfCBbKipjb250YWN0c19leHBvcnRfYnlfaWRfc3RhdHVzX2dldCoqXShkb2NzL0NvbnRhY3RzQXBpLm1kI2NvbnRhY3RzX2V4cG9ydF9ieV9pZF9zdGF0dXNfZ2V0KSB8ICoqR0VUKiogL2NvbnRhY3RzL2V4cG9ydC97aWR9L3N0YXR1cyB8IENoZWNrIEV4cG9ydCBTdGF0dXMKKkNvbnRhY3RzQXBpKiB8IFsqKmNvbnRhY3RzX2V4cG9ydF9wb3N0KipdKGRvY3MvQ29udGFjdHNBcGkubWQjY29udGFjdHNfZXhwb3J0X3Bvc3QpIHwgKipQT1NUKiogL2NvbnRhY3RzL2V4cG9ydCB8IEV4cG9ydCBDb250YWN0cwoqQ29udGFjdHNBcGkqIHwgWyoqY29udGFjdHNfZ2V0KipdKGRvY3MvQ29udGFjdHNBcGkubWQjY29udGFjdHNfZ2V0KSB8ICoqR0VUKiogL2NvbnRhY3RzIHwgTG9hZCBDb250YWN0cwoqQ29udGFjdHNBcGkqIHwgWyoqY29udGFjdHNfaW1wb3J0X3Bvc3QqKl0oZG9jcy9Db250YWN0c0FwaS5tZCNjb250YWN0c19pbXBvcnRfcG9zdCkgfCAqKlBPU1QqKiAvY29udGFjdHMvaW1wb3J0IHwgVXBsb2FkIENvbnRhY3RzCipDb250YWN0c0FwaSogfCBbKipjb250YWN0c19wb3N0KipdKGRvY3MvQ29udGFjdHNBcGkubWQjY29udGFjdHNfcG9zdCkgfCAqKlBPU1QqKiAvY29udGFjdHMgfCBBZGQgQ29udGFjdAoqRG9tYWluc0FwaSogfCBbKipkb21haW5zX2J5X2RvbWFpbl9kZWxldGUqKl0oZG9jcy9Eb21haW5zQXBpLm1kI2RvbWFpbnNfYnlfZG9tYWluX2RlbGV0ZSkgfCAqKkRFTEVURSoqIC9kb21haW5zL3tkb21haW59IHwgRGVsZXRlIERvbWFpbgoqRG9tYWluc0FwaSogfCBbKipkb21haW5zX2J5X2RvbWFpbl9nZXQqKl0oZG9jcy9Eb21haW5zQXBpLm1kI2RvbWFpbnNfYnlfZG9tYWluX2dldCkgfCAqKkdFVCoqIC9kb21haW5zL3tkb21haW59IHwgTG9hZCBEb21haW4KKkRvbWFpbnNBcGkqIHwgWyoqZG9tYWluc19ieV9kb21haW5fcHV0KipdKGRvY3MvRG9tYWluc0FwaS5tZCNkb21haW5zX2J5X2RvbWFpbl9wdXQpIHwgKipQVVQqKiAvZG9tYWlucy97ZG9tYWlufSB8IFVwZGF0ZSBEb21haW4KKkRvbWFpbnNBcGkqIHwgWyoqZG9tYWluc19ieV9kb21haW5fcmVzdHJpY3RlZF9nZXQqKl0oZG9jcy9Eb21haW5zQXBpLm1kI2RvbWFpbnNfYnlfZG9tYWluX3Jlc3RyaWN0ZWRfZ2V0KSB8ICoqR0VUKiogL2RvbWFpbnMve2RvbWFpbn0vcmVzdHJpY3RlZCB8IENoZWNrIGZvciBkb21haW4gcmVzdHJpY3Rpb24KKkRvbWFpbnNBcGkqIHwgWyoqZG9tYWluc19ieV9kb21haW5fdmVyaWZpY2F0aW9uX3B1dCoqXShkb2NzL0RvbWFpbnNBcGkubWQjZG9tYWluc19ieV9kb21haW5fdmVyaWZpY2F0aW9uX3B1dCkgfCAqKlBVVCoqIC9kb21haW5zL3tkb21haW59L3ZlcmlmaWNhdGlvbiB8IFZlcmlmeSBEb21haW4KKkRvbWFpbnNBcGkqIHwgWyoqZG9tYWluc19ieV9lbWFpbF9kZWZhdWx0X3BhdGNoKipdKGRvY3MvRG9tYWluc0FwaS5tZCNkb21haW5zX2J5X2VtYWlsX2RlZmF1bHRfcGF0Y2gpIHwgKipQQVRDSCoqIC9kb21haW5zL3tlbWFpbH0vZGVmYXVsdCB8IFNldCBEZWZhdWx0CipEb21haW5zQXBpKiB8IFsqKmRvbWFpbnNfZ2V0KipdKGRvY3MvRG9tYWluc0FwaS5tZCNkb21haW5zX2dldCkgfCAqKkdFVCoqIC9kb21haW5zIHwgTG9hZCBEb21haW5zCipEb21haW5zQXBpKiB8IFsqKmRvbWFpbnNfcG9zdCoqXShkb2NzL0RvbWFpbnNBcGkubWQjZG9tYWluc19wb3N0KSB8ICoqUE9TVCoqIC9kb21haW5zIHwgQWRkIERvbWFpbgoqRW1haWxzQXBpKiB8IFsqKmVtYWlsc19ieV9tc2dpZF92aWV3X2dldCoqXShkb2NzL0VtYWlsc0FwaS5tZCNlbWFpbHNfYnlfbXNnaWRfdmlld19nZXQpIHwgKipHRVQqKiAvZW1haWxzL3ttc2dpZH0vdmlldyB8IFZpZXcgRW1haWwKKkVtYWlsc0FwaSogfCBbKiplbWFpbHNfYnlfdHJhbnNhY3Rpb25pZF9zdGF0dXNfZ2V0KipdKGRvY3MvRW1haWxzQXBpLm1kI2VtYWlsc19ieV90cmFuc2FjdGlvbmlkX3N0YXR1c19nZXQpIHwgKipHRVQqKiAvZW1haWxzL3t0cmFuc2FjdGlvbmlkfS9zdGF0dXMgfCBHZXQgU3RhdHVzCipFbWFpbHNBcGkqIHwgWyoqZW1haWxzX21lcmdlZmlsZV9wb3N0KipdKGRvY3MvRW1haWxzQXBpLm1kI2VtYWlsc19tZXJnZWZpbGVfcG9zdCkgfCAqKlBPU1QqKiAvZW1haWxzL21lcmdlZmlsZSB8IFNlbmQgQnVsayBFbWFpbHMgQ1NWCipFbWFpbHNBcGkqIHwgWyoqZW1haWxzX3Bvc3QqKl0oZG9jcy9FbWFpbHNBcGkubWQjZW1haWxzX3Bvc3QpIHwgKipQT1NUKiogL2VtYWlscyB8IFNlbmQgQnVsayBFbWFpbHMKKkVtYWlsc0FwaSogfCBbKiplbWFpbHNfdHJhbnNhY3Rpb25hbF9wb3N0KipdKGRvY3MvRW1haWxzQXBpLm1kI2VtYWlsc190cmFuc2FjdGlvbmFsX3Bvc3QpIHwgKipQT1NUKiogL2VtYWlscy90cmFuc2FjdGlvbmFsIHwgU2VuZCBUcmFuc2FjdGlvbmFsIEVtYWlsCipFdmVudHNBcGkqIHwgWyoqZXZlbnRzX2J5X3RyYW5zYWN0aW9uaWRfZ2V0KipdKGRvY3MvRXZlbnRzQXBpLm1kI2V2ZW50c19ieV90cmFuc2FjdGlvbmlkX2dldCkgfCAqKkdFVCoqIC9ldmVudHMve3RyYW5zYWN0aW9uaWR9IHwgTG9hZCBFbWFpbCBFdmVudHMKKkV2ZW50c0FwaSogfCBbKipldmVudHNfY2hhbm5lbHNfYnlfbmFtZV9leHBvcnRfcG9zdCoqXShkb2NzL0V2ZW50c0FwaS5tZCNldmVudHNfY2hhbm5lbHNfYnlfbmFtZV9leHBvcnRfcG9zdCkgfCAqKlBPU1QqKiAvZXZlbnRzL2NoYW5uZWxzL3tuYW1lfS9leHBvcnQgfCBFeHBvcnQgQ2hhbm5lbCBFdmVudHMKKkV2ZW50c0FwaSogfCBbKipldmVudHNfY2hhbm5lbHNfYnlfbmFtZV9nZXQqKl0oZG9jcy9FdmVudHNBcGkubWQjZXZlbnRzX2NoYW5uZWxzX2J5X25hbWVfZ2V0KSB8ICoqR0VUKiogL2V2ZW50cy9jaGFubmVscy97bmFtZX0gfCBMb2FkIENoYW5uZWwgRXZlbnRzCipFdmVudHNBcGkqIHwgWyoqZXZlbnRzX2NoYW5uZWxzX2V4cG9ydF9ieV9pZF9zdGF0dXNfZ2V0KipdKGRvY3MvRXZlbnRzQXBpLm1kI2V2ZW50c19jaGFubmVsc19leHBvcnRfYnlfaWRfc3RhdHVzX2dldCkgfCAqKkdFVCoqIC9ldmVudHMvY2hhbm5lbHMvZXhwb3J0L3tpZH0vc3RhdHVzIHwgQ2hlY2sgQ2hhbm5lbCBFeHBvcnQgU3RhdHVzCipFdmVudHNBcGkqIHwgWyoqZXZlbnRzX2V4cG9ydF9ieV9pZF9zdGF0dXNfZ2V0KipdKGRvY3MvRXZlbnRzQXBpLm1kI2V2ZW50c19leHBvcnRfYnlfaWRfc3RhdHVzX2dldCkgfCAqKkdFVCoqIC9ldmVudHMvZXhwb3J0L3tpZH0vc3RhdHVzIHwgQ2hlY2sgRXhwb3J0IFN0YXR1cwoqRXZlbnRzQXBpKiB8IFsqKmV2ZW50c19leHBvcnRfcG9zdCoqXShkb2NzL0V2ZW50c0FwaS5tZCNldmVudHNfZXhwb3J0X3Bvc3QpIHwgKipQT1NUKiogL2V2ZW50cy9leHBvcnQgfCBFeHBvcnQgRXZlbnRzCipFdmVudHNBcGkqIHwgWyoqZXZlbnRzX2dldCoqXShkb2NzL0V2ZW50c0FwaS5tZCNldmVudHNfZ2V0KSB8ICoqR0VUKiogL2V2ZW50cyB8IExvYWQgRXZlbnRzCipGaWxlc0FwaSogfCBbKipmaWxlc19ieV9uYW1lX2RlbGV0ZSoqXShkb2NzL0ZpbGVzQXBpLm1kI2ZpbGVzX2J5X25hbWVfZGVsZXRlKSB8ICoqREVMRVRFKiogL2ZpbGVzL3tuYW1lfSB8IERlbGV0ZSBGaWxlCipGaWxlc0FwaSogfCBbKipmaWxlc19ieV9uYW1lX2dldCoqXShkb2NzL0ZpbGVzQXBpLm1kI2ZpbGVzX2J5X25hbWVfZ2V0KSB8ICoqR0VUKiogL2ZpbGVzL3tuYW1lfSB8IERvd25sb2FkIEZpbGUKKkZpbGVzQXBpKiB8IFsqKmZpbGVzX2J5X25hbWVfaW5mb19nZXQqKl0oZG9jcy9GaWxlc0FwaS5tZCNmaWxlc19ieV9uYW1lX2luZm9fZ2V0KSB8ICoqR0VUKiogL2ZpbGVzL3tuYW1lfS9pbmZvIHwgTG9hZCBGaWxlIERldGFpbHMKKkZpbGVzQXBpKiB8IFsqKmZpbGVzX2dldCoqXShkb2NzL0ZpbGVzQXBpLm1kI2ZpbGVzX2dldCkgfCAqKkdFVCoqIC9maWxlcyB8IExpc3QgRmlsZXMKKkZpbGVzQXBpKiB8IFsqKmZpbGVzX3Bvc3QqKl0oZG9jcy9GaWxlc0FwaS5tZCNmaWxlc19wb3N0KSB8ICoqUE9TVCoqIC9maWxlcyB8IFVwbG9hZCBGaWxlCipJbmJvdW5kUm91dGVBcGkqIHwgWyoqaW5ib3VuZHJvdXRlX2J5X2lkX2RlbGV0ZSoqXShkb2NzL0luYm91bmRSb3V0ZUFwaS5tZCNpbmJvdW5kcm91dGVfYnlfaWRfZGVsZXRlKSB8ICoqREVMRVRFKiogL2luYm91bmRyb3V0ZS97aWR9IHwgRGVsZXRlIFJvdXRlCipJbmJvdW5kUm91dGVBcGkqIHwgWyoqaW5ib3VuZHJvdXRlX2J5X2lkX2dldCoqXShkb2NzL0luYm91bmRSb3V0ZUFwaS5tZCNpbmJvdW5kcm91dGVfYnlfaWRfZ2V0KSB8ICoqR0VUKiogL2luYm91bmRyb3V0ZS97aWR9IHwgR2V0IFJvdXRlCipJbmJvdW5kUm91dGVBcGkqIHwgWyoqaW5ib3VuZHJvdXRlX2J5X2lkX3B1dCoqXShkb2NzL0luYm91bmRSb3V0ZUFwaS5tZCNpbmJvdW5kcm91dGVfYnlfaWRfcHV0KSB8ICoqUFVUKiogL2luYm91bmRyb3V0ZS97aWR9IHwgVXBkYXRlIFJvdXRlCipJbmJvdW5kUm91dGVBcGkqIHwgWyoqaW5ib3VuZHJvdXRlX2dldCoqXShkb2NzL0luYm91bmRSb3V0ZUFwaS5tZCNpbmJvdW5kcm91dGVfZ2V0KSB8ICoqR0VUKiogL2luYm91bmRyb3V0ZSB8IEdldCBSb3V0ZXMKKkluYm91bmRSb3V0ZUFwaSogfCBbKippbmJvdW5kcm91dGVfb3JkZXJfcHV0KipdKGRvY3MvSW5ib3VuZFJvdXRlQXBpLm1kI2luYm91bmRyb3V0ZV9vcmRlcl9wdXQpIHwgKipQVVQqKiAvaW5ib3VuZHJvdXRlL29yZGVyIHwgVXBkYXRlIFNvcnRpbmcKKkluYm91bmRSb3V0ZUFwaSogfCBbKippbmJvdW5kcm91dGVfcG9zdCoqXShkb2NzL0luYm91bmRSb3V0ZUFwaS5tZCNpbmJvdW5kcm91dGVfcG9zdCkgfCAqKlBPU1QqKiAvaW5ib3VuZHJvdXRlIHwgQ3JlYXRlIFJvdXRlCipMaXN0c0FwaSogfCBbKipsaXN0c19ieV9saXN0bmFtZV9jb250YWN0c19nZXQqKl0oZG9jcy9MaXN0c0FwaS5tZCNsaXN0c19ieV9saXN0bmFtZV9jb250YWN0c19nZXQpIHwgKipHRVQqKiAvbGlzdHMve2xpc3RuYW1lfS9jb250YWN0cyB8IExvYWQgQ29udGFjdHMgaW4gTGlzdAoqTGlzdHNBcGkqIHwgWyoqbGlzdHNfYnlfbmFtZV9jb250YWN0c19wb3N0KipdKGRvY3MvTGlzdHNBcGkubWQjbGlzdHNfYnlfbmFtZV9jb250YWN0c19wb3N0KSB8ICoqUE9TVCoqIC9saXN0cy97bmFtZX0vY29udGFjdHMgfCBBZGQgQ29udGFjdHMgdG8gTGlzdAoqTGlzdHNBcGkqIHwgWyoqbGlzdHNfYnlfbmFtZV9jb250YWN0c19yZW1vdmVfcG9zdCoqXShkb2NzL0xpc3RzQXBpLm1kI2xpc3RzX2J5X25hbWVfY29udGFjdHNfcmVtb3ZlX3Bvc3QpIHwgKipQT1NUKiogL2xpc3RzL3tuYW1lfS9jb250YWN0cy9yZW1vdmUgfCBSZW1vdmUgQ29udGFjdHMgZnJvbSBMaXN0CipMaXN0c0FwaSogfCBbKipsaXN0c19ieV9uYW1lX2RlbGV0ZSoqXShkb2NzL0xpc3RzQXBpLm1kI2xpc3RzX2J5X25hbWVfZGVsZXRlKSB8ICoqREVMRVRFKiogL2xpc3RzL3tuYW1lfSB8IERlbGV0ZSBMaXN0CipMaXN0c0FwaSogfCBbKipsaXN0c19ieV9uYW1lX2dldCoqXShkb2NzL0xpc3RzQXBpLm1kI2xpc3RzX2J5X25hbWVfZ2V0KSB8ICoqR0VUKiogL2xpc3RzL3tuYW1lfSB8IExvYWQgTGlzdAoqTGlzdHNBcGkqIHwgWyoqbGlzdHNfYnlfbmFtZV9wdXQqKl0oZG9jcy9MaXN0c0FwaS5tZCNsaXN0c19ieV9uYW1lX3B1dCkgfCAqKlBVVCoqIC9saXN0cy97bmFtZX0gfCBVcGRhdGUgTGlzdAoqTGlzdHNBcGkqIHwgWyoqbGlzdHNfZ2V0KipdKGRvY3MvTGlzdHNBcGkubWQjbGlzdHNfZ2V0KSB8ICoqR0VUKiogL2xpc3RzIHwgTG9hZCBMaXN0cwoqTGlzdHNBcGkqIHwgWyoqbGlzdHNfcG9zdCoqXShkb2NzL0xpc3RzQXBpLm1kI2xpc3RzX3Bvc3QpIHwgKipQT1NUKiogL2xpc3RzIHwgQWRkIExpc3QKKlNlY3VyaXR5QXBpKiB8IFsqKnNlY3VyaXR5X2FwaWtleXNfYnlfbmFtZV9kZWxldGUqKl0oZG9jcy9TZWN1cml0eUFwaS5tZCNzZWN1cml0eV9hcGlrZXlzX2J5X25hbWVfZGVsZXRlKSB8ICoqREVMRVRFKiogL3NlY3VyaXR5L2FwaWtleXMve25hbWV9IHwgRGVsZXRlIEFwaUtleQoqU2VjdXJpdHlBcGkqIHwgWyoqc2VjdXJpdHlfYXBpa2V5c19ieV9uYW1lX2dldCoqXShkb2NzL1NlY3VyaXR5QXBpLm1kI3NlY3VyaXR5X2FwaWtleXNfYnlfbmFtZV9nZXQpIHwgKipHRVQqKiAvc2VjdXJpdHkvYXBpa2V5cy97bmFtZX0gfCBMb2FkIEFwaUtleQoqU2VjdXJpdHlBcGkqIHwgWyoqc2VjdXJpdHlfYXBpa2V5c19ieV9uYW1lX3B1dCoqXShkb2NzL1NlY3VyaXR5QXBpLm1kI3NlY3VyaXR5X2FwaWtleXNfYnlfbmFtZV9wdXQpIHwgKipQVVQqKiAvc2VjdXJpdHkvYXBpa2V5cy97bmFtZX0gfCBVcGRhdGUgQXBpS2V5CipTZWN1cml0eUFwaSogfCBbKipzZWN1cml0eV9hcGlrZXlzX2dldCoqXShkb2NzL1NlY3VyaXR5QXBpLm1kI3NlY3VyaXR5X2FwaWtleXNfZ2V0KSB8ICoqR0VUKiogL3NlY3VyaXR5L2FwaWtleXMgfCBMaXN0IEFwaUtleXMKKlNlY3VyaXR5QXBpKiB8IFsqKnNlY3VyaXR5X2FwaWtleXNfcG9zdCoqXShkb2NzL1NlY3VyaXR5QXBpLm1kI3NlY3VyaXR5X2FwaWtleXNfcG9zdCkgfCAqKlBPU1QqKiAvc2VjdXJpdHkvYXBpa2V5cyB8IEFkZCBBcGlLZXkKKlNlY3VyaXR5QXBpKiB8IFsqKnNlY3VyaXR5X3NtdHBfYnlfbmFtZV9kZWxldGUqKl0oZG9jcy9TZWN1cml0eUFwaS5tZCNzZWN1cml0eV9zbXRwX2J5X25hbWVfZGVsZXRlKSB8ICoqREVMRVRFKiogL3NlY3VyaXR5L3NtdHAve25hbWV9IHwgRGVsZXRlIFNNVFAgQ3JlZGVudGlhbAoqU2VjdXJpdHlBcGkqIHwgWyoqc2VjdXJpdHlfc210cF9ieV9uYW1lX2dldCoqXShkb2NzL1NlY3VyaXR5QXBpLm1kI3NlY3VyaXR5X3NtdHBfYnlfbmFtZV9nZXQpIHwgKipHRVQqKiAvc2VjdXJpdHkvc210cC97bmFtZX0gfCBMb2FkIFNNVFAgQ3JlZGVudGlhbAoqU2VjdXJpdHlBcGkqIHwgWyoqc2VjdXJpdHlfc210cF9ieV9uYW1lX3B1dCoqXShkb2NzL1NlY3VyaXR5QXBpLm1kI3NlY3VyaXR5X3NtdHBfYnlfbmFtZV9wdXQpIHwgKipQVVQqKiAvc2VjdXJpdHkvc210cC97bmFtZX0gfCBVcGRhdGUgU01UUCBDcmVkZW50aWFsCipTZWN1cml0eUFwaSogfCBbKipzZWN1cml0eV9zbXRwX2dldCoqXShkb2NzL1NlY3VyaXR5QXBpLm1kI3NlY3VyaXR5X3NtdHBfZ2V0KSB8ICoqR0VUKiogL3NlY3VyaXR5L3NtdHAgfCBMaXN0IFNNVFAgQ3JlZGVudGlhbHMKKlNlY3VyaXR5QXBpKiB8IFsqKnNlY3VyaXR5X3NtdHBfcG9zdCoqXShkb2NzL1NlY3VyaXR5QXBpLm1kI3NlY3VyaXR5X3NtdHBfcG9zdCkgfCAqKlBPU1QqKiAvc2VjdXJpdHkvc210cCB8IEFkZCBTTVRQIENyZWRlbnRpYWwKKlNlZ21lbnRzQXBpKiB8IFsqKnNlZ21lbnRzX2J5X25hbWVfZGVsZXRlKipdKGRvY3MvU2VnbWVudHNBcGkubWQjc2VnbWVudHNfYnlfbmFtZV9kZWxldGUpIHwgKipERUxFVEUqKiAvc2VnbWVudHMve25hbWV9IHwgRGVsZXRlIFNlZ21lbnQKKlNlZ21lbnRzQXBpKiB8IFsqKnNlZ21lbnRzX2J5X25hbWVfZ2V0KipdKGRvY3MvU2VnbWVudHNBcGkubWQjc2VnbWVudHNfYnlfbmFtZV9nZXQpIHwgKipHRVQqKiAvc2VnbWVudHMve25hbWV9IHwgTG9hZCBTZWdtZW50CipTZWdtZW50c0FwaSogfCBbKipzZWdtZW50c19ieV9uYW1lX3B1dCoqXShkb2NzL1NlZ21lbnRzQXBpLm1kI3NlZ21lbnRzX2J5X25hbWVfcHV0KSB8ICoqUFVUKiogL3NlZ21lbnRzL3tuYW1lfSB8IFVwZGF0ZSBTZWdtZW50CipTZWdtZW50c0FwaSogfCBbKipzZWdtZW50c19nZXQqKl0oZG9jcy9TZWdtZW50c0FwaS5tZCNzZWdtZW50c19nZXQpIHwgKipHRVQqKiAvc2VnbWVudHMgfCBMb2FkIFNlZ21lbnRzCipTZWdtZW50c0FwaSogfCBbKipzZWdtZW50c19wb3N0KipdKGRvY3MvU2VnbWVudHNBcGkubWQjc2VnbWVudHNfcG9zdCkgfCAqKlBPU1QqKiAvc2VnbWVudHMgfCBBZGQgU2VnbWVudAoqU3RhdGlzdGljc0FwaSogfCBbKipzdGF0aXN0aWNzX2NhbXBhaWduc19ieV9uYW1lX2dldCoqXShkb2NzL1N0YXRpc3RpY3NBcGkubWQjc3RhdGlzdGljc19jYW1wYWlnbnNfYnlfbmFtZV9nZXQpIHwgKipHRVQqKiAvc3RhdGlzdGljcy9jYW1wYWlnbnMve25hbWV9IHwgTG9hZCBDYW1wYWlnbiBTdGF0cwoqU3RhdGlzdGljc0FwaSogfCBbKipzdGF0aXN0aWNzX2NhbXBhaWduc19nZXQqKl0oZG9jcy9TdGF0aXN0aWNzQXBpLm1kI3N0YXRpc3RpY3NfY2FtcGFpZ25zX2dldCkgfCAqKkdFVCoqIC9zdGF0aXN0aWNzL2NhbXBhaWducyB8IExvYWQgQ2FtcGFpZ25zIFN0YXRzCipTdGF0aXN0aWNzQXBpKiB8IFsqKnN0YXRpc3RpY3NfY2hhbm5lbHNfYnlfbmFtZV9nZXQqKl0oZG9jcy9TdGF0aXN0aWNzQXBpLm1kI3N0YXRpc3RpY3NfY2hhbm5lbHNfYnlfbmFtZV9nZXQpIHwgKipHRVQqKiAvc3RhdGlzdGljcy9jaGFubmVscy97bmFtZX0gfCBMb2FkIENoYW5uZWwgU3RhdHMKKlN0YXRpc3RpY3NBcGkqIHwgWyoqc3RhdGlzdGljc19jaGFubmVsc19nZXQqKl0oZG9jcy9TdGF0aXN0aWNzQXBpLm1kI3N0YXRpc3RpY3NfY2hhbm5lbHNfZ2V0KSB8ICoqR0VUKiogL3N0YXRpc3RpY3MvY2hhbm5lbHMgfCBMb2FkIENoYW5uZWxzIFN0YXRzCipTdGF0aXN0aWNzQXBpKiB8IFsqKnN0YXRpc3RpY3NfZ2V0KipdKGRvY3MvU3RhdGlzdGljc0FwaS5tZCNzdGF0aXN0aWNzX2dldCkgfCAqKkdFVCoqIC9zdGF0aXN0aWNzIHwgTG9hZCBTdGF0aXN0aWNzCipTdWJBY2NvdW50c0FwaSogfCBbKipzdWJhY2NvdW50c19ieV9lbWFpbF9jcmVkaXRzX3BhdGNoKipdKGRvY3MvU3ViQWNjb3VudHNBcGkubWQjc3ViYWNjb3VudHNfYnlfZW1haWxfY3JlZGl0c19wYXRjaCkgfCAqKlBBVENIKiogL3N1YmFjY291bnRzL3tlbWFpbH0vY3JlZGl0cyB8IEFkZCwgU3VidHJhY3QgRW1haWwgQ3JlZGl0cwoqU3ViQWNjb3VudHNBcGkqIHwgWyoqc3ViYWNjb3VudHNfYnlfZW1haWxfZGVsZXRlKipdKGRvY3MvU3ViQWNjb3VudHNBcGkubWQjc3ViYWNjb3VudHNfYnlfZW1haWxfZGVsZXRlKSB8ICoqREVMRVRFKiogL3N1YmFjY291bnRzL3tlbWFpbH0gfCBEZWxldGUgU3ViQWNjb3VudAoqU3ViQWNjb3VudHNBcGkqIHwgWyoqc3ViYWNjb3VudHNfYnlfZW1haWxfZ2V0KipdKGRvY3MvU3ViQWNjb3VudHNBcGkubWQjc3ViYWNjb3VudHNfYnlfZW1haWxfZ2V0KSB8ICoqR0VUKiogL3N1YmFjY291bnRzL3tlbWFpbH0gfCBMb2FkIFN1YkFjY291bnQKKlN1YkFjY291bnRzQXBpKiB8IFsqKnN1YmFjY291bnRzX2J5X2VtYWlsX3NldHRpbmdzX2VtYWlsX3B1dCoqXShkb2NzL1N1YkFjY291bnRzQXBpLm1kI3N1YmFjY291bnRzX2J5X2VtYWlsX3NldHRpbmdzX2VtYWlsX3B1dCkgfCAqKlBVVCoqIC9zdWJhY2NvdW50cy97ZW1haWx9L3NldHRpbmdzL2VtYWlsIHwgVXBkYXRlIFN1YkFjY291bnQgRW1haWwgU2V0dGluZ3MKKlN1YkFjY291bnRzQXBpKiB8IFsqKnN1YmFjY291bnRzX2dldCoqXShkb2NzL1N1YkFjY291bnRzQXBpLm1kI3N1YmFjY291bnRzX2dldCkgfCAqKkdFVCoqIC9zdWJhY2NvdW50cyB8IExvYWQgU3ViQWNjb3VudHMKKlN1YkFjY291bnRzQXBpKiB8IFsqKnN1YmFjY291bnRzX3Bvc3QqKl0oZG9jcy9TdWJBY2NvdW50c0FwaS5tZCNzdWJhY2NvdW50c19wb3N0KSB8ICoqUE9TVCoqIC9zdWJhY2NvdW50cyB8IEFkZCBTdWJBY2NvdW50CipTdXBwcmVzc2lvbnNBcGkqIHwgWyoqc3VwcHJlc3Npb25zX2JvdW5jZXNfZ2V0KipdKGRvY3MvU3VwcHJlc3Npb25zQXBpLm1kI3N1cHByZXNzaW9uc19ib3VuY2VzX2dldCkgfCAqKkdFVCoqIC9zdXBwcmVzc2lvbnMvYm91bmNlcyB8IEdldCBCb3VuY2UgTGlzdAoqU3VwcHJlc3Npb25zQXBpKiB8IFsqKnN1cHByZXNzaW9uc19ib3VuY2VzX2ltcG9ydF9wb3N0KipdKGRvY3MvU3VwcHJlc3Npb25zQXBpLm1kI3N1cHByZXNzaW9uc19ib3VuY2VzX2ltcG9ydF9wb3N0KSB8ICoqUE9TVCoqIC9zdXBwcmVzc2lvbnMvYm91bmNlcy9pbXBvcnQgfCBBZGQgQm91bmNlcyBBc3luYwoqU3VwcHJlc3Npb25zQXBpKiB8IFsqKnN1cHByZXNzaW9uc19ib3VuY2VzX3Bvc3QqKl0oZG9jcy9TdXBwcmVzc2lvbnNBcGkubWQjc3VwcHJlc3Npb25zX2JvdW5jZXNfcG9zdCkgfCAqKlBPU1QqKiAvc3VwcHJlc3Npb25zL2JvdW5jZXMgfCBBZGQgQm91bmNlcwoqU3VwcHJlc3Npb25zQXBpKiB8IFsqKnN1cHByZXNzaW9uc19ieV9lbWFpbF9kZWxldGUqKl0oZG9jcy9TdXBwcmVzc2lvbnNBcGkubWQjc3VwcHJlc3Npb25zX2J5X2VtYWlsX2RlbGV0ZSkgfCAqKkRFTEVURSoqIC9zdXBwcmVzc2lvbnMve2VtYWlsfSB8IERlbGV0ZSBTdXBwcmVzc2lvbgoqU3VwcHJlc3Npb25zQXBpKiB8IFsqKnN1cHByZXNzaW9uc19ieV9lbWFpbF9nZXQqKl0oZG9jcy9TdXBwcmVzc2lvbnNBcGkubWQjc3VwcHJlc3Npb25zX2J5X2VtYWlsX2dldCkgfCAqKkdFVCoqIC9zdXBwcmVzc2lvbnMve2VtYWlsfSB8IEdldCBTdXBwcmVzc2lvbgoqU3VwcHJlc3Npb25zQXBpKiB8IFsqKnN1cHByZXNzaW9uc19jb21wbGFpbnRzX2dldCoqXShkb2NzL1N1cHByZXNzaW9uc0FwaS5tZCNzdXBwcmVzc2lvbnNfY29tcGxhaW50c19nZXQpIHwgKipHRVQqKiAvc3VwcHJlc3Npb25zL2NvbXBsYWludHMgfCBHZXQgQ29tcGxhaW50cyBMaXN0CipTdXBwcmVzc2lvbnNBcGkqIHwgWyoqc3VwcHJlc3Npb25zX2NvbXBsYWludHNfaW1wb3J0X3Bvc3QqKl0oZG9jcy9TdXBwcmVzc2lvbnNBcGkubWQjc3VwcHJlc3Npb25zX2NvbXBsYWludHNfaW1wb3J0X3Bvc3QpIHwgKipQT1NUKiogL3N1cHByZXNzaW9ucy9jb21wbGFpbnRzL2ltcG9ydCB8IEFkZCBDb21wbGFpbnRzIEFzeW5jCipTdXBwcmVzc2lvbnNBcGkqIHwgWyoqc3VwcHJlc3Npb25zX2NvbXBsYWludHNfcG9zdCoqXShkb2NzL1N1cHByZXNzaW9uc0FwaS5tZCNzdXBwcmVzc2lvbnNfY29tcGxhaW50c19wb3N0KSB8ICoqUE9TVCoqIC9zdXBwcmVzc2lvbnMvY29tcGxhaW50cyB8IEFkZCBDb21wbGFpbnRzCipTdXBwcmVzc2lvbnNBcGkqIHwgWyoqc3VwcHJlc3Npb25zX2dldCoqXShkb2NzL1N1cHByZXNzaW9uc0FwaS5tZCNzdXBwcmVzc2lvbnNfZ2V0KSB8ICoqR0VUKiogL3N1cHByZXNzaW9ucyB8IEdldCBTdXBwcmVzc2lvbnMKKlN1cHByZXNzaW9uc0FwaSogfCBbKipzdXBwcmVzc2lvbnNfdW5zdWJzY3JpYmVzX2dldCoqXShkb2NzL1N1cHByZXNzaW9uc0FwaS5tZCNzdXBwcmVzc2lvbnNfdW5zdWJzY3JpYmVzX2dldCkgfCAqKkdFVCoqIC9zdXBwcmVzc2lvbnMvdW5zdWJzY3JpYmVzIHwgR2V0IFVuc3Vic2NyaWJlcyBMaXN0CipTdXBwcmVzc2lvbnNBcGkqIHwgWyoqc3VwcHJlc3Npb25zX3Vuc3Vic2NyaWJlc19pbXBvcnRfcG9zdCoqXShkb2NzL1N1cHByZXNzaW9uc0FwaS5tZCNzdXBwcmVzc2lvbnNfdW5zdWJzY3JpYmVzX2ltcG9ydF9wb3N0KSB8ICoqUE9TVCoqIC9zdXBwcmVzc2lvbnMvdW5zdWJzY3JpYmVzL2ltcG9ydCB8IEFkZCBVbnN1YnNjcmliZXMgQXN5bmMKKlN1cHByZXNzaW9uc0FwaSogfCBbKipzdXBwcmVzc2lvbnNfdW5zdWJzY3JpYmVzX3Bvc3QqKl0oZG9jcy9TdXBwcmVzc2lvbnNBcGkubWQjc3VwcHJlc3Npb25zX3Vuc3Vic2NyaWJlc19wb3N0KSB8ICoqUE9TVCoqIC9zdXBwcmVzc2lvbnMvdW5zdWJzY3JpYmVzIHwgQWRkIFVuc3Vic2NyaWJlcwoqVGVtcGxhdGVzQXBpKiB8IFsqKnRlbXBsYXRlc19ieV9uYW1lX2RlbGV0ZSoqXShkb2NzL1RlbXBsYXRlc0FwaS5tZCN0ZW1wbGF0ZXNfYnlfbmFtZV9kZWxldGUpIHwgKipERUxFVEUqKiAvdGVtcGxhdGVzL3tuYW1lfSB8IERlbGV0ZSBUZW1wbGF0ZQoqVGVtcGxhdGVzQXBpKiB8IFsqKnRlbXBsYXRlc19ieV9uYW1lX2dldCoqXShkb2NzL1RlbXBsYXRlc0FwaS5tZCN0ZW1wbGF0ZXNfYnlfbmFtZV9nZXQpIHwgKipHRVQqKiAvdGVtcGxhdGVzL3tuYW1lfSB8IExvYWQgVGVtcGxhdGUKKlRlbXBsYXRlc0FwaSogfCBbKip0ZW1wbGF0ZXNfYnlfbmFtZV9wdXQqKl0oZG9jcy9UZW1wbGF0ZXNBcGkubWQjdGVtcGxhdGVzX2J5X25hbWVfcHV0KSB8ICoqUFVUKiogL3RlbXBsYXRlcy97bmFtZX0gfCBVcGRhdGUgVGVtcGxhdGUKKlRlbXBsYXRlc0FwaSogfCBbKip0ZW1wbGF0ZXNfZ2V0KipdKGRvY3MvVGVtcGxhdGVzQXBpLm1kI3RlbXBsYXRlc19nZXQpIHwgKipHRVQqKiAvdGVtcGxhdGVzIHwgTG9hZCBUZW1wbGF0ZXMKKlRlbXBsYXRlc0FwaSogfCBbKip0ZW1wbGF0ZXNfcG9zdCoqXShkb2NzL1RlbXBsYXRlc0FwaS5tZCN0ZW1wbGF0ZXNfcG9zdCkgfCAqKlBPU1QqKiAvdGVtcGxhdGVzIHwgQWRkIFRlbXBsYXRlCipWZXJpZmljYXRpb25zQXBpKiB8IFsqKnZlcmlmaWNhdGlvbnNfYnlfZW1haWxfZGVsZXRlKipdKGRvY3MvVmVyaWZpY2F0aW9uc0FwaS5tZCN2ZXJpZmljYXRpb25zX2J5X2VtYWlsX2RlbGV0ZSkgfCAqKkRFTEVURSoqIC92ZXJpZmljYXRpb25zL3tlbWFpbH0gfCBEZWxldGUgRW1haWwgVmVyaWZpY2F0aW9uIFJlc3VsdAoqVmVyaWZpY2F0aW9uc0FwaSogfCBbKip2ZXJpZmljYXRpb25zX2J5X2VtYWlsX2dldCoqXShkb2NzL1ZlcmlmaWNhdGlvbnNBcGkubWQjdmVyaWZpY2F0aW9uc19ieV9lbWFpbF9nZXQpIHwgKipHRVQqKiAvdmVyaWZpY2F0aW9ucy97ZW1haWx9IHwgR2V0IEVtYWlsIFZlcmlmaWNhdGlvbiBSZXN1bHQKKlZlcmlmaWNhdGlvbnNBcGkqIHwgWyoqdmVyaWZpY2F0aW9uc19ieV9lbWFpbF9wb3N0KipdKGRvY3MvVmVyaWZpY2F0aW9uc0FwaS5tZCN2ZXJpZmljYXRpb25zX2J5X2VtYWlsX3Bvc3QpIHwgKipQT1NUKiogL3ZlcmlmaWNhdGlvbnMve2VtYWlsfSB8IFZlcmlmeSBFbWFpbAoqVmVyaWZpY2F0aW9uc0FwaSogfCBbKip2ZXJpZmljYXRpb25zX2ZpbGVzX2J5X2lkX2RlbGV0ZSoqXShkb2NzL1ZlcmlmaWNhdGlvbnNBcGkubWQjdmVyaWZpY2F0aW9uc19maWxlc19ieV9pZF9kZWxldGUpIHwgKipERUxFVEUqKiAvdmVyaWZpY2F0aW9ucy9maWxlcy97aWR9IHwgRGVsZXRlIEZpbGUgVmVyaWZpY2F0aW9uIFJlc3VsdAoqVmVyaWZpY2F0aW9uc0FwaSogfCBbKip2ZXJpZmljYXRpb25zX2ZpbGVzX2J5X2lkX3Jlc3VsdF9kb3dubG9hZF9nZXQqKl0oZG9jcy9WZXJpZmljYXRpb25zQXBpLm1kI3ZlcmlmaWNhdGlvbnNfZmlsZXNfYnlfaWRfcmVzdWx0X2Rvd25sb2FkX2dldCkgfCAqKkdFVCoqIC92ZXJpZmljYXRpb25zL2ZpbGVzL3tpZH0vcmVzdWx0L2Rvd25sb2FkIHwgRG93bmxvYWQgRmlsZSBWZXJpZmljYXRpb24gUmVzdWx0CipWZXJpZmljYXRpb25zQXBpKiB8IFsqKnZlcmlmaWNhdGlvbnNfZmlsZXNfYnlfaWRfcmVzdWx0X2dldCoqXShkb2NzL1ZlcmlmaWNhdGlvbnNBcGkubWQjdmVyaWZpY2F0aW9uc19maWxlc19ieV9pZF9yZXN1bHRfZ2V0KSB8ICoqR0VUKiogL3ZlcmlmaWNhdGlvbnMvZmlsZXMve2lkfS9yZXN1bHQgfCBHZXQgRGV0YWlsZWQgRmlsZSBWZXJpZmljYXRpb24gUmVzdWx0CipWZXJpZmljYXRpb25zQXBpKiB8IFsqKnZlcmlmaWNhdGlvbnNfZmlsZXNfYnlfaWRfdmVyaWZpY2F0aW9uX3Bvc3QqKl0oZG9jcy9WZXJpZmljYXRpb25zQXBpLm1kI3ZlcmlmaWNhdGlvbnNfZmlsZXNfYnlfaWRfdmVyaWZpY2F0aW9uX3Bvc3QpIHwgKipQT1NUKiogL3ZlcmlmaWNhdGlvbnMvZmlsZXMve2lkfS92ZXJpZmljYXRpb24gfCBTdGFydCB2ZXJpZmljYXRpb24KKlZlcmlmaWNhdGlvbnNBcGkqIHwgWyoqdmVyaWZpY2F0aW9uc19maWxlc19wb3N0KipdKGRvY3MvVmVyaWZpY2F0aW9uc0FwaS5tZCN2ZXJpZmljYXRpb25zX2ZpbGVzX3Bvc3QpIHwgKipQT1NUKiogL3ZlcmlmaWNhdGlvbnMvZmlsZXMgfCBVcGxvYWQgRmlsZSB3aXRoIEVtYWlscwoqVmVyaWZpY2F0aW9uc0FwaSogfCBbKip2ZXJpZmljYXRpb25zX2ZpbGVzX3Jlc3VsdF9nZXQqKl0oZG9jcy9WZXJpZmljYXRpb25zQXBpLm1kI3ZlcmlmaWNhdGlvbnNfZmlsZXNfcmVzdWx0X2dldCkgfCAqKkdFVCoqIC92ZXJpZmljYXRpb25zL2ZpbGVzL3Jlc3VsdCB8IEdldCBGaWxlcyBWZXJpZmljYXRpb24gUmVzdWx0cwoqVmVyaWZpY2F0aW9uc0FwaSogfCBbKip2ZXJpZmljYXRpb25zX2dldCoqXShkb2NzL1ZlcmlmaWNhdGlvbnNBcGkubWQjdmVyaWZpY2F0aW9uc19nZXQpIHwgKipHRVQqKiAvdmVyaWZpY2F0aW9ucyB8IEdldCBFbWFpbHMgVmVyaWZpY2F0aW9uIFJlc3VsdHMKCgojIyBEb2N1bWVudGF0aW9uIEZvciBNb2RlbHMKCiAtIFtBY2Nlc3NMZXZlbF0oZG9jcy9BY2Nlc3NMZXZlbC5tZCkKIC0gW0FjY291bnRTdGF0dXNFbnVtXShkb2NzL0FjY291bnRTdGF0dXNFbnVtLm1kKQogLSBbQXBpS2V5XShkb2NzL0FwaUtleS5tZCkKIC0gW0FwaUtleVBheWxvYWRdKGRvY3MvQXBpS2V5UGF5bG9hZC5tZCkKIC0gW0JvZHlDb250ZW50VHlwZV0oZG9jcy9Cb2R5Q29udGVudFR5cGUubWQpCiAtIFtCb2R5UGFydF0oZG9jcy9Cb2R5UGFydC5tZCkKIC0gW0NhbXBhaWduXShkb2NzL0NhbXBhaWduLm1kKQogLSBbQ2FtcGFpZ25PcHRpb25zXShkb2NzL0NhbXBhaWduT3B0aW9ucy5tZCkKIC0gW0NhbXBhaWduUmVjaXBpZW50XShkb2NzL0NhbXBhaWduUmVjaXBpZW50Lm1kKQogLSBbQ2FtcGFpZ25TdGF0dXNdKGRvY3MvQ2FtcGFpZ25TdGF0dXMubWQpCiAtIFtDYW1wYWlnblRlbXBsYXRlXShkb2NzL0NhbXBhaWduVGVtcGxhdGUubWQpCiAtIFtDZXJ0aWZpY2F0ZVZhbGlkYXRpb25TdGF0dXNdKGRvY3MvQ2VydGlmaWNhdGVWYWxpZGF0aW9uU3RhdHVzLm1kKQogLSBbQ2hhbm5lbExvZ1N0YXR1c1N1bW1hcnldKGRvY3MvQ2hhbm5lbExvZ1N0YXR1c1N1bW1hcnkubWQpCiAtIFtDb21wcmVzc2lvbkZvcm1hdF0oZG9jcy9Db21wcmVzc2lvbkZvcm1hdC5tZCkKIC0gW0NvbnNlbnREYXRhXShkb2NzL0NvbnNlbnREYXRhLm1kKQogLSBbQ29uc2VudFRyYWNraW5nXShkb2NzL0NvbnNlbnRUcmFja2luZy5tZCkKIC0gW0NvbnRhY3RdKGRvY3MvQ29udGFjdC5tZCkKIC0gW0NvbnRhY3RBY3Rpdml0eV0oZG9jcy9Db250YWN0QWN0aXZpdHkubWQpCiAtIFtDb250YWN0UGF5bG9hZF0oZG9jcy9Db250YWN0UGF5bG9hZC5tZCkKIC0gW0NvbnRhY3RTb3VyY2VdKGRvY3MvQ29udGFjdFNvdXJjZS5tZCkKIC0gW0NvbnRhY3RTdGF0dXNdKGRvY3MvQ29udGFjdFN0YXR1cy5tZCkKIC0gW0NvbnRhY3RVcGRhdGVQYXlsb2FkXShkb2NzL0NvbnRhY3RVcGRhdGVQYXlsb2FkLm1kKQogLSBbQ29udGFjdHNMaXN0XShkb2NzL0NvbnRhY3RzTGlzdC5tZCkKIC0gW0RlbGl2ZXJ5T3B0aW1pemF0aW9uVHlwZV0oZG9jcy9EZWxpdmVyeU9wdGltaXphdGlvblR5cGUubWQpCiAtIFtEb21haW5EYXRhXShkb2NzL0RvbWFpbkRhdGEubWQpCiAtIFtEb21haW5EZXRhaWxdKGRvY3MvRG9tYWluRGV0YWlsLm1kKQogLSBbRG9tYWluT3duZXJdKGRvY3MvRG9tYWluT3duZXIubWQpCiAtIFtEb21haW5QYXlsb2FkXShkb2NzL0RvbWFpblBheWxvYWQubWQpCiAtIFtEb21haW5VcGRhdGVQYXlsb2FkXShkb2NzL0RvbWFpblVwZGF0ZVBheWxvYWQubWQpCiAtIFtFbWFpbENvbnRlbnRdKGRvY3MvRW1haWxDb250ZW50Lm1kKQogLSBbRW1haWxEYXRhXShkb2NzL0VtYWlsRGF0YS5tZCkKIC0gW0VtYWlsSm9iRmFpbGVkU3RhdHVzXShkb2NzL0VtYWlsSm9iRmFpbGVkU3RhdHVzLm1kKQogLSBbRW1haWxKb2JTdGF0dXNdKGRvY3MvRW1haWxKb2JTdGF0dXMubWQpCiAtIFtFbWFpbE1lc3NhZ2VEYXRhXShkb2NzL0VtYWlsTWVzc2FnZURhdGEubWQpCiAtIFtFbWFpbFByZWRpY3RlZFZhbGlkYXRpb25TdGF0dXNdKGRvY3MvRW1haWxQcmVkaWN0ZWRWYWxpZGF0aW9uU3RhdHVzLm1kKQogLSBbRW1haWxSZWNpcGllbnRdKGRvY3MvRW1haWxSZWNpcGllbnQubWQpCiAtIFtFbWFpbFNlbmRdKGRvY3MvRW1haWxTZW5kLm1kKQogLSBbRW1haWxTdGF0dXNdKGRvY3MvRW1haWxTdGF0dXMubWQpCiAtIFtFbWFpbFRyYW5zYWN0aW9uYWxNZXNzYWdlRGF0YV0oZG9jcy9FbWFpbFRyYW5zYWN0aW9uYWxNZXNzYWdlRGF0YS5tZCkKIC0gW0VtYWlsVmFsaWRhdGlvblJlc3VsdF0oZG9jcy9FbWFpbFZhbGlkYXRpb25SZXN1bHQubWQpCiAtIFtFbWFpbFZhbGlkYXRpb25TdGF0dXNdKGRvY3MvRW1haWxWYWxpZGF0aW9uU3RhdHVzLm1kKQogLSBbRW1haWxWaWV3XShkb2NzL0VtYWlsVmlldy5tZCkKIC0gW0VtYWlsc1BheWxvYWRdKGRvY3MvRW1haWxzUGF5bG9hZC5tZCkKIC0gW0VuY29kaW5nVHlwZV0oZG9jcy9FbmNvZGluZ1R5cGUubWQpCiAtIFtFdmVudFR5cGVdKGRvY3MvRXZlbnRUeXBlLm1kKQogLSBbRXZlbnRzT3JkZXJCeV0oZG9jcy9FdmVudHNPcmRlckJ5Lm1kKQogLSBbRXhwb3J0RmlsZUZvcm1hdHNdKGRvY3MvRXhwb3J0RmlsZUZvcm1hdHMubWQpCiAtIFtFeHBvcnRMaW5rXShkb2NzL0V4cG9ydExpbmsubWQpCiAtIFtFeHBvcnRTdGF0dXNdKGRvY3MvRXhwb3J0U3RhdHVzLm1kKQogLSBbRmlsZUluZm9dKGRvY3MvRmlsZUluZm8ubWQpCiAtIFtGaWxlUGF5bG9hZF0oZG9jcy9GaWxlUGF5bG9hZC5tZCkKIC0gW0ZpbGVVcGxvYWRSZXN1bHRdKGRvY3MvRmlsZVVwbG9hZFJlc3VsdC5tZCkKIC0gW0luYm91bmRQYXlsb2FkXShkb2NzL0luYm91bmRQYXlsb2FkLm1kKQogLSBbSW5ib3VuZFJvdXRlXShkb2NzL0luYm91bmRSb3V0ZS5tZCkKIC0gW0luYm91bmRSb3V0ZUFjdGlvblR5cGVdKGRvY3MvSW5ib3VuZFJvdXRlQWN0aW9uVHlwZS5tZCkKIC0gW0luYm91bmRSb3V0ZUZpbHRlclR5cGVdKGRvY3MvSW5ib3VuZFJvdXRlRmlsdGVyVHlwZS5tZCkKIC0gW0xpc3RQYXlsb2FkXShkb2NzL0xpc3RQYXlsb2FkLm1kKQogLSBbTGlzdFVwZGF0ZVBheWxvYWRdKGRvY3MvTGlzdFVwZGF0ZVBheWxvYWQubWQpCiAtIFtMb2dKb2JTdGF0dXNdKGRvY3MvTG9nSm9iU3RhdHVzLm1kKQogLSBbTG9nU3RhdHVzU3VtbWFyeV0oZG9jcy9Mb2dTdGF0dXNTdW1tYXJ5Lm1kKQogLSBbTWVyZ2VFbWFpbFBheWxvYWRdKGRvY3MvTWVyZ2VFbWFpbFBheWxvYWQubWQpCiAtIFtNZXNzYWdlQXR0YWNobWVudF0oZG9jcy9NZXNzYWdlQXR0YWNobWVudC5tZCkKIC0gW01lc3NhZ2VDYXRlZ29yeV0oZG9jcy9NZXNzYWdlQ2F0ZWdvcnkubWQpCiAtIFtNZXNzYWdlQ2F0ZWdvcnlFbnVtXShkb2NzL01lc3NhZ2VDYXRlZ29yeUVudW0ubWQpCiAtIFtOZXdBcGlLZXldKGRvY3MvTmV3QXBpS2V5Lm1kKQogLSBbTmV3U210cENyZWRlbnRpYWxzXShkb2NzL05ld1NtdHBDcmVkZW50aWFscy5tZCkKIC0gW09wdGlvbnNdKGRvY3MvT3B0aW9ucy5tZCkKIC0gW1JlY2lwaWVudEV2ZW50XShkb2NzL1JlY2lwaWVudEV2ZW50Lm1kKQogLSBbU2VnbWVudF0oZG9jcy9TZWdtZW50Lm1kKQogLSBbU2VnbWVudFBheWxvYWRdKGRvY3MvU2VnbWVudFBheWxvYWQubWQpCiAtIFtTbXRwQ3JlZGVudGlhbHNdKGRvY3MvU210cENyZWRlbnRpYWxzLm1kKQogLSBbU210cENyZWRlbnRpYWxzUGF5bG9hZF0oZG9jcy9TbXRwQ3JlZGVudGlhbHNQYXlsb2FkLm1kKQogLSBbU29ydE9yZGVySXRlbV0oZG9jcy9Tb3J0T3JkZXJJdGVtLm1kKQogLSBbU3BsaXRPcHRpbWl6YXRpb25UeXBlXShkb2NzL1NwbGl0T3B0aW1pemF0aW9uVHlwZS5tZCkKIC0gW1NwbGl0T3B0aW9uc10oZG9jcy9TcGxpdE9wdGlvbnMubWQpCiAtIFtTdWJBY2NvdW50SW5mb10oZG9jcy9TdWJBY2NvdW50SW5mby5tZCkKIC0gW1N1YmFjY291bnRFbWFpbENyZWRpdHNQYXlsb2FkXShkb2NzL1N1YmFjY291bnRFbWFpbENyZWRpdHNQYXlsb2FkLm1kKQogLSBbU3ViYWNjb3VudEVtYWlsU2V0dGluZ3NdKGRvY3MvU3ViYWNjb3VudEVtYWlsU2V0dGluZ3MubWQpCiAtIFtTdWJhY2NvdW50RW1haWxTZXR0aW5nc1BheWxvYWRdKGRvY3MvU3ViYWNjb3VudEVtYWlsU2V0dGluZ3NQYXlsb2FkLm1kKQogLSBbU3ViYWNjb3VudFBheWxvYWRdKGRvY3MvU3ViYWNjb3VudFBheWxvYWQubWQpCiAtIFtTdWJhY2NvdW50U2V0dGluZ3NJbmZvXShkb2NzL1N1YmFjY291bnRTZXR0aW5nc0luZm8ubWQpCiAtIFtTdWJhY2NvdW50U2V0dGluZ3NJbmZvUGF5bG9hZF0oZG9jcy9TdWJhY2NvdW50U2V0dGluZ3NJbmZvUGF5bG9hZC5tZCkKIC0gW1N1cHByZXNzaW9uXShkb2NzL1N1cHByZXNzaW9uLm1kKQogLSBbVGVtcGxhdGVdKGRvY3MvVGVtcGxhdGUubWQpCiAtIFtUZW1wbGF0ZVBheWxvYWRdKGRvY3MvVGVtcGxhdGVQYXlsb2FkLm1kKQogLSBbVGVtcGxhdGVTY29wZV0oZG9jcy9UZW1wbGF0ZVNjb3BlLm1kKQogLSBbVGVtcGxhdGVUeXBlXShkb2NzL1RlbXBsYXRlVHlwZS5tZCkKIC0gW1RyYWNraW5nVHlwZV0oZG9jcy9UcmFja2luZ1R5cGUubWQpCiAtIFtUcmFja2luZ1ZhbGlkYXRpb25TdGF0dXNdKGRvY3MvVHJhY2tpbmdWYWxpZGF0aW9uU3RhdHVzLm1kKQogLSBbVHJhbnNhY3Rpb25hbFJlY2lwaWVudF0oZG9jcy9UcmFuc2FjdGlvbmFsUmVjaXBpZW50Lm1kKQogLSBbVXRtXShkb2NzL1V0bS5tZCkKIC0gW1ZlcmlmaWNhdGlvbkZpbGVSZXN1bHRdKGRvY3MvVmVyaWZpY2F0aW9uRmlsZVJlc3VsdC5tZCkKIC0gW1ZlcmlmaWNhdGlvbkZpbGVSZXN1bHREZXRhaWxzXShkb2NzL1ZlcmlmaWNhdGlvbkZpbGVSZXN1bHREZXRhaWxzLm1kKQogLSBbVmVyaWZpY2F0aW9uU3RhdHVzXShkb2NzL1ZlcmlmaWNhdGlvblN0YXR1cy5tZCkKCgo8YSBpZD0iZG9jdW1lbnRhdGlvbi1mb3ItYXV0aG9yaXphdGlvbiI+PC9hPgojIyBEb2N1bWVudGF0aW9uIEZvciBBdXRob3JpemF0aW9uCgoKQXV0aGVudGljYXRpb24gc2NoZW1lcyBkZWZpbmVkIGZvciB0aGUgQVBJOgo8YSBpZD0iYXBpa2V5Ij48L2E+CiMjIyBhcGlrZXkKCi0gKipUeXBlKio6IEFQSSBrZXkKLSAqKkFQSSBrZXkgcGFyYW1ldGVyIG5hbWUqKjogWC1FbGFzdGljRW1haWwtQXBpS2V5Ci0gKipMb2NhdGlvbioqOiBIVFRQIGhlYWRlcgoKPGEgaWQ9IkFwaUtleUF1dGhDdXN0b21CcmFuZGluZyI+PC9hPgojIyMgQXBpS2V5QXV0aEN1c3RvbUJyYW5kaW5nCgotICoqVHlwZSoqOiBBUEkga2V5Ci0gKipBUEkga2V5IHBhcmFtZXRlciBuYW1lKio6IFgtQXV0aC1Ub2tlbgotICoqTG9jYXRpb24qKjogSFRUUCBoZWFkZXIKCgojIyBBdXRob3IKCnN1cHBvcnRAZWxhc3RpY2VtYWlsLmNvbQoKCg== readmeEtag: '"5a907af533228184d0f0ca4140b9af67e6415407"' readmeLastModified: Thu, 22 May 2025 20:04:13 GMT repositoryId: 366327599 description: ElasticEmail - the Python library for the Elastic Email REST API created: '2021-05-11T09:30:41Z' updated: '2026-01-15T01:50:42Z' language: Python archived: false stars: 9 watchers: 1 forks: 3 owner: ElasticEmail logo: https://avatars.githubusercontent.com/u/26925596?v=4 repoEtag: '"225c2017c964a968d62824d23c7c5f3bd19175522021a3b535ae37bcde133c1c"' repoLastModified: Thu, 15 Jan 2026 01:50:42 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/brreg/openapi v3: true repositoryMetadata: base64Readme: >- UmVwb3NpdG9yeSBmb3IgT3BlbkFQSSBzcGVzaWZpa2Fzam9uZXIgZnJhIEJyw7hubsO4eXN1bmRyZWdpc3RyZW5lCg== readmeEtag: '"db76a039c35ee8ba3e02f5735518045a2ac6e30f"' readmeLastModified: Mon, 20 Nov 2023 12:05:42 GMT repositoryId: 145829476 description: Reposository holding the API specifications of Brønnøysundregistrene created: '2018-08-23T09:10:50Z' updated: '2025-04-10T19:20:34Z' language: null archived: false stars: 11 watchers: 8 forks: 5 owner: brreg logo: https://avatars.githubusercontent.com/u/37073025?v=4 repoEtag: '"2cf1199077dfa0856ce178289d0c1f531970c42ee33501ea6a21ee6e36bfb9dd"' repoLastModified: Thu, 10 Apr 2025 19:20:34 GMT foundInMaster: true category: Documentation id: 2c7899a38f9d43d529cf65be2bd07bd6 - source: openapi3 tags repository: https://github.com/awtkns/openapi-perf v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyBzcmM9Ii4vZG9jcy9lbi9kb2NzL2Fzc2V0cy9sb2dvLWxpZ2h0LnBuZyIgYWx0PSJPcGVuQVBJIFBlcmYgTG9nbyIgLz4KPC9wPgo8aDMgYWxpZ249ImNlbnRlciIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDA7IGNvbG9yOiBibGFjayI+PHN0cm9uZz5PcGVuQVBJIFBlcmY8L3N0cm9uZz48L2gzPgo8cCBhbGlnbj0iY2VudGVyIj4KICDwn6SWPGVtPiBBdXRvbWF0aWMgT3BlbkFQSSBQZXJmb3JtYW5jZSBUZXN0aW5nIDwvZW0+8J+kljwvYnI+CjwvcD4KPHAgYWxpZ249ImNlbnRlciI+CjxpbWcgYWx0PSJUZXN0cyIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vYXd0a25zL29wZW5hcGktcGVyZi93b3JrZmxvd3MvVGVzdHMvYmFkZ2Uuc3ZnIiAvPgo8aW1nIGFsdD0iRG9jcyIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vYXd0a25zL2Zhc3RhcGktY3J1ZHJvdXRlci93b3JrZmxvd3MvZG9jcy9iYWRnZS5zdmciIC8+CjxhIGhyZWY9Imh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9vcGVuYXBpLXBlcmYiIHRhcmdldD0iX2JsYW5rIj4KICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvb3BlbmFwaS1wZXJmP2NvbG9yPSUyMzM0RDA1OCZsYWJlbD1weXBpJTIwcGFja2FnZSIgYWx0PSJQYWNrYWdlIHZlcnNpb24iPgo8L2E+CjxpbWcgYWx0PVB5dGhvbiBWZXJzaW9uIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL29wZW5hcGktcGVyZj9jb2xvcj0lMjMzNEQwNTgiIC8+CjwvcD4KCi0tLQoKKipEb2N1bWVudGF0aW9uKio6IDxhIGhyZWY9Imh0dHBzOi8vb3BlbmFwaS1wZXJmLmF3dGtucy5jb20iIHRhcmdldD0iX2JsYW5rIj5odHRwczovL29wZW5hcGktcGVyZi5hd3RrbnMuY29tPC9hPgoKKipTb3VyY2UgQ29kZSoqOiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXd0a25zL29wZW5hcGktcGVyZiIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vZ2l0aHViLmNvbS9hd3RrbnMvb3BlbmFwaS1wZXJmPC9hPgoKKipDb250aW5vdXMgSW50ZWdyYXRpb24qKjogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2F3dGtucy9vcGVuYXBpLXBlcmYtYWN0aW9uIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9naXRodWIuY29tL2F3dGtucy9vcGVuYXBpLXBlcmYtYWN0aW9uPC9hPgoKLS0tCgoKVGhpcyBwcm9qZWN0IHdpbGwgbWFrZSB1c2Ugb2YgdGhlIE9wZW5BUEkgc2NoZW1hIHRvIGJ1aWxkIGFuIGF1dG9tYXRlZCBSRVNUIEFQSSBwZXJmb3JtYW5jZSB0ZXN0aW5nIGFuZCBiZW5jaG1hcmtpbmcgdG9vbC4gT3BlbkFQSSBkZWZpbmVzIGFuIGludGVyZmFjZSBmb3IgUkVTVCBBUElzIGFsbG93aW5nIGF1dG9tYXRlZCBnZW5lcmF0aW9uIG9mIGFuIEFQSSBzY2hlbWEgd2hpY2ggcHJvdmlkZXMgaW5zaWdodHMgb24gdGhlIEFQSSdzIHVzYWdlIGFuZCBleHBlY3RlZCBpbnB1dCBhbmQgcmVzcG9uc2UgdmFsdWVzLiBVc2luZyB0aGUgT3BlbkFQSSBzY2hlbWEgd2UgaG9wZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIHRlc3RzIGNvdmVyaW5nIGFsbCBlbmRwb2ludHMuIFdlIHdpbGwgdXNlIHRoZXNlIGdlbmVyYXRlZCB0ZXN0cyB0byBib3RoIHRlc3QgZm9yIGVuZHBvaW50IGNvcnJlY3RuZXNzIGFuZCB0byBnYXRoZXIgcmVsZXZhbnQgcGVyZm9ybWFuY2UgbWV0cmljcyBzdWNoIGFzIHJlc3BvbnNlIHRpbWUuIFdlIHdpbGwgZmluYWxseSBnZW5lcmF0ZSBhbiBpbmZvcm1hdGl2ZSByZXBvcnQgb24gZW5kcG9pbnQgcGVyZm9ybWFuY2UgYW5kIGNvcnJlY3RuZXNzLCBhbGxvd2luZyBkZXZlbG9wZXJzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHBvdGVudGlhbGx5IHByb2JsZW1hdGljIGVuZHBvaW50cyBhbmQgZW5kcG9pbnRzIHRoYXQgd291bGQgYmVuZWZpdCBtb3N0IGZyb20gb3B0aW1pemF0aW9uLgoKIyMgSW5zdGFsbGF0aW9uCmBgYHB5dGhvbgpwaXAgaW5zdGFsbCBvcGVuYXBpLXBlcmYKYGBgCgojIyBVc2FnZQojIyMgVGVzdCBHZW5lcmF0aW9uClRoaXMgd2lsbCBjcmVhdGUgZ2VuZXJhdGUgcHJvcGVydHktYmFzZWQgcGVyZm9ybWFuY2UgdGVzdHMgZm9yIGFuIGVuZHBvaW50IGFuZCBzYXZlIHRoZSB0ZXN0IHNjaGVtYSB0byB5b3VyIHJlc3VsdHMgZGlyZWN0b3J5LgpgYGBweXRob24KZnJvbSBvcGVuYXBpX3BlcmYgaW1wb3J0IE9wZW5BUElQZXJmCgpvcCA9IE9wZW5BUElQZXJmKAogIGVuZHBvaW50X3VybCA9ICJodHRwOi8vbG9jYWxob3N0OjUwMDAiLAogIHJlc3VsdHNfZGlyID0gIi9wYXRoL3RvL3Jlc3VsdHMvZGlyZWN0b3J5IgopCmBgYAoKWW91IGNhbiBhbHNvIGxvYWQgZXhpc3RpbmcgdGVzdHMgZnJvbSBhIHRlc3Qgc2NoZW1hIGZpbGUgbGlrZSB0aGlzOgpgYGBweXRob24Kb3AgPSBPcGVuQVBJUGVyZigKICB0ZXN0X3NjaGVtYV9wYXRoID0gInBhdGgvdG8vdGVzdF9zY2hlbWEuanNvbiIKKQpgYGAKU2NoZW1hIGZpbGVzIGNhbiBiZSBtb2RpZmllZCB0byBjb25maWd1cmUgdGVzdCBleGVjdXRpb24uCgojIyMgVGVzdCBFeGVjdXRpb24KClRvIHJ1biB0aGVzZSB0ZXN0cywgdXNlCmBgYHB5dGhvbgpvcC5ydW4oKQpgYGAKClRoaXMgd2lsbCBnZW5lcmF0ZSBhIHJlcG9ydCBwZGYgZmlsZSBpbiB5b3VyIHJlc3VsdHMgZGlyZWN0b3J5CgpGb3IgZGV0YWlsZWQgdXNhZ2UsIHJlZmVyIHRvIG91ciBbZG9jc10oaHR0cHM6Ly9vcGVuYXBpLXBlcmYuYXd0a25zLmNvbSkK readmeEtag: '"ecb6d9116981c3bb46c63a8d76fa012749a11840"' readmeLastModified: Mon, 19 Apr 2021 05:17:15 GMT repositoryId: 342141821 description: Automatic OpenAPI Endpoint Performance Testing created: '2021-02-25T06:10:54Z' updated: '2024-01-17T19:49:28Z' language: Python archived: true stars: 10 watchers: 1 forks: 2 owner: awtkns logo: https://avatars.githubusercontent.com/u/32209255?v=4 license: MIT repoEtag: '"b7a0622afb43eaec2c86a56411d901473077f4e8806be98b414e781fb650229a"' repoLastModified: Wed, 17 Jan 2024 19:49:28 GMT foundInMaster: true category: Testing id: 5334723886325cf3863cf349634cd804 - source: openapi3 tags repository: https://github.com/mtamas7/spring-boot-3.2-authentication-openapi-archetype v3: true id: bb08e69a042c27bd064906e04e4824d5 repositoryMetadata: base64Readme: >- IyBTcHJpbmcgQm9vdCBBcmNoZXR5cGUgd2l0aCBwcmVjb25maWd1cmVkIE9wZW5BcGkgYW5kIFNwcmluZyBTZWN1cml0eQoKVGhpcyBpcyBhIG1hdmVuIGFyY2hldHlwZSBwcm9qZWN0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHN0YXJ0IGEgbmV3IHByb2plY3Qgd2l0aCBwcmVjb25maWd1cmVkIFNwcmluZyBTZWN1cml0eSAoYmFzZWQgb24gSldUIHRva2VuKSBhbmQgT3BlbkFwaSB3aGljaCBpcyBmcmVlbHkgbW9kaWZpYWJsZQoKIyMgVGVjaG5vbG9neSBzdGFjawotIFNwcmluZyBCb290IDMuMi40IChodHRwOi8vc3RhcnQuc3ByaW5nLmlvKQotIEhpYmVybmF0ZSwgU3ByaW5nIERhdGEgSlBBCi0gTGlxdWliYXNlCi0gTWFwc3RydWN0Ci0gTG9tYm9rCi0gU3dhZ2dlcgotIE1hdmVuCgojIyBHZXR0aW5nIFN0YXJ0ZWQKCiMjIyBQcmVyZXF1aXNpdGVzCgpNdXN0IGhhdmUgTWF2ZW4gMysgYW5kIEphdmEgMTcgaW5zdGFsbGVkCgpUbyBjcmVhdGUgYSBwcm9qZWN0IGZyb20gdGhlIGFyY2hldHlwZSBtdXN0IGZpcnN0IGJlIGluc3RhbGxlZCBpbiB0aGUgbG9jYWwgcmVwb3NpdG9yeS4KCkNoZWNrb3V0IHRoZSByZXBvc2l0b3J5IGFuZCBydW4KCmBgYAptdm4gY2xlYW4gaW5zdGFsbApgYGAKCiMjIyBDcmVhdGUgYSBuZXcgcHJvamVjdCBmcm9tIHRoZSBhcmNoZXR5cGUKYGBgCm12biBhcmNoZXR5cGU6Z2VuZXJhdGUgLURhcmNoZXR5cGVHcm91cElkPWNvbS5kaXZpZGUuYnkuemVyby5hcmNoZXR5cGUgLURhcmNoZXR5cGVBcnRpZmFjdElkPXNwcmluZ2Jvb3QzLjItYXV0aGVudGljYXRpb24tb3BlbmFwaS1hcmNoZXR5cGUgLURhcmNoZXR5cGVWZXJzaW9uPTEuMC4wLVNOQVBTSE9UIC1EZ3JvdXBJZD08WU9VUiBHUk9VUCBJRCBIRVJFPiAtRGFydGlmYWN0SWQ9PFlPVVIgQVJUSUZBQ1QgSUQgSEVSRT4gLUR2ZXJzaW9uPTEuMC4wLVNOQVBTSE9UIC1EYXJ0aWZhY3RJZENhbWVsQ2FzZT08WW91ckNhbWVsQ2FzZUFydGlmYWN0SWRIZXJlPgpgYGAKClRoZSBnZW5lcmF0ZWQgcHJvamVjdCBjb250YWlucyB0aHJlZSBkaWZmZXJlbnQgbW9kdWxlcyBhbmQgb25lIGRpcmVjdG9yeToKCmBgYGFwaWBgYAoKYGBgYXBwYGBgCgpgYGBzZWN1cml0eWBgYAoKYGBgZG9ja2VyYGBgCiMjIyMgQVBJCgpUaGUgQVBJIG1vZHVsZSBjb250YWlucyB0aGUgT3BlbkFwaSB5YW1sIGZpbGUgaW4gdGhlIGBgYHNyYy9tYWluL3Jlc291cmNlc2BgYCBmb2xkZXIuIENvbnRhaW5zIGV2ZXJ5dGhpbmcgbmVlZGVkIGZvciBhdXRoZW50aWNhdGlvbiAoY29udHJvbGxlciwgcmVxdWVzdHMsIHJlc3BvbnNlcykuCgojIyMjIEFQUAoKVGhpcyBBUFAgbW9kdWxlIGlzIGEgc2tlbGV0b24gZm9yIHRoZSBzcHJpbmcgYm9vdCBhcHBsaWNhdGlvbi4gVGhlIGFwcCB1c2VzIGEgcG9zdGdyZXMgZGF0YWJhc2UgdG8gc3RvcmUgdGhlIG5lY2Vzc2FyeSB1c2VyIGluZm9ybWF0aW9uIGFuZCBsaXF1aWJhc2UgdG8gbWFuYWdlIGRhdGFiYXNlIGNoYW5nZXMuIChpbmNsdWRlcyB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgdXNlciBhbmQgdG9rZW4gdGFibGUpCgpEb2NrZXIgZmlsZToKClRoZSBkb2NrZXIgZGlyZWN0b3J5IGNvbnRhaW5zIGEgYGRvY2tlci1jb21wb3NlLnltbGAuIEJlZm9yZSBzdGFydCB1c2luZyB5b3UgaGF2ZSB0byBjaGFuZ2UgdGhlIGltYWdlIG5hbWUgdG8geW91ciBvd24uIAoKUmVxdWlyZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzOgoKYGBgREJfVVJMYGBgIFRoaXMgaXMgdGhlIHVybCBvZiB0aGUgcG9zdGdyZXMgc2VydmVyLiBEZWZhdWx0IHZhbHVlOiBgYGBqZGJjOnBvc3RncmVzcWw6Ly9sb2NhbGhvc3Q6NTQzMi9wb3N0Z3Jlc0RCYGBgIAoKYGBgREJfVVNFUk5BTUVgYGAgVGhpcyBpcyB0aGUgdXNlcm5hbWUgb2YgdGhlIHBvc3RncmVzIHNlcnZlci4gRGVmYXVsdCB2YWx1ZTogYGBgdXNlcm5hbWVgYGAgCgpgYGBEQl9QQVNTV09SRGBgYCBUaGlzIGlzIHRoZSBwYXNzd29yZCBvZiB0aGUgcG9zdGdyZXMgc2VydmVyLiBEZWZhdWx0IHZhbHVlOiBgYGBwYXNzd29yZGBgYCAKCiMjIyMgU0VDVVJJVFkKVGhpcyBTRUNVUklUWSBtb2R1bGUgY29udGFpbnMgYWxsIHRoZSBuZWNlc3NhcnkgcHJlY29uZmlndXJlZCBjbGFzcyB0byBtYWtlIHRoZSBhcHBsaWNhdGlvbiBzZWN1cmVkIHdpdGggSldUIHRva2VuLgoKIyMgQXV0aG9ycwoKKiAqKlRhbWFzIE1lc3phcm9zKioK readmeEtag: '"a690129629a224751957ad16206666af59947c94"' readmeLastModified: Wed, 03 Apr 2024 18:28:49 GMT repositoryId: 781624892 description: Preconfigured archetype for Spring Boot 3.2.4 with Spring Security and JWT created: '2024-04-03T18:28:37Z' updated: '2025-06-26T06:03:29Z' language: Java archived: false stars: 9 watchers: 1 forks: 0 owner: mtamas7 logo: https://avatars.githubusercontent.com/u/7900458?v=4 repoEtag: '"18deab3f816da338e28494694057849fafc7325e62690aae9da45274fb654bef"' repoLastModified: Thu, 26 Jun 2025 06:03:29 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/danicc097/openapi-go-gin-postgres-sqlc v3: true id: 3b62bf7982213c373ce1fded4ae53279 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWdvLWdpbi1wb3N0Z3Jlcy1zcWxjCgpbIVtHbyBSZXBvcnQgQ2FyZF0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vZGFuaWNjMDk3L29wZW5hcGktZ28tZ2luLXBvc3RncmVzLXNxbGMpXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vZGFuaWNjMDk3L29wZW5hcGktZ28tZ2luLXBvc3RncmVzLXNxbGMpClshW0dvRG9jXShodHRwczovL3BrZy5nby5kZXYvYmFkZ2UvZ2l0aHViLmNvbS9kYW5pY2MwOTcvb3BlbmFwaS1nby1naW4tcG9zdGdyZXMtc3FsYyldKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL2RhbmljYzA5Ny9vcGVuYXBpLWdvLWdpbi1wb3N0Z3Jlcy1zcWxjKQpbIVt0ZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL2RhbmljYzA5Ny9vcGVuYXBpLWdvLWdpbi1wb3N0Z3Jlcy1zcWxjL2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3RzLnlhbWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2RhbmljYzA5Ny9vcGVuYXBpLWdvLWdpbi1wb3N0Z3Jlcy1zcWxjL2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3RzLnlhbWwpCgpFeGFtcGxlIGZ1bGwgc3RhY2sgYXBwIHdpdGggYW4gQVBJLWZpcnN0IGFuZCBEYXRhYmFzZS1maXJzdCBhcHByb2FjaCB3aXRoIE9wZW5BUEkgdjMsIHNxbGMreG8gY29kZWdlbiwKZ2VuZXJhdGVkIGJhY2tlbmQsIGZyb250ZW5kIGNsaWVudCBhbmQgdmFsaWRhdG9ycyBhbmQgYW4gdW5pbWFnaW5hdGl2ZSB0aXRsZS4KCiMjIFdoYXQncyB0aGlzIGZvcj8KCkFuIGV4YW1wbGUgZnVsbHkgZmVhdHVyZWQgYXBwIHRvIHNob3djYXNlIGhvdyBhbiBPcGVuQVBJIHYzIHNwZWMgYW5kIGRhdGFiYXNlCnNjaGVtYSBiZWNvbWUgYSByZWFsIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggYXQgb25jZS4gQW55CmNoYW5nZSB0byBpdCBpcyB2YWxpZGF0ZWQgYW5kIGNhc2NhZGVzIGRvd24gdG86CgotICoqZnJvbnRlbmQqKjogYXV0b2dlbmVyYXRlZCBjb21wbGV4LCBjdXN0b21pemFibGUgYW5kIGZ1bGx5IHR5cGUtc2FmZSBVSSBmb3JtcwogIGJhc2VkIG9uIHRoZSBPcGVuQVBJIHNwZWMgY29udmVydGVkIHRvIEpTT04KICBzY2hlbWEuIEdlbmVyYXRlZCBBUEkgcXVlcmllcyAoYG9ydmFsYCkuIFVzZXItZnJpZW5kbHkgZ2VuZXJhdGVkIGNsaWVudC1zaWRlCiAgdmFsaWRhdGlvbgogICh2aWEgYHJlYWN0LWhvb2stZm9ybWAgYW5kIGBhanZgIHBsdXMgY3VzdG9taXplZCBga2luLW9wZW5hcGlgIGVycm9yCiAgbWVzc2FnZXMgZm9yIGJhY2tlbmQgZXJyb3JzKS4gQ2hlY2sgb3V0IHRoZSBmcm9udGVuZCBob21lIHBhZ2UgZm9yIGF2YWlsYWJsZSBsaW5rcy4KLSAqKmJhY2tlbmQqKjogZ2VuZXJhdGVkIEdpbiBzZXJ2ZXIgKGN1c3RvbSBgb2FwaS1jb2RlZ2VuYCBhbmQgcG9zdC1nZW5lcmF0aW9uKS4KICBSZXF1ZXN0IGFuZCByZXNwb25zZSB2YWxpZGF0aW9uIChga2luLW9wZW5hcGlgKS4gR2VuZXJhdGVkIENSVUQgYW5kIGluZGV4IHF1ZXJpZXMgdmlhIGB4b2AKICBhbmQgY3VzdG9tIHF1ZXJpZXMgdmlhIGBzcWxjYCBieSBsZXZlcmFnaW5nIGN1c3RvbSBgeG9gIHRlbXBsYXRlIGdlbmVyYXRpb24KICB0aGF0IGVuc3VyZXMgY29tcGF0aWJpbGl0eS4gSW50ZWdyYXRlZCBPcGVuSUQgQ29ubmVjdCBjbGllbnQgdmlhCiAgYHppdGFkZWwvb2lkY2AgKGFuZCBkb2NrZXJpemVkIGF1dGhvcml6YXRpb24gc2VydmVyIGZvciBkZXZlbG9wbWVudCBpbgogIGBjbWQvb2lkYy1zZXJ2ZXJgIGJhc2VkIG9uIHJldXNhYmxlIG1vY2sgc2VydmVyIHdpdGggZ2VuZXJpY3MgaW4KICBbb2lkYy1zZXJ2ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pY2MwOTcvb2lkYy1zZXJ2ZXIpKS4gQXBwIGV2ZW50cyBwcm9jZXNzaW5nCiAgdmlhIFNlcnZlciBTZW50IEV2ZW50cy4KCiAgUXVlcmllcyBnZW5lcmF0ZWQgYnkgYHhvYCB1c2UgYHBneGAgZXhjbHVzaXZlbHkgYW5kIGluY2x1ZGVzCiAgcGFnaW5hdGlvbiwgaW5kZXhlcywgc29mdCBkZWxldGUgaGFuZGxpbmcsIGV4dGVuc2libGUgcXVlcmllcyAocGFyYW1ldGVyaXplZCBgd2hlcmVgLCBgaGF2aW5nYCBjbGF1c2VzKSwgam9pbnMgYW5kCiAgbXVjaCBtb3JlIChzZWUgW3hvIGludGVncmF0aW9uCiAgdGVzdHNdKC4vaW50ZXJuYWwvcmVwb3MvcG9zdGdyZXNxbC94by10ZW1wbGF0ZXMvdGVzdHMvKSkgdGhhdCB3aWxsIGdldCB5b3UKICAqKjk1JSoqIHRoZXJlIHdpdGhvdXQgcmVzb3J0aW5nIHRvIGFkLWhvYyBxdWVyaWVzLiBGb3VuZCBhbiBlZGdlIGNhc2Ugb3Igd2FudCBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkganVzdCBmb3IKICB5b3VyIERCIG5lZWRzPyBKdXN0IGVkaXQgYHhvLXRlbXBsYXRlcy9gLCBzaW5jZSBjb2RlZ2VuIGlzIGludGVycHJldGVkIGJ5CiAgYHlhZWdpYC4gQWRkaXRpb25hbGx5LCBieQogIHVzaW5nIGBwZ3hgLCBtb2RlbHMgY2FuIGJlIGVhc2lseSByZS1leHBvcnRlZCBhcyB1c2FibGUgT3BlbkFQSSBzY2hlbWFzIHZpYQogIGBvcGVuYXBpLWdvYCBhbmQgc29tZSBtYWdpYyBCYXNoIGFuZCBHbyB1dGlsaXR5IHByb2dyYW1zIHRoYXQga2VlcCBnZW5lcmF0ZWQKICBjb2RlIGluIG9yZGVyLgoKICBTaW5jZSB1c2luZyBEQiBtb2RlbHMgaW4gYWxsIGJhY2tlbmQgbGF5ZXJzIGlzIGNvbnNpZGVyZWQgYW4gYW50aS1wYXR0ZXJuIGF0CiAgc29tZSBsZXZlbCBvZiBtb2RlbCBjb21wbGV4aXR5LCB5b3UncmUgbm90IHRpZWQgdG8gZ2VuZXJhdGVkIHNjaGVtYXMgZnJvbSBEQgogIG1vZGVscy4KICBBbnkgc3RydWN0IGNhbiBiZWNvbWUgYSBzcGVjIHNjaGVtYSB2aWEgYG9wZW5hcGktZ29gIHN0cnVjdCB0YWdzIGFuZCBzb21lCiAgc2ltcGxlIGJhc2ggY29kZSBiZWhpbmQgdG8gZ3JhYiB0aGVtLCB3aXRoIG1pbmltYWwgY2F2ZWF0cy4gU2VlIGByZXN0YAogIHBhY2thZ2UuIEl0IGlzIGV2ZW4gcG9zc2libGUgdG8gcmVmZXJlbmNlIG9wZW5hcGkgc3BlYyBtb2RlbHMgaW4geW91ciBgeG9gCiAgZ2VuZXJhdGVkIG1vZGVscywgYXMgbG9uZyBhcyB0aGV5IGRvbid0IGNyZWF0ZSBhbnkgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgogIFNpbmNlIGF0IHRoZSBsYXN0IGdlbmVyYXRpb24gc3RlcCB3ZSBnZW5lcmF0ZSBhbGwgc3BlYyBzY2hlbWFzIGJhY2sgdG8gR28gbW9kZWxzIHdpdGggYG9hcGktY29kZWdlbmAgdG8KICBhIHNoYXJlZCBgbW9kZWxzYCBwYWNrYWdlLCB0aGlzIGlzIG5vdCBhbiBpc3N1ZSAoYWx0aG91Z2ggeW91J2QgaGF2ZSB0bwogIGNob29zZSB3aGF0IG1vZGVscyB0byB1c2UsIHNpbmNlIHRoZXJlJ2xsIGR1cGxpY2F0aW9uIGZvciB0aGUgbW9kZWxzCiAgdGhhdCB3ZXJlIGFscmVhZHkgZ2VuZXJhdGVkIGJ5IGBvcGVuYXBpLWdvYCBpbiB0aGUgZmlyc3QgcGxhY2UgLSBpZGVhbGx5LCB1c2UgdGhlCiAgb3JpZ2luYWxzKS4KCkFkZGl0aW9uYWxseSwgaXQgZmVhdHVyZXMgT3BlblRlbGVtZXRyeSBpbiBib3RoIGJyb3dzZXIgKGF1dG9tYXRpYyBhbmQKbWFudWFsIGluc3RydW1lbnRhdGlvbikgYW5kIGJhY2tlbmQgc2VydmljZXMgKG1hbnVhbCBpbnN0cnVtZW50YXRpb24pIHZpYQpKYWVnZXIsIFRpbWVzY2FsZURCIGFuZCB+flByb21zY2FsZX5+IChkaXNjb250aW51ZWQsIHNob3VsZCBsb29rIGF0IG9wdGlvbnMgbGlrZQpgbWltaXJgKS4KCiMjIE1ha2VmaWxlIGFsdGVybmF0aXZlCgpZb3UgZ2V0IGR5bmFtaWMgYHhgIGZ1bmN0aW9uIGFuZCBgeGAgb3B0aW9ucyBwYXJhbWV0ZXJzIGRvY3VtZW50YXRpb24gX2FuZF8KYXV0b2NvbXBsZXRpb24gKGBjb21wbGV0ZSAtQyBwcm9qZWN0IHByb2plY3RgKSBmb3IKZnJlZSAoZnJvbSB5b3VyIG93biBzb3VyY2UgaXRzZWxmIGFuZCBjb21tZW50cykKc28gdGhleSdyZSBhbHdheXMgdXAgdG8gZGF0ZSB3aXRob3V0IGFueSByZXBldGl0aXZlIHdvcms6IGFkZC9yZW1vdmUgZnVuY3Rpb25zCmFuZCBmbGFncyBhdCB3aWxsLgpDdXN0b20gaW50ZXJuYWwgYXV0b2NvbXBsZXRpb24gZnVuY3Rpb25zIGZvciBlYWNoIGB4YCBmdW5jdGlvbiBvciBgeGAgb3B0aW9uIGNhbiBiZQplYXNpbHkgc2V0dXAuCgohW10oLmdpdGh1Yi9hdXRvZG9jcy5wbmcpCgpBbGwgY2FsbHMgdG8gYHhgIGZ1bmN0aW9ucyBhcmUgbG9nZ2VkIChkaXN0aW5ndWlzaGluZyBzdGRvdXQgYW5kIHN0ZGVycikgZm9yIGVhc2llciBwYXJhbGxlbCBleGVjdXRpb24gYW5kIG5lc3RlZApjYWxscyB0cmFja2luZzoKCiFbXSguZ2l0aHViL2xvZ2dpbmcucG5nKQoKQW5kIGhlbHAgZm9yIGFueSBgeGAgZnVuY3Rpb24gaXMgZWFzaWx5IHNlYXJjaGFibGUgd2hlbiB0aGUgYXBwIGluZXZpdGFibHkgZ3Jvd3MKd2l0aCBgLS14LWhlbHBgOgoKIVtdKC5naXRodWIvaGVscC14LWZ1bmN0aW9uLnBuZykKCiMjIFNldHVwCgojIyMgQ29uZmlndXJhdGlvbiBhbmQgbG9jYWwgZGV2ZWxvcG1lbnQKCkZpbGwgaW4gYC5lbnYudGVtcGxhdGVgJ3M6CgpgYGBiYXNoCmZpbmQgLiAtbmFtZSAiLmVudioudGVtcGxhdGUiCmBgYAoKRm9yIGBkZXZgIGVudmlyb25tZW50LCB5b3UgbWF5IHVzZSBgZW52LmNpYCBhcyBhIHN0YXJ0aW5nIHBvaW50LApyZXBsYWNpbmcgYGNpYCB3aXRoIGBkZXZgIGFuZCB1c2luZyBgUkVWRVJTRV9QUk9YWV9BUElfUFJFRklYPSIiYCBzaW5jZSBpdCB3aWxsIHJ1bgp0aGUgYmFja2VuZCB3aXRob3V0IGRvY2tlciBjb250YWluZXJzLgoKQXNzdW1pbmcgYSByZWNlbnQgVWJ1bnR1IHJlbGVhc2U6CgpgYGBiYXNoCgpzdWRvIGFwdCBpbnN0YWxsIGRpcmVudiAteQpkaXJlbnYgYWxsb3cgIyB5b3UgY2FuIGFsc28gY3VzdG9taXplIGRpcmVudiB3aXRoIC5lbnZyYy5sb2NhbCBhcyB5b3Ugd291bGQgYSByZWd1bGFyIC5lbnZyYywgc2VlIGV4YW1wbGUKCmNwIG9wZW5hcGktZ28uY29kZS13b3Jrc3BhY2UuZXhhbXBsZSBvcGVuYXBpLWdvLmNvZGUtd29ya3NwYWNlICMgZWRpdCBhcyBkZXNpcmVkCgpwcm9qZWN0IGJvb3RzdHJhcCAjIGRlcGVuZGVuY3kgYW5kIHRvb2xzIGludGVyYWN0aXZlIGluc3RhbGxhdGlvbgpwcm9qZWN0IHJlY3JlYXRlLXNoYXJlZC1zZXJ2aWNlcwpwcm9qZWN0IGdlbgpwcm9qZWN0IGRiLmluaXRpYWwtZGF0YQpwcm9qZWN0IHJ1bi5hbGwKYGBgCgpGb3IgZmlyc3QgdGVzdCBydW46CgpgYGBiYXNoCnByb2plY3QgdGVzdC5iYWNrZW5kLnNldHVwCnByb2plY3QgdGVzdC5iYWNrZW5kCnByb2plY3QgdGVzdC5mcm9udGVuZApgYGAKCiMjIyBUcmFjaW5nLCBtb25pdG9yaW5nLi4uCgpgYGBiYXNoCmJpbi9kZXBsb3ktaW5zdHJ1bWVudGF0aW9uCmBgYAoKIyMgTm90ZXMgb24gY29kZSBnZW5lcmF0aW9uCgojIyMgYHhvYAoKRGIgc3RydWN0IG1hcHBpbmdzIGNhbiBiZSBleHRlbmRlZCB3aXRoIFNRTCBjb2x1bW4gY29tbWVudHMsIGpvaW5lZCB3aXRoIGAgJiYgYDoKLSBgcHJvcGVydGllc2A6YDxwMT4sPHAyPiwuLi5gCiAgLSBgcHJpdmF0ZWA6IGV4Y2x1ZGUgYSBmaWVsZCBmcm9tIEpTT04uCiAgLSBgbm90LXJlcXVpcmVkYDogbWFrZSBhIHNjaGVtYSBmaWVsZCBub3QgcmVxdWlyZWQuCiAgLSBgaGlkZGVuYDogZXhjbHVkZSBmaWVsZCBmcm9tIE9wZW5BUEkgZ2VuZXJhdGlvbi4KICAtIGByZWZzLWlnbm9yZWA6IGdlbmVyYXRlIGEgZmllbGQgd2hvc2UgY29uc3RyYWludHMgYXJlIGlnbm9yZWQgYnkgdGhlIHJlZmVyZW5jZWQgdGFibGUsCiAgaS5lLiBubyBqb2lucyB3aWxsIGJlIGdlbmVyYXRlZC4KICAtIGBzaGFyZS1yZWYtY29uc3RyYWludHNgOiBmb3IgYSBGSyBjb2x1bW4sIGl0IHdpbGwgZ2VuZXJhdGUgdGhlIHNhbWUgTTJPIGFuZCBNMk0gam9pbiBmaWVsZHMgdGhlIHJlZiBjb2x1bW4gaGFzLgotIGB0eXBlYDogb3ZlcnJpZGUgdGhlIHR5cGUgYW5ub3RhdGlvbiB3aXRoIGFuIGV4aXN0aW5nIHNwZWMgc2NoZW1hLiBBbHNvIGFsbG93cwogIGNvbXBsZXggSlNPTiBjb2x1bW5zIHRvIGJlIGVuY29kZWQgYW5kIGRlY29kZWQgdGhhbmtzIHRvIGBwZ3hgLgotIGBjYXJkaW5hbGl0eWA6YDxPMk98TTJPfE0yTT5gIHRvIGdlbmVyYXRlL292ZXJyaWRlIGpvaW5zIGV4cGxpY2l0bHkuIE9ubHkgTzJPIGlzIGluZmVycmVkLgotIGB0YWdzYDogYXBwZW5kIGxpdGVyYWwgc3RydWN0IHRhZyBzdHJpbmdzLgoKIyMjIGByZXN0YCBwYWNrYWdlCgpTdHJ1Y3RzIGluIGBtb2RlbHMuc3BlYy5nb2Agd2lsbCBiZSBnZW5lcmF0ZWQgdmlhIGBvcGVuYXBpLWdvYCBhbmQgcmVwbGFjZWQgaW4KdGhlIHNwZWMuIE1ha2Ugc3VyZSB0aGV5IGRvbid0IGNsYXNoIHdpdGggZXhpc3RpbmcgYG1vZGVsc2AgbmFtZXMgb3IgZGIgdGFibGVzLgoKIyMjIGBtb2RlbHNgIHBhY2thZ2UKCkNvbWJpbmVzIGRiIGNvZGVnZW4gdmlhIGEgY3VzdG9tIGB4b2AgYWxvbmdzaWRlIHNwZWMgc2NoZW1hcyBjb2RlZ2VuIGZvciBlYXNlIG9mIHVzZS4KCiMjIyBDUlVEICsgdGVzdHMgZ2VuZXJhdGlvbgoKU2VlIGBwcm9qZWN0IHRlc3QuY3JlYXRlLWNydWQtZ2VuYCdzIGltcGxlbWVudGF0aW9uIGZvciBhbiBleGFtcGxlIHdvcmtmbG93IHRvIGNyZWF0ZSBhCnZhcmlldHkgb2YgaW1wbGVtZW50ZWQgQ1JVRCBlbmRwb2ludHMgYW5kIHJlbGV2YW50IHRlc3RzIGZvciBhIGdpdmVuIGRhdGFiYXNlCnRhYmxlLgpUaGlzIGlzIGEgb25lLW9mZiBzY3JpcHQgcGVyIHRhYmxlLgoKIyMjIE9wZW5BUEkgc3BlYwoKIyMjIyBQYXRocwoKRW5kcG9pbnRzIGFyZSBleGNsdXNpdmVseSBtYW5hZ2VkIHRocm91Z2ggdGhlIHNwZWMgYW5kIGNyZWF0ZWQva2VwdCB1cCB0byBkYXRlCmluIHRoZWlyIHJlc3BlY3RpdmUgZmlsZXMgYWdncmVnYXRlZCBieSBgdGFnc2AgKGxpbWl0ZWQgdG8gb25lKQp2aWEgY29kZWdlbiBhbmQgQVNUIG1vZGlmaWNhdGlvbnMuIFRoaXMgZW5zdXJlcyB0aGUgc2VydmVyIGFsd2F5cyBpbXBsZW1lbnRzIHRoZQpzcGVjLgoKRm9yIGVuZHBvaW50IGltcGxlbWVudGF0aW9uLCBvbmx5IG1ldGhvZCBib2RpZXMgYXJlIHRvIGJlIG1vZGlmaWVkLgoKIyMjIyBWZW5kb3IgZXh0ZW5zaW9ucwoKQ29tcG9uZW50IHNjaGVtYXM6CiAgLSBgeC1nZW4tc3RydWN0YCBnZW5lcmF0ZXMgYSBzY2hlbWEgZnJvbSBhIHN0cnVjdCBhbmQga2VlcHMgaXQgdXAgdG8gZGF0ZSwKICAgIHdoaWNoIGNhbiBiZSB0YWdnZWQgd2l0aCBPcGVuQVBJIGZpZWxkcyAodmlhIG9wZW5hcGktZ28pLgogICAgUG9zc2libGUgc3RydWN0cyB0byBnZW5lcmF0ZSBmcm9tIGFyZSBsaXN0ZWQgaW4gYGludGVybmFsL2NvZGVnZW4vc3RydWN0cy5nZW4uZ29gCiAgICBpbmRleGVkIGJ5IGB4LWdlbi1zdHJ1Y3RgLgogICAgUGFja2FnZXMgdG8gZ2VuZXJhdGUgc3RydWN0cyBmcm9tIGFyZSBhZGRlZCBhZGhvYyAoY3VycmVudGx5IHJlc3QgYW5kIG1vZGVscyBwYWNrYWdlcyBvbmx5KQogICAgTm90ZSB0aGF0IHJlc3QgcGFja2FnZSBzdHJ1Y3RzIGFyZSBnZW5lcmF0ZWQgd2l0aG91dCBwcmVmaXggc2luY2UgdGhleQogICAgYXJlIHRoZSBiYXNlIG9mIHRoZSBzcGVjIC0gZWxzZSBwcmVmaXggaXMgdGhlIHBhc2NhbCBjYXNlZCBwYWNrYWdlIG5hbWUuCiAgICBUaGUgdmFsdWUgb2YgYHgtZ2VuLXN0cnVjdGAgbXVzdCBtYXRjaCB0aGUgc2NoZW1hIG5hbWUsIHRvIHByZXZlbnQgZHVwbGljYXRlcyBhbmQKICAgIGNvbmZ1c2luZyBkZWZpbml0aW9ucy4KICAgIFRvIHVzZSBhIHlldCB0byBiZSBnZW5lcmF0ZWQgYHJlc3RgIHBhY2thZ2Ugc3RydWN0IGluIHNwZWMgYHBhdGhzYCwgc2ltcGx5IHVzZSB0aGUgYCRyZWZgCiAgICB3aXRob3V0IGNyZWF0aW5nIGFueSBzY2hlbWEgYW5kIGl0IHdpbGwgYmUgYXV0b2dlbmVyYXRlZCBsYXRlciBpZiBpdCBkb2Vzbid0IGV4aXN0CiAgICAob25seSBmb3IgYHJlc3RgIHBhY2thZ2Ugc3RydWN0cywgc2luY2UgYW55IG90aGVyIHNob3VsZCBub3QgYmUgdXNlZCBhcyByZXF1ZXN0L3Jlc3BvbnNlIGluIHRoZQogICAgZmlyc3QgcGxhY2UpLgogIC0gYHgtc3BlYy1yZXN0LXR5cGVgOiBzZXQgdG8gdHJ1ZSB0byBtYXJrIHJlc3QgdHlwZXMgKGkuZS4gcmVxdWVzdCwgcmVzcG9uc2VzLCBxdWVyeSBwYXJhbXMuLi4pIHRoYXQgYXJlIG1hbnVhbGx5IGRlZmluZWQgaW4gdGhlIHNwZWMgaW5zdGVhZCBvZiBzdHJ1Y3RzIGluIGBtb2RlbHMuc3BlYy5nb2AuClBhdGggb3BlcmF0aW9uczoKICAtIGB4LXJlcXVpcmVkLXNjb3Blc2AgZGVmaW5lcyByZXF1aXJlZCBzY29wZXMgZm9yIGEgcmVxdWVzdC4KICAtIGB4LXJlcXVpcmVkLXJvbGVgIGRlZmluZXMgdGhlIG1pbmltdW0gcmVxdWlyZWQgcm9sZSBmb3IgYSByZXF1ZXN0LgoKCjwhLS0geG8gY3VzdG9tIHRlbXBsYXRlcyB3aXRoIGNhcmRpbmFsaXR5LCBwcm9wZXJ0eSBjb21tZW50cyBmb3Igam9pbiBhbmQgcHVibGljIG1vZGVsIGdlbmVyYXRpb24gZm9yIGVtYmVkZGluZywgc2NoZW1hIGZyb20gc3RydWN0cywgc3BlYyBzeW5jIC0tPgoKIyMgQXJjaGl0ZWN0dXJlCgpTaW1wbGlmaWVkOgoKIVtdKC5naXRodWIvc3lzdGVtLWRpYWdyYW0ucG5nKQoKIyMgS25vd24gaXNzdWVzCgotIE5lc3RlZCBmdW5jdGlvbnMgaW4gYHByb2plY3RgJ3MgYHhgIGZ1bmN0aW9ucyB3aWxsIGJyZWFrIGF1dG9tYXRpYwogIGRvY3VtZW50YXRpb24gZm9yIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBkdWUgdG8gYSBidWcgaW4gYGRlY2xhcmVgIHdoZXJlIHRoZSBsYXN0IG5lc3RlZCBmdW5jdGlvbiBsaW5lCiAgbnVtYmVyIGlzIHJldHVybmVkIGluc3RlYWQgb2YgdGhlIHBhcmVudC4KCiMjIFRPRE9zCgotIE1lYW5pbmdmdWwgcHJvamVjdCBuYW1lLgoKLSBTeXN0ZW0gZGVzaWduIGRvY3MvZGlhZ3JhbXMuCgoK readmeEtag: '"3b0e003b311213b93483d4b95fb7b8e73953c327"' readmeLastModified: Sat, 05 Oct 2024 20:49:57 GMT repositoryId: 516988488 description: >- Go API-first and Database-first demo app with OpenAPI v3 and sqlc/xo codegen, OIDC auth, React TypeScript frontend, end to end tracing with OpenTelemetry and a smart Bash repo task manager. created: '2022-07-23T07:25:51Z' updated: '2025-10-08T00:55:46Z' language: TypeScript archived: false stars: 11 watchers: 0 forks: 4 owner: danicc097 logo: https://avatars.githubusercontent.com/u/71724149?v=4 license: Apache-2.0 repoEtag: '"8b9bc1fc5511c65df9ba42ed9523c231fb029876ef6683d174145e6f960a1087"' repoLastModified: Wed, 08 Oct 2025 00:55:46 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/restful-ma/rest-ruler v3: true id: b948369127981444200364f6a085ca8d repositoryMetadata: base64Readme: >- IyBSRVNUUnVsZXIKClRoZSBSRVNUUnVsZXIgQ0xJIGlzIGEgdG9vbCB0aGF0IGNhbiBldmFsdWF0ZSBSRVNUZnVsIEFQSXMgb24gdGhlIGJhc2lzIG9mIGRlc2lnbiBydWxlIHZpb2xhdGlvbnMuIFRoZXNlIHZpb2xhdGlvbnMgYXJlIGJhc2VkIG9uIHRoZSBkZXNpZ24gcnVsZXMgZnJvbSBNYXJrIE1hc3PDqSdzIGJvb2sgW1JFU1QgQVBJIERlc2lnbiBSdWxlYm9va10oaHR0cHM6Ly93d3cub3JlaWxseS5jb20vbGlicmFyeS92aWV3L3Jlc3QtYXBpLWRlc2lnbi85NzgxNDQ5MzE3OTA0LykuCkN1cnJlbnRseSwgUkVTVFJ1bGVyIGNhbiBwYXJzZSB0aGUgZm9sbG93aW5nIFdlYiBBUEkgZGVzY3JpcHRpb24gbGFuZ3VhZ2VzOgoKKiBbT3BlbkFQSSB2Ml0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vdjIvKQoqIFtPcGVuQVBJIHYzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikKClJFU1RSdWxlciBoYXMgYmVlbiBkZXZlbG9wZWQgaW4gdGhlIFtFbXBpcmljYWwgU29mdHdhcmUgRW5naW5lZXJpbmcgR3JvdXBdKGh0dHBzOi8vd3d3LmlzdGUudW5pLXN0dXR0Z2FydC5kZS9lc2UpIGF0IHRoZSBVbml2ZXJzaXR5IG9mIFN0dXR0Z2FydCwgR2VybWFueSwgYXMgYSByZXNlYXJjaCBwcm90b3R5cGUgd3JpdHRlbiBpbiBKYXZhICh2ZXJzaW9uID49MTggbmVlZGVkKS4KSXQgaXMgYSBjb21tYW5kLWxpbmUgdG9vbCB0aGF0IHRha2VzIHRoZSBwYXRoIG9yIFVSTCB0byBhbiBPcGVuQVBJIGRlZmluaXRpb24gZmlsZSBhcyBpbnB1dCBhbmQgZGlzcGxheXMgYSBsaXN0IG9mIGRlc2lnbiBydWxlIHZpb2xhdGlvbnMgYXMgb3V0cHV0LgpPcHRpb25hbGx5LCBhIE1hcmtkb3duIHJlcG9ydCBmaWxlIGNhbiBiZSBnZW5lcmF0ZWQgd2l0aCBhZGRpdGlvbmFsIGRldGFpbHMgYW5kIGltcHJvdmVtZW50IHN1Z2dlc3Rpb25zLgoKIyMgRGVzaWduIFJ1bGVzCgpEZXNjcmlwdGlvbnMgb2YgdGhlIGltcGxlbWVudGVkIGRlc2lnbiBydWxlcyBjYW4gYmUgZm91bmQgaW4gb3VyIFtydWxlIGRvY3VtZW50YXRpb25dKC4vZG9jcy9ydWxlcy9SRUFETUUubWQpLgoKIyMgUHJvamVjdCBBcmNoaXRlY3R1cmUKCkEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIHByb2plY3QgYW5kIGltcGxlbWVudGVkIGNvbXBvbmVudHMgY2FuIGJlIGZvdW5kIGluIHRoZSBbYXJjaGl0ZWN0dXJlIGRvY3VtZW50YXRpb25dKC4vZG9jcy9hcmNoaXRlY3R1cmUubWQpLgoKIyMgRXZhbHVhdGlvbgoKWW91IHdpbGwgZmluZCB0aGUgYXJ0aWZhY3RzIHJlbGF0ZWQgdG8gdGhlIGVtcGlyaWNhbCBldmFsdWF0aW9uIG9mIFJFU1RSdWxlciBpbiBbdGhpcyByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vcmVzdGZ1bC1tYS9yZXN0LXJ1bGVyLWV2YWx1YXRpb24pLgoKIyMgR2VuZXJhbCBVc2FnZSBJbnN0cnVjdGlvbnMKCkZvciBhIHF1aWNrIHN0YXJ0LCB5b3UgY2FuIHNpbXBseSBkb3dubG9hZCBgcmVzdC1ydWxlci5qYXJgIGZvciBhIGNlcnRhaW4gW3JlbGVhc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0ZnVsLW1hL3Jlc3QtcnVsZXIvcmVsZWFzZXMpLgpUaGVuIGV4ZWN1dGUgdGhlc2UgY29tbWFuZHMgaW4gdGhlIHNhbWUgZm9sZGVyIGFzIHRoZSBKQVIgZmlsZSAoSmF2YSB2ZXJzaW9uID49MTggbmVlZGVkKToKCmBgYGJhc2gKIyBleGVjdXRlIEpBUiBmaWxlIHRvIGRpc3BsYXkgQ0xJIHBhcmFtZXRlcnMKamF2YSAtamFyIHJlc3QtcnVsZXIuamFyIC1oCgojIHJ1biB3aXRoIGFuIGV4YW1wbGUgQVBJIGZyb20gaHR0cHM6Ly9hcGlzLmd1cnUKamF2YSAtamFyIHJlc3QtcnVsZXIuamFyIC1wIGh0dHBzOi8vYXBpLmFwaXMuZ3VydS92Mi9zcGVjcy9jaXJjbGVjaS5jb20vdjEvb3BlbmFwaS55YW1sCmBgYAoKSWYgeW91IHdhbnQgdG8gZG93bmxvYWQgb3IgY2xvbmUgdGhlIGZ1bGwgcmVwb3NpdG9yeSwgcnVuIHRoZXNlIGNvbW1hbmRzIGluIHRoZSByb290IGZvbGRlciBvZiB0aGUgcmVwb3NpdG9yeSB0byBidWlsZCBhbmQgc3RhcnQgdGhlIHRvb2wgKEphdmEgdmVyc2lvbiA+PTE4IG5lZWRlZCk6CgpgYGBiYXNoCiMgY3JlYXRlIEpBUiBmaWxlCi4vZ3JhZGxldyBhc3NlbWJsZQojIGV4ZWN1dGUgSkFSIGZpbGUgdG8gZGlzcGxheSBDTEkgcGFyYW1ldGVycwpqYXZhIC1qYXIgYnVpbGQvbGlicy9yZXN0LXJ1bGVyLmphciAtaAojIHJ1biB0ZXN0cwouL2dyYWRsZXcgdGVzdAojIHRlc3QgY292ZXJhZ2UgKG91dHB1dDogLi9idWlsZC9yZXBvcnRzL2phY29jby90ZXN0L2h0bWwvaW5kZXguaHRtbCkKLi9ncmFkbGV3IGphY29jb1Rlc3RSZXBvcnQKYGBgCgojIyBVc2FnZSBFeGFtcGxlCgpgYGBiYXNoCiMgcnVuIHdpdGggYW4gZXhhbXBsZSBBUEkgZnJvbSBodHRwczovL2FwaXMuZ3VydQpqYXZhIC1qYXIgYnVpbGQvbGlicy9yZXN0LXJ1bGVyLmphciAtcCBodHRwczovL2FwaS5hcGlzLmd1cnUvdjIvc3BlY3MvY2lyY2xlY2kuY29tL3YxL29wZW5hcGkueWFtbApgYGAKClRoaXMgcHJvZHVjZXMgdGhlIGZvbGxvd2luZyBvdXRwdXQ6CgpgYGBjbGkKamF2YSAtamFyIGJ1aWxkL2xpYnMvcmVzdC1ydWxlci5qYXIgLXAgaHR0cHM6Ly9hcGkuYXBpcy5ndXJ1L3YyL3NwZWNzL2NpcmNsZWNpLmNvbS92MS9vcGVuYXBpLnlhbWwKCi0tLS0tLS0tLS0tLS0tLS1TVEFSVCBBTkFMWVNJUy0tLS0tLS0tLS0tLS0tLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkJlZ2luIHdpdGggdGhlIGFuYWx5c2lzIG9mIHRoZSBmaWxlIGZyb206IGh0dHBzOi8vYXBpLmFwaXMuZ3VydS92Mi9zcGVjcy9jaXJjbGVjaS5jb20vdjEvb3BlbmFwaS55YW1sCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkF1ZyAxMSwgMjAyMyAzOjQ1OjAxIFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDEgb2YgMTUgaXMgbm93IGNoZWNrZWQ6CkNSVUQgZnVuY3Rpb24gbmFtZXMgc2hvdWxkIG5vdCBiZSB1c2VkIGluIFVSSXMKWz09PT09PT09PT1dIDEwMCUKQXVnIDExLCAyMDIzIDM6NDU6MDEgUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgMiBvZiAxNSBpcyBub3cgY2hlY2tlZDoKR0VUIG11c3QgYmUgdXNlZCB0byByZXRyaWV2ZSBhIHJlcHJlc2VudGF0aW9uIG9mIGEgcmVzb3VyY2UKWz09PT09PT09PT1dIDEwMCUKQXVnIDExLCAyMDIzIDM6NDU6MDEgUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgMyBvZiAxNSBpcyBub3cgY2hlY2tlZDoKRm9yd2FyZCBzbGFzaCBzZXBhcmF0b3IgKC8pIG11c3QgYmUgdXNlZCB0byBpbmRpY2F0ZSBhIGhpZXJhcmNoaWNhbCByZWxhdGlvbnNoaXAKWz09PT09PT09PT1dIDEwMCUKQXVnIDExLCAyMDIzIDM6NDU6MDEgUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgNCBvZiAxNSBpcyBub3cgY2hlY2tlZDoKQSB2ZXJiIG9yIHZlcmIgcGhyYXNlIHNob3VsZCBiZSB1c2VkIGZvciBjb250cm9sbGVyIG5hbWVzCls9PT09PT09PT09XSAxMDAlCkF1ZyAxMSwgMjAyMyAzOjQ1OjAzIFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDUgb2YgMTUgaXMgbm93IGNoZWNrZWQ6Ckh5cGhlbnMgKC0pIHNob3VsZCBiZSB1c2VkIHRvIGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5IG9mIFVSSXMKWz09PT09PT09PT1dIDEwMCUKQXVnIDExLCAyMDIzIDM6NDU6MDQgUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgNiBvZiAxNSBpcyBub3cgY2hlY2tlZDoKRmlsZSBleHRlbnNpb25zIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gVVJJcwpbPT09PT09PT09PV0gMTAwJQpBdWcgMTEsIDIwMjMgMzo0NTowNCBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSA3IG9mIDE1IGlzIG5vdyBjaGVja2VkOgpHRVQgYW5kIFBPU1QgbXVzdCBub3QgYmUgdXNlZCB0byB0dW5uZWwgb3RoZXIgcmVxdWVzdCBtZXRob2RzCls9PT09PT09PT09XSAxMDAlCkF1ZyAxMSwgMjAyMyAzOjQ1OjA0IFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDggb2YgMTUgaXMgbm93IGNoZWNrZWQ6CkEgc2luZ3VsYXIgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgZG9jdW1lbnQgbmFtZXMKWz09PT09PT09PT1dIDEwMCUKQXVnIDExLCAyMDIzIDM6NDU6MDggUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgOSBvZiAxNSBpcyBub3cgY2hlY2tlZDoKRGVzY3JpcHRpb24gb2YgcmVxdWVzdCBzaG91bGQgbWF0Y2ggd2l0aCB0aGUgdHlwZSBvZiB0aGUgcmVxdWVzdC4KQXVnIDExLCAyMDIzIDM6NDU6MDggUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgMTAgb2YgMTUgaXMgbm93IGNoZWNrZWQ6CjQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscwpbPT09PT09PT09PV0gMTAwJQpBdWcgMTEsIDIwMjMgMzo0NTowOCBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSAxMSBvZiAxNSBpcyBub3cgY2hlY2tlZDoKVW5kZXJzY29yZXMgKF8pIHNob3VsZCBub3QgYmUgdXNlZCBpbiBVUkkKWz09PT09PT09PT1dIDEwMCUKQXVnIDExLCAyMDIzIDM6NDU6MDggUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgMTIgb2YgMTUgaXMgbm93IGNoZWNrZWQ6CkNvbnRlbnQtVHlwZSBtdXN0IGJlIHVzZWQKWz09PT09PT09PT1dIDEwMCUKQXVnIDExLCAyMDIzIDM6NDU6MDggUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgMTMgb2YgMTUgaXMgbm93IGNoZWNrZWQ6Ckxvd2VyY2FzZSBsZXR0ZXJzIHNob3VsZCBiZSBwcmVmZXJyZWQgaW4gVVJJIHBhdGhzCls9PT09PT09PT09XSAxMDAlCkF1ZyAxMSwgMjAyMyAzOjQ1OjA4IFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDE0IG9mIDE1IGlzIG5vdyBjaGVja2VkOgpBIHRyYWlsaW5nIGZvcndhcmQgc2xhc2ggKC8pIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gVVJJcwpbPT09PT09PT09PV0gMTAwJQpBdWcgMTEsIDIwMjMgMzo0NTowOCBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSAxNSBvZiAxNSBpcyBub3cgY2hlY2tlZDoKQSBwbHVyYWwgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgY29sbGVjdGlvbiBvciBzdG9yZSBuYW1lcwpbPT09PT09PT09PV0gMTAwJQpSRVNUIEFQSSBTcGVjaWZpY2F0aW9uIFJlcG9ydAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQp8IExpbmUgTm8uIHwgTGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSdWxlIFZpb2xhdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IDI3ICAgICAgIHwgL21lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDM4ICAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDM4ICAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDM4ICAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBIHBsdXJhbCBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBjb2xsZWN0aW9uIG9yIHN0b3JlIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDgwICAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vYnVpbGQtY2FjaGUgICAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDgwICAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vYnVpbGQtY2FjaGUgICAgICAgICAgICAgICAgfCBBIHBsdXJhbCBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBjb2xsZWN0aW9uIG9yIHN0b3JlIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDgwICAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vYnVpbGQtY2FjaGUgICAgICAgICAgICAgICAgfCBBIHZlcmIgb3IgdmVyYiBwaHJhc2Ugc2hvdWxkIGJlIHVzZWQgZm9yIGNvbnRyb2xsZXIgbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDk3ICAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vY2hlY2tvdXQta2V5ICAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDk3ICAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vY2hlY2tvdXQta2V5ICAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDk3ICAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vY2hlY2tvdXQta2V5ICAgICAgICAgICAgICAgfCBBIHBsdXJhbCBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBjb2xsZWN0aW9uIG9yIHN0b3JlIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDEyOCAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vY2hlY2tvdXQta2V5L3tmaW5nZXJwcmludH0gfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDEyOCAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vY2hlY2tvdXQta2V5L3tmaW5nZXJwcmludH0gfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDEyOCAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vY2hlY2tvdXQta2V5L3tmaW5nZXJwcmludH0gfCBBIHBsdXJhbCBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBjb2xsZWN0aW9uIG9yIHN0b3JlIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDE1NCAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vZW52dmFyICAgICAgICAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDE1NCAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vZW52dmFyICAgICAgICAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDE1NCAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vZW52dmFyICAgICAgICAgICAgICAgICAgICAgfCBBIHBsdXJhbCBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBjb2xsZWN0aW9uIG9yIHN0b3JlIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDE1NCAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vZW52dmFyICAgICAgICAgICAgICAgICAgICAgfCBIeXBoZW5zICgtKSBzaG91bGQgYmUgdXNlZCB0byBpbXByb3ZlIHRoZSByZWFkYWJpbGl0eSBvZiBVUklzICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDE3MCAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vZW52dmFyL3tuYW1lfSAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDE3MCAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vZW52dmFyL3tuYW1lfSAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDE3MCAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vZW52dmFyL3tuYW1lfSAgICAgICAgICAgICAgfCBBIHBsdXJhbCBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBjb2xsZWN0aW9uIG9yIHN0b3JlIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDE5NyAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vc3NoLWtleSAgICAgICAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDE5NyAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vc3NoLWtleSAgICAgICAgICAgICAgICAgICAgfCBBIHBsdXJhbCBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBjb2xsZWN0aW9uIG9yIHN0b3JlIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDIzNyAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vdHJlZS97YnJhbmNofSAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDIzNyAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0vdHJlZS97YnJhbmNofSAgICAgICAgICAgICAgfCBBIHBsdXJhbCBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBjb2xsZWN0aW9uIG9yIHN0b3JlIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDI3MiAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0ve2J1aWxkX251bX0gICAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDI3MiAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0ve2J1aWxkX251bX0gICAgICAgICAgICAgICAgfCBBIHBsdXJhbCBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBjb2xsZWN0aW9uIG9yIHN0b3JlIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDI4OCAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0ve2J1aWxkX251bX0vYXJ0aWZhY3RzICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDI4OCAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0ve2J1aWxkX251bX0vYXJ0aWZhY3RzICAgICAgfCBBIHBsdXJhbCBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBjb2xsZWN0aW9uIG9yIHN0b3JlIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDMwMyAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0ve2J1aWxkX251bX0vY2FuY2VsICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDMwMyAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0ve2J1aWxkX251bX0vY2FuY2VsICAgICAgICAgfCBBIHBsdXJhbCBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBjb2xsZWN0aW9uIG9yIHN0b3JlIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDMwMyAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0ve2J1aWxkX251bX0vY2FuY2VsICAgICAgICAgfCBEZXNjcmlwdGlvbiBvZiByZXF1ZXN0IHNob3VsZCBtYXRjaCB3aXRoIHRoZSB0eXBlIG9mIHRoZSByZXF1ZXN0LiAgICAgICAgICAgICAgICAgICAgICAgfAp8IDMxOCAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0ve2J1aWxkX251bX0vcmV0cnkgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDMxOCAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0ve2J1aWxkX251bX0vcmV0cnkgICAgICAgICAgfCBBIHBsdXJhbCBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBjb2xsZWN0aW9uIG9yIHN0b3JlIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDMzMyAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0ve2J1aWxkX251bX0vdGVzdHMgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDMzMyAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0ve2J1aWxkX251bX0vdGVzdHMgICAgICAgICAgfCBBIHBsdXJhbCBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBjb2xsZWN0aW9uIG9yIHN0b3JlIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDMzMyAgICAgIHwgL3Byb2plY3Qve3VzZXJuYW1lfS97cHJvamVjdH0ve2J1aWxkX251bX0vdGVzdHMgICAgICAgICAgfCBEZXNjcmlwdGlvbiBvZiByZXF1ZXN0IHNob3VsZCBtYXRjaCB3aXRoIHRoZSB0eXBlIG9mIHRoZSByZXF1ZXN0LiAgICAgICAgICAgICAgICAgICAgICAgfAp8IDM1MCAgICAgIHwgL3Byb2plY3RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDM2MiAgICAgIHwgL3JlY2VudC1idWlsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDM3NiAgICAgIHwgL3VzZXIvaGVyb2t1LWtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMgfAp8IDM3NiAgICAgIHwgL3VzZXIvaGVyb2t1LWtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBIeXBoZW5zICgtKSBzaG91bGQgYmUgdXNlZCB0byBpbXByb3ZlIHRoZSByZWFkYWJpbGl0eSBvZiBVUklzICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpJbiB0b3RhbCA0MCBydWxlIHZpb2xhdGlvbnMgd2VyZSBmb3VuZApgYGAKCiMjIENvbW1hbmQgTGluZSBPcHRpb25zCnwgT3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVxdWlyZWQgfAp8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IDotLS0tLS0tIHwKfCBgLXAgJFVSSV9QQVRIYCw8YnI+YC0tcGF0aCAkVVJJX1BBVEhgICAgICAgICB8IExvY2FsIHBhdGggb3IgcHVibGljIFVSTCB0byBPcGVuQVBJIGRlZmluaXRpb24gKDIuMCBvciBoaWdoZXI7IEpTT04gb3IgWUFNTCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBZRVMgICAgICB8CnwgYC1lYCw8YnI+YC0tZXhwZXJ0TW9kZWAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlcmFjdGl2ZWx5IHNlbGVjdCB0aGUgcnVsZXMgZm9yIHRoZSBhbmFseXNpcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTk8gICAgICAgfAp8IGAtcmAsPGJyPmAtLXJlcG9ydGAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR2VuZXJhdGUgYSBNYXJrZG93biByZXBvcnQgZmlsZSB3aXRoIHRoZSBhbmFseXNpcyByZXN1bHRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5PKiAgICAgIHwKfCBgLXJuICRGSUxFTkFNRWAsPGJyPmAtLXJlcG9ydE5hbWUgJEZJTEVOQU1FYCB8IFNwZWNpZnkgYSBjdXN0b20gZmlsZW5hbWUgZm9yIHRoZSBNYXJrZG93biByZXBvcnQuIElmIHRoaXMgb3B0aW9uIGlzIHNlbGVjdGVkLCB0aGUgYWJvdmUgb3B0aW9uIGZvciBvdXRwdXQgaXMgbm90IG5lZWRlZC4gfCBOTyogICAgICB8CgoqSWYgbm8gYWRkaXRpb25hbCBvdXRwdXQgd2FzIHNwZWNpZmllZCwgdGhlIHJlc3VsdHMgd2lsbCBvbmx5IGJlIHByaW50ZWQgdG8gdGhlIGNvbnNvbGUuCgpgYGBiYXNoCiMgUnVuIHdpdGggbG9jYWwgZmlsZSBhbmQgbm8gb3V0cHV0IGZpbGUKamF2YSAtamFyIGJ1aWxkL2xpYnMvcmVzdC1ydWxlci5qYXIgLXAgcGF0aC90by9vcGVuYXBpL2RlZmluaXRvbi5qc29uCgojIFJ1biB3aXRoIHB1YmxpYyBVUkwgYW5kIG5vIG91dHB1dCBmaWxlCmphdmEgLWphciBidWlsZC9saWJzL3Jlc3QtcnVsZXIuamFyIC1wIGh0dHBzOi8vd3d3LmN1c3RvbS5kb21haW4uY29tL3BhdGgvdG8vb3BlbmFwaS1kZWZpbml0b24ueWFtbAoKIyBSdW4gd2l0aCBjdXN0b20gZmlsZW5hbWUgZm9yIE1hcmtkb3duIHJlcG9ydApqYXZhIC1qYXIgYnVpbGQvbGlicy9yZXN0LXJ1bGVyLmphciAtcCBwYXRoL3RvL29wZW5hcGkvZGVmaW5pdG9uLnlhbWwgLXJuIGN1c3RvbS1maWxlLW5hbWUKCiMgUnVuIHdpdGggZ2VuZXJhdGVkIGZpbGVuYW1lIGZvciBNYXJrZG93biByZXBvcnQKamF2YSAtamFyIGJ1aWxkL2xpYnMvcmVzdC1ydWxlci5qYXIgLXAgcGF0aC90by9vcGVuYXBpL2RlZmluaXRvbi55YW1sIC1yCgojIFJ1biBpbiBleHBlcnQgbW9kZQpqYXZhIC1qYXIgYnVpbGQvbGlicy9yZXN0LXJ1bGVyLmphciAtcCBwYXRoL3RvL29wZW5hcGkvZGVmaW5pdG9uLmpzb24gLWUKYGBgCg== readmeEtag: '"98b3fab0c1b8341b37b2ef0515f5353096d78941"' readmeLastModified: Thu, 14 Mar 2024 13:17:12 GMT repositoryId: 490623497 description: >- The RESTRuler is a tool that evaluates OpenAPI definitions (version>=2.0) using design rule violations. created: '2022-05-10T09:13:14Z' updated: '2025-07-09T18:05:25Z' language: Java archived: false stars: 13 watchers: 3 forks: 2 owner: restful-ma logo: https://avatars.githubusercontent.com/u/57215045?v=4 license: Apache-2.0 repoEtag: '"66b4cf0faeeb495394a3b48ff4d92fc5409f6a3277c65720526007e8c3c7afc0"' repoLastModified: Wed, 09 Jul 2025 18:05:25 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/stackql-labs/openapi-doc-util v3: true id: c08878259bb6e3f767425401ba3faec9 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWRvYy11dGlsCj4gQ29tbWFuZCBsaW5lIHV0aWxpdHkgdG8gc3BsaXQgT3BlbkFQSSBkb2N1bWVudHMgaW50byBzbWFsbGVyLCBzZWxmIGNvbnRhaW5lZCwgc2VydmljZSBvcmllbnRlZCBkb2N1bWVudHMgYW5kIHByZXBhcmUgU3RhY2tRTCBwcm92aWRlciBpbnRlcmZhY2VzCj4gQ29tbWFuZCBsaW5lIHV0aWxpdHkgdG8gaGVscCBkZXZlbG9wZXJzIHByZXBhcmUgYW5kIHN1Ym1pdCBTdGFja1FMIHByb3ZpZGVyIHNwZWNzLCBzZWUgW1N0YWNrUUwgUmVhZG1lXShodHRwczovL2dpdGh1Yi5jb20vc3RhY2txbC9zdGFja3FsL2Jsb2IvbWFpbi9SRUFETUUubWQpCgojIyBJbnN0YWxsYXRpb24KCjxkZXRhaWxzPgo8c3VtbWFyeT5OUE08L3N1bW1hcnk+CjxwPgoKYGBgYmFzaApucG0gaSBAc3RhY2txbC9vcGVuYXBpLWRvYy11dGlsCmBgYAoKPC9wPgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KPHN1bW1hcnk+WUFSTjwvc3VtbWFyeT4KPHA+CgpgYGBiYXNoCnlhcm4gYWRkIEBzdGFja3FsL29wZW5hcGktZG9jLXV0aWwKYGBgCgo8L3A+CjwvZGV0YWlscz4KCiMjIFNldHVwCgpmcm9tIHRoZSBwYWNrYWdlIGRpcmVjdG9yeSwgcnVuOgoKYGBgYmFzaApucG0gbGluawpgYGAKCiMjIEJhY2tncm91bmQKCjxkZXRhaWxzPgo8c3VtbWFyeT5SZWFkIHRoaXMgc2VjdGlvbiBmb3IgYmFja2dyb3VuZCBvbiB0aGUgU3RhY2tRTCBwcm9kdWN0PC9zdW1tYXJ5Pgo8cD4KVGhlIFN0YWNrUUwgdXRpbGl0eSBwcm92aWRlcyBhIFNRTCBpbnRlcmZhY2UgdG8gY2xvdWQgYW5kIFNhYVMgcHJvdmlkZXJzLCBtYXBwaW5nIGEgcHJvdmlkZXIgdG8gYW4gT1JNLCB0cmFuc3BpbGluZyBpbnB1dCBTUUwgdG8gcHJvdmlkZXIgQVBJIHJlcXVlc3RzLCBhbmQgYnJpbmdpbmcgYmFjayByZXNwb25zZSBkYXRhIGFzIGEgU1FMIGJhc2VkIHJlc3VsdCBzZXQuICBTdGFja1FMIGlzIGNhcGFibGUgb2YgRE1MIG9wZXJhdGlvbnMgc3VjaCBhcyBgSU5TRVJUYCBhbmQgYERFTEVURWAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gcHJvdmlzaW9uIG9yIGRlLXByb3Zpc2lvbiBjbG91ZCByZXNvdXJjZXMsIHF1ZXJ5IG9wZXJhdGlvbnMgdXNpbmcgYFNFTEVDVGAgdG8gY29sbGVjdCwgYW5hbHl6ZSwgcmVwb3J0IG9uIGFzc2V0IG9yIGNvbmZpZ3VyYXRpb24gZGF0YSwgYW5kIGxpZmVjeWNsZSBvcGVyYXRpb25zIHN1Y2ggYXMgc3RhcnRpbmcgYSBWTSBpbnN0YW5jZSB1c2luZyB0aGUgYEVYRUNgIGNvbW1hbmQgaW4gU3RhY2tRTC4gIAoKVGhlIFN0YWNrUUwgT1JNIHByb3ZpZGVzIGEgbG9naWNhbCBtb2RlbCB0byB3b3JrIHdpdGggY2xvdWQgcmVzb3VyY2VzIHNpbWlsYXIgdG8gdGhlIHdheSBkYXRhYmFzZXMgYXJlIG9yZ2FuaXplZCBpbnRvIHNjaGVtYXMuICBUaGlzIG9iamVjdC9yZXNvdXJjZSBoaWVyYXJjaHkgaXMgc3VtbWFyaXplZCBiZWxvdzogIAoKYGBgCnByb3ZpZGVyLwrilJzilIAgc2VydmljZS8K4pSCICDilJzilIAgcmVzb3VyY2UvCuKUgiAg4pSCICDilJzilIAgZmllbGRzCuKUgiAg4pSCICDilJzilIAgbWV0aG9kcwpgYGAKCmFuIGV4YW1wbGUgd291bGQgYmU6CgpgYGAKZ29vZ2xlLwrilJzilIAgY29tcHV0ZS8K4pSCICDilJzilIAgaW5zdGFuY2VzLwrilIIgIOKUgiAg4pSc4pSAIGlkLCBuYW1lLCBzdGF0dXMsIC4uLgrilIIgIOKUgiAg4pSc4pSAIHNlbGVjdCwgaW5zZXJ0LCBkZWxldGUsIHN0YXJ0LCBzdG9wLCAuLi4KYGBgCgpFbmFibGluZyBTdGFja1FMIHRvIGludGVyYWN0IHdpdGggdGhlIGBnb29nbGVgIHByb3ZpZGVyIHVzaW5nIFNRTCBzZW1hbnRpY3MsIGZvciBleGFtcGxlOgoKUHJvdmlkZXIgZGlzY292ZXJ5IG9wZXJhdGlvbnMgc3VjaCBhcy4uCgpgYGBzcWwKU0hPVyBSRVNPVVJDRVMgSU4gZ29vZ2xlLmNvbXB1dGU7CkRFU0NSSUJFIGdvb2dsZS5jb21wdXRlLmluc3RhbmNlczsKYGBgCgpRdWVyeSBvcGVyYXRpb25zIHN1Y2ggYXMuLiAgCgpgYGBzcWwKU0VMRUNUIHN0YXR1cywgQ09VTlQoKikgYXMgbnVtX2luc3RhbmNlcyAKRlJPTSBnb29nbGUuY29tcHV0ZS5pbnN0YW5jZXMKV0hFUkUgcHJvamVjdCA9ICdteXByb2plY3QnIGFuZCB6b25lID0gJ3VzLXdlc3QtMWEnCkdST1VQIEJZIHN0YXR1czsKYGBgCgpQcm92aXNpb25pbmcgb3BlcmF0aW9ucyBzdWNoIGFzIGNyZWF0aW5nIGEgQ29tcHV0ZSBFbmdpbmUgaW5zdGFuY2UgdXNpbmcgYW4gYElOU0VSVGAgc3RhdGVtZW50IG9yIGRlcHJvdmlzaW9uaW5nIGFuIGluc3RhbmNlIHVzaW5nIGEgYERFTEVURWAgc3RhdGVtZW50LiAgCjwvcD4KPC9kZXRhaWxzPgoKPGRldGFpbHM+CjxzdW1tYXJ5PlJlYWQgdGhpcyBzZWN0aW9uIGZvciBiYWNrZ3JvdW5kIG9uIHRoZSBTdGFja1FMIFByb3ZpZGVyIFJlZ2lzdHJ5PC9zdW1tYXJ5Pgo8cD4KU3RhY2tRTCBwcm92aWRlciBpbnRlcmZhY2VzIChzdWNoIGFzIEdDUCwgT2t0YSwgR2l0SHViLCBBV1MsIEF6dXJlLCBldGMpIGFyZSBkZWZpbmVkIHVzaW5nIGFubm90YXRpb25zIHRvIHRoZSBwcm92aWRlciBBUEkgKE9wZW5BUEkpIHNwZWNpZmljYXRpb24sIHRoZXNlIGFubm90YXRpb25zIG9yIGV4dGVuc2lvbnMgYWxsb3cgU3RhY2tRTCB0byBtYXAgdGhlIHByb3ZpZGVycyByZXNvdXJjZSB0byB0aGUgZGVzaXJlZCBPUk0gYW5kIGRlZmluZSByb3V0ZXMgZm9yIFNRTCB2ZXJicyBzdWNoIGFzIGBTRUxFQ1RgLCBgSU5TRVJUYCwgYERFTEVURWAsIGFuZCBgRVhFQ2AuICAKPC9wPgo8L2RldGFpbHM+CgojIyBVc2FnZQoKYGBgYmFzaApvcGVuYXBpLWRvYy11dGlsIDxjb21tYW5kPiBbPGFyZ3VtZW50cyhzKT5dIFs8ZmxhZyhzKT5dCmBgYAoKIyMjIENvbW1hbmRzCgpfX2B2YWxpZGF0ZWBfXyAgCgpWYWxpZGF0ZXMgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGRvY3VtZW50LiAgIAoKX19gc3BsaXRgX18gIAoKU3BsaXRzIGFuIE9wZW4gQVBJIGRvY3VtZW50IGludG8gc21hbGxlciwgc2VsZiBjb250YWluZWQsIHNlcnZpY2Ugc2NvcGVkIGRvY3VtZW50cyBiYXNlZCB1cG9uIGEgc3BlY2lmaWVkIHNlcnZpY2UgZGlzY3JpbWluYXRvciAoSlNPTlBhdGggZXhwcmVzc2lvbiByZWxhdGl2ZSB0byBlYWNoIG9wZXJhdGlvbikuICBUYWtlcyBhbiBPcGVuQVBJIGRvY3VtZW50IGFzIGlucHV0IGFuZCBvdXRwdXRzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOiAgCgpgYGAKe291dHB1dF9kaXJ9LwrilJzilIAge3Byb3ZpZGVyX25hbWV9LwrilIIgIOKUnOKUgCB7cHJvdmlkZXJfdmVyc2lvbn0vCuKUgiAg4pSCICDilJzilIAgc2VydmljZXMvCuKUgiAg4pSCICDilIIgIOKUnOKUgCB7c2VydmljZV9uYW1lfS8K4pSCICDilIIgIOKUgiAg4pSCICDilJzilIAge3NlcnZpY2VfbmFtZX0ueWFtbArilIIgIOKUgiAg4pSCICDilJzilIAgLi4uLwpgYGAKVGhlIGB7c2VydmljZV9uYW1lfS55YW1sYCBmaWxlIGlzIGEgc2VsZiBjb250YWluZWQsIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBkb2N1bWVudCwgY29udGFpbmluZyBvbmx5IG9wZXJhdGlvbnMgYW5kIGNvbXBvbmVudHMgZm9yIHRoZSBzcGVjaWZpZWQgc2VydmljZS4gIAoKX19gcHJvdmlkZXItZGV2YF9fICAKCkl0ZXJhdGVzIHRocm91Z2ggYSBkaXJlY3Rvcnkgb2Ygc2VydmljZXMgKGNyZWF0ZWQgdXNpbmcgdGhlIGBzcGxpdGAgZnVuY3Rpb24pLCBnZW5lcmF0ZXMgYW4gYWRkaXRpb25hbCBkb2N1bWVudCBmb3IgZWFjaCBzZXJ2aWNlIGB7c2VydmljZV9uYW1lfS1yZXNvdXJjZXMueWFtbGAgYW5kIGFuIGluZGV4IGRvY3VtZW50IGZvciBhbGwgc2VydmljZXMgbmFtZWQgYHByb3ZpZGVyLnlhbWxgLCB0aGlzIGlzIHVzZWZ1bCBmb3IgZGV2ZWxvcGluZyBuZXcgU3RhY2tRTCBwcm92aWRlcnMuICBUaGUgb3V0cHV0IHN0cnVjdHVyZSBpcyBhcyBmb2xsb3dzOiAgCgpgYGAKe2FwaV9kb2NfZGlyfS8K4pSc4pSAIHtwcm92aWRlcl9uYW1lfS8K4pSCICDilJzilIAge3Byb3ZpZGVyX3ZlcnNpb259LwrilIIgIOKUgiAg4pSc4pSAIHNlcnZpY2VzLwrilIIgIOKUgiAg4pSCICDilJzilIAge3NlcnZpY2VfbmFtZX0vCuKUgiAg4pSCICDilIIgIOKUgiAg4pSc4pSAIHtzZXJ2aWNlX25hbWV9LnlhbWwK4pSCICDilIIgIOKUgiAg4pSCICDilJzilIAge3NlcnZpY2VfbmFtZX0tcmVzb3VyY2VzLnlhbWwK4pSCICDilIIgIOKUgiAg4pSc4pSAIC4uLi8K4pSCICDilIIgIOKUnOKUgCBwcm92aWRlci55YW1sCmBgYApUaGUgb3JpZ2luYWwgT3BlbkFQSSBkb2N1bWVudHMgYXJlIG5vdCBtb2RpZmllZC4gIAoKVGhlIGBwcm92aWRlci1kZXZgIGZ1bmN0aW9uIHdpbGwgaW5mZXIgU1FMIHJvdXRlcyBmb3Igb3BlcmF0aW9ucyB1bmRlciBlYWNoIHJlc291cmNlcyB1bmRlciB0aGUgYHNxbFZlcmJzYCBrZXksIHRoaXMgc2hvdWxkIGJlIHJldmlld2VkIGJ5IHRoZSBkZXZlbG9wZXIsIHJlbW92aW5nIGFueSBkdXBsaWNhdGUgb3IgZXJyb25lb3VzIHJvdXRlcy4KCl9fYHByb3ZpZGVyLWJ1aWxkYF9fICAKCk9wZXJhdGVzIG9uIHRoZSBkZXYgZGlyZWN0b3J5IHN0cnVjdHVyZSBnZW5lcmF0ZWQgdXNpbmcgdGhlIGBwcm92aWRlci1kZXZgIGNvbW1hbmQsIGFzc2VtYmxlcyBhIGNvbXBsZXRlIE9wZW4gQVBJIHNwZWNpZmljYXRpb24gcGVyIHNlcnZpY2UgaW5jbHVkaW5nIHRoZSBTdGFja1FMIHJlc291cmNlcyBmb3IgZWFjaCBzZXJ2aWNlIGluIGVhY2ggZG9jdW1lbnQgdW5kZXIgYGNvbXBvbmVudHMveC1zdGFja1FMLXJlc291cmNlc2AsIGFuZCBvdXRwdXRzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIHRvIGEgbmV3IGRpcmVjdG9yeTogIAoKYGBgCntvdXRwdXRfZGlyfS8K4pSc4pSAIHtwcm92aWRlcl9uYW1lfS8K4pSCICDilJzilIAge3Byb3ZpZGVyX3ZlcnNpb259LwrilIIgIOKUgiAg4pSc4pSAIHNlcnZpY2VzLwrilIIgIOKUgiAg4pSCICDilJzilIAge3NlcnZpY2VfbmFtZX0vCuKUgiAg4pSCICDilIIgIOKUgiAg4pSc4pSAIHtzZXJ2aWNlX25hbWV9LnlhbWwK4pSCICDilIIgIOKUgiAg4pSc4pSAIC4uLi8K4pSCICDilIIgIOKUnOKUgCBwcm92aWRlci55YW1sCmBgYAoKVGhlIG91dHB1dCBmcm9tIHRoZSBgcHJvdmlkZXItYnVpbGRgIGNvbW1hbmQgY2FuIGJlIHVzZWQgdG8gdGVzdCBsb2NhbGx5IChzZWUgW1Rlc3QgVXNpbmcgYSBMb2NhbCBSZWdpc3RyeV0oI3Rlc3QtdXNpbmctYS1sb2NhbC1yZWdpc3RyeSkpLiBPbmNlIHlvdSBoYXZlIHRlc3RlZCBsb2NhbGx5IHlvdSBjYW4gcmFpc2UgYSBwdWxsIHJlcXVlc3QgdG8gW3N0YWNrcWwvc3RhY2txbC1wcm92aWRlci1yZWdpc3RyeV0oaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrcWwvc3RhY2txbC1wcm92aWRlci1yZWdpc3RyeSkuICAgIAoKCiMjIyBPcHRpb25zCgpfX2AtLXN2Y0Rpc2NyaW1pbmF0b3JgLCBgLXNgX18gICpKU09OUGF0aCBleHByZXNzaW9uKiBPUiAqc3ZjTmFtZTpzZXJ2aWNlbmFtZSoKClRoZSBfXypzZXJ2aWNlIGRpc2NyaW1pbmF0b3IqX18gb3B0aW9uIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGhvdyB0byBzcGxpdCBhIGxhcmdlIHByb3ZpZGVyIGRvY3VtZW50IGludG8gc21hbGxlciwgc2VydmljZSBzY29wZWQgZG9jdW1lbnRzLiAgVGhlIG9wdGlvbiBpcyByZXF1aXJlZCBmb3IgdGhlIF9fYHNwbGl0YF9fIGNvbW1hbmQgYW5kIGlnbm9yZWQgb3RoZXJ3aXNlLiAgSWYgeW91IGRvIG5vdCB3aXNoIHRvIHNwaWx0IHRoZSBwcm92aWRlciBBUEkgc3BlYywgc3BlY2lmeSBgc3ZjTmFtZTo8c2VydmljZW5hbWU+YCBmb3IgdGhpcyBvcHRpb24gd2hpY2ggd2lsbCBkZWZpbmUgb25lIHNlcnZpY2UgaW4gdGhlIFN0YWNrUUwgcHJvdmlkZXIgd2l0aCB0aGUgbmFtZSBwcm92aWRlZCBpbiAqc2VydmljZW5hbWUqLiAgCgo+IEV4YW1wbGU6IGAtcyAiJFsneC1naXRodWInXS5jYXRlZ29yeSJgIHdvdWxkIHNwbGl0IHRoZSBnaXZlbiBwcm92aWRlciBBUEkgc3BlYyBpbnRvIHNlcnZpY2UgZG9jdW1lbnRzIGJ5IG1hdGNoaW5nIHRoZSBgeC1naXRodWIuY2F0ZWdvcnlgIHZhbHVlIGluIGVhY2ggdW5pcXVlIG9wZXJhdGlvbiAoY29tYmluYXRpb24gb2YgYSBwYXRoIGFuZCBhbiBIVFRQIG1ldGhvZCkgaW4gQVBJIGRvYy4KCl9fYC0tcmVzRGlzY3JpbWluYXRvcmAsIGAtcmBfXyAgKkpTT05QYXRoIGV4cHJlc3Npb24qICBPUiAqcGF0aF90b2tlbnMqCgpUaGUgX18qcmVzb3VyY2UgZGlzY3JpbWluYXRvcipfXyBvcHRpb24gaXMgdXNlZCB0byBkZXRlcm1pbmUgaG93IHRvIGlkZW50aWZ5IFN0YWNrUUwgcmVzb3VyY2VzIGluIGEgZ2l2ZW4gcHJvdmlkZXIgQVBJIHNwZWMuICBUaGlzIG9wdGlvbiBpcyB1c2VkIGZvciB0aGUgX19gcHJvdmlkZXItZGV2YF9fIGNvbW1hbmQgYW5kIGlnbm9yZWQgb3RoZXJ3aXNlLgoKPiBFeGFtcGxlOiBgLXIgIiRbJ3gtZ2l0aHViJ10uc3ViY2F0ZWdvcnkiYCAgd291bGQgaWRlbnRpZnkgcmVzb3VyY2VzIGluIHRoZSBnaXZlbiBwcm92aWRlciBBUEkgc3BlYyBieSBtYXRjaGluZyB0aGUgYHgtZ2l0aHViLnN1YmNhdGVnb3J5YCB2YWx1ZSBpbiBlYWNoIHVuaXF1ZSBvcGVyYXRpb24gKGNvbWJpbmF0aW9uIG9mIGEgcGF0aCBhbmQgYW4gSFRUUCBtZXRob2QpIGluIEFQSSBkb2MuCgppZiAqcGF0aF90b2tlbnMqIGlzIHNwZWNpZmllZCBmb3IgdGhlIF9fYC0tcmVzRGlzY3JpbWluYXRvcmBfXyBvcHRpb24sIHRoZSByZXNvdXJjZSBuYW1lIHdpbGwgYmUgZGVyaXZlZCBieSBqb2luaW5nIHRoZSAnbWVhbmluZ2Z1bCcgcGF0aCB0b2tlbnMgKG5vdCBlcXVpdmFsZW50IHRvIHRoZSBzZXJ2aWNlIG5hbWUpIHdpdGggYW4gJ18nLiAgRm9yIGluc3RhbmNlIGEgcGF0aCBvZiBgL3NpdGVzL3tzaXRlX2lkfS9zZXJ2aWNlLWluc3RhbmNlc2Agd291bGQgcmVzdWx0IGluIGEgcmVzb3VyY2UgbmFtZSBvZiBgc2l0ZXNfc2VydmljZV9pbnN0YW5jZXNgIGFzc3VtaW5nIHRoZSBzZXJ2aWNlIG5hbWUgd2FzIG5vdCBgc2l0ZXNgLiAgCgpfX2AtLW1ldGhvZGtleWAsIGAtbWBfXyAgKkpTT05QYXRoIGV4cHJlc3Npb24qICAKClRoZSBfXyptZXRob2Qga2V5Kl9fIG9wdGlvbiBkZXRlcm1pbmVzIHVuaXF1ZWx5IG5hbWVkIG9wZXJhdGlvbnMgd2hpY2ggYXJlIG1hcHBlZCB0byBTUUwgbWV0aG9kcyBpbiB0aGUgU3RhY2tRTCBPUk0uICBUaGVzZSBtZXRob2RzIGFyZSB0aGVuIG1hcHBlZCB0byBkZWZhdWx0IHJvdXRlcyAoU1FMIHF1ZXJ5IGFuZCBETUwgbWV0aG9kcykgaW4gU3RhY2tRTCwgdGhlIGRldmVsb3BlciBjYW4gb3ZlcnJpZGUgb3IgdXBkYXRlIHRoZXNlIG1hcHBpbmdzIGluIHRoZSBkZXZlbG9wbWVudCBkb2NzIHdoaWNoIGFyZSBvdXRwdXR0ZWQgZnJvbSB0aGUgX19gcHJvdmlkZXItZGV2YF9fICBjb21tYW5kLiAgVGhpcyBvcHRpb24gaXMgdXNlZCBmb3IgdGhlIF9fYHByb3ZpZGVyLWRldmBfXyBjb21tYW5kIGFuZCBpZ25vcmVkIG90aGVyd2lzZS4gIAoKPiBJZiBzdXBwbGllZCBpdCBtdXN0IGJlIGEgSlNPTlBhdGggZXhwcmVzc2lvbiByZWxhdGl2ZSB0byB0aGUgb3BlcmF0aW9uIChodHRwIHBhdGggYW5kIHZlcmIpLCBpZiBub3Qgc3VwcGxpZWQgaXQgd2lsbCBkZWZhdWx0IHRvIGBvcGVyYXRpb25JZGAgaW4gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmb3IgZWFjaCBvcGVyYXRpb24uICAKCl9fYC0tb3V0cHV0YCwgYC1vYF9fICAqZGlyZWN0b3J5KiAgCgpUaGUgX18qb3V0cHV0IGRpcmVjdG9yeSpfXyBvcHRpb24gc3BlY2lmaWVzIHRoZSByb290IGRpcmVjdG9yeSB0byBvdXRwdXQgZmlsZXMgZnJvbSB0aGUgIF9fYHNwbGl0YF9fLCBvciB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gb3V0cHV0IGFzc2VtYmxlZCBwcm92aWRlciBzcGVjcyBmcm9tIHRoZSBfX2Bwcm92aWRlci1idWlsZGBfXyBjb21tYW5kLiAgVGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuICBJZiB0aGUgZGlyZWN0b3J5IGV4aXN0cyBpbiBlaXRoZXIgY2FzZSB0aGUgcHJvZ3JhbSB3aWxsIGV4aXQgd2l0aCBhbiBlcnJvciB1bmxlc3MgdGhlIGAtLW92ZXJ3cml0ZWAgb3B0aW9uIGlzIHNldC4KCj4gSWYgbm90IHN1cHBsaWVkIGl0IHdpbGwgZGVmYXVsdCB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQoKX19gLS1vdmVyd3JpdGVgX18KClRoZSBfXypvdmVyd3JpdGUqX18gb3B0aW9uIHNwZWNpZmllcyB3aGV0aGVyIHRvIG92ZXJ3cml0ZSBmaWxlcyBpbiB0aGUgb3V0cHV0IGRpcmVjdG9yeS4gIFRoZSBkZWZhdWx0IGlzIGBmYWxzZWAuCgpfX2AtLWRlYnVnYCwgYC1kYF9fICAKCl9fKmRlYnVnIGZsYWcqX18gd2hpY2ggY2FuIGJlIHNldCBmb3IgYWRkaXRpb25hbCBwcmludCBzdGF0ZW1lbnRzLiAgCgoKIyMgRXhhbXBsZQoKVGhpcyBleGFtcGxlIGRlbW9uc3RyYXRlcyBjcmVhdGluZyBhIFN0YWNrUUwgcHJvdmlkZXIgZm9yIGBnaXRodWJgIGFuZCB0ZXN0aW5nIHRoaXMgcHJvdmlkZXIgbG9jYWxseSB1c2luZyBgc3RhY2txbGAKCiMjIyBFeGFtcGxlIFByb2plY3QgU3RydWN0dXJlCgpUaGUgZm9sbG93aW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgcmVwcmVzZW50cyB0aGUgdGFyZ2V0IGFmdGVyIGFuIEFQSSBkZXYgd29ya3NwYWNlIGlzIHNldCB1cCBhbmQgdGhlIFN0YWNrUUwgcHJvdmlkZXIgZm9yIGBnaXRodWJgIGlzIGJ1aWx0LgoKYGBgCmxvY2FsLXJlZ2lzdHJ5LwrilJzilIAgcmVmLwrilIIgIOKUnOKUgCBnaXRodWIvCuKUgiAg4pSCICDilJzilIAgYXBpLmdpdGh1Yi5jb20ueWFtbArilJzilIAgZGV2LwrilIIgIOKUnOKUgCBnaXRodWIvCuKUgiAg4pSCICDilJzilIAgdjAuMS4wLwrilIIgIOKUgiAg4pSCICDilJzilIAgcHJvdmlkZXIueWFtbArilIIgIOKUgiAg4pSCICDilJzilIAgc2VydmljZXMvCuKUgiAg4pSCICDilIIgIOKUgiAg4pSc4pSAIHJlcG9zLwrilIIgIOKUgiAg4pSCICDilIIgIOKUgiAg4pSc4pSAIHJlcG9zLnlhbWwK4pSCICDilIIgIOKUgiAg4pSCICDilIIgIOKUnOKUgCByZXBvcy1yZXNvdXJjZXMueWFtbArilIIgIOKUgiAg4pSCICDilIIgIOKUnOKUgCAuLi4vCuKUnOKUgCBzcmMvCuKUgiAg4pSc4pSAIGdpdGh1Yi8K4pSCICDilIIgIOKUnOKUgCB2MC4xLjAvCuKUgiAg4pSCICDilIIgIOKUnOKUgCBwcm92aWRlci5qc29uCuKUgiAg4pSCICDilIIgIOKUnOKUgCBzZXJ2aWNlcy8K4pSCICDilIIgIOKUgiAg4pSCICDilJzilIAgcmVwb3MvCuKUgiAg4pSCICDilIIgIOKUgiAg4pSCICDilJzilIAgcmVwb3MtdjAuMS4wLmpzb24KYGBgCgpgbG9jYWwtcmVnaXN0cnkvcmVmL2dpdGh1Yi9hcGkuZ2l0aHViLmNvbS55YW1sYCBpcyB0aGUgc291cmNlIE9wZW5BUEkgMyBzcGVjaWZpY2F0aW9uIGZvciB0aGUgYGdpdGh1YmAgYXBpLCB0aGlzIHdhcyBzb3VyY2VkIGZyb20gW0dpdEh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9yZXN0LWFwaS1kZXNjcmlwdGlvbi9ibG9iL21haW4vZGVzY3JpcHRpb25zL2FwaS5naXRodWIuY29tL2FwaS5naXRodWIuY29tLnlhbWwpLiAgCgpUaGUgYGRldmAgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBvdXRwdXQgb2YgdGhlIGRldiBkb2NzIGdlbmVyYXRlZCBieSB0aGUgYG9wZW5hcGktZG9jLXV0aWwgc3BsaXRgIGNvbW1hbmQsIHdoaWNoIHdpbGwgdGhlbiBzZXJ2ZSBhcyBpbnB1dCB0byB0aGUgYG9wZW5hcGktZG9jLXV0aWwgcHJvdmlkZXItZGV2YCBjb21tYW5kLiAgICAKClRoZSBgc3JjYCBkaXJlY3RvcnkgY29udGFpbnMgdGhlIG91dHB1dCBvZiB0aGUgU3RhY2tRTCBwcm92aWRlciBpbnRlcmZhY2UgZ2VuZXJhdGVkIGZyb20gdGhlIGRldiBkb2NzIHVzaW5nIGBvcGVuYXBpLWRvYy11dGlsIHByb3ZpZGVyLWJ1aWxkYC4gIAoKCiMjIyAxLiBTcGxpdCBsYXJnZSBzcGVjIGludG8gc2VydmljZSBzcGVjcwoKUG93ZXJTaGVsbDogIAoKYGBgUG93ZXJTaGVsbApjZCBsb2NhbC1yZWdpc3RyeQpvcGVuYXBpLWRvYy11dGlsIHNwbGl0IGAKLW4gZ2l0aHViIGAKLXYgdjAuMS4wIGAKLXMgIiRbJ3gtZ2l0aHViJ10uY2F0ZWdvcnkiIGAKLW8gLlxkZXYgYAouL3JlZi9naXRodWIvYXBpLmdpdGh1Yi5jb20ueWFtbApgYGAKCkJhc2g6ICAKCmBgYGJhc2gKY2QgbG9jYWwtcmVnaXN0cnkKb3BlbmFwaS1kb2MtdXRpbCBzcGxpdCBcCi1uIGdpdGh1YiBcCi12IHYwLjEuMCBcCi1zICckWyJ4LWdpdGh1YiJdLmNhdGVnb3J5JyBcCi1vIC4vZGV2IFwKcmVmL2dpdGh1Yi9hcGkuZ2l0aHViLmNvbS55YW1sCmBgYAoKIyMjIDIuIENyZWF0ZSBkZXYgcHJvdmlkZXIgZG9jcwoKUG93ZXJTaGVsbDogIAoKYGBgUG93ZXJTaGVsbApjZCBsb2NhbC1yZWdpc3RyeQpvcGVuYXBpLWRvYy11dGlsIHByb3ZpZGVyLWRldiBgCi1uIGdpdGh1YiBgCi12IHYwLjEuMCBgCi1yICIkWyd4LWdpdGh1YiddLnN1YmNhdGVnb3J5IiBgCi5cZGV2CmBgYAoKQmFzaDogIAoKYGBgYmFzaApjZCBsb2NhbC1yZWdpc3RyeQpvcGVuYXBpLWRvYy11dGlsIHByb3ZpZGVyLWRldiBcCi1uIGdpdGh1YiBcCi12IHYwLjEuMCBcCi1yICckWyJ4LWdpdGh1YiJdLnN1YmNhdGVnb3J5JyBcCi4vZGV2CmBgYAoKIyMjIEFzc2VtYmxlIGZpbmFsIHByb3ZpZGVyIGRvY3MKClBvd2VyU2hlbGw6ICAKCmBgYFBvd2VyU2hlbGwKY2QgbG9jYWwtcmVnaXN0cnkKb3BlbmFwaS1kb2MtdXRpbCBwcm92aWRlci1idWlsZCBgCi1uIGdpdGh1YiBgCi12IHYwLjEuMCBgCi1vIC5cc3JjIGAKLlxkZXYKYGBgCgpCYXNoOiAgCgpgYGBiYXNoCmNkIGxvY2FsLXJlZ2lzdHJ5Cm9wZW5hcGktZG9jLXV0aWwgcHJvdmlkZXItYnVpbGQgXAotbiBnaXRodWIgXAotdiB2MC4xLjAgXAotbyAuL3NyYyBcCi4vZGV2CmBgYAoKIyMjIFRlc3QgVXNpbmcgYSBMb2NhbCBSZWdpc3RyeQoKYGBgYmFzaApjZCBsb2NhbC1yZWdpc3RyeQpQUk9WSURFUl9SRUdJU1RSWV9ST09UX0RJUj0iJChwd2QpIgpSRUdfU1RSPSd7InVybCI6ICJmaWxlOi8vJyR7UFJPVklERVJfUkVHSVNUUllfUk9PVF9ESVJ9JyIsICJsb2NhbERvY1Jvb3QiOiAiJyR7UFJPVklERVJfUkVHSVNUUllfUk9PVF9ESVJ9JyIsICJ2ZXJpZnlDb25maWciOiB7Im5vcFZlcmlmeSI6IHRydWV9fScKQVVUSF9TVFI9J3siZ2l0aHViIjogeyAidHlwZSI6ICJudWxsX2F1dGgiIH19JwouL3N0YWNrcWwgc2hlbGwgLS1hdXRoPSIke0FVVEhfU1RSfSIgLS1yZWdpc3RyeT0iJHtSRUdfU1RSfSIKYGBg readmeEtag: '"ff4b3b99098da6030eed2df57bf5d3112c287d11"' readmeLastModified: Thu, 05 Jan 2023 19:01:12 GMT repositoryId: 487689765 description: 'DEPRECATED: Replaced by https://github.com/stackql/openapisaurus' created: '2022-05-02T02:01:26Z' updated: '2025-12-25T23:07:16Z' language: JavaScript archived: true stars: 10 watchers: 1 forks: 1 owner: stackql-labs logo: https://avatars.githubusercontent.com/u/251279874?v=4 license: MIT repoEtag: '"f1ffe60870cfde64965367220af98518248523e4a23c4f98deb8bc00b9ab94bf"' repoLastModified: Thu, 25 Dec 2025 23:07:16 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/stackql/openapi-doc-util - source: openapi3 tags repository: https://github.com/mattpolzin/jsonapi-openapi v3: true repositoryMetadata: base64Readme: >- IyBKU09OQVBJK09wZW5BUEkKWyFbTUlUIGxpY2Vuc2VdKGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1saWdodGdyZXkuc3ZnKV0oaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkgWyFbU3dpZnQgNi4wK10oaHR0cDovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1N3aWZ0LTYueC1ibHVlLnN2ZyldKGh0dHBzOi8vc3dpZnQub3JnKSBbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vYXBwLmJpdHJpc2UuaW8vYXBwLzJhZTBiNTU3OGUxOTA1Yjgvc3RhdHVzLnN2Zz90b2tlbj1UOFVBVU4wOGUxX0duWWsxejNQOThnJmJyYW5jaD1tYWluKV0oaHR0cHM6Ly9hcHAuYml0cmlzZS5pby9hcHAvMmFlMGI1NTc4ZTE5MDViOCkKClNlZSBwYXJlbnQgcHJvamVjdDogaHR0cHM6Ly9naXRodWIuY29tL21hdHRwb2x6aW4vSlNPTkFQSQoKVGhlIGBKU09OQVBJT3BlbkFQSWAgZnJhbWV3b3JrIGFkZHMgdGhlIGFiaWxpdHkgdG8gZ2VuZXJhdGUgT3BlbkFQSSBjb21wbGlhbnQgSlNPTiBTY2hlbWEgZG9jdW1lbnRhdGlvbiBvZiBhIEpTT05BUEkgRG9jdW1lbnQuCgpUaGVyZSBpcyBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgZ2VuZXJhdGluZyBgSlNPTkFQSWAgU3dpZnQgY29kZSBmcm9tIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBpbiB0aGUgSlNPTkFQSVN3aWZ0R2VuIG1vZHVsZS4gVGhlcmUgaXMgbm8gZm9ybWFsIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSwgYnV0IGl0IGlzIGFuIGFyZWEgb2YgaW50ZXJlc3Qgb2YgbWluZS4gUmVhY2ggb3V0IHRvIG1lIGRpcmVjdGx5IGlmIHlvdSB3b3VsZCBsaWtlIHRvIGtub3cgbW9yZS4KClNlZSB0aGUgT3BlbiBBUEkgU3BlYyBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMy5tZAoKKlRoaXMgbGlicmFyeSBoYXMgbWFueSBsb29zZSBlbmRzIGFuZCB2ZXJ5IGxpdHRsZSBkb2N1bWVudGF0aW9uLiBUaGUgZG9jdW1lbnRhdGlvbiB3aWxsIGdyb3cgYXMgdGhlIGZyYW1ld29yayBiZWNvbWVzIG1vcmUgY29tcGxldGUuKgoKIyMgUnVubmluZyBhbmQgVGVzdGluZwpBcyBvZiB0aGlzIHdyaXRpbmcsIHlvdSBuZWVkIHRvIHJ1biBgc3dpZnQgcGFja2FnZSBnZW5lcmF0ZS14Y29kZXByb2pgIGFuZCB0aGVuIG9wZW4gdGhhdCBwcm9qZWN0IGluIFhjb2RlLiBVc2luZyBYY29kZSdzIGJ1aWx0LWluIFN3aWZ0IFBhY2thZ2UgTWFuYWdlciBzdXBwb3J0IGlzIGN1cnJlbnRseSBicm9rZW4gZm9yIGxpYnJhcmllcyBsaWtlIHN3aWZ0LXN5bnRheCB0aGF0IHJlcXVpcmUgZHluYW1pYyBsaWJyYXJpZXMgZnJvbSB0aGUgU3dpZnQgdG9vbGNoYWluLiBgc3dpZnQgYnVpbGRgLCBgc3dpZnQgdGVzdGAsIGV0Yy4gZnJvbSB0aGUgY29tbWFuZCBsaW5lIHdpbGwgd29yayBmaW5lLCB0aG91Z2guCgojIyBfRXhwZXJpbWVudGFsXyBTd2lmdCBDb2RlIEdlbmVyYXRpb24KClRoZSBKU09OQVBJU3dpZnRHZW4gbW9kdWxlIGhhcyBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgZ2VuZXJhdGluZyBTd2lmdCBjb2RlIGZvciBgSlNPTkFQSWAgbW9kZWxzLiBZb3UgY2FuIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZSBvciByZWFjaCBvdXQgdG8gbWUgZm9yIG1vcmUgaW5mb3JtYXRpb24uIFRoaXMgbW9kdWxlIGlzIHVzZWQgYnkgdGhlIEFQSSBUZXN0IHNlcnZlciBwcm9qZWN0IGF0IFttYXR0cG9semluL2pzb25hcGktb3BlbmFwaS10ZXN0LXNlcnZlcl0oaHR0cHM6Ly9naXRodWIuY29tL21hdHRwb2x6aW4vanNvbmFwaS1vcGVuYXBpLXRlc3Qtc2VydmVyKSB0byBnZW5lcmF0ZSBtb2RlbHMgYW5kIHRlc3RzLgoKIyMgX0V4cGVyaW1lbnRhbF8gR3JhcGh2aXogKERPVCkgR2VuZXJhdGlvbgoKVGhlIEpTT05BUElWaXpHZW4gbW9kdWxlIGhhcyBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgZ2VuZXJhdGluZyBHcmFwaHZpeiBET1QgZmlsZXMgdGhhdCBncmFwaCBvdXQgdGhlIG1vZGVscyBhbmQgcmVsYXRpb25zaGlwcyByZXByZXNlbnRlZCBieSB0aGUgSlNPTjpBUEkvT3BlbkFQSSBpbnB1dC4gWW91IGNhbiBkaWcgaW50byB0aGUgc291cmNlIGNvZGUgb3IgcmVhY2ggb3V0IHRvIG1lIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKIyMgT3BlbkFQSSBKU09OIFNjaGVtYSBHZW5lcmF0aW9uCiMjIyBTaW1wbGUgRXhhbXBsZQpZb3UgY2FuIHRyeSB0aGlzIG91dCBpbiB0aGUgaW5jbHVkZWQgUGxheWdyb3VuZC4KCmBgYHN3aWZ0CmltcG9ydCBGb3VuZGF0aW9uCmltcG9ydCBKU09OQVBJCmltcG9ydCBPcGVuQVBJS2l0CmltcG9ydCBKU09OQVBJT3BlbkFQSQppbXBvcnQgU2FtcGxlYWJsZQoKbGV0IGVuY29kZXIgPSBKU09ORW5jb2RlcigpCmVuY29kZXIub3V0cHV0Rm9ybWF0dGluZyA9IC5wcmV0dHlQcmludGVkCgovLwovLyBGaXJzdCBkZXNjcmliZSB0aGUgcmVzb3VyY2Ugb2JqZWN0Ci8vCnN0cnVjdCBXaWRnZXREZXNjcmlwdGlvbjogSlNPTkFQSS5SZXNvdXJjZU9iamVjdERlc2NyaXB0aW9uIHsKICAgIHN0YXRpYyB2YXIganNvblR5cGU6IFN0cmluZyB7IHJldHVybiAid2lkZ2V0cyIgfQoKICAgIHN0cnVjdCBBdHRyaWJ1dGVzOiBKU09OQVBJLkF0dHJpYnV0ZXMgewogICAgICAgIGxldCBwcm9kdWN0TmFtZTogQXR0cmlidXRlPFN0cmluZz4KICAgIH0KCiAgICBzdHJ1Y3QgUmVsYXRpb25zaGlwczogSlNPTkFQSS5SZWxhdGlvbnNoaXBzIHsKICAgICAgICBsZXQgc3ViY29tcG9uZW50czogVG9NYW55UmVsYXRpb25zaGlwPFdpZGdldCwgTm9NZXRhZGF0YSwgTm9MaW5rcz4KICAgIH0KfQoKdHlwZWFsaWFzIFdpZGdldCA9IEpTT05BUEkuUmVzb3VyY2VPYmplY3Q8V2lkZ2V0RGVzY3JpcHRpb24sIE5vTWV0YWRhdGEsIE5vTGlua3MsIFN0cmluZz4KCi8vCi8vIFRoZW4gbWFrZSB0aGluZ3Mgc2FtcGxlYWJsZQovLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSBvbmx5IHdheSB0byB1c2UgcmVmbGVjdGlvbiBvbgovLyB5b3VyIGF0dHJpYnV0ZXMgYW5kIHJlbGF0aW9uc2hpcHMgc3RydWN0cyBpcyB0byBjcmVhdGUKLy8gaW5zdGFuY2VzIG9mIHRoZW0uCi8vCmV4dGVuc2lvbiBXaWRnZXREZXNjcmlwdGlvbi5BdHRyaWJ1dGVzOiBTYW1wbGVhYmxlIHsKICAgIHN0YXRpYyB2YXIgc2FtcGxlOiBXaWRnZXREZXNjcmlwdGlvbi5BdHRyaWJ1dGVzIHsKICAgICAgICByZXR1cm4gLmluaXQocHJvZHVjdE5hbWU6IC5pbml0KHZhbHVlOiAiRmlsbGloaXp6ZXIgTm9iIEh1YiIpKQogICAgfQp9CgpleHRlbnNpb24gV2lkZ2V0RGVzY3JpcHRpb24uUmVsYXRpb25zaGlwczogU2FtcGxlYWJsZSB7CiAgICBzdGF0aWMgdmFyIHNhbXBsZTogV2lkZ2V0RGVzY3JpcHRpb24uUmVsYXRpb25zaGlwcyB7CiAgICAgICAgcmV0dXJuIC5pbml0KHN1YmNvbXBvbmVudHM6IC5pbml0KGlkczogWy5pbml0KHJhd1ZhbHVlOiAiMSIpXSkpCiAgICB9Cn0KCi8vCi8vIFdlIGNhbiBjcmVhdGUgYSBKU09OIFNjaGVtYSBmb3IgdGhlIFdpZGdldCBhdCB0aGlzIHBvaW50Ci8vCmxldCB3aWRnZXRKU09OU2NoZW1hID0gV2lkZ2V0Lm9wZW5BUElTY2hlbWEodXNpbmc6IGVuY29kZXIpCgovLwovLyBEZXNjcmliZSBhIEpTT046QVBJIHJlc3BvbnNlIGJvZHkgd2l0aCAxIHdpZGdldCBhbmQKLy8gYW55IG51bWJlciBvZiByZWxhdGVkIHdpZGdldHMgaW5jbHVkZWQuCi8vCnR5cGVhbGlhcyBTaW5nbGVXaWRnZXREb2N1bWVudFdpdGhJbmNsdWRlcyA9IERvY3VtZW50PFNpbmdsZVJlc291cmNlQm9keTxXaWRnZXQ+LCBOb01ldGFkYXRhLCBOb0xpbmtzLCBJbmNsdWRlMTxXaWRnZXQ+LCBOb0FQSURlc2NyaXB0aW9uLCBCYXNpY0pTT05BUElFcnJvcjxTdHJpbmc+PgoKLy8KLy8gRmluYWxseSB3ZSBjYW4gY3JlYXRlIGEgSlNPTiBTY2hlbWEgZm9yIHRoZSByZXNwb25zZSBib2R5IG9mIGEgc3VjY2Vzc2Z1bCByZXF1ZXN0Ci8vCmxldCBqc29uQVBJUmVzcG9uc2VTY2hlbWEgPSBTaW5nbGVXaWRnZXREb2N1bWVudFdpdGhJbmNsdWRlcy5TdWNjZXNzRG9jdW1lbnQub3BlbkFQSVNjaGVtYSh1c2luZzogZW5jb2RlcikKCnByaW50KFN0cmluZyhkYXRhOiB0cnkhIGVuY29kZXIuZW5jb2RlKGpzb25BUElSZXNwb25zZVNjaGVtYSksIGVuY29kaW5nOiAudXRmOCkhKQoKLy8KLy8gT3IgYSBmYWlsZWQgcmVxdWVzdAovLwpsZXQganNvbkFQSVJlc3BvbnNlRXJyb3JTY2hlbWEgPSBTaW5nbGVXaWRnZXREb2N1bWVudFdpdGhJbmNsdWRlcy5FcnJvckRvY3VtZW50Lm9wZW5BUElTY2hlbWEodXNpbmc6IGVuY29kZXIpCgovLwovLyBPciBhIHNjaGVtYSBkZXNjcmliaW5nIHRoZSByZXNwb25zZSBhcyBgb25lT2ZgIHRoZSBzdWNjZXNzIG9yIGVycm9yIHJlc3BvbmVzCi8vCmxldCBqc29uQVBJUmVzcG9uc2VGdWxsU2NoZW1hID0gU2luZ2xlV2lkZ2V0RG9jdW1lbnRXaXRoSW5jbHVkZXMub3BlbkFQSVNjaGVtYSh1c2luZzogZW5jb2RlcikKYGBgCgpUaGUgYWJvdmUgY29kZSBwcm9kdWNlczoKYGBganNvbgp7CiAgInR5cGUiIDogIm9iamVjdCIsCiAgInByb3BlcnRpZXMiIDogewogICAgImRhdGEiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJyZWxhdGlvbnNoaXBzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgICAic3ViY29tcG9uZW50cyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgICAgICAgImRhdGEiIDogewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAgICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbnVtIiA6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkZ2V0cyIKICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJpZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICAgICAgICAgICAgICAgImlkIiwKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICAgICAgICJkYXRhIgogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgICAgICJzdWJjb21wb25lbnRzIgogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgImlkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgfSwKICAgICAgICAidHlwZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIiwKICAgICAgICAgICJlbnVtIiA6IFsKICAgICAgICAgICAgIndpZGdldHMiCiAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAiYXR0cmlidXRlcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICAgInByb2R1Y3ROYW1lIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICAgInByb2R1Y3ROYW1lIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfSwKICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAiYXR0cmlidXRlcyIsCiAgICAgICAgImlkIiwKICAgICAgICAicmVsYXRpb25zaGlwcyIsCiAgICAgICAgInR5cGUiCiAgICAgIF0KICAgIH0sCiAgICAiaW5jbHVkZWQiIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJyZWxhdGlvbnNoaXBzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICAgICAic3ViY29tcG9uZW50cyIgOiB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICAgICAgICAgImRhdGEiIDogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICAgICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImVudW0iIDogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZGdldHMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiaWQiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJpZCIKICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICAgICAgICAgICAiZGF0YSIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgICAgICAgInN1YmNvbXBvbmVudHMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICAiaWQiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgICJ0eXBlIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIsCiAgICAgICAgICAgICJlbnVtIiA6IFsKICAgICAgICAgICAgICAid2lkZ2V0cyIKICAgICAgICAgICAgXQogICAgICAgICAgfSwKICAgICAgICAgICJhdHRyaWJ1dGVzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICAgICAicHJvZHVjdE5hbWUiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgICAgICAgInByb2R1Y3ROYW1lIgogICAgICAgICAgICBdCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICAgImF0dHJpYnV0ZXMiLAogICAgICAgICAgImlkIiwKICAgICAgICAgICJyZWxhdGlvbnNoaXBzIiwKICAgICAgICAgICJ0eXBlIgogICAgICAgIF0KICAgICAgfSwKICAgICAgInVuaXF1ZUl0ZW1zIiA6IHRydWUKICAgIH0KICB9LAogICJyZXF1aXJlZCIgOiBbCiAgICAiaW5jbHVkZWQiLAogICAgImRhdGEiCiAgXQp9CmBgYAo= readmeEtag: '"d570c0b49d32baee8f04999b438d9ba54abc4a05"' readmeLastModified: Mon, 15 Sep 2025 15:22:23 GMT repositoryId: 168446016 description: >- A library that adds support for generating OpenAPI compliant documentation from JSON API compliant models. created: '2019-01-31T01:58:58Z' updated: '2025-09-15T15:22:27Z' language: Swift archived: false stars: 12 watchers: 1 forks: 1 owner: mattpolzin logo: https://avatars.githubusercontent.com/u/2075353?v=4 license: MIT repoEtag: '"5a1cbd138eb356e2760e3cbae4169a8f2ceb5dfaa90e32bce69a2e058df55a8b"' repoLastModified: Mon, 15 Sep 2025 15:22:27 GMT foundInMaster: true category: Parsers id: 7e5ab9bd4ed0a9dd5317056ec3612287 - source: openapi3 tags repository: https://github.com/mchangrh/sb-openapi v3: true repositoryMetadata: base64Readme: >- IyBTcG9uc29yQmxvY2sgQVBJIERvY3VtZW50YXRpb24gaW4gT3BlbkFQSQoKQVBJIEZvbGxvd3MgW0NDIEJZLU5DLVNBIDQuMF0oaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzQuMC8pIGFzIHBlciBbR2l0SHViIFdpa2ldKGh0dHBzOi8vZ2l0aHViLmNvbS9hamF5eXkvU3BvbnNvckJsb2NrL3dpa2kvRGF0YWJhc2UtYW5kLUFQSS1MaWNlbnNlKS4KCkRvY3VtZW50YXRpb24gaW4gTWVkaWFXaWtpIGZvcm0gY2FuIGJlIGZvdW5kIFtvbiB0aGUgU0Igd2lraV0oaHR0cHM6Ly93aWtpLnNwb25zb3IuYWpheS5hcHAvaW5kZXgucGhwL0FQSV9Eb2NzKQoKWW91IGNhbiBzZWUgaG93IHVwIHRvIGRhdGUgdGhlIGRvY3VtZW50YXRpb24gaXMgYnkgY2hlY2tpbmcgdGhlIFtzdXBwb3J0IG1hdHJpeF0oaHR0cHM6Ly9tY2hhbmcuaWN1L3NiLW1hdHJpeCk= readmeEtag: '"b05c62b6ff64d7ac2bafe329217a8af2f9aba997"' readmeLastModified: Sat, 28 Oct 2023 05:18:44 GMT repositoryId: 402975679 description: SponsorBlock API in Swagger/ OpenAPI created: '2021-09-04T05:49:13Z' updated: '2024-10-14T04:52:31Z' language: HTML archived: false stars: 10 watchers: 1 forks: 0 owner: mchangrh logo: https://avatars.githubusercontent.com/u/15132783?v=4 license: GPL-3.0 repoEtag: '"0bbaaee37e22c6eeb7dd1a33f7688d121dc2761340dbada86da0faed67b312bd"' repoLastModified: Mon, 14 Oct 2024 04:52:31 GMT foundInMaster: true category: - Documentation - Server Implementations id: 328ab8ea3691a6875fdc576eff130d15 - source: openapi3 tags repository: https://github.com/apiaryio/dredd-transactions v3: true repositoryMetadata: base64Readme: >- IyBEcmVkZCBUcmFuc2FjdGlvbnMKClshW25wbSB2ZXJzaW9uXShodHRwczovL2JhZGdlLmZ1cnkuaW8vanMvZHJlZGQtdHJhbnNhY3Rpb25zLnN2ZyldKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9qcy9kcmVkZC10cmFuc2FjdGlvbnMpClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL2FwaWFyeWlvL2RyZWRkLXRyYW5zYWN0aW9ucy5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9hcGlhcnlpby9kcmVkZC10cmFuc2FjdGlvbnMpClshW0J1aWxkIHN0YXR1c10oaHR0cHM6Ly9jaS5hcHB2ZXlvci5jb20vYXBpL3Byb2plY3RzL3N0YXR1cy9oaDhsNTBzc2FpM3A0ZDNmL2JyYW5jaC9tYXN0ZXI/c3ZnPXRydWUpXShodHRwczovL2NpLmFwcHZleW9yLmNvbS9wcm9qZWN0L0FwaWFyeS9kcmVkZC10cmFuc2FjdGlvbnMvYnJhbmNoL21hc3RlcikKWyFbS25vd24gVnVsbmVyYWJpbGl0aWVzXShodHRwczovL3NueWsuaW8vdGVzdC9ucG0vZHJlZGQtdHJhbnNhY3Rpb25zL2JhZGdlLnN2ZyldKGh0dHBzOi8vc255ay5pby90ZXN0L25wbS9kcmVkZC10cmFuc2FjdGlvbnMpCgoKRHJlZGQgVHJhbnNhY3Rpb25zIGxpYnJhcnkgY29tcGlsZXMgKkhUVFAgVHJhbnNhY3Rpb25zKiAoc2ltcGxlIFJlcXVlc3QtUmVzcG9uc2UgcGFpcnMpIGZyb20gQVBJIGRlc2NyaXB0aW9uIGRvY3VtZW50LgoKPiAqKk5vdGU6KiogVG8gYmV0dGVyIHVuZGVyc3RhbmQgKmVtcGhhc2l6ZWQqIHRlcm1zIGluIHRoaXMgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHJlZmVyIHRvIHRoZSBbR2xvc3Nhcnkgb2YgVGVybXNdW2FwaS1ibHVlcHJpbnQtZ2xvc3NhcnldLiBBbGwgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBkZXNjcmliZWQgdXNpbmcgdGhlIFtNU09OXVttc29uLXNwZWNdIGZvcm1hdC4KClRoaXMgcHJvamVjdCBzdXBlcnNlZGVzIFtCbHVlcHJpbnQgVHJhbnNhY3Rpb25zXVtibHVlcHJpbnQtdHJhbnNhY3Rpb25zXSBsaWJyYXJ5LgoKCiMjIEZlYXR1cmVzCgoqIEluaGVyaXRzIHBhcmFtZXRlcnMgZnJvbSBwYXJlbnQgKlJlc291cmNlKiBhbmQgKkFjdGlvbiogc2VjdGlvbnMuCiogRXhwYW5kcyAqVVJJIFRlbXBsYXRlcyouCiogV2FybnMgb24gdW5kZWZpbmVkIHBsYWNlaG9sZGVycyBpbiAqVVJJIFRlbXBsYXRlcyogKGJvdGggcXVlcnkgYW5kIHBhdGgpLgoqIFZhbGlkYXRlcyBVUkkgcGFyYW1ldGVyIHR5cGVzLgoqIFNlbGVjdHMgZmlyc3QgKlJlcXVlc3QqIGFuZCBmaXJzdCAqUmVzcG9uc2UqIGlmIG11bHRpcGxlIGFyZSBzcGVjaWZpZWQgaW4gdGhlIEFQSSBkZXNjcmlwdGlvbiBkb2N1bWVudC4KCgojIyMgRGVwcmVjYXRlZCBGZWF0dXJlcwoKKiBDb21waWxlcyBbVHJhbnNhY3Rpb24gTmFtZV1bdHJhbnNhY3Rpb24tb2JqZWN0LXNwZWNdIHN0cmluZyAodmFndWUgaWRlbnRpZmllcikgZm9yIGVhY2ggKlRyYW5zYWN0aW9uKi4KKiBQcm92aWRlcyBbVHJhbnNhY3Rpb24gT3JpZ2luXVt0cmFuc2FjdGlvbi1vYmplY3Qtc3BlY10gd2l0aCBwb2ludGVycyB0byBbQVBJIEVsZW1lbnRzXVthcGktZWxlbWVudHNdIGRlcml2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgQVBJIGRlc2NyaXB0aW9uIGRvY3VtZW50LgoKPiAqKk5vdGU6KiogVGhlc2UgZmVhdHVyZXMgYXJlIHRvIGJlIHN1cGVyc2VkZWQgYnkgd2hhdGV2ZXIgY29tZXMgb3V0IG9mIHRoZSBwcm9wb3NhbCBpbiBbYXBpYXJ5aW8vZHJlZGQjMjI3XShodHRwczovL2dpdGh1Yi5jb20vYXBpYXJ5aW8vZHJlZGQvaXNzdWVzLzIyNykuCgoKIyMgSW5zdGFsbGF0aW9uCgpgYGAKbnBtIGluc3RhbGwgZHJlZGQtdHJhbnNhY3Rpb25zCmBgYAoKCiMjIERldmVsb3BtZW50CgpEcmVkZCBUcmFuc2FjdGlvbnMgbGlicmFyeSBpcyB3cml0dGVuIGluIEphdmFTY3JpcHQgKEVTMjAxNSspLgoKCiMjIFVzYWdlCgojIyMgYHBhcnNlYAoKUGFyc2VzIGdpdmVuIEFQSSBkZXNjcmlwdGlvbiBkb2N1bWVudCBpbnRvIEFQSSBFbGVtZW50cyB3aXRoIG9wdGlvbnMgc3BlY2lmaWMKdG8gRHJlZGQuIEFzc3VtZXMgdGhhdCBkb2N1bWVudHMgd2l0aCB1bnJlY29nbml6YWJsZSBmb3JtYXQgYXJlCltBUEkgQmx1ZXByaW50XVthcGktYmx1ZXByaW50XS4gVHVybnMgYW55IHBhcnNlciBmYWlsdXJlcywgaW5jbHVkaW5nCnRoZSB1bmV4cGVjdGVkIG9uZXMsIGludG8gW0FQSSBFbGVtZW50c11bYXBpLWVsZW1lbnRzXSBhbm5vdGF0aW9ucy4KCmBgYGphdmFzY3JpcHQKY29uc3QgcGFyc2UgPSByZXF1aXJlKCdkcmVkZC10cmFuc2FjdGlvbnMvcGFyc2UnKTsKLy8gY29uc3QgeyBwYXJzZSB9ID0gcmVxdWlyZSgnZHJlZGQtdHJhbnNhY3Rpb25zJyk7CgpwYXJzZSgnIyBNeSBBUElcbi4uLicsIChlcnJvciwgcGFyc2VSZXN1bHQpID0+IHsKICAvLyAuLi4KfSk7CmBgYAoKIyMjIGBjb21waWxlYAoKQ29tcGlsZXMgKkhUVFAgVHJhbnNhY3Rpb25zKiBmcm9tIGdpdmVuIFtBUEkgRWxlbWVudHNdW2FwaS1lbGVtZW50c10uICpIVFRQIFRyYW5zYWN0aW9ucyogYXJlIGEgYmFja2JvbmUgZGF0YSBzdHJ1Y3R1cmUgdG8gRHJlZGQuCgpgYGBqYXZhc2NyaXB0CmNvbnN0IGNvbXBpbGUgPSByZXF1aXJlKCdkcmVkZC10cmFuc2FjdGlvbnMvY29tcGlsZScpOwovLyBjb25zdCB7IGNvbXBpbGUgfSA9IHJlcXVpcmUoJ2RyZWRkLXRyYW5zYWN0aW9ucycpOwoKY29uc3QgY29tcGlsZVJlc3VsdCA9IGNvbXBpbGUobWVkaWFUeXBlLCBhcGlFbGVtZW50cywgZmlsZW5hbWUpOwpgYGAKCj4gKipOb3RlOioqIFRoZSBgZmlsZW5hbWVgIGFyZ3VtZW50IGlzIG9wdGlvbmFsIGFuZCBhYm91dCB0byBnZXQgZGVwcmVjYXRlZCwgc2VlIFsjNl1bZmlsZW5hbWUtZGVwcmVjYXRpb25dCgoKIyMgRGF0YSBTdHJ1Y3R1cmVzCgo8YSBuYW1lPSJwYXJzZS1yZXN1bHQtb2JqZWN0Ij48L2E+CiMjIyBQYXJzZSBSZXN1bHQgKG9iamVjdCkKClJlc3VsdCBvZiBwYXJzaW5nLgoKLSBgbWVkaWFUeXBlYDogYHRleHQvdm5kLmFwaWJsdWVwcmludGAgKHN0cmluZywgZGVmYXVsdCwgbnVsbGFibGUpIC0gTWVkaWEgdHlwZSBvZiB0aGUgaW5wdXQgZm9ybWF0LCBjYW4gYmUgZW1wdHkgaW4gY2FzZSBvZiBzb21lIGZhdGFsIGVycm9ycwotIGBhcGlFbGVtZW50c2AgKFtBUEkgRWxlbWVudHNdW2FwaS1lbGVtZW50c10pIC0gQVBJIEVsZW1lbnRzIHBhcnNlIHJlc3VsdAoKPGEgbmFtZT0iY29tcGlsZS1yZXN1bHQtb2JqZWN0Ij48L2E+CiMjIyBDb21waWxlIFJlc3VsdCAob2JqZWN0KQoKUmVzdWx0IG9mIGNvbXBpbGF0aW9uLiBBbG9uZ3NpZGUgY29tcGlsZWQgW1RyYW5zYWN0aW9uXVt0cmFuc2FjdGlvbi1vYmplY3Qtc3BlY10gb2JqZWN0cyBjb250YWlucyBhbHNvIGVycm9ycyBhbmQgd2FybmluZ3MsIG1haW5seSBmcm9tIEFQSSBkZXNjcmlwdGlvbiBwYXJzZXIuCgotIGBtZWRpYVR5cGVgOiBgdGV4dC92bmQuYXBpYmx1ZXByaW50YCAoc3RyaW5nLCBkZWZhdWx0LCBudWxsYWJsZSkgLSBNZWRpYSB0eXBlIG9mIHRoZSBpbnB1dCBmb3JtYXQsIGRlZmF1bHRzIHRvIEFQSSBCbHVlcHJpbnQgZm9ybWF0LiBDYW4gYmUgZW1wdHkgaW4gY2FzZSBvZiBzb21lIGZhdGFsIGVycm9ycy4KLSBgdHJhbnNhY3Rpb25zYCAoYXJyYXlbW1RyYW5zYWN0aW9uXVt0cmFuc2FjdGlvbi1vYmplY3Qtc3BlY11dKSAtIENvbXBpbGVkIF9IVFRQIFRyYW5zYWN0aW9uc18uCi0gYGFubm90YXRpb25zYCAoYXJyYXlbW0Fubm90YXRpb25dW2Fubm90YXRpb24tb2JqZWN0LXNwZWNdXSkgLSBFcnJvcnMgYW5kIHdhcm5pbmdzIHdoaWNoIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIG9mIHRoZSBBUEkgZGVzY3JpcHRpb24gb3IgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIHRyYW5zYWN0aW9ucy4KCjxhIG5hbWU9InRyYW5zYWN0aW9uLW9iamVjdCI+PC9hPgojIyMgVHJhbnNhY3Rpb24gKG9iamVjdCkKClJlcHJlc2VudHMgYSBzaW5nbGUgKkhUVFAgVHJhbnNhY3Rpb24qIChSZXF1ZXN0LVJlc3BvbnNlIHBhaXIpIGFuZCBpdHMgbG9jYXRpb24gaW4gdGhlIEFQSSBkZXNjcmlwdGlvbiBkb2N1bWVudC4gVGhlIGxvY2F0aW9uIGlzIHByb3ZpZGVkIGluIHR3byBmb3JtcywgYm90aCAqKmRlcHJlY2F0ZWQqKiBhcyBvZiBub3c6CgotIGBuYW1lYCAtIFN0cmluZyByZXByZXNlbnRhdGlvbiwgYm90aCBodW1hbi0gYW5kIG1hY2hpbmUtcmVhZGFibGUuCi0gYG9yaWdpbmAgLSBPYmplY3Qgb2YgcmVmZXJlbmNlcyB0byBub2RlcyBvZiBbQVBJIEVsZW1lbnRzXVthcGktZWxlbWVudHNdIGRlcml2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgQVBJIGRlc2NyaXB0aW9uIGRvY3VtZW50LgoKPiAqKk5vdGU6KiogVGhlc2UgdHdvIGZvcm1zIG9mIGxvY2F0aW5nIEhUVFAgVHJhbnNhY3Rpb25zIGFyZSB0byBiZSBzdXBlcnNlZGVkIGJ5IHdoYXRldmVyIGNvbWVzIG91dCBvZiB0aGUgcHJvcG9zYWwgaW4gW2FwaWFyeWlvL2RyZWRkIzIyN10oaHR0cHM6Ly9naXRodWIuY29tL2FwaWFyeWlvL2RyZWRkL2lzc3Vlcy8yMjcpLgoKCiMjIyBQcm9wZXJ0aWVzCgotIHJlcXVlc3QgKG9iamVjdCkgLSBIVFRQIFJlcXVlc3QgYXMgZGVzY3JpYmVkIGluIEFQSSBkZXNjcmlwdGlvbiBkb2N1bWVudC4KICAgIC0gbWV0aG9kCiAgICAtIHVyaTogYC9tZXNzYWdlYCAoc3RyaW5nKSAtIEluZm9ybWF0aXZlIFVSSSBvZiB0aGUgUmVxdWVzdC4KICAgIC0gaGVhZGVycyAoYXJyYXkpIC0gTGlzdCBvZiBIVFRQIGhlYWRlcnMgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIsIHdpdGggdGhlIG9yaWdpbmFsIGNhc2luZyBvZiB0aGUgaGVhZGVyIG5hbWUsIGluY2x1ZGluZyBtdWx0aXBsZSBoZWFkZXJzIG9mIHRoZSBzYW1lIG5hbWUuCiAgICAgICAgLSAob2JqZWN0KQogICAgICAgICAgICAtIG5hbWU6IGBDb250ZW50LVR5cGVgIChzdHJpbmcpCiAgICAgICAgICAgIC0gdmFsdWU6IGB0ZXh0L3BsYWluYCAoc3RyaW5nKQogICAgLSBib2R5OiBgSGVsbG8gd29ybGQhXG5gIChzdHJpbmcpCi0gcmVzcG9uc2UgKG9iamVjdCkgLSBFeHBlY3RlZCBIVFRQIFJlc3BvbnNlIGFzIGRlc2NyaWJlZCBpbiBBUEkgZGVzY3JpcHRpb24gZG9jdW1lbnQuCiAgICAtIHN0YXR1czogYDIwMGAgKHN0cmluZykKICAgIC0gaGVhZGVycyAoYXJyYXkpIC0gTGlzdCBvZiBIVFRQIGhlYWRlcnMgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIsIHdpdGggdGhlIG9yaWdpbmFsIGNhc2luZyBvZiB0aGUgaGVhZGVyIG5hbWUsIGluY2x1ZGluZyBtdWx0aXBsZSBoZWFkZXJzIG9mIHRoZSBzYW1lIG5hbWUuCiAgICAgICAgLSAob2JqZWN0KQogICAgICAgICAgICAtIG5hbWU6IGBDb250ZW50LVR5cGVgIChzdHJpbmcpCiAgICAgICAgICAgIC0gdmFsdWU6IGB0ZXh0L3BsYWluYCAoc3RyaW5nKQogICAgLSBib2R5IChzdHJpbmcsIG9wdGlvbmFsKQogICAgLSBzY2hlbWEgKHN0cmluZywgb3B0aW9uYWwpCgoKIyMjIERlcHJlY2F0ZWQgUHJvcGVydGllcwoKLSBuYW1lOiBgSGVsbG8gd29ybGQhID4gUmV0cmlldmUgTWVzc2FnZWAgKHN0cmluZykgLSBUcmFuc2FjdGlvbiBOYW1lLCBub24tZGV0ZXJtaW5pc3RpYyBicmVhZGNydW1iIGxvY2F0aW9uIG9mIHRoZSBIVFRQIFRyYW5zYWN0aW9uIHdpdGhpbiB0aGUgQVBJIGRlc2NyaXB0aW9uIGRvY3VtZW50LgotIG9yaWdpbiAob2JqZWN0KSAtIE9iamVjdCBvZiByZWZlcmVuY2VzIHRvIG5vZGVzIG9mIFtBUEkgRWxlbWVudHNdW2FwaS1lbGVtZW50c10gZGVyaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBBUEkgZGVzY3JpcHRpb24gZG9jdW1lbnQuCiAgICAtIGZpbGVuYW1lOiBgLi9hcGktZGVzY3JpcHRpb24uYXBpYmAgKHN0cmluZykKICAgIC0gYXBpTmFtZTogYE15IEFwaWAgKHN0cmluZykKICAgIC0gcmVzb3VyY2VHcm91cE5hbWU6IGBHcmVldGluZ3NgIChzdHJpbmcpCiAgICAtIHJlc291cmNlTmFtZTogYEhlbGxvLCB3b3JsZCFgIChzdHJpbmcpCiAgICAtIGFjdGlvbk5hbWU6IGBSZXRyaWV2ZSBNZXNzYWdlYCAoc3RyaW5nKQogICAgLSBleGFtcGxlTmFtZTogYEZpcnN0IGV4YW1wbGVgIChzdHJpbmcpCgo+ICoqTm90ZToqKiBUaGVzZSBwcm9wZXJ0aWVzIGFyZSB0byBiZSBzdXBlcnNlZGVkIGJ5IHdoYXRldmVyIGNvbWVzIG91dCBvZiB0aGUgcHJvcG9zYWwgaW4gW2FwaWFyeWlvL2RyZWRkIzIyN10oaHR0cHM6Ly9naXRodWIuY29tL2FwaWFyeWlvL2RyZWRkL2lzc3Vlcy8yMjcpLgoKCjxhIG5hbWU9ImFubm90YXRpb24tb2JqZWN0Ij48L2E+CiMjIyBBbm5vdGF0aW9uIChvYmplY3QpCgpEZXNjcmlwdGlvbiBvZiBhbiBlcnJvciBvciB3YXJuaW5nIHdoaWNoIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIG9mIHRoZSBBUEkgZGVzY3JpcHRpb24gb3IgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIHRyYW5zYWN0aW9ucy4KCiMjIyMgUHJvcGVydGllcwoKLSB0eXBlIChlbnVtW3N0cmluZ10pCiAgICAtIGBlcnJvcmAKICAgIC0gYHdhcm5pbmdgCi0gY29tcG9uZW50IChlbnVtW3N0cmluZ10pIC0gSW4gd2hpY2ggY29tcG9uZW50IG9mIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIHRoZSBhbm5vdGF0aW9uIG9jY3VycmVkCiAgICAtIGBhcGlEZXNjcmlwdGlvblBhcnNlcmAKICAgIC0gYHBhcmFtZXRlcnNWYWxpZGF0aW9uYAogICAgLSBgdXJpVGVtcGxhdGVFeHBhbnNpb25gCi0gbWVzc2FnZSAoc3RyaW5nKSAtIFRleHR1YWwgYW5ub3RhdGlvbi4gVGhpcyBpcyDigJMgaW4gbW9zdCBjYXNlcyDigJMgYSBodW1hbi1yZWFkYWJsZSBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCB0byB1c2VyCi0gbG9jYXRpb24gKGFycmF5LCBmaXhlZCwgbnVsbGFibGUpIC0gTG9jYXRpb24gb2YgdGhlIGFubm90YXRpb24gaW4gdGhlIHNvdXJjZSBmaWxlLCByZXByZXNlbnRlZCBieSBhIHNpbmdsZSByYW5nZSBvZiBsaW5lIGFuZCBjb2x1bW4gbnVtYmVyIHBhaXJzIGlmIGF2YWlsYWJsZSwgb3IgYnkgYG51bGxgIG90aGVyd2lzZQogICAgLSAoYXJyYXkpIC0gU3RhcnQgbG9jYXRpb24KICAgICAgICAtIChudW1iZXIpIC0gTGluZSBudW1iZXIKICAgICAgICAtIChudW1iZXIpIC0gQ29sdW1uIG51bWJlcgogICAgLSAoYXJyYXkpIC0gRW5kIGxvY2F0aW9uCiAgICAgICAgLSAobnVtYmVyKSAtIExpbmUgbnVtYmVyCiAgICAgICAgLSAobnVtYmVyKSAtIENvbHVtbiBudW1iZXIKCiMjIyBEZXByZWNhdGVkIFByb3BlcnRpZXMKCi0gbmFtZTogYEhlbGxvIHdvcmxkISA+IFJldHJpZXZlIE1lc3NhZ2VgIChzdHJpbmcpIC0gVHJhbnNhY3Rpb24gTmFtZSwgbm9uLWRldGVybWluaXN0aWMgYnJlYWRjcnVtYiBsb2NhdGlvbiBvZiB0aGUgcmVsZXZhbnQgSFRUUCBUcmFuc2FjdGlvbiB3aXRoaW4gdGhlIEFQSSBkZXNjcmlwdGlvbiBkb2N1bWVudC4KLSBvcmlnaW4gKG9iamVjdCkgLSBPYmplY3Qgb2YgcmVmZXJlbmNlcyB0byBub2RlcyBvZiBbQVBJIEVsZW1lbnRzXVthcGktZWxlbWVudHNdIGRlcml2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgQVBJIGRlc2NyaXB0aW9uIGRvY3VtZW50LgogICAgLSBmaWxlbmFtZTogYC4vYXBpLWRlc2NyaXB0aW9uLmFwaWJgIChzdHJpbmcpCiAgICAtIGFwaU5hbWU6IGBNeSBBcGlgIChzdHJpbmcpCiAgICAtIHJlc291cmNlR3JvdXBOYW1lOiBgR3JlZXRpbmdzYCAoc3RyaW5nKQogICAgLSByZXNvdXJjZU5hbWU6IGBIZWxsbywgd29ybGQhYCAoc3RyaW5nKQogICAgLSBhY3Rpb25OYW1lOiBgUmV0cmlldmUgTWVzc2FnZWAgKHN0cmluZykKICAgIC0gZXhhbXBsZU5hbWU6IGBGaXJzdCBleGFtcGxlYCAoc3RyaW5nKQoKPiAqKk5vdGU6KiogVGhlc2UgcHJvcGVydGllcyBhcmUgdG8gYmUgc3VwZXJzZWRlZCBieSB3aGF0ZXZlciBjb21lcyBvdXQgb2YgdGhlIHByb3Bvc2FsIGluIFthcGlhcnlpby9kcmVkZCMyMjddKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlhcnlpby9kcmVkZC9pc3N1ZXMvMjI3KS4KCgpbZHJlZGRdOiBodHRwczovL2RyZWRkLm9yZwpbbXNvbi1zcGVjXTogaHR0cHM6Ly9naXRodWIuY29tL2FwaWFyeWlvL21zb24KW2FwaS1lbGVtZW50c106IGh0dHA6Ly9hcGktZWxlbWVudHMucmVhZHRoZWRvY3Mub3JnLwpbYXBpLWJsdWVwcmludF06IGh0dHBzOi8vYXBpYmx1ZXByaW50Lm9yZy8KW2FwaS1ibHVlcHJpbnQtZ2xvc3NhcnldOiBodHRwczovL2dpdGh1Yi5jb20vYXBpYXJ5aW8vYXBpLWJsdWVwcmludC9ibG9iL21hc3Rlci9HbG9zc2FyeSUyMG9mJTIwVGVybXMubWQKW2JsdWVwcmludC10cmFuc2FjdGlvbnNdOiBodHRwczovL2dpdGh1Yi5jb20vYXBpYXJ5aW8vYmx1ZXByaW50LXRyYW5zYWN0aW9ucy8KCgpbZmlsZW5hbWUtZGVwcmVjYXRpb25dOiBodHRwczovL2dpdGh1Yi5jb20vYXBpYXJ5aW8vZHJlZGQtdHJhbnNhY3Rpb25zL2lzc3Vlcy82Cltjb21waWxlLXJlc3VsdC1vYmplY3Qtc3BlY106ICNjb21waWxlLXJlc3VsdC1vYmplY3QKW3RyYW5zYWN0aW9uLW9iamVjdC1zcGVjXTogI3RyYW5zYWN0aW9uLW9iamVjdApbYW5ub3RhdGlvbi1vYmplY3Qtc3BlY106ICNhbm5vdGF0aW9uLW9iamVjdApbc291cmNlLW1hcF06IGh0dHBzOi8vZ2l0aHViLmNvbS9yZWZyYWN0cHJvamVjdC9yZWZyYWN0LXNwZWMvYmxvYi9tYXN0ZXIvbmFtZXNwYWNlcy9wYXJzZS1yZXN1bHQtbmFtZXNwYWNlLm1kI3NvdXJjZS1tYXAtZWxlbWVudAo= readmeEtag: '"87add22e0b40b26bddb1a4f6454442e6d920ae51"' readmeLastModified: Tue, 01 Oct 2019 14:31:56 GMT repositoryId: 54039079 description: >- Compiles a list of HTTP transactions (request-response pairs) from an API description document created: '2016-03-16T14:30:38Z' updated: '2024-11-08T09:04:01Z' language: JavaScript archived: true stars: 10 watchers: 4 forks: 9 owner: apiaryio logo: https://avatars.githubusercontent.com/u/765943?v=4 license: MIT repoEtag: '"d673207324583d3ef413ba672d5df9ed1795b88d4e0075179f900fb3f0a2d4e3"' repoLastModified: Fri, 08 Nov 2024 09:04:01 GMT foundInMaster: true category: Testing id: 180ad77913c096145acf085c2f8a0be8 - source: openapi3 tags repository: https://github.com/metamug/r2 v3: true id: 6a1c275d56f9cea18e372366b6f469f3 repositoryMetadata: base64Readme: >- IyBSMgpSMiBpcyBhbiBvcGVuIHNvdXJjZSBSRVNUIFJlc291cmNlIHNlcnZlci4gSXQgY29tZXMgd2l0aCBhIHJlYWR5IHRvIHVzZSBSRVNUIEFQSS4gRGV2ZWxvcGVyIGNhbiBhZGQvZWRpdCByZXNvdXJjZXMgdG8gdGhlIHNlcnZlcgp1c2luZyBSMiBDb25zb2xlCgohW01ldGFtdWcgUmVzb3VyY2UgU2NyZWVuXShodHRwczovL21ldGFtdWcuY29tL2ltZy9yZXMtc2NyZWVuLnBuZykKCiMjIFIyIENvbnNvbGUKUjIgY29uc29sZSBjb21lcyB3aXRoIGZvbGxvd2luZyBmZWF0dXJlcy4KCiogUkVTVCBSZXNvdXJjZSBNYW5hZ2VtZW50IAoqIEhvdCBkZXBsb3ltZW50IGZvciBSRVNUIFJlc291cmNlcwoqIFJlc291cmNlIGVkaXRvciB3aXRoIGF1dG9jb21wbGV0ZSBhbmQgcXVlcnkgdGVzdGluZyAodXNpbmcgb3BlbiBzb3VyY2UgcHJvamVjdCkKKiBPcGVuIEFQSSBkb2N1bWVudGF0aW9uIGdlbmVyYXRlZC4KCiMjIEFQSSBJbnRlZ3JhdGlvbiB3aXRoIFhSZXF1ZXN0CgpBUEkgSW50ZWdyYXRpb24gd2l0aCB0aGlyZCBwYXJ0eSBzZXJ2aWNlcyBsaWtlIEFXUywgRmFjZWJvb2ssIFR3aXR0ZXIsIEZpcmViYXNlLCBQYXlQYWwsIE1haWxjaGltcCBhbmQgbW9yZS4KQ29tbXVuaWNhdGlvbiB3aXRoIG11bHRpcGxlIHNlcnZpY2VzIGluIGEgc2luZ2xlIHJlcXVlc3QgdXNpbmcgQVBJIEdhdGV3YXlzLgoKIVtNZXRhbXVnIEFQSSBJbnRlZ3JhdGlvbl0oaHR0cHM6Ly9tZXRhbXVnLmNvbS9pbWcvYXBpLWludGVncmF0aW9uMS5zdmcpCgoKIyMgb3BlbmFwaS1yZXN0LW1vZGVsCgohW10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL21ldGFtdWcvb3BlbmFwaS1yZXN0LW1vZGVsLnN2Zz9icmFuY2g9b3Blbi1hcGkpIFshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9tZXRhbXVnL29wZW5hcGktcmVzdC1tb2RlbC9icmFuY2gvb3Blbi1hcGkvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL21ldGFtdWcvb3BlbmFwaS1yZXN0LW1vZGVsKQoKIVtNZXRhbXVnIE9wZW4gQVBJIEludGVncmF0aW9uXShodHRwczovL21ldGFtdWcuY29tL2ltZy9vcGVuYXBpLXNwZWNpZmljYXRpb24uc3ZnKQoKCkNvbnZlcnQgW09wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pIFNwZWMgZmlsZSBpbnRvIFtSZXNvdXJjZSBSZXNvdXJjZSBYTUxdKGh0dHBzOi8vbWV0YW11Zy5jb20vZG9jcy9yZXNvdXJjZS1maWxlKSBmaWxlcy4KVGhpcyBwcm9qZWN0IGFpbXMgdG8gZ2VuZXJhdGUgY29tcGF0aWJsZSByZXNvdXJjZSB4bWxzIGZvciBhIGdpdmVuIHNwZWMgZmlsZSBqc29uL3ltbC4KClRoZSBzYW1wbGUgcGV0c3RvcmUgeW1sIGZpbGUgd2lsbCBjb252ZXJ0IHRvIGEgbnVtYmVyIG9mIHJlc291cmNlIHhtbHMuCmh0dHBzOi8vZWRpdG9yLnN3YWdnZXIuaW8vCgojIyMgUkVTVCBSZXNvdXJjZSBGaWxlcwoKUkVTVCBSZXNvdXJjZSBmaWxlcyBhcmUgZGVzaWduZWQgdG8gYWRkcmVzcyBhIFJFU1QgcmVzb3VyY2VzIGluZGl2aWR1YWxseS4gRWFjaCBSZXNvdXJjZSBmaWxlCm1hcHMgdG8gaXRzIG93biBVUkkuIFRoaXMgbWFrZXMgcmVzb3VyY2VzIGVhc2lseSBpZGVudGlmaWFibGUgYW5kIG1hbmFnYWJsZS4KCmh0dHBzOi8vbWV0YW11Zy5jb20vZG9jcy9yZXNvdXJjZS1maWxlCgojIyMgRGF0YXNvdXJjZXMKCltSZWFkIHRoaXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tZXRhbXVnL1IyL2Jsb2IvZGV2ZWxvcC9kb2NzL2RhdGFzb3VyY2VzLm1kKQoKIyMjIE9wZW4gQVBJIAoKaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24KCiMjIERlcGVuZGVuY2llcwoKW01hc29uXShodHRwczovL2dpdGh1Yi5jb20vbWV0YW11Zy9tYXNvbikgdjMuNCBhdmFpbGFibGUgb24gTWF2ZW4gY2VudHJhbAo= readmeEtag: '"53382c632678bb35baba33a0a86dd5730360631c"' readmeLastModified: Sun, 27 Nov 2022 08:58:45 GMT repositoryId: 213134305 description: >- R2 is your REST API Server that can connect with your database and other APIs using simple resource configurations created: '2019-10-06T08:37:57Z' updated: '2025-02-13T05:06:18Z' language: Java archived: false stars: 10 watchers: 2 forks: 3 owner: metamug logo: https://avatars.githubusercontent.com/u/21278398?v=4 repoEtag: '"1f0aaf7a420ebb5fb136b9406b0eee83fa83a8bf8d743573146228840ae2a6c0"' repoLastModified: Thu, 13 Feb 2025 05:06:18 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/candiun/aws-openapi-lint v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIEFXUyBBUEkgR2F0ZXdheSBsaW50ZXIKClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9ldmlsbWludC9hd3Mtb3BlbmFwaS1saW50L2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2V2aWxtaW50L2F3cy1vcGVuYXBpLWxpbnQpIFshW2xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvZXZpbG1pbnQvYXdzLW9wZW5hcGktbGludCldKGh0dHBzOi8vZ2l0aHViLmNvbS9ldmlsbWludC9hd3Mtb3BlbmFwaS1saW50KQoKQVdTLU9wZW5BUEktTGludCBpcyBhIHNpbXBsZSBPcGVuQVBJIDMgeWFtbCAvIGpzb24gc3BlYyBsaW50ZXIgZGVzaWduZWQgZm9yIGNoZWNraW5nIEFQSSBHYXRld2F5IGludGVncmF0aW9uLgoKIyMgUnVsZXMKCkl0IGNvbnRhaW5zIHJ1bGVzIGZvciBjaGVja2luZyB3aGV0aGVyOgoKLSB5b3UgaGF2ZSBhbiBhdXRob3JpemVyIG9uIE9QVElPTlMKLSBhdXRob3JpemVyIGlzIG1lbnRpb25lZCBpbiBgcmVxdWVzdFBhcmFtZXRlcnNgIGJ1dCBpcyBub3QgcHJlc2VudCBpbiBgc2VjdXJpdHlgCi0gaHR0cCB2ZXJicyBhcmUgY29uc2lzdGVudCBpbiB0aGUgcGF0aCBhbmQgaW50ZWdyYXRpb24KLSBhbGwgdXNlZCBoZWFkZXJzIGluIHBhdGggZnJvbSBhbGwgdmVyYnMgYXJlIG1lbnRpb25lZCBpbiBDT1JTIHJ1bGVzIGFuZCB2aWNlLXZlcnNhCi0gQ09SUyBydWxlcyBhbGxvdyBhbGwgdmVyYnMgbWVudGlvbmVkIGluIHRoZSBwYXRoCi0gQ09SUyBydWxlcyBhcmUgcHJlc2VudAotIGFtYXpvbiBpbnRlZ3JhdGlvbiBpcyBwcmVzZW50Ci0gcGF0aCBwYXJhbWV0ZXJzIHByZXNlbnQgaW4gYHJlcXVlc3RQYXJhbWV0ZXJzYCBhcmUgbm90IHVzZWQgaW4gdGhlIGRpcmVjdCBwYXRoIHBhcmFtZXRlcnMgYW5kIHZpY2UtdmVyc2EKCiMjIFJvYWRtYXAKCi0gWyBdIFVwZGF0ZSBSRUFETUUgd2l0aCBydWxlIG5hbWVzIGFuZCBiZWhhdmlvcgotIFtYXSBTdXBwb3J0IGpzb24gc3BlY3MKLSBbWF0gQWRkIG9wdGlvbmFsIHJ1bGUgZm9yIGNoZWNraW5nIGJhc2UgdXJsIGVxdWFsaXR5Ci0gWyBdIEFkZCBzdXBwb3J0IGZvciBjb25maWd1cmF0aW9uIHlhbWwgZmlsZQotIFsgXSBBZGQgcG9zc2liaWxpdHkgdG8gZGlzYWJsZSBydWxlIGNoZWNraW5nIG9uIHNwZWNpZmljIHBhdGhzCi0gWyBdIEFkZCBwb3NzaWJpbGl0eSB0byBkaXNhYmxlIHJ1bGVzIHBlciBwYXRoCi0gWyBdIElnbm9yZSBwYXRoLXBhcmFtcyBpZiBgaHR0cF9wcm94eWAgaW50ZWdyYXRpb24gdHlwZSB1c2VkCi0gW1hdIEFkZCBvcHRpb24gdG8gZGlzYWJsZSBydWxlcyB2aWEgQ0xJCi0gW1hdIEFkZCB3YXJuaW5nIHRocmVzaG9sZCB0byByZXR1cm4gd2l0aCBzdGF0dXMgY29kZSAwIGlmIGxpbWl0IG5vdCBleGNlZWRlZAotIFtYXSBGaXggZmxha2U4IHZpb2xhdGlvbnMKLSBbWF0gQWRkIGEgbGljZW5zZQotIFtYXSBQdWJsaXNoIHRvIFB5UEkgb3IgYWxpa2UKLSBbWF0gQ29uZmlndXJlIHByb3Blcmx5IHVwIEdpdEh1YiBhY3Rpb25zIHRvIHJ1biB0ZXN0cyBvbiBwdXNoCgojIyBJbnN0YWxsYXRpb24KCmBgYApwaXAgaW5zdGFsbCBhd3Mtb3BlbmFwaS1saW50CmBgYAoKIyMgVXNhZ2UKCmAkIGF3cy1vcGVuYXBpLWxpbnQgcGF0aC90by9zcGVjLnltbGAKCmBgYAp1c2FnZTogbWFpbi5weSBbLWhdIFstLXRyZWF0LWVycm9ycy1hcy13YXJuaW5nc10KICAgICAgICAgICAgICAgWy0td2FybmluZy10aHJlc2hvbGQgV0FSTklOR19USFJFU0hPTERdCiAgICAgICAgICAgICAgIFstLWV4Y2x1ZGUtcnVsZXMgRVhDTFVERV9SVUxFU10KICAgICAgICAgICAgICAgbGludF9maWxlCgpMaW50IE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgYmFzZWQgb24gQVdTIEFQSSBHYXRld2F5LgoKcG9zaXRpb25hbCBhcmd1bWVudHM6CiAgbGludF9maWxlICAgICAgICAgICAgIFNwZWNpZnkgcGF0aCB0byB0aGUgb3BlbmFwaSBzY2hlbWEgZmlsZS4KCm9wdGlvbmFsIGFyZ3VtZW50czoKICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAogIC0tdHJlYXQtZXJyb3JzLWFzLXdhcm5pbmdzCiAgICAgICAgICAgICAgICAgICAgICAgIFRyZWF0cyBlcnJvcnMgYXMgd2FybmluZ3MgKGV4aXQgY29kZSB3aWxsIGJlIDAgdW5sZXNzCiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgdGhyZXNob2xkIGlzIHNwZWNpZmllZAogIC0td2FybmluZy10aHJlc2hvbGQgV0FSTklOR19USFJFU0hPTEQKICAgICAgICAgICAgICAgICAgICAgICAgV2FybmluZyB0aHJlc2hvbGQgd2hpY2ggd2hlbiBzdXJwYXNzZWQgcmVuZGVycyBleGl0CiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgdG8gYmVjb21lIDEpCiAgLS1leGNsdWRlLXJ1bGVzIEVYQ0xVREVfUlVMRVMKICAgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZWQgcnVsZXMgc2VwYXJhdGVkIGJ5IGNvbW1hLgoKYGBgCg== readmeEtag: '"1237c8cca93439cf194c3812e78bff8f53a67a55"' readmeLastModified: Sun, 20 Mar 2022 15:58:07 GMT repositoryId: 224503318 description: AWS Gateway Integration linter for OpenAPI 3.0.x specs created: '2019-11-27T19:31:56Z' updated: '2025-11-07T09:46:42Z' language: Python archived: false stars: 11 watchers: 1 forks: 1 owner: candiun logo: https://avatars.githubusercontent.com/u/9850720?v=4 license: MIT repoEtag: '"6dc4df0e4f942338e4ec33477541889c39966282551ee0dc645ac35f675a21dd"' repoLastModified: Fri, 07 Nov 2025 09:46:42 GMT foundInMaster: true category: - Description Validators - Parsers id: 78a6fb78a21b043d94b196aab3759c01 oldLocations: - https://github.com/evilmint/aws-openapi-lint - source: openapi3 tags repository: https://github.com/pierre-emmanuelj/open-alldebrid v3: true repositoryMetadata: base64Readme: >- IyBPcGVuIEFsbGRlYnJpZAoKQWxsZGVicmlkIE9wZW5BUEkgR29sYW5nIHdyYXBwZXIKClRoZSBHb2xhbmcgd3JhcHBlciBpcyBnZW5lcmF0ZWQgZnJvbSBhbiBbT3BlbkFQSTMgc3BlY10oLi9hbGxkZWJyaWQueWFtbCkgYmFzZWQgb24gdGhlIG9mZmljaWFsIEFsbGRlYnJpZC5jb20gW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5hbGxkZWJyaWQuY29tLyNnZW5lcmFsLWluZm9ybWF0aW9ucykKCk9wZW4gQWxsZGVicmlkIFN3YWdnZXItdWkgW1Zpc2l0IGhlcmVdKGh0dHBzOi8vcGllcnJlLWVtbWFudWVsai5naXRodWIuaW8vb3Blbi1hbGxkZWJyaWQvKQoKVGhpcyBbT3BlbkFQSSBzcGVjXSguL2FsbGRlYnJpZC55YW1sKSBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBjbGllbnQgbGlicmFyeSBpbiBvdGhlciBsYW5ndWFnZXMhCgojIyBPdmVydmlldwoKVGhpcyBBUEkgY2xpZW50IHdhcyBnZW5lcmF0ZWQgYnkgdGhlIFtPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKSBwcm9qZWN0LgoKLSBBUEkgdmVyc2lvbjogNC4wLjAKLSBQYWNrYWdlIHZlcnNpb246IDEuMC4wCgojIyBJbnN0YWxsYXRpb24KCkluc3RhbGwgdGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXM6CgpgYGBzaGVsbApnbyBnZXQgImdpdGh1Yi5jb20vcGllcnJlLWVtbWFudWVsSi9vcGVuLWFsbGRlYnJpZCIKYGBgCgpBZGQgdGhlIGZvbGxvd2luZyBpbXBvcnQ6CgpgYGBnb2xhbmcKaW1wb3J0ICJnaXRodWIuY29tL3BpZXJyZS1lbW1hbnVlbEovb3Blbi1hbGxkZWJyaWQvY2xpZW50IgpgYGAKCiMjIEV4YW1wbGVzCgpgYGBHb2xhbmcKcGFja2FnZSBtYWluCgppbXBvcnQgKAoJImNvbnRleHQiCgkiZm10IgoJIm9zIgoKCSJnaXRodWIuY29tL3BpZXJyZS1lbW1hbnVlbEovb3Blbi1hbGxkZWJyaWQvY2xpZW50IgopCgpmdW5jIG1haW4oKSB7CglhZ2VudCA6PSAiYWdlbnRfZXhhbXBsZSIgLy8gWW91ciBzb2Z0d2FyZSB1c2VyLWFnZW50LiAoZGVmYXVsdCB0byAib3Blbi1hbGxkZWJyaWQiKQoKCWNvbmZpZ3VyYXRpb24gOj0gY2xpZW50Lk5ld0NvbmZpZ3VyYXRpb24oKQoJY29uZmlndXJhdGlvbi5BZGREZWZhdWx0SGVhZGVyKCJBdXRob3JpemF0aW9uIiwgIkJlYXJlciBBcGlLZXlGcm9tQWxsZGVicmlkIikKCWFwaV9jbGllbnQgOj0gY2xpZW50Lk5ld0FQSUNsaWVudChjb25maWd1cmF0aW9uKQoKCXJlc3AsIHIsIGVyciA6PSBhcGlfY2xpZW50LkRlZmF1bHRBcGkuVXNlckdldChjb250ZXh0LkJhY2tncm91bmQoKSkuQWdlbnQoYWdlbnQpLkV4ZWN1dGUoKQoJaWYgZXJyICE9IG5pbCB7CgkJZm10LkZwcmludGYob3MuU3RkZXJyLCAiRXJyb3Igd2hlbiBjYWxsaW5nIGBEZWZhdWx0QXBpLlVzZXJHZXRgYDogJXZcbiIsIGVycikKCQlmbXQuRnByaW50Zihvcy5TdGRlcnIsICJGdWxsIEhUVFAgcmVzcG9uc2U6ICV2XG4iLCByKQoJfQoKCWZtdC5QcmludGYoIiUjdlxuIiwgcmVzcCkKfQpgYGAKClBvc3NpYmxlIHRvIGFkZCBCZWFyZXIgVG9rZW4gZnJvbSBjb250ZXh0CmBgYEdvbGFuZwpwYWNrYWdlIG1haW4KCmltcG9ydCAoCgkiY29udGV4dCIKCSJmbXQiCgkib3MiCgoJImdpdGh1Yi5jb20vcGllcnJlLWVtbWFudWVsSi9vcGVuLWFsbGRlYnJpZC9jbGllbnQiCikKCmZ1bmMgbWFpbigpIHsKCWFnZW50IDo9ICJhZ2VudF9leGFtcGxlIiAvLyBZb3VyIHNvZnR3YXJlIHVzZXItYWdlbnQuIChkZWZhdWx0IHRvICJvcGVuLWFsbGRlYnJpZCIpCglhdXRoIDo9IGNvbnRleHQuV2l0aFZhbHVlKAoJCWNvbnRleHQuQmFja2dyb3VuZCgpLAoJCW9wZW5hcGljbGllbnQuQ29udGV4dEFjY2Vzc1Rva2VuLCAiQXBpS2V5RnJvbUFsbGRlYnJpZCIsCgkpCgoJY29uZmlndXJhdGlvbiA6PSBjbGllbnQuTmV3Q29uZmlndXJhdGlvbigpCglhcGlfY2xpZW50IDo9IGNsaWVudC5OZXdBUElDbGllbnQoY29uZmlndXJhdGlvbikKCglyZXNwLCByLCBlcnIgOj0gYXBpX2NsaWVudC5EZWZhdWx0QXBpLlVzZXJHZXQoYXV0aCkuQWdlbnQoYWdlbnQpLkV4ZWN1dGUoKQoJaWYgZXJyICE9IG5pbCB7CgkJZm10LkZwcmludGYob3MuU3RkZXJyLCAiRXJyb3Igd2hlbiBjYWxsaW5nIGBEZWZhdWx0QXBpLlVzZXJHZXRgYDogJXZcbiIsIGVycikKCQlmbXQuRnByaW50Zihvcy5TdGRlcnIsICJGdWxsIEhUVFAgcmVzcG9uc2U6ICV2XG4iLCByKQoJfQoKCWZtdC5QcmludGYoIiUjdlxuIiwgcmVzcCkKfQpgYGAKCiMjIERvY3VtZW50YXRpb24gZm9yIEFQSSBFbmRwb2ludHMKCkZpbmQgYWxsIHRoZSBBUEkgRG9jdW1lbnRhdGlvbiBbaGVyZV0oLi9kb2NzL0RlZmF1bHRBcGkubWQpCgpTd2FnZ2VyIFVJIFtoZXJlXShodHRwczovL3BpZXJyZS1lbW1hbnVlbGouZ2l0aHViLmlvL29wZW4tYWxsZGVicmlkLykKCllvdSBjYW4gZXhlY3V0ZSBIVFRQIHJlcXVlc3QgZnJvbSB0aGUgVUkgd2l0aCB5b3VyIFtBbGxkZWJyaWQgQXBpS2V5XShodHRwczovL2FsbGRlYnJpZC5jb20vYXBpa2V5cy8pCgojIyBEb2N1bWVudGF0aW9uIEZvciBBdXRob3JpemF0aW9uCgojIyMgYmVhcmVyQXV0aAoKLSAqKlR5cGUqKjogSFRUUCBCZWFyZXIgdG9rZW4gYXV0aGVudGljYXRpb24KCkV4YW1wbGUKCmBgYGdvbGFuZwphdXRoIDo9IGNvbnRleHQuV2l0aFZhbHVlKGNvbnRleHQuQmFja2dyb3VuZCgpLCBzdy5Db250ZXh0QWNjZXNzVG9rZW4sICJBcGlLZXlGcm9tQWxsZGVicmlkIikKCmNvbmZpZ3VyYXRpb24gOj0gY2xpZW50Lk5ld0NvbmZpZ3VyYXRpb24oKQphcGlfY2xpZW50IDo9IGNsaWVudC5OZXdBUElDbGllbnQoY29uZmlndXJhdGlvbikKCnJlc3AsIHIsIGVyciA6PSBhcGlfY2xpZW50LkRlZmF1bHRBcGkuVXNlckdldChhdXRoKS5BZ2VudChhZ2VudCkuRXhlY3V0ZSgpCmBgYAoKIyMgUG93ZXJlZCBieQoKKiBbb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpCg== readmeEtag: '"5b7ab51e71903f90a406d8669782747211e67aa1"' readmeLastModified: Wed, 19 Jan 2022 16:27:34 GMT repositoryId: 447968956 description: Alldebrid OpenAPI based Golang client wrapper created: '2022-01-14T13:00:45Z' updated: '2025-08-17T07:34:08Z' language: HTML archived: false stars: 11 watchers: 1 forks: 2 owner: pierre-emmanuelJ logo: https://avatars.githubusercontent.com/u/15922119?v=4 license: GPL-3.0 repoEtag: '"0b8d8732834b461debd0e7036f8e79f8720254513526e8190ac7d489bbd6b3d6"' repoLastModified: Sun, 17 Aug 2025 07:34:08 GMT foundInMaster: true category: Low-level Tooling id: 50de2f05b7baa8acd10b8749004070ed - source: openapi3 tags repository: https://github.com/m3-moretv/smogger v3: true repositoryMetadata: base64Readme: >- IyMg0KfRgtC+INGN0YLQvj8K0JjQvdGB0YLRgNGD0LzQtdC90YIg0LTQu9GPINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0LPQviDRgdC+0LfQtNCw0L3QuNGPINC80L7Qui3RgdC10YDQstC10YDQsDog0LjQvNC40YLQsNGG0LjQuCDRgNC10LDQu9GM0L3QvtCz0L4gQVBJLArQvtC/0LjRgdCw0L3QvdC+0LPQviDQv9C+INGB0L/QtdGG0LjRhNC40LrQsNGG0LjQuCBbT3BlbiBBUEkgdjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kKS4KCiMjINCX0LDQstC40YHQuNC80L7RgdGC0LgKLSBub2RlLmpzID49IDkKLSBPcGVuIEFQSSDRgdC/0LXRhtC40YTQuNC60LDRhtC40Y8gKHlhbWwvanNvbikKCiMjINCj0YHRgtCw0L3QvtCy0LrQsCDQuCDQt9Cw0L/Rg9GB0LoKLSBgbnBtIGkgQG0zLW1vcmV0di9zbW9nZ2VyYAotIGBucHggQG0zLW1vcmV0di9zbW9nZ2VyIC1zIC4vc3BlYy55YW1sYAotIGBucHggQG0zLW1vcmV0di9zbW9nZ2VyIC0taGVscGAg0L/QvtC60LDQttC10YIg0YHQv9C40YHQvtC6INC+0L/RhtC40LkKCtCd0LAg0L/QvtGA0YLRgyBgOjMwMDBgINC30LDQv9GD0YHRgtC40YLRgdGPIGh0dHAg0YHQtdGA0LLQtdGALCDQutC+0YLQvtGA0YvQuSDQsdGD0LTQtdGCINC/0L7Qu9C90L7RgdGC0YzRjiDRjdC80YPQu9C40YDQvtCy0LDRgtGMCtC+0L/QuNGB0LDQvdC90L7QtSDQsiDRgdC/0LXQutC1IEFQSS4g0JLRgdC1IGVuZHBvaW50cyDQsdGD0LTRg9GCINCy0L7Qt9Cy0YDQsNGJ0LDRgtGMINC80L7QtNC10LvQuCwg0L7Qv9C40YHQsNC90L3Ri9C1INCyIArRgdC/0LXRhtC40YTQuNC60LDRhtC40Lgg0YEg0YDQsNC90LTQvtC80L3Ri9C80Lgg0LfQvdCw0YfQtdC90LjRj9C80LgsINGB0LPQtdC90LXRgNC10L3QvdGL0LzQuCDRgSDQv9C+0LzQvtGJ0YzRjiBbRmFrZXIuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJhay9GYWtlci5qcy8pCgoqKtCd0LDQv9GA0LjQvNC10YAg0Y3RgtCwINGB0YXQtdC80LA6KioKYGBgeWFtbAp0eXBlOiBvYmplY3QKcmVxdWlyZWQ6CiAgICAtIGlkCiAgICAtIG5hbWUKcHJvcGVydGllczoKICBpZDoKICAgIHR5cGU6IGludGVnZXIKICAgIGZvcm1hdDogaW50NjQKICBuYW1lOgogICAgdHlwZTogc3RyaW5nCiAgICBmb3JtYXQ6IG5hbWUuZmlyc3ROYW1lCiAgdGFnOgogICAgdHlwZTogc3RyaW5nCiAgICBmb3JtYXQ6IHJhbmRvbS53b3JkCmBgYAoqKtCS0LXRgNC90LXRgiDRgtCw0LrQuNC1INC00LDQvdC90YvQtToqKgpgYGBqc29uCnsKICAiaWQiOiAyMzEyMzEyMzEyMywKICAibmFtZSI6ICJQZXRyYSIsCiAgInRhZyI6ICJGb3Jlc3QiCn0KYGBgCgojIyDQmNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtQoKIyMjINCk0L7RgNC80LDRgiDQtNCw0L3QvdGL0YUK0JTQu9GPINGB0L7Qt9C00LDQvdC40Y8g0LTQsNC90L3Ri9GFINC/0YDQuNCx0LvQuNC20LDQvdC90YvRhSDQuiDRgNC10LDQu9GM0L3QvtC80YMgQVBJINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyBbRmFrZXIuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJhay9GYWtlci5qcy8pLArQutC+0YLQvtGA0YvQuSDQs9C10L3QtdGA0LjRgiDRgdC70YPRh9Cw0LnQvdGL0LUg0LTQsNC90L3Ri9C1INC90LAg0L7RgdC90L7QstC1INC/0L7Qu9GPIGBmb3JtYXRgLiDQndCw0L/RgNC40LzQtdGAINC00LvRjyDRgtC+0LPQviDRh9GC0L4K0LHRiyDQsiDRgdGC0YDQvtC60LUg0LHRi9C7IGVtYWlsINC90LXQvtCx0YXQvtC00LjQvNC+INCyINC/0L7Qu9C1IGB0eXBlYCDRg9C60LDQt9Cw0YLRjCBgc3RyaW5nYCwK0LAg0LIg0L/QvtC70LUgYGZvcm1hdGAg0YPQutCw0LfQsNGC0YwgYGludGVybmV0LmVtYWlsYC4KCtCf0L7Qu9C90YvQuSDRgdC/0LjRgdC+0Log0YTQvtGA0LzQsNGC0L7QsiDQvNC+0LbQvdC+INC90LDQudGC0LggW9GC0YPRgl0oaHR0cHM6Ly9yYXdnaXQuY29tL01hcmFrL2Zha2VyLmpzL21hc3Rlci9leGFtcGxlcy9icm93c2VyL2luZGV4Lmh0bWwpLgoKIyMjINCb0LjQvNC40YLRiwrQotCw0Log0LbQtSDQv9C+0LTQtNC10YDQttC40LLQsNGO0YLRgdGPINCy0YHQtSDQvtCz0YDQsNC90LjRh9C10L3QuNGPIE9wZW4gQVBJINGB0L/QtdGG0LjRhNC40LrQsNGG0LjQuDoKLSBtaW5MZW5ndGgKLSBtYXhMZW5ndGgKLSBtaW5pbXVtCi0gbWF4aW11bQotIC4uLiBlLnQuYy4KCtCd0LDQv9GA0LjQvNC10YAg0LTQu9GPINGC0L7Qs9C+INGH0YLQviDQsdGLIEFQSSDQstC+0LfQstGA0LDRidCw0LvQviDQstC+0LfRgNCw0YHRgiDQvtGCIDEwINC00L4gMTgg0LzRiyDQvNC+0LbQtdC8INC+0L/QuNGB0LDRgtGMINGC0LDQutGD0Y4g0YHRhdC10LzRgzoKYGBgeWFtbAp0eXBlOiBudW1iZXIKbWluaW11bTogMTAKbWF4aW11bTogMTgKYGBgCgrQotC+INC20LUg0YHQsNC80L7QtSDQvNC+0LbQvdC+INGB0LTQtdC70LDRgtGMINGBINC00LvQuNC90L3QvtC5INGB0YLRgNC+0LrQuCwg0LrQvtC70LvQuNGH0LXRgdGC0LLQvtC8INGN0LvQtdC80LXQvdGC0L7QsiDQsiDQvNCw0YHRgdC40LLQtQrQuNC70Lgg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMIFtlbnVtXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2RhdGEtbW9kZWxzL2VudW1zLykKCtCn0YPRgtGMINCx0L7Qu9GM0YjQtSDQviDRgtC40L/QsNGFINC4INC40YUg0L7Qs9GA0LDQvdC40YfQtdC90LjRj9GFINC80L7QttC90L4g0L/RgNC+0YfQuNGC0LDRgtGMINCyINGB0L/QtdC60LUgW09wZW4gQVBJXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2RhdGEtbW9kZWxzL2RhdGEtdHlwZXMvKQoKIyMg0JjQt9C+0LHRgNCw0LbQtdC90LjRjwpTbW9nZ2VyINGD0LzQtdC10YIg0LPQtdC90LXRgNC40YLRjCDRgdGB0YvQu9C60Lgg0L3QsCDRgNCw0L3QtNC+0LzQvdGL0LUg0LjQt9C+0LHRgNCw0LbQtdC90LjRjywg0LjRgdC/0L7Qu9GM0LfRg9GPINC60LDQutC+0Lkg0LvQuNCx0L4K0LjQtyDQvtGC0LrRgNGL0YLRi9GFINGB0LXRgNCy0LjRgdC+0LIg0YDQsNC90LTQvtC80L3Ri9GFINC60LDRgNGC0LjQvdC+0LogKNC/0L4g0LTQtdGE0L7Qu9GC0YMgaHR0cHM6Ly9waWNzdW0ucGhvdG9zKS4KCtCh0LXRgNCy0LjRgSDQvNC+0LbQvdC+INC30LDQvNC10L3QuNGC0Ywg0YfQtdGA0LXQtyDQutC+0L3RhNC40LMsINC/0LXRgNC10LTQsNCyINCyINC/0LDRgNCw0LzQtdGC0YDQtSBgLWlgINGB0YHRi9C70LrRgyDRgdC10YDQstC40YEuCtCV0YHQu9C4INGB0LXRgNCy0LjRgSDQv9C+0LTQtNC10YDQttC40LLQsNC10YIg0YPQutCw0LfQsNC90LjQtSDQsiB1cmwg0YDQsNC30LXQvNC10YDRiyDQutCw0YDRgtC40L3QvtC6INC80L7QttC90L4K0YPQutCw0LfQsNGC0Ywg0Y3RgtC+INCyINGE0L7RgNC80LDRgtC1IGBodHRwczovL3BpY3N1bS5waG90b3MvPHdpZHRoPi88aGVpZ2h0Pi8/cmFuZG9tYC4KCiMjIEFUVEVOVElPTgrQodC10LnRh9Cw0YEg0LPQtdC90LXRgNGP0YLRgdGPINGC0L7Qu9GM0LrQviDQvtGC0LLQtdGC0YsgYXBwbGljYXRpb24vanNvbiDRgSDQutC+0LTQvtC8IDIwMC4g0JIg0LTQsNC70YzQvdC10LnRiNC10LwgCtGN0YLQviDQsdGD0LTQtdGCINC00L7RgNCw0LHQvtGC0LDQvdC+LgoK0KLQsNC6INC20LUg0L3QsCDQtNCw0L3QvdGL0Lkg0LzQvtC80LXQvdGCIEFQSSDQvdC1INGD0LzQtdC10YIg0YDQsNCx0L7RgtCw0YLRjCDRgSBmbG9hdC4KCiMjIENvbnRyaWJ1dG9ycwrQkiDQv9GA0L7QtdC60YLQtSDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8geWFybiDQuCBmbG93LgoKX1N1cHBvcnRlZCBieSBNb3JlVFYgd2l0aCDinaTvuI9fCg== readmeEtag: '"8d63019c9f0bced89b13af820eb7084ccd9275bf"' readmeLastModified: Tue, 26 Mar 2019 15:20:23 GMT repositoryId: 161340825 description: Simple mock server for Swagger (Open API v3) specification created: '2018-12-11T13:49:02Z' updated: '2025-02-06T06:02:48Z' language: TypeScript archived: false stars: 10 watchers: 3 forks: 1 owner: m3-moretv logo: https://avatars.githubusercontent.com/u/45791851?v=4 repoEtag: '"adb7956ce4629ebe4ca242934124c0f72c507bc70b138a42f59c73bc0ff718bd"' repoLastModified: Thu, 06 Feb 2025 06:02:48 GMT foundInMaster: true category: Mock id: 3dffde367a70e8d59e69bc8be4e07f27 - source: openapi3 tags repository: https://github.com/matchid-project/deces-backend v3: true repositoryMetadata: base64Readme: >- IyBBUEkgUGVyc29ubmVzIETDqWPDqWTDqWVzIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vbWF0Y2hJRC1wcm9qZWN0L2RlY2VzLXVpL3Jhdy9kZXYvcHVibGljL2Zhdmljb24uc3ZnIiB3aWR0aD0iMTgwIiBhbGlnbj0icmlnaHQiIC8+CgohW0J1aWxkIHN0YXR1c10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvYWN0aW9ucy93b3JrZmxvdy9zdGF0dXMvbWF0Y2hpZC1wcm9qZWN0L2RlY2VzLWJhY2tlbmQvZG9ja2VyaW1hZ2UueW1sKSBbIVtMaWNlbnNlOiBMR1BMIHYzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtTEdQTCUyMHYzLWJsdWUuc3ZnKV0oaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMCkgIVtEb2NrZXIgUHVsbHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL3B1bGxzL21hdGNoaWQvZGVjZXMtYmFja2VuZD9sYWJlbD1Eb2NrZXIlMjBwdWxscykKCkFQSSBmb3IgcGVvcGxlIHdobyBkaWVkIGluIEZyYW5jZSBmcm9tIDE5NzAuCgojIyBGZWF0dXJlcwoKKiBNdWx0aXBsZSBmaWVsZHMgY2FuIGJlIHVzZWQgYXMgYSBmaWx0ZXI6CiAgKiBGaXJzdC9MYXN0IG5hbWUKICAqIEJpcnRoL0RlYXRoIGRhdGUKICAqIEJpcnRoL0RlYXRoIGxvY2F0aW9uIChjb3VudHJ5LCBkZXBhcnRtZW50LCBjaXR5LCBncHMgY29vcmRpbmF0ZSkKICAqIEFnZQogICogU2V4CiogVGhlIEFQSSBjYW4gaGFuZGxlIGNvbW1vbiBtaXN0YWtlcyBpbiBmaWVsZHMgdGhhbmtzIHRvIGZ1enp5IG1hdGNoaW5nCiogQnVsayBwcm9jZXNzIChDU1Ygb3IgYnVsayBKU09OKSBmb3IgbXVsdGlwbGUgaWRlbnRpdGllcwoqIE9wdGlvbmFsIHdlYmhvb2sgY2FsbGJhY2tzIHdpdGggYSBjaGFsbGVuZ2UgdmFsaWRhdGlvbiBlbmRwb2ludAoqIEV4cHJlc3MgZnJhbWV3b3JrIGZvciBSRVNUIEFQSQoqIE9wZW5BUEl2MyBkb2N1bWVudGF0aW9uIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIHVzaW5nCiAgW1RTT0FdKGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlYXV0cnkvdHNvYSkKKiBEb2NrZXIgaW1hZ2UgaXMgcHVibGlzaGVkIGF0IFtkb2NrZXIKICBodWJdKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9tYXRjaGlkL2RlY2VzLWJhY2tlbmQpIHVzaW5nIEdpdEh1YiBBY3Rpb25zLgoKRGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgYXQgW3RoaXMgc3dhZ2dlciBwYWdlXShodHRwczovL2RlY2VzLm1hdGNoaWQuaW8vZGVjZXMvYXBpL3YxL2RvY3MpCgojIyBJbnN0YWxsYXRpb24KCkluc3RhbGwgdXNpbmcgZG9ja2VyIGNvbXBvc2U6CgpgYGBiYXNoCm1ha2UgdXAKYGBgCgpCZWZvcmUgc3RhcnRpbmcgYSBkYXRhYmFzZSBoYXMgdG8gYmUgY2hhcmdlZCBpbiBlbGFzdGljc2VhcmNoLiBQbGVhc2UgcmVmZXIgdG8KW2RhdGFwcmVwIHJlcG9zaXRvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRjaElELXByb2plY3QvZGVjZXMtZGF0YXByZXApLgoKIyMgUHJvamVjdCByZXNvdXJjZXMKCiogW1NvdXJjZSBjb2RlXShodHRwczovL2dpdGh1Yi5jb20vbWF0Y2hpZC1wcm9qZWN0L2RlY2VzLWJhY2tlbmQpCiogW0lzc3VlIHRyYWNrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRjaGlkLXByb2plY3QvZGVjZXMtYmFja2VuZC9pc3N1ZXMpCgojIyBMaWNlbnNlCgpTb3VyY2UgY29kZSBoYXMgYmVlbiBwdWJsaXNoZWQgdXNpbmcgW0xHUEwgMy4wXShodHRwczovL2dpdGh1Yi5jb20vbWF0Y2hJRC1wcm9qZWN0L2RlY2VzLWJhY2tlbmQvYmxvYi9kZXYvTElDRU5DRSkuCgrCqSAyMDIwIENyaXN0aWFuIEJyb2thdGUsIEROVU0gLSBTRElUCg== readmeEtag: '"d89b6e1896ad8ee309b76840808d491d0d96f85c"' readmeLastModified: Sun, 08 Jun 2025 20:07:53 GMT repositoryId: 242171506 description: 'API Personnes décédées ' created: '2020-02-21T15:33:05Z' updated: '2026-02-05T01:52:42Z' language: TypeScript archived: false stars: 11 watchers: 2 forks: 8 owner: matchID-project logo: https://avatars.githubusercontent.com/u/32673019?v=4 license: LGPL-3.0 repoEtag: '"d1e994746879965d3324e0bda3a9d64d671b9d3ad81c345cac3668395ef0fa4f"' repoLastModified: Thu, 05 Feb 2026 01:52:42 GMT foundInMaster: true category: Server id: a1b78d0ba8dd46d8098f77bf077b6cac - source: openapi3 tags repository: https://github.com/shpoont/openapi-jsonapi-definition v3: true id: dec8a69f6989a95f7dc07c1775cb67b6 repositoryMetadata: base64Readme: >- W09wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pIGRlZmluaXRpb25zIG9mIFtKU09OOkFQSV0oaHR0cHM6Ly9qc29uYXBpLm9yZy8pCgojIE9wZW5BcGkgdjMuMC4wCi0gW0pTT046QVBJIHYxLjFdKGRlZmluaXRpb25zL2RyYWZ0Lm9wZW5hcGktMy4wLjAtanNvbmFwaS0xLjEueWFtbCkgKGRyYWZ0KQo= readmeEtag: '"84a95ad97ea20769698662439971465469ee01c6"' readmeLastModified: Sat, 26 Nov 2022 12:06:52 GMT repositoryId: 560845522 description: OpenAPI definitions of JSON:API created: '2022-11-02T11:57:00Z' updated: '2024-05-23T19:51:45Z' language: null archived: false stars: 9 watchers: 1 forks: 0 owner: shpoont logo: https://avatars.githubusercontent.com/u/1372784?v=4 repoEtag: '"8345bc8dd9261f1d2fdf8f41602d13b579b55d3cd7e57ea231a97c505a96f0b7"' repoLastModified: Thu, 23 May 2024 19:51:45 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/taskiq-python/aiohttp-deps v3: true id: 9930662c3938ea0a73abd4e4169f027f repositoryMetadata: base64Readme: >- WyFbUHlQSSAtIFB5dGhvbiBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy9haW9odHRwLWRlcHM/c3R5bGU9Zm9yLXRoZS1iYWRnZSldKGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9haW9odHRwLWRlcHMvKQpbIVtQeVBJXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9haW9odHRwLWRlcHM/c3R5bGU9Zm9yLXRoZS1iYWRnZSldKGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9haW9odHRwLWRlcHMvKQpbIVtQeVBJIC0gRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvZG0vYWlvaHR0cC1kZXBzP3N0eWxlPWZvci10aGUtYmFkZ2UpXShodHRwczovL3B5cGlzdGF0cy5vcmcvcGFja2FnZXMvYWlvaHR0cC1kZXBzKQoKIyBBaW9IVFRQIGRlcHMKCgpUaGlzIHByb2plY3Qgd2FzIGluaXRpYWxseSBjcmVhdGVkIHRvIHNob3cgdGhlIGFiaWxsaXRpZXMgb2YgW3Rhc2tpcS1kZXBlbmRlbmNpZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS90YXNraXEtcHl0aG9uL3Rhc2tpcS1kZXBlbmRlbmNpZXMpIHByb2plY3QsIHdoaWNoIGlzIHVzZWQgYnkgW3Rhc2tpcV0oaHR0cHM6Ly9naXRodWIuY29tL3Rhc2tpcS1weXRob24vdGFza2lxKSB0byBwcm92aWRlIHlvdSB3aXRoIHRoZSBiZXN0IGV4cGVyaWVuY2Ugb2Ygc2VuZGluZyBkaXN0cmlidXRlZCB0YXNrcy4KClRoaXMgcHJvamVjdCBhZGRzIFtGYXN0QVBJXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vZmFzdGFwaSktbGlrZSBkZXBlbmRlbmN5IGluamVjdGlvbiB0byB5b3VyIFtBaW9IVFRQXShodHRwczovL2dpdGh1Yi5jb20vYWlvLWxpYnMvYWlvaHR0cCkgYXBwbGljYXRpb24gYW5kIHN3YWdnZXIgZG9jdW1lbnRhdGlvbiBiYXNlZCBvbiB0eXBlcy4KClRvIHN0YXJ0IHVzaW5nIGRlcGVuZGVuY3kgaW5qZWN0aW9uLCBqdXN0IGluaXRpYWxpemUgdGhlIGluamVjdG9yLgoKYGBgcHl0aG9uCmZyb20gYWlvaHR0cCBpbXBvcnQgd2ViCmZyb20gYWlvaHR0cF9kZXBzIGltcG9ydCBpbml0IGFzIGRlcHNfaW5pdAoKCmFwcCA9IHdlYi5BcHBsaWNhdGlvbigpCgoKYXBwLm9uX3N0YXJ0dXAuYXBwZW5kKGRlcHNfaW5pdCkKCndlYi5ydW5fYXBwKGFwcCkKCmBgYAoKCklmIHlvdSB1c2UgbXlweSwgdGhlbiB3ZSBoYXZlIGEgY3VzdG9tIHJvdXRlciB3aXRoIHByb3BwZXIgdHlwZXMuCgoKYGBgcHl0aG9uCmZyb20gYWlvaHR0cCBpbXBvcnQgd2ViCmZyb20gYWlvaHR0cF9kZXBzIGltcG9ydCBpbml0IGFzIGRlcHNfaW5pdApmcm9tIGFpb2h0dHBfZGVwcyBpbXBvcnQgUm91dGVyCgpyb3V0ZXIgPSBSb3V0ZXIoKQoKCkByb3V0ZXIuZ2V0KCIvIikKYXN5bmMgZGVmIGhhbmRsZXIoKToKICAgIHJldHVybiB3ZWIuanNvbl9yZXNwb25zZSh7fSkKCgphcHAgPSB3ZWIuQXBwbGljYXRpb24oKQoKYXBwLnJvdXRlci5hZGRfcm91dGVzKHJvdXRlcikKCmFwcC5vbl9zdGFydHVwLmFwcGVuZChkZXBzX2luaXQpCgp3ZWIucnVuX2FwcChhcHApCgpgYGAKCkFsc28sIHlvdSBjYW4gbmVzdCByb3V0ZXJzIHdpdGggcHJlZml4ZXMsCgpgYGBweXRob24KYXBpX3JvdXRlciA9IFJvdXRlcigpCgptZW1lc19yb3V0ZXIgPSBSb3V0ZXIoKQoKbWFpbl9yb3V0ZXIgPSBSb3V0ZXIoKQoKbWFpbl9yb3V0ZXIuYWRkX3JvdXRlcyhhcGlfcm91dGVyLCBwcmVmaXg9Ii9hcGkiKQptYWluX3JvdXRlci5hZGRfcm91dGVzKG1lbWVzX3JvdXRlciwgcHJlZml4PSIvbWVtZXMiKQpgYGAKCiMjIFN3YWdnZXIKCklmIHlvdSB1c2UgZGVwZW5kZW5jaWVzIGluIHlvdSBoYW5kbGVycywgd2UgY2FuIGVhc2lseSBnZW5lcmF0ZSBzd2FnZ2VyIGZvciB5b3UuCldlIGhhdmUgc29tZSBsaW1pdGF0aW9uczoKMS4gV2UgZG9uJ3Qgc3VwcG9ydCByZXNvbHZpbmcgdHlwZSBhbGlhc2VzIGlmIGhpbnQgaXMgYSBzdHJpbmcuCiAgICBJZiB5b3UgZGVmaW5lIHZhcmlhYmxlIGxpa2UgdGhpczogYG15dmFyID0gaW50IHwgTm9uZWAgYW5kIHRoZW4gaW4gaGFuZGxlcgogICAgeW91J2QgY3JlYXRlIGFubm90YXRpb24gbGlrZSB0aGlzOiBgcGFyYW06ICJzdHIgfCBteXZhciJgIGl0IHdpbGwgZmFpbC4KICAgIFlvdSBuZWVkIHRvIHVucXVvdGUgdHlwZSBoaW50IGluIG9yZGVyIHRvIGdldCBpdCB3b3JrLgoKV2Ugd2lsbCB0cnkgdG8gZml4IHRoZXNlIGxpbWl0YXRpb25zIGxhdGVyLgoKVG8gZW5hYmxlIHN3YWdnZXIsIGp1c3QgYWRkIGl0IHRvIHlvdXIgc3RhcnR1cC4KCmBgYHB5dGhvbgpmcm9tIGFpb2h0dHBfZGVwcyBpbXBvcnQgaW5pdCwgc2V0dXBfc3dhZ2dlcgoKYXBwID0gd2ViLkFwcGxpY2F0aW9uKCkKCmFwcC5vbl9zdGFydHVwLmV4dGVuZChbaW5pdCwgc2V0dXBfc3dhZ2dlcigpXSkKYGBgCgojIyMgUmVzcG9uc2VzCgpZb3UgY2FuIGRlZmluZSBzY2hlbWEgZm9yIHJlc3BvbnNlcyB1c2luZyBkYXRhY2xhc3NlcyBvcgpweWRhbnRpYyBtb2RlbHMuIFRoaXMgd291bGQgbm90IGFmZmVjdCBoYW5kbGVycyBpbiBhbnkgd2F5LAppdCdzIG9ubHkgZm9yIGRvY3VtZW50YXRpb24gcHVycG9zZXMsIGlmIHlvdSB3YW50IHRvIGFjdHVhbGx5CnZhbGlkYXRlIHZhbHVlcyB5b3VyIGhhbmRsZXIgcmV0dXJucywgcGxlYXNlIHdyaXRlIHlvdXIgb3duIHdyYXBwZXIuCgpgYGBweXRob24KZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCgpmcm9tIGFpb2h0dHAgaW1wb3J0IHdlYgpmcm9tIHB5ZGFudGljIGltcG9ydCBCYXNlTW9kZWwKCmZyb20gYWlvaHR0cF9kZXBzIGltcG9ydCBSb3V0ZXIsIG9wZW5hcGlfcmVzcG9uc2UKCnJvdXRlciA9IFJvdXRlcigpCgoKQGRhdGFjbGFzcwpjbGFzcyBTdWNjZXNzOgogICAgZGF0YTogc3RyCgoKY2xhc3MgVW5hdXRob3JpemVkKEJhc2VNb2RlbCk6CiAgICB3aHk6IHN0cgoKCkByb3V0ZXIuZ2V0KCIvIikKQG9wZW5hcGlfcmVzcG9uc2UoMjAwLCBTdWNjZXNzLCBjb250ZW50X3R5cGU9ImFwcGxpY2F0aW9uL3htbCIpCkBvcGVuYXBpX3Jlc3BvbnNlKDIwMCwgU3VjY2VzcykKQG9wZW5hcGlfcmVzcG9uc2UoNDAxLCBVbmF1dGhvcml6ZWQsIGRlc2NyaXB0aW9uPSJXaGVuIHRva2VuIGlzIG5vdCBjb3JyZWN0IikKYXN5bmMgZGVmIGhhbmRsZXIoKSAtPiB3ZWIuUmVzcG9uc2U6CiAgICAuLi4KYGBgCgpUaGlzIGV4YW1wbGUgaWxsdXN0cmF0ZXMgaG93IG11Y2ggeW91IGNhbiBkbyB3aXRoIHRoaXMgZGVjb3JhdG9yLiBZb3UKY2FuIGhhdmUgbXVsdGlwbGUgY29udGVudC10eXBlcyBmb3IgYSBzaW5nbGUgc3RhdHVzLCBvciB5b3UgY2FuIGhhdmUgZGlmZmVyZW50CnBvc3NibGUgc3RhdHVzZXMuIFRoaXMgZnVuY3Rpb24gaXMgcHJldHR5IHNpbXBsZSBhbmQgaWYgeW91IHdhbnQgdG8gbWFrZQp5b3VyIG93biBkZWNvcmF0b3IgZm9yIHlvdXIgcmVzcG9uc2VzLCBpdCB3b24ndCBiZSBoYXJkLgoKCiMjIERlZmF1bHQgZGVwZW5kZW5jaWVzCgpCeSBkZWZhdWx0IHRoaXMgbGlicmFyeSBwcm92aWRlcyBvbmx5IHR3byBpbmplY3RhYmxlcy4gYHdlYi5SZXF1ZXN0YCBhbmQgYHdlYi5BcHBsaWNhdGlvbmAuCgpgYGBweXRob24KCmFzeW5jIGRlZiBoYW5kbGVyKGFwcDogd2ViLkFwcGxpY2F0aW9uID0gRGVwZW5kcygpKTogLi4uCgphc3luYyBkZWYgaGFuZGxlcjIocmVxdWVzdDogd2ViLlJlcXVlc3QgPSBEZXBlbmRzKCkpOiAuLi4KCmBgYAoKSXQncyBzdXBlciB1c2VmdWwsIGJlY2F1c2UgeW91IGNhbiB1c2UgdGhlc2UgZGVwZW5kZW5jaWVzIGluCmFueSBvdGhlciBkZXBlbmRlbmN5LiBIZXJlJ3MgYSBtb3JlIGNvbXBsZXggZXhhbXBsZSBvZiBob3cgeW91IGNhbiB1c2UgdGhpcyBsaWJyYXJ5LgoKCmBgYHB5dGhvbgpmcm9tIGFpb2h0dHBfZGVwcyBpbXBvcnQgUm91dGVyLCBEZXBlbmRzCmZyb20gYWlvaHR0cCBpbXBvcnQgd2ViCgpyb3V0ZXIgPSBSb3V0ZXIoKQoKCmFzeW5jIGRlZiBnZXRfZGJfc2Vzc2lvbihhcHA6IHdlYi5BcHBsaWNhdGlvbiA9IERlcGVuZHMoKSk6CiAgICBhc3luYyB3aXRoIGFwcFt3ZWIuQXBwS2V5KCJkYiIpXSBhcyBzZXNzOgogICAgICAgIHlpZWxkIHNlc3MKCgpjbGFzcyBNeURBTzoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXNzaW9uPURlcGVuZHMoZ2V0X2RiX3Nlc3Npb24pKToKICAgICAgICBzZWxmLnNlc3Npb24gPSBzZXNzaW9uCgogICAgYXN5bmMgZGVmIGdldF9vYmplY3RzKHNlbGYpIC0+IGxpc3Rbb2JqZWN0XToKICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5zZXNzaW9uLmV4ZWN1dGUoIlNFTEVDVCAxIikKCgpAcm91dGVyLmdldCgiLyIpCmFzeW5jIGRlZiBoYW5kbGVyKGRiX3Nlc3Npb246IE15REFPID0gRGVwZW5kcygpKToKICAgIG9ianMgPSBhd2FpdCBkYl9zZXNzaW9uLmdldF9vYmplY3RzKCkKICAgIHJldHVybiB3ZWIuanNvbl9yZXNwb25zZSh7Im9iamVjdHMiOiBvYmpzfSkKCmBgYAoKSWYgeW91IGRvIHNvbWV0aGluZyBsaWtlIHRoaXMsIHlvdSB3b3VsZCBuZXZlciB0aGluayBhYm91dCBpbml0aWFsaXppbmcgeW91ciBEQU8uIFlvdSBjYW4ganVzdCBpbmplY3QgaXQgYW5kIHRoYXQncyBpdC4KCgojIEJ1aWx0LWluIGRlcGVuZGVuY2llcwoKVGhpcyBsaWJyYXJ5IGFsc28gcHJvdmlkZXMgeW91IHdpdGggc29tZSBkZWZhdWx0IGRlcGVuZGVuY2llcyB0aGF0IGNhbiBoZWxwIHlvdSBpbiBidWlsZGluZyB0aGUgYmVzdCB3ZWItc2VydmljZS4KCiMjIEpzb24KClRvIHBhcnNlIGpzb24sIGNyZWF0ZSBhIHB5ZGFudGljIG1vZGVsIGFuZCBhZGQgYSBkZXBlbmRlbmN5IHRvIHlvdXIgaGFuZGxlci4KCgpgYGBweXRob24KZnJvbSBhaW9odHRwIGltcG9ydCB3ZWIKZnJvbSBweWRhbnRpYyBpbXBvcnQgQmFzZU1vZGVsCmZyb20gYWlvaHR0cF9kZXBzIGltcG9ydCBSb3V0ZXIsIEpzb24sIERlcGVuZHMKCnJvdXRlciA9IFJvdXRlcigpCgoKY2xhc3MgVXNlckluZm8oQmFzZU1vZGVsKToKICAgIG5hbWU6IHN0cgoKCkByb3V0ZXIucG9zdCgiL3VzZXJzIikKYXN5bmMgZGVmIG5ld19kYXRhKHVzZXI6IFVzZXJJbmZvID0gRGVwZW5kcyhKc29uKCkpKToKICAgIHJldHVybiB3ZWIuanNvbl9yZXNwb25zZSh7InVzZXIiOiB1c2VyLm1vZGVsX2R1bXAoKX0pCgpgYGAKClRoaXMgZGVwZW5kZW5jeSBhdXRvbWF0aWNhbGx5IHZhbGlkYXRlcyBkYXRhIGFuZCBzZW5kCmVycm9ycyBpZiB0aGUgZGF0YSBkb2Vzbid0IG9ycmVsYXRlIHdpdGggc2NoZW1hIG9yIGJvZHkgaXMgbm90IGEgdmFsaWQganNvbi4KCklmIHlvdSB3YW50IHRvIG1ha2UgdGhpcyBkYXRhIG9wdGlvbmFsLCBqdXN0IG1hcmsgaXQgYXMgb3B0aW9uYWwuCgpgYGBweXRob24KQHJvdXRlci5wb3N0KCIvdXNlcnMiKQphc3luYyBkZWYgbmV3X2RhdGEodXNlcjogT3B0aW9uYWxbVXNlckluZm9dID0gRGVwZW5kcyhKc29uKCkpKToKICAgIGlmIHVzZXIgaXMgTm9uZToKICAgICAgICByZXR1cm4gd2ViLmpzb25fcmVzcG9uc2UoeyJ1c2VyIjogTm9uZX0pCiAgICByZXR1cm4gd2ViLmpzb25fcmVzcG9uc2UoeyJ1c2VyIjogdXNlci5tb2RlbF9kdW1wKCl9KQoKYGBgCgojIyBIZWFkZXJzCgpZb3UgY2FuIGdldCBhbmQgdmFsaWRhdGUgaGVhZGVycyB1c2luZyBgSGVhZGVyYCBkZXBlbmRlbmN5LgoKTGV0J3MgdHJ5IHRvIGJ1aWxkIHNpbXBsZSBleGFtcGxlIGZvciBhdXRob3JpemF0aW9uLgoKYGBgcHl0aG9uCmZyb20gYWlvaHR0cF9kZXBzIGltcG9ydCBSb3V0ZXIsIEhlYWRlciwgRGVwZW5kcwpmcm9tIGFpb2h0dHAgaW1wb3J0IHdlYgoKcm91dGVyID0gUm91dGVyKCkKCgpkZWYgZGVjb2RlX3Rva2VuKGF1dGhvcml6YXRpb246IHN0ciA9IERlcGVuZHMoSGVhZGVyKCkpKSAtPiBzdHI6CiAgICBpZiBhdXRob3JpemF0aW9uID09ICJzZWNyZXQiOgogICAgICAgICMgTGV0J3MgcHJldGVuZCB0aGF0IGhlcmUgd2UKICAgICAgICAjIGRlY29kZSBvdXIgdG9rZW4uCiAgICAgICAgcmV0dXJuIGF1dGhvcml6YXRpb24KICAgIHJhaXNlIHdlYi5IVFRQVW5hdXRob3JpemVkKCkKCgpAcm91dGVyLmdldCgiL3NlY3JldF9kYXRhIikKYXN5bmMgZGVmIG5ld19kYXRhKHRva2VuOiBzdHIgPSBEZXBlbmRzKGRlY29kZV90b2tlbikpIC0+IHdlYi5SZXNwb25zZToKICAgIHJldHVybiB3ZWIuanNvbl9yZXNwb25zZSh7InNlY3JldCI6ICJub3QgYSBzZWNyZXQifSkKCmBgYAoKQXMgeW91IGNhbiBzZWUsIGhlYWRlciBuYW1lIHRvIHBhcnNlIGlzIGVxdWFsIHRvIHRoZQpuYW1lIG9mIGEgcGFyYW1ldGVyIHRoYXQgaW50cm9kdWNlcyBIZWFkZXIgZGVwZW5kZW5jeS4KCklmIHlvdSB3YW50IHRvIHVzZSBzb21lIG5hbWUgdGhhdCBpcyBub3QgYWxsb3dlZCBpbiBweXRob24sIG9yIGp1c3Qgd2FudCB0byBoYXZlIGRpZmZlcmVudCBuYW1lcywgeW91IGNhbiB1c2UgYWxpYXMuIExpa2UgdGhpczoKCmBgYHB5dGhvbgpkZWYgZGVjb2RlX3Rva2VuKGF1dGg6IHN0ciA9IERlcGVuZHMoSGVhZGVyKGFsaWFzPSJBdXRob3JpemF0aW9uIikpKSAtPiBzdHI6CmBgYAoKSGVhZGVycyBjYW4gYWxzbyBiZSBwYXJzZWQgdG8gdHlwZXMuIElmIHlvdSB3YW50IGEgaGVhZGVyIHRvIGJlIHBhcnNlZCBhcyBpbnQsIGp1c3QgYWRkIHRoZSB0eXBlaGludC4KCmBgYHB5dGhvbgpkZWYgZGVjb2RlX3Rva2VuKG1lbWVfaWQ6IGludCA9IERlcGVuZHMoSGVhZGVyKCkpKSAtPiBzdHI6CmBgYAoKSWYgeW91IHdhbnQgdG8gZ2V0IGxpc3Qgb2YgdmFsdWVzIG9mIG9uZSBoZWFkZXIsIHVzZSBwYXJhbWV0ZXIgYG11bHRpcGxlPVRydWVgLgoKYGBgcHl0aG9uCmRlZiBkZWNvZGVfdG9rZW4obWVtZV9pZDogbGlzdFtpbnRdID0gRGVwZW5kcyhIZWFkZXIobXVsdGlwbGU9VHJ1ZSkpKSAtPiBzdHI6CgpgYGAKCkFuZCwgb2YgY291cnNlLCB5b3UgY2FuIHByb3ZpZGUgdGhpcyBkZXBlbmRlbmN5IHdpdGggZGVmYXVsdCB2YWx1ZSBpZiB0aGUgdmFsdWUgZnJvbSB1c2VyIGNhbm5vdCBiZSBwYXJzZWQgZm9yIHNvbWUgcmVhc29uLgoKYGBgcHl0aG9uCmRlZiBkZWNvZGVfdG9rZW4obWVtZV9pZDogc3RyID0gRGVwZW5kcyhIZWFkZXIoZGVmYXVsdD0ibm90LWEtc2VjcmV0IikpKSAtPiBzdHI6CmBgYAoKCiMjIFF1ZXJpZXMKCllvdSBjYW4gZGVwZW5kIG9uIGBRdWVyeWAgdG8gZ2V0IGFuZCBwYXJzZSBxdWVyeSBwYXJhbWV0ZXJzLgoKYGBgcHl0aG9uCmZyb20gYWlvaHR0cF9kZXBzIGltcG9ydCBSb3V0ZXIsIFF1ZXJ5LCBEZXBlbmRzCmZyb20gYWlvaHR0cCBpbXBvcnQgd2ViCgpyb3V0ZXIgPSBSb3V0ZXIoKQoKCkByb3V0ZXIuZ2V0KCIvc2hvcCIpCmFzeW5jIGRlZiBzaG9wKGl0ZW1faWQ6IHN0ciA9IERlcGVuZHMoUXVlcnkoKSkpIC0+IHdlYi5SZXNwb25zZToKICAgIHJldHVybiB3ZWIuanNvbl9yZXNwb25zZSh7ImlkIjogaXRlbV9pZH0pCgpgYGAKCnRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgaXMgdGhlIHNhbWUgYXMgdGhlIG5hbWUgb2YgZnVuY3Rpb24gcGFyYW1ldGVyLgoKVGhlIFF1ZXJ5IGRlcGVuZGVuY3kgaXMgYWN1YWxseSB0aGUgc2FtZSBhcyB0aGUgSGVhZGVyIGRlcGVuZGVuY3ksIHNvIGV2ZXJ5dGhpbmcgYWJvdXQgdGhlIGBIZWFkZXJgIGRlcGVuZGVuY3kgYWxzbyBhcHBsaWVzIHRvIGBRdWVyeWAuCgojIyBWaWV3cwoKSWYgeW91IHVzZSB2aWV3cyBhcyBoYW5kbGVycywgcGxlYXNlIHVzZSBWaWV3IGNsYXNzIGZyb20gYGFpb2h0dHBfZGVwc2AsIG90aGVyd2lzZSB0aGUgbWFnaWMgd29uJ3Qgd29yay4KCmBgYHB5dGhvbgpmcm9tIGFpb2h0dHBfZGVwcyBpbXBvcnQgUm91dGVyLCBWaWV3LCBEZXBlbmRzCmZyb20gYWlvaHR0cCBpbXBvcnQgd2ViCgpyb3V0ZXIgPSBSb3V0ZXIoKQoKCkByb3V0ZXIudmlldygiL3ZpZXciKQpjbGFzcyBNeVZpZXcoVmlldyk6CiAgICBhc3luYyBkZWYgZ2V0KHNlbGYsIGFwcDogd2ViLkFwcGxpY2F0aW9uID0gRGVwZW5kcygpKToKICAgICAgICByZXR1cm4gd2ViLmpzb25fcmVzcG9uc2UoeyJhcHAiOiBzdHIoYXBwKX0pCgpgYGAKCgojIyBGb3JtcwoKTm93IHlvdSBjYW4gZWFzaXkgZ2V0IGFuZCB2YWxpZGF0ZSBmb3JtIGRhdGEgZnJvbSB5b3VyIHJlcXVlc3QuClRvIG1ha2UgdGhlIG1hZ2ljIGhhcHBlbiwgcGxlYXNlIGFkZCBgYXJiaXRyYXJ5X3R5cGVzX2FsbG93ZWRgIHRvIHRoZSBjb25maWcgb2YgeW91ciBtb2RlbC4KCgpgYGBweXRob24KaW1wb3J0IHB5ZGFudGljCmZyb20gYWlvaHR0cF9kZXBzIGltcG9ydCBSb3V0ZXIsIERlcGVuZHMsIEZvcm0KZnJvbSBhaW9odHRwIGltcG9ydCB3ZWIKCnJvdXRlciA9IFJvdXRlcigpCgoKY2xhc3MgTXlGb3JtKHB5ZGFudGljLkJhc2VNb2RlbCk6CiAgICBpZDogaW50CiAgICBmaWxlOiB3ZWIuRmlsZUZpZWxkCgogICAgbW9kZWxfY29uZmlnID0gcHlkYW50aWMuQ29uZmlnRGljdChhcmJpdHJhcnlfdHlwZXNfYWxsb3dlZD1UcnVlKQoKCkByb3V0ZXIucG9zdCgiLyIpCmFzeW5jIGRlZiBoYW5kbGVyKG15X2Zvcm06IE15Rm9ybSA9IERlcGVuZHMoRm9ybSgpKSk6CiAgICB3aXRoIG9wZW4oIm15X2ZpbGUiLCAid2IiKSBhcyBmOgogICAgICAgIGYud3JpdGUobXlfZm9ybS5maWxlLmZpbGUucmVhZCgpKQogICAgcmV0dXJuIHdlYi5qc29uX3Jlc3BvbnNlKHsiaWQiOiBteV9mb3JtLmlkfSkKCmBgYAoKIyMgUGF0aAoKSWYgeW91IGhhdmUgcGF0aCB2YXJpYWJsZXMsIHlvdSBjYW4gYWxzbyBpbmplY3QgdGhlbSBpbiB5b3VyIGhhbmRsZXIuCgpgYGBweXRob24KZnJvbSBhaW9odHRwX2RlcHMgaW1wb3J0IFJvdXRlciwgUGF0aCwgRGVwZW5kcwpmcm9tIGFpb2h0dHAgaW1wb3J0IHdlYgoKcm91dGVyID0gUm91dGVyKCkKCgpAcm91dGVyLmdldCgiL3ZpZXcve3Zhcn0iKQphc3luYyBkZWYgbXlfaGFuZGxlcih2YXI6IHN0ciA9IERlcGVuZHMoUGF0aCgpKSk6CiAgICByZXR1cm4gd2ViLmpzb25fcmVzcG9uc2UoeyJ2YXIiOiB2YXJ9KQoKYGBgCgoKIyMgRXh0cmFPcGVuQVBJCgpUaGlzIGRlcGVuZGVuY3kgaXMgdXNlZCB0byBhZGQgYWRkaXRpb25hbCBzd2FnZ2VyIGZpZWxkcyB0byB0aGUgZW5kcG9pbnQncyBzd2FnZ2VyCnRoYXQgaXMgdXNpbmcgdGhpcyBkZXBlbmRlbmN5LiBJdCBtaWdodCBiZSBldmVuIGluZGlyZWN0IGRlcGVuZGVuY3kuCgpZb3UgY2FuIGNoZWNrIGhvdyB0aGlzIHRoaW5nIGNhbiBiZSB1c2VkIGluIG91ciBbZXhhbXBsZXMvc3dhZ2dlcl9hdXRoLnB5XShodHRwczovL2dpdGh1Yi5jb20vdGFza2lxLXB5dGhvbi9haW9odHRwLWRlcHMvdHJlZS9tYXN0ZXIvZXhhbXBsZXMvc3dhZ2dlcl9hdXRoLnB5KS4KCgojIyBPdmVycmlkaW5nIGRlcGVuZGVuY2llcwoKU29tZXRpbWVzIGZvciB0ZXN0cyB5b3UgZG9uJ3Qgd2FudCB0byBjYWxjdWxhdGUgYWN0dWFsIGZ1bmN0aW9ucwphbmQgeW91IHdhbnQgdG8gcGFzcyBhbm90aGVyIGZ1bmN0aW9ucyBpbnN0ZWFkLgoKVG8gZG8gc28sIHlvdSBjYW4gYWRkICJkZXBlbmRlbmN5X292ZXJyaWRlcyIgb3IgInZhbHVlc19vdmVycmlkZXMiIHRvIHRoZSBhcGxpY2F0aW9uJ3Mgc3RhdGUuClRoZXNlIHZhbHVlcyBzaG91bGQgYmUgZGljdHMuIFRoZSBrZXlzIGZvciB0aGVzZSB2YWx1ZXMgY2FuIGJlIGZvdW5kIGluIGBhaW9odHRwX2RlcHMua2V5c2AgbW9kdWxlLgoKSGVyZSdzIGFuIGV4YW1wbGUuCgpgYGBweXRob24KZGVmIG9yaWdpbmFsX2RlcCgpIC0+IGludDoKICAgIHJldHVybiAxCgpjbGFzcyBNeVZpZXcoVmlldyk6CiAgICBhc3luYyBkZWYgZ2V0KHNlbGYsIG51bTogaW50ID0gRGVwZW5kcyhvcmlnaW5hbF9kZXApKToKICAgICAgICAiIiJOb3RoaW5nLiIiIgogICAgICAgIHJldHVybiB3ZWIuanNvbl9yZXNwb25zZSh7InJlcXVlc3QiOiBudW19KQpgYGAKCkltYWdpbmUgeW91IGhhdmUgYSBoYW5kbGVyIHRoYXQgZGVwZW5kcyBvbiBzb21lIGZ1bmN0aW9uLApidXQgaW5zdGVhZCBvZiBgMWAgeW91IHdhbnQgdG8gaGF2ZSBgMmAgaW4geW91ciB0ZXN0cy4KClRvIGRvIGl0LCBqc3V0IGFkZCBgZGVwZW5kZW5jeV9vdmVycmlkZXNgIHNvbWV3aGVyZSwKd2hlcmUgeW91IGNyZWF0ZSB5b3VyIGFwcGxpY2F0aW9uLiBBbmQgbWFrZSBzdXJlIHRoYXQga2V5cwpvZiB0aGF0IGRpY3QgYXJlIGFjdHVhbCBmdW5jdGlvbiB0aGF0IGFyZSBiZWluZyByZXBsYWNlZC4KCmBgYHB5dGhvbgpmcm9tIGFpb2h0dHBfZGVwcyBpbXBvcnQgVkFMVUVTX09WRVJSSURFU19LRVkKCm15X2FwcFtWQUxVRVNfT1ZFUlJJREVTX0tFWV0gPSB7b3JpZ2luYWxfZGVwOiAyfQpgYGAKCkJ1dCBgdmFsdWVzX292ZXJyaWRlc2Agb25seSBvdmVycmlkZXMgcmV0dXJuZWQgdmFsdWVzLiBJZiB5b3Ugd2FudCB0bwpvdmVycmlkZSBmdW5jdGlvbnMsIHlvdSBoYXZlIHRvIHVzZSBgZGVwZW5kZW5jeV9vdmVycmlkZXNgLiBIZXJlJ3MgYW4gZXhhbXBsZToKCmBgYHB5dGhvbgpmcm9tIGFpb2h0dHBfZGVwcyBpbXBvcnQgREVQRU5ERU5DWV9PVkVSUklERVNfS0VZCgpkZWYgcmVwbGFjaW5nX2Z1bmN0aW9uKCkgLT4gaW50OgogICAgcmV0dXJuIDIKCgpteV9hcHBbREVQRU5ERU5DWV9PVkVSUklERVNfS0VZXSA9IHtvcmlnaW5hbF9kZXA6IHJlcGxhY2luZ19mdW5jdGlvbn0KYGBgCgpUaGUgY29vbCBwb2ludCBhYm91dCBgZGVwZW5kZW5jeV9vdmVycmlkZXNgLCBpcyB0aGF0IGl0IHJlY2FsY3VsYXRlcyBncmFwaCBhbmQKeW91IGNhbiB1c2UgZGVwZW5kZW5jaWVzIGluIGZ1bmN0aW9uIHRoYXQgcmVwbGFjZXMgdGhlIG9yaWdpbmFsLgo= readmeEtag: '"d2a9fc86a3baf1bb870a15fa102ef06a0c0e3399"' readmeLastModified: Mon, 30 Sep 2024 23:19:15 GMT repositoryId: 630692437 description: Dependency injection for AioHTTP created: '2023-04-21T00:08:54Z' updated: '2025-08-29T11:39:06Z' language: Python archived: false stars: 11 watchers: 1 forks: 0 owner: taskiq-python logo: https://avatars.githubusercontent.com/u/109470701?v=4 license: MIT repoEtag: '"c62b18886ce8e93ef668a15ae3fdf8e05b6bbf3bd68ad41956ff48f46d2bc921"' repoLastModified: Fri, 29 Aug 2025 11:39:06 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/postman-open-technologies/openapi-linter v3: true repositoryMetadata: base64Readme: >- IyBzcGVjLWxpbnRlcgoKWyFbRGVwbG95XShodHRwczovL3d3dy5oZXJva3VjZG4uY29tL2RlcGxveS9idXR0b24uc3ZnKV0oaHR0cHM6Ly9oZXJva3UuY29tL2RlcGxveSkKWyFbRGVwbG95IHRvIEF6dXJlXShodHRwczovL2FrYS5tcy9kZXBsb3l0b2F6dXJlYnV0dG9uKV0oaHR0cHM6Ly9wb3J0YWwuYXp1cmUuY29tLyNjcmVhdGUvTWljcm9zb2Z0LlRlbXBsYXRlL3VyaS9odHRwcyUzQSUyRiUyRnJhdy5naXRodWJ1c2VyY29udGVudC5jb20lMkZwb3N0bWFuLW9wZW4tdGVjaG5vbG9naWVzJTJGb3BlbmFwaS1saW50ZXIlMkZtYWluJTJGZGVwbG95bWVudHMlMkZhenVyZS1mdW5jdGlvbnMlMkZ0ZW1wbGF0ZS5qc29uKQoKW0RlcGxveSB0byBBV1NdKGh0dHBzOi8vdXMtZWFzdC0yLmNvbnNvbGUuYXdzLmFtYXpvbi5jb20vY2xvdWRmb3JtYXRpb24vaG9tZT9yZWdpb249dXMtZWFzdC0yIy9zdGFja3MvY3JlYXRlL3RlbXBsYXRlP3N0YWNrTmFtZT1zcGVjLWxpbnRlci1hcGkmdGVtcGxhdGVVUkw9aHR0cHM6Ly9wdWJsaWMtc3BlYy1saW50ZXItYXBpLnMzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL3RlbXBsYXRlLmpzb24pCgpBbiBBUEkgZm9yIGxpbnRpbmcgT3BlbkFQSSwgQXN5bmNBUEksIGFuZCBvdGhlciBKU09OL1lBTUwgZG9jdW1lbnRzLCBidWlsdCBvbiB0b3Agb2YgW1NwZWN0cmFsXShodHRwczovL2dpdGh1Yi5jb20vc3RvcGxpZ2h0aW8vc3BlY3RyYWwpLgoKIyMg8J+boCBVc2FnZQoKU2VlIHRoZSBwdWJsaXNoZWQgW1Bvc3RtYW4gQ29sbGVjdGlvbl0oaHR0cHM6Ly93d3cucG9zdG1hbi5jb20vcG9zdG1hbi93b3Jrc3BhY2Uvb3BlbmFwaS1saW50aW5nL2RvY3VtZW50YXRpb24vMTI5NTk1NDItOTNjZDkwZGUtOWYzYy00ZWQwLTljNTctY2M1YTc3MTJjZjE5KSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBzcGVjLWxpbnRlciBBUEkuCgpTcGVjdHJhbCBjb25maWcgbXVzdCBiZSBob3N0ZWQgYXQgYSBVUkwuIFRoaXMgQVBJIHN1cHBvcnRzIGNvbmZpZ3VyYXRpb24gaW4gdGhlIGZvbGxvd2luZyBmb3JtczoKCi0gSlNPTi9ZQU1MIGZpbGUKLSBTcGVjdHJhbCBKYXZhU2NyaXB0IGNvbmZpZ3VyYXRpb24gKGFscGhhLCB0eXBpY2FsbHkgYC5zcGVjdHJhbC5qc2ApCi0gU3BlY3RyYWwgVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIChhbHBoYSwgdHlwaWNhbGx5IGAuc3BlY3RyYWwudHNgKQoKIyMg8J+ZjyBUaGFua3MKClRoaXMgcHJvamVjdCB3b3VsZG4ndCBiZSBwb3NzaWJsZSB3aXRob3V0IHRoZSBlZmZvcnRzIG9mIFtTdG9wbGlnaHRdKGh0dHBzOi8vc3RvcGxpZ2h0LmlvL29wZW4tc291cmNlL3NwZWN0cmFsLykgYW5kIHRoZSBbU3BlY3RyYWwgY29udHJpYnV0b3JzXShodHRwczovL2dpdGh1Yi5jb20vc3RvcGxpZ2h0aW8vc3BlY3RyYWwvZ3JhcGhzL2NvbnRyaWJ1dG9ycykuCgojIyDwn5OEIExpY2Vuc2UKCkFwYWNoZS0yLjAK readmeEtag: '"f65e477337af57cb6ced3ff4fd8476a5b4235024"' readmeLastModified: Mon, 07 Feb 2022 18:18:16 GMT repositoryId: 431253781 description: >- An open source implementation of Spectral for applying linting rules to an OpenAPI which can be deployed to AWS, Azure, and Heroku. created: '2021-11-23T21:07:39Z' updated: '2025-11-07T09:47:19Z' language: TypeScript archived: false stars: 10 watchers: 1 forks: 3 owner: postman-open-technologies logo: https://avatars.githubusercontent.com/u/79494470?v=4 license: Apache-2.0 repoEtag: '"d3d40c8525123c670fa19ae15af70e36b551c6bfe5e088819807664251bdd496"' repoLastModified: Fri, 07 Nov 2025 09:47:19 GMT foundInMaster: true category: Description Validators id: 651ef44cefb0498286e46666d0f496cf - source: openapi3 tags repository: https://github.com/networknt/openapi-parser v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXBhcnNlcgoKQSBsaWdodC13ZWlnaHQsIGZhc3QgT3BlbkFQSSAzLjAgcGFyc2VyIGFuZCB2YWxpZGF0b3Igd2l0aCBtaW5pbXVtIHRoaXJkIHBhcnR5IGRlcGVuZGVuY2llcy4KCltTdGFjayBPdmVyZmxvd10oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvdGFnZ2VkL2xpZ2h0LTRqKSB8CltHb29nbGUgR3JvdXBdKGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZm9ydW0vIyFmb3J1bS9saWdodC00aikgfApbR2l0dGVyIENoYXRdKGh0dHBzOi8vZ2l0dGVyLmltL25ldHdvcmtudC9saWdodC1yZXN0LTRqKSB8CltTdWJyZWRkaXRdKGh0dHBzOi8vd3d3LnJlZGRpdC5jb20vci9saWdodGFwaS8pIHwKW1lvdXR1YmUgQ2hhbm5lbF0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vY2hhbm5lbC9VQ0hDUk1XSlZYdzhpQjd6S3hGNTVCeXcpIHwKW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jLm5ldHdvcmtudC5jb20vbGlicmFyeS9vcGVuYXBpLXBhcnNlci8pIHwKW0NvbnRyaWJ1dGlvbiBHdWlkZV0oaHR0cHM6Ly9kb2MubmV0d29ya250LmNvbS9jb250cmlidXRlLykgfAoKSXQgaXMgYmFzZWQgb24gdGhlIGdlbmVyYXRlZCBjb2RlIGZyb20gW0thaVplbiBPcGVuQVBJIFBhcnNlcl0oaHR0cHM6Ly9naXRodWIuY29tL1JlcHJlWmVuL0thaVplbi1PcGVuQXBpLVBhcnNlcikgd2l0aG91dApkZXBlbmRlbmN5IG9uIGphdmFwYXJzZXItY29yZSwgZ3VhdmEsIGNvbW1vbnMtY2xpLCBjb21tb25zLWlvLCBqYXZheC5tYWlsIGFuZCBndWljZS4KCiMjIyBMaWNlbnNlCgpUaGUgT3BlbkFQSSBQYXJzZXIgaXMgcHJvdmlkZWQgdW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMS4wIGZvbGxvd2luZyB0aGUgcGFyZW50IFtLYWlaZW4gT3BlbkFQSSBQYXJzZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZXByZVplbi9LYWlaZW4tT3BlbkFwaS1QYXJzZXIpCg== readmeEtag: '"c7e1dadd4187bd1056766b58e21ac7c57571fb43"' readmeLastModified: Thu, 18 Jul 2024 12:46:15 GMT repositoryId: 110491962 description: >- A light-weight, fast OpenAPI 3.0 parser and validator with minimum third party dependencies created: '2017-11-13T02:47:14Z' updated: '2026-02-03T01:08:21Z' language: Java archived: false stars: 11 watchers: 15 forks: 9 owner: networknt logo: https://avatars.githubusercontent.com/u/8740739?v=4 license: EPL-1.0 repoEtag: '"ab0c5df8b452b0123b87bbf7c9f3c68c34b8ec111c5d61f26210140928230206"' repoLastModified: Tue, 03 Feb 2026 01:08:21 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: 326240eecd7b3028ddf9a6cfb4273a0d - source: openapi3 tags repository: https://github.com/ben-jamin-chen/springboot-swagger-rest-api v3: true id: a9df75197b7dc50eefc61eead6539c2b repositoryMetadata: base64Readme: >- IyBTYW1wbGUgU3ByaW5nIEJvb3QgKDIuMy4yKSBSRVNUZnVsIEFQSSB3aXRoIFN3YWdnZXIgKE9wZW5BUEkgMykKCldoaWxlIHNlYXJjaGluZyB0aHJvdWdoIEdpdEh1YiBmb3Igc29tZSBib2lsZXJwbGF0ZSBjb2RlIG9uIGhvdyB0byBzZXR1cCBhIFNwcmluZyBCb290IHByb2plY3Qgd2l0aCBTd2FnZ2VyLCBJIGZvdW5kIGl0IHF1aXRlIGRpZmZpY3VsdCB0byBmaW5kIGEgd29ya2luZyBleGFtcGxlIHdpdGggYSBtb3JlIHJlY2VudCB2ZXJzaW9uIG9mIFNwcmluZyBCb290IGFuZCBKYXZhIChpLmUuIDE0KS4gQW55d2F5cywgSSB0aG91Z2h0IEnigJlkIGNyZWF0ZSBteSBvd24gYW5kIHNoYXJlIHdpdGggZXZlcnlvbmUuIFRoaXMgaXMgZm9yIGFueW9uZSB0aGF0IG5lZWRzIHNvbWUgcXVpY2sgYm9pbGVycGxhdGUgY29kZSB0byBzZXR1cCB0aGVpciBuZXcgQVBJIHByb2plY3QuCgojIyBXaGF0IFlvdSBOZWVkCgoqIEphdmEgMTQKKiBNYXZlbiAzLjYuMCsKCiMjIEJ1aWxkIGFuZCBSdW4gdGhlIFNhbXBsZQoKWW91IGNhbiBpbXBvcnQgdGhlIGNvZGUgc3RyYWlnaHQgaW50byB5b3VyIHByZWZlcnJlZCBJREUgb3IgcnVuIHRoZSBzYW1wbGUgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kIChpbiB0aGUgcm9vdCBwcm9qZWN0IGZvbGRlcikuCgpgYGB6c2gKJCAgbXZuIHNwcmluZy1ib290OnJ1bgpgYGAKQWZ0ZXIgdGhlIGFwcGxpY2F0aW9uIHJ1bnMsIG5hdmlnYXRlIHRvIGBodHRwOi8vbG9jYWxob3N0OjcwMDEvc3dhZ2dlci11aS9pbmRleC5odG1sP2NvbmZpZ1VybD0vYXBpLWRvY3Mvc3dhZ2dlci1jb25maWdgIGluIHlvdXIgd2ViIGJyb3dzZXIgdG8gYWNjZXNzIHRoZSBTd2FnZ2VyIFVJIHBvcnRhbC4K readmeEtag: '"9a2b56a24abaa949af685f5503ecdcc4da8a4654"' readmeLastModified: Tue, 28 Jul 2020 00:13:07 GMT repositoryId: 281525992 description: >- A sample RESTful API using Spring Boot (2.3.2) and Java 14 with Swagger enabled. created: '2020-07-21T23:28:43Z' updated: '2024-08-29T06:57:42Z' language: Java archived: false stars: 9 watchers: 1 forks: 6 owner: ben-jamin-chen logo: https://avatars.githubusercontent.com/u/41641688?v=4 license: MIT repoEtag: '"fe0c0420ebe244459c1483a8df2b3a198e89906b137a3e90a430b6c43d5e8821"' repoLastModified: Thu, 29 Aug 2024 06:57:42 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/cerberauth/openapi-oathkeeper v3: true id: ba2b06aa4f5864bd7545ae91e08c58a6 repositoryMetadata: base64Readme: >- IyBPcnkgT2F0aGtlZXBlciBydWxlcyBmcm9tIE9wZW5BUEkKCgpbIVtKb2luIERpc2NvcmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZGlzY29yZC8xMjQyNzczMTMwMTM3ODMzNDkzP2xhYmVsPURpc2NvcmQmc3R5bGU9Zm9yLXRoZS1iYWRnZSldKGh0dHBzOi8vd3d3LmNlcmJlcmF1dGguY29tL2NvbW11bml0eSkKWyFbR2l0SHViIFdvcmtmbG93IFN0YXR1c10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvYWN0aW9ucy93b3JrZmxvdy9zdGF0dXMvY2VyYmVyYXV0aC9vcGVuYXBpLW9hdGhrZWVwZXIvY2kueW1sP2JyYW5jaD1tYWluJmxhYmVsPWNvcmUlMjBidWlsZCZzdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9naXRodWIuY29tL2NlcmJlcmF1dGgvb3BlbmFwaS1vYXRoa2VlcGVyL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbCkKIVtMYXRlc3QgdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvdi9yZWxlYXNlL2NlcmJlcmF1dGgvb3BlbmFwaS1vYXRoa2VlcGVyP3NvcnQ9c2VtdmVyJnN0eWxlPWZvci10aGUtYmFkZ2UpCiFbQ29kZWNvdl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jb2RlY292L2MvZ2gvY2VyYmVyYXV0aC9vcGVuYXBpLW9hdGhrZWVwZXI/dG9rZW49QkQxV1BYSkRBVyZzdHlsZT1mb3ItdGhlLWJhZGdlKQpbIVtHbyBSZXBvcnQgQ2FyZF0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vY2VyYmVyYXV0aC9vcGVuYXBpLW9hdGhrZWVwZXI/c3R5bGU9Zm9yLXRoZS1iYWRnZSldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9jZXJiZXJhdXRoL29wZW5hcGktb2F0aGtlZXBlcikKWyFbR29Eb2MgcmVmZXJlbmNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2dvZG9jLXJlZmVyZW5jZS01MjcyQjQuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UpXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2NlcmJlcmF1dGgvb3BlbmFwaS1vYXRoa2VlcGVyKQoKVGhpcyBDTEkgZ2VuZXJhdGVzIE9hdGhLZWVwZXIgcnVsZXMgdGhhdCBlbmZvcmNlIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIHBvbGljaWVzIGZvciBlYWNoIEFQSSBlbmRwb2ludCBmcm9tIGFuIE9wZW5BUEkgZmlsZS4KClRoaXMgcHJvamVjdCBhdXRvbWF0ZSB0aGUgZ2VuZXJhdGlvbiBvZiBPYXRoa2VlcGVyIHJ1bGVzIGZyb20gYW4gT3BlbkFQSSBjb250cmFjdCBhbmQgc2F2ZSBhIGxvdCBvZiB0aW1lIGVzcGVjaWFsbHkgZm9yIGxhcmdlciBwcm9qZWN0cyB3aXRoIG1hbnkgZW5kcG9pbnRzIG9yIG1hbnkgc2VydmljZXMgYnkgdXNpbmcgdGhlIGV4aXN0aW5nIGRvY3VtZW50YXRpb24gcHJvdmlkZWQgaW4gYW4gT3BlbkFQSSBjb250cmFjdC4gVGhpcyBjYW4gaW1wcm92ZSB0aGUgb3ZlcmFsbCBzZWN1cml0eSBvZiB0aGUgQVBJIGFuZCBlbnN1cmUgdGhhdCBhY2Nlc3MgaXMgZ3JhbnRlZCBvbmx5IHRvIGF1dGhvcml6ZWQgcGFydGllcy4gQWRkaXRpb25hbGx5LCB0aGlzIHRvb2wgY2FuIHNpbXBsaWZ5IHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzIGJ5IHJlZHVjaW5nIHRoZSBhbW91bnQgb2YgbWFudWFsIHdvcmsgcmVxdWlyZWQgdG8gd3JpdGUgYW5kIG1haW50YWluIE9hdGhLZWVwZXIgcnVsZXMuCgojIyBPcnkgT2F0aGtlZXBlcgoKSWYgeW91J3JlIG5vdCB5ZXQgZmFtaWxpYXIgd2l0aCBPcnkgT2F0aGtlZXBlciwgT2F0aGtlZXBlciBpcyBhbiBJZGVudGl0eSAmIEFjY2VzcyBQcm94eSAoSUFQKSBhbmQgQWNjZXNzIENvbnRyb2wgRGVjaXNpb24gQVBJIHRoYXQgYXV0aG9yaXplcyBIVFRQIHJlcXVlc3RzIGJhc2VkIG9uIHNldHMgb2YgQWNjZXNzIFJ1bGVzLiBZb3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBhbmQgZ2V0IHN0YXJ0ZWQgd2l0aCBbT3J5IE9hdGhrZWVwZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcnkvb2F0aGtlZXBlcikuCgo+IEFuIElkZW50aXR5ICYgQWNjZXNzIFByb3h5IGlzIHR5cGljYWxseSBkZXBsb3llZCBpbiBmcm9udCBvZiAodGhpbmsgQVBJIEdhdGV3YXkgb3IgU2VydmljZSBtZXNoKSB3ZWItZmFjaW5nIGFwcGxpY2F0aW9ucyBhbmQgaXMgY2FwYWJsZSBvZiBhdXRoZW50aWNhdGluZyBhbmQgb3B0aW9uYWxseSBhdXRob3JpemluZyBhY2Nlc3MgcmVxdWVzdHMuIFRoZSBBY2Nlc3MgQ29udHJvbCBEZWNpc2lvbiBBUEkgY2FuIGJlIGRlcGxveWVkIGFsb25nc2lkZSBhbiBleGlzdGluZyBBUEkgR2F0ZXdheSBvciByZXZlcnNlIHByb3h5LgoKIyMgSW5zdGFsbGF0aW9uCgpCZWxvdyBhcmUgdGhlIGluc3RydWN0aW9ucyB0byBpbnN0YWxsIG9uIExpbnV4LCBXaW5kb3dzLCBNYWNPUywgYW5kIERvY2tlci4gWW91IGNhbiBjaG9vc2UgdGhlIGluc3RhbGxhdGlvbiBtZXRob2QgdGhhdCBiZXN0IHN1aXRzIHlvdXIgbmVlZHMgYW5kIGVudmlyb25tZW50LgoKSWYgbm9uZSBvZiB0aGUgaW5zdGFsbGF0aW9uIG1ldGhvZHMgYmVsb3cgd29yayBmb3IgeW91LCB5b3UgY2FuIGFsc28gZG93bmxvYWQgdGhlIGJpbmFyeSBmcm9tIHRoZSBsYXRlc3QgW3JlbGVhc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9jZXJiZXJhdXRoL29wZW5hcGktb2F0aGtlZXBlci9yZWxlYXNlcykuCgojIyMgTGludXggKFNuYXApCgpJbnN0YWxsIHVzaW5nIFtTbmFwXShodHRwczovL3NuYXBjcmFmdC5pby9vcGVuYXBpLW9hdGhrZWVwZXIpLgoKYGBgc2gKc3VkbyBzbmFwIGluc3RhbGwgdnVsbmFwaQpgYGAKCiMjIyBNYWNPUyAoSG9tZWJyZXcpCgpJbnN0YWxsIHVzaW5nIEhvbWVicmV3LgoKYGBgc2gKYnJldyB0YXAgY2VyYmVyYXV0aC9vcGVuYXBpLW9hdGhrZWVwZXIgaHR0cHM6Ly9naXRodWIuY29tL2NlcmJlcmF1dGgvb3BlbmFwaS1vYXRoa2VlcGVyCmJyZXcgaW5zdGFsbCAkKGJyZXcgLS1yZXBvc2l0b3J5IGNlcmJlcmF1dGgvb3BlbmFwaS1vYXRoa2VlcGVyKS9vcGVuYXBpLW9hdGhrZWVwZXIucmIKYGBgCgojIyBHZXQgU3RhcnRlZAoKUHJvdmlkZXMgdGhlIHBhdGggdG8geW91ciBPcGVuQVBJIGNvbnRyYWN0IGZpbGUuCgpgYGBzaAouL29wZW5hcGktb2F0aGtlZXBlciBnZW5lcmF0ZSAtZiAuL29wZW5hcGkuanNvbgpgYGAKCk9uY2UgeW91IGhhdmUgc3BlY2lmaWVkIHRoZXNlIG9wdGlvbnMsIHRoZSB0b29sIHdpbGwgYW5hbHl6ZSB5b3VyIGNvbnRyYWN0IGFuZCBnZW5lcmF0ZSBPYXRoS2VlcGVyIHJ1bGVzIHRoYXQgZW5mb3JjZSB0aGUgc3BlY2lmaWVkIGFjY2VzcyBwb2xpY2llcy4gWW91IGNhbiB0aGVuIHNhdmUgdGhlc2UgcnVsZXMgdG8gYSBmaWxlIHRvIG1ha2UgaXQgcmVhZCBieSBPYXRoa2VlcGVyLgoKSGVyZSBpcyBhbiBleGFtcGxlIE9hdGhrZWVwZXIgcnVsZXMgb3V0cHV0IGZyb20gdGhlIFtQZXRzdG9yZSBPcGVuQVBJXSguL3Rlc3Qvc3R1Yi9wZXRzdG9yZS5vcGVuYXBpLmpzb24pCgo8ZGV0YWlscz4KICAgIDxzdW1tYXJ5Pk9hdGhrZWVwZXIgcnVsZXMgb3V0cHV0PC9zdW1tYXJ5PgoKYGBganNvbgpbCiAgICB7CiAgICAgICAgImlkIjogImFkZFBldCIsCiAgICAgICAgInZlcnNpb24iOiAiIiwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiQWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmUiLAogICAgICAgICJtYXRjaCI6IHsKICAgICAgICAgICAgIm1ldGhvZHMiOiBbCiAgICAgICAgICAgICAgICAiUE9TVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInVybCI6ICI8KGh0dHBzOi8vY2VyYmVyYXV0aFxcLmNvbS9hcGkvdjN8aHR0cDovL3N3YWdnZXJcXC5pby9hcGkvdjMpPi9wZXQiCiAgICAgICAgfSwKICAgICAgICAiYXV0aGVudGljYXRvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJoYW5kbGVyIjogImp3dCIsCiAgICAgICAgICAgICAgICAiY29uZmlnIjogewogICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZF9zY29wZSI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlOnBldHMiLAogICAgICAgICAgICAgICAgICAgICAgICAicmVhZDpwZXRzIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImF1dGhvcml6ZXIiOiB7CiAgICAgICAgICAgICJoYW5kbGVyIjogImFsbG93IiwKICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICB9LAogICAgICAgICJtdXRhdG9ycyI6IG51bGwsCiAgICAgICAgImVycm9ycyI6IG51bGwsCiAgICAgICAgInVwc3RyZWFtIjogewogICAgICAgICAgICAicHJlc2VydmVfaG9zdCI6IGZhbHNlLAogICAgICAgICAgICAic3RyaXBfcGF0aCI6ICIiLAogICAgICAgICAgICAidXJsIjogIiIKICAgICAgICB9CiAgICB9LAogICAgewogICAgICAgICJpZCI6ICJjcmVhdGVVc2VyIiwKICAgICAgICAidmVyc2lvbiI6ICIiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGNhbiBvbmx5IGJlIGRvbmUgYnkgdGhlIGxvZ2dlZCBpbiB1c2VyLiIsCiAgICAgICAgIm1hdGNoIjogewogICAgICAgICAgICAibWV0aG9kcyI6IFsKICAgICAgICAgICAgICAgICJQT1NUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidXJsIjogIjwoaHR0cHM6Ly9jZXJiZXJhdXRoXFwuY29tL2FwaS92M3xodHRwOi8vc3dhZ2dlclxcLmlvL2FwaS92Myk+L3VzZXIiCiAgICAgICAgfSwKICAgICAgICAiYXV0aGVudGljYXRvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJoYW5kbGVyIjogIm5vb3AiLAogICAgICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImF1dGhvcml6ZXIiOiB7CiAgICAgICAgICAgICJoYW5kbGVyIjogImFsbG93IiwKICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICB9LAogICAgICAgICJtdXRhdG9ycyI6IG51bGwsCiAgICAgICAgImVycm9ycyI6IG51bGwsCiAgICAgICAgInVwc3RyZWFtIjogewogICAgICAgICAgICAicHJlc2VydmVfaG9zdCI6IGZhbHNlLAogICAgICAgICAgICAic3RyaXBfcGF0aCI6ICIiLAogICAgICAgICAgICAidXJsIjogIiIKICAgICAgICB9CiAgICB9LAogICAgewogICAgICAgICJpZCI6ICJjcmVhdGVVc2Vyc1dpdGhMaXN0SW5wdXQiLAogICAgICAgICJ2ZXJzaW9uIjogIiIsCiAgICAgICAgImRlc2NyaXB0aW9uIjogIkNyZWF0ZXMgbGlzdCBvZiB1c2VycyB3aXRoIGdpdmVuIGlucHV0IGFycmF5IiwKICAgICAgICAibWF0Y2giOiB7CiAgICAgICAgICAgICJtZXRob2RzIjogWwogICAgICAgICAgICAgICAgIlBPU1QiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1cmwiOiAiPChodHRwczovL2NlcmJlcmF1dGhcXC5jb20vYXBpL3YzfGh0dHA6Ly9zd2FnZ2VyXFwuaW8vYXBpL3YzKT4vdXNlci9jcmVhdGVXaXRoTGlzdCIKICAgICAgICB9LAogICAgICAgICJhdXRoZW50aWNhdG9ycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImhhbmRsZXIiOiAibm9vcCIsCiAgICAgICAgICAgICAgICAiY29uZmlnIjogbnVsbAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYXV0aG9yaXplciI6IHsKICAgICAgICAgICAgImhhbmRsZXIiOiAiYWxsb3ciLAogICAgICAgICAgICAiY29uZmlnIjogbnVsbAogICAgICAgIH0sCiAgICAgICAgIm11dGF0b3JzIjogbnVsbCwKICAgICAgICAiZXJyb3JzIjogbnVsbCwKICAgICAgICAidXBzdHJlYW0iOiB7CiAgICAgICAgICAgICJwcmVzZXJ2ZV9ob3N0IjogZmFsc2UsCiAgICAgICAgICAgICJzdHJpcF9wYXRoIjogIiIsCiAgICAgICAgICAgICJ1cmwiOiAiIgogICAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICAgImlkIjogImRlbGV0ZU9yZGVyIiwKICAgICAgICAidmVyc2lvbiI6ICIiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJGb3IgdmFsaWQgcmVzcG9uc2UgdHJ5IGludGVnZXIgSURzIHdpdGggdmFsdWUgPCAxMDAwLiBBbnl0aGluZyBhYm92ZSAxMDAwIG9yIG5vbmludGVnZXJzIHdpbGwgZ2VuZXJhdGUgQVBJIGVycm9ycyIsCiAgICAgICAgIm1hdGNoIjogewogICAgICAgICAgICAibWV0aG9kcyI6IFsKICAgICAgICAgICAgICAgICJERUxFVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1cmwiOiAiPChodHRwczovL2NlcmJlcmF1dGhcXC5jb20vYXBpL3YzfGh0dHA6Ly9zd2FnZ2VyXFwuaW8vYXBpL3YzKT4vc3RvcmUvb3JkZXIvPFxcZCs+IgogICAgICAgIH0sCiAgICAgICAgImF1dGhlbnRpY2F0b3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaGFuZGxlciI6ICJub29wIiwKICAgICAgICAgICAgICAgICJjb25maWciOiBudWxsCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhdXRob3JpemVyIjogewogICAgICAgICAgICAiaGFuZGxlciI6ICJhbGxvdyIsCiAgICAgICAgICAgICJjb25maWciOiBudWxsCiAgICAgICAgfSwKICAgICAgICAibXV0YXRvcnMiOiBudWxsLAogICAgICAgICJlcnJvcnMiOiBudWxsLAogICAgICAgICJ1cHN0cmVhbSI6IHsKICAgICAgICAgICAgInByZXNlcnZlX2hvc3QiOiBmYWxzZSwKICAgICAgICAgICAgInN0cmlwX3BhdGgiOiAiIiwKICAgICAgICAgICAgInVybCI6ICIiCiAgICAgICAgfQogICAgfSwKICAgIHsKICAgICAgICAiaWQiOiAiZGVsZXRlUGV0IiwKICAgICAgICAidmVyc2lvbiI6ICIiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAogICAgICAgICJtYXRjaCI6IHsKICAgICAgICAgICAgIm1ldGhvZHMiOiBbCiAgICAgICAgICAgICAgICAiREVMRVRFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidXJsIjogIjwoaHR0cHM6Ly9jZXJiZXJhdXRoXFwuY29tL2FwaS92M3xodHRwOi8vc3dhZ2dlclxcLmlvL2FwaS92Myk+L3BldC88XFxkKz4iCiAgICAgICAgfSwKICAgICAgICAiYXV0aGVudGljYXRvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJoYW5kbGVyIjogImp3dCIsCiAgICAgICAgICAgICAgICAiY29uZmlnIjogewogICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZF9zY29wZSI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlOnBldHMiLAogICAgICAgICAgICAgICAgICAgICAgICAicmVhZDpwZXRzIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImF1dGhvcml6ZXIiOiB7CiAgICAgICAgICAgICJoYW5kbGVyIjogImFsbG93IiwKICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICB9LAogICAgICAgICJtdXRhdG9ycyI6IG51bGwsCiAgICAgICAgImVycm9ycyI6IG51bGwsCiAgICAgICAgInVwc3RyZWFtIjogewogICAgICAgICAgICAicHJlc2VydmVfaG9zdCI6IGZhbHNlLAogICAgICAgICAgICAic3RyaXBfcGF0aCI6ICIiLAogICAgICAgICAgICAidXJsIjogIiIKICAgICAgICB9CiAgICB9LAogICAgewogICAgICAgICJpZCI6ICJkZWxldGVVc2VyIiwKICAgICAgICAidmVyc2lvbiI6ICIiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGNhbiBvbmx5IGJlIGRvbmUgYnkgdGhlIGxvZ2dlZCBpbiB1c2VyLiIsCiAgICAgICAgIm1hdGNoIjogewogICAgICAgICAgICAibWV0aG9kcyI6IFsKICAgICAgICAgICAgICAgICJERUxFVEUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1cmwiOiAiPChodHRwczovL2NlcmJlcmF1dGhcXC5jb20vYXBpL3YzfGh0dHA6Ly9zd2FnZ2VyXFwuaW8vYXBpL3YzKT4vdXNlci88Lis+IgogICAgICAgIH0sCiAgICAgICAgImF1dGhlbnRpY2F0b3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaGFuZGxlciI6ICJub29wIiwKICAgICAgICAgICAgICAgICJjb25maWciOiBudWxsCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhdXRob3JpemVyIjogewogICAgICAgICAgICAiaGFuZGxlciI6ICJhbGxvdyIsCiAgICAgICAgICAgICJjb25maWciOiBudWxsCiAgICAgICAgfSwKICAgICAgICAibXV0YXRvcnMiOiBudWxsLAogICAgICAgICJlcnJvcnMiOiBudWxsLAogICAgICAgICJ1cHN0cmVhbSI6IHsKICAgICAgICAgICAgInByZXNlcnZlX2hvc3QiOiBmYWxzZSwKICAgICAgICAgICAgInN0cmlwX3BhdGgiOiAiIiwKICAgICAgICAgICAgInVybCI6ICIiCiAgICAgICAgfQogICAgfSwKICAgIHsKICAgICAgICAiaWQiOiAiZmluZFBldHNCeVN0YXR1cyIsCiAgICAgICAgInZlcnNpb24iOiAiIiwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiTXVsdGlwbGUgc3RhdHVzIHZhbHVlcyBjYW4gYmUgcHJvdmlkZWQgd2l0aCBjb21tYSBzZXBhcmF0ZWQgc3RyaW5ncyIsCiAgICAgICAgIm1hdGNoIjogewogICAgICAgICAgICAibWV0aG9kcyI6IFsKICAgICAgICAgICAgICAgICJHRVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1cmwiOiAiPChodHRwczovL2NlcmJlcmF1dGhcXC5jb20vYXBpL3YzfGh0dHA6Ly9zd2FnZ2VyXFwuaW8vYXBpL3YzKT4vcGV0L2ZpbmRCeVN0YXR1cyIKICAgICAgICB9LAogICAgICAgICJhdXRoZW50aWNhdG9ycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImhhbmRsZXIiOiAiand0IiwKICAgICAgICAgICAgICAgICJjb25maWciOiB7CiAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkX3Njb3BlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAid3JpdGU6cGV0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkOnBldHMiCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYXV0aG9yaXplciI6IHsKICAgICAgICAgICAgImhhbmRsZXIiOiAiYWxsb3ciLAogICAgICAgICAgICAiY29uZmlnIjogbnVsbAogICAgICAgIH0sCiAgICAgICAgIm11dGF0b3JzIjogbnVsbCwKICAgICAgICAiZXJyb3JzIjogbnVsbCwKICAgICAgICAidXBzdHJlYW0iOiB7CiAgICAgICAgICAgICJwcmVzZXJ2ZV9ob3N0IjogZmFsc2UsCiAgICAgICAgICAgICJzdHJpcF9wYXRoIjogIiIsCiAgICAgICAgICAgICJ1cmwiOiAiIgogICAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICAgImlkIjogImZpbmRQZXRzQnlUYWdzIiwKICAgICAgICAidmVyc2lvbiI6ICIiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJNdWx0aXBsZSB0YWdzIGNhbiBiZSBwcm92aWRlZCB3aXRoIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmdzLiBVc2UgdGFnMSwgdGFnMiwgdGFnMyBmb3IgdGVzdGluZy4iLAogICAgICAgICJtYXRjaCI6IHsKICAgICAgICAgICAgIm1ldGhvZHMiOiBbCiAgICAgICAgICAgICAgICAiR0VUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidXJsIjogIjwoaHR0cHM6Ly9jZXJiZXJhdXRoXFwuY29tL2FwaS92M3xodHRwOi8vc3dhZ2dlclxcLmlvL2FwaS92Myk+L3BldC9maW5kQnlUYWdzIgogICAgICAgIH0sCiAgICAgICAgImF1dGhlbnRpY2F0b3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaGFuZGxlciI6ICJqd3QiLAogICAgICAgICAgICAgICAgImNvbmZpZyI6IHsKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWRfc2NvcGUiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICJ3cml0ZTpwZXRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQ6cGV0cyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhdXRob3JpemVyIjogewogICAgICAgICAgICAiaGFuZGxlciI6ICJhbGxvdyIsCiAgICAgICAgICAgICJjb25maWciOiBudWxsCiAgICAgICAgfSwKICAgICAgICAibXV0YXRvcnMiOiBudWxsLAogICAgICAgICJlcnJvcnMiOiBudWxsLAogICAgICAgICJ1cHN0cmVhbSI6IHsKICAgICAgICAgICAgInByZXNlcnZlX2hvc3QiOiBmYWxzZSwKICAgICAgICAgICAgInN0cmlwX3BhdGgiOiAiIiwKICAgICAgICAgICAgInVybCI6ICIiCiAgICAgICAgfQogICAgfSwKICAgIHsKICAgICAgICAiaWQiOiAiZ2V0SW52ZW50b3J5IiwKICAgICAgICAidmVyc2lvbiI6ICIiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgbWFwIG9mIHN0YXR1cyBjb2RlcyB0byBxdWFudGl0aWVzIiwKICAgICAgICAibWF0Y2giOiB7CiAgICAgICAgICAgICJtZXRob2RzIjogWwogICAgICAgICAgICAgICAgIkdFVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInVybCI6ICI8KGh0dHBzOi8vY2VyYmVyYXV0aFxcLmNvbS9hcGkvdjN8aHR0cDovL3N3YWdnZXJcXC5pby9hcGkvdjMpPi9zdG9yZS9pbnZlbnRvcnkiCiAgICAgICAgfSwKICAgICAgICAiYXV0aGVudGljYXRvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJoYW5kbGVyIjogIm5vb3AiLAogICAgICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImF1dGhvcml6ZXIiOiB7CiAgICAgICAgICAgICJoYW5kbGVyIjogImFsbG93IiwKICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICB9LAogICAgICAgICJtdXRhdG9ycyI6IG51bGwsCiAgICAgICAgImVycm9ycyI6IG51bGwsCiAgICAgICAgInVwc3RyZWFtIjogewogICAgICAgICAgICAicHJlc2VydmVfaG9zdCI6IGZhbHNlLAogICAgICAgICAgICAic3RyaXBfcGF0aCI6ICIiLAogICAgICAgICAgICAidXJsIjogIiIKICAgICAgICB9CiAgICB9LAogICAgewogICAgICAgICJpZCI6ICJnZXRPcmRlckJ5SWQiLAogICAgICAgICJ2ZXJzaW9uIjogIiIsCiAgICAgICAgImRlc2NyaXB0aW9uIjogIkZvciB2YWxpZCByZXNwb25zZSB0cnkgaW50ZWdlciBJRHMgd2l0aCB2YWx1ZSA8PSA1IG9yID4gMTAuIE90aGVyIHZhbHVlcyB3aWxsIGdlbmVyYXRlIGV4Y2VwdGlvbnMuIiwKICAgICAgICAibWF0Y2giOiB7CiAgICAgICAgICAgICJtZXRob2RzIjogWwogICAgICAgICAgICAgICAgIkdFVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInVybCI6ICI8KGh0dHBzOi8vY2VyYmVyYXV0aFxcLmNvbS9hcGkvdjN8aHR0cDovL3N3YWdnZXJcXC5pby9hcGkvdjMpPi9zdG9yZS9vcmRlci88XFxkKz4iCiAgICAgICAgfSwKICAgICAgICAiYXV0aGVudGljYXRvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJoYW5kbGVyIjogIm5vb3AiLAogICAgICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImF1dGhvcml6ZXIiOiB7CiAgICAgICAgICAgICJoYW5kbGVyIjogImFsbG93IiwKICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICB9LAogICAgICAgICJtdXRhdG9ycyI6IG51bGwsCiAgICAgICAgImVycm9ycyI6IG51bGwsCiAgICAgICAgInVwc3RyZWFtIjogewogICAgICAgICAgICAicHJlc2VydmVfaG9zdCI6IGZhbHNlLAogICAgICAgICAgICAic3RyaXBfcGF0aCI6ICIiLAogICAgICAgICAgICAidXJsIjogIiIKICAgICAgICB9CiAgICB9LAogICAgewogICAgICAgICJpZCI6ICJnZXRQZXRCeUlkIiwKICAgICAgICAidmVyc2lvbiI6ICIiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGEgc2luZ2xlIHBldCIsCiAgICAgICAgIm1hdGNoIjogewogICAgICAgICAgICAibWV0aG9kcyI6IFsKICAgICAgICAgICAgICAgICJHRVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1cmwiOiAiPChodHRwczovL2NlcmJlcmF1dGhcXC5jb20vYXBpL3YzfGh0dHA6Ly9zd2FnZ2VyXFwuaW8vYXBpL3YzKT4vcGV0LzxcXGQrPiIKICAgICAgICB9LAogICAgICAgICJhdXRoZW50aWNhdG9ycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImhhbmRsZXIiOiAiand0IiwKICAgICAgICAgICAgICAgICJjb25maWciOiB7CiAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkX3Njb3BlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAid3JpdGU6cGV0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkOnBldHMiCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYXV0aG9yaXplciI6IHsKICAgICAgICAgICAgImhhbmRsZXIiOiAiYWxsb3ciLAogICAgICAgICAgICAiY29uZmlnIjogbnVsbAogICAgICAgIH0sCiAgICAgICAgIm11dGF0b3JzIjogbnVsbCwKICAgICAgICAiZXJyb3JzIjogbnVsbCwKICAgICAgICAidXBzdHJlYW0iOiB7CiAgICAgICAgICAgICJwcmVzZXJ2ZV9ob3N0IjogZmFsc2UsCiAgICAgICAgICAgICJzdHJpcF9wYXRoIjogIiIsCiAgICAgICAgICAgICJ1cmwiOiAiIgogICAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICAgImlkIjogImdldFVzZXJCeU5hbWUiLAogICAgICAgICJ2ZXJzaW9uIjogIiIsCiAgICAgICAgImRlc2NyaXB0aW9uIjogIiIsCiAgICAgICAgIm1hdGNoIjogewogICAgICAgICAgICAibWV0aG9kcyI6IFsKICAgICAgICAgICAgICAgICJHRVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1cmwiOiAiPChodHRwczovL2NlcmJlcmF1dGhcXC5jb20vYXBpL3YzfGh0dHA6Ly9zd2FnZ2VyXFwuaW8vYXBpL3YzKT4vdXNlci88Lis+IgogICAgICAgIH0sCiAgICAgICAgImF1dGhlbnRpY2F0b3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaGFuZGxlciI6ICJub29wIiwKICAgICAgICAgICAgICAgICJjb25maWciOiBudWxsCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhdXRob3JpemVyIjogewogICAgICAgICAgICAiaGFuZGxlciI6ICJhbGxvdyIsCiAgICAgICAgICAgICJjb25maWciOiBudWxsCiAgICAgICAgfSwKICAgICAgICAibXV0YXRvcnMiOiBudWxsLAogICAgICAgICJlcnJvcnMiOiBudWxsLAogICAgICAgICJ1cHN0cmVhbSI6IHsKICAgICAgICAgICAgInByZXNlcnZlX2hvc3QiOiBmYWxzZSwKICAgICAgICAgICAgInN0cmlwX3BhdGgiOiAiIiwKICAgICAgICAgICAgInVybCI6ICIiCiAgICAgICAgfQogICAgfSwKICAgIHsKICAgICAgICAiaWQiOiAibG9naW5Vc2VyIiwKICAgICAgICAidmVyc2lvbiI6ICIiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAogICAgICAgICJtYXRjaCI6IHsKICAgICAgICAgICAgIm1ldGhvZHMiOiBbCiAgICAgICAgICAgICAgICAiR0VUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidXJsIjogIjwoaHR0cHM6Ly9jZXJiZXJhdXRoXFwuY29tL2FwaS92M3xodHRwOi8vc3dhZ2dlclxcLmlvL2FwaS92Myk+L3VzZXIvbG9naW4iCiAgICAgICAgfSwKICAgICAgICAiYXV0aGVudGljYXRvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJoYW5kbGVyIjogIm5vb3AiLAogICAgICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImF1dGhvcml6ZXIiOiB7CiAgICAgICAgICAgICJoYW5kbGVyIjogImFsbG93IiwKICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICB9LAogICAgICAgICJtdXRhdG9ycyI6IG51bGwsCiAgICAgICAgImVycm9ycyI6IG51bGwsCiAgICAgICAgInVwc3RyZWFtIjogewogICAgICAgICAgICAicHJlc2VydmVfaG9zdCI6IGZhbHNlLAogICAgICAgICAgICAic3RyaXBfcGF0aCI6ICIiLAogICAgICAgICAgICAidXJsIjogIiIKICAgICAgICB9CiAgICB9LAogICAgewogICAgICAgICJpZCI6ICJsb2dvdXRVc2VyIiwKICAgICAgICAidmVyc2lvbiI6ICIiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAogICAgICAgICJtYXRjaCI6IHsKICAgICAgICAgICAgIm1ldGhvZHMiOiBbCiAgICAgICAgICAgICAgICAiR0VUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidXJsIjogIjwoaHR0cHM6Ly9jZXJiZXJhdXRoXFwuY29tL2FwaS92M3xodHRwOi8vc3dhZ2dlclxcLmlvL2FwaS92Myk+L3VzZXIvbG9nb3V0IgogICAgICAgIH0sCiAgICAgICAgImF1dGhlbnRpY2F0b3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaGFuZGxlciI6ICJub29wIiwKICAgICAgICAgICAgICAgICJjb25maWciOiBudWxsCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhdXRob3JpemVyIjogewogICAgICAgICAgICAiaGFuZGxlciI6ICJhbGxvdyIsCiAgICAgICAgICAgICJjb25maWciOiBudWxsCiAgICAgICAgfSwKICAgICAgICAibXV0YXRvcnMiOiBudWxsLAogICAgICAgICJlcnJvcnMiOiBudWxsLAogICAgICAgICJ1cHN0cmVhbSI6IHsKICAgICAgICAgICAgInByZXNlcnZlX2hvc3QiOiBmYWxzZSwKICAgICAgICAgICAgInN0cmlwX3BhdGgiOiAiIiwKICAgICAgICAgICAgInVybCI6ICIiCiAgICAgICAgfQogICAgfSwKICAgIHsKICAgICAgICAiaWQiOiAicGxhY2VPcmRlciIsCiAgICAgICAgInZlcnNpb24iOiAiIiwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiUGxhY2UgYSBuZXcgb3JkZXIgaW4gdGhlIHN0b3JlIiwKICAgICAgICAibWF0Y2giOiB7CiAgICAgICAgICAgICJtZXRob2RzIjogWwogICAgICAgICAgICAgICAgIlBPU1QiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1cmwiOiAiPChodHRwczovL2NlcmJlcmF1dGhcXC5jb20vYXBpL3YzfGh0dHA6Ly9zd2FnZ2VyXFwuaW8vYXBpL3YzKT4vc3RvcmUvb3JkZXIiCiAgICAgICAgfSwKICAgICAgICAiYXV0aGVudGljYXRvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJoYW5kbGVyIjogIm5vb3AiLAogICAgICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImF1dGhvcml6ZXIiOiB7CiAgICAgICAgICAgICJoYW5kbGVyIjogImFsbG93IiwKICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICB9LAogICAgICAgICJtdXRhdG9ycyI6IG51bGwsCiAgICAgICAgImVycm9ycyI6IG51bGwsCiAgICAgICAgInVwc3RyZWFtIjogewogICAgICAgICAgICAicHJlc2VydmVfaG9zdCI6IGZhbHNlLAogICAgICAgICAgICAic3RyaXBfcGF0aCI6ICIiLAogICAgICAgICAgICAidXJsIjogIiIKICAgICAgICB9CiAgICB9LAogICAgewogICAgICAgICJpZCI6ICJ1cGRhdGVQZXQiLAogICAgICAgICJ2ZXJzaW9uIjogIiIsCiAgICAgICAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZSBhbiBleGlzdGluZyBwZXQgYnkgSWQiLAogICAgICAgICJtYXRjaCI6IHsKICAgICAgICAgICAgIm1ldGhvZHMiOiBbCiAgICAgICAgICAgICAgICAiUFVUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidXJsIjogIjwoaHR0cHM6Ly9jZXJiZXJhdXRoXFwuY29tL2FwaS92M3xodHRwOi8vc3dhZ2dlclxcLmlvL2FwaS92Myk+L3BldCIKICAgICAgICB9LAogICAgICAgICJhdXRoZW50aWNhdG9ycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImhhbmRsZXIiOiAiand0IiwKICAgICAgICAgICAgICAgICJjb25maWciOiB7CiAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkX3Njb3BlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAid3JpdGU6cGV0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkOnBldHMiCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYXV0aG9yaXplciI6IHsKICAgICAgICAgICAgImhhbmRsZXIiOiAiYWxsb3ciLAogICAgICAgICAgICAiY29uZmlnIjogbnVsbAogICAgICAgIH0sCiAgICAgICAgIm11dGF0b3JzIjogbnVsbCwKICAgICAgICAiZXJyb3JzIjogbnVsbCwKICAgICAgICAidXBzdHJlYW0iOiB7CiAgICAgICAgICAgICJwcmVzZXJ2ZV9ob3N0IjogZmFsc2UsCiAgICAgICAgICAgICJzdHJpcF9wYXRoIjogIiIsCiAgICAgICAgICAgICJ1cmwiOiAiIgogICAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICAgImlkIjogInVwZGF0ZVBldFdpdGhGb3JtIiwKICAgICAgICAidmVyc2lvbiI6ICIiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAogICAgICAgICJtYXRjaCI6IHsKICAgICAgICAgICAgIm1ldGhvZHMiOiBbCiAgICAgICAgICAgICAgICAiUE9TVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInVybCI6ICI8KGh0dHBzOi8vY2VyYmVyYXV0aFxcLmNvbS9hcGkvdjN8aHR0cDovL3N3YWdnZXJcXC5pby9hcGkvdjMpPi9wZXQvPFxcZCs+IgogICAgICAgIH0sCiAgICAgICAgImF1dGhlbnRpY2F0b3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaGFuZGxlciI6ICJqd3QiLAogICAgICAgICAgICAgICAgImNvbmZpZyI6IHsKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWRfc2NvcGUiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICJ3cml0ZTpwZXRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQ6cGV0cyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhdXRob3JpemVyIjogewogICAgICAgICAgICAiaGFuZGxlciI6ICJhbGxvdyIsCiAgICAgICAgICAgICJjb25maWciOiBudWxsCiAgICAgICAgfSwKICAgICAgICAibXV0YXRvcnMiOiBudWxsLAogICAgICAgICJlcnJvcnMiOiBudWxsLAogICAgICAgICJ1cHN0cmVhbSI6IHsKICAgICAgICAgICAgInByZXNlcnZlX2hvc3QiOiBmYWxzZSwKICAgICAgICAgICAgInN0cmlwX3BhdGgiOiAiIiwKICAgICAgICAgICAgInVybCI6ICIiCiAgICAgICAgfQogICAgfSwKICAgIHsKICAgICAgICAiaWQiOiAidXBkYXRlVXNlciIsCiAgICAgICAgInZlcnNpb24iOiAiIiwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBjYW4gb25seSBiZSBkb25lIGJ5IHRoZSBsb2dnZWQgaW4gdXNlci4iLAogICAgICAgICJtYXRjaCI6IHsKICAgICAgICAgICAgIm1ldGhvZHMiOiBbCiAgICAgICAgICAgICAgICAiUFVUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidXJsIjogIjwoaHR0cHM6Ly9jZXJiZXJhdXRoXFwuY29tL2FwaS92M3xodHRwOi8vc3dhZ2dlclxcLmlvL2FwaS92Myk+L3VzZXIvPC4rPiIKICAgICAgICB9LAogICAgICAgICJhdXRoZW50aWNhdG9ycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImhhbmRsZXIiOiAibm9vcCIsCiAgICAgICAgICAgICAgICAiY29uZmlnIjogbnVsbAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYXV0aG9yaXplciI6IHsKICAgICAgICAgICAgImhhbmRsZXIiOiAiYWxsb3ciLAogICAgICAgICAgICAiY29uZmlnIjogbnVsbAogICAgICAgIH0sCiAgICAgICAgIm11dGF0b3JzIjogbnVsbCwKICAgICAgICAiZXJyb3JzIjogbnVsbCwKICAgICAgICAidXBzdHJlYW0iOiB7CiAgICAgICAgICAgICJwcmVzZXJ2ZV9ob3N0IjogZmFsc2UsCiAgICAgICAgICAgICJzdHJpcF9wYXRoIjogIiIsCiAgICAgICAgICAgICJ1cmwiOiAiIgogICAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICAgImlkIjogInVwbG9hZEZpbGUiLAogICAgICAgICJ2ZXJzaW9uIjogIiIsCiAgICAgICAgImRlc2NyaXB0aW9uIjogIiIsCiAgICAgICAgIm1hdGNoIjogewogICAgICAgICAgICAibWV0aG9kcyI6IFsKICAgICAgICAgICAgICAgICJQT1NUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidXJsIjogIjwoaHR0cHM6Ly9jZXJiZXJhdXRoXFwuY29tL2FwaS92M3xodHRwOi8vc3dhZ2dlclxcLmlvL2FwaS92Myk+L3BldC88XFxkKz4vdXBsb2FkSW1hZ2UiCiAgICAgICAgfSwKICAgICAgICAiYXV0aGVudGljYXRvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJoYW5kbGVyIjogImp3dCIsCiAgICAgICAgICAgICAgICAiY29uZmlnIjogewogICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZF9zY29wZSI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlOnBldHMiLAogICAgICAgICAgICAgICAgICAgICAgICAicmVhZDpwZXRzIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImF1dGhvcml6ZXIiOiB7CiAgICAgICAgICAgICJoYW5kbGVyIjogImFsbG93IiwKICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICB9LAogICAgICAgICJtdXRhdG9ycyI6IG51bGwsCiAgICAgICAgImVycm9ycyI6IG51bGwsCiAgICAgICAgInVwc3RyZWFtIjogewogICAgICAgICAgICAicHJlc2VydmVfaG9zdCI6IGZhbHNlLAogICAgICAgICAgICAic3RyaXBfcGF0aCI6ICIiLAogICAgICAgICAgICAidXJsIjogIiIKICAgICAgICB9CiAgICB9Cl0KYGBgCjwvZGV0YWlscz4KCiMjIENvbmZpZ3VyYXRpb24KCkFzIHRoZSBhdXRoZW50aWNhdG9yIHJ1bGUgbWF5IHJlcXVpcmUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpbiBvcmRlciB0byBtYWtlIGF1dGhvcml6YXRpb24gYW5kIGF1dGhlbnRpY2F0aW9uIHdvcmtpbmcgcHJvcGVybHksIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gY2FuIGJlIHBhc3NlZCBlaXRoZXIgYnkgT3BlbkFQSSBFeHRlbnNpb25zIG9yIGNvbmZpZ3VyYXRpb24gZmlsZS4KCiMjIyBDb25maWd1cmF0aW9uIEZpbGUKClRoZSByZWNvbW1lbmRlZCBhcHByb2FjaCBpbnZvbHZlcyB1c2luZyBkZWRpY2F0ZWQgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgeW91ciBPYXRoa2VlcGVyIHJ1bGVzLiBUaGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIHByb3ZpZGUgYSBtb3JlIGZsZXhpYmxlIGFuZCB1c2VyLWZyaWVuZGx5IHdheSBvZiBtYW5hZ2luZyB5b3VyIHNlY3VyaXR5IHNldHRpbmdzLgoKRXZlcnkgT2F0aGtlZXBlciBydWxlIHByb3BlcnR5IGNhbiBiZSBjb25maWd1cmVkIHRoaXMgd2F5LiBIZXJlIGFyZSB0aGUgYXZhaWxhYmxlIHByb3BlcnRpZXM6Cgp8IEZpZWxkICAgICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEtleSAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfAp8IFByZWZpeCAgICAgICAgIHwgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJwcmVmaXgiICAgICAgICAgfAp8IFNlcnZlclVybHMgICAgIHwgW11zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzZXJ2ZXJfdXJscyIgICAgfAp8IFVwc3RyZWFtICAgICAgIHwgW1Vwc3RyZWFtXShodHRwczovL3d3dy5vcnkuc2gvZG9jcy9vYXRoa2VlcGVyL2FwaS1hY2Nlc3MtcnVsZXMjYWNjZXNzLXJ1bGUtZm9ybWF0KSB8ICJ1cHN0cmVhbSIgICAgICAgfAp8IEF1dGhlbnRpY2F0b3JzIHwgTWFwIG9mIFtBdXRoZW50aWNhdG9yc10oaHR0cHM6Ly93d3cub3J5LnNoL2RvY3Mvb2F0aGtlZXBlci9waXBlbGluZS9hdXRobikgICAgICAgICB8ICJhdXRoZW50aWNhdG9ycyIgfAp8IEF1dGhvcml6ZXIgICAgIHwgW0F1dGhvcml6YXRpb24gSGFuZGxlcl0oaHR0cHM6Ly93d3cub3J5LnNoL2RvY3Mvb2F0aGtlZXBlci9waXBlbGluZS9hdXRoeikgICAgICAgICB8ICJhdXRob3JpemVyIiAgICAgfAp8IE11dGF0b3JzICAgICAgIHwgQXJyYXkgW29mIE11dGF0b3IgSGFuZGxlcnNdKGh0dHBzOi8vd3d3Lm9yeS5zaC9kb2NzL29hdGhrZWVwZXIvcGlwZWxpbmUvbXV0YXRvcikgICB8ICJtdXRhdG9ycyIgICAgICAgfAp8IEVycm9ycyAgICAgICAgIHwgQXJyYXkgb2YgW0Vycm9yIEhhbmRsZXJzXShodHRwczovL3d3dy5vcnkuc2gvZG9jcy9vYXRoa2VlcGVyL3BpcGVsaW5lL2Vycm9yKSAgICAgICB8ICJlcnJvcnMiICAgICAgICAgfAoKQmVsb3cgaXMgYW4gZXhhbXBsZSBvZiBhIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiBZQU1MIGZvcm1hdDoKCmBgYHlhbWwKcHJlZml4OiBjZXJiZXJhdXRoCgpzZXJ2ZXJfdXJsczoKICAtIGh0dHBzOi8vd3d3LmNlcmJlcmF1dGguY29tL2FwaQogIC0gaHR0cHM6Ly9hcGkuY2VyYmVyYXV0aC5jb20vYXBpCgphdXRoZW50aWNhdG9yczoKICBvcGVuaWRjb25uZWN0OgogICAgaGFuZGxlcjogImp3dCIKICAgIGNvbmZpZzoKICAgICAgdGFyZ2V0X2F1ZGllbmNlOgogICAgICAtIGh0dHBzOi8vYXBpLmNlcmJlcmF1dGguY29tCmBgYAoKSW4gb3JkZXIgdG8gZ2VuZXJhdGUgcnVsZXMgdXNpbmcgdGhlIENMSSwgc2ltcGx5IHJ1biB0aGUgY29tbWFuZCBpbiB5b3VyIHRlcm1pbmFsIHdpdGggdGhlIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy4KCmBgYHNoZWxsCi4vb3BlbmFwaS1vYXRoa2VlcGVyIGdlbmVyYXRlIC1jIC4vdGVzdC9jb25maWcvc2FtcGxlLnlhbWwgLWYgLi90ZXN0L3N0dWIvc2FtcGxlLm9wZW5hcGkuanNvbgpgYGAKCjxkZXRhaWxzPgogIDxzdW1tYXJ5Pk9hdGhrZWVwZXIgcnVsZXMgb3V0cHV0PC9zdW1tYXJ5PgoKYGBganNvbgpbCiAgICB7CiAgICAgICAgImlkIjogImNlcmJlcmF1dGg6Z2V0VXNlckJ5SWQiLAogICAgICAgICJ2ZXJzaW9uIjogIiIsCiAgICAgICAgImRlc2NyaXB0aW9uIjogIiIsCiAgICAgICAgIm1hdGNoIjogewogICAgICAgICAgICAibWV0aG9kcyI6IFsKICAgICAgICAgICAgICAgICJHRVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1cmwiOiAiPF4oaHR0cHM6Ly93d3dcXC5jZXJiZXJhdXRoXFwuY29tL2FwaXxodHRwczovL2FwaVxcLmNlcmJlcmF1dGhcXC5jb20vYXBpKSgvdXNlcnMvKD86W1s6YWxudW06XV0/XFx4MkQ/PT9cXD8/Jj9fPykrLz8pJD4iCiAgICAgICAgfSwKICAgICAgICAiYXV0aGVudGljYXRvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJoYW5kbGVyIjogImp3dCIsCiAgICAgICAgICAgICAgICAiY29uZmlnIjogewogICAgICAgICAgICAgICAgICAgICJqd2tzX3VybHMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2NvbnNvbGUub3J5LnNoLy53ZWxsLWtub3duL2p3a3MuanNvbiIKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZF9zY29wZSI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZXI6cmVhZCIKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICJ0YXJnZXRfYXVkaWVuY2UiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2FwaS5jZXJiZXJhdXRoLmNvbSIKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICJ0cnVzdGVkX2lzc3VlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2NvbnNvbGUub3J5LnNoIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImF1dGhvcml6ZXIiOiB7CiAgICAgICAgICAgICJoYW5kbGVyIjogImFsbG93IiwKICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICB9LAogICAgICAgICJtdXRhdG9ycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImhhbmRsZXIiOiAibm9vcCIsCiAgICAgICAgICAgICAgICAiY29uZmlnIjogbnVsbAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZXJyb3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaGFuZGxlciI6ICJqc29uIiwKICAgICAgICAgICAgICAgICJjb25maWciOiBudWxsCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJ1cHN0cmVhbSI6IHsKICAgICAgICAgICAgInByZXNlcnZlX2hvc3QiOiBmYWxzZSwKICAgICAgICAgICAgInN0cmlwX3BhdGgiOiAiIiwKICAgICAgICAgICAgInVybCI6ICIiCiAgICAgICAgfQogICAgfSwKICAgIHsKICAgICAgICAiaWQiOiAiY2VyYmVyYXV0aDp1cGRhdGVVc2VyIiwKICAgICAgICAidmVyc2lvbiI6ICIiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGNhbiBvbmx5IGJlIGRvbmUgYnkgdGhlIGxvZ2dlZCBpbiB1c2VyLiIsCiAgICAgICAgIm1hdGNoIjogewogICAgICAgICAgICAibWV0aG9kcyI6IFsKICAgICAgICAgICAgICAgICJQVVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1cmwiOiAiPF4oaHR0cHM6Ly93d3dcXC5jZXJiZXJhdXRoXFwuY29tL2FwaXxodHRwczovL2FwaVxcLmNlcmJlcmF1dGhcXC5jb20vYXBpKSgvdXNlcnMvKD86W1s6YWxudW06XV0/XFx4MkQ/PT9cXD8/Jj9fPykrLz8pJD4iCiAgICAgICAgfSwKICAgICAgICAiYXV0aGVudGljYXRvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJoYW5kbGVyIjogImp3dCIsCiAgICAgICAgICAgICAgICAiY29uZmlnIjogewogICAgICAgICAgICAgICAgICAgICJqd2tzX3VybHMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2NvbnNvbGUub3J5LnNoLy53ZWxsLWtub3duL2p3a3MuanNvbiIKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZF9zY29wZSI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZXI6d3JpdGUiCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAidGFyZ2V0X2F1ZGllbmNlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9hcGkuY2VyYmVyYXV0aC5jb20iCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAidHJ1c3RlZF9pc3N1ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9jb25zb2xlLm9yeS5zaCIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhdXRob3JpemVyIjogewogICAgICAgICAgICAiaGFuZGxlciI6ICJhbGxvdyIsCiAgICAgICAgICAgICJjb25maWciOiBudWxsCiAgICAgICAgfSwKICAgICAgICAibXV0YXRvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJoYW5kbGVyIjogIm5vb3AiLAogICAgICAgICAgICAgICAgImNvbmZpZyI6IG51bGwKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImVycm9ycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImhhbmRsZXIiOiAianNvbiIsCiAgICAgICAgICAgICAgICAiY29uZmlnIjogbnVsbAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAidXBzdHJlYW0iOiB7CiAgICAgICAgICAgICJwcmVzZXJ2ZV9ob3N0IjogZmFsc2UsCiAgICAgICAgICAgICJzdHJpcF9wYXRoIjogIiIsCiAgICAgICAgICAgICJ1cmwiOiAiIgogICAgICAgIH0KICAgIH0KXQpgYGAKPC9kZXRhaWxzPgoKIyMjIE9wZW5BUEkgRXh0ZW5zaW9uCgpPcGVuQVBJIEV4dGVuc2lvbnMgc2VydmUgYXMgYW4gZXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3IgdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAoT0FTKS4gV2hlbiB1c2luZyBPcGVuQVBJLU9hdGhrZWVwZXIgd2l0aCBPcGVuQVBJIEV4dGVuc2lvbnMsIHlvdSBjYW4gZW1iZWQgT2F0aGtlZXBlci1zcGVjaWZpYyBydWxlcyBkaXJlY3RseSB3aXRoaW4geW91ciBBUEkgZG9jdW1lbnRhdGlvbi4gVGhpcyBpbnRlZ3JhdGlvbiBjYW4gYmUgYmVuZWZpY2lhbCB3aGVuIHlvdSBkZXNpcmUgYSB1bmlmaWVkIHNvdXJjZSBvZiB0cnV0aCBmb3IgYm90aCBBUEkgc3BlY2lmaWNhdGlvbnMgYW5kIHNlY3VyaXR5IHJ1bGVzLgoKSGVyZSB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb25zOgoKfCBOYW1lICAgICB8IFNlY3VyaXR5IFNjaGVtZXMgICAgICAgICAgICAgICAgICB8IE9wZW5BUEkgRXh0ZW5zaW9uIE5hbWUgICAgIHwKfC0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBKV0tTIFVSSSB8IGBvYXV0aDJgLCBgaHR0cGAgICAgICAgICAgICAgICAgICB8IGB4LWF1dGhlbnRpY2F0b3Itandrcy11cmlgIHwKfCBJc3N1ZXIgICB8IGBvYXV0aDJgLCBgaHR0cGAgICAgICAgICAgICAgICAgICB8IGB4LWF1dGhlbnRpY2F0b3ItaXNzdWVyYCAgIHwKfCBBdWRpZW5jZSB8IGBvcGVuSWRDb25uZWN0YCwgYG9hdXRoMmAsIGBodHRwYCB8IGB4LWF1dGhlbnRpY2F0b3ItYXVkaWVuY2VgIHwKCiMjIyBFeGFtcGxlCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiB0aGUgc2FtZSBPcGVuQVBJIGNvbnRyYWN0IGJ1dCBpbiBKU09OIGZvcm1hdAoKPGRldGFpbHM+CiAgPHN1bW1hcnk+T3BlbkFQSSBleGFtcGxlIHVzaW5nIE9wZW5BUEkgRXh0ZW5zaW9uczwvc3VtbWFyeT4KCmBgYGpzb24gc2FtcGxlLm9wZW5hcGkuanNvbgp7CiAgICAib3BlbmFwaSI6ICIzLjAuMCIsCiAgICAiaW5mbyI6IHsKICAgICAgICAidGl0bGUiOiAiTXkgQVBJIiwKICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIKICAgIH0sCiAgICAic2VydmVycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20iLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHJvZHVjdGlvbiBzZXJ2ZXIiCiAgICAgICAgfQogICAgXSwKICAgICJwYXRocyI6IHsKICAgICAgICAiL3VzZXJzL3tpZH0iOiB7CiAgICAgICAgICAgICJnZXQiOiB7CiAgICAgICAgICAgICAgICAic3VtbWFyeSI6ICJHZXQgdXNlciBieSBJRCIsCiAgICAgICAgICAgICAgICAib3BlcmF0aW9uSWQiOiAiZ2V0VXNlckJ5SWQiLAogICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJpZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJpbiI6ICJwYXRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSB1c2VyIGlkLiAiLAogICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN1Y2Nlc3NmdWwgcmVzcG9uc2UiLAogICAgICAgICAgICAgICAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlkIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAic2VjdXJpdHkiOiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAib3BlbmlkY29ubmVjdCI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2VyOnJlYWQiCiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJwdXQiOiB7CiAgICAgICAgICAgICAgICAidGFncyI6IFsKICAgICAgICAgICAgICAgICAgICAidXNlciIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAic3VtbWFyeSI6ICJVcGRhdGUgdXNlciIsCiAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBjYW4gb25seSBiZSBkb25lIGJ5IHRoZSBsb2dnZWQgaW4gdXNlci4iLAogICAgICAgICAgICAgICAgIm9wZXJhdGlvbklkIjogInVwZGF0ZVVzZXIiLAogICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJpZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJpbiI6ICJwYXRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInVzZXIgaWQgdGhhdCBuZWVkIHRvIGJlIHVwZGF0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJyZXF1ZXN0Qm9keSI6IHsKICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVXBkYXRlIGFuIGV4aXN0ZW50IHVzZXIgaW4gdGhlIHN0b3JlIiwKICAgICAgICAgICAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkcmVmIjogIiMvY29tcG9uZW50cy9zY2hlbWFzL1VzZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgInJlc3BvbnNlcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInN1Y2Nlc3NmdWwgb3BlcmF0aW9uIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAic2VjdXJpdHkiOiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAib3BlbmlkY29ubmVjdCI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2VyOndyaXRlIgogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwKICAgICJjb21wb25lbnRzIjogewogICAgICAgICJzY2hlbWFzIjogewogICAgICAgICAgICAiVXNlciI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAgICAiaWQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0IjogImludDY0IiwKICAgICAgICAgICAgICAgICAgICAgICAgImV4YW1wbGUiOiAxMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAiZXhhbXBsZSI6ICJqb2huQGVtYWlsLmNvbSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJzZWN1cml0eVNjaGVtZXMiOiB7CiAgICAgICAgICAgICJvcGVuaWRjb25uZWN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAib3BlbklkQ29ubmVjdCIsCiAgICAgICAgICAgICAgICAib3BlbklkQ29ubmVjdFVybCI6ICJodHRwczovL3Byb2plY3QuY29uc29sZS5vcnkuc2gvLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb24iCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KYGBgCjwvZGV0YWlscz4KCiMjIyBDb21tYW5kIGxpbmUgZG9jdW1lbnRhdGlvbgoKVGhlIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGFzIG1hcmtkb3duIGZpbGVzIGluIHRoZSBbZG9jc10oLi9kb2NzL29wZW5hcGktb2F0aGtlZXBlci5tZCkgZGlyZWN0b3J5IG9yIGJ5IHJ1bm5pbmcgYG9wZW5hcGktb2F0aGtlZXBlciBoZWxwYC4KCiMjIFRlbGVtZXRyeQoKVGhlIHNjYW5uZXIgY29sbGVjdHMgYW5vbnltb3VzIHVzYWdlIGRhdGEgdG8gaGVscCBpbXByb3ZlIHRoZSB0b29sLiBUaGlzIGRhdGEgaW5jbHVkZXMgdGhlIG51bWJlciBvZiBzY2FucyBwZXJmb3JtZWQsIG51bWJlciBvZiBkZXRlY3RlZCB2dWxuZXJhYmlsaXRpZXMsIGFuZCB0aGUgc2V2ZXJpdHkgb2YgdnVsbmVyYWJpbGl0aWVzLiBObyBzZW5zaXRpdmUgaW5mb3JtYXRpb24gaXMgY29sbGVjdGVkLiBZb3UgY2FuIG9wdC1vdXQgb2YgdGVsZW1ldHJ5IGJ5IHBhc3NpbmcgdGhlIGAtLXNxYS1vcHQtb3V0YCBmbGFnLgoKIyMgUm9hZG1hcAoKUGxlYXNlIG5vdGUgdGhhdCB0aGlzIHRvb2wgaXMgY3VycmVudGx5IGluIGJldGEgc3RhZ2UgYW5kIHRoZXJlIG1heSBiZSBsaW1pdGF0aW9ucyBhbmQgYnVncy4gSW1wcm92ZW1lbnRzIGFuZCBuZXcgZmVhdHVyZXMgc2hvdWxkIGNvbWUgdG8gbWFrZSBpdCBtb3JlIHBvd2VyZnVsIGFuZCB1c2VmdWwgZm9yIGRldmVsb3BlcnMuIEFueSBmZWVkYmFjayBvciBzdWdnZXN0aW9ucyBhcmUgZ3JlYXRseSBhcHByZWNpYXRlZCEKCllvdSBjYW4gZmluZCB0aGUgbWlsZXN0b25lcyBhbmQgZnV0dXJlIGVuaGFuY2VtZW50cyBwbGFubmVkIGZvciB0aGlzIHRvb2wgb24gdGhlIHByb2plY3QncyBbR2l0SHViIG1pbGVzdG9uZXMgcGFnZV0oKGh0dHBzOi8vZ2l0aHViLmNvbS9jZXJiZXJhdXRoL29wZW5hcGktb2F0aGtlZXBlci9taWxlc3RvbmVzKSkuCgojIyBVc2VmdWwgTGlua3MKCi0gW09SWSBPYXRoa2VlcGVyXShodHRwczovL2dpdGh1Yi5jb20vb3J5L29hdGhrZWVwZXIpCi0gW09wZW5BUEkgMy54IFNwZWNpZmljYXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykKCiMjIExpY2Vuc2UKCk1JVCDCqSBbQ2VyYmVyQXV0aF0oaHR0cHM6Ly93d3cuY2VyYmVyYXV0aC5jb20pCg== readmeEtag: '"65bd9ae7488bd125282634c87584310841b8fe38"' readmeLastModified: Thu, 08 May 2025 14:49:26 GMT repositoryId: 611484700 description: >- openapi-oathkeeper is a CLI for generating Ory Oathkeeper rules from an OpenAPI 3 contract and save a lot of time and effort, especially for larger projects with many endpoints or many services. created: '2023-03-08T23:18:03Z' updated: '2025-11-29T14:58:46Z' language: Go archived: false stars: 11 watchers: 2 forks: 8 owner: cerberauth logo: https://avatars.githubusercontent.com/u/127022998?v=4 license: MIT repoEtag: '"783d5d4ca1be01a73be1af2d0cdb8657e8670117d090a5b45a71eef488cbb4ba"' repoLastModified: Sat, 29 Nov 2025 14:58:46 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/overflowdigital/flask-openapi v3: true id: 51e114e3aa9b01b264af35e38341edcd repositoryMetadata: base64Readme: >- IyBGbGFzay1PcGVuQVBJCgoqKkZsYXNrLU9wZW5BUEkgaXMgbm93IGluIG1haW50ZW5hbmNlIG1vZGUuKioKClshW1B5dGhvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9weXRob24tMy44LjAtYmx1ZS5zdmcpXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3B5dGhvbi0zLjguLjAtYmx1ZS5zdmcpClshW1B5UGldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L0ZsYXNrLU9wZW5BUEkzLVVJLnN2ZyldKGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvRmxhc2stT3BlbkFQSTMtVUkpClshW1B5UGldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9kbS9GbGFzay1PcGVuQVBJMy1VSS5zdmcpXShodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL0ZsYXNrLU9wZW5BUEkzLVVJKQpbIVtGbGFzay1PcGVuQVBJMy1VSV0oaHR0cHM6Ly9zbnlrLmlvL2Fkdmlzb3IvcHl0aG9uL0ZsYXNrLU9wZW5BUEkzLVVJL2JhZGdlLnN2ZyldKGh0dHBzOi8vc255ay5pby9hZHZpc29yL3B5dGhvbi9GbGFzay1PcGVuQVBJMy1VSSkKCkZsYXNrLU9wZW5BUEkgaXMgYSBGbGFzayBleHRlbnNpb24gdGhhdCBwcm92aWRlcyBpbnRlZ3JhdGlvbiB3aXRoIE9wZW5BUEkgdjIsIHYzLCBhbmQgdjMuMSBzcGVjaWZpY2F0aW9ucyBlYXNpbHkuCgojIyBGZWF0dXJlcwotIEVhc3kgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGRlZmluaXRpb25zIHdpdGggdGhlIGBvcGVuYXBpX3NwZWNgIGRlY29yYXRvcgotIEN1c3RvbWlzYWJsZSBTd2FnZ2VyIFVJCi0gU3VwcG9ydHMgT3BlbkFQSSB2Mi4wLCB2My4wLCBhbmQgdjMuMQotIFN1cHBvcnRzIFN3YWdnZXIgVUkgdjIsIHYzLCB2NCwgYW5kIHY1LgoKIyMgR2V0dGluZyBTdGFydGVkClRvIHF1aWNrbHkgaW5zdGFsbDoKYHBpcCBpbnN0YWxsIEZsYXNrLU9wZW5BUEkzLVVJYAoKU2VlIHRoZSBbR2V0dGluZyBTdGFydGVkXShodHRwczovL2dpdGh1Yi5jb20vb3ZlcmZsb3dkaWdpdGFsL0ZsYXNrLU9wZW5BUEkvd2lraSkgZG9jdW1lbnRhdGlvbiB0byBnZXQgaW5zdGFsbGVkIGFuZCBzZXR1cCB3aXRoIHlvdXIgRmxhc2sgYXBwbGljYXRpb24uCgojIyBDb250cmlidXRpbmcKU2VlIHRoZSBbQ29udHJpYnV0aW5nIEd1aWRlXShodHRwczovL2dpdGh1Yi5jb20vb3ZlcmZsb3dkaWdpdGFsL0ZsYXNrLU9wZW5BUEkvYmxvYi9tYWluL0NPTlRSSUJVVElORy5tZCkgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udHJpYnV0aW5nIHRvIHRoZSBwcm9qZWN0LgoKIyMgU2VjdXJpdHkKV2UgdGFrZSBzZWN1cml0eSBzZXJpb3VzbHksIHBsZWFzZSByZWFkIHRoZSBbU2VjdXJpdHkgQWR2aXNvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9vdmVyZmxvd2RpZ2l0YWwvRmxhc2stT3BlbkFQSS9ibG9iL21haW4vU0VDVVJJVFkubWQpIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKIyMgQ29kZSBvZiBDb25kdWN0CldlIHRha2UgemVybyB0b2xlcmFuY2Ugb24gYXR0YWNrcyBvbiBvdXIgT1NTIGNvbW11bml0eSwgcGxlYXNlIHNlZSB0aGUgW0NvZGUgb2YgQ29uZHVjdF0oaHR0cHM6Ly9naXRodWIuY29tL292ZXJmbG93ZGlnaXRhbC9GbGFzay1PcGVuQVBJL2Jsb2IvbWFpbi9DT0RFX09GX0NPTkRVQ1QubWQpIGZvciBtb3JlIGluZm9ybWF0aW9uCg== readmeEtag: '"756a6b04738a3a3b572b63ba0e94b60a5de63d18"' readmeLastModified: Wed, 14 Feb 2024 09:50:39 GMT repositoryId: 526292250 description: >- Flask-OpenAPI is a Flask extension that provides integration with OpenAPI v2, v3, and v3.1 specifications easily. created: '2022-08-18T16:35:43Z' updated: '2025-08-13T15:48:46Z' language: JavaScript archived: true stars: 9 watchers: 2 forks: 2 owner: overflowdigital logo: https://avatars.githubusercontent.com/u/93914478?v=4 license: MIT repoEtag: '"b3dc9fa930d3120bef9b8684d42b95edd47857c779cf740872fb8145741652ed"' repoLastModified: Wed, 13 Aug 2025 15:48:46 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/the-pawn-2017/r5t v3: true id: cd312bae0e99794c6fedc2c13c6f5e63 repositoryMetadata: base64Readme: >- IyByNXQKCj4g55yB5rWB54mI77ya6L+Z5piv5LiA5Liq55SoZ28g5Luj56CB55Sf5oiQc3dhZ2dlci9vcGVuQXBp5paH5qGj55qE5bqT77yM5LiN6ZyA6KaB5YaZ5rOo6YeK77yBO+i/meS4quW6k+WfuuS6jmBnby1vcGVuYXBpYO+8jOWPr+S7peW1jOWFpeWIsHdlYumhueebruS4reOAglvmlofmoaPov57mjqVdKGh0dHBzOi8vanVlamluLmNuL3Bvc3QvNzM5MDU2OTU0ODM2NzgyMjg1OCkKPiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBPcGVuQVBJIDMvc3dhZ2dlciBkb2N1bWVudGF0aW9uIHZpYSBHbyBjb2RlLCB3aXRob3V0IHJlbHlpbmcgb24gY29tbWVudHMuIEl0IGNhbiBiZSBlbWJlZGRlZCBpbiB5b3VyIHdlYiBwcm9qZWN0LgoKaW5zdGFsbDogYGdvIGdldCAtdSBnaXRodWIuY29tL3RoZS1wYXduLTIwMTcvcjV0YAoKIyMgd2h5IGNyZWF0ZSB0aGlzIHJlcG8/CjEuIEkgd291bGQgbGlrZSB0byBpbXBsZW1lbnQgbW9yZSBvdGhlciBmZWF0dXJlcywgc3VjaCBhcyBzdXBwb3J0IGZvciBHSU4gYW5kIEVDSE8uCjIuIFNpbmNlIG1hbnkgb2YgbXkgcHJvamVjdHMgYWZ0ZXIgdGhhdCByZXF1aXJlIFJFU1QgQVBJIGRvY3VtZW50YXRpb24sIEknbSBtb3JlIG1vdGl2YXRlZCB0byBtYWludGFpbiBpdC4KIyMgdmVyc2lvbgp2MC41CiMjIHRvZG8KLSDinIUgYWxsIG9wZW5BUEkvc3dhZ2dlciBjb21wb25lbnRzIHN1cHBvcnQgYW5kIGxpbWl0Ci0g4pyFIFJlZ2lzdGVyaW5nIHJlcyZyZXEgbW9kZWwsbm93LGl0IGNhbiB1c2UganNvbixmb3JtLgotIOKchSBTdXBwb3J0aW5nIE9BdXRoMiAsIG9ubHkgY29kZSBhbmQgaW1wbGljaXQKLSDinIUgcmVnaXN0ZXIgbW9kZWwKLSDwn5qnIGNvbXBsZXRlIHRlc3QKLSDwn5qnIGZ1bGwgZG9jdW1lbnQgZm9yIHRoaXMgcmVwbwotIOKchSBTdXBwb3J0IG90aGVyIHdlYiBzZXJ2ZXIsbm93LGVjaG8gY2FuIHVzZSBgcjV0YCBieSBzb21lIGZ1bmN0aW9uLCBpdCdzIGluIFtgZXhhbXBsZS9lY2hvYF0oLi9leGFtcGxlL2VjaG8vZWNoby5tZCkKCiMjIHNvbWUgdXNlZnVsIGZlYXR1cmUKIyMjIDEuIGZhc3QgcGFnaW5hdGlvbgpgYGBnb2xhbmcKcyA6PSByNXQuTmV3U3BlYyhzcGVjLlRpdGxlKCJwYWdpbmF0aW9uLnlhbWwiKSkKcy5HZXQoIi90ZXN0LXBhZ2luYXRpb24iKS5QYWdlSW5RdWVyeSgicGFnZSIsIDEsICJwYWdlU2l6ZSIsIDEwKS5SZXNTdHJpbmcoaHR0cC5TdGF0dXNPSywgcmVzLkV4YW1wbGUoImhpIikpCmBgYAojIyMgMi4gZWFzeSB0byB1c2UgZm9yIE9BdXRoMgpgYGBnb2xhbmcKcyA6PSBzcGVjLk5ld1NwZWMoKQpzLlNlY3VyaXR5KAoJc2VjdXJpdHkuV2l0aE9BdXRoMkNvZGUoInppdGVhbCIsICJodHRwOi8vMTAuNDUuOC4xODk6ODA4MC9vYXV0aC92Mi9hdXRob3JpemUiLCAiaHR0cDovLzEwLjQ1LjguMTg5OjgwODAvb2F1dGgvdjIvdG9rZW4iLAoJc2VjdXJpdHkuQWRkU2NvcGUoIm9wZW5pZCIsICJPUEVOSUQgSVMgVVNJTkcgRk9SIElEIikpLAopCmBgYAojIyMgMy4gY29uY2lzZSBhbmQgcG93ZXJmdWwgQVBJLCBsaWtlIGBSZXFqc29uYCxgUmVzSnNvbmAsYFJlc1N0cmluZ2AuCmBgYGdvbGFuZwpzIDo9IHI1dC5OZXdTcGVjKHNwZWMuVGl0bGUoImV4YW1wbGUgcmVxU3RyaW5nIikpCnMuR2V0KCIvdGVzdC1yZXNTdHJpbmciKS5SZXNTdHJpbmcoaHR0cC5TdGF0dXNPSywgcmVzLkV4YW1wbGUoImhpISIpKQpgYGAKIyMgZXhhbXBsZToKZ28gW2AvdGVzdC9zcGVjX3Rlc3RgXSgvdGVzdHMvc3BlY190ZXN0LmdvKSB2aWV3IHNvbWUgZXhhbXBsZQpgYGBnb2xhbmcKdHlwZSBUZXN0IHN0cnVjdCB7CglBIHN0cmluZwoJQiBzdHJpbmcgYHZhbGlkYXRlOiJyZXF1aXJlZCJgCn0KYGBgCmBgYGdvbGFuZwoJcyA6PSBzcGVjLk5ld1NwZWMoKQoJcy5TZWN1cml0eSgKCQlzZWN1cml0eS5XaXRoT0F1dGgyQ29kZSgieml0ZWFsIiwgImh0dHA6Ly8xMC40NS44LjE4OTo4MDgwL29hdXRoL3YyL2F1dGhvcml6ZSIsICJodHRwOi8vMTAuNDUuOC4xODk6ODA4MC9vYXV0aC92Mi90b2tlbiIsCgkJCXNlY3VyaXR5LkFkZFNjb3BlKCJvcGVuaWQiLCAiT1BFTklEIElTIFVTSU5HIEZPUiBJRCIpKSwKCSkKCS8vIHRoYW4sIHlvdSBjYW4gdXNlIE9BdXRoMiBjb2RlIG1vZGUgbm93CglzLlBvc3QoIi9na2QiKS5OZWVkU2VjdXJpZnkoInppdGVhbCIsIFtdc3RyaW5neyJvcGVuaWQifSkuCgkJUmVxSlNPTihtb2RlbC5Nb2RlbE9mW1Rlc3RdKCksIHJlcS5XaXRoRXhhbXBsZShUZXN0e0E6ICJBIiwgQjogIkIifSkpLgoJCVJlc0pTT04oaHR0cC5TdGF0dXNPSywgbW9kZWwuTW9kZWxPZltUZXN0XSgpLCByZXMuV2l0aEV4YW1wbGUoVGVzdHtBOiAiQSIsIEI6ICJCIn0pKQpgYGAKIyMjIGVtYmVkIHN3YWdnZXItdWkKCmBgYGdvbGFuZwpwYWNrYWdlIG1haW4KCmltcG9ydCAoCgkibmV0L2h0dHAiCgoJImdpdGh1Yi5jb20vbGFic3RhY2svZWNoby92NCIKCSJnaXRodWIuY29tL2xhYnN0YWNrL2VjaG8vdjQvbWlkZGxld2FyZSIKCSJnaXRodWIuY29tL3RoZS1wYXduLTIwMTcvcjV0IgoJImdpdGh1Yi5jb20vdGhlLXBhd24tMjAxNy9yNXQvbW9kZWwiCgkiZ2l0aHViLmNvbS90aGUtcGF3bi0yMDE3L3I1dC9yZXEiCgkiZ2l0aHViLmNvbS90aGUtcGF3bi0yMDE3L3I1dC9yZXMiCgkiZ2l0aHViLmNvbS90aGUtcGF3bi0yMDE3L3I1dC9zZWN1cml0eSIKCSJnaXRodWIuY29tL3RoZS1wYXduLTIwMTcvcjV0L3N3YWdnZXJ1aSIKKQoKdHlwZSBUZXN0QmFzaWMgc3RydWN0IHsKCUEgc3RyaW5nCglCIHN0cmluZyBgdmFsaWRhdGU6InJlcXVpcmVkImAKfQoKZnVuYyBtYWluKCkgewoJZSA6PSBlY2hvLk5ldygpCgllLlVzZShtaWRkbGV3YXJlLkxvZ2dlcigpKQoJcyA6PSByNXQuTmV3U3BlYygpCglzLlNlY3VyaXR5KAoJCXNlY3VyaXR5Lk9BdXRoMkNvZGUoInppdGVhbCIsICJodHRwOi8vMTAuNDUuOC4xODk6ODA4MC9vYXV0aC92Mi9hdXRob3JpemUiLCAiaHR0cDovLzEwLjQ1LjguMTg5OjgwODAvb2F1dGgvdjIvdG9rZW4iLAoJCQlzZWN1cml0eS5BZGRTY29wZSgib3BlbmlkIiwgIk9QRU5JRCBJUyBVU0lORyBGT1IgSUQiKSksCgkpLgoJCVBvc3QoIi9na2QiKS5OZWVkU2VjdXJpZnkoInppdGVhbCIsIFtdc3RyaW5neyJvcGVuaWQifSkuCgkJUmVxSlNPTihtb2RlbC5Nb2RlbE9mW1Rlc3RCYXNpY10oKSwgcmVxLkV4YW1wbGUoVGVzdEJhc2lje0E6ICJBIiwgQjogIkIifSkpLgoJCVJlc0pTT04oaHR0cC5TdGF0dXNPSywgbW9kZWwuTW9kZWxPZltUZXN0QmFzaWNdKCksIHJlcy5FeGFtcGxlKFRlc3RCYXNpY3tBOiAiQSIsIEI6ICJCIn0pKQoJZS5HRVQoIi9zd2FnZ2VyLXRlc3QuanNvbiIsIGZ1bmMoYyBlY2hvLkNvbnRleHQpIGVycm9yIHsKCQlyZSwgZXJyIDo9IHN3YWdnZXJ1aS5HZW5TcGVjKHMpCgkJaWYgZXJyID09IG5pbCB7CgkJCXJldHVybiBjLkpTT05CbG9iKGh0dHAuU3RhdHVzT0ssIHJlKQoJCX0gZWxzZSB7CgkJCXJldHVybiBjLlN0cmluZyhodHRwLlN0YXR1c0ludGVybmFsU2VydmVyRXJyb3IsIGVyci5FcnJvcigpKQoJCX0KCX0pCgllLkdFVCgiL3N3YWdnZXIvKiIsIGZ1bmMoYyBlY2hvLkNvbnRleHQpIGVycm9yIHsKCQlwYXJhbVN0ciA6PSBjLlBhcmFtKCIqIikKCQlraW5kLCBjb250ZW50LCBlcnIgOj0gc3dhZ2dlcnVpLkdldFN3YWdnZXJVSUZpbGUoIi9zd2FnZ2VyLXRlc3QuanNvbiIsIHBhcmFtU3RyKQoJCWlmIGVyciA9PSBuaWwgewoJCQlyZXR1cm4gYy5CbG9iKGh0dHAuU3RhdHVzT0ssIGtpbmQsIGNvbnRlbnQpCgkJfQoJCXJldHVybiBjLlN0cmluZyhodHRwLlN0YXR1c0ludGVybmFsU2VydmVyRXJyb3IsIGVyci5FcnJvcigpKQoJfSkKCWUuU3RhcnQoIjoyMzMzIikKfQpgYGAKCgpbYGV4YW1wbGUvZWNob2BdKC4vZXhhbXBsZS9lY2hvL2VjaG8ubWQpCgoqKkNBUkVGVUxMWSBVU0UgSVQgSU4gWU9VUiBQUk9KRUNULCBCRUNBVVNFIElUIElOIERFVkVMT1BJTkcqKgoKKipJIGFtIGN1cnJlbnRseSB0ZXN0aW5nIHdpdGggbXkgb3duIHByb2plY3RzIHRvIHJlZmluZSBSNVQsIGV4cGVjdGluZyBpdCB0byBzdGFiaWxpemUgYnkgdGhlIGVuZCBvZiBBdWd1c3QuIEF0IHRoYXQgcG9pbnQsIEkgd2lsbCBtYXJrIFI1VCBhcyByZWFkeSBmb3Igb2ZmaWNpYWwgdXNlLCBtYWtpbmcgaXQgY29udmVuaWVudCBmb3IgZXZlcnlvbmUuKioKIyMgdG9vbHMgCltzd2FnZ2VyLXVpLWVkaXRdKGh0dHBzOi8vZWRpdG9yLW5leHQuc3dhZ2dlci5pby8pCj4gaW5zcGlyZWQgYnkgW2EtaC9yZXN0XShodHRwczovL2dpdGh1Yi5jb20vYS1oL3Jlc3Qp readmeEtag: '"be146c86aa5087abd5e59d29e1a018891004ea0a"' readmeLastModified: Thu, 05 Dec 2024 07:48:52 GMT repositoryId: 809563216 description: ' Automatically generated OpenAPI 3/swagger documentation via Go code, without relying on comments' created: '2024-06-03T02:29:55Z' updated: '2024-12-05T07:50:39Z' language: Go archived: false stars: 9 watchers: 2 forks: 0 owner: the-pawn-2017 logo: https://avatars.githubusercontent.com/u/115976311?v=4 license: LGPL-3.0 repoEtag: '"338cacc130307959676170362a12cfaf419e1605df6278997f1cc518bb9bfa2a"' repoLastModified: Thu, 05 Dec 2024 07:50:39 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/karatelabs/vscode-extension v3: true 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+PC9saT4KICAgICAgICAgICAgICAgIDxsaT5EZWJ1ZyBKYXZhICZhbXA7IEthcmF0ZSBpbiBzYW1lIHNlc3Npb248L2xpPgogICAgICAgICAgICAgICAgPGxpPkphdmEgZGVidWcgc2Vzc2lvbiBzdG9wcyBhdCBLYXJhdGUgYnJlYWtwb2ludHM8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNydW4tYXMtbW9jayI+UnVuIGFzIG1vY2s8L2E+PC9saT4KICAgICAgICAgICAgICAgIDxsaT5jVVJMIGltcG9ydCAqPC9saT4KICAgICAgICAgICAgICAgIDxsaT5PcGVuQVBJIHN1cHBvcnQgKjwvbGk+CiAgICAgICAgICAgIDwvdWw+PGk+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7WypdIGNvbWluZyBzb29uPC9pPgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICA8bGk+UHJpb3JpdHkgc3VwcG9ydDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+U1NPIC8gU0FNTCBzdXBwb3J0PC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjb2ZmbGluZS1saWNlbnNlIj5PZmZsaW5lIGxpY2Vuc2U8L2E+PC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5rYXJhdGVsYWJzLmlvL2NvbnRhY3QtdXMiPkNvbnRhY3QgdXM8L2E+PC9saT4KICAgICAgICAgICAgPC91bD4gICAgICAgIAogICAgICAgIDwvdGQ+ICAgICAgICAKICAgIDwvdHI+CjwvdGFibGU+Cgo+IEJ5IHVzaW5nIHRoaXMgcGx1Z2luLCB5b3UgYWdyZWUgdG8gdGhlIEthcmF0ZSBMYWJzIFtFVUxBXShodHRwczovL2thcmF0ZWxhYnMuaW8vZXVsYSkuIERhdGEgb24gYSBmZXcgdXNlciBhY3Rpb25zIGlzIGNvbGxlY3RlZCBhbmQgc3ViamVjdCB0byBvdXIgW1ByaXZhY3kgUG9saWN5XShodHRwczovL2thcmF0ZWxhYnMuaW8vcHJpdmFjeS1wb2xpY3kpLiBIVE1MIHJlcG9ydHMgZ2VuZXJhdGVkIGJ5IHRoZSBLYXJhdGUgb3Blbi1zb3VyY2UgbGlicmFyeSBoYXMgW2FkZGl0aW9uYWwgYW5hbHl0aWNzXShodHRwczovL2dpdGh1Yi5jb20va2FyYXRlbGFicy9rYXJhdGUvYmxvYi9tYXN0ZXIva2FyYXRlLWNvcmUvc3JjL3Rlc3QvcmVzb3VyY2VzL2FuYWx5dGljcy5tZCkuCgojIyBMaWNlbnNlIEFjdGl2YXRpb24KTGljZW5zZSBhY3RpdmF0aW9uIGFuZCBzdGF0dXMgaXMgYXZhaWxhYmxlIHZpYSBhIGNvbW1hbmQuIEdvIHRvIGBWaWV3IC0+IENvbW1hbmQgUGFsZXR0ZWAsIHR5cGUgYEthcmF0ZWAgYW5kIHlvdSBzaG91bGQgc2VlIHNvbWV0aGluZyBsaWtlIHRoaXMuCgo8aW1nIHNyYz0icmVzb3VyY2VzL3NpZ24taW4uanBnIiBoZWlnaHQ9IjIwMHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpDaG9vc2UgdGhlIG9wdGlvbiB0byBgU2lnbiBJbiAvIE1hbmFnZSBMaWNlbnNlYCBhbmQgeW91IHdpbGwgYmUgc2hvd24gYSBbZGlhbG9nXSgjb2ZmbGluZS1saWNlbnNlKS4gQ2xpY2sgYFNpZ24gSW5gIHRvIGJlIHRha2VuIHRocm91Z2ggdGhlIHVzdWFsIGZsb3cgbGlua2VkIHRvIHlvdXIgZXhpc3Rpbmcgc3Vic2NyaXB0aW9uIGRldGFpbHMuCgpPbmNlIHlvdSBoYXZlIGF1dGhlbnRpY2F0ZWQgc3VjY2Vzc2Z1bGx5LCBjb3B5IHRoZSBzZXNzaW9uIElEIGZyb20gdGhlIGJyb3dzZXIgYW5kIHBhc3RlIGl0IGludG8gdGhlIGlucHV0LWJveCBub3cgc2hvd2luZyBpbiBWUyBDb2RlLiBIaXQgYEVOVEVSYCB0byBjb21wbGV0ZSB0aGUgc2lnbi1pbi4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvc2lnbi1pbi1zZXNzaW9uaWQuanBnIiBoZWlnaHQ9IjE1MHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpPbmNlIHNpZ25lZC1pbiB5b3UgY2FuIHdvcmsgb2ZmbGluZS4gWW91IGNhbiBhbHdheXMgcnVuIHRoZSBgU2lnbiBJbiAvIE1hbmFnZSBMaWNlbnNlYCBjb21tYW5kIHRvIHNlZSBob3cgbWFueSBkYXlzIGFyZSBsZWZ0IGluIHlvdXIgc2Vzc2lvbi4KCklmIHlvdSBuZWVkIGFuIFtvZmZsaW5lIGxpY2Vuc2VdKCNvZmZsaW5lLWxpY2Vuc2UpIGJlY2F1c2Ugb2Ygc3RyaWN0IHNlY3VyaXR5IG9yIHNpbWlsYXIgcmVzdHJpY3Rpb25zIGluIHlvdXIgZW52aXJvbm1lbnQsIHBsZWFzZSBbY29udGFjdCB1c10oaHR0cHM6Ly93d3cua2FyYXRlbGFicy5pby9jb250YWN0LXVzKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIG9wdGlvbiBpcyBhdmFpbGFibGUgb25seSBmb3IgZW50ZXJwcmlzZSBjdXN0b21lcnMgb2YgS2FyYXRlIExhYnMuCgojIyBTZXR0aW5ncwoKWW91IGNhbiBhY2Nlc3MgdGhlIGV4dGVuc2lvbiBzZXR0aW5ncyBieSBjbGlja2luZyBvbiB0aGUgImdlYXIiIGljb24gYWZ0ZXIgZ29pbmcgdG8gIkV4dGVuc2lvbnMiIG9uIHRoZSBuYXYtYmFyLgoKPGltZyBzcmM9InJlc291cmNlcy9zZXR0aW5ncy1vcGVuLmpwZyIgaGVpZ2h0PSIzMDBweCIvPgoKPHA+Jm5ic3A7PC9wPgoKRXNwZWNpYWxseSBpZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBKYXZhIE1hdmVuIG9yIEdyYWRsZSBwcm9qZWN0cywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgaGF2ZSB0aGUgW0xhbmd1YWdlIFN1cHBvcnQgZm9yIEphdmFdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1yZWRoYXQuamF2YSkgVlMgQ29kZSBleHRlbnNpb24gaW5zdGFsbGVkLgoKVGhlbiBrZWVwIHRoZSBga2FyYXRlbGFicy5rYXJhdGUucnVuLm1vZGVgIHNldHRpbmcgYXMgYHZzY29kZS1qYXZhYCAodGhlIGRlZmF1bHQpLgoKPGltZyBzcmM9InJlc291cmNlcy9zZXR0aW5ncy1uZXcuanBnIiBoZWlnaHQ9IjY1MHB4Ii8+CgojIyMgU3RhbmRhbG9uZQpZb3UgY2FuIGNoYW5nZSB0aGUgYGthcmF0ZWxhYnMua2FyYXRlLnJ1bi5tb2RlYCBzZXR0aW5nIHRvIGBzdGFuZGFsb25lYCBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIFtLYXJhdGUgc3RhbmRhbG9uZSBKQVJdKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZS93aWtpL0dldC1TdGFydGVkOi1PdGhlci1SdW50aW1lLU9wdGlvbnMjc3RhbmRhbG9uZS1qYXIpLiBEb3dubG9hZCBpdCBhbmQgY2hvb3NlIGEgbG9jYWwgZm9sZGVyIHRvIGtlZXAgSkFSIGZpbGVzIGluLiBDaGFuZ2UgdGhlIGBrYXJhdGVsYWJzLmthcmF0ZS5ydW4ubW9kZUphcnNgIHNldHRpbmcgdG8gcG9pbnQgdG8gdGhhdCBmb2xkZXIsIGFuZCBmb3IgY29udmVuaWVuY2UsIGFsbCBKQVJzIHdpdGhpbiB0aGF0IGZvbGRlciB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBydW50aW1lIGNsYXNzcGF0aC4KCk5vdGUgdGhhdCB0aGUgYE1vZGUgSmFyc2Agc2V0dGluZyBzaG91bGQgYmUgYSBmb2xkZXIgbmFtZS4gRG8gbm90IGluY2x1ZGUgdGhlIGAuamFyYCBwYXJ0LiBOb3RlIHRoYXQgdGhlIGRlZmF1bHQgb2YgYC5gIHdpbGwgd29yayBmaW5lIGZvciB0aGUgY29tbW9uIHByYWN0aWNlIG9mIGtlZXBpbmcgdGhlIEthcmF0ZSBKQVIgaW4gdGhlICJyb290IiBvZiB5b3VyIHByb2plY3QgZm9sZGVyLgoKVGhlIGBrYXJhdGVsYWJzLmthcmF0ZS5ydW4uY2xhc3NwYXRoUHJlZml4YCBzZXR0aW5nIGRlZmF1bHRzIHRvIGAuYCB3aGljaCBzaG91bGQgc3VmZmljZSBmb3IgcGlja2luZyB1cCBga2FyYXRlLWNvbmZpZy5qc2AgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QuIFlvdSBjYW4gYWRkIG1vcmUgY2xhc3NwYXRoIGVudHJpZXMgKGNvbW1hLWRlbGltaXRlZCkgYW5kIGV2ZW4gSkFSIGZpbGVzIGlmIHlvdSB3aXNoLiBGb3IgZXhhbXBsZSBgLixzcmMvdGVzdC9qYXZhYCB3b3VsZCBhbHNvIHNlYXJjaCBpbiBgc3JjL3Rlc3QvamF2YWAgZm9yIGBrYXJhdGUtY29uZmlnLmpzYC4KCk5vdGUgdGhhdCBWUyBDb2RlIGhhcyBhIG1lY2hhbmlzbSB0byBbY3VzdG9taXplIHNldHRpbmdzIHBlciBXb3Jrc3BhY2VdKGh0dHBzOi8vY29kZS52aXN1YWxzdHVkaW8uY29tL2RvY3MvZ2V0c3RhcnRlZC9zZXR0aW5ncyNfd29ya3NwYWNlLXNldHRpbmdzKSAob3IgcHJvamVjdCBmb2xkZXIpIHdoaWNoIGNhbiBlbnN1cmUgeW91ciB3aG9sZSB0ZWFtIHVzZXMgdGhlIHNhbWUgc2V0dGluZ3MuIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBob3cgdGhlIHZhbHVlcyBvZiB0aGUgYHJ1bi5tb2RlYCBhbmQgYGNsYXNzcGF0aFByZWZpeGAgY2FuIGJlIHdyaXR0ZW4gdG8gYSBmaWxlIGluIGAudnNjb2RlL3NldHRpbmdzLmpzb25gLiBOb3cgdGhpcyBmaWxlIGNhbiBiZSBhZGRlZCB0byB5b3VyIEdpdCByZXBvc2l0b3J5IG9yIHZlcnNpb24gY29udHJvbC4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvc2V0dGluZ3Mtd29ya3NwYWNlLmpwZyIgaGVpZ2h0PSIzNTBweCIvPgoKIyMjIEN1c3RvbQoKWW91IGNhbiBhbHNvIG9wdCB0byBydW4gY29tbWFuZHMgc3VjaCBhcyBgamF2YWAgb3IgYG12bmAgZGlyZWN0bHkgd2l0aCBga2FyYXRlbGFicy5rYXJhdGUucnVuLm1vZGVgIHNldCB0byBgY3VzdG9tYC4gSW4gdGhpcyBjYXNlIGBqYXZhYCBvciBgbXZuYCBpcyBleHBlY3RlZCB0byBiZSBpbnN0YWxsZWQgYW5kIGluIHRoZSBzeXN0ZW0gYFBBVEhgLgoKRm9yIGNvbnZlbmllbmNlIHRoZSBzdHJpbmcgYCR7a2FyYXRlQXJnc31gIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGdlbmVyYXRlZCBieSB0aGUgZXh0ZW5zaW9uIHdoZW4gcGVyZm9ybWluZyBhY3Rpb25zIHN1Y2ggYXMgYFJ1bmAgZXRjLgoKIyMgVHJvdWJsZXNob290aW5nCgpBIGNvbW1vbiBzb3VyY2Ugb2YgaXNzdWVzIGlzIGlmIHlvdSBoYXZlIGFub3RoZXIgZXh0ZW5zaW9uIGluc3RhbGxlZCB0aGF0IGFsc28gc3VwcG9ydHMgYCouZmVhdHVyZWAgZmlsZXMuCgpIZXJlIGJlbG93IGlzIGEgaGFuZHkgZ3VpZGUgdG8gYSBmZXcgdGhpbmdzIHRvIGxvb2sgZm9yIHRoYXQgY29uZmlybSB0aGF0IHRoZSBLYXJhdGUgTGFicyBleHRlbnNpb24gaXMgcmVhZHkgdG8gdXNlLgoKPGltZyBzcmM9InJlc291cmNlcy9pZGUtdGlwcy5qcGciIGhlaWdodD0iMzUwcHgiLz4KCjxwPiZuYnNwOzwvcD4KClRoZSBgSmF2YSBSZWFkeWAgaW5kaWNhdG9yIHNob3VsZCBzaG93IHVwIGlmIHlvdSBhcmUgd2l0aGluIGEgTWF2ZW4gb3IgR3JhZGxlIHByb2plY3QuCgpJZiB0aGUgW0xhbmd1YWdlIFN1cHBvcnQgZm9yIEphdmFdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1yZWRoYXQuamF2YSkgZXh0ZW5zaW9uIGlzIG5vdCBpbnN0YWxsZWQsIHlvdSB3aWxsIG5lZWQgYSBKYXZhIHJ1bnRpbWUgaW5zdGFsbGVkIGFuZCBbYEpBVkFfSE9NRWAgc2V0IGluIHlvdXIgZW52aXJvbm1lbnRdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9qYXZhLWhvbWUtb24td2luZG93cy1tYWMtb3MteC1saW51eCkuIEhhdmluZyB0aGUgYGphdmFgIGNvbW1hbmQgaW4geW91ciBbc3lzdGVtIGBQQVRIYF0oaHR0cHM6Ly93d3cuamF2YS5jb20vZW4vZG93bmxvYWQvaGVscC9wYXRoLmh0bWwpIHNob3VsZCBhbHNvIGJlIHN1ZmZpY2llbnQuIEphdmEgMTEgb3IgaGlnaGVyIGlzIG5lZWRlZCBmb3IgS2FyYXRlIDEuNC5YIGFuZCBKYXZhIDE3IGlzIG5lZWRlZCBmb3IgS2FyYXRlIDEuNS4wIGFuZCBhYm92ZS4KClRoZXJlIGlzIGEgYEthcmF0ZSBMb2dgIHdpdGhpbiB0aGUgIk91dHB1dCIgdGFiIChuZXh0IHRvICJUZXJtaW5hbCIpIHR5cGljYWxseSBhdCB0aGUgYm90dG9tIG9mIHlvdXIgVlMgQ29kZSB3aW5kb3cuIFlvdSBjYW4gbG9vayBhdCBpdCB0byBmaW5kIHRoZSByZWFzb25zIGZvciBmYWlsdXJlLgoKPGltZyBzcmM9InJlc291cmNlcy9rYXJhdGUtbG9nLmpwZyIgaGVpZ2h0PSIyMDBweCIvPgoKPHA+Jm5ic3A7PC9wPgoKVG8gY2hhbmdlIHRoZSBsb2cgbGV2ZWwgeW91IGNhbiB1c2UgdGhlIFZTIENvZGUgQ29tbWFuZCBgRGV2ZWxvcGVyOiBTZXQgTG9nIExldmVsYCAoYFZpZXcgLS0+IENvbW1hbmQgUGFsZXR0ZWAgYW5kIHR5cGUgIkxvZyIpIGFuZCB0aGVuIHNlbGVjdCBgS2FyYXRlIExvZ2AuIENoYW5naW5nIHRoZSBsb2cgbGV2ZWwgdG8gYERlYnVnYCBnaXZlcyB5b3UgbW9yZSBpbmZvcm1hdGlvbi4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvbG9nLWxldmVsLmpwZyIgaGVpZ2h0PSIyMDBweCIvPgoKIyMgUnVuIEZyb20gRWRpdG9yCllvdSBjYW4gcnVuIGEgZmVhdHVyZSBmaWxlIG9wZW4gaW4gdGhlIGVkaXRvciBieSB1c2luZyB0aGUgQ29kZUxlbnMuIFRoZSBrZXlib2FyZCBzaG9ydGN1dCBgW0NUUkxdYCBgW0Y1XWAgYWxzbyB3b3Jrcy4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvcnVuLWZlYXR1cmUuanBnIiBoZWlnaHQ9IjM1MHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpZb3UgY2FuIHJ1biBhIHNpbmdsZSBgU2NlbmFyaW9gIGJ5IHVzaW5nIHRoZSBDb2RlTGVucyB0aGF0IGFwcGVhcnMgYWJvdmUgaXQuCgpZb3UgY2FuIGV2ZW4gcnVuIGEgc2luZ2xlICJleGFtcGxlIiBpbiBhIGBTY2VuYXJpbyBPdXRsaW5lYCBieSByaWdodC1jbGlja2luZyBvbiBvbmUgb2YgdGhlIGRhdGEtcm93cyB3aXRoaW4gYW4gYEV4YW1wbGVzYCB0YWJsZS4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvcnVuLWV4YW1wbGUuanBnIiBoZWlnaHQ9IjE4MHB4Ii8+CgojIyBMYXVuY2ggQ29uZmlndXJhdGlvbnMKVlMgQ29kZSBbbGF1bmNoLWNvbmZpZ3VyYXRpb25zXShodHRwczovL2NvZGUudmlzdWFsc3R1ZGlvLmNvbS9kb2NzL2VkaXRvci9kZWJ1Z2dpbmcpIGFyZSB1c2VmdWwgZm9yIGJlaW5nIGFibGUgdG8gcmUtcnVuIHRlc3RzIHdpdGggc3BlY2lmaWMgcGFyYW1ldGVycy4gQWxsIHRoZSB0eXBpY2FsIEthcmF0ZSBvcHRpb25zIHlvdSBuZWVkIGFyZSBzdXBwb3J0ZWQsIGluY2x1ZGluZyBjb250cm9sIG92ZXIgdGhlIEpWTSBwYXJhbWV0ZXJzIGFuZCB3b3JraW5nIGRpcmVjdG9yeS4gVGhlIGZlYXR1cmUgZmlsZSAob3IgcGF0aCB0byBzZWFyY2ggZm9yIGZlYXR1cmUgZmlsZXMpIHNob3VsZCBiZSB0aGUgbGFzdCBhcmd1bWVudC4KCkhlcmUgaXMgYW4gZXhhbXBsZSBgLnZzY29kZS9sYXVuY2guanNvbmAgZmlsZToKCmBgYGpzb24KewogICAgInZlcnNpb24iOiAiMC4yLjAiLAogICAgImNvbmZpZ3VyYXRpb25zIjogWwogICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAia2FyYXRlIiwKICAgICAgICAgICAgIm5hbWUiOiAiZW52LXRlc3QiLAogICAgICAgICAgICAicmVxdWVzdCI6ICJsYXVuY2giLAogICAgICAgICAgICAia2FyYXRlQXJncyI6IFsKICAgICAgICAgICAgICAgICItZSIsCiAgICAgICAgICAgICAgICAidGVzdCIsCiAgICAgICAgICAgICAgICAiJHtmaWxlfSIKICAgICAgICAgICAgXQogICAgICAgIH0KICAgIF0KfQpgYGAKClRoZSBhZHZhbnRhZ2UgaXMgdGhhdCB5b3UgY2FuIHNldCB1cCBhbnkgY29tYmluYXRpb24gb2YgW0thcmF0ZSBydW50aW1lIG9wdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZSNrYXJhdGVvcHRpb25zKSB2aWEgYGthcmF0ZUFyZ3NgLiBGb3IgZXhhbXBsZSB5b3UgY2FuOgoqIFtydW4gdGVzdHMgaW4gcGFyYWxsZWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZS90cmVlL21hc3Rlci9rYXJhdGUtbmV0dHkjcGFyYWxsZWwtZXhlY3V0aW9uKQoqIFtzZXQgdGhlIGVudmlyb25tZW50XShodHRwczovL2dpdGh1Yi5jb20va2FyYXRlbGFicy9rYXJhdGUvdHJlZS9tYXN0ZXIva2FyYXRlLW5ldHR5I2thcmF0ZWVudikKKiBvciBbY2hvb3NlIHRhZ3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZS90cmVlL21hc3Rlci9rYXJhdGUtbmV0dHkjdGFncykgdG8gaW5jbHVkZSBvciBleGNsdWRlLgoKTm93IHlvdSBjYW4gcnVuIHRlc3RzIGZyb20gdGhlIFtSdW4gYW5kIERlYnVnXShodHRwczovL2NvZGUudmlzdWFsc3R1ZGlvLmNvbS9kb2NzL2VkaXRvci9kZWJ1Z2dpbmcjX2xhdW5jaC1jb25maWd1cmF0aW9ucykgdmlldyBpbiBWUyBDb2RlIGFuZCBrZXlib2FyZCBzaG9ydC1jdXRzIHN1Y2ggYXMgYEY1YCB3aWxsIHdvcmsgZm9yIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBmaWxlIGluIHRoZSBlZGl0b3IuIE5vdGUgdGhhdCB5b3UgY2FuIGV2ZW4gUnVuIHdpdGhvdXQgRGVidWdnaW5nOiBgQ3RybCArIEY1YC4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvbGF1bmNoLWNvbmZpZy5qcGciIGhlaWdodD0iNDAwcHgiLz4KCjxwPiZuYnNwOzwvcD4KCllvdSBjYW4gaGF2ZSBtdWx0aXBsZSBjb25maWd1cmF0aW9ucyBhbmQgZWFzaWx5IHN3aXRjaCBiZXR3ZWVuIHRoZW0uCgpZb3UgY2FuIGFkZCBgIm5vRGVidWciOiB0cnVlYCB0byB0aGUgcnVuLWNvbmZpZ3VyYXRpb24gSlNPTiB0byBmb3JjZSAiUnVuIHdpdGhvdXQgRGVidWdnaW5nIiBmb3IgY29udmVuaWVuY2UuCgpJbnN0ZWFkIG9mIGAke2ZpbGV9YCBhcyB0aGUgdmFsdWUgZm9yIGBmZWF0dXJlYCwgeW91IGNhbiB1c2UgYW55IHZhbGlkIGZvbGRlciBwYXRoIG9yIGV2ZW4gbXVsdGlwbGUgZmVhdHVyZSBmaWxlcy4KCiMjIE91dGxpbmUgVmlldwpUaGUgVlMgQ29kZSBbb3V0bGluZSB2aWV3XShodHRwczovL2NvZGUudmlzdWFsc3R1ZGlvLmNvbS9kb2NzL2dldHN0YXJ0ZWQvdXNlcmludGVyZmFjZSNfb3V0bGluZS12aWV3KSBpcyBzdXBwb3J0ZWQgc28geW91IGNhbiBuYXZpZ2F0ZSBsYXJnZSBmaWxlcyB3aXRoIGVhc2UuCgo8aW1nIHNyYz0icmVzb3VyY2VzL291dGxpbmUtdmlldy5qcGciIGhlaWdodD0iNDAwcHgiLz4KCiMjIENvZGUgRm9ybWF0dGluZwpWUyBDb2RlIFtjb2RlLWZvcm1hdHRpbmddKGh0dHBzOi8vY29kZS52aXN1YWxzdHVkaW8uY29tL2RvY3MvZWRpdG9yL2NvZGViYXNpY3MjX2Zvcm1hdHRpbmcpIHNob3J0Y3V0cyB3b3JrIHRvIGZvcm1hdCBpbmRlbnRpbmcgb2YgZmVhdHVyZSBmaWxlIGVsZW1lbnRzLgoKIyMgVGVzdCBSZXN1bHRzClRoZSBIVE1MIHJlcG9ydCBpcyBvbmUtY2xpY2sgYXdheS4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvdGVzdC1yZXBvcnQtbGluay5qcGciIGhlaWdodD0iMjAwcHgiLz4KCiMjIEF1dG8gQ29tcGxldGUKQmVzaWRlcyB0aGUgc3ludGF4IHZhbGlkYXRpb24sIHlvdSBoYXZlIGF1dG8tY29tcGxldGUgZm9yIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQga2V5d29yZHMuCgo8aW1nIHNyYz0icmVzb3VyY2VzL2F1dG9jb21wbGV0ZS5qcGciIGhlaWdodD0iMjAwcHgiLz4KCiMjIENvZGUgRm9sZGluZwpZb3UgY2FuIGNvbGxhcHNlIHNlY3Rpb25zIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYWwgd2l0aCBsb25nIHRlc3RzLgoKPGltZyBzcmM9InJlc291cmNlcy9jb2RlLWZvbGRpbmcuanBnIiBoZWlnaHQ9IjIwMHB4Ii8+CgojIyBSZWZlcmVuY2VzCkNvbWluZyBTb29uLgoKIyMgSlNPTiBSZS1mb3JtYXR0aW5nClBsYWNlIHRoZSBjdXJzb3Igd2l0aGluIEpTT04gdG8gc2VlIG9wdGlvbnMgdG8gcmUtZm9ybWF0IGl0LCB5b3Ugd2lsbCBzZWUgYSAiYnVsYiIgaWNvbi4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvanNvbi1idWxiLmpwZyIgaGVpZ2h0PSIyNTBweCIvPgoKPHA+Jm5ic3A7PC9wPgoKVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBwb3NzaWJsZSAoZGVwZW5kaW5nIG9uIGNvbnRleHQpOgoKKiBMZW5pZW50IC0ganVzdCBsaWtlIEpTLCB3aGVyZSBzaW5nbGUtcXVvdGVzIGFyZSB1c2VkIGFuZCBubyBxdW90ZXMgYXJlIG5lZWRlZCBmb3IgcHJvcGVydHkga2V5cwoqIFN0cmljdCAtIFN0cmljdCBKU09OLCB1c2luZyBkb3VibGUtcXVvdGVzCiogTWFrZSBzaW5nbGUgTGluZSAtIGNvbnZlcnQgbXVsdGktbGluZSBKU09OIHRvIGEgc2luZ2xlIGxpbmUKKiBNYWtlIG11bHRpLWxpbmUgLSBjb252ZXJ0IGEgc2luZ2xlIGxpbmUgb2YgSlNPTiB0byBtdWx0aS1saW5lLCBpbmNsdWRpbmcgdHJpcGxlLXF1b3RlcwoKIyMgUnVuIEZvbGRlcgoKQXMgYSBjb252ZW5pZW5jZSwgeW91IGNhbiByaWdodC1jbGljayBhbmQgcnVuIGEgZm9sZGVyIGZyb20gdGhlIGV4cGxvcmVyIHZpZXcuCgo8aW1nIHNyYz0icmVzb3VyY2VzL3J1bi1mb2xkZXIuanBnIiBoZWlnaHQ9IjQ1MHB4Ii8+CgojIyBEZWJ1ZwoKWW91IGNhbiBzZXQgYnJlYWstcG9pbnRzIG9uIEthcmF0ZSBmZWF0dXJlIGZpbGVzIGluIGRlYnVnIG1vZGUuIFRoZSBLYXJhdGUgZGVidWdnZXIgY2FuIGV2ZW4gc3RlcC1iYWNrIGFuZCBob3QtcmVsb2FkIHNpbXBsZSBlZGl0cyB0byB5b3VyIHRlc3QuCgo8aW1nIHNyYz0icmVzb3VyY2VzL2RlYnVnLmpwZyIgaGVpZ2h0PSI2MDBweCIvPgoKIyMjIERlYnVnIEphdmEgZnJvbSBLYXJhdGUKCkEgS2FyYXRlIGRlYnVnIHNlc3Npb24gd2lsbCBldmVuIHN0b3AgYXQgSmF2YSBicmVha3BvaW50cy4KCiMjIyBEZWJ1ZyBLYXJhdGUgZnJvbSBKYXZhCgpZb3UgY2FuIGFsc28gc3RhcnQgYSBub3JtYWwgSmF2YSBkZWJ1ZyBzZXNzaW9uIHRoYXQgdXNlcyB0aGUgS2FyYXRlIGBSdW5uZXJgIEphdmEgQVBJIGJ1dCBzdGlsbCBzdG9wIGF0IEthcmF0ZSBicmVha3BvaW50cy4gVGhpcyByZXF1aXJlcyB5b3UgdG8gYmUgdXNpbmcgS2FyYXRlIHZlcnNpb24gMS41LjAuUkMzIG9yIGdyZWF0ZXIuCgojIyBSdW4gYXMgbW9jawoKWW91IGNhbiByaWdodCBjbGljayBhbmQgcnVuIGEgYCouZmVhdHVyZWAgZmlsZSBhcyBhIFtLYXJhdGUgbW9ja10oaHR0cHM6Ly9naXRodWIuY29tL2thcmF0ZWxhYnMva2FyYXRlL3RyZWUvbWFzdGVyL2thcmF0ZS1uZXR0eSNzZXJ2ZXItbGlmZS1jeWNsZSkuIFlvdSBjYW4gYWxzbyBkbyB0aGlzIGZvciB0aGUgbmV3ZXIgW0phdmFTY3JpcHQgbW9ja3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZS93aWtpL0thcmF0ZS1KYXZhU2NyaXB0LU1vY2tzKSwgc28gYCouanNgIGZpbGVzIGFyZSBhbHNvIHN1cHBvcnRlZC4gTWFrZSBzdXJlIHRoYXQgdGhlIGZpbGUgeW91IGFyZSByaWdodC1jbGlja2luZyBvbiBpcyBhIHZhbGlkIG1vY2sgc2NyaXB0LgoKPGltZyBzcmM9InJlc291cmNlcy9ydW4tYXMtbW9jay5qcGciIGhlaWdodD0iMzUwcHgiLz4KCiMjIE9mZmxpbmUgTGljZW5zZQoKPiBbIUlNUE9SVEFOVF0gIAo+IFRoZSBPZmZsaW5lIExpY2Vuc2UgaXMgYSBbcGFpZCBmZWF0dXJlIGZvciBlbnRlcnByaXNlc10oaHR0cHM6Ly93d3cua2FyYXRlbGFicy5pby9wcmljaW5nKS4gUGxlYXNlIG1ha2Ugc3VyZSB5b3Uga25vdyB3aG8geW91ciBkZXNpZ25hdGVkIGFkbWluIGlzIGJlZm9yZSB5b3UgcGVyZm9ybSB0aGlzIHN0ZXAuCgoKVGhlIGRpYWxvZyB5b3Ugc2VlIHdoZW4geW91IGludm9rZSB0aGUgW2BTaWduIEluIC8gTWFuYWdlIExpY2Vuc2VgXSgjbGljZW5zZS1hY3RpdmF0aW9uKSBjb21tYW5kIGxvb2tzIGxpa2UgdGhpcy4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvbGljZW5zZS1kaWFsb2cuanBnIiBoZWlnaHQ9IjEwMHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpDbGljayB0aGUgYE9mZmxpbmUgTGljZW5zZWAgYnV0dG9uLiBBIHVuaXF1ZSBjb2RlIGZvciB5b3VyIHN5c3RlbSB3aWxsIGJlIHNob3duIHdoaWNoIHlvdSBjYW4gY3V0IGFuZCBwYXN0ZS4gSW4gdGhlIGV4YW1wbGUgYmVsb3csIGl0IGlzOiBgRGhIT0ZLSHZkN1hZVGkrclFuTlRKUT09YAoKPGltZyBzcmM9InJlc291cmNlcy9vZmZsaW5lLWxpY2Vuc2UtY29kZS5qcGciIGhlaWdodD0iMTUwcHgiLz4KCjxwPiZuYnNwOzwvcD4KClNlbmQgdGhhdCB1bmlxdWUgY29kZSB0byB5b3VyIGRlc2lnbmF0ZWQgYWRtaW4uIFlvdSB3aWxsIGJlIGlzc3VlZCBhIGxpY2Vuc2UgdGhhdCBpcyB0aWVkIHRvIHRoaXMgdW5pcXVlIGNvZGUuIFRvIGFwcGx5IHRoZSBsaWNlbnNlLCBjb3B5ICphbGwqIHRoZSB0ZXh0IGZyb20gdGhlIGxpY2Vuc2UgZmlsZSAod2hpY2ggc2hvdWxkIHN0YXJ0IHdpdGg6IGAtLS0tLUJFR0lOIExJQ0VOU0UgRklMRS0tLS0tYCkgYW5kIHBhc3RlIGl0IGludG8gdGhlIHRleHQtZmllbGQgc2hvd24gYWJvdmUuIE1ha2Ugc3VyZSB5b3UgKmNsZWFyKiB0aGUgdGV4dC1ib3ggYmVmb3JlIHBhc3RpbmcgdGhlIGxpY2Vuc2UgZmlsZSB0ZXh0IG9yIGp1c3QgcmVwbGFjZSB0aGUgaW5pdGlhbCBjb250ZW50cy4gTm93IHlvdSBzaG91bGQgc2VlIHNvbWV0aGluZyBsaWtlIHRoaXMuCgo8aW1nIHNyYz0icmVzb3VyY2VzL29mZmxpbmUtbGljZW5zZS1wYXN0ZS5qcGciIGhlaWdodD0iMTUwcHgiLz4KCjxwPiZuYnNwOzwvcD4KCkNsaWNrIFtFTlRFUl0gYW5kIHNob3VsZCBzZWUgYSBjb25maXJtYXRpb24gbWVzc2FnZSB3aXRoIHlvdXIgbGljZW5zZSBkZXRhaWxzLgoKCgoKCg== readmeEtag: '"85e01f93f531f4e25e435b5fa9dbef6f0fec2f91"' readmeLastModified: Mon, 12 May 2025 14:32:06 GMT repositoryId: 528727790 description: Karate Visual Studio Code Extension created: '2022-08-25T06:43:13Z' updated: '2025-05-12T14:32:14Z' language: null archived: false stars: 10 watchers: 1 forks: 2 owner: karatelabs logo: https://avatars.githubusercontent.com/u/91312095?v=4 repoEtag: '"8381edb5500e58cab1838c4d13321795d66e70a2286b6f38d9a49617c70e3e84"' repoLastModified: Mon, 12 May 2025 14:32:14 GMT category: Testing foundInMaster: true oldLocations: - https://github.com/karatelabs/karate-vscode-extension - source: openapi3 tags repository: https://github.com/ldej/go-openapi-example v3: true id: 50961b8a85a4eb26a25b492151b8b365 repositoryMetadata: base64Readme: >- IyBnby1vcGVuYXBpLWV4YW1wbGUKClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyB0aGUgd29ya2luZyBleGFtcGxlcyBvZiBzZXJ2ZXIgKHN0dWJzKSBnZW5lcmF0ZWQgYnkgZm91ciBkaWZmZXJlbnQgZ2VuZXJhdG9ycywgYW5kIGltcGxlbWVudGVkIHdpdGggYmFzaWMgZnVuY3Rpb25hbGl0eSB0byBkZW1vbnN0cmF0ZSBob3cgdG8gdXNlIHRoZSBnZW5lcmF0ZWQgY29kZS4gW1JlYWQgdGhlIGJsb2cgcG9zdF0oaHR0cHM6Ly9sZGVqLm5sL3Bvc3QvZ2VuZXJhdGluZy1nby1mcm9tLW9wZW5hcGktMy8pIGZvciBtb3JlIGRldGFpbHMgYW5kIHJlc3VsdHMuCg== readmeEtag: '"890046f8e7c4050420ee3e70c3525aa8f09cf7ca"' readmeLastModified: Fri, 23 Jun 2023 05:45:53 GMT repositoryId: 647720230 description: >- Example implementations of Go servers based on generated code from OpenAPI 3 definitions created: '2023-05-31T11:34:44Z' updated: '2025-11-04T18:19:58Z' language: Go archived: false stars: 11 watchers: 3 forks: 4 owner: ldej logo: https://avatars.githubusercontent.com/u/18293312?v=4 repoEtag: '"9aa94279883e4052f8a6411c4cc7dc46082bf93e398c1f559f8861f066ce6211"' repoLastModified: Tue, 04 Nov 2025 18:19:58 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/avanov/openapi-client-generator v3: true repositoryMetadata: base64Readme: >- Li4gX2JhZGdlczoKCi4uIGltYWdlOjogaHR0cHM6Ly9naXRodWIuY29tL2F2YW5vdi9vcGVuYXBpLWNsaWVudC1nZW5lcmF0b3Ivd29ya2Zsb3dzL0NJL2JhZGdlLnN2Zz9icmFuY2g9ZGV2ZWxvcAogICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL2F2YW5vdi9vcGVuYXBpLWNsaWVudC1nZW5lcmF0b3IvYWN0aW9ucz9xdWVyeT1icmFuY2glM0FkZXZlbG9wCgouLiBpbWFnZTo6IGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi9hdmFub3Yvb3BlbmFwaS1jbGllbnQtZ2VuZXJhdG9yL2JhZGdlLnN2Zz9icmFuY2g9ZGV2ZWxvcAogICAgOnRhcmdldDogaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL2F2YW5vdi9vcGVuYXBpLWNsaWVudC1nZW5lcmF0b3I/YnJhbmNoPWRldmVsb3AKCi4uIGltYWdlOjogaHR0cHM6Ly9yZXF1aXJlcy5pby9naXRodWIvYXZhbm92L29wZW5hcGktY2xpZW50LWdlbmVyYXRvci9yZXF1aXJlbWVudHMuc3ZnP2JyYW5jaD1tYXN0ZXIKICAgIDp0YXJnZXQ6IGh0dHBzOi8vcmVxdWlyZXMuaW8vZ2l0aHViL2F2YW5vdi9vcGVuYXBpLWNsaWVudC1nZW5lcmF0b3IvcmVxdWlyZW1lbnRzLz9icmFuY2g9bWFzdGVyCiAgICA6YWx0OiBSZXF1aXJlbWVudHMgU3RhdHVzCgouLiBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL29wZW5hcGktY2xpZW50LWdlbmVyYXRvci9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKICAgIDp0YXJnZXQ6IGh0dHBzOi8vb3BlbmFwaS1jbGllbnQtZ2VuZXJhdG9yLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8KICAgIDphbHQ6IERvY3VtZW50YXRpb24gU3RhdHVzCgouLiBpbWFnZTo6IGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvb3BlbmFwaS1jbGllbnQtZ2VuZXJhdG9yLnN2ZwogICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9vcGVuYXBpLWNsaWVudC1nZW5lcmF0b3IKICAgIDphbHQ6IExhdGVzdCBQeVBJIFJlbGVhc2UKCgpPcGVuQVBJIENsaWVudCBHZW5lcmF0b3IKPT09PT09PT09PT09PT09PT09PT09PT09CgpUaGlzIENMSSB1dGlsaXR5IGFsbG93cyB5b3UgdG8gZ2VuZXJhdGUgUHl0aG9uIGNsaWVudCBwYWNrYWdlcyBmcm9tIE9wZW5BUEkgdjMgc3BlY2lmaWNhdGlvbnMuClRoZSBwcm9qZWN0IGFpbXMgYXQgc3VwcG9ydGluZyBhbnkgZ2VuZXJpYyB2YWxpZCBzcGVjaWZpY2F0aW9uLgoKRmVhdHVyZXMKLS0tLS0tLS0KCiogd29ya3Mgb24gUHl0aG9uIDMuOCBhbmQgYWJvdmU7CiogZ2VuZXJhdGVzIGNsaWVudHMgd2l0aCB0eXBlIGhpbnRzIHRvIGFpZCBzdGF0aWMgYW5hbHlzaXMgb2YgaGlnaGVyIGxldmVsIGludGVyZmFjZXMgdGhhdCB3b3VsZCB1c2UgdGhlIGNsaWVudHM7Ciogc3VwcG9ydHMgc3RyZWFtaW5nIGVuZHBvaW50cy4KCkluc3RhbGxhdGlvbgotLS0tLS0tLS0tLS0KCllvdSBjYW4gaW5zdGFsbCBpdCBmcm9tIFB5UEk6CgouLiBjb2RlLWJsb2NrOjogYmFzaAoKICAgIHBpcCBpbnN0YWxsIG9wZW5hcGktY2xpZW50LWdlbmVyYXRvcgoKQWZ0ZXJ3YXJkcywgdXNlIGEgQ0xJIHV0aWxpdHkgY2FsbGVkIGBgb3BlbmFwaS1jbGllbnQtZ2VuZXJhdG9yYGA6CgouLiBjb2RlLWJsb2NrOjogYmFzaAoKICAgICQgb3BlbmFwaS1jbGllbnQtZ2VuZXJhdG9yIC0taGVscAogICAgdXNhZ2U6IG9wZW5hcGktY2xpZW50LWdlbmVyYXRvciBbLWhdIFstVl0ge2dlbn0gLi4uCgogICAgT3BlbkFQSSBDbGllbnQgR2VuZXJhdG9yCgogICAgb3B0aW9uYWwgYXJndW1lbnRzOgogICAgICAtaCwgLS1oZWxwICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CiAgICAgIC1WLCAtLXZlcnNpb24gIHNob3cgcHJvZ3JhbSdzIHZlcnNpb24gbnVtYmVyIGFuZCBleGl0CgogICAgc3ViLWNvbW1hbmRzOgogICAgICB2YWxpZCBzdWItY29tbWFuZHMKCiAgICAgIHtnZW59ICAgICAgICAgIGFkZGl0aW9uYWwgaGVscAogICAgICAgIGdlbiAgICAgICAgICBHZW5lcmF0ZSBjbGllbnQgZm9yIGEgcHJvdmlkZWQgc2NoZW1hIChKU09OLCBZQU1MKS4KCgpDb250cmlidXRpbmcKPT09PT09PT09PT09CgpDbG9uaW5nIHRoaXMgcmVwbwotLS0tLS0tLS0tLS0tLS0tLQoKVGhlIHByb3BlciB3YXkgdG8gY2xvbmUgdGhpcyByZXBvIGlzOgoKLi4gY29kZS1ibG9jazo6IGJhc2gKCiAgICBnaXQgY2xvbmUgLS1yZWN1cnNlLXN1Ym1vZHVsZXMgPHJlcG8tdXJsPiA8bG9jYWwtcHJvamVjdC1yb290PgogICAgY2QgPGxvY2FsLXByb2plY3Qtcm9vdD4KCiAgICAjIGZvciBzaG93aW5nIHN1Ym1vZHVsZSBzdGF0dXMgd2l0aCBgZ2l0IHN0YXR1c2AKICAgIGdpdCBjb25maWcgc3RhdHVzLnN1Ym1vZHVsZXN1bW1hcnkgMQoKICAgICMgZm9yIGxvZ2dpbmcgc3VibW9kdWxlIGRpZmYgd2l0aCBgZ2l0IGRpZmZgCiAgICBnaXQgY29uZmlnIGRpZmYuc3VibW9kdWxlIGxvZwoKClRlc3QgZnJhbWV3b3JrCi0tLS0tLS0tLS0tLS0tCgpUaGUgcHJvamVjdCB1c2VzIGBOaXggPGh0dHBzOi8vbml4b3Mub3JnLz5gXyBmb3IgYm9vdHN0cmFwcGluZyBpdHMgZGV2IGVudmlyb25tZW50LgoKWW91IGNhbiBydW4gZXhpc3RpbmcgdGVzdCBzdWl0ZSB3aXRoCgouLiBjb2RlOjoKCiAgICQgbml4LXNoZWxsIC0tcnVuICJtYWtlIHRlc3QiCgoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpEb2N1bWVudGF0aW9uIGlzIGhvc3RlZCBvbiBSZWFkVGhlRG9jczogaHR0cHM6Ly9vcGVuYXBpLWNsaWVudC1nZW5lcmF0b3IucmVhZHRoZWRvY3MuaW8vZW4vZGV2ZWxvcC8KCgpDaGFuZ2Vsb2cKLS0tLS0tLS0tCgpTZWUgYENIQU5HRUxPRyA8aHR0cHM6Ly9naXRodWIuY29tL2F2YW5vdi9vcGVuYXBpLWNsaWVudC1nZW5lcmF0b3IvYmxvYi9tYXN0ZXIvQ0hBTkdFTE9HLnJzdD5gXy4KCkxJQ0VOU0UKLS0tLS0tLQoKTUlUCg== readmeEtag: '"3e9eece9b6a624b8f2da6308ee95ec7d48542d1e"' readmeLastModified: Sun, 19 Jun 2022 16:10:51 GMT repositoryId: 324674329 description: >- Generates Python client packages from OpenAPI v3 specifications. The project aims at supporting any generic valid specification. created: '2020-12-27T02:47:03Z' updated: '2025-01-18T00:58:50Z' language: Python archived: false stars: 9 watchers: 1 forks: 2 owner: avanov logo: https://avatars.githubusercontent.com/u/601955?v=4 license: MIT repoEtag: '"3a06bd6a8ab855cc3c9bdf5c03cd0dcd6b9365f7f5512875b4ed8d27f7930096"' repoLastModified: Sat, 18 Jan 2025 00:58:50 GMT foundInMaster: true category: - SDK - Server Implementations id: dd5e3ca78b17b6b7b556f603493bffa3 - source: openapi3 tags repository: https://github.com/technocreatives/openapi-mock-eller v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIHYzIE1vY2sgU2VydmVyCgpBIHZlcnkgYWxwaGEgc2VydmVyIGZvciBnZW5lcmF0aW5nIG1vY2sgZGF0YSBmcm9tIGFuIE9wZW5BUEkgdjMgc3BlYy4KClRoZSBjb2RlYmFzZSBpcyB2ZXJ5IHNtYWxsLCBjb250cmlidXRpb25zIGFyZSB2ZXJ5IHdlbGNvbWUuIDpzbWlsZToKCiMjIFVzYWdlCgpObyBucG0gbW9kdWxlIHlldCwgc29ycnkuIFlvdSBjYW4gY2xvbmUgdGhpcyByZXBvIHRob3VnaCBhbmQgZXhlY3V0ZSBpdCBmcm9tIHdoZXJldmVyIHlvdSBsaWtlOgoKYGBgCm5vZGUgc2VydmVyLmpzIDxzcGVjLnlhbWw+IFstLXBvcnQ9ODAwMV0gWy0taG9zdD1sb2NhbGhvc3RdCmBgYAoKWW91ciBzZXJ2ZXIgaXMgbm93IHJ1bm5pbmcgb24gPGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMT4uCllvdSBjYW4gZmluZCB0aGUgcmVuZGVyZWQgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciBzcGVjIGF0IDxodHRwOi8vbG9jYWxob3N0OjgwMDEvZG9jcz4sCmFuZCwgaWYgeW91IGV2ZXIgbmVlZCBpdCwgdGhlIEpTT04gc291cmNlIG9mIHlvdXIgc3BlYyBhdCA8aHR0cDovL2xvY2FsaG9zdDo4MDAxL2RvY3Mvc2NoZW1hLmpzb24+LgoKIyMgTGljZW5zZQoKSVNDIGxpY2Vuc2UgLSBzZWUgTElDRU5TRSBmaWxlLgo= readmeEtag: '"64b9ad1d887283eca5fbad3356cefec0523bc908"' readmeLastModified: Tue, 24 Jul 2018 21:32:34 GMT repositoryId: 130576221 description: From OpenAPI v3 spec to running mock server in one command created: '2018-04-22T14:39:26Z' updated: '2020-01-19T12:49:24Z' language: JavaScript archived: false stars: 8 watchers: 6 forks: 2 owner: technocreatives logo: https://avatars.githubusercontent.com/u/4668783?v=4 license: ISC repoEtag: '"3bd7905761a583802d06e994dac1ccdc4a1e435208007836d7d61cbf083a8feb"' repoLastModified: Sun, 19 Jan 2020 12:49:24 GMT foundInMaster: true category: - Server - Server Implementations id: 602cb19c468b36fcb1ce63095660ee4f - source: openapi3 tags repository: https://github.com/matelang/dinonce v3: true repositoryMetadata: base64Readme: >- IVtkaW5vbmNlX2dvcGhlcl0oZ29waGVyLnBuZykKIyBkaW5vbmNlIC0gYSBkaXN0cmlidXRlZCBub25jZSB0cmFja2VyCgpbIVttYWluIGJyYW5jaF0oaHR0cHM6Ly9naXRodWIuY29tL3dlbHRoZWUvZGlub25jZS9hY3Rpb25zL3dvcmtmbG93cy9tYWluLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vd2VsdGhlZS9kaW5vbmNlL2FjdGlvbnMvd29ya2Zsb3dzL21haW4ueW1sKQoKRm9yIG1vc3QgYmxvY2tjaGFpbiBjbGllbnRzIGl0IGlzIGVzc2VudGlhbCB0byBrZWVwIHRyYWNrIG9mIHRyYW5zYWN0aW9uIG5vbmNlcyB0aGF0IHByb3RlY3QgYWdhaW5zdCBkdXBsaWNhdGUgCnRyYW5zYWN0aW9ucyBhbmQgcmVwbGF5IGF0dGFja3MuCgpZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCBub25jZXMgW2hlcmVdKGh0dHBzOi8vbWVkaXVtLmNvbS9zd2xoL2V0aGVyZXVtLXNlcmllcy11bmRlcnN0YW5kaW5nLW5vbmNlLTM4NTgxOTRiMzliZikuCgpOb3JtYWxseSwgYSBub24tcGFydGl0aW9uZWQgY2xpZW50IGFwcGxpY2F0aW9uLCBsaWtlIHlvdXIgbW9iaWxlIHdhbGxldCBhcHAgb3IgTWV0YU1hc2sgd2lsbCBlYXNpbHkgZG8gdGhpcyBmb3IgeW91LCAKYnV0IHRyYWNraW5nIG5vbmNlcyBnZXRzIHRyaWNraWVyIG9uY2UgeW91ciBhcHBsaWNhdGlvbiBuZWVkcyB0byBzcGxpdC1icmFpbiBhbmQgcnVuIGluIGEgZGlzdHJpYnV0ZWQgZmFzaGlvbi4KQ2hlY2sgTWV0YU1hc2sncyBub25jZS10cmFja2VyIGltcGxlbWVudGF0aW9uIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vTWV0YU1hc2svbm9uY2UtdHJhY2tlcikuCgpkaW5vbmNlIGlzIGEgbm9uY2UgdGlja2V0aW5nIHNlcnZpY2Ugd2hpY2ggd2UgdXNlIGF0IFt3ZWx0aGVlXShodHRwczovL3dlbHRoZWUuY29tKSB0byBwcm9jZXNzIHRyYW5zYWN0aW9ucyh0eCkgd2l0aCAKbXVsdGlwbGUgdHggZXhlY3V0b3JzLCBtYWtpbmcgc3VyZSB0aGF0IHdlIGF2b2lkOgoKKiBkb3VibGUgc3BlbmRpbmcKKiBmaWxsaW5nIGEgbmV0d29yaydzIHR4IHBvb2wgYnkgaGF2aW5nIGdhcHMgaW4gb3VyIG5vbmNlIHNlcXVlbmNlcwoKIyMgSG93IGl0IHdvcmtzPyBJbiBhIG51dHNoZWxsLgoqZGlub25jZSogaXMgZGVzaWduZWQgdG8gc3VwcG9ydCB0aWNrZXRpbmcgZm9yIG11bHRpcGxlIG5vbmNlIHNlcXVlbmNlcyBpbiBwYXJhbGxlbC4KCkFuIGlkZW50aXR5IG9uIGEgZ2l2ZW4gYmxvY2tjaGFpbiBzaG91bGQgaGF2ZSBpdCdzIG93biBzZXF1ZW5jZSBvZiBub25jZXMuCipkaW5vbmNlKiBkZWZpbmVzIHN1Y2ggYSBzZXF1ZW5jZSBhcyBhIGBsaW5lYWdlYC4KCkZvciBlYWNoIGxpbmVhZ2UgYSAqZGlub25jZSogY2xpZW50IGNhbiBnZXQgYSBsZWFzZWQgbm9uY2UgKnRpY2tldCogZm9yIGEgdHJhbnNjYXRpb24sIGFuZCBzaG91bGQgc3BlY2lmeSBhIHRpY2tldCAKKmV4dGVybmFsSWQqIHdoaWNoIHNob3VsZCBiZSB1bmlxdWUgZm9yIGEgdHJhbnNhY3Rpb24gZm9yIGEgZ2l2ZW4gbGluZWFnZS4gSW4gb3RoZXIgd29yZHMsIGl0IHNob3VsZCB1bmlxdWVseSBpZGVudGlmeSAKYSBuYXR1cmFsIHRyYW5zYWN0aW9uIGluIHRoZSBjYWxsaW5nIHN5c3RlbS4KCklmIHRoZSBvcGVyYXRpb24gc3VjY2VlZHMsICpkaW5vbmNlKiB3aWxsIHJlc2VydmUgaG9sZCBhIGxlYXNlIGZvciB0aGUgdHgncyBuZXdseSBhc3NvY2lhdGVkIG5vbmNlLgoKU2luY2UgbW9zdCB0eCBleGVjdXRvcnMgKCpkaW5vbmNlKidzIGNsaWVudHMpIG9wZXJhdGUgd2l0aCBhbiAqYXQtbGVhc3Qtb25jZSBzZW1hbnRpY3MqLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSB0eCAKd2lsbDoKKiBjb21wbGV0ZSAoYS5rLmEgd2lsbCBiZSBtaW5lZCBvbiB0aGUgYmxvY2tjaGFpbikKKiB3aWxsIGZhaWwgZm9yIG5vbi10cmFuc2llbnQgcmVhc29ucwoKSWYgdGhlIHR4IGNvbXBsZXRlcyBzdWNjZXNzZnVsbHksIHRoZW4gdGhlIGNsaWVudCBpcyBleHBlY3RlZCB0byAqY2xvc2UgdGhlIHRpY2tldCosIG1hcmtpbmcgaXQgdW5sZWFzZS1hYmxlIGZvcmV2ZXIuCklmIHRoZSB0eCBmYWlscywgdGhlIGNsaWVudCBpcyBleHBlY3RlZCB0byBub3RpZnkgKmRpbm9uY2UqIHRvICpyZWxlYXNlKiB0aGUgdGlja2V0LiBJbiB0aGlzIGNhc2UsIGl0IHNob3VsZCBiZSBhc3NpZ25lZAp0byB0aGUgbmV4dCBsZWFzZSByZXF1ZXN0LCBhbmQgYmUgcmUtdXNlZCBhcyBzb29uIGFzIHBvc3NpYmxlLCB0byBhdm9pZCBmaWxsaW5nIG5vZGUgdHggcG9vbHMgb24gdGhlIGJsb2NrY2hhaW4gbmV0d29yay4KCiMjIENsaWVudCBJbnRlZ3JhdGlvbnMKZGlub25jZSBpcyBidWlsdCB1c2luZyBhIGNvbnRyYWN0IGZpcnN0IGFwcHJvYWNoIHdpdGggT3BlbkFQSSAzLjAuClRoZSBBUEkgZGVmaW5pdGlvbiBjYW4gYmUgZm91bmQgW2hlcmVdKC4vYXBpL2FwaS55YW1sKS4KCllvdSBjYW4gZ2VuZXJhdGUgYSBjbGllbnQgbGlicmFyeSBmb3IgdGhlIGxhbmd1YWdlIG9mIHlvdXIgY2hvaWNlIHVzaW5nIHRoZSAKW29wZW5hcGktZ2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKS4KCiMjIERlcGxveW1lbnQKZGlub25jZSBpcyBwYWNrYWdlZCBhcyBhIERvY2tlciBjb250YWluZXIgYW5kIHB1c2hlZCBhdXRvbWF0aWNhbGx5IHRvIApbRG9ja2VyIEh1Yl0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yZXBvc2l0b3J5L2RvY2tlci93ZWx0aGVlL2Rpbm9uY2UpLgpJZiB5b3UncmUgaW50ZXJlc3RlZCwgY2hlY2sgb3V0IHRoZSBEb2NrZXJmaWxlIHRoYXQgZ2VuZXJhdGVzIHRoZSBpbWFnZSBbaGVyZV0oLi9Eb2NrZXJmaWxlKS4KClNpbmNlIHdlIGFyZSBmYW5zIG9mIGJvdGggS3ViZXJuZXRlcyBhbmQgVGVycmFmb3JtIHdlIGhhdmUgY3JlYXRlZCBhIEhlbG0gQ2hhcnQgdG8gZWFzeSBkZXBsb3ltZW50IHRvIEt1YmVybmV0ZXMuCipUaGUgdXNlciBpcyByZXNwb25zaWJsZSB0byBjcmVhdGUgdGhlIENvbmZpZ01hcCBgZGlub25jZSBjb25maWdgKiwgd2hpY2ggc2hvdWxkIGNvbnRhaW4gYSBzaW5nbGUgYGNvbmZpZy55YW1sYCBkYXRhCmVudHJ5IGFuZCBoYXZlIHRoZSBzdHJ1Y3R1cmUgc2ltaWxhciB0byBbdGhpcyBleGFtcGxlXSguLy5jb25maWcvY29uZmlnLnlhbWwpLgoKV2UgbGlrZSB0byB0aGluZyBhYm91dCB0aGUgc2VydmljZXMgd2UgcnVuIGFzIHNlbGYtY29udGFpbmVkIFRlcnJhZm9ybSBwcm9qZWN0cyB3aXRoIGNsZWFyIGV4dGVybmFsIGRlcGVuZGVuY2llcywgCnNvIHdlJ3ZlIGNyZWF0ZWQgYSBoYW5keSBUZXJyYWZvcm0gbW9kdWxlIGRpcmVjdG9yeSB0byBoZWxwIHdpdGggZGVwbG95bWVudHMuCgpDdXJyZW50bHkgdGhlcmUgaXMganVzdCBvbmUgbW9kdWxlIHRoYXQgeW91IGNhbiB1c2UsIGNhbGxlZCBgaGVsbS1hd3MtcmRzLXBzcWxgLCB3aGljaCB3aWxsIGNyZWF0ZSBhIG1hbmFnZWQgCkFXUyBSRFMgQXVyb3JhIFBvc3RncmVTUUwgZGF0YWJhc2UsIGNyZWF0ZSBhIG5hbWVzcGFjZSBpbiBrdWJlcm5ldGVzIGFuZCBkZXBsb3kgdGhlIGFmb3JlbWVudGlvbmVkIEhlbG0gQ2hhcnQgdG8geW91ciAKY2x1c3Rlci4KClNlZSBhIHVzYWdlIFtleGFtcGxlIGhlcmVdKC4vZGVwbG95bWVudHMvdGVycmFmb3JtL2V4YW1wbGVzL2hlbG0tYXdzLXJkcy1wc3FsKS4KCiMjIEJhY2tlbmRzCipkaW5vbmNlKiBpcyBkZXNpZ25lZCB0byBzdXBwb3J0IG11bHRpcGxlIHN0b3JhZ2UgYmFja2VuZHMgYXMgbG9uZyBhcyB0aGV5IHJlc3BlY3QgdGhlIGFib3ZlIGRlc2NyaWJlZCBzZW1hbnRpY3MuCgpUaGUgaW5pdGlhbCBiYWNrZW5kIHdlIGFyZSBsYXVuY2hpbmcgaXMgUG9zdGdyZVNRTC4KSWYgeW91J2QgbGlrZSB0byBpbXBsZW1lbnQgYSBuZXcgYmFja2VuZCwgZmVlbCBmcmVlIHRvIGRvIHNvIGFuZCBvcGVuIGEgcHVsbCByZXF1ZXN0Lgo= readmeEtag: '"01dee5c171acaf189969c15b8dc8a9ab358eb2e9"' readmeLastModified: Wed, 02 Aug 2023 14:58:15 GMT repositoryId: 370347071 description: >- A blockchain nonce tracker to be used in distributed tx executors with at-least-once semantics. created: '2021-05-24T12:38:30Z' updated: '2025-08-25T14:13:25Z' language: Go archived: false stars: 9 watchers: 2 forks: 1 owner: matelang logo: https://avatars.githubusercontent.com/u/798365?v=4 license: MIT repoEtag: '"c0c96e0ce1019c64c264990450aceb7fb3de765ab1030d2d689b043fc66f3272"' repoLastModified: Mon, 25 Aug 2025 14:13:25 GMT foundInMaster: true category: - Server - Server Implementations id: 633d0faeb506fc54c7d80e636ec6ee09 oldLocations: - https://github.com/welthee/dinonce - source: openapi3 tags repository: https://github.com/theirish81/mockambo v3: true id: b458e9f0c5b8281b2d751d143f34ba29 repositoryMetadata: base64Readme: >- IyBNb2NrYW1ibwojIyBBUEkgTW9ja2luZywgcmVjb3JkaW5nIGFuZCBWYWxpZGF0aW9uCk1vY2thbWJvIGlzIGFuIEFQSSBtb2NraW5nIHNlcnZlciB0aGF0IHBhY2tzIGEgbG90IG9mIHVzZWZ1bCBmZWF0dXJlcyB0bzoKKiBnZW5lcmF0ZSBtb2NrZWQgQVBJcyBvbiB0aGUgZmx5IGJhc2VkIG9uICoqT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyoqIHdpdGhvdXQgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uCiogVmFsaWRhdGUgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBhZ2FpbnN0IHRoZSBjb250cmFjdAoqIEZha2UgZGF0YSBjb2hlcmVudGx5CiogU2NyaXB0IHRoZSBiZWhhdmlvciBvZiB0aGUgbW9ja3MgdXNpbmcgSmF2YVNjcmlwdAoqIExvYWQgZHluYW1pYyB0ZW1wbGF0ZXMgdG8gbWFrZSB0aGUgbW9ja3MgKipldmVuIG1vcmUgKmFsaXZlKioqCiogV29yayBhcyBhICoqcmV2ZXJzZSBwcm94eSoqIHJlcXVlc3QvcmVzcG9uc2UgKipyZWNvcmRlciBhbmQgcGxheWJhY2sqKgoKQWxsIHRoaXMgYnkgc2ltcGx5IGFsdGVyaW5nIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24sIGFkZGluZyB0aGUgYHgtbW9ja2FtYm9gIGV4dGVuc2lvbiBzZWN0aW9ucyB3aGVyZSBuZWNlc3NhcnkuCgpNb2NrYW1ibyBpcyBhIHBvd2VyZnVsICpTd2lzcyBBcm15IGtuaWZlKiBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpdml0aWVzOgoqIERlc2lnbiBmaXJzdCBBUEkgZGV2ZWxvcG1lbnQKKiAzcmQgcGFydHkgQVBJIGV4cGxvcmF0aW9uIGFuZCBjbGllbnQgZGV2ZWxvcG1lbnQKKiBTZXJ2aWNlIGlzb2xhdGlvbiBkdXJpbmcgZGV2ZWxvcG1lbnQgYW5kIHRlc3RpbmcKKiBDb250cmFjdCB0ZXN0aW5nIG9mIGJvdGggY2xpZW50cyBhbmQgc2VydmVycwoqIE9mZmxpbmUgZGV2ZWxvcG1lbnQKKiBDSS9DRCBwaXBlbGluZSB0ZXN0aW5nCgojIyBEb2N1bWVudGF0aW9uCkZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLCBkb2N1bWVudGF0aW9uIGFuZCBIb3dUb3MsIFtwbGVhc2UgcmVmZXIgdG8gdGhlIHByb2plY3Qgd2lraV0oaHR0cHM6Ly9naXRodWIuY29tL3RoZWlyaXNoODEvbW9ja2FtYm8vd2lraSku readmeEtag: '"bfe5206f90a294b18da059d8331619a243cd2e1c"' readmeLastModified: Sat, 27 Jul 2024 13:06:09 GMT repositoryId: 827215202 description: Dynamic API Mocking, recording and Validation created: '2024-07-11T08:07:25Z' updated: '2025-11-05T16:56:56Z' language: Go archived: false stars: 8 watchers: 3 forks: 0 owner: theirish81 logo: https://avatars.githubusercontent.com/u/10628601?v=4 license: MIT repoEtag: '"84082b938395936d05d25fbd0a7d8db7bcb3329587258bc545664a9bfc922baa"' repoLastModified: Wed, 05 Nov 2025 16:56:56 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/hslatman/caddy-openapi-validator v3: true repositoryMetadata: base64Readme: >- IyBDYWRkeSBPcGVuQVBJIFZhbGlkYXRvciAoV0lQKQoKQSBbQ2FkZHldKGh0dHBzOi8vY2FkZHlzZXJ2ZXIuY29tLykgbW9kdWxlIHRoYXQgdmFsaWRhdGVzIHJlcXVlc3RzIGFuZCByZXNwb25zZXMgYWdhaW5zdCBhbiBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgc3BlY2lmaWNhdGlvbi4KCiMjIERlc2NyaXB0aW9uCgpUaGUgT3BlbkFQSSBWYWxpZGF0b3IgbW9kdWxlIGlzIGEgW0NhZGR5XShodHRwczovL2NhZGR5c2VydmVyLmNvbS8pIEhUVFAgaGFuZGxlciB0aGF0IHZhbGlkYXRlcyByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzIGFnYWluc3QgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgpUaGUgW2tpbi1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpKSBgb3BlbmFwaTNmaWx0ZXJgIGxpYnJhcnkgcGVyZm9ybXMgdGhlIGFjdHVhbCB2YWxpZGF0aW9uLgpUaGUgaGFuZGxlciBpbiB0aGlzIHJlcG9zaXRvcnkgaXMgYSBzbWFsbCB3cmFwcGVyIGZvciB0aGUgZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBieSBgb3BlbmFwaTNmaWx0ZXJgLCB3aXRoIGJhc2ljIGNvbmZpZ3VyYXRpb24gYW5kIGludGVncmF0aW9ucyBvcHRpb25zIGZvciBDYWRkeS4gClRoZSBwcm9qZWN0IGlzIGN1cnJlbnRseSBpbiBQT0Mgc3RhZ2UsIG1lYW5pbmcgdGhhdCBtdWNoIG9mIGl0IGNhbiwgYW5kIGxpa2VseSB3aWxsLCBjaGFuZ2UuCgpUaGUgcmVxdWVzdC9yZXNwb25zZSBmbG93IGlzIGFzIGZvbGxvd3M6CgoqIFdoZW4gYSByZXF1ZXN0IGFycml2ZXMsIHRoZSBWYWxpZGF0b3Igd2lsbCBsb29rIGZvciBhIHZhbGlkIHJvdXRlIGluIHRoZSBwcm92aWRlZCBPcGVuQVBJIHNwZWNpZmljYXRpb24gYW5kIHZhbGlkYXRlIHRoZSByZXF1ZXN0IGFnYWluc3QgdGhlIHNjaGVtYS4KKiBUaGUgcmVxdWVzdCBpcyB0aGVuIHBhc3NlZCBvbiB0byB0aGUgbmV4dCBIVFRQIGhhbmRsZXIgaW4gdGhlIGNoYWluIGFuZCB0aGUgVmFsaWRhdG9yIHdpbGwgd2FpdCBmb3IgaXRzIHJlc3BvbnNlLgoqIEFmdGVyIGNhcHR1cmluZyB0aGUgcmVzcG9uc2UsIHRoZSBWYWxpZGF0b3Igd2lsbCB2YWxpZGF0ZSB0aGUgcmVzcG9uc2UgdG8gYmUgdmFsaWQuCiogSWYgbm8gZXJyb3JzIG9jY3VycmVkIGR1cmluZyB0aGUgdmFsaWRhdGlvbiwgdGhlIHJlc3BvbnNlIHdpbGwgYmUgcmV0dXJuZWQuCgojIyBVc2FnZQoKVGhlIHNpbXBsZXN0IHdheSB0byB1c2UgdGhlIE9wZW5BUEkgVmFsaWRhdG9yIEhUVFAgaGFuZGxlciBpcyBieSB1c2luZyBbeGNhZGR5XShodHRwczovL2dpdGh1Yi5jb20vY2FkZHlzZXJ2ZXIveGNhZGR5KToKCmBgYGJhc2gKJCB4Y2FkZHkgYnVpbGQgdjIuMS4xIC0td2l0aCBnaXRodWIuY29tL2hzbGF0bWFuL2NhZGR5LW9wZW5hcGktdmFsaWRhdG9yCmBgYAoKQWx0ZXJuYXRpdmVseSwgdGhlIEhUVFAgaGFuZGxlciBjYW4gYmUgaW5jbHVkZWQgYXMgYSBDYWRkeSBtb2R1bGUgYXMgZm9sbG93czoKCmBgYGdvbGFuZwppbXBvcnQgKAoJXyAiZ2l0aHViLmNvbS9oc2xhdG1hbi9jYWRkeS1vcGVuYXBpLXZhbGlkYXRvciIKKQpgYGAKCkNvbmZpZ3VyZSB0aGUgT3BlbkFQSSBWYWxpZGF0b3IgaGFuZGxlciBhcyBvbmUgb2YgdGhlIGhhbmRsZXJzIHRvIGJlIGV4ZWN1dGVkIGJ5IENhZGR5IChpbiBbSlNPTiBjb25maWddKGh0dHBzOi8vY2FkZHlzZXJ2ZXIuY29tL2RvY3MvanNvbi8pIGZvcm1hdCk6CgpgYGBqc29uCiAgICAuLi4KICAgICAgICAiaGFuZGxlIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaGFuZGxlciI6ICJvcGVuYXBpX3ZhbGlkYXRvciIsCiAgICAgICAgICAgICAgICAiZmlsZXBhdGgiOiAiZXhhbXBsZXMvcGV0c3RvcmUueWFtbCIsCiAgICAgICAgICAgICAgICAidmFsaWRhdGVfcm91dGVzIjogdHJ1ZSwKICAgICAgICAgICAgICAgICJ2YWxpZGF0ZV9yZXF1ZXN0cyI6IHRydWUsCiAgICAgICAgICAgICAgICAidmFsaWRhdGVfcmVzcG9uc2VzIjogdHJ1ZSwKICAgICAgICAgICAgICAgICJ2YWxpZGF0ZV9zZXJ2ZXJzIjogdHJ1ZSwKICAgICAgICAgICAgICAgICJ2YWxpZGF0ZV9zZWN1cml0eSI6IHRydWUsCiAgICAgICAgICAgICAgICAicGF0aF9wcmVmaXhfdG9fYmVfdHJpbW1lZCI6ICIiLAogICAgICAgICAgICAgICAgImFkZGl0aW9uYWxfc2VydmVycyI6IFsiIl0sCiAgICAgICAgICAgICAgICAiZW5mb3JjZSI6IHRydWUsCiAgICAgICAgICAgICAgICAibG9nIjogdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgXQogICAgLi4uCmBgYAoKVGhlIE9wZW5BUEkgVmFsaWRhdG9yIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgYW4gYWN0dWFsIEFQSSBpcyBjYWxsZWQuClRoZSBjb25maWd1cmF0aW9uIHNob3duIGFib3ZlIHNob3dzIHRoZSBkZWZhdWx0IHNldHRpbmdzLgpUaGUgYGZpbGVwYXRoYCBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkOyB3aXRob3V0IGl0LCBvciB3aGVuIHBvaW50aW5nIHRvIGEgbm9uLWV4aXN0aW5nIGZpbGUsIHRoZSBtb2R1bGUgd29uJ3QgYmUgbG9hZGVkLgoKIyMgRXhhbXBsZQoKQW4gZXhhbXBsZSBvZiB0aGUgT3BlbkFQSSBWYWxpZGF0b3J5IEhUVFAgaGFuZGxlciBpbiB1c2UgY2FuIGJlIGZvdW5kIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vaHNsYXRtYW4vY2FkZHktb3BlbmFwaS12YWxpZGF0b3ItZXhhbXBsZSkuCgojIyBOb3RlcwoKVGhpcyBwcm9qZWN0IGlzIGN1cnJlbnRseSBhIHNtYWxsIFBPQyB3aXRoIHRoZSBpbnRlbnRpb24gdG8gZ3JvdyBpdCBhbG9uZyB3aXRoIG15IG90aGVyIHByb2plY3RzIHVzaW5nIEdvLCBPcGVuQVBJIGFuZCBDYWRkeS4KSSBvbmx5IHJlY2VudGx5IHN0YXJ0ZWQgdXNpbmcgQ2FkZHksIHNvIHRoZXJlIG1heSBiZSBzb21lIHJvdWdoIGVkZ2VzIHRvIGlyb24gb3V0IHdoZW4gbW9yZSB1c2UgY2FzZXMgcHJlc2VudCB0aGVtc2VsdmVzLgoKIyMgVE9ETwoKQSBzbWFsbCBhbmQgaW5jb21wbGV0ZSBsaXN0IG9mIHBvdGVudGlhbCB0aGluZ3MgdG8gaW1wbGVtZW50LCBpbXByb3ZlIGFuZCB0aGluayBhYm91dDoKCiogQWRkIG1vcmUgdGVzdHMgZm9yIHRoZSBPcGVuQVBJIFZhbGlkYXRvciBmdW5jdGlvbmFsaXR5IGFuZCBjb25maWd1cmF0aW9uLgoqIEltcHJvdmUgQ2FkZHlmaWxlIGhhbmRsaW5nIChlLmcuIGFkZCBtb3JlIHN1YmRpcmVjdGl2ZXMpLgoqIEFkZCBhbiBleGFtcGxlIHRoYXQgdXNlcyBhbiBIVFRQIHByb3h5L2ZjZ2kgY29uZmlndXJhdGlvbi4KKiBMb29rIGludG8gd2F5cyB0byBzcGVjaWZ5IHRoZSBlcnJvciBuaWNlbHksIGluc3RlYWQgb2YganVzdCBsb2dnaW5nIGl0IChlLmcuIHJldHVybiBlcnJvciBtZXNzYWdlKHMpIGluIHNwZWNpZmljIGZvcm1hdCkgYW5kL29yIGludGVncmF0ZSBwcm9wZXJseSB3aXRoIGhvdyBDYWRkeSBoYW5kbGVycyBlcnJvcnMuCiogTG9vayBpbnRvIGlmIChhbmQgaG93KSB0aGUgVmFsaWRhdG9yIGNhbiBiZSB1c2VkIG91dHNpZGUgb2YgQ2FkZHkgYXMgYW4gYWx0ZXJuYXRpdmUgKGkuZS4gYSBtb3JlIGdlbmVyaWMgbWlkZGxld2FyZSkuCg== readmeEtag: '"2bd32d69864d68d5dac1de7f81b2e492e7738bc2"' readmeLastModified: Fri, 18 Aug 2023 22:04:50 GMT repositoryId: 286259419 description: >- A Caddy HTTP handler for validating requests and responses against an OpenAPI specification created: '2020-08-09T15:02:31Z' updated: '2026-01-05T01:44:16Z' language: Go archived: false stars: 9 watchers: 1 forks: 0 owner: hslatman logo: https://avatars.githubusercontent.com/u/1219780?v=4 license: Apache-2.0 repoEtag: '"1af217d1c1f77431ddc5a470b238af761a8503e066d5a2bf713c12d3223867f9"' repoLastModified: Mon, 05 Jan 2026 01:44:16 GMT foundInMaster: true category: - Data Validators - Parsers id: 1816046ae5bbe57e73f76829ba004031 - source: openapi3 tags repository: https://github.com/stackql/stackql-registry-docs v3: true id: 9f3eecc809978e3f45543f2ae1e80852 repositoryMetadata: base64Readme: >- IyBzdGFja3FsLXJlZ2lzdHJ5LWRvY3MKClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyBkb2N1bWVudGF0aW9uIGZvciBTdGFja1FMIHByb3ZpZGVycywgd2hpY2ggaXMgcHVibGlzaGVkIHRvIFtyZWdpc3RyeS5zdGFja3FsLmlvXShodHRwczovL3JlZ2lzdHJ5LnN0YWNrcWwuaW8pLiAgVGhpcyB3ZWJzaXRlIGlzIGJ1aWx0IHVzaW5nIFtEb2N1c2F1cnVzIDJdKGh0dHBzOi8vZG9jdXNhdXJ1cy5pby8pLCBhIG1vZGVybiBzdGF0aWMgd2Vic2l0ZSBnZW5lcmF0b3IuICAKCiMjIEJ1aWxkIGFuZCBEZXBsb3kgU3RhdHVzCgp8IFR5cGUgfCBTdGF0dXMgfCBMaW5rIHwKfCAtLS0gfCAtLS0gfCAtLSB8CnwgR2l0SHViIEFjdGlvbnMgQnVpbGQgfCBbIVtHaXRIdWIgQWN0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrcWwvc3RhY2txbC1yZWdpc3RyeS1kb2NzL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLWRvY3MueWFtbC9iYWRnZS5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL2dpdGh1Yi5jb20vc3RhY2txbC9zdGFja3FsLXJlZ2lzdHJ5LWRvY3MvYWN0aW9ucy93b3JrZmxvd3MvYnVpbGQtZG9jcy55YW1sKSB8IFtzdGFja3FsLXJlZ2lzdHJ5LWRvY3MvYWN0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrcWwvc3RhY2txbC1yZWdpc3RyeS1kb2NzL2FjdGlvbnMpIHwKfCBOZXRsaWZ5IERlcGxveSBCYXNlIHwgWyFbTmV0bGlmeSBTdGF0dXNdKGh0dHBzOi8vYXBpLm5ldGxpZnkuY29tL2FwaS92MS9iYWRnZXMvNzVmODM4YTktNzllYS00MWRjLTk2ZjktYTQwZGZmNTBjZmNhL2RlcGxveS1zdGF0dXMpXShodHRwczovL2FwcC5uZXRsaWZ5LmNvbS9zaXRlcy9zdGFja3FsLXJlZ2lzdHJ5LWRvY3MvZGVwbG95cykgfCBbcmVnaXN0cnkuc3RhY2txbC5pb10oaHR0cHM6Ly9yZWdpc3RyeS5zdGFja3FsLmlvKSB8CgojIyBBZGRpbmcgRG9jcyBmb3IgYSBOZXcgUHJvdmlkZXIKCkFkZGluZyBkb2NzIGZvciBhIG5ldyBwcm92aWRlciByZXF1aXJlcyBjcmVhdGluZyBhIG5ldyB3ZWIgcHJvcGVydHkgKHN1YmRvbWFpbikgYW5kIHdpbGwgZm9yY2UgYW4gdXBkYXRlIHRvIHRoZSByb290L2Jhc2Ugc2l0ZSBhbmQgYWxsIG90aGVyIHByb3ZpZGVycy4gIFRoZSBzdGVwcyBhcmU6ICAKCi0gWyBdIHVwZGF0ZSBgc2NyaXB0cy9kb2NnZW4vcHJvdmlkZXJfZGF0YS5weWAgd2l0aCBtZXRhZGF0YSBmb3IgbmV3IHByb3ZpZGVyIChub3QgYXBwbGljYWJsZSBpZiBkb2NzIGFyZSBidWlsdCBlbHNld2hlcmUpCi0gWyBdIGdlbmVyYXRlIGRvY3MgZm9yIHByb3ZpZGVyIHVzaW5nIGBjZCBzY3JpcHRzOyBzaCBkb2NnZW4uc2gge3Byb3ZpZGVyfWAgKG5vdCBhcHBsaWNhYmxlIGlmIGRvY3MgYXJlIGJ1aWx0IGVsc2V3aGVyZSkKLSBbIF0gcHVibGlzaCBkb2NzIGZvciBwcm92aWRlciB1c2luZyBgY2Qgc2NyaXB0czsgc2ggcHVibGlzaC5zaCB7cHJvdmlkZXJ9YCAobm90IGFwcGxpY2FibGUgaWYgZG9jcyBhcmUgYnVpbHQgZWxzZXdoZXJlKQotIFt4XSBhZGQgdGhlIG5ldyBwcm92aWRlciBkb2NzIHRvIGBkb2NzL3twcm92aWRlcn0tZG9jc2AgKGZvbGxvd2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlIG9mIGV4aXN0aW5nIHByb3ZpZGVycykgKGRvbmUgYXV0b21hdGljYWxseSBieSBgc2NyaXB0cy9wdWJsaXNoLnNoYCkKLSBbeF0gdXBkYXRlIGZyb250bWF0dGVyIGluIHRoZSBgaW5kZXgubWRgIGF0IHRoZSByb290IG9mIHRoZSBuZXcgcHJvdmlkZXJzIGRvY3MsIHNldCBgc2x1Z2AgdG8gYC9wcm92aWRlcnMve3Byb3ZpZGVyfWAgYW5kIGBpZGAgdG8gYHtwcm92aWRlcn0tZG9jYCAoZG9uZSBhdXRvbWF0aWNhbGx5IGJ5IGBzY3JpcHRzL2RvY2dlbi5zaGApCi0gW3hdIHVwZGF0ZSBgc3RhY2txbC1wcm92aWRlci1yZWdpc3RyeS5tZHhgIGluIHRoZSByb290IG9mIHRoZSBuZXcgcHJvdmlkZXIgdG8gYWRkIHRoZSBgY3VycmVudFByb3ZpZGVyYCBwcm9wLCBlLmcuIGA8UmVnaXN0cnlQYWdlIGN1cnJlbnRQcm92aWRlcj0ib2t0YSIgLz5gIChkb25lIGF1dG9tYXRpY2FsbHkgYnkgYHNjcmlwdHMvZG9jZ2VuLnNoYCkKLSBbIF0gY3JlYXRlIGEgbmV3IG5ldGxpZnkgc2l0ZSAoYHN0YWNrcWwte3Byb3ZpZGVyfS1kb2NzYCkgLSB1c2UgYHlhcm4gYnVpbGQ6e3Byb3ZpZGVyfWAgYXMgdGhlIGBidWlsZCBjb21tYW5kYAotIFsgXSBzdG9wIGF1dG9tYXRpYyBidWlsZHMgZm9yIHNpdGUgaW4gTmV0bGlmeQotIFsgXSBhZGQgYE5FVExJRllgIHJlY29yZCBpbiBOZXRsaWZ5IEROUyAobWFwcGluZyBge3Byb3ZpZGVyfS1kb2NzLnN0YWNrcWwuaW9gIChQcmltYXJ5IERvbWFpbikgYW5kIGB7cHJvdmlkZXJ9LnN0YWNrcWwuaW9gIChEb21haW4gQWxpYXMpIHRvIGBzdGFja3FsLXtwcm92aWRlcn0tZG9jcy5uZXRsaWZ5LmFwcGApLCBzZWxlY3QgYEZvcmNlIEhUVFBTYAotIFsgXSBhZGQgR2l0SHViIEFjdGlvbnMgc2VjcmV0IGZvciBuZXRsaWZ5IHNpdGUgaWQgLSBgTkVUTElGWV9TSVRFX0lEX3tQUk9WSURFUn1gCi0gWyBdIGFkZCB0aGUgTmV0bGlmeSBkZXBsb3kgc3RhdHVzIGJhZGdlIHRvIHRoZSB0YWJsZSBpbiB0aGlzIGBSRUFETUVgIChzZWUgYWJvdmUpCi0gWyBdIHVwZGF0ZSB0aGUgYHByb3ZpZGVyc2AgYXJyYXkgaW4gYHNpZGViYXJzLmpzYCB3aXRoIHRoZSBuZXcgcHJvdmlkZXIKLSBbIF0gdXBkYXRlIHRoZSBgcHJvdmlkZXJzYCBhcnJheSBgc3JjL2NvbmZpZ3MvcHJvdmlkZXJzLnRzYCB3aXRoIHRoZSBuZXcgcHJvdmlkZXIKLSBbIF0gdXBkYXRlIGBwYWNrYWdlLmpzb25gIHdpdGggbmV3IGBzdGFydGAgYW5kIGBidWlsZGAgc2NyaXB0cwotIFsgXSB1cGRhdGUgYGFsbFByb3ZpZGVyc2AgaW4gYGNpLXNjcmlwdHMvZ2V0LXByb3ZpZGVycy10by1kZXBsb3kuanNgIHdpdGggdGhlIG5ldyBwcm92aWRlcgotIFsgXSBhZGQgdGhlIHJvb3Qgc2l0ZSByZWRpcmVjdHMgZm9yIHByb3ZpZGVyIHZhbml0eSB1cmxzIHRvIGAuZ2l0aHViL3dvcmtmbG93cy9idWlsZC1kb2NzLnlhbWxgIHRvIHRoZSBgYWRkIHJlZGlyZWN0cyB0byByb290IHNpdGVgIHN0ZXAgb2YgdGhlIGBkZXBsb3ktdG8tbmV0bGlmeWAgam9iCgojIyBVcGRhdGluZyBFeGlzdGluZyBQcm92aWRlciBEb2NzCgpUbyB1cGRhdGUgdGhlIGRvY3MgZm9yIGFuIGV4aXN0aW5nIHByb3ZpZGVyLCBlZGl0IHRoZSBjb3JyZXNwb25kaW5nIG1hcmtkb3duIGZpbGUgb3IgZmlsZXMgaW4gdGhlIGB7cHJvdmlkZXJ9LWRvY3NgIGRpcmVjdG9yeS4gIFJhaXNlIGEgcHVsbCByZXF1ZXN0IGludG8gdGhlIGBtYWluYCBicmFuY2guICBPbmNlIG1lcmdlZCwgdGhlIHVwZGF0ZWQgZG9jcyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcHVibGlzaGVkLiAgCgojIyMgUnVubmluZyBMb2NhbGx5CgpJbnN0YWxsIHBhY2thZ2VzOiAgCgpgYGBiYXNoCnlhcm4KYGBgCgpUbyBidWlsZCBhIG1pY3Jvc2l0ZSBsb2NhbGx5LCB1c2UgYHlhcm4gYnVpbGQ6e3Byb3ZpZGVyfWAuICBGb3IgZXhhbXBsZSwgdG8gYnVpbGQgdGhlIEFXUyBtaWNyb3NpdGUgbG9jYWxseSwgcnVuOgoKYGBgCmV4cG9ydCBOT0RFX09QVElPTlM9LS1tYXhfb2xkX3NwYWNlX3NpemU9NDA5Ngp5YXJuIHJ1biBidWlsZDphd3MKYGBgCgpUbyBydW4gYSBtaWNyb3NpdGUgbG9jYWxseSwgdXNlIGB5YXJuIHN0YXJ0Ontwcm92aWRlcn1gLiAgRm9yIGV4YW1wbGUsIHRvIHJ1biB0aGUgQVdTIG1pY3Jvc2l0ZSBsb2NhbGx5LCBydW46ICAKCmBgYGJhc2gKeWFybiBzdGFydDphd3MKYGBg readmeEtag: '"20243572769d2b278acfb5b1dbec8bc9a5eaaa48"' readmeLastModified: Thu, 18 Sep 2025 17:01:24 GMT repositoryId: 566164202 description: >- StackQL provider documentation for cloud and SaaS providers available in the StackQL Provider Registry, built with Docusaurus. created: '2022-11-15T04:58:21Z' updated: '2025-09-18T17:01:28Z' language: CSS archived: false stars: 8 watchers: 3 forks: 1 owner: stackql logo: https://avatars.githubusercontent.com/u/95105302?v=4 repoEtag: '"77ab9dde95292650a48b741f201634972c8046f13c25935737ea3e0fcedcad7a"' repoLastModified: Thu, 18 Sep 2025 17:01:28 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/arno-di-loreto/supercharged-openapi v3: true repositoryMetadata: base64Readme: >- IyBTdXBlcmNoYXJnZWQgT3BlbkFQSSBTZXNzaW9uIFJlcG9zaXRvcnkgIwoKVGhpcyByZXBvc2l0b3J5IHdhcyB0aGUgb25lIEkgdXNlZCBkdXJpbmcgbXkgU3VwZXJjaGFyZ2VkIE9wZW5BUEkgc2Vzc2lvbiBkb25lIGR1cmluZyB0aGUgW01hbm5pbmcgTGl2ZSBBUEkgQ29uZmVyZW5jZV0oaHR0cHM6Ly9mcmVlY29udGVudC5tYW5uaW5nLmNvbS9saXZlbWFubmluZy1jb25mZXJlbmNlcy1hcGlzLykuCgojIFRvb2xzIHVzZWQvc2hvd24gZHVyaW5nIHRoZSBzZXNzaW9uCgotIFRoZSBzZXNzaW9uIHdhcyByZWNvcmRlZCB1c2luZyBbT0JTIFN0dWRpb10oaHR0cHM6Ly9vYnNwcm9qZWN0LmNvbSkgYW5kIGV2ZXJ5dGhpbmcgd2FzIGRvbmUgaW4gW1ZTIENvZGVdKGh0dHBzOi8vY29kZS52aXN1YWxzdHVkaW8uY29tKSAoc2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMpCi0gQXQgdGhlIGJlZ2lubmluZyBJIGRyYXcgcmFpbmJvdyBsaWtlIHJlY3RhbmdsZXMgb24gdGhlIHNjcmVlbiB1c2luZyBbU2NyZWVuQnJ1c2hdKGh0dHBzOi8vYXBwcy5hcHBsZS5jb20vdXMvYXBwL3NjcmVlbmJydXNoL2lkMTIzMzk2NTg3MT9tdD0xMikKLSBUaGUgW1JlZG9jXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvYykgYW5kIFtTd2FnZ2VyIFVJXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aSkgcmVuZGVyaW5nIG9mIE9wZW5BUEkgZG9jdW1lbnQgd2VyZSBkb25lIHRoYW5rcyB0byB0aGUgW09wZW5BUEkgKDQyIENydW5jaCkgVlMgQ29kZSBFeHRlbnNpb25dKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT00MkNydW5jaC52c2NvZGUtb3BlbmFwaSkKLSBUaGUgbW9jayBBUEkgd2FzIGdlbmVyYXRlZCB3aXRoIFtTdG9wbGlnaHQgUHJpc21dKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9wbGlnaHRpby9wcmlzbS8pIGJhc2VkIG9uIHRoZSBPcGVuQVBJIGRvY3VtZW50IGNvZGVkIGFsb25nIHRoZSBzZXNzaW9uCi0gVGhlICJ0cmVlIGxpa2UgT3BlbkFQSSBkb2N1bWVudGF0aW9uIiBzaG93biBpbiB0aGUgZW5kIGlzIG15IFtPcGVuQVBJIE1hcF0oaHR0cHM6Ly9vcGVuYXBpLW1hcC5hcGloYW5keW1hbi5pby8pCi0gVGhlIEdVSSBhbGxvd2luZyB0byBub3Qgd3JpdGUgT3BlbkFQSSBjb2RlIGJyaWVmbHkgc2hvd24gaW4gdGhlIGVuZCBpcyBbU3RvcGxpZ2h0IFN0dWRpb10oaHR0cHM6Ly9zdG9wbGlnaHQuaW8vc3R1ZGlvLykKCiMgVGhlIG1hZ2ljIGJlaGluZCB3aGF0IHlvdSd2ZSBzZWVuCgpCZWZvcmUgc3RhcnRpbmcgdG8gdGFsaywgSToKCi0gT3BlbiB0aGlzIHJlcG8gd2l0aCAgVlMgQ29kZQotIFN0YXJ0IGEgbGl2ZSBzZXJ2ZXIgbGlzdGVuaW5nIHRvIGNoYW5nZSAoaXQgcnVucyBvbiBodHRwOi8vbG9jYWxob3N0OjU1MDApCi0gUnVuIHRoZSB0YXNrICJSZXNldCBTdGVwIgotIFN0YXJ0IE9CUwoKVGhlbiB3aGlsZSBJJ20gdGFsa2luZyBhbmQgbW9kaWZ5aW5nIHRoZSBgbW90dS55YW1sYCBmaWxlLCBJIHJlZ3VsYXJseSBoaXQgPGtiZD5jdHJsPC9rYmQ+PGtiZD5tPC9rYmQ+IHRvOgoKLSBMb2FkIGEgbmV3IHZlcnNpb24gb2YgdGhlIGBtb3R1LnlhbWxgIGZpbGUKLSBDaGFuZ2UgdGhlIHRpdGxlIChPQlMgYnJvd3NlciBzb3VyY2Ugc2hvd2luZyBodHRwOi8vbG9jYWxob3N0OjU1MDAvKSBvbiB0b3Agb2YgdGhlIFZTIENvZGUgKE9CUyBkaXNwbGF5IGNhcHR1cmUgc291cmNlKQotIFVwZGF0ZSBteSB0b2RvIGxpc3QgKFNhZmFyaSBzaG93aW5nIGh0dHA6Ly9sb2NhbGhvc3Q6NTUwMC90b2RvLmh0bWwsIG5vdCBzaG93biB0byBhdHRlbmRlZXMpLgoKQWxsIHRoZSBmaWxlcyBhcmUgbG9hZGVkIGZyb20gdGhlIGBzdGVwc2Agc3ViLWZvbGRlcnMgdGhhdCBjb250YWlucyBgaW5kZXguaHRtbGAsIGB0b2RvLmh0bWxgIGFuZCBgbW90dS55YW1sYCBmaWxlcyBmb3IgZWFjaCBzdGVwLgoKQW5kIEkgaGVhdmlseSB1c2UgY29kZSBzbmlwcGV0cyB0byBhdm9pZCBsb29zaW5nIHRpbWUgdHlwaW5nIHRvbyBtdWNoLgoKIVtdKHJlYWRtZS9tYWdpYy5qcGcpCgojIFZTIENvZGUgQ29uZmlndXJhdGlvbgoKIyMgV2FybmluZwoKTm90ZSB0aGF0IGFsbCB0aGlzIGhhcyBiZWVuIGRvbmUgaW4gYSBydXNoLCBpdCBjb3VsZCBjZXJ0YWlubHkgYmUgYmV0dGVyIGRvbmUgYW5kIG9wdGltaXplZCwgYnV0IGl0IHdvcmtlZCDwn5iFLiBUaGUgaGFyZCBjb2RlZCBzdGVwcyBmb2xkZXIgYW5kIGh0bWwgZmlsZXMgd2VyZSBhIHBhaW4gdG8gbW9kaWZ5IChJIGhhZCB0byByZW1vdmUgc29tZSBzdGVwcyB0byBzaG9ydGVuIHRoZSBzZXNzaW9uJ3MgbGVuZ3RoKSBhbmQgdGhlIGJhc2ggc2NyaXB0aW5nIGluIGZ1bGwgb2YgY29weS9wYXN0ZS4KCiMjIFZTIENvZGUgRXh0ZW5zaW9ucwoKLSBbTGl2ZSBTZXJ2ZXJdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1yaXR3aWNrZGV5LkxpdmVTZXJ2ZXIpOiBUbyBzZXJ2ZSB0aGUgaW5kZXggYW5kIHRvZG8gZmlsZSBhbmQgbWFnaWNhbGx5IHJlbG9hZCB0aGVtIHdoZW4gdGhleSBhcmUgbW9kaWZpZWQgYnkgbmV4dCwgcHJldmlvdXMsIHJlc2V0IG91IHJlbG9hZCBzY3JpcHRzCi0gW1N5bnRod2F2ZSB4IEZsdW9yb21hY2hpbmVdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT13ZWJyZW5kZXIuc3ludGh3YXZlLXgtZmx1b3JvbWFjaGluZSk6IFRoZSBzaGlueS1uZW9uIFZTIENvZGUgdGhlbWUgdXNlZCBkdXJpbmcgdGhlIHNlc3Npb24gKEkgYWxzbyByZXVzZWQgdGhpcyB0aGVtZSdzIENTUyBmb3IgdGhlIEhUTUwgaW5kZXggYW5kIHRvZG8gZmlsZXMpLiBUaGlzIHRoZW1lIGlzIHN1cHBvc2VkIHRvIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5IHRoYW5rcyB0byB0aGUgYC52c2NvZGUvc2V0dGluZ3MuanNvbmAgY29uZmlndXJhdGlvbiBmaWxlLgotIFtDdXN0b20gQ1NTIGFuZCBKUyBMb2FkZXJdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1iZTVpbnZpcy52c2NvZGUtY3VzdG9tLWNzcyk6IE5lZWRlZCBieSBTeW50aHdhdmUgeCBGbHVvcm9tYWNoaW5lIHRoZW1lCgojIyBTaGVsbCBzY3JpcHRzIGFuZCBWUyBDb2RlIFRhc2tzCgpUaGUgYC52c2NvZGUvdGFza3MuanNvbmAgZmlsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgYWN0aW9ucyAoYWxsIHJlbHlpbmcgYW5kIHNoZWxsIHNjcmlwdHMgbG9jYXRlZCBpbiBgc3RlcHNgKToKCnwgVGFzayAgICAgICAgICB8IFNjcmlwdCB0cmlnZ2VyZWQgICAgfCBEZXNjcmlwdGlvbgp8IC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tCnwgR28gdG8gc3RlcCAgICB8IGBzdGVwcy9nby5zaCAkc3RlcGAgfCBDb3B5IGBzdGVwcy9zdGVwLXskc3RlcH1gIGNvbnRlbnQgdG8gcm9vdCBsZXZlbCAoZG9lcyBub3RoaW5nIGlmIHN0ZXAgZG9lc24ndCBleGlzdCkuIFRoZSBgJHN0ZXBgIGNhbiBiZSBlaXRoZXIgYSBudW1iZXIgb3IgdGhlIHN0ZXAncyBuYW1lIGNvbWluZyBmcm9tIHRoZSB0b2RvLmh0bWwgZmlsZXMsIGAiTW9yZSBhY2N1cmF0ZSBkYXRhIGRlc2NyaXB0aW9uICg0LzE1KSJgIGZvciBpbnN0YW5jZS4gVGhlIHRhc2tzIHNob3dzIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBzdGVwcyAoaGFyZGNvZGVkIGluIGB0YXNrcy5qc29uYCBmaWxlKQp8IE5leHQgc3RlcCAgICAgfCBgc3RlcHMvbmV4dC5zaGAgICAgIHwgQ29weSBgc3RlcHMvc3RlcC17Y3VycmVudCBzdGVwICsgMX1gIGNvbnRlbnQgdG8gcm9vdCBsZXZlbCAoZG9lcyBub3RoaW5nIGlmIHN0ZXAgZG9lc24ndCBleGlzdCkKfCBQcmV2aW91cyBzdGVwIHwgYHN0ZXBzL3ByZXZpb3VzLnNoYCB8IENvcHkgYHN0ZXBzL3N0ZXAte2N1cnJlbnQgc3RlcCAtIDF9YCBjb250ZW50IHRvIHJvb3QgbGV2ZWwgKGRvZXMgbm90aGluZyBpZiBzdGVwIGRvZXNuJ3QgZXhpc3QpCnwgUmVsb2FkIHN0ZXAgICB8IGBzdGVwcy9yZWxvYWQuc2hgICAgfCBDb3B5IGBzdGVwcy9zdGVwLXtjdXJyZW50IHN0ZXB9YCBjb250ZW50IHRvIHJvb3QgbGV2ZWwgKHVzZWZ1bCB0byBjaGVjayBtb2RpZmljYXRpb25zIGRvbmUgb24gY3VycmVudCBzdGVwKQp8IFJlc2V0IHN0ZXAgICAgfCBgc3RlcHMvcmVzZXQuc2hgICAgIHwgQ29weSBgc3RlcHMvcmVzZXRgIGNvbnRlbnQgdG8gcm9vdCBsZXZlbCAodG8gcmVzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmcpCnwgQ2xlYW4gYmVmb3JlIGNvbW1pdCB8IGBzdGVwcy9jbGVhbi5zaGAgfCBSZW1vdmUgYGluZGV4LmNzc2AsIGBpbmRleC5odG1sYCwgYHRvZG8uaHRtbGAsIGBtb3R1LnlhbWxgIGZpbGVzIGZyb20gcm9vdCBmb2xkZXIKClRoZSAiY3VycmVudCBzdGVwIiBpcyB0cmFja2VkIGluIHRoZSBgc3RlcHMvY3VycmVudC50eHRgIGZpbGUgKGl0IGlzIGNyZWF0ZWQgaWYgaXQgZG9lc24ndCBleGlzdCkuCgpPcGVuIFZTIGNvbW1hbmQgcGFsZXR0ZSB3aXRoIDxrYmQ+4oyYPC9rYmQ+PGtiZD7ih6c8L2tiZD48a2JkPlA8L2tiZD4gKE1hY09zKSBvciA8a2JkPmN0cmw8L2tiZD48a2JkPuKHpzwva2JkPjxrYmQ+UDwva2JkPiAoV2luZG93cykgYW5kIGNob29zZSBgVGFza3M6IFJ1biB0YXNrYCwgdGhlbiBjaG9vc2UgdGhlIG9uZSB5b3UgbmVlZC4KCiMjIFZTIENvZGUgS2V5Ym9hcmQgc2hvcnRjdXRzCgpUYXNrcyBjYW4gYmUgYmluZCB0byBrZXlib2FyZCBzaG9ydGN1dHMuCk5vdGUgdGhhdCBhcyBpbiBWUyBDb2RlLCBrZXlib2FyZCBzaG9ydGN1dHMgY2FuIG9ubHkgYmUgZGVmaW5lZCBnbG9iYWxseSwgdGhlIGAudnNjb2RlL2tleWJpbmRpbmdzLmpzb25gIGZpbGUgY29udGVudCBzaG91bGQgYmUgY29waWVkIHRoZSBnbG9iYWwgY29uZmlndXJhdGlvbiAoc2hvdyBpdCB3aXRoICkuClRvIHNob3cgc2hvcnRjdXRzIGNvbmZpZ3VyYXRpb24gdXNlIDxrYmQ+4oyYPC9rYmQ+PGtiZD5LPC9rYmQ+PGtiZD7ijJg8L2tiZD48a2JkPlM8L2tiZD4gKE1hY09zKSBvciA8a2JkPmN0cmw8L2tiZD48a2JkPks8L2tiZD48a2JkPmN0cmw8L2tiZD48a2JkPlM8L2tiZD4gKFdpbmRvd3MpLCB0aGVuIGNsaWNrIG9uIHRoZSBmaWxlIGljb24gb24gdG9wIHJpZ2h0IGNvcm5lciB0byBzZWUgdGhlIGpzb24gY29udGVudCBvZiB0aGlzIGNvbmZpZ3VyYXRpb24uCgp8IEtleSBiaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGFzayB0cmlnZ2VyZWQgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tfAp8IDxrYmQ+Y3RybDwva2JkPjxrYmQ+bTwva2JkPiAgICAgICAgICAgICAgIHwgTmV4dCBzdGVwICAgICAgfAp8IDxrYmQ+Y3RybDwva2JkPjxrYmQ+YWx0PC9rYmQ+PGtiZD5tPC9rYmQ+IHwgUHJldmlvdXMgc3RlcCAgfAoKIyMgVlMgQ29kZSBTbmlwcGV0cwoKSW4gb3JkZXIgdG8gYXZvaWQgbG9vc2luZyB0aW1lIHR5cGluZyB0b28gbXVjaCwgSSB1c2VkIGN1c3RvbSBtYWRlIHNuaXBwZXRzLgpUaGV5J3JlIGRlZmluZWQgaW4gYC52c2NvZGUvc3VwZXJjaGFyZ2VkLW9wZW5hcGkuY29kZS1zbmlwcGV0c2AuCgojIyBWUyBDb2RlIFdpbmRvdyBUaXRsZQoKVGhlIGAudnNjb2RlL3NldHRpbmdzLmpzb25gIHNldHMgdGhlIFZTIENvZGUgd2luZG93IHRpdGxlIHRvICJTdXBlcmNoYXJnZWQgT3BlbkFQSSIuCkkgZGlkIHRoYXQgdG8ga2VlcCBPQlMgZGlzcGxheSBjYXB0dXJlIGNyb3AgY29uZmlndXJhdGlvbiBzaW1wbGUgKGZvY3VzIG9uIGEgc3BlY2lmaWMgd2luZG93IGJhc2VkIG9uIGl0cyB0aXRsZSk= readmeEtag: '"699c51bd1d886e2b4a49e0a981a75b55b7d47fad"' readmeLastModified: Sat, 31 Jul 2021 15:03:00 GMT repositoryId: 388798843 description: >- This repository was the one I used during my Supercharged OpenAPI session done during the Manning Live API Conference. created: '2021-07-23T12:45:37Z' updated: '2022-12-09T23:32:32Z' language: HTML archived: false stars: 8 watchers: 1 forks: 0 owner: arno-di-loreto logo: https://avatars.githubusercontent.com/u/10104551?v=4 repoEtag: '"e97606745020b5271e39d84f1fc19b6be74ea0a50d9ff4394070d5d3e5037756"' repoLastModified: Fri, 09 Dec 2022 23:32:32 GMT foundInMaster: true category: Documentation id: 86a4db4ff05d1111bb32af59b722ef15 - source: openapi3 tags repository: https://github.com/unionj-cloud/unionj-generator v3: true repositoryMetadata: base64Readme: >- IyB1bmlvbmotZ2VuZXJhdG9yClVuaW9uai1nZW5lcmF0b3IgaXMgYSBjb2xsZWN0aW9uIG9mIGNvZGUgZ2VuZXJhdG9ycyBmb3Igc3ByaW5nIGJvb3QgYXBwbGljYXRpb25zIHdpdGggYSBidWlsdC1pbiBSRVNUZnVsIGFwaSBkZXNpZ24gdG9vbChEU0wpIGNvbXBhdGlibGUgd2l0aApbT3BlbkFQSSAzLjAuMCBzcGVjaWZpY2F0aW9uXShodHRwOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMykuCgpJbmNsdWRpbmfvvJoKLSBiYWNrZW5kOiBVc2luZyBkc2wgb3IgT3BlbkFQSSAzLjAganNvbiBkb2MgdG8gZ2VuZXJhdGUgdm8sIHByb3RvLCBjb250cm9sbGVyLCBzZXJ2aWNlIGFuZCBmZWlnbiBtb2R1bGVzIGZvciBzcHJpbmcgYm9vdCBiYWNrZW5kCi0gb3BlbmFwaTogZHNsIGltcGxlbWVudGluZyBbT3BlbkFQSSAzLjAuMCBzcGVjaWZpY2F0aW9uXShodHRwOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMykKLSB1aTogT3BlbkFQSTMgZG9jdW1lbnRhdGlvbiB3ZWIgVUkKLSBtYXZlbiBwbHVnaW46IG1hdmVuIGNvbW1hbmQgbGluZSBjb21tYW5kIHRvIGdlbmVyYXRlIGJhY2tlbmQgY29kZQoKPCEtLSBTVEFSVCBkb2N0b2MgZ2VuZXJhdGVkIFRPQyBwbGVhc2Uga2VlcCBjb21tZW50IGhlcmUgdG8gYWxsb3cgYXV0byB1cGRhdGUgLS0+CjwhLS0gRE9OJ1QgRURJVCBUSElTIFNFQ1RJT04sIElOU1RFQUQgUkUtUlVOIGRvY3RvYyBUTyBVUERBVEUgLS0+CiMjIyBUT0MKCi0gW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKLSBbT3BlbkFQSTMgV2ViIFVJIFNjcmVlbnNob3RdKCNvcGVuYXBpMy13ZWItdWktc2NyZWVuc2hvdCkKLSBbVXNhZ2VdKCN1c2FnZSkKICAtIFtEZW1vIHByb2plY3RdKCNkZW1vLXByb2plY3QpCiAgLSBbUmVjb21tZW5kIHByb2plY3Qgc3RydWN0dXJlXSgjcmVjb21tZW5kLXByb2plY3Qtc3RydWN0dXJlKQogIC0gW0RTTF0oI2RzbCkKICAgIC0gW1NjaGVtYV0oI3NjaGVtYSkKICAgICAgLSBbRXhhbXBsZV0oI2V4YW1wbGUpCiAgICAgIC0gW1NjaGVtYUhlbHBlcl0oI3NjaGVtYWhlbHBlcikKICAgICAgLSBbR2VuZXJpY10oI2dlbmVyaWMpCiAgICAgICAgLSBbU3ludGF4XSgjc3ludGF4KQogICAgLSBbUGF0aF0oI3BhdGgpCiAgICAgIC0gW0V4YW1wbGVdKCNleGFtcGxlLTEpCiAgLSBbQmFja2VuZF0oI2JhY2tlbmQpCiAgICAtIFtFeGFtcGxlXSgjZXhhbXBsZS0yKQotIFtNdXN0IEtub3ddKCNtdXN0LWtub3cpCi0gW1R1dG9yaWFsc10oI3R1dG9yaWFscykKLSBbVE9ET10oI3RvZG8pCi0gW1Npc3RlciBQcm9qZWN0XSgjc2lzdGVyLXByb2plY3QpCi0gW0NvbW11bml0eV0oI2NvbW11bml0eSkKCjwhLS0gRU5EIGRvY3RvYyBnZW5lcmF0ZWQgVE9DIHBsZWFzZSBrZWVwIGNvbW1lbnQgaGVyZSB0byBhbGxvdyBhdXRvIHVwZGF0ZSAtLT4KCiMgSW5zdGFsbGF0aW9uCgpgYGB4bWwKPGRlcGVuZGVuY2llcz4KICA8ZGVwZW5kZW5jeT4KICAgICA8Z3JvdXBJZD5pby5naXRodWIudW5pb25qLWNsb3VkPC9ncm91cElkPgogICAgIDxhcnRpZmFjdElkPnVuaW9uai1nZW5lcmF0b3ItYmFja2VuZDwvYXJ0aWZhY3RJZD4KICAgICA8dmVyc2lvbj4xLjYuNzwvdmVyc2lvbj4KICA8L2RlcGVuZGVuY3k+CiAgPGRlcGVuZGVuY3k+CiAgICAgPGdyb3VwSWQ+aW8uZ2l0aHViLnVuaW9uai1jbG91ZDwvZ3JvdXBJZD4KICAgICA8YXJ0aWZhY3RJZD51bmlvbmotZ2VuZXJhdG9yLW9wZW5hcGk8L2FydGlmYWN0SWQ+CiAgICAgPHZlcnNpb24+MS42Ljc8L3ZlcnNpb24+CiAgPC9kZXBlbmRlbmN5PgogIDxkZXBlbmRlbmN5PgogICAgIDxncm91cElkPmlvLmdpdGh1Yi51bmlvbmotY2xvdWQ8L2dyb3VwSWQ+CiAgICAgPGFydGlmYWN0SWQ+dW5pb25qLWdlbmVyYXRvci11aTwvYXJ0aWZhY3RJZD4KICAgICA8dmVyc2lvbj4xLjYuNzwvdmVyc2lvbj4KICA8L2RlcGVuZGVuY3k+CjwvZGVwZW5kZW5jaWVzPgpgYGAKCmBgYHhtbAo8YnVpbGQ+CiAgPHBsdWdpbnM+CiAgICA8cGx1Z2luPgogICAgICA8Z3JvdXBJZD5pby5naXRodWIudW5pb25qLWNsb3VkPC9ncm91cElkPgogICAgICA8YXJ0aWZhY3RJZD51bmlvbmotZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbjwvYXJ0aWZhY3RJZD4KICAgICAgPHZlcnNpb24+MS42Ljc8L3ZlcnNpb24+CiAgICAgIDxpbmhlcml0ZWQ+ZmFsc2U8L2luaGVyaXRlZD4KICAgICAgPGV4ZWN1dGlvbnM+CiAgICAgICAgPGV4ZWN1dGlvbj4KICAgICAgICAgIDxpZD5wZXRTdG9yZTwvaWQ+CiAgICAgICAgICA8Z29hbHM+CiAgICAgICAgICAgIDxnb2FsPmNvZGVnZW48L2dvYWw+CiAgICAgICAgICA8L2dvYWxzPgogICAgICAgICAgPGluaGVyaXRlZD5mYWxzZTwvaW5oZXJpdGVkPgogICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CiAgICAgICAgICAgIDxkb2NVcmw+aHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uPC9kb2NVcmw+CiAgICAgICAgICAgIDxmZWlnblBrZz5pby5naXRodWIudW5pb25qLWNsb3VkLmZlaWduPC9mZWlnblBrZz4KICAgICAgICAgICAgPGZlaWduRGlyPiR7cHJvamVjdC5iYXNlZGlyfS9jbG91ZC1wZXRTdG9yZS1mZWlnbjwvZmVpZ25EaXI+CiAgICAgICAgICAgIDx2b1BrZz5pby5naXRodWIudW5pb25qLWNsb3VkLnZvPC92b1BrZz4KICAgICAgICAgICAgPHZvRGlyPiR7cHJvamVjdC5iYXNlZGlyfS9jbG91ZC1wZXRTdG9yZS12bzwvdm9EaXI+CiAgICAgICAgICAgIDxwYWNrYWdlcz4KICAgICAgICAgICAgICA8cGFja2FnZT5GRUlHTjwvcGFja2FnZT4KICAgICAgICAgICAgICA8cGFja2FnZT5WTzwvcGFja2FnZT4KICAgICAgICAgICAgPC9wYWNrYWdlcz4KICAgICAgICAgICAgPHNlcnZpY2VJZD5jbG91ZC1wZXRTdG9yZTwvc2VydmljZUlkPgogICAgICAgICAgICA8c2VydmljZUJhc2VVcmxLZXk+cGV0U3RvcmUuYmFzZVVybDwvc2VydmljZUJhc2VVcmxLZXk+CiAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CiAgICAgICAgPC9leGVjdXRpb24+CiAgICAgIDwvZXhlY3V0aW9ucz4KICAgICAgPGNvbmZpZ3VyYXRpb24+CiAgICAgICAgPHBhcmVudEdyb3VwSWQ+aW8uZ2l0aHViLnVuaW9uai1jbG91ZDwvcGFyZW50R3JvdXBJZD4KICAgICAgICA8cGFyZW50QXJ0aWZhY3RJZD5jbG91ZC11bmlvbmo8L3BhcmVudEFydGlmYWN0SWQ+CiAgICAgICAgPHBhcmVudFZlcnNpb24+MS4wLjAtU05BUFNIT1Q8L3BhcmVudFZlcnNpb24+CiAgICAgIDwvY29uZmlndXJhdGlvbj4KICAgIDwvcGx1Z2luPgogIDwvcGx1Z2lucz4KPC9idWlsZD4KYGBgCgojIE9wZW5BUEkzIFdlYiBVSSBTY3JlZW5zaG90CiFbd2ViLXVpLnBuZ10od2ViLXVpLnBuZykKCiMgVXNhZ2UKCiMjIERlbW8gcHJvamVjdAoKSXQncyBhIHNpbXBsZSB0eXBlc2NyaXB0IGh0dHAgY2xpZW50IGNvZGUgZG93bmxvYWQgcmVzdGZ1bCBzZXJ2aWNlIHByb2plY3QuIFVwbG9hZCBPcGVuQVBJMyBzcGVjIGpzb24gZmlsZSwgZG93bmxvYWQgdHMgY29kZS4KSXQncyB1c2VkIGluIG91ciBjb21wYW55IHByb2plY3QuCgpSZXBvOiBodHRwczovL2dpdGh1Yi5jb20vdW5pb25qLWNsb3VkL29wZW5hcGktc3ZjCgpTY3JlZW5zaG90OgohW3NjcmVlbnNob3QucG5nXShzY3JlZW5zaG90LnBuZykKCiMjIFJlY29tbWVuZCBwcm9qZWN0IHN0cnVjdHVyZQoKUmVwbzogaHR0cHM6Ly9naXRodWIuY29tL3VuaW9uai1jbG91ZC91bmlvbmotZ2VuZXJhdG9yLWd1aWRlCgohW2RlbW9dKC4vZGVtby5wbmcpCgojIyBEU0wKCiMjIyBTY2hlbWEKCiMjIyMgRXhhbXBsZQoKYGBgamF2YQppbXBvcnQgc3RhdGljIGNsb3VkLnVuaW9uai5nZW5lcmF0b3IuT3BlbkFQSTMuZHNsLlNjaGVtYS5zY2hlbWE7CmltcG9ydCBzdGF0aWMgY2xvdWQudW5pb25qLmdlbmVyYXRvci5PcGVuQVBJMy5kc2wuU2NoZW1hSGVscGVyLio7CgpwdWJsaWMgY2xhc3MgQ29tcG9uZW50cyB7CgogIHByaXZhdGUgc3RhdGljIFNjaGVtYSBzaXplUHJvcGVydHkgPSBpbnQzMigi5q+P6aG15p2h5pWw77yM6buY6K6kMTDvvIzkvKAtMeafpeWHuuWFqOmDqOaVsOaNriIpOwoKICBwcml2YXRlIHN0YXRpYyBTY2hlbWEgY3VycmVudFByb3BlcnR5ID0gaW50MzIoIuW9k+WJjemhte+8jOS7jjHlvIDlp4siKTsKCiAgcHJpdmF0ZSBzdGF0aWMgU2NoZW1hIG9mZnNldFByb3BlcnR5ID0gaW50MzIoIuWBj+enu+mHjyIpOwoKICBwcml2YXRlIHN0YXRpYyBTY2hlbWEgc29ydFByb3BlcnR5ID0gc3RyaW5nKCLmjpLluo/mnaHku7blrZfnrKbkuLLvvJrmjpLluo/lrZfmrrXliY3kvb/nlKgnLSco6ZmN5bqPKeWSjCcrJyjljYfluo8p5Y+36KGo56S65o6S5bqP6KeE5YiZ77yM5aSa5Liq5o6S5bqP5a2X5q6155SoJywn6ZqU5byAIiwKICAgICAgIitpZCwtY3JlYXRlX2F0Iik7CgogIHByaXZhdGUgc3RhdGljIFNjaGVtYSBwYWdlUHJvcGVydHkgPSBpbnQzMigi5b2T5YmN6aG177yM5LuOMeW8gOWniyIpOwoKICBwcml2YXRlIHN0YXRpYyBTY2hlbWEgbGltaXRQcm9wZXJ0eSA9IGludDMyKCLmr4/pobXmnaHmlbDvvIzpu5jorqQxMCwg5LygLTHmn6Xlh7rlhajpg6jmlbDmja4iLCAxMCk7CgogIHByaXZhdGUgc3RhdGljIFNjaGVtYSBtYXhQYWdlUHJvcGVydHkgPSBpbnQzMigi5a+85Ye657uT5p2f6aG1Iik7CgogIHByaXZhdGUgc3RhdGljIFNjaGVtYSB0b3RhbFByb3BlcnR5ID0gaW50NjQoIuaAu+aVsO+8jOWFpeWPguS8oOWFpeatpOWPguaVsOWImeS4jeWGjeafpeivomNvdW5077yM5Lul5q2kdG90YWzkuLrlh4YiKTsKCiAgcHJpdmF0ZSBzdGF0aWMgU2NoZW1hIHRvcFN0YXR1c1Byb3BlcnR5ID0gaW50MzIoIumcgOimgeaOkuWcqOWJjeeahOeKtuaAgSIpOwogIAogIHB1YmxpYyBzdGF0aWMgU2NoZW1hIFBhZ2VSZXN1bHRWTyA9IHNjaGVtYShzYiAtPiB7CiAgICAvLyBTY2hlbWEgdHlwZS4gUmVxdWlyZWQuCiAgICBzYi50eXBlKCJvYmplY3QiKTsKICAgIC8vIFNjaGVtYSB0aXRsZS4gUmVxdWlyZWQuIE90aGVyd2lzZSB0aGUgZ2VuZXJhdG9yIHRvb2wgd29uJ3Qga25vdyBpdC4KICAgIHNiLnRpdGxlKCJQYWdlUmVzdWx0Vk8iKTsKICAgIC8vIEdlbmVyaWMgYXMgTGlzdDxUPgogICAgc2IucHJvcGVydGllcygiaXRlbXMiLCBMaXN0VCk7CiAgICBzYi5wcm9wZXJ0aWVzKCJ0b3RhbCIsIHRvdGFsUHJvcGVydHkpOwogICAgc2IucHJvcGVydGllcygic2l6ZSIsIHNpemVQcm9wZXJ0eSk7CiAgICBzYi5wcm9wZXJ0aWVzKCJjdXJyZW50IiwgY3VycmVudFByb3BlcnR5KTsKICAgIHNiLnByb3BlcnRpZXMoInNlYXJjaENvdW50IiwgYm9vbCk7CiAgICBzYi5wcm9wZXJ0aWVzKCJwYWdlcyIsIGludDMyKCLlvZPliY3liIbpobXmgLvpobXmlbAiKSk7CiAgICBzYi5wcm9wZXJ0aWVzKCJvZmZzZXQiLCBvZmZzZXRQcm9wZXJ0eSk7CiAgfSk7CiAgCiAgcHVibGljIHN0YXRpYyBTY2hlbWEgUmFua1ZPID0gc2NoZW1hKHNiIC0+IHsKICAgIHNiLnR5cGUoIm9iamVjdCIpOwogICAgc2IudGl0bGUoIlJhbmtWTyIpOwogICAgc2IuZGVzY3JpcHRpb24oIuaOkuihjOamnCIpOwogICAgc2IucHJvcGVydGllcygic2VyaWFsTm8iLCBpbnQzMik7CiAgICBzYi5wcm9wZXJ0aWVzKCJuYW1lIiwgc3RyaW5nKTsKICAgIHNiLnByb3BlcnRpZXMoImluY29tZSIsIGRvdWJsZU51bWVyKCLntK/orqHmlLblhaUiKSk7CiAgICBzYi5wcm9wZXJ0aWVzKCJxdWFudGl0eSIsIGludDMyKCLlrozmiJDku7vliqHmlbDph48iKSk7CiAgfSk7CiAgCiAgcHVibGljIHN0YXRpYyBTY2hlbWEgUGFnZVJlc3VsdFZPSm9iVk8gPSBnZW5lcmljKGdiIC0+IHsKICAgIGdiLmdlbmVyaWMoUGFnZVJlc3VsdFZPLCByZWYoUmFua1ZPLmdldFRpdGxlKCkpKTsKICB9KTsKfQoKYGBgCgoKCiMjIyMgU2NoZW1hSGVscGVyCgpUaGVyZSBhcmUgc29tZSBidWlsdC1pbiBzY2hlbWFzIGluIGNsb3VkLnVuaW9uai5nZW5lcmF0b3IuT3BlbkFQSTMuZHNsLlNjaGVtYUhlbHBlci4KCnwgVHlwZSAgICAgICAgICB8IEphdmEgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IGludDMyICAgICAgICAgfCBJbnRlZ2VyICAgICAgICAgICAgICB8CnwgaW50NjQgICAgICAgICB8IExvbmcgICAgICAgICAgICAgICAgIHwKfCBzdHJpbmcgICAgICAgIHwgU3RyaW5nICAgICAgICAgICAgICAgfAp8IGJvb2wgICAgICAgICAgfCBCb29sZWFuICAgICAgICAgICAgICB8CnwgZmxvYXROdW1iZXIgICB8IEZsb2F0ICAgICAgICAgICAgICAgIHwKfCBkb3VibGVOdW1lciAgIHwgRG91YmxlICAgICAgICAgICAgICAgfAp8IGRhdGVUaW1lICAgICAgfCBqYXZhLnV0aWwuRGF0ZSAgICAgICB8CnwgVCAgICAgICAgICAgICB8IDxUPiAgICAgICAgICAgICAgICAgIHwKfCBMaXN0VCAgICAgICAgIHwgTGlzdDxUPiAgICAgICAgICAgICAgfAp8IFNldFQgICAgICAgICAgfCBTZXQ8VD4gICAgICAgICAgICAgICB8Cnwgc3RyaW5nQXJyYXkgICB8IExpc3Q8U3RyaW5nPiAgICAgICAgIHwKfCBpbnQzMkFycmF5ICAgIHwgTGlzdDxJbnRlZ2VyPiAgICAgICAgfAp8IGludDY0QXJyYXkgICAgfCBMaXN0PExvbmc+ICAgICAgICAgICB8CnwgZmxvYXRBcnJheSAgICB8IExpc3Q8RmxvYXQ+ICAgICAgICAgIHwKfCBkb3VibGVBcnJheSAgIHwgTGlzdDxEb3VibGU+ICAgICAgICAgfAp8IGJvb2xBcnJheSAgICAgfCBMaXN0PEJvb2xlYW4+ICAgICAgICB8CnwgZGF0ZVRpbWVBcnJheSB8IExpc3Q8amF2YS51dGlsLkRhdGU+IHwKfCBlbnVtcyAgICAgICAgIHwgZW51bSAgICAgICAgICAgICAgICAgfAp8IHJlZiAgICAgICAgICAgfCBPYmplY3QgICAgICAgICAgICAgICB8CnwgcmVmQXJyYXkgICAgICB8IExpc3Q8T2JqZWN0PiAgICAgICAgIHwKCgoKIyMjIyBHZW5lcmljCgojIyMjIyBTeW50YXgKCmBgYGphdmEKLy8gUGFnZVJlc3VsdFZPIG11c3QgaGFzIGFuZCBvbmx5IGhhcyBvbmUgVCBsaWtlIGZpZWxkLCBlLmcuIFQsIExpc3Q8VD4sIFNldDxUPgovLyBJdCB3aWxsIGJlIHJlcHJlc2VudGVkIGFzIFBhZ2VSZXN1bHRWTzxSYW5rVk8+CnB1YmxpYyBzdGF0aWMgU2NoZW1hIFBhZ2VSZXN1bHRWT0pvYlZPID0gZ2VuZXJpYyhnYiAtPiB7CiAgZ2IuZ2VuZXJpYyhQYWdlUmVzdWx0Vk8sIHJlZihSYW5rVk8uZ2V0VGl0bGUoKSkpOwp9KTsKYGBgCgoKCiMjIyBQYXRoCgojIyMjIEV4YW1wbGUKCmBgYGphdmEKaW1wb3J0IHN0YXRpYyBjbG91ZC51bmlvbmouZ2VuZXJhdG9yLk9wZW5BUEkzLlBhdGhIZWxwZXIuKjsKCkBUZXN0CnB1YmxpYyB2b2lkIFRlc3RQYXRoKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKICBPcGVuQVBJMyBPcGVuQVBJMyA9IE9wZW5BUEkzKG9iIC0+IHsKICAgIGluZm8oaWIgLT4gewogICAgICBpYi50aXRsZSgidGl0bGUiKTsKICAgICAgaWIudmVyc2lvbigidjEuMC4wIik7CiAgICB9KTsKCiAgICBzZXJ2ZXIoc2IgLT4gewogICAgICBzYi51cmwoImh0dHA6Ly91bmlvbmouY2xvdWQiKTsKICAgIH0pOwoKICAgIC8vIFN1cHBvcnQgR0VULCBQT1NULCBQVVQsIERFTEVURSBvbmx5LgogICAgcG9zdCgiL2hhbGwvb25saW5lU3VydmV5L2xpc3QiLCBQYXRoQ29uZmlnLmJ1aWxkZXIoKQogICAgICAgICAuc3VtbWFyeSgic3VtbWFyeSIpCiAgICAgICAgIC50YWdzKG5ldyBTdHJpbmdbXXsidGFnMSIsICJ0YWcyIn0pCiAgICAgICAgIC5yZXFTY2hlbWEoU2VhcmNoSm9iUGFnZVJlc3VsdCkKICAgICAgICAgLnJlc3BTY2hlbWEoU2VhcmNoSm9iUGFnZVJlc3VsdCkKICAgICAgICAgLmJ1aWxkKCkpOwoKICAgIHBvc3QoIi9oYWxsL29mZmxpbmVTdXJ2ZXkvdXBkYXRlIiwgUGF0aENvbmZpZy5idWlsZGVyKCkKICAgICAgICAgLnN1bW1hcnkoInN1bW1hcnkiKQogICAgICAgICAvLyBTZWNvbmQgdGFnIHdpbGwgYmUgdXNlZCBhcyBQcm90byBvciB0eXBlc2NyaXB0IFNlcnZpY2UgbmFtZQogICAgICAgICAvLyBJZiB0aGVyZSB3YXMgb25seSBvbmUgdGFnLCB0aGUgUHJvdG8gb3IgdHlwZXNjcmlwdCBTZXJ2aWNlIG5hbWUgd2lsbCBiZSBmaXJzdCBwYXJ0IG9mIGVuZHBvaW50CiAgICAgICAgIC8vIGUuZy4gSGFsbFByb3RvLCBIYWxsU2VydmljZQogICAgICAgICAudGFncyhuZXcgU3RyaW5nW117InRhZzEiLCAiSGFsbE9mZmxpbmVzdXJ2ZXkifSkKICAgICAgICAgLnJlcVNjaGVtYShTZWFyY2hKb2JQYWdlUmVzdWx0KQogICAgICAgICAucmVzcFNjaGVtYShTZWFyY2hKb2JQYWdlUmVzdWx0KQogICAgICAgICAuYnVpbGQoKSk7CgogICAgcG9zdCgiL2FkbWluL29ubGluZVN1cnZleS90b3AvdXBkYXRlIiwgUGF0aENvbmZpZy5idWlsZGVyKCkKICAgICAgICAgLnN1bW1hcnkoInN1bW1hcnkiKQogICAgICAgICAudGFncyhuZXcgU3RyaW5nW117InRhZzEifSkKICAgICAgICAgLnBhcmFtZXRlcnMobmV3IFBhcmFtZXRlcltdewogICAgICAgICAgIFBhcmFtZXRlckJ1aWxkZXIuYnVpbGRlcigpLm5hbWUoImlkIikuaW4oUGFyYW1ldGVyLkluRW51bS5RVUVSWSkucmVxdWlyZWQodHJ1ZSkuc2NoZW1hKHN0cmluZykuYnVpbGQoKSwKICAgICAgICAgICBQYXJhbWV0ZXJCdWlsZGVyLmJ1aWxkZXIoKS5uYW1lKCJ0b3AiKS5pbihQYXJhbWV0ZXIuSW5FbnVtLlFVRVJZKS5yZXF1aXJlZCh0cnVlKS5zY2hlbWEoaW50MzIpLmJ1aWxkKCksCiAgICAgICAgIH0pCiAgICAgICAgIC5yZXNwU2NoZW1hKFNlYXJjaEpvYlBhZ2VSZXN1bHQpCiAgICAgICAgIC5idWlsZCgpKTsKICB9KTsKICBCYWNrZW5kIGJhY2tlbmQgPSBCYWNrZW5kRG9jUGFyc2VyLnBhcnNlKE9wZW5BUEkzKTsKICBTcHJpbmdib290Rm9sZGVyR2VuZXJhdG9yIHNwcmluZ2Jvb3RGb2xkZXJHZW5lcmF0b3IgPSBuZXcgU3ByaW5nYm9vdEZvbGRlckdlbmVyYXRvci5CdWlsZGVyKGJhY2tlbmQpLmJ1aWxkKCk7CiAgc3ByaW5nYm9vdEZvbGRlckdlbmVyYXRvci5nZW5lcmF0ZSgpOwp9CmBgYAoKCgojIyBCYWNrZW5kCgojIyMgRXhhbXBsZQoKYGBgamF2YQpwYWNrYWdlIGNsb3VkLnVuaW9uai5leGFtcGxlLnByb3RvOwoKaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuaHR0cC5SZXNwb25zZUVudGl0eTsKaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLmJpbmQuYW5ub3RhdGlvbi4qOwppbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIubXVsdGlwYXJ0Lk11bHRpcGFydEZpbGU7CmltcG9ydCBqYXZhLnV0aWwuKjsKaW1wb3J0IGNsb3VkLnVuaW9uai5leGFtcGxlLnZvLio7CmltcG9ydCBjbG91ZC51bmlvbmouZXhhbXBsZS5lcy5wYWdlLlBhZ2VSZXN1bHQ7CgpwdWJsaWMgaW50ZXJmYWNlIEFkbWluUHJvdG8gewoKICAgIEBQb3N0TWFwcGluZygiL2FkbWluL25ld3MvbGlzdCIpCiAgICBSZXN1bHREVE88UGFnZVJlc3VsdFZPPE5ld3NWTz4+IHBvc3RBZG1pbk5ld3NMaXN0KAogICAgICAgIEBSZXF1ZXN0Qm9keSBCYXNlU2VhcmNoQ29uZGl0aW9uIGJvZHkKICAgICk7Cgp9CmBgYAoKCiMgTXVzdCBLbm93Ci0gU291cmNlIGNvZGUgaW4gcHJvdG8gcGFja2FnZSwgdm8gcGFja2FnZSBhbmQgY29udHJvbGxlciBwYWNrYWdlIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBuZXcgY29kZSBjb21wbGV0ZWx5LCAKc28gZG9uJ3QgZWRpdCBhbnkgc291cmNlIGNvZGUgaW4gdGhlc2UgcGFja2FnZXMuCi0gRXhpc3Rpbmcgc291cmNlIGNvZGUgaW4gc2VydmljZSBwYWNrYWdlIHdpbGwgYmUgc2tpcHBlZCBhbmQgbm90IGJlIGNoYW5nZWQsIHNvIHlvdSBjYW4gZWRpdCBvciBhZGQgeW91ciBjdXN0b20gY29kZS4KCiMgVHV0b3JpYWxzCi0gW3VuaW9uai1nZW5lcmF0b3Llv6vpgJ/kuIrmiYst5ZCO56uv56+HXShodHRwczovL3d3dy5qaWFuc2h1LmNvbS9wLzIxYzY3MGJhOTBmMSkKCiMgVE9ETwpQbGVhc2UgcmVmZXJlbmNlIFt1bmlvbmotZ2VuZXJhdG9yIGthbmJhbl0oaHR0cHM6Ly9naXRodWIuY29tL3VuaW9uai1jbG91ZC91bmlvbmotZ2VuZXJhdG9yL3Byb2plY3RzLzEpCgojIFNpc3RlciBQcm9qZWN0CgotIFtnby1kb3Vkb3VdKGh0dHBzOi8vZ2l0aHViLmNvbS91bmlvbmotY2xvdWQvZ28tZG91ZG91KTogT3BlbkFQSSAzLjAgc3BlYyBiYXNlZCBsaWdodHdlaWdodCBtaWNyb3NlcnZpY2UgZnJhbWV3b3JrIGZvciBHbwotIFtwdWxsY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL3d1YmluMTk4OS9wdWxsY29kZSk6IGEgdHlwZXNjcmlwdCBodHRwIGNsaWVudCBjb2RlIGdlbmVyYXRpb24gY2xpIGNvbXBhdGlibGUgd2l0aCBTd2FnZ2VyIDIgYW5kIE9wZW5BUEkgMwoKIyBDb21tdW5pdHkKCldlbGNvbWUgdG8gY29udHJpYnV0ZSB0byB1bmlvbmotZ2VuZXJhdG9yIGJ5IGZvcmtpbmcgaXQgYW5kIHN1Ym1pdHRpbmcgcHIgb3IgaXNzdWVzLiBJZiB5b3UgbGlrZSB1bmlvbmotZ2VuZXJhdG9yLCBwbGVhc2UgZ2l2ZSBpdCBhIHN0YXIhCgpXZWxjb21lIHRvIGNvbnRhY3QgbWUgZnJvbSAKLSBmYWNlYm9vazogW2h0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9iaW4ud3UuOTQ2MTc5OTkvXShodHRwczovL3d3dy5mYWNlYm9vay5jb20vYmluLnd1Ljk0NjE3OTk5LykgCi0gdHdpdHRlcjogW2h0dHBzOi8vdHdpdHRlci5jb20vQklOV1U0OTIwNTUxM10oaHR0cHM6Ly90d2l0dGVyLmNvbS9CSU5XVTQ5MjA1NTEzKSAKLSBlbWFpbDogMzI4NDU0NTA1QHFxLmNvbQotIHdlY2hhdDogIAohW3FyY29kZS5wbmddKHFyY29kZS5wbmcpIAoK readmeEtag: '"c7b72b4ec2b1303b006507a91865720c2a6b2370"' readmeLastModified: Thu, 16 Nov 2023 08:08:54 GMT repositoryId: 316134895 description: OpenAPI 3.0 specification Dsl and a collection of code generators created: '2020-11-26T05:47:34Z' updated: '2023-05-08T08:29:23Z' language: Java archived: false stars: 8 watchers: 0 forks: 2 owner: unionj-cloud logo: https://avatars.githubusercontent.com/u/79033021?v=4 license: MIT repoEtag: '"2c9524964ff0b913bc1b4ba76cdb74ddcfe6154e2ae84a909e538304e7136138"' repoLastModified: Mon, 08 May 2023 08:29:23 GMT foundInMaster: true category: SDK id: 47459de27ac678ba9515f1a0dbd1fe1c - source: openapi3 tags repository: https://github.com/szasza/express-gateway-plugin-openapi3-mock-server v3: true repositoryMetadata: base64Readme: >- IyBFeHByZXNzIEdhdGV3YXkgT3BlbkFQSSAzIE1vY2sgU2VydmVyIFBsdWdpbgoKWyFbbnBtIHZlcnNpb25dKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9qcy9leHByZXNzLWdhdGV3YXktcGx1Z2luLW9wZW5hcGkzLW1vY2stc2VydmVyLnN2ZyldKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9qcy9leHByZXNzLWdhdGV3YXktcGx1Z2luLW9wZW5hcGkzLW1vY2stc2VydmVyKQoKPiAqKkRFUFJFQ0FUSU9OIE5PVElDRSoqIEZvbGxvd2luZyB0aGUgbWFpbiBFeHByZXNzIEdhdGV3YXkncyBkZXByZWNhdGlvbiwgdGhpcyBwcm9qZWN0IGlzIG5vIGxvbmdlciBtYWludGFpbmVkLgoKIyMgUHJlcmVxdWlzaXRlcwoKUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIG9uIEV4cHJlc3MgR2F0ZXdheSdzIFtHZXR0aW5nIHN0YXJ0ZWRdKGh0dHA6Ly93d3cuZXhwcmVzcy1nYXRld2F5LmlvL2dldHRpbmctc3RhcnRlZC8pIHBhZ2UuCgpBbHNvIHBsZWFzZSB0YWtlIGEgbG9vayBhdCBob3cgcGx1Z2lucyBhcmUgW2luc3RhbGxlZCBhbmQgZW5hYmxlZF0oaHR0cDovL3d3dy5leHByZXNzLWdhdGV3YXkuaW8vZG9jcy9wbHVnaW5zLykuCgojIyBJbnN0YWxsYXRpb24KCmBlZyBwbHVnaW4gaW5zdGFsbCBleHByZXNzLWdhdGV3YXktcGx1Z2luLW9wZW5hcGkzLW1vY2stc2VydmVyYAoKIyMgQ29uZmlndXJhdGlvbgoKWW91IGNhbiB1c2UgYHNhbXBsZXMvYmFzZS1wYXRocy55bWxgIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJZiBzbywgcGxlYXNlIGNyZWF0ZSBhIGBkZWZpbml0aW9uc2AgZm9sZGVyCmluIHRoZSBwcm9qZWN0IHJvb3QgYW5kIGNvcHkgdGhlIHNhbXBsZSBZQU1MIHRoZXJlLgoKX3N5c3RlbS5jb25maWcueW1sXwoKYGBgeWFtbAojIHNvbWUgY29uZmlnIGluIGZyb250IG9mIHRoZSBwbHVnaW5zIHNlY3Rpb24KCnBsdWdpbnM6CiAgZXhwcmVzcy1nYXRld2F5LXBsdWdpbi1vcGVuYXBpMy1tb2NrLXNlcnZlcjoKICAgIGRlZmluaXRpb25GaWxlOiAnZGVmaW5pdGlvbnMveW91cmRlZmluaXRpb24ueW1sJyAjIFRoZSBmaWxlIGNvbnRhaW5pbmcgeW91ciBBUEkncyBzcGVjaWZpY2F0aW9uCgojIHNvbWUgY29uZmlnIGFmdGVyIHRoZSBwbHVnaW5zIHNlY3Rpb24KYGBgCgpfZ2F0ZXdheS5jb25maWcueW1sXyAoQSBiYXJlYm9uZSBleGFtcGxlLCBpZiBub3RoaW5nIGVsc2UgaXMgdXNlZC4pCgpgYGB5YW1sCmh0dHA6CiAgcG9ydDogODAKYXBpRW5kcG9pbnRzOgogIGFwaToKICAgIGhvc3Q6ICcqJwpwb2xpY2llczoKICAtIG1vY2sKcGlwZWxpbmVzOgogIGFwaToKICAgIGFwaUVuZHBvaW50czoKICAgICAgICAtIGFwaQogICAgcG9saWNpZXM6CiAgICAgICAgLSBtb2NrOgogICAgICAgICAgLSBhY3Rpb24KYGBgClRoZSBhYm92ZSBjb25maWd1cmF0aW9uIGRpc2FibGVzIHRoZSBBZG1pbiBDTEkgYW5kIHdpbGwgZG8gbm90aGluZyBidXQgcHJvdmlkZSBhIGR1bW15IHJlc3BvbmRlciBiYXNlZCBvbiB5b3VyIApPcGVuQVBJIHNwZWNpZmljYXRpb24uCgojIyBGZWF0dXJlcwoKKiBFbmRwb2ludHMgd2l0aCBhcHByb3ByaWF0ZSByZXF1ZXN0IHR5cGVzIGFyZSBwYXJzZWQgYW5kIHRoZSBmaXJzdCByZXNwb25zZSBleGFtcGxlIGlzIHVzZWQgYXMgYSByZXNwb25zZSBib2R5LgoqIEhUVFAgYW5kIGFwaUtleSBhdXRoIGhlYWRlciBjaGVjayBzdXBwb3J0CgojIyMgVG8gZG8KCiogQWNjZXB0IGhlYWRlciBjaGVja3MgdG8gcmV0dXJuIGFwcHJvcHJpYXRlIHJlc3BvbnNlIGV4YW1wbGUKKiBYLSogaGVhZGVycyBmb3IgdGVzdGluZyBlcnJvciByZXNwb25zZXMKKiBYLSogaGVhZGVycyBmb3IgcmVzcG9uc2UgZXhhbXBsZSBzZWxlY3Rpb24KKiBJbnB1dCBwYXJhbWV0ZXIgdmFsaWRhdGlvbgoqIEdlbmVyYXRvcnMgZm9yIHJhbmRvbSByZXNwb25zZSBkYXRhIGJhc2VkIG9uIHByb3ZpZGVkIHNjaGVtYQo= readmeEtag: '"cde0d3406ecb9946e27261944e39d5df9bd706f7"' readmeLastModified: Fri, 29 Dec 2023 11:38:45 GMT repositoryId: 106981465 description: An OpenAPI 3 mock server plugin for Express Gateway created: '2017-10-15T03:42:06Z' updated: '2023-12-29T11:39:42Z' language: JavaScript archived: true stars: 8 watchers: 2 forks: 1 owner: Szasza logo: https://avatars.githubusercontent.com/u/911466?v=4 license: NOASSERTION repoEtag: '"f966b3cdcffba9257d86ecbd15cd20c3363cf4a8acb0c04d5fd3e4f67161cadb"' repoLastModified: Fri, 29 Dec 2023 11:39:42 GMT foundInMaster: true category: - Server - Server Implementations id: aa3aa0d74f315ede19ef0315444b9571 - source: openapi3 tags repository: https://github.com/stepci/plugin-openapi v3: true id: 0dc97fe6dc74ed788122f89831c17861 repositoryMetadata: repositoryId: 546665834 description: Step CI OpenAPI support created: '2022-10-06T12:56:04Z' updated: '2023-05-25T16:49:05Z' language: JavaScript archived: false stars: 8 watchers: 2 forks: 5 owner: stepci logo: https://avatars.githubusercontent.com/u/61350067?v=4 license: MPL-2.0 repoEtag: '"d9731c73f2fd75264e677e8a3100879d1be15e3a54aeaeccb8d3282da33bae31"' repoLastModified: Thu, 25 May 2023 16:49:05 GMT foundInMaster: true - source: openapi3 tags repository: https://github.com/xiaoyao-ye/initapi v3: true id: 7000a61d32fa3dc7f559c8b49c9c6af7 repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj48aW1nIHNyYz0iaHR0cHM6Ly94aWFveWFvLXllLmdpdGh1Yi5pby9ibG9nL2luaXRBcGkvbGlnaHQuc3ZnIiAvPjwvZGl2PgoKPGJyIC8+CjxiciAvPgoKPGRpdiBhbGlnbj0iY2VudGVyIj4gQSB0b29sIGZvciBnZW5lcmF0aW5nIEFQSXMgYW5kIHR5cGVzIDwvZGl2PgoKPGJyIC8+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20veGlhb3lhby1ZZS9pbml0YXBpL2Jsb2IvbWFpbi9SRUFETUUuemgtQ04ubWQiPuS4reaWhzwvYT4gfCBFbmdsaXNoCjwvcD4KCjxwIGFsaWduPSJjZW50ZXIiPgogIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS94aWFveWFvLVllL2luaXRhcGkvc3RhcmdhemVycyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL3hpYW95YW8tWWUvaW5pdGFwaSIgLz48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvaW5pdGFwaSI+PGltZyBzcmM9Imh0dHBzOi8vYmFkZ2VuLm5ldC9ucG0vdi9pbml0YXBpIiAvPjwvYT4KPC9wPgoKPGJyIC8+CgojIyBGZWF0dXJlcwoKLSBDb2RlIGFzIERvY3VtZW50Ci0gU3RhbmRhcmRpemVkLCB1bmlmaWVkIHRlYW0gc3R5bGUsIGVhc3kgdG8gbWFpbnRhaW4KLSBUb29sIGdlbmVyYXRlcyBjb2RlIHRvIHJlZHVjZSBjb2RpbmcgYW5kIGltcHJvdmUgZWZmaWNpZW5jeQotIElmIHRoZSBiYWNrZW5kIHVzZXMgU3dhZ2dlciBvciBPcGVuYXBpMyBzcGVjaWZpY2F0aW9ucywgaXQgY2FuIGJlIGFjY2Vzc2VkIGF0IHplcm8gY29zdAoKIyMgSW5zdGFsbAoKYGBgYmFzaApwbnBtIGkgaW5pdGFwaSAtRApgYGAKCiMjIFVzYWdlCgo+IGNvbmZpZ3VyZSBgYXBpLmNvbmZpZy50c2Agb3IgYGFwaS5jb25maWcuanNgCgpgYGB0cwppbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICJpbml0YXBpIjsKLy8geW91IGNhbiB1c2UgdGhlIGBkZWZpbmVDb25maWdgIGhlbHBlciB3aGljaCBzaG91bGQgcHJvdmlkZSBpbnRlbGxpc2Vuc2Ugd2l0aG91dCB0aGUgbmVlZCBmb3IganNkb2MgYW5ub3RhdGlvbnM6CmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyh7CiAgLy8gUGF0aCByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGFyZSBhbGwgYmFzZWQgb24gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHRoZSBub2RlanMgcHJvY2VzcwogIC8vIFN1cHBvcnRzIE9wZW5hcGkzIGFuZCBTd2FnZ2VyIHNwZWNpZmljYXRpb25zLCB3aXRoIGNvbnRlbnQgY3JlYXRlZCBiYXNlZCBvbiBzcGVjaWZpZWQgSlNPTgogIHNlcnZpY2U6IHsKICAgIHBldHM6IHsKICAgICAgdXJsOiAiaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YyL3N3YWdnZXIuanNvbiIsCiAgICB9LAogICAgcGxhdGZvcm06IHsKICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTozMDAwL2FwaS1qc29uIiwKICAgICAgY29tbW9uUHJlZml4OiAiL2FwaS92MSIsCiAgICB9LAogICAgLy8gQ2FuIGNvbnZlcnQgbG9jYWwgSlNPTgogICAgbG9jYWw6IHsKICAgICAgdXJsOiAiLi9hc3NldHMvb3BlbmFwaS5qc29uIiwKICAgICAgLy8gQVBJIGFkZHJlc3MgcHVibGljIHByZWZpeCwgdXNlZCB0byBnZW5lcmF0ZSBjbGFzcyBuYW1lcyBhbmQgZmlsZSBuYW1lcy4gV2hlbiBub3QgY29uZmlndXJlZCwgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGF0dGVtcHQgdG8gZmluZCB0aGUgcHVibGljIHByZWZpeAogICAgICBjb21tb25QcmVmaXg6ICIvbWcvYXBpIiwKICAgIH0sCiAgfSwKICBvdXRwdXREaXI6ICIuL3NyYy9hcGkiLAogIG91dHB1dFR5cGU6ICJUeXBlU2NyaXB0IiwKICAvLyAuLi4KfSk7CmBgYAoKYGBganNvbgovLyBwYWNrYWdlLmpzb24KInNjcmlwdHMiOiB7CiAgImFwaSI6ICJpbml0YXBpIGNyZWF0ZSIKfQpgYGAKCmBgYGJhc2gKcG5wbSBydW4gYXBpCmBgYAoKR2VuZXJhdGUgQVBJIFdvcmtmbG93cyBFeGFtcGxlCgohW0dlbmVyYXRlIEFQSSBXb3JrZmxvd3MgRXhhbXBsZV0oaHR0cHM6Ly94aWFveWFvLXllLmdpdGh1Yi5pby9ibG9nL2luaXRBcGkvd29ya2Zsb3ctZW4ucG5nKQoKR2VuZXJhdGUgQVBJIGNvbnRlbnQgZXhhbXBsZQoKIVtHZW5lcmF0ZSBBUEkgY29udGVudCBleGFtcGxlXShodHRwczovL3hpYW95YW8teWUuZ2l0aHViLmlvL2Jsb2cvaW5pdEFwaS9hcGlfbXVsLnBuZykKCkdlbmVyYXRlIFR5cGUgY29udGVudCBleGFtcGxlCgohW0dlbmVyYXRlIFR5cGUgY29udGVudCBleGFtcGxlXShodHRwczovL3hpYW95YW8teWUuZ2l0aHViLmlvL2Jsb2cvaW5pdEFwaS90eXBpbmdzLnBuZykKCiMjIENvbmZpZ3VyZQoKRGV0YWlsZWQgY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgZGVmaW5lQ29uZmlnCgp8IE5hbWUgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVxdWlyZWQgfCBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgaW1wb3J0UmVxdWVzdCB8IEltcG9ydCBheGlvcyBvciBheGlvcyBlbmNhcHN1bGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBzdHJpbmdgICAgICAgICAgICAgICAgICAgICAgfCBObyAgICAgICB8ICdpbXBvcnQgYXhpb3MgZnJvbSAiYXhpb3MiOycgfAp8IHVzZVJlcXVlc3QgICAgfCBVc2luZyBheGlvcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgc3RyaW5nYCAgICAgICAgICAgICAgICAgICAgIHwgTm8gICAgICAgfCAnYXhpb3MucmVxdWVzdCcgICAgICAgICAgICAgIHwKfCBzZXJ2aWNlICAgICAgIHwgVGhlIEpTT04gKGBzd2FnZ2VyL29wZW5hcGkzYHNwZWNpZmljYXRpb24pIGZpbGUgYWRkcmVzcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBBUEkgc2VydmljZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYG9iamVjdGAgICAgICAgICAgICAgICAgICAgICB8IFllcyAgICAgIHwg4oCUICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBvdXRwdXREaXIgICAgIHwgT3V0cHV0IGZpbGUgc3RvcmFnZSBsb2NhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHN0cmluZ2AgICAgICAgICAgICAgICAgICAgICB8IE5vICAgICAgIHwgJy4vYXBpJyAgICAgICAgICAgICAgICAgICAgICB8Cnwgb3V0cHV0VHlwZSAgICB8IE91dHB1dCBGaWxlIFR5cGUgLSBXaGVuIHRoZXJlIGlzIG5vIGNvbmZpZ3VyYXRpb24sIGEgY29tbWFuZCBsaW5lIGludGVyYWN0aW9uIHdpbGwgcG9wIHVwIGZvciBzZWxlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBUeXBlU2NyaXB0YCBvciBgSmF2YVNjcmlwdGAgfCBObyAgICAgICB8IOKAlCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgZGVmaW5pdGlvbiAgICB8IEhvdyB0byBkZWZpbmUgdHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBjbGFzc2Agb3IgYGludGVyZmFjZWAgICAgICAgfCBObyAgICAgICB8IGludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgfAp8IGluZGV4YWJsZSAgICAgfCBUaGUgYWR2YW50YWdlIG9mIHVzaW5nIGluZGV4IHNpZ25hdHVyZSBpcyB0aGF0IGl0IGNhbiBhZGQgYW55IG51bWJlciBvZiBhdHRyaWJ1dGVzLCBtYWtpbmcgYGludGVyZmFjZWAgb3IgYGNsYXNzYCBtb3JlIGZsZXhpYmxlOyBUaGUgZGlzYWR2YW50YWdlIGlzIHRoYXQgaXQgbWF5IGNhdXNlIHVuY2VydGFpbnR5IGluIHRoZSB2YWx1ZSB0eXBlIG9mIHRoZSBhdHRyaWJ1dGUgfCBgYm9vbGVhbmAgICAgICAgICAgICAgICAgICAgIHwgTm8gICAgICAgfCBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBlbnVtTW9kZSAgICAgIHwgSG93IHRvIGRlZmluZSBlbnVtZXJhdGlvbiAoZW51bTogZ2VuZXJhdGUgZW51bWVyYXRpb24gdHlwZS4gdHlwZTogZ2VuZXJhdGUgdHlwZSBhbGlhcy4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGVudW1gIG9yIGB0eXBlYCAgICAgICAgICAgICB8IE5vICAgICAgIHwgdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgbXVsdGlwbGVGaWxlcyB8IEVuYWJsZSBtdWx0aSBmaWxlIG1vZGUgLSBzaW5nbGUgZmlsZSBvbmx5IGNyZWF0ZXMgQVBJIGZpbGVzLiBNdWx0aXBsZSBmaWxlcyB3aWxsIHNwbGl0IHRoZSBBUEkgaW50byBhbGwgY29udHJvbGxlcnMgYW5kIGdlbmVyYXRlIGNvcnJlc3BvbmRpbmcgZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBib29sZWFuYCAgICAgICAgICAgICAgICAgICAgfCBObyAgICAgICB8IHRydWUgICAgICAgICAgICAgICAgICAgICAgICAgfAoKIyMgUHJldHRpZXIKCkJlZm9yZSBjcmVhdGluZyBhIGZpbGUsIGJ5IGRlZmF1bHQsIHRoZSBkYXRhIHdpbGwgYmUgZm9ybWF0dGVkIHVzaW5nIGEgcHJldHRpZXIKCldoZW4gdGhlIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgaGFzIGEuIHByZXR0aWVyIGZpbGUsIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSB1c2VkIGZvciBmaWxlIGZvcm1hdHRpbmcuIElmIG9idGFpbmluZyB0aGUgZmlsZSBmYWlscywgdGhlIGJ1aWx0LWluIHByZXR0aWVyIHdpbGwgYmUgdXNlZCB0byBmb3JtYXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbjoKCmBgYEphdmFTY3JpcHQKY29uc3QgZGVmYXVsdE9wdGlvbnM6IHByZXR0aWVyLk9wdGlvbnMgPSB7CiAgcGFyc2VyOiAidHlwZXNjcmlwdCIsCiAgcHJpbnRXaWR0aDogMTMwLAogIHRhYldpZHRoOiAyLAogIHVzZVRhYnM6IGZhbHNlLAogIHNlbWk6IHRydWUsCiAgc2luZ2xlUXVvdGU6IGZhbHNlLAogIHF1b3RlUHJvcHM6ICJhcy1uZWVkZWQiLAogIGpzeFNpbmdsZVF1b3RlOiBmYWxzZSwKICB0cmFpbGluZ0NvbW1hOiAiYWxsIiwKICBicmFja2V0U3BhY2luZzogdHJ1ZSwKICBicmFja2V0U2FtZUxpbmU6IHRydWUsCiAganN4QnJhY2tldFNhbWVMaW5lOiB0cnVlLAogIGFycm93UGFyZW5zOiAiYXZvaWQiLAogIHJhbmdlU3RhcnQ6IDAsCiAgcmFuZ2VFbmQ6IEluZmluaXR5LAogIHJlcXVpcmVQcmFnbWE6IGZhbHNlLAogIGluc2VydFByYWdtYTogZmFsc2UsCiAgcHJvc2VXcmFwOiAicHJlc2VydmUiLAogIGh0bWxXaGl0ZXNwYWNlU2Vuc2l0aXZpdHk6ICJpZ25vcmUiLAogIGVuZE9mTGluZTogImF1dG8iLAp9CmBgYAoKIyMgR2l0IGNvbW1pdAoKLSDwn5KNIHRlc3Q6IEFkZGluZyBtaXNzaW5nIHRlc3RzCi0g8J+OuCBmZWF0OiBBIG5ldyBmZWF0dXJlCi0g8J+QmyBmaXg6IEEgYnVnIGZpeAotIPCfpJYgY2hvcmU6IEJ1aWxkIHByb2Nlc3Mgb3IgYXV4aWxpYXJ5IHRvb2wgY2hhbmdlcwotIOKcj++4jyBkb2NzOiBEb2N1bWVudGF0aW9uIG9ubHkgY2hhbmdlcwotIPCfkqEgcmVmYWN0b3I6IEEgY29kZSBjaGFuZ2UgdGhhdCBuZWl0aGVyIGZpeGVzIGEgYnVnIG9yIGFkZHMgYSBmZWF0dXJlCi0g8J+ShCBzdHlsZTogTWFya3VwLCB3aGl0ZS1zcGFjZSwgZm9ybWF0dGluZywgbWlzc2luZyBzZW1pLWNvbG9ucy4uLgotIPCfjqEgY2k6IENJIHJlbGF0ZWQgY2hhbmdlcwotIOKaoe+4jyBwZXJmOiBBIGNvZGUgY2hhbmdlIHRoYXQgaW1wcm92ZXMgcGVyZm9ybWFuY2UKCiMjIExhc3QKCldlbGNvbWUgdG8gcHJvdmlkZSBmZWVkYmFjayBhbmQgY29udHJpYnV0ZSBjb2RlLgoKIyMgTGljZW5zZQoKTUlUCg== readmeEtag: '"5477b96f996ae38dbc88551e15939a3b01215940"' readmeLastModified: Thu, 04 Jan 2024 04:01:10 GMT repositoryId: 513418465 description: A tool for creating API and typings created: '2022-07-13T07:13:34Z' updated: '2024-11-04T11:40:52Z' language: JavaScript archived: false stars: 8 watchers: 1 forks: 0 owner: xiaoyao-Ye logo: https://avatars.githubusercontent.com/u/52575104?v=4 license: MIT repoEtag: '"baaadf79bd7597d7dbdce42b106f7ea92fa9774df13b1b5109d4f5a9da08ff07"' repoLastModified: Mon, 04 Nov 2024 11:40:52 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/nicolastakashi/todoapp-openapidocuments v3: true repositoryMetadata: base64Readme: >- IyBUb2RvIEFwcCAtIE9wZW5BUEkgRG9jdW1lbnRzCgohW0NJXShodHRwczovL2dpdGh1Yi5jb20vbmljb2xhc3Rha2FzaGkvdG9kb2FwcC1vcGVuYXBpZG9jdW1lbnRzL3dvcmtmbG93cy9DSS9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcikKClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyBleGFtcGxlcyB0aGF0IHdlcmUgdXNlZCBpbiB0aGUgcG9zdCBJIG1hZGUgb24gbXkgTWVkaXVtIGFjY291bnQsIHNob3dpbmcgaG93IHRvIGRlc2lnbiBhbiBBUEkgdXNpbmcgYW4gQVBJLUZpcnN0IHN0cmF0ZWd5LgoKIyMjIFBvc3RzCiogRW5nbGlzaAogICogW0Rlc2lnbmluZyBSZXN0ZnVsIEFQSXMgdXNpbmcgYW4gQVBJLUZpcnN0IEFwcHJvYWNoXShodHRwczovL25pY29sYXN0YWthc2hpLm1lZGl1bS5jb20vcmVzdGZ1bC11c2luZy1hcGktZmlyc3QtY2QzMDVlNTkzMDVkKQogICogW0Rlc2lnbmluZyBSZXN0ZnVsIEFQSXMgdXNpbmcgYW4gQVBJLUZpcnN0IEFwcHJvYWNoIOKAlCBNb2NraW5nXShodHRwczovL25pY29sYXN0YWthc2hpLm1lZGl1bS5jb20vZGVzaWduaW5nLWFwaXMtdXNpbmctYW4tYXBpLWZpcnN0LWFwcHJvYWNoLW1vY2stc2VydmVyLTc4ZGRiZDk5OTNmNSkKICAqIFtEZXNpZ25pbmcgUmVzdGZ1bCBBUElzIHVzaW5nIGFuIEFQSS1GaXJzdCBBcHByb2FjaCDigJQgQ29udHJhY3QgVGVzdF0oaHR0cHM6Ly9uaWNvbGFzdGFrYXNoaS5tZWRpdW0uY29tL2Rlc2lnbmluZy1yZXN0ZnVsLWFwaXMtdXNpbmctYW4tYXBpLWZpcnN0LWFwcHJvYWNoLWNvbnRyYWN0LXRlc3QtMzRiZGU3OTYwM2RkKQoKIyMgUnVuaW5nCgpJZiB5b3Ugd2FudCB0byBsaW50IGFuZCBydW4gYSBtb2NrIHNlcnZlciwgeW91IG11c3QgdG8gaW5zdGFsbCB0aGUgZGVwZW5kZW5jaWVzIGJlZm9yZSwgYXMgeW91IGNhbiBzZWUgYmVsb3cuCgpgYGAKeWFybiAKYGBgCgojIyBMaW50aW5nIE9wZW5BUEkgRG9jdW1lbnRzCgpDaGVjayBpZiB5b3VyIEFQSXMgYXJlIGJlaW5nIGRlc2lnbmVkIGZvbGxvd2luZyB0aGUgcHJvcG9zZWQgZ3VpZGVsaW5lcyBieSB5b3VyIGNvbXBhbnksIHdoaWNoIGNvdWxkIGJlIGEgZGlmZmljdWx0IGpvYiB0byBkbyBtYW51YWxseS4KVGhlcmVieSB3ZSBjYW4gYXNrIGZvciBhIHRvb2wgbGlrZSBTcGVjdHJhbCB0byBoZWxwIHVzIGFuZCBjcmVhdGUgYW4gYXV0b25vbW91cyBwcm9jZXNzLCB0byBkbyB0aGlzIGpvYi4KClNwZWN0cmFsIGlzIGFuIG9wZW4tc291cmNlIHByb2plY3QgdGhhdCB3b3JrcyBsaWtlIGEgbGludGVyIHRvIE9wZW5BUEkgZG9jdW1lbnRzIGFuZCBoYXMgYSBsb3Qgb2YgcnVsZXMgdG8gZW5zdXJlIHZlcnkgY29tbW9uIGd1aWRlbGluZXMgaW4gdGhlIHNvZnR3YXJlIGluZHVzdHJ5IHRvIGRldmVsb3AgUkVTVEZ1bCBBUElzLgoKVG8gcnVuIFNwZWN0cmFsIHlvdSBjYW4ganVzdCBydW4gdGhlIGNvbW1hbmQgYmVsb3cuIAoKYGBgCnlhcm4gbGludApgYGAKCiMjIFJ1bm5pbmcgTW9jayBTZXJ2ZXIKCkdpdmUgYSBNb2NrIFNlcnZlciB3aXRoIGR5bmFtaWMgZGF0YSB0byB5b3VyIGNsaWVudHMgdGFzdGUgeW91ciBBUEkgRGVzaWduIGFuZCBwcm92aWRlIGZhc3QgZmVlZGJhY2sgYWJvdXQgdGhlIERldmVsb3BlciBFeHBlcmllbmNlLgoKUHJpc20gaXMgYW4gb3Blbi1zb3VyY2UgcHJvamVjdCB0aGF0IHByb3ZpZGVzIHVzIGEgbW9jayBzZXJ2ZXIgYmFzZWQgb24gdGhlIE9wZW5BUEkgZG9jdW1lbnRzIGFuZCBpdHMgc3RydWN0dXJlLgoKVG8gcnVuIFByaXNtIHlvdSBjYW4ganVzdCBydW4gdGhlIGNvbW1hbmQgYmVsb3cuCgpgYGAKeWFybiBtb2NrCmBgYAoKIyMgQ29udHJhY3QgVGVzdGluZwpFdmVuIGFmdGVyIHRoZSBBUEkgd2FzIG1hZGUgYXZhaWxhYmxlLCBpdCBrZWVwcyBldm9sdmluZywgYW5kIG9uZSBvZiB0aGUgYmlnZ2VzdCBjaGFsbGVuZ2VzIGR1cmluZyBhbiBBUEkgTGlmZS1jeWNsZSBpcyB0aGUgQVBJIGV2b2x1dGlvbiwgaW4gb3JkZXIgdG8gZGV0ZWN0IGJyZWFraW5nIGNoYW5nZXMgYW5kIGF2b2lkIGEgY29udHJhY3QgYnJlYWssIHdlIG11c3QgaGF2ZSBhIHN0cmF0ZWd5IHRvIGJlIG5vdGlmaWVkIGFzIHNvb24gYXMgcG9zc2libGUuCgpCZWZvcmUgeW91IHN0YXJ0IHRvIHRlc3QgdGhlIGNvbnRyYWN0cyB5b3UgbXVzdCBlbnN1cmUgdGhhdCB5b3UgaGF2ZSB0aGUgZG90bmV0IGluc3RhbGxlZCwgc2luY2UgdGhlIEFQSSB1c2VkIGluIHRoaXMgcmVwb3NpdG9yeSBpcyBhbiBBU1AuTkVUIFByb2plY3QuCkFmdGVyIHlvdSBpbnN0YWxsIERvdG5ldCBpbiB5b3VyIGNvbXB1dGVyLCB5b3UgY2FuIGluc3RhbGwgU3dhc2hidWNsbGUgQ0xJLCBydW5uaW5nIHRoZSBjb21tYW5kIGJlbG93LgoKYGBgYmFzaApkb3RuZXQgdG9vbCBpbnN0YWxsIFN3YXNoYnVja2xlLkFzcE5ldENvcmUuQ2xpIC1nCmBgYApPcGVuQVBJIERpZmYgaXMgYW4gb3Blbi1zb3VyY2UgcHJvamVjdCB0aGF0IGNvbXBhcmVzIHR3byBPcGVuQVBJIGRvY3VtZW50cyBhbmQgc2hvd3MgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aG9zZSBmaWxlcywgYW5kIHlvdSBjYW4gc3RhcnQgdG8gdGVzdCB5b3VyIGNvbnRyYWN0cyBydW5uaW5nIHRoZSBjb21tYW5kcyBiZWxvdy4KCmBgYGJhc2gKZG90bmV0IGJ1aWxkIC4vYXBpL1RvZG9BcHAuQXBpL1RvZG9BcHAuQXBpLmNzcHJvaiAtLWNvbmZpZ3VyYXRpb24gUmVsZWFzZQpzd2FnZ2VyIHRvZmlsZSAtLXlhbWwgLS1vdXRwdXQgLi9iaW4vc3dhZ2dlci55YW1sIC4vYXBpL1RvZG9BcHAuQXBpL2Jpbi9SZWxlYXNlL25ldGNvcmVhcHAzLjEvVG9kb0FwcC5BcGkuZGxsIHYxCnlhcm4gY29udHJhY3QtdGVzdApgYGAKCg== readmeEtag: '"17ebb2ebf1125e2314608a468469a8e477f6ea38"' readmeLastModified: Sun, 25 Jul 2021 13:00:11 GMT repositoryId: 285396496 description: Examples used in the post published on Medium. created: '2020-08-05T20:25:43Z' updated: '2023-03-28T14:52:40Z' language: C# archived: false stars: 8 watchers: 1 forks: 1 owner: nicolastakashi logo: https://avatars.githubusercontent.com/u/8205546?v=4 license: MIT repoEtag: '"c77f1d7f28313c62eae668d1580b6b0106dcc0934ddad26e2528f0c6818157f3"' repoLastModified: Tue, 28 Mar 2023 14:52:40 GMT foundInMaster: true category: - Testing - Server Implementations id: 99c2b0a2ca7404d1f8fad9edb1c72c06 - source: openapi3 tags repository: https://github.com/simitgroup/openapigenerator v3: true id: 4d6b006ead52fd9f048f446604ba6382 repositoryMetadata: base64Readme: >- IyBPcGVuYXBpIEdlbmVyYXRvcgpBbiBvcGVuYXBpdjMgZ2VuZXJhdG9yIHdoaWNoIGNhbiBnZW5lcmF0ZSBtaWNyby1zZXJ2aWNlcyBmb3IgR08gTGFuZ3VhZ2UKCiMjIENvbnRlbnQKLSBbT3BlbmFwaSBHZW5lcmF0b3JdKCNvcGVuYXBpLWdlbmVyYXRvcikKICAtIFtDb250ZW50c10oI2NvbnRlbnRzKQogIC0gW0ludHJvZHVjdGlvbl0oI2ludHJvZHVjdGlvbikKICAtIFtRdWlja3N0YXJ0XSgjcXVpY2tzdGFydCkKICAtIFtEb2NrZXJpemluZ10oI2RvY2tlcml6aW5nKQotIFtPcGVuYXBpIERvY3VtZW50XSgjb3BlbmFwaS1kb2N1bWVudCkKICAgIC0gW1JlcXVpcmVtZW50c10oI3JlcXVpcmVtZW50cykKICAgIC0gW0RlZmluZSBFbnZpcm9ubWVudCBWYXJpYWJsZXNdKCNkZWZpbmUtZW52aXJvbm1lbnQtdmFyaWFibGVzKQogICAgLSBbRGVmaW5lIEVycm9yIFNjaGVtYV0oI2RlZmluZS1lcnJvci1zY2hlbWEpCiAgICAtIFtSZXF1aXJlIDJYWCBhbmQgNFhYIEluIEV2ZXJ5IFJlc3BvbnNlIF0oI3JlcXVpcmUtMlhYLWFuZC00WFgtaW4tZXZlcnktcmVzcG9uc2UpICAgIAogICAgLSBbTm90IFN1cHBvcnRlZCBGZWF0dXJlc10oI25vdC1zdXBwb3J0ZWQtZmVhdHVyZXMpCi0gW0RldmVsb3AgSW4gR2VuZXJhdGVkIFByb2plY3RdKCNkZXZlbG9wLWluLWdlbmVyYXRlZC1wcm9qZWN0KSAgICAgCiAgICAtIFtQcm9qZWN0IE92ZXJ2aWV3XSgjcHJvamVjdC1vdmVydmlldykgCiAgICAgICAgLSBbRGV2ZWxvcG1lbnQgQ29uY2VwdF0oI2RldmVsb3BtZW50LWNvbmNlcHQpICAKICAgICAgICAtIFtGaWxlIFN0cnVjdHVyZV0oI2ZpbGUtc3RydWN0dXJlKSAKICAgICAgICAtIFtTY2hlbWFzIE9yIE1vZGVsc10oI1NjaGVtYXMtb3ItbW9kZWxzKSAKICAgICAgICAtIFtSb3V0ZXNdKCNyb3V0ZXMpIAogICAgICAgIC0gW1JvdXRlIEhhbmRsZXNdKCNyb3V0ZS1oYW5kbGVzKSAKICAgIC0gW0RldmVsb3AgUmVhbCBSb3V0ZSBIYW5kbGVdKCNkZXZlbG9wLXJlYWwtcm91dGUtaGFuZGxlKQogICAgICAgIC0gW1RyYW5zZmVyIFJvdXRlIEhhbmRsZSBJbnRvIE5ldyBGaWxlXSh0cmFuc2Zlci1yb3V0ZS1oYW5kbGUtaW50by1uZXctZmlsZSkKICAgICAgICAtIFtEZWZpbmUgSGFuZGxlIEV4aXN0cyBJbiBEb2N1bWVudF0oZGVmaW5lLWhhbmRsZS1leGlzdHMtaW4tZG9jdW1lbnQpCiAgICAgICAgLSBbQ3JlYXRlIEVudmlyb25tZW50IFZhcmlhYmxlc10oI2NyZWF0ZS1lbnZpcm9ubWVudC12YXJpYWJsZXMpCiAgICAtIFtCdWlsZCBQcm9qZWN0XSgjYnVpbGQtcHJvamVjdCkgCiAgICAgICAgLSBbU2ltcGxlIEJ1aWxkXSgjc2ltcGxlLWJ1aWxkKSAKICAgICAgICAtIFtCdWlsZCBGb3IgRGlzdHJpYnV0aW9uXSgjYnVpbGQtZm9yLWRpc3RyaWJ1dGlvbikgCiAgICAgICAgLSBbQnVpbGQgRm9yIERvY2tlcl0oI2J1aWxkLWZvci1kb2NrZXIpIAogICAgLSBbVW5pdCBUZXN0XSgjdW5pdC10ZXN0KQogICAgICAgIC0gW0RlZmluZSBSZWFsIFRlc3RdKCNkZWZpbmUtcmVhbC10ZXN0KSAKICAgICAgICAtIFtFeGVjdXRlIFVuaXQgVGVzdF0oI2V4ZWN1dGUtdW5pdC10ZXN0KSAgIAogICAgLSBbU2VjdXJlIE1pY3Jvc2VydmljZV0oI3NlY3VyZS1taWNyb3NlcnZpY2UpIAogICAgICAgIC0gW1NlY3VyZSB3aXRoIEFwaUtleV0oI3NlY3VyZS13aXRoLWFwaWtleSkgCi0gW1RvZG9dKCN0b2RvKQoKCiMjIEludHJvZHVjdGlvbgpXZSBrbm93IG9wZW5hcGkgaXMgY29vbCwgdXN1YWxseSB3ZSB1c2Ugc3dhZ2dlciBvciBwb3N0bWFuIGZvciBhcGkgdGVzdGluZywgZG9jdW1lbnRhdGlvbiBhbmQgZGVzaWduLiBIb3dldmVyLCBkZXNpZ24sIGRldmVsb3AsIHRlc3RpbmcgYW5kIGRvY3VtZW50YXRpb24gaXMgcmVkdW5kYW50IHdvcmsgYW5kIHNwZW5kIHVzIGxvdCBvZiB0aW1lLgoKVGhpcyBnZW5lcmF0b3IgYWJsZSB0byBnZW5lcmF0ZSBtaWNyby1zZXJ2aWNlcyB3aXRoIGJlbG93IGNhcGFiaWxpdHk6CjEuIHdvcmtpbmcgZ2luIG1vY2sgc2VydmVyLCB5b3UgY2FuIG1vZGlmaWVkIGl0IHRvIGJlY29tZSByZWFsIG1pY3Jvc2VydmljZQoyLiB1bml0IHRlc3QgZm9yIGFsbCByZXN0YXBpCjMuIGJ1aWxkIGluIHN3YWdnZXItdWkgdG8gYWxsb3cgeW91IHRlc3QgYXBpIGVhc2lseQo0LiBlYXNpbHkgZ2VuZXJhdGUgZG9ja2VyIGltYWdlCjUuIGJ1aWxkIGluIHN1cHBvcnQgc2VjdXJpdHkgc2NoZW1lCgoKIyMgUXVpY2tzdGFydApNYWtlIHN1cmUgeW91IGFwaSBkb2N1bWVudCBjb21wbHkgdG8gW1JlcXVpcmVtZW50c10oI3JlcXVpcmVtZW50cyksIHRoZW4geW91IGNhbiBnZW5lcmF0ZSBtaWNyby1zZXJ2aWNlIHNvdXJjZSBjb2RlOgoxLiBbRG93bmxvYWQgb3BlbmFwaWdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL1NJTUlUR1JPVVAvb3BlbmFwaWdlbmVyYXRvci9yZWxlYXNlcykKMi4gcHJlcGFyZSBvcGVuYXBpLXYzIHNwZWMgZmlsZSwgKHRlc3RlZCBpbiAueWFtbCBvbmx5KQozLiBFeGVjdXRlIGJlbG93IGNvbW1hbmQgOgpgYGBiYXNoCi4vb3BlbmFwaWdlbmVyYXRvci1tYWMuYmluIC0tYXBpZmlsZT0ic2ltcGxlYXBpLnlhbWwiICAtLXRhcmdldGZvbGRlcj1teXByb2plY3QgLS1wcm9qZWN0bmFtZT0icHJvamVjdDEiIC0tcG9ydD0iOTAwMCIgIC0tbGFuZz0iZ28iCmBgYAo0LiBZb3UgY2FuIHVzZSBWaXN1YWwgU3R1ZGlvIENvZGUgb3Igb3RoZXJzIElERSB0byBvcGVuIGB+L215cHJvamVjdGA6CmBgYGJhc2gKY2QgbXlwcm9qZWN0CmNvZGUgLgpgYGAKCjUuIENvcHkgLmVudi5kZWZhdWx0IHRvIC5lbnYsIGRlZmluZSBhcHByb3ByaWF0ZSB2YWx1ZSwgbGlrZSBBUEkga2V5cyBhbmQgZXRjCjYuIFJ1biBiZWxvdyBjb21tYW5kIGFuZCBkb25lOgpgYGBiYXNoCm1ha2UgJiYgLi9wcm9qZWN0MSAKYGBgCjcuIFRyeSBhY2Nlc3MgcmVzdCBhcGkgaW50ZXJmYWNlOgogICAgIGh0dHA6Ly9sb2NhbGhvc3Q6OTAwMC9kb2Mvc3dhZ2dlci11aS9pbmRleC5odG1sCgoKCiMjIERvY2tlcml6aW5nClByb2plY3QgY29tZSB3aXRoIGZldyBjb21tYW5kIGhlbHAgeW91IHJ1biBtaWNyb3NlcnZpY2UgaW4gZG9ja2VyIGVudmlyb25tZW50LiBDaGVjayBgTWFrZWZpbGVgIHRvIGtub3cgbW9yZSBkZXRhaWwKCjEuIGNyZWF0ZSBkb2NrZXIgY29udGFpbmVyIGluIGRldm5ldHdvcmsuCmBgYApjZCBteXByb2plY3QKbWFrZSBkb2NrZXJyZW1vdmUgOyBtYWtlIGRvY2tlciAmJiAgbWFrZSBkb2NrZXJydW4KbWFrZSBkb2NrZXJzaGVsbCAjIGFjY2VzcyBkb2NrZXIgc2hlbGwgCmBgYAoyIFlvdSBtYXkgZWRpdCBgTWFrZWZpbGVgIGlmIHlvdSB3aXNoIHRvIHBhc3MgY3JlYXRlIGRvY2tlciBjb250YWluZXIgd2l0aCBtb3JlIHVzZWZ1bCBzZXR0aW5nCgoKIyBPcGVuYXBpIERvY3VtZW50ClB1cmUgb3BlbmFwaSBub3QgZ29vZCBlbm91Z2ggZm9yIHByZXBhcmUgY29tcGxldGUgbWljcm9zZXJ2aWNlcywgdGhlcmUgaXMgYWRkaXRpb25hbCBndWlkZSBsaW5lIHNoYWxsIGZvbGxvdyBhdCBiZWxvdyBzZWN0aW9uLiAKCiMjIFJlcXVpcmVtZW50cwpUaGlzIHByb2plY3QgaGFzIGJlbG93IHJlcXVpcmVtZW50OgoxLiBhcGkgZG9jdW1lbnQgd3JpdHRlbiBpbiBvcGVuYXBpIHYzCjIuIGFwaSBkb2N1bWVudCBzaGFsbCBzYXZlIGluIC55YW1sIGZvcm1hdAozLiBkZWZpbmUgb3BlcmF0aW9uSWQgaW4gZXZlcnkgYXBpIGluIHBhdGgsIHdpdGggdmFsdWU6CiAgICAqIEFscGhhYmV0IHZhbHVlIHdoaWNoIGNhbiB1c2UgdG8gZGVmaW5lIGFzIHByb2dyYW1taW5nIGZ1bmN0aW9uIHRpdGxlCiAgICAqIE5vIHNwZWNpYWwgY2hhcmFjdGVycyBhbGxvd2VkLCBleGNlcHQgcHJlZml4IHdpdGggJy0nIChhdm9pZCBnZW5lcmF0ZSByb3V0ZSBoYW5kbGUpCiAgICAqIGV4YW1wbGU6IGBHZXREYXRhYCwgYFNhdmVEYXRhYCwgYC1TYXZlRGF0YWAKNC4gQWxsIGVsZW1lbnQgc2hhbGwgcmVmZXJlIGZyb20gI2NvbXBvbmVudHMvc2NoZW1hLCBleGFtcGxlOgogICAgKiBwYXJhbWV0ZXJzCiAgICAqIHJlcXVlc3QgYm9keQogICAgKiByZXNwb25zZSBjb250ZW50CiMjIE5vdCBTdXBwb3J0ZWQgRmVhdHVyZXMKMS4gb3BlbmNvbm5lY3Qgc2VjdXJpdHkgc2NoZW1lcwoyLiBhcGlLZXkgb25seSBzdXBwb3J0ZWQgYXQgaGVhZGVyLCBvdGhlcnMgYXJlYSBpcyBub3Qgc3VwcG9ydGVkIChjb29raWUsIHF1ZXJ5Li4uKQoKIyMgRGVmaW5lIEVudmlyb25tZW50IFZhcmlhYmxlcwpXZSBjYW4gdXNlIFtTcGVjaWZpY2F0aW9uIEV4dGVuc2lvbnNdKCNodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMjc3BlY2lmaWNhdGlvbkV4dGVuc2lvbnMpIHRvIGRlY2xhcmUgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIG1pY3Jvc2VydmljZXMsIGl0IHdpbGwgYWRkIGludG8gYC5lbnYuZGVmYXVsdGAuCgpFeGFtcGxlOgpgYGB5YW1sCngtZW52LXZhcnM6CiAgTU9OR09fU0VSVkVSOiBtb25nb2Ric2VydmVyCiAgTU9OR09fREI6IGRiMQogIE1PTkdPX1VTRVI6IAogIE1PTkdPX1BBU1M6IApgYGAKIyBEZWZpbmUgRXJyb3IgU2NoZW1hCllvdSBjYW4gZGVmaW5lIHNwZWNpYWwgc2NoZW1hICJFcnJvciIsIHdoaWNoIHNoYWxsIGluY2x1ZGUgMiBmaWVsZDogYGVycl9jb2RlYCBhbmQgYGVycl9tc2dgIGFzIGJlbG93IGV4YW1wbGUuCiBodHRwIHJlcXVlc3QgZm9yIGBwb3N0YCxgcHV0YCB3aGljaCB5b3UgbWF5IHN1Ym1pdCByZXF1ZXN0Ym9keS4KYGBgeWFtbAogICAgRXJyb3I6CiAgICAgIHR5cGU6IG9iamVjdCAgICAgIAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGVycl9jb2RlOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiAiRVItTUctMDAxIgogICAgICAgIGVycl9tc2c6CiAgICAgICAgICBkZXNjcmlwdGlvbjogQSBodW1hbiByZWFkYWJsZSBlcnJvciBtZXNzYWdlCiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGV4YW1wbGU6ICJNb25nb2RiIG5vdCBjb25uZWN0ZWQiCiAgICAgICAgdmVyc2lvbjoKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZXhhbXBsZTogdjEKYGBgCkhvdyBpdCB3b3JrOgoxLiBUaGlzIHNjaGVtYSBjYW4gZGVmaW5lIGFzIGVycm9yIDR4eCByZXNwb25zZSBmb3IgaHR0cCByZXF1ZXN0IHdpdGggcmVxdWVzdGJvZHkgKHBvc3QsIHB1dCwgcGF0Y2gpCjIuIHdoZW4gdGhlIGFjdHVhbCByZXF1ZXN0IGJvZHkgbm90IGNvbXBhdGlibGUgd2l0aCBzY2hlbWEgZGVmaW5hdGlvbiwgdGhlIGBlcnJfbXNnYCB3aWxsIGRpc3BsYXkgZXJyb3IgbGlrZSBiZWxvdzoKYGBganNvbgp7CiAgImVycl9jb2RlIjogIkVSUl9JTlBVVF9WQUxJREFUSU9OIiwKICAiZXJyX21zZyI6ICJLZXk6ICdNb2RlbF9Cb29rLkJvb2tpZCcgRXJyb3I6RmllbGQgdmFsaWRhdGlvbiBmb3IgJ0Jvb2tpZCcgZmFpbGVkIG9uIHRoZSAncmVxdWlyZWQnIHRhZyIsCiAgInZlcnNpb24iOiAidjEiCn0KYGBgCgojIFJlcXVpcmUgMlhYIGFuZCA0WFggSW4gRXZlcnkgUmVzcG9uc2UKRm9yIGdvb2QgcHJhY3Rpc2UsIGV2ZXJ5IGh0dHAgcmVxdWVzdCBzaGFsbCBkZWZpbmUgYXQgbGVhc3QgMSByZXNwb25zZSBmb3IgMnh4IGFuZCA0eHguIFRoZXJlIGlzIGhhcmRjb2RlZCBiZWhhdmlvdXIgd2hpY2ggd2lsbCBpZGVudGl0eSAyeHggYXMgIHN1Y2Nlc3MgcmVzcG9uc2UsIGFuZCA0eHggaXMgZmFpbGVkIHJlc3BvbnNlLgoKCgojIERldmVsb3AgSW4gR2VuZXJhdGVkIFByb2plY3QKQWZ0ZXIgY29kZSBnZW5lcmF0ZWQsIHdlIGNhbiBzdGFydCBvdmVyIGRldmVsb3BtZW50IGJ5IGNoYW5nZSB0aGUgZ2VuZXJhdGVkIGNvZGUuIFlvdSBzaGFsbCBwcmVwYXJlIGJlbG93IGRldiBlbnZpcm9ubWVudDoKMS4gVmlzdWFsIFN0dWRpbyBDb2RlCjIuIEdvIFNkawozLiBEb2NrZXIgKG9wdGlvbmFsIGlmIHlvdSBwbGF5IHdpdGggZG9ja2VyKQoKIyMgUHJvamVjdCBPdmVydmlldwpUaGUgZ2VuZXJhdGVkIHByb2plY3QgcHJlcGFyZSB1bmRlciBiZWxvdyBzdHJ1Y3R1cmU6CjEuIHdyaXR0ZW4gaW4gZ28gbGFuZ3VhZ2UKMi4gUnVubmluZyBvbiB0b3Agb2YgW2dpbl0oI2h0dHBzOi8vZ2l0aHViLmNvbS9naW4tZ29uaWMvZ2luKSB3ZWIgc2VydmljZQozLiBJdCB3b3JrIGFzIGNvbXBsZXRlIG1vY2sgc2VydmVyIHRvIHNlcnZpY2UgbWljcm8tc2VydmljZSBhcyBzdGF0ZWQgaW4gb3BlbmFwaSBkb2N1bWVudC4KCiMjIyBEZXZlbG9wbWVudCBDb25jZXB0ClRvIG1ha2UgdGhlIG1pY3JvLXNlcnZpY2UgcGVyZm9ybSByZWFsIHRhc2ssIHdlIHNoYWxsIHBlcmZvcm0gZGV2ZWxvcG1lbnQsIHdoaWNoIGludm9sdmUgYmVsb3cgc2NvcGU6CjEuIE1vZGlmeSByb3V0ZSBoYW5kbGUgdG8gcGVyZm9ybSByZWFsIHRhc2s6CiAgICAqIGByb3V0ZWAgaXMgcmVzdGFwaSByZXF1ZXN0IGxpa2UgYEdFVCAvbXlhcGlgLCBgUE9TVCAvbXlhcGkvcmVzMWAKICAgICogYHJvdXRlIGhhbmRsZWAgaXMgcHJvZ3JhbW1pbmcgZnVuY3Rpb24sIHdoaWNoIHdpbGwgdHJpZ2dlciB3aGVuIGNsaWVudCBhY2Nlc3Mgc3BlY2lmaWMgYHJvdXRlYC4gCiAgICAqIEV2ZXJ5IGByb3V0ZWAgY29ubmVjdCB0byBvd24gYHJvdXRlIGhhbmRsZWAKICAgICogYHJvdXRlYCBpcyB0ZXJtaW5vbG9neSBmcm9tIGBnaW5gLCBpdCBoYXZlIHNpbWlsYXIgbWVhbmluZyB3aXRoIG9wZW5hcGkgYHBhdGhgCgoyLiBVbml0IHRlc3QgKG9wdGlvbmFsKQozLiBQcmVwYXJlIGVudmlyb25tZW50IGZvciBkZXBsb3ltZW50IGxpa2U6CiAgICAqIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBgLmVudmAgb3IgYC5lbnYuZG9ja2VyYAogICAgKiBwcmVwcmUgZG9ja2VycyBpbWFnZXMKICAgICogcHJlcGFyZSBkYXRhYmFzZSBmb3IgaGFuZGxlCgpPbiBhbmQgb2ZmLCBkZXBlbmRzIG9uIHByb2plY3QgcmVxdWlyZW1lbnQgeW91IG5lZWQgdG8gcGVyZm9ybSBtb2RpZmljYXRpb24gYXQgb3BlbmFwaSBkb2N1bWVudCwgYW5kIHJlZ2VuZXJhdGUgdGhlIGNvZGUgYWdhaW4sIGFuZCBhZ2Fpbi4gSXQgaXMgaW1wb3J0YW50IHRvIGtub3cgaG93IHRvIHJlZ2VuZXJhdGUgdGhlIGNvZGUgd2l0aG91dCBvdmVyd3JpdGUgeW91ciBtb2RpZmljYXRpb24uIAoKVGVjaG5pY2FsbHkgaXQgaGFzIGZldyBydWxlczoKMS4gUmVtYWluIGFsbCBmaWxlIHdpdGggcHJlZml4IFoqLmdvIHJlbWFpbiB1bmNoYW5nZSAob3BlbmFwaS9aKi5nbyB0ZXN0L1oqLmdvKQoyLiBEdXJpbmcgZGV2ZWxvcG1lbnQsIGNyZWF0ZSBuZXcgYC5nb2AgZmlsZSBpbiBmb2xkZXIgYG9wZW5hcGkvYAozLiBDcmVhdGVkIGZpbGUgc2hvdWxkIG5vdCBzdGFydCB3aXRoIGBaYCwgdG8gYXZvaWQgaXQgbWl4ZWQgd2l0aCBnZW5lcmF0ZWQgZmlsZSAKNC4gUm9vdCBsZXZlbCBmaWxlIGFzIGJlbG93IGd1aWRlbGluZToKICAgICogYGdvLm1haW5gOiBhbHdheXMgb3ZlcndyaXRlIGJ5IGdlbmVyYXRvcgogICAgKiBgZ28ubW9kYDogIGFsd2F5cyBvdmVyd3JpdGUgYnkgZ2VuZXJhdG9yCiAgICAqIGBNYWtlZmlsZWA6ICBhbHdheXMgb3ZlcndyaXRlIGJ5IGdlbmVyYXRvcgogICAgKiBgLmVudi5kZWZhdWx0YDogYWx3YXlzIG92ZXJ3cml0ZSBieSBnZW5lcmF0b3IKICAgICogYC5lbnZgOiBmcmVlIHRvIGNoYW5nZSAgICAKICAgICogYC5lbnYuZG9ja2VyYDogZnJlZSB0byBjaGFuZ2UKICAgIAojIyMgRmlsZSBTdHJ1Y3R1cmUKQmVsb3cgaXMgc29tZSBleHBsYW5hdGlvbiBnZW5lcmF0ZWQgY29kZQoqIGBtYWluLmdvYDogZW50cnkgcG9pbnQKKiBgZ28ubW9kYDogZ28gcHJvamVjdCBzZXR0aW5nCiogYC5lbnYuZGVmYXVsdGA6IHRlbXBsYXRlIGZvciBgLmVudmAKKiBgTWFrZWZpa2VgOiBzdG9yZSBjb21tYW5kIGZvciBidWlsZCBwcm9qZWN0LCB5b3UgbWF5IGNoYW5nZSBpZiB5b3UgaGF2ZSBjb21wbGV4IHJlcXVpcmVtZW50CiogYERvY2tlcmZpbGVgOiB0ZW1wbGF0ZSBmb3IgZ2VuZXJhdGUgZG9ja2VyIGltYWdlLCBjaGFuZ2UgaXQgaWYgeW91IGhhdmUgc3BlY2lhbCBuZWVkIG9uIGRvY2tlcgoqIGBvcGVuYXBpL2A6IHN0b3JlIGFsbCBnbyBwcm9ncmFtLCB5b3Ugc2hhbGwgcGVyZm9ybSBkZXZlbG9wIGluIHRoaXMgZm9sZGVyIG9ubHkKKiBgb3BlbmFwaS9aTW9kZWxfKi5nb2A6IEFsbCBvcGVuYXBpIHNjaGVtYSB3aWxsIGdlbmVyYXRlIGFzIGdvIGBNb2RlbGAgaGVyZSAoc3RydWN0cykKKiBgb3BlbmFwaS9aUm91dGVyUmVnaXN0cnkuZ29gOiBMaXN0IGFsbCB0aGUgcm91dGUvcGF0aCBpbiB0aGlzIG1pY3Jvc2VydmljZSwgYW5kIGNvbm5lY3QgdG8gd2hpY2ggcm91dGUgaGFuZGxlCiogYG9wZW5hcGkvWlJvdXRlckhhbmRsZS5nb2A6IEtlZXAgYWxsIGRlZmF1bHQgYXV0byBnZW5lcmF0ZSBgcm91dGUgaGFuZGxlYCwgYmFzZSBvbiBuYW1lIGRlZmluZWQgaW4gb3BlbmFwaSdzIHBhdGgncyBvcGVyYXRpb25JZC4gCiogYG9wZW5hcGkvWlNlY3VyaXR5Ki5nb2A6IHNlY3VyaXR5IHNjaGVtZXMgc2V0dGluZyBhY2NvcmRpbmcgb3BlbmFwaSBkb2N1bWVudAoqIGBvcGVuYXBpL1pTZXJ2ZXIuZ29gOiBzdG9yZSBjb2RlIHRvIHJ1biBnaW4gc2VydmVyCiogYGFwaS9hcGkueWFtbGA6IHN0b3JlIG9wZW5hcGkgZG9jdW1lbnQsIHVzZWQgYnkgc3dhZ2dlci11aQoqIGBkaXN0LypgOiBwcm9qZWN0IGJpbmFyeSBidWlsZCBpbnRvIHRoaXMgZm9sZGVyCgojIyMgU2NoZW1hcyBPciBNb2RlbHMKT3BlbmFwaSdzIHNjaGVtYSBlcXVpdmFsZW50IHRvIGBtb2RlbGAgaW4gdGhpcyBwcm9qZWN0LCBhbmQgYWxsIG1vZGVsIHN0b3JlIGFzIGBvcGVuYXBpL1pNb2RlbF8qLmdvYC4gSW4gZ28sIGBNb2RlbGAgaXMga2luZCBvZiBzdHJ1Y3QsIHN1aXRhYmxlIGludGVyZmFjZSwgZ2V0dGVyL3NldHRlci92YWxpZGF0b3Igd2FzIHByZXBhcmVkLgoKVGhlIG1vZGVsIGlzIGltcG9ydGFudCBjYXVzZSBpdCBhY3QgYXMgcGF0dGVybiBvZiBhcGkgb3V0cHV0LiBSb3V0ZSBoYW5kbGUgY29tcGx5IG91dHB1dCBwYXR0ZXJuIHVzaW5nIHNwZWNpZmljIGBtb2RlbGAuCgojIyMgUm91dGVzCmBSb3V0ZWAgZXF1aXZhbGVudCB0byByZXN0IGFwaSBgcmVxdWVzdCBtZXRob2RgICsgYHBhdGhgLCBleGFtcGxlCiogR2V0IC9hcGkvc2VydmljZTEKKiBQb3N0IC9hcGkvdjEvc2VydmljZTIKKiBQdXQgL2FwaQoqIERlbGV0ZSAvYXBpL2NydWQKCiMjIyBSb3V0ZSBIYW5kbGVzCjEuIGBSb3V0ZSBoYW5kbGVgIGlzIHByb2dyYW1taW5nIGBmdW5jdGlvbmAgbGlrZSBgR2V0U3R1ZGVudHMoKWAgd2hpY2ggaXMgdHJpZ2dlciBieSBgcm91dGVgCjIuIG9wZW5hcGkgZG9jdW1lbnQgYG9wZXJhdGlvbklkYCBkZWNsYXJlIG5hbWUgb2YgYHJvdXRlIGhhbmRsZWAsIGFuZCBnZW5lcmF0b3Igd2lsbCBoZWxwIHlvdSBwcmVwYXJlIGR1bW15IHJvdXRlIGhhbmRsZS4gCgojIyBEZXZlbG9wIFJlYWwgUm91dGUgSGFuZGxlClRvIHByb3ZpZGUgcmVhbCBkYXRhIGluIG1pY3JvLXNlcnZpY2UsIHdlIHBlcmZvcm0gMyBzdGVwIGJlbG93OgoxLiBbVHJhbnNmZXIgUm91dGUgSGFuZGxlIEludG8gTmV3IEZpbGVdKHRyYW5zZmVyLXJvdXRlLWhhbmRsZS1pbnRvLW5ldy1maWxlKQoyLiBbRGVmaW5lIEhhbmRsZSBFeGlzdHMgSW4gRG9jdW1lbnRdKGRlZmluZS1oYW5kbGUtZXhpc3RzLWluLWRvY3VtZW50KQozLiBbQ3JlYXRlIEVudmlyb25tZW50IFZhcmlhYmxlc10oI2NyZWF0ZS1lbnZpcm9ubWVudC12YXJpYWJsZXMpCgojIyMgVHJhbnNmZXIgUm91dGUgSGFuZGxlIEludG8gTmV3IEZpbGUKMS4gQ3JlYXRlIG5ldyBmaWxlIGBvcGVuYXBpL3JvdXRlaGFuZGxlcy5nb2AgKG9yIG90aGVycyBuYW1lIHlvdSBsaWtlKQoyLiBgQ3V0IGFuZCBwYXN0ZWAgc3BlY2lmaWMgZnVuY3Rpb24gZnJvbSBgb3BlbmFwaS9aUm91dGVIYW5kbGUuZ29gIGludG8gYG9wZW5hcGkvcm91dGVoYW5kbGVzLmdvYC4gTGV0J3MgYXNzdW1lIGBnZXRNZW1vcnlJbmZvKGMgKmdpbi5Db250ZXh0KXt9YAogICAgKiByZW1haW4gYGdldE1lbW9yeUluZm8oKWAgaW4gYFpSb3V0ZUhhbmRsZS5nb2Agd2lsbCBjYXVzZSBkdXBsaWNhdGUgZnVuY3Rpb24gYW5kIGNhdXNlIGVycm9yCjMuIEVkaXQgY29udGVudCBvZiBgb3BlbmFwaS9yb3V0ZWhhbmRsZXMuZ29gIHRvIHNlcnZlIHJlYWwgZGF0YToKYGBgZ28KLy8gYXV0byBnZW5lcmF0ZSBieSBnZW5lcmF0b3IKcGFja2FnZSBvcGVuYXBpCgppbXBvcnQgKAoJImZtdCIKCSJydW50aW1lIgoKCSJnaXRodWIuY29tL2dpbi1nb25pYy9naW4iCgkvLyAibmV0L2h0dHAiCikKCgpmdW5jIGdldE1lbW9yeUluZm8oYyAqZ2luLkNvbnRleHQpIHsKCgl2YXIgbSBydW50aW1lLk1lbVN0YXRzCglydW50aW1lLlJlYWRNZW1TdGF0cygmbSkKCS8vIEZvciBpbmZvIG9uIGVhY2gsIHNlZTogaHR0cHM6Ly9nb2xhbmcub3JnL3BrZy9ydW50aW1lLyNNZW1TdGF0cwoJYWxsb2NhdGVkIDo9IGJUb01iKG0uVG90YWxBbGxvYykKCWF2YWlsYWJsZSA6PSBiVG9NYihtLlN5cykKCXBlcmNlbnQgOj0gaW50KChhbGxvY2F0ZWQvYXZhaWxhYmxlKSoxMDApIC8gMTAwCglhbGxvY2F0ZWRzdHIgOj0gZm10LlNwcmludGYoIiV2IE1CIiwgYWxsb2NhdGVkKQoJYXZhaWxhYmxlc3RyIDo9IGZtdC5TcHJpbnRmKCIldiBNQiIsIGF2YWlsYWJsZSkKCXBlcmNlbnRzdHIgOj0gZm10LlNwcmludGYoIiV2IHBlcmNlbnQiLCBwZXJjZW50KQoJYy5IZWFkZXIoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qc29uIikKCS8vIAoJLy8gdHlwZSBNb2RlbF9NZW1vcmllc0luZm8gc3RydWN0ewoJLy8gCVBlcmNlbnQgc3RyaW5nIGBqc29uOiJwZXJjZW50IiBiaW5kaW5nOiIiYCAvLwoJLy8gCVRvdGFsIHN0cmluZyBganNvbjoidG90YWwiIGJpbmRpbmc6IiJgIC8vCgkvLyAJVXNlZCBzdHJpbmcgYGpzb246InVzZWQiIGJpbmRpbmc6IiJgIC8vCiAgICAvLyAgVmVyc2lvbiBzdHJpbmcgYGpzb246InZlcnNpb24iYAoJLy8gfQoKCWRhdGEgOj0gTW9kZWxfTWVtb3JpZXNJbmZve30gLy9Nb2RlbF9NZW1vcmllc0luZm8gZGVmaW5lZCBhdCBvcGVuYXBpL1pNb2RlbF9NZW1vcmllc0luZm8uZ28KCWRhdGEuU2V0VG90YWwocGVyY2VudHN0cikKCWRhdGEuU2V0UGVyY2VudChhdmFpbGFibGVzdHIpCglkYXRhLlNldFVzZWQoYWxsb2NhdGVkc3RyKQogICAgZGF0YS5TZXRWZXJzaW9uKCJ2MSIpCgljLkpTT04oMjAwLCBkYXRhKQp9CgpmdW5jIGJUb01iKGIgdWludDY0KSB1aW50NjQgewoJcmV0dXJuIGIgLyAxMDI0IC8gMTAyNAp9CgpgYGAKIyMjIERlZmluZSBIYW5kbGUgRXhpc3RzIEluIERvY3VtZW50CjEuIEVkaXQgdGhlIG9yaWdpbmFsIG9wZW5hcGkgZG9jdW1lbnQsIGFkZCBlbnRyeSBgeC1vcGVyYXRpb25JZC1leGlzdHNgOgpgYGB5YW1sCiMgYm90dG9tIG9mIGZpbGUKeC1vcGVyYXRpb25JZC1leGlzdHM6CiAgZ2V0TWVtb3J5SW5mbzogdHJ1ZQpgYGAKMi4gVHJ5IHJlZ2VuZXJhdGUgdGhlIHNvdXJjZSBjb2RlLCBgZ2V0TWVtb3J5SW5mbygpYCBubyBsb25nZXIgZ2VuZXJhdGUgaW4gYFpSb3V0ZUhhbmRsZS5nb2AKCiMjIyBDcmVhdGUgRW52aXJvbm1lbnQgVmFyaWFibGVzCkxvdCBvZiB0aW1lLCB3ZSB3aXNoIHRvIHVzZSBjb25maWd1cmUgbWljcm9zZXJ2aWNlIGFjY29yZGluZyBkZXBsb3ltZW50IHJlcXVpcmVtZW50LCBzdWNoIGFzOgoxLiBEZWZpbmUgZGF0YWJhc2Ugc2VydmVyIGxvY2F0aW9uIGFuZCBjcmVkZW50aWFscwoyLiBPbi9PZmYgc3BlY2lmaWMgZnVuY3Rpb25zCjMuIERlZmluZSBhcGlrZXkgYW5kIGV0YwoKCjEuIERlZmluZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiBvcGVuYXBpIGRvY3VtZW50IHVzaW5nIGB4LWVudi12YXJzYCBhbmQgcmVnZW5lcmF0ZSB0aGUgc291cmNlIGNvZGUuIApFeGFtcGxlIGluIG9wZW5hcGkgZG9jdW1lbnQ6CmBgYHlhbWwKIyBib3R0b20gb2YgZmlsZQp4LW9wZXJhdGlvbklkLWV4aXN0czoKICBnZXRNZW1vcnlJbmZvOiB0cnVlCngtZW52LXZhcnM6CiAgQVBJVkVSU0lPTjogdjEuMQpgYGAKR2VuZXJhdGVkIGAuZW52LmRlZmF1bHRgIHdpbGwgYXV0b21hdGljYWxseSBhZGQgYmVsb3cgZW50cnkKYGBgZW52CkFQSVZFUlNJT049djEuMQpgYGAKMi4gbG9hZCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiByb3V0ZSBoYW5kbGUgdXNpbmcgYGdvZG90ZW52LmxvYWQoKWAgYW5kIGBvcy5HZXRlbnYoIkFQSVZFUlNJT04iKWAuIEV4YW1wbGUgb2YgdXBkYXRlZCBjb2RlOgpgYGBnbwoKcGFja2FnZSBvcGVuYXBpCgppbXBvcnQgKAoJImZtdCIKCSJvcyIKCSJydW50aW1lIgoKCSJnaXRodWIuY29tL2dpbi1nb25pYy9naW4iCgkiZ2l0aHViLmNvbS9qb2hvL2dvZG90ZW52IgoJbG9nICJnaXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyIKCS8vICJuZXQvaHR0cCIKKQoKZnVuYyBnZXRNZW1vcnlJbmZvKGMgKmdpbi5Db250ZXh0KSB7CgllcnIgOj0gZ29kb3RlbnYuTG9hZCgpCglpZiBlcnIgIT0gbmlsIHsKCQlsb2cuRmF0YWwoIkVycm9yIGxvYWRpbmcgLmVudiBmaWxlIikKCX0KCXZlcmlvbm5vIDo9IG9zLkdldGVudigiQVBJVkVSU0lPTiIpCgl2YXIgbSBydW50aW1lLk1lbVN0YXRzCglydW50aW1lLlJlYWRNZW1TdGF0cygmbSkKCS8vIEZvciBpbmZvIG9uIGVhY2gsIHNlZTogaHR0cHM6Ly9nb2xhbmcub3JnL3BrZy9ydW50aW1lLyNNZW1TdGF0cwoJYWxsb2NhdGVkIDo9IGJUb01iKG0uVG90YWxBbGxvYykKCWF2YWlsYWJsZSA6PSBiVG9NYihtLlN5cykKCXBlcmNlbnQgOj0gaW50KChhbGxvY2F0ZWQvYXZhaWxhYmxlKSoxMDApIC8gMTAwCglhbGxvY2F0ZWRzdHIgOj0gZm10LlNwcmludGYoIiV2IE1CIiwgYWxsb2NhdGVkKQoJYXZhaWxhYmxlc3RyIDo9IGZtdC5TcHJpbnRmKCIldiBNQiIsIGF2YWlsYWJsZSkKCXBlcmNlbnRzdHIgOj0gZm10LlNwcmludGYoIiV2IHBlcmNlbnQiLCBwZXJjZW50KQoJYy5IZWFkZXIoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qc29uIikKCS8vCgkvLyB0eXBlIE1vZGVsX01lbW9yaWVzSW5mbyBzdHJ1Y3R7CgkvLyAJUGVyY2VudCBzdHJpbmcgYGpzb246InBlcmNlbnQiIGJpbmRpbmc6IiJgIC8vCgkvLyAJVG90YWwgc3RyaW5nIGBqc29uOiJ0b3RhbCIgYmluZGluZzoiImAgLy8KCS8vIAlVc2VkIHN0cmluZyBganNvbjoidXNlZCIgYmluZGluZzoiImAgLy8KCS8vIH0KCglkYXRhIDo9IE1vZGVsX01lbW9yaWVzSW5mb3t9IC8vTW9kZWxfTWVtb3JpZXNJbmZvIGRlZmluZWQgYXQgb3BlbmFwaS9aTW9kZWxfTWVtb3JpZXNJbmZvLmdvCglkYXRhLlNldFRvdGFsKHBlcmNlbnRzdHIpCglkYXRhLlNldFBlcmNlbnQoYXZhaWxhYmxlc3RyKQoJZGF0YS5TZXRVc2VkKGFsbG9jYXRlZHN0cikKCWRhdGEuU2V0VmVyc2lvbih2ZXJpb25ubykKCWMuSlNPTigyMDAsIGRhdGEpCn0KCmZ1bmMgYlRvTWIoYiB1aW50NjQpIHVpbnQ2NCB7CglyZXR1cm4gYiAvIDEwMjQgLyAxMDI0Cn0KCmBgYAoKMy4gZGVmaW5lIGVudmlyb25tZW50IHZhcmlhYmxlIHZpYToKICAgICogZWRpdCBgLmVudmAgaW4gbm9uLWRvY2tlciBidWlsZAogICAgKiBlZGl0IGAuZW52LmRvY2tlcmAgaW4gZG9ja2VyIGJ1aWxkCiAgICAqIG9yLCBtb2RpZnkgaXQgaW4gY29tbWFuZCBsaW5lLCBgZXhwb3J0IFhfQVBJX0tleT0xMjM0NWAgCgojIyBCdWlsZCBQcm9qZWN0CldlIHNoYWxsIGJ1aWxkIHRoZSBwcm9qZWN0IHRvIHJ1biB0aGUgbWljcm8tc2VydmljZSwgZm9sbG93IGJlbG93IGluc3RydWN0aW9uLgoKIyMjIFNpbXBsZSBCdWlsZAoxLiBydW4gYmVsb3cgY29tbWFuZDoKYGBgYmFzaAptYWtlCmBgYAoyLiBUbyBydW4gdGhlIHNlcnZpY2U6CkxpbnV4L01hYzoKYGBgYmFzaAouLzx5b3VyLXByb2plY3QtbmFtZT4KYGBgCldpbmRvd3M6IGRvdWJsZSBjbGljayB0aGUgZmlsZW5hbWUgYDx5b3VyLXByb2plY3QtbmFtZT5gCiMjIyBCdWlsZCBGb3IgRGlzdHJpYnV0aW9uCklmIHlvdSB3aXNoIHRvIGJ1aWxkIGJpbmFyeSBmb3Igc3BlY2lmaWMgT1MgYW5kIGRpc3RyaWJ1dGUgbWFudWFsbHkuIEZvbG93IHN0ZXAKMS4gUnVuIGJlbG93IGNvbW1hbmQ6CmBgYGJhc2gKbWFrZSB3aW5kb3dzICNidWlsZCBmb3Igd2luZG93cwptYWtlIGxpbnV4ICNidWlsZCBmb3IgbGludXgKbWFrZSBtYWMgI2J1aWxkIGZvciBtYWMKbWFrZSBtYWMtYXJtICNidWlsZCBmb3IgbWFjIG0xIHR5cGUgcHJvY2Vzc29yCgpgYGAKMi4gRGlzdHJ1YnV0ZSBmaWxlIGluIGBkaXN0L2AsIGFsb25nIHdpdGggc3VpdGFibGUgYC5lbnZgIGZpbGUKCiMjIyBCdWlsZCBGb3IgRG9ja2VyCldlIGNhbiBidWlsZCBhbmQgcnVuIGRvY2tlciBpbWFnZSB2aWEgYmVsb3cgc3RlcDoKMS4gQ29weSBgLmVudi5kZWZhdWx0YCB0byBgLmVudi5kb2NrZXJgLCBhbmQgZGVmaW5lIGFwcHJvcHJpYXRlIGNvbnRlbnQKMi4gcnVuIGNvbW1hbmQ6CmBgYGJhc2gKbWFrZSBkb2NrZXJyZW1vdmUgI3JlbW92ZSBleGlzdGluZyBkb2NrZXIgCm1ha2UgZG9ja2VyICMgY3JlYXRlIGRvY2tlciBpbWFnZSBvbmx5Cm1ha2UgZG9ja2VycnVuICMgY3JlYXRlIGRvY2tlciBjb250YWluZXIKYGBgCm9yIHdlIGNhbiBzaW1wbGlmaWVkIGFzIHNpbmdsZSByb3cgY29tbWFuZDoKYGBgYmFzaAptYWtlIGRvY2tlcnJlbW92ZTsgbWFrZSBkb2NrZXIgJiYgbWFrZSBkb2NrZXJydW4KYGBgCjMuIFdlIGNhbiBjaGFuZ2UgRG9ja2VyIGltYWdlIGJ1aWxkIGZyb20gZGlmZmVyZW50IHNvdXJjZSBieSBlZGl0IGBEb2NrZXJmaWxlYC4gTGlrZSByZXBsYWNlIGBhbHBpbmVgIHRvIGB1YnVudHVgCjQuIFdlIGNhbiBjaGFuZ2UgZG9ja2VyIGltYWdlL2NvbnRhaW5lci9uZXR3b3JrIGJ5IGVkaXQgYE1ha2VmaWxlYAoKIyMgVW5pdCBUZXN0CkdlbmVyYXRvciBoZWxwIHlvdSBwcmVwYXJlIHJlYXNvbmFibGUgc3RydWN0dXJlIGZvciB1bml0IHRlc3QsIGhvd2V2ZXIgeW91IG5lZWQgdG8gY29weSBjb250ZW50IGludG8gc3VpdGFibGUgZmlsZSB0byBwcmV2ZW50IGVmZm9ydCBvdmVyd3JpdHRlbiB3aGVuIHJlZ2VuZXJhdGUgY29kZS4KWW91IG5lZWQgdG8gaW5zdGFsbCBgZ3JjYCBwYWNrYWdlIGZvciB1bml0IHRlc3QKaHR0cHM6Ly9qYWtlaG9sbXF1aXN0Lm1lZGl1bS5jb20vYWRkLXNvbWUtZnVuLXRvLXlvdXItY2xpLXdpdGgtZ3JjLWVhODY4ZGY5ODViNgoKCiMjIyBEZWZpbmUgUmVhbCBUZXN0CjEuIGV4cGFuZCBmb2xkZXIgLi90ZXN0LCBvcGVuIGFueSBmaWxlIChhc3N1bWUgWkdldF9NZW1vcnlfdGVzdC5nbykKMi4gc2Nyb2xsIGRvd24gYW5kIGZvbGxvdyBjb21tZW50LCBjb3B5IGNvbnRlbnQgaW50byB0ZXN0L0dldF9NZW1vcnkuZ28gKEZpbGUgbmFtZSBzaGFsbCBmb2xsb3cgY29tbWVudCkKYGBgZ28KLy8gY29weSBhbmQgbW9kaWZ5IGJlbG93IGNvbnRlbnQgYW5kIHB1dCBpbnRvIG5ldyBmaWxlIEdldF9NZW1vcnkuZ28gKGluIHRoaXMgdGVzdCBmb2xkZXIpCi8qCnBhY2thZ2UgdGVzdAppbXBvcnQgKAoJImlvIgouLi4KYGBgCjMuIGFmdGVyIHN0ZXAgMiwgZXJyb3IgaW4gWkdldF9NZW1vcnlfdGVzdC5nbyBzaG91bGQgZGlzYXBwZWFyCjQuIE1vZGlmeSBgR2V0X01lbW9yeS5nb2AgaWYgbmVjY2Vzc2FyeSB0byBzZXJ2ZSByZWFsIGNvbnRlbnQKNS4gcmVwZWF0IHNhbWUgc3RlcCAxLTQgZm9yIG90aGVycyBmaWxlIHVudGlsIGFsbCBlcnJvciBkaXNhcHBlYXI6CiAgICAqIGlmIHJlcXVlc3QgYm9keSBpcyByZXF1aXJlZCwgYEZ1bmN0aW9uTmFtZV9SZXF1ZXN0Qm9keSgpYCB3aWxsIGZpbGwgaW4gc2FtcGxlIGRhdGEgd2hpY2ggZGVmaW5lZCBpbiBvcGVuYXBpIGRvY3VtZW50CiAgICAqIFlvdSBjYW4gY2hhbmdlIHdob2xlIHN0cnVjdHVyZSBvZiB1bml0IHRlc3QgYXMgbG9uZyBhcyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gbmFtZSByZW1haW4KICAgICogRG9uJ3QgY2hhbmdlIGFueSBmaWxlIHN0YXJ0IHdpdGggWiouZ28sIGNhdXNlIGl0IHdpbGwgb3ZlcndyaXR0ZW4gYnkgZ2VuZXJhdG9yCgojIyMgRXhlY3V0ZSBVbml0IFRlc3QKRW5zdXJlIG1pY3Jvc2VydmljZSBpcyBhY3RpdmF0ZWQsIHJ1biBiZWxvdyBjb21tYW5kIGFuZCBzZWUgdGhlIHJlc3VsdDoKYGBgYmFzaAptYWtlIGFwaXRlc3QKYGBgCgojIyBTZWN1cmUgTWljcm9zZXJ2aWNlCldlIGNhbiBzZWN1cmUgcmVzdGFwaSB2aWEgZGVmaW5lIHNlY3J1aXR5U2NoZW1lIGluIG9wZW5hcGkgZG9jdW1lbnQuIAoKIyMjIFNlY3VyZSBXaXRoIEFwaWtleQoxLiBBZGQgc2VjdXJpdHkgU2NoZW1lcy4gQmVsb3cgaXMgYXBpS2V5IGV4YW1wbGU6CmBgYHlhbWwKY29tcG9uZW50czoKICBzZWN1cml0eVNjaGVtZXM6CiAgICBCYXNpY0FwaUtleToKICAgICAgdHlwZTogYXBpS2V5CiAgICAgIGluOiBoZWFkZXIKICAgICAgbmFtZTogWC1BcGktS2V5ICNlbnZpcm9ubWVudCB2YXJpYWJsZSBYX0FwaV9LZXkgd2lsbCBwcmVwYXJlIGF1dG9tYXRpY2FsbHkKYGBgCjIuIERlZmluZSB3aGljaCBhcGkgdXNlIGl0OgpgYGB5YW1sCnBhdGhzOgogIC9hcGkxOgogICAgZ2V0OgogICAgICBzdW1tYXJ5OiB3ZWxjb21lCiAgICAgIGRlc2NyaXB0aW9uOiBzaG93IG1zZyB1bmRlZmluZSByZXNvdXJjZQogICAgICBvcGVyYXRpb25JZDogIndlbGNvbWUiCiAgICAgIHNlY3VyaXR5OgogICAgICAgIC0gQmFzaWNBcGlLZXk6IFtdICAjIEdldCAvYXBpMSByZXF1aXJlIFgtQXBpLUtleSBkZWZpbmVkIGluIGhlYWRlcgpgYGAKCjMuIFJlLWdlbmVyYXRlIHRoZSBzb3VyY2UgY29kZToKICAgICogYFhfQXBpX0tleWAgd2lsbCBhdXRvbWF0aWNhbGx5IHByZXBhcmUgaW4gYC5lbnYuZGVmYXVsdGAKICAgICogYG9wZW5hcGkvWlNlY3VyaXR5X0Jhc2ljQXBpS2V5eS5nb2AgZ2VuZXJhdGVkCiAgICAqIHVuaXQgdGVzdCB0ZW1wbGF0ZSB1c2UgZW52IHZhciBYX0FwaV9LZXkgaW4gaGVhZGVyCjQuIFVwZGF0ZSBgLmVudmAgYW5kIGAuZW52LmRvY2tlcmAgaWYgYm90aCBmaWxlIGV4aXN0cywgYW5kIHJlc3RhcnQgdGhlIG1pY3JvLXNlcnZpY2UKNS4gVHJ5IHRoZSBgR2V0IC9hcGlgIGFnYWluIHdpdGggaGVhZGVyIGBYLUFwaS1LZXlgIGFzOgpgYGBiYXNoCmh0dHAgZ2V0IGxvY2FsaG9zdDo8cG9ydG5vPi9hcGkxIFgtQXBpLUtleTo8eW91LWtleS1jb2RlPgpgYGAKCiMgVG9kbwoxLiBBZGQgYHgtZ2VuZXJhdG9yLXNldHRpbmdgIHRvIGRpcmVjdCBzZXQgcHJvamVjdCBuYW1lLCBwb3J0IG51bWJlciBhbmQgZXRjIHN1aXRhYmxlIGNvbmZpZ3VyYXRpb24KMi4gcmVuYW1lIHRoaXMgcHJvamVjdCB0byBwcmV2ZW50IGNyYXNoIG5hbWUgd2l0aCBvZmZpY2lhbCBvcGVuYXBpLWdlbmVyYXRvcgozLiBzdXBwb3J0IG1vcmUgY29tcG9uZW50IHR5cGUKNC4gY2xpZW50IGdlbmVyYXRvcnMgZm9yIGRpZmZlcmVudCBraW5kIG9mIGxhbmd1YWdlcwo1LiBhZGQgc29tZSBjb21tb24gdGVtcGxhdGUgZm9yCiAgICogY3J1ZCBmb3IgZGlmZmVyZW50IGtpbmQgb2YgZGF0YWJhc2UKICAgKiBtZXNzYWdpbmcgdGVtcGxhdGUgZm9yIHNtcywgZW1haWwsIHB1c2ggbm90aWZpY2F0aW9ucwo2LiBvcGVuYXBpIDMuMQo3LiBtb3JlIHNlY3VyaXR5c2NoZW1lcwo4LiBtb3JlIGNvbXBsZXRlIGRhdGEgdmFsaWRhdGlvbgoK readmeEtag: '"4edb2a5baffc244679f5881a9fb93723099c2f96"' readmeLastModified: Fri, 09 Dec 2022 13:48:50 GMT repositoryId: 537831519 description: Openapi v3 microservices generator created: '2022-09-17T14:21:57Z' updated: '2024-01-12T18:38:11Z' language: Go archived: false stars: 8 watchers: 1 forks: 1 owner: SIMITGROUP logo: https://avatars.githubusercontent.com/u/5270141?v=4 license: MIT repoEtag: '"1de7746b338a8a111caaeb6281fde19ac909f3cf7c11764619ab94e43a3410e7"' repoLastModified: Fri, 12 Jan 2024 18:38:11 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/shavo007/k6-demo v3: true repositoryMetadata: base64Readme: >- IyBUeXBlU2NyaXB0IHdpdGggazYKCiFbYmFubmVyXShhc3NldHMvdHMtanMtazYucG5nKQoKaHR0cHM6Ly9ibG9nLnNoYW5lbGVlLm5hbWUvMjAyMS8xMi8xNS9wZXJmb3JtYW5jZS10ZXN0aW5nLXdpdGgtazYvCgpUaGlzIHJlcG9zaXRvcnkgc2hvd2Nhc2VzIGs2IHdpdGggdHlwZXNjcmlwdCBhbmQgZ2VuZXJhdGluZyBib2lsZXJwbGF0ZSBzY3JpcHRzIGZyb20geW91ciBPQVMgKE9wZW4gQVBJIFNwZWMpLiBrNiByZWNlbnRseSBvdXRsaW5lZCBpbiB0aG91Z2h0d29ya3MgW3RlY2ggcmFkYXJdKGh0dHBzOi8vd3d3LnRob3VnaHR3b3Jrcy5jb20vcmFkYXIvdG9vbHM/YmxpcGlkPTIwMjAxMDA3OCkgdG9vbHMgcXVhZHJhbnQuCgohWy5naXRodWIvd29ya2Zsb3dzL3B1c2gueW1sXShodHRwczovL2dpdGh1Yi5jb20vc2hhdm8wMDcvazYtZGVtby93b3JrZmxvd3MvLmdpdGh1Yi93b3JrZmxvd3MvcHVzaC55bWwvYmFkZ2Uuc3ZnP2JyYW5jaD1tYWluKQohW0dpdEh1YiB0b3AgbGFuZ3VhZ2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhbmd1YWdlcy90b3Avc2hhdm8wMDcvazYtZGVtbykKCi0gW1R5cGVTY3JpcHQgd2l0aCBrNl0oI3R5cGVzY3JpcHQtd2l0aC1rNikKICAtIFtQcmVyZXF1aXNpdGVzXSgjcHJlcmVxdWlzaXRlcykKICAtIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCiAgICAtIFtJbnN0YWxsIGRlcGVuZGVuY2llc10oI2luc3RhbGwtZGVwZW5kZW5jaWVzKQogIC0gW1VzYWdlL0V4YW1wbGVzXSgjdXNhZ2VleGFtcGxlcykKICAgIC0gW1J1bm5pbmcgdGhlIHRlc3RdKCNydW5uaW5nLXRoZS10ZXN0KQogICAgLSBbT0FTIGludGVncmF0aW9uXSgjb2FzLWludGVncmF0aW9uKQogICAgICAtIFtUZXN0IHJ1bm5pbmcgYWdhaW5zdCB0aGUgQVBJXSgjdGVzdC1ydW5uaW5nLWFnYWluc3QtdGhlLWFwaSkKICAgIC0gW09BdXRoMiBpbnRlZ3JhdGlvbl0oI29hdXRoMi1pbnRlZ3JhdGlvbikKICAgIC0gW0xvYWQgdGVzdGluZyB3aXRoIGluZmx1eGRiIGFuZCBncmFmYW5hXSgjbG9hZC10ZXN0aW5nLXdpdGgtaW5mbHV4ZGItYW5kLWdyYWZhbmEpCiAgLSBbUmVzb3VyY2VzXSgjcmVzb3VyY2VzKQogIC0gW1RPRE9dKCN0b2RvKQoKIyMgUHJlcmVxdWlzaXRlcwoKLSBbazZdKGh0dHBzOi8vazYuaW8vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvaW5zdGFsbGF0aW9uKQotIFtOb2RlSlNdKGh0dHBzOi8vbm9kZWpzLm9yZy9lbi9kb3dubG9hZC8pCi0gW1lhcm5dKGh0dHBzOi8veWFybnBrZy5jb20vZ2V0dGluZy1zdGFydGVkL2luc3RhbGwpCi0gW0RvY2tlcl0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZ2V0LWRvY2tlci8pCgojIyBJbnN0YWxsYXRpb24KCiMjIyBJbnN0YWxsIGRlcGVuZGVuY2llcwoKQ2xvbmUgdGhlIGdlbmVyYXRlZCByZXBvc2l0b3J5IG9uIHlvdXIgbG9jYWwgbWFjaGluZSwgbW92ZSB0byB0aGUgcHJvamVjdCByb290IGZvbGRlciBhbmQgaW5zdGFsbCB0aGUgZGVwZW5kZW5jaWVzIGRlZmluZWQgaW4gW2BwYWNrYWdlLmpzb25gXSguL3BhY2thZ2UuanNvbikKCmBgYGJhc2gKeWFybgpgYGAKCiMjIFVzYWdlL0V4YW1wbGVzCgojIyMgUnVubmluZyB0aGUgdGVzdAoKVG8gcnVuIGEgdGVzdCB3cml0dGVuIGluIFR5cGVTY3JpcHQsIHdlIGZpcnN0IGhhdmUgdG8gdHJhbnNwaWxlIHRoZSBUeXBlU2NyaXB0IGNvZGUgaW50byBKYXZhU2NyaXB0IGFuZCBidW5kbGUgdGhlIHByb2plY3QKCmBgYGJhc2gKeWFybiBidW5kbGUKYGBgCgpUaGlzIGNvbW1hbmQgY3JlYXRlcyB0aGUgZmluYWwgdGVzdCBmaWxlcyB0byB0aGUgYC4vZGlzdGAgZm9sZGVyLgoKT25jZSB0aGF0IGlzIGRvbmUsIHdlIGNhbiBydW4gb3VyIHNjcmlwdCB0aGUgc2FtZSB3YXkgd2UgdXN1YWxseSBkbywgZm9yIGluc3RhbmNlOgoKYGBgYmFzaAprNiBydW4gZGlzdC90ZXN0MS5qcwpgYGAKCiMjIyBPQVMgaW50ZWdyYXRpb24KCj4gU2hvd2Nhc2UgZ2VuIGs2IHNjcmlwdCBmcm9tIE9BUyAoT3BlbiBBUEkgU3BlYykKCkdlbmVyYXRlIGs2cyBzY3JpcHRzIHZpYSBbb3BlbiBhcGkgZ2VuZXJhdG9yXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvZG9jcy9nZW5lcmF0b3JzLyNjbGllbnQtZ2VuZXJhdG9ycykgYW5kIHRoZSBbb2FzIGZpbGVdKG9hczMueWFtbCkuIENhbiBydW4gdGhlIENMSSB2aWEgdGhlIGRvY2tlciBpbWFnZS4KCmBgYGJhc2gKZG9ja2VyIHB1bGwgb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaQoKZG9ja2VyIHJ1biAtLXJtIC12ICR7UFdEfTovbG9jYWwgb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZSBcCiAgICAtaSAvbG9jYWwvb2FzMy55YW1sIFwKICAgIC1nIGs2IFwKICAgIC1vIC9sb2NhbC9rNi1vYXMzLyBcCiAgICAtLXNraXAtdmFsaWRhdGUtc3BlYwoKYGBgCgpUaGlzIGdlbmVyYXRlcyBbc2NyaXB0LmpzXSguL2s2LW9hczMvc2NyaXB0LmpzKSBhbmQgaXMgYSBncmVhdCBzdGFydCB0byBoZWxwIHN1cHBvcnQgZGVmaW5pbmcgeW91ciBwZXJmIHRlc3QgY2FzZXMuCgoqKk5CKiogSXQgaXMgYm9pbGVycGxhdGUgc28gd2lsbCBuZWVkIHRvIGJlIHJlZmluZWQgYWZ0ZXIgZm9yIHJlLXVzZQoKVGhpcyBhdXRvLWdlbmVyYXRpb24gb2YgdGhlIGxvYWQgdGVzdCBzY3JpcHQgd2lsbCBoZWxwIHN0cmVhbWxpbmUgdGhlIEFQSSB0ZXN0aW5nIHByb2Nlc3MsIGtlZXBpbmcgb24gcGFyIHdpdGggdGhlIGxhdGVzdCBjaGFuZ2VzIHRvIHRoZWlyIEFQSXMgYW5kIHNwZWNpZmljYXRpb25zLgoKIyMjIyBUZXN0IHJ1bm5pbmcgYWdhaW5zdCB0aGUgQVBJCgpgYGBiYXNoCmRvY2tlciBydW4gLWQgLXA4MDkwOjgwODEgc2hhbmVsZWUwMDcvZ3JlZXRpbmdzLWFwaTpsYXRlc3QgI3J1biBncmVldGluZ3MgQVBJCnlhcm4gYnVuZGxlCms2IHJ1biAtZSBFTlY9bG9jYWwgZGlzdC9ncmVldGluZ3MuanMKeWFybiBodG1sICNnZW5lcmF0ZSBhIGh0bWwgcmVwb3J0CmBgYAoKIyMjIE9BdXRoMiBpbnRlZ3JhdGlvbgoKPiBTaG93Y2FzZSBnZW4gdHlwZXMgZnJvbSBvcGVuIGFwaSBnZW5lcmF0b3IgYW5kIGs2IHNjcmlwdHMgZm9yIFticGF5IEFQSV0oLi9icGF5L29hczMueWFtbCkKCi0gR2VuZXJhdGUgdHlwZXNjcmlwdCBjbGllbnQgc2RrIChmb3IgdHlwZXMpCi0gR2VuZXJhdGUgazYgc2NyaXB0cyBmcm9tIE9BUwoKYGBgYmFzaAojIGdlbiBjbGllbnQgc2RrIGZyb20gT0FTIHVzaW5nIGdlbmVyYXRvciB0eXBlc2NyaXB0CmRvY2tlciBydW4gLS1ybSAtdiAke1BXRH06L2xvY2FsIG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkgZ2VuZXJhdGUgXAogICAgLWkgL2xvY2FsL2JwYXkvb2FzMy55YW1sIFwKICAgIC1nIHR5cGVzY3JpcHQgXAogICAgLW8gL2xvY2FsL2JwYXkvYnBheS1jbGllbnQvIFwKICAgIC0tYWRkaXRpb25hbC1wcm9wZXJ0aWVzPXN1cHBvcnRzRVM2PXRydWUscGxhdGZvcm09bm9kZSBcCiAgICAtLXNraXAtdmFsaWRhdGUtc3BlYwoKIyBPUiBnZW5lcmF0ZSB0eXBlcyBmcm9tIE9BUyB2aWEgb3BlbmFwaS10eXBlc2NyaXB0Cm5weCBvcGVuYXBpLXR5cGVzY3JpcHQgYnBheS9vYXMzLnlhbWwgLS1vdXRwdXQgYnBheS90eXBlcy9zY2hlbWEudHMKbnB4IG9wZW5hcGktdHlwZXNjcmlwdCBicGF5L29hczMueWFtbCAtLW91dHB1dCBzcmMvYnBheS9zY2hlbWEudHMKCiMgZ2VuIGs2IHNjcmlwdHMKZG9ja2VyIHJ1biAtLXJtIC12ICR7UFdEfTovbG9jYWwgb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZSBcCiAgICAtaSAvbG9jYWwvYnBheS9vYXMzLnlhbWwgXAogICAgLWcgazYgXAogICAgLW8gL2xvY2FsL2JwYXkvazYvIFwKICAgIC0tc2tpcC12YWxpZGF0ZS1zcGVjCgojcnVuIGxvYWQgdGVzdCBhZ2FpbnN0IGJwYXkgYXBpCnlhcm4gYnVuZGxlCkNMSUVOVF9JRD1SRURBQ1RFRCBDTElFTlRfU0VDUkVUPVJFREFDVEVEIGs2IHJ1biBkaXN0L2JwYXkuanMKYGBgCgojIyMgTG9hZCB0ZXN0aW5nIHdpdGggaW5mbHV4ZGIgYW5kIGdyYWZhbmEKCmBgYGJhc2gKZG9ja2VyIGNvbXBvc2UgdXAgLWQgI3J1biB0aGUgc2VydmljZXMgaW4gdGhlIGJhY2tncm91bmQKZG9ja2VyLWNvbXBvc2UgcnVuIC12IFwKICAgICRQV0QvZGlzdDovc2NyaXB0cyBcCiAgICBrNiBydW4gLWUgRU5WPWRvY2tlciAgL3NjcmlwdHMvZ3JlZXRpbmdzLmpzCgpgYGAKCkFjY2VzcyBncmFmYW5hOiBgb3BlbiBodHRwOi8vbG9jYWxob3N0OjMwMDBgIGFuZCB2ZXJpZnkgY29ubmVjdGlvbiB0byBpbmZsdXhkYiBkYXRhc291cmNlLiBBY2Nlc3MgdGhlIHByZS1kZWZpbmVkIGRhc2hib2FyZCBhbmQgc2V0IGludGVydmFsIHRvIHRoZSBwYXN0IDUgbWlucy4gWW91IHNob3VsZCBzZWUgc2ltaWxhciBvdXRsaW5lIHRvIGJlbG93CgohW0dyYWZhbmEgZGFzaGJvYXJkXSguL2Fzc2V0cy9ncmFmYW5hLnBuZykKCiMjIFJlc291cmNlcwoKLSBbazYgYW5kIG9hc10oaHR0cHM6Ly9rNi5pby9ibG9nL2xvYWQtdGVzdGluZy15b3VyLWFwaS13aXRoLXN3YWdnZXItb3BlbmFwaS1hbmQtazYvKQotIFtrNiB2cyBqbWV0ZXJdKGh0dHBzOi8vazYuaW8vYmxvZy9rNi12cy1qbWV0ZXIvKQotIFtwcmV0dGllciBwcmUtY29tbWl0XShodHRwczovL3ByZXR0aWVyLmlvL2RvY3MvZW4vcHJlY29tbWl0Lmh0bWwpCgojIyBUT0RPCgotIHJhaXNlIGlzc3VlIG9uIHN0ZG91dCBjaGFycwotIHNob3djYXNlIGJyb3dzZXIgcmVjb3JkZXIK readmeEtag: '"66be7b89fd66b5b28af9b5bf3e10f01be38221c0"' readmeLastModified: Fri, 23 Jun 2023 07:00:22 GMT repositoryId: 360389583 description: demo perf tests using k6 and OAS (open api spec) created: '2021-04-22T04:16:45Z' updated: '2024-10-26T10:12:24Z' language: TypeScript archived: false stars: 8 watchers: 3 forks: 0 owner: shavo007 logo: https://avatars.githubusercontent.com/u/5466825?v=4 license: MIT repoEtag: '"c433602ca0885f54204a3e3ac4ae24250f6ca89495b5d51844406a709c6baf3a"' repoLastModified: Sat, 26 Oct 2024 10:12:24 GMT foundInMaster: true category: Code Generators id: 4d586216eabc1d69aa1fe6cb703eee26 - source: openapi3 tags repository: https://github.com/ikemtz/openapi-ts-generator v3: true repositoryMetadata: base64Readme: >- WyFbQnVpbGQgU3RhdHVzXShodHRwczovL2lrZW10ei52aXN1YWxzdHVkaW8uY29tL0NJJTIwQ0QvX2FwaXMvYnVpbGQvc3RhdHVzL29wZW5hcGktdHMtZ2VuZXJhdG9yP2JyYW5jaE5hbWU9bWFzdGVyKV0oaHR0cHM6Ly9pa2VtdHoudmlzdWFsc3R1ZGlvLmNvbS9DSSUyMENEL19idWlsZC9sYXRlc3Q/ZGVmaW5pdGlvbklkPTIwJmJyYW5jaE5hbWU9bWFzdGVyKSBbIVtucG0gdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL29wZW5hcGktdHMtZ2VuZXJhdG9yLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktdHMtZ2VuZXJhdG9yKSBbIVtucG0gZG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kdC9vcGVuYXBpLXRzLWdlbmVyYXRvcildKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktdHMtZ2VuZXJhdG9yKSBbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1pa2VtdHpfb3BlbmFwaS10cy1nZW5lcmF0b3ImbWV0cmljPWFsZXJ0X3N0YXR1cyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9aWtlbXR6X29wZW5hcGktdHMtZ2VuZXJhdG9yKSBbIVtJc3N1ZXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy1yYXcvaWtlbXR6L09wZW5BcGktVFMtR2VuZXJhdG9yKV0oaHR0cHM6Ly9naXRodWIuY29tL2lrZW10ei9vcGVuYXBpLXRzLWdlbmVyYXRvci9pc3N1ZXMpIFshW0NvdmVyYWdlXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1pa2VtdHpfb3BlbmFwaS10cy1nZW5lcmF0b3ImbWV0cmljPWNvdmVyYWdlKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1pa2VtdHpfb3BlbmFwaS10cy1nZW5lcmF0b3IpIFshW0xpbmVzIG9mIENvZGVdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWlrZW10el9vcGVuYXBpLXRzLWdlbmVyYXRvciZtZXRyaWM9bmNsb2MpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWlrZW10el9vcGVuYXBpLXRzLWdlbmVyYXRvcikgWyFbU2VjdXJpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1pa2VtdHpfb3BlbmFwaS10cy1nZW5lcmF0b3ImbWV0cmljPXNlY3VyaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9aWtlbXR6X29wZW5hcGktdHMtZ2VuZXJhdG9yKSBbIVtDb2RlUUxdKGh0dHBzOi8vZ2l0aHViLmNvbS9pa2VtdHovb3BlbmFwaS10cy1nZW5lcmF0b3IvYWN0aW9ucy93b3JrZmxvd3MvY29kZXFsLWFuYWx5c2lzLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vaWtlbXR6L29wZW5hcGktdHMtZ2VuZXJhdG9yL2FjdGlvbnMvd29ya2Zsb3dzL2NvZGVxbC1hbmFseXNpcy55bWwpCgojIE9wZW5BcGktVFMtR2VuZXJhdG9yCgpOUE0gcGFja2FnZSBiYXNlZCBvbiBbc3dhZ2dlci10cy1nZW5lcmF0b3JdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3N3YWdnZXItdHMtZ2VuZXJhdG9yKSB0byBnZW5lcmF0ZSB0eXBlc2NyaXB0IG1vZGVscyBmb3IgZW5kcG9pbnRzIGRvY3VtZW50ZWQgYnkgc3dhZ2dlciB1c2luZyB0aGUgcmVsYXRpdmVseSBuZXcgW09wZW5BUEkgc3BlY10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9hYm91dC8pLgoKIyMgVHlwZVNjcmlwdCB1c2FnZSB3aXRoIGEgaG9zdGVkIE9wZW5BcGkgU3BlYyBkb2N1bWVudC4KCmBgYGphdmFzY3JpcHQKaW1wb3J0IHsgZ2VuZXJhdGVUc01vZGVscyB9IGZyb20gJ29wZW5hcGktdHMtZ2VuZXJhdG9yJzsKCmdlbmVyYXRlVHNNb2RlbHMoewogIG9wZW5BcGlKc29uVXJsOiAne1lvdXIgU3dhZ2dlciBFbnBvaW50IFVSTCBoZXJlfScsCiAgb3V0cHV0UGF0aDogJy4ve291dHB1dEZvbGRlcn0vJywKfSk7CmBgYAoKIyMgVHlwZVNjcmlwdCB1c2FnZSB3aXRoIGFuIE9wZW5BcGkgU3BlYyBkb2N1bWVudCBzdG9yZWQgb24geW91ciBsb2NhbCBjb21wdXRlci4KCmBgYGphdmFzY3JpcHQKaW1wb3J0IHsgZ2VuZXJhdGVUc01vZGVscyB9IGZyb20gJ29wZW5hcGktdHMtZ2VuZXJhdG9yJzsKCmdlbmVyYXRlVHNNb2RlbHMoewogIG9wZW5BcGlKc29uRmlsZU5hbWU6ICd7bG9jYXRpb24gYW5kIGZpbGUgbmFtZSBvZiB5b3VyIE9wZW5BcGkgZG9jdW1lbnR9JywKICBvdXRwdXRQYXRoOiAnLi97b3V0cHV0Rm9sZGVyfS8nLAp9KTsKYGBgCgojIyBKYXZhc2NyaXB0IHVzYWdlIHdpdGggYSBob3N0ZWQgT3BlbkFwaSBTcGVjIGRvY3VtZW50LgoKYGBgamF2YXNjcmlwdApjb25zdCBnZW5lcmF0b3IgPSByZXF1aXJlKCdvcGVuYXBpLXRzLWdlbmVyYXRvcicpOwoKZ2VuZXJhdG9yLmdlbmVyYXRlVHNNb2RlbHMoewogIG9wZW5BcGlKc29uVXJsOiAne1lvdXIgU3dhZ2dlciBFbnBvaW50IFVSTCBoZXJlfScsCiAgb3V0cHV0UGF0aDogJy4ve291dHB1dEZvbGRlcn0vJywKICBnZW5Bbmd1bGFyRm9ybUdyb3VwczogdHJ1ZSAvKiBTZXQgdGhpcyB0byB0cnVlIGlmIG9ubHkgaWYgeW91J3JlIGluIGFuIEFuZ3VsYXIgcHJvamVjdCovCn0pOwpgYGAKCiMjIEphdmFzY3JpcHQgdXNhZ2Ugd2l0aCBhbiBPcGVuQXBpIFNwZWMgZG9jdW1lbnQgc3RvcmVkIG9uIHlvdXIgbG9jYWwgY29tcHV0ZXIuCgpgYGBqYXZhc2NyaXB0CmNvbnN0IGdlbmVyYXRvciA9IHJlcXVpcmUoJ29wZW5hcGktdHMtZ2VuZXJhdG9yJyk7CgpnZW5lcmF0b3IuZ2VuZXJhdGVUc01vZGVscyh7CiAgb3BlbkFwaUpzb25GaWxlTmFtZTogJ3tsb2NhdGlvbiBhbmQgZmlsZSBuYW1lIG9mIHlvdXIgT3BlbkFwaSBkb2N1bWVudH0nLAogIG91dHB1dFBhdGg6ICcuL3tvdXRwdXRGb2xkZXJ9LycsCn0pOwpgYGAKCiMjIFdhbnQgdG8gaW5jbHVkZSBBbmd1bGFyIEZvcm1Hcm91cCBGYWN0b3JpZXM/CgpgYGBqYXZhc2NyaXB0CmNvbnN0IGdlbmVyYXRvciA9IHJlcXVpcmUoJ29wZW5hcGktdHMtZ2VuZXJhdG9yJyk7CgpnZW5lcmF0b3IuZ2VuZXJhdGVUc01vZGVscyh7CiAgb3BlbkFwaUpzb25GaWxlTmFtZTogJ3tsb2NhdGlvbiBhbmQgZmlsZSBuYW1lIG9mIHlvdXIgT3BlbkFwaSBkb2N1bWVudH0nLAogIG91dHB1dFBhdGg6ICcuL3tvdXRwdXRGb2xkZXJ9LycsCiAgZ2VuQW5ndWxhckZvcm1Hcm91cHM6IHRydWUKfSk7CmBgYAoKIyMgV29ya2luZyBleGFtcGxlIHdpdGggTlJTUnggYmFzZWQgc2VydmljZQoKYGBgamF2YXNjcmlwdAppbXBvcnQgeyBnZW5lcmF0ZVRzTW9kZWxzIH0gZnJvbSAnb3BlbmFwaS10cy1nZW5lcmF0b3InOwoKZ2VuZXJhdGVUc01vZGVscyh7CiAgb3BlbkFwaUpzb25Vcmw6ICdodHRwczovL2ltLXdhLWNtcG8tbnJzci5henVyZXdlYnNpdGVzLm5ldC9zd2FnZ2VyL3YxL3N3YWdnZXIuanNvbicsCiAgb3V0cHV0UGF0aDogJy4vbW9kZWxzLycsCiAgdHlwZUZpbHRlckNhbGxCYWNrOiAodmFsLCBpLCBhcnIpID0+ICF2YWwubmFtZS5lbmRzV2l0aCgnT0RhdGFFbnZlbG9wZScpLAogIHZhbHVlUHJvcGVydHlUeXBlRmlsdGVyQ2FsbEJhY2s6ICh2YWwsIGksIGFycikgPT4gIXZhbC5uYW1lLnN0YXJ0c1dpdGgoJ2NyZWF0ZWQnKSAmJiAhdmFsLm5hbWUuc3RhcnRzV2l0aCgndXBkYXRlZCcpLAp9KTsKYGBgCgpDaGVjayBvdXQgW29wZW5hcGktbWVybWFpZF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb3BlbmFwaS1tZXJtYWlkKSwgaXQgd2lsbCBhdXRvLWdlbmVyYXRlIG1lcm1haWQgZW50aXR5IGRpYWdyYW1zIHVzaW5nIHlvdXIgc3dhZ2dlciBkb2NzLgo= readmeEtag: '"9d868013c8ad2230384eb0a0e72d077033d6c9c0"' readmeLastModified: Wed, 28 Feb 2024 06:22:26 GMT repositoryId: 231400862 description: >- NPM package based on swagger-ts-generator to generate typescript models for endpoints documented by swagger using the relatively new OpenAPI spec. created: '2020-01-02T14:43:45Z' updated: '2026-02-01T00:09:45Z' language: TypeScript archived: false stars: 8 watchers: 1 forks: 3 owner: ikemtz logo: https://avatars.githubusercontent.com/u/6444182?v=4 license: MIT repoEtag: '"f5885fcb7074ccda5751919eadf974126e0a5bd5ea4ec46415ce64e3c2011467"' repoLastModified: Sun, 01 Feb 2026 00:09:45 GMT foundInMaster: true category: SDK id: 6dae950c0e9f5ec81c345d076f76834e - source: openapi3 tags repository: https://github.com/meabed/swagger-to-typescript-client v3: true repositoryMetadata: base64Readme: >- IyBzd2FnZ2VyLXRvLXR5cGVzY3JpcHQtY2xpZW50ClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL21lYWJlZC9zd2FnZ2VyLXRvLXR5cGVzY3JpcHQtY2xpZW50L2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbWVhYmVkL3N3YWdnZXItdG8tdHlwZXNjcmlwdC1jbGllbnQvYWN0aW9ucy93b3JrZmxvd3MvY2kueW1sKQpbIVtOUE0gdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9zd2FnZ2VyLXRvLXR5cGVzY3JpcHQtY2xpZW50LnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3N3YWdnZXItdG8tdHlwZXNjcmlwdC1jbGllbnQpClshW0Rvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vc3dhZ2dlci10by10eXBlc2NyaXB0LWNsaWVudC5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zd2FnZ2VyLXRvLXR5cGVzY3JpcHQtY2xpZW50KQpbIVtVTlBLR10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9VTlBLRy1PSy0xNzlCRDcuc3ZnKV0oaHR0cHM6Ly91bnBrZy5jb20vYnJvd3NlL3N3YWdnZXItdG8tdHlwZXNjcmlwdC1jbGllbnRAbGF0ZXN0LykKCgojIyMgQSBDTEkgdG8gR2VuZXJhdGUgdHlwZXNjcmlwdCBheGlvcyBjbGllbnQgZnJvbSBzd2FnZ2VyICYgb3BlbmFwaSBmaWxlCgojIyBJbnN0YWxsYXRpb24KTlBNIApgYGBucG0KbnBtIGluc3RhbGwgLS1zYXZlIHN3YWdnZXItdG8tdHlwZXNjcmlwdC1jbGllbnQKYGBgCllhcm4KYGBgeWFybgp5YXJuIGFkZCBzd2FnZ2VyLXRvLXR5cGVzY3JpcHQtY2xpZW50CmBgYAoKCgojIyBVc2FnZQpgYGAKbm9kZSAuL25vZGVfbW9kdWxlcy9zd2FnZ2VyLXRvLXR5cGVzY3JpcHQtY2xpZW50L2Rpc3QvaW5kZXguanMgLS1wa2cgY2xpZW50LW5hbWUgLS1vdXRwdXQgLi9zZGsgLS1zd2FnZ2VyIC4vc3dhZ2dlci5qc29uCmBgYAoKT3IgdXNlIE5QWCAKYGBgCm5weCBzd2FnZ2VyLXRvLXR5cGVzY3JpcHQtY2xpZW50IC0tcGtnIGNsaWVudC1uYW1lIC0tb3V0cHV0IC4vc2RrIC0tc3dhZ2dlciAuL3N3YWdnZXIuanNvbgpgYGAKCiMjIEV4YW1wbGUKVEJBCg== readmeEtag: '"ab535ba3dc0fda805be6793e7c98c8c4788e1dcc"' readmeLastModified: Wed, 26 Apr 2023 12:59:24 GMT repositoryId: 412679955 description: A CLI to Generate typescript axios client from swagger & openapi file created: '2021-10-02T03:30:44Z' updated: '2025-06-25T15:57:25Z' language: TypeScript archived: false stars: 7 watchers: 1 forks: 0 owner: meabed logo: https://avatars.githubusercontent.com/u/45731?v=4 license: MIT repoEtag: '"ac542d2af5b4b2ce0ec60bf9a544146a51862ba3bec8beeb1dc100ba0da706dd"' repoLastModified: Wed, 25 Jun 2025 15:57:25 GMT foundInMaster: true category: - SDK - Parsers id: 0b0bcf6834af8b5ba21743dc059e389d - source: openapi3 tags repository: https://github.com/playtikaoss/rapidoc-spring-boot v3: true id: 83ce1dc12859550644790d9d62b58766 repositoryMetadata: base64Readme: >- PSBSYXBpZG9jIFNwcmluZyBCb290IExpYnJhcnkKOnRvYzoKCipUTERSOiogTW9kZXJuIFN3YWdnZXIgVUkgZm9yIHlvdXIgT3BlbiBBcGkgc3BlY2lmaWNhdGlvbiBpbiBTcHJpbmcgQm9vdCBzZXJ2aWNlcy4KCj09IFdobyBpcyBleHBlY3RlZCB0byB1c2UgdGhpcyBsaWJyYXJ5PwoKLSB5b3UgaGF2ZSBPcGVuQXBpIFNwZWNpZmljYXRpb24gZmlsZSBmb3IgeW91ciBBUEk7Ci0geW91IHVzZSBodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3RyZWUvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItbWF2ZW4tcGx1Z2luW09wZW5BcGkgQ29kZSBHZW5lcmF0b3IgcGx1Z2luXTsKLSB5b3Ugd2FudCBTd2FnZ2VyIFVJIHRvIGJlIGJhc2VkIG9uIG9yaWdpbmFsIE9wZW5BcGkgU3BlY2lmaWNhdGlvbiBmaWxlOwotIHlvdSBsaWtlIGhvdyBodHRwczovL3JhcGlkb2N3ZWIuY29tL2luZGV4Lmh0bWxbUmFwaURvY10gVUkgbG9va3MgbGlrZTsKLSB5b3UgaGF2ZSBTcHJpbmcgQm9vdCBhcHBsaWNhdGlvbi4KCj09IEhvdyBVSSBsb29rcyBsaWtlPwoKaW1hZ2U6OnJhcGlkb2MtdWkucG5nW3dpZHRoPTgwMF0KCk9yIGhhdmUgYSBsb29rIGhlcmU6IGh0dHBzOi8vcmFwaWRvY3dlYi5jb20vZXhhbXBsZXMvcGV0c3RvcmUtZXh0ZW5kZWQuaHRtbAoKPT0gSG93IHRvIGNvbmZpZ3VyZT8KCi4gKltJbXBvcnRhbnRdKiBSZW1vdmUgU3ByaW5nRG9jIGFuZCBTd2FnZ2VyIFVJIGRlcGVuZGVuY2llcworCk1ha2Ugc3VyZSB0aGF0IHRoZXJlIGlzIG5vIGBvcmcuc3ByaW5nZG9jIDogc3ByaW5nZG9jLW9wZW5hcGktdWlgIGFuZCBgb3JnLndlYmphcnMgOiBzd2FnZ2VyLXVpYCBkZXBlbmRlbmNpZXMgb24gY2xhc3NwYXRoLgoKLiBBZGQgZGVwZW5kZW5jeSBgY29tLnBsYXl0aWthIDogcmFwaWRvYy1zcHJpbmctYm9vdGAKKwotLQoKW3NvdXJjZSx4bWxdCi0tLS0KPGRlcGVuZGVuY3k+CiAgICA8Z3JvdXBJZD5jb20ucGxheXRpa2E8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5yYXBpZG9jLXNwcmluZy1ib290PC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+aW5zZXJ0X3ZlcnNpb25faGVyZTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgotLS0tCi0tCgouIENvbmZpZ3VyZSBwcm9wZXJ0aWVzCisKCnw9PT0KfFByb3BlcnR5IHxEZXNjcmlwdGlvbiB8RGVmYXVsdCB2YWx1ZQoKfGBvcGVuYXBpLnJhcGlkb2MuZW5hYmxlZGAKfEVuYWJsZXMvZGlzYWJsZXMgYXV0b2NvbmZpZ3VyYXRpb24gZm9yIFJhcGlkb2MuCnxgdHJ1ZWAKCnxgb3BlbmFwaS5yYXBpZG9jLm9wZW4tYXBpLXNwZWMuZmlsZS1uYW1lYAp8TmFtZSBvZiB0aGUgT3BlbiBBcGkgU3BlYyBmaWxlLgp8YG9wZW5hcGkueWFtbGAKCnxgb3BlbmFwaS5yYXBpZG9jLm9wZW4tYXBpLXNwZWMucGF0aGAKfFBhdGggdG8gdGhlIE9wZW4gQXBpIFNwZWMgZmlsZSBpbnNpZGUgYC9zcmMvbWFpbi9yZXNvdXJjZXNgIGZvbGRlci4KfGAvb3BlbmFwaS9gCgp8PT09CgoKPT0gQXZhaWxhYmxlIGVuZHBvaW50cwoKTGlicmFyeSBleHBvc2VzIHRoZSBmb2xsb3dpbmcgZW5kcG9pbnRzOgoKLSBgL3YzL2FwaS1kb2NzYCAtLSBwcm92aWRlcyBPcGVuIEFwaSBTcGVjaWZpY2F0aW9uIGZpbGU7Ci0gYC9zd2FnZ2VyLXVpLmh0bWxgIC0tIHByb3ZpZGVzIFJhcGlEb2MgVUkgZm9yIHRoZSBPcGVuIEFwaSBTcGVjaWZpY2F0aW9uLgoKPT0gRGVtbyBwcm9qZWN0CgpEZW1vIHByb2plY3QgaXMgbG9jYXRlZCBpbiBtb2R1bGUgYHJhcGlkb2Mtc3ByaW5nLWJvb3QtZGVtb2AuIFN0YXJ0IGFwcGxpY2F0aW9uIGFuZCBoaXQgYGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9zd2FnZ2VyLXVpLmh0bWxgIGluIGJyb3dzZXIuCgoK readmeEtag: '"4c1217a2a12897a74f822b0211303c5095ef3ff6"' readmeLastModified: Tue, 07 Jun 2022 14:18:00 GMT repositoryId: 499638084 description: Rapidoc Open Api UI for Spring Boot created: '2022-06-03T20:08:47Z' updated: '2023-04-21T05:42:15Z' language: Java archived: false stars: 7 watchers: 5 forks: 1 owner: PlaytikaOSS logo: https://avatars.githubusercontent.com/u/397334?v=4 license: MIT repoEtag: '"8fb57a2d34b21895654cd8569761555145df04bfb62816f0ce90c5b8e08a3ca6"' repoLastModified: Fri, 21 Apr 2023 05:42:15 GMT category: SDK foundInMaster: true oldLocations: - https://github.com/playtika/rapidoc-spring-boot - source: openapi3 tags repository: https://github.com/birddevelper/notebookmanager v3: true repositoryMetadata: base64Readme: >- CiMjIE5vdGVCb29rIE1hbmFnZXIKIyMjIFNwcmluZyBib290IFJlc3QgQXBpK3N3YWdnZXIrTXlTUUwrRG9ja2VyIHR1dG9yaWFsCgpOb3RlQm9vayBNYW5hZ2VyIGlzIGEgc2FtcGxlIHRpbnkgYXBwbGljYXRpb24gdGhhdCBwZXJmb3JtcyBDUlVEIGpvYnMgb24gTm90ZWJvb2sgRW50aXR5IHZpYSBSZXN0ZnVsIFdlYnNlcnZpY2VzLgoKSXQgZXhwb3NlcyA1IGVuZHBvaW50IGFzIGZvbGxvd2luZyBsaXN0IDoKCi0gR0VUIC9hcGkvbm90ZWJvb2tzIChnZXQgYSBsaXN0IG9mIG5vdGVib29rKQotIFBPU1QgL2FwaS9ub3RlYm9va3MgKGNyZWF0ZSBhIG5vdGVib29rKQotIEdFVCAvYXBpL25vdGVib29rcy8xIChnZXQgb25lIG5vdGVib29rIGZyb20gdGhlIGxpc3QpCi0gUEFUQ0ggL2FwaS9ub3RlYm9va3MvMSAodXBkYXRlIHRoZSBwcmljZSBvZiBhIHNpbmdsZSBub3RlYm9vaykKLSBERUxFVEUgL2FwaS9ub3RlYm9va3MvMSAoZGVsZXRlIGEgc2luZ2xlIG5vdGVib29rKQoKIyMgSG93IHRvIHNldHVwCkl0IGlzIGEgZG9ja2VyIGJhc2VkIGFwcGxpY2F0aW9uLiBSdW5uaW5nIGJlbG93IGNvbW1hbmQgaW4gcHJvamVjdCdzIGRpcmVjdG9yeSBidWlsZHMgMiBydW5uaW5nIGNvbnRhaW5lcnMsIE5vdGVib29rU2VydmljZSBhbmQgTXlzcWwgY29udGFpbmVycyB3aXRoIGluaXRpYWwgcmVjb3JkczoKCmBgYGJhc2gKZG9ja2VyLWNvbXBvc2UgdXAKYGBgCgoKIyMgSG93IHRvIHVzZQpUaGlzIGFwcGxpY2F0aW9uIGlzIFJlc3RmdWwgYW5kIGl0IGZvbGxvd3MgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGluIEFQSSBkb2N1bWVudGF0aW9uLiBUaGFua3MgdG8gU3dhZ2dlclVJLCB5b3UgY2FuIHNlZSBlbmRwb2ludHMgZG9jdW1lbnRhdGlvbiBpbiBhIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSBhbmQgdHJ5IHRoZWlyIGZ1bmN0aW9uYWxpdHkgYW5kIHNlZSB0aGUgcmVzcG9uc2UuIEFmdGVyIHJ1bm5pbmcgdGhlIGNvbnRhaW5lcnMsIHlvdSBjYW4gYWNjZXNzIHRoZSBhcHBsaWNhdGlvbiBsaW5rcyBhcyA6CgotIEFwcGxpY2F0aW9uIFJlc3Qgc2VydmljZXMgOiBodHRwOi8vbG9jYWxob3N0OjgwOTAvYXBpL25vdGVib29rcwotIFN3YWdnZXJVSSA6IGh0dHA6Ly9sb2NhbGhvc3Q6ODA5MC9zd2FnZ2VyLXVpLmh0bWwKCgoKIyMgVGVzdAoKVGVzdHMgYXJlIHdyaXR0ZW4gd2l0aCBIMiBpbi1tZW1vcnkgZGF0YWJhc2Ugd2l0aCBpbml0aWFsIHJlY29yZHMuCgoKIyMgTGluawoKW1RoaXMgcmVwb3NpdG9yeSBiZWxvbmdzIHRvIFNwcmluZyBib290IFJlc3QgQXBpK3N3YWdnZXIrTXlTUUwrRG9ja2VyIHR1dG9yaWFsXShodHRwczovL21zaGFlcmkuY29tL2Jsb2cvcmVzdGZ1bC1zcHJpbmctYm9vdC1hcHBsaWNhdGlvbi1zd2FnZ2VyLW15c3FsLWRvY2tlci1hLXJlYWwtd29ybGQtZXhhbXBsZS8pCg== readmeEtag: '"fa55b0751218cb016b358f16a0c5e25c0d43ca27"' readmeLastModified: Tue, 14 Feb 2023 19:20:00 GMT repositoryId: 455494383 description: >- A Real World Example for Open API Restful Spring boot Application + Swagger + MySQL + Docker created: '2022-02-04T09:48:40Z' updated: '2025-10-02T05:03:35Z' language: Java archived: false stars: 8 watchers: 1 forks: 9 owner: birddevelper logo: https://avatars.githubusercontent.com/u/20352967?v=4 repoEtag: '"b33885ee467fa2dd48c2ae2e258e4ee158cc7a0b86c9974ed106eafff64f2365"' repoLastModified: Thu, 02 Oct 2025 05:03:35 GMT foundInMaster: true category: Server Implementations id: 0ba2ea8447cfc632560b3b64c4551d19 - source: openapi3 tags repository: https://github.com/soundsmagic/ableton-react-remote v3: true id: b2e1eed86888f15f04ddcd02598181fb repositoryMetadata: base64Readme: >- QkFDS0dST1VORAoKQSBzY2hvb2wgcHJvamVjdCBmb3IgbXkgdGhlc2lzIGFyb3VuZCB0aGUgcG9zc2liaWxpdGllcy9kaWZmaWN1bHRpZXMgb2YgaW50ZWdyYXRpbmcgdXNlci1kZXZlbG9wZWQgc29sdXRpb25zIGludG8gREFXcyAoRGlnaXRhbCBBdWRpbyBXb3Jrc3RhdGlvbnMpLgpJIHN0dWRpZWQgaW50byBlbGV2ZW4gb2YgdGhlIG1vc3QgY29tbW9uIERBV3MsIHRlbiBvZiB0aGVtIG9uIHRoZSBzdXJmYWNlIHRocm91Z2ggcmVndWxhciByZXNlYXJjaCBhbmQgb25lIG9mIHRoZW0gLSBBYmxldG9uIExpdmUgLSBtb3JlIHRob3JvdWdobHkgCmJ5IGRldmVsb3BpbmcgdGhpcyBhcHBsaWNhdGlvbi4gKElmIGFueW9uZSBpcyBpbnRlcmVzdGVkIGluIG15IHRoZXNpcyByZXBvcnQgSSBjYW4gc2VuZCBpdCAtIGFsdGhvdWdoIGl0J3MgaW4gc3dlZGlzaC4uLikKCkkndmUgdXNlZCBBYmxldG9uIGZvciBsaXZlIGtleWJvYXJkcyB0aGUgcGFzdCB5ZWFycywgYW5kIG9ubHkgZ290IHNvIGZhciB3aXRoIENseXBoWCBQcm8gKyBUb3VjaE9TQy4gVGhpcyBpZGVhIG9mIGNyZWF0aW5nIGEgZnVsbHkgY3VzdG9taXplZCBmcm9udCBlbmQgZm9yIG15Cm5lZWRzIGhhcyBiZWVuIHdpdGggbXkgZm9yIGEgZmV3IHllYXJzLCBzbyBJIGRlY2lkZWQgdG8gdGFrZSB0aGlzIG9wcG9ydHVuaXR5IHRvIG1ha2UgYSBmaXJzdCBzaW1wbGUgdmVyc2lvbiBvZiBpdC4KCkVYVEVORElORyBBQkxFVE9OIExJVkUKClRvIHVzZSBhbmQgdW5kZXJzdGFuZCB0aGlzIHByb2plY3QsIHlvdSBuZWVkIHRvIGJlIHNvbWV3aGF0IGZhbWlsaWFyIHdpdGggQWJsZXRvbiBMaXZlIGFuZCBpdHMgTUlESSBSZW1vdGUgU2NyaXB0cyBmZWF0dXJlcy4gU2luY2UgZGV2ZWxvcG1lbnQgb2YgeW91ciBvd24gc2NyaXB0cwppc24ndCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBBYmxldG9uIChidXQgbm90IHByb2hpYml0ZWQpLCBpdCBjYW4gYmUgc29tZXdoYXQgdHJpY2t5IHRvIGZpbmQgaW5mb3JtYXRpb24gKGJ1dCBub3QgaGFyZGVyIHRoYW4gc3BlbmRpbmcgc29tZSBleHRyYSB0aW1lIGF0IHlvdXIKZmF2b3VyaXRlIHNlYXJjaCBlbmdpbmUpLiBUaGUgc2hvcnQgdmVyc2lvbiBpcyB0byBjcmVhdGUgYW4gYXJiaXRyYXJpbHkgbmFtZWQgZm9sZGVyIGluIEFibGV0b24ncyBNSURJIFJlbW90ZSBTY3JpcHRzIGRpcmVjdG9yeSwgdGhlbiBwbGFjZSB0aGUgY29udGVudHMgb2YgdGhlIAoiY3lvdy1iYWNrLWVuZCIgZm9sZGVyIGludG8gaXQsIGFsb25nIHdpdGggdGhlICJidWlsZCIgZm9sZGVyIHRoYXQgaXMgdGhlIHJlc3VsdCBvZiBidWlsZGluZyB0aGUgUmVhY3QgZnJvbnQgZW5kLiBXaGVuIHN0YXJ0aW5nIEFibGV0b24sIHRoZSBjcmVhdGVkIGZvbGRlciBzaG91bGQKYXBwZWFyIGluIHRoZSBDb250cm9sIFN1cmZhY2UgbGlzdCBvZiB0aGUgTUlESSB0YWIgaW4gUHJlZmVyZW5jZXMuCgpDSE9JQ0VTIC8gRlVUVVJFCgpPbmUgb2YgbXkgZ29hbHMgd2l0aCB0aGUgcHJvamVjdCB3YXMgdG8gbGVhcm4gUHl0aG9uIGJldHRlciwgc28gSSBjaG9zZSB0byBzdHVmZiBhbGwgYmFjayBlbmQgZnVuY3Rpb25hbGl0eSBpbnRvIHRoZSBNSURJIFJlbW90ZSBTY3JpcHQuIFRoaXMgZ29hbCBhbHNvIGhlbHBlZCBtZSB0bwpub3Qgc2h5IGF3YXkgZnJvbSB3cml0aW5nIGFsbCB0aGUgV1NHSSBzZXJ2ZXIvYXBwbGljYXRpb24gY29kZSBmcm9tIHNjcmF0Y2gsIHdoZW4gSSBmb3VuZCB0aGF0IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgdGhhdCdzIGJ1aWx0IGludG8gTGl2ZSBkb2Vzbid0IGNvbnRhaW4gdGhlIGZ1bGwgClB5dGhvbiBzdGFuZGFyZCBtb2R1bGUgbGlicmFyeSAoYW5kIGltcG9ydGluZyBtb2R1bGVzIGF0IHJ1bnRpbWUgcHJvdmVkIHRvIGJlIGEgZ3JlYXRlciBjaGFsbGVuZ2UgdGhhbiBJIGNvdWxkIGhhbmRsZSBhdCB0aGUgdGltZSksIHRoZXJlYnkgcHJldmVudGluZyBtZSBmcm9tIHVzaW5nCnJlYWR5IG1hZGUgZnJhbWV3b3Jrcy4gVGhpcyBibG9nIHNlcmllcyBoZWxwZWQgbWUgdHJlbWVuZG91c2x5IHRocm91Z2ggd3JpdGluZyB0aGUgV1NHSSBzdHVmZjogaHR0cHM6Ly9tbGV1ZS5jb20vcG9zdHMvbGV0cy1idWlsZC1vdXItb3duLWZhc3RhcGkvCgpJIHdhbnRlZCB0byB1c2UgUmVhY3Qgd2l0aCBSZWR1eCBhbmQgUlRLIFF1ZXJ5IGZvciB0aGUgZnJvbnQgZW5kLCBzaW5jZSBJIHN0YXJ0ZWQgbGVhcm5pbmcgdGhhdCBzaG9ydGx5IGJlZm9yZSB0aGlzIHByb2plY3QgYW5kIHdhbnRlZCB0aGUgcHJhY3RpY2UuCgpNeSB2aXNpb24gb2YgYSBjb21wbGV0ZSBhbmQgc3RhYmxlIHJlbW90ZSBhcHBsaWNhdGlvbiBmb3IgQWJsZXRvbiBMaXZlLCBmb2N1c2VkIG9uIGtleWJvYXJkcyBhbmQgYmFja2luZyB0cmFja3MgZm9yIGxpdmUgdXNlIGFuZCB0YWlsb3JlZCBmb3IgbXkgdXNlIGNhc2VzLCBpcyBzdGlsbApzb21ldGhpbmcgSSB3YW50IHRvIGFjaGlldmUuIEkga25ldyBlYXJseSBvbiB0aGF0IEkgd2FudGVkIHRoZSBmcm9udCBlbmQgdG8gcmVmbGVjdCBjaGFuZ2VzIGRvbmUgb24gbXkgbGFwdG9wLCB3aGljaCBJIGludGVuZGVkIHRvIGltcGxlbWVudCB3aXRoIFdlYnNvY2tldHMgaW4gYQpjb21pbmcgdmVyc2lvbi4gQWZ0ZXIgcmVzZWFyY2hpbmcgdGhlIHN1YmplY3QsIEkgcmVhbGl6ZWQgdGhhdCB0aGlzIHdhcyBzb21ldGhpbmcgSSBkaWRuJ3Qgd2FudCB0byBsZWFybiB0byB3cml0ZSBmcm9tIHNjcmF0Y2ggaW4gUHl0aG9uIGF0IHRoZSBtb21lbnQuIFRoZXJlZm9yZSwgSSdtCmNoYW5naW5nIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIHVzZSB0aGUgb3RoZXIgcmVzb3VyY2UgdGhhdCBoZWxwZWQgbWUgYSBncmVhdCBkZWFsIGluIHRoaXMgcHJvamVjdCAtIEFibGV0b25KUzogaHR0cHM6Ly9naXRodWIuY29tL2xlb2xhYnMvYWJsZXRvbi1qcwoKVGhlIHdlYiBzZXJ2ZXIgd2lsbCBnb2luZyBmb3J3YXJkIGJlIGEgc2VwYXJhdGUgTm9kZSBhcHBsaWNhdGlvbiwgd2hpY2ggY2FuIHRhbGsgV2Vic29ja2V0cyB3aXRoIHRoZSBmcm9udCBlbmQgYW5kIGxldCBBYmxldG9uSlMgdGFrZSBjYXJlIG9mIHRoZSBjb21tdW5pY2F0aW9uIHdpdGgKQWJsZXRvbiBMaXZlIGFuZCB0aGUgTUlESSBSZW1vdGUgU2NyaXB0cy4gU2luY2UgdGhpcyB3aWxsIGNoYW5nZSB0aGUgYXBwbGljYXRpb24gcXVpdGUgYSBiaXQsIEkgZGVjaWRlZCB0byBsZWF2ZSB0aGlzIHJlcG9zaXRvcnkgYXMgaXQgaXMgYW5kIGNvbnRpbnVlIG15IGRldmVsb3BtZW50CmluIGEgbmV3IHJlcG8uIFRoYXQgd2F5IHRoaXMgcmVwbyBjYW4gc3RhbmQgYXMgYSBmdW5jdGlvbmluZyBleGFtcGxlIGZvciBvdGhlcnMgd2FudGluZyB0byBnbyB0aGlzIHdheSBvZiBhIG5vLWZyYW1ld29yayBXU0dJIHNlcnZlci9hcHBsaWNhdGlvbi4K readmeEtag: '"4287b0216ce35638bffb2ab0801c8e4e7f1ae921"' readmeLastModified: Sat, 30 Jul 2022 15:23:46 GMT repositoryId: 454422973 description: An application for remote controlling Ableton Live from a React front end created: '2022-02-01T14:38:30Z' updated: '2023-11-06T20:47:09Z' language: TypeScript archived: false stars: 7 watchers: 0 forks: 1 owner: soundsmagic logo: https://avatars.githubusercontent.com/u/76114226?v=4 repoEtag: '"19241846e40f919830df8713db6f095b385e43a953f34fde5f7493c543f3ff1c"' repoLastModified: Mon, 06 Nov 2023 20:47:09 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/dotjoshrc/protoc-gen-openapi v3: true id: bc5611151c6d1be7144cc24f4ad9e974 repositoryMetadata: base64Readme: >- IyBwcm90b2MtZ2VuLW9wZW5hcGkKCiFbR2l0SHViIHJlbGVhc2UgKGxhdGVzdCBieSBkYXRlKV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvdi9yZWxlYXNlL2RvdGpvc2hyYy9wcm90b2MtZ2VuLW9wZW5hcGk/c3R5bGU9ZmxhdC1zcXVhcmUpClshW2xpbnQgc3RhdHVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9hY3Rpb25zL3dvcmtmbG93L3N0YXR1cy9kb3Rqb3NocmMvcHJvdG9jLWdlbi1vcGVuYXBpL3J1bi1saW50LnlhbWw/c3R5bGU9ZmxhdC1zcXVhcmUmbGFiZWw9bGludCldKGh0dHBzOi8vZ2l0aHViLmNvbS9kb3Rqb3NocmMvcHJvdG9jLWdlbi1vcGVuYXBpL2FjdGlvbnMvd29ya2Zsb3dzL3J1bi1saW50LnlhbWwpClshW2dvIHJlcG9ydCBjYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9kb3Rqb3NocmMvcHJvdG9jLWdlbi1vcGVuYXBpP3N0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL2RvdGpvc2hyYy9wcm90b2MtZ2VuLW9wZW5hcGkpCgoqKlllcyoqLCB0aGlzIGlzIF9hbm90aGVyXyBwcm90b2MgZ2VuZXJhdG9yIGZvciBPcGVuQVBJLiBJIGNyZWF0ZWQgdGhpcyBmb3IgYQpjb3VwbGUKcmVhc29ucy4uLgoKLSBJIHdhbnRlZCB0byBsZWFybiBwcm90b2MgZ2VuZXJhdGlvbiB3aXRoIGEgcmVhbC13b3JsZCBwcm9ibGVtLgotIFRoZSBvZmZpY2lhbCBnb29nbGUgb25lIHN0aWNrcyB0byBnUlBDIGFuZCBlbnZveSBzdGFuZGFyZHMuIE15IHRlYW0gYW5kIEkgdXNlCiAgVHdpcnAgYW5kIG90aGVyIFJFU1QgZnJhbWV3b3Jrcy4gX1NvbWV0aW1lcyB5b3UganVzdCB3YW50IHRvIGRlZmluZSBtb2RlbHMgYW5kCiAgYW4gQVBJIGZvciBkb2NzLl8KLSBPdGhlcnMgdHJ5IHRvIGRvIHRvbyBtdWNoIHBlciB0aGUgc3BlYyBhbmQgZmFpbCB0byBkbyB0aGUgbW9zdCBjb21tb24gdGhpbmdzCiAgd2VsbC4KCl8qKkRJU0NMQUlNRVI6IFRoaXMgd2lsbCBiZSBhIGxpbWl0ZWQgc3Vic2V0IG9mIHRoZSBPQVBJMyBzcGVjaWZpY2F0aW9uLiBOb3QKZXZlcnl0aGluZyB3aWxsIG1ha2UgaXQgaW4gaGVyZS4gV2h5PyBSZWFkIHRoZSBsYXN0IGJ1bGxldCBwb2ludCBhYm92ZS4gOikqKl8KCl9Tb21lIHBhdHRlcm5zIHdlcmUgaGVhdmlseSBpbnNwaXJlZApieSBbZ25vc3RpY10oaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nbm9zdGljKS5fCgojIyBJbnN0YWxsYXRpb24KCmBgYHRlcm1pbmFsCmdvIGluc3RhbGwgZ2l0aHViLmNvbS9kb3Rqb3NocmMvcHJvdG9jLWdlbi1vcGVuYXBpQGxhdGVzdApgYGAKCiMjIE9wdGlvbnMKCnwgT3B0aW9uICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVmYXVsdCAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS18CnwgYHZlcnNpb25gICAgICAgICAgIHwgVGhlIHZlcnNpb24gb2YgdGhlIEFQSS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMC4wLjEgICAgICAgICAgICB8CnwgYHRpdGxlYCAgICAgICAgICAgIHwgVGhlIHRpdGxlIG9mIHRoZSBBUEkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8CnwgYGRlc2NyaXB0aW9uYCAgICAgIHwgQSBkZXNjcmlwdGlvbiBvZiB0aGUgQVBJLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8CnwgYGluY2x1ZGVgICAgICAgICAgIHwgQSBsaXN0IG9mIHByb3RvIHBhY2thZ2UgbmFtZXMgdG8gaW5jbHVkZSBvbmx5LiBgaWdub3JlYCBpcyByYW4gYWZ0ZXIgdGhpcyAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8CnwgYGlnbm9yZWAgICAgICAgICAgIHwgQSBsaXN0IG9mIHByb3RvIHBhY2thZ2UgbmFtZXMgdG8gaWdub3JlIGRlbGltaXRlZCBieSBwaXBlcy4gICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8CnwgYGRlZmF1bHRfcmVzcG9uc2VgIHwgVGhlIGRlZmF1bHQgcmVzcG9uc2UgdG8gYmUgdXNlZC48c3VwPjE8L3N1cD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8CnwgYGNvbnRlbnRfdHlwZWAgICAgIHwgVGhlIGNvbnRlbnQgdHlwZSB0byBiZSBhc3NvY2lhdGVkIHdpdGggYWxsIG9wZXJhdGlvbnMuPHN1cD4xPC9zdXA+ICAgICAgICAgICAgICAgIHwgYXBwbGljYXRpb24vanNvbiB8CnwgYGpzb25fbmFtZXNgICAgICAgIHwgVXNlIHRoZSBKU09OIG5hbWVzIHRoYXQgUHJvdG9idWYgcHJvdmlkZXMuIE90aGVyd2lzZSwgcHJvdG8gZmllbGQgbmFtZXMgYXJlIHVzZWQuIHwgZmFsc2UgICAgICAgICAgICB8CnwgYGpzb25fb3V0YCAgICAgICAgIHwgQ3JlYXRlIGEgSlNPTiBmaWxlIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgWUFNTC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmFsc2UgICAgICAgICAgICB8CnwgYGhvc3RgICAgICAgICAgICAgIHwgVGhlIGhvc3QgdG8gYmUgdXNlZCBmb3IgYWxsIG9wZXJhdGlvbnMuPHN1cD4xPC9zdXA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8CnwgYGZpbGVuYW1lYCAgICAgICAgIHwgU3BlY2lmeSB0aGUgZmlsZW5hbWUgdG8gb3V0cHV0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3BlbmFwaS55YW1sICAgICB8Cgo8c3VwPjE8L3N1cD4gX0NhbiBiZSBvdmVycmlkZGVuIG9uIGEgZmlsZSwgc2VydmljZSwgb3IgbWV0aG9kLl8KCiMjIEJ1aWxkIEV4YW1wbGVzCgpCZWxvdyBhcmUgc29tZSBiYXNpYyBleGFtcGxlcyBvbiBob3cgdG8gdXNlIHRoaXMgZ2VuZXJhdG9yLgoKIyMjIFByb3RvYwoKYGBgYmFzaApwcm90b2MgXAogIC0tb3BlbmFwaV9vdXQ9LiBcCiAgLS1vcGVuYXBpX29wdD12ZXJzaW9uPTEuMC4wIFwKICAtLW9wZW5hcGlfb3B0PXRpdGxlPSJNeSBBd2Vzb21lIEFQSSIgXAogIGFwaS9zb21lX3NlcnZpY2UucHJvdG8KYGBgCgojIyMgQnVmCgoqKmJ1Zi55YW1sKioKCmBgYHlhbWwKIyAuLi4gb3RoZXIgdGhpbmdzCmRlcHM6CiAgLSBidWYuYnVpbGQvZG90am9zaHJjL3Byb3RvYy1nZW4tb3BlbmFwaQpgYGAKCioqYnVmLmdlbi55YW1sKioKCmBgYHlhbWwKcGx1Z2luczoKICAtIG5hbWU6IGdvCiAgICBvdXQ6IGFwaQogICAgb3B0OgogICAgICAtIHBhdGhzPXNvdXJjZV9yZWxhdGl2ZQogIC0gbmFtZTogb3BlbmFwaQogICAgc3RyYXRlZ3k6IGFsbCAjIGltcG9ydGFudCBzbyBhbGwgZmlsZXMgYXJlIHJhbiBpbiB0aGUgc2FtZSBnZW5lcmF0aW9uLgogICAgb3V0OiBhcGkKICAgIG9wdDoKICAgICAgLSB0aXRsZT1NeSBBd2Vzb21lIEFQSQogICAgICAtIGRlc2NyaXB0aW9uPUxvb2sgaG93IGF3ZXNvbWUgbXkgQVBJIGlzIQogICAgICAtIGlnbm9yZT1tb2R1bGUudjF8bW9kdWxlLnYyCiAgICAgIC0gZGVmYXVsdF9yZXNwb25zZT1Tb21lRXJyb3JPYmplY3QKYGBgCgojIyBCYXNpYyBVc2FnZSBFeGFtcGxlCgpgYGBwcm90b2J1ZgpzeW50YXggPSAicHJvdG8zIjsKCmltcG9ydCAib2FwaS92MS9maWVsZC5wcm90byI7CmltcG9ydCAib2FwaS92MS9maWxlLnByb3RvIjsKaW1wb3J0ICJvYXBpL3YxL21ldGhvZC5wcm90byI7CmltcG9ydCAib2FwaS92MS9zZXJ2aWNlLnByb3RvIjsKCm9wdGlvbiAob2FwaS52MS5maWxlKSA9IHsKICBzZXJ2ZXJzIHsKICAgIHVybDogIm15YXdlc29tZWFwaS5jb20iCiAgfQoKICBzZWN1cml0eV9zY2hlbWVzOiB7CiAgICBuYW1lOiAiYmVhcmVyX2F1dGgiCiAgICBzY2hlbWU6IHsKICAgICAgdHlwZTogImh0dHAiCiAgICAgIHNjaGVtZTogImJlYXJlciIKICAgICAgYmVhcmVyX2Zvcm1hdDogIkpXVCIKICAgIH0KICB9CgogIC8vIFNpbmNlIHRoaXMgaXMgYXQgdGhlIGZpbGUgbGV2ZWwsIGl0J3MgYXBwbGllZCB0byBhbGwuCiAgc2VjdXJpdHk6IHsKICAgIG5hbWU6ICJiZWFyZXJfYXV0aCIKICAgIHNjb3BlczogWyJyZWFkOnJlc291cmNlIl0KICB9Cn07CgpzZXJ2aWNlIE15U2VydmljZSB7CiAgb3B0aW9uIChvYXBpLnYxLnNlcnZpY2UpID0gewogICAgcHJlZml4OiAiL3YxIgogICAgeF9kaXNwbGF5X25hbWU6ICJNeSBTZXJ2aWNlIgogIH07CgogIHJwYyBDcmVhdGVTb21ldGhpbmcgKENyZWF0ZVNvbWV0aGluZ1JlcXVlc3QpIHJldHVybnMgKENyZWF0ZVNvbWV0aGluZ1Jlc3BvbnNlKSB7CiAgICBvcHRpb24gKG9hcGkudjEubWV0aG9kKSA9IHsKICAgICAgcG9zdDogImNyZWF0ZS1zb21ldGhpbmciCiAgICAgIHN1bW1hcnk6ICJDcmVhdGUgU29tZXRoaW5nIgogICAgICBzdGF0dXM6IDIwMQogICAgfTsKICB9Cn0KCm1lc3NhZ2UgQ3JlYXRlU29tZXRoaW5nUmVxdWVzdCB7CiAgLy8gVGhlIG5hbWUgb2Ygc29tZXRoaW5nLgogIC8vIEV4YW1wbGU6IHNvbWV0aGluZy1hd2Vzb21lCiAgc3RyaW5nIG5hbWUgPSAxIFsob2FwaS52MS5yZXF1aXJlZCkgPSB0cnVlXTsKfQoKbWVzc2FnZSBDcmVhdGVTb21ldGhpbmdSZXNwb25zZSB7CiAgLy8gVGhlIElEIG9mIHNvbWV0aGluZy4KICBzdHJpbmcgaWQgPSAxOwogIHN0cmluZyBuYW1lID0gMjsKfQpgYGAKCiMjIEZlYXR1cmVzCgo+ICoqTm90ZSoqCj4KPiBEZWZpbmluZyBmZWF0dXJlcyBpcyBhIHdvcmsgaW4gcHJvZ3Jlc3MuIEkgYWltIHRvIGV4cGxhaW4gYWxsIHRoYXQncyBwb3NzaWJsZQo+IHRoZSBiZXN0IEkgY2FuLgoKPGRldGFpbHM+CjxzdW1tYXJ5PjxoMz5TZXJ2ZXIgZGVmaW5pdGlvbnM8L2gzPjwvc3VtbWFyeT4KCllvdSBjYW4gZGVmaW5lIHNlcnZlcnMgYXQgdGhlIGZpbGUsIHNlcnZpY2UsIG9yIG1ldGhvZCBsZXZlbC4gRWFjaCBvbmUgb3ZlcnJpZGVzCnRoZSBwcmV2aW91cy4gVGhpcyBhbGxvd3MgZm9yIG1vcmUgYWR2YW5jZWQgY29tcG9zaXRpb24uCgoqKkV4YW1wbGU6KioKCmBgYHByb3RvYnVmCnN5bnRheCA9ICJwcm90bzMiOwoKaW1wb3J0ICJnb29nbGUvcHJvdG9idWYvZW1wdHkucHJvdG8iOwppbXBvcnQgIm9hcGkvdjEvZmlsZS5wcm90byI7CmltcG9ydCAib2FwaS92MS9tZXRob2QucHJvdG8iOwppbXBvcnQgIm9hcGkvdjEvc2VydmljZS5wcm90byI7CgoKb3B0aW9uIChvYXBpLnYxLmZpbGUpID0gewogIHNlcnZlcnMgewogICAgdXJsOiAibXlhd2Vzb21lYXBpLmNvbSIgLy8gZmlsZS1kZWZpbmVkIGZvciBhbGwgc2VydmljZXMgYW5kIG1ldGhvZHMKICB9Cn07CgpzZXJ2aWNlIE15U2VydmljZSB7CiAgb3B0aW9uIChvYXBpLnYxLnNlcnZpY2UpID0gewogICAgc2VydmVycyB7CiAgICAgIHVybDogIm15YXdlc29tZWFwaTIuY29tIiAvLyBvdmVycmlkZXMgZmlsZS1kZWZpbmVkCiAgICB9CiAgfTsKCiAgcnBjIENyZWF0ZVNvbWV0aGluZyAoZ29vZ2xlLnByb3RvYnVmLkVtcHR5KSByZXR1cm5zIChnb29nbGUucHJvdG9idWYuRW1wdHkpIHsKICAgIG9wdGlvbiAob2FwaS52MS5tZXRob2QpID0gewogICAgICBzZXJ2ZXJzIHsKICAgICAgICB1cmw6ICJteWF3ZXNlb21lYXBpMy5jb20iIC8vIG92ZXJyaWRlcyBzZXJ2aWNlLWRlZmluZWQKICAgICAgfQogICAgfTsKICB9Cn0KYGBgCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KPHN1bW1hcnk+PGgzPlNlcnZpY2UgUHJlZml4ZXM8L2gzPjwvc3VtbWFyeT4KCkVhY2ggc2VydmljZSBjYW4gaGF2ZSBhIHBhdGggcHJlZml4IHNldCBmb3IgYWxsIG1ldGhvZHMgdG8gaW5oZXJpdC4gVGhpcyBpcwp1c2VmdWwgd2hlbiB2ZXJzaW9uaW5nIHlvdXIgQVBJIG9yIGlmIHlvdSBoYXZlIGEgcGFyYW1ldGVyIHRoYXQgaXMgZGVmaW5lZCBmb3IKZWFjaCBtZXRob2Qgcm91dGUuCgpfKipZb3UgY2FuIG92ZXJyaWRlIHRoZSBlbnRpcmUgcGF0aCBpbiB0aGUgbWV0aG9kIGJ5IHN0YXJ0aW5nIHRoZSBwYXRoIG91dCB3aXRoCmEgYC9gLioqXwoKKipFeGFtcGxlOioqCgpgYGBwcm90b2J1ZgpzeW50YXggPSAicHJvdG8zIjsKCmltcG9ydCAiZ29vZ2xlL3Byb3RvYnVmL2VtcHR5LnByb3RvIjsKaW1wb3J0ICJvYXBpL3YxL2ZpbGUucHJvdG8iOwppbXBvcnQgIm9hcGkvdjEvbWV0aG9kLnByb3RvIjsKaW1wb3J0ICJvYXBpL3YxL3NlcnZpY2UucHJvdG8iOwoKb3B0aW9uIChvYXBpLnYxLmZpbGUpID0gewogIHNlcnZlcnMgewogICAgdXJsOiAibXlhd2Vzb21lYXBpLmNvbSIKICB9Cn07CgpzZXJ2aWNlIE15U2VydmljZSB7CiAgb3B0aW9uIChvYXBpLnYxLnNlcnZpY2UpID0gewogICAgcHJlZml4OiAiL3YxIgogIH07CgogIHJwYyBDcmVhdGVTb21ldGhpbmcgKGdvb2dsZS5wcm90b2J1Zi5FbXB0eSkgcmV0dXJucyAoZ29vZ2xlLnByb3RvYnVmLkVtcHR5KSB7CiAgICBvcHRpb24gKG9hcGkudjEubWV0aG9kKSA9IHsKICAgICAgcG9zdDogImNyZWF0ZSIgLy8gYmVjb21lcyAvdjEvY3JlYXRlCiAgICB9OwogIH0KCiAgcnBjIE92ZXJyaWRlU29tZXRoaW5nIChnb29nbGUucHJvdG9idWYuRW1wdHkpIHJldHVybnMgKGdvb2dsZS5wcm90b2J1Zi5FbXB0eSkgewogICAgb3B0aW9uIChvYXBpLnYxLm1ldGhvZCkgPSB7CiAgICAgIGdldDogIi9jcmVhdGUiIC8vIGJlY29tZXMgL2NyZWF0ZQogICAgfTsKICB9Cn0KYGBgCgo8L2RldGFpbHM+CgojIyBGZWF0dXJlcyBJbiBQcm9ncmVzcwoKLSBbRW51bV0oaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvdW5kZXJzdGFuZGluZy1qc29uLXNjaGVtYS9yZWZlcmVuY2UvZ2VuZXJpYy5odG1sI2VudW1lcmF0ZWQtdmFsdWVzKQogIHJlcXVpcmVtZW50cyBvbiBmaWVsZHMKCiMjIENvbnRyaWJ1dGluZwoKQ29taW5nLi4uIFJpZ2h0IG5vdyBJIHByZWZlciB0aGF0IGl0J3MganVzdCBtZSB1bnRpbCBJIGdldCBhIHNvbGlkIGhvbGQgb24KZ2VuZXJhdG9yIHBhdHRlcm5zIGFuZCB0aGUgcGFja2FnZSBpcyBzdGFibGUuIEknbSBmdWxseSBvcGVuIHRvIGFueSBzdWdnZXN0aW9ucwp0aG91Z2ghCg== readmeEtag: '"dd13599cc5eddf07f6852e83a8c2f2ce0c9cf5c2"' readmeLastModified: Mon, 02 Feb 2026 19:09:19 GMT repositoryId: 580132646 description: OpenAPI generation from Protobuf created: '2022-12-19T19:57:16Z' updated: '2026-02-02T19:09:23Z' language: Go archived: false stars: 9 watchers: 1 forks: 4 owner: dotjoshrc logo: https://avatars.githubusercontent.com/u/8335467?v=4 repoEtag: '"898c6a95d12055bc35148186aa21cc9eaa35d89ccd1d97ebccf1b5db87b37227"' repoLastModified: Mon, 02 Feb 2026 19:09:23 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/technicallyjosh/protoc-gen-openapi - source: openapi3 tags repository: https://github.com/rinold/steamer v3: true repositoryMetadata: base64Readme: >- IyBTdGVhbWVyCgpDb21tYW5kIGxpbmUgdG9vbCBmb3IgW1ZhcG9yXShodHRwczovL3ZhcG9yLmNvZGVzKSBzdHViICh0ZW1wbGF0ZSkgc2VydmVyIGdlbmVyYXRvciBmcm9tIHRoZSBbT3BlbkFQSV0oaHR0cHM6Ly9vcGVuYXBpcy5vcmcvKSAoU3dhZ2dlcikgc3BlY2lmaWNhdGlvbiB3cml0dGVuIGluIFN3aWZ0LgoKIyMjIFRhcmdldGVkIHN1cHBvcnRlZCB2ZXJzaW9uczoKLSBWYXBvciAzCi0gT3BlbkFQSSAzLjAuKiAoW0N1cnJlbnQgbGF0ZXN0IC0gMy4wLjEgU3BlY10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjEubWQpKQoKIyMjIENvbmNlcHQKVGhlIE9wZW5BUEkgZGVmaW5pdGlvbiBvZiBBUEkgZGVzaWduIGlzIGEgZ3JlYXQgYmFzZSB0aGF0IGNvdWxkIGFsbG93IHRvIGNyZWF0ZSBhdXRvZ2VuZXJhdGVkIGNvZGUgdGhhdDoKLSBXb3VsZCAqKmJlIHdlbGwtZG9jdW1lbnRlZCoqIC0gYXMgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbiBieSBpdHNlbGYgaWRlYWxseSBzaG91bGQgYmUgYSAnZG9jdW1lbnRhdGlvbicgZm9yIGNsaWVudCBkZXZlbG9wZXJzIGl0IGNvdWxkIGJlIGF1dG9tYXRpY2FsbHkgYnJvdWdodCB0byB0aGUgU3dpZnQgY29kZSBkZWZpbml0aW9ucy4KLSBXb3VsZCAqKnNoYXJlIHRoZSBnZW5lcmF0ZWQgTW9kZWxzIGFuZCBSZXF1ZXN0L1Jlc3BvbnNlIGNvZGUqKiAgYXMgbXVjaCBhcyBwb3NzaWJsZSAqKmJldHdlZW4qKiB0aGUgUkVTVGZ1bCAqKnNlcnZlciBhbmQgY2xpZW50KiogYXBwbGljYXRpb24gd2hpY2ggYXV0b21hdGljYWxseSB3b3VsZCBlbnN1cmUgc2VyaWFsaXNhdGlvbiBvZiBkYXRhIHBhc3NlZCBiZXR3ZWVuIHNlcnZlciBhbmQgY2xpZW50IGlzIFNBTUU6CiAgLSBObyBtb3JlIHR5cG9zLWVycm9yIGRlYnVnZ2luZyBvZiBmYWlsZWQgcmVxdWVzdHMgKGUuZy4gd2hlbiBvbmUgc2lkZSBzZW5kcyAnbGljZW5jZScgaW5zdGVhZCBvZiAnbGljZW5zZScpCiAgLSBObyBtb3JlIHRyaWNreSBlcnJvcnMgb2YgZGF0YSB0eXBlcyBjb252ZXJzaW9ucyAobGlrZSBJbnQ2NCB2cyBJbnQzMiwgdGhlIERhdGUgZm9ybWF0cywgZXRjLikKICAtIFNoYXJlZCBtb2RlbHMgd291bGQgYmUgYSBTSU5HTEUgcGxhY2UgeW91IG5lZWQgdG8gY2hhbmdlIGlmIHJlcXVpcmVkCi0gV291bGQgKipiZSBleHRlbnNpYmxlKiosIGlkZWFsbHkgYWxsb3dpbmcgaW5jcmVtZW50YWwgdXBkYXRlcyBvZiBjb2RlIGZyb20gdGhlIHVwZGF0ZWQgT3BlbkFQSSBkZWZpbml0aW9uIHdpdGggbWluaW1hbCBpbXBhY3Qgb24gbWFudWFsbHkgYWRkZWQgY29kZS4KLSBXb3VsZCAqKmJlIHNpbXBsZSBhbmQgU3dpZnR5KiosIGNyZWF0ZWQgc28gdGhhdCB0aG91Z2h0cyBsaWtlICdpdCB3b3VsZCBiZSBlYXNpZXIgdG8gZGVsZXRlIGFuZCByZXdyaXRlIGl0JyBzaG91bGQgbmV2ZXIgYXBwZWFyIGluIGRldmVsb3BlciBoZWFkIHdoZW4gaGUgc2VlcyBpdC4KCiMjIyBHb2FscwotIEVuY291cmFnZSB0aGUgW0FQSSBkZXNpZ24gZmlyc3RdKGh0dHBzOi8vc3dhZ2dlcmh1Yi5jb20vYmxvZy9hcGktZGVzaWduL2Rlc2lnbi1maXJzdC1vci1jb2RlLWZpcnN0LWFwaS1kZXZlbG9wbWVudC8pIGlmIGl0IHN1aXRzIHlvdXIgbmVlZHMhCi0gTWFrZSBpbXBsZW1lbnRhdGlvbiBhbmQgcHJvdG90eXBpbmcgb2YgUkVTVGZ1bCBzZXJ2ZXJzIHVzaW5nIFZhcG9yIGV2ZW50IG1vcmUgZWFzaWVyIGJ5IG1pbmltaXNpbmcgYm9pbGVycGxhdGUgY29kaW5nCi0gTWVldCBpbmNyZWRpYmxlIGFuZCBhbWF6aW5nIFN3aWZ0IHByb2Zlc3Npb25hbHMgd2hvIHdvdWxkIGxpa2UgdG8gam9pbiBhbmQgY29udHJpYnV0ZSB0byB0aGlzIHByb2plY3QhIDopCgojIyMgRmVhdHVyZXMgLSBUQkQsIHN0YXJ0aW5nIGxpc3QgdG8gdGhpbmsgb2YuLi4KLSBHZW5lcmF0aW9uIG9mIHN0dWJiZWQgQVBJIHNlcnZlciBmcm9tIE9wZW5BUEkgZG9jdW1lbnQ6CiAgLSBNb2RlbHMKICAtIENvbnRyb2xsZXJzCiAgLSBSb3V0aW5nCiAgLSBldmVyeXRoaW5nIGVsc2UgbmVlZGVkIHRvIHJ1bgotIFVzZSBTZWN1cml0eSBTY2hlbWUgZGVmaW5pdGlvbnMgZm9yIGF1dGhvcml6YXRpb24gYW5kIGF1dGhlbnRpZmljYXRpb24gc3VwcG9ydAotIE1vY2sgcmVzcG9uc2VzIHdpdGggZGF0YSBleGFtcGxlcyBpZiBwcm92aWRlZAotIENvbW1lbnRzIC8gZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uCi0gLi4uCgojIyMgQ29udHJpYnV0aW9uCklzIHdlbGNvbWUhIEpvaW4gYW5kIGJlIHRoZSBmaXJzdCBvbmUgY29tbWl0aW5nIHJlYWwgY29kZSEgIApZb3VyIGNhbiBjb250YWN0IG1lIHZpYSBlbWFpbDogW21paGFpbC5jaHVyYmFub3ZAZ21haWwuY29tXShtYWlsdG86bWloYWlsLmNodXJiYW5vdkBnbWFpbC5jb20pCgojIyMgRGVwZW5kZW5jaWVzIChQb3RlbnRpYWwpCi0gW1N3YWdnZXJQYXJzZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9BdHRpbGFUaGVGdW4vU3dhZ2dlclBhcnNlcikgLSBTd2lmdCBsaWJyYXJ5IGZvciBwYXJzaW5nIE9wZW5BUEkgMi4wIChmLmsuYS4gU3dhZ2dlcikgZG9jdW1lbnRzIGludG8gbmF0aXZlIHN0cnVjdHVyZXMgKE9wZW5BUEkgMy4wIHN1cHBvcnQgaXMgImFscGhhIi1yZWFkeSwgY3VycmVudGx5IG9uIFtmb3JrXShodHRwczovL2dpdGh1Yi5jb20vcmlub2xkL1N3YWdnZXJQYXJzZXIvdHJlZS9vcGVuYXBpLTMpKS4KLSBbP10gW1lhbXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9qcHNpbS9ZYW1zKSAtIEEgU3dlZXQgYW5kIFN3aWZ0eSBZQU1MIHBhcnNlci4KLSBbP10gW1N0ZW5jaWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9reWxlZi9TdGVuY2lsKSAvIFtMZWFmXShodHRwczovL2dpdGh1Yi5jb20vdmFwb3IvbGVhZikgb3IgLi4uIC0gbmVlZCB0byBjaG9vc2Ugc29tZXRoaW5nIGZvciB0ZW1wbGF0aW5nLgo= readmeEtag: '"5e38f17da8047fb317904041a4f70834be32d5ac"' readmeLastModified: Fri, 29 Jun 2018 15:23:04 GMT repositoryId: 115447708 description: Vapor simple CRUD-server generator created: '2017-12-26T19:01:47Z' updated: '2022-03-22T06:55:36Z' language: Swift archived: false stars: 7 watchers: 2 forks: 0 owner: rinold logo: https://avatars.githubusercontent.com/u/2253795?v=4 license: MIT repoEtag: '"4085534028adf1c89a842ee89916d31abb65c79c471c9bbead7f986fe29c56fa"' repoLastModified: Tue, 22 Mar 2022 06:55:36 GMT foundInMaster: true category: - Server - Parsers id: 8ad741c3a7108e9b58b9bda5e3524ad2 - source: openapi3 tags repository: https://github.com/hiromaily/go-goa v3: true id: 938d96a1d5b7e8bfa831a0217cf4c914 repositoryMetadata: base64Readme: >- IyBnby1nb2EKClshW0dvIFJlcG9ydCBDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9oaXJvbWFpbHkvZ28tZ29hKV0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL2hpcm9tYWlseS9nby1nb2EpClshW2NvZGViZWF0IGJhZGdlXShodHRwczovL2NvZGViZWF0LmNvL2JhZGdlcy9mMmVlMmVkMC01NTg4LTQ2ZjktYTQ3ZS1kNTA2MzNhMDY3MzkpXShodHRwczovL2NvZGViZWF0LmNvL3Byb2plY3RzL2dpdGh1Yi1jb20taGlyb21haWx5LWdvLWdvYS1tYXN0ZXIpClshW0NvZGFjeSBCYWRnZV0oaHR0cHM6Ly9hcGkuY29kYWN5LmNvbS9wcm9qZWN0L2JhZGdlL0dyYWRlL2YyMDdjYTU3ZTQ4ZTQ1NjM4OTM0MWZjNDFiYjA2OTUxKV0oaHR0cHM6Ly93d3cuY29kYWN5LmNvbS9hcHAvaGlyb21haWx5Mi9nby1nb2E/dXRtX3NvdXJjZT1naXRodWIuY29tJmFtcDt1dG1fbWVkaXVtPXJlZmVycmFsJmFtcDt1dG1fY29udGVudD1oaXJvbWFpbHkvZ28tZ29hJmFtcDt1dG1fY2FtcGFpZ249QmFkZ2VfR3JhZGUpClshW01JVCBMaWNlbnNlXShodHRwOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1NSVQtYmx1ZS5zdmc/c3R5bGU9ZmxhdCldKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9oaXJvbWFpbHkvZ28tZ29hL21hc3Rlci9MSUNFTlNFKQoKYGdvLWdvYWAgaXMgZXhhbXBsZSBvZiBbZ29hXShodHRwczovL2dpdGh1Yi5jb20vZ29hZGVzaWduL2dvYSkgZnJhbWV3b3JrIGZvciB2MyB3aXRoIEpXVCBpbXBsZW1lbnRhdGlvbi4gIApUaGUgZXhhbXBsZSBzaXRlIGNvbnNpc3RzIG9mIGZpbGUgc2VydmVyIGFuZCBBUEkgc2VydmVyLgoKIVtFeGFtcGxlIFJlc3VtZSBTaXRlXShyZXN1bWUucG5nICJleGFtcGxlIHJlc3VtZSBzaXRlIikKCgojIyBSZWZhY3RvcmluZwotIFsgXSBDbGVhbiB1cCBldmVyeXRoaW5nCi0gWyBdIEludGVncmF0ZSB0byBGaXJlYmFzZSB1c2luZyBOZXh0SlMgU1NHCi0gWyBdIFN3aXRjaCBDSSBmcm9tIFRyYXZpc0NJIHRvIEdpdGh1YiBBY3Rpb24KLSBbIF0gUmVidWlsZCBmcm9udC1lbmQgYnkgbGF0ZXN0IE5leHQuanMoUmVhY3QpIG9yIFN2ZWx0ZQotIFsgXSBSZXBsYWNlIEUyRSB0ZXN0IGJ5IFtIdXJsXShodHRwczovL2h1cmwuZGV2LykKCiMjIERpcmVjdG9yeSBTdHJ1Y3R1cmUKfCBEaXJlY3RvcnkgTmFtZSB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfDotLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBkb2NzKGFzc2V0cykgICB8IGFzc2V0cyBmb3IgZnJvbnQtZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBidWlsZCAgICAgICAgICB8IGRvY2tlci9nY3AgY29uZmlndXJhdGlvbiBmaWxlcyAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBjbWQgICAgICAgICAgICB8IG1haW4uZ28gZm9yIGNsaS9zZXJ2ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBjb25maWcgICAgICAgICB8IHRvbWwgY29uZmlndXJhdGlvbiBmaWxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBpbnRlcm5hbCAgICAgICB8IGdvYSBkZXNpZ24gZmlsZXMsIGdlbmVyYXRlZCBmaWxlcyBhcyBzZXBhcmF0ZWQgbW9kdWxlIHwKfCBwa2cgICAgICAgICAgICB8IGdvIGZpbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBzY3JpcHRzICAgICAgICB8IHNoZWxsIHNjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCB3ZWIgICAgICAgICAgICB8IGRldmVsb3BtZW50YWwgZW52aXJvbm1lbnQgZm9yIGZyb250LWVuZCAgICAgICAgICAgICAgIHwKCiMjIyBwa2cgZGlyZWN0b3J5CnwgRGlyZWN0b3J5IE5hbWUgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfDotLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IGNvbmZpZyAgICAgICAgIHwgY29uZmlnIHBrZyB0byByZWFkIHRvbWwgZmlsZSAgICAgICAgICAgICAgICAgICB8CnwgZW5jcnlwdGlvbiAgICAgfCBlbmNyeXB0aW9uIGZvciBoYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBnb2EgICAgICAgICAgICB8IGdvYSBsb2dpYyBiYXNlZCBvbiBnZW5lcmF0ZWQgZmlsZSBieSBgZ29hIGdlbmAgfAp8IGp3dHMgICAgICAgICAgIHwgand0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgbG9nZ2VyICAgICAgICAgfCBsb2dnZXIgdXNpbmcgYHJzL3plcm9sb2dgICAgICAgICAgICAgICAgICAgICAgIHwKfCBtb2RlbCAgICAgICAgICB8IGF1dG8gZ2VuZXJhdGVkIGJ5IGBzcWxib2lsZXJgICAgICAgICAgICAgICAgICAgfAp8IG15c3FsICAgICAgICAgIHwgbXlzcWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgcmVwb3NpdG9yeSAgICAgfCBkYXRhYmFzZSBvcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCgojIyBJbnN0YWxsIGdvYQpgYGAKZ28gaW5zdGFsbCBnb2EuZGVzaWduL2dvYS92My9jbWQvZ29hQHYzCmdvIGluc3RhbGwgZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvY21kL3Byb3RvYy1nZW4tZ29AbGF0ZXN0CmdvIGluc3RhbGwgZ29vZ2xlLmdvbGFuZy5vcmcvZ3JwYy9jbWQvcHJvdG9jLWdlbi1nby1ncnBjQGxhdGVzdApgYGAKCgojIyBEZXZlbG9wbWVudCBwcm9jZXNzCi0gYGNkIGludGVybmFsL2dvYS9zZXJ2aWNlL3Jlc3VtZWAKLSBtb2RpZnkgYGRlc2lnbmAgZmlsZXMKLSBnZW5lcmF0ZSBmaWxlcyBieSBgZ29hIGdlbmAKCgojIyBTZXJ2ZXIKIyMjIERhdGFiYXNlCi0gcnVuIE15U1FMIGZpcnN0CmBgYApkb2NrZXIgY29tcG9zZSBteXNxbCAtZApgYGAKCiMjIyBGaWxlIFNlcnZlcgpgYGAKZ28gYnVpbGQgLXYgLW8gJHtHT1BBVEh9L2Jpbi9nb2EtZmlsZS1zZXJ2ZXIgLi9jbWQvZmlsZXNlcnZlci9zZXJ2ZXIvLi4uCmdvYS1maWxlLXNlcnZlcgpgYGAKLSBhY2Nlc3MKICAtIGBodHRwOi8vbG9jYWxob3N0OjgwODAvYAogIC0gYGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9sb2dpbi5odG1sYCAoaGlyb2tpQGdvYS5jb20gLyBwYXNzd29yZCkKCiMjIyBSZXN1bWUgQVBJIFNlcnZlcgpgYGAKZ28gYnVpbGQgLXYgLW8gJHtHT1BBVEh9L2Jpbi9nb2Etc2VydmVyIC4vY21kL3Jlc3VtZS9zZXJ2ZXIvLi4uCmdvYS1zZXJ2ZXIgLWNvbmYgLi9jb25maWdzL3NldHRpbmdzLnRvbWwKYGBgCgojIyMgUmVzdW1lIEFQSSBMaXN0Ci0gaGVhbHRoCiAgLSBgaHR0cDovL2xvY2FsaG9zdDo4MDkwL2FwaS9oZWFsdGhgCi0gYXV0aAogIC0gYGh0dHA6Ly9sb2NhbGhvc3Q6ODA5MC9hcGkvYXV0aC9sb2dpbmAKLSB0ZWNoCiAgLSBgaHR0cDovL2xvY2FsaG9zdDo4MDkwL2FwaS90ZWNoYAogIC0gYGh0dHA6Ly9sb2NhbGhvc3Q6ODA5MC9hcGkvdGVjaC8xYAotIGNvbXBhbnkKICAtIGBodHRwOi8vbG9jYWxob3N0OjgwOTAvYXBpL2NvbXBhbnlgCiAgLSBgaHR0cDovL2xvY2FsaG9zdDo4MDkwL2FwaS9jb21wYW55LzFgCi0gdXNlcgogIC0gYGh0dHA6Ly9sb2NhbGhvc3Q6ODA5MC9hcGkvdXNlcmAKICAtIGBodHRwOi8vbG9jYWxob3N0OjgwOTAvYXBpL3VzZXIvMWAKLSB1c2VyIHRlY2gKICAtIGBodHRwOi8vbG9jYWxob3N0OjgwOTAvYXBpL3VzZXIvMS9saWtldGVjaGAKICAtIGBodHRwOi8vbG9jYWxob3N0OjgwOTAvYXBpL3VzZXIvMS9kaXNsaWtldGVjaGAKLSB1c2VyIHdvcmsgaGlzdG9yeQogIC0gYGh0dHA6Ly9sb2NhbGhvc3Q6ODA5MC9hcGkvdXNlci8xL3dvcmtoaXN0b3J5YAoKCiMjIFBlcmZvcm1hbmNlClRvIGV2ZWx1YXRlIHBlcmZvcm1hbmNlLCBbaGV5XShodHRwczovL2dpdGh1Yi5jb20vcmFreWxsL2hleSkgaGFzIGJlZW4gdXNlZC4KRXhlY3V0ZSBgTWFrZSBiZW5jaGAKCmBgYAojIE1hcmNoIDEyIDIwMTcKaGV5IC1uIDIwMDAwIC1jIDUwIC1tIEdFVCBodHRwOi8vbG9jYWxob3N0OjgwODAvYXBpL3VzZXIKClN1bW1hcnk6CiAgVG90YWw6CTQuMTA5MiBzZWNzCiAgU2xvd2VzdDoJMC4wOTM5IHNlY3MKICBGYXN0ZXN0OgkwLjAwMDIgc2VjcwogIEF2ZXJhZ2U6CTAuMDEwMSBzZWNzCiAgUmVxdWVzdHMvc2VjOgk0ODY3LjEyMjEKICBUb3RhbCBkYXRhOgk2MDAwMCBieXRlcwogIFNpemUvcmVxdWVzdDoJMyBieXRlcwoKU3RhdHVzIGNvZGUgZGlzdHJpYnV0aW9uOgogIFsyMDBdCTIwMDAwIHJlc3BvbnNlcwpgYGAKCiMjIExpY2VuY2UKW01JVF0oaHR0cHM6Ly9naXRodWIuY29tL2hpcm9tYWlseS9nby1nb2EvYmxvYi9tYXN0ZXIvTElDRU5TRSkKCiMjIEF1dGhvcgpbaGlyb21haWx5XShodHRwczovL2dpdGh1Yi5jb20vaGlyb21haWx5KQo= readmeEtag: '"457b8f913f33a69bf3c03de27ae41af5cdcea25c"' readmeLastModified: Sat, 11 Feb 2023 01:45:22 GMT repositoryId: 84661950 description: goa framework example created: '2017-03-11T16:01:20Z' updated: '2024-10-06T20:33:01Z' language: Go archived: false stars: 7 watchers: 1 forks: 2 owner: hiromaily logo: https://avatars.githubusercontent.com/u/301692?v=4 license: MIT repoEtag: '"6bb2d0627e4455ad11841644cb3b715d0d9c31a8055e28a7e56d0d5c1786951f"' repoLastModified: Sun, 06 Oct 2024 20:33:01 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/vinitshahdeo/openapi-url-resolver v3: true id: cc77996f9fb62a8bfdb6d8216191e7c3 repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KCjxpbWcgc3JjPSIuL2Fzc2V0cy9vcGVuYXBpLXVybC1yZXNvbHZlci1sb2dvLnBuZyIgaGVpZ2h0PSczMCUnIHdpZHRoPSczMCUnLz4KCjxoMT5PcGVuQVBJIFVSTCBSZXNvbHZlcjwvaDE+Cgo8cD4KPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb3BlbmFwaS11cmwtcmVzb2x2ZXIiPjxpbWcgYWx0PSJucG0gb3BlbmFwaS11cmwtcmVzb2x2ZXIiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9vcGVuYXBpLXVybC1yZXNvbHZlcj9sYWJlbD1vcGVuYXBpLXVybC1yZXNvbHZlciZsb2dvPW5wbSI+PC9hPgo8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vcGVuYXBpLXVybC1yZXNvbHZlciI+PGltZyBhbHQ9Im5wbSBidW5kbGUgc2l6ZSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2J1bmRsZXBob2JpYS9taW4vb3BlbmFwaS11cmwtcmVzb2x2ZXI/bG9nbz1ucG0iPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb3BlbmFwaS11cmwtcmVzb2x2ZXIiPjxpbWcgYWx0PSJucG0gb3BlbmFwaS11cmwtcmVzb2x2ZXIiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vb3BlbmFwaS11cmwtcmVzb2x2ZXI/bG9nbz1ucG0mY29sb3I9eWVsbG93Z3JlZW4iPjwvYT4KPC9wPgoKPHA+CjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS92aW5pdHNoYWhkZW8vb3BlbmFwaS11cmwtcmVzb2x2ZXIvYWN0aW9ucy93b3JrZmxvd3Mvbm9kZS5qcy55bWwiPjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdmluaXRzaGFoZGVvL29wZW5hcGktdXJsLXJlc29sdmVyL2FjdGlvbnMvd29ya2Zsb3dzL25vZGUuanMueW1sL2JhZGdlLnN2ZyIgYWx0PSJHaXRIdWIgQWN0aW9ucyBmb3IgT3BlbkFQSSBVUkwgUmVzb2x2ZXIiPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9WaW5pdF9TaGFoZGVvIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90d2l0dGVyL2ZvbGxvdy9WaW5pdF9TaGFoZGVvP3N0eWxlPXNvY2lhbCIgYWx0PSJUd2l0dGVyIEZvbGxvdyI+PC9hPgo8YSBocmVmPScuL0xJQ0VOU0UnPjxpbWcgYWx0PSJHaXRIdWIgTGljZW5zZSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL3Zpbml0c2hhaGRlby9jZWxlYi1kaXdhbGk/bGFiZWw9TGljZW5zZSZsb2dvPWdpdGh1YiI+PC9hPgo8L3A+Cgo8YnIvPgoKPC9kaXY+CgoKKipvcGVuYXBpLXVybC1yZXNvbHZlcioqIGlzIGEgKipsaWdodHdlaWdodCoqIE5QTSBwYWNrYWdlIHRoYXQgcHJvdmlkZXMgYSBzaW1wbGUgYW5kIGVmZmljaWVudCB3YXkgdG8gcmVzb2x2ZSBzZXJ2ZXIgVVJMcyBmcm9tIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMuIEl0IGFsc28gcmVtb3ZlcyBwcm90b2NvbHMgZnJvbSB0aGUgcmVzb2x2ZWQgVVJMcyBhbmQgYWxsb3dzIHlvdSB0byAqKmVhc2lseSBleHRyYWN0IGhvc3QgaW5mb3JtYXRpb24gZnJvbSBPcGVuQVBJIGRlZmluaXRpb25zKiouIFRoaXMgcGFja2FnZSBpcyBpZGVhbCBmb3IgZGV2ZWxvcGVycyB3b3JraW5nIHdpdGggQVBJcyB0aGF0IGNvbmZvcm0gdG8gdGhlIFtPcGVuQVBJIDMueCBzcGVjaWZpY2F0aW9uXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIGFuZCBuZWVkIHRvIGV4dHJhY3QgW3NlcnZlciBpbmZvcm1hdGlvbl0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3NlcnZlci1vYmplY3QpIHRvIG1ha2UgQVBJIGNhbGxzLiBDaGVjayBvdXQgdGhlIGJsb2cgcG9zdCBmb3IgbW9yZSBkZXRhaWxz4oCUW0hvdyB0byByZXNvbHZlIHNlcnZlciBVUkxzIGNvbnRhaW5pbmcgdmFyaWFibGVzIGluIE9wZW5BUEkgMy54IGRlZmluaXRpb25zP10oaHR0cHM6Ly9kZXYudG8vdmluaXRzaGFoZGVvL2hvdy10by1yZXNvbHZlLXNlcnZlci11cmxzLWNvbnRhaW5pbmctdmFyaWFibGVzLWluLW9wZW5hcGktM3gtZGVmaW5pdGlvbnMta2FqKQoKIyMjIEZlYXR1cmVzOgoKLSDwn5qAICoqTGlnaHR3ZWlnaHQqKiBtb2R1bGUgd2l0aCBvbmx5IDk2NSBieXRlcyBpbiBzaXplCi0g8J+OiSAqKlplcm8gZGVwZW5kZW5jaWVzKiosIG1ha2luZyBpdCBlYXN5IHRvIGluc3RhbGwgYW5kIHVzZSBpbiB5b3VyIHByb2plY3RzCi0g8J+UjSBFZmZpY2llbnQgYW5kIHNpbXBsZSB3YXkgdG8gcmVzb2x2ZSBbc2VydmVyIFVSTHNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNzZXJ2ZXItb2JqZWN0KSBmcm9tIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMKCiMjIPCfk6YgSW5zdGFsbGF0aW9uCgpZb3UgY2FuIGluc3RhbGwgYG9wZW5hcGktdXJsLXJlc29sdmVyYCB2aWEgW05QTV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb3BlbmFwaS11cmwtcmVzb2x2ZXIpOgoKYGBgYmFzaApucG0gaW5zdGFsbCBvcGVuYXBpLXVybC1yZXNvbHZlcgpgYGAKClshW29wZW5hcGktdXJsLXJlc29sdmVyIG9uIE5QTV0oaHR0cHM6Ly9ub2RlaS5jby9ucG0vb3BlbmFwaS11cmwtcmVzb2x2ZXIucG5nKV0oaHR0cHM6Ly9ub2RlaS5jby9ucG0vb3BlbmFwaS11cmwtcmVzb2x2ZXIvKQoKIyMg8J+SuyBVc2FnZQoKVG8gdXNlIGBvcGVuYXBpLXVybC1yZXNvbHZlcmAsIHlvdSBuZWVkIHRvIHBhc3MgYW4gW09wZW5BUEkgMy54IHNwZWNpZmljYXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykgb2JqZWN0IHRvIHRoZSBgcmVzb2x2ZSgpYCBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBhbiBhcnJheSBvZiByZXNvbHZlZCBzZXJ2ZXIgVVJMczoKCmBgYGphdmFzY3JpcHQKY29uc3Qgb3BlbmFwaVVybFJlc29sdmVyID0gcmVxdWlyZSgnb3BlbmFwaS11cmwtcmVzb2x2ZXInKQoKY29uc3Qgc3BlYyA9IHsKICBvcGVuYXBpOiAnMy4wLjAnLAogIHNlcnZlcnM6IFsKICAgIHsKICAgICAgdXJsOiAnaHR0cHM6Ly97dXNlcm5hbWV9LmdpZ2FudGljLXNlcnZlci5jb206e3BvcnR9L3tiYXNlUGF0aH0nLAogICAgICBkZXNjcmlwdGlvbjogJ1RoZSBwcm9kdWN0aW9uIEFQSSBzZXJ2ZXInLAogICAgICB2YXJpYWJsZXM6IHsKICAgICAgICB1c2VybmFtZTogewogICAgICAgICAgZGVmYXVsdDogJ2RlbW8nLAogICAgICAgICAgZGVzY3JpcHRpb246ICd0aGlzIHZhbHVlIGlzIGFzc2lnbmVkIGJ5IHRoZSBzZXJ2aWNlIHByb3ZpZGVyLCBpbiB0aGlzIGV4YW1wbGUgYGdpZ2FudGljLXNlcnZlci5jb21gJwogICAgICAgIH0sCiAgICAgICAgcG9ydDogewogICAgICAgICAgZW51bTogWyc4NDQzJywgJzQ0MyddLAogICAgICAgICAgZGVmYXVsdDogJzg0NDMnCiAgICAgICAgfSwKICAgICAgICBiYXNlUGF0aDogewogICAgICAgICAgZGVmYXVsdDogJ3YyJwogICAgICAgIH0KICAgICAgfQogICAgfQogIF0KfQoKY29uc3QgaG9zdHMgPSBvcGVuYXBpVXJsUmVzb2x2ZXIucmVzb2x2ZShzcGVjKQoKLyoKClsKICAnZGVtby5naWdhbnRpYy1zZXJ2ZXIuY29tOjg0NDMvdjInLAogICdkZW1vLmdpZ2FudGljLXNlcnZlci5jb206NDQzL3YyJwpdCgoqLwpjb25zb2xlLmxvZyhob3N0cykKCmBgYAoKUGFzcyBgZmFsc2VgIGFzIHNlY29uZCBwYXJhbWV0ZXIgdG8gZ2V0IHRoZSBzZXJ2ZXIgVVJMcyB3aXRoIHByb3RvY29scy4KCmBgYGphdmFzY3JpcHQKY29uc3Qgc2VydmVyVXJscyA9IG9wZW5hcGlVcmxSZXNvbHZlci5yZXNvbHZlKHNwZWMsIGZhbHNlKQoKLyoKClsKICAnaHR0cHM6Ly9kZW1vLmdpZ2FudGljLXNlcnZlci5jb206ODQ0My92MicsCiAgJ2h0dHBzOi8vZGVtby5naWdhbnRpYy1zZXJ2ZXIuY29tOjQ0My92MicKXQoKKi8KY29uc29sZS5sb2coc2VydmVyVXJscykKCmBgYAoKIyMg8J+nqiBUZXN0aW5nCgpZb3UgY2FuIHRlc3QgdXNpbmcgdGhlIGJlbG93IGNvbW1hbmQgb3Igd3JpdGUgeW91ciBvd24gdGVzdHMgdXNpbmcgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgW2V4YW1wbGVzXSguL2RlZmluaXRpb25zLykuCgpgYGBiYXNoCm5wbSB0ZXN0CmBgYAoKIyMg8J+aqyBMaW1pdGF0aW9ucwoKVGhlIGJlbG93IGFyZSB0aGUga25vd24gbGltaXRhdGlvbnMsIGFuZCB0aGV5IGFyZSBub3QgaGFuZGxlZCB0byBrZWVwIGl0IGEgKipsaWdodHdlaWdodCoqIGFuZCAqKmZvY3VzZWQqKiBtb2R1bGUgdG8ganVzdCBleHRyYWN0IHRoZSBbc2VydmVyIGluZm9ybWF0aW9uXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjc2VydmVyLW9iamVjdCkuCgotIEl0IGRvZXMgbm90IHZhbGlkYXRlIHRoZSBPcGVuQVBJIGRlZmluaXRpb24uIFlvdSBjYW4gdXNlIFtvcGVuYXBpLXNjaGVtYS12YWxpZGF0b3JdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktc2NoZW1hLXZhbGlkYXRvcikgZm9yIHZhbGlkYXRpbmcgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbi4KLSBJdCBvbmx5IHdvcmtzIHdpdGggSlNPTiBmb3JtYXQuCiAgLSBVc2UgW3lhbWwtdG8tanNvbi1zY2hlbWFdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3lhbWwtdG8tanNvbi1zY2hlbWEpIHRvIGNvbnZlcnQgWUFNTCB0byBKU09OLgogIC0gVXNlIFtwb3N0bWFuLXRvLW9wZW5hcGldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3Bvc3RtYW4tdG8tb3BlbmFwaSkgdG8gY29udmVydCBQb3N0bWFuIGNvbGxlY3Rpb24gdG8gT3BlbkFQSSAzLngKCiMjIPCfpJ0gQ29udHJpYnV0aW5nCgoqKkNvbnRyaWJ1dGlvbnMgdG8gYG9wZW5hcGktdXJsLXJlc29sdmVyYCBhcmUgbW9zdCB3ZWxjb21lISoqIAoKSWYgeW91IGZpbmQgYSBidWcgb3Igd2FudCB0byBzdWdnZXN0IGEgbmV3IGZlYXR1cmUsIHBsZWFzZSBbb3BlbiBhbiBpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL3Zpbml0c2hhaGRlby9vcGVuYXBpLXVybC1yZXNvbHZlci9pc3N1ZXMvbmV3KSBvbiB0aGUgR2l0SHViIHJlcG9zaXRvcnkuIElmIHlvdSB3YW50IHRvIGNvbnRyaWJ1dGUgY29kZSwgcGxlYXNlIFtmb3JrIHRoZSByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vdmluaXRzaGFoZGVvL29wZW5hcGktdXJsLXJlc29sdmVyL2ZvcmspLCBtYWtlIHlvdXIgY2hhbmdlcywgYW5kICoqc3VibWl0IGEgcHVsbCByZXF1ZXN0KiouIFlvdXIgY29udHJpYnV0aW9ucyBhbmQgZmVlZGJhY2sgYXJlIG1vc3Qgd2VsY29tZSEKCiMjIPCfk50gTGljZW5zZQoKW29wZW5hcGktdXJsLXJlc29sdmVyXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vcGVuYXBpLXVybC1yZXNvbHZlcikgaXMgYXV0aG9yZWQgYnkgQFt2aW5pdHNoYWhkZW9dKGh0dHBzOi8vZ2l0aHViLmNvbS92aW5pdHNoYWhkZW8pIGFuZCByZWxlYXNlZCB1bmRlciB0aGUgW01JVCBMaWNlbnNlXSguL0xJQ0VOU0UpLgoKIyMg4p2k77iPIFN1cHBvcnQKCklmIHlvdSBmaW5kIHRoaXMgcGFja2FnZSB1c2VmdWwsIHBsZWFzZSBjb25zaWRlciBbc3RhcnJpbmcgdGhpcyByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vdmluaXRzaGFoZGVvL29wZW5hcGktdXJsLXJlc29sdmVyKSBvbiBHaXRIdWIgdG8gc2hvdyB5b3VyIGFwcHJlY2lhdGlvbi4gWW91IGNhbiBzdGF5IGNvbm5lY3RlZCB3aXRoIG1lIG9uIFR3aXR0ZXLigJRbQHZpbml0X3NoYWhkZW9dKGh0dHBzOi8vdHdpdHRlci5jb20vVmluaXRfU2hhaGRlbykuCgo8YSBocmVmPSJodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL3Zpbml0c2hhaGRlbyIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2Nkbi5idXltZWFjb2ZmZWUuY29tL2J1dHRvbnMvdjIvZGVmYXVsdC15ZWxsb3cucG5nIiBhbHQ9IkJ1eSBNZSBBIENvZmZlZSIgaGVpZ2h0PSI0MHB4IiB3aWR0aD0iMTUwcHgiID48L2E+CgpUaGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEg8J+Zjwo= readmeEtag: '"d32f42d9c1c80df640aafda2af1bcc7e4579b025"' readmeLastModified: Thu, 27 Apr 2023 05:37:54 GMT repositoryId: 630161086 description: >- Resolve server URLs and extract hosts from OpenAPI 3.x and Swagger specifications. created: '2023-04-19T19:50:39Z' updated: '2025-01-21T01:56:10Z' language: JavaScript archived: false stars: 7 watchers: 1 forks: 0 owner: vinitshahdeo logo: https://avatars.githubusercontent.com/u/20594326?v=4 license: MIT repoEtag: '"58f50b78e2b5af90928f7cda06328b65ef8331c6ea2c6c8ab9e01faf5aecb20f"' repoLastModified: Tue, 21 Jan 2025 01:56:10 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/koshevy/oapi3codegen v3: true repositoryMetadata: base64Readme: >- IyBDb2RlIGdlbmVyYXRpb24gZnJvbSBPcGVuQVBJIDMgdG8gVHlwZVNjcmlwdAoKTGlnaHR3ZWlnaHQgYW5kIHNpbXBsZS4gQ2FuIGJlIHVzZWQgZm9yICpicm93c2VyJ3MqIGFuZCBmb3IgTm9kZS5qcyBlY29zeXN0ZW1zLgpOb3cgc3VwcG9ydHMgY29udmVydGluZyBmcm9tICoqT3BlbkFQSSAzKiogdG8gKipUeXBlU2NyaXB0KiogdHlwZXMgKE9wZW5BUEkgMiBhbmQgYmVsb3cgYXJlIG5vdCBzdXBwb3J0ZWQpLgoKPGRldGFpbHM+CjxzdW1tYXJ5PkZvciBleGFtcGxlLCBjcmVhdGVzIGNvbnN0cnVjdGlvbnMgc3VjaCBhcyAoY2xpY2sgdG8gZXhwYW5kKTo8L3N1bW1hcnk+CgpgYGB0eXBlc2NyaXB0Ci8qKgogKiBUeXBpY2FsIDQwMSByZXNwb25zZQogKi8KZXhwb3J0IGludGVyZmFjZSBIdHRwRXJyb3JVbmF1dGhvcml6ZWQgewogIC8qKgogICAqIEVycm9yIG1lc3NhZ2UKICAgKi8KICBtZXNzYWdlOiBzdHJpbmc7CgogIC8qKgogICAqIERhdGEgYXBwcm9wcmlhdGUgdG8KICAgKiBbV1dXLUF1dGhlbnRpY2F0ZV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzUjc2VjdGlvbi0zLjEpLgogICAqLwogIHd3d0F1dGhlbnRpY2F0ZT86IHsKICAgIC8qKgogICAgICogUHJvbXB0IHRvIGF1dGhlbnRpY2F0ZQogICAgICovCiAgICB0aXRsZTogc3RyaW5nOwoKICAgIC8qKgogICAgICogS2luZCBvZiBhdXRob3JpemF0aW9uIHVzZXIgaGFzIHRvIHVzZQogICAgICovCiAgICB0eXBlOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBUeXBlIG9mIGF1dGhvcml0eSAoImJhcnJpZXIiIG9yIGV0Yy4pCiAgICAgKi8KICAgIHJlYWxtOiBzdHJpbmc7CiAgfTsKfQoKZXhwb3J0IGludGVyZmFjZSBHZXRQYXJhbWV0ZXJzTWV0YV9yZXNwb25zZTQwMQogIGV4dGVuZHMgSHR0cEVycm9yVW5hdXRob3JpemVkIHsKCiAgLyoqCiAgICogRXJyb3IgbWVzc2FnZQogICAqLwogIG1lc3NhZ2U6IHN0cmluZzsKCiAgLyoqCiAgICogRGF0YSBhcHByb3ByaWF0ZSB0bwogICAqIFtXV1ctQXV0aGVudGljYXRlXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNSNzZWN0aW9uLTMuMSkuCiAgICovCiAgd3d3QXV0aGVudGljYXRlPzogewogICAgLyoqCiAgICAgKiBQcm9tcHQgdG8gYXV0aGVudGljYXRlCiAgICAgKi8KICAgIHRpdGxlOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBLaW5kIG9mIGF1dGhvcml6YXRpb24gdXNlciBoYXMgdG8gdXNlCiAgICAgKi8KICAgIHR5cGU6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFR5cGUgb2YgYXV0aG9yaXR5ICgiYmFycmllciIgb3IgZXRjLikKICAgICAqLwogICAgcmVhbG06IHN0cmluZzsKICB9Owp9CgovKioKICogS2luZCBvZiByZXF1ZXN0IGVycm9yOiBzeW50YXggb3Igc2VtYW50aWMuIFN5bnRheCBlcnJvciBtZWFucyB0aGUKICogYXBwbGljYXRpb24gbG9naWMgZXJyb3IsIHNlbWFudGljcyDigJQgZXJyb3Igb2YgZGF0YSwgdGhhdCBjb250cmFnZW50CiAqIGlucHV0cy4KICovCmV4cG9ydCBlbnVtIEh0dHBFcnJvckJhZFJlcXVlc3RUeXBlRW51bSB7CiAgU3ludGF4ID0gInN5bnRheCIsCiAgU2VtYW50aWMgPSAic2VtYW50aWMiCn0KCi8qKgogKiBUeXBpY2FsIHJlc3BvbnNlIG9uZSBCYWQgUmVxdWVzdCBFcnJvciAoNDAwKQogKi8KZXhwb3J0IGludGVyZmFjZSBIdHRwRXJyb3JCYWRSZXF1ZXN0IHsKICAvKioKICAgKiBDb21tb24gZXJyb3IgbWVzc2FnZQogICAqLwogIG1lc3NhZ2U6IHN0cmluZzsKCiAgLyoqCiAgICogS2luZCBvZiByZXF1ZXN0IGVycm9yOiBzeW50YXggb3Igc2VtYW50aWMuIFN5bnRheCBlcnJvciBtZWFucyB0aGUKICAgKiBhcHBsaWNhdGlvbiBsb2dpYyBlcnJvciwgc2VtYW50aWNzIOKAlCBlcnJvciBvZiBkYXRhLCB0aGF0IGNvbnRyYWdlbnQKICAgKiBpbnB1dHMuCiAgICovCiAgdHlwZT86IEh0dHBFcnJvckJhZFJlcXVlc3RUeXBlRW51bTsKCiAgLyoqCiAgICogRXhwbGFpbmVkIGRlc2NyaXB0aW9uIG9mIGVycm9yCiAgICovCiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7CgogIC8qKgogICAqIEFkZGl0aW9uYWwgbGlzdCBvZiBlcnJvcnMgd2l0aCBKU09OLXBvaW50ZXJzCiAgICovCiAgZXJyb3JzPzogQXJyYXk8ewogICAgb3JpZ2luYWxNZXNzYWdlOiBzdHJpbmc7CgogICAgbWVzc2FnZT86IHN0cmluZzsKCiAgICBqc29uUG9pbnRlcjogc3RyaW5nOwogIH0+Owp9CgovKioKICogIyMgTWV0YURhdGFWaWV3CiAqIE1ldGFEYXRhIGhlbHBzIGRlY2lkZSB3aGF0IHRoZSBtZXRob2QgaGFzIHRvIHVzZSB0bwogKiBpbnRlcnByZXQgYW5kIHJlbmRlciBwYXJhbWV0ZXIgb3IgY2F0ZWdvcnkgb2YgcGFyYW1ldGVycy4KICovCmV4cG9ydCB0eXBlIEdldFBhcmFtZXRlcnNNZXRhX3Jlc3BvbnNlMjAwID0gQXJyYXk8Q2F0ZWdvcnkgfCBQYXJhbWV0ZXI+OwoKYGBgCjwvZGV0YWlscz4KCi0tLS0tCgo+ICMjIyMg8J+apiBTdGF0dXMgb2YgcHJvamVjdAo+IC0gKipTdGFiaWxpemF0aW9uOioqIHJlYWR5IHRvIHVzZSBpbiBub24tcHJvZHVjdGlvbiBwcm9qZWN0cyAoc2VlIFJvYWQgTWFwKS4KPiAtICoqTm90IHN1cHBvcnRlZCBZTUwgKG9ubHkgSlNPTikqKi4gKldpbGwgYmUgc3VwcG9ydGVkIHNvb24uIE5vdywgeW91IGNhbiB1c2Ugc29tZXRoaW5nIGxpa2UgW2pzLXlhbWxdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2pzLXlhbWwpKgo+IC0gKioq8J+QniBVUERBVEU6KioqIEZpeGVkIHByb2JsZW0gd2l0aCBpbmZpbml0eSBsb29wIGluIHJlY3Vyc2l2ZSB0eXBlcyEKPgo+IFBsZWFzZSwgaWYgaXQgcG9zc2libGU6IHNlbmQgbWUgeW91ciBzY2hlbWFzIHRoYXQgbm90IGNvbnZlcnRzIHByb3Blcmx5LgoKIyMjIE9ubGluZSBkZW1vCgpXb3JrIGluIHByb2dyZXNzISBOb3csIHNlZSBob3cgdG8gdXNlLgoKIyMjIFJvYWQgbWFwCgpXb3JrIGlzIGp1c3Qgc3RhcnRlZCwgYW5kIGN1cnJlbnQgZnVuY3Rpb25hbGl0eSAoY3JlYXRpbmcgVHlwZVNjcmlwdCB0eXBlcykg4oCUCkl0J3MganVzdCBhIGZpcnN0IHBhcnQgb2YgdGhlIHN1cHBvc2VkIGZ1bmN0aW9uYWxpdHkuCldpdGggdGltZSwgaXQncyBzdXBwb3NlZCwgcG9zc2liaWxpdGllcyBvZiB0aGlzIHBsdWdpbiB3aWxsIGJlIGV4dGVuZGVkIGJ5OgoKLSAqTWFrZSBwcm9qZWN0IHdlbGwgZG9jdW1lbnRlZCBbaW4gcHJvZ3Jlc3NdKgotICpZQU1MIHN1cHBvcnQgW2luIHByb2dyZXNzXSoKLSAqU3RhYmlsaXphdGlvbiBbaW4gcHJvZ3Jlc3NdKgotICpQbGF5Z3JvdW5kIHNpdGUgW2luIHByb2dyZXNzXSoKLSBQbHVnaW5zIHN1cHBvcnQKLSBHZW5lcmF0aW9uIGNsYXNzZXMgKG5vdyBjcmVhdGVzIG9ubHkgaW50ZXJmYWNlcykgd2l0aCBpbnRlcm5hbCB2YWxpZGF0aW9uIFsgKmNvbmNlcHQgZGVzY3JpcHRpb24gaXMgY29taW5nIHNvb24qIF0KLSBHZW5lcmF0aW9uIEFQSSBDbGFzc2VzCiAgICAtIFNvbHV0aW9ucyBmb3IgQW5ndWxhclggYmFzZWQgb24gKkFzc3VyZWQgcmVxdWVzdHMgaWRlYSogd2l0aCBpbnRlcm5hbCB2YWxpZGF0aW9uIFsgKmNvbmNlcHQgZGVzY3JpcHRpb24gaXMgY29taW5nIHNvb24qIF0KICAgIC0gKk1heSBiZSwgc29tZXRoaW5nIGVsc2UuLi4qCi0gKipEREQtdG9vbHMqKiAoU3RhcnQga2l0IGZvciBPcGVuQVBJMy1wcm9qZWN0cyk6CiAgICAtIEJ1bmRsZXIgZm9yIGNvbXBsZXggZmlsZXMgc3RydWN0dXJlLiBOZWVkIGZvIG9yZ2FuaXphdGlvbiBjb21wbGV4IEFQSS1saWJyYXJpZXMuCiAgICAtIFtEcmVkZF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZHJlZGQpCiAgICAtIE1vc3QgcG9wdWxhcnMgZG9jLWdlbmVyYXRvcnMgKGF0IGxlYXN0LCBbUmVkb2NdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3JlZG9jKSBhbmQgW1N3YWdnZXJVSV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvc3dhZ2dlci11aSkpCiAgICAtIENvbnZlbnRpb24gZm9yIHdvcmtpbmcgd2l0aCBEREQgT3BlbkFQSTMKLSAqKk90aGVyIGxhbmd1YWdlcyoqIChpcyB0aGVyZSBhcmUgbmVlZCBmb3IgaXQ/KTogS290bGluLCBKYXZhLCBQSFAsIAoKIyMjIElkZW9sb2d5CgotICoqRGF0YSBmb3JtYXQgbG95YWx0eToqKiBpdCdzIHNob3VsZCBiZSBhcyB1c2VmdWwgYXMgaXQgcG9zc2libGUgcmVnYXJkbGVzcyB2YWxpZGl0eSBvZiBzb3VyY2UgZGF0YS4KLSAqKkludGVncmF0aW9uKio6IHNvbHV0aW9uIHNob3VsZCBiZSBhYmxlIHRvIGJlIGludGVncmF0ZWQgdG8gYW55IHN5c3RlbSAoYXQgbGVhc3QsIGJhc2VkIG9uIE5QTSkuIEl0J3MgbWVhbiwgc2hvdWxkIGhhdmUgQ0xJIGFuZCBBUEkuCgojIyMgV2h5IG5vdCBzd2FnZ2VyLWNvZGVnZW4/CgotIFVzZXMgTlBNIGluc3RlYWQgSmF2YSAoaW5zdGFsbCB2aWEgbnBtIGFuZCBlYXN5LWludGVncmF0YWJsZSkKLSBMaWdodHdlaWdodCAoW3N3YWdnZXItY29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikgc29sdXRpb24g4oCUIGl0J3MgYWJvdXQgYSAxNG1iIGZvciByZWFkeSBKQVIpCi0gU3VwcG9ydHMgT3BlbkFQSTMKLSBBYm92ZSBhbGwsIGludGVuZGVkIGZvciBUeXBlU2NyaXB0IAoKIyMgSW5zdGFsbAoKIyMjIyMgMS4gSW5zdGFsbCBUeXBlU2NyaXB0CgpgYGBzaApucG0gaW5zdGFsbCB0eXBlc2NyaXB0QGxhdGVzdCAtZwpgYGAgCgojIyMjIyAyLiBJbnN0YWxsIG9hcGkzY29kZWdlbiBnbG9iYWwgKGZvciBDTEkgdXNpbmcpCgpgYGBzaApucG0gaW5zdGFsbCBvYXBpM2NvZGVnZW4gLWcKYGBgIAoKIyMjIyMgMy4gSW5zdGFsbCBvYXBpM2NvZGVnZW4gZm9yIGxvY2FsIHByb2plY3QKCmBgYHNoCm5wbSBpbnN0YWxsIG9hcGkzY29kZWdlbiAtLXNhdmUKYGBgIAoKIyMgVXNpbmcgdmlhIENMSQoKYGBgc2gKb2FwaTNjb2RlZ2VuIC0tc3JjUGF0aCAvUEFUSC9UTy9TUkMvb3Blbi1hcGktZmlsZS5qc29uIC0tZGVzdFBhdGggL1BBVEgvVE8vREVTVCAtLXNlcGFyYXRlZEZpbGVzIHRydWUKYGBgCgojIyMjIENMSSBhcmd1bWVudHMKCnwgQ0xJIEFyZ3VtZW50ICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCAqKnNyY1BhdGgqKiAgICAgICAgfCBQYXRoIG9mIHVybCBvZiBKU09OIGZpbGUgd2l0aCBPcGVuQVBJMyBzcGVjaWZpY2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgKipkZXN0UGF0aCoqICAgICAgIHwgUGF0aCBmb3IgZGVzdGluYXRpb24gZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICoqc2VwYXJhdGVkRmlsZXMqKiB8IFdoZXRoZXIgc2hvdWxkIGNvbnZlcnRlZCB0eXBlcyBiZSBzYXZlZCBpbiBzZXBhcmF0ZWQgZmlsZXMsIG9yIGluIHNpbmdsZSBmaWxlIHwKCkFsc28sIHlvdSBjYW4gc2V0IHNvbWUgb2Ygb3B0aW9ucyBmb3IgY29udmVydG9yJ3MgW2NvbmZpZ3VyYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9rb3NoZXZ5L29hcGkzY29kZWdlbi9ibG9iL21hc3Rlci9jb3JlL2NvbmZpZy50cyNMOTkpCmNvbmZpZyB2aWEgQ0xJOgoKfCBPcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgKipkZWZhdWx0Q29udGVudFR5cGUqKiAgICAgICAgICB8IERlZmF1bHQgY29udGVudC10eXBlIGNvbnRhaW5zIG5vIHByZWZpeGVzL3N1ZmZpeGVzIGluIHR5cGUgbmFtZXMuICAgICAgICAgICAgIHwKfCAqKmltcGxpY2l0VHlwZXNSZWZSZXBsYWNlbWVudCoqIHwgTW9kZSB3aGVuIG1vZGVscyB0aGF0IHJlZmVyIHRvIGFueSBtb2RlbHMgdmlhIGAkcmVmYCBhcmUgcmVwbGFjaW5nIGltcGxpY2l0bHkgZXZlbiBpZiBmaXJzdHMgaGF2ZSBuYW1lcyB8CgojIyBVc2luZyB2aWEgQVBJIChUeXBlU2NyaXB0KQoKWW91IGNhbiBjb252ZXJ0IHdob2xlIE9wZW5BUEkzLXNwZWNpZmljYXRpb246CgpgYGB0eXBlc2NyaXB0CmltcG9ydCB7IENvbnZlcnRvciB9IGZyb20gJ29hcGkzY29kZWdlbic7Cgpjb25zdCBjb252ZXJ0b3I6IENvbnZlcnRvciA9IG5ldyBDb252ZXJ0b3IoKTsKCi8qKgogKiBCYXNlIG1vZGVscyBvZiBzcGVjaWZpY2F0aW9uOgogKiAgLSBSZXF1ZXN0cyBib2RpZXMgbW9kZWxzCiAqICAtIFJlcXVlc3RzIHBhcmFtcyBzZXRzIG1vZGVscwogKiAgLSBSZXNwb25zZXMgbW9kZWxzCiAqCiAqIENvbnZlcnRpbmcgc3RhcnRzIGZyb20gZW50cnkgcG9pbnRzIGFuZCBleHRyYWN0cwogKiByZWZlcnJlZCB0eXBlcyBhbmQgZGVwZW5kZW5jaWVzLiBJdCBzIHdoeSB3ZSBuZWVkCiAqIHRvIGdldCAiZW50cnkgcG9pbnRzIi4gCiAqLwpjb25zdCBlbnRyeVBvaW50cyA9IGNvbnZlcnRvci5nZXRPQVBJM0VudHJ5UG9pbnRzKGNvbnRleHQpOwoKLyoqCiAqIFJlbmRlcmluZyBlYWNoIHR5cGU6IGV2ZXJ5IGVudHJ5IHBvaW50IGFuZCBlYWNoIG9mCiAqIHRoZWlycyByZWxhdGVkIHR5cGVzLgogKi8KQ29udmVydG9yLnJlbmRlclJlY3Vyc2l2ZSgKICAgIGVudHJ5UG9pbnRzLAogICAgKGRlc2NyaXB0b3I6IERhdGFUeXBlRGVzY3JpcHRvciwgdGV4dCkgPT4gewogICAgICAgIC8vIEhlcmUgeW91ciBjb2RlOiB5b3UgZ2V0IHRleHQgYW5kIHR5cGUgZGVzY3JpcHRvci4KICAgICAgICAvLyBZb3UgY2FuIHNlZSBob3cgb2FwaTNjb2RlZ2VuJ3MgQ0xJIHVzZXMgdGhpcyBjYWxiYWNrIGhlcmU6CiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2tvc2hldnkvb2FwaTNjb2RlZ2VuL2Jsb2IvbWFzdGVyL2NsaS50cyNMNzMKICAgIH0KKTsKYGBgCgpBbmQgYWxzbywgeW91IGNhbiBjb252ZXJ0IHN0YW5kLWFsb25lIEpTT04tc2NoZW1hIGludG8gdHlwZSBkZXNjcmlwdG9yLAp0aGF0IGNvdWxkIGJlIHJlbmRlcmVkOgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgeyBDb252ZXJ0b3IgfSBmcm9tICdvYXBpM2NvZGVnZW4nOwovLyB5b3UgbmVlZCBwcmV0dGllciB0byBiZWF1dGlmeSByZXN1bHQgb2YgcmVuZGVyaW5nCmltcG9ydCAqIGFzIHByZXR0aWVyIGZyb20gJ3ByZXR0aWVyJzsKLy8gcHJvdmlkZXMgYF8uZWFjaCguLi4pYCBmb3Igb3VyIGV4YW1wbGUKaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnOwoKY29uc3QgY29udmVydG9yOiBDb252ZXJ0b3IgPSBuZXcgQ29udmVydG9yKCk7Cgpjb25zdCBhbm90aGVySnNvblNjaGVtYU9iamVjdCA9IHsKICAgICJ0aXRsZSI6ICJQZXJzb24iLAogICAgImRlc2NyaXB0aW9uIjogIkluZm9ybWF0aW9uIGFib3V0IHBlcnNvbiB5b3UgaGF2ZSB0byByZWdpc3RlciBpbiB5b3VyIHN5c3RlbS4iLAogICAgInR5cGUiOiAib2JqZWN0IiwKICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICJmaXJzdE5hbWUiOiB7CiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICB9LAogICAgICAgICJsYXN0TmFtZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgIH0sCiAgICAgICAgImFnZSI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFnZSBpbiB5ZWFycyIsCiAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAogICAgICAgICAgICAibWluaW11bSI6IDAKICAgICAgICB9CiAgICB9LAogICAgInJlcXVpcmVkIjogWyJmaXJzdE5hbWUiLCAibGFzdE5hbWUiXQp9OwoKY29uc3QgY29udmVydFJlc3VsdCA9IGNvbnZlcnRvci5jb252ZXJ0KAogICAgYW5vdGhlckpzb25TY2hlbWFPYmplY3QsCiAgICB7fSwKICAgICdBbm90aGVyVHlwZScKKTsKCl8uZWFjaChjb252ZXJ0UmVzdWx0LCB0eXBlRGVzY3JpcHRvciA9PiB7CiAgICBjb25zdCB0eXBlQ29kZSA9IHByZXR0aWVyLmZvcm1hdCgKICAgICAgICB0eXBlRGVzY3JpcHRvci5yZW5kZXIoW10pLAogICAgICAgIHtwYXJzZXI6ICd0eXBlc2NyaXB0J30KICAgICk7CgogICAgY29uc29sZS5sb2codHlwZUNvZGUpOwp9KTsKCmBgYAoKQW5kIHRoaXMgY29kZSB3aWxsIHByaW50IHJlc3VsdDoKCmBgYHR5cGVzY3JpcHQKLyoqCiAqICMjIFBlcnNvbgogKiBJbmZvcm1hdGlvbiBhYm91dCBwZXJzb24geW91IGhhdmUgdG8gcmVnaXN0ZXIgaW4geW91ciBzeXN0ZW0uCiAqLwpleHBvcnQgaW50ZXJmYWNlIEFub3RoZXJUeXBlIHsKICBmaXJzdE5hbWU6IHN0cmluZzsKCiAgbGFzdE5hbWU6IHN0cmluZzsKCiAgLyoqCiAgICogQWdlIGluIHllYXJzCiAgICovCiAgYWdlPzogbnVtYmVyOwp9CmBgYAoKIyMgQVBJIChUeXBlU2NyaXB0KQoKQ29taW5nIHNvb24uLi4KCiMjIEhvdyB0byBleHRlbmQ/CgpDb21pbmcgc29vbi4uLg== readmeEtag: '"ff94db1290d21d23b6d798ee329fb71914334936"' readmeLastModified: Tue, 15 May 2018 07:24:08 GMT repositoryId: 131764821 description: Moved here — https://github.com/koshevy/codegena created: '2018-05-01T21:25:54Z' updated: '2023-01-28T14:51:04Z' language: TypeScript archived: true stars: 7 watchers: 1 forks: 3 owner: koshevy logo: https://avatars.githubusercontent.com/u/1203974?v=4 repoEtag: '"6ed3ccd1737db2e37bf8597269b9cef834f2f3e6378d8ce40a9ad75006571bd7"' repoLastModified: Sat, 28 Jan 2023 14:51:04 GMT foundInMaster: true category: Parsers id: f3f5958dfb657fddca8ac61f63c3d588 - source: openapi3 tags repository: https://github.com/wubin1989/pullcode v3: true id: bc40e809ab84668bedebf55e3df56f1b repositoryMetadata: base64Readme: >- IyBwdWxsY29kZQogIApQdWxsY29kZSBpcyBPcGVuQVBJIChha2EgU3dhZ2dlcikgc3BlY2lmaWNhdGlvbiBjb21wYXRpYmxlIHR5cGVzY3JpcHQgaHR0cCBjbGllbnQgY29kZSBnZW5lcmF0aW9uIHRvb2wgcmVseWluZyBvbiBheGlvcy4gWW91IGNhbiBjb25maWd1cmUgaXQgdG8gbnBtIHNjcmlwdHMgdG8gZGlyZWN0bHkgZ2VuZXJhdGUgY2xpZW50IGNvZGUgdG8gc3BlY2lmaWVkIHBhdGggdG8gZWFzaWx5IHVzZS4gU3VwcG9ydCBTd2FnZ2VyIDIgYW5kIE9wZW5BUEkgMyAoYWthIFN3YWdnZXIgMykgaW4ganNvbiBmb3JtYXQuCgo8IS0tIFNUQVJUIGRvY3RvYyBnZW5lcmF0ZWQgVE9DIHBsZWFzZSBrZWVwIGNvbW1lbnQgaGVyZSB0byBhbGxvdyBhdXRvIHVwZGF0ZSAtLT4KPCEtLSBET04nVCBFRElUIFRISVMgU0VDVElPTiwgSU5TVEVBRCBSRS1SVU4gZG9jdG9jIFRPIFVQREFURSAtLT4KIyMjIFRPQwoKLSBbRmVhdHVyZXNdKCNmZWF0dXJlcykKLSBbQ3JlZGl0c10oI2NyZWRpdHMpCi0gW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKLSBbQ0xJIE9wdGlvbnNdKCNjbGktb3B0aW9ucykKLSBbR2VuZXJhdGlvbiBSdWxlXSgjZ2VuZXJhdGlvbi1ydWxlKQotIFtVc2FnZV0oI3VzYWdlKQotIFtRdWlja3N0YXJ0XSgjcXVpY2tzdGFydCkKLSBbTW9yZSBFeGFtcGxlc10oI21vcmUtZXhhbXBsZXMpCiAgLSBbUmVzcG9uc2UgRXJyb3IgSW50ZXJjZXB0b3JdKCNyZXNwb25zZS1lcnJvci1pbnRlcmNlcHRvcikKICAtIFtTZW5kIFJlcXVlc3RzXSgjc2VuZC1yZXF1ZXN0cykKLSBbU2lzdGVyIFByb2plY3RzXSgjc2lzdGVyLXByb2plY3RzKQotIFtMaWNlbnNlXSgjbGljZW5zZSkKCjwhLS0gRU5EIGRvY3RvYyBnZW5lcmF0ZWQgVE9DIHBsZWFzZSBrZWVwIGNvbW1lbnQgaGVyZSB0byBhbGxvdyBhdXRvIHVwZGF0ZSAtLT4KCiMjIEZlYXR1cmVzCgoxLiBUb3RhbGx5IHR5cGVzY3JpcHQgc3VwcG9ydC4gUHVsbGNvZGUgZ2VuZXJhdGVzIHNlcnZpY2UgY2xhc3MsIG1ldGhvZHMsIHJlcXVlc3QgYm9keSBhbmQgcmVzcG9uc2UgYm9keSBvYmplY3QgdHlwZXMgYmFzZWQgb24ganNvbiBmb3JtYXR0ZWQgU3dhZ2dlcjIvT3BlbkFQSTMgZG9jdW1lbnRhdGlvbi4KMi4gUmljaCBhbmQgdXNlZnVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gUHVsbGNvZGUgd3JhcHBzIGF4aW9zIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgYWRkIG1vcmUgb3B0aW9ucyBmb3IgeW91IHRvIGVsZWdhbnRseSBjdXN0b21pemUgcmVxdWVzdHMuCjMuIEJ1aWx0LWluIGF4aW9zIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGludGVyY2VwdG9ycy4gUmVxdWVzdCBpbnRlcmNlcHRvciBoYW5kbGVzIHJlcXVlc3QgdXJsIHJld3JpdGUgYW5kIGFkZHMgQXV0aG9yaXphdGlvbiBoZWFkZXIuIFJlc3BvbnNlIGludGVyY2VwdG9yIGV4dHJhY3RzIGRhdGEgYXR0cmlidXRlIGZyb20gcmF3IHJlc3BvbnNlLiBVc2VycyBjYW4gY29uZmlndXJlIGFkZGl0aW9uYWwgY3VzdG9tIGludGVyY2VwdG9ycyB0byBkbyBmdXJ0aGVyIHByb2Nlc3MuIFRoZXJlIGlzIG5vIGJ1aWx0LWluIHJlcXVlc3QgZXJyb3IgYW5kIHJlc3BvbnNlIGVycm9yIGludGVyY2VwdG9ycywgdXNlcnMgc2hvdWxkIHBhc3MgdGhlaXIgb3duIGltcGxlbWVudGF0aW9ucyBpZiBuZWNlc3NhcnkuCjQuIEZyYW1ld29yay1hZ25vc3RpYy4gUHVsbGNvZGUgY2FuIGJlIHVzZWQgd2l0aCBhbnkgZnJvbnRlbmQgZnJhbWV3b3Jrcy4KCiMjIENyZWRpdHMKCiogW2NvbW1hbmRlci5qc10oaHR0cHM6Ly9naXRodWIuY29tL3RqL2NvbW1hbmRlci5qcynvvJpub2RlanMgY29tbWFuZCBsaW5lIHRvb2wgbGlicmFyeQoqIFtzd2FnZ2VyMm9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL29hcy1raXQvYmxvYi9tYWluL3BhY2thZ2VzL3N3YWdnZXIyb3BlbmFwaS9SRUFETUUubWQp77yaY29udmVydCBzd2FnZ2VyIDIgdG8gT3BlbkFQSSAzCiogW3Z1ZS12YmVuLWFkbWluXShodHRwczovL2dpdGh1Yi5jb20vdmJlbmpzL3Z1ZS12YmVuLWFkbWluKTogYSBtb2Rlcm4gdnVlMyBhZG1pbgoKIyMgSW5zdGFsbGF0aW9uCgpgYGBzaGVsbApucG0gaW5zdGFsbCAtLXNhdmUgcHVsbGNvZGUKYGBgCgpOT1RFOiBnZW5lcmF0ZWQgY29kZSBpbXBvcnRzIGNvZGUgZnJvbSBwdWxsY29kZSwgc28gcHVsbGNvZGUgaXMgbm90IG9ubHkgYSBDTEksIGJ1dCBhbHNvIGEgbnBtIHBhY2thZ2UsIHlvdSBzaG91bGQgdXNlIGAtLXNhdmVgIGluc3RlYWQgb2YgYC0tc2F2ZS1kZXZgLgoKIyMgQ0xJIE9wdGlvbnMKCmBgYHNoZWxsCuKenCAgcHVsbGNvZGUgZ2l0OihtYXN0ZXIpIOKclyBwdWxsY29kZSAtaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKVXNhZ2U6IHB1bGxjb2RlIFtvcHRpb25zXQoKT3B0aW9uczoKICAtbywgLS1vdXRwdXQgPHZhbHVlPiAgY29kZSBvdXRwdXQgcGF0aAogIC11LCAtLXVybCA8dmFsdWU+ICAgICBzd2FnZ2VyIDIuMCBvciBvcGVuYXBpIDMuMCBqc29uIGFwaSBkb2N1bWVudCBkb3dubG9hZCB1cmwKICAtaCwgLS1oZWxwICAgICAgICAgICAgZGlzcGxheSBoZWxwIGZvciBjb21tYW5kCmBgYAoKKiBvdXRwdXQ6IGRpcmVjdG9yaWVzIHdpbGwgYmUgcmVjdXJzaXZlbHkgY3JlYXRlZCBpZiBub3QgZXhpc3RzLgoKIyMgR2VuZXJhdGlvbiBSdWxlCgpQdWxsY29kZSB3aWxsIGNoZWNrIGlmIGBCaXpTZXJ2aWNlLnRzYCBmaWxlIGV4aXN0cywgaWYgZXhpc3RzLCBza2lwLiBPdGhlciBmaWxlcyB3aWxsIGFsd2F5cyBiZSBvdmVyd3JpdHRlbi4KCiMjIFVzYWdlCgoxLiBDb25maWd1cmUgcHVsbGNvZGUgY29tbWFuZCBpbnRvIGBzY3JpcHRzYCBhdHRyaWJ1dGUgaW4gcGFja2FnZS5qc29uLiBGb3IgZXhhbXBsZToKCmBgYGphdmFzY3JpcHQKInNjcmlwdHMiOiB7CiAgInB1bGwiOiAicHVsbGNvZGUgLXUgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uIC1vIHNyYy9hcGkiCn0sCmBgYAoKMi4gUnVuIGBucG0gcnVuIHB1bGxgCgozLiBPcGVuIGBCaXpTZXJ2aWNlLnRzYCBmaWxlLCBmaXggYGRlZmF1bHRPcHRpb25zYCBwYXJhbWV0ZXJzIHRvIGZpdCB5b3VyIG5lZWQuICAKCmBgYGphdmFzY3JpcHQKY29uc3QgZGVmYXVsdE9wdGlvbnM6IENyZWF0ZUF4aW9zT3B0aW9ucyA9IHsKICByZXF1ZXN0T3B0aW9uczogewogICAgYXBpVXJsOiAnJywgLy8gc2FtZSBhcyBiYXNlVXJsCiAgICB1cmxQcmVmaXg6ICcnLAogIH0gYXMgUmVxdWVzdE9wdGlvbnMsCn0KYGBgCgotIGBhcGlVcmxgOiBpZiBjb25maWd1cmVkIHByb3h5LCBgYXBpVXJsYCBzaG91bGQgYmUgc2V0IHRvIGEgcHJlZml4IGZvciBtYXRjaGluZyB0aGUgcHJveHkuCi0gYHVybFByZWZpeGA6IHNob3VsZCBiZSBjb25maXJtZWQgd2l0aCB5b3VyIGJhY2tlbmQgY29sbGVhZ3VlcyBpZiB0aGVyZSBpcyB1cmwgcHJlZml4IHRvIG1hdGNoIHNlcnZpY2UgbmFtZSAoaWYgdGhlIHNlcnZpY2UgaXMgYmVoaW5kIGEgZ2F0ZXdheSkgb3Igc2VydmxldCBjb250eHQgcGF0aCAoaWYgdGhlIHNlcnZpY2UgaXMgYmFzZWQgb24gc3ByaW5nIGJvb3QgZnJhbWV3b3JrKS4KLSBgdHJhbnNmb3JtYDogc2V0IHlvdXIgY3VzdG9tIGF4aW9zIGludGVyY2VwdG9ycy4gTm9ybWFsbHksIHlvdSBqdXN0IG5lZWQgdG8gY3VzdG9taXplIHJlc3BvbnNlIGVycm9yIGludGVyY2VwdG9yLgotIGB0b2tlbkdldHRlcmA6IHNldCBhdXRoIHRva2VuIGdldHRlciBmdW5jdGlvbi4gVGhlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGluIGJ1aWx0LWluIHJlcXVlc3QgaW50ZXJjZXB0b3IgdG8gcHV0IHRva2VuIGludG8gaGVhZGVyLgoKRm9yIGV4YW1wbGU6IAoKYGBgamF2YXNjcmlwdAppbXBvcnQgeyBtZXJnZSB9IGZyb20gJ2xvZGFzaC1lcyc7CmltcG9ydCB7IENyZWF0ZUF4aW9zT3B0aW9ucywgVkF4aW9zIH0gZnJvbSAnQC9odHRwdXRpbC9BeGlvcyc7CmltcG9ydCB7IHVzZUdsb2JTZXR0aW5nIH0gZnJvbSAnL0AvaG9va3Mvc2V0dGluZyc7CmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gJy9AL2FwaS9pbnRlcmNlcHRvcicKaW1wb3J0IHsgZ2V0VG9rZW4gfSBmcm9tICcvQC91dGlscy9hdXRoJzsKaW1wb3J0IHsgUmVxdWVzdE9wdGlvbnMgfSBmcm9tICdAL3R5cGVzL2F4aW9zJzsKCmNvbnN0IGdsb2JTZXR0aW5nID0gdXNlR2xvYlNldHRpbmcoKTsKCmNvbnN0IGRlZmF1bHRPcHRpb25zOiBDcmVhdGVBeGlvc09wdGlvbnMgPSB7CiAgdHJhbnNmb3JtLAogIHJlcXVlc3RPcHRpb25zOiB7CiAgICBhcGlVcmw6IGdsb2JTZXR0aW5nLmFwaVVybCwgLy8gc2FtZSBhcyBiYXNlVXJsCiAgICB1cmxQcmVmaXg6ICcvbXlzZXJ2aWNlJywKICB9IGFzIFJlcXVlc3RPcHRpb25zLAogIHRva2VuR2V0dGVyOiBnZXRUb2tlbiBhcyAoKSA9PiBzdHJpbmcKfQoKZXhwb3J0IGNsYXNzIEJpelNlcnZpY2UgZXh0ZW5kcyBWQXhpb3MgewogIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBQYXJ0aWFsPENyZWF0ZUF4aW9zT3B0aW9ucz4pIHsKICAgIHN1cGVyKG1lcmdlKGRlZmF1bHRPcHRpb25zLCBvcHRpb25zIHx8IHt9KSk7CiAgfQp9CgpleHBvcnQgZGVmYXVsdCBCaXpTZXJ2aWNlOwpgYGAKCkZvciBvdGhlciBvcHRpb25zLCBwbGVhc2UgcmVhZCBgQ3JlYXRlQXhpb3NPcHRpb25zYCBkZWZpbml0aW9uIGZyb20gc291cmNlIGNvZGUuCgo0LiBBZnRlciBhYm92ZSBmaXgsIHlvdSBjYW4gaW1wb3J0IGRlZmF1bHQgc2luZ2xldG9uIHNlcnZpY2UgaW5zdGFuY2UgdG8gY29tcG9uZW50cyB0byBzZW5kIGh0dHAgcmVxdWVzdHMuCgojIyBRdWlja3N0YXJ0CgpQbGVhc2UgcmVmZXIgdG8gdGhpcyBleGFtcGxlIGFwcO+8mltwdWxsY29kZS1xdWlja3N0YXJ0XShodHRwczovL2dpdGh1Yi5jb20vd3ViaW4xOTg5L3B1bGxjb2RlL3RyZWUvbWFzdGVyL2V4YW1wbGVzL3B1bGxjb2RlLXF1aWNrc3RhcnQpCgohW3BldHN0b3JlXSguL3BldHN0b3JlLnBuZykKCiMjIE1vcmUgRXhhbXBsZXMKIyMjIFJlc3BvbnNlIEVycm9yIEludGVyY2VwdG9yCgpgYGBqYXZhc2NyaXB0CmltcG9ydCB0eXBlIHsgQXhpb3NSZXNwb25zZSB9IGZyb20gJ2F4aW9zJzsKaW1wb3J0IHR5cGUgeyBBeGlvc1RyYW5zZm9ybSB9IGZyb20gJ0AvaHR0cHV0aWwvYXhpb3NUcmFuc2Zvcm0nOwppbXBvcnQgeyBjaGVja1N0YXR1cyB9IGZyb20gJy4vY2hlY2tTdGF0dXMnOwppbXBvcnQgeyB1c2VNZXNzYWdlIH0gZnJvbSAnL0AvaG9va3Mvd2ViL3VzZU1lc3NhZ2UnOwppbXBvcnQgeyB1c2VFcnJvckxvZ1N0b3JlV2l0aE91dCB9IGZyb20gJy9AL3N0b3JlL21vZHVsZXMvZXJyb3JMb2cnOwppbXBvcnQgeyB1c2VJMThuIH0gZnJvbSAnL0AvaG9va3Mvd2ViL3VzZUkxOG4nOwoKY29uc3QgeyBjcmVhdGVNZXNzYWdlLCBjcmVhdGVFcnJvck1vZGFsIH0gPSB1c2VNZXNzYWdlKCk7CgpleHBvcnQgY29uc3QgdHJhbnNmb3JtOiBBeGlvc1RyYW5zZm9ybSA9IHsKICAvKioKICAgKiBAZGVzY3JpcHRpb246IFJlc3BvbnNlIEVycm9yIEludGVyY2VwdG9yCiAgICovCiAgcmVzcG9uc2VJbnRlcmNlcHRvcnNDYXRjaDogKF86IEF4aW9zUmVzcG9uc2UsIGVycm9yOiBhbnkpID0+IHsKICAgIGNvbnN0IHsgdCB9ID0gdXNlSTE4bigpOwogICAgY29uc3QgZXJyb3JMb2dTdG9yZSA9IHVzZUVycm9yTG9nU3RvcmVXaXRoT3V0KCk7CiAgICBlcnJvckxvZ1N0b3JlLmFkZEFqYXhFcnJvckluZm8oZXJyb3IpOwogICAgY29uc3QgeyByZXNwb25zZSwgY29kZSwgbWVzc2FnZSwgY29uZmlnIH0gPSBlcnJvciB8fCB7fTsKICAgIGNvbnN0IGVycm9yTWVzc2FnZU1vZGUgPSBjb25maWc/LnJlcXVlc3RPcHRpb25zPy5lcnJvck1lc3NhZ2VNb2RlIHx8ICdub25lJzsKICAgIGNvbnN0IG1zZzogc3RyaW5nID0gcmVzcG9uc2U/LmRhdGE/LmVycm9yPy5tZXNzYWdlID8/ICcnOwogICAgY29uc3QgZXJyOiBzdHJpbmcgPSBlcnJvcj8udG9TdHJpbmc/LigpID8/ICcnOwogICAgbGV0IGVyck1lc3NhZ2UgPSAnJzsKCiAgICB0cnkgewogICAgICBpZiAoY29kZSA9PT0gJ0VDT05OQUJPUlRFRCcgJiYgbWVzc2FnZS5pbmRleE9mKCd0aW1lb3V0JykgIT09IC0xKSB7CiAgICAgICAgZXJyTWVzc2FnZSA9IHQoJ3N5cy5hcGkuYXBpVGltZW91dE1lc3NhZ2UnKTsKICAgICAgfQogICAgICBpZiAoZXJyPy5pbmNsdWRlcygnTmV0d29yayBFcnJvcicpKSB7CiAgICAgICAgZXJyTWVzc2FnZSA9IHQoJ3N5cy5hcGkubmV0d29ya0V4Y2VwdGlvbk1zZycpOwogICAgICB9CgogICAgICBpZiAoZXJyTWVzc2FnZSkgewogICAgICAgIGlmIChlcnJvck1lc3NhZ2VNb2RlID09PSAnbW9kYWwnKSB7CiAgICAgICAgICBjcmVhdGVFcnJvck1vZGFsKHsgdGl0bGU6IHQoJ3N5cy5hcGkuZXJyb3JUaXAnKSwgY29udGVudDogZXJyTWVzc2FnZSB9KTsKICAgICAgICB9IGVsc2UgaWYgKGVycm9yTWVzc2FnZU1vZGUgPT09ICdtZXNzYWdlJykgewogICAgICAgICAgY3JlYXRlTWVzc2FnZS5lcnJvcihlcnJNZXNzYWdlKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKICAgICAgfQogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yIGFzIHVua25vd24gYXMgc3RyaW5nKTsKICAgIH0KCiAgICBjaGVja1N0YXR1cyhlcnJvcj8ucmVzcG9uc2U/LnN0YXR1cywgbXNnLCBlcnJvck1lc3NhZ2VNb2RlKTsKICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7CiAgfSwKfTsKYGBgCgojIyMgU2VuZCBSZXF1ZXN0cwoKYGBgamF2YXNjcmlwdAo8c2NyaXB0IHNldHVwIGxhbmc9InRzIj4KaW1wb3J0IHsgcGV0U2VydmljZSB9IGZyb20gJ0AvYXBpL1BldFNlcnZpY2UnOwppbXBvcnQgeyBQZXQsIFBldFN0YXR1c0VudW0gfSBmcm9tICdAL2FwaS90eXBlcyc7CmltcG9ydCB7IHJlZiB9IGZyb20gJ3Z1ZSc7CgpsZXQgbG9hZGluZyA9IHJlZih0cnVlKTsKbGV0IGRhdGFTb3VyY2UgPSByZWYoW10gYXMgUGV0W10pOwoKcGV0U2VydmljZS5nZXRQZXRGaW5kQnlTdGF0dXMoewogIHN0YXR1czogUGV0U3RhdHVzRW51bS5BVkFJTEFCTEUsCn0pLnRoZW4oKHJlc3A6IFBldFtdKSA9PiB7CiAgZGF0YVNvdXJjZS52YWx1ZSA9IHJlc3AKICBsb2FkaW5nLnZhbHVlID0gZmFsc2UKfSkKPC9zY3JpcHQ+CmBgYAoKIyMgU2lzdGVyIFByb2plY3RzCgotIFtnby1kb3Vkb3VdKGh0dHBzOi8vZ2l0aHViLmNvbS91bmlvbmotY2xvdWQvZ28tZG91ZG91KTogT3BlbkFQSSAzLjAgc3BlYyBiYXNlZCBsaWdodHdlaWdodCBtaWNyb3NlcnZpY2UgZnJhbWV3b3JrIHdyaXR0ZW4gaW4gR28uIEl0IHN1cHBvcnRzIG1vbm9saXRoIHNlcnZpY2UgYXBwbGljYXRpb24gYXMgd2VsbC4gQ3VycmVudGx5LCBpdCBzdXBwb3J0cyBSRVNUZnVsIHNlcnZpY2Ugb25seS4KCiMjIExpY2Vuc2UKCk1JVA== readmeEtag: '"43d5b70ed509b8114b9fd4895334bf9babca2450"' readmeLastModified: Sun, 20 Aug 2023 17:15:06 GMT repositoryId: 509066883 description: >- pullcode is a typescript http client code generation cli compatible with Swagger 2 and OpenAPI 3 created: '2022-06-30T12:15:28Z' updated: '2025-09-24T07:48:19Z' language: TypeScript archived: false stars: 8 watchers: 1 forks: 2 owner: wubin1989 logo: https://avatars.githubusercontent.com/u/12456315?v=4 license: MIT repoEtag: '"ac61be12133dd2a96b4ff5b2f73f02d87d74eb9b2fd8c68ea4dca505d856a375"' repoLastModified: Wed, 24 Sep 2025 07:48:19 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/lzehrung/zod-express-openapi-routes v3: true id: 86218aaea66f6e330ef4798b47533734 repositoryMetadata: base64Readme: >- IyMgT3ZlcnZpZXcKCi0gRmluZCBhbiBlcmdvbm9taWMgd2F5IChtaW5pbWl6ZSBib2lsZXJwbGF0ZSBhbmQgY29kZSBkdXBsaWNhdGlvbikgdG8gZ2V0IHR5cGVkLCB6b2QtdmFsaWRhdGVkIGV4cHJlc3Mgcm91dGVzIGFuZCBhbiBPcGVuQVBJCiAgc2NoZW1hIGF0IHRoZSBzYW1lIHRpbWUKLSBNaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGFuZCBib2lsZXJwbGF0ZSBiZXR3ZWVuIGV4cHJlc3Mgcm91dGVzLCByZXF1ZXN0IHBhcmFtZXRlciB2YWxpZGF0aW9uLCBhbmQgT3BlbkFQSSBkZWZpbml0aW9ucwoKIyMgSGlnaGxpZ2h0cwoKLSBiYXNlIGBDb250cm9sbGVyYCBjbGFzcyB0aGF0IGNvbnNvbGlkYXRlcyBjcmVhdGlvbiBvZiBleHByZXNzIHJvdXRlLCB6b2QtdmFsaWRhdGVkIHJlcXVlc3QgcGFyYW1ldGVycywgT3BlbkFQSSBkZWZpbml0aW9uLCBhbmQgZ2V0dGluZyBhIHR5cGVkIGBleHByZXNzLlJvdXRlSGFuZGxlcmA6IFtzcmMvem9kLW9wZW5hcGktZXhwcmVzcy1yb3V0ZXMvem9kLWFwaS5jb250cm9sbGVyLnRzXShzcmMvem9kLW9wZW5hcGktZXhwcmVzcy1yb3V0ZXMvem9kLWFwaS5jb250cm9sbGVyLnRzKQotIGV4YW1wbGUgY29udHJvbGxlciBpbnN0YW5jZTogW3NyYy9wcm9kdWN0cy9wcm9kdWN0cy5jb250cm9sbGVyLnRzXShzcmMvcHJvZHVjdHMvcHJvZHVjdHMuY29udHJvbGxlci50cykKLSBleGFtcGxlIHJlcXVlc3QgcGFyYW1ldGVyIHpvZCBzY2hlbWFzOiBbc3JjL3Byb2R1Y3RzL2FwaS1zY2hlbWFzLnRzXShzcmMvcHJvZHVjdHMvYXBpLXNjaGVtYXMudHMpCi0gZXhhbXBsZSBtYW51YWxseS1kZWZpbmVkIGZpbGUgdXBsb2FkIHJvdXRlIHVzaW5nIFttdWx0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9leHByZXNzanMvbXVsdGVyKSBmb3IgdXBsb2FkczogW3NyYy9wcm9kdWN0cy9wcm9kdWN0cy5jb250cm9sbGVyLnRzI0wxNDhdKHNyYy9wcm9kdWN0cy9wcm9kdWN0cy5jb250cm9sbGVyLnRzI0wxNDgpCgojIyBSdW4gdGhlIGV4YW1wbGUKCi0gY2xvbmUgdGhlIHJlcG9zaXRvcnkKLSBgbnBtIGluc3RhbGxgCi0gYG5wbSBydW4gZGV2YAotIG9wZW4gdGhlIGdlbmVyYXRlZCBPcGVuQVBJIGRvY3MgaHR0cDovL2xvY2FsaG9zdDozMjUwL2FwaS9yZWZlcmVuY2UKLSBvcGVuIHRoZSBnZW5lcmF0ZWQgYHN3YWdnZXIuanNvbmAgaHR0cDovL2xvY2FsaG9zdDozMjUwL2FwaS9zd2FnZ2VyLmpzb24KLSBnZXQgYSBzaW5nbGUgcmVzb3VyY2UgaHR0cDovL2xvY2FsaG9zdDozMjUwL2FwaS9wcm9kdWN0cy8xCi0gYW4gaW52YWxpZCBwYXRoIHBhcmFtZXRlciByZXN1bHRzIGluIHZhbGlkYXRpb24gZXJyb3JzIGh0dHA6Ly9sb2NhbGhvc3Q6MzI1MC9hcGkvcHJvZHVjdHMvYWJjCgojIyBEZXBlbmRlbmNpZXMKCi0gYEBhbmF0aW5lL3pvZC1vcGVuYXBpYDogZ2VuZXJhdGVzIHJlcXVlc3QgcGFyYW1ldGVyIE9wZW5BUEkgZGVmaW5pdGlvbnMgZnJvbSB6b2Qgc2NoZW1hcwotIGBvcGVuYXBpMy10c2A6IHVzZWQgdG8gZGVmaW5lIE9wZW5BUEkgc2NoZW1hIGluIFR5cGVTY3JpcHQKLSBgc3dhZ2dlci11aS1leHByZXNzYDogc2VydmVzIHRoZSBPcGVuQVBJIGRvY3VtZW50YXRpb24KLSBgem9kYDogdXNlZCB0byBkZWZpbmUgcmVxdWVzdCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBzY2hlbWFzCgojIyBMaW1pdGF0aW9ucwoKLSBmaWxlIHVwbG9hZCByb3V0ZXMgbXVzdCBiZSBkb2N1bWVudGVkIG1hbnVhbGx5Ci0gaGF2ZW4ndCB0ZXN0ZWQgbmVzdGVkIHJvdXRlcnMgLyByb3V0ZXMKLSBub3QgZXh0ZW5zaXZlbHkgdGVzdGVkCg== readmeEtag: '"0bd31b6e9696fb8a5820a4bcb9181fe61851f364"' readmeLastModified: Sun, 21 Apr 2024 22:36:31 GMT repositoryId: 577179642 description: >- POC for cozy API validation, typing, and OpenAPI/swagger schema generation with Zod and Express created: '2022-12-12T06:37:15Z' updated: '2025-11-26T19:13:52Z' language: TypeScript archived: false stars: 7 watchers: 1 forks: 1 owner: lzehrung logo: https://avatars.githubusercontent.com/u/924226?v=4 repoEtag: '"29b0655b8aa3ea788305cc24172a24fff37d4e718d66e58119b49abfb15702f3"' repoLastModified: Wed, 26 Nov 2025 19:13:52 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/laura-rodriguez/dotnetconf22 v3: true id: 3eb48a23918165d7000be240cf49d8a6 repositoryMetadata: base64Readme: >- IyBHcm9jZXJ5IEl0ZW1zIE1hbmFnZW1lbnQgU0RLCiAKIFRoaXMgcmVwb3NpdG9yeSBjb250YWlucyBhbGwgdGhlIHByb2plY3RzIGJ1aWx0IGR1cmluZyBteSB0YWxrICJCdWlsZCBhbiBTREsgd2l0aCBPcGVuQVBJIGFuZCBOU3dhZyIgYXQgLk5FVENvbmYgMjAyMiAKCiAqIEdyb2NlcnkgQVBJOiBUaGlzIHByb2plY3QgY29udGFpbnMgdGhlIEFQSSBpbXBsZW1lbnRhdGlvbiBwbHVzIHRoZSBEQUwgbG9naWMgKFdlYiBBUEkvLk5FVCA3KQogKiBHcm9jZXJ5IFNESzogVGhpcyBwcm9qZWN0IGNvbnRhaW5zIHRoZSBjbGllbnQgaW1wbGVtZW50YXRpb24gZ2VuZXJhdGVkIGJ5IE5Td2FnIChDbGFzcyBMaWJyYXJ5Ly5ORVQgU3RhbmRhcmQgMi4wKQogKiBTYW1wbGUgQXBwOiBUaGlzIHByb2plY3QgdXRpbGl6ZXMgdGhlIFNESyAoQ29uc29sZSBBcHAvLk5FVCBDb3JlIDMuMSkKCiAjIyBHZXR0aW5nIFN0YXJ0ZWQKCjEuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBhbGwgdGhlIC5ORVQgcnVudGltZXMgdXNlZCBieSB0aGlzIHNvbHV0aW9uIGluc3RhbGxlZAoyLiBDb25maWd1cmUgdGhlIEdyb2NlcnkgQVBJIHByb2plY3QgdG8gdXNlIFVzZXIgSldUcyBieSBydW5uaW5nIGBkb3RuZXQgdXNlci1qd3RzIGNyZWF0ZWAgCjMuIFVwZGF0ZSB0aGUgUHJvZ3JhbSBmaWxlIHdpdGggeW91ciB0b2tlbiBpbiB0aGUgQ29uc29sZSBBcHAKNC4gQ29uZmlndXJlIHlvdXIgc29sdXRpb24gdG8gcnVuIHRoZSBBUEkgYW5kIHRoZSBDb25zb2xlIEFwcCBzaW11bHRhbmVvdXNseSAKCiMjIFJlc291cmNlcwoKSGVyZSdzIGEgbGlzdCB3aXRoIGFsbCB0aGUgcmVzb3VyY2VzIHRvIGxlYXJuIG1vcmUgYWJvdXQgYWxsIHRoZSB0b3BpY3MhCgoqIFtNaW5pbWFsIEFQSXNdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9hc3BuZXQvY29yZS90dXRvcmlhbHMvbWluLXdlYi1hcGk/dmlldz1hc3BuZXRjb3JlLTcuMCZ0YWJzPXZpc3VhbC1zdHVkaW8pCiogW1VzZXIgSldUc10oaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2FzcG5ldC9jb3JlL3NlY3VyaXR5L2F1dGhlbnRpY2F0aW9uL2p3dC1hdXRobj9wcmVzZXJ2ZS12aWV3PXRydWUmdmlldz1hc3BuZXRjb3JlLTcuMCZ0YWJzPXdpbmRvd3MpCiogW09wZW5BUEldKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9hc3BuZXQvY29yZS9mdW5kYW1lbnRhbHMvbWluaW1hbC1hcGlzL29wZW5hcGk/dmlldz1hc3BuZXRjb3JlLTcuMCkKKiBbTlN3YWddKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9hc3BuZXQvY29yZS90dXRvcmlhbHMvZ2V0dGluZy1zdGFydGVkLXdpdGgtbnN3YWc/dmlldz1hc3BuZXRjb3JlLTcuMCZ0YWJzPXZpc3VhbC1zdHVkaW8pCiogWy5ORVQgU3RhbmRhcmRdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9kb3RuZXQvc3RhbmRhcmQvbmV0LXN0YW5kYXJkP3RhYnM9bmV0LXN0YW5kYXJkLTItMCkKCg== readmeEtag: '"53da0b6829eff853567645f10be503bb9989a391"' readmeLastModified: Wed, 09 Nov 2022 19:04:42 GMT repositoryId: 555555610 description: Minimal API + OpenAPI Sample created: '2022-10-21T20:24:18Z' updated: '2024-08-21T07:52:52Z' language: C# archived: false stars: 7 watchers: 1 forks: 1 owner: laura-rodriguez logo: https://avatars.githubusercontent.com/u/16751130?v=4 license: GPL-3.0 repoEtag: '"59ce58355659bb5a5672a8a3a5d37c9d1d436eba2eda354664f5364b55b3f8d3"' repoLastModified: Wed, 21 Aug 2024 07:52:52 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/hirako2000/hirako-starter-kit v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iIyI+PGltZyBzcmM9Imh0dHBzOi8vaS5pYmIuY28vcVk3QmRrRC9iYW5uZXIucG5nIiAvPjwvYT4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgQSBzbGlnaHRseSA8ZW0+b3BpbmlvbmF0ZWQ8L2VtPiBzdGFydGVyIGtpdCA8YnIvPgogIGZvciBidWlsZGluZyBOb2RlLmpzIHNlcnZlci4KPC9wPgo8YnIvPgo8YnIvPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iI2xhdW5jaCI+TGF1bmNoPC9hPiDigKIKICA8YSBocmVmPSIjdGVjaCI+VGVjaDwvYT4g4oCiCiAgPGEgaHJlZj0iI3JvYWRtYXAiPlJvYWRtYXA8L2E+IOKAogo8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL3RyYXZpcy1jaS5vcmcvaGlyYWtvMjAwMC9oaXJha28tc3RhcnRlci1raXQiPgogICAgPGltZyBzcmM9Imh0dHBzOi8vdHJhdmlzLWNpLm9yZy9oaXJha28yMDAwL2hpcmFrby1zdGFydGVyLWtpdC5zdmc/YnJhbmNoPW1hc3RlciI+CiAgPC9hPgogIDxhIGhyZWY9Ii4vTGljZW5zZS5tZCI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9zbGF0ZS5zdmc/bWF4QWdlPTMwMCI+CiAgPC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmNvZGFjeS5jb20vbWFudWFsL2hpcmFrbzIwMDAvaGlyYWtvLXN0YXJ0ZXIta2l0Ij4KICAgIDxpbWcgc3JjPSJodHRwczovL2FwaS5jb2RhY3kuY29tL3Byb2plY3QvYmFkZ2UvR3JhZGUvMWNjYTU5N2NjNjRmNGQ5ZDk3YjJhMTY4MmVjNjVmN2EiPgogIDwvYT4KPC9wPgoKPGJyLz4KPGJyLz4KCkEgc3RhcnQga2l0IGZvciBidWlsZGluZyB3ZWIgYXBwcyB1c2luZyBleHByZXNzLCBtYXJrbywgbW9uZ29vc2UgYW5kIHBhc3Nwb3J0LgoKIyMgTGF1bmNoCgpgYGBzaApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2hpcmFrbzIwMDAvaGlyYWtvLXN0YXJ0ZXIta2l0LmdpdApjZCBoaXJha28tc3RhcnRlci1raXQKbnBtIGluc3RhbGwgIyB0aGlzIHdpbGwgdGFrZSBhIHdoaWxlIGRlcGVuZGluZyBvbiB5b3VyIGludGVybmV0IGJhbmR3aXRoCmNwIC5lbnYuZXhhbXBsZSAuZW52Cm5wbSBzdGFydCAjIFlvdXIgZGVmYXVsdCBicm93c2VyIHdpbGwgb3BlbiBhbmQgbG9hZCB0aGUgcm9vdCBwYWdlCm5wbSBydW4gc3RhcnQ6ZGV2ICMgU2FtZSwgYnV0IGZvciBkZXYsIGF1dG8gcmVmcmVzaCBvbiBzYXZpbmcgY29kZSBjaGFuZ2UKYGBgCgojIyBEZXNpZ24gUGhpbG9zb3BoeQoKLSBNYXhpbWl6ZSBwcm9kdWN0aXZpdHkgYW5kIGVhc2UgaW4gZGV2ZWxvcG1lbnQKLSBHdWFyYW50ZWUgZWFzZSBvZiBkZXBsb3ltZW50IGFuZCBwZXJmb3JtYW5jZSBpbiBwcm9kdWN0aW9uCi0gTXVzdCBiZSBlYXN5IHRvIGFkb3B0IGFuZCBub3QgZm9yY2UgeW91IHRvIGNoYW5nZSB0aGUgd2F5IHlvdSB3cml0ZSB5b3VyIGNvZGUKCiMjIEFub3RoZXIgRXhwcmVzcyBib2lsZXJwbGF0ZQoKTWF5YmUuIEkgY2hlY2tlZCBvdXQgYSBudW1iZXIgb2Ygc3VwcG9zZWRseSByb2NrIHNvbGlkIGV4cHJlc3MgYm9pbGVycGxhdGUsIG1hbnkgb2YgdGhlbSBkb24ndCBldmVuIGJ1aWxkIG9yIHN0YXJ0LCBpc3N1ZXMgcmFpc2VkIHdpdGggbm8gYWN0aXZpdHkuIEl0IGhhcHBlbnMgd2l0aCBvcGVuIHNvdXJjZS4uIEkgY2FuIG9mdGVuIGZpeCB0aGUgaXNzdWVzLCBidXQsIG9uZSBvciBtb3JlIG9mIHRob3NlIGRpc3NhcG9pbnRpbmcgc3VycHJpc2UgZm9sbG93OgoKLSBMYWNrIG9mIGRlY2VudCBzZXJ2ZXIgcmVuZGVyaW5nIHNldCB1cCwganVzdCBBUEkuIEkgd2FudCBhbiBBUEkgYW5kIHRoZSBhYmxpdHkgdG8gcmVuZGVyIHN0cnVjdHVlZCBwYWdlcyBhbHJlYWR5LCBBUEkgYm9pbGVycGxhdGUgYXJlIGZpbmUsIGJ1dCBJIGRvbid0IHdhbnQgdHdvIHByb2plY3RzLCBlc3BlY2lhbGx5IHdoZW4gcHJvdG90eWluZwotIEJsb2F0ZWQgd2l0aCBoZWF2eSBmcm9udCBlbmQgbGlicmFyaWVzLCBJIG5lZWQgcGVyZm9ybWFuY2UKLSBCb2F0ZWQgd2l0aCBwb29ybHkgY29uZmlndXJlZCB3ZWJwYWNrIGJ1bmRsZXIsIEkgbmVlZCBwZXJmb3JtYW5jZQotIE5vIHByb3BlciBwcm9kdWN0aW9uIHN0cnVjdHVyZSBhbmQgY29uZmlnLCBnb29kIGZvciBkZXZlbG9wZW1lbnQsIGJ1dCBJIG5lZWQgYSBwcm9kdWN0aW9uIHJlYWR5IGZvdW5kYXRpb24sIG9yIGF0IGxlYXN0IHJlYXNvbmFibHkgY29uZmlndXJhYmxlIGFuZCBub3QgaGF2aW5nIHRvIHJlLXdyaXRlIG15IG93biBwcm9kdWN0aW9uIGJ1aWxkIHBpcGVsaW5lCi0gTGFjayBvZiB1bml0IHRlc3RzLCBsYWNrIG9mIG1lYW5zIHRvIHVuaXQgdGVzdCBhbnl0aGluZyBpbiB0aGVyZSBvciBteSBvd24gY29kZQotIEhhcmQgdG8gcmVtb3ZlIGRlcGVuZGVuY2llcyBzdWNoIGFzIG91dGRhdGVkIG9yIGV2ZW4gdW5tYWludGFpbmVkIGxpYnJhcmllcwoKU28geWVhLCBJIGJ1aWx0IG15IG93bi4gT3BlbiBzb3VyY2luZyBpdCBmb3IgdGhlIHBvb3IgYmVhcnMgaW4gbmVlZCBvZiBhIHNvbHV0aW9uLgoKIyMgT3BpbmlvbnMKClRoZSBib2lsZXJwbGF0ZSBpcyBub3Qgd2hhdCBvbmUgd291bGQgY2FsbCBvcGluaW9uYXRlZC4gU29tZSBkZWNpc2lvbnMgaGFkIHRvIGJlIG1hZGUgdGhvdWdoLiBBIHRvdGFsbHkgb3Bpbmlvbmxlc3Mgc3RhcnRlciBraXQgbGVhZHMgdG8gc29tZSBnYXBzIHRvIGZpbGwuCgpXaGVuIGluY29ycG9yYXRpbmcgYSBkZXNpZ24gcGF0dGVybiwgbGlicmFyeSBvciBmcmFtZXdvcmssIHRoZSBxdWVzdGlvbiBpcyBob3cgZGlmZmljdWx0IHdvdWxkIGl0IGJlIHRvIGRyb3AgaXQgb3IgcmVwbGFjZSB3aXRoIGJldHRlciBzdWl0ZWQgYWx0ZXJuYXRpdmUuIElmIHRoZSBhbnN3ZXIgaXMgYHdheSB0b28gZGlmZmljdWx0YCwgdGhlbiBpdCdzIGxlZnQgb2ZmLiBDaG9pY2VzIG1hZGUgc28gZmFyIGNhbiBiZSBmb3JtdWxhdGVkIGFzIGJlbG93OgoKLSBTZXJ2ZXIgc2lkZSByZW5kZXJpbmcgaXMganVzdCBwbGFpbiBtb3JlIHBlcmZvcm1hbnQgdGhhbiBTUEEuIENhbid0IGJlYXQgdGV4dCBmb3IgdGVtcGxhdGluZywgY2FuJ3QgYmVhdCBhIHNlcnZlciBwcm9jZXNzaW5nIHBvd2VyIChpZiB3ZWxsIHByb3Zpc2lvbmVkKSwgYW5kIGl0J3MgU0VPIHJlYWR5IHdpdGggbm8gaGVhZGFjaGUuCi0gUkVTVGZ1bCBBUEkuIEl0IGlzIG5lZWRlZCwgcmVhbGx5LiBFeHByZXNzIG1heSBub3QgYmUgdGhlICdiZXN0JyBmcmFtZXdvcmsgZm9yIEFQSSBkZXZlbG9wbWVudCwgYnV0IGl0IGlzIGEgdmVyeSB3ZWxsIHJvdW5kZWQsIGJhY2tlZCBieSB0aGUgbGFyZ2VzdCBjb21tdW5pdHkgYW5kIG51bWJlciBvZiBzb2xpZCBsaWJyYXJpZXMuIEFuZCwgbW9zdCBub2RlLmpzIGRldmVsb3BlcnMgYXJlIGZhbWlsaWFyIHdpdGggaXQuCi0gTGVzc0NTUy4gU2FzcyBpcyBzdXBlcmlvciwgSSBrbm93IHNhc3N5LiBCdXQgaXQgcmVxdWlyZXMgY29tcGxpZWQgYmluYXJpZXMgdG8gZXhlY3V0ZS4gSXQncyBPSyBmb3IgZGV2ICh0byBzb21lIGRlZ3JlZSkgYnV0IGl0IGlzIE5PVCBvayBmb3IgZGV2b3BzLiBBbnkgT1MgZGlzdHJpYnV0aW9uIHNob3VsZCBiZSBhYmxlIHRvIGJ1aWxkIHRoZSBwcm9qZWN0LiBTb21lIG5hdGl2ZSBmcm9tIHNvdXJjZSBjb21waWxhdGlvbiBvbiBzb21lIGRpc3RyaWJzIGlzIGEgbmlnaHRtYXJlLiBCZWVuIHRoZXJlLiB0aGUgTGVzc0NTUyBwcm9jZXNzb3IgaXMgd3JpdHRlbiBpbiBKYXZhU2NyaXB0LiB0aGF0J3MgY3Jvc3MgcGxhdGZvcm0gYXMgaXQgb25seSBuZWVkcyBub2RlLmpzLiBJZiB5b3Ugd2FudCBTYXNzLCBwdWxsIGl0IHlvdXJzZWYuCi0gTWFya29KUy4gV2hpbGUgdGhlIGNvbW11bml0eSBiYWNraW5nIHRoaXMgZnJhbWV3b3JrIGlzbid0IG1hc3NpdmUsIGl0IGlzIHByb2R1Y3Rpb24gcmVhZHkuIE90aGVyIHRlbXBsYXRpbmcgc29sdXRpb25zIG9uIG5vZGUuanMgZG9uJ3Qgc3VwcG9ydCBzdHJlYW1pbmcsIGFuZCB1c3VhbGx5IGFkcHB0IHNwZWNpZmljIHN5bnRheCB0byBnZXQgZmFtaWxpYXIgd2l0aC4gTWFya28ncyBzeW5zdGF4IGZvbGxvdyBKUywgYW5kIGV2ZW4gc3VwcG9ydCBpbmxpbmUgSmF2YVNjcmlwdC4KLSBPcGVuQVBJIGlzIHRoZSBtb3N0IGV2b2x2ZWQgc3RhbmRhcmQuIEFuZCwgbGV0J3MgZ2V0IHNlcmlvdXMgYWJvdXQgZG9jLCBBUElzIG5lZWQgZG9jdW1lbnRhdGlvbiwgaWRlYWxseSBnZW5lcmF0ZWQgZnJvbSBzb3VyY2UuIFN3YWdnZXJVSSBhbmQgUmVkb2MgYXJlIGJlYXV0aWZ1bCBkb2MgdGVtcGxhdGVzCi0gTGludGluZy4gR2V0IGEgbGlmZS4gSnVzdCBmb2xsb3cgc29tZSBzdGFuZGFyZCBhbmQgZG9uJ3Qgd2FzdGUgdGltZSBhcmd1aW5nLiBJZiB5b3UgZG9uJ3QgbGlrZSB0aGUgc3RhbmRhcmQgZm9sbG93ZWQgaW4gdGhpcyBwcm9qZWN0LCBqc3V0IGNoYW5nZSB0aGUgbGluaXRpbmcgYW5kIHJ1biAtLWZpeC4KLSBUZXN0aW5nLiBJIGhhdmUgdG8gYWRtaXQgSSBkb24ndCBrbm93IGVub3VnaCBhYm91dCBmcm9udCBlbmQgdGVzdGluZyB0byBkZWZlbmQgd2hhdCBJIGRpZCBoZXJlLiBNeSB2aWV3IGlzLCB0ZXN0aW5nIGlzIHZpdGFsLCBidXQgY2FuIGJlIHZlcnkgZXhwZW5zaXZlIHdoZW4gYm9vdHN0cmFpbmcgYW5kIGFzc2VydGluZyB0aGUgc3VyZmFjZS9VSSBvZiBhcHBsaWNhdGlvbnMuIEZyaWdpbGUgc2xvdyB0ZXN0cyBkb2Vzbid0IGNvbnRyaWJ1dGUgdG8gdGRkZC4gU28gSSBmYXZvdXIgdW5pdCB0ZXN0IGNvdmVyaW5nIGJ1c2luZXNzIGxvZ2ljLiBJZiB5b3UgbmVlZCB0byB0ZXN0IHRoZSBkb20sIGdvIGFoZWFkLgotIHBtMi4gVGhlIGxpY2Vuc2UgaXMgYSBiaXQgb2JzY3VyZSwgYnV0IGFmYWlrIGlmIG5vIG1vZGlmaWNhdGlvbiBpcyBtYWRlIHRvIGl0cyBzb3VyY2UgdGhlbiBpdCdzIGZpbmUuIEl0IGlzIHN1cGVyaW9yIHRvIGBmb3JldmVyYCBhbmQgb3RoZXJzLiBKdXN0IHNlZSBmb3IgeW91cnNlbGYuCgojIyBQcmVyZXF1aXNpdGVzCgotIE5vZGUuanMgKHYxMCspCi0gTW9uZ29EQgoKIyMgVGVjaAoKLSBTZXJ2ZXIgZnJhbWV3b3JrIHdpdGggW0V4cHJlc3NdKGh0dHBzOi8vZXhwcmVzc2pzLmNvbS8pCi0gU2VydmVyIHNpZGUgdGVtcGxhdGluZyBhbmQgc3RyZWFtaW5nIHJlbmRlcmluZyB3aXRoIFtNYXJrb10oaHR0cHM6Ly9tYXJrb2pzLmNvbS8pCi0gUm91dGUgc3RydWN0dXJpbmcgd2l0aCBbTHVtaWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9BbGV4LUxldmFjaGVyL0x1bWllKQotIExvY2FsIEF1dGhlbnRpY2F0aW9uIHdpdGggW1Bhc3Nwb3J0LmpzXShodHRwOi8vd3d3LnBhc3Nwb3J0anMub3JnLykKLSBTZWN1cml0eSB3aXRoIFtIZWxtZXRdKGh0dHBzOi8vaGVsbWV0anMuZ2l0aHViLmlvLykKLSBDU1MgZm91bmRhdGlvbiB3aXRoIFtCYXNzY3NzXShodHRwczovL2Jhc3Njc3MuY29tLykKLSBbTGVzc0NTU10oaHR0cDovL2xlc3Njc3Mub3JnLykgc3VwcG9ydAotIEZyb250IGVuZCBhc3NldCBidW5kbGluZyBhbmQgc2VydmluZyB3aXRoIFtMYXNzb10oaHR0cHM6Ly9naXRodWIuY29tL2xhc3NvLWpzL2xhc3NvKQotIEF1dG8gcmVjb21waWxlIGFuZCBicm93c2VyIGF1dG9yZWZyZXNoIHdpdGggW2Jyb3dzZXItcmVmcmVzaF0oaHR0cHM6Ly9naXRodWIuY29tL3BhdHJpY2stc3RlZWxlLWlkZW0vYnJvd3Nlci1yZWZyZXNoKQotIExpbnRpbmcgd2l0aCBbRVNMaW50XShodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludCkKLSBIVFRQIExvZ2dpbmcgd2l0aCBbTW9yZ2FuXShodHRwczovL2dpdGh1Yi5jb20vZXhwcmVzc2pzL21vcmdhbikKLSBBdXRvIGdlbmVyYXRlZCBbT3BlbiBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKSBhbmQgW1JlRG9jXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvYykvW1N3YWdnZXIgVUldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpKSBkb2N1bWVudGF0aW9uCi0gVW5pdCB0ZXN0IGNvbnRleHQgd2l0aCBbU3VwZXJUZXN0XShodHRwczovL2dpdGh1Yi5jb20vdmlzaW9ubWVkaWEvc3VwZXJ0ZXN0KSBhbmQgY2FzZXMgd2l0aCBbSmVzdF0oaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2plc3QpCi0gQ29udGludW91cyBpbnRlZ3JhdGlvbiB3aXRoIFtUcmF2aXMgQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS90cmF2aXMtY2kvdHJhdmlzLWNpKQotIFByb2R1Y3Rpb24gaW5zdGFuY2UgbWd0IHdpdGggW3BtMl0oaHR0cHM6Ly9naXRodWIuY29tL1VuaXRlY2gvcG0yKQotIERldm9wcyBkZXBsb3ltZW50IHdpdGggW0RvY2tlciBDb21wb3NlXShodHRwczovL2dpdGh1Yi5jb20vZG9ja2VyL2NvbXBvc2UpCgojIyBSb2FkbWFwCgotIFt4XSBFeHByZXNzIGFuZCBzZXJ2ZXIgc2lkZSBUZW1wbGF0aW5nL1JlbmRlcmluZwotIFt4XSBNb25nb29zZQotIFt4XSBzdXBlcnRlc3QgYW5kIEplc3QKLSBbeF0gTGludGluZwotIFt4XSBMaXZlIGJyb3dzZXIgcmVmcmVzaCBvbiBqcy9jc3MgYW5kIHRlbXBsYXRlIGNoYW5nZXMKLSBbIF0gU3RhbmQgdXAgbXVsdGlwbGUgcm91dGVzCi0gW3hdIExpZ2h0d2VpZ2h0IENTUyBsaWJyYXJ5IGJ1bmRsZWQgaW4KLSBbeF0gTGVzc0NTUyBzdXBwb3J0Ci0gWyBdIFN0eWxlIHRoZW1lcwotIFt4XSBBUEkgd2l0aCBzdHJ1Y3R1cmVkIHJvdXRpbmcKLSBbeF0gQVBJIGRvYwotIFt4XSBMb2NhbCBhdXRoL2xvZ2luL3NpZ251cAotIFt4XSBBdXRvLWdlbmVyYXRlIE9QRU5BUEkgc3BlYyAod2l0aCBTd2FnZ2VyLXVpKSBhbmQgUmVkb2MKLSBbIF0gQ1NSRgotIFsgXSBpMThuCi0gWyBdIHNvY2tldC5pbwotIFt4XSBEb2NrZXIgaW1hZ2UKCiMgSE9XVE8KCiMjIEFkZCBhIGRlcGVuZGVuY3kKCkl0J3MgYWxsIG5wbSBtYW5hZ2VkLiBZb3UgY2FuIGFkZCBhIHNlcnZlciBvciBicm93c2VyIChmcm9udCBlbmQpIGRlcGVuZGVuY3kgYXMgYmVsb3cuCgojIyMgU2VydmVyCgpgYGBzaApucG0gaW5zdGFsbCAtLXNhdmUgbG9kYXNoCiMgb3IKbnBtIGluc3RhbGwgLS1zYXZlLWRldiB0eXBlc2NyaXB0CmBgYAoKYGBgamF2YXNjcmlwdApjb25zdCBsb2Rhc2ggPSByZXF1aXJlKCJsb2Rhc2giKTsKLy8gb3IKaW1wb3J0IGxvZGFzaCBmcm9tICJsb2Rhc2giOwpgYGAKCiMjIyBCcm93c2VyCgpgYGBzaApucG0gaW5zdGFsbCAtLXNhdmUgbG9kYXNoCmBgYAoKVGhlbiBlZGl0IGBicm93c2VyLmpzb25gCgpgYGBqc29uCnsKICAiZGVwZW5kZW5jaWVzIjogWwogICAgImJhc3Njc3MvY3NzL2Jhc3Njc3MuY3NzIiwKICAgICJiYXNzY3NzLWJ0bi9jc3MvYnRuLmNzcyIsCiAgICAicHVibGljL2Nzcy9zdHlsZXMubGVzcyIsCiAgICAianF1ZXJ5L2Rpc3QvanF1ZXJ5LnNsaW0ubWluLmpzIiwKICAgICJsb2Rhc2gvcGF0aC90by9sb2Rhc2guanMiCiAgXQp9CmBgYAoKIyMgRG9ja2VyCgpZb3UgY2FuIGFsc28gdXNlIGRvY2tlciBmb3IgZGV2ZWxvcG1lbnQuIE1ha2Ugc3VyZSB5b3UgcnVuIG5wbSBpbnN0YWxsIG9uIHlvdXIgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgZm9yIGxpbnRpbmcgYW5kIGV2ZXJ5dGhpbmcgdG8gd29yayBmaW5lLgoKYGBgc2gKbnBtIGkKY3AgLmVudi5leGFtcGxlIC5lbnYKYGBgCgpTdGFydCB0aGUgc2VydmljZXMKCmBgYHNoCmRvY2tlci1jb21wb3NlIHVwIC1kCmBgYAoKVmlldyB0aGUgbG9ncwoKYGBgc2gKZG9ja2VyLWNvbXBvc2UgbG9ncyAtZgpgYGAKCkluIGNhc2UgeW91IGluc3RhbGwgYSBucG0gbW9kdWxlIHdoaWxlIGRldmVsb3BpbmcsIGl0IHNob3VsZCBhbHNvIGJlIGluc3RhbGxlZCB3aXRoaW4gZG9ja2VyIGNvbnRhaW5lciwgdG8gZG8gdGhpcyBmaXJzdCBpbnN0YWxsIHRoZSBtb2R1bGUgeW91IHdhbnQgd2l0aCBzaW1wbGUgYG5wbSBpIG1vZHVsZSBuYW1lYCwgdGhlbiBydW4gaXQgd2l0aGluIGRvY2tlciBjb250YWluZXIKCmBgYHNoCmRvY2tlci1jb21wb3NlIGV4ZWMgbm9kZSBucG0gaQpgYGAKCklmIHlvdSBtYWtlIGFueSBjaGFuZ2VzIHRvIGEgcHJvamVjdCBmaWxlLCBicm93c2VyLXJlZnJlc2ggc2hvdWxkIGF1dG9tYXRpY2FsbHkgcGljayB1cCBhbmQgcmVzdGFydCB3aXRoaW4gZG9ja2VyICh5b3UgY2FuIHNlZSB0aGlzIGluIHRoZSBsb2dzKQoKVG8gcnVuIHRlc3RzCgpgYGBzaApkb2NrZXItY29tcG9zZSBleGVjIC1lIE1PTkdPREJfVVJMPW1vbmdvZGI6Ly9tb25nbzoyNzAxNy9ub29ianNfdGVzdCBub2RlIG5wbSB0ZXN0CmBgYAoKTm90ZTogRGlmZmVyZW5jZSBiZXR3ZWVuIGV4ZWMgYW5kIHJ1biwgZXhlYyBleGVjdXRlcyB0aGUgY29tbWFuZCB3aXRoaW4gdGhlIHJ1bm5pbmcgY29udGFpbmVyIGFuZCBydW4gd2lsbCBzcGluIHVwIGEgbmV3IGNvbnRhaW5lciB0byBydW4gdGhhdCBjb21tYW5kLiBTbyBpZiB5b3Ugb25seSB3YW50IHRvIHJ1biB0aGUgdGVzdHMgd2l0aG91dCBkb2NrZXItY29tcG9zZSB1cCwgeW91IG1heSBydW4gYGRvY2tlci1jb21wb3NlIHJ1biAtZSBNT05HT0RCX1VSTD1tb25nb2RiOi8vbW9uZ286MjcwMTcvbXlfYXBwX3Rlc3Qgbm9kZSBucG0gdGVzdGAKCiMjIExpY2Vuc2UKCk1JVAo= readmeEtag: '"dc06e87d81da1770f2c0ba8890f457c7a385ea04"' readmeLastModified: Wed, 17 Feb 2021 12:08:10 GMT repositoryId: 229742217 description: >- Hirako Starter Kit - Node.js server with Express, Marko, Mongoose, auto generated API doc created: '2019-12-23T11:49:50Z' updated: '2025-06-29T14:34:14Z' language: Marko archived: false stars: 7 watchers: 1 forks: 1 owner: hirako2000 logo: https://avatars.githubusercontent.com/u/1500712?v=4 license: MIT repoEtag: '"4dcebee413f0dc1bf091c1d1543cd3a256aef8f783ae72da3872ae5ef03281e0"' repoLastModified: Sun, 29 Jun 2025 14:34:14 GMT foundInMaster: true category: - Server - Server Implementations id: 53483f9bdb3947465e28a8eed1aeab92 - source: openapi3 tags repository: https://github.com/jayvynl/goctl-openapi v3: true id: cd58ead0537042867ae2097f082399d6 repositoryMetadata: base64Readme: >- Z29jdGwtb3BlbmFwaQo9PT0KClRoaXMgcHJvamVjdCBpcyBhIHBsdWdpbiBmb3IgW2dvY3RsXShodHRwczovL2dpdGh1Yi5jb20vemVyb21pY3JvL2dvLXplcm8vdHJlZS9tYXN0ZXIvdG9vbHMvZ29jdGwpLiBJdCdzIGFibGUgdG8gZ2VuZXJhdGUgW29wZW5hcGkgc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIDNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjAuMy5tZCkgZmlsZSBmcm9tIFtnby1jdGwgYXBpXShodHRwczovL2dvLXplcm8uZGV2L2VuL2RvY3MvdHV0b3JpYWxzKSBmaWxlLgoKCiMjIyBGZWF0dXJlcwoKLSBnZW5lcmF0ZSBjb3JyZWN0IHNjaGVtYSBmb3IgYW55IGxldmVsIG9mIGVtYmVkZGVkIHN0cnVjdHVyZSB0eXBlLgotIGdlbmVyYXRlIGNvcnJlY3Qgc2NoZW1hIGZvciBjb21wbGljYXRlZCB0eXBlIGRlZmluaXRpb24gbGlrZSBgbWFwW3N0cmluZ11bXW1hcFtpbnRdW10qQXV0aG9yYC4KLSBwYXJzZSBwYXJhbWV0ZXIgY29uc3RyYWludHMgZnJvbSBbdmFsaWRhdGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1wbGF5Z3JvdW5kL3ZhbGlkYXRvcikgdGFnLgoKCiMjIyBJbnN0YWxsCgpUaGlzIHBsdWdpbidzIHZlcnNpb24gYW5kIGdvY3RsJ3MgdmVyc2lvbiBzaG91bGQgaGF2ZSB0aGUgc2FtZSBtYWpvciBhbmQgbWlub3IgdmVyc2lvbiwgaXQncyByZWNvbW1lbmRlZCB0byBpbnN0YWxsIHRoZSBtYXRjaGluZyB2ZXJzaW9uLiBJZiB2ZXJzaW9ucyBkb2Vzbid0IG1hdGNoLCBpdCBtYXkgbm90IHdvcmsgcHJvcGVybHkuCgpGb3IgZXhhbXBsZSwgaWYgeW91IHVzZSBnb2N0bCB2MS42LjMsIHRoZW4geW91IHNob3VsZCBpbnN0YWxsIHRoaXMgcGx1Z2luIHdpdGg6CgpgYGBzaGVsbApnbyBpbnN0YWxsIGdpdGh1Yi5jb20vamF5dnlubC9nb2N0bC1vcGVuYXBpQHYxLjYKYGBgCgojIyMgVXNhZ2UKCkhlbHAgbWVzc2FnZXMuCgpgYGBiYXNoClVzYWdlIGdvY3RsLW9wZW5hcGk6CiAgLWZpbGVuYW1lIHN0cmluZwogICAgICAgIG9wZW5hcGkgZmlsZSBuYW1lLCBkZWZhdWx0ICJvcGVuYXBpLmpzb24iLCAiLSIgd2lsbCBvdXRwdXQgdG8gc3Rkb3V0LgogIC1mb3JtYXQgc3RyaW5nCiAgICAgICAgc2VyaWFsaXphdGlvbiBmb3JtYXQsICJqc29uIiBvciAieWFtbCIsIGRlZmF1bHQgImpzb24iLgogIC1wcmV0dHkKICAgICAgICBwcmV0dHkgcHJpbnQgb2YganNvbi4KICAtdmVyc2lvbgogICAgICAgIHNob3cgdmVyc2lvbiBhbmQgZXhpdC4KYGBgCgpVc2FnZSBleGFtcGxlLgoKYGBgc2hlbGwKZ29jdGwgYXBpIHBsdWdpbiAtcGx1Z2luIGdvY3RsLW9wZW5hcGkgLWFwaSBleGFtcGxlLmFwaSAtZGlyIGV4YW1wbGUKYGBgCgpUYWtlIHRoZSBhcGkgZmlsZSBmcm9tIFtleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vamF5dnlubC9nb2N0bC1vcGVuYXBpL2Jsb2IvbWFpbi9leGFtcGxlL2V4YW1wbGUuYXBpKSwgW3RoZSBnZW5lcmF0ZWQgb3BlbmFwaSBmaWxlXShodHRwczovL2dpdGh1Yi5jb20vamF5dnlubC9nb2N0bC1vcGVuYXBpL2Jsb2IvbWFpbi9leGFtcGxlL29wZW5hcGkuanNvbikgY2FuIGJlIHZpc3VhbGl6ZWQgYnkgW3N3YWdnZXIgZWRpdG9yXShodHRwczovL2VkaXRvci5zd2FnZ2VyLmlvLz91cmw9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2pheXZ5bmwvZ29jdGwtb3BlbmFwaS9tYWluL2V4YW1wbGUvb3BlbmFwaS5qc29uKS4K readmeEtag: '"adfc8248075e6dc3012076c4198e269fc8836157"' readmeLastModified: Thu, 28 Mar 2024 14:49:36 GMT repositoryId: 776884350 description: >- OpenAPI3 generator for [goctl](https://github.com/zeromicro/go-zero/tree/master/tools/goctl) created: '2024-03-24T17:56:45Z' updated: '2026-02-02T02:38:51Z' language: Go archived: false stars: 9 watchers: 1 forks: 2 owner: jayvynl logo: https://avatars.githubusercontent.com/u/34599950?v=4 license: MIT repoEtag: '"8b1373169f0ee483dfcd4ccd526577d6f5ac8c10538f5bd27ad2c09d9d8684a1"' repoLastModified: Mon, 02 Feb 2026 02:38:51 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/endava/endava-hl7fhir-openapi v3: true repositoryMetadata: base64Readme: >- IVtFbmRhdmEgTG9nb10ocmVzL2VuZGF2YV9sb2dvXzMyOXgxMjguanBnKQoKCiMgRW5kYXZhIEhMNyBGSElSIE9wZW5BUEkgRGVtbwpNYXRqYXogQnJhdmMsIFNlbmlvciBEZXZlbG9wZXIKCgoKIyBJbnRyb2R1Y3Rpb24KClRoaXMgcmVwbyBjb250YWlucyBkZW1vbnN0cmF0aW9uIGNvZGUgdG8gaWxsdXN0cmF0ZSB0aGUgdXNlIG9mIHRoZSBGSUhSIHN0YW5kYXJkIGZvciBoZWFsdGhjYXJlIGRhdGEsIGRldmVsb3BlZCBieSB0aGUgSEw3IG9yZ2FuaXNhdGlvbi4gIFRoZSBkZW1vbnN0cmF0aW9uIHNob3dzIGhvdyB0byBidWlsZCBhbiBPcGVuQVBJIHRvIEZISVIgZGF0YSB1c2luZyAuTkVULiAgVGhlIGRlbW9uc3RyYXRpb24gYWNjb21wYW5pZXMgYSBzZXJpZXMgb2YgYmxvZyBwb3N0cyBvbiB0aGUgW0VuZGF2YSBFbmdpbmVlcmluZyBCbG9nXShodHRwczovL3d3dy5lbmRhdmEuY29tL2VuL2Jsb2cvRW5naW5lZXJpbmcpIGJ5IE1hdGpheiwgZW50aXRsZWQgIkNyZWF0aW5nIEVIUiB0byBITDcgRkhJUiBJbnRlZ3JhdGlvbiAtIFRoZSBTb2Z0d2FyZSBEZXZlbG9wZXIncyBHdWlkZSIuCgpUYWJsZSBvZiBDb250ZW50cwo9PT09PT09PT09PT09PT09PQoKICAgKiBbT3ZlcnZpZXcgb2YgdGhlIFByb2plY3RdKCNvdmVydmlldy1vZi10aGUtcHJvamVjdCkKICAgKiBbV2hhdCBpcyBGSElSP10oI3doYXQtaXMtZmhpcikKICAgICAqIFtXaHkgRkhJUj9dKCN3aHktZmhpcikKICAgICAqIFtTdW1tYXJ5XSgjc3VtbWFyaXNpbmctZmhpcikKICAgKiBbVXNpbmcgdGhlIERlbW9uc3RyYXRpb24gQ29kZV0oI3VzaW5nLXRoZS1kZW1vbnN0cmF0aW9uLWNvZGUpCgojIE92ZXJ2aWV3IG9mIHRoZSBQcm9qZWN0CgohW0hMNyBMb2dvXShyZXMvaGw3LWZoaXItMzQweDEzMi5wbmcpCgpXaGVuIGFkb3B0aW5nIEZISVIsIGEgY29tbW9uIHNjZW5hcmlvIGlzIG5lZWRpbmcgdG8gY29udmVydCB5b3VyIGV4aXN0aW5nIGRhdGEgaW50byB0aGUgRkhJUiBtb2RlbC4gRm9yIHRoaXMgZGVtbywgd2Ugd2lsbCBiZSBidWlsZGluZyBhIE9wZW5BUEkgd2hpY2ggbWFwcyBjdXN0b20gRUhScyBpbnRvIEZISVIgUGF0aWVudCBhbmQgT2JzZXJ2YXRpb24gcmVzb3VyY2VzLiBPdGhlciByZXNvdXJjZXMgd2VyZSBub3QgaW1wbGVtZW50ZWQgKHlldCkuCkZvciB0aGlzIHB1cnBvc2Ugd2Ugd2lsbCB1c2UgdGhlIFsuTkVUIDVdKGh0dHBzOi8vZG90bmV0Lm1pY3Jvc29mdC5jb20vZG93bmxvYWQvZG90bmV0LzUuMCksICBbRmlyZWx5IC5ORVQgU0RLXShodHRwczovL2ZpcmUubHkvcHJvZHVjdHMvZmlyZWx5LW5ldC1zZGsvKSBhbmQgcHVibGljIEZISVIgc2VydmVyIFtVSE5fSEFQSSBTZXJ2ZXJdKGh0dHA6Ly9oYXBpLmZoaXIub3JnKSAoUjQpIHdoaWNoIGlzIHJlZ3VsYXJseSBwdXJnZWQgYW5kIHJlbG9hZGVkIHdpdGggZml4ZWQgdGVzdCBkYXRhLgoKICAgIAojIFdoYXQgaXMgRkhJUj8KIVtdKHJlcy9oYXBpLWZoaXIucG5nKQoKCioqRkhJUioqICgqKkYqKmFzdCAqKkgqKmVhbHRoY2FyZSAqKkkqKm50ZXJvcGVyYWJpbGl0eSAqKlIqKmVzb3VyY2VzKSBpcyBhIG5ldyBhbmQgZW1lcmdpbmcgc3RhbmRhcmQgYmVpbmcgZGV2ZWxvcGVkIHVuZGVyIHRoZSBhdXNwaWNlcyBvZiB0aGUgSGVhbHRoIExldmVsIFNldmVuIChITDcpIG9yZ2FuaXphdGlvbi4gUHJvbm91bmNlZCBhcyAnRmlyZSwnIGl0IHdhcyBpbml0aWFsbHkgZGV2ZWxvcGVkIGJ5IEdyYWhhbSBHcmlldmUsIHdobyBpbnNpc3RlZCBGSElSIGJlICoqb3BlbiBzb3VyY2VkKiouIEF0IGl0cyBjb3JlLCBGSElSIGlzIGludGVuZGVkIHRvIGJlIHRoZSBuZXh0IGdlbmVyYXRpb24gb2YgaGVhbHRoY2FyZSBpbnRlcm9wZXJhYmlsaXR5LiBJdCB0cmllcyB0byBjb21iaW5lIHRoZSBiZXN0IGZlYXR1cmVzIG9mIEhMNyBWZXJzaW9uIDIgYW5kIFZlcnNpb24gMywgaW4gd2hpY2ggR3JpZXZlIHdhcyBzaWduaWZpY2FudGx5IGludm9sdmVkLgoKIyMgV2h5IEZISVI/ClRoZSBjdXJyZW50IHByZWRvbWluYW50IG1ldGhvZCBmb3IgZXhjaGFuZ2luZyBjbGluaWNhbCBkYXRhIGJldHdlZW4gaGVhbHRoY2FyZSBhcHBsaWNhdGlvbnMgaXMga25vd24gYXMgSEw3djIgYW5kIGl0IHByZXNlbnRzIHNlcmlvdXMgY2hhbGxlbmdlcy4gT3JnYW5pemF0aW9ucyB0b2RheSBzcGVuZCBodWdlIGFtb3VudCBvZiBtb25leSBwZXIgSEw3djIgaW50ZXJmYWNlLCBub3QgdG8gbWVudGlvbiBsaWNlbnNpbmcgZmVlcyB0byBpbXBsZW1lbnQgYW5kIHVzZSBpbnRlZ3JhdGlvbiBlbmdpbmVzLiBXaHkgdGhlbiB3ZSBuZWVkIGFuIGludGVncmF0aW9uIGVuZ2luZT8gVGhhdCdzIHdoeToKCioqSEw3djIgaXMgYSBzdGFuZGFyZCBidXQgaXQgaXMgTk9UIGFuIG9wZW4gc3RhbmRhcmQqKi4gWW91IG5lZWQgdG8gYmUgYSBtZW1iZXIgb2YgdGhlIEhMNyBvcmdhbml6YXRpb24gYW5kIHBheSBmZWVzIGJlZm9yZSB1c2luZyB0aGUgY29udGVudCBpbiBhbnkgY29tbWVyY2lhbCBmYXNoaW9uLCBhbmQgSEw3djIgaXMgYW4gYW5jaWVudCBzdGFuZGFyZC4gSXQgd2FzIGRldmVsb3BlZCBpbiB0aGUgbGF0ZSA4MHMgd2hlbiBhIGxvdCBvZiB0aGluZ3Mgd2UgdGFrZSBmb3IgZ3JhbnRlZCBub3cgZGlkbid0IGV4aXN0IC0gbW9iaWxlIG51bWJlcnMsIGVtYWlscywgQVBJcywgQ2xvdWQsIGV0Yy4KCldoYXQgcmVzdWx0ZWQgd2FzIGEgbG90IG9mICJJJ2xsIGp1c3QgZG8gaXQgbXkgd2F5LCIgY2F1c2luZyBhbiBleHBsb3Npb24gb2YgSEw3djIgdmFyaWFudHMuIFdpdGggb3RoZXIgd29yZHM6ICJXZWxjb21lIHRvIHRoZSBqdW5nbGUhIgoKR2l2ZW4gdGhlIGFib3ZlLCAqKkZISVIqKiBkb2VzIG9mZmVyIG1hbnkgaW1wcm92ZW1lbnRzIG92ZXIgZXhpc3Rpbmcgc3RhbmRhcmRzOgoKLSBJdCdzIG9wZW4gc291cmNlOiBUaGlzIGlzIGEgYmlnIGRlYWwgYW5kIHRoZSBmaXJzdCBlZmZvcnQgaW4gbWFraW5nIGhlYWx0aGNhcmUgaW50ZWdyYXRpb24gbW9yZSB0cmFuc3BhcmVudCBhbmQgYWNjZXNzaWJsZS4gUHV0dGluZyBpdCBvdXQgaW4gdGhlIG9wZW4gaGFzIGNyZWF0ZWQgYSBzaWduaWZpY2FudCBjb21tdW5pdHkgaW5jbHVkaW5nIGRldmVsb3BlcnMsIHZlbmRvcnMgYW5kIGVudGVycHJpc2VzLgotIFJFU1RmdWw6IFJFU1QtYmFzZWQgZGVzaWduIGJyaW5ncyBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBiZW5lZml0LCBuYW1lbHkgdGhhdCBhbiBBUEkgdGhhdCBhZGhlcmVzIHRvIHRoZSBwcmluY2lwbGVzIG9mIFJFU1QgZG9lcyBub3QgcmVxdWlyZSB0aGUgY2xpZW50IHRvIGtub3cgYW55dGhpbmcgYWJvdXQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgQVBJLiBSYXRoZXIsIHRoZSBzZXJ2ZXIgbmVlZHMgdG8gcHJvdmlkZSB3aGF0ZXZlciBpbmZvcm1hdGlvbiB0aGUgY2xpZW50IG5lZWRzIHRvIGludGVyYWN0IHdpdGggdGhlIHNlcnZpY2UuCi0gRXh0ZW5zaWJsZTogRXh0ZW5zaWJpbGl0eSB1bmRlciB0aGUgUkVTVGZ1bCBjb250ZXh0IGVuc3VyZXMgdGhhdCBhZGRpdGlvbnMgY2FuIGJlIGVhc2lseSB0YWNrZWQgb24gdG8gY292ZXIgc3BlY2lmaWMgdXNlIGNhc2VzIHdpdGhvdXQgaW1wYWN0aW5nIHRoZSBjb3JlIG1vZGVscy4KLSBDb21wb3NhYmxlOiBDb21wb3NhYmlsaXR5IGVuc3VyZXMgdGhhdCBhbG1vc3QgYW55IHJlcXVlc3QgY2FuIGJlIGNvYmJsZWQgdG9nZXRoZXIgdXNpbmcgY29yZSBtb2RlbHMgb3IgcmVzb3VyY2VzIGFuZCBhc3NvY2lhdGVkIGV4dGVuc2lvbnMuCi0gR29vZCBkb2N1bWVudGF0aW9uOiBVbmlxdWVseSBkcml2ZW4gYnkgdGhlIFJFU1RmdWwgQVBJIGFwcHJvYWNoLCB3aGljaCBlbmZvcmNlcyBnb29kIGRvY3VtZW50YXRpb24gYXMgYSBieXByb2R1Y3QuCi0gU3VwcG9ydCBmb3IgbW9kZXJuIHdlYiBzdGFuZGFyZHM6IFhNTCwgSlNPTiwgSFRUUCwgQXRvbSwgT0F1dGgsIFJFU1QgLSB0aGVzZSBhcmUgdGhlIHVuZGVybHlpbmcgdGVjaG5vbG9naWVzIHRoYXQgRkhJUiBsZXZlcmFnZXMuIFRoZXNlIGFyZSBiYXR0bGUgdGVzdGVkIGFuZCBoYXZlIGJlZW4gcHJvdmVuIGF0IHNjYWxlIGFuZCB1bmRlciBzaWduaWZpY2FudCBzZWN1cml0eSByZXF1aXJlbWVudHMuCi0gSHVtYW4gcmVhZGFiaWxpdHk6IEhMNyAzLjAgaGFkIGEgY29uY2VwdCBvZiBhIGh1bWFuIHJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50IG9yIGRhdGEgYmVpbmcgc2hhcmVkIHRvIGVuc3VyZSB0aGF0IGRldmVsb3BlcnMgb3IgY2xpbmljaWFucyBjb3VsZCBzdGlsbCByZWFkIHRoZSBzb3VyY2UgZGF0YSB0byBlbGltaW5hdGUgYW55IHBvdGVudGlhbCBvZiBtaXNjb25maWd1cmF0aW9uIG9yIGNvZGluZyBlcnJvcnMuIEZISVIgYm9ycm93cyB0aGlzIGNvbmNlcHQgYXMgd2VsbC4gRXZlcnkgcmVzb3VyY2UgY2FycmllcyBhIGh1bWFuLXJlYWRhYmxlIHRleHQgcmVwcmVzZW50YXRpb24gdXNpbmcgaHRtbCBhcyBhIGZhbGxiYWNrIGRpc3BsYXkgb3B0aW9uLiBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgZm9yIGNvbXBsZXggY2xpbmljYWwgaW5mb3JtYXRpb24gd2hlcmUgbWFueSBzeXN0ZW1zIHRha2UgYSBzaW1wbGUgdGV4dHVhbCBvciBkb2N1bWVudC1iYXNlZCBhcHByb2FjaC4KCiMjIFN1bW1hcmlzaW5nIEZISVIKRkhJUiBpcyBzdGlsbCBhIHdvcmsgaW4gcHJvZ3Jlc3MsIGJ1dCBpdCBpcyBtYXR1cmluZyBxdWlja2x5LiBJdCBpcyBub3QgYW4gZXZlbnQtYmFzZWQgKHRyaWdnZXJlZCkgcHJvdG9jb2wuIEluIGNvbnRyYXN0LCBITDd2MiBwdXNoZXMgZGF0YSBiYXNlZCBvbiBzb21lIGV2ZW50IG9yIGFjdGl2aXR5IGluIHRoZSBzb3VyY2Ugc3lzdGVtLiBJZiBzb21lb25lIHdhcyBhZG1pdHRlZCB0byB0aGUgaG9zcGl0YWwsIHRoZSBzb3VyY2Ugc3lzdGVtIGNvdWxkIGJlIGNvbmZpZ3VyZWQgdG8gcHVzaCBhbiBBRFQgbWVzc2FnZSBiYXNlZCBvbiB0aGUgYWRtaXNzaW9uLiBGSElSIGlzIGN1cnJlbnRseSBzdGlsbCBhIHJlcXVlc3QgYmFzZWQgcHJvdG9jb2wuCgpGSElSIGhhcyBjZW1lbnRlZCBpdHMgcGxhY2UgYXMgdGhlIG5leHQgaW50ZXJvcGVyYWJpbGl0eSBzdGFuZGFyZCBmb3IgY2xpbmljYWwgZGF0YSBleGNoYW5nZS4gQW55IHN0YW5kYXJkIGhhcyBnYXBzLCBidXQgdGhleSBhcmUgbmVpdGhlciB1bmV4cGVjdGVkIG5vciBpbnN1cm1vdW50YWJsZS4gVGhlIFN0YW5kYXJkLCB0aGUgb2ZmaWNpYWwgYmxvZyBvZiB0aGUgSEw3IG9yZ2FuaXphdGlvbiwgaGFzIGZyZXF1ZW50IHVwZGF0ZXMgYW5kIG5ld3MgYXMgdGhlIEZISVIgc3RhbmRhcmQgZXZvbHZlcy4gIAoKRkhJUiBSNCwgcmVsZWFzZWQgaW4gMjAxOSwgaW5jbHVkZXMgYSBub3JtYXRpdmUgYmFzZSB3aXRoIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3aGljaCBhaW1zIHRvIGdpdmUgZGV2ZWxvcGVycyBhbmQgb3JnYW5pemF0aW9ucyBjb25maWRlbmNlIHRoYXQgRkhJUiBpbXBsZW1lbnRhdGlvbnMgdGhleSB1bmRlcnRha2Ugd2lsbCBiZSBzdXBwb3J0ZWQgZm9yIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUgYW5kIGFsbG93IGRldmVsb3BlcnMgdG8gaW1wbGVtZW50IEZISVIgbW9yZSBjb25zaXN0ZW50bHkgYW5kIHVuaWZvcm1seS4gV2hpbGUgRkhJUiBSZWxlYXNlIDQgaXMgdGhlIGN1cnJlbnQgcHVibGlzaGVkIHZlcnNpb24sIGRldmVsb3BtZW50IG9uIFJlbGVhc2UgNSBpcyB1bmRlcndheSB3aXRoIHRoZSBob3BlIG9mIGdldHRpbmcgZXZlbiBjbG9zZXIgdG8gaW50ZXJvcGVyYWJpbGl0eS4KCiMgVXNpbmcgdGhlIERlbW9uc3RyYXRpb24gQ29kZQoKVGhlIGRlbW9uc3RyYXRpb24gY29kZSBpcyBhIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIHByb2plY3QsIHdoaWNoIHlvdSBjYW4gc2ltcGx5IG9wZW4gd2l0aCBWUyBhbmQgdXNlIGRpcmVjdGx5LgoKRW5qb3khCgojIyBQcmVyZXF1aXNpdGVzCi0gW1Zpc3VhbCBTdHVkaW9dKGh0dHBzOi8vd3d3LnZpc3VhbHN0dWRpby5jb20vdnMvY29tbXVuaXR5KSAyMDE5IDE2LjguMSBvciBncmVhdGVyIAotIFsuTkVUIDUueF0oaHR0cHM6Ly9kb3RuZXQubWljcm9zb2Z0LmNvbS9kb3dubG9hZC9kb3RuZXQvNS4wKQoKIyMgQVBJIGRvY3VtZW50YXRpb24KIVtdKHJlcy9hcGktZG9jcy5qcGcpCgojIyBTd2FnZ2VyIFVJCiFbXShyZXMvc3dhZ2dlci5qcGcpCgojIyBUYWdzLCB0ZWNobm9sb2dpZXMgYW5kIHNvdXJjZXMKLSBbU3dhZ2dlcl0oaHR0cHM6Ly9zd2FnZ2VyLmlvLykgLSBpbnRlcmFjdGl2ZSBBUEkgZG9jdW1lbnRhdGlvbgotIFtBUEktRG9jc10oaHR0cHM6Ly9hcGktZG9jcy5pby8pIC0gZnJpZW5kbHkgQVBJIGRvY3VtZW50YXRpb24KLSBbU2VyaWxvZ10oaHR0cHM6Ly9zZXJpbG9nLm5ldC8pIC0gZmxleGlibGUsIHN0cnVjdHVyZWQgbG9nZ2VyCi0gW0ZsdWVudFZhbGlkYXRpb25dKGh0dHBzOi8vZmx1ZW50dmFsaWRhdGlvbi5uZXQvKSAtIGEgcG9wdWxhciAuTkVUIGxpYnJhcnkgZm9yIGJ1aWxkaW5nIHN0cm9uZ2x5LXR5cGVkIHZhbGlkYXRpb24gcnVsZXMKLSBbRmlyZWx5IC5ORVQgU0RLXShodHRwczovL2ZpcmUubHkvcHJvZHVjdHMvZmlyZWx5LW5ldC1zZGsvKSAtIHRoZSBvZmZpY2lhbCBITDcgRkhJUiBTREsgaW4gLk5FVAoKIyMgRnVydGhlciBpbmZvcm1hdGlvbgotIFtFeHRyYSBkb2N1bWVudGF0aW9uIGZvciBGaGlyQ2xpZW50XShodHRwczovL2RvY3MuZmlyZS5seS9maXJlbHluZXRzZGsvY2xpZW50Lmh0bWwpICAKLSBbSEw3IEZISVIgUmVzdGZ1bCBBUEkgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly93d3cuaGw3Lm9yZy9maGlyL2h0dHAuaHRtbCkKLSBbRmlyZWx5IC5ORVQgU0RLIEZISVIgQ29tbXVuaXR5XShodHRwczovL2NoYXQuZmhpci5vcmcvI25hcnJvdy9zdHJlYW0vMTc5MTcxLWRvdG5ldCkKLSBbTGlzdCBvZiBGSElSIFRlc3Qgc2VydmVyc10oaHR0cHM6Ly9jb25mbHVlbmNlLmhsNy5vcmcvZGlzcGxheS9GSElSL1B1YmxpYytUZXN0K1NlcnZlcnMpCgojIyBDb250cmlidXRpbmcKUGxlYXNlIHJlZmVyIHRvIFtDT05UUklCVVRJTkcubWRdKENPTlRSSUJVVElORy5tZCkuCgojIyBUcmFkZW1hcmtzCkhMN8KuLCBGSElSwq4gYW5kIHRoZSBmbGFtZSBEZXNpZ24gbWFyayBhcmUgdGhlIHJlZ2lzdGVyZWQgdHJhZGVtYXJrcyBvZiBIZWFsdGggTGV2ZWwgU2V2ZW4gSW50ZXJuYXRpb25hbC4K readmeEtag: '"6bfcd4258a0feb2da1f5f09acbab6aaf9c3b5963"' readmeLastModified: Fri, 12 Jan 2024 09:57:46 GMT repositoryId: 375084335 description: >- This repo contains demonstration code to illustrate the use of the FIHR standard for healthcare data, developed by the HL7 organisation. created: '2021-06-08T16:59:18Z' updated: '2025-08-26T00:10:18Z' language: C# archived: false stars: 8 watchers: 1 forks: 4 owner: Endava logo: https://avatars.githubusercontent.com/u/19396140?v=4 license: Apache-2.0 repoEtag: '"2e6847dfc818fb8076df7fefb99e117ba54b70cbf1016091b19dacc9e6c86a3e"' repoLastModified: Tue, 26 Aug 2025 00:10:18 GMT foundInMaster: true category: Server Implementations id: 33de045bdbfe9b67453c38a60b903a2e - source: openapi3 tags repository: https://github.com/armsnyder/openapi-language-server v3: true id: 423ee8b0307b4ead6d192490008c9fbf repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIExhbmd1YWdlIFNlcnZlcgoKQW4gT3BlbkFQSSBsYW5ndWFnZSBzZXJ2ZXIgZm9yIFtMU1AgY29tcGF0aWJsZSBjb2RlCmVkaXRvcnMuXShodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbGFuZ3VhZ2Utc2VydmVyLXByb3RvY29sL2ltcGxlbWVudG9ycy90b29scy8pCgo+IDp3YXJuaW5nOiBUaGlzIGlzIGJldGEgc29mdHdhcmUuIE1hbnkgZmVhdHVyZXMgYXJlIHN0aWxsIG1pc3NpbmcuIFNlZQo+IFtGZWF0dXJlc10oaHR0cHM6Ly9naXRodWIuY29tL2FybXNueWRlci9vcGVuYXBpLWxhbmd1YWdlLXNlcnZlcj90YWI9cmVhZG1lLW92LWZpbGUjZmVhdHVyZXMpCj4gYmVsb3cuCgpbIVthc2NpaWNhc3RdKGh0dHBzOi8vYXNjaWluZW1hLm9yZy9hL3Y3ZXRaYjgwSGJZa0tCUVVhM2RWU2VuUHouc3ZnKV0oaHR0cHM6Ly9hc2NpaW5lbWEub3JnL2EvdjdldFpiODBIYllrS0JRVWEzZFZTZW5QeikKCiMjIEZlYXR1cmVzCgpJIGNyZWF0ZWQgdGhpcyBsYW5ndWFnZSBzZXJ2ZXIgYmVjYXVzZSBJIG1hbnVhbGx5IGVkaXQgT3BlbkFQSS9Td2FnZ2VyIGZpbGVzLAphbmQgSSBuZWVkZWQgYSBxdWljayB3YXkgdG8ganVtcCBiZXR3ZWVuIHNjaGVtYSBkZWZpbml0aW9ucyBhbmQgcmVmZXJlbmNlcy4KCkkgdXNlClt5YW1sLWxhbmd1YWdlLXNlcnZlcl0oaHR0cHM6Ly9naXRodWIuY29tL3JlZGhhdC1kZXZlbG9wZXIveWFtbC1sYW5ndWFnZS1zZXJ2ZXIpCmZvciB2YWxpZGF0aW9uIGFuZCBjb21wbGV0aW9uLCBzbyB0aGVzZSBmZWF0dXJlcyBhcmUgbm90IGEgcHJpb3JpdHkgZm9yIG1lCnJpZ2h0IG5vdy4KCiMjIyBMYW5ndWFnZSBGZWF0dXJlcwoKLSBbeF0gSnVtcCB0byBkZWZpbml0aW9uCi0gW3hdIEZpbmQgcmVmZXJlbmNlcwotIFsgXSBDb2RlIGNvbXBsZXRpb24KLSBbIF0gRGlhZ25vc3RpY3MKLSBbIF0gSG92ZXIKLSBbIF0gUmVuYW1lCi0gWyBdIERvY3VtZW50IHN5bWJvbHMKLSBbIF0gQ29kZSBhY3Rpb25zCgojIyMgT3RoZXIgRmVhdHVyZXMKCi0gW3hdIFlBTUwgZmlsZXR5cGUgc3VwcG9ydAotIFsgXSBKU09OIGZpbGV0eXBlIHN1cHBvcnQKLSBbIF0gVlNDb2RlIGV4dGVuc2lvbgoKIyMgSW5zdGFsbGF0aW9uCgojIyMgRnJvbSBHaXRIdWIgUmVsZWFzZXMgKFJlY29tbWVuZGVkKQoKRG93bmxvYWQgdGhlIGxhdGVzdCByZWxlYXNlIGZyb20gW0dpdEh1YiByZWxlYXNlc10oaHR0cHM6Ly9naXRodWIuY29tL2FybXNueWRlci9vcGVuYXBpLWxhbmd1YWdlLXNlcnZlci9yZWxlYXNlcykuCgojIyMgVXNpbmcgR28KCmBgYGJhc2gKZ28gaW5zdGFsbCBnaXRodWIuY29tL2FybXNueWRlci9vcGVuYXBpLWxhbmd1YWdlLXNlcnZlckBsYXRlc3QKYGBgCgojIyBVc2FnZQoKIyMjIE5lb3ZpbSBDb25maWd1cmF0aW9uIEV4YW1wbGUKCkFzc3VtaW5nIHlvdSBhcmUgdXNpbmcgTmVvdmltIGFuZCBoYXZlIHRoZSBpbnN0YWxsZWQgb3BlbmFwaS1sYW5ndWFnZS1zZXJ2ZXIKYmluYXJ5IGluIHlvdXIgUEFUSCwgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBMdWEgY29kZSBpbiB5b3VyIE5lb3ZpbQpjb25maWd1cmF0aW9uOgoKYGBgbHVhCiAgICB2aW0uYXBpLm52aW1fY3JlYXRlX2F1dG9jbWQoJ0ZpbGVUeXBlJywgewogICAgICBwYXR0ZXJuID0gJ3lhbWwnLAogICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uKCkKICAgICAgICB2aW0ubHNwLnN0YXJ0IHsKICAgICAgICAgIGNtZCA9IHsgJ29wZW5hcGktbGFuZ3VhZ2Utc2VydmVyJyB9LAogICAgICAgICAgZmlsZXR5cGVzID0geyAneWFtbCcgfSwKICAgICAgICAgIHJvb3RfZGlyID0gdmltLmZuLmdldGN3ZCgpLAogICAgICAgIH0KICAgICAgZW5kLAogICAgfSkKYGBgCgpUaGlzIGlzIGp1c3QgYSBiYXNpYyB3b3JraW5nIGV4YW1wbGUuIFlvdSB3aWxsIHByb2JhYmx5IHdhbnQgdG8gZnVydGhlcgpjdXN0b21pemUgdGhlIGNvbmZpZ3VyYXRpb24gdG8geW91ciBuZWVkcy4K readmeEtag: '"4c23fd434c0c1cae60ca0382f0b6ef35752c8f59"' readmeLastModified: Mon, 24 Jun 2024 05:06:03 GMT repositoryId: 818968969 description: OpenAPI language server for LSP compatible code editors created: '2024-06-23T11:56:13Z' updated: '2026-02-05T17:38:31Z' language: Go archived: false stars: 17 watchers: 2 forks: 0 owner: armsnyder logo: https://avatars.githubusercontent.com/u/9969202?v=4 license: MIT repoEtag: '"cc80095067da6c48fd99cabc95ce3397f6f5522ea08be7af080cf55b36d93dc2"' repoLastModified: Thu, 05 Feb 2026 17:38:31 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/phogolabs/stride v3: true repositoryMetadata: base64Readme: >- IyBzdHJpZGUKQSBjb2RlIGdlbmVyYXRvciBmb3IgT3BlbkFQSSB2My54IEJFVEEuCgoqKlRoZSB0b29sIGlzIGRlcHJhY3RlZC4gSSBhbSByZWNvbW1lbmRpbmcgdXNpbmcgR1JQQyArIFBMRVguKioKCgpbIVtEb2N1bWVudGF0aW9uXVtnb2RvYy1pbWddXVtnb2RvYy11cmxdClshW0xpY2Vuc2VdW2xpY2Vuc2UtaW1nXV1bbGljZW5zZS11cmxdClshW0J1aWxkIFN0YXR1c11bYWN0aW9uLWltZ11dW2FjdGlvbi11cmxdClshW0NvdmVyYWdlXVtjb2RlY292LWltZ11dW2NvZGVjb3YtdXJsXQpbIVtHbyBSZXBvcnQgQ2FyZF1bcmVwb3J0LWltZ11dW3JlcG9ydC11cmxdCgojIyBPdmVydmlldwoKU3RyaWRlIGlzIGEgY29tbWFuZCBsaW5lIHRvb2wgZm9yIHJhcGlkIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50IHdpdGggT3BlbkFQSSB2MwpzcGVjaWZpY2F0aW9uLgoKIyMgTW90aXZhdGlvbgoKVGhlcmUgYXJlIGEgbG90IG9mIHRvb2xzIGFyb3VuZCB0aGUgT3BlbkFQSSBpbml0aWF0aXZlLiBIb3dldmVyIG5laXRoZXIgb2YgdGhlbQpnaXZlcyBjb21wcmVoZW5zaXZlIHNvbHV0aW9uIGZvciByYXBpZCBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudC4gVGhlIGdvYWwgaXMKdG8gcHJvdmlkZSBhIHRvb2wgdGhhdCB5b3UgY2FuIHVzZSB0byBnZW5lcmF0ZSBwcm9kdWN0aW9uIHJlYWR5IHNlcnZlcgphcHBsaWNhdGlvbnMuCgpEb2Vzbid0IG1hdHRlciB3aGV0aGVyIHlvdSBhcmUgc3RhcnRpbmcgZnJvbSBqdXN0IGNvbmNlcHQsIHByb3RvdHlwZSBvcgpidWlsZGluZyB5b3VyIHYxIHByb2R1Y3QuIFRoZSB0b29sIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIGVkaXRpbmcgYW5kCnZpZXdpbmcgb2YgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLiBJdCBnZW5lcmF0ZXMgYSBwcm9kdWN0aW9uIHJlYWR5IHNjYWZmb2xkCnByb2plY3RzLiBBbHNvIGl0IGNhbiBzdGFydCBhIG1vY2sgc2VydmVyLiBTbyB5b3UgY2FuIHF1aWNrbHkgc3RhcnQgYnVpbGRpbmcKeW91ciBmcm9udC1lbmQgYXBwIHdpdGhvdXQgd2FpdGluZyBmb3IgeW91ciBhY3R1YWwgYmFjay1lbmQuCgpUaGFua3MgdG8gdGhlIGNvbnRyaWJ1dG9ycyBvZiB0aGUgZm9sbG93aW5nIHByb2plY3RzIHRoYXQgZW1wb3dlciBgc3RyaWRlYDoKLSBba2luLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpCi0gW3N3YWdnZXItZWRpdG9yXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1lZGl0b3IpCi0gW3N3YWdnZXItdWldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpKQoKIyMgSW50cm9kdWN0aW9uCgpJdCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIHN1YmNvbW1hbmRzOgoKYGBgYmFzaApOQU1FOgogICBzdHJpZGUgLSBPcGVuQVBJIHZpZXdlciwgZWRpdG9yLCBnZW5lcmF0b3IsIHZhbGlkYXRvciBhbmQgbW9ja2VyClVTQUdFOgogICBzdHJpZGUgW2dsb2JhbCBvcHRpb25zXQpDT01NQU5EUzoKICAgICBlZGl0ICAgICAgRWRpdCBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gaW4gdGhlIGJyb3dzZXIKICAgICB2aWV3ICAgICAgU2hvd3MgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGluIHRoZSBicm93c2VyCiAgICAgbW9jayAgICAgIFJ1bnMgYSBtb2NrIHNlcnZlciBmcm9tIGFuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbgogICAgIGdlbmVyYXRlICBHZW5lcmF0ZXMgYSBwcm9qZWN0IGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uCiAgICAgdmFsaWRhdGUgIFZhbGlkYXRlcyBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24KICAgICBoZWxwLCBoICAgU2hvd3MgYSBsaXN0IG9mIGNvbW1hbmRzIG9yIGhlbHAgZm9yIG9uZSBjb21tYW5kCgpPUFRJT05TOgogICAtLXZlcnNpb24sIC12ICBwcmludHMgdGhlIHZlcnNpb24KICAgLS1oZWxwLCAtaCAgICAgc2hvd3MgaGVscApgYGAKClJpZ2h0IG5vdyBgc3RyaWRlYCBzdXBwb3J0cyBvbmx5IGBnb2xhbmdgLiBUaGVyZSBhcmUgYSBmZXcgbGltaXRhdGlvbnMgdGhhdCB0aGUKZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBvcnQgZm9yIG5vdy4gVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgbm90IHN1cHBvcnRlZDoKCi0gSW5oZXJpdGFuY2UgYW5kIFBvbHltb3JwaGlzbQotIE9uZU9mLCBBbnlPZiwgQWxsT2YgYW5kIE5vdCAodGhlcmUgYXJlIHNvbWUgbGltaXRhdGlvbnMgZHVlIHRvIHRoZSBsYW5ndWFnZSBjb25zdHJhaW50cykKLSBMaW5rcwotIENhbGxiYWNrcwotIEF1dGhlbnRpY2F0aW9uCgpOb3RlIHRoYXQgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBgZ29sYW5nYCBnZW5lcmF0b3IgY29tcGlsZXMgYW5kIHJ1biBvdXQgb2YKdGhlIGJveC4gSG93ZXZlciwgdGhlIHBhY2thZ2UKW3Jlc3RpZnldKGh0dHBzOi8vZ2l0aHViLmNvbS9waG9nb2xhYnMvcmVzdGlmeSkgdGhhdCB3aWxsIHN1cHBvcnQgdGhlCmdlbmVyYXRlZCBjb2RlIGlzIHN0aWxsIGluIGRldmVsb3BtZW50IHBoYXNlLgoKIyMgUm9hZCBtYXAKCi0gW3hdIEdvbGFuZyBnZW5lcmF0b3IgKGluIHRlc3RpbmcgcGhhc2UpCi0gWyBdIEVuYWJsZSBhIG1vY2sgc2VydmVyIGZvciBnaXZlbiBPcGVuQVBJIHNwZWNpZmljYXRpb24KLSBbeF0gRG93bmxvYWQgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmcm9tIGRpZmZlcmVudCBzb3VyY2VzIChsb2NhbCwgczMsIGdpdCBhbmQgZXRjLikKLSBbeF0gU3VwcG9ydCBmb3IgRGljdGlvbmFyaWVzLCBIYXNoIE1hcHMgYW5kIEFzc29jaWF0aXZlIEFycmF5cyBpbiBHb2xhbmcKLSBbeF0gU3VwcG9ydCBmb3IgYGFwcGxpY2F0aW9uL3htbGAgYW5kIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgCi0gW3hdIEltcHJvdmUgdGhlIE9wZW5BUEkgdmFsaWRhdGlvbiByZXBvcnRzCi0gWyBdIEFsbG93IGltcGxlbWVudGF0aW9uIG9mIDNyZCBwYXJ0eSBnZW5lcmF0b3JzIGluIG90aGVyIGxhbmd1YWdlcyAodmlhIEdSUEMpCgojIyBJbnN0YWxsYXRpb24KClRoZXJlIGFyZSBhIGZldyB3YXlzIHRvIGluc3RhbGwgaXQ6CgojIyMjIEdpdEh1YgoKYGBgY29uc29sZQokIGdvIGdldCAtdSBnaXRodWIuY29tL3Bob2dvbGFicy9zdHJpZGUKJCBnbyBpbnN0YWxsIGdpdGh1Yi5jb20vcGhvZ29sYWJzL3N0cmlkZS9jbWQvc3RyaWRlCmBgYAoKIyMjIyBIb21lYnJldyAoZm9yIE1hYyBPUyBYKQoKYGBgY29uc29sZQokIGJyZXcgdGFwIHBob2dvbGFicy90YXAKJCBicmV3IGluc3RhbGwgc3RyaWRlCmBgYAoKIyMgQ29udHJpYnV0aW5nCgpXZSBhcmUgb3BlbiBmb3IgYW55IGNvbnRyaWJ1dGlvbnMuIEp1c3QgZm9yayB0aGUKW3Byb2plY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9waG9nb2xhYnMvc3RyaWRlKS4KCltyZXBvcnQtaW1nXTogaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vcGhvZ29sYWJzL3N0cmlkZQpbcmVwb3J0LXVybF06IGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9waG9nb2xhYnMvc3RyaWRlCltsb2dvLWF1dGhvci11cmxdOiBodHRwczovL3d3dy5mcmVlcGlrLmNvbS9mcmVlLXZlY3Rvci9hYnN0cmFjdC1jcm9zcy1sb2dvLXRlbXBsYXRlXzExODU5MTkuaHRtCltsb2dvLWxpY2Vuc2VdOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS8zLjAvCltjb2RlY292LXVybF06IGh0dHBzOi8vY29kZWNvdi5pby9naC9waG9nb2xhYnMvc3RyaWRlCltjb2RlY292LWltZ106IGh0dHBzOi8vY29kZWNvdi5pby9naC9waG9nb2xhYnMvc3RyaWRlL2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnClthY3Rpb24taW1nXTogaHR0cHM6Ly9naXRodWIuY29tL3Bob2dvbGFicy9zdHJpZGUvd29ya2Zsb3dzL21haW4vYmFkZ2Uuc3ZnClthY3Rpb24tdXJsXTogaHR0cHM6Ly9naXRodWIuY29tL3Bob2dvbGFicy9zdHJpZGUvYWN0aW9ucwpbZ29kb2MtdXJsXTogaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9waG9nb2xhYnMvc3RyaWRlCltnb2RvYy1pbWddOiBodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL3Bob2dvbGFicy9zdHJpZGU/c3RhdHVzLnN2ZwpbbGljZW5zZS1pbWddOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWJsdWUuc3ZnCltsaWNlbnNlLXVybF06IExJQ0VOU0UK readmeEtag: '"bc31c41068e345d5a0a949c54d888a9474c66d12"' readmeLastModified: Fri, 30 Apr 2021 13:10:03 GMT repositoryId: 181135924 description: A code generator for OpenAPI v3.x created: '2019-04-13T07:22:39Z' updated: '2023-01-28T09:14:39Z' language: Go archived: true stars: 7 watchers: 1 forks: 1 owner: phogolabs logo: https://avatars.githubusercontent.com/u/15003293?v=4 license: MIT repoEtag: '"95d169fb8d9c059c2d3a68b366870fa3c954264e00dfe9595a60f2697a3ebd17"' repoLastModified: Sat, 28 Jan 2023 09:14:39 GMT foundInMaster: true category: Server id: fc3e66dec06633cdd45ad847e80ab5c6 - source: openapi3 tags repository: https://github.com/yasuflatland-lf/spring-boot-webflux-kotlin-coroutine v3: true id: 6654b73e4bbebeac7741bb5090d17536 repositoryMetadata: base64Readme: >- IyBzcHJpbmctYm9vdC13ZWJmbHV4LWtvdGxpbi1jb3JvdXRpbmUKIVtHaXRIdWIgV29ya2Zsb3cgU3RhdHVzICh3aXRoIGJyYW5jaCldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL3lhc3VmbGF0bGFuZC1sZi9zcHJpbmctYm9vdC13ZWJmbHV4LWtvdGxpbi1jb3JvdXRpbmUvc3ByaW5nLWJvb3Qtd2ViZmx1eC1rb3RsaW4tY29yb3V0aW5lLnltbD9icmFuY2g9ZGV2ZWxvcCkKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2dpdGh1Yi95YXN1ZmxhdGxhbmQtbGYvc3ByaW5nLWJvb3Qtd2ViZmx1eC1rb3RsaW4tY29yb3V0aW5lL2JyYW5jaC9kZXZlbG9wL2dyYXBoL2JhZGdlLnN2Zz90b2tlbj1LajliMEJRWmNWKV0oaHR0cHM6Ly9jb2RlY292LmlvL2dpdGh1Yi95YXN1ZmxhdGxhbmQtbGYvc3ByaW5nLWJvb3Qtd2ViZmx1eC1rb3RsaW4tY29yb3V0aW5lKQoKQSBzYW1wbGUgb2YgU3ByaW5nIGJvb3QgV2ViRmx1eCBhbmQgS290bGluIENvcm91dGluZSB3aXRoIEhhbmRsZXIgYW5kIFJvdXRlci4gSW4gdGhpcyBzYW1wbGUsIGltcGxlbWVudGluZyBUb2RvIG1vZGVsLCBoYW5kbGVyIGFuZCByb3V0ZXIgd2l0aCBkYXRhYmFzZSAoTXlTUUwpIHRlc3RpbmcuCgojIFJlcWlyZW1lbnRzCi0gSmF2YSAyMQotIERvY2tlciA0LjM3LjIgPj0KLSBncmFkbGUgOC4xMiA+PQoKIyBHZXR0aW5nIFN0YXJ0ZWQKUGxlYXNlIG1ha2Ugc3VyZSBEb2NrZXIgaXMgdXAgYW5kIHJ1bm5pbmcuCgojIyBQcm9kdWN0aW9uCmBgYGJhc2gKJCBtYWtlIHJ1bgpgYGAKYGFwcGxpY2F0aW9uLnltbGAgd2lsbCBiZSByZWZlcnJlZCBmb3IgdGhlIGNvbmZpZ3VyYXRpb24uIFRoaXMgY29tbWFuZCBkb2VzCi0gQnVpbGQgRG9ja2VyIGltYWdlIHdpdGggdGhlIGltcGxlbWVudGF0aW9uCi0gU3BpbiB1cCBEYXRhYmFzZSBhbmQgU3ByaW5nYm9vdCBhcHBsaWNhdGlvbiAodGhpcyBhcHBsaWNhdGlvbikgYnkgYGRvY2tlci1jb21wb3NlYAoKIyMgRGV2ZWxvcG1lbnQKYGBgYmFzaAokIG1ha2UgZGV2REIKJCBtYWtlIGRldkJvb3QKYGBgCmBhcHBsaWNhdGlvbi1sb2NhbC55bWxgIHdpbGwgYmUgcmVmZXJyZWQgZm9yIHRoZSBjb25maWd1cmF0aW9uLgoKYG1ha2UgZGV2REJgIG9ubHkgc3BpbnMgdXAgRGF0YWJhc2UsIGFuZCBgbWFrZSBkZXZCb290YCBydW4gdGhpcyBhcHBsaWNhdGlvbiBieSBkZXZlbG9wbWVudCBtb2RlIHZpYSBgZ3JhZGxlYC4KCiMjIyBIb3cgdG8gcnVuIHRlc3QKYGBgYmFzaAokIGdyYWRsZSB0ZXN0IC0taW5mbwpgYGAKIyMgQ2xlYW4gdXAgZW52aXJvbm1lbnQKYGBgYmFzaAokIG1ha2UgY2xlYW4KYGBgCgpUaGlzIGNvbW1hbmQgY2xlYW5zIHVwIGRhdGFiYXNlLgoKIyBPcGVuQVBJCiMjIEhvdyB0byBhY2Nlc3MgU3dhZ2dlciBVSQpgYGBiYXNoCmh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC93ZWJqYXJzL3N3YWdnZXItdWkvaW5kZXguaHRtbApgYGAKCiMgVGlwcwoKIyMgTWFrZWZpbGUgY29tbWFuZHMKWW91IGNhbiBydW4gYWxsIGNvbW1hbmRzIGJ5IHVzaW5nIE1ha2VmaWxlLiBBbGwgYXZhaWxhYmxlIGNvbW1hbmRzIGlzIGRpc3BsYXllZCBieSB0eXBpbmcsCmBgYGJhc2gKJCBtYWtlIGhlbHAKYGBgCg== readmeEtag: '"911afce9e1f27db18cba49c156dbd2a2279f522d"' readmeLastModified: Sat, 01 Feb 2025 07:07:16 GMT repositoryId: 476884435 description: >- 🛠️ A sample of Spring boot WebFlux and Kotlin Coroutine with Handler and Router created: '2022-04-01T22:24:52Z' updated: '2025-03-08T09:56:46Z' language: Kotlin archived: false stars: 8 watchers: 0 forks: 1 owner: yasuflatland-lf logo: https://avatars.githubusercontent.com/u/2855663?v=4 repoEtag: '"52d9212420d596af03058cc2f952c7b103c78f3c3f666438712db85ab803bfb5"' repoLastModified: Sat, 08 Mar 2025 09:56:46 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/apideck-libraries/openapi-specs v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXNwZWNzCgpUaGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIEFwaWRlY2sgQVBJcy4KCjxpbWcgc3JjPSJodHRwOi8vdmFsaWRhdG9yLnN3YWdnZXIuaW8vdmFsaWRhdG9yP3VybD1odHRwczovL3NwZWNzLmFwaWRlY2suY29tL2NybS55bWwiPgo= readmeEtag: '"a365f19dadbbcd8f25a1ea0e20063f437174a2f8"' readmeLastModified: Mon, 29 Sep 2025 14:24:29 GMT repositoryId: 318430456 description: The OpenAPI specifications for the Apideck APIs. created: '2020-12-04T06:55:12Z' updated: '2026-02-05T17:22:05Z' language: null archived: false stars: 7 watchers: 4 forks: 3 owner: apideck-libraries logo: https://avatars.githubusercontent.com/u/73573473?v=4 license: MIT repoEtag: '"1a9e0435d37de62782e8b7220bb2ad74c520986f2984428a973e5f68d4807665"' repoLastModified: Thu, 05 Feb 2026 17:22:05 GMT foundInMaster: true category: - Testing - Parsers id: c977303d84eebe1aa3c23e0a1f6d548d - source: openapi3 tags repository: https://github.com/d-yoshi/redmine-openapi v3: true id: 0304cdf06000047bbe0a8072d0785b11 repositoryMetadata: base64Readme: >- IyBVbm9mZmljaWFsIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIFJlZG1pbmUgQVBJCgpbIVtDSV0oaHR0cHM6Ly9naXRodWIuY29tL2QteW9zaGkvcmVkbWluZS1vcGVuYXBpL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vZC15b3NoaS9yZWRtaW5lLW9wZW5hcGkvYWN0aW9ucy93b3JrZmxvd3MvY2kueW1sKQoKIyMgT3ZlcnZpZXcKClRoaXMgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZpbGUgd2FzIGNyZWF0ZWQgYnkgbWFudWFsIHNjcmFwaW5nIHRoZSBvZmZpY2lhbCBhcGkgZG9jcyBhbmQgZXhwZXJpbWVudGF0aW9uLgoKIyMgRG9jcwoKYGBgClJlZG1pbmU6IDUuMC54Ck9wZW5BUEk6IDMuMC4zCmBgYAoKaHR0cHM6Ly9kLXlvc2hpLmdpdGh1Yi5pby9yZWRtaW5lLW9wZW5hcGkvCgojIyBSZWZlcmVuY2UKCltSZWRtaW5lIEFQSSBPZmZpY2lhbCBEZXZlbG9wZXIgR3VpZGVdKGh0dHBzOi8vd3d3LnJlZG1pbmUub3JnL3Byb2plY3RzL3JlZG1pbmUvd2lraS9SZXN0X2FwaSkK readmeEtag: '"63703a7edc35369c81185297dd3bd2e4b61f0ee5"' readmeLastModified: Wed, 12 Jun 2024 04:15:44 GMT repositoryId: 490070672 description: Unofficial OpenAPI specification for the Redmine API created: '2022-05-08T22:36:30Z' updated: '2025-07-28T09:17:02Z' language: null archived: false stars: 12 watchers: 1 forks: 2 owner: d-yoshi logo: https://avatars.githubusercontent.com/u/22128066?v=4 license: MIT repoEtag: '"ba2f6e5ac0ef808b7b0a239ac111ad8a6b4cfe442dbe2fafdfbc5a90861bed18"' repoLastModified: Mon, 28 Jul 2025 09:17:02 GMT category: - Description Validators - Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/mimicry-tech/openapi_validator v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJdjNWYWxpZGF0b3IKCkEgc21hbGwgbGlicmFyeSBmb3IgdmFsaWRhdGluZyBPcGVuQVBJIHNwZWNzIGluZGVwZW5kZW50bHkgb2YgdGhlIFtTd2FnZ2VyIEVkaXRvcl0oaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pbykgLSBhbmQgaW5kZXBlbmRlbnRseSBvZiBKYXZhU2NyaXB0LgoKT3JpZ2luYWxseSBleHRyYWN0ZWQgZnJvbSBhIGJyYW5jaCBvZiBbbWltaWNyeV0oaHR0cHM6Ly9naXRodWIuY29tL21pbWljcnktdGVjaC9taW1pY3J5KSBhcyB0aGlzIG1pZ2h0IGJlIHVzZWZ1bCB0byBvdGhlcnMuCgojIyBJbnN0YWxsYXRpb24KClRoZSBwYWNrYWdlIGNhbiBiZSBpbnN0YWxsZWRieSBhZGRpbmcgYG9wZW5hcGl2M192YWxpZGF0b3JgIHRvIHlvdXIgbGlzdCBvZmRlcGVuZGVuY2llcyBpbiBgbWl4LmV4c2A6CgpgYGBlbGl4aXIKZGVmIGRlcHMgZG8KICBbCiAgICB7Om9wZW5hcGl2M192YWxpZGF0b3IsICJ+PiAwLjEuMCJ9CiAgXQplbmQKYGBgCgpEb2N1bWVudGF0aW9uIGNhbiBiZSBnZW5lcmF0ZWQgd2l0aCBbRXhEb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9lbGl4aXItbGFuZy9leF9kb2MpCmFuZCBwdWJsaXNoZWQgb24gW0hleERvY3NdKGh0dHBzOi8vaGV4ZG9jcy5wbSkuIE9uY2UgcHVibGlzaGVkLCB0aGUgZG9jcyBjYW4KYmUgZm91bmQgYXQgW2h0dHBzOi8vaGV4ZG9jcy5wbS9vcGVuYXBpX3ZhbGlkYXRvcl0oaHR0cHM6Ly9oZXhkb2NzLnBtL29wZW5hcGl2M192YWxpZGF0b3IpLgoKIyMgVXNhZ2UKClRoZSBwYWNrYWdlIHByb3ZpZGVzIHRoZSBvcGVuYXBpIHYzIHNjaGVtYSBhcyBhIHBsYWluIGVsaXhpciBzdHJ1Y3QsIHNvIHlvdSBjYW4gZWl0aGVyOgoKYGBgZWxpeGlyCm15X3NwZWNpZmljYXRpb24gPSAle30KCm15X3NwZWNpZmljYXRpb24gfD4gT3BlbkFQSXYzVmFsaWRhdG9yLnZhbGlkPygpCiMgdHJ1ZSAvIGZhbHNlCgpteV9zcGVjaWZpY2F0aW9uIHw+IE9wZW5BUEl2M1ZhbGlkYXRvci52YWxpZGF0ZSgpCiMgOm9rIHwgezplcnJvciwgW119CmBgYAoKVGhpcyB1c2VzIHRoZSBtb3N0IGV4Y2VsbGVudCBbYGV4X2pzb25fc2NoZW1hYF0oaHR0cHM6Ly9oZXgucG0vcGFja2FnZXMvZXhfanNvbl9zY2hlbWEpLCB5b3UgY2FuIGFsc28gZ3JhYiB0aGUgc2NoZW1hIGRpcmVjdGx5IGFuZCB1c2UgaXQgd2l0aCBgZXhfanNvbl9zY2hlbWFgcyBgVmFsaWRhdG9yYDoKCmBgYGVsaXhpcgphbGlhcyBPcGVuQVBJdjNWYWxpZGF0b3IuU2NoZW1hcy5PcGVuQVBJLlYzLCBhczogVjMKYWxpYXMgRXhKc29uLlNjaGVtYQphbGlhcyBFeEpzb25TY2hlbWEuVmFsaWRhdG9yCgpteV9zcGVjaWZpY2F0aW9uID0gJXsKICAib3BlbmFwaSIgPT4gIjMuMC4wIiwKICAjIC4uLgp9CgpWMy5zY2hlbWEoKSB8PiBTY2hlbWEucmVzb2x2ZSB8PiBWYWxpZGF0b3IudmFsaWQ/KG15X3NwZWNpZmljYXRpb24pCmBgYAoKCg== readmeEtag: '"b61daad631ed9b35074cb65a5a931d73228240b9"' readmeLastModified: Thu, 07 Sep 2023 22:19:04 GMT repositoryId: 385714891 description: A small wrapper for validating OpenAPIv3 schemata in plain elixir created: '2021-07-13T19:30:25Z' updated: '2023-12-18T14:58:12Z' language: Elixir archived: false stars: 6 watchers: 1 forks: 0 owner: mimicry-tech logo: https://avatars.githubusercontent.com/u/85833773?v=4 license: Apache-2.0 repoEtag: '"865e9620f963cc3c10c5149503c4d6ed6f485eb4c3827e288fd779122fca7c76"' repoLastModified: Mon, 18 Dec 2023 14:58:12 GMT foundInMaster: true category: Parsers id: fab14465507a3232925341d0ad4443d4 - source: openapi3 tags repository: https://github.com/apiboard/php-openapi v3: true id: b7ee0faa773471470fa4444a50560ed0 repositoryMetadata: base64Readme: >- IyBQSFAgT3BlbkFQSQoKT3BlbkFQSSBTcGVjaWZpY2F0aW9uIHBhcnNlciBmb3IgUEhQIDguIFN1cHBvcnRzIGJvdGggT0FTIDMuMCBhbmQgMy4xLgoKWyFbTGF0ZXN0IFZlcnNpb24gb24gUGFja2FnaXN0XShodHRwczovL2ltZy5zaGllbGRzLmlvL3BhY2thZ2lzdC92cHJlL2FwaWJvYXJkL3BocC1vcGVuYXBpLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSldKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9hcGlib2FyZC9waHAtb3BlbmFwaSkKIVtQSFAgZnJvbSBQYWNrYWdpc3RdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L3BocC12L2FwaWJvYXJkL3BocC1vcGVuYXBpP3N0eWxlPWZsYXQtc3F1YXJlKQohW0NJXShodHRwczovL2dpdGh1Yi5jb20vYXBpYm9hcmQvcGhwLW9wZW5hcGkvd29ya2Zsb3dzL0NJL2JhZGdlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSkKCiMjIEZlYXR1cmVzCgotIFBhcnNlIE9wZW5BUEkgZmlsZXMgaW50byBhIFBIUCBvYmplY3QgdG8gaW50ZXJhY3Qgd2l0aCBpbiBjb2RlCi0gVmFsaWRhdGUgT3BlbkFQSSBmaWxlcyBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBKU09OLXNjaGVtYSBkZXNjcmlwdGlvbnMKLSBSZXNvbHZlIGV4dGVybmFsIGFuZCBpbnRlcm5hbCByZWZlcmVuY2VzCgojIyBJbnN0YWxsYXRpb24KCmBgYGJhc2gKY29tcG9zZXIgcmVxdWlyZSBhcGlib2FyZC9waHAtb3BlbmFwaQpgYGAKCiMjIFVzYWdlCgpZb3UgY2FuIGludGVyYWN0IHdpdGggdGhpcyBsaWJyYXJ5IHRocm91Z2ggdGhlIGBPcGVuQVBJOjpjbGFzc2AgZGlyZWN0bHkuCgpgYGBwaHAKJG9wZW5BUEkgPSBuZXcgT3BlbkFQSSgpOwpgYGAKVGhpcyBjbGFzcyBvcHRpb25hbGx5IGFjY2VwdHMgYW4gaW1wbGVtZW50YXRpb24gb2YgYEFwaWJvYXJkXE9wZW5BUElcQ29udGVudHNcUmV0cmlldmVyOjpjbGFzc2Agd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJldHJpZXZlIHRoZSBmaWxlIGNvbnRlbnRzLiBCeSBkZWZhdWx0IHRoZSBsb2NhbCBmaWxlc3lzdGVtIHdpbGwgYmUgdXNlZCB0byByZXRyaWV2ZSBmaWxlIGNvbnRlbnRzLgoKIyMjIFBhcnNlCgpZb3UgY2FuIHBhcnNlIHRoZSBjb250ZW50cyBvZiBhIGZpbGUgYnkgcGFzc2luZyBpdHMgcGF0aCB0byBgcGFyc2UoKWAuIFRoaXMgd2lsbCBhdHRlbXB0IHRvIHJldHJpZXZlIHRoZSBmaWxlJ3MgY29udGVudHMgYW5kIHJlc29sdmUgYW55IGV4dGVybmFsIHJlZmVyZW5jZXMuCgpJdCByZXR1cm5zIGEgUEhQIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIE9BUyBkb2N1bWVudCBzdHJ1Y3R1cmUgdGhhdCBjYW4gYmUgdXNlZCBpbiBjb2RlLgpgYGBwaHAKJGRvY3VtZW50ID0gJG9wZW5BUEktPnBhcnNlKCcvcGF0aC90by9teS1vYXMuanNvbicpOwoKJGRvY3VtZW50LT5vcGVuYXBpKCk7IC8vIDMuMS4wCmBgYAoKIyMjIFZhbGlkYXRlCllvdSBjYW4gZGlyZWN0bHkgdmFsaWRhdGUgdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBPcGVuQVBJIEpTT04tc2NoZW1hIGRlc2NyaXB0aW9ucy4gSXQgcmV0dXJucyBhbiBhcnJheSBvZiBwb3NzaWJsZSBlcnJvcnMgdGhhdCBvY2N1cmVkIGR1cmluZyB0aGUgdmFsaWRhdGlvbi4KCmBgYHBocAokZXJyb3JzID0gJG9wZW5BUEktPnZhbGlkYXRlKCcvcGF0aC90by9teS1vYXMueWFtbCcpOwpgYGAKCj4g4pqg77iPIFZhbGlkYXRpb24gZm9yIE9BUyAzLjEgZG9lcyBub3QgY2hlY2sgYW55IEpTT04gU2NoZW1hcyBpbiB5b3VyIE9wZW5BUEkgZG9jdW1lbnQgYmVjYXVzZSBpdCBhbGxvd3MgeW91IHRvIHVzZSBhbnkgSlNPTiBTY2hlbWEgZGlhbGVjdCB5b3UgY2hvb3NlIQoKIyMjIFJlc29sdmUKCllvdSBjYW4gcmVzb2x2ZSBleHRlcm5hbCBhbmQgaW50ZXJuYWwgcmVmZXJlbmNlcy4gSXQgcmV0dXJucyBhIFBIUCBvYmplY3Qgd2l0aCB0aGUgcmVzb2x2ZWQgY29udGVudHMuCgpgYGBwaHAKJGNvbnRlbnRzID0gJG9wZW5BUEktPnJlc29sdmUoJy9wYXRoL3RvL215LW9hcy5qc29uJyk7CgokZG9jdW1lbnQgPSBuZXcgQXBpYm9hcmRcT3BlbkFQSVxTdHJ1Y3R1cmVcRG9jdW1lbnQoJGNvbnRlbnRzKTsKYGBgCldoZW4gcmVzb2x2aW5nIHJlZmVyZW5jZXMgdGhlIGNvbnRlbnRzIHdpbGwgYmUgcmV0cmlldmVkIGZyb20gdGhlIGxvY2FsIGZpbGV5c3RlbSBieSBkZWZhdWx0LiBZb3UgY2FuIG92ZXJyaWRlIHRoZSB3YXkgZmlsZSBjb250ZW50cyBpcyByZXRyaWV2ZWQgYnkgcGFzc2luZyBhIGN1c3RvbSBjbGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIGBBcGlib2FyZFxPcGVuQVBJXENvbnRlbnRzXFJldHJpZXZlcmAgaW50ZXJmYWNlLgoKYGBgcGhwCgokY3VzdG9tUmV0cmlldmVyID0gbmV3IE15Q3VzdG9tUmV0cmlldmVyKCk7CiRvcGVuQVBJID0gbmV3IE9wZW5BUEkoJGN1c3RvbVJldHJpZXZlcik7Cgokb3BlbkFQSS0+cmVzb2x2ZSgnL3BhdGgvdG8vbXktb2FzLmpzb24nKTsKYGBgCgpDaXJjdWxhciByZWZlcmVuY2VzIGFyZSByZXNvbHZlZCBhcyBhbiBpbnRlcm5hbCByZWZlcmVuY2UgYWZ0ZXIgcmVjdXJzaW5nIHR3aWNlLCB0aGlzIGlzIHRvIHByZXZlbnQgaW5maW5pdGUgcmVjdXJzaW9uLgoKIyMgTGljZW5zZQoKVGhlIE1JVCBMaWNlbnNlIChNSVQpLiBQbGVhc2Ugc2VlIFtMaWNlbnNlIEZpbGVdKExJQ0VOU0UpIGZvciBtb3JlIGluZm9ybWF0aW9uLgo= readmeEtag: '"f9c6a4d0ec68939a474e83dcf9f743f8f6ef2062"' readmeLastModified: Wed, 21 Feb 2024 20:55:11 GMT repositoryId: 553826449 description: OpenAPI Specification library for PHP 8. Supports both OAS 3.0 and 3.1. created: '2022-10-18T20:46:53Z' updated: '2025-11-30T14:41:51Z' language: PHP archived: false stars: 6 watchers: 2 forks: 1 owner: Apiboard logo: https://avatars.githubusercontent.com/u/110201247?v=4 license: MIT repoEtag: '"04782a4b9d90ff5b3257acc637099520c86fa5f447300abdb7fae1b50614f292"' repoLastModified: Sun, 30 Nov 2025 14:41:51 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/bump-sh/bump-ruby-cli v3: true repositoryMetadata: base64Readme: >- IyBCdW1wOjpDTEkKCioq4pqg77iPIERFUFJFQ0FUSU9OIFdBUk5JTkc6KiogVGhpcyByZXBvc2l0b3J5IGlzIG5vdyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG91ciBbbmV3IE5vZGUgYmFzZWQgQnVtcCBDTEldKGh0dHBzOi8vZ2l0aHViLmNvbS9idW1wLXNoL2NsaSkuIFBsZWFzZSBtaWdyYXRlIHRvIHYyLngrIHZlcnNpb24gb2Ygb3VyIENMSSB0byBlbmpveSBhbGwgZmVhdHVyZXMgb2YgQnVtcC5zaC4g4pqg77iPCgotIFsqKlJlYWQgdGhlIG5ldyBDTEkgYW5ub3VuY2VtZW50KipdKGh0dHBzOi8vaGVhZHdheWFwcC5jby9idW1wLWNoYW5nZWxvZy9uZXctY29tbWFuZC1saW5lLWludGVyZmFjZS1lcmEtMTk2MjI2KQotIFsqKlJlYWQgb3VyIEJ1bXAgQ0xJIGhlbHAgc2VjdGlvbioqXShodHRwczovL2hlbHAuYnVtcC5zaC9idW1wLWNsaSkKCl9JZiB5b3Ugc3RpbGwgd2FudCB0byB1c2UgdGhpcyBydWJ5IGdlbSwgcGxlYXNlIFtjb250YWN0IHVzXShtYWlsdG86aGVsbG9AYnVtcC5zaCkgdG8gZGlzY3VzcyBhbHRlcm5hdGl2ZXMgYW5kIHNoYXJlIHlvdXIgdXNlIGNhc2UuIFRoYW5rIHlvdSFfCgpUaGUgYGJ1bXAtY2xpYCBnZW0gcHJvdmlkZXMgYSBzaW1wbGUgY29tbWFuZCBsaW5lIGFjY2VzcyB0byB0aGUgQnVtcCAoaHR0cHM6Ly9idW1wLnNoKSBBUEkuCgojIyBJbnN0YWxsYXRpb24KCkFkZCB0aGlzIGxpbmUgdG8geW91ciBhcHBsaWNhdGlvbidzIEdlbWZpbGU6CgpgYGBydWJ5CmdlbSAnYnVtcC1jbGknCmBgYAoKQW5kIHRoZW4gZXhlY3V0ZToKCiAgICAkIGJ1bmRsZQoKT3IgaW5zdGFsbCBpdCB5b3Vyc2VsZiBhczoKCiAgICAkIGdlbSBpbnN0YWxsIGJ1bXAtY2xpCgojIyBVc2FnZQoKQnVtcCB0cmllcyB0byBpZGVudGlmeSB5b3VyIGZpbGUgc3BlY2lmaWNhdGlvbiBhbmQgZm9ybWF0IGF1dG9tYXRpY2FsbHkuIFlvdSBjYW4gZm9yY2UgaXQgYnkgdXNpbmcgdGhlIGAtLXNwZWNpZmljYXRpb25gIG9wdGlvbi4gSGVyZSBhcmUgdGhlIHN1cHBvcnRlZCB2YWx1ZXM6CgoqIGBvcGVuYXBpL3YyL2pzb25gCiogYG9wZW5hcGkvdjIveWFtbGAKKiBgb3BlbmFwaS92My9qc29uYAoqIGBvcGVuYXBpL3YzL3lhbWxgCiogYGFzeW5jYXBpL3YyL2pzb25gCiogYGFzeW5jYXBpL3YyL3lhbWxgCgpCb3RoIHRoZSBgLS1kb2NgIGFuZCBgLS10b2tlbmAgb3B0aW9ucyB1c2VkIGJlbG93IGNhbiBiZSBmb3VuZCBpbiB5b3VyIGRvY3VtZW50YXRpb24gc2V0dGluZ3MgcGFnZSBvbiBodHRwczovL2J1bXAuc2guIE5vdGUgdGhhdCB5b3UgY2FuIHJlcGxhY2UgYm90aCB0aGUgYC0tZG9jYCBhbmQgYC0tdG9rZW5gIG9wdGlvbiBieSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4gVGhpcyB3aWxsIGhlbHAgdG8ga2VlcCB0aG9zZSB2YWx1ZXMgc2VjcmV0OgoKLSBgLS1kb2NgIGNhbiBieSByZXBsYWNlZCBieSBgQlVNUF9JRGAuCi0gYC0tdG9rZW5gIGNhbiBieSByZXBsYWNlZCBieSBgQlVNUF9UT0tFTmAuCgojIyMgUHJldmlldwoKWW91IGNhbiBwcmV2aWV3IHlvdXIgZG9jdW1lbnRhdGlvbiBieSBjYWxsaW5nIHRoZSBgcHJldmlld2AgY29tbWFuZC4gQSB0ZW1wb3JhcnkgcHJldmlldyB3aWxsIGJlIGNyZWF0ZWQsIHdpdGggYSB1bmlxdWUgVVJMLiBUaGlzIHByZXZpZXcgd2lsbCBiZSBhdmFpbGFibGUgZm9yIDMwIG1pbnV0ZXMuIFlvdSBkb24ndCBuZWVkIGFueSBjcmVkZW50aWFscyB0byB1c2UgdGhpcyBjb21tYW5kLgoKUHJldmlldyBhIGRvY3VtZW50YXRpb246CgogICAgJCBidW5kbGUgZXhlYyBidW1wIHByZXZpZXcgcGF0aC90by95b3VyL2ZpbGUueW1sCgojIyMgVmFsaWRhdGUKClZhbGlkYXRlIHlvdXIgZmlsZSBhZ2FpbnN0IGl0cyBzcGVjaWZpY2F0aW9uOgoKICAgICQgYnVuZGxlIGV4ZWMgYnVtcCB2YWxpZGF0ZSBwYXRoL3RvL3lvdXIvZmlsZS55bWwgLS1kb2MgRE9DX0lEX09SX1NMVUcgLS10b2tlbiBET0NfVE9LRU4KCiMjIyBEZXBsb3kKCkRlcGxveSB0aGUgZmlsZSBhcyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBkb2N1bWVudGF0aW9uOgoKICAgICQgYnVuZGxlIGV4ZWMgYnVtcCBkZXBsb3kgcGF0aC90by95b3VyL2ZpbGUueW1sIC0tZG9jIERPQ19JRF9PUl9TTFVHIC0tdG9rZW4gRE9DX1RPS0VOCgpBdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIGRvY3VtZW50YXRpb24gaW5zaWRlIGEgaHViIGFuZCBkZXBsb3kgaXQ6CgogICAgJCBidW5kbGUgZXhlYyBidW1wIGRlcGxveSBwYXRoL3RvL3lvdXIvZmlsZS55bWwgLS1hdXRvLWNyZWF0ZSAtLWRvYyBET0NfU0xVRyAtLWh1YiBIVUJfSURfT1JfU0xVRyAtLXRva2VuIEhVQl9UT0tFTgoKIyMgRGV2ZWxvcG1lbnQKCkFmdGVyIGNoZWNraW5nIG91dCB0aGUgcmVwbywgcnVuIGBiaW4vc2V0dXBgIHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzLiBUaGVuLCBydW4gYHJha2Ugc3BlY2AgdG8gcnVuIHRoZSB0ZXN0cy4gWW91IGNhbiBhbHNvIHJ1biBgYmluL2NvbnNvbGVgIGZvciBhbiBpbnRlcmFjdGl2ZSBwcm9tcHQgdGhhdCB3aWxsIGFsbG93IHlvdSB0byBleHBlcmltZW50LgoKIyMgQ29udHJpYnV0aW5nCgpCdWcgcmVwb3J0cyBhbmQgcHVsbCByZXF1ZXN0cyBhcmUgd2VsY29tZSBvbiBHaXRIdWIgYXQgaHR0cHM6Ly9naXRodWIuY29tL2J1bXAtc2gvYnVtcC1jbGkuIFRoaXMgcHJvamVjdCBpcyBpbnRlbmRlZCB0byBiZSBhIHNhZmUsIHdlbGNvbWluZyBzcGFjZSBmb3IgY29sbGFib3JhdGlvbiwgYW5kIGNvbnRyaWJ1dG9ycyBhcmUgZXhwZWN0ZWQgdG8gYWRoZXJlIHRvIHRoZSBbQ29udHJpYnV0b3IgQ292ZW5hbnRdKGh0dHA6Ly9jb250cmlidXRvci1jb3ZlbmFudC5vcmcpIGNvZGUgb2YgY29uZHVjdC4KCiMjIExpY2Vuc2UKClRoZSBnZW0gaXMgYXZhaWxhYmxlIGFzIG9wZW4gc291cmNlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgW01JVCBMaWNlbnNlXShodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKS4KCiMjIENvZGUgb2YgQ29uZHVjdAoKRXZlcnlvbmUgaW50ZXJhY3RpbmcgaW4gdGhlIEJ1bXA6OkNMSSBwcm9qZWN04oCZcyBjb2RlYmFzZXMsIGlzc3VlIHRyYWNrZXJzLCBjaGF0IHJvb21zIGFuZCBtYWlsaW5nIGxpc3RzIGlzIGV4cGVjdGVkIHRvIGZvbGxvdyB0aGUgW2NvZGUgb2YgY29uZHVjdF0oaHR0cHM6Ly9naXRodWIuY29tL2J1bXAtc2gvYnVtcC1jbGkvYmxvYi9tYXN0ZXIvQ09ERV9PRl9DT05EVUNULm1kKS4K readmeEtag: '"0af8faf032d816a1f99226bc75094cd719933f86"' readmeLastModified: Wed, 07 Jul 2021 08:40:21 GMT repositoryId: 108739848 description: >- Old bump.sh ruby CLI - Please head to our new CLI https://github.com/bump-sh/cli created: '2017-10-29T14:10:45Z' updated: '2023-01-28T07:46:06Z' language: Ruby archived: true stars: 6 watchers: 1 forks: 3 owner: bump-sh logo: https://avatars.githubusercontent.com/u/33217836?v=4 license: MIT repoEtag: '"be2760393905516a574b147e95e0c0770ac4e73a74e250b6e9c81dbd8200542e"' repoLastModified: Sat, 28 Jan 2023 07:46:06 GMT foundInMaster: true category: Server Implementations id: 36740d58dd6e9e8806db6ebe24f79fc3 - source: openapi3 tags repository: https://github.com/criteria-labs/criteria-api-tools v3: true id: 73352c1e6b52001db4a01daf9eb0c83e repositoryMetadata: repositoryId: 585077559 description: Tools for working with the JSON Schema and OpenAPI specifications. created: '2023-01-04T09:03:35Z' updated: '2025-03-18T07:50:04Z' language: TypeScript archived: false stars: 7 watchers: 1 forks: 2 owner: criteria-labs logo: https://avatars.githubusercontent.com/u/88253836?v=4 license: MIT repoEtag: '"822ff3636be84311305c7a661f2f0dbff1789638e58fbdcabd7291a309ff1862"' repoLastModified: Tue, 18 Mar 2025 07:50:04 GMT foundInMaster: true - source: openapi3 tags repository: https://github.com/mikeparcewski/aws-openapi v3: true repositoryMetadata: base64Readme: >- IyBBV1MgKyBPcGVuQVBJCgpBIGZhc3QsIG1hc3NpdmVseSBzY2FsYWJsZSBzYW1wbGUgQ1JVRCBhcHBsaWNhdGlvbiB3aXRoIHNpbXBsZSBldmVudGluZyB0aGF0IGhhcm5lc3NlcyB0aGUgcG93ZXIgb2YgQVdTIGFuZCBPcGVuQVBJLgoKIyMjIFRhYmxlIG9mIENvbnRlbnRzCgoqIFtXaGF0IFRoaXMgSXNdKCN3aGF0LXRoaXMtaXMpCiogW1doYXQgWW91J2xsIE5lZWRdKCN3aGF0LXlvdWxsLW5lZWQpCiogW1NldHRpbmcgSXQgVXBdKCNzZXR0aW5nLWl0LXVwKQoqIFtNYWtpbmcgU3VyZSBJdCBXb3Jrc10oI21ha2luZy1zdXJlLWl0LXdvcmtzKQoqIFtIb3cgSXQgV29ya3NdKCNob3ctaXQtd29ya3MpCiAgKiBbSG93IHRvIEN1c3RvbWl6ZV0oI3NyY21haW5yZXNvdXJjZXNvcGVuYXBpeWFtbCkKKiBbVGhlIFRlc3QgSGFybmVzc10oI3RoZS10ZXN0LWhhcm5lc3MpCiogW1Rha2luZyBJdCBGdXJ0aGVyXSgjdGFraW5nLWl0LWZ1cnRoZXIpCiogW0NsZWFuaW5nIFVwXSgjY2xlYW5pbmctdXApCgojIyMgV2hhdCBUaGlzIElzCgpMZXZlcmFnaW5nIEFXUywgT3BlbkFQSSBhbmQgQkREIHRlc3RpbmcgbWV0aG9kb2xvZ2llcyB0aGlzIGEgZmFzdCwgbWFzc2l2ZWx5IHNjYWxhYmxlIEFQSSBjcmVhdGVkIGVudGlyZWx5IHRocm91Z2ggY29uZmlndXJhdGlvbiwgbGV2ZXJhZ2luZyBlYWNoIG9mIHRoZSB0ZWNobm9sb2dpZXMgdG8gc2ltcGxpZnkgZGV2ZWxvcG1lbnQgYW5kIGRlcGxveW1lbnQuCgoqIEFtYXpvbiBXZWIgU2VydmljZXMKICAqIFtBUEkgR2F0ZXdheV0oaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9hcGktZ2F0ZXdheS8pIC0gVG8gbWFuYWdlIHJlc291cmNlIHJlcXVlc3RzIHRvIEFXUyBMYW1iZGEgb3IgRHluYW1vREIKICAqIFtBV1MgTGFtYmRhXShodHRwczovL2F3cy5hbWF6b24uY29tL2xhbWJkYSkgLSBUbyBoYW5kbGUgdHJhbnNmb3JtYXRpb24gb2YgZGF0YQogICogW0R5bmFtb0RCXShodHRwczovL2F3cy5hbWF6b24uY29tL2R5bmFtb2RiLykgLSBBIG11bHRpLW1hc3RlciAoZS5nLiByZWFkL3dyaXRlKSwgcmVnaW9uYWxseSBzY2FsYWJsZQogICogW0FXUyBTTlNdKGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vc25zLykgLSBBbGVydGluZyB5b3UgaW4gcmVhbCB0aW1lIHRvIGNoYW5nZXMgaW4gZGF0YQoqIFtPcGVuQVBJIDMueF0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgd2l0aCBBV1MgZXh0ZW5zaW9ucyAoZm9yIGRlcGxveW1lbnQpCiogW0JERCBGb3IgQWxsXShodHRwczovL2dpdGh1Yi5jb20vYWNjZW50dXJlL2JkZC1mb3ItYWxsKSAtIEEgYmVoYXZvcmlhbCBkcml2ZW4gZGV2ZWxvcG1lbnQgZ3JhbW1hci90ZXN0IGhhcm5lc3MgZnJvbSBBY2NlbnR1cmUKCiFbQVdTIERpYWdyYW0gb2YgU29sdXRpb25dKGNvbnRlbnQvZGlhZ3JhbS5wbmcpCgo+IEFkZCBSb3V0ZSA1MyB0byByb3V0ZSB0cmFmZmljIGJhc2VkIG9uIGJlc3QgY29uc3VtZXIgcmVnaW9uIC0gaHR0cHM6Ly9tZWRpdW0uY29tL2ZpbnRlY2gtc3R1ZGlvcy1lbmdpbmVlcmluZy9hdXRvbWF0aWMtbXVsdGktcmVnaW9uLWFwaS1mYWlsb3Zlci1hbmQtZ2VvLXByb3hpbWl0eS1yb3V0aW5nLW9uLWF3cy0yNzFmNTc3NTJjMWIKCiMjIFdoYXQgWW91J2xsIE5lZWQKClRvIHJ1biB0aGlzIGFwcGxpY2F0aW9uIGFuZCBjcmVhdGUgb3RoZXIgQVBJJ3MgeW91J2xsIG5lZWQgdGhlIGZvbGxvd2luZyBpbnN0YWxsZWQuLi4KCiogTW9kZXJuIElERSAmIEVudmlyb25tZW50IC0gU3VwcG9ydHMgTWF2ZW4sIEphdmEgOCwgTm9kZUpTICYgUHl0aG9uCiogQVdTIENMSSAtIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vY2xpLwoqIEFXUyBDbG91ZEZvcm1hdGlvbiBUZW1wbGF0ZSBGbGlwIC0gaHR0cHM6Ly9naXRodWIuY29tL2F3c2xhYnMvYXdzLWNmbi10ZW1wbGF0ZS1mbGlwCgojIyBXaGF0IFlvdSdsbCBCZSBEb2luZwoKQ3JlYXRpbmcgYW5kIHRlc3RpbmcgYSBmYXN0LCBhbmQgbXVsdGktcmVnaW9uIENSVUQgd2l0aCBubyBjb2RlIHVzaW5nIGRvY3VtZW50YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24uCgoqKkZlYXR1cmVzKioKKiBDUlVEIEFQSSBiYXNlZCBvbiBPcGVuQVBJIDMueCBzY2hlbWEgKGVpdGhlciBleGFtcGxlIG9uZSwgb3Igb25lIHlvdSB3cml0ZSkKKiBMYXVuY2hlcyBpbiB0d28gcmVnaW9ucywgYnV0IGNhbiBzY2FsZSB0byBhbGwgZWFzaWx5CiogRm9yIHJlZHVjZWQgbGF0ZW5jeSwgYWxsIHJlc291cmNlcyBmb3IgYW4gQVBJIGV4aXN0IHdpdGhpbiBzYW1lIHJlZ2lvbgogICogQWxsIGluLXJlZ2lvbiByZXNvdXJjZXMgcmVzb3VyY2VzIGNvbmZpZ3VyZWQgdG8gc2NhbGUgYXMgd2VsbAoqIEJhY2tlZCBieSBhIGdsb2JhbCBEeW5hbW9EQiBpbnN0YW5jZSB3aGljaCBtYWtlcyBlYWNoIHJlZ2lvbiBpbnN0YW5jZSBtdWx0aS1tYXN0ZXIgcmVhZC93cml0ZQoqIENoYW5nZSBub3RpZmljYXRpb25zIHNlbnQgdmlhIHJlYWwgdGltZSBWSUEgU01TCiogTm8gY29kZSwgb3RoZXIgdGhhbiByZXVzYWJsZSBsYW1iZGFzIHRoYXQgY291bGQgYmUgdXNlZCBmb3IgYW55IEFQSS4KCiMjIFNldHRpbmcgSXQgVXAKCkZpcnN0IHdlIG5lZWQgdG8gZ2VuZXJhdGUgdGhlIGNvbmZpZ3VyYXRpb24uICBJbiBzcmMvbWFpbi9yZXNvdXJjZXMvIHdlIGhhdmUgMyBZQU1MIGZpbGVzLi4uCgoqICoqYXdzLXJlc291cmNlcy55YW1sKiogLSB0aGlzIG91dGxpbmVzIG1vc3Qgb2YgdGhlIGNvbXBvbmVudHMgb2YgdGhlIGNsb3VkIGZvcm1hdGlvbiBzdGFjawoqICoqb3BlbmFwaS55YW1sKiogLSB0aGlzIGlzIHRoZSBvcGVuYXBpIHNwZWMgZm9yIHRoZSBzZXJ2aWNlCiogKiphd3MtZXh0ZW5zaW9ucy55YW1sKiogLSB0aGVzZSBhcmUgb3BlbmFwaSBleHRlbnNpb25zIGZyb20gQVdTIHRoYXQgZGVzY3JpYmUgdGhlIEFQSSBHYXRld2F5IGRlcGxveW1lbnQKCllvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCB0aGVzZSBpbiB0aGUgW0hvdyBUaGlzIGFsbCBXb3Jrc10oI2hvdy10aGlzLWFsbC13b3Jrcykgc2VjdGlvbi4gIEZvciBub3csIGxldCdzIGdldCBzdGFydGVkLgoKKiBHbyB0byB0aGUgcm9vdCBvZiB0aGlzIHByb2plY3RzIGRpcmVjdG9yeQoqIEZpcnN0IHdlIG5lZWQgdG8gY29udmVydCBvdXIgWUFNTCBjb25maWd1cmF0aW9ucyB0byBBV1MgSlNPTi4gIFdlJ2xsIHVzIHRoZSBjZm4tZmxpcCBsaWJyYXJ5IHRvIGRvIHRoaXMuCiAgYGBgc2J0c2hlbGwKICBjZm4tZmxpcCAtaiBzcmMvbWFpbi9yZXNvdXJjZXMvYXdzLXJlc291cmNlcy55YW1sIHNyYy9tYWluL3Jlc291cmNlcy9hd3MtcmVzb3VyY2VzLmpzb24KICBgYGAKICBBbmQuLi4KICBgYGBzYnRzaGVsbAogIGNmbi1mbGlwIC1qIHNyYy9tYWluL3Jlc291cmNlcy9hcGktZXh0ZW5zaW9ucy55YW1sIHNyYy9tYWluL3Jlc291cmNlcy9hcGktZXh0ZW5zaW9ucy5qc29uCiAgYGBgCiAgRmluYWxseS4uLgogIGBgYHNidHNoZWxsCiAgY2ZuLWZsaXAgLWogc3JjL21haW4vcmVzb3VyY2VzL29wZW5hcGkueWFtbCBzcmMvbWFpbi9yZXNvdXJjZXMvb3BlbmFwaS5qc29uCiAgYGBgCiogTmV4dCwgd2UnbGwgZ2VuZXJhdGUgdGhlIGZpbmFsIGNsb3VkZm9ybWF0aW9uIHRlbXBsYXRlIGZyb20gdGhlc2UuLi4KICBgYGBzYnRzaGVsbAogIG12biBjbGVhbiBnZW5lcmF0ZS10ZXN0LXJlc291cmNlcwogIGBgYAoKQW5kIG5vdyB3ZSBjYW4gc3RhcnQgbGF1bmNoaW5nIHRoZSBzdGFjay4uLgoKYGBgc2J0c2hlbGwKYXdzIGNsb3VkZm9ybWF0aW9uIGNyZWF0ZS1zdGFjayBcCiAgLS1zdGFjay1uYW1lIEl0ZW1zRXhhbXBsZSBcCiAgLS10ZW1wbGF0ZS1ib2R5IGZpbGU6Ly8vJFBXRC90YXJnZXQvYXdzLWNvbmZpZy5qc29uIFwKICAtLWNhcGFiaWxpdGllcyBDQVBBQklMSVRZX0lBTSBcCiAgLS1yZWdpb24gdXMtZWFzdC0xCmBgYAoKVGhpcyBjcmVhdGVzIHRoZSBkYXRhYmFzZSwgbGFtYmRhcywgYW5kIGFwaSBnYXRld2F5IGNvbmZpZ3VyYXRpb24gYW5kIHB1Ymxpc2hlcyBkZW1vIGVuZHBvaW50cyBpbiB0aGUgdXMtZWFzdC0xIHJlZ2lvbi4KCj4gWW91IHNob3VsZCBqdW1wIHRvIHRoZSBjb25zb2xlIGF0IHRoaXMgcG9pbnQgLSBodHRwczovL2NvbnNvbGUuYXdzLmFtYXpvbi5jb20vY2xvdWRmb3JtYXRpb24vaG9tZT9yZWdpb249dXMtZWFzdC0xIy9zdGFja3M/ZmlsdGVyPWFjdGl2ZSAtIGFuZCBtYWtlIHN1cmUgaXQgY29tcGxldGVzIHdpdGhvdXQgZXJyb3IuICBZb3UgY2FuIGFsc28gY2hlY2sgdmlhIHRoZSBjb21tYW5kIGxpbmUgdXNpbmcgYGF3cyBjbG91ZGZvcm1hdGlvbiBkZXNjcmliZS1zdGFja3MgLS1zdGFjay1uYW1lIEl0ZW1zRXhhbXBsZSAtLXJlZ2lvbiB1cy1lYXN0LTFgIHdoZXJlIHlvdSBzaG91bGQgc2VlIGAiU3RhY2tTdGF0dXMiOiAiQ1JFQVRFX0NPTVBMRVRFImAKCk5vdywgbGV0J3MgZG8gdGhlIHNhbWUgZm9yIHVzLXdlc3QtMS4uLgoKYGBgc2J0c2hlbGwKYXdzIGNsb3VkZm9ybWF0aW9uIGNyZWF0ZS1zdGFjayBcCiAgLS1zdGFjay1uYW1lIEl0ZW1zRXhhbXBsZSBcCiAgLS10ZW1wbGF0ZS1ib2R5IGZpbGU6Ly8vJFBXRC90YXJnZXQvYXdzLWNvbmZpZy5qc29uIFwKICAtLWNhcGFiaWxpdGllcyBDQVBBQklMSVRZX0lBTSBcCiAgLS1yZWdpb24gdXMtd2VzdC0xCmBgYAo+IEFnYWluIGp1bXAgdG8gdGhlIGNvbnNvbGUgYXQgdGhpcyBwb2ludCAtIGh0dHBzOi8vY29uc29sZS5hd3MuYW1hem9uLmNvbS9jbG91ZGZvcm1hdGlvbi9ob21lP3JlZ2lvbj11cy13ZXN0LTEjL3N0YWNrcz9maWx0ZXI9YWN0aXZlIC0gYW5kIG1ha2Ugc3VyZSBpdCBjb21wbGV0ZXMgd2l0aG91dCBlcnJvciBvciBjaGVjayB2aWEgdGhlIGNvbW1hbmQgbGluZSB1c2luZyB0aGUgYGF3cyBjbG91ZGZvcm1hdGlvbiBkZXNjcmliZS1zdGFja3MgLS1zdGFjay1uYW1lIEl0ZW1zRXhhbXBsZSAtLXJlZ2lvbiB1cy13ZXN0LTFgIGNvbW1hbmQuCgpPbmNlIGJvdGggc3RhY2tzIGhhdmUgYmVlbiBjcmVhdGVkLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSBhbnkgZGF0YWJhc2UgY2hhbmdlcyBhcmUgc3luY2hlZCBiZXR3ZWVuIHJlZ2lvbnMuICBTaW5jZSB3ZSBjYW4ndCBzcGVjaWZ5IGdsb2JhbCB0YWJsZXMgaW4gdGhlIGNsb3VkZm9ybWF0aW9uIHRlbXBsYXRlIChhcyBvZiBGZWIgJzE5KSwgd2UganVzdCBuZWVkIHRvIGlzc3VlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBicmluZyB0aGUgZWFzdC93ZXN0IGRhdGFiYXNlcyB0b2dldGhlci4uLgoKYGBgc2J0c2hlbGwKYXdzIGR5bmFtb2RiIGNyZWF0ZS1nbG9iYWwtdGFibGUgXAogIC0tcmVnaW9uIHVzLWVhc3QtMSBcCiAgLS1yZXBsaWNhdGlvbi1ncm91cCBSZWdpb25OYW1lPXVzLWVhc3QtMSBSZWdpb25OYW1lPXVzLXdlc3QtMSBcCiAgLS1nbG9iYWwtdGFibGUtbmFtZSBJdGVtc0V4YW1wbGVUYWJsZQpgYGAKClRvIHZhbGlkYXRlIGl0IHdvcmtlZCwgY2hlY2sgb3V0IGh0dHBzOi8vY29uc29sZS5hd3MuYW1hem9uLmNvbS9keW5hbW9kYi9ob21lP3JlZ2lvbj11cy1lYXN0LTEjdGFibGVzOnNlbGVjdGVkPUl0ZW1zRXhhbXBsZVRhYmxlO3RhYj1nbG9iYWx0YWJsZXMKClRoZXJlIHlvdSBzaG91bGQgc2VlIGxpbmVzIGZvciBVUyBFYXN0ICYgV2VzdCBpbiB0aGUgR2xvYmFsIFRhYmxlIHJlZ2lvbnMgbGlzdC4KCiMjIyBNYWtpbmcgU3VyZSBJdCBXb3JrcwoKSW4gYWRkaXRpb24gdG8gd3JpdGluZyBhbiBPcGVuQVBJIHNwZWMsIHdlIGFsc28gd3JpdGUgYWNjZXB0YW5jZSB0ZXN0cyAoQkREKS4gIExldCdzIHNlZSBpZiB0aGUgYXBwbGljYXRpb24gd29ya3MgYnkgZXhlY3V0aW5nIHRob3NlIHRlc3RzLi4uCgoqIEZpcnN0IGxldCdzIGdldCB0aGUgdXJsJ3MuICBUaGUgZWFzaWVzdCB3YXkuLi4gCiAgYGBgc2J0c2hlbGwKICB7IFwKICBhd3MgY2xvdWRmb3JtYXRpb24gZGVzY3JpYmUtc3RhY2stcmVzb3VyY2VzIFwKICAgIC0tc3RhY2stbmFtZSBJdGVtc0V4YW1wbGUgXAogICAgLS1yZWdpb24gdXMtZWFzdC0xIFwKICAgIHwgZ3JlcCAtQyA1ICJBcGlHYXRld2F5OjpSZXN0QXBpIiBcCiAgICB8IGdyZXAgUGh5c2ljYWxSZXNvdXJjZUlkIFwKICAgIHwgc2VkICdzL14uKjogLy87IHMvXCIvL2c7IHMvXi9ob3N0IC0gaHR0cHM6XC9cLy87IHMvLC9cLmV4ZWN1dGUtYXBpXC51cy1lYXN0LTFcLmFtYXpvbmF3c1wuY29tXC9kZW1vL2cnIFwKICA7IFwKICBhd3MgY2xvdWRmb3JtYXRpb24gZGVzY3JpYmUtc3RhY2stcmVzb3VyY2VzIFwKICAgIC0tc3RhY2stbmFtZSBJdGVtc0V4YW1wbGUgXAogICAgLS1yZWdpb24gdXMtd2VzdC0xIFwKICAgIHwgZ3JlcCAtQyA1ICJBcGlHYXRld2F5OjpSZXN0QXBpIiBcCiAgICB8IGdyZXAgUGh5c2ljYWxSZXNvdXJjZUlkIFwKICAgIHwgc2VkICdzL14uKjogLy87IHMvXCIvL2c7IHMvXi9hbHRlcm5hdGl2ZSAtIGh0dHBzOlwvXC8vOyBzLywvXC5leGVjdXRlLWFwaVwudXMtd2VzdC0xXC5hbWF6b25hd3NcLmNvbVwvZGVtby9nJyBcCiAgfSBcCiAgfCBjYXQKICBgYGAKICA+IFlvdXIgb3V0cHV0IHNob3VsZCBsb29rIHNvbWV0aGluZyBsaWtlLi4uCiAgYGBgc2J0c2hlbGwKICBob3N0IC0gaHR0cHM6Ly91b2E5ajg0dWZoLmV4ZWN1dGUtYXBpLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tL2RlbW8vaXRlbXMKICBhbHRlcm5hdGl2ZSAtIGh0dHBzOi8vMzlnemZ5aGx2OS5leGVjdXRlLWFwaS51cy13ZXN0LTEuYW1hem9uYXdzLmNvbS9kZW1vL2l0ZW1zCiAgYGBgCiogTm93IG9wZW4gc3JjL3Rlc3QvcmVzb3VyY2VzL2FwcGxpY2F0aW9uLmNvbmYgYW5kIHRha2UgImhvc3QiIGZyb20gdGhlIGNvbW1hbmQgYWJvdmUgKGp1c3QgdGhlIFVSTCBwYXJ0KSBhbmQgcHV0IGl0IHdoZXJlIGl0IHNheXMgVVNFQVNUMSBiZWxvdy4gIFRoZW4gdGFrZSB0aGUgImFsdGVybmF0aXZlIiBvdXRwdXQgZnJvbSBhYm92ZSBhbmQgcmVwbGFjZSB0aGUgVVNXRVNUMSBsb2NhdGlvbiBhcyBzaG93biBiZWxvdy4KICBgYGBzY2FsYQogIGJkZGNvcmUgewogIAogICAgcmVxdWVzdCB7CiAgCiAgICAgIHNlcnZlciB7CiAgICAgICAgaG9zdCA9ICJVU0VBU1QxIgogICAgICB9CiAgCiAgICAgIHVzZXJBZ2VudCA9ICJBV1MtT1BFTkFQSS1TSE9XQ0FTRSIKICAKICAgIH0KICAKICAgIHZhcnMgewogIAogICAgICBBbHRlcm5hdGl2ZSB7CiAgCiAgICAgICAgUmVnaW9uID0gIlVTV0VTVDEiCiAgCiAgICAgIH0KICAKICAgIH0KICAKICB9CiAgYGBgCiogTm93IGZvciB0aGUgU01TIG5vdGlmaWNhdGlvbnMsIHdlJ2xsIGFkZCBvdXIgcGhvbmUuICBGaXJzdCwgd2UgbmVlZCB0byBrbm93IHRoZSBBUk4uLi4KICBgYGBzYnRzaGVsbAogIGF3cyBjbG91ZGZvcm1hdGlvbiBkZXNjcmliZS1zdGFjay1yZXNvdXJjZXMgXAogICAgLS1zdGFjay1uYW1lIEl0ZW1zRXhhbXBsZSBcCiAgICAtLXJlZ2lvbiB1cy1lYXN0LTEgXAogICAgfCBncmVwIC1DIDUgIkFXUzo6U05TOjpUb3BpYyIgXAogICAgfCBncmVwIFBoeXNpY2FsUmVzb3VyY2VJZCAgXAogICAgfCBzZWQgJ3MvXi4qOiAvLzsgcy9cIi8vZzsgcy8sLy9nOycgIAogIGBgYAogID4gWW91ciBvdXRwdXQgc2hvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2UuLi4KICBgYGBzYnRzaGVsbAogIGFybjphd3M6c25zOnVzLWVhc3QtMTpYWFhYWFhYWFhYWFg6SXRlbXNFeGFtcGxlLUNoYW5nZUV2ZW50VG9waWMtUTFXN0VEMUFFSFFLCiAgYGBgCiogTm93IHdlJ2xsIHJlZ2lzdGVyIHVzaW5nIHRoZSBhcm4gKHRoZSBvdXRwdXQgYWJvdmUpIGFuZCB5b3VyIGNlbGwgbnVtYmVyCiAgYGBgc2J0c2hlbGwKICBhd3Mgc25zIHN1YnNjcmliZSBcCiAgLS10b3BpYy1hcm4gPEFSTl9GUk9NX0FCT1ZFPiBcCiAgLS1yZWdpb24gdXMtZWFzdC0xIFwKICAtLXByb3RvY29sIHNtcyBcCiAgLS1ub3RpZmljYXRpb24tZW5kcG9pbnQgPFlPVVJfUEhPTkU+CiAgYGBgCiAgTk9URTogUGhvbmUgbmVlZHMgdG8gaW5jbHVkZSBhcmVhIGNvZGUgYW5kIHVzIGNvZGUgKGUuZy4gMTU1NTQ0NDQpCiogRmluYWxseSwgbGV0J3MgZXhlY3V0ZSB0aGUgdGVzdHMKICBgYGBzYnRzaGVsbAogIG12biB0ZXN0CiAgYGBgCiAgCklmIGV2ZXJ5dGhpbmcgbG9va3MgZ29vZCwgYWxsIHRoZSB0ZXN0cyB3aWxsIHBhc3QgYW5kIHlvdSBzaG91bGQgb2YgZ290IGEgYnVuY2ggb2YgdGV4dCBtZXNzYWdlcy4gIE5vdyB5b3UgY2FuIHNwaW4gdXAgcG9zdG1hbiBvciB5b3VyIGZhdm9yaXRlIHRvb2wgYW5kIHN0YXJ0IHBsYXlpbmcgd2l0aCB0aGUgYXZhaWxhYmxlIGVuZHBvaW50cy4KCj4gU2VlIFtUaGUgVGVzdCBIYXJuZXNzXSgjdGhlLXRlc3QtaGFybmVzcykgc2VjdGlvbiBmb3IgbW9yZSBvbiB3aGF0J3MgaGFwcGVuaW5nIGhlcmUgYW5kIGNoZWNrIG91dCB0aGUgY3VybC5sb2cgaW4gdGhlIGxvZ3MvIGRpcmVjdG9yeSB0byBncmFiIHNvbWUgdGVzdCBjdXJscyB0byBwbGF5IHdpdGguCgpZb3UgY2FuIGdldCBhIGh1bWFuIHJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIHNwZWMsIHRvIGJldHRlciB1bmRlcnN0YW5kIHdoYXQgeW91IGhhdmUgdG8gd29yayB3aXRoLCBieS4uLgoKKiBHb2luZyB0byBodHRwczovL2VkaXRvci5zd2FnZ2VyLmlvLwoqIENsaWNrIGZpbGUgLT4gIkltcG9ydCBGaWxlIgoqIFNlbGVjdCAiL3BhdGgvdG8vdGhpcy9zcmMvbWFpbi9yZXNvdXJjZXMvb3BlbmFwaS55YW1sIgoKVGhpcyB3aWxsIGdpdmUgeW91IGFuZCBpZGVhIG9mIHRoZSBtb2RlbCBhbmQgZW5kcG9pbnRzLiAgSW4gYWRkaXRpb24sIGNoZWNrb3V0IHRoZSBsb2dzLyBkaXJlY3RvcnkuICBJZiB5b3UgcmFuIHRoZSB0ZXN0cywgdGhlcmUgc2hvdWxkIGJlIGEgY3VybC5sb2cuICBZb3UgY2FuIGNvcHkgdGhvc2UgaW50byB5b3VyIGZhdm9yaXRlIHRvb2wgYXMgd2VsbCB0byBiZWdpbiBwbGF5aW5nLgoKPiBUbyByZW1vdmUgYWxsIHRoZSByZXNvdXJjZXMsIHNlZSBbQ2xlYW5pbmcgVXBdKCNjbGVhbmluZy11cCkuCgpNb3JlIGZ1biwgY2hlY2tvdXQgdGhlIHZhcmlvdXMgY29uc29sZXMgZm9yIGVhY2ggb2YgdGhlIHNlcnZpY2VzIHdlJ3ZlIGxhdW5jaGVkLi4uCgoqIGh0dHBzOi8vY29uc29sZS5hd3MuYW1hem9uLmNvbS9jbG91ZGZvcm1hdGlvbi9ob21lP3JlZ2lvbj11cy1lYXN0LTEjL3N0YWNrcyAoeW91IGNvdWxkIGRvIHVzLXdlc3QtMSB0b28pIC0gZ2l2ZXMgeW91IGEgdmlldyBvZiBhbGwgdGhlIHJlc291cmNlcyB3ZSBqdXN0IGNyZWF0ZWQgYW5kIHNvbWUgbWFuYWdlbWVudCBvdmVyIHRoZW0uCiogaHR0cHM6Ly9jb25zb2xlLmF3cy5hbWF6b24uY29tL2R5bmFtb2RiL2hvbWU/cmVnaW9uPXVzLWVhc3QtMSAtIGNoZWNrb3V0IHRoZSBnbG9iYWwgdGFibGUgeW91IGNyZWF0ZWQgYW5kIHlvdXIgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMKKiBodHRwczovL2NvbnNvbGUuYXdzLmFtYXpvbi5jb20vaWFtL2hvbWU/cmVnaW9uPXVzLWVhc3QtMSMvaG9tZSAtIHRoZSByb2xlcyBhbmQgcG9saWNpZXMgeW91J3ZlIGNyZWF0ZWQKKiBodHRwczovL2NvbnNvbGUuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2hvbWU/cmVnaW9uPXVzLWVhc3QtMSMvZnVuY3Rpb25zIC0gdGhlIG5vZGVqcyBlbmRwb2ludHMgeW91J3ZlIGxhdW5jaGVkCiogaHR0cHM6Ly9jb25zb2xlLmF3cy5hbWF6b24uY29tL3Nucy92Mi9ob21lP3JlZ2lvbj11cy1lYXN0LTEjL2hvbWUgLSB0aGUgU05TIHRvcGljIHlvdSBjcmVhdGVkCiogaHR0cHM6Ly9jb25zb2xlLmF3cy5hbWF6b24uY29tL2Nsb3Vkd2F0Y2gvaG9tZT9yZWdpb249dXMtZWFzdC0xIyAtIFRoZSBsb2dzIGFsbCB0aGVzZSBuZXcgc2VydmljZXMgYXJlIHByb2R1Y2luZy4KCiMjIyBIb3cgSXQgV29ya3MKClRoZSBtYWdpYyBzdGFydHMgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBtZW50aW9uZWQgd2F5IGJhY2sgaW4gdGhlIGJlZ2lubmluZy4gIExldCdzIGJlZ2luIHdpdGggdGhlc2UuLi4KCiMjIyMgc3JjL21haW4vcmVzb3VyY2VzL2F3cy1yZXNvdXJjZXMueWFtbAoKVGhpcyBmaWxlIGRlc2NyaWJlcyBhbmQgY29uZmlndXJlcyB0aGUgcmVzb3VyY2VzIG5lZWRlZCB0byBydW4geW91ciBuZXcgc2VydmljZSBpbiBBV1MgYW5kIGluY2x1ZGVzLi4uCgpgYGB5YW1sCiAgIyMgdGhlIGFjdHVhbCB0YWJsZQogIEl0ZW1zVGFibGU6CiAgICBUeXBlOiBBV1M6OkR5bmFtb0RCOjpUYWJsZQpgYGAKClRoZSBhYm92ZSBzdGFydHMgb2ZmIHRoZSBzZWN0aW9uIGZvciB0aGUgYXBwbGljYXRpb25zIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb24uICBJdC4uLgoKKiBDcmVhdGVzIGEgdGFibGUgLSBUaGlzIGlzIHRoZSAiSXRlbXNUYWJsZSIgc2VjdGlvbiBhbmQgdG8gbWFrZSBpdCBlYXNpZXIgZm9yIHVzIHRvIGNyZWF0ZSBhIGdsb2JhbCB0YWJsZSwgd2UgcHJvdmlkZSBhIG5hbWUgKGUuZy4gIkl0ZW1zRXhhbXBsZVRhYmxlIikuICBJZiB5b3Ugd2FudGVkIHRvIHJlcGVhdCB0aGlzIHNldHVwIGZvciBhbm90aGVyIGFwcGxpY2F0aW9uLCB0aGUgIlRhYmxlTmFtZSIgYXR0cmlidXRlIGlzIGFjdHVhbGx5IHRoZSBvbmx5IHRoaW5nIHlvdSB3b3VsZCBuZWVkIHRvIGNoYW5nZS4KKiBDcmVhdGVzIGEgc2NhbGluZyByb2xlIGFuZCBwb2xpY3kgLSBUaGUgIlNjYWxpbmdSb2xlIiBzZWN0aW9uIGFsbG93cyB0aGlzIHRhYmxlIHRvIGJlIG1hbmFnZWQgYnkgQVdTIEF1dG8tU2NhbGluZyBzZXJ2aWNlcyBmb3IgYm90aCB0aGUgREIgaXRzZWxmIGFuZCBpdCdzIGxvZ3MgLSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNTL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9hdXRvc2NhbGVfSUFNX3JvbGUuaHRtbAoqIENyZWF0ZXMgcmVhZCBhbmQgd3JpdGUgc2NhbGFibGUgdGFyZ2V0cyAtIFRoZSAiV3JpdGVDYXBhY2l0eVNjYWxhYmxlVGFyZ2V0IiwgIldyaXRlU2NhbGluZ1BvbGljeSIsICJSZWFkU2NhbGluZ1RhcmdldCIsIGFuZCAiUmVhZFNjYWxpbmdQb2xpY3kiIHNlY3Rpb25zIGFsbCB0ZWxsIEFXUyB0aGUgc2NhbGluZyBydWxlcyAoZS5nLiBob3cgYW5kIHdoZW4gdG8gc2NhbGUpIC0gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9BdXRvU2NhbGluZy5odG1sCiogQ3JlYXRlcyBhbiBldmVudCBzdHJlYW0gLSAiRGF0YVRhYmxlU3RyZWFtIiBjcmVhdGVzIGEgc3RyZWFtIGZvciB0YWJsZSBjaGFuZ2UgZXZlbnRzIGFuZCByZWdpc3RlcnMgb3VyIExhbWJkYSAiIiBhcyB0aGUgcmVjZWl2ZXIKCmBgYHlhbWwKICBMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGU6CiAgICBUeXBlOiBBV1M6OklBTTo6Um9sZQpgYGAKClRoZSBhYm92ZSBzdGFydHMgb2ZmIHRoZSBMYW1iZGEgY29uZmlndXJhdGlvbi4gIEhlcmUgd2UgY29uZmlndXJlIGFuZCBkZXBsb3kgdHdvIGxhbWJkYXMgdXNpbmcgaW5saW5lIE5vZGVKUyBjb2RlLiAgVGhpcyBzZWN0aW9uIGJyZWFrcyBkb3duIHRvLi4uCgoqIFRoZSBleGVjdXRpb24gcm9sZSAtICJMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUiIGdpdmVzIER5bmFtb0RCIGFjY2VzcyB0byB0aGUgbGFtYmRhcywgeW91IGNhbiB1c2UgdGhpcyB0byBjb25maWd1cmUgYWNjZXNzIHRvIGFueSBBV1Mgc2VydmljZSAtIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2ludHJvLXBlcm1pc3Npb24tbW9kZWwuaHRtbCNsYW1iZGEtaW50cm8tZXhlY3V0aW9uLXJvbGUKKiBBYmlsaXR5IHRvIHNhdmUgSlNPTiBhcyBhIHN0cnVjdHVyZWQgRHluYW1vREIgZG9jdW1lbnQgLSAiU2F2ZVRvRHluYW1vIiBpcyBhIGdlbmVyaWMgbGFtYmRhIHRoYXQgdGFrZXMgYW55IEpTT04gY29udmVydHMgaXQgdG8gYSBEeW5hbW9EQiBmcmllbmRseSBmb3JtYXQsIGFkZHMgYW4gSUQsIGFuZCB0aGVuIHNhdmVzIG9mZiB0byB0aGUgdGFibGUgY29uZmlndXJlZCBpbiB0aGUgIkl0ZW1zVGFibGUiIHNlY3Rpb24uCiogQWJpbGl0eSB0byBjb252ZXJ0IER5bmFtb0RCIEpTT04gdG8gbm9ybWFsaXplZCBKU09OIC0gIkR5bmFtb1RvSlNPTiIgaXMgYW5vdGhlciBnZW5lcmljIGxhbWJkYSwgdGhhdCBzaW1wbHkgY29udmVydHMgdGhlIER5bmFtb0RCIGZvcm1hdCBiYWNrIHRvIGEgSlNPTiBmb3JtYXQgaW4ga2VlcGluZyB3aXRoIHRoZSBBUEkgZGF0YSBtb2RlbC4KKiBBYmlsaXR5IHRvIHVwZGF0ZSBEeW5hbW9EQiAtICJEeW5hbW9KU09OVXBkYXRlIiwgdGhlIGxhc3Qgb2YgdGhlIGdlbmVyaWMgbGFtYmRhcywgY29udmVydHMgYSBKU09OIHJlcXVlc3QgaW50byBhbiB1cGRhdGUgc3RhdGVtZW50LgoqIEFiaWxpdHkgdG8gcmVjZWl2ZSBjaGFuZ2UgZXZlbnRzIGZyb20gZHluYW1vIC0gIkhhbmRsZUR5bmFtb0V2ZW50IiB0YWtlcyBEeW5hbW9EQiBjaGFuZ2UgZXZlbnRzIGFuZCBwdWJsaXNoZXMgbWVzc2FnZXMgdG8gU05TIGFib3V0IHdoYXQncyBoYXBwZW5lZC4KKiBGaW5hbGx5LCB0aGUgIkNoYW5nZUV2ZW50VG9waWMiIGlzIHRoZSB0b3BpYyB0aGF0IHRoZSAiSGFuZGxlRHluYW1vRXZlbnQiIHdpbGwgdXNlIHRvIHB1Ymxpc2ggaXQncyBtZXNzYWdlcy4KCmBgYHlhbWwKICBBUElHYXRld2F5Um9sZToKICAgIFR5cGU6IEFXUzo6SUFNOjpSb2xlCmBgYAoKVGhpcyBzZWN0aW9uIHNpbXBseSBwcm92aWRlcyB0aGUgQVBJIEdhdGV3YXkgcmlnaHRzIHRvIHVzZSBib3RoIER5bmFtb0RCIGFuZCBsYW1iZGEgZnVuY3Rpb25zIHNvIGl0IGNhbiBoYW5kbGUgcmVzcG9uc2VzIHRvIEFQSSByZXF1ZXN0cy4KCmBgYHlhbWwKICBSZXN0QVBJdjI6CiAgICBUeXBlOiBBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGkKYGBgCgpGaW5hbGx5LCB0aGUgYWJvdmUsIGlzIHRoZSBjb250YWluZXIgZm9yIHdoYXQgd2lsbCBiZSB0aGUgQVdTIEdhdGV3YXkgZGVwbG95bWVudC4gT3VyIE9wZW5BUEkgZG9jdW1lbnQgaXMgYXBwZW5kZWQgaGVyZSBhcyBwYXJ0IG9mIHRoZSBgbXZuIGNsZWFuIGNvbXBpbGUgZ2VuZXJhdGUtcmVzb3VyY2VzYCBjb21tYW5kLgoKIyMjIyBzcmMvbWFpbi9yZXNvdXJjZXMvb3BlbmFwaS55YW1sCgpOb3RoaW5nIHNwZWNpYWwgaGVyZS4gIElmIHlvdSBkb24ndCBrbm93IGFib3V0IE9wZW5BUEksIHdlIHJlY29tbWVuZCB5b3UgbGVhcm4gbW9yZSAtIGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8gLSBhbmQgY29tZSBiYWNrLgoKWW91IGNvdWxkIHJlcGxhY2UgdGhpcyBzcGVjaWZpY2F0aW9uIHdpdGggYW55LCBhcyBsb25nIGFzIGl0J3MgT3BlbkFQSSAzLnggYW5kIHlvdSBjb3VsZCBnZW5lcmF0ZSBhIENSVUQganVzdCBmb3IgaXQuIEJ5IGRlZmF1bHQsIHRoaXMgd2lsbCBoYW5kbGUgYW55IHZhbGlkYXRpb25zIHlvdSBkZXNjcmliZSB3aXRoIHRoZSBzcGVjLiAgSXQncyBwcmV0dHkgcG93ZXJmdWwgZm9yIG5vdCB3cml0aW5nIGFueSBjb2RlIQoKWW91IGNhbiBldmVuIHRha2UgdGhpcyBmdXJ0aGVyIGJ5IGVuYWJsaW5nIHRyYW5zYWN0aW9ucyBvbiBEeW5hbW9EQiAtIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vYmxvZ3MvYXdzL25ldy1hbWF6b24tZHluYW1vZGItdHJhbnNhY3Rpb25zLyAtIHdoZXJlIHlvdSBjYW4gY29uZmlndXJlIHRyYW5zYWN0aW9uYWwgdmFsaWRhdGlvbnMgbWFraW5nIGl0IGV2ZW4gbW9yZSBwb3dlcmZ1bCB3aXRob3V0IGEgbGluZSBvZiBjb2RlLgoKPiBOZWVkIHRvIGNhbGwgQVdTIHRvIGVuYWJsZSBmb3IgZ2xvYmFsIHRhYmxlcywgaWYgeW91IGRvbid0IGl0IHdvbid0IHdvcmsgOikKCiMjIyMgc3JjL21haW4vcmVzb3VyY2VzL2F3cy1leHRlbnNpb25zLnlhbWwKCk1vcmUgb2YgQVdTJyBzZWNyZXQgc2F1Y2UsIHRoaXMgbGV0J3MgdXMgZGVzY3JpYmUgaG93IHRoZSBlbmRwb2ludHMgaW50ZXJhY3Qgd2l0aCBBV1Mgb3Igb3RoZXIgc2VydmljZXMuICBUeXBpY2FsbHkgdGhpcyB3b3VsZCBiZSBpbiB0aGUgT3BlbkFQSSBzcGVjIGl0c2VsZiwgYnV0IGZvciByZWFkYWJpbGl0eSB3ZSBicm9rZSBpdCBvdXQgdG8gYSBzZXBhcmF0ZSBkb2N1bWVudCBhbmQgbWVyZ2UgaXQgd2l0aCB0aGUgc2FtZSBgbXZuIGNsZWFuIGNvbXBpbGUgZ2VuZXJhdGUtcmVzb3VyY2VzYCBjb21tYW5kIHRoYXQgbWVyZ2VzIHRoZSBPcGVuQVBJIHNwZWMgaW50byB0aGUgQVdTIFJlc291cmNlcyBkb2N1bWVudC4KCkluIHRoaXMgZG9jdW1lbnQgdGhlcmUgaXMgYSBtYXRjaGluZyBzZWN0aW9uIGZvciBlYWNoIGVuZHBvaW50LCB1c2luZyBzYW1lIGNhbm9uaWNhbCBzdHJ1Y3R1cmUsIGp1c3Qgd2l0aCBBV1Mgc3BlY2lmaWMgZXh0ZW5zaW9ucy4gIEZvciBlYWNoIG9wZXJhdGlvbiwgd2UgaGF2ZSBzb21lIGNvbmZpZ3VyYXRpb24uLi4KCioqR0VUIC9pdGVtL3tpZH0qKgoKYGBgeWFtbAogICAgICB4LWFtYXpvbi1hcGlnYXRld2F5LWludGVncmF0aW9uOgogICAgICAgIGNyZWRlbnRpYWxzOiAhR2V0QXR0IEFQSUdhdGV3YXlSb2xlLkFybgogICAgICAgIHVyaTogIVN1YiBhcm46YXdzOmFwaWdhdGV3YXk6JHtBV1M6OlJlZ2lvbn06bGFtYmRhOnBhdGgvMjAxNS0wMy0zMS9mdW5jdGlvbnMvJHtEeW5hbW9Ub0pTT04uQXJufS9pbnZvY2F0aW9ucwogICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHN0YXR1c0NvZGU6ICIyMDAiCiAgICAgICAgcGFzc3Rocm91Z2hCZWhhdmlvcjogIndoZW5fbm9fdGVtcGxhdGVzIgogICAgICAgIGh0dHBNZXRob2Q6ICJQT1NUIgogICAgICAgIHR5cGU6ICJhd3NfcHJveHkiCmBgYAoKVGhpcyBzZWN0aW9uIHRlbGxzIHRoYXQgYW55IGdldCByZXF1ZXN0IHNob3VsZCBiZSByb3V0ZWQgb3VyICJEeW5hbW9Ub0pTT04iIGRlc2NyaWJlZCBlYXJsaWVyLiAgQVBJIEdhdGV3YXkganVzdCBhY3RzIGFzIGEgcHJveHkgaGVyZSwgcGFzc2luZyB0aGUgcmVxdWVzdCB0byB0aGUgZnVuY3Rpb24gYW5kIHRoZSByZXNwb25zZSBiYWNrIHRvIHRoZSBjb25zdW1lci4KCioqREVMRVRFIC9pdGVtL3tpZH0qKgoKYGBgeWFtbAogICAgICB4LWFtYXpvbi1hcGlnYXRld2F5LWludGVncmF0aW9uOgogICAgICAgIGNyZWRlbnRpYWxzOiAhR2V0QXR0IEFQSUdhdGV3YXlSb2xlLkFybgogICAgICAgIHVyaTogIVN1YiAiYXJuOmF3czphcGlnYXRld2F5OiR7QVdTOjpSZWdpb259OmR5bmFtb2RiOmFjdGlvbi9EZWxldGVJdGVtIgogICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHN0YXR1c0NvZGU6ICIyMDAiCiAgICAgICAgICAgIHJlc3BvbnNlVGVtcGxhdGVzOgogICAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246IHwtCiAgICAgICAgICAgICAgICB7ICJpZCI6ICIkbWV0aG9kLnJlcXVlc3QucGF0aC5pZCIgfQogICAgICAgIHJlcXVlc3RUZW1wbGF0ZXM6CiAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOiAhU3ViIHwKICAgICAgICAgICAgewogICAgICAgICAgICAgICJUYWJsZU5hbWUiOiAiJHtJdGVtc1RhYmxlfSIsCiAgICAgICAgICAgICAgIktleSI6IHsKICAgICAgICAgICAgICAgICJpZCI6IHsKICAgICAgICAgICAgICAgICAgIlMiOiAiJGlucHV0LnBhcmFtcygnaWQnKSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICBwYXNzdGhyb3VnaEJlaGF2aW9yOiB3aGVuX25vX3RlbXBsYXRlcwogICAgICAgIGh0dHBNZXRob2Q6ICJQT1NUIgogICAgICAgIHR5cGU6IGF3cwpgYGAKClRoaXMgZW5kcG9pbnQgcHV0cyBhIGxpdHRsZSBtb3JlIG9udXMgb24gdGhlIEFQSSBHYXRld2F5LiAgSXQgdXNlcyBpdCdzIER5bmFtb0JEIHNlcnZpY2UgaW50ZWdyYXRpb24gdG8gc2VuZCBhIERFTEVURSByZXF1ZXN0IGRpcmVjdGx5IHRvIER5bmFtb0RCIHRoZW4gcmVzcG9uZCB3aXRoIElEIG9mIHRoZSBkZWxldGVkIGl0ZW0gYXMgY29uZmlybWF0aW9uLgoKKipQVVQgL2l0ZW0ve2lkfSoqCgpgYGB5YW1sCiAgICAgIHgtYW1hem9uLWFwaWdhdGV3YXktaW50ZWdyYXRpb246CiAgICAgICAgY3JlZGVudGlhbHM6ICFHZXRBdHQgQVBJR2F0ZXdheVJvbGUuQXJuCiAgICAgICAgdXJpOiAhU3ViIGFybjphd3M6YXBpZ2F0ZXdheToke0FXUzo6UmVnaW9ufTpsYW1iZGE6cGF0aC8yMDE1LTAzLTMxL2Z1bmN0aW9ucy8ke0R5bmFtb0pTT05VcGRhdGUuQXJufS9pbnZvY2F0aW9ucwogICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHN0YXR1c0NvZGU6ICIyMDAiCiAgICAgICAgcGFzc3Rocm91Z2hCZWhhdmlvcjogIndoZW5fbm9fdGVtcGxhdGVzIgogICAgICAgIGh0dHBNZXRob2Q6ICJQT1NUIgogICAgICAgIHR5cGU6ICJhd3NfcHJveHkiCmBgYAoKVGhlIGFib3ZlIHdvcmtzIGxpa2UgdGhlIEdFVCwgYnkgcHJveHlpbmcgdG8gIkR5bmFtb0pTT05VcGRhdGUiIGxhbWJkYSBhbmQgdGFraW5nIHRoZSBwYXRoIGFuZCB0aGUgYm9keSB0byBwZXJmb3JtIHRoZSB1cGRhdGUuCgoqKkdFVCAvaXRlbXMvKioKCmBgYHlhbWwKICAgICAgeC1hbWF6b24tYXBpZ2F0ZXdheS1pbnRlZ3JhdGlvbjoKICAgICAgICBjcmVkZW50aWFsczogIUdldEF0dCBBUElHYXRld2F5Um9sZS5Bcm4KICAgICAgICB1cmk6ICFTdWIgYXJuOmF3czphcGlnYXRld2F5OiR7QVdTOjpSZWdpb259OmxhbWJkYTpwYXRoLzIwMTUtMDMtMzEvZnVuY3Rpb25zLyR7RHluYW1vVG9KU09OLkFybn0vaW52b2NhdGlvbnMKICAgICAgICByZXNwb25zZXM6CiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBzdGF0dXNDb2RlOiAiMjAwIgogICAgICAgIHBhc3N0aHJvdWdoQmVoYXZpb3I6ICJ3aGVuX25vX3RlbXBsYXRlcyIKICAgICAgICBodHRwTWV0aG9kOiAiUE9TVCIKICAgICAgICB0eXBlOiAiYXdzX3Byb3h5IgpgYGAKCkxpa2UgR0VUIC9pdGVtcy97aWR9LCB0aGlzIG1ldGhvZCB3b3JrcyBhcyBhIHByb3h5IHRvIHRoZSAiRHluYW1vVG9KU09OIiBsYW1iZGEgc28gaXQgY2FuIHJldHVybiBhIGxpc3Qgb2YgcmVxdWVzdHMuCgoqKlBPU1QgL2l0ZW1zLyoqCgpgYGB5YW1sCiAgICAgIHgtYW1hem9uLWFwaWdhdGV3YXktcmVxdWVzdC12YWxpZGF0b3I6ICJWYWxpZGF0ZSBib2R5IgogICAgICB4LWFtYXpvbi1hcGlnYXRld2F5LWludGVncmF0aW9uOgogICAgICAgIGNyZWRlbnRpYWxzOiAhR2V0QXR0IEFQSUdhdGV3YXlSb2xlLkFybgogICAgICAgIHVyaTogIVN1YiBhcm46YXdzOmFwaWdhdGV3YXk6JHtBV1M6OlJlZ2lvbn06bGFtYmRhOnBhdGgvMjAxNS0wMy0zMS9mdW5jdGlvbnMvJHtTYXZlVG9EeW5hbW8uQXJufS9pbnZvY2F0aW9ucwogICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHN0YXR1c0NvZGU6ICIyMDAiCiAgICAgICAgcGFzc3Rocm91Z2hCZWhhdmlvcjogIndoZW5fbm9fdGVtcGxhdGVzIgogICAgICAgIGh0dHBNZXRob2Q6ICJQT1NUIgogICAgICAgIHR5cGU6ICJhd3NfcHJveHkiCmBgYAoKTGlrZSB0aGUgb3RoZXIgZW5kcG9pbnRzIHRoYXQgd29yayBhcyBwcm94aWVzLCB0aGUgUE9TVCBlbmRwb2ludCBkb2VzIGFzIHdlbGwuIFlvdSB3aWxsIG5vdGljZSBvbmUgZGlmZmVyZW5jZSBoZXJlLi4uCgpgYGB5YW1sCiAgICAgIHgtYW1hem9uLWFwaWdhdGV3YXktcmVxdWVzdC12YWxpZGF0b3I6ICJWYWxpZGF0ZSBib2R5IgpgYGAKClRoZSBhYm92ZSBhY3R1YWxseSB0ZWxscyB0aGUgQVBJIEdhdGV3YXkgdG8gdmFsaWRhdGUgdGhlIHJlcXVlc3QgcGF5bG9hZCBiZWZvcmUgcHJveHlpbmcgaXQuICBBUEkgR2F0ZXdheSB1c2VzIHRoZSBPcGVuQVBJIHNwZWMgZGVzY3JpcHRvcnMgKHJlcXVpcmVkLG1pbi9tYXgsYWxsb3dlZCxldGMuLi4pIHRvIHZhbGlkYXRlIHRoZSBwYXlsb2FkIGF1dG9tYXRpY2FsbHkuICBUaGlzIGlzIGdyZWF0IGlmIHlvdSdyZSBhY3R1YWxseSBkZWZpbmluZyB5b3VyIGZpZWxkIGxldmVsIHJlcXVpcmVtZW50cyBpbiB0aGUgc3BlYyBhbmQgaXMgc3RhbmRhcmQgKGUuZy4gTk9UIEFXUyBzcGVjaWZpYykgc28gdGhlIGRvY3VtZW50YXRpb24sIGNsaWVudCBsaWJyYXJpZXMgYW5kIG90aGVyIGFydGlmYWN0cyBnZW5lcmF0ZWQgd2lsbCBhbHNvIGluY2x1ZGUgdGhpcyBpbmZvcm1hdGlvbi4KCj4gQW1hem9uIEFQSSBHYXRld2F5IFNwZWNzIHNheSB0aGluZ3MgbGlrZSBwYXR0ZXJucywgZXhjbHVzaXZlTWluaW11bSBhbmQgb3RoZXIgT0FTIHByb3BlcnRpZXMgZG9uJ3Qgd29yaywgYnV0IGlmIHlvdSBsb29rIGF0IHRoZSB0ZXN0cywgeW91J2xsIHNlZSB0aGV5IGFjdHVhbGx5IGRvIQoKKipCcmluZ2luZyBJdCBUb2dldGhlcioqCgpXZSB1c2UgWUFNTCBiZWNhdXNlIGl0J3MgZWFzaWVyIHRvIHJlYWQgYW5kIGhhcyBsZXNzIG1hcmt1cCB0aGVuIHRoZSBKU09OIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50cy4gIFRvIG1ha2UgbWVyZ2luZyBlYXNpZXIsIGhvd2V2ZXIsIHdlIGNvbnZlcnQgdG8gSlNPTi4gIFRoaXMgaXMgd2h5IHdlIGhhdmUgdGhvc2UgYGNmbi1mbGlwYCBzdGF0ZW1lbnRzLiAgVGhlcmUgaXMgc29tZSBzZWNyZXQgc2F1Y2UgdGhlcmUgdGhhdCB3ZSBkb24ndCB3YW50IHRvIHRyeSB0byByZXBsaWNhdGUgb3Vyc2VsdmVzIHdoZW4gaXQgY29tZXMgdG8gSlNPTiA8LS0+IFlBTUwgY29udmVyc2lvbiBmb3IgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVzLgoKV2hlbiB3ZSBjb21iaW5lIHRoaXMsIHdpdGggb3VyIHNpbXBsZSBKQVZBIHByb2dyYW0gdGhhdCBtZXJnZXMgYWxsIHRoZSBkb2NzIGFzIG9uZSB3ZSBoYXZlIG91ciBmaW5hbCBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSB3aGljaCBkZXNjcmliZXMgYWxsIHJlc291cmNlcy4gIEFsbCB0aG9zZSBgYXdzIGNsb3VkZm9ybWF0aW9uIGNyZWF0ZS1zdGFja2AgY29tbWFuZHMgcmVhbGx5IGRvIGlzIHNlbmQgdGhhdCB0ZW1wbGF0ZSBvZmYgdG8gQVdTIGFuZCB0ZWxsbCBpdCB3aGF0IHJlZ2lvbiB0byBwdXNoIGl0IHRvby4KCiMjIyMgVGhlIFRlc3QgSGFybmVzcwoKVXNpbmcgdGhlIFtCREQgRm9yIEFsbF0oaHR0cHM6Ly9naXRodWIuY29tL0FjY2VudHVyZS9iZGQtZm9yLWFsbCkgdGVzdCBoYXJuZXNzIGZyb20gQWNjZW50dXJlLCAgd2UgY3JlYXRlZCBhIGZldyB0ZXN0IGNhc2VzIHRvIG1ha2Ugc3VyZSB3ZSB3ZXJlIHRydWx5IGNyb3NzLXJlZ2lvbiBhbmQgdGhhdCBzb21lIG9mIHRoZSBydWxlcyBhbmQgdmFsaWRhdGlvbnMgd2Ugc2V0IHVwIHRocm91Z2ggdGhlIE9BUyBTcGVjIHdlcmUgYWN0dWFsbHkgd29ya2luZy4gIAoKRm91bmQgaW4gW3NyYy90ZXN0L3Jlc291cmNlcy9mZWF0dXJlcy9dKHNyYy90ZXN0L3Jlc291cmNlcy9mZWF0dXJlcy8pLCB3ZSBoYXZlIHRlc3QgY2FzZXMgdGhhdCBjb3ZlciBpbnZhbGlkIHJlcXVlc3RzLCBjaGVja2luZyBmb3IgY3JlYXRlL3VwZGF0ZXMvZGVsZXRlcyBhdmFpbGFibGl0eSBjcm9zcyByZWdpb24gYW5kIG1vcmUuCgo+IFRyeSB3cml0aW5nIHlvdXIgb3duIHRlc3RzLCBsZWFybiB0aGUgZ3JhbW1hciBhbmQgb3RoZXIgZnVuY3Rpb25hbGl0eSBhdmFpbGFibGUgd2l0aCB0aGUgQkREIEZvciBBbGwgbGlicmFyeSBhdCAtIAoKSWYgeW91IGxvb2sgaW4gdGhlIGxvZ3MgZGlyZWN0b3J5IGFmdGVyIHRoZSB0ZXN0cyBhcmUgZXhlY3V0ZWQsIHlvdSdsbCBmaW5kIGEgImN1cmwubG9nIiwgd2hpY2ggaGFzIGFsbCB0aGUgdGVzdHMgbG9nZ2VkIGFzIGNVUkxzIHRoYXQgeW91IGNhbiBpbXBvcnQgaW50byB5b3VyIGZhdm9yaXRlIGFwcGxpY2F0aW9uIHRvIGRvIHNvbWUgZnVydGhlciB0ZXN0aW5nLgoKIyMjIFRha2luZyBpdCBGdXJ0aGVyCgpXaGF0IGlmIHdlIGRpZG4ndCB3YW50IGEgc2ltcGxlIE5vZGVKUyBsYW1iZGEgYmFja2luZyBvdXIgQVBJLCBidXQgaW5zdGVhZCB3YW50ZWQgYSBSZWFjdGl2ZSBKQVZBIGFwcGxpY2F0aW9uLiAgCgpUaGF0J3MgZWFzeSEgIEp1c3QgdHlwZS4uLgoKYGBgCm12biBjbGVhbiBzcHJpbmctYm9vdDpydW4gLVBvYXMKYGBgCgphbmQgd2hlbiB5b3Ugc2VlLi4uCgpgYGBzYnRzaGVsbAogIC4gICBfX19fICAgICAgICAgIF8gICAgICAgICAgICBfXyBfIF8KIC9cXCAvIF9fXydfIF9fIF8gXyhfKV8gX18gIF9fIF8gXCBcIFwgXAooICggKVxfX18gfCAnXyB8ICdffCB8ICdfIFwvIF9gIHwgXCBcIFwgXAogXFwvICBfX18pfCB8Xyl8IHwgfCB8IHwgfHwgKF98IHwgICkgKSApICkKICAnICB8X19fX3wgLl9ffF98IHxffF98IHxfXF9fLCB8IC8gLyAvIC8KID09PT09PT09PXxffD09PT09PT09PT09PT09fF9fXy89L18vXy9fLwogOjogU3ByaW5nIEJvb3QgOjogICAgICAgICh2Mi4xLjAuUkVMRUFTRSkKYGBgCgpHbyB0byBodHRwOi8vbG9jYWxob3N0OjgwODAgYW5kIGNoZWNrb3V0IHlvdXIgZG9jcyBhbmQgc29tZXdoYXQgZnVuY3Rpb25pbmcgbW9ja3MuCgojIyMjIFdoYXQgRGlkIFdlIEp1c3QgRG8/CgpUaGUgT3BlbkFQSVRvb2xzIHByb2plY3QgLSBodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzIC0gaGFzIGJ1aWx0IG9uIHdoYXQgdGhlIFNtYXJ0QmVhciAtIGh0dHBzOi8vc3dhZ2dlci5pby8gLSBkb25lIHRvIG1ha2Ugc29tZSBjb29sIHRvb2xzLiAgCgpUaGUgYC1Qb2FzYCBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBtdm4gY29tbWFuZCwgZXhlY3V0ZXMgYSBtYXZlbiBwbHVnaW4gdGhhdCBleHBvc2VzIHRoZSBPcGVuQVBJIEdlbmVyYXRvciBwcm9qZWN0IC0gaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvciAtIHdoaWNoIGFsbG93cyB5b3UgdG8gZ2VuZXJhdGUgY2xpZW50IGxpYnJhcmllcywgc2VydmVyIHN0dWJzLCBkb2N1bWVudGF0aW9uIGFuZCBtb3JlIGZvciBhIHZhcmlldHkgb2YgbGFuZ3VhZ2VzIGFuZCBwbGF0Zm9ybXMuCgpXZSBnZW5lcmF0ZWQgYSBTcHJpbmcgUmVhY3RvciBzaGVsbCwgdGhlIGNvZGUgZm9yIHdoaWNoIHlvdSBjYW4gZmluZCBhdCBbc3JjL21haW4vamF2YS9pby9naXRodWIvbWlrZXBhcmNld3NraS9kZW1vcy9hd3NvYXMvZ2VuZXJhdGVkXShzcmMvbWFpbi9qYXZhL2lvL2dpdGh1Yi9taWtlcGFyY2V3c2tpL2RlbW9zL2F3c29hcy9nZW5lcmF0ZWQpLiAgVGhlIHNoZWxsIHByZXR0eSBtdWNoIGNvbnRhaW5zIGFsbCB0aGUgcGx1bWJpbmcuICBBbGwgeW91IHJlYWxseSBuZWVkIHRvIGRvIGltcGxlbWVudCwgaXMuLi4KCiogQWRkIHNyYy9tYWluL2phdmEvaW8vZ2l0aHViL21pa2VwYXJjZXdza2kvZGVtb3MvYXdzb2FzL2dlbmVyYXRlZC9hcGkvSXRlbXNBcGlEZWxlZ2F0ZS5qYXZhIHRvIHRoZSAub3BlbmFwaS1nZW5lcmF0b3ItaWdub3JlIGZpbGUgKHRoaXMga2VlcHMgaXQgZnJvbSBnZXR0aW5nIG92ZXJ3cml0dGVuKQoqIFRoZW4gZWRpdCBJdGVtc0FwaURlbGVnYXRlIHRvIGltcGxlbWVudCB5b3VyIGJ1c2luZXNzIGxvZ2ljLgoKKipBc2lkZSoqCgpUaGVyZSBhcmUgYSBsb3Qgb2YgbGFuZ3VhZ2VzIHRvIGNob29zZSBmcm9tIC0gaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvciNPdmVydmlldyAtIGFuZCBieSBjaGFuZ2luZyB0aGUgZm9sbG93aW5nIGxpbmUgdG8gYmUgdGhlIGxhbmd1YWdlL2ZyYW1ld29yayBvZiB5b3VyIGNob2ljZS4uLgoKYGBgeG1sCjxnZW5lcmF0b3JOYW1lPnNwcmluZzwvZ2VuZXJhdG9yTmFtZT4KYGBgCgphbmQgdGhpcy4uLgoKYGBgeG1sCjxjb25maWdPcHRpb25zPgouLi4KPC9jb25maWdPcHRpb25zPgpgYGAKClRvIG1hdGNoIHRoZSBjb25maWcgZm9yIHlvdXIgbGFuZ3VhZ2UvZnJhbWV3b3JrIG9wdGlvbiwgeW91IGNvdWxkIGJ1aWxkIHRoZSBhcHAgaW4gYWxtb3N0IGFueSBsYW5ndWFnZSB5b3VyIHdhbnQuCiAgCiMjIENsZWFuaW5nIFVwCgpSZW1vdmUgdGhlIGdsb2JhbCB0YWJsZSBtYXBwaW5nLi4uCgpgYGBzYnRzaGVsbAphd3MgZHluYW1vZGIgdXBkYXRlLWdsb2JhbC10YWJsZSBcCiAgICAtLWdsb2JhbC10YWJsZS1uYW1lIEl0ZW1zRXhhbXBsZVRhYmxlIFwKICAgIC0tcmVwbGljYS11cGRhdGVzICdEZWxldGU9e1JlZ2lvbk5hbWU9dXMtZWFzdC0xLFJlZ2lvbk5hbWU9dXMtd2VzdC0xfScgXAogICAgLS1yZWdpb24gdXMtZWFzdC0xCmBgYAoKUmVtb3ZlIHRoZSBVUyBFYXN0IHN0YWNrLi4uCgpgYGBzYnRzaGVsbAphd3MgY2xvdWRmb3JtYXRpb24gZGVsZXRlLXN0YWNrIFwKICAtLXN0YWNrLW5hbWUgSXRlbXNFeGFtcGxlIFwKICAtLXJlZ2lvbiB1cy1lYXN0LTEKYGBgCgpSZW1vdmUgdGhlIFVTIFdlc3Qgc3RhY2suLi4KCmBgYHNidHNoZWxsCmF3cyBjbG91ZGZvcm1hdGlvbiBkZWxldGUtc3RhY2sgXAogIC0tc3RhY2stbmFtZSBJdGVtc0V4YW1wbGUgXAogIC0tcmVnaW9uIHVzLXdlc3QtMQpgYGA= readmeEtag: '"58f8c1b90f116c75f301810f526d21f0ce1dd0f1"' readmeLastModified: Tue, 24 Mar 2020 15:49:49 GMT repositoryId: 173618965 description: >- A massively scalable CRUD application built using AWS (CloudFormation) & OpenAPI 3.0 that focuses on configuration over code. created: '2019-03-03T19:17:31Z' updated: '2025-01-29T16:18:50Z' language: Gherkin archived: false stars: 6 watchers: 1 forks: 1 owner: mikeparcewski logo: https://avatars.githubusercontent.com/u/36518222?v=4 repoEtag: '"843c401a838cb16d6042ae6c6a399a05c71b72d36c70a7e6057d6e1122abbbf3"' repoLastModified: Wed, 29 Jan 2025 16:18:50 GMT foundInMaster: true category: Parsers id: e06d3b27ba90f952436feebcf0da6b60 - source: openapi3 tags repository: https://github.com/vanshg/weatherkit-openapi v3: true id: f84b7766e6993b11295307959969204a repositoryMetadata: base64Readme: >- IyBXZWF0aGVyS2l0LU9wZW5BUEkKT3BlbkFQSSBzcGVjIGZvciBBcHBsZSdzIFdlYXRoZXJLaXQKCiMjIFJlc291cmNlcwotIFRoZSAoY3VycmVudGx5LWluLUJldGEpIHNwZWM6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3dlYXRoZXJraXRyZXN0YXBpCi0gUHJpY2luZyBkZXRhaWxzOiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vd2VhdGhlcmtpdC9nZXQtc3RhcnRlZAotIFdXREMgd2Fsa3Rocm91Z2ggdmlkZW86IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS92aWRlb3MvcGxheS93d2RjMjAyMi8xMDAwMy8K readmeEtag: '"a34e288746a3a0fec5d92058e556662317dd2eb4"' readmeLastModified: Tue, 07 Jun 2022 23:53:05 GMT repositoryId: 500687327 description: OpenAPI spec for Apple's WeatherKit created: '2022-06-07T04:22:39Z' updated: '2024-07-16T09:38:31Z' language: null archived: false stars: 6 watchers: 1 forks: 2 owner: vanshg logo: https://avatars.githubusercontent.com/u/6133201?v=4 repoEtag: '"7d42a72887120575602ea708b812ff1e044a4723a4f833963e3a622e471898b0"' repoLastModified: Tue, 16 Jul 2024 09:38:31 GMT category: Testing foundInMaster: true - source: openapi3 tags repository: https://github.com/mermade/swaggerplusplus v3: true repositoryMetadata: base64Readme: >- IyBzd2FnZ2VycGx1c3BsdXMKCiMjIyBBIHByb3Bvc2FsIGZvciB0cmFuc2l0aW9uaW5nIGJldHdlZW4gU3dhZ2dlciAyLjAgYW5kIE9wZW5BUEkgMy4wLngKCiMjIyMgVmVyc2lvbiAxLjAuMC1yYzQKClRoZSBrZXkgd29yZHMgIk1VU1QiLCAiTVVTVCBOT1QiLCAiUkVRVUlSRUQiLCAiU0hBTEwiLCAiU0hBTEwgTk9UIiwgIlNIT1VMRCIsICJTSE9VTEQgTk9UIiwgIlJFQ09NTUVOREVEIiwgIk5PVCBSRUNPTU1FTkRFRCIsICJNQVkiLCBhbmQgIk9QVElPTkFMIiBpbiB0aGlzIGRvY3VtZW50IGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyBkZXNjcmliZWQgaW4gW0JDUCAxNF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2JjcDE0KSBbUkZDMjExOV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzIxMTkpIFtSRkM4MTc0XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjODE3NCkgd2hlbiwgYW5kIG9ubHkgd2hlbiwgdGhleSBhcHBlYXIgaW4gYWxsIGNhcGl0YWxzLCBhcyBzaG93biBoZXJlLgoKVG8gYWlkIHRoZSB0cmFuc2l0aW9uIGJldHdlZW4gU3dhZ2dlciAyLjAgYW5kIE9wZW5BUEkgMy4wLngsIGl0IGlzIHByb3Bvc2VkIHRvIGJhY2stcG9ydCB0aGUgZm9sbG93aW5nIGZlYXR1cmVzIGZyb20gdGhlIE9wZW5BUEkgMy4wLjAgc3BlY2lmaWNhdGlvbiAoY3VycmVudGx5IHZlcnNpb24gMy4wLjApIGFzIFtzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCN2ZW5kb3JFeHRlbnNpb25zKSAoZm9ybWVybHkga25vd24gYXMgdmVuZG9yIGV4dGVuc2lvbnMpLgoKVG9vbGluZyBNQVkgbWFrZSB1c2Ugb2YgdGhlc2UgZmVhdHVyZXMgbm93LCB3aXRoIG1pbmltYWwgd29yayByZXF1aXJlZCB0byBzdXBwb3J0IHRoZW0gaW4gT3BlbkFQSSAzLjAueCwgZGVmaW5pdGlvbiBhdXRob3JzIE1BWSBhbHNvIHVzZSB0aGVzZSBmZWF0dXJlcywga25vd2luZyB0aGVpciBBUEkgZGVmaW5pdGlvbiBjYW4gYmUgbG9zc2xlc3NseSBjb252ZXJ0ZWQgZnJvbSAqKnN3YWdnZXJwbHVzcGx1cyoqIHRvIE9wZW5BUEkgMy4wLnggYnkgYW55ICoqc3dhZ2dlcnBsdXNwbHVzKiotY29tcGF0aWJsZSBjb252ZXJ0ZXIuCgojIyBGZWF0dXJlcwoKUGF0aHxWZXJzaW9uIDMuMC54IE9iamVjdHxOZXcgRXh0ZW5zaW9ufFR5cGV8RGVzY3JpcHRpb24KLS0tfC0tLXwtLS18LS0tfC0tLXwKIy98c2VydmVyc3x4LXNlcnZlcnN8W1tTZXJ2ZXIgT2JqZWN0c10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQjc2VydmVyLW9iamVjdCldfFdoZW4gY29udmVydGluZyB0byBPcGVuQVBJIDMuMC54LCB0aGlzIGFycmF5IGlzIHVzZWQgaW4gcGxhY2Ugb2YgYW55IGBzZXJ2ZXJzYCBhcnJheSBjb252ZXJ0ZWQgZnJvbSBTd2FnZ2VyIDIuMCBtZXRhZGF0YQojL3BhdGhzL3tbUGF0aCBJdGVtXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8yLjAubWQjcGF0aC1pdGVtLW9iamVjdCl9fHNlcnZlcnN8eC1zZXJ2ZXJzfFtbU2VydmVyIE9iamVjdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kI3NlcnZlci1vYmplY3QpXXwKIy9wYXRocy97W1BhdGggSXRlbV0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMi4wLm1kI3BhdGgtaXRlbS1vYmplY3QpfS97W29wZXJhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMi4wLm1kI29wZXJhdGlvbi1vYmplY3QpfXxzZXJ2ZXJzfHgtc2VydmVyc3xbW1NlcnZlciBPYmplY3RzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMC5tZCNzZXJ2ZXItb2JqZWN0KV18CiMvcGF0aHMve1tQYXRoIEl0ZW1dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCNwYXRoLWl0ZW0tb2JqZWN0KX0ve1tPcGVyYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCNvcGVyYXRpb24tb2JqZWN0KX18dHJhY2V8eC10cmFjZXxbVjIgT3BlcmF0aW9uIE9iamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMi4wLm1kI29wZXJhdGlvbi1vYmplY3QpfFRoaXMgTVVTVCBiZSBhIFN3YWdnZXIgMi4wIE9wZXJhdGlvbiBPYmplY3QsIGl0IE1VU1QgYmUgdHJlYXRlZCBhcyBwZXIgYW55IG90aGVyIE9wZXJhdGlvbiBPYmplY3QsIGZvciB0aGUgYFRSQUNFYCBIVFRQIG1ldGhvZAojL3BhdGhzL3tbUGF0aCBJdGVtXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8yLjAubWQjcGF0aC1pdGVtLW9iamVjdCl9fHN1bW1hcnl8eC1zdW1tYXJ5fFN0cmluZ3xBbHNvIGFzIHBlciBbQXBpYXJ5IGV4dGVuc2lvbl0oaHR0cHM6Ly9oZWxwLmFwaWFyeS5pby9hcGlfMTAxL3N3YWdnZXItZXh0ZW5zaW9ucy8jeC1zdW1tYXJ5LWFuZC14LWRlc2NyaXB0aW9uKQojL3BhdGhzL3tbUGF0aCBJdGVtXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8yLjAubWQjcGF0aC1pdGVtLW9iamVjdCl9fGRlc2NyaXB0aW9ufHgtZGVzY3JpcHRpb258U3RyaW5nfEFsc28gYXMgcGVyIFtBcGlhcnkgZXh0ZW5zaW9uXShodHRwczovL2hlbHAuYXBpYXJ5LmlvL2FwaV8xMDEvc3dhZ2dlci1leHRlbnNpb25zLyN4LXN1bW1hcnktYW5kLXgtZGVzY3JpcHRpb24pCiMvW3BhcmFtZXRlcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCNwYXJhbWV0ZXJzLWRlZmluaXRpb25zLW9iamVjdCkgKipPUioqICMvcGF0aHMve1tQYXRoIEl0ZW1dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCNwYXRoLWl0ZW0tb2JqZWN0KX0vcGFyYW1ldGVycyAqKk9SKiogIy9wYXRocy97W1BhdGggSXRlbV0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMi4wLm1kI3BhdGgtaXRlbS1vYmplY3QpfS97W09wZXJhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMi4wLm1kI29wZXJhdGlvbi1vYmplY3QpfS9wYXJhbWV0ZXJzfGRlcHJlY2F0ZWR8eC1kZXByZWNhdGVkfEJvb2xlYW58SW5kaWNhdGVzIHRoZSBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBhbmQgU0hPVUxEIGJlIHRyYW5zaXRpb25lZCBvdXQgb2YgdXNlCiMvcGF0aHMve1tQYXRoIEl0ZW1dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCNwYXRoLWl0ZW0tb2JqZWN0KX0vW3tPcGVyYXRpb259XShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8yLjAubWQjb3BlcmF0aW9uLW9iamVjdCl8Y2FsbGJhY2tzfHgtY2FsbGJhY2tzfFtbQ2FsbGJhY2sgT2JqZWN0c10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQjc2VydmVyLW9iamVjdCldfApcKiB3aXRoaW4gW1NjaGVtYSBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCNzY2hlbWEtb2JqZWN0KXxhbnlPZnx4LWFueU9mfFtbU2NoZW1hIE9iamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQjc2NoZW1hT2JqZWN0KV18U2NoZW1hIE1VU1QgYmUgZXh0cmFjdGVkIGFuZCBwb3N0LXByb2Nlc3NlZCBiZWZvcmUgYmVpbmcgdXNlZCBmb3IgdmFsaWRhdGlvbgpcKiB3aXRoaW4gW1NjaGVtYSBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCNzY2hlbWEtb2JqZWN0KXxvbmVPZnx4LW9uZU9mfFtbU2NoZW1hIE9iamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQjc2NoZW1hT2JqZWN0KV18U2NoZW1hIE1VU1QgYmUgZXh0cmFjdGVkIGFuZCBwb3N0LXByb2Nlc3NlZCBiZWZvcmUgYmVpbmcgdXNlZCBmb3IgdmFsaWRhdGlvbgpcKiB3aXRoaW4gW1NjaGVtYSBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCNzY2hlbWEtb2JqZWN0KXxub3R8eC1ub3R8W1NjaGVtYSBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kI3NjaGVtYU9iamVjdCl8U2NoZW1hIE1VU1QgYmUgZXh0cmFjdGVkIGFuZCBwb3N0LXByb2Nlc3NlZCBiZWZvcmUgYmVpbmcgdXNlZCBmb3IgdmFsaWRhdGlvbgpcKiB3aXRoaW4gW1NjaGVtYSBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCNzY2hlbWEtb2JqZWN0KXxyZXF1aXJlZHx4LXJlcXVpcmVkfEFycmF5fFdoZXJlIGEgcHJvcGVydHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGByZXF1aXJlZGAgZHVlIHRvIHVzZSBvZiBgeC1hbnlPZmAsIGB4LW9uZU9mYCBvciBgeC1ub3RgLCBjb252ZXJ0ZXJzIE1VU1QgbWVyZ2UgdGhlc2UgYXJyYXlzIHdoZW4gY29udmVydGluZyBmcm9tICoqc3dhZ2dlcnBsdXNwbHVzKiogdG8gT3BlbkFQSSAzLjAueC4gV2hlbiBhIGNvbnZlcnRlciBjb252ZXJ0cyBmcm9tIDMuMC54IHRvICoqc3dhZ2dlcnBsdXNwbHVzKiogaXQgTVVTVCByZW1vdmUgYW55IGByZXF1aXJlZGAgcHJvcGVydGllcyBoaWRkZW4gYnkgYHgtYW55T2ZgLCBgeC1vbmVPZmAgb3IgYHgtbm90YCBhbmQgbW92ZSB0aGVtIGludG8gdGhpcyBhcnJheS4KXCogd2l0aGluIFtTY2hlbWEgT2JqZWN0XShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8yLjAubWQjc2NoZW1hLW9iamVjdCl8bnVsbGFibGV8eC1udWxsYWJsZXxCb29sZWFufEluZGljYXRlcyB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBpcyBudWxsYWJsZSBvciBub3QuClwqIHdpdGhpbiBbU2NoZW1hIE9iamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMi4wLm1kI3NjaGVtYS1vYmplY3QpfGRpc2NyaW1pbmF0b3J8eC1kaXNjcmltaW5hdG9yfFtEaXNjcmltaW5hdG9yIE9iamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQjZGlzY3JpbWluYXRvci1vYmplY3QpfEEgdmVyc2lvbiAzLjAueCBgZGlzY3JpbWluYXRvciBvYmplY3RgIHRvIHJlcGxhY2UgdGhlIHZlcnNpb24gMi4wIGBkaXNjcmltaW5hdG9yYCBwcm9wZXJ0eS4KXCogd2l0aGluIFtSZXNwb25zZSBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCNyZXNwb25zZS1vYmplY3QpfGxpbmtzfHgtbGlua3N8TWFwIHtbTGluayBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kI2xpbmstb2JqZWN0KX18TGlua3Mgb3IgcmVmZXJlbmNlcyB0byByZXVzYWJsZSBMaW5rIE9iamVjdHMKIy98Y29tcG9uZW50cy9saW5rc3x4LWxpbmtzfE1hcCB7W0xpbmsgT2JqZWN0XShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMC5tZCNsaW5rLW9iamVjdCl9fENvbnRhaW5zIHJldXNhYmxlIExpbmsgT2JqZWN0cwojL3xjb21wb25lbnRzL2NhbGxiYWNrc3x4LWNhbGxiYWNrc3xNYXAge1tDYWxsYmFjayBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kI2NhbGxiYWNrLW9iamVjdCl9fENvbnRhaW5zIHJldXNhYmxlIENhbGxiYWNrIE9iamVjdHMKCiMjIENvbnZlcnNpb24KCkNvbnZlcnRlcnMgTVVTVCB2YWxpZGF0ZSB0aGUgc3BlY2lmaWNhdGlvbiBleHRlbnNpb25zIGFyZSBvZiB0aGUgZXhwZWN0ZWQgdHlwZSwgYW5kIHRoYXQgbWFuZGF0b3J5IHByb3BlcnRpZXMgKGlmIGFueSkgYXJlIHByZXNlbnQuIEZhaWxpbmcgdGhhdCwgdGhleSBNVVNUIGxlYXZlIHRoZSBzcGVjaWZpY2F0aW9uIGV4dGVuc2lvbiB1bmNoYW5nZWQuCgojIyBzd2FnZ2VycGx1c3BsdXMgVG9vbHMKCiogW0NvbnZlcnRlci92YWxpZGF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9tZXJtYWRlL3N3YWdnZXIyb3BlbmFwaSkKKiBbUmViaWxseSBSZWRvY10oaHR0cHM6Ly9naXRodWIuY29tL1JlYmlsbHkvUmVEb2MpIC0gc3VwcG9ydHMgYSBbc3Vic2V0XShodHRwczovL2dpdGh1Yi5jb20vUmViaWxseS9SZURvYy9ibG9iL21hc3Rlci9kb2NzL3JlZG9jLXZlbmRvci1leHRlbnNpb25zLm1kKSBvZiAqKnN3YWdnZXJwbHVzcGx1cyoqCgojIyBzd2FnZ2VycGx1c3BsdXMgaW4gdGhlIHdpbGQKCltaYXBwaXRpIEFQSV0oaHR0cDovL3phcHBpdGkuY29tL2FwaS96YXBwaXRpLXBsYXllci00ay9zd2FnZ2VyLykK readmeEtag: '"a48c89f8924eb0e30ee63330a6f8d4185889f09c"' readmeLastModified: Thu, 28 Jun 2018 12:29:25 GMT repositoryId: 86082996 description: A proposal for transitioning between Swagger 2.0 and OpenAPI 3.0.x created: '2017-03-24T15:28:57Z' updated: '2025-07-06T22:14:13Z' language: null archived: false stars: 7 watchers: 3 forks: 0 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: Unlicense repoEtag: '"a418c11ce8ccc39f1409a32c4bf3358e1ff9168b7d951deeae3d00397219a584"' repoLastModified: Sun, 06 Jul 2025 22:14:13 GMT foundInMaster: true category: Parsers id: 0cf881514386d8ff2c26cf09e3967184 - source: - openapi3 tags - openapi31 tags repository: https://github.com/apiaddicts/openapi2soapui v3: true v3_1: true id: 9d4c1981e20f0c421731b1a708ab85cd repositoryMetadata: base64Readme: >- CiMg8J+boO+4jyBPcGVuQVBJMlNvYXBVSSAhW1JlbGVhc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcmVsZWFzZS0wLjEuMC1wdXJwbGUpICFbU3dhZ2dlcl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS8tc29hcC0lMjNDbG9qdXJlP3N0eWxlPWZsYXQmbG9nbz1zd2FnZ2VyJmxvZ29Db2xvcj13aGl0ZSkgIVtKYXZhXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2phdmEtJTIzRUQ4QjAwLnN2Zz9zdHlsZT1mbGF0JmxvZ289b3BlbmpkayZsb2dvQ29sb3I9d2hpdGUpICBbIVtMaWNlbnNlOiBMR1BMIHYzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTEdQTF92My1ibHVlLnN2ZyldKGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjApIAoKW0FQSV0oLi9zcmMvbWFpbi9yZXNvdXJjZXMvc3RhdGljL2FwaS55YW1sKSB0byBnZW5lcmF0ZSBhIFNvYXBVSSBwcm9qZWN0IGZyb20gYW4gT3BlbkFQSSBTcGVjaWZpY2F0aW9uIChma2EgU3dhZ2dlciBTcGVjaWZpY2F0aW9uKQoKR2l2ZW4gYW4gT3BlbkFQSSBTcGVjaWZpY2F0aW9uLCBlaXRoZXIgdjIgb3IgdjMsIGEgU29hcFVJIHByb2plY3QgaXMgZ2VuZXJhdGVkIHdpdGggdGhlIF9yZXF1ZXN0c18gZm9yIGVhY2ggcmVzb3VyY2Ugb3BlcmF0aW9uIGFuZCBhIF90ZXN0IHN1aXRlXy4gVGhlIHJlc3BvbnNlIGlzIHRoZSBjb250ZW50IG9mIHRoZSBTb2FwVUkgcHJvamVjdCBpbiBYTUwgZm9ybWF0IHRvIHNhdmUgYXMgZmlsZSBhbmQgaW1wb3J0IGludG8gdGhlIFNvYXBVSSBhcHBsaWNhdGlvbi4KCiMjIyBUaGlzIHJlcG9zaXRvcnkgaXMgaW50ZW5kZWQgZm9yIDpvY3RvY2F0OiAqKmNvbW11bml0eSoqIHVzZSwgaXQgY2FuIGJlIG1vZGlmaWVkIGFuZCBhZGFwdGVkIHdpdGhvdXQgY29tbWVyY2lhbCB1c2UuIElmIHlvdSBuZWVkIGEgdmVyc2lvbiwgc3VwcG9ydCBvciBoZWxwIGZvciB5b3VyICoqZW50ZXJwcmlzZSoqIG9yIHByb2plY3QsIHBsZWFzZSBjb250YWN0IHVzIPCfk6cgZGV2cmVsQGFwaWFkZGljdHMub3JnCgpbIVtUd2l0dGVyXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1R3aXR0ZXItJTIzMDAwMDAwLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289eCZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL3R3aXR0ZXIuY29tL0FQSUFkZGljdHMpIApbIVtEaXNjb3JkXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0Rpc2NvcmQtJTIzNTg2NUYyLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289ZGlzY29yZCZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL2Rpc2NvcmQuZ2cvWmRiR3FNQll5OCkKWyFbTGlua2VkSW5dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGlua2VkaW4tJTIzMDA3N0I1LnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289bGlua2VkaW4mbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbXBhbnkvYXBpYWRkaWN0cy8pClshW0ZhY2Vib29rXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0ZhY2Vib29rLSUyMzE4NzdGMi5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPUZhY2Vib29rJmxvZ29Db2xvcj13aGl0ZSldKGh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9hcGlhZGRpY3RzKQpbIVtZb3VUdWJlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1lvdVR1YmUtJTIzRkYwMDAwLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289WW91VHViZSZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9AQVBJQWRkaWN0c2xtYW9vKQoKIyDwn5mMIEpvaW4gdGhlICoqT3BlbkFQSTJTb2FwVUkqKiBBZG9wdGVycyBsaXN0IArwn5OiIElmIE9wZW5BUEkyU29hcFVJIGlzIHBhcnQgb2YgeW91ciBvcmdhbml6YXRpb24ncyB0b29sa2l0LCB3ZSBraW5kbHkgZW5jb3VyYWdlIHlvdSB0byBpbmNsdWRlIHlvdXIgY29tcGFueSdzIG5hbWUgaW4gb3VyIEFkb3B0ZXJzIGxpc3QuIPCfmY8gVGhpcyBub3Qgb25seSBzaWduaWZpY2FudGx5IGJvb3N0cyB0aGUgcHJvamVjdCdzIHZpc2liaWxpdHkgYW5kIHJlcHV0YXRpb24gYnV0IGFsc28gcmVwcmVzZW50cyBhIHNtYWxsIHlldCBpbXBhY3RmdWwgd2F5IHRvIGdpdmUgYmFjayB0byB0aGUgcHJvamVjdC4KCnwgT3JnYW5pemF0aW9uICB8IERlc2NyaXB0aW9uIG9mIFVzZSAvIFJlZmVyZW5jIHwKfC0tLXwtLS18CnwgIFtDbG91ZEFwcGldKGh0dHBzOi8vY2xvdWRhcHBpLm5ldC8pICB8IEFwaWZpY2F0aW9uIGFuZCBnZW5lcmF0aW9uIG9mIG1pY3Jvc2VydmljZXMgfAp8IFtSU0ldKGh0dHBzOi8vd3d3LnJ1cmFsc2VydmljaW9zaW5mb3JtYXRpY29zLmNvbS8pICB8IEdlbmVyYXRpb24gb2YgbWljcm9zZXJ2aWNlcyAgfAoKIyDwn5Gp8J+PveKAjfCfkrsgIENvbnRyaWJ1dGUgdG8gQXBpQWRkaWN0cyAKCldlJ3JlIGFuIGluY2x1c2l2ZSBhbmQgb3BlbiBjb21tdW5pdHksIHdlbGNvbWluZyB5b3UgdG8gam9pbiBvdXIgZWZmb3J0IHRvIGVuaGFuY2UgQXBpQWRkaWN0cywgYW5kIHdlJ3JlIGV4Y2l0ZWQgdG8gcHJpb3JpdGl6ZSB0YXNrcyBiYXNlZCBvbiBjb21tdW5pdHkgaW5wdXQsIGludml0aW5nIHlvdSB0byByZXZpZXcgYW5kIGNvbGxhYm9yYXRlIHRocm91Z2ggb3VyIEdpdEh1YiBpc3N1ZSB0cmFja2VyLgoKRmVlbCBmcmVlIHRvIGRyb3AgYnkgYW5kIGdyZWV0IHVzIG9uIG91ciBHaXRIdWIgZGlzY3Vzc2lvbiBvciBEaXNjb3JkIGNoYXQuIFlvdSBjYW4gYWxzbyBzaG93IHlvdXIgc3VwcG9ydCBieSBnaXZpbmcgdXMgc29tZSBHaXRIdWIgc3RhcnMg4q2Q77iPLCBvciBieSBmb2xsb3dpbmcgdXMgb24gVHdpdHRlciwgTGlua2VkSW4sIGFuZCBzdWJzY3JpYmluZyB0byBvdXIgWW91VHViZSBjaGFubmVsISDwn5qACgpbIVsiQnV5IE1lIEEgQ29mZmVlIl0oaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9hc3NldHMvaW1nL2N1c3RvbV9pbWFnZXMvb3JhbmdlX2ltZy5wbmcpXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2FwaWFkZGljdHMpCgojIOKame+4jyBGdW5jdGlvbmFsaXRpZXMKCltIZXJlXSguL3NyYy9tYWluL3Jlc291cmNlcy9zdGF0aWMvYXBpLnlhbWwpIHlvdSBjYW4gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgdGhlIEFQSSBTd2FnZ2VyIHRvIFNvYXBVSQoKLSBCYXNlNjQgRGVjb2Rpbmcgb2YgT3BlbiBBUEkgU3BlY2lmaWNhdGlvbiBDb250ZW50Ci0gUGFyc2UgT3BlbiBBUEkgU3BlY2lmaWNhdGlvbiBDb250ZW50IGludG8gc3dhZ2dlci1jb3JlIHJlcHJlc2VudGF0aW9uIGFzIEphdmEgUE9KTwotIENyZWF0ZSBTb2FwVUkgUHJvamVjdAogIC0gQWRkIE9BdXRoIDIuMCBQcm9maWxlcyB0byBTb2FwVUkgUHJvamVjdAogIC0gQWRkIG5ldyBSRVNUIFNlcnZpY2UgdG8gU29hcFVJIFByb2plY3QKICAgIC0gQWRkIEVuZHBvaW50cyB0byBSRVNUIFNlcnZpY2UKICAgIC0gU2V0IGJhc2VQYXRoIHRvIFJFU1QgU2VydmljZQogICAgLSBBZGQgUmVzb3VyY2VzIChQYXRocykgdG8gUkVTVCBTZXJ2aWNlCiAgICAgIC0gQWRkIE1ldGhvZHMgKFZlcmJzIC8gT3BlcmF0aW9ucykgdG8gZWFjaCBSZXNvdXJjZQogICAgICAgIC0gU2V0IFJFU1QgUmVxdWVzdCB0byBlYWNoIE1ldGhvZAogICAgICAgICAgLSBTZXQgQ3JlZGVudGlhbHMgKE9BdXRoIDIuMCBQcm9maWxlKQogICAgICAgICAgLSBTZXQgUGFyYW1ldGVycyBleGFtcGxlcyB0byBSRVNUIFJlcXVlc3QKICAgICAgICAgIC0gU2V0IFJlcXVlc3QgQm9keSBleGFtcGxlIHRvIFJFU1QgUmVxdWVzdAogICAgICAgICAgLSBTZXQgQ3VzdG9tIEhlYWRlcnMgdG8gUkVTVCBSZXF1ZXN0CiAgLSBBZGQgbmV3IFRlc3RTdWl0ZXMgdG8gU29hcFVJIFByb2plY3QgZm9yIGVhY2ggTWV0aG9kCiAgICAtIEFkZCBUZXN0Q2FzZXMgdG8gVGVzdFN1aXRlCiAgICAgIC0gQWRkIEV4ZWN1dGlvbiBUZXN0IFN0ZXAgKFJFU1QgUmVxdWVzdCkKCk5vbWVuY2xhdHVyZSB1c2VkOgotIFNvYXBVSSBQcm9qZWN0OiB7YXBpTmFtZX1cX3thcGlWZXJzaW9ufQotIFJFU1QgU2VydmljZToge2FwaU5hbWV9Ci0gUmVzb3VyY2U6IHtwYXRofQotIE1ldGhvZDoge2h0dHBNZXRob2RJblVwcGVyY2FzZX0KLSBSZXF1ZXN0OiB7ZGVmYXVsdFJlcXVlc3ROYW1lfQotIFRlc3QgU3VpdGU6IHtwYXRofVxfe2h0dHBNZXRob2RJblVwcGVyY2FzZX1cX1Rlc3RTdWl0ZQotIFRlc3QgQ2FzZSAoRGVmYXVsdCk6IFN1Y2Nlc3NcX1Rlc3RDYXNlCi0gVGVzdCBDYXNlOiB7dGVzdENhc2VOYW1lfVxfVGVzdENhc2UKLSBUZXN0IFN0ZXA6IEV4ZWN1dGlvblxfe2h0dHBNZXRob2RJblVwcGVyY2FzZX1cX1Rlc3RTdGVwCgpUaGUgdmFyaWFibGVzIGFyZSBvYnRhaW5lZCBmcm9tOgotIGFwaU5hbWU6IHByb3BlcnR5IGFwaU5hbWUgb2YgcmVxdWVzdCBib2R5Ci0gYXBpVmVyc2lvbjogdmVyc2lvbiBkZWZpbmVkIGluIHRoZSAnaW5mbycgc2VjdGlvbiBvZiB0aGUgT3BlbkFQSSBTcGVjCi0gcGF0aDogZWFjaCBwYXRoIGRlZmluZWQgaW4gdGhlIE9wZW5BUEkgU3BlYwotIGh0dHBNZXRob2RJblVwcGVyY2FzZTogZWFjaCBIVFRQIG1ldGhvZHMgb2YgcGF0aHMgZGVmaW5lZCBpbiBPcGVuQVBJIFNwZWMKLSB0ZXN0Q2FzZU5hbWU6IGVhY2ggdGVzdCBjYXNlIG5hbWUgZGVmaW5lZCBpbiB0aGUgcHJvcGVydHkgdGVzdENhc2VOYW1lcyBvZiByZXF1ZXN0IGJvZHkKCiMjIFRlY2hub2xvZ3kgc3RhY2sKIyMjIE92ZXJ2aWV3Cgp8VGVjaG5vbG9neSAgICAgICAgICAgICAgfERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfENvcmUgRnJhbWV3b3JrICAgICAgICAgIHxTcHJpbmcgQm9vdCAyICAgICAgICAgICAgICAgfAoKIyMjIFNlcnZlciAtIEJhY2tlbmQKCnxUZWNobm9sb2d5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8RGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfFtKREsgMTFdKGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2VuL2phdmEvamF2YXNlLzExLykgICAgICAgICAgICAgICAgICAgICAgIHxKYXZhIERldmVsb3BtZW50IEtpdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnxbU3ByaW5nIEJvb3QgMl0oaHR0cHM6Ly9zcHJpbmcuaW8vcHJvamVjdHMvc3ByaW5nLWJvb3QpICB8RnJhbWV3b3JrIHRvIGVhc2UgdGhlIGJvb3RzdHJhcHBpbmcgYW5kIGRldmVsb3BtZW50IG9mIG5ldyBTcHJpbmcgQXBwbGljYXRpb25zfAp8W01hdmVuIDNdKGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZykgICAgICAgICAgICAgICAgICAgICAgfERlcGVuZGVuY3kgTWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfFtUb21jYXQgOV0oaHR0cHM6Ly90b21jYXQuYXBhY2hlLm9yZykgICAgICAgICAgICAgICAgICAgIHxTZXJ2ZXIgZGVwbG95IFdBUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgojIyMgIExpYnJhcmllcyBhbmQgUGx1Z2lucwp8VGVjaG5vbG9neSAgICAgICAgICAgICAgfERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfFtMb21ib2tdKGh0dHBzOi8vcHJvamVjdGxvbWJvay5vcmcvKSB8TmV2ZXIgd3JpdGUgYW5vdGhlciBnZXR0ZXIgb3IgZXF1YWxzIG1ldGhvZCBhZ2Fpbiwgd2l0aCBvbmUgYW5ub3RhdGlvbiB5b3VyIGNsYXNzIGhhcyBhIGZ1bGx5IGZlYXR1cmVkIGJ1aWxkZXIsIEF1dG9tYXRlIHlvdXIgbG9nZ2luZyB2YXJpYWJsZXMsIGFuZCBtdWNoIG1vcmUuICAgICAgICAgICAgICB8CnxbSGliZXJuYXRlIFZhbGlkYXRvcl0oaHR0cHM6Ly9oaWJlcm5hdGUub3JnL3ZhbGlkYXRvci8pfEV4cHJlc3MgdmFsaWRhdGlvbiBydWxlcyBpbiBhIHN0YW5kYXJkaXplZCB3YXkgdXNpbmcgYW5ub3RhdGlvbi1iYXNlZCBjb25zdHJhaW50cyBhbmQgYmVuZWZpdCBmcm9tIHRyYW5zcGFyZW50IGludGVncmF0aW9uIHdpdGggYSB3aWRlIHZhcmlldHkgb2YgZnJhbWV3b3Jrcy58CnxbU3ByaW5nZG9jIE9wZW5BUEkgVUldKGh0dHBzOi8vc3ByaW5nZG9jLm9yZy8pfE9wZW5BUEkgMyBMaWJyYXJ5IGZvciBzcHJpbmcgYm9vdCBwcm9qZWN0cy4gSXMgYmFzZWQgb24gc3dhZ2dlci11aSwgdG8gZGlzcGxheSB0aGUgT3BlbkFQSSBkZXNjcmlwdGlvbi58CnxbU29hcFVJIGNvcmUgbW9kdWxlXShodHRwczovL3d3dy5zb2FwdWkub3JnL29wZW4tc291cmNlLyl8U29hcFVJIGlzIHRoZSB3b3JsZCdzIGxlYWRpbmcgRnVuY3Rpb25hbCBUZXN0aW5nIHRvb2wgZm9yIFNPQVAgYW5kIFJFU1QgdGVzdGluZy58CnxbU3dhZ2dlciBQYXJzZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXBhcnNlcil8UGFyc2VzIE9wZW5BUEkgZGVmaW5pdGlvbnMgaW4gSlNPTiBvciBZQU1MIGZvcm1hdCBpbnRvIHN3YWdnZXItY29yZSByZXByZXNlbnRhdGlvbiBhcyBKYXZhIFBPSk8sIHJldHVybmluZyBhbnkgdmFsaWRhdGlvbiB3YXJuaW5ncy9lcnJvcnMufAoKIyDwn5ORIEdldHRpbmcgc3RhcnRlZCAKClRoZXNlIGluc3RydWN0aW9ucyB3aWxsIGdldCB5b3UgYSBjb3B5IG9mIHRoZSBwcm9qZWN0IHVwIGFuZCBydW5uaW5nIG9uIHlvdXIgbG9jYWwgbWFjaGluZSBmb3IgZGV2ZWxvcG1lbnQgYW5kIHRlc3RpbmcgcHVycG9zZXMuCgojIyMgUHJlcmVxdWlzaXRlcwoKKiBbSkRLIEluc3RhbGxhdGlvbl0oaHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vZW4vamF2YS9qYXZhc2UvMTEvaW5zdGFsbC9vdmVydmlldy1qZGstaW5zdGFsbGF0aW9uLmh0bWwjR1VJRC04Njc3QTc3Ri0yMzFBLTQwRjctOThCOS0xRkQwQjQ4QzM0NkEpCiogW0FwYWNoZSBNYXZlbiBJbnN0YWxsYXRpb25dKGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZy9pbnN0YWxsLmh0bWwpCiogW1NldHRpbmcgdXAgTG9tYm9rXShodHRwczovL3Byb2plY3Rsb21ib2sub3JnL3NldHVwL292ZXJ2aWV3KQogICogW0VjbGlwc2UgYW5kIGl0cyBvZmZzaG9vdHNdKGh0dHBzOi8vcHJvamVjdGxvbWJvay5vcmcvc2V0dXAvZWNsaXBzZSkKICAqIFtJbnRlbGxpaiBJREVBXShodHRwczovL3Byb2plY3Rsb21ib2sub3JnL3NldHVwL2ludGVsbGlqKQogICogW05ldGJlYW5zXShodHRwczovL3Byb2plY3Rsb21ib2sub3JnL3NldHVwL25ldGJlYW5zKQogICogW01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIENvZGVdKGh0dHBzOi8vcHJvamVjdGxvbWJvay5vcmcvc2V0dXAvdnNjb2RlKQoKIyMjIEV4dGVybmFsIGRlcGVuZGVuY2llcwoKVGhlIHByb2plY3QgdXNlIF9fIlNvYXBVSSBDb3JlIE1vZHVsZSJfXyBkZXBlbmRlbmN5LCB3aGljaCBpcyBub3QgbWF2ZW4gZGVwZW5kZW5jeSwgc28geW91IG11c3QgaGF2ZSBpbnRlcm5ldCBhY2Nlc3MgdG8gZG93bmxvYWQgdGhlIGRlcGVuZGVuY3kgZnJvbSB0aGUgZXh0ZXJuYWwgcmVwb3NpdG9yeSwgYmVsb3cgaXMgdGhlIHJlcG9zaXRvcnkgY29uZmlndXJhdGlvbiBpbnNpZGUgdGhlIHBvbS54bWwgZmlsZS4KCmBgYHhtbAogIC4uLgoKICA8cmVwb3NpdG9yaWVzPgogICAgPHJlcG9zaXRvcnk+CiAgICAgIDxpZD5TbWFydEJlYXJQbHVnaW5SZXBvc2l0b3J5PC9pZD4KICAgICAgPHVybD5odHRwczovL3JhcGkudG9vbHMub3BzLnNtYXJ0YmVhci5pby9uZXh1cy9jb250ZW50L2dyb3Vwcy9wdWJsaWMvPC91cmw+CQkJCiAgICA8L3JlcG9zaXRvcnk+CiAgPC9yZXBvc2l0b3JpZXM+CiAgCiAgLi4uCmBgYAojIyMgUnVubmluZyB0aGUgYXBwbGljYXRpb24gd2l0aCBJREUKClRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8gcnVuIGEgU3ByaW5nIEJvb3QgYXBwbGljYXRpb24gb24geW91ciBsb2NhbCBtYWNoaW5lLiBPbmUgd2F5IGlzIHRvIGV4ZWN1dGUgdGhlIGBtYWluYCBtZXRob2QgaW4gdGhlIGBPcGVuYXBpMlNvYXBVSUFwcGxpY2F0aW9uYCBjbGFzcyBmcm9tIHlvdXIgSURFLgoKIyMjIyBFeGFtcGxlIChFY2xpcHNlIGFuZCBpdHMgb2Zmc2hvb3RzKSA6CiogRG93bmxvYWQgdGhlIHppcCBvciBjbG9uZSB0aGUgR2l0IHJlcG9zaXRvcnkuCiogVW56aXAgdGhlIHppcCBmaWxlIChpZiB5b3UgZG93bmxvYWRlZCBvbmUpCiogT3BlbiBJREUKCSogRmlsZSAtPiBJbXBvcnQgLT4gRXhpc3RpbmcgTWF2ZW4gUHJvamVjdCAtPiBOYXZpZ2F0ZSB0byB0aGUgZm9sZGVyIHByb2plY3QgCgkqIFNlbGVjdCB0aGUgcHJvamVjdAoqIENob29zZSB0aGUgU3ByaW5nIEJvb3QgQXBwbGljYXRpb24gZmlsZSAoc2VhcmNoIGZvciBAU3ByaW5nQm9vdEFwcGxpY2F0aW9uKQoqIFJpZ2h0IENsaWNrIG9uIHRoZSBmaWxlIGFuZCBSdW4gYXMgSmF2YSBBcHBsaWNhdGlvbgoqIFVSTCB0byBhY2Nlc3M6ICoqaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaS1vcGVuYXBpLXRvLXNvYXB1aS92MS9zb2FwLXVpLXByb2plY3RzKioKCiMjIyBSdW5uaW5nIHRoZSBhcHBsaWNhdGlvbiBsb2NhbGx5IHdpdGggTWF2ZW4KCkFsdGVybmF0aXZlbHkgeW91IGNhbiB1c2UgdGhlIFtTcHJpbmcgQm9vdCBNYXZlbiBwbHVnaW5dKGh0dHBzOi8vZG9jcy5zcHJpbmcuaW8vc3ByaW5nLWJvb3QvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS9odG1sL2J1aWxkLXRvb2wtcGx1Z2lucy1tYXZlbi1wbHVnaW4uaHRtbCkgbGlrZSBzbzoKCiogRG93bmxvYWQgdGhlIHppcCBvciBjbG9uZSB0aGUgR2l0IHJlcG9zaXRvcnkuCiogVW56aXAgdGhlIHppcCBmaWxlIChpZiB5b3UgZG93bmxvYWRlZCBvbmUpCiogT3BlbiBDb21tYW5kIFByb21wdCBhbmQgQ2hhbmdlIGRpcmVjdG9yeSAoY2QpIHRvIGZvbGRlciBjb250YWluaW5nIHBvbS54bWwKKiBUbyBidWlsZCBhbmQgc3RhcnQgdGhlIHNlcnZlciB0eXBlCgpgYGBzaGVsbAokIG12biBzcHJpbmctYm9vdDpydW4KYGBgCgoqIFVSTCB0byBhY2Nlc3M6ICoqaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaS1vcGVuYXBpLXRvLXNvYXB1aS92MS9zb2FwLXVpLXByb2plY3RzKioKCiMjIyBSdW5uaW5nIHRoZSBhcHBsaWNhdGlvbiBpbiBEb2NrZXIKCiogRG93bmxvYWQgdGhlIHppcCBvciBjbG9uZSB0aGUgR2l0IHJlcG9zaXRvcnkuCiogVW56aXAgdGhlIHppcCBmaWxlIChpZiB5b3UgZG93bmxvYWRlZCBvbmUpCiogT3BlbiBDb21tYW5kIFByb21wdCBhbmQgQ2hhbmdlIGRpcmVjdG9yeSAoY2QpIHRvIGZvbGRlciBjb250YWluaW5nIHBvbS54bWwKKiBUbyBidWlsZCBhbmQgc3RhcnQgdGhlIGRvY2tlciBjb250YWluZXIgdHlwZQoKYGBgc2hlbGwKJCBtdm4gY2xlYW4gcGFja2FnZSAtUGphcgokIGRvY2tlci1jb21wb3NlIHVwIC1kCmBgYAoKKiBVUkwgdG8gYWNjZXNzOiAqKmh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGktb3BlbmFwaS10by1zb2FwdWkvdjEvc29hcC11aS1wcm9qZWN0cyoqCgojIyMgUnVubmluZyB0aGUgYXBwbGljYXRpb24gZGVwbG95aW5nIFdBUiBvbiBUb21jYXQKClRoZSBjb2RlIGNhbiBhbHNvIGJlIGJ1aWx0IGludG8gYSB3YXIgYW5kIHRoZW4gZGVwbG95ZWQgb24gYSBUb21jYXQgc2VydmVyLgoKKiAJRG93bmxvYWQgdGhlIHppcCBvciBjbG9uZSB0aGUgR2l0IHJlcG9zaXRvcnkuCiogCVVuemlwIHRoZSB6aXAgZmlsZSAoaWYgeW91IGRvd25sb2FkZWQgb25lKQoqIAlPcGVuIENvbW1hbmQgUHJvbXB0IGFuZCBDaGFuZ2UgZGlyZWN0b3J5IChjZCkgdG8gZm9sZGVyIGNvbnRhaW5pbmcgcG9tLnhtbAoqIAlUbyBidWlsZCB0aGUgd2FyIHR5cGUKCmBgYHNoCiQgbXZuIGNsZWFuIHBhY2thZ2UKYGBgCgoqIAlPbmNlIHRoZSB3YXIgaXMgYnVpbHQsIGNvcHkgdGhlIG91dHB1dCBXQVIgdG8gVG9tY2F0J3Mgd2ViYXBwcyBkaXJlY3RvcnkuCgpgYGBzaAokQ0FUQUxJTkFfSE9NRS93ZWJhcHBzL29wZW5hcGkyc29hcHVpLTx2ZXJzaW9uPi53YXIKYGBgCgoqIFJlc3RhcnQgVG9tY2F0IFNlcnZlcgoqIFVSTCB0byBhY2Nlc3M6ICoqaHR0cDovL2xvY2FsaG9zdDo4MDgwL29wZW5hcGkyc29hcHVpL2FwaS1vcGVuYXBpLXRvLXNvYXB1aS92MS9zb2FwLXVpLXByb2plY3RzKioKIyMgRmlsZXMgYW5kIERpcmVjdG9yaWVzIFN0cnVjdHVyZQoKVGhlIHByb2plY3QgZGlyZWN0b3J5IGhhcyBhIHBhcnRpY3VsYXIgZGlyZWN0b3J5IHN0cnVjdHVyZS4gQSByZXByZXNlbnRhdGl2ZSBwcm9qZWN0IGlzIHNob3duIGJlbG93OgoKIyMjIFByb2plY3QgU3RydWN0dXJlCgpgYGB0ZXh0Ci4K4pSc4pSA4pSAIHNyYwrilIIgICDilJTilIDilIAgbWFpbgrilIIgICAgICAg4pSU4pSA4pSAIGphdmEK4pSCICAgICAgICAgICDilJzilIDilIAgb3JnLmFwaWFkZGljdHMuYXBpdG9vbHMub3BlbmFwaTJzb2FwdWkK4pSCICAgICAgICAgICDilIIgCuKUgiAgICAgICAgICAg4pSc4pSA4pSAIG9yZy5hcGlhZGRpY3RzLmFwaXRvb2xzLm9wZW5hcGkyc29hcHVpLmNvbmZpZwrilIIgICAgICAgICAgIOKUgiAgCuKUgiAgICAgICAgICAg4pSc4pSA4pSAIG9yZy5hcGlhZGRpY3RzLmFwaXRvb2xzLm9wZW5hcGkyc29hcHVpLmNvbnN0YW50cwrilIIgICAgICAgICAgIOKUgiAK4pSCICAgICAgICAgICDilJzilIDilIAgb3JnLmFwaWFkZGljdHMuYXBpdG9vbHMub3BlbmFwaTJzb2FwdWkuY29udHJvbGxlcgrilIIgICAgICAgICAgIOKUgiAK4pSCICAgICAgICAgICDilJzilIDilIAgb3JnLmFwaWFkZGljdHMuYXBpdG9vbHMub3BlbmFwaTJzb2FwdWkuZXJyb3IK4pSCICAgICAgICAgICDilJzilIDilIAgb3JnLmFwaWFkZGljdHMuYXBpdG9vbHMub3BlbmFwaTJzb2FwdWkuZXJyb3IuZXhjZXB0aW9ucwrilIIgICAgICAgICAgIOKUnOKUgOKUgCBvcmcuYXBpYWRkaWN0cy5hcGl0b29scy5vcGVuYXBpMnNvYXB1aS5lcnJvci52YWxpZGF0b3JzCuKUgiAgICAgICAgICAg4pSCICAgICAK4pSCICAgICAgICAgICDilJzilIDilIAgb3JnLmFwaWFkZGljdHMuYXBpdG9vbHMub3BlbmFwaTJzb2FwdWkubW9kZWwK4pSCICAgICAgICAgICDilIIK4pSCICAgICAgICAgICDilJzilIDilIAgb3JnLmFwaWFkZGljdHMuYXBpdG9vbHMub3BlbmFwaTJzb2FwdWkucmVxdWVzdArilIIgICAgICAgICAgIOKUggrilIIgICAgICAgICAgIOKUnOKUgOKUgCBvcmcuYXBpYWRkaWN0cy5hcGl0b29scy5vcGVuYXBpMnNvYXB1aS5zZXJ2aWNlCuKUgiAgICAgICAgICAg4pSCCuKUgiAgICAgICAgICAg4pSU4pSA4pSAIG9yZy5hcGlhZGRpY3RzLmFwaXRvb2xzLm9wZW5hcGkyc29hcHVpLnV0aWwK4pSc4pSA4pSAIHNyYwrilIIgICDilJTilIDilIAgbWFpbgrilIIgICAgICAg4pSU4pSA4pSAIHJlc291cmNlcwrilIIgICAgICAgICAgIOKUnOKUgOKUgCBzdGF0aWMK4pSCICAgICAgICAgICDilIIgICDilJTilIDilIAgYXBpLnlhbWwK4pSCICAgICAgICAgICDilIIgICAK4pSCICAgICAgICAgICDilJzilIDilIAgYXBwbGljYXRpb24ucHJvcGVydGllcwrilIIgICAgICAgICAgIOKUnOKUgOKUgCBsb2c0ai5wcm9wZXJ0aWVzCuKUgiAgICAgICAgICAg4pSU4pSA4pSAIG1lc3NhZ2VzLnByb3BlcnRpZXMK4pSc4pSA4pSAIEpSRSBTeXN0ZW0gTGlicmFyeQrilJzilIDilIAgTWF2ZW4gRGVwZW5kZW5jaWVzCuKUnOKUgOKUgCBzcmMK4pSc4pSA4pSAIHRhcmdldArilIIgICDilJTilIDilIBvcGVuYXBpMnNvYXB1aS0xLjAuMgrilJzilIDilIAgLmdpdGxhYi1jaS55YW1sCuKUnOKUgOKUgCBsb21ib2suY29uZmlnCuKUnOKUgOKUgCBtdm53CuKUnOKUgOKUgCBtdm53LmNtZArilJzilIDilIAgcG9tLnhtbArilJTilIDilIAgUkVBRE1FLm1kCmBgYAoKIyMjIFBhY2thZ2VzCgoqIAlgY29uZmlnYCAtIGFwcCBjb25maWd1cmF0aW9uczsKKiAJYGNvbnN0YW50c2AgLSBhcHAgY29udGFudHM7CiogCWBjb250cm9sbGVyYCAtIGxpc3RlbiB0byB0aGUgY2xpZW50OwoqIAlgZXJyb3JgIC0gbWFuYWdlIGVycm9yczsKKiAJYGV4Y2VwdGlvbnNgIC0gY3VzdG9tIGV4Y2VwdGlvbiBoYW5kbGluZzsKKiAJYHZhbGlkYXRvcnNgIC0gY3VzdG9tIHZhbGlkYXRpb25zOwoqIAlgbW9kZWxgIC0gZW50aXRpZXM7CiogCWByZXF1ZXN0YCAtIGJvZHkgcmVxdWVzdCBtb2RlbC9lbnRpdGllczsKKiAJYHNlcnZpY2VgIC0gYnVzaW5lc3MgbG9naWM7CiogCWB1dGlsYCAtIHV0aWxpdHkgY2xhc3NlczsKCgojIyMgUmVzb3VyY2VzCiogCWByZXNvdXJjZXMvYCAtIGNvbnRhaW5zIGFsbCB0aGUgc3RhdGljIHJlc291cmNlcywgdGVtcGxhdGVzIGFuZCBwcm9wZXJ0eSBmaWxlcy4KKiAJYHJlc291cmNlcy9zdGF0aWNgIC0gY29udGFpbnMgc3RhdGljIHJlc291cmNlcy4KKiAJYHJlc291cmNlcy9zdGF0aWMvYXBpLnlhbWxgIC0gY29udGFpbnMgT3BlbiBBUEkgU3BlY2lmaWNhdGlvbi4KKiAJYHJlc291cmNlcy9hcHBsaWNhdGlvbi5wcm9wZXJ0aWVzYCAtIGNvbnRhaW5zIGFwcGxpY2F0aW9uLXdpZGUgcHJvcGVydGllcy4gU3ByaW5nIHJlYWRzIHRoZSBwcm9wZXJ0aWVzIGRlZmluZWQgaW4gdGhpcyBmaWxlIHRvIGNvbmZpZ3VyZSB5b3VyIGFwcGxpY2F0aW9uLiBZb3UgY2FuIGRlZmluZSBzZXJ2ZXLigJlzIGRlZmF1bHQgcG9ydCwgc2VydmVy4oCZcyBjb250ZXh0IHBhdGgsIGRhdGFiYXNlIFVSTHMgZXRjLCBpbiB0aGlzIGZpbGUuCiogCWByZXNvdXJjZXMvbG9nNGoucHJvcGVydGllc2AgLSBjb250YWlucyBjb250YWlucyB0aGUgZW50aXJlIHJ1bnRpbWUgY29uZmlndXJhdGlvbiB1c2VkIGJ5IGxvZzRqLiBUaGlzIGZpbGUgd2lsbCBjb250YWluIGxvZzRqIGFwcGVuZGVycyBpbmZvcm1hdGlvbiwgbG9nIGxldmVsIGluZm9ybWF0aW9uIGFuZCBvdXRwdXQgZmlsZSBuYW1lcyBmb3IgZmlsZSBhcHBlbmRlcnMuCiogCWByZXNvdXJjZXMvbWVzc2FnZXMucHJvcGVydGllc2AgLSBjb250YWlucyB0aGUgZXJyb3IgbWVzc2FnZXMgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24uCiogbXZudyAvIG12bncuY21kIC0gVGhpcyBhbGxvd3MgeW91IHRvIHJ1biB0aGUgTWF2ZW4gcHJvamVjdCB3aXRob3V0IGhhdmluZyBNYXZlbiBpbnN0YWxsZWQgYW5kIHByZXNlbnQgaW4gdGhlIHBhdGguIERvd25sb2FkIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgTWF2ZW4gaWYgaXQgY2FuJ3QgYmUgZm91bmQgKGFzIGZhciBhcyBJIGtub3cgYnkgZGVmYXVsdCBpbiB5b3VyIHVzZXIgaG9tZSBkaXJlY3RvcnkpLiBUaGUgbXZudyBmaWxlIGlzIGZvciBMaW51eCAoYmFzaCkgYW5kIG12bncuY21kIGlzIGZvciB0aGUgV2luZG93cyBlbnZpcm9ubWVudC4KKiAJYHBvbS54bWxgIC0gY29udGFpbnMgYWxsIHRoZSBwcm9qZWN0IGRlcGVuZGVuY2llcwoKIyMgRGVwbG95CgoqIAlCdWlsZCB0aGUgd2FyIHR5cGUKCmBgYHNoCiQgbXZuIGNsZWFuIHBhY2thZ2UKYGBgCgoqIAlPbmNlIHRoZSB3YXIgaXMgYnVpbHQsIGNvcHkgdGhlIG91dHB1dCBXQVIgdG8gVG9tY2F0J3Mgd2ViYXBwcyBkaXJlY3RvcnkuCgpgYGBzaAokQ0FUQUxJTkFfSE9NRS93ZWJhcHBzL29wZW5hcGkyc29hcHVpLndhcgpgYGAKCiogUmVzdGFydCBUb21jYXQgU2VydmVyCiogVVJMIHRvIGFjY2VzczogKipcPHByb3RvY29sXD46Ly9cPGhvc3RcPjpcPHBvcnRcPi9vcGVuYXBpMnNvYXB1aS9hcGktb3BlbmFwaS10by1zb2FwdWkvdjEvc29hcC11aS1wcm9qZWN0cyoqCgojIyBEb2N1bWVudGF0aW9uCgotIFtjVVJMIEV4YW1wbGVdKGV4YW1wbGUuc2gpCi0gW09wZW4gQVBJIFNwZWNpZmljYXRpb25dKC4vc3JjL21haW4vcmVzb3VyY2VzL3N0YXRpYy9hcGkueWFtbCkKLSBbU3dhZ2dlciBVSV0oaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N3YWdnZXItdWkuaHRtbCkgLSBgaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N3YWdnZXItdWkuaHRtbGAKLSBGaW5kIEphdmEgRG9jIGluICoqamF2YWRvYyoqIGZvbGRlcgotIEphdmEgRG9jIGlzIGdlbmVyYXRlZCBpbiAuL3RhcmdldC9zaXRlL2FwaWRvY3NgIGZvbGRlciB1c2luZyB0aGUgTWF2ZW4gY29tbWFuZCAKCmBgYHNoCm12biBqYXZhZG9jOmphdmFkb2MKYGBgCgojIyDwn5KbIFNwb25zb3JzCjxwIGFsaWduPSJjZW50ZXIiPgoJPGEgaHJlZj0iaHR0cHM6Ly9hcGlhZGRpY3RzLm9yZy8iPgogICAgCTxpbWcgc3JjPSJodHRwczovL2FwaWFkZGljdHMuY2xvdWRhcHBpLm5ldC93ZWIvaW1hZ2UvNDI0OC9MT0dPQ2xvdWRhcHBpMjAyMFZlcnNpb25lcy0wMS5wbmciIGFsdD0iY2xvdWRhcHBpIiB3aWR0aD0iMTUwIi8+CiAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXBpYWRkaWN0cy13ZWIuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjIvMDMvMTcxNTU3MzYvY3JvcHBlZC1BUElBZGRpY3RzLWxvZ290aXBvX3Jvam8ucG5nIiBoZWlnaHQgPSAiNzUiPgoJPC9hPgo8L3A+Cgo= readmeEtag: '"b7b5d345a985edce7396b3549da001259abf4c15"' readmeLastModified: Tue, 12 Sep 2023 10:57:37 GMT repositoryId: 352716389 description: >- API to generate a SoapUI project from an OpenAPI Specification (fka Swagger Specification) Given an OpenAPI Specification, either v2 or v3, a SoapUI project is generated with the requests for each resource operation and a test suite. The response is the content of the SoapUI project in XML format to save as file and import into the SoapUI application. created: '2021-03-29T16:47:42Z' updated: '2025-11-25T18:41:08Z' language: Java archived: false stars: 9 watchers: 2 forks: 4 owner: apiaddicts logo: https://avatars.githubusercontent.com/u/31730093?v=4 license: LGPL-3.0 repoEtag: '"6dcdfbbcdc91aa4783acaf01f388e78d8d3092e64ccb561cd7cd7a2335feb830"' repoLastModified: Tue, 25 Nov 2025 18:41:08 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/jshmrtn/openapi-compiler v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJQ29tcGlsZXIKClshW0hleCBkb2NzXShodHRwOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvaGV4LnBtLWRvY3MtZ3JlZW4uc3ZnP3N0eWxlPWZsYXQpXShodHRwczovL2hleGRvY3MucG0vb3BlbmFwaV9jb21waWxlcikKIVsuZ2l0aHViL3dvcmtmbG93cy9lbGl4aXIueW1sXShodHRwczovL2dpdGh1Yi5jb20vanNobXJ0bi9vcGVuYXBpLWNvbXBpbGVyL3dvcmtmbG93cy8uZ2l0aHViL3dvcmtmbG93cy9lbGl4aXIueW1sL2JhZGdlLnN2ZykKWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIvanNobXJ0bi9vcGVuYXBpLWNvbXBpbGVyL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL2pzaG1ydG4vb3BlbmFwaS1jb21waWxlcj9icmFuY2g9bWFzdGVyKQpbIVtIZXgucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vaGV4cG0vZHQvb3BlbmFwaV9jb21waWxlci5zdmcpXShodHRwczovL2hleC5wbS9wYWNrYWdlcy9vcGVuYXBpX2NvbXBpbGVyKQoKOndhcm5pbmc6IDp3YXJuaW5nOiBUaGlzIGxpYnJhcnkgaXMgaW5jb21wbGV0ZSBhbmQgZXhwZXJpbWVudGFsISA6d2FybmluZzogOndhcm5pbmc6CgpDb21waWxlIE9wZW5BcGkgMy4wIEVsaXhpciBDbGllbnQgZnJvbSBKU09OIC8gWWFtbC4KCkhlbHAgdG8gbWFrZSB0aGlzIGxpYnJhcnkgbW9yZSBzcGVjIGNvbXBsaWFudCBpcyB3ZWxjb21lIGluIGZvcm0gb2YgaXNzdWVzIC8gUFIncy4KCiMjIEluc3RhbGxhdGlvbgoKVGhlIHBhY2thZ2UgY2FuIGJlIGluc3RhbGxlZCBieSBhZGRpbmcgYG9wZW5hcGlfY29tcGlsZXJgIHRvIHlvdXIgbGlzdCBvZiBkZXBlbmRlbmNpZXMKaW4gYG1peC5leHNgOgoKYGBgZWxpeGlyCmRlZiBkZXBzIGRvCiAgWwogICAgezpvcGVuYXBpX2NvbXBpbGVyLCAifj4gMS4wLWJldGEifQogIF0KZW5kCmBgYAoKRG9jdW1lbnRhdGlvbiBjYW4gYmUgZ2VuZXJhdGVkIHdpdGggW0V4RG9jXShodHRwczovL2dpdGh1Yi5jb20vZWxpeGlyLWxhbmcvZXhfZG9jKQphbmQgcHVibGlzaGVkIG9uIFtIZXhEb2NzXShodHRwczovL2hleGRvY3MucG0pLiBUaGUgZG9jcyBjYW4gYmUgZm91bmQgYXQKW2h0dHBzOi8vaGV4ZG9jcy5wbS9vcGVuYXBpX2NvbXBpbGVyXShodHRwczovL2hleGRvY3MucG0vb3BlbmFwaV9jb21waWxlcikuCg== readmeEtag: '"bf382aafe1fb1d55ab387b51cb4735e682323308"' readmeLastModified: Tue, 05 Jul 2022 16:13:18 GMT repositoryId: 251401867 description: ':gear: Eixir OpenAPI Compiler' created: '2020-03-30T19:03:24Z' updated: '2022-07-07T18:58:33Z' language: Elixir archived: false stars: 6 watchers: 2 forks: 1 owner: jshmrtn logo: https://avatars.githubusercontent.com/u/10851004?v=4 license: MIT repoEtag: '"95d78d050b0a4c0c219b58b7779e1e58e7b2df8d7c7ae4f34b2e79d0edb59a67"' repoLastModified: Thu, 07 Jul 2022 18:58:33 GMT foundInMaster: true category: - Description Validators - Parsers id: 9b75226dafbc6d1d3410ef685b780166 - source: openapi3 tags repository: https://github.com/googee/openapi-builder v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQXBpIEdVSSBCdWlsZGVyCgpbZGVtb10oaHR0cHM6Ly9nb29nZWUuZ2l0aHViLmlvL09wZW5BUEktUGFnZS9idWlsZDEwMC8pCgojIyBQcm9qZWN0IHNldHVwCmBgYApucG0gaW5zdGFsbApgYGAKCiMjIyBDb21waWxlcyBhbmQgaG90LXJlbG9hZHMgZm9yIGRldmVsb3BtZW50CmBgYApucG0gcnVuIHNlcnZlCmBgYAoKIyMjIENvbXBpbGVzIGFuZCBtaW5pZmllcyBmb3IgcHJvZHVjdGlvbgpgYGAKbnBtIHJ1biBidWlsZApgYGAKCiMjIyBMaW50cyBhbmQgZml4ZXMgZmlsZXMKYGBgCm5wbSBydW4gbGludApgYGAKCiMjIyBDdXN0b21pemUgY29uZmlndXJhdGlvbgpTZWUgW0NvbmZpZ3VyYXRpb24gUmVmZXJlbmNlXShodHRwczovL2NsaS52dWVqcy5vcmcvY29uZmlnLykuCg== readmeEtag: '"2ae7b28459e5053f49ff08805c8788ee5029dcfc"' readmeLastModified: Sun, 07 Aug 2022 09:45:28 GMT repositoryId: 264067554 description: ':herb: OpenAPI GUI Builder' created: '2020-05-15T01:38:24Z' updated: '2024-05-03T14:54:03Z' language: TypeScript archived: false stars: 6 watchers: 1 forks: 2 owner: GooGee logo: https://avatars.githubusercontent.com/u/13238516?v=4 license: MIT repoEtag: '"e4e9d361ed4aa69d1ef0d922779849e1fcce704f9ff0658a2394f7b31666eb2d"' repoLastModified: Fri, 03 May 2024 14:54:03 GMT foundInMaster: true category: - Description Validators - Testing - Server Implementations id: 760db624d3fd67681974029110114e07 - source: - openapi3 tags - openapi31 tags repository: https://github.com/aptori-dev/sift-action v3: true v3_1: true id: 81a95e8d4e1634da0b6c0ea11d40c674 repositoryMetadata: base64Readme: >- WyFbQXB0b3JpXShodHRwczovL2FwcC5hcHRvcmkuZGV2L3Byb2plY3RNZXJjdXJ5UHVycGxlLnN2ZyldKGh0dHBzOi8vYXB0b3JpLmRldi8pCgojIEFwdG9yaSBTaWZ0IEFjdGlvbgoKCkFwdG9yaSBpcyBhbiBBSS1FbmFibGVkIFtkZXZlbG9wZXIgdG9vbCBmb3IgQVBJIFRlc3RpbmddKGh0dHBzOi8vYXB0b3JpLmRldi8pCmFuZCBBcHBsaWNhdGlvbiBTZWN1cml0eSBUZXN0aW5nLgoKQXB0b3JpIGxldmVyYWdlcyBBSSB0byBhc3Npc3QgaW4gdGhlIGRldmVsb3BtZW50IG9mIHNlY3VyZSwgaGlnaC1xdWFsaXR5CnNvZnR3YXJlLiBPdXIgU2VtYW50aWMgUmVhc29uaW5nIFRlY2hub2xvZ3kgY29tcHJlaGVuZHMgdGhlIHN0cnVjdHVyZSBvZiB5b3VyCmFwcGxpY2F0aW9uLCBhbGxvd2luZyBmb3IgYXV0b25vbW91cyBhcHBsaWNhdGlvbiB0ZXN0aW5nLiBUaGlzIGVmZmljaWVuY3kgZnJlZXMKZGV2ZWxvcGVycyBmcm9tIHRpbWUtY29uc3VtaW5nIHRlc3RpbmcgdGFza3Mgd2hpbGUgZW5zdXJpbmcgdGhlIHNvZnR3YXJlIGlzCnNlY3VyZSBhbmQgZnVuY3Rpb25zIGFzIGludGVuZGVkLgoKU2lmdCB1c2VzIEFJIHRvIHVuZGVyc3RhbmQgdGhlIGFwcGxpY2F0aW9uJ3MgQVBJIHNlbWFudGljYWxseSwgaWRlbnRpZnlpbmcgaG93CmRpZmZlcmVudCBvcGVyYXRpb25zIGNvbm5lY3QgYW5kIGNyZWF0aW5nIGEgbG9naWNhbCBmbG93Y2hhcnQgb2YgdGhlc2UKd29ya2Zsb3dzLiBJdCB0aGVuIHRlc3RzIHRoZXNlIHdvcmtmbG93cyBieSBwcm92aWRpbmcgYXBwcm9wcmlhdGUgaW5wdXQgdmFsdWVzLApjaGVja2luZyB0aGF0IHRoZSBhcHBsaWNhdGlvbidzIGJ1c2luZXNzIGxvZ2ljIGlzIGFjY3VyYXRlIGF0IGVhY2ggc3RhZ2UuCgpJbnRlZ3JhdGUgU2lmdCBpbiB5b3VyIENJIHRvIGlkZW50aWZ5IGJ1c2luZXNzIGxvZ2ljIGJ1Z3MgYW5kIHNlY3VyaXR5CnZ1bG5lcmFiaWxpdGllcyBpbiB5b3VyIGFwcGxpY2F0aW9ucyB3aXRoIEFwdG9yaSBBdXRvbm9tb3VzIFtBcHBsaWNhdGlvbgpTZWN1cml0eSBUZXN0aW5nXShodHRwczovL2FwdG9yaS5kZXYvYXBwc2VjL3NlY3VyaXR5LXRlc3RpbmcpLiBTaWZ0IEFjdGlvbiBpcyBhCltHaXRIdWIgQWN0aW9uXShodHRwczovL2RvY3MuZ2l0aHViLmNvbS9hY3Rpb25zKSB0aGF0IHJ1bnMgQXB0b3JpJ3MgU2lmdCBDTEkKdG9vbCBpbiBhIGNvbnRpbm91cyBpbnRlZ3JhdGlvbiAoQ0kpIHdvcmtmbG93LgoKCiMjIEFkZGl0aW9uYWwgSW5mb3JtYXRpb24KCiogV2F0Y2ggW0hvdyBBcHRvcmkgV29ya3NdKGh0dHBzOi8vYXB0b3JpLmRldi9wcm9kdWN0L3doeS1hcHRvcmkpIGZvciBhIGxvb2sgYXQgdGhlCiAgdGVjaG5vbG9neSB0aGF0IG1ha2VzIFNpZnQgdW5pcXVlLgoqIFtBcHRvcmkgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2NzLmFwdG9yaS5kZXYvKSBoYXMgZnVydGhlciBkZXRhaWxzIG9uIHRoZQogIFNpZnQgQ0xJIHRvb2wgYW5kIHRoZSBBcHRvcmkgUGxhdGZvcm0uCiogW0dpdEh1YgogIFdvcmtmbG93c10oaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vYWN0aW9ucy91c2luZy13b3JrZmxvd3MvYWJvdXQtd29ya2Zsb3dzKQogIGhhcyBmdXJ0aGVyIGRldGFpbHMgYWJvdXQgY29uZmlndXJpbmcgam9icyBpbiBHaXRIdWIgQWN0aW9ucy4KCgojIyBHZXR0aW5nIFN0YXJ0ZWQKCiMjIyAxLiBHZXQgeW91ciBBcHRvcmkgYWNjb3VudApUbyBydW4gU2lmdCwgeW91IG5lZWQgdG8gaGF2ZSBhbiBhY2NvdW50IG9uIEFwdG9yaS4gR2V0IGluIHRvdWNoIHdpdGggb3VyCmV4cGVydCB0ZWFtIHRvIHNldCB1cCBhIFt0cmlhbAphY2NvdW50XShodHRwczovL2FwdG9yaS5kZXYvZ2V0LWFwdG9yaS1ib29rLWEtZGVtbykuIEFmdGVyIGFjdGl2YXRpbmcgeW91cgphY2NvdW50LCB5b3UgY2FuIGVtcGxveSBgc2lmdC1hY3Rpb25gIHRvIGV2YWx1YXRlIHlvdXIgYXBwbGljYXRpb27igJlzIEFQSSwgYW5kCmF1dG9tYXRpY2FsbHkgdXBsb2FkIHRoZSBmaW5kaW5ncyB0byB0aGUgQXB0b3JpIFBsYXRmb3JtLgoKIyMjIDIuIEFkZCBTaWZ0IHRvIHlvdXIgd29ya2Zsb3cKR28gdG8gdGhlIEdpdEh1YiBSZXBvc2l0b3J5IG9uIHdoaWNoIHlvdSB3YW50IHRvIHJ1biBTaWZ0LiBBZGQgdGhlCmBzaWZ0LWFjdGlvbmAgdG8gYW4gZXhpc3RpbmcgR2l0SHViIHdvcmtmbG93IG9yIGNyZWF0ZSBhIG5ldyB3b3JrZmxvdy4KQSBzYW1wbGUgd29ya2Zsb3cgZmlsZSBpcyBwcm92aWRlZCBiZWxvdyB1bmRlciBbRXhhbXBsZSBXb3JrZmxvd10oI2V4YW1wbGUtd29ya2Zsb3cpLgoKSW4geW91ciBHaXRIdWIgcmVwb3NpdG9yeSBzZXR0aW5ncywgYWRkIHZhbHVlcyBpbiBzZWNyZXRzIGFuZCB2YXJpYWJsZXMgdGhhdAphcmUgdXNlZCBmb3IgaW5wdXQgdmFsdWVzIG9mIHRoZSBBY3Rpb24uCgoqIERlZmluZSBhCiAgW3NlY3JldF0oaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vYWN0aW9ucy9zZWN1cml0eS1ndWlkZXMvZW5jcnlwdGVkLXNlY3JldHMpCiAgbmFtZWQgYFNJRlRfUExBVEZPUk1fS0VZYCB0aGF0IGNvbnRhaW5zIHRoZSB2YWx1ZSBvZiBhbiBBcHRvcmkgUGxhdGZvcm0gS2V5LgogIFRoaXMgc2VjcmV0IGlzIHVzZWQgZm9yIHRoZSByZXF1aXJlZCBpbnB1dCBgcGxhdGZvcm1LZXlgIGluIHRoZSB3b3JrZmxvdwogIGV4YW1wbGUgYmVsb3cuCiogRGVmaW5lIGEKICBbdmFyaWFibGVdKGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvbGVhcm4tZ2l0aHViLWFjdGlvbnMvdmFyaWFibGVzI2NyZWF0aW5nLWNvbmZpZ3VyYXRpb24tdmFyaWFibGVzLWZvci1hLXJlcG9zaXRvcnkpCiAgbmFtZWQgYFNJRlRfQ09ORklHVVJBVElPTl9JRGAgdGhhdCBjb250YWlucyB0aGUgSUQgb2YgYSBjb25maWd1cmF0aW9uIGNyZWF0ZWQKICBpbiB0aGUgQXB0b3JpIFBsYXRmb3JtLiAgVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGZvciB0aGUgcmVxdWlyZWQgaW5wdXQKICBgY29uZmlndXJhdGlvbklkYCBpbiB0aGUgd29ya2Zsb3cKICBleGFtcGxlIGJlbG93LgoKCiMjIEFjdGlvbiBJbnB1dHMKCiMjIyBgcGxhdGZvcm1LZXlgCioqUmVxdWlyZWQqKiBcCkFwdG9yaSBQbGF0Zm9ybSBrZXkuCgojIyMgYGNvbmZpZ3VyYXRpb25JZGAKKipSZXF1aXJlZCoqIFwKSUQgb2YgY29uZmlndXJhdGlvbiB0byBmZXRjaCBmcm9tIEFwdG9yaSBQbGF0Zm9ybS4KCiMjIyBgdGFyZ2V0VXJsYAoqKk9wdGlvbmFsKiogXApVUkwgd2hlcmUgYXBwbGljYXRpb24gQVBJIGNhbiBiZSBhY2Nlc3NlZC4gVGhpcyBvdmVycmlkZXMgdGhlIFVSTCBzcGVjaWZpZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24uCgojIyMgYGxhYmVsc2AKKipPcHRpb25hbCoqICBcClNwYWNlLXNlcGFyYXRlZCBsaXN0IGxhYmVscyBpbiBrZXk9dmFsdWUgZm9ybSB0byBhcHBlbmQgdG8gdGhlIG1ldGRhdGEgZm9yIGEgdGVzdCBydW4uCgojIyMgYG5ldHdvcmtgCioqT3B0aW9uYWwqKiBcCkRvY2tlciBuZXR3b3JrIGJyaWRnZSBuYW1lLiBNYWtlIHN1cmUgeW91ciBhcHBsaWNhdGlvbiB1bmRlciB0ZXN0IHJ1bnMgaW4gdGhlIHNhbWUgbmV0d29yay4KCgojIyBBY3Rpb24gT3V0cHV0cwoKU2lmdCBvdXRwdXRzIHRlc3QgcmVzdWx0cyBpbiBTQVJJRiBmb3JtYXQgaW4gZmlsZSBgc2lmdC5zYXJpZmAgaW4gdGhlIHdvcmtzcGFjZQp3aGVyZSB0aGUgQWN0aW9uIGlzIHJ1bi4KCgojIyBFeGFtcGxlIFdvcmtmbG93CgpCZWxvdyBpcyBhIHNhbXBsZSB3b3JrZmxvdyB0aGF0IHVzZXMgU2lmdCBBY3Rpb24uICBUaGlzIHdvcmtmbG93IHVzZXMgYSBzZWNyZXQKKGBTSUZUX1BMQVRGT1JNX0tFWWApIGFuZCB2YXJpYWJsZSAoYFNJRlRfQ09ORklHVVJBVElPTl9JRGApIHRoYXQgYXJlIGRlZmluZWQgaW4KdGhlIHJlcG9zaXRvcnkgc2V0dGluZ3MuCgpgYGB5YW1sCiMgQW4gZXhhbXBsZSB3b3JrZmxvdyBmaWxlIHRvIGhlbHAgeW91IGdldCBzdGFydGVkCm5hbWU6IFJ1biBTaWZ0CgojIENvbnRyb2xzIHdoZW4gdGhlIHdvcmtmbG93IHdpbGwgcnVuCm9uOgogIHB1c2g6CiAgICBicmFuY2hlczogWyBtYWluIF0KICBwdWxsX3JlcXVlc3Q6CiAgICBicmFuY2hlczogWyBtYWluIF0KCmpvYnM6CiAgYXB0b3JpLXNpZnQ6CiAgICBuYW1lOiBBcHRvcmkgU2lmdAogICAgcnVucy1vbjogdWJ1bnR1LWxhdGVzdAoKICAgICMKICAgICMgUGVybWlzc2lvbnMgdG8gdXBsb2FkIHRoZSBDb2RlIFNjYW5uaW5nIHJlc3VsdAogICAgIyAob25seSBuZWNlc3NhcnkgaWYgdXNpbmcgR2l0SHViIEFkdmFuY2VkIFNlY3VyaXR5IGFuZCBTQVJJRiB1cGxvYWQgYmVsb3cpCiAgICAjCiAgICBwZXJtaXNzaW9uczoKICAgICAgYWN0aW9uczogcmVhZAogICAgICBjb250ZW50czogcmVhZAogICAgICBzZWN1cml0eS1ldmVudHM6IHdyaXRlCgogICAgc3RlcHM6CiAgICAtIG5hbWU6IENoZWNrIG91dCByZXBvCiAgICAgIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjQKCiAgICAjCiAgICAjIEV4YW1wbGUgb2YgYnVpbGRpbmcgYW5kIHJ1bm5pbmcgYW4gYXBwbGljYXRpb24gd2l0aCBEb2NrZXIuCiAgICAjCiAgICAjIE5vdGUsIHRoaXMgaXMgYW4gZXhhbXBsZS4gIEFkZCB3b3JrZmxvdyBzdGVwKHMpIHRvIGRlcGxveSBvciBydW4gYW4KICAgICMgaW5zdGFuY2Ugb2YgeW91ciBhcHBsaWNhdGlvbi4KICAgICMKICAgIC0gbmFtZTogQnVpbGQgYW5kIHJ1biB0aGUgYXBwbGljYXRpb24KICAgICAgcnVuOiB8CiAgICAgICAgZG9ja2VyIGJ1aWxkIC10IG15YXBwOmxhdGVzdCAuCiAgICAgICAgZG9ja2VyIG5ldHdvcmsgY3JlYXRlIG5ldHdvcmsxCiAgICAgICAgZG9ja2VyIHJ1biAtZCAtcCA1MDAwOjUwMDAgLS1uZXR3b3JrIG5ldHdvcmsxIC0tbmFtZSBteWFwcCBteWFwcDpsYXRlc3QKCiAgICAjCiAgICAjIFJ1biBTaWZ0IHVzaW5nIHBsYXRmb3JtIGtleSBhbmQgY29uZmlndXJhdGlvbiBJRCBzdG9yZWQgaW4geW91ciByZXBvc2l0b3J5IHNlY3JldHMKICAgICMKICAgIC0gbmFtZTogUnVuIFNpZnQKICAgICAgdXNlczogQXB0b3JpLWRldi9zaWZ0LWFjdGlvbkB2MQogICAgICB3aXRoOgogICAgICAgIHBsYXRmb3JtS2V5OiAke3sgc2VjcmV0cy5TSUZUX1BMQVRGT1JNX0tFWSB9fQogICAgICAgIGNvbmZpZ3VyYXRpb25JZDogJHt7IHZhcnMuU0lGVF9DT05GSUdVUkFUSU9OX0lEIH19CiAgICAgICAgdGFyZ2V0VXJsOiBodHRwOi8vbXlhcHA6NTAwMAogICAgICAgIG5ldHdvcms6IG5ldHdvcmsxCiAgICAgICAgIyBVc2VyLWRlZmluZWQgbGFiZWxzIGNhbiBiZSB1c2VkIHRvIGhlbHAgZGlzdGluZ3Vpc2ggYSBwYXJ0aWN1bGFyIHJ1bgogICAgICAgIGxhYmVsczogfAogICAgICAgICAgR0lUSFVCX1JVTl9JRD0ke3tnaXRodWIucnVuX2lkfX0KICAgICAgICAgIEdJVEhVQl9SVU5fTlVNQkVSPSR7e2dpdGh1Yi5ydW5fbnVtYmVyfX0KICAgICAgICAgIGNvbW1pdD0ke3tnaXRodWIuc2hhfX0KCiAgICAjCiAgICAjIE9wdGlvbmFsOiBVcGxvYWQgU0FSSUYgZmlsZSB0byBHaXRIdWIgQ29kZSBTY2FubmluZwogICAgIyAocmVxdWlyZXMgR2l0SHViIEFkdmFuY2VkIFNlY3VyaXR5KQogICAgIwogICAgLSBuYW1lOiBVcGxvYWQgU0FSSUYgZmlsZQogICAgICB1c2VzOiBnaXRodWIvY29kZXFsLWFjdGlvbi91cGxvYWQtc2FyaWZAdjMKICAgICAgd2l0aDoKICAgICAgICAjIFBhdGggdG8gU0FSSUYgZmlsZSByZWxhdGl2ZSB0byB0aGUgcm9vdCBvZiB0aGUgcmVwb3NpdG9yeQogICAgICAgIHNhcmlmX2ZpbGU6IHNpZnQuc2FyaWYKICAgICAgICAjIENhdGVnb3J5IGZvciB0aGUgcmVzdWx0cyAtIHRvIGRpZmZlcmVudGlhdGUgbXVsdGlwbGUgcmVzdWx0cyBmb3Igb25lIGNvbW1pdAogICAgICAgIGNhdGVnb3J5OiBhcHRvcmktc2lmdApgYGAK readmeEtag: '"7c28d9f8e16595cf1eb1d9136de52abae8b81574"' readmeLastModified: Thu, 18 Sep 2025 15:56:24 GMT repositoryId: 681837537 description: Run Aptori Sift in GitHub Actions created: '2023-08-22T21:43:03Z' updated: '2025-09-18T15:56:28Z' language: JavaScript archived: false stars: 6 watchers: 2 forks: 0 owner: Aptori-dev logo: https://avatars.githubusercontent.com/u/140379261?v=4 license: MIT repoEtag: '"d0274020358802804988ce8a728a0593dcfa938320187dff77f66fcbe65cc8ed"' repoLastModified: Thu, 18 Sep 2025 15:56:28 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/odoo-plus/odootools-openapi v3: true id: 5908c15dabba77657f3b02534b6eb759 repositoryMetadata: base64Readme: >- T2Rvb1Rvb2xzIE9wZW5BUEkKPT09PT09PT09PT09PT09PT0KClRoaXMgcGFja2FnZSBpcyBhIGxpYnJhcnkgYW5kIGFuIGEgcGx1Z2luIGZvciBbb2Rvby10b29sc10oaHR0cHM6Ly9naXRodWIuY29tL2xsYWNyb2l4L29kb28tdG9vbHMpLgoKV2hlbiB1c2VkIGFzIGEgbGlicmFyeSwgaXQgZGVmaW5lIGFuIG9ybSB0aGF0IGhlbHBzIHVud3JhcCBqc29uIGJvZHkgaW50byBweXRob24gb2JqZWN0cyBhbmQgT2RvbwpvYmplY3RzIGJhY2sgaW50byBKU09OLgoKV2hlbiB1c2VkIGFzIGEgY29tbWFuZCwgaXQgd2lsbCBnZW5lcmF0ZSBhbiBPZG9vIE1vZHVsZSB3aXRoIGFwaSBtb2RlbHMgYW5kIGNvbnRyb2xsZXJzIGFzIGRlZmluZWQKaW4gYW4gb3BlbmFwaTMgc3BlYyB3aXRoIGN1c3RvbSBleHRlbnNpb25zIGZvciBPZG9vLgoKVGhlIGNvbW1hbmQgY2FuIGJlIGludm9rZWQgYXMgc3VjaDoKCiAgICBvZG9vdG9vbHMgZ2VuIG9wZW5hcGkgLS1kZXN0aW5hdGlvbiBteV9tb2R1bGVfYXBpIC0tcGF0aCBwYXRoX3RvX3NwZWMKICAgIG9kb290b29scyBnZW4gb3BlbmFwaSAtLWRlc3RpbmF0aW9uIG15X21vZHVsZV9hcGkgLS11cmwgdXJsX3RvX3NwZWMKClRoZW4gdGhlIG1vZHVsZSB3aWxsIGJlIGNyZWF0ZWQgaW5zaWRlIHRoZSBkZXN0aW5hdGlvbiBwYXRoLiBJdCB3aWxsIHVzZQp0aGUgdGl0bGUvZGVzY3JpcHRpb24gb2YgdGhlIGFwaSB0byBkZWZpbmUgdGhlIG5hbWUvc3VtbWFyeSBvZiB0aGUgbW9kdWxlLgoKCkV4YW1wbGUgQVBJOgoKICAgIG9wZW5hcGk6IDMuMC4wCiAgICBpbmZvOgogICAgICBjb250YWN0OgogICAgICAgIGVtYWlsOiBpbmZvQG9kb28ucGx1cwogICAgICAgIG5hbWU6IExvw69jIEZhdXJlLUxhY3JvaXgKICAgICAgICB1cmw6IGh0dHBzOi8vd3d3Lm9kb28ucGx1cwogICAgICBkZXNjcmlwdGlvbjogJycKICAgICAgbGljZW5zZToKICAgICAgICBuYW1lOiBBcGFjaGUgMi4wCiAgICAgICAgdXJsOiBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wLmh0bWwKICAgICAgdGl0bGU6ICcnCiAgICAgIHZlcnNpb246ICcxJwoKICAgIHRhZ3M6CiAgICAgIC0gbmFtZTogcHJvamVjdHMKICAgICAgICBkZXNjcmlwdGlvbjogU3VwZXIgcHJvamVjdHMKCiAgICBjb21wb25lbnRzOgogICAgICBzY2hlbWFzOgogICAgICAgIEFwaVJlc3VsdDoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBBcGkgUmVzdWx0CiAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICBpZDoKICAgICAgICAgICAgICB0aXRsZTogUmVzb3VyY2UgSWQKICAgICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICBQcm9qZWN0OgogICAgICAgICAgZGVzY3JpcHRpb246IFByb2plY3QKICAgICAgICAgIHgtbW9kZWw6IHByb2plY3QucHJvamVjdAogICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgaWQ6CiAgICAgICAgICAgICAgdGl0bGU6IElECiAgICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgICBuYW1lOgogICAgICAgICAgICAgIHRpdGxlOiBOYW1lCiAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCgogICAgcGF0aHM6CiAgICAgIC9wcm9qZWN0L3twcm9qZWN0fToKICAgICAgICBnZXQ6CiAgICAgICAgICB0YWdzOgogICAgICAgICAgICAtIHByb2plY3RzCiAgICAgICAgICBwYXJhbWV0ZXJzOgogICAgICAgICAgICAtIG5hbWU6IHByb2plY3QKICAgICAgICAgICAgICB4LW1vZGVsOgogICAgICAgICAgICAgICAgJHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzL1Byb2plY3QiCiAgICAgICAgICAgICAgaW46IHBhdGgKICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIGRlc2NyaXB0aW9uOiBHZXQgYSBwcm9qZWN0CiAgICAgICAgICBvcGVyYXRpb25JZDogZ2V0X3Byb2plY3QKICAgICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgICAgMjAwOgogICAgICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0FwaVJlc3VsdCcKICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogUHJvamVjdAoKClJlc3VsdCBjb250cm9sbGVyOgoKICAgIGZyb20gb2Rvb3Rvb2xzX29wZW5hcGkub2Rvby5odHRwIGltcG9ydCByZXF1ZXN0LCByb3V0ZSwgQ29udHJvbGxlcgoKICAgIGZyb20gLi5hcGlfbW9kZWxzLmFwaXJlc3VsdCBpbXBvcnQgQXBpUmVzdWx0CgoKICAgIGNsYXNzIFByb2plY3RzKENvbnRyb2xsZXIpOgogICAgICAgICIiIgogICAgICAgIFN1cGVyIHByb2plY3RzCiAgICAgICAgIiIiCgogICAgICAgIEByb3V0ZSgKICAgICAgICAgICAgcm91dGU9WyIvcHJvamVjdC88bW9kZWwoJ3Byb2plY3QucHJvamVjdCcpOnByb2plY3Q+Il0sCiAgICAgICAgICAgIG1ldGhvZHM9WydHRVQnXSwKICAgICAgICAgICAgY3NyZj1GYWxzZSwKICAgICAgICAgICAgdHlwZT0ncGxhaW5qc29uJywKICAgICAgICAgICAgYXV0aD0nbm9uZScsCiAgICAgICAgKQogICAgICAgIGRlZiBnZXRfcHJvamVjdChzZWxmLCBwcm9qZWN0KToKICAgICAgICAgICAgIiIiCiAgICAgICAgICAgIEdldCBhIHByb2plY3QKICAgICAgICAgICAgIiIiCiAgICAgICAgICAgIHBhc3MKICAgICAgICAK readmeEtag: '"1a748b58abea4e5ce09fb2961286198d80c7ec4c"' readmeLastModified: Tue, 07 Mar 2023 17:23:39 GMT repositoryId: 563113258 description: Odoo Tools OpenAPI created: '2022-11-07T23:43:36Z' updated: '2026-01-05T04:46:46Z' language: Python archived: false stars: 8 watchers: 2 forks: 4 owner: odoo-plus logo: https://avatars.githubusercontent.com/u/112507593?v=4 license: GPL-3.0 repoEtag: '"a8d7842356d97cb0b551651823db0a8595eab11c3c1de4edda6589b309fc8229"' repoLastModified: Mon, 05 Jan 2026 04:46:46 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/llacroix/odoo-tools-openapi - source: openapi3 tags repository: https://github.com/mdpearce/lemmy-ts-openapi v3: true id: 110ea9d687cc4a4cebce44becb89c336 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNjaGVtYSBHZW5lcmF0b3IgZm9yIHRoZSBMZW1teSBKUyBDbGllbnQgTGlicmFyeQojIyBPdmVydmlldwpUaGlzIGlzIGEgc2ltcGxlIHNjcmlwdCB3aGljaCBjb252ZXJ0cyB0aGUgW0xlbW15IEpTIGNsaWVudF0oaHR0cHM6Ly9naXRodWIuY29tL0xlbW15TmV0L2xlbW15LWpzLWNsaWVudCkgc291cmNlIGZpbGVzIGludG8gYW4gT3BlbkFQSSAzLjAgSnNvbiBzcGVjaWZpY2F0aW9uLgoKVGhlIGdlbmVyYXRlZCBPcGVuQVBJIHNjaGVtYSBjYW4gYmUgdXNlZCBieSB0aGUgW09wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKSB0byBnZW5lcmF0ZSBhIGNsaWVudCBTREsgaW4gYW55IHN1cHBvcnRlZCBsYW5ndWFnZS9mcmFtZXdvcmsuCgojIyBVc2FnZQoxLiBDbG9uZSB0aGUgW0xlbW15IEpTIGNsaWVudF0oaHR0cHM6Ly9naXRodWIuY29tL0xlbW15TmV0L2xlbW15LWpzLWNsaWVudCkgcmVwb3NpdG9yeSBzb21ld2hlcmUgb24gZGlzawoyLiBGcm9tIHRoZSBgbGVtbXktdHMtb3BlbmFwaWAgcm9vdCwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBwYXJzZSB0aGUgSlMgbGlicmFyeSBhbmQgZ2VuZXJhdGUgYW4gT3BlbkFQSSBzY2hlbWEgZmlsZToKYGBgc2gKbnBtIHN0YXJ0IC0tIC1jIC9wYXRoL3RvL2xlbW15LWpzLWNsaWVudCAtbyAvcGF0aC90by9vdXRwdXQvZmlsZW5hbWUuanNvbgpgYGAKCiMjIENvbnRyaWJ1dGluZwpDb250cmlidXRpb25zIGFyZSB3ZWxjb21lISBJIGFtIG5vdCBhIFR5cGVzY3JpcHQgZGV2ZWxvcGVyIGJ5IHRyYWRlLCBhbmQgdGhlcmUgaXMgbGlrZWx5IGEgbG90IG9mIHJvb20gZm9yIGltcHJvdmVtZW50LgoK readmeEtag: '"288c66caee3e282e72df8b6539b1dd089cc2ba52"' readmeLastModified: Fri, 04 Aug 2023 11:36:51 GMT repositoryId: 658645576 description: OpenAPI schema generator for the Lemmy JS client created: '2023-06-26T08:05:16Z' updated: '2024-11-03T12:42:44Z' language: TypeScript archived: false stars: 6 watchers: 1 forks: 1 owner: mdpearce logo: https://avatars.githubusercontent.com/u/1551362?v=4 license: LGPL-2.1 repoEtag: '"e7cf7be7795b00a67bc9c5412e98a10b7b20e250fad58cfa3704128b56d8e736"' repoLastModified: Sun, 03 Nov 2024 12:42:44 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/ralphbaer/spec2go v3: true id: bc8dff79cc50f188ccbfcc1bf788789d repositoryMetadata: base64Readme: >- IyBTcGVjMkdvIC0g8J+apyBXb3JrIGluIFByb2dyZXNzIChXSVApIPCfmqcKCioqc3BlYzJnbyBpcyBjdXJyZW50bHkgdW5kZXIgZGV2ZWxvcG1lbnQuIEZlYXR1cmVzIG1heSBiZSBpbmNvbXBsZXRlIGFuZCBkb2N1bWVudGF0aW9uIGlzIHN1YmplY3QgdG8gY2hhbmdlLiBVc2UgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgaXMgbm90IHJlY29tbWVuZGVkIHVudGlsIHRoZSBvZmZpY2lhbCByZWxlYXNlLioqCgojIyBXaGF0IGlzIFNwZWMyR28/CgoqKlNwZWMyR28qKiBpcyBwb3dlcmZ1bCBjb21tYW5kLWxpbmUgdG9vbCBhdXRvbWF0ZXMgdGhlIGNyZWF0aW9uIG9mIEdvbGFuZyBhcHBsaWNhdGlvbnMgZGlyZWN0bHkgZnJvbSBPcGVuQVBJIDMuMCBhbmQgR28gcGtnLmdvLmRldi90ZXh0L3RlbXBsYXRlIHNwZWNpZmljYXRpb25zLiBXaXRoIGl0cyBkZWZhdWx0IHNldHRpbmcgdG8gZ2VuZXJhdGUgY29kZSBmb2xsb3dpbmcgdGhlIHByaW5jaXBsZXMgb2YgSGV4YWdvbmFsIEFyY2hpdGVjdHVyZSwgU3BlYzJHbyBlbnN1cmVzIGhpZ2ggbW9kdWxhcml0eSBhbmQgZWFzZSBvZiB0ZXN0aW5nLCBvZmZlcmluZyBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIGJ1aWxkaW5nIHJvYnVzdCBhcHBsaWNhdGlvbnMuCgojIyBLZXkgRmVhdHVyZXMKCi0gKipEaXJlY3QgSW50ZWdyYXRpb24gd2l0aCBPcGVuQVBJIDMuMCoqOiBDb252ZXJ0IHlvdXIgT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbnMgaW50byB3ZWxsLXN0cnVjdHVyZWQgR29sYW5nIGNvZGUgc2VhbWxlc3NseS4KLSAqKkhleGFnb25hbCBBcmNoaXRlY3R1cmUqKjogQmVnaW4geW91ciBwcm9qZWN0cyB3aXRoIGFuIGFyY2hpdGVjdHVyZSB0aGF0IHN1cHBvcnRzIGFuZCBlbmhhbmNlcyBtYWludGFpbmFiaWxpdHkgYW5kIHNjYWxhYmlsaXR5LgotICoqQ3VzdG9taXphYmxlIENvZGUgR2VuZXJhdGlvbioqOiBVdGlsaXplIEdvIHBrZy5nby5kZXYvdGV4dC90ZW1wbGF0ZSB0ZW1wbGF0ZXMgdG8gc2hhcGUgdGhlIG91dHB1dCBjb2RlIHRvIGJldHRlciBmaXQgeW91ciBwcm9qZWN0IHJlcXVpcmVtZW50cy4KLSAqKkNMSS1CYXNlZCBVdGlsaXR5Kio6IFJ1biBhcyBhIHN0YW5kYWxvbmUgY29tbWFuZC1saW5lIHRvb2wsIGFsbG93aW5nIGludGVncmF0aW9uIGludG8gYW55IHBhcnQgb2YgeW91ciBkZXZlbG9wbWVudCBwaXBlbGluZS4KCiMjIEluc3RhbGxhdGlvbgoKU3BlYzJHbyBpcyBlYXN5IHRvIGluc3RhbGwgd2l0aCBHby4gRW5zdXJlIHlvdSBoYXZlIEdvIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbSAodmVyc2lvbiAxLjE2IG9yIGxhdGVyIGlzIHJlY29tbWVuZGVkKS4gWW91IGNhbiBpbnN0YWxsIFNwZWMyR28gZ2xvYmFsbHkgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgc2gKZ28gaW5zdGFsbCBnaXRodWIuY29tL1JhbHBoYmFlci9zcGVjMmdvQGxhdGVzdApgYGAKClRoaXMgY29tbWFuZCB3aWxsIGluc3RhbGwgc3BlYzJnbyBnbG9iYWxseSBvbiB5b3VyIG1hY2hpbmUsIGFsbG93aW5nIHlvdSB0byBydW4gaXQgZnJvbSBhbnl3aGVyZSB3aXRoaW4geW91ciB0ZXJtaW5hbC4KCiMjIFF1aWNrIFN0YXJ0IEd1aWRlCgojIyMgU2V0dGluZyBVcCBZb3VyIFByb2plY3QKRW5zdXJlIHlvdXIgT3BlbkFQSSAzLjAgWUFNTCBmaWxlcyBhcmUgcmVhZHkuIEZvciBpbnN0YW5jZSwgeW91IG1pZ2h0IGhhdmUgYW4gQVBJIHNwZWNpZmljYXRpb24gZm9yIGEgbGVkZ2VyIGNvbXBvbmVudCB3aXRoaW4gYSBmaW5hbmNpYWwgYXBwbGljYXRpb24gbG9jYXRlZCBhdCAuL3BhdGgvdG8veW91ci9vcGVuYWkvZmlsZS55bWwuCgojIyMgR2VuZXJhdGluZyBDb2RlClRvIGdlbmVyYXRlIEdvbGFuZyBjb2RlIHVzaW5nIFNwZWMyR28sIHVzZSB0aGUgZm9sbG93aW5nIHN5bnRheDoKCmBgYHNoCnNwZWMyZ28gZ2VuZXJhdGUgLWkgLi9wYXRoL3RvL3lvdXIvb3BlbmFpL2ZpbGUueW1sIC1vIC4KYGBgCgpUaGlzIGNvbW1hbmQgd2lsbCBpbnN0cnVjdCBTcGVjMkdvIHRvOgoKLSAtaSAoLS1pbnB1dCk6IFBhdGggdG8geW91ciBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZS4KLSAtbyAoLS1vdXRwdXQpOiBPdXRwdXQgZGlyZWN0b3J5IHdoZXJlIHRoZSBnZW5lcmF0ZWQgR29sYW5nIGNvZGUgd2lsbCBiZSBwbGFjZWQuCgojIyMgQ3VzdG9taXppbmcgT3V0cHV0IHdpdGggVGVtcGxhdGVzClRvIGN1c3RvbWl6ZSB0aGUgb3V0cHV0LCB5b3UgY2FuIG1vZGlmeSBvciBjcmVhdGUgbmV3IEdvIHRtcGwgdGVtcGxhdGVzLgoKQSBzaW1wbGUgR28gdG1wbCB0ZW1wbGF0ZSBtaWdodCBsb29rIGxpa2UgdGhpczoKCmBgYAp7e2RlZmluZSAibWFpbiJ9fQpwYWNrYWdlIG1haW4KCmltcG9ydCAoCgkibG9nIgoJIm5ldC9odHRwIgoJLy8gV0FSTklORyEKCS8vIENoYW5nZSB0aGlzIHRvIGEgZnVsbHktcXVhbGlmaWVkIGltcG9ydCBwYXRoCgkvLyBvbmNlIHlvdSBwbGFjZSB0aGlzIGZpbGUgaW50byB5b3VyIHByb2plY3QuCgkvLyBGb3IgZXhhbXBsZSwKCS8vCgkvLyAgICBzdyAiZ2l0aHViLmNvbS9teW5hbWUvbXlyZXBvL3t7LlNvdXJjZUZvbGRlcn19IgoJLy8KCXt7LlBhY2thZ2VOYW1lfX0gIi4ve3suU291cmNlRm9sZGVyfX0iCikKCmZ1bmMgbWFpbigpIHsKCWxvZy5QcmludGxuKCJTZXJ2ZXIgc3RhcnRlZCBvbiA6MzAwMCIpCglodHRwLkhhbmRsZUZ1bmMoIi8iLCBmdW5jKHcgaHR0cC5SZXNwb25zZVdyaXRlciwgciAqaHR0cC5SZXF1ZXN0KSB7CgkJdy5Xcml0ZShbXWJ5dGUoIkhlbGxvLCBXb3JsZCEiKSkKCX0pCglsb2cuRmF0YWwoaHR0cC5MaXN0ZW5BbmRTZXJ2ZSgiOjMwMDAiLCBuaWwpKQp9Cnt7ZW5kfX0KYGBgCgpBZGp1c3QgdGhlIHRlbXBsYXRlIHRvIGluY2x1ZGUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG9yIGNvZGluZyBzdGFuZGFyZHMgeW91ciBwcm9qZWN0IHJlcXVpcmVzLgoKIyMgQWR2YW5jZWQgQ29uZmlndXJhdGlvbgpZb3UgY2FuIGZ1cnRoZXIgY29uZmlndXJlIFNwZWMyR28gdGhyb3VnaCB2YXJpb3VzIGNvbW1hbmQtbGluZSBmbGFncyB0byBhZGFwdCB0aGUgdG9vbCB0byB5b3VyIHNwZWNpZmljIHdvcmtmbG93cyBhbmQgcHJlZmVyZW5jZXMuIEZvciBleGFtcGxlLCBhZGRpbmcgdmVyYm9zZSBvdXRwdXQsIGNvbmZpZ3VyaW5nIEFQSSB2ZXJzaW9uaW5nLCBvciBzcGVjaWZ5aW5nIGRpZmZlcmVudCB0ZW1wbGF0ZSBwYXRocy4KCiMjIENvbnRyaWJ1dGluZwpXZSB3ZWxjb21lIGNvbnRyaWJ1dGlvbnMgZnJvbSB0aGUgY29tbXVuaXR5ISBJZiB5b3UgaGF2ZSBpbXByb3ZlbWVudHMgb3IgYnVnIGZpeGVzLCBwbGVhc2UgZm9yayB0aGUgcmVwb3NpdG9yeSBhbmQgc3VibWl0IGEgcHVsbCByZXF1ZXN0LiBGb3IgbWFqb3IgY2hhbmdlcywgcGxlYXNlIG9wZW4gYW4gaXNzdWUgZmlyc3QgdG8gZGlzY3VzcyB3aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGNoYW5nZS4KCiMjIExpY2Vuc2UKVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAtIHNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgoKIyMgQWNrbm93bGVkZ21lbnRzClRoYW5rcyB0byB0aGUgT3BlbkFQSSBJbml0aWF0aXZlIGZvciBtYWludGFpbmluZyB0aGUgc3BlY2lmaWNhdGlvbi4KQ29udHJpYnV0b3JzIHdobyBoYXZlIGhlbHBlZCBzaGFwZSBTcGVjMkdvIGludG8gYSByZWxpYWJsZSB0b29sIGZvciBkZXZlbG9wZXJzLgpXZSBob3BlIFNwZWMyR28gd2lsbCBtYWtlIHlvdXIgZGV2ZWxvcG1lbnQgcHJvY2VzcyBtb3JlIGVmZmljaWVudCBhbmQgZW5qb3lhYmxlIQoK readmeEtag: '"e10f80190da2dd2596ad46fe16db3f93db8015b3"' readmeLastModified: Fri, 26 Apr 2024 01:21:04 GMT repositoryId: 792058462 description: >- Streamline Go code generation from OpenAPI 3.0 specs and Go templates using this CLI tool. It implements the Hexagonal Architecture pattern and supports dependency injection through google/wire. created: '2024-04-25T22:33:14Z' updated: '2024-12-28T21:53:47Z' language: Shell archived: false stars: 6 watchers: 1 forks: 0 owner: Ralphbaer logo: https://avatars.githubusercontent.com/u/10503123?v=4 license: MIT repoEtag: '"fca73b89dd97bd893e30b20c656d1812c3e7fe40511309e31376e26944d5975f"' repoLastModified: Sat, 28 Dec 2024 21:53:47 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/jean85/symfony-openapi-example v3: true repositoryMetadata: base64Readme: >- IyBTeW1mb255IE9wZW5BUEkgZXhhbXBsZQpBbiBleGFtcGxlIG9mIHVzaW5nIGFuIE9wZW5BUEkgc3BlYyBpbiBhIFN5bWZvbnkgYXBwbGljYXRpb24uCgpUaGlzIHJlcG9zaXRvcnkgc2VydmVzIGFzIGNvZGUgZXhhbXBsZSBmb3IgW2EgdGFsa10oaHR0cHM6Ly9hbGVzc2FuZHJvbGFpLmRldi90YWxrcy8yMDIxLXNmZGF5LWFwaS1jb250cmFjdHMtb3BlbmFwaS1kdXJpbmctZGV2ZWxvcG1lbnQvKSB0aGF0IEkgcHJlc2VudGVkIGF0IFtzZmRheSBAIGxvY2FsaG9zdCAyMDIxXShodHRwczovLzIwMjEuc2ZkYXkuaXQpCg== readmeEtag: '"82269e6d705dc1b1fd45e154549ce1e2edd4c0c1"' readmeLastModified: Thu, 13 May 2021 07:37:34 GMT repositoryId: 349101796 description: An example of using an OpenAPI spec in a Symfony application created: '2021-03-18T14:21:00Z' updated: '2022-05-05T07:55:22Z' language: PHP archived: false stars: 6 watchers: 1 forks: 1 owner: Jean85 logo: https://avatars.githubusercontent.com/u/6729988?v=4 license: MIT repoEtag: '"11060c3bcbb88ce27a2972125a551485542918b5bc179a7ff5797b1b417e7e38"' repoLastModified: Thu, 05 May 2022 07:55:22 GMT foundInMaster: true category: - SDK - Server Implementations id: a4f86eaf0c9614329dcf62e5b3118e0c - source: openapi3 tags repository: https://github.com/misl/openapi-validator-maven-plugin v3: true repositoryMetadata: base64Readme: >- b3BlbmFwaS12YWxpZGF0b3ItbWF2ZW4tcGx1Z2luCj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkEgTWF2ZW4gcGx1Z2luIHRvIHN1cHBvcnQgdmFsaWRhdGlvbiBvZiBhbmQgY29udmVyc2lvbiAoWUFNTCB2cyBKU09OKSB0byBPcGVuQVBJIChzd2FnZ2VyKSBmaWxlcyAgdXNpbmcgdGhlIFtTd2FnZ2VyIFBhcnNlciBsaWJyYXJ5XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1wYXJzZXIpLgoKSXQgbm90IG9ubHkgdmVyaWZpZXMgd2hldGhlciB0aGUgQVBJIHNwZWNpZmljYXRpb24gZmlsZXMgYXJlIHZhbGlkLCBidXQgYWxzbyBtZXJnZXMgc3BsaXR0ZWQgZmlsZXMgaW50byBhIHNpbmdsZSBZQU1MIG9yIEpTT04gZmlsZS4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bGwgd2hlcmUgdG9vbHMgY2FuIG5vdCBjb3BlIHdpdGggSlNPTiBgJHJlZmAgcmVmZXJlbmNlcyB0byBleHRlcm5hbCBmaWxlcy4KCk1vcmUgaW5mbyBvbiBzcGxpdHRlZCBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZXMgcmVhZCBbRGVzaWduIFdlYiBBUElzXShodHRwczovL2FwaWhhbmR5bWFuLmlvL3dyaXRpbmctb3BlbmFwaS1zd2FnZ2VyLXNwZWNpZmljYXRpb24tdHV0b3JpYWwtcGFydC04LXNwbGl0dGluZy1zcGVjaWZpY2F0aW9uLWZpbGUvKQoKVXNhZ2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKQWRkIHRvIHlvdXIgYGJ1aWxkLT5wbHVnaW5zYCBzZWN0aW9uIChkZWZhdWx0IHBoYXNlIGlzIGBnZW5lcmF0ZS1zb3VyY2VzYCBwaGFzZSkKYGBgeG1sCjxwbHVnaW4+CiAgPGdyb3VwSWQ+aXQudHJhZWNrLnRvb2xzLm9wZW5hcGk8L2dyb3VwSWQ+CiAgPGFydGlmYWN0SWQ+b3BlbmFwaS12YWxpZGF0b3ItbWF2ZW4tcGx1Z2luPC9hcnRpZmFjdElkPgogIDx2ZXJzaW9uPjEuMC4yPC92ZXJzaW9uPgogIDxleGVjdXRpb25zPgogICAgPGV4ZWN1dGlvbj4KICAgICAgPGdvYWxzPgogICAgICAgIDxnb2FsPmdlbmVyYXRlPC9nb2FsPgogICAgICA8L2dvYWxzPgogICAgICA8Y29uZmlndXJhdGlvbj4KICAgICAgICA8aW5wdXRTcGVjPiR7cHJvamVjdC5iYXNlZGlyfS9zcmMvbWFpbi9yZXNvdXJjZXMvYXBpLnlhbWw8L2lucHV0U3BlYz4KICAgICAgICA8b3V0cHV0UGF0aD4ke3Byb2plY3QuYnVpbGQuZGlyZWN0b3J5fS9nZW5lcmF0ZWQtc3BlY2lmaWNhdGlvbjwvb3V0cHV0UGF0aD4KICAgICAgICA8b3V0cHV0RmlsZW5hbWU+b3BlbmFwaTwvb3V0cHV0RmlsZW5hbWU+CiAgICAgICAgPG91dHB1dEZvcm1hdD5KU09OQU5EWUFNTDwvb3V0cHV0Rm9ybWF0PgogICAgICA8L2NvbmZpZ3VyYXRpb24+CiAgICA8L2V4ZWN1dGlvbj4KICA8L2V4ZWN1dGlvbnM+CjwvcGx1Z2luPgpgYGAKCkZvbGxvd2VkIGJ5OgoKYGBgCm12biBjbGVhbiBjb21waWxlCmBgYAoKIyMjIEdlbmVyYWwgQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzCgpQYXJhbWV0ZXIgfCBEZXNjcmlwdGlvbiB8IFJlcXVpcmVkIHwgRGVmYXVsdAotLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0KYGlucHV0U3BlY2AgfCBPcGVuQVBJIFNwZWMgZmlsZSBwYXRoIHwgdHJ1ZSB8CmBvdXRwdXRQYXRoYCB8IHRhcmdldCBvdXRwdXQgcGF0aCB8IGZhbHNlIHwgYCR7cHJvamVjdC5idWlsZC5kaXJlY3Rvcnl9L2dlbmVyYXRlZC1zcGVjaWZpY2F0aW9uYApgb3V0cHV0RmlsZW5hbWVgIHwgT3V0cHV0IGZpbGVuYW1lICh3aXRob3V0IGV4dGVuc2lvbikgfCBmYWxzZSB8IG9wZW5hcGkKYG91dHB1dEZvcm1hdGAgfCBPdXRwdXQgZmlsZSBmb3JtYXQgKGBKU09OYCwgYFlBTUxgLCBgSlNPTkFORFlBTUxgKSB8IGZhbHNlIHwgSlNPTgpgZW5jb2RpbmdgIHwgZW5jb2RpbmcgdG8gdXNlIGZvciBvdXRwdXQgZmlsZXMgfCBmYWxzZSB8ICR7cHJvamVjdC5idWlsZC5zb3VyY2VFbmNvZGluZ30KYHByZXR0eVByaW50YCB8IHdoZXRoZXIgdG8gcHJldHR5IHByaW50ICh0cnVlKSBvdXRwdXQgb3Igbm90IHwgZmFsc2UgfCB0cnVlCgojIyMgU2FtcGxlIGNvbmZpZ3VyYXRpb25zCgpQbGVhc2Ugc2VlIFtleGFtcGxlIGNvbmZpZ3VyYXRpb25zXShleGFtcGxlcykgZm9yIGhvdyB0byB1c2UgdGhpcyBtYXZlbiBwbHVnaW4uCg== readmeEtag: '"72475f2d5220fa2950adcd11ddee93c7942fe953"' readmeLastModified: Sat, 19 Feb 2022 11:28:15 GMT repositoryId: 208227598 description: Plugin to validate and merge splitted OpenAPI specification files. created: '2019-09-13T08:46:19Z' updated: '2024-10-15T02:48:57Z' language: Java archived: false stars: 6 watchers: 1 forks: 3 owner: misl logo: https://avatars.githubusercontent.com/u/2040396?v=4 repoEtag: '"3490bd4d5c44ef2c38650b8832686329ababbb373d86f17851b6be0dc5f34fb6"' repoLastModified: Tue, 15 Oct 2024 02:48:57 GMT foundInMaster: true category: - Description Validators - Parsers id: 36cc2908099c7f4919d0f26f95932d7f - source: - openapi3 tags - openapi31 tags repository: https://github.com/hasanqq/openapi-starter v3_1: true id: 831fdb2a0ad33b8049fee532d28cee56 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFN0YXJ0ZXIKClVwZ3JhZGVkIHZlcnNpb24gb2YgUmVkb2NseSdzIFtvcGVuYXBpLXN0YXJ0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L29wZW5hcGktc3RhcnRlcikgcmVwb3NpdG9yeSB3aXRoIHNvbWUgZmVhdHVyZXMgbGlrZToKCi0gICBHZW5lcmF0ZSBwb3N0bWFuIGNvbGxlY3Rpb24gb24gYnVpbGQKLSAgIFZpc3VhbCBpbXByb3ZlbWVudHMgKGZvbnQsIGJvcmRlci1yYWRpdXMsIHBhZGRpbmcgZXRjLikKLSAgIEdpdEh1YiB3b3JrZmxvdyBmb3IgbGludAoKIyMgU2NyZWVuc2hvdAoKIVtTY3JlZW5zaG90XSguLy5naXRodWIvc2NyZWVuc2hvdC5wbmcpCgojIyBDb21tYW5kcwoKTGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMuCgp8IENvbW1hbmQgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBgbnBtIHJ1biBkZXZgICAgICB8IFN0YXJ0IGEgZGV2IHNlcnZlciB3aXRoIGF1dG8gcmVmcmVzaC4gfAp8IGBucG0gcnVuIGJ1aWxkYCAgIHwgQnVpbGQgc3RhdGljIGZpbGVzLiAgICAgICAgICAgICAgICAgICB8CnwgYG5wbSBydW4gcHJldmlld2AgfCBQcmV2aWV3IHRoZSBidWlsZGVkIHZlcnNpb24uICAgICAgICAgIHwKfCBgbnBtIHJ1biBsaW50YCAgICB8IENoZWNrIHRoZSBPcGVuQVBJIHNwZWMuICAgICAgICAgICAgICAgfAoKIyMgQ29uZmlndXJhdGlvbgoKTGlzdCBvZiBhdmFpbGFibGUgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKfCBGaWxlICAgICAgICAgICAgICAgICAgICAgfCBEb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgYHJlZG9jbHkueWFtbGAgICAgICAgICAgIHwgW1ZpZXddKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9yZWRvYy9jb25maWcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgcG9zdG1hbi1jb252ZXJ0ZXIuanNvbmAgfCBbVmlld10oaHR0cHM6Ly9naXRodWIuY29tL3Bvc3RtYW5sYWJzL29wZW5hcGktdG8tcG9zdG1hbi9ibG9iL0hFQUQvT1BUSU9OUy5tZCkgfAoKCiMjIEV4YW1wbGVzClRoaXMgaXMgYSBsaXN0IG9mIEFQSSBkb2N1bWVudGF0aW9ucyB0aGF0IGFyZSB1c2VzIHRoaXMgdGVtcGxhdGUuCgoqIGh0dHBzOi8vYXBpLnNoaXBzZ28uY29tL2RvY3MvdjIv readmeEtag: '"ff3d90a7ad3b346a9d99d92d055ba019e2a6ead0"' readmeLastModified: Sat, 04 Jan 2025 14:18:56 GMT repositoryId: 846624183 description: >- API documentation boilerplate for redoc (OpenAPI) with some extra features like automatically generated postman collection. created: '2024-08-23T15:47:58Z' updated: '2025-01-14T13:41:46Z' language: TypeScript archived: false stars: 6 watchers: 1 forks: 0 owner: HasanQQ logo: https://avatars.githubusercontent.com/u/44672191?v=4 repoEtag: '"77bdfad6b3d82360afc5752fb51bc348d832b1415419731ac256ea116dbfab92"' repoLastModified: Tue, 14 Jan 2025 13:41:46 GMT category: Server Implementations foundInMaster: true v3: true - source: openapi3 tags repository: https://github.com/zchee/protoc-gen-openapi v3: true repositoryMetadata: base64Readme: >- IyBwcm90b2MtZ2VuLW9wZW5hcGkKClRoaXMgcGFja2FnZSBjb3B5IGZyb20gW2lzdGlvLmlvL3Rvb2xzL29wZW5hcGkvcHJvdG9jLWdlbi1vcGVuYXBpQDU5M2E0MWM3NmM1Y10oaHR0cHM6Ly9naXRodWIuY29tL2lzdGlvL3Rvb2xzL3RyZWUvNTkzYTQxYzc2YzVjODRhNGNkNTFhNGFiMGMzNDU2MzBjNWVkMzBiYS9vcGVuYXBpL3Byb3RvYy1nZW4tb3BlbmFwaSkuCgojIyBXaGF0J3MgdGhpcyBmb3I/CgpgcHJvdG9jLWdlbi1vcGVuYXBpYCBpcyBhIHBsdWdpbiBmb3IgdGhlIEdvb2dsZSBwcm90b2NvbCBidWZmZXIgY29tcGlsZXIgdG8gZ2VuZXJhdGUKb3BlbkFQSSBWMyBzcGVjIGZvciBhbnkgZ2l2ZW4gaW5wdXQgcHJvdG9idWYuIEl0IHJ1bnMgYXMgYSBgcHJvdG9jLWdlbi1gIGJpbmFyeSB0aGF0IHRoZQpwcm90b2J1ZiBjb21waWxlciBpbmZlcnMgZnJvbSB0aGUgYG9wZW5hcGlfb3V0YCBmbGFnLgoKIyMgQnVpbGQgYHByb3RvYy1nZW4tb3BlbmFwaWAKCmBwcm90b2MtZ2VuLW9wZW5hcGlgIGlzIHdyaXR0ZW4gaW4gR28sIHNvIGVuc3VyZSB0aGF0IGlzIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbS4gWW91CmNhbiBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBvbiB0aGUgW2dvbGFuZyB3ZWJzaXRlXShodHRwczovL2dvbGFuZy5vcmcvZG9jL2luc3RhbGwpIG9yCm9uIERlYmlhbiBvciBVYnVudHUsIHlvdSBjYW4gaW5zdGFsbCBpdCBmcm9tIHRoZSBwYWNrYWdlIG1hbmFnZXI6CgpgYGBiYXNoCnN1ZG8gYXB0LWdldCBpbnN0YWxsIC15IGdvbGFuZwpgYGAKClRvIGJ1aWxkLCBmaXJzdCBlbnN1cmUgeW91IGhhdmUgdGhlIHByb3RvY29sIGNvbXBpbGVyIChwcm90b2MpOgoKYGBgYmFzaApnbyBnZXQgZ2l0aHViLmNvbS9nb2xhbmcvcHJvdG9idWYvcHJvdG8KYGBgClRvIGJ1aWxkLCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20gdGhpcyBwcm9qZWN0IGRpcmVjdG9yeToKCmBgYGJhc2gKZ28gYnVpbGQKYGBgCgpUaGVuIGVuc3VyZSB0aGUgcmVzdWx0aW5nIGBwcm90b2MtZ2VuLW9wZW5hcGlgIGJpbmFyeSBpcyBpbiB5b3VyIGBQQVRIYC4gQSByZWNvbW1lbmRlZCBsb2NhdGlvbgppcyBgJEhPTUUvYmluYDoKCmBgYGJhc2gKY3AgcHJvdG9jLWdlbi1vcGVuYXBpICRIT01FL2JpbgpgYGAKClNpbmNlIHRoZSBmb2xsb3dpbmcgaXMgb2Z0ZW4gaW4geW91ciBgJEhPTUUvLmJhc2hyY2AgZmlsZToKCmBgYGJhc2gKZXhwb3J0IFBBVEg9JEhPTUUvYmluOiRQQVRICmBgYAoKIyMgVXNpbmcgcHJvdG9jLWdlbi1vcGVuYXBpCgotLS0KKipUSVAqKgoKVGhlIC1JIG9wdGlvbiBpbiBwcm90b2MgaXMgdXNlZnVsIHdoZW4geW91IG5lZWQgdG8gc3BlY2lmeSBwcm90byBwYXRocyBmb3IgaW1wb3J0cy4KCi0tLQoKVGhlbiB0byBnZW5lcmF0ZSB0aGUgT3BlbkFQSSBzcGVjIG9mIHRoZSBwcm90b2J1ZiBkZWZpbmVkIGJ5IGZpbGUucHJvdG8sIHJ1bgoKYGBgYmFzaApwcm90b2MgLS1vcGVuYXBpX291dD1vdXRwdXRfZGlyZWN0b3J5IGlucHV0X2RpcmVjdG9yeS9maWxlLnByb3RvCmBgYAoKV2l0aCB0aGF0IGlucHV0LCB0aGUgb3V0cHV0IHdpbGwgYmUgd3JpdHRlbiB0bwoKCW91dHB1dF9kaXJlY3RvcnkvZmlsZS5qc29uCgpPdGhlciBzdXBwb3J0ZWQgb3B0aW9ucyBhcmU6CiogICBgcGVyX2ZpbGVgCiAgICAqICAgd2hlbiBzZXQgdG8gYHRydWVgLCB0aGUgb3V0cHV0IGlzIHBlciBwcm90byBmaWxlIGluc3RlYWQgb2YgcGVyIHBhY2thZ2UuCiogICBgc2luZ2xlX2ZpbGVgCiAgICAqICAgd2hlbiBzZXQgdG8gYHRydWVgLCB0aGUgb3V0cHV0IGlzIGEgc2luZ2xlIGZpbGUgb2YgYWxsIHRoZSBpbnB1dCBwcm90b3Mgc3BlY2lmaWVkLgoqICAgYHVzZV9yZWZgCiAgICAqICAgd2hlbiBzZXQgdG8gYHRydWVgLCB0aGUgb3V0cHV0IHVzZXMgdGhlIGAkcmVmYCBmaWVsZCBpbiBPcGVuQVBJIHNwZWMgdG8gcmVmZXJlbmNlIG90aGVyIHNjaGVtYXMuCiogICBgeWFtbGAKICAgICogICB3aGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBvdXRwdXQgaXMgaW4geWFtbCBmaWxlLgo= readmeEtag: '"f31ced1b88dfdc36857ffb7531a5422beb32eb21"' readmeLastModified: Sat, 07 Sep 2019 17:43:11 GMT repositoryId: 207004447 description: >- protoc-gen-openapi is a plugin for the Google protocol buffer compiler to generate openAPI V3 spec for any given input protobuf. created: '2019-09-07T17:43:22Z' updated: '2023-04-17T23:58:47Z' language: Go archived: false stars: 6 watchers: 1 forks: 3 owner: zchee logo: https://avatars.githubusercontent.com/u/6366270?v=4 license: Apache-2.0 repoEtag: '"0cc9fbeb0f63c8c67386779e64ad98fe960dd022fe3e06c49d2c8b58be544489"' repoLastModified: Mon, 17 Apr 2023 23:58:47 GMT foundInMaster: true category: - Converters - Parsers id: 3c9503e39e26f0a16d4a9d0dd134824a - source: openapi3 tags repository: https://github.com/codecentric/reedelk-module-rest v3: true repositoryMetadata: base64Readme: >- IyBSZWVkZWxrIE1vZHVsZSBSRVNUCgpSRVNUIGNvbXBvbmVudHMgYW5kIGNvbm5lY3RvcnMgZm9yIFJlZWRlbGsgSW50ZWdyYXRpb24gUGxhdGZvcm06IGh0dHBzOi8vd3d3LnJlZWRlbGsuY29tL2RvY3VtZW50YXRpb24KCiMjIyBDcmVhdGluZyBhIHRlc3Qgb25seSBTU0wgQ2VydGlmaWNhdGUKCiogQ3JlYXRlIGEgY2VydGlmaWNhdGUgd2l0aCBTZWxmU2lnbmVkQ2VydGlmaWNhdGVCdWlsZGVyCiogY2FjZXJ0cyBmaWxlIChzdG9yZXMgdGhlIGNlcnRpZmljYXRlcykgaXMgaW4gdGhlIEphdmEgSG9tZSAoZS5nIC9MaWJyYXJ5L0phdmEvSmF2YVZpcnR1YWxNYWNoaW5lcy9qZGsxLjguMF82Ni5qZGsvQ29udGVudHMvSG9tZS9qcmUvbGliL3NlY3VyaXR5KQoqIExpc3QgY2VydGlmaWNhdGVzOiBrZXl0b29sIC1saXN0IC1rZXlzdG9yZSBjYWNlcnRzCiogRGVsZXRlIGNlcnRpZmljYXRlIChieSBnaXZlbiBhbGlhcyk6IHN1ZG8ga2V5dG9vbCAtZGVsZXRlIC1hbGlhcyByZWVkZWxrdGVzdCAta2V5c3RvcmUgY2FjZXJ0cwoqIEFkZCBjZXJ0aWZpY2F0ZSAod2l0aCBhbGlhcyk6IHN1ZG8ga2V5dG9vbCAtaW1wb3J0IC10cnVzdGNhY2VydHMgLWZpbGUgL1VzZXJzL3VzZXJuYW1lL0Rlc2t0b3AvbXljZXJ0LmNydCAtYWxpYXMgbG9jYWxob3N0IC1rZXlzdG9yZSBjYWNlcnRzIAo= readmeEtag: '"961767867872af867b86f065cd6e0e2522cf344f"' readmeLastModified: Fri, 23 Apr 2021 22:59:16 GMT repositoryId: 256693326 description: Reedelk REST module created: '2020-04-18T07:21:44Z' updated: '2025-03-17T09:09:35Z' language: Java archived: false stars: 5 watchers: 0 forks: 2 owner: codecentric logo: https://avatars.githubusercontent.com/u/1009716?v=4 license: Apache-2.0 repoEtag: '"4fc0ec88d267d7b03067f25b21e7a7c65349be949ea95cb216a319644a35e478"' repoLastModified: Mon, 17 Mar 2025 09:09:35 GMT foundInMaster: true category: Parsers id: 4e253326e6db56c587fbb0c78c612baf - source: openapi3 tags repository: https://github.com/numberfour/openapi-scala v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNjYWxhCgpUaGlzIHByb2plY3QgY29udGFpbnMgYW4gb3BpbmlvbmF0ZWQgbGlicmFyeSBhbmQgU0JUIFBsdWdpbiBmb3IgU2NhbGEgY29kZSBnZW5lcmF0aW9uIGZyb20gW09wZW5BUEkgMy4wXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIGNvbXBsaWFudCBZQU1MLiAKClRoaXMgd2lsbCBnZW5lcmF0ZSBkYXRhIHN0cnVjdHVyZXMoaS5lLiwgc2NoZW1hcyBvciB0eXBlcyksIENpcmNlIEpTT04gc2VyaWFsaXplcnMsIGFuZCBQYXRocyAoaS5lLiwgcm91dGUgZGVmaW5pdGlvbnMpIGZvciBSRVNUIEFQSXMuCgpXZSBkbyBub3Qgc3VwcG9ydCBhbGwgT3BlbkFQSSAzLjAgZmVhdHVyZXMuIEZvciBtb3JlIGRldGFpbHMgb24gd2hhdCBpcyBzdXBwb3J0ZWQsIGxvb2sgYXQgdGhlIFtMaW1pdGF0aW9uc10oI2xpbWl0YXRpb25zKSBzZWN0aW9uLgoKIyMgTW9kdWxlcwoKIyMjIHNidC1vcGVuYXBpClRoZSBTQlQgbW9kdWxlIGBzYnQtb3BlbmFwaWAgaXMgdGhlIGludGVyZmFjZSBmb3IgdGhlIGdlbmVyYXRvciB0b29sY2hhaW4gYW5kIGNvbnRhaW5zOgphKSBhbiBpbnRlcmZhY2UgdG8gZWFzaWx5IGFkZCB0aGUgb3BlbkFQSSBnZW5lcmF0b3IgdG8gYSBwcm9qZWN0CmIpIFB1dCBleHRlcm5hbCBvcGVuQVBJIHJlc291cmNlcy9kZWZpbml0aW9ucy95YW1sLWZpbGVzIG5leHQgdG8gaW50ZXJuYWwgZGVmaW5pdGlvbnMgdG8gbWFrZSB0aGVtIHJlZmVyYWJsZS4gVGhpcyBlbmFibGVzCnNoYXJpbmcgYXJ0aWZhY3QgYWNyb3NzIG11bHRpcGxlIG9wZW5BUEkgcHJvamVjdHMgKGxpa2Ugc2hhcmVkIGVycm9yIG1lc3NhZ2VzLyBkYXRhIHN0cnVjdHVyZXMpLgpjKSBsb2dpYyB0byBsb2FkLCByZXNvbHZlIGFuZCBhZ2dyZWdhdGUgb3BlbkFQSSBkZWZpbml0aW9ucyB1c2luZyB0aGUgaW8uc3dhZ2dlci5wYXJzZXIgYW5kIGdlbmVyYXRlZCBhIHNpbmdsZSBjb21iaW5lZAogb3BlbmFwaS5qc29uIGRlZmluaXRpb24gYXMgb3V0cHV0CmQpIHRyaWdnZXIgY29kZSBnZW5lcmF0aW9uLiAoYG9wZW5hcGktc2NhbGFgKSAKCiMjIyBvcGVuYXBpLXNjYWxhCmBvcGVuYXBpLXNjYWxhYHMgbWFpbiByZXNwb25zaWJpbGl0eSBpcyB0byBwYXJzZSBhIHNpbmdsZSBvcGVuQVBJLmpzb24gZmlsZSBpbnRvIG1lbW9yeSAoYGFzdGApLCB0cmFuc2Zvcm0gaXQgaW50byBhCmdlbmVyYXRvciBmcmllbmRseSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24gKGByZXByYCkgYW5kIGdlbmVyYXRlIHNjYWxhIGNvZGUgKGBnZW5lcmF0b3JgKS4KCiMjIyBvcGVuYXBpLWxpYiAmIG9wZW5hcGktaHR0NHMtbGliCkxpYnJhcmllcyB1c2VkIGJ5IHRoZSBnZW5lcmF0ZWQgY29kZS4KCiMjIyMgUm91dGVzCgpXZSBzdXBwb3J0IGRpZmZlcmVudCB0eXBlcyBvZiBSb3V0ZSBnZW5lcmF0aW9uLCBkZXBlbmRpbmcgb24gdGhlIGJhY2tlbmQgeW91IG5lZWQgaXQgZm9yLiAgLy9UT0RPIHdoaWNoIGJhY2tlbmRzIGRvIHdlIGhhdmUgYW5kIGhvdyBkbyB3ZSBjb25maWd1cmUgaXQ/CgotIFRoZSBnZW5lcmljIFJvdXRlcyBhcmUgZWFjaCB0cmFuc2xhdGVkIHRvIGEgU2NhbGEgYHRyYWl0YCBkZWNsYXJpbmcgaW50ZXJmYWNlcyBmb3IgdGhhdCBwYXJ0aWN1bGFyIEhUVFAgcm91dGUuCi0gVGhlIGh0dHA0cyBSb3V0ZXMgdHJhbnNsYXRlIGludG8gdHdvIGZpbGVzLCBvbmUgZmlsZSB3aXRoIGEgdHJhaXQgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiB5b3UnbGwgbmVlZCB0byBwcm92aWRlIGFuZCAKb25lIGZpbGUgd2l0aCBhbiBvYmplY3QgYXBwbHkgZnVuY3Rpb24gb2Ygd2hpY2ggYWNjZXB0cyBtZW50aW9uZWQgaW1wbGVtZW50YXRpb24gdHJhaXQuIAoKVGhlIG5hbWVzIG9mIHRoZSBmdW5jdGlvbnMgaW1wbGVtZW50aW5nIHRoZSByb3V0ZSBhcmUgZWl0aGVyCiBhKSB0aGUgY29uY2F0ZW5hdGlvbiBvZiBodHRwIG1ldGhvZCBhbmQgcGF0aCBvcgogYikgdGhlIG9wdGlvbmFsbHkgbW9yZSBkZXNjcmlwdGl2ZSBjb250ZW50IG9mIHRoZSBgb3BlcmF0aW9uSWRgIGZpZWxkIChhcyBzcGVjaWZpZWQgaW4gT0FTIDMuMCkgCiAKIyMgQ29tcG9uZW50cwoKQ29tcG9uZW50cyBpbiBPcGVuQVBJIGFyZSB0aGUgdHlwZXMgdGhhdCBjYW4gYmUgcmVmZXJyZWQgdG8gYXMgaW5wdXRzL291dHB1dHMgZm9yIHJvdXRlcy4gQSBjb21tb24gdXNlIG9mIGNvbXBvbmVudHMgaXMgCnRvIGRlZmluZSBwcm9kdWN0IHR5cGVzLiBXZSB0YWtlIHRoZXNlIGNvbXBvbmVudHMgYW5kIHRyYW5zbGF0ZSB0aGVtIHRvIFNjYWxhIGNhc2UgY2xhc3Nlcy4gQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlOgoKYGBgeWFtbApjb21wb25lbnRzOgogICAgc2NoZW1hczoKICAgICAgICBQZXJzb246CiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBNeSB0ZXN0IGRlc2NyaXB0aW9uCiAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICBuYW1lOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgd2VpZ2h0OgogICAgICAgICAgICAgICAgICAgIHR5cGU6IG51bWJlcgpgYGAKClRoZSBjb2RlIGFib3ZlIHdpbGwgYmUgdHJhbnNsYXRlZCB0byBmb2xsb3dpbmcgU2NhbGEgY29kZToKCmBgYHNjYWxhCi8qKgogKiBNeSB0ZXN0IGRlc2NyaXB0aW9uCioqLwpmaW5hbCBjYXNlIGNsYXNzIFBlcnNvbihuYW1lOiBTdHJpbmcsIHdlaWdodDogRG91YmxlKQoKb2JqZWN0IFBlcnNvbiB7CiAgICBpbXBsaWNpdCB2YWwgY3VzdG9tRGVjb2RlcnMgPSBkZXJpdmVEZWNvZGVyW1BlcnNvbl0ocmVuYW1pbmcuc25ha2VDYXNlLCBOb25lKQogICAgaW1wbGljaXQgdmFsIGN1c3RvbUVuY29kZXJzID0gZGVyaXZlRW5jb2RlcltQZXJzb25dKHJlbmFtaW5nLnNuYWtlQ2FzZSwgdHJ1ZSwgTm9uZSkKCn0KYGBgCgojIyMgc2J0LW9wZW5hcGkKClNCVCBzdWItcHJvamVjdCBgc2J0LW9wZW5hcGlgIGNvbnRhaW5zIGFuIFNCVCBwbHVnaW4gdGhhdCBhbGxvd3MgdGhlIHVzZSBvZiBgb3BlbmFwaS1zY2FsYWAgbGlicmFyeSB0byBhIGdpdmVuIFlBTUwgZmlsZSB0aGF0IHdpbGwgYmUgbG9hZGVkCmFuZCB1c2VkIHRvIGdlbmVyYXRlIG1hbmFnZWQgU2NhbGEgc291cmNlcy4KCiMjIFF1aWNrc3RhcnQKCkEgcmVsZWFzZSBsb2cgb2YgdGhlIHBsdWdpbiBhbmQgdGhlIGxpYnJhcnkgY2FuIGJlIGZvdW5kIFtoZXJlXShodHRwczovL2dpdGh1Yi5udW1iZXJmb3VyLmV1L1NlcnZlci9vcGVuYXBpLXNjYWxhL3JlbGVhc2VzKS4KClRvIHVzZSB0aGUgcGx1Z2luLCB5b3UgZmlyc3QgbmVlZCB0byBtYWtlIGl0IGF2YWlsYWJsZSBpbiB5b3VyIFNCVC4KCmBgYHNjYWxhCi8vIHByb2plY3QvcGx1Z2lucy5zYnQKYWRkU2J0UGx1Z2luKCJjb20uZW5mb3JlIiAlICJzYnQtb3BlbmFwaSIgJSAiPG9wZW5hcGktc2NhbGEtdmVyc2lvbj4iKQpgYGAKCllvdSB3aWxsIGFsc28gbmVlZCB0byBtYWtlIHRoZSBsaWJyYXJ5IGF2YWlsYWJsZSB0byBiZSBhYmxlIHRvIHVzZSB0aGUgZ2VuZXJhdGVkIGNvZGUuCgpgYGBzY2FsYQpsaWJyYXJ5RGVwZW5kZW5jaWVzICs9ICJjb20uZW5mb3JlIiAlJSAib3BlbmFwaS1saWIiICUgIjxvcGVuYXBpLXNjYWxhLXZlcnNpb24+IgpgYGAKCkFkZGl0aW9uYWxseSwgeW91IHdpbGwgbmVlZCB0byBzYXRpc2Z5IHRoZXNlIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZvciBgb3BlbmFwaS1saWJgLiBUaGUgcHJvdmlkZWQgdmVyc2lvbnMgYXJlIHRlc3RlZCBhbmQgbWFkZSBzdXJlIHRvIHdvcmsuIFlvdSBzaG91bGQgYmUgYWJsZSB0byB1c2UgYW55IHZlcnNpb24gY29tcGF0aWJsZSB3aXRoIHlvdXIgcHJvamVjdCB0aG91Z2guCgovLyBUT0RPIHNob3VsZG4ndCB3ZSBhdXRvbWF0aWNhbGx5IGFkZCB0aGVzZSBkZXBlbmRlbmNpZXMgdmlhIHRoZSBTQlQgYXV0byBwbHVnaW4gdmlhIGZsYWc/CmBgYHNjYWxhCiJjb20uYmVhY2hhcGUiICUlICJlbnVtZXJhdHVtIiAgICAgICAlICIxLjUuMTMiLAoiY29tLmJlYWNoYXBlIiAlJSAiZW51bWVyYXR1bS1jaXJjZSIgJSAiMS41LjIwIiwKImlvLmNpcmNlIiAgICAgJSUgImNpcmNlLWRlcml2YXRpb24iICUgIjAuMTEuMC1NMSIsCiJjb20uY2h1dXNhaSIgICUlICJzaGFwZWxlc3MiICAgICAgICAlICIyLjMuMyIKYGBgCgpGb3IgaHR0cDRzIFJvdXRlcyB5b3Ugd2lsbCBhbHNvIG5lZWQ6IAoKYGBgc2NhbGEKIm9yZy5odHRwNHMiICUlIHMiaHR0cDRzLWRzbCIgJSAiMC4yMC4wLU03IiwKIm9yZy5odHRwNHMiICUlIHMiaHR0cDRzLWNpcmNlIiAlICIwLjIwLjAtTTciCmBgYAoKT25jZSB0aGUgcGx1Z2luIGlzIGF2YWlsYWJsZSBpbiB5b3VyIHByb2plY3QgeW91IGNhbiBlbmFibGUgaXQgb24gYSBnaXZlbiBhbiBTQlQgc3ViLXByb2plY3QgYW5kIHVzZSB0aGUgc2V0dGluZyBgb3BlbkFQSU91dHB1dFBhY2thZ2VgIHRvIHNwZWNpZnkKdGhlIHBhY2thZ2UgbmFtZSBmb3IgeW91ciBjb21wb25lbnRzLiAKCmBgYHNjYWxhCi8vIGJ1aWxkLnNidApsYXp5IHZhbCByb290ID0gKHByb2plY3QgaW4gKCIuIikpCiAgICAuc2V0dGluZ3MoCiAgICAgICAgb3BlbkFQSU91dHB1dFBhY2thZ2UgOj0gImNvbS5lbmZvcmUubW9kZWwiLAogICAgICAgIGxpYnJhcnlEZXBlbmRlbmNpZXMgKz0gImNvbS5lbmZvcmUiICUlICJvcGVuYXBpLWxpYiIgJSAiPG9wZW5hcGktc2NhbGEtdmVyc2lvbj4iCiAgICApCiAgICAuZW5hYmxlUGx1Z2lucyhPcGVuYXBpUGx1Z2luKQpgYGAKCiMjIyBTQlQgU2V0dGluZ3MKCkZvbGxvd2luZyBhcmUgdGhlIHNldHRpbmdzIGF2YWlsYWJsZSBmb3IgeW91ciBTQlQgcHJvamVjdC4KCioqb3BlbkFQSVNvdXJjZSoqOiBTb3VyY2UgZGlyZWN0b3J5IGZvciBPcGVuQVBJLiBEZWZhdWx0cyB0byBgc3JjL21haW4vb3BlbmFwaWAgb2YgdGhlIHByb2plY3QuCgoqKm9wZW5BUElPdXRwdXQqKjogT3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIE9wZW5BUEkuIERlZmF1bHRzIHRvIG1hbmFnZWQgc291cmNlcyDigJQgYG9wZW5hcGlgLgoKKipvcGVuQVBJT3V0cHV0UGFjYWtnZSoqOiBOYW1lIG9mIHRoZSBwYWNrYWdlIHRvIGJlIHVzZWQgZm9yIE9wZW5BUEkgY29tcG9uZW50cy4KCioqcm91dGVJbXBsZW1lbnRhdGlvbnMqKjogQSBMaXN0IG9mIGBjb20uZW5mb3JlLmFwaXMuZ2VuZXJhdG9yLlJvdXRlSW1wbGVtZW50YXRpb25gLCB3aGljaCBjb250cm9scyB3aGljaCBraW5kIG9mIHJvdXRlcyBzaG91bGQgYmUgZ2VuZXJhdGVkLiBGaW5kIG91dCBtb3JlIGFib3V0IFtyb3V0ZXNdKCNSb3V0ZXMpCgojIyBSZWZpbmVtZW50cwoKT0FTIDMuMCBhbGxvd3Mgb25lIHRvIHNldCBjb25zdHJhaW50cyBvbiB0aGUgcHJpbWl0aXZlIGlucHV0IHR5cGVzLiBXZSB1c2UgdGhlIFtSZWZpbmVkXShodHRwczovL2dpdGh1Yi5jb20vZnRob21hcy9yZWZpbmVkKSBsaWJyYXJ5IGZvciBTY2FsYSB0byByZXByb2R1Y2UgdGhlc2UgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLiBUaGlzIG1lYW5zIHRoYXQgeW91IGRvIG5vdCBuZWVkIHRvIG1hbnVhbGx5IHNldHVwIHZhbGlkYXRpb25zIGZvciBhbnkgcmVmaW5lbWVudHMgYW5kIGNvbnN0cmFpbnRzIGluIHRoZSBpbnB1dHMgZm9yIHlvdXIgQVBJLiBUaGlzLCBob3dldmVyLCBhbHNvIG1lYW5zIHRoYXQgeW91IHdpbGwgaGF2ZSB0byByZXR1cm4gdmFsdWVzIHdpdGggcmVmaW5lbWVudHMgaWYgdGhlcmUgYXJlIGFueSBpbiB0aGUgcmV0dXJuIHR5cGVzLgoKSW4gdGhlIGV4YW1wbGUgY29kZSBiZWxvdywgd2UgYWxzbyBnZW5lcmF0ZSBhIGNvbnN0cnVjdG9yIGZvciBhIHZhbHVlIG92ZXIgd2hpY2ggcmVmaW5lbWVudHMgZXhpc3QuIFRoZXNlIHJlZmluZW1lbnRzIGV4aXN0IGluc2lkZSBhbiBvYmplY3QgY2FsbGVkIGBSZWZpbmVtZW50Q29uc3RydWN0b3JzYCB0aGF0IGlzIGZ1cnRoZXIgbmVzdGVkIGluIHRoZSBjb21wYW5pb24gb2JqZWN0IGZvciB0aGUgZ2VuZXJhdGVkIGNhc2UgY2xhc3MuIFRoZSBuYW1lcyBvZiB0aGUgY29uc3RydWN0b3JzIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIHZhbHVlcyBmb3Igd2hpY2ggdGhlIHJlZmluZW1lbnRzIGV4aXN0LgoKYGBgc2NhbGEKaW1wb3J0IHNoYXBlbGVzcy5fCgpmaW5hbCBjYXNlIGNsYXNzIE15VGVzdE91dHB1dChuYW1lOiBTdHJpbmcgUmVmaW5lZCBBbGxPZltNaW5TaXplW1cuYDFgLlRdIDo6IE1heFNpemVbVy5gMjU2YC5UXSA6OiBITmlsXSkKCm9iamVjdCBNeVRlc3RPdXRwdXQgewogICAgb2JqZWN0IFJlZmluZW1lbnRDb25zdHJ1Y3RvcnMgewogICAgICAgIHZhbCBuYW1lID0gU3RyaW5nIFJlZmluZWQgQWxsT2ZbTWluU2l6ZVtXLmAxYC5UXSA6OiBNYXhTaXplW1cuYDI1NmAuVF0gOjogSE5pbF0KCiAgICB9Cn0KYGBgCgojIyBSZWFkIE9ubHkgUHJvcGVydGllcwoKT3BlbkFQSSAzLjAgc3VwcG9ydHMgbWFya2luZyBwcm9wZXJ0aWVzIGluIG9iamVjdHMgYXMgcmVhZC1vbmx5LiBUaGlzIGNoZWNrcyB0aGF0IHRoZSBwcm9wZXJ0eSBpcyBhdmFpbGFibGUgaWYgdGhlIHR5cGUgaXMgdXNlZCBhcyB0aGUgb3V0cHV0IG9mIGEgcm91dGUsIGJ1dCBub3QgZm9yIGlucHV0cy4KCldlIG1vZGVsIHRoaXMgaW4gU2NhbGEgYnkgZ2VuZXJhdGluZyB0d28gdHlwZXMgaW4gY2FzZSBhIGZpZWxkIGlzIG1hcmtlZCByZWFkLW9ubHkuIFRoZSBnZW5lcmF0b3Igd2lsbCB0aGVuIGF1dG9tYXRpY2FsbHkgdXNlIHRoZSByaWdodCB0eXBlIGRlcGVuZGluZyBvbiB3ZWF0aGVyIHRoZSBvYmplY3QgaXMgdXNlZCBhcyBpbnB1dCBvciBvdXRwdXQuCgpgYGB5YW1sCk15T2JqZWN0OgogICAgdHlwZTogb2JqZWN0CiAgICBwcm9wZXJ0aWVzOgogICAgICAgIGlkOgogICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgcmVhZE9ubHk6IHRydWUKICAgICAgICBib2R5OgogICAgICAgICAgICB0eXBlOiBzdHJpbmcKYGBgCgpUaGlzIHdpbGwgZ2VuZXJhdGUgdHdvIFNjYWxhIGNsYXNzZXMgdGhhdCBhcmUgYXMgZm9sbG93czoKCmBgYHNjYWxhCmZpbmFsIGNhc2UgY2xhc3MgTXlPYmplY3RSZXF1ZXN0KGJvZHk6IFN0cmluZykKCmZpbmFsIGNhc2UgY2xhc3MgTXlPYmplY3QoaWQ6IFN0cmluZywgYm9keTogU3RyaW5nKQpgYGAKCiMjIFVuaW9ucyAmIEVudW1zCgpPcGVuQVBJIDMuMCB1c2VzIGBvbmVPZmAgdHlwZXMgdG8gcmVwcmVzZW50IHVuaW9ucyBvciBlbnVtZXJhdGlvbnMuIEluIFNjYWxhLCB0aGVyZSBpcyBubyB3YXkgdG8gaGF2ZSBwcm9wZXIgQWxnZWJyYWljIERhdGEgVHlwZXMgKEFEVHMpLiBXaGlsZSBwcm9kdWN0cyBjYW4gYmUgcmVwcmVzZW50ZWQgdXNpbmcgY2FzZSBjbGFzc2VzLCB0aGUgb25seSB3YXkgdG8gcmVwcmVzZW50IHVuaW9ucyBpcyB0byBjcmVhdGUgY2xhc3NlcyB0aGF0IGV4dGVuZCBhIGdpdmVuIHRyYWl0LgoKVGhpcywgaG93ZXZlciwgbWFrZXMgZGVmaW5pbmcgYXJiaXRyYXJ5IHVuaW9ucyB2ZXJ5IGRpZmZpY3VsdC4gVGhlcmVmb3JlLCB3ZSB1c2UgW1NoYXBlbGVzcycgZGlzY3JpbWluYXRlZCB1bmlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWxlc3NhYmluL3NoYXBlbGVzcy93aWtpL0ZlYXR1cmUtb3ZlcnZpZXc6LXNoYXBlbGVzcy0yLjAuMCNjb3Byb2R1Y3RzLWFuZC1kaXNjcmltaW5hdGVkLXVuaW9ucykgdG8gcmVwcmVzZW50IGBhbnlPZmAgdHlwZXMgaW4gU2NhbGEuCgpgYGBzY2FsYQpmaW5hbCBjYXNlIGNsYXNzIE15VW5pb25XcmFwcGVyKHZhbHVlOiBVbmlvbikKCm9iamVjdCBNeVVuaW9uV3JhcHBlciB7CiAgICB0eXBlIFVuaW9uID0gSXRlbTEgOis6IEl0ZW0yIDorOiBDTmlsCgogICAgb2JqZWN0IGpzb25Db252ZXJzaW9ucyBleHRlbmRzIFBvbHkxIHsKICAgICAgICBpbXBsaWNpdCBkZWYgY2FzZUl0ZW0xID0gYXRbU2luZ2xlVGFyZ2V0Q29udmVyc2lvbl0oXy5hc0pzb24uZGVlcE1lcmdlKEpzb24ub2JqKCJAdHlwZSIgLT4gSnNvbi5mcm9tU3RyaW5nKCJJdGVtMSIpKSkpCiAgICAgICAgaW1wbGljaXQgZGVmIGNhc2VJdGVtMiA9IGF0W011bHRpVGFyZ2V0Q29udmVyc2lvbl0oXy5hc0pzb24uZGVlcE1lcmdlKEpzb24ub2JqKCJAdHlwZSIgLT4gSnNvbi5mcm9tU3RyaW5nKCJJdGVtMiIpKSkpCgogICAgfQoKICAgIGltcGxpY2l0IHZhbCBjdXN0b21lckVuY29kZXJzID0gbmV3IEVuY29kZXJbTXlVbmlvbldyYXBwZXJdIHsKICAgICAgZGVmIGFwcGx5KGE6IENvbnZlcnNpb24pOiBKc29uID0gewogICAgICAgIChhLnZhbHVlIG1hcCBqc29uQ29udmVyc2lvbnMpLnVuaWZ5CiAgICAgIH0KICAgIH0KCiAgaW1wbGljaXQgdmFsIGN1c3RvbURlY29kZXI6IERlY29kZXJbTXlVbmlvbldyYXBwZXJdID0gbmV3IERlY29kZXJbQ29udmVyc2lvbl0gewogICAgZGVmIGFwcGx5KGM6IEhDdXJzb3IpOiBEZWNvZGVyLlJlc3VsdFtNeVVuaW9uV3JhcHBlcl0gPSB7CiAgICAgIHZhbCBvdXRwdXQgPSBjLmRvd25GaWVsZCgiQHR5cGUiKS5hc1tTdHJpbmddIG1hdGNoIHsKICAgICAgICBjYXNlIFJpZ2h0KCJJdGVtMSIpID0+IGMudmFsdWUuYXNbSXRlbTFdLm1hcChDb3Byb2R1Y3RbVW5pb25dKF8pKQogICAgICAgIGNhc2UgUmlnaHQoIkl0ZW0yIikgPT4gYy52YWx1ZS5hc1tJdGVtMl0ubWFwKENvcHJvZHVjdFtVbmlvbl0oXykpCiAgICAgICAgY2FzZSBfID0+IExlZnQoRGVjb2RpbmdGYWlsdXJlLmFwcGx5KCJUeXBlIGluZm9ybWF0aW9uIG5vdCBhdmFpbGFibGUiLCBMaXN0KEN1cnNvck9wLkRvd25GaWVsZCgiQHR5cGUiKSkpKQogICAgICB9CiAgICAgIG91dHB1dC5tYXAoTXlVbmlvbldyYXBwZXIuYXBwbHkpCiAgICB9CiAgfQoKfQpgYGAKClVzaW5nIHRoZXNlIGFyYml0cmFyeSB1bmlvbnMgaXMgZWFzaWVyIHRoYW4gaXQgZmlyc3QgYXBwZWFycy4gVG8gY3JlYXRlIGEgdmFsdWUgb2YgdHlwZSBgTXlVbmlvbldyYXBwZXJgLCB3aGljaCBpcyBkZWZpbmVkIHVzaW5nIGBvbmVPZmAgaW4gT3BlbkFQSSwgd2UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvZGU6CgpgYGBzY2FsYQppbXBvcnQgc2hhcGVsZXNzLl8KdmFsIGl0ZW0xVW5pb24gPSBNeVVuaW9uV3JhcHBlcihDb3Byb2R1Y3RbTXlVbmlvbldyYXBwZXIuVW5pb25dKGl0ZW0xKSkKdmFsIGl0ZW0yVW5pb24gPSBNeVVuaW9uV3JhcHBlcihDb3Byb2R1Y3RbTXlVbmlvbldyYXBwZXIuVW5pb25dKGl0ZW0yKSkKYGBgCgpIYW5kbGluZyB0aGUgdmFsdWVzIG9mIHRoYXQgYXJlIGFscmVhZHkgd3JhcHBlZCBhbmQgbWFwcGluZyB0aGVtIHRvIHNvbWV0aGluZyBpcyBzbGlnaHRseSBtb3JlIHdvcmsuIFdlIHVzZSB0aGUgYFBvbHkxYCAgZnJvbSBTaGFwZWxlc3MgdG8gY3JlYXRlIGZ1bmN0aW9ucyB0aGF0IGNhbiBtYXAgb3ZlciBhIGNvLXByb2R1Y3QuCgpgYGBzY2FsYQpvYmplY3QgY29udmVydFRvVCBleHRlbmRzIFBvbHkxIHsKICAgIGltcGxpY2l0IHZhbCBvbmVUb1QgPSBhdFtJdGVtMV0oeCA9PiBvbmVUb1QoeCkpCiAgICBpbXBsaWNpdCB2YWwgdHdvVG9UID0gYXRbSXRlbTJdKHggPT4gdHdvVG9UKHgpKQp9Cgp2YWwgY29udmVydGVkSXRlbTogVCA9IGl0ZW0xVW5pb24uZm9sZChjb252ZXJ0VG9UKQpgYGAKCk91ciBgY29udmVydFRvVGAgZnVuY3Rpb24gY29udmVydHMgZXZlcnkgcG9zc2libGUgdmFsdWUgdG8gYSB0eXBlIGBUYCBhbmQgdGhlbiB3ZSB1bmlmeSB0aGVtLiBTaW5jZSB3ZSBrbm93IHRoYXQgb3VyIGNvLXByb2R1Y3Qgd2lsbCBjb250YWluIGV4YWN0bHkgb25lIHZhbHVlIG9mIHRoZSBwb3NzaWJsZSBnaXZlbiB0eXBlcywgd2UgY2FuIGJlIGNlcnRhaW4gdGhhdCB3ZSB3aWxsIGVuZCB1cCB3aXRoIGF0IGxlYXN0IG9uZSB2YWx1ZSBvZiB0eXBlIGBUYC4KCiMjIExpbWl0YXRpb25zCgpUaGlzIGdlbmVyYXRvciBpcyBoaWdobHkgb3BpbmlvbmF0ZWQgYW5kIHNraXBzIG92ZXIgY2VydGFpbiBmZWF0dXJlcyBkZWZpbmVkIE9wZW5BUEkgMy4wIHNwZWNpZmljYXRpb24gZm9yIHRoZSBzYWtlIG9mIEFQSSBjb25zaXN0ZW5jeSBhbmQgY29tcGF0aWJpbGl0eSB3aXRoIG1vZGVybiB0eXBlZCBsYW5ndWFnZXMuCgojIyMgTGltaXRhdGlvbnMKCi0gV2UgZG8gbm90IHN1cHBvcnQgYW55IGFub255bW91cyB0eXBlcyBmb3IgcmVwcmVzZW50aW5nIEhUVFAgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcy4KLSBXZSBkbyBub3Qgc3VwcG9ydCBuZXN0ZWQgdHlwZSBkZWZpbml0aW9ucy4gVGhlcmVmb3JlLCBhbnkgb2JqZWN0cyB0aGF0IGFyZSB1c2VkIG11c3QgYmUgZGVmaW5lZCBpbiB0aGUgY29tcG9uZW50cyBhbmQgbXVzdCBub3QgY29udGFpbgogIGFueSBvdGhlciBuZXN0ZWQgb2JqZWN0cy4gTmVzdGVkIGFycmF5cywgaG93ZXZlciwgYXJlIHN1cHBvcnRlZC4KLSBXZSBkbyBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gb25lIHR5cGUgZm9yIENvbnRlbnQtVHlwZSBoZWFkZXIgZm9yIGluY29taW5nIHJlcXVlc3RzLiBNdWx0aXBsZSB0eXBlcyBjb3JyZXNwb25kaW5nIHRvIHRoZWlyIGVuY29kaW5ncyBhcmUsIGhvd2V2ZXIsIGF2YWlsYWJsZSB3aXRoIGFuIEFjY2VwdC1FbmNvZGluZyBoZWFkZXIgb24gYSByZXF1ZXN0LgotIFdlIGRvIG5vdCBzdXBwb3J0IGBhbnlPZmAgdHlwZXMgZnJvbSBPcGVuQVBJIDMuMC4gU3VnZ2VzdGlvbnMgYXMgdG8gaG93IHRoZSBiZWhhdmlvdXIgZm9yIHRoZSBzYW1lIHNob3VsZCBiZSByZXByZXNlbnRlZCBpbiBnZW5lcmF0ZWQgU2NhbGEgY29kZSBhcmUgd2VsY29tZS4KLSBXZSBkbyBub3Qgc3VwcG9ydCBpbmxpbmVkIHNjaGVtYSBkZWZpbml0aW9uIGZvciBpbnB1dCBhbmQgb3V0cHV0IG9iamVjdCB0eXBlcyBpbiByb3V0ZSBkZWZpbml0aW9ucyBpbiBPcGVuQVBJIGlucHV0IGZpbGVzLiBUaGVyZWZvcmUsIHRoZXNlIG11c3QgYmUgZGVmaW5lZCBhcyBjb21wb25lbnRzIGFuZCByZWZlcnJlZC4KLSBXZSBkbyBub3Qgc3VwcG9ydCB0eXBlIGFsaWFzaW5nIG9yIHJpY2ggdHlwaW5nLiBGb3IgaW5zdGFuY2UsIGlmIHlvdSBoYXZlIGEgcHJpbWl0aXZlIHR5cGUgd2l0aCBhIHBhcnRpY3VsYXIgc2V0IG9mIHJlZmluZW1lbnRzLCB5b3Ugd291bGQgaGF2ZSB0byBwb2ludCBvdXQgdGhvc2UgcmVmaW5lbWVudHMgZXZlcnl3aGVyZSB3aXRoIHRob3NlIHJlZmluZW1lbnRzIGluc3RlYWQgb2YgcmVmZXJyaW5nIHRoZW0gZnJvbSBhIGRlZmluaXRpb24uCg== readmeEtag: '"c70fd0cbc59430cfe21cb54d59302cbb69f78e9d"' readmeLastModified: Tue, 18 Aug 2020 13:29:31 GMT repositoryId: 259959923 description: >- An opinionated library and SBT plugin for generating Scala code from OpenAPI 3. created: '2020-04-29T15:08:59Z' updated: '2023-08-25T08:39:34Z' language: Scala archived: false stars: 6 watchers: 4 forks: 4 owner: NumberFour logo: https://avatars.githubusercontent.com/u/319804?v=4 license: MIT repoEtag: '"3f4189de565c20b1025a901ec58be43d6e52d0ff77aa4c654e1f0f90afc94551"' repoLastModified: Fri, 25 Aug 2023 08:39:34 GMT foundInMaster: true id: 59ff09178d2859e3ebe7eea756af30b7 - source: openapi3 tags repository: https://github.com/dsietz/actix-web-openapi v3: true repositoryMetadata: base64Readme: >- IyBBY3RpeCBXZWIgT3BlbkFQSQohW1ZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvdmVyc2lvbi0wLjAuMS1ibHVlLnN2ZykKIVtNSVQvQXBhY2hlLTIuMF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVCUyRkFwYWNoZS0tMi4wLWJsdWUuc3ZnKQoKLS0tCgojIyBVc2FnZQpgYGAKZXh0ZXJuIGNyYXRlIGFjdGl4X3dlYl9vcGVuYXBpOwoKZm4gbWFpbigpIHsKICAgIG1hdGNoIGFjdGl4X3dlYl9vcGVuYXBpOjpmcm9tX3BhdGgoIi4vZGF0YS92My4wL3BldHN0b3JlLnlhbWwiKSB7CiAgICAgICAgT2soc3BlYykgPT4gewogICAgICAgICAgICBsZXQgc2VydmVycyA9IHNwZWMuc2VydmVycy51bndyYXAoKTsKCiAgICAgICAgICAgIGZvciBzZXJ2ZXIgaW4gc2VydmVycy5pdGVyKCkgewogICAgICAgICAgICAgICAgbWF0Y2ggc2VydmVyLnRvX2NsaWVudF9yZXF1ZXN0KCkuZmluaXNoKCkgewogICAgICAgICAgICAgICAgICAgIE9rKGNsaWVudCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXEhKGNsaWVudC51cmkoKS5zY2hlbWVfc3RyKCksIFNvbWUoImh0dHAiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcSEoY2xpZW50LnVyaSgpLmhvc3QoKSwgU29tZSgicGV0c3RvcmUuc3dhZ2dlci5pbyIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxIShjbGllbnQudXJpKCkucG9ydF91MTYoKSwgTm9uZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcSEoY2xpZW50LnVyaSgpLnBhdGgoKSwgIi92MSIpOwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgRXJyKF9lcnIpID0+IGFzc2VydCEoZmFsc2UpLAogICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgRXJyKF9lcnIpID0+IGFzc2VydCEoZmFsc2UpLAogICAgfQp9CmBgYAoKIyMgTGljZW5zZQpUaGlzIHNvbHR1aW9uIHVzZXMgb3BlbiBzb3VyY2UgcHJvZHVjdHMgYW5kIGlzIGNvbnN0cmFpbmVkIHRvIHRoZSBpbmhlcml0ZWQgbGljZW5zZSBhZ3JlZW1lbnRzLgoKLSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAsIChMSUNFTlNFLUFQQUNIRSBvciBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApCi0gTUlUIExpY2Vuc2UgKExJQ0VOU0UtTUlUIG9yIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQpCg== readmeEtag: '"5bf6053932aeaec58b5fefa6105ae156711ffe40"' readmeLastModified: Mon, 22 Apr 2019 16:27:58 GMT repositoryId: 182823521 description: >- Contract testing of an OpenAPI document for REST service running on Actix Web created: '2019-04-22T16:13:04Z' updated: '2025-06-03T09:55:56Z' language: Rust archived: false stars: 6 watchers: 0 forks: 1 owner: dsietz logo: https://avatars.githubusercontent.com/u/21245551?v=4 license: Apache-2.0 repoEtag: '"0b76d65c6560ffffc710ca9c43c6e542992be1c29318804d56567ad49a19c2f3"' repoLastModified: Tue, 03 Jun 2025 09:55:56 GMT foundInMaster: true category: - Documentation - Parsers id: d1ef4b9f79b9d5f5499d73404fd347cd - source: openapi3 tags repository: https://github.com/seipan/bulma v3: true id: 5a221309bc76af6ae48f51f2e5f6c5a3 repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KCiFbTGFzdCBjb21taXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhc3QtY29tbWl0L3NlaXBhbi9ibHVtYT9zdHlsZT1mbGF0LXNxdWFyZSkKIVtSZXBvc2l0b3J5IFN0YXJzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9zdGFycy9zZWlwYW4vYmx1bWE/c3R5bGU9ZmxhdC1zcXVhcmUpCiFbSXNzdWVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMvc2VpcGFuL2JsdW1hP3N0eWxlPWZsYXQtc3F1YXJlKQohW09wZW4gSXNzdWVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMtcmF3L3NlaXBhbi9ibHVtYT9zdHlsZT1mbGF0LXNxdWFyZSkKWyFbZ29dKGh0dHBzOi8vZ2l0aHViLmNvbS9zZWlwYW4vbG9naG9vay9hY3Rpb25zL3dvcmtmbG93cy9nby55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3NlaXBhbi9sb2dob29rL2FjdGlvbnMvd29ya2Zsb3dzL2dvLnltbCkKCjxpbWcgc3JjPSJodHRwczovL2kucGluaW1nLmNvbS83MzZ4LzdkLzVlLzBkLzdkNWUwZDhjZWE0NTJmZTkxOGUyNmYxZWIxNGVhODdiLmpwZyIgYWx0PSJleWVjYXRjaCIgaGVpZ2h0PSIyMDAiPgoKIyBidWxtYQoKIDpwdW5jaDogQ0xJIHRvb2wgdG8gcGFyc2UgT3BlbkFQSSBhbmQgc3RyZXNzIHRlc3QgZWFjaCBlbmRwb2ludC4gOnB1bmNoOgoKPGJyPgo8YnI+CgoKPC9kaXY+CgojIyBJbnN0YWxsCmBgYApnbyBpbnN0YWxsIGdpdGh1Yi5jb20vc2VpcGFuL2J1bG1hQGxhdGVzdApgYGAKCiMjIFVzYWdlCmBgYApVc2FnZToKICBibHVtYSBbZmxhZ3NdCgpGbGFnczoKICAtYiwgLS1iYXNlcGF0aCBzdHJpbmcgICAgIEJhc2VVUkwgZm9yIHN0cmVzcyB0ZXN0CiAgLWQsIC0tZHVyYXRpb24gZHVyYXRpb24gICBzdHJlc3MgdGVzdCBkdXJhdGlvbiAoZGVmYXVsdCAxbnMpCiAgLXAsIC0tZmlsZXBhdGggc3RyaW5nICAgICBGaWxlUGF0aCBmb3IgUGFyc2luZyBPcGVuQVBJCiAgLWYsIC0tZnJlcXVlbmN5IGludCAgICAgICBzdHJlc3MgdGVzdCBmcmVxdWVuY3kgKGRlZmF1bHQgMSkKICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgIGhlbHAgZm9yIGJsdW1hCmBgYAoKIyMjIyBgLWJhc2VwYXRoYAoKVGhpcyBpcyB0aGUgYmFzZSBVUkwgd2hlcmUgeW91IHdhbnQgdG8gYXBwbHkgdGhlIGxvYWQuCgojIyMjIGAtZHVyYXRpb25gCgpUaGlzIGlzIHN0cmVzcyB0ZXN0IGR1cmF0aW9uLiAoZGVmYXVsdCAxbnMpCgojIyMjIGAtZmlsZXBhdGhgCgpUaGlzIGlzIEZpbGVQYXRoIGZvciBQYXJzaW5nIE9wZW5BUEkuCgojIyMjIGAtZnJlcXVlbmN5YAoKVGhpcyBpcyAgc3RyZXNzIHRlc3QgZnJlcXVlbmN5LiAoZGVmYXVsdCAxKQoKIyMgRXhhbXBsZQpgYGAKYnVsbWEgLS1wYXRoPXRlc3RkYXRhL2hlYWx0aC55YW1sIC0tYmFzZT1odHRwOi8vbG9jYWxob3N0OjgwODAKYGBgCgpgYGAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1idWxtYSBhdHRhY2sgc3RhcnQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tdmVnZXRhIGF0dGFjayB0byBodHRwOi8vbG9jYWxob3N0OjgwODAvaGVhbHRoLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KdmVnZXRhIGF0dGFjayB0byBtZXRob2Q6IEdFVApwYXRoIFN0YXR1c0NvZGU6IG1hcFsyMDA6MV0KCm1heCBwZXJjZW50aWxlOiAzMzMuNjIwNG1zCm1lYW4gcGVyY2VudGlsZTogMzMzLjYyMDRtcwp0b3RhbCBwZXJjZW50aWxlOiAzMzMuNjIwNG1zCjk5dGggcGVyY2VudGlsZTogMzMzLjYyMDRtcwoKIGVhcmxpZXN0OiAyMDIzLTA5LTIzIDA1OjIzOjA1LjE4Mzk3ODQgKzA5MDAgSlNUIG09KzEuMDI5MzAxNTAxCiBsYXRlc3Q6IDIwMjMtMDktMjMgMDU6MjM6MDUuMTgzOTc4NCArMDkwMCBKU1QgbT0rMS4wMjkzMDE1MDEKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1idWxtYSBhdHRhY2sgZmluaXNoLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpgYGAKCiMjIExpY2Vuc2UKQ29kZSBsaWNlbnNlZCB1bmRlciAKW3RoZSBNSVQgTGljZW5zZV0oaHR0cHM6Ly9naXRodWIuY29tL3NlaXBhbi9idWxtYS9ibG9iL21haW4vTElDRU5TRSkuCg== readmeEtag: '"9c5a23f1a6d55933976941fe9c6e0cf8889a5e63"' readmeLastModified: Tue, 06 Aug 2024 15:30:11 GMT repositoryId: 671336325 description: ':punch: CLI tool to parse OpenAPI and stress test each endpoint. :punch:' created: '2023-07-27T05:04:35Z' updated: '2025-11-04T18:22:44Z' language: Go archived: false stars: 6 watchers: 1 forks: 1 owner: seipan logo: https://avatars.githubusercontent.com/u/88176012?v=4 license: MIT repoEtag: '"ea82aa6a1dee5151a10891879bd03e76362422859444dbca9e7ac4845c0cfefa"' repoLastModified: Tue, 04 Nov 2025 18:22:44 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/simplesolutiondev/spring-boot-api-doc v3: true repositoryMetadata: base64Readme: IyBzcHJpbmctYm9vdC1hcGktZG9jCmh0dHBzOi8vc2ltcGxlc29sdXRpb24uZGV2Lwo= readmeEtag: '"e479106ea25158730654b2bbeff2599cbe923fd0"' readmeLastModified: Wed, 03 Feb 2021 17:10:49 GMT repositoryId: 335696724 description: >- Spring Boot RESTful API Documentation with OpenAPI 3.0 and Swagger-UI using springdoc-openapi created: '2021-02-03T17:06:17Z' updated: '2025-10-26T17:58:48Z' language: Java archived: false stars: 6 watchers: 2 forks: 1 owner: simplesolutiondev logo: https://avatars.githubusercontent.com/u/48798703?v=4 repoEtag: '"2b4b0921b74c89ac03c938bb319af30335223537826dd45ae3bb3aaa4598434a"' repoLastModified: Sun, 26 Oct 2025 17:58:48 GMT foundInMaster: true category: - Low-level Tooling - Server - Server Implementations id: 58570b657a0d147e81d5a480138f034d - source: openapi3 tags repository: https://github.com/crazyoptimist/nest-starter v3: true id: e635e2fce4b0fcdb8d54a80a818fa0d1 repositoryMetadata: base64Readme: >- IyBOZXN0SlMgU3RhcnRlcgoKWyFbYnVpbGQgJiB0ZXN0XShodHRwczovL2dpdGh1Yi5jb20vY3JhenlvcHRpbWlzdC9uZXN0LXN0YXJ0ZXIvYWN0aW9ucy93b3JrZmxvd3MvYnVpbGQueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9jcmF6eW9wdGltaXN0L25lc3Qtc3RhcnRlci9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55bWwpCgpCdWlsZCBhIG1vZHVsYXIgUkVTVCBBUEkgd2l0aCBOZXN0SlMgZnJhbWV3b3JrLgoKIyMgVGFibGUgb2YgQ29udGVudHMKCi0gW1doYXQgSXMgVGhpcz9dKCN3aGF0LWlzLXRoaXMpCi0gW0dldHRpbmcgU3RhcnRlZF0oI2dldHRpbmctc3RhcnRlZCkKLSBbRGF0YWJhc2UgTWlncmF0aW9uc10oI2RhdGFiYXNlLW1pZ3JhdGlvbnMpCiAgLSBbR2VuZXJhdGUgYSBOZXcgTWlncmF0aW9uXSgjZ2VuZXJhdGUtYS1uZXctbWlncmF0aW9uKQogIC0gW1J1biBQZW5kaW5nIE1pZ3JhdGlvbnNdKCNydW4tcGVuZGluZy1taWdyYXRpb25zKQogIC0gW1JldmVydCBNaWdyYXRpb25zXSgjcmV2ZXJ0LW1pZ3JhdGlvbnMpCi0gW1Rlc3RzXSgjdGVzdHMpCi0gW0Vudmlyb25tZW50IENvbmZpZ3VyYXRpb25dKCNlbnZpcm9ubWVudC1jb25maWd1cmF0aW9uKQotIFtBUEkgRG9jdW1lbnRhdGlvbl0oI2FwaS1kb2N1bWVudGF0aW9uKQotIFtBdXRoZW50aWNhdGlvbl0oI2F1dGhlbnRpY2F0aW9uKQotIFtMaWNlbnNlXSgjbGljZW5zZSkKLSBbTWFpbnRhaW5lcnNdKCNtYWludGFpbmVycykKCiMjIFdoYXQgSXMgVGhpcz8KClRoaXMgaXMgYSBOZXN0SlMgUkVTVGZ1bCBBUEkgc3RhcnRlciB0aGF0IGluY2x1ZGVzIEpXVCBhdXRoZW50aWNhdGlvbiwgT3BlbkFQSSAzIGRvY3VtZW50YXRpb24sIGFuZCBUeXBlT1JNIGludGVncmF0aW9uLgoKVGhlIHJlYXNvbiBJIG1haW50YWluIGl0IGlzIGJlY2F1c2UgdXNpbmcgdGhpcyB0ZW1wbGF0ZSBhbGxvd3MgeW91IHRvIHF1aWNrbHkgc2V0IHVwIGEgcHJvZHVjdGlvbi1yZWFkeSBSRVNUZnVsIEFQSSB3aXRoIG1pbmltYWwgYm9pbGVycGxhdGUgY29kZS4KCiMjIEdldHRpbmcgU3RhcnRlZAoKQ3JlYXRlIGEgZG90ZW52IGZpbGUgYW5kIGZpbGwgaXQgb3V0IHdpdGggdGhlIGFwcHJvcHJpYXRlIHZhbHVlcy4KCmBgYGJhc2gKY3AgLmVudi5leGFtcGxlIC5lbnYKYGBgCgpJbnN0YWxsIGRlcGVuZGVuY2llcwoKYGBgYmFzaApucG0gaW5zdGFsbApgYGAKClJ1biB0aGUgYXBwbGljYXRpb24KCmBgYGJhc2gKbnBtIHJ1biBkZXYKYGBgCgpITVIoSG90IE1vZHVsZSBSZWxvYWQpIGlzIGNvbmZpZ3VyZWQgd2l0aCB3ZWJwYWNrLgoKIyMgRGF0YWJhc2UgTWlncmF0aW9ucwoKSWYgeW91IGRvbid0IHJlcXVpcmUgaW5jcmVtZW50YWwgZGF0YWJhc2UgbWlncmF0aW9ucywgc2V0IHRoZSBEQl9TWU5DIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRydWUuIFRoaXMgd2lsbCBjb250aW51b3VzbHkgc3luY2hyb25pemUgdGhlIGRhdGFiYXNlIHN0cnVjdHVyZSB3aXRoIHRoZSBzY2hlbWEgZGVmaW5lZCBpbiB0aGUgY29kZWJhc2UuCgpfX0hvd2V2ZXIsIERPIE5PVCBzZXQgREJfU1lOQyB0byB0cnVlIGluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCwgYXMgZG9pbmcgc28gbWF5IHJlc3VsdCBpbiBkYXRhIGxvc3MhX18KCiMjIyMgR2VuZXJhdGUgYSBOZXcgTWlncmF0aW9uCgpNYWtlIHN1cmUgdG8gdXNlIG5wbSBmb3IgdGhlIGZvbGxvd2luZyBjb21tYW5kcywgYXMgeWFybiBkb2VzIG5vdCBzdXBwb3J0IGAkbnBtX2NvbmZpZ19uYW1lYC4KCmBgYGJhc2gKbnBtIHJ1biBtaWdyYXRpb246Z2VuZXJhdGUgLS1uYW1lPUFkZEFnZUNvbHVtblRvVXNlcgpgYGAKCk1pZ3JhdGlvbiBmaWxlcyBhcmUgbG9jYXRlZCBpbiB0aGUgYHNyYy9taWdyYXRpb25zYCBkaXJlY3RvcnkuCgojIyMjIFJ1biBQZW5kaW5nIE1pZ3JhdGlvbnMKCmBgYGJhc2gKbnBtIHJ1biBtaWdyYXRpb246cnVuCmBgYAoKVXNpbmcgRG9ja2VyOgoKYGBgYmFzaApkb2NrZXIgZXhlYyBuZXN0IG5wbSBydW4gbWlncmF0aW9uOnJ1bgpgYGAKCiMjIyMgUmV2ZXJ0IE1pZ3JhdGlvbnMKClJldmVydCB0aGUgbGFzdCBtaWdyYXRpb24KCmBgYGJhc2gKbnBtIHJ1biBtaWdyYXRpb246cmV2ZXJ0CmBgYAoKIyMgVGVzdHMKCmBgYGJhc2gKIyB1bml0IHRlc3RzCm5wbSBydW4gdGVzdAoKIyBlMmUgdGVzdHMKbnBtIHJ1biB0ZXN0OmUyZQoKIyB0ZXN0IGNvdmVyYWdlCm5wbSBydW4gdGVzdDpjb3YKYGBgCgojIyBFbnZpcm9ubWVudCBDb25maWd1cmF0aW9uCgpgQG5lc3Rqcy9jb25maWdgIGhhcyBiZWVuIHVzZWQsIHNvIHlvdSBjYW4ganVzdCBpbmplY3QgYENvbmZpZ1NlcnZpY2VgIHRvIHJlYWQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZyb20gdGhlIGRvdGVudiBmaWxlLgoKIyMgQVBJIERvY3VtZW50YXRpb24KCk9wZW5BUEkgMy4wIGhhcyBiZWVuIGNvbmZpZ3VyZWQsIGFuZCB0aGUgQVBJIGRvY3VtZW50YXRpb24gaXMgaG9zdGVkIGF0IGBCQVNFX1VSTC9hcGkvZG9jc2AuCgojIyBBdXRoZW50aWNhdGlvbgoKSldUIGF1dGhlbnRpY2F0aW9uIGhhcyBiZWVuIGNvbmZpZ3VyZWQuCgojIyBMaWNlbnNlCgpNSVQKCiMjIE1haW50YWluZXJzCgpbY3JhenlvcHRpbWlzdF0oaHR0cHM6Ly9jcmF6eW9wdGltaXN0Lm5ldCkK readmeEtag: '"aa067beb2e72ff105e5ee7485f97fa18ad10f79d"' readmeLastModified: Thu, 27 Jun 2024 21:11:20 GMT repositoryId: 360806446 description: NestJS RESTful API starter for minimalists created: '2021-04-23T07:53:38Z' updated: '2024-12-26T17:54:09Z' language: TypeScript archived: false stars: 6 watchers: 1 forks: 5 owner: crazyoptimist logo: https://avatars.githubusercontent.com/u/55074937?v=4 license: MIT repoEtag: '"aad50893820aafea217eb394f20852516387bdc15549a85e4fba60b3ae9f93fd"' repoLastModified: Thu, 26 Dec 2024 17:54:09 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/cjp2600/cutos v3: true repositoryMetadata: base64Readme: >- IyBDdXRvcyAtIChDdXJsIHRvIFN3YWdnZXIpIAoKQ3V0b3MgcHJvdmlkZXMgYSB0ZXJtaW5hbCBVSSBmb3Igd3JpdGluZyBPcGVuQVBJMyBhbmQgZG9jdW1lbnRhdGlvbiB3aXRoIHRoZSBlYXN5IHdheSBieSBjb3B5aW5nINGBdXJsIHF1ZXJpZXMgYW5kIGpzb24gcmVzcG9uc2VzLgpUaGUgcHJvamVjdCBpcyBpbiB0aGUgZWFybHkgYWxwaGEgdmVyc2lvbiBhbmQgaXMgbm90IGEgY2FuZGlkYXRlIGZvciB0aGUgbWFpbiBkZXZlbG9wZXIgaW5zdGFsbGF0aW9uLgpUaGUgcHJvamVjdCBpcyBhIHdlZWtlbmQgcHJvamVjdCBhbmQgd2FzIGNyZWF0ZWQgZXhjbHVzaXZlbHkgdG8gbWVldCB0aGUgbmVlZHMgb2YgdGhlIGF1dGhvci4KCi0tLQoKCiMjIEluc3RhbGxhdGlvbgoKY3V0b3MgaXMgYXZhaWxhYmxlIG9uIExpbnV4LCBtYWNPUyBhbmQgV2luZG93cyBwbGF0Zm9ybXMuCgoqIEJpbmFyaWVzIGZvciBMaW51eCwgV2luZG93cyBhbmQgTWFjIGFyZSBhdmFpbGFibGUgYXMgdGFyYmFsbHMgaW4gdGhlIFtyZWxlYXNlXShodHRwczovL2dpdGh1Yi5jb20vY2pwMjYwMC9jdXRvcy9yZWxlYXNlcykgcGFnZS4KKiBVc2UgYGdvIGdldGAgdG8gaW5zdGFsbCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHRvb2xzLiBUaGlzIGNvbW1hbmQgd2lsbCBpbnN0YWxsIHRoZSBjdXRvcyB3aXRoIGRlcGVuZGVuY2llczoKYGBgc2hlbGwKZ28gZ2V0IC11IGdpdGh1Yi5jb20vY2pwMjYwMC9jdXRvcwpgYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0KCiMjIENyZWF0ZSBuZXcgc3dhZ2dlciBkb2N1bWVudApJZiBhIGZpbGUgd2l0aCBkb2N1bWVudGF0aW9uIGlzIG5vdCBjcmVhdGVkLCBpdCBzaG91bGQgYmUgY3JlYXRlZCB1c2luZyB0aGUgYGluaXRgIGNvbW1hbmQuIApgYGBzaGVsbApjYXRvcyBpbml0IHN3YWdnZXIuanNvbgpgYGAKPiBUaGUgdXRpbGl0eSB3aWxsIGFzayBmb3IgYmFzaWMgZGF0YSB0byBjcmVhdGUgYSBkb2N1bWVudGF0aW9uIGZpbGUKCiMjIEFwcGVuZCBuZXcgcGF0aCBmcm9tIGN1cmwKSWYgdGhlIGZpbGUgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkIG9yIHdhcyBhbHJlYWR5IGNyZWF0ZWQsIHlvdSBjYW4gYWRkIGEgbmV3IHBhdGggdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgpgYGBzaGVsbApjdXRvcyBhZGQgY3VybCBzd2FnZ2VyLmpzb24KYGBgCj4gVGhlIHV0aWxpdHkgd2lsbCBvcGVuIGEgbmV3IGxpc3RlbmVyIG9mIHlvdXIgY2xpcGJvYXJkIHRvIGNyZWF0ZSBhIHBhdGNoLgo+IFlvdSBjYW4gZWFzaWx5IHVzZSBwcm9ncmFtcyB0aGF0IGFsbG93IHlvdSB0byBleHBvcnQgdG8gdGhlIGN1cmwgZm9ybWF0LiBTdWNoIGFzIFtJbnNvbW5pYV0oaHR0cHM6Ly9pbnNvbW5pYS5yZXN0L2Rvd25sb2FkLyksIFtQb3N0bWFuXShodHRwczovL3d3dy5wb3N0bWFuLmNvbS8pIG9yIEJyb3dzZXIKCiMjIENvbmZpZ3VyYXRpb24KQnkgZGVmYXVsdCB0aGUgdXRpbGl0eSBsb29rcyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGlzIHBhdGggZGVmYXVsdCBpcyAqKiRIT01FLy5jdXRvcy55YW1sKioKQnV0IHlvdSBjYW4gYWx3YXlzIHJld3JpdGUgdGhlIHBhdGggdG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBleHBsaWNpdGx5IGluIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyICoqLS1jb25maWc9KioKYGBgc2hlbGwKY3V0b3MgYWRkIGN1cmwgc3dhZ2dlci5qc29uIC0tY29uZmlnPWNvbmZpZy55bWwKYGBgCiMjIEV4YW1wbGUgY29uZmlndXJhdGlvbjoKYGBgWUFNTAojCiMgQmFzaWMgYXBwbGljYXRpb24gc2V0dGluZ3MKIwphcHBsaWNhdGlvbl9zZXR0aW5nczoKCiAgIyBMaXN0IG9mIGhlYWRlcnMgcGFyYW1zIHRvIGJlIHNraXBwZWQKICBza2lwcGVkX2hlYWRlcnM6CiAgICAtIGFjY2VwdAogICAgLSBhdXRob3JpdHkKICAgIC0gdXNlci1hZ2VudAogICAgLSBjb250ZW50LXR5cGUKICAgIC0gb3JpZ2luCiAgICAtIHNlYy1mZXRjaC1zaXRlCiAgICAtIHNlYy1mZXRjaC1tb2RlCiAgICAtIHNlYy1mZXRjaC1kZXN0CiAgICAtIHJlZmVyZXIKYGBgCiAK readmeEtag: '"66f8e98928e5f99efbd5bc17255e903bb185b039"' readmeLastModified: Wed, 03 Aug 2022 11:04:47 GMT repositoryId: 309656196 description: The easiest way to write OpenAPI 3 documentation using curl copy created: '2020-11-03T10:52:31Z' updated: '2024-02-13T19:55:53Z' language: Go archived: false stars: 6 watchers: 1 forks: 0 owner: cjp2600 logo: https://avatars.githubusercontent.com/u/1980974?v=4 license: Apache-2.0 repoEtag: '"be28e425825603c4d3671f947d3087409bfc98cf2a400e4d79811645349a734e"' repoLastModified: Tue, 13 Feb 2024 19:55:53 GMT foundInMaster: true category: - Testing - Server Implementations id: b7ea64a2b5378c448b9a74deb95fbde8 - source: openapi3 tags repository: https://github.com/0xtheprodev/nestjs-clean-example v3: true id: cd38c02141d5f9c5903ff75154a4f9aa repositoryMetadata: base64Readme: >- IyBuZXN0anMtY2xlYW4tZXhhbXBsZQoKWyFbVHlwZVNjcmlwdF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS90eXBlc2NyaXB0LSUyMzAwN0FDQy5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPXR5cGVzY3JpcHQmbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly90eXBlc2NyaXB0bGFuZy5vcmcvKQpbIVtOb2RlSlNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvbm9kZS5qcy02REE1NUY/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPW5vZGUuanMmbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly9ub2RlanMub3JnLykKWyFbTmVzdEpTXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL25lc3Rqcy0lMjNFMDIzNEUuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1uZXN0anMmbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly9uZXN0anMuY29tLykKWyFbRmFzdGlmeV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9mYXN0aWZ5LSUyMzAwMDAwMC5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPWZhc3RpZnkmbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly93d3cuZmFzdGlmeS5pby8pClshW09wZW5BUEldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvb3BlbmFwaS02QkE1Mzk/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPW9wZW5hcGktaW5pdGlhdGl2ZSZsb2dvQ29sb3I9ZmZmKV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykKWyFbR3JhcGhRTF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS8tR3JhcGhRTC1FMTAwOTg/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPWdyYXBocWwmbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly9ncmFwaHFsLm9yZy8pClshW0VTTGludF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9FU0xpbnQtNEIzMjYzP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1lc2xpbnQmbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly9lc2xpbnQub3JnKQpbIVtQcmV0dGllcl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9QcmV0dGllci1ibGFjaz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289cHJldHRpZXImbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly9wcmV0dGllci5pbykKWyFbT3BlbiBJc3N1ZXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy1yYXcvMHhUaGVQcm9EZXYvbmVzdGpzLWNsZWFuLWV4YW1wbGU/c3R5bGU9Zm9yLXRoZS1iYWRnZSldKGh0dHBzOi8vZ2l0aHViLmNvbS8weFRoZVByb0Rldi9uZXN0anMtY2xlYW4tZXhhbXBsZS9pc3N1ZXMpClshW0Nsb3NlZCBJc3N1ZXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy1jbG9zZWQtcmF3LzB4VGhlUHJvRGV2L25lc3Rqcy1jbGVhbi1leGFtcGxlP3N0eWxlPWZvci10aGUtYmFkZ2UpXShodHRwczovL2dpdGh1Yi5jb20vMHhUaGVQcm9EZXYvbmVzdGpzLWNsZWFuLWV4YW1wbGUvaXNzdWVzP3E9aXMlM0Fpc3N1ZStpcyUzQWNsb3NlZCkKWyFbT3BlbiBQdWxsc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvaXNzdWVzLXByLXJhdy8weFRoZVByb0Rldi9uZXN0anMtY2xlYW4tZXhhbXBsZT9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9naXRodWIuY29tLzB4VGhlUHJvRGV2L25lc3Rqcy1jbGVhbi1leGFtcGxlL3B1bGxzKQpbIVtDbG9zZWQgUHVsbHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy1wci1jbG9zZWQtcmF3LzB4VGhlUHJvRGV2L25lc3Rqcy1jbGVhbi1leGFtcGxlP3N0eWxlPWZvci10aGUtYmFkZ2UpXShodHRwczovL2dpdGh1Yi5jb20vMHhUaGVQcm9EZXYvbmVzdGpzLWNsZWFuLWV4YW1wbGUvcHVsbHM/cT1pcyUzQXByK2lzJTNBY2xvc2VkKQpbIVtDb250cmlidXRvcnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2NvbnRyaWJ1dG9ycy8weFRoZVByb0Rldi9uZXN0anMtY2xlYW4tZXhhbXBsZT9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9naXRodWIuY29tLzB4VGhlUHJvRGV2L25lc3Rqcy1jbGVhbi1leGFtcGxlL2dyYXBocy9jb250cmlidXRvcnMpClshW0FjdGl2aXR5XShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9sYXN0LWNvbW1pdC8weFRoZVByb0Rldi9uZXN0anMtY2xlYW4tZXhhbXBsZT9zdHlsZT1mb3ItdGhlLWJhZGdlJmxhYmVsPW1vc3QlMjByZWNlbnQlMjBhY3Rpdml0eSldKGh0dHBzOi8vZ2l0aHViLmNvbS8weFRoZVByb0Rldi9uZXN0anMtY2xlYW4tZXhhbXBsZS9wdWxzZSkKCiMjIERlc2NyaXB0aW9uCgpfRXhhbXBsZSBBcHBsaWNhdGlvbiBJbnRlcmZhY2UgdXNpbmcgTmVzdEpTIGZyYW1ld29yayBpbiBUeXBlU2NyaXB0XwoKVGhpcyBleGFtcGxlIHNob3djYXNlcyBSZXBvc2l0b3J5IFBhdHRlcm4gaW4gSGV4YWdvbmFsIEFyY2hpdGVjdHVyZSBfKGFsc28ga25vd24gYXMgQ2xlYW4gQXJjaGl0ZWN0dXJlKV8uIEhlcmUgd2UgaGF2ZSB0d28gRW50aXRpZXMgLSBCb29rcyBhbmQgQXV0aG9ycywgd2hvc2UgcmVsYXRpb25zaGlwcyBoYXZlIGJlZW4gZXhwbG9pdGVkIHRvIGNyZWF0ZSBDUlVEIGVuZHBvaW50IGluIFJFU1QgdW5kZXIgT3BlbkFQSSBzdGFuZGFyZC4KCiMjIEluc3RhbGxhdGlvbgoKLSBJbnN0YWxsIGFsbCB0aGUgcHJvamVjdCBkZXBlbmRlbmN5IHVzaW5nIFtZYXJuXShodHRwczovL3lhcm5wa2cuY29tKToKCiAgYGBgc2gKICAkIHlhcm4KICBgYGAKCi0gUnVuIHRoZSBhcHBsaWNhdGlvbiBmcm9tIGNvbW1hbmQgcHJvbXB0OgoKICBgYGBzaAogICQgeWFybiBzdGFydAogIGBgYAoKIyMgVGVzdGluZwoKLSBSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGluaXRpYXRlIFVuaXQgdGVzdDoKICBgYGBzaAogICQgeWFybiB0ZXN0CiAgYGBgCi0gUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBpbml0aWF0ZSBFMkUgdGVzdDoKICBgYGBzaAogICQgeWFybiB0ZXN0OmUyZQogIGBgYAoKIyMgTGljZW5zZQoKJmNvcHk7IE1JVCBMaWNlbnNlCg== readmeEtag: '"d0240b56c75e047dee78bd5095a42dacf38f37ff"' readmeLastModified: Fri, 12 May 2023 09:03:17 GMT repositoryId: 507814008 description: Clean Architecture Example using NestJS on Fastify created: '2022-06-27T07:53:29Z' updated: '2025-10-09T13:15:39Z' language: TypeScript archived: false stars: 7 watchers: 0 forks: 1 owner: 0xTheProDev logo: https://avatars.githubusercontent.com/u/14367736?v=4 license: MIT repoEtag: '"04db310565f7f928d8d1e4c6f3daafd7a25440fce4c5b949f1d940b74e4084b6"' repoLastModified: Thu, 09 Oct 2025 13:15:39 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/progyan1997/nestjs-clean-example - source: openapi3 tags repository: https://github.com/stackql/stackql-provider-azure v3: true id: 612cb89afa40fd2312a6a1ba76b8d700 repositoryMetadata: base64Readme: >- IyBBenVyZSBPcGVuQVBJIERvYyBHZW5lcmF0b3IKCkdlbmVyYXRlcyBhIHNpbmdsZSBPcGVuQVBJIGRvY3VtZW50IGZvciBlYWNoIEF6dXJlIFJlc291cmNlIE1hbmFnZXIgc2VydmljZSBmcm9tIGEgc2V0IG9mIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgc291cmNlZCBmcm9tIFtfX2F6dXJlLXJlc3QtYXBpLXNwZWNzX19dKGh0dHBzOi8vZ2l0aHViLmNvbS9BenVyZS9henVyZS1yZXN0LWFwaS1zcGVjcykuICAKClRoaXMgcHJvamVjdCB1c2VzIFtfX2F1dG9yZXN0X19dKGh0dHBzOi8vZ2l0aHViLmNvbS9BenVyZS9hdXRvcmVzdCkgdmlhIEphdmFTY3JpcHQgdG8gZW1pdCB0aGUgbGF0ZXN0IHNldCBvZiBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGZvciBlYWNoIHNlcnZpY2UsICB0aGVuIGRlcmVmZXJlbmNlcyBhbmQgY29tYmluZXMgdGhlIGRvY3VtZW50cyBpbnRvIGEgc2luZ2xlIFlBTUwgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIHVzaW5nIFtfX0FQSURldlRvb2xzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXJfX10oaHR0cHM6Ly9naXRodWIuY29tL0FQSURldlRvb2xzL2pzb24tc2NoZW1hLXJlZi1wYXJzZXIpLiAKCj4gYSBjb21wbGV0ZSBzZXQgb2Ygc3BlY3MgZm9yIGVhY2ggc2VydmljZSBpcyBhdmFpbGFibGUgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFja3FsL3N0YWNrcWwtYXp1cmUtb3BlbmFwaS90cmVlL21haW4vb3BlbmFwaS8zLWNvbWJpbmVkKQoKPiBhIHNldCBvZiBzcGVjcyBmb3IgZWFjaCBzZXJ2aWNlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGBhenVyZWAgYW5kIGBhenVyZV9leHRyYXNgIGBzdGFja3FsYCBwcm92aWRlciBpcyBhdmFpbGFibGUgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFja3FsL3N0YWNrcWwtYXp1cmUtb3BlbmFwaS90cmVlL21haW4vb3BlbmFwaS80LXRhZ2dlZCkgIAoKIyMgVXNhZ2UKCj4gdXNlIHRoZSBgcHJlcmVxLnNoYCBzY3JpcHQgb3IgdGhlIGVxdWl2YWxlbnQgdG8gZG93bmxvYWQgdGhlIGxhdGVzdCBhcGkgZG9jdW1lbnRhdGlvbiBmcm9tIFtfX2F6dXJlLXJlc3QtYXBpLXNwZWNzX19dKGh0dHBzOi8vZ2l0aHViLmNvbS9BenVyZS9henVyZS1yZXN0LWFwaS1zcGVjcykKCj4gdXNlIGBydW4uc2hgIHNjcmlwdCBvciB0aGUgZXF1aXZhbGVudCB0byBydW4gYWxsIHRoZSBgc3RhY2txbC1henVyZS1vcGVuYXBpYCBjb21tYW5kcyBpbiBhIGJhdGNoCgpUaGUgbWFpbiBlbnRyeXBvaW50IHRvIHRoZSBwcm9ncmFtIGlzOiAgCgpgYGBiYXNoCmJpbi9zdGFja3FsLWF6dXJlLW9wZW5hcGkKYGBgCgpUaGlzIGNhbiBiZSBydW4gd2l0aG91dCBhbnkgYXJndW1lbnRzIHRvIGdldCBjb21tYW5kIGxpbmUgdXNhZ2UgYW5kIGhlbHAuICBUaGUgYHN0YWNrcWwtYXp1cmUtb3BlbmFwaWAgY29tbWFuZHMgaW5jbHVkZToKCi0gYGdlbmVyYXRlYCA6IHVzZXMgYGF1dG9yZXN0YCB0byBnZW5lcmF0ZSBpbml0aWFsIE9wZW5BUEkzIHNwZWNzIGZvciBvbmUgb3IgbWFueSBzZXJ2aWNlcwotIGBkZXJlZmVyZW5jZWAgOiBkZXJlZmVyZW5jZXMgYWxsIGV4dGVybmFsIEpTT04gcG9pbnRlcnMgaW4gdGhlIGdlbmVyYXRlZCBPcGVuQVBJIHNwZWNzCi0gYGNvbWJpbmVgIDogY29tYmluZXMgYWxsIHRoZSBnZW5lcmF0ZWQgT3BlbkFQSSBzcGVjcyBpbnRvIGEgc2luZ2xlIE9wZW5BUEkgc3BlYwotIGB0YWdgIDogcmVwbGFjZXMgZXhpc3RpbmcgdGFncyBmb3Igb3BlcmF0aW9ucyB3aXRoIHRoZSBzdGFja3FsIHJlc291cmNlIG5hbWUgKG9wdGlvbmFsKQoKVGhlc2UgY29tbWFuZHMgYXJlIGludGVuZGVkIHRvIGJlIHJ1biBpbiBzZXF1ZW5jZSB3aXRoIHRoZSBvdXRwdXQgb2YgZWFjaCBjb21tYW5kIGJlaW5nIHRoZSBpbnB1dCB0byB0aGUgbmV4dC4gIFRoZSBmbG93IGlzIHN1bW1hcml6ZWQgYmVsb3c6ICAKCiMjIyBJTUFHRQoKWyFbc3RhY2txbF9henVyZV9vcGVuYXBpXShpbWFnZXMvc3RhY2txbF9henVyZV9vcGVuYXBpLnBuZyldKGltYWdlcy9zdGFja3FsX2F6dXJlX29wZW5hcGkucG5nKQoKU3BlY2lmaWMgZGV0YWlscyBhYm91dCBlYWNoIGNvbW1hbmQgYXJlIHByb3ZpZGVkIGluIHRoZSBzZWN0aW9ucyBiZWxvdy4gIAoKIyMgYGdlbmVyYXRlYCBjb21tYW5kCgpVc2VzIGBhdXRvcmVzdGAgdG8gZ2VuZXJhdGUgaW5pdGlhbCBPcGVuQVBJMyBzcGVjcyBmb3Igb25lIG9yIG1hbnkgc2VydmljZXMgdXNpbmcgdGhlIGBhdXRvcmVzdGAgY29uZmlndXJhdGlvbiBkYXRhIGluIHRoZSBgcmVhZG1lLm1kYCBpbiBlYWNoIHNlcnZpY2Ugc3BlY2lmaWNhdGlvbiBkaXJlY3RvcnkgZnJvbSB0aGUgYG1haW5gIGJyYW5jaCBvZiB0aGUgW2F6dXJlLXJlc3QtYXBpLXNwZWNzXShodHRwczovL2dpdGh1Yi5jb20vQXp1cmUvYXp1cmUtcmVzdC1hcGktc3BlY3MpIHJlcG8uICBDb25jZXB0dWFsbHkgdGhpcyB3b3VsZCBiZSBzaW1pbGFyIHRvIHJ1bm5pbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kIGluIGVhY2ggc3ViZGlyZWN0b3J5IG9mIHRoZSBgc3BlY2lmaWNhdGlvbmAgZm9sZGVyOiAgICAgIAoKYGBgYmFzaAphdXRvcmVzdCAuL3Jlc291cmNlLW1hbmFnZXIvcmVhZG1lLm1kIFwKLS1vcGVuYXBpLXR5cGU9YXJtIFwKLS1vdXRwdXQtY29udmVydGVkLW9haTMKYGBgCgpUaGUgb3V0cHV0IG9mIHRoaXMgY29tbWFuZCBpcyBhIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgKG4tbGV2ZWxzIGRlZXApIGNvbnRhaW5pbmcgT3BlbkFQSSBKU09OIGRvY3VtZW50cyB3aXRoIHJlZmVyZW5jZXMgdG8gZWFjaCBvdGhlciAodXNpbmcgSlNPTiBgJHJlZnNgKSwgdGhlIHVuaW9uIG9mIHdoaWNoIGZvcm1zIGEgY29tcGxldGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIHNlcnZpY2UuICAKClRvIGdlbmVyYXRlIHNwZWNzIGZvciBhIHNpbmdsZSBzZXJ2aWNlICh0aGUgYGNvbXB1dGVgIHNlcnZpY2UgaW4gdGhpcyBleGFtcGxlKSwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYGJhc2gKYmluL3N0YWNrcWwtYXp1cmUtb3BlbmFwaSBnZW5lcmF0ZSBjb21wdXRlCmBgYAoKVG8gZ2VuZXJhdGUgc3BlY3MgZm9yIGFsbCBzZXJ2aWNlcywgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYGJhc2gKYmluL3N0YWNrcWwtYXp1cmUtb3BlbmFwaSBnZW5lcmF0ZQpgYGAKCiMjIGBkZXJlZmVyZW5jZWAgY29tbWFuZAoKVGFrZXMgdGhlIG91dHB1dCBmcm9tIHRoZSBgZ2VuZXJhdGVkYCBjb21tYW5kLCBlbnVtZXJhdGVzIGFsbCBKU09OIGRvY3VtZW50cyBuZXN0ZWQgYXQgYW55IGxldmVsIGluIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlLCBhbmQgZGVyZWZlcmVuY2VzIGFsbCBKU09OIHBvaW50ZXJzIGluIGVhY2ggZG9jdW1lbnQsIG91dHB1dHRpbmcgYSBmbGF0IHN0cnVjdHVyZSBjb250YWluaW5nIGEgZG9jdW1lbnQgZm9yIGVhY2ggZ2VuZXJhdGVkIGRvY3VtZW50IGZvdW5kIGZvciBlYWNoIHNlcnZpY2Ugd2l0aCBubyBleHRlcm5hbCByZWZlcmVuY2VzLiAgCgpUbyBkZXJlZmVyZW5jZSBhIHNldCBvZiBgYXV0b3Jlc3RgIGdlbmVyYXRlZCBzcGVjcyBmb3IgYSBzaW5nbGUgc2VydmljZSAodGhlIGBjb21wdXRlYCBzZXJ2aWNlIGluIHRoaXMgZXhhbXBsZSksIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGBiYXNoCmJpbi9zdGFja3FsLWF6dXJlLW9wZW5hcGkgZGVyZWZlcmVuY2UgY29tcHV0ZQpgYGAKClRvIGRlcmVmZXJlbmNlIHNwZWNzIGZvciBhbGwgc2VydmljZXMsIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGBiYXNoCmJpbi9zdGFja3FsLWF6dXJlLW9wZW5hcGkgZGVyZWZlcmVuY2UKYGBgCgojIyBgY29tYmluZWAgY29tbWFuZAoKVGFrZXMgdGhlIG91dHB1dCBmcm9tIHRoZSBgZGVyZWZlcmVuY2VgIGNvbW1hbmQsIGFuZCBjb21iaW5lcyBhbGwgdGhlIGdlbmVyYXRlZCBkb2N1bWVudHMgaW50byBhIHNpbmdsZSBPcGVuQVBJIHNwZWMsIG91dHB1dHRpbmcgYSBzaW5nbGUsIHNlbGYgY29udGFpbmVkIFlBTUwgZG9jdW1lbnQgKHJlbW92aW5nIHRoZSBgZXhhbXBsZXNgIGZvciBicmV2aXR5KS4gIAoKVG8gY3JlYXRlIGEgc2luZ2xlIE9wZW5BUEkgZG9jdW1lbnQgZm9yIGEgc2luZ2xlIHNlcnZpY2UgKHRoZSBgY29tcHV0ZWAgc2VydmljZSBpbiB0aGlzIGV4YW1wbGUpLCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgYmFzaApiaW4vc3RhY2txbC1henVyZS1vcGVuYXBpIGNvbWJpbmUgY29tcHV0ZQpgYGAKClRvIGNyZWF0ZSBhIHNpbmdsZSBPcGVuQVBJIGRvY3VtZW50IGZvciBhbGwgc2VydmljZXMsIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGBiYXNoCmJpbi9zdGFja3FsLWF6dXJlLW9wZW5hcGkgY29tYmluZQpgYGAKCiMjIGB0YWdgIGNvbW1hbmQgKE9wdGlvbmFsKQoKVGFrZXMgdGhlIG91dHB1dCBmcm9tIHRoZSBgY29tYmluZWAgY29tbWFuZCwgZ2VuZXJhdGVzIHRoZSBzdGFja3FsIHJlc291cmNlIG5hbWUgZnJvbSBzdGVtbWluZyB0aGUgYG9wZXJhdGlvbklkYCBmb3IgZWFjaCBvcGVyYXRpb24sIHB1c2hlcyB0aGlzIHZhbHVlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGB0YWdzYCBhcnJheSBmb3IgZWFjaCBvcGVyYXRpb24sIGFuZCBvdXRwdXRzIHRoZSByZXN1bHRpbmcgZG9jdW1lbnQuICAgIAoKVG8gdXBkYXRlIHRhZ3MgZm9yIGEgc2luZ2xlIE9wZW5BUEkgZG9jdW1lbnQgZm9yIGEgc2luZ2xlIHNlcnZpY2UgKHRoZSBgY29tcHV0ZWAgc2VydmljZSBpbiB0aGlzIGV4YW1wbGUpLCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOiAgCgpgYGBiYXNoCmJpbi9zdGFja3FsLWF6dXJlLW9wZW5hcGkgdGFnIGNvbXB1dGUKYGBgCgpUbyB0YWdzIGZvIGFsbCBPcGVuQVBJIGRvY3VtZW50cyBmb3IgYWxsIHNlcnZpY2VzLCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgYmFzaApiaW4vc3RhY2txbC1henVyZS1vcGVuYXBpIHRhZwpgYGAKCiMjIFRlc3RpbmcgbG9jYWxseSB3aXRoIGBzdGFja3FsYAoxLiBkb3dubG9hZCB0aGUgbGF0ZXN0IGBzdGFja3FsYCBiaW5hcnksIGZvciBleGFtcGxlIGBjdXJsIC1MIGh0dHBzOi8vYml0Lmx5L3N0YWNrcWwtemlwIC1PICYmIHVuemlwIHN0YWNrcWwtemlwYCBmb3IgTGludXggc3lzdGVtcwoyLiBydW4gdGhlIGZvbGxvd2luZzoKYGBgClBST1ZJREVSX1JFR0lTVFJZX1JPT1RfRElSPSIkKHB3ZCkvb3BlbmFwaSIKUkVHX1NUUj0neyJ1cmwiOiAiZmlsZTovLycke1BST1ZJREVSX1JFR0lTVFJZX1JPT1RfRElSfSciLCAibG9jYWxEb2NSb290IjogIicke1BST1ZJREVSX1JFR0lTVFJZX1JPT1RfRElSfSciLCAidmVyaWZ5Q29uZmlnIjogeyJub3BWZXJpZnkiOiB0cnVlfX0nCi4vc3RhY2txbCBzaGVsbCAtLXJlZ2lzdHJ5PSIke1JFR19TVFJ9IgpgYGAKCiMjIyBSdW4gVGVzdCBTdWl0ZQoKZnJvbSB0aGUgYHN0YWNrcWwtcHJvdmlkZXItdGVzdHNgIGRpcmVjdG9yeToKCmBgYGJhc2gKY2QgLi4vLi4vc3RhY2txbC1wcm92aWRlci10ZXN0cwoKIyBhenVyZQpzaCB0ZXN0LXByb3ZpZGVyLnNoIFwKYXp1cmUgXApmYWxzZSBcCi9tbnQvYy9Mb2NhbEdpdFJlcG9zL3N0YWNrcWwvb3BlbmFwaS1jb252ZXJzaW9uL3N0YWNrcWwtYXp1cmUtb3BlbmFwaS9vcGVuYXBpIFwKdHJ1ZQoKIyBhenVyZV9leHRyYXMKc2ggdGVzdC1wcm92aWRlci5zaCBcCmF6dXJlX2V4dHJhcyBcCmZhbHNlIFwKL21udC9jL0xvY2FsR2l0UmVwb3Mvc3RhY2txbC9vcGVuYXBpLWNvbnZlcnNpb24vc3RhY2txbC1henVyZS1vcGVuYXBpL29wZW5hcGkgXAp0cnVlCgojIGF6dXJlX2lzdgpzaCB0ZXN0LXByb3ZpZGVyLnNoIFwKYXp1cmVfaXN2IFwKZmFsc2UgXAovbW50L2MvTG9jYWxHaXRSZXBvcy9zdGFja3FsL29wZW5hcGktY29udmVyc2lvbi9zdGFja3FsLWF6dXJlLW9wZW5hcGkvb3BlbmFwaSBcCnRydWUKCiMgYXp1cmVfc3RhY2sKc2ggdGVzdC1wcm92aWRlci5zaCBcCmF6dXJlX3N0YWNrIFwKZmFsc2UgXAovbW50L2MvTG9jYWxHaXRSZXBvcy9zdGFja3FsL29wZW5hcGktY29udmVyc2lvbi9zdGFja3FsLWF6dXJlLW9wZW5hcGkvb3BlbmFwaSBcCnRydWUKYGBgCgojIERvY3VtZW50CgpgYGBiYXNoCnNoIHByb3ZpZGVyLWRldi9zY3JpcHRzL2ZpeC1icm9rZW4tbGlua3Muc2gKCiMgYXp1cmVfc3RhY2sKbnBtIHJ1biBnZW5lcmF0ZS1kb2NzIC0tIFwKICAtLXByb3ZpZGVyLW5hbWUgYXp1cmVfc3RhY2sgXAogIC0tcHJvdmlkZXItZGlyIC4vb3BlbmFwaS9zcmMvYXp1cmVfc3RhY2svdjAwLjAwLjAwMDAwIFwKICAtLW91dHB1dC1kaXIgLi93ZWJzaXRlL2F6dXJlX3N0YWNrIFwKICAtLXByb3ZpZGVyLWRhdGEtZGlyIC4vcHJvdmlkZXItZGV2L2RvY2dlbi9henVyZV9zdGFjawoKY2Qgd2Vic2l0ZS9henVyZV9zdGFjawp5YXJuIGJ1aWxkCnlhcm4gc3RhcnQKY2QgLi4vLi4KCiMgYXp1cmVfaXN2Cm5wbSBydW4gZ2VuZXJhdGUtZG9jcyAtLSBcCiAgLS1wcm92aWRlci1uYW1lIGF6dXJlX2lzdiBcCiAgLS1wcm92aWRlci1kaXIgLi9vcGVuYXBpL3NyYy9henVyZV9pc3YvdjAwLjAwLjAwMDAwIFwKICAtLW91dHB1dC1kaXIgLi93ZWJzaXRlL2F6dXJlX2lzdiBcCiAgLS1wcm92aWRlci1kYXRhLWRpciAuL3Byb3ZpZGVyLWRldi9kb2NnZW4vYXp1cmVfaXN2CgpjZCB3ZWJzaXRlL2F6dXJlX2lzdgp5YXJuIGJ1aWxkCnlhcm4gc3RhcnQKY2QgLi4vLi4KCiMgYXp1cmVfZXh0cmFzCm5wbSBydW4gZ2VuZXJhdGUtZG9jcyAtLSBcCiAgLS1wcm92aWRlci1uYW1lIGF6dXJlX2V4dHJhcyBcCiAgLS1wcm92aWRlci1kaXIgLi9vcGVuYXBpL3NyYy9henVyZV9leHRyYXMvdjAwLjAwLjAwMDAwIFwKICAtLW91dHB1dC1kaXIgLi93ZWJzaXRlL2F6dXJlX2V4dHJhcyBcCiAgLS1wcm92aWRlci1kYXRhLWRpciAuL3Byb3ZpZGVyLWRldi9kb2NnZW4vYXp1cmVfZXh0cmFzCgpjZCB3ZWJzaXRlL2F6dXJlX2V4dHJhcwp5YXJuIGJ1aWxkCnlhcm4gc3RhcnQKY2QgLi4vLi4KCiMgYXp1cmUKbnBtIHJ1biBnZW5lcmF0ZS1kb2NzIC0tIFwKICAtLXByb3ZpZGVyLW5hbWUgYXp1cmUgXAogIC0tcHJvdmlkZXItZGlyIC4vb3BlbmFwaS9zcmMvYXp1cmUvdjAwLjAwLjAwMDAwIFwKICAtLW91dHB1dC1kaXIgLi93ZWJzaXRlL2F6dXJlIFwKICAtLXByb3ZpZGVyLWRhdGEtZGlyIC4vcHJvdmlkZXItZGV2L2RvY2dlbi9henVyZQoKIyBub3RlIHRoZSBhenVyZSBzaXRlIGhhcyB0byBiZSBidWlsdCBsb2NhbGx5CmNkIHdlYnNpdGUvYXp1cmUKLi9sb2NhbF9idWlsZC5zaAouL2RlcGxveV90b19uZXRsaWZ5LnNoCmNkIC4uLy4uCmBgYA== readmeEtag: '"0ca685165f84ee7ed53bf517cca1adf1584da864"' readmeLastModified: Wed, 17 Sep 2025 01:48:09 GMT repositoryId: 522469749 description: >- Generates a single OpenAPI document for each Azure Resource Manager service from a set of OpenAPI specifications sourced from Azure REST API specs created: '2022-08-08T08:41:58Z' updated: '2025-10-04T07:53:46Z' language: JavaScript archived: false stars: 7 watchers: 2 forks: 0 owner: stackql logo: https://avatars.githubusercontent.com/u/95105302?v=4 repoEtag: '"4f35624846ad7734c37507d399a0ae25fb3e5651919da47d732e0c64908eae80"' repoLastModified: Sat, 04 Oct 2025 07:53:46 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/stackql/stackql-azure-openapi - source: openapi3 tags repository: https://github.com/jordan-chalupka/ouraring v3: true repositoryMetadata: base64Readme: >- IyBPdXJhIFJpbmcgT3BlbkFQSXYzIFNjaGVtYSBEZWZpbml0aW9uICsgR28gQ2xpZW50ClRoaXMgcmVwbyBjb250YWlucyBhbiBPcGVuQVBJdjMgc2NoZW1hIGRlZmluaXRpb24gZm9yIFtPdXJhUmluZ10oaHR0cHM6Ly9vdXJhcmluZy5jb20vKQoKT3VyYVJpbmcgQVBJIGRvY3VtZW50YXRpb24gaHR0cHM6Ly9jbG91ZC5vdXJhcmluZy5jb20vZG9jcy8KCiMjIEdlbmVyYXRpbmcgdGhlIGNsaWVudApDbGllbnQgZ2VuZXJhdGlvbiBpcyBkb25lIHVzaW5nIGh0dHBzOi8vZ2l0aHViLmNvbS9kZWVwbWFwL29hcGktY29kZWdlbgoKVG8gcmVnZW5lcmF0ZSB0aGUgY2xpZW50LCBydW4gdGhlIGNvbW1hbmQKYGBgCm9hcGktY29kZWdlbiAtLXBhY2thZ2Ugb3VyYXJpbmcgb3VyYXJpbmdfb3BlbmFwaS55YW1sID4gb3VyYXJpbmcuZ2VuLmdvCmBgYAoKIyMgRXh0ZW5kaW5nIHRoZSBzY2hlbWEgZGVmaW5pdGlvbgpBdCB0aGlzIHRpbWUsIHRoZSBzY2hlbWEgZGVmaW5pdGlvbiBpcyBub3QgY29tcGxldGUuIAoKSWYgdGhlcmUgaXMgZGF0YSB3aGljaCB5b3Ugd291bGQgbGlrZSB0byBmZXRjaCBidXQgaXQgaXMgbm90IGF2YWlsYWJsZSwgY29uc2lkZXIgYWRkaW5nIGl0IHRvIHRoZSBzY2hlbWEgZGVmaW5pdGlvbgphbmQgcmVnZW5lcmF0aW5nIHRoZSBjbGllbnQuCgojIyBFeGFtcGxlIHVzYWdlCkdldCB5b3VyIHBlcnNvbmFsIGFjY2VzcyB0b2tlbiBmcm9tIEF1cmFSaW5nCmh0dHBzOi8vY2xvdWQub3VyYXJpbmcuY29tL3BlcnNvbmFsLWFjY2Vzcy10b2tlbnMKCmBgYGJhc2gKZXhwb3J0IE9VUkFfQUNDRVNTX1RPS0VOPSJZT1VSX1BFUlNPTkFMX0FDQ0VTU19UT0tFTiIKZ28gcnVuIGV4YW1wbGUvbWFpbi5nbwpgYGAKClNob3VsZCBmZXRjaCB5b3VyIGFjdGl2aXR5IHNjb3JlIGZvciB0b2RheToKYGBgCkFjdGl2aXR5IFNjb3JlOiA4MQpgYGAK readmeEtag: '"d336657fbb93d93dc9140b4b8628bd639aabb926"' readmeLastModified: Sat, 18 Dec 2021 22:55:24 GMT repositoryId: 439717045 description: Go client + OpenAPI v3 spec for Oura-Ring created: '2021-12-18T21:20:08Z' updated: '2024-05-23T16:59:30Z' language: Go archived: false stars: 6 watchers: 1 forks: 0 owner: jordan-chalupka logo: https://avatars.githubusercontent.com/u/9794216?v=4 repoEtag: '"2884c1da90cc2a6e7f114d0da7956c37afbe18303bd313d76c9714bdbc969b31"' repoLastModified: Thu, 23 May 2024 16:59:30 GMT foundInMaster: true category: - Converters - Server Implementations id: c0a9a71da09e3f7ae91e9f6c7ee05c41 - source: openapi3 tags repository: https://github.com/arno-di-loreto/api-specifications-documentation-as-data v3: true id: 944858e36a88377fd62fd15e2e48e808 repositoryMetadata: base64Readme: >- IyBBUEkgU3BlY2lmaWNhdGlvbiBEb2N1bWVudGF0aW9uIGFzIERhdGEgUHJvamVjdAoKUmVzZWFyY2gsIHRlc3RzIGFuZCBQT0NzIHRvIFtleHRyYWN0XShodHRwczovL2dpdGh1Yi5jb20vYXJuby1kaS1sb3JldG8vb3BlbmFwaS1zcGVjaWZpY2F0aW9uLWRvY3VtZW50YXRpb24tYXMtZGF0YS90cmVlL21haW4vb2FzLW1kLXBhcnNlci1weXRob24pIHNvbWUgW2RhdGFdKHNwZWNpZmljYXRpb25zLWRhdGEpIGZyb20gdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBhbmQgQXN5bmNBUEkgU3BlY2lmaWNhdGlvbiBbZG9jdW1lbnRhdGlvbl0oc3BlY2lmaWNhdGlvbnMpIGFuZCBbdmlzdWFsaXplXShvYXMtZGF0YS12aWV3ZXItd2ViLWNvbXBvbmVudC8pIGl0LgpfV2FybmluZzogQWxsIHRoaXMgaXMgZXhwZXJpbWVudGFsLl8KCkNoZWNrIHRoZSBbc2NyaXB0c10oc2NyaXB0cykgZm9sZGVyIHRvIGluc3RhbGwgYW5kIHJ1biBlbGVtZW50cy4= readmeEtag: '"84bcee5a8d76a2e524f8985fd4d92b51ccba82a6"' readmeLastModified: Thu, 20 Apr 2023 15:44:52 GMT repositoryId: 544376926 description: >- Extracting and visualizing data from OpenAPI and AsyncAPI Specifications documentation (warning: experimental) created: '2022-10-02T10:21:52Z' updated: '2025-08-27T14:26:34Z' language: Mermaid archived: false stars: 6 watchers: 1 forks: 2 owner: arno-di-loreto logo: https://avatars.githubusercontent.com/u/10104551?v=4 repoEtag: '"be1e48aa22f85222bd86f798b51bdd9a353f6109ed04b883e4c7311192e36582"' repoLastModified: Wed, 27 Aug 2025 14:26:34 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/tomboyo/lily v3: true repositoryMetadata: base64Readme: >- PSBMaWx5IE9BUy1Uby1KYXZhIENvbXBpbGVyCgppbWFnZTpodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLW1ldGFkYXRhL3YvaHR0cHMvcmVwbzEubWF2ZW4ub3JnL21hdmVuMi9pby9naXRodWIvdG9tYm95by9saWx5L2xpbHkvbWF2ZW4tbWV0YWRhdGEueG1sLnN2Z1t0aXRsZT0ibGF0ZXN0IHJlbGVhc2UgdmVyc2lvbiBiYWRnZSIgbGluaz0iaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9pby5naXRodWIudG9tYm95by5saWx5Il0KCkxpbHkgaXMgYSBjb21waWxlciB0aGF0IGNvbnN1bWVzIE9wZW5BUEkgKFN3YWdnZXIpIHNwZWNpZmljYXRpb25zIGFuZCBwcm9kdWNlcyBKYXZhIHNvdXJjZSBjb2RlLgpJdCBpcyBpbnRlbmRlZCB0byBiZSBhbiBhbHRlcm5hdGl2ZSB0byBodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yW09wZW5BUEkgR2VuZXJhdG9yXSwgd2hpY2ggYXQgdGltZSBvZiB3cml0aW5nIGlzIHRoZSBvbmx5IG9wdGlvbiwgYW5kIHN1YnN0YW50aWFsbHkgbW9yZSBjb21wbGV0ZSB0aGFuIExpbHkuCgo9PSBVc2FnZQoKUGxlYXNlIGJlIGF3YXJlIHRoYXQgTGlseSBpcyBpbiB0aGUgZWFybHkgc3RhZ2VzIG9mIGRldmVsb3BtZW50IGFuZCBtYXkgbm90IGJlIHN1aXRhYmxlIGZvciBwcm9kdWN0aW9uIHVzZS1jYXNlcy4gVXNlIExpbHkgYXQgeW91ciBvd24gcmlzay4KClRoYXQgc2FpZCwgYmV0YSB0ZXN0aW5nIGlzIHRoZSBiZXN0IHdheSB0byBsaW5rOkNPTlRSSUJVVElORy5hZG9jW2NvbnRyaWJ1dGVdIHRvIHRoaXMgcHJvamVjdC4KCj09PSBKYXZhIEFQSQoKR2VuZXJhdGVkIHNvdXJjZSBjb2RlIGxvb2tzIGxpa2UgdGhpczoKCltzb3VyY2UsamF2YV0KLS0tLQpMaXN0PFBldD4gZXhhbXBsZUhhcHB5UGF0aCgpIHsKICB2YXIgYXBpID0gQXBpLm5ld0J1aWxkZXIoKQogICAgICAudXJpKCJodHRwczovL2V4YW1wbGUuY29tLyIpCiAgICAgIC5idWlsZCgpOwoKICB0cnkgewogICAgdmFyIHJlc3BvbnNlID0gYXBpLnBldHNPcGVyYXRpb25zKCkKICAgICAgICAubGlzdFBldHMoKQogICAgICAgIC5xdWVyeShxdWVyeSAtPiBxdWVyeS5saW1pdCg1MCkpCiAgICAgICAgLnNlbmRTeW5jKCk7CgogICAgcmV0dXJuIHN3aXRjaCAocmVzcG9uc2UpIHsKICAgICAgY2FzZSBMaXN0UGV0czIwMCBvayAtPiBvay5ib2R5KCkudmFsdWUoKTsKICAgICAgY2FzZSBMaXN0UGV0c0RlZmF1bHQgb3RoZXIgLT4gdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24ob3RoZXIuYm9keSgpLm1lc3NhZ2UoKSk7CiAgICB9OwogIH0gY2F0Y2ggKElPRXhjZXB0aW9uIHwgSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgewogICAgLy8gVGhlIGphdmEubmV0Lmh0dHAgbGF5ZXIgZW5jb3VudGVyZWQgYW4gZXhjZXB0aW9uLgogICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlVuYWJsZSB0byBjb21wbGV0ZSBQZXRzIEFQSSByZXF1ZXN0IiwgZSk7CiAgfQp9Ci0tLS0KCkhlcmUgYXJlIHNvbWUgb2YgdGhlIExpbHkgZmVhdHVyZXMgd2UganVzdCBzYXc6CgoqIElmIGFuIG9wZXJhdGlvbiBoYXMgdGhlICdwZXRzJyB0YWcsIHRoZW4gd2UgY2FuIGFjY2VzcyBpdCB2aWEgdGhlIGBwZXRzT3BlcmF0aW9ucygpYCBfb3BlcmF0aW9uIGdyb3VwXy4gRXZlcnkgb3BlcmF0aW9uIGlzIGFsc28gcGFydCBvZiB0aGUgYGV2ZXJ5T3BlcmF0aW9uKClgIGdyb3VwLCBhbmQgb3BlcmF0aW9ucyB3aXRob3V0IHRhZ3MgYXJlIGFsc28gbWVtYmVycyBvZiB0aGUgYGV2ZXJ5VW50YWdnZWRPcGVyYXRpb24oKWAgZ3JvdXAuIFRoZXNlIGdyb3VwcyBhcmUgaW50ZW5kZWQgdG8gaGVscCB1cyBleHBsb3JlIHRoZSBBUEkgdXNpbmcgSURFIHR5cGUtYWhlYWQvYXV0by1jb21wbGV0ZSBoaW50cy4KCiogUmVzcG9uc2VzIGZvcm0gYSBzZWFsZWQgaW50ZXJmYWNlLiBJZiB3ZSBoYXZlIHRoZSBwYXR0ZXJuLW1hdGNoaW5nIGZvciBzd2l0Y2ggZXhwcmVzc2lvbnMgZmVhdHVyZSBlbmFibGVkLCB3ZSBjYW4gY3JlYXRlIGFuIGV4aGF1c3RpdmUgc3dpdGNoIGV4cHJlc3Npb24gdG8gaGFuZGxlIGFsbCBwb3NzaWJsZSByZXNwb25zZXMsIGluY2x1ZGluZyB1bmRvY3VtZW50ZWQgYW5kIHVuZXhwZWN0ZWQgb25lcy4gT3RoZXJ3aXNlLCB3ZSBjYW4gdXNlIHBhdHRlcm4tbWF0Y2hpbmcgaW4gYW4gaWYtZWxzZSBsYWRkZXIsIG9yIGV2ZW4gYWNjZXNzIHRoZSBzdGF0dXMgY29kZSB2aWEgYHJlc3BvbnNlLmh0dHBSZXNwb25zZSgpLnN0YXR1c0NvZGUoKWAgKHRoZSBuYXRpdmUgamF2YS5uZXQuaHR0cCBBUEkpLgoKSW4gdGhlIHJlYWwgd29ybGQsIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgaGF2ZSBlcnJvcnMgaW4gdGhlbSB0aGF0IGNvdWxkIHByZXZlbnQgYSBnZW5lcmF0ZWQgQVBJIGZyb20gc3VjY2Vzc2Z1bGx5IG1ha2luZyByZXF1ZXN0cy4gUmF0aGVyIHRoYW4gd2FpdCBmb3Igc2VydmljZSBvd25lcnMgdG8gdXBkYXRlIHRoZWlyIHNwZWNpZmljYXRpb25zIG9yIHRyeSB0byBmaXggdGhlbSBpbiBhIGxvY2FsIGNvcHkgb3Vyc2VsdmVzLCB3ZSBjYW4gdXNlIExpbHkncyBBUEkgdG8gZG8gYXMgbXVjaCBhcyBwb3NzaWJsZSwgdGhlbiBkaXAgZG93biBpbnRvIHRoZSB1bmRlcmx5aW5nIGphdmEubmV0Lmh0dHAgQVBJIGZvciBmdWxsIGN1c3RvbWl6YXRpb24gYW5kIGNvbnRyb2w6Cgpbc291cmNlLGphdmFdCi0tLS0KdmFyIG9wZXJhdGlvbiA9IGFwaS5wZXRzT3BlcmF0aW9ucygpCiAgICAgICAgLmxpc3RQZXRzKCkKICAgICAgICAucXVlcnkocXVlcnkgLT4gcXVlcnkubGltaXQoNTApKTsKdmFyIHJlcXVlc3QgPSBIdHRwUmVxdWVzdC5uZXdCdWlsZGVyKG9wZXJhdGlvbi5odHRwUmVxdWVzdCgpLCAoaywgdikgLT4gdHJ1ZSkKICAgICAgICAuaGVhZGVyKCJ4LXNvbWUtdW5kb2N1bWVudGVkLWhlYWRlciIsICJmb287YmFyO2JheiIpCiAgICAgICAgLmJ1aWxkKCk7CgovLyBJZiB0aGUgQVBJIGhhcyBjb3JyZWN0bHkgZG9jdW1lbnRlZCByZXNwb25zZXMsIGxpbHkgd2lsbCBoZWxwIHVzIGRlc2VyaWFsaXplCi8vIHRoZSByZXNwb25zZSBhbmQgd2UgY2FuIGhhbmRsZSBpdCBsaWtlIGJlZm9yZS4KdmFyIHJlc3BvbnNlID0gb3BlcmF0aW9uLnNlbmRTeW5jKHJlcXVlc3QpOwoKLy8gT3RoZXJ3aXNlLCB3ZSBjYW4gdXNlIHRoZSBodHRwQ2xpZW50IHRvIGdldCBhbiBIdHRwUmVxdWVzdCBvZiBhbiBJbnB1dFN0cmVhbQovLyBhbmQgZGVzZXJpYWxpemUgaXQgaG93ZXZlciB3ZSBzZWUgZml0LCBpbmNsdWRpbmcgbm90IGF0IGFsbC4KdmFyIHJlc3BvbnNlID0gYXBpLmh0dHBDbGllbnQoKS5zZW5kKHJlcXVlc3QsIEJvZHlIYW5kbGVycy5vZklucHV0U3RyZWFtKCkpOwotLS0tCgpIZXJlJ3Mgd2hhdCB3ZSBqdXN0IHNhdzoKCiogV2UgY2FuIHVzZSB0aGUgb3BlcmF0aW9uIHRvIGN1c3RvbWl6ZSBhbiBIdHRwUmVxdWVzdCwgdGhlbiB1c2UgdGhlIGphdmEubmV0Lmh0dHAgQVBJIHRvIGNvcHktYW5kLW1vZGlmeSB0aGF0IHJlcXVlc3QuIFdlIGNhbiB1c2UgTGlseSBmb3IgZXZlcnl0aGluZyB0aGF0IGlzIGRvY3VtZW50ZWQgYnkgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBjb3JyZWN0bHksIGJ1dCB0aGVuIGFyYml0cmFyaWx5IG1vZGlmeSB0aGUgcmVxdWVzdCB3aXRoIHRoZSBuYXRpdmUgQVBJLiBUaGlzIGxldHMgdXMgYWNjb21tb2RhdGUgbmVhcmx5IGFueSBzcGVjaWZpY2F0aW9uIGVycm9yLCBhbmQgZXZlbiBmbGF3cyBpbiBMaWx5LgoKKiBXZSBjYW4gdGhlbiBhc2sgdGhlIG9wZXJhdGlvbiB0byBzZW5kIHRoZSBjdXN0b21pemVkIHJlcXVlc3QsIHdoaWNoIHdpbGwgcmV0dXJuIGEgcmVzcG9uc2UgdGhhdCBsYXppbHkgZGVzZXJpYWxpemVzIHRoZSByZXNwb25zZSBib2R5IHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuIElmIHdlIGtub3cgdGhlIGRvY3VtZW50ZWQgdHlwZSBpcyB3cm9uZywgd2UgY2FuIGluc3RlYWQgc2VuZCB0aGUgcmVxdWVzdCB3aXRoIHRoZSBuYXRpdmUgQVBJIGFuZCBkZXNlcmlhbGl6ZSB0aGUgSW5wdXRTdHJlYW0gaG93ZXZlciBuZWNlc3NhcnksIG9yIG5vdCBhdCBhbGwuCgpJbiBvdGhlciB3b3JkcywgTGlseSBpcyBkZXNpZ25lZCB0byBmYWNpbGl0YXRlIEhUVFAgaW50ZXJhY3Rpb25zIHdoZW5ldmVyIHBvc3NpYmxlLCBidXQgZmFsbCBiYWNrIGdyYWNlZnVsbHkgdG8gdGhlIG5hdGl2ZSBqYXZhLm5ldC5odHRwIEFQSSBpbiB0aGUgcHJlc2VuY2Ugb2Ygc3BlY2lmaWNhdGlvbiBlcnJvcnMuIE5vdGFibHksIGFsbCBvZiB0aGVzZSB3b3JrYXJvdW5kcyBhcmUgX2ZvcndhcmRzLWNvbXBhdGlibGVfOiBPbmNlIHRoZSBzZXJ2aWNlIG93bmVycyB1cGRhdGUgdGhlaXIgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIHRvIGNvcnJlY3Qgd2hhdGV2ZXIgZXJyb3JzIHdlcmUgcHJlc2VudCwgYWxsIG9mIG91ciBjb2RlIGNvbnRpbnVlcyB3b3JraW5nLiBXZSBjYW4gZ28gYmFjayBhbmQgdXBkYXRlIHRoZSBjb2RlIHRvIHVzZSB0aGUgZ2VuZXJhdGVkIEFQSSBhdCBvdXIgb3duIHBhY2UuCgo9PT0gTWF2ZW4gRGVwZW5kZW5jeQoKaW1hZ2U6aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9tYXZlbi1tZXRhZGF0YS92L2h0dHBzL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIvaW8vZ2l0aHViL3RvbWJveW8vbGlseS9saWx5L21hdmVuLW1ldGFkYXRhLnhtbC5zdmdbdGl0bGU9ImxhdGVzdCByZWxlYXNlIHZlcnNpb24gYmFkZ2UiIGxpbms9Imh0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vYXJ0aWZhY3QvaW8uZ2l0aHViLnRvbWJveW8ubGlseSJdCgpUbyBnZW5lcmF0ZSBzb3VyY2VzIGZyb20gYW4gT0FTIGRvY3VtZW50IGluIHlvdXIgbWF2ZW4gcHJvamVjdCwgYW5kIHRoZSBmb2xsb3dpbmcgbWF2ZW4gYnVpbGQgcGx1Z2luIGFuZCBkZXBlbmRlbmNpZXM6CgpgYGB4bWwKPGJ1aWxkPgogICAgPHBsdWdpbnM+CiAgICAgICAgPHBsdWdpbj4KICAgICAgICAgICAgPGdyb3VwSWQ+aW8uZ2l0aHViLnRvbWJveW8ubGlseTwvZ3JvdXBJZD4KICAgICAgICAgICAgPGFydGlmYWN0SWQ+bGlseS1jb21waWxlci1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICAgICAgICAgIDx2ZXJzaW9uPiR7bGlseVZlcnNpb259PC92ZXJzaW9uPgogICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KICAgICAgICAgICAgICAgIDwhLS0gQW55IFVSSSB0byBhbiBPQVMgZG9jdW1lbnQsIGJlIGl0IGh0dHBzOi8vIG9yIGZpbGU6Ly8uIC0tPgogICAgICAgICAgICAgICAgPHVyaT5odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9tYWluL2V4YW1wbGVzL3YzLjAvcGV0c3RvcmUueWFtbDwvdXJpPgoKICAgICAgICAgICAgICAgIDwhLS0gVW5jb21tZW50IHRvIGN1c3RvbWl6ZSB0aGUgZGVmYXVsdCBnZW5lcmF0ZWQgc291cmNlcyBkaXJlY3RvcnkuIC0tPgogICAgICAgICAgICAgICAgPCEtLSA8b3V0cHV0RGlyPnRhcmdldC9nZW5lcmF0ZWQtc291cmNlczwvb3V0cHV0RGlyPiAtLT4KCiAgICAgICAgICAgICAgICA8YmFzZVBhY2thZ2U+Y29tLmV4bWFwbGUubXkuYXBpPC9iYXNlUGFja2FnZT4KICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgogICAgICAgICAgICA8ZXhlY3V0aW9ucz4KICAgICAgICAgICAgICAgIDxleGVjdXRpb24+CiAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgogICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5jb21waWxlLWNsaWVudDwvZ29hbD4KICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPgogICAgICAgICAgICAgICAgICAgIDxwaGFzZT5nZW5lcmF0ZS1zb3VyY2VzPC9waGFzZT4KICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPgogICAgICAgICAgICA8L2V4ZWN1dGlvbnM+CiAgICAgICAgPC9wbHVnaW4+CiAgICA8L3BsdWdpbnM+CjwvYnVpbGQ+CgogPGRlcGVuZGVuY3lNYW5hZ2VtZW50PgogICAgPGRlcGVuZGVuY2llcz4KICAgICAgICA8IS0tIEJFR0lOIGdlbmVyYXRlZCBjb2RlIGRlcGVuZGVuY3kgbWFuYWdlbWVudCAtLT4KICAgICAgICA8ZGVwZW5kZW5jeT4KICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmZhc3RlcnhtbC5qYWNrc29uPC9ncm91cElkPgogICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLWJvbTwvYXJ0aWZhY3RJZD4KICAgICAgICAgICAgPHZlcnNpb24+Mi4xMy4wPC92ZXJzaW9uPgogICAgICAgICAgICA8c2NvcGU+aW1wb3J0PC9zY29wZT4KICAgICAgICAgICAgPHR5cGU+cG9tPC90eXBlPgogICAgICAgIDwvZGVwZW5kZW5jeT4KICAgICAgICA8IS0tIEVORCBnZW5lcmF0ZWQgY29kZSBkZXBlbmRlbmN5IG1hbmFnZW1lbnQgLS0+CiAgICA8L2RlcGVuZGVuY2llcz4KPC9kZXBlbmRlbmN5TWFuYWdlbWVudD4KCjxkZXBlbmRlbmNpZXM+CiAgICAgPCEtLSBCRUdJTiBHZW5lcmF0ZWQgY29kZSBkZXBlbmRlbmNpZXMgLS0+CiAgICA8ZGVwZW5kZW5jeT4KICAgICAgICA8Z3JvdXBJZD5pby5naXRodWIudG9tYm95by5saWx5PC9ncm91cElkPgogICAgICAgIDxhcnRpZmFjdElkPmxpbHktaHR0cDwvYXJ0aWZhY3RJZD4KICAgICAgICA8dmVyc2lvbj4ke2xpbHlWZXJzaW9ufTwvdmVyc2lvbj4KICAgIDwvZGVwZW5kZW5jeT4KICAgIDxkZXBlbmRlbmN5PgogICAgICAgIDxncm91cElkPmNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5jb3JlPC9ncm91cElkPgogICAgICAgIDxhcnRpZmFjdElkPmphY2tzb24tZGF0YWJpbmQ8L2FydGlmYWN0SWQ+CiAgICA8L2RlcGVuZGVuY3k+CiAgICA8ZGVwZW5kZW5jeT4KICAgICAgICA8IS0tIFpvbmVkRGF0ZXRpbWUgc3VwcG9ydCAtLT4KICAgICAgICA8Z3JvdXBJZD5jb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YXR5cGU8L2dyb3VwSWQ+CiAgICAgICAgPGFydGlmYWN0SWQ+amFja3Nvbi1kYXRhdHlwZS1qc3IzMTA8L2FydGlmYWN0SWQ+CiAgICA8L2RlcGVuZGVuY3k+CiAgICA8IS0tIEVORCBHZW5lcmF0ZWQgY29kZSBkZXBlbmRlbmNpZXMgLS0+CjwvZGVwZW5kZW5jaWVzPgpgYGAKClRoZSBnZW5lcmF0ZWQgc291cmNlIGNvZGUgcmVsaWVzIG9uIGphY2tzb24gYW5kIHRoZSBsaWx5LWh0dHAgbGlicmFyeSBhdCBydW50aW1lLCB3aGljaCBpcyB3aHkgdGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBuZWNlc3NhcnkuCgpUaGVzZSBjb25maWd1cmF0aW9ucyBjYW4gYmUgc3RhbmQtYWxvbmUgb3IgZW1iZWRkZWQgaW4gYSBsYXJnZXIgcHJvamVjdC4KCj09IEdvYWxzCgouIEdlbmVyYXRlIGphdmEgc291cmNlIGNvZGUgZGlyZWN0bHkgZnJvbSBhbiBPQVMgZG9jdW1lbnQgd2l0aGluIGEgamF2YSBidWlsZCBwaXBlbGluZSAoZS5nLiBpbnRlZ3JhdGVkIHdpdGggTWF2ZW4gb3IgR3JhZGxlKS4KLiBTdXBwb3J0IE9BUyB2My4KLiBUYXJnZXQgdGhlIH5sYXRlc3QgdmVyc2lvbiBvZiBqYXZhLCB3aXRoIHNwZWNpYWwgYXR0ZW50aW9uIHBhaWQgdG8gdXBjb21pbmcgbGFuZ3VhZ2UgZmVhdHVyZXMuCi4gSGVscCBlbmQtdXNlcnMgd29yayBhcm91bmQgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgc2NoZW1hIHNwZWNpZmljYXRpb25zIHNvIHRoYXQgdGhleSBjYW4gbWFrZSBwcm9ncmVzcyB3aGlsZSBhd2FpdGluZyB1cHN0cmVhbSBmaXhlcy4KLiBFeHBvc2UgYSBoaWdoLWxldmVsIEFQSSB0byBndWlkZSB0aGUgdXNlciB0aHJvdWdoIEFQSSBpbnRlcmFjdGlvbnMuCi4gRW5zdXJlIHRoYXQgd2hlbmV2ZXIgcG9zc2libGUsIGdlbmVyYXRlZCBzb3VyY2UgY29kZSBpcyBjb21wYXRpYmxlIHdpdGggdXNlciBjb2RlIGJldHdlZW4gQVBJIHNwZWNpZmljYXRpb24gcmV2aXNpb25zLiBJbiBvdGhlciB3b3JkczogIklmIEkgdXBkYXRlIHRvIHRoZSBsYXRlc3QgQVBJIHNwZWNpZmljYXRpb24sIGFuZCB0aGVyZSBhcmUgbm90IGJyZWFraW5nIGNoYW5nZXMgdG8gdGhlIEFQSSwgdGhlbiBMaWx5J3MgZ2VuZXJhdGVkIHNvdXJjZSBjb2RlIGRvZXNuJ3QgYnJlYWsgbXkgYXBwbGljYXRpb24uIgouIFN1cHBvcnQgYWxsIE9wZW5BUEkgZmVhdHVyZXMsIGluY2x1ZGluZyB1bnVzdWFsIHRoaW5ncyBsaWtlIG1hdHJpeC1zdHlsZSByZXF1ZXN0cy4KCj09IE5vbi1Hb2FscwoKLiBEbyBub3QgKHlldCkgc3VwcG9ydCBvdGhlciBsYW5ndWFnZXMgdGhhbiBKYXZhLiBJdCdzIG5vdCBjbGVhciB0aGF0IGEgSmF2YS1vcmllbnRlZCBBU1Qgd2lsbCBjbGVhbmx5IHRyYW5zbGF0ZSB0byBhbm90aGVyIGxhbmd1YWdlIHRhcmdldC4KLiBEbyBub3Qgc3VwcG9ydCB0b28gbWFueSBvcHRpb25zLiBPcHRpb25zIGJlY29tZSBjb25mdXNpbmcgdG8gbWFpbnRhaW4gLS0gcHJlZmVyIG9waW5pb25hdGVkIGNvZGUgdGhhdCB3b3JrcyBmb3IgbW9zdCBwZW9wbGUgd2hvIGFyZSBkb2luZyBzZW5zaWJsZSB0aGluZ3MuCgo9PSBEZXNpZ24KCkxpbHkgaXMgYSBsYXllcmVkIEFQSSB3aXRoICJoaWdoLWxldmVsIiBsYXllcnMgdGhhdCBvcmNoZXN0cmF0ZSBmdWxsIHJlcXVlc3RzIHVzaW5nIGdlbmVyYXRlZCBjb2RlIGFuZCAibG93LWxldmVsIiBsYXllcnMgdGhhdCBoZWxwIHRoZSBkZXZlbG9wZXIgaW1wbGVtZW50IHJlcXVlc3RzIGZyb20gc2NyYXRjaCBpZiBuZWNlc3NhcnkuCgpIaWdoLWxldmVsIGxheWVycyBhbHdheXMgYWxsb3cgdGhlIGRldmVsb3BlciB0byBtb3ZlIGludG8gbG93ZXIgbGV2ZWxzLiBUaGlzIGFsbG93cyB0aGUgZGV2ZWxvcGVyIHRvIHVzZSB0aGUgY29udmVuaWVudCBoaWdoLWxldmVsIEFQSSBfYXMgbXVjaCBhcyBwb3NzaWJsZV8sIHRoZW4gcmVzb3J0IHRvIHRoZSBsb3dlci1sZXZlbCBBUEkgKHdoaWNoIGNvdWxkIGJlIHRoZSBqYXZhLm5ldC5odHRwIEFQSSBpdHNlbGYpIG9ubHkgYXMgbmVjZXNzYXJ5IHRvIHdvcmsgYXJvdW5kIG1pc3NpbmcgZmVhdHVyZXMgb3IgdW5kb2N1bWVudGVkIEFQSSBwYXJhbWV0ZXJzLgoKTGlseSBzaG91bGQgbWFrZSBzaW1wbGUgdGhpbmdzIGVhc3ksIGFuZCBjb21wbGV4IHRoaW5ncyBwb3NzaWJsZS4KCj09IFF1aWNrIFRvdXIKCkxpbHkgaXMgY29tcG9zZWQgb2YgZm91ciBtb2R1bGVzIGluIHRoZSBgbW9kdWxlc2AgZGlyZWN0b3J5OgoKLSBgZXhhbXBsZWAgY29tcGlsZXMgdGhlIHYzLjAgcGV0c3RvcmUgWUFNTCBhcyBhbiBleGFtcGxlLiBDaGVjayBvdXQgdGhlIGdlbmVyYXRlZC1zb3VyY2VzIGRpcmVjdG9yeSBhZnRlciBhIGJ1aWxkIHRvIHNlZSB3aGF0IExpbHkgZ2VuZXJhdGVzLCBhbmQgdGhlIHRlc3QgZGlyZWN0b3J5IHRvIHNlZSBleGFtcGxlIHVzYWdlIG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4KCi0gYGxpbHktY29tcGlsZXItbWF2ZW4tcGx1Z2luYCBpcyBhIHRlZW5zeS13ZWVuc3kgTWF2ZW4gcGx1Z2luIHRoYXQgcmVhZHMgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBwb20gYW5kIGhhbmRzIGl0IG9mZiB0byB0aGUgY29tcGlsZXIgcHJvamVjdC4gVGhpcyBpcyB3aGF0IHRoZSB1c2VyIGFkZHMgdG8gdGhlaXIgcHJvamVjdHMgdG8gY29tcGlsZSBjb2RlLgoKLSBgbGlseS1jb21waWxlcmAgaXMgcmVzcG9uc2libGUgZm9yIHJlYWRpbmcgYW4gT0FTIGRvY3VtZW50LCB0cmFuc2xhdGluZyBpdCB0byBhbiBpbnRlcm1lZGlhcnkgQVNUIChhYnN0cmFjdCBzeW50YXggdHJlZSksIHJlbmRlcmluZyB0aGUgQVNUIGFzIHNvdXJjZSBjb2RlLCBhbmQgZmluYWxseSBzYXZpbmcgc291cmNlIGNvZGUgdG8gZGlzYy4KCi0gYGxpbHktaHR0cGAgZGVmaW5lcyBjbGFzc2VzIHRvIGhlbHAgY3JlYXRlIGFuZCByZWNlaXZlIEhUVFAgcmVxdWVzdHMsIGluY2x1ZGluZyBSRkM2NTcwIGVuY29kZXJzLCBkZXNlciBpbXBsZW1lbnRhdGlvbnMsIGFuZCB0aGUgVXJpVGVtcGxhdGUuIFRoaXMgaXMgYSBkZXBlbmRlbmN5IG9mIGdlbmVyYXRlZCBzb3VyY2UgY29kZSBhbmQgbWF5IGFsc28gYmUgdXNlZCBkaXJlY3RseSBieSB1c2VycyB0byB3b3JrIGFyb3VuZCBMaWx5IG9yIE9BUyBzaG9ydGNvbWluZ3MuCg== readmeEtag: '"2df602ecf079064d3dd07fa6848724336fa31487"' readmeLastModified: Mon, 10 Mar 2025 00:36:53 GMT repositoryId: 423275796 description: Java 17 native HTTP client code generator for OpenAPI v3 created: '2021-10-31T22:37:39Z' updated: '2026-01-25T18:11:53Z' language: Java archived: false stars: 6 watchers: 3 forks: 1 owner: Tomboyo logo: https://avatars.githubusercontent.com/u/3467385?v=4 license: GPL-3.0 repoEtag: '"f1f1c0f105608bab9ad276a352699b258856e42aa4816646c8c5db3391b84a61"' repoLastModified: Sun, 25 Jan 2026 18:11:53 GMT foundInMaster: true category: Testing id: e8988f3eb5b572da48b6533f5ee9b3bf - source: openapi3 tags repository: https://github.com/huogerac/cookiecutter-flask-openapi v3: true repositoryMetadata: base64Readme: >- IyBDb29raWVjdXR0ZXIgRmxhc2sgT3BlbkFQSSBib2lsZXJwbGF0ZQoKWyFbR2l0SHViIGlzc3Vlc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvaXNzdWVzL2h1b2dlcmFjL2Nvb2tpZWN1dHRlci1mbGFzay1vcGVuYXBpP3N0eWxlPWZvci10aGUtYmFkZ2UpXShodHRwczovL2dpdGh1Yi5jb20vaHVvZ2VyYWMvY29va2llY3V0dGVyLWZsYXNrLW9wZW5hcGkvaXNzdWVzKSBbIVtHaXRIdWIgc3RhcnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL2h1b2dlcmFjL2Nvb2tpZWN1dHRlci1mbGFzay1vcGVuYXBpP3N0eWxlPWZvci10aGUtYmFkZ2UpXShodHRwczovL2dpdGh1Yi5jb20vaHVvZ2VyYWMvY29va2llY3V0dGVyLWZsYXNrLW9wZW5hcGkvc3RhcmdhemVycykgWyFbR2l0SHViIGxpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvaHVvZ2VyYWMvY29va2llY3V0dGVyLWZsYXNrLW9wZW5hcGk/c3R5bGU9Zm9yLXRoZS1iYWRnZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9odW9nZXJhYy9jb29raWVjdXR0ZXItZmxhc2stb3BlbmFwaS9ibG9iL21hc3Rlci9MSUNFTlNFKSBbIVtjb2RlIHN0eWxlOiBibGFja10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlJTIwc3R5bGUtYmxhY2stMDAwMDAwLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9naXRodWIuY29tL3BzZi9ibGFjaykKCj4g8J+SuyBBIGZ1bGwtZmVhdHVyZWQgRmxhc2sgKyBBUEkgKyBPQVMzICsgSldUICsgU3dhZ2dlclVJICsgT1JNICsgTWlncmF0aW9ucyArIEdyZWF0IGFuZCBTY2FsYWJsZSBzdHJ1Y3R1cmUgcHJvamVjdCB0ZW1wbGF0ZQoKPiDwn5GJIEl0J3MgdXNpbmcgbGF0ZXN0IEZsYXNrIDEuMgoKPiBGbGFzayAyIGlzIGNvbWluZyBzb29uIPCfmI4KCj4gSXQgdXNlcyBQb3N0Z3JlU1FMIGV2ZXJ5d2hlcmUsIHNvIERvY2tlciBpcyBuZWNlc3NhcnkgKFNRTGl0ZSB3aXRoIG5vIERvY2tlciBkZXBlbmRlbmN5IGlzIG9uIHRoZSByb2FkbWFwKSDwn5iOCgoKIyMgV2h5IHVzaW5nIHRoaXMgYm9pbGVycGxhdGUg4p2TCgotIEZvY3VzIG9uIHRoZSBidXNpbmVzcyBhbmQgY3JlYXRpbmcgdmFsdWUKLSBGYXN0ZXIgcHJvamVjdCBzZXR1cAotIFN0YW5kYXJkIHByb2plY3Qgc3RydWN0dXJlIG9yZ2FuaXphdGlvbiAoZWFzeSB0byBzY2FsZSkKLSBCZXR0ZXIgUUEKCgojIyBXaGF0J3MgSW5jbHVkZWQgKEZlYXR1cmVzKSDwn46JCgoKLSBBUEkgRGVzaWduIGZpcnN0IHVzaW5nIE9wZW5BUEkgJiBDb25uZXhpb24KLSBBUEkgZG9jdW1lbnRhdGlvbiB1c2luZyBzd2FnZ2VyIFVJCi0gTG9naW4gdXNpbmcgSldUCi0gRXZlcnkgbGF5ZXIgaXMgc2VwYXJhdGVkIGluIGNvbnRleHQvZG9tYWluCi0gU2VydmljZSBsYXllciBmb3IgYmV0dGVyIHRlc3RzIGFuZCByZXVzZQotIFVzaW5nIEZsYXNrIEZhY3RvcnkgdG8gaW50ZWdyYXRlIHdpdGggZXh0ZW5zaW9ucwotIE1pZ3JhdGlvbnMgdXNpbmcgQWxlbWJpYwotIE9STSB1c2luZyBTUUxBbGNoZW15Ci0gT3B0aW1pemVkIGRldmVsb3BtZW50IGFuZCBwcm9kdWN0aW9uIHNldHRpbmdzCi0gQ29tZXMgd2l0aCB1c2VyIG1vZGVsIHJlYWR5IHRvIGdvLCBzaWdudXAgJiBzaWduaW4KLSBQcm9jZmlsZSBmb3IgZGVwbG95aW5nIHRvIEhlcm9rdQotIEN1c3RvbWl6YWJsZSBQb3N0Z3JlU1FMIHZlcnNpb24KLSBUZXN0cyB1c2luZyBweXRlc3QKLSBVbml0IHRlc3RzIGZvciB0aGUgQVBJIGxheWVyCi0gVW5pdCB0ZXN0cyBmb3IgdGhlIHNlcnZpY2UgbGF5ZXIKCioqRGV2ZWxvcG1lbnQqKgotIENvZGUgbGludGVyCi0gQ29kZSBmb3JtYXR0ZXIgKEJsYWNrK2lTb3J0KQotIFVzaW5nIC5lbnYgZmlsZQotIERvY2tlciBzdXBwb3J0IHVzaW5nIGRvY2tlci1jb21wb3NlIGZvciBkZXZlbG9wbWVudAotIERvY2tlciB1c2luZyBtdWx0aXN0YWdlIChQcm9kdWN0aW9uIFJlYWR5IERvY2tlcmZpbGUpCi0gUG9zdGdyZXMgaW4gZGV2ZWxvcG1lbnQgKHVzaW5nIGRvY2tlci1jb21wb3NlKQotIENJIHVzaW5nIEdpdGh1YiBBY3Rpb25zCgojIyBTdHJ1Y3R1cmUKClRoaXMgcHJvamVjdCBpcyBvcmdhbml6ZWQgaW46Ci0gTGF5ZXJzIPCfp4UsIHdoaWNoIG1pZ2h0IG5vdCBjaGFuZ2UgaW4gdGhlIHByb2plY3QgbGlmZSBjeWNsZQotIE1vZHVsZXMg8J+TpiwgZm9yIGRvbWFpbiBjb250ZXh0cywgd2hpY2ggbWlnaHQgc2NhbGUgaW4gdGVybXMgb2YgbmV3IGZlYXR1cmVzCi0gQ29uZmlndXJhdGlvbiDimpnvuI8gc2VwYXJhdGVkIGJhc2VkIG9uIHRoZSBleHRlbnNpb25zCi0gVGhlIPCfjoIgQnVzaW5lc3MgbW9kdWxlcwoKYGBgCkhhY2tlcm5ld3MtQ2xvbmUKLgrilJzilIDilIAgaGFja2VybmV3cwrilIIgICDilJzilIDilIAgYXBwLnB5ICAgICAgICAgICAgICAgICAgICDwn5GJIEVudHJ5cG9pbnQgKGNyZWF0ZV9hcHApCuKUgiAgIOKUnOKUgOKUgCBleGNlcHRpb25zLnB5CuKUgiAgIOKUnOKUgOKUgCDwn6eFIGV4dCAgICAgICAgICAgICAgICAgICAg8J+RiSBTZXR0aW5ncwrilIIgICDilIIgICDilJzilIDilIAg4pqZ77iPIGNvbmZpZ3VyYXRpb24ucHkK4pSCICAg4pSCICAg4pSc4pSA4pSAIOKame+4jyBhcGkucHkK4pSCICAg4pSCICAg4pSU4pSA4pSAIOKame+4jyBkYXRhYmFzZS5weQrilIIgICDilIIgICAuLi4K4pSCICAg4pSc4pSA4pSAIPCfp4UgYXBpICAgICAgICAgICAgICAgICAgICDwn5GJIEFQSSBSb3V0ZXMK4pSCICAg4pSCICAg4pSc4pSA4pSAIPCfk6YgYXV0aC5weQrilIIgICDilIIgICDilJzilIDilIAg8J+TpiBuZXdzLnB5CuKUgiAgIOKUgiAgIOKUlOKUgOKUgCDwn5OmIG9wZW5hcGkueWFtbCAgICAgICDwn5GJIEFQSSBDb250cmFjdArilIIgICDilIIgICAuLi4K4pSCICAg4pSc4pSA4pSAIPCfp4Ugc2VydmljZXMgICAgICAgICAgICAgICDwn5GJIEJ1c2luZXNzIHJ1bGVzCuKUgiAgIOKUgiAgIOKUnOKUgOKUgCDwn5OmIGF1dGgucHkg8J+OggrilIIgICDilIIgICDilJzilIDilIAg8J+TpiBuZXdzLnB5IPCfjoIK4pSCICAg4pSCICAg4pSU4pSA4pSAIPCfk6YgdG9rZW4ucHkg8J+OggrilIIgICDilIIgICAuLi4K4pSCICAg4pSU4pSA4pSAIPCfp4UgbW9kZWxzICAgICAgICAgICAgICAgICDwn5GJIE9STQrilIIgICAgICAg4pSc4pSA4pSAIPCfk6YgbmV3cy5weQrilIIgICAgICAg4pSU4pSA4pSAIPCfk6YgdXNlcnMucHkK4pSCICAgICAgIC4uLgrilJzilIDilIAg4pqZ77iPIG1pZ3JhdGlvbnMgICAgICAgICAgICAgICAgIPCfkYkgRGF0YWJhc2UgdmVyc2lvbnMK4pSCICAg4pSc4pSA4pSAIGFsZW1iaWMuaW5pCuKUgiAgIOKUnOKUgOKUgCBlbnYucHkK4pSCICAg4pSc4pSA4pSAIHNjcmlwdC5weS5tYWtvCuKUgiAgIOKUlOKUgOKUgCB2ZXJzaW9ucwrilJzilIDilIAgdGVzdHMK4pSCICAg4pSc4pSA4pSAIGNvbmZ0ZXN0LnB5CuKUgiAgIOKUnOKUgOKUgCBhcGkgICAgICAgICAgICAgICAgICAgICAg8J+RiSBFbmRwb2ludCB0ZXN0cywgaW5wdXQsIG91dHB1dCBhbmQgdmFsaWRhdGlvbiAK4pSCICAg4pSc4pSA4pSAIGRhdGFiYXNlICAgICAgICAgICAgICAgICDwn5GJIERhdGFiYXNlIGNvbm5lY3Rpb24gdGVzdHMK4pSCICAg4pSU4pSA4pSAIHNlcnZpY2VzICAgICAgICAgICAgICAgICDwn5GJIEJ1c2luZXNzIHJ1bGVzIHRlc3RzCuKUnOKUgOKUgCByZXF1aXJlbWVudHMudHh0CuKUnOKUgOKUgCBweXRlc3QuaW5pCuKUnOKUgOKUgCB1d3NnaS5pbmkgICAgICAgICAgICAgICAgICAgIPCfkYkgQXBwbGljYXRpb24gc2VydmVyIHNldHRpbmdzICAK4pSU4pSA4pSAIHdzZ2kucHkgICAgICAgICAgICAgICAgICAgICAg8J+RiSBXU0dJIERlcGxveSBmaWxlIChHdW5pY29ybi91V1NHSSkKYGBgCgojIyBSZXF1aXJlbWVudHMKCi0gUHl0aG9uIDMuOCBvciAzLjkgKEhlbHAgdXMgdGVzdCBpbiBvdGhlciB2ZXJzaW9ucykKCi0gRG9ja2VyIHRvIHJ1biBQb3N0Z3JlcyBsb2NhbGx5CgoKIyMgQ29udHJpYnV0ZSDwn5qACgpBbnkgaGVscCBpcyBtb3JlIHRoYW4gd2VsY29tZS4uLgoKLSDwn5GJIEl0IGNvdWxkIGJlIGFuIFtJc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL2h1b2dlcmFjL2Nvb2tpZWN1dHRlci1mbGFzay1vcGVuYXBpL2lzc3VlcykKLSDwn5K7IEl0IGNvdWxkIGJlIHVzaW5nIGl0IGFuZCBnaXZlIGEgZmVlZGJhY2sKLSDwn4yfIEl0IGNvdWxkIGJlIGEgZ2l0aHViIHN0YXIKLSDwn6SUIEl0IGNvdWxkIGJlIGEgW1F1ZXN0aW9uXShodHRwczovL2dpdGh1Yi5jb20vaHVvZ2VyYWMvY29va2llY3V0dGVyLWZsYXNrLW9wZW5hcGkvZGlzY3Vzc2lvbnMvKQotIPCfpJQgSWYgeW91IGRpc2xpa2UgdGhpcyBwcm9qZWN0LCBmZWVsIGZyZWUgdG8gdGVsbCB1cyB3aGF0IGlzIHdyb25nIHdpdGggaXQKCgojIyBHZXQgU3RhcnRlZCAoVXNhZ2UpIAoKTGV0J3MgcHJldGVuZCB5b3Ugd2FudCB0byBjcmVhdGUgYSBGbGFzayBwcm9qZWN0IGNhbGxlZCAiaGFja2VybmV3c2Nsb25lIi4gUmF0aGVyIHRoYW4gc3RhcnQgZnJvbSBzY3JhdGNoIGJ5IGEgYGBhcHAucHlgYCBhbmQgYWRkIGVhY2ggbGlicmFyeSwgRmxhc2sgZXh0ZXNpb24gYW5kIHZhcmlvdXMgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBhbHdheXMgZ2V0IGZvcmdvdHRlbiB1bnRpbCB0aGUgd29yc3QgcG9zc2libGUgbW9tZW50LCBnZXQgdGhpcyBjb29raWVjdXR0ZXIgdGVtcGxhdGUgZG8gYWxsIHRoZSB3b3JrLgoKRmlyc3QsIGdldCBDb29raWVjdXR0ZXIuIFRydXN0IG1lLCBpdCdzIGF3ZXNvbWU6OgoKYGBgCiAgICAkIHBpcCBpbnN0YWxsICJjb29raWVjdXR0ZXI+PTEuNy4wIgpgYGAKCk5vdyBydW4gaXQgYWdhaW5zdCB0aGlzIHJlcG86OgoKYGBgCiAgICAkIGNvb2tpZWN1dHRlciBodHRwczovL2dpdGh1Yi5jb20vaHVvZ2VyYWMvY29va2llY3V0dGVyLWZsYXNrLW9wZW5hcGkvCmBgYAoKWW91J2xsIGJlIHByb21wdGVkIGZvciBzb21lIHZhbHVlcy4gUHJvdmlkZSB0aGVtLi4uCgpgYGAKcHJvamVjdF9uYW1lIFtIYWNrZXJuZXdzIENsb25lXTogCnByb2plY3Rfc2x1ZyBbaGFja2VybmV3c19jbG9uZV06IGhhY2tlcm5ld3MKZGVzY3JpcHRpb24gW1RoZSBVbHRpbWF0ZSBGbGFzayBUZW1wbGF0ZV06IAptYWluX21vZGVsIFtOZXdzXTogTmV3cwptYWluX21vZGVsX2xvd2VyIFtuZXdzXTogClNlbGVjdCBweXRob25fdmVyc2lvbjoKMSAtIDMuOC4xMAoyIC0gMy45LjUKQ2hvb3NlIGZyb20gMSwgMiBbMV06IDIKU2VsZWN0IHBhY2thZ2VfbWFuYWdlcjoKMSAtIHJlcXVpcmVtZW50cy50eHQKMiAtIFBpcGVudgpDaG9vc2UgZnJvbSAxLCAyIFsxXTogIApTZWxlY3QgcG9zdGdyZXNxbF92ZXJzaW9uOgoxIC0gMTMuMy1hbHBpbmUKMiAtIDEzLjUKMyAtIDE0LjEKQ2hvb3NlIGZyb20gMSwgMiwgMyBbMV06IAp1c2VfZG9ja2VyZmlsZSBbeWVzXTogCnVzZV9naXRodWJfYWN0aW9uc19DSSBbeWVzXTogCmRlcGxveV90b19oZXJva3UgW3llc106IAprZWVwX3ZzY29kZV9zZXR0aW5ncyBbeWVzXTogCmF1dGhvcl9uYW1lIFtSb2dlciBDYW1hcmdvXTogCmVtYWlsIFtyb2dlci1jYW1hcmdvQGV4YW1wbGUuY29tXTogaHVvZ2VyYWNAZ21haWwuY29tCnZlcnNpb24gWzAuMS4wXTogCiBbSU5GT106ICAgLSBVc2luZyByZXF1aXJlbWVudHMudHh0IGFuZCB2aXJ0dWFsZW52CiBbU1VDQ0VTU106IPCfkI0gWW91ciBwcm9qZWN0IGlzIGNyZWF0ZWQhIOKcqCDwn42wIOKcqAoKCldoYXQncyBuZXh0PwogICAgIGNkIGhhY2tlcm5ld3MKICAgICBDaGVjayB0aGUgUkVBRE1FX0RPQ0tFUiDwn5CzCiAgICAgQ2hlY2sgdGhlIFJFQURNRV9WSVJUVUFMRU5WIPCfkI0KIFtJTkZPXTog4pqg77iPIEZvciBtb3JlIGRldGFpbHMsIGNoZWNrIHRoZSBNYWtlZmlsZSBvciBydW46IG1ha2UgaGVscAoKYGBgCgpUaGVuIGFjY2VzcyDwn5qAIGh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9hcGkKCgojIyBBcnRpY2xlcwoKLSDwn4en8J+HtyBbRXN0cnV0dXJhIGUgb3JnYW5pemHDp8OjbyBkZSBwYXN0YXMgZW0gcHJvamV0b3MgRmxhc2tdKGh0dHBzOi8vaHVvZ2VyYWMuaGFzaG5vZGUuZGV2L2VzdHJ1dHVyYS1lLW9yZ2FuaXphY2FvLWRlLXBhc3Rhcy1lbS1wcm9qZXRvcy1mbGFzaykKCi0g8J+Hp/Cfh7cgW0FQSSBEZXNpZ24gRmlyc3RdKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL2h1b2dlcmFjL2FwaS1kZXNpZ24tZmlyc3QtcHQtYnIpCgoKIyMgQVBJIERlc2lnbiBGaXJzdCBBcHByb2FjaAoKVGhlIGJpZyBkaWZmZXJlbmNlIGluIHRoaXMgdGVtcGxhdGUgaXMgdGhlIHdheSBBUElzIGFyZSBjcmVhdGVkLCBpdCB1c2VzIHRoZSBbY29ubmV4aW9uXShodHRwczovL2dpdGh1Yi5jb20vemFsYW5kby9jb25uZXhpb24pIHRvIGJ1aWxkIHVwIHRoZSBBUEkgQ29udHJhY3QgKFlBTUwpIGZpcnN0LiBTbyB0aGUgQVBJIGRvY3VtZW50YXRpb24gaXMgY3JlYXRlZCBmcm9tIHRoZSBjb250cmFjdCBhbmQgbm90IGZyb20gCmNvZGUuCgojIyMgVW5kZXJzdGFuZGluZyB0aGUgc3RydWN0dXJlIGZyb20gdGVzdHMKCldlIGNhbiBzdGFydCBuZXcgaW1wbGVtZW50YXRpb24gZnJvbSBidWlsZGluZyB0ZXN0cyAoVEREKQoKYGBgcHl0aG9uCgojIEFQSSB0ZXN0cwoKZGVmIHRlc3Rfc2hvdWxkX3JldHVybl90aXRsZV9pc19hX3JlcXVpcmVkX2ZpZWxkKHRva2VuX3ZhbGlkX21vY2ssIGNsaWVudCk6CiAgICAjIEdpdmVuIGEgcmVxdWVzdCB3aXRoIGEgbWlzc2luZyByZXF1aXJlZCBmaWVsZAogICAgcmVzcG9uc2UgPSBjbGllbnQucG9zdCgKICAgICAgICAiL2FwaS9uZXdzIiwKICAgICAgICBoZWFkZXJzPXsiYXV0aG9yaXphdGlvbiI6IGYiQmVhcmVyIHt0b2tlbl92YWxpZF9tb2NrfSJ9LAogICAgICAgIGpzb249e30sCiAgICApCgogICAgIyBUaGVuCiAgICBhc3NlcnQgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gNDAwCiAgICBhc3NlcnQgcmVzcG9uc2UuanNvblsiZGV0YWlsIl0gPT0gIid0aXRsZScgaXMgYSByZXF1aXJlZCBwcm9wZXJ0eSIKCgpkZWYgdGVzdF9zaG91bGRfcmVqZWN0X3RpdGxlX2xlc3NfdGhhbl9taW5fdGl0bGVfbGVuZ3RoKHRva2VuX3ZhbGlkX21vY2ssIGNsaWVudCk6CiAgICAjIEdpdmVuIGEgcmVxdWVzdCB3aXRoIGFuIGludmFsaWQgdGl0bGUKICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3QoCiAgICAgICAgIi9hcGkvbmV3cyIsCiAgICAgICAgaGVhZGVycz17ImF1dGhvcml6YXRpb24iOiBmIkJlYXJlciB7dG9rZW5fdmFsaWRfbW9ja30ifSwKICAgICAgICBqc29uPXsidGl0bGUiOiAidGlueS10aXRsZSJ9LAogICAgKQoKICAgICMgVGhlbgogICAgYXNzZXJ0IHJlc3BvbnNlLnN0YXR1c19jb2RlID09IDQwMAogICAgYXNzZXJ0IHJlc3BvbnNlLmpzb25bImRldGFpbCJdID09ICIndGlueS10aXRsZScgaXMgdG9vIHNob3J0IC0gJ3RpdGxlJyIKCgpAcGF0Y2goImhhY2tlcm5ld3Muc2VydmljZXMubmV3cy5jcmVhdGVfbmV3cyIpCmRlZiB0ZXN0X3Nob3VsZF9hY2NlcHRfbnVsbF9kZXNjcmlwdGlvbihuZXdzX21vY2ssIHRva2VuX3ZhbGlkX21vY2ssIGNsaWVudCk6CgogICAgbmV3c19tb2NrLnJldHVybl92YWx1ZSA9IHt9CgogICAgIyBHaXZlbiBhIHJlcXVlc3Qgd2l0aCBhbiBlbXB0eSBkZXNjcmlwdGlvbiAobm9uIHN0cmluZykKICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3QoCiAgICAgICAgIi9hcGkvbmV3cyIsCiAgICAgICAgaGVhZGVycz17ImF1dGhvcml6YXRpb24iOiBmIkJlYXJlciB7dG9rZW5fdmFsaWRfbW9ja30ifSwKICAgICAgICBqc29uPXsKICAgICAgICAgICAgInRpdGxlIjogIkEgdmFsaWQgYW5kIHNpbXBsZSB0aXRsZSIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6IE5vbmUsCiAgICAgICAgfSwKICAgICkKCiAgICAjIFRoZW4KICAgIGFzc2VydCByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDEKICAgIG5ld3NfbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgiQSB2YWxpZCBhbmQgc2ltcGxlIHRpdGxlIiwgTm9uZSkKCmBgYAoKVGhlbiwgd2UganVtcCB1cCBkaXJlY3RseSB0byB0aGUgQVBJIENvbnRyYWN0LiBOb3RlIHRoYXQgdGhlIGNvbnRyYWN0IGhhcyBpbmZvcm1hdGlvbgp0byBkbyBpbnB1dCB2YWxpZGF0aW9ucwoKYGBgWUFNTAoKICAjIGhhY2tlcm5ld3MvYXBpL29wZW5hcGkueWFtbAogIC9hcGkvbmV3czoKICAgIHBvc3Q6CiAgICAgIG9wZXJhdGlvbklkOiBoYWNrZXJuZXdzLmFwaS5uZXdzLmNyZWF0ZV9uZXdzCiAgICAgIHN1bW1hcnk6IENyZWF0ZXMgYSBuZXdzCiAgICAgIHRhZ3M6CiAgICAgICAgLSBOZXdzCiAgICAgIHNlY3VyaXR5OgogICAgICAgIC0gand0QXV0aDogW25ld3M6Y3JlYXRlXQogICAgICByZXF1ZXN0Qm9keToKICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlCiAgICAgICAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgICAgICAgICAtIHRpdGxlCiAgICAgICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgICAgIHRpdGxlOgogICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgZXhhbXBsZTogVGhpcyBpcyBhbiBhd2Vzb21lIG5ld3MKICAgICAgICAgICAgICAgICAgbWluTGVuZ3RoOiAxMgogICAgICAgICAgICAgICAgZGVzY3JpcHRpb246CiAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICBleGFtcGxlOiBTb21lIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXdzCiAgICAgICAgICAgICAgICAgIG51bGxhYmxlOiB0cnVlCgogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAxOgogICAgICAgICAgZGVzY3JpcHRpb246IE5ld3MgY3JlYXRlZCBzdWNjZXNmdWxseQogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvTmV3cyIKICAgICAgICA0MDA6CiAgICAgICAgICBkZXNjcmlwdGlvbjogSW52YWxpZCBkYXRhCiAgICAgICAgNDAxOgogICAgICAgICAgZGVzY3JpcHRpb246IE5vIEF1dGhvcml6YXRpb24KCmNvbXBvbmVudHM6CgogIHNjaGVtYXM6CiAgICBOZXdzOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIGV4YW1wbGU6IDQyCiAgICAgICAgdGl0bGU6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGV4YW1wbGU6IFB5dGhvbiBpcyBhIGdyZWF0IG9wdGlvbiBmb3IgYmFja2VuZCBhbmQgQVBJcwogICAgICAgIGRlc2NyaXB0aW9uOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiBUaGlzIGlzIGFsb25nIHRleHQgd2l0aGluIG1vcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5ld3MKICAgICAgICAgIG51bGxhYmxlOiB0cnVlCiAgICAgICAgY3JlYXRlZF9hdDoKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZm9ybWF0OiBkYXRlLXRpbWUKICAgICAgICAgIGV4YW1wbGU6IDIwMjEtMDEtMTFUMTE6MzI6MjhaCmBgYAoKCgoKIyMgVGhhbmtzIGFuZCBJbnNwaXJhdGlvbnMKCi0gVGhpcyB0ZW1wbGF0ZSBpcyBiYXNlZCBvbiBbY29va2llY3V0dGVyLWRqYW5nb10oaHR0cHM6Ly9naXRodWIuY29tL2Nvb2tpZWN1dHRlci9jb29raWVjdXR0ZXItZGphbmdvKS4gVGhhbmtzIFtQeURhbm55XShodHRwczovL2dpdGh1Yi5jb20vcHlkYW5ueSkgYW5kIHRoZSBDb29raWVjdXR0ZXIgbWFpbnRhaW5lcnMKCi0gVGhpcyBGbGFzayBzdHJ1Y3R1cmUgaXMgYmFzZWQgb24gWyJBcnF1aXRldHVyYSBEZWZpbml0aXZhIHBhcmEgbyBQcm9qZXRvIFdlYiBDb20gUHl0aG9uIGUgRmxhc2siXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PS1xV3lTbnVvYVRNKS4gVGhhbmtzIFtCcnVubyBSb2NoYV0oaHR0cHM6Ly9naXRodWIuY29tL3JvY2hhY2JydW5vKSBhbmQgYWxsIHlvdXJzIGF3ZXNvbWUgRmxhc2sgY29udGVudHMK readmeEtag: '"69745b628de1c3737d6543a0abdb666da516811e"' readmeLastModified: Sun, 26 Dec 2021 15:36:50 GMT repositoryId: 439192571 description: >- Cookiecutter Flask OpenAPI is a template for jumpstarting production-ready Flask projects quickly. It has a well organized and scalable structure. It uses API design first created: '2021-12-17T02:56:07Z' updated: '2025-10-08T00:55:41Z' language: Python archived: false stars: 5 watchers: 1 forks: 1 owner: huogerac logo: https://avatars.githubusercontent.com/u/962233?v=4 license: BSD-3-Clause repoEtag: '"715dbfc11f7d94c4de523815c6fc90035d8924b06b020ce2440f82d44164847e"' repoLastModified: Wed, 08 Oct 2025 00:55:41 GMT foundInMaster: true category: Server Implementations id: 611541e75d358f861d14f5bb4f06070e - source: openapi3 tags repository: https://github.com/storm-platform/storm-ws-spec v3: true id: 9210ed330a23ca0f14c79b9ac96af28b repositoryMetadata: base64Readme: >- Li4KICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFNwYXRpb1RlbXBvcmFsIE9wZW4gUmVzZWFyY2ggTWFuYWdlciBXZWIgU2VydmljZSBTcGVjaWZpY2F0aW9uLgogICAgQ29weXJpZ2h0IChDKSAyMDIxIElOUEUuCgogICAgU3BhdGlvVGVtcG9yYWwgT3BlbiBSZXNlYXJjaCBNYW5hZ2VyIFdlYiBTZXJ2aWNlIFNwZWNpZmljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAogICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNSVQgTGljZW5zZTsgc2VlIExJQ0VOU0UgZmlsZSBmb3IgbW9yZSBkZXRhaWxzLgoKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KU3BhdGlvVGVtcG9yYWwgT3BlbiBSZXNlYXJjaCBNYW5hZ2VyIFdlYiBTZXJ2aWNlIC0gU3BlY2lmaWNhdGlvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgouLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcnVuLUluc29tbmlhLWJsdWV2aW9sZXQKICAgICAgICA6dGFyZ2V0OiBodHRwczovL2luc29tbmlhLnJlc3QvcnVuLz9sYWJlbD1TdG9ybSUyMFdTJTIwaW1wbGVtZW50YXRpb24lMjBleGFtcGxlJnVyaT1odHRwcyUzQSUyRiUyRnJhdy5naXRodWJ1c2VyY29udGVudC5jb20lMkZzdG9ybS1wbGF0Zm9ybSUyRnN0b3JtLXdzLXNwZWMlMkZtYXN0ZXIlMkZleGFtcGxlJTJGc3Rvcm0td3MtaW5zb21uaWEuanNvbgogICAgICAgIDphbHQ6IFJ1biBpbiBJbnNvbW5pYQoKLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWdyZWVuCiAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL3N0b3JtLXBsYXRmb3JtL3N0b3JtLXdzLXNwZWMvYmxvYi9tYXN0ZXIvTElDRU5TRQogICAgICAgIDphbHQ6IFNvZnR3YXJlIExpY2Vuc2UKCi4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWZlY3ljbGUtbWF0dXJpbmctYmx1ZS5zdmcKICAgICAgICA6dGFyZ2V0OiBodHRwczovL3d3dy50aWR5dmVyc2Uub3JnL2xpZmVjeWNsZS8jbWF0dXJpbmcKICAgICAgICA6YWx0OiBTb2Z0d2FyZSBMaWZlIEN5Y2xlCgouLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3RhZy9zdG9ybS1wbGF0Zm9ybS9zdG9ybS13cy1zcGVjLnN2ZwogICAgICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9ybS1wbGF0Zm9ybS9zdG9ybS13cy1zcGVjL3JlbGVhc2VzCiAgICAgICAgOmFsdDogUmVsZWFzZQoKLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2Rpc2NvcmQvNjg5NTQxOTA3NjIxMDg1MTk4P2xvZ289ZGlzY29yZCZsb2dvQ29sb3I9ZmZmZmZmJmNvbG9yPTczODlEOAogICAgICAgIDp0YXJnZXQ6IGh0dHBzOi8vZGlzY29yZC5jb20vY2hhbm5lbHMvNjg5NTQxOTA3NjIxMDg1MTk4IwogICAgICAgIDphbHQ6IEpvaW4gdXMgYXQgRGlzY29yZAoKLi4gaW1hZ2U6OiBodHRwczovL2Nkbi5yYXdnaXQuY29tL3N5bDIwYm5yL3NwYWNlbWFjcy80NDJkMDI1Nzc5ZGEyZjYyZmM4NmMyMDgyNzAzNjk3NzE0ZGI2NTE0L2Fzc2V0cy9zcGFjZW1hY3MtYmFkZ2Uuc3ZnCiAgICAgICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL3N5bDIwYm5yL3NwYWNlbWFjcwogICAgICAgIDphbHQ6IE1hZGUgd2l0aCBTcGFjZW1hY3MKCkFib3V0Cj09PT09CgpTcGF0aW9UZW1wb3JhbCBPcGVuIFJlc2VhcmNoIE1hbmFnZXIgV2ViIFNlcnZpY2UgYE9wZW5BUEkgMy4wIHNwZWNpZmljYXRpb24gPGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uPmBfLgoKUmVwb3NpdG9yeSBPcmdhbml6YXRpb24KPT09PT09PT09PT09PT09PT09PT09PT0KCi0gYGFwaSA8Li9hcGk+YF86IFN0b3JtIFdTIFNwZWNpZmljYXRpb24gdXNpbmcgYE9wZW5BUEkgMy4wIDxodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbj5gXzsKCi0gYGV4YW1wbGUgPC4vZXhhbXBsZT5gXzogYEluc29tbmlhIDxodHRwczovL2luc29tbmlhLnJlc3QvPmBfLWJhc2VkIGV4YW1wbGUgb2YgdXNpbmcgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIHByb3ZpZGVkIGJ5IHRoZSBgU3Rvcm0gV1MgPGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9ybS1wbGF0Zm9ybS9zdG9ybS13cz5gXyBwYWNrYWdlLgoKQnVpbGRpbmcgdGhlIERvY3VtZW50YXRpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT0KClJlcXVpcmVtZW50cwotLS0tLS0tLS0tLS0KClRoZSBidWlsZCBzeXN0ZW0gZm9yIHRoZSBSRVNUIEFQSSBkb2N1bWVudGF0aW9uIHJlbGllcyBvbiB0aGUgTm9kZS5qcyBydW4tdGltZSBlbnZpcm9ubWVudDoKCiAgLSBgTm9kZS5qcyA8aHR0cHM6Ly9ub2RlanMub3JnL2VuLz5gXyAoVmVyc2lvbiA4KykuCgogIC0gYFJlRG9jIDxodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvYz5gXzogZ2VuZXJhdGVzIEhUTUwgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24gZnJvbSBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZS4KCgpCdWlsZAotLS0tLQoKSWYgeW91IGhhdmUgTm9kZS5qcyBpbnN0YWxsZWQsIHBsZWFzZSwgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gaW5zdGFsbCB0aGUgUmVEb2MgZGVwZW5kZW5jeToKCi4uIGNvZGUtYmxvY2s6OiBzaGVsbAoKICAgICQgbnBtIGluc3RhbGwKCgpBZnRlciB0aGF0LCBnZW5lcmF0ZSB0aGUgZG9jdW1lbnRhdGlvbjoKCi4uIGNvZGUtYmxvY2s6OiBzaGVsbAoKICAgICQgbnBtIHJ1biBidWlsZAoKClRoZSBhYm92ZSBjb21tYW5kIHdpbGwgY3JlYXRlIGEgZm9sZGVyIG5hbWVkIGBgZGlzdGBgIHdpdGggdGhlIGJ1bmRsZWQgZmlsZSBpbmRleC5odG1sLiBZb3UgbWF5IG9wZW4gaXQgaW4geW91ciB3ZWIgYnJvd3NlciBvciBtYXkgc2VydmUgaXQgd2l0aCBhbiBIVFRQIFNlcnZlci4KCkZvciBQeXRob24gZGV2ZWxvcGVycywgeW91IGNhbiBzZXJ2ZSB0aGUgSFRNTCB3aXRoOgoKLi4gY29kZS1ibG9jazo6IHNoZWxsCgogICAgICAgIHB5dGhvbjMuOCAtbSBodHRwLnNlcnZlciA4MDgwIC0tZGlyZWN0b3J5IGRpc3QKCgpMaWNlbnNlCj09PT09PT0KCi4uIGFkbW9uaXRpb246OgogICAgQ29weXJpZ2h0IChDKSAyMDIxIElOUEUuCgogICAgU3BhdGlvVGVtcG9yYWwgT3BlbiBSZXNlYXJjaCBNYW5hZ2VyIFdlYiBTZXJ2aWNlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIExpY2Vuc2U7IHNlZSBMSUNFTlNFIGZpbGUgZm9yIG1vcmUgZGV0YWlscy4K readmeEtag: '"751dddacd0c0bdc199da722b7ddec11b390edf08"' readmeLastModified: Sat, 12 Nov 2022 16:23:23 GMT repositoryId: 431249435 description: SpatioTemporal Open Research Manager Web Service Specification created: '2021-11-23T20:49:59Z' updated: '2022-12-26T15:55:04Z' language: null archived: false stars: 5 watchers: 3 forks: 0 owner: storm-platform logo: https://avatars.githubusercontent.com/u/93740635?v=4 license: MIT repoEtag: '"604a81eb98495526657f2abb2a7c5b8c30a643fd6f8d236c231fcc62fdf737b2"' repoLastModified: Mon, 26 Dec 2022 15:55:04 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/yndlingsfar/serverless-openapi-integration-helper v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9ucG1qcy5jb20vcGFja2FnZS9zZXJ2ZXJsZXNzLW9wZW5hcGktaW50ZWdyYXRpb24taGVscGVyIj4KICAgIDxpbWcgc3JjPSJodHRwczovL2ZsYXQuYmFkZ2VuLm5ldC9ucG0vdi9zZXJ2ZXJsZXNzLW9wZW5hcGktaW50ZWdyYXRpb24taGVscGVyP2ljb249bnBtJmxhYmVsPW5wbUBsYXRlc3QiPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvc2VydmVybGVzcy1vcGVuYXBpLWludGVncmF0aW9uLWhlbHBlciI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9mbGF0LmJhZGdlbi5uZXQvbnBtL2R0L3NlcnZlcmxlc3Mtb3BlbmFwaS1pbnRlZ3JhdGlvbi1oZWxwZXI/aWNvbj1ucG0iPjwvYT4KICA8YSBocmVmPSJodHRwczovL3BhY2thZ2VwaG9iaWEubm93LnNoL3Jlc3VsdD9wPXNlcnZlcmxlc3Mtb3BlbmFwaS1pbnRlZ3JhdGlvbi1oZWxwZXIiPgogICAgPGltZyBzcmM9Imh0dHBzOi8vZmxhdC5iYWRnZW4ubmV0L3BhY2thZ2VwaG9iaWEvaW5zdGFsbC9zZXJ2ZXJsZXNzLW9wZW5hcGktaW50ZWdyYXRpb24taGVscGVyIj48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvc2VydmVybGVzcy1vcGVuYXBpLWludGVncmF0aW9uLWhlbHBlciI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9mbGF0LmJhZGdlbi5uZXQvbnBtL2xpY2Vuc2Uvc2VydmVybGVzcy1vcGVuYXBpLWludGVncmF0aW9uLWhlbHBlciI+PC9hPgogIDxici8+CjwvcD4KCl9GZWVkYmFjayBpcyBhcHByZWNpYXRlZCEgSWYgeW91IGhhdmUgYW4gaWRlYSBmb3IgaG93IHRoaXMgcGx1Z2luL2xpYnJhcnkgY2FuIGJlIGltcHJvdmVkIChvciBldmVuIGp1c3QgYSBjb21wbGFpbnQvY3JpdGljaXNtKSB0aGVuIHBsZWFzZSBvcGVuIGFuIGlzc3VlLl8KCiMgU2VydmVybGVzcyBQbHVnaW46IEFXUyBBcGkgR2F0ZXdheSBpbnRlZ3JhdGlvbiBoZWxwZXIKCjEuIFtPdmVydmlld10oI292ZXJ2aWV3KQoxLiBbSW5zdGFsbGF0aW9uICYgU2V0dXBdKCNpbnN0YWxsYXRpb24tLXNldHVwKQoxLiBbUGx1Z2luIGNvbmZpZ3VyYXRpb25dKCNwbHVnaW4tY29uZmlndXJhdGlvbikgIAoxLiBbVXNhZ2VdKCN1c2FnZSkKMS4gW0NvbW1hbmRdKCNjb21tYW5kcykKMS4gW0NPUlMgR2VuZXJhdG9yXSgjY29ycy1nZW5lcmF0b3IpCjEuIFtBVVRPLU1PQ0sgR2VuZXJhdG9yXSgjYXV0by1tb2NrLWdlbmVyYXRvcikKMS4gW1ZBTElEQVRJT04gR2VuZXJhdG9yXSgjdmFsaWRhdGlvbi1nZW5lcmF0b3IpCjEuIFtQUk9YWSBNYW5hZ2VyXSgjcHJveHktbWFuYWdlcikKMS4gW0NvbmZpZ3VyYXRpb24gUmVmZXJlbmNlXSgjY29uZmlndXJhdGlvbi1yZWZlcmVuY2UpCjEuIFtLbm93biBJc3N1ZXNdKCNrbm93bi1pc3N1ZXMpCiAgIDEuIFtTdGFnZSBEZXBsb3ltZW50XSgjc3RhZ2UtZGVwbG95bWVudCkKICAgMS4gW1ZhcmlhYmxlIFJlc29sdmluZ10oI3ZhcmlhYmxlLXJlc29sdmluZykKMS4gW0V4YW1wbGVdKCNleGFtcGxlKQoxLiBbQXBwcm9hY2ggdG8gYSBmdW5jdGlvbmFsIHRlc3Qgb2Ygc2NoZW1hIHZhbGlkYXRpb25dKCNhcHByb2FjaC10by1hLWZ1bmN0aW9uYWwtdGVzdC1vZi1zY2hlbWEtdmFsaWRhdGlvbikKCiMgT3ZlcnZpZXcgClRoZSBwbHVnaW4gcHJvdmlkZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gbWVyZ2UgW09wZW5BcGlTcGVjaWZpY2F0aW9uIGZpbGVzXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIChmb3JtZXJseSBrbm93biBhcyBzd2FnZ2VyKSB3aXRoIG9uZSBvciBtdWx0aXBsZSBZTUwgZmlsZXMgY29udGFpbmluZyB0aGUgdGhlIHgtYW1hem9uLWFwaWdhdGV3YXkgZXh0ZW5zaW9ucy4KVGhlcmUgYXJlIHNldmVyYWwgdXNlLWNhc2VzIHRvIGtlZXAgYm90aCBpbmZvcm1hdGlvbiBzZXBhcmF0ZWQsIGUuZy4gaXQgaXMgbmVlZGVkIHRvIGRlcGxveSBkaWZmZXJlbnQgYXBpIGdhdGV3YXkgaW50ZWdyYXRpb25zIGRlcGVuZGluZyBvbiBhIHN0YWdlIGVudmlyb25tZW50LgoKV2hlbiBkZWFsaW5nIHdpdGggZnVuY3Rpb25hbCB0ZXN0cyB5b3UgZG8gbm90IHdhbnQgdG8gdGVzdCB0aGUgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCwgYnV0IG9ubHkgYSBtb2NraW5nIHJlc3BvbnNlLgoKKipUaGUgcGx1Z2luIHN1cHBvcnRzIFlNTCBiYXNlZCBPcGVuQXBpMyBzcGVjaWZpY2F0aW9uIGZpbGVzIG9ubHkqKgoKIyMgRmVhdHVyZXMKLSBTZXJ2ZXJsZXNzIDMueCBTdXBwb3J0Ci0gZGVwbG95IHN0YWdlIGRlcGVuZGVudCB4LWFtYXpvbi1hcGlnYXRld2F5IGludGVncmF0aW9ucwotIHNlcGFyYXRlIGluZnJhc3RydWN0dXJlIChhd3MpIGZyb20gb3BlbmFwaSBzcGVjaWZpY2F0aW9uCi0gdXNlIG1vY2sgaW50ZWdyYXRpb25zIGZvciBmdW5jdGlvbmFsIHRlc3RpbmcKLSBhdXRvLWdlbmVyYXRpbmcgQ09SUyBtZXRob2RzLCBoZWFkZXJzIGFuZCBhcGkgZ2F0ZXdheSBtb2NraW5nIHJlc3BvbnNlCi0gaG9vayBpbnRvIHBhY2thZ2UgJiBkZXBsb3kgbGlmZUN5Y2xlIGFuZCBnZW5lcmF0ZSBjb21iaW5lZCBvcGVuQXBpIGZpbGVzIG9uIHRoZSBmbHkgZHVyaW5nIGRlcGxveW1lbnQKLSBhdXRvLWluamVjdCBnZW5lcmF0ZWQgb3BlbkFwaSBmaWxlIGludG8gdGhlIEJvZHkgcHJvcGVydHkgb2Ygc3BlY2lmaWVkIEFQSSBHYXRld2F5Ci0gZ2VuZXJhdGUgbW9ja2luZyByZXNwb25zZXMgd2l0aG91dCBzcGVjaWZ5aW5nIHgtYW1hem9uLWFwaWdhdGV3YXktaW50ZWdyYXRpb24gb2JqZWN0cwotIGdlbmVyYXRlIHJlcXVlc3QtdmFsaWRhdGlvbiBibG9ja3MKLSBnZW5lcmF0ZSBhbGwgcmVxdWlyZWQgeC1hbWF6b24tYXBpZ2F0ZXdheS1pbnRlZ3JhdGlvbiBvYmplY3RzIGF1dG9tYXRpY2FsbHkKLSBmdWxsIHByb3h5IGdlbmVyYXRpb24gc3VwcG9ydCB3aXRoICoqW05FV106KiogZmVhdHVyZTogW1BST1hZIE1hbmFnZXJdKCNwcm94eS1tYW5hZ2VyKQoKU2VlIHRoZSAqKmV4YW1wbGVzKiogZm9sZGVyIGZvciBhIGZ1bGwgd29ya2luZyBbZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL3luZGxpbmdzZmFyL3NlcnZlcmxlc3Mtb3BlbmFwaS1pbnRlZ3JhdGlvbi1oZWxwZXIvdHJlZS9tYWluL2V4YW1wbGVzKQoKIyBJbnN0YWxsYXRpb24gJiBTZXR1cAoKUnVuIGBucG0gaW5zdGFsbGAgaW4geW91ciBTZXJ2ZXJsZXNzIHByb2plY3QuCgpgJCBucG0gaW5zdGFsbCAtLXNhdmUtZGV2IHNlcnZlcmxlc3Mtb3BlbmFwaS1pbnRlZ3JhdGlvbi1oZWxwZXJgCgpBZGQgdGhlIHBsdWdpbiB0byB5b3VyIHNlcnZlcmxlc3MueW1sIGZpbGUKCmBgYHltbApwbHVnaW5zOgogIC0gc2VydmVybGVzcy1vcGVuYXBpLWludGVncmF0aW9uLWhlbHBlcgpgYGAKIyBQbHVnaW4gY29uZmlndXJhdGlvbgpZb3UgY2FuIGNvbmZpZ3VyZSB0aGUgcGx1Z2luIHVuZGVyIHRoZSBrZXkgKipvcGVuQXBpSW50ZWdyYXRpb24qKi4gU2VlClNlZSBbQ29uZmlndXJhdGlvbiBSZWZlcmVuY2VdKCNjb25maWd1cmF0aW9uLXJlZmVyZW5jZSkgZm9yIGEgbGlzdCBvZiBhdmFpbGFibGUgb3B0aW9ucwoKVGhlIHZhbHVlIGZvciBgb3BlbkFwaUludGVncmF0aW9uYCBtdXN0IGJlIGVpdGhlciBhIHNpbmdsZSBvYmplY3Qgb3IgYW4gYXJyYXkgb2Ygb2JqZWN0cy4KRm9yIGFuIGFycmF5IG9mIG9iamVjdHMsIHRoZSBgYXBpUmVzb3VyY2VOYW1lYCBwcm9wZXJ0eSBtdXN0IGJlIHNwZWNpZmllZCBpbiBlYWNoIG9iamVjdCB0byBkZXRlcm1pbmUKd2hpY2ggYEF3czo6QXBpR2F0ZXdheTo6UmVzdEFwaWAgcmVzb3VyY2UgdG8gaW5zZXJ0IHRoZSBtZXJnZWQgQVBJIHNwZWNpZmljYXRpb24gaW50bywKd2hpbGUgZm9yIGEgc2luZ2xlIG9iamVjdCBpdCdzIG9wdGlvbmFsIGFuZCB3aWxsIGRlZmF1bHQgdG8gdGhlIGZpcnN0IGZvdW5kCmBBd3M6OkFwaUdhdGV3YXk6OlJlc3RBcGlgIHJlc291cmNlLgoKVGhlIG1hcHBpbmcgYXJyYXkgbXVzdCBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB3aGVyZSB0aGUgZmlsZXMgY29udGFpbmluZyB0aGUgKip4LWFtYXpvbi1hcGlnYXRld2F5LWludGVncmF0aW9uKiogYmxvY2tzIGFyZSBsb2NhdGVkLgoKYGBgeW1sCm9wZW5BcGlJbnRlZ3JhdGlvbjoKICAgIHBhY2thZ2U6IHRydWUgI05ldyBmZWF0dXJlISBIb29rIGludG8gdGhlIHBhY2thZ2UgJiBkZXBsb3kgcHJvY2VzcwogICAgaW5wdXRGaWxlOiBzY2hlbWEueW1sCiAgICBtYXBwaW5nOgogICAgICAgLSBzdGFnZTogW2RldiwgcHJvZF0gI211bHRpcGxlIHN0YWdlcwogICAgICAgICBwYXRoOiBpbnRlZ3JhdGlvbnMKICAgICAgIC0gc3RhZ2U6IHRlc3QgI3NpbmdsZSBzdGFnZQogICAgICAgICBwYXRoOiBtb2NrcwpgYGAKCkluIHRoZSBhYm92ZSBleGFtcGxlIGFsbCBZTUwgZmlsZXMgaW5zaWRlIHRoZSBfaW50ZWdyYXRpb25zXyBkaXJlY3Rvcnkgd2lsbCBiZSBwcm9jZXNzZWQgYW5kIG1lcmdlZCB3aXRoIHRoZSBzY2hlbWEueW1sIGZpbGUgd2hlbiBkZXBsb3lpbmcgdGhlIGRldiBzdGFnZQpgYGBzaGVsbApzZXJ2ZXJsZXNzIGRlcGxveSAtLXN0YWdlPWRldgpgYGAKClRvIHVzZSBhIGRpZmZlcmVudCB4LWFtYXpvbi1hcGlnYXRld2F5IHRvIHBlcmZvcm0gZnVuY3Rpb25hbCB0ZXN0cyAod2l0aCBtb2NraW5nIHJlc3BvbnNlcyBlLmcpIHRoZSBkaXJlY3RvcnkgbW9jayBpcyBwcm9jZXNzZWQgYW5kIG1lcmdlZCB3aXRoIHRoZSBzY2hlbWEueW1sIGZpbGUgd2hlbiBkZXBsb3lpbmcgdGhlIHRlc3Qgc3RhZ2UKYGBgc2hlbGwKc2VydmVybGVzcyBkZXBsb3kgLS1zdGFnZT10ZXN0CmBgYAoKIyMgTXVsdGlwbGUgQVBJcwoKVG8gaGFuZGxlIG11bHRpcGxlIEFQSXMsIHN1cHBseSBhbiBhcnJheSBhcyB0aGUgdmFsdWUgb2YgYG9wZW5BcGlJbnRlZ3JhdGlvbnNgCmluc3RlYWQgb2YgYSBzaW5nbGUgb2JqZWN0LCBhbmQgc3BlY2lmeSB0aGUgdGFyZ2V0IGBBd3M6OkFwaUdhdGV3YXk6OlJlc3RBcGlgCnJlc291cmNlIGZvciBlYWNoIGl0ZW0gdXNpbmcgdGhlIGBhcGlSZXNvdXJjZU5hbWVgIHByb3BlcnR5LCBhbmQgbWFrZSBzdXJlIHRvIHNwZWNpZnkKdW5pcXVlIG91dHB1dCBmaWxlcyBieSBzZXR0aW5nIGBvdXRwdXREaXJlY3RvcnlgIGFuZC9vciBgb3V0cHV0RmlsZWAgdW5pcXVlbHk6CgpgYGB5bWwKb3BlbkFwaUludGVncmF0aW9uOgogIC0gcGFja2FnZTogdHJ1ZQogICAgaW5wdXRGaWxlOiBzY2hlbWEtMS55bWwKICAgIGFwaVJlc291cmNlTmFtZTogQXBpMQogICAgb3V0cHV0RmlsZTogYXBpLTEueW1sCiAgICBtYXBwaW5nOgogICAgICAtIHN0YWdlOiBbZGV2LCBwcm9kXQogICAgICAgIHBhdGg6IGludGVncmF0aW9ucy9hcGktMQogIC0gcGFja2FnZTogdHJ1ZQogICAgaW5wdXRGaWxlOiBzY2hlbWEtMi55bWwKICAgIGFwaVJlc291cmNlTmFtZTogQXBpMgogICAgb3V0cHV0RmlsZTogYXBpLTIueW1sCiAgICBtYXBwaW5nOgogICAgICAgLSBzdGFnZTogW2RldiwgcHJvZF0KICAgICAgICAgcGF0aDogaW50ZWdyYXRpb25zL2FwaS0yCgouLi4KCnJlc291cmNlczoKICBSZXNvdXJjZXM6CiAgICBBcGkxOgogICAgICBUeXBlOiBBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGkKICAgICAgUHJvcGVydGllczoKICAgICAgICBCb2R5OiB+ICMgYXV0by1nZW5lcmF0ZWQgYnkgcGx1Z2luIGZyb20gc2NoZW1hLTEKCiAgICAgICAgLi4uCgogICAgQXBpMjoKICAgICAgIFR5cGU6IEFXUzo6QXBpR2F0ZXdheTo6UmVzdEFwaQogICAgICAgUHJvcGVydGllczoKICAgICAgICAgIEJvZHk6IH4gIyBhdXRvLWdlbmVyYXRlZCBieSBwbHVnaW4gZnJvbSBzY2hlbWEtMgoKICAgICAgICAgIC4uLgpgYGAKCiMgVXNhZ2UKWW91IGNhbiBzZXR1cCBhIGZ1bGx5IHdvcmtpbmcgQVBJIEdBVEVXQVkgd2l0aCBhbnkgb3BlbkFwaSAzLjAgc3BlY2lmaWNhdGlvbiBmaWxlCkZpcnN0IGNyZWF0ZSB0aGUgaW5wdXQgZmlsZSBjb250YWluaW5nIHRoZSBbT3BlbkFwaVNwZWNpZmljYXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykKYGBgeW1sCiMgLi9zY2hlbWEueW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgZGVzY3JpcHRpb246IFVzZXIgUmVnaXN0cmF0aW9uCiAgdmVyc2lvbjogMS4wLjAKICB0aXRsZTogVXNlclJlZ2lzdHJhdGlvbgpwYXRoczoKICAvYXBpL3YxL3VzZXI6CiAgICBwb3N0OgogICAgICBzdW1tYXJ5OiBhZGRzIGEgdXNlcgogICAgICByZXF1ZXN0Qm9keToKICAgICAgICBjb250ZW50OgogICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9DdXN0b21lcicKICAgICAgcmVzcG9uc2VzOgogICAgICAgICcyMDEnOgogICAgICAgICAgZGVzY3JpcHRpb246IHVzZXIgY3JlYXRlZApjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBDdXN0b21lcjoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gZW1haWxfYWRkcmVzcwogICAgICAgIC0gcGFzc3dvcmQKICAgICAgcHJvcGVydGllczoKICAgICAgICBlbWFpbF9hZGRyZXNzOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiB0ZXN0QGV4YW1wbGUuY29tCiAgICAgICAgcGFzc3dvcmQ6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGZvcm1hdDogcGFzc3dvcmQKICAgICAgICAgIGV4YW1wbGU6IHNvbWVTdHJvbmdQYXNzd29yZCMKYGBgCgpUaGUgcGx1Z2luIHdpbGwgZ2VuZXJhdGUgdGhlICoqeC1hbWF6b24tYXBpZ2F0ZXdheSBpbnRlZ3JhdGlvbnMqKiBvYmplY3RzIGZvciBhbGwgbWV0aG9kcyB0aGF0IGRvIG5vdCBoYXZlIGFuIGludGVncmF0aW9uLgoKYGBgeW1sCiNnZW5lcmF0ZSBhIGZpbGUgY29udGFpbmluZyBhIGdhdGV3YXkgbW9jayBpbnRlZ3JhdGlvbiBpbiB0aGUgZGlyZWN0b3J5IC9tb2NrcwpzZXJ2ZXJsZXNzIGludGVncmF0aW9uIGNyZWF0ZSAtLW91dHB1dCBtb2NrcyAtLXR5cGUgbW9jayAtLXN0YWdlPXRlc3QKCiNnZW5lcmF0ZSBhIGZpbGUgY29udGFpbmluZyB0aGUgcHJvZHVjdGlvbiBpbnRlZ3JhdGlvbiBpbiB0aGUgZGlyZWN0b3J5IGludGVncmF0aW9ucy8Kc2VydmVybGVzcyBpbnRlZ3JhdGlvbiBjcmVhdGUgLS1vdXRwdXQgaW50ZWdyYXRpb25zIC0tdHlwZSBodHRwIC0tc3RhZ2U9cHJvZApgYGAKClN1cHBvcnRlZCB0eXBlcyBhcmUKLSBodHRwX3Byb3h5Ci0gaHR0cAotIGF3cwotIGF3c19wcm94eQotIG1vY2sKCgpUaGUgcGx1Z2luIG5vdyBnZW5lcmF0ZXMgYSBtZXJnZWQgZmlsZSBkdXJpbmcgZGVwbG95bWVudCB0aGF0IGlzIGF1dG9tYXRpY2FsbHkgaW5qZWN0ZWQgaW4geW91ciBzZXJ2ZXJsZXNzIHJlc291cmNlcwoKYGBgc2hlbGwKI0NyZWF0ZSBPcGVuQXBpIEZpbGUgY29udGFpbmluZyBtb2NraW5nIHJlc3BvbnNlcyAodXNhYmxlIGluIGZ1bmN0aW9uYWwgdGVzdHMpIGFuZCBkZXBsb3kgdG8gQXBpR2F0ZXdheQpzZXJ2ZXJsZXNzIGRlcGxveSAtLXN0YWdlPT10ZXN0CmBgYAoKYGBgc2hlbGwKI0NyZWF0ZSBPcGVuQXBpIEZpbGUgY29udGFpbmluZyB0aGUgcHJvZHVjdGlvbiBpbnRlZ3JhdGlvbiBhbmQgZGVwbG95IHRvIEFwaUdhdGV3YXkKc2VydmVybGVzcyBkZXBsb3kgLS1zdGFnZT1wcm9kCmBgYAoKVGhlIGdlbmVyYXRlZCBvdXRwdXQgaXMgYXV0b21hdGljYWxseSBpbmplY3RlZCBpbiB0aGUgKipyZXNvdXJjZXMuUmVzb3VyY2VzLllPVVJfQVBJX0dBVEVXQVkuUHJvcGVydGllcy5Cb2R5KiogcHJvcGVydHkKYGBgeW1sCnJlc291cmNlczoKICBSZXNvdXJjZXM6CiAgICBBcGlHYXRld2F5UmVzdEFwaToKICAgICAgVHlwZTogQVdTOjpBcGlHYXRld2F5OjpSZXN0QXBpCiAgICAgIFByb3BlcnRpZXM6CiAgICAgICAgQXBpS2V5U291cmNlVHlwZTogSEVBREVSCiAgICAgICAgQm9keTogfiAjYXV0b2dlbmVyYXRlZCBieSBwbHVnaW4KICAgICAgICBEZXNjcmlwdGlvbjogIlNvbWUgRGVzY3JpcHRpb24iCiAgICAgICAgRmFpbE9uV2FybmluZ3M6IGZhbHNlCiAgICAgICAgTmFtZTogJHtvcHQ6c3RhZ2UsIHNlbGY6cHJvdmlkZXIuc3RhZ2V9LXNvbWUtbmFtZQogICAgICAgIEVuZHBvaW50Q29uZmlndXJhdGlvbjoKICAgICAgICAgIFR5cGVzOgogICAgICAgICAgICAtIFJFR0lPTkFMCiAgICBBcGlHYXRld2F5RGVwbG95bWVudDoKICAgICAgVHlwZTogQVdTOjpBcGlHYXRld2F5OjpEZXBsb3ltZW50CiAgICAgIFByb3BlcnRpZXM6CiAgICAgICAgUmVzdEFwaUlkOgogICAgICAgICAgUmVmOiBBcGlHYXRld2F5UmVzdEFwaQogICAgICAgIFN0YWdlTmFtZTogJHtvcHQ6c3RhZ2UsIHNlbGY6cHJvdmlkZXIuc3RhZ2V9CmBgYAoKIyBDb21tYW5kcwoKIyMgTWFudWFsIG1lcmdlClRoZSBnZW5lcmF0ZSBjb21tYW5kIGNhbiBiZSB1c2VkIGluZGVwZW5kZW50bHkgd2l0aApgYGB5bWwKc2VydmVybGVzcyBpbnRlZ3JhdGlvbiBtZXJnZSAtLXN0YWdlPWRldgpgYGAKT2YgY291cnNlIHRoZW4gdGhlIEFQSSBHYXRld2F5IEJvZHkgcHJvcGVydHkgaGFzIHRvIGJlIHNwZWNpZmllZCBtYW51YWxseQoKYGBgeW1sCnJlc291cmNlczoKICBSZXNvdXJjZXM6CiAgICBBcGlHYXRld2F5UmVzdEFwaToKICAgICAgVHlwZTogQVdTOjpBcGlHYXRld2F5OjpSZXN0QXBpCiAgICAgIFByb3BlcnRpZXM6CiAgICAgICAgQXBpS2V5U291cmNlVHlwZTogSEVBREVSCiAgICAgICAgQm9keTogJHtmaWxlKG9wZW5hcGktaW50ZWdyYXRpb24vYXBpLnltbCl9CmBgYAoKIyBDT1JTIGdlbmVyYXRvcgoKVGhlIHBsdWdpbiBjYW4gZ2VuZXJhdGUgZnVsbCBDT1JTIHN1cHBvcnQgb3V0IG9mIHRoZSBib3guIApgYGB5bWwKb3BlbkFwaUludGVncmF0aW9uOgogIGNvcnM6IHRydWUKICAuLi4KYGBgCgpJZiBlbmFibGVkLCB0aGUgcGx1Z2luIGdlbmVyYXRlcyBhbGwgcmVxdWlyZWQgT1BUSU9OUyBtZXRob2RzIGFzIHdlbGwgYXMgdGhlIHJlcXVpcmVkIGhlYWRlciBpbmZvcm1hdGlvbnMgYW5kIGFkZHMgYSBtb2NraW5nIHJlc3BvbnNlIHRvIEFQSSBHYXRld2F5LiAKWW91IGNhbiBjdXN0b21pemUgdGhlIENPUlMgdGVtcGxhdGVzIGJ5IHBsYWNpbmcgeW91ciBvd24gZmlsZXMgaW5zaWRlIGEgZGlyZWN0b3J5ICoqb3BlbmFwaS1pbnRlZ3JhdGlvbioqIChpbiB5b3VyIHByb2plY3Qgcm9vdCkuIFRoZSBmb2xsb3dpbmcgZmlsZXMgY2FuIGJlIG92ZXJ3cml0dGVuOgoKfCBGaWxlbmFtZSAgICAgICAgfCBEZXNjcmlwdGlvbiB8CnwgLS0tLS0tLS0tLS0tLSB8Oi0tLS0tLS0tLS0tLS06fCAKfCBoZWFkZXJzLnltbCAgICB8IEFsbCBoZWFkZXJzIHJlcXVpcmVkIGZvciBDT1JTIHN1cHBvcnQgfAp8IGludGVncmF0aW9uLnltbCAgICAgIHwgQ29udGFpbnMgdGhlIHgtYW1hem9uLWFwaWdhdGV3YXktaW50ZWdyYXRpb24gYmxvY2sgIHwKfCBwYXRoLnltbHwgT3BlbkFwaSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgT1BUSU9OUyBtZXRob2QgICAgICAgfAp8IHJlc3BvbnNlLXBhcmFtZXRlcnMueW1sfCBUaGUgcmVzcG9uc2UgUGFyYW1ldGVycyBvZiB0aGUgeC1hbWF6b24tYXBpZ2F0ZXdheS1pbnRlZ3JhdGlvbiByZXNwb25zZXMgICAgICB8CgpTZWUgdGhlIFtFWEFNUExFU10oaHR0cHM6Ly9naXRodWIuY29tL3luZGxpbmdzZmFyL3NlcnZlcmxlc3Mtb3BlbmFwaS1pbnRlZ3JhdGlvbi1oZWxwZXIvdHJlZS9tYWluL2V4YW1wbGVzKSBkaXJlY3RvcnkgZm9yIGRldGFpbGVkIGluc3RydWN0aW9ucy4KCiMgQXV0byBNb2NrIEdlbmVyYXRvcgpJZiBlbmFibGVkLCB0aGUgcGx1Z2luIGdlbmVyYXRlcyBtb2NraW5nIHJlc3BvbnNlcyBmb3IgYWxsIG1ldGhvZHMgdGhhdCBkbyBub3QgaGF2ZSBhbiB4LWFtYXpvbi1hcGlnYXRld2F5LWludGVncmF0aW9uIGJsb2NrIGRlZmluZWQuCkl0IHRha2VzIHRoZSBmaXJzdCAyeHggcmVzcG9uc2UgZGVmaW5lZCBpbiB0aGUgb3BlbkFwaSBzcGVjaWZpY2F0aW9uIGFuZCBnZW5lcmF0ZXMgYSBzaW1wbGUgbW9ja2luZyByZXNwb25zZSBvbiB0aGUgZmx5CmBgYHltbApvcGVuQXBpSW50ZWdyYXRpb246CiAgYXV0b01vY2s6IHRydWUKICAuLi4KYGBgCgpXaGVuIHVzaW5nIHRoZSBhdXRvTW9jayBmZWF0dXJlLCB5b3UgZG8gbm90IG5lZWQgdG8gc3BlY2lmeSBpbnB1dFBhdGggbWFwcGluZ3MsIHNpbmNlIGFsbCBlbmRwb2ludHMgYXJlIG1vY2tlZCBhdXRvbWF0aWNhbGx5CgpgYGB5bWwKb3BlbkFwaUludGVncmF0aW9uOgogICAgcGFja2FnZTogdHJ1ZQogICAgaW5wdXRGaWxlOiBzY2hlbWEueW1sCiAgICBtYXBwaW5nOiB+CmBgYAoKIyBWQUxJREFUSU9OIGdlbmVyYXRvcgoKVGhlIHBsdWdpbiBzdXBwb3J0cyBmdWxsIHJlcXVlc3QgdmFsaWRhdGlvbiBvdXQgb2YgdGhlIGJveApgYGB5bWwKb3BlbkFwaUludGVncmF0aW9uOgogIHZhbGlkYXRpb246IHRydWUKICAuLi4KYGBgCgpJZiBlbmFibGVkLCB0aGUgcGx1Z2luIGdlbmVyYXRlcyB0aGUgeC1hbWF6b24tYXBpZ2F0ZXdheS1yZXF1ZXN0LXZhbGlkYXRvcnMgYmxvY2tzIGFuZCBhZGRzIGEgYmFzaWMgcmVxdWVzdCB2YWxpZGF0aW9uIHRvIGFsbCBtZXRob2RzLgpZb3UgY2FuIGN1c3RvbWl6ZSB0aGUgVkFMSURBVElPTiB0ZW1wbGF0ZSBieSBwbGFjaW5nIHlvdXIgb3duIGZpbGVzIGluc2lkZSBhIGRpcmVjdG9yeSAqKm9wZW5hcGktaW50ZWdyYXRpb24qKiAoaW4geW91ciBwcm9qZWN0IHJvb3QpLiBUaGUgZm9sbG93aW5nIGZpbGVzIGNhbiBiZSBvdmVyd3JpdHRlbjoKCnwgRmlsZW5hbWUgICAgICAgIHwgRGVzY3JpcHRpb24gfAp8IC0tLS0tLS0tLS0tLS0gfDotLS0tLS0tLS0tLS0tOnwgCnwgcmVxdWVzdC12YWxpZGF0b3IueW1sICAgIHwgVGhlIHgtYW1hem9uLWFwaWdhdGV3YXktcmVxdWVzdC12YWxpZGF0b3JzIGJsb2NrIHwKClNlZSB0aGUgW0VYQU1QTEVTXShodHRwczovL2dpdGh1Yi5jb20veW5kbGluZ3NmYXIvc2VydmVybGVzcy1vcGVuYXBpLWludGVncmF0aW9uLWhlbHBlci90cmVlL21haW4vZXhhbXBsZXMpIGRpcmVjdG9yeSBmb3IgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zLgoKIyBQcm94eSBNYW5hZ2VyCgpUaGUgcHJveHltYW5hZ2VyIGZlYXR1cmUgYXV0b21hdGVzIHRoZSBjb21wbGV0ZSBnZW5lcmF0aW9uIG9mIGFuIEhUVFAgcHJveHkgaW50ZWdyYXRpb24uCllvdSBvbmx5IGhhdmUgdG8gZGVmaW5lIHRoZSB0YXJnZXQgVVJMIGFuZCBhbGwgbmVjZXNzYXJ5IEFXUyBpbnRlZ3JhdGlvbiBibG9ja3MgYXJlIGdlbmVyYXRlZCBvbi10aGUtZmx5IGR1cmluZyBkZXBsb3ltZW50LgoKCmBgYHltbApvcGVuQXBpSW50ZWdyYXRpb246CiAgIGNvcnM6IHRydWUKICAgdmFsaWRhdGlvbjogdHJ1ZQogICBtYXBwaW5nOgogICAgICAtIHN0YWdlOiBbZGV2LCBwcm9kXQogICAgICAgIHByb3h5TWFuYWdlcjoKICAgICAgICAgICB0eXBlOiBodHRwX3Byb3h5CiAgICAgICAgICAgYmFzZVVybDogaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20KICAgICAgICAgICBwYXR0ZXJuOiAiKD88PWFwaVwvdjEpXC8uKyIKICAuLi4KYGBgCgoqKldpdGggdGhpcyBzZXR0aW5nLCBubyBzZXBhcmF0ZSBpbnRlZ3JhdGlvbiBmaWxlcyBuZWVkIHRvIGJlIGNyZWF0ZWQqKgoKQSBjb21iaW5hdGlvbiBvZiB5b3VyIG93biBhbmQgYXV0by1nZW5lcmF0ZWQgZmlsZXMgaXMgc3RpbGwgcG9zc2libGUgd2l0aG91dCBhbnkgcHJvYmxlbXMKCiMjIFByb3h5IE1hbmFnZXIgY29uZmlndXJhdGlvbgojIyMgdHlwZQphdCB0aGUgbW9tZW50IG9ubHkgaHR0cF9wcm94eSBzdXBwb3J0ZWQKCiMjIyBiYXNlVXJsClRoZSBiYXNlIHVybCBpcyByZXF1aXJlZCB0byBtYXAgdGhlIHBhdGggdmFyaWFibGUgZnJvbSB0aGUgb3BlbmFwaSBzcGVjaWZpY2F0aW9uIHRvIHRoZSBVUkkgZnJvbSB0aGUgYXdzIGludGVncmF0aW9uLgoKRXhhbXBsZToKCmBgYHltbAojb3JpZ2luYWwgb3BlbmFwaSBzcGVjaWZpY2F0aW9uCnBhdGhzOgogICAvYXBpL3YxL3VzZXI6CiAgICBwb3N0OgogICAgICAuLi4gCmBgYAoKd2lsbCBiZSB0cmFuc2xhdGVkIHRvCgpgYGB5bWwKI2dlbmVyYXRlZCBvcGVuYXBpIHNwZWNpZmljYXRpb24gb3V0cHV0CnBhdGhzOgogICAvYXBpL3YxL3VzZXI6CiAgICAgIHBvc3Q6CiAgICAgICAgIC4uLgogICAgICAgICB4LWFtYXpvbi1hcGlnYXRld2F5LWludGVncmF0aW9uOgogICAgICAgICAgICB0eXBlOiBodHRwX3Byb3h5CiAgICAgICAgICAgIHBhc3N0aHJvdWdoQmVoYXZpb3I6IHdoZW5fbm9fbWF0Y2gKICAgICAgICAgICAgaHR0cE1ldGhvZDogUE9TVAogICAgICAgICAgICB1cmk6IGh0dHBzOi8vd3d3LmV4YW1wbGUuY29tL2FwaS92MS91c2VyCmBgYAoKIyMjIHBhdHRlcm4KClRoZSBwYXR0ZXJuIGNhbiBiZSB1c2VkIHRvIGFkYXB0IHRoZSBtYXBwaW5nIG9mIHRoZSBiYXNlIHVybCB1c2luZyByZWdleHAsIHRvIHJlbW92ZSBhIHByZWZpeCwgb3IgYSB2ZXJzaW9uIHN0cmluZwoKRXhhbXBsZToKCmBgYHltbApiYXNlVXJsOiBodHRwczovL3d3dy5leGFtcGxlLmNvbQpwYXR0ZXJuOiAiKD88PWFwaVwvdjEpXC8uKyIKYGBgCgp3aWxsIHRyYW5zbGF0ZSB0aGUgcm91dGUgKiovYXBpL3YxL3VzZXIqKiB0byBodHRwczovL3d3dy5leGFtcGxlLmNvbS91c2VyCgojIENvbmZpZ3VyYXRpb24gUmVmZXJlbmNlCgpjb25maWd1cmUgdGhlIHBsdWdpbiB1bmRlciB0aGUga2V5ICoqb3BlbkFwaUludGVncmF0aW9uKioKCmBgYHltbApvcGVuQXBpSW50ZWdyYXRpb246CiAgaW5wdXRGaWxlOiBzY2hlbWEueW1sICNyZXF1aXJlZAogIHBhY2thZ2U6IHRydWUgI29wdGlvbmFsLCBkZWZhdWx0cyB0byBmYWxzZSAKICBpbnB1dERpcmVjdG9yeTogLi8gI29wdGlvbmFsLCBkZWZhdWx0cyB0byAuLwogIGNvcnM6IHRydWUgI29wdGlvbmFsLCBkZWZhdWx0cyB0byBmYWxzZQogIGF1dG9Nb2NrOiB0cnVlICNvcHRpb25hbCwgZGVmYXVsdHMgdG8gZmFsc2UKICB2YWxpZGF0aW9uOiB0cnVlICNvcHRpb25hbCwgZGVmYXVsdHMgdG8gZmFsc2UKICBtYXBwaW5nOiAjb3B0aW9uYWwsIGNhbiBiZSBjb21wbGV0ZWx5IGJsYW5rIGlmIGF1dG9Nb2NrIG9wdGlvbiBpcyBlbmFibGVkCiAgICAtIHN0YWdlOiBbZGV2LCBwcm9kXSAjbXVsdGlwbGUgc3RhZ2VzCiAgICAgIHBhdGg6IGludGVncmF0aW9ucwogICAgICBwcm94eU1hbmFnZXI6ICNvcHRpb25hbAogICAgICAgICB0eXBlOiBodHRwX3Byb3h5CiAgICAgICAgIGJhc2VVcmw6IGh0dHBzOi8vZXhhbXBsZS5jb20KICAgICAgICAgcGF0dGVybjogIig/PD12MSlcLy4rIgogICAgLSBzdGFnZTogdGVzdCAjc2luZ2xlIHN0YWdlCiAgICAgIHBhdGg6IG1vY2tzL2N1c3RvbWVyLnltbAogIG91dHB1dEZpbGU6IGFwaS55bWwgI29wdGlvbmFsLCBkZWZhdWx0cyB0byBhcGkueW1sCiAgb3V0cHV0RGlyZWN0b3J5OiBvcGVuYXBpLWludGVncmF0aW9uICNvcHRpb25hbCwgZGVmYXVsdHMgdG8gLi9vcGVuYXBpLWludGVncmF0aW9uCmBgYAoKIyBLbm93biBJc3N1ZXMKCiMjIFN0YWdlIGRlcGxveW1lbnQKV2hlbiB1c2luZyBzZXJ2ZXJsZXNzIGZyYW1ld29yayBvbmx5IHRvIGRlcGxveSB5b3VyIGF3cyByZXNvdXJjZXMgKip3aXRob3V0IGhhdmluZyBhbnkgbGFtYmRhIGZ1bmN0aW9ucyBvciB0cmlnZ2VycyoqLCB0aGUgQVdTIEdhdGV3YXkgZGVwbG95bWVtdCBkb2VzIG5vdCBiZWhhdmUgYXMgZXhwZWN0ZWQuCkFueSBkZXBsb3ltZW50IHRvIGFuIGV4aXN0aW5nIHN0YWdlIHdpbGwgYmUgaWdub3JlZCwgc2luY2UgQ2xvdWRGb3JtYXRpb24gZG9lcyBub3QgcmVkZXBsb3kgYSBzdGFnZSBpZiB0aGUgRGVwbG95bWVudElkZW50aWZpZXIgaGFzIG5vdCBjaGFuZ2VkLgoKVGhlIHBsdWdpbiBbc2VydmVybGVzcy1yYW5kb20tZ2F0ZXdheS1kZXBsb3ltZW50LWlkXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zZXJ2ZXJsZXNzLXJhbmRvbS1nYXRld2F5LWRlcGxveW1lbnQtaWQpIHNvbHZlcyB0aGlzIHByb2JsZW0gYnkgYWRkaW5nIGEgcmFuZG9tIGlkIHRvIHRoZSBkZXBsb3ltZW50LW5hbWUgYW5kIGFsbCByZWZlcmVuY2VzIHRvIGl0IG9uIGV2ZXJ5IGRlcGxveQoKU2VlIHRoZSAqKmV4YW1wbGVzKiogZm9sZGVyIGZvciBhIGZ1bGwgd29ya2luZyBbZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL3luZGxpbmdzZmFyL3NlcnZlcmxlc3Mtb3BlbmFwaS1pbnRlZ3JhdGlvbi1oZWxwZXIvdHJlZS9tYWluL2V4YW1wbGVzKQoKIyMgVmFyaWFibGUgUmVzb2x2aW5nClNlcnZlcmxlc3MgdmFyaWFibGVzIGluc2lkZSB0aGUgb3BlbmFwaSBpbnRlZ3JhdGlvbiBmaWxlcyBhcmUgbm90IHJlc29sdmVkIGNvcnJlY3RseSB3aGVuIHVzaW5nIHRoZSBwYWNrYWdlICYgZGVwbG95IGhvb2tzLiBUaGlzIHByb2JsZW0gY2FuIGJlIHNvbHZlZCBieSB1c2luZyB0aGUgYXBpIGdhdGV3YXkgU1RBR0UgVkFSSUFCTEVTLgoKU2VlIHRoZSAqKmV4YW1wbGVzKiogZm9sZGVyIGZvciBhIGZ1bGwgd29ya2luZyBbZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL3luZGxpbmdzZmFyL3NlcnZlcmxlc3Mtb3BlbmFwaS1pbnRlZ3JhdGlvbi1oZWxwZXIvdHJlZS9tYWluL2V4YW1wbGVzKQoKIyBFeGFtcGxlCmBgYHltbApzZXJ2aWNlOgogIG5hbWU6IHVzZXItcmVnaXN0cmF0aW9uCgpwcm92aWRlcjoKICBuYW1lOiBhd3MKICBzdGFnZTogZGV2CiAgcmVnaW9uOiBldS1jZW50cmFsLTEKCnBsdWdpbnM6CiAgLSBzZXJ2ZXJsZXNzLW9wZW5hcGktaW50ZWdyYXRpb24taGVscGVyCiAgCm9wZW5BcGlJbnRlZ3JhdGlvbjoKICBpbnB1dEZpbGU6IHNjaGVtYS55bWwKICBwYWNrYWdlOiB0cnVlCiAgbWFwcGluZzoKICAgIC0gcGF0aDogaW50ZWdyYXRpb25zCiAgICAgIHN0YWdlOiBbZGV2LCBwcm9kXQogICAgLSBwYXRoOiBtb2Nrcy9jdXN0b21lci55bWwKICAgICAgc3RhZ2U6IHRlc3QKCmZ1bmN0aW9uczoKCnJlc291cmNlczoKICBSZXNvdXJjZXM6CiAgICBBcGlHYXRld2F5UmVzdEFwaToKICAgICAgVHlwZTogQVdTOjpBcGlHYXRld2F5OjpSZXN0QXBpCiAgICAgIFByb3BlcnRpZXM6CiAgICAgICAgQXBpS2V5U291cmNlVHlwZTogSEVBREVSCiAgICAgICAgQm9keTogfgogICAgICAgIERlc2NyaXB0aW9uOiAiU29tZSBEZXNjcmlwdGlvbiIKICAgICAgICBGYWlsT25XYXJuaW5nczogZmFsc2UKICAgICAgICBOYW1lOiAke29wdDpzdGFnZSwgc2VsZjpwcm92aWRlci5zdGFnZX0tc29tZS1uYW1lCiAgICAgICAgRW5kcG9pbnRDb25maWd1cmF0aW9uOgogICAgICAgICAgVHlwZXM6CiAgICAgICAgICAgIC0gUkVHSU9OQUwKICAgIEFwaUdhdGV3YXlEZXBsb3ltZW50OgogICAgICBUeXBlOiBBV1M6OkFwaUdhdGV3YXk6OkRlcGxveW1lbnQKICAgICAgUHJvcGVydGllczoKICAgICAgICBSZXN0QXBpSWQ6CiAgICAgICAgICBSZWY6IEFwaUdhdGV3YXlSZXN0QXBpCiAgICAgICAgU3RhZ2VOYW1lOiAke29wdDpzdGFnZSwgc2VsZjpwcm92aWRlci5zdGFnZX0KYGBgCgpgYGAKc2VydmVybGVzcyBkZXBsb3kgLS1zdGFnZT10ZXN0CmBgYAoKYGBgCnNlcnZlcmxlc3MgZGVwbG95IC0tc3RhZ2U9cHJvZApgYGAKCiMgQXBwcm9hY2ggdG8gYSBmdW5jdGlvbmFsIHRlc3Qgb2Ygc2NoZW1hIHZhbGlkYXRpb24KVGhlIHBsdWdpbiB3b3JrcyB3ZWxsIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIFtzZXJ2ZXJsZXNzLXBsdWdpbi10ZXN0LWhlbHBlcl0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvc2VydmVybGVzcy1wbHVnaW4tdGVzdC1oZWxwZXIpIHRvIGF1dG9tYXRlIHRlc3RzIGFnYWluc3QgdGhlIGRlcGxveWVkIGFwaSBnYXRld2F5CgojIyBJbnN0YWxsIFRoZSBwbHVnaW4gdGVzdCBoZWxwZXIgcGFja2FnZQoKYGBgc2hlbGwKbnBtIGluc3RhbGwgLS1zYXZlLWRldiBzZXJ2ZXJsZXNzLXBsdWdpbi10ZXN0LWhlbHBlcgpgYGAKCmFkZCB0aGUgcGx1Z2luIGFzIGEgcGx1Z2luIGRlcGVuZGVuY3kgaW4geW91ciBzZXJ2ZXJsZXNzIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgY29uZmlndXJlIHRoZSBwbHVnaW4gYWNjb3JkaW5nIHRvIHRoZSBbUmVhZG1lXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zZXJ2ZXJsZXNzLXBsdWdpbi10ZXN0LWhlbHBlcikKYGBgeW1sCiMuL3NlcnZlbGVzcy55bWwKcGx1Z2luczoKICAtIHNlcnZlcmxlc3MtcGx1Z2luLXRlc3QtaGVscGVyCiAgLSBzZXJ2ZXJsZXNzLW9wZW5hcGktaW50ZWdyYXRpb24taGVscGVyCgpbLi4uXQoKcmVzb3VyY2VzOgogICBPdXRwdXRzOgogICAgICBHYXRld2F5VXJsOiAjIFRoaXMgaXMgdGhlIGtleSB0aGF0IHdpbGwgYmUgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIG91dHB1dHMgZmlsZQogICAgICAgICBEZXNjcmlwdGlvbjogVGhpcyBpcyBhIGhlbHBlciBmb3IgZnVuY3Rpb25hbCB0ZXN0cwogICAgICAgICBWYWx1ZTogIUpvaW4KICAgICAgICAgICAgLSAnJwogICAgICAgICAgICAtIC0gJ2h0dHBzOi8vJwogICAgICAgICAgICAgIC0gIVJlZiBBcGlHYXRld2F5UmVzdEFwaQogICAgICAgICAgICAgIC0gJy5leGVjdXRlLWFwaS4nCiAgICAgICAgICAgICAgLSAke29wdDpyZWdpb24sIHNlbGY6cHJvdmlkZXIucmVnaW9ufQogICAgICAgICAgICAgIC0gJy5hbWF6b25hd3MuY29tLycKICAgICAgICAgICAgICAtICR7b3B0OnN0YWdlLCBzZWxmOnByb3ZpZGVyLnN0YWdlfQoKICAgUmVzb3VyY2VzOgogICAgQXBpR2F0ZXdheVJlc3RBcGk6CiAgICAgIFR5cGU6IEFXUzo6QXBpR2F0ZXdheTo6UmVzdEFwaQogICAgICBQcm9wZXJ0aWVzOgogICAgICAgIEFwaUtleVNvdXJjZVR5cGU6IEhFQURFUgogICAgICAgIEJvZHk6IH4KICAgICAgICBEZXNjcmlwdGlvbjogVXNlciBSZWdpc3RyYXRpb24gKCR7b3B0OnN0YWdlLCBzZWxmOnByb3ZpZGVyLnN0YWdlfSkKICAgICAgICBGYWlsT25XYXJuaW5nczogZmFsc2UKICAgICAgICBOYW1lOiAke29wdDpzdGFnZSwgc2VsZjpwcm92aWRlci5zdGFnZX0tZ2F0ZXdheQogICAgICAgIEVuZHBvaW50Q29uZmlndXJhdGlvbjoKICAgICAgICAgIFR5cGVzOgogICAgICAgICAgICAtIFJFR0lPTkFMCiAgICBBcGlHYXRld2F5RGVwbG95bWVudDoKICAgICAgVHlwZTogQVdTOjpBcGlHYXRld2F5OjpEZXBsb3ltZW50CiAgICAgIFByb3BlcnRpZXM6CiAgICAgICAgUmVzdEFwaUlkOgogICAgICAgICAgUmVmOiBBcGlHYXRld2F5UmVzdEFwaQogICAgICAgIFN0YWdlTmFtZTogJHtvcHQ6c3RhZ2UsIHNlbGY6cHJvdmlkZXIuc3RhZ2V9CmBgYAoKIyMgVGVzdGluZyB0aGUgc2NoZW1hIHZhbGlkYXRpb24KQWRkIGEgZnVuY3Rpb25hbCB0ZXN0IChlLmcuIHdpdGggamVzdCkKCmBgYGphdmFzY3JpcHQKLy90ZXN0cy9yZWdpc3RyYXRpb24uanMKaW1wb3J0IHtnZXRPdXRwdXR9IGZyb20gJ3NlcnZlcmxlc3MtcGx1Z2luLXRlc3QtaGVscGVyJzsKaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJzsKCmF4aW9zLmRlZmF1bHRzLmFkYXB0ZXIgPSByZXF1aXJlKCdheGlvcy9saWIvYWRhcHRlcnMvaHR0cCcpOyAvL1RvZG8KCmNvbnN0IFVSTCA9IGdldE91dHB1dCgnR2F0ZXdheVVybCcpOwp0ZXN0KCdyZXF1ZXN0IHZhbGlkYXRpb24gb24gcmVnaXN0cmF0aW9uJywgYXN5bmMgKCkgPT4gewogICAgZXhwZWN0LmFzc2VydGlvbnMoMSk7CiAgICBjb25zdCB7c3RhdHVzfSA9IGF3YWl0IGF4aW9zLnBvc3QoVVJMICsgJy9hcGkvdjEvdXNlcicsCiAgICAgICAgewogICAgICAgICAgICAiZW1haWxfYWRkcmVzcyI6ICJ0ZXN0QGV4YW1wbGUuY29tIiwKICAgICAgICAgICAgInBhc3N3b3JkIjogInNvbWVTdHJvbmdQYXNzd29yZCMiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIGV4cGVjdChzdGF0dXMpLnRvRXF1YWwoMjAxKTsKfSk7Cgp0ZXN0KCdyZXF1ZXN0IHZhbGlkYXRpb24gb24gcmVnaXN0cmF0aW9uIChpbnZhbGlkIHJlcXVlc3QpJywgYXN5bmMgKCkgPT4gewogICAgZXhwZWN0LmFzc2VydGlvbnMoMSk7CiAgICB0cnkgewogICAgICAgIGF3YWl0IGF4aW9zLnBvc3QoVVJMICsgJy9hcGkvdjEvdXNlcicsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ0ZXN0QGV4YW1wbGUuY29tIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgZXhwZWN0KGUucmVzcG9uc2UpLnRvTWF0Y2hPYmplY3QoewogICAgICAgICAgICBzdGF0dXNUZXh0OiAnQmFkIFJlcXVlc3QnLAogICAgICAgICAgICBzdGF0dXM6IDQwMAogICAgICAgIH0pOwogICAgfQp9KTsKYGBgClRoZW4gcGVyZm9ybSB0aGUgZnVuY3Rpb25hbCB0ZXN0CmBgYHNoZWxsCnNlcnZlcmxlc3MgZGVwbG95IC0tc3RhZ2U9dGVzdApucG0gdGVzdApzZXJ2ZXJsZXNzIHJlbW92ZSAtLXN0YWdlPXRlc3QKYGBgCgpUaGUgY29tbWFuZCB3aWxsCi0gbWVyZ2UgdGhlIG9wZW5hcGkgc3BlY2lmaWNhdGlvbiBmaWxlIHdpdGggdGhlIE1PQ0sgaW50ZWdyYXRpb24gY29uZmlndXJlZCBiZWZvcmUKLSBkZXBsb3kgdG8gQVBJIEdhdGV3YXkgaW4gYW4gaXNvbGF0ZWQgVEVTVCBpbmZyYXN0cnVjdHVyZSBlbnZpcm9ubWVudCAoeW91ciBvdGhlciBlbnZpcm9ubWVudHMgd2lsbCBub3QgYmUgYWZmZWN0ZWQgc2luY2Ugd2UgYXJlIGRlcGxveWluZyB0byBhIHNlcGFyYXRlZCBnYXRld2F5KQotIHBlcmZvcm0gdGhlIHRlc3QgYW5kIHZlcmlmeSB0aGF0IHNjaGVtYSB2YWxpZGF0aW9uIGlzIGNvcnJlY3QKLSByZW1vdmUgYWxsIFRFU1QgcmVzb3VyY2VzIGlmIHRlc3Qgc3VjY2VlZGVkCgpTZWUgdGhlICoqZXhhbXBsZXMqKiBmb2xkZXIgZm9yIGEgZnVsbCB3b3JraW5nIFtleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20veW5kbGluZ3NmYXIvc2VydmVybGVzcy1vcGVuYXBpLWludGVncmF0aW9uLWhlbHBlci90cmVlL21haW4vZXhhbXBsZXMpCg== readmeEtag: '"27c3a79bf8c3dde4733c71aebb44de2891ea8e7c"' readmeLastModified: Sat, 15 Apr 2023 06:50:31 GMT repositoryId: 354271536 description: >- The plugin separates x-amazon-apigateway extension syntax from your openapi3 files created: '2021-04-03T11:15:21Z' updated: '2024-11-30T21:04:41Z' language: JavaScript archived: false stars: 5 watchers: 1 forks: 5 owner: yndlingsfar logo: https://avatars.githubusercontent.com/u/8264387?v=4 license: MIT repoEtag: '"203cdac84bedf3917202bec3459d647e6de2db8b66e112745915af4f7ae4f5d5"' repoLastModified: Sat, 30 Nov 2024 21:04:41 GMT foundInMaster: true category: Testing id: 3fde089ee2ce97b7e54b375ff3c66db4 - source: openapi3 tags repository: https://github.com/0xtheprodev/spring-clean-example v3: true id: eb10ef37c7a934b2e312427da9c2dbe4 repositoryMetadata: base64Readme: >- IyBzcHJpbmctY2xlYW4tZXhhbXBsZQoKWyFbSmF2YV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9qYXZhLSUyM0VEOEIwMC5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPWphdmEmbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly93d3cuamF2YS5jb20vKQpbIVtTcHJpbmddKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvc3ByaW5nLSUyMzZEQjMzRi5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPXNwcmluZyZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL3NwcmluZy5pby8pClshW0FwYWNoZSBUb21jYXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvYXBhY2hlJTIwdG9tY2F0LSUyM0Y4REM3NS5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPWFwYWNoZS10b21jYXQmbG9nb0NvbG9yPWJsYWNrKV0oaHR0cHM6Ly90b21jYXQuYXBhY2hlLm9yZy8pClshW09wZW5BUEldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvb3BlbmFwaS02QkE1Mzk/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPW9wZW5hcGktaW5pdGlhdGl2ZSZsb2dvQ29sb3I9ZmZmKV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykKWyFbR3JhcGhRTF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS8tR3JhcGhRTC1FMTAwOTg/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPWdyYXBocWwmbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly9ncmFwaHFsLm9yZy8pClshW09wZW4gSXNzdWVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMtcmF3LzB4VGhlUHJvRGV2L3NwcmluZy1jbGVhbi1leGFtcGxlP3N0eWxlPWZvci10aGUtYmFkZ2UpXShodHRwczovL2dpdGh1Yi5jb20vMHhUaGVQcm9EZXYvc3ByaW5nLWNsZWFuLWV4YW1wbGUvaXNzdWVzKQpbIVtDbG9zZWQgSXNzdWVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMtY2xvc2VkLXJhdy8weFRoZVByb0Rldi9zcHJpbmctY2xlYW4tZXhhbXBsZT9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9naXRodWIuY29tLzB4VGhlUHJvRGV2L3NwcmluZy1jbGVhbi1leGFtcGxlL2lzc3Vlcz9xPWlzJTNBaXNzdWUraXMlM0FjbG9zZWQpClshW09wZW4gUHVsbHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy1wci1yYXcvMHhUaGVQcm9EZXYvc3ByaW5nLWNsZWFuLWV4YW1wbGU/c3R5bGU9Zm9yLXRoZS1iYWRnZSldKGh0dHBzOi8vZ2l0aHViLmNvbS8weFRoZVByb0Rldi9zcHJpbmctY2xlYW4tZXhhbXBsZS9wdWxscykKWyFbQ2xvc2VkIFB1bGxzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMtcHItY2xvc2VkLXJhdy8weFRoZVByb0Rldi9zcHJpbmctY2xlYW4tZXhhbXBsZT9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9naXRodWIuY29tLzB4VGhlUHJvRGV2L3NwcmluZy1jbGVhbi1leGFtcGxlL3B1bGxzP3E9aXMlM0FwcitpcyUzQWNsb3NlZCkKWyFbQ29udHJpYnV0b3JzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9jb250cmlidXRvcnMvMHhUaGVQcm9EZXYvc3ByaW5nLWNsZWFuLWV4YW1wbGU/c3R5bGU9Zm9yLXRoZS1iYWRnZSldKGh0dHBzOi8vZ2l0aHViLmNvbS8weFRoZVByb0Rldi9zcHJpbmctY2xlYW4tZXhhbXBsZS9ncmFwaHMvY29udHJpYnV0b3JzKQpbIVtBY3Rpdml0eV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGFzdC1jb21taXQvMHhUaGVQcm9EZXYvc3ByaW5nLWNsZWFuLWV4YW1wbGU/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsYWJlbD1tb3N0JTIwcmVjZW50JTIwYWN0aXZpdHkpXShodHRwczovL2dpdGh1Yi5jb20vMHhUaGVQcm9EZXYvc3ByaW5nLWNsZWFuLWV4YW1wbGUvcHVsc2UpCgojIyBEZXNjcmlwdGlvbgoKX0V4YW1wbGUgQXBwbGljYXRpb24gSW50ZXJmYWNlIHVzaW5nIFNwcmluZyBmcmFtZXdvcmsgaW4gSmF2YV8KClRoaXMgZXhhbXBsZSBzaG93Y2FzZXMgUmVwb3NpdG9yeSBQYXR0ZXJuIGluIEhleGFnb25hbCBBcmNoaXRlY3R1cmUgXyhhbHNvIGtub3duIGFzIENsZWFuIEFyY2hpdGVjdHVyZSlfLiBIZXJlIHdlIGhhdmUgdHdvIEVudGl0aWVzIC0gQm9va3MgYW5kIEF1dGhvcnMsIHdob3NlIHJlbGF0aW9uc2hpcHMgaGF2ZSBiZWVuIGV4cGxvaXRlZCB0byBjcmVhdGUgQ1JVRCBlbmRwb2ludCBpbiBSRVNUIHVuZGVyIE9wZW5BUEkgc3RhbmRhcmQuCgojIyBJbnN0YWxsYXRpb24KCi0gUnVuIHRoZSBhcHBsaWNhdGlvbiB1c2luZyBbTWF2ZW5dKGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZy8pOgoKICBgYGBzaAogICQgLi9tdm53IHNwcmluZy1ib290OnJ1bgogIGBgYAoKLSBGb3IgV2luZG93cyB1c2VyczoKCiAgYGBgcG93ZXJzaGVsbAogICQgbXZudyBzcHJpbmctYm9vdDpydW4KICBgYGAKCiMjIFRlc3RpbmcKCi0gUnVuIHRlc3Qgc3VpdGUgYWxvbmcgd2l0aCBDb3ZlcmFnZSByZXBvcnRpbmc6CgogIGBgYHNoCiAgJCAuL212bncgamFjb2NvOnByZXBhcmUtYWdlbnQgdGVzdCBpbnN0YWxsIGphY29jbzpyZXBvcnQKICBgYGAKCiAgb3IgZm9yIFdpbmRvd3MKCiAgYGBgcG93ZXJzaGVsbAogICQgbXZudyBqYWNvY286cHJlcGFyZS1hZ2VudCB0ZXN0IGluc3RhbGwgamFjb2NvOnJlcG9ydAogIGBgYAoKIyMgU3dhZ2dlciBVSQoKLSBPcGVuIFN3YWdnZXIgVUkgYXQgYGxvY2FsaG9zdDo4MDgwL3N3YWdnZXItdWlgIGFmdGVyIHJ1bm5pbmcgdGhlIGFwcGxpY2F0aW9uLgoKIyMgTGljZW5zZQoKJmNvcHk7IE1JVCBMaWNlbnNlCg== readmeEtag: '"be85193f84db044d8ace0e35e81f1cb84b558a6c"' readmeLastModified: Tue, 13 Dec 2022 10:58:53 GMT repositoryId: 510053852 description: Clean Architecture Example with Spring Framework (Java) created: '2022-07-03T14:57:09Z' updated: '2025-01-14T02:26:55Z' language: Java archived: false stars: 5 watchers: 0 forks: 0 owner: 0xTheProDev logo: https://avatars.githubusercontent.com/u/14367736?v=4 license: MIT repoEtag: '"18ce7a9d0e32407a1bf33d87db599297b5f68315831db91d70d8ac9fccedb57b"' repoLastModified: Tue, 14 Jan 2025 02:26:55 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/progyan1997/spring-clean-example - source: openapi3 tags repository: https://github.com/martingrambow/openisbt v3: true repositoryMetadata: base64Readme: >- IyBvcGVuSVNCVAoKT3BlbklTQlQgaXMgYW4gSW50ZWxsaWdlbnQgU2VydmljZSBCZW5jaG1hcmsgVG9vbCB0byBiZW5jaG1hcmsgbWljcm9zZXJ2aWNlLWJhc2VkIGFwcGxpY2F0aW9ucyBiYXNlZCBvbiB0aGVpciBPcGVuQVBJMy4wIGludGVyZmFjZSBkZXNjcmlwdGlvbiBmaWxlcy4gIApbQmVuY2htYXJraW5nIE1pY3Jvc2VydmljZSBQZXJmb3JtYW5jZTogQSBQYXR0ZXJuLWJhc2VkIEFwcHJvYWNoXShodHRwczovL2RiZXJtYmFjaC5naXRodWIuaW8vcHVibGljYXRpb25zLzIwMjAtc2FjLWRhZHMtbWljcm9zZXJ2aWNlcy5wZGYpIAoKSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlIGluIGEgcHVibGljYXRpb24sIHBsZWFzZSBjaXRlIGl0IGFzOgoKIyMjIFRleHQKTWFydGluIEdyYW1ib3csIEx1a2FzIE1ldXNlbCwgRXJpayBXaXR0ZXJuLCBEYXZpZCBCZXJtYmFjaC4gKipCZW5jaG1hcmtpbmcgTWljcm9zZXJ2aWNlIFBlcmZvcm1hbmNlOiBBIFBhdHRlcm4tYmFzZWQgQXBwcm9hY2gqKi4gSW46IFByb2NlZWRpbmdzIG9mIHRoZSAzNXRoIEFDTSBTeW1wb3NpdW0gb24gQXBwbGllZCBDb21wdXRpbmcgKFNBQyAyMDIwKS4gQUNNIDIwMjAuCgojIyMgQmliVGVYCmBgYFRlWApAaW5wcm9jZWVkaW5nc3twYXBlcl9ncmFtYm93X2JlbmNobWFya2luZ19taWNyb3NlcnZpY2VzLAoJdGl0bGUgPSB7e0JlbmNobWFya2luZyBNaWNyb3NlcnZpY2UgUGVyZm9ybWFuY2U6IEEgUGF0dGVybi1iYXNlZCBBcHByb2FjaH19LAoJYm9va3RpdGxlID0ge1Byb2NlZWRpbmdzIG9mIHRoZSAzNXRoIEFDTSBTeW1wb3NpdW0gb24gQXBwbGllZCBDb21wdXRpbmcgKFNBQyAyMDIwKX0sCglwdWJsaXNoZXIgPSB7QUNNfSwKCWF1dGhvciA9IHtNYXJ0aW4gR3JhbWJvdyBhbmQgTHVrYXMgTWV1c2VsIGFuZCBFcmlrIFdpdHRlcm4gYW5kIERhdmlkIEJlcm1iYWNofSwKCXllYXIgPSB7MjAyMH0KfQpgYGAKCkEgZnVsbCBsaXN0IG9mIG91ciBbcHVibGljYXRpb25zXShodHRwczovL3d3dy5tY2MudHUtYmVybGluLmRlL21lbnVlL2ZvcnNjaHVuZy9wdWJsaWthdGlvbmVuL3BhcmFtZXRlci9lbi8pIGFuZCBbcHJvdG90eXBlc10oaHR0cHM6Ly93d3cubWNjLnR1LWJlcmxpbi5kZS9tZW51ZS9mb3JzY2h1bmcvcHJvdG90eXBlcy9wYXJhbWV0ZXIvZW4vKSBpcyBhdmFpbGFibGUgb24gb3VyIGdyb3VwIHdlYnNpdGUuCgojIyBSZWxlYXNlcwoqIHZlcnNpb24gMC4xIChkMWI2YzRmKSB3YXMgdXNlZCBpbiBwdWJsaWNhdGlvbiAiQmVuY2htYXJraW5nIE1pY3Jvc2VydmljZSBQZXJmb3JtYW5jZTogQSBQYXR0ZXJuLWJhc2VkIEFwcHJvYWNoIgoqIHZlcnNpb24gMC4yIChmZDllNTA2KSBpbnRyb2R1Y2VzIGEgYmF0Y2ggYmVuY2htYXJrIHZpYSB0ZXJtaW5hbAoqIHZlcnNpb24gMC4zIChhMTA3MzdiKSBhcHBsaWNhdGlvbi13aWRlIGJlbmNobWFya2luZyB1c2luZyBtYW51YWwgc2VydmljZSBsaW5rcwoqIHZlcnNpb24gMC40ICh0YmQpIENsZWFuIHVwIGRlcHJlY2F0ZWQgY29tcG9uZW50cywgYmV0dGVyIGRvY3VtZW50YXRpb24KCiMjIExpY2Vuc2UKClRoZSBjb2RlIGluIHRoaXMgcmVwb3NpdG9yeSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIFtNSVRdKC4vTElDRU5TRSkgbGljZW5zZS4KCiMgVXNhZ2UKKiBbQmVuY2htYXJrXShvcGVuSVNCVEJhdGNoLm1kKQoKIyMgRnV0aGVyIEluZm9ybWF0aW9uIChmb3IgZGV2ZWxvcGVycykKKiBbQWJzdHJhY3Qgb3BlcmF0aW9ucyBhbmQgbWF0Y2hpbmcgdW5pdHNdKGFic3RyYWN0T3BlcmF0aW9ucy5tZCkKKiBbTGlua2luZyh1bml0cyldKGxpbmtpbmdVbml0cy5tZCkK readmeEtag: '"aa8703ff965e7666323692f1aba40f16937070ec"' readmeLastModified: Thu, 03 Sep 2020 21:50:12 GMT repositoryId: 196092022 description: >- OpenISBT is an Intelligent Service Benchmark Tool to benchmark microservice-based applications based on their OpenAPI3.0 interface description files. created: '2019-07-09T22:25:59Z' updated: '2024-09-26T18:26:19Z' language: Kotlin archived: false stars: 5 watchers: 1 forks: 1 owner: martingrambow logo: https://avatars.githubusercontent.com/u/18425060?v=4 license: MIT repoEtag: '"284ca0523591269dfe9ad6abd5928a6c2866d846bbbb2732b006c22042843bf4"' repoLastModified: Thu, 26 Sep 2024 18:26:19 GMT foundInMaster: true category: Server id: 75a45f8b179099c1bdb9fd6966eb5657 - source: openapi3 tags repository: https://github.com/webpro/parse-openapi v3: true repositoryMetadata: base64Readme: >- IyBwYXJzZS1vcGVuYXBpCgpUaGUgT3BlbkFQaSB2MyBwYXJzZXIgZXh0cmFjdGVkIGZyb20KW29wZW5hcGktdHlwZXNjcmlwdC1jb2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vZmVyZGlrb29tZW4vb3BlbmFwaS10eXBlc2NyaXB0LWNvZGVnZW4pLgpTbyBmaXJzdCBvZiBhbGwsIGFsbCBjcmVkaXRzIGdvIHRvCltGZXJkaSBLb29tZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJkaWtvb21lbikgZm9yIGhpcyB3b3JrIG9uIHRoaXMgZ3JlYXQKbGlicmFyeS4gT25seSB0aGUgcGFyc2VyIGlzIG5lZWRlZCB0byByZW5kZXIgdGhlIG1vZGVscywgc2VydmljZXMgYW5kIGhvb2tzIHdpdGgKY3VzdG9tIHRlbXBsYXRlcywgaGVuY2UgdGhpcyBzdHJpcHBlZCBkb3duIHZlcnNpb24uCgojIyBJbnN0YWxsYXRpb24KCiAgICBucG0gaW5zdGFsbCAtRCBwYXJzZS1vcGVuYXBpIG9wZW5hcGktdHlwZXMKCiMjIEFQSQoKYGBgdHlwZXNjcmlwdAppbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnZnMvcHJvbWlzZXMnOwppbXBvcnQgeyBwYXJzZSB9IGZyb20gJ3BhcnNlLW9wZW5hcGknOwppbXBvcnQgeyByZW5kZXJNb2RlbCwgcmVuZGVyU2VydmljZSB9IGZyb20gJy4vdGVtcGxhdGVzJzsKaW1wb3J0IHR5cGUgeyBPcGVuQVBJVjMgfSBmcm9tICdvcGVuYXBpLXR5cGVzJzsKCmNvbnN0IHNwZWNzOiBPcGVuQVBJVjMgPSBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKCdzd2FnZ2VyLmpzb24nLCAndXRmOCcpKTsKCmNvbnN0IHsgdmVyc2lvbiwgc2VydmVyLCBtb2RlbHMsIHNlcnZpY2VzIH0gPSBwYXJzZShzcGVjcyk7Cgptb2RlbHMuZm9yRWFjaChtb2RlbCA9PiB3cml0ZUZpbGUoYCR7bW9kZWwubmFtZX0udHNgLCByZW5kZXJNb2RlbChtb2RlbCkpKTsKc2VydmljZXMuZm9yRWFjaChzZXJ2aWNlID0+CiAgd3JpdGVGaWxlKGAke3NlcnZpY2UubmFtZX0udHNgLCByZW5kZXJTZXJ2aWNlKHNlcnZpY2UpKQopOwpgYGAKCiMjIEV4YW1wbGUgcmVuZGVyIGZ1bmN0aW9uCgpUaGlzIGNvdWxkIGJlIGFueXRoaW5nIGZyb20gSGFuZGxlYmFycyB0ZW1wbGF0ZXMgdG8gdGVtcGxhdGUgbGl0ZXJhbHMuIEhlcmUncyBhCm1pbmltYWwgZXhhbXBsZToKCmBgYHR5cGVzY3JpcHQKaW1wb3J0IHR5cGUgeyBPcGVyYXRpb24sIFNlcnZpY2UgfSBmcm9tICdwYXJzZS1vcGVuYXBpJzsKCmNvbnN0IHJlbmRlck9wZXJhdGlvbiA9IChvcGVyYXRpb246IE9wZXJhdGlvbik6IHN0cmluZyA9PiB7CiAgY29uc3QgW3Jlc3VsdF0gPSBvcGVyYXRpb24ucmVzdWx0czsKICByZXR1cm4gYAovKioKICogJHtvcGVyYXRpb24uc3VtbWFyeX0KICogJHtvcGVyYXRpb24uZGVzY3JpcHRpb259CiAqIEByZXR1cm5zICR7cmVzdWx0LnR5cGV9ICR7cmVzdWx0LmRlc2NyaXB0aW9ufQogJHtvcGVyYXRpb24uZGVwcmVjYXRlZCA/ICcqIEBkZXByZWNhdGVkJyA6ICcnfQogKi8KZXhwb3J0IGZ1bmN0aW9uICR7b3BlcmF0aW9uLm5hbWV9KFsuLi5dKTogUHJvbWlzZTwke3Jlc3VsdC50eXBlfT4gewogIHJldHVybiByZXF1ZXN0KHsKICAgIG1ldGhvZDogJyR7b3BlcmF0aW9uLm1ldGhvZH0nLAogICAgcGF0aDogXGAke29wZXJhdGlvbi5wYXRofVxgLAogICAgWy4uLl0KICB9KTsKfWA7Cn07CgpleHBvcnQgZGVmYXVsdCAoc2VydmljZTogU2VydmljZSkgPT4gewogIHJldHVybiBzZXJ2aWNlcy5vcGVyYXRpb25zLm1hcChyZW5kZXJPcGVyYXRpb24pLmpvaW4oJzsnKTsKfTsKYGBgCg== readmeEtag: '"02d1173e98535a6d16dc4936a6b82ded608a834e"' readmeLastModified: Thu, 31 Mar 2022 17:31:04 GMT repositoryId: 476396257 description: OpenAPI v3 parser created: '2022-03-31T16:48:53Z' updated: '2023-02-11T12:24:23Z' language: TypeScript archived: false stars: 5 watchers: 1 forks: 0 owner: webpro logo: https://avatars.githubusercontent.com/u/456426?v=4 license: MIT repoEtag: '"560a4f9b301cba8dda499ed7fc42877abf02d1017913ca36ae80f726565b4c64"' repoLastModified: Sat, 11 Feb 2023 12:24:23 GMT foundInMaster: true category: Parsers id: d21709b143857d908bd5a8d8fb73c5be - source: openapi3 tags repository: https://github.com/tuxivinc/mock-api v3: true repositoryMetadata: base64Readme: >- IyBNb2NrLWFwaSAKQXBpIGZvciBNb2NrLCBwZXJmb3JtYW5jZXMgdGVzdGluZywgcmVzaWxpZW5jZSBhbmQgc2hvdyBmdW5jdGlvbmFsaXRpZXMgaW4gZGVtbyAoZG9ja2VyIGZvciBleGFtcGxlLCB3aXRoIGhlYWx0aGNoZWNrKQoKIyMgSW5mb3JtYXRpb24KKiBzb3VyY2VzIDogaHR0cHM6Ly9naXRodWIuY29tL1R1eGl2aW5jL21vY2stYXBpCgojIyBGdW5jdGlvbnMKKiBNb2NrIEpzb24gcmVzcG9uc2UgKHNldCBieSBQT1NUIG9yIG1vdW50IHZvbHVtZSkKKiBNb2NrIHJlc3BvbnNlIHNpemUgKGRvd25sb2FkIGZpbGUpIAoqIE1vY2sgcmVzcG9uc2UgSFRUUCBTdGF0dXMKKiBHZXQgSG9zdG5hbWUKKiBHZXQgSlZNIGFyZ3MKKiBHZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzCiogR2V0IHJlcXVlc3QgaW5mb3JtYXRpb24KICAqIGJvZHksIGhlYWRlcnMgYW5kIFVSTAoqIFNpbXVsYXRpb24gaGVhbHRoY2hlY2sKICAqIGdldCBodHRwIGNvZGUKICAqIHNldCBodHRwIGNvZGUgcmV0dXJuCiogU2xlZXAgcmVzcG9uc2UgdGltZQogICogU3RvcmFnZSBpbiBtZW1vcnkgb3IgcGFzcyBpbiByZXF1ZXN0IHBhdGgKKiBTaHV0ZG93biBhcHBsaWNhdGlvbiB3aXRoIGVycm9yIGNvZGUKKiBMYXRlbmN5IG9uIHN0YXJ0dXAKKiBEZW1vIHNlc3Npb24gc2hhcmluZyAoZm9yIGxvYWQgYmFsYW5jaW5nIGV4YW1wbGUpCiAgKiBTdG9yZSBzZXNzaW9uIGxvY2FsCiAgKiBNdWx0aWNhc3Qgc2Vzc2lvbgoKIyMgRm9yIHRlc3RpbmcKMS8gRGVwbG95IGNvbnRhaW5lciA6IGRvY2tlciBydW4gLWQgLXAgODA1MDo4MDUwIC0tbmFtZSBtb2NrLWFwaSB0dXhpdmluYy9tb2NrLWFwaQoKMi8gQ2FsbCBzd2FnZ2VyIGZvciBBUEkgaW5mb3MgOiBodHRwOi8vbG9jYWxob3N0OjgwNTAvbW9jay1hcGkvc3dhZ2dlci11aS5odG1sCgojIyBNb3JlIGluZm9ybWF0aW9uCiMjIyBGdW5jdGlvbnMgbGlzdAojIyMjIExhdGVuY3kgb2Ygc3RhcnR1cAp8IHwgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0gfAp8ICoqV2hhdCoqIHwgYWRkIHRpbWUgYmVmb3JlIHNlcnZpY2Ugc3RhcnRpbmcgVXAgfAp8ICoqSG93KiogfCBhZGQgYC1lIFNUQVJUSU5HX0xBVEVOQ1lfTVM9W1hYWFhdYCBvbiBjb21tYW5kIGxpbmUgZG9ja2VyIHJ1biAoWFhYWCBpcyBhIHRpbWUgaW4gbXMpIHwgCnwgKipVc2FnZSoqIHwgR2F0bGluZyByZXNpbGllbmNlIHRlc3RpbmcsIERvY2tlciByZXN0YXJ0IHBvbGljeSB8CgojIyMjIEpWTSBpbmZvcm1hdGlvbgp8IHwgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0gfAp8ICoqV2hhdCoqIHwgR2V0IEp2bSBpbmZvcm1hdGlvbiB8CnwgKipIb3cqKiB8IGBjdXJsIC1YIEdFVCAiaHR0cDovL2xvY2FsaG9zdDo4MDUwL21vY2stYXBpL2dldGluZm9zL2p2bSJgIHwKfCAqKlVzYWdlKiogfCBEZWJ1ZyB8CgojIyMjIEVudmlyb25tZW50IHZhcmlhYmxlcwp8IHwgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0gfAp8ICoqV2hhdCoqIHwgR2V0IEVudmlyb25tZW50IHZhcmlhYmxlcyB8CnwgKipIb3cqKiB8IGBjdXJsIC1YIEdFVCAiaHR0cDovL2xvY2FsaG9zdDo4MDUwL21vY2stYXBpL2dldGluZm9zL3ZhcmVudiJgIHwKfCAqKlVzYWdlKiogfCBEZWJ1ZyB8CgojIyMjIEhvc3RuYW1lCnwgfCB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLSB8CnwgKipXaGF0KiogfCBHZXQgSG9zdG5hbWUgb2YgY29udGFpbmVyIHwKfCAqKkhvdyoqIHwgYGN1cmwgLVggR0VUICJodHRwOi8vbG9jYWxob3N0OjgwNTAvbW9jay1hcGkvZ2V0aW5mb3MvaG9zdG5hbWUiYCB8CnwgKipVc2FnZSoqIHwgRGVidWcgfAoKIyMjIyBTaHV0ZG93bgp8IHwgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0gfAp8ICoqV2hhdCoqIHwgS2lsbCBKVk0gd2l0aCBzcGVjaWZ5IGV4aXQgQ29kZSB8CnwgKipIb3cqKiB8ICB8CnwgfCBSdW4gY29udGFpbmVyIHdpdGggLS1yZXN0YXJ0IG9uLWZhaWx1cmUgfAp8IHwgQ2FsbCBgY3VybCAtWCBQT1NUICJodHRwOi8vbG9jYWxob3N0OjgwNTAvbW9jay1hcGkvc2h1dGRvd24vMTIiYCAtPiBUaGUgY29udGFpbmVyIHJlc3RhcnQgfAp8IHwgQ2FsbCBgY3VybCAtWCBQT1NUICJodHRwOi8vbG9jYWxob3N0OjgwNTAvbW9jay1hcGkvc2h1dGRvd24vMCJgIC0+IFRoZSBjb250YWluZXIgZG9uJ3QgcmVzdGFydCB8CnwgKipVc2FnZSoqIHwgRG9ja2VyIFJlc3RhcnQgcG9saWN5LCBHYXRsaW5nIFJlc2lsaWVuY2UgdGVzdCB8CgojIyMjIEhlYWx0aENoZWNrCnwgfCB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLSB8CnwgKipXaGF0KiogfCBTZXQgcmV0dXJuIGNvZGUgb2YgRG9ja2VyIEhlYWx0aENoZWNrIHwKfCAqKkhvdyoqIHwgIHwKfCB8IENhbGwgYGN1cmwgLVggR0VUICJodHRwOi8vbG9jYWxob3N0OjgwNTAvbW9jay1hcGkvaGVhbHRoY2hlY2siYCAtPiBSZXR1cm4gaGVhbHRoY2hlY2sgY29kZSAoYnkgZGVmYXVsdCAyMDApIHwKfCB8IENhbGwgYGN1cmwgLVggUE9TVCAiaHR0cDovL2xvY2FsaG9zdDo4MDUwL21vY2stYXBpL2hlYWx0aGNoZWNrL3NldGNvZGUvNTAwImAgLT4gU2V0IHJldHVybiBjb2RlIGF0IDUwMCB8CnwgKipVc2FnZSoqIHwgRG9ja2VyIFJlc3RhcnQgcG9saWN5LCBEb2NrZXIgSGVhbHRoQ2hlY2ssIEdhdGxpbmcgUmVzaWxpZW5jZSwgVHJhZWZpayBleHBvc2Ugc2VydmljZSB8CgojIyMjIFNuaWZmZXIKfCB8IHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tIHwKfCAqKldoYXQqKiB8IEdldCBpbmZvcm1hdGlvbiBvZiBjYWxsIChHRVQvUFVUL1BPU1QvREVMRVRFL09QVElPTlMvSEVBRC9QQVRDSCkgfAp8IHwgSG9zdG5hbWUgY29udGFpbmVyIHwKfCB8IEhvc3RJcCB8CnwgfCBVcmwgcmVjZWl2ZWQgfAp8IHwgVXJpIHJlY2VpdmVkIHwKfCB8IFF1ZXNyeSBTdHJpbmcgfAp8IHwgTGlzdCBoZWFkZXJzIHwKfCB8IEJvZHkgY29udGVudCB8CnwgKipIb3cqKiB8IGBjdXJsIC1YIEdFVCAiaHR0cDovL2xvY2FsaG9zdDo4MDUwL21vY2stYXBpL3NuaWZmZXIvaGVhZGVycyJgIHwKfCAqKlVzYWdlKiogfCBEZW1vLCBEZWJ1ZyB8CgojIyMjIEVycm9yIGNvZGUKfCB8IHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tIHwKfCAqKldoYXQqKiB8IENob29zZSBIdHRwIHN0YXR1cyBvZiByZXNwb25zZSB8CnwgKipIb3cqKiB8ICB8CnwgfCByZXR1cm4gaHR0cCBzdGF0dXMgNDA0IDogYGN1cmwgLVggR0VUICJodHRwOi8vbG9jYWxob3N0OjgwNTAvbW9jay1hcGkvc2ltdWxhdGlvbi9lcnJvci80MDQiYCB8CnwgfCByZXR1cm4gaHR0cCBzdGF0dXMgNTAwIDogYGN1cmwgLVggR0VUICJodHRwOi8vbG9jYWxob3N0OjgwNTAvbW9jay1hcGkvc2ltdWxhdGlvbi9lcnJvci81MDAiYCB8CnwgKipVc2FnZSoqIHwgR2F0bGluZyBSZXNpbGllbmNlLCBEZW1vIHwKCiMjIyMgUmVzcG9uc2UgdGltZQp8IHwgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0gfAp8ICoqV2hhdCoqIHwgQ2hvb3NlIHJlc3BvbnNlIHRpbWUgKHZhbHVlIGluIHBhdGgpIHwKfCAqKkhvdyoqIHwgUmVzcG9uc2UgaW4gNXMgOiBgY3VybCAtWCBHRVQgImh0dHA6Ly9sb2NhbGhvc3Q6ODA1MC9tb2NrLWFwaS9zaW11bGF0aW9uL3RpbWVvdXQvNTAwMCJgIHwKfCAqKlVzYWdlKiogfCBHYXRsaW5nIFJlc2lsaWVuY2UgfAoKIyMjIyBSZXNwb25zZSB0aW1lIGluIG1lbW9yeQp8IHwgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0gfAp8ICoqV2hhdCoqIHwgQ2hvb3NlIHJlc3BvbnNlIHRpbWUgKHZhbHVlIHN0b3JlIGluIG1lbW9yeSBvZiBzZXJ2ZXIsIGJ5IGRlZmF1bHQ6IDBtcykgfAp8ICoqSG93KiogfCAgfAp8IHwgU2V0IHJlc3BvbnNlIHRpbWUgdG8gMTBzOiBgY3VybCAtWCBQT1NUICJodHRwOi8vbG9jYWxob3N0OjgwNTAvbW9jay1hcGkvc2ltdWxhdGlvbi90aW1lb3V0LW1lbW9yeS8xMDAwMCJgICB8CnwgfCBHZXQgcmVzcG9uc2UgaW4gMTBzOiBgY3VybCAtWCBHRVQgImh0dHA6Ly9sb2NhbGhvc3Q6ODA1MC9tb2NrLWFwaS9zaW11bGF0aW9uL3RpbWVvdXQtbWVtb3J5ImAgIHwKfCAqKlVzYWdlKiogfCBHYXRsaW5nIFJlc2lsaWVuY2UgfAoKIyMjIyBSZXNwb25zZSBzaXplCnwgfCB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLSB8CnwgKipXaGF0KiogfCBHZXQgZmlsZSB3aXRoIHNwZWNpZnkgc2l6ZSBvbiByZXF1ZXN0IHwKfCAqKkhvdyoqIHwgIHwKfCB8IEdldCBGaWxlIDIwMEtvOiBgY3VybCAtWCBHRVQgImh0dHA6Ly9sb2NhbGhvc3Q6ODA1MC9tb2NrLWFwaS9zaW11bGF0aW9uL3Jlc3BvbnNlLXNpemUvMjAwIiAtLW91dHB1dCAvdG1wL2ZpbGUyMDBgIHwKfCB8IEdldCBGaWxlIDJNbzogYGN1cmwgLVggR0VUICJodHRwOi8vbG9jYWxob3N0OjgwNTAvbW9jay1hcGkvc2ltdWxhdGlvbi9yZXNwb25zZS1zaXplLzIwMDAiIC0tb3V0cHV0IC90bXAvZmlsZTIwMDBgIHwKfCAqKlVzYWdlKiogfCBHYXRsaW5nIFJlc2lsaWVuY2UsIERlbW8sIFRlc3QgfAoKIyMjIyBTZXNzaW9uIG5vdCBzaGFyZWQKfCB8IHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tIHwKfCAqKldoYXQqKiB8IFN0b3JlIHNlc3Npb24gKGJ5IHRva2VuIGtleSkgaW4gc2VydmVyIHdpdGhvdXQgc2hhcmUgc2NhbGVzIGluc3RhbmNlcyB8CnwgKipIb3cqKiB8ICB8CnwgfCBSdW4gYSBzZWNvbmRhcnkgc2VydmVyIChyZXBsYWNlIGAtcCA4MDUwOjgwNTBgIGJ5IGAtcCA4MDYwOjgwNTBgKSB8CnwgfCBDYWxsIGZpcnN0IHNlcnZlciB3aXRoIHRva2VuICJ0ZXN0IiwgcmV0dXJuIHRpbWVzdGFtcCBvZiBjcmVhdGVkIHNlc3Npb246IGBjdXJsIC1YIEdFVCAiaHR0cDovL2xvY2FsaG9zdDo4MDUwL21vY2stYXBpL3Nlc3Npb24vc2hhcmUvdGVzdCJgICB8CnwgfCBDYWxsIHNlY29uZGFyeSBzZXJ2ZXIgd2l0aCB0b2tlbiAidGVzdCIsIHJldHVybiBzYW1lIHRpbWVzdGFtcCBvZiBmaXJzdCBzZXJ2ZXI6IGBjdXJsIC1YIEdFVCAiaHR0cDovL2xvY2FsaG9zdDo4MDYwL21vY2stYXBpL3Nlc3Npb24vc2hhcmUvdGVzdCJgICB8CnwgKipVc2FnZSoqIHwgRGVtbyBzZXJ2ZXJsZXNzIGNvbnN0cmFpbnRzIERvY2tlciB8CgojIyMjIFNoYXJlZCBTZXNzaW9uCnwgfCB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLSB8CnwgKipXaGF0KiogfCBTaGFyZSBzZXNzaW9uIChvbiBtdWx0aWNhc3QpIGJldHdlZW4gYWxsIHNlcnZlcnMgfAp8ICoqSG93KiogfCAgfAp8IHwgUnVuIGEgc2Vjb25kYXJ5IHNlcnZlciAocmVwbGFjZSBgLXAgODA1MDo4MDUwYCBieSBgLXAgODA2MDo4MDUwYCkgfAp8IHwgQ2FsbCBmaXJzdCBzZXJ2ZXIgd2l0aCB0b2tlbiAidGVzdCIsIHJldHVybiB0aW1lc3RhbXAgb2YgY3JlYXRlZCBzZXNzaW9uOiBgY3VybCAtWCBHRVQgImh0dHA6Ly9sb2NhbGhvc3Q6ODA1MC9tb2NrLWFwaS9zZXNzaW9uL25vdHNoYXJlL3Rlc3QiYCAgfAp8IHwgQ2FsbCBmaXNydCBzZXJ2ZXIgd2l0aCB0b2tlbiAidGVzdCIsIHJldHVybiBzYW1lIHRpbWVzdGFtcCB8CnwgfCBDYWxsIHNlY29uZGFyeSBzZXJ2ZXIgd2l0aCB0b2tlbiAidGVzdCIsIHJldHVybiB0aW1lc3RhbXAgb2YgY3JlYXRlZCBzZXNzaW9uLCBidXQgZGlmZmVyZW50IG9mIGZpcnN0IHNlcnZlcjogYGN1cmwgLVggR0VUICJodHRwOi8vbG9jYWxob3N0OjgwNjAvbW9jay1hcGkvc2Vzc2lvbi9ub3RzaGFyZS90ZXN0ImAgIHwKfCB8IENhbGwgc2Vjb25kYXJ5IHNlcnZlciB3aXRoIHRva2VuICJ0ZXN0IiwgcmV0dXJuIHNhbWUgdGltZXN0YW1wIHwKfCAqKlVzYWdlKiogfCBEZW1vIHNlcnZlcmxlc3MgY29uc3RyYWludHMgRG9ja2VyICB8CgojIyMjIE1vY2sgSnNvbiBSZXNwb25zZQp8IHwgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0gfAp8ICoqV2hhdCoqIHwgUmV0dXJuIEpzb24gZmlsZSBzdG9yZSBpbiBgL21vY2stcmVzcG9uc2VgIHwKfCAqKkhvdyoqIHwgIHwKfCB8IENyZWF0ZSBkaXJlY3RvcnkgYC94eHgvbW9ja2AgfAp8IHwgSW4gdGhpcyBkaXJlY3RvcnksIGNyZWF0ZSBqc29uIGZpbGUgKHNlZSBleGFtcGxlcyBhZnRlcikgfAp8IHwgUnVuIGNvbnRhaW5lciB3aXRoIC12IC94eHgvbW9jazovbW9jay1yZXNwb25zZSB8CnwgfCBDYWxsIGBjdXJsIC1YIEdFVCAiaHR0cDovL2xvY2FsaG9zdDo4MDUwL21vY2stYXBpL21vY2svdGVzdCJgIC0+IFJldHVybiAyMDAgd2l0aCB0ZXN0IGZpbGUgY29udGVudCB8CnwgfCBDYWxsIGBjdXJsIC1YIEdFVCAiaHR0cDovL2xvY2FsaG9zdDo4MDUwL21vY2stYXBpL21vY2svdGVzdDIiYCAtPiBSZXR1cm4gMjAwIHdpdGggdGVzdDIgZmlsZSBjb250ZW50IHwKfCB8IENhbGwgYGN1cmwgLVggR0VUICJodHRwOi8vbG9jYWxob3N0OjgwNTAvbW9jay1hcGkvbW9jay90ZXN0MyJgIC0+IFJldHVybiA0MDQsIG5vIGZpbGUgZm91bmQgfAp8ICoqVXNhZ2UqKiB8IE1vY2sgSnNvbiBjYWxsLCBHYXRsaW5nIFJlc2lsaWVuY2UgdGVzdCB8CgpFeGFtcGxlcyBvZiBGaWxlCiogRmlsZSB0ZXN0OiAKICAgIGBgYAogICAgewogICAgICAgICJ1c2VybmFtZSI6IkpvaG4iLAogICAgICAgICJpZCI6NTY0CiAgICB9CiAgICBgYGAgCiogRmlsZSB0ZXN0MjogCiAgICBgYGAKICAgIHsKICAgICAgICAidXNlcm5hbWUiOiJSb2JlcnQiLAogICAgICAgICJpZCI6Nzg5CiAgICB9CiAgICBgYGAKCiMjIyMgUE9TVCBNb2NrIEpzb24gUmVzcG9uc2UKfCB8IHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tIHwKfCAqKldoYXQqKiB8IEFkZCBKc29uIGZpbGUgc3RvcmUgaW4gYC9tb2NrLXJlc3BvbnNlYCB8CnwgKipIb3cqKiB8ICB8CnwgfCBjdXJsIC1YIFBPU1QgImh0dHA6Ly9sb2NhbGhvc3Q6ODA1MC9tb2NrLWFwaS9tb2NrL3Rlc3RyZXAiIC1IICAiYWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIiAtSCAgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgLWQgIntcImtleVwiOlwiaGFoYVwifSIgLT4gY3LDqWVyIHVuIGZpY2hpZXIgdGVzdHJlcCB8CnwgKipVc2FnZSoqIHwgTW9jayBKc29uIGNhbGwsIEdhdGxpbmcgUmVzaWxpZW5jZSB0ZXN0IHw= readmeEtag: '"6268bf4ad56eccef518d070565379ffd54f7f72a"' readmeLastModified: Mon, 13 Sep 2021 11:48:35 GMT repositoryId: 216524928 description: >- SpringBoot app for mock API https://hub.docker.com/repository/docker/tuxivinc/mock-api created: '2019-10-21T09:09:03Z' updated: '2024-08-29T13:46:43Z' language: Java archived: false stars: 5 watchers: 1 forks: 2 owner: Tuxivinc logo: https://avatars.githubusercontent.com/u/29063459?v=4 repoEtag: '"a72b5dd5edb05866d527e40cbee8113c6424e17c5d5c2b9d99eb50e244e8a640"' repoLastModified: Thu, 29 Aug 2024 13:46:43 GMT foundInMaster: true category: Server Implementations id: f3c2edded6ea75e1012182cbee4cd398 - source: openapi3 tags repository: https://github.com/snehalkaranje/springboot-blog-rest-api v3: true repositoryMetadata: base64Readme: >- IyBzcHJpbmdib290LWJsb2ctcmVzdC1hcGkKPGEgaHJlZj0iaHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnLyI+PGltZyBhbHQ9Im1hdmVuIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbWF2ZW4tJTIwLWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vc3ByaW5nLmlvL3Byb2plY3RzL3NwcmluZy1ib290LyI+PGltZyBhbHQ9IlNwcmluZyBCb290IiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU3ByaW5nQm9vdC0yLjYuMy1ibHVlIi8+PC9hPgo8YSBocmVmPSJodHRwczovL2RvY3Mub3JhY2xlLmNvbS9lbi9qYXZhL2phdmFzZS8xMS8iPjxpbWcgYWx0PSJKYXZhIDExIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvSmF2YS0xMS1ibHVlIi8+PC9hPgo8YSBocmVmPSJodHRwczovL2Rldi5teXNxbC5jb20vIj48aW1nIGFsdD0iTXlTUUwiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9NeVNRTC04LjAuMjgtYmx1ZSIvPjwvYT4KCgojIyBEZXBlbmRlbmNpZXMKRGVwZW5kZW5jaWVzIHVzZWQgYXJlIGFzIGZvbGxvd3M6Cgo8YSBocmVmPSJodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L29yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdC9zcHJpbmctYm9vdC1zdGFydGVyLXdlYiI+PGltZyBhbHQ9InNwcmluZy1ib290LXN0YXJ0ZXItd2ViIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGVwZW5kZW5jeS1TcHJpbmdCb290U3RhcnRlcldlYi1ibHVlIi8+PC9hPgo8YSBocmVmPSJodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L29yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdC9zcHJpbmctYm9vdC1zdGFydGVyLWRhdGEtanBhIj48aW1nIGFsdD0ic3ByaW5nLWJvb3Qtc3RhcnRlci1kYXRhLWpwYSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2RlcGVuZGVuY3ktU3ByaW5nQm9vdFN0YXJ0ZXJEYXRhSlBBLWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vYXJ0aWZhY3QvbXlzcWwvbXlzcWwtY29ubmVjdG9yLWphdmEiPjxpbWcgYWx0PSJteXNxbC1jb25uZWN0b3ItamF2YSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2RlcGVuZGVuY3ktTXlTUUxDb25uZWN0b3JKYXZhLWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vYXJ0aWZhY3Qvb3JnLnByb2plY3Rsb21ib2svbG9tYm9rIj48aW1nIGFsdD0ibG9tYm9rIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGVwZW5kZW5jeS1Mb21ib2stYmx1ZSIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9vcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3Qvc3ByaW5nLWJvb3QtZGV2dG9vbHMiPjxpbWcgYWx0PSJzcHJpbmctYm9vdC1kZXZ0b29scyIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2RlcGVuZGVuY3ktU3ByaW5nQm9vdERldlRvb2xzLWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vYXJ0aWZhY3Qvb3JnLnNwcmluZ2ZyYW1ld29yay5ib290L3NwcmluZy1ib290LXN0YXJ0ZXItdGVzdCI+PGltZyBhbHQ9InNwcmluZy1ib290LXN0YXJ0ZXItdGVzdCIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2RlcGVuZGVuY3ktU3ByaW5nQm9vdFN0YXJ0ZXJUZXN0LWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vYXJ0aWZhY3Qvb3JnLm1vZGVsbWFwcGVyL21vZGVsbWFwcGVyLzMuMC4wIj48aW1nIGFsdD0ibW9kZWwtbWFwcGVyIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGVwZW5kZW5jeS1Nb2RlbE1hcHBlci1ibHVlIi8+PC9hPgo8YSBocmVmPSJodHRwczovL212bnJlcG9zaXRvcnkuY29tL2FydGlmYWN0L29yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdC9zcHJpbmctYm9vdC1zdGFydGVyLXZhbGlkYXRpb24iPjxpbWcgYWx0PSJzcHJpbmctYm9vdC1zdGFydGVyLXZhbGlkYXRpb24iIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9kZXBlbmRlbmN5LVNwcmluZ0Jvb3RTdGFydGVyVmFsaWRhdGlvbi1ibHVlIi8+PC9hPiAKCgojIyBQcm9qZWN0IEFyY2hpdGVjdHVyZQpgYGAKMyBsYXllciBBcmNoaXRlY3R1cmUgOiBDbGllbnQgPC0tPiBDb250cm9sbGVyIDwtLT4gU2VydmljZSA8LS0+IERBTyA8LS0+IERCCgotIENvbnRyb2xsZXIKICAtIEtlZXBzIGFsbCBzcHJpbmcgUkVTVCBjb250cm9sbGVycwogIC0gRGVmaW5lIGVuZCBwb2ludHMKLSBTZXJ2aWNlCiAgLSBhbGwgc2VydmljZSBjbGFzc2VzIHRoYXQgaG9sZCBidXNpbmVzcyBsb2dpYwotIERBTwogIC0gUmVwb3NpdG9yeSBsYXllcgogIC0ga2VlcCBhbGwgc3ByaW5nIEpQQSBkYXRhIHJlcG9zaXRvcnkKICAtIENvbW11bmljYXRlcyB3aXRoIGRhdGFiYXNlCmBgYAoKIyMgUHJvamVjdCBTdHJ1Y3R1cmUgRXhwbGFpbmVkCmBgYAotIGNvbnRyb2xsZXIKICAtIENvbnRhaW5zIGFsbCBTcHJpbmcgTVZDIGNvbnRyb2xsZXJzCi0gZW50aXR5CiAgLSBDb250YWlucyBhbGwgSlBBIGVudGl0aWVzCi0gc2VydmljZQogIC0gQ29udGFpbnMgc2VydmljZSBpbnRlcmZhY2VzCi0gc2VydmljZS5pbXBsCiAgLSBDb250YWlucyBzZXJ2aWUgY2xhc3NlcwotIHV0aWxzCiAgLSBDb250YWlucyB1dGlsaXRpZXMgYW5kIGNsYXNzZXMKLSByZXBvc2l0b3J5CiAgLSBDb250YWlucyBTcHJpbmcgRGF0YSBKUEEgcmVwb3NpdG9yaWVzLiAoSlBBIHJlcG9zaXRvcmllcyBhcmUgYnkgZGVmYXVsdCBUcmFuc2FjdGlvbmFsLiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGNsYXNzIG9mIHRoZSBKcGFSZXBvc2l0b3J5IGludGVyZmFjZSBpcyBTaW1wbGVKcGFSZXBvc2l0b3J5IGNsYXNzKQotIGV4Y2VwdGlvbgogIC0gQ29udGFpbnMgYWxsIGN1c3RvbSBleGNlcHRpb25zCi0gcGF5bG9hZAogIC0gQ29udGFpbnMgRFRPcyAoRGF0YSBUcmFuc2ZlciBPYmplY3RzKSB0aGF0IGFjdCBhcyBhIHBheWxvYWQgYmV0d2VlbiBjbGllbnQgYW5kIHNlcnZlcgpgYGAKCiMjIEFQSSBkb2N1bWVudCBnZW5lcmF0aW9uCk9wZW5BUEkgMyBzcGVjaWZpY2F0aW9uIGRvY3VtZW50IGZvciBBUEkgaXMgYXV0byBnZW5lcmF0ZWQgdXNpbmcgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NwcmluZ2RvYy9zcHJpbmdkb2Mtb3BlbmFwaSI+c3ByaW5nZG9jLW9wZW5hcGktdWk8L2E+CgpBcyBwZXIgY3VzdG9tIHBhdGggcHJvdmlkZWQgaW4gYXBwbGljYXRpb24ucHJvcGVydGllcywgYXV0byBnZW5lcmF0ZWQgQVBJIGRvYyBpcyBnZW5lcmF0ZWQgYXQgY3VzdG9tIHBhdGg6IApgYGAKaHR0cDovL2xvY2FsaG9zdDo8cG9ydD4vYXBpLWRvY3MvIApgYGAKCkRvYyBjYW4gYWxzbyBiZSBhY2Nlc3NlZCBpbiB0aGUgU3dhZ2dlciBVSSBhdCBwYXRoOgpgYGAKaHR0cDovL2xvY2FsaG9zdDo8cG9ydD4vc3dhZ2dlci11aS5odG1sCmBgYAoKCiMjIEFubm90YXRpb25zCiMjIyBTcHJpbmcgQm9vdCBBbm5vdGF0aW9ucwo8YSBocmVmPSJodHRwczovL2RvY3Muc3ByaW5nLmlvL3NwcmluZy1ib290L2RvY3MvMi4wLngvcmVmZXJlbmNlL2h0bWwvdXNpbmctYm9vdC11c2luZy1zcHJpbmdib290YXBwbGljYXRpb24tYW5ub3RhdGlvbi5odG1sIj48aW1nIGFsdD0iU3ByaW5nQm9vdEFwcGxpY2F0aW9uIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQFNwcmluZ0Jvb3RBcHBsaWNhdGlvbi1ibHVlIi8+PC9hPgo8YSBocmVmPSJodHRwczovL2RvY3Muc3ByaW5nLmlvL3NwcmluZy1mcmFtZXdvcmsvZG9jcy9jdXJyZW50L2phdmFkb2MtYXBpL29yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL2JpbmQvYW5ub3RhdGlvbi9SZXNwb25zZVN0YXR1cy5odG1sIj48aW1nIGFsdD0iUmVzcG9uc2VTdGF0dXMiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9AUmVzcG9uc2VTdGF0dXMtYmx1ZSIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnNwcmluZy5pby9zcHJpbmctZnJhbWV3b3JrL2RvY3MvY3VycmVudC9qYXZhZG9jLWFwaS9vcmcvc3ByaW5nZnJhbWV3b3JrL3N0ZXJlb3R5cGUvU2VydmljZS5odG1sIj48aW1nIGFsdD0iU2VydmljZSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0BTZXJ2aWNlLWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5zcHJpbmcuaW8vc3ByaW5nLWZyYW1ld29yay9kb2NzL2N1cnJlbnQvamF2YWRvYy1hcGkvb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvYmluZC9hbm5vdGF0aW9uL1Jlc3RDb250cm9sbGVyLmh0bWwiPjxpbWcgYWx0PSJSZXN0Q29udHJvbGxlciIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0BSZXN0Q29udHJvbGxlci1ibHVlIi8+PC9hPgo8YSBocmVmPSJodHRwczovL2RvY3Muc3ByaW5nLmlvL3NwcmluZy1mcmFtZXdvcmsvZG9jcy9jdXJyZW50L2phdmFkb2MtYXBpL29yZy9zcHJpbmdmcmFtZXdvcmsvc3RlcmVvdHlwZS9Db250cm9sbGVyLmh0bWwiPjxpbWcgYWx0PSJDb250cm9sbGVyIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQENvbnRyb2xsZXItYmx1ZSIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnNwcmluZy5pby9zcHJpbmctZnJhbWV3b3JrL2RvY3MvY3VycmVudC9qYXZhZG9jLWFwaS9vcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9iaW5kL2Fubm90YXRpb24vUmVzcG9uc2VCb2R5Lmh0bWwiPjxpbWcgYWx0PSJSZXNwb25zZUJvZHkiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9AUmVzcG9uc2VCb2R5LWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5zcHJpbmcuaW8vc3ByaW5nLWZyYW1ld29yay9kb2NzL2N1cnJlbnQvamF2YWRvYy1hcGkvb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvYmluZC9hbm5vdGF0aW9uL1JlcXVlc3RNYXBwaW5nLmh0bWwiPjxpbWcgYWx0PSJSZXF1ZXN0TWFwcGluZyIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0BSZXF1ZXN0TWFwcGluZy1ibHVlIi8+PC9hPgo8YSBocmVmPSJodHRwczovL2RvY3Muc3ByaW5nLmlvL3NwcmluZy1mcmFtZXdvcmsvZG9jcy9jdXJyZW50L2phdmFkb2MtYXBpL29yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL2JpbmQvYW5ub3RhdGlvbi9Qb3N0TWFwcGluZy5odG1sIj48aW1nIGFsdD0iUG9zdE1hcHBpbmciIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9AUG9zdE1hcHBpbmctYmx1ZSIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnNwcmluZy5pby9zcHJpbmctZnJhbWV3b3JrL2RvY3MvY3VycmVudC9qYXZhZG9jLWFwaS9vcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9iaW5kL2Fubm90YXRpb24vR2V0TWFwcGluZy5odG1sIj48aW1nIGFsdD0iR2V0TWFwcGluZyIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0BHZXRNYXBwaW5nLWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5zcHJpbmcuaW8vc3ByaW5nLWZyYW1ld29yay9kb2NzL2N1cnJlbnQvamF2YWRvYy1hcGkvb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvYmluZC9hbm5vdGF0aW9uL1BhdGhWYXJpYWJsZS5odG1sIj48aW1nIGFsdD0iUGF0aFZhcmlhYmxlIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQFBhdGhWYXJpYWJsZS1ibHVlIi8+PC9hPgo8YSBocmVmPSJodHRwczovL2RvY3Muc3ByaW5nLmlvL3NwcmluZy1mcmFtZXdvcmsvZG9jcy9jdXJyZW50L2phdmFkb2MtYXBpL29yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL2JpbmQvYW5ub3RhdGlvbi9QdXRNYXBwaW5nLmh0bWwiPjxpbWcgYWx0PSJQdXRNYXBwaW5nIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQFB1dE1hcHBpbmctYmx1ZSIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnNwcmluZy5pby9zcHJpbmctZnJhbWV3b3JrL2RvY3MvY3VycmVudC9qYXZhZG9jLWFwaS9vcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9iaW5kL2Fubm90YXRpb24vRGVsZXRlTWFwcGluZy5odG1sIj48aW1nIGFsdD0iRGVsZXRlTWFwcGluZyIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0BEZWxldGVNYXBwaW5nLWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5zcHJpbmcuaW8vc3ByaW5nLWZyYW1ld29yay9kb2NzL2N1cnJlbnQvamF2YWRvYy1hcGkvb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvYmluZC9hbm5vdGF0aW9uL1JlcXVlc3RQYXJhbS5odG1sIj48aW1nIGFsdD0iUmVxdWVzdFBhcmFtIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQFJlcXVlc3RQYXJhbS1ibHVlIi8+PC9hPgo8YSBocmVmPSJodHRwczovL2RvY3Muc3ByaW5nLmlvL3NwcmluZy1qYXZhY29uZmlnL2RvY3MvMS4wLjAuTTQvcmVmZXJlbmNlL2h0bWwvY2gwMnMiPjxpbWcgYWx0PSJCZWFuIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQEJlYW4tYmx1ZSIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnNwcmluZy5pby9zcHJpbmctZnJhbWV3b3JrL2RvY3MvY3VycmVudC9qYXZhZG9jLWFwaS9vcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9iaW5kL2Fubm90YXRpb24vRXhjZXB0aW9uSGFuZGxlci5odG1sIj48aW1nIGFsdD0iRXhjZXB0aW9uSGFuZGxlciIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0BFeGNlcHRpb25IYW5kbGVyLWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5zcHJpbmcuaW8vc3ByaW5nLWZyYW1ld29yay9kb2NzL2N1cnJlbnQvamF2YWRvYy1hcGkvb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvYmluZC9hbm5vdGF0aW9uL0NvbnRyb2xsZXJBZHZpY2UuaHRtbCI+PGltZyBhbHQ9IkNvbnRyb2xsZXJBZHZpY2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9AQ29udHJvbGxlckFkdmljZS1ibHVlIi8+PC9hPgoKIyMjIExvbWJvayBhbm5vdGF0aW9ucwo8YSBocmVmPSJodHRwczovL3Byb2plY3Rsb21ib2sub3JnL2FwaS9sb21ib2svRGF0YS5odG1sIj48aW1nIGFsdD0iRGF0YSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0BEYXRhLWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vcHJvamVjdGxvbWJvay5vcmcvYXBpL2xvbWJvay9BbGxBcmdzQ29uc3RydWN0b3IuaHRtbCI+PGltZyBhbHQ9IkFsbEFyZ3NDb25zdHJ1Y3RvciIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0BBbGxBcmdzQ29uc3RydWN0b3ItYmx1ZSIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9wcm9qZWN0bG9tYm9rLm9yZy9hcGkvbG9tYm9rL05vQXJnc0NvbnN0cnVjdG9yLmh0bWwiPjxpbWcgYWx0PSJOb0FyZ3NDb25zdHJ1Y3RvciIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0BOb0FyZ3NDb25zdHJ1Y3Rvci1ibHVlIi8+PC9hPgoKIyMjIEpQQSBhbm5vdGF0aW9ucwo8YSBocmVmPSJodHRwczovL3d3dy50ZWNoZmVycnkuY29tL2FydGljbGVzL2hpYmVybmF0ZS1qcGEtYW5ub3RhdGlvbnMuaHRtbCNFbnRpdHkiPjxpbWcgYWx0PSJFbnRpdHkiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9ARW50aXR5LWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlY2hmZXJyeS5jb20vYXJ0aWNsZXMvaGliZXJuYXRlLWpwYS1hbm5vdGF0aW9ucy5odG1sI1RhYmxlIj48aW1nIGFsdD0iVGFibGUiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9AVGFibGUtYmx1ZSIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cudGVjaGZlcnJ5LmNvbS9hcnRpY2xlcy9oaWJlcm5hdGUtanBhLWFubm90YXRpb25zLmh0bWwjSWQiPjxpbWcgYWx0PSJJZCIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0BJZC1ibHVlIi8+PC9hPgo8YSBocmVmPSJodHRwczovL3d3dy50ZWNoZmVycnkuY29tL2FydGljbGVzL2hpYmVybmF0ZS1qcGEtYW5ub3RhdGlvbnMuaHRtbCNHZW5lcmF0ZWRWYWx1ZSI+PGltZyBhbHQ9IkdlbmVyYXRlZFZhbHVlIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQEdlbmVyYXRlZFZhbHVlLWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlY2hmZXJyeS5jb20vYXJ0aWNsZXMvaGliZXJuYXRlLWpwYS1hbm5vdGF0aW9ucy5odG1sI0NvbHVtbiI+PGltZyBhbHQ9IkNvbHVtbiIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0BDb2x1bW4tYmx1ZSIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cudGVjaGZlcnJ5LmNvbS9hcnRpY2xlcy9oaWJlcm5hdGUtanBhLWFubm90YXRpb25zLmh0bWwjTWFueVRvT25lIj48aW1nIGFsdD0iTWFueVRvT25lIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQE1hbnlUb09uZS1ibHVlIi8+PC9hPgo8YSBocmVmPSJodHRwczovL3d3dy50ZWNoZmVycnkuY29tL2FydGljbGVzL2hpYmVybmF0ZS1qcGEtYW5ub3RhdGlvbnMuaHRtbCNKb2luQ29sdW1uIj48aW1nIGFsdD0iSm9pbkNvbHVtbiIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0BKb2luQ29sdW1uLWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlY2hmZXJyeS5jb20vYXJ0aWNsZXMvaGliZXJuYXRlLWpwYS1hbm5vdGF0aW9ucy5odG1sI09uZVRvTWFueSI+PGltZyBhbHQ9Ik9uZVRvTWFueSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0BPbmVUb01hbnktYmx1ZSIvPjwvYT4KCiMjIyBTcHJpbmcgQm9vdCBzdGFydGVyIHZhbGlkYXRpb24gKEhpYmVybmF0ZSBWYWxpZGF0b3IpCjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFlZS83L2FwaS9qYXZheC92YWxpZGF0aW9uL2NvbnN0cmFpbnRzL05vdE51bGwuaHRtbCI+PGltZyBhbHQ9Ik5vdE51bGwiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9ATm90TnVsbC1ibHVlIi8+PC9hPgo8YSBocmVmPSJodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhZWUvNy9hcGkvamF2YXgvdmFsaWRhdGlvbi9jb25zdHJhaW50cy9TaXplLmh0bWwiPjxpbWcgYWx0PSJTaXplIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQFNpemUtYmx1ZSIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vamF2YWVlLzcvYXBpL2phdmF4L3ZhbGlkYXRpb24vY29uc3RyYWludHMvTWluLmh0bWwiPjxpbWcgYWx0PSJNaW4iIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9ATWluLWJsdWUiLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFlZS83L2FwaS9qYXZheC92YWxpZGF0aW9uL2NvbnN0cmFpbnRzL01heC5odG1sIj48aW1nIGFsdD0iTWF4IiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQE1heC1ibHVlIi8+PC9hPgo8YSBocmVmPSJodHRwczovL2phdmFlZS5naXRodWIuaW8vamF2YWVlLXNwZWMvamF2YWRvY3MvamF2YXgvdmFsaWRhdGlvbi9jb25zdHJhaW50cy9FbWFpbC5odG1sIj48aW1nIGFsdD0iRW1haWwiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9ARW1haWwtYmx1ZSIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9qYXZhZWUuZ2l0aHViLmlvL2phdmFlZS1zcGVjL2phdmFkb2NzL2phdmF4L3ZhbGlkYXRpb24vY29uc3RyYWludHMvTm90RW1wdHkuaHRtbCI+PGltZyBhbHQ9Ik5vdEVtcHR5IiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQE5vdEVtcHR5LWJsdWUiLz48L2E+IAo8YSBocmVmPSJodHRwczovL2phdmFlZS5naXRodWIuaW8vamF2YWVlLXNwZWMvamF2YWRvY3MvamF2YXgvdmFsaWRhdGlvbi9jb25zdHJhaW50cy9Ob3RCbGFuay5odG1sIj48aW1nIGFsdD0iTm90QmxhbmsiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9ATm90QmxhbmstYmx1ZSIvPjwvYT4gCjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFlZS83L2FwaS9qYXZheC92YWxpZGF0aW9uL1ZhbGlkLmh0bWwiPjxpbWcgYWx0PSJWYWxpZCIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0BWYWxpZC1ibHVlIi8+PC9hPgo= readmeEtag: '"ffec71145aca75f6f0feee527c8e309247fce13f"' readmeLastModified: Tue, 25 Jun 2024 09:30:27 GMT repositoryId: 453950856 description: 'Spring boot REST API application ' created: '2022-01-31T09:49:29Z' updated: '2024-09-15T20:07:21Z' language: Java archived: false stars: 5 watchers: 1 forks: 0 owner: SnehalKaranje logo: https://avatars.githubusercontent.com/u/58742622?v=4 repoEtag: '"e8842913ef947743d249cdace5124c89b013fcddd85421258c1e88dd1ce11fbb"' repoLastModified: Sun, 15 Sep 2024 20:07:21 GMT foundInMaster: true category: Server id: 92461140252d2f808a6e413eb747f965 - source: - openapi3 tags - openapi31 tags repository: https://github.com/apiaddicts/sonar-openapi v3: true v3_1: true id: 514c0837da7b67edc46795a00a5e8da2 repositoryMetadata: base64Readme: >- CiMg8J+boO+4jyBTb25hciBPcGVuQXBpIChwbHVnaW4pICFbUmVsZWFzZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9yZWxlYXNlLTEuMS4xLXB1cnBsZSkgIVtTd2FnZ2VyXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlLy1vcGVuYXBpLSUyM0Nsb2p1cmU/c3R5bGU9ZmxhdCZsb2dvPXN3YWdnZXImbG9nb0NvbG9yPXdoaXRlKSAhW0phdmFdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvamF2YS0lMjNFRDhCMDAuc3ZnP3N0eWxlPWZsYXQmbG9nbz1vcGVuamRrJmxvZ29Db2xvcj13aGl0ZSkgIFshW0xpY2Vuc2U6IExHUEwgdjNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1MR1BMX3YzLWJsdWUuc3ZnKV0oaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMCkgCgpTb25hciBPcGVuQXBpIChwbHVnaW4pIGlzIGEgY29kZSBhbmFseXplciBmb3IgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucywgIGlzIHRoZSBzcGlyaXR1YWwgc3VjY2Vzc29yIG9mIFtTb25hck9wZW5BcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9zb2NpZXRlLWdlbmVyYWxlL3NvbmFyLW9wZW5hcGkpLCBjYXJyeWluZyBvbiBmcm9tIHRoZSBwb2ludCB3aGVyZSBpdCBsZWZ0IG9mZiB3aXRoIHN1cHBvcnQgb2YgQXBpYWRkaWN0cyBjb21tdW5pdHkuCgojIyMgVGhpcyByZXBvc2l0b3J5IGlzIGludGVuZGVkIGZvciA6b2N0b2NhdDogKipjb21tdW5pdHkqKiB1c2UsIGl0IGNhbiBiZSBtb2RpZmllZCBhbmQgYWRhcHRlZCB3aXRob3V0IGNvbW1lcmNpYWwgdXNlLiBJZiB5b3UgbmVlZCBhIHZlcnNpb24sIHN1cHBvcnQgb3IgaGVscCBmb3IgeW91ciAqKmVudGVycHJpc2UqKiBvciBwcm9qZWN0LCBwbGVhc2UgY29udGFjdCB1cyDwn5OnIGRldnJlbEBhcGlhZGRpY3RzLm9yZwojIyMg8J+SoSBJZiB5b3UgaGF2ZSBhbiBpZGVhIGZvciBhIHJ1bGUgYnV0IHlvdSBhcmUgbm90IHN1cmUgdGhhdCBldmVyeW9uZSBuZWVkcyBpdCB5b3UgY2FuIGltcGxlbWVudCBhIFtjdXN0b20gcnVsZV0oQ3VzdG9tUnVsZXMubWQpIGF2YWlsYWJsZSBvbmx5IGZvciB5b3UuCgpbIVtUd2l0dGVyXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1R3aXR0ZXItJTIzMDAwMDAwLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289eCZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL3R3aXR0ZXIuY29tL0FQSUFkZGljdHMpIApbIVtEaXNjb3JkXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0Rpc2NvcmQtJTIzNTg2NUYyLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289ZGlzY29yZCZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL2Rpc2NvcmQuZ2cvWmRiR3FNQll5OCkKWyFbTGlua2VkSW5dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGlua2VkaW4tJTIzMDA3N0I1LnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289bGlua2VkaW4mbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbXBhbnkvYXBpYWRkaWN0cy8pClshW0ZhY2Vib29rXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0ZhY2Vib29rLSUyMzE4NzdGMi5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPUZhY2Vib29rJmxvZ29Db2xvcj13aGl0ZSldKGh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9hcGlhZGRpY3RzKQpbIVtZb3VUdWJlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1lvdVR1YmUtJTIzRkYwMDAwLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289WW91VHViZSZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9AQVBJQWRkaWN0c2xtYW9vKQoKIyDwn5mMIEpvaW4gdGhlICoqU29uYXIgT3BlbkFwaSAocGx1Z2luKSoqIEFkb3B0ZXJzIGxpc3QgCvCfk6IgSWYgU29uYXIgT3BlbkFwaSBpcyBwYXJ0IG9mIHlvdXIgb3JnYW5pemF0aW9uJ3MgdG9vbGtpdCwgd2Uga2luZGx5IGVuY291cmFnZSB5b3UgdG8gaW5jbHVkZSB5b3VyIGNvbXBhbnkncyBuYW1lIGluIG91ciBBZG9wdGVycyBsaXN0LiDwn5mPIFRoaXMgbm90IG9ubHkgc2lnbmlmaWNhbnRseSBib29zdHMgdGhlIHByb2plY3QncyB2aXNpYmlsaXR5IGFuZCByZXB1dGF0aW9uIGJ1dCBhbHNvIHJlcHJlc2VudHMgYSBzbWFsbCB5ZXQgaW1wYWN0ZnVsIHdheSB0byBnaXZlIGJhY2sgdG8gdGhlIHByb2plY3QuCgp8IE9yZ2FuaXphdGlvbiAgfCBEZXNjcmlwdGlvbiBvZiBVc2UgLyBSZWZlcmVuYyB8CnwtLS18LS0tfAp8ICBbQ2xvdWRBcHBpXShodHRwczovL2Nsb3VkYXBwaS5uZXQvKSAgfCBBcGlmaWNhdGlvbiBhbmQgZ2VuZXJhdGlvbiBvZiBtaWNyb3NlcnZpY2VzIHwKfCBbTWFkcmlkIERpZ2l0YWxdKGh0dHBzOi8vd3d3LmNvbXVuaWRhZC5tYWRyaWQvc2VydmljaW9zL3NlZGUtZWxlY3Ryb25pY2EvbWFkcmlkLWRpZ2l0YWwvKSAgfCBHZW5lcmF0aW9uIG9mIG1pY3Jvc2VydmljZXMgIHwKfCBbQXBpcXVhbGl0eV0oaHR0cHM6Ly9hcGlxdWFsaXR5LmlvLykgIHwgR2VuZXJhdGlvbiBvZiBtaWNyb3NlcnZpY2VzICB8CgojIPCfkanwn4+94oCN8J+SuyAgQ29udHJpYnV0ZSB0byBBcGlBZGRpY3RzIAoKV2UncmUgYW4gaW5jbHVzaXZlIGFuZCBvcGVuIGNvbW11bml0eSwgd2VsY29taW5nIHlvdSB0byBqb2luIG91ciBlZmZvcnQgdG8gZW5oYW5jZSBBcGlBZGRpY3RzLCBhbmQgd2UncmUgZXhjaXRlZCB0byBwcmlvcml0aXplIHRhc2tzIGJhc2VkIG9uIGNvbW11bml0eSBpbnB1dCwgaW52aXRpbmcgeW91IHRvIHJldmlldyBhbmQgY29sbGFib3JhdGUgdGhyb3VnaCBvdXIgR2l0SHViIGlzc3VlIHRyYWNrZXIuCgpGZWVsIGZyZWUgdG8gZHJvcCBieSBhbmQgZ3JlZXQgdXMgb24gb3VyIEdpdEh1YiBkaXNjdXNzaW9uIG9yIERpc2NvcmQgY2hhdC4gWW91IGNhbiBhbHNvIHNob3cgeW91ciBzdXBwb3J0IGJ5IGdpdmluZyB1cyBzb21lIEdpdEh1YiBzdGFycyDirZDvuI8sIG9yIGJ5IGZvbGxvd2luZyB1cyBvbiBUd2l0dGVyLCBMaW5rZWRJbiwgYW5kIHN1YnNjcmliaW5nIHRvIG91ciBZb3VUdWJlIGNoYW5uZWwhIPCfmoAKClshWyJCdXkgTWUgQSBDb2ZmZWUiXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2Fzc2V0cy9pbWcvY3VzdG9tX2ltYWdlcy9vcmFuZ2VfaW1nLnBuZyldKGh0dHBzOi8vd3d3LmJ1eW1lYWNvZmZlZS5jb20vYXBpYWRkaWN0cykKCgojIyDimpnvuI8gRmVhdHVyZXMKCiogRnVsbCBjb21wYXRpYmlsaXR5IHdpdGggT3BlbkFQSSB2Mi4wLCB2My4wLjAsIHYzLjAuMSwgdjMuMC4yLCB2My4wLjMgYW5kIHYzLjEuMAoKIVtTb25hck9wZW5BcGkgaW4gYWN0aW9uXShzb25hcnF1YmUuanBnKQoKPGEgbmFtZT0iaW5zdGFsbCI+PC9hPgojIyBJbnN0YWxsaW5nCgpUbyBpbnN0YWxsIHRoZSBwbHVnaW4sIHlvdSBuZWVkIHRvIGNvbXBpbGUgaXQsIHRoZW4gaW5zdGFsbCBpdCBpbiB5b3VyIFNvbmFyUXViZSBzZXJ2ZXIuCgoxLiBNYWtlIHN1cmUgeW91IGhhdmUgYXQgbGVhc3QgSkRLMS44IGluc3RhbGxlZCwgYXMgd2VsbCBhcyBNYXZlbiAzLjAuNSBvciBsYXRlci4gVGhleSBtdXN0IGJlIHByZXNlbnQgaW4geW91ciBQQVRILgoyLiBJbiB0aGUgbWFzdGVyIGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdCwgdHlwZSBgbXZuIGluc3RhbGxgLiBUaGlzIHdpbGwgY29tcGlsZSB0aGUgcHJvamVjdCBhbmQgZ2VuZXJhdGUgdGhlIGFydGlmYWN0cy4KMy4gQ29weSB0aGUgZmlsZSBgc29uYXItb3BlbmFwaS1wbHVnaW4vdGFyZ2V0L3NvbmFyLW9wZW5hcGktcGx1Z2luLTx2ZXJzaW9uPi5qYXJgIGludG8gZGlyZWN0b3J5IGBleHRlbnNpb25zL3BsdWdpbnMvYG9mCiAgIHlvdXIgU29uYXJRdWJlIGluc3RhbGxhdGlvbiAoeW91IGNhbiBpbnN0YWxsIGEgbG9jYWwgY29weSBbZnJvbSBoZXJlXShodHRwczovL3d3dy5zb25hcnF1YmUub3JnL2Rvd25sb2Fkcy8pIGZvciB0ZXN0aW5nKS4KNC4gUmVzdGFydCB5b3VyIFNvbmFyUXViZSBzZXJ2ZXIuCgojIyBBbmFseXppbmcgeW91ciBwcm9qZWN0cwoKVG8gYW5hbHl6ZSB5b3VyIHByb2plY3RzLCB5b3UgbXVzdCBmaXJzdCBbaW5zdGFsbF0oI2luc3RhbGwpIHRoZSBwbHVnaW4uCgojIyMgQ29uZmlndXJpbmcgc29uYXItc2Nhbm5lcgoKT25jZSBpbnN0YWxsZWQsIGNvbmZpZ3VyZSB0aGUgYW5hbHlzaXMgcHJvcGVydGllcyBieSBjcmVhdGluZyB0aGUgYHNvbmFyLXByb2plY3QucHJvcGVydGllc2AgYXQgdGhlIHJvb3Qgb2YgeW91ciBwcm9qZWN0LgpbU29uYXItc2Nhbm5lcl0oaHR0cHM6Ly9kb2NzLnNvbmFycXViZS5vcmcvbGF0ZXN0L2FuYWx5c2lzL3NjYW4vc29uYXJzY2FubmVyLykgd2lsbCBsb29rIGZvciB0aGlzIGZpbGUgd2hlbiAKbGF1bmNoaW5nIHRoZSBhbmFseXNpcy4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBkZWZpbmUgdGhlc2UgcHJvcGVydGllcyBhcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgdXNpbmcgdGhlIFNvbmFyIE1hdmVuIHBsdWdpbi4KCkFuIGV4YW1wbGUgY29uZmlndXJhdGlvbiBmaWxlIGlzIHByb3ZpZGVkIGJlbG93IGZvciByZWZlcmVuY2U6CgpgYGBwcm9wZXJ0aWVzCiMgbXVzdCBiZSB1bmlxdWUgaW4gYSBnaXZlbiBTb25hclF1YmUgaW5zdGFuY2UKc29uYXIucHJvamVjdEtleT10ZXN0Om9wZW5hcGkKIyB0aGlzIGlzIHRoZSBuYW1lIGFuZCB2ZXJzaW9uIGRpc3BsYXllZCBpbiB0aGUgU29uYXJRdWJlIFVJLiBXYXMgbWFuZGF0b3J5IHByaW9yIHRvIFNvbmFyUXViZSA2LjEuCnNvbmFyLnByb2plY3ROYW1lPU9wZW5BUEkgcGx1Z2luIHRlc3RzCnNvbmFyLnByb2plY3RWZXJzaW9uPTEuMAogCiMgUGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgc29uYXItcHJvamVjdC5wcm9wZXJ0aWVzIGZpbGUuIFJlcGxhY2UgIlwiIGJ5ICIvIiBvbiBXaW5kb3dzLgojIFRoaXMgcHJvcGVydHkgaXMgb3B0aW9uYWwgaWYgc29uYXIubW9kdWxlcyBpcyBzZXQuIApzb25hci5zb3VyY2VzPS4KICAKIyBFbmNvZGluZyBvZiB0aGUgc291cmNlIGNvZGUuIERlZmF1bHQgaXMgZGVmYXVsdCBzeXN0ZW0gZW5jb2RpbmcKc29uYXIuc291cmNlRW5jb2Rpbmc9VVRGLTgKIyBTZWxlY3QgdGhlIGxhbmd1YWdlIHRvIHVzZSBmb3IgYW5hbHlzaXMgCnNvbmFyLmxhbmd1YWdlPW9wZW5hcGkKYGBgCgpGb3IgZGV0YWlscyBhYm91dCBob3cgdG8gY29uZmlndXJlIFNvbmFyUXViZSBTY2FubmVyIHRvIGFuYWx5emUgeW91ciBwcm9qZWN0cywgc2VlIFt0aGUgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2NzLnNvbmFycXViZS5vcmcvZGlzcGxheS9TQ0FOL0FuYWx5emluZyt3aXRoK1NvbmFyUXViZStTY2FubmVyKS4KCiMjIyBDb25maWd1cmluZyB0aGUgcGx1Z2luCgpUaGUgcGx1Z2luIGF1dG9tYXRpY2FsbHkgc2NhbnMgYWxsIGAueWFtbGAgYW5kIGAuanNvbmAgZmlsZXMgdGhhdCBhcmUgY29tcGF0aWJsZSB3aXRoIHRoZSBPcGVuQVBJIHNwZWMuCgpJcyBjb25zaWRlcmVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBPcGVuQVBJIHYyIHNwZWMgaWYgdGhlIGZpbGUgY29udGFpbnMgdGhlIHJvb3Qga2V5IGBzd2FnZ2VyYCBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSB2MyBpZiBjb250YWlucyBgb3BlbmFwaWAuCgojIyMgUnVubmluZyB0aGUgYW5hbHlzaXMKCiogTWFrZSBzdXJlIHRoZSBTb25hclF1YmUgc2VydmVyIGlzIHJ1bm5pbmcKKiBbR2VuZXJhdGUgYSB0b2tlbl0oaHR0cHM6Ly9kb2NzLnNvbmFycXViZS5vcmcvbGF0ZXN0L3VzZXItZ3VpZGUvdXNlci10b2tlbi8pIHRvIGF1dGhlbnRpY2F0ZSB0byB0aGUgc2VydmVyLCBvciBhc2sgZm9yIG9uZSB0byB5b3VyIGFkbWluaXN0cmF0b3IKKiBXaXRoIGBzb25hci1zY2FubmVyYCBpbiB5b3UgcGF0aCwganVzdCBsYXVuY2ggdGhlIHRvb2wgZnJvbSB0aGUgZGlyZWN0b3J5IHdoZXJlIHlvdSBoYXZlIGNyZWF0ZWQgYHNvbmFyLXByb2plY3QucHJvcGVydGllc2AuCiogTWFrZSBzdXJlIHlvdSBzcGVjaWZ5IHRoZSBzb25hciBzZXJ2ZXIgYW5kIHRva2VuIHdoZW4gbGF1bmNoaW5nIHRoZSBhbmFseXNpcwoKWW91IHNob3VsZCBvYnRhaW4gYW4gb3V0cHV0IHNpbWlsYXIgdG8gdGhhdDoKCmBgYHRleHQKRDpcZ2l0XHRlc3RTb25hcj5zb25hci1zY2FubmVyIC1Ec29uYXIuaG9zdC51cmw9PHlvdXIgU29uYXIgc2VydmVyPiAtRHNvbmFyLmxvZ2luPTxhdXRob3JpemF0aW9uIHRva2VuPgpJTkZPOiAtLS0tLS0tLS0tLS0tICBTY2FuIE9wZW5BUEkgcGx1Z2luIHRlc3RzCklORk86IEJhc2UgZGlyOiBEOlxnaXRcdGVzdFNvbmFyCklORk86IFdvcmtpbmcgZGlyOiBkOlxnaXRcdGVzdFNvbmFyXC5zb25hcgpJTkZPOiBTb3VyY2UgcGF0aHM6IC4KSU5GTzogU291cmNlIGVuY29kaW5nOiBVVEYtOCwgZGVmYXVsdCBsb2NhbGU6IGVuX1VTCklORk86IExvYWQgc2VydmVyIHJ1bGVzCklORk86IExvYWQgc2VydmVyIHJ1bGVzIChkb25lKSB8IHRpbWU9MjI5bXMKSU5GTzogSW5kZXggZmlsZXMKSU5GTzogNCBmaWxlcyBpbmRleGVkCklORk86IFF1YWxpdHkgcHJvZmlsZSBmb3Igb3BlbmFwaTogU29uYXIgd2F5CklORk86IFNlbnNvciBTb25hckphdmFYbWxGaWxlU2Vuc29yIFtqYXZhXQpJTkZPOiBTZW5zb3IgU29uYXJKYXZhWG1sRmlsZVNlbnNvciBbamF2YV0gKGRvbmUpIHwgdGltZT0xbXMKSU5GTzogU2Vuc29yIE9wZW5BUEkgU2Nhbm5lciBTZW5zb3IgW29wZW5hcGldCklORk86IFNlbnNvciBPcGVuQVBJIFNjYW5uZXIgU2Vuc29yIFtvcGVuYXBpXSAoZG9uZSkgfCB0aW1lPTI3MG1zCklORk86IFNlbnNvciBaZXJvIENvdmVyYWdlIFNlbnNvcgpJTkZPOiBTZW5zb3IgWmVybyBDb3ZlcmFnZSBTZW5zb3IgKGRvbmUpIHwgdGltZT04bXMKSU5GTzogTm8gU0NNIHN5c3RlbSB3YXMgZGV0ZWN0ZWQuIFlvdSBjYW4gdXNlIHRoZSAnc29uYXIuc2NtLnByb3ZpZGVyJyBwcm9wZXJ0eSB0byBleHBsaWNpdGx5IHNwZWNpZnkgaXQuCklORk86IENhbGN1bGF0aW5nIENQRCBmb3IgNiBmaWxlcwpJTkZPOiBDUEQgY2FsY3VsYXRpb24gZmluaXNoZWQKSU5GTzogQW5hbHlzaXMgcmVwb3J0IGdlbmVyYXRlZCBpbiAyMTVtcywgZGlyIHNpemU9OTIgS0IKSU5GTzogQW5hbHlzaXMgcmVwb3J0cyBjb21wcmVzc2VkIGluIDM3bXMsIHppcCBzaXplPTE3IEtCCklORk86IEFuYWx5c2lzIHJlcG9ydCB1cGxvYWRlZCBpbiA3NW1zCklORk86IEFOQUxZU0lTIFNVQ0NFU1NGVUwsIHlvdSBjYW4gYnJvd3NlIDx5b3VyIFNvbmFyIHNlcnZlcj4vZGFzaGJvYXJkP2lkPXRlc3QlM0FvcGVuYXBpCklORk86IE5vdGUgdGhhdCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgdXBkYXRlZCBkYXNoYm9hcmQgb25jZSB0aGUgc2VydmVyIGhhcyBwcm9jZXNzZWQgdGhlIHN1Ym1pdHRlZCBhbmFseXNpcyByZXBvcnQKSU5GTzogTW9yZSBhYm91dCB0aGUgcmVwb3J0IHByb2Nlc3NpbmcgYXQgPHlvdXIgU29uYXIgc2VydmVyPi9hcGkvY2UvdGFzaz9pZD1BV1paRTVNZGVoRWFfQ1RNUUEzbQpJTkZPOiBUYXNrIHRvdGFsIHRpbWU6IDMuMzU2IHMKSU5GTzogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklORk86IEVYRUNVVElPTiBTVUNDRVNTCklORk86IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpgYGAKClRoZW4sIGxvZyBpbnRvIHlvdXIgU29uYXJRdWJlIHNlcnZlciBhbmQgZ28gdG8geW91ciBwcm9qZWN0IHRvIHNlZSB0aGUgZm91bmQgdmlvbGF0aW9ucyAoaWYgYW55KS4KCiMjIyBTa2lwcGluZyBydWxlcwoKU29tZXRpbWVzLCBpdCBtYWtlcyBzZW5zZSB0byBkaXNhYmxlIGEgcnVsZSBhbHRvZ2V0aGVyLiBUaGUgcGx1Z2luIGNvbWVzIHdpdGggYSB3YXkgdG8gY29udHJvbCB3aGljaCBydWxlIGlzIGVuYWJsZWQgb24KYSBzcGVjaWZpYyBmaWxlLiBVc2UgaXQgd2l0aCBjYXV0aW9uIGFzIGl0IGlzIGdlbmVyYWxseSBhIGJhZCBwcmFjdGljZSB0byBkaXNhYmxlIGEgcnVsZSBmcm9tIGNvZGUhCgpUaGUgYHgtbm9zb25hcmAgT3BlbkFQSSBleHRlbnNpb24gY29tcGxldGVseSBkaXNhYmxlcyBhIHJ1bGUuIEFkZCBpdCB0byB0aGUgdG9wLWxldmVsIE9wZW5BUEkgZG9jdW1lbnQgdG8gZGlzYWJsZSBhIHJ1bGUKb3IgYSBzZXQgb2YgcnVsZXM6CgpgYGB5YW1sCm9wZW5hcGk6ICIzLjAuMCIKaW5mbzoKICB2ZXJzaW9uOiAxLjAuMAogIHRpdGxlOiBTd2FnZ2VyIFBldHN0b3JlCiAgbGljZW5zZToKICAgIG5hbWU6IE1JVApzZXJ2ZXJzOgogIC0gdXJsOiBodHRwOi8vcGV0c3RvcmUuc3dhZ2dlci5pby92MQp4LW5vc29uYXI6IFsgUnVsZUlkMSwgUnVsZUlkMiBdCmBgYAoKWW91IGNhbiBwYXNzIGVpdGhlciBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmcgdG8gdGhlIGV4dGVuc2lvbi4KClRvIGRpc2FibGUgYSBydWxlIG9ubHkgaW4gYSBzcGVjaWZpYyBBUEkgZWxlbWVudCwgdXNlIHRoZSBgeC1zb25hci1kaXNhYmxlYCBleHRlbnNpb24uIFRvIGVuYWJsZSBhbiBvdGhlcndpc2UgZ2xvYmFsbHkKZGlzYWJsZSBydWxlLCB1c2UgdGhlIGB4LXNvbmFyLWVuYWJsZWAgZXh0ZW5zaW9uLiBUaGV5IGFyZSByZWNvZ25pemVkIGluIGFueSBBUEkgZWxlbWVudCB0aGF0IHN1cHBvcnRzIGV4dGVuc2lvbnMsIGV4Y2VwdApvbiB0aGUgdG9wLWxldmVsIGRvY3VtZW50LgoKYGBgeWFtbApvcGVuYXBpOiAiMy4wLjAiCmluZm86CiAgdmVyc2lvbjogMS4wLjAKICB0aXRsZTogU3dhZ2dlciBQZXRzdG9yZQogIGxpY2Vuc2U6CiAgICBuYW1lOiBNSVQKc2VydmVyczoKICAtIHVybDogaHR0cDovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjEKeC1ub3NvbmFyOiBbIFJ1bGVJZDEsIFJ1bGVJZDIgXQpwYXRoczoKICAvcGV0czoKICAgIGdldDoKICAgICAgIyBUaGlzIHJlLWVuYWJsZXMgUnVsZUlkMSBpbiB0aGlzIG9wZXJhdGlvbiBvbmx5IChpdCBpcyBub3QgaW5oZXJpdGVkIGJ5IGNoaWxkIGVsZW1lbnRzIGxpa2UgdGFncyBvciBwYXJhbWV0ZXJzKQogICAgICB4LXNvbmFyLWVuYWJsZTogUnVsZUlkMQogICAgICBzdW1tYXJ5OiBMaXN0IGFsbCBwZXRzCiAgICAgIG9wZXJhdGlvbklkOiBsaXN0UGV0cwogICAgICB0YWdzOgogICAgICAgIC0gcGV0cwogICAgICBwYXJhbWV0ZXJzOgogICAgICAgIC0gbmFtZTogZmlsdGVyCiAgICAgICAgICBpbjogcXVlcnkKICAgICAgICAgIGRlc2NyaXB0aW9uOiBhdHRyaWJ1dGUgb24gd2hpY2ggdG8gZmlsdGVyCiAgICAgICAgICByZXF1aXJlZDogZmFsc2UKICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAjIFRoaXMgZGlzYWJsZXMgUnVsZUlkMyBsb2NhbGx5IGluIHRoaXMgcGFyYW1ldGVyIChpdCBpcyBub3QgaW5oZXJpdGVkIGJ5IGNoaWxkIGVsZW1lbnRzIGxpa2Ugc2NoZW1hKQogICAgICAgICAgeC1zb25hci1kaXNhYmxlOiBSdWxlSWQzCmBgYAoKQXMgZm9yIGB4LW5vc29uYXJgLCB0aGUgYHgtc29uYXItZGlzYWJsZWAgYW5kIGB4LXNvbmFyLWVuYWJsZWAgZXh0ZW5zaW9ucyBhY2NlcHQgYSBzaW5nbGUgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuCgo8YSBuYW1lPSJ0ZXN0aW5nIj48L2E+CiMjIFRlc3RpbmcKClRvIHJ1biB0ZXN0cyBsb2NhbGx5IGZvbGxvdyB0aGVzZSBpbnN0cnVjdGlvbnMuCgojIyMgQnVpbGQgdGhlIFByb2plY3QgYW5kIFJ1biBVbml0IFRlc3RzCgpUbyBidWlsZCB0aGUgcGx1Z2luIGFuZCBydW4gaXRzIHVuaXQgdGVzdHMsIGV4ZWN1dGUgdGhpcyBjb21tYW5kIGZyb20gdGhlIHByb2plY3QncyByb290IGRpcmVjdG9yeToKCiAgICBtdm4gY2xlYW4gaW5zdGFsbAoKIyMjIEludGVncmF0aW9uIFRlc3RzCgpJbnRlZ3JhdGlvbiB0ZXN0cyBhcmUgcHJvdmlkZWQgd2l0aCB0aGUgcGx1Z2luLiBUbyBpbmNsdWRlIHRoZW0sIHVzZSB0aGUgIml0cyIgcHJvZmlsZToKCiAgICBtdm4gLVBpdHMgY2xlYW4gaW5zdGFsbAoKSWYgeW91IGFyZSBydW5uaW5nIGJlaGluZCBhbiBlbnRlcnByaXNlIHByb3h5LCBzcGVjaWZ5IHRoZSBqYXZhIHByb3h5IG9wdGlvbnMgb24gdGhlIGNvbW1hbmQgbGluZToKCi0gaHR0cC5wcm94eUhvc3QKLSBodHRwLnByb3h5UG9ydAotIGh0dHAucHJveHlVc2VyCi0gaHR0cC5wcm94eVBhc3N3b3JkCi0gaHR0cHMucHJveHlIb3N0Ci0gaHR0cHMucHJveHlQb3J0Ci0gaHR0cHMucHJveHlVc2VyCi0gaHR0cHMucHJveHlQYXNzd29yZAoKIyMjIFBlcmZvcm1pbmcgYSBuZXcgcmVsZWFzZQoKVmFsaWRhdGUgdGhhdCBhbGwgaXMgY29ycmVjdDoKCmBtdm4gY2xlYW4gcGFja2FnZSAtUHJlbGVhc2VgCgpEZXBsb3k6CgpgbXZuIGNsZWFuIGRlcGxveSAtUHJlbGVhc2VgCgojIyDwn5KbIFNwb25zb3JzCjxwIGFsaWduPSJjZW50ZXIiPgoJPGEgaHJlZj0iaHR0cHM6Ly9hcGlhZGRpY3RzLm9yZy8iPgogICAgCTxpbWcgc3JjPSJodHRwczovL2FwaWFkZGljdHMuY2xvdWRhcHBpLm5ldC93ZWIvaW1hZ2UvNDI0OC9MT0dPQ2xvdWRhcHBpMjAyMFZlcnNpb25lcy0wMS5wbmciIGFsdD0iY2xvdWRhcHBpIiB3aWR0aD0iMTUwIi8+CiAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vd3d3LmNvbXVuaWRhZC5tYWRyaWQvc2l0ZXMvZGVmYXVsdC9maWxlcy9zdHlsZXMvYmxvY2tfdGVhc2VyX2ltYWdlL3B1YmxpYy9pbWcvbG9nb3Mtc2ltYm9sb3MvbG9nb19jZW50cmFkb19tZC5wbmc/aXRvaz00clRVaG1jaiIgYWx0PSJtZCIgd2lkdGg9IjE1MCIvPgogICAgICAgIDxpbWcgc3JjPSJodHRwczovL2FwaXF1YWxpdHkuaW8vd3AtY29udGVudC91cGxvYWRzLzIwMjIvMDkvY3JvcHBlZC1sb2dvLWFwaXF1YWxpdHktcHJpbmNpcGFsLTEtMTcweDcwLnBuZyIgaGVpZ2h0ID0gIjc1Ij4KICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hcGlhZGRpY3RzLXdlYi5zMy5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMi8wMy8xNzE1NTczNi9jcm9wcGVkLUFQSUFkZGljdHMtbG9nb3RpcG9fcm9qby5wbmciIGhlaWdodCA9ICI3NSI+Cgk8L2E+CjwvcD4= readmeEtag: '"1a316dfa03327419380fcce3f9f7165795eb4cf7"' readmeLastModified: Thu, 05 Sep 2024 15:43:59 GMT repositoryId: 474063683 description: Evaluation engine for OpenAPI/Swagger API definitions in SonarQube created: '2022-03-25T15:25:42Z' updated: '2025-12-08T23:23:04Z' language: Java archived: false stars: 13 watchers: 3 forks: 1 owner: apiaddicts logo: https://avatars.githubusercontent.com/u/31730093?v=4 license: LGPL-3.0 repoEtag: '"b9e444e4493828565b8a3287759a0a3be4ce8e01af9a10181abb2bef8400295f"' repoLastModified: Mon, 08 Dec 2025 23:23:04 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/llm-studios/swaggerboy v3: true id: e0a696d363aa2760afca627945d4ba39 repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyYm95CgpBbiBBSS1wb3dlcmVkIGNvcGlsb3QgZm9yIEFQSSBkZXNpZ24gYW5kIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBnZW5lcmF0aW9uLiBTd2FnZ2VyYm95IGhlbHBzIHRvIGRlc2lnbiBhbmQgZG9jdW1lbnQgQVBJcyB0aHJvdWdoIGFuIGludGVyYWN0aXZlLCBjb252ZXJzYXRpb24tYmFzZWQgYXBwcm9hY2guCgojIyBRdWljayBTdGFydAoKYGBgdHlwZXNjcmlwdApucHggc3dhZ2dlcmJveQpgYGAKCiMjIEZlYXR1cmVzCgotIPCfpJYgSW50ZXJhY3RpdmUgQVBJIGRlc2lnbiB0aHJvdWdoIG5hdHVyYWwgbGFuZ3VhZ2UgY29udmVyc2F0aW9ucwotIPCfk50gT3BlbkFQSSAzLjEuMCBzcGVjaWZpY2F0aW9uIGdlbmVyYXRpb24KLSDwn5KhIFByb2FjdGl2ZSBmZWF0dXJlIHJlY29tbWVuZGF0aW9ucwoKIyMgS2V5IENhcGFiaWxpdGllcyBvZiBTd2FnZ2VyYm95CgotIEd1aWRlcyB1c2VycyB0aHJvdWdoIGhpZ2gtbGV2ZWwgQVBJIGRlc2lnbgotIENyZWF0ZXMgZGV0YWlsZWQgc2NoZW1hIGNvbXBvbmVudHMgYW5kIGRhdGEgbW9kZWxzCi0gRXN0YWJsaXNoZXMgcmV1c2FibGUgY29tcG9uZW50cyAocmVzcG9uc2VzLCBwYXJhbWV0ZXJzLCBleGFtcGxlcykKLSBWYWxpZGF0ZXMgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucwotIEV4dGVuZHMgZW5kcG9pbnQgb3BlcmF0aW9ucyB3aXRoIGltcGxlbWVudGF0aW9uIGRldGFpbHMKCiMjIEJ1aWx0IFdpdGgKCi0gW09wZW5BUEkgU3BlY2lmaWNhdGlvbiAzLjEuMF0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykKLSBbT3BlbkFJIGZvciBMTE0tYmFzZWQgY29udmVyc2F0aW9uYWwgQUldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYWkpCi0gW1ZlcmNlbCBBSSBTREtdKGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvYWkpCi0gW1N0b3BsaWdodCBlbGVtZW50cyBmb3IgaW50ZXJhY3RpdmUgT3BlbkFQSV0oaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvL2VsZW1lbnRzKQotIFtTaGFkY24vdWldKGh0dHBzOi8vZ2l0aHViLmNvbS9zaGFkY24tdWkvdWkpCi0gW2Fzc2lzdGFudC11aV0oaHR0cHM6Ly9naXRodWIuY29tL1lvbm9tL2Fzc2lzdGFudC11aSkKLSBbTmV4dC5qc10oaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzKQotIFtvcGVuYXBpMy10c10oaHR0cHM6Ly9naXRodWIuY29tL21ldGFkZXZwcm8vb3BlbmFwaTMtdHMpCgpodHRwczovL2xsbXN0dWRpb3MuZGUvCgojIyBMaWNlbnNlCgpTd2FnZ2VyYm95IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4K readmeEtag: '"9f72d0adfa966c85234d4df88d70ad041241122f"' readmeLastModified: Mon, 09 Dec 2024 12:28:56 GMT repositoryId: 886914571 description: AI-Copilot for OpenAPI Description Documents created: '2024-11-11T20:49:34Z' updated: '2025-05-31T15:39:58Z' language: TypeScript archived: false stars: 7 watchers: 1 forks: 0 owner: LLM-Studios logo: https://avatars.githubusercontent.com/u/151792168?v=4 license: MIT repoEtag: '"9257a2b453019de9adcc75c775e459c4b2f4ed825a7f64a648fc30d6b80ed874"' repoLastModified: Sat, 31 May 2025 15:39:58 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/istreamlabs/rest-api-lint v3: true repositoryMetadata: base64Readme: >- IyBSRVNUIEFQSSBMaW50aW5nIEFjdGlvbgoKWyFbLmdpdGh1Yi93b3JrZmxvd3MvY2kueWFtbF0oaHR0cHM6Ly9naXRodWIuY29tL2lzdHJlYW1sYWJzL3Jlc3QtYXBpLWxpbnQvd29ya2Zsb3dzLy5naXRodWIvd29ya2Zsb3dzL2NpLnlhbWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2lzdHJlYW1sYWJzL3Jlc3QtYXBpLWxpbnQvYWN0aW9ucz9xdWVyeT13b3JrZmxvdyUzQS5naXRodWIlMkZ3b3JrZmxvd3MlMkZjaS55YW1sKSBbIVtEb2NrZXIgQ2xvdWQgQnVpbGQgU3RhdHVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2RvY2tlci9jbG91ZC9idWlsZC9pc3RyZWFtbGFicy9yZXN0LWFwaS1saW50KV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2lzdHJlYW1sYWJzL3Jlc3QtYXBpLWxpbnQpIFshW0RvY2tlciBQdWxsc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvcHVsbHMvaXN0cmVhbWxhYnMvcmVzdC1hcGktbGludCldKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9pc3RyZWFtbGFicy9yZXN0LWFwaS1saW50KQoKQSBEb2NrZXIgaW1hZ2Ugd2l0aCBvcGluaW9uYXRlZCBSRVNUIEFQSSBsaW50aW5nIGZvciBpU3RyZWFtUGxhbmV0LiBTdXBwb3J0cyBHaXRIdWIgQWN0aW9ucy4KClRoaXMgaXMgYnVpbHQgdXNpbmcgW1N0b3BsaWdodCdzIFNwZWN0cmFsXShodHRwczovL3N0b3BsaWdodC5pby9vcGVuLXNvdXJjZS9zcGVjdHJhbCkuIFRoZSBjdXN0b20gcnVsZXNldCBpcyBkZWZpbmVkIGluIFtpc3AtcnVsZXMueWFtbF0oaHR0cHM6Ly9naXRodWIuY29tL2lzdHJlYW1sYWJzL3Jlc3QtYXBpLWxpbnQvYmxvYi9tYXN0ZXIvaXNwLXJ1bGVzLnlhbWwpLCB3aGVyZSB5b3UgY2FuIGZpbmQgdGhlIGRlc2NyaXB0aW9ucyBhbmQgcnVsZSBuYW1lcyAoaWYgeW91IHdhbnQgdG8gZGlzYWJsZSBpbmRpdmlkdWFsIHJ1bGVzKS4KCiMjIFVzYWdlCgpUaGVyZSBhcmUgdHdvIHJlY29tbWVuZGVkIHdheXMgdG8gdXNlIHRoaXM6CgoxLiBHaXRIdWIgQWN0aW9ucwoyLiBBbnkgc3lzdGVtIHRoYXQgc3VwcG9ydHMgRG9ja2VyIGltYWdlcwoKIyMjIEdpdEh1YiBBY3Rpb25zIEV4YW1wbGUKClNldCB1cCBhIHdvcmtmbG93IHRoYXQgdXNlcyB0aGlzIGltYWdlIHRvIGRvIEFQSSBsaW50aW5nIGFuZCB5b3UgYXJlIGRvbmU6CgpgYGB5YW1sCm9uOiBbcHVzaF0KCmpvYnM6CiAgYnVpbGQ6CiAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CiAgICBuYW1lOiBCdWlsZCAmIFRlc3QKICAgIHN0ZXBzOgogICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjEKICAgICAgLSBuYW1lOiBBUEkgTGludAogICAgICAgIHVzZXM6IGlzdHJlYW1sYWJzL3Jlc3QtYXBpLWxpbnRAbWFzdGVyCiAgICAgICAgd2l0aDoKICAgICAgICAgIGZpbGVuYW1lOiBwYXRoL3RvL29wZW5hcGkueWFtbApgYGAKClRoZSBwYXRoIHlvdSBwYXNzIHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgY2hlY2tvdXQgZGlyZWN0b3J5LCB3aGljaCBpcyBhdXRvbWF0aWNhbGx5IG1vdW50ZWQgaW4gdGhlIGNvbnRhaW5lciBhbmQgYmVjb21lcyB0aGUgd29ya2luZyBkaXJlY3RvcnkuCgojIyMgRG9ja2VyIEV4YW1wbGUKCldoaWxlIHNpbWlsYXIgdG8gdGhlIGFib3ZlLCB5b3Ugd2lsbCBuZWVkIHRvIGRvIGFuIGV4dHJhIHN0ZXAgd2hlbiB1c2luZyBEb2NrZXIgZGlyZWN0bHkuIFlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoZSB3b3JraW5nIGRpcmVjdG9yeSBnZXRzIG1vdW50ZWQgcHJvcGVybHkgaW50byB0aGUgY29udGFpbmVyLgoKWW91IGNhbiBlaXRoZXIgdXNlIHRoZSBwdWJsaXNoZWQgW2Bpc3RyZWFtbGFicy9yZXN0LWFwaS1saW50YF0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2lzdHJlYW1sYWJzL3Jlc3QtYXBpLWxpbnQpIGNvbnRhaW5lciBvciBidWlsZCBpdCB5b3Vyc2VsZiBsb2NhbGx5LgoKYGBgc2gKIyBDcmVhdGUgdGhlIGltYWdlLgokIGRvY2tlciBidWlsZCAtdCByZXN0LWFwaS1saW50IC4KCiMgTW91bnQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8gYC90bXBgIGluIHRoZSBjb250YWluZXIgYW5kIHJ1biBsaW50aW5nLgokIGRvY2tlciBydW4gLWl0IC12ICQocHdkKTovdG1wIHJlc3QtYXBpLWxpbnQ6bGF0ZXN0IC90bXAvbXktb3BlbmFwaS55YW1sCgojIElmIHlvdSBoYXZlIGEgY3VzdG9tIGAuc3BlY3RyYWwueWFtbGAgd2l0aCBvdmVycmlkZXM6CiQgZG9ja2VyIHJ1biAtaXQgLXcgL3dvcmtzcGFjZSAtdiAkKHB3ZCk6L3dvcmtzcGFjZSByZXN0LWFwaS1saW50OmxhdGVzdCBvcGVuYXBpLnlhbWwKYGBgCgpUaGUgY29tbWFuZCB3aWxsIHJldHVybiBhIGAwYCBvbiBzdWNjZXNzIGFuZCBhIGAxYCBpZiBhbnkgZXJyb3JzIGFyZSBmb3VuZC4gV2FybmluZ3MgZG8gbm90IHRyaWdnZXIgYSBmYWlsdXJlLgoKIyMjIEV4Y2VwdGlvbnMgJiBPdmVycmlkZXMKCldoZW4gW3N0b3BsaWdodGlvL3NwZWN0cmFsIzc0N10oaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvL3NwZWN0cmFsL2lzc3Vlcy83NDcpIGdldHMgZml4ZWQgeW91IHdpbGwgYmUgYWJsZSB0byBwcm92aWRlIGluZGl2aWR1YWwgZXhjZXB0aW9ucyBvbiBhIGNhc2UtYnktY2FzZSBiYXNpcy4KClRvIGRpc2FibGUgYW4gZW50aXJlIHJ1bGUsIGUuZy4gdG8gc3VwcG9ydCBhIGxlZ2FjeSBBUEksIHlvdSBjYW4gcHJvdmlkZSB5b3VyIG93biBgLnNwZWN0cmFsLnlhbWxgIGZpbGUgaW4gdGhlIHJvb3Qgb2YgeW91ciByZXBvIHdoaWNoIHNldHMgc29tZSBydWxlcyB0byBgZmFsc2VgLiBOb3RlIHRoYXQgdGhpcyBkaXNhYmxlcyB0aGUgcnVsZSBmb3IgdGhlIF9lbnRpcmUgZmlsZV86CgpgYGB5YW1sCnJ1bGVzOgogIGlzbzg2MDE6IGZhbHNlCiAgc2VydmVyLXZlcnNpb246IGZhbHNlCmBgYAoKSXQncyBhbHNvIHBvc3NpYmxlIHRvIHNldCBpdCB0byBgd2FybmAgb3IgYGluZm9gLgoKVGhlIGBleHRlbmRzYCBmaWVsZCBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIChvciBhcHBlbmRlZCB0bykgYnkgdGhlIGxpbnRlciBzY3JpcHQgdG8gaW5qZWN0IHRoZSBpU1AgcnVsZXNldCBpbnRvIHlvdXIgY29uZmlnLgoKIyMjIExvY2FsIERldmVsb3BtZW50CgoxLiBJbnN0YWxsIGBub2RlIDEzLjE0LjBgIGxvY2FsbHkuCjIuIFJ1biBgbnBtIHJ1biBidWlsZGAgdG8gY29tcGlsZSB0aGUgYGlzcC1mdW5jdGlvbnNgLgozLiBSdW4gYG5vZGUgLi9lbnRyeXBvaW50LmpzIDxQQVRIX1RPX09QRU5BUElfU1BFQz5gIHRvIHJ1biB0aGUgbGludGVyLgoKVGhlIGBidWlsZGAgY29tbWFuZCBtYXkgbmVlZCB0byBiZSByZS1ydW4gdG8gcGljayB1cCBjaGFuZ2VzIG1hZGUgdG8gc29tZSBvZiB0aGUgYGlzcC1mdW5jdGlvbnNgLgoKIyMjIyBUZXN0cwoKYGBgc2gKIyBDb21waWxlIHRoZSBpc3AtZnVuY3Rpb25zCm5wbSBydW4gYnVpbGQKCiMgUnVuIHRlc3QKbnBtIHJ1biB0ZXN0CmBgYAoKIyMgTGljZW5zZQoKQ29weXJpZ2h0IMKpIDIwMjAgaVN0cmVhbVBsYW5ldCBDby4sIExMQwoKTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K readmeEtag: '"2558795008088634d324e2464f3dc23c9adfd971"' readmeLastModified: Tue, 27 Jun 2023 17:23:32 GMT repositoryId: 237052565 description: REST API linting using OpenAPI and Spectral created: '2020-01-29T18:23:40Z' updated: '2025-11-07T09:47:26Z' language: JavaScript archived: false stars: 6 watchers: 6 forks: 2 owner: istreamlabs logo: https://avatars.githubusercontent.com/u/30184888?v=4 license: Apache-2.0 repoEtag: '"6d44ed1f0e896b2c29c256c5af929b90375463b64ac4932932d4152bde688215"' repoLastModified: Fri, 07 Nov 2025 09:47:26 GMT foundInMaster: true category: - Description Validators - Server Implementations id: 1794143fa313ceb332ca759e0105bde5 - source: openapi3 tags repository: https://github.com/danielgtaylor/apibin v3: true repositoryMetadata: base64Readme: >- IyBBUEkgQmluCgpbIVtIVU1BIFBvd2VyZWRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvUG93ZXJlZCUyMEJ5LUh1bWEtZmY1Zjg3KV0oaHR0cHM6Ly9odW1hLnJvY2tzLykgWyFbV29ya3MgV2l0aCBSZXN0aXNoXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1dvcmtzJTIwV2l0aC1SZXN0aXNoLWZmNWY4NyldKGh0dHBzOi8vcmVzdC5zaC8pIFshW0dpdEh1Yl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9kYW5pZWxndGF5bG9yL2FwaWJpbildKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL2FwaWJpbikKClByb3ZpZGVzIGEgc2ltcGxlLCBtb2Rlcm4sIGV4YW1wbGUgQVBJIGZvciBkZW1vaW5nIG9yIGRlYnVnZ2luZyB2YXJpb3VzIGZlYXR1cmVzLCBpbmNsdWRpbmc6CgotIEhUVFAsIEhUVFBTIChUTFMpLCBhbmQgW0hUVFAvMl0oaHR0cHM6Ly9odHRwMi5naXRodWIuaW8vKQotIFtPcGVuQVBJIDNdKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pICYgW0pTT04gU2NoZW1hXShodHRwczovL2pzb24tc2NoZW1hLm9yZy8pCi0gQ2xpZW50LWRyaXZlbiBjb250ZW50IG5lZ290aWF0aW9uCiAgLSBgZ3ppcGAgJiBgYnJgIGNvbnRlbnQgZW5jb2RpbmcgZm9yIGxhcmdlIHJlc3BvbnNlcwogIC0gYEpTT05gLCBgWUFNTGAsICYgYENCT1JgIGZvcm1hdHMKLSBDb25kaXRpb25hbCByZXF1ZXN0cyB2aWEgYEVUYWdgIG9yIGBMYXN0TW9kaWZpZWRgCi0gRWNobyBiYWNrIHJlcXVlc3QgaW5mbyB0byBoZWxwIGRlYnVnZ2luZwotIENhY2hlZCByZXNwb25zZXMgdG8gdGVzdCBwcm94eSAmIGNsaWVudC1zaWRlIGNhY2hpbmcKLSBFeGFtcGxlIHN0cnVjdHVyZWQgZGF0YQogIC0gU2hvd3Mgb2ZmIGBvYmplY3RgLCBgYXJyYXlgLCBgc3RyaW5nYCwgYGRhdGVgLCBgYmluYXJ5YCwgYGludGVnZXJgLCBgbnVtYmVyYCwgYGJvb2xlYW5gLCBldGMuCi0gQSBzYW1wbGUgQ1JVRCBBUEkgZm9yIGJvb2tzICYgcmV2aWV3cyB3aXRoIHNpbXVsYXRlZCBzZXJ2ZXItc2lkZSB1cGRhdGVzCi0gSW1hZ2UgcmVzcG9uc2VzIGBKUEVHYCwgYFdFQlBgLCBgR0lGYCwgYFBOR2AgJiBgSEVJQ2AKLSBbUkZDNzgwN10oaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM3ODA3KSBzdHJ1Y3R1cmVkIGVycm9ycwoKVGhpcyBwcm9qZWN0IGlzIG9wZW4gc291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9hcGliaW4KCllvdSBjYW4gcnVuIGl0IGxvY2FseSB2aWEgRG9ja2VyOgoKYGBgc2gKIyBTdGFydCB0aGUgc2VydmVyCiQgZG9ja2VyIHJ1biAtcCA4ODg4Ojg4ODggZ2hjci5pby9kYW5pZWxndGF5bG9yL2FwaWJpbjpsYXRlc3QKCiMgTWFrZSBhIHJlcXVlc3QKJCByZXN0aXNoIDo4ODg4L3R5cGVzCmBgYAo= readmeEtag: '"e0501c1769bc643849d54d79c1d29b1cf8e4730b"' readmeLastModified: Sun, 04 Feb 2024 17:41:03 GMT repositoryId: 484840594 description: Example API with modern features created: '2022-04-23T19:39:15Z' updated: '2025-09-09T03:26:21Z' language: Go archived: false stars: 7 watchers: 1 forks: 1 owner: danielgtaylor logo: https://avatars.githubusercontent.com/u/106826?v=4 license: MIT repoEtag: '"3940f323889ba69563d6c31b468f134c9368e8ee2ba678bdfe4688123b3c3fc6"' repoLastModified: Tue, 09 Sep 2025 03:26:21 GMT foundInMaster: true category: - Documentation - Server Implementations id: c41c5a3a517f2769a0b3c04fad395fbd - source: openapi3 tags repository: https://github.com/cchacin/microgen v3: true repositoryMetadata: base64Readme: >- IVtFY2xpcHNlIE1pY3JvUHJvZmlsZSBsb2dvXShpbWFnZXMvbWljcm9wcm9maWxlLWxvZ28ucG5nKQohW0VjbGlwc2UgSmFrYXJ0YUVFIGxvZ29dKGltYWdlcy9qYWthcnRhZWUtbG9nby5wbmcpCgojIE1pY3JvR2VuCgogTWljcm9HZW4gaXMgYSB0b29sIHRvIGdlbmVyYXRlIGphdmEgY29kZSBiYXNlZCBvbiBhbiBbT3BlbkFQSV0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQpIFNwZWMgZmlsZS4KCiMjIEZlYXR1cmVzCgotIFNlcnZlciBBUEkgQ29udHJhY3QgKEpBWC1SUykKLSBSZXF1ZXN0IGFuZCBSZXNwb25zZSBqYXZhIG9iamVjdHMKICAtIElubmVyIHN0YXRpYyBgQnVpbGRlcmAgY2xhc3MgYW5kIHV0aWxpdHkgbWV0aG9kcwotIEVudW0gdmFsdWUgY2xhc3NlcwotIGBAQmVhblBhcmFtc2AgZm9yIHJlcXVlc3QgcGFyYW1ldGVycwotIE1hdmVuIEFyY2hldHlwZSB0byBxdWljayBzdGFydCBhIEpha2FydGFFRSArIE1pY3JvUHJvZmlsZSBhcHBsaWNhdGlvbgotIERvY2tlcmZpbGUocykgd2l0aCBhIEpha2FydGFFRSArIE1pY3JvUHJvZmlsZSBhcHBsaWNhdGlvbiBzZXJ2ZXIKCiMjIFVzZXIgR3VpZGUKCkdpdmVuIGFuIE9wZW5BUEkgU3BlYyBmaWxlOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogIGRlc2NyaXB0aW9uOiBUaGlzIGlzIGEgc2FtcGxlIHNlcnZlciBQZXRzdG9yZSBzZXJ2ZXIuCiAgdmVyc2lvbjogMS4wLjAKICB0aXRsZTogU3dhZ2dlciBQZXRzdG9yZQp0YWdzOgogIC0gbmFtZTogcGV0CiAgICBkZXNjcmlwdGlvbjogRXZlcnl0aGluZyBhYm91dCB5b3VyIFBldHMKcGF0aHM6CiAgL3BldDoKICAgIHBvc3Q6CiAgICAgIHRhZ3M6CiAgICAgICAgLSBwZXQKICAgICAgc3VtbWFyeTogQWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmUKICAgICAgZGVzY3JpcHRpb246ICcnCiAgICAgIG9wZXJhdGlvbklkOiBhZGRQZXQKICAgICAgcmVzcG9uc2VzOgogICAgICAgICc0MDUnOgogICAgICAgICAgZGVzY3JpcHRpb246IEludmFsaWQgaW5wdXQKICAgICAgc2VjdXJpdHk6CiAgICAgICAgLSBwZXRzdG9yZV9hdXRoOgogICAgICAgICAgICAtICd3cml0ZTpwZXRzJwogICAgICAgICAgICAtICdyZWFkOnBldHMnCiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvcmVxdWVzdEJvZGllcy9QZXQnCmNvbXBvbmVudHM6CiAgcmVxdWVzdEJvZGllczoKICAgIFBldDoKICAgICAgY29udGVudDoKICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0JwogICAgICAgIGFwcGxpY2F0aW9uL3htbDoKICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BldCcKICAgICAgZGVzY3JpcHRpb246IFBldCBvYmplY3QgdGhhdCBuZWVkcyB0byBiZSBhZGRlZCB0byB0aGUgc3RvcmUKICAgICAgcmVxdWlyZWQ6IHRydWUKICBzY2hlbWFzOgogICAgUGV0OgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBuYW1lCiAgICAgICAgLSBwaG90b1VybHMKICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIGZvcm1hdDogaW50NjQKICAgICAgICBjYXRlZ29yeToKICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9DYXRlZ29yeScKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiBkb2dnaWUKICAgICAgICBwaG90b1VybHM6CiAgICAgICAgICB0eXBlOiBhcnJheQogICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIHRhZ3M6CiAgICAgICAgICB0eXBlOiBhcnJheQogICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9UYWcnCiAgICAgICAgc3RhdHVzOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBkZXNjcmlwdGlvbjogcGV0IHN0YXR1cyBpbiB0aGUgc3RvcmUKICAgICAgICAgIGVudW06CiAgICAgICAgICAgIC0gYXZhaWxhYmxlCiAgICAgICAgICAgIC0gcGVuZGluZwogICAgICAgICAgICAtIHNvbGQKYGBgCgpNaWNyb0dlbiB3aWxsIGdlbmVyYXRlIHRoZSBmb2xsb3dpbmc6CgojIyMjIFNlcnZlciBBUEkgQ29udHJhY3QgKEpBWC1SUykKCkpBWC1SUyBpbnRlcmZhY2Ugd2l0aCBhbGwgdGhlIGFubm90YXRpb25zIG5lY2Vzc2FyeSBhbm5vdGF0aW9ucwoKYGBgamF2YQpAamF2YXguYW5ub3RhdGlvbi5HZW5lcmF0ZWQodmFsdWUgPSAib3JnLm9wZW5hcGl0b29scy5jb2RlZ2VuLmxhbmd1YWdlcy5NaWNyb0dlbiIpCnB1YmxpYyBpbnRlcmZhY2UgUGV0QXBpIHsKICAvKioKICAgKiBBZGQgYSBuZXcgcGV0IHRvIHRoZSBzdG9yZQogICAqCiAgICogQHBhcmFtIHBldCBQZXQgb2JqZWN0IHRoYXQgbmVlZHMgdG8gYmUgYWRkZWQgdG8gdGhlIHN0b3JlIChyZXF1aXJlZCkKICAgKiBAcmV0dXJuIHtAY29kZSBqYXZhLnV0aWwuY29uY3VycmVudC5Db21wbGV0aW9uU3RhZ2U8amF2YXgud3MucnMuY29yZS5SZXNwb25zZT59CiAgICovCiAgQGphdmF4LndzLnJzLlBPU1QKICBAamF2YXgud3MucnMuUGF0aCgicGV0IikKICBAamF2YXgud3MucnMuQ29uc3VtZXMoeyJhcHBsaWNhdGlvbi9qc29uIiwgImFwcGxpY2F0aW9uL3htbCJ9KQogIGphdmEudXRpbC5jb25jdXJyZW50LkNvbXBsZXRpb25TdGFnZTxqYXZheC53cy5ycy5jb3JlLlJlc3BvbnNlPiBhZGRQZXQoCiAgICAgICAgICBAamF2YXgudmFsaWRhdGlvbi5jb25zdHJhaW50cy5Ob3ROdWxsIEBqYXZheC52YWxpZGF0aW9uLlZhbGlkIFBldCBwZXQKICApIHRocm93cyBqYXZheC53cy5ycy5XZWJBcHBsaWNhdGlvbkV4Y2VwdGlvbjsKICAuCiAgLgogIC4KfQpgYGAKCiMjIyBgQEJlYW5QYXJhbXNgIGZvciByZXF1ZXN0IHBhcmFtZXRlcnMKCmBAQmVhblBhcmFtc2Agd3JhcHBlciBjbGFzcyB0byBtaW5pbWl6ZSB0aGUgYnJlYWtpbmcgY2hhbmdlcyBpbiB0aGUgSmF2YSBBUEkgY29udHJhY3QsIHRoaXMgaW5jbHVkZXM6CiAgLSBgQFBhdGhQYXJhbWAncwogIC0gYEBRdWVyeVBhcmFtYCdzCiAgLSBgQEZvcm1QYXJhbWAncwogIC0gYEBIZWFkZXJQYXJhbWAncwogIC0gYEBDb29raWVQYXJhbWAncwoKQnV0IGFsc28gdGhlIGFkZGl0aW9uYWw6CgogIC0gYEBDb250ZXh0IFVyaUluZm9gCiAgLSBgQENvbnRleHQgSHR0cEhlYWRlcnNgCgpgYGBqYXZhCnB1YmxpYyBjbGFzcyBBZGRQZXRQYXJhbXMgewogICAgQGphdmF4LndzLnJzLmNvcmUuQ29udGV4dAogICAgcHVibGljIGphdmF4LndzLnJzLmNvcmUuSHR0cEhlYWRlcnMgY29yZUh0dHBIZWFkZXJzOwoKICAgIHB1YmxpYyBBZGRQZXRQYXJhbXMgY29yZUh0dHBIZWFkZXJzKAogICAgICAgICAgICBmaW5hbCBqYXZheC53cy5ycy5jb3JlLkh0dHBIZWFkZXJzIGNvcmVIdHRwSGVhZGVycwogICAgKSB7CiAgICAgICAgdGhpcy5jb3JlSHR0cEhlYWRlcnMgPSBjb3JlSHR0cEhlYWRlcnM7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogICAgQGphdmF4LndzLnJzLmNvcmUuQ29udGV4dAogICAgcHVibGljIGphdmF4LndzLnJzLmNvcmUuVXJpSW5mbyBjb3JlVXJpSW5mbzsKCiAgICBwdWJsaWMgQWRkUGV0UGFyYW1zIGNvcmVVcmlJbmZvKAogICAgICAgICAgICBmaW5hbCBqYXZheC53cy5ycy5jb3JlLlVyaUluZm8gY29yZVVyaUluZm8KICAgICkgewogICAgICAgIHRoaXMuY29yZVVyaUluZm8gPSBjb3JlVXJpSW5mbzsKICAgICAgICByZXR1cm4gdGhpczsKICAgIH0KfQpgYGAKCiMjIyBSZXF1ZXN0IGFuZCBSZXNwb25zZSBvYmplY3RzOgoKR2VuZXJhdGUgdGhlIFJlcXVlc3QgYW5kIFJlc3BvbnNlIGphdmEgb2JqZWN0cyB3aXRoIHRoZSBgSnNvbi1iYCBhbm5vdGF0aW9uczoKICAtIGBASnNvbmJQcm9wZXJ0eWAKICAtIGBASnNvbmJDcmVhdG9yYAogIC0gYEBKc29uYlByb3BlcnR5T3JkZXJgCiAgLSBgdG9TdHJpbmcoKWAKICAtIGBlcXVhbHNgCiAgLSBgaGFzaENvZGVgCiAgLSBJbm5lciBzdGF0aWMgYEJ1aWxkZXJgIGNsYXNzIGFuZCB1dGlsaXR5IG1ldGhvZHMKCiAgQ09NSU5HIFNPT046IFVzaW5nIGltbXV0YWJsZXMub3JnIGxpYnJhcnkKCiAgYGBgamF2YQogIC8qKgogICAqIFBldAogICAqLwogIEBqYXZheC5qc29uLmJpbmQuYW5ub3RhdGlvbi5Kc29uYlByb3BlcnR5T3JkZXIoewogICAgUGV0LkpTT05fUFJPUEVSVFlfSUQsCiAgICBQZXQuSlNPTl9QUk9QRVJUWV9DQVRFR09SWSwKICAgIFBldC5KU09OX1BST1BFUlRZX05BTUUsCiAgICBQZXQuSlNPTl9QUk9QRVJUWV9QSE9UT19VUkxTLAogICAgUGV0LkpTT05fUFJPUEVSVFlfVEFHUywKICAgIFBldC5KU09OX1BST1BFUlRZX1NUQVRVUwogIH0pCiAgQGphdmF4LmFubm90YXRpb24uR2VuZXJhdGVkKHZhbHVlID0gIm9yZy5vcGVuYXBpdG9vbHMuY29kZWdlbi5sYW5ndWFnZXMuTWljcm9HZW4iKQogIEBpby5xdWFya3VzLnJ1bnRpbWUuYW5ub3RhdGlvbnMuUmVnaXN0ZXJGb3JSZWZsZWN0aW9uCiAgcHVibGljIGZpbmFsIGNsYXNzIFBldCB7CiAgICAgIHByaXZhdGUgZmluYWwgamF2YS51dGlsLk9wdGlvbmFsTG9uZyBpZDsKICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSlNPTl9QUk9QRVJUWV9JRCA9ICJpZCI7CgogICAgICBAamF2YXgudmFsaWRhdGlvbi5WYWxpZAogICAgICBwcml2YXRlIGZpbmFsIGphdmEudXRpbC5PcHRpb25hbDxDYXRlZ29yeT4gY2F0ZWdvcnk7CiAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEpTT05fUFJPUEVSVFlfQ0FURUdPUlkgPSAiY2F0ZWdvcnkiOwoKICAgICAgQGphdmF4LnZhbGlkYXRpb24uY29uc3RyYWludHMuTm90TnVsbAogICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBuYW1lOwogICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBKU09OX1BST1BFUlRZX05BTUUgPSAibmFtZSI7CgogICAgICBAamF2YXgudmFsaWRhdGlvbi5jb25zdHJhaW50cy5Ob3ROdWxsCiAgICAgIHByaXZhdGUgZmluYWwgamF2YS51dGlsLkxpc3Q8U3RyaW5nPiBwaG90b1VybHM7CiAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEpTT05fUFJPUEVSVFlfUEhPVE9fVVJMUyA9ICJwaG90b1VybHMiOwoKICAgICAgQGphdmF4LnZhbGlkYXRpb24uVmFsaWQKICAgICAgcHJpdmF0ZSBmaW5hbCBqYXZhLnV0aWwuT3B0aW9uYWw8amF2YS51dGlsLkxpc3Q8VGFnPj4gdGFnczsKICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSlNPTl9QUk9QRVJUWV9UQUdTID0gInRhZ3MiOwoKICAgICAgcHJpdmF0ZSBmaW5hbCBTdGF0dXNFbnVtIHN0YXR1czsKICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSlNPTl9QUk9QRVJUWV9TVEFUVVMgPSAic3RhdHVzIjsKCiAgICAgIEBqYXZheC5qc29uLmJpbmQuYW5ub3RhdGlvbi5Kc29uYkNyZWF0b3IKICAgICAgcHVibGljIFBldCgKICAgICAgICAgIEBqYXZheC5qc29uLmJpbmQuYW5ub3RhdGlvbi5Kc29uYlByb3BlcnR5KCJpZCIpCiAgICAgICAgICBmaW5hbCBqYXZhLnV0aWwuT3B0aW9uYWxMb25nIGlkLAogICAgICAgICAgQGphdmF4Lmpzb24uYmluZC5hbm5vdGF0aW9uLkpzb25iUHJvcGVydHkoImNhdGVnb3J5IikKICAgICAgICAgIGZpbmFsIGphdmEudXRpbC5PcHRpb25hbDxDYXRlZ29yeT4gY2F0ZWdvcnksCiAgICAgICAgICBAamF2YXguanNvbi5iaW5kLmFubm90YXRpb24uSnNvbmJQcm9wZXJ0eSgibmFtZSIpCiAgICAgICAgICBmaW5hbCBTdHJpbmcgbmFtZSwKICAgICAgICAgIEBqYXZheC5qc29uLmJpbmQuYW5ub3RhdGlvbi5Kc29uYlByb3BlcnR5KCJwaG90b1VybHMiKQogICAgICAgICAgZmluYWwgamF2YS51dGlsLkxpc3Q8U3RyaW5nPiBwaG90b1VybHMsCiAgICAgICAgICBAamF2YXguanNvbi5iaW5kLmFubm90YXRpb24uSnNvbmJQcm9wZXJ0eSgidGFncyIpCiAgICAgICAgICBmaW5hbCBqYXZhLnV0aWwuT3B0aW9uYWw8amF2YS51dGlsLkxpc3Q8VGFnPj4gdGFncywKICAgICAgICAgIEBqYXZheC5qc29uLmJpbmQuYW5ub3RhdGlvbi5Kc29uYlByb3BlcnR5KCJzdGF0dXMiKQogICAgICAgICAgZmluYWwgU3RhdHVzRW51bSBzdGF0dXMKICAgICkgewogICAgICAgIHRoaXMuaWQgPSBpZDsKICAgICAgICB0aGlzLmNhdGVnb3J5ID0gY2F0ZWdvcnk7CiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKICAgICAgICB0aGlzLnBob3RvVXJscyA9IHBob3RvVXJsczsKICAgICAgICB0aGlzLnRhZ3MgPSB0YWdzOwogICAgICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzOwogICAgfQoKICAgIC8vIGdldHRlciBvbWl0dGVkCiAgICAvLyBtb3JlIGRldGFpbHMgZXhwbGFpbmVkIGJlbG93CiAgfQogIGBgYAoKIyMjIyBJbm5lciBzdGF0aWMgZmFjdG9yeSBidWlsZGVyIHRvIG1ha2UgZWFzaWVyIHRoZSBpbnN0YW50aWF0aW9uOgoKICBgYGBqYXZhCiAgcHVibGljIHN0YXRpYyBCdWlsZGVyIGJ1aWxkZXIoKSB7CiAgICAgIHJldHVybiBCdWlsZGVyLmNyZWF0ZSgpOwogIH0KCiAgcHVibGljIHN0YXRpYyBmaW5hbCBjbGFzcyBCdWlsZGVyIHsKICAgICAgcHJpdmF0ZSBqYXZhLnV0aWwuT3B0aW9uYWxMb25nICAgICAgICAgICAgICAgICAgaWQ7CiAgICAgIHByaXZhdGUgamF2YS51dGlsLk9wdGlvbmFsPENhdGVnb3J5PiAgICAgICAgICAgIGNhdGVnb3J5OwogICAgICBwcml2YXRlIFN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOwogICAgICBwcml2YXRlIGphdmEudXRpbC5MaXN0PFN0cmluZz4gICAgICAgICAgICAgICAgICBwaG90b1VybHM7CiAgICAgIHByaXZhdGUgamF2YS51dGlsLk9wdGlvbmFsPGphdmEudXRpbC5MaXN0PFRhZz4+IHRhZ3M7CiAgICAgIHByaXZhdGUgU3RhdHVzRW51bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czsKCiAgICAgIHByaXZhdGUgQnVpbGRlcigpIHsKICAgICAgfQoKICAgICAgcHVibGljIHN0YXRpYyBCdWlsZGVyIGNyZWF0ZSgpIHsKICAgICAgICAgIHJldHVybiBuZXcgQnVpbGRlcigpOwogICAgICB9CgogICAgICBwdWJsaWMgQnVpbGRlciBzZXRJZChmaW5hbCBqYXZhLnV0aWwuT3B0aW9uYWxMb25nIGlkKSB7CiAgICAgICAgICB0aGlzLmlkID0gaWQ7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICAvLyBtb3JlIGluZm8gb21pdHRlZAogICAgfQogIGBgYAoKIyMjIEVudW0gdmFsdWVzCgpHZW5lcmF0aW5nIGFsbCB0aGUgZW51bSB2YWx1ZXMgd2l0aCB0aGUgYEBKc29uYlNlcmlhbGl6ZXJgJ3MgYW5kIGBASnNvbmJEZXNlcmlhbGl6ZXJgJ3MKCiAgYGBgamF2YQogIEBqYXZheC5qc29uLmJpbmQuYW5ub3RhdGlvbi5Kc29uYlR5cGVTZXJpYWxpemVyKFBldC5TdGF0dXNFbnVtU2VyaWFsaXplci5jbGFzcykKICBAamF2YXguanNvbi5iaW5kLmFubm90YXRpb24uSnNvbmJUeXBlRGVzZXJpYWxpemVyKFBldC5TdGF0dXNFbnVtRGVzZXJpYWxpemVyLmNsYXNzKQogIHB1YmxpYyBzdGF0aWMgZW51bSBTdGF0dXNFbnVtIHsKCiAgICAgIEFWQUlMQUJMRSgiYXZhaWxhYmxlIiksCiAgICAgIFBFTkRJTkcoInBlbmRpbmciKSwKICAgICAgU09MRCgic29sZCIpOwoKICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgdmFsdWU7CgogICAgICBTdGF0dXNFbnVtKGZpbmFsIFN0cmluZyB2YWx1ZSkgewogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICB9CgogICAgICBwdWJsaWMgU3RyaW5nIGdldFZhbHVlKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CiAgICAgIH0KCiAgICAgIEBPdmVycmlkZQogICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewogICAgICAgICAgcmV0dXJuIFN0cmluZy52YWx1ZU9mKHRoaXMudmFsdWUpOwogICAgICB9CgogICAgICBAamF2YXguanNvbi5iaW5kLmFubm90YXRpb24uSnNvbmJDcmVhdG9yCiAgICAgIHB1YmxpYyBzdGF0aWMgU3RhdHVzRW51bSBmcm9tVmFsdWUoZmluYWwgU3RyaW5nIHRleHQpIHsKICAgICAgICAgIHJldHVybiBqYXZhLnV0aWwuQXJyYXlzLnN0cmVhbShTdGF0dXNFbnVtLnZhbHVlcygpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGIgLT4gamF2YS51dGlsLk9iamVjdHMuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGIudmFsdWUpLCB0ZXh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmRGaXJzdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vckVsc2UobnVsbCk7CiAgICAgIH0KICB9CiAgYGBgCgojIyMjIEVudW0ncyBgSnNvbmJgIFNlcmlhbGl6ZXJzL0Rlc2VyaWFsaXplcgoKICBgYGBqYXZhCiAgcHVibGljIHN0YXRpYyBjbGFzcyBTdGF0dXNFbnVtU2VyaWFsaXplciBpbXBsZW1lbnRzIGphdmF4Lmpzb24uYmluZC5zZXJpYWxpemVyLkpzb25iU2VyaWFsaXplcjxTdGF0dXNFbnVtPiB7CgogICAgICBwdWJsaWMgU3RhdHVzRW51bVNlcmlhbGl6ZXIoKSB7IH0KCiAgICAgIEBPdmVycmlkZQogICAgICBwdWJsaWMgdm9pZCBzZXJpYWxpemUoCiAgICAgICAgICAgICAgU3RhdHVzRW51bSBhRW51bSwKICAgICAgICAgICAgICBqYXZheC5qc29uLnN0cmVhbS5Kc29uR2VuZXJhdG9yIGpzb25HZW5lcmF0b3IsCiAgICAgICAgICAgICAgamF2YXguanNvbi5iaW5kLnNlcmlhbGl6ZXIuU2VyaWFsaXphdGlvbkNvbnRleHQgc2VyaWFsaXphdGlvbkNvbnRleHQpIHsKICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGUoYUVudW0udmFsdWUpOwogICAgICB9CiAgfQoKICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXR1c0VudW1EZXNlcmlhbGl6ZXIgaW1wbGVtZW50cyBqYXZheC5qc29uLmJpbmQuc2VyaWFsaXplci5Kc29uYkRlc2VyaWFsaXplcjxTdGF0dXNFbnVtPiB7CgogICAgICBwdWJsaWMgU3RhdHVzRW51bURlc2VyaWFsaXplcigpIHt9CgogICAgICBAT3ZlcnJpZGUKICAgICAgcHVibGljIFN0YXR1c0VudW0gZGVzZXJpYWxpemUoCiAgICAgICAgICAgICAgamF2YXguanNvbi5zdHJlYW0uSnNvblBhcnNlciBqc29uUGFyc2VyLAogICAgICAgICAgICAgIGphdmF4Lmpzb24uYmluZC5zZXJpYWxpemVyLkRlc2VyaWFsaXphdGlvbkNvbnRleHQgZGVzZXJpYWxpemF0aW9uQ29udGV4dCwKICAgICAgICAgICAgICBqYXZhLmxhbmcucmVmbGVjdC5UeXBlIHR5cGUpIHsKICAgICAgICAgIHJldHVybiBTdGF0dXNFbnVtLmZyb21WYWx1ZShqc29uUGFyc2VyLmdldFN0cmluZygpKTsKICAgICAgfQogIH0KICBgYGAKCiMjIyBVc2luZyBNaWNyb0dlbiB3aXRoIHRoZSBNYXZlbiBBcmNoZXR5cGUKCkV4ZWN1dGUgdGhpcyBjb21tYW5kCgpgYGBiYXNoCiQgbXZuIGFyY2hldHlwZTpnZW5lcmF0ZSBcCiAgICAtRGdyb3VwSWQ9Y29tLmV4YW1wbGUgXAogICAgLURhcnRpZmFjdElkPWV4YW1wbGUgXAogICAgLURhcmNoZXR5cGVHcm91cElkPWlvLm1pY3JvZ2VuIFwKICAgIC1EYXJjaGV0eXBlQXJ0aWZhY3RJZD1taWNyb2dlbi1hcmNoZXR5cGUKYGBgCgpDaGVjayB3aGF0IGlzIGNyZWF0ZWQKCmBgYGJhc2gKJCBjZCBleGFtcGxlICYmIHRyZWUgLiAtLWRpcnNmaXJzdApleGFtcGxlCuKUnOKUgOKUgCBzcmMK4pSCwqDCoCDilJTilIDilIAgbWFpbgrilILCoMKgICAgICDilJzilIDilIAgamF2YQrilILCoMKgICAgICDilILCoMKgIOKUlOKUgOKUgCBjb20K4pSCwqDCoCAgICAg4pSCwqDCoCAgICAg4pSU4pSA4pSAIGV4YW1wbGUK4pSCwqDCoCAgICAg4pSCwqDCoCAgICAgICAgIOKUlOKUgOKUgCBKQVhSU0NvbmZpZ3VyYXRpb24uamF2YQrilILCoMKgICAgICDilJzilIDilIAgcmVzb3VyY2VzCuKUgsKgwqAgICAgIOKUgsKgwqAg4pSU4pSA4pSAIE1FVEEtSU5GCuKUgsKgwqAgICAgIOKUgsKgwqAgICAgIOKUnOKUgOKUgCBtaWNyb3Byb2ZpbGUtY29uZmlnLnByb3BlcnRpZXMK4pSCwqDCoCAgICAg4pSCwqDCoCAgICAg4pSU4pSA4pSAIG9wZW5hcGkueW1sCuKUgsKgwqAgICAgIOKUlOKUgOKUgCB3ZWJhcHAK4pSCwqDCoCAgICAgICAgIOKUlOKUgOKUgCBXRUItSU5GCuKUgsKgwqAgICAgICAgICAgICAg4pSU4pSA4pSAIGJlYW5zLnhtbArilJzilIDilIAgRG9ja2VyZmlsZQrilJzilIDilIAgUkVBRE1FLm1kCuKUnOKUgOKUgCBtdm53CuKUnOKUgOKUgCBtdm53LmNtZArilJTilIDilIAgcG9tLnhtbAoKOSBkaXJlY3RvcmllcywgOSBmaWxlcwpgYGAKCkltcGxlbWVudCB0aGUgSkFYLVJTIEFQSSBjb250cmFjdAoKYGBgamF2YQpAUGF0aCgidjEiKQpAQXBwbGljYXRpb25TY29wZWQKcHVibGljIGNsYXNzIFBldFJlc291cmNlIGltcGxlbWVudHMgUGV0QXBpIHsKCiAgICBAT3ZlcnJpZGUKICAgIHB1YmxpYyBDb21wbGV0aW9uU3RhZ2U8UmVzcG9uc2U+IGFkZFBldChQZXQgcGV0KSB0aHJvd3MgV2ViQXBwbGljYXRpb25FeGNlcHRpb24gewogICAgICAgIHJldHVybiBDb21wbGV0YWJsZUZ1dHVyZS5jb21wbGV0ZWRGdXR1cmUoCiAgICAgICAgICAgICAgICBSZXNwb25zZS5ub0NvbnRlbnQoKS5idWlsZCgpCiAgICAgICAgKTsKICAgIH0KCiAgICBAT3ZlcnJpZGUKICAgIHB1YmxpYyBDb21wbGV0aW9uU3RhZ2U8UmVzcG9uc2U+IGdldFBldEJ5SWQoR2V0UGV0QnlJZFBhcmFtcyBwYXJhbXMpIHRocm93cyBXZWJBcHBsaWNhdGlvbkV4Y2VwdGlvbiB7CiAgICAgICAgcmV0dXJuIENvbXBsZXRhYmxlRnV0dXJlLmNvbXBsZXRlZEZ1dHVyZSgKICAgICAgICAgICAgICAgIFJlc3BvbnNlLm9rKAogICAgICAgICAgICAgICAgICAgICAgICBQZXQuYnVpbGRlcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRJZChPcHRpb25hbExvbmcub2YoMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXROYW1lKCJwZXQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAuYnVpbGQoKQogICAgICAgICAgICAgICAgKS5idWlsZCgpCiAgICAgICAgKTsKICAgIH0KYGBgCgpSdW4gYW5kIGVuam95CgpgYGBiYXNoCiQgLi9tdm53IGNsZWFuIGluc3RhbGwKYGBgCgpgYGBiYXNoCiQgZG9ja2VyIHJtIC1mIGV4YW1wbGUgfHwgdHJ1ZSAmJiBkb2NrZXIgcnVuIC1kIC1wIDkwODA6OTA4MCAtLW5hbWUgZXhhbXBsZSBjb20uZXhhbXBsZS9leGFtcGxlOjEuMC1TTkFQU0hPVApgYGAKCmBgYGJhc2gKJCBjdXJsIC1zIC1YIEdFVCAtSCAiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIiBodHRwOi8vbG9jYWxob3N0OjkwODAvYXBpL3YxL3BldC8xIHwganEgLgp7CiAgImNhdGVnb3J5IjogewogICAgImlkIjogMSwKICAgICJuYW1lIjogIiIKICB9LAogICJpZCI6IDEsCiAgIm5hbWUiOiAibmFtZSIsCiAgInN0YXR1cyI6ICJhdmFpbGFibGUiCn0KYGBgCgojIyMgQWR2YW5jZSBGZWF0dXJlcwoKIyMjIERlcGVuZGVuY2llcwoKfCBMaWJyYXJ5ICAgICAgICAgICAgICB8IFZlcnNpb24gfCBMaWNlbnNlIHwKfDotLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tfDotLS0tLS0tLXwKfCBFY2xpcHNlIEpha2FydGFFRSAgICB8IDguMC4wICAgfCAgICAgICAgIHwKfCBFY2xpcHNlIE1pY3JvUHJvZmlsZSB8IDMuMCAgICAgfCAgICAgICAgIHwKfCBPcGVuQVBJIFRvb2xzICAgICAgICB8IDQuMS4xICAgfCAgICAgICAgIHwKfCBJbW11dGFibGVzICAgICAgICAgICB8IDIuNy41ICAgfCAgICAgICAgIHwKClshW2ZvcnRoZWJhZGdlXShodHRwczovL2ZvcnRoZWJhZGdlLmNvbS9pbWFnZXMvYmFkZ2VzL21hZGUtd2l0aC1qYXZhLnN2ZyldKGh0dHBzOi8vZm9ydGhlYmFkZ2UuY29tKSBbIVtmb3J0aGViYWRnZV0oaHR0cHM6Ly9mb3J0aGViYWRnZS5jb20vaW1hZ2VzL2JhZGdlcy9idWlsdC13aXRoLWxvdmUuc3ZnKV0oaHR0cHM6Ly9mb3J0aGViYWRnZS5jb20pCgpbIVtmb3J0aGViYWRnZV0oaHR0cHM6Ly9mb3J0aGViYWRnZS5jb20vaW1hZ2VzL2JhZGdlcy9hcHByb3ZlZC1ieS1nZW9yZ2UtY29zdGFuemEuc3ZnKV0oaHR0cHM6Ly9mb3J0aGViYWRnZS5jb20pIFshW2ZvcnRoZWJhZGdlXShodHRwczovL2ZvcnRoZWJhZGdlLmNvbS9pbWFnZXMvYmFkZ2VzL2NvbnRhaW5zLXRlY2huaWNhbC1kZWJ0LnN2ZyldKGh0dHBzOi8vZm9ydGhlYmFkZ2UuY29tKQoKIVtDb2RlUUxdKGh0dHBzOi8vZ2l0aHViLmNvbS9jY2hhY2luL01pY3JvR2VuL3dvcmtmbG93cy9Db2RlJTIwc2Nhbm5pbmclMjAtJTIwYWN0aW9uL2JhZGdlLnN2ZykKIVtKYXZhIENJXShodHRwczovL2dpdGh1Yi5jb20vY2NoYWNpbi9NaWNyb0dlbi93b3JrZmxvd3MvSmF2YSUyMENJL2JhZGdlLnN2ZykKIVtHcmVldGluZ3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9jY2hhY2luL01pY3JvR2VuL3dvcmtmbG93cy9HcmVldGluZ3MvYmFkZ2Uuc3ZnKQohW1JlbGVhc2UgRHJhZnRlcl0oaHR0cHM6Ly9naXRodWIuY29tL2NjaGFjaW4vTWljcm9HZW4vd29ya2Zsb3dzL1JlbGVhc2UlMjBNYW5hZ2VtZW50L2JhZGdlLnN2ZykKWyFbTWF2ZW4gQ2VudHJhbF0oaHR0cHM6Ly9tYXZlbi1iYWRnZXMuaGVyb2t1YXBwLmNvbS9tYXZlbi1jZW50cmFsL2lvLm1pY3JvZ2VuL21pY3JvZ2VuLXBhcmVudC9iYWRnZS5zdmcpXShodHRwczovL21hdmVuLWJhZGdlcy5oZXJva3VhcHAuY29tL21hdmVuLWNlbnRyYWwvaW8ubWljcm9nZW4vTWljcm9HZW4pClshW1BScyBXZWxjb21lXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1BScy13ZWxjb21lLWJyaWdodGdyZWVuLnN2Zz9zdHlsZT1zcXVhcmUpXShodHRwOi8vbWFrZWFwdWxscmVxdWVzdC5jb20pIFshW0RlcGVuZGFib3QgU3RhdHVzXShodHRwczovL2FwaS5kZXBlbmRhYm90LmNvbS9iYWRnZXMvc3RhdHVzP2hvc3Q9Z2l0aHViJnJlcG89Y2NoYWNpbi9NaWNyb0dlbildKGh0dHBzOi8vZGVwZW5kYWJvdC5jb20pCg== readmeEtag: '"94f3ac84cace64ec43634908a17e33d1c951fae7"' readmeLastModified: Sun, 02 May 2021 03:12:19 GMT repositoryId: 144823441 description: An OpenAPI Spec Generator for Eclipse JakartaEE + Eclipse MicroProfile created: '2018-08-15T07:56:22Z' updated: '2025-05-31T01:42:06Z' language: Java archived: false stars: 5 watchers: 1 forks: 6 owner: cchacin logo: https://avatars.githubusercontent.com/u/292938?v=4 license: Apache-2.0 repoEtag: '"ebe4e943b3b3ebf3f4144892c4063bda2cf2a77d88cd95fc078049bf34b038d9"' repoLastModified: Sat, 31 May 2025 01:42:06 GMT foundInMaster: true category: Parsers id: ef50340f0e36fe66a7057fb768ecd29e - source: openapi3 tags repository: https://github.com/smallstep/smallstep-python v3: true id: d1bf3e75463bc83b0728b0f6a92967ca repositoryMetadata: base64Readme: >- IyBzbWFsbHN0ZXAtcHl0aG9uCgpzbWFsbHN0ZXAtcHl0aG9uIGlzIGEgUHl0aG9uIGxpYnJhcnkgYXQgYWxsb3dzIHlvdSB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgU21hbGxzdGVwIEFQSS4KCldlIHVzZSBbb3BlbmFwaS1weXRob24tY2xpZW50XShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1nZW5lcmF0b3JzL29wZW5hcGktcHl0aG9uLWNsaWVudCkgdG8gZ2VuZXJhdGUgYSBsb3cgbGV2ZWwgUHl0aG9uIGNsaWVudCB0aGF0IGlzIGxvY2F0ZWQgaW4gYHNtYWxsc3RlcC9hcGlfY2xpZW50L2AuIFNlZSB0aGUgYHNtYWxsc3RlcC9SRUFETUUubWRgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoaXMgZ2VuZXJhdGVkIGxpYnJhcnkuIFdlIGJ1aWx0IGEgd3JhcHBlciBsaWJyYXJ5IG9uIHRvcCBvZiBgc21hbGxzdGVwL2FwaV9jbGllbnRgIHRoYXQgaXMgbG9jYXRlZCBpbiBgYXBpLnB5YC4gVGhpcyBhZGRzIGEgaGFuZGZ1bCBvZiBoZWxwZXIgZmVhdHVyZXMuIEF0IHRoaXMgdGltZSBgc21hbGxzdGVwL2FwaS5weWAgb25seSBzdXBwb3J0cyBhIGZldyBBUEkgZW5kcG9pbnRzLiBTZWUgYHNtYWxsc3RlcC9hcGkucHlgIGZvciBkZXRhaWxzLgoKIyMgUmVxdWlyZW1lbnRzCgoqIFB5dGhvbiAzLjkKKiBbU21hbGxzdGVwIEFjY291bnRdKGh0dHBzOi8vc21hbGxzdGVwLmNvbS9zaWdudXApCiogQSB2ZXJ5IHN0cm9uZyBkZXNpcmUgdG8gYWxsb3cgYSBjdXRlIHNuYWtlIHRvIG1hbmFnZSB5b3VyIFNtYWxsc3RlcCBhY2NvdW50Cgo8aW1nIHNyYz0vaW1hZ2VzL3NtYWxsc3RlcC1zbmVrLnBuZyBhbHQ9IkEgY3V0ZSBzbmFrZSB0byBtYW5hZ2UgU21hbGxzdGVwIiB3aWR0aD0yNTA+CgojIyBJbnN0YWxsYXRpb24KCldlIHB1Ymxpc2ggdGhpcyBwYWNrYWdlIHRvIDxodHRwczovL3B5cGkub3JnL3Byb2plY3Qvc21hbGxzdGVwLXB5dGhvbi8+IGFuZCBpdCBjYW4gYmUgaW5zdGFsbGVkIHZpYSBwaXAuCgpgYGBiYXNoCnBpcCBpbnN0YWxsIHNtYWxsc3RlcC1weXRob24KYGBgCgojIyBEZXZlbG9wbWVudAoKIyMjIENvbmZpZ3VyYXRpb24KCkNyZWF0ZSBhIGAuZW52YCBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgYW5kIGFkZCB0aGUgZm9sbG93aW5nIGxpbmVzOgoKYGBgYmFzaAojIE5vdCBuZWVkZWQgdW5sZXNzIHlvdSBhcmUgdXNpbmcgb3VyIHJ1biBhbnl3aGVyZSBvZmZlcmluZwojIFNNQUxMU1RFUF9BUElfSE9TVD0iaHR0cHM6Ly9nYXRld2F5LnNtYWxsc3RlcC5jb20vYXBpIgpTTUFMTFNURVBfQVBJX1RPS0VOPSJ5b3VyX3NtYWxsc3RlcF9hcGlfdG9rZW4iCmBgYAoKQWRqdXN0IHRoZW0gdG8geW91ciBuZWVkcy4gU2VlIGBjb25maWcucHlgIGZvciBjb25maWd1cmF0aW9uIGRldGFpbHMuIFdlIHVzZSBbUHlkYW50aWMgU2V0dGluZ3NdKGh0dHBzOi8vZG9jcy5weWRhbnRpYy5kZXYvbGF0ZXN0L2NvbmNlcHRzL3B5ZGFudGljX3NldHRpbmdzLykgZm9yIGVhc3kgc2V0dGluZ3MgbWFuYWdlbWVudC4gQmVsb3cgaXMgdGhlIG9yZGVyIG9mIHByZWNlZGVuY2UgZm9yIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3M6CgoxLiBBcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBTZXR0aW5ncyBjbGFzcyBpbml0aWFsaXNlci4KMS4gRW52aXJvbm1lbnQgdmFyaWFibGVzLCBlLmcuIFNNQUxMU1RFUF9NWV9DT05GSUdfU0VUVElORyBhcyBkZXNjcmliZWQgYWJvdmUuCjEuIFZhcmlhYmxlcyBsb2FkZWQgZnJvbSBhIGRvdGVudiAoLmVudikgZmlsZS4KMS4gVmFyaWFibGVzIGxvYWRlZCBmcm9tIHRoZSBzZWNyZXRzIGRpcmVjdG9yeS4KMS4gVGhlIGRlZmF1bHQgZmllbGQgdmFsdWVzIGZvciB0aGUgU2V0dGluZ3MgbW9kZWwuCgpTZWUgdGhlIFB5ZGFudGljIFNldHRpbmdzIFtmaWVsZCB2YWx1ZSBwcmlvcml0eV0oaHR0cHM6Ly9kb2NzLnB5ZGFudGljLmRldi9sYXRlc3QvY29uY2VwdHMvcHlkYW50aWNfc2V0dGluZ3MvI2ZpZWxkLXZhbHVlLXByaW9yaXR5KSBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKIyMgV2l0aCBQb2V0cnkKCkluc3RhbGwgUG9ldHJ5IG9uIHlvdXIgc3lzdGVtIHdpdGggW3RoaXNdKGh0dHBzOi8vcHl0aG9uLXBvZXRyeS5vcmcvZG9jcy8jaW5zdGFsbGF0aW9uKS4KClJ1biB0aGlzIGZyb20gdGhlIHJlcG8gZGlyZWN0b3J5OgoKYGBgYmFzaApwb2V0cnkgaW5zdGFsbApgYGAKCkVudGVyIHRoZSBQb2V0cnkgc2hlbGwgd2l0aCB0aGlzOgoKYGBgYmFzaApwb2V0cnkgc2hlbGwKcHJlLWNvbW1pdCBpbnN0YWxsCmBgYAoKIyMjIFdpdGggdmVudgoKYGBgYmFzaApleHBvcnQgVklSVFVBTF9FTlY9JHtQV0R9Ly52ZW52CnB5dGhvbjMgLW0gdmVudiAkVklSVFVBTF9FTlYKZXhwb3J0IFBBVEg9IiRWSVJUVUFMX0VOVi9iaW46JFBBVEgiCnBpcCBpbnN0YWxsIHdoZWVsCnBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKLiAudmVudi9iaW4vYWN0aXZhdGUKcHJlLWNvbW1pdCBpbnN0YWxsCmBgYAoKIyMjIEFkZGluZyBwYWNrYWdlcwoKQWRkIHBhY2thZ2VzIHRvIFBvZXRyeSBhbmQgdGhlbiBydW4gcHJlLWNvbW1pdCB3aGljaCB3aWxsIGdlbmVyYXRlIGEgcmVxdWlyZW1lbnRzLnR4dCBmaWxlIGZvciB5b3UuCgpEZXZlbG9wbWVudDoKCmBgYGJhc2gKcG9ldHJ5IGFkZCAtLWdyb3VwPWRldiByaWNoCnByZS1jb21taXQKYGBgCgpQcm9kdWN0aW9uOgoKYGBgYmFzaApwb2V0cnkgYWRkIHJpY2gKcHJlLWNvbW1pdApgYGAKCiMjIExpY2Vuc2UKCltBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMF0oaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wKQoKQ29weXJpZ2h0IDIwMjMgU21hbGxzdGVwIExhYnMgSW5jLgo= readmeEtag: '"7b500e4c94187ccba1cbc2ea3bd3571ca40a3111"' readmeLastModified: Wed, 14 Aug 2024 18:10:28 GMT repositoryId: 703177207 description: 'A Python client library for the Smallstep API ' created: '2023-10-10T18:33:22Z' updated: '2026-01-23T22:30:31Z' language: Python archived: false stars: 7 watchers: 6 forks: 2 owner: smallstep logo: https://avatars.githubusercontent.com/u/23183426?v=4 license: Apache-2.0 repoEtag: '"90a930379f16db95e2580adce318a55ac96609b886f12f9cefcdf270337b4ed9"' repoLastModified: Fri, 23 Jan 2026 22:30:31 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/danielgtaylor/sdt v3: true repositoryMetadata: base64Readme: >- IyBTdHJ1Y3R1cmVkIERhdGEgVGVtcGxhdGVzCgpbIVtHbyBSZWZlcmVuY2VdKGh0dHBzOi8vcGtnLmdvLmRldi9iYWRnZS9naXRodWIuY29tL2RhbmllbGd0YXlsb3Ivc2R0LnN2ZyldKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL2RhbmllbGd0YXlsb3Ivc2R0KSBbIVtHbyBSZXBvcnQgQ2FyZF0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9zZHQpXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9zZHQpICFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9zZHQvYWN0aW9ucy93b3JrZmxvd3MvdGVzdC55YW1sL2JhZGdlLnN2Zz9icmFuY2g9bWFpbikgWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2RhbmllbGd0YXlsb3Ivc2R0L2JyYW5jaC9tYWluL2dyYXBoL2JhZGdlLnN2Zz90b2tlbj1LQjBRRDBINkhQKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2RhbmllbGd0YXlsb3Ivc2R0KSBbIVtWUyBDb2RlIEV4dGVuc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS92c2NvZGUtZXh0ZW5zaW9uLWJsdWUpXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9ZGFuaWVsZ3RheWxvci5zdHJ1Y3R1cmVkLWRhdGEtdGVtcGxhdGVzKQoKU3RydWN0dXJlZCBkYXRhIHRlbXBsYXRlcyBhcmUgYSB0ZW1wbGF0aW5nIGVuZ2luZSB0aGF0IHRha2VzIGEgc2ltcGxpZmllZCBzZXQgb2YgaW5wdXQgcGFyYW1ldGVycyBhbmQgdHJhbnNmb3JtcyB0aGVtIGludG8gYSBjb21wbGV4IHN0cnVjdHVyZWQgZGF0YSBvdXRwdXQuIEJvdGggdGhlIGlucHV0cyBhbmQgb3V0cHV0cyBjYW4gYmUgdmFsaWRhdGVkIGFnYWluc3QgYSBzY2hlbWEuCgpCZSBzdXJlIHRvIGNoZWNrIG91dCB0aGUgW1Zpc3VhbCBTdHVkaW8gQ29kZSBleHRlbnNpb25dKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1kYW5pZWxndGF5bG9yLnN0cnVjdHVyZWQtZGF0YS10ZW1wbGF0ZXMpIGZvciBzeW50YXggaGlnaGxpZ2h0aW5nIGFuZCBzY2hlbWEgdmFsaWRhdGlvbiBhcyB5b3UgdHlwZS4KClRoZSBnb2FscyBvZiB0aGlzIHByb2plY3QgYXJlIHRvOgoKMS4gUHJvdmlkZSBhIHNpbXBsZSBmb3JtYXQ6IGl0J3MganVzdCBKU09OL1lBTUwhCjIuIEdpdmUgZW5vdWdoIHRvb2xzIHRvIGJlIHVzZWZ1bDoKICAgLSBJbnRlcnBvbGF0aW9uIGAke215X3ZhbHVlfWAgJiBgJHtudW0gLyAyID49IDV9YAogICAtIEJyYW5jaGluZyAoaWYvdGhlbi9lbHNlKQogICAtIExvb3BpbmcgKGZvci9lYWNoKQozLiBHdWFyYW50ZWUgc3RydWN0dXJhbCBjb3JyZWN0bmVzcwogICAtIFRoZSBzdHJ1Y3R1cmVkIGRhdGEgdGVtcGxhdGUgaXMgdmFsaWQgSlNPTiAvIFlBTUwKICAgLSBUaGUgaW5wdXQgcGFyYW1ldGVycyBhcmUgdmFsaWQgSlNPTiAvIFlBTUwKICAgLSBUaGUgb3V0cHV0IG9mIHRoZSB0ZW1wbGF0ZSBpcyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgdmFsaWQgSlNPTgo0LiBQcm92aWRlIHRvb2xzIGZvciBzZW1hbnRpYyBjb3JyZWN0bmVzcyB2aWEgc2NoZW1hcwogICAtIFRoZSBpbnB1dCB0eXBlcyBhbmQgdmFsdWVzIHBhc3MgdGhlIHNjaGVtYQogICAtIFRoZSB0ZW1wbGF0ZSB3aWxsIHByb2R1Y2Ugb3V0cHV0IHRoYXQgc2hvdWxkIHBhc3MgdGhlIHNjaGVtYQogICAtIFRoZSBvdXRwdXQgb2YgdGhlIHRlbXBsYXRlIGFmdGVyIHJlbmRlcmluZyBwYXNzZXMgdGhlIHNjaGVtYQoKIyMgU3RydWN0dXJlCgpBIHN0cnVjdHVyZWQgZGF0YSB0ZW1wbGF0ZSBkb2N1bWVudCBpcyBtYWRlIG9mIHR3byBwYXJ0czogc2NoZW1hcyBhbmQgYSB0ZW1wbGF0ZS4gVGhlIHNjaGVtYXMgZGVmaW5lIHRoZSBhbGxvd2FibGUgaW5wdXQvb3V0cHV0IHN0cnVjdHVyZSB3aGlsZSB0aGUgdGVtcGxhdGUgZGVmaW5lcyB0aGUgYWN0dWFsIHJlbmRlcmVkIG91dHB1dC4gQW4gZXhhbXBsZSBkb2N1bWVudCBtaWdodCBsb29rIGxpa2U6CgpgYGB5YW1sCnNjaGVtYXM6CiAgIyBEaWFsZWN0IHNlbGVjdHMgdGhlIGRlZmF1bHQgSlNPTiBTY2hlbWEgdmVyc2lvbgogIGRpYWxlY3Q6IG9wZW5hcGktMy4xCiAgaW5wdXQ6CiAgICAjIElucHV0IHNjaGVtYSBnb2VzIGhlcmUKICAgIHR5cGU6IG9iamVjdAogICAgcHJvcGVydGllczoKICAgICAgbmFtZToKICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICBkZWZhdWx0OiB3b3JsZAogIG91dHB1dDoKICAgICMgT3V0cHV0IHNjaGVtYSBnb2VzIGhlcmUsIGFsc28gc3VwcG9ydHMgcmVmczoKICAgICRyZWY6IGh0dHBzOi8vYXBpLmV4YW1wbGUuY29tL29wZW5hcGkuanNvbiNjb21wb25lbnRzL3NjaGVtYXMvR3JlZXRpbmcKdGVtcGxhdGU6CiAgIyBUZW1wbGF0ZWQgb3V0cHV0IHN0cnVjdHVyZSBnb2VzIGhlcmUKICBncmVldGluZzogSGVsbG8sICR7bmFtZX0hCmBgYAoKIyMgSW5zdGFsbGF0aW9uCgpZb3UgY2FuIGluc3RhbGwgdmlhOgoKYGBgc2gKIyBHZXQgdGhlIGBzZHRgIGNvbW1hbmQKJCBnbyBnZXQgLXUgZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL3NkdC9jbWQvLi4uCgojIEluc3RhbGwgYXMgYSBsaWJyYXJ5CiQgZ28gZ2V0IC11IGdpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9zZHQKYGBgCgojIyBFeGFtcGxlCgpZb3UgY2FuIHJ1biB0aGUgZXhhbXBsZSBsaWtlIHNvOgoKYGBgc2gKIyBWYWxpZGF0ZSB0aGUgdGVtcGxhdGUKJCBzZHQgdmFsaWRhdGUgLi9zYW1wbGVzL2dyZWV0aW5nLnlhbWwKCiMgR2VuZXJhdGUgYW4gZXhhbXBsZSBwYXJhbXMgZmlsZQokIHNkdCBleGFtcGxlIC1mIHlhbWwgLi9zYW1wbGVzL2hlbGxvL2hlbGxvLnlhbWwgPnBhcmFtcy55YW1sCgojIFJlbmRlciBieSBwYXNzaW5nIGluIGEgZmlsZQokIHNkdCByZW5kZXIgLi9zYW1wbGVzL2hlbGxvL2hlbGxvLnlhbWwgPHBhcmFtcy55YW1sCnsKICAiZ3JlZXRpbmciOiAiSGVsbG8sIFNEVCEiCn0KCiMgUmVuZGVyIGJ5IHVzaW5nIENMSSBzaG9ydGhhbmQgc3ludGF4CiQgc2R0IHJlbmRlciAuL3NhbXBsZXMvZ3JlZXRpbmcueWFtbCBuYW1lOiBBbGljZQp7CiAgImdyZWV0aW5nIjogIkhlbGxvLCBBbGljZSEiCn0KYGBgCgpJbnB1dCBwYXJhbXMgZm9yIHJlbmRlcmluZyBjYW4gYmUgcGFzc2VkIHZpYSBzdGRpbiBhcyBKU09OL1lBTUwgYW5kL29yIHZpYSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFzIFtDTEkgc2hvcnRoYW5kIHN5bnRheF0oaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGd0YXlsb3Ivc2hvcnRoYW5kI3JlYWRtZSkuCgojIyBTY2hlbWFzCgpKU09OIFNjaGVtYSBpcyB1c2VkIGZvciBhbGwgc2NoZW1hcy4gSXQgZGVmYXVsdHMgdG8gSlNPTiBTY2hlbWEgMjAyMC0xMiBidXQgY2FuIGJlIG92ZXJyaWRkZW4gdmlhIHRoZSBgJHNjaGVtYWAga2V5IG9yIHVzaW5nIGBkaWFsZWN0YCBpbiB0aGUgc3RydWN0dXJlZCBkYXRhIHRlbXBsYXRlIGRvY3VtZW50IGxpa2UgYWJvdmUuIEF2YWlsYWJsZSBkaWFsZWN0czoKCi0gYG9wZW5hcGktMy4wYAotIGBvcGVuYXBpLTMuMWAKLSBgaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWFgCi0gYGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMTktMDkvc2NoZW1hYAotIGBodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWFgCi0gYGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA2L3NjaGVtYWAKLSBgaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hYAoKVGhlIGlucHV0IHNjaGVtYSBkZXNjcmliZXMgdGhlIGlucHV0IHBhcmFtZXRlcnMgYW5kIHRoZSB0ZW1wbGF0ZSB3aWxsIG5vdCByZW5kZXIgdW5sZXNzIHRoZSBwYXNzZWQgcGFyYW1ldGVycyB2YWxpZGF0ZSB1c2luZyB0aGUgaW5wdXQgc2NoZW1hLiBJdCBhbHNvIGxldHMgeW91IHNldCBkZWZhdWx0cyBmb3IgdGhlIGlucHV0IHBhcmFtZXRlcnMsIHdoaWNoIGRlZmF1bHQgdG8gYG5pbGAgaWYgbm90IHBhc3NlZC4KClRoZSBvdXRwdXQgc2NoZW1hIGRlc2NyaWJlcyB0aGUgdGVtcGxhdGUncyBvdXRwdXQgc3RydWN0dXJlLiBUaGUgdmFsaWRhdG9yIGlzIGNhcGFibGUgb2YgdW5kZXJzdGFuZGluZyBicmFuY2hlcyAmIGxvb3BzIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaXMgc2VtYW50aWNhbGx5IHZhbGlkIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggcGF0aCBpcyB0YWtlbiBkdXJpbmcgcmVuZGVyaW5nLgoKIyMgVGVtcGxhdGUgTGFuZ3VhZ2UgU3BlY2lmaWNhdGlvbgoKQSB0ZW1wbGF0ZSBpcyBqdXN0IEpTT04vWUFNTC4gRm9yIGV4YW1wbGU6CgpgYGB5YW1sCmhlbGxvOiB3b3JsZApgYGAKClRoYXQgaXMgYSB2YWxpZCBzdGF0aWMgdGVtcGxhdGUuIE5vdGhpbmcgd2lsbCBjaGFuZ2Ugd2hlbiByZW5kZXJlZCwgd2hpY2ggaXMgbm90IHZlcnkgdXNlZnVsLiBOb3JtYWxseSwgd2hlbiBhIHRlbXBsYXRlIGlzIHJlbmRlcmVkLCBpdCBpcyBwYXNzZWQgcGFyYW1ldGVycywgYW5kIHRoZXNlIGFyZSB1c2VkIGZvciBpbnRlcnBvbGF0aW9uLCBicmFuY2hpbmcsIGFuZCBsb29waW5nLCB3aGljaCBhcmUgc3BlY2lmaWVkIHVzaW5nIHNwZWNpYWwgc3ludGF4IGluIHN0cmluZ3Mgb3Iga2V5d29yZHMgYXMgb2JqZWN0IHByb3BlcnR5IG5hbWVzOgoKLSBJbnRlcnBvbGF0aW9uOiBgJHsuLi59YAotIEJyYW5jaGluZzogYCRpZmAsIGAkdGhlbmAsIGAkZWxzZWAKLSBMb29waW5nOiBgJGZvcmAsIGAkYXNgLCBgJGVhY2hgCi0gU3BlY2lhbCBvcGVyYXRpb25zOiBgJGZsYXR0ZW5gCgpUaGVzZSBmZWF0dXJlcyBtYWtlIHVzZSBvZiBhIGJhc2ljIGV4cHJlc3Npb24gbGFuZ3VhZ2UuCgojIyMgRXhwcmVzc2lvbnMKClN0cmluZyBpbnRlcnBvbGF0aW9uLCBicmFuY2hpbmcgY29uZGl0aW9ucywgYW5kIGxvb3AgdmFyaWFibGUgc2VsZWN0aW9uIGFsbCB1c2UgYW4gZXhwcmVzc2lvbiBsYW5ndWFnZS4gVGhpcyBhbGxvd3MgeW91IHRvIG1ha2Ugc2ltcGxlIGNvbXBhcmlzb25zIG9mIHRoZSBwYXJhbWV0ZXIgY29udGV4dCBkYXRhLiBFeGFtcGxlczoKCi0gYGZvbyA+IDUwYAotIGBpdGVtLmJhcnMubGVuZ3RoIDw9IDUgb3IgbXlfb3ZlcnJpZGVgCi0gYCJzZHQiIGluIG5hbWVgCi0gYG5hbWUgc3RhcnRzV2l0aCAic2R0ImAKLSBgImZvbyIgaW4gbXlfYXJyYXlgCi0gYGxvb3AuaW5kZXggKyAxYAoKU2VlIFtkYW5pZWxndGF5bG9yL21leHByIHN5bnRheF0oaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGd0YXlsb3IvbWV4cHIjc3ludGF4KSBmb3IgZGV0YWlscy4KCiMjIyBTdHJpbmcgSW50ZXJwb2xhdGlvbgoKU3RyaW5nIGludGVycG9sYXRpb24gaXMgdGhlIGFjdCBvZiByZXBsYWNpbmcgdGhlIGNvbnRlbnRzIG9mIGAkey4uLn1gIHdpdGhpbiBzdHJpbmdzLCB3aGVyZSBgLi4uYCBjb3JyZXNwb25kcyB0byBhbiBleHByZXNzaW9uIHRoYXQgbWFrZXMgdXNlIG9mIGlucHV0IHBhcmFtZXRlcnMuIEZvciBleGFtcGxlOgoKYGBgeWFtbApoZWxsbzogJHtuYW1lfQpgYGAKCklmIHBhc3NlZCBgeyJuYW1lIjogIkFsaWNlIn1gIGFzIHBhcmFtZXRlcnMgdGhpcyB3b3VsZCByZW5kZXI6CgpgYGBqc29uCnsKICAiaGVsbG8iOiAiQWxpY2UiCn0KYGBgCgpXaGVuZXZlciB0aGUgc3RyaW5nIGlzIGp1c3Qgb25lIGAkey4uLn1gIHN0YXRlbWVudCBpdCB3aWxsIHVzZSB3aGF0ZXZlciB0eXBlIGl0IGV2YWx1YXRlcyB0byBpbiB0aGUgcmVzdWx0LCBzbyB5b3UgYXJlIG5vdCBsaW1pdGVkIHRvIGp1c3Qgc3RyaW5ncy4gSWYgdGhlIGV4cHJlc3Npb24gcmVzdWx0IGlzIGBuaWxgLCB0aGVuIHRoZSBwcm9wZXJ0eS9pdGVtIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVuZGVyZWQgb3V0cHV0LgoKSXQncyBhbHNvIHBvc3NpYmxlIHRvIGFkZCBzdGF0aWMgdGV4dCBvciBtdWx0aXBsZSBpbnRlcnBvbGF0aW9uIGV4cHJlc3Npb25zIGluIGEgc2luZ2xlIHZhbHVlOgoKYGBgeWFtbApoZWxsbzogR3JlZXRpbmdzLCAke25hbWV9IQpgYGAKCkdpdmVuIHRoZSBzYW1lIGlucHV0IHRoYXQgd291bGQgcmVzdWx0IGluOgoKYGBganNvbgp7CiAgImhlbGxvIjogIkdyZWV0aW5ncywgQWxpY2UhIgp9CmBgYAoKIyMjIyBUcmlja3MKCi0gRm9yY2UgYSBzdHJpbmcgb3V0cHV0IGJ5IHVzaW5nIG1vcmUgdGhhbiBvbmUgZXhwcmVzc2lvbjogYCR7bXlfbnVtYmVyfSR7IiJ9YAoKIyMjIEJyYW5jaGluZwoKQnJhbmNoaW5nIGFsbG93cyBvbmUgb2YgbXVsdGlwbGUgcGF0aHMgdG8gYmUgZm9sbG93ZWQgaW4gdGhlIHRlbXBsYXRlIGF0IHJlbmRlcmluZyB0aW1lIGJhc2VkIG9uIHRoZSByZXN1bHQgb2YgYW4gZXhwcmVzc2lvbi4gVGhlIHNwZWNpYWwgcHJvcGVydGllcyBgJGlmYCwgYCR0aGVuYCwgYW5kIGAkZWxzZWAgYXJlIHVzZWQgZm9yIHRoaXMuIEZvciBleGFtcGxlOgoKYGBgeWFtbApmb286CiAgJGlmOiAke3ZhbHVlID4gNX0KICAkdGhlbjogSSBhbSBiaWcKICAkZWxzZTogSSBhbSBzbWFsbApgYGAKCklmIHJlbmRlcmVkIHdpdGggYHsidmFsdWUiOiAxfWAgdGhlIHJlc3VsdCB3aWxsIGJlOgoKYGBganNvbgp7CiAgImZvbyI6ICJJIGFtIHNtYWxsIgp9CmBgYAoKTm90aWNlIHRoYXQgdGhlIHNwZWNpYWwgcHJvcGVydGllcyBhcmUgY29tcGxldGVseSByZW1vdmVkIGFuZCByZXBsYWNlZCB3aXRoIHRoZSBjb250ZW50cyBvZiBlaXRoZXIgdGhlIGAkdGhlbmAgb3IgYCRlbHNlYCBjbGF1c2VzLiBTbyB3aGlsZSBpbiB0aGUgX3RlbXBsYXRlXyBgZm9vYCBpcyBhbiBvYmplY3QsIHRoZSBlbmQgcmVzdWx0IGlzIHRoYXQgYGZvb2AgaXMgYSBzdHJpbmcgYW5kIHdvdWxkIHBhc3MgdGhlIG91dHB1dCBzY2hlbWEuCgpJZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSBhbmQgbm8gYCR0aGVuYCBpcyBnaXZlbiwgdGhlbiB0aGUgcHJvcGVydHkgaXMgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQuCgojIyMgTG9vcGluZwoKTG9vcGluZyBhbGxvd3MgYW4gYXJyYXkgb2YgaW5wdXRzIHRvIGJlIGV4cGFuZGVkIGludG8gdGhlIHJlbmRlcmVkIG91dHB1dCB1c2luZyBhIHBlci1pdGVtIHRlbXBsYXRlLiBUaGUgYCRmb3JgLCBgJGFzYCwgYW5kIGAkZWFjaGAgc3BlY2lhbCBwcm9wZXJ0aWVzIGFyZSB1c2VkIGZvciB0aGlzLiBGb3IgZXhhbXBsZToKCmBgYHlhbWwKc3F1YXJlczoKICAkZm9yOiAke251bWJlcnN9CiAgJGVhY2g6ICR7aXRlbSAqIGl0ZW19CmBgYAoKSWYgcmVuZGVyZWQgd2l0aCBgeyJudW1iZXJzIjogWzEsIDIsIDNdfWAgdGhlIHJlc3VsdCB3aWxsIGJlOgoKYGBganNvbgp7CiAgInNxdWFyZXMiOiBbMiwgNCwgOV0KfQpgYGAKClRoZSBgJGFzYCBwcm9wZXJ0eSBjb250cm9scyB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgaG9sZGluZyB0aGUgY3VycmVudCBpdGVtLCB3aGljaCBkZWZhdWx0cyB0byBgaXRlbWAuIEEgbG9jYWwgdmFyaWFibGUgYGxvb3BgIGlzIGFsc28gc2V0LCB3aGljaCBpbmNsdWRlcyBhbiBgaW5kZXhgLCBhbmQgd2hldGhlciB0aGUgaXRlbSBpcyB0aGUgYGZpcnN0YCBvciBgbGFzdGAgaW4gdGhlIGFycmF5LiBJZiB1c2luZyBgJGFzYCB0aGVuIHRoZSBgbG9vcGAgdmFyaWFibGUgaXMgbmFtZWQgYGxvb3BfYCArIHRoZSBgJGFzYCB2YWx1ZS4gVGhpcyBhbGxvd3MgbmVzdGVkIGxvb3BzIHRvIGFjY2VzcyBib3RoIHRoZWlyIG93biBhbmQgb3V0ZXIgc2NvcGUncyBsb29wIHZhcmlhYmxlcy4gRm9yIGV4YW1wbGU6CgpgYGB5YW1sCnRoaW5nczoKICAkZm9yOiAke3RoaW5nc30KICAkYXM6IHRoaW5nCiAgJGVhY2g6CiAgICBpZDogJHtsb29wX3RoaW5nLmluZGV4fS0ke3RoaW5nLm5hbWV9CiAgICB0YWdzOgogICAgICAkZm9yOiAke3RhZ3N9CiAgICAgICRhczogdGFnCiAgICAgICRlYWNoOiAke2xvb3BfdGhpbmcuaW5kZXh9LSR7bG9vcF90YWcuaW5kZXh9LSR7dGFnfQpgYGAKCkdpdmVuOgoKYGBganNvbgp7CiAgInRoaW5ncyI6IFt7ICJuYW1lIjogIkFsaWNlIiB9LCB7ICJuYW1lIjogIkJvYiIgfV0sCiAgInRhZ3MiOiBbImJpZyIsICJzbWFsbCJdCn0KYGBgCgpZb3Ugd291bGQgZ2V0IGFzIG91dHB1dDoKCmBgYGpzb24KewogICJ0aGluZ3MiOiBbCiAgICB7CiAgICAgICJpZCI6ICIwLUFsaWNlIiwKICAgICAgInRhZ3MiOiBbIjAtMC1iaWciLCAiMC0xLXNtYWxsIl0KICAgIH0sCiAgICB7CiAgICAgICJpZCI6ICIxLUJvYiIsCiAgICAgICJ0YWdzIjogWyIxLTAtYmlnIiwgIjEtMS1zbWFsbCJdCiAgICB9CiAgXQp9CmBgYAoKIyMjIEZsYXR0ZW4KClRoZSBgJGZsYXR0ZW5gIHNwZWNpYWwgb3BlcmF0b3IgdGFrZXMgYW4gYXJyYXkgb2YgYXJyYXlzIGFuZCBmbGF0dGVucyB0aGVtIG9uZSBsZXZlbCBpbnRvIGEgc2luZ2xlIGFycmF5LiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGEgbnVtYmVyIG9mIHNjZW5hcmlvcyBsaWtlOgoKLSBBZGRpbmcgZGVmYXVsdCBpdGVtcyB0byBhIGAkZm9yYCBsb29wIG91dHB1dAotIEhhdmluZyBvbmUgaXRlbSBvZiBhIGAkZm9yYCBjbGF1c2UgZ2VuZXJhdGUgbXVsdGlwbGUgb3V0cHV0cwoKRm9yIGEgc2ltcGxlIGV4YW1wbGU6CgpgYGB5YW1sCm15X2FycmF5OgogICRmbGF0dGVuOgogICAgLSBbMCwgMSwgMl0KICAgIC0gWzMsIDQsIDVdCiAgICAtIFs2LCA3LCA4XQpgYGAKClRoaXMgd291bGQgcmVzdWx0IGluOgoKYGBganNvbgp7CiAgIm15X2FycmF5IjogWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDhdCn0KYGBgCgpNb3JlIGNvbXBsZXggc2NlbmFyaW9zIGFyZSBwb3NzaWJsZSB3aGVuIGNvbWJpbmVkIHdpdGggYCRmb3JgIGNsYXVzZXM6CgpgYGB5YW1sCiMgTG9vcCB0aHJvdWdoIHRoZSBpdGVtcyB0d2ljZSwgZ2VuZXJhdGluZyBvbmUgaXRlbSBhdCBhIHRpbWUuCmFwcGVuZGVkX2FycmF5OgogICRmbGF0dGVuOgogICAgLSAkZm9yOiAke2l0ZW1zfQogICAgICAkZWFjaDogJHtpdGVtfQogICAgLSAkZm9yOiAke2l0ZW1zfQogICAgICAkZWFjaDogJHtpdGVtICogaXRlbX0KIyBMb29wIHRocm91Z2ggdGhlIGl0ZW1zIG9uY2UsIGdlbmVyYXRpbmcgYSBsaXN0IGZvciBlYWNoIGl0ZW0uCm1lcmdlZF9hcnJheToKICAkZmxhdHRlbjoKICAgICRmb3I6ICR7aXRlbXN9CiAgICAkZWFjaDoKICAgICAgLSAke2l0ZW19CiAgICAgIC0gJHtpdGVtICogaXRlbX0KYGBgCgpJZiBnaXZlbjoKCmBgYGpzb24KewogICJpdGVtcyI6IFsyLCAzLCA0XQp9CmBgYAoKWW91IHdvdWxkIGdldDoKCmBgYGpzb24KewogICJhcHBlbmRlZF9hcnJheSI6IFsyLCAzLCA0LCA0LCA5LCAxNl0sCiAgIm1lcmdlZF9hcnJheSI6IFsyLCA0LCAzLCA5LCA0LCAxNl0KfQpgYGAKCiMjIE9wZW4gUXVlc3Rpb25zCgoxLiBTaG91bGQgd2Ugc3VwcG9ydCBtYWNyb3M/IENvdWxkIGJlIGRvbmUgd2l0aCBgJHJlZmAgaW4gdGhlIHRlbXBsYXRlLCBhbmQgd2UgY291bGQgYWRkIGEgdG9wLWxldmVsIGBtYWNyb3NgIG9yIGBkZWZpbml0aW9uc2AgZm9yIGRvY3VtZW50LWxvY2FsIHJlZnMuIFRoZXkgd291bGQgYmUgZHJvcC1pbiBvbmx5LCBubyBjYWxsaW5nIHdpdGggYXJndW1lbnRzLCBidXQgd291bGQgcmVuZGVyIGJhc2VkIG9uIHRoZSBjdXJyZW50IHBhcmFtcyBjb250ZXh0LgoKMi4gU2hvdWxkIGBuaWxgIHJlc3VsdHMgZnJvbSBpbnRlcnBvbGF0aW9uIGJlIHJlbmRlcmVkIGluIHRoZSBmaW5hbCBvdXRwdXQ/IEV4YW1wbGU6IGBuYW1lOiAke25hbWV9YCBhbmQgd2hhdCBpZiBgbmFtZWAgaXMgYG5pbGA/CgozLiBTdXBwb3J0IGZvciBjb25zdGFudHM/IFZhbHVlcyB0aGF0IHNob3VsZCBhbHdheXMgYmUgcHJlc2VudCBpbiB0aGUgcGFyYW1zIHRoYXQgY2FuIGNvbnRhaW4gY29tcGxleCBhbmQgcmV1c2FibGUgZGF0YSBmb3IgdGhlIHRlbXBsYXRlPwoKNC4gQWJpbGl0eSB0byBzb3J0IGAkZm9yYCBsb29wIG91dHB1dCBiYXNlZCBvbiBzb21lIGV4cHI/Cg== readmeEtag: '"8ffd0423b33657c111a60b76c8896c991707fbbd"' readmeLastModified: Thu, 16 Dec 2021 17:31:33 GMT repositoryId: 418250995 description: Structured Data Templates created: '2021-10-17T20:42:58Z' updated: '2025-02-13T08:07:24Z' language: Go archived: false stars: 6 watchers: 1 forks: 2 owner: danielgtaylor logo: https://avatars.githubusercontent.com/u/106826?v=4 license: MIT repoEtag: '"6b74ac3fcdbb0aadc76a8af83c3471b007bcb2b2ea51fc5a5bc9b5eaa4db0947"' repoLastModified: Thu, 13 Feb 2025 08:07:24 GMT foundInMaster: true category: Parsers id: 47cf5346c9ca65f18c438755c3812912 - source: openapi3 tags repository: https://github.com/skaffolder/skaffolder-vscode-extension v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9za2FmZm9sZGVyLmNvbSI+PGltZyBzcmM9Imh0dHBzOi8vc2thZmZvbGRlci5jb20vaW1nL2xvZ28vc2thZmZvbGRlcl9sb2dvLXdoaXRlX2JnLnBuZyIgd2lkdGg9IjcwJSI+PC9hPjwvcD4KCjxwIGFsaWduPSJjZW50ZXIiPgogIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9za2FmZm9sZGVyL3NrYWZmb2xkZXItdnNjb2RlLWV4dGVuc2lvbi9hY3Rpb25zIj4KCSAgPGltZyBhbHQ9IkdpdEh1YiBXb3JrZmxvdyBTdGF0dXMiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvd29ya2Zsb3cvc3RhdHVzL3NrYWZmb2xkZXIvc2thZmZvbGRlci12c2NvZGUtZXh0ZW5zaW9uL21haW4iPgogIDwvYT4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2thZmZvbGRlci9za2FmZm9sZGVyLXZzY29kZS1leHRlbnNpb24vYmxvYi9tYXN0ZXIvTElDRU5TRSI+CiAgICA8aW1nIGFsdD0iR2l0SHViIExpY2Vuc2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9za2FmZm9sZGVyL3NrYWZmb2xkZXItdnNjb2RlLWV4dGVuc2lvbiI+CiAgPC9hPgo8L3A+CgohW0V4dGVuc2lvbiBHaWZdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9za2FmZm9sZGVyL3NrYWZmb2xkZXItdnNjb2RlLWV4dGVuc2lvbi9hc3NldHMvZ2lmL3ZzY29kZV9zYW1wbGUuZ2lmKQoKIyBTa2FmZm9sZGVyIEdlbmVyYXRvcgoKVGhpcyBleHRlbnNpb24gYWxsb3dzIHRvIGNyZWF0ZSwgZWRpdCBhbmQgbWFuYWdlIGEgW1NrYWZmb2xkZXJdKGh0dHBzOi8vd3d3LnNrYWZmb2xkZXIuY29tKSBwcm9qZWN0LgoKSXQgYWxsb3dzIHRvIGNyZWF0ZSB3ZWIgYW5kIG1vYmlsZSBhcHBsaWNhdGlvbnMgc3RhcnRpbmcgZnJvbSB0aGUgdGVjaG5pY2FsIGRvY3VtZW50YXRpb24gb2YgZGF0YWJhc2UgbW9kZWxzLCBBUElzIGFuZCBwYWdlcy4KClRoZSBkb2N1bWVudGF0aW9uIGNhbiBiZSBkZWZpbmVkIGZyb20gdGhlIFtTa2FmZm9sZGVyIHdlYiBpbnRlcmZhY2VdKGh0dHBzOi8vYXBwLnNrYWZmb2xkZXIuY29tKSBoYXZpbmcgYSBmcmVlIFNrYWZmb2xkZXIgYWNjb3VudCBvciBmcm9tIHRoZSBvcGVuYXBpLnlhbWwgZmlsZSB0aGF0IGV4dGVuZHMgdGhlIE9wZW5BUEkgMy4wIHN0YW5kYXJkcy4gVGhpcyBleGVuc2lvbiBhbGxvd3MgdG8gZWRpdCB0aGUgb3BlbmFwaSBmaWxlIGZyb20gYSB2aXN1YWwgaW50ZXJmYWNlIGFjY29yZGluZyB0byB0aGUgU2thZmZvbGRlcidzIHN0YW5kYXJkcy4KCiMjIEZlYXR1cmVzCgotIENyZWF0ZSBGZWF0dXJlcwogIC0gW0NyZWF0ZSBwcm9qZWN0XSgjY3JlYXRlLXByb2plY3QpCiAgLSBbQ3JlYXRlIG1vZGVsXSgjY3JlYXRlLW1vZGVsKQogIC0gW0NyZWF0ZSBhcGldKCNjcmVhdGUtYXBpKQogIC0gW0NyZWF0ZSBwYWdlXSgjY3JlYXRlLXBhZ2UpCiAgLSBbQ3JlYXRlIGNydWRdKCNjcmVhdGUtY3J1ZCkKLSBbT3BlbiByZWFsZWF0aXZlIGZpbGVzXSgjb3Blbi1maWxlcykKLSBbR2VuZXJhdGUgcHJvamVjdF0oI2dlbmVyYXRlLWNvZGUpCi0gW0VkaXRpbmcgY29tcG9uZXRuc10oI2VkaXRpbmctY29tcG9uZW50cykKLSBTa2FmZm9sZGVyIEFjY291bnQgZmVhdHVyZXMKICAtIFNrYWZmb2xkZXIgTG9naW4vTG9nb3V0CiAgLSBbRXhwb3J0IHByb2plY3QgdG8gU2thZmZvbGRlciBQbGF0Zm9ybV0oI2V4cG9ydC1wcm9qZWN0KQotIFtTZXR0aW5nIGZvciBvbi1wcmVtaXNlXSgjZXh0ZW5zaW9uLXNldHRpbmdzLWZvci1vbi1wcmVtaXNlKQoKLS0tCgojIyMgQ3JlYXRlIFByb2plY3QKCkNyZWF0ZSBhIG5ldyBsb2NhbCBTa2FmZm9sZGVyIHByb2plY3QgYnkgY2xpY2tpbmcgb24gX0NyZWF0ZSBwcm9qZWN0c18uIFRoZSBidXR0b24gd2lsbCBvbmx5IGFwcGVhciBpZiB0aGUgZXh0ZW5zaW9uIGNhbid0IGZpbmQgYW4gb3BlbmFwaS55YW1sIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIGN1cnJlbnQgd29ya3NwYWNlLgoKIVtDcmVhdGUgcHJvamVjdCBHaWZdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9za2FmZm9sZGVyL3NrYWZmb2xkZXItdnNjb2RlLWV4dGVuc2lvbi9hc3NldHMvZ2lmL2NyZWF0ZV9wcm9qZWN0LmdpZikKCiMjIyBHZW5lcmF0ZSBjb2RlCgpHZW5lcmF0ZSB0aGUgc291cmNlIGNvZGUgb2YgeW91ciBwcm9qZWN0IGZyb20gdGhlIG9wZW5hcGkueWFtbCBmaWxlLgoKIVtHZW5lcmF0ZSBjb2RlIEdpZl0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NrYWZmb2xkZXIvc2thZmZvbGRlci12c2NvZGUtZXh0ZW5zaW9uL2Fzc2V0cy9naWYvZ2VuZXJhdGVfY29kZS5naWYpCgojIyMgRXhwb3J0IHByb2plY3QKCkV4cG9ydCB5b3VyIGxvY2FsIHByb2plY3QgdG8gU2thZmZvbGRlciBQbGF0Zm9ybS4KQmVmb3JlIGV4cG9ydGluZyB5b3VyIHByb2plY3QgeW91IG5lZWQgdG8gbG9naW4gd2l0aCB5b3VyIFNrYWZmb2xkZXIgW2FjY291bnRdKCNyZXF1aXJlbWVudHMpLgoKIVtFeHBvcnQgcHJvamVjdCBHaWZdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9za2FmZm9sZGVyL3NrYWZmb2xkZXItdnNjb2RlLWV4dGVuc2lvbi9hc3NldHMvZ2lmL2V4cG9ydF9wcm9qZWN0LmdpZikKCiMjIyBDcmVhdGUgbW9kZWwKCkNyZWF0ZSBhIG5ldyBtb2RlbCBpbiB0aGUgU2thZmZvbGRlciBwcm9qZWN0IGJ5IGNsaWNraW5nIG9uIHRoZSBzeW1ib2wgYCtgIG9mIGEgZGF0YWJhc2UgZnJvbSB0aGUgVHJlZVZpZXcgb2YgeW91ciBwcm9qZWN0OgoKIVtDcmVhdGUgbW9kZWwgZ2lmXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc2thZmZvbGRlci9za2FmZm9sZGVyLXZzY29kZS1leHRlbnNpb24vYXNzZXRzL2dpZi9jcmVhdGVfbW9kZWwuZ2lmKQoKT3IgYnkgdHlwaW5nIGBzayBtb2RlbGAgaW4gdGhlIENvbW1hbmQgUGFsZXR0ZToKCiFbQ3JlYXRlIG1vZGVsIGdpZl0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NrYWZmb2xkZXIvc2thZmZvbGRlci12c2NvZGUtZXh0ZW5zaW9uL2Fzc2V0cy9naWYvcGFsZXR0ZV9jcmVhdGVfbW9kZWwuZ2lmKQoKIyMjIENyZWF0ZSBhcGkKCkNyZWF0ZSBhIG5ldyBhcGkgaW50IHRoZSBTa2FmZm9sZGVyIHByb2plY3QgYnkgY2xpY2tpbmcgb24gdGhlIHN5bWJvbCBgK2Agb2YgYSBtb2RlbCBmcm9tIHRoZSBUcmVlVmlldyBvZiB5b3VyIHByb2plY3Q6CgohW0NyZWF0ZSBhcGkgZ2lmXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc2thZmZvbGRlci9za2FmZm9sZGVyLXZzY29kZS1leHRlbnNpb24vYXNzZXRzL2dpZi9jcmVhdGVfYXBpLmdpZikKCk9yIGJ5IHR5cGluZyBgc2sgYXBpYCBpbiB0aGUgQ29tbWFuZCBQYWxldHRlOgoKIVtDcmVhdGUgYXBpIGdpZl0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NrYWZmb2xkZXIvc2thZmZvbGRlci12c2NvZGUtZXh0ZW5zaW9uL2Fzc2V0cy9naWYvcGFsZXR0ZV9jcmVhdGVfYXBpLmdpZikKCiMjIyBDcmVhdGUgcGFnZQoKQ3JlYXRlIGEgbmV3IHBhZ2UgaW4gdGhlIFNrYWZmb2xkZXIgcHJvamVjdCBieSBjbGlja2luZyBvbiB0aGUgc3ltYm9sIGArYCBvbiB0aGUgX1BBR0VTXyBwYW5lbCBvZiB5b3VyIHByb2plY3Q6CgohW0NyZWF0ZSBwYWdlIGdpZl0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NrYWZmb2xkZXIvc2thZmZvbGRlci12c2NvZGUtZXh0ZW5zaW9uL2Fzc2V0cy9naWYvY3JlYXRlX3BhZ2UuZ2lmKQoKT3IgYnkgdHlwaW5nIGBzayBwYWdlYCBpbiB0aGUgQ29tbWFuZCBQYWxldHRlOgoKIVtDcmVhdGUgcGFnZSBnaWZdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9za2FmZm9sZGVyL3NrYWZmb2xkZXItdnNjb2RlLWV4dGVuc2lvbi9hc3NldHMvZ2lmL3BhbGV0dGVfY3JlYXRlX3BhZ2UuZ2lmKQoKIyMjIENyZWF0ZSBDUlVECgpDcmVhdGUgYSBDUlVEIGludGVyZmFjZSBmb3IgYSBtb2RlbCBieSBjbGlja2luZyBieSBfQ3JlYXRlIENSVURfIG9mIGEgdGhlIG1vZGVsIGVkaXRpbmcgcGFuZWw6CgohW0NyZWF0ZSBjcnVkIGdpZl0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NrYWZmb2xkZXIvc2thZmZvbGRlci12c2NvZGUtZXh0ZW5zaW9uL2Fzc2V0cy9naWYvY3JlYXRlX2NydWQuZ2lmKQoKIyMjIE9wZW4gRmlsZXMKCk9wZW4gZmlsZXMgcmVsYXRlZCB0byBhIG1vZGVsLCBhcGkgb3IgYSBwYWdlIGJ5IGNsaWNraW5nIG9uIHRoZSBpY29uIG5leHQgdGhlIGVkaXQgaWNvbiBvciBieSBfT3BlbiByZWxhdGVkIGZpbGVzXyBpbiB0aGUgY29tcG9uZW50J3MgZWRpdGluZyBwYW5lbDoKCiFbT3BlbiBmaWxlcyBHaWZdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9za2FmZm9sZGVyL3NrYWZmb2xkZXItdnNjb2RlLWV4dGVuc2lvbi9hc3NldHMvZ2lmL29wZW5fZmlsZXMuZ2lmKQoKIyMjIEVkaXRpbmcgY29tcG9uZW50cwoKRWRpdCBhIGNvbXBvbmVudCBieSBjbGlja2luZyB0aGUgZWRpdCBpY29uIGFuZCBhIG5ldyBlZGl0aW5nIHBhbmVsIHdpbGwgb3Blbi4gV2hlbiBzYXZpbmcsIGFueSBtb2RpZmljYXRpb24gd2lsbCBiZSB3cml0dGVuIGluIHRoZSBvcGVuYXBpLnlhbWwgZmlsZS4KCiFbQWRkIGF0dHJpYnV0ZSBmcm9tIHBhbmVsIGdpZl0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NrYWZmb2xkZXIvc2thZmZvbGRlci12c2NvZGUtZXh0ZW5zaW9uL2Fzc2V0cy9naWYvYWRkX2F0dHJpYnV0ZS5naWYpCgpPciB5b3UgY2FuIGVkaXQgZGlyZWN0bHkgZnJvbSB0aGUgb3BlbmFwaS55YW1sIGZpbGU6CgohW0VkaXQgYXR0cmlidXRlIGZyb20gZmlsZSBnaWZdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9za2FmZm9sZGVyL3NrYWZmb2xkZXItdnNjb2RlLWV4dGVuc2lvbi9hc3NldHMvZ2lmL2VkaXRfYXR0cmlidXRlX2ZpbGUuZ2lmKQoKIyMgUmVxdWlyZW1lbnRzCgpPcHRpb25hbCBmcmVlIFNrYWZmb2xkZXIgYWNjb3VudDoKaHR0cHM6Ly9za2FmZm9sZGVyLmNvbS9yZWdpc3RlcgoKLS0tCgojIyBFeHRlbnNpb24gU2V0dGluZ3MgZm9yIG9uLXByZW1pc2UKCi0gYHNrYWZmb2xkZXIuZW5kcG9pbnRgOiBjb25maWd1cmUgbGluayB3aXRoIG9uLXByZW1pc2UgU2thZmZvbGRlciBwbGF0Zm9ybQotIGBza2FmZm9sZGVyLmVuZHBvaW50RG9jc2A6IGNvbmZpZ3VyZSBsaW5rIHdpdGggb24tcHJlbWlzZSBTa2FmZm9sZGVyIHBsYXRmb3JtIGZvciBkaXNwbGF5aW5nIGRvY3VtZW50YXRpb24KCk1vcmUgaW5mbyBvbiBTa2FmZm9sZGVyIG9uLXByZW1pc2UgZm9yIGVudGVycHJpc2VzIFtoZXJlXShodHRwczovL3NrYWZmb2xkZXIuY29tL2VudGVycHJpc2Uvb3ZlcnZpZXcpLgoKR2V0IFNrYWZmb2xkZXIgb24tcHJlbWlzZSBmcm9tOgoKLSBbRG9ja2VyIEh1Yl0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9fL3NrYWZmb2xkZXItZW50ZXJwcmlzZSkKLSBbR29vZ2xlIE1hcmtldHBsYWNlXShodHRwczovL2NvbnNvbGUuY2xvdWQuZ29vZ2xlLmNvbS9tYXJrZXRwbGFjZS9kZXRhaWxzL3NrYWZmb2xkZXItcHVibGljL3NrYWZmb2xkZXItZW50ZXJwcmlzZSkKLSBbQVdTIE1hcmtldHBsYWNlXShodHRwczovL2F3cy5hbWF6b24uY29tL21hcmtldHBsYWNlL3BwL0IwN1NXNEdQRlkpCi0gW0RpZ2l0YWxPY2VhbiBNYXJrZXRwbGFjZV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS5kaWdpdGFsb2NlYW4uY29tL2FwcHMvc2thZmZvbGRlci1lbnRlcnByaXNlKQoKLS0tCgojIyBDb250cmlidXRpbmcKClNrYWZmb2xkZXItZ2VuZXJhdG9yIGlzIGFuIG9wZW4tc291cmNlIHByb2plY3QuIEZlZWwgZnJlZSB0byBwcm9wb3NlIGVuaGFuY2VtZW50cyBzdWdnZXN0aW9ucywgcmVwb3J0IGJ1Z3MgYW5kIHRvIHN1Ym1pdCBwdWxsIHJlcXVlc3RzLgo= readmeEtag: '"d51ce444776820d34b678f0886b8179d40404f57"' readmeLastModified: Sat, 18 Jul 2020 18:17:07 GMT repositoryId: 237040227 description: >- This VSCode Extension allows to generate web app from documentation in your IDE. You can import APIs from a OpenAPI 3.0 file or define it by yourself. created: '2020-01-29T17:18:35Z' updated: '2024-03-26T08:58:48Z' language: TypeScript archived: false stars: 5 watchers: 2 forks: 6 owner: skaffolder logo: https://avatars.githubusercontent.com/u/35335745?v=4 license: GPL-3.0 repoEtag: '"b783319cfe55880d4d1deea00f3834b6240800759f268d190f7372b5c8ef299f"' repoLastModified: Tue, 26 Mar 2024 08:58:48 GMT foundInMaster: true category: SDK id: 4e921d6ee7f9e5bec7ded491eb1b25ba - source: openapi3 tags repository: https://github.com/correl/tornado-openapi3 v3: true repositoryMetadata: base64Readme: >- PT09PT09PT09PT09PT09PT09PQogVG9ybmFkbyBPcGVuQVBJIDMKPT09PT09PT09PT09PT09PT09PQoKLi4gaW1hZ2U6OiBodHRwczovL2dpdGh1Yi5jb20vY29ycmVsL3Rvcm5hZG8tb3BlbmFwaTMvYWN0aW9ucy93b3JrZmxvd3MvdGVzdC55bWwvYmFkZ2Uuc3ZnP2JyYW5jaD1tYXN0ZXIKICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9jb3JyZWwvdG9ybmFkby1vcGVuYXBpMy9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbD9icmFuY2g9bWFzdGVyCi4uIGltYWdlOjogaHR0cHM6Ly9jb2RlY292LmlvL2doL2NvcnJlbC90b3JuYWRvLW9wZW5hcGkzL2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPUNUWVdXRFhUTDkKICAgIDp0YXJnZXQ6IGh0dHBzOi8vY29kZWNvdi5pby9naC9jb3JyZWwvdG9ybmFkby1vcGVuYXBpMwouLiBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL3Rvcm5hZG8tb3BlbmFwaTMvYmFkZ2UvCiAgICA6dGFyZ2V0OiBodHRwczovL3Rvcm5hZG8tb3BlbmFwaTMucmVhZHRoZWRvY3MuaW8KLi4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NvZGUlMjBzdHlsZS1ibGFjay0wMDAwMDAuc3ZnCiAgICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vcHNmL2JsYWNrCgoKVG9ybmFkbyBPcGVuQVBJIDMgcmVxdWVzdCBhbmQgcmVzcG9uc2UgdmFsaWRhdGlvbiBsaWJyYXJ5LgoKUHJvdmlkZXMgaW50ZWdyYXRpb24gYmV0d2VlbiB0aGUgYFRvcm5hZG9gXyB3ZWIgZnJhbWV3b3JrIGFuZCBgT3BlbmFwaS1jb3JlYF8KbGlicmFyeSBmb3IgdmFsaWRhdGluZyByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzIGFnYWluc3QgYW4gYE9wZW5BUEkgM2BfCnNwZWNpZmljYXRpb24uCgpGdWxsIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdG9ybmFkby1vcGVuYXBpMy5yZWFkdGhlZG9jcy5pbwoKVXNhZ2UKPT09PT0KCkFkZGluZyB2YWxpZGF0aW9uIHRvIHJlcXVlc3QgaGFuZGxlcnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLi4gY29kZTo6IHB5dGhvbgoKICAgaW1wb3J0IHRvcm5hZG8uaW9sb29wCiAgIGltcG9ydCB0b3JuYWRvLndlYgogICBmcm9tIHRvcm5hZG9fb3BlbmFwaTMuaGFuZGxlciBpbXBvcnQgT3BlbkFQSVJlcXVlc3RIYW5kbGVyCgoKICAgY2xhc3MgTXlSZXF1ZXN0SGFuZGxlcihPcGVuQVBJUmVxdWVzdEhhbmRsZXIpOgogICAgICAgc3BlY19kaWN0ID0gewogICAgICAgICAgICJvcGVuYXBpIjogIjMuMC4wIiwKICAgICAgICAgICAiaW5mbyI6IHsKICAgICAgICAgICAgICAgInRpdGxlIjogIlNpbXBsZSBFeGFtcGxlIiwKICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAogICAgICAgICAgIH0sCiAgICAgICAgICAgInBhdGhzIjogewogICAgICAgICAgICAgICAiLyI6IHsKICAgICAgICAgICAgICAgICAgICJnZXQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgInJlc3BvbnNlcyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJbmRleCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dC9odG1sIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NoZW1hIjogeyJ0eXBlIjogInN0cmluZyJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICB9LAogICAgICAgfQoKCiAgIGNsYXNzIFJvb3RIYW5kbGVyKE15UmVxdWVzdEhhbmRsZXIpOgogICAgICAgYXN5bmMgZGVmIGdldChzZWxmKToKICAgICAgICAgICBzZWxmLmZpbmlzaCgiSGVsbG8sIFdvcmxkISIpCgoKICAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAgIGFwcCA9IHRvcm5hZG8ud2ViLkFwcGxpY2F0aW9uKFsociIvIiwgUm9vdEhhbmRsZXIpXSkKICAgICAgIGFwcC5saXN0ZW4oODg4OCkKICAgICAgIHRvcm5hZG8uaW9sb29wLklPTG9vcC5jdXJyZW50KCkuc3RhcnQoKQoKVmFsaWRhdGluZyByZXNwb25zZXMgaW4gdGVzdHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi4uIGNvZGU6OiBweXRob24KCiAgIGltcG9ydCB1bml0dGVzdAoKICAgaW1wb3J0IHRvcm5hZG8ud2ViCiAgIGZyb20gdG9ybmFkb19vcGVuYXBpMy50ZXN0aW5nIGltcG9ydCBBc3luY09wZW5BUElUZXN0Q2FzZQoKCiAgIGNsYXNzIFJvb3RIYW5kbGVyKHRvcm5hZG8ud2ViLlJlcXVlc3RIYW5kbGVyKToKICAgICAgIGFzeW5jIGRlZiBnZXQoc2VsZik6CiAgICAgICAgICAgc2VsZi5maW5pc2goIkhlbGxvLCBXb3JsZCEiKQoKCiAgIGNsYXNzIEJhc2VUZXN0Q2FzZShBc3luY09wZW5BUElUZXN0Q2FzZSk6CiAgICAgICBzcGVjX2RpY3QgPSB7CiAgICAgICAgICAgIm9wZW5hcGkiOiAiMy4wLjAiLAogICAgICAgICAgICJpbmZvIjogewogICAgICAgICAgICAgICAidGl0bGUiOiAiU2ltcGxlIEV4YW1wbGUiLAogICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgICAgICAgICAgfSwKICAgICAgICAgICAicGF0aHMiOiB7CiAgICAgICAgICAgICAgICIvIjogewogICAgICAgICAgICAgICAgICAgImdldCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkluZGV4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb250ZW50IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0L2h0bWwiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7InR5cGUiOiAic3RyaW5nIn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0sCiAgICAgICB9CgogICAgICAgZGVmIGdldF9hcHAoc2VsZik6CiAgICAgICAgICAgcmV0dXJuIHRvcm5hZG8ud2ViLkFwcGxpY2F0aW9uKFsociIvIiwgUm9vdEhhbmRsZXIpXSkKCiAgICAgICBkZWYgdGVzdF9yb290X2VuZHBvaW50KHNlbGYpOgogICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5mZXRjaCgiLyIpCiAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLmNvZGUpCiAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIkhlbGxvLCBXb3JsZCEiLCByZXNwb25zZS5ib2R5KQoKCiAgIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICB1bml0dGVzdC5tYWluKCkKCkNvbnRyaWJ1dGluZwo9PT09PT09PT09PT0KCkdldHRpbmcgU3RhcnRlZAotLS0tLS0tLS0tLS0tLS0KClRoaXMgcHJvamVjdCB1c2VzIGBQb2V0cnlgXyB0byBtYW5hZ2UgaXRzIGRlcGVuZGVuY2llcy4gVG8gc2V0IHVwIGEgbG9jYWwKZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGp1c3QgcnVuOgoKLi4gY29kZTo6IHNoCgogICAgcG9ldHJ5IGluc3RhbGwKCkZvcm1hdHRpbmcgQ29kZQotLS0tLS0tLS0tLS0tLS0KClRoZSBgQmxhY2tgXyB0b29sIGlzIHVzZWQgYnkgdGhpcyBwcm9qZWN0IHRvIGZvcm1hdCBQeXRob24gY29kZS4gSXQgaXMgaW5jbHVkZWQKYXMgYSBkZXZlbG9wbWVudCBkZXBlbmRlbmN5LCBhbmQgc2hvdWxkIGJlIHJ1biBvbiBhbGwgY29tbWl0dGVkIGNvZGUuIFRvIGZvcm1hdApjb2RlIHByaW9yIHRvIGNvbW1pdHRpbmcgaXQgYW5kIHN1Ym1pdHRpbmcgYSBQUiwgcnVuOgoKLi4gY29kZTo6IHNoCgogICAgcG9ldHJ5IHJ1biBibGFjayAuCgpSdW5uaW5nIFRlc3RzCi0tLS0tLS0tLS0tLS0KCmBweXRlc3RgXyBpcyB0aGUgcHJlZmVycmVkIHRlc3QgcnVubmVyIGZvciB0aGlzIHByb2plY3QuIEl0IGlzIGluY2x1ZGVkIGFzIGEKZGV2ZWxvcG1lbnQgZGVwZW5kZW5jeSwgYW5kIGlzIGNvbmZpZ3VyZWQgdG8gdHJhY2sgY29kZSBjb3ZlcmFnZSwgYEZsYWtlOGBfCnN0eWxlIGNvbXBsaWFuY2UsIGFuZCBgQmxhY2tgXyBjb2RlIGZvcm1hdHRpbmcuIFRlc3RzIGNhbiBiZSBydW4gaW4geW91cgpkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBieSBydW5uaW5nOgoKLi4gY29kZTo6IHNoCgogICAgcG9ldHJ5IHJ1biBweXRlc3QKCkFkZGl0aW9uYWxseSwgdGVzdHMgY2FuIGJlIHJ1biB1c2luZyBgdG94YF8sIHdoaWNoIHdpbGwgcnVuIHRoZSB0ZXN0cyB1c2luZwptdWx0aXBsZSB2ZXJzaW9ucyBvZiBib3RoIFB5dGhvbiBhbmQgVG9ybmFkbyB0byBlbnN1cmUgYnJvYWQgY29tcGF0aWJpbGl0eS4KCkNvbmZpZ3VyaW5nIEh5cG90aGVzaXMKXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgoKTWFueSBvZiB0aGUgdGVzdHMgbWFrZSB1c2Ugb2YgYEh5cG90aGVzaXNgXyB0byBzcGVjaWZ5IHRoZWlyIGV4cGVjdGF0aW9ucyBhbmQKZ2VuZXJhdGUgYSBsYXJnZSB2b2x1bWUgb2YgcmFuZG9taXplZCB0ZXN0IGlucHV0LiBCZWNhdXNlIG9mIHRoaXMsIHRoZSB0ZXN0cyBtYXkKdGFrZSBhIGxvbmcgdGltZSB0byBydW4gb24gc2xvd2VyIGNvbXB1dGVycy4gVHdvIHByb2ZpbGVzIGFyZSBkZWZpbmVkIGZvcgpIeXBvdGhlc2lzIHRvIHVzZSB3aGljaCBjYW4gYmUgc2VsZWN0ZWQgYnkgc2V0dGluZyB0aGUgYGBIWVBPVEhFU0lTX1BST0ZJTEVgYAplbnZpcm9ubWVudCB2YXJpYWJsZSB0byBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CgpgYGNpYGAKICBSdW5zIHRlc3RzIHVzaW5nIHRoZSBkZWZhdWx0IEh5cG90aGVzaXMgc2V0dGluZ3MgKDEwMCBleGFtcGxlcyBwZXIgdGVzdCkgYW5kCiAgbm8gY29tcGxldGlvbiBkZWFkbGluZS4KCmBgZGV2YGAKICBUaGUgZmFzdGVzdCBwcm9maWxlLCBtZWFudCBmb3IgbG9jYWwgZGV2ZWxvcG1lbnQgb25seS4gVXNlcyBvbmx5IDEwIGV4YW1wbGVzCiAgcGVyIHRlc3Qgd2l0aCBubyBjb21wbGV0aW9uIGRlYWRsaW5lLgoKCi4uIF9CbGFjazogaHR0cHM6Ly9naXRodWIuY29tL3BzZi9ibGFjawouLiBfRmxha2U4OiBodHRwczovL2ZsYWtlOC5weWNxYS5vcmcvCi4uIF9IeXBvdGhlc2lzOiBodHRwczovL2h5cG90aGVzaXMucmVhZHRoZWRvY3MuaW8vCi4uIF9PcGVuQVBJIDM6IGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLwouLiBfT3BlbmFwaS1jb3JlOiBodHRwczovL2dpdGh1Yi5jb20vcDFjMnUvb3BlbmFwaS1jb3JlCi4uIF9Qb2V0cnk6IGh0dHBzOi8vcHl0aG9uLXBvZXRyeS5vcmcvCi4uIF9Ub3JuYWRvOiBodHRwczovL3d3dy50b3JuYWRvd2ViLm9yZy8KLi4gX3B5dGVzdDogaHR0cHM6Ly9weXRlc3Qub3JnLwouLiBfdG94OiBodHRwczovL3RveC5yZWFkdGhlZG9jcy5pby8K readmeEtag: '"7394fcb2479f537d061a59604e8e8b91cb442d7c"' readmeLastModified: Mon, 21 Oct 2024 03:27:13 GMT repositoryId: 296513121 description: Tornado OpenAPI 3 request and response validation library. created: '2020-09-18T04:27:02Z' updated: '2024-10-21T03:53:28Z' language: Python archived: false stars: 5 watchers: 2 forks: 4 owner: correl logo: https://avatars.githubusercontent.com/u/289305?v=4 license: MIT repoEtag: '"13a4505b2b198abb6e42dfec9d300a70ff5a5a77305cfa58c787367f2537a758"' repoLastModified: Mon, 21 Oct 2024 03:53:28 GMT foundInMaster: true category: - Data Validators - Server Implementations id: 12f81e818f4c0355eff255ec1102d959 - source: openapi3 tags repository: https://github.com/elevup/mogen v3: true repositoryMetadata: base64Readme: >- IVtNb2dlbiBsb2dvXShsb2dvLnN2ZyAiTW9nZW4gbG9nbyIpCgpNb2dlbiBpcyBhIHNtYWxsIGxpYnJhcnkgdGhhdCBjb252ZXJ0cyBLb3RsaW4ncyBtb2RlbHMgdG8gb3RoZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOgoKLSBEYXJ0IDIuMTIrLAotIE9wZW5BcGkgMy4wIFlNTCAoZ2VuZXJhdGVzIGBzY2hlbWFzYCBub2RlKSwKLSBTd2lmdCwKLSBUeXBlU2NyaXB0LgoKIyMjIE1vdGl2YXRpb24KCkluIGVsZXZ1cCB3ZSB1c3VhbGx5IHdyaXRlIGJhY2tlbmRzIGluIEtvdGxpbi4gVW5mb3J0dW5hdGVseSwgZnJvbnRlbmRzIGFyZSB3aG9sZSBvdGhlciBzdG9yeS4gU28gdGhlIG1haW4gZ29hbCB3YXMgdG8KZmluZCBhIHdheSB0byB0cmFuc2ZlciB0aGUga25vd2xlZGdlIGVmZmljaWVudGx5LCBhbmQgd2Ugd2VudCBmb3IgT3BlbkFwaS4gQnV0IHJld3JpdGluZyBlYWNoIGRpZmYgaW4gbW9kZWxzIHRvIE9wZW5BcGkKd2FzIG1vcmUtbGVzcyBwYWluIGFuZCBsaXRlcmFsbHkgbm8gb25lIHdhbnRlZCB0byBkbyBpdC4KClRoYW5rcyB0byBNb2dlbiB3ZSB3ZXJlIGFibGUgdG8gdGFrZSBhbGwgS290bGluIG1vZGVscyBhbmQgY29udmVydCB0aGVtIHRvIE9wZW5BcGkgZm9ybWF0LiBXZSBmZWx0IHRoYXQgaXQgd2FzIG5vdCAKZW5vdWdoIGNhdXNlIGFsbCBmcm9udGVuZCBkZXZzIGhhZCB0byByZXdyaXRlIHRoZW0gb25jZSBhZ2Fpbi4gU28gZXZlbnR1YWxseSB3ZSBhZGRlZCBjb252ZXJ0b3JzIHRvIG1vcmUgbGFuZ3VhZ2VzLgoKQXQgdGhpcyBtb21lbnQgd2UgZ2VuZXJhdGUgZnJvbnRlbmQgQVBJIG1vZGVscyBmcm9tIGJhY2tlbmQgbW9kZWxzLgoKIyMjIEZlYXR1cmVzClN1cHBvcnRlZCBmZWF0dXJlczoKIC0gcHJpbWl0aXZlcyAtIGNvbnZlcnNpb24gZnJvbSBLb3RsaW4gdG8gdGFyZ2V0IGxhbmd1YWdlLAogLSBob21vZ2Vub3VzIGl0ZXJhYmxlcyAtIHNlbGVjdCBjb2xsZWN0aW9ucyBhbmQgYXJyYXlzIGFyZSBjb252ZXJ0ZWQsCiAtIG51bGwtc2FmZXR5LAogLSBlbnVtcyAtIGluY2x1ZGluZyBjdXN0b20gc2VyaWFsaXNhdGlvbiBuYW1lLAogLSBjbGFzc2VzIC0gYWxsIHB1YmxpYyBwcm9wZXJ0aWVzIGFyZSB0cmFuc2Zvcm1lZCwKIC0gbmVzdGVkIGNsYXNzZXMsCiAtIHR5cGUgYWxpYXNlcyAtIG9ubHkgdHJpdmlhbCBjYXNlcywgZm9yIGV4YW1wbGUgYHR5cGVhbGlhcyBVc2VySWQgPSBMb25nYC4KClVuc3VwcG9ydGVkIGZlYXR1cmVzOgogLSBtYXBzLAogLSBnZW5lcmljcywKIC0gaW5oZXJpdGFuY2UsCiAtIGFic3RyYWN0IGNsYXNzZXMsCiAtIHBhY2thZ2VzICg9IG91dHB1dCBpcyBzdXBwb3NlZCB0byBiZSBwcmludGVkIGludG8gb25lIGZpbGUpLgoKSGF2ZSBhIGxvb2sgYXQgYHNhbXBsZS9zcmMvbWFpbmAgd2hlcmUgaW4gYGtvdGxpbmAgZm9sZGVyIGFyZSBzb3VyY2UgZmlsZXMgYW5kIGluIGByZXNvdXJjZXNgIGZvbGRlciAKeW91IGNhbiBmaW5kIGdlbmVyYXRlZCBvdXRwdXQuCgojIyBMYXRlc3QgdmVyc2lvbgoKTGlicmFyeSBpcyBhdmFpbGFibGUgb24gTWF2ZW4gQ2VudHJhbC4KCiFbTGF0ZXN0IHZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tY2VudHJhbC92L2NvbS5lbGV2dXAvbW9nZW4gIkxhdGVzdCBsaWIgdmVyc2lvbiIpCmBgYGdyb292eQppbXBsZW1lbnRhdGlvbiAnY29tLmVsZXZ1cDptb2dlbjokdmVyc2lvbicKYGBgCgojIyBIb3cgdG8gdXNlCkZpcnN0IHlvdSBuZWVkIHRvIGdhdGhlciBhbGwgY2xhc3NlcyB0aGF0IG5lZWQgdG8gYmUgdHJhbnNmb3JtZWQuIFNpbXBsZSBjcmVhdGUgbGlzdCBvZiB0aGVtLgoKYGBga290bGluCnZhbCBjbGFzc2VzOiBMaXN0PEtDbGFzczwqPj4gPSBsaXN0T2YoRm9vOjpjbGFzcywgQmFyOjpjbGFzcykKYGBgCgojIyMgR2VuZXJhdGUgZGVmaW5pdGlvbnMKRGVwZW5kaW5nIG9uIGRlc2lyZWQgb3V0cHV0IHBpY2sgYSBnZW5lcmF0b3I6CgotIGBEYXJ0R2VuZXJhdG9yYCAuLi4gRGFydCAyLjEyKwotIGBPcGVuQXBpR2VuZXJhdG9yYCAuLi4gT3BlbkFwaSAzLjAKLSBgU3dpZnRHZW5lcmF0b3JgIC4uLiBTd2lmdAotIGBUeXBlU2NyaXB0R2VuZXJhdG9yYCAuLi4gVHlwZVNjcmlwdAoKYGBga290bGluCnZhbCBnZW5lcmF0b3I6IENhY2hlZEdlbmVyYXRvciA9IFR5cGVTY3JpcHRHZW5lcmF0b3IoKQogICAgLmFwcGVuZENsYXNzKFNvbWVDbGFzczo6Y2xhc3MpCiAgICAuYXBwZW5kQ2xhc3NlcyhsaXN0T2YoRm9vOjpjbGFzcywgQmFyOjpjbGFzcykpCgovLyBBY2Nlc3MgZ2VuZXJhdGVkIGRlZmluaXRpb25zCnZhbCBjbGFzc2VzID0gZ2VuZXJhdG9yLmdlbmVyYXRlZENsYXNzZXMKdmFsIGVudW1zID0gZ2VuZXJhdG9yLmdlbmVyYXRlZEVudW1zCnZhbCB0eXBlcyA9IGdlbmVyYXRvci5nZW5lcmF0ZWRUeXBlQWxpYXNlcwpgYGAKCiMjIyBUeXBlIGFsaWFzZXMKV2hlbiBhZGRpbmcgY2xhc3NlcyBNb2dlbiBhdXRvbWF0aWNhbGx5IGRldGVjdHMgcHJlc2VuY2Ugb2YgdHlwZSBhbGlhc2VzLiBIb3dldmVyLCBpbiBzb21lIGNhc2VzCmFkZGl0aW9uYWwgbWFwcGluZyBpcyByZXF1aXJlZC4gSW1hZ2luZSB5b3Ugd2FudCB0byBzZXJpYWxpc2UgYExvY2FsRGF0ZVRpbWVgLiBJbiBzb21lIGltcGxlbWVudGF0aW9ucyBpdCB3aWxsIGJlY29tZQpgU3RyaW5nYCAoSVNPIHJlcHJlc2VudGF0aW9uKSwgaW4gc29tZSBgTG9uZ2AgKFVOSVggdGltZXN0YW1wKS4gVGhpcyBjb252ZXJzaW9uIGlzIG91dCBvZiB0aGUgc2NvcGUgb2YgdGhpcwpsaWJyYXJ5IGJ1dCB5b3VyIGZyb250ZW5kIG1vZGVscyBtdXN0IGJlIGNvbXBhdGlibGUuIEluIG9yZGVyIHRvIGRvIHNvLCB5b3UgbXVzdCBkZWZpbmUgdGFyZ2V0IGxhbmd1YWdlIHR5cGUuCgpGb3IgZXhhbXBsZSBpbiBgVHlwZVNjcmlwdGAgZGF0ZSBpcyByZXByZXNlbnRlZCBieSBgRGF0ZWAuIFRvIG1hcCBpdCBjb3JyZWN0bHksIHVzZSBgYXBwZW5kVHlwZWFsaWFzYCBtZXRob2Q6CgpgYGBrb3RsaW4KVHlwZVNjcmlwdEdlbmVyYXRvcigpCiAgICAuYXBwZW5kQ2xhc3MoVXNlcjo6Y2xhc3MpCiAgICAuYXBwZW5kVHlwZWFsaWFzKFR5cGVhbGlhcyhsb2NhbENsYXNzID0gTG9jYWxEYXRlVGltZTo6Y2xhc3MsIG5hbWUgPSAiRGF0ZSIpKQpgYGAKCklucHV0IChLb3RsaW4pOgpgYGBrb3RsaW4KdHlwZWFsaWFzIFVzZXJJZCA9IExvbmcKCmRhdGEgY2xhc3MgVXNlcigKICAgIHZhbCBpZDogVXNlcklkLAogICAgdmFsIGJpcnRoZGF5OiBMb2NhbERhdGVUaW1lLAopCmBgYApPdXRwdXQgKFR5cGVTY3JpcHQpOgpgYGB0eXBlc2NyaXB0CmV4cG9ydCB0eXBlIExvY2FsRGF0ZVRpbWUgPSBEYXRlCmV4cG9ydCB0eXBlIFVzZXJJZCA9IG51bWJlciAvLyBjb3BpZWQgYXV0b21hdGljYWxseQoKZXhwb3J0IGludGVyZmFjZSBVc2VyIHsKICAgIGJpcnRoZGF5OiBMb2NhbERhdGVUaW1lOyAvLyBLb3RsaW4ncyBjbGFzcyBuYW1lIGlzIGtlcHQsIHR5cGUgaXMgY3JlYXRlZAogICAgaWQ6IFVzZXJJZDsKfQpgYGAKCiMjIyBJbmRlbnRzCkV2ZXJ5b25lIHVzZXMgZGlmZmVyZW50IGluZGVudGF0aW9uIHJ1bGVzLiBUbyBtYWtlIGl0IGVhc2llciBmb3IgeW91IE1vZ2VuIGxldHMgeW91IGNvbmZpZ3VyZSBiYXNpYyBpbmRlbnRhdGlvbiB1bml0LgpUbyBhZGp1c3QgZGVmYXVsdCBpbmRlbnRhdGlvbiBwYXNzIHlvdXIgb3duIGBJbmRlbnRhdGlvbmAgaW4gZ2VuZXJhdG9yJ3MgY29uc3RydWN0b3IuIFlvdSBjYW4gY3JlYXRlIHlvdXIgb3duIGluc3RhbmNlIG9yCnVzZSBvbmUgb2YgcHJlLWRlZmluZWQgaW5kZW50czoKLSBgR2VuZXJpY0luZGVudHNgIC0gZGVzaWduZWQgZm9yIERhcnQsIFN3aWZ0IGFuZCBUeXBlU2NyaXB0LAotIGBPcGVuQXBpSW5kZW50c2AgLSBkZXNpZ25lZCBmb3IgT3BlbkFwaS4KCmBgYGtvdGxpbgpUeXBlU2NyaXB0R2VuZXJhdG9yKGluZGVudHMgPSBHZW5lcmljSW5kZW50cyhpbmRlbnQgPSAiXHQiKSkgLy8gRm9yICd0YWJzJyBjcmV3Ck9wZW5BcGlHZW5lcmF0b3IoaW5kZW50cyA9IE9wZW5BcGlJbmRlbnRzKGluZGVudCA9ICIgICIpKSAvLyBGb3JlICdzcGFjZXMnIGNyZXcKYGBgCgojIyMgUHJldHR5IHByaW50CkluIGNhc2UgeW91IGRvIG5vdCB3YW50IHRvIGRlYWwgd2l0aCBmb3JtYXR0aW5nIHVzZSBgUHJpbnRlcmAgdG8gY29udmVydCBnZW5lcmF0ZWQgZGVmaW5pdGlvbnMgdG8gc2luZ2xlIGBTdHJpbmdgCkxpYnJhcnkgY29tZXMgd2l0aCBidW5kbGVkOgogLSBgR2VuZXJpY1ByaW50ZXJgIHRoYXQgZGVhbHMgd2VsbCB3aXRoIERhcnQsIFN3aWZ0IGFuZCBUeXBlU2NyaXB0LAogLSBgT3BlbkFwaVByaW50ZXJgIHRoYXQgaXMgZGVzaWduZWQgZm9yIE9wZW5BcGkuCgpgYGBrb3RsaW4KdmFsIGFsbERlZmluaXRpb25zOiBTdHJpbmcgPSBnZW5lcmF0b3IucHJpbnQoR2VuZXJpY1ByaW50ZXIpCmBgYAoKIyMjIEFubm90YXRpb24gcHJvY2Vzc29ycwpTb21ldGltZXMgaXQncyB1c2VmdWwgdG8ga2VlcCBzb21lIG1ldGFkYXRhLiBJbWFnaW5lIHlvdSBoYXZlIGp1c3QgZGVwcmVjYXRlZCBzb21lIHByb3BlcnR5IGluIGJhY2tlZCwgYW5kIHlvdSAKd2FudCB0byBsZXQgb3RoZXJzIGtub3cgdGhhdCB0aGV5IHNob3VsZCBtaWdyYXRlIHRoZWlyIGNvZGUuIEluIHRoYXQgY2FzZSB5b3Ugd2FudCB0bwp1c2UgYERlcHJlY2F0ZWRBbm5vdGF0aW9uUHJvY2Vzc29yYCEgQW5ub3RhdGlvbiBwcm9jZXNzb3JzIGFyZSBwYXNzZWQgaW4gZ2VuZXJhdG9yJ3MgY29uc3RydWN0b3IuCgojIyMjIERlcHJlY2F0aW9uCmBgYGtvdGxpbgpUeXBlU2NyaXB0R2VuZXJhdG9yKGFubm90YXRpb25Qcm9jZXNzb3JzID0gbGlzdE9mKERlcHJlY2F0ZWRBbm5vdGF0aW9uUHJvY2Vzc29yKCkpKSAvLyA8LSBwYXNzIHRoZW0gaGVyZQogICAgICAgLmFwcGVuZENsYXNzKFVzZXI6OmNsYXNzKQogICAgICAgLmFwcGVuZFR5cGVBbGlhcyhUeXBlYWxpYXMobG9jYWxDbGFzcyA9IExvY2FsRGF0ZVRpbWU6OmNsYXNzLCBuYW1lID0gIkRhdGUiKSkKICAgICAgIC5wcmludChHZW5lcmljUHJpbnRlcikKICAgICAgIC5sZXQgeyBwcmludGxuKGl0KSB9CmBgYAoKSW5wdXQgKEtvdGxpbik6CmBgYGtvdGxpbgpkYXRhIGNsYXNzIFVzZXIoCiAgICB2YWwgaWQ6IExvbmcsCiAgICBARGVwcmVjYXRlZCgiTm90IHRpbWUtem9uZSBidWxsZXRwcm9vZiwgY2FsY3VsYXRlIGl0IG9uIHlvdXIgb3duIikKICAgIHZhbCBhZ2U6IEludCwKICAgIHZhbCBiaXJ0aGRheTogTG9jYWxEYXRlVGltZSwKKQpgYGAKCk91dHB1dCAoVHlwZVNjcmlwdCk6CmBgYHR5cGVzY3JpcHQKZXhwb3J0IHR5cGUgTG9jYWxEYXRlVGltZSA9IERhdGUKCmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7CiAgLyoqCiAgICogQGRlcHJlY2F0ZWQgTm90IHRpbWUtem9uZSBidWxsZXRwcm9vZiwgY2FsY3VsYXRlIGl0IG9uIHlvdXIgb3duCiAgICovCiAgYWdlOiBudW1iZXI7CiAgYmlydGhkYXk6IExvY2FsRGF0ZVRpbWU7CiAgaWQ6IG51bWJlcjsKfQoKYGBgCgojIyMjIEphdmFYIGFubm90YXRpb25zCkZvciB2YWxpZGF0aW9ucyBsaWtlIG1pbiwgbWF4LCBldGMuIG9uIHNlcnZlcjsgZHVyaW5nIGNvbnZlcnNpb24gaXQgd2lsbCBhcHBlbmQgY29tbWVudCB3aGVyZSB2YWxpZGF0aW9uIGNvbnN0cmFpbnRzIAphcmUgbGlzdGVkLgoKSW5wdXQgKEtvdGxpbik6CmBgYGtvdGxpbgpkYXRhIGNsYXNzIFVzZXIoCiAgICB2YWwgaWQ6IExvbmcsCiAgICBAZmllbGQ6U2l6ZShtaW4gPSAxLCBtYXggPSAxMDApCiAgICB2YWwgZmlyc3ROYW1lOiBTdHJpbmcsCikKYGBgCgpPdXRwdXQgKFR5cGVTY3JpcHQpOgpgYGB0eXBlc2NyaXB0CmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7CiAgLyoqCiAgICogbWluOiAxCiAgICogbWF4OiAxMDAKICAgKi8KICBmaXJzdE5hbWU6IHN0cmluZzsKICBpZDogbnVtYmVyOwp9CmBgYAoKIyMjIyBKYWNrc29uIGFubm90YXRpb25zCkhhbmRsZXMgYEBKc29uUHJvcGVydHlgIGFuZCBgQEpzb25WYWx1ZWAgYW5ub3RhdGlvbnMgdGhhdCBjYW4gbW9kaWZ5IG5hbWUgb2Ygc2VyaWFsaXNlZCBwcm9wZXJ0eS4KCklucHV0IChLb3RsaW4pOgpgYGBrb3RsaW4KZGF0YSBjbGFzcyBVc2VyKAogICAgQEpzb25Qcm9wZXJ0eSgidXNlcl9pZCIpCiAgICB2YWwgaWQ6IExvbmcsCiAgICBASnNvblByb3BlcnR5KCJ0ZWEiKQogICAgdmFsIGZhdm91cml0ZVRlYTogVGVhPyA9IG51bGwsCikgewogICAgZW51bSBjbGFzcyBUZWEgewogICAgICAgIEBKc29uUHJvcGVydHkoImciKSBHUkVFTiwgCiAgICAgICAgQEpzb25Qcm9wZXJ0eSgiYiIpIEJMQUNLLAogICAgfQp9CmBgYAoKT3V0cHV0IChUeXBlU2NyaXB0KToKYGBgdHlwZXNjcmlwdApleHBvcnQgZW51bSBVc2VyVGVhIHsKICBHUkVFTiA9ICdnJywKICBCTEFDSyA9ICdiJywKfQoKZXhwb3J0IGludGVyZmFjZSBVc2VyIHsKICAgIHRlYTogVXNlclRlYSB8IG51bGw7CiAgICB1c2VyX2lkOiBudW1iZXI7Cn0KYGBgCgojIyMgSG93IHRvIGNvbGxlY3QgYWxsIG1vZGVscwpJZiBhbGwgbW9kZWxzIGFyZSBpbiBvbmUgcGFja2FnZSB0aGVuIFtSZWZsZWN0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL3Jvbm1hbW8vcmVmbGVjdGlvbnMpIGxpYnJhcnkgY2FuIGJlIGhlbHBmdWwhIFRoZW4geW91IGNhbiB1c2UgdGhpcyBjb2RlIHRvCmdldCBhbGwgY2xhc3NlczoKCmBgYGtvdGxpbgp2YWwgc291cmNlUGFja2FnZSA9ICJjb20uZm9vLmJhciIgLy8gRW50ZXIgY29ycmVjdCB2YWx1ZQp2YWwgcmVmbGVjdGlvbnMgPSBSZWZsZWN0aW9ucygKICAgIENvbmZpZ3VyYXRpb25CdWlsZGVyKCkKICAgICAgICAuZmlsdGVySW5wdXRzQnkoRmlsdGVyQnVpbGRlcigpLmluY2x1ZGVQYWNrYWdlKHNvdXJjZVBhY2thZ2UpKQogICAgICAgIC5zZXRVcmxzKENsYXNzcGF0aEhlbHBlci5mb3JQYWNrYWdlKHNvdXJjZVBhY2thZ2UpKQogICAgICAgIC5zZXRTY2FubmVycyhTdWJUeXBlc1NjYW5uZXIoZmFsc2UpKQopCgp2YWwgdHlwZUxpc3QgPSByZWZsZWN0aW9ucy5nZXRTdWJUeXBlc09mKE9iamVjdDo6Y2xhc3MuamF2YSkgKyByZWZsZWN0aW9ucy5nZXRTdWJUeXBlc09mKEVudW06OmNsYXNzLmphdmEpCnZhbCBjbGFzc2VzID0gdHlwZUxpc3QubWFwIHsgYyAtPiBjLmtvdGxpbiB9LmRpc3RpbmN0KCkKYGBgCgojIyBMaWNlbnNlCgogICAgQ29weXJpZ2h0IDIwMjEgZWxldnVwCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCg== readmeEtag: '"8df68b06f4727560ecf498a05838d7c6ce321d65"' readmeLastModified: Thu, 31 Mar 2022 08:47:39 GMT repositoryId: 455560085 description: Converts Kotlin models to other languages created: '2022-02-04T13:36:46Z' updated: '2025-08-13T11:23:34Z' language: Kotlin archived: false stars: 6 watchers: 1 forks: 0 owner: elevup logo: https://avatars.githubusercontent.com/u/79261866?v=4 license: Apache-2.0 repoEtag: '"4bcdfdf7273b6ff3e16350f6926a617c3be2cc129c65167aaa8daeb18991efdf"' repoLastModified: Wed, 13 Aug 2025 11:23:34 GMT foundInMaster: true id: fe9ef951386e259cd49cdddcbd37f572 - source: openapi3 tags repository: https://github.com/ja88a/openapi-nestjs-auth-mongo v3: true id: 454350ec4d744135cda5c2bccc834fb3 repositoryMetadata: base64Readme: >- PCEtLSAKWyFbQ29udHJpYnV0b3JzXVtzb3BlbmFwaS1jb250cmlidXRvcnMtc2hpZWxkXV1bc29wZW5hcGktY29udHJpYnV0b3JzXQpbIVtGb3Jrc11bc29wZW5hcGktZm9ya3Mtc2hpZWxkXV1bc29wZW5hcGktZm9ya3NdClshW1N0YXJnYXplcnNdW3NvcGVuYXBpLXN0YXJzLXNoaWVsZF1dW3NvcGVuYXBpLXN0YXJzXQpbIVtJc3N1ZXNdW3NvcGVuYXBpLWlzc3Vlcy1zaGllbGRdXVtzb3BlbmFwaS1pc3N1ZXNdClshW01JVCBMaWNlbnNlXVtzb3BlbmFwaS1saWNlbnNlLXNoaWVsZF1dW2xpY2Vuc2VdCi0tPgoKWyFbTmVzdEpzXVtuZXN0anMtc2hpZWxkXV1bcmVmLW5lc3Rqc10KWyFbTm9kZUpzXVtub2RlanMtc2hpZWxkXV1bcmVmLW5vZGVqc10KWyFbVHlwZXNjcmlwdF1bdHlwZXNjcmlwdC1zaGllbGRdXVtyZWYtdHlwZXNjcmlwdF0KWyFbTW9uZ29EQl1bbW9uZ29kYi1zaGllbGRdXVtyZWYtbW9uZ29kYl0KWyFbSldUXVtqd3Qtc2hpZWxkXV1bcmVmLWp3dF0KWyFbSmVzdF1bamVzdC1zaGllbGRdXVtyZWYtamVzdF0KWyFbWWFybl1beWFybi1zaGllbGRdXVtyZWYteWFybl0KWyFbRG9ja2VyXVtkb2NrZXItc2hpZWxkXV1bcmVmLWRvY2tlcl0KCiMgUypPcGVuQVBJCgojIyBQdXJwb3NlCgo+IEEgbW9ubyByZXBvIHRvIGRldmVsb3AgYSBzZXQgb2YgTmVzdEpzLWJhc2VkIE9wZW4gQVBJIFNlcnZpY2VzLCBSZXN0ZnVsIEFQSSBNaWNyb3NlcnZpY2VzIHdpdGggZnVsbCBhdXRoIHN1cHBvcnQKCk1hZGUgd2l0aCBmb2xsb3dpbmcgYmVzdCBwcmFjdGljZXM6Ci0gW25vZGVqcy1iZXN0LXByYWN0aWNlXShodHRwczovL2dpdGh1Yi5jb20vZ29sZGJlcmd5b25pL25vZGViZXN0cHJhY3RpY2VzKSAKLSBbVGhlIFR3ZWx2ZS1GYWN0b3IgQXBwXShodHRwczovLzEyZmFjdG9yLm5ldCkKLSBbTWljcm9zZXJ2aWNlIEFyY2hpdGVjdHVyZV0oaHR0cHM6Ly9taWNyb3NlcnZpY2VzLmlvKQoKIyMgTW9kdWxlcwotIFthY2NvdW50LWFwaV0ocGFja2FnZXMvYWNjb3VudC1hcGkvKTogVXNlciBhY2NvdW50cywgcGVybWlzc2lvbnMsIHNlcnZpY2Ugc2V0dGluZ3MgJiBBUEkga2V5cyBtYW5hZ2VtZW50Ci0gW2NvbW1vbi11dGlsc10ocGFja2FnZXMvY29tbW9uLXV0aWxzKTogQ29tbW9uIHNldCBvZiB1dGlsaXRpZXMgZm9yIHRoZSBNUyBBUElzOiBhdXRoZW50aWNhdGlvbiwgc2VjdXJpdHkgZ3VhcmRzLCBwYWdpbmF0aW9uLCBmaWx0ZXJzLCBldGMuCi0gW3NhbGVzLWFwaV0ocGFja2FnZXMvc2FsZXMtYXBpKTogc2V0IG9mIEFQSXMgdG8gcXVlcnkgc2FsZXMgaW5mbwoKIyMgSW1wb3J0YW50Cgo+IFdvcmsgaW4gcHJvZ3Jlc3MuIFVwZGF0ZXMsIGN1c3RvbWl6YXRpb25zIGFuZCBuZXcgZmVhdHVyZXMgYXJlIHN0aWxsIHJlcXVpcmVkLgoKIyMgQnVpbHQgV2l0aAoKRGVzY3JpYmVzIHdoaWNoIHZlcnNpb24gb2YgdGhlIG1haW4gcGFja2FnZXMgYW5kIG1haW4gdG9vbHMuCgp8IE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2lvbiAgfAp8IC0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgIHwgLS0tLS0tLS0gfAp8IFtOZXN0SnNdKHJlZi1uZXN0anMpICAgICAgICAgIHwgdjgueCAgICAgfAp8IFtOb2RlSnNdKHJlZi1ub2RlanMpICAgICAgICAgIHwgdjE3LnggICAgfAp8IFtUeXBlc2NyaXB0XShyZWYtdHlwZXNjcmlwdCkgIHwgdjQueCAgICAgfAp8IFtNb25nb29zZV0ocmVmLW1vbmdvb3NlKSAgICAgIHwgdjYueCAgICAgfAp8IFtNb25nb0RCXShyZWYtbW9uZ29kYikgICAgICAgIHwgdjUueCAgICAgfAp8IFtZYXJuXShyZWYteWFybikgICAgICAgICAgICAgIHwgdjEueCAgICAgfAp8IFtOUE1dKHJlZi1ucG0pICAgICAgICAgICAgICAgIHwgdjgueCAgICAgfAp8IFtEb2NrZXJdKHJlZi1kb2NrZXIpICAgICAgICAgIHwgdjIwLnggICAgfAp8IFtEb2NrZXIgQ29tcG9zZV0ocmVmLWRvY2tlci1jb21wb3NlKSB8IHYyLnggfAoKCiMjIERldiBJbnN0cnVjdGlvbnMKCiMjIyBJbml0IHlvdXIgZGV2IGVudmlyb25tZW50CgpgYGAKbGVybmEgYm9vdHN0cmFwIApsZXJuYSBsaW5rCmxlcm5hIHJ1biBidWlsZApgYGAKT1IKYGBgCm1ha2UgYm9vdHN0cmFwCmBgYAoKIyMjIFRlc3QKCmBgYApsZXJuYSBydW4gdGVzdApgYGAKCiMjIFByZXJlcXVpc2l0ZXMKCjEuIFVuZGVyc3RhbmQgW05lc3RKcyBGdW5kYW1lbnRhbF0oaHR0cDovL25lc3Rqcy5jb20pLCBNYWluIEZyYW1ld29yay4gTm9kZUpzIEZyYW1ld29yayB3aXRoIHN1cHBvcnQgZnVsbHkgVHlwZVNjcmlwdC4KMi4gVW5kZXJzdGFuZFtUeXBlc2NyaXB0IEZ1bmRhbWVudGFsXShodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcpLCBQcm9ncmFtbWluZyBMYW5ndWFnZS4gSXQgd2lsbCBoZWxwIHVzIHRvIHdyaXRlIGFuZCByZWFkIHRoZSBjb2RlLgozLiBVbmRlcnN0YW5kIFtFeHByZXNzSnMgRnVuZGFtZW50YWxdKGh0dHBzOi8vbm9kZWpzLm9yZyksIGEgTm9kZUpzIGJhc2VkIEZyYW1ld29yay4gSXQgaGVscHMgaW4gdW5kZXJzdGFuZGluZyBob3cgdGhlIE5lc3RKcyBGcmFtZXdvcmsgd29ya3MuCjQuIFVuZGVyc3RhbmQgd2hhdCBOb1NxbCBpcyBhbmQgaG93IGl0IHdvcmtzIGFzIGEgZGF0YWJhc2UsIGVzcGVjaWFsbHkgW01vbmdvREIuXShodHRwczovL2RvY3MubW9uZ29kYi5jb20pCgojIyBUT0RPcwoKTmV4dCBkZXZlbG9wbWVudHM6Ci0gWyBdIFByb2R1Y3Rpb246IE5lc3RqcyBjb21wb3NpdGlvbiBhbmQgRG9ja2VyIGltYWdlcyBnZW5lcmF0aW9uCi0gWyBdIENvbXBsZXRlIENJL0NEIG9mIG1vZHVsZXMgdXNpbmcgR2l0aHViIGFjdGlvbnMKLSBbIF0gSW50ZWdyYXRlIFRlcnJhZm9ybSBmb3IgZGVwbG95aW5nIHRoZSBjb250YWluZXJzIG9uIGs4cwotIFsgXSBEZXBsb3kgb24gQXp1cmUgS3ViZXJuZXRlcyBTZXJ2aWNlcwoKIyMgTGljZW5zZQoKRGlzdHJpYnV0ZWQgdW5kZXIgW01JVCBsaWNlbnNlZF1bbGljZW5zZV0uCgoKIyMgQ29udGFjdAoKW0phYmJhIDAxXVthdXRob3ItZW1haWxdCgpbIVtHaXRodWJdW2dpdGh1Yi1zaGllbGRdXVthdXRob3ItZ2l0aHViXQpbIVtMaW5rZWRJbl1bbGlua2VkaW4tc2hpZWxkXV1bYXV0aG9yLWxpbmtlZGluXQoKPCEtLSBCQURHRSBMSU5LUyAtLT4KW3NvcGVuYXBpLWNvbnRyaWJ1dG9ycy1zaGllbGRdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9jb250cmlidXRvcnMvamE4OGEvb3BlbmFwaS1uZXN0anMtYXV0aC1tb25nbz9zdHlsZT1mb3ItdGhlLWJhZGdlCltzb3BlbmFwaS1mb3Jrcy1zaGllbGRdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9mb3Jrcy9qYTg4YS9vcGVuYXBpLW5lc3Rqcy1hdXRoLW1vbmdvP3N0eWxlPWZvci10aGUtYmFkZ2UKW3NvcGVuYXBpLXN0YXJzLXNoaWVsZF06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL2phODhhL29wZW5hcGktbmVzdGpzLWF1dGgtbW9uZ28/c3R5bGU9Zm9yLXRoZS1iYWRnZQpbc29wZW5hcGktaXNzdWVzLXNoaWVsZF06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy9qYTg4YS9vcGVuYXBpLW5lc3Rqcy1hdXRoLW1vbmdvP3N0eWxlPWZvci10aGUtYmFkZ2UKW3NvcGVuYXBpLWxpY2Vuc2Utc2hpZWxkXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9qYTg4YS9vcGVuYXBpLW5lc3Rqcy1hdXRoLW1vbmdvP3N0eWxlPWZvci10aGUtYmFkZ2UKCltuZXN0anMtc2hpZWxkXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9uZXN0anMtJTIzRTAyMzRFLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289bmVzdGpzJmxvZ29Db2xvcj13aGl0ZQpbbm9kZWpzLXNoaWVsZF06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTm9kZS5qcy0zMzk5MzM/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPW5vZGVkb3RqcyZsb2dvQ29sb3I9d2hpdGUKW3R5cGVzY3JpcHQtc2hpZWxkXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9UeXBlU2NyaXB0LTAwN0FDQz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289dHlwZXNjcmlwdCZsb2dvQ29sb3I9d2hpdGUKW21vbmdvZGItc2hpZWxkXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9Nb25nb0RCLXdoaXRlP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1tb25nb2RiJmxvZ29Db2xvcj00RUE5NEIKW2p3dC1zaGllbGRdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0pXVC0wMDAwMDA/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPUpTT04lMjB3ZWIlMjB0b2tlbnMmbG9nb0NvbG9yPXdoaXRlCltqZXN0LXNoaWVsZF06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvLWplc3QtJTIzQzIxMzI1P3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1qZXN0JmxvZ29Db2xvcj13aGl0ZQpbeWFybi1zaGllbGRdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3lhcm4tJTIzMkM4RUJCLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289eWFybiZsb2dvQ29sb3I9d2hpdGUKW2RvY2tlci1zaGllbGRdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2RvY2tlci0lMjMwZGI3ZWQuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1kb2NrZXImbG9nb0NvbG9yPXdoaXRlCgpbZ2l0aHViLXNoaWVsZF06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvR2l0SHViLTEwMDAwMD9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289Z2l0aHViJmxvZ29Db2xvcj13aGl0ZQpbbGlua2VkaW4tc2hpZWxkXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaW5rZWRJbi0wMDc3QjU/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPWxpbmtlZGluJmxvZ29Db2xvcj13aGl0ZQoKPCEtLSBDT05UQUNUUyAtLT4KW2F1dGhvci1saW5rZWRpbl06IGh0dHBzOi8vbGlua2VkaW4uY29tL2luL3NyZW5hdWx0ClthdXRob3ItZW1haWxdOiBtYWlsdG86cjBnM3JAdHV0YS5pbwpbYXV0aG9yLWdpdGh1Yl06IGh0dHBzOi8vZ2l0aHViLmNvbS9qYTg4YQoKPCEtLSBSZXBvIExJTktTIC0tPgpbc29wZW5hcGktZW5kcG9pbnRdOiAvZW5kcG9pbnRzL2VuZHBvaW50cy5qc29uCgo8IS0tIGxpY2Vuc2UgLS0+CltsaWNlbnNlXTogTElDRU5TRS5tZApbZW5kcG9pbnRzXTogZW5kcG9pbnRzLmpzb24KCjwhLS0gRG9jdW1lbnRzIC0tPgpbc29wZW5hcGktZG9jc106IGh0dHBzOi8vYW5kcmVjaHJpc3Rpa2FuLmdpdGh1Yi5pby9hY2stbmVzdGpzLWJvaWxlcnBsYXRlLWRvY3MvCltzb3BlbmFwaS1kb2NzLWZlYXR1cmVzXTogaHR0cHM6Ly9hbmRyZWNocmlzdGlrYW4uZ2l0aHViLmlvL2Fjay1uZXN0anMtYm9pbGVycGxhdGUtZG9jcy8jL2ZlYXR1cmVzL3JlYWRtZQpbc29wZW5hcGktZG9jcy1leGFtcGxlXTogaHR0cHM6Ly9hbmRyZWNocmlzdGlrYW4uZ2l0aHViLmlvL2Fjay1uZXN0anMtYm9pbGVycGxhdGUtZG9jcy8jL2V4YW1wbGUKW3NvcGVuYXBpLWRvY3MtdGlwc106IGh0dHBzOi8vYW5kcmVjaHJpc3Rpa2FuLmdpdGh1Yi5pby9hY2stbmVzdGpzLWJvaWxlcnBsYXRlLWRvY3MvIy90aXBzL3JlYWRtZQpbc29wZW5hcGktZG9jLWVudl06IGh0dHBzOi8vYW5kcmVjaHJpc3Rpa2FuLmdpdGh1Yi5pby9hY2stbmVzdGpzLWJvaWxlcnBsYXRlLWRvY3MvIy9mZWF0dXJlcy9yZWFkbWUKCjwhLS0gUmVmZXJlbmNlIC0tPgpbcmVmLW5lc3Rqc106IGh0dHA6Ly9uZXN0anMuY29tCltyZWYtbW9uZ29vc2VdOiBodHRwczovL21vbmdvb3NlanMuY29tLwpbcmVmLW1vbmdvZGJdOiBodHRwczovL2RvY3MubW9uZ29kYi5jb20vCltyZWYtbm9kZWpzLWJlc3QtcHJhY3RpY2VdOiBodHRwczovL2dpdGh1Yi5jb20vZ29sZGJlcmd5b25pL25vZGViZXN0cHJhY3RpY2VzCltyZWYtbm9kZWpzXTogaHR0cHM6Ly9ub2RlanMub3JnLwpbcmVmLXR5cGVzY3JpcHRdOiBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvCltyZWYtand0XTogaHR0cHM6Ly9qd3QuaW8KW3JlZi1qZXN0XTogaHR0cHM6Ly9qZXN0anMuaW8vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQKW3JlZi1kb2NrZXJdOiBodHRwczovL2RvY3MuZG9ja2VyLmNvbQpbcmVmLWRvY2tlci1jb21wb3NlXTogaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20KW3JlZi15YXJuXTogaHR0cHM6Ly95YXJucGtnLmNvbQpbcmVmLXBvc3RtYW4taW1wb3J0LWV4cG9ydF06IGh0dHBzOi8vbGVhcm5pbmcucG9zdG1hbi5jb20vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvaW1wb3J0aW5nLWFuZC1leHBvcnRpbmctZGF0YS8K readmeEtag: '"c6d8d3335be96045209443a85bbcb228b582f386"' readmeLastModified: Wed, 31 May 2023 09:24:27 GMT repositoryId: 504584334 description: >- Generic micro-services dev framework w/ user accounts, permissions and authentication management created: '2022-06-17T15:26:18Z' updated: '2025-05-20T09:04:33Z' language: TypeScript archived: false stars: 5 watchers: 1 forks: 0 owner: ja88a logo: https://avatars.githubusercontent.com/u/80005689?v=4 license: MIT repoEtag: '"bfd8a0feb24adabff456a831da46c9272abec350e2b9c0f146afffa9c459ffd9"' repoLastModified: Tue, 20 May 2025 09:04:33 GMT category: Server foundInMaster: true - source: openapi3 tags repository: https://github.com/phstudy/einvoice-api v3: true repositoryMetadata: repositoryId: 122307410 description: 財政部電子發票應用 API 規格 - OpenAPI 3.0 格式 created: '2018-02-21T08:00:03Z' updated: '2025-03-25T04:56:12Z' language: null archived: false stars: 6 watchers: 1 forks: 4 owner: phstudy logo: https://avatars.githubusercontent.com/u/2286805?v=4 license: MIT repoEtag: '"3a63104b9a28372dfd6934ec32544540386f107c0391c9a75d88aabc948653e1"' repoLastModified: Tue, 25 Mar 2025 04:56:12 GMT foundInMaster: true id: c508d10b2d4a66d9a84dd2a08e25e125 - source: openapi3 tags repository: https://github.com/ioggstream/openapi-resolver v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFJlc29sdmVyCgpbIVtDaXJjbGVDSV0oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvaW9nZ3N0cmVhbS9vcGVuYXBpLXJlc29sdmVyLnN2Zz9zdHlsZT1zdmcpXShodHRwczovL2NpcmNsZWNpLmNvbS9naC9pb2dnc3RyZWFtL29wZW5hcGktcmVzb2x2ZXIpClshW0NvZGVDb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9pb2dnc3RyZWFtL29wZW5hcGktcmVzb2x2ZXIvYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvaW9nZ3N0cmVhbS9vcGVuYXBpLXJlc29sdmVyKQoKVGhpcyBtb2R1bGUgcmVjdXJzaXZlbHkgcGFyc2VzIG9wZW5hcGkgc3BlY3MgcmVzb2x2aW5nIHJlZmVyZW5jZXMuCgojIyBUZXN0CgpUZXN0cyBydW4gbG9jYWxseSB2aWEgCgogICAgICAgIHRveAoKT3IgdmlhIFtjaXJjbGVjaS1sb2NhbF0oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvbG9jYWwtY2xpLykKCiAgICAgICAgY2lyY2xlY2kgYnVpbGQgCgoKIyMgVXNhZ2UKClRoZSBtb2R1bGUgaGFzIGFuIGVtYmVkZGVkIHNjcmlwdCB0aGF0IGNhbiBiZSBydW4gdmlhCgogICAgICAgICQgcHl0aG9uIC1tIG9wZW5hcGlfcmVzb2x2ZXIgLS1oZWxwCgogICAgICAgIHVzYWdlOiBfX21haW5fXy5weSBbLWhdIHNyY19maWxlIFtkc3RfZmlsZV0KCiAgICAgICAgUmVjdXJzaXZlbHkgcmVzb2x2ZXMgYW5kIGJ1bmRsZXMgT3BlbkFQSSB2MyBmaWxlcy4KCiAgICAgICAgcG9zaXRpb25hbCBhcmd1bWVudHM6CiAgICAgICAgICBzcmNfZmlsZSAgICBBbiBPcGVuQVBJIHYzIHlhbWwgZmlsZS4KICAgICAgICAgIGRzdF9maWxlICAgIERlc3RpbmF0aW9uIGZpbGUsIGRlZmF1bHQgaXMgc3Rkb3V0LgoKICAgICAgICBvcHRpb25hbCBhcmd1bWVudHM6CiAgICAgICAgICAtaCwgLS1oZWxwICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CgpUbyBjcmVhdGUgYW4gb3BlbmFwaSBidW5kbGUgZnJvbSBhIHNwZWMgZmlsZSBqdXN0IHJ1bgoKICAgICAgICAkIHB5dGhvbiAtbSBvcGVuYXBpX3Jlc29sdmVyIHNhbXBsZS55YW1sCgpZb3UgY2FuIHVzZSB0aGlzIG1vZHVsZSB0byBub3JtYWxpemUgdHdvIHNwZWNzIGJlZm9yZSBkaWZmaW5nLCBlZzoKCiAgICAgICAgJCBweXRob24gLW0gb3BlbmFwaV9yZXNvbHZlciBvbmUueWFtbCBub3JtYWwtb25lLnlhbWwKICAgICAgICAkIHB5dGhvbiAtbSBvcGVuYXBpX3Jlc29sdmVyIHR3by55YW1sIG5vcm1hbC10d28ueWFtbAogICAgICAgICQgZGlmZiBub3JtYWwtb25lLnlhbWwgbm9ybWFsLXR3by55YW1sCgojIyBVc2Ugd2l0aCBkb2NrZXIKCkJ1aWxkIHRoZSBpbWFnZSB3aXRoOgoKYGBgCiQgZG9ja2VyIGJ1aWxkIC0tdGFnIG9wZW5hcGktcmVzb2x2ZXIgLiAKYGBgCgp0aGVuIHJ1biBkb2NrZXIgbWFwcGluZyB0aGUgb3BlbmFwaS55YW1sIGRpcmVjdG9yeQp0byB0aGUgYC9jb2RlYCB2b2x1bWUuCgpgYGAKZG9ja2VyIHJ1biAtaXQgLS1ybSAtdiAkKGRpcm5hbWUgcGF0aC10by1vcGVuYXBpLnlhbWwpOi9jb2RlIFwKICAgIG9wZW5hcGktcmVzb2x2ZXIgL2NvZGUvb3BlbmFwaS55YW1sIC9jb2RlL2J1bmRsZS55YW1sCmBgYAo= readmeEtag: '"15ddc680312dda7420a034eae0633cac8314fe4a"' readmeLastModified: Wed, 09 Oct 2019 14:05:38 GMT repositoryId: 145992506 description: A python 3 module for resolving $refs in OpenAPI specs and create bundles. created: '2018-08-24T13:05:35Z' updated: '2024-09-15T22:00:58Z' language: Python archived: false stars: 5 watchers: 1 forks: 5 owner: ioggstream logo: https://avatars.githubusercontent.com/u/1140844?v=4 license: MIT repoEtag: '"853a9c7182ea9dc8e79ac3775d850456f465e95fd3cf9cfd87d98577052c4a26"' repoLastModified: Sun, 15 Sep 2024 22:00:58 GMT foundInMaster: true category: - Description Validators - Parsers id: 40ab6688a0f4a02b4e8ac406853b4013 - source: openapi3 tags repository: https://github.com/clowre/docserver v3: true repositoryMetadata: base64Readme: >- IyBDbG93cmUgT3BlbkFQSSBEb2N1bWVudCBTZXJ2ZXIKCkEgc2ltcGxlIHByb2dyYW0gdGhhdCBtZXJnZXMgbXVsdGlwbGUgT3BlbkFQSS9Td2FnZ2VyIHNjaGVtYSBmaWxlcywgYW5kIHNlcnZlcyB0aGUgbWVyZ2VkIHJlc3VsdC4gVGhpcyBwcm9qZWN0IHdhcyBib3JuCnRvIHNvbHZlIGEgdmVyeSBzcGVjaWZpYyB1c2UtY2FzZSB3aGVyZSB3ZSBhdCBDbG93cmUgbmVlZGVkIHRvIHNlZSB0aGUgQVBJIGRvY3Mgb2YgYWxsIG91ciBtaWNyb3NlcnZpY2VzIGF0IG9uZSBwbGFjZS4KCkhvd2V2ZXIsIHRoaXMgcHJvamVjdCBhbHNvIGFpbXMgdG8gYmUgYSBnZW5lcmljIHNvbHV0aW9uIGZvciBPcGVuQVBJIFNjaGVtYSBtZXJnaW5nLgoKIyMgUnVubmluZwoKQnkgZGVmYXVsdCwgdGhlIHNlcnZlciB0cmllcyB0byByZXNvbHZlIGNvbmZpZ3VyYXRpb24gZnJvbSBhIFNwcmluZyBDbG91ZCBDb25maWcgU2VydmVyLCBzbyBldmVyeSBleHRlcm5hbCBjb25maWd1cmF0aW9uCm11c3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5IGV4cGxpY2l0bHk6CgpgYGB5YW1sCm1pY3JvbmF1dDoKICBjb25maWctY2xpZW50OgogICAgZW5hYmxlZDogZmFsc2UKYGBgCgpUaGUgcmVjb21tZW5kZWQgd2F5IHRvIHJ1biB0aGlzIHNlcnZlciBpcyB0aHJvdWdoIERvY2tlci4gVGhpcyBzZXJ2ZXIgc2VydmVzIG1lcmdlZCBPcGVuQVBJIFNjaGVtYXMgYXQKYGh0dHA6Ly9ob3N0OnBvcnQvZG9jcy5qc29uYC4KCiMjIyBXaXRoIGV4dGVybmFsIGNvbmZpZ3VyYXRpb24KCmBgYHNoZWxsCmRvY2tlciBydW4gLS1ybSAtaXQgLS1uYW1lPWRvY3NlcnZlciAtcCA4MDgwOjgwODAgXAogIC12ICIkKHB3ZCkvX2V4YW1wbGVzL2V4dGVybmFsLWNvbmZpZ3VyYXRpb24ueWFtbDovY29uZmlnLnlhbWwiIFwKICAtZSBNSUNST05BVVRfQ09ORklHX0ZJTEVTPS9jb25maWcueWFtbCBcCiAgY2xvd3JlL2RvY3NlcnZlcjpsYXRlc3QKYGBgCgojIyMgVXNpbmcgU3ByaW5nIENsb3VkIENvbmZpZyBTZXJ2ZXIKCklmIHlvdSB3aXNoIHRvIGNvbmZpZ3VyZSB0aGUgZG9jc2VydmVyIHVzaW5nIGEgQ2xvdWQgQ29uZmlnIGluc3RhbmNlLCBpdCBpcyByZXF1aXJlZCB0aGF0IGBDT05GSUdfU0VSVkVSX1VSSWAgcG9pbnRzIHRvCnlvdXIgY29uZmlndXJhdGlvbiBzZXJ2ZXIuIFRoZSBkb2NzZXJ2ZXIncyBhcHBsaWNhdGlvbiBJRCBpcyBgY2xvd3JlLWRvY3NlcnZlcmAsIHNvIG1ha2Ugc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGNhbgpiZSByZXNvbHZlZCBieSB0aGlzIG5hbWUuCgpgYGBzaGVsbApkb2NrZXIgcnVuIC0tcm0gLWl0IC0tbmFtZT1kb2NzZXJ2ZXIgLXAgODA4MDo4MDgwIFwKICAtZSBDT05GSUdfU0VSVkVSX1VSST1odHRwOi8veW91ci1jb25maWctc2VydmVyOjg4ODggXAogIC1lIE1JQ1JPTkFVVF9FTlZJUk9OTUVOVFM9Y2xvdWQgXAogIGNsb3dyZS9kb2NzZXJ2ZXI6bGF0ZXN0CmBgYAoKIyMgQ29uZmlndXJhdGlvbgoKIyMjIFN3YWdnZXIgU291cmNlcwoKVGhpcyBpcyB0aGUgb25seSBjb25maWd1cmF0aW9uIHRoYXQgaXMgcmVxdWlyZWQgdG8gYmUgcHJlc2VudCB0byBydW4gYSBiYXJlLW1pbmltdW0gdmVyc2lvbiBvZiB0aGlzIHNlcnZlci4gVGhpcwpjb25maWd1cmF0aW9uIGlzIHNwZWNpZmllZCBieSB0aGUgYHN3YWdnZXI6YCBrZXkgaW4gdGhlIGNvbmZpZ3VyYXRpb24gWUFNTC4gSGVyZSdzIGEgc2FtcGxlIGNvbmZpZ3VyYXRpb24gdGhhdCBtZXJnZXMgYQpjb3VwbGUgb2Ygc2NoZW1hcy4KCmBgYHlhbWwKc3dhZ2dlcjoKICAjIyBXaWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIG1lcmdlZCBPcGVuQVBJIGZpbGUncyAnc2VydmVycycgc2VjdGlvbiAtIG9wdGlvbmFsLgogIHNlcnZlcnM6CiAgICAtIHVybDogaHR0cDovL215c2VydmVyLmxvY2FsCiAgICAgIGRlc2NyaXB0aW9uOiBBIHJlYWxseSBjb29sIHNlcnZlciB0aGF0IGRvZXMgc3R1ZmYuCiAgIyMgV2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBtZXJnZWQgT3BlbkFQSSBmaWxlJ3MgJ2luZm8nIHNlY3Rpb24uCiAgaW5mbzoKICAgICMjIFRpdGxlIG9mIHRoZSBtZXJnZWQgT3BlbkFQSSBzY2hlbWEuIFJlcXVpcmVkLgogICAgdGl0bGU6IEEgYmFzaWMgY29tYmluZWQgQVBJIFlBTUwKICAgIGRlc2NyaXB0aW9uOiB8LQogICAgICAjIyBXaGF0IGl0IGlzCiAgICAgIEFuIGV4YW1wbGUgb2YgY2xvd3JlL2RvY3NlcnZlcidzIHNjaGVtYSBtZXJnZSBmdW5jdGlvbmFsaXR5LgoKICAgICAgIyMgV2hhdCBpdCBtZXJnZXMKICAgICAgVGhlIHN3YWdnZXIgUGV0IFN0b3JlIGFuZCBCb3hLbmlnaHQgQVBJIHNjaGVtYXMuCgogICMjIExpc3Qgb2YgT3BlbkFQSSBzY2hlbWFzIHRvIGJlIG1lcmdlZC4KICBzb3VyY2VzOgogICAgIyMgQSBmcmllbmRseSBuYW1lIG9mIHRoaXMgcmVzb3VyY2UgdG8gYmUgdXNlZCBpbiBsb2dnaW5nIC0gcmVxdWlyZWQuCiAgICAtIG5hbWU6IFBldCBTdG9yZQoKICAgICAgIyMgU3RyaW5nIHRvIGJlIHVzZWQgYXMgYSBwcmVmaXggb2YgQVBJIHBhdGhzIC0gcmVxdWlyZWQKICAgICAgcGF0aC1wcmVmaXg6IHBldC1zdG9yZQoKICAgICAgIyMgTG9jYXRpb24gb2YgT3BlbkFQSSBzY2hlbWEgSlNPTi9ZQU1MIC0gcmVxdWlyZWQKICAgICAgYWRkcmVzczogaHR0cHM6Ly9yZWRvY2x5LmdpdGh1Yi5pby9yZWRvYy9vcGVuYXBpLnlhbWwKCiAgICAgICMjIFZlcnNpb24gb2Ygc2NoZW1hIC0gVjIgb3IgVjMgLSByZXF1aXJlZAogICAgICB2ZXJzaW9uOiBWMwpgYGAKCk1vcmUgY29uZmlndXJhdGlvbiBleGFtcGxlcyBjYW4gYmUgZm91bmQgaW4gYF9leGFtcGxlc2AgZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeS4KCiMjIyBWaWV3cwoKVGhlIGRvY3NlcnZlciBjYW4gYWxzbyBzZXJ2ZSBvZmYgU3dhZ2dlciBhbmQgUmVEb2Mgdmlld3Mgb3V0IG9mIHRoZSBib3guIFRoaXMgZnVuY3Rpb25hbGl0eSBjYW4gYmUgZW5hYmxlZCBieSBwdXR0aW5nCnRoZSBmb2xsb3dpbmcgaW4geW91ciBjb25maWd1cmF0aW9uOgoKYGBgeWFtbAp2aWV3czoKICBlbmFibGUtcmVkb2M6IHRydWUKICBlbmFibGUtc3dhZ2dlcjogdHJ1ZQpgYGAKCk9uY2UgZW5hYmxlZCwgdGhlIHZpZXdzIGNhbiBiZSBhY2Nlc3NlZCBhdCBgaHR0cDovL2hvc3Q6cG9ydC92aWV3cy9yZWRvY2AgYW5kIGBodHRwOi8vaG9zdDpwb3J0L3ZpZXdzL3N3YWdnZXJgLgoKLS0tCgojIyBQcm9qZWN0IHVzYWJpbGl0eSBzdGF0dXMKClRoaXMgcHJvamVjdCBpcyBpbiAqKmFscGhhKiogc3RhdGUgcmlnaHQgbm93LCBhbmQgaXMgbm90IG1lYW50IHRvIGJlIHVzZWQgaW4gcHJvZHVjdGlvbi4gSG93ZXZlciwgdGhpcyB3aWxsIGtlZXAgb24KZXZvbHZpbmcgYW5kIHdpbGwgc2VlIGEgcHJvZHVjdGlvbiByZWxlYXNlIGFzIHdlIGF0IENsb3dyZSBlbmhhbmNlIGl0LgoKIyMgQ29udHJpYnV0aW9ucyB3ZWxjb21lCgpXZSdyZSBoYXBweSB0byB0YWtlIGNvbnRyaWJ1dGlvbnMgaW4gZm9ybSBvZiBpc3N1ZXMsIGZlYXR1cmUgcmVxdWVzdHMsIGRvY3VtZW50YXRpb24sIGFuZCBjb2RlIQ== readmeEtag: '"90210a8acbb2facb5140253546fc47a7d85af4d5"' readmeLastModified: Fri, 08 Apr 2022 17:54:18 GMT repositoryId: 469345400 description: Merge and Serve OpenAPI/Swagger Documents created: '2022-03-13T11:03:23Z' updated: '2024-11-14T20:45:27Z' language: Java archived: false stars: 5 watchers: 1 forks: 0 owner: clowre logo: https://avatars.githubusercontent.com/u/91081481?v=4 license: MIT repoEtag: '"ed2b60a51cbb0d771dfe53f38512d65acabc0d2c0d838ea35615d9fdf722d417"' repoLastModified: Thu, 14 Nov 2024 20:45:27 GMT foundInMaster: true category: Parsers id: a0183f83fb00660e796a6fd36906afc6 - source: openapi3 tags repository: https://github.com/umarov-safar/laravel-openapi-codegen v3: true id: 3bb9c1a130e5239fe359c38168f61892 repositoryMetadata: base64Readme: >- IyBMYXJhdmVsIE9wZW5BUEkgQ29kZSBHZW5lcmF0aW9uCgojIyBJbnRyb2R1Y3Rpb24KVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgdG8gZ2VuZXJhdGUgTGFyYXZlbCByb3V0ZXMsIHJlcXVlc3RzLCBjb250cm9sbGVycyBhbmQgZXRjLiBiYXNlZCBvbiBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGluIFlBTUwgZm9ybWF0LgoKCiMjIyBNb3RpdmF0aW9uCkZvciBleGFtcGxlLCB3ZSBoYXZlIHRoaXMgb3BlbmFwaS55YW1sCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICB0aXRsZTogVXNlciBBUEkKICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAvdXNlcnM6CiAgICBnZXQ6CiAgICAgICMuLi4KICAgICAgeC1vZy1yb3V0ZS1uYW1lOiBsaXN0VXNlcnMKICAgICAgeC1vZy1jb250cm9sbGVyOiBBcHBcSHR0cFxDb250cm9sbGVyc1xVc2Vyc0NvbnRyb2xsZXJAaW5kZXgKICAgICAgeC1vZy1za2lwLXJlcXVlc3Q6IHRydWUKICAgICAgeC1vZy1taWRkbGV3YXJlczogYXV0aAogICAgICB4LW9nLXNraXAtcmVzb3VyY2U6IGZhbHNlCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBBIGxpc3Qgb2YgdXNlcnMuCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgICAgICAgZGF0YToKICAgICAgICAgICAgICAgICAgICB0eXBlOiBhcnJheQogICAgICAgICAgICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1VzZXInCiAgICBwb3N0OgogICAgICAuLi4KICAgICAgeC1vZy1yb3V0ZS1uYW1lOiBjcmVhdGVVc2VyCiAgICAgIHgtb2ctY29udHJvbGxlcjogQXBwXEh0dHBcQ29udHJvbGxlcnNcVXNlcnNDb250cm9sbGVyQHN0b3JlCiAgICAgIHgtb2ctc2tpcC1yZXF1ZXN0OiBmYWxzZQogICAgICB4LW9nLXNraXAtcmVzb3VyY2U6IGZhbHNlCiAgICAgIHgtb2ctbWlkZGxld2FyZXM6IGF1dGgsYWRtaW4KICAgICAgcmVxdWVzdEJvZHk6CiAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICBjb250ZW50OgogICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Vc2VyJwogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMSc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogVXNlciBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4KICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgICBkYXRhOgogICAgICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Vc2VyJwogIC91c2Vycy97dXNlcklkfToKICAgIHB1dDoKICAgICAgLi4uCiAgICAgIHgtb2ctZ2VuZXJhdGlvbjogdHJ1ZQogICAgICB4LW9nLXJvdXRlLW5hbWU6IHVwZGF0ZVVzZXIKICAgICAgeC1vZy1jb250cm9sbGVyOiBBcHBcSHR0cFxDb250cm9sbGVyc1xVc2Vyc0NvbnRyb2xsZXJAdXBkYXRlCiAgICAgIHgtb2ctc2tpcC1yZXF1ZXN0OiBmYWxzZQogICAgICB4LW9nLW1pZGRsZXdhcmVzOiBhdXRoLGFkbWluCiAgICAgIHgtb2ctc2tpcC1yZXNvdXJjZTogZmFsc2UKICAgICAgcGFyYW1ldGVyczoKICAgICAgICAtIG5hbWU6IHVzZXJJZAogICAgICAgICAgaW46IHBhdGgKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICBkZXNjcmlwdGlvbjogSUQgb2YgdGhlIHVzZXIgdG8gdXBkYXRlLgogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgY29udGVudDoKICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvVXNlcicKICAgICAgcmVzcG9uc2VzOgogICAgICAgICcyMDAnOgogICAgICAgICAgZGVzY3JpcHRpb246IFVzZXIgdXBkYXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Vc2VyJwpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBVc2VyOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIGZvcm1hdDogaW50NjQKICAgICAgICB1c2VybmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgcGF0dGVybjogJ15bYS16QS1aMC05Xy1dezMsMTZ9JCcKICAgICAgICBlbWFpbDoKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZm9ybWF0OiBlbWFpbAogICAgICAgICAgbWF4TGVuZ3RoOiAzMAogICAgICByZXF1aXJlZDoKICAgICAgICAtIHVzZXJuYW1lCiAgICAgICAgLSBlbWFpbApgYGAKYnkgdXNpbmcgcGFja2FnZSBhZnRlciBydW5uaW5nIGBwaHAgYXJ0aXNhbiBvcGVuYXBpOmdlbmVyYXRlLWNvZGVgIHBhY2thZ2UgZ2VuZXJhdGVzIGZvciB5b3UgYmVsb3cgY29kZS4KCmByb3V0ZXMvb3BlbmFwaS1jb2RlZ2VuLnBocGAKYGBgcGhwCjw/cGhwCgp1c2UgSWxsdW1pbmF0ZVxTdXBwb3J0XEZhY2FkZXNcUm91dGU7CnVzZSBBcHBcSHR0cFxDb250cm9sbGVyc1xVc2Vyc0NvbnRyb2xsZXI7CgpSb3V0ZTo6Z2V0KCd1c2VycycsIFtVc2Vyc0NvbnRyb2xsZXI6OmNsYXNzLCAnaW5kZXgnXSktPm5hbWUoJ2xpc3RVc2VycycpLT5taWRkbGV3YXJlKFsnYXV0aCddKTsKUm91dGU6OnBvc3QoJ3VzZXJzJywgW1VzZXJzQ29udHJvbGxlcjo6Y2xhc3MsICdzdG9yZSddKS0+bmFtZSgnY3JlYXRlVXNlcicpLT5taWRkbGV3YXJlKFsnYXV0aCcsICdhZG1pbiddKTsKUm91dGU6OnB1dCgndXNlcnMve3VzZXJJZH0nLCBbVXNlcnNDb250cm9sbGVyOjpjbGFzcywgJ3VwZGF0ZSddKS0+bmFtZSgndXBkYXRlVXNlcicpLT5taWRkbGV3YXJlKFsnYXV0aCcsICdhZG1pbiddKTsKYGBgCmBhcHAvSHR0cC9Db250cm9sbGVycy9Vc2Vyc0NvbnRyb2xsZXIucGhwYApgYGBwaHAKPD9waHAKCm5hbWVzcGFjZSBBcHBcSHR0cFxDb250cm9sbGVyczsKCnVzZSBJbGx1bWluYXRlXEh0dHBcSnNvblJlc3BvbnNlOwp1c2UgSWxsdW1pbmF0ZVxIdHRwXFJlcXVlc3Q7CnVzZSBBcHBcSHR0cFxSZXNvdXJjZXNcVXNlcnNSZXNvdXJjZTsKdXNlIEFwcFxIdHRwXFJlcXVlc3RzXFN0b3JlVXNlcnNSZXF1ZXN0Owp1c2UgQXBwXEh0dHBcUmVxdWVzdHNcVXBkYXRlVXNlcnNSZXF1ZXN0OwoKY2xhc3MgVXNlcnNDb250cm9sbGVyCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBpbmRleCgpOiBKc29uUmVzcG9uc2UKICAgIHsKICAgICAgICAvLyByZXR1cm4gVXNlcnNSZXNvdXJjZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzdG9yZShTdG9yZVVzZXJzUmVxdWVzdCAkcmVxdWVzdCk6IEpzb25SZXNwb25zZQogICAgewogICAgICAgIC8vIHJldHVybiBVc2Vyc1Jlc291cmNlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHVwZGF0ZShpbnQgJHVzZXJJZCwgVXBkYXRlVXNlcnNSZXF1ZXN0ICRyZXF1ZXN0KTogSnNvblJlc3BvbnNlCiAgICB7CiAgICAgICAgLy8gcmV0dXJuIFVzZXJzUmVzb3VyY2UoKTsKICAgIH0KCn0KYGBgCmBhcHAvSHR0cC9SZXF1ZXN0cy9TdG9yZVVzZXJzUmVxdWVzdC5waHBgCmBgYHBocAo8P3BocAoKbmFtZXNwYWNlIEFwcFxIdHRwXFJlcXVlc3RzOwoKdXNlIElsbHVtaW5hdGVcSHR0cFxSZXF1ZXN0OwoKY2xhc3MgU3RvcmVVc2Vyc1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0CnsKICAgIHB1YmxpYyBmdW5jdGlvbiBydWxlcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICd1c2VybmFtZScgPT4gWydyZXF1aXJlZCcsICdzdHJpbmcnLCAncmVnZXg6L15bYS16QS1aMC05Xy1dezMsMTZ9JC8nXSwKICAgICAgICAgICAgJ2VtYWlsJyA9PiBbJ3JlcXVpcmVkJywgJ3N0cmluZycsICdlbWFpbCcsICdtYXg6MzAnXSwKICAgICAgICBdOwogICAgfQp9CmBgYApgYXBwL0h0dHAvUmVxdWVzdHMvVXBkYXRlVXNlcnNSZXF1ZXN0LnBocGAKYGBgcGhwCjw/cGhwCgpuYW1lc3BhY2UgQXBwXEh0dHBcUmVxdWVzdHM7Cgp1c2UgSWxsdW1pbmF0ZVxIdHRwXFJlcXVlc3Q7CgpjbGFzcyBVcGRhdGVVc2Vyc1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0CnsKICAgIHB1YmxpYyBmdW5jdGlvbiBydWxlcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICd1c2VybmFtZScgPT4gWydyZXF1aXJlZCcsICdzdHJpbmcnLCAncmVnZXg6L15bYS16QS1aMC05Xy1dezMsMTZ9JC8nXSwKICAgICAgICAgICAgJ2VtYWlsJyA9PiBbJ3JlcXVpcmVkJywgJ3N0cmluZycsICdlbWFpbCcsICdtYXg6MzAnXSwKICAgICAgICBdOwogICAgfQp9CmBgYApgYXBwL0h0dHAvUmVzb3VyY2VzL1VzZXJzUmVzb3VyY2UucGhwYApgYGBwaHAKPD9waHAKCm5hbWVzcGFjZSBBcHBcSHR0cFxSZXNvdXJjZXM7Cgp1c2UgSWxsdW1pbmF0ZVxIdHRwXFJlcXVlc3Q7CnVzZSBJbGx1bWluYXRlXEh0dHBcUmVzb3VyY2VzXEpzb25cSnNvblJlc291cmNlOwoKY2xhc3MgVXNlcnNSZXNvdXJjZSBleHRlbmRzIEpzb25SZXNvdXJjZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdG9BcnJheShSZXF1ZXN0ICRyZXF1ZXN0KTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAnaWQnID0+ICR0aGlzLT5pZCwKICAgICAgICAgICAgJ3VzZXJuYW1lJyA9PiAkdGhpcy0+dXNlcm5hbWUsCiAgICAgICAgICAgICdlbWFpbCcgPT4gJHRoaXMtPmVtYWlsLAogICAgICAgIF07CiAgICB9Cn0KYGBgCiMjIEluc3RhbGxhdGlvbgpUbyBpbnN0YWxsIHRoZSBwYWNrYWdlLCB5b3UgY2FuIHVzZSBDb21wb3NlcjoKCmBgYApjb21wb3NlciByZXF1aXJlIC0tZGV2IGxhcmF2ZWwtb3BlbmFwaS9jb2RlZ2VuCmBgYAoKIyMjIENvbmZpZ3VyYXRpb24KQWZ0ZXIgaW5zdGFsbGluZyB0aGUgcGFja2FnZSwgeW91J2xsIG5lZWQgdG8gY29uZmlndXJlIGl0IHRvIHN1aXQgeW91ciBwcm9qZWN0J3MgbmVlZHMuIFRoaXMgcGFja2FnZSBwcm92aWRlcyB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBjdXN0b21pemUgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwcm9jZXNzLgoKIyMjIyBQdWJsaXNoaW5nIENvbmZpZ3VyYXRpb24KYGBgCnBocCBhcnRpc2FuIHZlbmRvcjpwdWJsaXNoIC0tcHJvdmlkZXI9IkxhcmF2ZWxPcGVuYXBpXENvZGVnZW5cTGFyYXZlbE9wZW5hcGlDb2RlZ2VuUHJvdmlkZXIiCmBgYApUaGlzIGNvbW1hbmQgd2lsbCBjcmVhdGUgYW4gYG9wZW5hcGktY29kZWdlbi5waHBgIGZpbGUgaW4geW91ciBMYXJhdmVsIGFwcGxpY2F0aW9uJ3MgYGNvbmZpZ2AgZGlyZWN0b3J5LgoKIyMjIENvbmZpZ3VyYXRpb24gT3B0aW9ucwoKSW4gdGhlIG9wZW5hcGktY29kZWdlbi5waHAgY29uZmlndXJhdGlvbiBmaWxlLCB5b3UnbGwgZmluZCB0aGUgZm9sbG93aW5nIG9wdGlvbnM6CiogYGFwaV9kb2NzX3VybGA6IFNwZWNpZmllcyB0aGUgVVJMIHdoZXJlIHRoZSBPcGVuQVBJIGRvY3VtZW50YXRpb24gd2lsbCBiZSBhY2Nlc3NpYmxlLiBUaGlzIFVSTCBzaG91bGQgcG9pbnQgdG8gdGhlIGxvY2F0aW9uIG9mIHlvdXIgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZpbGUuCiogYGVudGl0aWVzYDogRGVmaW5lcyB0aGUgZW50aXRpZXMgZm9yIHdoaWNoIGNvZGUgZ2VuZXJhdGlvbiB3aWxsIGJlIHBlcmZvcm1lZC4gWW91IGNhbiBzcGVjaWZ5IHdoaWNoIGVudGl0aWVzIHNob3VsZCBiZSBnZW5lcmF0ZWQgYnkgYWRkaW5nIHRoZW0gdG8gdGhpcyBhcnJheS4gU3VwcG9ydGVkIGVudGl0aWVzIGluY2x1ZGU6CiAgKiBgcm91dGVgOiBHZW5lcmF0ZSBMYXJhdmVsIHJvdXRlcyBiYXNlZCBvbiBPcGVuQVBJIHBhdGhzLgogICogYHJlcXVlc3RgOiBHZW5lcmF0ZSByZXF1ZXN0IGNsYXNzZXMgYmFzZWQgb24gT3BlbkFQSSByZXF1ZXN0IGJvZGllcy4KICAqIGByZXNvdXJjZWA6IEdlbmVyYXRlIHJlc291cmNlIGNsYXNzZXMgZm9yIEFQSSByZXNwb25zZXMuCiAgKiBgY29udHJvbGxlcmA6IEdlbmVyYXRlIGNvbnRyb2xsZXJzIGZvciBoYW5kbGluZyBBUEkgcmVxdWVzdHMuCiAgCiAgICBCeSBkZWZhdWx0LCBhbGwgc3VwcG9ydGVkIGVudGl0aWVzIHdpbGwgYmUgZ2VuZXJhdGVkLiAKICAgIFRvIGV4Y2x1ZGUgc3BlY2lmaWMgZW50aXRpZXMsIHNpbXBseSByZW1vdmUgdGhlbSBmcm9tIHRoaXMgYXJyYXkuCiogYHBhdGhzYDogU3BlY2lmaWVzIGFkZGl0aW9uYWwgcGF0aHMgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24uIEN1cnJlbnRseSwgb25seSB0aGUgcm91dGVzX2ZpbGUgb3B0aW9uIGlzIGF2YWlsYWJsZSwgd2hpY2ggZGVmaW5lcyB0aGUgZmlsZSBwYXRoIHdoZXJlIHRoZSBPcGVuQVBJIHJvdXRlcyB3aWxsIGJlIGdlbmVyYXRlZC4KCiMjIyBVc2FnZQojIyMjIEdlbmVyYXRlIGNvZGUKVG8gZ2VuZXJhdGUgTGFyYXZlbCBjb2RlIGZyb20gYW4gT3BlbkFQSSBZQU1MIGZpbGUsIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgQXJ0aXNhbiBjb21tYW5kOgoKYGBgCnBocCBhcnRpc2FuIG9wZW5hcGk6Z2VuZXJhdGUtY29kZQpgYGAKClRoaXMgY29tbWFuZCB3aWxsIGdlbmVyYXRlIExhcmF2ZWwgcm91dGVzLCByZXF1ZXN0cywgcmVzb3VyY2UgYW5kIGNvbnRyb2xsZXJzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBPcGVuQVBJIFlBTUwgZmlsZS4KCgojIyMgQ29udHJpYnV0aW5nCkkgd2VsY29tZSBjb250cmlidXRpb25zIGZyb20gdGhlIGNvbW11bml0eSEgSWYgeW91IGhhdmUgYW55IGlkZWFzIGZvciBpbXByb3ZlbWVudHMgb3IgZmluZCBhbnkgaXNzdWVzLCBwbGVhc2UgZmVlbCBmcmVlIHRvIG9wZW4gYW4gaXNzdWUgb3Igc3VibWl0IGEgcHVsbCByZXF1ZXN0IG9uIEdpdEh1Yi4KCiMjIyBMaWNlbnNlClRoaXMgcGFja2FnZSBpcyBvcGVuLXNvdXJjZSBzb2Z0d2FyZSBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCgojIyMgU3VwcG9ydApJZiB5b3UgZW5jb3VudGVyIGFueSBwcm9ibGVtcyBvciBoYXZlIHF1ZXN0aW9ucyBhYm91dCB1c2luZyB0aGUgcGFja2FnZSwgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIHJlYWNoIG91dCB0byB1cyB2aWEgZW1haWwgKHNhZmFydW1hcm92QGdtYWlsLmNvbSkgb3IgR2l0SHViIGlzc3Vlcy4K readmeEtag: '"8c5c22689e4f6391ac27a87d382a50d1ba011862"' readmeLastModified: Mon, 15 Dec 2025 20:52:22 GMT repositoryId: 766410829 description: Laravel OpenAPI Code Generation created: '2024-03-03T07:23:26Z' updated: '2025-12-15T20:52:26Z' language: PHP archived: false stars: 6 watchers: 1 forks: 0 owner: umarov-safar logo: https://avatars.githubusercontent.com/u/68920816?v=4 repoEtag: '"ae596ba65e18cff70b682162ee0a930dfc79e499b3c7f45411cc3716ddc1038e"' repoLastModified: Mon, 15 Dec 2025 20:52:26 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/vect0rpro/dropwizard-swagger v3: true repositoryMetadata: base64Readme: >- RHJvcHdpemFyZCBTd2FnZ2VyIEludGVncmF0aW9uCj09PT09PT09PT09PT09PT09PQoKWyFbQXBhY2hlIExpY2Vuc2UgVjIuMF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUFwYWNoZSUyMFYyLTUwY2EyMi5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vVmVjdDByUHJvL2Ryb3B3aXphcmQtc3dhZ2dlci9ibG9iL21hc3Rlci9MSUNFTlNFKQpbIVtNYXZlbiBDZW50cmFsXShodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLWNlbnRyYWwvdi9pbi52ZWN0b3Jwcm8uZHJvcHdpemFyZC9kcm9wd2l6YXJkLXN3YWdnZXI/bGFiZWw9TWF2ZW4lMjBDZW50cmFsJmNvbG9yPTUwY2EyMildKGh0dHBzOi8vY2VudHJhbC5zb25hdHlwZS5jb20vYXJ0aWZhY3QvaW4udmVjdG9ycHJvLmRyb3B3aXphcmQvZHJvcHdpemFyZC1zd2FnZ2VyKQoKQSBEcm9wd2l6YXJkIGJ1bmRsZSB0aGF0IHNlcnZlcyBTd2FnZ2VyIFVJIHN0YXRpYyBjb250ZW50IGFuZCBsb2FkcyBTd2FnZ2VyIGVuZHBvaW50cy4KCkN1cnJlbnQgdmVyc2lvbiBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBEcm9wd2l6YXJkIDIuMS4xMiBhbmQgU3dhZ2dlciAyLjIuMiB3aGljaCBzdXBwb3J0cyBPcGVuQXBpIDMuMCBzcGVjaWZpY2F0aW9ucwoKUmVxdWlyZW1lbnRzCi0tLS0tLS0tLS0tLS0tCiogRHJvcHdpemFyZCAyLjEuMTIKKiBTd2FnZ2VyIEFQSSAyLjIuMgoqIFN3YWdnZXIgVUkgNS4yNy4wCgpVc2FnZQotLS0tLS0tLS0tLS0tCgoqIEFkZCB0aGUgTWF2ZW4gZGVwZW5kZW5jeSAoYXZhaWxhYmxlIGluIE1hdmVuIENlbnRyYWwpCgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgICA8Z3JvdXBJZD5pbi52ZWN0b3Jwcm8uZHJvcHdpemFyZDwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPmRyb3B3aXphcmQtc3dhZ2dlcjwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPjIuMS4xMi0xPC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CmBgYAoKCiogQWRkIHRoZSBmb2xsb3dpbmcgdG8geW91ciBDb25maWd1cmF0aW9uIGNsYXNzOgoKYGBgamF2YQpwdWJsaWMgY2xhc3MgWW91ckNvbmZpZ3VyYXRpb24gZXh0ZW5kcyBDb25maWd1cmF0aW9uIHsKCiAgICBASnNvblByb3BlcnR5KCJzd2FnZ2VyIikKICAgIHB1YmxpYyBTd2FnZ2VyQnVuZGxlQ29uZmlndXJhdGlvbiBzd2FnZ2VyQnVuZGxlQ29uZmlndXJhdGlvbjsKYGBgCgoqIEFkZCB0aGUgZm9sbG93aW5nIHlvdXIgY29uZmlndXJhdGlvbiB5YW1sICh0aGlzIGlzIHRoZSBtaW5pbWFsIGNvbmZpZ3VyYXRpb24geW91IG5lZWQpOgoKYGBgeWFtbApwcm9wMTogdmFsdWUxCnByb3AyOiB2YWx1ZTIKCiMgdGhlIG9ubHkgcmVxdWlyZWQgcHJvcGVydHkgaXMgcmVzb3VyY2VQYWNrYWdlLCBmb3IgbW9yZSBjb25maWcgb3B0aW9ucyBzZWUgYmVsb3cKc3dhZ2dlcjoKICByZXNvdXJjZVBhY2thZ2U6IDxhIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcgb2YgdGhlIHBhY2thZ2VzIHRoYXQgY29udGFpbiB5b3VyIEBPcGVuQVBJRGVmaW5pdGlvbiBhbm5vdGF0ZWQgcmVzb3VyY2VzPgoKICAjIENvbmZpZ3VyZSBwYWdlIHRpdGxlIG9yIGNvZGUgc25pcHBldCB0YXJnZXRzIGFzIG5lZWRlZAogIHN3YWdnZXJWaWV3Q29uZmlndXJhdGlvbjoKICAgIHBhZ2VUaXRsZTogIkFQSSBEb2N1bWVudGF0aW9uIgogICAgIyBEZWZhdWx0IHZhbHVlIG9mIGNvZGUgc25pcHBldCB0YXJnZXRzIGlzIGFsd2F5cyBwcm92aWRlZCBieSB0aGUgYnVuZGxlCiAgICAjIEluY2x1ZGUgc3VwcG9ydGVkIHNuaXBwZXQgdGFyZ2V0cyBhcyBwZXIgbGluayBwcm92aWRlZCBiZWxvdyBpZiBtb2RpZmljYXRpb24gdG8gZGVmYXVsdCB2YWx1ZSBpcyByZXF1aXJlZAogICAgY29kZVNuaXBwZXRUYXJnZXRzOgogICAgICAtIGphdmFfb2todHRwCiAgICAgIC0gcHl0aG9uX3JlcXVlc3RzCmBgYAoKU3VwcG9ydGVkIGNvZGUgc25pcHBldCB0YXJnZXRzOiBbbGlua10oaHR0cHM6Ly9naXRodWIuY29tL3Ryb250bzIwL3N3YWdnZXItc25pcHBldC1nZW5lcmF0b3I/dGFiPXJlYWRtZS1vdi1maWxlI3RhcmdldHMpCgoqIEluIHlvdXIgQXBwbGljYXRpb24gY2xhc3M6CgpgYGBqYXZhCkBPdmVycmlkZQpwdWJsaWMgdm9pZCBpbml0aWFsaXplKEJvb3RzdHJhcDxZb3VyQ29uZmlndXJhdGlvbj4gYm9vdHN0cmFwKSB7CiAgICBib290c3RyYXAuYWRkQnVuZGxlKG5ldyBTd2FnZ2VyQnVuZGxlPFlvdXJDb25maWd1cmF0aW9uPigpIHsKICAgICAgICBAT3ZlcnJpZGUKICAgICAgICBwcm90ZWN0ZWQgU3dhZ2dlckJ1bmRsZUNvbmZpZ3VyYXRpb24gZ2V0U3dhZ2dlckJ1bmRsZUNvbmZpZ3VyYXRpb24oWW91ckNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgewogICAgICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbi5zd2FnZ2VyQnVuZGxlQ29uZmlndXJhdGlvbjsKICAgICAgICB9CiAgICB9KTsKfQpgYGAKCiogQXMgdXN1YWwsIGFkZCBTd2FnZ2VyIGFubm90YXRpb25zIHRvIHlvdXIgcmVzb3VyY2UgY2xhc3NlcyBhbmQgbWV0aG9kcwoKKiBPcGVuIGEgYnJvd3NlciBhbmQgaGl0IGBodHRwOi8vbG9jYWxob3N0Ojx5b3VyX3BvcnQ+L3N3YWdnZXJgCgoqIFRvIHNlZSBhbGwgdGhlIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBjdXN0b21pemUgU3dhZ2dlciBVSSBzZWUgW1N3YWdnZXJCdW5kbGVDb25maWd1cmF0aW9uLmphdmFdKGRyb3B3aXphcmQtc3dhZ2dlci9zcmMvbWFpbi9qYXZhL2luL3ZlY3RvcnByby9kcm9wd2l6YXJkL3N3YWdnZXIvU3dhZ2dlckJ1bmRsZUNvbmZpZ3VyYXRpb24uamF2YSkK readmeEtag: '"b5cc29d28713a32dc720b7fe3045366d21aaa368"' readmeLastModified: Thu, 27 Nov 2025 05:22:34 GMT repositoryId: 384696629 description: Dropwizard Swagger 2.x and OpenAPI 3.x Integration created: '2021-07-10T12:49:31Z' updated: '2026-01-25T10:54:40Z' language: Java archived: false stars: 7 watchers: 3 forks: 6 owner: Vect0rPro logo: https://avatars.githubusercontent.com/u/87179257?v=4 license: Apache-2.0 repoEtag: '"1162ed1f82b95a0a65a991381a7f0fa5a87ac77eabe8f3319b58788439591b06"' repoLastModified: Sun, 25 Jan 2026 10:54:40 GMT foundInMaster: true category: SDK id: 9d2d990aafc59b92f9c7c2b92c20f519 - source: openapi3 tags repository: https://github.com/gichure/e-procure v3: true id: 8f0cf8f8364853a7341aeec8fc9712e6 repositoryMetadata: base64Readme: >- WyFbQ0ldKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL0dpY2h1cmUvZS1wcm9jdXJlL3RyZWUvbWFpbi5zdmc/c3R5bGU9c3ZnKV0oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvR2ljaHVyZS9lLXByb2N1cmUvdHJlZS9tYWluKQpbIVtDb2RlIEFuYWx5c2lzXShodHRwczovL2dpdGh1Yi5jb20vR2ljaHVyZS9lLXByb2N1cmUvYWN0aW9ucy93b3JrZmxvd3MvY29kZXFsLWFuYWx5c2lzLnltbC9iYWRnZS5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL2dpdGh1Yi5jb20vR2ljaHVyZS9lLXByb2N1cmUvYWN0aW9ucy93b3JrZmxvd3MvY29kZXFsLWFuYWx5c2lzLnltbCkKWyFbUHVibGlzaGluZyBQYWNrYWdlXShodHRwczovL2dpdGh1Yi5jb20vR2ljaHVyZS9lLXByb2N1cmUvYWN0aW9ucy93b3JrZmxvd3MvbWF2ZW4tcHVibGlzaC55bWwvYmFkZ2Uuc3ZnP2JyYW5jaD1tYWluKV0oaHR0cHM6Ly9naXRodWIuY29tL0dpY2h1cmUvZS1wcm9jdXJlL2FjdGlvbnMvd29ya2Zsb3dzL21hdmVuLXB1Ymxpc2gueW1sKQoKIyBlLXByb2N1cmUKRS1Qcm9jdXJlbWVudCBTeXN0ZW0gdG8gbWVldCB0aGUgbmVlZHMgb2YgYXV0b21hdGlvbiBpbiB0aGUgaW50ZXJuYWwgcHJvY3VyZW1lbnQgcHJvY2VzcyBvZiBhIGNvbXBhbnkuICAKIyMgT3ZlcnZpZXcKMS4gIFRoZSBhcHBsaWNhdGlvbiBoYXMgYmVlbiBkZXZlbG9wZWQgdXNpbmcgbWljcm9zZXJ2aWNlIGFwcHJvYWNoLiAgCjIuICBXZSB1c2UgZ2l0IG1vbm9yZXBvIHdoZXJlIGFsbCBtaWNyb3NlcnZpY2VzIGFyZSB0aGUgbW9kdWxlcyBpbiBhIHNpbmdsZSByZXNwb3NpdG9yeS4KMy4gIEVhY2ggbWljcm9zZXJ2aWNlIHByb2R1Y3Qtc2VydmljZSBhbmQgcmV2aWV3LXNlcnZpY2UgY2FuIGJlIGJ1aWx0IGFuZCBydW4gaW5kZXBlbmRlbnRseSB1c2luZyBNYXZlbi4KNC4gIEVhY2ggbWljcm9zZXJ2aWNlIGNhbiBidWlsZCwgdGVzdCwgcnVuLCBkb2NrZXJpemUsIGRlcGxveSAmIHJ1biBpbmRlcGVuZGVudGx5IHVzaW5nIERvY2tlciwgQ2lyY2xlQ0kgYW5kIEt1YmVybmV0ZXMuCgojIyBUb29scyAmIFRlY2hvbG9naWVzCi0gIFNwcmluZyBCb290IGZvciBCdXNpbmVzcyBTZXJ2aWNlcwotICBNaWNyb3NlcnZpY2VzIEFyY2hpdGVjdHVyZQotICBTcHJpbmcgQ2xvdWQgZm9yIE1TQQotICBNeVNRTCBmb3IgUkRCTVMKLSAgQ2FtdW5kYSBmb3IgQlBNTgotICBNb2NraXRvIGZvciBUZXN0aW5nCi0gIERvY2tlciBmb3IgUGFja2FnaW5nIGFuZCBEZXBsb3ltZW50Ci0gIEZseXdheSBmb3IgRGF0YWJhc2UgVmVyc2lvbmluZwotICBBcGFjaGUgS2Fma2EgZm9yIE1lc3NhZ2luZwotICBLZXljbG9hY2sgZm9yIEF1dGhlbnRpY2F0aW9uIGFuZCBBdXRob3JpemF0aW9uCi0gIENpcmNsZUNJIGZvciBDSS9DRAotICBTd2FnZ2VyIGZvciBBUEkgRG9jdW1lbnRhdGlvbgoKCiMjIE1vZHVsZXMKMS4gIFNldHRpbmdzLCBQYXJhbWV0ZXJzIGFuZCBHZW5lcmFsIFNldHVwcwoyLiAgRW1wbG95ZWVzL1N0YWZmIE1hbmFnZW1lbnQKMy4gIEl0ZW1zL0ludmVudG9yeSBNYW5hZ2VtZW50CjQuICBQdXJjaGFzZSBSZXF1aXN0aW9uCjUuICBQdXJjaGFzZSBPcmRlcgo2LiAgVmVuZG9yIE1hbmFnZW1lbnQKNy4gIEJpZCBNYW5hZ2VtZW50CjguICBJbnZvaWNlIE1hbmFnZW1lbnQKOS4gIFBheW1lbnQgUHJvY2Vzc2luZwoxMC4gIEJ1c2luZXNzIFByb2Nlc3MgTWFuYWdlbWVudChXb3JrZmxvdykKCiMjIFNlcnZpY2VzCjEuICBbY29uZmlndXJhdGlvbnMtc2VydmljZV0oY29uZmlndXJhdGlvbnMtc2VydmljZS9SRUFETUUubWQpCjIuICBbZGlzY292ZXJ5LXNlcnZpY2VdKGRpc2NvdmVyeS1zZXJ2aWNlL1JFQURNRS5tZCkKMy4gIFtnYXRld2F5LXNlcnZpY2VdKGdhdGV3YXktc2VydmljZS9SRUFETUUubWQpCjQuICBbc2V0dXBzLXNlcnZpY2VdKHNldHVwcy1zZXJ2aWNlL1JFQURNRS5tZCkKNS4gIFtlbXBsb3llZXMtc2VydmljZV0oZW1wbG95ZWVzLXNlcnZpY2UvUkVBRE1FLm1kKQo2LiAgW3dvcmtmbG93LXNlcnZpY2VdKHdvcmtmbG93LXNlcnZpY2UvUkVBRE1FLm1kKQo3LiAgW25vdGlmaWNhdGlvbnMtc2VydmljZV0obm90aWZpY2F0aW9ucy1zZXJ2aWNlL1JFQURNRS5tZCkKOC4gIFtpbnZlbnRvcnktc2VydmljZV0oaW52ZW50b3J5LXNlcnZpY2UvUkVBRE1FLm1kKQo5LiAgW3N1cHBsaWVycy1zZXJ2aWNlXShzdXBwbGllcnMtc2VydmljZS9SRUFETUUubWQpCjEwLiBbb3JkZXJzLXNlcnZpY2VdKG9yZGVycy1zZXJ2aWNlL1JFQURNRS5tZCkKMTEuIFtpbnZvaWNlcy1zZXJ2aWNlXShpbnZvaWNlcy1zZXJ2aWNlL1JFQURNRS5tZCkKMTIuIFtwYXltZW50cy1zZXJ2aWNlXShwYXltZW50cy1zZXJ2aWNlL1JFQURNRS5tZCkKMTMuIFthdXRoZW50aWNhdGlvbi1zZXJ2aWNlXShhdXRoZW50aWNhdGlvbi1zZXJ2aWNlL1JFQURNRS5tZCkKMTQuIFtmcm9udGVuZC1zZXJ2aWNlXSh1aS1zZXJ2aWNlL1JFQURNRS5tZCkKCiMjIFN0YXJ0aW5nIFVwCkNsb25lIHRoaXMgcmVwb3NpdG9yeS4gIApGcm9tIHRoZSByb290IGZvbGRlciwgcnVuIG12biBjbGVhbiBwYWNrYWdlICAKUnVuIGRvY2tlciBjb21wb3NlIHVwCgojIyBQb3N0bWFuIENvbGxlY3Rpb24KWW91IGNhbiBhY2Nlc3MgdGhlIHBvc3RtYW4gY29sbGVjdGlvbiBbaGVyZV0oKSAgCiMjIyBQcm9jZXNzIEZsb3cKIVtFLVByb2N1cmUgUHJvY2VzcyBGbG93XShyZXNvdXJjZXMvaW1hZ2VzL3Byb2Nlc3NfZmxvdy5qcGcpCgojIyMjIENvbnRyaWJ1dGlvbnMKLSAgW1BhdWwgR2ljaHVyZV0oaHR0cHM6Ly9saW5rZWRpbi5jb20vaW4vZ2ljaHVyZSkuIFlvdSBjYW4gcmVhY2ggb3V0IGF0IGUtcHJvY3VyZUBnaWNodXJlLm1lLmtlCgojIyMjIExpY2Vuc2UKW01JVF0oTElDRU5TRS5tZCkKCiMjIyMgSXNzdWVzIFJlcG9ydGluZwpJc3N1ZXMgYXJlIHRvIGJlIHJlcG9ydGVkIGluIFt0aGlzIGZvcm1hdF0oLmdpdGh1Yi9JU1NVRV9URU1QTEFURS9idWdfcmVwb3J0Lm1kKQoKIyMjIyBEaXNjbGFpbWVyClRoaXMgcHJvamVjdCBpcyBwdXJlbHkgZm9yIGxlYXJuaW5nIHB1cnBvc2VzIGFuZCB0aHVzIGl0IGlzIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiAgClNob3VsZCB5b3UgbmVlZCBhIHN0YWJsZSB2ZXJzaW9uLHJlYWNoIG91dCBhdCBlLXByb2N1cmVAZ2ljaHVyZS5tZS5rZSBvciBmb3JrIHRoaXMgcmVwb3NpdG9yeS4gCiBJIGFsc28gZG8gbm90IG9mZmVyIHN1cHBvcnQgc2VydmljZXMgYXMgd2VsbC4gIAo= readmeEtag: '"b90823636a3bcc61d2da20ee332c6c83f66a60fe"' readmeLastModified: Sun, 15 Dec 2024 14:09:34 GMT repositoryId: 489591997 description: >- E-Procurement System to meet the needs of automation in the internal procurement process of a company. Built on Springboot using micro-services Archicture created: '2022-05-07T06:39:29Z' updated: '2026-01-25T08:10:06Z' language: Java archived: false stars: 12 watchers: 2 forks: 6 owner: Gichure logo: https://avatars.githubusercontent.com/u/6824034?v=4 license: MIT repoEtag: '"97c5ce5c3bc6347db959e2d1b43a4a12f346fc2f24db96f39db049977d410fac"' repoLastModified: Sun, 25 Jan 2026 08:10:06 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/elazar/phanua v3: true repositoryMetadata: base64Readme: >- IyBQaGFudWEKClshW1BIUCBWZXJzaW9uIFN1cHBvcnRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vc3RhdGljL3YxP2xhYmVsPXBocCZtZXNzYWdlPSUzRT0lMjA3LjQuMCZjb2xvcj1ibHVlKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2VsYXphci9waGFudWEpClshW1BhY2thZ2lzdCBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YXRpYy92MT9sYWJlbD1wYWNrYWdpc3QmbWVzc2FnZT0wLjEuMCZjb2xvcj1ibHVlKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2VsYXphci9waGFudWEpClshW1NvZnR3YXJlIExpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1NSVQtYmx1ZS5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXShMSUNFTlNFLm1kKQpbIVtCdXkgTWUgYSBDb2ZlZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9idXklMjBtZSUyMGElMjBjb2ZmZWUtZG9uYXRlLWJsdWUuc3ZnKV0oaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9ESWttMXFlKQpbIVtQYXRyZW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3BhdHJlb24tZG9uYXRlLWJsdWUuc3ZnKV0oaHR0cHM6Ly9wYXRyZW9uLmNvbS9tYXR0aGV3dHVybGFuZCkKCltPcGVuQVBJIDNdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykgKyBbSmFuZV0oaHR0cHM6Ly9qYW5lLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8pICsgW0N5Y2xlIE9STV0oaHR0cHM6Ly9jeWNsZS1vcm0uZGV2KSA9IPCflKUKClBoYW51YSBidWlsZHMgQ3ljbGUgT1JNIHNjaGVtYXMgZnJvbSBPcGVuQVBJIDMgY29tcG9uZW50IHNjaGVtYXMuCgpSZWxlYXNlZCB1bmRlciB0aGUgW01JVCBMaWNlbnNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NSVRfTGljZW5zZSkuCgoqKldBUk5JTkc6IFRoaXMgcHJvamVjdCBpcyBpbiBhbiBhbHBoYSBzdGF0ZSBvZiBkZXZlbG9wbWVudCBhbmQgbWF5IGJlIHN1YmplY3QgdG8gY2hhbmdlcyB0aGF0IGJyZWFrIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIEl0IG1heSBjb250YWluIGJ1Z3MsIGxhY2sgZmVhdHVyZXMgb3IgZXh0ZW5zaW9uIHBvaW50cywgb3IgYmUgb3RoZXJ3aXNlIHVuc3VpdGFibGUgZm9yIHByb2R1Y3Rpb24gdXNlLiBVc2VyIGRpc2NyZXRpb24gaXMgYWR2aXNlZC4qKgoKIyMgUmVxdWlyZW1lbnRzCgoqIFBIUCA3LjQrCiogW1BET10oaHR0cHM6Ly93d3cucGhwLm5ldC9wZG8pIGFuZCBbZHJpdmVyXShodHRwczovL3d3dy5waHAubmV0L21hbnVhbC9lbi9wZG8uZHJpdmVycy5waHApIGZvciBkZXNpcmVkIGRhdGFiYXNlCgojIyBJbnN0YWxsYXRpb24KClVzZSBbQ29tcG9zZXJdKGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnLykuCgpgYGBzaApjb21wb3NlciByZXF1aXJlIGVsYXphci9waGFudWEKYGBgCgojIyBVc2FnZQoKYGBgcGhwCjw/cGhwCgovKioKICogMS4gQ29uZmlndXJlIHRoZSBQaGFudWEgc2VydmljZSBwcm92aWRlci4KICoKICogVGhlIG5leHQgc2VjdGlvbiBjb3ZlcnMgdGhpcyBzdGVwIGluIG1vcmUgZGV0YWlsLgogKi8KCiRwcm92aWRlciA9IG5ldyBcRWxhemFyXFBoYW51YVxTZXJ2aWNlXFByb3ZpZGVyOwoKLy8gQ29uZmlndXJlICRwcm92aWRlciBhcyBuZWVkZWQgaGVyZS4KCi8qKgogKiAyLiBVc2UgdGhlIFBoYW51YSBzZXJ2aWNlIHByb3ZpZGVyIHRvIGNyZWF0ZSBhIFBoYW51YSBzY2hlbWEgYnVpbGRlci4KICovCgokc2NoZW1hQnVpbGRlciA9ICRwcm92aWRlci0+Z2V0U2NoZW1hQnVpbGRlcigpOwoKLyoqCiAqIDMuIFVzZSB0aGUgUGhhbnVhIHNjaGVtYSBidWlsZGVyIHRvIGdlbmVyYXRlIGEgQ3ljbGUgc2NoZW1hIG9yIE9STSBpbnN0YW5jZS4KICovCgovLyBUbyBjb25maWd1cmUgYW4gZXhpc3RpbmcgT1JNIGluc3RhbmNlIHRvIHVzZSB0aGUgZ2VuZXJhdGVkIHNjaGVtYToKJG9ybSA9IG5ldyBcQ3ljbGVcT1JNXE9STSgvKiAuLi4gKi8pOwovLyAuLi4KJHNjaGVtYSA9ICRzY2hlbWFCdWlsZGVyLT5idWlsZFNjaGVtYSgpOwokb3JtID0gJG9ybS0+d2l0aFNjaGVtYSgkc2NoZW1hKTsKCi8vIFRvIGhhdmUgUGhhbnVhIGNyZWF0ZSBhIG5ldyBPUk0gaW5zdGFuY2Ugd2l0aCB0aGUgZ2VuZXJhdGVkIHNjaGVtYToKJG9ybSA9ICRzY2hlbWFCdWlsZGVyLT5idWlsZE9ybSgpOwpgYGAKCiMjIENvbmZpZ3VyYXRpb24KCkZvciBpdHMgbW9zdCBiYXNpYyB1c2UsIFBoYW51YSBuZWVkcyB0aHJlZSBwYXJhbWV0ZXJzOgoKMS4gdGhlIHBhdGggdG8gYW4gT3BlbkFQSSAzIHNwZWNpZmljYXRpb24gZmlsZSBpbiBKU09OIG9yIFlBTUwgZm9ybWF0OwoyLiBhIFBIUCBuYW1lc3BhY2UgdXNlZCBieSBbZ2VuZXJhdGVkXShodHRwczovL2phbmUucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2RvY3VtZW50YXRpb24vT3BlbkFQSS5odG1sI2dlbmVyYXRpbmcpIFtKYW5lIG1vZGVsIGNsYXNzIGZpbGVzXShodHRwczovL2phbmUucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2RvY3VtZW50YXRpb24vT3BlbkFQSS5odG1sI3VzaW5nKSAod2l0aG91dCB0aGUgYE1vZGVsYCBzdWJuYW1lc3BhY2UgYWRkZWQgYnkgSmFuZSk7IGFuZAozLiBhIEN5Y2xlIE9STSBkYXRhYmFzZSBjb25maWd1cmF0aW9uLgoKWW91IGNhbiBwYXNzIHRoZXNlIHBhcmFtZXRlcnMgdG8gUGhhbnVhIGJ5IHVzaW5nIGFuIGluc3RhbmNlIG9mIHRoZSBQaGFudWEgc2VydmljZSBwcm92aWRlciBjbGFzcyBgRWxhemFyXFBoYW51YVxTZXJ2aWNlXFByb3ZpZGVyYC4KCllvdSBjYW4gcHJvdmlkZSB0aGUgcGF0aCBhbmQgbmFtZXNwYWNlIHByb3ZpZGVkIHVzaW5nIHlvdXIgW0phbmUgY29uZmlndXJhdGlvbiBmaWxlXShodHRwczovL2phbmUucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2RvY3VtZW50YXRpb24vT3BlbkFQSS5odG1sI2NvbmZpZ3VyYXRpb24tZmlsZSkgb3IgYnkgcGFzc2luZyB0aGVtIGRpcmVjdGx5IHRvIHRoZSBzZXJ2aWNlIHByb3ZpZGVyIGluc3RhbmNlLgoKYGBgcGhwCjw/cGhwCgp1c2UgRWxhemFyXFBoYW51YVxTZXJ2aWNlXFByb3ZpZGVyOwoKLy8gVG8gbG9hZCB0aGUgSmFuZSBjb25maWd1cmF0aW9uIGZpbGUsIHByb3ZpZGUgdGhlIHBhdGgKJHByb3ZpZGVyID0gKG5ldyBQcm92aWRlcikKICAgIC0+d2l0aEphbmVDb25maWd1cmF0aW9uKCcvcGF0aC90by8uamFuZS1vcGVuYXBpLnBocCcpOwoKLy8gSWYgZmlsZSBpcyBhbHJlYWR5IGxvYWRlZCwgcHJvdmlkZSB0aGUgY29udGFpbmVkIGFycmF5CiRqYW5lQ29uZmlnID0gcmVxdWlyZSAnLmphbmUtb3BlbmFwaS5waHAnOwokcHJvdmlkZXIgPSAobmV3IFByb3ZpZGVyKQogICAgLT53aXRoSmFuZUNvbmZpZ3VyYXRpb24oJGphbmVDb25maWcpOwoKLy8gVG8gcGFzcyB0aGUgc2FtZSB2YWx1ZXMgZGlyZWN0bHk6CiRwcm92aWRlciA9IChuZXcgUHJvdmlkZXIpCiAgICAtPndpdGhPcGVuQXBpU3BlY1BhdGgoJ3BhdGgvdG8vb3BlbmFwaS5qc29uJykKICAgIC0+d2l0aE5hbWVzcGFjZSgnXFxGb29cXEdlbmVyYXRlZCcpOwpgYGAKCllvdSBjYW4gcHJvdmlkZSB0aGUgZGF0YWJhc2UgY29uZmlndXJhdGlvbiBieSBzcGVjaWZ5aW5nIHRoZSBzYW1lIGFycmF5IHBhc3NlZCB0byBgU3BpcmFsXERhdGFiYXNlXENvbmZpZ1xEYXRhYmFzZUNvbmZpZ2AuIFNlZSBbcmVsYXRlZCBDeWNsZSBkb2N1bWVudGF0aW9uXShodHRwczovL2N5Y2xlLW9ybS5kZXYvZG9jcy9iYXNpYy1jb25uZWN0I2luc3RhbnRpYXRlLWRiYWwpIGZvciBhbiBleGFtcGxlIG9mIHRoaXMgYXJyYXkuCgpgYGBwaHAKPD9waHAKCiRkYXRhYmFzZUNvbmZpZyA9IFsgLyogLi4uICovIF07CiRwcm92aWRlciA9IChuZXcgXEVsYXphclxQaGFudWFcU2VydmljZVxQcm92aWRlcikKICAgIC0+d2l0aERhdGFiYXNlQ29uZmlnKCRkYXRhYmFzZUNvbmZpZyk7CmBgYAoKUHJvdmlkaW5nIHRoZSBkYXRhYmFzZSBjb25maWd1cmF0aW9uIGluIG90aGVyIHdheXMgcmVxdWlyZXMgYW4gZXhwbGFuYXRpb24gb2YgaG93IFBoYW51YSBoYW5kbGVzIGl0cyBkZXBlbmRlbmNpZXMuCgojIyMgT3ZlcnJpZGluZyBEZXBlbmRlbmNpZXMKClRvIG92ZXJyaWRpbmcgYSBkZXBlbmRlbmN5IG9mIFBoYW51YSwgeW91IG11c3QgcHJvdmlkZSBhIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGNvbnRhaW5lciB0aGF0IGluY2x1ZGVzIHRoYXQgZGVwZW5kZW5jeS4KClBoYW51YSBjYW4gdXNlIGFueSBjb250YWluZXIgdGhhdCBpbXBsZW1lbnRzIHRoZSBbUFNSLTExXShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTExLykgc3RhbmRhcmQuIEFuIGV4YW1wbGUgb2Ygc3VjaCBhIGNvbnRhaW5lciBpcyBbUGltcGxlXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvcGltcGxlL3BpbXBsZSksIHdoaWNoIFBoYW51YSB1c2VzIGludGVybmFsbHkuIFBpbXBsZSBpcyB0aGUgcmVjb21tZW5kZWQgY29udGFpbmVyIHRvIHVzZSBpZiB5b3UgYXJlbid0IGFscmVhZHkgdXNpbmcgYSBkaWZmZXJlbnQgb25lLgoKYGBgcGhwCjw/cGhwCgovLyBDcmVhdGUgYSBQaW1wbGUgb3IgUFNSLTExIGNvbnRhaW5lciBpbnN0YW5jZQokY29udGFpbmVyID0gbmV3IFxQaW1wbGVcQ29udGFpbmVyOwoKLy8gVGhlbiBjb25maWd1cmUgUGhhbnVhIHRvIHVzZSBpdAokcHJvdmlkZXIgPSAobmV3IFxFbGF6YXJcUGhhbnVhXFNlcnZpY2VcUHJvdmlkZXIpCiAgICAtPndpdGhEZWxlZ2F0ZUNvbnRhaW5lcigkY29udGFpbmVyKTsKYGBgCgpQaGFudWEgZXhwZWN0cyB0aGlzIGNvbnRhaW5lciB0byB1c2UgW2Z1bGx5LXF1YWxpZmllZCBjbGFzcyBuYW1lc10oaHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2UubmFtZXNwYWNlcy5ydWxlcy5waHApIGFzIGVudHJ5IGlkZW50aWZpZXJzLiBCZWxvdyBhcmUgZXhhbXBsZXMgb2YgYWx0ZXJuYXRlIG1ldGhvZHMgb2YgY29uZmlndXJpbmcgUGltcGxlIHRvIHN1cHBseSB0aGUgZGF0YWJhc2UgY29uZmlndXJhdGlvbi4KCmBgYHBocAo8P3BocAoKJGNvbnRhaW5lciA9IG5ldyBcUGltcGxlXENvbnRhaW5lcjsKCi8vIENvbXBhcmVkIHRvIHRoZSBlYXJsaWVyIGV4YW1wbGUgb2YgcGFzc2luZyB0aGUgZGF0YWJhc2UgY29uZmlndXJhdGlvbiB0bwovLyBQaGFudWEgYXMgYW4gYXJyYXksIHRoaXMgaXMgdGhlIG5leHQgZWFzaWVzdCAvIG1vc3QgbG93LWxldmVsIG1ldGhvZCBvZiBkb2luZwovLyBzbyBpZiB5b3UncmUgbm90IGFscmVhZHkgdXNpbmcgYSBjb250YWluZXIgaW4geW91ciBhcHBsaWNhdGlvbi4KdXNlIFNwaXJhbFxEYXRhYmFzZVxDb25maWdcRGF0YWJhc2VDb25maWc7CiRjb250YWluZXJbRGF0YWJhc2VDb25maWc6OmNsYXNzXSA9IGZuKCkgPT4gbmV3IERhdGFiYXNlQ29uZmlnKAogICAgLy8gUGFzcyB0aGUgc2FtZSBhcnJheSBwYXNzZWQgdG8gUHJvdmlkZXItPndpdGhEYXRhYmFzZUNvbmZpZygpIGluIHRoZSBlYXJsaWVyCiAgICAvLyBleGFtcGxlIGhlcmUuCik7CgovLyBJZiB5b3UncmUgYWxyZWFkeSB1c2luZyBhIGNvbnRhaW5lciBhbmQgaXQgaW5jbHVkZXMgYSBjb25maWd1cmVkIGluc3RhbmNlIG9mCi8vIHRoZSBEYXRhYmFzZU1hbmFnZXIgY2xhc3MgdXNlZCBieSBDeWNsZSBPUk0sIHlvdSBjYW4gc3BlY2lmeSB0aGF0IGluc3RlYWQuCnVzZSBTcGlyYWxcRGF0YWJhc2VcQ29uZmlnXERhdGFiYXNlTWFuYWdlcjsKJGNvbnRhaW5lcltEYXRhYmFzZU1hbmFnZXI6OmNsYXNzXSA9IGZuKCkgPT4gbmV3IERhdGFiYXNlTWFuYWdlcigKICAgIG5ldyBEYXRhYmFzZUNvbmZpZygvKiAuLi4gKi8pCik7CgovLyBPciB5b3UgY2FuIHNwZWNpZnkgYW4gaW1wbGVtZW50YXRpb24gb2YgQ3ljbGVcT1JNXEZhY3RvcnlJbnRlcmZhY2UsIHN1Y2ggYXMKLy8gdGhlIEN5Y2xlXE9STVxGYWN0b3J5IGNsYXNzLgp1c2UgU3BpcmFsXERhdGFiYXNlXENvbmZpZ1x7RmFjdG9yeSwgRmFjdG9yeUludGVyZmFjZX07CiRjb250YWluZXJbRmFjdG9yeUludGVyZmFjZTo6Y2xhc3NdID0gZm4oKSA9PiBuZXcgRmFjdG9yeSgKICAgIG5ldyBEYXRhYmFzZU1hbmFnZXIoLyogLi4uICovKQopOwoKLy8gT3IgeW91IGNhbiBzcGVjaWZ5IGFuIGluc3RhbmNlIG9mIEN5Y2xlXE9STVxPUk0uCnVzZSBDeWNsZVxPUk1cT1JNOwokY29udGFpbmVyW09STTo6Y2xhc3NdID0gZm4oKSA9PiBuZXcgT1JNKAogICAgbmV3IEZhY3RvcnkoLyogLi4uICovKQopOwpgYGAKCklmIHlvdSdyZSBhbHJlYWR5IHVzaW5nIFBpbXBsZSBhbmQgd2FudCBQaGFudWEgdG8gdXNlIGRlcGVuZGVuY2llcyB5b3UndmUgcmVnaXN0ZXJlZCBpbiB5b3VyIGNvbnRhaW5lciwgeW91IGNhbiByZWdpc3RlciB5b3VyIGNvbmZpZ3VyZWQgUGhhbnVhIHNlcnZpY2UgcHJvdmlkZXIgaW5zdGFuY2Ugd2l0aCB5b3VyIGNvbnRhaW5lciBhcyBhIFtwcm92aWRlcl0oaHR0cHM6Ly9naXRodWIuY29tL3NpbGV4cGhwL1BpbXBsZSNleHRlbmRpbmctYS1jb250YWluZXIpLgoKYGBgcGhwCjw/cGhwCgokcHJvdmlkZXIgPSBuZXcgXEVsYXphclxQaGFudWFcU2VydmljZVxQcm92aWRlcjsKCi8vIENvbmZpZ3VyZSAkcHJvdmlkZXIgYXMgbmVlZGVkIGhlcmUuCgokY29udGFpbmVyID0gbmV3IFxQaW1wbGVcQ29udGFpbmVyOwokY29udGFpbmVyLT5yZWdpc3RlcigkcHJvdmlkZXIpOwpgYGAKCk9uY2UgeW91J3ZlIGNvbmZpZ3VyZWQgdGhlIFBoYW51YSBzZXJ2aWNlIHByb3ZpZGVyIHdpdGggdGhlIG5lY2Vzc2FyeSBwYXJhbWV0ZXJzLCBpdCdzIHBvc3NpYmxlIHRvIHVzZSB0aGUgY29udGFpbmVyIGl0IGJ1aWxkcyBpbmRlcGVuZGVudGx5LgoKYGBgcGhwCjw/cGhwCgokcHJvdmlkZXIgPSBuZXcgXEVsYXphclxQaGFudWFcU2VydmljZVxQcm92aWRlcjsKCi8vIENvbmZpZ3VyZSAkcHJvdmlkZXIgYXMgbmVlZGVkIGhlcmUuCgovLyBQaW1wbGUKJGNvbnRhaW5lciA9ICRwcm92aWRlci0+Z2V0Q29udGFpbmVyKCk7CgovLyBQU1ItMTEKJHBzckNvbnRhaW5lciA9ICRwcm92aWRlci0+Z2V0UHNyQ29udGFpbmVyKCk7CgovLyBUbyBnZXQgdGhlIHNjaGVtYSBidWlsZGVyOgoKdXNlIEVsYXphclxQaGFudWFcU2NoZW1hXEJ1aWxkZXI7CgovLyBQaW1wbGUKJHNjaGVtYUJ1aWxkZXIgPSAkY29udGFpbmVyW0J1aWxkZXI6OmNsYXNzXTsKCi8vIFBTUi0xMQokc2NoZW1hQnVpbGRlciA9ICRjb250YWluZXItPmdldChCdWlsZGVyOjpjbGFzcyk7CmBgYAoKIyMjIFJvbGUgUmVzb2x2ZXIKCkN5Y2xlIE9STSB1c2VzIHRoZSB0ZXJtIFsicm9sZSJdKGh0dHBzOi8vY3ljbGUtb3JtLmRldi9kb2NzL2FkdmFuY2VkLXNjaGVtYSNzY2hlbWEtcHJvcGVydGllcykgdG8gcmVmZXIgdG8gYSB1bmlxdWUgbmFtZSBmb3IgYW4gZW50aXR5LgoKUGhhbnVhIGRlZmluZXMgdGhlIGludGVyZmFjZSBgRWxhemFyXFBoYW51YVxFbnRpdHlcUm9sZVJlc29sdmVySW50ZXJmYWNlYCBmb3IgY2xhc3NlcyB1c2VkIHRvIGRldGVybWluZSB0aGUgcm9sZSBmb3IgYSBnaXZlbiBlbnRpdHkuCgpUaGlzIGludGVyZmFjZSBjb250YWlucyBhIHNpbmdsZSBtZXRob2QgYGdldFJvbGUoKWAgd2hpY2ggcmVjZWl2ZXMgYSBzaW5nbGUgcGFyYW1ldGVyOiBhIGBzdHJpbmdgIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIE9wZW5BUEkgY29tcG9uZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVudGl0eS4KCmBnZXRSb2xlKClgIG11c3QgcmV0dXJuIGEgYHN0cmluZ2AgY29udGFpbmluZyB0aGUgZGV0ZXJtaW5lZCByb2xlIGZvciB0aGUgZW50aXR5LgoKVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgaW50ZXJmYWNlIHRoYXQgUGhhbnVhIHVzZXMgYnkgZGVmYXVsdCBpcyBgRWxhemFyXFBoYW51YVxFbnRpdHlcUm9sZVJlc29sdmVyYC4gSXRzIGBnZXRSb2xlKClgIG1ldGhvZCByZXR1cm5zIHRoZSBPcGVuQVBJIGNvbXBvbmVudCBuYW1lIGl0IHJlY2VpdmVzIHNvIHRoYXQgdGhlIGNvbXBvbmVudCBuYW1lIGFuZCByb2xlIGFyZSB0aGUgc2FtZS4KClRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBhZGQgYW4gZW50cnkgdG8geW91ciBjb250YWluZXIgdXNpbmcgdGhlIGtleSBgRWxhemFyXFBoYW51YVxFbnRpdHlcUm9sZVJlc29sdmVySW50ZXJmYWNlYCBhbmQgaGF2ZSBpdCByZXNvbHZlIHRvIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UuCgojIyMgQ2xhc3MgUmVzb2x2ZXIKCkVudGl0aWVzIGluIEN5Y2xlIE9STSBzY2hlbWFzIGhhdmUgY29ycmVzcG9uZGluZyBbY2xhc3Nlc10oaHR0cHM6Ly9jeWNsZS1vcm0uZGV2L2RvY3MvYmFzaWMtY3J1ZCNjcmVhdGUtZW50aXR5KS4KClBoYW51YSBkZWZpbmVzIHRoZSBpbnRlcmZhY2UgYEVsYXphclxQaGFudWFcRW50aXR5XENsYXNzUmVzb2x2ZXJJbnRlcmZhY2VgIGZvciBjbGFzc2VzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBjbGFzcyBmb3IgYSBnaXZlbiBlbnRpdHkuCgpUaGlzIGludGVyZmFjZSBjb250YWlucyBhIHNpbmdsZSBtZXRob2QsIGBnZXRDbGFzcygpYCwgd2hpY2ggcmVjZWl2ZXMgYSBzaW5nbGUgcGFyYW1ldGVyOiBhIGBzdHJpbmdgIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIE9wZW5BUEkgY29tcG9uZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVudGl0eS4KCmBnZXRDbGFzcygpYCBtdXN0IHJldHVybiBhIGBzdHJpbmdgIGNvbnRhaW5pbmcgdGhlIFtmdWxseS1xdWFsaWZpZWQgbmFtZV0oaHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2UubmFtZXNwYWNlcy5ydWxlcy5waHApIG9mIHRoZSBjbGFzcyBmb3IgdGhlIGVudGl0eS4KClRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZSB0aGF0IFBoYW51YSB1c2VzIGJ5IGRlZmF1bHQgaXMgYEVsYXphclxQaGFudWFcRW50aXR5XENsYXNzUmVzb2x2ZXJgLiBJdHMgYGdldENsYXNzKClgIG1ldGhvZCByZXR1cm5zIGEgY2xhc3MgbmFtZSBjb25zdHJ1Y3RlZCB3aXRoIHRoZSBuYW1lc3BhY2UgdXNlZCBieSBKYW5lIGZyb20gdGhlIFBoYW51YSBzZXJ2aWNlIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBPcGVuQVBJIGNvbXBvbmVudCBuYW1lIGl0IHJlY2VpdmVzLgoKVG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIGFkZCBhbiBlbnRyeSB0byB5b3VyIGNvbnRhaW5lciB1c2luZyB0aGUga2V5IGBFbGF6YXJcUGhhbnVhXEVudGl0eVxDbGFzc1Jlc29sdmVySW50ZXJmYWNlYCBhbmQgaGF2ZSBpdCByZXNvbHZlIHRvIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UuCgojIyMgVGFibGUgUmVzb2x2ZXIKCkVhY2ggQ3ljbGUgT1JNIGVudGl0eSBoYXMgYSBjb3JyZXNwb25kaW5nIFt0YWJsZV0oaHR0cHM6Ly9jeWNsZS1vcm0uZGV2L2RvY3MvYWR2YW5jZWQtZGVjbGFyYXRpb24jdG8tc3RhcnQpLgoKUGhhbnVhIGRlZmluZXMgdGhlIGludGVyZmFjZSBgRWxhemFyXFBoYW51YVxFbnRpdHlcVGFibGVSZXNvbHZlckludGVyZmFjZWAgZm9yIGNsYXNzZXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHRhYmxlIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGVudGl0eS4KClRoaXMgaW50ZXJmYWNlIGNvbnRhaW5zIGEgc2luZ2xlIG1ldGhvZCwgYGdldFRhYmxlKClgLCB3aGljaCByZWNlaXZlcyB0aHJlZSBwYXJhbWV0ZXJzOgoKMS4gYSBgc3RyaW5nYCBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBPcGVuQVBJIGNvbXBvbmVudCBjb3JyZXNwb25kaW5nIHRvIHRoZSBlbnRpdHk7CjIuIGFuIGluc3RhbmNlIG9mIGBKYW5lXENvbXBvbmVudFxPcGVuQXBpM1xKc29uU2NoZW1hXE1vZGVsXFNjaGVtYWAgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQgc2NoZW1hOyBhbmQKMy4gYW4gaW5zdGFuY2Ugb2YgYEN5Y2xlXFNjaGVtYVxEZWZpbml0aW9uXEVudGl0eWAgcmVwcmVzZW50aW5nIHRoZSBlbnRpdHkuCgpgZ2V0VGFibGUoKWAgbXVzdCByZXR1cm4gYSBgc3RyaW5nYCBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSB0YWJsZSBmb3IgdGhlIGVudGl0eS4KClRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZSB0aGF0IFBoYW51YSB1c2VzIGJ5IGRlZmF1bHQgaXMgYEVsYXphclxQaGFudWFcRW50aXR5XFRhYmxlUmVzb2x2ZXJgLiBJdHMgYGdldFRhYmxlKClgIG1ldGhvZCByZXR1cm5zIHRoZSBlbnRpdHkgcm9sZSwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgaW5zdGFuY2Ugb2YgYEVsYXphclxQaGFudWFcRW50aXR5XFJvbGVSZXNvbHZlckludGVyZmFjZWAgaW4gdXNlLCBzbyB0aGF0IHRoZSByb2xlIGFuZCB0YWJsZSBuYW1lIGFyZSB0aGUgc2FtZS4gU2VlIHRoZSBbIlJvbGUgUmVzb2x2ZXIiXSgjcm9sZS1yZXNvbHZlcikgc2VjdGlvbiBhYm92ZSBmb3IgZnVydGhlciBkZXRhaWxzLgoKVG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIGFkZCBhbiBlbnRyeSB0byB5b3VyIGNvbnRhaW5lciB1c2luZyB0aGUga2V5IGBFbGF6YXJcUGhhbnVhXEVudGl0eVxUYWJsZVJlc29sdmVySW50ZXJmYWNlYCBhbmQgaGF2ZSBpdCByZXNvbHZlIHRvIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UuCgojIyMgTmFtZSBSZXNvbHZlcgoKRW50aXRpZXMgaW4gQ3ljbGUgT1JNIGNvbnRhaW4gW2ZpZWxkc10oaHR0cHM6Ly9jeWNsZS1vcm0uZGV2L2RvY3MvYWR2YW5jZWQtZHluYW1pYy1zY2hlbWEjdXNpbmctc2NoZW1hLWJ1aWxkZXIpIHRoYXQgaGF2ZSBuYW1lcy4KClBoYW51YSBkZWZpbmVzIHRoZSBpbnRlcmZhY2UgYEVsYXphclxQaGFudWFcRmllbGRcTmFtZVJlc29sdmVySW50ZXJmYWNlYCBmb3IgY2xhc3NlcyB1c2VkIHRvIGRldGVybWluZSB0aGUgbmFtZSBvZiBhIGZpZWxkLgoKVGhpcyBpbnRlcmZhY2UgY29udGFpbnMgYSBzaW5nbGUgbWV0aG9kLCBgZ2V0TmFtZSgpYCwgd2hpY2ggcmVjZWl2ZXMgdGhyZWUgcGFyYW1ldGVyczoKCjEuIGEgYHN0cmluZ2AgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgT3BlbkFQSSBjb21wb25lbnQgY29ycmVzcG9uZGluZyB0byB0aGUgZW50aXR5IGNvbnRhaW5pbmcgdGhlIGZpZWxkOwoyLiBhIGBzdHJpbmdgIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudCBwcm9wZXJ0eSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaWVsZDsgYW5kCjMuIGFuIGluc3RhbmNlIG9mIGBKYW5lXENvbXBvbmVudFxPcGVuQXBpM1xKc29uU2NoZW1hXE1vZGVsXFNjaGVtYWAgcmVwcmVzZW50aW5nIHRoZSBwcm9wZXJ0eSBzY2hlbWEuCgpgZ2V0TmFtZSgpYCBtdXN0IHJldHVybiBhIGBzdHJpbmdgIGNvbnRhaW5pbmcgdGhlIG5hbWUgdG8gYXNzaWduIHRvIHRoZSBmaWVsZC4KClRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZSB0aGF0IFBoYW51YSB1c2VzIGJ5IGRlZmF1bHQgaXMgYEVsYXphclxQaGFudWFcRmllbGRcTmFtZVJlc29sdmVyYC4gSXRzIGBnZXROYW1lKClgIG1ldGhvZCByZXR1cm5zIHRoZSBPcGVuQVBJIHByb3BlcnR5IG5hbWUgaXQgcmVjZWl2ZXMgc28gdGhhdCB0aGUgcHJvcGVydHkgbmFtZSBhbmQgZmllbGQgbmFtZSBhcmUgdGhlIHNhbWUuCgpUbyBvdmVycmlkZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgYWRkIGFuIGVudHJ5IHRvIHlvdXIgY29udGFpbmVyIHVzaW5nIHRoZSBrZXkgYEVsYXphclxQaGFudWFcRmllbGRcTmFtZVJlc29sdmVySW50ZXJmYWNlYCBhbmQgaGF2ZSBpdCByZXNvbHZlIHRvIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UuCgojIyMgQ29sdW1uIFJlc29sdmVyCgpDeWNsZSBPUk0gZW50aXR5IGZpZWxkcyBoYXZlIGNvcnJlc3BvbmRpbmcgdGFibGUgW2NvbHVtbnNdKGh0dHBzOi8vY3ljbGUtb3JtLmRldi9kb2NzL2FkdmFuY2VkLWRlY2xhcmF0aW9uI2NvbHVtbnMtYW5kLWFic3RyYWN0LXR5cGVzKS4KClBoYW51YSBkZWZpbmVzIHRoZSBpbnRlcmZhY2UgYEVsYXphclxQaGFudWFcRmllbGRcQ29sdW1uUmVzb2x2ZXJJbnRlcmZhY2VgIGZvciBjbGFzc2VzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBuYW1lIG9mIHRoZSBjb2x1bW4gZm9yIGEgZmllbGQuCgpUaGlzIGludGVyZmFjZSBjb250YWlucyBhIHNpbmdsZSBtZXRob2QsIGBnZXRDb2x1bW4oKWAsIHdoaWNoIHJlY2VpdmVzIHRocmVlIHBhcmFtZXRlcnM6CgoxLiBhIGBzdHJpbmdgIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIE9wZW5BUEkgY29tcG9uZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVudGl0eSBjb250YWluaW5nIHRoZSBmaWVsZDsKMi4gYSBgc3RyaW5nYCBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQgcHJvcGVydHkgY29ycmVzcG9uZGluZyB0byB0aGUgZmllbGQ7IGFuZAozLiBhbiBpbnN0YW5jZSBvZiBgSmFuZVxDb21wb25lbnRcT3BlbkFwaTNcSnNvblNjaGVtYVxNb2RlbFxTY2hlbWFgIHJlcHJlc2VudGluZyB0aGUgcHJvcGVydHkgc2NoZW1hLgoKYGdldENvbHVtbigpYCBtdXN0IHJldHVybiBhIGBzdHJpbmdgIGNvbnRhaW5pbmcgdGhlIG5hbWUgdG8gYXNzaWduIHRvIHRoZSBjb2x1bW4uCgpUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpbnRlcmZhY2UgdGhhdCBQaGFudWEgdXNlcyBieSBkZWZhdWx0IGlzIGBFbGF6YXJcUGhhbnVhXEZpZWxkXENvbHVtblJlc29sdmVyYC4gSXRzIGBnZXRDb2x1bW4oKWAgbWV0aG9kIHJldHVybnMgdGhlIE9wZW5BUEkgcHJvcGVydHkgbmFtZSBpdCByZWNlaXZlcyBzbyB0aGF0IHRoZSBwcm9wZXJ0eSBuYW1lIGFuZCBjb2x1bW4gbmFtZSBhcmUgdGhlIHNhbWUuCgpUbyBvdmVycmlkZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgYWRkIGFuIGVudHJ5IHRvIHlvdXIgY29udGFpbmVyIHVzaW5nIHRoZSBrZXkgYEVsYXphclxQaGFudWFcRmllbGRcQ29sdW1uUmVzb2x2ZXJJbnRlcmZhY2VgIGFuZCBoYXZlIGl0IHJlc29sdmUgdG8gYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIGludGVyZmFjZS4KCiMjIyBUeXBlIFJlc29sdmVyCgpFYWNoIEN5Y2xlIE9STSBlbnRpdHkgZmllbGQgaGFzIGEgY29ycmVzcG9uZGluZyBbYWJzdHJhY3QgdHlwZV0oaHR0cHM6Ly9jeWNsZS1vcm0uZGV2L2RvY3MvYWR2YW5jZWQtZGVjbGFyYXRpb24jY29sdW1ucy1hbmQtYWJzdHJhY3QtdHlwZXMtYWJzdHJhY3QtdHlwZXMpLgoKUGhhbnVhIGRlZmluZXMgdGhlIGludGVyZmFjZSBgRWxhemFyXFBoYW51YVxGaWVsZFxUeXBlUmVzb2x2ZXJJbnRlcmZhY2VgIGZvciBjbGFzc2VzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB0eXBlIGZvciBhIGZpZWxkLgoKVGhpcyBpbnRlcmZhY2UgY29udGFpbnMgYSBzaW5nbGUgbWV0aG9kLCBgZ2V0VHlwZSgpYCwgd2hpY2ggcmVjZWl2ZXMgdGhyZWUgcGFyYW1ldGVyczoKCjEuIGEgYHN0cmluZ2AgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgT3BlbkFQSSBjb21wb25lbnQgY29ycmVzcG9uZGluZyB0byB0aGUgZW50aXR5IGNvbnRhaW5pbmcgdGhlIGZpZWxkOwoyLiBhIGBzdHJpbmdgIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudCBwcm9wZXJ0eSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaWVsZDsgYW5kCjMuIGFuIGluc3RhbmNlIG9mIGBKYW5lXENvbXBvbmVudFxPcGVuQXBpM1xKc29uU2NoZW1hXE1vZGVsXFNjaGVtYWAgcmVwcmVzZW50aW5nIHRoZSBwcm9wZXJ0eSBzY2hlbWEuCgpgZ2V0VHlwZSgpYCBtYXkgcmV0dXJuIGEgYHN0cmluZ2AgY29udGFpbmluZyB0aGUgdHlwZSB0byBhc3NpZ24gdG8gdGhlIGNvbHVtbiBvciBgbnVsbGAgaWYgaXQncyB1bmFibGUgdG8gcmVzb2x2ZSB0aGUgY29sdW1uIHRvIGEgdHlwZS4KClRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZSB0aGF0IFBoYW51YSB1c2VzIGJ5IGRlZmF1bHQgaXMgYEVsYXphclxQaGFudWFcRmllbGRcVHlwZVJlc29sdmVyYC4gSXRzIGBnZXRUeXBlKClgIG1ldGhvZCByZXR1cm5zIGEgdHlwZSBpdCBkZXJpdmVzIGZyb20gdGhlIFtwcm9wZXJ0eSB0eXBlIGFuZCBmb3JtYXRdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykgYXMgd2VsbCBhcyBbdmFsaWRhdGlvbiBjb25zdHJhaW50c10oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI3NjaGVtYU9iamVjdCkgb24gdGhlIHByb3BlcnR5IHZhbHVlIChlLmcuIGBtaW5pbXVtYCwgYGV4Y2x1c2l2ZU1pbmltdW1gLCBgbWF4aW11bWAsIG9yIGBleGNsdXNpdmVNYXhpbXVtYCBmb3IgbnVtZXJpYyB2YWx1ZXMsIGBtaW5MZW5ndGhgIGFuZCBgbWF4TGVuZ3RoYCBmb3Igc3RyaW5nIC8gdGV4dCB2YWx1ZXMpLiBMYWNraW5nIHRoZXNlIGNvbnN0cmFpbnRzLCBgZ2V0VHlwZSgpYCByZXR1cm5zIHRoZSBsYXJnZXN0IGF2YWlsYWJsZSB0eXBlIHRvIGFsbG93IGZvciBtYXhpbWFsIHBvc3NpYmxlIHZhbHVlcy4KCioqTk9URTogVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBoYW5kbGUgbmVzdGVkIG9iamVjdHMsIGFycmF5cywgb3IgcmVmZXJlbmNlcyB0byBvdGhlciBjb21wb25lbnQgc2NoZW1hcy4gVGhpcyBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuKioKCkluIHRoZSBldmVudCBvZiBiZWluZyB1bmFibGUgdG8gcmVzb2x2ZSB0byBhIG1vcmUgc3BlY2lmaWMgdHlwZSwgYGdldFR5cGUoKWAgc3VwcG9ydHMgZmFsbGluZyBiYWNrIHRvIGEgc3BlY2lmaWVkIHR5cGUuIFRvIHJlZHVjZSBjb25maWd1cmF0aW9uIG5lZWRlZCBmb3IgY29tbW9uIHVzZSBjYXNlcywgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgZmFsbGJhY2sgdHlwZSBpcyBgJ3N0cmluZydgLgoKWW91IG1heSB3YW50IGNoYW5nZSB0aGlzIGZhbGxiYWNrIHR5cGUgaWYsIGZvciBleGFtcGxlLCB5b3Ugd2FudCB0byBjb21wb3NlIGBUeXBlUmVzb2x2ZXJgIHdpdGggeW91ciBvd24gcmVzb2x2ZXIgaW1wbGVtZW50YXRpb24gdG8gcmVzb2x2ZSB0eXBlcyB0aGF0IGBUeXBlUmVzb2x2ZXJgIGRvZXNuJ3QgY292ZXIuIEluIHRoYXQgY2FzZSwgeW91IHdvdWxkIHNldCB0aGUgZmFsbGJhY2sgdHlwZSB0byBgbnVsbGAgc28gdGhhdCB5b3VyIHJlc29sdmVyIGtub3dzIHdoZW4gYFR5cGVSZXNvbHZlcmAgY2FuJ3QgcmVzb2x2ZSBhIGdpdmVuIHR5cGUuIEJlbG93IGlzIGFuIGV4YW1wbGUgb2Ygb3ZlcnJpZGluZyB0aGUgZmFsbGJhY2sgdHlwZSB1c2luZyBhIFBpbXBsZSBjb250YWluZXIuCgpgYGBwaHAKPD9waHAKCnVzZSBFbGF6YXJcUGhhbnVhXEZpZWxkXFR5cGVSZXNvbHZlcjsKJGNvbnRhaW5lcltUeXBlUmVzb2x2ZXI6OmNsYXNzXSA9IG5ldyBUeXBlUmVzb2x2ZXIoCiAgICBudWxsIC8vIGZhbGxiYWNrIHZhbHVlIGdvZXMgaGVyZQopOwpgYGAKClRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHR5cGUgcmVzb2x2ZXIgaW1wbGVtZW50YXRpb24gd2l0aCB5b3VyIG93biwgYWRkIGFuIGVudHJ5IHRvIHlvdXIgY29udGFpbmVyIHVzaW5nIHRoZSBrZXkgYEVsYXphclxQaGFudWFcRmllbGRcVHlwZVJlc29sdmVySW50ZXJmYWNlYCBhbmQgaGF2ZSBpdCByZXNvbHZlIHRvIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UuCgpJZiB5b3Ugd2FudCB0byB1c2UgdGhlIGRlZmF1bHQgdHlwZSByZXNvbHZlciwgeW91ciBvd24gcmVzb2x2ZXIsIG9yIGFub3RoZXIgcmVzb2x2ZXIgdG9nZXRoZXIsIHlvdSBjYW4gY29tcG9zZSB0aGVtIHVzaW5nIGBFbGF6YXJcUGhhbnVhXEZpZWxkXENvbXBvc2l0ZUZpZWxkUmVzb2x2ZXJgLCB3aGljaCB3aWxsIHVzZSByZXNvbHZlcnMgaW4gdHVybiB1bnRpbCBvbmUgcmV0dXJucyBhIHR5cGUuCgpgYGBwaHAKPD9waHAKCnVzZSBFbGF6YXJcUGhhbnVhXEZpZWxkXENvbXBvc2l0ZVR5cGVSZXNvbHZlcjsKdXNlIEVsYXphclxQaGFudWFcRmllbGRcVHlwZVJlc29sdmVyOwp1c2UgRWxhemFyXFBoYW51YVxGaWVsZFxUeXBlUmVzb2x2ZXJJbnRlcmZhY2U7CnVzZSBNeVxDdXN0b21UeXBlUmVzb2x2ZXI7CgovLyBJZiB5b3Ugd2FudCB5b3VyIHJlc29sdmVyIHRvIGJlIHRyaWVkIGZpcnN0OgokY29udGFpbmVyW1R5cGVSZXNvbHZlckludGVyZmFjZTo6Y2xhc3NdID0gbmV3IENvbXBvc2l0ZVR5cGVSZXNvbHZlcigKICAgIG5ldyBDdXN0b21UeXBlUmVzb2x2ZXIoKSwKICAgIG5ldyBUeXBlUmVzb2x2ZXIoKSwKKTsKCi8vIElmIHlvdSB3YW50IHRoZSBkZWZhdWx0IHJlc29sdmVyIHRvIGJlIHRyaWVkIGZpcnN0OgokY29udGFpbmVyW1R5cGVSZXNvbHZlckludGVyZmFjZTo6Y2xhc3NdID0gbmV3IENvbXBvc2l0ZVR5cGVSZXNvbHZlcigKICAgIG5ldyBUeXBlUmVzb2x2ZXIoCiAgICAgICAgbnVsbCAvLyBSZXF1aXJlZCBmb3IgQ29tcG9zaXRlVHlwZVJlc29sdmVyIHRvIGZhbGwgYmFjayB0byB5b3VyIHJlc29sdmVyCiAgICApLAogICAgbmV3IEN1c3RvbVR5cGVSZXNvbHZlcigpLAopOwpgYGAKCiMjIyBQcmltYXJ5IFJlc29sdmVyCgpFYWNoIHRhYmxlIG11c3QgaGF2ZSBhIFtwcmltYXJ5IGluZGV4XShodHRwczovL2N5Y2xlLW9ybS5kZXYvZG9jcy9hZHZhbmNlZC1kZWNsYXJhdGlvbiNwcmltYXJ5LWluZGV4KSBvbiBvbmUgb3IgbW9yZSBjb2x1bW5zIGZvciBhIGNvbXBpbGVkIEN5Y2xlIE9STSBzY2hlbWEgdG8gaW5jbHVkZSBpdC4KClRoaXMgY2lyY3Vtc3RhbmNlIGlzIGEgbGltaXRhdGlvbiBvZiB0aGUgY29tcGlsZXIgdGhhdCBoYW5kbGVzIFtjb21waWxpbmcgZW50aXRpZXMgZnJvbSB0aGUgcmVnaXN0cnldKGh0dHBzOi8vY3ljbGUtb3JtLmRldi9kb2NzL2FkdmFuY2VkLXNjaGVtYS1idWlsZGVyI21hbnVhbGx5LWRlZmluZS1lbnRpdHkpIGludG8gYSBzY2hlbWE6IGl0IFtza2lwcyBlbnRpdGllcyB3aXRob3V0IGEgcHJpbWFyeSBpbmRleF0oaHR0cHM6Ly9naXRodWIuY29tL2N5Y2xlL3NjaGVtYS1idWlsZGVyL2Jsb2IvdjEuMi4wL3NyYy9Db21waWxlci5waHAjTDY4KS4KClRvIGRyYXcgYXR0ZW50aW9uIHRvIHRoaXMgYmVoYXZpb3IsIFBoYW51YSB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIHByaW1hcnkgaW5kZXggcmVzb2x1dGlvbiBmYWlscyBmb3IgYSBnaXZlbiBlbnRpdHkuIFRvIGF2b2lkIHRoaXMsIHlvdSBtdXN0IGV4cGxpY2l0bHkgZXhjbHVkZSBhbnkgZW50aXRpZXMgaW4geW91ciBPcGVuQVBJIHNwZWNpZmljYXRpb24gdGhhdCB5b3UgZG8gbm90IHdhbnQgdG8gaW5jbHVkZSBpbiB0aGUgZ2VuZXJhdGVkIEN5Y2xlIE9STSBzY2hlbWEuIFRoZSBbbmV4dCBzZWN0aW9uXSgjZW50aXR5LXJlc29sdmVyKSBkaXNjdXNzZXMgdGhpcyBmdXJ0aGVyLgoKUGhhbnVhIGRlZmluZXMgdGhlIGludGVyZmFjZSBgRWxhemFyXFBoYW51YVxGaWVsZFxQcmltYXJ5UmVzb2x2ZXJJbnRlcmZhY2VgIGZvciBjbGFzc2VzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiBmaWVsZCBzaG91bGQgYmUgcGFydCBvZiB0aGUgcHJpbWFyeSBpbmRleCBvZiB0aGUgdGFibGUgY29udGFpbmluZyBpdHMgcmVzcGVjdGl2ZSBjb2x1bW4uCgpUaGlzIGludGVyZmFjZSBjb250YWlucyBhIHNpbmdsZSBtZXRob2QsIGBpc1ByaW1hcnkoKWAsIHdoaWNoIHJlY2VpdmVzIHRocmVlIHBhcmFtZXRlcnM6CgoxLiBhIGBzdHJpbmdgIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIE9wZW5BUEkgY29tcG9uZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVudGl0eSBjb250YWluaW5nIHRoZSBmaWVsZDsKMi4gYSBgc3RyaW5nYCBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQgcHJvcGVydHkgY29ycmVzcG9uZGluZyB0byB0aGUgZmllbGQ7IGFuZAozLiBhbiBpbnN0YW5jZSBvZiBgSmFuZVxDb21wb25lbnRcT3BlbkFwaTNcSnNvblNjaGVtYVxNb2RlbFxTY2hlbWFgIHJlcHJlc2VudGluZyB0aGUgcHJvcGVydHkgc2NoZW1hLgoKYGlzUHJpbWFyeSgpYCBtdXN0IHJldHVybiBhIGBib29sZWFuYCB2YWx1ZSB3aGVyZSBhIHZhbHVlIG9mIGB0cnVlYCBpbmRpY2F0ZXMgdGhhdCB0aGUgZ2l2ZW4gZmllbGQgaXMgcGFydCBvZiB0aGUgcHJpbWFyeSBpbmRleCBmb3IgdGhlIGFzc29jaWF0ZWQgdGFibGUgYW5kIGEgdmFsdWUgb2YgYGZhbHNlYCBpbmRpY2F0ZXMgdGhhdCBpdCdzIG5vdC4KClRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZSB0aGF0IFBoYW51YSB1c2VzIGJ5IGRlZmF1bHQgaXMgYEVsYXphclxQaGFudWFcRmllbGRcUHJpbWFyeVJlc29sdmVyYC4gSXRzIGBpc1ByaW1hcnkoKWAgbWV0aG9kIHJldHVybnMgYHRydWVgIGlmIHRoZSBnaXZlbiBwcm9wZXJ0eSBuYW1lIGlzIGBpZGAgb3IgYGZhbHNlYCBvdGhlcndpc2UuIFRoaXMgY2xhc3MgYXNzdW1lcyB0aGF0IHRoZSBwcm9wZXJ0eSBhbmQgY29sdW1uIG5hbWVzIGFyZSB0aGUgc2FtZSwgd2hpY2ggaXMgdGhlIGNhc2Ugd2hlbiB1c2luZyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBgRWxhemFyXFBoYW51YVxGaWVsZFxDb2x1bW5SZXNvbHZlckludGVyZmFjZWAgZGV0YWlsZWQgaW4gdGhlIFsiQ29sdW1uIFJlc29sdmVyIl0oI2NvbHVtbi1yZXNvbHZlcikgc2VjdGlvbiBhYm92ZS4KCklmIHlvdXIgcHJvcGVydHkgYW5kIGNvbHVtbiBuYW1lcyBhcmUgbm90IGNvbnNpc3RlbnQgd2l0aCBlYWNoIG90aGVyLCBvciBpZiBhbnkgb2YgeW91ciB0YWJsZXMgaGF2ZSBhIHByaW1hcnkgaW5kZXggdGhhdCBpbmNsdWRlcyBtb3JlIHRoYW4gb25lIGNvbHVtbiwgY3JlYXRlIHlvdXIgb3duIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgaW50ZXJmYWNlIHRvIHN1aXQgdGhlIG5lZWRzIG9mIHlvdXIgZGF0YWJhc2UuCgpUbyBvdmVycmlkZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgYWRkIGFuIGVudHJ5IHRvIHlvdXIgY29udGFpbmVyIHVzaW5nIHRoZSBrZXkgYEVsYXphclxQaGFudWFcRmllbGRcUHJpbWFyeVJlc29sdmVySW50ZXJmYWNlYCBhbmQgaGF2ZSBpdCByZXNvbHZlIHRvIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UuCgojIyMgRW50aXR5IFJlc29sdmVyCgpQaGFudWEgcmVwcmVzZW50cyB0aGUgcHJvY2VzcyBvZiBjb252ZXJ0aW5nIGFuIE9wZW5BUEkgY29tcG9uZW50IHRvIGEgQ3ljbGUgT1JNIGVudGl0eSB3aXRoIHRoZSBpbnRlcmZhY2UgYEVsYXphclxQaGFudWFcRW50aXR5XEVudGl0eVJlc29sdmVySW50ZXJmYWNlYC4KClRoaXMgaW50ZXJmYWNlIGNvbnRhaW5zIGEgc2luZ2xlIG1ldGhvZCwgYGdldEVudGl0eSgpYCwgd2hpY2ggcmVjZWl2ZXMgdHdvIHBhcmFtZXRlcnM6CgoxLiBhIGBzdHJpbmdgIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIE9wZW5BUEkgY29tcG9uZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVudGl0eTsgYW5kCjIuIGFuIGluc3RhbmNlIG9mIGBKYW5lXENvbXBvbmVudFxPcGVuQXBpM1xKc29uU2NoZW1hXE1vZGVsXFNjaGVtYWAgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQgc2NoZW1hLgoKYGdldEVudGl0eSgpYCBtdXN0IHJldHVybiBhIHBvcHVsYXRlZCBpbnN0YW5jZSBvZiBgQ3ljbGVcU2NoZW1hXERlZmluaXRpb25cRW50aXR5YCByZXByZXNlbnRpbmcgdGhlIGVudGl0eSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBjb21wb25lbnQgb3IgYG51bGxgIGlmIGl0IGZhaWxzIHRvIHJlc29sdmUgdGhlIGNvbXBvbmVudCB0byBhbiBlbnRpdHkuCgpUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpbnRlcmZhY2UgdGhhdCBQaGFudWEgdXNlcyBieSBkZWZhdWx0IGlzIGBFbGF6YXJcUGhhbnVhXEVudGl0eVxFbnRpdHlSZXNvbHZlcmAuIEl0IGNvbXBvc2VzIGFuIGltcGxlbWVudGF0aW9uIG9mIGVhY2ggb2YgYEVsYXphclxQaGFudWFcRW50aXR5XFJvbGVSZXNvbHZlckludGVyZmFjZWAgYW5kIGBFbGF6YXJcUGhhbnVhXEVudGl0eVxDbGFzc1Jlc29sdmVySW50ZXJmYWNlYCwgd2hpY2ggaXQgdXNlcyB0byBkZXRlcm1pbmUgdGhlIGVudGl0eSBbcm9sZV0oI3JvbGUtcmVzb2x2ZXIpIGFuZCBbY2xhc3NdKCNjbGFzcy1yZXNvbHZlcikgcmVzcGVjdGl2ZWx5LgoKSXQgYWxzbyBwcm92aWRlcyBmb3IgdGhlIGV4Y2x1c2lvbiBvZiBzcGVjaWZpYyBjb21wb25lbnRzIGZyb20gaGF2aW5nIGFuIGVudGl0eSBpbiB0aGUgZ2VuZXJhdGVkIHNjaGVtYSwgc3VjaCBhcyB0aG9zZSBjb21wb25lbnRzIHdoZXJlIHRoZSBjb3JyZXNwb25kaW5nIGVudGl0eSB3b3VsZCBub3QgaGF2ZSBhIFtwcmltYXJ5IGluZGV4XSgjcHJpbWFyeS1yZXNvbHZlcikuIFRoZSBlYXNpZXN0IHdheSB0byBleGNsdWRlIG9uZSBvciBtb3JlIGNvbXBvbmVudHMgaXMgYnkgdXNpbmcgdGhlIHNlcnZpY2UgcHJvdmlkZXI6IGJ5IGRlZmF1bHQsIGl0IGhhbmRsZXMgaW5qZWN0aW5nIGEgY2FsbGJhY2sgdG8gZmlsdGVyIGNvbXBvbmVudHMgaW50byBgRW50aXR5UmVzb2x2ZXJgLgoKYGBgcGhwCjw/cGhwCgp1c2UgSmFuZVxDb21wb25lbnRcT3BlbkFwaTNcSnNvblNjaGVtYVxNb2RlbFxTY2hlbWE7CgokY29tcG9uZW50RmlsdGVyID0gZm4gKAogICAgc3RyaW5nICRjb21wb25lbnROYW1lLAogICAgU2NoZW1hICRjb21wb25lbnRTY2hlbWEKKTogYm9vbCA9PgogICAgIWluX2FycmF5KCRjb21wb25lbnROYW1lLCBbCiAgICAgICAgLy8gVGhlc2UgY29tcG9uZW50cyBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgc2NoZW1hCiAgICAgICAgJ2NvbXBvbmVudDEnLAogICAgICAgICdjb21wb25lbnQyJywKICAgICAgICAvLyAuLi4KICAgIF0pOwoKJHByb3ZpZGVyID0gKG5ldyBcRWxhemFyXFBoYW51YVxTZXJ2aWNlXFByb3ZpZGVyKQogICAgLT53aXRoQ29tcG9uZW50RmlsdGVyKCRjb21wb25lbnRGaWx0ZXIpOwpgYGAKCllvdSBjYW4gYWxzbyBleGNsdWRlIGNvbXBvbmVudHMgYnkgW292ZXJyaWRpbmddKCNvdmVycmlkaW5nLWRlcGVuZGVuY2llcykgdGhlIGBFbnRpdHlSZXNvbHZlcmAgaW5zdGFuY2UgdXNlZCBieSBkZWZhdWx0IHdpdGggb25lIHRoYXQgaW5jbHVkZXMgYSBjYWxsYmFjayB0byBmaWx0ZXIgZW50aXRpZXMgaW4gdGhlIGAkZmlsdGVyQ2FsbGJhY2tgIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBvZiBgRW50aXR5UmVzb2x2ZXJgIG9yIGRvZXMgc29tZXRoaW5nIHNpbWlsYXIgZm9yIHlvdXIgb3duIGVudGl0eSByZXNvbHZlciBpbXBsZW1lbnRhdGlvbi4gVGhlIGV4YW1wbGUgYmVsb3cgZG9lcyB0aGlzIHVzaW5nIGEgUGltcGxlIGNvbnRhaW5lci4KCmBgYHBocAo8P3BocAoKdXNlIEVsYXphclxQaGFudWFcewogICAgRW50aXR5XENsYXNzUmVzb2x2ZXJJbnRlcmZhY2UsCiAgICBFbnRpdHlcRW50aXR5UmVzb2x2ZXIsCiAgICBFbnRpdHlcRW50aXR5UmVzb2x2ZXJJbnRlcmZhY2UsCiAgICBFbnRpdHlcUm9sZVJlc29sdmVySW50ZXJmYWNlLAogICAgU2VydmljZVxQcm92aWRlcgp9Owp1c2UgSmFuZVxDb21wb25lbnRcT3BlbkFwaTNcSnNvblNjaGVtYVxNb2RlbFxTY2hlbWE7CgokcHJvdmlkZXIgPSBuZXcgUHJvdmlkZXI7CgovKioKICogMS4gR2V0IGEgY29udGFpbmVyIGZyb20gdGhlIFBoYW51YSBzZXJ2aWNlIHByb3ZpZGVyIHRvIG92ZXJyaWRlIHNvbWUgb2YgdGhlCiAqICAgIGRlZmF1bHQgZGVwZW5kZW5jaWVzIGl0IGRlZmluZXMuCiAqLwoKLy8gUGltcGxlCiRwaGFudWFDb250YWluZXIgPSAkcHJvdmlkZXItPmdldENvbnRhaW5lcigpOwoKLy8gUFNSLTExCiRwaGFudWFDb250YWluZXIgPSAkcHJvdmlkZXItPmdldFBzckNvbnRhaW5lcigpOwoKLyoqCiAqIDIuIEluIHlvdXIgb3duIGNvbnRhaW5lciwgdXNlIHRoZSBrZXkgRW50aXR5UmVzb2x2ZXJJbnRlcmZhY2U6OmNsYXNzIGFuZAogKiAgICBhc3NpZ24gaXQgYW4gaW5zdGFuY2Ugb2YgRW50aXR5UmVzb2x2ZXIgb3IgeW91ciBvd24gZW50aXR5IHJlc29sdmVyCiAqICAgIGltcGxlbWVudGF0aW9uLCBpbmplY3RpbmcgYW55IGRlZmF1bHQgUGhhbnVhIGRlcGVuZGVuY2llcyB0aGF0IHlvdSBuZWVkLgogKiAgICBCZWxvdyBpcyBhbiBleGFtcGxlIG9mIGRvaW5nIHRoaXMgdXNpbmcgUGltcGxlIGNvbnRhaW5lcnMuCiAqLwoKJHlvdXJDb250YWluZXIgPSBuZXcgXFBpbXBsZVxDb250YWluZXI7CiR5b3VyQ29udGFpbmVyW0VudGl0eVJlc29sdmVySW50ZXJmYWNlOjpjbGFzc10gPSBmbigpID0+IG5ldyBFbnRpdHlSZXNvbHZlcigKICAgICRwaGFudWFDb250YWluZXJbUm9sZVJlc29sdmVySW50ZXJmYWNlOjpjbGFzc10sCiAgICAkcGhhbnVhQ29udGFpbmVyW0NsYXNzUmVzb2x2ZXJJbnRlcmZhY2U6OmNsYXNzXSwKICAgIGZ1bmN0aW9uICgKICAgICAgICBzdHJpbmcgJGNvbXBvbmVudE5hbWUsCiAgICAgICAgc3RyaW5nICRwcm9wZXJ0eU5hbWUsCiAgICAgICAgU2NoZW1hICRwcm9wZXJ0eVNjaGVtYQogICAgKTogYm9vbCB7CiAgICAgICAgLyogcmV0dXJuIFRSVUUgdG8gaW5jbHVkZSBvciBGQUxTRSB0byBleGNsdWRlIGNvbXBvbmVudCAqLwogICAgfQopOwoKLyoqCiAqIDMuIFNldCB5b3VyIGNvbnRhaW5lciBhcyB0aGUgZGVsZWdhdGUgY29udGFpbmVyIGluIHRoZSBQaGFudWEgc2VydmljZQogKiAgICBwcm92aWRlci4KICovCgokcHJvdmlkZXIgPSAkcHJvdmlkZXItPndpdGhEZWxlZ2F0ZUNvbnRhaW5lcigkeW91ckNvbnRhaW5lcik7CgovKioKICogNC4gR2V0IHRoZSBzY2hlbWEgYnVpbGRlciBhcyBub3JtYWwuIEl0IHdpbGwgdXNlIHRoZSBjdXN0b20gZGVwZW5kZW5jaWVzCiAqICAgIHlvdSd2ZSBkZWZpbmVkLgogKi8KCiRzY2hlbWFCdWlsZGVyID0gJHByb3ZpZGVyLT5nZXRTY2hlbWFCdWlsZGVyKCk7CmBgYAoKSXQncyBlbnRpcmVseSBvcHRpb25hbCB0byBoYXZlIHlvdXIgZW50aXR5IHJlc29sdmVyIHVzZSBvdGhlciBQaGFudWEgZGVwZW5kZW5jaWVzLCBhcyB0aGUgZGVmYXVsdCBQaGFudWEgaW1wbGVtZW50YXRpb24gZG9lczsgeW91ciBlbnRpdHkgcmVzb2x2ZXIgY2FuIGZ1bmN0aW9uIGluIHdoYXRldmVyIHdheSB5b3UgbGlrZS4KCkFub3RoZXIgYXBwcm9hY2ggdG8gY29uc2lkZXIgaXMgaGF2aW5nIHlvdXIgZW50aXR5IHJlc29sdmVyIGltcGxlbWVudGF0aW9uIGNvbXBvc2UgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gdGhhdCBQaGFudWEgdXNlcy4gQnkgZG9pbmcgc28sIHlvdSBjYW4gdXNlIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBlbnRpdGllcyB0aGF0IGFyZSBjb21wYXRpYmxlIHdpdGggaXQgYW5kIHlvdXIgb3duIGltcGxlbWVudGF0aW9uIGZvciB0aG9zZSB0aGF0IGFyZSBub3QuIFNlZSB0aGUgZXhhbXBsZSBvZiB0aGlzIGJlbG93LgoKYGBgcGhwCjw/cGhwCgovKioKICogMS4gRGVmaW5lIHlvdXIgZW50aXR5IHJlc29sdmVyIGltcGxlbWVudGF0aW9uLgogKi8KCnVzZSBDeWNsZVxTY2hlbWFcRGVmaW5pdGlvblxFbnRpdHk7CnVzZSBFbGF6YXJcUGhhbnVhXEVudGl0eVxFbnRpdHlSZXNvbHZlckludGVyZmFjZTsKdXNlIEphbmVcQ29tcG9uZW50XE9wZW5BcGkzXEpzb25TY2hlbWFcTW9kZWxcU2NoZW1hOwoKY2xhc3MgWW91ckVudGl0eVJlc29sdmVyIGltcGxlbWVudHMgRW50aXR5UmVzb2x2ZXJJbnRlcmZhY2UKewogICAgcHJpdmF0ZSBFbnRpdHlSZXNvbHZlckludGVyZmFjZSAkZW50aXR5UmVzb2x2ZXI7CgogICAgLy8gSGF2ZSB0aGUgY29uc3RydWN0b3IgYWNjZXB0IGFub3RoZXIgcmVzb2x2ZXIgaW1wbGVtZW50YXRpb24gYXMgYQogICAgLy8gcGFyYW1ldGVyLgoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBFbnRpdHlSZXNvbHZlckludGVyZmFjZSAkZW50aXR5UmVzb2x2ZXIsCiAgICAgICAgLyogLi4uICovCiAgICApIHsKICAgICAgICAkdGhpcy0+ZW50aXR5UmVzb2x2ZXIgPSAkZW50aXR5UmVzb2x2ZXI7CiAgICAgICAgLyogLi4uICovCiAgICB9CgogICAgLy8gVGhlbiwgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2UgbWV0aG9kLi4uCgogICAgcHVibGljIGZ1bmN0aW9uIGdldEVudGl0eSgKICAgICAgICBzdHJpbmcgJGNvbXBvbmVudE5hbWUsCiAgICAgICAgU2NoZW1hICRjb21wb25lbnRTY2hlbWEKICAgICk6ID9FbnRpdHkKICAgIHsKICAgICAgICAvLyAkZW50aXR5ID0gLi4uCgogICAgICAgIC8vIC4uLiBpZiB5b3VyIGltcGxlbWVudGF0aW9uIGNhbid0IHJlc29sdmUgYW4gZW50aXR5Li4uCiAgICAgICAgaWYgKCRlbnRpdHkgPT09IG51bGwpIHsKCiAgICAgICAgICAgIC8vIC4uLiB0aGVuIGhhdmUgaXQgZGVmZXIgdG8gdGhlIGluamVjdGVkIHJlc29sdmVyLgogICAgICAgICAgICAkZW50aXR5ID0gJHRoaXMtPmVudGl0eVJlc29sdmVyLT5nZXRFbnRpdHkoCiAgICAgICAgICAgICAgICAkY29tcG9uZW50TmFtZSwKICAgICAgICAgICAgICAgICRjb21wb25lbnRTY2hlbWEKICAgICAgICAgICAgKTsKCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGVudGl0eTsKICAgIH0KfQoKLyoqCiAqIDIuIEluamVjdCB5b3VyIGltcGxlbWVudGF0aW9uIHRvIGhhdmUgUGhhbnVhIHVzZSBpdC4KICovCgovLyBHZXQgdGhlIFBoYW51YSBjb250YWluZXIgYW5kIGNvbmZpZ3VyZSB5b3VyIGNvbnRhaW5lciBhcyBub3JtYWwuLi4KJHBoYW51YUNvbnRhaW5lciA9ICRwcm92aWRlci0+Z2V0Q29udGFpbmVyKCk7CiR5b3VyQ29udGFpbmVyID0gbmV3IFxQaW1wbGVcQ29udGFpbmVyOwokeW91ckNvbnRhaW5lcltFbnRpdHlSZXNvbHZlckludGVyZmFjZTo6Y2xhc3NdID0gZm4oKSA9PiBuZXcgWW91ckVudGl0eVJlc29sdmVyKAoKICAgIC8vIC4uLiB0aGVuIGluamVjdCB0aGUgZW50aXR5IHJlc29sdmVyIGltcGxlbWVudGF0aW9uIGZyb20gdGhlIFBoYW51YQogICAgLy8gY29udGFpbmVyIGludG8geW91ciBvd24gaW1wbGVtZW50YXRpb24uCiAgICAkcGhhbnVhQ29udGFpbmVyW0VudGl0eVJlc29sdmVySW50ZXJmYWNlOjpjbGFzc10KCik7CmBgYAoKIyMjIEZpZWxkIFJlc29sdmVyCgpQaGFudWEgaW5jbHVkZXMgYSByZXNvbHZlciBmb3IgZmllbGRzIGFzIGl0IGRvZXMgZm9yIGVudGl0aWVzLCByZXByZXNlbnRlZCBieSB0aGUgYEVsYXphclxQaGFudWFcRmllbGRcRmllbGRSZXNvbHZlckludGVyZmFjZWAuCgpUaGlzIGludGVyZmFjZSBjb250YWlucyBhIHNpbmdsZSBtZXRob2QsIGBnZXRGaWVsZCgpYCwgd2hpY2ggcmVjZWl2ZXMgdGhyZWUgcGFyYW1ldGVyczoKCjEuIGEgYHN0cmluZ2AgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgT3BlbkFQSSBjb21wb25lbnQgY29ycmVzcG9uZGluZyB0byB0aGUgZW50aXR5IGNvbnRhaW5pbmcgdGhlIGZpZWxkOwoyLiBhIGBzdHJpbmdgIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudCBwcm9wZXJ0eSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaWVsZDsgYW5kCjMuIGFuIGluc3RhbmNlIG9mIGBKYW5lXENvbXBvbmVudFxPcGVuQXBpM1xKc29uU2NoZW1hXE1vZGVsXFNjaGVtYWAgcmVwcmVzZW50aW5nIHRoZSBwcm9wZXJ0eSBzY2hlbWEuCgpgZ2V0RmllbGQoKWAgbXVzdCByZXR1cm4gYSBwb3B1bGF0ZWQgaW5zdGFuY2Ugb2YgYEN5Y2xlXFNjaGVtYVxEZWZpbml0aW9uXEZpZWxkYCByZXByZXNlbnRpbmcgdGhlIGZpZWxkIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIHByb3BlcnR5IG9yIGBudWxsYCBpZiBpdCBmYWlscyB0byByZXNvbHZlIHRoZSBjb21wb25lbnQgdG8gYSBmaWVsZC4KClRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZSB0aGF0IFBoYW51YSB1c2VzIGJ5IGRlZmF1bHQgaXMgYEVsYXphclxQaGFudWFcRmllbGRcRmllbGRSZXNvbHZlcmAuIEl0IGNvbXBvc2VzIGFuIGltcGxlbWVudGF0aW9uIG9mIGVhY2ggb2YgYEVsYXphclxQaGFudWFcRmllbGRcQ29sdW1uUmVzb2x2ZXJJbnRlcmZhY2VgLCBgRWxhemFyXFBoYW51YVxGaWVsZFxUeXBlUmVzb2x2ZXJJbnRlcmZhY2VgLCBhbmQgYEVsYXphclxQaGFudWFcRmllbGRcUHJpbWFyeVJlc29sdmVySW50ZXJmYWNlYCwgd2hpY2ggaXQgdXNlcyB0byBkZXRlcm1pbmUgdGhlIGZpZWxkIFtjb2x1bW5dKCNjb2x1bW4tcmVzb2x2ZXIpLCBbdHlwZV0oI3R5cGUtcmVzb2x2ZXIpLCBhbmQgcHJlc2VuY2UgaW4gdGhlIFtwcmltYXJ5IGluZGV4XSgjcHJpbWFyeS1yZXNvbHZlcikgcmVzcGVjdGl2ZWx5LgoKSXQgYWxzbyBoYW5kbGVzIHNldHRpbmcgb3RoZXIgb3B0aW9ucyBmb3IgdGhlIGZpZWxkLCBzdWNoIGFzIGl0cyBkZWZhdWx0IHZhbHVlIGFuZCB3aGV0aGVyIGl0J3MgbnVsbGFibGUgYmFzZWQgb24gY29ycmVzcG9uZGluZyBbYGRlZmF1bHRgXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jcHJvcGVydGllcykgYW5kIFtgbnVsbGFibGVgXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8jZml4ZWQtZmllbGRzLTIwKSB2YWx1ZXMgZnJvbSB0aGUgZ2l2ZW4gcHJvcGVydHkgc2NoZW1hLgoKYEZpZWxkUmVzb2x2ZXJgIGFsc28gcHJvdmlkZXMgZm9yIHRoZSBleGNsdXNpb24gb2Ygc3BlY2lmaWMgcHJvcGVydGllcyBmcm9tIGhhdmluZyBhIGZpZWxkIGluIHRoZSBnZW5lcmF0ZWQgc2NoZW1hLiBUaGUgZWFzaWVzdCB3YXkgdG8gZXhjbHVkZSBvbmUgb3IgbW9yZSBwcm9wZXJ0aWVzIGlzIGJ5IHVzaW5nIHRoZSBzZXJ2aWNlIHByb3ZpZGVyOiBieSBkZWZhdWx0LCBpdCBoYW5kbGVzIGluamVjdGluZyBhIGNhbGxiYWNrIHRvIGZpbHRlIHByb3BlcnRpZXMgaW50byBgRmllbGRSZXNvbHZlcmAuCgpgYGBwaHAKPD9waHAKCnVzZSBKYW5lXENvbXBvbmVudFxPcGVuQXBpM1xKc29uU2NoZW1hXE1vZGVsXFNjaGVtYTsKCiRwcm9wZXJ0eUZpbHRlciA9IGZuICgKICAgIHN0cmluZyAkY29tcG9uZW50TmFtZSwKICAgIHN0cmluZyAkcHJvcGVydHlOYW1lLAogICAgU2NoZW1hICRwcm9wZXJ0eVNjaGVtYQopOiBib29sID0+CiAgICAvLyBFeGNsdWRlIGFsbCBwcm9wZXJ0aWVzIHdpdGggdGhpcyBuYW1lCiAgICAkcHJvcGVydHkgIT09ICdwcm9wZXJ0eU5hbWUnCgogICAgLy8gRXhjbHVkZSB0aGUgcHJvcGVydHkgb25seSBpbiB0aGUgc3BlY2lmaWVkIGNvbXBvbmVudAogICAgJiYgIiRjb21wb25lbnQuJHByb3BlcnR5IiAhPT0gJ2NvbXBvbmVudE5hbWUucHJvcGVydHlOYW1lJzsKCiRwcm92aWRlciA9IChuZXcgXEVsYXphclxQaGFudWFcU2VydmljZVxQcm92aWRlcikKICAgIC0+d2l0aFByb3BlcnR5RmlsdGVyKCRwcm9wZXJ0eUZpbHRlcik7CmBgYAoKWW91IGNhbiBhbHNvIGV4Y2x1ZGUgcHJvcGVydGllcyBieSBbb3ZlcnJpZGluZ10oI292ZXJyaWRpbmctZGVwZW5kZW5jaWVzKSB0aGUgYEZpZWxkUmVzb2x2ZXJgIGluc3RhbmNlIHVzZWQgYnkgZGVmYXVsdCB3aXRoIG9uZSB0aGF0IGluY2x1ZGVzIGEgY2FsbGJhY2sgdG8gZmlsdGVyIHByb3BlcnRpZXMgaW4gdGhlIGAkZmlsdGVyQ2FsbGJhY2tgIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBvZiBgRmllbGRSZXNvbHZlcmAuIFRoZSBleGFtcGxlIGJlbG93IGRvZXMgdGhpcyB1c2luZyBhIFBpbXBsZSBjb250YWluZXIuCgpgYGBwaHAKPD9waHAKCnVzZSBFbGF6YXJcUGhhbnVhXHsKICAgIEZpZWxkXENvbHVtblJlc29sdmVySW50ZXJmYWNlLAogICAgRmllbGRcRmllbGRSZXNvbHZlciwKICAgIEZpZWxkXEZpZWxkUmVzb2x2ZXJJbnRlcmZhY2UsCiAgICBGaWVsZFxQcmltYXJ5UmVzb2x2ZXJJbnRlcmZhY2UsCiAgICBGaWVsZFxUeXBlUmVzb2x2ZXJJbnRlcmZhY2UsCiAgICBTZXJ2aWNlXFByb3ZpZGVyCn07CnVzZSBKYW5lXENvbXBvbmVudFxPcGVuQXBpM1xKc29uU2NoZW1hXE1vZGVsXFNjaGVtYTsKCiRwcm92aWRlciA9IG5ldyBQcm92aWRlcjsKCi8qKgogKiAxLiBHZXQgYSBjb250YWluZXIgZnJvbSB0aGUgUGhhbnVhIHNlcnZpY2UgcHJvdmlkZXIgdG8gb3ZlcnJpZGUgc29tZSBvZiB0aGUKICogICAgZGVmYXVsdCBkZXBlbmRlbmNpZXMgaXQgZGVmaW5lcy4KICovCgovLyBQaW1wbGUKJHBoYW51YUNvbnRhaW5lciA9ICRwcm92aWRlci0+Z2V0Q29udGFpbmVyKCk7CgovLyBQU1ItMTEKJHBoYW51YUNvbnRhaW5lciA9ICRwcm92aWRlci0+Z2V0UHNyQ29udGFpbmVyKCk7CgovKioKICogMi4gSW4geW91ciBvd24gY29udGFpbmVyLCB1c2UgdGhlIGtleSBGaWVsZFJlc29sdmVySW50ZXJmYWNlOjpjbGFzcyBhbmQKICogICAgYXNzaWduIGl0IGFuIGluc3RhbmNlIG9mIHlvdXIgZW50aXR5IHJlc29sdmVyIGltcGxlbWVudGF0aW9uLCBpbmplY3RpbmcKICogICAgYW55IGRlZmF1bHQgUGhhbnVhIGRlcGVuZGVuY2llcyB0aGF0IHlvdSBuZWVkLiBCZWxvdyBpcyBhbiBleGFtcGxlIG9mCiAqICAgIGRvaW5nIHRoaXMgdXNpbmcgUGltcGxlIGNvbnRhaW5lcnMuCiAqLwoKJHlvdXJDb250YWluZXIgPSBuZXcgXFBpbXBsZVxDb250YWluZXI7CiR5b3VyQ29udGFpbmVyW0ZpZWxkUmVzb2x2ZXJJbnRlcmZhY2U6OmNsYXNzXSA9IGZuKCkgPT4gbmV3IEZpZWxkUmVzb2x2ZXIoCiAgICAkcGhhbnVhQ29udGFpbmVyW0NvbHVtblJlc29sdmVySW50ZXJmYWNlOjpjbGFzc10sCiAgICAkcGhhbnVhQ29udGFpbmVyW1ByaW1hcnlSZXNvbHZlckludGVyZmFjZTo6Y2xhc3NdLAogICAgJHBoYW51YUNvbnRhaW5lcltUeXBlUmVzb2x2ZXJJbnRlcmZhY2U6OmNsYXNzXSwKICAgIGZ1bmN0aW9uICgKICAgICAgICBzdHJpbmcgJGNvbXBvbmVudE5hbWUsCiAgICAgICAgc3RyaW5nICRwcm9wZXJ0eU5hbWUsCiAgICAgICAgU2NoZW1hICRwcm9wZXJ0eVNjaGVtYQogICAgKTogYm9vbCB7CiAgICAgICAgLyogcmV0dXJuIFRSVUUgdG8gaW5jbHVkZSBvciBGQUxTRSB0byBleGNsdWRlIHByb3BlcnR5ICovCiAgICB9Cik7CgovKioKICogMy4gU2V0IHlvdXIgY29udGFpbmVyIGFzIHRoZSBkZWxlZ2F0ZSBjb250YWluZXIgaW4gdGhlIFBoYW51YSBzZXJ2aWNlCiAqICAgIHByb3ZpZGVyLgogKi8KCiRwcm92aWRlciA9ICRwcm92aWRlci0+d2l0aERlbGVnYXRlQ29udGFpbmVyKCR5b3VyQ29udGFpbmVyKTsKCi8qKgogKiA0LiBHZXQgdGhlIHNjaGVtYSBidWlsZGVyIGFzIG5vcm1hbC4gSXQgd2lsbCB1c2UgdGhlIGN1c3RvbSBkZXBlbmRlbmNpZXMKICogICAgeW91J3ZlIGRlZmluZWQuCiAqLwoKJHNjaGVtYUJ1aWxkZXIgPSAkcHJvdmlkZXItPmdldFNjaGVtYUJ1aWxkZXIoKTsKYGBgCgpJdCdzIGVudGlyZWx5IG9wdGlvbmFsIHRvIGhhdmUgeW91ciBmaWVsZCByZXNvbHZlciB1c2Ugb3RoZXIgUGhhbnVhIGRlcGVuZGVuY2llcywgYXMgdGhlIGRlZmF1bHQgUGhhbnVhIGltcGxlbWVudGF0aW9uIGRvZXM7IHlvdXIgZmllbGQgcmVzb2x2ZXIgY2FuIGZ1bmN0aW9uIGluIHdoYXRldmVyIHdheSB5b3UgbGlrZS4KCkFub3RoZXIgYXBwcm9hY2ggdG8gY29uc2lkZXIgaXMgaGF2aW5nIHlvdXIgZmllbGQgcmVzb2x2ZXIgaW1wbGVtZW50YXRpb24gY29tcG9zZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiB0aGF0IFBoYW51YSB1c2VzLiBCeSBkb2luZyBzbywgeW91IGNhbiB1c2UgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIGZpZWxkcyB0aGF0IGFyZSBjb21wYXRpYmxlIHdpdGggaXQgYW5kIHlvdXIgb3duIGltcGxlbWVudGF0aW9uIGZvciB0aG9zZSB0aGF0IGFyZSBub3QuIFNlZSB0aGUgZXhhbXBsZSBvZiB0aGlzIGJlbG93LgoKYGBgcGhwCjw/cGhwCgovKioKICogMS4gRGVmaW5lIHlvdXIgZmllbGQgcmVzb2x2ZXIgaW1wbGVtZW50YXRpb24uCiAqLwoKdXNlIEN5Y2xlXFNjaGVtYVxEZWZpbml0aW9uXEZpZWxkOwp1c2UgRWxhemFyXFBoYW51YVxGaWVsZFxGaWVsZFJlc29sdmVySW50ZXJmYWNlOwp1c2UgSmFuZVxDb21wb25lbnRcT3BlbkFwaTNcSnNvblNjaGVtYVxNb2RlbFxTY2hlbWE7CgpjbGFzcyBZb3VyRmllbGRSZXNvbHZlciBpbXBsZW1lbnRzIEZpZWxkUmVzb2x2ZXJJbnRlcmZhY2UKewogICAgcHJpdmF0ZSBGaWVsZFJlc29sdmVySW50ZXJmYWNlICRmaWVsZFJlc29sdmVyOwoKICAgIC8vIEhhdmUgdGhlIGNvbnN0cnVjdG9yIGFjY2VwdCBhbm90aGVyIHJlc29sdmVyIGltcGxlbWVudGF0aW9uIGFzIGEKICAgIC8vIHBhcmFtZXRlci4KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgRmllbGRSZXNvbHZlckludGVyZmFjZSAkZmllbGRSZXNvbHZlciwKICAgICAgICAvKiAuLi4gKi8KICAgICkgewogICAgICAgICR0aGlzLT5maWVsZFJlc29sdmVyID0gJGZpZWxkUmVzb2x2ZXI7CiAgICAgICAgLyogLi4uICovCiAgICB9CgogICAgLy8gVGhlbiwgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2UgbWV0aG9kLi4uCgogICAgcHVibGljIGZ1bmN0aW9uIGdldEZpZWxkKAogICAgICAgIHN0cmluZyAkY29tcG9uZW50TmFtZSwKICAgICAgICBzdHJpbmcgJHByb3BlcnR5TmFtZSwKICAgICAgICBTY2hlbWEgJHByb3BlcnR5U2NoZW1hCiAgICApOiA/RmllbGQKICAgIHsKICAgICAgICAvLyAkZmllbGQgPSAuLi4KCiAgICAgICAgLy8gLi4uIGlmIHlvdXIgaW1wbGVtZW50YXRpb24gY2FuJ3QgcmVzb2x2ZSBhbiBlbnRpdHkuLi4KICAgICAgICBpZiAoJGZpZWxkID09PSBudWxsKSB7CgogICAgICAgICAgICAvLyAuLi4gdGhlbiBoYXZlIGl0IGRlZmVyIHRvIHRoZSBpbmplY3RlZCByZXNvbHZlci4KICAgICAgICAgICAgJGZpZWxkID0gJHRoaXMtPmZpZWxkUmVzb2x2ZXItPmdldEZpZWxkKAogICAgICAgICAgICAgICAgJGNvbXBvbmVudE5hbWUsCiAgICAgICAgICAgICAgICAkcHJvcGVydHlOYW1lLAogICAgICAgICAgICAgICAgJHByb3BlcnR5U2NoZW1hCiAgICAgICAgICAgICk7CgogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRmaWVsZDsKICAgIH0KfQoKLyoqCiAqIDIuIEluamVjdCB5b3VyIGltcGxlbWVudGF0aW9uIHRvIGhhdmUgUGhhbnVhIHVzZSBpdC4KICovCgovLyBHZXQgdGhlIFBoYW51YSBjb250YWluZXIgYW5kIGNvbmZpZ3VyZSB5b3VyIGNvbnRhaW5lciBhcyBub3JtYWwuLi4KJHBoYW51YUNvbnRhaW5lciA9ICRwcm92aWRlci0+Z2V0Q29udGFpbmVyKCk7CiR5b3VyQ29udGFpbmVyID0gbmV3IFxQaW1wbGVcQ29udGFpbmVyOwokeW91ckNvbnRhaW5lcltGaWVsZFJlc29sdmVySW50ZXJmYWNlOjpjbGFzc10gPSBmbigpID0+IG5ldyBZb3VyRmllbGRSZXNvbHZlcigKCiAgICAvLyAuLi4gdGhlbiBpbmplY3QgdGhlIGZpZWxkIHJlc29sdmVyIGltcGxlbWVudGF0aW9uIGZyb20gdGhlIFBoYW51YQogICAgLy8gY29udGFpbmVyIGludG8geW91ciBvd24gaW1wbGVtZW50YXRpb24uCiAgICAkcGhhbnVhQ29udGFpbmVyW0ZpZWxkUmVzb2x2ZXJJbnRlcmZhY2U6OmNsYXNzXQoKKTsKYGBgCgojIyMgTG9nZ2VyCgpQaGFudWEgc3VwcG9ydHMgYW55IFtQU1ItMyBsb2dnZXJdKGh0dHBzOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItMy8pLiBCeSBkZWZhdWx0LCBpdCB1c2VzIGBQc3JcTG9nZ2VyXE51bGxMb2dnZXJgLCB3aGljaCBkaXNjYXJkcyBhbnkgbG9nZ2VkIGVudHJpZXMuIFRvIHN0b3JlIHRoZXNlIGVudHJpZXMsIHlvdSBtdXN0IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGxvZ2dlciB3aXRoIG9uZSB0aGF0IGRvZXMgc29tZXRoaW5nIHdpdGggdGhlbS4gQmVsb3cgaXMgYW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgUGltcGxlIGNvbnRhaW5lciB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBsb2dnZXIgd2l0aCBvbmUgZnJvbSB0aGUgW01vbm9sb2ddKGh0dHBzOi8vZ2l0aHViLmNvbS9TZWxkYWVrL21vbm9sb2cvKSBsaWJyYXJ5LgoKYGBgcGhwCjw/cGhwCgp1c2UgRWxhemFyXFBoYW51YVxTZXJ2aWNlXFByb3ZpZGVyOwp1c2UgTW9ub2xvZ1xMb2dnZXI7CnVzZSBQaW1wbGVcQ29udGFpbmVyOwp1c2UgUHNyXExvZ1xMb2dnZXJJbnRlcmZhY2U7CgokeW91ckNvbnRhaW5lciA9IG5ldyBDb250YWluZXI7CiR5b3VyQ29udGFpbmVyW0xvZ2dlckludGVyZmFjZTo6Y2xhc3NdID0gZnVuY3Rpb24gKCkgewogICAgJGxvZ2dlciA9IG5ldyBMb2dnZXI7CiAgICAvLyBDb25maWd1cmUgJGxvZ2dlciBhcyBuZWVkZWQgaGVyZQogICAgcmV0dXJuICRsb2dnZXI7Cn07CgokcHJvdmlkZXIgPSAobmV3IFByb3ZpZGVyKQogICAgLT53aXRoRGVsZWdhdGVDb250YWluZXIoJHlvdXJDb250YWluZXIpOwpgYGAKCiMjIyBTcGVjaWZpY2F0aW9uIExvYWRlcgoKVG8gY29udmVydCBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gdG8gYSBDeWNsZSBPUk0gc2NoZW1hLCBQaGFudWEgbXVzdCBmaXJzdCBsb2FkIGFuZCBwYXJzZSB0aGF0IHNwZWNpZmljYXRpb24uCgpQaGFudWEgZGVmaW5lcyB0aGUgaW50ZXJmYWNlIGBFbGF6YXJcUGhhbnVhXFNjaGVtYVxTcGVjTG9hZGVySW50ZXJmYWNlYCBmb3IgY2xhc3NlcyB1c2VkIHRvIGxvYWQgYW5kIHBhcnNlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmaWxlcy4KClRoaXMgaW50ZXJmYWNlIGNvbnRhaW5zIGEgc2luZ2xlIG1ldGhvZCBgbG9hZCgpYCB3aGljaCByZWNlaXZlcyBhIHNpbmdsZSBwYXJhbWV0ZXI6IGEgYHN0cmluZ2AgY29udGFpbmluZyB0aGUgcGF0aCB0byBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZS4KCmBsb2FkKClgIG11c3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mIGBKYW5lXENvbXBvbmVudFxPcGVuQXBpM1xKc29uU2NoZW1hXE1vZGVsXE9wZW5BcGlgIGNvbnRhaW5pbmcgdGhlIHBhcnNlZCBzcGVjaWZpY2F0aW9uIG9yIHRocm93IGFuIGluc3RhbmNlIG9mIGBFbGF6YXJcUGhhbnVhXFNjaGVtYVxFeGNlcHRpb25gIGlmIGxvYWRpbmcgb3IgcGFyc2luZyB0aGUgc3BlY2lmaWNhdGlvbiBmYWlscy4KClRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZSB0aGF0IFBoYW51YSB1c2VzIGJ5IGRlZmF1bHQgaXMgYEVsYXphclxQaGFudWFcU2NoZW1hXFNwZWNMb2FkZXJgLiBJdCBoYW5kbGVzIGxvZ2dpbmcgZXZlbnRzIHJlbGF0ZWQgdG8gbG9hZGluZyBhbmQgcGFyc2luZyB0aGUgc3BlY2lmaWNhdGlvbi4KClRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBhZGQgYW4gZW50cnkgdG8geW91ciBjb250YWluZXIgdXNpbmcgdGhlIGtleSBgRWxhemFyXFBoYW51YVxTY2hlbWFcU3BlY0xvYWRlckludGVyZmFjZWAgYW5kIGhhdmUgaXQgcmVzb2x2ZSB0byBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlLgoKIyMjIFJlZ2lzdHJ5CgpBcyBQaGFudWEgY29udmVydHMgT3BlbkFQSSBjb21wb25lbnRzIHRvIEN5Y2xlIE9STSBlbnRpdGllcywgaXQgdXNlcyBhbiBpbnN0YW5jZSBvZiBgQ3ljbGVcU2NoZW1hXFJlZ2lzdHJ5YCB0byByZWdpc3RlciB0aGUgZW50aXRpZXMgYW5kIGxpbmsgdGhlbSB0byB0YWJsZXMuIFRoaXMgcmVnaXN0cnkgaXMgdWx0aW1hdGVseSB1c2VkIHRvIGNvbXBpbGUgdGhlIGVudGl0aWVzIGludG8gYW4gaW5zdGFuY2Ugb2YgYEN5Y2xlXE9STVxTY2hlbWFgLgoKQnkgZGVmYXVsdCwgUGhhbnVhIHVzZXMgYW4gZW1wdHkgYFJlZ2lzdHJ5YCBpbnN0YW5jZSBjb25maWd1cmVkIGZvciB5b3VyIGRhdGFiYXNlLiBZb3Ugd2FudCB0byB1c2UgYSBkaWZmZXJlbnQgaW5zdGFuY2UgaWYsIGZvciBleGFtcGxlLCB5b3UncmUgY29tcGlsaW5nIGVudGl0aWVzIGdlbmVyYXRlZCBmcm9tIG90aGVyIHNvdXJjZXMgaW50byB0aGUgc2FtZSBzY2hlbWEgd2l0aCBlbnRpdGllcyBnZW5lcmF0ZWQgYnkgUGhhbnVhLgoKSW4gc3VjaCBzaXR1YXRpb25zLCBhZGQgYW4gZW50cnkgdG8geW91ciBjb250YWluZXIgdXNpbmcgdGhlIGtleSBgQ3ljbGVcU2NoZW1hXFJlZ2lzdHJ5YCBhbmQgaGF2ZSBpdCByZXNvbHZlIHRvIHlvdXIgZGVzaXJlZCBgUmVnaXN0cnlgIGluc3RhbmNlIHRvIGhhdmUgUGhhbnVhIHVzZSBpdC4gTm90ZSB0aGF0IHlvdSBjYW4gdXNlIHRoZSBQaGFudWEgY29udGFpbmVyIHRvIGVpdGhlciB1c2UgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIGl0cyBkZWZhdWx0IHJlZ2lzdHJ5IGluc3RhbmNlIG9yIHRvIHN1cHBseSB5b3VyIHJlZ2lzdHJ5J3MgcmVxdWlyZWQgaW1wbGVtZW50YXRpb24gb2YgYFNwaXJhbFxEYXRhYmFzZVxEYXRhYmFzZVByb3ZpZGVySW50ZXJmYWNlYCB1c2luZyB0aGUgc2FtZSBpbnN0YW5jZSBvZiBgU3BpcmFsXERhdGFiYXNlXERhdGFiYXNlTWFuYWdlcmAgdGhhdCBQaGFudWEgZG9lcy4gQmVsb3cgaXMgYW4gZXhhbXBsZSBvZiBkb2luZyBlYWNoIHdpdGggYSBQaW1wbGUgY29udGFpbmVyLgoKYGBgcGhwCjw/cGhwCnVzZSBDeWNsZVxTY2hlbWFcUmVnaXN0cnk7CnVzZSBQaGFudWFcU2VydmljZVxQcm92aWRlcjsKdXNlIFBpbXBsZVxDb250YWluZXI7CnVzZSBTcGlyYWxcRGF0YWJhc2VcRGF0YWJhc2VQcm92aWRlckludGVyZmFjZTsKCiRwcm92aWRlciA9IG5ldyBQcm92aWRlcjsKCi8vIElmIHlvdSdyZSB1c2luZyBQaGFudWFcU2VydmljZVxQcm92aWRlciBhcyBhIFBpbXBsZSBwcm92aWRlcjoKJHlvdXJDb250YWluZXIgPSBuZXcgQ29udGFpbmVyOwokeW91ckNvbnRhaW5lci0+cmVnaXN0ZXIoJHByb3ZpZGVyKTsKJHlvdXJDb250YWluZXItPmV4dGVuZChSZWdpc3RyeTo6Y2xhc3MsIGZ1bmN0aW9uIChSZWdpc3RyeSAkcmVnaXN0cnkpIHsKICAgIC8vIENoYW5nZSAkcmVnaXN0cnkgYXMgbmVlZGVkIGhlcmUKfSk7CgovLyBJZiB5b3UncmUgbm90IHVzaW5nIFBoYW51YVxTZXJ2aWNlXFByb3ZpZGVyIGFzIGEgUGltcGxlIHByb3ZpZGVyOgokcGhhbnVhQ29udGFpbmVyID0gJHByb3ZpZGVyLT5nZXRDb250YWluZXIoKTsKJHlvdXJDb250YWluZXIgPSBuZXcgQ29udGFpbmVyOwokeW91ckNvbnRhaW5lcltSZWdpc3RyeTo6Y2xhc3NdID0gZnVuY3Rpb24gKCkgdXNlICgkcGhhbnVhQ29udGFpbmVyKSB7CiAgICAkZGF0YWJhc2VQcm92aWRlciA9ICRwaGFudWFDb250YWluZXJbRGF0YWJhc2VQcm92aWRlckludGVyZmFjZTo6Y2xhc3NdOwogICAgJHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KCRkYXRhYmFzZVByb3ZpZGVyKTsKICAgIC8vIENvbmZpZ3VyZSAkcmVnaXN0cnkgaGVyZSBhcyBuZWVkZWQKICAgIHJldHVybiAkcmVnaXN0cnk7Cn07CiRwaGFudWFDb250YWluZXJbUmVnaXN0cnk6OmNsYXNzXSA9IGZuKCkgPT4gJHlvdXJDb250YWluZXJbUmVnaXN0cnk6OmNsYXNzXTsKYGBgCgojIyMgQ29tcGlsZXIgQ29uZmlndXJhdGlvbgoKUGhhbnVhIHVzZXMgYW4gaW5zdGFuY2Ugb2YgYEN5Y2xlXFNjaGVtYVxDb21waWxlcmAgdG8gY29tcGlsZSBhIHJlZ2lzdHJ5IG9mIGVudGl0aWVzIGludG8gYSBzY2hlbWEuIFRoaXMgY29tcGlsZXIgY2FuIHVzZSBbY3VzdG9tIGdlbmVyYXRvcnNdKGh0dHBzOi8vY3ljbGUtb3JtLmRldi9kb2NzL2FkdmFuY2VkLXNjaGVtYS1idWlsZGVyI2N1c3RvbS1nZW5lcmF0b3JzKSBhbmQgW2RlZmF1bHRzXShodHRwczovL2N5Y2xlLW9ybS5kZXYvZG9jcy9hZHZhbmNlZC1kZWZhdWx0LWNsYXNzZXMpLiBCeSBkZWZhdWx0LCBQaGFudWEgdXNlcyBkZWZhdWx0IHZhbHVlcyBmb3IgZWFjaCBvZiB0aGVzZSAoaS5lLiBlbXB0eSBhcnJheXMpLgoKSWYgeW91IHdhbnQgdG8gdXNlIGN1c3RvbSB2YWx1ZXMgZm9yIGVpdGhlciBvZiB0aGVzZSwgUGhhbnVhIHByb3ZpZGVzIGBFbGF6YXJcUGhhbnVhXFNjaGVtYVxDb21waWxlckNvbmZpZ3VyYXRpb25gIHRvIG92ZXJyaWRlIHRoZW0uIEFkZCBhbiBlbnRyeSBmb3IgdGhpcyBjbGFzcyB0byB5b3VyIGNvbnRhaW5lciB3aXRoIGEgY29uZmlndXJlZCBpbnN0YW5jZS4gQmVsb3cgaXMgYW4gZXhhbXBsZSBvZiBkb2luZyB0aGlzIHdpdGggYSBQaW1wbGUgY29udGFpbmVyLgoKYGBgcGhwCjw/cGhwCgp1c2UgRWxhemFyXFBoYW51YVxTY2hlbWFcQ29tcGlsZXJDb25maWd1cmF0aW9uOwp1c2UgRWxhemFyXFBoYW51YVxTZXJ2aWNlXFByb3ZpZGVyOwp1c2UgUGltcGxlXENvbnRhaW5lcjsKCiR5b3VyQ29udGFpbmVyID0gbmV3IENvbnRhaW5lcjsKJHlvdXJDb250YWluZXJbQ29tcGlsZXJDb25maWd1cmF0aW9uOjpjbGFzc10gPSBmbigpID0+IChuZXcgQ29tcGlsZXJDb25maWd1cmF0aW9uKQogICAgLT53aXRoR2VuZXJhdG9ycygvKiAuLi4gKi8pCiAgICAtPndpdGhEZWZhdWx0cygvKiAuLi4gKi8pOwoKJHByb3ZpZGVyID0gKG5ldyBQcm92aWRlcikKICAgIC0+d2l0aERlbGVnYXRlQ29udGFpbmVyKCR5b3VyQ29udGFpbmVyKTsKYGBgCgojIyBGQVEKCiMjIyBXaHkgZGlkIHlvdSBidWlsZCB0aGlzPwoKSSB3YXMgYWxyZWFkeSB1c2luZyBPcGVuQVBJIGFuZCBKYW5lIGluIHNvbWUgcHJvamVjdHMgYW5kIHdhbnRlZCB0byB1c2UgQ3ljbGUgT1JNIGFzIHdlbGwuIEkgd2FzIGFscmVhZHkgdXNpbmcgbW9kZWwgY2xhc3NlcyBnZW5lcmF0ZWQgYnkgSmFuZSBhbmQgZGlkbid0IHdhbnQgdG8gaGF2ZSB0byBtYW51YWxseSBhbm5vdGF0ZSBvciBvdGhlcndpc2UgY2hhbmdlIHRoZW0gdG8gYmUgdXNhYmxlIHdpdGggQ3ljbGUuIEkgYnVpbHQgdGhpcyBzbyBJIHdvdWxkbid0IGhhdmUgdG8uCgojIyMgV2h5IHRoZSBuYW1lICJQaGFudWE/IgoKSXQncyB0YWtlbiBmcm9tIHRoZSBsYXR0ZXIgaGFsZiBvZiB0aGUgU3dhaGlsaSB3b3JkICprdWZhZmFudWEqLCB3aGljaCBtZWFucyAidG8gZGVmaW5lLCIgYW5kIGFkYXB0ZWQgdG8gcmVwbGFjZSB0aGUgImYiIHdpdGggInBoIiBhcyBpcyBjb21tb24gd2l0aCBQSFAgcHJvamVjdCBuYW1lcy4KCiMjIyBIb3cgZG8geW91IHByb25vdW5jZSAiUGhhbnVhPyIKCkZhaC1OT08tYWguCg== readmeEtag: '"ac01a09cb96b5e6a046667396cf5bfe5ddf28755"' readmeLastModified: Sun, 01 Aug 2021 00:10:52 GMT repositoryId: 384845118 description: Builds Cycle ORM schemas from OpenAPI 3 component schemas created: '2021-07-11T02:35:08Z' updated: '2022-12-26T17:17:05Z' language: PHP archived: true stars: 5 watchers: 1 forks: 0 owner: elazar logo: https://avatars.githubusercontent.com/u/15487?v=4 license: MIT repoEtag: '"e419f7ed3db7bcb99dc14d4141064b30957d300301fa15d410a7f0292303e5c8"' repoLastModified: Mon, 26 Dec 2022 17:17:05 GMT foundInMaster: true id: d9fd84a229f29b78ac55c53e32cc1f38 - source: openapi3 tags repository: https://github.com/cossteam/cossim-server v3: true id: 33aedab32d669fdd29a2a08114f19cba repositoryMetadata: base64Readme: >- Y29zcy1zZXJ2ZXIKPT09PT09PT09PT09PT0KYGNvc3NpbS9jb3NzLXNlcnZlcmAg5piv55So5LqO5pSv5oyBY29zcy1jbGllbnTnmoRBUEnmnI3liqHjgIIKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoqIFvnibnmgKddKCPnibnmgKcpCiogW+acjeWKoV0oI+acjeWKoSkKKiBb57uT5p6EXSgj57uT5p6EKQoqIFvlv6vpgJ/lkK/liqhdKCPlv6vpgJ/lkK/liqgpCiogW+mFjee9rl0oI+mFjee9rikKKiBb5paH5qGjXSgj5paH5qGjKQoqIFvmm7TlpJpdKCPmm7TlpJopCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMjIOeJueaApwoqIOmrmOaAp+iDvQoqIOe6r0dvbGFuZ+WunueOsAoqIOWIhuW4g+W8j+acjeWKoeaetuaehO+8iOacjeWKoemXtOmAmuS/oeS9v+eUqGdycGPvvIkKKiBERETpobnnm67mnrbmnoQKKiDmlK/mjIHliqjmgIHmiannvKnmnI3liqHlrp7kvovkuI7otJ/ovb3lnYfooaEKKiDmnI3liqHlrp7kvovmlK/mjIFwcHJvZuiwg+ivleWSjHByb21ldGhldXMgbWV0cmljcyjlj6/mjqXlhaVwcm9tZXRoZXVz5ZKMZ3JhZmFuYeWunueOsOWPr+inhuWMlueahOacjeWKoeebkeaOpykKKiDmlK/mjIHmnI3liqHliqjmgIHms6jlhozlj5HnjrDlkozphY3nva7kuK3lv4PvvIjln7rkuo5jb25zdWzvvIkKKiDlrp7ml7Yr56a757q/5o6o6YCB5pSv5oyB77yIU29ja2V0SU8rUmFiYml0TVHvvIkKKiDph4fnlKjpq5jmgKfog71BUEnnvZHlhbPvvIhhcGlzaXjvvIkKKiDmnI3liqHnlJ/lkb3lkajmnJ/lrp7njrDvvIhtYW5hZ2XvvIkKKiBPU1Plr7nosaHlrZjlgqjvvIhtaW5pb++8iQoqIOS8oOi+k+WKoOWvhu+8iG9wZW5wZ3DvvIkKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIyDmnI3liqEKPiBjb3NzLXNlcnZlciDljIXlkKvku6XkuIvmnI3liqHvvJoKCiogdXNlcjog8J+RpOeUqOaIt+acjeWKoe+8jOWkhOeQhueUqOaIt+azqOWGjOOAgeeZu+W9leetieWKn+iDveOAggoqIGdyb3VwOiDwn5Gs576k57uE5pyN5Yqh77yM566h55CG55So5oi35LmL6Ze055qE576k57uE5YWz57O744CCCiogcHVzaDog4pyI77iP5raI5oGv5o6o6YCB5pyN5Yqh77yM6LSf6LSj5a6e5pe25raI5oGv5o6o6YCB5Yqf6IO944CCCiogbXNnOiDwn5Op5raI5oGv5pyN5Yqh77yM5aSE55CG55So5oi36Ze05raI5oGv55qE5pS25Y+R5Yqf6IO944CCCiogbGl2ZTog4piO77iP6YCa6K+d5pyN5Yqh77yM5pSv5oyB6K+t6Z+z6YCa6K+d5ZKM6KeG6aKR6YCa6K+d5Yqf6IO944CCCiogc3RvcmFnZTog8J+Xg+WtmOWCqOacjeWKoe+8jOi0n+i0o+aWh+S7tuWtmOWCqOWSjOeuoeeQhuOAggoqIHJlbGF0aW9uOiDwn6ea4oCN5YWz57O75pyN5Yqh77yM566h55CG55So5oi35LmL6Ze055qE56S+5Lqk5YWz57O744CCCiogYWRtaW46IPCfkbfigI3nrqHnkIblkZjmnI3liqHvvIznlKjkuo7nrqHnkIbns7vnu5/nlKjmiLflkozmnYPpmZDjgIIKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIyDnu5PmnoQKPumhueebruebuOWFs+ebruW9leS7i+e7jeWmguS4i++8mgpgYGAK4pSc4pSA4pSAIGJ1aWxkICPnlJ/miJBwZ3Dlhaznp4HpkqUK4pSc4pSA4pSAIGNtZCAj5ZCv5Yqo5paH5Lu2CuKUnOKUgOKUgCBkZXBsb3kgI+mFjee9rgrilJzilIDilIAgZG9jcyAj5o6l5Y+j5paH5qGjCuKUnOKUgOKUgCBpbnRlcm5hbCAj5pyN5Yqh5Luj56CBCuKUlOKUgOKUgCBwa2cgI+acjeWKoemcgOimgeeUqOWIsOeahOWFrOWFseW3peWFt+WMhQpgYGAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIyDlv6vpgJ/lkK/liqgKPiDku6XkuIvkuKTnp43mlrnlvI/pg73pnIDopoHlronoo4Vkb2NrZXItY29tcG9zZeS4jmRvY2tlcgo+IAo+IOKaoO+4j+ivt+WFiOWuieijhVtjb3NzLWNsaeW3peWFt10oaHR0cHM6Ly9naXRodWIuY29tL2Nvc3NpbS9jb3NzLWNsaS9yZWxlYXNlcykKPiAKPiDmnInlhbNjbGnlt6Xlhbfmm7TlpJrnmoTkv6Hmga/or7db5Y+C6ZiFXShodHRwczovL2dpdGh1Yi5jb20vY29zc2ltL2Nvc3MtY2xpKQojIyMg5rqQ56CB5ZCv5YqoCmBgYAoxLuaLieWPluacgOaWsOS7o+eggQpnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2Nvc3NpbS9jb3NzLXNlcnZlcgptdiAuL2Nvc3MtY2xpLXh4eCBjb3NzLXNlcnZlci9jb3NzLWNsaQpjZCBjb3NzLXNlcnZlcgoKMi7nlJ/miJDphY3nva7mlofku7YKY2htb2QgYSt4IGNvc3MtY2xpCmNvc3MtY2xpIGdlbiAtLXBhdGggLi9kZXBsb3kvZG9ja2VyLwoKMy7lkK/liqjlv4XpnIDkuK3pl7Tku7YKZG9ja2VyLWNvbXBvc2UgLWYgZGVwbG95L2RvY2tlci9kb2NrZXItY29tcG9zZS5iYXNlLnlhbWwgdXAgLWQKCjQu5ZCv5Yqo5pyN5YqhCui/memHjOWPquaLv3VzZXLkuL7kvosKZ28gcnVuIC4vY21kL3VzZXIvbWFpbi5nbyAtY29uZmlnIGRlcGxveS9kb2NrZXIvY29uZmlnL3NlcnZpY2UvdXNlci55YW1sCmBgYAojIyMgY2xp5bel5YW35ZCv5YqoCj4g4pqg77iP6K+35YWI5a6J6KOFW2Nvc3MtY2xp5bel5YW3XShodHRwczovL2dpdGh1Yi5jb20vY29zc2ltL2Nvc3MtY2xpL3JlbGVhc2VzKQo+IAo+IOKaoO+4j+ivt+azqOaEj++8mmNsaeW3peWFt+WQr+WKqOaXtu+8jOS8muiHquWKqOeUn+aIkOmFjee9ruaWh+S7tuWcqOW9k+WJjeebruW9leS4i++8jOWmguaciemcgOimgeivt+WIm+W7uuaWh+S7tuWkuQpgYGAKbWtkaXIgY29zcy1zZXJ2ZXIKY2QgY29zcy1zZXJ2ZXIKY29zcy1jbGkgc3RhcnQKYGBgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyMg6YWN572uCioqY29uZmlnL2NvbW1vbioqCj4g5a2Y5pS+5YWs5YWx5Lit6Ze05Lu26YWN572u5paH5Lu2CgoqKmNvbmZpZy9wZ3AqKgo+IOWtmOaUvnBncOWFrOengemSpQoKKipjb25maWcvc2VydmljZSoqCj4g5a2Y5pS+5omA5pyJ5pyN5Yqh6YWN572u5paH5Lu2CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMg5paH5qGjClRPRE8KCiMjIOabtOWkmgpUT0RPCg== readmeEtag: '"2f523e7e0c8bb0d85b63a230e9014752bcfabe59"' readmeLastModified: Tue, 04 Jun 2024 09:01:56 GMT repositoryId: 736890548 description: coss-im-server created: '2023-12-29T07:07:13Z' updated: '2024-09-30T19:23:59Z' language: Go archived: false stars: 5 watchers: 0 forks: 4 owner: cossteam logo: https://avatars.githubusercontent.com/u/171768939?v=4 repoEtag: '"9c93315e1db56f5ff15768040bdf1f26ca0cae3c9350f22665fa20fd5d498e7f"' repoLastModified: Mon, 30 Sep 2024 19:23:59 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/input-output-hk/cardano-governance v3: true repositoryMetadata: base64Readme: >- IyBjYXJkYW5vLWdvdmVybmFuY2UKIVtDYXJkYW5vLUdvdmVybmFuY2UtcmVwb3NpdG9yeS01MDBdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzE3MDIxMjQ5LzE1MDA0NzI4OC1kMjE5NWI4MS02NGE2LTRkMGYtYTdlZi01OTBjZDZkMTdiMGEucG5nKQoK readmeEtag: '"a189815df425364a844146b0cf398a5f65d2aed3"' readmeLastModified: Wed, 19 Jan 2022 01:38:27 GMT repositoryId: 449402368 description: >- A public open governance github repository containing governance documentation, examples and Open APIs. created: '2022-01-18T18:32:22Z' updated: '2024-11-21T22:40:48Z' language: null archived: false stars: 5 watchers: 8 forks: 0 owner: input-output-hk logo: https://avatars.githubusercontent.com/u/12909177?v=4 repoEtag: '"02e5e6dd157d7f11a47e2827dc045f385ab2fccaf7ba46fccb6ff743ffec7224"' repoLastModified: Thu, 21 Nov 2024 22:40:48 GMT foundInMaster: true category: Low-level Tooling id: def1d8b02e3343ae5fb306289fd9c5ce - source: openapi3 tags repository: https://github.com/sergeyklay/provider-pact-example v3: true id: 3c013cdf6ffea735ac445dae12e3466a repositoryMetadata: base64Readme: >- Li4gcmF3OjogaHRtbAoKICAgIDxoMSBhbGlnbj0iY2VudGVyIj5Qcm92aWRlciBBUEkgRXhhbXBsZTwvaDE+CiAgICA8cCBhbGlnbj0iY2VudGVyIj4KICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VyZ2V5a2xheS9wcm92aWRlci1wYWN0LWV4YW1wbGUvYWN0aW9ucy93b3JrZmxvd3MvdGVzdC1jb250cmFjdHMueWFtbCI+CiAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vc2VyZ2V5a2xheS9wcm92aWRlci1wYWN0LWV4YW1wbGUvYWN0aW9ucy93b3JrZmxvd3MvdGVzdC1jb250cmFjdHMueWFtbC9iYWRnZS5zdmciIGFsdD0iVGVzdCBDb250cmFjdHMiIC8+CiAgICAgICAgPC9hPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZXJnZXlrbGF5L3Byb3ZpZGVyLXBhY3QtZXhhbXBsZS9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LWNvZGUueWFtbCI+CiAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vc2VyZ2V5a2xheS9wcm92aWRlci1wYWN0LWV4YW1wbGUvYWN0aW9ucy93b3JrZmxvd3MvdGVzdC1jb2RlLnlhbWwvYmFkZ2Uuc3ZnIiBhbHQ9IlRlc3QgQ29kZSIgLz4KICAgICAgICA8L2E+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlcmdleWtsYXkvcHJvdmlkZXItcGFjdC1leGFtcGxlL2FjdGlvbnMvd29ya2Zsb3dzL2xpbnQtb2FzLnlhbWwiPgogICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3NlcmdleWtsYXkvcHJvdmlkZXItcGFjdC1leGFtcGxlL2FjdGlvbnMvd29ya2Zsb3dzL2xpbnQtb2FzLnlhbWwvYmFkZ2Uuc3ZnIiBhbHQ9IkxpbnQgT3BlbkFQSSIgLz4KICAgICAgICA8L2E+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jb2RlY292LmlvL2doL3NlcmdleWtsYXkvcHJvdmlkZXItcGFjdC1leGFtcGxlIiA+CiAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2NvZGVjb3YuaW8vZ2gvc2VyZ2V5a2xheS9wcm92aWRlci1wYWN0LWV4YW1wbGUvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPTJDOFcwVlpRR04iIGFsdD0iQ292ZXJhZ2UgU3RhdHVzIi8+CiAgICAgICAgPC9hPgogICAgPC9wPgoKLi4gdGVhc2VyLWJlZ2luCgpUaGlzIGlzIGEgUHl0aG9uIGFwcGxpY2F0aW9uIGZvciBleHBsYW5hdGlvbiBvZiBDb250cmFjdCBUZXN0aW5nIGJhc2VkIG9uCmBQYWN0IDxodHRwczovL2RvY3MucGFjdC5pbz5gXy4KCkhlcmUgeW91IGNhbiBmaW5kIG91dCBob3cgdG8gdXNlIFBhY3QgdXNpbmcgdGhlIFB5dGhvbiBsYW5ndWFnZS4gWW91IGNhbiBmaW5kCm1vcmUgb2YgYW4gb3ZlcnZpZXcgb24gUGFjdCBpbiB0aGUgYFBhY3QgSW50cm9kdWN0aW9uIDxodHRwczovL2RvY3MucGFjdC5pby8+YF8uCgpUaGlzIHByb2plY3QgdXNlczoKCiogYFBhY3QgPGh0dHBzOi8vcGFjdC5pbz5gXywgYSBjb2RlLWZpcnN0IHRvb2wgZm9yIHRlc3RpbmcgSFRUUCBhbmQgbWVzc2FnZQogIGludGVncmF0aW9ucyB1c2luZyBjb250cmFjdCB0ZXN0cwoqIGBwYWN0LXB5dGhvbiA8aHR0cHM6Ly9naXRodWIuY29tL3BhY3QtZm91bmRhdGlvbi9wYWN0LXB5dGhvbj5gXywgdG8gY3JlYXRlCiAgYW5kIHZlcmlmeSBjb25zdW1lciBkcml2ZW4gY29udHJhY3RzCiogYE9wZW5BUEkgPGh0dHBzOi8vc3dhZ2dlci5pbz5gXywgdG8gZGVzY3JpYmUgdGhlIFByb2R1Y3RzIEFQSQoqIGBGbGFzayA8aHR0cHM6Ly9mbGFzay5wYWxsZXRzcHJvamVjdHMuY29tPmBfLCBhIG1pY3JvIHdlYiBmcmFtZXdvcmsgZm9yCiAgYnVpbGRpbmcgQVBJCgouLiB0ZWFzZXItZW5kCgouLiBpbWFnZTo6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9zZXJnZXlrbGF5L3Byb3ZpZGVyLXBhY3QtZXhhbXBsZS9tYWluL2NkYy1leGFtcGxlLnBuZwogIDphbHQ6IEludGVyYWN0aW9uIGRpYWdyYW0KClByb3ZpZGVyCj09PT09PT09CgpQcm92aWRlciBBUEkgRXhhbXBsZSBpcyBhIHNhbXBsZSBGbGFzayBhcHBsaWNhdGlvbiB0aGF0IGV4cG9zZSBlbmRwb2ludHMgd2l0aApSRVNUIHN0YW5kYXJkLiBBcyBhbiBleGFtcGxlLCB0aGlzIHByb2plY3QgdXNlcyB0aGUgc2ltcGxlIFByb2R1Y3RzIEFQSS4gSGVyZQppcyB0aGUKYE9wZW5BUEkgc3BlYyA8aHR0cHM6Ly9naXRodWIuY29tL3NlcmdleWtsYXkvcHJvdmlkZXItcGFjdC1leGFtcGxlL2Jsb2IvbWFpbi9vcGVuYXBpL3N3YWdnZXIueWFtbD5gXwpkZXNjcmliZXMgdGhlIGludGVyYWN0aW9uIG9mIGNsaWVudHMgd2l0aCB0aGUgcHJvdmlkZXIuCgpDb25zdW1lcgo9PT09PT09PQoKRm9yIHRoZSBwdXJpdHkgb2YgdGhlIGV4cGVyaW1lbnQsIHRoZSBjb25zdW1lciBpcyBpbXBsZW1lbnRlZCBhcyBhIHNlcGFyYXRlCnByb2plY3QgYW5kIGNhbiBiZSBmb3VuZCBhdApgdGhlIGZvbGxvd2luZyByZXBvIDxodHRwczovL2dpdGh1Yi5jb20vc2VyZ2V5a2xheS9jb25zdW1lci1wYWN0LWV4YW1wbGU+YF8uCgpQYWN0Cj09PT0KClNhbXBsZSBjb250cmFjdHMgKHBhY3RzKSBhcmUgbG9jYXRlZCBoZXJlOgpodHRwczovL2dpdGh1Yi5jb20vc2VyZ2V5a2xheS9jb25zdW1lci1wYWN0LWV4YW1wbGUvdHJlZS9tYWluL3Rlc3RzL3BhY3RzCgpHZXR0aW5nIFN0YXJ0ZWQKPT09PT09PT09PT09PT09CgpQcmVyZXF1aXNpdGVzCi0tLS0tLS0tLS0tLS0KCldoYXQga2luZCBvZiB0aGluZ3MgeW91IG5lZWQgdG8gaW5zdGFsbCBvbiB5b3VyIHdvcmtzdGF0aW9uIHRvIHN0YXJ0OgoKKiBQeXRob24gPj0gMy4xMQoqIFNRTGl0ZTMKKiBOb2RlLmpzID49IDE2CgpJbnN0YWxsaW5nCi0tLS0tLS0tLS0KCkZpcnN0LCBpbnN0YWxsIFB5dGhvbiBkZXBlbmRlbmNpZXMgZm9yIHByb3ZpZGVyIChQcm9kdWN0cyBBUEkpOgoKLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKCiAgICQgbWFrZSBpbml0CiAgICQgbWFrZSBpbnN0YWxsCgoKQ3JlYXRlIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb246CgouLiBjb2RlLWJsb2NrOjogY29uc29sZQoKICAgJCBjcCAuZW52LmV4YW1wbGUgLmVudgoKUnVuIGRhdGFiYXNlIG1pZ3JhdGlvbnMgZm9yIHByb3ZpZGVyOgoKLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKCiAgICQgbWFrZSBtaWdyYXRlCgpBZGQgcHJvdmlkZXIgc2VlZCBkYXRhIHRvIHRoZSBkYXRhYmFzZToKCi4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCgogICAkIG1ha2Ugc2VlZAoKTmV4dCwgaW5zdGFsbCBOb2RlLmpzIGxpbnRlcnMgYW5kIHRvb2xzOgoKLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKCiAgICQgbnBtIGluc3RhbGwKClJ1biBBUEkgc2VydmVyCi0tLS0tLS0tLS0tLS0tCgpUbyBydW4gQVBJIHNlcnZlciB1c2UgdGhlIGNvbW1hbmQgYXMgZm9sbG93czoKCi4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCgogICAkIG1ha2Ugc2VydmUKClJ1biB0ZXN0cwotLS0tLS0tLS0KClRvIHJ1biB1bml0IHRlc3RzIHVzZSB0aGUgY29tbWFuZCBhcyBmb2xsb3dzOgoKLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKCiAgICQgbWFrZSB0ZXN0CgpUbyB2ZXJpZnkgY29udHJhY3RzIChwYWN0cykgdXNlIHRoZSBjb21tYW5kIGFzIGZvbGxvd3M6CgouLiBjb2RlLWJsb2NrOjogY29uc29sZQoKICAgJCAuL3Rlc3RzL3J1bi1weXRlc3Quc2gKCk5vdGUgdGhhdCBiZWZvcmUgdGhlIGNvbnRyYWN0cyB2ZXJpZmljYXRpb24sIHlvdSBtdXN0IGhhdmUgZGVwbG95ZWQgdGhlIGJyb2tlciwKYXMgd2VsbCBhcyB0aGUgY29udHJhY3RzIG11c3QgYmUgcHVibGlzaGVkLgoKUnVuIGxpbnQgY2hlY2sKLS0tLS0tLS0tLS0tLS0KClRvIHJ1biBPcGVuQVBJIHNwZWMgY2hlY2tpbmcgdXNlIHRoZSBjb21tYW5kIGFzIGZvbGxvd3M6CgouLiBjb2RlLWJsb2NrOjogY29uc29sZQoKICAgJCBucG0gcnVuIGxpbnQKCgouLiAtcHJvamVjdC1pbmZvcm1hdGlvbi0KClByb2plY3QgSW5mb3JtYXRpb24KPT09PT09PT09PT09PT09PT09PQoKUHJvdmlkZXIgQVBJIEV4YW1wbGUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIGBNSVQgTGljZW5zZSA8aHR0cHM6Ly9jaG9vc2VhbGljZW5zZS5jb20vbGljZW5zZXMvbWl0Lz5gXywKYW5kIGl0cyBjb2RlIGxpdmVzIGF0IGBHaXRIdWIgPGh0dHBzOi8vZ2l0aHViLmNvbS9zZXJnZXlrbGF5L3Byb3ZpZGVyLXBhY3QtZXhhbXBsZT5gXy4KSXTigJlzIHJpZ29yb3VzbHkgdGVzdGVkIG9uIFB5dGhvbiAzLjExKy4KCklmIHlvdSdkIGxpa2UgdG8gY29udHJpYnV0ZSB0byBQcm92aWRlciBBUEkgRXhhbXBsZSB5b3UncmUgbW9zdCB3ZWxjb21lIQoKLi4gLXN1cHBvcnQtCgpTdXBwb3J0Cj09PT09PT0KClNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb24sIGFueSByZW1hcmssIG9yIGlmIHlvdSBmaW5kIGEgYnVnLCBvciBpZiB0aGVyZSBpcwpzb21ldGhpbmcgeW91IGNhbid0IGRvIHdpdGggdGhlIFByb3ZpZGVyIEFQSSBFeGFtcGxlLCBwbGVhc2UKYG9wZW4gYW4gaXNzdWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9zZXJnZXlrbGF5L3Byb3ZpZGVyLXBhY3QtZXhhbXBsZS9pc3N1ZXM+YF8uCg== readmeEtag: '"eca875a7a45a62339691a683ba4be1654a46e539"' readmeLastModified: Mon, 05 Aug 2024 12:03:43 GMT repositoryId: 592216369 description: Provider-side demo using consumer-driven contract testing created: '2023-01-23T08:22:09Z' updated: '2026-01-08T17:03:33Z' language: Python archived: true stars: 6 watchers: 1 forks: 2 owner: sergeyklay logo: https://avatars.githubusercontent.com/u/1256298?v=4 license: MIT repoEtag: '"472e8579e1d1e937f8ad269cbf09c792aa62c2e17e9a99d644237c9b2e6e0260"' repoLastModified: Thu, 08 Jan 2026 17:03:33 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/sergeyklay/contract-testing-example - https://github.com/sergeyklay/specmatic-testing-example - source: openapi3 tags repository: https://github.com/deepakbhalla/springboot-postgres-jsonb-jpa v3: true id: ee3ef4783b54d3953064d870157c1920 repositoryMetadata: base64Readme: >- IyBzcHJpbmdib290LXBvc3RncmVzLWpzb25iLWpwYQpBcHBsaWNhdGlvbiB0byBkZW1vbnN0cmF0ZSB0aGUgSlNPTkIgZGF0YSB0eXBlIHVzZWQgaW4gUG9zdGdyZVNRTCBkYXRhYmFzZSB1c2luZyBTcHJpbmdib290IEpQQSBpbXBsZW1lbnRhdGlvbi4KCiMjIyBKU09OIERhdGEgVHlwZXMKCkpTT04gZGF0YSB0eXBlcyBhcmUgZm9yIHN0b3JpbmcgSlNPTiAoSmF2YVNjcmlwdCBPYmplY3QgTm90YXRpb24pIGRhdGEuIFN1Y2ggZGF0YSBjYW4gYWxzbyBiZSBzdG9yZWQgYXMgdGV4dCwgYnV0IHRoZSAKSlNPTiBkYXRhIHR5cGVzIGhhdmUgdGhlIGFkdmFudGFnZSBvZiBlbmZvcmNpbmcgdGhhdCBlYWNoIHN0b3JlZCB2YWx1ZSBpcyB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlIEpTT04gcnVsZXMuIFRoZXJlIGFyZSAKYWxzbyBhc3NvcnRlZCBKU09OLXNwZWNpZmljIGZ1bmN0aW9ucyBhbmQgb3BlcmF0b3JzIGF2YWlsYWJsZSBmb3IgZGF0YSBzdG9yZWQgaW4gdGhlc2UgZGF0YSB0eXBlcy4KClBvc3RncmVTUUwgb2ZmZXJzIHR3byB0eXBlcyBmb3Igc3RvcmluZyBKU09OIGRhdGE6IAoKLSBKU09OIAotIEpTT05CLiAKClRvIGltcGxlbWVudCBlZmZpY2llbnQgcXVlcnkgbWVjaGFuaXNtcyBmb3IgdGhlc2UgCmRhdGEgdHlwZXMsIFBvc3RncmVTUUwgYWxzbyBwcm92aWRlcyB0aGUganNvbnBhdGggZGF0YSB0eXBlLgoKVGhlIGpzb24gYW5kIGpzb25iIGRhdGEgdHlwZXMgYWNjZXB0IGFsbW9zdCBpZGVudGljYWwgc2V0cyBvZiB2YWx1ZXMgYXMgaW5wdXQuIFRoZSBtYWpvciBwcmFjdGljYWwgZGlmZmVyZW5jZSBpcyBvbmUgCm9mIGVmZmljaWVuY3kuIFRoZSBqc29uIGRhdGEgdHlwZSBzdG9yZXMgYW4gZXhhY3QgY29weSBvZiB0aGUgaW5wdXQgdGV4dCwgd2hpY2ggcHJvY2Vzc2luZyBmdW5jdGlvbnMgbXVzdCByZXBhcnNlIG9uIAplYWNoIGV4ZWN1dGlvbjsgd2hpbGUganNvbmIgZGF0YSBpcyBzdG9yZWQgaW4gYSBkZWNvbXBvc2VkIGJpbmFyeSBmb3JtYXQgdGhhdCBtYWtlcyBpdCBzbGlnaHRseSBzbG93ZXIgdG8gaW5wdXQgZHVlIHRvIAphZGRlZCBjb252ZXJzaW9uIG92ZXJoZWFkLCBidXQgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdG8gcHJvY2Vzcywgc2luY2Ugbm8gcmVwYXJzaW5nIGlzIG5lZWRlZC4ganNvbmIgYWxzbyBzdXBwb3J0cyAKaW5kZXhpbmcsIHdoaWNoIGNhbiBiZSBhIHNpZ25pZmljYW50IGFkdmFudGFnZS4KCkJlY2F1c2UgdGhlIGpzb24gdHlwZSBzdG9yZXMgYW4gZXhhY3QgY29weSBvZiB0aGUgaW5wdXQgdGV4dCwgaXQgd2lsbCBwcmVzZXJ2ZSBzZW1hbnRpY2FsbHktaW5zaWduaWZpY2FudCB3aGl0ZSBzcGFjZSAKYmV0d2VlbiB0b2tlbnMsIGFzIHdlbGwgYXMgdGhlIG9yZGVyIG9mIGtleXMgd2l0aGluIEpTT04gb2JqZWN0cy4gQWxzbywgaWYgYSBKU09OIG9iamVjdCB3aXRoaW4gdGhlIHZhbHVlIGNvbnRhaW5zIHRoZSAKc2FtZSBrZXkgbW9yZSB0aGFuIG9uY2UsIGFsbCB0aGUga2V5L3ZhbHVlIHBhaXJzIGFyZSBrZXB0LiAoVGhlIHByb2Nlc3NpbmcgZnVuY3Rpb25zIGNvbnNpZGVyIHRoZSBsYXN0IHZhbHVlIGFzIHRoZSAKb3BlcmF0aXZlIG9uZS4pIEJ5IGNvbnRyYXN0LCBqc29uYiBkb2VzIG5vdCBwcmVzZXJ2ZSB3aGl0ZSBzcGFjZSwgZG9lcyBub3QgcHJlc2VydmUgdGhlIG9yZGVyIG9mIG9iamVjdCBrZXlzLCBhbmQgZG9lcyAKbm90IGtlZXAgZHVwbGljYXRlIG9iamVjdCBrZXlzLiBJZiBkdXBsaWNhdGUga2V5cyBhcmUgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCwgb25seSB0aGUgbGFzdCB2YWx1ZSBpcyBrZXB0LgoKSW4gZ2VuZXJhbCwgbW9zdCBhcHBsaWNhdGlvbnMgc2hvdWxkIHByZWZlciB0byBzdG9yZSBKU09OIGRhdGEgYXMganNvbmIsIHVubGVzcyB0aGVyZSBhcmUgcXVpdGUgc3BlY2lhbGl6ZWQgbmVlZHMsIHN1Y2ggCmFzIGxlZ2FjeSBhc3N1bXB0aW9ucyBhYm91dCBvcmRlcmluZyBvZiBvYmplY3Qga2V5cy4KCkpTT05CIGlzIGEgImJldHRlciIgdmVyc2lvbiBvZiBKU09OLgoKTGV0J3MgbG9vayBhdCBhbiBleGFtcGxlOgoKLSBKU09OCgohW2ltZy5wbmddKHNjcmVlbnNob3RzLzE5X2pzb25fZGF0YV90eXBlX2V4YW1wbGUucG5nKQoKLSBKU09OQgoKIVtpbWcucG5nXShzY3JlZW5zaG90cy8yMF9qc29uYl9kYXRhX3R5cGVfZXhhbXBsZS5wbmcpCgpJbiBzdW1tYXJ5LAoKMS4gSlNPTiBzdG9yZXMgd2hpdGUgc3BhY2UsIGFuZCB0aGF0IGlzIHdoeSB3ZSBjYW4gc2VlIHNwYWNlcyB3aGVuIGtleSAiYSIgaXMgc3RvcmVkLCB3aGlsZSBKU09OQiBkb2VzIG5vdC4KMi4gSlNPTiBzdG9yZXMgYWxsIHRoZSB2YWx1ZXMgb2YgYSBrZXkuIFRoaXMgaXMgdGhlIHJlYXNvbiB5b3UgY2FuIHNlZSBtdWx0aXBsZSB2YWx1ZXMgKDIgYW5kIDEpIGFnYWluc3QgdGhlIGtleSAiYSIsIHdoaWxlIEpTT05CIG9ubHkgInN0b3JlcyIgdGhlIGxhc3QgdmFsdWUuCjMuIEpTT04gbWFpbnRhaW5zIHRoZSBvcmRlciBpbiB3aGljaCBlbGVtZW50cyBhcmUgaW5zZXJ0ZWQsIHdoaWxlIEpTT05CIG1haW50YWlucyB0aGUgInNvcnRlZCIgb3JkZXIuCjQuIEpTT05CIG9iamVjdHMgYXJlIHN0b3JlZCBhcyBhIGRlY29tcHJlc3NlZCBiaW5hcnkgYXMgb3Bwb3NlZCB0byAicmF3IGRhdGEiIGluIEpTT04sIHdoZXJlIG5vIHJlcGFyc2luZyBvZiBkYXRhIGlzIHJlcXVpcmVkIGR1cmluZyByZXRyaWV2YWwuCjUuIEpTT05CIGFsc28gc3VwcG9ydHMgaW5kZXhpbmcsIHdoaWNoIGNhbiBiZSBhIHNpZ25pZmljYW50IGFkdmFudGFnZS4KCiMjIyBKU09OIEZ1bmN0aW9ucyBhbmQgT3BlcmF0b3JzCgpUaGlzIHNlY3Rpb24gZGVzY3JpYmVzOgoKLSBmdW5jdGlvbnMgYW5kIG9wZXJhdG9ycyBmb3IgcHJvY2Vzc2luZyBhbmQgY3JlYXRpbmcgSlNPTiBkYXRhCi0gdGhlIFNRTC9KU09OIHBhdGggbGFuZ3VhZ2UKClRvIHByb3ZpZGUgbmF0aXZlIHN1cHBvcnQgZm9yIEpTT04gZGF0YSB0eXBlcyB3aXRoaW4gdGhlIFNRTCBlbnZpcm9ubWVudCwgUG9zdGdyZVNRTCBpbXBsZW1lbnRzIHRoZSBTUUwvSlNPTiBkYXRhIG1vZGVsLiAKVGhpcyBtb2RlbCBjb21wcmlzZXMgc2VxdWVuY2VzIG9mIGl0ZW1zLiBFYWNoIGl0ZW0gY2FuIGhvbGQgU1FMIHNjYWxhciB2YWx1ZXMsIHdpdGggYW4gYWRkaXRpb25hbCBTUUwvSlNPTiBudWxsIHZhbHVlLCAKYW5kIGNvbXBvc2l0ZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCB1c2UgSlNPTiBhcnJheXMgYW5kIG9iamVjdHMuIFRoZSBtb2RlbCBpcyBhIGZvcm1hbGl6YXRpb24gb2YgdGhlIGltcGxpZWQgZGF0YSBtb2RlbCAKaW4gdGhlIEpTT04gc3BlY2lmaWNhdGlvbi4KClNRTC9KU09OIGFsbG93cyB5b3UgdG8gaGFuZGxlIEpTT04gZGF0YSBhbG9uZ3NpZGUgcmVndWxhciBTUUwgZGF0YSwgd2l0aCB0cmFuc2FjdGlvbiBzdXBwb3J0LCBpbmNsdWRpbmc6CgotIFVwbG9hZGluZyBKU09OIGRhdGEgaW50byB0aGUgZGF0YWJhc2UgYW5kIHN0b3JpbmcgaXQgaW4gcmVndWxhciBTUUwgY29sdW1ucyBhcyBjaGFyYWN0ZXIgb3IgYmluYXJ5IHN0cmluZ3MuCi0gR2VuZXJhdGluZyBKU09OIG9iamVjdHMgYW5kIGFycmF5cyBmcm9tIHJlbGF0aW9uYWwgZGF0YS4KLSBRdWVyeWluZyBKU09OIGRhdGEgdXNpbmcgU1FML0pTT04gcXVlcnkgZnVuY3Rpb25zIGFuZCBTUUwvSlNPTiBwYXRoIGxhbmd1YWdlIGV4cHJlc3Npb25zLgoKIyMjIE9wZW5BUEkgU3BlY2lmaWNhdGlvbgoKaHR0cDovL2xvY2FsaG9zdDo5MDkxL215LWFwcGxpY2F0aW9uL3N3YWdnZXItdWkvaW5kZXguaHRtbAoKIVtpbWcucG5nXShzY3JlZW5zaG90cy8yMV9vcGVuYXBpX3N3YWdnZXJfc3BlY2lmaWNhdGlvbnMucG5nKQoKIyMjIERpc2FibGUgT3BlbkFQSSBTd2FnZ2VyIGZvciBQcm9kdWN0aW9uIEVudmlyb25tZW50CgpXZSBjYW4gZGlzYWJsZSBPcGVuQVBJIHN3YWdnZXIgZm9yIGFueSBlbnZpcm9ubWVudCBiYXNlZCB1cG9uIHByb2ZpbGVzLiBXZSBjYW4gc3VwcGx5IGEgVk0gYXJndW1lbnQgCictRHNwcmluZy5wcm9maWxlcy5hY3RpdmU9PGVudmlyb25tZW50IG5hbWU+JyB0byB0aGUgYXBwbGljYXRpb24gY29uZmlndXJhdGlvbnMuClVzaW5nIHNwcmluZyBwcm9maWxlIGFubm90YXRpb24gQFByb2ZpbGUoInByb2QiKSwgd2UgY2FuIGNvbnRyb2wgdGhlIGRpc3BsYXkgb2Ygc3dhZ2dlci4KCi0gVk0gQXJndW1lbnQKCiFbaW1nLnBuZ10oc2NyZWVuc2hvdHMvMjJfdm1fYXJndW1lbnRfc3ByaW5nX2FjdGl2ZV9wcm9maWxlLnBuZykKCklmIHRoZSB2YWx1ZSBvZiBzcHJpbmcgcHJvZmlsZSBpcyAncHJvZCcsIHRoZW4gc3dhZ2dlciB3b24ndCBiZSBhdmFpbGFibGUuIFBsZWFzZSByZWZlciB0aGUgYmVsb3cgc2NyZWVuc2hvdDoKCiFbaW1nLnBuZ10oc2NyZWVuc2hvdHMvMjNfc3dhZ2dlcl9ub3RfYXZhaWxhYmxlLnBuZykKClJlZmVyZW5jZXM6CgotIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvY3VycmVudC9kYXRhdHlwZS1qc29uLmh0bWwKLSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzL2N1cnJlbnQvZnVuY3Rpb25zLWpzb24uaHRtbAo= readmeEtag: '"dca96c49d87c408f4d74578cada0f7a61dcfe458"' readmeLastModified: Thu, 26 Oct 2023 18:27:53 GMT repositoryId: 704453985 description: >- Spring boot application to demonstrate the JSONB data type to be used in Postgre SQL database using Springboot JPA. created: '2023-10-13T09:40:28Z' updated: '2026-01-15T05:24:49Z' language: Java archived: false stars: 4 watchers: 1 forks: 1 owner: deepakbhalla logo: https://avatars.githubusercontent.com/u/6603640?v=4 repoEtag: '"a6cd6654a116a2f849d56ddba14c229bc62711703ad55081d93bbbf16a65d181"' repoLastModified: Thu, 15 Jan 2026 05:24:49 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/progremir/django-swagger-render v3: true repositoryMetadata: base64Readme: >- IyBEamFuZ28gU3dhZ2dlciBSZW5kZXIKCiMjIEdldHRpbmcgU3RhcnRlZAoKIyMjIFByZXJlcXVpc2l0ZXMKCi0gcHl0aG9uID49IDMuNQotIERqYW5nbyA+PSAyLjAKCiMjIyBJbnN0YWxsYXRpb24KCkluc3RhbGwgdXNpbmcgcGlwCgpgYGAKcGlwIGluc3RhbGwgZGphbmdvLXN3YWdnZXItcmVuZGVyCmBgYAoKQWRkICdzd2FnZ2VyX3JlbmRlcicgdG8geW91ciBJTlNUQUxMRURfQVBQUyBzZXR0aW5nLgoKYGBgCklOU1RBTExFRF9BUFBTID0gWwogICAgLi4uCiAgICAnc3dhZ2dlcl9yZW5kZXInLApdCmBgYAoKQ3JlYXRlIHRoZSBmb2xkZXIgd2hlcmUgeW91IHdpbGwgc3RvcmUgeW91ciBkb2N1bWVudGF0aW9uCgpgYGAKbWtkaXIgZG9jcwpgYGAKCkNyZWF0ZSB0aGUgYGluZGV4LnltbGAgZmlsZSB3aXRoIHNvbWUgYE9QRU5BUElgIG9yIGBTd2FnZ2VyYCBzcGVjaWZpY2F0aW9ucwoKYGBgCnRvdWNoIGRvY3MvaW5kZXgueW1sCmBgYAoKU2VydmUgeW91ciBkb2N1bWVudGF0aW9uIGZpbGVzCmBgYAp1cmxwYXR0ZXJucyArPSBzdGF0aWMoJy9kb2NzLycsIGRvY3VtZW50X3Jvb3Q9J2RvY3MnKQpgYGAKCkFkZCBgU1dBR0dFUl9ZQU1MX0ZJTEVOQU1FYCBzZXR0aW5nIHRvIHlvdXIgYHNldHRpbmdzLnB5YAoKYGBgClNXQUdHRVJfWUFNTF9GSUxFTkFNRSA9ICcvZG9jcy9pbmRleC55bWwnCmBgYAoKQWRkIHRoZSBgU3dhZ2dlclVJVmlld2AgdG8geW91ciB1cmxzCgpgYGAKZnJvbSBzd2FnZ2VyX3JlbmRlci52aWV3cyBpbXBvcnQgU3dhZ2dlclVJVmlldwoKCnVybHBhdHRlcm5zID0gWwogICAgLi4uCiAgICBwYXRoKCdzd2FnZ2VyLycsIFN3YWdnZXJVSVZpZXcuYXNfdmlldygpKSwKXQpgYGAKClZvaWxhIQo= readmeEtag: '"880cca32dd57b1eb6398cdcd4c9d9d75e3e3982d"' readmeLastModified: Sat, 27 Jun 2020 11:25:49 GMT repositoryId: 200704843 description: Swagger documentation in Django created: '2019-08-05T18:04:35Z' updated: '2023-07-21T06:43:55Z' language: HTML archived: false stars: 5 watchers: 2 forks: 2 owner: progremir logo: https://avatars.githubusercontent.com/u/17231674?v=4 license: MIT repoEtag: '"0ed75eb58e4fc40f5ce3c1ccfe68e6349430b92d6db5726a60c1810603b92f94"' repoLastModified: Fri, 21 Jul 2023 06:43:55 GMT foundInMaster: true category: - Description Validators - Server Implementations id: e98db438e3bce57985e796d2d2a012e2 - source: openapi3 tags repository: https://github.com/shakibmostahid/writing-swagger v3: true id: bff913362ef7940f3409c2d9e378af3a repositoryMetadata: base64Readme: >- IyBXaGF0IGlzIFN3YWdnZXIgRG9jdW1lbnRhdGlvbj8gCgpTd2FnZ2VyIGlzIHRoZSBzdGFuZGFyZCB3YXkgb2YgZG9jdW1lbnRpbmcgUkVTVCBBUElzLiAqU3dhZ2dlciBpcyBhIHNldCBvZiBvcGVuLXNvdXJjZSB0b29scyBidWlsdCBhcm91bmQgdGhlICoqT3BlbkFQSSBTcGVjaWZpY2F0aW9uKiogdGhhdCBjYW4gaGVscCB0byBkZXNpZ24sIGJ1aWxkLCBkb2N1bWVudCBhbmQgY29uc3VtZSBSRVNUIEFQSXMuKiBUaGlzIGlzIGEgcG9wdWxhciBmcmFtZXdvcmsgd2hpY2ggdXNlZCBmb3IgZG9jdW1lbnRpbmcgdGhlIEFQSXMgaW4gYSBjb21tb24gZm9ybWF0LgoKVG8gbGVhcm4gbW9yZSBhYm91dCBTd2FnZ2VyLCBwbGVhc2UgZm9sbG93IHRoZSBbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9hYm91dC8gImRvY3VtZW50YXRpb24iKS4KCiMgV2h5IGlzIFN3YWdnZXIgaXMgaGVscGZ1bD8gCgpXZSBjYW4gdGhpbmsgc3dhZ2dlciBkb2N1bWVudGF0aW9uIGFzIGEgYmx1ZXByaW50IG9mIHRoZSBBUElzLiBCeSBjaGVja2luZyB0aGUgYmx1ZXByaW50IGRldmVsb3BlciBjYW4gZ2V0IGFuIGlkZWEgb2YgdGhlIHRhc2sgb2YgYW4gQVBJLiBTd2FnZ2VyIGdpdmVzIGEgdmlzdWFsIGlkZWEgb2YgdGhlIEFQSXMsIHdoZXJlIHVzZXIgZG9lc27igJl0IG5lZWQgdG8ga25vdyB3aGF0IHRlY2hub2xvZ2llcyBpcyBiZWluZyB1c2VkIHRvIGRldmVsb3AgdGhlIEFQSXMuIEFQSSBpcyBkb2N1bWVudGVkIGluIGEgY29tbW9uIGZvcm1hdCBpbiBzd2FnZ2VyIHdoZXJlIEhUVFAgVmVyYiwgcmVzb3Buc2Ugc2FtcGxlcywgcmVxdWVzdCBzYW1wbGVzLCBkZXNjcmlwdGlvbiwgZXRjIGlzIHByZXNlbnQuIHNvIGFueW9uZSBjYW4gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgQVBJIGp1c3QgYnkgY2hlY2tpbmcgaXQuIAoKIyBIb3cgdG8gV3JpdGUgU3dhZ2dlciBEb2N1bWVudGF0aW9uPwoKU3dhZ2dlciBjYW4gYmUgd3JpdHRlbiBpbiB5bWwgYW5kIGpzb24uIFdlIHdpbGwgdXNlIHltbCBoZXJlLiBBbmQsIHdlIHdpbGwgdXNlIFtTd2FnZ2VyIEVkaXRvciB0b29sXShodHRwczovL2VkaXRvci5zd2FnZ2VyLmlvLyAiU3dhZ2dlciBFZGl0b3IgdG9vbCIpIHRvIHdyaXRlIHRoZSBkb2N1bWVudGF0aW9uLiBIZXJlLCB3ZSB3aWxsIHVzZSBhbiBleGFtcGxlIG9mIFVzZXIgTWFuYWdlbWVudCBBUElzLCB3aGVyZSB1c2VyIGRldGFpbHMgY2FuIGJlIFJldHJpZXZlZCwgVXBkYXRlZCBhbmQgRGVsZXRlZC4KCiMjIyMgTGV04oCZcyBTdGFydDoKLSBGaXJzdCB3ZSBuZWVkIHRvIGRlZmluZSB0aGUgT3BlbkFQSSB2ZXJzaW9uLCBoZXJlIHdlIHdpbGwgdXNlIHZlcnNpb24gMy4KCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKYGBgCi0gVGhlbiB3ZSBuZWVkIHRvIGFkZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvamVjdHMuCgpgYGB5YW1sCmluZm86CiAgdGl0bGU6IFVzZXIgTWFuYWdlbWVudCBBUElzCiAgZGVzY3JpcHRpb246IFRoaXMgaXMgYSBzYW1wbGUgcHJvamVjdCBmb3IgbWFuYWdpbmcgdXNlcnMuCiAgY29udGFjdDoKICAgIG5hbWU6IEpvaG4gRG9lCiAgICBlbWFpbDogam9obkBleGFtcGxlLmNvbQogIHZlcnNpb246ICIxLjAiCmBgYApIZXJlLCBgaW5mb2AgYXR0cmlidXRlIGhvbGRzIHRoZSBwcm9qZWN0cyBpbmZvcm1hdGlvbi4gYHRpdGxlYCByZXByZXNlbnRzIHByb2plY3QgdGl0bGUuIGB2ZXJzaW9uYCByZXByZXNudHMgdGhlIEFQSSB2ZXJzaW9uLgoKLS0tLS0tLS0tLS0tCgotIE5vdywgd2Ugd2lsbCBhZGQgdGhlIHByb3RvY29sIGFuZCBkb21haW4gb2Ygb3VyIEFQSSwgYWxzbyB3ZSB3aWxsIGFkZCBvdGhlciBmaXhlZCByZW91cmNlc2VzIHdoaWNoIGlzIGZpeGVkIGZvciBhbGwgdGhlIEFQSXMgbGlrZSBBUEkgdmVyc2lvbi4gQWxsIHRoZSBpbmZvcm1hdGlvbiB3aWxsIGJlIHVuZGVyIGBzZXJ2ZXJzYCBhdHRyaWJ1dGUuCgogYGBgeWFtbAogc2VydmVyczoKIC0gdXJsOiBodHRwczovL2V4YW1wbGUuY29tL3YxCiBgYGAKSGVyZSwgd2UgaGF2ZSBzZXQgb3VyIEFQSSBkb21haW4gVVJMIGZvciBIVFRQUyBwcm90b2NvbC4gU28sIHdoYXQgd2lsbCBoYXBwZW4gaWYgb3VyIEFQSSBzdXBwb3J0cyBib3RoIEhUVFAgYW5kIEhUVFBTLiBIb3cgd2lsbCB3ZSBhZGQgSFRUUCBwcm90b2NvbCBoZXJlPwpXZSBjYW4gc2ltcGx5IGFkZCBhbm90aGVyIHZhbHVlIGhlcmUgaW4gdGhlIGFycmF5LgoKIGBgYHlhbWwKIHNlcnZlcnM6CiAtIHVybDogaHR0cHM6Ly9leGFtcGxlLmNvbS92MQogLSB1cmw6IGh0dHA6Ly9leGFtcGxlLmNvbS92MQogYGBgCm5vdywgc3dhZ2dlciB3aWxsIHNob3cgdXMgYm90aCBvZiB0aGUgc2VydmVycyBpbmZvcm1hdGlvbiBpbiBhIGRyb3Bkb3duLgoKLSB3aGF0IGhhcHBlbnMgaWYgd2UgaGF2ZSBtdWx0aXBsZSBkb21haW4gbmFtZXM/IFdlIGNhbiBhZGQgbW9yZSB2YWx1ZXMgaW50byB0aGUgYXJyYXkuIEJ1dCB0aGVyZeKAmXMgYW5vdGhlciB3YXkuIFdlIGNhbiB1c2UgdmFyaWFibGVzIGF0dHJpYnV0ZSB0byBtYWtlIGl0IG1vcmUgZHluYW1pYy4KCmBgYHlhbWwKc2VydmVyczoKLSB1cmw6ICJ7cHJvdG9jb2x9Oi8ve2Jhc2VfdXJsfS92MSIKICB2YXJpYWJsZXM6CiAgICBwcm90b2NvbDoKICAgICAgZGVmYXVsdDogaHR0cHMKICAgICAgZW51bToKICAgICAgICAtIGh0dHBzCiAgICAgICAgLSBodHRwCiAgICBiYXNlX3VybDoKICAgICAgZGVmYXVsdDogZXhhbXBsZS5jb20KICAgICAgZW51bToKICAgICAgICAtIGV4YW1wbGUuY29tCiAgICAgICAgLSBiZC5leGFtcGxlLmNvbQpgYGAKCmhlcmUsIHdlIGRlZmluZWQgYHByb3RvY29sYCBhbmQgYGJhc2VfdXJsYCBhcyB2YXJpYWJsZSBpbnRvIGN1cmx5IGJyYWNlcywgdGhlc2UgdmFyaWFibGUgbmFtZSBjYW4gYmUgYW55dGhpbmcuIFRoZW4gd2Ugc2V0IHRoZSB2YWx1ZSBvZiB0aGVzZSB1bmRlciBgdmFyaWFibGVzYCBhdHRyaWJ1dGUuCkFmdGVyIHNldHRpbmcgdGhlIHZhbHVlcyB3ZSBjYW4gc2VlIG11bHRpcGxlIGRyb3Bkb3ducyBmb3IgZWFjaCB2YXJpYWJsZS4KCi0tLS0tLS0tLS0tLQoKIyMjIyBOb3cgYWZ0ZXIgYWRkaW5nIHRoZXNlIGxpbmVzIGludG8gc3dhZ2dlciBlZGl0b3IsIHRoZSBvdXRwdXQgd2lsbCBiZSBhcyBiZWxvdzoKCiFbc3dhZ2dlcl9zZXJ2ZXJzX291dHB1dF0oaHR0cHM6Ly9naXRodWIuY29tL3NoYWtpYm1vc3RhaGlkL3dyaXRpbmctc3dhZ2dlci9ibG9iL21haW4vaW1hZ2VzL3N3YWdnZXJfMS5wbmc/cmF3PXRydWUpCgotLS0tLS0tLS0tLS0KCiMjIyMgV2UgbmVlZCB0byBhZGQgdGhlIHBhdGhzIGluZm9ybWF0aW9uLgoKLSBOb3csIHdlIHdpbGwgYWRkIHRoZSBBUEkgZGV0YWlscyB1bmRlciBgcGF0aHNgIGF0dHJpYnV0ZS4gV2Ugd2lsbCBhZGQgdGhlIEFQSSBzdW1tYXJ5IGFuZCByZXBvbnNlIHNhbXBsZSBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gRm9yIGV4YW1wbGUgd2UgaGF2ZSBhbiBBUEkgZm9yIGdldHRpbmcgY3VzdG9tZXIgaW5mb3JtYXRpb24gZm9yIGdpdmVuIElELCB3ZSB3aWxsIGFkZCBpbmZvcm1hdGlvbiBmb3IgaXQ6CgpgYGB5YW1sCnBhdGhzOgogIC91c2Vycy8xOgogICAgZ2V0OgogICAgICBzdW1tYXJ5OiBHZXQgVXNlciBkZXRhaWxzCiAgICAgIG9wZXJhdGlvbklkOiBnZXRVc2VyCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAyMDA6CiAgICAgICAgICBkZXNjcmlwdGlvbjogQVBJIHRvIGZldGNoIHRoZSB1c2VyIGluZm9ybWF0aW9uIGJ5IHVzZXIgaWQuCiAgICAgICAgICBoZWFkZXJzOgogICAgICAgICAgICBDYWNoZS1Db250cm9sOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgZXhhbXBsZTogbm8tY2FjaGUsIHByaXZhdGUKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgICBpZDoKICAgICAgICAgICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICAgICAgICAgICAgZXhhbXBsZTogMQogICAgICAgICAgICAgICAgICBmaXJzdF9uYW1lOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICAgIGV4YW1wbGU6IEphbGlsCiAgICAgICAgICAgICAgICAgIGxhc3RfbmFtZToKICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgICBleGFtcGxlOiBVZGRpbgogICAgICAgICAgICAgICAgICBhZGRyZXNzOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgICAgICBhcmVhOgogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZTogTWlycHVyCiAgICAgICAgICAgICAgICAgICAgICBjaXR5OgogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZTogRGhha2EKICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlOiBCYW5nbGFkZXNoCmBgYAoKaGVyZSwgd2UgaGF2ZSBzZXQgb3VyIEFQSSBwYXRoIGBjdXN0b21lcnMvMWAgdW5kZXIgYHBhdGhzYCBhdHRyaWJ1dGUuIFRoZW4gd2UgaGF2ZSBkZWZpbmUgdGhlIHJlcXVlc3QgdHlwZS4gVGhpcyBpcyBhIEdFVCByZXF1ZXN0IHNvLCB3ZSBoYXZlIGRlZmluZSBpdCBhcyBgZ2V0YC4KVGhlbiB3ZSBoYXZlIHNldCBhIHNob3J0IHN1bW1hcnkgZm9yIHRoaXMgQVBJIGluIGBzdW1tYXJ5YCBhdHRyaWJ1dGUuIGBvcGVyYXRpb25JZGAgcmVwcmVzZW50cyB0aGUgaWRlbnRpdHkgb2YgdGhlIG9wZXJhdGlvbiwgdGhpcyBzaG91bGQgYmUgdW5pcXVlLgpUaGVuIHdlIGhhdmUgYWRkZWQgcmVzcG9uc2UgZGV0YWlscyB1bmRlciBgcmVzcG9uc2VzYCBhdHRyaWJ1dGUuCkZpcnN0IHdlIG5lZWQgdG8gZGVmaW5lIHRoZSBzdGF0dXMgY29kZXMsIHRoZXJlIGNhbiBiZSBtdWx0aXBsZSByZXNwb25zZXMgd2l0aCBkaWZmZXJlbnQgc3RhdHVzIGNvZGUuIEhlcmUgd2UgaGF2ZSBzZXQgb25seSBvbmUgZm9yIGAyMDBgIHN0YXR1cywgd2Ugd2lsbCBhZGQgb25lIGVycm9yIHJlc3BvbnNlIGxhdGVyLgpUaGUgcmVzcG9uc2UgYm9keSBuZWVkcyB0byBkZWZpbmUgdW5kZXIgYGNvbnRlbnRgIGF0dHJpYnV0ZS4KV2UgbmVlZCB0byBhZGQgdGhlIGNvbnRlbnQgdHlwZSBoZXJlOyB3ZSBoYXZlIGFkZGVkIGBhcHBsaWNhdGlvbi9qc29uYCBhcyBjb250ZW50IHR5cGUuClRoZW4sIHJlc3BvbnNlIHNjaGVtYSBuZWVkcyB0byBkZWZpbmUgdW5kZXIgYHNjaGVtYWAgYXR0cmlidXRlLgpvdXIgcmVzcG9uc2UgaXMgYSBKU09OIG9iamVjdCwgdGhhdOKAmXMgd2h5IHdlIGhhdmUgc2V0IGB0eXBlOiBvYmplY3RgLiBBcyB3ZSBoYXZlIHNldCB0eXBlID0gb2JqZWN0IHNvLCB3ZSBuZWVkIHRvIGRlZmluZSB0aGUgb2JqZWN0IGRldGFpbHMgdW5kZXIgYHByb3BlcnRpZXNgIGF0dHJpYnV0ZS4KCi0tLS0tLS0tLS0tLQoKLSBOb3csIHdlIHdpbGwgYWRkIHRoZSBoZWFkZXJzIGluZm8gZm9yIHRoZSBzdWNjZXNzIHJlc3BvbnNlLiBXZSBoYXZlIHNldCB0aGUgcmVzcG9uc2UgZXhhbXBsZSB1bmRlciBgY29udGVudGAgYXR0cmlidXRlIG9mIGAyMDBgIHN0YXR1cywgd2Ugd2lsbCBhZGQgdGhlIGhlYWRlcnMgaW5mb3JtYXRpb25zIHVuZGVyIGBoZWFkZXJzYCBhdHRyaWJ1dGUgb2YgYDIwMGAgc3RhdHVzOgoKYGBgeWFtbApoZWFkZXJzOgogIENhY2hlLUNvbnRyb2w6CiAgICBzY2hlbWE6CiAgICAgIHR5cGU6IHN0cmluZwogICAgICBleGFtcGxlOiBuby1jYWNoZSwgcHJpdmF0ZQogIERhdGU6CiAgICBzY2hlbWE6CiAgICAgIHR5cGU6IHN0cmluZwogICAgICBleGFtcGxlOiBUaHUsIDE3IE5vdiAyMDIyIDA5OjUyOjEwIEdNVApgYGAKV2UgaGF2ZSBhZGRlZCBvbmx5IHR3byBoZWFkZXJzLCB3ZSBjYW4gYWRkIGFzIG1hbnkgaGVhZGVycyBhcyB3ZSB3YW50LgoKIyMjIyBOb3cgYWZ0ZXIgYWRkaW5nIHRoZSByZXNwb25zZSBleGFtcGxlIGxpbmVzIGludG8gc3dhZ2dlciBlZGl0b3IsIHRoZSBvdXRwdXQgd2lsbCBiZSBhcyBiZWxvdzoKCiFbc3dhZ2dlcl9yZXNwb25zZV9vdXRwdXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zaGFraWJtb3N0YWhpZC93cml0aW5nLXN3YWdnZXIvYmxvYi9tYWluL2ltYWdlcy9zd2FnZ2VyXzIucG5nP3Jhdz10cnVlKQoKLS0tLS0tLS0tLS0tCgotIFdlIG1pZ2h0IG5lZWQgdGhlIGV4YW1wbGUgb2YgYHVzZXJgIG9iamVjdCBvbiBvdGhlcnMgQVBJLiBGb3IgZXhhbXBsZSwgd2Ugd2lsbCByZXR1cm4gdGhlIHNhbWUgdXNlciBvYmplY3QgYWZ0ZXIgY3JlYXRpbmcgYW4gdXNlci4gVGhlbiB3aGF0IHdlIGNhbiBkbyBpcyBjb3B5IHBhc3RpbmcgdGhlIHJlc3BvbnNlIGNvbnRlbnQuIFRoYXQgd291bGQgZGVmaW5pdGVseSB3b3JrLCBidXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGtlZXBzIGluY3JlYXNpbmcuIEl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBjYW4gYXZvaWQgdGhlIGR1cGxpY2F0aW9uLgpUaGUgc29sdXRpb24gZm9yIHRoaXMgcHJvYmxlbSBpcyB0byBhZGQgY29tbW9uIGRlZmluaXRpb25zIGluIHRoZSBnbG9iYWwgYGNvbXBvbmVudHNgIGF0dHJpYnV0ZSBhbmQgYWRkIHRoZSByZWZlcmVuY2VzIHVzaW5nIGAkcmVmYCBvZiB0aGUgZGVmaW5pdGlvbnMgd2hlcmV2ZXIgd2UgbmVlZC4gCkxldCdzIHdyaXRlIHRoZSB1c2VyIHNjaGVtYSB1bmRlciBgY29tcG9uZW50c2AgYXR0cmlidXRlOgoKYGBgeWFtbApjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBVc2VyOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIGV4YW1wbGU6IDEKICAgICAgICBmaXJzdF9uYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiBKYWxpbAogICAgICAgIGxhc3RfbmFtZToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgZXhhbXBsZTogVWRkaW4KICAgICAgICBhZGRyZXNzOgogICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICBhcmVhOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgIGV4YW1wbGU6IE1pcnB1cgogICAgICAgICAgICBjaXR5OgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgIGV4YW1wbGU6IERoYWthCiAgICAgICAgICAgIGNvdW50cnk6CiAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgZXhhbXBsZTogQmFuZ2xhZGVzaApgYGAKCkhlcmUgd2UgaGF2ZSBhZGRlZCB0aGUgdXNlciBkZXRhaWxzIHVuZGVyIGBzY2hlbWFzYCBhdHJyaWJ1dGUgd2hpY2ggcGFyZW50IGVsZW1lbnQgaXMgYGNvbXBvbmVudHNgLiBXZSBoYXZlIG5hbWVkIG91ciBzY2hlbWEgd2l0aCBgVXNlcmAuIFRoZW4gd2UgaGF2ZSBhZGRlZCB0aGUgc2NoZW1hIGRldGFpbHMuIAoKTm93LCBvdXIgbmV4dCB0YXNrIGlzIHRvIGFkZCB0aGUgcmVmZXJlbmNlcyBpbiB0aGUgc3VjY2VzcyByZXNwb25zZSBjb250ZW50LiBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgdXNlciBzY2hlbWEgZnJvbSB0aGVyZSwgYW5kIG5lZWQgdG8gYWRkIG9ubHkgb25lIGxpbmUgdG8gcmVmZXIgdGhlIG9iamVjdC4gU28gdGhlIGNoYW5nZXMgd291bGQgYmUgbGlrZTogCgpgYGB5YW1sCmNvbnRlbnQ6CiAgYXBwbGljYXRpb24vanNvbjoKICAgIHNjaGVtYToKICAgICAgIiRyZWYiOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvVXNlciIKYGBgCgpXZSBoYXZlIGp1c3Qgc2V0IHRoZSByZWZlcmVuY2UgdW5kZXIgYHNjaGVtYWAgYnkgc2V0dGluZyB0aGUgdmFsdWUgb2YgYCRyZWZgIGF0dHJpYnV0ZS4gVGhlIGZvcm1hdCBpcyBgIy9jb21wb25lbnRzLzx0eXBlPi88T2piZWN0TmFtZT5gLiBPdXIgdHlwZSBpcyBgc2NoZW1hc2AgYW5kIG91ciBvYmplY3QgbmFtZSBpcyBgVXNlcmAuIFRoYXQncyB3aHkgd2UgaGF2ZSBzZXQgdGhlIHZhbHVlIGAjL2NvbXBvbmVudHMvc2NoZW1hcy9Vc2VyYC4KCkFmdGVyIGFkZGluZyB0aGVzZSBjaGFuZ2VzLCB0aGUgcmVzcG9uc2Ugb2JqZWN0IHdvdWxkIGJlIGFzIHByZXZpb3VzLiBCdXQgdGhlcmUgd2lsbCBiZSBzaG93biBhIG5ldyBjb21wb25lbnQgbmFtZWQgYFNjaGVtYXNgLgpUaGF0IHdvdWxkIGxvb2sgbGlrZToKCiFbc3dhZ2dlcl9zY2hlbWFfb3V0cHV0XShodHRwczovL2dpdGh1Yi5jb20vc2hha2libW9zdGFoaWQvd3JpdGluZy1zd2FnZ2VyL2Jsb2IvbWFpbi9pbWFnZXMvc3dhZ2dlcl8zLnBuZz9yYXc9dHJ1ZSkKCi0tLS0tLS0tLS0tLQoKLSBJbiB0aGUgZXhhbXBsZSwgd2UgaGF2ZSB1c2VkIHVzZXIncyBgaWRgIGluIHBhdGggd2l0aCB0aGUgdmFsdWUgMS4gU28sIHRoZSBwYXRoIGJlY29tZSwgYC91c2Vycy8xYCwgd2hpY2ggbG9va3MgbGlrZSBhIHN0YXRpYyByb3V0ZS4gQnV0IG91ciByb3V0ZSBpcyBkeW5hbWljIGFuZCBpdCBpcyBiYXNlZCBvbiB0aGUgdXNlcidzIHVuaXF1ZSBpZC4gU3dhZ2dlciBnaXZlIHVzIHRoZSBhYmlsaXR5IHRvIG1ha2UgdGhlIHBhdGggZHluYW1pYy4gV2UgbmVlZCB0byBhZGQgcGxhY2Vob2xkZXIgaW4gdGhlIGBpZGAgcG9ydGlvbi4gVG8gYWRkIHBsYWNlIGhvbGRlciB3ZSB1c2UgY3VybHkgYnJhY2VzIGB7fWAsIGFuZCBpbnNpZGUgdGhlIGN1cmx5IGJyYWNlcyB3ZSBhZGQgdGhlIHZhcmlhYmxlIG5hbWUuIE5vdywgd2Ugd2lsbCBtYWtlIGNoYW5nZXMgaW4gdGhlIGBwYXRoYCBzZWN0aW9uIGxpa2UgdGhpczoKCmBgYHlhbWwKcGF0aDoKICB1c2Vycy97aWR9OgogICAgZ2V0OgpgYGAKCk5vdyBhZnRlciBhZGRpbmcgdGhpcywgd2Ugd2lsbCBzZWUgYW4gc2VtYW50aWMgZXJyb3Igc2F5aW5nIGBEZWNsYXJlZCBwYXRoIHBhcmFtZXRlciAiaWQiIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYSBwYXRoIHBhcmFtZXRlciBhdCBlaXRoZXIgdGhlIHBhdGggb3Igb3BlcmF0aW9uIGxldmVsYC4KClRvIGZpeCB0aGUgZXJyb3IsIHdlIG5lZWQgdG8gYWRkIHNldCB0aGUgaW5mb3JtYXRpb24gZm9yIHRoZSBge2lkfWAgaW4gdGhlIGBwYXJhbWV0ZXJzYCBhdHRyaWJ1dGUuIFdlIGNhbiBoYXZlIG11bHRpcGxlIHZhcmlhYmxlcyBmb3IgYSBzaW5nbGUgcm91dGUsIGFsbCB0aGUgaW5mb3JtYXRpb24gc2hvdWxkIGJlIGFkZGVkIHVuZGVyIGBwYXJhbWV0ZXJzYC4gV2UgY2FuIHVzZSB2YXJpYWJsZSBpbiBxdWVyeSBwYXJhbXMsIGJvZHksIGhlYWRlciBhcyB3ZWxsLgoKSGVyZSB3ZSBoYXZlIG9ubHkgb25lIHZhcmlhYmxlIGBpZGAsIHNvIHdlIHdpbGwgYWRkIHRoZSBpbmZvcm1hdGlvbiBmb3IgaXQgb25seS4KCmBgYHlhbWwKcGF0aHM6CiAgL3VzZXJzL3tpZH06CiAgICBnZXQ6CiAgICAgIHN1bW1hcnk6IEdldCBVc2VyIGRldGFpbHMKICAgICAgb3BlcmF0aW9uSWQ6IGdldFVzZXIKICAgICAgcGFyYW1ldGVyczoKICAgICAgICAtIGluOiBwYXRoCiAgICAgICAgICBuYW1lOiBpZAogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICAgIGV4YW1wbGU6IDEKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCmBgYAoKSGVyZSwgYXMgb3VyIHZhcmlhYmxlIGxvY2F0aW9uIGlzIGluIHBhdGgsIHRoYXQncyB3aHkgd2UgaGF2ZSBzZXQgYHBhdGhgIHZhbHVlIGZvciBgaW5gIGF0dHJpYnV0ZS4gVGhlbiwgd2UgaGF2ZSBlbnRlcmVkIHRoZSBzY2hlbWEgZGV0YWlscyBmb3IgYGlkYCB2YXJpYWJsZS4gV2UgaGF2ZSBzZXQgZXhhbXBsZSBgMWAgYXMgdXNlcidzIGlkLiAKCkFmdGVyIG1ha2luZyB0aGVzZSBjaGFuZ2VzLCB0aGVyZSB3aWxsIGJlIGEgbmV3IHJvdyB3aXRoIHBhcmFtZXRlcnMgaW5mb3JtYXRpb24gaW4gdGhlIG91dHB1dCBzZWN0aW9uLiBJdCB3aWxsIGxvb2sgbGlrZToKCgohW3N3YWdnZXJfcGFyYW1ldGVyc10oaHR0cHM6Ly9naXRodWIuY29tL3NoYWtpYm1vc3RhaGlkL3dyaXRpbmctc3dhZ2dlci9ibG9iL21haW4vaW1hZ2VzL3N3YWdnZXJfNC5wbmc/cmF3PXRydWUpCgotLS0tLS0tLS0tLS0KCi0gTGV0J3MgYWRkIGFuIGBQT1NUYCBBUEkgZGV0YWlscyBpbiB0aGUgc3dhZ2dlciBkb2MuIE5vdywgd2Ugd2lsbCBhZGQgYW4gQVBJIHNwZWNpZmljYXRpb24gZm9yIGNyZWF0aW5nIGFuIHVzZXIgdG8gb3VyIHN5c3RlbS4gRmlyc3Qgd2Ugd2lsbCBhZGQgdGhlIHJvdXRlIGFuZCBvdGhlciBkZXRhaWxzIGxpa2Ugd2UgZGlkIGluIHRoZSBgR0VUYCBBUEkuIFdlIG5lZWQgdG8gY3JlYXRlIGFuIGtleSB3aXRoIHRoZSByb3V0ZSBuYW1lIHVuZGVyIGBwYXRoc2AgYXR0cmlidXRlLiBBbmQgdGhlIGtleSBtdXN0IGJlIHNpYmxpbmdzIG9mIG90aGVyIHJvdXRlcy4gRm9yIGV4YW1wbGUsIHdlIGFyZSBzZXR0aW5nIHRoaXMgcm91dGUgYXMgYC91c2Vyc2AuIFNvLCBpdCB3aWxsIGJlIHNpYmxpbmdzIG9mIGAvdXNlcnMve2lkfWAuCgpgYGB5YW1sCnBhdGhzOgogIC91c2Vycy97aWR9OgogIC4uLi4uLi4uLi4uLi4uCiAgL3VzZXJzOgogICAgcG9zdDoKICAgICAgc3VtbWFyeTogQ3JlYXRlIE5ldyBVc2VyCiAgICAgIG9wZXJhdGlvbklkOiBjcmVhdGVVc2VyCmBgYAoKVGhlbiwgd2Ugd2lsbCBhZGQgdGhlIHJlcXVlc3QgcGF5bG9hZCBkZXRhaWxzIHdoaWNoIGNvbnRhaW5zIHRoZSB1c2VycyBkZXRhaWxzLiBUbyBhZGQgdGhlIHJlcXVlc3QgcGF5bG9hZCwgd2UgbmVlZCB0byBkZWZpbmUgaXQgdW5kZXIgYHJlcXVlc3RCb2R5YCBhdHRyaWJ1dGUuIExldCdzIGFkZCB0aGUgaW5mb3JtYXRpb246CgpgYGB5YW1sCi91c2VyczoKICBwb3N0OgogICAgc3VtbWFyeTogQ3JlYXRlIE5ldyBVc2VyCiAgICBvcGVyYXRpb25JZDogY3JlYXRlVXNlcgogICAgcmVxdWVzdEJvZHk6CiAgICAgIGRlc2NyaXB0aW9uOiBSZXF1ZXN0IHBheWxvYWQgZm9yIGNyZWF0aW5nIG5ldyB1c2VyIAogICAgICByZXF1aXJlZDogdHJ1ZQogICAgICBjb250ZW50OgogICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9Vc2VyUGF5bG9hZCcKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgVXNlclBheWxvYWQ6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGZpcnN0X25hbWU6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGV4YW1wbGU6IEhhbWlkCiAgICAgICAgbGFzdF9uYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBleGFtcGxlOiBBaG1lZAogICAgICAgIGFkZHJlc3M6CiAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIGFyZWE6CiAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgZXhhbXBsZTogTWlycHVyCiAgICAgICAgICAgIGNpdHk6CiAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgZXhhbXBsZTogRGhha2EKICAgICAgICAgICAgY291bnRyeToKICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICBleGFtcGxlOiBCYW5nbGFkZXNoCmBgYApIZXJlLCBgZGVzY3JpcHRpb25gIHVuZGVyIGByZXF1ZXN0Qm9keWAgcmVwcmVzZW50cyB0aGUgc3VtbWFyeSBvZiB0aGUgcmVxdWVzdCBib2R5LiBUaGVuIHdlIGhhdmUgc2V0IHRoZSBwYXlsb2FkIGNvbnRlbnQgdHlwZSB1bmRlciBgY29udGVudGAgYXR0cmlidXRlLiBBcyBvdXIgcmVxdWVzdCB3aWxsIGNvbnRhaW4gSlNPTiBkYXRhLCB3ZSBoYXZlIHNldCBvdXIgc2NoZW1hIGRldGFpbHMgdW5kZXIgYGFwcGxpY2F0aW9uL2pzb25gLiBXZSBoYXZlIGNyZWF0ZSBhIG5ldyBzY2hlbWEgZm9yIHRoZSByZXF1ZXN0IHBheWxvYWQsIGFuZCBzZXQgdGhlIHJlZmVyZW5jZXMgb24gdGhlIGBzY2hlbWFgIGF0dHJpYnV0ZS4KCldlIGNhbiBhZGQgdGhlIGZ1bGwgcmVxdWVzdCBib2R5IGFzIHJlZmVyZW5jZSwgdGhlbiB3ZSBjYW4gdXNlIHRoZSByZWZlcmVuY2UgZGlyZWN0bHkgaWYgd2UgbmVlZCB0aGUgcmVxdWVzdCBib2R5IGFueXdoZXJlLiBUbyBhY2hpZXZlIHRoaXMsIHdlIG5lZWQgdG8gYWRkIGByZXF1ZXN0Qm9kaWVzYCBrZXkgdW5kZXIgYGNvbXBvbmVudHNgIGF0dHJpYnV0ZSwgdGhlbiB3ZSBuZWVkIHRvIGFkZCB0aGUgZGV0YWlscyB0aGVyZSB3aXRoIGEgY3VzdG9tIGtleSBuYW1lLiBMZXQncyBhZGQgaXQ6CgpgYGB5YW1sCmNvbXBvbmVudHM6CiAgcmVxdWVzdEJvZGllczoKICAgIFVzZXJSZXF1ZXN0UGF5bG9hZDoKICAgICAgZGVzY3JpcHRpb246IFJlcXVlc3QgcGF5bG9hZCBmb3IgY3JlYXRpbmcgbmV3IHVzZXIgCiAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgIGNvbnRlbnQ6CiAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1VzZXJQYXlsb2FkJwpgYGAKClRoZW4sIHdlIGNhbiB1c2UgYFVzZXJSZXF1ZXN0UGF5bG9hZGAgcmVmZXJlbmNlIGluIHRoZSBBUEkgc3BlY2lmaWNhdGlvbnMuIFNvLCB3ZSB3aWxsIG1ha2UgdGhlIGNoYW5nZXMgbm93OiAKCmBgYHlhbWwKL3VzZXJzOgogIHBvc3Q6CiAgICBzdW1tYXJ5OiBDcmVhdGUgTmV3IFVzZXIKICAgIG9wZXJhdGlvbklkOiBjcmVhdGVVc2VyCiAgICByZXF1ZXN0Qm9keToKICAgICAgICAiJHJlZiI6ICcjL2NvbXBvbmVudHMvcmVxdWVzdEJvZGllcy9Vc2VyUmVxdWVzdFBheWxvYWQnCmBgYAoKTm93LCB0aGUgb25seSBwYXJ0IGxlZnQgaGVyZSBpcyBhZGRpbmcgdGhlIHJlc3BvbnNlIGluZm9ybWF0aW9uLiBUaGUgcmVzcG9uc2Ugd2lsbCBiZSBzYW1lIGFzIG91ciBgR0VUYCByZXF1ZXN0LiBTbywgb3VyIGNvbXBsZXRlIGNvZGUgd2lsbCBiZSBsb29raW5nIGxpa2UgYmVsb3c6CgpgYGB5YW1sCi91c2VyczoKICBwb3N0OgogICAgc3VtbWFyeTogQ3JlYXRlIE5ldyBVc2VyCiAgICBvcGVyYXRpb25JZDogY3JlYXRlVXNlcgogICAgcmVxdWVzdEJvZHk6CiAgICAgICIkcmVmIjogJyMvY29tcG9uZW50cy9yZXF1ZXN0Qm9kaWVzL1VzZXJSZXF1ZXN0UGF5bG9hZCcKICAgIHJlc3BvbnNlczoKICAgICAgMjAxOgogICAgICAgIGRlc2NyaXB0aW9uOiBBUEkgdG8gQ3JlYXRlIHRoZSB1c2VyIGluZm9ybWF0aW9uIGFuZCBnZXQgY3JlYXRlZCB1c2VyJ3MgZGV0YWlscy4KICAgICAgICBoZWFkZXJzOgogICAgICAgICAgQ2FjaGUtQ29udHJvbDoKICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgIGV4YW1wbGU6IG5vLWNhY2hlLCBwcml2YXRlCiAgICAgICAgICBEYXRlOgogICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgZXhhbXBsZTogVGh1LCAxNyBOb3YgMjAyMiAwOTo1MjoxMCBHTVQKICAgICAgICBjb250ZW50OgogICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICIkcmVmIjogIiMvY29tcG9uZW50cy9zY2hlbWFzL1VzZXIiCmBgYAoKQWZ0ZXIgYWRkaW5nIHRoZSBgUE9TVGAgQVBJIHNwZWNpZmljYXRpb24sIHRoZXJlIHdpbGwgYmUgYSBuZXcgYmxvY2sgZm9yIHRoZSB1c2VyIGNyZWF0ZSBBUEkuIEFmdGVyIGV4cGFuZGluZyB0aGUgYmxvY2ssIEl0IHdpbGwgbG9vayBsaWtlOgoKIVtzd2FnZ2VyX3BhcmFtZXRlcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zaGFraWJtb3N0YWhpZC93cml0aW5nLXN3YWdnZXIvYmxvYi9tYWluL2ltYWdlcy9zd2FnZ2VyXzUucG5nP3Jhdz10cnVlKQoKLS0tLS0tLS0tLS0tCgotIEFsbCB0aGUgQVBJIGRldGFpbHMgYXJlIHNob3duIHVuZGVyICpkZWZhdWx0KiBncm91cCwgSXQgaXMgY2FsbGVkIGB0YWdzYC4gSWYgd2UgZG9uJ3Qgc2V0IGFueSB0YWdzIGZvciB0aGUgcm91dGUgb3IgQVBJIGl0IHdpbGwgYmUgc2V0IHRvICpkZWZhdWx0Ki4gTGV0J3MgY3JlYXRlIGEgdGFnIGhlcmUgYW5kIHNldCB0byB0aGUgcm91dGVzLgoKVG8gY3JlYXRlIGEgdGFnLCB3ZSBuZWVkIHRvIGRlZmluZSB0aGUgZGV0YWlscyB1bmRlciBgdGFnc2AgYXR0cmlidXRlLiBUaGlzIGF0dHJpYnV0ZSB3aWxsIGJlIHNpYmxpbmdzIG9mIGBwYXRoc2AgYXR0cmlidXRlLiBJdCBoYXMgbm8gcGFyZW50IGVsZW1lbnQuCgpgYGB5bWwKcGF0aHM6Ci4uLi4uLi4uLi4uLi4uLi4uLi4KCnRhZ3M6CiAgLSBuYW1lOiBVc2VycwogICAgZGVzY3JpcHRpb246IFVzZXJzIEFQSSBzcGVjaWZpY2F0aW9ucwpgYGAKClRoZW4sIHdlIG5lZWQgdG8gYWRkIHRoZSB0YWcgbmFtZSBpbiB0aGUgcm91dGVzIGRldGFpbHMgdG8gZ3JvdXAgaXQgdG9nZXRoZXIgdW5kZXIgYHRhZ3NgIGF0dHJpYnV0ZSBhcyBhcnJheSB2YWx1ZS4gTm93IHRoZSBjaGFuZ2VzIHdpbGwgYmU6CgpgYGB5bWwKcGF0aHM6CiAgL3VzZXJzL3tpZH06CiAgICBnZXQ6CiAgICAgIHRhZ3M6CiAgICAgICAgLSBVc2VycwogICAgICAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogIC91c2VyczoKICAgIHBvc3Q6CiAgICAgIHRhZ3M6CiAgICAgICAgLSBVc2VycwogICAgICAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgpgYGAKCk5vdyBib3RoIG9mIHRoZSByb3V0ZXMgZ3JvdXAgbmFtZSBpcyBjaGFuZ2VkIHRvIGBVc2Vyc2AuIAoKIVtzd2FnZ2VyX3BhcmFtZXRlcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zaGFraWJtb3N0YWhpZC93cml0aW5nLXN3YWdnZXIvYmxvYi9tYWluL2ltYWdlcy9zd2FnZ2VyXzYucG5nP3Jhdz10cnVlKQoKLS0tLS0tLS0tLS0t readmeEtag: '"f7b25084169d09619ab2693aca19851df8355026"' readmeLastModified: Mon, 30 Oct 2023 05:02:48 GMT repositoryId: 568020156 description: This is a guideline for beginner who wants to learn swagger with examples. created: '2022-11-19T07:32:30Z' updated: '2025-04-25T17:01:41Z' language: null archived: false stars: 5 watchers: 1 forks: 0 owner: shakibmostahid logo: https://avatars.githubusercontent.com/u/36795674?v=4 license: Unlicense repoEtag: '"84fcf9e5938048a2aa94f7a02293623339821cb0bfe4238c6b501b1f717131f3"' repoLastModified: Fri, 25 Apr 2025 17:01:41 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/ipranjal/openapi-spec v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9PU1NOQVBJL1N1Ym1pc3Npb24tSW1hZ2VzL2Jsb2IvbWFpbi9sb2dvLnBuZz9yYXc9dHJ1ZSIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPjwvcD4KCiMgT3BlbkFQSS1zcGVjCk9wZW4gQVBJIDMuMCBzcGVjIGZvciBjcmVhdGluZyBzb2NpYWwgbmV0d29ya2luZyBBUEkKClRoaXMgc3BlY2lmaWNhdGlvbiB3YXMgY3JlYXRlZCBhcyBwYXJ0IG9mICoqVGhlIFBvc3RtYW4gQVBJIEhhY2sqKiBhbmQgcHJvdmlkZXMgYSAqKk9wZW5BUEkgMy4wKiogc3BlY2lmaWNhdGlvbiBmb3IgY3JlYXRpbmcgU29jaWFsIE5ldHdvcmtpbmcgQVBJLCB1c2luZyB0aGVzZSBBUEkncyB5b3UgY2FuIGNyZWF0ZSBhIHNvY2lhbCBuZXR3b3JraW5nIHdlYnNpdGUgbGlrZSBGYWNlYm9vaywgVHdpdHRlcgoKWW91IGNhbiBnb3RvICB0byBmaW5kIHRoZSB3b3Jrc3BhY2Ugd2l0aCBBUEkgY29sbGVjdGlvbiAsIFRlc3RzIGFuZCBNb2NrIFNlcnZlciBmb3IgZGV2ZWxvcGluZyB1c2luZyB0aGlzIEFQSSBzcGVjaWZpY2F0aW9uLiAKCgojIyBVc2VmdWwgTGlua3MKLSBCbG9nIFBvc3RzIGFib3V0IHRoZSBwcm9qZWN0IGFuZCBoYWNrYXRob24gLSBodHRwczovL3BoeXNjb2NvZGUuY29tL2NhdGVnb3J5L3Bvc3RtYW4vCi0gRG9jdW1lbnQgZXhwbGFpbmluZyB0aGUgQVBJJ3MgY2FuIGJlIGZvdW5kIGhlcmUgLSBodHRwczovL2RvY3VtZW50ZXIuZ2V0cG9zdG1hbi5jb20vdmlldy8xNzIyMTExL1RXNnRMcTUzCi0gWW91IGNhbiBmaW5kIHRoZSBwdWJsaWMgd29ya3NwYWNlIGhlcmUgLSBodHRwczovL3d3dy5wb3N0bWFuLmNvbS9wcmFuamFsc2hvcC93b3Jrc3BhY2UvdGhlLXNvY2lhbC1uZXR3b3JrLWFwaS1zL292ZXJ2aWV3Ci0gQVBJIGRlc2lnbiBjb25jZXB0IC0gaHR0cHM6Ly9waHlzY29jb2RlLmNvbS9vc3NuLWFwaS1vcGVuLXNvdXJjZS1zb2NpYWwtbmV0d29ya2luZy1hcGktZGVzaWduLWNvbmNlcHQvCi0gU2VydmVyIHNpZGUgaW1wbGVtZW50YXRpb24gb2Ygc3BlY2lmaWNhdGlvbiAtIGh0dHBzOi8vZ2l0aHViLmNvbS9PU1NOQVBJL09TU04tc2VydmVyLXBocAoKIyMgVGhpcyBzcGVjaWZpY2F0aW9uIGRlZmluZXMgaW1wbGVtZW50YWlvbiBvZiBmb2xsb3dpbmcgQVBJOgoxKSAqKlVzZXIgQVBJIGNvbGxlY3Rpb24qKiAtIENvbGxlY3Rpb24gb2YgQVBJJ3MgdG8gbWFuYWdlIHVzZXJzCjIpICoqUG9zdHMgQVBJIGNvbGxlY3Rpb24qKiAtIENvbGxlY3Rpb24gb2YgQVBJIHRvIG1hbmFnZSBwb3N0cyB0aGF0IGNhbiByYW5nZSBmcm9tIHNtYWxsIHR3ZWV0cyB0byBhIGZ1bGwgaW1hZ2UgcG9zdCBvciBldmVuIGEgc2xpZGUgb2YgaW1hZ2VzCjMpICoqTGlrZSBhbmQgQ29tbWVudCBBUEkgY29sbGVjdGlvbioqIC0gQVBJIHRvIG1hbmFnZSBsaWtlcyBhbmQgY29tbWVudHMgYXR0YWNoZWQgdG8gcG9zdHMKNCkgKipVc2VyIFJlbGF0aW9uIEFQSSBjb2xsZWN0aW9uKiogLSBDb2xsZWN0aW9uIG9mIGFwaSB0byBtYW5nZSByZWxhdGlvbiBiZXR3ZWVuIHVzZXJzIChmcmllbmRzLGZvbGxvdyxjaXJlY2xlcyBldGMpCjUpICoqTWVzc2FnaW5nIEFQSSBjb2xsZWN0aW9uKiogLSBDb2xsZWN0aW9uIG9mIGFwaSBmb3IgYnVpbGRpbmcgMS0xIG9yIGdyb3VwCjYpICoqRmVlZCBBUEkgY29sbGVjdGlvbioqIC0gQ29sbGVjdGlvbiBvZCBhcGkgdG8gbWFuYWdlIGFjdGl2aXR5IGZlZWQKCiMjIFRoaXMgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIGZvbGxvd2luZyBtb2RlbDoKMSkgKipVc2VyKiogLSB0byBzdG9yZSBhbmQgcmV0cmlldmUgdXNlciBkYXRhCjIpICoqUG9zdCoqIC0gdGhpcyBpcyB0aGUgYmFzaWMgYmFja2JvbmUgb2Ygc29jaWFsIGZlYXR1cmUsIGEgcG9zdCBjYW4gYmUgYW55dGhpbmcgZnJvbSBzaG9ydCB0d2VldHMsIHRvIGltYWdlIGJhc2VkIHBvc3QgCjMpICoqRmVlZCoqIC0gdGhpcyBpcyB1c2VkIHRvIHN0b3JlIGludGVyYWN0aW9uIGJldHdlZW4gdXNlcnMgLCB1c2VyIGFuZCBwb3N0IGFuZCBvdGhlciBhY3Rpdml0eSBvZiB1c2Vycy4gRWcgOiBYIGxpa2VzIGEgcG9zdCAsIFggaXMgbm93IGZyaWVuZHMgd2l0aCBZIGV0Yy4gVGhlc2UgYWN0aXZpdGllcyBjYW4gdGhlbiBiZSBkaXNwbGF5ZWQgb24gZmVlZAo0KSAqKkxpa2UqKiAtIHN0b3JlIGxpc3Qgb2YgYWxsIHVzZXIgd2hvIGxpa2VzIGEgcGFydGljdWxhciBwb3N0CjUpICoqQ29tbWVudHMqKiAtIHN0b3JlIGFsbCB0aGUgY29tbWVudHMgZm9yIGEgcG9zdAo2KSAqKlVzZXJSZWxhdGlvbioqIC0gdGhpcyBzdG9yZXMgcmVsYXRpb24gYmV0d2VlbiB0d28gdXNlcnMgLCB0aGlzIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCByZWxhdGlvbnMgbGlrZSAnZnJpZW5kcycsICdmb2xsb3cnIG9yIHNvbWV0aGluZyBhcyBjb21wbGV4IGFzICdjaXJjbGVzJyB0aGF0IHdhcyBpbnRyb2R1Y2VkIGJ5IEdvb2dsZSArCjcpICoqTWVzc2FnZSoqIC0gdGhpcyBzdG9yZXMgbWVzc2VnZXMgc2VudCBpbiBncm91cHMgb3IgMS0xIGludGVyYWN0aW9uCjgpICoqTWVzc2FnZVJvb20qKiAtIHRoaXMgc3RvcmVzIHRoZSBtZXNzYWdpbmcgcm9vbXMgLCByb29tcyBjYW4gYmUgMS0xIG1lc3NhZ2luZyByb29tcyBvciBncm91cCBtZXNzYWdlIHJvb21zLiBNZXNzYWdlIHJvb21zIGFyZSB3aGVyZSBtZXNzYWdlcyBhcmUgZXhjaGFuZ2VkCgojIyBMaWNlbnNlClRoaXMgcHJvamVjdCBpcyBjcmVhdGVkIGJ5IFtQcmFuamFsIFBhbmRleV0oaHR0cHM6Ly9naXRodWIuY29tL3BoeXNjb2NvZGUpIGFuZCBpcyBhdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UK readmeEtag: '"b133ee07521830b044ea3b5505ae41045863b6cc"' readmeLastModified: Sun, 31 Jan 2021 19:59:57 GMT repositoryId: 331009814 description: Open API 3.0 spec for creating social networking API created: '2021-01-19T14:37:48Z' updated: '2023-12-11T22:37:01Z' language: null archived: false stars: 4 watchers: 1 forks: 0 owner: ipranjal logo: https://avatars.githubusercontent.com/u/7591484?v=4 license: MIT repoEtag: '"73d399453dc334113b60a2ea638f1446ca941b92504c6b8d63c206c921b6924d"' repoLastModified: Mon, 11 Dec 2023 22:37:01 GMT foundInMaster: true category: Server Implementations id: ad45934ff23eea424cd904c63c539912 oldLocations: - https://github.com/scrawler-archive/openapi-spec - source: openapi3 tags repository: https://github.com/salesforce/anypoint-automation-client-generator v3: true repositoryMetadata: base64Readme: >- IyBDbG91ZGh1YiBBUEkgQ2xpZW50IEdlbmVyYXRvcgoKIyMgSW5zdGFsbAoKTWFrZSBzdXJlIHRvIGluc3RhbGwgbm9kZWpzIGFuZCBucG0gYW5kIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBpbiB0aGUgcm9vdCBwcm9qZWN0CgpgYGBiYXNoCm5wbSBpbnN0YWxsCmBgYAoKIyMgRXhlY3V0ZSBnZW5lcmF0b3IKCk1ha2Ugc3VyZSB0byBhZGQgYEFOWVBPSU5UX0dFTkVSQVRPUl9HT19ERVNUYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0IHNob3VsZCBwb2ludCB0byB0aGUgZGVzdGluYXRpb24gZ28gZm9sZGVyLiBZb3UgY2FuIHVzZSB0aGUgYGRpc3RgIGZvbGRlciBvZiB0aGUgcHJvamVjdCB3aGljaCBpcyBpZ25vcmVkIGluIGdpdCBieSBleGVjdXRpbmcgdGhlIGZvbGxvd2luZyBpbnNpZGUgdGhlIHByb2plY3QncyBmb2xkZXI6CgpgYGBiYXNoCmV4cG9ydCBBTllQT0lOVF9HRU5FUkFUT1JfR09fREVTVD1gcHdkYC9kaXN0CmBgYAoKVXNlIHRoZSBmb2xsb3dpbmcgdG8gZ2V0IHRoZSBtYW51YWwKCmBgYGJhc2gKbnB4IG9wZW5hcGktZ2VuZXJhdG9yLWNsaSBoZWxwCmBgYAoKVXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBnZW5lcmF0ZSB1c2luZyB0aGUgY29uZmlndXJhdGlvbiBzdG9yZWQgaW4gYG9wZW5hcGl0b29scy5qc29uYAoKYGBgYmFzaApucHggb3BlbmFwaS1nZW5lcmF0b3ItY2xpIGdlbmVyYXRlCmBgYAoKIyMgSG93IHRvIHdyaXRlIHlvdXIgc3BlYyA/CgpIZXJlJ3Mgc29tZSBydWxlcyB0byBrZWVwIGluIG1pbmQgd2hlbiB5b3Ugd3JpdGUgeW91ciBzcGVjOgoKKiBVc2UgT0FTIDMuMC4wCiogRGVmaW5lIHlvdXIgb2JqZWN0cyBzY2hlbWFzIGluIGAjL2NvbXBvbmVudHMvc2NoZW1hYCBhbmQgcmVmZXJlbmNlIHRoZW0gaW4geW91ciBwYXRoIGRlZmluaXRpb25zLgoqIFVzZSBlbmhlcml0YW5jZSBhbmQgcG9seW1vcnBoaXNtIHdoZW4geW91IGRlZmluZSB5b3VyIHNjaGVtYXMgdG8gYXZvaWQgcmVkZWZpbmluZyB0aGUgc2FtZSBhdHRyaWJ1dGVzIG11bHRpcGxlIHRpbWVzLiBbcmVmXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2RhdGEtbW9kZWxzL2luaGVyaXRhbmNlLWFuZC1wb2x5bW9ycGhpc20vKS4KKiBGb3IgZWFjaCBhdHRyaWJ1dGUgb2YgeW91ciBzY2hlbWFzIG1ha2Ugc3VyZSB0byBwcm92aWRlIGEgYHRpdGxlYC4gVGhlIGB0aXRsZWAgd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIGEgc3RydWN0dXJlIG5hbWUgZm9yIHRoYXQgYXR0cmlidXRlLCB0aGVyZWZvcmUgdXNlIGEgc2hvcnQgYW5kIGNvbnNpdGVudCBuYW1lLiBsb29rIGluIHRoZSBleGlzdGVudCBzcGVjcyBmb3IgZXhhbXBsZXMuCiogVXNlICoqY2FtbCBjYXNlKiogaW4gYHRpdGxlYCB0byBuYW1lIHlvdXIgc2NoZW1hcyBhdHRyaWJ1dGVzLgoqIFdoZW4gdXNpbmcgYHRpdGxlYCB0byBkZXNjcmliZSBhbiBvYmplY3Qgb3IgYXJyYXksIGl0cyBuYW1lIHNob3VsZCBiZSB1bmlxdWUgYWNjcm9zcyB0aGUgc2FtZSBzcGVjaWZpY2F0aW9uLgoqIEZvciBlYWNoIG9mIHlvdXIgYXBpIHJlc291cmNlLCByZXR1cm4gYSBkZXRlcm1pbmlzdGljIHJlc3VsdCBhbmQgbmV2ZXIgdXNlciBPbmVPZiBmb3IgZXhhbXBsZS4gVGhlIGdlbmVyYXRvciB3aWxsIG5vdCBiZSBhYmxlIHRvIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgVHlwZS4KKiBGb3IgYWxsIHNpbXBsZSB0eXBlcyAoZS5nIGludGVnZXIsIHN0cmluZyAuLi4pIERvbid0IHVzZSBgJHJlZmAgdG8gcmVmZXIgdG8gdGhlIGRlZmluaXRpb24uCiogTWFrZSBzdXJlIHRvIHJlbW92ZSBhbnkgdW5uZWNlc3NhcnkgYHJlcXVpcmVkYCBhdHRyaWJ1dGVzLgoqIFRob3VnaCB0aGUgdXNlIG9mIGJvZHkgcGFyYW1ldGVyIGlzIGRpc2NvdXJhZ2VkIGZvciBgREVMRVRFYCBvcGVyYXRpb25zLCBzb21lIEFQSXMgbWF5IHJlcXVpcmUgaXQgKHRvIGRlbGV0ZSBtdWx0aXBsZSBzcGVjaWZpYyBpdGVtcyBmb3IgZXhhbXBsZS4uLikuIEluIHRoYXQgY2FzZSBzb21lIGVkaXRvcnMgbGlrZSBTd2FnZ2VyIG1heSBzaG93IGFuIGVycm9yIHdoZW4geW91IGFkZCBhIGByZXF1ZXN0Qm9keWAgb24gYSBgREVMRVRFYCByZXNvdXJjZSBvcGVyYXRpb24uIERvbid0IHBheSBhdHRlbnRpb24gdG8gdGhhdCBlcnJvciBzaW5jZSBvdXIgY29kZSBnZW5lcmF0b3Igc3VwcG9ydHMgaXQuIElmIHlvdSBhcmUgYW5ub3llZCBieSB0aGF0LCB0cnkgdXNpbmcgeW91ciBmYXZvcml0ZSBlZGl0b3IncyBwbHVnaW4gZm9yIG9wZW5hcGkgKGV4YW1wbGUgb24gdnNjb2RlIG9wZW5hcGkgW3BsdWdpbl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPTQyQ3J1bmNoLnZzY29kZS1vcGVuYXBpKSkuCiogSWYgYSBnaXZlbiBmaWVsZCBzdXBwb3J0cyBtdWx0aXBsZSB0eXBlcywgZG9uJ3QgdXNlIGBvbmVPZmAgb3IgYGFueU9mYC4gSW5zdGVhZCwgbGVhdmUgdGhlIHR5cGUgZW1wdHkgKGFkZCB0aXRsZSBmaWVsZCBvciBkZXNjcmlwdGlvbiBvbmx5IGZvciBleGFtcGxlKS4KKiBVc2UgYG9wZXJhdGlvbklkYCB0byBuYW1lIHJlc291cmNlcy4uCgojIyBSZWZlcmVuY2UKCiogW29wZW4gYXBpIGdlbmVyYXRvcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoLykKKiBbb3BlbmFwaSBwbGFjZWhvbGRlcnMgbWF2ZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvYmxvYi9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW4vUkVBRE1FLm1kKQoqIFtvcGVuYXBpIGNsaSBwbGFjZWhvbGRlcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL3RyZWUvbWFzdGVyL2FwcHMvZ2VuZXJhdG9yLWNsaS9zcmMjYXZhaWxhYmxlLXBsYWNlaG9sZGVycykKKiBbSlNPTiB0byBKU09OU2NoZW1hIENvbnZlcnRlciBUb29sXShodHRwczovL3d3dy5qc29uc2NoZW1hLm5ldC9ob21lKQoKIyMgRGlzY2xhaW1lcgoKKipUaGlzIGlzIGFuIFtvcGVuIHNvdXJjZSBzb2Z0d2FyZSwgcGxlYXNlIHJldmlldyB0aGUgY29uc2lkZXJhdGlvbnNdKExJQ0VOU0UubWQpLioqClRoaXMgaXMgYW4gb3BlbiBzb3VyY2UgcHJvamVjdCwgaXQgZG9lcyBub3QgZm9ybSBwYXJ0IG9mIHRoZSBvZmZpY2lhbCBNdWxlU29mdCBwcm9kdWN0IHN0YWNrLCBhbmQgaXMgdGhlcmVmb3JlIG5vdCBpbmNsdWRlZCBpbiBNdWxlU29mdCBzdXBwb3J0IFNMQXMuIElzc3VlcyBzaG91bGQgYmUgZGlyZWN0ZWQgdG8gdGhlIGNvbW11bml0eSwgd2hvIHdpbGwgdHJ5IHRvIGFzc2lzdCBvbiBhIGJlc3QgZW5kZWF2b3VycyBiYXNpcy4gVGhpcyBhcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCAqKmFzIGlzKiouCg== readmeEtag: '"f49fb3502a8d0b47b5875c31f2e595f790aa972c"' readmeLastModified: Tue, 06 Feb 2024 14:37:39 GMT repositoryId: 350462203 description: OAS specifications for Anypoint Platform Resources created: '2021-03-22T19:19:01Z' updated: '2025-11-10T14:41:44Z' language: null archived: false stars: 3 watchers: 3 forks: 15 owner: salesforce logo: https://avatars.githubusercontent.com/u/453694?v=4 license: MIT repoEtag: '"2103c40027b22640b67818c901f3ff547a73ca2cc8450516a9a189eb64772646"' repoLastModified: Mon, 10 Nov 2025 14:41:44 GMT foundInMaster: true category: Parsers id: 5169bc3ad6bc176c4877e87d5d4d22c3 oldLocations: - >- https://github.com/mulesoft-consulting/anypoint-automation-client-generator - source: openapi3 tags repository: https://github.com/llcfreedom-space/fs-itunes-search-client v3: true id: 8e18353fd2f762ba3c4be5a9e22f89d9 repositoryMetadata: base64Readme: >- IyBGU0lUdW5lc1NlYXJjaENsaWVudAoKWyFbU3dpZnQgVmVyc2lvbl1bc3dpZnQtaW1hZ2VdXVtzd2lmdC11cmxdClshW0xpY2Vuc2VdW2xpY2Vuc2UtaW1hZ2VdXVtsaWNlbnNlLXVybF0KIVtHaXRIdWIgcmVsZWFzZSAod2l0aCBmaWx0ZXIpXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi92L3JlbGVhc2UvTExDRnJlZWRvbS1TcGFjZS9mcy1pdHVuZXMtc2VhcmNoLWNsaWVudCkKIFshW1JlYWQgdGhlIERvY3NdKGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL2RvY3MvYmFkZ2UvP3ZlcnNpb249bGF0ZXN0KV0oaHR0cHM6Ly9sbGNmcmVlZG9tLXNwYWNlLmdpdGh1Yi5pby9mcy1pdHVuZXMtc2VhcmNoLWNsaWVudC8pCiFbZXhhbXBsZSB3b3JrZmxvd10oaHR0cHM6Ly9naXRodWIuY29tL0xMQ0ZyZWVkb20tU3BhY2UvZnMtaXR1bmVzLXNlYXJjaC1jbGllbnQvYWN0aW9ucy93b3JrZmxvd3MvZG9jYy55bWwvYmFkZ2Uuc3ZnP2JyYW5jaD1tYWluKQohW2V4YW1wbGUgd29ya2Zsb3ddKGh0dHBzOi8vZ2l0aHViLmNvbS9MTENGcmVlZG9tLVNwYWNlL2ZzLWl0dW5lcy1zZWFyY2gtY2xpZW50L2FjdGlvbnMvd29ya2Zsb3dzL2xpbnQueW1sL2JhZGdlLnN2Zz9icmFuY2g9bWFpbikKIVtleGFtcGxlIHdvcmtmbG93XShodHRwczovL2dpdGh1Yi5jb20vTExDRnJlZWRvbS1TcGFjZS9mcy1pdHVuZXMtc2VhcmNoLWNsaWVudC9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbC9iYWRnZS5zdmc/YnJhbmNoPW1haW4pCiBbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2l0aHViL0xMQ0ZyZWVkb20tU3BhY2UvZnMtaXR1bmVzLXNlYXJjaC1jbGllbnQvZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPTJFVUlBNE9HUzkpXShodHRwczovL2NvZGVjb3YuaW8vZ2l0aHViL0xMQ0ZyZWVkb20tU3BhY2UvZnMtaXR1bmVzLXNlYXJjaC1jbGllbnQpCgpUaGlzIFN3aWZ0IHBhY2thZ2UgcHJvdmlkZXMgYSBjbGllbnQgbGlicmFyeSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaVR1bmVzIFNlYXJjaCBBUEkuIEl0IGxldmVyYWdlcyB0aGUgcG93ZXIgb2YgW1N3aWZ0IE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvc3dpZnQtb3BlbmFwaS1nZW5lcmF0b3IvdHJlZS9tYWluKSB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGNvZGUgZnJvbSB0aGUgcHJvdmlkZWQgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZpbGUgKG9wZW5hcGkueWFtbCkuCgojIyBGZWF0dXJlcwoKKiBGZXRjaCBhcHAgaW5mb3JtYXRpb24gYnkgYnVuZGxlIElEIGFuZCBvcHRpb25hbCBjb3VudHJ5IGNvZGUuCiogSGFuZGxlcyBkaWZmZXJlbnQgcmVzcG9uc2UgZm9ybWF0cyAoSlNPTiBhbmQgSlNPTlApLgoqIFRocm93cyBpbmZvcm1hdGl2ZSBlcnJvcnMgZm9yIHNlcnZlciBlcnJvcnMgYW5kIG5vdCBmb3VuZCBjYXNlcy4KCiMjIEluc3RhbGxhdGlvbgoKMS4gQWRkIHRoZSBwYWNrYWdlIGRlcGVuZGVuY3kgdG8geW91ciBQYWNrYWdlLnN3aWZ0IGZpbGU6CgpgYGBzd2lmdApkZXBlbmRlbmNpZXM6IFsKLnBhY2thZ2UodXJsOiAiaHR0cHM6Ly9naXRodWIuY29tL0xMQ0ZyZWVkb20tU3BhY2UvZnMtaXR1bmVzLXNlYXJjaC1jbGllbnQiLCBmcm9tOiAiMS4wLjAiKQpdCmBgYAoKMi4gSW1wb3J0IHRoZSBsaWJyYXJ5IGluIHlvdXIgU3dpZnQgY29kZToKCmBgYHN3aWZ0CmltcG9ydCBJVHVuZXNTZWFyY2hDbGllbnQKYGBgCgojIyBVc2FnZQoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVzZSB0aGUgSVR1bmVzU2VhcmNoQ2xpZW50IHRvIGZldGNoIGluZm9ybWF0aW9uIGFib3V0IGFuIGFwcDoKCmBgYHN3aWZ0CmxldCBjbGllbnQgPSB0cnkgSVR1bmVzU2VhcmNoQ2xpZW50KCkKCmRvIHsKbGV0IGFwcEluZm8gPSB0cnkgYXdhaXQgY2xpZW50LmZldGNoQXBwSW5mbyhieTogImNvbS5leGFtcGxlLk15QXBwIikKcHJpbnQoIkFwcCBWZXJzaW9uOiBcKGFwcEluZm8udmVyc2lvbiA/PyAiTm90IGF2YWlsYWJsZSIpIikKcHJpbnQoIkJ1bmRsZSBJRDogXChhcHBJbmZvLmJ1bmRsZUlkISkiKQovLyAuLi4gYWNjZXNzIG90aGVyIHByb3BlcnRpZXMgb2YgQXBwSW5mbwp9IGNhdGNoIHsKcHJpbnQoIkVycm9yIGZldGNoaW5nIGFwcCBpbmZvOiBcKGVycm9yKSIpCn0KYGBgCgojIyBDb250cmlidXRpb25zCgpXZSB3ZWxjb21lIGNvbnRyaWJ1dGlvbnMgdG8gdGhpcyBwcm9qZWN0ISBQbGVhc2UgZmVlbCBmcmVlIHRvIG9wZW4gaXNzdWVzIG9yIHB1bGwgcmVxdWVzdHMgdG8gaGVscCBpbXByb3ZlIHRoZSBwYWNrYWdlLgoKIyMgTGlua3MKCkxMQyBGcmVlZG9tIFNwYWNlIOKAkyBbQExMQ0ZyZWVkb21TcGFjZV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9sbGNmcmVlZG9tc3BhY2UpIOKAkyBbc3VwcG9ydEBmcmVlZG9tc3BhY2UuY29tcGFueV0obWFpbHRvOnN1cHBvcnRAZnJlZWRvbXNwYWNlLmNvbXBhbnkpCgpEaXN0cmlidXRlZCB1bmRlciB0aGUgR05VIEFGRkVSTyBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMy4gU2VlIFtMSUNFTlNFLm1kXVtsaWNlbnNlLXVybF0gZm9yIG1vcmUgaW5mb3JtYXRpb24uCgogW0dpdEh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL0xMQ0ZyZWVkb20tU3BhY2UpCgpbc3dpZnQtaW1hZ2VdOmh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvc3dpZnQtNS44LW9yYW5nZS5zdmcKW3N3aWZ0LXVybF06IGh0dHBzOi8vc3dpZnQub3JnLwpbbGljZW5zZS1pbWFnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGljZW5zZS1HUEx2My1ibHVlLnN2ZwpbbGljZW5zZS11cmxdOiBMSUNFTlNFCg== readmeEtag: '"3238de09b1e741b1364b00851754bc8ca20bd693"' readmeLastModified: Wed, 17 Apr 2024 08:55:29 GMT repositoryId: 782396471 description: >- This Swift package provides a client library for interacting with the iTunes Search API. It leverages the power of Swift OpenAPI Generator to automatically generate code from the provided OpenAPI specification file (openapi.yaml). created: '2024-04-05T08:09:57Z' updated: '2024-07-30T14:45:17Z' language: Swift archived: false stars: 4 watchers: 1 forks: 0 owner: LLCFreedom-Space logo: https://avatars.githubusercontent.com/u/144135921?v=4 license: AGPL-3.0 repoEtag: '"fbd39c86f29abc69acf06d936b5bbe16473c1d964588d61a4ccb08f999193c2f"' repoLastModified: Tue, 30 Jul 2024 14:45:17 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/onrik/gaws v3: true id: 26ff5e96931349992339526fe9eab9cb repositoryMetadata: base64Readme: >- IyBHYXdzCgpPcGVuQVBJIChzd2FnZ2VyKSBkb2NzIGdlbmVyYXRvciBmb3IgR29sYW5nLgoKIyMgRXhhbXBsZXMKCmBgYGdvbGFuZwpwYWNrYWdlIHVzZXJzCgppbXBvcnQgKAoJIm5ldC9odHRwIgoJInRpbWUiCikKCnR5cGUgR3JvdXAgc3RydWN0IHsKCU5hbWUgc3RyaW5nIGBqc29uOiJuYW1lImAKfQoKdHlwZSBVc2VyIHN0cnVjdCB7CglfICAgICAgICAgc3RydWN0e30gIGBqc29uOiItIiBvcGVuYXBpRGVzYzoiVXNlciJgIC8vIERlc2NyaXB0aW9uIGZvciBlbml0cmUgc3RydWN0CglJRCAgICAgICAgdWludCAgICAgIGBqc29uOiJpZCJgCglOYW1lICAgICAgc3RyaW5nICAgIGBqc29uOiJuYW1lIiBvcGVuYXBpRXh0OiJ4LWV4dC1rZXk6ZXh0LXZhbHVlImAgLy8gIFBhc3Npbmcgb3BlbmFwaSBleHRlbnNpb25zIHRvIHNwZWMgYXMgaXMKCUVtYWlsICAgICBzdHJpbmcgICAgYGpzb246ImVtYWlsIiBvcGVuYXBpRGVzYzoiVXNlcidzIGVtYWlsImAgLy8gRGVzY3JpcHRpb24gZm9yIGN1cnJlbnQgZmllbGQKCUlzQWRtaW4gICBib29sICAgICAgYGpzb246ImlzX2FkbWluImAKCUdyb3VwcyAgICBbXUdyb3VwICAgYGpzb246Imdyb3VwcyJgCglDcmVhdGVkQXQgdGltZS5UaW1lIGBqc29uOiJjcmVhdGVkX2F0ImAKCVN0YXR1cyAgICBzdHJpbmcgICAgYGpzb246InN0YXR1cyIgb3BlbmFwaUVudW06Im5ldyxjb25maXJtZWQsZGVsZXRlZCJgIC8vIEVudW0gZm9yIGN1cnJlbnQgZmllbGQgdmFsdWVzCQp9Cgp0eXBlIGNyZWF0ZVVzZXJSZXF1ZXN0IHN0cnVjdCB7CglFbWFpbCAgICAgc3RyaW5nICAgYGpzb246ImVtYWlsImAKCU5hbWUgICAgICBzdHJpbmcgICBganNvbjoibmFtZSJgCglQYXNzd29yZDEgc3RyaW5nICAgYGpzb246InBhc3N3b3JkMSJgCglQYXNzd29yZDIgc3RyaW5nICAgYGpzb246InBhc3N3b3JkMiJgCglJc0FkbWluICAgYm9vbCAgICAgYGpzb246ImlzX2FkbWluImAKCUdyb3VwcyAgICBbXXN0cmluZyBganNvbjoiZ3JvdXBzImAKfQoKdHlwZSB1cGRhdGVVc2VyUmVxdWVzdCBzdHJ1Y3QgewoJRW1haWwgICAgKnN0cmluZyAgIGBqc29uOiJlbWFpbCxvbWl0ZW1wdHkiYAoJTmFtZSAgICAgKnN0cmluZyAgIGBqc29uOiJuYW1lLG9taXRlbXB0eSJgCglQYXNzd29yZCAqc3RyaW5nICAgYGpzb246InBhc3N3b3JkLG9taXRlbXB0eSJgCglJc0FkbWluICAqYm9vbCAgICAgYGpzb246ImlzX2FkbWluLG9taXRlbXB0eSJgCglHcm91cHMgICAqW11zdHJpbmcgYGpzb246Imdyb3VwcyxvbWl0ZW1wdHkiYAp9CgovKgpVc2VycyByZXR1cm5zIHVzZXJzIGxpc3QKQG9wZW5hcGkgR0VUIC9hcGkvdjEvdXNlcnMKQG9wZW5hcGlQYXJhbSBxIGluPXF1ZXJ5LCB0eXBlPXN0cmluZywgZXhhbXBsZT1Kb2huCkBvcGVuYXBpUmVzcG9uc2UgMjAwIGFwcGxpY2F0aW9uL2pzb24geyJ1c2VycyI6IFtdVXNlcn0KKi8KZnVuYyBVc2Vycyh3IGh0dHAuUmVzcG9uc2VXcml0ZXIsIHIgKmh0dHAuUmVxdWVzdCkgewp9CgovKgpDcmVhdGVVc2VyIGNyZWF0ZXMgdXNlcgpAb3BlbmFwaSBQT1NUIC9hcGkvdjEvdXNlcnMKQG9wZW5hcGlSZXF1ZXN0IGFwcGxpY2F0aW9uL2pzb24gY3JlYXRlVXNlclJlcXVlc3QKQG9wZW5hcGlSZXNwb25zZSA0MDAgYXBwbGljYXRpb24vanNvbiB7Im1lc3NhZ2UiOiAiZW1haWw9ZW1haWw7bmFtZT1yZXF1aXJlZCJ9CkBvcGVuYXBpUmVzcG9uc2UgMjAwIGFwcGxpY2F0aW9uL2pzb24geyJ1c2VyIjogVXNlcn0KKi8KZnVuYyBDcmVhdGVVc2VyKHcgaHR0cC5SZXNwb25zZVdyaXRlciwgciAqaHR0cC5SZXF1ZXN0KSB7Cn0KCi8qClVwZGF0ZVVzZXIgdXBkYXRlcyB1c2VyCkBvcGVuYXBpIFBPU1QgL2FwaS92MS91c2Vycy97aWR9CkBvcGVuYXBpUGFyYW0gaWQgaW49cGF0aCwgdHlwZT1pbnQsIGV4YW1wbGU9NTYKQG9wZW5hcGlSZXF1ZXN0IGFwcGxpY2F0aW9uL2pzb24gdXBkYXRlVXNlclJlcXVlc3QKQG9wZW5hcGlSZXNwb25zZSA0MDQgYXBwbGljYXRpb24vanNvbiB7Im1lc3NhZ2UiOiAiTm90IEZvdW5kIn0KQG9wZW5hcGlSZXNwb25zZSAyMDAgYXBwbGljYXRpb24vanNvbiB7InVzZXIiOiBVc2VyfQoqLwpmdW5jIFVwZGF0ZVVzZXIodyBodHRwLlJlc3BvbnNlV3JpdGVyLCByICpodHRwLlJlcXVlc3QpIHsKfQoKLyoKRGVsZXRlVXNlciBkZWxldGUgdXNlcgpAb3BlbmFwaSBERUxFVEUgL2FwaS92MS91c2Vycy97aWR9CkBvcGVuYXBpUGFyYW0gaWQgaW49cGF0aCwgdHlwZT1pbnQsIGV4YW1wbGU9NTYKQG9wZW5hcGlSZXNwb25zZSA0MDQgYXBwbGljYXRpb24vanNvbiB7Im1lc3NhZ2UiOiAiTm90IEZvdW5kIn0KQG9wZW5hcGlSZXNwb25zZSAyMDAgYXBwbGljYXRpb24vanNvbiB7fQoqLwpmdW5jIERlbGV0ZVVzZXIodyBodHRwLlJlc3BvbnNlV3JpdGVyLCByICpodHRwLlJlcXVlc3QpIHsKfQoKYGBgCg== readmeEtag: '"150b2a4f9a3e3eec503db50501996759055b440e"' readmeLastModified: Mon, 08 Apr 2024 05:16:18 GMT repositoryId: 515461559 description: OpenAPI doc generator for Golang created: '2022-07-19T06:25:23Z' updated: '2025-10-14T07:27:40Z' language: Go archived: false stars: 4 watchers: 1 forks: 3 owner: onrik logo: https://avatars.githubusercontent.com/u/4413900?v=4 license: MIT repoEtag: '"52d2df0e7deffae2e33df2c4c438ed81d3a9dbaddd1ab3ec358ae968eeb2956d"' repoLastModified: Tue, 14 Oct 2025 07:27:40 GMT foundInMaster: true category: Parsers - source: openapi3 tags repository: https://github.com/ondata/taskforse.it v3: true repositoryMetadata: base64Readme: >- IyBUYXNrIEZvcnNlCgo+IE5lbCBkdWJiaW8uLi4gdGFzayBmb3JzZSEKCiJUYXNrIEZvcnNlIiBpcyBhbiBpbmRlcGVuZGVudCBwcm9qZWN0IGZvciBtb25pdG9yaW5nIG9mIHB1YmxpYyB0YXNrIGZvcmNlcycgYWN0aXZpdHkgZHVyaW5nIENPVklELTE5IGVtZXJnZW5jeSBpbiAyMDIwIGluIEl0YWx5OiBodHRwczovL3d3dy50YXNrZm9yc2UuaXQvLgoKSXQncyBhIG5vLXByb2ZpdCBhbmQgY29tbXVuaXR5LWRyaXZlbiBpbml0aWF0aXZlIHN1cHBvcnRlZCBieSBbT25kYXRhXShodHRwczovL29uZGF0YS5pdCkgYW5kIGJhc2VkIG9uIGEgc2hhcmVkIGRhdGFiYXNlIGhvc3RlZCBieSBbR29vZ2xlIFNoZWV0c10oaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9pbnRsL2l0L3NoZWV0cy9hYm91dC8pIGFuZCBbR29vZ2xlIEZvcm1dKGh0dHBzOi8vd3d3Lmdvb2dsZS5pdC9pbnRsL2l0L2Zvcm1zL2Fib3V0LykgYW5kIGEgd2ViIGFwcGxpY2F0aW9uIGJ1aWx0IG9uIHRvcCBvZiBbTmV4dEpTXShodHRwczovL25leHRqcy5vcmcvKS4KClRoZSBuYW1lICJUYXNrIEZvcnNlIiBpcyBhIGpva2UgaW4gSXRhbGlhbiBsYW5ndWFnZTogX2ZvcmNlXyBpbiBFbmdsaXNoIGFuZCBfZm9yc2VfIGluIEl0YWxpYW4gKF9tYXliZV8gaW4gRW5nbGlzaCkgc291bmQgc2ltaWxhciwgc28gaW4gSXRhbHkgdGhlIHdvcmQgX3Rhc2sgZm9yc2VfIHN1Z2dlc3RzIHNvbWUgYW1vdW50IG9mIHVuY2VydGFpbnR5IGluIHRoZSBtYW5hZ2VtZW50IG9mIGVtZXJnZW5jeSB1c2luZyB0YXNrIGZvcmNlcyBhcHBvaW50ZWQgYnkgdGhlIGdvdmVybm1lbnQgYW5kIGxvY2FsIHB1YmxpYyBpbnN0aXR1dGlvbnMuCgojIyBEYXRhYmFzZQoKU2hhcmVkIGRhdGFiYXNlOiBbMTVMbUNpWUtnMmNXem92QWlxcXVocF9sWXNhQlN1R05hdTdzdVVrUWRkbDhdKGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzE1TG1DaVlLZzJjV3pvdkFpcXF1aHBfbFlzYUJTdUdOYXU3c3VVa1FkZGw4L2VkaXQ/dXNwPXNoYXJpbmcpLgoKU2hlZXRzOgotIFtNZXRhXShodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC8xNUxtQ2lZS2cyY1d6b3ZBaXFxdWhwX2xZc2FCU3VHTmF1N3N1VWtRZGRsOC9lZGl0I2dpZD0wKTogZGF0YWJhc2UgbWV0YWRhdGEgd2l0aCB0YWJsZXMgYW5kIGZpZWxkcyBkZXNjcmlwdGlvbnMuCi0gW1Rhc2sgZm9yc2VzXShodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC8xNUxtQ2lZS2cyY1d6b3ZBaXFxdWhwX2xZc2FCU3VHTmF1N3N1VWtRZGRsOC9lZGl0I2dpZD0xNDI4MTQ0NDQwKSAodGFzayBmb3JjZXMpOiB0YWJsZSB3aXRoIGFsbCBtb25pdG9yZWQgdGFzayBmb3JjZXMKLSBbTWVtYnJpXShodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC8xNUxtQ2lZS2cyY1d6b3ZBaXFxdWhwX2xZc2FCU3VHTmF1N3N1VWtRZGRsOC9lZGl0I2dpZD04ODY1MTk2MTYpIChtZW1iZXJzKTogdGFibGUgd2l0aCBhbGwga25vd24gbWVtYmVycyB3aGljaCBhcmUgcGFydCBvZiBhdCBsZWFzdCBvbmUgdGFzayBmb3JjZQotIFtWZXJiYWxpXShodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC8xNUxtQ2lZS2cyY1d6b3ZBaXFxdWhwX2xZc2FCU3VHTmF1N3N1VWtRZGRsOC9lZGl0I2dpZD05Mzk0Nzg3ODQpIChtaW51dGVzKTogdGFibGUgd2l0aCBhbGwgb2ZmaWNpYWwgbWludXRlcyBwcm9kdWNlZCBhbmQgcHlibGlzaGVkIGJ5IHRhc2sgZm9yY2VzCi0gW1Jpc29yc2VdKGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzE1TG1DaVlLZzJjV3pvdkFpcXF1aHBfbFlzYUJTdUdOYXU3c3VVa1FkZGw4L2VkaXQjZ2lkPTM2OTc2ODY4NykgKHJlc291cmNlcyk6IHRhYmxlIHdpdGggYWxsIHNvcnQgb2YgZXh0ZXJuYWwgcmVzb3VyY2VzIHJlbGF0ZWQgdG8gdGFzayBmb3JjZXMnIGFjdGl2aXR5CgpZb3UgY2FuIGZyZWVseSBhY2Nlc3MgdGhlIHNoYXJlZCBkYXRhYmFzZSwgZG93bmxvYWQgaXQgaW4gYWxsIGZvcm1hdHMgc3VwcG9ydGVkIGJ5IEdvb2dsZSBTaGVldCBhbmQgcmV1c2UgaXQgaW4gYWdyZWVtZW50IHdpdGggYSBbQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiAoQ0MtQlkpXShodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvNC4wL2RlZWQuaXQpIGxpY2Vuc2UuCgojIyBXZWIgYXBwbGljYXRpb24KClJ1bm5pbmcgaW5zdGFuY2U6IGh0dHBzOi8vd3d3LnRhc2tmb3JzZS5pdC8uCgojIyMgU291cmNlIGNvZGUKClB1YmxpYyByZXBvc2l0b3J5OiBodHRwczovL2dpdGh1Yi5jb20vb25kYXRhL3Rhc2tmb3JzZS5pdC4KClNvdXJjZSBjb2RlIGlzIHJlbGVhc2VkIHVuZGVyIGEgW01JVF0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQpIGxpY2Vuc2Ugb24gR2l0aHViLiBDb250cmlidXRpb25zIGFyZSB3ZWxjb21lLiBGZWVsIGZyZWUgdG8gb3BlbiBpc3N1ZXMgYW5kIHN1Ym1pdCBhIHB1bGwgcmVxdWVzdCBhdCBhbnkgdGltZSEKCiMjIyBTb2Z0d2FyZSBhcmNoaXRlY3R1cmUKClRoaXMgYXBwbGljYXRpb24gaXMgY29tcG9zZWQgYnkgdGhyZWUgc2VydmljZXM6Ci0gYSByZXZlcnNlIHByb3h5IHdpdGggY2FjaGluZyBhcyBhIG1pZGRsZXdhcmUgYmV0d2VlbiBjbGllbnQgYW5kIG5leHRqcyBhcHBsaWNhdGlvbiBhbmQgYmV0d2VlbiBuZXh0anMgYXBwbGljYXRpb24gYW5kIHJlbW90ZSBnb29nbGUgc2hlZXQKLSBhIG5leHRqcyBhcHBsaWNhdGlvbiB3aXRoIFNTUiBlbmFibGVkCi0gYW4gaW50ZXJhY3RpdmUgQVBJIGRvY3VtZW50YXRpb24KClRoZSByZW1vdGUgZGF0YWJhc2UgaXMgYSBzaW1wbGUgR29vZ2xlIFNoZWV0IHdpdGggcHVibGljIHZpc2liaWxpdHkgYWNjZXNzZWQgYnkgbmV4dGpzIGFwcGxpY2F0aW9uIG9ubHkgb24gc2VydmVyLXNpZGUuCgojIyMgUHJvZHVjdGlvbgoKWW91IGNhbiBkZXBsb3kgYW5kIHJ1biB0aGUgYXBwbGljYXRpb24gaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50IHVzaW5nIFtEb2NrZXJdKGh0dHBzOi8vd3d3LmRvY2tlci5jb20vKS4gQSBgZG9ja2VyLWNvbXBvc2UueW1sYCBpcyBwcm92aWRlZCB0byBzaW1wbGlmeSBkZXBsb3kgdXNpbmcgW0RvY2tlciBDb21wb3NlXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9jb21wb3NlLykgdXRpbGl0eS4KClRoZSBhcHBsaWNhdGlvbiBpcyBjb21wb3NlZCBieSAzIGNvbnRhaW5lcnMgYmFzZWQgb24gaW1hZ2VzIGhvc3RlZCBieSBbR2l0aHViIFBhY2thZ2VzXShodHRwczovL2dpdGh1Yi5jb20vZmVhdHVyZXMvcGFja2FnZXMpOiBodHRwczovL2dpdGh1Yi5jb20vb25kYXRhL3Rhc2tmb3JzZS5pdC9wYWNrYWdlcy4KLSBbYXBwOmxhdGVzdF0oaHR0cHM6Ly9naXRodWIuY29tL29uZGF0YS90YXNrZm9yc2UuaXQvcGFja2FnZXMvMjMzMTcxKTogbmV4dGpzIGFwcGxpY2F0aW9uCi0gW3Byb3h5OmxhdGVzdF0oaHR0cHM6Ly9naXRodWIuY29tL29uZGF0YS90YXNrZm9yc2UuaXQvcGFja2FnZXMvMjMzMTY5KTogbmdpbnggcmV2ZXJzZSBwcm94eSB3aXRoIGNhY2hpbmcKLSBbb3NhOmxhdGVzdF0oaHR0cHM6Ly9naXRodWIuY29tL29uZGF0YS90YXNrZm9yc2UuaXQvcGFja2FnZXMvMjMzOTE4KTogc3dhZ2dlciB1aSBmb3IgQVBJIGRvY3VtZW50YXRpb24KCllvdSBjYW4gc2ltcGx5IGNvcHkgYW5kIHBhc3RlIHRoZSBbZG9ja2VyLWNvbXBvc2UueW1sIGZpbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vbmRhdGEvdGFza2ZvcnNlLml0L2Jsb2IvbWFzdGVyL2RvY2tlci1jb21wb3NlLnltbCkgcHJvdmlkZWQgYW5kIHJ1biBgZG9ja2VyLWNvbXBvc2UgdXBgLiBUaGVuIHlvdSBjYW4gb3BlbiBgaHR0cDovL2xvY2FsaG9zdDo4MDgwYCB1c2luZyB5b3VyIGZhdm91cml0ZSBicm93c2VyLgoKWW91IGNhbiBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHVzaW5nIGEgYC5lbnZgIGZpbGU6Ci0gUFJPWFlfVVJMIC0gVVJMIG9mIG5naW54IHNlcnZlciB3aXRoIHBhdGggZm9yIHByb3hpZWQgR29vZ2xlIFNoZWV0LCBkZWZhdWx0OiBodHRwOi8vcHJveHkvZGIKLSBBUFBfVVJMIC0gVVJMIG9mIG5leHRqcyBhcHBsaWNhdGlvbiwgZGVmYXVsdDogaHR0cDovL2FwcDozMDAwCi0gT0FTX1VSTCAtIFVSTCBvZiBzd2FnZ2VyIHVpIHNlcnZpY2UsIGRlZmF1bHQ6IGh0dHA6Ly9vYXMtdWk6ODA4MAotIFBST0RfUE9SVCAtIFBvcnQgZXhwb3NlZCBvbiBob3N0LCBkZWZhdWx0OiA4MDgwCgojIyMgRGV2ZWxvcG1lbnQKCklmIHlvdSB3YW50IHRvIGNvbnRyaWJ1dGUgdG8gdGhlIGRldmVsb3BtZW50LCB5b3UgY2FuIGZvcmsgYW5kIGNsb25lIHRoaXMgcmVwb3NpdG9yeSwgbWFrZSB5b3VyIGNoYW5nZXMgYW5kIGZpbmFsbHkgc2VuZCBhIHB1bGwgcmVxdWVzdC4KCk5leHRKUyBpcyBhIG5vZGUgYXBwbGljYXRpb24sIHNvIGFmdGVyIGNsb25pbmcgeW91IG11c3QgaW5zdGFsbCBkZXBlbmRlbmNpZXMgcnVubmluZyBgbnBtIGluc3RhbGxgLgoKTWFpbiBkZXBlbmRlbmNpZXM6Ci0gW0ZvbnQgQWF3ZXNvbWUgaWNvbnMgZm9yIHJlYWN0XShodHRwczovL2ZvcnRhd2Vzb21lLmNvbS8pCi0gW01hdGVyaWFsLVVJXShodHRwczovL21hdGVyaWFsLXVpLmNvbS8pCi0gW0F4aW9zXShodHRwczovL2dpdGh1Yi5jb20vYXhpb3MvYXhpb3MpCi0gW0xvZGFzaF0oaHR0cHM6Ly9sb2Rhc2guY29tLykKLSBbTmV4dEpTXShodHRwczovL25leHRqcy5vcmcvKQotIFtSZWFjdF0oaHR0cHM6Ly9yZWFjdGpzLm9yZy8pCgpZb3UgY2FuIHN0YXJ0IGRldmVsb3BtZW50IHNlcnZlciB3aXRoIGhvdCByZWxvYWRpbmcgcnVubmluZyBgbnBtIHJ1biBkZXZgLiBZb3UgY2FuIGFsc28gdGVzdCB0aGUgcHJvZHVjdGlvbiBpbnN0YW5jZSBydW5uaW5nIGBucG0gcnVuIHN0YXJ0YC4gVGhlbiB5b3UgY2FuIG9wZW4gYGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMGAgdXNpbmcgeW91ciBmYXZvdXJpdGUgYnJvd3Nlci4gTm90ZSB0aGF0IHJldmVyc2UgcHJveHkgYW5kIGNhY2hpbmcgYXJlIHVuYXZhaWxhYmxlIG91dHNpZGUgZG9ja2VyIGNvbnRhaW5lcnMuCgojIyMgQVBJCgpBbGwgZGF0YSBhcmUgYXZhaWxhYmxlIG9uIGEgUkVTVCBBUEkgKG9ubHkgR0VUIHZlcmIgaXMgc3VwcG9ydGVkKTogaHR0cHM6Ly93d3cudGFza2ZvcnNlLml0L2FwaS92MS4gVGhlcmUgaXMgYWxzbyBhbiBpbnRlcmFjdGl2ZSBkb2N1bWVudGF0aW9uIHBvd2VyZWQgYnkgW1N3YWdnZXIgVUldKGh0dHBzOi8vc3dhZ2dlci5pby90b29scy9zd2FnZ2VyLXVpLykgYW5kIGNvbXBsaWFudCB0byBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uIHYzXShodHRwOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMyk6IGh0dHBzOi8vd3d3LnRhc2tmb3JzZS5pdC9vYXMvLgoKSWYgeW91IHdhbnQgdG8gY29udHJpYnV0ZSB0byB0aGUgQVBJIGRvY3VtZW50YXRpb24sIHlvdSBjYW4gcnVuIFtTd2FnZ2VyIEVkaXRvcl0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3Rvb2xzL3N3YWdnZXItZWRpdG9yLykgdXNpbmcgdGhlIGRvY2tlci1jb21wb3NlLnltbCBmaWxlIGluIGBvYXMvYCBmb2xkZXIuCgo+IFdhcm5pbmc6IFtDT1JTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9pdC9kb2NzL1dlYi9IVFRQL0NPUlMpIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIGFsbCBvcmlnaW5zLCBpZiB5b3UgbmVlZCB0byBhY2Nlc3MgQVBJIGZyb20gYSBjbGllbnQtc2lkZSBhcHBsaWNhdGlvbiBmZWVsIGZyZWUgdG8gb3BlbiBhbiBpc3N1ZS4KCiMjIExpY2Vuc2UKClRoZSBzb3VyY2UgY29kZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgW01JVCBMaWNlbnNlXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuCgpUaGUgZGF0YWJhc2UgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFtDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIExpY2Vuc2VdKGh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS80LjAvZGVlZC5pdCkuCg== readmeEtag: '"6eb1c6af6a1ec993f84a535e8a9c172bd7d380a0"' readmeLastModified: Fri, 07 Aug 2020 13:21:20 GMT repositoryId: 257328202 description: Nel dubbio... task forse! created: '2020-04-20T15:43:25Z' updated: '2021-11-01T15:42:59Z' language: JavaScript archived: false stars: 4 watchers: 6 forks: 0 owner: ondata logo: https://avatars.githubusercontent.com/u/10263296?v=4 license: MIT repoEtag: '"71d1654db6ce6bfd132c8bb1a7f76efe2f64a7d9ea1b7ddf59f68145cb4cbd1f"' repoLastModified: Mon, 01 Nov 2021 15:42:59 GMT foundInMaster: true category: Server Implementations id: d262bd466cd5b168d2d9100464ef3822 - source: openapi3 tags repository: https://github.com/opensourcewebsite-org/apidocs-opensourcewebsite-org v3: true repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPk9wZW5Tb3VyY2VXZWJzaXRlIEFQSSBEb2N1bWVudGF0aW9uPC9oMT4KCkxpdmU6IFthcGlkb2NzLm9wZW5zb3VyY2V3ZWJzaXRlLm9yZ10oaHR0cHM6Ly9hcGlkb2NzLm9wZW5zb3VyY2V3ZWJzaXRlLm9yZykKClNwZWNpZmljYXRpb246IFtvcGVuYXBpLnlhbWxdKGh0dHBzOi8vYXBpZG9jcy5vcGVuc291cmNld2Vic2l0ZS5vcmcvb3BlbmFwaS55YW1sKQoKVGhlIHJlcG9zaXRvcnkgaXMgYSBwYXJ0IG9mIHRoZSBbT3BlblNvdXJjZVdlYnNpdGUgT3JnYW5pemF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vb3BlbnNvdXJjZXdlYnNpdGUtb3JnKS4gVGhpcyBwcm9qZWN0IGFuZCBldmVyeW9uZSBwYXJ0aWNpcGF0aW5nIGluIGl0IGlzIGdvdmVybmVkIGJ5IHRoZSBbQ29kZSBvZiBDb25kdWN0XShDT0RFX09GX0NPTkRVQ1QubWQpLgoKIyMgQ29udHJpYnV0aW5nCgpQbGVhc2UgcmVhZCB0aHJvdWdoIG91ciBbQ29udHJpYnV0aW5nIEd1aWRlbGluZXNdKENPTlRSSUJVVElORy5tZCkuCgojIyBPcGVuQVBJIFNwZWNpZmljYXRpb24KCmh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZwoKaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24KCmh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYWJvdXQvCgojIyMgUmVzb2x2aW5nIGxvY2FsIGVycm9ycwoKaHR0cHM6Ly9naXRodWIuY29tL21yZG9vYi90aHJlZS5qcy93aWtpL0hvdy10by1ydW4tdGhpbmdzLWxvY2FsbHkKCiMjIEZlZWRiYWNrCgpUbyByZXF1ZXN0IGEgbmV3IGZlYXR1cmUsIHN1Ym1pdCBhIGJ1ZyByZXBvcnQsIGdpdmUgdXMgZmVlZGJhY2ssIHN0YXJ0IGEgZGVzaWduIGRpc2N1c3Npb24gb3IgaGF2ZSBhbiBpZGVhIHRvIG1ha2UgdGhpcyBjb2RlIGJldHRlciBmZWVsIGZyZWUgdG8gW29wZW4gYW4gaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc291cmNld2Vic2l0ZS1vcmcvYXBpZG9jcy1vcGVuc291cmNld2Vic2l0ZS1vcmcvaXNzdWVzKSwgb3IgW2NyZWF0ZSBhIHB1bGwgcmVxdWVzdF0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5zb3VyY2V3ZWJzaXRlLW9yZy9hcGlkb2NzLW9wZW5zb3VyY2V3ZWJzaXRlLW9yZy9wdWxscykuCgpQbGVhc2Ugc2VuZCBhbGwgc2VjdXJpdHkgaXNzdWVzIHRvIFtzZWN1cml0eUBvcGVuc291cmNld2Vic2l0ZS5vcmddKG1haWx0bzpzZWN1cml0eUBvcGVuc291cmNld2Vic2l0ZS5vcmcpLgoKIyMgTGljZW5zZQoKVGhpcyBwcm9qZWN0IGlzIG9wZW4gc291cmNlIGFuZCBhdmFpbGFibGUgZnJlZWx5IHVuZGVyIHRoZSBbTUlUIGxpY2Vuc2VdKExJQ0VOU0UubWQpLgo= readmeEtag: '"ad7d1612469f9e76006bb9e187fa5b1ec68675ea"' readmeLastModified: Tue, 18 Jun 2024 05:46:49 GMT repositoryId: 210095533 description: OpenSourceWebsite API Documentation created: '2019-09-22T05:29:15Z' updated: '2025-12-18T10:49:50Z' language: HTML archived: false stars: 5 watchers: 1 forks: 1 owner: opensourcewebsite-org logo: https://avatars.githubusercontent.com/u/42433667?v=4 license: MIT repoEtag: '"9abbe514a1799e814044fc8d7b9c080635ac8320335059ed560e36474cb8ebf1"' repoLastModified: Thu, 18 Dec 2025 10:49:50 GMT foundInMaster: true category: Server id: 724ad1bbafd532e3bc9d7f8b208672cd - source: openapi3 tags repository: https://github.com/forter/oktabeat v3: true repositoryMetadata: base64Readme: >- IyBPa3RhYmVhdAoKV2VsY29tZSB0byBPa3RhYmVhdC4KCkVuc3VyZSB0aGF0IHRoaXMgZm9sZGVyIGlzIGF0IHRoZSBmb2xsb3dpbmcgbG9jYXRpb246CmAke0dPUEFUSH0vc3JjL2dpdGh1Yi5jb20vZm9ydGVyL29rdGFiZWF0YAoKIyMgR2V0dGluZyBTdGFydGVkIHdpdGggT2t0YWJlYXQKCiMjIyBSZXF1aXJlbWVudHMKCiogW0dvbGFuZ10oaHR0cHM6Ly9nb2xhbmcub3JnL2RsLykgMS43CgojIyMgSW5pdCBQcm9qZWN0ClRvIGdldCBydW5uaW5nIHdpdGggT2t0YWJlYXQgYW5kIGFsc28gaW5zdGFsbCB0aGUKZGVwZW5kZW5jaWVzLCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgCm1ha2Ugc2V0dXAKYGBgCgpJdCB3aWxsIGNyZWF0ZSBhIGNsZWFuIGdpdCBoaXN0b3J5IGZvciBlYWNoIG1ham9yIHN0ZXAuIE5vdGUgdGhhdCB5b3UgY2FuIGFsd2F5cyByZXdyaXRlIHRoZSBoaXN0b3J5IGlmIHlvdSB3aXNoIGJlZm9yZSBwdXNoaW5nIHlvdXIgY2hhbmdlcy4KClRvIHB1c2ggT2t0YWJlYXQgaW4gdGhlIGdpdCByZXBvc2l0b3J5LCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kczoKCmBgYApnaXQgcmVtb3RlIHNldC11cmwgb3JpZ2luIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3J0ZXIvb2t0YWJlYXQKZ2l0IHB1c2ggb3JpZ2luIG1hc3RlcgpgYGAKCkZvciBmdXJ0aGVyIGRldmVsb3BtZW50LCBjaGVjayBvdXQgdGhlIFtiZWF0IGRldmVsb3BlciBndWlkZV0oaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9iZWF0cy9saWJiZWF0L2N1cnJlbnQvbmV3LWJlYXQuaHRtbCkuCgojIyMgQnVpbGQKClRvIGJ1aWxkIHRoZSBiaW5hcnkgZm9yIE9rdGFiZWF0IHJ1biB0aGUgY29tbWFuZCBiZWxvdy4gVGhpcyB3aWxsIGdlbmVyYXRlIGEgYmluYXJ5CmluIHRoZSBzYW1lIGRpcmVjdG9yeSB3aXRoIHRoZSBuYW1lIG9rdGFiZWF0LgoKYGBgCm1ha2UKYGBgCgoKIyMjIFJ1bgoKVG8gcnVuIE9rdGFiZWF0IHdpdGggZGVidWdnaW5nIG91dHB1dCBlbmFibGVkLCBydW46CgpgYGAKLi9va3RhYmVhdCAtYyBva3RhYmVhdC55bWwgLWUgLWQgIioiCmBgYAoKCiMjIyBUZXN0CgpUbyB0ZXN0IE9rdGFiZWF0LCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgCm1ha2UgdGVzdHN1aXRlCmBgYAoKYWx0ZXJuYXRpdmVseToKYGBgCm1ha2UgdW5pdC10ZXN0cwptYWtlIHN5c3RlbS10ZXN0cwptYWtlIGludGVncmF0aW9uLXRlc3RzCm1ha2UgY292ZXJhZ2UtcmVwb3J0CmBgYAoKVGhlIHRlc3QgY292ZXJhZ2UgaXMgcmVwb3J0ZWQgaW4gdGhlIGZvbGRlciBgLi9idWlsZC9jb3ZlcmFnZS9gCgojIyMgVXBkYXRlCgpFYWNoIGJlYXQgaGFzIGEgdGVtcGxhdGUgZm9yIHRoZSBtYXBwaW5nIGluIGVsYXN0aWNzZWFyY2ggYW5kIGEgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGZpZWxkcwp3aGljaCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBiYXNlZCBvbiBgZmllbGRzLnltbGAgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQuCgpgYGAKbWFrZSB1cGRhdGUKYGBgCgoKIyMjIENsZWFudXAKClRvIGNsZWFuICBPa3RhYmVhdCBzb3VyY2UgY29kZSwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYAptYWtlIGZtdApgYGAKClRvIGNsZWFuIHVwIHRoZSBidWlsZCBkaXJlY3RvcnkgYW5kIGdlbmVyYXRlZCBhcnRpZmFjdHMsIHJ1bjoKCmBgYAptYWtlIGNsZWFuCmBgYAoKCiMjIyBDbG9uZQoKVG8gY2xvbmUgT2t0YWJlYXQgZnJvbSB0aGUgZ2l0IHJlcG9zaXRvcnksIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgoKYGBgCm1rZGlyIC1wICR7R09QQVRIfS9zcmMvZ2l0aHViLmNvbS9mb3J0ZXIvb2t0YWJlYXQKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3J0ZXIvb2t0YWJlYXQgJHtHT1BBVEh9L3NyYy9naXRodWIuY29tL2ZvcnRlci9va3RhYmVhdApgYGAKCgpGb3IgZnVydGhlciBkZXZlbG9wbWVudCwgY2hlY2sgb3V0IHRoZSBbYmVhdCBkZXZlbG9wZXIgZ3VpZGVdKGh0dHBzOi8vd3d3LmVsYXN0aWMuY28vZ3VpZGUvZW4vYmVhdHMvbGliYmVhdC9jdXJyZW50L25ldy1iZWF0Lmh0bWwpLgoKCiMjIFBhY2thZ2luZwoKVGhlIGJlYXQgZnJhbWV3b3JrcyBwcm92aWRlcyB0b29scyB0byBjcm9zc2NvbXBpbGUgYW5kIHBhY2thZ2UgeW91ciBiZWF0IGZvciBkaWZmZXJlbnQgcGxhdGZvcm1zLiBUaGlzIHJlcXVpcmVzIFtkb2NrZXJdKGh0dHBzOi8vd3d3LmRvY2tlci5jb20vKSBhbmQgdmVuZG9yaW5nIGFzIGRlc2NyaWJlZCBhYm92ZS4gVG8gYnVpbGQgcGFja2FnZXMgb2YgeW91ciBiZWF0LCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgCm1ha2UgcmVsZWFzZQpgYGAKClRoaXMgd2lsbCBmZXRjaCBhbmQgY3JlYXRlIGFsbCBpbWFnZXMgcmVxdWlyZWQgZm9yIHRoZSBidWlsZCBwcm9jZXNzLiBUaGUgd2hvbGUgcHJvY2VzcyB0byBmaW5pc2ggY2FuIHRha2Ugc2V2ZXJhbCBtaW51dGVzLgo= readmeEtag: '"5b82c112e8ab01564167814309b7dda4fd8994f3"' readmeLastModified: Mon, 13 May 2019 16:32:11 GMT repositoryId: 186449834 description: >- An elasticbeat that polls the Okta System Log https://developer.okta.com/docs/api/resources/system_log/#getting-started created: '2019-05-13T15:43:27Z' updated: '2024-11-18T16:24:41Z' language: Go archived: true stars: 4 watchers: 3 forks: 3 owner: forter logo: https://avatars.githubusercontent.com/u/6420463?v=4 license: NOASSERTION repoEtag: '"fc16c50176ee5bacd4eabc6ad1cdace77d43a80964c3ca4641f96d1872816e9a"' repoLastModified: Mon, 18 Nov 2024 16:24:41 GMT foundInMaster: true category: - Testing - Server Implementations id: 3e376160f047267d96a9ead763511c1b - source: openapi3 tags repository: https://github.com/zhangmazi/json2swagger3-php v3: true repositoryMetadata: base64Readme: >- IyBKc29uMnN3YWdnZXIzLXBocAojIyBKc29uMnN3YWdnZXIzLXBocOaYr+S4gOS4quWFjei0ueW8gOa6kOW3peWFt++8jOS4u+imgeaKilBvc3RtYW7nmoRSZXF1ZXN05ZKMUmVzcG9uc2Xnu5PmnoTovaxTd2FnZ2VyMy1QSFAoT3BlbkFQSTMpCgojIyDlnKjnur/kvb/nlKgKW+eCueaIkeWcqOe6v+ebtOaOpeeUqF0oaHR0cHM6Ly96aGFuZ21hemkuZ2l0aHViLmlvL2pzb24yc3dhZ2dlcjMtcGhwL2luZGV4Lmh0bWwpCgojIyDliJ3oobcK5pa55L6/5YWs5Y+45ZCM5LqL5oqKUG9zdG1hbumHjOeahOivt+axguWSjOi/lOWbnkpzb27ku6PnoIHlv6vmjbfnmoTlhpnlhaVQSFDku6PnoIHph4zvvIzpgJrov4dzd2FnZ2VyLXVp5bGV546w5omA5pyJ5o6l5Y+j77yM5omA5Lul5q2k5bel5YW36K+e55Sf5LqGLgoKIyMjIOacrOW3peWFt+WfuuS6jltTd2FnRGVmR2VuXShodHRwczovL2dpdGh1Yi5jb20vUm9nZXIxMy9Td2FnRGVmR2VuKSwg5bqU6K+l5pWw5Lit5Zu95Y2H57qn54mI5ZCn77yM5pSv5oyBU3dhZ2dlclBIUC1VSSxPcGVuQXBpMy54CgojIyMg5aaC5p6c5Zac5qyi77yM5Y+v5Lul5pSv5LuY5a6d5omT6LWP5LiA5LiL77yM6LCi6LCi77yBCiFb5oSf6LCi5aSn5L2sXShodHRwOi8vd3d3Lm5pbmphOTExLmNvbS9pbWFnZXMvcGF5Mm1lL2FsaXBheS5wbmcpCgo= readmeEtag: '"4c43fabacef97a6b8ed4de08f3528ed5897035a6"' readmeLastModified: Sat, 30 Mar 2019 05:06:02 GMT repositoryId: 177393777 description: Postman的Request和Response结构转Swagger3-PHP(OPENAPI3)工具 created: '2019-03-24T09:22:37Z' updated: '2021-06-28T10:08:26Z' language: JavaScript archived: false stars: 4 watchers: 1 forks: 0 owner: zhangmazi logo: https://avatars.githubusercontent.com/u/1011088?v=4 license: MIT repoEtag: '"8934afb7a79138f297d9d84522a32eec4f3ee6305e2184f68fc45813913ca6cf"' repoLastModified: Mon, 28 Jun 2021 10:08:26 GMT foundInMaster: true category: SDK id: c5fdb5a7e261ee9e90b0ab53e2537c0f - source: openapi3 tags repository: https://github.com/noahehall/nodeproto v3: true repositoryMetadata: base64Readme: >- IyBAbm9kZXByb3RvCgotIHByb2R1Y3QgZGV2ZWxvcG1lbnQgc3RhcnRlcmtpdAogIC0gZm9jdXNlcyBvbiBmdWxsIHN0YWNrIG5vZGUrcmVhY3QgYXBwcyBydW5uaW5nIG9uIEFXUwogIC0gdmFncmFudCArIGRvY2tlciBpbiBkZXYgKHRvZG8pCiAgLSBkb2NrZXIgaW4gcHJvZCAodG9kbykKICAtIHRoaXMgcHJvamVjdCB3aWxsIGJlY29tZSB0aGUgYmFzZSBmb3IgdGhlIGNvcmUgbmlydmFpIHdlYiBhcHAKCi0gaGFyZCByZXF1aXJlbWVudHMgZm9yIGRldmVsb3AgYnJhbmNoCiAgLSBkZXBlbmRlbmN5IHJlcXVpcmVtZW50cwogICAgLSBhbGwgaW1hZ2VzIHB1c2hlZCB0byBbQG5vZGVwcm90byByZWdpc3RyeSBvbiBhd3NdKGh0dHBzOi8vZ2FsbGVyeS5lY3IuYXdzL3owYzNuNGg1L25vZGVwcm90by9hcHBzKQogICAgLSBBcmFuZ29kYiAodG9kbykKICAgIC0gQ2xpY2tIb3VzZSAodG9kbykKICAgIC0gQ29uc3VsICh0b2RvKQogICAgLSBmbG93dHlwZSA+PSAwLjE3MS4wCiAgICAtIGhhcHJveHkgKG5lZWRzIHZpcnR1YWxpemF0aW9uKQogICAgLSBrb2EgPT4gMgogICAgLSBub2RlICsgY29yZXBhY2sgPj0gMTcuNSAoMTcuNiBpcyBvdXQhKQogICAgLSBPcGVuU1NMID49IDEuMS4xIGZvciBUTFN2MS4zIHN1cHBvcnQKICAgIC0gcG5wbSA+PSA2LjMwLjEKICAgIC0gcmVhY3QgKyByZWFjdC1kb20gQHJjIChvciBAbmV4dCkKICAgIC0gU2lnbm96IEFQTSAodG9kbykKICAtIHByb2Nlc3MgcmVxdWlyZW1lbnRzCiAgICAtIHBhY2thZ2UuanNvbi5jb25maWcgaXMgY29udHJvbGxlZCAgYnkgcm9vdC9wYWNrYWdlLmpzb24gYW5kIHN5bmNlZCB0byBjaGlsZCBwYWNrYWdlcyB2aWEgdG9vbHMvanN5bmMKICAgIC0gYWxsIHBhY2thZ2VzIGV4cG9ydCByZXVzYWJsZSB0eXBlIGRlZmluaXRpb25zIGFzIGBAbm9kZXByb3RvL3BhY2thZ2VuYW1lL3NyYy9saWJkZWZzYAogIC0gY3VsdHVyYWwgYm91bmRhcmllcwogICAgLSBiZXN0IGluIGNsYXNzID4gbW9zdCBwb3B1bGFyCiAgICAtIGJsZWVkaW5nIGVkZ2UgYWx3YXlzCiAgICAtIG1vbm9yZXBvIG1pY3Jvc2VydmljZXMgPiBtdWx0aXJlcG8gbWljcm9zZXJ2aWNlcwogICAgLSByZWFkIHRoZSBjb2RlID4gcmVhZCB0aGUgY29tbWVudHMKICAgIC0gc3BlY2lmaWNhdGlvbiA+IGtpdGNoZW4gc2lua3MKICAgIC0gdGVyc2UgY2xhcml0eSA+IHZlcmJvc2UgZXhwcmVzc2l2ZW5lc3MKICAgIC0gdGVzdHMgYXJlIGZpcnN0IGNsYXNzIGNpdGl6ZW5zCiAgICAtIHRydW5rID4gYnJhbmNoCgojIyBUTERSCgoKLSBzZXJ2aWNlcwogIC0gW0Bub2RlcHJvdG8vY2xpZW50IC0gUmVhY3RAbmV4dCBmcm9udGVuZF0ocGFja2FnZXMvYXBwcy9jbGllbnQvUkVBRE1FLm1kKQogIC0gW0Bub2RlcHJvdG8vYXV0aG56IC0ga29hL29wZW5hcGkgYmFja2VuZF0ocGFja2FnZXMvYXBwcy9hdXRobnovUkVBRE1FLm1kKQotIGxpYnJhcmllcwogIC0gW0Bub2RlcHJvdG8vY29uZmlncHJvdG8gLSBTdGF0aWMgY29uZmlndXJhdGlvbnNdKHBhY2thZ2VzL2xpYnJhcmllcy9jb25maWdwcm90by9SRUFETUUubWQpCiAgLSBbQG5vZGVwcm90by9zaGFyZWQgLSB1dGlsaXR5IGZuc10ocGFja2FnZXMvbGlicmFyaWVzL3NoYXJlZC9SRUFETUUubWQpCiAgLSBbQG5vZGVwcm90by90ZXN0cHJvdG8gLSBIaWdoIFZlbG9jaXR5IHRlc3Qgc3VpdGVdKHBhY2thZ2VzL2xpYnJhcmllcy90ZXN0cHJvdG8vUkVBRE1FLm1kKQogIC0gW0Bub2RlcHJvdG8vZW52cHJvdG8gLSBlbnYvU1NMIG1hbmFnZW1lbnRdKHBhY2thZ2VzL2xpYnJhcmllcy9lbnZwcm90by9SRUFETUUubWQpCiAgLSBbQG5vZGVwcm90by9idWlsZHByb3RvIC0gZXNidWlsZC93ZWJwYWNrOiBidWlsZCBhbnl0aGluZyBydW4gZXZlcnl3aGVyZV0ocGFja2FnZXMvbGlicmFyaWVzL2J1aWxkcHJvdG8vUkVBRE1FLm1kKQogIC0gW0Bub2RlcHJvdG8vd3RmIC0gV2hlcmUgdGhlIGZpbGU/IHN5c3RlbSBsb2NhdGlvbnMgJiBmaWxlIG1hbmFnZW1lbnRdKHBhY2thZ2VzL2xpYnJhcmllcy93dGYvUkVBRE1FLm1kKQotIHRvb2xzCiAgLSBbQG5vZGVwcm90by9qc3luYyAtIHN5bmNocm9uaXplIHBhY2thZ2UuanNvbltjXSBmaWxlc10ocGFja2FnZXMvdG9vbHMvanN5bmMvUkVBRE1FLm1kKQoKIyMjIG5wbSBzY3JpcHRzCgotIHlvdSBjYW4gcHJlcGVuZCBiZWZvcmUgYW55IG5wbSBzY3JpcHQKICAtIGBwcm90b2Agb3IgYHByb3RvOnNjcmlwdGAgY21kIHRvIHJ1biBpbiBhbGwgcGFja2FnZXMKICAgIC0gcHJvdG8gcnVucyBjbWRzIGluIGVhY2ggcGtnIHZpYSB1bHRyYQogICAgLSBwcm90bzpzY3JpcHQgcnVucyBjbWRzIGluIGVhY2ggcGtnIHZpYSBwbnBtCiAgLSBgdWx0cmFgIHRvIHJ1biB2aWEgdWx0cmEtcnVubmVyCgojIyMgdW5pbnN0YWxsCgotIHRvIHJlbW92ZSB0aGlzIHJlcG9zaXRvcnkgY29tcGxldGVseSBmcm9tIHlvdXIgc3lzdGVtCi0gZGVsZXRlIHRoZSBgL3Zhci8ubm9kZXByb3RvYCBkaXJlY3RvcnksIGFuZCB0aGlzIHJlcG9zaXRvcnkKCiMjIyBpbnN0YWxsYXRpb24gKGNvbnRyaWJ1dGluZykKCi0gdmFncmFudCAocmVjb21tZW5kZWQpLCByZXF1aXJlcyA+PSB2Mi4yCgpgYGBzaAogIHZhZ3JhbnQgdXAKICB2YWdyYW50IHNzaAogIGNkIC9vcHQvbm9kZXByb3RvCmBgYAoKLSBiYXJlIG1ldGFsCmBgYHNoCiAgIyBkZXBlbmRlbmN5ICsgcG5wbSBtZXRhZGF0YQogIHN1ZG8gbWtkaXIgL3Zhci8ubm9kZXByb3RvCiAgc3VkbyBjaG93biAtUiAkKHdob2FtaSk6JCh3aG9hbWkpIC92YXIvLm5vZGVwcm90bwogIHBucG0gaW5zdGFsbC1jb21wbGV0aW9uCiAgcG5wbSBpbnN0YWxsCiAgcG5wbSBwcm90bzpzY3JpcHQgYnVpbGQKICBwbnBtIHByb3RvOnNjcmlwdCByZXBvOnRlc3QKYGBgCgotIG90aGVyIGhlbGxwZnVsIGNtZHMKCmBgYHNoCiAgIyBkZXBlbmRlbmNpZXMKICBwbnBtIHByb3RvIHJlcG86Zmxvd3R5cGVkOmluc3RhbGwgIyBpbnN0YWxsIGZsb3d0eXBlIGRlZnMKICBwbnBtIHByb3RvIHJlcG86anN5bmMgIyBzeW5jaHJvbml6ZSByb290L3BhY2thZ2UuanNvbiBpbnRvIGVhY2ggcGFja2FnZS9wYWNrYWdlLmpzb24KCiAgIyB2YWxpZGF0aW9uCiAgcG5wbSBwcm90byByZXBvOmxpbnQKCiAgIyBpbnRyb3NwZWN0aW9uCiAgcG5wbSByZXBvOmRlcHM6Z3JhcGgKICBwbnBtIHJlcG86c2NyaXB0czp2CmBgYAoKCiMjIyB1cGRhdGluZwoKYGBgc2gKICBwbnBtIHByb3RvIHJlcG86dXBkYXRlICMgdXBkYXRlcyBhbGwgZGVwcyB0byBsYXRlc3QKYGBgCgojIyMgcnVubmluZyB0ZXN0cyAmIGxpbnRzCgpgYGBzaAogIHBucG0gcmVwbzpsaW50ICMgcnVucyBlc2xpbnQgKGZpeCBtb2RlKSwgcHJldHRpZXIsIGZsb3cgKyB0eXBlIGNvdmVyYWdlCiAgcG5wbSByZXBvOmVzbGludCAjIHJ1bnMgZXNsaW50IGZsb3cgJiBwcmV0dGllciwgZmFpbHMgb24gZmlyc3QgcGFja2FnZSB3aXRoIGxpbnQgZXJycwogIHBucG0gcmVwbzplc2xpbnQ6Zml4ICMgc2FtZSBhcyBhYm92ZSwgYnV0IGRvZXNudCBmYWlsCiAgcG5wbSByZXBvOmZsb3c6Y292ZXJhZ2UgIyBydW5zIGZsb3cgd2l0aCB0eXBlIGRlZiBjb3ZlcmFnZQogIHBucG0gZmxvdyAjIGRldGFpbGVkIGZsb3d0eXBlIGFuYWx5c2lzCiAgcG5wbSBmbG93IHN0b3B8c3RhcnQgIyByZXN0YXJ0IGZsb3cgc2VydmVyLCBzb21ldGltZXMgaXQgZmFpbHMgdG8gcGljayB1cCBjaGFuZ2VzIHRvIGRlZXAgZXh0ZXJuYWwgbGliZGVmcwogIHBucG0gcmVwbzp0ZXN0ICMgcnVuIHRlc3RzCiAgcG5wbSByZXBvOnRlc3RpbmcgIyB3YXRjaCAmIHJlcnVuIHRlc3RzIGluIGEgc2luZ2xlIHBhY2thZ2UKICBwbnBtIHJlcG86dGVzdDpmaWxlIHNvbWVmaWxlICMgcnVuIGEgc3BlY2lmaWMgdGVzdCBmaWxlCgpgYGAK readmeEtag: '"442171f34684c5a02b29465f4b5dd66ec5748f54"' readmeLastModified: Fri, 15 Apr 2022 00:02:03 GMT repositoryId: 369644109 description: build prototypes, fast! created: '2021-05-21T20:12:07Z' updated: '2023-10-17T15:24:24Z' language: HTML archived: true stars: 4 watchers: 1 forks: 0 owner: noahehall logo: https://avatars.githubusercontent.com/u/10324554?v=4 license: NOASSERTION repoEtag: '"309a96239f4688c0ad569d6d9e4b05a89ec4ea0623bdaf941dc499a40757f780"' repoLastModified: Tue, 17 Oct 2023 15:24:24 GMT foundInMaster: true category: Testing id: 37b213c383b786f80ef2ad7961c30558 - source: openapi3 tags repository: https://github.com/apiportal/abyss-spec-transformer v3: true repositoryMetadata: base64Readme: >- WyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvYXBpcG9ydGFsL2FieXNzLXNwZWMtdHJhbnNmb3JtZXIuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvYXBpcG9ydGFsL2FieXNzLXNwZWMtdHJhbnNmb3JtZXIpCgojIEFCWVNTIFNQRUMgVFJBTlNGT1JNRVIKClRoaXMgYXBwbGljYXRpb24gdHJhbnNmb3JtcyBwcm92aWRlZCBgV1NETGAgaW50byBhbiBgT3BlbkFQSSB2M2Agc3BlYyB5YW1sIGZpbGUuIFdTREwgc2hvdWxkIGJlIHByb3ZpZGVkIHZpYSBwYXRoLCBVUkkgb3IgU3RyaW5nICAKCkFuIGV4YW1wbGUgaXMgYmVsb3cKCioqSW5wdXQqKgoKYGBgeG1sCjw/eG1sIHZlcnNpb249IjEuMCIgc3RhbmRhbG9uZT0ibm8iPz4KPHdzZGw6ZGVmaW5pdGlvbnMgeG1sbnM6d3NkbD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC8iCiAgICAgICAgICAgICAgICAgIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyIKICAgICAgICAgICAgICAgICAgeG1sbnM6d3Nhdz0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8wNS9hZGRyZXNzaW5nL3dzZGwiCiAgICAgICAgICAgICAgICAgIHhtbG5zOmh0dHA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvaHR0cC8iCiAgICAgICAgICAgICAgICAgIHhtbG5zOnRucz0iaHR0cDovL3Rob21hcy1iYXllci5jb20vYmx6LyIKICAgICAgICAgICAgICAgICAgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgeG1sbnM6bWltZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9taW1lLyIKICAgICAgICAgICAgICAgICAgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC9zb2FwLyIKICAgICAgICAgICAgICAgICAgeG1sbnM6c29hcDEyPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsL3NvYXAxMi8iCiAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3Rob21hcy1iYXllci5jb20vYmx6LyI+CiAgICA8d3NkbDpkb2N1bWVudGF0aW9uPkJMWlNlcnZpY2U8L3dzZGw6ZG9jdW1lbnRhdGlvbj4KICAgIDx3c2RsOnR5cGVzPgogICAgICAgIDx4c2Q6c2NoZW1hIGF0dHJpYnV0ZUZvcm1EZWZhdWx0PSJ1bnF1YWxpZmllZCIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3Rob21hcy1iYXllci5jb20vYmx6LyI+CiAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJnZXRCYW5rIiB0eXBlPSJ0bnM6Z2V0QmFua1R5cGUiPjwveHNkOmVsZW1lbnQ+CiAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBuYW1lPSJnZXRCYW5rUmVzcG9uc2UiIHR5cGU9InRuczpnZXRCYW5rUmVzcG9uc2VUeXBlIj48L3hzZDplbGVtZW50PgogICAgICAgICAgICA8eHNkOmNvbXBsZXhUeXBlIG5hbWU9ImdldEJhbmtUeXBlIj4KICAgICAgICAgICAgICAgIDx4c2Q6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICAgICAgPHhzZDplbGVtZW50IG5hbWU9ImJseiIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KICAgICAgICAgICAgICAgIDwveHNkOnNlcXVlbmNlPgogICAgICAgICAgICA8L3hzZDpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJnZXRCYW5rUmVzcG9uc2VUeXBlIj4KICAgICAgICAgICAgICAgIDx4c2Q6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICAgICAgPHhzZDplbGVtZW50IG5hbWU9ImRldGFpbHMiIHR5cGU9InRuczpkZXRhaWxzVHlwZSI+PC94c2Q6ZWxlbWVudD4KICAgICAgICAgICAgICAgIDwveHNkOnNlcXVlbmNlPgogICAgICAgICAgICA8L3hzZDpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJkZXRhaWxzVHlwZSI+CiAgICAgICAgICAgICAgICA8eHNkOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG5hbWU9ImJlemVpY2hudW5nIiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgogICAgICAgICAgICAgICAgICAgIDx4c2Q6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG5hbWU9ImJpYyIgdHlwZT0ieHNkOnN0cmluZyI+PC94c2Q6ZWxlbWVudD4KICAgICAgICAgICAgICAgICAgICA8eHNkOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBuYW1lPSJvcnQiIHR5cGU9InhzZDpzdHJpbmciPjwveHNkOmVsZW1lbnQ+CiAgICAgICAgICAgICAgICAgICAgPHhzZDplbGVtZW50IG1pbk9jY3Vycz0iMCIgbmFtZT0icGx6IiB0eXBlPSJ4c2Q6c3RyaW5nIj48L3hzZDplbGVtZW50PgogICAgICAgICAgICAgICAgPC94c2Q6c2VxdWVuY2U+CiAgICAgICAgICAgIDwveHNkOmNvbXBsZXhUeXBlPgogICAgICAgIDwveHNkOnNjaGVtYT4KICAgIDwvd3NkbDp0eXBlcz4KICAgIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZ2V0QmFuayI+CiAgICAgICAgPHdzZGw6cGFydCBuYW1lPSJwYXJhbWV0ZXJzIiBlbGVtZW50PSJ0bnM6Z2V0QmFuayI+PC93c2RsOnBhcnQ+CiAgICA8L3dzZGw6bWVzc2FnZT4KICAgIDx3c2RsOm1lc3NhZ2UgbmFtZT0iZ2V0QmFua1Jlc3BvbnNlIj4KICAgICAgICA8d3NkbDpwYXJ0IG5hbWU9InBhcmFtZXRlcnMiIGVsZW1lbnQ9InRuczpnZXRCYW5rUmVzcG9uc2UiPjwvd3NkbDpwYXJ0PgogICAgPC93c2RsOm1lc3NhZ2U+CiAgICA8d3NkbDpwb3J0VHlwZSBuYW1lPSJCTFpTZXJ2aWNlUG9ydFR5cGUiPgogICAgICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJnZXRCYW5rIj4KICAgICAgICAgICAgPHdzZGw6aW5wdXQgbWVzc2FnZT0idG5zOmdldEJhbmsiPjwvd3NkbDppbnB1dD4KICAgICAgICAgICAgPHdzZGw6b3V0cHV0IG1lc3NhZ2U9InRuczpnZXRCYW5rUmVzcG9uc2UiIHdzYXc6QWN0aW9uPSJodHRwOi8vdGhvbWFzLWJheWVyLmNvbS9ibHovQkxaU2VydmljZS9nZXRCYW5rUmVzcG9uc2UiPjwvd3NkbDpvdXRwdXQ+CiAgICAgICAgPC93c2RsOm9wZXJhdGlvbj4KICAgIDwvd3NkbDpwb3J0VHlwZT4KICAgIDx3c2RsOmJpbmRpbmcgbmFtZT0iQkxaU2VydmljZVNPQVAxMUJpbmRpbmciIHR5cGU9InRuczpCTFpTZXJ2aWNlUG9ydFR5cGUiPgogICAgICAgIDxzb2FwOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCI+PC9zb2FwOmJpbmRpbmc+CiAgICAgICAgPHdzZGw6b3BlcmF0aW9uIG5hbWU9ImdldEJhbmsiPgogICAgICAgICAgICA8c29hcDpvcGVyYXRpb24gc3R5bGU9ImRvY3VtZW50IiBzb2FwQWN0aW9uPSIiPjwvc29hcDpvcGVyYXRpb24+CiAgICAgICAgICAgIDx3c2RsOmlucHV0PgogICAgICAgICAgICAgICAgPHNvYXA6Ym9keSB1c2U9ImxpdGVyYWwiPjwvc29hcDpib2R5PgogICAgICAgICAgICA8L3dzZGw6aW5wdXQ+CiAgICAgICAgICAgIDx3c2RsOm91dHB1dD4KICAgICAgICAgICAgICAgIDxzb2FwOmJvZHkgdXNlPSJsaXRlcmFsIj48L3NvYXA6Ym9keT4KICAgICAgICAgICAgPC93c2RsOm91dHB1dD4KICAgICAgICA8L3dzZGw6b3BlcmF0aW9uPgogICAgPC93c2RsOmJpbmRpbmc+CiAgICA8d3NkbDpiaW5kaW5nIG5hbWU9IkJMWlNlcnZpY2VTT0FQMTJCaW5kaW5nIiB0eXBlPSJ0bnM6QkxaU2VydmljZVBvcnRUeXBlIj4KICAgICAgICA8c29hcDEyOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiB0cmFuc3BvcnQ9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvaHR0cCI+PC9zb2FwMTI6YmluZGluZz4KICAgICAgICA8d3NkbDpvcGVyYXRpb24gbmFtZT0iZ2V0QmFuayI+CiAgICAgICAgICAgIDxzb2FwMTI6b3BlcmF0aW9uIHN0eWxlPSJkb2N1bWVudCIgc29hcEFjdGlvbj0iIj48L3NvYXAxMjpvcGVyYXRpb24+CiAgICAgICAgICAgIDx3c2RsOmlucHV0PgogICAgICAgICAgICAgICAgPHNvYXAxMjpib2R5IHVzZT0ibGl0ZXJhbCI+PC9zb2FwMTI6Ym9keT4KICAgICAgICAgICAgPC93c2RsOmlucHV0PgogICAgICAgICAgICA8d3NkbDpvdXRwdXQ+CiAgICAgICAgICAgICAgICA8c29hcDEyOmJvZHkgdXNlPSJsaXRlcmFsIj48L3NvYXAxMjpib2R5PgogICAgICAgICAgICA8L3dzZGw6b3V0cHV0PgogICAgICAgIDwvd3NkbDpvcGVyYXRpb24+CiAgICA8L3dzZGw6YmluZGluZz4KICAgIDx3c2RsOmJpbmRpbmcgbmFtZT0iQkxaU2VydmljZUh0dHBCaW5kaW5nIiB0eXBlPSJ0bnM6QkxaU2VydmljZVBvcnRUeXBlIj4KICAgICAgICA8aHR0cDpiaW5kaW5nIHZlcmI9IlBPU1QiPjwvaHR0cDpiaW5kaW5nPgogICAgICAgIDx3c2RsOm9wZXJhdGlvbiBuYW1lPSJnZXRCYW5rIj4KICAgICAgICAgICAgPGh0dHA6b3BlcmF0aW9uIGxvY2F0aW9uPSJCTFpTZXJ2aWNlL2dldEJhbmsiPjwvaHR0cDpvcGVyYXRpb24+CiAgICAgICAgICAgIDx3c2RsOmlucHV0PgogICAgICAgICAgICAgICAgPG1pbWU6Y29udGVudCBwYXJ0PSJnZXRCYW5rIiB0eXBlPSJ0ZXh0L3htbCI+PC9taW1lOmNvbnRlbnQ+CiAgICAgICAgICAgIDwvd3NkbDppbnB1dD4KICAgICAgICAgICAgPHdzZGw6b3V0cHV0PgogICAgICAgICAgICAgICAgPG1pbWU6Y29udGVudCBwYXJ0PSJnZXRCYW5rIiB0eXBlPSJ0ZXh0L3htbCI+PC9taW1lOmNvbnRlbnQ+CiAgICAgICAgICAgIDwvd3NkbDpvdXRwdXQ+CiAgICAgICAgPC93c2RsOm9wZXJhdGlvbj4KICAgIDwvd3NkbDpiaW5kaW5nPgogICAgPHdzZGw6c2VydmljZSBuYW1lPSJCTFpTZXJ2aWNlIj4KICAgICAgICA8d3NkbDpwb3J0IG5hbWU9IkJMWlNlcnZpY2VTT0FQMTFwb3J0X2h0dHAiIGJpbmRpbmc9InRuczpCTFpTZXJ2aWNlU09BUDExQmluZGluZyI+CiAgICAgICAgICAgIDxzb2FwOmFkZHJlc3MgbG9jYXRpb249Imh0dHA6Ly93d3cudGhvbWFzLWJheWVyLmNvbS9heGlzMi9zZXJ2aWNlcy9CTFpTZXJ2aWNlIj48L3NvYXA6YWRkcmVzcz4KICAgICAgICA8L3dzZGw6cG9ydD4KICAgICAgICA8d3NkbDpwb3J0IG5hbWU9IkJMWlNlcnZpY2VTT0FQMTJwb3J0X2h0dHAiIGJpbmRpbmc9InRuczpCTFpTZXJ2aWNlU09BUDEyQmluZGluZyI+CiAgICAgICAgICAgIDxzb2FwMTI6YWRkcmVzcyBsb2NhdGlvbj0iaHR0cDovL3d3dy50aG9tYXMtYmF5ZXIuY29tL2F4aXMyL3NlcnZpY2VzL0JMWlNlcnZpY2UiPjwvc29hcDEyOmFkZHJlc3M+CiAgICAgICAgPC93c2RsOnBvcnQ+CiAgICAgICAgPHdzZGw6cG9ydCBuYW1lPSJCTFpTZXJ2aWNlSHR0cHBvcnQiIGJpbmRpbmc9InRuczpCTFpTZXJ2aWNlSHR0cEJpbmRpbmciPgogICAgICAgICAgICA8aHR0cDphZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vd3d3LnRob21hcy1iYXllci5jb20vYXhpczIvc2VydmljZXMvQkxaU2VydmljZSI+PC9odHRwOmFkZHJlc3M+CiAgICAgICAgPC93c2RsOnBvcnQ+CiAgICA8L3dzZGw6c2VydmljZT4KPC93c2RsOmRlZmluaXRpb25zPgpgYGAKCj5jcmVkaXQgdG8gaHR0cDovL3d3dy50aG9tYXMtYmF5ZXIuY29tLwoKCioqVXNhZ2UqKgoKYGBgamF2YQpTdHJpbmcgc291cmNlUGF0aCA9ICJodHRwOi8vdGhvbWFzLWJheWVyLmNvbS9heGlzMi9zZXJ2aWNlcy9CTFpTZXJ2aWNlP3dzZGwiOwpyZXR1cm4gbmV3IE9wZW5BUElUcmFuc2Zvcm1lcigpLnRyYW5zZm9ybShzb3VyY2VQYXRoKTsgICAgICAgIApgYGAKCioqT3V0cHV0KioKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjEKaW5mbzoKICB0aXRsZTogQkxaU2VydmljZQogIHZlcnNpb246ICIxLjAiCnNlcnZlcnM6Ci0gdXJsOiBodHRwOi8vd3d3LnRob21hcy1iYXllci5jb20vYXhpczIvc2VydmljZXMvQkxaU2VydmljZQp0YWdzOgotIG5hbWU6IEJMWlNlcnZpY2VTT0FQMTFCaW5kaW5nCiAgZXh0ZXJuYWxEb2NzOgogICAgZGVzY3JpcHRpb246IFNvYXAgMS4xIFNlcnZpY2UKICAgIHVybDogaHR0cDovL3d3dy50aG9tYXMtYmF5ZXIuY29tL2F4aXMyL3NlcnZpY2VzL0JMWlNlcnZpY2UKLSBuYW1lOiBCTFpTZXJ2aWNlSHR0cEJpbmRpbmcKICBleHRlcm5hbERvY3M6CiAgICBkZXNjcmlwdGlvbjogSFRUUCBTZXJ2aWNlCiAgICB1cmw6IGh0dHA6Ly93d3cudGhvbWFzLWJheWVyLmNvbS9heGlzMi9zZXJ2aWNlcy9CTFpTZXJ2aWNlCi0gbmFtZTogQkxaU2VydmljZVNPQVAxMkJpbmRpbmcKICBleHRlcm5hbERvY3M6CiAgICBkZXNjcmlwdGlvbjogU29hcCAxLjIgU2VydmljZQogICAgdXJsOiBodHRwOi8vd3d3LnRob21hcy1iYXllci5jb20vYXhpczIvc2VydmljZXMvQkxaU2VydmljZQpwYXRoczoKICAvQkxaU2VydmljZS9nZXRCYW5rOgogICAgcG9zdDoKICAgICAgdGFnczoKICAgICAgLSBCTFpTZXJ2aWNlSHR0cEJpbmRpbmcKICAgICAgb3BlcmF0aW9uSWQ6IGdldEJhbmtfSHR0cFNlcnZpY2UKICAgICAgcmVxdWVzdEJvZHk6CiAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9yZXF1ZXN0Qm9kaWVzL2dldEJhbmsnCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAyMDA6CiAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3Jlc3BvbnNlcy8yMDBfZ2V0QmFua1Jlc3BvbnNlJwogIC9nZXRCYW5rOgogICAgcG9zdDoKICAgICAgdGFnczoKICAgICAgLSBCTFpTZXJ2aWNlU09BUDEyQmluZGluZwogICAgICAtIEJMWlNlcnZpY2VTT0FQMTFCaW5kaW5nCiAgICAgIG9wZXJhdGlvbklkOiBnZXRCYW5rX1NvYXBTZXJ2aWNlCiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvcmVxdWVzdEJvZGllcy9nZXRCYW5rJwogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9yZXNwb25zZXMvMjAwX2dldEJhbmtSZXNwb25zZScKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgZ2V0QmFua1Jlc3BvbnNlVHlwZToKICAgICAgdGl0bGU6IGdldEJhbmtSZXNwb25zZVR5cGUKICAgICAgcmVxdWlyZWQ6CiAgICAgIC0gZGV0YWlscwogICAgICB0eXBlOiBvYmplY3QKICAgICAgcHJvcGVydGllczoKICAgICAgICBkZXRhaWxzOgogICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL2RldGFpbHNUeXBlJwogICAgZ2V0QmFua1Jlc3BvbnNlOgogICAgICB0aXRsZTogZ2V0QmFua1Jlc3BvbnNlCiAgICAgIHJlcXVpcmVkOgogICAgICAtIGdldEJhbmtSZXNwb25zZVR5cGUKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgZ2V0QmFua1Jlc3BvbnNlVHlwZToKICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9nZXRCYW5rUmVzcG9uc2VUeXBlJwogICAgZ2V0QmFua1R5cGU6CiAgICAgIHRpdGxlOiBnZXRCYW5rVHlwZQogICAgICByZXF1aXJlZDoKICAgICAgLSBibHoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgYmx6OgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICBkZXRhaWxzVHlwZToKICAgICAgdGl0bGU6IGRldGFpbHNUeXBlCiAgICAgIHJlcXVpcmVkOgogICAgICAtIGJlemVpY2hudW5nCiAgICAgIC0gYmljCiAgICAgIC0gb3J0CiAgICAgIC0gcGx6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGJlemVpY2hudW5nOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgYmljOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgb3J0OgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgcGx6OgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICBnZXRCYW5rOgogICAgICB0aXRsZTogZ2V0QmFuawogICAgICByZXF1aXJlZDoKICAgICAgLSBnZXRCYW5rVHlwZQogICAgICB0eXBlOiBvYmplY3QKICAgICAgcHJvcGVydGllczoKICAgICAgICBnZXRCYW5rVHlwZToKICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9nZXRCYW5rVHlwZScKICByZXNwb25zZXM6CiAgICAyMDBfZ2V0QmFua1Jlc3BvbnNlOgogICAgICBkZXNjcmlwdGlvbjogU3VjY2Vzc2Z1bCBvcGVyYXRpb24KICAgICAgY29udGVudDoKICAgICAgICBhcHBsaWNhdGlvbi94bWw6CiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMveC1tZXNzYWdlcy9nZXRCYW5rUmVzcG9uc2UnCiAgcmVxdWVzdEJvZGllczoKICAgIGdldEJhbms6CiAgICAgIGRlc2NyaXB0aW9uOiBnZXRCYW5rIG1lc3NhZ2Ugb2JqZWN0IGFzIHJlcXVlc3QgYm9keQogICAgICBjb250ZW50OgogICAgICAgIGFwcGxpY2F0aW9uL3htbDoKICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy94LW1lc3NhZ2VzL2dldEJhbmsnCiAgICAgIHJlcXVpcmVkOiB0cnVlCiAgeC1tZXNzYWdlczoKICAgIGdldEJhbmtSZXNwb25zZToKICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL2dldEJhbmtSZXNwb25zZScKICAgIGdldEJhbms6CiAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9nZXRCYW5rJwpgYGA= readmeEtag: '"55c05ba0aa538774c6ccee25f0a5436d9cecd18e"' readmeLastModified: Wed, 08 May 2019 16:25:42 GMT repositoryId: 182996886 description: Abyss Spec Transformer Project https://apiportal.com created: '2019-04-23T11:04:16Z' updated: '2019-10-08T20:22:59Z' language: Java archived: false stars: 4 watchers: 3 forks: 2 owner: apiportal logo: https://avatars.githubusercontent.com/u/49755495?v=4 license: Apache-2.0 repoEtag: '"51adc3ece8f467a3a73ac1af22b1634ad5a45f024f321c53bc61be1b5b31cbe8"' repoLastModified: Tue, 08 Oct 2019 20:22:59 GMT foundInMaster: true category: Parsers id: 8f099ab923615e467822d1db90695ec1 - source: openapi3 tags repository: https://github.com/mohitkumarsahni/todo-api v3: true id: bc0238674e6a94f258aeca89c30ea2af repositoryMetadata: base64Readme: >- IyMgVG9Eby1BUEkKQW4gQVBJIGZvciBjcmVhdGluZyBhbmQgbWFuYWdpbmcgdGFza3MuCgojIyMgVGhlIEFQSSBjYW4gcGVyZm9ybSBmb2xsb3dpbmcgb3BlcmF0aW9uczoKCi0gW3hdIENyZWF0ZSBhIG5ldyB0YXNrLWxpc3QuCi0gW3hdIFVwZGF0ZSBhIHRhc2stbGlzdC4KLSBbeF0gRmV0Y2ggYSB0YXNrLWxpc3QuCi0gW3hdIERlbGV0ZSBhIHRhc2stbGlzdC4KLSBbeF0gQ3JlYXRlIGEgbmV3IHRhc2sgaW4gYSB0YXNrLWxpc3QuCi0gW3hdIFVwZGF0ZSBhIHRhc2sgaW4gYSB0YXNrLWxpc3QuCi0gW3hdIEZldGNoIGEgdGFzay4KLSBbeF0gRmV0Y2ggYWxsIHRhc2tzIGluIGEgdGFzay1saXN0LgotIFt4XSBEZWxldGUgYSB0YXNrIGluIGEgdGFzay1saXN0LgoKUGxlYXNlIHNlZSB0aGUgW29wZW5hcGkgY29udHJhY3RdKC4vZG9jcy9hcGktY29udHJhY3QueWFtbCkgZm9yIEFQSSBlbmRwb2ludHMgYW5kIGRldGFpbHMuCgojIyMgUHJlcmVxdWlzaXRlcwoKIyMjIyBJbnN0YWxsIEphdmEgMTEKLSBUaGlzIGFwcGxpY2F0aW9uIHJlcXVpcmVzIEphdmEgMTEuCi0gUGxlYXNlIHJlZmVyIHRvIHRoZSBmb2xsb3dpbmcgbGluayB0byBkb3dubG9hZCBhbmQgaW5zdGFsbCBKYXZhLTExOiBbSmF2YS0xMV0oaHR0cHM6Ly93d3cub3JhY2xlLmNvbS9pbi9qYXZhL3RlY2hub2xvZ2llcy9qYXZhc2UvamRrMTEtYXJjaGl2ZS1kb3dubG9hZHMuaHRtbCkKCiMjIyMgSW5zdGFsbCAmIFNldHVwIERhdGFiYXNlCi0gVGhpcyBhcHBsaWNhdGlvbiByZXF1aXJlcyBNeVNRTCA4LgotIFBsZWFzZSByZWZlciB0byB0aGUgZm9sbG93aW5nIGxpbmsgdG8gZG93bmxvYWQgYW5kIGluc3RhbGwgTXlTUUwtODogW015U1FMLThdKGh0dHBzOi8vZGV2Lm15c3FsLmNvbS9kb2MvcmVmbWFuLzguMC9lbi9pbnN0YWxsaW5nLmh0bWwpCi0gVG8gY3JlYXRlIGRhdGFiYXNlIGFuZCB1c2VyIHlvdSBjYW4gcnVuIGZvbGxvd2luZyBzY3JpcHQ6IFtkYl9zZXR1cC5zcWxdKC4vZG9jcy9kYXRhYmFzZS9kYl9zZXR1cC5zcWwpCgojIyMgUnVubmluZyB0aGUgYXBwbGljYXRpb24KLSBDbG9uZSB0aGUgcmVwb3NpdG9yeS4KLSBPcGVuIHRoZSBwcm9qZWN0IGluIEludGVsbGlKIElERUEgb3IgYW55IHN1aXRhYmxlIElERSBvZiB5b3VyIGNob2ljZS4KLSBBZGQgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBjb25maWd1cmF0aW9uczoKICAtIERCX0hPU1QKICAtIERCX05BTUUKICAtIERCX1BBU1NXT1JECiAgLSBEQl9QT1JUCiAgLSBEQl9VU0VSTkFNRQotIEluIEludGVsbGlKIElERUEsIGVudmlyb25tZW50IHZhcmlhYmxlcyBjYW4gYmUgYWRkZWQgZnJvbSBSdW4gLT4gRWRpdCBDb25maWd1cmF0aW9ucyAtPiBFbnZpcm9ubWVudCBWYXJpYWJsZXMKLSBSdW4gdGhlIHByb2plY3QuCgojIyMgQnVpbGQgJiBydW4gd2l0aCBEb2NrZXIgb24gVWJ1bnR1Ci0gSW5zdGFsbCBEb2NrZXIgZnJvbTogW0RvY2tlcl0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL2luc3RhbGwvdWJ1bnR1LykKLSBJbiB0ZXJtaW5hbCBzd2l0Y2ggdG8gcHJvamVjdCBkaXJlY3RvcnkuCi0gVXNlIGZvbGxvd2luZyBjb21tYW5kOiBgZG9ja2VyIGJ1aWxkIC10IHRvZG8tYXBpOjEuMC4wIC5gCi0gQWJvdmUgY29tbWFuZCB3aWxsIGJ1aWxkIHRoZSBpbWFnZS4KLSBOb3cgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCiAgYHN1ZG8gZG9ja2VyIHJ1biB0b2RvLWFwaToxLjAuMCAtZSAiREJfSE9TVD08REJfSE9TVD4iIC1lICJEQl9QT1JUPTxEQl9QT1JUPiIgLWUgIkRCX05BTUU9PERCX05BTUU+IiAtZSAiREJfVVNFUk5BTUU9PERCX1VTRVJOQU1FPiIgLWUgIkRCX1BBU1NXT1JEPTxEQl9QQVNTV09SRD4iIC1wIDgwODA6ODA4MCAtZCBgCi0gQ2hhbmdlIHRoZSBhY3R1YWwgdmFyaWFibGUgdmFsdWUgaW4gYW5nbGUgYnJhY2tldHMuCi0gSXQgd2lsbCBzcGluIHVwIGEgY29udGFpbmVyIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZCBvbiBgaHR0cDovL2xvY2FsaG9zdDo4MDgwL2AKCiMjIyBQZW5kaW5nIFdvcmsKLSBVbml0IFRlc3RpbmcKLSBIb3cgdG8gZGVwbG95IHdpdGggZG9ja2VyIG9uIHVidW50dQotIEhvdyB0byBkZXBsb3kgd2l0aCBBenVyZSBXZWIgQXBwIFNlcnZpY2UKLSBBdXRob3JpemF0aW9uICYgQXV0aGVudGljYXRpb24= readmeEtag: '"69a5e4e83f78d2b01ffab98173faa2b10bfc2845"' readmeLastModified: Sat, 07 Jan 2023 17:43:59 GMT repositoryId: 581242250 description: An API for creating and managing tasks. created: '2022-12-22T16:43:37Z' updated: '2025-11-01T23:42:46Z' language: Java archived: false stars: 5 watchers: 1 forks: 15 owner: mohitkumarsahni logo: https://avatars.githubusercontent.com/u/25563097?v=4 license: MIT repoEtag: '"79df82f98c8d4b2fb8e10b0a52c3e7b0cac7c5955ac423dbddb0e1c5f5490386"' repoLastModified: Sat, 01 Nov 2025 23:42:46 GMT category: - Parsers - Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/aereal/go-openapi3-validation-middleware v3: true repositoryMetadata: base64Readme: >- IVtDSV1bY2ktc3RhdHVzXQpbIVtQa2dHb0Rldl1bcGtnLWdvLWRldi1iYWRnZV1dW3BrZy1nby1kZXZdCgojIGdvLW9wZW5hcGkzLXZhbGlkYXRpb24tbWlkZGxld2FyZQoKbmV0L2h0dHAgbWlkZGxld2FyZSB0byB2YWxpZGF0ZSBIVFRQIHJlcXVlc3RzL3Jlc3BvbnNlcyBhZ2FpbnN0IE9wZW5BUEkgMyBzY2hlbWEgdXNpbmcgW2tpbi1vcGVuYXBpXVtdLgoKIyMgSW5zdGFsbGF0aW9uCgpgYGBzaApnbyBnZXQgZ2l0aHViLmNvbS9hZXJlYWwvZ28tb3BlbmFwaTMtdmFsaWRhdGlvbi1taWRkbGV3YXJlCmBgYAoKIyMgU3lub3BzaXMKCmBgYGdvCmltcG9ydCAoCgkibmV0L2h0dHAiCgoJImdpdGh1Yi5jb20vYWVyZWFsL2dvLW9wZW5hcGkzLXZhbGlkYXRpb24tbWlkZGxld2FyZSIKCSJnaXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9yb3V0ZXJzIgopCgpmdW5jIG1haW4oKSB7Cgl2YXIgcm91dGVyIHJvdXRlcnMuUm91dGVyIC8vIG11c3QgYmUgYnVpbHQgd2l0aCBjZXJ0YWluIHdheQoJbXcgOj0gb3BlbmFwaTNtaWRkbGV3YXJlLldpdGhWYWxpZGF0aW9uKG9wZW5hcGkzbWlkZGxld2FyZS5NaWRkbGV3YXJlT3B0aW9uc3tSb3V0ZXI6IHJvdXRlcn0pCglodHRwLkhhbmRsZSgiLyIsIG13KGh0dHAuSGFuZGxlckZ1bmMoZnVuYyAodyBodHRwLlJlc3BvbnNlV3JpdGVyLCByICpodHRwLlJlcXVlc3QpIHsKCQkvLyB0aGlzIGhhbmRsZXIgaXMgY2FsbGVkIGlmIHZhbGlkYXRpb24gc3VjY2VlZHMKCX0pKSkKfQpgYGAKCiMjIExpY2Vuc2UKClNlZSBMSUNFTlNFIGZpbGUuCgpbcGtnLWdvLWRldl06IGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL2FlcmVhbC9nby1vcGVuYXBpMy12YWxpZGF0aW9uLW1pZGRsZXdhcmUKW3BrZy1nby1kZXYtYmFkZ2VdOiBodHRwczovL3BrZy5nby5kZXYvYmFkZ2UvYWVyZWFsL2dvLW9wZW5hcGkzLXZhbGlkYXRpb24tbWlkZGxld2FyZQpbY2ktc3RhdHVzXTogaHR0cHM6Ly9naXRodWIuY29tL2FlcmVhbC9nby1vcGVuYXBpMy12YWxpZGF0aW9uLW1pZGRsZXdhcmUvd29ya2Zsb3dzL0NJL2JhZGdlLnN2Zz9icmFuY2g9bWFpbgpba2luLW9wZW5hcGldOiBodHRwczovL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpCg== readmeEtag: '"8579a1a295d819d4ee0ec05621b7e4e6a136729f"' readmeLastModified: Wed, 13 Dec 2023 12:23:59 GMT repositoryId: 375605593 description: >- net/http middleware to validate HTTP requests/responses against OpenAPI 3 schema using kin-openapi. created: '2021-06-10T07:13:33Z' updated: '2025-11-07T00:02:07Z' language: Go archived: false stars: 5 watchers: 1 forks: 1 owner: aereal logo: https://avatars.githubusercontent.com/u/87649?v=4 license: MIT repoEtag: '"d862127b12f8832d693501bc66972c0f2d11ff258099581e145bb896de7317fe"' repoLastModified: Fri, 07 Nov 2025 00:02:07 GMT foundInMaster: true category: Data Validators id: 8f5fa1fe1b8d8d7bed2b2dc8007802e9 - source: openapi3 tags repository: https://github.com/dna-evolutions/angular-demo-application-source v3: true repositoryMetadata: base64Readme: >- IyBUb3VyT3B0aW1pemVyIEFuZ3VsYXIgRGVtbyBBcHBsaWNhdGlvbiAtIFNvdXJjZQoKPGEgaHJlZj0iaHR0cHM6Ly9kbmEtZXZvbHV0aW9ucy5jb20vIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vZG9jcy5kbmEtZXZvbHV0aW9ucy5jb20vaW5kZXhyZXMvZG5hLXRlbXAtbG9nby5wbmciIHdpZHRoPSIxMTAiCnRpdGxlPSJETkEtRXZvbHV0aW9ucyIgYWx0PSJETkEtRXZvbHV0aW9ucyI+PC9hPgoKVG8gdXRpbGl6ZSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRE5BLUV2b2x1dGlvbnMvRG9ja2VyLVJFU1QtVG91ck9wdGltaXplci9ibG9iL21haW4vUkVBRE1FLm1kI2hvdy10by1zdGFydC1qb3B0dG91cm9wdGltaXplci1kb2NrZXIiIHRhcmdldD0iX2JsYW5rIj5KT3B0VG91ck9wdGltaXplci1Eb2NrZXI8L2E+LCB3ZSBjcmVhdGVkIGFuIEFuZ3VsYXItRGVtbyBhcHBsaWNhdGlvbi4gVGhpcyBkZW1vIGFwcGxpY2F0aW9uIGlzIGhvc3RlZCBvbiA8YSBocmVmPSJodHRwczovL2F6dXJlLm1pY3Jvc29mdC5jb20vIiB0YXJnZXQ9Il9ibGFuayI+TWljcm9zb2Z0IEF6dXJlPC9hPiBhbmQgaXMgbWFkZSBhdmFpbGFibGUgdmlhIDxhIGhyZWY9Imh0dHBzOi8vZGVtby5kbmEtZXZvbHV0aW9ucy5jb20vIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9kZW1vLmRuYS1ldm9sdXRpb25zLmNvbTwvYT4uIEhlcmUgd2Ugd291bGQgbGlrZSB0byBzaGFyZSB0aGUgbGF0ZXN0IHNvdXJjZS1jb2RlIG9mIHRoaXMgcHJvamVjdC4gVGhpcyBpcyBub3QgYSBjbGFzc2ljYWwgIkhlbGxvIFdvcmxkIiBwcm9qZWN0LCBhcyBpdCBpcyB1c2luZyBtdWx0aXBsZSBkZXBlbmRlbmNpZXMgYW5kIGFkdmFuY2VkIGNvbmNlcHRzLiBIb3dldmVyLCBmZWVsIGZyZWUgdG8gZXhwbG9yZSB0aGUgcHJvamVjdCBhbmQgZXh0cmFjdCB3aGF0ZXZlciB5b3UgbmVlZCB0byBnZXQgc3RhcnRlZCB3aXRoIEpPcHQuCgoqKlVwZGF0ZSBKYW51YXJ5IDExdGggMjAyNToqKgoKRnJvbSBub3cgb24sIHRoZSBBbmd1bGFyIERlbW8gdXNlcyBBbmd1bGFyIDE5LjEuIFdlIGFsc28gdXBkYXRlZC91cGdyYWRlZCBtdWx0aXBsZSBvdGhlciBkZXBlbmRlbmNpZXMuIFRoZSBnZW5lcmF0ZWQgbW9kZWxzIGFyZSB1c2luZyBKT3B0LlRvdXJPcHRpbWl6ZXIgd2l0aCAqKnZlcnNpb24gMS4zLjAgb3IgaGlnaGVyKiouCgoqKlVwZGF0ZSBKdWx5IDEydGggMjAyNDoqKgoKRnJvbSBub3cgb24sIHRoZSBBbmd1bGFyIERlbW8gdXNlcyBBbmd1bGFyIDE4LiBXZSBhbHNvIHVwZGF0ZWQvdXBncmFkZWQgbXVsdGlwbGUgb3RoZXIgZGVwZW5kZW5jaWVzLiBUaGUgZ2VuZXJhdGVkIG1vZGVscyBhcmUgdXNpbmcgSk9wdC5Ub3VyT3B0aW1pemVyIHdpdGggKip2ZXJzaW9uIDEuMi43IG9yIGhpZ2hlcioqLgoKKipVcGRhdGUgSmFudWFyeSA3dGggMjAyNDoqKgoKRnJvbSBub3cgb24sIHRoZSBBbmd1bGFyIERlbW8gdXNlcyBBbmd1bGFyIDE3LiBXZSBhbHNvIHVwZGF0ZWQvdXBncmFkZWQgbXVsdGlwbGUgb3RoZXIgZGVwZW5kZW5jaWVzLiBUaGUgZ2VuZXJhdGVkIG1vZGVscyBhcmUgdXNpbmcgSk9wdC5Ub3VyT3B0aW1pemVyIHdpdGggKip2ZXJzaW9uIDEuMi42IG9yIGhpZ2hlcioqLiBJbiBhZGRpdGlvbiwgYSAiZnJlZSBtb3ZpbmcgZXhhbXBsZSIgd2FzIGFkZGVkLiBOb2RlcyBhbmQgUmVzb3VyY2VzIGNhbiBiZSBmcmVlbHkgcG9zaXRpb25lZCB2aWEgZHJhZyBhbmQgZHJvcC4KCioqVXBkYXRlIEp1bmUgOHRoIDIwMjE6KioKCkZyb20gbm93IG9uLCB0aGUgQW5ndWxhciBEZW1vIHVzZXMgb3VyIG5ldyBzd2FnZ2VyIGRlZmluaXRpb24gKHNlZSAKPGEgaHJlZj0iaHR0cHM6Ly9zd2FnZ2VyLmRuYS1ldm9sdXRpb25zLmNvbS92My9hcGktZG9jcy9PcHRpbWl6ZSIgdGFyZ2V0PSJfYmxhbmsiPnN3YWdnZXIuZG5hLWV2b2x1dGlvbnMuY29tL3YzL2FwaS1kb2NzL09wdGltaXplPC9hPikuIFRoaXMgcmVxdWlyZXMgdXNpbmcgSk9wdC5Ub3VyT3B0aW1pemVyIHdpdGggKip2ZXJzaW9uIDEuMC4zIG9yIGhpZ2hlcioqLiBUaGlzIHN3YWdnZXIgZGVmaW5pdGlvbiBoYXMgdGhlIGFkdmFudGFnZSB0aGF0IGl0IGVuYWJsZXMgYWxtb3N0IGFsbCBmZWF0dXJlcyBvZiBKT3B0IGF0IHRoZSBSRVNULWVuZHBvaW50LgoKKipVcGRhdGUgMjFzdCBTZXB0ZW1iZXIgMjAyMToqKgpUaGUgcmVwbGFjZW1lbnQgZGVzY3JpYmVkIGluICpVcGRhdGUgSnVuZSAyMDIxKiBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LiBIb3dldmVyLCBtb2RlbHMgYWxyZWFkeSBjcmVhdGVkIG5lZWQgdG8gYmUgcmVjcmVhdGVkLiBGdXJ0aGVyLCB0aGUgbGVnYWN5IGVuZHBvaW50IGlzIGRyb3BwZWQsIGFuZCB0aGUgbWFpbi1lbmRwb2ludCBjaGFuZ2VkIHRvIDxhIGhyZWY9Imh0dHBzOi8vc3dhZ2dlci5kbmEtZXZvbHV0aW9ucy5jb20vdjMvYXBpLWRvY3MvT3B0aW1pemUiIHRhcmdldD0iX2JsYW5rIj5zd2FnZ2VyLmRuYS1ldm9sdXRpb25zLmNvbS92My9hcGktZG9jcy9PcHRpbWl6ZTwvYT4uCgotLS0KCiMgQ29udGFjdAoKSWYgeW91IG5lZWQgYW55IGhlbHAsIHBsZWFzZSBjb250YWN0IHVzIHZpYSBvdXIgY29tcGFueSB3ZWJzaXRlIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmRuYS1ldm9sdXRpb25zLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPnd3dy5kbmEtZXZvbHV0aW9ucy5jb208L2E+IG9yIHdyaXRlIGFuIGVtYWlsIHRvIDxhIGhyZWY9Im1haWx0bzppbmZvQGRuYS1ldm9sdXRpb25zLmNvbSI+aW5mb0BkbmEtZXZvbHV0aW9ucy5jb208L2E+LgoKLS0tCgojIyBGdXJ0aGVyIERvY3VtZW50YXRpb24gYW5kIGhlbHBmdWwgTGlua3MKCk91ciBjb250ZW50OgotIEZ1cnRoZXIgZG9jdW1lbnRhdGlvbiAtIDxhIGhyZWY9Imh0dHBzOi8vZG9jcy5kbmEtZXZvbHV0aW9ucy5jb20iIHRhcmdldD0iX2JsYW5rIj5kb2NzLmRuYS1ldm9sdXRpb25zLmNvbTwvYT4KLSBTcGVjaWFsIGZlYXR1cmVzCS0gPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLmRuYS1ldm9sdXRpb25zLmNvbS9vdmVydmlld19kb2NzL3NwZWNpYWxfZmVhdHVyZXMvU3BlY2lhbF9GZWF0dXJlcy5odG1sIiB0YXJnZXQ9Il9ibGFuayI+T3ZlcnZpZXcgb2Ygc3BlY2lhbCBmZWF0dXJlczwvYT4KLSBPdXIgY29tcGFueSB3ZWJzaXRlIC0gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZG5hLWV2b2x1dGlvbnMuY29tIiB0YXJnZXQ9Il9ibGFuayI+d3d3LmRuYS1ldm9sdXRpb25zLmNvbTwvYT4KLSBPdXIgb2ZmaWNpYWwgcmVwb3NpdG9yeSAtIDxhIGhyZWY9Imh0dHBzOi8vcHVibGljLnJlcG8uZG5hLWV2b2x1dGlvbnMuY29tIiB0YXJnZXQ9Il9ibGFuayI+cHVibGljLnJlcG8uZG5hLWV2b2x1dGlvbnMuY29tPC9hPgotIE91ciBvZmZpY2lhbCBKYXZhRG9jcyAtIDxhIGhyZWY9Imh0dHBzOi8vcHVibGljLmphdmFkb2MuZG5hLWV2b2x1dGlvbnMuY29tIiB0YXJnZXQ9Il9ibGFuayI+cHVibGljLmphdmFkb2MuZG5hLWV2b2x1dGlvbnMuY29tPC9hPgotIE91ciBZb3VUdWJlIGNoYW5uZWwgLSA8YSBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDemZaakpMcDVScms3VTJVS3NPZjhGdyIgdGFyZ2V0PSJfYmxhbmsiPkROQSBUdXRvcmlhbHM8L2E+Ci0gT3VyIERvY2tlckh1YiBjaGFubmVsIC0gPGEgaHJlZj0iaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS91L2RuYWV2b2x1dGlvbnMiIHRhcmdldD0iX2JsYW5rIj5ETkEgRG9ja2VySHViPC9hPgotIE91ciBMaW5rZWRJbiBjaGFubmVsIC0gPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbXBhbnkvZG5hLWV2b2x1dGlvbnMvIiB0YXJnZXQ9Il9ibGFuayI+RE5BIExpbmtlZEluPC9hPgoKVGhpcmQtcGFydHk6Ci0gPGEgaHJlZj0iaHR0cHM6Ly9hbmd1bGFyLmlvL2NsaSIgdGFyZ2V0PSJfYmxhbmsiPkFuZ3VsYXIgQ0xJPC9hPgotIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpIiB0YXJnZXQ9Il9ibGFuayI+T3BlbiBBcGkgR2VuZXJhdG9yPC9hPgotIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm1va2thcHBzLmRlL2Jsb2cvaG93LXRvLWdlbmVyYXRlLWFuZ3VsYXItYW5kLXNwcmluZy1jb2RlLWZyb20tb3Blbi1hcGktc3BlY2lmaWNhdGlvbi8iIHRhcmdldD0iX2JsYW5rIj5HZW5lcmF0ZSBBbmd1bGFyIGFuZCBTcHJpbmcgY29kZSBmcm9tIE9wZW5BcGk8L2E+Ci0gPGEgaHJlZj0iaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvLyIgdGFyZ2V0PSJfYmxhbmsiPkFuZ3VsYXIgTWF0ZXJpYWw8L2E+CgotLS0KCiMjIE92ZXJ2aWV3CgoqIFtHZW5lcmFsIC0gRE5BIERlbW8gQXBwbGljYXRpb25dKCNnZW5lcmFsLWRuYS1kZW1vLWFwcGxpY2F0aW9uKQoqIFtTZXJ2ZSB3aXRoIERvY2tlciAocmVjb21tZW5kZWQpXSgjc2VydmUtd2l0aC1kb2NrZXItcmVjb21tZW5kZWQpCiogW1NlcnZlIHdpdGhvdXQgRG9ja2VyXSgjc2VydmUtd2l0aG91dC1kb2NrZXIpCiogW1VwZGF0ZS9HZW5lcmF0ZSB0aGUgdHlwZXNjcmlwdCBtb2RlbHMgdXNpbmcgT3BlbkFwaSBHZW5lcmF0b3JdKCN1cGRhdGUtZ2VuZXJhdGUtdGhlLXR5cGVzY3JpcHQtbW9kZWxzLXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yKQoqIFtWaWRlbyAtIEhvdyB0byB1c2UgdGhlIERlbW8tQXBwbGljYXRpb25dKCN2aWRlby1ob3ctdG8tdXNlLXRoZS1kZW1vLWFwcGxpY2F0aW9uKQoqIFtXaGF0J3MgbmV4dD9dKCN3aGF0LXMtbmV4dCkKCi0tLQoKIyMgR2VuZXJhbCAtIEROQSBEZW1vIEFwcGxpY2F0aW9uCgpUaGUgYW5ndWxhci1kZW1vIGFwcGxpY2F0aW9uIHdhcyBnZW5lcmF0ZWQgd2l0aCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyLWNsaSIgdGFyZ2V0PSJfYmxhbmsiPkFuZ3VsYXIgQ0xJPC9hPi4gRnVydGhlciwgd2UgdXRpbGl6ZWQgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvciIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5BcGkgR2VuZXJhdG9yPC9hPiB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGUgcmVxdWlyZWQgVHlwZVNjcmlwdCBtb2RlbHMgZnJvbSB0aGUgT3BlbkFwaSBkZWZpbml0aW9uIHByb3ZpZGVkIGZyb20gb3VyIFN3YWdnZXIgZW5kcG9pbnQgb2YgSk9wdFRvdXJPcHRpbWl6ZXIuCgo8aW1nIHNyYz0iaHR0cHM6Ly9kbmEtZXZvbHV0aW9ucy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMTEvaG93LXRvLXZpZGVvLXByZXYuZ2lmIiB3aWR0aD0iNDUwIgp0aXRsZT0iRE5BLUV2b2x1dGlvbnMgRGVtbyBBcHBsaWNhdGlvbiBQcmV2aWV3IiBhbHQ9IkROQS1Fdm9sdXRpb25zIERlbW8gQXBwbGljYXRpb24gUHJldmlldyI+CgpbIVtPcGVuIGluIFN0YWNrQmxpdHpdKGh0dHBzOi8vZGV2ZWxvcGVyLnN0YWNrYmxpdHouY29tL2ltZy9vcGVuX2luX3N0YWNrYmxpdHouc3ZnKV0oaHR0cHM6Ly9zdGFja2JsaXR6LmNvbS9naXRodWIvRE5BLUV2b2x1dGlvbnMvQW5ndWxhci1EZW1vLUFwcGxpY2F0aW9uLVNvdXJjZSkgKHRoaXMgdGFrZXMgcXVpdGUgYSB3aGlsZSkuClBsZWFzZSBtYWtlIHN1cmUgeW91IHNldCBhIHZhbGlkIHRvdXJvcHRpemVyLWFwcGxpY2F0aW9uIGVuZHBvaW50LiBCeSBkZWZhdWx0IGl0IGlzIDxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MSIgdGFyZ2V0PSJfYmxhbmsiPltBbmd1bGFyIENMSV0oaHR0cDovL2xvY2FsaG9zdDo4MDgxKTwvYT4uIApZb3UgY2FuIG1vZGlmeSB0aGUgZW5kcG9pbnQgaW4gdGhlIGBgc3JjL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC50c2BgIG9yIGBgc3JjL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5wcm9kLnRzYGAgdW5kZXIgdGhlIGtleSBgYGhvc3RgYCBhbmQgYGBwb3J0YGAuCgotLS0KCiMjIFNlcnZlIHdpdGggRG9ja2VyIChyZWNvbW1lbmRlZCkKCldlIHJlY29tbWVuZCBzZXJ2aW5nIHRoZSBEZW1vIEFwcGxpY2F0aW9uIHdpdGggZG9ja2VyLCBlc3BlY2lhbGx5IHdoZW4geW91IGFyZSBuZXcgdG8gQW5ndWxhci4gVGhlIGRvY2tlciBidWlsZCB3aWxsIGluc3RhbGwgYWxsIHRoZSByZXF1aXJlZCBkZXBlbmRlbmNpZXMgZm9yIHlvdS4gWW91IGNhbiBtb2RpZnkgdGhlIGNvZGUgaW4geW91ciBkZXNpcmVkIElERSBhbmQgYnVpbGQgeW91ciBjdXN0b20gaW1hZ2UuCgojIyMgUHJlcmVxdWlzaXRlcwoKMSkgSW5zdGFsbCBhIERvY2tlciBlbnZpcm9ubWVudCBhbmQgbWFrZSBzdXJlIGBgZG9ja2VyYGAgaXMgYXZhaWxhYmxlIGluIHlvdXIgY29tbWFuZCBsaW5lLgoKMikgRXZlbiB0aG91Z2ggdGhlIERlbW8tQXBwbGljYXRpb24gbmVlZHMgbm8gVG91ck9wdGltaXplciB0byBzdGFydCwgeW91IG5lZWQgdG8gcHJvdmlkZSBhIHJ1bm5pbmcgVG91ck9wdGltaXplciBpbnN0YW5jZSB0byB0ZXN0IHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIERlbW8tQXBwbGljYXRpb24uIFBsZWFzZSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIG9uIGhvdyB0byA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRE5BLUV2b2x1dGlvbnMvRG9ja2VyLVJFU1QtVG91ck9wdGltaXplci9ibG9iL21haW4vUkVBRE1FLm1kI2hvdy10by1zdGFydC1qb3B0dG91cm9wdGltaXplci1kb2NrZXIiIHRhcmdldD0iX2JsYW5rIj5zdGFydCB0aGUgVG91ck9wdGltaXplcjwvYT4uCgoKIyMjIFN0YXJ0IHRoZSBpbWFnZQoKUGxlYXNlIHZpc2l0IDxhIGhyZWY9Imh0dHBzOi8vaHViLmRvY2tlci5jb20vcmVwb3NpdG9yeS9kb2NrZXIvZG5hZXZvbHV0aW9ucy9qb3B0X2RlbW9hcHBsaWNhdGlvbi9nZW5lcmFsIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yZXBvc2l0b3J5L2RvY2tlci9kbmFldm9sdXRpb25zL2pvcHRfZGVtb2FwcGxpY2F0aW9uL2dlbmVyYWw8L2E+IGFuZCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBpZiB5b3Ugd2FudCB0byBzdGFydCB0aGUgcHJlLWJ1aWx0IGltYWdlIHdpdGhvdXQgdXNpbmcgdGhlIHNvdXJjZXMuIAoKIyMjIEJ1aWxkIHRoZSBpbWFnZSBmcm9tIHNjcmF0Y2gKCjEpIENsb25lIHRoaXMgcmVwb3NpdG9yeSBhbmQgb3BlbiBpdCBpbiB5b3VyIGRlc2lyZWQgSURFIChlLmcuIDxhIGhyZWY9Imh0dHBzOi8vY29kZS52aXN1YWxzdHVkaW8uY29tLyIgdGFyZ2V0PSJfYmxhbmsiPlZpc3VhbCBTdHVkaW8gQ29kZTwvYT4pIGFuZCBtb2RpZnkgdGhlIGNvZGUgaWYgeW91IGxpa2UuCjIpIDxhIGhyZWY9Imh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9yZWZlcmVuY2UvY29tbWFuZGxpbmUvYnVpbGQvIiB0YXJnZXQ9Il9ibGFuayI+QnVpbGQ8L2E+IHRoZSBkb2NrZXIgaW1hZ2UgdXNpbmcgdGhlIGBgRG9ja2VyZmlsZWBgIGluIHRoZSBtYWluIHByb2plY3QgcGF0aCwgYnkgcnVubmluZzoKCkFUVEVOVElPTjogTm9kZS5qcyBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MgY2FuIGJlIHF1aXRlIG1lbW9yeSBjb25zdW1pbmcuIFNvIG1ha2Ugc3VyZSB5b3VyIGRvY2tlciBlbnZpcm9ubWVudCBoYXMgYXQgbGVhc3QgNCBHQiBvZiBSYW0uIAoKYGBgeG1sCmRvY2tlciBidWlsZCAtdCBkbmFfY3VzdG9tX2RlbW9faW1hZ2UgLgpgYGAKCiMjIyBSdW4gYSBjb250YWluZXIKCjEpIFJ1biB0aGUgaW1hZ2UgYmFzZWQgb24geW91ciBmcmVzaGx5IGNyZWF0ZWQgaW1hZ2U6CgpgYGB4bWwKZG9ja2VyIHJ1biAtZCAtLXJtIFwKCS0tbmFtZSBteUpPcHRUb3VyT3B0aW1pemVyRGVtbyBcCgktcCAzMDAwOjgwIFwKCS12ICR7UFdEfTovdXNyL3NyYy9hcHAgXAoJLWUgSk9QVF9TV0FHR0VSX0hPU1Q9Imh0dHA6Ly9sb2NhbGhvc3QiIFwKCS1lIEpPUFRfU1dBR0dFUl9QT1JUPSI4MDgxIiBcCglkbmFfY3VzdG9tX2RlbW9faW1hZ2UKYGBgCgpTYW1lIGNvbW1hbmQgYXMgYSBzaW5nbGUgbGluZToKCmBgYHhtbApkb2NrZXIgcnVuIC1kIC0tcm0gLS1uYW1lIG15Sk9wdFRvdXJPcHRpbWl6ZXJEZW1vIC1wIDMwMDA6ODAgLXYgJHtQV0R9Oi91c3Ivc3JjL2FwcCAtZSBKT1BUX1NXQUdHRVJfSE9TVD0iaHR0cDovL2xvY2FsaG9zdCIgLWUgSk9QVF9TV0FHR0VSX1BPUlQ9IjgwODEiIGRuYV9jdXN0b21fZGVtb19pbWFnZQpgYGAKCk9wZW4gPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDozMDAwIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2xvY2FsaG9zdDozMDAwPC9hPiwgYW5kIHlvdSBzaG91bGQgc2VlIHRoZSBEZW1vIEFwcGxpY2F0aW9uLiBJZiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRE5BLUV2b2x1dGlvbnMvRG9ja2VyLVJFU1QtVG91ck9wdGltaXplci9ibG9iL21haW4vUkVBRE1FLm1kI2hvdy10by1zdGFydC1qb3B0dG91cm9wdGltaXplci1kb2NrZXIiIHRhcmdldD0iX2JsYW5rIj5KT3B0VG91ck9wdGltaXplcjwvYT4gaXMgbm90IHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmQsIHlvdSBjYW4gKipOT1QqKiBzdGFydCBhbnkgT3B0aW1pemF0aW9uLiBIb3dldmVyLCB5b3Ugc2hvdWxkIHNlZSB0aGUgc3RhcnRpbmcgcGFnZSBvZiB0aGUgRGVtbyBBcHBsaWNhdGlvbi4gQnkgZGVmYXVsdCwgdGhlIFRvdXJPcHRpbWl6ZXIgaXMgYXNzdW1lZCB0byBiZSBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDgxIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2xvY2FsaG9zdDo4MDgxPC9hPiBhbmQgaXMgc3RhcnRlZCB3aXRoIHRoZSAiY29ycyIgcHJvZmlsZS4gWW91IGNhbiBhZGp1c3QgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIGhvc3QgYW5kIHBvcnQgaW4gdGhlIGBgZW52aXJvbm1lbnQudHNgYCBmaWxlLgoKWW91IGNhbiBwcm92aWRlIHRocmVlIGVudmlyb25tZW50IHZhcmlhYmxlczoKKiBgYEpPUFRfU1dBR0dFUl9IT1NUYGA6IFRoZSBhZGRyZXNzIG9mIHlvdXIgcnVubmluZyBUb3VyT3B0aW1pemVyLiBJZiB5b3UgcnVuIHRoZSBkb2NrZXIgaW1hZ2Ugb2YgdGhlIFRvdXJPcHRpbWl6ZXIgbG9jYWxseSwgdGhpcyBpcyBgYGh0dHA6Ly9sb2NhbGhvc3RgYC4KKiBgYEpPUFRfU1dBR0dFUl9QT1JUYGA6IFRoZSBwb3J0IG9mIHlvdXIgcnVubmluZyBUb3VyT3B0aW1pemVyLiBJZiB5b3UgcnVuIHRoZSBkb2NrZXIgaW1hZ2Ugb2YgdGhlIFRvdXJPcHRpbWl6ZXIgbG9jYWxseSwgdGhpcyBpcyBgYDgwODFgYC4KKiBgYElOUFJPRFVDVElPTmBgOiBUaGlzIHZhbHVlIGlzIGBgZmFsc2VgYCBieSBkZWZhdWx0LiBJZiB5b3UgYXJlIGNoYW5naW5nIGl0IHRvIGBgdHJ1ZWBgLCBvdXIgb2ZmaWNpYWwgVG91ck9wdGltaXplciBlbmRwb2ludCBpcyB1c2VkIGJ5IGRlZmF1bHQuIEhvd2V2ZXIsICoqdHJ5IHRvIGF2b2lkIHRoaXMqKiwgYXMgd2UgYXJlIGdvaW5nIHRvIGJsb2NrIElQcyB3aXRoIHRvbyBtYW55IHJlcXVlc3RzLiBGdXJ0aGVyLCBvdXIgb2ZmaWNpYWwgZW5kcG9pbnQgaGFzIGEgbGltaXRhdGlvbiBvZiAyMCBlbGVtZW50cyB0byBiZSBvcHRpbWl6ZWQsIHJlZ2FyZGxlc3Mgb2YgeW91ciBsaWNlbnNlLiBZb3UgY2FuIGNoYW5nZSB0aGUgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCBzZXR0aW5ncyBieSBlZGl0aW5nIHRoZSBmaWxlOiBgYGVudmlyb25tZW50LnByb2QudHNgYC4KCgotLS0KCiMjIFNlcnZlIHdpdGhvdXQgRG9ja2VyCgpPZiBjb3Vyc2UsIHlvdSBjYW4gaG9zdCB0aGUgRGVtby1BcHBsaWNhdGlvbiBBbmd1bGFyIFByb2plY3QgbG9jYWxseSB3aXRob3V0IHVzaW5nIGRvY2tlci4gSG93ZXZlciwgeW91IGhhdmUgdG8gbWFrZSBzdXJlIHlvdXIgZW52aXJvbm1lbnQgaXMgc2V0IHVwIGNvcnJlY3RseS4KCiMjIyBQcmVyZXF1aXNpdGVzIChmb3IgdXNpbmcgYGBucG1gYCBhbmQgYGBuZ2BgKQoKMSkgRmlyc3QsIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSA8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vZ2V0LW5wbSIgdGFyZ2V0PSJfYmxhbmsiPm5wbSAoTm9kZSBQYWNrYWdlIE1hbmFnZXIpPC9hPiBpcyBpbnN0YWxsZWQuICAgCgoyKSBGdXJ0aGVyLCB5b3UgbmVlZCB0byBpbnN0YWxsIDxhIGhyZWY9Imh0dHBzOi8vYW5ndWxhci5pby9jbGkiIHRhcmdldD0iX2JsYW5rIj5uZyAoQW5ndWxhciBDTEkpPC9hPgoKMykgRXZlbiB0aG91Z2ggdGhlIERlbW8tQXBwbGljYXRpb24gbmVlZHMgbm8gVG91ck9wdGltaXplciB0byBzdGFydCwgeW91IG5lZWQgdG8gcHJvdmlkZSBhIHJ1bm5pbmcgVG91ck9wdGltaXplciBpbnN0YW5jZSB0byB0ZXN0IHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIERlbW8tQXBwbGljYXRpb24uIFBsZWFzZSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIG9uIGhvdyB0byA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRE5BLUV2b2x1dGlvbnMvRG9ja2VyLVJFU1QtVG91ck9wdGltaXplci9ibG9iL21haW4vUkVBRE1FLm1kI2hvdy10by1zdGFydC1qb3B0dG91cm9wdGltaXplci1kb2NrZXIiIHRhcmdldD0iX2JsYW5rIj5zdGFydCB0aGUgVG91ck9wdGltaXplcjwvYT4uCgoKIyMjIFNlcnZlIHRoZSBEZW1vIEFwcGxpY2F0aW9uCgoxLiBDbG9uZSB0aGlzIHJlcG9zaXRvcnkgYW5kIG9wZW4gaXQgaW4geW91ciBkZXNpcmVkIElERSAoZS5nLiA8YSBocmVmPSJodHRwczovL2NvZGUudmlzdWFsc3R1ZGlvLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5WaXN1YWwgU3R1ZGlvIENvZGU8L2E+KSBpZiB5b3UgbGlrZSB0byBtb2RpZnkgdGhlIGNvZGUuCgoyLiBZb3UgY2FuIHNlcnZlIHRoZSBwcm9qZWN0IGJ5IHVzaW5nIGBgbmcgc2VydmVgYCBmcm9tIHdpdGhpbiB0aGUgcHJvamVjdCBwYXRoLgoKMy4gT3BlbiA8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwMDAiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vbG9jYWxob3N0OjUwMDA8L2E+LCBhbmQgeW91IHNob3VsZCBzZWUgdGhlIERlbW8gQXBwbGljYXRpb24uIElmIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ETkEtRXZvbHV0aW9ucy9Eb2NrZXItUkVTVC1Ub3VyT3B0aW1pemVyL2Jsb2IvbWFpbi9SRUFETUUubWQjaG93LXRvLXN0YXJ0LWpvcHR0b3Vyb3B0aW1pemVyLWRvY2tlciIgdGFyZ2V0PSJfYmxhbmsiPkpPcHRUb3VyT3B0aW1pemVyPC9hPiBpcyBub3QgcnVubmluZyBpbiB0aGUgYmFja2dyb3VuZCwgeW91IGNhbiAqKk5PVCoqIHN0YXJ0IGFueSBPcHRpbWl6YXRpb24uIEhvd2V2ZXIsIHlvdSBzaG91bGQgc2VlIHRoZSBzdGFydGluZyBwYWdlIG9mIHRoZSBEZW1vIEFwcGxpY2F0aW9uLiBCeSBkZWZhdWx0LCB0aGUgVG91ck9wdGltaXplciBpcyBhc3N1bWVkIHRvIGJlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwODEiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vbG9jYWxob3N0OjgwODE8L2E+IGFuZCBpcyBzdGFydGVkIHdpdGggdGhlICJjb3JzIiBwcm9maWxlLiBZb3UgY2FuIGFkanVzdCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgaG9zdCBhbmQgcG9ydCBpbiB0aGUgYGBlbnZpcm9ubWVudC50c2BgIGZpbGUuIFRoZSBkZWZhdWx0IHBvcnQsIHRoZSBEZW1vIEFwcGxpY2F0aW9uIGlzIGhvc3RlZCwgaXMgcG9ydCA1MDAwLCB5b3UgY2FuIGNoYW5nZSB0aGlzIGJlaGF2aW9yIGluIHRoZSBgYGFuZ3VsYXIuanNvbmBgLgoKKFBsZWFzZSBhbHNvIHJlYWQgdGhlIDxhIGhyZWY9Imh0dHBzOi8vYW5ndWxhci5pby9jbGkvYnVpbGQiIHRhcmdldD0iX2JsYW5rIj5Bbmd1bGFyIERvY3VtZW50YXRpb248L2E+IHRvIGdldCBmdXJ0aGVyIGhlbHAgb24gaG93IHRvIGJ1aWxkIHByb2plY3RzLikKCgotLS0KIyMgVXBkYXRlL0dlbmVyYXRlIHRoZSBUeXBlU2NyaXB0IG1vZGVscyB1c2luZyBPcGVuQXBpIEdlbmVyYXRvcgoKSWYgeW91IHdvdWxkIGxpa2UgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSB0aGUgbW9kZWxzIGJhc2VkIG9uIHRoZSA8YSBocmVmPSJodHRwczovL3N3YWdnZXIuZG5hLWV2b2x1dGlvbnMuY29tL3YzL2FwaS1kb2NzIiB0YXJnZXQ9Il9ibGFuayI+bGF0ZXN0IFN3YWdnZXIgQVBJLURvY3M8L2E+IG9mIHRoZQo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRE5BLUV2b2x1dGlvbnMvRG9ja2VyLVJFU1QtVG91ck9wdGltaXplciIgdGFyZ2V0PSJfYmxhbmsiPlRvdXJPcHRpbWl6ZXI8L2E+LCB5b3Ugd2lsbCBoYXZlIHRvIGluc3RhbGwgPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkiIHRhcmdldD0iX2JsYW5rIj5PcGVuYXBpLUdlbmVyYXRvci1DTEk8L2E+LgoKTm90ZTogT3BlbkFwaUdlbmVyYXRvciBjYW4gYWxzbyBiZSBydW4gYXMgRG9ja2VyIGNvbnRhaW5lciBvciBNYXZlbiBkZXBlZGVuY3kuCgojIyMgQ3JlYXRlIGEgdG91cm9wdGltaXplcl9zcGVjLmpzb24gZmlsZQpUaGUgYGB0b3Vyb3B0aW1pemVyX3NwZWMuanNvbmBgIGNvbnRhaW5pbmcgdGhlIEFQSS1Eb2NzIGlzIG5vdCBwYXJ0IG9mIHRoaXMgcmVwb3NpdG9yeS4gQ29weSBhbmQgcGFzdGUgdGhlIFN3YWdnZXIgZGVmaW5pdGlvbiB1bmRlciA8YSBocmVmPSJodHRwczovL3N3YWdnZXIuZG5hLWV2b2x1dGlvbnMuY29tL3YzL2FwaS1kb2NzIiB0YXJnZXQ9Il9ibGFuayI+c3dhZ2dlci5kbmEtZXZvbHV0aW9ucy5jb20vdjMvYXBpLWRvY3M8L2E+IChvciBmcm9tIDxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MS92My9hcGktZG9jcyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9sb2NhbGhvc3Q6ODA4MS92My9hcGktZG9jczwvYT4pLiAqKlBsZWFzZSwgY2xlYW4gYWxsICdvbmVPZicga2V5cyBiZWZvcmUgdXNpbmcgdGhlIHNjaGVtYS4qKgoKIyMjIERvd25sb2FkIHRvdXJvcHRpbWl6ZXJfc3BlY19jbGVhbmVkLmpzb24gZmlsZQogVmlzaXQgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0ROQS1Fdm9sdXRpb25zL0phdmEtUkVTVC1DbGllbnQtRXhhbXBsZXMvdHJlZS9tYXN0ZXIvc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXIvdG91cm9wdGltaXplci9zcGVjL3RvdXJvcHRpbWl6ZXJfc3BlY19jbGVhbmVkLmpzb24iIHRhcmdldD0iX2JsYW5rIj5jbGVhbmVkIHNjaGVtYSBvbiBHaXRIdWI8L2E+KSBhbmQgc2F2ZSBhcyBhIG5ldyBmaWxlIGNhbGxlZCBgYHRvdXJvcHRpbWl6ZXJfc3BlYy5qc29uYGAuIAoKKipVcGRhdGUgSnVuZSAyMDIxOioqCgpOYXRpdmUgSlNPTiBpcyBhbHNvIHN1cHBvcnRlZCBmcm9tIG5vdyBvbi4KCiMjIyBNYWtlIHRoZSB0b3Vyb3B0aW1pemVyX3NwZWMuanNvbiBhdmFpbGFibGUKCldpdGhpbiB0aGUgZmlsZSBgYHBhY2thZ2UuanNvbmBgIG9mIHRoZSBEZW1vLUFwcGxpY2F0aW9uIHByb2plY3QsIHRoZSBzY3JpcHQgYGBucG0gcnVuIGdlbmVyYXRlOmFwaWBgIGlzIGRlZmluZWQuIEl0IGV4cGVjdHMgdGhlIGBgdG91cm9wdGltaXplcl9zcGVjLmpzb25gYCB0byBiZSBzYXZlZCBhdCBgYC4uL29wZW5hcGkvdG91cm9wdGltaXplcl9zcGVjLmpzb25gYC4gTWVhbmluZywgeW91IHdpbGwgaGF2ZSB0byBjcmVhdGUgYSBuZXcgZm9sZGVyIGNhbGxlZCBgYG9wZW5hcGlgYCBuZXh0IHRvIHlvdXIgcHJvamVjdCBmb2xkZXIgKE5PVCBpbnNpZGUgdGhlIHByb2plY3QgZm9sZGVyIGl0c2VsZikgYW5kIHNhdmUgeW91ciBgYHRvdXJvcHRpbWl6ZXJfc3BlYy5qc29uYGAgaW5zaWRlIHRoZSBgYG9wZW5hcGlgYCBmb2xkZXIuCgpJZiB0aGlzIGlzIGRvbmUsIHlvdSBjYW4gY2FsbDoKCmBgYHhtbApucG0gcnVuIGdlbmVyYXRlOmFwaQpgYGAKCnRvIHVwZGF0ZS9nZW5lcmF0ZSB0aGUgVHlwZVNjcmlwdCBtb2RlbHMuCgotLS0KCiMjIFZpZGVvIC0gSG93IHRvIHVzZSB0aGUgRGVtby1BcHBsaWNhdGlvbgoKQ2xpY2sgdG8gb3BlbiB2aWRlbzoKCjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9MnE3Y1lZQXJLbTggIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnlvdXR1YmUuY29tL3ZpLzJxN2NZWUFyS204L21heHJlc2RlZmF1bHQuanBnIiB3aWR0aD0iNTAwIgp0aXRsZT0iVHV0b3JpYWwgLSBIb3cgdG8gdXNlIHRoZSBEZW1vLUFwcGxpY2F0aW9uIiBhbHQ9IlR1dG9yaWFsIC0gSG93IHRvIHVzZSB0aGUgRGVtby1BcHBsaWNhdGlvbiI+PC9hPgotLS0KCiMjIFdoYXQncyBuZXh0PwoKV2UgYXJlIGdvaW5nIHRvIHB1Ymxpc2ggc29tZSB0dXRvcmlhbHMgb24gImhvdyB0byBjcmVhdGUgeW91ciBvd24gZXhhbXBsZXMiLiBGdXJ0aGVyLCB3ZSBhcmUgZ29pbmcgdG8gZ2l2ZSBzb21lIG1vcmUgaW5zaWRlcyBvbiB0aGUgc3RydWN0dXJlIG9mIHRoZSBEZW1vLUFwcGxpY2F0aW9uLgoKLS0tCgojIyBUT0RPJ3MKCiogSW1wcm92ZSBpbi1jb2RlIGRvY3VtZW50YXRpb24uCgotLS0KCiMjIEFncmVlbWVudApGb3IgcmVhZGluZyBvdXIgbGljZW5zZSBhZ3JlZW1lbnQgYW5kIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IGxpY2Vuc2UgcGxhbnMsIHBsZWFzZSB2aXNpdCA8YSBocmVmPSJodHRwczovL3d3dy5kbmEtZXZvbHV0aW9ucy5jb20iIHRhcmdldD0iX2JsYW5rIj53d3cuZG5hLWV2b2x1dGlvbnMuY29tPC9hPi4KCi0tLSAKCiMjIEF1dGhvcnMKQSBwcm9kdWN0IGJ5IFtkbmEtZXZvbHV0aW9ucyBdKGh0dHBzOi8vd3d3LmRuYS1ldm9sdXRpb25zLmNvbSkmY29weTsKCg== readmeEtag: '"5938824631b590597504a3cb2a533a95d9ee8c31"' readmeLastModified: Tue, 11 Feb 2025 22:54:22 GMT repositoryId: 340891355 description: The latest source code of our Angular-Demo Application. created: '2021-02-21T12:03:16Z' updated: '2025-07-24T09:22:08Z' language: TypeScript archived: false stars: 4 watchers: 0 forks: 1 owner: DNA-Evolutions logo: https://avatars.githubusercontent.com/u/62150493?v=4 repoEtag: '"ebe9e73d38a68bad749d78c4c89638cc70289eefb4fdd7ebd4831c4fbc723014"' repoLastModified: Thu, 24 Jul 2025 09:22:08 GMT foundInMaster: true category: Server Implementations id: 32f0648c116dcc86eaec5b5beec2a428 - source: openapi3 tags repository: https://github.com/edavis25/plex-api-spec v3: true repositoryMetadata: base64Readme: >- IyBQbGV4IEFQSSBEb2N1bWVudGF0aW9uDQpPcGVuQVBJIHNwZWNpZmljYXRpb24gZm9yIHRoZSBQbGV4IHdlYiBBUEkuDQoNCiMjIyA6bGluazogW1ZpZXcgdGhlIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZWRhdmlzMjUuZ2l0aHViLmlvL3BsZXgtYXBpLXNwZWMvKQ0KDQoNCiMjIyMgRHNlY3JpcHRpb24NClRoaXMgcHJvamVjdCBpcyBhbiBhdHRlbXB0IGF0IGRvY3VtZW50aW5nIHNvbWUgb2YgdGhlIG1hbnkgQVBJIGVuZHBvaW50cyB1c2VkIGJ5IHRoZSBQbGV4IHdlYiBhcHBsaWNhdGlvbi4gU2luY2UgUGxleCBpcyBjbG9zZWQtc291cmNlIGFuZCBkb2VzIG5vdCBwdWJsaWNseSBleHBvc2UgZG9jdW1lbnRhdGlvbiBmb3IgdGhlaXIgQVBJLCB0aGlzIHByb2plY3QgYXR0ZW1wdHMgdG8gZG9jdW1lbnQgdGhlIEFQSSdzIGZ1bmN0aW9uYWxpdHkgdXNpbmcgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4NCg0KVGhpcyBwcm9qZWN0IHdhcyBpbnNwaXJlZCBieSBNYXJjIFN0ZXBoZW5zb24ncyBbVW5vZmZpY2lhbCBQbGV4IEFQSSBEb2N1bWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vQXJjYW5lbWFndXMvcGxleC1hcGkpLiBIaXMgZG9jdW1lbnRhdGlvbiBpcyBhbm90aGVyIGV4Y2VsbGVudA0KcmVzb3VyY2UgdGhhdCBJIGhpZ2hseSByZWNvbW1lbmQgd2hlbiBsZWFybmluZyBob3cgdG8gY29uc3VtZSB0aGUgUGxleCBBUEkuDQo= readmeEtag: '"3d6c96c9541543a939381186a8aff62e29652b19"' readmeLastModified: Thu, 10 Mar 2022 22:50:22 GMT repositoryId: 443420796 description: Documentation for the Plex Media Server web API. created: '2021-12-31T20:28:10Z' updated: '2023-09-08T18:30:12Z' language: null archived: false stars: 4 watchers: 2 forks: 2 owner: edavis25 logo: https://avatars.githubusercontent.com/u/14096584?v=4 repoEtag: '"6faa31cc3055fe2a43b3a2f786c54191c062ebe75cebcad60246b15849721527"' repoLastModified: Fri, 08 Sep 2023 18:30:12 GMT foundInMaster: true category: - Server - Server Implementations id: 09854d87bfafe437e01abb6fa83211b5 - source: openapi3 tags repository: https://github.com/data-studio/data-studio v3: true repositoryMetadata: base64Readme: >- IyBEYXRhIFN0dWRpbyBieSBFdmlyYXRlYwoKV1AgZXhwb3J0IGluOiBgLi9kb2MvZGIvZGF0YXN0dWRpb2J5ZXZpcmF0ZWMuLi54bWxgCgojIyBTcGVjaWFsIG5vdGVzLCBmdXJ0aGVyIHJlYWRpbmcsIGFuZCB0aGFua3MgdG8gLi4uCgpQbGVhc2Ugbm90ZSAqKnRoaXMgcHJvamVjdCBpcyBpbiBOTyBXQVkgYWZmaWxpYXRlZCB3aXRoOyBvciBzdXBwb3J0ZWQsIG9yIGVuZG9yc2VkIGJ5OyBhbnkgb2YgdGhlIGZvbGxvd2luZyBwZW9wbGUgb3Igb3JnYW5pc2F0aW9ucy4qKgoKVGhleSBoYXZlIHNwZWNpYWwgbWVudGlvbiBoZXJlIGFzIEkgZmVlbCB0aGV5IGRlc2VydmUgaXQgOikKCiMjIyBDUVJTCgpDb21tYW5kIFF1ZXJ5IFJlc3BvbnNpYmlsaXR5IFNlZ3JlZ2F0aW9uCgotIFtNYXJ0aW4gRm93bGVyXShodHRwczovL21hcnRpbmZvd2xlci5jb20pIGZvciB0aGlzIGd1aWRlIG9uIFtDUVJTXShodHRwczovL21hcnRpbmZvd2xlci5jb20vYmxpa2kvQ1FSUy5odG1sKQotIFtHcmVnIFlvdW5nXShodHRwczovL3R3aXR0ZXIuY29tL2dyZWd5b3VuZykgYXMgaGUgaXMgbWVudGlvbmVkIG9uIGh0dHBzOi8vbWFydGluZm93bGVyLmNvbS9ibGlraS9DUVJTLmh0bWwKLSBbRG91Z2xhcyBSZWl0aF0oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2RvdWdsYXMtcmVpdGgvKSBmb3IgaW50cm9kdWNpbmcgbWUgdG8gQ1FSUyBhbmQgZXhwbGFpbmluZyBpdCBpbiBhIHdheSBJIGNvdWxkIHVuZGVyc3RhbmQKCiMjIyBPcGVuQVBJCgotIFtPcGVuQVBJIEluaXRpYXRpdmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkpOiBodHRwczovL29wZW5hcGlzLm9yZyBhbmQgaXQncyBjb250cmlidXRvcnMuCgojIyMgTWlzc2luZyBzb21lb25lL3NvbWV0aGluZz8KCkxldCBtZSBrbm93IDopCgojIyBNb2RlbHMKCmBgYAphcHAgICAgICAgICAgIEFwcCAgICAgICAgICAgQXBwcyAgICAgICAgICAgYXBwICAgICAgICAgICBhcHBzCmxvZ2ljX2dyb3VwICAgTG9naWNHcm91cCAgICBMb2dpYyBHcm91cHMgICBsb2dpYyBncm91cCAgIGxvZ2ljIGdyb3Vwcwptb2RlbCAgICAgICAgIE1vZGVsICAgICAgICAgTW9kZWxzICAgICAgICAgbW9kZWwgICAgICAgICBtb2RlbHMKYXR0cmlidXRlICAgICBBdHRyaWJ1dGUgICAgIEF0dHJpYnV0ZXMgICAgIGF0dHJpYnV0ZSAgICAgYXR0cmlidXRlcwpjb21tYW5kICAgICAgIENvbW1hbmQgICAgICAgQ29tbWFuZHMgICAgICAgY29tbWFuZCAgICAgICBjb21tYW5kcwpxdWVyeSAgICAgICAgIFF1ZXJ5ICAgICAgICAgUXVlcmllcyAgICAgICAgcXVlcnkgICAgICAgICBxdWVyaWVzCmBgYAoKIyMgUXVlcnkKCmBgYApnZXRBcHAKZ2V0TG9naWNHcm91cApnZXRNb2RlbApnZXRBdHRyaWJ1dGUKZ2V0Q29tbWFuZApnZXRRdWVyeQoKZ2V0QXBwcwpnZXRMb2dpY0dyb3Vwc0J5QXBwCmdldE1vZGVsc0J5TG9naWNHcm91cApnZXRBdHRyaWJ1dGVzQnlNb2RlbApnZXRDb21tYW5kc0J5TG9naWNHcm91cApnZXRRdWVyaWVzQnlMb2dpY0dyb3VwCmBgYAoKIyMgQ01ECgpgYGAKY3JlYXRlQXBwCmNyZWF0ZUxvZ2ljR3JvdXAKY3JlYXRlTW9kZWwKY3JlYXRlQXR0cmlidXRlCmNyZWF0ZUNvbW1hbmQKY3JlYXRlUXVlcnkKCmRlbGV0ZUFwcApkZWxldGVMb2dpY0dyb3VwCmRlbGV0ZU1vZGVsCmRlbGV0ZUF0dHJpYnV0ZQpkZWxldGVDb21tYW5kCmRlbGV0ZVF1ZXJ5Cgp1cGRhdGVBcHBOYW1lCnVwZGF0ZUxvZ2ljR3JvdXBOYW1lCnVwZGF0ZU1vZGVsTmFtZQp1cGRhdGVBdHRyaWJ1dGVOYW1lCnVwZGF0ZUNvbW1hbmROYW1lCnVwZGF0ZVF1ZXJ5TmFtZQpgYGAKCiMjIyBSZXF1aXJlcyBXb3JkUHJlc3MgUGx1Z2lucwotIEFkdmFuY2VkIEN1c3RvbSBGaWVsZHMKLSBQcm9maWxlIEJ1aWxkZXIKCiMjIEJhc2VkIG9uIFtIVE1MNSBCbGFua10oaHR0cDovL2h0bWw1YmxhbmsuY29tKQoKSFRNTDUgQmxhbmsgaXMgYSBwb3dlcmZ1bCBzaGVsbCBmb3IgcmFwaWRseSBkZXBsb3lpbmcgeW91ciBXb3JkUHJlc3MgcHJvamVjdHMuCgoqIFByb2plY3Q6IFtnaXRodWIuY29tL3RvZGRtb3R0by9odG1sNWJsYW5rXShodHRwczovL2dpdGh1Yi5jb20vdG9kZG1vdHRvL2h0bWw1YmxhbmspCiogV2Vic2l0ZTogW2h0bWw1YmxhbmsuY29tXShodHRwOi8vaHRtbDVibGFuay5jb20pCiogVHdpdHRlcjogW0BodG1sNWJsYW5rXShodHRwOi8vdHdpdHRlci5jb20vaHRtbDVibGFuaykKKiBBdXRob3IgOiBbVG9kZCBNb3R0b10oaHR0cDovL3RvZGRtb3R0by5jb20pIC8vIFtAdG9kZG1vdHRvXShodHRwOi8vdHdpdHRlci5jb20vdG9kZG1vdHRvKQoKIyMjIENvbnRyaWJ1dG9ycyAoaW4gb3JkZXIgb2YgcHVsbCByZXF1ZXN0KQpbRGF2aWQgTXVubl0oaHR0cHM6Ly9naXRodWIuY29tL011bm5kYXkpLCBbUGF0cmljayBaZWluZXJ0XShodHRwczovL2dpdGh1Yi5jb20vQ29ldXNDQyksIFtKLVJhYmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9KLVJhYmUpLCBbU3RldmUgU3RlaW5lcl0oaHR0cHM6Ly9naXRodWIuY29tL3NzdGVpbmVyeCksIFtLeWxlIEh1ZHNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2Rpc2todWIpLCBbY2hyaXNkbF0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzZGwpLCBbTWFyY2VsIE1pcmFuZGFdKGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFrdGl2byksIFtGeCBCw6luYXJkXShodHRwczovL2dpdGh1Yi5jb20vZnhiZW5hcmQpLCBJb2FuIFZpcmFnLCBbTW9oYW1lZCBFbGtlYmlyXShodHRwczovL2dpdGh1Yi5jb20vZWxrZWJpcm1lZCksIFtscmVnbGFdKGh0dHBzOi8vZ2l0aHViLmNvbS9scmVnbGEpLCBDYXJsb3MgUGluYXIsIFtKb3NodWEgTHltYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9qbHltYW4pLCBbS2V2aW4gUGxhdHRyZXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9rZXZpbnBsYXR0cmV0KSwgW1dlc2xsZWkgSGVucmlxdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS93ZXNsbGVpKSwgW1N0YWNleSBDb3Jkb25pXShodHRwczovL2dpdGh1Yi5jb20vc3RhY2V5Y29yZG9uaSkuCgojIyBNb3JlIGluZm8gYWJvdXQgSFRNTDUgQmxhbmsKCkRvd25sb2FkIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIFtodG1sNWJsYW5rLmNvbV0oaHR0cDovL2h0bWw1YmxhbmsuY29tKSwgb3IgW2dpdGh1Yi5jb20vdG9kZG1vdHRvL2h0bWw1YmxhbmtdKGh0dHBzOi8vZ2l0aHViLmNvbS90b2RkbW90dG8vaHRtbDVibGFuaykuCgojIyBNSVQgTGljZW5zZQoKQ29weXJpZ2h0ICZjb3B5OyAyMDE4IENhbGxhbiBQZXRlciBNaWxuZQoKQnVpbHQgYnkgQ2FsbGFuIE1pbG5lIC8vIEBldmlyYXRlYwpCYXNlZCBvbiB3b3JrIChbSFRNTDUgQmxhbmtdKGh0dHA6Ly9odG1sNWJsYW5rLmNvbSkpIGJ5IFRvZGQgTW90dG8gLy8gQHRvZGRtb3R0bwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K readmeEtag: '"67ddde20d93ef634c55bec672ecb3e66f354da75"' readmeLastModified: Wed, 24 Oct 2018 00:11:46 GMT repositoryId: 133067860 description: DataStudio by Eviratec (datastudio.xyz) as a WordPress Theme created: '2018-05-11T17:13:28Z' updated: '2024-05-03T14:59:12Z' language: PHP archived: false stars: 4 watchers: 1 forks: 1 owner: data-studio logo: https://avatars.githubusercontent.com/u/28729308?v=4 license: NOASSERTION repoEtag: '"f1426647c457824b4a7625d331d75059e00a961b4b033fb63e525091a7c8329b"' repoLastModified: Fri, 03 May 2024 14:59:12 GMT foundInMaster: true category: Server id: 565b3259a85c277be27ca7225a6355cf - source: - openapi3 tags - openapi31 tags repository: https://github.com/apiaddicts/sonaropenapi-rules v3: true id: 2be35a610f6c92cf6cbb96985485bb4b repositoryMetadata: base64Readme: >- CgojIPCfm6DvuI8gc29uYXJvcGVuYXBpLXJ1bGVzICAhW1JlbGVhc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcmVsZWFzZS0xLjIuMS1wdXJwbGUpICFbSmF2YV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9qYXZhLSUyM0VEOEIwMC5zdmc/c3R5bGU9ZmxhdCZsb2dvPW9wZW5qZGsmbG9nb0NvbG9yPXdoaXRlKSAgWyFbTGljZW5zZTogTEdQTCB2M10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLUxHUExfdjMtYmx1ZS5zdmcpXShodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wKSAKClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyBhIHNldCBvZiBjdXN0b20gU29uYXJRdWJlIHJ1bGVzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBhbmFseXplIGFuZCBpbXByb3ZlIHRoZSBxdWFsaXR5IG9mIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMuIEJ5IGludGVncmF0aW5nIHRoZXNlIHJ1bGVzLCB0ZWFtcyBjYW4gZW5zdXJlIGJlc3QgcHJhY3RpY2VzLCBtYWludGFpbmFiaWxpdHksIGFuZCBjb25zaXN0ZW5jeSBpbiB0aGVpciBBUEkgZGVmaW5pdGlvbnMuCgojIyMgVGhpcyByZXBvc2l0b3J5IGlzIGludGVuZGVkIGZvciA6b2N0b2NhdDogKipjb21tdW5pdHkqKiB1c2UsIGl0IGNhbiBiZSBtb2RpZmllZCBhbmQgYWRhcHRlZCB3aXRob3V0IGNvbW1lcmNpYWwgdXNlLiBJZiB5b3UgbmVlZCBhIHZlcnNpb24sIHN1cHBvcnQgb3IgaGVscCBmb3IgeW91ciAqKmVudGVycHJpc2UqKiBvciBwcm9qZWN0LCBwbGVhc2UgY29udGFjdCB1cyDwn5OnIGRldnJlbEBhcGlhZGRpY3RzLm9yZwojIyMg8J+SoSBJZiB5b3UgaGF2ZSBhbiBpZGVhIGZvciBhIHJ1bGUgYnV0IHlvdSBhcmUgbm90IHN1cmUgdGhhdCBldmVyeW9uZSBuZWVkcyBpdCB5b3UgY2FuIGltcGxlbWVudCBhIFtjdXN0b20gcnVsZV0oQ3VzdG9tUnVsZXMubWQpIGF2YWlsYWJsZSBvbmx5IGZvciB5b3UuCgpbIVtUd2l0dGVyXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1R3aXR0ZXItJTIzMDAwMDAwLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289eCZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL3R3aXR0ZXIuY29tL0FQSUFkZGljdHMpIApbIVtEaXNjb3JkXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0Rpc2NvcmQtJTIzNTg2NUYyLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289ZGlzY29yZCZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL2Rpc2NvcmQuZ2cvWmRiR3FNQll5OCkKWyFbTGlua2VkSW5dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGlua2VkaW4tJTIzMDA3N0I1LnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289bGlua2VkaW4mbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbXBhbnkvYXBpYWRkaWN0cy8pClshW0ZhY2Vib29rXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0ZhY2Vib29rLSUyMzE4NzdGMi5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPUZhY2Vib29rJmxvZ29Db2xvcj13aGl0ZSldKGh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9hcGlhZGRpY3RzKQpbIVtZb3VUdWJlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1lvdVR1YmUtJTIzRkYwMDAwLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289WW91VHViZSZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9AQVBJQWRkaWN0c2xtYW9vKQoKIyDwn5mMIEpvaW4gdGhlICoqZG9Tb25hckFwaSoqIEFkb3B0ZXJzIGxpc3QgCvCfk6IgSWYgZG9Tb25hckFwaSBpcyBwYXJ0IG9mIHlvdXIgb3JnYW5pemF0aW9uJ3MgdG9vbGtpdCwgd2Uga2luZGx5IGVuY291cmFnZSB5b3UgdG8gaW5jbHVkZSB5b3VyIGNvbXBhbnkncyBuYW1lIGluIG91ciBBZG9wdGVycyBsaXN0LiDwn5mPIFRoaXMgbm90IG9ubHkgc2lnbmlmaWNhbnRseSBib29zdHMgdGhlIHByb2plY3QncyB2aXNpYmlsaXR5IGFuZCByZXB1dGF0aW9uIGJ1dCBhbHNvIHJlcHJlc2VudHMgYSBzbWFsbCB5ZXQgaW1wYWN0ZnVsIHdheSB0byBnaXZlIGJhY2sgdG8gdGhlIHByb2plY3QuCgp8IE9yZ2FuaXphdGlvbiAgfCBEZXNjcmlwdGlvbiBvZiBVc2UgLyBSZWZlcmVuYyB8CnwtLS18LS0tfAp8ICBbQ2xvdWRBcHBpXShodHRwczovL2Nsb3VkYXBwaS5uZXQvKSAgfCBBcGlmaWNhdGlvbiBhbmQgZ2VuZXJhdGlvbiBvZiBtaWNyb3NlcnZpY2VzIHwKfCBbTWFkcmlkIERpZ2l0YWxdKGh0dHBzOi8vd3d3LmNvbXVuaWRhZC5tYWRyaWQvc2VydmljaW9zL3NlZGUtZWxlY3Ryb25pY2EvbWFkcmlkLWRpZ2l0YWwvKSAgfCBHZW5lcmF0aW9uIG9mIG1pY3Jvc2VydmljZXMgIHwKfCBbQXBpcXVhbGl0eV0oaHR0cHM6Ly9hcGlxdWFsaXR5LmlvLykgIHwgR2VuZXJhdGlvbiBvZiBtaWNyb3NlcnZpY2VzICB8CgojIPCfkanwn4+94oCN8J+SuyAgQ29udHJpYnV0ZSB0byBBcGlBZGRpY3RzIAoKV2UncmUgYW4gaW5jbHVzaXZlIGFuZCBvcGVuIGNvbW11bml0eSwgd2VsY29taW5nIHlvdSB0byBqb2luIG91ciBlZmZvcnQgdG8gZW5oYW5jZSBBcGlBZGRpY3RzLCBhbmQgd2UncmUgZXhjaXRlZCB0byBwcmlvcml0aXplIHRhc2tzIGJhc2VkIG9uIGNvbW11bml0eSBpbnB1dCwgaW52aXRpbmcgeW91IHRvIHJldmlldyBhbmQgY29sbGFib3JhdGUgdGhyb3VnaCBvdXIgR2l0SHViIGlzc3VlIHRyYWNrZXIuCgpGZWVsIGZyZWUgdG8gZHJvcCBieSBhbmQgZ3JlZXQgdXMgb24gb3VyIEdpdEh1YiBkaXNjdXNzaW9uIG9yIERpc2NvcmQgY2hhdC4gWW91IGNhbiBhbHNvIHNob3cgeW91ciBzdXBwb3J0IGJ5IGdpdmluZyB1cyBzb21lIEdpdEh1YiBzdGFycyDirZDvuI8sIG9yIGJ5IGZvbGxvd2luZyB1cyBvbiBUd2l0dGVyLCBMaW5rZWRJbiwgYW5kIHN1YnNjcmliaW5nIHRvIG91ciBZb3VUdWJlIGNoYW5uZWwhIPCfmoAKClshWyJCdXkgTWUgQSBDb2ZmZWUiXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2Fzc2V0cy9pbWcvY3VzdG9tX2ltYWdlcy9vcmFuZ2VfaW1nLnBuZyldKGh0dHBzOi8vd3d3LmJ1eW1lYWNvZmZlZS5jb20vYXBpYWRkaWN0cykKCgojIPCfk5EgR2V0dGluZyBzdGFydGVkIAoKIyMg8J+UjSBDb25maWd1cmUgc2Nhbm5lcgoKIyMjIE1hdmVuIHBsdWdpbgoKIyMjIyBDb25maWd1cmUgcHJvcGVydGllcwoKSW4gYHBvbS54bWxgIGNvbmZpZ3VyZToKCmBgYGB4bWwKICAgIDxwcm9wZXJ0aWVzPgogICAgICAgIDwhLS0gT3B0aW9uYWwsIFdoZW4gaXMgc2V0IG9ubHkgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBpcyBhbmFseXplZCAtLT4KICAgICAgICA8c29uYXIubGFuZ3VhZ2U+b3BlbmFwaTwvc29uYXIubGFuZ3VhZ2U+CiAgICAgICAgPCEtLSBPcHRpb25hbCwgRGVmYXVsdCB2YWx1ZSBpcyBzcmMvbWFpbixwb20ueG1sIC0tPgogICAgICAgIDxzb25hci5zb3VyY2VzPi48L3NvbmFyLnNvdXJjZXM+CiAgICA8L3Byb3BlcnRpZXM+CmBgYGAKCiMjIyMgUnVuIHNjYW5uZXIKCmBtdm4gc29uYXI6c29uYXIgLURzb25hci5ob3N0LnVybD08SE9TVD4gLURzb25hci5sb2dpbj08S0VZPmAKCiMjIyBFeHRlcm5hbCBgc29uYXItc2Nhbm5lcmAKCiMjIyMgSW5zdGFsbCBgc29uYXItc2Nhbm5lcmAKCkRvd25sb2FkIHRoZSBgc29uYXItc2Nhbm5lcmAgZnJvbSBodHRwczovL2RvY3Muc29uYXJxdWJlLm9yZy9sYXRlc3QvYW5hbHlzaXMvc2Nhbi9zb25hcnNjYW5uZXIvIGFuZCBtYWtlIGl0IGFjY2Vzc2libGUuCgojIyMjIENvbmZpZ3VyZSBwcm9wZXJ0aWVzCgpJbiBgc29uYXItcHJvamVjdC5wcm9wZXJ0aWVzYCAoZmlsZSBpbiByb290IHByb2plY3QgZm9sZGVyKSBjb25maWd1cmU6CgpgYGBgcHJvcGVydGllcwojIG11c3QgYmUgdW5pcXVlIGluIGEgZ2l2ZW4gU29uYXJRdWJlIGluc3RhbmNlCnNvbmFyLnByb2plY3RLZXk9dGVzdDp0ZXN0CiMgdGhpcyBpcyB0aGUgbmFtZSBhbmQgdmVyc2lvbiBkaXNwbGF5ZWQgaW4gdGhlIFNvbmFyUXViZSBVSS4gV2FzIG1hbmRhdG9yeSBwcmlvciB0byBTb25hclF1YmUgNi4xLgpzb25hci5wcm9qZWN0TmFtZT1PcGVuQVBJIHBsdWdpbiB0ZXN0cwpzb25hci5wcm9qZWN0VmVyc2lvbj0xLjAtU05BUFNIT1QKCiMgUGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgc29uYXItcHJvamVjdC5wcm9wZXJ0aWVzIGZpbGUuIFJlcGxhY2UgIlwiIGJ5ICIvIiBvbiBXaW5kb3dzLgojIFRoaXMgcHJvcGVydHkgaXMgb3B0aW9uYWwgaWYgc29uYXIubW9kdWxlcyBpcyBzZXQuCnNvbmFyLnNvdXJjZXM9LgoKIyBFbmNvZGluZyBvZiB0aGUgc291cmNlIGNvZGUuIERlZmF1bHQgaXMgZGVmYXVsdCBzeXN0ZW0gZW5jb2RpbmcKc29uYXIuc291cmNlRW5jb2Rpbmc9VVRGLTgKIyBTZWxlY3QgdGhlIGxhbmd1YWdlIHRvIHVzZSBmb3IgYW5hbHlzaXMKc29uYXIubGFuZ3VhZ2U9b3BlbmFwaQpgYGBgCgojIyMjIOKWtu+4jyBSdW4gc2Nhbm5lcgoKYHNvbmFyLXNjYW5uZXIgLURzb25hci5ob3N0LnVybD08SE9TVD4gLURzb25hci5sb2dpbj08S0VZPmAKCiMjIOKchSBDb21wYXRpYmlsaXR5CgpUaGlzIHBsdWdpbiBpcyBzdXBwb3J0ZWQgYnkgU29uYXJRdWJlIHZlcnNpb25zIGdyZWF0ZXIgb3IgZXF1YWwgdG8gYDYuNy40YAoKIyMjIEV4cGxpY2l0IGNvbXBhdGliaWxpdHkgdmVyc2lvbnMgdGVzdGVkCgp8IFZlcnNpb24gfAp8LS0tLS0tLS0tfAp8IGA2LjcuNGAgfAp8IGA3LjktY29tbXVuaXR5YCB8CnwgYDguMy1jb21tdW5pdHlgIHwKCiMjIPCfkpsgU3BvbnNvcnMKPGltZyBzcmM9Imh0dHBzOi8vYXBpYWRkaWN0cy5jbG91ZGFwcGkubmV0L3dlYi9pbWFnZS80MjQ4L0xPR09DbG91ZGFwcGkyMDIwVmVyc2lvbmVzLTAxLnBuZyIgYWx0PSJjbG91ZGFwcGkiIHdpZHRoPSIxNTAiLz4KPGltZyBzcmM9Imh0dHBzOi8vd3d3LmNvbXVuaWRhZC5tYWRyaWQvc2l0ZXMvZGVmYXVsdC9maWxlcy9zdHlsZXMvYmxvY2tfdGVhc2VyX2ltYWdlL3B1YmxpYy9pbWcvbG9nb3Mtc2ltYm9sb3MvbG9nb19jZW50cmFkb19tZC5wbmc/aXRvaz00clRVaG1jaiIgYWx0PSJtZCIgd2lkdGg9IjE1MCIvPgo8aW1nIHNyYz0iaHR0cHM6Ly9hcGlxdWFsaXR5LmlvL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzA5L2Nyb3BwZWQtbG9nby1hcGlxdWFsaXR5LXByaW5jaXBhbC0xLTE3MHg3MC5wbmciIGhlaWdodCA9ICI3NSI+CjxpbWcgc3JjPSJodHRwczovL2FwaWFkZGljdHMtd2ViLnMzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzAzLzE3MTU1NzM2L2Nyb3BwZWQtQVBJQWRkaWN0cy1sb2dvdGlwb19yb2pvLnBuZyIgaGVpZ2h0ID0gIjc1Ij4K readmeEtag: '"bdd2aba7b120f647ba7bf8b8ffe41420c78e9880"' readmeLastModified: Mon, 19 May 2025 14:55:19 GMT repositoryId: 317901907 description: >- sonaropenapi-rules is a set of rules to validate OpenAPI / Swagger api definitions in SonarQube, you also need to install the evaluation engine. created: '2020-12-02T15:15:59Z' updated: '2026-01-08T16:42:17Z' language: HTML archived: false stars: 19 watchers: 2 forks: 0 owner: apiaddicts logo: https://avatars.githubusercontent.com/u/31730093?v=4 license: LGPL-3.0 repoEtag: '"54dc86e533d8fbf9fa7f23a9652d7022068660abb1d872c82c3452fca46bd53f"' repoLastModified: Thu, 08 Jan 2026 16:42:17 GMT category: - Code Generators - Server Implementations foundInMaster: true v3_1: true oldLocations: - https://github.com/apiaddicts/dosonarapi - source: openapi3 tags repository: https://github.com/guillaumedeconinck/todos-fastify v3: true repositoryMetadata: base64Readme: >- IyBUb2RvcyBBUEkKCiMjIFdoYXQgaXMgdGhpcyByZXBvc2l0b3J5ID8KClRoaXMgcmVwb3NpdG9yeSwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGEgVG9kb3MgQVBJLiBUaGUgbWFpbiBnb2FsIG9mIHRoaXMgQVBJIGlzIHRvIHNlcnZlIGFzIGEgInByb29mIiAob3IgInBvcnRmb2xpbyIpIG9mIG15IG93biBza2lsbHMuIFRoaXMgQVBJIGlzIGltcGxlbWVudGVkIGluICoqVHlwZXNjcmlwdCoqIGFuZCB1c2VzICoqTm9kZUpTIDE2KiouCgpXaGlsZSBidWlsZGluZyB0aGlzIEFQSSwgSSdtIGFsc28gc29tZXRpbWVzIGxlYXJuaW5nIG5ldyBzdHVmZiBhbmQgYXBwbHlpbmcgbmV3IGNvbmNlcHRzIHRoYXQgSSBoYXZlbid0IGhhZCB0aGUgb2NjYXNpb24gdG8gdXNlIGJlZm9yZS4KCklkZWFsbHksIEkgd291bGQgbGlrZSB0aGlzIEFQSSB0byBmb2xsb3cgYSBmZXcgcHJpbmNpcGxlczoKCi0gWzEyLWZhY3RvciBhcHBdKGh0dHBzOi8vMTJmYWN0b3IubmV0LykKLSBESSAoRGVwZW5kZW5jeSBJbmplY3Rpb24pIHdpdGggaW50ZXJmYWNlcywgdGhhbmtzIHRvIFt0c3lyaW5nZV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC90c3lyaW5nZSkKLSBNaWNyb3NlcnZpY2VzIHBhdHRlcm5zCiAgLSBNb3JlIHNwZWNpZmljYWxseSBlbnN1cmUgdGhhdCBldmVudHMgYXJlIGVtaXR0ZWQgYXQgbGVhc3Qgb25jZSAobm90IHlldCBpbXBsZW1lbnRlZCwgc2VlIFsjMTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9HdWlsbGF1bWVEZWNvbmluY2svdG9kb3MtZmFzdGlmeS9pc3N1ZXMvMTUpKQogIC0gTW9yZSBEREQgbWF5YmUgKEkgaGF2ZSB0byAocmUpcmVhZCBtb3JlIGFydGljbGVzL2Jvb2tzIG9uIHRoaXMpCi0gUHJvcGVybHkgZG9jdW1lbnRlZAotIEdvb2QgZXJyb3IgbWVzc2FnZXMsIGFzIHRoZSBoYXBweSBmbG93IGlzIG5vdCB0aGUgb25seSBmbG93CgojIyBTdHJ1Y3R1cmUgb2YgdGhlIHByb2plY3QKCnwgRm9sZGVyIG9yIGZpbGUgICAgICAgICB8IEV4cGxhbmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgYF9fdGVzdHNfX2AgICAgICAgICAgICB8IFVuaXQgYW5kIGUyZSB0ZXN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYC5naXRodWJgICAgICAgICAgICAgICB8IEdpdGh1YiB3b3JrZmxvdyBmb2xkZXIgKENJL0NEKSAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYHNyY2AgICAgICAgICAgICAgICAgICB8IFNvdXJjZSBjb2RlLCBhcyBleHBlY3RlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGRvY2tlci1jb21wb3NlKi55YW1sYCB8IEFsbCB0aGUgZG9ja2VyLWNvbXBvc2UgZmlsZXMsIHVzZWQgZm9yIGRldiAmIGUyZSB0ZXN0cyB8CnwgYG9wZW5hcGkueWFtbGAgICAgICAgICB8ICoqT3BlbkFQSSBkZWZpbml0aW9uKiogb2YgdGhlIEFQSSAgICAgICAgICAgICAgICAgICAgICB8CgpNb3Jlb3ZlciwgdGhlIGBzcmNgIGZvbGRlciBpcyBkaXZpZGVkIGFzIGZvbGxvd3MgKG5vdCBpbiBhbHBoYWJldGljYWwgb3JkZXIpOgoKfCBGb2xkZXIgb3IgZmlsZSAgIHwgRXhwbGFuYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgYHJlc3RgICAgICAgICAgICB8IFJFU1QsIHNvIHJvdXRlIGhhbmRsZXJzLCBtaWRkbGV3YXJlcywgZXRjLiBObyBsb2dpYyBoZXJlICEgICAgICAgICAgICAgICAgICAgIHwKfCBgYXBwbGljYXRpb25gICAgIHwgU2VydmljZXMgZG9pbmcgdGhlIGxpbmsgYmV0d2VlbiBSRVNUIGFuZCBkb21haW4gKG5vdCByZWFsbHkgdXNlZnVsIHJpZ2h0IG5vdykgfAp8IGBkb21haW5gICAgICAgICAgfCBUaGUgbW9kZWxzIGFuZCByZXBvc2l0b3JpZXMnIGludGVyZmFjZXMsIHRoYXQncyB3aGVyZSB0aGUgbG9naWMgc2hvdWxkIGJlICAgICB8CnwgYGluZnJhc3RydWN0dXJlYCB8IEFsbCB0aGUgcmVwb3NpdG9yaWVzIGltcGxlbWVudGF0aW9ucywgZS5nLiBQb3N0Z3JlcyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgdG9vbHNgICAgICAgICAgIHwgVXRpbGl0aWVzIGZpbGVzIHN1Y2ggYXMgZW52IHZhcnMsIGxvZ2dlciAmIG1haW50ZW5hbmNlIHN0dWZmICAgICAgICAgICAgICAgICAgfAoKPiBUZWNobmljYWxseSBgcmVzdGAgY291bGQgYmUgaW4gYGluZnJhc3RydWN0dXJlYAoKPiAqKlRoaXMgc3RydWN0dXJlIGNhbiBiZSBzZWVuIGFzIG92ZXJraWxsIGZvciB0aGUgc2l6ZSBvZiB0aGlzIEFQSSAoYXMgdGhlcmUgaXMgb25seSBvbmUgcmVzb3VyY2UgZm9yIG5vdykqKgoKIyMgSG93IHRvIHVzZQoKIyMjIFByZXJlcXVpc2l0ZXMKCkZvciBydW5uaW5nIHRoaXMgcHJvamVjdCwgaXQncyBleHBlY3RlZCB0aGF0IHlvdSBoYXZlIGFscmVhZHkgb24geW91ciBtYWNoaW5lCgotIE5vZGUgMTYgJiBucG0gOAotIERvY2tlcgoKIyMjIFJ1bm5pbmcgdGhlIEFQSQoKVGhlIHByb2plY3QgaXMgcXVpdGUgc2ltcGxlIHRvIHVzZSwgZmlyc3QgY2xvbmUgdGhlIHJlcG9zaXRvcnkgYW55d2hlcmUgb24geW91ciBtYWNoaW5lOgoKYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9HdWlsbGF1bWVEZWNvbmluY2svdG9kb3MtZmFzdGlmeS5naXQKYGBgCgpUaGVuLCBpbnN0YWxsIHRoZSBkZXBlbmRlbmNpZXM6CgpgYGBzaApucG0gY2kKYGBgCgo+IGBucG1gIGlzIHVzZWQgaGVyZSwgYnV0IHlvdSBjYW4gdXNlIGB5YXJuYCBvciBgcG5wbWAuCgpBcyB0aGUgQVBJIGlzIGV4cGVjdGVkIHRvIHJ1biBpbiBhIGNvbnRhaW5lciAoZS5nLiBpbiBhIEt1YmVybmV0ZXMgY2x1c3RlciksIEkgcmVseSBoZWF2aWx5IG9uIERvY2tlciwgZXZlbiBmb3IgZGV2ZWxvcG1lbnQgYW5kIHRlc3RzLiBGb3IgcnVubmluZyB0aGUgYXBpLCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgc2gKbnBtIHJ1biBkZXYKYGBgCgpBZnRlciBhIH5+c2hvcnR+fiB0aW1lLCB5b3Ugc2hvdWxkIGhhdmUgYSBydW5uaW5nIEFQSSBvbiBwb3J0IGA5MDAyYCAoZGVmYXVsdCkKCiMjIyBNb25pdG9yaW5nCgpUaGUgQVBJIGNhbiBwcm92aWRlIHRyYWNlcyBvZiB3aGF0IGlzIGhhcHBlbmluZyB0byB0aGUgZW52IHZhciBgT1RMUF9HUlBDX0VORFBPSU5UYC4KClRoZSBzcGFucyBhcmUgZ2VuZXJhdGVkIHdpdGggW09wZW5UZWxlbWV0cnldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzKSBhbmQgaGF2ZSBiZWVuIHRlc3RlZCB3aXRoIFtTaWdOb3pdKGh0dHBzOi8vZ2l0aHViLmNvbS9TaWdOb3ovc2lnbm96KS4KCjxkZXRhaWxzPgogIDxzdW1tYXJ5PlNjcmVlbnNob3RzIGluIFNpZ05vejwvc3VtbWFyeT4KICAKICAhW0xpc3Qgb2YgZW5kcG9pbnRzIHdpdGggdGhlaXIgbWV0cmljc10oZG9jcy9pbWFnZXMvVG9kb3NUcmFjZXNFbmRwb2ludHMucG5nKQogICFbU3BhbnMgb2YgYSBQVVQgcmVxdWVzdF0oZG9jcy9pbWFnZXMvVG9kb3NUcmFjZXNQVVQucG5nKQo8L2RldGFpbHM+CgojIyMgTWlncmF0aW9ucwoKPiBPdXRkYXRlZCwgdG8gYmUgcmV3cml0dGVuIHNvb24KCkFzIHlvdSBtYXkgaGF2ZSBub3RpY2VkLCBtaWdyYXRpb25zIHdlcmVuJ3QgbWVudGlvbmVkIGF0IGFsbCBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbi4gKipUaGUgbWlncmF0aW9ucyBhcmUgaW4gZmFjdCBydW4gZHVyaW5nIHRoZSBzdGFydHVwIG9mIHRoZSBBUEkuKiogVGhpcyBpcyBub3QgYWx3YXlzIHRoZSBiZXN0IHRoaW5nIHRvIGRvIChlLmcuIGEgaGlnaGx5IHNlbnNpdGl2ZSBtaWdyYXRpb24gdGhhdCBjYW5ub3QgYmUgYXZvaWRlZCksIGJ1dCBmb3IgdGhpcyBzaW1wbGUgQVBJLCBpdCdzIG9rYXkuCgpUbyBjcmVhdGUgYSBuZXcgbWlncmF0aW9uLCBzaW1wbHkgcnVuCgpgYGBzaApucHggZGItbWlncmF0ZSBjcmVhdGUgdGhlLW5hbWUtb2YtdGhlLW1pZ3JhdGlvbgpgYGAKCkl0IHdpbGwgY3JlYXRlIGEgbmV3IGZpbGUgaW4gdGhlIGBtaWdyYXRpb25zYCBmb2xkZXIsIHdpdGggYSB0aW1lc3RhbXAgYW5kIHRoZSBuYW1lIHByb3ZpZGVkLgoKIyMgVGVzdGluZyB0aGUgQVBJCgojIyMgVW5pdCB0ZXN0cwoKU2ltcGx5IHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQKCmBgYHNoCm5wbSBydW4gdGVzdApgYGAKCiMjIyBFMkUgdGVzdHMKClJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQKCmBgYHNoCm5wbSBydW4gZG9ja2VyOmUyZQpgYGAKClRoaXMgd2lsbCBsYXVuY2ggYSBmZXcgY29udGFpbmVyczoKCi0gVGhlIGN1cnJlbnQgQVBJCi0gQSBQb3N0Z3JlcyBkYXRhYmFzZSwgdXNlZCBieSB0aGUgQVBJCi0gQSB0ZXN0IHJ1bm5lciAtPiBleGVjdXRlcyBKZXN0CgpUaGUgQVBJIGhhcyBhIHZvbHVtZSBtYXBwZWQgdG8gYHNyY2Agd2l0aCBgbm9kZW1vbmAgcnVubmluZy4gU28gYW55IGNoYW5nZSB0byB0aGUgc291cmNlIGNvZGUgd2lsbCB0cmlnZ2VyIGEgcmVzdGFydCBvZiB0aGUgQVBJLgoKVGhlIHRlc3QgcnVubmVyIGhhcyBhIHZvbHVtZSBtYXBwZWQgdG8gYF9fdGVzdHNfX2Agd2l0aCBgbm9kZW1vbmAgcnVubmluZyBhcyB3ZWxsLiBBbnkgY2hhbmdlIHRvIGEgdGVzdCB3aWxsIHJlLWxhdW5jaCB0aGUgd2hvbGUgRTJFIHN1aXRlLgoKPiBZb3UgY2FuIHRlc3QvZm9jdXMgb25seSBvbiBvbmUgdGVzdCBmaWxlIGJ5IGNoYW5naW5nIHRoZSBgY29tbWFuZDpgIG9wdGlvbiBpbiB0aGUgZmlsZSBgZG9ja2VyLWNvbXBvc2UuZTJlLmxvY2FsLnlhbWxgLgoKIyMgQ29udmVudGlvbnMKCkEgYC5lZGl0b3Jjb25maWdgIGZpbGUgd2lsbCBzb29uIGJlIGFkZGVkLiBJbiB0aGUgbWVhbiB0aW1lLCB0aGlzIHByb2plY3QgdXNlcyBgcHJldHRpZXJgIHdpdGggYGVzbGludGAgdG8gZW5zdXJlIHRoYXQgdGhlIGNvZGViYXNlIGZvbGxvd3MgdGhlIGNvbnZlbnRpb25zIHByb3Blcmx5LgoKIyMgUm9hZG1hcAoKVGhlIHJvYWRtYXAgaXMga2luZGEgZGVzY3JpYmVkIGluIHRoZSBpc3N1ZXMgb2YgdGhpcyByZXBvc2l0b3J5LCBidXQgaW4gInNob3J0IiBhbmQgbm90IGluIG9yZGVyOgoKLSBGaW5pc2ggdGhlIENSVUQgb2YgVG9kb3MKLSBBZGQgQ1JVRCBvZiBUYWdzLCBhbmQgbGluayB0aGVzZSB0byBUb2RvcwotIE1pZ3JhdGUgY3VycmVudCBtYW51YWwgdXNhZ2Ugb2YgYHBnYCB0byBhbiBPUk0gbWF5YmUgPwotIEV2ZW50IGVtaXNzaW9uIHRvIFJhYmJpdE1RIHdoZW4gc29tZXRoaW5nIGlzIGNyZWF0ZWQvY2hhbmdlZC9kZWxldGVkCi0gSGFuZGxlIGVycm9ycyBtb3JlIGdyYWNlZnVsbHkKLSBIYW5kbGUgc2h1dGRvd24gc2lnbmFsIGdyYWNlZnVsbHkgKGUuZy4gZG8gbm90IGtpbGwgYWxsIG9uZ29pbmcgcmVxdWVzdHMpCi0gUHJvbWV0aGV1cyBtZXRyaWNzCi0gUHJvcGVyIGxvZ2dpbmcgaW4gSlNPTiB3aXRoIGdvb2QgbWV0YWRhdGEvZXJyb3IgaGFuZGxpbmcKLSBIZWFsdGhjaGVjay9yZWFkaW5lc3Mgcm91dGVzCi0gQXV0aCB3aXRoIEpXVAotIEF1dG9tYXRlZCBjbGVhbnVwICh0byBhdm9pZCB0aGUgZnJlZSBIZXJva3UgREIgdG8gZ28gZnVsbCkKLSBSYXRlIGxpbWl0aW5nIChnbG9iYWwgYW5kIHBlciB1c2VyID8pCi0gSW1wbGVtZW50IGUyZS9pbnRlZ3JhdGlvbiB0ZXN0cyB3aXRoIHN1cGVydGVzdCBvciBzb21ldGhpbmcgc2ltaWxhciA/Ci0gQWRkIHVuaXQgdGVzdHMuLi4gQnV0IHJpZ2h0IG5vdyB0aGVyZSdzIGxpdGVyYWxseSBubyBsb2dpYyB0byB0ZXN0IDopCg== readmeEtag: '"b0e4e597ac4e8587bd04b2a7531f2e2e89b824c4"' readmeLastModified: Sat, 09 Jul 2022 13:04:51 GMT repositoryId: 389616942 description: Todos API written in Typescript, trying to implement the best practices. created: '2021-07-26T11:59:04Z' updated: '2022-12-03T08:30:52Z' language: TypeScript archived: false stars: 4 watchers: 1 forks: 0 owner: GuillaumeDeconinck logo: https://avatars.githubusercontent.com/u/8962903?v=4 repoEtag: '"363e791d4c8e58b888f720e1236417be2db05884bc475400b225f1f40d0bfb52"' repoLastModified: Sat, 03 Dec 2022 08:30:52 GMT foundInMaster: true category: Server Implementations id: dcbaa2bec964bbacbd35706dd3d03fe9 - source: openapi3 tags repository: https://github.com/swaggest/php-swagger2-schema v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIDMuMCBhbmQgU3dhZ2dlciAyLjAgc2NoZW1hIFBIUCBtYXBwaW5ncwoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvc3dhZ2dlc3QvcGhwLXN3YWdnZXIyLXNjaGVtYS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9zd2FnZ2VzdC9waHAtc3dhZ2dlcjItc2NoZW1hKQpbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvc3dhZ2dlc3QvcGhwLXN3YWdnZXIyLXNjaGVtYS9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2ZyldKGh0dHBzOi8vY29kZWNvdi5pby9naC9zd2FnZ2VzdC9waHAtc3dhZ2dlcjItc2NoZW1hKQoKQWNjZXNzIGFuZCB2YWxpZGF0ZSBgT3BlbkFQSSAzLjBgIGFuZCBgU3dhZ2dlciAyLjBgIHNjaGVtYXMgZnJvbSBQSFAuCgojIyBJbnN0YWxsYXRpb24KCmBgYApjb21wb3NlciByZXF1aXJlIHN3YWdnZXN0L3N3YWdnZXIyLXNjaGVtYQpgYGAKCiMjIFVzYWdlCgojIyMgT3BlbkFQSSAzLjAKCmBgYHBocAovLyBMb2FkIHNjaGVtYQokanNvbiA9IGpzb25fZGVjb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKF9fRElSX18gLiAnLy4uLy4uLy4uL3NwZWMvcGV0c3RvcmUtb3BlbmFwaTMuanNvbicpKTsKCi8vIEltcG9ydCBhbmQgdmFsaWRhdGUKJHNjaGVtYSA9IE9wZW5BUEkzU2NoZW1hOjppbXBvcnQoJGpzb24pOwoKLy8gQWNjZXNzIGRhdGEgdGhyb3VnaCBQSFAgY2xhc3NlcwokdGhpcy0+YXNzZXJ0U2FtZSgnU3dhZ2dlciBQZXRzdG9yZScsICRzY2hlbWEtPmluZm8tPnRpdGxlKTsKJG9wcyA9ICRzY2hlbWEtPnBhdGhzWycvcGV0cyddLT5nZXRHZXRQdXRQb3N0RGVsZXRlT3B0aW9uc0hlYWRQYXRjaFRyYWNlVmFsdWVzKCk7CiR0aGlzLT5hc3NlcnRTYW1lKCdMaXN0IGFsbCBwZXRzJywgJG9wc1snZ2V0J10tPnN1bW1hcnkpOwoKJHJlc3BvbnNlU2NoZW1hID0gJG9wc1snZ2V0J10tPnJlc3BvbnNlc1syMDBdLT5jb250ZW50WydhcHBsaWNhdGlvbi9qc29uJ10tPnNjaGVtYTsKJHRoaXMtPmFzc2VydFNhbWUoJ2FycmF5JywgJHJlc3BvbnNlU2NoZW1hLT50eXBlKTsKYGBgCgojIyMgU3dhZ2dlciAyLjAKCmBgYHBocAovLyBMb2FkIHNjaGVtYQokanNvbiA9IGpzb25fZGVjb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKF9fRElSX18gLiAnLy4uLy4uL3NwZWMvcGV0c3RvcmUtc3dhZ2dlci5qc29uJykpOwoKLy8gSW1wb3J0IGFuZCB2YWxpZGF0ZQokc2NoZW1hID0gU3dhZ2dlclNjaGVtYTo6aW1wb3J0KCRqc29uKTsKCi8vIEFjY2VzcyBkYXRhIHRocm91Z2ggUEhQIGNsYXNzZXMKJHRoaXMtPmFzc2VydFNhbWUoJ1N3YWdnZXIgUGV0c3RvcmUnLCAkc2NoZW1hLT5pbmZvLT50aXRsZSk7CmBgYAo= readmeEtag: '"8e722603a21649933772da39d0b264692af2891e"' readmeLastModified: Thu, 17 Jun 2021 22:37:53 GMT repositoryId: 116000397 description: OpenAPI 3.0 / Swagger 2.0 schema PHP mappings created: '2018-01-02T09:52:55Z' updated: '2026-01-09T20:28:35Z' language: PHP archived: false stars: 6 watchers: 1 forks: 0 owner: swaggest logo: https://avatars.githubusercontent.com/u/19609628?v=4 repoEtag: '"6576b57713df03ce038f3e6676d7504da16758271122adba7fb743b29071233f"' repoLastModified: Fri, 09 Jan 2026 20:28:35 GMT foundInMaster: true category: Parsers id: 891b1d19c1d5b9398f4b4df84df90b50 - source: openapi3 tags repository: https://github.com/goodforgod/micronaut-management-openapi v3: true repositoryMetadata: base64Readme: >- IyBNaWNyb25hdXQgTWFuYWdlbWVudCBPcGVuQVBJCgpbIVtNaW5pbXVtIHJlcXVpcmVkIEphdmEgdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9KYXZhLTE3JTJCLWJsdWU/bG9nbz1vcGVuamRrKV0oaHR0cHM6Ly9vcGVuamRrLm9yZy9wcm9qZWN0cy9qZGsvMTcvKQpbIVtNYXZlbiBDZW50cmFsXShodHRwczovL21hdmVuLWJhZGdlcy5oZXJva3VhcHAuY29tL21hdmVuLWNlbnRyYWwvaW8uZ29vZGZvcmdvZC9taWNyb25hdXQtbWFuYWdlbWVudC1vcGVuYXBpL2JhZGdlLnN2ZyldKGh0dHBzOi8vbWF2ZW4tYmFkZ2VzLmhlcm9rdWFwcC5jb20vbWF2ZW4tY2VudHJhbC9pby5nb29kZm9yZ29kL21pY3JvbmF1dC1tYW5hZ2VtZW50LW9wZW5hcGkpCiFbSmF2YSBDSV0oaHR0cHM6Ly9naXRodWIuY29tL0dvb2Rmb3JHb2QvbWljcm9uYXV0LW1hbmFnZW1lbnQtb3BlbmFwaS93b3JrZmxvd3MvQ0klMjBNYXN0ZXIvYmFkZ2Uuc3ZnKQpbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1Hb29kZm9yR29kX21pY3JvbmF1dC1tYW5hZ2VtZW50LW9wZW5hcGkmbWV0cmljPWFsZXJ0X3N0YXR1cyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9R29vZGZvckdvZF9taWNyb25hdXQtbWFuYWdlbWVudC1vcGVuYXBpKQpbIVtDb3ZlcmFnZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9R29vZGZvckdvZF9taWNyb25hdXQtbWFuYWdlbWVudC1vcGVuYXBpJm1ldHJpYz1jb3ZlcmFnZSldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9R29vZGZvckdvZF9taWNyb25hdXQtbWFuYWdlbWVudC1vcGVuYXBpKQpbIVtNYWludGFpbmFiaWxpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1Hb29kZm9yR29kX21pY3JvbmF1dC1tYW5hZ2VtZW50LW9wZW5hcGkmbWV0cmljPXNxYWxlX3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9R29vZGZvckdvZF9taWNyb25hdXQtbWFuYWdlbWVudC1vcGVuYXBpKQoKTGlicmFyeSBwcm92aWRlcyBNaWNyb25hdXQgKmNsb3VkLWZyaWVuZGx5KiBPcGVuQVBJL1N3YWdnZXItVUkvUmFwaWRvYyBtYW5hZ2VtZW50IGVuZHBvaW50cy4KCkZlYXR1cmVzOgotIENsb3VkLWZyaWVuZGx5LCAqb3B0aW1pemVkIGZvciBmaWxlIHN0cmVhbWluZyogT3BlbkFQSS9Td2FnZ2VyLVVJL1JhcGlkb2MgZW5kcG9pbnRzCi0gTWVyZ2luZyBtdWx0aXBsZSBPcGVuQVBJIGZpbGVzIGludG8gb25lCi0gT3BlbkFQSSBleHBvc3VyZSBlbmRwb2ludAotIFN3YWdnZXIgVUkgZXhwb3N1cmUgZW5kcG9pbnQKLSAqU3dhZ2dlciBVSSBEYXJrXExpZ2h0IHRoZW1lKgotIFJhcGlkb2MgZXhwb3N1cmUgZW5kcG9pbnQKCiMjIERlcGVuZGVuY3kgOnJvY2tldDoKCioqR3JhZGxlKioKYGBgZ3Jvb3Z5CmltcGxlbWVudGF0aW9uICJpby5nb29kZm9yZ29kOm1pY3JvbmF1dC1tYW5hZ2VtZW50LW9wZW5hcGk6Mi4wLjAiCmBgYAoKKipNYXZlbioqCmBgYHhtbAo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPmlvLmdvb2Rmb3Jnb2Q8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5taWNyb25hdXQtbWFuYWdlbWVudC1vcGVuYXBpPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+Mi4wLjA8L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgCgojIyBFeGFtcGxlCgpIZXJlIGlzIFtzaW1wbGUgTWljcm9uYXV0IEhUVFAgYXBwbGljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29kZm9yR29kL21pY3JvbmF1dC1qYXZhLWh0dHAtdGVtcGxhdGUpCndpdGggY29uZmlndXJlZCBsaWJyYXJ5IGFuZCBPcGVuQVBJLCB5b3UgcGxheSB3aXRoIGl0LgoKIyMgT3BlbkFQSSBHZW5lcmF0aW9uCgpMaWJyYXJ5IG9ubHkgZXhwb3NlcyAqT3BlbkFQSSosIGxpYnJhcnkgKipET0VTTidUKiogZ2VuZXJhdGUgaXQsIHRoaXMgaXMgeW91ciByZXNwb25zaWJpbGl0eSB0byBnZW5lcmF0ZSBPcGVuQVBJIGZpbGVzLgoKVGhlcmUgaXMgTWljcm9uYXV0IE9wZW5BUEkgZ2VuZXJhdG9yLCBbR3JhZGxlIGNvbmZpZ10oaHR0cHM6Ly9naXRodWIuY29tL0dvb2Rmb3JHb2QvbWljcm9uYXV0LWh0dHAtdGVtcGxhdGUvYmxvYi9tYXN0ZXIvYnVpbGQuZ3JhZGxlI0w0MCk6CgpgYGB5YW1sCmRlcGVuZGVuY2llcyB7CiAgICBhbm5vdGF0aW9uUHJvY2Vzc29yKCJpby5taWNyb25hdXQub3BlbmFwaTptaWNyb25hdXQtb3BlbmFwaSIpCiAgICBjb21waWxlT25seSgiaW8uc3dhZ2dlci5jb3JlLnYzOnN3YWdnZXItYW5ub3RhdGlvbnM6Mi4yLjE1IikKfQpgYGAKCk1vcmUgaW5mbyBhYm91dCBNaWNyb25hdXQgT3BlbkFQSSBnZW5lcmF0b3IgW2luIG9mZmljaWFsIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vbWljcm9uYXV0LXByb2plY3RzLmdpdGh1Yi5pby9taWNyb25hdXQtb3BlbmFwaS9sYXRlc3QvZ3VpZGUvaW5kZXguaHRtbCkuCgojIyBFbmRwb2ludHMKCkxpYnJhcnkgYXV0b21hdGljYWxseSAqc2NhbiogZm9yIE9wZW5BUEkgZmlsZXMgaW5zaWRlIEpBUiBpbiAqZGVmYXVsdC1kaXJlY3RvcnkqIGFuZCBleHBvc2UgdGhlbSB2aWEgT3BlbkFQSSBlbmRwb2ludC4KCkVuZHBvaW50czoKLSAqKi9vcGVuYXBpKiogLSBbT3BlbkFQSV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wKSBlbmRwb2ludC4KLSAqKi9zd2FnZ2VyLXVpKiogLSBbU3dhZ2dlciBVSV0oaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvLykgZW5kcG9pbnQuCi0gKiovcmFwaWRvYyoqIC0gW1JhcGlkb2NdKGh0dHBzOi8vbXJpbjkuZ2l0aHViLmlvL1JhcGlEb2MvZXhhbXBsZXMvZXhhbXBsZTIuaHRtbCkgZW5kcG9pbnQuCgpTd2FnZ2VyIFVJIGhhdmUgKipMaWdodFxEYXJrKiogdGhlbWUgc3dpdGNoISEhCgojIyBDb25maWd1cmF0aW9uCgpNb3N0IG9mIHRoZSBzZXR0aW5ncyBhcmUgKmNsb3VkLWZyaWVuZGx5KiBieSBkZWZhdWx0LgoKYGBgeWFtbApvcGVuYXBpOgogIHBhdGg6IC9vcGVuYXBpICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGF0aCBmb3IgT3BlbkFQSSBlbmRwb2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgLSAvb3BlbmFwaSkKICBlbmFibGVkOiB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuYWJsZSBPcGVuQVBJIGV4cG9zdXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IC0gdHJ1ZSkKICBtZXJnZTogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuYWJsZSBtZXJnaW5nIE9wZW5BUEkgZm91bmQgaW4gZGVmYXVsdC1kaXJlY3RvcnkgIChkZWZhdWx0IC0gZmFsc2UpCiAgZGVmYXVsdC1kaXJlY3Rvcnk6IE1FVEEtSU5GL3N3YWdnZXIgICAvLyBQYXRoIGluc2lkZSBKQVIgd2hlcmUgdG8gc2VhcmNoIE9wZW5BUEkgICAgICAgICAgICAoZGVmYXVsdCAtIE1FVEEtSU5GL3N3YWdnZXIpCiAgZXhjbHVkZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPcGVuQVBJIGZpbGVzIHRvIGV4Y2x1ZGUgZnJvbSBleHBvc3VyZSAgICAgICAgICAgICAocGF0aCBvciBmaWxlbmFtZSkKICAgIC0gb3BlbmFwaS0xLnltbCAgICAgICAgICAgICAgICAgICAgIC8vIFBhdGggb3IgZmlsZW5hbWUgKGRlZmF1bHQtZGlyZWN0b3J5KQogICAgLSBNRVRBLUlORi9zd2FnZ2VyL29wZW5hcGktMi55bWwgICAgLy8gUGF0aCBvciBmaWxlbmFtZSAoZGVmYXVsdC1kaXJlY3RvcnkpCiAgaW5jbHVkZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmNsdWRlIE9OTFkgc3BlY2lmaWVkIE9wZW5BUEkgZmlsZXMgZm9yIGV4cG9zdXJlICAocGF0aCBvbmx5KQogICAgLSBNRVRBLUlORi9zd2FnZ2VyL29wZW5hcGktMy55bWwgICAgLy8gUGF0aCB0byBmaWxlIGluc2lkZSBKQVIKICAgIC0gZXh0ZXJuYWwtc3dhZ2dlci9vcGVuYXBpLTQueW1sICAgIC8vIFBhdGggdG8gZmlsZSBpbnNpZGUgSkFSCiAgCiAgc3dhZ2dlci11aToKICAgIHBhdGg6IC9zd2FnZ2VyLXVpICAgICAgICAgICAgICAgICAgIC8vIFBhdGggZm9yIFN3YWdnZXItVUkgZW5kcG9pbnQgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IC0gL3N3YWdnZXItdWkpCiAgICBlbmFsYmVkOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAvLyBFbmFibGUgU3dhZ2dlci1VSSBleHBvc3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAtIGZhbHNlKQogIAogIHJhcGlkb2M6CiAgICBwYXRoOiAvcmFwaWRvYyAgICAgICAgICAgICAgICAgICAgICAvLyBQYXRoIGZvciBSYXBpZG9jIGVuZHBvaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAtIC9yYXBpZG9jKQogICAgZW5hbGJlZDogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgLy8gRW5hYmxlIFJhcGlkb2MgZXhwb3N1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgLSBmYWxzZSkgCmBgYAoKIyMjIE1lcmdlCgotICptZXJnZSogaXMgZGlzYWJsZWQgdGhlbiBhbnkgZmlyc3QgT3BlbkFQSSBmaWxlIHdpbGwgYmUgZXhwb3NlZCAoYWNjb3JkaW5nIHRvICpleGNsdWRlKiBhbmQgKmluY2x1ZGUqIGNvbmZpZ3VyYXRpb24pLgotICptZXJnZSogaXMgZW5hYmxlZCB0aGVuIGFsbCBzdWl0YWJsZSAoYWNjb3JkaW5nIHRvICpleGNsdWRlKiBhbmQgKmluY2x1ZGUqIGNvbmZpZ3VyYXRpb24pIE9wZW5BUEkgZmlsZXMgd2lsbCBiZSBtZXJnZWQgaW50byBvbmUgYW5kIGV4cG9zZWQuCgojIyMgU2VjdXJpdHkKCldoZW4geW91IGhhdmUgc2VjdXJpdHkgZW5hYmxlZCBhbmQgd2FudCB0byBwcm92aWRlICpub24tYXV0aCogYWNjZXNzIGZvciB5b3VyIE9wZW5BUEkvU3dhZ2dlci1VSS9SYXBvZGljIGVuZHBvaW50cyBoZXJlIGlzIGNvbmZpZ3VyYXRpb24gZm9yIHN1Y2ggY2FzZToKCmBgYHlhbWwKbWljcm9uYXV0OgogIHNlY3VyaXR5OgogICAgaW50ZXJjZXB0LXVybC1tYXA6CiAgICAgIC0KICAgICAgICBwYXR0ZXJuOiAvb3BlbmFwaXwvc3dhZ2dlci11aQogICAgICAgIGh0dHAtbWV0aG9kOiBHRVQKICAgICAgICBhY2Nlc3M6CiAgICAgICAgICAtIGlzQW5vbnltb3VzKCkKYGBgCgoKIyMgTWljcm9uYXV0IENvbXBhdGFiaWxpdHkKClN0YXJ0aW5nIGZyb20gdmVyc2lvbiAqMi4wLjAqIGxpYnJhcnkgc2hpcHMgZm9yICpNaWNyb25hdXQgNCogJiBKYXZhIDE3IGlzIHJlcXVpcmVkLgoKU3RhcnRpbmcgZnJvbSB2ZXJzaW9uICoxLjAuMCogbGlicmFyeSBzaGlwcyBmb3IgKk1pY3JvbmF1dCAzKiAmIEphdmEgMS44KyBpcyByZXF1aXJlZC4KCiMjIExpY2Vuc2UKClRoaXMgcHJvamVjdCBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgMi4wIC0gc2VlIHRoZSBbTElDRU5TRV0oTElDRU5TRSkgZmlsZSBmb3IgZGV0YWlscy4K readmeEtag: '"ef10a48b4778e7a3753774d234cfbe9e2e637607"' readmeLastModified: Thu, 10 Aug 2023 05:55:15 GMT repositoryId: 297153893 description: ⚙️ Micronaut cloud-friendly OpenAPI/Swagger-UI/Rapidoc management. created: '2020-09-20T20:02:27Z' updated: '2024-02-20T06:46:27Z' language: Java archived: false stars: 4 watchers: 1 forks: 1 owner: GoodforGod logo: https://avatars.githubusercontent.com/u/9437175?v=4 license: Apache-2.0 repoEtag: '"38b96658b56497790f7b3744c165a19d2b9ab2c5c864849e60c1cb46c30d140a"' repoLastModified: Tue, 20 Feb 2024 06:46:27 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: f9d87f105e5a35d535b3f7c801437b29 - source: openapi3 tags repository: https://github.com/rabestro/pig-latin-rest v3: true id: a28256e662d8b3f9b919787f4b645788 repositoryMetadata: base64Readme: >- WyFbUXVhbGl0eSBHYXRlIFN0YXR1c10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9bHYuaWQuamMlM0FwaWctbGF0aW4tcmVzdCZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9bHYuaWQuamMlM0FwaWctbGF0aW4tcmVzdCkKWyFbQVBJIGRvY3NdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQVBJLWRvY3MtaW5mb3JtYXRpb25hbCldKGh0dHBzOi8vcGlnbGF0aW4uYXp1cmV3ZWJzaXRlcy5uZXQvc3dhZ2dlci11aS9pbmRleC5odG1sKQpbIVtEZXBsb3llZCBvbiBBenVyZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9EZXBsb3llZCUyMG9uLUF6dXJlLWJsdWUpXShodHRwczovL3BpZ2xhdGluLmF6dXJld2Vic2l0ZXMubmV0KQoKIyBQaWcgTGF0aW4gVHJhbnNsYXRvcgoKVGhpcyBpcyBhIFJFU1QgYXBwbGljYXRpb24gdGhhdCB0cmFuc2xhdGVzIEVuZ2xpc2ggc2VudGVuY2VzIGludG8gUGlnIExhdGluLiBUaGUgcnVsZXMgYW5kIGluc3RydWN0aW9ucyBmb3IgdGhlIFBpZyBMYXRpbiB0cmFuc2xhdGlvbiB3ZXJlIG9idGFpbmVkIGZyb20gdGhlIFtQaWcgTGF0aW4gZXhlcmNpc2Ugb24gdGhlIEV4ZXJjaXNtIEphdmEgVHJhY2tdKGh0dHBzOi8vZXhlcmNpc20ub3JnL3RyYWNrcy9qYXZhL2V4ZXJjaXNlcy9waWctbGF0aW4pLgoKVGhlIGFwcGxpY2F0aW9uIHdhcyBjcmVhdGVkIHRvIGV4cGVyaW1lbnQgd2l0aCB0aGUgQVBJLWZpcnN0IGFwcHJvYWNoOiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIHdhcyBjcmVhdGVkIGZpcnN0LCB0aGVuIHRoZSBjb2RlIHdhcyBnZW5lcmF0ZWQgZm9yIFNwcmluZywgYW5kIGZpbmFsbHksIGN1c3RvbSBjb2RlIHdhcyBhZGRlZCB0aGF0IGRlcGVuZHMgb24gdGhlIGdlbmVyYXRlZCBjb2RlLgoKIyMgR2V0dGluZyBTdGFydGVkCgpCZWZvcmUgb3BlbmluZyB0aGUgY29kZSBmb3IgZWRpdGluZywgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBnZW5lcmF0ZSB0aGUgbmVjZXNzYXJ5IGNvZGU6CgpgYGBiYXNoCm12biBjbGVhbiBjb21waWxlCmBgYAoKVGhpcyBjb21tYW5kIGNsZWFucyB0aGUgcHJvamVjdCwgY29tcGlsZXMgdGhlIHNvdXJjZSBjb2RlLCBhbmQgZ2VuZXJhdGVzIHRoZSBjb2RlIHRoYXQgdGhlIGN1c3RvbSBjb2RlIGRlcGVuZHMgb24uIEFmdGVyIHJ1bm5pbmcgdGhpcyBjb21tYW5kLCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gb3BlbiB0aGUgY29kZSB3aXRob3V0IGdldHRpbmcgYW55IGVycm9yIG1lc3NhZ2VzLgoKIyMgUnVubmluZyB0aGUgQXBwbGljYXRpb24gTG9jYWxseQoKVG8gcnVuIHRoZSBhcHBsaWNhdGlvbiBsb2NhbGx5LCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgYmFzaAptdm4gY2xlYW4gY29tcGlsZSBzcHJpbmctYm9vdDpydW4KYGBgClRoaXMgd2lsbCBzdGFydCB0aGUgYXBwbGljYXRpb24gb24gbG9jYWxob3N0OjgwODAuIFlvdSBjYW4gYWNjZXNzIHRoZSBTd2FnZ2VyIFVJIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9zd2FnZ2VyLXVpLyBhbmQgdGhlIGFwcGxpY2F0aW9uIGVuZHBvaW50IGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9waWctbGF0aW4uCgojIyBEZXBsb3llZCBBcHBsaWNhdGlvbgoKVGhlIGFwcGxpY2F0aW9uIGlzIGRlcGxveWVkIG9uIEF6dXJlIGF0IGh0dHBzOi8vcGlnbGF0aW4uYXp1cmV3ZWJzaXRlcy5uZXQuCgpZb3UgY2FuIHVzZSB0aGUgc2ltcGxlIFt3ZWIgaW50ZXJmYWNlXShodHRwczovL3BpZ2xhdGluLmF6dXJld2Vic2l0ZXMubmV0KSBhbmQgdGhlIFtTd2FnZ2VyIFVJXShodHRwczovL3BpZ2xhdGluLmF6dXJld2Vic2l0ZXMubmV0L3N3YWdnZXItdWkvaW5kZXguaHRtbCkuCgpQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhcHBsaWNhdGlvbiBpcyBkZXBsb3llZCBvbiB0aGUgZnJlZS10aWVyIEYxIHBsYW4uIFRoaXMgbWVhbnMgdGhhdCBpZiB0aGUgYXBwbGljYXRpb24gaXMgaW4gc2xlZXAgbW9kZSwgaXQgbWF5IHRha2UgYWJvdXQgYSBtaW51dGUgZm9yIHRoZSBmaXJzdCBBUEkgY2FsbCB0byB3YWtlIGl0IHVwLiBTdWJzZXF1ZW50IEFQSSBjYWxscyBzaG91bGQgYmUgZmFzdGVyLgoKIyMgQVBJIFRlc3RpbmcKClRoZSBhcHBsaWNhdGlvbiBpbmNsdWRlcyBBUEkgdGVzdHMgd3JpdHRlbiB3aXRoIGZyYW1ld29ya3M6Ci0gW0thcmF0ZV0oaHR0cHM6Ly93d3cua2FyYXRlbGFicy5pby8pCi0gW0JydW5vXShodHRwczovL3d3dy51c2VicnVuby5jb20vKQotIFtIdXJsXShodHRwczovL2h1cmwuZGV2LykKLSBbaHR0cFlhY10oaHR0cHM6Ly9odHRweWFjLmdpdGh1Yi5pby8pCi0gW0pldEJyYWlucyBIVFRQIENsaWVudF0oaHR0cHM6Ly93d3cuamV0YnJhaW5zLmNvbS9oZWxwL2lkZWEvaHR0cC1jbGllbnQtaW4tcHJvZHVjdC1jb2RlLWVkaXRvci5odG1sKQotIFtBcGFjaGUgak1ldGVyXShodHRwczovL2ptZXRlci5hcGFjaGUub3JnLykKCiMjIyBCcnVubwoKVG8gcnVuIHRoZSBCcnVubyBBUEkgdGVzdHMsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgoKYGBgYmFzaApjZCBicnVuby10ZXN0Cm5wbSBydW4gdGVzdApgYGAKClN1Y2Nlc3NmdWwgdGVzdCByZXBvcnQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9yYWJlc3Ryby9waWctbGF0aW4tcmVzdC9ydW5zLzIwMzU3NjY5ODEyCgpGYWlsZWQgdGVzdCByZXBvcnQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9yYWJlc3Ryby9waWctbGF0aW4tcmVzdC9ydW5zLzIwNzA2MTY3MTQ0I3IwczEKCj4gWyFOT1RFXQo+IE5vdGUgLSBCcnVubydzIHNjcmlwdCBzdXBwb3J0IG1pZ2h0IGFsc28gYmUgdXNlZCBmb3IgbGlnaHQgdGVzdCBhdXRvbWF0aW9uIGJhc2VkIG9uIHByb2plY3Qgc3BlY2lmaWNzLgoKIyMjIEpldEJyYWlucyBIVFRQIENsaWVudAoKWyFbSFRUUCBDbGllbnQgLSBTZWNyZXQgV2VhcG9uIGZvciBXZWIgU2VydmljZSBUZXN0aW5nXShodHRwczovL2ltZy55b3V0dWJlLmNvbS92aS9WTVVhT1o2a3ZKMC9kZWZhdWx0LmpwZyldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9Vk1VYU9aNmt2SjApCgpbIVtIVFRQIENsaWVudCBDTEldKGh0dHBzOi8vaW1nLnlvdXR1YmUuY29tL3ZpL213aUhBdWtiV2pNL2RlZmF1bHQuanBnKV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1td2lIQXVrYldqTSkKCgpTdWNjZXNzZnVsIHRlc3QgcmVwb3J0OgpodHRwczovL2dpdGh1Yi5jb20vcmFiZXN0cm8vcGlnLWxhdGluLXJlc3QvcnVucy8yMDI0MDcxODM3MwoKRmFpbGVkIHRlc3QgcmVwb3J0OgpodHRwczovL2dpdGh1Yi5jb20vcmFiZXN0cm8vcGlnLWxhdGluLXJlc3QvcnVucy8yMDI0MTcyNDk4NwoKIyMjIGh0dHBZYWMgLSB0aGUgRnJlZSBhbHRlcm5hdGl2ZSBvZiBKZXRCcmFpbnMgSFRUUCBDbGllbnQKCmh0dHBzOi8vaHR0cHlhYy5naXRodWIuaW8vCgojIyMgS2FyYXRlCgpUbyBydW4gdGhlIEthcmF0ZSBBUEkgdGVzdHMsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGBiYXNoCm12biBjbGVhbiB0ZXN0IC1EdGVzdD1UZXN0UnVubmVyCmBgYAoKIyMjIFBlcmZvcm1hbmNlIFRlc3RpbmcgYnkgQXBhY2hlIGpNZXRlcgoKTG9hZCBUZXN0IFtEZXNjcmlwdGl2ZSBTdW1tYXJ5L0NvbmNsdXNpb25zXShodHRwczovL2EuYmxhemVtZXRlci5jb20vYXBwL2V4ZWN1dGl2ZS1zdW1tYXJ5L2luZGV4Lmh0bWw/bWFzdGVyX2lkPTcxNzU4MTk4JnNlbGVjdGVkVGltZU1lYXN1cmU9bWlsbGlzZWNvbmRzIy8pIGFuZCBbRnVsbCBSZXBvcnRdKGh0dHBzOi8vYS5ibGF6ZW1ldGVyLmNvbS9hcHAvP3B1YmxpYy10b2tlbj1OOEVBeWdSYWN6Z1ZyRzVkVmZ6YWlXMDhLRVR0RUNYdnBoM1g2QkRrWFY2Q29JaTJwTSMvYWNjb3VudHMvMTg4Njg0MC93b3Jrc3BhY2VzLzE5NTgxODYvcHJvamVjdHMvMjMxMTQzMC9tYXN0ZXJzLzcxNzU4MTk4L3N1bW1hcnkpCg== readmeEtag: '"4edb803c82dedf62bdbf89bf33c2706405e5b699"' readmeLastModified: Tue, 30 Jul 2024 05:49:45 GMT repositoryId: 735633231 description: A project for experimenting with OpenAPI specification and API testing. created: '2023-12-25T16:10:39Z' updated: '2024-07-30T05:49:49Z' language: Groovy archived: false stars: 4 watchers: 2 forks: 1 owner: rabestro logo: https://avatars.githubusercontent.com/u/52966251?v=4 license: MIT repoEtag: '"4dc23cc8277243edc292384dce82e24d65aa1aaa435b1bde2d1e8c31404165c1"' repoLastModified: Tue, 30 Jul 2024 05:49:49 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/go-lite/lite v3: true id: 573819accf54a9402aa0d27427ba0907 repositoryMetadata: base64Readme: >- PHAgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPgogIDxpbWcgc3JjPSIuL2xvZ28vbGl0ZS5wbmciIGhlaWdodD0iMjAwIiBhbHQ9IkxpdGUgTG9nbyIgLz4KPC9wPgoKWyFbR29dKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1saXRlL2xpdGUvYWN0aW9ucy93b3JrZmxvd3MvZ28ueW1sL2JhZGdlLnN2Zz9icmFuY2g9bWFpbildKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1saXRlL2xpdGUvYWN0aW9ucy93b3JrZmxvd3MvZ28ueW1sKQpbIVtHbyBSZWZlcmVuY2VdKGh0dHBzOi8vcGtnLmdvLmRldi9iYWRnZS9naXRodWIuY29tL2dvLWxpdGUvbGl0ZS5zdmcpXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9nby1saXRlL2xpdGUpClshW0dvIFJlcG9ydCBDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9nby1saXRlL2xpdGUpXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vZ28tbGl0ZS9saXRlKQpbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvZ28tbGl0ZS9saXRlL2dyYXBoL2JhZGdlLnN2Zz90b2tlbj01T0ZYVFFLSEVFKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2dvLWxpdGUvbGl0ZSkKCiMgTGl0ZTogQSBUeXBlZCBXcmFwcGVyIGZvciBHb0ZpYmVyCiMjIE92ZXJ2aWV3CgpUaGUgYGxpdGVgIHBhY2thZ2UgcHJvdmlkZXMgZnVuY3Rpb25hbGl0aWVzIGZvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgT3BlbkFQSSBkb2N1bWVudGF0aW9uIGZvciBIVFRQIG9wZXJhdGlvbnMgYmFzZWQgCm9uIHRoZSBzdHJ1Y3QgZGVmaW5pdGlvbnMgYW5kIHRoZWlyIHRhZ3Mgd2l0aGluIGEgR28gYXBwbGljYXRpb24uIFRoaXMgZG9jdW1lbnQgZXhwbGFpbnMgaG93IHRvIHVzZSB0aGUgYGxpdGVgIHBhY2thZ2UsIApzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIHVzYWdlIG9mIHRoZSBgbGl0ZWAgdGFnLgoKIyMgSW5zdGFsbGF0aW9uCgpUbyB1c2UgdGhlIGBsaXRlYCBwYWNrYWdlLCB5b3UgbmVlZCB0byBpbnN0YWxsIGl0IGZpcnN0LiBBc3N1bWluZyB5b3UgaGF2ZSBHbyBpbnN0YWxsZWQsIHlvdSBjYW4gYWRkIGl0IHRvIHlvdXIgcHJvamVjdCB3aXRoOgoKYGBgYmFzaApnbyBnZXQgZ2l0aHViLmNvbS9nby1saXRlL2xpdGUKYGBgCgojIyBVc2FnZQojIyMgU2ltcGxlIEV4YW1wbGUKSGVyZSBpcyBhIHNpbXBsZSBleGFtcGxlIG9mIGhvdyB0byB1c2UgTGl0ZToKCmBgYGdvCnBhY2thZ2UgbWFpbgoKaW1wb3J0ICgKCSJnaXRodWIuY29tL2dvLWxpdGUvbGl0ZSIKCSJsb2ciCikKCnR5cGUgUmVzcG9uc2Ugc3RydWN0IHsKCU1lc3NhZ2Ugc3RyaW5nIGBqc29uOiJtZXNzYWdlImAKfQoKZnVuYyBtYWluKCkgewoJYXBwIDo9IGxpdGUuTmV3KCkKCglsaXRlLkdldChhcHAsICIvIiwgZnVuYyhjICpsaXRlLkNvbnRleHROb1JlcXVlc3QpIChSZXNwb25zZSwgZXJyb3IpIHsKCQlyZXR1cm4gUmVzcG9uc2V7TWVzc2FnZTogIkhlbGxvLCB3b3JsZCEifSwgbmlsCgl9KQoKCWxvZy5GYXRhbChhcHAuTGlzdGVuKCI6MzAwMCIpKQp9CmBgYApUaGUgc3dhZ2dlciBzcGVjcyBpcyBhdmFpbGFibGUgYXQgYGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9zd2FnZ2VyL2luZGV4Lmh0bWxgIGlmIHBvcnQgYDMwMDBgIGlzIHVzZWQuCgojIyMgT3RoZXIgRXhhbXBsZQpgYGBnbwpwYWNrYWdlIG1haW4KCmltcG9ydCAoCgkiaW8iCgkibG9nIgoJIm1pbWUvbXVsdGlwYXJ0IgoJIm9zIgoKCSJnaXRodWIuY29tL2dvLWxpdGUvbGl0ZSIKCSJnaXRodWIuY29tL2dvLWxpdGUvbGl0ZS9lcnJvcnMiCgkiZ2l0aHViLmNvbS9nby1saXRlL2xpdGUvbWltZSIKCSJnaXRodWIuY29tL2dvZmliZXIvZmliZXIvdjIvbWlkZGxld2FyZS9sb2dnZXIiCgkiZ2l0aHViLmNvbS9nb2ZpYmVyL2ZpYmVyL3YyL21pZGRsZXdhcmUvcmVjb3ZlciIKKQoKdHlwZSBJbWFnZVJlc3BvbnNlID0gW11ieXRlCgp0eXBlIEltYWdlUGF5bG9hZCBzdHJ1Y3QgewoJQm9keSBJbWFnZSBgbGl0ZToicmVxPWJvZHksbXVsdGlwYXJ0L2Zvcm0tZGF0YSJgCn0KCnR5cGUgSW1hZ2Ugc3RydWN0IHsKCUluZm8gIGluZm8gICAgICAgICAgICAgICAgICBgZm9ybToiaW5mbyJgCglJbWFnZSAqbXVsdGlwYXJ0LkZpbGVIZWFkZXIgYGZvcm06ImltYWdlImAKfQoKdHlwZSBpbmZvIHN0cnVjdCB7CglGaWxlTmFtZSBzdHJpbmcgYGZvcm06ImZpbGVuYW1lImAKfQoKZnVuYyBtYWluKCkgewoJYXBwIDo9IGxpdGUuTmV3KCkKCglsaXRlLlVzZShhcHAsIGxvZ2dlci5OZXcoKSkKCWxpdGUuVXNlKGFwcCwgcmVjb3Zlci5OZXcoKSkKCglsaXRlLlBvc3QoYXBwLCAiL3YxL2ltYWdlL2FuYWx5c2UiLCBmdW5jKGMgKmxpdGUuQ29udGV4dFdpdGhSZXF1ZXN0W0ltYWdlUGF5bG9hZF0pIChJbWFnZVJlc3BvbnNlLCBlcnJvcikgewoJCXJlcSwgZXJyIDo9IGMuUmVxdWVzdHMoKQoJCWlmIGVyciAhPSBuaWwgewoJCQlyZXR1cm4gSW1hZ2VSZXNwb25zZXt9LCBlcnJvcnMuTmV3QmFkUmVxdWVzdEVycm9yKGVyci5FcnJvcigpKQoJCX0KCgkJaW1hZ2UgOj0gcmVxLkJvZHkuSW1hZ2UKCgkJaWYgZXJyID0gYy5TYXZlRmlsZShpbWFnZSwgIi4vZXhhbXBsZXMvZmlsZS91cGxvYWRzLyIraW1hZ2UuRmlsZW5hbWUpOyBlcnIgIT0gbmlsIHsKCQkJcmV0dXJuIEltYWdlUmVzcG9uc2V7fSwgZXJyCgkJfQoKCQkvLyBnZXQgdGhlIGZpbGUKCQlmLCBlcnIgOj0gb3MuT3BlbigiLi9leGFtcGxlcy9maWxlL3VwbG9hZHMvIiArIGltYWdlLkZpbGVuYW1lKQoJCWlmIGVyciAhPSBuaWwgewoJCQlyZXR1cm4gSW1hZ2VSZXNwb25zZXt9LCBlcnIKCQl9CgoJCS8vIER1bW15IGRhdGEgZm9yIHRoZSByZXNwb25zZQoJCXJlc3BvbnNlLCBlcnIgOj0gaW8uUmVhZEFsbChmKQoJCWlmIGVyciAhPSBuaWwgewoJCQlsb2cuRmF0YWxmKCJmYWlsZWQgcmVhZGluZyBmaWxlOiAlcyIsIGVycikKCQl9CgoJCWMuU2V0Q29udGVudFR5cGUobWltZS5JbWFnZVBuZykKCgkJcmV0dXJuIHJlc3BvbnNlLCBuaWwKCX0pLlNldFJlc3BvbnNlQ29udGVudFR5cGUoImltYWdlL3BuZyIpCglsaXRlLlBvc3QoYXBwLCAiL3YxL3BkZiIsIGZ1bmMoYyAqbGl0ZS5Db250ZXh0V2l0aFJlcXVlc3RbW11ieXRlXSkgKGFueSwgZXJyb3IpIHsKCQlyZXEsIGVyciA6PSBjLlJlcXVlc3RzKCkKCQlpZiBlcnIgIT0gbmlsIHsKCQkJcmV0dXJuIG5pbCwgZXJyb3JzLk5ld0JhZFJlcXVlc3RFcnJvcihlcnIuRXJyb3IoKSkKCQl9CgoJCWxvZy5QcmludGxuKHN0cmluZyhyZXEpKQoKCQlyZXR1cm4gbmlsLCBuaWwKCX0pCgoJYXBwLkFkZFNlcnZlcigiaHR0cDovL2xvY2FsaG9zdDo5MDAwIiwgImV4YW1wbGUgc2VydmVyIikKCglpZiBlcnIgOj0gYXBwLlJ1bigpOyBlcnIgIT0gbmlsIHsKCQlyZXR1cm4KCX0KfQpgYGAKCiMjIyBTdXBwb3J0ZWQgVGFncwoKVGhlIGBsaXRlYCBwYWNrYWdlIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgdGFncyB3aXRoaW4gc3RydWN0IGRlZmluaXRpb25zIHRvIG1hcCBmaWVsZHMgdG8gZGlmZmVyZW50IHBhcnRzIG9mIGFuIEhUVFAgcmVxdWVzdCBvciByZXNwb25zZToKCnwgVGFnICAgICB8IFNldERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEV4YW1wbGUgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IGBwYXJhbXNgfCBNYXBzIHRvIGEgVVJMIHBhdGggcGFyYW1ldGVyICAgICAgICAgICAgICAgfCBgbGl0ZToicGFyYW1zPWlkImAgICAgICAgICAgIHwKfCBgcXVlcnlgIHwgTWFwcyB0byBhIFVSTCBxdWVyeSBwYXJhbWV0ZXIgICAgICAgICAgICAgIHwgYGxpdGU6InF1ZXJ5PW5hbWUiYCAgICAgICAgfAp8IGBoZWFkZXJgfCBNYXBzIHRvIGFuIEhUVFAgaGVhZGVyICAgICAgICAgICAgICAgICAgICAgfCBgbGl0ZToiaGVhZGVyPUF1dGgiYCAgICAgICB8CnwgYGNvb2tpZWB8IE1hcHMgdG8gYW4gSFRUUCBjb29raWUgICAgICAgICAgICAgICAgICAgICB8IGBsaXRlOiJjb29raWU9c2Vzc2lvbl9pZCJgIHwKfCBgcmVxYCAgIHwgTWFwcyB0byB0aGUgcmVxdWVzdCBib2R5ICAgICAgICAgICAgICAgICAgIHwgYGxpdGU6InJlcT1ib2R5ImAgICAgICAgICAgfAp8IGBlbnVtc2AgfCBNYXBzIHRvIGEgc3RyaW5nIGVudW1zICAgICAgICAgICAgICAgICAgICAgfCBgZW51bXM6Im1hbGUsZmVtYWxlImAgfCAgICAKCgojIyBDb250cmlidXRpbmcKQ29udHJpYnV0aW9ucyBhcmUgd2VsY29tZSEgUGxlYXNlIGZlZWwgZnJlZSB0byBzdWJtaXQgYSBwdWxsIHJlcXVlc3Qgb3Igb3BlbiBhbiBpc3N1ZS4KCiMjIFNldExpY2Vuc2UKTGl0ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIFNldExpY2Vuc2UuIFNlZSBbTElDRU5TRV0oTElDRU5TRSkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCltdOiAjIChFTkQpCg== readmeEtag: '"dea69b1225e1d35572537bb0bd1606d5e2f775db"' readmeLastModified: Mon, 05 Aug 2024 18:05:29 GMT repositoryId: 808226704 description: Lite - fiber wrapper OpenAPI 3 spec auto generate created: '2024-05-30T16:25:58Z' updated: '2025-10-07T08:09:48Z' language: Go archived: false stars: 4 watchers: 1 forks: 0 owner: go-lite logo: https://avatars.githubusercontent.com/u/173594949?v=4 license: MIT repoEtag: '"0f39bffc5e8e8b62806a387554d16dcab5b9bfb55fca31403a518d35f7705590"' repoLastModified: Tue, 07 Oct 2025 08:09:48 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/keisuke6065/openapi-combine v3: true repositoryMetadata: base64Readme: >- b3BlbmFwaS1jb21iaW5lCj09PT09PT09PT09PT09PQoKCiFbdGVzdCBDSV0oaHR0cHM6Ly9naXRodWIuY29tL2tlaXN1a2U2MDY1L29wZW5hcGktY29tYmluZS93b3JrZmxvd3MvdGVzdCUyMENJL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKQpbIVtvY2xpZl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jbGktb2NsaWYtYnJpZ2h0Z3JlZW4uc3ZnKV0oaHR0cHM6Ly9vY2xpZi5pbykKWyFbVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9vcGVuYXBpLWNvbWJpbmUuc3ZnKV0oaHR0cHM6Ly9ucG1qcy5vcmcvcGFja2FnZS9vcGVuYXBpLWNvbWJpbmUpClshW0Rvd25sb2Fkcy93ZWVrXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kdy9vcGVuYXBpLWNvbWJpbmUuc3ZnKV0oaHR0cHM6Ly9ucG1qcy5vcmcvcGFja2FnZS9vcGVuYXBpLWNvbWJpbmUpClshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2wvb3BlbmFwaS1jb21iaW5lLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9rZWlzdWtlNjA2NS9vcGVuYXBpLWNvbWJpbmUvYmxvYi9tYXN0ZXIvcGFja2FnZS5qc29uKQpbIVtEb2NrZXIgSHViIHBhY2thZ2VdKGh0dHBzOi8vZG9ja2VyaS5jby9pbWFnZS9rZWlzdWtlNjA2NS9vcGVuYXBpLWNvbWJpbmUpXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3Iva2Vpc3VrZTYwNjUvb3BlbmFwaS1jb21iaW5lKQoKPCEtLSB0b2MgLS0+CiogW0ZlYXR1cmVzXSgjZmVhdHVyZXMpCiogW1VzYWdlXSgjdXNhZ2UpCiogW0NvbW1hbmRzXSgjY29tbWFuZHMpCjwhLS0gdG9jc3RvcCAtLT4KIyBGZWF0dXJlcwpTdXBwb3J0cyBgJHJlZmAgU3ludGF4IGFuZCBgJHJlZnNgIEV4dGVuZGVkIHN5bnRheCAgCmAkcmVmYCBzdXBwb3J0cyBiYXNlZCBvbiBbcmZjMzk4Nl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYpICAgIApUaGUgZXh0ZW5kZWQgc3ludGF4IG9mIGAkcmVmc2AgaXMgYSBzeW50YXggdGhhdCBjYW4gaGF2ZSBgJHJlZmAgYXMgYW4gYXJyYXkgIAoKIyMgRXh0ZW5kZWQgc3ludGF4IHVzYWdlIGV4YW1wbGVzCkRlZmluZSBtdWx0aXBsZSBgJHJlZmAgcmVmZXJlbmNlcyB1c2luZyBgJHJlZnNgIGFzIHNob3duIGJlbG93CihDdXJyZW50bHkgb25seSBMb2NhbCBSZWZlcmVuY2Ugc3VwcG9ydCkKCmBgYHlhbWwKb3BlbmFwaTogIjMuMC4wIgppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IGV4YW1wbGVzCnNlcnZlcnM6CiAgLSB1cmw6IGh0dHA6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YxCnBhdGhzOgogIC9wZXRzL3twZXRJZH06CiAgICAkcmVmOiAuL3BhdGhzL3BldHMvaWQvaW5kZXgueWFtbApjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICAkcmVmczoKICAgICAgLSAuL2NvbXBvbmVudHMvc2NoZW1hcy9wZXQueWFtbAogICAgICAtIC4vY29tcG9uZW50cy9zY2hlbWFzL3BldHMueWFtbAogICAgRXJyb3I6CiAgICAgICRyZWY6IC4vY29tcG9uZW50cy9zY2hlbWFzL2Vycm9yLnlhbWwKYGBgCnNlZSBjb252ZXJ0IGV4YW1wbGUgW2V4YW1wbGUvb3BlbmFwaS55YW1sXShleGFtcGxlL29wZW5hcGkueWFtbCkgLT4gW2V4YW1wbGUvb3BlbmFwaS55YW1sXShleGFtcGxlL3Jlc3VsdC55YW1sKQoKCiMgVXNhZ2UKPCEtLSB1c2FnZSAtLT4KYGBgc2gtc2Vzc2lvbgokIG5wbSBpbnN0YWxsIC1nIG9wZW5hcGktY29tYmluZQokIG9wZW5hcGktY29tYmluZSBDT01NQU5ECnJ1bm5pbmcgY29tbWFuZC4uLgokIG9wZW5hcGktY29tYmluZSAoLXZ8LS12ZXJzaW9ufHZlcnNpb24pCm9wZW5hcGktY29tYmluZS8wLjMuMSBsaW51eC14NjQgbm9kZS12MTYuMTUuMAokIG9wZW5hcGktY29tYmluZSAtLWhlbHAgW0NPTU1BTkRdClVTQUdFCiAgJCBvcGVuYXBpLWNvbWJpbmUgQ09NTUFORAouLi4KYGBgCjwhLS0gdXNhZ2VzdG9wIC0tPgojIENvbW1hbmRzCjwhLS0gY29tbWFuZHMgLS0+CiogW2BvcGVuYXBpLWNvbWJpbmUgaGVscCBbQ09NTUFORF1gXSgjb3BlbmFwaS1jb21iaW5lLWhlbHAtY29tbWFuZCkKKiBbYG9wZW5hcGktY29tYmluZSBtZXJnZWBdKCNvcGVuYXBpLWNvbWJpbmUtbWVyZ2UpCgojIyBgb3BlbmFwaS1jb21iaW5lIGhlbHAgW0NPTU1BTkRdYAoKRGlzcGxheSBoZWxwIGZvciBvcGVuYXBpLWNvbWJpbmUuCgpgYGAKVVNBR0UKICAkIG9wZW5hcGktY29tYmluZSBoZWxwIFtDT01NQU5EXQoKQVJHVU1FTlRTCiAgQ09NTUFORCAgQ29tbWFuZCB0byBzaG93IGhlbHAgZm9yLgoKT1BUSU9OUwogIC1uLCAtLW5lc3RlZC1jb21tYW5kcyAgSW5jbHVkZSBhbGwgbmVzdGVkIGNvbW1hbmRzIGluIHRoZSBvdXRwdXQuCmBgYAoKX1NlZSBjb2RlOiBbQG9jbGlmL3BsdWdpbi1oZWxwXShodHRwczovL2dpdGh1Yi5jb20vb2NsaWYvcGx1Z2luLWhlbHAvYmxvYi92NS4xLjEyL3NyYy9jb21tYW5kcy9oZWxwLnRzKV8KCiMjIGBvcGVuYXBpLWNvbWJpbmUgbWVyZ2VgCgpkZXNjcmliZSB0aGUgY29tbWFuZCBoZXJlCgpgYGAKVVNBR0UKICAkIG9wZW5hcGktY29tYmluZSBtZXJnZQoKT1BUSU9OUwogIC1pLCAtLWlucHV0PWlucHV0ICAgICAocmVxdWlyZWQpIGlucHV0IHRhcmdldCB5YW1sIGZpbGUKICAtbywgLS1vdXRwdXQ9b3V0cHV0ICAgW2RlZmF1bHQ6IC4vb3V0cHV0L29wZW5hcGkueWFtbF0gb3V0cHV0IHRhcmdldCB5YW1sIGZpbGUKICAtdCwgLS10eXBlPXlhbWx8anNvbiAgW2RlZmF1bHQ6IHlhbWxdIG91dHB1dCBmb3JtYXQgeWFtbCBvciBqc29uCgpFWEFNUExFCiAgJCBvcGVuYXBpLWNvbWJpbmUgbWVyZ2UgLWkgLi9leGFtcGxlL29wZW5hcGkueWFtbCAtbyAuL2J1aWxkL29wZW5hcGkueWFtbApgYGAKPCEtLSBjb21tYW5kc3N0b3AgLS0+Cg== readmeEtag: '"25fa7a46e17d3466f564b6c137a1207301c0c096"' readmeLastModified: Thu, 09 Jun 2022 03:09:18 GMT repositoryId: 290097194 description: openapi combine tools Extended syntax `$refs` created: '2020-08-25T02:57:22Z' updated: '2022-12-15T07:21:32Z' language: TypeScript archived: false stars: 4 watchers: 2 forks: 0 owner: keisuke6065 logo: https://avatars.githubusercontent.com/u/6197330?v=4 license: MIT repoEtag: '"ff227a7bbf862a2db31167906635e1572604f480ba2d5168aeee579143378f81"' repoLastModified: Thu, 15 Dec 2022 07:21:32 GMT foundInMaster: true category: Parsers id: 54556e5124d461a37adbe50e3129138b - source: openapi3 tags repository: https://github.com/eliezio/simple-pki v3: true repositoryMetadata: base64Readme: >- aWZuZGVmOjplbnYtZ2l0aHViW10KOmRvY3R5cGU6IGJvb2sKOmljb25zOiBmb250Cjpzb3VyY2UtaGlnaGxpZ2h0ZXI6IGhpZ2hsaWdodGpzCjp0b2M6IGxlZnQKOnRvY2xldmVsczogMwo6c2VjdGxpbmtzOgoKKysrKwo8ZGl2IHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTttaW4td2lkdGg6OTYwcHgiPgo8YSBocmVmPSIgaHR0cHM6Ly9naXRodWIuY29tL2VsaWV6aW8vc2ltcGxlLXBraSI+PGltZyB3aWR0aD0iMTQ5IiBoZWlnaHQ9IjE0OSIgc3JjPSJodHRwczovL2dpdGh1Yi5ibG9nL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA4LzEyL2ZvcmttZV9yaWdodF9kYXJrYmx1ZV8xMjE2MjEucG5nP3Jlc2l6ZT0xNDklMkMxNDkiIGNsYXNzPSJhdHRhY2htZW50LWZ1bGwgc2l6ZS1mdWxsIiBhbHQ9IkZvcmsgbWUgb24gR2l0SHViIiBkYXRhLXJlY2FsYy1kaW1zPSIxIiBzdHlsZT0iIHBvc2l0aW9uOiBhYnNvbHV0ZTtyaWdodDowO3RvcDowIj48L2E+CjwvZGl2PgorKysrCmVuZGlmOjpbXQoKPSBTaW1wbGUgUEtJCkVsacOpemlvIE9saXZlaXJhIDxlbGllemlvQHBtLm1lPgp2e3Byb2plY3QtdmVyc2lvbn0KCmltYWdlOmh0dHBzOi8vdHJhdmlzLWNpLm9yZy9lbGllemlvL3NpbXBsZS1wa2kuc3ZnP2JyYW5jaD1tYXN0ZXJbQnVpbGQsIGxpbms9Imh0dHBzOi8vdHJhdmlzLWNpLm9yZy9lbGllemlvL3NpbXBsZS1wa2kiXQppbWFnZTpodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1lbGllemlvX3NpbXBsZS1wa2kmbWV0cmljPWFsZXJ0X3N0YXR1c1tTb25hclF1YmUgUXVhbGl0eSBHYXRlLCBsaW5rPSJodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWVsaWV6aW9fc2ltcGxlLXBraSJdCmltYWdlOmh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWVsaWV6aW9fc2ltcGxlLXBraSZtZXRyaWM9Y292ZXJhZ2VbQ292ZXJhZ2UsIGxpbms9Imh0dHBzOi8vc29uYXJjbG91ZC5pby9wcm9qZWN0L2FjdGl2aXR5P2N1c3RvbV9tZXRyaWNzPWNvdmVyYWdlJmdyYXBoPWN1c3RvbSZpZD1lbGllemlvX3NpbXBsZS1wa2kiXQppbWFnZTpodHRwczovL2ltZy5zaGllbGRzLmlvL2VuZHBvaW50LnN2Zz91cmw9aHR0cHM6Ly9lbGllemlvLmdpdGh1Yi5pby9zaW1wbGUtcGtpL3BpdGVzdC9zaGllbGRzLmpzb25bUGl0ZXN0LCBsaW5rPSJodHRwczovL2VsaWV6aW8uZ2l0aHViLmlvL3NpbXBsZS1wa2kvcGl0ZXN0LyJdCgo9PSBPdmVydmlldwoKVGhpcyBhcHBsaWNhdGlvbiBwcm92aWRlcyB0aGUgYmFzaWMgc2VydmljZXMgdHlwaWNhbGx5IGZvdW5kIG9uIGFueSBQS0k6CgotIEdlbmVyYXRlcyBYLjUwOSBjZXJ0aWZpY2F0ZXM7Ci0gQWxsb3cgcHJlZW1wdGl2ZSByZXZvY2F0aW9uIG9mIGlzc3VlZCBjZXJ0aWZpY2F0ZXM7Ci0gR2VuZXJhdGVzIGFuIHVwZGF0ZWQgQ1JMIChDZXJ0aWZpY2F0ZSBSZXZvY2F0aW9uIExpc3QpOwotIFN1cHBseSB0aGUgQ0EgY2VydGlmaWNhdGUuCgpUaGUgUEtJIGltcGxlbWVudGVkIGlzIGNvbXByaXNlZCBvZiBhIHNpbmdsZSBDQSB3aXRoIF9ub18gaW50ZXJtZWRpYXRlIENBcy4KCj09IENvZGUgQ292ZXJhZ2UKCmltYWdlOmh0dHBzOi8vY29kZWNvdi5pby9naC9lbGllemlvL3NpbXBsZS1wa2kvYnJhbmNoL21hc3Rlci9ncmFwaHMvdHJlZS5zdmdbbGluaz0iaHR0cHM6Ly9jb2RlY292LmlvL2doL2VsaWV6aW8vc2ltcGxlLXBraS9icmFuY2gvbWFzdGVyL2dyYXBocy90cmVlLnN2ZyJdCgo9PSBCdWlsZGluZyB0aGUgYXBwbGljYXRpb24KClRvIGJ1aWxkIHRoZSBhcHBsaWNhdGlvbiBmcm9tIHRoZSBzb3VyY2VzIGp1c3QgcnVuOgoKYGBgCi4vZ3JhZGxldyBidWlsZApgYGAKCj09IERvY2tlciBJbWFnZQoKWW91IGNhbiBhbHNvIGJ1aWxkIGEgRG9ja2VyIGltYWdlIGZyb20gdGhlIHNvdXJjZSBjb2RlIHVzaW5nIHRoZQpbSmliIHBsdWdpbl0oaHR0cHM6Ly9naXRodWIuY29tL0dvb2dsZUNvbnRhaW5lclRvb2xzL2ppYi90cmVlL21hc3Rlci9qaWItZ3JhZGxlLXBsdWdpbiNidWlsZC15b3VyLWltYWdlKSBsaWtlLCBmb3IgZXhhbXBsZToKCmBgYAouL2dyYWRsZXcgamliRG9ja2VyQnVpbGQKYGBgCgo9PSBJbnN0YWxsYXRpb24KClRoZSBmaXJzdCBzdGVwIGlzIGNyZWF0ZSB0aGUga2V5c3RvcmUgd2l0aCB0aGUgQ0EgZW50aXR5LgpBcyBhbiBleGFtcGxlLCB5b3UgY2FuIHJ1biB0aGUgYHNyYy9tYWluL3NjcmlwdHMvY3JlYXRlLWNhLnNoYCB0aGF0IHdpbGwgY3JlYXRlIGEgYC4vZGF0YS9jYS5wMTJgIGtleXN0b3JlIHdpdGggZGVmYXVsdCBwYXNzd29yZHMgc2V0IHRvIGBjaGFuZ2VpdGAuCgo9PSBSdW5uaW5nIHdpdGggJ2RlYnVnJyBwcm9maWxlIGFjdGl2YXRlZAoKSWYgdXNpbmcgR3JhZGxlLCBydW46CgpgYGAKLi9ncmFkbGV3IGJvb3RSdW4gLS1hcmdzPSctLXNwcmluZy5wcm9maWxlcy5hY3RpdmU9ZGVidWcnCmBgYAoKPT0gTGljZW5zZQoKQ29weXJpZ2h0IChDKSAyMDE5LTIwMjIgTm9yZGl4IEZvdW5kYXRpb24uCg== readmeEtag: '"640141e2f03f828adbd519c342f339e3e55076fb"' readmeLastModified: Tue, 02 Jan 2024 17:59:53 GMT repositoryId: 193696687 description: A Simple PKI created: '2019-06-25T11:42:04Z' updated: '2024-11-28T18:10:53Z' language: Kotlin archived: false stars: 4 watchers: 0 forks: 1 owner: eliezio logo: https://avatars.githubusercontent.com/u/1125375?v=4 license: NOASSERTION repoEtag: '"23cb926311e4b7d0dcc4bb437d90c5bdb9f6fca5c43f033cf8b67fa1349a200a"' repoLastModified: Thu, 28 Nov 2024 18:10:53 GMT foundInMaster: true category: Server id: 001f83813b19f87d61e5fffe2bc21055 - source: - openapi3 tags - openapi31 tags repository: https://github.com/swaggerexpert/apidom-validate v3: true v3_1: true id: 6d163bb2b4f6635f7cd80f2e92e89b13 repositoryMetadata: base64Readme: >- IyBBcGlET00gVmFsaWRhdG9yIEdpdEh1YiBBY3Rpb24KClRoaXMgR2l0SHViIEFjdGlvbiB2YWxpZGF0ZXMgW09wZW5BUEkgMi4wXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21haW4vdmVyc2lvbnMvMi4wLm1kKSwgW09wZW5BUEkgMy54LnldKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvI29wZW5hcGktc3BlY2lmaWNhdGlvbikgCmFuZCBbQXN5bmNBUEkgMi54XShodHRwczovL3d3dy5hc3luY2FwaS5jb20vZG9jcy9yZWZlcmVuY2Uvc3BlY2lmaWNhdGlvbi92Mi54KSBkZWZpbml0aW9uIGZpbGUgdXNpbmcgW0FwaURPTSBMYW5ndWFnZSBTZXJ2aWNlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvYXBpZG9tKS4KVmFsaWRhdGlvbiBydWxlcyBhcmUgZXhhY3RseSB0aGUgc2FtZSBhcyB0aGUgb25lIHRoYXQgaHR0cHM6Ly9lZGl0b3ItbmV4dC5zd2FnZ2VyLmlvLyB1c2VzLgoKKipTdXBwb3J0ZWQgc3BlY2lmaWNhdGlvbnM6KioKCi0gW09wZW5BUEkgMi4wXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21haW4vdmVyc2lvbnMvMi4wLm1kKQotIFtPcGVuQVBJIDMuMC4wXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjAuaHRtbCkKLSBbT3BlbkFQSSAzLjAuMV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4xLmh0bWwpCi0gW09wZW5BUEkgMy4wLjJdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMi5odG1sKQotIFtPcGVuQVBJIDMuMC4zXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCkKLSBbT3BlbkFQSSAzLjAuNF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwpCi0gW09wZW5BUEkgMy4xLjBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMC5odG1sKQotIFtBc3luY0FQSSAyLjAuMF0oaHR0cHM6Ly92Mi5hc3luY2FwaS5jb20vZG9jcy9yZWZlcmVuY2Uvc3BlY2lmaWNhdGlvbi92Mi4wLjApCi0gW0FzeW5jQVBJIDIuMS4wXShodHRwczovL3YyLmFzeW5jYXBpLmNvbS9kb2NzL3JlZmVyZW5jZS9zcGVjaWZpY2F0aW9uL3YyLjEuMCkKLSBbQXN5bmNBUEkgMi4yLjBdKGh0dHBzOi8vdjIuYXN5bmNhcGkuY29tL2RvY3MvcmVmZXJlbmNlL3NwZWNpZmljYXRpb24vdjIuMi4wKQotIFtBc3luY0FQSSAyLjMuMF0oaHR0cHM6Ly92Mi5hc3luY2FwaS5jb20vZG9jcy9yZWZlcmVuY2Uvc3BlY2lmaWNhdGlvbi92Mi4zLjApCi0gW0FzeW5jQVBJIDIuNC4wXShodHRwczovL3YyLmFzeW5jYXBpLmNvbS9kb2NzL3JlZmVyZW5jZS9zcGVjaWZpY2F0aW9uL3YyLjQuMCkKLSBbQXN5bmNBUEkgMi41LjBdKGh0dHBzOi8vdjIuYXN5bmNhcGkuY29tL2RvY3MvcmVmZXJlbmNlL3NwZWNpZmljYXRpb24vdjIuNS4wKQotIFtBc3luY0FQSSAyLjYuMF0oaHR0cHM6Ly92Mi5hc3luY2FwaS5jb20vZG9jcy9yZWZlcmVuY2Uvc3BlY2lmaWNhdGlvbi92Mi42LjApCgojIyBJbnB1dHMKCiMjIGBkZWZpbml0aW9uLWZpbGVgCgoqKlJlcXVpcmVkKiogUGF0aCB0byBkZWZpbml0aW9uIGZpbGUuCgojIyBgZmFpbHMtb25gCgpTZXZlcml0eSBsZXZlbCBhdCB3aGljaCB0byBmYWlsIGFjdGlvbi4gRGVmYXVsdCBgMWAsIGlmIG5vdCBzcGVjaWZpZWQuCi0gYDFgOiBGYWlscyBpZiAqKmVycm9yKiogbWVzc2FnZXMgZXhpc3QgaW4gdmFsaWRhdGlvbiBvdXRwdXQKLSBgMmA6IEZhaWxzIGlmICoqZXJyb3IqKiBvciAqKndhcm5pbmcqKiBtZXNzYWdlcyBleGlzdCBpbiB2YWxpZGF0aW9uIG91dHB1dAotIGAzYDogRmFpbHMgaWYgKiplcnJvcioqLCAqKndhcm5pbmcqKiBvciAqKmluZm9ybWF0aW9uKiogbWVzc2FnZXMgZXhpc3QgaW4gdmFsaWRhdGlvbiBvdXRwdXQKLSBgNGA6IEZhaWxzIGlmICoqZXJyb3IqKiwgKip3YXJuaW5nKiosICoqaW5mb3JtYXRpb24qKiBvciAqKmhpbnQqKiBtZXNzYWdlcyBleGlzdCBpbiB2YWxpZGF0aW9uIG91dHB1dAoKIyMgRXhhbXBsZSB1c2FnZQoKYGBgeWFtbAp1c2VzOiBzd2FnZ2VyZXhwZXJ0L2FwaWRvbS12YWxpZGF0ZUB2MQp3aXRoOgogIGRlZmluaXRpb24tZmlsZTogJ3BhdGgvdG8vbXkvb3BlbmFwaS55YW1sJwogIGZhaWxzLW9uOiAyCmBgYAo= readmeEtag: '"9fe345231f7e9fc9097fdffc296179137b8a0575"' readmeLastModified: Tue, 31 Dec 2024 07:40:07 GMT repositoryId: 616639890 description: >- This GitHub Action validates OpenAPI 2.0, OpenAPI 3.x.y and AsyncAPI 2.x definition file using ApiDOM Language Service. created: '2023-03-20T19:34:02Z' updated: '2026-02-03T09:41:49Z' language: JavaScript archived: false stars: 10 watchers: 2 forks: 4 owner: swaggerexpert logo: https://avatars.githubusercontent.com/u/172408630?v=4 license: Apache-2.0 repoEtag: '"e0021031f418c885c58e33f91a8eec5ec51bc6e60134f841c1b3f0ce334bc85e"' repoLastModified: Tue, 03 Feb 2026 09:41:49 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/futuristicoder/nomad.oas v3: true repositoryMetadata: base64Readme: >- IyBOb21hZC5PQVMKClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9kZXYuYXp1cmUuY29tL0Z1dHVyaXN0aUNvZGVyL05vbWFkLk9BUy9fYXBpcy9idWlsZC9zdGF0dXMvRnV0dXJpc3RpQ29kZXIuTm9tYWQuT0FTP2JyYW5jaE5hbWU9bWFzdGVyKV0oaHR0cHM6Ly9kZXYuYXp1cmUuY29tL0Z1dHVyaXN0aUNvZGVyL05vbWFkLk9BUy9fYnVpbGQvbGF0ZXN0P2RlZmluaXRpb25JZD0xMiZicmFuY2hOYW1lPW1hc3RlcikKCi0tLQoKSGFzaGlDb3JwIE5vbWFkIG9wZW4gYXBpIHNwZWNpZmljYXRpb24KCiMjIENsaWVudCBsaWJyYXJpZXMgKGdlbmVyYXRlZCkKCiMjIyAuTmV0CgotIE5vbWFkLkNsaWVudCBbIVtOdUdldCBTdGF0dXNdKGh0dHBzOi8vYmFkZ2VuLm5ldC9udWdldC92L25vbWFkLmNsaWVudCldKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9Ob21hZC5DbGllbnQpCgpjbGllbnQgbGlicmFyeSBpbiBvdGhlciBsYW5ndWFnZXMgY2FuIGJlIGdlbmVyYXRlZAoKIyMgZW5kcG9pbnRzCgp8IEFwaSAgICAgICAgICAgICAgIHwgSW1wbGVtZW50IHwgQ29tbWVudCAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tfAp8IEFDTCBQb2xpY2llcyAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfAp8IEFDTCBUb2tlbnMgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfAp8IEFnZW50ICAgICAgICAgICAgIHwg4pyTICAgICAgICAgfCAgICAgICAgICAgICAgICB8CnwgQWxsb2NhdGlvbnMgICAgICAgfCDinJMgICAgICAgICB8ICAgICAgICAgICAgICAgIHwKfCBDbGllbnQgICAgICAgICAgICB8IOKckyAgICAgICAgIHwgICAgICAgICAgICAgICAgfAp8IERlcGxveW1lbnRzICAgICAgIHwg4pyTICAgICAgICAgfCAgICAgICAgICAgICAgICB8CnwgRXZhbHVhdGlvbnMgICAgICAgfCDinJMgICAgICAgICB8ICAgICAgICAgICAgICAgIHwKfCBKb2JzICAgICAgICAgICAgICB8IOKckyAgICAgICAgIHwgICAgICAgICAgICAgICAgfAp8IE5hbWVzcGFjZXMgICAgICAgIHwgICAgICAgICAgIHwgZW50ZXJwcmlzZSBhcGkgfAp8IE5vZGVzICAgICAgICAgICAgIHwg4pyTICAgICAgICAgfCAgICAgICAgICAgICAgICB8CnwgTWV0cmljcyAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8CnwgT3BlcmF0b3IgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8CnwgUGx1Z2lucyAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8CnwgUXVvdGFzICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8CnwgUmVnaW9ucyAgICAgICAgICAgfCDinJMgICAgICAgICB8ICAgICAgICAgICAgICAgIHwKfCBTY2FsaW5nIFBvbGljaWVzICB8ICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwKfCBTZWFyY2ggICAgICAgICAgICB8IOKckyAgICAgICAgIHwgICAgICAgICAgICAgICAgfAp8IFNlbnRpbmVsIFBvbGljaWVzIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfAp8IFN0YXR1cyAgICAgICAgICAgIHwg4pyTICAgICAgICAgfCAgICAgICAgICAgICAgICB8CnwgU3lzdGVtICAgICAgICAgICAgfCDinJMgICAgICAgICB8ICAgICAgICAgICAgICAgIHwKfCBWYWxpZGF0ZSAgICAgICAgICB8IOKckyAgICAgICAgIHwgICAgICAgICAgICAgICAgfAp8IFZvbHVtZXMgICAgICAgICAgIHwg4pyTICAgICAgICAgfCAgICAgICAgICAgICAgICB8Cg== readmeEtag: '"d52ddab7c48aaeb4702014b5c3fb3f6bdc34693c"' readmeLastModified: Thu, 19 Nov 2020 16:55:36 GMT repositoryId: 249948663 description: Nomad OpenApi Specification created: '2020-03-25T10:27:46Z' updated: '2023-09-08T18:05:01Z' language: C# archived: false stars: 4 watchers: 0 forks: 3 owner: FuturistiCoder logo: https://avatars.githubusercontent.com/u/46922135?v=4 license: MIT repoEtag: '"ffdb4d18d7c00bef9c695c2c2f6e6ddab61ad49fda95098e4bd3c007b581ae64"' repoLastModified: Fri, 08 Sep 2023 18:05:01 GMT foundInMaster: true category: Description Validators id: a08f0fbe1cd600070fd4afe4ee90dbb0 - source: openapi3 tags repository: https://github.com/deiteris/api-contractor v3: true repositoryMetadata: base64Readme: >- IyBWaXN1YWwgU3R1ZGlvIENvZGUgZXh0ZW5zaW9uIGZvciBSRVNUIEFQSXMgZGVzaWduaW5nIGFuZCB2YWxpZGF0aW9uCgpTZWUgYGV4dGVuc2lvbi9SRUFETUUubWRgIGZvciBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIGV4dGVuc2lvbi4KClNlZSBgYXBpLWNvbnNvbGUvUkVBRE1FLm1kYCBmb3IgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBBUEkgY29uc29sZSB0aGF0IGlzIHVzZWQgZm9yIHByZXZpZXdpbmcuCg== readmeEtag: '"6eed0bda5116e956daadfd9391c322d2667dced3"' readmeLastModified: Sat, 04 Nov 2023 14:11:20 GMT repositoryId: 359785542 description: >- A Visual Studio Code extension for working with the API contracts in OpenAPI and RAML formats. created: '2021-04-20T11:09:09Z' updated: '2024-05-23T08:53:02Z' language: TypeScript archived: false stars: 4 watchers: 1 forks: 0 owner: deiteris logo: https://avatars.githubusercontent.com/u/6103913?v=4 license: MIT repoEtag: '"a60cee86b9583ea8509b962868c3b24752077fd9fd6a51ede346bb817c9964df"' repoLastModified: Thu, 23 May 2024 08:53:02 GMT foundInMaster: true category: - Testing - Server Implementations id: 64a794fc3fcfdaebd6e5e5d1374ee8ac - source: openapi3 tags repository: https://github.com/xseman/superfaktura.openapi v3: true id: 13977644151f7e71ecab9beace0017dc repositoryMetadata: base64Readme: >- IyBTdXBlcmZha3R1cmEgT3BlbkFQSQoKIVtBbHQgdGV4dF0oZG9jcy9zd2FnZ2VyLXVpLnBuZykKClRoaXMgc3BlY2lmaWNhdGlvbiBoYXMgYmVlbiBtYW51YWxseSBjcmVhdGVkIHVzaW5nIGF2YWlsYWJsZSBbZG9jdW1lbnRhdGlvbl0sCmJ1dCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlcmUgYXJlIGVycm9ycyBvciBtaXNzaW5nIG5ldyBmZWF0dXJlcyBhcyB0aGUgQVBJCmV2b2x2ZXMgb3ZlciB0aW1lLiBJJ20gbWFraW5nIGFuIGVmZm9ydCB0byBrZWVwIGl0IHVwIHRvIGRhdGUuCgpbZG9jdW1lbnRhdGlvbl06IGh0dHBzOi8vZ2l0aHViLmNvbS9zdXBlcmZha3R1cmEvZG9jcwoKSSB3b3VsZCBncmVhdGx5IGFwcHJlY2lhdGUgYW55IGNvbnRyaWJ1dGlvbnMgb3IgdXBkYXRlcyB0byB0aGUgT3BlbkFQSSBmaWxlIHRvCmFkZHJlc3MgYW55IGlzc3Vlcy4KCiMgQXV0aAoKU2VlIFtkb2N1bWVudGF0aW9uXVthdXRoLWRvY3VtZW50YXRpb25dIHdpdGggZXhhbXBsZXMuCgpbYXV0aC1kb2N1bWVudGF0aW9uXTogaHR0cHM6Ly9naXRodWIuY29tL3N1cGVyZmFrdHVyYS9kb2NzL2Jsb2IvbWFzdGVyL2ludHJvLm1kI2F1dGhlbnRpY2F0aW9uCg== readmeEtag: '"5846138d0c1b8a7e15d146b5fe0bbe6f2cfe2c46"' readmeLastModified: Sat, 10 Aug 2024 09:07:44 GMT repositoryId: 736693265 description: SuperFaktura OpenAPI created: '2023-12-28T15:49:58Z' updated: '2025-09-04T09:00:53Z' language: null archived: false stars: 5 watchers: 1 forks: 0 owner: xseman logo: https://avatars.githubusercontent.com/u/9111485?v=4 license: Apache-2.0 repoEtag: '"bdc7d56dc7080696e7432608736cd11f46850eef3d5ec995319b6af25d9ba7ca"' repoLastModified: Thu, 04 Sep 2025 09:00:53 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/inkognitro/oas-tszod-gen v3: true id: 10f3430580c5b091115eb11b9ca1f843 repositoryMetadata: base64Readme: >- WyFbY29udGludW91cyBpbnRlZ3JhdGlvbiBwaXBlbGluZV0oaHR0cHM6Ly9naXRodWIuY29tL2lua29nbml0cm8vb2FzLXRzem9kLWdlbi9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2lua29nbml0cm8vb2FzLXRzem9kLWdlbi9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBY2kpCiFbdGVzdCBjb3ZlcmFnZV0oaHR0cHM6Ly9naXRodWIuY29tL2lua29nbml0cm8vb2FzLXRzem9kLWdlbi9ibG9iL21haW4vYmFkZ2VzL2plc3QvY292ZXJhZ2UtdG90YWwuc3ZnKQoKIyBvYXMtdHN6b2QtZ2VuCkEgY29kZSBnZW5lcmF0b3IgdG8gY29udmVydCBbT3BlbkFwaSB2ZXJzaW9uIDMgKE9BUzMpXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIHNwZWNpZmljYXRpb25zIGludG8gZW5kcG9pbnQgY2FsbGVyIGZ1bmN0aW9ucyBmb3IgW1RTXShodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvKSBhbmQgW1pvZF0oaHR0cHM6Ly96b2QuZGV2KS4KClshW0RlbW8gVmlkZW9dKGh0dHBzOi8vZ2l0aHViLmNvbS9pbmtvZ25pdHJvL29hcy10c3pvZC1nZW4vYmxvYi9tYWluL3lvdXR1YmUtZGVtby10aHVtYi5wbmcpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTRBbzNHcHVGbUZFKSAgClRoZSBjb2RlIG9mIHRoZSBkZW1vIHZpZGVvIGlzIGF2YWlsYWJsZSBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2lua29nbml0cm8vb2FzLXRzem9kLWdlbi1kZW1vKS4KCiMjIFdoeSB5ZXQgYW5vdGhlciBsaWJyYXJ5IGZvciB0aGlzIHRhc2s/CkJlZm9yZSB5b3UgY29uc2lkZXIgdXNpbmcgdGhpcyBsaWJyYXJ5LCBJIHN1Z2dlc3QgaGF2aW5nIGEgbG9vayBhdCB0aGUgY29tYmluYXRpb24gb2YgW1pvZGlvc10oaHR0cHM6Ly93d3cuem9kaW9zLm9yZy8pCmFuZCBbb3BlbmFwaS16b2QtY2xpZW50XShodHRwczovL2dpdGh1Yi5jb20vYXN0YWhtZXIvb3BlbmFwaS16b2QtY2xpZW50KSBvciBbT3BlbkFwaSBUeXBlc2NyaXB0XShodHRwczovL29wZW5hcGktdHMuZGV2LykgKGlmIHlvdSBhcmUgT0sgd2l0aCBqdXN0IFR5cGVzY3JpcHQpLiBUaGlzIGNvZGUgZ2VuZXJhdG9yIHNlcnZlcyBhcyBhIGNvbWJpbmVkIGFsdGVybmF0aXZlIGZvciB0aGVzZSB0aHJlZSBsaWJyYXJpZXMuCkhvd2V2ZXIsIEkgY29kZWQgbXkgb3duIHNvbHV0aW9uIGJlY2F1c2UgSSB3YW50ZWQgdG86CgotIGhhdmUgZnVsbCBvd25lcnNoaXAgb2YgbXkgcHJvZHVjdGlvbiBjb2RlIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgZGVwZW5kZW5jeQotIGhhdmUgZ2VuZXJhdGVkIGVuZHBvaW50IGNhbGxlciBmdW5jdGlvbnMgcmVwcmVzZW50aW5nIHRoZSByZWFsaXR5IHdoaWNoIGlzIGdpdmVuIGZyb20gc29tZSBPQVMzIHNwZWNzCi0gYmUgYWJsZSB0byBlYXNpbHkgdGVzdCB0aGVzZSBlbmRwb2ludCBjYWxsZXIgZnVuY3Rpb25zIHdpdGggZXhjaGFuZ2VhYmxlIGBSZXF1ZXN0SGFuZGxlcmAgaW1wbGVtZW50YXRpb25zCi0gaGF2ZSBhIHVuaWZvcm0gYWRhcHRlciBBUEkgd2hpY2ggcGFzc2VzIGFuIGVuZHBvaW50IHNjaGVtYSBpbnNpZGUgdGhlIHJlcXVlc3QgYWRhcHRlciBvYmplY3QKLSBoYXZlIHNlcGFyYXRlZCBmdW5jdGlvbnMgYW5kIHR5cGUgZGVmaW5pdGlvbnMgZm9yIGVhY2ggZW5kcG9pbnQgaW4gYSBzaW5nbGUgZmlsZSwgbG9jYXRlZCBpbiBpdHMgY29udGV4dCBmb2xkZXIKLSBiZSBhYmxlIHRvIGdvIHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zIHVuZGVyIHRoZSBob29kIHRoYW4gW0F4aW9zXShodHRwczovL2F4aW9zLWh0dHAuY29tL2RvY3MvaW50cm8pCi0gaGF2ZSB0aGUgb3B0LWluIHBvc3NpYmlsaXR5IGZvciBnZW5lcmF0ZWQgW1pvZF0oaHR0cHM6Ly96b2QuZGV2KSBzY2hlbWFzIHdpdGggaW5jbHVkZWQgcnVudGltZSB2YWxpZGF0aW9uIG9mIHJlcXVlc3RzCmFuZCByZXNwb25zZXMKLSBoYXZlIGEgdW5pZm9ybSB3YXkgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gW0F4aW9zJyBpbnRlcmNlcHRvcnNdKGh0dHBzOi8vYXhpb3MtaHR0cC5jb20vZG9jcy9pbnRlcmNlcHRvcnMpCnRocm91Z2ggZGlmZmVyZW50IGBSZXF1ZXN0SGFuZGxlcmAgaW1wbGVtZW50YXRpb25zCgo+IDpidWxiOiBbQXhpb3NdKGh0dHBzOi8vYXhpb3MtaHR0cC5jb20vZG9jcy9pbnRybykgaXMgZ3JlYXQuIEl0IG9mZmVycyBhIGxvdCwgYW5kIGl0IHdvcmtzIHdpdGgKPiBbWE1MSHR0cFJlcXVlc3RdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdF9BUEkpIHVuZGVyIHRoZSBob29kIGJ5IGRlZmF1bHQuCj4gQnV0IG9uZSBtaWdodCBoYXZlIFBXQXMgYW5kIFtzZXJ2aWNlIHdvcmtlcnNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TZXJ2aWNlX1dvcmtlcl9BUEkpCj4gaW4gbWluZCB3aGVyZSBYTUxIdHRwUmVxdWVzdCBpcyBvdXQgb2Ygc2NvcGUuIFRoZXJlIGFyZSBsb3RzIG9mIGFydGljbGVzIG91dCB0aGVyZSB3aGljaCBkaXNjdXNzIHRoaW5ncyBsaWtlCj4gW0F4aW9zIFZzIEZldGNoXShodHRwczovL2Jsb2cubG9ncm9ja2V0LmNvbS9heGlvcy12cy1mZXRjaC1iZXN0LWh0dHAtcmVxdWVzdHMvKS4KPiBFdmVuIHRob3VnaCwgc2luY2UgdmVyc2lvbiAxLjcuMCBBeGlvcyBkb2VzIG5hdGl2ZWx5IHN1cHBvcnQgYQo+IFtmZXRjaCBhZGFwdGVyXShodHRwczovL2dpdGh1Yi5jb20vYXhpb3MvYXhpb3M/dGFiPXJlYWRtZS1vdi1maWxlIy1mZXRjaC1hZGFwdGVyKS4KCiMjIEdlbmVyYXRvcjogU2V0dXAgYW5kIHVzYWdlCkZpcnN0LCBpbnN0YWxsIHRoZSBwYWNrYWdlIGFzIGEgZGV2IGRlcGVuZGVuY3k6CmBgYApucG0gaW5zdGFsbCBvYXMtdHN6b2QtZ2VuIC0tc2F2ZS1kZXYKYGBgCgpJZiB5b3UgYWxzbyB3YW50IHRvIHVzZSBbWm9kXShodHRwczovL3pvZC5kZXYpIChzZWUgYHdpdGhab2Q6IHRydWVgIGNvbmZpZ3VyYXRpb24gYmVsb3cpIGFuZCBpdCBpcyBub3QgeWV0IGluc3RhbGxlZAphcyBhIGRlcGVuZGVuY3kgb2YgeW91ciBwcm9qZWN0OgpgYGAKbnBtIGluc3RhbGwgem9kIC0tc2F2ZQpgYGAKCk5vdyBjcmVhdGUgYSBuZXcgZmlsZSBgYXBpLnNwZWNzLmpzb25gIGluIHRoZSByb290IGZvbGRlciBvZiB5b3VyIHByb2plY3QgYW5kIHBhc3RlIHlvdXIgT0FTMyBzcGVjaWZpY2F0aW9uIGludG8gaXQuClRoZSBuZXh0IHN0ZXAgaXMgdG8gY3JlYXRlIGEgZmlsZSBgYXBpLmdlbmVyYXRlLmpzYCAtIGFsc28gaW4gdGhlIHJvb3QgZm9sZGVyIG9mIHlvdXIgcHJvamVjdCAtIGFuZCBwYXN0ZSB0aGUgZm9sbG93aW5nCmNvZGUgaW50byBpdDoKCmBgYHR5cGVzY3JpcHQKLy8gYXBpLmdlbmVyYXRlLmpzCgpjb25zdCB7Z2VuZXJhdGVPYXMzVG9Uc30gPSByZXF1aXJlKCdvYXMtdHN6b2QtZ2VuJyk7CmNvbnN0IG9hczNTcGVjaWZpY2F0aW9uID0gcmVxdWlyZSgnLi9hcGkuc3BlY3MuanNvbicpOwoKZ2VuZXJhdGVPYXMzVG9Ucyh7CiAgLy8gcmVxdWlyZWQ6CiAgZ2V0U3BlY2lmaWNhdGlvbjogKCkgPT4gewogICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewogICAgICByZXNvbHZlKG9hczNTcGVjaWZpY2F0aW9uKTsKICAgIH0pOwogIH0sCiAgCiAgLy8gcmVxdWlyZWQ6CiAgb3V0cHV0Rm9sZGVyUGF0aDogJy4vZ2VuZXJhdGVkLWFwaScsCgogIC8vIG9wdGlvbmFsOgogIC8vIFRoZSBsaXN0IG9mIHNlcGFyYXRvcnMgd2hpY2ggc2hvdWxkIGJlIGNvbnNpZGVyZWQgZm9yIHRoZSBvdXRwdXRQYXRoIGNyZWF0aW9uIGZyb20gYQogIC8vIGNvbXBvbmVudCBuYW1lLiBUaGUgb3V0cHV0UGF0aCBpdHNlbGYgaXMgYW4gYXJyYXkgb2Ygc3RyaW5ncyAoc2VlIGV4cGxhbmF0aW9uIGluIG9uZQogIC8vIG9mIHRoZSBzZWN0aW9ucyBiZWxvdykuIEJ5IGRlZmF1bHQsIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpcyB0YWtlbjoKICAvLyBbJy4nLCAnLycsICdcXCddCiAgY29tcG9uZW50T3V0cHV0UGF0aFNlcGFyYXRvcnM6IFsnLicsICcvJywgJ1xcJywgJ18nXSwKICAKICAvLyBvcHRpb25hbDoKICAvLyBTYW1lIGFzICJjb21wb25lbnRPdXRwdXRQYXRoU2VwYXJhdG9ycyIgYnV0IGluIHRoZSBjb250ZXh0IG9mIGRlZmluZWQgIm9wZXJhdGlvbklkIiBwcm9wZXJ0aWVzCiAgLy8gb2YgYW4gZW5kcG9pbnQKICBvcGVyYXRpb25JZE91dHB1dFBhdGhTZXBhcmF0b3JzOiBbJy4nLCAnLycsICdcXCcsICdfJ10sCiAgCiAgLy8gb3B0aW9uYWw6CiAgLy8gVGhlIGZvbGRlciBzdHJ1Y3R1cmUgaXMgZ2VuZXJhdGVkIGZyb20gcmVzdWx0aW5nIG91dHB1dFBhdGhzIG9mIHRoZSBnaXZlbiBvcGVyYXRpb25JZHMuCiAgLy8gSWYgc29tZSBhZGRpdGlvbmFsIHN1YiBmb2xkZXJzIGFyZSByZXF1aXJlZCB0aGUgY29uZmlndXJhdGlvbiBjYW4gYmUgZG9uZSBhcyBmb2xsb3c6CiAgcHJlZGVmaW5lZEZvbGRlck91dHB1dFBhdGhzOiBbCiAgICAvLyBGb3Igb3V0cHV0cyBoYXZpbmcgYW4gYE91dHB1dFBhdGhgIHN0YXJ0aW5nIHdpdGggWydjb3JlJ106CiAgICAvLyBWYXJpYWJsZXMgYW5kIHR5cGUgZGVmaW5pdGlvbnMgYXJlIHB1dCBpbiB0aGUgYHtvdXRwdXRGb2xkZXJQYXRofS9jb3JlYCBmb2xkZXIKICAgIFsnY29yZSddLAogICAgCiAgICAvLyBGb3Igb3V0cHV0cyBoYXZpbmcgYW4gYE91dHB1dFBhdGhgIHN0YXJ0aW5nIHdpdGggWyd1dGlsJywgJ2ZvbyddOgogICAgLy8gVmFyaWFibGVzIGFuZCB0eXBlIGRlZmluaXRpb25zIGFyZSBwdXQgaW4gdGhlIGB7b3V0cHV0Rm9sZGVyUGF0aH0vdXRpbC9mb29gIGZvbGRlcgogICAgWyd1dGlsJywgJ2ZvbyddLAogIF0sCiAgCiAgLy8gcmVxdWlyZWQ6CiAgbG9nZ2VyOiB7CiAgICBsb2c6IChjb250ZW50KSA9PiB7CiAgICAgIGNvbnNvbGUubG9nKGNvbnRlbnQpOwogICAgfSwKICB9LAogIAogIC8vIG9wdGlvbmFsOgogIC8vIEJ5IGRlZmF1bHQgb3IgaW4gY2FzZSBvZiBgZmFsc2VgLCBvbmx5IFR5cGVTY3JpcHQgdHlwZXMgYXJlIGdlbmVyYXRlZCB3aXRob3V0IFpvZCBzY2hlbWFzCiAgd2l0aFpvZDogdHJ1ZSwKICAKICAvLyBvcHRpb25hbDoKICAvLyBUaGUgZm9sbG93aW5nIHdpbGwgYWRkIG9ubHkgdGhlIGRlZmluZWQgdGVtcGxhdGVzLgogIC8vIEFuIGVtcHR5IGFycmF5IHJlc3VsdHMgaW4gbm8gYWRkZWQgdGVtcGxhdGVzLgogIC8vIEJ5IGRlZmF1bHQsIGFsbCBhdmFpbGFibGUgdGVtcGxhdGVzIHdpbGwgYmUgYWRkZWQgdG8geW91ciBjb2RlYmFzZS4KICB0ZW1wbGF0ZXM6IFsKICAgICdBeGlvc1JlcXVlc3RIYW5kbGVyJywKICAgICdBdXRoUmVxdWVzdEhhbmRsZXInLAogICAgJ1Jlc3BvbnNlRXh0cmFjdG9ycycsCiAgICAnWm9kVmFsaWRhdGlvblJlcXVlc3RIYW5kbGVyJwogIF0sCgogIC8vIG9wdGlvbmFsOiBNb2RpZnkgb3V0cHV0IHBhdGhzIHdoaWNoIHJlc3VsdCBmcm9tIGFuIG9wZXJhdGlvbgogIGNyZWF0ZU9wZXJhdGlvbk91dHB1dFBhdGg6IChfcGF0aCwgX21ldGhvZCwgX2VuZHBvaW50U2NoZW1hLCBkZWZhdWx0T3V0cHV0UGF0aCkgPT4gewogICAgcmV0dXJuIGRlZmF1bHRPdXRwdXRQYXRoWzBdID09PSAndjEnID8gZGVmYXVsdE91dHB1dFBhdGguc2xpY2UoMSkgOiBkZWZhdWx0T3V0cHV0UGF0aDsKICB9LAogIAogIC8vIG9wdGlvbmFsOiBXaGV0aGVyIGEgc3BlY2lmaWMgb3BlcmF0aW9uIChlbmRwb2ludCByZXNwZWN0aXZlbHkpIHNob3VsZCBiZSBhZGRlZAogIHNob3VsZEFkZE9wZXJhdGlvbjogKF9wYXRoLCBfbWV0aG9kLCBfZW5kcG9pbnRTY2hlbWEpID0+IHsKICAgIHJldHVybiB0cnVlOyAvLyBhZGp1c3QgYWNjb3JkaW5nIHRvIHlvdXIgbmVlZHMKICB9LAogIAogIC8vIG9wdGlvbmFsOiBXaGV0aGVyIGEgc3BlY2lmaWMgY29udGVudCB0eXBlIHJlcXVlc3QgYm9keSBzaG91bGQgYmUgYWRkZWQKICBzaG91bGRBZGRSZXF1ZXN0Qm9keUNvbnRlbnQ6IChjb250ZW50VHlwZSwgYm9keUJ5Q29udGVudFR5cGVNYXApID0+IHsKICAgIGNvbnN0IGxvd2VyQ2FzZUNvbnRlbnRUeXBlID0gY29udGVudFR5cGUudG9Mb3dlckNhc2UoKTsKICAgIGlmIChsb3dlckNhc2VDb250ZW50VHlwZS5tYXRjaCgvYXBwbGljYXRpb25cL1teK10qWytdPyhqc29uKTs/LiovKSkgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGNvbnN0IGhhc0pzb25BbHRlcm5hdGl2ZSA9IE9iamVjdC5rZXlzKGJvZHlCeUNvbnRlbnRUeXBlTWFwKS5maW5kKGN0ID0+CiAgICAgIGN0LnRvTG93ZXJDYXNlKCkubWF0Y2goL2FwcGxpY2F0aW9uXC9bXitdKlsrXT8oanNvbik7Py4qLykKICAgICk7CiAgICBpZiAoaGFzSnNvbkFsdGVybmF0aXZlKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiAhIWxvd2VyQ2FzZUNvbnRlbnRUeXBlLm1hdGNoKC9tdWx0aXBhcnRcL2Zvcm0tZGF0YTs/LiovKTsKICB9LAogIAogIC8vIG9wdGlvbmFsOiBXaGV0aGVyIGEgc3BlY2lmaWMgY29udGVudCB0eXBlIHJlc3BvbnNlIGJvZHkgc2hvdWxkIGJlIGFkZGVkCiAgc2hvdWxkQWRkUmVzcG9uc2VCb2R5Q29udGVudDogKGNvbnRlbnRUeXBlLCBfYm9keUJ5Q29udGVudFR5cGVNYXApID0+IHsKICAgIHJldHVybiBbJ211bHRpcGFydC9mb3JtLWRhdGEnLCAnYXBwbGljYXRpb24vanNvbiddLmluY2x1ZGVzKGNvbnRlbnRUeXBlKTsKICB9LAp9KTsKYGBgCgpGaW5hbGx5IHJ1biB0aGUgc2NyaXB0IHRvIGdlbmVyYXRlIHRoZSBvdXRwdXQgZmlsZXMgaW50byB0aGUgYC4vZ2VuZXJhdGVkLWFwaWAgZm9sZGVyOgpgYGAKbm9kZSBhcGkuZ2VuZXJhdGUuanMKYGBgCgoqKkltcG9ydGFudDoqKgpJdCBpcyByZWNvbW1lbmRlZCB0byByZWdlbmVyYXRlIHRoZSBvdXRwdXQgaW4geW91ciBDSSBwaXBlbGluZS4gT24gZXZlcnkgY2FsbCBvZiB0aGUgYGdlbmVyYXRlT2FzM1RvVHNgIGZ1bmN0aW9uLAp0aGUgb3V0cHV0IGZvbGRlciBpcyBnb2luZyB0byBiZSBkZWxldGVkIGFuZCB0aGUgY29kZSB3aWxsIGJlIGdlbmVyYXRlZCBmcm9tIHNjcmF0Y2guCgo+IDpidWxiOiBOb2RlIHZlcnNpb24gYD49IDE4LjAuMGAgaXMgcmVxdWlyZWQgdG8gc3VwcG9ydAo+IHRoZSBbQmxvYl0oaHR0cHM6Ly9ub2RlanMub3JnL2RvY3MvdjIwLjE3LjAvYXBpL2dsb2JhbHMuaHRtbCNjbGFzcy1ibG9iKSBjbGFzcwo+IGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgZ2VuZXJhdGVkIGNvZGUgb24gdGhlIGJhY2tlbmQgc2lkZS4KCiMjIFdoYXQgaXMgYW4gT3V0cHV0UGF0aD8KVmFyaWFibGVzLCBmdW5jdGlvbnMgYW5kIHR5cGUgZGVmaW5pdGlvbnMgd2hpY2ggYXJlIGdlbmVyYXRlZCBieSB0aGlzIGdlbmVyYXRvciBjb21lIGluIGZvcm0gb2YgYW4gYG91dHB1dGAuCkEgYG91dHB1dGAgaXMgYW4gb2JqZWN0IHdoaWNoIGhhcyBhIGBwYXRoYCBwcm9wZXJ0eSBpbiBpdC4gVGhpcyBwcm9wZXJ0eSBpcyBvZiB0eXBlIGBPdXRwdXRQYXRoYCAoPSBgc3RyaW5nW11gKS4KVGhlIGZpcnN0IGZldyBlbnRyaWVzIG9mIHRoZSBgT3V0cHV0UGF0aGAgYXJyYXkgZG8gcmVwcmVzZW50IHRoZSBmaWxlcGF0aCBpbiB3aGljaCB0aGUgdmFyaWFibGVzIGFuZCB0eXBlIGRlZmluaXRpb25zIGFyZSBnb2luZyB0byBiZSBwdXQgaW4uClRoZSByZW1haW5pbmcgZW50cmllcyBvZiB0aGlzIGFycmF5IGFyZSB1c2VkIGZvciB0aGUgdHlwZSBvciB0aGUgdmFyaWFibGUgbmFtZS4KCkxldCdzIGNvbnNpZGVyIHNvbWUgZXhhbXBsZSBlbmRwb2ludHMgd2hpY2ggbWlnaHQgYmUgZGVmaW5lZCBpbiB5b3VyIE9BUzMgc3BlY2lmaWNhdGlvbiB1bmRlciB0aGUgYHBhdGhzYCBwcm9wZXJ0eToKCjEuIFRoZSBnZW5lcmF0ZWQgY29kZSBmb3IgdGhlIGVuZHBvaW50IHdpdGggdGhlIG9wZXJhdGlvbklkIGBhdXRoLmF1dGhlbnRpY2F0ZWAgd2lsbCBiZSBwdXQgaW50byBgLi9hdXRoL2F1dGhlbnRpY2F0ZS50c2AKMi4gVGhlIGdlbmVyYXRlZCBjb2RlIGZvciB0aGUgZW5kcG9pbnQgd2l0aCB0aGUgb3BlcmF0aW9uSWQgYHVzZXJNYW5hZ2VtZW50LmdldFVzZXJzYCB3aWxsIGJlIHB1dCBpbnRvIGAuL3VzZXItbWFuYWdlbWVudC9nZXRVc2Vycy50c2AKMy4gVGhlIGdlbmVyYXRlZCBjb2RlIGZvciB0aGUgZW5kcG9pbnQgd2l0aCB0aGUgb3BlcmF0aW9uSWQgYHVzZXJNYW5hZ2VtZW50LmFkbWluLmdldFVzZXJzYCB3aWxsIGJlIHB1dCBpbnRvIGAuL3VzZXItbWFuYWdlbWVudC9hZG1pbi9nZXRVc2Vycy50c2AKClRoZSBzYW1lIHByaW5jaXBsZXMgdGhhdCBhcHBseSB0byBkb3RzIGAuYCBkbyBhbHNvIGFwcGx5IHRvIHNsYXNoZXMgYC9gIGFuZCBiYWNrc2xhc2hlcyBgXGAgYnkgZGVmYXVsdC4KVGhpcyBjYW4gYmUgY29uZmlndXJlZCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIHByb3AgYG9wZXJhdGlvbklkT3V0cHV0UGF0aFNlcGFyYXRvcnNgIGZvciBvcGVyYXRpb25JZHMgYW5kCndpdGggYGNvbXBvbmVudE91dHB1dFBhdGhTZXBhcmF0b3JzYCBmb3IgY29tcG9uZW50IG5hbWVzIChzZWUgYWJvdmUpLgoKQWZ0ZXIgZ2VuZXJhdGluZyBlbmRwb2ludCBjYWxsZXIgZnVuY3Rpb25zIGZyb20gYW4gT0FTMyBzcGVjaWZpY2F0aW9uIGludG8geW91ciBjb2RlYmFzZSwKaXQncyB0aW1lIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBnZW5lcmF0ZWQgY29kZSBjYW4gYmUgdXNlZC4gVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBzaG91bGQgYnJpbmcgc29tZSBjbGFyaXR5LgoKIyMgVXNhZ2Ugb2YgdGhlIGdlbmVyYXRlZCBjb2RlIGJ5IGV4YW1wbGUKVGhlIGZvbGxvd2luZyBleGFtcGxlIGNvZGUgcGFydHMgZG8gaWxsdXN0cmF0ZSBhIGxvZ2luIHByb2Nlc3MuCkluIG9yZGVyIHRvIHByb2Nlc3MgdGhpcywgYSByZXF1ZXN0IGlzIHRyaWdnZXJlZCBieSBjYWxsaW5nIHRoZSBnZW5lcmF0ZWQgYGF1dGhlbnRpY2F0ZWAgZW5kcG9pbnQgY2FsbGVyIGZ1bmN0aW9uLgpBZnRlciByZWNlaXZpbmcgdGhlIGBSZXF1ZXN0UmVzdWx0YCBmb2xsb3dlZCBieSB0aGUgY2hlY2sgb2YgdGhlIGFjY29yZGluZyByZXNwb25zZSBzdGF0dXMgMjAwLCBUeXBlU2NyaXB0IHJlY29nbml6ZXMKdGhlIGFjY29yZGluZyB0eXBlcyBvZiB0aGUgcmVjZWl2ZWQgcmVzcG9uc2UuCgpUaGUgZm9sbG93aW5nIGNvZGUgc2hvd3MgaG93IHRvIGNyZWF0ZSBhIGBSZXF1ZXN0SGFuZGxlcmAgaW5zdGFuY2UsIHdoaWNoIGlkZWFsbHkgaXMgcHJvdmlkZWQgYXMgYSBzZXJ2aWNlIGluIHlvdXIgYXBwLgpEaWZmZXJlbnQgYFJlcXVlc3RIYW5kbGVyYCBpbXBsZW1lbnRhdGlvbnMgYXJlIGNvbXBvc2VkIHRvZ2V0aGVyLgpUaGVzZSBpbXBsZW1lbnRhdGlvbnMgY2FtZSBhY2NvcmRpbmcgZHVlIHRvIHRoZSBgdGVtcGxhdGVzYCBjb25maWd1cmF0aW9uIG9mIHRoZSBjb2RlIGdlbmVyYXRvci4KCmBgYHR5cGVzY3JpcHQKLy8gcmVxdWVzdEhhbmRsZXIudHMKCmltcG9ydCB7CiAgQXV0aFJlcXVlc3RIYW5kbGVyLAogIEF1dGhSZXF1ZXN0SGFuZGxlckV4ZWN1dGlvbkNvbmZpZywKICBBeGlvc1JlcXVlc3RIYW5kbGVyLAogIEF4aW9zUmVxdWVzdEhhbmRsZXJFeGVjdXRpb25Db25maWcsCiAgQmVhcmVyQXV0aFByb3ZpZGVyLAogIFpvZFZhbGlkYXRpb25SZXF1ZXN0SGFuZGxlciwKICBab2RWYWxpZGF0aW9uUmVxdWVzdEhhbmRsZXJFeGVjdXRpb25Db25maWcsCn0gZnJvbSAnLi9nZW5lcmF0ZWQtYXBpL2NvcmUnOwppbXBvcnQge2F1dGhlbnRpY2F0ZX0gZnJvbSAnLi9nZW5lcmF0ZWQtYXBpL2F1dGgnOwppbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnOwppbXBvcnQge3BhcnNlfSBmcm9tICdxcyc7CmltcG9ydCB7QmVhcmVyQXV0aFByb3ZpZGVyfSBmcm9tICIuL2F1dGhSZXF1ZXN0SGFuZGxlciI7CgpkZWNsYXJlIGdsb2JhbCB7CiAgaW50ZXJmYWNlIFJlcXVlc3RIYW5kbGVyRXhlY3V0aW9uQ29uZmlnCiAgICBleHRlbmRzIEF4aW9zUmVxdWVzdEhhbmRsZXJFeGVjdXRpb25Db25maWcsCiAgICAgIEF1dGhSZXF1ZXN0SGFuZGxlckV4ZWN1dGlvbkNvbmZpZywKICAgICAgWm9kVmFsaWRhdGlvblJlcXVlc3RIYW5kbGVyRXhlY3V0aW9uQ29uZmlnIHsKICB9Cn0KCmNsYXNzIE15Snd0QXV0aFByb3ZpZGVyIGltcGxlbWVudHMgQmVhcmVyQXV0aFByb3ZpZGVyIHsKICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogJ2JlYXJlcic7CgogIC8vIFRoaXMgaXMgdGhlIG5hbWUgb2Ygb25lIG9mIHlvdXIgc2VjdXJpdHkgZGVmaW5pdGlvbiBpbiB5b3VyIE9BUzMgc3BlY2lmaWNhdGlvbgogIHB1YmxpYyByZWFkb25seSBzZWN1cml0eVNjaGVtZU5hbWU6ICdteUp3dEF1dGgnOwoKICBwcml2YXRlIHJlYWRvbmx5IGFjY2Vzc1Rva2VuOiBudWxsIHwgc3RyaW5nOwoKICBzZXRUb2tlbihhY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbCkgewogICAgdGhpcy5hY2Nlc3NUb2tlbiA9IGFjY2Vzc1Rva2VuOwogIH0KCiAgZmluZFRva2VuKCk6IG51bGwgfCBzdHJpbmcgewogICAgcmV0dXJuIHRoaXMuYWNjZXNzVG9rZW47CiAgfQp9CgpleHBvcnQgY29uc3QgbXlKd3RBdXRoUHJvdmlkZXIgPSBuZXcgTXlKd3RBdXRoUHJvdmlkZXIoKTsKCmNvbnN0IG15QXhpb3NJbnN0YW5jZSA9IGF4aW9zLmNyZWF0ZSh7CiAgYmFzZVVSTDogJ2h0dHBzOi8vYXBpLmFjbWUuY29tJywKCiAgLy8gSW4gY2FzZSBvZiBicm93c2VyczoKICAvLyBBbGxvdyBjb29raWVzIHRvIGJlIHBhc3NlZCBhbG9uZyB3aXRoIHRoZSByZXF1ZXN0IGZvciBhIGRpZmZlcmVudCBhcGkgKHN1Yi0pZG9tYWluIChDT1JTKQogIC8vIFNvdXJjZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3dpdGhDcmVkZW50aWFscwogIHdpdGhDcmVkZW50aWFsczogdHJ1ZSwKfSk7Cgpjb25zdCBheGlvc1JlcXVlc3RIYW5kbGVyID0gbmV3IEF4aW9zUmVxdWVzdEhhbmRsZXIoewogIGF4aW9zOiBteUF4aW9zSW5zdGFuY2UsCiAgdXJsRGVjb2RlUXVlcnlTdHJpbmc6IChxdWVyeVN0cmluZzogc3RyaW5nKSA9PiB7CiAgICByZXR1cm4gcGFyc2UocXVlcnlTdHJpbmcpOwogIH0sCn0pOwoKY29uc3Qgem9kUmVxdWVzdEhhbmRsZXIgPSBuZXcgWm9kVmFsaWRhdGlvblJlcXVlc3RIYW5kbGVyKGF4aW9zUmVxdWVzdEhhbmRsZXIpOwoKZXhwb3J0IGNvbnN0IHJlcXVlc3RIYW5kbGVyID0gbmV3IEF1dGhSZXF1ZXN0SGFuZGxlcigKICAvLyBJbiBjYXNlIG9mIG11bHRpcGxlIGF1dGhlbnRpY2F0aW9uIHByb3ZpZGVycywgdGhlIG9yZGVyIGRvZXMgbm90IG1hdHRlci4KICAvLyBNdWx0aXBsZSBhdXRoZW50aWNhdGlvbiBwcm92aWRlcnMgYXJlIHByaW9yaXRpemVkIGJ5IHRoZSBzb3J0aW5nIG9mIHRoZSBuYW1lcyB3aGljaAogIC8vIGFyZSBsaXN0ZWQgaW4gdGhlICJyZXF1ZXN0LmVuZHBvaW50U2NoZW1hLnN1cHBvcnRlZFNlY3VyaXR5U2NoZW1hcyIgYXJyYXkuCiAgLy8gVGhpcyBhcnJheSBoYXMgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHNlY3VyaXR5IHNjaGVtZXMgaW4gdGhlIE9BUzMgc3BlY3Mgb2YgdGhhdCBvcGVyYXRpb24sCiAgLy8gb3IgZW5kcG9pbnQgcmVzcGVjdGl2ZWx5LiBUaGUgZmlyc3QgZm91bmQgdG9rZW4gcmVjZWl2ZWQgZnJvbSB0aGUgImZpbmRUb2tlbiIgbWV0aG9kIG9mIGEKICAvLyBzdXBwb3J0ZWQgYXV0aGVudGljYXRpb24gcHJvdmlkZXIgaXMgdGhlbiBhZGRlZCB0byB0aGUgcmVxdWVzdCBoZWFkZXJzLgogIFtteUp3dEF1dGhQcm92aWRlcl0sCgogIHpvZFJlcXVlc3RIYW5kbGVyCik7CmBgYAoKQmVsb3cgYXJlIHRocmVlIGRpZmZlcmVudCB2YXJpYW50cyB0byBzaG93IGhvdyBhbiBlbmRwb2ludCBjYWxsIGNhbiBsb29rIGxpa2Ugd2hlbgp1c2luZyBhIGdlbmVyYXRlZCBlbmRwb2ludCBjYWxsZXIgZnVuY3Rpb25zLgoKVGhlIGZpcnN0IGZ1bmN0aW9uIGRvZXMgZGlyZWN0bHkgKipyZXZlYWwqKiB0aGUgcmVzcG9uc2UgYm9keS4KVGhpcyBpcyBkb25lIGJ5IHRoZSBwcm92aWRlZCBleHRyYWN0b3IgZnVuY3Rpb24gYGdldFJldmVhbGVkUmVzcG9uc2VPclJlamVjdGAuCldpdGggdGhpcyBleHRyYWN0b3IgZnVuY3Rpb24gYW4gZXJyb3IgaXMgdGhyb3duIGluIGNhc2UgdGhlIGFjdHVhbCByZWNlaXZlZCByZXNwb25zZSBkb2VzIG5vdCBjb3JyZXNwb25kCnRvIHRoZSBleHBlY3RlZCBvbmUuIFRoaXMgaGFwcGVucyBieSBjaGVja2luZyB0aGUgc3RhdHVzIGFuZCB0aGUgY29udGVudCB0eXBlIG9mIHRoZSByZXNwb25zZS4KCmBgYHR5cGVzY3JpcHQKLy8gbG9naW4xLnRzCgppbXBvcnQgeyByZXF1ZXN0SGFuZGxlciwgbXlKd3RBdXRoUHJvdmlkZXIgfSBmcm9tICcuL3JlcXVlc3RIYW5kbGVyJzsKaW1wb3J0IHsgZ2V0UmV2ZWFsZWRSZXNwb25zZU9yUmVqZWN0IH0gZnJvbSAnLi9nZW5lcmF0ZWQtYXBpL2NvcmUnOwppbXBvcnQgeyBhdXRoZW50aWNhdGUgfSBmcm9tICcuL2dlbmVyYXRlZC1hcGkvYXV0aCc7Cgphc3luYyBmdW5jdGlvbiBsb2dpbk9yVGhyb3dFcnJvcigpIHsKICBjb25zdCByZXMgPSBhd2FpdCBnZXRSZXZlYWxlZFJlc3BvbnNlT3JSZWplY3QoMjAwLCAnYXBwbGljYXRpb24vanNvbicsIGF1dGhlbnRpY2F0ZSgKICAgIHJlcXVlc3RIYW5kbGVyLAogICAgewogICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLAogICAgICBib2R5OiB7CiAgICAgICAgdXNlcm5hbWVPckVtYWlsOiAnaW5rb2duaXRybycsCiAgICAgICAgcGFzc3dvcmQ6ICcxMjM0NTY3OCcKICAgICAgfSwKICAgIH0sCiAgICBvcHRpb25hbENvbmZpZwogICkpOwogIG15Snd0QXV0aFByb3ZpZGVyLnNldFRva2VuKHJlcy5ib2R5LmFjY2Vzc1Rva2VuKTsKfQpgYGAKVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4gdXNpbmcgW0B0YW5zdGFjay9xdWVyeV0oaHR0cHM6Ly90YW5zdGFjay5jb20vcXVlcnkvbGF0ZXN0KS4KCldpdGggdGhlIHNlY29uZCB2YXJpYW50IG9uZSBjYW4gYWNoaWV2ZSB0aGUgc2FtZSBhcyBpbiB0aGUgZmlyc3QgZXhhbXBsZSB3aXRob3V0IHRocm93aW5nIGFuIGVycm9yIGluIGNhc2Ugb2YKYW5vdGhlciByZXNwb25zZSB0aGFuIGV4cGVjdGVkLiBUaGlzIGNhbiBiZSBhY2hpZXZlZCBieSB0aGUgYGZpbmRSZXZlYWxlZFJlc3BvbnNlYCBsaWtlIHNvOgoKYGBgdHlwZXNjcmlwdAovLyBsb2dpbjIudHMKCmltcG9ydCB7IHJlcXVlc3RIYW5kbGVyLCBteUp3dEF1dGhQcm92aWRlciB9IGZyb20gJy4vcmVxdWVzdEhhbmRsZXInOwppbXBvcnQgeyBmaW5kUmV2ZWFsZWRSZXNwb25zZSB9IGZyb20gJy4vZ2VuZXJhdGVkLWFwaS9jb3JlJzsKaW1wb3J0IHsgYXV0aGVudGljYXRlIH0gZnJvbSAnLi9nZW5lcmF0ZWQtYXBpL2F1dGgnOwoKYXN5bmMgZnVuY3Rpb24gbG9naW5PckRvTm90aGluZygpIHsKICBjb25zdCByZXMgPSBhd2FpdCBmaW5kUmV2ZWFsZWRSZXNwb25zZSgyMDAsICdhcHBsaWNhdGlvbi9qc29uJywgYXV0aGVudGljYXRlKAogICAgcmVxdWVzdEhhbmRsZXIsCiAgICB7CiAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgIGJvZHk6IHsKICAgICAgICB1c2VybmFtZU9yRW1haWw6ICdpbmtvZ25pdHJvJywKICAgICAgICBwYXNzd29yZDogJzEyMzQ1Njc4JwogICAgICB9LAogICAgfSwKICAgIG9wdGlvbmFsQ29uZmlnCiAgKSk7CiAgaWYgKCFyZXMpIHsKICAgIGNvbnNvbGUubG9nKCdyZXNwb25zZSBpcyBpZ25vcmVkLi4uJyk7CiAgICByZXR1cm47CiAgfQogIG15Snd0QXV0aFByb3ZpZGVyLnNldFRva2VuKHJlcy5ib2R5LmFjY2Vzc1Rva2VuKTsKfQpgYGAKCkxhc3QgYnV0IG5vdCBsZWFzdCwgdGhlIHRoaXJkIHZhcmlhbnQuIFRoaXMgdmFyaWFudCBzZXJ2ZXMgYXMgYW4gb3ZlcnZpZXcgb2Ygd2hhdCBpcyBnb2luZyBvbiB1bmRlciB0aGUgaG9vZCBpbgp0aG9zZSBleHRyYWN0b3IgZnVuY3Rpb25zIGZyb20gYWJvdmUuCmBgYHR5cGVzY3JpcHQKLy8gbG9naW4zLnRzCgppbXBvcnQgeyByZXF1ZXN0SGFuZGxlciwgbXlKd3RBdXRoUHJvdmlkZXIgfSBmcm9tICcuL3JlcXVlc3RIYW5kbGVyJzsKaW1wb3J0IHsgYXV0aGVudGljYXRlIH0gZnJvbSAnLi9nZW5lcmF0ZWQtYXBpL2F1dGgnOwoKYXN5bmMgZnVuY3Rpb24gbG9naW5XaXRoRXhwbGljaXRSZXNwb25zZUJvZHlSZXZlYWxhdGlvbigpIHsKICBjb25zdCByZXF1ZXN0UmVzdWx0ID0gYXdhaXQgYXV0aGVudGljYXRlKAogICAgcmVxdWVzdEhhbmRsZXIsCiAgICB7CiAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgIGJvZHk6IHsKICAgICAgICB1c2VybmFtZU9yRW1haWw6ICdpbmtvZ25pdHJvJywKICAgICAgICBwYXNzd29yZDogJzEyMzQ1Njc4JwogICAgICB9LAogICAgfSwKICApOwoKICBpZiAoIXJlcXVlc3RSZXN1bHQucmVzcG9uc2UgfHwgcmVxdWVzdFJlc3VsdC5yZXNwb25zZS5zdGF0dXMgIT09IDIwMCkgewogICAgY29uc29sZS5lcnJvcignU29tZXRoaW5nIHdlbnQgd3JvbmcuLi4nKTsKICAgIHJldHVybjsKICB9CgogIC8vIFRoZSBmb2xsb3dpbmcgY2hlY2sgaXMgb25seSByZXF1aXJlZCBpZiB0aGUgcmVzcG9uc2UgYm9keSBvZiB0aGUgcmVzcG9uc2UKICAvLyB3aXRoIHRoZSBzdGF0dXMgY29kZSAyMDAgY2FuIGhhdmUgYW1iaWd1b3VzIGNvbnRlbnQgdHlwZXMgYWNjb3JkaW5nIHRvIHRoZQogIC8vIGdpdmVuIE9BUzMgc3BlY3MuCiAgaWYgKHJlcXVlc3RSZXN1bHQucmVzcG9uc2UuY29udGVudFR5cGUgIT09ICdhcHBsaWNhdGlvbi9qc29uJykgewogICAgY29uc29sZS5lcnJvcigndW5zdXBwb3J0ZWQgcmVzcG9uc2UgYm9keTonLCByZXF1ZXN0UmVzdWx0LnJlc3BvbnNlLmJvZHkpOwogICAgcmV0dXJuOwogIH0KCiAgY29uc3QgYm9keSA9IGF3YWl0IHJlcXVlc3RSZXN1bHQucmVzcG9uc2UucmV2ZWFsQm9keSgpOwogIG15Snd0QXV0aFByb3ZpZGVyLnNldFRva2VuKGJvZHkuYWNjZXNzVG9rZW4pOwp9CmBgYApUaGVyZSBleGlzdCBhbm90aGVyIHR3byBleHRyYWN0b3IgZnVuY3Rpb25zIGBnZXRSZXNwb25zZU9yUmVqZWN0YCBhbmQgYGZpbmRSZXNwb25zZWAuClRoZXNlIHR3byBmdW5jdGlvbnMgZG8gcmV0dXJuIGEgcmVzcG9uc2Ugd2l0aCBhIGJvZHkgd2hpY2ggd2FzIG5vdCB5ZXQgKipyZXZlYWxlZCoqLgpBbnl3YXksIHRoaXMgaXMgZm9yIGNvbnZlbmllbmNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHdyaXRlIHRoYXQgbXVjaCBjb2RlLgoKPiA6YnVsYjogVGhlIGByZXNwb25zZS5jb250ZW50VHlwZWAgcHJvcGVydHkgZG9lcyBub3QgYWx3YXlzIG1hdGNoIHRoZSBleGFjdCB2YWx1ZSBvZiB0aGUgYWN0dWFsIGByZXNwb25zZS5oZWFkZXJzWydjb250ZW50LXR5cGUnXWAKPiB3aGljaCB3YXMgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLiBUaGUgYHJlc3BvbnNlLmNvbnRlbnRUeXBlYCBwcm9wZXJ0eSdzIHJlYXNvbiB0byBleGlzdCBpcyB0byBtYWtlIHN1cmUgdGhhdCB3ZQo+IGFyZSBhYmxlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gZGlmZmVyZW50IHJlc3BvbnNlIHR5cGVzIHdoaWNoIHdlcmUgZGVmaW5lZCBieSB0aGUgT0FTMyBzcGVjcy4KPiBUaGUgT0FTMyBjb250ZW50IHR5cGUgdGhhdCBoYXMgdGhlIG1vc3QgY2hhcmFjdGVycyBtYXRjaGluZyB0aGUgYWN0dWFsIGBjb250ZW50LXR5cGVgIGhlYWRlciBpcyBhZG9wdGVkIGR1cmluZyBydW50aW1lLgoKIyMgUmVxdWVzdEhhbmRsZXIgaW1wbGVtZW50YXRpb25zClRoZSBkZWNpc2lvbiBvZiBoYXZpbmcgYSBgUmVxdWVzdEhhbmRsZXJgIGludGVyZmFjZSB3aXRoIGdyYW51bGFyIGltcGxlbWVudGF0aW9ucyB3YXMgbWFkZSB3aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudHMKaW4gbWluZDogYHNlcnZlcmAgdnMgYGNsaWVudGAgfCBgcHJvZGAgdnMgYHRlc3RgIHwgY3VzdG9tICJtaWRkbGV3YXJlIiBiZWhhdmlvdXIuCllvdSBjYW4gd3JpdGUgeW91ciBvd24gaW1wbGVtZW50YXRpb25zIG9yIGp1c3QgY29tYmluZSBzb21lIG9mIHRoZSBleGlzdGluZyBvbmVzIGJlbG93LCBhY2NvcmRpbmcgdG8geW91ciBuZWVkcy4KVGhlIGBSZXF1ZXN0SGFuZGxlcmAgaW50ZXJmYWNlIGZvciBjdXN0b20gaW1wbGVtZW50YXRpb25zIGNhbiBiZSBmb3VuZApbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2lua29nbml0cm8vb2FzLXRzem9kLWdlbi9ibG9iL21haW4vc3JjL3RlbXBsYXRlcy9jb3JlL2NvcmUudHMjTDM0MykuCgojIyMgQXhpb3NSZXF1ZXN0SGFuZGxlcgpUaGlzIGltcGxlbWVudGF0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBleGVjdXRpbmcgeW91ciByZXF1ZXN0cyB0aHJvdWdoIHRoZSBodHRwKHMpIHByb3RvY29sLgpJdCBpcyB1c3VhbGx5IHRoZSBtb3N0IGlubmVyIGltcGxlbWVudGF0aW9uIG9mIGFuIG9uaW9uIGJvb3RzdHJhcHBlZCByZXF1ZXN0IGhhbmRsZXIgb2JqZWN0LgpJdCByZXF1aXJlcyB0aGUgaW5zdGFsbGF0aW9uIG9mIHRoZSBbQXhpb3NdKGh0dHBzOi8vYXhpb3MtaHR0cC5jb20vZG9jcy9pbnRybykgbGlicmFyeSBpbiB5b3VyIGNvZGUgYmFzZS4KRm9yIHRoZSByZWNvbW1lbmRlZCBBeGlvcyB2ZXJzaW9uIGhhdmUgYSBsb29rIGF0IHRoZSBgcGVlckRlcGVuZGVuY2llc2AgaW4gdGhlIGBwYWNrYWdlLmpzb25gIG9mIHRoaXMgcHJvamVjdC4KQ3JlYXRpbmcgYW4gQXhpb3NSZXF1ZXN0SGFuZGxlciBpbnN0YW5jZSBjb21lcyB3aXRoIHRoZSBmb2xsb3dpbmcgc3RlcHM6CgpgYGAKbnBtIGluc3RhbGwgYXhpb3MgLS1zYXZlCmBgYAoKVG8gc3VwcG9ydCBgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCByZXNwb25zZSBib2RpZXMsIHRoaXMgcmVxdWVzdCBoYW5kbGVyIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzCmEgY3VzdG9tIGBkZWNvZGluZ2AgZnVuY3Rpb24gdG8gZGVjb2RlIHVybCBlbmNvZGVkIGRhdGEuClRoZSBbcXNdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3FzKSBsaWJyYXJ5IGN1cnJlbnRseSBpcyB0aGUgbW9zdCBjb21tb25seSB1c2VkIGxpYnJhcnkKZm9yIHN1Y2ggdGFza3MgYW5kIHRoZXJlZm9yZSByZWNvbW1lbmRlZDoKCmBgYApucG0gaW5zdGFsbCBxcyAtLXNhdmUKCm5wbSBpbnN0YWxsIEB0eXBlcy9xcyAtLXNhdmUtZGV2CmBgYAoKQW5kIGZpbmFsbHk6CgpgYGB0eXBlc2NyaXB0CmNvbnN0IHJlcXVlc3RIYW5kbGVyID0gbmV3IEF4aW9zUmVxdWVzdEhhbmRsZXIoewogIGF4aW9zOiBheGlvcy5jcmVhdGUoewogICAgYmFzZVVSTDogYGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMGAsCiAgfSksCiAgdXJsRGVjb2RlUXVlcnlTdHJpbmc6IChxdWVyeVN0cmluZzogc3RyaW5nKSA9PiB7CiAgICByZXR1cm4gcGFyc2UocXVlcnlTdHJpbmcpOwogIH0sCn0pOwpgYGAKCj4gOmJ1bGI6IFRoZSBBeGlvc1JlcXVlc3RIYW5kbGVyIGZvcmNlcyBBeGlvcyB0byBhbHdheXMgcmVjZWl2ZSByZXNwb25zZSBib2RpZXMgaW4gZm9ybSBvZiBhbiBgQXJyYXlCdWZmZXJgLgo+IFRoaXMgaXMgYWNoaWV2ZWQgdGhyb3VnaCBzZXR0aW5nIGByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcidgIGluc2lkZQo+IHRoZSBbQXhpb3NSZXF1ZXN0Q29uZmlnXShodHRwczovL2F4aW9zLWh0dHAuY29tL2RvY3MvcmVxX2NvbmZpZykuCj4gQSBwcmVjb25maWd1cmVkIGByZXNwb25zZVR5cGVgIHByb3BlcnR5IGlzIHRoZXJlZm9yZSBhbHdheXMgb3ZlcndyaXR0ZW4gYnkgdGhlIHJlcXVlc3QgaGFuZGxlci4KPiBUaGUgc2FtZSBhcHBsaWVzIHRvIGBjYW5jZWxUb2tlbmAuCgojIyMgRmV0Y2hBcGlSZXF1ZXN0SGFuZGxlcgpUaGlzIGltcGxlbWVudGF0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBleGVjdXRpbmcgeW91ciByZXF1ZXN0cyB0aHJvdWdoIHRoZSBodHRwKHMpIHByb3RvY29sLgpJdCBpcyB1c3VhbGx5IHRoZSBtb3N0IGlubmVyIGltcGxlbWVudGF0aW9uIG9mIGFuIG9uaW9uIGJvb3RzdHJhcHBlZCByZXF1ZXN0IGhhbmRsZXIgb2JqZWN0CmFuZCB1c2VzIHRoZSBidWlsdC1pbiBbRmV0Y2ggQVBJXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRmV0Y2hfQVBJKS4KClRvIHN1cHBvcnQgYGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGAgcmVxdWVzdCBhbmQgcmVzcG9uc2UgYm9kaWVzLCB0aGlzIHJlcXVlc3QgaGFuZGxlciBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcwpjdXN0b20gYGRlY29kaW5nYCBhbmQgYGVuY29kaW5nYCBmdW5jdGlvbnMgdG8gY29udmVydCBkYXRhIGZyb20gYW5kIHRvIHF1ZXJ5IHN0cmluZyBmb3JtYXQuClRoZSBbcXNdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3FzKSBsaWJyYXJ5IGN1cnJlbnRseSBpcyB0aGUgbW9zdCBjb21tb25seSB1c2VkIGxpYnJhcnkKZm9yIHN1Y2ggdGFza3MgYW5kIHRoZXJlZm9yZSByZWNvbW1lbmRlZDoKYGBgCm5wbSBpbnN0YWxsIHFzIC0tc2F2ZQoKbnBtIGluc3RhbGwgQHR5cGVzL3FzIC0tc2F2ZS1kZXYKYGBgCgpDcmVhdGUgYSBGZXRjaEFwaVJlcXVlc3RIYW5kbGVyIGluc3RhbmNlIGFzIHdyaXR0ZW4gYmVsb3c6CmBgYHR5cGVzY3JpcHQKaW1wb3J0IHsgRmV0Y2hBcGlSZXF1ZXN0SGFuZGxlciB9IGZyb20gJy4vZ2VuZXJhdGVkLWFwaS9jb3JlJzsKaW1wb3J0IHsgc3RyaW5naWZ5IH0gZnJvbSAncXMnOwoKY29uc3QgZmV0Y2hBcGlSZXF1ZXN0SGFuZGxlciA9IG5ldyBGZXRjaEFwaVJlcXVlc3RIYW5kbGVyKHsKICAvLyBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSByZXF1aXJlZAogIHVybEVuY29kZVF1ZXJ5U3RyaW5nOiBwbGFpbk9iamVjdCA9PiBzdHJpbmdpZnkocXVlcnlQYXJhbXMpLAogIHVybERlY29kZVF1ZXJ5U3RyaW5nOiAocXVlcnlTdHJpbmc6IHN0cmluZykgPT4gewogICAgcmV0dXJuIHBhcnNlKHF1ZXJ5U3RyaW5nKTsKICB9LAoKICAvLyBGb2xsb3dpbmcgaXMgb3B0aW9uYWwgc3R1ZmYKICBiYXNlVXJsOiAnaHR0cDovL2xvY2FsaG9zdDo4MDAwJywKICBnZW5lcmFsUmVxdWVzdEluaXQ6IHsKICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsIC8vIFNlbmQgY3JlZGVudGlhbCBoZWFkZXJzCiAgICBtb2RlOiAnY29ycycsIC8vIEVuYWJsZSBDT1JTCiAgfSwKfSk7CmBgYAoKIyMjIEF1dGhSZXF1ZXN0SGFuZGxlcgpUaGlzIGltcGxlbWVudGF0aW9uIGNhbiBiZSB0YWtlbiB0byBhZGQgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gdG8gcmVxdWVzdHMgYXV0b21hdGljYWxseS4KVGhpcyBpcyBkb25lIGFzIGRlZmluZWQgaW4gdGhlIFtPQVMgQXV0aGVudGljYXRpb24gc3BlY3NdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vdjNfMC9hdXRoZW50aWNhdGlvbi8pLAphY2NvcmRpbmcgdG8gdGhlIGdpdmVuCltBdXRoUHJvdmlkZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9pbmtvZ25pdHJvL29hcy10c3pvZC1nZW4vYmxvYi9tYWluL3NyYy90ZW1wbGF0ZXMvY29yZS9hdXRoUmVxdWVzdEhhbmRsZXIudHMjTDI5KShzKS4KQXMgb2YgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzLCBgYmFzaWNgLCBgYmVhcmVyYCBhbmQgYGFwaUtleWAgYXV0aGVudGljYXRpb24gaXMgc3VwcG9ydGVkLgoKIyMjIFNjb3BlZFJlcXVlc3RIYW5kbGVyCldpdGggdGhpcyBpbXBsZW1lbnRhdGlvbiB5b3UgYXJlIGFibGUgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG1ldGhvZHMgYGNhbmNlbFJlcXVlc3RCeUlkYCBhbmQgYGNhbmNlbEFsbFJlcXVlc3RzYCBkbyBvbmx5CmNhbmNlbCB0aGUgcmVxdWVzdHMgd2hpY2ggd2VyZSBtYWRlIHRocm91Z2ggdGhlIGBleGVjdXRlYCBtZXRob2Qgb2YgZXhhY3RseSB0aGF0IGBTY29wZWRSZXF1ZXN0SGFuZGxlcmAgaW5zdGFuY2UuClRoaXMgbWlnaHQgYmUgdXNlZnVsIHdoZW4geW91IHdhbnQgdG8gcHJvdmlkZSBhIHNlcGFyYXRlIGBTY29wZWRSZXF1ZXN0SGFuZGxlcmAgaW5zdGFuY2UgZm9yIFJlYWN0IGNvbXBvbmVudHMuCkFueXdheSwgUmVhY3Qgc3R1ZmYgaXMgb3V0LW9mLXNjb3BlIG9mIHRoaXMgcGFja2FnZS4KCiMjIyBab2RWYWxpZGF0aW9uUmVxdWVzdEhhbmRsZXIKVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdmFsaWRhdGluZyB0aGUgcmVxdWVzdCBhbmQgcmVzcG9uc2UgZGF0YSB0aHJvdWdoIHRoZWlyIFpvZCBzY2hlbWFzLgpUaGlzIG9uZSBpcyBvbmx5IGF2YWlsYWJsZSB3aGVuIFpvZCBzY2hlbWFzIGFyZSBnZW5lcmF0ZWQgZHVlIHRvIHRoZSBgd2l0aFpvZDogdHJ1ZWAgY29uZmlndXJhdGlvbi4KVGhpcyByZXF1ZXN0IGhhbmRsZXIgZG9lcyBgcmVqZWN0YCB0aGUgcHJvbWlzZSB3aXRoIHRoZSBab2QgZXJyb3Igd2hlbiByZXF1ZXN0cyBvciByZXNwb25zZXMgZG8gbm90IGNvbXBseSB3aXRoIHRoZQpab2Qgc2NoZW1hIGRlZmluaXRpb25zIHdoaWNoIGFyZSBkZWZpbmVkIGluIHRoZSByZXF1ZXN0cycgYGVuZHBvaW50U2NoZW1hYCBwcm9wZXJ0eS4KSXQgdXNlcyB0aGUgW3NhZmVQYXJzZV0oaHR0cHM6Ly96b2QuZGV2Lz9pZD1zYWZlcGFyc2UpIG1ldGhvZCBmb3IgdGhpcyB0YXNrLgoKPiA6YnVsYjogSW4gY2FzZSBvZiAibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgcmVxdWVzdHMsIHlvdSBhcmUgYWxsb3dlZCB0byBlaXRoZXIgcGFzcyBhIEZvcm1EYXRhIGluc3RhbmNlIG9yCj4gYSBwbGFpbiBvYmplY3QgaW4gdGhlIGBib2R5YCBwcm9wZXJ0eSBvZiB0aGUgZW5kcG9pbnQgY2FsbGVyIGZ1bmN0aW9uIHBheWxvYWQuCj4gVGhlIFpvZFZhbGlkYXRpb25SZXF1ZXN0SGFuZGxlciBvbmx5IHZhbGlkYXRlcyBwbGFpbiBvYmplY3QgcmVxdWVzdCBib2RpZXMgYW5kIHNraXBzIHZhbGlkYXRpb24gZm9yIEZvcm1EYXRhIGluc3RhbmNlcy4KPiBUaGlzIGFsc28gYXBwbGllcyB0byByZXNwb25zZSBib2RpZXMgd2hpY2ggY29tZSBhcyBGb3JtRGF0YSBhZnRlciBjYWxsaW5nIHRoZSBgcmV2ZWFsQm9keWAgbWV0aG9kIG9mIGEgcmVzcG9uc2UuCgojIyBQcm9taXNlczogYHJlc29sdmVgIHZzIGByZWplY3RgClRoZSBwcm92aWRlZCBgUmVxdWVzdEhhbmRsZXJgIGltcGxlbWVudGF0aW9ucyBkaXN0aW5ndWlzaCBiZXR3ZWVuICJleHBlY3RlZCIgYW5kCiJ1bmV4cGVjdGVkIiBldmVudHM6IEFuICJleHBlY3RlZCIgZXZlbnQgaXMgZm9yIGV4YW1wbGUgYSByZXNwb25zZSB3aGljaCBjb3VsZCBub3QgYmUgcmVjZWl2ZWQgZHVlIHRvIGNhbmNlbGxhdGlvbiBvciBuZXR3b3JrIGlzc3Vlcy4KQSByZXNwb25zZSB3aXRoIG5vIDJ4eCBzdGF0dXMgY29kZSBpcyBjb25zaWRlcmVkIHRvIGJlICJleHBlY3RlZCIgYXMgd2VsbC4KSW4gc3VjaCBjYXNlcywgdGhlIFByb21pc2Ugd2hpY2ggd2FzIGRlbGl2ZXJlZCBieSB0aGUgYHJlcXVlc3RIYW5kbGVyLmV4ZWN1dGVgIG1ldGhvZCwgaXMgZ29pbmcgdG8gYmUgYHJlc29sdmVkYC4KT24gdGhlIG90aGVyIGhhbmQsIHRoaW5ncyBsaWtlIHByb2dyYW1taW5nIGVycm9ycyBvciBvdGhlciBydW50aW1lIGVycm9ycyBkdWUgdG8gd3Jvbmcgc291cmNlIGNvZGUgYXJlIGNvbnNpZGVyZWQKdG8gYmUgInVuZXhwZWN0ZWQiIGFuZCB3aWxsIHJlc3VsdCBpbiBhIGByZWplY3RlZGAgUHJvbWlzZS4gVGhpcyBhcHBsaWVzIHRvIGFsbCBwcm92aWRlZCBSZXF1ZXN0SGFuZGxlciBpbXBsZW1lbnRhdGlvbnMuCgpUaGlzIGJlaGF2aW91ciBzaG91bGQgbGVhZCB0byBhIGJldHRlciBkZXZlbG9wZXIgZXhwZXJpZW5jZSBiZWNhdXNlIHRocm93biBlcnJvcnMgbXVzdCBvbmx5IGJlIGNhdWdodCBhdCBhIHJvb3QgbGV2ZWwKb2YgYW4gYXBwbGljYXRpb24gdGhlbi4KCiMjIFNlbWFudGljIHZlcnNpb25pbmcKKipXb3JyaWVkIGFib3V0IGRpZmZlcmVudCBjb2RlIGdlbmVyYXRpb24gb3V0cHV0cyBhZnRlciB1cGRhdGluZyB0aGlzIGxpYnJhcnk/KioKQXMgbG9uZyBhcyB0aGUgQVBJIGNvbnRyYWN0IG9uIHRoZSBiYWNrZW5kIHNpZGUgd2FzIG5vdCB2aW9sYXRlZCB0aHJvdWdoIGJyZWFraW5nIGNoYW5nZXMsCnlvdSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IGJyZWFraW5nIGNoYW5nZXMgaW4gZ2VuZXJhdGVkIGNvZGUgb3V0cHV0IHdoZW4gdXBncmFkaW5nIHRvIHRoZSBuZXh0ICoqbWlub3IqKiB2ZXJzaW9uLgoKIyMgTGFja2luZyBPQVMzIHN1cHBvcnQKLSBBbHRob3VnaCBgZGVmYXVsdGAgaXMgc3VwcG9ydGVkIGZvciByZXNwb25zZSBzdGF0dXMgY29kZXMsCnN0YXR1cyBjb2RlIHBhdHRlcm4gbWF0Y2hpbmcgKGUuZy4gZm9yIFs1WFhdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGVzY3JpYmluZy1yZXNwb25zZXMvKSkKaXMgaWdub3JlZCBieSB0aGUgZ2VuZXJhdG9yIGFuZCB3aWxsIG5vdCBnZXQgcmVjb2duaXplZCBieSBUUy4KQXMgb2YgcmlnaHQgbm93LCBpdCBpcyBhZGRlZCBhcyBhIHBvc3NpYmxlIHJlc3BvbnNlIGhhdmluZyBgYW55YCBzdGF0dXMgY29kZS4KLSBUaGUgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBbIm5vdCIga2V5d29yZF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kYXRhLW1vZGVscy9vbmVvZi1hbnlvZi1hbGxvZi1ub3QvI25vdCkKaXMgYGFueWAgZm9yIFRTIGFuZCBgei5hbnkoKWAgZm9yIFpvZC4KLSBPbmx5ICoqTG9jYWwgUmVmZXJlbmNlcyoqIGFyZSBzdXBwb3J0ZWQgZm9yIFskcmVmIHN5bnRheF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi91c2luZy1yZWYvKS4KT25lIG1pZ2h0IGNvbGxlY3QgYWxsIGV4dGVybmFsIGAkcmVmYCBkZWZpbml0aW9ucyBhbmQgbW9kaWZ5IHRoZSBzcGVjcyBhY2NvcmRpbmdseSB0byBoYXZlIG9ubHkgbG9jYWwgcmVmZXJlbmNlcwp3aGVuIHBhc3NpbmcgdGhlIHNwZWNzIHRvIHRoZSBnZW5lcmF0b3IuCi0gVGhlIGBkaXNjcmltaW5hdG9yLm1hcHBpbmdgIHByb3BlcnR5IC0gYXMgZGVzY3JpYmVkCltoZXJlXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2RhdGEtbW9kZWxzL2luaGVyaXRhbmNlLWFuZC1wb2x5bW9ycGhpc20vKSBpcyBpZ25vcmVkLgpJdCBpcyByZWNvbW1lbmRlZCB0byBkZWZpbmUgdGhlIGRpc2NyaW1pbmF0aW5nIGxpdGVyYWwgdmFsdWUgZGlyZWN0bHkgaW4gdGhlIHNjaGVtYXMgd2hpY2ggYXJlIHJlZmVyZW5jZWQgaW4KYG9uZU9mYCBvciBgYW55T2ZgIChhcyBsb25nIGFzIHRoZSBkaXNjcmltaW5hdG9yIGlzIGRlZmluZWQgaW4gdGhlcmUpLiBUaGlzIGNhbiBiZSBhY2hpZXZlZCB0aHJvdWdoIGEgc3RyaW5nIGVudW0uCi0gVGhlIHByb3BlcnRpZXMgYHJlYWRPbmx5YCBhbmQgYHdyaXRlT25seWAgZGVzY3JpYmVkIFtoZXJlXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2RhdGEtbW9kZWxzL2RhdGEtdHlwZXMvKSBhcmUgaWdub3JlZC4KSXQgaXMgcmVjb21tZW5kZWQgdG8gaGF2ZSBzZXBhcmF0ZSBkZWZpbml0aW9ucyBmb3IgcmVhZCBhbmQgd3JpdGUgb2JqZWN0cywgZXNwZWNpYWxseSB3aXRoIGNoYW5naW5nIHJlcXVpcmVtZW50cwooc2VlIGFsc28gW0NRUlMgcGF0dGVybl0oaHR0cHM6Ly9tYXJ0aW5mb3dsZXIuY29tL2JsaWtpL0NRUlMuaHRtbCkpLgpBbnl3YXksIHRoaXMgaXMgcGxhbm5lZCB0byBiZSBpbXBsZW1lbnRlZCBidXQgY3VycmVudGx5IGhhcyBsb3cgcHJpb3JpdHkgdG8gbWUuCgojIyBFeHRyYQotIFJlcXVlc3QgYGhlYWRlcnNgIGFuZCBgY29va2llc2AgYXJlIGFsd2F5cyBvcHRpb25hbC4gQXQgdGhlIG1vbWVudCB0aGVyZSBpcyBubyBjb25maWd1cmF0aW9uIHNldHRpbmcgZm9yIHRoaXMuClRoaXMgaXMgYmVjYXVzZSBvbmUgbWlnaHQgYXZvaWQgZGVmaW5pbmcgY29tbW9uIGhlYWRlcnMgZm9yIGV2ZXJ5IGNhbGwgb2YgYW4gZW5kcG9pbnQgY2FsbGVyIGZ1bmN0aW9uIGFuZCBkZWZpbmUKdGhvc2UgaW4gYSBzZXBhcmF0ZSB1bmRlcmx5aW5nIHJlcXVlc3QgaGFuZGxlci4gSG93ZXZlciwgYXMgc29vbiBhcyBhIHJlcXVlc3QgYGhlYWRlcnNgIG9iamVjdCBpcyBwYXNzZWQgaW4gdG8gdGhlCmVuZHBvaW50IGNhbGxlciBmdW5jdGlvbiwgaXQgbXVzdCBmdWxmaWxsIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBnaXZlbiBPQVMzIHNwZWNzLCBlLmcuIGByZXF1aXJlZDogdHJ1ZWAKb2YgYSBzcGVjaWZpYyBoZWFkZXIuCi0gW0FueU9mXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL3YzXzAvZGF0YS1tb2RlbHMvb25lb2YtYW55b2YtYWxsb2Ytbm90LyNhbnlvZikgZG9lcyBvZmZpY2lhbGx5IHN1cHBvcnQKb25seSBPYmplY3RTY2hlbWFzIG9yIE9iamVjdFNjaGVtYUNvbXBvbmVudFJlZnMuCkhvd2V2ZXIsIGluIGNhc2Ugb2YgYW4gT0FTMyBzcGVjIHdoaWNoIGRlZmluZXMgYW5vdGhlciB0eXBlIGluIHRoZSBgYW55T2ZgIHByb3BlcnR5CihlLmcuIGEgW1N0cmluZ1NjaGVtYV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi92M18wL2RhdGEtbW9kZWxzL2RhdGEtdHlwZXMvI3N0cmluZykpLCB0aGUgZ2VuZXJhdG9yIGRvZXMKZ2VuZXJhdGUgY29kZSB3aGljaCB0cmVhdHMgbm9uLU9iamVjdFNjaGVtYSB0eXBlcyBhcyBhbm90aGVyIHVuaW9uIG9wdGlvbi4KCiMjIE91dCBvZiBzY29wZQpMaW50aW5nIGlzIG91dCBvZiBzY29wZSBvZiB0aGlzIHBhY2thZ2UuIFRoZSBnZW5lcmF0b3IgaXMgcmVzcG9uc2libGUgdG8gZ2VuZXJhdGUgdmFsaWQgVHlwZVNjcmlwdCAoYW5kIFpvZCkgZGVmaW5pdGlvbnMuClRoYXQncyB3aGF0IGl0IGRvZXMuIFlvdXIgY29kZSBzZXR1cCBzaG91bGQgYmUgcmVzcG9uc2libGUgZm9yIGxpbnRpbmcgeW91ciBjb2RlLCBzbyBpdCBtaWdodCBtYWtlIHNlbnNlIGZvciB5b3UgdG8gcnVuCltFU0xpbnRdKGh0dHBzOi8vZXNsaW50Lm9yZy8pIHJpZ2h0IGFmdGVyIHRoZSBgZ2VuZXJhdGVPYXMzVG9Uc2AgZnVuY3Rpb24gd2FzIGV4ZWN1dGVkLCBlLmcuIHdpdGggYSBzY3JpcHQgaW4geW91cgpgcGFja2FnZS5qc29uYCBsaWtlIHNvOgpgYGBqc29uCiJzY3JpcHRzIjogewogICJhcGk6Z2VuZXJhdGUiOiAibm9kZSBhcGkuZ2VuZXJhdGUuanMgJiYgZXNsaW50IC0tZml4IC0tcXVpZXQgLi9nZW5lcmF0ZWQtYXBpIgp9CmBgYAoKIyMgQnVnIHJlcG9ydCAvIGZlYXR1cmUgcmVxdWVzdApJZiB5b3UgdGhpbmsgYW4gdW5zdXBwb3J0ZWQgZmVhdHVyZSBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZCwgZmVlbCBmcmVlIHRvIG9wZW4gYW4gaXNzdWUgb3IgY3JlYXRlIGEgbmV3CnB1bGwgcmVxdWVzdC4gUGxlYXNlIHJlZmVyIHRvIHRoZSBwdWxsIHJlcXVlc3QgY3JpdGVyaWEgd2hpY2ggaXMgZGVmaW5lZCBbaGVyZV0oLmdpdGh1Yi9wdWxsX3JlcXVlc3RfdGVtcGxhdGUubWQpLgo= readmeEtag: '"398ac0ed42a7331f49ed33490ac1e5fa62563fd7"' readmeLastModified: Sun, 20 Oct 2024 14:00:48 GMT repositoryId: 763628347 description: >- Client SDK code generator to convert OpenApi v3 specifications into TS endpoint caller functions with Zod types. created: '2024-02-26T16:38:59Z' updated: '2026-01-06T05:08:53Z' language: TypeScript archived: false stars: 8 watchers: 1 forks: 0 owner: inkognitro logo: https://avatars.githubusercontent.com/u/22317587?v=4 license: MIT repoEtag: '"0be6ac4f7411df838e5f7b5bf529a065869d0d8fce117c3a952471f6f39f928c"' repoLastModified: Tue, 06 Jan 2026 05:08:53 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/falcoframework/falco.openapi v3: true id: 200b9168cb016f82f97f3f6278a73df0 repositoryMetadata: base64Readme: >- IyBGYWxjby5PcGVuQVBJCgpbIVtOdUdldCBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL251Z2V0L3YvRmFsY28uT3BlbkFwaS5zdmcpXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvRmFsY28uT3BlbkFwaSkKWyFbYnVpbGRdKGh0dHBzOi8vZ2l0aHViLmNvbS9GYWxjb0ZyYW1ld29yay9GYWxjby5PcGVuQXBpL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vRmFsY29GcmFtZXdvcmsvRmFsY28uT3BlbkFwaS9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55bWwpCgpgYGBmc2hhcnAKb3BlbiBGYWxjbwpvcGVuIEZhbGNvLk9wZW5BcGkKb3BlbiBGYWxjby5Sb3V0aW5nCgpsZXQgZW5kcG9pbnRzID0KICAgIFsKICAgICAgICBnZXQgIi8iIChSZXNwb25zZS5vZlBsYWluVGV4dCAiSGVsbG8gV29ybGQhIikKICAgICAgICAgICAgfD4gT3BlbkFwaS5uYW1lICJIZWxsb1dvcmxkIgogICAgICAgICAgICB8PiBPcGVuQXBpLnN1bW1hcnkgIlRoaXMgaXMgYSBzdW1tYXJ5IgogICAgICAgICAgICB8PiBPcGVuQXBpLmRlc2NyaXB0aW9uICJUaGlzIGlzIGEgdGVzdCBkZXNjcmlwdGlvbiwgd2hpY2ggaXMgdGhlIGxvbmcgZm9ybSBvZiB0aGUgc3VtbWFyeS4iCiAgICAgICAgICAgIHw+IE9wZW5BcGkucmV0dXJuVHlwZSB0eXBlb2Y8c3RyaW5nPgogICAgXQpgYGAKCltGYWxjby5PcGVuQVBJXShodHRwczovL2dpdGh1Yi5jb20vRmFsY29GcmFtZXdvcmsvRmFsY28uT3BlbkFQSSkgaXMgYSBsaWJyYXJ5IGZvciBnZW5lcmF0aW5nIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBmb3IgW0ZhbGNvXShodHRwczovL2dpdGh1Yi5jb20vRmFsY29GcmFtZXdvcmsvRmFsY28pIGFwcGxpY2F0aW9ucy4gSXQgcHJvdmlkZXMgYSBzZXQgb2YgY29tYmluYXRvcnMgZm9yIGFubm90YXRpbmcgRmFsY28gcm91dGVzIHdpdGggT3BlbkFQSSBtZXRhZGF0YSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgT3BlbkFQSSBkb2N1bWVudGF0aW9uLgoKIyMgS2V5IEZlYXR1cmVzCgotIEdlbmVyYXRlcyBPcGVuQVBJIDMuMCBkb2N1bWVudGF0aW9uLgotIFByb3ZpZGVzIGEgc2V0IG9mIGNvbWJpbmF0b3JzIGZvciBhbm5vdGF0aW5nIEZhbGNvIHJvdXRlcyB3aXRoIE9wZW5BUEkgbWV0YWRhdGEuCi0gR2VuZXJhdGVzIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBmcm9tIG1ldGFkYXRhIGFzc29jaWF0ZWQgdG8gRmFsY28gcm91dGVzLgotIEFsbG93cyBmb3IgY3VzdG9taXphdGlvbiBvZiB0aGUgZ2VuZXJhdGVkIE9wZW5BUEkgZG9jdW1lbnRhdGlvbi4KCiMjIERlc2lnbiBHb2FscwoKLSBNaW5pbWFsaXN0aWMgYW5kIGVhc3kgdG8gdXNlLgotIEV4cGxpY2l0LCBhbGxvd2luZyBmb3IgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGUgZ2VuZXJhdGVkIE9wZW5BUEkgZG9jdW1lbnRhdGlvbi4KLSBUeXBlLXNhZmUgYW5kIHRvIGxldmVyYWdlIHRoZSB0eXBlIHN5c3RlbSB0byBwcmV2ZW50IGNvbW1vbiBtaXN0YWtlcy4KLSBDb21wb3NhYmxlLCBhbGxvd2luZyBmb3IgdGhlIGdlbmVyYXRpb24gb2YgY29tcGxleCBPcGVuQVBJIGRvY3VtZW50YXRpb24uCgojIyBHZXR0aW5nIFN0YXJ0ZWQKClRoaXMgZ3VpZGUgYXNzdW1lcyB5b3UgaGF2ZSBhIFtGYWxjb10oaHR0cHM6Ly9naXRodWIuY29tL0ZhbGNvRnJhbWV3b3JrL0ZhbGNvKSBwcm9qZWN0IHNldHVwLiBJZiB5b3UgZG9uJ3QsIHlvdSBjYW4gY3JlYXRlIGEgbmV3IEZhbGNvIHByb2plY3QgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgc2hlbGwKPiBkb3RuZXQgbmV3IHdlYiAtbGFuZyBGIyAtbyBIZWxsb1dvcmxkCj4gY2QgSGVsbG9Xb3JsZEFwcApgYGAKCkluc3RhbGwgdGhlIG51Z2V0IHBhY2thZ2U6CgpgYGBzaGVsbAo+IGRvdG5ldCBhZGQgcGFja2FnZSBGYWxjbwo+IGRvdG5ldCBhZGQgcGFja2FnZSBGYWxjby5PcGVuQXBpCmBgYAoKUmVtb3ZlIGFueSBgKi5mc2AgZmlsZXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LCBjcmVhdGUgYSBuZXcgZmlsZSBuYW1lZCBgUHJvZ3JhbS5mc2AgYW5kIHNldCB0aGUgY29udGVudHMgdG8gdGhlIGZvbGxvd2luZzoKCmBgYGZzaGFycApvcGVuIEZhbGNvCm9wZW4gRmFsY28uUm91dGluZwpvcGVuIE1pY3Jvc29mdC5Bc3BOZXRDb3JlLkJ1aWxkZXIKCmxldCBibGRyID0gV2ViQXBwbGljYXRpb24uQ3JlYXRlQnVpbGRlcigpCmxldCB3YXBwID0gYmxkci5CdWlsZCgpCgpsZXQgZW5kcG9pbnRzID0KICAgIFsKICAgICAgICBnZXQgIi8iIChSZXNwb25zZS5vZlBsYWluVGV4dCAiSGVsbG8gV29ybGQhIikKICAgIF0KCndhcHAuVXNlUm91dGluZygpCiAgICAuVXNlRmFsY28oZW5kcG9pbnRzKQogICAgLlJ1bigpCmBgYAoKTm93LCBsZXQncyBpbmNvcnBvcmF0ZSBPcGVuQVBJIGRvY3VtZW50YXRpb24gaW50byBvdXIgRmFsY28gYXBwbGljYXRpb24uIFVwZGF0ZSB0aGUgYFByb2dyYW0uZnNgIGZpbGUgdG8gdGhlIGZvbGxvd2luZzoKCmBgYGZzaGFycAovLyAuLgoKbGV0IGVuZHBvaW50cyA9CiAgICBbCiAgICAgICAgZ2V0ICIvIiAoUmVzcG9uc2Uub2ZQbGFpblRleHQgIkhlbGxvIFdvcmxkISIpCiAgICAgICAgICAgIHw+IE9wZW5BcGkubmFtZSAiSGVsbG9Xb3JsZCIKICAgICAgICAgICAgfD4gT3BlbkFwaS5zdW1tYXJ5ICJUaGlzIGlzIGEgc3VtbWFyeSIKICAgICAgICAgICAgfD4gT3BlbkFwaS5kZXNjcmlwdGlvbiAiVGhpcyBpcyBhIHRlc3QgZGVzY3JpcHRpb24sIHdoaWNoIGlzIHRoZSBsb25nIGZvcm0gb2YgdGhlIHN1bW1hcnkuIgogICAgICAgICAgICB8PiBPcGVuQXBpLnJldHVyblR5cGUgdHlwZW9mPHN0cmluZz4KICAgIF0KCi8vIC4uCmBgYAoKV2hpY2ggcHJvZHVjZXMgdGhlIGZvbGxvd2luZyBPcGVuQVBJIGRvY3VtZW50YXRpb246CgpgYGBqc29uCnsKICAib3BlbmFwaSI6ICJ4LngueCIsCiAgImluZm8iOiB7CiAgICAidGl0bGUiOiAiSGVsbG9Xb3JsZCIsCiAgICAidmVyc2lvbiI6ICIxLjAiCiAgfSwKICAicGF0aHMiOiB7CiAgICAiLyI6IHsKICAgICAgImdldCI6IHsKICAgICAgICAidGFncyI6IFsKICAgICAgICAgICJIZWxsb1dvcmxkIgogICAgICAgIF0sCiAgICAgICAgInN1bW1hcnkiOiAiVGhpcyBpcyBhIHN1bW1hcnkiLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIGEgdGVzdCBkZXNjcmlwdGlvbiwgd2hpY2ggaXMgdGhlIGxvbmcgZm9ybSBvZiB0aGUgc3VtbWFyeSIsCiAgICAgICAgIm9wZXJhdGlvbklkIjogIkhlbGxvV29ybGQiLAogICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiT0siLAogICAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgICAidGV4dC9wbGFpbiI6IHsKICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJjb21wb25lbnRzIjogeyB9Cn0KYGBgCgojIyBTcGVjcwoKIyMjIE5hbWUgKE9wZXJhdGlvbiBJRCkKCmBgYGZzaGFycApvcGVuIEZhbGNvCm9wZW4gRmFsY28uT3BlbkFwaQpvcGVuIEZhbGNvLlJvdXRpbmcKCmxldCBlbmRwb2ludHMgPQogICAgWwogICAgICAgIGdldCAiLyIgKFJlc3BvbnNlLm9mUGxhaW5UZXh0ICJIZWxsbyBXb3JsZCEiKQogICAgICAgICAgICB8PiBPcGVuQXBpLm5hbWUgIkhlbGxvV29ybGQiCiAgICBdCmBgYAoKIyMjIFN1bW1hcnkKCmBgYGZzaGFycApvcGVuIEZhbGNvCm9wZW4gRmFsY28uT3BlbkFwaQpvcGVuIEZhbGNvLlJvdXRpbmcKCmxldCBlbmRwb2ludHMgPQogICAgWwogICAgICAgIGdldCAiLyIgKFJlc3BvbnNlLm9mUGxhaW5UZXh0ICJIZWxsbyBXb3JsZCEiKQogICAgICAgICAgICB8PiBPcGVuQXBpLnN1bW1hcnkgIlRoaXMgaXMgYSBzdW1tYXJ5IgogICAgXQpgYGAKCiMjIyBEZXNjcmlwdGlvbgoKYGBgZnNoYXJwCm9wZW4gRmFsY28Kb3BlbiBGYWxjby5PcGVuQXBpCm9wZW4gRmFsY28uUm91dGluZwoKbGV0IGVuZHBvaW50cyA9CiAgICBbCiAgICAgICAgZ2V0ICIvIiAoUmVzcG9uc2Uub2ZQbGFpblRleHQgIkhlbGxvIFdvcmxkISIpCiAgICAgICAgICAgIHw+IE9wZW5BcGkuZGVzY3JpcHRpb24gIlRoaXMgaXMgYSBkZXNjcmlwdGlvbiIKICAgIF0KYGBgCgojIyMgUmV0dXJuIFR5cGUKCmBgYGZzaGFycApvcGVuIEZhbGNvCm9wZW4gRmFsY28uT3BlbkFwaQpvcGVuIEZhbGNvLlJvdXRpbmcKCmxldCBlbmRwb2ludHMgPQogICAgWwogICAgICAgIGdldCAiLyIgKFJlc3BvbnNlLm9mUGxhaW5UZXh0ICJIZWxsbyBXb3JsZCEiKQogICAgICAgICAgICB8PiBPcGVuQXBpLnJldHVybnMgdHlwZW9mPHN0cmluZz4KICAgICAgICAgICAgLy8gb3IsCiAgICAgICAgICAgIC8vIHw+IE9wZW5BcGkucmV0dXJucyB7IFJldHVybiA9IHR5cGVvZjxzdHJpbmc+OyBDb250ZW50VHlwZSA9IFsidGV4dC9wbGFpbiJdOyBTdGF0dXMgPSAyMDAgfQogICAgXQpgYGAKCiMjIyBSb3V0ZSBQYXJhbWV0ZXJzCgpgYGBmc2hhcnAKb3BlbiBGYWxjbwpvcGVuIEZhbGNvLk9wZW5BcGkKb3BlbiBGYWxjby5Sb3V0aW5nCgpsZXQgZW5kcG9pbnRzID0KICAgIFsKICAgICAgICBtYXBHZXQgIi9oZWxsby97bmFtZT99IgogICAgICAgICAgICAoZnVuIHJvdXRlIC0+IHJvdXRlP25hbWUuQXNTdHJpbmcoIndvcmxkIikpCiAgICAgICAgICAgIFJlc3BvbnNlLm9mUGxhaW5UZXh0CiAgICAgICAgICAgIHw+IE9wZW5BcGkucm91dGUgWwogICAgICAgICAgICAgICAgeyBUeXBlID0gdHlwZW9mPHN0cmluZz47IE5hbWUgPSAibmFtZSI7IFJlcXVpcmVkID0gZmFsc2UgfSBdCiAgICBdCmBgYAoKIyMjIFF1ZXJ5IFBhcmFtZXRlcnMKCmBgYGZzaGFycApvcGVuIEZhbGNvCm9wZW4gRmFsY28uT3BlbkFwaQpvcGVuIEZhbGNvLlJvdXRpbmcKCmxldCBlbmRwb2ludHMgPQogICAgWwogICAgICAgIG1hcEdldCAiL2hlbGxvIgogICAgICAgICAgICAoZnVuIHJvdXRlIC0+CiAgICAgICAgICAgICAgICBsZXQgYWdlID0gcm91dGU/YWdlLkFzSW50KDApCiAgICAgICAgICAgICAgICAkIkhlbGxvIHRoZXJlLCB5b3VyIGFyZSB7YWdlfSB5ZWFycyBvbGQuIikKICAgICAgICAgICAgUmVzcG9uc2Uub2ZQbGFpblRleHQKICAgICAgICAgICAgfD4gT3BlbkFwaS5yb3V0ZSBbCiAgICAgICAgICAgICAgICB7IFR5cGUgPSB0eXBlb2Y8aW50PjsgTmFtZSA9ICJhZ2UiOyBSZXF1aXJlZCA9IGZhbHNlIH0gXQogICAgXQpgYGAKCiMjIyBIZWFkZXIgUGFyYW1ldGVycwoKYGBgZnNoYXJwCm9wZW4gRmFsY28Kb3BlbiBGYWxjby5PcGVuQXBpCm9wZW4gRmFsY28uUm91dGluZwoKbGV0IGVuZHBvaW50cyA9CiAgICBbCiAgICAgICAgZ2V0ICIvIgogICAgICAgICAgICAoZnVuIGN0eCAtPgogICAgICAgICAgICAgICAgbGV0IGhlYWRlcnMgPSBSZXF1ZXN0LmdldEhlYWRlcnMgY3R4CiAgICAgICAgICAgICAgICBsZXQgdmVyc2lvbklkID0gaGVhZGVycy5HZXRTdHJpbmcgIlgtVmVyc2lvbi1JRCIKICAgICAgICAgICAgICAgICQiSGVsbG8sIHlvdSBhcmUgdXNpbmcgdmVyc2lvbiB7dmVyc2lvbklkfSIpCiAgICAgICAgICAgIHw+IE9wZW5BcGkuaGVhZGVyIFsKICAgICAgICAgICAgICAgIHsgVHlwZSA9IHR5cGVvZjxzdHJpbmc+OyBOYW1lID0gIlgtVmVyc2lvbi1JRCI7IFJlcXVpcmVkID0gdHJ1ZSB9IF0KICAgIF0KYGBgCgojIyMgVGFncwoKYGBgZnNoYXJwCm9wZW4gRmFsY28Kb3BlbiBGYWxjby5PcGVuQXBpCm9wZW4gRmFsY28uUm91dGluZwoKbGV0IGVuZHBvaW50cyA9CiAgICBbCiAgICAgICAgZ2V0ICIvIiAoUmVzcG9uc2Uub2ZQbGFpblRleHQgIkhlbGxvIFdvcmxkISIpCiAgICAgICAgICAgIHw+IE9wZW5BcGkudGFncyBbCiAgICAgICAgICAgICAgICAidGFnMSIKICAgICAgICAgICAgICAgICJ0YWcyIiBdCiAgICBdCmBgYAoKIyMgRmluZCBhIGJ1Zz8KClRoZXJlJ3MgYW4gW2lzc3VlXShodHRwczovL2dpdGh1Yi5jb20vRmFsY29GcmFtZXdvcmsvRmFsY28uT3BlbkFwaS9pc3N1ZXMpIGZvciB0aGF0LgoKIyMgTGljZW5zZQoKTGljZW5zZWQgdW5kZXIgW0FwYWNoZSBMaWNlbnNlIDIuMF0oaHR0cHM6Ly9naXRodWIuY29tL0ZhbGNvRnJhbWV3b3JrL0ZhbGNvLk9wZW5BcGkvYmxvYi9tYXN0ZXIvTElDRU5TRSkuCg== readmeEtag: '"9f9887dfe1cbf6d935809b2462a996dd630dabcf"' readmeLastModified: Wed, 17 Sep 2025 12:17:38 GMT repositoryId: 874218513 description: OpenAPI integration for Falco. created: '2024-10-17T12:58:45Z' updated: '2025-12-25T09:29:18Z' language: F# archived: false stars: 11 watchers: 2 forks: 1 owner: falcoframework logo: https://avatars.githubusercontent.com/u/204376955?v=4 license: Apache-2.0 repoEtag: '"3d06691daad21bb1a3935e5f1de75c9e5d0e3ed21ebfdf81a281bb58b660ac73"' repoLastModified: Thu, 25 Dec 2025 09:29:18 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/pimbrouwers/falco.openapi - source: openapi3 tags repository: https://github.com/gamefabric/openapi v3: true id: 22de0ad83c5048756bcfefbc075ec4f6 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNwZWNpZmljYXRpb24gR2VuZXJhdG9yCgpgb3BlbmFwaWAgcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIGdlbmVyYXRpbmcgT3BlbkFQSSB2MyBzcGVjaWZpY2F0aW9ucywgdXNpbmcgYSBjaGkgbXV4LCBmcm9tIGNvZGUuIEl0IGF0dGFjaGVzIGFzIG9uZSBvcgptb3JlIG1pZGRsZXdhcmUgdG8gZGVzY3JpYmUgZWFjaCByb3V0ZSwgcmVtb3ZpbmcgaXRzZWxmIGF0IHJ1bnRpbWUgdG8gaGF2ZSBubyBwZXJmb3JtYW5jZSBpbXBhY3QuCgojIyBVc2FnZQoKIyMjIFN0cnVjdCBHZW5lcmF0b3IKCmBvYXBpLWdlbmAgaXMgYSBzdHJ1Y3QgZnVuY3Rpb24gZ2VuZXJhdG9yIHVzZWQgdG8gY3JlYXRlIGRvY3VtZW50YXRpb24gYW5kIGF0dHJpdWJ1dGVzIGZyb20gc3RydWN0IGZpZWxkIGNvbW1lbnRzLgoKQW55IHN0cnVjdCB3aXRoIHRoZSBkaXJlY3RpdmUgYG9wZW5hcGk6Z2VuYCB3aWxsIGhhdmUgYSBkb2N1bWVudGF0aW9uIGZ1bmN0aW9uIGdlbmVyYXRlZC4KCiMjIyMgSW5zdGFsbAoKYGBgc2hlbGwKJCBnbyBpbnN0YWxsIGdpdGh1Yi5jb20vZ2FtZWZhYnJpYy9vcGVuYXBpL2NtZC9vYXBpLWdlbkA8dmVyc2lvbj4KYGBgCgpBIHNpbXBsZSB3YXkgdG8ga2VlcCB0aGUgZ2VuZXJhdGlvbiB1cC10by1kYXRlIGlzIHRvIHVzZSBHbydzIGdlbmVyYXRpb24gZnJhbWV3b3JrIG9uIGVhY2ggcGFja2FnZSB0aGF0IG5lZWRzIGRvY3VtZW50YXRpb24gZnVuY3Rpb25zLgoKYGBgZ28KLy9nbzpnZW5lcmF0ZSBvYXBpLWdlbgpgYGAKClRoZW4gcnVuOgoKYGBgc2hlbGwKZ28gZ2VuZXJhdGUgLi8uLi4KYGBgCgojIyMjIEV4YW1wbGUKClJ1bm5pbmcgYG9hcGktZ2VuYCBvbiB0aGUgZm9sbG93aW5nIHBhY2thZ2U6CgpgYGBnbwpwYWNrYWdlIHNvbWVwYWNrYWdlCgovLyBUZXN0T2JqZWN0IGlzIGEgdGVzdCBvYmplY3QuCi8vCi8vb3BlbmFwaTpkb2NzCnR5cGUgVGVzdE9iamVjdCBzdHJ1Y3QgewoJLy8gQSBpcyBhbiBleGFtcGxlIGZpZWxkLgoJQSBzdHJpbmcgYGpzb246ImEiYAoKCS8vIEIgaXMgYW5vdGhlciBleGFtcGxlIGZpZWxkLgoJLy8KCS8vb3BlbmFwaTpyZXF1aXJlZAoJLy9vcGVuYXBpOmZvcm1hdD1pcHY0CglCIHN0cmluZwp9CmBgYAoKV2lsbCBwcm9kdWNlIGEgZG9jdW1lbnRhdGlvbiBmaWxlIGB6el9nZW5lcmF0ZWQuZG9jcy5nb2Agd2l0aCB0aGUgY29udGVudDoKCmBgYGdvCnBhY2thZ2Ugc29tZXBhY2thZ2UKCi8vIENvZGUgZ2VuZXJhdGVkIGJ5IG9hcGktZG9jZ2VuLiBETyBOT1QgRURJVC4KCi8vIERvY3MgcmV0dXJucyBhIHNldCBvZiBwcm9wZXJ0eSBkZXNjcmlwdGlvbnMgcGVyIHByb3BlcnR5LgpmdW5jIChUZXN0T2JqZWN0KSBEb2NzKCkgbWFwW3N0cmluZ11zdHJpbmcgewoJcmV0dXJuIG1hcFtzdHJpbmddc3RyaW5newoJCSJCIjogIkIgaXMgYW5vdGhlciBleGFtcGxlIGZpZWxkLiIsCgkJImEiOiAiQSBpcyBhbiBleGFtcGxlIGZpZWxkLiIsCgl9Cn0KCi8vIEF0dHJpYnV0ZXMgcmV0dXJucyBhIHNldCBvZiBwcm9wZXJ0eSBhdHRyaWJ1dGVzIHBlciBwcm9wZXJ0eS4KZnVuYyAoVGVzdE9iamVjdCkgQXR0cmlidXRlcygpIG1hcFtzdHJpbmddc3RyaW5nIHsKCXJldHVybiBtYXBbc3RyaW5nXXN0cmluZ3sKCQkiQiI6ICJyZXF1aXJlZCIsCgl9Cn0KCi8vIEZvcm1hdHMgcmV0dXJucyBhIHNldCBvZiBwcm9wZXJ0eSBmb3JtYXRzIHBlciBwcm9wZXJ0eS4KZnVuYyAoVGVzdE9iamVjdCkgRm9ybWF0cygpIG1hcFtzdHJpbmddc3RyaW5nIHsKCXJldHVybiBtYXBbc3RyaW5nXXN0cmluZ3sKCQkiQiI6ICJpcHY0IiwKCX0KfQpgYGAKClRoZSBmb2xsb3dpbmcgZGlyZWN0aXZlcyBjYW4gYmUgdXNlZCBvbiBzdHJ1Y3QgZmllbGRzOgoKKiBgb3BlbmFwaTpyZXF1aXJlZGA6IE1hcmtzIHRoZSBmaWVsZCBhcyByZXF1aXJlZC4KKiBgb3BlbmFwaTpyZWFkb25seWA6IE1hcmtzIHRoZSBmaWVsZCBhcyByZWFkIG9ubHkuCiogYG9wZW5hcGk6Zm9ybWF0PTxGT1JNQVQ+YDogU2V0cyB0aGUgZm9ybWF0IG9mIHRoZSBmaWVsZCwgZS5nLiAiZGF0ZSIgb3IgImlwdjQiLiBTZWUgW2xpc3Qgb2YgdmFsaWQgZm9ybWF0c10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9yZWdpc3RyeS9mb3JtYXQvKS4KKiBgb3BlbmFwaTplbnVtPTEsMiwzYDogU2V0cyB0aGUgYWxsb3dlZCBlbnVtIHZhbHVlcyBmb3IgdGhpcyBmaWVsZC4KCiMjIyMgTW9yZSBPcHRpb25zCgpgb2FwaS1nZW5gIGNvbW1hbmQgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4KCmBgYHNoZWxsCk9wdGlvbnM6CiAgLWFsbAogICAgCVBhcnNlIGFsbCBzdHJ1Y3RzLgogIC1wYXRoIHN0cmluZwogICAgCVRoZSBwYXRoIHRvIHBhcnNlIGZvciBkb2N1bWVudGF0aW9uLiBEZWZhdWx0cyB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KICAtcQlTdXBwcmVzcyBnZW5lcmF0aW9uIG91dHB1dC4KICAtdGFnIHN0cmluZwogICAgCVRoZSB0YWcgdG8gb3ZlcnJpZGUgdGhlIGRvY3VtZW50YXRpb24ga2V5LiAoZGVmYXVsdCAianNvbiIpCmBgYAo= readmeEtag: '"b7d9bb15073e3c5f94acb710eb960ad71383dced"' readmeLastModified: Tue, 01 Jul 2025 07:11:16 GMT repositoryId: 865821942 description: >- openapi provides a framework for generating OpenAPI v3 specifications, using a chi mux, from code. created: '2024-10-01T07:35:24Z' updated: '2026-01-23T10:24:27Z' language: Go archived: false stars: 4 watchers: 3 forks: 3 owner: GameFabric logo: https://avatars.githubusercontent.com/u/179205010?v=4 license: MIT repoEtag: '"e7b1af785ce1b532bab029e87df332a1183f7db6a5a6d43335edfad8afcc66e0"' repoLastModified: Fri, 23 Jan 2026 10:24:27 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/alma-cfao/pyapifirstdemo v3: true repositoryMetadata: base64Readme: >- IyBQeUFwaUZpcnN0RGVtbwpUaGlzIHByb2plY3QgY29udGFpbnMgZGVtbyBjb2RlIG9mIDEyLzEyLzIwMTkgcHl0aG9uIG1lZXR1cCBpbiBncmVub2JsZSBjYWxsZWQ6CgpUb29scyB0byB3cml0ZSBjbGVhbiBtaWNyb3NlcnZpY2VzIGluIHB5dGhvbiB3aXRob3V0IGhlYWRhY2hlcy4gKGRlbW8gcHJvamVjdCkKCgpZb3UgY2FuIGZpbmQgc2xpZGVzIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vQWxtYS1DRkFPL1B5QXBpRmlyc3REZW1vL2Jsb2IvbWFzdGVyL01lZXR1cCUyMFB5dGhvbiUyMG1pY3Jvc2VydmljZXMlMjBkZWNlbWJyZSUyMDIwMTkucGRmKS4KClRoaXMgcHJvamVjdCBpcyBhIGRlbW8gcHJvamVjdCB5b3UgY2FuIHVzZSBhcyBtaWNyb3NlcnZpY2UgcHJvamVjdCB0ZW1wbGF0ZS4KSXQgY29uYmluZXMgZGphbmdvIE9STSBhbmQgY29ubmV4aW9uIChmbGFzaykgZnJhbWV3b3JrIHRvZ2V0aGVyLgpZb3UgY2FuIGZpbmQgYmVsb3cgYWxsIHRoZSB0aGluZ3MgeW91IGNhbiBkbyB3aXRoIHRoaXMgcHJvamVjdCB0ZW1wbGF0ZS4KCiMjIFByb2plY3Qgc2NydWN0dXJlCiAgICAuCiAgICDilJzilIDilIAgYXBwcwogICAg4pSCICAg4pSc4pSA4pSAIGJvaWxlcnBsYWNlCiAgICDilIIgICDilIIgICDilJzilIDilIAgbWlncmF0aW9ucwogICAg4pSCICAg4pSc4pSA4pSAIGRiCiAgICDilIIgICDilIIgICDilJzilIDilIAgbWlncmF0aW9ucwogICAg4pSc4pSA4pSAIGNvZGVnZW5fdGVtcGxhdGUKICAgIOKUnOKUgOKUgCBkb2NzCiAgICDilJzilIDilIAgbG9jYWxlCiAgICDilJzilIDilIAgcmVxdWlyZW1lbnRzCiAgICDilJzilIDilIAgc2NyaXB0cwogICAg4pSc4pSA4pSAIHNldHRpbmdzCiAgICDilJTilIDilIAgc3dhZ2dlcl9zZXJ2ZXIKICAgICAgICDilJzilIDilIAgY29udHJvbGxlcnMKICAgICAgICDilJzilIDilIAgZnVuY3Rpb25zCiAgICAgICAg4pSc4pSA4pSAIG1vZGVscwogICAgICAgIOKUnOKUgOKUgCBvcGVuYXBpCiAgICAgICAg4pSc4pSA4pSAIHJlcG9zaXRvcmllcwogICAgICAgIOKUnOKUgOKUgCBzZXJpYWxpemVycwogICAgICAgIOKUnOKUgOKUgCBzdG9yaWVzCiAgICAgICAg4pSU4pSA4pSAIHRlc3RzCgoqKmFwcHMqKiBpcyBhIGRpcmVjdG9yeSBjb250YWluaW5nIG91ciBkamFuZ28gYXBwcwoKKiphcHBzL2JvaWxlcnBsYWNlKiogYSBkamFuZ28gYXBwIGNvbnRhaW5pbmcgb3VyIGN1c3RvbSB1c2VyIG1vZGVsCgoqKmFwcHMvZGIqKiBhcyB3ZSBhcmUgdXNpbmcgZGphbmdvIE9STSB3aXRoIGNvbm5leGlvbiB0aGlzIGFwcCBjb250YWlucyBhbGwgcHJvamVjdCByZWxhdGVkIGRiIG1vZGVscwoKKipjb2RlZ2VuX3RlbXBsYXRlKiogdGhlIHRlbXBsYXRlIHdlIGFyZSB1c2luZyBmb3IgY29kZSBnZW5lcmF0aW9uCgoqKmRvY3MqKiB0aGUgcGxhY2Ugd2hlcmUgb3VyIGFwaSBmaXJzdCBzcGVjaWZpY2F0aW9uIGlzCgoqKmxvY2FsZSoqIHRoZSBpMThuIHBvIGFuZCBtbyBmaWxlcyBmb2xkZXIKCioqcmVxdWlyZW1lbnRzKiogb3VyIHByb2plY3QgcHl0aG9uIHJlcXVpcmVtZW50cyBmaWxlcwoKKipzY3JpcHRzKiogdGhpcyBkaXJlY3RvcnkgY29udGFpbnMgY3Vyc3RvbSBzY3JpcHRzIGZvciBjb252ZW5pZW5jZQoKKipzd2FnZ2VyX3NlcnZlcioqIHRoZSByb290IGRpcmVjdG9yeSBvZiBjb25uZXhpb24gZnJhbWV3b3JrCgoqKnN3YWdnZXJfc2VydmVyL2NvbnRyb2xsZXJzKiogd2hlcmUgY29ubmV4aW9uIChmbGFzaykgY29udHJvbGxlciBiZWxvbmdzCgoqKnN3YWdnZXJfc2VydmVyL2Z1bmN0aW9ucyoqIFdoZXJlIGFsbCB1dGlscyBmdW5jdGlvbnMgYmVsb25ncwoKKipzd2FnZ2VyX3NlcnZlci9tb2RlbHMqKiBXaGVyZSBnZW5lcmF0ZWQgdmlldyBtb2RlbHMgKGFwaSByZWxhdGVkIG1vZGVscywgbm90IGRiIG1vZGVscykgYmVsb25ncwoKKipzd2FnZ2VyX3NlcnZlci9vcGVuYXBpKiogV2hlcmUgZ2VuZXJhdGVkIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiBiZWxvbmcgKHdpdGggdmFyaW91cyB0aGluZ3MgYWRkZWQgbGlrZSBvcGVyYXRpb25JZC4uLiBldGMuKQoKKipzd2FnZ2VyX3NlcnZlci9yZXBvc2l0b3JpZXMqKiBBIGxheWVyIGJldHdlZW4gZGphbmdvIG1vZGVscyBhbmQgb3VyIGJ1c2luZXNzIGNvZGUgdG8gaGVscCB1cyBzd2l0Y2hpbmcgZnJvbSBkamFuZ28gT1JNIHRvIGFueXRoaW5nIGVsc2UgbGF0ZXIuCgoqKnN3YWdnZXJfc2VydmVyL3NlcmlhbGl6ZXJzKiogVGhpcyBpcyBhIGNvbnZlbmllbnQgbGF5ZXIgdG8gZ2VuZXJhdGUgYSB2aWV3IG1vZGVsIGZyb20gYSBkamFuZ28gbW9kZWwgd2hlbiBmaWVsZHMgYXJlIHRoZSBzYW1lIGluIGJvdGggb2YgdGhlbS4KCioqc3dhZ2dlcl9zZXJ2ZXIvc3RvcmllcyoqIFdoZXJlIGJ1c2luZXNzIHRyYW5zYWN0aW9uIGJlbG9uZ3MgKHVzaW5nIGRyeS1weXRob24vc3RvcmllcyBodHRwczovL2dpdGh1Yi5jb20vZHJ5LXB5dGhvbi9zdG9yaWVzKQoKKipzd2FnZ2VyX3NlcnZlci90ZXN0cyoqIFdoZXJlIHRlc3RzIGFuZCB0ZXN0IGZyYW1ld29yayBmaXh0dXJlcyBjb25maWd1cmF0aW9uIGJlbG9uZ3MKCkFsbCBvZiB0aG9zZSBsYXllcnMgYXJlIGluamVjdGVkIGluc2lkZSBhICJjb250YWluZXIiIGNsYXNzIHVzaW5nIGRlcGVuZGVuY2llcyBweXRob24gbGlicmFyeSAoaHR0cHM6Ly9naXRodWIuY29tL2RyeS1weXRob24vZGVwZW5kZW5jaWVzKQoKVGhvc2UgY29udGFpbmVycyBhcmUgZGVmaW5lZCBpbnNpZGUgdGhlIGltcGxlbWVudGVkLnB5IGZpbGUuClRoZW4sIHRob3NlIGNvbnRhaW5lciBjbGFzc2VzIGNhbiBiZSB1c2VkIGluc2lkZSBjb250cm9sbGVycy4KCiMjIFdoYXQgaXMgaW5jbHVkZWQgPwoqIEZ1bGwgZmVhdHVyZXMgcHl0aG9uIHRlc3QgZnJhbWV3b3JrICh3aXRoIGNvdmVyYWdlLCBodG1sIHJlcG9ydCBhbmQgdGVzdGluZyBvbiB2YXJpb3VzIHB5dGhvbiB2ZXJpb25zKQoqIExpbnQgdG9vbHMgKGZsYWtlOCBhbmQgaXNvcnQpCiogUGVyZm9ybWFuY2UgYW5hbHlzaXMgdG9vbCAocHktc3B5IHJ1bm5pbmcgb24gdG9wIG9mIHRoZSB0ZXN0IGZyYW1ld29yaykKKiBpMThuCiogQ29kZSBkdXBsaWNhdGlvbiBhbmFseXNlcgoqIERlcGVuZGVuY3kgaW5qZWN0aW9uIGFuZCBidXNpbmVzcyB0cmFuc2FjdGlvbiB0aGUgYXdlc29tZSBkcnktcHl0aG9uJ3Mgc3RvcmllcyBhbmQgZGVwZW5kZW5jaWVzIHB5dGhvbiBsaWJyYXJpZXMKKiBTd2FnZ2VyIHVpCiogR2VuZXJhdGUgZGIgZXItZGlhZ3JhbQoqIE90aGVyIGNvbnZpbmllbnQgc2NyaXB0cy4uLgoKIyMgUmVxdWlyZW1lbnRzCiogeWFybgoqIHB5dGhvbjMuNisKKiBzcWxpdGUKKiBwZXcKKiBwbWQgKGh0dHBzOi8vcG1kLmdpdGh1Yi5pby8pCgojIyMgQmVmb3JlIGZpcnN0IHJ1biwgZXhlY3V0ZSB0aG9zZSBjb21tYW5kcwoqIENyZWF0ZSBuZXcgcHl0aG9uIHZpcnR1YWxlbnYgZm9yIHByb2plY3QgZGVwcwpgYGBiYXNoCnBldyBuZXcgLS1weXRob249cHl0aG9uMy43IG1lZXR1cDEyMTIxOQpgYGAKKiBJbnN0YWxsIHB5dGhvbiBkZXBlbmRlbmNpZXMgaW4gdmlydHVhbGVudgpgYGAKICAgIHBldyBpbiBtZWV0dXAxMjEyMTkgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzL3JlcXVpcmVtZW50cy50eHQKYGBgCiogSW5zdGFsbCBub2RlIGRlcGVuZGVuY2llcyAoZm9yIGNvZGVnZW0pCmBgYGJhc2gKeWFybgpgYGAKKiBNaWdyYXRlIGRhdGFiYXNlCmBgYGJhc2gKbnBtIHJ1biBkYjptaWdyYXRlCmBgYAoKIyMgVXNlIHRoaXMgcHJvamVjdCB3aXRob3V0IGp3dCBrZXkgZm9yIHRlc3QgcHVycG9zZQpJZiB5b3VyIGNvZGUgaXMgcnVubmluZyBpbiBkZWJ1ZyB3ZSBoYXZlIGltcGxlbWVudGVkIGZha2UgdXNlcnMgaW4gZmFrZV91c2VyX2lmX2Zha2Vfand0X3Rva2VuIGZ1bmN0aW9uIGluIHN3YWdnZXJfc2VydmVyL2Z1bmN0aW9ucy9hdXRoLnB5IGZpbGUuCgpFeGFtcGxlcyBvZiB0b2tlbiBwYXlsb2FkIGNhbiBiZSBmb3VuZCBpbnNpZGUgdGhpcyBtZXRob2QuCgpJbiBzd2FnZ2VyIHVpIG9yIHVzaW5nIGFuIGh0dHAgY2xpZW50IHRob3NlIHZhbHVlcyBjYW4gYmUgdXNlZCBhcyBmYWtlIHVzZXJzIDoKLSBzdXBlcl91c2VyCi0gc3RhZmZfdXNlcgotIHN0YW5kYXJkX3VzZXIKLSB1bnZlcmlmaWVkX3N0YW5kYXJkX3VzZXIKLSBibG9ja2VkX3N0YW5kYXJkX3VzZXIKCiMjIEhvdyB0by4uLiA/CgpBcyB5b3Ugd2lsbCBzZWUgdGhpcyBwcm9qZWN0IHVzZSBucG0gYXMgYSB0YXNrIHJ1bm5lciB0byBtYWtlIHZhcmlvdXMgdGFza3MgYXZhaWxhYmxlLgoKIyMjIFN0YXJ0IHNlcnZlcgpgYGBucG0gcnVuIGRldmBgYAoKIyMjIExpbnQgY29kZQpgYGBucG0gcnVuIGZsYWtlOGBgYApGaW5kIHBlcDggdmlvbGF0aW9ucyAmIG90aGVyIHRoaW5ncy4KCiMjIyBSZWZvcm1hdCBpbXBvcnRzIGF1dG9tYXRpY2FsbHkKYGBgbnBtIHJ1biBpc29ydGBgYAoKIyMjIEFkZCBweXRob24gY29kaW5nIHV0ZjggZXZlcnl3aGVyZSBpdCBpcyBtaXNzaW5nCmBgYG5wbSBydW4gZml4OmNvZGluZ2BgYAoKIyMjIEZpeCBlbmRsIGV2ZXJ5d2hlcmUgaXQgaXMgbmVlZGVkCmBgYG5wbSBydW4gZml4OmVuZGxgYGAKCiMjIyBGaW5kIGR1cGxpY2F0ZWQgY29kZQpgYGBucG0gcnVuIGNwZGBgYApOZWVkcyAkUE1EX0JJTiB0byBiZSBzZXQgY29ycmVjdGx5IChiaW4gZGlyZWN0b3J5IG9mIHBtZCB3aGVyZSBydW4uc2ggc2NyaXB0IGlzKS4KR2VuZXJhdGVzIHJlcG9ydCBjYWxsZWQgY3BkX3JlcG9ydC5odG1sCgojIyMgR2VuZXJhdGUgdmlldyBtb2RlbHMsIGR1bW15IGNvbnRyb2xsZXJzICYgc3BlYyB0byBiZSB1c2VkIHRvIHJ1biB0aGUgc2VydmVyICh0aGUgc2FtZSBzcGVjIGJ1dCB3aXRoIG9wZXJhdGlvbklkICYgdGhpbmdzIGxpa2UgdGhpcy4uLikKYGBgbnBtIHJ1biBnZW5lcmF0ZWBgYApUaGVuOgogIC0gQ29weSBnZW5lcmF0ZWQvc3dhZ2dlcl9zZXJ2ZXIvbW9kZWxzLyoucHkgdG8gc3dhZ2dlcl9zZXJ2ZXIvbW9kZWxzLwogIC0gQ29weSBuZXcgY29udHJvbGxlciBmdW5jdGlvbnMgdG8gdGhlIHJpZ2h0IGNvcnJlc3BvbmRpbmcgZmlsZQogIC0gRm9yZ2V0IGV2ZXJ5dGhpbmcgZWxzZS4gKGl0IGlzIG1vc3RseSB1c2VsZXNzKQoKUmVtYXJrOgogIFdlIGhhdmUgY3VzdG9taXplIHRoZSBjb2RlLWdlbmVyYXRpb24gdGVtcGxhdGUgdG8gd3JhcCBjb250cm9sbGVycyB3aXRoIGEgbG9naW5fcmVxdWlyZWQgd3JhcHBlci4KICBUaGlzIHdyYXBwZXIgZXh0cmFjdCB1c2VyIGluZm8gZnJvbSB0aGUgdG9rZW4gdG8gY3JlYXRlIGEgdXNlciBvYmplY3QKICB0byBiZSB1c2VkIGJ5IGRqYW5nbyBndWFyZGlhbiBvciBvdGhlciBkamFuZ28gYXBwcy4KCiMjIyBVc2Ugc3dhZ2dlciB1aQpHbyB0byAxMjcuMC4wLjE6NTAwMC92MS91aQoKIyMjIFJ1biB0ZXN0cwpgYGBucG0gcnVuIHRlc3RgYGAKV2lsbCBydW4gb25seSBsYXN0IGZhaWxlZCB0ZXN0IGJ5IGRlZmF1bHQuCgpgYGBucG0gcnVuIHRlc3Q6YWxsYGBgCldpbGwgcnVuIGFsbCBleGlzdGluZyB0ZXN0cyBmcm9tIHRlc3RzIGRpcmVjdG9yeSAoc3dhZ2dlcl9zZXJ2ZXIvdGVzdHMpCgpgYGBucG0gcnVuIHRlc3Q6dG94YGBgCldpbGwgcnVuIGFsbCB0ZXN0cyBvbiBweXRob24zLjYgYW5kIHB5dGhvbjMuNwoKYGBgbnBtIHJ1biB0ZXN0OmNkYmBgYAonY2RwJyBtZWFucyBjcmVhdGUgZGIuCldpbGwgcmUtY3JlYXRlIHRlc3QgZGIgYmVmb3JlIHJ1bm5pbmcgdGVzdHMuCgpgYGBucG0gcnVuIHRlc3Q6dnZgYGAKUnVuIHB5dGVzdCBpbiB2ZXJ5IHZlcmJvc2UgbW9kZS4KCmBgYG5wbSBydW4gdGVzdDp3aXRocHJvZmBgYApSdW4gcHl0ZXN0IHdpdGggcHktc3B5IHRvIGdlbmVyYXRlIGEgZmxhbWVncmFwaAoKYGBgbnBtIHJ1biB0ZXN0Om5vY292YGBgClJ1biBweXRlc3QgYW5kIGRvIG5vdCBnZW5lcmF0IGEgY292ZXJhZ2UgcmVwb3J0LgoKIyMjIEZpbmQgY292ZXJhZ2UgaW5mbwpBZnRlciBydW5uaW5nIGBucG0gcnVuIHRlc3Q6YWxsYCwgY292ZXJhZ2UgcmVwb3J0IGNhbiBiZSBmb3VuZCBpbiAqaHRtbGNvdiogZGlyZWN0b3J5IChmaXJlZm94IGluZGV4Lmh0bWwpLgoKIyMjIEV4dHJhY3QgaTE4biBzdHJpbmdzIGZyb20gY29kZQpgYGBucG0gcnVuIGkxOG46ZXh0cmFjdGBgYApFeHRyYWN0IHN0cmluZ3MgdG8gKmxvY2FsZSogZGlyZWN0b3J5LgoKIyMjIFRyYW5zbGF0ZSBzdHJpbmdzCk9wZW4gZGphbmdvLnBvIGZpbGVzIGZyb20gbG9jYWxlIGRpcmVjdG9yeSB3aXRoIHBvZWRpdCAoaHR0cHM6Ly9wb2VkaXQubmV0LykKCiMjIyBNYWtlIGRqYW5nbyBvciBmbGFzayB1c2luZyB0cmFuc2xhdGVkIHN0cmluZ3MKYGBgbnBtIHJ1biBpMThuOmJ1aWxkYGBgCkdlbmVyYXRlcyAqLm1vIGZpbGVzIHRvIGJlIHVzZWQgYnkgZGphbmdvIGZvciB0cmFuc2xhdGlvbnMuCgojIyMgR3JlbmVyYXRlIGRiIGVyLWRpYWdyYW0KYGBgbnBtIHJ1biBkYjplcmRpYWdyYW1gYGAKR2VuZXJhdGVzIGVyX2RpYWdyYW0ucG5nIGZpbGUuCgo= readmeEtag: '"a05856d353953a5f9d21ff4fe26118cd59b0b6aa"' readmeLastModified: Wed, 21 Apr 2021 18:41:49 GMT repositoryId: 227149750 description: >- Tools to write clean microservices in python without headaches. (demo project) created: '2019-12-10T15:07:35Z' updated: '2025-10-08T00:55:25Z' language: Python archived: true stars: 4 watchers: 0 forks: 0 owner: Alma-CFAO logo: https://avatars.githubusercontent.com/u/54944051?v=4 license: MIT repoEtag: '"856e4260d2a04e1b4612150cca182e309112ff0e252a986788d9f19b0430dff0"' repoLastModified: Wed, 08 Oct 2025 00:55:25 GMT foundInMaster: true category: Server Implementations id: b136a8f4c9ec91fb8287c2b81073bdc1 - source: openapi3 tags repository: https://github.com/medly/apifi v3: true repositoryMetadata: base64Readme: >- IyBBcGlmaSAKClNwZWMgZHJpdmVuIFJFU1QgQVBJcwoKIVtCdWlsZCB0aGUgRGlzdHJpYnV0aW9uXShodHRwczovL2dpdGh1Yi5jb20vbWVkbHkvYXBpZmkvd29ya2Zsb3dzL0J1aWxkJTIwdGhlJTIwRGlzdHJpYnV0aW9uL2JhZGdlLnN2ZykKCiMjIEluY2x1ZGUgaW4gZ3JhZGxlIHByb2plY3QKMVwuIEFkZCBqaXRwYWNrIHJlcG9zaXRvcnkgaW4gc2V0dGluZ3MuZ3JhZGxlOgpgYGAKcGx1Z2luTWFuYWdlbWVudCB7CiAgICByZXBvc2l0b3JpZXMgewogICAgICAgIGdyYWRsZVBsdWdpblBvcnRhbCgpCiAgICAgICAgbWF2ZW4gewogICAgICAgICAgICB1cmwgJ2h0dHBzOi8vaml0cGFjay5pbycKICAgICAgICAgICAgY29udGVudCB7CiAgICAgICAgICAgICAgICBpbmNsdWRlR3JvdXAgJ2NvbS5tZWRseS5hcGlmaScKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJlc29sdXRpb25TdHJhdGVneSB7CiAgICAgICAgZWFjaFBsdWdpbiB7CiAgICAgICAgICAgIGlmIChyZXF1ZXN0ZWQuaWQubmFtZXNwYWNlID09ICdjb20ubWVkbHknKSB7CiAgICAgICAgICAgICAgICB1c2VNb2R1bGUoIiR7cmVxdWVzdGVkLmlkfToke3JlcXVlc3RlZC5pZH0uZ3JhZGxlLnBsdWdpbjphYjgxNmQxYTg0IikKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpgYGAKMlwuIEFkZCBwbHVnaW4gaW4gYnVpbGQuZ3JhZGxlOgpgYGAKcGx1Z2lucyB7CiAgICAuLi4uCiAgICBpZCAiY29tLm1lZGx5LmFwaWZpIgogICAgLi4uCn0KYGBgCgozXC4gQWRkIGdyYWRsZSB0YXNrIHRvIGdlbmVyYXRlIGNvZGU6CmBgYAphcGlmaSB7CiAgICBvcGVuQXBpU3BlYyBmaWxlKCJwYXRoL3RvL3NwZWMtZmlsZSIpCiAgICBnZW5lcmF0ZWRTb3VyY2VEaXIgZmlsZSgicGF0aC90by9nZW4iKQogICAgYmFzZVBhY2thZ2VOYW1lICJjb20ueW91ci5wYWNrYWdlLm5hbWUiCn0KYGBgCgojIyBHZW5lcmF0ZSBBUElzCgpgYGAKLi9ncmFkbGV3IGFwaWZpCmBgYA== readmeEtag: '"46f042d44f4f7166b67848685ee99b7ad3f4735f"' readmeLastModified: Fri, 18 Sep 2020 12:25:39 GMT repositoryId: 259544047 description: Open API spec driven HTTP APIs created: '2020-04-28T05:50:27Z' updated: '2021-10-01T11:34:56Z' language: Kotlin archived: false stars: 4 watchers: 3 forks: 5 owner: medly logo: https://avatars.githubusercontent.com/u/54950577?v=4 repoEtag: '"2aa31c588ffd4204be01a6e0feeb896aedc7232863a9a7a6852c410e7348335d"' repoLastModified: Fri, 01 Oct 2021 11:34:56 GMT foundInMaster: true category: SDK id: 5f1612e5badbd0eab91bebe51e68ae1b - source: openapi3 tags repository: https://github.com/fazzani/synker v3: true repositoryMetadata: base64Readme: >- IyAhW1N5bmtlciBBUEldKGxvZ28ucG5nKQoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2Rldi5henVyZS5jb20vaGVuaWZhenphbmkvU3lua2VyQVBJL19hcGlzL2J1aWxkL3N0YXR1cy9TeW5rZXJBUEktQ0k/YnJhbmNoTmFtZT1tYXN0ZXIpXShodHRwczovL2Rldi5henVyZS5jb20vaGVuaWZhenphbmkvU3lua2VyQVBJL19idWlsZC9sYXRlc3Q/ZGVmaW5pdGlvbklkPTEyJmJyYW5jaE5hbWU9bWFzdGVyKQpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZGV2LmF6dXJlLmNvbS9oZW5pZmF6emFuaS9TeW5rZXJBUEkvX2FwaXMvYnVpbGQvc3RhdHVzL1N5bmtlckFQSS1Eb2NrZXIlMjBDST9icmFuY2hOYW1lPW1hc3RlcildKGh0dHBzOi8vZGV2LmF6dXJlLmNvbS9oZW5pZmF6emFuaS9TeW5rZXJBUEkvX2J1aWxkL2xhdGVzdD9kZWZpbml0aW9uSWQ9MTQmYnJhbmNoTmFtZT1tYXN0ZXIpCgpbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1GYXp6YW5pX1N5bmtlciZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1GYXp6YW5pX1N5bmtlcikKWyFbQ292ZXJhZ2VdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PUZhenphbmlfU3lua2VyJm1ldHJpYz1jb3ZlcmFnZSldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9RmF6emFuaV9TeW5rZXIpClshW1JlbGlhYmlsaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9RmF6emFuaV9TeW5rZXImbWV0cmljPXJlbGlhYmlsaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9RmF6emFuaV9TeW5rZXIpClshW1Z1bG5lcmFiaWxpdGllc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9RmF6emFuaV9TeW5rZXImbWV0cmljPXZ1bG5lcmFiaWxpdGllcyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9RmF6emFuaV9TeW5rZXIpClshW0NvZGUgU21lbGxzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1GYXp6YW5pX1N5bmtlciZtZXRyaWM9Y29kZV9zbWVsbHMpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPUZhenphbmlfU3lua2VyKQoKIyMgQXJjaGl0ZWN0dXJlIChDbGVhbiBhcmNoaXRlY3R1cmUpCgpJbnNwaXJlZCBmcm9tIFtOb3J0aHdpbmRUcmFkZXJzXVtOb3J0aHdpbmRUcmFkZXJzXQpbU2xpZGVzXShodHRwczovL2dpdGh1Yi5jb20vRmF6emFuaS9TeW5rZXIvcmF3L21hc3Rlci9kb2NzL1NsaWRlcy5wZGYpCgojIyMgU2NoZW1hCgohW2FyY2hpX2NsZWFuX2RpYWdyYW1dKGh0dHBzOi8vZnVsbHN0YWNrbWFyay5jb20vaW1nL3Bvc3RzLzExL2NsZWFuLWFyY2hpdGVjdHVyZS1jaXJjbGUtZGlhZ3JhbS5qcGcpCgojIyMgTWljcm8tc2VydmljZXMgc2V0CgotIFBsYXlsaXN0cyBzZXJ2aWNlCiAgLSBDUlVECiAgLSBTeW5jaHJvIChieSBwbGF5bGlzdCAmJiBieSBncm91cCkKICAtIERlY29yYXRvcnMKICAgIC0gQ2xlYW5pbmcgbmFtZXMKICAgIC0gQXV0byBncm91cGluZwogICAgLSBTaGlmdCB0aW1lCiAgICAtIEN1c3RvbSAmJiBkeW5hbWljCi0gRGF0YVNvdXJjZXMKLSBFUEcgc2VydmljZQotIFBpY29ucyBzZXJ2aWNlCi0gQXV0aGVudGljYXRpb24gU2VydmljZSAoSURQKQotIE5vdGlmaWNhdGlvbiBTZXJ2aWNlCgojIyBIb3cgaXQgd29ya3MKClRoaXMgaXMgdXNpbmcgQVNQLk5FVCBDb3JlIHdpdGg6CgotIEVudGl0eSBGcmFtZXdvcmsgQ29yZSBvbiBQb3N0Z3JlU1FMIGFuZCBJbk1lbW9yeSBmb3IgdGVzdGluZwotIE9QRU4gQVBJIDMgd2l0aCBbTlN3YWddW25zd2FnX3JlcG9dCi0gRXZlbnQgc291cmNpbmcKLSBbTWVkaWF0Ul0oaHR0cHM6Ly9naXRodWIuY29tL2pib2dhcmQvTWVkaWF0Ui93aWtpKQotIFRERDoKICAtIFh1bml0LCAKICAtIFthbmdsZXNoYXJwXVthbmdsZXNoYXJwXSAKICAtIFtNb3FdW21vcV9yZXBvXQogIC0gZTJlIHdpdGggW0N5cHJlc3NdW2N5cHJlc3NdCi0gUHJvbWV0aGV1cyBtZXRyaWNzCi0gW0JlYXQgUHVsc2VdW2JlYXRfcHVsc2VfZ2l0aHViXSBmb3IgbGl2ZW5lc3MgYW5kIHJlYWRpbmVzcyBjaGVjawogIC0gQmVhdFB1bHNlLklkU3ZyCiAgLSBCZWF0UHVsc2UuRWxhc3RpY3NlYXJjaAogIC0gQmVhdFB1bHNlLk5wZ3NxbAotIFNlcmlsb2cgZm9yIGxvZ2dpbmcKLSBbQXV0b01hcHBlcl0oaHR0cHM6Ly9hdXRvbWFwcGVyLm9yZy8pCi0gW0ZsdWVudHZhbGlkYXRpb25dKGh0dHBzOi8vZmx1ZW50dmFsaWRhdGlvbi5uZXQvc3RhcnQpCi0gW0NvbW1hbmQgQ1FSUyB2YWxpZGF0aW9uXShodHRwczovL3d3dy5saW5rZWRpbi5jb20vcHVsc2UvdmFsaWRhdGlvbi1kZGQtY3Fycy1sdWNhLWJyaWd1Z2xpYS8pCi0gW0RERCBBZ2dyZWdhdGUgcGF0dGVybl0oaHR0cHM6Ly9tYXJ0aW5mb3dsZXIuY29tL2JsaWtpL0RERF9BZ2dyZWdhdGUuaHRtbCkKCiMjIENsZWFuIEFyY2hpdGVjdHVyZQoKIyMjIERlc2lnbmluZyBEb21haW4gTW9kZWwgTGF5ZXIKCjEuICoqUGVyc2lzdGVuY2UgSWdub3JhbmNlIChQSSkgcHJpbmNpcGxlKiogc2F5cyB0aGF0IHRoZSBEb21haW4gTW9kZWwgc2hvdWxkIGJlIGlnbm9yYW50IG9mIGhvdyBpdHMgZGF0YSBpcyBzYXZlZCBvciByZXRyaWV2ZWQ6CiAgIC0gTm8gZGF0YSBhY2Nlc3MgY29kZQogICAtIE5vIGRhdGEgYW5ub3RhdGlvbnMgZm9yIG91ciBlbnRpdGllcwogICAtIE5vIGluaGVyaXRhbmNlIGZyb20gYW55IGZyYW1ld29yayBjbGFzc2VzLCBlbnRpdGllcyBzaG91bGQgYmUgUGxhaW4gT2xkIENMUiBPYmplY3QKMi4gUHV0dGluZyBhbGwgZGF0YSBhY2Nlc3MgY29kZSBvdXRzaWRlIG91ciBkb21haW4gbW9kZWwgaW1wbGVtZW50YXRpb24KMy4gVXNpbmcgRW50aXR5IEZyYW1ld29yayBDb3JlIGZlYXR1cmVzOiAKICAgLSBTaGFkb3cgUHJvcGVydGllcwogICAtIE93bmVkIEVudGl0eSBUeXBlcwogICAtIFByaXZhdGUgZmllbGRzIG1hcHBpbmcKICAgLSBWYWx1ZSBDb252ZXJzaW9ucwoKIyMgR28gZnVydGhlciAmIHJlZmVyZW5jZXMKCi0gW0NsZWFuIEFyY2hpdGVjdHVyZV1bY2xlYW5fYXJjaGldCi0gW09uaW9uIEFyY2hpdGVjdHVyZV1bb25pb25fYXJjaGldCi0gW1BvcnRzIEFuZCBBZGFwdGVycyAvIEhleGFnb25hbCBBcmNoaXRlY3R1cmVdW3BvcnRfYWRhcHRlcl9oZXhhXQotIFtFeGFtcGxlIENsZWFuIEFyY2hpIDFdW2V4YW1wbGVfYXJjaGlfMV0KLSBbRXhhbXBsZSBDbGVhbiBBcmNoaSAyXVtleGFtcGxlX2FyY2hpXzJdCgpbYmVhdF9wdWxzZV9naXRodWJdOmh0dHBzOi8vZ2l0aHViLmNvbS9YYWJhcmlsL0JlYXRQdWxzZQpbTm9ydGh3aW5kVHJhZGVyc106aHR0cHM6Ly9naXRodWIuY29tL0phc29uR1QvTm9ydGh3aW5kVHJhZGVycwpbUGVyc2lzdGVuY2UgSWdub3JhbmNlXTpodHRwOi8vd3d3LmthbWlsZ3J6eWJlay5jb20vZGVzaWduL2RvbWFpbi1tb2RlbC1lbmNhcHN1bGF0aW9uLWFuZC1waS13aXRoLWVudGl0eS1mcmFtZXdvcmstMi0yLwpbbnN3YWdfcmVwb106aHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZwpbbW9xX3JlcG9dOmh0dHBzOi8vZ2l0aHViLmNvbS9tb3EvbW9xNApbYW5nbGVzaGFycF06aHR0cHM6Ly9hbmdsZXNoYXJwLmdpdGh1Yi5pby8KW2NsZWFuX2FyY2hpXTpodHRwOi8vYmxvZy5jbGVhbmNvZGVyLmNvbS91bmNsZS1ib2IvMjAxMi8wOC8xMy90aGUtY2xlYW4tYXJjaGl0ZWN0dXJlLmh0bWwKW29uaW9uX2FyY2hpXTpodHRwczovL2plZmZyZXlwYWxlcm1vLmNvbS8yMDA4LzA3L3RoZS1vbmlvbi1hcmNoaXRlY3R1cmUtcGFydC0xCltwb3J0X2FkYXB0ZXJfaGV4YV06aHR0cHM6Ly9oZXJiZXJ0b2dyYWNhLmNvbS8yMDE3LzA5LzE0L3BvcnRzLWFkYXB0ZXJzLWFyY2hpdGVjdHVyZS8KW2V4YW1wbGVfYXJjaGlfMV06aHR0cHM6Ly9mdWxsc3RhY2ttYXJrLmNvbS9wb3N0LzExL2JldHRlci1zb2Z0d2FyZS1kZXNpZ24td2l0aC1jbGVhbi1hcmNoaXRlY3R1cmUKW2V4YW1wbGVfYXJjaGlfMl06aHR0cHM6Ly9mdWxsc3RhY2ttYXJrLmNvbS9wb3N0LzE4L2J1aWxkaW5nLWFzcG5ldC1jb3JlLXdlYi1hcGlzLXdpdGgtY2xlYW4tYXJjaGl0ZWN0dXJlCltjeXByZXNzXTpodHRwczovL3d3dy5jeXByZXNzLmlvLw== readmeEtag: '"6d5ad0ca66b9a3cc96d05b217ae03df4c2e7e4b9"' readmeLastModified: Wed, 28 Oct 2020 15:47:24 GMT repositoryId: 185035728 description: Synker Clean architecture created: '2019-05-05T13:34:51Z' updated: '2020-10-28T15:47:27Z' language: C# archived: false stars: 4 watchers: 1 forks: 0 owner: Fazzani logo: https://avatars.githubusercontent.com/u/2669070?v=4 repoEtag: '"0204670e71a36bc10e05d8019b0c1790389515641e8f307d862e85f4e0b4ec1f"' repoLastModified: Wed, 28 Oct 2020 15:47:27 GMT foundInMaster: true category: Server id: 24f3174a585318a2e0fc37f0502c0de9 - source: openapi3 tags repository: https://github.com/alexferl/echo-openapi v3: true id: ce1a77b9cc878c17a7dde009e1eecfdd repositoryMetadata: base64Readme: >- IyBlY2hvLW9wZW5hcGkgWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL2FsZXhmZXJsL2VjaG8tb3BlbmFwaSldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9hbGV4ZmVybC9lY2hvLW9wZW5hcGkpIFshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9hbGV4ZmVybC9lY2hvLW9wZW5hcGkvYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvYWxleGZlcmwvZWNoby1vcGVuYXBpKQoKQW4gW09wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pIG1pZGRsZXdhcmUgZm9yIHRoZSBbRWNob10oaHR0cHM6Ly9naXRodWIuY29tL2xhYnN0YWNrL2VjaG8pIGZyYW1ld29yayB1c2luZwpbZ2V0a2luL2tpbi1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpKSB0byB2YWxpZGF0ZSBIVFRQIHJlcXVlc3RzIGFuZCByZXNwb25zZXMuCgojIyBJbnN0YWxsaW5nCmBgYHNoZWxsCmdvIGdldCBnaXRodWIuY29tL2FsZXhmZXJsL2VjaG8tb3BlbmFwaQpgYGAKCiMjIFVzaW5nCgojIyMgQ29kZSBleGFtcGxlCmBgYGdvCnBhY2thZ2UgbWFpbgoKaW1wb3J0ICgKICAgICJuZXQvaHR0cCIKCiAgICBtdyAiZ2l0aHViLmNvbS9hbGV4ZmVybC9lY2hvLW9wZW5hcGkiCiAgICAiZ2l0aHViLmNvbS9sYWJzdGFjay9lY2hvL3Y0IgogICAgImdpdGh1Yi5jb20vbGFic3RhY2svZWNoby92NC9taWRkbGV3YXJlIgopCgovKgojIG9wZW5hcGkueWFtbApvcGVuYXBpOiAzLjAuNAppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IFRlc3QgQVBJCiAgZGVzY3JpcHRpb246IEEgdGVzdCBBUEkKcGF0aHM6CiAgL2hlbGxvOgogICAgcG9zdDoKICAgICAgZGVzY3JpcHRpb246IEhlbGxvCiAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgLSBuYW1lOiBtZXNzYWdlCiAgICAgICAgICBpbjogcXVlcnkKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICBtaW5MZW5ndGg6IDEKICAgICAgICAgICAgbWF4TGVuZ3RoOiAxMDAKICAgICAgcmVzcG9uc2VzOgogICAgICAgICcyMDAnOgogICAgICAgICAgZGVzY3JpcHRpb246IFN1Y2Nlc3NmdWwgcmVzcG9uc2UKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UKICAgICAgICAgICAgICAgIHJlcXVpcmVkOgogICAgICAgICAgICAgICAgICAtIG1lc3NhZ2UKICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6CiAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFdlbGNvbWUgbWVzc2FnZQogICAgICAgICAgICAgICAgICAgIG1pbkxlbmd0aDogNAoqLwoKdHlwZSBIYW5kbGVyIHN0cnVjdCB7CiAgICAqbXcuSGFuZGxlcgp9CgpmdW5jIChoICpIYW5kbGVyKSBIZWxsbyhjIGVjaG8uQ29udGV4dCkgZXJyb3IgewogICAgbXNnIDo9IGMuUXVlcnlQYXJhbSgibWVzc2FnZSIpCiAgICByZXR1cm4gaC5WYWxpZGF0ZShjLCBodHRwLlN0YXR1c09LLCBlY2hvLk1hcHsibWVzc2FnZSI6IG1zZ30pCn0KCmZ1bmMgbWFpbigpIHsKICAgIGUgOj0gZWNoby5OZXcoKQoKICAgIGggOj0gJkhhbmRsZXJ7bXcuTmV3SGFuZGxlcigpfQogICAgZS5BZGQoaHR0cC5NZXRob2RQb3N0LCAiL2hlbGxvIiwgaC5IZWxsbykKCiAgICBlLlVzZShtaWRkbGV3YXJlLkxvZ2dlcigpKQogICAgZS5Vc2UobXcuT3BlbkFQSSgiLi9vcGVuYXBpLnlhbWwiKSkKCiAgICBlLkxvZ2dlci5GYXRhbChlLlN0YXJ0KCJsb2NhbGhvc3Q6MTMyMyIpKQp9CmBgYApTZW5kIGFuIGludmFsaWQgcmVxdWVzdCB0byB0ZXN0IHJlcXVlc3QgdmFsaWRhdGlvbjoKYGBgc2hlbGwKY3VybCAtaSAtWCBQT1NUIGh0dHA6Ly9sb2NhbGhvc3Q6MTMyMy9oZWxsbwpIVFRQLzEuMSA0MjIgVW5wcm9jZXNzYWJsZSBFbnRpdHkKQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PVVURi04CkRhdGU6IFNhdCwgMTIgTm92IDIwMjIgMTc6MzE6MjQgR01UCkNvbnRlbnQtTGVuZ3RoOiAxMTcKCnsibWVzc2FnZSI6IlZhbGlkYXRpb24gZXJyb3IiLCJlcnJvcnMiOlsicGFyYW1ldGVyICdtZXNzYWdlJyBpbiBxdWVyeSBoYXMgYW4gZXJyb3I6IHZhbHVlIGlzIHJlcXVpcmVkIGJ1dCBtaXNzaW5nIl19CmBgYAoKU2VuZCBhIHZhbGlkIHJlcXVlc3Q6CmBgYHNoZWxsCmN1cmwgLWkgLVggUE9TVCBodHRwOi8vbG9jYWxob3N0OjEzMjMvaGVsbG9cP21lc3NhZ2VcPWhlbGxvCkhUVFAvMS4xIDIwMCBPSwpDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24KRGF0ZTogU2F0LCAxMiBOb3YgMjAyMiAxNzozMTo0NyBHTVQKQ29udGVudC1MZW5ndGg6IDE5Cgp7Im1lc3NhZ2UiOiJoZWxsbyJ9CmBgYAoKU2VuZCBhIHZhbGlkIHJlcXVlc3Qgd2l0aCBhbiBpbnZhbGlkIHJlc3BvbnNlOgpgYGBzaGVsbApjdXJsIC1pIC1YIFBPU1QgaHR0cDovL2xvY2FsaG9zdDoxMzIzL2hlbGxvXD9tZXNzYWdlXD1hCkhUVFAvMS4xIDUwMCBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3IKQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uCkRhdGU6IFNhdCwgMTIgTm92IDIwMjIgMTc6MzE6MDEgR01UCkNvbnRlbnQtTGVuZ3RoOiAzNgoKeyJtZXNzYWdlIjoiSW50ZXJuYWwgU2VydmVyIEVycm9yIn0KYGBgCllvdSBzaG91bGQgYWxzbyBoYXZlIHRoZSBmb2xsb3dpbmcgaW4gdGhlIHNlcnZlcidzIGxvZyB0byBoZWxwIHlvdSBkZWJ1ZyB5b3VyIHNjaGVtYToKYGBgc2hlbGwKeyJlcnJvciI6ImZhaWxlZCB2YWxpZGF0aW5nIHJlc3BvbnNlOiBtZXNzYWdlOiBtaW5pbXVtIHN0cmluZyBsZW5ndGggaXMgNCJ9CmBgYAoKIyMjIENvbmZpZ3VyYXRpb24KYGBgZ28KdHlwZSBDb25maWcgc3RydWN0IHsKICAgIC8vIFNraXBwZXIgZGVmaW5lcyBhIGZ1bmN0aW9uIHRvIHNraXAgbWlkZGxld2FyZS4KICAgIFNraXBwZXIgbWlkZGxld2FyZS5Ta2lwcGVyCgogICAgLy8gU2NoZW1hIGRlZmluZXMgdGhlIE9wZW5BUEkgdGhhdCB3aWxsIGJlIGxvYWRlZCBhbmQKICAgIC8vIHRoYXQgdGhlIHJlcXVlc3QgYW5kIHJlc3BvbnNlcyB3aWxsIGJlIHZhbGlkYXRlZCBhZ2FpbnN0LgogICAgLy8gUmVxdWlyZWQuCiAgICBTY2hlbWEgc3RyaW5nCgogICAgLy8gQ29udGV4dEtleSBkZWZpbmVzIHRoZSBrZXkgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc3RvcmUgdGhlIHZhbGlkYXRvcgogICAgLy8gb24gdGhlIGVjaG8uQ29udGV4dCB3aGVuIHRoZSByZXF1ZXN0IGlzIHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQuCiAgICAvLyBPcHRpb25hbC4gRGVmYXVsdHMgdG8gInZhbGlkYXRvciIuCiAgICBDb250ZXh0S2V5IHN0cmluZwoKICAgIC8vIEV4ZW1wdFJvdXRlcyBkZWZpbmVzIHJvdXRlcyBhbmQgbWV0aG9kcyB0aGF0IGRvbid0IHJlcXVpcmUgdG9rZW5zLgogICAgLy8gT3B0aW9uYWwuCiAgICBFeGVtcHRSb3V0ZXMgbWFwW3N0cmluZ11bXXN0cmluZwp9Cgp0eXBlIEhhbmRsZXJDb25maWcgc3RydWN0IHsKICAgIC8vIENvbnRlbnRUeXBlIHNldHMgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIgb2YgdGhlIHJlc3BvbnNlLgogICAgLy8gT3B0aW9uYWwuIERlZmF1bHRzIHRvICJhcHBsaWNhdGlvbi9qc29uIi4KICAgIENvbnRlbnRUeXBlIHN0cmluZwoKICAgIC8vIFZhbGlkYXRvcktleSBkZWZpbmVzIHRoZSBrZXkgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcmVhZCB0aGUKICAgIC8vICpvcGVuYXBpM2ZpbHRlci5SZXF1ZXN0VmFsaWRhdGlvbklucHV0IGZyb20gdGhlIGVjaG8uQ29udGV4dAogICAgLy8gc2V0IGJ5IHRoZSBtaWRkbGV3YXJlLgogICAgLy8gT3B0aW9uYWwuIERlZmF1bHRzIHRvICJ2YWxpZGF0b3IiLgogICAgVmFsaWRhdG9yS2V5IHN0cmluZwoKICAgIC8vIEV4Y2x1ZGVSZXF1ZXN0Qm9keSBtYWtlcyBWYWxpZGF0ZSBza2lwcyByZXF1ZXN0IGJvZHkgdmFsaWRhdGlvbi4KICAgIC8vIE9wdGlvbmFsLiBEZWZhdWx0cyB0byBmYWxzZS4KICAgIEV4Y2x1ZGVSZXF1ZXN0Qm9keSBib29sCgogICAgLy8gRXhjbHVkZVJlc3BvbnNlQm9keSBtYWtlcyBWYWxpZGF0ZSBza2lwcyByZXNwb25zZSBib2R5IHZhbGlkYXRpb24uCiAgICAvLyBPcHRpb25hbC4gRGVmYXVsdHMgdG8gZmFsc2UuCiAgICBFeGNsdWRlUmVzcG9uc2VCb2R5IGJvb2wKCiAgICAvLyBJbmNsdWRlUmVzcG9uc2VTdGF0dXMgbWFrZXMgVmFsaWRhdGUgZmFpbCBvbiByZXNwb25zZQogICAgLy8gc3RhdHVzZXMgbm90IGRlZmluZWQgaW4gdGhlIE9wZW5BUEkgc3BlYy4KICAgIC8vIE9wdGlvbmFsLiBEZWZhdWx0cyB0byB0cnVlLgogICAgSW5jbHVkZVJlc3BvbnNlU3RhdHVzIGJvb2wKfQpgYGAK readmeEtag: '"31ac2ac48f8c5aa9e948876a85de3bfa94d8b608"' readmeLastModified: Tue, 06 Feb 2024 20:18:00 GMT repositoryId: 557002965 description: OpenAPI middleware for the Echo framework created: '2022-10-24T23:08:22Z' updated: '2024-10-02T14:58:39Z' language: Go archived: false stars: 4 watchers: 2 forks: 2 owner: alexferl logo: https://avatars.githubusercontent.com/u/3533424?v=4 license: MIT repoEtag: '"b9fa92f8547979b03b971931995b413e4bd96933482945068d4eaa65f27be1b1"' repoLastModified: Wed, 02 Oct 2024 14:58:39 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/kulgan/flaskdoc v3: true repositoryMetadata: base64Readme: >- Zmxhc2tkb2MKPT09PT09PT0KCnxQeVBpIHZlcnNpb258IHxQeXRob24gdmVyc2lvbnwgfGNpfCB8ZG9jc3wgfGxpY2Vuc2V8IHxjb3ZlcmFnZXwgfGNvZGUgcXVhbGl0eXwKCkZsYXNrRG9jIGFsbG93cyBkZXZlbG9wZXJzIHRvIHByb2dyYW1tYXRpY2FsbHkgY29tcG9zZSBvcGVuYXBpIHNwZWNpZmljYXRpb25zIGZvciBmbGFzayBlbmRwb2ludHMgYXMgYSBwYXJ0IG9mIGNvZGUKd2l0aG91dCBuZWVkaW5nIHRvIHdyaXRlIGEgc2VwYXJhdGUgeWFtbCBmaWxlLCBhbmQgaXQgY29tZXMgd2l0aCBTd2FnZ2VyVUkgZW1iZWRkZWQuIEl0cyBtYWluIGZvY3VzIGlzIG9uIGRvY3VtZW50YXRpb24Kd2hpY2ggZnJlZXMgZGV2ZWxvcGVycyB0byBmb2N1cyBvbiBnZXR0aW5nIHRoZWlyIHNlcnZpY2VzIGNvZGVkLgoKV2h5IGZsYXNrZG9jCi0tLS0tLS0tLS0tLQoKKiBGb2N1cyBvbmx5IG9uIGRvY3VtZW50YXRpb24gYW5kIG5vdCBpbnRyb2R1Y2Ugc29tZSBmYW5jeSBuZXcgd2F5IG9mIHVzaW5nIGZsYXNrLgoqIEVhc2lseSBhZGQgdG8gZXhpc3RpbmcgY29kZSB3aXRob3V0IG5lZWRpbmcgdG8gcmVmYWN0b3Igb2YgY2hhbmdlIHRoZSB3YXkgdGhlIGNvZGUgaGFzIGJlZW4gd3JpdHRlbgoqIExpdHRsZSBvciBubyBsZWFybmluZyBjdXJ2ZSwgYXMgbG9uZyBhcyBhIGRldmVsb3BlciBpcyBjb21mb3JhdGJsZSB1c2luZyBmbGFzayBkZXZlbG9wZXJzLCB0aGV5IGNhbiB1c2UgZmxhc2tkb2MuCiAgdG8gbGVhcm4gcXVpY2tseSBhbmQgbm90IGRpc3RyYWN0IFNvIGRldmVsb3BlcnMgZm9jdXMgb24gd3JpdGluZyBjb2RlCiogU3dhZ2dlclVJIGludGVncmF0aW9uIGZvciBxdWlja2x5IHRlc3RpbmcgYW5kIGl0ZXJhdGluZyB0aHJvdWdoIHZlcnNpb25zCiogQXV0b21hdGljIGRhdGEgbW9kZWwgdG8gSlNPTiBTY2hlbWEgdHJhbnNmb3JtYXRpb24gdGhhdCBhbGxvd3MgZm9yIGZpbmVyIGdyYWluIGNvbmZpZ3VyYXRpb24KCgpHZXR0aW5nIFN0YXJ0ZWQKLS0tLS0tLS0tLS0tLS0tClZpc2l0IGBkb2N1bWVudGF0aW9uIDxodHRwczovL2ZsYXNrZG9jLnJlYWR0aGVkb2NzLmlvPmBfIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4KCkluc3RhbGwKIiIiIiIiIgpmcm9tIHB5cGkKCi4uIGNvZGUtYmxvY2s6OgoKICAgICQgcGlwIGluc3RhbGwgZmxhc2tkb2MKCmZyb20gZ2l0aHViCgouLiBjb2RlLWJsb2NrOjoKCiAgICAkIHBpcCBpbnN0YWxsIGh0dHBzOi8vZ2l0aHViLmNvbS9rdWxnYW4vZmxhc2tkb2MvdGFyYmFsbC9tYXN0ZXIKClRvIHJ1biBleGFtcGxlcyB5b3Ugd2lsbCBuZWVkIHRvIGluc3RhbGwgdGhlIGRldiBleHRlbnNpb24KCi4uIGNvZGUtYmxvY2s6OgoKICAgICQgcGlwIGluc3RhbGwgZmxhc2tkb2NbZGV2XQoKUmVnaXN0ZXIgT3BlbkFQSQoiIiIiIiIiIiIiIiIiIiIiCkFkZCB0b3AgbGV2ZWwgb3BlbmFwaSBvYmplY3RzIGxpa2UgYEluZm8gPGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNpbmZvLW9iamVjdD5gXywKYENvbnRhY3QgPGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNjb250YWN0LW9iamVjdD5gXywgYExpY2Vuc2UgPGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNsaWNlbnNlLW9iamVjdD5gXyBldGMKCi4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICBpbXBvcnQgZmxhc2sKICAgIGZyb20gZmxhc2tkb2MgaW1wb3J0IHJlZ2lzdGVyX29wZW5hcGksIHN3YWdnZXIKCiAgICBhcHAgPSBmbGFzay5GbGFzaygpCiAgICAjIGluaXRpYWxpemUgYXBwLCBhZGQgYWxsIHRoZSBibHVlcHJpbnRzIHlvdSBjYXJlIGFib3V0CgogICAgIyBDcmVhdGUgdG9wIGxldmVsIE9wZW5BUEkgb2JqZWN0cwogICAgIyB0aGUgaW5mbyBvYmplY3QKICAgIGluZm8gPSBzd2FnZ2VyLkluZm8oCiAgICAgICAgdGl0bGU9IlRlc3QiLAogICAgICAgIHZlcnNpb249IjEuMi4yIiwKICAgICAgICBjb250YWN0PXN3YWdnZXIuQ29udGFjdCgKICAgICAgICAgICAgbmFtZT0iUm93bGFuZCIsIGVtYWlsPSJyLm9nd2FyYUBnbWFpbC5jb20iLCB1cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWxnYW4iCiAgICAgICAgKSwKICAgICAgICBsaWNlbnNlPXN3YWdnZXIuTGljZW5zZShuYW1lPSJBcGFjaGUgMi4wIiwgdXJsPSJodHRwczovL3d3dy5leGFtcGxlLmNvbS9saWNlbnNlIiksCiAgICApCgogICAgIyBzZXJ2ZXJzIG5hbWVzIGFuZCB2YXJpYWJsZXMgaWYgbmVjZXNzYXJ5CiAgICBzZXJ2ZXJzID0gW3N3YWdnZXIuU2VydmVyKHVybD0iaHR0cDovL2xvY2FsaG9zdDoxNTE3MiIpXQoKICAgICMgdG9wIGxldmVsIHRhZ3MKICAgIHRhZ3MgPSBbCiAgICAgICAgc3dhZ2dlci5UYWcobmFtZT0iYWRtaW4iLCBkZXNjcmlwdGlvbj0iU2VjdXJlZCBBZG1pbi1Pbmx5IGNhbGxzIiksCiAgICAgICAgc3dhZ2dlci5UYWcobmFtZT0iZGV2ZWxvcGVycyIsIGRlc2NyaXB0aW9uPSJPcGVyYXRpb25zIGF2YWlsYWJsZSB0byByZWd1bGFyIGRldmVsb3BlcnMiKSwKICAgIF0KCiAgICBzZWN1cml0eV9zY2hlbWVzID0gewogICAgICAgICJhcGlfa2V5Ijogc3dhZ2dlci5BcGlLZXlTZWN1cml0eVNjaGVtZShuYW1lPSJhcGlfa2V5IiksCiAgICB9CgogICAgIyByZWdpc3RlciBzcGVjCiAgICByZWdpc3Rlcl9vcGVuYXBpKGFwcCwgaW5mbz1pbmZvLCBzZXJ2ZXJzPXNlcnZlcnMsIHRhZ3M9dGFncywgc2VjdXJpdHk9c2VjdXJpdHlfc2NoZW1lcykKClRoaXMgYWRkcyB0aGUgZm9sbG93aW5nIGVuZHBvaW50cyB0byB5b3VyIGxpc3QKCiogL2RvY3MKKiAvZG9jcy9vcGVuYXBpLnlhbWwKKiAvZG9jcy9vcGVuYXBpLmpzb24KClN0YXJ0IERvY3VtZW50aW5nCiIiIiIiIiIiIiIiIiIiIiIiCk5vdyBzdGFydCBkb2N1bWVudGluZyB5b3UgZmxhc2sgcm91dGVzCgpBIHNpbXBsZSBwb3N0IGV4YW1wbGUKCi4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICBibHAgPSBmbGFzay5CbHVlcHJpbnQoIkR1bW15IiwgX19uYW1lX18sIHVybF9wcmVmaXg9Ii92MSIpCiAgICBAc3dhZ2dlci5QT1NUKAogICAgICAgIHRhZ3M9WyJhZG1pbmlzdHJhdG9yIl0sCiAgICAgICAgZGVzY3JpcHRpb249IlBvc3RzIGFuIEVjaG8iLAogICAgICAgIHJlc3BvbnNlcz17IjIwMSI6IHN3YWdnZXIuUmVzcG9uc2VPYmplY3QoZGVzY3JpcHRpb249Ik9LIil9LAogICAgKQogICAgQGJscC5yb3V0ZSgiL2VjaG8iLCBtZXRob2RzPVsiUE9TVCJdKQogICAgZGVmIHBvc3QoKToKICAgICAgICByZXEgPSBmbGFzay5yZXF1ZXN0LmdldF9qc29uKGZvcmNlPVRydWUpCiAgICAgICAgcmV0dXJuIGZsYXNrLmpzb25pZnkocmVxKSwgMjAwCgpBIEdFVCBleGFtcGxlIHdpdGggcGF0aCBwYXJhbWV0ZXIKCi4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICBibHAgPSBmbGFzay5CbHVlcHJpbnQoIkR1bW15IiwgX19uYW1lX18sIHVybF9wcmVmaXg9Ii92MSIpCgogICAgQHN3YWdnZXIuR0VUKAogICAgICAgIHRhZ3M9WyJnZXRFY2hvIl0sCiAgICAgICAgb3BlcmF0aW9uX2lkPSJnZXRFY2hvIiwKICAgICAgICBwYXJhbWV0ZXJzPVtzd2FnZ2VyLlBhdGhQYXJhbWV0ZXIobmFtZT0ic2FtcGxlIiwgc2NoZW1hPXN0cildLAogICAgICAgIGRlc2NyaXB0aW9uPSJSZXRyaWV2ZSBlY2hvcyB3aXQgR2V0IiwKICAgICAgICByZXNwb25zZXM9ewogICAgICAgICAgICAiMjAwIjogc3dhZ2dlci5SZXNwb25zZU9iamVjdCgKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJTdWNjZXNzIiwgY29udGVudD1qby5QbGFpblRleHQoc2NoZW1hPWpvLkVtYWlsKCkpLAogICAgICAgICAgICApCiAgICAgICAgfSwKICAgICkKICAgIEBibHAucm91dGUoIi9lY2hvLzxzdHJpbmc6c2FtcGxlPiIsIG1ldGhvZHM9WyJHRVQiXSkKICAgIGRlZiBlY2hvKHNhbXBsZTogc3RyKToKICAgICAgICAiIiIKICAgICAgICBTYW1wbGUgR0VUIHJlcXVlc3QKICAgICAgICBSZXR1cm5zOiBFY2hvcyBiYWNrIHdoYXRldmVyIHdhcyBzZW50CgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzYW1wbGUKClJ1biB5b3VyIGFwcCBhbmQgdmlzaXQgYC9kb2NzYCB0byBzZWUgdGhlIGdlbmVyYXRlZCBvcGVuYXBpIHNwZWNzCgpSdW5uaW5nIEV4YW1wbGVzCj09PT09PT09PT09PT09PT0KClR3byBleGFtcGxlIHByb2plY3RzIGFyZSBjdXJyZW50bHkgcHJvdmlkZWQKCiogYGludmVudG9yeSA8c3JjL2ZsYXNrZG9jL2V4YW1wbGVzL2ludmVudG9yeS5weT5gXwoqIGBwZXRzdG9yZSA8c3JjL2ZsYXNrZG9jL2V4YW1wbGVzL3BldHN0b3JlLnB5PmBfIHNvdXJjZSBgT3BlbkFQSSBQZXRzdG9yZSA8aHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvPmBfCiogYGxpbmstZXhhbXBsZSA8c3JjL2ZsYXNrZG9jL2V4YW1wbGVzL2xpbmtfZXhhbXBsZS92MC5weT5gXyAtIHNvdXJjZSBgT3BlbkFQSSBsaW5rIGV4YW1wbGUgPGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL2V4YW1wbGVzL3YzLjAvbGluay1leGFtcGxlLmpzb24+YF8KKiBgYXBpLXdpdGgtZXhhbXBsZSA8c3JjL2ZsYXNrZG9jL2V4YW1wbGVzL2FwaV93aXRoX2V4YW1wbGUucHk+YF8gLSBzb3VyY2UgYE9wZW5BUEkgYXBpX3dpdGhfZXhhbXBsZXMgPGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL2V4YW1wbGVzL3YzLjAvYXBpLXdpdGgtZXhhbXBsZXMuanNvbj5gXwoKVG8gcnVuCgouLiBjb2RlLWJsb2NrOjogYmFzaAoKICAgICQgcGlwIGluc3RhbGwgZmxhc2tkb2NbZGV2XQogICAgJCBmbGFza2RvYyBzdGFydCAtbiBwZXRzdG9yZQoKQ29udHJpYnV0aW5nCi0tLS0tLS0tLS0tLQoKRG9uJ3QgaGVzaXRhdGUgdG8gY3JlYXRlIGEgYEdpdGh1YiBpc3N1ZSA8aHR0cHM6Ly9naXRodWIuY29tL2t1bGdhbi9mbGFza2RvYy9pc3N1ZXM+YF9fIGZvciBhbnkgYnVncyBvciBzdWdnZXN0aW9ucwoKLi4gfGNpfCBpbWFnZTo6IGh0dHBzOi8vZ2l0aHViLmNvbS9rdWxnYW4vZmxhc2tkb2Mvd29ya2Zsb3dzL2NpL2JhZGdlLnN2ZwogICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL2t1bGdhbi9mbGFza2RvYy8KICAgIDphbHQ6IGJ1aWxkCgouLiB8UHlQaSB2ZXJzaW9ufCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L2ZsYXNrZG9jLnN2ZwogICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2ZsYXNrZG9jLwogICAgOmFsdDogUHlQaSBkb3dubG9hZHMKCi4uIHxQeXRob24gdmVyc2lvbnwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy9mbGFza2RvYy5zdmcKICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9mbGFza2RvYy8KICAgIDphbHQ6IFB5dGhvbiB2ZXJzaW9ucwoKLi4gfGxpY2Vuc2V8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2wvZmxhc2tkb2Muc3ZnCiAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkub3JnL3Byb2plY3QvZmxhc2tkb2MvCiAgICA6YWx0OiBsaWNlbnNlCi4uIHxkb2NzfCBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL2ZsYXNrZG9jL2JhZGdlLz92ZXJzaW9uPWxhdGVzdAogICAgOnRhcmdldDogaHR0cHM6Ly9mbGFza2RvYy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvP2JhZGdlPWxhdGVzdAogICAgOmFsdDogRG9jdW1lbnRhdGlvbiBTdGF0dXMKCi4uIHxjb2RlIHF1YWxpdHl8IGltYWdlOjogaHR0cHM6Ly9hcHAuY29kYWN5LmNvbS9wcm9qZWN0L2JhZGdlL0dyYWRlLzJkYWZlYmYwMjEzNTRhNDJhYTYyYjExZDZhYjQyNjU0CiAgICA6dGFyZ2V0OiBodHRwczovL3d3dy5jb2RhY3kuY29tL21hbnVhbC9rdWxnYW4vZmxhc2tkb2M/dXRtX3NvdXJjZT1naXRodWIuY29tJmFtcDt1dG1fbWVkaXVtPXJlZmVycmFsJmFtcDt1dG1fY29udGVudD1rdWxnYW4vZmxhc2tkb2MmYW1wO3V0bV9jYW1wYWlnbj1CYWRnZV9HcmFkZQogICAgOmFsdDogQ29kZSBRdWFsaXR5CgouLiB8Y292ZXJhZ2V8IGltYWdlOjogaHR0cHM6Ly9hcHAuY29kYWN5LmNvbS9wcm9qZWN0L2JhZGdlL0NvdmVyYWdlLzJkYWZlYmYwMjEzNTRhNDJhYTYyYjExZDZhYjQyNjU0CiAgICA6dGFyZ2V0OiBodHRwczovL3d3dy5jb2RhY3kuY29tL21hbnVhbC9rdWxnYW4vZmxhc2tkb2M/dXRtX3NvdXJjZT1naXRodWIuY29tJmFtcDt1dG1fbWVkaXVtPXJlZmVycmFsJmFtcDt1dG1fY29udGVudD1rdWxnYW4vZmxhc2tkb2MmYW1wO3V0bV9jYW1wYWlnbj1CYWRnZV9Db3ZlcmFnZQogICAgOmFsdDogQ292ZXJhZ2UK readmeEtag: '"b59128c6ef4fa4d4bada6b3a06403e52075d5ba8"' readmeLastModified: Thu, 10 Jun 2021 22:19:38 GMT repositoryId: 208150427 description: Flask OpenAPI annotations created: '2019-09-12T21:35:27Z' updated: '2022-06-21T18:40:09Z' language: Python archived: false stars: 4 watchers: 0 forks: 1 owner: kulgan logo: https://avatars.githubusercontent.com/u/892017?v=4 license: Apache-2.0 repoEtag: '"d110529b32d24aa98782c4beadc594c17e44db5dc2e44fe06013a14c8e17470a"' repoLastModified: Tue, 21 Jun 2022 18:40:09 GMT foundInMaster: true category: Server Implementations id: db4ac60d7f3ef260b6df2e06d75adb79 - source: openapi3 tags repository: https://github.com/budwk/budwk-openapi-viewer v3: true repositoryMetadata: base64Readme: >- CiMgU3dhZ2dlciBPcGVuQXBpIFYzIFZpZXdlcgpBbiBPcGVuQVBJIDMuMCBhbmQgMi4wIFNwZWMgdmlld2VyCgojIOivtOaYjgoKKiDmnKzpobnnm67lnKggT3BlbkFQSS1WaWV3ZXIg55qE5Z+656GA5LiKLCDkv67lpI3kuIDkupsgT3BlbkFQSSBWMyDlhbzlrrnmgKdidWcg5Li65LqG5pu05aW955qE5bqU55So5LqOIEJ1ZFdrIOmhueebruS4igoqIOWOn+Wni+S7o+eggTogW2h0dHBzOi8vZ2l0aHViLmNvbS9tcmluOS9PcGVuQVBJLVZpZXdlcl0oaHR0cHM6Ly9naXRodWIuY29tL21yaW45L09wZW5BUEktVmlld2VyKQoqIOa8lOekuuWcsOWdgDogW2h0dHBzOi8vZGVtby5idWR3ay5jb20vc3dhZ2dlcl0oaHR0cHM6Ly9kZW1vLmJ1ZHdrLmNvbS9zd2FnZ2VyKQoKIyMg5a6J6KOFCmBgYAp5YXJuIGluc3RhbGwKYGBgCiMjIOiwg+ivlQpgYGAKeWFybiBzZXJ2ZQpgYGAKIyMg55Sf5oiQCmBgYAp5YXJuIHJ1biBidWlsZCAKYGBg readmeEtag: '"fe6ceb67be156b006a274bf0daa37e4366018d91"' readmeLastModified: Wed, 09 Jun 2021 07:15:30 GMT repositoryId: 240551610 description: 基于Vue 的 Swagger OpenApi V3 API文档查看器 created: '2020-02-14T16:26:37Z' updated: '2023-08-18T15:44:16Z' language: Vue archived: false stars: 4 watchers: 1 forks: 0 owner: budwk logo: https://avatars.githubusercontent.com/u/58797370?v=4 license: Apache-2.0 repoEtag: '"657471db431b655510b9c5994cd0678839a7e20472bf617dd914894df38c1da0"' repoLastModified: Fri, 18 Aug 2023 15:44:16 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: 8646e719f1e82252200279911158be75 - source: openapi3 tags repository: https://github.com/sohoffice/swagger-down v3: true repositoryMetadata: base64Readme: >- c3dhZ2dlci1kb3duIGlzIGEgT3BlbkFQSSAzIChTd2FnZ2VyIDMuMCkgc3BlYyB0byBtYXJrZG93biAvIGh0bWwgcmVuZGVyZXIuCgpJdCBpcyBhIGNvbW1hbmQgbGluZSBhcHBsaWNhdGlvbiB0aGF0IHRha2UgdGhlIHN3YWdnZXIgc3BlYyBmaWxlIGFzIGlucHV0IGFuZCByZW5kZXIgdG8gc3Rkb3V0LgpUeXBpY2FsIHVzYWdlIHdpbGwgcmVkaXJlY3QgdGhlIG91dHB1dCBkaXJlY3RseSB0byBhIGZpbGUgZm9yIGxhdGVyIHByb2Nlc3NpbmcuCgpFeGFtcGxlOgoKYGBgCmphdmEgLWphciBzd2FnZ2VyLWRvd24tYWxsLmphciBmb28ueW1sID4gZm9vLm1kCmBgYAoKc3dhZ2dlci1kb3duIGRvZXNuJ3Qgc3VwcG9ydCBzd2FnZ2VyIDIuMCwgdGhlcmUncyBhIG51bWJlciBvZiBvcHRpb25zIHN1cHBvcnRpbmcgaXQuClNvIHdlIGp1c3QgZGVjaWRlZCBub3QgdG8gcmUtaW52ZW50IHRoZSB3aGVlbC4KCkl0IGlzIGFsc28gbW9yZSB1c2VmdWwgd2hlbiBwcm9jZXNzaW5nIFlBTUwgc3BlYyBmaWxlLiBUaGUgYXBwbGljYXRpb24gb3V0cHV0cyBtYXJrZG93bgphbmQgaXQncyBhIGxvdCBuYXR1cmFsIHRvIHdyaXRlIG1hcmtkb3duIGluIFlBTUwgdGhhbiBpdCBpcyBpbiBKU09OLiBUaGUgMiBhcmUgcGVyZmVjdCBtYXRjaC4KSG93ZXZlciwgSlNPTiBzcGVjIGZpbGUgaXMgc3RpbGwgc3VwcG9ydGVkLCBqdXN0IHRoZSBvdXRwdXQgbWF5IGJlIGxlc3MgcHJldHR5LgoKT3V0cHV0IERvY3VtZW50Ci0tLS0tLS0tLS0tLS0tLQoKUGV0c3RvcmUgZXhhbXBsZTogaHR0cHM6Ly9naXRodWIuY29tL3NvaG9mZmljZS9zd2FnZ2VyLWRvd24vYmxvYi9tYXN0ZXIvc3JjL3Rlc3QvcmVzb3VyY2VzL3BldHN0b3JlLm1kCgpUaGUgYmFzaWMgaWRlYSBhcm91bmQgdGhlIGRlc2lnbiBvZiBnZW5lcmF0ZWQgZG9jdW1lbnQgaXMgYGZsYXR0ZW5gLgoKU3dhZ2dlciBzcGVjIHByb21vdGVzIHJlLXVzYWJpbGl0eSwgc28gdGhlIHNjaGVtYSBjYW4gYmUgZGVmaW5lZCBhcyBhIGNvbXBvbmVudCBhbmQgcmVmZXJlbmNlZCB3aGVuIG5lY2Vzc2FyeS4KU3dhZ2dlciBVSSBwcmVzZXJ2ZXMgdGhlIGNvbW1vbiBjb21wb25lbnQgc2VjdGlvbiwgYnV0IGFsc28gc2hvdyBzY2hlbWEgZGlyZWN0bHkgd2hlcmUgaXQgaXMgbmVlZGVkLgoKQSBtYXJrZG93biBkb2N1bWVudCBpcyBsZXNzIGludGVyYWN0aXZlLgoKSWYgdGhlIHJlYWRlciBoYXMgdG8ganVtcCBiYWNrIGFuZCBmb3J0aCB0byBsb29rdXAgc2NoZW1hIGRlZmluaXRpb24sIGl0IHdpbGwgc29vbiBtYWtlcyByZWFkaW5nIGV4cGVyaWVuY2UgbGVzcyBqb3lmdWwuClNvIGEgc3dhZ2dlci1kb3duIGdlbmVyYXRlZCBkb2N1bWVudCBiYXNpY2FsbHkgZmxhdHRlbnMgYWxsIHNjaGVtYSBhbmQgbWFrZSB0aGVtIGF2YWlsYWJsZSB3aGVyZSB0aGV5IGFyZSBuZWVkZWQuCkZvciBleGFtcGxlOiBpZiB0aGUgc2NoZW1hIGlzIHJlZmVyZW5jZWQgaW4gcmVxdWVzdCBib2R5LCB0aGUgZGV0YWlscyB3aWxsIGJlIGFkZGVkIHJpZ2h0IGluIHRoZSByZWxldmFudCBzZWN0aW9uLgpUaGUgc2FtZSBydWxlIGFwcGxpZXMgdG8gcmVzcG9uc2VzLgoKQWxzbywgdGhlIHN3YWdnZXIgc3BlYyBncm91cHMgZGlmZmVyZW50IG1ldGhvZHMgdW5kZXIgdGhlIHNhbWUgcGF0aC4gVGhpcyBtYWtlcyBwZXJmZWN0IHNlbnNlIHdpdGggU3dhZ2dlciBVSSwKYnV0IGFsc28gbWFrZSB0aGUgbWFya2Rvd24gZG9jdW1lbnQgbW9yZSB2ZXJib3NlIGFuZCBjcmVhdGVzIG1vcmUgaGllcmFyY2h5LgpBcyBhIHJlc3VsdCwgYWxsIEFQSXMgYXJlIGZsYXR0ZW5lZCBpbnRvIGEgbGlzdCwgYnV0IHRob3NlIHdpdGggdGhlIHNhbWUgcGF0aCBhcmUgcGxhY2VkIG5leHQgdG8gZWFjaCBvdGhlciB0byBtYWtlIApyZWFkaW5nIGV4cGVyaWVuY2UgbW9yZSBzbW9vdGhseS4gVGhpcyBhbHNvIGFwcGxpZXMgdG8gZGlmZmVyZW50IHJlcXVlc3QgY29udGVudCB0eXBlcyBvciBkaWZmZXJlbnQgcmVzcG9uc2Ugc3RhdHVzIApjb2RlICsgY29udGVudCB0eXBlcy4KCiMjIyMgSlNPTiBzY2hlbWEKCkpTT04gaXMgdGhlIGRlLWZhY3RvIGZvcm1hdCBvZiBBUEkgaW4gdGhlIG1vZGVybiBhZ2UsIGJ1dCBkb2N1bWVudGluZyBKU09OIGlzIG5vdCBhcyBzdHJhaWdodCBmb3J3YXJkIGFzIGl0IHNlZW1zLgoKc3dhZ2dlci1kb3duIHRha2VzIHRoZSBmbGF0dGVuaW5nIGFwcHJvYWNoIGFuZCBjb252ZXJ0cyB0aGUgZW50aXJlIHNjaGVtYSBpbnRvIGEgdGFibGUsIHdpdGgga2V5IHJlcHJlc2VudGVkIGluIEpTT04gcGF0aC4KClRha2UgdGhpcyBKU09OIGZvciBleGFtcGxlOgoKYGBganNvbgp7CiAgImNvZGUiOiAiRk9PIiwKICAibWVzc2FnZSI6ICJGb28gbWVzc2FnZSIsCiAgInBhcmFtZXRlcnMiOiBbCiAgICB7CiAgICAgICJuYW1lIjogInBhcmFtMSIsCiAgICAgICJ2YWx1ZSI6ICJ2YWx1ZSIKICAgIH0KICBdCn0KYGBgCgpUaGUgc2NoZW1hIHdpbGwgYmUgZG9jdW1lbnRlZCBpbiBiZWxvdyBmb3JtYXQuCgp8IEtleSB8IFR5cGUgfCBEZXNjcmlwdGlvbiB8CnwgLS0tIHwgLS0tLSB8IC0tLS0tLS0tLS0tIHwKfCAkLmNvZGUgfCBzdHJpbmcgfCBFcnJvciBjb2RlIHwKfCAkLm1lc3NhZ2UgfCBzdHJpbmcgfCBIdW1hbiByZWFkYWJsZSBlcnJvciBtZXNzYWdlIHwKfCAkLnBhcmFtZXRlcnNbXS5uYW1lIHwgc3RyaW5nIHwgUGFyYW1ldGVyIG5hbWUgfAp8ICQucGFyYW1ldGVyc1tdLnZhbHVlIHwgc3RyaW5nIHwgUGFyYW1ldGVyIHZhbHVlIHwKCldlIGhvcGUgdGhlIHRhYnVsYXIgZGlzcGxheSBoZWxwcyB0byBleHByZXNzIHRoZSBzY2hlbWEgZWxlbWVudCBpbiBhIG1vcmUgb3JnYW5pemVkIG1hbm5lci4KCiMjIyMgRG9jdW1lbnQgb3JnYW5pemF0aW9uCgpXaXRoIHRoZSBhYm92ZSBjb25jZXB0cyBpbiBtaW5kLCB0aGUgb3V0cHV0IGRvY3VtZW50IGlzIG9yZ2FuaXplZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgoKMS4gSW5mbwoyLiBTZXJ2ZXJzCjMuIEFQSSBmbGF0dGVuZWQgaW50byBgbWV0aG9kIHBhdGhgIChleDogR0VUIC9mb28vYmFyKQoKV2l0aGluIGVhY2ggQVBJIGVuZHBvaW50LCB0aGUgc2VjdGlvbnMgYXJlIHJlbmRlcmVkIGFzIHRoZSBiZWxvdwoKMS4gU3VtbWFyeQoyLiBEZXNjcmlwdGlvbgozLiBQYXJhbWV0ZXJzCjQuIFJlcXVlc3QgYm9keQo1LiBSZXNwb25zZXMgZmxhdHRlbmVkIGludG8gYHN0YXR1cyBjb250ZW50LXR5cGVgIChleDogMjAwIGFwcGxpY2F0aW9uL2pzb24pCgojIyMjIE91dHB1dCBmb3JtYXQKCi0gbWFya2Rvd24KLSBodG1sCgpUaGUgSFRNTCBpcyB1bnN0eWxlZCBhbmQgaXMgbW9yZSBzdWl0YWJsZSB3aGVuIGFueSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWUKCi0gWW91IGhhdmUgSFRNTCBtYXJrdXAgaW4geW91ciBzcGVjIGZpbGUuIFlvdSdsbCBuZWVkIHRvIHN0eWxlIHRoZSBvdXRwdXQgeW91cnNlbGYuCi0gWW91IGhhdmUgYSB3YXkgdG8gc3R5bGUgeW91ciBIVE1MLiBGb3IgZXhhbXBsZSwgaXQgY2FuIGJlIHBhc3RlZCBpbnRvIENvbmZsdWVuY2Ugd2lraS4KCktub3duIExpbWl0YXRpb25zCi0tLS0tLS0tLS0tLS0tLS0tCgotIFN3YWdnZXIgMyBvbmx5Ci0gQWR2YW5jZWQgc3dhZ2dlciBmZWF0dXJlIGxpa2Ugb25lT2YsIGFueU9mIGFyZSBub3Qgc3VwcG9ydGVkLiBXZSdyZSBsb29raW5nIHRvIGFkZCB0aGVtIGlmIHJlcXVlc3RlZC4KLSBPcGVuIElEIHNlY3VyaXR5IHN0cnVjdHVyZXMgYXJlIG5vdCBzdXBwb3J0ZWQKCk1haW50ZW5hbmNlCi0tLS0tLS0tLS0tCgpTZWUgW0RFVi5tZF0oREVWLm1kKSBmb3IgcmVmZXJlbmNlCgpQcmUtcmVxdWlzaXRlCi0tLS0tLS0tLS0tLS0KCllvdSBuZWVkIEphdmEgOCsgdG8gcnVuLgoKUnVubmluZwotLS0tLS0tCgpEb3dubG9hZCB0aGUgbGF0ZXN0IGJpbmFyeSBmcm9tIFtyZWxlYXNlXShodHRwczovL2dpdGh1Yi5jb20vc29ob2ZmaWNlL3N3YWdnZXItZG93bi9yZWxlYXNlcykgCmFuZCBleGVjdXRlIGluIGNvbW1hbmQgcHJvbXB0IHdpdGg6CgpgYGAKamF2YSAtamFyIHN3YWdnZXItZG93bi1hbGwuamFyIFtvcHRpb25zXSA8c3BlY19maWxlbmFtZT4KYGBgCgpUaGUgZG93bmxvYWRlZCBqYXIgaXMgYSBgZmF0IGphcmAsIGl0IGNhbiBiZSBleGVjdXRlZCB3aXRob3V0IGZ1cnRoZXIgZGVwZW5kZW5jaWVzLgoKIyMgVXNhZ2UKCmBgYApqYXZhIC1qYXIgYnVpbGQvbGlicy9zd2FnZ2VyLWRvd24tYWxsLmphciAtaGVscApVc2FnZTogPG1haW4gY2xhc3M+IFstaF0gWy1mPTxmb3JtYXQ+XSBbLXI9PGZsYXZvcj5dIEZJTEUKICAgICAgRklMRSAgICAgICAgICAgICAgICBTd2FnZ2VyIFlBTUwgZmlsZXMgdG8gY29udmVydAogIC1mLCAtLWZvcm1hdD08Zm9ybWF0PiAgIFRoZSBvdXRwdXQgZm9ybWF0LiBWYWx1ZXM6IE1ELCBIVE1MCiAgLWgsIC0taGVscCAgICAgICAgICAgICAgZGlzcGxheSBhIGhlbHAgbWVzc2FnZQogIC1yLCAtLWZsYXZvcj08Zmxhdm9yPiAgIFRoZSBnZW5lcmF0aW9uIGZsYXZvci4gVmFsdWVzOiBTVEFOREFSRApgYGAK readmeEtag: '"6b45a5fd8c3b91be9a2fde89dcac42e6d386edc1"' readmeLastModified: Sun, 28 Mar 2021 02:54:00 GMT repositoryId: 340091372 description: >- A CLI application to render OpenAPI 3 (swagger 3.0) spec to markdown / html created: '2021-02-18T15:23:24Z' updated: '2023-09-01T09:00:30Z' language: Kotlin archived: false stars: 4 watchers: 1 forks: 0 owner: sohoffice logo: https://avatars.githubusercontent.com/u/3193955?v=4 repoEtag: '"0f512639c0a1b6cab5acbee7da8abe11a096c009b5926c8c76593cacd3426361"' repoLastModified: Fri, 01 Sep 2023 09:00:30 GMT foundInMaster: true category: Parsers id: 970de5664bcc609366a6f02d1e11252f - source: openapi3 tags repository: https://github.com/rodnansol/openapi-extender v3: true id: 653701984139345acce908cfa00bd535 repositoryMetadata: base64Readme: >- PSBPcGVuQVBJIEV4dGVuZGVyCmlmbmRlZjo6ZW52LWdpdGh1YltdCjppY29uczogZm9udAplbmRpZjo6W10KaWZkZWY6OmVudi1naXRodWJbXQo6Y2F1dGlvbi1jYXB0aW9uOiA6ZmlyZToKOmltcG9ydGFudC1jYXB0aW9uOiA6ZXhjbGFtYXRpb246Cjpub3RlLWNhcHRpb246IDpwYXBlcmNsaXA6Cjp0aXAtY2FwdGlvbjogOmJ1bGI6Cjp3YXJuaW5nLWNhcHRpb246IDp3YXJuaW5nOgplbmRpZjo6W10KOnRvYzoKOnRvYy1wbGFjZW1lbnQhOgo6dG9jbGV2ZWxzOiA0CgppbWFnZTo6YmFubmVyLnBuZ1tiYW5uZXIucG5nXQpbLnRleHQtY2VudGVyXQppbWFnZTpodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLWNlbnRyYWwvdi9vcmcucm9kbmFuc29sL29wZW5hcGktZXh0ZW5kZXItcGFyZW50LnN2Z1tNYXZlbiBDZW50cmFsXQppbWFnZTpodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtQXBhY2hlXzIuMC1ibHVlLnN2Z1tBcGFjaGUgMi4wXQppbWFnZTpodHRwczovL2ltZy5zaGllbGRzLmlvL3R3aXR0ZXIvdXJsL2h0dHBzL3R3aXR0ZXIuY29tL3JvZG5hbnNvbC5zdmc/c3R5bGU9c29jaWFsJmxhYmVsPUZvbGxvdyUyMCU0MFJvZG5hblNvbFtdCmltYWdlOmh0dHBzOi8vZGNiYWRnZS52ZXJjZWwuYXBwL2FwaS9zZXJ2ZXIvVVN5aDZYVWp2UFtEaXNjb3JkXQoKdG9jOjpbXQoKPT0gTW90aXZhdGlvbgoKV3JpdGluZyBwcm9wZXIgT3BlbkFQSSBkb2N1bWVudGF0aW9ucyBhcmUgdGltZS1jb25zdW1pbmcsIGlmIHlvdSByZWFsbHkKd2FudCB0byBtYWtlIHN1cmUgeW91ciBjbGllbnRzIGFyZSB1bmRlcnN0YW5kaW5nIHRoZSBBUEkgaXRzZWxmLCBtYXNzaXZlCmFtb3VudCBvZiBzdW1tYXJpZXMgYW5kIGV4YW1wbGVzIHNob3VsZCBiZSBwcm92aWRlZCwgbm90IG1hbmRhdG9yeSwgYnV0CmlmIHlvdSBhcmUgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIEFQSSwgeW91IG1pZ2h0IGJlIGFsc28gaGFwcGllciBpZiBhbgpBUEkgZG9jdW1lbnRhdGlvbiBpcyB2ZXJib3NlIGFzIHBvc3NpYmxlLgoKPT0gR29hbHMKClRoZSBnb2FsIG9mIHRoaXMgcHJvamVjdCB0byBtYWtlIHN1cmUgdGhhdCB5b3VyIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBpcwpoYXZpbmcgZW5vdWdoIGV4dHJhIGRldGFpbHMsIHRoYXQgeW91IG1pZ2h0IG5vdCB3YW50IHRvIHdyaXRlIGJ5CnlvdXJzZWxmIGluIHRoZSBkb2N1bWVudGF0aW9uLCBidXQgeW91IHdvdWxkIGxpa2UgdG8gdXNlIG90aGVyLCBlYXJsaWVyCndyaXR0ZW4gcmVzb3VyY2VzIHRvIGZ1bGZpbCB0aGVzZSByZXF1aXJlbWVudHMvbmVlZHMvZ2FwcyBpbiB5b3VyCmRvY3VtZW50YXRpb24uCgpEZXZlbG9wZXJzIGFyZSB3cml0aW5nIHVuaXQgYW5kIGludGVncmF0aW9uIHRlc3RzIG9uIHRoZWlyIHByb2plY3RzLCBhbmQKYSBnb29kIHRlc3QgY291bGQgYmUgcHJvdmlkaW5nIHRoZSBkaWZmZXJlbnQgaW5wdXQgYW5kIG91dHB1dCB2YWx1ZXMgZm9yCmEgY29tcG9uZW50LiBBUEkgZGV2ZWxvcGVycyBhcmUgd3JpdGluZyB0b25zIG9mIGludGVncmF0aW9uIHRlc3RzIGZvcgp0aGUgZGlmZmVyZW50IHVzZSBjYXNlcyBhbmQgaXQgaGFwcGVucyBzb21ldGltZXMgdGhhdCB0aGV5IGFyZSBub3QKZ2l2aW5nIG91dCB0aGVzZSB0ZXN0cywgYmVjYXVzZSBvZiBjb3Vyc2Ugc2VjdXJpdHkgYW5kIHByaXZhY3kgcnVsZXMsCmJ1dCBzb21lIG91dHB1dCBvZiB0aGVzZSB0ZXN0cyBjb3VsZCBiZSB1c2VkIHRvIGV4dGVuZCB0aGUgYWxyZWFkeQpleGlzdGluZyBBUEkuCgo9PSBBbHRlcm5hdGl2ZXMKCiogaHR0cHM6Ly9naXRodWIuY29tL3NwcmluZy1wcm9qZWN0cy9zcHJpbmctcmVzdGRvY3NbU3ByaW5n4oCZcyBSRVNUIERvY3NdCmRvZXMgc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCBpdCBpcyBub3QgaGVhdmlseSBpbnZvbHZlZCBpbiB0aGUgT3BlbkFQSQppbml0aWF0aXZlLgoqIGh0dHBzOi8vZ2l0aHViLmNvbS9lUGFnZXMtZGUvcmVzdGRvY3MtYXBpLXNwZWNbU3ByaW5nIFJFU1QgRG9jcyBBUEkKc3BlY2lmaWNhdGlvbiBJbnRlZ3JhdGlvbl0ga2luZGEgdGhlIHdhbnRlZCBmZWF0dXJlcywgYnV0IGl0IGlzIHRvdGFsbHkKdGVzdCBkcml2ZW4uCgo9PSBJbXBsZW1lbnRhdGlvbgoKVGhlIHByb2plY3QgaXMgc3BsaXQgdXAgaW50byBtdWx0aXBsZSBtb2R1bGVzIHRvIG1ha2Ugc3VyZSB0aGUgZW5kIHVzZXJzCmFyZSBub3QgZGVwZW5kaW5nIG9uIHNvbWUgdW5uZWNlc3NhcnkgZGVwZW5kZW5jaWVzOgoKKiBvcGVuYXBpLWV4dGVuZGVyIC0gQ29yZSBwYXJ0LCB0aGF0IGRvZXMgdGhlIGBgaGVhdnktbGlmdGluZycnIHRoYXQKd29ya3Mgd2l0aCB0aGUgT3BlbkFQSSBtb2RlbCBjbGFzc2VzCiogb3BlbmFwaS1leHRlbmRlci1yZXNvdXJjZS1nZW5lcmF0b3IgLSBSZXNvdXJjZSBnZW5lcmF0b3IgbW9kdWxlIHRoYXQKaXMgZ2VuZXJhdGluZyB0aGUgcmVzb3VyY2UgZmlsZXMgYmFzZWQgb24gZGlmZmVyZW50IGNvbnRlbnQKKiBvcGVuYXBpLWV4dGVuZGVyLXNwcmluZy10ZXN0IC0gU3ByaW5nIFRlc3QgZXh0ZW5zaW9uCiogb3BlbmFwaS1leHRlbmRlci1zcHJpbmdkb2MgLSBTcHJpbmdEb2MgZXh0ZW5zaW9uCgo9PSBVc2FnZQoKUGxlYXNlIGNoZWNrIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRhdGlvbiBzZWN0aW9ucyBmb3IgeW91ciByZXF1ZXN0ZWQgZmVhdHVyZXMKCj09PSA8PGRvY3MvZ2VuZXJhdGVkLWV4YW1wbGVzLmFkb2MjZ2VuZXJhdGVkLWV4YW1wbGVzLCBHZW5lcmF0ZWQgZXhhbXBsZXMgd2l0aCB0ZXN0cz4+CgppZm5kZWY6OmVudi1naXRodWJbXQppbmNsdWRlOjpkb2NzL2dlbmVyYXRlZC1leGFtcGxlcy5hZG9jW10KZW5kaWY6OltdCgo9PT0gPDxkb2NzL2V4dHJhLXN1bW1hcmllcy5hZG9jI2V4dHJhLXN1bW1hcmllcywgRXh0cmEgc3VtbWFyeSBhbmQgZGVzY3JpcHRpb24gZm9yIG9wZXJhdGlvbnMgPj4KCmlmbmRlZjo6ZW52LWdpdGh1YltdCmluY2x1ZGU6OmRvY3MvZXh0cmEtc3VtbWFyaWVzLmFkb2NbXQplbmRpZjo6W10K readmeEtag: '"84aaf4cfeb2ad6551317d8996642f9efcad24007"' readmeLastModified: Mon, 23 Jan 2023 08:16:03 GMT repositoryId: 534821652 description: >- OpenAPI Extender that will help you to move faster with your API documentation. created: '2022-09-09T22:14:58Z' updated: '2025-05-28T12:33:16Z' language: Java archived: false stars: 5 watchers: 1 forks: 0 owner: rodnansol logo: https://avatars.githubusercontent.com/u/107804610?v=4 license: Apache-2.0 repoEtag: '"3cad0ffc3d8d1835bb5c4cfe585cf7ee7efe1358834b67d666ac136727b1f062"' repoLastModified: Wed, 28 May 2025 12:33:16 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/louiscavalcante/ts-node-boilerplate-2024 v3: true id: 51a3ee3d0ec902f994c8cc1da04f2258 repositoryMetadata: base64Readme: >- IyMgVXNhZ2UKCkluc3RhbGwgdGhlIHBhY2thZ2VzLgoKYGBgYmFzaAokIG5wbSBpCmBgYAoKSW5zdGFsbCB0aGUgcmVxdWlyZW1lbnRzLgoKYGBgYmFzaAokIG5wbSBydW4gZGV2OnJlcXVpcmVtZW50cwpgYGAKCiMjIFRpcHM6CgotICAgVGhpcyBwcm9qZWN0IHNlcGFyYXRlcyBgcHJldHRpZXJgIGp1c3QgZm9yIGZvcm1hdHRpbmcgYW5kIGBlc2xpbnRgIGp1c3QgZm9yIGxpbnRpbmcsIGFzIGl0J3MgYWR2aXNlZCBieSB0aGUgZGV2ZWxvcGVycy4gVGhhdCdzIHdoeSBJIGRvbid0IHVzZSBgZXNsaW50LXBsdWdpbi1wcmV0dGllcmAKCi0gICBXaGVuIHlvdSBjb21taXQgc29tZXRoaW5nLCBgaHVza3lgLCBgbXJtYCBhbmQgYGxpbnQtc3RhZ2VgIGFyZSBzZXQgdG8gcnVuIGBwcmV0dGllcmAsIGBlc2xpbnRgIGFuZCBgamVzdGAuPGJyPgogICAgVGhpcyB3aWxsIGZpeCBldmVyeXRoaW5nIGFuZCBsZXQgeW91IGtub3cgaWYgeW91IGZvcmdvdCBhYm91dCBhbnkgZXJyb3IuPGJyPgogICAgSXQgd2lsbCBhbHNvIHJ1biB0ZXN0cyB0aGF0IHdlcmUgY3JlYXRlZCBvciBtb2RpZmllZC4KCi0gICBFdmVyeSB0aW1lIHlvdSB1cGRhdGUgdGhlIGBvcGVuYXBpLnlhbWxgIGZpbGUsIHlvdSBuZWVkIHRvIHJ1biB0aGUgYG5wbSBydW4gdXBkYXRlOm9wZW5hcGlgIHNjcmlwdCwgdG8ga2VlcCBgb3BlbmFwaS1zY2hlbWEuZC50c2AgdXBkYXRlZCwgc28geW91IGNhbiB1c2UgdGhlIG9wZW5hcGkncyBzY2hlbWFzIGFzIHR5cGVzIGZvciB0aGlzIGFwcGxpY2F0aW9uLgoKLSAgIFRoZSBgZXJyb3ItaGFuZGxlci5taWRkbGV3YXJlYCB3aWxsIGhhbmRsZSBhbGwgZXJyb3JzLCB0aGlzIGFsc28gaW5jbHVkZXMgYW55IHVua25vd24gcm91dGVzIGJ5IHRoZSBgb3BlbmFwaS55YW1sYCBhbmQgdGhlIGVycm9ycyB0aHJvd24gYnkgdGhlIGNsYXNzZXMgYERvbWFpbkVycm9yYCBhbmQgYEF4aW9zUmVxdWVzdEVycm9yYC48YnI+CiAgICBXaGVuIGBOT0RFX0VOVmAgaXMgc2V0IHRvIGBwcm9kdWN0aW9uYC4gSXQgd2lsbCBOT1QgaW50ZXJmZXJlIHdpdGggdGhlIGxvZ3MsIGJ1dCB3aWxsIGNoYW5nZSB0aGUgZXJyb3IgcmVzcG9uc2UgdG86PGJyPgogICAgYGh0dHAgc3RhdHVzIDUwMGAgYW5kIHRoZSBib2R5IHJlc3BvbnNlIHRvOiBgU29tZXRoaW5nIGJhZCBoYXBwZW5lZGA8YnI+CiAgICBVbmxlc3MgaXQncyBhIGBEb21haW5FcnJvcmAgdGhhdCB0aGUgY2xpZW50IG11c3Qga25vdyBhYm91dCEKCi0gICBVbmtub3duIGV4Y2VwdGlvbnMgYnkgdGhlIGFwcGxpY2F0aW9uLCB3aWxsIHVzZSB0aGUgRXJsYW5nJ3MgbGV0IGl0IGNyYXNoIHBoaWxvc29waHkuPGJyPgogICAgQmFzaWNhbGx5IGl0IGxldHMgdGhlIGFwcCBjcmFzaCBzbyB0aGUgb3JjaGVzdHJhdG9yIGNhbiByZXN0YXJ0IHRoZSBhcHBsaWNhdGlvbi48YnI+CiAgICBCdXQgaG93IHRoaXMgcmVhbGx5IHdvcmtzPzxicj4KICAgIEZpcnN0IHRoZSBhcHAgd2lsbCBzdG9wIHJlY2VpdmluZyByZXF1ZXN0LCB0aGVuIGZpbmlzaCB0aGUgcmVxdWVzdHMgdGhhdCB3ZXJlIGFscmVhZHkgaW4gcHJvZ3Jlc3MgYW5kIGdyYWNlZnVsbHkgc2h1dHMgZG93biBldmVyeXRoaW5nLjxicj4KICAgIFRoaXMgYXBwcm9hY2ggaW1wcm92ZXMgc3lzdGVtIHJlbGlhYmlsaXR5Ljxicj4KICAgIElmIHlvdSdyZSBvbiBLdWJlcm5ldGVzLCB5b3UgY2FuIHVzZSBJbmdyZXNzIG9yIG90aGVyIGxvYWQgYmFsYW5jZXIgc3RyYXRlZ2llcyBmb3IgeW91ciBhcHBsaWNhdGlvbi4KCi0gICBUaGVyZSdzIGEgYHJhdGVMaW1pdGVyYCBtZXRob2QgY29uZmlndXJlZCB0byBsaW1pdCByZXF1ZXN0IHBlciB1c2VyJ3MgaXAuPGJyPgogICAgWW91IGNhbiBkZWxldGUgaXQgaWYgeW91IGRlY2lkZSB0byB1c2UgdGhpcyBwcm9qZWN0IGFzIGEgcHJpdmF0ZSBBUEkuCgotICAgZG90ZW52IGlzIHNldCBqdXN0IGZvciBKZXN0Ljxicj4KICAgIEZvciBkZXZlbG9wbWVudCBpdCB1c2VzIGAtLWVudi1maWxlIC4vZW52aXJvbm1lbnRzLy5lbnZgCgotICAgSW5zaWRlIHRoZSBgdHNjb25maWcuanNvbmAgdW5kZXIgYHBhdGhzOiB7fWAgeW91IGNhbiBzZXQgY3VzdG9tIHBhdGhzLjxicj4KICAgIFlvdSBkb24ndCBuZWVkIHRvIHNldCB0aGVtIGFueXdoZXJlIGVsc2UsIHRoaXMgcHJvamVjdCBhbHJlYWR5IGRvZXMgdGhhdCBmb3IgeW91LgoKLSAgIFRoZXJlIGFyZSB0d28gZGVidWdnZXJzIGNvbmZpZ3VyZWQgd2l0aCBhdXRvIHJlbG9hZCB0byBmYWNpbGl0YXRlIHlvdXIgd29ya2Zsb3cuPGJyPgogICAgU28geW91IGRvbid0IG5lZWQgdG8ga2VlcCByZXN0YXJ0aW5nIHlvdXIgZGVidWdnZXIgbWFudWFsbHkuPGJyPgogICAgT25lIGZvciBOb2RlIGFuZCB0aGUgb3RoZXIgZm9yIEplc3QuCgotICAgWW91IGNhbiBydW4vZGVidWcganVzdCBvbmUgdGVzdCBhdCBhIHRpbWUgd2l0aCB0aGUgZXh0ZW5zaW9uIGBKZXN0IFJ1bm5lcmAgZnJvbSB0aGUgYXV0aG9yIGBmaXJzdHRyaXMgYDxicj4KICAgIFRoZSBwcm9qZWN0IGlzIGFscmVhZHkgc2V0IHRvIHJ1biBpdCB3aXRob3V0IGFueSBwcm9ibGVtcy48YnI+CiAgICBQUzogSSd2ZSBmb3VuZCBhIGJ1ZyBpbiB0aGlzIGV4dGVuc2lvbiBvbiBsaW51eCwgYnV0IHRoZSBidWcganVzdCBvY2N1cnMgaWYgeW91IHNldCB5b3VyIGBpdChgYCwgKCkgPT4ge30pYCB3aXRoIHRlbXBsYXRlIHN0cmluZ3MgdGhhdCBoYXMgbXVsdGlwbGUgbGluZXMuIFRoZSBidWcgaGFwcGVucyB3aGVuIHRoZSBmaXJzdCBsaW5lIGhhcyBhIHNpbWlsYXIgZGVzY3JpcHRpb24gd2l0aCBhbm90aGVyIHRlc3QgYmVmb3JlIHRoZSBsaW5lIGJyZWFrcy48YnI+CiAgICBCZXNpZGVzIHRoYXQgaXQgd29ya3MgZ3JlYXQhCgojIyBXWVAKCi0gICBVbml0IHRlc3RzCg== readmeEtag: '"f9e7803c7ba79f90e84ed371ec969fd46ef4188e"' readmeLastModified: Tue, 23 Jan 2024 13:47:23 GMT repositoryId: 739321785 description: null created: '2024-01-05T09:37:17Z' updated: '2025-03-13T01:54:32Z' language: TypeScript archived: false stars: 3 watchers: 1 forks: 0 owner: louiscavalcante logo: https://avatars.githubusercontent.com/u/32718388?v=4 license: MIT repoEtag: '"b8ecb67a9c6e09e04024dbed2dcdc12ae6cf5168c62b8ab1eb4a1fa29fa36289"' repoLastModified: Thu, 13 Mar 2025 01:54:32 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/methodus/homematic_openapi v3: true repositoryMetadata: base64Readme: >- IyBob21lbWF0aWNfb3BlbmFwaQpPcGVuQVBJIDMuMCBzcGVjIGJhc2VkIEhvbWVtYXRpYyBBUEkK readmeEtag: '"0981c8bbbd52f0de41671bde0a9a84c15dc02937"' readmeLastModified: Sat, 16 Mar 2019 20:41:03 GMT repositoryId: 170865647 description: OpenAPI 3.0 spec based Homematic API created: '2019-02-15T13:01:53Z' updated: '2022-09-15T06:37:47Z' language: Tcl archived: false stars: 4 watchers: 3 forks: 0 owner: methodus logo: https://avatars.githubusercontent.com/u/4979595?v=4 license: Apache-2.0 repoEtag: '"218d44d2a93d64e2d3e5d11f7aa6cd5136b9f1e9d69e3cd69693470527e10dd5"' repoLastModified: Thu, 15 Sep 2022 06:37:47 GMT foundInMaster: true category: Parsers id: 4f9c3ac7e771ac85e88ed15e1140c97e - source: openapi3 tags repository: https://github.com/felixthec/openapi-fastapi-client v3: true id: 4c04f44b7d6d0aba1b972175daf2fd27 repositoryMetadata: base64Readme: >- WyFbUHl0aG9uIDMuMTBdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcHl0aG9uLTMuMTAtYmx1ZS5zdmcpXShodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy9yZWxlYXNlL3B5dGhvbi0zMTAwLykKIVtQeXRob24gYXBwbGljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9GZWxpeFRoZUMvb3BlbmFwaS1mYXN0YXBpLWNsaWVudC93b3JrZmxvd3MvUHl0aG9uJTIwYXBwbGljYXRpb24vYmFkZ2Uuc3ZnKQpbIVtDb2RlIHN0eWxlOiBibGFja10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlJTIwc3R5bGUtYmxhY2stMDAwMDAwLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9wc2YvYmxhY2spClshW0ltcG9ydHM6IGlzb3J0XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlLyUyMGltcG9ydHMtaXNvcnQtJTIzMTY3NGIxP3N0eWxlPWZsYXQmbGFiZWxDb2xvcj1lZjgzMzYpXShodHRwczovL3B5Y3FhLmdpdGh1Yi5pby9pc29ydC8pCgoKIyBPcGVuYXBpIHlhbWwgZmlsZSB0byBGYXN0QXBpIENsaWVudApBIGNvbW1hbmRsaW5lIHRvb2wgdG8gZ2VuZXJhdGUgQXBpIGBmdW5jdGlvbnNgIGFuZCB0aGVpciByZXF1aXJlZCBgcHlkYW50aWMgTW9kZWxgIFNjaGVtYSBmcm9tIGFuIGBvcGVuYXBpLnlhbWxgIG9mIHZlcnNpb24gMwoKIyMgSW5zdGFsbGF0aW9uCmBgYHNoZWxsCnBpcCBpbnN0YWxsIG9wZW5hcGktZmFzdGFwaS1jbGllbnQKYGBgCgojIyBVc2FnZQpgYGBzaGVsbApvcGVuYXBpLWZhc3RhcGktY2xpZW50IC4vb3BlbmFwaS55YW1sIC4vbXktY2xpZW50CmBgYApgYGBzaGVsbApvcGVuYXBpLWZhc3RhcGktY2xpZW50IC4vb3BlbmFwaS55YW1sIC4vbXktY2xpZW50IC0tYXN5bmMKYGBgCi0gdGhpcyB3aWxsIGdlbmVyYXRlIHVuZGVyIHRoZSBmb2xkZXIgYG15LWNsaWVudGAgZm9sbG93aW5nIGZpbGVzCiAgLSBgX19pbml0X18ucHlgIGlmIG5vdCBleGlzdHMKICAtIGBhcGkucHlgIGhlcmUgYXJlIGFsbCBmdW5jdGlvbiBjYWxscyB0byB0aGUgZXh0ZXJuYWwgYXBpCiAgLSBgc2NoZW1hLnB5YCBoZXJlIGFyZSBhbGwgcHlkYW50aWMgTW9kZWxzCiAgCgojIyBBcmd1bWVudHMKLSBgT1BFTkFQSV9GSUxFICBbcmVxdWlyZWRdYAotIGBPVVRQVVRfUEFUSCAgIFtyZXF1aXJlZF1gCgojIyBPcHRpb25zCi0gYC0tc3luY2AgIEFsbCByZXF1ZXN0cyB0byB0aGUgY2xpZW50IGFyZSBzeW5jaHJvbm91cy4gIF9kZWZhdWx0XwotIGAtLWFzeW5jYCBBbGwgcmVxdWVzdHMgdG8gdGhlIGNsaWVudCBhcmUgYXN5bmNocm9ub3VzIHdpdGggX19haW9odHRwX18uCgojIyBIZWxwCmBgYHNoZWxsCm9wZW5hcGktZmFzdGFwaS1jbGllbnQgLS1oZWxwCmBgYAoKIVtdKG9wZW5hcGktZmFzdGFwaS1jbGllbnRfbG9uZy5naWYpCg== readmeEtag: '"1a0cd96f4b2b1ce9a055f572f6f62050b5275e64"' readmeLastModified: Sat, 19 Nov 2022 13:52:19 GMT repositoryId: 564465979 description: A tool to autogenerate FastApi Clients from given openapi.yaml. created: '2022-11-10T19:27:40Z' updated: '2026-01-11T18:44:30Z' language: Python archived: false stars: 9 watchers: 1 forks: 0 owner: FelixTheC logo: https://avatars.githubusercontent.com/u/15969581?v=4 license: MIT repoEtag: '"e2c3dd5b3d3e5389da3c41aad33f77e6d03b700f3022ddc43b3a46f5e78589cf"' repoLastModified: Sun, 11 Jan 2026 18:44:30 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/hardiksinghbehl/spring-boot-freemarker-java-mail-api v3: true repositoryMetadata: base64Readme: >- IyBIZWR3aWcKIyMjIyBQcm9vZi1vZi1jb25jZXB0IGFwcGxpY2F0aW9uIHRvIHNlbmQgZW1haWxzIHRvIHVzZXIgb24gZXZlbnQgb2NjdXJlbmNlCgpbQ2xpY2sgSGVyZSBUbyBVc2UgUnVubmluZyBBcHBsaWNhdGlvbl0oaHR0cHM6Ly9qYXZhLW1haWwtZnJlZW1hcmtlci1zcHJpbmcuaGVyb2t1YXBwLmNvbS9oZWR3aWcvc3dhZ2dlci11aS5odG1sKQoKIyMgVGVjaG5vbG9naWVzIFVzZWQKKiBKYXZhIFNwcmluZyBCb290CiogSmF2YU1haWwtQVBJCiogU3ByaW5nIEV2ZW50cwoqIEFwYWNoZSBGcmVlbWFya2VyCiogSlBBL0gyIGluLW1lbW9yeSBkYXRhYmFzZQoqIExvbWJvawoqIE9wZW4tQVBJIChzd2FnZ2VyLXVpKSAKKiBbQm9vdHN0cmFwLUVtYWlsIEVkaXRvcl0oaHR0cHM6Ly9hcHAuYm9vdHN0cmFwZW1haWwuY29tL2VkaXRvcikKCiMjIFNwcmluZyBFdmVudHMKKiBbUmVmZXJlbmNlIEFydGljbGVdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9zcHJpbmctZXZlbnRzKQoqIEV2ZW50IGNsYXNzZXMgd2lsbCByZXByZXNlbnQgYW4gZXZlbnQgZm9yIHdoaWNoIGEgbWFpbCBoYXMgdG8gYmUgc2VudCAoYWNjb3VudC1jcmVhdGlvbi1ldmVudCBpbiB0aGlzIGNvbnRleHQgY2FuIGJlIGFueXRoaW5nIGRlcGVuZGluZyBvbiBidXNpbmVzcyBsb2dpYykKKiBBIGxpc3RlbmVyIGNsYXNzIHRoYXQgbGlzdGVucyB0byB0aGUgYWJvdmUgY3JlYXRlZCBldmVudCBhbmQgZXhlY3V0ZXMgY29kZSB3aGVuZXZlciB0aGUgYWJvdmUgZXZlbnQgb2NjdXJlcwoqIEEgcHVibGlzaGVyIHdpbGwgcHVibGlzaCB0aGUgZXZlbnQgKG5vdGlmeSB0aGF0IGV2ZW50IGhhcyBvY2N1cnJlZCkgYW5kIGNhbiBiZSBpbmplY3RlZCBpbiB0aGUgc2VydmljZSBsYXllcgoqIExpc3RlbmVyIG1ldGhvZCB0byBiZSBleGVjdXRlZCBhc3luY2hyb25vdXNseSAocmVjb21tZW5kZWQpCgojIyBNYWluIGNsYXNzZXMgKERyYWcgdG8gbmV3IHdpbmRvdykKKiBbRW1haWwtU2VydmljZV0oaHR0cHM6Ly9naXRodWIuY29tL2hhcmRpa1NpbmdoQmVobC9zcHJpbmctYm9vdC1mcmVlbWFya2VyLWphdmEtbWFpbC1hcGkvYmxvYi9tYWluL3NyYy9tYWluL2phdmEvY29tL2hhcmRpay9oZWR3aWcvbWFpbC9zZXJ2aWNlL0VtYWlsU2VydmljZS5qYXZhKSAodG8gc2VuZCBlbWFpbHMgdG8gcHJvdmlkZWQgZW1haWwtaWQgd2l0aCBwcm92aWRlZCB0ZW1wbGF0ZSBhbmQgc3ViamVjdCkKKiBbQWNjb3VudCBDcmVhdGlvbiBFdmVudF0oaHR0cHM6Ly9naXRodWIuY29tL2hhcmRpa1NpbmdoQmVobC9zcHJpbmctYm9vdC1mcmVlbWFya2VyLWphdmEtbWFpbC1hcGkvYmxvYi9tYWluL3NyYy9tYWluL2phdmEvY29tL2hhcmRpay9oZWR3aWcvbWFpbC9ldmVudC9Vc2VyQWNjb3VudENyZWF0aW9uRXZlbnQuamF2YSkKKiBbQWNjb3VudCBDcmVhdGlvbiBFdmVudCBMaXN0ZW5lcl0oaHR0cHM6Ly9naXRodWIuY29tL2hhcmRpa1NpbmdoQmVobC9zcHJpbmctYm9vdC1mcmVlbWFya2VyLWphdmEtbWFpbC1hcGkvYmxvYi9tYWluL3NyYy9tYWluL2phdmEvY29tL2hhcmRpay9oZWR3aWcvbWFpbC9saXN0ZW5lci9Vc2VyQWNjb3VudENyZWF0aW9uTGlzdGVuZXIuamF2YSkgKHJlY2VpdmVzIHVzZXJDcmVhdGlvblJlcXVlc3REdG8gYXMgaW5wdXQgYW5kIHNlbmRzIG1haWwgdG8gcHJvdmlkZWQgZW1haWwtaWQgYXN5bmNocm9ub3VzbHkpCiogW1VzZXIgU2VydmljZV0oaHR0cHM6Ly9naXRodWIuY29tL2hhcmRpa1NpbmdoQmVobC9zcHJpbmctYm9vdC1mcmVlbWFya2VyLWphdmEtbWFpbC1hcGkvYmxvYi9tYWluL3NyYy9tYWluL2phdmEvY29tL2hhcmRpay9oZWR3aWcvc2VydmljZS9Vc2VyU2VydmljZS5qYXZhKSAoY2xhc3MgdGhhdCBjcmVhdGVzIHVzZXIgYWNjb3VudCBpbiB0aGUgc3lzdGVtIGFuZCBwdWJsaXNoZXMgdGhhdCBBY2NvdW50Q3JlYXRpb25FdmVudCBoYXMgb2NjdXJyZWQpCgojIyBCb290c3RyYXAgRW1haWwKCiogSFRNTCBmb3IgZW1haWxzIGlzIHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIEhUTUwgZm9yIHdlYgoqIENvcHkgdGhlIEhUTUwgZ2VuZXJhdGVkIGZyb20gYm9vdHN0cmFwIGVtYWlsIGVkaXRvciAocmlnaHQgcGFydCBvZiBzY3JlZW4pIHRvIGEgLmZ0bCBmaWxlIHVuZGVyICoqc3JjL21haW4vcmVzb3VyY2VzL3RlbXBsYXRlcyoqIChjb25maWd1cmVkIGluIEZyZWVtYXJrZXJDb25maWd1cmF0aW9uLmNsYXNzKQoqICoqYWNjb3VudC1jcmVhdGlvbi1zdWNjZXNzLmZ0bCoqIGluIHRlbXBsYXRlcyBmb2xkZXIgd2lsbCBiZSBnZW5lcmF0ZWQgdG8gdGhlIGJlbG93IGltYWdlCiogJHtlbWFpbElkfSBhbmQgJHtmdWxsTmFtZX0gd2lsbCBiZSBjb252ZXJ0ZWQgdG8gcHJvdmlkZWQgZW1haWxJZCBhbmQgZnVsbG5hbWUgd2l0aCB0aGUgaGVscCBvZiBhcGFjaGUgZnJlZW1hcmtlcgoKIVttYWlsXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS82OTY5MzYyMS8xMjAyNDA4OTUtNGZjNmRkMDAtYzI3Zi0xMWViLTlmYzUtZWY3ZGE5MTQ0ZDVkLnBuZykKCiMjIExvY2FsIFNldHVwCgoqIEluc3RhbGwgSmF2YSAxNQoqIEluc3RhbGwgTWF2ZW4KClJlY29tbWVuZGVkIHdheSBpcyB0byB1c2UgW3Nka21hbl0oaHR0cHM6Ly9zZGttYW4uaW8vKSBmb3IgaW5zdGFsbGluZyBib3RoIG1hdmVuIGFuZCBqYXZhCgpHbyB0byBhcHBsaWNhdGlvbi5wcm9wZXJ0aWVzIGFuZCBjb25maWd1cmUgeW91ciBlbWFpbCBhbmQgW2FwcCBwYXNzd29yZF0oaHR0cHM6Ly9kZXZhbnN3ZXJzLmNvL2NyZWF0ZS1hcHBsaWNhdGlvbi1zcGVjaWZpYy1wYXNzd29yZC1nbWFpbC8pIChkaWZmcmVudCBmcm9tIHJlZ3VsYXIgcGFzc3dvcmRzKQoKYGBgCnNwcmluZy5tYWlsLnVzZXJuYW1lID0gPEVNQUlMLUlELUhFUkU+CnNwcmluZy5tYWlsLnBhc3N3b3JkID0gPFBBU1NXT1JELUhFUkU+CmBgYAoKUnVuIHRoZSBiZWxvdyBjb21tYW5kcyBpbiB0aGUgY29yZQoKYGBgCm12biBjbGVhbiBpbnN0YWxsCmBgYAoKYGBgCm12biBzcHJpbmctYm9vdDpydW4KYGBgCgpzZXJ2ZXIgcG9ydCBpcyBjb25maWd1cmVkIHRvIDkwOTAgYW5kIGJhc2UtdXJsIHRvIC9oZWR3aWcgd2hpY2ggY2FuIGJlIGNoYW5nZWQgaW4gYXBwbGljYXRpb24ucHJvcGVydGllcyBmaWxlCgpHbyB0byB0aGUgYmVsb3cgdXJsIHRvIHZpZXcgc3dhZ2dlci11aSAoQVBJIGRvY3MpCgpgYGAKaHR0cDovL2xvY2FsaG9zdDo5MDkwL2hlZHdpZy9zd2FnZ2VyLXVpLmh0bWwKYGBgCgpSdW4gVGVzdHMKCmBgYAptdm4gdGVzdApgYGA= readmeEtag: '"e5c50f99c61fbb8cebe0b2911499b1a6f0e2e0d3"' readmeLastModified: Sun, 13 Jun 2021 09:50:13 GMT repositoryId: 372554187 description: >- POC that sends emails to user on account creation event occurrence: made using java spring boot, apache freemarker, java-mail-API, bootstrap email editor and spring events. created: '2021-05-31T15:35:13Z' updated: '2024-10-08T18:15:11Z' language: Java archived: false stars: 4 watchers: 1 forks: 3 owner: hardikSinghBehl logo: https://avatars.githubusercontent.com/u/69693621?v=4 repoEtag: '"3d44be34f0edd04ead67adf8843a60d4ed684b87b61aaaa431a7a76dad88e236"' repoLastModified: Tue, 08 Oct 2024 18:15:11 GMT foundInMaster: true category: Testing id: 9ca6ae8f94bc87c4e5521849e283ea42 - source: openapi3 tags repository: https://github.com/trellix-opensource/intelligent-sandbox-api v3: true id: cfc5cc1c72af92b4d8b81459311749fc repositoryMetadata: base64Readme: >- IyBUcmVsbGl4IEludGVsbGlnZW50IFNhbmRib3ggKEZvcm1lcjogQVREKQpUaGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZvciBpbnRlcmFjdGluZyB3aXRoIFJFU1QgQVBJcyB0aGF0IFtUcmVsbGl4IEludGVsbGlnZW50IFNhbmRib3hdKGh0dHBzOi8vZG9jcy50cmVsbGl4LmNvbS9lbi9idW5kbGU/bGFiZWxrZXk9cHJvZC1hZHZhbmNlZC10aHJlYXQtZGVmZW5zZSkgKGZvcm1lcjogQVREKSBvZmZlcnMuIDxici8+CiMjIEhvdyB0byBnZW5lcmF0ZSBTREtzPwoKIyMjIFNldHRpbmcgdXAgdGhlIE9wZW5BUEkgR2VuZXJhdG9yIGluIHlvdXIgZW52aXJvbm1lbnQgKG9uZSB0aW1lIHN0ZXApCjEuIE5hdmlnYXRlIHRvOiBbT3BlbkFQSSBHZW5lcmF0b3IgaW5zdGFsbGF0aW9uXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvZG9jcy9pbnN0YWxsYXRpb24vKQoyLiBDaG9vc2UgdGhlIENMSSBjbGllbnQgdGhhdCBzdWl0cyB5b3VyIG5lZWQvaW50ZWdyYXRlcyB3aXRoIHlvdXIgcGxhdGZvcm0gYmV0dGVyLiAoKipSZWNvbW1lbmRlZCB0byB1c2UgdjUuMC4xKykqKiAgRm9yIG1vcmUgaW5mbyBwbGVhc2UgdmlzaXQ6IGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCA8YnIvPgozLiBUaGUgT3BlbkFQSSBHZW5lcmF0b3Igc3VwcG9ydHMgbWFueSBkaWZmZXJlbnQgaW50ZWdyYXRpb25zIGFuZCB1c2UgY2FzZXMsIGluY2x1ZGluZyAoYnV0IG5vdCBsaW1pdGVkIHRvKToKICAgIC0gTWF2ZW4gUGx1Z2luCiAgICAtIEdyYWRsZSBQbHVnaW4KICAgIC0gQmF6ZWwgUGx1Z2luCiAgICAtIFNCVCBQbHVnaW4KICAgIC0gQ2FrZSBQbHVnaW4KICAgIC0gQ0xJIHZpYSBIb21lYnJldwogICAgLSBDTEkgdmlhIERvY2tlcgogICAgLSBDTEkgdmlhIG5wbQogICAgLSBHZW5lcmF0b3IgU2FhUzxicj4KICBGb3IgZGV0YWlscywgc2VlIFtXb3JrZmxvdyBJbnRlZ3JhdGlvbnNdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9kb2NzL2ludGVncmF0aW9ucy8pCgoqKk5PVEU6KiogCjxici8+CkluIHNvbWUgY2FzZXMgdGhlIGNsaSBnZW5lcmF0b3IgbWlnaHQgYmUgbmFtZWQgYXMgPGNvZGU+b3BlbmFwaS1nZW5lcmF0b3ItY2xpPC9jb2RlPiBpbnN0ZWFkIG9mIDxjb2RlPm9wZW5hcGktZ2VuZXJhdG9yPC9jb2RlPiwgcGxlYXNlIGJlIGNhdXRpb3VzLgoKIyMjIEdlbmVyYXRpbmcgdGhlIFNESyAKMS4gUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBhbmQgbWFrZSBzdXJlIHlvdSBhcmUgKipydW5uaW5nIHZlcnNpb24gNS4wKy4qKiBbRmluZCB0aGUgbGF0ZXN0IHZlcnNpb24gaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcykgPGJyPgogICAgPGNvZGU+b3BlbmFwaS1nZW5lcmF0b3IgdmVyc2lvbjwvY29kZT4KMi4gRm9yIGxpc3Rpbmcgb3V0IHRoZSBhdmFpbGFibGUgbGFuZ3VhZ2VzIHlvdSBjYW4gdXNlOjxici8+CiAgPGNvZGU+b3BlbmFwaS1nZW5lcmF0b3IgbGlzdDwvY29kZT48YnI+CiAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB2aXNpdDogW0xpc3Qgb2YgY2xpZW50IGdlbmVyYXRvcnNdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9kb2NzL2dlbmVyYXRvcnMvI2NsaWVudC1nZW5lcmF0b3JzKSBmb3IgbGlzdCBvZiBzdXBwb3J0ZWQgY2xpZW50IFNES3MuCjMuIEZvciBnZW5lcmF0aW5nIHRoZSBjbGllbnQgaW4gdGhlIGxhbmd1YWdlIG9mIHlvdXIgY2hvaWNlLCBydW4gdGhlIGZvbGxvd2luZzogPGJyLz4KIDxjb2RlPm9wZW5hcGktZ2VuZXJhdG9yIGdlbmVyYXRlIC1pIGlucHV0X2ZpbGVfbmFtZS55YW1sIC1nIGFfbGFuZ3VhZ2VfbmFtZV9mcm9tX2xpc3QgLW8gL3BhdGgvdG8vb3V0cHV0X2ZvbGRlcjwvY29kZT4gPGJyLz4KIDxici8+CjxiPk5PVEU6PC9iPgo8YnIvPgogMS4gSWYgZHVyaW5nIGV4ZWN1dGlvbiB5b3UgZW5jb3VudGVyIGFuIGVycm9yIHNheWluZyAiYW55IG1vZHVsZS9tb2RlbCBuYW1lIiBub3QgZm91bmQsIGtpbmRseSBnZW5lcmF0ZSB0aGUgY2xpZW50IHVzaW5nIHRoZSBmb2xsb3dpbmcgZ2xvYmFsIHByb3BlcnR5Ojxici8+CiA8Y29kZT5vcGVuYXBpLWdlbmVyYXRvciBnZW5lcmF0ZSAtaSBmaWxlX25hbWUueWFtbCAtZyBhX2xhbmd1YWdlX25hbWVfZnJvbV9saXN0IC1vIC9wYXRoL3RvL291dHB1dF9mb2xkZXIgLS1nbG9iYWwtcHJvcGVydHkgc2tpcEZvcm1Nb2RlbD1mYWxzZTwvY29kZT48YnIvPgoKIyMgSW1wb3J0aW5nIG9wZW5hcGkgc3BlYyBpbiBQb3N0bWFuCkluIG9yZGVyIHRvIGltcG9ydCB0aGUgW09wZW5BUEldKG9wZW5hcGkueWFtbCkgZmlsZSBpbiBwb3N0bWFuLCBwbGVhc2UgcmVmZXIgdG8gOiBbd29ya2luZyB3aXRoIG9wZW5BUEldKGh0dHBzOi8vbGVhcm5pbmcucG9zdG1hbi5jb20vZG9jcy9pbnRlZ3JhdGlvbnMvYXZhaWxhYmxlLWludGVncmF0aW9ucy93b3JraW5nLXdpdGgtb3BlbkFQSS8pCgojIyBDb250cmlidXRpbmcgYW5kIENvZGUgb2YgY29uZHVjdAogRm9yIENvZGUgb2YgY29uZHVjdCBhbmQgY29udHJpYnV0aW9uIGd1aWRlbGluZXMgcGxlYXNlIHJlZmVyIHRvIFtDT0RFX09GX0NPTkRVQ1RdKENPREVfT0ZfQ09ORFVDVC5tZCkgYW5kIFtDT05UUklCVVRJTkddKENPTlRSSUJVVElORy5tZCkgcmVzcGVjdGl2ZWx5LgogCgo= readmeEtag: '"adf909021b8a1a8dfe64cd5973d9ef02a05fb6f8"' readmeLastModified: Tue, 16 Aug 2022 05:22:33 GMT repositoryId: 521001395 description: >- The repository contains OpenAPI specification for interacting with REST APIs that Trellix Intelligent Sandbox (former: ATD) offers. created: '2022-08-03T19:05:34Z' updated: '2024-04-30T12:31:11Z' language: HTML archived: false stars: 4 watchers: 2 forks: 0 owner: trellix-opensource logo: https://avatars.githubusercontent.com/u/106668524?v=4 license: Apache-2.0 repoEtag: '"f0ccc030b1affa92f74347d216bdaac50aa67ead84ae5170a790459cad70267d"' repoLastModified: Tue, 30 Apr 2024 12:31:11 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/stefh/ramltoopenapiconverter v3: true repositoryMetadata: base64Readme: >- IyBSYW1sVG9PcGVuQXBpQ29udmVydGVyDQpDb252ZXJ0cyBhIFJBTUwgdG8gT3BlbiBBUEkgU3BlY2lmaWNhdGlvbg0KDQpbIVtOdUdldDogUmFtbFRvT3BlbkFwaUNvbnZlcnRlcl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9udWdldC92L1JhbWxUb09wZW5BcGlDb252ZXJ0ZXIpXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvUmFtbFRvT3BlbkFwaUNvbnZlcnRlcikNCg0KIyMgVXNhZ2UNCg0KIyMjIENvbnZlcnQgYSBSQU1MIGZpbGUNCmBgYCBjIw0KbmV3IFJhbWxDb252ZXJ0ZXIoKQ0KICAuQ29udmVydFRvRmlsZSgiTWVkaWFXaWtpLnJhbWwiLCAiTWVkaWFXaWtpLmpzb24iLCBPcGVuQXBpU3BlY1ZlcnNpb24uT3BlbkFwaTNfMCwgT3BlbkFwaUZvcm1hdC5Kc29uKTsNCmBgYA0KDQoNCiMjIyBMaW1pdHMNCi0gLi4uDQoNCg0KIyMgRGV0YWlscw0KVGhpcyBwcm9qZWN0IHVzZXMgdGhlIGZvbGxvd2luZyB0b29sczoNCi0gWWFtbERvdE5ldCAtLT4gdG8gcmVhZCB0aGUgUkFNTCAoYXMgWUFNTCBvciBKU09OKQ0KLSBNaWNyb3NvZnQuT3BlbkFwaS5ZYW1sUmVhZGVyIC0tPiB0byBwcm9jZXNzIHRoZSBPcGVuIEFQSSBNb2RlbCBhbmQgY29udmVydCB0aGUgbW9kZWwgdG8gdGhlIG91dHB1dCBmaWxlDQoNCiANCiMjIFNwb25zb3JzDQoNCltFbnRpdHkgRnJhbWV3b3JrIEV4dGVuc2lvbnNdKGh0dHBzOi8vZW50aXR5ZnJhbWV3b3JrLWV4dGVuc2lvbnMubmV0Lz91dG1fc291cmNlPVN0ZWZIKSBhbmQgW0RhcHBlciBQbHVzXShodHRwczovL2RhcHBlci1wbHVzLm5ldC8/dXRtX3NvdXJjZT1TdGVmSCkgYXJlIG1ham9yIHNwb25zb3JzIGFuZCBwcm91ZCB0byBjb250cmlidXRlIHRvIHRoZSBkZXZlbG9wbWVudCBvZiAqKlJhbWxUb09wZW5BcGlDb252ZXJ0ZXIqKi4NCg0KWyFbRW50aXR5IEZyYW1ld29yayBFeHRlbnNpb25zXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vU3RlZkgvcmVzb3VyY2VzL21haW4vc3BvbnNvci9lbnRpdHktZnJhbWV3b3JrLWV4dGVuc2lvbnMtc3BvbnNvci5wbmcpXShodHRwczovL2VudGl0eWZyYW1ld29yay1leHRlbnNpb25zLm5ldC9idWxrLWluc2VydD91dG1fc291cmNlPVN0ZWZIKQ0KDQpbIVtEYXBwZXIgUGx1c10oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1N0ZWZIL3Jlc291cmNlcy9tYWluL3Nwb25zb3IvZGFwcGVyLXBsdXMtc3BvbnNvci5wbmcpXShodHRwczovL2RhcHBlci1wbHVzLm5ldC9idWxrLWluc2VydD91dG1fc291cmNlPVN0ZWZIKQ== readmeEtag: '"e4f9a9a47906e7bf329fc4b87a7634c6f2c97eb1"' readmeLastModified: Mon, 16 Jun 2025 06:10:01 GMT repositoryId: 237777850 description: Converts a RAML to Open API Specification (native C# dotnet) created: '2020-02-02T13:47:59Z' updated: '2025-09-05T07:30:42Z' language: C# archived: false stars: 4 watchers: 2 forks: 4 owner: StefH logo: https://avatars.githubusercontent.com/u/249938?v=4 license: MIT repoEtag: '"e5242a5be5119a4f46f6ce352de402112650c7bbb4109009e3189bd5eb656c55"' repoLastModified: Fri, 05 Sep 2025 07:30:42 GMT foundInMaster: true category: Parsers id: fc6d82a523fbcf983a51caa78aa81344 - source: openapi3 tags repository: https://github.com/membrane-php/membrane-core v3: true id: f7a3f57a79b6b3b13e5ff19c0dd5fd7a repositoryMetadata: base64Readme: >- IyBNZW1icmFuZQoKTWVtYnJhbmUgaXMgYSBsaWdodHdlaWdodCBpbnB1dCB2YWxpZGF0aW9uIGxheWVyIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFuc3dlciB0aGUgcXVlc3Rpb24gIklzIHRoaXMgaW5wdXQgc29tZXRoaW5nIHdlCm1pZ2h0IGJlIGFibGUgdG8gcHJvY2Vzcz8iLiBJdHMKcHVycG9zZSBpcyB0byByZWNlaXZlICJyYXciIHVzZXIgaW5wdXQgYW5kIHByb2R1Y2UgYSBjbGVhbmVkIHVwLCBmdWxseSB2YWxpZGF0ZWQgb2JqZWN0IG9yIGFycmF5IHJlcHJlc2VudGluZyB0aGF0IGRhdGEsCndoaWNoIHRoZSByZXN0IG9mIHlvdXIgYXBwbGljYXRpb24KY2FuIHVzZSB3aXRoIGNvbmZpZGVuY2UuCgpJdCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgYSBmdWxseSBmZWF0dXJlZCB2YWxpZGF0aW9uIGxpYnJhcnksIGJ1dCBpbnN0ZWFkIGZvY3VzIG9uIGVuc3VyaW5nIHRoYXQgdGhlIGRhdGEgeW91IGhhdmUKcmVjZWl2ZWQgbG9va3MgY29ycmVjdCBieSBmb2N1c2luZwpvbiBkYXRhIHR5cGVzLCByYW5nZXMgYW5kIGZvcm1hdHMuCgpUbyBwdXQgdGhpcyBpbiBjb250ZXh0LCBtZW1icmFuZSBjb3VsZCBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoYXQgYSB1c2VyIHN1Ym1pdHRpbmcgYSByZXF1ZXN0IHRvIGVkaXQgYSBibG9nIHBvc3QgaGFzOgoKLSBhbiBpbnRlZ2VyIGlkLCBncmVhdGVyIHRoYW4gemVybzsKLSBhIHN0cmluZyB0aXRsZSBiZXR3ZWVuIDEwIGFuZCA4MCBjaGFyYWN0ZXJzOwotIGEgc3RyaW5nIHBvc3QgYm9keSBhdCBsZWFzdCAyNSBjaGFyYWN0ZXJzIGxvbmc7Ci0gYSBsaXN0IG9mIG5vIG1vcmUgdGhhbiA1IHN0cmluZyB0YWdzLCBlYWNoIHdpdGggYSBsZW5ndGggYmV0d2VlbiAzIGFuZCAxNSBjaGFyYWN0ZXJzLgoKSG93ZXZlciwgaXQgc2hvdWxkIG5vdCBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoYXQ6CgotIHRoZSBibG9nIHBvc3QgYWxyZWFkeSBleGlzdHM7Ci0gdGhhdCB0aGUgdXNlciBoYXMgcGVybWlzc2lvbiB0byBlZGl0IHRoZSBibG9nIHBvc3Q7Ci0gdGhhdCB0aGUgYmxvZyBwb3N0IGlzIHVucHVibGlzaGVkIGFuZCB0aHVzIHN0aWxsIGFsbG93ZWQgdG8gYmUgZWRpdGVkLgoKVGhlc2UgYXJlIGFsbCBidXNpbmVzcyBydWxlcyB3aGljaCBzaG91bGQgYmUgdGFrZW4gY2FyZSBvZiBpbiBhIHNlcGFyYXRlIGxheWVyLgoKTWVtYnJhbmUgd2lsbCB1c3VhbGx5IGJlIHlvdXIgZmlyc3QgbGluZSBiZXR3ZWVuIGEgd2ViIHJlcXVlc3QgYW5kIHlvdXIgYXBwbGljYXRpb24sIHNvIEkgaGF2ZSBtYWRlIHRoZSBkZXNpZ24gZGVjaXNpb24KdGhhdCBtZW1icmFuZSB3aWxsICpORVZFUiogdGhyb3cgYW4KZXhjZXB0aW9uIGJlY2F1c2Ugb2YgYmFkIHVzZXIgZGF0YS4gRXhjZXB0aW9ucyB3aWxsIG9ubHkgYmUgdGhyb3duIGR1ZSB0byBtZW1icmFuZSBiZWluZyBzZXR1cCBpbmNvcnJlY3RseSBieSB0aGUKZGV2ZWxvcGVyLiBBcyBzdWNoLCB5b3Ugd2lsbCBhbHdheXMgZ2V0IGEKcmVzdWx0IG9iamVjdCBiYWNrIHdoZW4gdmFsaWRhdGluZyB1c2VyIGlucHV0IGV2ZW4gaWYgdGhlIGlucHV0IHdhcyBjb21wbGV0ZSBnYXJiYWdlLgo= readmeEtag: '"fb9d6c89006ebdfbf89771a413a72160129e683a"' readmeLastModified: Thu, 25 Apr 2024 16:02:54 GMT repositoryId: 485017464 description: >- Membrane is a general purpose input validation library, supports both PHP Attributes and OpenAPI specifications created: '2022-04-24T12:10:16Z' updated: '2025-11-18T14:56:51Z' language: PHP archived: false stars: 6 watchers: 2 forks: 4 owner: membrane-php logo: https://avatars.githubusercontent.com/u/104306108?v=4 license: NOASSERTION repoEtag: '"43eb6e56b9c6a88eb78db74714d792a544bb06fc197d266a27ea512722607ce0"' repoLastModified: Tue, 18 Nov 2025 14:56:51 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/matthewtrask/disapi v3: true repositoryMetadata: base64Readme: >- IyMgRGlzQVBJCgojIyMgVGhpcyBpcyBhIFdJUCwgdXNlIGF0IHlvdXIgb3duIHJpc2suCgpBIFJFU1RmdWwgT3BlbkFQSSBzcGVjIEFQSSBhcm91bmQgdGhlIFdhbHQgRGlzbmV5IFdvcmxkIFJlc29ydCAKCiMjIyMgVG8gc2VlIFJlRG9jOiAKYGBgCnlhcm4gcnVuIHNwZWNjeSBzZXJ2ZSBzcGVjcy9vcGVuYXBpLnltbApgYGAKCkFuZCB0aGVuIGdvIHRvIGxvY2FsaG9zdDo1MDAwIHRvIHNlZSB0aGUgZG9jdW1lbnRhdGlvbgoKIyMjIyBFbmRwb2ludHMKCldvcmsgd2l0aCB0aGUgUGFya3MgUmVzb3VyY2UgQ29sbGVjdGlvbgpgYGBwaHAKICAgIEdFVC9QT1NUIC9wYXJrcwpgYGAKYGBgcGhwCiAgICBHRVQvUFVUL0RFTEVURSAvcGFya3Mve2lkfQpgYGAKCldvcmsgd2l0aCB0aGUgUmlkZXMgUmVzb3VyY2UgQ29sbGVjdGlvbgpgYGBwaHAKICAgIEdFVC9QT1NUIC9yaWRlcwpgYGAKYGBgcGhwCiAgICBHRVQvUFVUL0RFTEVURSByaWRlcy97aWR9CmBgYAoKV29yayB3aXRoIHRoZSBSZXN0YXVyYW50cyBSZXNvdXJjZSBDb2xsZWN0aW9uCmBgYHBocAogICAgR0VUL1BPU1QgL3Jlc3RhdXJhbnRzCmBgYApgYGBwaHAKICAgIEdFVC9QVVQvREVMRVRFIC9yZXN0YXVyYW50cwpgYGAKCldvcmsgd2l0aCB0aGUgUmVzb3J0cyBSZXNvdXJjZSBDb2xsZWN0aW9uCmBgYHBocAogICAgR0VUL1BPU1QgL3Jlc29ydHMKYGBgCmBgYHBocAogICAgR0VUL1BVVC9ERUxFVEUgL3Jlc3RhdXJhbnRzL3tpZH0KYGBgCgojIyMjIFJlcXVpcmVtZW50cwoKKiBDb21wb3NlcgoqIFlhcm4KCiMjIyMgSW5zdGFsbGF0aW9uCgpJZiB5b3Ugd2FudCB0byBpbnN0YWxsIGEgbG9jYWwgY29weSBvZiB0aGlzIHByb2plY3QKCiogQ2xvbmUgdG8geW91ciBsb2NhbAoqIENkIHRvIHByb2plY3QsIGFuZCBjb21wb3NlciBpbnN0YWxsIHRoZSBkZXBlbmRlbmNpZXMKKiBUbyB1c2UgSG9tZXN0ZWFkLCBlZGl0IHRoZSBwYXRoIGluIEhvbWVzdGVhZC55YW1sIHRvIHJlZmxlY3QgeW91ciBsb2NhbCBhbmQ6IApgYGBwaHAKJCAuL3ZlbmRvci9iaW4vaG9tZXN0ZWFkIG1ha2UgJiYgdmFncmFudCB1cApgYGAKKiBFZGl0IHlvdXIgL2V0Yy9ob3N0cyAobm90IHN1cmUgYWJvdXQgd2luZG93cykgYW5kIGFkZCBgYGAxOTIuMTY4LjEwLjEwIGhvbWVzdGVhZC50ZXN0YGBgIG9yIHdoYXRldmVyIHlvdSB3YW50IGl0IHRvIGJlLgoqIGBgYHZhZ3JhbnQgc3NoYGBgIGFuZCBjZCB0byByb290IG9mIHByb2plY3QKKiBJbnN0YWxsIEpTIGRlcGVuZGVuY2llcyB3aXRoIFlhcm4gKG5lZWRlZCBmb3IgU3BlY2N5KQoqIE1pZ3JhdGUgYW5kIFNlZWQgdGhlIERhdGFiYXNlIHdpdGggYGBgcGhwIGFydGlzYW4gbWlncmF0ZSAmJiBwaHAgYXJ0aXNhbiBkYjpzZWVkYGBgCiogQWx0ZXJuYXRpdmVseSwgeW91IGNvdWxkIGltcG9ydCB0aGUgZGF0YS5zcWwgZmlsZSBpbnRvIHlvdXIgbG9jYWwgbXlzcWwgaW5zdGFuY2UKKiBPcGVuIFBvc3RtYW4gYW5kIGhpdCB0aGUgZW5kcG9pbnRzIGFib3ZlIHRvIGVuc3VyZSBpdCB3b3Jrcy4gCgpJZiB5b3Ugc2VlIGFuIGlzc3VlLCBoaXQgbWUgdXAgb24gdHdpdHRlciBAbWF0dGhld3RyYXNr readmeEtag: '"bfc1c5ddebf302bf594543e315688fb420a70997"' readmeLastModified: Thu, 28 Mar 2019 02:05:42 GMT repositoryId: 144517308 description: An API around Walt Disney World Resort. created: '2018-08-13T02:02:16Z' updated: '2019-03-28T02:05:45Z' language: PHP archived: false stars: 4 watchers: 1 forks: 2 owner: matthewtrask logo: https://avatars.githubusercontent.com/u/4731244?v=4 repoEtag: '"47db64ccc2b971b7410a07236912bd5285690365d29314ebb335e0da7080da44"' repoLastModified: Thu, 28 Mar 2019 02:05:45 GMT foundInMaster: true category: - Testing - Server Implementations id: 95241dd18a6bfddc4e65c4c7becfc3bf - source: openapi3 tags repository: https://github.com/tidepool-org/tidepoolapi v3: true id: a7c2fef8f920a4385bf8aae75ba61407 repositoryMetadata: base64Readme: >- IyBUaWRlcG9vbEFwaSAKCiFbVGlkZXBvb2wgTG9nb10oLi9hc3NldHMvaW1hZ2VzL1RpZGVwb29sX0xvZ29fRGFya19MYXJnZS5wbmcpCgpbIVtwdWJsaXNoXShodHRwczovL2dpdGh1Yi5jb20vdGlkZXBvb2wtb3JnL1RpZGVwb29sQXBpL2FjdGlvbnMvd29ya2Zsb3dzL2NoZWNrLWFuZC1wdWJsaXNoLnltbC9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vZ2l0aHViLmNvbS90aWRlcG9vbC1vcmcvVGlkZXBvb2xBcGkvYWN0aW9ucy93b3JrZmxvd3MvY2hlY2stYW5kLXB1Ymxpc2gueW1sKQoKVGhpcyByZXBvc2l0b3J5IGNvbnRhaW5zIFRpZGVwb29sIFBsYXRmb3JtIEFQSSBkb2N1bWVudGF0aW9uIGluIFtPcGVuQVBJIHYzXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKSBmb3JtYXQgd2l0aCBhZGRpdGlvbmFsIG5hcnJhdGl2ZSBjb250ZW50IGluIFtNYXJrZG9jXShodHRwczovL3JlZG9jbHkuY29tL2xlYXJuL21hcmtkb2Mvd3JpdGUtd2l0aC1tYXJrZG9jKSBmb3JtYXQgd2hpY2ggaW4gdHVybiBleHRlbmRzIG9uIFtNYXJrZG93bl0oaHR0cHM6Ly93d3cubWFya2Rvd25ndWlkZS5vcmcvKS4KVGhlc2UgQVBJIGRlZmluaXRpb25zIGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIHN0dWIgY29kZSBmb3IgZWl0aGVyIHNlcnZlciBvciBjbGllbnQgc2lkZS4gQ3VycmVudGx5LCB3ZSBvbmx5IGRvIHRoaXMgd2l0aCB0aGUgYGNsaW5pY2Agc2VydmljZSAoc2VlIGJlbG93IGZvciBzcGVjaWFsIG5vdGUgb24gdGhhdCkuCgojIyBXb3JrZmxvdwoKV2UgaGF2ZSBhbiBhY2NvdW50IGluIFtSZWRvY2x5XShodHRwczovL3RpZGVwb29sLnJlZG9jbHkuYXBwKSBmb3IgcHVibGlzaGluZyB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgQVBJIHNwZWNpZmljYXRpb25zLiBUaGUgZ29hbCBpcyBmb3IgdGhhdCBzaXRlIHRvIHNvb24gcmVwbGFjZSB0aGUgY3VycmVudCBbZGV2ZWxvcGVyIHBvcnRhbF0oaHR0cHM6Ly9kZXZlbG9wZXIudGlkZXBvb2wub3JnKS4gSXQgKmlzKiBwb3NzaWJsZSB0byBlZGl0IHRoZSBkb2N1bWVudGF0aW9uIGZpbGVzIGRpcmVjdGx5IG9ubGluZSBpbiBSZWRvY2x5IC0gaG93ZXZlciB3ZSBhcmUgKm5vdCogdXNpbmcgdGhhdCBjYXBhYmlsaXR5LCBmb3Igc2V2ZXJhbCByZWFzb25zOgoKMS4gRG9pbmcgc28gcmVxdWlyZXMgdXNpbmcgb25lIG9mIGEgbGltaXRlZCBudW1iZXIgb2Ygc2VhdHMgKDUpLgoyLiBJdCBkb2VzIG5vdCBmaXQgd2VsbCBpbnRvIG91ciBub3JtYWwgcmV2aWV3L2FwcHJvdmFsIHdvcmtmbG93LgozLiBJdCBkb2VzIG5vdCBlbmFibGUgdXMgdG8gcnVuIHByZS1tZXJnZSBjaGVja3MsIGluIHBhcnRpY3VsYXIgdG8gdmFsaWRhdGUgY2hhbmdlcyB0aGF0IGNvdWxkIGJyZWFrIGdlbmVyYXRlZCBzZXJ2ZXIgc3R1YiBjb2RlIHN1Y2ggYXMgdGhlIFtgY2xpbmljYF0oaHR0cHM6Ly9naXRodWIuY29tL3RpZGVwb29sLW9yZy9jbGluaWMpIHNlcnZpY2UuIFNlZSB0aGUgYGNoZWNrYCBhbmQgYGdlbmVyYXRlYCBzdGVwcyBpbiB0aGUgW01ha2VmaWxlXSguL01ha2VmaWxlKS4KClRoZSBwcmVmZXJyZWQgd29ya2Zsb3cgaXMgdG8gZWRpdCB0aGVzZSBmaWxlcyBvZmZsaW5lLCB0aGVuIGNvbW1pdCB0aGVtIHRvIEdpdEh1YiB3aGljaCBhdXRvbWF0aWNhbGx5IHB1c2hlcyB1cGRhdGVzIGludG8gUmVkb2NseSwgaW5jbHVkaW5nIHdvcmsgYnJhbmNoZXMgdGhvdWdoIHRoZXkgYXJlIG5vdCB2aXNpYmxlIHRvIHBlb3BsZSBvdXRzaWRlIG9mIFRpZGVwb29sLiBIZXJlIGFyZSB0aGUgd29ya2Zsb3cgZGV0YWlsczoKCjEuIENsb25lIHRoaXMgcmVwb3NpdG9yeSBhbmQgaW5zdGFsbCB0aGUgdmFsaWRhdGlvbiAmIHB1Ymxpc2hpbmcgdG9vbHMuIFlvdSBvbmx5IG5lZWQgdG8gdG8gdGhpcyBvbmNlLgoKICAgIGBgYHNoZWxsCiAgICBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3RpZGVwb29sLW9yZy9UaWRlcG9vbEFwaS5naXQKICAgIGNkIFRpZGVwb29sQXBpCiAgICBtYWtlIGluc3RhbGxfdG9vbHMKICAgIGBgYAoKMi4gQ3JlYXRlIGEgKndvcmsgYnJhbmNoKiBmb3IgeW91ciBlZGl0czoKCiAgICBgYGBzaGVsbAogICAgZ2l0IGNoZWNrb3V0IG1hc3RlcgogICAgZ2l0IHB1bGwKICAgIGdpdCBjaGVja291dCBtYXN0ZXIgLWIge2JyYW5jaH0KICAgIGBgYAoKMy4gRWRpdCBhbmQgcHJldmlldyB0aGUgZmlsZXMgb2ZmbGluZSB1c2luZyBhbnkgb2YgdGhlIFt0b29sc10oI2VkaXRpbmctdG9vbHMpIGxpc3RlZCBiZWxvdy4KNC4gVmFsaWRhdGUgeW91ciBjaGFuZ2VzIGxvY2FsbHk6CgogICAgYGBgc2hlbGwKICAgIG1ha2UgY2hlY2sKICAgIG1ha2UgcHJlcGFyZQogICAgYGBgCgo1LiBDb21taXQgeW91ciBjaGFuZ2VzIHRvIHRoZSB3b3JrIGJyYW5jaCBhbmQgcHVzaCB0byBHaXRIdWIuIFRoaXMgd2lsbCBhdXRvbWF0aWNhbGx5IGtpY2sgb2ZmIGEgW0dpdEh1YiBBY3Rpb25dKC5naXRodWIvd29ya2Zsb3dzLykgdGhhdCBjaGVja3MgJiBwdWJsaXNoZXMgdGhlIG5ldyAoZHJhZnQpIGRvY3VtZW50YXRpb24gaW50byBhIGJyYW5jaCBpbiBSZWRvY2x5LgoKICAgIGBgYHNoZWxsCiAgICBnaXQgYWRkIHtmaWxlKHMpfQogICAgZ2l0IGNvbW1pdCAtbSAie2Rlc2NyaXB0aW9ufSIKICAgIGdpdCBjaGVja291dCBtYXN0ZXIKICAgIGdpdCBwdWxsCiAgICBnaXQgY2hlY2tvdXQge2JyYW5jaH0KICAgIGdpdCBtZXJnZSAtLW5vLWZmIG1hc3RlcgogICAgZ2l0IHB1c2ggLXUgb3JpZ2luIEhFQUQKICAgIGBgYAoKNi4gUG9zdCBhIHB1bGwgcmVxdWVzdCAoUFIpIHRvIHJldmlldyB0aGUgY2hhbmdlcwo3LiBPbmNlIHRoZSBQUiBpcyBhcHByb3ZlZCwgbWVyZ2UgdG8gbWFzdGVyIHdoaWNoIHdpbGwgYWdhaW4gYXV0b21hdGljYWxseSB1cGRhdGUgdGhlIG1hc3RlciBicmFuY2ggaW4gdGhlIFJlZG9jbHkgc2l0ZS4KCiMjIEVkaXRpbmcgVG9vbHMKCjEuIEZyZWUgW1N0b3BsaWdodCBTdHVkaW9dKGh0dHBzOi8vc3RvcGxpZ2h0LmlvL3N0dWRpby8pIGZvciB2YWxpZGF0aW5nIGFuZCByZW5kZXJpbmcgT3BlbkFQSSB2MyBzcGVjaWZpY2F0aW9ucy4KMi4gRnJlZSBNaWNyb3NvZnQgW1Zpc3VhbCBTdHVkaW8gQ29kZV0oaHR0cHM6Ly9jb2RlLnZpc3VhbHN0dWRpby5jb20vKSwgd2l0aCBwbHVnLWlucyBmb3IgdmFsaWRhdGluZyBhbmQgcmVuZGVyaW5nIE9wZW5BUEkgdjMgc3BlY2lmaWNhdGlvbnMgYW5kIE1hcmtkb3duIGRvY3VtZW50YXRpb24uCjMuIE1hbnkgb3RoZXIgSURFcyBvZmZlciBzaW1pbGFyIHBsdWctaW5zLgoKIyMgT3RoZXIgVG9vbHMKClRoZSBbTWFrZWZpbGVdKC4vTWFrZWZpbGUpIG1ha2VzIHVzZSBvZiBzZXZlcmFsIENMSSB0b29scyB0byBjaGVjaywgcHJlcGFyZSwgYW5kIHB1Ymxpc2ggdGhlIGRvY3VtZW50YXRpb24gYW5kIHNwZWNpZmljYXRpb25zLgpZb3UgY2FuIGluc3RhbGwgdGhlIHRvb2xzIGJ5IGV4ZWN1dGluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGBzaGVsbAptYWtlIGluc3RhbGxfdG9vbHMKYGBgCgpZb3UgY2FuIGNoZWNrIGlmIHlvdSBoYXZlIGFsbCB0aGUgdG9vbHMgaW5zdGFsbGVkIGJ5IGV4ZWN1dGluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGBzaGVsbAptYWtlIGNoZWNrX3Rvb2xzCmBgYAoKfCBUb29sIHwgRGVzY3JpcHRpb24gfAp8LS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgW21hcmtkb3dubGludF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbWFya2Rvd25saW50KSB8IFZhbGlkYXRlcyBNYXJrZG93biBmaWxlcy4gfAp8IFttYXJrZG93bi1saW5rLWNoZWNrXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tYXJrZG93bi1saW5rLWNoZWNrKSB8IFZhbGlkYXRlcyBoeXBlcmxpbmtzIGluIE1hcmtkb3duIGZpbGVzLiB8CnwgW3NwZWN0cmFsXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ac3RvcGxpZ2h0L3NwZWN0cmFsKSB8IFZhbGlkYXRlcyBPcGVuQVBJIDMuMCBzcGVjaWZpY2F0aW9uIGZpbGVzLiB8CnwgW3N3YWdnZXItY2xpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zd2FnZ2VyLWNsaSkgfCBWYWxpZGF0ZXMgT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbiBmaWxlcy4gQWxzbyBidW5kbGVzIG11bHRpcGxlIE9BUzMgZmlsZXMgaW50byBhIHNpbmdsZSBmaWxlLCB0aGF0IGlzIHJlcXVpcmVkIGJ5IHNvbWUgZG93bnN0cmVhbSB1c2UtY2FzZXMuIHwKfCBbcmVkb2NseV0oaHR0cHM6Ly9naXRodWIuY29tL1JlZG9jbHkvcmVkb2NseS1jbGkpIHwgVmFsaWRhdGVzIE9wZW5BUEkgMy4wIHNwZWNpZmljYXRpb24gZmlsZXMuIEFsc28gYnVuZGxlcyBtdWx0aXBsZSBPQVMzIGZpbGVzIGludG8gYSBzaW5nbGUgZmlsZSwgdGhhdCBpcyByZXF1aXJlZCBieSBzb21lIGRvd25zdHJlYW0gdXNlLWNhc2VzLiB8CnwgW29wZW5hcGktbWVyZ2UtY2xpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vcGVuYXBpLW1lcmdlLWNsaSkgfCBNZXJnZXMgT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbiBmaWxlcyBpbnRvIHNpbmdsZSBmaWxlLiB8CnwgW29hcGktY29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL2RlZXBtYXAvb2FwaS1jb2RlZ2VuKSB8IEdlbmVyYXRlcyBzZXJ2ZXIgYW5kIGNsaWVudCBzdHViIGNvZGUgZnJvbSBPcGVuQVBJIDMuMCBzcGVjaWZpY2F0aW9ucy4gVXNlZCBjdXJyZW50bHkgdG8gZ2VuZXJhdGUgdGhlIFtgY2xpbmljYF0oaHR0cHM6Ly9naXRodWIuY29tL3RpZGVwb29sLW9yZy9jbGluaWMpIHNlcnZpY2UgY29kZS4gfAo= readmeEtag: '"942c1c926904cc6f0967d7a0a1f1fc15c2a06569"' readmeLastModified: Thu, 11 Sep 2025 15:09:49 GMT repositoryId: 239433889 description: >- Tidepool APIs documented with OpenAPI v3, for schema validation and client and server code generation. created: '2020-02-10T05:20:54Z' updated: '2026-02-05T02:14:58Z' language: Shell archived: false stars: 9 watchers: 12 forks: 3 owner: tidepool-org logo: https://avatars.githubusercontent.com/u/4390820?v=4 license: BSD-2-Clause repoEtag: '"50a7902a9a42c5676d4bd983f6bf136fde64af66083e7795a326f514d098d9aa"' repoLastModified: Thu, 05 Feb 2026 02:14:58 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/lschlesinger/the-game v3: true repositoryMetadata: base64Readme: >- CjwhLS0gUFJPSkVDVCBMT0dPIC0tPgo8YnIgLz4KCjxwIGFsaWduPSJjZW50ZXIiPgogIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9sc2NobGVzaW5nZXIvdGhlLWdhbWUiPgogICAgPGltZyBzcmM9ImdhbWUtd2ViLXVpL3NyYy9hc3NldHMvaW1hZ2VzL2xvZ28ucG5nIiBhbHQ9IkxvZ28iIHdpZHRoPSI1MDAiPgogIDwvYT4KICA8cCBhbGlnbj0iY2VudGVyIj4KICAgIFN3aWZ0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBjYXJkIGdhbWUgIlRoZSBHYW1lIiwgYnkgU3RlZmZlbiBCZW5uZG9yZiB1c2luZyB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0Fwb2RpbmkvQXBvZGluaSI+QXBvZGluaSBGcmFtZXdvcms8L2E+LgogICAgVGhlIEVuZGFuZ2VyZWQgTmF0dXJlIEVkaXRpb24gaXMgYmFzZWQgb24gYW4gZW52aXJvbm1lbnRhbCBlZHVjYXRpb24gY29uY2VwdCwgd2hpY2ggYWltcyB0byByYWlzZSBhd2FyZW5lc3Mgb2YgdGhlIGN1cnJlbnQgdGhyZWF0cyB0byBjZXJ0YWluIHNwZWNpZXMuCiAgICAgIDwvcD4KICAgIDxici8+CiAgPC9wPiAKPC9wPgoKPCEtLSBUQUJMRSBPRiBDT05URU5UUyAtLT4KCiMjIFRhYmxlIG9mIENvbnRlbnRzCgoqIFtBYm91dCB0aGUgUHJvamVjdF0oI2Fib3V0LXRoZS1wcm9qZWN0KQogICogW01vdGl2YXRpb25dKCNtb3RpdmF0aW9uKQogICogW1RlY2huaWNhbCBCYWNrZ3JvdW5kXSgjdGVjaG5pY2FsLWJhY2tncm91bmQpCiAgKiBbQnVpbHQgV2l0aF0oI2J1aWx0LXdpdGgpCiogW0dldHRpbmcgU3RhcnRlZF0oI2dldHRpbmctc3RhcnRlZCkKKiBbQ3JpdGljYWwgUmVmbGVjdGlvbiBvZiB0aGUgU29mdHdhcmVdKCNjcml0aWNhbC1yZWZsZWN0aW9uKQoqIFtMaWNlbnNlXSgjbGljZW5zZSkKCjwhLS0gQUJPVVQgVEhFIFBST0pFQ1QgLS0+CgojIyBBYm91dCB0aGUgUHJvamVjdAoKVGhlIGN1cnJlbnQgQ29yb25hIHNpdHVhdGlvbiBmb3JjZXMgdXMgaW4gbWFueSBjYXNlcyB0byBsaW1pdCBvdXJzZWx2ZXMgdG8gZGlnaXRhbCBjb250YWN0IGFuZCBkaWdpdGFsIGNvbW11bmljYXRpb24gYWxvbmUuIFVuZm9ydHVuYXRlbHksIGluIHRpbWVzIG9mIHBoeXNpY2FsIGRpc3RhbmNlIGFuZCBpc29sYXRpb24sIGludml0aW5nIGEgbGFyZ2UgZ3JvdXAgb2YgcGVvcGxlIG92ZXIgZm9yIGEgZnVuIGV2ZW5pbmcgd2l0aCBjYXJkIG9yIGJvYXJkIGdhbWVzIGlzIG1vcmUgYSBtZW1vcnkgb2YgYW4gZWFybGllciB0aW1lIHRoYW4gcGFydCBvZiBvdXIgY3VycmVudCB3ZWVrZW5kIHBsYW4gLSBhbmQgd2UgbWlzcyB0aGF0ISBUaGF0IGlzIHdoeSB3ZSBjYW1lIHVwIHdpdGggdGhlIGlkZWEgdG8gaW1wbGVtZW50IG91ciBmYXZvcml0ZSBjYXJkIGdhbWUgYXMgYW4gb25saW5lIGdhbWUuIFdlIGNhbiBub3cgcGxheSB0b2dldGhlciB3aXRoIGEgZ3JvdXAgb2YgZnJpZW5kcyBhbmQgb3VyIGZhbWlsaWVzLCBzcHJlYWQgYWxsIG92ZXIgdGhlIGNvdW50cnkuCgpGaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGdhbWUgW2hlcmVdKGh0dHA6Ly9taWRkeXMubnN2LmRlL21pZGR5cy90aGUtZ2FtZS8pLgpUaGlzIGlzIGhvdyBvdXIgZWRpdGlvbiBsb29rcyBsaWtlOgo8cCBhbGlnbj0iY2VudGVyIj4KICA8aW1nIHNyYz0iZ2FtZS13ZWItdWkvc3JjL2Fzc2V0cy9pbWFnZXMvZ2FtZS1leGFtcGxlLnBuZyIgYWx0PSJMb2dvIiB3aWR0aD0iNzAwIj4KPC9wPgoKV2UgaG9wZSB5b3UgaGF2ZSBmdW4gcGxheWluZyBpdCEgUGxlYXNlIGZpbmQgYWNrbm93bGVkZ2VtZW50IGFzIHdlbGwgYXMgdGhlIHNvdXJjZSBvZiB0aGUgcGljdHVyZXMgdXNlZCBbaGVyZV0oRG9jdW1lbnRhdGlvbi9BY2tub3dsZWRnZW1lbnQubWQpLgoKIyMjIE1vdGl2YXRpb24KCkJpb2RpdmVyc2l0eSBpcyB0aGUgYmFzaXMgZm9yIGZ1bmN0aW9uaW5nIGVjb3N5c3RlbXMsIG9uIHdoaWNoIHdlIGh1bWFucyBvdXJzZWx2ZXMgdWx0aW1hdGVseSBkZXBlbmQuIEZvcnR1bmF0ZWx5LCB0aGUgY29udHJpYnV0aW9uIG9mIG5hdHVyZSB0byBhIGdvb2QgcXVhbGl0eSBvZiBsaWZlIGlzIG5vd2FkYXlzIGluY3JlYXNpbmdseSB2YWx1ZWQuIE5ldmVydGhlbGVzcywgYW50aHJvcG9nZW5pYyBhY3Rpdml0aWVzIGFyZSBkZXN0cm95aW5nIHNwZWNpZXMgaGFiaXRhdHMgYW5kIHRodXMgZnVlbGluZyBzcGVjaWVzIGV4dGluY3Rpb24gdW5hYmF0ZWQuCgpUaGUgaWRlYSBiZWhpbmQgdGhlIGNhcmQgZGVzaWduIGlzIHRvIHJhaXNlIGF3YXJlbmVzcyBmb3IgW05hdHVyZeKAmXMgUmVkIExpc3Qgb2YgVGhyZWF0ZW5lZCBTcGVjaWVzXShodHRwczovL3d3dy5pdWNucmVkbGlzdC5vcmcvYWJvdXQvYmFja2dyb3VuZC1oaXN0b3J5KS4gClRoZSBtZXJlIHNpZ2h0IG9mIHRoZSBjaGFybWluZyByZXByZXNlbnRhdGl2ZXMgb2YgdGhlIHZ1bG5lcmFibGUgYW5kIGVuZGFuZ2VyZWQgc3BlY2llcyBzaG91bGQgaWRlYWxseSBjb250cmlidXRlIHRvIGFkdm9jYXRpbmcgYSBtb3JlIG5hdHVyZS1mcmllbmRseSB3YXkgb2YgbGlmZS4KCiMjIyBUZWNobmljYWwgQmFja2dyb3VuZAoKQnkgdXNpbmcgdGhlIFtBcG9kaW5pIEZyYW1ld29ya10oaHR0cHM6Ly9naXRodWIuY29tL0Fwb2RpbmkvQXBvZGluaSksIHRoaXMgc2FtcGxlIHByb2plY3QgdGFja2xlcyB0aGUgZm9sbG93aW5nIHByb2JsZW06CjxwIGFsaWduPSJjZW50ZXIiPgogIDxpbWcgc3JjPSIuL0RvY3VtZW50YXRpb24vaW5mby1tYXRlcmlhbC9BcG9kaW5pLVByb2JsZW0tU3RhdGVtZW50LnBuZyIgYWx0PSJMb2dvIiB3aWR0aD0iNjAwIj4KPC9wPgoKWW91IGNhbiBmaW5kIGEgc3RlcC1ieS1zdGVwIG1hbnVhbCBvbiBob3cgdG8gYWNjb21wbGlzaCBidWlsZGluZyBhIGBHYW1lV2ViU2VydmljZWAgd2l0aCBBcG9kaW5pIHVzaW5nIE9BUyBbaGVyZV0oRG9jdW1lbnRhdGlvbi9SRUFETUUubWQpLgoKIyMjIEJ1aWx0IFdpdGgKCiogW0Fwb2RpbmldKGh0dHBzOi8vZ2l0aHViLmNvbS9BcG9kaW5pL0Fwb2RpbmkpCiogW1N3YWdnZXIgQ29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikgdXNpbmcgW09wZW5BUEkgU3BlY2lmaWNhdGlvbiAzLjAuM10oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vKQoqIFtBbmd1bGFyXShodHRwczovL2FuZ3VsYXIuaW8vKQoqIFtBbnQgRGVzaWduXShodHRwczovL2FudC5kZXNpZ24vZG9jcy9yZWFjdC9pbnRyb2R1Y2UpCiogW0RvY2tlcl0oaHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8pCiogW05HSU5YXShodHRwczovL3d3dy5uZ2lueC5jb20vKQoKPCEtLSBHRVRUSU5HIFNUQVJURUQgLS0+CgojIyBHZXR0aW5nIFN0YXJ0ZWQKCiMjIyBEb2NrZXIgU2V0dXAKCiMjIyMgUmVxdWlyZW1lbnRzCgoqIERvY2tlcgoqIERvY2tlciBDb21wb3NlCiogU3dhZ2dlciBjb2RlZ2VuCgojIyMjIFJ1bgoKVG8gZ2V0IGEgbG9jYWwgY29weSB1cCBhbmQgcnVubmluZyBmb2xsb3cgdGhlc2Ugc2ltcGxlIHN0ZXBzOgoKMS4gQ2xvbmUgdGhlIHJlcG8KCmBgYHNoCmdpdCBjbG9uZSBnaXRAZ2l0aHViLmNvbTpsc2NobGVzaW5nZXIvdGhlLWdhbWUuZ2l0CmBgYAoyLiBTdGFydCBiYWNrZW5kIGFuZCBuZ2lueCB3aGljaCBzZXJ2ZXMgZnJvbnRlbmQKCmBgYHNoCmRvY2tlci1jb21wb3NlIHVwCmBgYAoKMy4gVmlzaXQgYGh0dHA6Ly9sb2NhbGhvc3Q6ODBgCgojIyMgRGV2ZWxvcG1lbnQgU2V0dXAKCiMjIyMgUmVxdWlyZW1lbnRzCgoqIE5vZGUuanMKKiBucG0KKiBTd2lmdAoKIyMjIyBSdW4KClRvIGdldCBhIGxvY2FsIGNvcHkgdXAgYW5kIHJ1bm5pbmcgZm9sbG93IHRoZXNlIHNpbXBsZSBzdGVwczoKCjEuIENsb25lIHRoZSByZXBvCgpgYGBzaApnaXQgY2xvbmUgZ2l0QGdpdGh1Yi5jb206bHNjaGxlc2luZ2VyL3RoZS1nYW1lLmdpdApgYGAKMi4gU3RhcnQgYmFja2VuZAoKYGBgc2gKc3dpZnQgcnVuCmBgYAozLiBTdGFydCBmcm9udGVuZCAoaW4gc2VwYXJhdGUgdGVybWluYWwpCgpgYGBzaApjZCBnYW1lLXdlYi11aQpucG0gaW5zdGFsbCAjIG9ubHkgdGhlIGZpcnN0IHRpbWUKbnBtIHJ1biBzdGFydApgYGAKCjQuIFZpc2l0IGBodHRwOi8vbG9jYWxob3N0OjQyMDBgIGZvciBmcm9udGVuZCAoYWxsIHJlcXVlc3RzIHRvIGJhY2tlbmQgd2lsbCBiZSBwcm94aWVkKQoJMS4gVmlzaXQgYGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9kb2Mvb3BlbmFwaWAgKGlmIG5vdCBjb25maWd1cmVkIGRpZmZlcmVudGx5KSB0byBzZWUgdGhlIGdlbmVyYXRlZCBPcGVuQVBJIHNwZWNpZmljYXRpb24KCTIuIFZpc2l0IGBodHRwOi8vbG9jYWxob3N0OjgwODAvdWkvc3dhZ2dlcmAgKGlmIG5vdCBjb25maWd1cmVkIGRpZmZlcmVudGx5KSB0byBleHBsb3JlIHRoZSB3ZWIgYXBwIHdpdGggU3dhZ2dlci1VSQoKCjwhLS0gQ1JJVElDQUwgUkVGTEVDVElPTiAtLT4KCiMjIENyaXRpY2FsIFJlZmxlY3Rpb24gb2YgdGhlIFNvZnR3YXJlCgpCcm93c2luZyB0aGUgd2ViLCBwZW9wbGUgd2l0aCBkaXNhYmlsaXRpdGVzIG9mdGVuIHJlbHkgb24gYXNzaXN0aXZlIHRlY2hub2xvZ2llcywgc3VjaCBhcyBzY3JlZW4gcmVhZGVycywgbWFnbmlmaWNhdGlvbiBzb2Z0d2FyZSwgdGV4dCByZWFkZXJzLCBoZWFkIHBvaW50ZXJzLCBhbmQgbW90aW9uIG9yIGV5ZSB0cmFja2VycyB0byBhY2Nlc3MgY29udGVudC4gQXMgdGhpcyBwcm9qZWN0IGRvZXMgbm90IGluY2x1ZGUgZmVhdHVyZXMgdG8gc3VwcG9ydCB0aGVzZSBhc3Npc3RpdmUgdGVjaG5vbG9naWVzIHNvIGZhciwgdGhlIHNvZnR3YXJlIGlzIG5vdCBiYXJyaWVyLWZyZWUgZm9yIGFsbCB1c2Vycy4gCkluIHRoZSBmdXR1cmUsIHRoZSBhY2Nlc3NpYmlsaXR5IG9mIHRoZSBvbmxpbmUgZ2FtZSBzaG91bGQgYmUgZ3VhcmFudGVlZCBmb3IgYWxsIHBlb3BsZSwgbm8gbWF0dGVyIHdoZXJlIHRoZXNlIHBlb3BsZSBjb21lIGZyb20sIHdoYXQgbGFuZ3VhZ2UgdGhleSBzcGVhaywgd2hhdCB0ZWNobm9sb2d5IHRoZXkgdXNlIG9yIHdoYXQgc29jaWFsIGJhY2tncm91bmQgdGhleSBoYXZlLiBUaGF0IGlzIHdoeSB3ZSBhcmUgd29ya2luZyB0byBhY2hpZXZlIHRoZXNlIFtXZWIgQ29udGVudCBBY2Nlc3NpYmlsaXR5IEd1aWRlbGluZXMgKFdDQUcpIDIuMF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC8pIGluIHRoZSBsb25nIHRlcm0uIAoKTW9yZW92ZXIsIHRoZSBkdWUgdG8gdGhlIG1pc3Npb24gdGhhdCBzaG91bGQgYmUgdHJhbnNwb3J0ZWQgYnkgdGhlIHVzZSBvZiBwaWN0dXJlcywgdGhlIHBhZ2Ugd2VpZ2h0IGhhcyBwb3RlbnRpYWwgZm9yIG9wdGltaXphdGlvbi4gQSBnZW5lcmF0ZWQgW1BhZ2UgV2VpZ2h0XShodHRwczovL3BhZ2V3ZWlnaHQuaW1naXguY29tLykgcmVwb3J0IHN1Z2dlc3RzLCB0aGF0IHRoZXJlIGFyZSA4MyUgcG90ZW50aWFsIHNhdmluZ3MgaW4gcmVkdWNpbmcgaW1hZ2Ugc2l6ZXMuIFRoZSBjdXJyZW50IHBhZ2Ugd2VpZ2h0IG9mIHRoZSBvbmxpbmUgZ2FtZXMgZG9lcyBub3Qgb25seSBiZWFyIHRoZSByaXNrIG9mLCBzbG93IGxvYWQgdGltZXMsIGltcGVkZWQgcGVyZm9ybWFuY2UsIGFuZCBwb3RlbnRpYWxseSB3YXN0ZWQgZW5lcmd5LiBBY2NvcmRpbmcgdG8gdGhlIGRpZ2l0YWwgYWdlbmN5IFtNaWdodHlieXRlc10oaHR0cHM6Ly93d3cubWlnaHR5Ynl0ZXMuY29tL2Jsb2cvcGFnZS13ZWlnaHQtYnVkZ2V0LXRvLXNwZWVkLXVwLXlvdXItc2l0ZS8pICJ0aGlzIGNhbiBmcnVzdHJhdGUgbWFueSB1c2VycywgZXNwZWNpYWxseSB0aG9zZSBvbiBvbGRlciBtb2JpbGUgZGV2aWNlcyBvciBpbiBydXJhbCBhcmVhcyB3aXRoIHJlc3RyaWN0ZWQgYmFuZHdpZHRoIi4gSW4gdGhlIGZ1dHVyZSwgdGhlIG9ubGluZSBnYW1lIHNob3VsZCBicmluZyBpdCdzIHBhZ2Ugd2VpZ2h0IHRvIGEgbWluaW11bSBhbmQgdGhlcmVieSByZWR1Y2luZyB0aGUgZGlnaXRhbCBmb290cHJpbnQuCgpJbiB0aGVpciBibG9nIHBvc3Qgc2VyaWVzIFtTdXN0YWluYWJsZSBXZWIgRGVzaWduXShodHRwczovL3d3dy5taWdodHlieXRlcy5jb20vYmxvZy9zdXN0YWluYWJsZS13ZWItZGVzaWduLykgTWlnaHR5Ynl0ZXMgaW50cm9kdWNlIHN1c3RhaW5hYmxlIHdlYiBkZXNpZ24gcHJpbmNpcGxlcyB0aGF0IGdlbmVyYWxseSBmb2N1cyBvbiByZWR1Y2luZyBlbGVjdHJpY2l0eSB1c2UgYnV0IGFsc28gY292ZXIgdGhlIHVzZSBvZiDigJhncmVlbuKAmSBpbmdyZWRpZW50cywgc3VjaCBhcyBjbGVhbiBlbmVyZ3ktcG93ZXJlZCB3ZWIgaG9zdGluZywgZm9yIGV4YW1wbGUuCkhhdmluZyBpbiBtaW5kIHRoYXQgd2ViIGRlc2lnbmVycyBjYW4gbWFrZSBhIG1lYXN1cmFibGUgZGlmZmVyZW5jZSB0byBkZWNyZWFzZSB0aGUgY2FyYm9uIGZvb3RwcmludCBvZiB0aGUgSW50ZXJuZXQsIHdlIHNob3VsZCBmYWNlIHRoZSBjaGFsbGVuZ2Ugb2YgbWFraW5nIHRoZSBvbmxpbmUgZ2FtZSBhZGhlcmVpbmcgdG8gdGhlIHN1c3RhaW5ibGUgd2ViIGRlc2lnbiBwcmluY2lwbGVzIGFzIGZhciBhcyBwb3NzaWJsZSBpbiB0aGUgZnV0dXJlLgoKPCEtLSBMSUNFTlNFIC0tPgoKIyMgTGljZW5zZQoKRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEdQTC0zLjAgTGljZW5zZS4gU2VlIGBMSUNFTlNFYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiMjIENvbnRyaWJ1dG9ycwoKOnR3b193b21lbl9ob2xkaW5nX2hhbmRzOiBMJkwgU2NobGVzaW5nZXIK readmeEtag: '"279e9dc1d30dd22089cf807314b1dd9a6923e1c5"' readmeLastModified: Wed, 10 Mar 2021 19:38:47 GMT repositoryId: 332280786 description: >- Swift implementation of the card game "The Game", by Steffen Benndorf using the Apodini Framework, Angular, OAS3.0 and swagger-codegen created: '2021-01-23T18:30:16Z' updated: '2023-01-11T08:34:03Z' language: TypeScript archived: false stars: 3 watchers: 1 forks: 0 owner: lschlesinger logo: https://avatars.githubusercontent.com/u/41366522?v=4 license: GPL-3.0 repoEtag: '"f3999988bd15e5c109c9cf901a625cead3f54c7397dd37be4dc48fbf4d050ef0"' repoLastModified: Wed, 11 Jan 2023 08:34:03 GMT foundInMaster: true category: - Documentation - Server Implementations id: 429f4d721f8935dd2cdc97e743793b7f - source: openapi3 tags repository: https://github.com/berislavlopac/pyapi-server v3: true id: b5e0fb24b4b1c517abdf5cd50ec99acc repositoryMetadata: base64Readme: >- IyBQeUFQSSBTZXJ2ZXIKClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9iMTFjLnNlbWFwaG9yZWNpLmNvbS9iYWRnZXMvcHlhcGktc2VydmVyL2JyYW5jaGVzL21haW4uc3ZnP3N0eWxlPXNoaWVsZHMma2V5PWU5ZWViOWQyLTY0ODctNGFiYS05MjA3LWU0NmM4NGY5YmM2ZildKGh0dHBzOi8vYjExYy5zZW1hcGhvcmVjaS5jb20vcHJvamVjdHMvcHlhcGktc2VydmVyKQpbIVtEb2N1bWVudGF0aW9uIFN0YXR1c10oaHR0cHM6Ly9yZWFkdGhlZG9jcy5vcmcvcHJvamVjdHMvcHlhcGktc2VydmVyL2JhZGdlLz92ZXJzaW9uPWxhdGVzdCldKGh0dHBzOi8vcHlhcGktc2VydmVyLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8/YmFkZ2U9bGF0ZXN0KQoKKipQeUFQSSBTZXJ2ZXIqKiBpcyBhIFB5dGhvbiBsaWJyYXJ5IGZvciBzZXJ2aW5nIFJFU1QgQVBJcyBiYXNlZCBvbgpbT3BlbkFQSV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3Jlc291cmNlcy9vcGVuLWFwaS8pIHNwZWNpZmljYXRpb25zLiBJdCBpcyBiYXNlZCBvbiBbU3RhcmxldHRlXShodHRwczovL3d3dy5zdGFybGV0dGUuaW8pIGFuZCBpcyBmdW5jdGlvbmFsbHkgdmVyeSBzaW1pbGFyIHRvIFtjb25uZXhpb25dKGh0dHBzOi8vY29ubmV4aW9uLnJlYWR0aGVkb2NzLmlvKSwgZXhjZXB0IHRoYXQgaXQgYWltcyB0byBiZSBmdWxseSBbQVNHSV0oaHR0cHM6Ly9hc2dpLnJlYWR0aGVkb2NzLmlvKS1jb21wbGlhbnQuCgoqKldBUk5JTkc6KiogVGhpcyBpcyBzdGlsbCBhIHdvcmsgaW4gcHJvZ3Jlc3MgYW5kIG5vdCBxdWl0ZSByZWFkeSBmb3IgcHJvZHVjdGlvbiB1c2FnZS4gVW50aWwgdmVyc2lvbiAxLjAgaXMgcmVsZWFzZWQsIGFueSBuZXcgcmVsZWFzZSBjYW4gYmUgZXhwZWN0ZWQgdG8gYnJlYWsgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KCgojIyBRdWljayBTdGFydAoKYGBgcHl0aG9uCmZyb20gcHlhcGkuc2VydmVyIGltcG9ydCBBcHBsaWNhdGlvbgpmcm9tIHNvbWUucGF0aCBpbXBvcnQgZW5kcG9pbnRzCgphcHAgPSBBcHBsaWNhdGlvbi5mcm9tX2ZpbGUoInBhdGgvdG8vb3BlbmFwaS55YW1sIiwgbW9kdWxlPWVuZHBvaW50cykKYGBgCg== readmeEtag: '"e330bf28b91a7cd64bdb084322671787282f5380"' readmeLastModified: Thu, 25 Jul 2024 14:14:16 GMT repositoryId: 524173113 description: >- Lightweight API framework using an OpenAPI spec for routing and validation. created: '2022-08-12T17:32:43Z' updated: '2026-01-22T12:12:58Z' language: Python archived: false stars: 5 watchers: 1 forks: 1 owner: berislavlopac logo: https://avatars.githubusercontent.com/u/754090?v=4 repoEtag: '"b2c09bc978dde2497539d386fd55c4cb4f06e761840d16ed40da6d75bc67fae4"' repoLastModified: Thu, 22 Jan 2026 12:12:58 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/burgalon/fezto v3: true id: 7baea5051107a6d799f91ea77fbfbe59 repositoryMetadata: base64Readme: >- IyBGcm9udGVuZCBaZXJvIHRvIE9uZQpBbiBhdXRvbWF0aWMgb24tdGhlLWZseSBhcHAgZ2VuZXJhdG9yIGZyb20gT3BlbkFQSSAzLjAgc3BlYyAob3IgU3dhZ2dlciAyLjApIAoKRkVaVE8gcGFyc2VzIHRoZSBPcGVuQVBJIHNwZWMgYW5kIHRyaWVzIHRvIGRldGVybWluZSB3aGljaCByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZSB0byBwcmVzZW50LCBhbmQgY3JlYXRlcyBDUlVEIHNjcmVlbiBmb3IgY3JlYXRpbmcsIHJlYWRpbmcgYW5kIHVwZGF0aW5nIGVudGl0aWVzLiBJdCBhbHNvIHRyaWVzIHRvIHJlc29sdmUgZm9yZWlnbiBrZXlzIHRvIGNyZWF0ZSBkcm9wZG93bnMgYW5kIGFkZCBsaW5rYWJsZSByZXNvdXJjZXMuCgo= readmeEtag: '"24a49c25bac7949f72d53910052d0734574f512a"' readmeLastModified: Thu, 26 May 2022 09:00:36 GMT repositoryId: 496548279 description: Frontend Zero to One created: '2022-05-26T08:56:21Z' updated: '2025-01-06T11:03:54Z' language: null archived: false stars: 3 watchers: 1 forks: 0 owner: burgalon logo: https://avatars.githubusercontent.com/u/47217?v=4 repoEtag: '"f5cd9eb9334b7cbb6c87536803363ab568fcc4b653990f7b084e56a53b6077ce"' repoLastModified: Mon, 06 Jan 2025 11:03:54 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/cloudy-sky-software/pulumi-provider-template v3: true id: 5e5e71c5d4ff048e6be5da2103af3c92 repositoryMetadata: base64Readme: >- IyBQdWx1bWkgUHJvdmlkZXIgVGVtcGxhdGUgRm9yIE9wZW5BUEktYmFzZWQgUHJvdmlkZXJzCgpUaGlzIHJlcG9zaXRvcnkgaXMgYSBib2lsZXJwbGF0ZSBzaG93aW5nIGhvdyB0byBjcmVhdGUgYSBuYXRpdmUgUHVsdW1pIHByb3ZpZGVyIHVzaW5nOgoKMS4gW2BwdWxzY2hlbWFgXShodHRwczovL2dpdGh1Yi5jb20vY2xvdWR5LXNreS1zb2Z0d2FyZS9wdWxzY2hlbWEpIHRvIGNvbnZlcnQgYW4gT3BlbkFQSSBzcGVjIHRvIFB1bHVtaSBzY2hlbWEKMi4gW2BwdWx1bWktcHJvdmlkZXItZnJhbWV3b3JrYF0oaHR0cHM6Ly9naXRodWIuY29tL2Nsb3VkeS1za3ktc29mdHdhcmUvcHVsdW1pLXByb3ZpZGVyLWZyYW1ld29yaykgdG8gbWFrZSBIVFRQIHJlcXVlc3RzIGFnYWluc3QgdGhlIGNsb3VkIHByb3ZpZGVyIEFQSS4gSXQgdXNlcyB0aGUgbWV0YWRhdGEgcmV0dXJuZWQgYnkgYHB1bHNjaGVtYWAgYXMgb25lIG9mIHRoZSBvdXRwdXRzIGZyb20KICAgY29udmVydGluZyBhbiBPcGVuQVBJIHNwZWMuCgojIyBCYWNrZ3JvdW5kCgpGb2xsb3cgdGhpcyBsaW5rIHRvIHNlZSB3aGF0IGEgW1B1bHVtaSBuYXRpdmUgcHJvdmlkZXIgaXMgY29tcHJpc2VkIG9mXShodHRwczovL2dpdGh1Yi5jb20vY2xvdWR5LXNreS1zb2Z0d2FyZS9jbG91ZC1wcm92aWRlci1hcGktY29uZm9ybWFuY2UvYmxvYi9tYWluL3B1bHVtaS5tZCkuCgpBIFB1bHVtaSBSZXNvdXJjZSBQcm92aWRlcjoKCi0gaXMgYSBnUlBDIHNlcnZlciB3aGljaCBhbGxvd3MgZm9yIHRoZSBQdWx1bWkgZW5naW5lIHRvIGNyZWF0ZSByZXNvdXJjZXMgaW4gYSBzcGVjaWZpYyBjbG91ZAotIGhvbGRzIHRoZSBsaWZlY3ljbGUgbG9naWMgZm9yIHRoZXNlIGNsb3VkIHJlc291cmNlcwotIGhvbGRzIGEgcHVsdW1pIEpTT04gc2NoZW1hIHRoYXQgZGVzY3JpYmVzIHRoZSBwcm92aWRlcgotIHByb3ZpZGVzIGxhbmd1YWdlLXNwZWNpZmljIFNES3Mgc28gcmVzb3VyY2VzIGNhbiBiZSBjcmVhdGVkIGluIHdoaWNoZXZlciBsYW5ndWFnZSB5b3UgcHJlZmVyCgpXaGVuIHdlIHNwZWFrIG9mIGEgIm5hdGl2ZSIgcHJvdmlkZXIsIHdlIG1lYW4gdGhhdCBhbGwgaW1wbGVtZW50YXRpb24gaXMgbmF0aXZlIHRvIFB1bHVtaSwgYXMgb3Bwb3NlZAp0byBbVGVycmFmb3JtLWJhc2VkIHByb3ZpZGVyc10oaHR0cHM6Ly9naXRodWIuY29tL3B1bHVtaS9wdWx1bWktdGYtcHJvdmlkZXItYm9pbGVycGxhdGUpLgoKIyMgQXV0aG9yaW5nIGEgUHVsdW1pIE5hdGl2ZSBQcm92aWRlcgoKVGhpcyBib2lsZXJwbGF0ZSBjcmVhdGVzIGEgd29ya2luZyBQdWx1bWktb3duZWQgcHJvdmlkZXIgbmFtZWQgYHh5emAuCgojIyMgUHJlcmVxdWlzaXRlcwoKRW5zdXJlIHRoZSBmb2xsb3dpbmcgdG9vbHMgYXJlIGluc3RhbGxlZCBhbmQgcHJlc2VudCBpbiB5b3VyIGAkUEFUSGA6CgotIFtgcHVsdW1pY3RsYF0oaHR0cHM6Ly9naXRodWIuY29tL3B1bHVtaS9wdWx1bWljdGwjaW5zdGFsbGF0aW9uKQotIFtHbyAxLjIxXShodHRwczovL2dvbGFuZy5vcmcvZGwvKSBvciAxLmxhdGVzdAotIFtOb2RlSlNdKGh0dHBzOi8vbm9kZWpzLm9yZy9lbi8pIDE4LnguIFdlIHJlY29tbWVuZCB1c2luZyBbbnZtXShodHRwczovL2dpdGh1Yi5jb20vbnZtLXNoL252bSkgdG8gbWFuYWdlIE5vZGVKUyBpbnN0YWxsYXRpb25zLgotIFtZYXJuXShodHRwczovL3lhcm5wa2cuY29tLykKLSBbVHlwZVNjcmlwdF0oaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnLykKLSBbUHl0aG9uXShodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy8pIChjYWxsZWQgYXMgYHB5dGhvbjNgKQotIFsuTkVUXShodHRwczovL2RvdG5ldC5taWNyb3NvZnQuY29tL2Rvd25sb2FkKQoKIyMjIENyZWF0aW5nIGFuZCBJbml0aWFsaXppbmcgdGhlIFJlcG9zaXRvcnkKClB1bHVtaSBvZmZlcnMgdGhpcyByZXBvc2l0b3J5IGFzIGEgW0dpdEh1YiB0ZW1wbGF0ZSByZXBvc2l0b3J5XShodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9yZXBvc2l0b3JpZXMvY3JlYXRpbmctYW5kLW1hbmFnaW5nLXJlcG9zaXRvcmllcy9jcmVhdGluZy1hLXJlcG9zaXRvcnktZnJvbS1hLXRlbXBsYXRlKSBmb3IgY29udmVuaWVuY2UuIEZyb20gdGhpcyByZXBvc2l0b3J5OgoKMS4gQ2xpY2sgIlVzZSB0aGlzIHRlbXBsYXRlIi4KMS4gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKICAgLSBPd25lcjogYDx5b3VyIEdIIG9yZ2FuaXphdGlvbj5gCiAgIC0gUmVwb3NpdG9yeSBuYW1lOiBwdWx1bWkteHl6IChyZXBsYWNlICJ4eXoiIHdpdGggdGhlIG5hbWUgb2YgeW91ciBwcm92aWRlcikKICAgICAtIFByb3ZpZGVycyBidWlsdCBmcm9tIENsb3VkeSBTa3kgU29mdHdhcmUncyB0ZW1wbGF0ZXMgYXJlIF9hbHdheXNfIG5hdGl2ZSBwcm92aWRlcnMsIGJ5IGRlZmF1bHQuCiAgICAgLSBIb3dldmVyLCBpZiB0aGVyZSBpcyBhbHJlYWR5IGEgVEYtYnJpZGdlZCBwcm92aWRlciB3aXRoIHRoYXQgbmFtZSwgeW91IHNob3VsZCBhZGQgdGhlIHN1ZmZpeCBgLW5hdGl2ZWAgc28gdGhhdCB0aGUgcGFja2FnZSBuYW1lIGluIHNvbWUgcGFja2FnZSByZWdpc3RyaWVzIGRvIG5vdCBjb25mbGljdCB3aXRoIHRoZSBvdGhlciBwcm92aWRlcnMuCiAgIC0gRGVzY3JpcHRpb246IFB1bHVtaSBwcm92aWRlciBmb3IgeHl6CiAgIC0gUmVwb3NpdG9yeSB0eXBlOiBQdWJsaWMKMS4gQ2xvbmUgdGhlIGdlbmVyYXRlZCByZXBvc2l0b3J5LgoKRnJvbSB0aGUgdGVtcGxhdGVkIHJlcG9zaXRvcnk6CgpTZWFyY2gtcmVwbGFjZSB0aGUgZm9sbG93aW5nIG9jY3VycmVuY2VzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgbmFtZXMuCgp8IFNlYXJjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVwbGFjZSBXaXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgZ2l0aHViLmNvbS9jbG91ZHktc2t5LXNvZnR3YXJlL3B1bHVtaS14eXogfCBSZW1vdGUgbG9jYXRpb24gb2YgeW91ciByZXBvc2l0b3J5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHh5eiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTG93ZXItY2FzZWQgbmFtZSBvZiB0aGUgcHJvdmlkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBYeXogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhc2NhbC1jYXNlIG5hbWUgb2YgdGhlIHByb3ZpZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgWFlaICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVcHBlci1jYXNlZCBuYW1lIG9mIHRoZSBwcm92aWRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHhfeV96ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTG93ZXIgc25ha2UtY2FzZWQgbmFtZSBvZiB0aGUgcHJvdmlkZXIgaWYgdGhlIHByb3ZpZGVyIG5hbWUgaGFzIG11bHRpcGxlIHdvcmRzIHwKClVwZGF0ZSB0aGUgYEhvbWVwYWdlYCBhbmQgYFB1Ymxpc2hlcmAgdmFsdWVzIGluIGBwcm92aWRlci9wa2cvZ2VuL3NjaGVtYS5nbyAtIFB1bHVtaVNjaGVtYWAgYXBwcm9wcmlhdGVseS4KCiMjIyMgRW1iZWQgdGhlIE9wZW5BUEkgc3BlYwoKVGhlIE9wZW5BUEkgc3BlYyBmaWxlIGZvciB0aGUgcHJvdmlkZXIgeW91IGFyZSBidWlsZGluZyBtdXN0IGJlIHBsYWNlZCBpbiB0aGUgYHByb3ZpZGVyL2NtZC9wdWx1bWktZ2VuLSpgIGZvbGRlciBhcyBgb3BlbmFwaS55bWxgLgpVbmxpa2Ugc29tZSBvZiBQdWx1bWkncyBvd24gbmF0aXZlIHByb3ZpZGVycyB3aGljaCBkb3dubG9hZCB0aGUgT3BlbkFQSSBzcGVjIGZyb20gYW4gdXBzdHJlYW0gcmVwbywgdGhpcyB0ZW1wbGF0ZSBkb2VzIG5vdCBkbyB0aGF0CmFzIGl0IGRvZXMgbm90IGtub3cgd2hlcmUgdG8gZG93bmxvYWQgdGhlIE9wZW5BUEkgc3BlYyBmcm9tLgoKLSBZb3UgY2FuLCBvZiBjb3Vyc2UsIGFkZCBhIE1ha2UgdGFyZ2V0IHNpbWlsYXIgdG8gd2hhdCBQdWx1bWkgZG9lcyB3aXRoIHNvbWUgb2YgaXRzIG5hdGl2ZSBwcm92aWRlcnMgYW5kIGhhdmUgaXQgZG93bmxvYWQgdGhlIGxhdGVzdApPcGVuQVBJIHNwZWMgZnJvbSBhbiB1cHN0cmVhbSByZXBvLgotIFlvdSBjYW4gYWxzbyByZW5hbWUgdGhlIGZpbGUgdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gYG9wZW5hcGkueW1sYCBpZiB5b3Ugd2lzaC4gQmUgc3VyZSB0byBjaGFuZ2UgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdGhhdCBHbwpzaG91bGQgZW1iZWQgaW4gYHByb3ZpZGVyL2NtZC9wdWx1bWktZ2VuLSovbWFpbi5nb2AuCgojIyMjIEdlbmVyYXRlIFB1bHVtaSBzY2hlbWEKCk5vdyB0aGF0IHlvdSBoYXZlIGFuIE9wZW5BUEkgc3BlYyBkb3dubG9hZGVkIGFuZCBhbGwgdGhlIHBsYWNob2xkZXJzIHJlbmFtZWQgdG8gdGhlIGFwcHJvcHJpYXRlIHByb3ZpZGVyL3BhY2thZ2UgbmFtZSwKaS5lLiByZXBsYWNlZCBgeHl6YCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBuYW1lIChzZWUgdGhlIHNlY3Rpb24gYWJvdmUpLCB5b3UgY2FuIGdlbmVyYXRlIGEgUHVsdW1pIHNjaGVtYSBieSBydW5uaW5nCmBtYWtlIGdlbiBnZW5lcmF0ZV9zY2hlbWFgLiBZb3UgbXVzdCBoYXZlIGEgUHVsdW1pIHNjaGVtYSBnZW5lcmF0ZWQgc3VjY2Vzc2Z1bGx5IGluIG9yZGVyIHRvIGdlbmVyYXRlIHRoZSBsYW5ndWFnZQpTREtzLgoKVGhlIGxhcmdlciB0aGUgc3BlYyB0aGUgbW9yZSBsaWtlbHkgdGhlcmUgYXJlIGVycm9ycyBpbiB0aGUgc3BlYyBpdHNlbGYuIEluIG1vc3QgY2FzZXMsIGl0IGhhcyBub3RoaW5nIHRvIGRvIHdpdGggYHB1bHNjaGVtYWAuCklmIGl0J3MgYSBnZW51aW5lIGJ1ZyBpbiBgcHVsc2NoZW1hYCwgcGxlYXNlIG9wZW4gYW4gW2lzc3VlXShodHRwczovL2dpdGh1Yi5jb20vY2xvdWR5LXNreS1zb2Z0d2FyZS9wdWxzY2hlbWEvaXNzdWVzKS4KQnV0IGl0J3MgbW9yZSB0aGFuIGxpa2VseSB5b3UnbGwgbmVlZCB0byBwYXRjaCB0aGUgT3BlbkFQSSBzcGVjIGl0c2VsZi4gWW91IGNhbiBkbyB0aGF0IHVzaW5nIEdvIGluc3RlYWQgb2YgbWFudWFsbHkgZWRpdGluZyB0aGUgc3BlYyBmaWxlCndoaWNoIGNhbiBiZSBxdWl0ZSBjdW1iZXJzb21lLCBlc3BlY2lhbGx5IGlmIHlvdSBhcmUgZGVhbGluZyB3aXRoIGEgdmVyeSBsYXJnZSBzcGVjLgpBbnl3YXksIGhlcmUncyB3aGVyZSB5b3UgY2FuIHdyaXRlIEdvIGNvZGUgdG8gbW9kaWZ5IHRoZSBzcGVjOiBodHRwczovL2dpdGh1Yi5jb20vY2xvdWR5LXNreS1zb2Z0d2FyZS9wdWx1bWktcHJvdmlkZXItdGVtcGxhdGUvYmxvYi9tYWluL3Byb3ZpZGVyL3BrZy9nZW4vb3BlbmFwaV9maXhlcy5nby4KSGVyZSdzIGFuIGV4YW1wbGUgb2YgYW4gT3BlbkFQSSBzcGVjIHRoYXQgbmVlZGVkIHRvIGJlIG1vZGlmaWVkOiBodHRwczovL2dpdGh1Yi5jb20vY2xvdWR5LXNreS1zb2Z0d2FyZS9wdWx1bWktZGlnaXRhbG9jZWFuLW5hdGl2ZS9ibG9iL21haW4vcHJvdmlkZXIvcGtnL2dlbi9vcGVuYXBpX2ZpeGVzLmdvCgpJZiB0aGVyZSBhcmUgZW5kcG9pbnRzIGluIHRoZSBzcGVjIHRoYXQgeW91IGRvbid0IGNhcmUgYWJvdXQgYW5kIHdhbnQgdG8gZXhjbHVkZSB0aGVtIGZyb20gUHVsdW1pLAp5b3UgY2FuIHBhc3MgYSBbbGlzdF0oaHR0cHM6Ly9naXRodWIuY29tL2Nsb3VkeS1za3ktc29mdHdhcmUvcHVsdW1pLXByb3ZpZGVyLXRlbXBsYXRlL2Jsb2IvbWFpbi9wcm92aWRlci9wa2cvZ2VuL3NjaGVtYS5nbyNMOTQpIG9mIHRoZSBlbmRwb2ludCBwYXRocyBleGFjdGx5IGFzIHRoZXkgYXBwZWFyIGluIHRoZSBzcGVjLgoKIyMjIyBCdWlsZCB0aGUgcHJvdmlkZXIgYW5kIGluc3RhbGwgdGhlIHBsdWdpbgoKYGBgYmFzaAokIG1ha2UgYnVpbGQgaW5zdGFsbApgYGAKClRoaXMgd2lsbDoKCjEuIENyZWF0ZSB0aGUgU0RLIGNvZGVnZW4gYmluYXJ5IGFuZCBwbGFjZSBpdCBpbiBhIGAuL2JpbmAgZm9sZGVyIChnaXRpZ25vcmVkKQoyLiBDcmVhdGUgdGhlIHByb3ZpZGVyIGJpbmFyeSBhbmQgcGxhY2UgaXQgaW4gdGhlIGAuL2JpbmAgZm9sZGVyIChnaXRpZ25vcmVkKQozLiBHZW5lcmF0ZSB0aGUgZG90bmV0LCBHbywgTm9kZSwgYW5kIFB5dGhvbiBTREtzIGFuZCBwbGFjZSB0aGVtIGluIHRoZSBgLi9zZGtgIGZvbGRlcgo0LiBJbnN0YWxsIHRoZSBwcm92aWRlciBvbiB5b3VyIG1hY2hpbmUuCgpGZWVsIGZyZWUgdG8gbW9kaWZ5IGFueSBvZiB0aGUgTWFrZSB0YXJnZXRzIChvciBhZGQgbmV3cyBvbmVzKSB0byBmaXQgeW91ciBuZWVkcy4KSWYgeW91IGZlZWwgb3RoZXJzIG1pZ2h0IGZpbmQgdGhlbSB1c2VmdWwsIHBsZWFzZSBjb25zaWRlciBjb250cmlidXRpbmcgaXQgYmFjayB0bwp0aGlzIHRlbXBsYXRlIHJlcG8uIDopCgojIyMjIFRlc3QgYWdhaW5zdCB0aGUgZXhhbXBsZQoKYGBgYmFzaAokIGNkIGV4YW1wbGVzL3NpbXBsZQokIHlhcm4gbGluayBAcHVsdW1pL3h5egokIHlhcm4gaW5zdGFsbAokIHB1bHVtaSBzdGFjayBpbml0IHRlc3QKJCBwdWx1bWkgdXAKYGBgCgojIyMjIEEgYnJpZWYgcmVwb3NpdG9yeSBvdmVydmlldwoKWW91IG5vdyBoYXZlOgoKMS4gQSBgcHJvdmlkZXIvYCBmb2xkZXIgY29udGFpbmluZyB0aGUgYnVpbGRpbmcgYW5kIGltcGxlbWVudGF0aW9uIGxvZ2ljCiAgIDEuIGBjbWQvYAogICAgICAxLiBgcHVsdW1pLWdlbi14eXovYCAtIGdlbmVyYXRlcyBsYW5ndWFnZSBTREtzIGZyb20gdGhlIHNjaGVtYQogICAgICAyLiBgcHVsdW1pLXJlc291cmNlLXh5ei9gIC0gaG9sZHMgdGhlIHBhY2thZ2Ugc2NoZW1hLCBpbmplY3RzIHRoZSBwYWNrYWdlIHZlcnNpb24sIGFuZCBzdGFydHMgdGhlIGdSUEMgc2VydmVyCiAgIDIuIGBwa2dgCiAgICAgIDEuIGBwcm92aWRlcmAgLSBob2xkcyB0aGUgZ1JQQyBtZXRob2RzIChhbmQgZm9yIG5vdywgdGhlIHNhbXBsZSBpbXBsZW1lbnRhdGlvbiBsb2dpYykgcmVxdWlyZWQgYnkgdGhlIFB1bHVtaSBlbmdpbmUKICAgICAgMi4gYHZlcnNpb25gIC0gc2VtdmVyIHBhY2thZ2UgdG8gYmUgY29uc3VtZWQgYnkgYnVpbGQgcHJvY2Vzc2VzCjMuIGBzZGtgIC0gaG9sZHMgdGhlIGdlbmVyYXRlZCBjb2RlIGxpYnJhcmllcyBjcmVhdGVkIGJ5IGBwdWx1bWktZ2VuLXh5ei9tYWluLmdvYAo0LiBgZXhhbXBsZXNgIGEgZm9sZGVyIG9mIFB1bHVtaSBwcm9ncmFtcyB0byB0cnkgbG9jYWxseSBhbmQvb3IgdXNlIGluIENJLgo1LiBBIGBNYWtlZmlsZWAgYW5kIHRoaXMgYFJFQURNRWAuCgojIyMgSW1wbGVtZW50aW5nIHRoZSBwcm92aWRlciBjYWxsYmFjayBtZXRob2RzCgpZb3Ugd2lsbCBmaW5kIGEgbW9zdGx5IGJsYW5rIGltcGxlbWVudGF0aW9uIG9mIHRoZXNlIGluIGBwa2cvcHJvdmlkZXIvcHJvdmlkZXIuZ29gLgpOb3RlIHRoYXQgdGhlc2UgbWV0aG9kcyBkbyBub3QgbGluayAxOjEgdG8gdGhlIFB1bHVtaSByZXNvdXJjZSBwcm92aWRlciBpbnRlcmZhY2UKYmVjYXVzZSBgcHVsdW1pLXByb3ZpZGVyLWZyYW1ld29ya2AgcHJvdmlkZXMgYSBjb252ZW5pZW50IGNhbGxiYWNrIG1lY2hhbmlzbQphbmQgaGFuZGxlcyBhbGwgb3RoZXIgcmVzcG9uc2liaWxpdGllcy4gWW91IHNob3VsZCB1c2UgdGhlIGNhbGxiYWNrIG1ldGhvZHMKdG8gYWx0ZXIgdGhlIEhUVFAgcmVxdWVzdCAoaW4gUHJlKiBtZXRob2RzKSBvciB0aGUgcmVzcG9uc2UgKGluIFBvc3QqKSBhcwpuZWVkZWQuIElmIHlvdSBkb24ndCBuZWVkIGFueSBjdXN0b21pemF0aW9uLCB0aGVuIHlvdSBkb24ndCBuZWVkIHRvIGRvCmFueXRoaW5nIGF0IGFsbC4gWWVwISBUaGUgZnJhbWV3b3JrIGhhbmRsZXMgaXQgYWxsLgoKIyMjIEJ1aWxkIEV4YW1wbGVzCgpDcmVhdGUgYW4gZXhhbXBsZSBwcm9ncmFtIHVzaW5nIHRoZSByZXNvdXJjZXMgZGVmaW5lZCBpbiB5b3VyIHByb3ZpZGVyLCBhbmQgcGxhY2UgaXQgaW4gdGhlIGBleGFtcGxlcy9gIGZvbGRlci4KCllvdSBjYW4gbm93IHJlcGVhdCB0aGUgc3RlcHMgZm9yIFtidWlsZCwgaW5zdGFsbCwgYW5kIHRlc3RdKCN0ZXN0LWFnYWluc3QtdGhlLWV4YW1wbGUpLgoKIyMgRG9jdW1lbnRhdGlvbgoKUGxlYXNlIFtmb2xsb3cgdGhpcyBndWlkZSB0byBhZGQgZG9jdW1lbnRhdGlvbiB0byB5b3VyIHByb3ZpZGVyXShodHRwczovL3d3dy5wdWx1bWkuY29tL2RvY3MvZ3VpZGVzL3B1bHVtaS1wYWNrYWdlcy9ob3ctdG8tYXV0aG9yLyN3cml0ZS1kb2N1bWVudGF0aW9uKS4KCiMjIyBJbXBvcnRpbmcgRXhpc3RpbmcgUmVzb3VyY2VzCgpJbXBvcnQgSURzIHNob3VsZCBzYXRpc2Z5IGFsbCBJRCBzZWdtZW50cyBpbiB0aGUgYEdFVGAgZW5kcG9pbnQgZm9yIHRoZSByZXNvdXJjZQp5b3UgYXJlIGltcG9ydGluZy4gVGhlIElEcyByZXF1aXJlZCBpbiB0aGUgcGF0aCBzaG91bGQgYmUgc2VwYXJhdGVkIGJ5IGAvYC4KRmlyc3QsIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIHRoZSBgR0VUYCBlbmRwb2ludCBpbiB0aGUgT3BlbkFQSSBzcGVjCmZvciB0aGUgcHJvdmlkZXIuCgpGb3IgZXhhbXBsZSwgbGV0J3MgYXNzdW1lIHN1Y2ggYSBHRVQgZW5kcG9pbnQgcGF0aCBmb3Igc29tZSByZXNvdXJjZSBpczogYC9zZXJ2aWNlcy97c2VydmljZUlkfS9zb21lUmVzb3VyY2Uve3NvbWVSZXNvdXJjZUlkfWAuCgpUaHVzLCB0aGUgYHB1bHVtaSBpbXBvcnRgIGNvbW1hbmQgdG8gcnVuIGlzOgoKYGBgYmFzaAojIFRoZSByZXNvdXJjZSB0eXBlIHRva2VuIGNhbiBiZSBlYXNpbHkgZm91bmQgYnkgdXNpbmcgeW91ciBJREVzCiMgR28gVG8gRGVmaW5pdGlvbiBmdW5jdGlvbmFsaXR5IGZvciB0aGUgcmVzb3VyY2UgYW5kIGxvb2tpbmcgYXQgdGhlIHR5cGUKIyBwcm9wZXJ0eSBkZWZpbmVkIGluIHRoZSBjdXN0b20gcmVzb3VyY2UncyBjbGFzcyBkZWZpbml0aW9uLgpwdWx1bWkgaW1wb3J0IHtyZXNvdXJjZVR5cGVUb2tlbn0ge3Jlc291cmNlTmFtZX0gL3tzZXJ2aWNlSWR9L3tzb21lUmVzb3VyY2VJZH0KYGBgCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGFsc28gaW1wb3J0IHVzaW5nIHRoZSBgaW1wb3J0YCBQdWx1bWkgcmVzb3VyY2Ugb3B0aW9uLgpSdW4gYHB1bHVtaSB1cGAgdG8gaW1wb3J0IHRoZSByZXNvdXJjZSBpbnRvIHlvdXIgc3RhY2sncyBzdGF0ZS4gT25jZSBpbXBvcnRlZCwKeW91IHNob3VsZCByZW1vdmUgdGhlIGBpbXBvcnRgIHJlc291cmNlIG9wdGlvbi4KCmBgYHR5cGVzY3JpcHQKY29uc3Qgc29tZVJlc291cmNlID0gbmV3IFNvbWVSZXNvdXJjZSgKICAibXlSZXNvdXJjZU5hbWUiLAogIHsgLy9pbnB1dHMgZm9yIHRoZSByZW9zdXJjZSB9LAogIHsKICAgIHByb3RlY3Q6IHRydWUsCiAgICBpbXBvcnQ6IGAve3NlcnZpY2VJZH0ve3NvbWVSZXNvdXJjZUlkfWAsCiAgfQopOwpgYGAKClJlZmVyIHRvIHRoZSBQdWx1bWkgW2RvY3NdKGh0dHBzOi8vd3d3LnB1bHVtaS5jb20vZG9jcy9pYWMvYWRvcHRpbmctcHVsdW1pL2ltcG9ydC8pIGZvciBpbXBvcnRpbmcgYQpyZXNvdXJjZS4KCiMjIENvbmZpZ3VyaW5nIENJIGFuZCByZWxlYXNlcwoKMS4gRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgbGFpZCBvdXQgaW4gdGhlIFtkZXBsb3ltZW50IHRlbXBsYXRlc10oLi9kZXBsb3ltZW50LXRlbXBsYXRlcy9SRUFETUUtREVQTE9ZTUVOVC5tZCkuCg== readmeEtag: '"e76c9f1eed3a01c32d4bd4fdea89702e1e6bb390"' readmeLastModified: Fri, 18 Jul 2025 17:43:19 GMT repositoryId: 563307038 description: >- Template repo for creating Pulumi providers based on pulschema and pulumi-provider-framework created: '2022-11-08T10:44:25Z' updated: '2026-02-06T01:25:57Z' language: Go archived: false stars: 4 watchers: 1 forks: 1 owner: cloudy-sky-software logo: https://avatars.githubusercontent.com/u/97355959?v=4 license: Apache-2.0 repoEtag: '"10340170d3743aeea2f5217b38337547fae3b355f27c451a0ee33f122df82cb6"' repoLastModified: Fri, 06 Feb 2026 01:25:57 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/golangid/goruda v3: true repositoryMetadata: base64Readme: >- IyBHb3J1ZGEKCkdvcnVkYSBpcyBHb2xhbmcgQ0xJIEFwcCB0byBjb252ZXJ0IE9wZW5BUEkgMyBTcGVjaWZpY2F0aW9ucwppbnRvIHNpbXBsZSBib2lsZXJwbGF0ZSBjb2RlLiAKClRoaXMgYXBwIGlzIGNyZWF0ZWQgYmVjYXVzZSB0aGUgcHJvY2VzcyBvZiBjcmVhdGluZyBib2lsZXJwbGF0ZSAKSFRUUCBzZXJ2ZXIgaW4gR28gaXMgcmVwZXRpdGl2ZSwgc28gaW4gb3JkZXIgdG8gcmVkdWNlIHRoYXQga2luZCBvZiB3b3JrLCAKR29ydWRhIHdpbGwgcmVhZCBhbGwgeW91ciBPcGVuQVBJIDMgc3BlY2lmaWNhdGlvbnMgYW5kIGNvbnZlcnQgaXQKaW50byBzaW1wbGUgcnVubmluZyBIVFRQIFNlcnZlci4KCiMjIFJlcXVpcmVtZW50cwoKLSBHbyBhdCBsZWFzdCB2ZXIuIDEuMTEKLSBXb3JraW5nIE9wZW5BUEkgMyBGaWxlCgojIyBIb3cgdG8gUnVuCgpgYGBiYXNoCn4gbWFrZSBidWlsZAp+IC4vZ29ydWRhIGdlbmVyYXRlIFtwYXRoX3RvX29wZW5hcGlfZmlsZV0KYGBgCgo= readmeEtag: '"d5af7162b1282fd9326909034a59d325a120ae7f"' readmeLastModified: Mon, 22 Jun 2020 11:43:46 GMT repositoryId: 143961171 description: Open API 3 Specs to Golang HTTP Server created: '2018-08-08T04:30:14Z' updated: '2025-09-25T14:26:02Z' language: Go archived: true stars: 3 watchers: 2 forks: 2 owner: golangid logo: https://avatars.githubusercontent.com/u/42196748?v=4 license: MIT repoEtag: '"439ccec818afead9262e686a604b7610c78dacba78fa23664dbd85348eb080c1"' repoLastModified: Thu, 25 Sep 2025 14:26:02 GMT foundInMaster: true category: Parsers id: 076704721a0716ce327f2ced3ff53046 - source: openapi3 tags repository: https://github.com/quetz-al/quetzal v3: true repositoryMetadata: base64Readme: >- Li4gY2xhc3M6OiBjZW50ZXIKCiAgICAuLiBpbWFnZTo6IGRvY3Mvc291cmNlL19zdGF0aWMvbG9nb19oLnBuZwogICAgICAgOmhlaWdodDogMTAwcHgKICAgICAgIDphbHQ6IFF1ZXR6YWwgbG9nbwoKICAgIFF1ZXR6YWwg4oCUIEEgUkVTVGZ1bCBBUEkgZm9yIGRhdGEgYW5kIG1ldGFkYXRhIG1hbmFnZW1lbnQuCgouLiBiYWRnZXMgd2lsbCBnbyBoZXJlCgoKUXVldHphbAo9PT09PT09CgouLiBhYnN0cmFjdF9zdGFydAoKUXVldHphbCAoc2hvcnQgZm9yIFF1ZXR6YWxjw7NhdGwsIHRoZSBmZWF0aGVyZWQgc25ha2UpLCBhIFJFU1RmdWwgQVBJIGRlc2lnbmVkCnRvIHN0b3JlIGRhdGEgZmlsZXMgYW5kIG1hbmFnZSB0aGVpciBhc3NvY2lhdGVkIG1ldGFkYXRhLgoKUXVldHphbCBpcyBhbiBhcHBsaWNhdGlvbiB0aGF0IHVzZXMgQ2xvdWQgc3RvcmFnZSBwcm92aWRlcnMgYW5kIG5vbi1zdHJ1Y3R1cmVkCmRhdGFiYXNlcyB0byBoZWxwIHJlc2VhcmNoZXJzIG9yZ2FuaXplIHRoZWlyIGRhdGEgYW5kIG1ldGFkYXRhIGZpbGVzLgpJdHMgbWFpbiBmZWF0dXJlIGlzIHRvIHByb3ZpZGUgYSByZW1vdGUsIHZpcnR1YWxseSBpbmZpbml0ZSwgc3RvcmFnZSBsb2NhdGlvbgpmb3IgcmVzZWFyY2hlcnMnIGRhdGEsIHdoaWxlIHByb3ZpZGluZyBhbiBBUEkgdG8gZW5jYXBzdWxhdGUgZGF0YS9tZXRhZGF0YQpvcGVyYXRpb25zLiBJbiBvdGhlciB3b3JkcywgcmVzZWFyY2hlcnMgYW5kIHRlYW1zIGNhbiB3b3JrIHdpdGggbGFyZ2UgYW1vdW50cwpvZiBkYXRhIHRoYXQgd291bGQgYmUgdG9vIGxhcmdlIGZvciBsb2NhbCBhbmFseXNlcywgdXNpbmcgUXVldHphbCB0byBzaW1wbGlmeQp0aGUgY29tcGxleGl0eSBvZiBDbG91ZCByZXNvdXJjZSBtYW5hZ2VtZW50LgoKUXVldHphbCdzIG1pZC10ZXJtIHJvYWRtYXAgaXMgdG8gaW50ZWdyYXRlIHdpdGggbGFyZ2UgcHVibGljIHBoeXNpb2xvZ2ljYWwKc2lnbmFsIGRhdGFiYXNlcyBsaWtlIFBoeXNpb05ldF8sIE1JUERCXywgVFVIXywgYW1vbmcgb3RoZXJzLiBUaGEgbWFpbiBvYmplY3RpdmUKaXMgdG8gcHJvdmlkZSByZXNlYXJjaGVycyBhbmQgZGF0YSBzY2llbnRpc3RzIGEgdW5pcXVlIGJhbmsgb2YgZmlsZSBkYXRhc2V0cwp3aXRoIGEgdW5pZmllZCBBUEkgdG8gYWNjZXNzIHRoZSBkYXRhIGFuZCB0byBlbmNhcHN1bGF0ZSB0aGUgaGV0ZXJvbmVnZWl0eSBvZgp0aGVzZSBkYXRhc2V0cy4KCi4uIF9QaHlzaW9OZXQ6IGh0dHBzOi8vcGh5c2lvbmV0Lm9yZy8KLi4gX01JUERCOiBodHRwOi8vZmNvbl8xMDAwLnByb2plY3RzLm5pdHJjLm9yZy9pbmRpL2NtaV9lZWcvCi4uIF9UVUg6IGh0dHBzOi8vd3d3LmlzaXAucGljb25lcHJlc3MuY29tL3Byb2plY3RzL3R1aF9lZWcvaHRtbC9vdmVydmlldy5zaHRtbAoKRmVhdHVyZXMKLS0tLS0tLS0KClRoZXJlIGFyZSB0d28gc2NlbmFyaW9zIHdoZXJlIFF1ZXR6YWwgd2FzIGRlc2lnbmVkIHRvIGhlbHA6CgoqIEltYWdpbmUgeW91IHdhbnQgdG8gYXBwbHkgYSBkYXRhIHByb2Nlc3NpbmcgcGlwZWxpbmUgdG8gYSBsYXJnZSBkYXRhc2V0LgogIFRoZXJlIGFyZSBzZXZlcmFsIHNvbHV0aW9ucyBvbiBob3cgdG8gZXhlY3V0ZSBhbmQgcGFyYWxsZWxpemUgeW91ciBjb2RlLCBidXQKICAqd2hlcmUgaXMgdGhlIGRhdGE/KiBNb3Jlb3ZlciwgaW1hZ2luZSB0aGF0IHlvdSB3YW50IHRvIGRvIGEgdHJhbnN2ZXJzZSBzdHVkeToKICBIb3cgZG8geW91IG1hbmFnZSB0aGUgZGlmZmVyZW50IHNvdXJjZXM/IEhvdyB0byBkb3dubG9hZCB0aGVtPwoKICBRdWV0emFsIHByb3ZpZGVzIGEgc2luZ2xlIGRhdGEgc291cmNlIHdpdGggYSBzaW1wbGUgQVBJIHRoYXQgd2lsbCBsZXQgeW91CiAgZGVmaW5lIGVhc2lseSB0aGUgc2NvcGUgb2YgeW91ciBzdHVkeSBhbmQsIHdpdGggYSBicmllZiBQeXRob24gY29kZSB0aGF0CiAgdXNlcyBgUXVldHphbCBjbGllbnQgPGh0dHBzOi8vZ2l0aHViLmNvbS9xdWV0ei1hbC9xdWV0emFsLWNsaWVudD5gXywgeW91IHdpbGwKICBiZSBhYmxlIHRvIGRvd25sb2FkIHlvdXIgZGF0YXNldC4KCiogTGV0J3Mgc2F5IHRoYXQgeW91IGFyZSBwcmVwYXJpbmcgYSBuZXcgc3R1ZHkgaW1wbHlpbmcgc29tZSBkYXRhIGNvbGxlY3Rpb24KICBwcm90b2NvbC4gWW91IGNvdWxkIGRlZmluZSBhIHByb2NlZHVyZSB3aGVyZSB0aGUgZGF0YSBvcGVyYXRvcnMgb3IgdGVjaG5pY2lhbnMKICB0YWtlIGNhcmUgdG8gY29weSB0aGUgZGF0YSBmaWxlcyBpbiBhIGRpc2ssIEdvb2dsZSBEcml2ZSBvciBEcm9wYm94LCBhbG9uZwogIHdpdGggdGhlIG5vdGVzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHNlc3Npb24sIGxpa2Ugc3ViamVjdCBzdHVkeSBpZGVudGlmaWVyLAogIGRhdGUsIGFnZSwgdGVtcGVyYXR1cmUsIGV0Yy4gRG9pbmcgdGhpcyBtYW51YWxseSB3b3VsZCBiZSBlcnJvci1wcm9uZS4KICBNb3Jlb3ZlciwgdGhlIHN0cnVjdHVyZSBvZiB0aGVzZSBub3RlcyAoaS5lLiB0aGUgbWV0YWRhdGEpIG1heSBldm9sdmUgcXVpY2tseSwKICBzbyB5b3UgZWl0aGVyIHNhdmUgdGhlbSBhcyBtYW51YWwgbm90ZXMsIHRleHQgZmlsZXMsIG9yIHNvbWUgZGF0YWJhc2UgdGhhdAogIGdpdmVzIHlvdSB0aGUgZmxleGliaWxpdHkgdG8gcXVpY2tseSBhZGFwdCBpdHMgc3RydWN0cmUuCgogIFVzaW5nIHRoZSBRdWV0emFsIEFQSSwgeW91IGF1dG9tYXRlIHRoZSB1cGxvYWQgYW5kIHNhZmUgc3RvcmFnZSBvZiB0aGUgc3R1ZHkKICBmaWxlcywgYXNzb2NpYXRlIHRoZSBtZXRhZGF0YSBvZiB0aGVzZSBmaWxlcyB3aGlsZSBoYXZpbmcgdGhlIGxpYmVydHkgdG8gc2V0CiAgYW5kIG1vZGlmeSB0aGUgbWV0YWRhdGEgc3RydWN0dXJlIGFzIHlvdSBzZWUgZml0LgoKCkluIGJyaWVmLCBRdWV0emFsIG9mZmVycyB0aGUgZm9sbG93aW5nIG1haW4gZmVhdHVyZXM6CgoqICoqU3RvcmFnZSoqIG9mIGRhdGEgZmlsZXMsIGJhc2VkIG9uIGNsb3VkIHN0b3JhZ2UgcHJvdmlkZXJzLCB3aGljaCBiZW5lZml0cwogIGZyb20gYWxsIG9mIHRoZSBmZWF0dXJlcyBmcm9tIHRoZSBwcm92aWRlciwgc3VjaCBhcyB2aXJ0dWFsbHkgaW5maW5pdGUKICBzdG9yYWdlIHNpemUuCiogKipVbnN0cnVjdHVyZWQgbWV0YWRhdGEqKiBhc3NvY2lhdGVkIHRvIGVhY2ggZmlsZSouIFF1ZXR6YWwgZG9lcyBub3QgZm9yY2UKICB0aGUgdXNlciB0byBvcmdhbml6ZSB5b3VyIG1ldGFkYXRhIGluIGEgcGFydGljdWxhciB3YXksIGl0IGxldHMgdGhlIHVzZXIga2VlcAogIHdoYXRldmVyIHN0cnVjdHVyZSB0aGV5IHByZWZlci4KKiAqKlN0cnVjdHVyZWQgbWV0YWRhdGEgdmlld3MqKiBmb3IgbWV0YWRhdGEgZXhwbG9yYXRpb24gb3IgZGF0YXNldCBkZWZpbml0aW9uLgogIEJ5IGxldmVyYWdpbmcgUG9zdGdyZXMgU1FMLCB1bnN0cnVjdHVyZWQgbWV0YWRhdGEgY2FuIGJlIHF1ZXJpZWQgYXMgSlNPTgogIG9iamVjdHMsIGxldHRpbmcgdGhlIHVzZXIgZXhwcmVzcyB3aGF0IHN1YnNldCBvZiB0aGUgZGF0YSB0aGV5IHdhbnQgdG8gdXNlLgoqICoqTWV0YWRhdGEgdmVyc2lvbmluZyoqLiBDaGFuZ2VzIG9uIG1ldGFkYXRhIGFyZSB2ZXJzaW9uZWQsIHdoaWNoIGlzCiAgcGFydGljdWxhcmx5IHVzZWZ1bCB0byBlbnN1cmUgdGhhdCBhIGRhdGFzZXQgYXJlIHJlcHJvZHVjaWJsZS4KKiBFbmRwb2ludHMgYW5kIG9wZXJhdGlvbnMgZGVmaW5lZCB1c2luZyB0aGUKICBgT3BlbkFQSSB2MyBzcGVjaWZpY2F0aW9uIDxodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbj5gXy4KCi4uIGFic3RyYWN0X2VuZAoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpRdWV0emFsJ3MgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgb24KYHJlYWR0aGVkb2NzIDxodHRwczovL3F1ZXR6YWwtYXBpLnJlYWR0aGVkb2NzLm9yZz5gXy4gVGhlIEFQSSBkb2N1bWVudGF0aW9uIGlzCmVtYmVkZGVkIGludG8gaXRzIHNwZWNpZmljYXRpb247IHRoZSBiZXN0IHdheSB0byB2aXN1YWxpemUgaXQgaXMgdGhyb3VnaCB0aGUKaXMgYWxzbyBhCmBSZURvYyBBUEkgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24gc2l0ZSA8aHR0cHM6Ly9zdGFnZS5xdWV0ei5hbC9yZWRvYz5gXy4KCgoKQ29udHJpYnV0ZQotLS0tLS0tLS0tCgotIElzc3VlIFRyYWNrZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9xdWV0ei1hbC9xdWV0emFsL2lzc3VlcwotIFNvdXJjZSBDb2RlOiBodHRwczovL2dpdGh1Yi5jb20vcXVldHotYWwvcXVldHphbAoKU3VwcG9ydAotLS0tLS0tCgpJZiB5b3UgYXJlIGhhdmluZyBpc3N1ZXMsIHBsZWFzZSBsZXQgdXMga25vdyBieSBvcGVuaW5nIGFuIGlzc3VlIG9yIGJ5IHNlbmRpbmcKYW4gZW1haWwgdG8gc3VwcG9ydEBxdWV0ei5hbC4KCkxpY2Vuc2UKLS0tLS0tLQoKVGhlIHByb2plY3QgaXMgdW5kZXIgdGhlIEJTRCAzLWNsYXVzZSBsaWNlbnNlLgoKU2VlIHRoZSBgYXV0aG9ycyA8Li9BVVRIT1JTLnJzdD5gXyBwYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBhdXRob3JzIGFuZApjb3B5cmlnaHQgaG9sZGVycy4K readmeEtag: '"3c831224d83f4aa0c17bc8b49a787f06b1ad0002"' readmeLastModified: Tue, 24 Mar 2020 16:17:35 GMT repositoryId: 173719463 description: >- Quetzal API (short for Quetzalcoatl): a data and metadata management application created: '2019-03-04T10:00:31Z' updated: '2022-08-05T03:40:39Z' language: Python archived: false stars: 3 watchers: 0 forks: 2 owner: quetz-al logo: https://avatars.githubusercontent.com/u/47522179?v=4 license: BSD-3-Clause repoEtag: '"a9342d638aec7c8cdcbb0dd1b130d22e0e768f1d7409172fb1bb3fbfa653b136"' repoLastModified: Fri, 05 Aug 2022 03:40:39 GMT foundInMaster: true category: - Testing - Server Implementations id: 76a2a1bb0a23b588699359bf97edbc48 - source: openapi3 tags repository: https://github.com/ninjanas/forteapi v3: true id: b3809529738bd1da943a65032673b5ae repositoryMetadata: base64Readme: >- IyBGb3J0ZUFQSQo8ZGl2IGFsaWduPSJjZW50ZXIiPgo8aDM+PC9oMz4KPGltZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgc3JjPSJodHRwczovL2ltZy5pY29uczguY29tL2lvcy1maWxsZWQvMTAwL2N1cmx5LWJyYWNrZXRzLnBuZyIgYWx0PSJjdXJseS1icmFja2V0cyIvPgo8aDM+PC9oMz4KPC9kaXY+Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPgo8aW1nIGFsdD0iR2l0SHViIGxhc3QgY29tbWl0IChicmFuY2gpIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhc3QtY29tbWl0L05pbmphTmFzL0ZvcnRlQVBJL21haW4iPgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTmluamFOYXMvRm9ydGVBUEkvaXNzdWVzIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvaXNzdWVzL05pbmphTmFzL0ZvcnRlQVBJIiBhbHQ9Imlzc3VlcyAtIEZvcnRlQVBJIj48L2E+CjxpbWcgYWx0PSJHaXRIdWIgUmVwbyBzdGFycyIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9zdGFycy9OaW5qYU5hcy9Gb3J0ZUFQSSI+CjxhIGhyZWY9Imh0dHBzOi8vdHlwZXNjcmlwdGxhbmcub3JnIiB0aXRsZT0iR28gdG8gVHlwZVNjcmlwdCBob21lcGFnZSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvVHlwZVNjcmlwdC01LWJsdWU/bG9nbz10eXBlc2NyaXB0JmxvZ29Db2xvcj13aGl0ZSIgYWx0PSJNYWRlIHdpdGggVHlwZVNjcmlwdCI+PC9hPgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTmluamFOYXMvRm9ydGVBUEkvYmxvYi9tYWluL0xJQ0VOU0UiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtTUlULWJsdWUiIGFsdD0iTGljZW5zZSI+PC9hPgoKRm9ydGUgQVBJIGlzIGEgbXVzaWMgdGhlb3J5IEFQSSB0aGF0IHByb3ZpZGVzIGEgd2F5IHRvIHF1ZXJ5IHNldCBjbGFzc2VzIGluIDEyIHRvbmUgZXF1YWwgdGVtcGVyYW1lbnQuIEl0IHVzZXMgZGF0YSBzY3JhcGVkIGZyb20gdGhpcyA8YSBocmVmPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX3NldF9jbGFzc2VzIj53aWtpcGVkaWEgcGFnZTwvYT4gdG8gcHJvdmlkZSBGb3J0ZSBudW1iZXJzLCBwcmltZSBmb3JtcywgaW50ZXJ2YWwgdmVjdG9ycywgenlnb3RpYyBvciB0d2lubmVkIHNldHMsIGFuZCBjb21wbGVtZW50cyBvZiBzZXRzLgoKIyMKCioqQ3VycmVudGx5IHRoaXMgQVBJIGlzIGxpdmUgW2hlcmVdKGh0dHBzOi8vaGNkYThmOGR0ay5leGVjdXRlLWFwaS51cy1lYXN0LTEuYW1hem9uYXdzLmNvbS9wcm9kL2FwaS9kYXRhLykgdXNpbmcgQVdTIEFQSSBHYXRld2F5ICsgQVdTIExhbWJkYSEqKgoqKkNoZWNrIG91dCB0aGUgT3BlbkFQSSBkb2NzIG9uIFN3YWdnZXJIdWIgW2hlcmVdKGh0dHBzOi8vYXBwLnN3YWdnZXJodWIuY29tL2FwaXMtZG9jcy9OaW5qYU5hcy9Gb3J0ZUFQSS8xLjMuMSkhKioKCioqVGhlIEFQSSBpcyByYXRlLWxpbWl0ZWQgYXQgNTAwIHJlcXVlc3RzIHBlciBkYXkuIE1ha2UgYW4gaXNzdWUgaWYgeW91IG5lZWQgbW9yZSByZXF1ZXN0cy4qKgoKKipQbGVhc2UgbWFrZSBhbiBpc3N1ZSBmb3IgYW55IGJ1Z3MgYW5kIHR5cG9zIHlvdSBtYXkgZmluZCEqKgoKPC9kaXY+CgojIyBUYWJsZSBvZiBDb250ZW50cwoKLSBbQXBwIEV4YW1wbGVdKCNhcHAtZXhhbXBsZSkKLSBbV2hhdCBhcmUgRm9ydGUgTnVtYmVycz8gYW5kIE1vcmUhXSgjd2hhdC1hcmUtZm9ydGUtbnVtYmVycy1hbmQtbW9yZSkKICAtIFtTZXQgVGhlb3J5XSgjc2V0LXRoZW9yeSkKICAtIFtQcmltZSBGb3JtXSgjcHJpbWUtZm9ybSkKICAtIFtJbnRlcnZhbCBWZWN0b3JdKCNpbnRlcnZhbC12ZWN0b3IpCiAgLSBbRm9ydGUgTnVtYmVyc10oI2ZvcnRlLW51bWJlcnMpCiAgLSBbQ29tcGxlbWVudHNdKCNjb21wbGVtZW50cykKLSBbU2hvdWxkIEkgdXNlIHRoaXMgQVBJP10oI3Nob3VsZC1pLXVzZS10aGlzLWFwaSkKLSBbRGF0YVNldCBUeXBlXSgjZGF0YXNldC10eXBlKQotIFtTdGF0dXMgQ29kZXNdKCNzdGF0dXMtY29kZXMpCi0gW0VuZHBvaW50c10oI2VuZHBvaW50cykKICAtIFtHRVQgL2FwaS9kYXRhL10oI2dldC1hcGlkYXRhKQogIC0gW0dFVCAvYXBpL2RhdGEvOnF1ZXJ5UHJvcC9dKCNnZXQtYXBpZGF0YXF1ZXJ5cHJvcCkKICAtIFtHRVQgL2FwaS9mbGF0ZGF0YS86cXVlcnlwcm9wL10oI2dldC1hcGlmbGF0ZGF0YXF1ZXJ5cHJvcCkKICAgIC0gW251bWJlcl0oI251bWJlcikKICAgIC0gW3ByaW1lRm9ybV0oI3ByaW1lZm9ybSkKICAgIC0gW3ZlY10oI3ZlYykKICAgIC0gW3pdKCN6KQogICAgLSBbY29tcGxlbWVudF0oI2NvbXBsZW1lbnQpCiAgICAtIFtpbnZlcnNpb25dKCNpbnZlcnNpb24pCiAgLSBbR0VUIC9hcGkvaGFzaGRhdGEvOnF1ZXJ5UHJvcEtleS86cXVlcnlQcm9wVmFsdWUvXSgjZ2V0LWFwaWhhc2hkYXRhcXVlcnlwcm9wa2V5cXVlcnlwcm9wdmFsdWUpCiAgLSBbR0VUIC9hcGkvZGF0YS9udW1iZXIvOnF1ZXJ5U2VhcmNoL10oI2dldC1hcGlkYXRhbnVtYmVycXVlcnlzZWFyY2gpCiAgICAtIFtFeGFjdCBTZWFyY2hdKCNleGFjdC1zZWFyY2gpCiAgICAtIFtTdGFydHMgV2l0aCBTZWFyY2hdKCNzdGFydHMtd2l0aC1zZWFyY2gpCiAgICAtIFtFbmRzIFdpdGggU2VhcmNoXSgjZW5kcy13aXRoLXNlYXJjaCkKICAgIC0gW0NvbnRhaW5zIFNlYXJjaF0oI2NvbnRhaW5zLXNlYXJjaCkKICAgIC0gW1N1YnN0cmluZyBTZWFyY2hdKCNzdWJzdHJpbmctc2VhcmNoKQogICAgLSBbTm90IFNlYXJjaF0oI25vdC1zZWFyY2gpCiAgICAtIFtFeGNsdWRlIFNlYXJjaF0oI2V4Y2x1ZGUtc2VhcmNoKQogICAgLSBbQ2hhaW5pbmcgTWV0aG9kc10oI2NoYWluaW5nLW1ldGhvZHMtbm8tZHVwbGljYXRlcykKICAtIFtHRVQgL2FwaS9kYXRhL3ByaW1lRm9ybS86cXVlcnlTZWFyY2gvXSgjZ2V0LWFwaWRhdGFwcmltZWZvcm1xdWVyeXNlYXJjaCkKICAgIC0gW0V4YWN0IFNlYXJjaF0oI2V4YWN0LXNlYXJjaC0xKQogICAgLSBbU3RhcnRzIFdpdGggU2VhcmNoXSgjc3RhcnRzLXdpdGgtc2VhcmNoLTEpCiAgICAtIFtFbmRzIFdpdGggU2VhcmNoXSgjZW5kcy13aXRoLXNlYXJjaC0xKQogICAgLSBbQ29udGFpbnMgU2VhcmNoXSgjY29udGFpbnMtc2VhcmNoLTEpCiAgICAtIFtTdWJzdHJpbmcgU2VhcmNoXSgjc3Vic3RyaW5nLXNlYXJjaC0xKQogICAgLSBbTm90IFNlYXJjaF0oI25vdC1zZWFyY2gtMSkKICAgIC0gW0V4Y2x1ZGUgU2VhcmNoXSgjZXhjbHVkZS1zZWFyY2gtMSkKICAgIC0gW0NoYWluaW5nIE1ldGhvZHNdKCNjaGFpbmluZy1tZXRob2RzLW5vLWR1cGxpY2F0ZXMtMSkKICAtIFtHRVQgL2FwaS9kYXRhL3ZlYy86cXVlcnlTZWFyY2gvXSgjZ2V0LWFwaWRhdGF2ZWNxdWVyeXNlYXJjaCkKICAgIC0gW0V4YWN0IFNlYXJjaF0oI2V4YWN0LXNlYXJjaC0yKQogICAgLSBbU3RhcnRzIFdpdGggU2VhcmNoXSgjc3RhcnRzLXdpdGgtc2VhcmNoLTIpCiAgICAtIFtFbmRzIFdpdGggU2VhcmNoXSgjZW5kcy13aXRoLXNlYXJjaC0yKQogICAgLSBbQ29udGFpbnMgU2VhcmNoXSgjY29udGFpbnMtc2VhcmNoLTIpCiAgICAtIFtTdWJzdHJpbmcgU2VhcmNoXSgjc3Vic3RyaW5nLXNlYXJjaC0yKQogICAgLSBbTm90IFNlYXJjaF0oI25vdC1zZWFyY2gtMikKICAgIC0gW0V4Y2x1ZGUgU2VhcmNoXSgjZXhjbHVkZS1zZWFyY2gtMikKICAgIC0gW0NoYWluaW5nIE1ldGhvZHNdKCNjaGFpbmluZy1tZXRob2RzLW5vLWR1cGxpY2F0ZXMtMikKICAtIFtHRVQgL2FwaS9kYXRhL3ZlYy86cXVlcnlTZWFyY2gvOnF1ZXJ5SW5lcXVhbGl0eV0oI2dldC1hcGlkYXRhdmVjcXVlcnlzZWFyY2hxdWVyeWluZXF1YWxpdHkpCiAgICAtIFtFcXVhbCBTZWFyY2hdKCNlcXVhbC1zZWFyY2gpCiAgICAtIFtMZXNzIFRoYW4gU2VhcmNoXSgjbGVzcy10aGFuLXNlYXJjaCkKICAgIC0gW0xlc3MgVGhhbiBPciBFcXVhbCBUbyBTZWFyY2hdKCNsZXNzLXRoYW4tb3ItZXF1YWwtdG8tc2VhcmNoKQogICAgLSBbR3JlYXRlciBUaGFuIFNlYXJjaF0oI2dyZWF0ZXItdGhhbi1zZWFyY2gpCiAgICAtIFtHcmVhdGVyIFRoYW4gT3IgRXF1YWwgVG8gU2VhcmNoXSgjZ3JlYXRlci10aGFuLW9yLWVxdWFsLXRvLXNlYXJjaCkKICAtIFtHRVQgL2FwaS9kYXRhL3ovOnF1ZXJ5U2VhcmNoL10oI2dldC1hcGlkYXRhenF1ZXJ5c2VhcmNoKQogICAgLSBbRXhhY3QgU2VhcmNoXSgjZXhhY3Qtc2VhcmNoLTMpCiAgICAtIFtTdGFydHMgV2l0aCBTZWFyY2hdKCNzdGFydHMtd2l0aC1zZWFyY2gtMykKICAgIC0gW0VuZHMgV2l0aCBTZWFyY2hdKCNlbmRzLXdpdGgtc2VhcmNoLTMpCiAgICAtIFtDb250YWlucyBTZWFyY2hdKCNjb250YWlucy1zZWFyY2gtMykKICAgIC0gW1N1YnN0cmluZyBTZWFyY2hdKCNzdWJzdHJpbmctc2VhcmNoLTMpCiAgICAtIFtOb3QgU2VhcmNoXSgjbm90LXNlYXJjaC0zKQogICAgLSBbRXhjbHVkZSBTZWFyY2hdKCNleGNsdWRlLXNlYXJjaC0zKQogICAgLSBbQ2hhaW5pbmcgTWV0aG9kc10oI2NoYWluaW5nLW1ldGhvZHMtbm8tZHVwbGljYXRlcy0zKQogIC0gW0dFVCAvYXBpL2RhdGEvY29tcGxlbWVudC86cXVlcnlTZWFyY2gvXSgjZ2V0LWFwaWRhdGFjb21wbGVtZW50cXVlcnlzZWFyY2gpCiAgICAtIFtFeGFjdCBTZWFyY2hdKCNleGFjdC1zZWFyY2gtNCkKICAgIC0gW1N0YXJ0cyBXaXRoIFNlYXJjaF0oI3N0YXJ0cy13aXRoLXNlYXJjaC00KQogICAgLSBbRW5kcyBXaXRoIFNlYXJjaF0oI2VuZHMtd2l0aC1zZWFyY2gtNCkKICAgIC0gW0NvbnRhaW5zIFNlYXJjaF0oI2NvbnRhaW5zLXNlYXJjaC00KQogICAgLSBbU3Vic3RyaW5nIFNlYXJjaF0oI3N1YnN0cmluZy1zZWFyY2gtNCkKICAgIC0gW05vdCBTZWFyY2hdKCNub3Qtc2VhcmNoLTQpCiAgICAtIFtFeGNsdWRlIFNlYXJjaF0oI2V4Y2x1ZGUtc2VhcmNoLTQpCiAgICAtIFtDaGFpbmluZyBNZXRob2RzXSgjY2hhaW5pbmctbWV0aG9kcy1uby1kdXBsaWNhdGVzLTQpCiAgLSBbR0VUIC9hcGkvZGF0YS9pbnZlcnNpb24vOnF1ZXJ5U2VhcmNoL10oI2dldC1hcGlkYXRhaW52ZXJzaW9ucXVlcnlzZWFyY2gpCiAgICAtIFtFeGFjdCBTZWFyY2hdKCNleGFjdC1zZWFyY2gtNSkKICAgIC0gW1N0YXJ0cyBXaXRoIFNlYXJjaF0oI3N0YXJ0cy13aXRoLXNlYXJjaC01KQogICAgLSBbRW5kcyBXaXRoIFNlYXJjaF0oI2VuZHMtd2l0aC1zZWFyY2gtNSkKICAgIC0gW0NvbnRhaW5zIFNlYXJjaF0oI2NvbnRhaW5zLXNlYXJjaC01KQogICAgLSBbU3Vic3RyaW5nIFNlYXJjaF0oI3N1YnN0cmluZy1zZWFyY2gtNSkKICAgIC0gW05vdCBTZWFyY2hdKCNub3Qtc2VhcmNoLTUpCiAgICAtIFtFeGNsdWRlIFNlYXJjaF0oI2V4Y2x1ZGUtc2VhcmNoLTUpCiAgICAtIFtDaGFpbmluZyBNZXRob2RzXSgjY2hhaW5pbmctbWV0aG9kcy1uby1kdXBsaWNhdGVzLTUpCiAgLSBbR0VUIC9hcGkvZGF0YS86cXVlcnlQcm9wL1BST1BFUlRZL3F1ZXJ5U2VhcmNoXSgjZ2V0LWFwaWRhdGFxdWVyeXByb3Bwcm9wZXJ0eXF1ZXJ5c2VhcmNoKQogICAgLSBbRW5kcG9pbnRzXSgjZW5kcG9pbnRzLTEpIAogIC0gW0dFVCAvYXBpL2RhdGEvZDMvOnF1ZXJ5U2VhcmNoL10oI2dldC1hcGlkYXRhZDNxdWVyeXNlYXJjaCkKICAgIC0gW1R5cGVzXSgjdHlwZXMpCiAgICAtIFtDYXJkaW5hbGl0eS1JbmNyZWFzaW5nIHZzIFN0cmljdC1JbmNyZWFzaW5nXSgjY2FyZGluYWxpdHktaW5jcmVhc2luZy12cy1zdHJpY3QtaW5jcmVhc2luZykKICAgIC0gW1ZlY3Rvci1TaW1pbGFyaXR5XSgjdmVjdG9yLXNpbWlsYXJpdHkpCiAgICAtIFtPcmlnaW5hbCB2cyBJbnZlcnNpb25dKCNvcmlnaW5hbC12cy1pbnZlcnNpb24pCiAgICAtIFtNYW51YWwgQ29uc3RydWN0aW9uXSgjbWFudWFsLWNvbnN0cnVjdGlvbikKICAgICAgICAtIFtGZXRjaF0oI2ZldGNoKQogICAgCS0gW0xpbmtzXSgjbGlua3MpCiAgICAgCS0gW0RhZ10oI2RhZykKICAgIC0gW0hvdyB0byBVc2UgSlNPTiBpbiBEM0RhZ10oI2hvdy10by11c2UtanNvbi1pbi1kM2RhZykKICAgIC0gW0VuZHBvaW50c10oI2VuZHBvaW50cykKLSBbQVBJIERldmVsb3BtZW50XSgjYXBpLWRldmVsb3BtZW50KQogIC0gW0FkZCAuZW52IEZpbGVdKCNhZGQtZW52LWZpbGUpCi0gW1N0YXIgVGhpcyBSZXBvXSgjc3Rhci10aGlzLXJlcG8pCgojIyBBcHAgRXhhbXBsZQoKQ2hlY2sgb3V0IG15IGFwcCBbc2V0LWNsYXNzLXZpc3VhbGl6ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9OaW5qYU5hcy9zZXQtY2xhc3MtdmlzdWFsaXplcikgdXNpbmcgRm9ydGVBUEkgdG8gc2VydmUgaXRzIGRhdGEgYW5kIGRhZ3MhCgojIyBXaGF0IGFyZSBGb3J0ZSBOdW1iZXJzPyBhbmQgTW9yZSEKCklmIHlvdSBoYXZlIHRoZSB0aW1lIHdhdGNoIHRoaXMgZ3JlYXQgcGxheWxpc3Qgb2YgdmlkZW9zIGJ5IEpheSBCZWFyZCBvbiBbbXVzaWNhbCBzZXQgdGhlb3J5XShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTNmZV9OYXRFNXc4Jmxpc3Q9UExLV0lSTFFuZmF3MUtVTVRHM2I5bUZydDBEM01GSHZQRikhCgpCZWZvcmUgZ2V0dGluZyBpbnRvIEZvcnRlIG51bWJlcnMgd2Ugc2hvdWxkIGxlYXJuIGJhc2ljIHNldCB0aGVvcnksIHByaW1lIGZvcm0sIGFuZCBpbnRlcnZhbCB2ZWN0b3JzLgoKIyMjIFNldCBUaGVvcnkKClRoZXJlIGFyZSAxMiBub3RlcyBvciAxMiBwaXRjaCBjbGFzc2VzIGluIDEyIHRvbmUgZXF1YWwgdGVtcGVyYW1lbnQuCgpXZSBjYW4gbGFiZWwgdGhlbSBhcyBzbzoKClNldCBUaGVvcnkgTGFiZWxzOiAqKjAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIFQsIEUgKDAgdG8gMTEpKioKCk5vdGUgTmFtZXM6ICoqQywgQyMvRGIsIEQsIEQjL0ViLCBFLCBGLCBGIy9HYiwgRywgRyMvQWIsIEEsIEEjL0JiLCBCKioKCiMjIyBQcmltZSBGb3JtCgpQcmltZSBmb3JtcyBhcmUgYSB3YXkgdG8gc3RhbmRhcmRpemUgc2V0cyBzbyB0aGV5IGNhbiBiZSBjb21wYXJlZC4gUHJpbWUgZm9ybSByZXF1aXJlcyB1cyB0byBhbHdheSB0byBoYXZlIDAgZmlyc3QgYnkgdHJhbnNwb3NpdGlvbiwgdW5sZXNzIGl0IGlzIHRoZSBlbXB0eSBzZXQsIGFuZCBoYXZlIHRoZSBzbWFsbGVzdCBpbnRlcnZhbHMgYXMgcG9zc2libGUgKGNvbXBhY3RuZXNzKSBnb2luZyBmcm9tIGxlZnQgdG8gcmlnaHQgYXMgdGhlcmUgYXJlIGRpZmZlcmVudCB3YXlzIHRvIG9yZGVyIHRoZSBzYW1lIHNldAoKLSBFeDogezAsMSwyLDR9IC0gTm90ZSB0aGF0IHsxLDIsMyw1fSBpcyBub3QgaW4gcHJpbWUgZm9ybSBhbiBpcyBhIHRyYW5zcG9zaXRpb24gb2YgezAsMSwyLDR9IGFzIHdlIGNhbiBzdWJ0cmFjdCAxIGZyb20gYWxsIG9mIHRoZSBlbGVtZW50cyB0byBtYWtlIHswLDEsMiw0fQoKIyMjIEludGVydmFsIFZlY3RvcgoKQW4gaW50ZXJ2YWwgdmVjdG9yIGlzIGEgc2l4LW51bWJlciBzZXF1ZW5jZSB0aGF0IHJlcHJlc2VudHMgdGhlIGRpc3RyaWJ1dGlvbiBvZiBpbnRlcnZhbHMgd2l0aGluIGEgcGl0Y2gtY2xhc3Mgc2V0LiBFYWNoIG51bWJlciBpbiB0aGUgdmVjdG9yIGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIHRpbWVzIGEgc3BlY2lmaWMgaW50ZXJ2YWwgKGZyb20gMSB0byA2IHNlbWl0b25lcykgYXBwZWFycyBiZXR3ZWVuIGFueSB0d28gcGl0Y2hlcyBpbiB0aGUgc2V0LgoKLSBFeDogPDYsNCw1LDYsNSwyPgotIEV4OiA8QyxDLEMsQyxDLDY+IChDIHN0YW5kcyBmb3IgMTIgaGVyZSkKCiMjIyBGb3J0ZSBOdW1iZXJzCgpGb3J0ZSBudW1iZXJzIGFyZSBhIHN5c3RlbSBvZiBsYWJlbGluZyBwaXRjaC1jbGFzcyBzZXRzIGluIHRoZSBtdXNpY2FsIHNldCB0aGVvcnksIG5hbWVkIGFmdGVyIHRoZSBtdXNpY29sb2dpc3QgQWxsZW4gRm9ydGUgd2hvIGRldmlzZWQgdGhpcyBjbGFzc2lmaWNhdGlvbiBzeXN0ZW0uIFRoZXkgb2ZmZXIgYSBzeXN0ZW1hdGljIHdheSB0byBjYXRhbG9nIGFuZCBzdHVkeSB0aGUgdmFyaW91cyBwaXRjaC1jbGFzcyBzZXRzIGluIHR3ZWx2ZS10b25lIG11c2ljLgoKVGhlIGxhYmVscyBhcmUgc3RydWN0dXJlZCBieSBjYXJkaW5hbGl0eS1vcmRpbmFsIG51bWJlci4KCi0gRXguIDMtNiBtZWFuaW5nIHRoZSA2dGggc2V0IGluIG9yZGVyIG9mIHNldHMgY29udGFpbmluZyAzIHBpdGNoIGNsYXNzZXMvbm90ZXMuCi0gSW4gZ2VuZXJhbCB0aGUgc21hbGxlciB0aGUgb3JkaW5hbCBudW1iZXIgdGhlIG1vcmUgY29tcGFjdCB0aGUgc2V0IGlzLgoKQWxsZW4gRm9ydGUgZGlkIG5vdCBkaWZmZXJlbnRpYXRlIGJldHdlZW4gaW52ZXJzaW9ucyBpbiBoaXMgYm9vayBzbyAzLTExQSBhbmQgMy0xMUIgd291bGQganVzdCBiZSAzLTExIHVzaW5nIDMtMTFBIGFzIGl0cyBtb3N0IGNvbXBhY3QgZm9ybS4gTGF0ZXIgb24sIG5vdGF0aW9uIHdhcyBtYWRlIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBpbnZlcnNpb25zLiBJZiB0aGVyZSBpcyBBIG9yIEIgYXBwZW5kZWQgdG8gdGhlIGVuZCBpdCBtZWFucyB0aGF0IHNldCBoYXMgYSBkaXN0aW5jdCBpbnZlcnNpb24sIHdoZXJlIEEgaXMgZ2l2ZW4gdG8gdGhlIG1vc3QgY29tcGFjdCB2ZXJzaW9uLiBCb3RoIEEgYW5kIEIgc2V0cyBzaGFyZSB0aGUgc2FtZSBpbnRlcnZhbCB2ZWN0b3IuCgotIEV4LiAzLTExQSBhbmQgMy0xMUIKLSAzLTExQSBoYXMgYSBwcmltZSBmb3JtIG9mIHswLDMsN30gYW5kIDMtMTFCIGhhcyBhIHByaW1lIGZvcm0gb2YgezAsMyw3fQotIExldCdzIGludmVydCB7MCwzLDd9IGluIHRoaXMgc3lzdGVtIHdlIGFyZSB1c2luZyBtb2QgMTIgYmVjYXVzZSB3ZSBoYXZlIDEyIHBpdGNoIGNsYXNzZXMKLSB7MTItMCBtb2QgMTIsIDEyLTMgbW9kIDEyLCAxMi03IG1vZCAxMn0gPSB7MCwgOSwgNX0KLSBPcmRlciBmb3IgY29tcGFjdG5lc3M6IHs1LCA5LCAwfSBoYXMgdGhlIHNtYWxsZXN0IGludGVydmFscyBnb2luZyBmcm9tIGxlZnQgdG8gcmlnaHQKLSBUcmFuc3Bvc2Ugc28gZmlyc3QgZWxlbWVudCBpcyAwOiB7NS01LCA5LTUsIDEyKDApLTUpID0gezAsNCw3fQoKSWYgdGhlcmUgaXMgYSBaIGluIHRoZSBGb3J0ZSBudW1iZXIgdGhpcyBtZWFucyBpdCBpcyBhIHp5Z290aWMvdHdpbm5lZCBzZXQgdGhhdCBoYXMgYSB0d2luIHNldCB3aXRoIHRoZSBzYW1lIGludGVydmFsIHZlY3RvciBhbmQgaXMgbm90IGFuIGludmVyc2lvbiBvZiB0aGUgc2V0LiBJbiB0aGlzIEFQSSwgdGhlIFogcHJvcGVydHkgaXMgbGlua2VkIG9ubHkgQSB3aGVuIGFwcGxpY2FibGUgZm9yIGNvbnNpc3RlbmN5LgoKLSBFeDogNC16MTVBIGFuZCA0LXoyOUEKLSBFeDogNi16NCBhbmQgNi16MzcKCiMjIyBDb21wbGVtZW50cwoKQ29tcGxlbWVudHMgYXJlIHBhaXJzIG9mIHNldHMgdGhhdCBhZGQgdXAgdG8gc2V0IHdpdGggYWxsIHBpdGNoIGNsYXNzZXMgezAsMSwyLDMsNCw1LDYsNyw4LDksVCxFfS4gSWYgYSBzZXQgZG9lcyBub3QgaGF2ZSBhIGNvbXBsZW1lbnQgdGhhdCBtZWFucyB0aGV5IGFyZSBhIGNvbXBsZW1lbnQgb2YgdGhlbXNlbHZlcwoKLSBFeDogUHJpbWUgZm9ybSBvZiB7fSBpcyBhIGNvbXBsZW1lbnQgb2YgezAsMSwyLDMsNCw1LDYsNyw4LDksVCxFfQotIEV4OiB7MCwxLDMsNH0gaXMgYSBjb21wbGVtZW50IG9mIHswLDEsMiwzLDQsNSw2LDl9IGFmdGVyIHNvbWUgdHJhbnNwb3NpdGlvbgoKIyMgU2hvdWxkIEkgdXNlIHRoaXMgQVBJPwoKWW91IHNob3VsZCBvbmx5IHVzZSB0aGlzIEFQSSBlaXRoZXIgaWYgeW91IGNhcmUgYWJvdXQgeW91ciBpbnRpdGFsIGxvYWQgdGltZXMgYXMgdGhlIGZ1bGwgZGF0YSBzaXplIGlzIH40MktCIG9yIGlmIHlvdSB3YW50IGEgcHJlYnVpbHQgc29sdXRpb24gdG8gcXVlcnkgc2V0IGNsYXNzZXMuIFlvdSBjYW4gdXNlIHRoaXMgQVBJIHRvIGdldCBhbmQgc2VydmUgcHJlYnVpbHQgZDNkYWcgZ3JhcGhzIGZvciB2aXN1YWxpemF0aW9uIG9yIHRoZSBqdXN0IHRoZSBsaW5rcyBmb3IgeW91IHRvIGNyZWF0ZSB5b3VyIG93biBjdXN0b20gZ3JhcGhzLiAKCklmIHlvdSBkbyBub3QgbmVlZCB0byB1c2UgdGhpcyBBUEksIHlvdSBzaG91bGQganVzdCBkb3dubG9hZCB0aGUganNvbiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL05pbmphTmFzL0ZvcnRlQVBJL2Jsb2IvbWFpbi9kYXRhL3NldF9jbGFzc2VzLmpzb24pLiBSZXBvcnQgYW55IHR5cG9zIHlvdSBtYXkgZmluZCBvciBzdWdnZXN0IG5ldyBwcm9wZXJ0aWVzLgoKVGhlcmUgYXJlIGFsc28gZDNkYWcgZ3JhcGhzIGFuZCBsaW5rcyBhdmFsaWFibGUgaW4gSlNPTiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL05pbmphTmFzL0ZvcnRlQVBJL2Jsb2IvbWFpbi9kYXRhL2QzKS4KCiMjIERhdGFTZXQgVHlwZQoKKipOb3RlOiBQcm9wZXJ0aWVzIGFyZSBjYXNlLXNlbnNpdGl2ZSEqKgoKYGBgdHMKdHlwZSBEYXRhU2V0ID0gewoJbnVtYmVyOiBzdHJpbmc7CglwcmltZUZvcm06IHN0cmluZzsgLy8gY2FuIGJlIGVhc2lseSBmb3JtYXR0ZWQgdG8gYSBzdHJpbmdbXSBieSBKU09OLnBhcnNlKHByaW1lRm9ybVN0cmluZykKCXZlYzogc3RyaW5nOwoJejogbnVsbCB8IHN0cmluZzsKCWNvbXBsZW1lbnQ6IG51bGwgfCBzdHJpbmc7CglpbnZlcnNpb246IG51bGwgfCBzdHJpbmc7Cn1bXTsKYGBgCgojIyBTdGF0dXMgQ29kZXMKCjUwMCAtIEludGVybmFsIFNlcnZlciBFcnJvcgo0MTQgLSBVUkkgb3IgU3VicXVlcnkgVG9vIExvbmcKNDAwIC0gQmFkIFByb3BlcnR5IC8gUmVxdWVzdCBSZXR1cm5lZCBOb3RoaW5nCjIwMCAtIFN1Y2Nlc3MKCiMjIEVuZHBvaW50cwoKIyMjIEdFVCAvYXBpL2RhdGEvCgpUaGUgZW5kcG9pbnQgcmV0dXJucyBhbGwgb2YgdGhlIGRhdGEgZnJvbSBbL2RhdGEvc2V0LWNsYXNzZXMuanNvbl0oaHR0cHM6Ly9naXRodWIuY29tL05pbmphTmFzL0ZvcnRlQVBJL2Jsb2IvbWFpbi9kYXRhL3NldF9jbGFzc2VzLmpzb24pCgpgYGB0cwpbCiAgewogICAgIm51bWJlciI6ICIwLTEiLAogICAgInByaW1lRm9ybSI6ICJbXCJcIl0iLAogICAgInZlYyI6ICI8MCwwLDAsMCwwLDA+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjEyLTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9LAogICAgLi4uCiAgewogICAgIm51bWJlciI6ICIxMi0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOFwiLFwiOVwiLFwiVFwiLFwiRVwiXSIsCiAgICAidmVjIjogIjxDLEMsQyxDLEMsNj4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMC0xIiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfQpdOwpgYGAKCiMjIyBHRVQgL2FwaS9kYXRhLzpxdWVyeVByb3AvCgpUaGUgZW5kcG9pbnQgcmV0dXJucyB0aGUgZnVsbCBkYXRhIGdpdmVuIHRoZSBwcm9wZXJ0aWVzIHByb3ZpZGVkIGluIGEgY29tbWEgc2VwYXJhdGVkIGxpc3QgKG51bWJlciwgcHJpbWVGb3JtLCB2ZWMsIHosIGNvbXBsZW1lbnQsIGludmVyc2lvbikKCi0gTWF4IFVSSSBsZW5ndGg6IE5vIG1vcmUgdGhhbiA0MyBjaGFyYWN0ZXJzCi0gU3VicXVlcnkgbGVuZ3RoOiAxLTEwIGNoYXJhY3RlcnMKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvbnVtYmVyClsKICB7CiAgICAibnVtYmVyIjogIjAtMSIKICB9LAogICAgLi4uCiAgewogICAgIm51bWJlciI6ICIxMi0xIgogIH0sCl07CgovLyBHRVQgL2FwaS9kYXRhL251bWJlcixwcmltZUZvcm0KWwogIHsKICAgICJudW1iZXIiOiAiMC0xIgogICAgInByaW1lRm9ybSI6ICJbXCJcIl0iLAogIH0sCiAgICAuLi4KICB7CiAgICAibnVtYmVyIjogIjEyLTEiCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIixcIlRcIixcIkVcIl0iCiAgfSwKXTsKYGBgCgojIyMgR0VUIC9hcGkvZmxhdGRhdGEvOnF1ZXJ5UHJvcC8KClRoZSBlbmRwb2ludCByZXR1cm5zIGEgZmxhdG1hcCBvZiB0aGUgdmFsaWQgcHJvcGVydGllcyAobnVtYmVyLCBwcmltZUZvcm0sIHZlYywgeiwgY29tcGxlbWVudCwgaW52ZXJzaW9uKQoKLSBNYXggVVJJIGxlbmd0aDogTm8gbW9yZSB0aGFuIDEwIGNoYXJhY3RlcnMKCiMjIyMgbnVtYmVyCgpgYGB0cwovLyBHRVQgL2FwaS9mbGF0ZGF0YS9udW1iZXIKWyIwLTEiLCAuLi4sICI0LXoxNUEiLCAuLi4sICIxMi0xIl07CmBgYAoKIyMjIyBwcmltZUZvcm0KCmBgYHRzCi8vIEdFVCAvYXBpL2ZsYXRkYXRhL3ByaW1lRm9ybQpbIltcIlwiXSIsIC4uLiwgIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIixcIlRcIixcIkVcIl0iXTsKYGBgCgojIyMjIHZlYwoKYGBgdHMKLy8gR0VUIC9hcGkvZmxhdGRhdGEvdmVjClsiPDAsMCwwLDAsMCwwPiIsIC4uLiwgIjxDLEMsQyxDLEMsNj4iXTsKYGBgCgojIyMjIHoKCmBgYHRzCi8vIEdFVCAvYXBpL2ZsYXRkYXRhL3oKW251bGwsIC4uLiwgIjQtejE1QSIsIC4uLiwgbnVsbF07CmBgYAoKIyMjIyBjb21wbGVtZW50CgpgYGB0cwovLyBHRVQgL2FwaS9mbGF0ZGF0YS9jb21wbGVtZW50ClsiMTItMSIsIC4uLiwgIjAtMSJdOwpgYGAKIyMjIyBpbnZlcnNpb24KCmBgYHRzCi8vIEdFVCAvYXBpL2ZsYXRkYXRhL2ludmVyc2lvbgpbIm51bGwiLCAuLi4sICJbXCIwXCIsXCIyXCIsXCI1XCIsXCI2XCJdIiwgLi4uLCAibnVsbCJdOwpgYGAKCgojIyMgR0VUIC9hcGkvaGFzaGRhdGEvOnF1ZXJ5UHJvcEtleS86cXVlcnlQcm9wVmFsdWUvCgpUaGUgZW5kcG9pbnQgcmV0dXJucyBhIGhhc2htYXAgd2l0aCB0d28gdGhlIHZhbGlkIHByb3BlcnRpZXMgKG51bWJlciwgcHJpbWVGb3JtLCB2ZWMsIHosIGNvbXBsZW1lbnQsIGludmVyc2lvbikKCi0gTWF4IFVSSSBsZW5ndGggRm9yIEJvdGggUXVlcmllczogTm8gbW9yZSB0aGFuIDEwIGNoYXJhY3RlcnMKCmBgYHRzCi8vIEdFVCAvYXBpL2hhc2hkYXRhL251bWJlci9wcmltZUZvcm0KewogICIwLTEiOiAiW1wiXCJdIiwKICAgIC4uLgogICIxMi0xIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIixcIlRcIixcIkVcIl0iCn07CmBgYAoKCiMjIyBHRVQgL2FwaS9kYXRhL251bWJlci86cXVlcnlTZWFyY2gvCgpUaGUgZW5kcG9pbnQgcmV0dXJucyBhbiBhcnJheSBvZiBvYmplY3RzIGJhc2VkIG9uIHRoZSBxdWVyeSBvbiB0aGUgbnVtYmVyIHByb3BlcnR5CgotIE1heCBVUkkgbGVuZ3RoOiBObyBtb3JlIHRoYW4gMTAwIGNoYXJhY3RlcnMKLSBTdWJxdWVyeSBsZW5ndGg6IDItMTUgY2hhcmFjdGVycwoJLSBFeC4gXjEgb3IgIWA2LXoyNUF+Ni16MjVCCgojIyMjIEV4YWN0IFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS9udW1iZXIvMS0xClsKICB7CiAgICAibnVtYmVyIjogIjEtMSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIl0iLAogICAgInZlYyI6ICI8MCwwLDAsMCwwLDA+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjExLTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9Cl07CmBgYAoKIyMjIyBTdGFydHMgV2l0aCBTZWFyY2gKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvbnVtYmVyL140LXoxNQpbCiAgewogICAgIm51bWJlciI6ICI0LXoxNUEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCI0XCIsXCI2XCJdIiwKICAgICJ2ZWMiOiAiPDEsMSwxLDEsMSwxPiIsCiAgICAieiI6ICI0LXoyOUEiLAogICAgImNvbXBsZW1lbnQiOiAiOC16MTVCIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMlwiLFwiNVwiLFwiNlwiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiNC16MTVCIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMlwiLFwiNVwiLFwiNlwiXSIsCiAgICAidmVjIjogIjwxLDEsMSwxLDEsMT4iLAogICAgInoiOiAiNC16MjlBIiwKICAgICJjb21wbGVtZW50IjogIjgtejE1QSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjRcIixcIjZcIl0iCiAgfQpdOwpgYGAKCiMjIyMgRW5kcyBXaXRoIFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS9udW1iZXIvLXo1MCQKWwogIHsKICAgICJudW1iZXIiOiAiNi16NTAiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCI0XCIsXCI2XCIsXCI3XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDIsMiw0LDIsMywyPiIsCiAgICAieiI6ICI2LXoyOSIsCiAgICAiY29tcGxlbWVudCI6ICI2LXoyOSIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0KXTsKYGBgCgojIyMjIENvbnRhaW5zIFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS9udW1iZXIvQDEyQSBvciBHRVQgL2FwaS9kYXRhL251bWJlci9AMjFBClsKICB7CiAgICAibnVtYmVyIjogIjQtMTJBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNlwiXSIsCiAgICAidmVjIjogIjwxLDEsMiwxLDAsMT4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiOC0xMkEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIzXCIsXCI0XCIsXCI2XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI1LTIxQSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjRcIixcIjVcIixcIjhcIl0iLAogICAgInZlYyI6ICI8MiwwLDIsNCwyLDA+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjctMjFCIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiM1wiLFwiNFwiLFwiN1wiLFwiOFwiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiNi16MTJBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiNFwiLFwiNlwiLFwiN1wiXSIsCiAgICAidmVjIjogIjwzLDMsMiwyLDMsMj4iLAogICAgInoiOiAiNi16NDFBIiwKICAgICJjb21wbGVtZW50IjogIjYtejQxQiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjNcIixcIjVcIixcIjZcIixcIjdcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjYtMjFBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNlwiLFwiOFwiXSIsCiAgICAidmVjIjogIjwyLDQsMiw0LDEsMj4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiBudWxsLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIyXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI4XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI3LTIxQSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjRcIixcIjVcIixcIjhcIixcIjlcIl0iLAogICAgInZlYyI6ICI8NCwyLDQsNiw0LDE+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjUtMjFCIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMVwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiOFwiLFwiOVwiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiOC0xMkEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDUsNSw2LDUsNCwzPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI0LTEyQSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjJcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIixcIjhcIixcIjlcIl0iCiAgfQpdOwpgYGAKCiMjIyMgU3Vic3RyaW5nIFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS9udW1iZXIvKjEyQQpbCiAgewogICAgIm51bWJlciI6ICI0LTEyQSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjJcIixcIjNcIixcIjZcIl0iLAogICAgInZlYyI6ICI8MSwxLDIsMSwwLDE+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjgtMTJBIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiM1wiLFwiNFwiLFwiNlwiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiNi16MTJBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiNFwiLFwiNlwiLFwiN1wiXSIsCiAgICAidmVjIjogIjwzLDMsMiwyLDMsMj4iLAogICAgInoiOiAiNi16NDFBIiwKICAgICJjb21wbGVtZW50IjogIjYtejQxQiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjNcIixcIjVcIixcIjZcIixcIjdcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjgtMTJBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOVwiXSIsCiAgICAidmVjIjogIjw1LDUsNiw1LDQsMz4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiNC0xMkEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI4XCIsXCI5XCJdIgogIH0KXTsKYGBgCgojIyMjIFJhbmdlIFNlYXJjaCAoaW5jbHVzaXZlKQoKVGhlIG9ubHkgZmlsdGVyaW5nIG1ldGhvZHMgdGhhdCB5b3UgY2FuIHVzZSB3aXRoIHJhbmdlIHNlYXJjaCBhcmUgXGAgYW5kICEgKHdoaWNoIGlzIGFsc28gIVxgKS4KICAtIEV4OiBcYDEtMVx+Mi0xLCAhMS0xXH4yLTEsICFcYDEtMVx+Mi0xCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL251bWJlci8xLTF+Mi0xCi8vIFdBUk5JTkc6IDEtMX4xLTEgaXMgaW52YWxpZCBhbmQgd2lsbCBzZW5kIGEgNDAwIHN0YXR1cyBjb2RlLCB1c2UgMS0xIGluc3RlYWQKWwogIHsKICAgICJudW1iZXIiOiAiMS0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiXSIsCiAgICAidmVjIjogIjwwLDAsMCwwLDAsMD4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMTEtMSIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0sCiAgewogICAgIm51bWJlciI6ICIyLTEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCJdIiwKICAgICJ2ZWMiOiAiPDEsMCwwLDAsMCwwPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICIxMC0xIiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfQpdOwpgYGAKCiMjIyMgTm90IFNlYXJjaAoKLSBXb3JrcyB3aXRoICExLTEsICFeMS0xLCAhMS0xJCwgIUBBLCAhKkEsICExLTF+Mi0yCiAgLSAhIGlzIGVxdWl2YWxlbnQgdG8gIWAgCiAgLSBgISBpcyBub3QgYSB2YWxpZCBzZWFyY2ggbWV0aG9kCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL251bWJlci8hMS0xClsKICB7CiAgICAibnVtYmVyIjogIjEtMSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIl0iLAogICAgInZlYyI6ICI8MCwwLDAsMCwwLDA+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjExLTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9LAogICAgLi4uLAogIHsKICAgICJudW1iZXIiOiAiMTItMSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIixcIlRcIixcIkVcIl0iLAogICAgInZlYyI6ICI8QyxDLEMsQyxDLDY+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjAtMSIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0KXTsKYGBgCgojIyMjIEV4Y2x1ZGUgU2VhcmNoCgotIFdvcmtzIHdpdGggXGAxLTEsIFxgXjEtMSwgXGAxLTEkLCBcYEBBLCBcYCpBLCBcYDEtMX4yLTIKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvbnVtYmVyLzEtMX4yLTQsYDEtMX4yLTIKWwogIHsKICAgICJudW1iZXIiOiAiMi0zIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiM1wiXSIsCiAgICAidmVjIjogIjwwLDAsMSwwLDAsMD4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMTAtMyIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0sCiAgewogICAgIm51bWJlciI6ICIyLTQiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCI0XCJdIiwKICAgICJ2ZWMiOiAiPDAsMCwwLDEsMCwwPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICIxMC00IiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfQpdOwpgYGAKCiMjIyMgQ2hhaW5pbmcgTWV0aG9kcyAobm8gZHVwbGljYXRlcykKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvbnVtYmVyLzEtMSxeNC16MTUsLXo1MCQsMS0xfjItMSxgNC16MTVCClsKICB7CiAgICAibnVtYmVyIjogIjEtMSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIl0iLAogICAgInZlYyI6ICI8MCwwLDAsMCwwLDA+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjExLTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9LAogIHsKICAgICJudW1iZXIiOiAiNC16MTVBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiNFwiLFwiNlwiXSIsCiAgICAidmVjIjogIjwxLDEsMSwxLDEsMT4iLAogICAgInoiOiAiNC16MjlBIiwKICAgICJjb21wbGVtZW50IjogIjgtejE1QiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjJcIixcIjVcIixcIjZcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjYtejUwIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiNFwiLFwiNlwiLFwiN1wiLFwiOVwiXSIsCiAgICAidmVjIjogIjwyLDIsNCwyLDMsMj4iLAogICAgInoiOiAiNi16MjkiLAogICAgImNvbXBsZW1lbnQiOiAiNi16MjkiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9LAogIHsKICAgICJudW1iZXIiOiAiMi0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiXSIsCiAgICAidmVjIjogIjwxLDAsMCwwLDAsMD4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMTAtMSIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0KXTsKYGBgCgojIyMgR0VUIC9hcGkvZGF0YS9wcmltZUZvcm0vOnF1ZXJ5U2VhcmNoLwoKVGhlIGVuZHBvaW50IHJldHVybnMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBiYXNlZCBvbiB0aGUgcXVlcnkgb24gdGhlIHByaW1lRm9ybSBwcm9wZXJ0eQoKVXNlIFQgZm9yIDEwLCBFIGZvciAxMSwgYW5kIEMgZm9yIDEyLgoKLSBNYXggVVJJIGxlbmd0aDogTm8gbW9yZSB0aGFuIDEwMCBjaGFyYWN0ZXJzCi0gU3VicXVlcnkgbGVuZ3RoOiAyLTE0IGNoYXJhY3RlcnMKCS0gRXguIF4wIG9yICFgMDEyMzQ1Njc4OVRFCgojIyMjIEV4YWN0IFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS9wcmltZUZvcm0vMDEyMwpbCiAgewogICAgIm51bWJlciI6ICI0LTEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCJdIiwKICAgICJ2ZWMiOiAiPDMsMiwxLDAsMCwwPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI4LTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9Cl07CmBgYAoKIyMjIyBTdGFydHMgV2l0aCBTZWFyY2gKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvcHJpbWVGb3JtL14wMzU2ClsKICB7CiAgICAibnVtYmVyIjogIjQtMTNCIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiM1wiLFwiNVwiLFwiNlwiXSIsCiAgICAidmVjIjogIjwxLDEsMiwwLDEsMT4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiOC0xM0EiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIzXCIsXCI2XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI1LTI1QiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjNcIixcIjVcIixcIjZcIixcIjhcIl0iLAogICAgInZlYyI6ICI8MSwyLDMsMSwyLDE+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjctMjVBIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNVwiLFwiOFwiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiNS16MzZCIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiM1wiLFwiNVwiLFwiNlwiLFwiN1wiXSIsCiAgICAidmVjIjogIjwyLDIsMiwxLDIsMT4iLAogICAgInoiOiAiNS16MTIiLAogICAgImNvbXBsZW1lbnQiOiAiNy16MzZBIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiNFwiLFwiN1wiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiNi16NDBCIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiM1wiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOFwiXSIsCiAgICAidmVjIjogIjwzLDMsMywyLDMsMT4iLAogICAgInoiOiAiNi16MTFBIiwKICAgICJjb21wbGVtZW50IjogIjYtejExQSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjVcIixcIjhcIl0iCiAgfQpdOwpgYGAKCiMjIyMgRW5kcyBXaXRoIFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS9wcmltZUZvcm0vMiQKWwogIHsKICAgICJudW1iZXIiOiAiMi0yIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMlwiXSIsCiAgICAidmVjIjogIjwwLDEsMCwwLDAsMD4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMTAtMiIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0sCiAgewogICAgIm51bWJlciI6ICIzLTEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCJdIiwKICAgICJ2ZWMiOiAiPDIsMSwwLDAsMCwwPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI5LTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9Cl07CmBgYAoKIyMjIyBDb250YWlucyBTZWFyY2gKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvcHJpbWVGb3JtL0AxMjM0Njc4OQpbCiAgewogICAgIm51bWJlciI6ICI5LTVBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNlwiLFwiN1wiLFwiOFwiLFwiOVwiXSIsCiAgICAidmVjIjogIjw3LDYsNiw2LDcsND4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMy01QiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjEwLTEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDksOCw4LDgsOCw0PiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICIyLTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9LAogIHsKICAgICJudW1iZXIiOiAiMTAtNiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjRcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIixcIlRcIl0iLAogICAgInZlYyI6ICI8OCw4LDgsOCw4LDU+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjItNiIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0sCiAgewogICAgIm51bWJlciI6ICIxMS0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOFwiLFwiOVwiLFwiVFwiXSIsCiAgICAidmVjIjogIjxULFQsVCxULFQsNT4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMS0xIiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjEyLTEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCIsXCI5XCIsXCJUXCIsXCJFXCJdIiwKICAgICJ2ZWMiOiAiPEMsQyxDLEMsQyw2PiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICIwLTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9Cl07CmBgYAoKIyMjIyBTdWJzdHJpbmcgU2VhcmNoCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL3ByaW1lRm9ybS8qMTIzNDY3ODkKWwogIHsKICAgICJudW1iZXIiOiAiOS01QSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjRcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIl0iLAogICAgInZlYyI6ICI8Nyw2LDYsNiw3LDQ+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjMtNUIiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCIsXCI5XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICIxMC02IiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNlwiLFwiN1wiLFwiOFwiLFwiOVwiLFwiVFwiXSIsCiAgICAidmVjIjogIjw4LDgsOCw4LDgsNT4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMi02IiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfQpdOwpgYGAKCiMjIyMgTm90IFNlYXJjaAoKLSBXb3JrcyB3aXRoICEwLCAhXjAsICEwJCwgIUAwLCAhKjAsCiAgLSAhIGlzIGVxdWl2YWxlbnQgdG8gIWAgCiAgLSBgISBpcyBub3QgYSB2YWxpZCBzZWFyY2ggbWV0aG9kCi0gVXNlICUyMCBmb3Igd2hpdGVzcGFjZSBlcXVpdmFsZW50IHRvIHRoZSBlbXB0eSBhcnJheSBmb3IgMC0xICAKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvcHJpbWVGb3JtLyElMjAKWwogIHsKICAgICJudW1iZXIiOiAiMS0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiXSIsCiAgICAidmVjIjogIjwwLDAsMCwwLDAsMD4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMTEtMSIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0sCiAgICAuLi4sCiAgewogICAgIm51bWJlciI6ICIxMi0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOFwiLFwiOVwiLFwiVFwiLFwiRVwiXSIsCiAgICAidmVjIjogIjxDLEMsQyxDLEMsNj4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMC0xIiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfQpdOwpgYGAKCiMjIyMgRXhjbHVkZSBTZWFyY2gKCi0gV29ya3Mgd2l0aCBcYDAsIFxgXjAsIFxgMCQsIFxgQDAsIFxgKjAKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvcHJpbWVGb3JtLzAxLDAxMixgMDEyClsKICB7CiAgICAibnVtYmVyIjogIjItMSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIl0iLAogICAgInZlYyI6ICI8MSwwLDAsMCwwLDA+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjEwLTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9Cl07CmBgYAoKIyMjIyBDaGFpbmluZyBNZXRob2RzIChubyBkdXBsaWNhdGVzKQoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS9wcmltZUZvcm0vJTIwLF4wMTI1NjcsMDEyNDUkLGBAOQpbCiAgewogICAgIm51bWJlciI6ICIwLTEiLAogICAgInByaW1lRm9ybSI6ICJbXCJcIl0iLAogICAgInZlYyI6ICI8MCwwLDAsMCwwLDA+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjEyLTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9LAogIHsKICAgICJudW1iZXIiOiAiNi16NiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjVcIixcIjZcIixcIjdcIl0iLAogICAgInZlYyI6ICI8NCwyLDEsMiw0LDI+IiwKICAgICJ6IjogIjYtejM4IiwKICAgICJjb21wbGVtZW50IjogIjYtejM4IiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjctN0IiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCJdIiwKICAgICJ2ZWMiOiAiPDUsMywyLDMsNSwzPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI1LTdBIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNlwiLFwiN1wiLFwiOFwiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiNS0zQSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjRcIixcIjVcIl0iLAogICAgInZlYyI6ICI8MywyLDIsMiwxLDA+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjctM0IiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIzXCIsXCI0XCIsXCI1XCJdIgogIH0KXTsKYGBgCgojIyMgR0VUIC9hcGkvZGF0YS92ZWMvOnF1ZXJ5U2VhcmNoLwoKVGhlIGVuZHBvaW50IHJldHVybnMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBiYXNlZCBvbiB0aGUgcXVlcnkgb24gdGhlIHZlYyBwcm9wZXJ0eQoKVXNlIFQgZm9yIDEwLCBFIGZvciAxMSwgYW5kIEMgZm9yIDEyLgoKLSBNYXggVVJJIGxlbmd0aDogTm8gbW9yZSB0aGFuIDEwMCBjaGFyYWN0ZXJzCi0gU3VicXVlcnkgbGVuZ3RoOiAyLTggY2hhcmFjdGVycwoJLSBFeC4gXjEgb3IgIWAwMDAwMDAKIAojIyMjIEV4YWN0IFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS92ZWMvMzIxMDAwClsKICB7CiAgICAibnVtYmVyIjogIjQtMSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIl0iLAogICAgInZlYyI6ICI8MywyLDEsMCwwLDA+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjgtMSIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0KXTsKYGBgCgojIyMjIFdpbGRjYXJkIFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS92ZWMvMTEyMVgxCi8vIGNhcGl0YWwgWCBtdXN0IGJlIHVzZWQgYXMgdGhlIHdpbGRjYXJkClsKICB7CiAgICAibnVtYmVyIjogIjQtMTJBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNlwiXSIsCiAgICAidmVjIjogIjwxLDEsMiwxLDAsMT4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiOC0xMkEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIzXCIsXCI0XCIsXCI2XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI0LTEyQiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjNcIixcIjRcIixcIjZcIl0iLAogICAgInZlYyI6ICI8MSwxLDIsMSwwLDE+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjgtMTJCIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNlwiXSIKICB9Cl07CmBgYAoKIyMjIyBTdGFydHMgV2l0aCBTZWFyY2gKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvdmVjL14zMjEKWwogIHsKICAgICJudW1iZXIiOiAiNC0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiXSIsCiAgICAidmVjIjogIjwzLDIsMSwwLDAsMD4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiOC0xIiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjUtNUEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI3XCJdIiwKICAgICJ2ZWMiOiAiPDMsMiwxLDEsMiwxPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI3LTVCIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiNFwiLFwiNVwiLFwiNlwiLFwiN1wiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiNS01QiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjRcIixcIjVcIixcIjZcIixcIjdcIl0iLAogICAgInZlYyI6ICI8MywyLDEsMSwyLDE+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjctNUEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI3XCJdIgogIH0KXTsKYGBgCgojIyMjIEVuZHMgV2l0aCBTZWFyY2gKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvdmVjLzAxMTEkClsKICB7CiAgICAibnVtYmVyIjogIjQtNUEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCI2XCJdIiwKICAgICJ2ZWMiOiAiPDIsMSwwLDEsMSwxPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI4LTVCIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiNFwiLFwiNVwiLFwiNlwiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiNC01QiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjRcIixcIjVcIixcIjZcIl0iLAogICAgInZlYyI6ICI8MiwxLDAsMSwxLDE+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjgtNUEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCI2XCJdIgogIH0KXTsKYGBgCgojIyMjIENvbnRhaW5zIFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS92ZWMvQDMyNTAKWwogIHsKICAgICJudW1iZXIiOiAiNi0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNVwiXSIsCiAgICAidmVjIjogIjw1LDQsMywyLDEsMD4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiBudWxsLAogICAgImludmVyc2lvbiI6IG51bGwKICB9LAogIHsKICAgICJudW1iZXIiOiAiNi0zMiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjJcIixcIjRcIixcIjVcIixcIjdcIixcIjlcIl0iLAogICAgInZlYyI6ICI8MSw0LDMsMiw1LDA+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogbnVsbCwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfQpdOwpgYGAKCiMjIyMgU3Vic3RyaW5nIFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS92ZWMvKjMyNTAgb3IgLy8gR0VUIC9hcGkvZGF0YS92ZWMvKjMyNQpbCiAgewogICAgIm51bWJlciI6ICI2LTMyIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMlwiLFwiNFwiLFwiNVwiLFwiN1wiLFwiOVwiXSIsCiAgICAidmVjIjogIjwxLDQsMywyLDUsMD4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiBudWxsLAogICAgImludmVyc2lvbiI6IG51bGwKICB9Cl07CmBgYAoKIyMjIyBOb3QgU2VhcmNoCgotIFdvcmtzIHdpdGggITAsICFeMCwgITAkLCAhQDAsICEqMCwKICAtICEgaXMgZXF1aXZhbGVudCB0byAhYCAKICAtIGAhIGlzIG5vdCBhIHZhbGlkIHNlYXJjaCBtZXRob2QKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvcHJpbWVGb3JtLyEwMDAwMDAKWwogIHsKICAgICJudW1iZXIiOiAiMi0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiXSIsCiAgICAidmVjIjogIjwxLDAsMCwwLDAsMD4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMTAtMSIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0sCiAgICAuLi4sCiAgewogICAgIm51bWJlciI6ICIxMi0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOFwiLFwiOVwiLFwiVFwiLFwiRVwiXSIsCiAgICAidmVjIjogIjxDLEMsQyxDLEMsNj4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMC0xIiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfQpdOwpgYGAKCiMjIyMgRXhjbHVkZSBTZWFyY2gKCi0gV29ya3Mgd2l0aCBcYDAsIFxgXjAsIFxgMCQsIFxgQDAsIFxgKjAKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvdmVjLyEwMDAwMDAsYEAwLGBAMSxgQDIsYF44LGBeNixgQDUsYEA0LGBANwpbCiAgewogICAgIm51bWJlciI6ICI3LTMxQSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjNcIixcIjRcIixcIjZcIixcIjdcIixcIjlcIl0iLAogICAgInZlYyI6ICI8MywzLDYsMywzLDM+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjUtMzFCIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNVwiLFwiNlwiLFwiOFwiLFwiOVwiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiNy0zMUIiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI2XCIsXCI4XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDMsMyw2LDMsMywzPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI1LTMxQSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjNcIixcIjRcIixcIjZcIixcIjdcIixcIjlcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjEyLTEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCIsXCI5XCIsXCJUXCIsXCJFXCJdIiwKICAgICJ2ZWMiOiAiPEMsQyxDLEMsQyw2PiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICIwLTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9Cl07CmBgYAoKIyMjIyBDaGFpbmluZyBNZXRob2RzIChubyBkdXBsaWNhdGVzKQoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS92ZWMvMzIxMDAwLF4zNTMsNDQxJApbCiAgewogICAgIm51bWJlciI6ICI0LTEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCJdIiwKICAgICJ2ZWMiOiAiPDMsMiwxLDAsMCwwPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI4LTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9LAogIHsKICAgICJudW1iZXIiOiAiNy0yNEEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI3XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDMsNSwzLDQsNCwyPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI1LTI0QiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjJcIixcIjRcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjctMjRCIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMlwiLFwiNFwiLFwiNlwiLFwiN1wiLFwiOFwiLFwiOVwiXSIsCiAgICAidmVjIjogIjwzLDUsMyw0LDQsMj4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiNS0yNEEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI3XCIsXCI5XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI3LTExQSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIixcIjhcIl0iLAogICAgInZlYyI6ICI8NCw0LDQsNCw0LDE+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjUtMTFCIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiN1wiLFwiOFwiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiNy0xMUIiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI3XCIsXCI4XCJdIiwKICAgICJ2ZWMiOiAiPDQsNCw0LDQsNCwxPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI1LTExQSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIixcIjhcIl0iCiAgfQpdOwpgYGAKCiMjIyBHRVQgL2FwaS9kYXRhL3ZlYy86cXVlcnlTZWFyY2gvOnF1ZXJ5SW5lcXVhbGl0eS8KClRoZSBlbmRwb2ludCByZXR1cm5zIGFuIGFycmF5IG9mIG9iamVjdHMgYmFzZWQgb24gdGhlIHF1ZXJ5IG9uIHRoZSB2ZWMgcHJvcGVydHkgdXNpbmcgaW5lcXVhbGl0aWVzLiBJdCBjaGVja3MgdGhlIHRydXRoaW5lc3Mgb2YgdGhlIGNob3NlbiBpbmVxdWFsaXR5IGZvciBldmVyeSBwb3NpdGlvbi4KClRoZSBlbmRwb2ludCBvbmx5IHdvcmtzIHdpdGggdGhlIGV4YWN0IHNlYXJjaCBtZXRob2QgYXMgaW4gdGhlIC9hcGkvZGF0YS92ZWMvOnF1ZXJ5U2VhcmNoIGVuZHBvaW50LCB5b3UgY2FuIHN0aWxsIHVzZSAhIGFuZCBcYCB0byBmaWx0ZXIgb3V0IHdoYXQgeW91IGRvIG5vdCBuZWVkLiBPdGhlciBpbmNsdXNpb24gbWV0aG9kcyAoXF5cJFxAXCopIHdvcmsgYnV0IGRvIG5vdCBnZXQgZWZmZWN0ZWQgYnkgOnF1ZXJ5SW5lcXVhbGl0eS4KCS0gL2FwaS9kYXRhL3ZlYy86cXVlcnlTZWFyY2gvZSBpcyBlcXVpdmFsZW50IHRvIC9hcGkvZGF0YS92ZWMvOnF1ZXJ5U2VhcmNoLwoKLSBNYXggVVJJIGxlbmd0aDogTm8gbW9yZSB0aGFuIDEwMCBjaGFyYWN0ZXJzCi0gU3VicXVlcnkgbGVuZ3RoOiAyLTggY2hhcmFjdGVycwoJLSBFeC4gXjEgb3IgIWAwMDAwMDAKLSBTdWJxdWVyeSBsZW5ndGggZm9yIEluZXF1YWxpdHk6IDEtMiBjaGFyYWN0ZXJzCgktIEV4LiBlIG9yIGxlCgojIyMjIEVxdWFsIFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS92ZWMvNTU1NTUzL2UKWwogIHsKICAgICJudW1iZXIiOiAiOC16MTVBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNlwiLFwiOFwiLFwiOVwiXSIsCiAgICAidmVjIjogIjw1LDUsNSw1LDUsMz4iLAogICAgInoiOiAiOC16MjlBIiwKICAgICJjb21wbGVtZW50IjogIjQtejE1QiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjNcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjgtejE1QiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjNcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIl0iLAogICAgInZlYyI6ICI8NSw1LDUsNSw1LDM+IiwKICAgICJ6IjogIjgtejI5QSIsCiAgICAiY29tcGxlbWVudCI6ICI0LXoxNUEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI2XCIsXCI4XCIsXCI5XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI4LXoyOUEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDUsNSw1LDUsNSwzPiIsCiAgICAieiI6ICI4LXoxNUEiLAogICAgImNvbXBsZW1lbnQiOiAiNC16MjlCIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNlwiLFwiN1wiLFwiOFwiLFwiOVwiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiOC16MjlCIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNlwiLFwiN1wiLFwiOFwiLFwiOVwiXSIsCiAgICAidmVjIjogIjw1LDUsNSw1LDUsMz4iLAogICAgInoiOiAiOC16MTVBIiwKICAgICJjb21wbGVtZW50IjogIjQtejI5QSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjVcIixcIjZcIixcIjdcIixcIjlcIl0iCiAgfQpdOwpgYGAKCgojIyMjIExlc3MgVGhhbiBTZWFyY2gKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvdmVjLzU1NTU1My9sClsKICB7CiAgICAibnVtYmVyIjogIjAtMSIsCiAgICAicHJpbWVGb3JtIjogIltcIlwiXSIsCiAgICAidmVjIjogIjwwLDAsMCwwLDAsMD4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMTItMSIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0sCiAgICAuLi4KICB7CiAgICAibnVtYmVyIjogIjctejM4QiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjNcIixcIjRcIixcIjZcIixcIjdcIixcIjhcIl0iLAogICAgInZlYyI6ICI8NCwzLDQsNCw0LDI+IiwKICAgICJ6IjogIjctejE4QSIsCiAgICAiY29tcGxlbWVudCI6ICI1LXozOEEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCI0XCIsXCI1XCIsXCI3XCIsXCI4XCJdIgogIH0KXTsKYGBgCgojIyMjIExlc3MgVGhhbiBPciBFcXVhbCBUbyBTZWFyY2gKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvdmVjLzU1NTU1My9sZQpbCiAgewogICAgIm51bWJlciI6ICIwLTEiLAogICAgInByaW1lRm9ybSI6ICJbXCJcIl0iLAogICAgInZlYyI6ICI8MCwwLDAsMCwwLDA+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjEyLTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9LAogICAgLi4uCiAgewogICAgIm51bWJlciI6ICI4LXoyOUIiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI2XCIsXCI3XCIsXCI4XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDUsNSw1LDUsNSwzPiIsCiAgICAieiI6ICI4LXoxNUEiLAogICAgImNvbXBsZW1lbnQiOiAiNC16MjlBIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOVwiXSIKICB9Cl07CmBgYAoKIyMjIyBHcmVhdGVyIFRoYW4gU2VhcmNoCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL3ZlYy81NTU1NTMvZwpbCiAgewogICAgIm51bWJlciI6ICI5LTVBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNlwiLFwiN1wiLFwiOFwiLFwiOVwiXSIsCiAgICAidmVjIjogIjw3LDYsNiw2LDcsND4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMy01QiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIl0iCiAgfSwKICAgIC4uLgogIHsKICAgICJudW1iZXIiOiAiMTItMSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIixcIlRcIixcIkVcIl0iLAogICAgInZlYyI6ICI8QyxDLEMsQyxDLDY+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjAtMSIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0KXTsKYGBgCgojIyMjIEdyZWF0ZXIgVGhhbiBPciBFcXVhbCBUbyBTZWFyY2gKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvdmVjLzU1NTU1My9nZQpbCiAgewogICAgIm51bWJlciI6ICI4LXoxNUEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI2XCIsXCI4XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDUsNSw1LDUsNSwzPiIsCiAgICAieiI6ICI4LXoyOUEiLAogICAgImNvbXBsZW1lbnQiOiAiNC16MTVCIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMVwiLFwiM1wiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOFwiLFwiOVwiXSIKICB9LAogICAgLi4uCiAgewogICAgIm51bWJlciI6ICIxMi0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOFwiLFwiOVwiLFwiVFwiLFwiRVwiXSIsCiAgICAidmVjIjogIjxDLEMsQyxDLEMsNj4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMC0xIiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfQpdOwpgYGAKCiMjIyBHRVQgL2FwaS9kYXRhL3ovOnF1ZXJ5U2VhcmNoLwoKVGhlIGVuZHBvaW50IHJldHVybnMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBiYXNlZCBvbiB0aGUgcXVlcnkgb24gdGhlIHogcHJvcGVydHkKCi0gTWF4IFVSSSBsZW5ndGg6IE5vIG1vcmUgdGhhbiAxMDAgY2hhcmFjdGVycwotIFN1YnF1ZXJ5IGxlbmd0aDogMi04IGNoYXJhY3RlcnMKCS0gRXguIF4wIG9yICFgNi16MjVBCgojIyMjIEV4YWN0IFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS96L251bGwKWwogIHsKICAgICJudW1iZXIiOiAiMC0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiXCJdIiwKICAgICJ2ZWMiOiAiPDAsMCwwLDAsMCwwPiIsCiAgICAieiI6IG51bGwKICAgICJjb21wbGVtZW50IjogIjEyLTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9LAogICAuLi4KICB7CiAgICAibnVtYmVyIjogIjEyLTEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCIsXCI5XCIsXCJUXCIsXCJFXCJdIiwKICAgICJ2ZWMiOiAiPEMsQyxDLEMsQyw2PiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICIwLTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9Cl07CgovLyBHRVQgL2FwaS9kYXRhL3ovNS16MzcKWwogIHsKICAgICJudW1iZXIiOiAiNS16MTciLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI4XCJdIiwKICAgICJ2ZWMiOiAiPDIsMSwyLDMsMiwwPiIsCiAgICAieiI6ICI1LXozNyIsCiAgICAiY29tcGxlbWVudCI6ICI3LXoxNyIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0KXTsKYGBgCgojIyMjIFN0YXJ0cyBXaXRoIFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS96L141LXozClsKICB7CiAgICAibnVtYmVyIjogIjUtejEyIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiM1wiLFwiNVwiLFwiNlwiXSIsCiAgICAidmVjIjogIjwyLDIsMiwxLDIsMT4iLAogICAgInoiOiAiNS16MzZBIiwKICAgICJjb21wbGVtZW50IjogIjctejEyIiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjUtejE3IiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiM1wiLFwiNFwiLFwiOFwiXSIsCiAgICAidmVjIjogIjwyLDEsMiwzLDIsMD4iLAogICAgInoiOiAiNS16MzciLAogICAgImNvbXBsZW1lbnQiOiAiNy16MTciLAogICAgImludmVyc2lvbiI6IG51bGwKICB9LAogIHsKICAgICJudW1iZXIiOiAiNS16MThBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiNFwiLFwiNVwiLFwiN1wiXSIsCiAgICAidmVjIjogIjwyLDEsMiwyLDIsMT4iLAogICAgInoiOiAiNS16MzhBIiwKICAgICJjb21wbGVtZW50IjogIjctejE4QSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjJcIixcIjNcIixcIjZcIixcIjdcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjUtejE4QiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjJcIixcIjNcIixcIjZcIixcIjdcIl0iLAogICAgInZlYyI6ICI8MiwxLDIsMiwyLDE+IiwKICAgICJ6IjogIjUtejM4QSIsCiAgICAiY29tcGxlbWVudCI6ICI3LXoxOEIiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCI0XCIsXCI1XCIsXCI3XCJdIgogIH0KXTsKYGBgCgojIyMjIEVuZHMgV2l0aCBTZWFyY2gKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvei8yMyQKWwogIHsKICAgICJudW1iZXIiOiAiNi16NDUiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI2XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDIsMyw0LDIsMiwyPiIsCiAgICAieiI6ICI2LXoyMyIsCiAgICAiY29tcGxlbWVudCI6ICI2LXoyMyIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0KXTsKYGBgCgojIyMjIENvbnRhaW5zIFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS96L0A0NQpbCiAgewogICAgIm51bWJlciI6ICI0LXoyOUEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIzXCIsXCI3XCJdIiwKICAgICJ2ZWMiOiAiPDEsMSwxLDEsMSwxPiIsCiAgICAieiI6ICI0LXoxNUEiLAogICAgImNvbXBsZW1lbnQiOiAiOC16MjlCIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiNFwiLFwiNlwiLFwiN1wiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiNC16MjlCIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiNFwiLFwiNlwiLFwiN1wiXSIsCiAgICAidmVjIjogIjwxLDEsMSwxLDEsMT4iLAogICAgInoiOiAiNC16MTVBIiwKICAgICJjb21wbGVtZW50IjogIjgtejI5QSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjNcIixcIjdcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjYtejIzIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNVwiLFwiNlwiLFwiOFwiXSIsCiAgICAidmVjIjogIjwyLDMsNCwyLDIsMj4iLAogICAgInoiOiAiNi16NDUiLAogICAgImNvbXBsZW1lbnQiOiAiNi16NDUiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9Cl07CmBgYAoKIyMjIyBTdWJzdHJpbmcgU2VhcmNoCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL3ovKjQ1ClsKICB7CiAgICAibnVtYmVyIjogIjYtejIzIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNVwiLFwiNlwiLFwiOFwiXSIsCiAgICAidmVjIjogIjwyLDMsNCwyLDIsMj4iLAogICAgInoiOiAiNi16NDUiLAogICAgImNvbXBsZW1lbnQiOiAiNi16NDUiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9Cl07CmBgYAoKIyMjIyBOb3QgU2VhcmNoCgotIFdvcmtzIHdpdGggITEtMSwgIV4xLTEsICExLTEkLCAhQEEsICEqQSwKICAtICEgaXMgZXF1aXZhbGVudCB0byAhYCAKICAtIGAhIGlzIG5vdCBhIHZhbGlkIHNlYXJjaCBtZXRob2QKLSBVc2UgJTIwIGZvciB3aGl0ZXNwYWNlIGVxdWl2YWxlbnQgdG8gdGhlIGVtcHR5IGFycmF5IGZvciAwLTEgIAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS96LyFudWxsClsKICB7CiAgICAibnVtYmVyIjogIjQtejE1QSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjRcIixcIjZcIl0iLAogICAgInZlYyI6ICI8MSwxLDEsMSwxLDE+IiwKICAgICJ6IjogIjQtejI5QSIsCiAgICAiY29tcGxlbWVudCI6ICI4LXoxNUIiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIyXCIsXCI1XCIsXCI2XCJdIgogIH0sCiAgICAuLi4sCiAgewogICAgIm51bWJlciI6ICI4LXoyOUIiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI2XCIsXCI3XCIsXCI4XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDUsNSw1LDUsNSwzPiIsCiAgICAieiI6ICI4LXoxNUEiLAogICAgImNvbXBsZW1lbnQiOiAiNC16MjlBIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOVwiXSIKICB9Cl07CmBgYAoKIyMjIyBFeGNsdWRlIFNlYXJjaAoKLSBXb3JrcyB3aXRoIFxgMS0xLCBcYF4xLTEsIFxgMS0xJCwgXGBAQSwgXGAqQQoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS96LzctejEyLDgtejI5QSxgNy16MTIKWwogIHsKICAgICJudW1iZXIiOiAiOC16MTVBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNlwiLFwiOFwiLFwiOVwiXSIsCiAgICAidmVjIjogIjw1LDUsNSw1LDUsMz4iLAogICAgInoiOiAiOC16MjlBIiwKICAgICJjb21wbGVtZW50IjogIjQtejE1QiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjNcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjgtejE1QiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjNcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIl0iLAogICAgInZlYyI6ICI8NSw1LDUsNSw1LDM+IiwKICAgICJ6IjogIjgtejI5QSIsCiAgICAiY29tcGxlbWVudCI6ICI0LXoxNUEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI2XCIsXCI4XCIsXCI5XCJdIgogIH0KXTsKYGBgCgojIyMjIENoYWluaW5nIE1ldGhvZHMgKG5vIGR1cGxpY2F0ZXMpCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL3ovOC16MjlBLF43LXoxLC16MjlBLGA3LXoxOEEKWwogIHsKICAgICJudW1iZXIiOiAiOC16MTVBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNlwiLFwiOFwiLFwiOVwiXSIsCiAgICAidmVjIjogIjw1LDUsNSw1LDUsMz4iLAogICAgInoiOiAiOC16MjlBIiwKICAgICJjb21wbGVtZW50IjogIjQtejE1QiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjNcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjgtejE1QiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjNcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIl0iLAogICAgInZlYyI6ICI8NSw1LDUsNSw1LDM+IiwKICAgICJ6IjogIjgtejI5QSIsCiAgICAiY29tcGxlbWVudCI6ICI0LXoxNUEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI2XCIsXCI4XCIsXCI5XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI3LXozNkEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI2XCIsXCI4XCJdIiwKICAgICJ2ZWMiOiAiPDQsNCw0LDMsNCwyPiIsCiAgICAieiI6ICI3LXoxMiIsCiAgICAiY29tcGxlbWVudCI6ICI1LXozNkIiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI3LXozNkIiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCJdIiwKICAgICJ2ZWMiOiAiPDQsNCw0LDMsNCwyPiIsCiAgICAieiI6ICI3LXoxMiIsCiAgICAiY29tcGxlbWVudCI6ICI1LXozNkEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI2XCIsXCI4XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI3LXozNyIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjNcIixcIjRcIixcIjVcIixcIjdcIixcIjhcIl0iLAogICAgInZlYyI6ICI8NCwzLDQsNSw0LDE+IiwKICAgICJ6IjogIjctejE3IiwKICAgICJjb21wbGVtZW50IjogIjUtejM3IiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfQpdOwpgYGAKCiMjIyBHRVQgL2FwaS9kYXRhL2NvbXBsZW1lbnQvOnF1ZXJ5U2VhcmNoLwoKVGhlIGVuZHBvaW50IHJldHVybnMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBiYXNlZCBvbiB0aGUgcXVlcnkgb24gdGhlIGNvbXBsZW1lbnQgcHJvcGVydHkKCi0gTWF4IFVSSSBsZW5ndGg6IE5vIG1vcmUgdGhhbiAxMDAgY2hhcmFjdGVycwotIFN1YnF1ZXJ5IGxlbmd0aDogMi04IGNoYXJhY3RlcnMKCS0gRXguIF4wIG9yICFgNi16MjVBCgojIyMjIEV4YWN0IFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS9jb21wbGVtZW50L251bGwKWwogIHsKICAgICJudW1iZXIiOiAiNi0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNVwiXSIsCiAgICAidmVjIjogIjw1LDQsMywyLDEsMD4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiBudWxsLAogICAgImludmVyc2lvbiI6IG51bGwKICB9LAogICAuLi4KICB7CiAgICAibnVtYmVyIjogIjYtMzUiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIyXCIsXCI0XCIsXCI2XCIsXCI4XCIsXCJUXCJdIiwKICAgICJ2ZWMiOiAiPDAsNiwwLDYsMCwzPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6IG51bGwsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0KXTsKCi8vIEdFVCAvYXBpL2RhdGEvY29tcGxlbWVudC81LXozNwpbCiAgewogICAgIm51bWJlciI6ICI3LXozNyIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjNcIixcIjRcIixcIjVcIixcIjdcIixcIjhcIl0iLAogICAgInZlYyI6ICI8NCwzLDQsNSw0LDE+IiwKICAgICJ6IjogIjctejE3IiwKICAgICJjb21wbGVtZW50IjogIjUtejM3IiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfQpdOwpgYGAKCiMjIyMgU3RhcnRzIFdpdGggU2VhcmNoCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL2NvbXBsZW1lbnQvXjUtejM2ClsKICB7CiAgICAibnVtYmVyIjogIjctejM2QSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjVcIixcIjZcIixcIjhcIl0iLAogICAgInZlYyI6ICI8NCw0LDQsMyw0LDI+IiwKICAgICJ6IjogIjctejEyIiwKICAgICJjb21wbGVtZW50IjogIjUtejM2QiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjJcIixcIjNcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjctejM2QiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjJcIixcIjNcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIl0iLAogICAgInZlYyI6ICI8NCw0LDQsMyw0LDI+IiwKICAgICJ6IjogIjctejEyIiwKICAgICJjb21wbGVtZW50IjogIjUtejM2QSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjVcIixcIjZcIixcIjhcIl0iCiAgfQpdOwpgYGAKCiMjIyMgRW5kcyBXaXRoIFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS9jb21wbGVtZW50LzIzJApbCiAgewogICAgIm51bWJlciI6ICI0LTIzIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMlwiLFwiNVwiLFwiN1wiXSIsCiAgICAidmVjIjogIjwwLDIsMSwwLDMsMD4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiOC0yMyIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0sCiAgewogICAgIm51bWJlciI6ICI2LXo0NSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjJcIixcIjNcIixcIjRcIixcIjZcIixcIjlcIl0iLAogICAgInZlYyI6ICI8MiwzLDQsMiwyLDI+IiwKICAgICJ6IjogIjYtejIzIiwKICAgICJjb21wbGVtZW50IjogIjYtejIzIiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjgtMjMiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI3XCIsXCI4XCIsXCJUXCJdIiwKICAgICJ2ZWMiOiAiPDQsNiw1LDQsNywyPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI0LTIzIiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfQpdOwpgYGAKCiMjIyMgQ29udGFpbnMgU2VhcmNoCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL2NvbXBsZW1lbnQvQDM2QQpbCiAgewogICAgIm51bWJlciI6ICI1LXozNkIiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIzXCIsXCI1XCIsXCI2XCIsXCI3XCJdIiwKICAgICJ2ZWMiOiAiPDIsMiwyLDEsMiwxPiIsCiAgICAieiI6ICI1LXoxMiIsCiAgICAiY29tcGxlbWVudCI6ICI3LXozNkEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCI0XCIsXCI3XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI2LXozQiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIl0iLAogICAgInZlYyI6ICI8NCwzLDMsMiwyLDE+IiwKICAgICJ6IjogIjYtejM2QSIsCiAgICAiY29tcGxlbWVudCI6ICI2LXozNkEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI2XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI2LXoxMEIiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI2XCIsXCI3XCJdIiwKICAgICJ2ZWMiOiAiPDMsMywzLDMsMiwxPiIsCiAgICAieiI6ICI2LXozOUEiLAogICAgImNvbXBsZW1lbnQiOiAiNi16MzlBIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMVwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiN1wiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiNi16MTdCIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiNFwiLFwiNlwiLFwiN1wiLFwiOFwiXSIsCiAgICAidmVjIjogIjwzLDIsMiwzLDMsMj4iLAogICAgInoiOiAiNi16NDNBIiwKICAgICJjb21wbGVtZW50IjogIjYtejQzQSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjJcIixcIjRcIixcIjdcIixcIjhcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjYtejM2QiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIixcIjdcIl0iLAogICAgInZlYyI6ICI8NCwzLDMsMiwyLDE+IiwKICAgICJ6IjogIjYtejNBIiwKICAgICJjb21wbGVtZW50IjogIjYtejNBIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiN1wiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiNy16MzZCIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOFwiXSIsCiAgICAidmVjIjogIjw0LDQsNCwzLDQsMj4iLAogICAgInoiOiAiNy16MTIiLAogICAgImNvbXBsZW1lbnQiOiAiNS16MzZBIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNVwiLFwiNlwiLFwiOFwiXSIKICB9Cl07CmBgYAoKIyMjIyBTdWJzdHJpbmcgU2VhcmNoCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL2NvbXBsZW1lbnQvKjM2QQpbCiAgewogICAgIm51bWJlciI6ICI1LXozNkIiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIzXCIsXCI1XCIsXCI2XCIsXCI3XCJdIiwKICAgICJ2ZWMiOiAiPDIsMiwyLDEsMiwxPiIsCiAgICAieiI6ICI1LXoxMiIsCiAgICAiY29tcGxlbWVudCI6ICI3LXozNkEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCI0XCIsXCI3XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI2LXozQiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIl0iLAogICAgInZlYyI6ICI8NCwzLDMsMiwyLDE+IiwKICAgICJ6IjogIjYtejM2QSIsCiAgICAiY29tcGxlbWVudCI6ICI2LXozNkEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI2XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI3LXozNkIiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCJdIiwKICAgICJ2ZWMiOiAiPDQsNCw0LDMsNCwyPiIsCiAgICAieiI6ICI3LXoxMiIsCiAgICAiY29tcGxlbWVudCI6ICI1LXozNkEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI2XCIsXCI4XCJdIgogIH0KXTsKYGBgCgojIyMjIE5vdCBTZWFyY2gKCi0gV29ya3Mgd2l0aCAhMS0xLCAhXjEtMSwgITEtMSQsICFAQSwgISpBLAogIC0gISBpcyBlcXVpdmFsZW50IHRvICFgIAogIC0gYCEgaXMgbm90IGEgdmFsaWQgc2VhcmNoIG1ldGhvZAotIFVzZSAlMjAgZm9yIHdoaXRlc3BhY2UgZXF1aXZhbGVudCB0byB0aGUgZW1wdHkgYXJyYXkgZm9yIDAtMSAgCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL2NvbXBsZW1lbnQvIW51bGwKWwogIHsKICAgICJudW1iZXIiOiAiMC0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiXCJdIiwKICAgICJ2ZWMiOiAiPDAsMCwwLDAsMCwwPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICIxMi0xIiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfSwKICAgIC4uLiwKICB7CiAgICAibnVtYmVyIjogIjEyLTEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCIsXCI5XCIsXCJUXCIsXCJFXCJdIiwKICAgICJ2ZWMiOiAiPEMsQyxDLEMsQyw2PiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICIwLTEiLAogICAgImludmVyc2lvbiI6IG51bGwKICB9Cl07CmBgYAoKIyMjIyBFeGNsdWRlIFNlYXJjaAoKLSBXb3JrcyB3aXRoICExLTEsICFeMS0xLCAhMS0xJCwgIUBBLCAhKkEsCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL2NvbXBsZW1lbnQvMS0xLDExLTEsYDEtMQpbCiAgewogICAgIm51bWJlciI6ICIxLTEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCJdIiwKICAgICJ2ZWMiOiAiPDAsMCwwLDAsMCwwPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICIxMS0xIiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfQpdOwpgYGAKCiMjIyMgQ2hhaW5pbmcgTWV0aG9kcyAobm8gZHVwbGljYXRlcykKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvY29tcGxlbWVudC84LXoyOUEsXjctejEsLXoyOUEsYDctejE4QSxgQiQKWwogIHsKICAgICJudW1iZXIiOiAiNC16MjlCIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiNFwiLFwiNlwiLFwiN1wiXSIsCiAgICAidmVjIjogIjwxLDEsMSwxLDEsMT4iLAogICAgInoiOiAiNC16MTVBIiwKICAgICJjb21wbGVtZW50IjogIjgtejI5QSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjNcIixcIjdcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjUtejEyIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiM1wiLFwiNVwiLFwiNlwiXSIsCiAgICAidmVjIjogIjwyLDIsMiwxLDIsMT4iLAogICAgInoiOiAiNS16MzZBIiwKICAgICJjb21wbGVtZW50IjogIjctejEyIiwKICAgICJpbnZlcnNpb24iOiBudWxsCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjUtejE3IiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiM1wiLFwiNFwiLFwiOFwiXSIsCiAgICAidmVjIjogIjwyLDEsMiwzLDIsMD4iLAogICAgInoiOiAiNS16MzciLAogICAgImNvbXBsZW1lbnQiOiAiNy16MTciLAogICAgImludmVyc2lvbiI6IG51bGwKICB9Cl07CmBgYAojIyMgR0VUIC9hcGkvZGF0YS9pbnZlcnNpb24vOnF1ZXJ5U2VhcmNoLwoKVGhlIGVuZHBvaW50IHJldHVybnMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBiYXNlZCBvbiB0aGUgcXVlcnkgb24gdGhlIGludmVyc2lvbiBwcm9wZXJ0eQoKVXNlIFQgZm9yIDEwLCBFIGZvciAxMSwgYW5kIEMgZm9yIDEyLgoKLSBNYXggVVJJIGxlbmd0aDogTm8gbW9yZSB0aGFuIDEwMCBjaGFyYWN0ZXJzCi0gU3VicXVlcnkgbGVuZ3RoOiAyLTE0IGNoYXJhY3RlcnMKCS0gRXguIF4wIG9yICFgMDEyMzQ1Njc4OVRFCgojIyMjIEV4YWN0IFNlYXJjaAoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS9pbnZlcnNpb24vbnVsbApbCiAgewogICAgIm51bWJlciI6ICIwLTEiLAogICAgInByaW1lRm9ybSI6ICJbXCJcIl0iLAogICAgInZlYyI6ICI8MCwwLDAsMCwwLDA+IiwKICAgICJ6IjogbnVsbAogICAgImNvbXBsZW1lbnQiOiAiMTItMSIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0sCiAgIC4uLgogIHsKICAgICJudW1iZXIiOiAiMTItMSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIixcIlRcIixcIkVcIl0iLAogICAgInZlYyI6ICI8QyxDLEMsQyxDLDY+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjAtMSIsCiAgICAiaW52ZXJzaW9uIjogbnVsbAogIH0KXTsKCi8vIEdFVCAvYXBpL2RhdGEvaW52ZXJzaW9uLzAyNgpbCiAgewogICAgIm51bWJlciI6ICIzLThCIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiNFwiLFwiNlwiXSIsCiAgICAidmVjIjogIjwwLDEsMCwxLDAsMT4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiOS04QSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjJcIixcIjZcIl0iCiAgfQpdOwpgYGAKCiMjIyMgU3RhcnRzIFdpdGggU2VhcmNoCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL2ludmVyc2lvbi9eMDIzNjcKWwogIHsKICAgICJudW1iZXIiOiAiNS16MThBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiNFwiLFwiNVwiLFwiN1wiXSIsCiAgICAidmVjIjogIjwyLDEsMiwyLDIsMT4iLAogICAgInoiOiAiNS16MzhBIiwKICAgICJjb21wbGVtZW50IjogIjctejE4QSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjJcIixcIjNcIixcIjZcIixcIjdcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjYtejQzQSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjVcIixcIjZcIixcIjhcIl0iLAogICAgInZlYyI6ICI8MywyLDIsMywzLDI+IiwKICAgICJ6IjogIjYtejE3QSIsCiAgICAiY29tcGxlbWVudCI6ICI2LXoxN0IiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIyXCIsXCIzXCIsXCI2XCIsXCI3XCIsXCI4XCJdIgogIH0KXTsKYGBgCgojIyMjIEVuZHMgV2l0aCBTZWFyY2gKCmBgYHRzCi8vIEdFVCAvYXBpL2RhdGEvaW52ZXJzaW9uLzIzJApbCiAgewogICAgIm51bWJlciI6ICIzLTJBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiM1wiXSIsCiAgICAidmVjIjogIjwxLDEsMSwwLDAsMD4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiOS0yQSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjJcIixcIjNcIl0iCiAgfQpdOwpgYGAKCiMjIyMgQ29udGFpbnMgU2VhcmNoCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL2ludmVyc2lvbi9ANDU3ODkKWwogIHsKICAgICJudW1iZXIiOiAiNy0yN0EiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCI0XCIsXCI1XCIsXCI3XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDMsNCw0LDQsNSwxPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI1LTI3QiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjJcIixcIjRcIixcIjVcIixcIjdcIixcIjhcIixcIjlcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjgtMTFBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiN1wiLFwiOVwiXSIsCiAgICAidmVjIjogIjw1LDYsNSw1LDUsMj4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiNC0xMUIiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIyXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCIsXCI5XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI4LTE0QSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjRcIixcIjVcIixcIjZcIixcIjdcIixcIjlcIl0iLAogICAgInZlYyI6ICI8NSw1LDUsNSw2LDI+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjQtMTRBIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiN1wiLFwiOFwiLFwiOVwiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiOC0xOUEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI4XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDUsNCw1LDcsNSwyPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI0LTE5QiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjNcIixcIjRcIixcIjVcIixcIjdcIixcIjhcIixcIjlcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjktMkEiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDcsNyw3LDYsNiwzPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICIzLTJBIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOFwiLFwiOVwiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiOS0zQSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIixcIjhcIixcIjlcIl0iLAogICAgInZlYyI6ICI8Nyw2LDcsNyw2LDM+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjMtM0IiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCIsXCI5XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI5LTRBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiN1wiLFwiOFwiLFwiOVwiXSIsCiAgICAidmVjIjogIjw3LDYsNiw3LDcsMz4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMy00QiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjJcIixcIjRcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjktNEIiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDcsNiw2LDcsNywzPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICIzLTRBIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiN1wiLFwiOFwiLFwiOVwiXSIKICB9Cl07CmBgYAoKIyMjIyBTdWJzdHJpbmcgU2VhcmNoCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL2ludmVyc2lvbi8qNDU3ODkKWwogIHsKICAgICJudW1iZXIiOiAiNy0yN0EiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCI0XCIsXCI1XCIsXCI3XCIsXCI5XCJdIiwKICAgICJ2ZWMiOiAiPDMsNCw0LDQsNSwxPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI1LTI3QiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjJcIixcIjRcIixcIjVcIixcIjdcIixcIjhcIixcIjlcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjgtMTRBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiNFwiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOVwiXSIsCiAgICAidmVjIjogIjw1LDUsNSw1LDYsMj4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiNC0xNEEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI3XCIsXCI4XCIsXCI5XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI4LTE5QSIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjRcIixcIjVcIixcIjZcIixcIjhcIixcIjlcIl0iLAogICAgInZlYyI6ICI8NSw0LDUsNyw1LDI+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjQtMTlCIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMVwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiN1wiLFwiOFwiLFwiOVwiXSIKICB9LAogIHsKICAgICJudW1iZXIiOiAiOS00QiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjFcIixcIjJcIixcIjRcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIl0iLAogICAgInZlYyI6ICI8Nyw2LDYsNyw3LDM+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjMtNEEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI3XCIsXCI4XCIsXCI5XCJdIgogIH0KXTsKYGBgCgojIyMjIE5vdCBTZWFyY2gKCi0gV29ya3Mgd2l0aCAhMCwgIV4wLCAhMCQsICFAMCwgISowLAogIC0gISBpcyBlcXVpdmFsZW50IHRvICFgIAogIC0gYCEgaXMgbm90IGEgdmFsaWQgc2VhcmNoIG1ldGhvZAotIFVzZSAlMjAgZm9yIHdoaXRlc3BhY2UgZXF1aXZhbGVudCB0byB0aGUgZW1wdHkgYXJyYXkgZm9yIDAtMSAgCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL2ludmVyc2lvbi8hbnVsbApbCiAgewogICAgIm51bWJlciI6ICIzLTJBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiM1wiXSIsCiAgICAidmVjIjogIjwxLDEsMSwwLDAsMD4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiOS0yQSIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjJcIixcIjNcIl0iCiAgfSwKICAgIC4uLiwKICB7CiAgICAibnVtYmVyIjogIjktMTFCIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiNFwiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOVwiLFwiVFwiXSIsCiAgICAidmVjIjogIjw2LDYsNyw3LDcsMz4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiMy0xMUEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI5XCIsXCJUXCJdIgogIH0KXTsKYGBgCgojIyMjIEV4Y2x1ZGUgU2VhcmNoCgotIFdvcmtzIHdpdGggXGAwLCBcYF4wLCBcYDAkLCBcYEAwLCBcYCowCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL2ludmVyc2lvbi8wMTI0LDAxMjQ1LGAwMTI0ClsKICB7CiAgICAibnVtYmVyIjogIjUtM0IiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIzXCIsXCI0XCIsXCI1XCJdIiwKICAgICJ2ZWMiOiAiPDMsMiwyLDIsMSwwPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI3LTNBIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiNFwiLFwiNVwiXSIKICB9Cl07CmBgYAoKIyMjIyBDaGFpbmluZyBNZXRob2RzIChubyBkdXBsaWNhdGVzKQoKYGBgdHMKLy8gR0VUIC9hcGkvZGF0YS9pbnZlcnNpb24vMDEyNCxeMDEyNTY3LDAxMjQ1JCxgQDkKWwogIHsKICAgICJudW1iZXIiOiAiNC0yQiIsCiAgICAicHJpbWVGb3JtIjogIltcIjBcIixcIjJcIixcIjNcIixcIjRcIl0iLAogICAgInZlYyI6ICI8MiwyLDEsMSwwLDA+IiwKICAgICJ6IjogbnVsbCwKICAgICJjb21wbGVtZW50IjogIjgtMkEiLAogICAgImludmVyc2lvbiI6ICJbXCIwXCIsXCIxXCIsXCIyXCIsXCI0XCJdIgogIH0sCiAgewogICAgIm51bWJlciI6ICI3LTdBIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNlwiLFwiN1wiLFwiOFwiXSIsCiAgICAidmVjIjogIjw1LDMsMiwzLDUsMz4iLAogICAgInoiOiBudWxsLAogICAgImNvbXBsZW1lbnQiOiAiNS03QiIsCiAgICAiaW52ZXJzaW9uIjogIltcIjBcIixcIjFcIixcIjJcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIl0iCiAgfSwKICB7CiAgICAibnVtYmVyIjogIjUtM0IiLAogICAgInByaW1lRm9ybSI6ICJbXCIwXCIsXCIxXCIsXCIzXCIsXCI0XCIsXCI1XCJdIiwKICAgICJ2ZWMiOiAiPDMsMiwyLDIsMSwwPiIsCiAgICAieiI6IG51bGwsCiAgICAiY29tcGxlbWVudCI6ICI3LTNBIiwKICAgICJpbnZlcnNpb24iOiAiW1wiMFwiLFwiMVwiLFwiMlwiLFwiNFwiLFwiNVwiXSIKICB9Cl07CmBgYAoKIyMjIEdFVCAvYXBpL2RhdGEvOnF1ZXJ5UHJvcC9QUk9QRVJUWS86cXVlcnlTZWFyY2gvCgpVc2luZyB0aGUgR0VUIC9hcGkvZGF0YS86cXVlcnlQcm9wIGVuZHBvaW50IHlvdSBjYW4gZmlsdGVyIG91dCB0aGUgcHJvcGVydGllcyB5b3Ugd2FudCBmcm9tIHRoZSByZXN1bHRpbmcgcXVlcnlTZWFyY2gKCkxlbmd0aHMgRm9yIDpxdWVyeVByb3BcOgotIE1heCBVUkkgbGVuZ3RoOiBObyBtb3JlIHRoYW4gNDMgY2hhcmFjdGVycwotIFN1YnF1ZXJ5IGxlbmd0aDogMS0xMCBjaGFyYWN0ZXJzCgojIyMjIyBFbmRwb2ludHM6Ci0gL2FwaS9kYXRhLzpxdWVyeVByb3AvbnVtYmVyLzpxdWVyeVNlYXJjaC8KLSAvYXBpL2RhdGEvOnF1ZXJ5UHJvcC9wcmltZUZvcm0vOnF1ZXJ5U2VhcmNoLwotIC9hcGkvZGF0YS86cXVlcnlQcm9wL3ZlYy86cXVlcnlTZWFyY2gvCi0gL2FwaS9kYXRhLzpxdWVyeVByb3AvdmVjLzpxdWVyeVNlYXJjaC86cXVlcnlJbmVxdWFsaXR5LwotIC9hcGkvZGF0YS86cXVlcnlQcm9wL3ovOnF1ZXJ5U2VhcmNoLwotIC9hcGkvZGF0YS86cXVlcnlQcm9wL2NvbXBsZW1lbnQvOnF1ZXJ5U2VhcmNoLwotIC9hcGkvZGF0YS86cXVlcnlQcm9wL2ludmVyc2lvbi86cXVlcnlTZWFyY2gvCgpgYGB0cwovLyBHRVQgL2FwaS9kYXRhL3ByaW1lRm9ybS9udW1iZXIvMS0xClsKICB7CiAgICAicHJpbWVGb3JtIjogIltcIjBcIl0iCiAgfQpdOwoKLy8gR0VUIC9hcGkvZGF0YS9udW1iZXIscHJpbWVGb3JtL251bWJlci8xLTEKWwogIHsKICAgICJudW1iZXIiOiAiMS0xIiwKICAgICJwcmltZUZvcm0iOiAiW1wiMFwiXSIKICB9Cl07CmBgYAoKIyMjIEdFVCAvYXBpL2RhdGEvZDMvOnF1ZXJ5U2VhcmNoLwoKVGhlIGVuZHBvaW50IHJldHVybnMgZWl0aGVyIGpzb24gZm9yIGEgdmFsaWQgZDNkYWcgZ3JhcGggb3IganNvbiBmb3IgdmFsaWQgZGFnIGxpbmtzCgpBIG9wdGlvbiBmb3IgZm9ydGUgbnVtYmVycywgZW5jb2RlZCBsaWtlIHRoaXMgIltcIjBcIl18MS0xfDAwMDAwMCIsIGlzIGFkZGVkIHRvIGFsbG93IHRoZSBhYmlsaXR5IHRvIHRvZ2dsZSBiZXR3ZWVuIHByaW1lRm9ybSwgbnVtYmVyLCBhbmQgdmVjIG9uIGEgZDNkYWcgYnkgc3BsaXR0aW5nIG9uICJ8IgoKLSBNYXggVVJJIGxlbmd0aDogTm8gbW9yZSB0aGFuIDIyIGNoYXJhY3RlcnMKCiMjIyMgVHlwZXMKYGBgdHMKdHlwZSBMaW5rcyA9IHsgc291cmNlOiBzdHJpbmc7IHRhcmdldDogc3RyaW5nIH1bXTsKdHlwZSBEYWdKU09OT2JqZWN0ID0gewoJc2l6ZTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9OwoJbm9kZXM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IGRhdGE6IHN0cmluZyB9W107CglsaW5rczogeyBzb3VyY2U6IHN0cmluZzsgdGFyZ2V0OiBzdHJpbmc7IHBvaW50czogbnVtYmVyW11bXTsgZGF0YTogTGlua3MgfTsKCXY6IG51bWJlcjsKfTsKYGBgCgojIyMjIENhcmRpbmFsaXR5LUluY3JlYXNpbmcgdnMgU3RyaWN0LUluY3JlYXNpbmcKClRoZSBvcGVyYXRpb25zIGhlcmUgYXJlIGRvbmUgb24gdGhlIHByaW1lRm9ybSBwcm9wZXJ0eS4KCkNhcmRpbmFsaXR5LWluY3JlYXNpbmcgaGVyZSBtZWFucyB0aGUgdGFyZ2V0IHNldCBpcyBhIHByb3BlciBzdXBlcnNldCBvZiB0aGUgc291cmNlIHNldCB3aGVyZSB0aGUgdGFyZ2V0IHNldCBpcyBncmVhdGVyIGluIGxlbmd0aCBieSAxCgpgYGB0cwogIHsKICAgICJzb3VyY2UiOiAiW1wiMFwiXSIsCiAgICAidGFyZ2V0IjogIltcIjBcIixcIjFcIl0iCiAgfQpgYGAKClN0cmljdC1pbmNyZWFzaW5nIGhlcmUgbWVhbnMgdGhlIHRhcmdldCBzZXQgaXMgYSBwcm9wZXIgc3VwZXJzZXQgb2YgdGhlIHNvdXJjZSBzZXQgd2hlcmUgdGhlIHRhcmdldCBzZXQgaXMgZ3JlYXRlciBpbiBsZW5ndGggYnkgMSBBTkQgdGhlIG5leHQgbnVtYmVyIG9mIHRoZSB0YXJnZXQgc2V0IG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBsYXJnZXN0IG51bWJlciBpbiBzb3VyY2Ugc2V0IChsZXhpY29ncmFwaGljYWxseSBncmVhdGVyKS4KCldoZW4gY29tcGFyaW5nIFtcIjBcIixcIjJcIixcIjNcIixcIjRcIl0gPiBbXCIwXCIsXCIyXCIsXCIzXCJdLCBpdCByZXR1cm5zIHRydWUKV2hpbGUgY29tcGFyaW5nIFtcIjBcIixcIjFcIixcIjNcIixcIjRcIl0gPiBbXCIwXCIsXCIyXCIsXCIzXCJdLCBpdCByZXR1cm5zIGZhbHNlCmBgYHRzCiAgewogICAgInNvdXJjZSI6ICJbXCIwXCIsXCIyXCIsXCIzXCJdIiwKICAgICJ0YXJnZXQiOiAiW1wiMFwiLFwiMlwiLFwiM1wiLFwiNFwiXSIKICB9CmBgYAoKIyMjIyBWZWN0b3ItU2ltaWxhcml0eQoKVGhlIG9wZXJhdGlvbnMgaGVyZSBhcmUgZG9uZSBvbiB0aGUgdmVjIHByb3BlcnR5LgoKVmVjdG9ycyBhcmUgY29tcGFyZWQgdXNpbmcgY29zaW5lIHNpbWlsYXJpdHkgYW5kIGFyZSBsaW5rZWQgdG8gdGhlIHNldCB3aXRoIHRoZSBoaWdoZXN0IGNvc2luZSBzaW1pbGFyaXR5LgoKIyMjIyBPcmlnaW5hbCB2cyBJbnZlcnNpb24KCk9yaWdpbmFsIG1lYW5zIG5vIGludmVyc2lvbnMgKG5vIEIgc2V0cyksIGJ1dCBzZXRzIGFyZSBzdGlsbCBsYWJlbGxlZCAzLTExQSBpbnN0ZWFkIG9mIDMtMTEuCgpJbnZlcnNpb24gbWVhbnMgd2l0aCBpbnZlcnNpb25zIHNvIGl0IGluY2x1ZGVzIGJvdGggQSBhbmQgQiBzZXRzLgoKIyMjIyBNYW51YWwgQ29uc3RydWN0aW9uCgpUaGUganNvbiBmaWxlcyBoZXJlIGNhbiBiZSByZWNyZWF0ZWQgdXNpbmcgdGhlIHNldF9jbGFzc2VzLmpzb24gZmlsZS4KCiMjIyMjIEZldGNoCgpgYGB0cwp0eXBlIExpbmsgPSB7IHNvdXJjZTogc3RyaW5nOyB0YXJnZXQ6IHN0cmluZyB9CmNvbnN0IGxpbmtzID0gcmVmPG51bGwgfCBMaW5rW10+KG51bGwpCgpjb25zdCBmZXRjaERhdGEgPSBhc3luYyAoKSA9PiB7CiAgdHJ5IHsKICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKAogICAgICAnaHR0cHM6Ly9oY2RhOGY4ZHRrLmV4ZWN1dGUtYXBpLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tL3Byb2QvYXBpL2RhdGEvbnVtYmVyLHByaW1lRm9ybSx2ZWMvJywKICAgICAgeyBzaWduYWw6IGFib3J0Q29udHJvbGxlci5zaWduYWwgfQogICAgKQogICAgaWYgKHJlcy5vaykgewogICAgICBjb25zdCBkYXRhOiB7IG51bWJlcjogc3RyaW5nOyBwcmltZUZvcm06IHN0cmluZzsgdmVjOiBzdHJpbmcgfVtdID0gYXdhaXQgcmVzLmpzb24oKQogICAgICBsaW5rcy52YWx1ZSA9IGxpbmtCdWlsZGVyKGRhdGEpCiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsaW5rcycsIEpTT04uc3RyaW5naWZ5KGxpbmtzLnZhbHVlKSkKICAgIH0gZWxzZSB7CiAgICAgIGNvbnNvbGUubG9nKCdOb3QgMjAwJykKICAgIH0KICB9IGNhdGNoIChlcnJvcikgewogICAgaWYgKChlcnJvciBhcyBFcnJvcikubmFtZSA9PSAnQWJvcnRFcnJvcicpIHsKICAgICAgY29uc29sZS5sb2coJ0Fib3J0RXJyb3InLCBlcnJvcikKICAgIH0KICAgIGNvbnNvbGUubG9nKGVycm9yKQogIH0KfQpgYGAKCiMjIyMjIExpbmtzCmBgYHRzCi8vIENhcmRpbmFsaXR5LUluY3JlYXNpbmcKY29uc3QgbGlua0J1aWxkZXIgPSAoCiAgZGF0YTogeyBudW1iZXI6IHN0cmluZzsgcHJpbWVGb3JtOiBzdHJpbmc7IHZlYzogc3RyaW5nIH1bXQopID0+IHsKICBjb25zdCBuZXdEYXRhOiB7IG51bWJlcjogc3RyaW5nOyBwcmltZUZvcm06IHN0cmluZ1tdOyB2ZWM6IHN0cmluZyB9W10gPSBkYXRhLm1hcCgocykgPT4gKHsKICAgIHByaW1lRm9ybTogcy5wcmltZUZvcm0uc2xpY2UoMSwgLTEpLnNwbGl0KCcsJyksCiAgICBudW1iZXI6IHMubnVtYmVyLAogICAgdmVjOiBzLnZlYwogIH0pKQogIGxldCBsaW5rczogTGlua1tdID0gW3sgc291cmNlOiAnWyIiXXwwLTF8MDAwMDAwJywgdGFyZ2V0OiAnWyIwIl18MS0xfDAwMDAwMCcgfV0KCiAgZm9yIChjb25zdCBzIG9mIG5ld0RhdGEpIHsKICAgIGZvciAoY29uc3QgdCBvZiBuZXdEYXRhKSB7CiAgICAgIGlmICgKICAgICAgICBzLnByaW1lRm9ybS5ldmVyeSgoZSkgPT4gdC5wcmltZUZvcm0uaW5jbHVkZXMoZSkpICYmCiAgICAgICAgcy5wcmltZUZvcm0ubGVuZ3RoID09PSB0LnByaW1lRm9ybS5sZW5ndGggLSAxCiAgICAgICkgewogICAgICAgIGxpbmtzLnB1c2goewogICAgICAgICAgc291cmNlOgogICAgICAgICAgICAnWycgKyBzLnByaW1lRm9ybS50b1N0cmluZygpICsgJ10nICsgJ3wnICsgcy5udW1iZXIgKyAnfCcgKyBzLnZlYy5yZXBsYWNlKC9cRC9nLCAnJyksCiAgICAgICAgICB0YXJnZXQ6CiAgICAgICAgICAgICdbJyArIHQucHJpbWVGb3JtLnRvU3RyaW5nKCkgKyAnXScgKyAnfCcgKyB0Lm51bWJlciArICd8JyArIHQudmVjLnJlcGxhY2UoL1xEL2csICcnKQogICAgICAgIH0pCiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIGxpbmtzCn0KCi8vIFN0cmljdGx5LUluY3JlYXNpbmcKY29uc3QgbGlua0J1aWxkZXIgPSAoCiAgZGF0YTogeyBudW1iZXI6IHN0cmluZzsgcHJpbWVGb3JtOiBzdHJpbmc7IHZlYzogc3RyaW5nIH1bXQopID0+IHsKICBjb25zdCBuZXdEYXRhOiB7IG51bWJlcjogc3RyaW5nOyBwcmltZUZvcm06IHN0cmluZ1tdOyB2ZWM6IHN0cmluZyB9W10gPSBkYXRhLm1hcCgocykgPT4gKHsKICAgIHByaW1lRm9ybTogcy5wcmltZUZvcm0uc2xpY2UoMSwgLTEpLnNwbGl0KCcsJyksCiAgICBudW1iZXI6IHMubnVtYmVyLAogICAgdmVjOiBzLnZlYwogIH0pKQogIGxldCBsaW5rczogTGlua1tdID0gW3sgc291cmNlOiAnWyIiXXwwLTF8MDAwMDAwJywgdGFyZ2V0OiAnWyIwIl18MS0xfDAwMDAwMCcgfV0KCiAgZm9yIChjb25zdCBzIG9mIG5ld0RhdGEpIHsKICAgIGZvciAoY29uc3QgdCBvZiBuZXdEYXRhKSB7CiAgICAgIGlmICgKICAgICAgICBzLnByaW1lRm9ybS5ldmVyeSgoZSkgPT4gdC5wcmltZUZvcm0uaW5jbHVkZXMoZSkpICYmCiAgICAgICAgcy5wcmltZUZvcm0ubGVuZ3RoID09PSB0LnByaW1lRm9ybS5sZW5ndGggLSAxICYmCiAgICAgICAgdC5wcmltZUZvcm0gPiBzLnByaW1lRm9ybQogICAgICApIHsKICAgICAgICBsaW5rcy5wdXNoKHsKICAgICAgICAgIHNvdXJjZToKICAgICAgICAgICAgJ1snICsgcy5wcmltZUZvcm0udG9TdHJpbmcoKSArICddJyArICd8JyArIHMubnVtYmVyICsgJ3wnICsgcy52ZWMucmVwbGFjZSgvXEQvZywgJycpLAogICAgICAgICAgdGFyZ2V0OgogICAgICAgICAgICAnWycgKyB0LnByaW1lRm9ybS50b1N0cmluZygpICsgJ10nICsgJ3wnICsgdC5udW1iZXIgKyAnfCcgKyB0LnZlYy5yZXBsYWNlKC9cRC9nLCAnJykKICAgICAgICB9KQogICAgICB9CiAgICB9CiAgfQogIHJldHVybiBsaW5rcwp9CgovLyBWZWN0b3ItU2ltaWxhcml0eQpjb25zdCBsaW5rQnVpbGRlciA9ICgKICBkYXRhOiB7IG51bWJlcjogc3RyaW5nOyBwcmltZUZvcm06IHN0cmluZzsgdmVjOiBzdHJpbmcgfVtdCikgPT4gewogIGNvbnN0IG5ld0RhdGE6IHsgbnVtYmVyOiBzdHJpbmc7IHByaW1lRm9ybTogc3RyaW5nW107IHZlYzogc3RyaW5nIH1bXSA9IGRhdGEubWFwKChzKSA9PiAoewogICAgcHJpbWVGb3JtOiBzLnByaW1lRm9ybS5zbGljZSgxLCAtMSkuc3BsaXQoJywnKSwKICAgIG51bWJlcjogcy5udW1iZXIsCiAgICB2ZWM6IHMudmVjCiAgfSkpCiAgbGV0IGxpbmtzOiBMaW5rW10gPSBbeyBzb3VyY2U6ICdbIiJdfDAtMXwwMDAwMDAnLCB0YXJnZXQ6ICdbIjAiXXwxLTF8MDAwMDAwJyB9XQoKICBmb3IgKGNvbnN0IFtpLCBzXSBvZiBuZXdEYXRhLmVudHJpZXMoKSkgewogICAgbGV0IG1heCA9IDAKICAgIGxldCBuZXdTID0gbnVsbAogICAgbGV0IG5ld1QgPSBudWxsCiAgICBmb3IgKGNvbnN0IFtqLCB0XSBvZiBuZXdEYXRhLmVudHJpZXMoKSkgewogICAgICBjb25zdCBzVmVjID0gcy52ZWMucmVwbGFjZSgvWzw+XS9nLCAnJykucmVwbGFjZSgvQy9nLCAnMTInKS5yZXBsYWNlKC9UL2csICcxMCcpLnNwbGl0KCcsJykKICAgICAgY29uc3QgdFZlYyA9IHQudmVjLnJlcGxhY2UoL1s8Pl0vZywgJycpLnJlcGxhY2UoL0MvZywgJzEyJykucmVwbGFjZSgvVC9nLCAnMTAnKS5zcGxpdCgnLCcpCgogICAgICBjb25zdCBkb3RQcm9kID0gdFZlYwogICAgICAgIC5tYXAoKGEsIGkpID0+IHBhcnNlSW50KGEpICogcGFyc2VJbnQoc1ZlY1tpXSkpCiAgICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLCAwKQogICAgICBjb25zdCBjb3NTaW0gPQogICAgICAgIGRvdFByb2QgLwogICAgICAgIChNYXRoLnNxcnQoc1ZlYy5yZWR1Y2UoKHN1bSwgdmFsKSA9PiBzdW0gKyBwYXJzZUludCh2YWwpICogcGFyc2VJbnQodmFsKSwgMCkpICoKICAgICAgICAgIE1hdGguc3FydCh0VmVjLnJlZHVjZSgoc3VtLCB2YWwpID0+IHN1bSArIHBhcnNlSW50KHZhbCkgKiBwYXJzZUludCh2YWwpLCAwKSkpCgogICAgICBpZiAoaSA8IGogJiYgY29zU2ltID4gbWF4KSB7CiAgICAgICAgbWF4ID0gY29zU2ltCiAgICAgICAgbmV3UyA9IHMKICAgICAgICBuZXdUID0gdAogICAgICB9CiAgICB9CiAgICBpZiAobmV3UyAmJiBuZXdUKSB7CiAgICAgIGxpbmtzLnB1c2goewogICAgICAgIHNvdXJjZToKICAgICAgICAgICdbJyArCiAgICAgICAgICBuZXdTLnByaW1lRm9ybS50b1N0cmluZygpICsKICAgICAgICAgICddJyArCiAgICAgICAgICAnfCcgKwogICAgICAgICAgbmV3Uy5udW1iZXIgKwogICAgICAgICAgJ3wnICsKICAgICAgICAgIG5ld1MudmVjLnJlcGxhY2UoLyg/IVtURUNdKVxEL2csICcnKSwKICAgICAgICB0YXJnZXQ6CiAgICAgICAgICAnWycgKwogICAgICAgICAgbmV3VC5wcmltZUZvcm0udG9TdHJpbmcoKSArCiAgICAgICAgICAnXScgKwogICAgICAgICAgJ3wnICsKICAgICAgICAgIG5ld1QubnVtYmVyICsKICAgICAgICAgICd8JyArCiAgICAgICAgICBuZXdULnZlYy5yZXBsYWNlKC8oPyFbVEVDXSlcRC9nLCAnJykKICAgICAgfSkKICAgIH0KICB9CiAgcmV0dXJuIGxpbmtzCn0KCi8vIEZvciBvcmlnaW5hbCBkYWdzIGFkZCB0aGlzIHRvIHRoZSBjb25kaXRpb24KIXMubnVtYmVyLmVuZHNXaXRoKCdCJykgJiYKIXQubnVtYmVyLmVuZHNXaXRoKCdCJykKYGBgCgojIyMjIyBEYWcKCmBgYHRzCmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJwppbXBvcnQgKiBmcm9tICdkMy1kYWcnCmNvbnN0IGJ1aWxkZXIgPSBncmFwaENvbm5lY3QoKQogICAgLnNvdXJjZUlkKCh7IHNvdXJjZSB9OiB7IHNvdXJjZTogc3RyaW5nIH0pID0+IHNvdXJjZSkKICAgIC50YXJnZXRJZCgoeyB0YXJnZXQgfTogeyB0YXJnZXQ6IHN0cmluZyB9KSA9PiB0YXJnZXQpCmNvbnN0IGRhZ0J1aWxkID0gYnVpbGRlcihsaW5rcy52YWx1ZSkKY29uc3QgbGF5b3V0ID0gc3VnaXlhbWEoKQogICAgLmxheWVyaW5nKGxheWVyaW5nU2ltcGxleCgpKQogICAgLmRlY3Jvc3MoZGVjcm9zc1R3b0xheWVyKCkub3JkZXIodHdvbGF5ZXJHcmVlZHkoKS5iYXNlKHR3b2xheWVyQWdnKCkpKSkKICAgIC5jb29yZChjb29yZFNpbXBsZXgoKSkKICAgIC5ub2RlU2l6ZShbMiAqIE5PREVfUkFESVVTLCAyICogTk9ERV9SQURJVVNdKQogICAgLmdhcChbTk9ERV9SQURJVVMsIE5PREVfUkFESVVTXSkKICAgIC50d2Vha3MoW3R3ZWFrU2hhcGUoWzIgKiBOT0RFX1JBRElVUywgMiAqIE5PREVfUkFESVVTXSwgc2hhcGVFbGxpcHNlKV0pCgpjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGxheW91dChkYWdCdWlsZCBhcyBhbnkpCgpKU09OLnN0cmluZ2lmeShkYWdCdWlsZCkgLy8gTk9URTogSSBhZGRlZCBzaXplIHByb3BlcnR5IHdpdGggd2lkdGggYW5kIGhlaWdodCBkdXJpbmcgcG9zdC1wcm9jZXNzaW5nLCBpdCBpcyBub3QgYSBkZWZhdWx0IHByb3BlcnR5IHJldHVybmVkIGluIHRoZSBKU09OIGJ5IGQzZGFnCmBgYAoKIyMjIyBIb3cgdG8gVXNlIEpTT04gaW4gRDNEYWcKCmBgYHRzCnR5cGUgTGluayA9IHsgc291cmNlOiBzdHJpbmc7IHRhcmdldDogc3RyaW5nIH0KdHlwZSBEYWdKU09OT2JqZWN0ID0gewoJc2l6ZTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9OwoJbm9kZXM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IGRhdGE6IHN0cmluZyB9W107CglsaW5rczogeyBzb3VyY2U6IHN0cmluZzsgdGFyZ2V0OiBzdHJpbmc7IHBvaW50czogbnVtYmVyW11bXTsgZGF0YTogTGlua1tdIH07Cgl2OiBudW1iZXI7Cn07Cgpjb25zdCByZXMgPSBhd2FpdCBmZXRjaCgnLi4uL2FwaS9kYXRhL2QzL3N0cmljdGRhZ3ByaW1lZm9ybS8nKQpjb25zdCBkYXRhOiBEYWdKU09OT2JqZWN0ID0gYXdhaXQgcmVzLmpzb24oKSAKY29uc3Qgc2l6ZToge3dpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyfSA9IGRhdGEuc2l6ZSAvLyB1c2UgdG8gYWRqdXN0IHRoZSBzdGFydGluZyBwb3NpdGlvbiBvZiB0aGUgZ3JhcGggb3Igc2V0IHRoZSBncmFwaCBzaXplCgpjb25zdCBidWlsZGVyID0gZ3JhcGhKc29uKCkKICAgICAgLm5vZGVEYXR1bSgoZGF0YSkgPT4gZGF0YSBhcyBzdHJpbmcpCiAgICAgIC5saW5rRGF0dW0oKGRhdGEpID0+IGRhdGEgYXMgTGluaykKY29uc3QgZGFnID0gYnVpbGRlcihKU09OLnBhcnNlKGRhdGEpKQovLyBwZXJmb3JtIGQzIHZpc3VhbGl6YXRpb25zIHVzaW5nIGRhZy5ub2RlcygpIGFuZCBkYWcubGlua3MoKQpgYGAKCiMjIyMgRW5kcG9pbnRzCgpWYWxpZCBxdWVyaWVzIGFyZToKICAtIGNhcmRpbmFsaW52ZXJzaW9uZGFnCiAgLSBjYXJkaW5hbGludmVyc2lvbmxpbmtzCiAgLSBjYXJkaW5hbG9yaWdpbmFsZGFnCiAgLSBjYXJkaW5hbG9yaWdpbmFsbGlua3MKICAtIHN0cmljdGludmVyc2lvbmRhZwogIC0gc3RyaWN0aW52ZXJzaW9ubGlua3MKICAtIHN0cmljdG9yaWdpbmFsZGFnCiAgLSBzdHJpY3RvcmlnaW5hbGxpbmtzCiAgLSB2ZWN0b3JpbnZlcnNpb25kYWcKICAtIHZlY3RvcmludmVyc2lvbmxpbmtzCiAgLSB2ZWN0b3JvcmlnaW5hbGRhZwogIC0gdmVjdG9yb3JpZ2luYWxsaW5rcwoKIyMgQVBJIERldmVsb3BtZW50CgpSdW4gYGBgbnBtIGlgYGAKCiMjIyBBZGQgLmVudiBGaWxlCgpgYGBlbnYKTk9ERV9FTlY9ZGV2ZWxvcG1lbnQKUE9SVD1bY2hvb3NlIGFueSBwb3J0XQpgYGAKCiMjIFN0YXIgVGhpcyBSZXBvCgpJZiB5b3UgbGlrZSB0aGlzIEFQSSwgcGxlYXNlIGdpdmUgaXQgYSBzdGFyISBfXH4gQ3JlYXRlZCBieSBLaGFuZyBUcmFuXwo= readmeEtag: '"5977867a76a2944632a5773c48c1a067fc0336a1"' readmeLastModified: Mon, 20 Nov 2023 05:04:25 GMT repositoryId: 676712807 description: >- A music theory API that provides a way to query set classes using Express and TypeScript, Tested with Mocha-Chai created: '2023-08-09T20:46:55Z' updated: '2023-09-22T21:00:34Z' language: TypeScript archived: false stars: 3 watchers: 1 forks: 0 owner: NinjaNas logo: https://avatars.githubusercontent.com/u/54213302?v=4 license: MIT repoEtag: '"59b4e88ba3489801cba75d58087d47b474d65b203824992706beefc20bc73f6b"' repoLastModified: Fri, 22 Sep 2023 21:00:34 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/jorgebsa/spring-demo v3: true repositoryMetadata: base64Readme: >- IyMgU3ByaW5nIGRlbW8gbWljcm9zZXJ2aWNlClshW0dpdEh1YiBXb3JrZmxvdyBTdGF0dXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3dvcmtmbG93L3N0YXR1cy9qb3JnZWJzYS9zcHJpbmctZGVtby9KYXZhJTIwQ0klMjB3aXRoJTIwR3JhZGxlP3N0eWxlPWZvci10aGUtYmFkZ2UpXShodHRwczovL2dpdGh1Yi5jb20vam9yZ2Vic2Evc3ByaW5nLWRlbW8vYWN0aW9ucy93b3JrZmxvd3MvZ3JhZGxlLnltbCkgClshW0NvZGVjb3ZdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY29kZWNvdi9jL2dpdGh1Yi9qb3JnZWJzYS9zcHJpbmctZGVtbz9zdHlsZT1mb3ItdGhlLWJhZGdlJnRva2VuPTU1RjNGWURWVU4pXShodHRwczovL2NvZGVjb3YuaW8vZ2gvam9yZ2Vic2Evc3ByaW5nLWRlbW8pIApbIVtHaXRIdWIgbGFzdCBjb21taXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhc3QtY29tbWl0L2pvcmdlYnNhL3NwcmluZy1kZW1vP3N0eWxlPWZvci10aGUtYmFkZ2UpXShodHRwczovL2dpdGh1Yi5jb20vam9yZ2Vic2Evc3ByaW5nLWRlbW8vY29tbWl0cy9tYWluKSAKClshW0phdmEgdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9KYXZhJTIwdmVyc2lvbi0xNy1icmlnaHRncmVlbj9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9vcGVuamRrLmphdmEubmV0L3Byb2plY3RzL2pkay8xNy8pClshW1NwcmluZyBCb290IHZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU3ByaW5nJTIwQm9vdCUyMHZlcnNpb24tMi42LjItYnJpZ2h0Z3JlZW4/c3R5bGU9Zm9yLXRoZS1iYWRnZSldKGh0dHBzOi8vZG9jcy5zcHJpbmcuaW8vc3ByaW5nLWJvb3QvZG9jcy8yLjYuMi9yZWZlcmVuY2UvaHRtbC9nZXR0aW5nLXN0YXJ0ZWQuaHRtbCNnZXR0aW5nLXN0YXJ0ZWQpClshW0dyYWRsZSB3cmFwcGVyIHZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvR3JhZGxlJTIwdmVyc2lvbi03LjMuMy1icmlnaHRncmVlbj9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9kb2NzLmdyYWRsZS5vcmcvNy4zLjMvcmVsZWFzZS1ub3Rlcy5odG1sKQpbIVtNb25nb0RCIGNvbnRhaW5lciB2ZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL01vbmdvREIlMjB2ZXJzaW9uLTUuMC40LWJyaWdodGdyZWVuP3N0eWxlPWZvci10aGUtYmFkZ2UpXShodHRwczovL2RvY3MubW9uZ29kYi5jb20vbWFudWFsL3JlbGVhc2Utbm90ZXMvNS4wLWNoYW5nZWxvZy8jc3RkLWxhYmVsLTUuMC40LWNoYW5nZWxvZykKCiMjIFRhYmxlIG9mIGNvbnRlbnRzCgoxLiBbSW50cm9kdWN0aW9uXSgjaW50cm9kdWN0aW9uKQoyLiBbQWJvdXQgdGhlIEFQSV0oI2Fib3V0LXRoZS1hcGkpCjMuIFtMYW5ndWFnZSBWZXJzaW9uXSgjbGFuZ3VhZ2UtdmVyc2lvbikKICAgMS4gW0pESyAxN10oI2pkay0xNykKICAgMi4gW01hbmFnaW5nIEpES3Mgd2l0aCBTREtNQU4hXSgjbWFuYWdpbmctamRrcy13aXRoLXNka21hbikKICAgMy4gW0F2YWlsYWJsZSBUb29sY2hhaW5zXSgjYXZhaWxhYmxlLXRvb2xjaGFpbnMpCjQuIFtIb3cgdG8gQnVpbGRdKCNob3ctdG8tYnVpbGQpCjUuIFtUZXN0aW5nXSgjdGVzdGluZykKICAgMS4gW1doeSBKVW5pdCA1P10oI3doeS1qdW5pdC01KQogICAyLiBbV2h5IEFzc2VydEo/XSgjd2h5LWFzc2VydGopCiAgIDMuIFtXaHkgVGVzdGNvbnRhaW5lcnM/XSgjd2h5LXRlc3Rjb250YWluZXJzKQogICA0LiBbV2hhdCBpcyBKYUNvQ28/XSgjd2hhdC1pcy1qYWNvY28pCiAgICAgIDEuIFtKYUNvQ28gbG9nZ2luZ10oI2phY29jby1sb2dnaW5nKQogICA1LiBbTXV0YXRpb24gVGVzdGluZ10oI211dGF0aW9uLXRlc3RpbmcpCiAgIDYuIFtGdXR1cmUtcHJvb2ZpbmddKCNmdXR1cmUtcHJvb2ZpbmcpCjYuIFtSZXF1aXJlZCBzZXJ2aWNlc10oI3JlcXVpcmVkLXNlcnZpY2VzKQogICAxLiBbRG9ja2VyIENvbXBvc2VdKCNkb2NrZXItY29tcG9zZSkKICAgMi4gW0tleWNsb2FrXSgja2V5Y2xvYWspCjcuIFtSdW5uaW5nIHRoZSBtaWNyb3NlcnZpY2VdKCNydW5uaW5nLXRoZS1taWNyb3NlcnZpY2UpCiAgIDEuIFtSdW5uaW5nIHRoZSBhcHBsaWNhdGlvbiB3aXRoIEdyYWRsZV0oI3J1bm5pbmctdGhlLWFwcGxpY2F0aW9uLXdpdGgtZ3JhZGxlKQogICAyLiBbQ29uc3VtaW5nIHRoZSBBUEldKCNjb25zdW1pbmctdGhlLWFwaSkKOC4gW0NvbnRyaWJ1dGluZ10oI2NvbnRyaWJ1dGluZykKCiMjIEludHJvZHVjdGlvbgoKVGhpcyBwcm9qZWN0IGlzIGFib3V0IHNob3djYXNpbmcgc29tZSBvZiB0aGUgYmVzdCBwcmFjdGljZXMgYW5kIHRlY2hub2xvZ2llcyB0aGF0IGNhbiBiZSAKdXNlZCB0byBlbnN1cmUgY29kZSBxdWFsaXR5IHdoaWxlIGRldmVsb3BpbmcgYSBtaWNyb3NlcnZpY2UgaW4gSmF2YSB3aXRoIFNwcmluZyBCb290LiAKVGhlcmVmb3JlLCB0aGUgZm9jdXMgaXNuJ3Qgb24gY3JlYXRpbmcgYSBjb21wbGV4IEFQSSBidXQgcmF0aGVyIG9uIGhvdyB0byBhY2hpZXZlIGEgaGlnaCAKY29kZSBxdWFsaXR5IHN0YW5kYXJkLCB1c2luZyBhIHZhcmlldHkgb2YgbWF0dXJlIGFuZCBmcmVlIGxpYnJhcmllcyBhbmQgdGVjaG5vbG9naWVzLgoKVGhlIHByb2plY3QgaGFzIGJlZW4gaW1wbGVtZW50ZWQgd2l0aDoKKiBMYW5ndWFnZTogSmF2YSAxNwoqIEZyYW1ld29yazogU3ByaW5nIEJvb3QgCiogRGF0YWJhc2U6IE1vbmdvREIKKiBCdWlsZCB0b29sOiBHcmFkbGUKKiBTZWN1cml0eTogU3ByaW5nIFNlY3VyaXR5ICsgS2V5Y2xvYWsKClJlbGV2YW50IHRlc3RpbmcgaW5mb3JtYXRpb24gYW5kIGxpYnJhcmllcyB3aWxsIGJlIGRlc2NyaWJlZCBpbiB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbgpvZiB0aGlzIGRvY3VtZW50LgoKSWYgeW91IGFyZSBub3QgZmFtaWxpYXIgd2l0aCBHcmFkbGUsIHRoZSBtb3N0IHJlbGV2YW50IGNvbW1hbmRzIGFuZCB0YXNrcyB3aWxsIGJlIGV4cGxhaW5lZAppbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zLiBJZiB5b3UgbmVlZCBmdXJ0aGVyIGhlbHAsIGNoZWNrIGl0cyBbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2NzLmdyYWRsZS5vcmcvNy4zLjMvdXNlcmd1aWRlL3VzZXJndWlkZS5odG1sKQpvciBleGVjdXRlIHRoZSBoZWxwIHRhc2s6CgpgYGBzaGVsbAouL2dyYWRsZXcgaGVscApgYGAKCiMjIEFib3V0IHRoZSBBUEkKClRoZSBBUEkgaXMgcmF0aGVyIHNpbXBsZTogdGhpcyBtaWNyb3NlcnZpY2UgYWxsb3dzIHVzZXJzIHRvIGtlZXAgdHJhY2sgb2YgdGhlaXIgIm5vdGVzIiwgCmFuZCBvZmZlcnMgZW5kcG9pbnRzIGZvciB0aGUgYmFzaWMgW0NSVURdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NyZWF0ZSxfcmVhZCxfdXBkYXRlX2FuZF9kZWxldGUpIApvcGVyYXRpb25zLiAKCkVuZHBvaW50cyBhcmUgc2VjdXJlZCBieSBPQXV0aDIsIHNvIGVhY2ggcmVxdWVzdCBtdXN0IGluY2x1ZGUgYSB2YWxpZCBhY2Nlc3MgdG9rZW4gdG8gYmUKcHJvY2Vzc2VkLiBUaGVzZSB0b2tlbnMgYXJlIGlzc3VlZCBieSBLZXljbG9haywgYW5kIHRoZSBpbnN0cnVjdGlvbnMgb24gaG93IHRvIG9idGFpbiB0aGVtCndpbGwgYmUgZGV0YWlsZWQgaW4gYSBmb2xsb3dpbmcgc2VjdGlvbiBvZiB0aGlzIGRvY3VtZW50LgoKTm8gZnJvbnRlbmQgYXBwbGljYXRpb24gd2FzIGRldmVsb3BlZCwgYnV0IGEgU3dhZ2dlciBVSSBpcyBhdmFpbGFibGUgaW4gb3JkZXIgdG8gZXhwbG9yZQphbmQgY29uc3VtZSB0aGUgQVBJLgoKIyMgTGFuZ3VhZ2UgVmVyc2lvbgoKR3JhZGxlJ3MgW3Rvb2xjaGFpbl0oaHR0cHM6Ly9kb2NzLmdyYWRsZS5vcmcvNy4zLjMvdXNlcmd1aWRlL3Rvb2xjaGFpbnMuaHRtbCkgY29uY2VwdCBpcyAKdXNlZCBpbiBvcmRlciB0byBkZWZpbmUgd2hpY2ggamF2YSB2ZXJzaW9uIHdpbGwgYmUgdXNlZCB0byBidWlsZCB0aGUgcHJvamVjdC4gVGhpcyBpcyAKZGVjbGFyZWQgaW4gdGhlIFtidWlsZC5ncmFkbGUua3RzXShidWlsZC5ncmFkbGUua3RzKSBmaWxlOgoKYGBgCmphdmEgewogICAgdG9vbGNoYWluIHsKICAgICAgICBsYW5ndWFnZVZlcnNpb24uc2V0KEphdmFMYW5ndWFnZVZlcnNpb24ub2YoMTcpKQogICAgfQp9CmBgYAoKIyMjIEpESyAxNwoKU2luY2UgdGhlIHByb2plY3QgaXMgaW1wbGVtZW50ZWQgd2l0aCBKYXZhIDE3LCBhIEpESyBmb3IgSmF2YSAxNyBtdXN0IGJlIGF2YWlsYWJsZSBvbiB5b3VyIAptYWNoaW5lIGluIG9yZGVyIHRvIGJ1aWxkIHRoaXMgcHJvamVjdC4KCkRvbid0IHdvcnJ5ISBJZiBhIG1hdGNoaW5nIEpESyBpcyBub3QgZm91bmQgYnkgR3JhZGxlIG9uIHlvdXIgbWFjaGluZSwgaXQgd2lsbCBhdXRvbWF0aWNhbGx5CmRvd25sb2FkIGl0IGJlZm9yZSBidWlsZGluZyB0aGUgcHJvamVjdC4gSWYgeW91IHdhbnQgR3JhZGxlIHRvIGRvd25sb2FkIGEgZGlzdHJpYnV0aW9uIEpESyAKZnJvbSBhIHNwZWNpZmljIHZlbmRvciwgeW91IGNhbiBkbyBzbyBieSBzZXR0aW5nIHRoZSBbdmVuZG9yIHByb3BlcnR5XShodHRwczovL2RvY3MuZ3JhZGxlLm9yZy83LjMuMy91c2VyZ3VpZGUvdG9vbGNoYWlucy5odG1sI3NlYzp2ZW5kb3JzKQppbiB0aGUgW2J1aWxkLmdyYWRsZS5rdHNdKGJ1aWxkLmdyYWRsZS5rdHMpIGZpbGU6CgpgYGAKamF2YSB7CiAgICB0b29sY2hhaW4gewogICAgICAgIGxhbmd1YWdlVmVyc2lvbi5zZXQoSmF2YUxhbmd1YWdlVmVyc2lvbi5vZigxNykpCiAgICAgICAgdmVuZG9yLnNldChKdm1WZW5kb3JTcGVjLkdSQUFMX1ZNKQogICAgfQp9CmBgYAoKIyMjIE1hbmFnaW5nIEpES3Mgd2l0aCBTREtNQU4hCgpNb3N0IGRldmVsb3BlcnMgd2FudCB0byBjb250cm9sIHdoaWNoIEpES3MgYXJlIGluc3RhbGxlZCBvbiB0aGVpciBtYWNoaW5lcy4gSWYgeW91IHdvdWxkCmxpa2UgdG8gbWFuYWdlIEpES3MgYnkgeW91cnNlbGYsIHlvdSBjYW4gdXNlIHRvb2xzIHN1Y2ggYXMgW1NES01BTiFdKGh0dHBzOi8vc2RrbWFuLmlvLykgCnRvIHNpbXBsaWZ5IHRoYXQgdGFzay4gVGhpcyBpcyBub3QgbWVhbnQgdG8gY29tcGFyZSBTREtNQU4hIHdpdGggYW55IG90aGVyIHRvb2wsIGJ1dCByYXRoZXIKZXhwbGFpbiBob3cgeW91IGNhbiBlYXNpbHkgbWFuYWdlIFNES3Mgd2l0aCBhIG1hdHVyZSB0b29sLgoKVGhlIFtpbnN0YWxsYXRpb25dKGh0dHBzOi8vc2RrbWFuLmlvL2luc3RhbGwpIGlzIHZlcnkgc3RyYWlnaHRmb3J3YXJkLCBhbmQgeW91IGNhbiBlYXNpbHkKaW5zdGFsbCBhbnkgSkRLIHdpdGggYSBzaW5nbGUgY29tbWFuZC4gRm9yIGV4YW1wbGUsIGluIG9yZGVyIHRvIGluc3RhbGwgR3JhYWxWTSAyMS4zLjAgCndpdGggSmF2YSAxNyB5b3UgY2FuIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgc2hlbGwKc2RrIGluc3RhbGwgamF2YSAyMS4zLjAucjE3LWdybCAKYGBgCgpBZnRlciBpbnN0YWxsaW5nIGl0LCBTREtNQU4hIHdpbGwgYXNrIGlmIHlvdSB3YW50IHRvIHNldCBpdCBhcyB0aGUgZGVmYXVsdCBKREsgb24geW91ciAKbWFjaGluZS4gSWYgeW91IGNob3NlIHRvIG5vdCBzZXQgaXQgYXMgdGhlIGRlZmF1bHQgSkRLLCB5b3UgY2FuIGxhdGVyIHNldCBpdCBhcyB0aGUgCmFjdGl2ZSBKREsgaW4geW91ciB0ZXJtaW5hbCB3aW5kb3cgYnkgcnVubmluZyB0aGUgYHVzZWAgY29tbWFuZDoKCmBgYHNoZWxsCnNkayB1c2UgamF2YSAyMS4zLjAucjE3LWdybApgYGAKCk1vcmUgaW5mbyBvbiBTREtNQU4gdXNhZ2UgY2FuIGJlIGZvdW5kIFtoZXJlXShodHRwczovL3Nka21hbi5pby91c2FnZSkKCiMjIyBBdmFpbGFibGUgVG9vbGNoYWlucwoKSW4gb3JkZXIgdG8gY2hlY2sgd2hpY2ggdG9vbGNoYWlucyBhcmUgYXZhaWxhYmxlIHRvIEdyYWRsZSwgeW91IGNhbiBleGVjdXRlIHRoZSAKYGphdmFUb29sY2hhaW5zYCB0YXNrOgoKYGBgc2hlbGwKLi9ncmFkbGV3IGphdmFUb29sY2hhaW5zCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgdGhlIG91dHB1dCB5b3Ugc2hvdWxkIGV4cGVjdCBmcm9tIHRoZSB0YXNrIHdoZW4gbXVsdGlwbGUgCnRvb2xjaGFpbnMgYXJlIGF2YWlsYWJsZToKCmBgYAo+IFRhc2sgOmphdmFUb29sY2hhaW5zCgogKyBHcmFhbFZNIENvbW11bml0eSBKREsgMTEuMC4xMys3LWp2bWNpLTIxLjMtYjA1CiAgICAgfCBMb2NhdGlvbjogICAgICAgICAgIC9Vc2Vycy91c2VybmFtZS8uc2RrbWFuL2NhbmRpZGF0ZXMvamF2YS8yMS4zLjAucjExLWdybAogICAgIHwgTGFuZ3VhZ2UgVmVyc2lvbjogICAxMQogICAgIHwgVmVuZG9yOiAgICAgICAgICAgICBHcmFhbFZNIENvbW11bml0eQogICAgIHwgSXMgSkRLOiAgICAgICAgICAgICB0cnVlCiAgICAgfCBEZXRlY3RlZCBieTogICAgICAgIEN1cnJlbnQgSlZNCgogKyBHcmFhbFZNIENvbW11bml0eSBKREsgMTcuMC4xKzEyLWp2bWNpLTIxLjMtYjA1CiAgICAgfCBMb2NhdGlvbjogICAgICAgICAgIC9Vc2Vycy91c2VybmFtZS8uc2RrbWFuL2NhbmRpZGF0ZXMvamF2YS8yMS4zLjAucjE3LWdybAogICAgIHwgTGFuZ3VhZ2UgVmVyc2lvbjogICAxNwogICAgIHwgVmVuZG9yOiAgICAgICAgICAgICBHcmFhbFZNIENvbW11bml0eQogICAgIHwgSXMgSkRLOiAgICAgICAgICAgICB0cnVlCiAgICAgfCBEZXRlY3RlZCBieTogICAgICAgIFNES01BTiEKCiArIE9wZW5KREsgMTgtZWErMjQtMTYwOAogICAgIHwgTG9jYXRpb246ICAgICAgICAgICAvVXNlcnMvdXNlcm5hbWUvLnNka21hbi9jYW5kaWRhdGVzL2phdmEvMTguZWEuMjQtb3BlbgogICAgIHwgTGFuZ3VhZ2UgVmVyc2lvbjogICAxOAogICAgIHwgVmVuZG9yOiAgICAgICAgICAgICBPcmFjbGUKICAgICB8IElzIEpESzogICAgICAgICAgICAgdHJ1ZQogICAgIHwgRGV0ZWN0ZWQgYnk6ICAgICAgICBTREtNQU4hCgogKyBPcmFjbGUgSkRLIDEuOC4wXzE2Mi1iMTIKICAgICB8IExvY2F0aW9uOiAgICAgICAgICAgL0xpYnJhcnkvSmF2YS9KYXZhVmlydHVhbE1hY2hpbmVzL2pkazEuOC4wXzE2Mi5qZGsvQ29udGVudHMvSG9tZQogICAgIHwgTGFuZ3VhZ2UgVmVyc2lvbjogICA4CiAgICAgfCBWZW5kb3I6ICAgICAgICAgICAgIE9yYWNsZQogICAgIHwgSXMgSkRLOiAgICAgICAgICAgICB0cnVlCiAgICAgfCBEZXRlY3RlZCBieTogICAgICAgIG1hY09TIGphdmFfaG9tZQpgYGAKCiMjIEhvdyB0byBCdWlsZAoKR3JhZGxlIHdhcyBjaG9zZW4gYXMgdGhlIGJ1aWxkIHRvb2wgZm9yIHRoaXMgcHJvamVjdCBhbmQgaXRzIHdyYXBwZXIgaGFzIGJlZW4gaW5jbHVkZWQgCmluIHRoZSByZXBvc2l0b3J5LiBUaGVyZSBhcmUgYXQgbGVhc3QgdHdvIHZlcnkgZ29vZCByZWFzb25zIHRvIGFkdm9jYXRlIGZvciB3cmFwcGVyCmluY2x1c2lvbiBhbmQgdXNhZ2U6CgoqIFByb2plY3QgY2FuIGJlIGltbWVkaWF0ZWx5IGJ1aWx0IGFmdGVyIGNsb25pbmcgaXMgZmluaXNoZWQsIHRoZXJlJ3Mgbm8gbmVlZCBmb3IgCnRoZSBkZXZlbG9wZXIgdG8gaW5zdGFsbCBHcmFkbGUgYmVmb3JlaGFuZC4KKiBUaGUgd3JhcHBlciB3aWxsIGFsd2F5cyBtYXRjaCB0aGUgZXhwZWN0ZWQgR3JhZGxlIHZlcnNpb24gdGhhdCBpcyBtZWFudCB0byBiZSB1c2VkCndoZW4gYnVpbGRpbmcgdGhlIHByb2plY3QuIAoKSW4gb3JkZXIgdG8gYnVpbGQgdGhlIHByb2plY3QsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgc2hlbGwKLi9ncmFkbGV3IGJ1aWxkCmBgYAoKUGxlYXNlIG5vdGUgdGhhdCB0aGUgYGJ1aWxkYCB0YXNrIHdpbGwgYWxzbyBleGVjdXRlIHRoZSB0ZXN0cy4gSWYgeW91IHNpbXBseSB3YW50IHRvIApjb21waWxlIHRoZSBzb3VyY2UgY29kZSBhbmQgcmVzb3VyY2VzLCB5b3UgY2FuIGRvIHNvIGJ5IGV4ZWN1dGluZyB0aGUgYGFzc2VtYmxlYCB0YXNrOgoKYGBgc2hlbGwKLi9ncmFkbGV3IGFzc2VtYmxlCmBgYAoKIyMgVGVzdGluZwoKVGVzdGluZyBpcyBjcnVjaWFsIHRvIGVuc3VyZSBjb2RlIGlzIHJlbGlhYmxlLCBtYWludGFpbmFibGUsIHJldXNhYmxlLCBleHRlbnNpYmxlLiBBbGwKb2YgdGhlc2UgZmFjdG9ycyBpbmZsdWVuY2UgdGhlIGNvZGUncyBxdWFsaXR5IHN0YW5kYXJkLgoKTWFueSBsaWJyYXJpZXMgY2FuIGJlIHVzZWQgdG8gaW1wcm92ZSB0aGUgdGVzdGluZyBleHBlcmllbmNlLiBJbiB0aGlzIHByb2plY3Qgc29tZSBncmVhdApsaWJyYXJpZXMgYW5kIHRvb2xzIGFyZSBzaG93Y2FzZWQsIHN1Y2ggYXM6CgoqIFtKVW5pdCA1XShodHRwczovL2p1bml0Lm9yZy9qdW5pdDUvKSB0byBjcmVhdGUgYW5kIHJ1biBvdXIgdGVzdHMKKiBbQXNzZXJ0Sl0oaHR0cHM6Ly9qb2VsLWNvc3RpZ2xpb2xhLmdpdGh1Yi5pby9hc3NlcnRqLykgdG8gd3JpdGUgYW1hemluZyBhc3NlcnRpb25zIGluIApvdXIgdGVzdCBjYXNlcwoqIFtUZXN0Y29udGFpbmVyc10oaHR0cHM6Ly93d3cudGVzdGNvbnRhaW5lcnMub3JnLykgdG8gcmVwcm9kdWNlIGEgcmVhbCBlbnZpcm9ubWVudCBmb3IKb3VyIHRlc3RzCiogW0phQ29Db10oaHR0cHM6Ly93d3cuamFjb2NvLm9yZy9qYWNvY28vdHJ1bmsvaW5kZXguaHRtbCkgdG8gZ2VuZXJhdGUgdGhlIGNvdmVyYWdlIApyZXBvcnQgb2Ygb3VyIHByb2plY3QKKiBbUGl0ZXN0XShodHRwczovL3BpdGVzdC5vcmcvKSB0byBleGVjdXRlIG11dGF0aW9uIHRlc3RpbmcKKiBbQ29kZWNvdl0oaHR0cHM6Ly9hYm91dC5jb2RlY292LmlvLykgdG8ga2VlcCB0cmFjayBvZiBvdXIgcmVwb3NpdG9yeSdzIGNvdmVyYWdlCgpJbnRlZ3JhdGlvbiBhbmQgVW5pdCB0ZXN0cyBjYW4gYmUgZm91bmQgaW4gdGhlIGBzcmMvdGVzdGAgZGlyZWN0b3J5LiBVc3VhbGx5LCB0aGV5CmNvdWxkJ3ZlIGJlZW4gc3BsaXQgaW50byBkaWZmZXJlbnQgc291cmNlIHNldHMsIHN1Y2ggYXMgYHNyYy90ZXN0YCBmb3IgdW5pdCB0ZXN0cyBhbmQgCmBzcmMvaXRgIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cywgYnV0IHRoYXQgd2FzIG5vdCBkZWVtZWQgbmVjZXNzYXJ5IGZvciB0aGlzIHByb2plY3QncyAKcHVycG9zZSwgZ2l2ZW4gaXRzIHNpemUsIGNvbXBsZXhpdHkgYW5kIHNjb3BlLiBIb3dldmVyLCB0aGlzIG1pZ2h0IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgoKSW4gb3JkZXIgdG8gcnVuIHRoZSB0ZXN0cyBpbiB0aGlzIHByb2plY3QsIGV4ZWN1dGUgdGhlIGB0ZXN0YCB0YXNrOgoKYGBgc2hlbGwKLi9ncmFkbGV3IHRlc3QKYGBgCgpXaGVuIGV4ZWN1dGlvbiBlbmRzLCByZXBvcnRzIHdpbGwgYmUgYXZhaWxhYmxlIGF0OgoKKiBgYnVpbGQvcmVwb3J0cy90ZXN0cy90ZXN0YCBmb3IgSlVuaXQgcmVwb3J0cwoqIGBidWlsZC9yZXBvcnRzL2phY29jby90ZXN0YCBmb3IgSmFDb0NvIHJlcG9ydHMKCiMjIyBXaHkgSlVuaXQgNT8KCkpVbml0IGlzIHRoZSBtb3N0IHVzZWQgdGVzdGluZyBwbGF0Zm9ybSBmb3IgSmF2YSwgd2l0aCB2ZXJzaW9uIDUgYmVpbmcgaXRzIG1vc3QgCnJlY2VudCBtYWpvciB2ZXJzaW9uLiBJdCBoYXMgbWFueSBmZWF0dXJlcyBhbmQgYWR2YW50YWdlcyBvdmVyIEpVbml0IDQsIHNvbWUKb2Ygd2hpY2ggd2lsbCBiZSB1c2VkIGluIG91ciB0ZXN0cywgc3VjaCBhczoKCiogYEBQYXJhbWV0ZXJpemVkVGVzdGA6IHRoaXMgYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgdGhlIHNhbWUgdGVzdCBjYXNlIHdpdGggYW55IApudW1iZXIgb2YgdmFyeWluZyBpbnB1dHMgKGV4YW1wbGU6IHRlc3RpbmcgdGhlIHNhbWUgZW5kcG9pbnQgd2l0aCBkaWZmZXJlbnQgcGF5bG9hZHMpCiogYEFzc2VydGlvbnMuYXNzZXJ0QWxsKC4uLilgOiBleGVjdXRlcyBhbGwgYXNzZXJ0aW9ucyBpbiBhIGJsb2NrIHdpdGhvdXQgZmFpbGluZwp0aGUgdGVzdCBhcyBzb29uIGFzIHRoZSBmaXJzdCBhc3NlcnRpb24gZmFpbHMsIGFsbG93aW5nIGZvciBhbGwgZmFpbGVkIGFzc2VydGlvbnMgCnRvIGJlIGdyb3VwZWQgYW5kIGRpc3BsYXllZCB0b2dldGhlcgoqIGBBc3NlcnRpb25zLmFzc2VydFRocm93cyguLi4pYDogd2hpY2ggaGVscHMgdGhlIGFzc2VydGlvbiBvZiBhbiBleGNlcHRpb24gYW5kIAppdHMgcHJvcGVydGllcyAKCiMjIyBXaHkgQXNzZXJ0Sj8KClRoZSBwdXJwb3NlIG9mIHRoaXMgcHJvamVjdCBpcyBub3QgdG8gY29tcGFyZSBhc3NlcnRpb24gbGlicmFyaWVzLCBzdWNoIGFzIEFzc2VydEosClRydXRoLCBIYW1jcmVzdCBhbmQgb3RoZXJzLiAKCkFzc2VydEogaXMgYW4gYW1hemluZyBsaWJyYXJ5LCBhbmQgaXMgYWxyZWFkeSBpbmNsdWRlZCB3aGVuIGltcG9ydGluZyB0aGUgU3ByaW5nIApCb290J3MgdGVzdGluZyBkZXBlbmRlbmN5LCBzbyB0aGF0J3Mgd2h5IGl0IHdhcyB1c2VkIGluIHRoaXMgcHJvamVjdC4gCgpXcml0aW5nIG1lYW5pbmdmdWwgYW5kIGhlbHBmdWwgYXNzZXJ0aW9ucyB3aXRoIGVhc2UgaXMgdGhlIGdvYWwsIGFuZCBBc3NlcnRKIGRvZXMgYSAKZ3JlYXQgam9iIGF0IGl0LgoKIyMjIFdoeSBUZXN0Y29udGFpbmVycz8KCllvdSB3YW50IHlvdXIgQVBJIHRvIGJlIHJlbGlhYmxlLCBleHRlbnNpYmxlLCBtYWludGFpbmFibGUsIHJldXNhYmxlLCBhbmQgdGhhdCAKYXNzdW1wdGlvbiBoYXMgbWFueSBjb25zZXF1ZW5jZXMuIAoKT25lIHdheSB0byBlbnN1cmUgdGhhdCB5b3UgZG9uJ3QgYnJlYWsgYW55dGhpbmcgd2hlbiBkZXZlbG9waW5nIG5ldyBmZWF0dXJlcyBvciBmaXhpbmcKYnVncyBpcyB0byBoYXZlIGEgdmVyeSB0aG9yb3VnaCB0ZXN0IHN1aXRlLCBhbmQgaGF2aW5nIGEgY29udGludW91cyBpbnRlZ3JhdGlvbiBwaXBlbGluZQp0aGF0IGF1dG9tYXRpY2FsbHkgcnVucyB0aG9zZSB0ZXN0cyBhbmQgbGV0cyB5b3Uga25vdyB3aGVuIHRoaW5ncyBnbyB3cm9uZy4KCkhvd2V2ZXIsIHdoYXQgaWYgeW91ciB0ZXN0cyBkbyBub3QgcmVwcm9kdWNlIHRoZSByZWFsIGVudmlyb25tZW50PyBUaGUgZXhlY3V0aW9uIG9mIHRoZQp0ZXN0IHN1aXRlIGNhbiBiZSBzdWNjZXNzZnVsIGFuZCBvbmNlIHlvdSBkZXBsb3kgdGhlIG5ldyB2ZXJzaW9uIHRvIHlvdXIgcmVhbCB3b3JsZCAKcHJvZHVjdGlvbiBlbnZpcm9ubWVudCwgdGhpbmdzIHRoYXQgeW91IHdlcmUgbGVhZCB0byBhc3N1bWUgd2VyZSBmaW5lIHN0aWxsIHJ1biB0aGUgcmlzawpvZiBicmVha2luZyBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCB0aGV5IHdlcmUgZGVwbG95ZWQgdG8gd2FzIG5vdGhpbmcgbGlrZSB3aGF0IHlvdSAKdGVzdGVkIGFnYWluc3QuCgpPbmUgb2YgdGhlIHdheXMgdG8gcmVkdWNlIHRoaXMga2luZCBvZiBwcm9ibGVtIGlzIHRvIHVzZSByZWFsIGluc3RhbmNlcyBvZiB0aGUgc2VydmljZXMgdGhhdAp0aGUgYXBwbGljYXRpb24gcmVsaWVzIG9uLCB3aXRoIHRoZSBzYW1lIHZlcnNpb24gYXMgdGhlIG9uZXMgaW4geW91ciBwcm9kdWN0aW9uIGVudmlyb25tZW50LgpGb3IgZXhhbXBsZSwgaW5zdGVhZCBvZiB0ZXN0aW5nIGFuIGFwcGxpY2F0aW9uIGFnYWluc3QgYW4gZW1iZWRkZWQgZGF0YWJhc2UsIGhhdmUgaXQgY29ubmVjdAp0byBhIHJlYWwgZGF0YWJhc2Ugc2VydmVyLiAKClRoaXMgaXMgd2hlcmUgVGVzdGNvbnRhaW5lcnMgY29tZXMgaW4gaGFuZHksIGFsbG93aW5nIHlvdSB0byBzcGluIHVwIGRpc3Bvc2FibGUgRG9ja2VyIApjb250YWluZXJzIHRoYXQgd2lsbCBsaXZlIG9ubHkgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgeW91ciB0ZXN0IHN1aXRlLiAKCkluIHRoaXMgY2FzZSwgdGhlIGV4aXN0aW5nIGBvcmcudGVzdGNvbnRhaW5lcnM6bW9uZ29kYmAgZGVwZW5kZW5jeSB3YXMgdXNlZCB0byBpbXBvcnQgaXRzIApgTW9uZ29EQkNvbnRhaW5lcmAgY2xhc3Mgd2hpY2ggd2FzIGV4dGVuZGVkIGluIHRoZSBgRXh0ZW5kZWRNb25nb0RCQ29udGFpbmVyYCBjbGFzcyBpbiAKb3JkZXIgdG8gZW5zdXJlIHRoYXQgdGhlIGFwcHJvcHJpYXRlIGBVUkxgIGNvbm5lY3Rpb24gdmFsdWUgd2FzIG1hZGUgYXZhaWxhYmxlIHRvIFNwcmluZwpEYXRhIG9uY2UgdGhlIGNvbnRhaW5lciB3YXMgcmVhZHkgdG8gYWNjZXB0IGNvbm5lY3Rpb25zLgoKRm9yIHRoZSBLZXljbG9hayBhdXRob3JpemF0aW9uIHNlcnZlciwgdGhlIGBjb20uZ2l0aHViLmRhc25pa286dGVzdGNvbnRhaW5lcnMta2V5Y2xvYWtgIApkZXBlbmRlbmN5IHdhcyB1c2VkLiBTaW1pbGFybHkgdG8gdGhlIE1vbmdvREIgY2FzZSwgdGhlIGBLZXljbG9ha0NvbnRhaW5lcmAgd2FzIGV4dGVuZGVkIApieSB0aGUgYEV4dGVuZGVkS2V5Y2xvYWtDb250YWluZXJgIGNsYXNzLCB3aGljaCBpcyB1c2VkIHRvIGNvbmZpZ3VyZSBLZXljbG9haydzIHRlc3QgcmVhbG0gCmFzIHdlbGwgYXMgbWFraW5nIGl0cyBhdXRoIFVSTCBhdmFpbGFibGUgdG8gU3ByaW5nIFNlY3VyaXR5LgoKIyMjIyBJTVBPUlRBTlQhCgpVc2luZyBgdGVzdGNvbnRhaW5lcnNgIG1lYW5zIHRoYXQgbW9zdCBvZiB0aGUgcHJvamVjdCdzIHRlc3RzIFJFUVVJUkUgZG9ja2VyIHRvIGJlIGF2YWlsYWJsZSAKaW4gdGhlIGhvc3QgbWFjaGluZSBpbiBvcmRlciB0byBydW4gYXQgYWxsLgoKVGhlIERvY2tlciBpbWFnZXMgYmVpbmcgdXNlZCBpbiB0aGUgdGVzdHMgYXJlOgoKKiBgbW9uZ286NS4wLjRgCiogYHF1YXkuaW8va2V5Y2xvYWsva2V5Y2xvYWs6MTUuMC4yYAoKSWYgdGhleSBhcmUgbm90IGZvdW5kIGluIHRoZSBob3N0IG1hY2hpbmUsIGB0ZXN0Y29udGFpbmVyc2Agd2lsbCBhdXRvbWF0aWNhbGx5IGRvd25sb2FkIAp0aGVtLiBUaGlzIGNhbiBnaXZlIHRoZSBpbXByZXNzaW9uIHRoYXQgdGhlIHRhc2tzIGFyZSB0YWtpbmcgdG9vIGxvbmcgdG8gc3RhcnQgb3IgZmluaXNoLApzbyBpZiB5b3Ugd2lzaCB0byBtYW51YWxseSBkb3dubG9hZCB0aGUgaW1hZ2VzIGJlZm9yZSBleGVjdXRpbmcgdGhlIHRlc3RzLCB5b3UgY2FuIGJ5CmV4ZWN1dGluZyB0aGUgYHB1bGxgIGNvbW1hbmQ6CgpgYGBzaGVsbApkb2NrZXIgcHVsbCBtb25nbzo1LjAuNApkb2NrZXIgcHVsbCBxdWF5LmlvL2tleWNsb2FrL2tleWNsb2FrOjE1LjAuMgpgYGAKCiMjIyBXaGF0IGlzIEphQ29Dbz8KCkphQ29DbyBpcyBhbiBhbWF6aW5nIHRvb2wgdGhhdCBnZW5lcmF0ZXMgY29kZSBjb3ZlcmFnZSByZXBvcnRzIGZvciBqYXZhLiBJbiBvcmRlciB0byAKZ2VuZXJhdGUgdGhlc2UgcmVwb3J0cywgdGhlIFtKYUNvQ28gR3JhZGxlIHBsdWdpbl0oaHR0cHM6Ly9kb2NzLmdyYWRsZS5vcmcvNy4zLjMvdXNlcmd1aWRlL2phY29jb19wbHVnaW4uaHRtbCkgCmlzIHVzZWQsIGFuZCBpcyBkZWNsYXJlZCBpbiB0aGUgW2J1aWxkLmdyYWRsZS5rdHNdKGJ1aWxkLmdyYWRsZS5rdHMpIHBsdWdpbnMgYmxvY2suIAoKVGhlIHBsdWdpbiBwcm92aWRlcyB0d28gdXNlZnVsIHRhc2tzOiAKCiogYGphY29jb1Rlc3RSZXBvcnRgOiAgR2VuZXJhdGVzIHRoZSByZXBvcnQgYW5kIGRlcGVuZHMgb24gdGhlIG91dHB1dCBvZiB0ZXN0cy4gSW4gdGhpcwpwcm9qZWN0LCB0aGUgZ3JhZGxldyBgdGVzdGAgdGFzayBpcyBmaW5hbGl6ZWQgYnkgdGhpcyB0YXNrLCBzbyB0aGF0IHRoZSBjb3ZlcmFnZSByZXBvcnQKaXMgYWx3YXlzIGdlbmVyYXRlZCBhZnRlciB0ZXN0IGV4ZWN1dGlvbgoqIGBqYWNvY29UZXN0Q292ZXJhZ2VWZXJpZmljYXRpb25gOiB2ZXJpZmllcyBpZiB0aGUgY292ZXJhZ2UgcnVsZXMgYXJlIG1ldC4gSWYgYSBwcm9qZWN0CmRlY2xhcmVzIG1pbiA5OSUgY292ZXJhZ2UsIHRoZSB0YXNrIHdpbGwgZmFpbCBpZiB0aGUgY292ZXJhZ2UgaXMgYmVsb3cgdGhhdCB0aHJlc2hvbGQKCkluIHRoaXMgcHJvamVjdCwgdGhlIHBsdWdpbiBpcyBjb25maWd1cmVkIHRvIGdlbmVyYXRlIGJvdGggSFRNTCBhbmQgWE1MIHJlcG9ydHMuIAogKiBIVE1MIHByb3ZpZGVzIHRoZSBiZXN0IHZpc3VhbCBleHBlcmllbmNlLCBhcyBpdCBhbGxvd3MgYSBkZXZlbG9wZXIgdG8gbmF2aWdhdGUgdGhyb3VnaAp0aGUgcGFja2FnZXMgYW5kIGNsYXNzZXMsIGNoZWNraW5nIGFsbCB0aGUgY292ZXJhZ2UgZGV0YWlscy4KICogVGhlIFhNTCByZXBvcnQgaXMgY3JlYXRlZCBzbyB0aGF0IGlzIGV4cG9ydGVkIHRvIFtDb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vKSB3aGVuIAp0aGUgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3cgaXMgZXhlY3V0ZWQKClRoZXNlIHJlcG9ydHMgY2FuIGJlIGZvdW5kIGluIGBidWlsZC9yZXBvcnRzL2phY29jb2AsIGFuZCB0aGV5IGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQ6CgoqIENsYXNzIGNvdmVyYWdlIAoqIE1ldGhvZCBjb3ZlcmFnZSAKKiBCcmFuY2ggY292ZXJhZ2UgCiogTGluZSBjb3ZlcmFnZQoqIEluc3RydWN0aW9uIGNvdmVyYWdlIAoqIENvbXBsZXhpdHkgY292ZXJhZ2UgCgpNb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgdGhvc2UgY291bnRlcnMgbWVhbiBjYW4gYmUgZm91bmQgW2hlcmVdKGh0dHBzOi8vd3d3LmphY29jby5vcmcvamFjb2NvL3RydW5rL2RvYy9jb3VudGVycy5odG1sKS4KCiMjIyMgSmFDb0NvIGxvZ2dpbmcKCkFub3RoZXIgbmVhdCBwbHVnaW4gdXNlZCBpcyBbamFjb2NvbG9nXShodHRwczovL2dpdGxhYi5jb20vYmFyZnVpbi9ncmFkbGUtamFjb2NvLWxvZyksCndoaWNoIHByb3ZpZGVzIHRoZWBqYWNvY29Mb2dUZXN0Q292ZXJhZ2VgIHRhc2sgd2hpY2ggcHJpbnRzIGFsbCB0aG9zZSBtZXRyaWNzIAppbiB0aGUgY29uc29sZSBpbiBjYXNlIHlvdSBhcmUgb25seSBsb29raW5nIGZvciB0aGUgY29uc29saWRhdGVkIGNvdmVyYWdlIG51bWJlcnMKCkhhdmluZyBuZWFyIDEwMCUgY29kZSBjb3ZlcmFnZSBkb2VzIG5vdCBtZWFuIHRoYXQgYSBzb2Z0d2FyZSBpcyBidWctZnJlZSBvciBmbGF3bGVzcy4KQnV0IGl0IHVzdWFsbHkgbWVhbnMgdGhhdCBhIHRlYW0gaXMgaW52ZXN0ZWQgaW50byBtYWtpbmcgaXQgcmVsaWFibGUsIGFuZCB0aGF0IHR5cGUKb2YgY29uZmlkZW5jZSBpbiB0aGUgY29kZSBiYXNlIHByb3ZpZGVzIGEgbG90IG9mIGNvbWZvcnQgd2hlbiBwbGFubmluZyBhbmQgYnVpbGRpbmcKbmV3IGZlYXR1cmVzIG9yIHNpbXBseSBmaXhpbmcgYnVncy4gCgojIyMgTXV0YXRpb24gVGVzdGluZwoKVGhpcyBpcyBub3QgYSB2ZXJ5IHdpZGVzcHJlYWQgY29uY2VwdCwgYnV0IGlzIGEgcmF0aGVyIHBvd2VyZnVsIG9uZS4gQmVsb3cgaXMgdGhlIApleHBsYW5hdGlvbiBvZiB3aHkgeW91IHNob3VsZCBjYXJlIGFib3V0IGl0LCBmcm9tIHRoZSBmb2xrcyBhdCBbUGl0ZXN0XShodHRwczovL3BpdGVzdC5vcmcpOgoKPiBUcmFkaXRpb25hbCB0ZXN0IGNvdmVyYWdlIChpLmUgbGluZSwgc3RhdGVtZW50LCBicmFuY2gsIGV0Yy4pIG1lYXN1cmVzIG9ubHkgd2hpY2ggCj4gY29kZSBpcyBleGVjdXRlZCBieSB5b3VyIHRlc3RzLiBJdCBkb2VzIG5vdCBjaGVjayB0aGF0IHlvdXIgdGVzdHMgYXJlIGFjdHVhbGx5IGFibGUKPiB0byBkZXRlY3QgZmF1bHRzIGluIHRoZSBleGVjdXRlZCBjb2RlLiBJdCBpcyB0aGVyZWZvcmUgb25seSBhYmxlIHRvIGlkZW50aWZ5IGNvZGUKPiB0aGF0IGlzIGRlZmluaXRlbHkgbm90IHRlc3RlZC4KPgo+IFRoZSBtb3N0IGV4dHJlbWUgZXhhbXBsZXMgb2YgdGhlIHByb2JsZW0gYXJlIHRlc3RzIHdpdGggbm8gYXNzZXJ0aW9ucy4gRm9ydHVuYXRlbHkgCj4gdGhlc2UgYXJlIHVuY29tbW9uIGluIG1vc3QgY29kZSBiYXNlcy4gTXVjaCBtb3JlIGNvbW1vbiBpcyBjb2RlIHRoYXQgaXMgb25seSAKPiBwYXJ0aWFsbHkgdGVzdGVkIGJ5IGl0cyBzdWl0ZS4gQSBzdWl0ZSB0aGF0IG9ubHkgcGFydGlhbGx5IHRlc3RzIGNvZGUgY2FuIHN0aWxsIAo+IGV4ZWN1dGUgYWxsIGl0cyBicmFuY2hlcyAoZXhhbXBsZXMpLgo+IAo+IEFzIGl0IGlzIGFjdHVhbGx5IGFibGUgdG8gZGV0ZWN0IHdoZXRoZXIgZWFjaCBzdGF0ZW1lbnQgaXMgbWVhbmluZ2Z1bGx5IHRlc3RlZCwgCj4gbXV0YXRpb24gdGVzdGluZyBpcyB0aGUgZ29sZCBzdGFuZGFyZCBhZ2FpbnN0IHdoaWNoIGFsbCBvdGhlciB0eXBlcyBvZiBjb3ZlcmFnZQo+IGFyZSBtZWFzdXJlZC4KCkluIG9yZGVyIHRvIHJ1biBtdXRhdGlvbiB0ZXN0aW5nLCB0aGUgW1BpdGVzdF0oaHR0cHM6Ly9ncmFkbGUtcGl0ZXN0LXBsdWdpbi5zb2xpZHNvZnQuaW5mby8pCkdyYWRsZSBwbHVnaW4gaXMgdXNlZC4gSXQgcHJvdmlkZXMgdGhlIGBwaXRlc3RgIGdyYWRsZSB0YXNrLCB3aGljaCBydW5zIHRoZSBtdXRhdGVkIAp0ZXN0cywgYW5kIHRoZSBnZW5lcmF0ZWQgcmVwb3J0IGNhbiBiZSBmb3VuZCBpbmBidWlsZC9yZXBvcnRzL3BpdGVzdC9pbmRleC5odG1sYAoKIyMjIyBJTVBPUlRBTlQhCgpHaXZlbiBtYW55IG11dGF0aW9ucyBhcmUgZ2VuZXJhdGVkIGZvciBlYWNoIHRlc3QgY2FzZSwgdGhlIGV4ZWN1dGlvbiB0aW1lIG9mIHRoZSAKYHBpdGVzdGAgdGFzayBpcyBtdWNoIGxvbmdlciB0aGFuIHRoZSB0aW1lIGZyb20gdGhlIGB0ZXN0YCB0YXNrLiBTaW5jZSB0aGlzIG1heSB0YWtlCnNldmVyYWwgbWludXRlcywgdGhlcmUncyBubyBHaXRIdWIgYWN0aW9uIGNvbmZpZ3VyZWQgZm9yIGl0LgoKVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgUGl0ZXN0IEdyYWRsZSBwbHVnaW4gaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgR3JhZGxlIApUb29sY2hhaW4gY29uY2VwdC4gVGhlcmVmb3JlLCBpZiB0aGUgSlZNIHVzZWQgYnkgR3JhZGxlIHRvIHJ1biBkb2VzIG5vdCBtYXRjaCB0aGUgCmxhbmd1YWdlIHZlcnNpb24gZGVjbGFyZWQgYnkgdGhlIHRvb2xjaGFpbiwgdGhlIGV4ZWN1dGlvbiBvZiBgcGl0ZXN0YCB0YXNrIHdpbGwKZmFpbC4gSW4gb3JkZXIgdG8gYXZvaWQgdGhpcywgbWFrZSBzdXJlIHlvdSBzZXQgdGhlIEpESyB1c2VkIGJ5IEdyYWRsZSB0byBiZQpjb21wYXRpYmxlIHdpdGggdGhlIHRvb2xjaGFpbiB2ZXJzaW9uLiBJZiB5b3UgYXJlIHVzaW5nIFNES01BTiEgdGhpcyBjYW4gYmUgZWFzaWx5CmRvbmUgYnkgZXhlY3V0aW5nIHRoZSBgc2RrIHVzZSBqYXZhYCBjb21tYW5kIGJlZm9yZSB5b3UgaW52b2tlIHRoZSBgcGl0ZXN0YCB0YXNrLgoKIyMjIEZ1dHVyZS1wcm9vZmluZwoKT25lIHdheSB0byBmdXR1cmUtcHJvb2YgeW91ciBhcHBsaWNhdGlvbiBpcyB0byB0ZXN0IGl0IGFnYWluc3QgZWFybHkgYWNjZXNzIGJ1aWxkcyBvZgpmdXR1cmUgSkRLcy4gVGhpcyBjYW4gc2F2ZSB5b3UgYSBsb3Qgb2YgdGltZSB3aGVuIG1pZ3JhdGluZyB0byBuZXdlciB2ZXJzaW9ucyBvZiB0aGUKSkRLLCBhcyBpdCB3aWxsIG1ha2UgaXQgY2xlYXIgaWYgeW91ciBjdXJyZW50IGNvZGUgYW5kIGRlcGVuZGVuY2llcyBhcmUgY29tcGF0aWJsZQp3aXRoIHRoZSBuZXh0IHJlbGVhc2UuCgpTaW5jZSB0aGlzIHByb2plY3QgaXMgd3JpdHRlbiBpbiBKYXZhIDE3LCB0aGUgb25seSBlYXJseSBhY2Nlc3MgYnVpbGRzIGl0IGNhbiBiZSB0ZXN0ZWQKYWdhaW5zdCBhcmUgZnJvbSBKREsgMTggKGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgdGhpcykuIFRoZXJlZm9yZSwgYSBHcmFkbGUgdGFzayBjYWxsZWQgCmB0ZXN0c09uMThgIGhhcyBiZWVuIGNyZWF0ZWQgYW5kIGRlY2xhcmVkIGluIHRoZSBbYnVpbGQuZ3JhZGxlLmt0c10oYnVpbGQuZ3JhZGxlLmt0cykgCmZpbGUuIFRoaXMgdGFzayBzZXRzIHRoZSBKYXZhIFRvb2xjaGFpbiB0byB1c2UgSmF2YSBMYW5ndWFnZSBWZXJzaW9uIDE4IGFuZCBleGVjdXRlcyB0aGUKcHJvamVjdCdzIHRlc3RzLgoKVG8gcnVuIHRoZSB0ZXN0cyBvbiBKREsgMTgsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgYHNoZWxsCi4vZ3JhZGxldyB0ZXN0c09uMTgKYGBgYAoKT25jZSB0aGUgdGVzdHMgZmluaXNoLCB5b3UgY2FuIGFjY2VzcyB0aGUgcmVwb3J0cyBhdCBgYnVpbGQvcmVwb3J0cy90ZXN0cy90ZXN0c09uMThgCgpQbGVhc2Ugbm90ZSB0aGF0IHNpbmNlIGFuIGVhcmx5IGFjY2VzcyBidWlsZCBvZiB0aGUgSkRLIGlzIHJlcXVpcmVkIHRvIHRlc3QgYWdhaW5zdCBhCmZ1dHVyZSB2ZXJzaW9uIG9mIHRoZSBKREssIHlvdSBtdXN0IGluc3RhbGwgaXQgbWFudWFsbHksIGFzIEdyYWRsZSdzIHRvb2xjaGFpbiBpc24ndCAKY2FwYWJsZSBvZiBkb3dubG9hZGluZyBvbmUuIFRoaXMgbWlnaHQgY2hhbmdlIGluIHRoZSBmdXR1cmUsIGFzIEdyYWRsZSBoYXMgYW4gb3BlbiAKW2lzc3VlXShodHRwczovL2dpdGh1Yi5jb20vZ3JhZGxlL2dyYWRsZS9pc3N1ZXMvMTQ4MTQpIGZvciB0aGlzIGZlYXR1cmUuIAoKSWYgeW91IGFyZSB1c2luZyBTREtNQU4hIGFzIHN1Z2dlc3RlZCBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbnMsIHlvdSBjYW4gZWFzaWx5CmRvd25sb2FkIGFuIGVhcmx5IGFjY2VzcyBidWlsZCBvZiB0aGUgSkRLLiBBdCB0aGUgdGltZSBvZiB3cml0aW5nLCB0aGUgbGF0ZXN0IGJ1aWxkCndhcyBgMTguZWEuMjVgIHdoaWNoIGNhbiBiZSBpbnN0YWxsZWQgYnkgZXhlY3V0aW5nOgoKYGBgc2hlbGwKc2RrIGluc3RhbGwgamF2YSAxOC5lYS4yNS1vcGVuCmBgYAoKT25jZSBpbnN0YWxsZWQsIEdyYWRsZSdzIFRvb2xjaGFpbiBpcyBjYXBhYmxlIG9mIGF1dG9tYXRpY2FsbHkgbG9jYXRpbmcgdGhlIGVhcmx5CmFjY2VzcyBidWlsZCBvZiB0aGUgSkRLIGFuZCB1c2UgaXQgd2hlbiByZXF1aXJlZC4KCiMjIyMgSU1QT1JUQU5UCgpUaGUgY3VycmVudCB2ZXJzaW9uIG9mIEphQ29DbyBpcyBgMC44LjdgIGFuZCBpdCBpc24ndCBjb21wYXRpYmxlIHdpdGggSmF2YSAxOCwgCnRoZXJlZm9yZSBhbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gd2hlbiBydW5uaW5nIHRoZSB0ZXN0cyBvbiAxOC4gSG93ZXZlciwgdGhpcyAKZG9lc24ndCBtZWFuIHRoYXQgdGhlIHRlc3RzIGhhdmUgZmFpbGVkIG9yIHdvbid0IGJlIGV4ZWN1dGVkLCBqdXN0IHRoYXQgSmFDb0NvIHdvbid0CmJlIGFibGUgdG8gZ2VuZXJhdGUgaXRzIHJlcG9ydHMgZnJvbSB0aGUgdGVzdCBvdXRwdXQuIFRoaXMgc2hvdWxkIGJlIGZpeGVkIHdoZW4gCkphQ29DbyB2ZXJzaW9uIGAwLjguOGAgaXMgcmVsZWFzZWQuCgojIyBSZXF1aXJlZCBzZXJ2aWNlcwoKVGhpcyBtaWNyb3NlcnZpY2UgcmVxdWlyZXMgYm90aCBNb25nb0RCIGFuZCBLZXljbG9hayBzZXJ2ZXJzIHRvIGJlIGF2YWlsYWJsZSBpbiBvcmRlcgp0byBmdW5jdGlvbi4gSWYgeW91IGhhdmUgYm90aCBzZXJ2ZXJzIGluc3RhbGxlZCBvciBhdmFpbGFibGUgb24gYSByZW1vdGUgVVJMLCB5b3UgY2FuIAp1c2Ugc3VjaCBpbnN0YW5jZXMsIGp1c3QgZG9uJ3QgZm9yZ2V0IHRvIHVwZGF0ZSBjb3JyZXNwb25kaW5nIHByb3BlcnRpZXMgb24gCmBzcmMvbWFpbi9yZXNvdXJjZXMvYXBwbGljYXRpb24ueW1sYCAob3IgYW5vdGhlciBwcm9maWxlJ3MgZmlsZSkgd2l0aCB0aGUgYXBwcm9wcmlhdGUKY29ubmVjdGlvbiBVUkxzLgoKSWYgeW91IGRvbid0IHdhbnQgdG8gYWx0ZXIgdGhlIHByb3BlcnRpZXMgZmlsZSwgeW91IGNhbiBhbHNvIHByb3ZpZGUgdGhlIFVSSXMgYXMgCkpWTSBwcm9wZXJ0aWVzCgpgYGAKLURrZXljbG9hay5hdXRoLXNlcnZlci11cmw9aHR0cDovL3NvbWUuaG9zdDo4MDgwL2F1dGgKLURzcHJpbmcuZGF0YS5tb25nb2RiLnVyaT1tb25nb2RiOi8vdXNlcjpwYXNzd29yZEBzb21lLmhvc3Q6MjcwMTcvc3ByaW5nLWRlbW8KYGBgCgpvciBldmVuIGFzIGFwcGxpY2F0aW9uIGFyZ3VtZW50cy4KCmBgYAotLWtleWNsb2FrLmF1dGgtc2VydmVyLXVybD1odHRwOi8vc29tZS5ob3N0OjgwODAvYXV0aAotLXNwcmluZy5kYXRhLm1vbmdvZGIudXJpPW1vbmdvZGI6Ly91c2VyOnBhc3N3b3JkQHNvbWUuaG9zdDoyNzAxNy9zcHJpbmctZGVtbwpgYGAKCiMjIyBEb2NrZXIgQ29tcG9zZQoKSG93ZXZlciwgeW91IGNhbiBhbHNvIGVhc2lseSBzcGluIHVwIGJvdGggTW9uZ29EQiBhbmQgS2V5Y2xvYWsgYXMgZG9ja2VyIGNvbnRhaW5lcnMuIApBIGZpbGUgY2FsbGVkIGBkb2NrZXItY29tcG9zZS55bWxgIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBwcm9qZWN0LCBhbmQgeW91IGNhbiB1c2UgCltEb2NrZXIgQ29tcG9zZV0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vY29tcG9zZS8pIGluIG9yZGVyIHRvIHRha2UgYWR2YW50YWdlIG9mIGl0LgoKVG8gc3RhcnQgdGhlIGNvbnRhaW5lcnMgd2l0aCBEb2NrZXIgQ29tcG9zZSwgZXhlY3V0ZToKCmBgYHNoZWxsCmRvY2tlci1jb21wb3NlIHVwIC1kCmBgYAoKVG8gc3RvcCB0aGVtLCBleGVjdXRlOgoKYGBgc2hlbGwKZG9ja2VyLWNvbXBvc2UgZG93bgpgYGAKClBsZWFzZSBub3RlIHRoYXQgdGhlIHNlcnZpY2VzIGRlc2NyaWJlZCBpbiB0aGUgYGRvY2tlci1jb21wb3NlLnltbGAgZmlsZSBkbyBub3QgCmhhdmUgcGVyc2lzdGVudCBzdG9yYWdlIGNvbmZpZ3VyZWQsIHdoaWNoIHdpbGwgY2F1c2UgbW9kaWZpY2F0aW9ucyB0byB0aGUgCmRhdGFiYXNlcyB0byBiZSBsb3N0IG9uY2UgdGhlIGNvbnRhaW5lcnMgYXJlIHN0b3BwZWQuIFRoaXMgaXMgaW50ZW50aW9uYWwgCmJlaGF2aW91ci4gCgpJZiB5b3UnZCBsaWtlIGRhdGEgdG8gYmUgcGVyc2lzdGVkIHdoZW4gdGhlIGNvbnRhaW5lcnMgYXJlIHN0b3BwZWQsIHlvdSBjYW4gdXNlCnRoZSBgZG9ja2VyLWNvbXBvc2UtcGVyc2lzdGVudC55bWxgIGZpbGUgaW5zdGVhZC4gVG8gZG8gc28sIGV4ZWN1dGUgdGhlIGNvbW1hbmRzCmFib3ZlIHdpdGggdGhlIGAtZmAgZmxhZzoKCmBgYHNoZWxsCmRvY2tlci1jb21wb3NlIC1mIGRvY2tlci1jb21wb3NlLXBlcnNpc3RlbnQueW1sIHVwIC1kCmRvY2tlci1jb21wb3NlIC1mIGRvY2tlci1jb21wb3NlLXBlcnNpc3RlbnQueW1sIGRvd24KYGBgCgpUaGUgbWFpbiBkaWZmZXJlbmNlIGluIHRoaXMgYXBwcm9hY2ggaXMgdGhhdCBQb3N0Z3JlU1FMIGlzIHVzZWQgYXMgdGhlIGJhY2tpbmcKZGF0YWJhc2UgZm9yIEtleWNsb2FrLCBydW5uaW5nIG9uIGl0cyBvd24gY29udGFpbmVyLCBhbmQgdGhhdCBib3RoIE1vbmdvREIgYW5kIApQb3N0Z3JlU1FMIGNvbnRhaW5lcnMgYXJlIG1vdW50aW5nIGRhdGEgW3ZvbHVtZXNdKGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL3N0b3JhZ2Uvdm9sdW1lcy8pLAp3aGljaCBhcmUgbWFuYWdlZCBieSB0aGUgRG9ja2VyIEVuZ2luZSwgaW4gdGhlIGFwcHJvcHJpYXRlIGNvbnRhaW5lciBkaXJlY3RvcmllcyAKCiMjIyBLZXljbG9hawoKS2V5Y2xvYWsgdXNlcyB0aGUgY29uY2VwdCBvZiBbcmVhbG1dKGh0dHBzOi8vaHVvbmdkYW5qYXZhLmNvbS9vdmVydmlldy1hYm91dC1yZWFsbS1pbi1rZXljbG9hay5odG1sKSAKdG8gbWFuYWdlIFVzZXJzLCBDbGllbnRzLCBSb2xlcyBhbmQgb3RoZXIgc2VjdXJpdHkgZGV0YWlscy4gVGhlcmUgYXJlIG1hbnkgd2F5cwp0byBjb25maWd1cmUgYSByZWFsbToKCiogWW91IGNhbiBkbyBpdCBbbWFudWFsbHldKGh0dHBzOi8vd3d3LmtleWNsb2FrLm9yZy9kb2NzL2xhdGVzdC9zZXJ2ZXJfYWRtaW4vI19jcmVhdGUtcmVhbG0pCiogWW91IGNhbiB1c2UgS2V5Y2xvYWsncyBbUkVTVCBBUEldKGh0dHBzOi8vd3d3LmtleWNsb2FrLm9yZy9kb2NzLWFwaS8xNS4wL3Jlc3QtYXBpL2luZGV4Lmh0bWwpIAoob3Igb25lIGlmIGl0cyBleGlzdGluZyBjbGllbnRzKQoqIFlvdSBjYW4gaW1wb3J0IGFuIGV4aXN0aW5nIGByZWFsbWAgY29uZmlndXJhdGlvbi4KCkluIHRoZSBbcmVhbG0uanNvbl0ocmVhbG0uanNvbikgZmlsZSwgeW91IGNhbiBpbnNwZWN0IHRoZSBiYXNpYyBLZXljbG9hayByZWFsbSAKY29uZmlndXJhdGlvbiBuZWVkZWQgaW4gb3JkZXIgZm9yIHRoZSBtaWNyb3NlcnZpY2UgdG8gd29yayBhcyBleHBlY3RlZC4gVGhpcyBmaWxlCmlzIGF1dG9tYXRpY2FsbHkgaW1wb3J0ZWQgYnkgS2V5Y2xvYWsgd2hlbiBpdCBzdGFydHMgaWYgeW91IHVzZSB0aGUgcHJvamVjdCdzIApwcm92aWRlZCBkb2NrZXIgY29tcG9zZSBmaWxlcy4KCkR1cmluZyB0ZXN0cywgaW5zdGVhZCBvZiBpbXBvcnRpbmcgdGhlIHJlYWxtLCBpdCBpcyBjcmVhdGVkIHByb2dyYW1tYXRpY2FsbHkuIApUaGlzIGlzIGRvbmUgaW4gdGhlIGBjb20uZ2l0aHViLmpvcmdlYnNhLnNwcmluZy5kZW1vLnV0aWwuRXh0ZW5kZWRLZXljbG9ha0NvbnRhaW5lcmAgCmNsYXNzLiBUbyBhY2hpZXZlIHRoaXMsIHRoZSBgS2V5Y2xvYWtgIFJFU1QgY2xpZW50IGZyb20gdGhlIApgb3JnLmtleWNsb2FrOmtleWNsb2FrLWFkbWluLWNsaWVudGAgZGVwZW5kZW5jeSBpcyB1c2VkLiAKCiMjIFJ1bm5pbmcgdGhlIG1pY3Jvc2VydmljZQoKT25jZSB5b3VyIE1vbmdvREIgYW5kIEtleWNsb2FrIGluc3RhbmNlcyBhcmUgcmVhY2hhYmxlLCB0aGVyZSBhcmUgYSBmZXcgd2F5cwp0byBsYXVuY2ggdGhlIGFwcGxpY2F0aW9uOiAKCiogWW91IGNhbiBydW4gaXQgZGlyZWN0bHkgZnJvbSB5b3VyIElERSwgYnkgaW52b2tpbmcgdGhlIG1haW4gbWV0aG9kIG9mCmBjb20uZ2l0aHViLmpvcmdlYnNhLnNwcmluZy5kZW1vLkFwcGxpY2F0aW9uYAoqIFlvdSBjYW4gcnVuIGl0IHVzaW5nIHRoZSBbU3ByaW5nIEJvb3QgR3JhZGxlIHBsdWdpbl0oaHR0cHM6Ly9kb2NzLnNwcmluZy5pby9zcHJpbmctYm9vdC9kb2NzLzIuNi4yL2dyYWRsZS1wbHVnaW4vcmVmZXJlbmNlL2h0bWxzaW5nbGUvI3J1bm5pbmcteW91ci1hcHBsaWNhdGlvbikKCiMjIyBSdW5uaW5nIHRoZSBhcHBsaWNhdGlvbiB3aXRoIEdyYWRsZQogCklzIGFzIGVhc3kgYXMgaW52b2tpbmcgYSBzaW1wbGUgW3Rhc2tdKGh0dHBzOi8vZG9jcy5zcHJpbmcuaW8vc3ByaW5nLWJvb3QvZG9jcy8yLjYuMi9ncmFkbGUtcGx1Z2luL3JlZmVyZW5jZS9odG1sc2luZ2xlLyNydW5uaW5nLXlvdXItYXBwbGljYXRpb24pCmZyb20gdGhlIFNwcmluZyBCb290IEdyYWRsZSBQbHVnaW46CgpgYGBzaGVsbAouL2dyYWRsZXcgYm9vdFJ1bgpgYGAKCiMjIyBDb25zdW1pbmcgdGhlIEFQSQoKQWZ0ZXIgdGhlIGFwcGxpY2F0aW9uIHN0YXJ0cywgeW91IGNhbiBzZW5kIEhUVFAgcmVxdWVzdHMgZGlyZWN0bHkgdG8gaXQgb3IgCmFjY2VzcyB0aGUgU3dhZ2dlciBVSSBhdmFpbGFibGUgYXQgYGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9zd2FnZ2VyLXVpLmh0bWxgLgoKUmVtZW1iZXIgdGhhdCB0aGUgZW5kcG9pbnRzIGFyZSBzZWN1cmVkLCB0aGVyZWZvcmUgZWFjaCByZXF1ZXN0IG11c3QgaW5jbHVkZQphbiBhY2Nlc3MgdG9rZW4gaW4gaXRzIGBBdXRob3JpemF0aW9uYCBoZWFkZXIuIFRvIG9idGFpbiBhbiBhY2Nlc3MgdG9rZW4sIHlvdQptdXN0IHJlcXVlc3Qgb25lIGZyb20gS2V5Y2xvYWsgd2l0aCB0aGUgYXBwcm9wcmlhdGUgcGF5bG9hZCwgZm9yIGV4YW1wbGU6CgpgYGBodHRwIHJlcXVlc3QKUE9TVCBodHRwOi8vbG9jYWxob3N0OjgwODEvYXV0aC9yZWFsbXMvdGVzdHMvcHJvdG9jb2wvb3BlbmlkLWNvbm5lY3QvdG9rZW4KQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uCkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCgpjbGllbnRfaWQ9c3ByaW5nLWRlbW8mY2xpZW50X3NlY3JldD10aGUtc2VjcmV0JnVzZXJuYW1lPXRoZS1hZG1pbiZwYXNzd29yZD0xMjNBZG1pbiZncmFudF90eXBlPXBhc3N3b3JkCmBgYAoKWW91IGFyZSBsb29raW5nIGZvciB0aGUgYGFjY2Vzc190b2tlbmAgdmFsdWUgZnJvbSB0aGUgcmVzcG9uc2UgYm9keSwgd2hpY2ggd2lsbApiZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDoKCmBgYGpzb24KewogICJhY2Nlc3NfdG9rZW4iOiAiZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJZ09pQWlTbGRVSWl3aWEybGtJaUE2SUNKMldFTnhlSHBXVDI1YU5XOTJhMlk1TjB4MFVFZFpYMEpYVWtOdVNXVlJiVVl3TlU1blVVVnpiMmhSSW4wLmV5SmxlSEFpT2pFMk16YzVPREUzTmpFc0ltbGhkQ0k2TVRZek56azBOVGMyTWl3aWFuUnBJam9pTW1VMFpEZ3hNMkV0TTJFd01TMDBNVGcxTFdJME5UVXRZMkV6TnpZNFpEbGpZVE5oSWl3aWFYTnpJam9pYUhSMGNEb3ZMMnh2WTJGc2FHOXpkRG80TURneEwyRjFkR2d2Y21WaGJHMXpMM1JsYzNSeklpd2ljM1ZpSWpvaU5EQXhaVFZqWkdFdE56RXpPUzAwWXpsakxXRmpNalV0WVdJeFlURTVNall6WkRNNUlpd2lkSGx3SWpvaVFtVmhjbVZ5SWl3aVlYcHdJam9pYzNCeWFXNW5MV1JsYlc4aUxDSnpaWE56YVc5dVgzTjBZWFJsSWpvaU9XWmxZelU0TXprdE1qTmlaUzAwWTJSaUxUaGlPV1F0TVRRNE9UZzVOak16Tm1KaUlpd2lZV055SWpvaU1TSXNJbUZzYkc5M1pXUXRiM0pwWjJsdWN5STZXeUpvZEhSd09pOHZiRzlqWVd4b2IzTjBPamd3T0RBaVhTd2ljbVZ6YjNWeVkyVmZZV05qWlhOeklqcDdJbk53Y21sdVp5MWtaVzF2SWpwN0luSnZiR1Z6SWpwYkltNXZkR1Z6TFdGa2JXbHVJaXdpYm05MFpYTXRkWE5sY2lKZGZYMHNJbk5qYjNCbElqb2ljSEp2Wm1sc1pTQmxiV0ZwYkNJc0luTnBaQ0k2SWpsbVpXTTFPRE01TFRJelltVXROR05rWWkwNFlqbGtMVEUwT0RrNE9UWXpNelppWWlJc0ltVnRZV2xzWDNabGNtbG1hV1ZrSWpwbVlXeHpaU3dpY0hKbFptVnljbVZrWDNWelpYSnVZVzFsSWpvaWRHaGxMV0ZrYldsdUluMC5DSUk2MkZzT2RDZmU5cUl5ZjlCZnpCSlViZldqT0RnUDYtQnVocUZqUUFlcXQxMnlJWEdjR1hjeXk0WkQ1NXVZYUJ5d01vdk9vZk1sbWhJVF9JR3g2YlJBSEx3allxNnNILVRXXzV3Q180MnJyWjQtLS1VV2tRbjF6bjhhdGRZSm5ETkhhZ0VQUnFNbnp2RTBSMzhOazJvdEZpVnBpWUdvZFBfSy1MdW9PUlBLdHFwYjRMZGJpUjlrTS11aEl1WW5xeHZfNGNKdWhIXzMtd0JGQnVoSTJ1dUFpMTJhSHdyZ2ZnV0tEa0FnYzBJNHV3TmFROGpJS0c3TWtlSmhQT3U4MXAxa1lNOTlDSzJtRFlGaGpnZ3JvUl93ZHdsdklHMzNaX1YydFZ2SHh1TmRVQ2VnN0pYVHdHTVQ2dDJ4UkdBcFcwSTBJcWVFUV9BZEJpdHhCRWVUYUEiLAogICJleHBpcmVzX2luIjogMzU5OTksCiAgInJlZnJlc2hfZXhwaXJlc19pbiI6IDE4MDAsCiAgInJlZnJlc2hfdG9rZW4iOiAiZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJZ09pQWlTbGRVSWl3aWEybGtJaUE2SUNKbU1HVmpNelUzT0Mxa1pUQTFMVFJrWm1JdE9XRmpNQzFrWldFd01UWXpZMkV6WWpnaWZRLmV5SmxlSEFpT2pFMk16YzVORGMxTmpJc0ltbGhkQ0k2TVRZek56azBOVGMyTWl3aWFuUnBJam9pWmpJek9XTTFOelV0WXpsaFpDMDBPV05tTFRobVpHRXRNRGd3TnpjNE1EWTBZMlExSWl3aWFYTnpJam9pYUhSMGNEb3ZMMnh2WTJGc2FHOXpkRG80TURneEwyRjFkR2d2Y21WaGJHMXpMM1JsYzNSeklpd2lZWFZrSWpvaWFIUjBjRG92TDJ4dlkyRnNhRzl6ZERvNE1EZ3hMMkYxZEdndmNtVmhiRzF6TDNSbGMzUnpJaXdpYzNWaUlqb2lOREF4WlRWalpHRXROekV6T1MwMFl6bGpMV0ZqTWpVdFlXSXhZVEU1TWpZelpETTVJaXdpZEhsd0lqb2lVbVZtY21WemFDSXNJbUY2Y0NJNkluTndjbWx1Wnkxa1pXMXZJaXdpYzJWemMybHZibDl6ZEdGMFpTSTZJamxtWldNMU9ETTVMVEl6WW1VdE5HTmtZaTA0WWpsa0xURTBPRGs0T1RZek16WmlZaUlzSW5OamIzQmxJam9pY0hKdlptbHNaU0JsYldGcGJDSXNJbk5wWkNJNklqbG1aV00xT0RNNUxUSXpZbVV0TkdOa1lpMDRZamxrTFRFME9EazRPVFl6TXpaaVlpSjkuUkNpVmNGbGtLM2hrSHRGaFZKSEt6ZTFvQmZfdXBtQjZ2eFZ1WnlDV1l4ayIsCiAgInRva2VuX3R5cGUiOiAiQmVhcmVyIiwKICAibm90LWJlZm9yZS1wb2xpY3kiOiAwLAogICJzZXNzaW9uX3N0YXRlIjogIjlmZWM1ODM5LTIzYmUtNGNkYi04YjlkLTE0ODk4OTYzMzZiYiIsCiAgInNjb3BlIjogInByb2ZpbGUgZW1haWwiCn0KYGBgCgpPbmNlIHlvdSBoYXZlIHRoZSBhY2Nlc3MgdG9rZW4sIHlvdSBjYW4gdXNlIGl0IHRvIEF1dGhvcml6ZSBTd2FnZ2VyIFVJJ3MgcmVxdWVzdHMgYnkgCmNsaWNraW5nIG9uIHRoZSBgQXV0aG9yaXplYCBidXR0b24gYW5kIHBhc3RpbmcgdGhlIHZhbHVlIGludG8gdGhlIGZpZWxkLiBJZiB5b3Ugb3B0CnRvIHdvcmsgd2l0aCB0cmFkaXRpb25hbCBIVFRQIHJlcXVlc3RzLCBtYWtlIHN1cmUgdG8gc2V0IHRoZSB2YWx1ZSBvZiB0aGUgYEF1dGhvcml6YXRpb25gCmhlYWRlciB0byBiZSBvZiB0eXBlIGBCZWFyZXJgLCBoZXJlJ3MgYW4gZXhhbXBsZSB3aXRoIHRoZSBhY2Nlc3MgdG9rZW4gZnJvbSBhYm92ZToKCmBgYGh0dHAgcmVxdWVzdApHRVQgaHR0cDovL2xvY2FsaG9zdDo4MDgwL25vdGVzCkFjY2VwdDogYXBwbGljYXRpb24vanNvbgpBdXRob3JpemF0aW9uOiBCZWFyZXIgZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJZ09pQWlTbGRVSWl3aWEybGtJaUE2SUNKbU1HVmpNelUzT0Mxa1pUQTFMVFJrWm1JdE9XRmpNQzFrWldFd01UWXpZMkV6WWpnaWZRLmV5SmxlSEFpT2pFMk16YzVORGMxTmpJc0ltbGhkQ0k2TVRZek56azBOVGMyTWl3aWFuUnBJam9pWmpJek9XTTFOelV0WXpsaFpDMDBPV05tTFRobVpHRXRNRGd3TnpjNE1EWTBZMlExSWl3aWFYTnpJam9pYUhSMGNEb3ZMMnh2WTJGc2FHOXpkRG80TURneEwyRjFkR2d2Y21WaGJHMXpMM1JsYzNSeklpd2lZWFZrSWpvaWFIUjBjRG92TDJ4dlkyRnNhRzl6ZERvNE1EZ3hMMkYxZEdndmNtVmhiRzF6TDNSbGMzUnpJaXdpYzNWaUlqb2lOREF4WlRWalpHRXROekV6T1MwMFl6bGpMV0ZqTWpVdFlXSXhZVEU1TWpZelpETTVJaXdpZEhsd0lqb2lVbVZtY21WemFDSXNJbUY2Y0NJNkluTndjbWx1Wnkxa1pXMXZJaXdpYzJWemMybHZibDl6ZEdGMFpTSTZJamxtWldNMU9ETTVMVEl6WW1VdE5HTmtZaTA0WWpsa0xURTBPRGs0T1RZek16WmlZaUlzSW5OamIzQmxJam9pY0hKdlptbHNaU0JsYldGcGJDSXNJbk5wWkNJNklqbG1aV00xT0RNNUxUSXpZbVV0TkdOa1lpMDRZamxrTFRFME9EazRPVFl6TXpaaVlpSjkuUkNpVmNGbGtLM2hrSHRGaFZKSEt6ZTFvQmZfdXBtQjZ2eFZ1WnlDV1l4awpgYGAKCiMjIENvbnRyaWJ1dGluZwoKVGhpcyBwcm9qZWN0IGlzIG1lYW50IHRvIGJlIGEgd2F5IG9mIHNob3djYXNpbmcgc29tZSBvZiB0aGUgYmVzdCBwcmFjdGljZXMgYW5kIAp0ZWNobm9sb2dpZXMgSSd2ZSBjb21lIGFjcm9zcyBpbiB0aGUgcGFzdCBmZXcgeWVhcnMuIEknbSBhbHdheXMgaW50ZXJlc3RlZCBpbgpsZWFybmluZyBtb3JlLCBkaXNjdXNzaW5nIGRpZmZlcmVudCBwb2ludHMgb2Ygdmlld3MgYW5kIGFwcHJvYWNoZXMuIElmIHlvdSBjYW4KY29udHJpYnV0ZSB0byB0aGlzIHJlcG9zaXRvcnkgaW4gYW55IG1lYW5pbmdmdWwgd2F5LCBiZSBpdCBieSBzaG93Y2FzaW5nIHNvbWV0aGluZwpuZXcgb3IgaW1wcm92aW5nIHdoYXQgaGFzIGJlZW4gaW1wbGVtZW50ZWQgYWxyZWFkeSwgeW91IGFyZSBtb3JlIHRoYW4gd2VsY29tZSB0bwpvcGVuIGEgcHVsbCByZXF1ZXN0IGFuZCBzdGFydCBhIGRpc2N1c3Npb24h readmeEtag: '"1fac9e76a587c109e41ac069da91cece9f5f2569"' readmeLastModified: Wed, 22 Dec 2021 23:31:44 GMT repositoryId: 424862094 description: >- Demo microservice implemented with Spring Boot, showcasing tools such as Gradle, JaCoCo, Testcontainers and others created: '2021-11-05T07:27:48Z' updated: '2024-11-06T09:17:30Z' language: Java archived: true stars: 3 watchers: 1 forks: 0 owner: jorgebsa logo: https://avatars.githubusercontent.com/u/7410139?v=4 repoEtag: '"08225033905761dde0d7d184b8bee768153faaacd064330a7a27a0cb520ddcf3"' repoLastModified: Wed, 06 Nov 2024 09:17:30 GMT foundInMaster: true category: - Testing - Server Implementations id: 8caced4e5b7df4143e574e47313418d4 - source: - openapi3 tags - openapi31 tags repository: https://github.com/wojtekkarwacki/python-openapi-generator-rust v3: true v3_1: true id: d4a37ecbba0d8265cc4f653f92ffcf2d repositoryMetadata: base64Readme: >- PHA+CiAgPGI+UHl0aG9uIFNlcnZlciBPcGVuQVBJIEdlbmVyYXRvciwgUHl0aG9uIENsaWVudCBPcGVuQVBJIEdlbmVyYXRvciwgS290bGluIFNlcnZlciBPcGVuQVBJIEdlbmVyYXRvcjwvYj4KPC9wPgoKLS0tCgo8cCBhbGlnbj0iY2VudGVyIj4KICA8Yj5Eb2N1bWVudGF0aW9uLCBzb3VyY2UgY29kZTogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3drYXJ3YWNraS9weXRob24tb3BlbmFwaS1nZW5lcmF0b3ItcnVzdCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vZ2l0aHViLmNvbS93a2Fyd2Fja2kvcHl0aG9uLW9wZW5hcGktZ2VuZXJhdG9yLXJ1c3Q8L2E+PC9iPgo8L3A+CgotLS0KIyBUcnVzdCBTcGVjCgpUcnVzdCBTcGVjIGlzIGEgd2ViIGludGVncmF0aW9uIHNwZWNpZmljYXRpb24gYW5kIGEgc2V0IG9mIGNvZGUgZ2VuZXJhdG9ycyBhaW1pbmcgdG8gYmUgYSBzdWJzdGl0dXRlIGZvciBPcGVuQVBJLiBJdCBwcm92aWRlcyBhIHVuaWZpZWQgd2F5IHRvIGRlc2NyaWJlIGRhdGEgdHJhbnNmZXIgaW50ZXJmYWNlcyBhbmQgZ2VuZXJhdGVzIG1vZGVybiwgdHlwZS1zYWZlIGNvZGUuCgojIyBUYWJsZSBvZiBDb250ZW50cwotIFtJIGp1c3Qgd2FudCB0byBnbHVlIG15IHNlcnZpY2VzIHRvZ2V0aGVyXSgjaS1qdXN0LXdhbnQtdG8tZ2x1ZS1teS1zZXJ2aWNlcy10b2dldGhlcikKLSBbUmVxdWlyZW1lbnRzXSgjcmVxdWlyZW1lbnRzKQotIFtTcGVjaWZpY2F0aW9uXSgjc3BlY2lmaWNhdGlvbikKICAtIFtPdmVydmlld10oI292ZXJ2aWV3KQogIC0gW0NvbW1vbiBVc2UgQ2FzZXNdKCNjb21tb24tdXNlLWNhc2VzKQotIFtDb2RlIEdlbmVyYXRpb25dKCNjb2RlLWdlbmVyYXRpb24pCiAgLSBbR2VuZXJhdG9yIE9wdGlvbnNdKCNnZW5lcmF0b3Itb3B0aW9ucykKICAtIFtTdXBwb3J0ZWQgR2VuZXJhdG9yc10oI3N1cHBvcnRlZC1nZW5lcmF0b3JzKQogICAgLSBbRXhwZXJpbWVudGFsIEdlbmVyYXRvcnNdKCNleHBlcmltZW50YWwtZ2VuZXJhdG9ycykKICAtIFtHZW5lcmF0b3JzIERvY3VtZW50YXRpb25dKCNnZW5lcmF0b3JzLWRvY3VtZW50YXRpb24pCi0gW0NvbnZlcnNpb24gZnJvbSBPcGVuQVBJXSgjY29udmVyc2lvbi1mcm9tLW9wZW5hcGkpCi0gW0NvbnZlcnNpb24gdG8gT3BlbkFQSV0oI2NvbnZlcnNpb24tdG8tb3BlbmFwaSkKLSBbQnVpbGRpbmcgVHJ1c3QgQ0xJXSgjYnVpbGRpbmctdHJ1c3QtY2xpKQogIC0gW1dpdGggRG9ja2VyXSgjd2l0aC1kb2NrZXIpCiAgLSBbRnJvbSBTb3VyY2VdKCNmcm9tLXNvdXJjZSkKCiMjIEkganVzdCB3YW50IHRvIGdsdWUgbXkgc2VydmljZXMgdG9nZXRoZXIKSW5zdGFsbCBUcnVzdDoKYGBgc2hlbGwKJCBwaXAgaW5zdGFsbCB0cnVzdHNwZWNjbGkKYGBgClRoZW4sIHJ1bjoKYGBgc2hlbGwKJCB0cnVzdAoKVXNhZ2U6IHRydXN0IDxDT01NQU5EPgoKQ29tbWFuZHM6CiAgZnJvbS1vcGVuLWFwaSAgQ29udmVydCBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gdG8gYSBUcnVzdCBzcGVjaWZpY2F0aW9uLiBJbnRlZ3JhdGUgdGhpcyBpbnRvIHlvdXIgYnVpbGQgcHJvY2VzcyB0byB1dGlsaXplIFRydXN0J3MgY29kZSBnZW5lcmF0b3JzCiAgdG8tb3Blbi1hcGkgICAgQ29udmVydCBhIFRydXN0IHNwZWNpZmljYXRpb24gYmFjayB0byBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24sIHVzZWZ1bCB3aGVuIGEgVHJ1c3QgY29kZSBnZW5lcmF0b3IgaXMgbm90IGF2YWlsYWJsZSBmb3IgeW91ciB0YXJnZXQgbGFuZ3VhZ2UKICBnZW5lcmF0ZSAgICAgICBHZW5lcmF0ZSBjb2RlIGJhc2VkIG9uIGEgVHJ1c3Qgc3BlY2lmaWNhdGlvbgogIGhlbHAgICAgICAgICAgIFByaW50IHRoaXMgbWVzc2FnZSBvciB0aGUgaGVscCBvZiB0aGUgZ2l2ZW4gc3ViY29tbWFuZChzKQoKT3B0aW9uczoKICAtaCwgLS1oZWxwICAgICBQcmludCBoZWxwCiAgLVYsIC0tdmVyc2lvbiAgUHJpbnQgdmVyc2lvbgpgYGAKCi0gSWYgeW91IGFscmVhZHkgaGF2ZSBhbiBPcGVuQVBJIHNwZWM6CiAgMS4gZmlyc3QgY29udmVydCBpdCB0byBUcnVzdCBzcGVjIHdpdGggYGZyb20tb3Blbi1hcGlgIGNvbW1hbmQKICAyLiBhbmQgdGhlbiBnZW5lcmF0ZSB0aGUgZ2x1ZSBjb2RlIHdpdGggYGdlbmVyYXRlYCBjb21tYW5kLgoKICA+IDpleGNsYW1hdGlvbjogTm90ZSB0aGF0IHlvdSBtYXkgZWFzaWx5IGF1dG9tYXRlIHRoZSB3aG9sZSBwcm9jZXNzIGNvbWJpbmluZyB0aGUgdHdvIHN0ZXBzIGFib3ZlLCBob3dldmVyIGl0IGlzIHJlY29tbWVuZGVkIHRvIG1ha2UgYSBtaWdyYXRpb24gb25jZSBhbmQgbGV2ZXJhZ2UgVHJ1c3Qgc3BlYydzIGV4cHJlc3NpdmVuZXNzIGluIGxvbmctdGVybS4KCi0gKipXaXRob3V0IGFuIE9wZW5BUEkgc3BlYzoqKgogIC0gU3RhcnQgZGlyZWN0bHkgd2l0aCBUcnVzdCBzcGVjLgoKLSAqKlRvIGNvbnRpbnVlIHVzaW5nIE9wZW5BUEkgZm9yIGNvZGUgZ2VuZXJhdGlvbjoqKgogIC0gVXNlIFRydXN0IHNwZWMgYXMgYW4gaW50ZXJtZWRpYXRlIGZvcm1hdCB3aXRoIHRoZSBgdG8tb3Blbi1hcGlgIGNvbW1hbmQuCgojIyBSZXF1aXJlbWVudHMKLSBQeXRob24gMy4xNCAtIGN1cnJlbnRseSB0aGUgb25seSBzdXBwb3J0ZWQgdmVyc2lvbgoKIyMgU3BlY2lmaWNhdGlvbgpUcnVzdCBzcGVjaWZpY2F0aW9uIGVuaGFuY2VzIGN1cnJlbnQgaW50ZWdyYXRpb24gc3RhbmRhcmRzIGxpa2UgW09wZW5BUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKS4gS2V5IGJlbmVmaXRzIGluY2x1ZGU6Ci0gKipDbGVhciBOb3RhdGlvbioqIC0gU2luZ2xlIHdheSB0byBtb2RlbCBhbmQgaW50ZXJwcmV0IGFuIEFQSS4KLSAqKkdlbmVyaWMgVHlwZXMqKiAtIEN1c3RvbWl6YWJsZSB0eXBlcyB3aXRoIHBhcmFtZXRlcnMgZm9yIGRpZmZlcmVudCBjb250ZXh0cy4KLSAqKk1pbmltYWxpc3RpYyoqIC0gU2ltcGxlLCBlZmZpY2llbnQgbGFuZ3VhZ2Ugd2l0aG91dCByZWR1bmRhbnQgZmVhdHVyZXMuCi0gKipXZWIgU3lzdGVtIEludGVncmF0aW9uIEZvY3VzZWQqKiAtIElkZWFsIGZvciB0eXBlLXNhZmUgc3lzdGVtIGludGVncmF0aW9uLgotICoqSGlnaGx5IEN1c3RvbWl6YWJsZSoqIC0gRXh0ZW5zaXZlIFtoYW5kbGViYXJzXShodHRwczovL2dpdGh1Yi5jb20vc3Vubmc4Ny9oYW5kbGViYXJzLXJ1c3QpIGhlbHBlcnMgZm9yIHRlbXBsYXRlIG1vZGlmaWNhdGlvbi4KLSAqKlByb3RvY29sLUFnbm9zdGljKiogLSBEZXNpZ25lZCBmb3IgSFRUUCBidXQgYXBwbGljYWJsZSB0byBhbnkgQVBJIHR5cGUuCgpJdCBhZGRyZXNzZXMgaW5oZXJlbnQgT3BlbkFQSSBpc3N1ZXMgd2l0aDoKLSAqKkVuY2xvc2VkIEFsZ2VicmFpYyBEYXRhIFR5cGVzKiogLSBBbGwgc3VidHlwZXMgb2YgYW4gQURUIGFyZSBncm91cGVkIGluIGEgc2luZ2xlIGBhZHRgIG5vZGUuCgojIyMgT3ZlcnZpZXcKRXhhbXBsZXMgYW5kIG1vcmUgdXNhZ2UgZGV0YWlscyBjYW4gYmUgZm91bmQgaW4gW3Rlc3RzXShodHRwczovL2dpdGh1Yi5jb20vd2thcndhY2tpL3B5dGhvbi1vcGVuYXBpLWdlbmVyYXRvci1ydXN0L3RyZWUvbWFzdGVyL3NyYy9saWIvdGVzdCkuCgoqKkRhdGEgVHlwZXM6KioKLSAqKlNpbXBsZSBUeXBlczoqKgogIC0gYHR5cGU6IGJvb2xgIC0gZXF1aXZhbGVudCB0byBPcGVuQVBJIGB0eXBlOiBib29sZWFuYAogIC0gYHR5cGU6IGludGAgLSBlcXVpdmFsZW50IHRvIE9wZW5BUEkgYHR5cGU6IGludGVnZXJgIHdpdGggYGZvcm1hdDogaW50NjRgCiAgLSBgdHlwZTogZGVjYCAtIGVxdWl2YWxlbnQgdG8gT3BlbkFQSSBgdHlwZTogbnVtYmVyYAogIC0gYHR5cGU6IHN0cmAgLSBlcXVpdmFsZW50IHRvIE9wZW5BUEkgYHR5cGU6IHN0cmluZ2AKICAtIGB0eXBlOiBlbnVtYCAtIGVxdWl2YWxlbnQgdG8gT3BlbkFQSSBgdHlwZTogc3RyaW5nYCB3aXRoIGBlbnVtYAotICoqQ29tcGxleCBUeXBlczoqKgogIC0gYHR5cGU6IG9iamAgLSBlcXVpdmFsZW50IHRvIE9wZW5BUEkgYHR5cGU6IG9iamVjdGAKICAtIGB0eXBlOiBzZXFgIC0gZXF1aXZhbGVudCB0byBPcGVuQVBJIGB0eXBlOiBhcnJheWAKICAtIGB0eXBlOiBtYXBgIC0gZXF1aXZhbGVudCB0byBPcGVuQVBJIGB0eXBlOiBvYmplY3RgIHdpdGggYGFkZGl0aW9uYWxQcm9wZXJ0aWVzYAotICoqU3BlY2lhbCBUeXBlczoqKgogIC0gYHR5cGU6IGFsaWFzYCAtIGVxdWl2YWxlbnQgdG8gT3BlbkFQSSBgJHJlZmAKICAtIGB0eXBlOiBzdHJ1Y3RgIC0gZXF1aXZhbGVudCB0byBPcGVuQVBJIGVtcHR5IHNjaGVtYSAoYHt9YCkKICAtIGB0eXBlOiBjb25zdGAgLSBlcXVpdmFsZW50IHRvIE9wZW5BUEkgYGNvbnN0YAoKIyMjIENvbW1vbiBVc2UgQ2FzZXMKCioqSW5jbHVkaW5nIFZhcmlhYmxlcyBmcm9tIE90aGVyIFR5cGVzOioqCiAgYGBgeWFtbAogIFBhcmVudDoKICAgIHR5cGU6IG9iagogICAgdmFyczoKICAgICAgcGFyZW50VmFyOgogICAgICAgIHR5cGU6IGRlYwogIEFub3RoZXJQYXJlbnQ6CiAgICB0eXBlOiBvYmoKICAgIHZhcnM6CiAgICAgIGFub3RoZXJQYXJlbnRWYXI6CiAgICAgICAgdHlwZTogYm9vbAogIFdpdGhQYXJlbnRzVmFyczoKICAgIHR5cGU6IG9iagogICAgbWl4OgogICAgICAtIHBhdGg6ICJkZWZzLlBhcmVudCIKICAgICAgLSBwYXRoOiAiZGVmcy5Bbm90aGVyUGFyZW50IgogICAgdmFyczoKICAgICAgb3duVmFyOgogICAgICAgIHR5cGU6IGludAogIGBgYApSZXN1bHRzIGluOgogIGBgYGpzb24KICB7CiAgICAicGFyZW50VmFyIjogMS4wLAogICAgImFub3RoZXJQYXJlbnRWYXIiOiB0cnVlLAogICAgIm93blZhciI6IDEKICB9CiAgYGBgCgoqKkFsZ2VicmFpYyBEYXRhIFR5cGVzIChVbmlvbiBUeXBlcyk6KioKICBgYGB5YW1sCiAgQWR0VHlwZToKICAgIHR5cGU6IG9iagogICAgdmFyczogCiAgICAgIGRpc2NyaW1pbmF0b3JWYXI6CiAgICAgICAgdHlwZTogc3RyCiAgICAgIHNvbWVPdGhlclZhcjoKICAgICAgICB0eXBlOiBkZWMKICAgIGFkdDoKICAgICAgdmFyOiBkaXNjcmltaW5hdG9yVmFyCiAgICAgIG1hcDoKICAgICAgICBmaXJzdFN1YnR5cGU6CiAgICAgICAgICB2YXJzOgogICAgICAgICAgICBmaXJzdFN1YnR5cGVWYXI6CiAgICAgICAgICAgICAgdHlwZTogaW50CiAgICAgICAgc2Vjb25kU3VidHlwZToKICAgICAgICAgIHZhcnM6CiAgICAgICAgICAgIHNlY29uZFN1YnR5cGVWYXI6CiAgICAgICAgICAgICAgdHlwZTogYm9vbAogIGBgYApJbnRlcnByZXRlZCBhczoKICBgYGBqc29uCiAgewogICAgImRpc2NyaW1pbmF0b3JWYXIiOiAiZmlyc3RTdWJ0eXBlIiwKICAgICJzb21lT3RoZXJWYXIiOiAxLjAsCiAgICAiZmlyc3RTdWJ0eXBlVmFyIjogMQogIH0KICBgYGAKICBgYGBqc29uCiAgewogICAgImRpc2NyaW1pbmF0b3JWYXIiOiAic2Vjb25kU3VidHlwZSIsCiAgICAic29tZU90aGVyVmFyIjogMS4wLAogICAgInNlY29uZFN1YnR5cGVWYXIiOiB0cnVlCiAgfQogIGBgYAoKCioqR2VuZXJpYyBUeXBlczoqKgogIGBgYHlhbWwKICBkZWZzOgogICAgU29tZU5hbWVkU3RyaW5nOgogICAgICB0eXBlOiBzdHIKICAgIFBhcmFtZXRlcml6ZWRUeXBlOgogICAgICB0eXBlOiBvYmoKICAgICAgdmFyczoKICAgICAgICB2YXJPZlBhcmFtQWJjVHlwZToKICAgICAgICAgIHBhcmFtOiBQYXJhbUFiYyAjIHRvIGRlY2xhcmUgYSBnZW5lcmljIHR5cGUsIHlvdSBuZWVkIHRvIHNpbXBseSB1c2UgYSAncGFyYW0nIGtleXdvcmQKICAgICAgICB2YXJPZlBhcmFtWHl6VHlwZToKICAgICAgICAgIHBhcmFtOiBQYXJhbVh5eiAjIHNpbWlsYXJseSB0byB0aGUgYWJvdmUsIHRoaXMgdGltZSB3aXRoIGEgZGlmZmVyZW50IG5hbWUKICAgICAgICBhbm90ZXJWYXJPZlBhcmFtWHl6VHlwZToKICAgICAgICAgIHBhcmFtOiBQYXJhbVh5eiAjIHNpbWlsYXJseSB0byB0aGUgYWJvdmUsIHRoaXMgdGltZSB3aXRoIGEgZGlmZmVyZW50IG5hbWUKICAgIFN1YnR5cGVPZlBhcmFtZXRlcml6ZWRUeXBlOgogICAgICB0eXBlOiBvYmoKICAgICAgZXh0OiAjIGV4dGVuZGluZyBhIGdlbmVyaWMgdHlwZQogICAgICAgIHBhdGg6ICdkZWZzLlBhcmFtZXRlcml6ZWRUeXBlJwogICAgICAgIGFyZ3M6ICMgd2l0aCBiZWxvdyB0eXBlLWFyZ3VtZW50cwogICAgICAgICAgUGFyYW1BYmM6CiAgICAgICAgICAgIHR5cGU6IGJvb2wKICAgICAgICAgIFBhcmFtWHl6OgogICAgICAgICAgICBwYXRoOiAnZGVmcy5Tb21lVHlwZScKICBgYGAKRXF1aXZhbGVudCB0bzoKICBgYGBqYXZhCiAgaW50ZXJmYWNlIFBhcmFtZXRlcml6ZWRUeXBlPFBhcmFtQWJjLCBQYXJhbVh5ej4geyAKICAgIFBhcmFtQWJjIHZhck9mUGFyYW1BYmNUeXBlOyAKICAgIFBhcmFtWHl6IHZhck9mUGFyYW1YeXpUeXBlOyAKICAgIFBhcmFtWHl6IGFub3RlclZhck9mUGFyYW1YeXpUeXBlOyAKICB9CiAgaW50ZXJmYWNlIFN1YnR5cGVPZlBhcmFtZXRlcml6ZWRUeXBlIGV4dGVuZHMgUGFyYW1ldGVyaXplZFR5cGU8Qm9vbGVhbiwgU29tZVR5cGU+IHsgfQogIGBgYAoKIyMgQ29kZSBHZW5lcmF0aW9uCgpgYGBzaGVsbAokIHRydXN0IGdlbmVyYXRlIC1oCkdlbmVyYXRlIGNvZGUgYmFzZWQgb24gYSBUcnVzdCBzcGVjaWZpY2F0aW9uCgpVc2FnZTogdHJ1c3QgZ2VuZXJhdGUgW09QVElPTlNdIDxMQU5HPiA8Uk9MRT4gPElOUFVUPiA8T1VUUFVUPgoKQXJndW1lbnRzOgogIDxMQU5HPiAgICBTZWxlY3QgdGhlIHRhcmdldCBwcm9ncmFtbWluZyBsYW5ndWFnZSBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlIFtwb3NzaWJsZSB2YWx1ZXM6IGtvdGxpbiwgcHl0aG9uLCBzY2FsYSwgdHlwZS1zY3JpcHRdCiAgPFJPTEU+ICAgIFNwZWNpZnkgd2hldGhlciB0byBnZW5lcmF0ZSBzZXJ2ZXIgb3IgY2xpZW50IGNvZGUgW3Bvc3NpYmxlIHZhbHVlczogY2xpZW50LCBzZXJ2ZXJdCiAgPElOUFVUPiAgIFBhdGggdG8gdGhlIFRydXN0IHNwZWNpZmljYXRpb24gZmlsZQogIDxPVVRQVVQ+ICBEaXJlY3Rvcnkgd2hlcmUgdGhlIGdlbmVyYXRlZCBjb2RlIHdpbGwgYmUgc2F2ZWQKCk9wdGlvbnM6CiAgLWMgPENPTkZJRz4gICAgICAgICAgICAgIE9wdGlvbmFsIHBhdGggdG8gYSBnZW5lcmF0b3IgY29uZmlndXJhdGlvbiBmaWxlLiBSZWZlciB0byB0aGUgVHJ1c3QgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscwogIC10IDxURU1QTEFURVNfUEFUSD4gICAgICBPcHRpb25hbCBwYXRoIHRvIGEgY3VzdG9tIHRlbXBsYXRlcyBkaXJlY3RvcnkuIEZvciBpbnN0YW5jZSwgeW91IGNhbiBvdmVycmlkZSBhbnkgdGVtcGxhdGUgZm91bmQgYXQgaHR0cHM6Ly9naXRodWIuY29tL3drYXJ3YWNraS9weXRob24tb3BlbmFwaS1nZW5lcmF0b3ItcnVzdC90cmVlL21hc3Rlci9zcmMvbGliL2dlbi9weXRob24vc2VydmVyL3RlbXBsYXRlcywgaG93ZXZlciB0aGlzIGNhbiBiZSBjb25maWd1cmVkIGZvciBhbGwgbGFuZ3VhZ2VzIGFuZCByb2xlcwogIC1oLCAtLWhlbHAgICAgICAgICAgICAgICBQcmludCBoZWxwCmBgYAoKIyMjIEdlbmVyYXRvciBPcHRpb25zCllvdSBjYW4gY3VzdG9taXplIHRoZSBnZW5lcmF0b3IgYmVoYXZpb3IgYnkgcGFzc2luZyBhIHJlbGV2YW50IGB5bWxgIGNvbmZpZ3VyYXRpb24gZmlsZS4gVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBhdmFpbGFibGU6CiogYHR5cGVNYXBwaW5nOiBkaWN0W3N0ciwgc3RyXWAgLSBNYXAgVHJ1c3QgU3BlYyB0eXBlIHRvIGFueSBwcm92aWRlZCB0eXBlIGluIGEgdHlwZS1zYWZlIHdheS4gR2VuZXJhdGVkIGNvZGUgZm9yIGJvdGggc2VydmVyIGFuZCBjbGllbnQgaXMgc3VwcG9zZWQgdG8gcGljayB1cCBvbiBtYXBwaW5nIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIHNvIHRoYXQgYW55IGVycm9ycyBpbiBzdWNoIHdpbGwgYmUgY2F1Z2h0IGF0IGNvbXBpbGUgdGltZS4KKiBgbW9kdWxlOiBzdHJgIC0gU3BlY2lmeSB0aGUgbW9kdWxlIG5hbWUgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZQoqIGBkdG9OYW1lOiBzdHJgIC0gUHJvdmlkZSB0aGUgY3VzdG9tIEhhbmRsZWJhcnMgdGVtcGxhdGUgZm9yIG5hbWluZyBEVE8gY2xhc3NlcywgYnkgZGVmYXVsdCBpdCBpcyBge3t2YWx9fUR0b2AKKiBgYXV0b0ltcGxlbWVudDogYm9vbGAgVGhpcyBvcHRpb24gaXMgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBbVHJ1c3QgU3BlYyBpbnRlZ3JhdGlvbiB0ZXN0cyBzdWl0ZV0oaHR0cHM6Ly9naXRodWIuY29tL3drYXJ3YWNraS9weXRob24tb3BlbmFwaS1nZW5lcmF0b3ItcnVzdC9ibG9iL21hc3Rlci9kb190ZXN0LnNoI0wxMykuCiAgKiBGb3Igc2VydmVyIGdlbmVyYXRvcnMgLSBQcm92aWRlcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBhbGwgdGhlIG9wZXJhdGlvbnMKICAqIEZvciBjbGllbnQgZ2VuZXJhdG9ycyAtIEdlbmVyYXRlcyB0ZXN0cyB3aXRoIGFsbCByZXF1aXJlZCBwYXJhbXMgdGhhdCB2ZXJpZnkgc2VydmVyJ3MgY29ycmVjdG5lc3MgCgojIyMgU3VwcG9ydGVkIEdlbmVyYXRvcnM6CgotIDxiPlB5dGhvbiBIVFRQIFNlcnZlciAoW2Zhc3RhcGldKGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby9mYXN0YXBpKSk8L2I+Ci0gPGI+UHl0aG9uIEhUVFAgQ2xpZW50IChbaHR0cHhdKGh0dHBzOi8vZ2l0aHViLmNvbS9lbmNvZGUvaHR0cHgpKTwvYj4KCiMjIyMgRXhwZXJpbWVudGFsIEdlbmVyYXRvcnM6Cj4gOmV4Y2xhbWF0aW9uOiBOb3QgZnVsbHkgaW1wbGVtZW50ZWQuIFVzZSBhdCB5b3VyIG93biByaXNrLgoKLSBLb3RsaW4gSFRUUCBTZXJ2ZXIgKFtzcHJpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9zcHJpbmctcHJvamVjdHMvc3ByaW5nLWZyYW1ld29yaykpCi0gU2NhbGEgSFRUUCBTZXJ2ZXIgKFtjYXNrXShodHRwczovL2dpdGh1Yi5jb20vY29tLWxpaGFveWkvY2FzaykpCgojIyMgR2VuZXJhdG9ycyBEb2N1bWVudGF0aW9uCkZvciBkZXRhaWxlZCBkb2N1bWVudGF0aW9uLCBmZWF0dXJlcyBhbmQgbGltaXRhdGlvbnMgb24gdGhlIHN1cHBvcnRlZCBjb2RlIGdlbmVyYXRvcnMsIHJlZmVyIHRvOgotIFtQeXRob24gSHR0cCBDbGllbnQgR2VuZXJhdG9yIERvY3VtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS93a2Fyd2Fja2kvcHl0aG9uLW9wZW5hcGktZ2VuZXJhdG9yLXJ1c3QvYmxvYi9tYXN0ZXIvc3JjL2xpYi9nZW4vcHl0aG9uL2NsaWVudC9SZWFkbWUubWQpCi0gW1B5dGhvbiBIdHRwIFNlcnZlciBHZW5lcmF0b3IgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3drYXJ3YWNraS9weXRob24tb3BlbmFwaS1nZW5lcmF0b3ItcnVzdC9ibG9iL21hc3Rlci9zcmMvbGliL2dlbi9weXRob24vc2VydmVyL1JlYWRtZS5tZCkKCgojIyBDb252ZXJzaW9uIGZyb20gT3BlbkFQSQpgYGBzaGVsbAokIHRydXN0IGZyb20tb3Blbi1hcGkgLWgKQ29udmVydCBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gdG8gYSBUcnVzdCBzcGVjaWZpY2F0aW9uLiBJbnRlZ3JhdGUgdGhpcyBpbnRvIHlvdXIgYnVpbGQgcHJvY2VzcyB0byB1dGlsaXplIFRydXN0J3MgY29kZSBnZW5lcmF0b3JzCgpVc2FnZTogdHJ1c3QgZnJvbS1vcGVuLWFwaSBbT1BUSU9OU10gPElOUFVUPiA8T1VUUFVUPgoKQXJndW1lbnRzOgogIDxJTlBVVD4gICBQYXRoIHRvIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZQogIDxPVVRQVVQ+ICBEaXJlY3Rvcnkgd2hlcmUgdGhlIG91dHB1dCBUcnVzdCBzcGVjaWZpY2F0aW9uIHdpbGwgYmUgc2F2ZWQKCk9wdGlvbnM6CiAgLWwgPExBWU9VVD4gICAgICBTcGVjaWZ5IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGNvbnZlcnRlZCBUcnVzdCBzcGVjaWZpY2F0aW9uIFtkZWZhdWx0OiBkZWZhdWx0XSBbcG9zc2libGUgdmFsdWVzOiBkZWZhdWx0LCB0YWddCiAgLWgsIC0taGVscCAgICAgICBQcmludCBoZWxwIChzZWUgbW9yZSB3aXRoICctLWhlbHAnKQoKYGBgCiogQ29udHJvbCB0aGUgbGF5b3V0IG9mIHRoZSBnZW5lcmF0ZWQgVHJ1c3Qgc3BlYyB3aXRoIHRoZSBgLWxgIG9wdGlvbi4gRm9yIGluc3RhbmNlLCBzZXR0aW5nIGl0IHRvIGB0YWdgIG9yZ2FuaXplcyB0aGUgVHJ1c3Qgc3BlYyBieSBPcGVuQVBJIHRhZ3MsIGFzIHNob3duIGluIHRoaXMgW2V4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS93a2Fyd2Fja2kvcHl0aG9uLW9wZW5hcGktZ2VuZXJhdG9yLXJ1c3QvYmxvYi9tYXN0ZXIvdGVzdC9pbnRlZ3JhdGlvbi9zcGVjcy9vcGVuYXBpX2Zhc3RhcGkvYXBpLnltbCNMOSkuCgojIyBDb252ZXJzaW9uIHRvIE9wZW5BUEkKCmBgYHNoZWxsCiQgdHJ1c3QgdG8tb3Blbi1hcGkgLWgKQ29udmVydCBhIFRydXN0IHNwZWNpZmljYXRpb24gYmFjayB0byBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24sIHVzZWZ1bCB3aGVuIGEgVHJ1c3QgY29kZSBnZW5lcmF0b3IgaXMgbm90IGF2YWlsYWJsZSBmb3IgeW91ciB0YXJnZXQgbGFuZ3VhZ2UKClVzYWdlOiB0cnVzdCB0by1vcGVuLWFwaSA8SU5QVVQ+CgpBcmd1bWVudHM6CiAgPElOUFVUPiAgUGF0aCB0byB0aGUgVHJ1c3Qgc3BlY2lmaWNhdGlvbiBmaWxlCgpPcHRpb25zOgogIC1oLCAtLWhlbHAgIFByaW50IGhlbHAKYGBgCgojIyBCdWlsZGluZyBUcnVzdCBDbGkKCiMjIyBXaXRoIERvY2tlcgpQcmVyZXF1aXNpdGVzOgotIFtEb2NrZXJdKGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9pbnN0YWxsLykKICBgYGBzaGVsbAogICQgLi9kb2NrZXIvYnVpbGQuc2gKICAkIGRvY2tlciBydW4gdHJ1c3QKICBgYGAKCiMjIyBGcm9tIFNvdXJjZQpQcmVyZXF1aXNpdGVzOgotIFtSdXN0XShodHRwczovL3d3dy5ydXN0LWxhbmcub3JnL3Rvb2xzL2luc3RhbGwpCiAgYGBgc2hlbGwKICAkIGNhcmdvIHJ1biB0cnVzdAogIGBgYAo= readmeEtag: '"79872888a2e1352524c01ec44eb39863121122d0"' readmeLastModified: Fri, 31 Oct 2025 08:36:48 GMT repositoryId: 834278095 description: >- Typesafe Python Client and Server OpenAPI generator written in Rust / Trust created: '2024-07-26T20:36:55Z' updated: '2026-01-14T16:58:58Z' language: Rust archived: false stars: 3 watchers: 1 forks: 0 owner: WojtekKarwacki logo: https://avatars.githubusercontent.com/u/24361894?v=4 license: Apache-2.0 repoEtag: '"a447b09ee0d6c8ce1ee41e8d4e8163411c4f4fb67f6ab55c215098bc7edc4a68"' repoLastModified: Wed, 14 Jan 2026 16:58:58 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/wkarwacki/python-openapi-generator-rust - source: openapi3 tags repository: https://github.com/chrimle/openapi-to-java-records-mustache-templates v3: true id: 3ea340810450fecfe6faffbbb7d5e31b repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXRvLWphdmEtcmVjb3Jkcy1tdXN0YWNoZS10ZW1wbGF0ZXMKWyFbSmF2YSBDSSB3aXRoIE1hdmVuXShodHRwczovL2dpdGh1Yi5jb20vQ2hyaW1sZS9vcGVuYXBpLXRvLWphdmEtcmVjb3Jkcy1tdXN0YWNoZS10ZW1wbGF0ZXMvYWN0aW9ucy93b3JrZmxvd3MvbWF2ZW4ueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpbWxlL29wZW5hcGktdG8tamF2YS1yZWNvcmRzLW11c3RhY2hlLXRlbXBsYXRlcy9hY3Rpb25zL3dvcmtmbG93cy9tYXZlbi55bWwpClshW01hdmVuIFBhY2thZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpbWxlL29wZW5hcGktdG8tamF2YS1yZWNvcmRzLW11c3RhY2hlLXRlbXBsYXRlcy9hY3Rpb25zL3dvcmtmbG93cy9tYXZlbi1wdWJsaXNoLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vQ2hyaW1sZS9vcGVuYXBpLXRvLWphdmEtcmVjb3Jkcy1tdXN0YWNoZS10ZW1wbGF0ZXMvYWN0aW9ucy93b3JrZmxvd3MvbWF2ZW4tcHVibGlzaC55bWwpClshW3BhZ2VzLWJ1aWxkLWRlcGxveW1lbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpbWxlL29wZW5hcGktdG8tamF2YS1yZWNvcmRzLW11c3RhY2hlLXRlbXBsYXRlcy9hY3Rpb25zL3dvcmtmbG93cy9wYWdlcy9wYWdlcy1idWlsZC1kZXBsb3ltZW50L2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpbWxlL29wZW5hcGktdG8tamF2YS1yZWNvcmRzLW11c3RhY2hlLXRlbXBsYXRlcy9hY3Rpb25zL3dvcmtmbG93cy9wYWdlcy9wYWdlcy1idWlsZC1kZXBsb3ltZW50KQoKUHJvamVjdCBjb250YWluaW5nIFtNdXN0YWNoZS10ZW1wbGF0ZXNdKGh0dHBzOi8vbXVzdGFjaGUuZ2l0aHViLmlvLykgdXNlZCBieSBbb3BlbmFwaS1nZW5lcmF0b3ItbWF2ZW4tcGx1Z2luXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL2Jsb2IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItbWF2ZW4tcGx1Z2luL1JFQURNRS5tZCkgdG8gZ2VuZXJhdGUgW0phdmEgUmVjb3Jkc10oaHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vZW4vamF2YS9qYXZhc2UvMTcvbGFuZ3VhZ2UvcmVjb3Jkcy5odG1sKSBmcm9tIFtPcGVuQVBJIFNwZWNpZmljYXRpb25zXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pLgoKVGhpcyBwcm9qZWN0IGNvbnRhaW5zIHRoZSAqKm11c3RhY2hlIHRlbXBsYXRlcyoqLgoKIyMgQXBhY2hlIExpY2Vuc2UgMi4wClN0YXJ0aW5nIHdpdGggcHJvamVjdCB2ZXJzaW9uICoqMi4wLjAqKiwgdGhlIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIgdGhlICoqQXBhY2hlIExpY2Vuc2UgMi4wKiouCj4gWyFOT1RFXQo+IFByaW9yIHRvIHZlcnNpb24gKioyLjAuMCoqLCB0aGUgcHJvamVjdCB3YXMgbGljZW5zZWQgdW5kZXIgdGhlICoqTUlUIExpY2Vuc2UqKi4gU2VlIFtMaWNlbnNlXSgjbGljZW5zZSkuCgojIyBTdXBwb3J0IHRoZSBQcm9qZWN0CklmIHlvdSBmaW5kIHRoaXMgcHJvamVjdCB1c2VmdWwsIHBsZWFzZSDirZAgKipTdGFyKiog4q2QIGl0IGFuZCBzaGFyZSBpdCB3aXRoIG90aGVycyEKVGhpcyBpcyB0aGUgYmVzdCB3YXkgdG8gc2hvdyBhcHByZWNpYXRpb24gZm9yIHRoaXMgcHJvamVjdCAtIFRoYW5rIHlvdSEg4p2k77iPCgpJZiB5b3UgaGF2ZSBmZWVkYmFjayBvciBzdWdnZXN0aW9ucywgcGxlYXNlIHNoYXJlIGl0IGluIGVpdGhlciBbRGlzY3Vzc2lvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpbWxlL29wZW5hcGktdG8tamF2YS1yZWNvcmRzLW11c3RhY2hlLXRlbXBsYXRlcy9kaXNjdXNzaW9ucykgb3IgW0lzc3Vlc10oaHR0cHM6Ly9naXRodWIuY29tL0NocmltbGUvb3BlbmFwaS10by1qYXZhLXJlY29yZHMtbXVzdGFjaGUtdGVtcGxhdGVzL2lzc3VlcykhCgo+IFshTk9URV0KPiBUaGlzIHByb2plY3QgaXMsIF9hbmQgd2lsbCBjb250aW51ZSB0byBiZV8sIHNvbGVseSBtYWludGFpbmVkIGJ5IFtDaHJpbWxlXShodHRwczovL2dpdGh1Yi5jb20vQ2hyaW1sZSkuIAo+IFdoaWxlIF9kaXJlY3RfIGNvZGUgY29udHJpYnV0aW9ucyBhcmUgZGlzYWxsb3dlZCwgeW91ciBmZWVkYmFjayBpcyB0aGUgbW9zdCB2YWx1YWJsZSBjb250cmlidXRpb24gLSBwbGVhc2Ugc2hhcmUgaXQhCgojIEdldHRpbmcgU3RhcnRlZApUaGUgbXVzdGFjaGUgdGVtcGxhdGVzIGFyZSBiZXN0IGFjcXVpcmVkIGJ5IGltcG9ydGluZyB0aGUgcHJvamVjdCBhcyBhIGRlcGVuZGVuY3kuCgo+IFshVElQXQo+IElmIHlvdSB3YW50IGEgbW9yZSBkZXRhaWxlZCBndWlkZSB3aXRoIHNpbXBsZSBleGFtcGxlcyB0byBnZXQgc3RhcnRlZCwgY2hlY2sgb3V0IHRoZSBXaWtpLXBhZ2UgCj4gW0JlZ2lubmVyIEd1aWRlIChTdGVwLWJ5LVN0ZXApXShodHRwczovL2dpdGh1Yi5jb20vQ2hyaW1sZS9vcGVuYXBpLXRvLWphdmEtcmVjb3Jkcy1tdXN0YWNoZS10ZW1wbGF0ZXMvd2lraS9CZWdpbm5lci1HdWlkZS0lMjhTdGVw4oCQYnnigJBTdGVwJTI5KS4KCiMjIEltcG9ydCBEZXBlbmRlbmN5Cj4gWyFOT1RFXQo+IFRoZSBNYXZlbiBhcnRpZmFjdCAqKm9ubHkqKiBjb250YWlucyB0aGUgYC5tdXN0YWNoZWAgdGVtcGxhdGUgZmlsZXMgYW5kIGEgYExJQ0VOU0UudHh0YC4gTm8gb3RoZXIgZmlsZXMgYXJlIGluY2x1ZGVkIGluIHRoZSBpbXBvcnRlZCBhcnRpZmFjdC4KCmBgYHhtbAo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPmlvLmdpdGh1Yi5jaHJpbWxlPC9ncm91cElkPgogICAgPGFydGlmYWN0SWQ+b3BlbmFwaS10by1qYXZhLXJlY29yZHMtbXVzdGFjaGUtdGVtcGxhdGVzPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+My4zLjA8L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgCkl0IGlzICoqc3Ryb25nbHkgcmVjb21tZW5kZWQqKiB0byBpbXBvcnQgdGhlIHByb2plY3QgYXMgYSBkZXBlbmRlbmN5LiBJdCBoYXMgb2ZmaWNpYWxseSBiZWVuIHB1Ymxpc2hlZCB0bzoKLSBbTWF2ZW4gQ2VudHJhbCBSZXBvc2l0b3J5XShodHRwczovL2NlbnRyYWwuc29uYXR5cGUuY29tL2FydGlmYWN0L2lvLmdpdGh1Yi5jaHJpbWxlL29wZW5hcGktdG8tamF2YS1yZWNvcmRzLW11c3RhY2hlLXRlbXBsYXRlcykKLSBbR2l0SHViIFBhY2thZ2VzXShodHRwczovL2dpdGh1Yi5jb20vQ2hyaW1sZS9vcGVuYXBpLXRvLWphdmEtcmVjb3Jkcy1tdXN0YWNoZS10ZW1wbGF0ZXMvcGFja2FnZXMvKQoKPiBbIVdBUk5JTkddCj4gV2hpbGUgaXQgaXMgX3Bvc3NpYmxlXyB0byBkb3dubG9hZCB0aGUgTXVzdGFjaGUgdGVtcGxhdGVzIGRpcmVjdGx5Cj4gZnJvbSBbR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vQ2hyaW1sZS9vcGVuYXBpLXRvLWphdmEtcmVjb3Jkcy1tdXN0YWNoZS10ZW1wbGF0ZXMvdHJlZS9tYWluL211c3RhY2hlLXRlbXBsYXRlcy90YXJnZXQvY2xhc3Nlcy90ZW1wbGF0ZXMpLAo+IHRoaXMgYXBwcm9hY2ggaXMgKipub3QgcmVjb21tZW5kZWQqKi4gVGVtcGxhdGVzIG9idGFpbmVkIHRoaXMgd2F5IGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSB2ZXJzaW9uZWQgY29ycmVjdGx5IGFuZAo+IGlzIGV4cGxpY2l0bHkgKipleGVtcHQqKiBmcm9tIHRoZSBbU2VtYW50aWMgVmVyc2lvbmluZ10oaHR0cHM6Ly9naXRodWIuY29tL0NocmltbGUvb3BlbmFwaS10by1qYXZhLXJlY29yZHMtbXVzdGFjaGUtdGVtcGxhdGVzL3dpa2kvU2VtYW50aWMtVmVyc2lvbmluZykgY29uc2lkZXJhdGlvbnMuCgojIyBVc2UgdGhlIGAubXVzdGFjaGVgIHRlbXBsYXRlcyB3aGVuIGdlbmVyYXRpbmcKUGxhY2UgdGhlIGZpbGUocykgaW4gZGVzaXJlZCBkaXJlY3RvcnkuIFRoZW4sIGluIHRoZSBNYXZlbiBidWlsZCBjb25maWd1cmF0aW9uLCBzZXQgdGhlIHByb3BlcnR5IGA8dGVtcGxhdGVEaXJlY3Rvcnk+YCB0byB0aGUgZGlyZWN0b3J5IHBhdGguIEV4YW1wbGU6CmBgYHhtbAo8YnVpbGQ+CiAgPHBsdWdpbnM+CiAgICA8cGx1Z2luPgogICAgICA8Z3JvdXBJZD5vcmcub3BlbmFwaXRvb2xzPC9ncm91cElkPgogICAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICAgIDxleGVjdXRpb25zPgogICAgICAgIDxleGVjdXRpb24+CiAgICAgICAgICA8Z29hbHM+CiAgICAgICAgICAgIDxnb2FsPmdlbmVyYXRlPC9nb2FsPgogICAgICAgICAgPC9nb2Fscz4KICAgICAgICAgIDxjb25maWd1cmF0aW9uPgogICAgICAgICAgICA8aW5wdXRTcGVjPjwhLS0gUmVsYXRpdmUgZGlyZWN0b3J5IHBhdGggdG8gdGhlIG9wZW5hcGkueWFtbCBmaWxlIC0tPjwvaW5wdXRTcGVjPgogICAgICAgICAgICA8dGVtcGxhdGVEaXJlY3Rvcnk+PCEtLSBSZWxhdGl2ZSBkaXJlY3RvcnkgcGF0aCB0byB0aGUgbXVzdGFjaGUgdGVtcGxhdGVzIC0tPjwvdGVtcGxhdGVEaXJlY3Rvcnk+CiAgICAgICAgICAgIDxvdXRwdXQ+PCEtLSBSZWxhdGl2ZSBkaXJlY3RvcnkgcGF0aCB0byB3aGVyZSBnZW5lcmF0ZWQgY2xhc3NlcyBzaG91bGQgYmUgcGxhY2VkIC0tPjwvb3V0cHV0PgogICAgICAgICAgPC9jb25maWd1cmF0aW9uPgogICAgICAgIDwvZXhlY3V0aW9uPgogICAgICA8L2V4ZWN1dGlvbnM+CiAgICA8L3BsdWdpbj4KICA8L3BsdWdpbnM+CjwvYnVpbGQ+CmBgYAojIyBBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb25zClRoZSBnZW5lcmF0ZWQgY2xhc3NlcyBhcmUgY3VzdG9taXphYmxlIGJ5IHVzaW5nIGA8Y29uZmlndXJhdGlvbj5gLXByb3BlcnRpZXMuCgpJbiB0aGlzIGV4YW1wbGUsIGVhY2ggZ2VuZXJhdGVkIGNsYXNzIGZpZWxkIHdpbGwgYmUgYW5ub3RhdGVkIHdpdGggW0pha2FydGEgQmVhbiBWYWxpZGF0aW9uIGFubm90YXRpb25zXShodHRwczovL2pha2FydGEuZWUvc3BlY2lmaWNhdGlvbnMvYmVhbi12YWxpZGF0aW9uLzMuMC9qYWthcnRhLWJlYW4tdmFsaWRhdGlvbi1zcGVjLTMuMC5odG1sI2J1aWx0aW5jb25zdHJhaW50cykuCmBgYHhtbAogIDxjb25maWd1cmF0aW9uPgogICAgPCEtLSAuLi4gbW9yZSBjb25maWd1cmF0aW9ucyAuLi4gLS0+CiAgICA8Y29uZmlnT3B0aW9ucz4KICAgICAgPHVzZUJlYW5WYWxpZGF0aW9uPnRydWU8L3VzZUJlYW5WYWxpZGF0aW9uPgogICAgICA8IS0tIC4uLiBtb3JlIGNvbmZpZ09wdGlvbnMgLi4uIC0tPgogICAgPC9jb25maWdPcHRpb25zPgogIDwvY29uZmlndXJhdGlvbj4KYGBgCgo+IFshVElQXQo+IFNlZSBbU3VwcG9ydGVkICdvcGVuYXBp4oCQZ2VuZXJhdG9y4oCQbWF2ZW7igJBwbHVnaW4nIENvbmZpZ3VyYXRpb24gb3B0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL0NocmltbGUvb3BlbmFwaS10by1qYXZhLXJlY29yZHMtbXVzdGFjaGUtdGVtcGxhdGVzL3dpa2kvU3VwcG9ydGVkLSUyN29wZW5hcGnigJBnZW5lcmF0b3LigJBtYXZlbuKAkHBsdWdpbiUyNy1Db25maWd1cmF0aW9uLW9wdGlvbnMpCgojIyBPcGVuQVBJIFNwZWNpZmljYXRpb24KPGRldGFpbHMgb3Blbj4KPHN1bW1hcnk+RXhhbXBsZSBPcGVuQVBJIFNwZWNpZmljYXRpb248L3N1bW1hcnk+CiAgICAKYGBgeWFtbApjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBOYW1lOgogICAgICBkZXNjcmlwdGlvbjogTmFtZSBJbmZvcm1hdGlvbgogICAgICB0eXBlOiBvYmplY3QKICAgICAgcmVxdWlyZWQ6CiAgICAgICAgLSBmaXJzdE5hbWUKICAgICAgICAtIGxhc3ROYW1lCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgZmlyc3ROYW1lOgogICAgICAgICAgZGVzY3JpcHRpb246IEZpcnN0IE5hbWUKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgbWluTGVuZ3RoOiAyCiAgICAgICAgbGFzdE5hbWU6CiAgICAgICAgICBkZXNjcmlwdGlvbjogTGFzdCBOYW1lCiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIG1pbkxlbmd0aDogMgogICAgICAgIG1pZGRsZU5hbWU6CiAgICAgICAgICBkZXNjcmlwdGlvbjogTWlkZGxlIE5hbWUKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgbnVsbGFibGU6IHRydWUKICAgIFBlcnNvbjoKICAgICAgZGVzY3JpcHRpb246IFBlcnNvbmFsIGluZm9ybWF0aW9uCiAgICAgIGRlcHJlY2F0ZWQ6IHRydWUKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gbmFtZQogICAgICAgIC0gYWdlCiAgICAgICAgLSBnZW5kZXIKICAgICAgICAtIGhlaWdodAogICAgICAgIC0gc3NuCiAgICAgICAgLSBhbGlhc2VzCiAgICAgICAgLSBlbWFpbAogICAgICAgIC0gdHJhY2tpbmdDb2RlCiAgICAgICAgLSB1dWlkCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgbmFtZToKICAgICAgICAgIGRlc2NyaXB0aW9uOiBOYW1lCiAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9OYW1lJwogICAgICAgIGFnZToKICAgICAgICAgIGRlc2NyaXB0aW9uOiBBZ2UgKHllYXJzKQogICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgbWluaW11bTogMAogICAgICAgICAgbWF4aW11bTogMTAwCiAgICAgICAgZ2VuZGVyOgogICAgICAgICAgZGVzY3JpcHRpb246IEdlbmRlcgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBlbnVtOgogICAgICAgICAgICAtIE1hbGUKICAgICAgICAgICAgLSBGZW1hbGUKICAgICAgICBoZWlnaHQ6CiAgICAgICAgICBkZXNjcmlwdGlvbjogSGVpZ2h0IChtKQogICAgICAgICAgdHlwZTogbnVtYmVyCiAgICAgICAgICBwYXR0ZXJuOiBmbG9hdAogICAgICAgICAgbWluaW11bTogMAogICAgICAgIGxlZ2FsR3VhcmRpYW46CiAgICAgICAgICBkZXNjcmlwdGlvbjogTGVnYWwgR3VhcmRpYW4KICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BlcnNvbicKICAgICAgICBzc246CiAgICAgICAgICBkZXNjcmlwdGlvbjogU29jaWFsIFNlY3VyaXR5IE51bWJlcgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBwYXR0ZXJuOiAnXlxkezN9LVxkezJ9LVxkezR9JCcKICAgICAgICBhbGlhc2VzOgogICAgICAgICAgZGVzY3JpcHRpb246IEtub3duIEFsaWFzZXMKICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICB1bmlxdWVJdGVtczogdHJ1ZQogICAgICAgICAgbWluSXRlbXM6IDEKICAgICAgICAgIG1heEl0ZW1zOiAzCiAgICAgICAgICBpdGVtczoKICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgdGVsZXBob25lTnVtYmVyOgogICAgICAgICAgZGVzY3JpcHRpb246IFRlbGVwaG9uZSBOdW1iZXIKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgbnVsbGFibGU6IHRydWUKICAgICAgICBlbWFpbDoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBFbWFpbCBBZGRyZXNzCiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgIGZvcm1hdDogZW1haWwKICAgICAgICB0cmFja2luZ0NvZGU6CiAgICAgICAgICBkZXNjcmlwdGlvbjogVHJhY2tpbmcgY29kZSBmb3IgV2ViIGFuYWx5dGljcwogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBtaW5MZW5ndGg6IDUKICAgICAgICAgIG1heExlbmd0aDogNTAKICAgICAgICAgIGRlZmF1bHQ6ICJ1dG1fc291cmNlPWRlZmF1bHQiCiAgICAgICAgdXVpZDoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBBbiBVbml2ZXJzYWxseSBVbmlxdWUgSWRlbnRpZmllcgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICBmb3JtYXQ6IHV1aWQKYGBgCgo8L2RldGFpbHM+Cgo+IFshVElQXQo+IFNlZSBbU3VwcG9ydGVkIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBwcm9wZXJ0aWVzXShodHRwczovL2dpdGh1Yi5jb20vQ2hyaW1sZS9vcGVuYXBpLXRvLWphdmEtcmVjb3Jkcy1tdXN0YWNoZS10ZW1wbGF0ZXMvd2lraS9TdXBwb3J0ZWQtT3BlbkFQSS1TcGVjaWZpY2F0aW9uLXByb3BlcnRpZXMpCgojIyBHZW5lcmF0ZSBtb2RlbHMKQ29tcGlsZSB0aGUgcHJvamVjdCwgZm9yIGV4YW1wbGUgdmlhOgpgYGBjb25zb2xlCm12biBjb21waWxlCmBgYAoKPiBbIVRJUF0KPiBGdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBnZW5lcmF0ZSBtb2RlbHMgY2FuIGJlIGZvdW5kIG9uIFtvcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvYmxvYi9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW4vUkVBRE1FLm1kKS4KCiMjIEdlbmVyYXRlZCBKYXZhIFJlY29yZApVbmxlc3MgdGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgYDxvdXRwdXQ+YCBoYXMgYmVlbiBzZXQsIHRoZSBnZW5lcmF0ZWQgY2xhc3NlcyBzaG91bGQgYmUgZm91bmQgdW5kZXIgYC4vdGFyZ2V0L2dlbmVyYXRlZC1zb3VyY2VzL29wZW5hcGlgLgoKPGRldGFpbHMgb3Blbj4KICAgIAo8c3VtbWFyeT5SZXN1bHRpbmcgSmF2YSByZWNvcmQgZnJvbSBleGFtcGxlIE9wZW5BUEkgc3BlYy48L3N1bW1hcnk+CgpgYGBqYXZhCnBhY2thZ2UgaW8uZ2l0aHViLmNocmltbGUubzJqcm07CgovKioKICogUGVyc29uYWwgaW5mb3JtYXRpb24KICoKICogQGRlcHJlY2F0ZWQKICogQHBhcmFtIG5hbWUgTmFtZS4KICogQHBhcmFtIGFnZSBBZ2UgKHllYXJzKQogKiBAcGFyYW0gZ2VuZGVyIEdlbmRlcgogKiBAcGFyYW0gaGVpZ2h0IEhlaWdodCAobSkKICogQHBhcmFtIGxlZ2FsR3VhcmRpYW4gUGVyc29uLgogKiBAcGFyYW0gc3NuIFNvY2lhbCBTZWN1cml0eSBOdW1iZXIKICogQHBhcmFtIGFsaWFzZXMgS25vd24gQWxpYXNlcwogKiBAcGFyYW0gdGVsZXBob25lTnVtYmVyIFRlbGVwaG9uZSBOdW1iZXIKICogQHBhcmFtIGVtYWlsIEVtYWlsIEFkZHJlc3MKICogQHBhcmFtIHRyYWNraW5nQ29kZSBUcmFja2luZyBjb2RlIGZvciBXZWIgYW5hbHl0aWNzCiAqIEBwYXJhbSB1dWlkIEFuIFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyCiAqLwpARGVwcmVjYXRlZApwdWJsaWMgcmVjb3JkIFBlcnNvbigKICAgIEBWYWxpZCBATm90TnVsbCBOYW1lIG5hbWUsCiAgICBATm90TnVsbCBATWluKDApIEBNYXgoMTAwKSBJbnRlZ2VyIGFnZSwKICAgIEBOb3ROdWxsIEdlbmRlckVudW0gZ2VuZGVyLAogICAgQE5vdE51bGwgQERlY2ltYWxNaW4oIjAiKSBCaWdEZWNpbWFsIGhlaWdodCwKICAgIEBWYWxpZCBQZXJzb24gbGVnYWxHdWFyZGlhbiwKICAgIEBOb3ROdWxsIEBQYXR0ZXJuKHJlZ2V4cCA9ICJeXFxkezN9LVxcZHsyfS1cXGR7NH0kIikgU3RyaW5nIHNzbiwKICAgIEBOb3ROdWxsIEBTaXplKG1pbiA9IDEsIG1heCA9IDMpIFNldDxTdHJpbmc+IGFsaWFzZXMsCiAgICBTdHJpbmcgdGVsZXBob25lTnVtYmVyLAogICAgQE5vdE51bGwgQEVtYWlsIFN0cmluZyBlbWFpbCwKICAgIEBOb3ROdWxsIEBTaXplKG1pbiA9IDUsIG1heCA9IDUwKSBTdHJpbmcgdHJhY2tpbmdDb2RlLAogICAgQE5vdE51bGwgVVVJRCB1dWlkKSB7CgogIHB1YmxpYyBQZXJzb24oCiAgICAgIGZpbmFsIE5hbWUgbmFtZSwKICAgICAgZmluYWwgSW50ZWdlciBhZ2UsCiAgICAgIGZpbmFsIEdlbmRlckVudW0gZ2VuZGVyLAogICAgICBmaW5hbCBCaWdEZWNpbWFsIGhlaWdodCwKICAgICAgZmluYWwgUGVyc29uIGxlZ2FsR3VhcmRpYW4sCiAgICAgIGZpbmFsIFN0cmluZyBzc24sCiAgICAgIGZpbmFsIFNldDxTdHJpbmc+IGFsaWFzZXMsCiAgICAgIGZpbmFsIFN0cmluZyB0ZWxlcGhvbmVOdW1iZXIsCiAgICAgIGZpbmFsIFN0cmluZyBlbWFpbCwKICAgICAgZmluYWwgU3RyaW5nIHRyYWNraW5nQ29kZSwKICAgICAgZmluYWwgVVVJRCB1dWlkKSB7CiAgICB0aGlzLm5hbWUgPSBuYW1lOwogICAgdGhpcy5hZ2UgPSBhZ2U7CiAgICB0aGlzLmdlbmRlciA9IGdlbmRlcjsKICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0OwogICAgdGhpcy5sZWdhbEd1YXJkaWFuID0gbGVnYWxHdWFyZGlhbjsKICAgIHRoaXMuc3NuID0gc3NuOwogICAgdGhpcy5hbGlhc2VzID0gT2JqZWN0cy5yZXF1aXJlTm9uTnVsbEVsc2VHZXQoYWxpYXNlcywgKCkgLT4gbmV3IExpbmtlZEhhc2hTZXQ8PigpKTsKICAgIHRoaXMudGVsZXBob25lTnVtYmVyID0gdGVsZXBob25lTnVtYmVyOwogICAgdGhpcy5lbWFpbCA9IGVtYWlsOwogICAgdGhpcy50cmFja2luZ0NvZGUgPSBPYmplY3RzLnJlcXVpcmVOb25OdWxsRWxzZSh0cmFja2luZ0NvZGUsICJ1dG1fc291cmNlPWRlZmF1bHQiKTsKICAgIHRoaXMudXVpZCA9IHV1aWQ7CiAgfQoKICAvKioKICAgKiBHZW5kZXIKICAgKi8KICBwdWJsaWMgZW51bSBHZW5kZXJFbnVtIHsKICAgIE1BTEUoIk1hbGUiKSwKICAgIEZFTUFMRSgiRmVtYWxlIik7CgogICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgdmFsdWU7CgogICAgR2VuZGVyRW51bShmaW5hbCBTdHJpbmcgdmFsdWUpIHsKICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0cyB0aGUge0Bjb2RlIHZhbHVlfSBvZiB0aGlzIGVudW0uCiAgICAgKgogICAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBlbnVtLgogICAgICovCiAgICBwdWJsaWMgU3RyaW5nIGdldFZhbHVlKCkgewogICAgICByZXR1cm4gdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDYXNlLXNlbnNpdGl2ZWx5IG1hdGNoZXMgdGhlIGdpdmVuIHtAY29kZSB2YWx1ZX0gdG8gYW4gZW51bSBjb25zdGFudCB1c2luZyB7QGxpbmsKICAgICAqICNnZXRWYWx1ZSgpfS4KICAgICAqCiAgICAgKiA8cD48Yj5OT1RFOjwvYj4gaWYgbXVsdGlwbGUgZW51bSBjb25zdGFudHMgaGF2ZSBhIG1hdGNoaW5nIHZhbHVlLCB0aGUgZmlyc3QgZW51bSBjb25zdGFudCBpcwogICAgICogcmV0dXJuZWQsIGJ5IHRoZSBvcmRlciB0aGV5IGFyZSBkZWNsYXJlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gdmFsdWUgb2YgdGhlIGVudW0uCiAgICAgKiBAcmV0dXJuIGEge0BsaW5rIEdlbmRlckVudW0gfSB3aXRoIHRoZSBtYXRjaGluZyB2YWx1ZS4KICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIG5vIGVudW0gaGFzIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGdpdmVuIHZhbHVlLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIEdlbmRlckVudW0gZnJvbVZhbHVlKGZpbmFsIFN0cmluZyB2YWx1ZSkgewogICAgICBmb3IgKGZpbmFsIEdlbmRlckVudW0gY29uc3RhbnQgOiBHZW5kZXJFbnVtLnZhbHVlcygpKSB7CiAgICAgICAgaWYgKGNvbnN0YW50LmdldFZhbHVlKCkuZXF1YWxzKHZhbHVlKSkgewogICAgICAgICAgcmV0dXJuIGNvbnN0YW50OwogICAgICAgIH0KICAgICAgfQogICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJVbmV4cGVjdGVkIHZhbHVlICciICsgdmFsdWUgKyAiJyIpOwogICAgfQogIH0KfQpgYGAKCjwvZGV0YWlscz4KCiMjIEZ1cnRoZXIgZXhhbXBsZXMKClJlZmVyIHRvIHRoZSB0ZXN0LWNhc2VzIGZvciBnZW5lcmF0ZWQgY2xhc3NlcywgYXMgdGhlc2UgbGlzdCBzdXBwb3J0ZWQgcGx1Z2luIGA8Y29uZmlndXJhdGlvbj5gLW9wdGlvbnMgYW5kIE9wZW5BUEkKU3BlY2lmaWNhdGlvbi1wcm9wZXJ0aWVzLiBUaGUgdW5pdC10ZXN0cyBjb3VsZCBjbGFyaWZ5IGV4cGVjdGVkIGJlaGF2aW9ycywgYW5kIHRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gY291bGQgYWxzbwpwcm92aWRlIGNvbmNyZXRlIGV4YW1wbGVzIGFuZCB1c2UtY2FzZXMuIEZvciByZWZlcmVuY2U6CgotIFtPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpbWxlL29wZW5hcGktdG8tamF2YS1yZWNvcmRzLW11c3RhY2hlLXRlbXBsYXRlcy9ibG9iL21haW4vdGVzdC1jb21tb24vc3JjL21haW4vcmVzb3VyY2VzL2FwaS55YW1sKTxici8+CiAgVXNlZCBhcyB0aGUgaW5wdXQgc2NoZW1hIHRvIGdlbmVyYXRlICoqYWxsKiogY2xhc3NlcyB1c2VkIGluIHRlc3RpbmcuCi0gW01hdmVuIHBsdWdpbiBleGVjdXRpb25zXShodHRwczovL2dpdGh1Yi5jb20vQ2hyaW1sZS9vcGVuYXBpLXRvLWphdmEtcmVjb3Jkcy1tdXN0YWNoZS10ZW1wbGF0ZXMvYmxvYi9tYWluL3Rlc3RzL3BvbS54bWwjTDEzOSk8YnIvPgogIEdlbmVyYXRlcyBjbGFzc2VzIGZyb20gdGhlIE9wZW5BUEkgc3BlYywgd2l0aCBkaWZmZXJlbnQgYG9wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbmAgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUKICByZXN1bHRpbmcgY2xhc3NlcyBhcmUgcGxhY2VkIGluIHN1Yi1wYWNrYWdlcywgbmFtZWQgYWZ0ZXIgdGhlIHBsdWdpbi1leGVjdXRpb24uCi0gW0dlbmVyYXRlZCBjbGFzc2VzXShodHRwczovL2dpdGh1Yi5jb20vQ2hyaW1sZS9vcGVuYXBpLXRvLWphdmEtcmVjb3Jkcy1tdXN0YWNoZS10ZW1wbGF0ZXMvdHJlZS9tYWluL3Rlc3RzL3RhcmdldC9nZW5lcmF0ZWQtc291cmNlcy9vcGVuYXBpL3NyYy9zcmMvZ2VuL2phdmEvbWFpbi9pby9naXRodWIvY2hyaW1sZS9vMmpybSk8YnIvPgogIFRoZSByZXN1bHRpbmcgY2xhc3NlcyBhcmUgb3JnYW5pemVkIGludG8gc3ViLXBhY2thZ2VzLCB3aGljaCBmYWNpbGl0YXRlcyB0ZXN0aW5nLiBUaGVzZSBmaWxlcyBhcmUgLSBfYWxiZWl0IGluIG5vIHdheQogIG5lY2Vzc2FyeV8gLSB0cmFja2VkIGFuZCB2ZXJzaW9uZWQgaW4gb3JkZXIgdG8gYmUgYWNjZXNzaWJsZSB3aXRob3V0IG5lZWRpbmcgdG8gY29tcGlsZSBhbnl0aGluZy4gRnVydGhlcm1vcmUsIGl0CiAgbWFrZXMgaXQgZWFzaWVyIHRvIHNwb3QgZGlmZmVyZW5jZXMgaW4gZ2VuZXJhdGVkIGNsYXNzZXMgYWZ0ZXIgbWFraW5nIGEgY2hhbmdlIHRvIHRoZSBtdXN0YWNoZSB0ZW1wbGF0ZXMuCi0gW1Rlc3QgU3VpdGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpbWxlL29wZW5hcGktdG8tamF2YS1yZWNvcmRzLW11c3RhY2hlLXRlbXBsYXRlcy90cmVlL21haW4vdGVzdHMvc3JjL3Rlc3QvamF2YS9pby9naXRodWIvY2hyaW1sZS9vMmpybS90ZXN0cyk8YnIvPgogIENvbnRhaW5zIGFsbCB0ZXN0LWNhc2VzIGZvciBnZW5lcmF0ZWQgYHJlY29yZGAgYW5kIGBlbnVtYCBjbGFzc2VzLiBUaGVzZSB0ZXN0cyBhcmUgX3BhcmFtZXRlcml6ZWRfLCB0byB0ZXN0ICoqYWxsKioKICBjbGFzc2VzIGluIHRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gaW4gY29tYmluYXRpb24gd2l0aCAqKmFsbCoqIHBsdWdpbi1leGVjdXRpb25zLgoKIyMgRW5jb3VudGVyZWQgYW4gaXNzdWU/CkZpcnN0bHksIG1ha2UgYSBtaW5pbWFsIHJlcHJvZHVjaWJsZSBleGFtcGxlIC0gaXQgd2lsbCBncmVhdGx5IGZhY2lsaXRhdGUgdHJvdWJsZXNob290aW5nIQoKUGxlYXNlLCB2ZXJpZnkgdGhlc2Ugc3RlcHMgX3dpdGhvdXRfIGN1c3RvbSBtdXN0YWNoZS10ZW1wbGF0ZSBmaWxlczoKMS4gVmVyaWZ5IHRoYXQgdGhlIE1hdmVuIEJ1aWxkIENvbmZpZ3VyYXRpb24gaXMgY29ycmVjdC4KMi4gVmVyaWZ5IHRoYXQgdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBpcyB2YWxpZC4KMy4gVmVyaWZ5IHRoYXQgY2xhc3NlcyBhcmUgZ2VuZXJhdGVkIHN1Y2Nlc3NmdWxseS4KNC4gVmVyaWZ5IHRoYXQgbmVlZGVkIGRlcGVuZGVuY2llcyBhcmUgaW1wb3J0ZWQuCgpPbmNlIHZlcmlmaWVkLCB1c2UgdGhlIGN1c3RvbSBtdXN0YWNoZS10ZW1wbGF0ZSBmaWxlcyBhbmQgdmVyaWZ5IHRoZSBmb2xsb3dpbmc6CjEuIFZlcmlmeSB0aGF0IHRoZSBgb3BlbmFwaS1nZW5lcmF0b3ItbWF2ZW4tcGx1Z2luYCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHN1cHBvcnRlZC4gU2VlIFtTdXBwb3J0ZWQgJ29wZW5hcGnigJBnZW5lcmF0b3LigJBtYXZlbuKAkHBsdWdpbicgQ29uZmlndXJhdGlvbiBvcHRpb25zXShodHRwczovL2dpdGh1Yi5jb20vQ2hyaW1sZS9vcGVuYXBpLXRvLWphdmEtcmVjb3Jkcy1tdXN0YWNoZS10ZW1wbGF0ZXMvd2lraS9TdXBwb3J0ZWQtJTI3b3BlbmFwaeKAkGdlbmVyYXRvcuKAkG1hdmVu4oCQcGx1Z2luJTI3LUNvbmZpZ3VyYXRpb24tb3B0aW9ucykuCiAgIC0gSWYgbm8gY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBzZXQsIHBsZWFzZSBwcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAuCiAgIC0gSWYgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIG5vdCBsaXN0ZWQgYXMgc3VwcG9ydGVkIC0gcGxlYXNlIHJlcXVlc3QgaXQgdmlhIFtvcGVuIGFuIGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20vQ2hyaW1sZS9vcGVuYXBpLXRvLWphdmEtcmVjb3Jkcy1tdXN0YWNoZS10ZW1wbGF0ZXMvaXNzdWVzL25ldy9jaG9vc2UpLgoyLiBWZXJpZnkgdGhhdCB0aGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIHByb3BlcnRpZXMgYXJlIHN1cHBvcnRlZC4gU2VlIFtTdXBwb3J0ZWQgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIHByb3BlcnRpZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpbWxlL29wZW5hcGktdG8tamF2YS1yZWNvcmRzLW11c3RhY2hlLXRlbXBsYXRlcy93aWtpL1N1cHBvcnRlZC1PcGVuQVBJLVNwZWNpZmljYXRpb24tcHJvcGVydGllcykuCiAgIC0gSWYgdGhlIHByb3BlcnR5IGlzIG5vdCBsaXN0ZWQgYXMgc3VwcG9ydGVkIC0gcGxlYXNlIHJlcXVlc3QgaXQgdmlhIFtvcGVuIGFuIGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20vQ2hyaW1sZS9vcGVuYXBpLXRvLWphdmEtcmVjb3Jkcy1tdXN0YWNoZS10ZW1wbGF0ZXMvaXNzdWVzL25ldy9jaG9vc2UpLgozLiBDb21wYXJlIGBvcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW5gIHZlcnNpb25zCiAgIC0gQXMgYSBsYXN0IHJlc29ydCwgaXQgY291bGQgYmUgZHVlIHRvIHVzaW5nIGFuIG9sZGVyL25ld2VyIHZlcnNpb24gdGhhbiB3aGF0IGlzIHVzZWQgd2l0aGluIHRoaXMgcHJvamVjdCBmb3IgdGVzdGluZy4KICAgICBFdmVuIGlmIHRoaXMgd291bGQgc29sdmUgdGhlIGlzc3VlIC0gcGxlYXNlIHJlcG9ydCBpdCB2aWEgW29wZW4gYW4gaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpbWxlL29wZW5hcGktdG8tamF2YS1yZWNvcmRzLW11c3RhY2hlLXRlbXBsYXRlcy9pc3N1ZXMvbmV3L2Nob29zZSkuCgpJZiBwcm9ibGVtcyBwZXJzaXN0LCBjaGVjayB0aGUgW29wZW4gaXNzdWVzXShodHRwczovL2dpdGh1Yi5jb20vQ2hyaW1sZS9vcGVuYXBpLXRvLWphdmEtcmVjb3Jkcy1tdXN0YWNoZS10ZW1wbGF0ZXMvaXNzdWVzKS4gCklmIHRoZSBwcm9ibGVtIHlvdSBhcmUgZmFjaW5nIGhhcyBub3QgYWxyZWFkeSBiZWVuIHJlcG9ydGVkLCBwbGVhc2UgW29wZW4gYW4gaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpbWxlL29wZW5hcGktdG8tamF2YS1yZWNvcmRzLW11c3RhY2hlLXRlbXBsYXRlcy9pc3N1ZXMvbmV3L2Nob29zZSkgd2l0aCBkZXRhaWxzIGFuZCBpbnN0cnVjdGlvbnMgdG8gcmVwcm9kdWNlLgoKIyMjIFVzZWZ1bCBSZXNvdXJjZXMKCi0gW01hdmVuIGluIDUgbWludXRlc10oaHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnL2d1aWRlcy9nZXR0aW5nLXN0YXJ0ZWQvbWF2ZW4taW4tZml2ZS1taW51dGVzLmh0bWwpCi0gW09wZW5BUEkgQmFzaWMgU3RydWN0dXJlXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2Jhc2ljLXN0cnVjdHVyZS8pCi0gW29wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbl0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9ibG9iL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbi9SRUFETUUubWQpCi0gW011c3RhY2hlXShodHRwczovL211c3RhY2hlLmdpdGh1Yi5pby8pCgojIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAogICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCgogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KCiAgIDEuIERlZmluaXRpb25zLgoKICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCgogICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQogICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCgogICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCiAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCiAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCiAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQogICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgoKICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCiAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCiAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAogICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCgogICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgogICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCiAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yawogICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgoKICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAogICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCiAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCiAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KCiAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCiAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CiAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgogICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CiAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCiAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCiAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCiAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAogICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQogICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKCiAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CiAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAogICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KCiAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAogICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KCiAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAogICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQogICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQogICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCiAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CiAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCiAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KCiAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCiAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAogICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQogICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCiAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAoKICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCgogICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCiAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCiAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCgogICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAogICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CiAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCiAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCiAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cwogICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAogICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCiAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAogICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCiAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgogICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCiAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCgogICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCiAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yawogICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQogICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAogICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCgogICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCiAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCiAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgoKICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCiAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgogICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwogICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCiAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQogICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgoKICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCiAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAogICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQogICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQogICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCiAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQogICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCiAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgogICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCgogICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCiAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCiAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCiAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCiAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CiAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCiAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CiAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCgogICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KCiAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCiAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCiAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCiAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KCiAgIENvcHlyaWdodCAyMDI0LTIwMjYgQ2hyaW1sZQoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoK readmeEtag: '"64910a6a9ba6ddd320e8355bf99a43618fa42f73"' readmeLastModified: Tue, 20 Jan 2026 20:10:10 GMT repositoryId: 853046067 description: Generate Java Records from OpenAPI Specifications created: '2024-09-05T22:21:02Z' updated: '2026-01-20T20:10:18Z' language: Java archived: false stars: 10 watchers: 1 forks: 0 owner: Chrimle logo: https://avatars.githubusercontent.com/u/28791817?v=4 license: Apache-2.0 repoEtag: '"67b6bb3fd8f197da5609aa4f4bb71a922e6423308451eed6f4ad204ba4b85a64"' repoLastModified: Tue, 20 Jan 2026 20:10:18 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/theogravity/immutable-x-openapi v3: true repositoryMetadata: base64Readme: >- IyBpbW11dGFibGUteC1vcGVuYXBpCgpUaGlzIGNvbnRhaW5zIGFuICp1bm9mZmljaWFsKiBPcGVuQVBJIDMuMCBkZWZpbml0aW9ucyBmb3IgCgotIHRoZSBbSW1tdXRhYmxlIFggQVBJc10oaHR0cHM6Ly9kb2NzLnguaW1tdXRhYmxlLmNvbS9yZWZlcmVuY2UpCi0gdGhlIFtHb2RzIFVuY2hhaW5lZCBBUElzXShodHRwczovL2dpdGh1Yi5jb20vaW1tdXRhYmxlL2dvZHMtdW5jaGFpbmVkLWFwaSkKClRoZSBkZWZpbml0aW9ucyB3ZXJlIGNyZWF0ZWQgdXNpbmcgW1N0b3BsaWdodCBTdHVkaW9dKGh0dHBzOi8vc3RvcGxpZ2h0LmlvL3N0dWRpby8pLgoKWW91IGNhbiB1c2UgdGhlIGRlZmluaXRpb24gdG8gW2dlbmVyYXRlIHlvdXIgb3duIFNES10oaHR0cHM6Ly9vcGVuYXBpLnRvb2xzLyksIG9yIGltcG9ydCBpbnRvIHlvdXIgZmF2b3JpdGUKQVBJIGNsaWVudCBzdWNoIGFzIFtJbnNvbW5pYV0oaHR0cHM6Ly9pbnNvbW5pYS5yZXN0LykgYW5kIFtQb3N0bWFuXShodHRwczovL3d3dy5wb3N0bWFuLmNvbS8pLgoKIVtdKGFzc2V0cy9pbnNvbW5pYS5wbmcpCgojIyBVc2luZyBhIHJlYWR5LW1hZGUgU0RLCgpZb3UgY2FuIGZpbmQgZG9jdW1lbnRhdGlvbiBoZXJlIHRoYXQgaGFzIGJlZW4gZ2VuZXJhdGVkIHVzaW5nIHRoZSBkZWZpbml0aW9ucy4gU2VsZWN0IHRoZSAKbGFuZ3VhZ2Ugb3B0aW9uIG9uIHRoZSByaWdodCBzaWRlIGZvciB5b3VyIGNsaWVudC4gVGhlcmUgaXMgYSB2YW5pbGxhIEphdmFzY3JpcHQgb3B0aW9uIGlmIHlvdQpjbGljayBvbiB0aGUgdmVydGljYWwgdGhyZWUgZG90cyBuZXh0IHRvIHRoZSBsYW5ndWFnZXMsIHdoaWNoIHdpbGwgc2hvdyB5b3UKaG93IHRvIGNhbGwgdGhlIEFQSSBpbiB2YW5pbGxhIEpTLgoKaHR0cHM6Ly9pbXgucmVhZG1lLmlvL3JlZmVyZW5jZS9saXN0Y2FyZHMKCiMjIEJ1aWxkaW5nIGFuIFNESwoKIyMjIFR5cGVzY3JpcHQgKHZpYSBub2RlLmpzKQoKVXNlIHRoZSBbb3BlbmFwaS10eXBlc2NyaXB0LWNvZGVnZW5dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlZ2VuKSBwYWNrYWdlIHRvIApidWlsZCBhbiBTREsgY29tcGxldGUgd2l0aCBUeXBlc2NyaXB0IGRlZmluaXRpb25zLgoKSWYgeW91IGNvcHkgdGhlIGFwcHJvcHJpYXRlIGByZWZlcmVuY2UvKi55YW1sYCBmaWxlIHRvIHlvdXIgcHJvamVjdCBhbmQgaW5zdGFsbCBgb3BlbmFwaS10eXBlc2NyaXB0LWNvZGVnZW5gLAp5b3UgY2FuIGdlbmVyYXRlIHRoZSBTREsgdXNpbmcgYSBgc2NyaXB0YCBjb21tYW5kIGluIHlvdXIgYHBhY2thZ2UuanNvbmA6CgpgYGBqc29uCnsKICAic2NyaXB0cyI6IHsKICAgICJndS1jbGllbnQ6YnVpbGQiOiAib3BlbmFwaSAtLWlucHV0IEdvZHNVbmNoYWluZWQtQVBJLU9wZW5BUEkzLnlhbWwgLS11c2VPcHRpb25zIC0tb3V0cHV0IC4vc3JjL2d1LWFwaS1jbGllbnQiCiAgfQp9CmBgYAoKIyMgTm90ZXMKClRoZXNlIGRlZmluaXRpb25zIHdlcmUgY3JhZnRlZCBieSBoYW5kIHVzaW5nIHRoZSBhdmFpbGFibGUgZG9jdW1lbnRhdGlvbi4KCkFsdGhvdWdoIGEgYmVzdCBlZmZvcnQgd2FzIG1hZGUgdG8gZW5zdXJlIGFjY3VyYWN5IGluIHJlc3VsdHMsIHRoZXJlIG1heSBiZSBtaXN0YWtlcyBpbiB0aGUgZGVmaW5pdGlvbi4gSWYgeW91IGZpbmQKc3VjaCBhIG1pc3Rha2UsIHBsZWFzZSBvcGVuIGEgcHVsbCByZXF1ZXN0IHdpdGggdGhlIG5lY2Vzc2FyeSBjaGFuZ2VzLgoKRm9yIG1hbnkgZW5kcG9pbnRzLCBtb2RlbCBkZWZpbml0aW9ucyBoYXZlIGJlZW4gY3JlYXRlZCBmb3IgcmVzcG9uc2VzLCB3aGljaCBhIGNvZGUgZ2VuZXJhdG9yIGNhbiB1c2UgdG8gY3JlYXRlCmNvcnJlc3BvbmRpbmcgY2xhc3Nlcywgb3IgdHlwZWQgaW50ZXJmYWNlcyBpZiB1c2luZyBhIFR5cGVzY3JpcHQgZ2VuZXJhdG9yLgoKIyMgVW5kb2N1bWVudGVkIEFQSXMKCiMjIyBJbW11dGFibGUgWAoKVGhlIGZvbGxvd2luZyBlbmRwb2ludHMgd2VyZSB1bmFibGUgdG8gYmUgZG9jdW1lbnRlZCBhdCB0aGUgdGltZSBkdWUgdG8gdW5hdmFpbGFiaWxpdHkgb2YgdGhlIGRvY3VtZW50YXRpb246CgotIGh0dHBzOi8vZG9jcy54LmltbXV0YWJsZS5jb20vcmVmZXJlbmNlL3Bvc3RfdjEtc2lnbmFibGUtZGVwb3NpdC1kZXRhaWxzLTEKLSBodHRwczovL2RvY3MueC5pbW11dGFibGUuY29tL3JlZmVyZW5jZS9wb3N0X3YxLXNpZ25hYmxlLW9yZGVyLWRldGFpbHMtMQotIGh0dHBzOi8vZG9jcy54LmltbXV0YWJsZS5jb20vcmVmZXJlbmNlL3Bvc3RfdjEtc2lnbmFibGUtdHJhbnNmZXItZGV0YWlscy0xCi0gaHR0cHM6Ly9kb2NzLnguaW1tdXRhYmxlLmNvbS9yZWZlcmVuY2UvcG9zdF92MS1zaWduYWJsZS13aXRoZHJhd2FsLWRldGFpbHMtMQoKIyMgQ29udHJpYnV0aW5nCgotIEZvcmsgdGhpcyByZXBvCi0gVXNlIFN0b3BsaWdodCBTdHVkaW8gdG8gb3BlbiB0aGUgcmVwbyBkaXJlY3RvcnksIGFuZCBtYWtlIHlvdXIgZWRpdHMKLSBNYWtlIHN1cmUgdGhlIGxpbnRlciBpbiBTdG9wbGlnaHQgU3R1ZGlvIGhhcyBubyBlcnJvcnMvd2FybmluZ3MKLSBNYWtlIGEgcHVsbCByZXF1ZXN0IHdpdGggeW91ciBjaGFuZ2VzCgojIyBEaXNjbGFpbWVyCgpUaGUgQVBJIGRlZmluaXRpb25zIGRlcGVuZCBvbiB0aGUgY29tbXVuaXR5IHRvIGtlZXAgdXAtdG8tZGF0ZSwgb3IgdW50aWwgdGhlIEltbXV0YWJsZSB0ZWFtCnByb3ZpZGVzIGFuIG9mZmljaWFsIGRlZmluaXRpb24uIFVzZSBhdCB5b3VyIG93biByaXNrLCBub3QgcmVzcG9uc2libGUgZm9yIGxvc3NlcyBpbmN1cnJlZCBmcm9tIGFuIGluY29ycmVjdApBUEkgZGVmaW5pdGlvbi4K readmeEtag: '"dffaecc96e8d51b6bc3ce4d59b72e19ac3342a6f"' readmeLastModified: Fri, 25 Feb 2022 05:11:50 GMT repositoryId: 443897863 description: Immutable X and Gods Unchained OpenAPI 3.0 definitions created: '2022-01-03T00:07:45Z' updated: '2023-04-13T17:11:33Z' language: null archived: false stars: 3 watchers: 1 forks: 1 owner: theogravity logo: https://avatars.githubusercontent.com/u/855434?v=4 license: MIT repoEtag: '"645cad8dcbf6627f2646c5015795c2f41cbb05b9b7a042c0214285f9edbad5a1"' repoLastModified: Thu, 13 Apr 2023 17:11:33 GMT foundInMaster: true category: Parsers id: df13bb01ef12259dd9da2e6209165294 - source: openapi3 tags repository: https://github.com/0x29a/web_template v3: true id: 7b4bda04c7ead8d5a5dc42a240ad7dc9 repositoryMetadata: base64Readme: >- IyBXZWJUZW1wbGF0ZQoKWyFbR2l0TGFiIENJIHBpcGVsaW5lIHN0YXR1cy5dW3BpcGVsaW5lLWltYWdlXV1bcGlwZWxpbmUtdXJsXQoKVGVtcGxhdGUgZm9yIGEgcXVpY2sgd2ViIHNlcnZpY2VzIHByb3RvdHlwaW5nLiBJdCdzIGludGVuZGVkIHRvIHNwZWVkIHVwIGJvb3RzdHJhcHBpbmcKb2YgcHJvZHVjdGlvbi1yZWFkeSBhcHBsaWNhdGlvbnMsIHdpdGggRGphbmdvLWJhc2VkIGJhY2tlbmQsIGFuZCBOZXh0LmpzLWJhc2VkIGZyb250ZW5kLgpJbiBhdHRlbXB0IHRvIHJlZHVjZSBib2lsZXJwbGF0ZSB0byB0aGUgYWJzb2x1dGUgcG9zc2libGUgbWluaW11bSwgaXQgdXRpbGl6ZXMgdGVjaG5vbG9naWVzIHN1Y2ggYXM6CgotIFtkcmYtc3BlY3RhY3VsYXJdKGh0dHBzOi8vZ2l0aHViLmNvbS90ZnJhbnplbC9kcmYtc3BlY3RhY3VsYXIpIHRvIGdlbmVyYXRlIE9wZW5BUEkgMyBzY2hlbWEuCi0gW3JlZHV4LXRvb2xraXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9yZWR1eGpzL3JlZHV4LXRvb2xraXQpIGFuZCBbQHJ0ay1xdWVyeS9jb2RlZ2VuLW9wZW5hcGldKGh0dHBzOi8vcmVkdXgtdG9vbGtpdC5qcy5vcmcvcnRrLXF1ZXJ5L3VzYWdlL2NvZGUtZ2VuZXJhdGlvbiNvcGVuYXBpKSB0byBnZW5lcmF0ZSBBUEkgY2xpZW50IGJhc2VkIG9uIFJUSyBRdWVyeS4KLSBbcGlwLXRvb2xzXShodHRwczovL2dpdGh1Yi5jb20vamF6emJhbmQvcGlwLXRvb2xzKSB0byBtYW5hZ2UgZGVwZW5kZW5jaWVzLgotIFtOZXh0LmpzXShodHRwczovL25leHRqcy5vcmcvKSBmb3IgaXRzIGZpbGUtYmFzZWQgcm91dGluZywgbmljZSBzdGF0aWMgcGFnZXMgaGFuZGxpbmcgYW5kIGRvemVucyBvZiBvdGhlciBvcHRpbWl6YXRpb25zLgotIFtUYWlsd2luZCBVSV0oaHR0cHM6Ly90YWlsd2luZHVpLmNvbSksIGFzIHV0aWxpdHkgY2xhc3NlcyBwbGF5IHJlYWxseSBuaWNlIHdpdGggcmV1c2FibGUgUmVhY3QgY29tcG9uZW50cy4KLSBbR2l0TGFiIENJXShodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS8pLCB3aGljaCwgaW4gYWRkaXRpb24gdG8gcXVhbGl0eSBjaGVja2luZywgaXMgdXNlZCB0byBidWlsZCBhbmQgaG9zdCBPQ0kgaW1hZ2VzLgotIC4uLmFuZCBtYW55IG90aGVyLgoKQnkgZGVmYXVsdCwgdGhlIHRlbXBsYXRlIGlzIGludGVuZGVkIGJlIGRlcGxveWVkIHRvIGEgRGlnaXRhbE9jZWFuIGRyb3BsZXQsIGJ1dCBzaW5jZSB0aGUgaW1hZ2VzIGFyZSBwcmUtYnVpbHQgY29udGludW91c2x5LCBpdCdzIHRyaXZpYWwgdG8gc3dpdGNoIHRvIGZseS5pbywgQVdTIEVDUyBvciBLdWJlcm5ldGVzLgoKSW4gYWRkaXRpb24gdG8gYWxsIHRoZSBjb29sIHRvb2xpbmcsIEkgdHJ5IHRvIGRvY3VtZW50IGFsbCB0ZWNobm9sb2dpY2FsIC8gYXJjaGl0ZWN0dXJhbCBkZWNpc2lvbnMgaW4gYGRvY3MvYCwgc28gaXQncyBlYXNpZXIKdG8gY29udGludWUgd29ya2luZyBvbiB0aGlzIHByb2plY3QgYWZ0ZXIgbGFyZ2UgYnJlYWtzLgoKIyMgR2V0dGluZyBzdGFydGVkCgoxLiBDcmVhdGUgYC5lbnZgOgoKICAgIGBgYGJhc2gKICAgIGNwIC5lbnYubG9jYWwgLmVudgogICAgYGBgCgoxLiBDcmVhdGUgYGRvY2tlci1jb21wb3NlLm92ZXJyaWRlLnltbGA6CgogICAgYGBgYmFzaAogICAgY3AgZG9ja2VyLWNvbXBvc2Uub3ZlcnJpZGUueW1sLmxvY2FsIGRvY2tlci1jb21wb3NlLm92ZXJyaWRlLnltbAogICAgYGBgCgoxLiBTdGFydCBjb250YWluZXJzOgoKICAgIGBgYGJhc2gKICAgIG1ha2UgdXAKICAgIGBgYAoKMS4gT3BlbiBgaHR0cDovL2xvY2FsaG9zdDo4MTI0L2AgaW4gYSBicm93c2VyLgoKPCEtLSBCYWRnZXMgLS0+CgpbcGlwZWxpbmUtaW1hZ2VdOiBodHRwczovL2dpdGxhYi5jb20vMHgyOWEvd2ViX3RlbXBsYXRlL2JhZGdlcy9tYXN0ZXIvcGlwZWxpbmUuc3ZnCltwaXBlbGluZS11cmxdOiBodHRwczovL2dpdGxhYi5jb20vMHgyOWEvd2ViX3RlbXBsYXRlLy0vcGlwZWxpbmVzCg== readmeEtag: '"2f7c1f91578222404a2a546b27d88f7e4b037769"' readmeLastModified: Tue, 13 Feb 2024 07:30:07 GMT repositoryId: 356602391 description: Next.js / Django template for quick prototyping. created: '2021-04-10T14:15:56Z' updated: '2024-03-07T06:27:17Z' language: TypeScript archived: false stars: 3 watchers: 1 forks: 0 owner: '0x29a' logo: https://avatars.githubusercontent.com/u/18251194?v=4 license: MIT repoEtag: '"c9fa81813ecfc9e5ce671b96738fe6bbc4a8d43e829dbb1609f09b8a574e535a"' repoLastModified: Thu, 07 Mar 2024 06:27:17 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/cnsukidayo/wword v3: true id: 125190234ba25676da0af2c14d1e5e22 repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiID4KICAgIDxiPldXb3JkPC9iPgo8L2gxPgo8cCBhbGlnbj0iY2VudGVyIj4KICAgIDxhIGhyZWY9Imh0dHBzOi8vb3Blbmpkay5vcmcvcHJvamVjdHMvamRrLzE3LyI+PGltZyBhbHQ9IkdpdEh1YiBsYXN0IGNvbW1pdCIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0pESy0xNy1yZWQuc3ZnP3N0eWxlPWZsYXQmbG9nbz1PcmFjbGUmbGFiZWxDb2xvcj0yQjlDNEMmY29sb3I9REMyNTAwIiAvPjwvYT4KICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9DTlN1a2lkYXlvL1dXb3JkL2NvbW1pdHMiPjxpbWcgYWx0PSJHaXRIdWIgbGFzdCBjb21taXQiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGFzdC1jb21taXQvQ05TdWtpZGF5by9XV29yZCIgLz48L2E+CiAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQ05TdWtpZGF5by9XV29yZC9ibG9iL21hc3Rlci9MSUNFTlNFIj48aW1nIGFsdD0iR2l0SHViIGxhc3QgY29tbWl0IiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1HUEwgMy4wLTRFQjFCQSIgLz48L2E+CjwvcD4KCiMjIyDku4vnu40KCuS4h+ivreivjSzmraPlpoLlhbblkI3lroPoh7Tlipvkuo7mj5DkvpvkuIDlpZfnu5/kuIDnmoTpgLvovpHlrozmiJDku7vmhI/or63oqIDor43msYfnmoTlrabkuaAuCuW8leWFpeeLrOWIm+eahOWNleivjeagh+iusOaKgOacr+aWueS+v+eUqOaIt+abtOWlveWcsOWvuemBl+W/mOefpeivhui/m+ihjOafpea8j+ihpee8uiwK55So5oi35Y+v5Lul5Zyo6K+l5bmz5Y+w5Y+R5biDTWFya2Rvd27moLzlvI/nmoTluJblrZDliIbkuqvor63oqIDlrabkuaDkuK3nmoTlkITnp43lv4PlvpcuCumhueebruWfuuS6jlNwcmluZ0Jvb3QrTXliYXRpc+WunueOsCzph4fnlKhEb2NrZXLlrrnlmajljJbpg6jnvbIuCuWMheWQq+euoeeQhuWRmOaooeWdl+OAgeadg+mZkOaooeWdl+OAgeaguOW/g+WKn+iDveaooeWdl+OAgeaQnOe0ouaooeWdl+etiS4KCiMjIyDova/ku7bmnrbmnoQKCiFb6L2v5Lu25p625p6EXShpbWFnZXMvZGVzaWduLnBuZykKCiMjIyDmqKHlnZfliJLliIYKCiogKirms6jlhozkuK3lv4MqKjpuYWNvcwoqICoq572R5YWzZ2F0ZXdheSoqOkdhdGV3YXkg6IGa5ZCI5omA5pyJ55qE5o6l5Y+jLOe7n+S4gOaOpeWPl+WkhOeQhuWJjeerr+eahOivt+axgjvlubbkuJTlnKjovazlj5HliY3lvILmraXosIPnlKjmnYPpmZDmqKHlnZfov5vooYzpibTmnYMuCiogKirlhazlhbHmqKHlnZcqKjrlsIbmiYDmnInmnI3liqHmqKHlnZfpnIDopoHnmoTlip/og73ljZXni6zmir3nprso5YyF5ous5YWo5bGA5byC5bi45ZON5bqU5ZKM5byC5bi45aSE55CGLOi/h+a7pOWZqCkuCiogKirlrp7kvZPnsbvmqKHlnZcqKjrpgJrov4fmi4bliIbkuLrliY3nq6/jgIHlhazlhbHjgIHlkI7nq6/kuInkuKrpg6jliIbnmoTlrp7kvZPnsbvmqKHlnZcs5L2/5b6X57O757uf5ZCE5bGC5LmL6Ze055u45LqS54us56uL6Kej6ICmLgoqICoq6Ym05p2D5qih5Z2XKio655So5oi35rOo5YaM44CB6I635Y+W55So5oi35L+h5oGv44CB5Yik5pat55So5oi35piv5ZCm5pyJ55uu5qCH5o6l5Y+j5p2D6ZmQ44CB6KeS6Imy566h55CG44CB6KeS6Imy5YiG6YWN5o6l5Y+j5p2D6ZmQ562JLgoqICoq5qC45b+D5qih5Z2XKio65YyF5ous55So5oi35pS26JeP5aS55Yqf6IO9566h55CG44CBbWFya2Rvd27luJblrZDnrqHnkIYKKiAqKueuoeeQhuWRmOaooeWdlyoqOuWNleivjeWIkuWIhueuoeeQhuOAgeWvvOWFpeWNleivjeeuoeeQhgoqICoq5pCc57Si5qih5Z2XKio6RWxhc3RpY1NlYXJjaOWNleivjeaQnOe0ouOAgeabtOaWsEVT5YiX6KGoCgojIyMg55WM6Z2i5bGV56S6Clvku5PlupPlnLDlnYA6aHR0cHM6Ly9naXRodWIuY29tL0NOU3VraWRheW8vQW55TGFuZ3VhZ2VXb3JkXShodHRwczovL2dpdGh1Yi5jb20vQ05TdWtpZGF5by9BbnlMYW5ndWFnZVdvcmQpCjx0YWJsZSBib3JkZXI9IjBweCI+CiAgICA8dHI+CiAgICAgICAgPGltZyBzcmM9ImltYWdlcy9ob21lX3BhZ2VfMS5wbmciIGFsdD0i55m76ZmG55WM6Z2iIiAvPgogICAgPC90cj4gICAgICAgCiAgICA8dHI+CiAgICAgICAgPGltZyBzcmM9ImltYWdlcy9ob21lX3BhZ2VfMi5wbmciIGFsdD0i6IOM6K+N55WM6Z2iIiAvPgogICAgPC90cj4gICAgCiAgICA8dHI+CiAgICAgICAgPGltZyBzcmM9ImltYWdlcy9ob21lX3BhZ2VfMy5wbmciIGFsdD0i5pS26JeP5aS55ZKMbWFya2Rvd27mmL7npLoiIC8+CiAgICA8L3RyPiAgICAKPC90YWJsZT4= readmeEtag: '"ebdab30a16a3adbb63cb7b86fb3cdf522b82ffa7"' readmeLastModified: Sun, 25 Feb 2024 05:33:42 GMT repositoryId: 669420168 description: >- 万语词,正如其名它致力于提供一套统一的逻辑完成任意语言词汇的学习.引入独创的单词标记技术方便用户更 好地对遗忘知识进行查漏补缺,用户可以在该平台发布Markdown格式的帖子分享语言学习中的各种心得.项目基于SpringBoot+Mybatis实现,采用Docker容器化部署.包含管理员模块、权限模块、核心功能模块、搜索模块等. created: '2023-07-22T08:08:10Z' updated: '2024-08-23T12:18:09Z' language: Java archived: false stars: 3 watchers: 1 forks: 0 owner: CNSukidayo logo: https://avatars.githubusercontent.com/u/53049252?v=4 license: GPL-3.0 repoEtag: '"0642d71b379762d5c3d76d94c6fc0541912924c9b5c5b8fd2ce1d73666511d7d"' repoLastModified: Fri, 23 Aug 2024 12:18:09 GMT category: Testing foundInMaster: true - source: openapi3 tags repository: https://github.com/raghav2211/spring-web-flux-todo-app v3: true id: bc4cf2d2272ad2f80158393eb9d3da0f repositoryMetadata: base64Readme: >- IyBUT0RPIEFQUApbIVtHcmFkbGUgUGlwZWxpbmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9SYWdoYXYyMjExL3NwcmluZy13ZWItZmx1eC10b2RvLWFwcC9hY3Rpb25zL3dvcmtmbG93cy9ncmFkbGUtcGlwZWxpbmUueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9SYWdoYXYyMjExL3NwcmluZy13ZWItZmx1eC10b2RvLWFwcC9hY3Rpb25zL3dvcmtmbG93cy9ncmFkbGUtcGlwZWxpbmUueW1sKQpbIVtNYXZlbiBQaXBlbGluZV0oaHR0cHM6Ly9naXRodWIuY29tL1JhZ2hhdjIyMTEvc3ByaW5nLXdlYi1mbHV4LXRvZG8tYXBwL2FjdGlvbnMvd29ya2Zsb3dzL21hdmVuLXBpcGVsaW5lLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vUmFnaGF2MjIxMS9zcHJpbmctd2ViLWZsdXgtdG9kby1hcHAvYWN0aW9ucy93b3JrZmxvd3MvbWF2ZW4tcGlwZWxpbmUueW1sKQoKVGhpcyBhcHBsaWNhdGlvbiBpcyBhbiBzY2FmZm9sZCB3aGljaCBpcyBhIGJhc2ljIHNldHVwIG9mIHNwcmluZy1jbG91ZC1nYXRld2F5LCBjb25maWctc2VydmVyIGFuZCBhIHJlc291cmNlIHNlcnZlcihBIHRvZG8gYXBwbGljYXRpb24pLiBJdCBkZW1vbnN0cmF0ZSBob3cgZGF0YSBmbG93cyBiZXR3ZWVuIGdhdGV3YXkgJiByZXNvdXJjZS1zZXJ2ZXIgdXNpbmcgY29uZmlnLXNlcnZlciB3aGljaCBob2xkcyBzcGVjaWZpYyBlbnZpb3JubWVudCBjb25maWdzIGFuZCBzZWNyZXRzIAoKIyMgV29ya0Zsb3cKIVtXb3JrZmxvd10oZG9jdW1lbnRhdGlvbi93b3JrZmxvdy5wbmcpCgojIyBUZWNoClRPRE8gQXBwIHVzZXMgZm9sbG93aW5nIHRlY2hub2xvZ2llczoKCiogW0phdmEgMTFdIC0gSkRLCiogW01hdmVuLTMuNi4zXSAtIEJ1aWxkIHRvb2wKKiBbR3JhZGxlLTYuNy4xXSAtIEJ1aWxkIHRvb2wKKiBbU3ByaW5nYm9vdC0yLjcuMF0gLSBPcGVuIHNvdXJjZSBKYXZhLWJhc2VkIE1pY3JvLVNlcnZpY2UgZnJhbWV3b3JrCiogW09wZW5BcGktMS42LjldIC0gUmVzdCBBUEkgZG9jdW1lbnRhdGlvbgoqIFtKdW5pdC01LjcuMF0gLSBVbml0IHRlc3QKKiBbTW9uZ29EQi00LjIuMjFdIC0gQmFja2VuZCBkYXRhIHN0b3JlCiogW0RvY2tlci0xOS4wMy44XSAtIE9TIGxldmVsIHZpcnR1YWxpemF0aW9uCgojIyBCdWlsZCAjIwoxLiBUb2RvIEFwcAogICBbQnVpbGRdKC4vdG9kby1hcHAvUkVBRE1FLm1kKQoyLiBFZGdlIFNlcnZpY2UKICAgW0J1aWxkXSguL2VkZ2Utc2VydmljZS9SRUFETUUubWQpCjMuIENvbmZpZyBTZXJ2ZXIKICAgW0J1aWxkXSguL2NvbmZpZy1zZXJ2ZXIvUkVBRE1FLm1kKSAgIAogICAgCgoKIyMgRGVwbG95ICMjCiAKW1RvZG8gSW5mcmFdKGh0dHBzOi8vZ2l0aHViLmNvbS9SYWdoYXYyMjExL3RvZG8tYXBwLWluZnJhKQo= readmeEtag: '"712a9e04ce44758e96cbdffac5cd8f4cfd93cef1"' readmeLastModified: Sun, 21 Aug 2022 14:41:13 GMT repositoryId: 500385093 description: Todo Application with Cloud gateway & Config server created: '2022-06-06T10:19:14Z' updated: '2024-04-26T08:54:03Z' language: Java archived: false stars: 3 watchers: 1 forks: 2 owner: Raghav2211 logo: https://avatars.githubusercontent.com/u/7526431?v=4 repoEtag: '"888ce2e21649a2b5ffcbf4b0df51ab17def6e6378062912f0807fea8b594674f"' repoLastModified: Fri, 26 Apr 2024 08:54:03 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/manjeshpv/awesome-fullstack-sandbox v3: true id: 9210dd963ad7560db8ce67db9fd0b7b1 repositoryMetadata: base64Readme: >- IyBhd2Vzb21lLWZ1bGxzdGFjay1zYW5kYm94CgpbV2hhdHNBcHAgQ2hhbm5lbF0oaHR0cHM6Ly93aGF0c2FwcC5jb20vY2hhbm5lbC8wMDI5VmFCaUJUUDROVmliSzdlakFzMTQpCgpMb3cgQ29kZSBGdWxsIHN0YWNrIC0gQ2xvdWQgTmF0aXZlIERvY2tlcml6ZWQgU2FuZGJveCBmb3IgSW5kaWFuIFN0YXJ0dXBzIHdpdGggQ0kvQ0QKCgojIyMgQmFja2dyb3VuZAotIFdoYXQgaXMgW1NvZnR3YXJlIFNhbmRib3hdKGh0dHBzOi8vd3d3LnRlY2hvcGVkaWEuY29tL2RlZmluaXRpb24vMjc2ODEvc2FuZGJveC1zb2Z0d2FyZS10ZXN0aW5nKQotIFtJbnRyb2R1Y3Rpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9tYW5qZXNocHYvYXdlc29tZS1zYW5kYm94L2Jsb2IvbWFpbi9kb2NzL3JlYWRtZS5tZCkKLSBbR29hbHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYW5qZXNocHYvYXdlc29tZS1zYW5kYm94L2Jsb2IvbWFpbi9kb2NzL2dvYWxzLm1kKQotIFtUZWNobm9sb2d5IFN0YWNrXShodHRwczovL2dpdGh1Yi5jb20vbWFuamVzaHB2L2F3ZXNvbWUtc2FuZGJveC9ibG9iL21haW4vZG9jcy90ZWNoLXN0YWNrLm1kKQoKIyMjIENoaWxkIFByb2plY3RzCi0gaHR0cHM6Ly9naXRodWIuY29tL2NqZWxpdmFhcy9uZXN0anMtcGluby1kaXN0cmlidXRlZC10cmFjaW5nLW1vbm8KCiMjIyBVc2UgY2FzZXMKLSBGb3IgU3RhcnR1cCBGb3VuZGVycyAmIENYTydzCi0gRm9yIFN0YXJ0dXAgUHJvZHVjdCBNYW5hZ2VycwotIEZvciBTdGFydHVwIEFyY2hpdGVjdHMKLSBGb3IgU3RhcnR1cCBTZW5pb3IgRGV2ZWxvcGVycwotIEZvciBTdGFydHVwIEVuZ2luZWVycwotIEZvciBTdGFydHVwIFFBIEVuZ2luZWVycywgUGVyZm9ybWFuY2UgVGVzdGVycwotIEZvciBTdGFydHVwIFNlY3VyaXR5IEFkdmlzb3JzICYgUGVuIFRlc3RlcnMKCiMjIyBTcG9uc29ycwotIEVsaXZhYXM6IFtKb2IgT3BlbmluZ3NdKGh0dHBzOi8vd3d3Lmluc3RhaHlyZS5jb20vam9icy1hdC1lbGl2YWFzLykgfCBbRm9sbG93IG9uIEdpdGh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL2VsaXZhYXNkKQoKCiMjIyBDb250cmlidXRvcnMKLSBodHRwczovL2dpdGh1Yi5jb20vbWFuamVzaHB2Ci0gaHR0cHM6Ly9naXRodWIuY29tL0FzaHV0b3NoTW80OQotIGh0dHBzOi8vZ2l0aHViLmNvbS9BeXVzaENyaW8K readmeEtag: '"82948b98729d78c6c0104ba3b5af9b3047368cb4"' readmeLastModified: Sun, 07 Jul 2024 12:26:10 GMT repositoryId: 704798735 description: Cloud Native Docker Sandbox for Indian Startups created: '2023-10-14T05:59:20Z' updated: '2025-09-19T05:29:51Z' language: null archived: false stars: 3 watchers: 1 forks: 1 owner: manjeshpv logo: https://avatars.githubusercontent.com/u/1999957?v=4 repoEtag: '"a36577e88630b655b8dd61cfa1f54e5d4d12358b7e76dde59b269ad5dd30c681"' repoLastModified: Fri, 19 Sep 2025 05:29:51 GMT category: Server foundInMaster: true - source: openapi3 tags repository: https://github.com/orisai/openapi v3: true id: a755d23d53fa42bbbac1908bcd25d285 repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPgoJPGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcmlzYWkvLmdpdGh1Yi9ibG9iL21haW4vaW1hZ2VzL3JlcG9fdGl0bGUucG5nP3Jhdz10cnVlIiBhbHQ9Ik9yaXNhaSIvPgoJPGJyLz4KCU9wZW5BUEkKPC9oMT4KCjxwIGFsaWduPSJjZW50ZXIiPgoJT3BlbkFQSSBidWlsZGVyLCBwYXJzZXIgYW5kIHNlcmlhbGl6ZXIKPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CglDb21wbGlhbnQgd2l0aCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wIj52My4xLjAgc3BlY3M8L2E+CjwvcD4KCjxwIGFsaWduPSJjZW50ZXIiPgoJ8J+ThCBDaGVjayBvdXQgb3VyIDxhIGhyZWY9ImRvY3MvUkVBRE1FLm1kIj5kb2N1bWVudGF0aW9uPC9hPi4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+Cgnwn5K4IElmIHlvdSBsaWtlIE9yaXNhaSwgcGxlYXNlIDxhIGhyZWY9Imh0dHBzOi8vb3Jpc2FpLmRldi9zcG9uc29yIj5tYWtlIGEgZG9uYXRpb248L2E+LiBUaGFuayB5b3UhCjwvcD4KCjxwIGFsaWduPSJjZW50ZXIiPgoJPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29yaXNhaS9vcGVuYXBpL2FjdGlvbnM/cXVlcnk9d29ya2Zsb3c6Q0krYnJhbmNoOnYxLngiPjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vb3Jpc2FpL29wZW5hcGkvYWN0aW9ucy93b3JrZmxvd3MvY2kueWFtbC9iYWRnZS5zdmc/YnJhbmNoPXYxLngiPjwvYT4KCTxhIGhyZWY9Imh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9vcmlzYWkvb3BlbmFwaT9icmFuY2g9djEueCI+PGltZyBzcmM9Imh0dHBzOi8vYmFkZ2VuLm5ldC9jb3ZlcmFsbHMvYy9naXRodWIvb3Jpc2FpL29wZW5hcGkvdjEueD9jYWNoZT0zMDAiPjwvYT4KCTxhIGhyZWY9Imh0dHBzOi8vZGFzaGJvYXJkLnN0cnlrZXItbXV0YXRvci5pby9yZXBvcnRzL2dpdGh1Yi5jb20vb3Jpc2FpL29wZW5hcGkvdjEueCI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZW5kcG9pbnQ/c3R5bGU9ZmxhdCZ1cmw9aHR0cHM6Ly9iYWRnZS1hcGkuc3RyeWtlci1tdXRhdG9yLmlvL2dpdGh1Yi5jb20vb3Jpc2FpL29wZW5hcGkvdjEueCI+PC9hPgoJPGEgaHJlZj0iaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL29yaXNhaS9vcGVuYXBpIj48aW1nIHNyYz0iaHR0cHM6Ly9iYWRnZW4ubmV0L3BhY2thZ2lzdC9kdC9vcmlzYWkvb3BlbmFwaT9jYWNoZT0zNjAwIj48L2E+Cgk8YSBocmVmPSJodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvb3Jpc2FpL29wZW5hcGkiPjxpbWcgc3JjPSJodHRwczovL2JhZGdlbi5uZXQvcGFja2FnaXN0L3Yvb3Jpc2FpL29wZW5hcGk/Y2FjaGU9MzYwMCI+PC9hPgoJPGEgaHJlZj0iaHR0cHM6Ly9jaG9vc2VhbGljZW5zZS5jb20vbGljZW5zZXMvbXBsLTIuMC8iPjxpbWcgc3JjPSJodHRwczovL2JhZGdlbi5uZXQvYmFkZ2UvbGljZW5zZS9NUEwtMi4wL2JsdWU/Y2FjaGU9MzYwMCI+PC9hPgo8cD4KCiMjCg== readmeEtag: '"9f1699f73d78f9ee72d7af92b3271eb6adbd6844"' readmeLastModified: Fri, 21 Jun 2024 22:26:58 GMT repositoryId: 547861622 description: '[WIP] OpenAPI builder, parser and serializer' created: '2022-10-08T12:47:28Z' updated: '2024-12-29T16:06:12Z' language: PHP archived: false stars: 3 watchers: 1 forks: 0 owner: orisai logo: https://avatars.githubusercontent.com/u/68913382?v=4 license: MPL-2.0 repoEtag: '"25dd62329ede859b543f558f93850431bcf5c4f255719630bb0d44d7b9d5e741"' repoLastModified: Sun, 29 Dec 2024 16:06:12 GMT category: Testing foundInMaster: true - source: - openapi3 tags - openapi31 tags repository: https://github.com/api-flows/openapi-workflow-parser v3: true v3_1: true id: de663aa29fdc4381a95f3bcf538e307f repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFdvcmtmbG93IChBcmF6em8pIFBhcnNlcgoKWyFbXShodHRwczovL2JhZGdlbi5uZXQvZ2l0aHViL2xpY2Vuc2UvQVBJLUZsb3dzL29wZW5hcGktd29ya2Zsb3ctcGFyc2VyKV0oTElDRU5TRSkKWyFbXShodHRwczovL2JhZGdlbi5uZXQvbWF2ZW4vdi9tYXZlbi1jZW50cmFsL2NvbS5hcGktZmxvd3Mvb3BlbmFwaS13b3JrZmxvdy1wYXJzZXIpXShodHRwczovL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIvY29tL2FwaS1mbG93cy9vcGVuYXBpLXdvcmtmbG93LXBhcnNlci8pClshW1F1YWxpdHkgR2F0ZSBTdGF0dXNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PUFQSS1GbG93c19vcGVuYXBpLXdvcmtmbG93LXBhcnNlciZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9QVBJLUZsb3dzX29wZW5hcGktd29ya2Zsb3ctcGFyc2VyKQoKUGFyc2luZyBBUEkgd29ya2Zsb3dzLgoKIyMgT3ZlcnZpZXcKClRoZSBPcGVuQVBJIFdvcmtmbG93IHBhcnNlciBpcyBhbiBvcGVuLXNvdXJjZSBKYXZhIGxpYnJhcnkgZGVzaWduZWQgdG8gcGFyc2UgdGhlIFtPQUkgQXJhenpvIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvQXJhenpvLVNwZWNpZmljYXRpb24vKSBmaWxlcy4gSXQgcmVhZHMgYW4gQXJhenpvIGZpbGUgKEpTT04gb3IgWUFNTCBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQpIGFuZCBjcmVhdGVzIHRoZSBjb3JyZXNwb25kaW5nIEphdmEgb2JqZWN0cy4gIAoKVGhlIHBhcnNlcidzIGdvYWwgaXMgdG8gc2ltcGxpZnkgdGhlIGV4dHJhY3Rpb24gYW5kIG1hbmlwdWxhdGlvbiBvZiB3b3JrZmxvd3MsIGhlbHBpbmcgZGV2ZWxvcGVycyBjcmVhdGUgYXBwbGljYXRpb25zIGFuZCB0b29scyB0aGF0IGhhcm5lc3MgdGhlIHNlbWFudGljIHN0cnVjdHVyZSBvZiBBUEkgZmxvd3MuCgojIyBGZWF0dXJlcwoKLSAqKldvcmtmbG93IFBhcnNpbmc6KiogUmVhZHMgT0FJIEFyYXp6byBzcGVjaWZpY2F0aW9uIGZpbGVzIGxvYWRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgSmF2YSBvYmplY3RzLgotICoqRWFzZSBvZiBVc2U6KiogUHJvdmlkZXMgYSBzaW1wbGUgd2F5IGZvciBkZXZlbG9wZXJzIHRvIHBhcnNlIHdvcmtmbG93cy4KLSAqKkNvbXBhdGliaWxpdHk6KiogU3VwcG9ydHMgYm90aCBKU09OIGFuZCBZQU1MIGZvcm1hdHMuCi0gKipWYWxpZGF0aW9uOioqIFZhbGlkYXRlcyB0aGUgc3BlY2lmaWNhdGlvbiBhY2NvcmRpbmcgdG8gdGhlIFtBcmF6em8gU3BlY2lmaWNhdGlvbiB2MS4wLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvQXJhenpvLVNwZWNpZmljYXRpb24vKS4KICAKIyMgVXNhZ2UKCiMjIyBBZGQgdG8gdGhlIHByb2plY3QKCllvdSBjYW4gaW5jbHVkZSB0aGlzIGxpYnJhcnkgZnJvbSBNYXZlbiBjZW50cmFsOgpgYGAKICA8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPmNvbS1hcGktZmxvd3M8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLXdvcmtmbG93LXBhcnNlcjwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPjAuMC4zPC92ZXJzaW9uPgogIDwvZGVwZW5kZW5jeT4KYGBgCgpQYXJzZSBmcm9tIGZpbGU6CmBgYGphdmEKICBmaW5hbCBTdHJpbmcgV09SS0ZMT1dTX1NQRUMgPSAicGF0aC9wZXQtY291cG9ucy53b3JrZmxvdy55YW1sIjsKCiAgT3BlbkFQSVdvcmtmbG93UGFyc2VyUmVzdWx0IHJlc3VsdCA9IHBhcnNlci5wYXJzZShXT1JLRkxPV1NfU1BFQyk7CgogIGJvb2xlYW4gdmFsaWQgPSByZXN1bHQuaXNWYWxpZCgpOwogIFN0cmluZyB0aXRsZSA9IHJlc3VsdC5nZXRPcGVuQVBJV29ya2Zsb3coKS5nZXRJbmZvKCkuZ2V0VGl0bGUoKTsKYGBgCgpQYXJzZSBmcm9tIFVSTDoKYGBgamF2YQogIGZpbmFsIFN0cmluZyBXT1JLRkxPV1NfU1BFQyA9ICJodHRwczovL2hvc3QvcGF0aC9wZXQtY291cG9ucy53b3JrZmxvdy55YW1sIjsKCiAgT3BlbkFQSVdvcmtmbG93UGFyc2VyUmVzdWx0IHJlc3VsdCA9IHBhcnNlci5wYXJzZShXT1JLRkxPV1NfU1BFQyk7CgogIGJvb2xlYW4gdmFsaWQgPSByZXN1bHQuaXNWYWxpZCgpOwogIFN0cmluZyB0aXRsZSA9IHJlc3VsdC5nZXRPcGVuQVBJV29ya2Zsb3coKS5nZXRJbmZvKCkuZ2V0VGl0bGUoKTsKYGBgCgojIyBCdWlsZCBmcm9tIHNvdXJjZQoKQ2xvbmUgZnJvbSB0aGUgR2l0SHViIHJlcG9zaXRvcnkKCmBgYGJhc2gKICBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL0FQSS1GbG93cy9vcGVuYXBpLXdvcmtmbG93LXBhcnNlci5naXQKICBjZCBvcGVuYXBpLXdvcmtmbG93LXBhcnNlcgogIG12biBwYWNrYWdlCmBgYAoKIyMgVXNlIHNuYXBzaG90cwoKQWRkIHRoZSBNYXZlbiByZXBvc2l0b3J5IGZvciB0aGUgT3BlbkFQSSB3b3JrZmxvdyBwYXJzZXIgc25hcHNob3RzOgpgYGB4bWwKIDxyZXBvc2l0b3JpZXM+CiAgICA8cmVwb3NpdG9yeT4KICAgICAgPGlkPmdpdGh1YjwvaWQ+CiAgICAgIDx1cmw+aHR0cHM6Ly9tYXZlbi5wa2cuZ2l0aHViLmNvbS9BUEktRmxvd3Mvb3BlbmFwaS13b3JrZmxvdy1wYXJzZXI8L3VybD4KICAgICAgPHNuYXBzaG90cz4KICAgICAgICA8ZW5hYmxlZD50cnVlPC9lbmFibGVkPgogICAgICA8L3NuYXBzaG90cz4KICAgIDwvcmVwb3NpdG9yeT4KICA8L3JlcG9zaXRvcmllcz4KYGBgCkFkZCB0aGUgU05BUFNIT1QgZGVwZW5kZW5jeSAoW2NoZWNrIGxhdGVzdF0ocG9tLnhtbCkgYXZhaWxhYmxlKSBpbiB5b3VyIFBPTSBmaWxlOgpgYGB4bWwKICAgIDxkZXBlbmRlbmN5PgogICAgICA8Z3JvdXBJZD5jb20uYXBpLWZsb3dzPC9ncm91cElkPgogICAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLXdvcmtmbG93LXBhcnNlcjwvYXJ0aWZhY3RJZD4KICAgICAgPHZlcnNpb24+MC4wLjQtU05BUFNIT1Q8L3ZlcnNpb24+CiAgICA8L2RlcGVuZGVuY3k+CmBgYAo= readmeEtag: '"6a706544a68f764fb1ce2700116a45db7baea395"' readmeLastModified: Tue, 13 Aug 2024 10:48:40 GMT repositoryId: 729817092 description: Java parser of the OpenAPI workflow (Arazzo) specification created: '2023-12-10T13:02:41Z' updated: '2025-08-18T07:56:48Z' language: Java archived: false stars: 4 watchers: 1 forks: 1 owner: API-Flows logo: https://avatars.githubusercontent.com/u/153562650?v=4 license: Apache-2.0 repoEtag: '"6eab4b40a4db59f0ff1a7479076154faef3d3433fcc441076be9c88260a836b4"' repoLastModified: Mon, 18 Aug 2025 07:56:48 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/mhapach/swaggermodelgenerator v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyTW9kZWxHZW5lcmF0b3IKClshW0xhdGVzdCBWZXJzaW9uIG9uIFBhY2thZ2lzdF1baWNvLXZlcnNpb25dXVtsaW5rLXBhY2thZ2lzdF0KWyFbVG90YWwgRG93bmxvYWRzXVtpY28tZG93bmxvYWRzXV1bbGluay1kb3dubG9hZHNdClshW0J1aWxkIFN0YXR1c11baWNvLXRyYXZpc11dW2xpbmstdHJhdmlzXQpbIVtTdHlsZUNJXVtpY28tc3R5bGVjaV1dW2xpbmstc3R5bGVjaV0KClRoaXMgbGlicmFyeSBnZW5lcmF0ZXMgbW9kZWxzIGFuZCBzZXJ2aWNlIHdpdGggbWV0aG9kcyBiYXNlZCBvbiBTd2FnZ2VyIHNjaGVtZS4gCkN1cnJlbnQgcmVsZWFzZSBzdXBwb3J0cyBPcGVuQVBJIDIuMCAoQWthIE9BUykgYW5kIE9wZW5BcGkgMy4wCgojIyBJbnN0YWxsYXRpb24KClN0ZXAgMS4gQWRkIEVsb3F1ZW50IE1vZGVsIEdlbmVyYXRvciB0byB5b3VyIHByb2plY3QgdmlhIENvbXBvc2VyCgpgYGAgYmFzaAokIGNvbXBvc2VyIHJlcXVpcmUgbWhhcGFjaC9zd2FnZ2VybW9kZWxnZW5lcmF0b3IKYGBgClN0ZXAgMi4gUmVnaXN0ZXIgU3dhZ2dlck1vZGVsR2VuZXJhdG9yU2VydmljZVByb3ZpZGVyIGluIGNvbmZpZy9hcHAucGhwCmBgYCAgCidwcm92aWRlcnMnID0+IFsKICAgIC8vLi4uCiAgICBcbWhhcGFjaFxTd2FnZ2VyTW9kZWxHZW5lcmF0b3JcU3dhZ2dlck1vZGVsR2VuZXJhdG9yU2VydmljZVByb3ZpZGVyOjpjbGFzcywKXQpgYGAKCiMjIFVzYWdlCiMjIyBNb2RlbHMgYW5kIHNlcnZpY2UgZ2VuZXJhdGlvbgogICAgICAKICAgICRzZXJ2aWNlU2NoZW1lID0gImh0dHA6Ly95b3VyLXNlcnZpY2UuY29tL3NjaGVtZSI7CiAgICAkbW9kZWxzTmFtZXNwYWNlID0gJ0FwcFxTZXJ2aWNlc1xNb2RlbHMnOwogICAgJHNlcnZpY2VOYW1lc3BhY2UgPSAnQXBwXFNlcnZpY2VzJzsKICAgICRtb2RlbHNQYXRoID0gIi95b3VyLXByb2plY3QvYXBwL1NlcnZpY2VzL01vZGVscyI7CiAgICAkc2VydmljZVBhdGggPSAiL3lvdXItcHJvamVjdC9hcHAvU2VydmljZXMiOwoKICAgIC8qKiBAdmFyIFN3YWdnZXIgJGNvbnZlcnRlckluc3RhbmNlICovCiAgICAkY29udmVydGVySW5zdGFuY2UgPSAobmV3IFN3YWdnZXJNb2RlbEdlbmVyYXRvcigkc2VydmljZVNjaGVtZSwgdHJ1ZSkpLT5nZXRDb252ZXJ0ZXJJbnN0YW5jZSgkbW9kZWxzTmFtZXNwYWNlLCAkc2VydmljZU5hbWVzcGFjZSk7CiAgICAkY29udmVydGVySW5zdGFuY2UtPmdlbk1vZGVscygkbW9kZWxzUGF0aCk7ICAgICAgICAKICAgICRjb252ZXJ0ZXJJbnN0YW5jZS0+Z2VuU2VydmljZSgkc2VydmljZVBhdGgpOwogICAgCiMjIyBHZW5lcmF0ZWQgc2VydmljZSBhbmQgbW9kZWxzIHVzYWdlLiBFeGFtcGxlIDEKICAgICRzZXJ2aWNlQWRkcmVzcyA9ICJodHRwOi8veW91ci1zZXJ2aWNlLmNvbS9zb21lLW5hbWUiOwogICAgJHNlcnZpY2UgPSBuZXcgU2VydmljZSgkc2VydmljZUFkZHJlc3MpOwogICAgJGJjID0gJHNlcnZpY2UtPmJlbmVmaXRDYXRlZ29yaWVzVXNpbmdHRVQoWwogICAgICAgICdwYXRoJyA9PiBbJ2lkJyA9PiAxMTIyXSwKICAgICAgICAncXVlcnknID0+IFsnc29tZS1wYXJhbScgPT4gMV0sCiAgICBdKTsgICAKIyMjIEdlbmVyYXRlZCBzZXJ2aWNlIGFuZCBtb2RlbHMgdXNhZ2UuIEV4YW1wbGUgMgogICAgJHNlcnZpY2VBZGRyZXNzID0gImh0dHA6Ly95b3VyLXNlcnZpY2UuY29tL3NvbWUtbmFtZSI7CiAgICAkdG9rZW4gPSAnZGFrc2Rsa2Egc2hkbGtqYWhzbGtkaiBoPT0nOwogICAgJGhlYWRlcnMgPSBbCiAgICAgICAgJ0FjY2VwdCcgPT4gJyovKicsCiAgICAgICAgJ0NvbnRlbnQtVHlwZScgPT4gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsCiAgICAgICAgJ0NhY2hlLUNvbnRyb2wnID0+ICduby1jYWNoZScsCiAgICAgICAgIkF1dGhvcml6YXRpb24iID0+ICJCZWFyZXIgeyR0b2tlbn0iCiAgICBdOwogICAgJHNlcnZpY2UgPSBuZXcgU2VydmljZSgkc2VydmljZUFkZHJlc3MsICRoZWFkZXJzKTsKICAgICRiYyA9ICRzZXJ2aWNlLT5iZW5lZml0Q2F0ZWdvcmllc1VzaW5nR0VUKFsKICAgICAgICAncXVlcnknID0+IFsnc29tZS1wYXJhbScgPT4gMV0sCiAgICAgICAgJ2JvZHknID0+ICd7InBhcmFtMSI6MTAwLCAicGFyYW0yIjoyMDB9JwogICAgXSk7CiAgICAgICAKIyMjIERlYnVnIGxvZyBlbmFibGluZy4gRXhhbXBsZSAzCiAgICAkc2VydmljZUFkZHJlc3MgPSAiaHR0cDovL3lvdXItc2VydmljZS5jb20vc29tZS1uYW1lIjsKICAgICRjb25maWcgPSBjb25maWcoJ2xvZ2dpbmcuY2hhbm5lbHMuJy5jb25maWcoJ2xvZ2dpbmcuZGVmYXVsdCcpKTsKICAgICRjb25maWdbJ3BhdGgnXSA9IHN0b3JhZ2VfcGF0aCgibG9ncy9yZXN0LmxvZyIpOyAvLyBvcHRpb25hbAogICAgJGxvZ2dlciA9IFxMb2c6OmJ1aWxkKCRjb25maWcpOwogICAgJHNlcnZpY2UgPSBuZXcgU2VydmljZSgkc2VydmljZUFkZHJlc3MsIFsnQ29udGVudC1UeXBlJyA9PiAnYXBwbGljYXRpb24vanNvbiddLCAkbG9nZ2VyKTsKICAgIC8vRW5hYmxpbmcgbG9nICAgIAogICAgJHNlcnZpY2UtPmVuYWJsZUxvZygpOwogICAgLy8gY2FsbCBzZXJ2aWNlIG1ldGhvZCAgICAgICAgCiAgICAkYmMgPSAkc2VydmljZS0+YmVuZWZpdENhdGVnb3JpZXNVc2luZ0dFVChbCiAgICAgICAgJ3F1ZXJ5JyA9PiBbJ3NvbWUtcGFyYW0nID0+IDFdLAogICAgICAgICdib2R5JyA9PiAneyJwYXJhbTEiOjEwMCwgInBhcmFtMiI6MjAwfScKICAgIF0pOyAgIAogICAgCiMjIENoYW5nZSBsb2cKClBsZWFzZSBzZWUgdGhlIFtjaGFuZ2Vsb2ddKGNoYW5nZWxvZy5tZCkgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gd2hhdCBoYXMgY2hhbmdlZCByZWNlbnRseS4KCiMjIFRlc3RpbmcKCmBgYCBiYXNoCiQgY29tcG9zZXIgdGVzdApgYGAKCiMjIENvbnRyaWJ1dGluZwoKUGxlYXNlIHNlZSBbY29udHJpYnV0aW5nLm1kXShjb250cmlidXRpbmcubWQpIGZvciBkZXRhaWxzIGFuZCBhIHRvZG9saXN0LgoKIyMgU2VjdXJpdHkKCklmIHlvdSBkaXNjb3ZlciBhbnkgc2VjdXJpdHkgcmVsYXRlZCBpc3N1ZXMsIHBsZWFzZSBlbWFpbCBhdXRob3IgZW1haWwgaW5zdGVhZCBvZiB1c2luZyB0aGUgaXNzdWUgdHJhY2tlci4KCiMjIENyZWRpdHMKCi0gW2F1dGhvciBuYW1lXVtsaW5rLWF1dGhvcl0KLSBbQWxsIENvbnRyaWJ1dG9yc11bbGluay1jb250cmlidXRvcnNdCgojIyBMaWNlbnNlCgpsaWNlbnNlLiBQbGVhc2Ugc2VlIHRoZSBbbGljZW5zZSBmaWxlXShsaWNlbnNlLm1kKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCltpY28tdmVyc2lvbl06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L3YvbWhhcGFjaC9zd2FnZ2VybW9kZWxnZW5lcmF0b3Iuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlCltpY28tZG93bmxvYWRzXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9wYWNrYWdpc3QvZHQvbWhhcGFjaC9zd2FnZ2VybW9kZWxnZW5lcmF0b3Iuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlCltpY28tdHJhdmlzXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90cmF2aXMvbWhhcGFjaC9zd2FnZ2VybW9kZWxnZW5lcmF0b3IvbWFzdGVyLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZQpbaWNvLXN0eWxlY2ldOiBodHRwczovL3N0eWxlY2kuaW8vcmVwb3MvMTIzNDU2Nzgvc2hpZWxkCgpbbGluay1wYWNrYWdpc3RdOiBodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvbWhhcGFjaC9zd2FnZ2VybW9kZWxnZW5lcmF0b3IKW2xpbmstZG93bmxvYWRzXTogaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL21oYXBhY2gvc3dhZ2dlcm1vZGVsZ2VuZXJhdG9yCltsaW5rLXRyYXZpc106IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9taGFwYWNoL3N3YWdnZXJtb2RlbGdlbmVyYXRvcgpbbGluay1zdHlsZWNpXTogaHR0cHM6Ly9zdHlsZWNpLmlvL3JlcG9zLzEyMzQ1Njc4CltsaW5rLWF1dGhvcl06IGh0dHBzOi8vZ2l0aHViLmNvbS9taGFwYWNoCltsaW5rLWNvbnRyaWJ1dG9yc106IC4uLy4uL2NvbnRyaWJ1dG9ycwo= readmeEtag: '"6d5573fd487cae3f0cfff219e63786cae1dd1c0d"' readmeLastModified: Tue, 14 May 2024 11:07:14 GMT repositoryId: 257096773 description: >- Laravel library that generates models and service with methods based on Swagger scheme. Current release supports OpenAPI 2.0 (Aka OAS) and OpenApi 3.0 created: '2020-04-19T20:34:51Z' updated: '2024-09-16T15:27:48Z' language: PHP archived: false stars: 3 watchers: 1 forks: 0 owner: mhapach logo: https://avatars.githubusercontent.com/u/6570258?v=4 license: NOASSERTION repoEtag: '"5e6f37340d57e51bbd18953e22596b0e3399ceaad1ba2b5db27111c7ef51da46"' repoLastModified: Mon, 16 Sep 2024 15:27:48 GMT foundInMaster: true category: Data Validators id: c60edd99eed7b5341001026b01957e0b - source: - openapi3 tags - openapi31 tags repository: https://github.com/bump-sh-examples/rails-design-first v3: true v3_1: true id: 04a4ac10f8421c07973b6c7150ad5567 repositoryMetadata: base64Readme: >- IyBSYWlscyBIZWxsbyBPcGVuQVBJCgpUaGlzIHJlcG9zaXRvcnkgd2FzIGJ1aWx0IGFzIHNhbXBsZSBjb2RlIGZvciB0aGUgQnVtcC5zaCBndWlkZSBvbiBfW1VzaW5nIE9wZW5BUEkgdG8gc2ltcGxpZnkgYnVpbGRpbmcgYW5kIHRlc3RpbmcgUnVieSBvbiBSYWlscyBBUElzXShodHRwczovL2RvY3MuYnVtcC5zaC9ndWlkZXMvb3BlbmFwaS9kZXNpZ24tZmlyc3QtcmFpbHMvKV8uIExlYXJuIHRvIHVzZSB0aGUgQVBJIERlc2lnbiBGaXJzdCB3b3JrZmxvdywgYW5kIHNpbXBsaWZ5IHlvdXIgUmFpbHMgY29kZSBieSBub3QgaGF2aW5nIHRvIHJlcGVhdCB5b3VyIEFQSSBjb250cmFjdCBpbiB2YWxpZGF0aW9uIGFuZCBjb250cmFjdCB0ZXN0aW5nIGFzIHdlbGwgYXMgZG9jdW1lbnRhdGlvbi4gSnVzdCBkbyBpdCBvbmNlLCBtYWtlIGVhc3kgY29kZSwgdGhlbiBwb3AgaXQgYWxsIG9udG8gQnVtcC5zaCB0byBoYXZlIFtncmVhdCBBUEkgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9idW1wLnNoL2J1bXAtZXhhbXBsZXMvaHViL2NvZGUtc2FtcGxlcy9kb2MvcmFpbHMtZGVzaWduLWZpcnN0KS4KCiMjIFVzYWdlCgpDbG9uZSB0aGUgcmVwb3NpdG9yeSBkb3duIHRvIGdpdmUgaXQgYSB0cnkuCgpgYGAKIyBTZXQgZXZlcnl0aGluZyB1cAokIGJ1bmRsZSBpbnN0YWxsCgojIFN0YXJ0IHRoZSBzZXJ2ZXIKJCByYWlscyBzCgojIFBva2UgdGhlIEFQSSBhbmQgZ2V0IGF1dG9tYXRlZCAgZXJyb3JzCiQgY3VybCAtWCBQT1NUIGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC93aWRnZXRzIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIC1kICd7fScgIHwganEgLgoKewogICJ0aXRsZSI6ICJCYWQgUmVxdWVzdCBCb2R5IiwKICAic3RhdHVzIjogNDAwLAogICJlcnJvcnMiOiBbCiAgICB7CiAgICAgICJtZXNzYWdlIjogIm9iamVjdCBhdCByb290IGlzIG1pc3NpbmcgcmVxdWlyZWQgcHJvcGVydGllczogbmFtZSIsCiAgICAgICJwb2ludGVyIjogIiIsCiAgICAgICJjb2RlIjogInJlcXVpcmVkIgogICAgfQogIF0KfQpgYGAKCkdpdmUgaXQgYSB0cnksIHBsYXkgYXJvdW5kIHdpdGggdGhlIE9wZW5BUEksIGFuZCBzZWUgaG93IGl0IHJlc3BvbmRzIHRvIGRpZmZlcmVudCBzY2VuYXJpb3MuIAoKVGhlbiB5b3UgY2FuIHJ1biBgcnNwZWNgIHRvIHNlZSBpZiB0aGUgQVBJIHJlc3BvbnNlcyBtYXRjaCB3aGF0IE9wZW5BUEkgZXhwZWN0LCB3aGljaCB3aGVuIGltcGxlbWVudGVkIGluIHlvdXIgYXBwbGljYXRpb24gd2lsbCBoZWxwIG1ha2Ugc3VyZSB5b3VyIEFQSSBpcyBhY3R1YWxseSBkb2luZyB3aGF0IHlvdXIgZG9jcyBhcmUgc2F5aW5nLCBvciBtYWtlIHN1cmUgeW91ciBkb2NzIGFyZSBzYXlpbmcgd2hhdCB5b3VyIEFQSSBpcyBkb2luZywgd2hpY2hldmVyIHdheSByb3VuZCB5b3UgcHJlZmVyIHRvIHRoaW5rIG9mIGl0LgoKUHJldmlldyBob3cgdGhlIEFQSSByZWZlcmVuY2UgZG9jcyBsb29rIFtvbiBCdW1wLnNoXShodHRwczovL2J1bXAuc2gvYnVtcC1leGFtcGxlcy9odWIvY29kZS1zYW1wbGVzL2RvYy9yYWlscy1kZXNpZ24tZmlyc3QpLgoKIyMgTGljZW5zZQoKVGhlIGNvbnRlbnRzIG9mIHRoaXMgcmVwb3NpdG9yeSBhcmUgbGljZW5zZWQgdW5kZXIgW0NDIEJZLU5DLVNBCiAgNC4wXSguL0xJQ0VOU0VfQ0MtQlktTkMtU0EtNC4wKS4K readmeEtag: '"c03cf67788386b81839994ea8f387da606473b63"' readmeLastModified: Mon, 11 Mar 2024 16:05:27 GMT repositoryId: 740102881 description: >- Speed up your Rails API development with OpenAPI request validation and contract testing. created: '2024-01-07T14:36:56Z' updated: '2025-06-26T12:27:43Z' language: Ruby archived: false stars: 3 watchers: 2 forks: 0 owner: bump-sh-examples logo: https://avatars.githubusercontent.com/u/157144805?v=4 license: NOASSERTION repoEtag: '"2b6c7347c55622bdcd1228ce1e6b1bf808ccd5ada11ceb3ecff88923a5fc05c3"' repoLastModified: Thu, 26 Jun 2025 12:27:43 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/tsingsun/woocoo v3: true id: e194113fddfe7be854f117e3eadbe339 repositoryMetadata: base64Readme: >- IyBXb29Db28KClshW0xhbmd1YWdlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xhbmd1YWdlLUdvLWJsdWUuc3ZnKV0oaHR0cHM6Ly9nb2xhbmcub3JnLykKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3RzaW5nc3VuL3dvb2Nvby9icmFuY2gvbWFpbi9ncmFwaC9iYWRnZS5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvdHNpbmdzdW4vd29vY29vKQpbIVtHbyBSZXBvcnQgQ2FyZF0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vdHNpbmdzdW4vd29vY29vKV0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL3RzaW5nc3VuL3dvb2NvbykKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vdHNpbmdzdW4vd29vY29vL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL2dpdGh1Yi5jb20vdHNpbmdzdW4vd29vY29vL2FjdGlvbnM/cXVlcnk9YnJhbmNoJTNBbWFpbikKWyFbUmVsZWFzZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvcmVsZWFzZS90c2luZ3N1bi93b29jb28uc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9naXRodWIuY29tL3RzaW5nc3VuL3dvb2Nvby9yZWxlYXNlcykKWyFbR29Eb2NdKGh0dHBzOi8vcGtnLmdvLmRldi9iYWRnZS9naXRodWIuY29tL3RzaW5nc3VuL3dvb2Nvbz9zdGF0dXMuc3ZnKV0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vdHNpbmdzdW4vd29vY29vP3RhYj1kb2MpCgojIyBJbnRyb2R1Y3Rpb24KCmBXb29Db29gIGlzIGFuIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50IGZyYW1ld29yayBhbmQgdG9vbGtpdCB3cml0dGVuIGluIEdPKEdvbGFuZykuIEl0IGlzIGVhc3kgdG8gZGV2ZWxvcCBXZWJBcGkgYXBwbGljYXRpb25zIG9yIFJQQyBzZXJ2aWNlcy4KCmBXb29Db29gIG1haW5seSBwbGF5cyBhIHJvbGUgb2YgYWRoZXNpdmUsIGFuZCBpdHMgY29yZSBjb21wb25lbnRzIGFyZSBmcm9tIG90aGVyIG9wZW4gc291cmNlIHByb2plY3RzLiAKVGhlIGN1cnJlbnQgZmVhdHVyZXMgYXJlIGFzIGZvbGxvd3M6CgojIEZlYXR1cmVzCi0gW3hdIGNvbXBvbmVudCBjb25maWd1cmFibGUsZWFzeSB0byBzcGxpdCBtdWx0aSBlbnZpcm9ubWVudHMKLSBbeF0gbG9nZ2VyIGFuZCByb3RhdGUgc3VwcG9ydC4gW0RldGFpbF0oZG9jcy9tZC9sb2dnZXIubWQpLAotIFt4XSBPcGVuVGVsZW1ldHJ5IHN1cHBvcnQuIFtEZXRhaWxdKGRvY3MvbWQvb3RlbC5tZCkKLSBbeF0gYnVpbHQtaW4gd2ViIHJvdXRlcixzdXBwb3J0cyBHcmFwaFFMLgotIFt4XSBidWlsdC1pbiBncnBjIHNlcnZlciBhbmQgZWFzeSB0byB1c2UgZ3JwYyBjbGllbnQuCi0gW3hdIEpXVC1iYXNlZCB2YWxpZGF0aW9uCi0gW3hdIG1pY3Jvc2VydmljZSByZWdpc3RyeSBhbmQgZGlzY292ZXJ5OiAKICAtIGV0Y2R2MzogcmVnaXN0ZXIgYW5kIGRpc2NvdmVyeSBzZXJ2aWNlcyAKICAtIFtQb2xhcmlzXShodHRwczovL2dpdGh1Yi5jb20vcG9sYXJpc21lc2gvcG9sYXJpcyk6IHNlcnZpY2UgZGlzY292ZXJ5IGFuZCBnb3Zlcm5hbmNlCgojIyBUb29scwoKLSB3b2NvLWNsaTogY29tbWFuZCBsaW5lIHRvb2wsIGluY2x1ZGUgZmVhdHVyZToKCiAgLSBbeF0gZ2VuZXJhdGUgY29kZSBzdXBwb3J0OiBgRW50YAogIC0gW3hdIHNlcnZlciBjb2RlIGdlbmVyYXRvciBmb3Igb3BlbmFwaSAzLjAgc3BlYy4gc2VlW09wZW5BcGkzIEdlbmVyYXRvcl0oZG9jcy9tZC9vYXNnZW4ubWQpCgojIyBXb3JrIFdpdGgKCi0gW2ZhY2Vib29rIGVudF0oaHR0cHM6Ly9naXRodWIuY29tL2VudC9lbnQpCi0gR3JhcGhxbDogYnkgZW50CgojIyBleGFtcGxlcwoKW3dvb2NvbyBleGFtcGxlc10oaHR0cHM6Ly9naXRodWIuY29tL3RzaW5nc3VuL3dvb2Nvby1leGFtcGxlKQoKIyMgb3RoZXJzOgoKY29udGFjdDoKLSBRUTogMjE5OTcyNzIKCiMjIFRoYW5rcwoKIVtpbWFnZV0oaHR0cHM6Ly9yZXNvdXJjZXMuamV0YnJhaW5zLmNvbS9zdG9yYWdlL3Byb2R1Y3RzL2NvbXBhbnkvYnJhbmQvbG9nb3MvamJfYmVhbS5zdmcp readmeEtag: '"a5a57ac9a75461312cf043b31c1a5171a33c6e8c"' readmeLastModified: Tue, 13 Aug 2024 08:15:25 GMT repositoryId: 129063014 description: an application development framework and toolkit created: '2018-04-11T08:44:52Z' updated: '2025-12-24T09:20:23Z' language: Go archived: false stars: 7 watchers: 2 forks: 0 owner: tsingsun logo: https://avatars.githubusercontent.com/u/5848549?v=4 license: Apache-2.0 repoEtag: '"a522bb5944a526604fd60fc99ddf9211cb2ca3346a223796c8dbb0b66da73bdb"' repoLastModified: Wed, 24 Dec 2025 09:20:23 GMT category: Server Implementations foundInMaster: true - source: - openapi3 tags - openapi31 tags repository: https://github.com/swaggerexpert/openapi-server-url-templating v3: true v3_1: true id: 28ee2f640ed6f6fc55bfdae1fdd8fa96 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXNlcnZlci11cmwtdGVtcGxhdGluZwoKWyFbbnBtdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL29wZW5hcGktc2VydmVyLXVybC10ZW1wbGF0aW5nLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktc2VydmVyLXVybC10ZW1wbGF0aW5nKQpbIVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL29wZW5hcGktc2VydmVyLXVybC10ZW1wbGF0aW5nLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktc2VydmVyLXVybC10ZW1wbGF0aW5nKQpbIVtUZXN0IHdvcmtmbG93XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlcmV4cGVydC9vcGVuYXBpLXNlcnZlci11cmwtdGVtcGxhdGluZy9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlcmV4cGVydC9vcGVuYXBpLXNlcnZlci11cmwtdGVtcGxhdGluZy9hY3Rpb25zKQpbIVtEZXBlbmRhYm90IGVuYWJsZWRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRGVwZW5kYWJvdC1lbmFibGVkLWJsdWUuc3ZnKV0oaHR0cHM6Ly9kZXBlbmRhYm90LmNvbS8pClshW3RyeSBvbiBSdW5LaXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvdHJ5JTIwb24tUnVuS2l0LWJyaWdodGdyZWVuLnN2Zz9zdHlsZT1mbGF0KV0oaHR0cHM6Ly9ucG0ucnVua2l0LmNvbS9vcGVuYXBpLXNlcnZlci11cmwtdGVtcGxhdGluZykKWyFbVGlkZWxpZnRdKGh0dHBzOi8vdGlkZWxpZnQuY29tL2JhZGdlcy9wYWNrYWdlL25wbS9vcGVuYXBpLXNlcnZlci11cmwtdGVtcGxhdGluZyldKGh0dHBzOi8vdGlkZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9wa2cvbnBtLW9wZW5hcGktc2VydmVyLXVybC10ZW1wbGF0aW5nP3V0bV9zb3VyY2U9bnBtLW9wZW5hcGktc2VydmVyLXVybC10ZW1wbGF0aW5nJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPXJlYWRtZSkKCltTZXJ2ZXIgVVJMIFRlbXBsYXRpbmddKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMS5odG1sI3NlcnZlci1vYmplY3QpIHN1cHBvcnRzIFtTZXJ2ZXIgVmFyaWFibGVzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjEuaHRtbCNzZXJ2ZXItdmFyaWFibGUtb2JqZWN0KS4gVmFyaWFibGUgc3Vic3RpdHV0aW9ucyB3aWxsIGJlIG1hZGUgd2hlbiBhIHZhcmlhYmxlIGlzIG5hbWVkIGluIGB7YGJyYWNrZXRzYH1gLgpUaGlzIG1lY2hhbmlzbSBpcyB1c2VkIGJ5IFtTZXJ2ZXIgT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjEuaHRtbCNzZXJ2ZXItb2JqZWN0KQpvZiBbT3BlbkFQSSBzcGVjaWZpY2F0aW9uXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnLykuCgpgb3BlbmFwaS1zZXJ2ZXItdXJsLXRlbXBsYXRpbmdgIGlzIGEgKipwYXJzZXIqKiwgKip2YWxpZGF0b3IqKiBhbmQgKipzdWJzdGl0dXRpb24gbWVjaGFuaXNtKiogZm9yIE9wZW5BUEkgU2VydmVyIFVSTCBUZW1wbGF0aW5nLAp3aGljaCBwbGF5ZWQgYSBbZm91bmRhdGlvbmFsIHJvbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL3B1bGwvNDI2NCkgaW4gZGVmaW5pbmcgdGhlIG9mZmljaWFsIEFOQkYgZ3JhbW1hciBmb3IgU2VydmVyIFVSTCBUZW1wbGF0aW5nLgoKSXQgc3VwcG9ydHMgU2VydmVyIE9iamVjdCBVUkwgVGVtcGxhdGluZyBkZWZpbmVkIGluIGZvbGxvd2luZyBPcGVuQVBJIHNwZWNpZmljYXRpb24gdmVyc2lvbnM6CgotIFtPcGVuQVBJIDMuMC4wXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjAuaHRtbCkKLSBbT3BlbkFQSSAzLjAuMV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4xLmh0bWwpCi0gW09wZW5BUEkgMy4wLjJdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMi5odG1sKQotIFtPcGVuQVBJIDMuMC4zXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCkKLSBbT3BlbkFQSSAzLjAuNF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwpCi0gW09wZW5BUEkgMy4xLjBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMC5odG1sKQotIFtPcGVuQVBJIDMuMS4xXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjEuaHRtbCkKCjx0YWJsZT4KICA8dHI+CiAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSI+CiAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vY2RuMi5odWJzcG90Lm5ldC9odWJmcy80MDA4ODM4L3dlYnNpdGUvbG9nb3MvbG9nb3NfZm9yX2Rvd25sb2FkL1RpZGVsaWZ0X3ByaW1hcnktc2hvcnRoYW5kLWxvZ28ucG5nIiBhbHQ9IlRpZGVsaWZ0IiB3aWR0aD0iNjAiIC8+CiAgICAgIDwvdGQ+CiAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSI+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly90aWRlbGlmdC5jb20vc3Vic2NyaXB0aW9uL3BrZy9ucG0tb3BlbmFwaS1zZXJ2ZXItdXJsLXRlbXBsYXRpbmc/dXRtX3NvdXJjZT1ucG0tb3BlbmFwaS1zZXJ2ZXItdXJsLXRlbXBsYXRpbmcmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249cmVhZG1lIj4KICAgICAgICAgICAgR2V0IHByb2Zlc3Npb25hbGx5IHN1cHBvcnRlZCBvcGVuYXBpLXNlcnZlci11cmwtdGVtcGxhdGluZyB3aXRoIFRpZGVsaWZ0IFN1YnNjcmlwdGlvbi4KICAgICAgICA8L2E+CiAgICAgIDwvdGQ+CiAgPC90cj4KPC90YWJsZT4KCiMjIFRhYmxlIG9mIENvbnRlbnRzCgotIFtHZXR0aW5nIHN0YXJ0ZWRdKCNnZXR0aW5nLXN0YXJ0ZWQpCiAgLSBbSW5zdGFsbGF0aW9uXSgjaW5zdGFsbGF0aW9uKQogIC0gW1VzYWdlXSgjdXNhZ2UpCiAgICAtIFtQYXJzaW5nXSgjcGFyc2luZykKICAgIC0gW1ZhbGlkYXRpb25dKCN2YWxpZGF0aW9uKQogICAgLSBbU3Vic3RpdHV0aW9uXSgjc3Vic3RpdHV0aW9uKQogICAgLSBbR3JhbW1hcl0oI2dyYW1tYXIpCi0gW01vcmUgYWJvdXQgT3BlbkFQSSBTZXJ2ZXIgVVJMIFRlbXBsYXRpbmddKCNtb3JlLWFib3V0LW9wZW5hcGktc2VydmVyLXVybC10ZW1wbGF0aW5nKQotIFtMaWNlbnNlXSgjbGljZW5zZSkKCiMjIEdldHRpbmcgc3RhcnRlZAoKIyMjIEluc3RhbGxhdGlvbgoKWW91IGNhbiBpbnN0YWxsIGBvcGVuYXBpLXNlcnZlci11cmwtdGVtcGxhdGluZ2AgdXNpbmcgYG5wbWA6CgpgYGBzaAogJCBucG0gaW5zdGFsbCBvcGVuYXBpLXNlcnZlci11cmwtdGVtcGxhdGluZwpgYGAKCiMjIyBVc2FnZQoKYG9wZW5hcGktc2VydmVyLXVybC10ZW1wbGF0aW5nYCBjdXJyZW50bHkgc3VwcG9ydHMgKipwYXJzaW5nKiosICoqdmFsaWRhdGlvbioqIGFuZCAqKnN1YnN0aXR1dGlvbioqLgpCb3RoIHBhcnNlciBhbmQgdmFsaWRhdG9yIGFyZSBiYXNlZCBvbiBhIHN1cGVyc2V0IG9mIFtBQk5GXShodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNTIzNCkgKFtTQUJORl0oaHR0cHM6Ly9naXRodWIuY29tL2xkdGhvbWFzL2FwZy1qczIvYmxvYi9tYXN0ZXIvU0FCTkYubWQpKQphbmQgdXNlIFthcGctbGl0ZV0oaHR0cHM6Ly9naXRodWIuY29tL2xkdGhvbWFzL2FwZy1saXRlKSBwYXJzZXIgZ2VuZXJhdG9yLgoKIyMjIyBQYXJzaW5nCgpQYXJzaW5nIGEgU2VydmVyIFVSTCBUZW1wbGF0aW5nIGlzIGFzIHNpbXBsZSBhcyBpbXBvcnRpbmcgdGhlICoqcGFyc2UqKiBmdW5jdGlvbgphbmQgY2FsbGluZyBpdC4KCmBgYGpzCmltcG9ydCB7IHBhcnNlIH0gZnJvbSAnb3BlbmFwaS1zZXJ2ZXItdXJsLXRlbXBsYXRpbmcnOwoKY29uc3QgcGFyc2VSZXN1bHQgPSBwYXJzZSgnaHR0cHM6Ly97dXNlcm5hbWV9LmdpZ2FudGljLXNlcnZlci5jb206e3BvcnR9L3tiYXNlUGF0aH0nKTsKcGFyc2VSZXN1bHQucmVzdWx0LnN1Y2Nlc3M7IC8vID0+IHRydWUKYGBgCgoqKnBhcnNlUmVzdWx0KiogdmFyaWFibGUgaGFzIHRoZSBmb2xsb3dpbmcgc2hhcGU6CgpgYGAKewogIHJlc3VsdDogewogICAgc3VjY2VzczogdHJ1ZSwKICAgIHN0YXRlOiAxMDEsCiAgICBzdGF0ZU5hbWU6ICdNQVRDSCcsCiAgICBsZW5ndGg6IDU2LAogICAgbWF0Y2hlZDogNTYsCiAgICBtYXhNYXRjaGVkOiA1NiwKICAgIG1heFRyZWVEZXB0aDogMTIsCiAgICBub2RlSGl0czogNzU4CiAgfSwKICBhc3Q6IGZuYXN0IHsKICAgIGNhbGxiYWNrczogWwogICAgICAnc2VydmVyLXVybC10ZW1wbGF0ZSc6IFtGdW5jdGlvbjogc2VydmVyVXJsVGVtcGxhdGVdLAogICAgICAnc2VydmVyLXZhcmlhYmxlJzogW0Z1bmN0aW9uOiBzZXJ2ZXJWYXJpYWJsZV0sCiAgICAgICdzZXJ2ZXItdmFyaWFibGUtbmFtZSc6IFtGdW5jdGlvbjogc2VydmVyVmFyaWFibGVOYW1lXSwKICAgICAgbGl0ZXJhbHM6IFtGdW5jdGlvbjogbGl0ZXJhbHNdCiAgICBdLAogICAgaW5pdDogW0Z1bmN0aW9uIChhbm9ueW1vdXMpXSwKICAgIHJ1bGVEZWZpbmVkOiBbRnVuY3Rpb24gKGFub255bW91cyldLAogICAgdWR0RGVmaW5lZDogW0Z1bmN0aW9uIChhbm9ueW1vdXMpXSwKICAgIGRvd246IFtGdW5jdGlvbiAoYW5vbnltb3VzKV0sCiAgICB1cDogW0Z1bmN0aW9uIChhbm9ueW1vdXMpXSwKICAgIHRyYW5zbGF0ZTogW0Z1bmN0aW9uIChhbm9ueW1vdXMpXSwKICAgIHNldExlbmd0aDogW0Z1bmN0aW9uIChhbm9ueW1vdXMpXSwKICAgIGdldExlbmd0aDogW0Z1bmN0aW9uIChhbm9ueW1vdXMpXSwKICAgIHRvWG1sOiBbRnVuY3Rpb24gKGFub255bW91cyldCiAgfQp9CmBgYAoKIyMjIyMjIEludGVycHJldGluZyBBU1QgYXMgbGlzdCBvZiBlbnRyaWVzCgpgYGBqcwppbXBvcnQgeyBwYXJzZSB9IGZyb20gJ29wZW5hcGktc2VydmVyLXVybC10ZW1wbGF0aW5nJzsKCmNvbnN0IHBhcnNlUmVzdWx0ID0gcGFyc2UoJ2h0dHBzOi8ve3VzZXJuYW1lfS5naWdhbnRpYy1zZXJ2ZXIuY29tOntwb3J0fS97YmFzZVBhdGh9Jyk7CmNvbnN0IHBhcnRzID0gW107CgpwYXJzZVJlc3VsdC5hc3QudHJhbnNsYXRlKHBhcnRzKTsKYGBgCgpBZnRlciBydW5uaW5nIHRoZSBhYm92ZSBjb2RlLCAqKnBhcnRzKiogdmFyaWFibGUgaGFzIHRoZSBmb2xsb3dpbmcgc2hhcGU6CgpgYGBqcwpbCiAgWwogICAgJ3NlcnZlci11cmwtdGVtcGxhdGUnLAogICAgJ2h0dHBzOi8ve3VzZXJuYW1lfS5naWdhbnRpYy1zZXJ2ZXIuY29tOntwb3J0fS97YmFzZVBhdGh9JwogIF0sCiAgWyAnbGl0ZXJhbHMnLCAnaHR0cHM6Ly8nIF0sCiAgWyAnc2VydmVyLXZhcmlhYmxlJywgJ3t1c2VybmFtZX0nIF0sCiAgWyAnc2VydmVyLXZhcmlhYmxlLW5hbWUnLCAndXNlcm5hbWUnIF0sCiAgWyAnbGl0ZXJhbHMnLCAnLmdpZ2FudGljLXNlcnZlci5jb206JyBdLAogIFsgJ3NlcnZlci12YXJpYWJsZScsICd7cG9ydH0nIF0sCiAgWyAnc2VydmVyLXZhcmlhYmxlLW5hbWUnLCAncG9ydCcgXSwKICBbICdsaXRlcmFscycsICcvJyBdLAogIFsgJ3NlcnZlci12YXJpYWJsZScsICd7YmFzZVBhdGh9JyBdLAogIFsgJ3NlcnZlci12YXJpYWJsZS1uYW1lJywgJ2Jhc2VQYXRoJyBdCl0KYGBgCgojIyMjIyMgSW50ZXJwcmV0aW5nIEFTVCBhcyBYTUwKCmBgYGpzCmltcG9ydCB7IHBhcnNlIH0gZnJvbSAnb3BlbmFwaS1zZXJ2ZXItdXJsLXRlbXBsYXRpbmcnOwoKY29uc3QgcGFyc2VSZXN1bHQgPSBwYXJzZSgnaHR0cHM6Ly97dXNlcm5hbWV9LmdpZ2FudGljLXNlcnZlci5jb206e3BvcnR9L3tiYXNlUGF0aH0nKTsKY29uc3QgeG1sID0gcGFyc2VSZXN1bHQuYXN0LnRvWG1sKCk7CmBgYAoKQWZ0ZXIgcnVubmluZyB0aGUgYWJvdmUgY29kZSwgKip4bWwqKiB2YXJpYWJsZSBoYXMgdGhlIGZvbGxvd2luZyBjb250ZW50OgoKYGBgeG1sCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cjxyb290IG5vZGVzPSIxMCIgY2hhcmFjdGVycz0iNTYiPgogIDwhLS0gaW5wdXQgc3RyaW5nIC0tPgogIGh0dHBzOi8ve3VzZXJuYW1lfS5naWdhbnRpYy1zZXJ2ZXIuY29tOntwb3J0fS97YmFzZVBhdGh9CiAgPG5vZGUgbmFtZT0ic2VydmVyLXVybC10ZW1wbGF0ZSIgaW5kZXg9IjAiIGxlbmd0aD0iNTYiPgogICAgaHR0cHM6Ly97dXNlcm5hbWV9LmdpZ2FudGljLXNlcnZlci5jb206e3BvcnR9L3tiYXNlUGF0aH0KICAgIDxub2RlIG5hbWU9ImxpdGVyYWxzIiBpbmRleD0iMCIgbGVuZ3RoPSI4Ij4KICAgICAgaHR0cHM6Ly8KICAgIDwvbm9kZT48IS0tIG5hbWU9ImxpdGVyYWxzIiAtLT4KICAgIDxub2RlIG5hbWU9InNlcnZlci12YXJpYWJsZSIgaW5kZXg9IjgiIGxlbmd0aD0iMTAiPgogICAgICB7dXNlcm5hbWV9CiAgICAgIDxub2RlIG5hbWU9InNlcnZlci12YXJpYWJsZS1uYW1lIiBpbmRleD0iOSIgbGVuZ3RoPSI4Ij4KICAgICAgICB1c2VybmFtZQogICAgICA8L25vZGU+PCEtLSBuYW1lPSJzZXJ2ZXItdmFyaWFibGUtbmFtZSIgLS0+CiAgICA8L25vZGU+PCEtLSBuYW1lPSJzZXJ2ZXItdmFyaWFibGUiIC0tPgogICAgPG5vZGUgbmFtZT0ibGl0ZXJhbHMiIGluZGV4PSIxOCIgbGVuZ3RoPSIyMSI+CiAgICAgIC5naWdhbnRpYy1zZXJ2ZXIuY29tOgogICAgPC9ub2RlPjwhLS0gbmFtZT0ibGl0ZXJhbHMiIC0tPgogICAgPG5vZGUgbmFtZT0ic2VydmVyLXZhcmlhYmxlIiBpbmRleD0iMzkiIGxlbmd0aD0iNiI+CiAgICAgIHtwb3J0fQogICAgICA8bm9kZSBuYW1lPSJzZXJ2ZXItdmFyaWFibGUtbmFtZSIgaW5kZXg9IjQwIiBsZW5ndGg9IjQiPgogICAgICAgIHBvcnQKICAgICAgPC9ub2RlPjwhLS0gbmFtZT0ic2VydmVyLXZhcmlhYmxlLW5hbWUiIC0tPgogICAgPC9ub2RlPjwhLS0gbmFtZT0ic2VydmVyLXZhcmlhYmxlIiAtLT4KICAgIDxub2RlIG5hbWU9ImxpdGVyYWxzIiBpbmRleD0iNDUiIGxlbmd0aD0iMSI+CiAgICAgIC8KICAgIDwvbm9kZT48IS0tIG5hbWU9ImxpdGVyYWxzIiAtLT4KICAgIDxub2RlIG5hbWU9InNlcnZlci12YXJpYWJsZSIgaW5kZXg9IjQ2IiBsZW5ndGg9IjEwIj4KICAgICAge2Jhc2VQYXRofQogICAgICA8bm9kZSBuYW1lPSJzZXJ2ZXItdmFyaWFibGUtbmFtZSIgaW5kZXg9IjQ3IiBsZW5ndGg9IjgiPgogICAgICAgIGJhc2VQYXRoCiAgICAgIDwvbm9kZT48IS0tIG5hbWU9InNlcnZlci12YXJpYWJsZS1uYW1lIiAtLT4KICAgIDwvbm9kZT48IS0tIG5hbWU9InNlcnZlci12YXJpYWJsZSIgLS0+CiAgPC9ub2RlPjwhLS0gbmFtZT0ic2VydmVyLXVybC10ZW1wbGF0ZSIgLS0+Cjwvcm9vdD4KYGBgCgo+IE5PVEU6IEFTVCBjYW4gYWxzbyBiZSB0cmF2ZXJzZWQgaW4gY2xhc3NpY2FsIHdheSB1c2luZyBbZGVwdGggZmlyc3QgdHJhdmVyc2FsXShodHRwczovL3d3dy50dXRvcmlhbHNwb2ludC5jb20vZGF0YV9zdHJ1Y3R1cmVzX2FsZ29yaXRobXMvZGVwdGhfZmlyc3RfdHJhdmVyc2FsLmh0bSkuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgb3B0aW9uIHBsZWFzZSByZWZlciB0byBbYXBnLWpzXShodHRwczovL2dpdGh1Yi5jb20vbGR0aG9tYXMvYXBnLWpzKSBhbmQgW2FwZy1qcy1leGFtcGxlc10oaHR0cHM6Ly9naXRodWIuY29tL2xkdGhvbWFzL2FwZy1qcy1leGFtcGxlcykuCgojIyMjIFZhbGlkYXRpb24KClZhbGlkYXRpbmcgYSBTZXJ2ZXIgVVJMIFRlbXBsYXRpbmcgaXMgYXMgc2ltcGxlIGFzIGltcG9ydGluZyB0aGUgKip0ZXN0KiogZnVuY3Rpb24gYW5kIGNhbGxpbmcgaXQuCgoKYGBganMKaW1wb3J0IHsgdGVzdCB9IGZyb20gJ29wZW5hcGktc2VydmVyLXVybC10ZW1wbGF0aW5nJzsKCnRlc3QoJ2h0dHBzOi8ve3VzZXJuYW1lfS5naWdhbnRpYy1zZXJ2ZXIuY29tOntwb3J0fS97YmFzZVBhdGh9Jyk7IC8vID0+IHRydWUKdGVzdCgnaHR0cHM6Ly9naWdhbnRpYy1zZXJ2ZXIuY29tL2Jhc2UtcGF0aCcpOyAvLyA9PiB0cnVlCnRlc3QoJ2h0dHBzOi8vZ2lnYW50aWMtc2VydmVyLmNvbS9iYXNlLXBhdGgnLCB7IHN0cmljdDogdHJ1ZSB9KTsgLy8gPT4gZmFsc2UgKGRvZXNuJ3QgY29udGFpbiBhbnkgc2VydmVyLXZhcmlhYmxlKQpgYGAKCiMjIyMgU3Vic3RpdHV0aW9uCgpQZXJmb3JtaW5nIFNlcnZlciBVUkwgdGVtcGxhdGUgc3Vic3RpdHV0aW9uIGlzIGFzIHNpbXBsZSBhcyBpbXBvcnRpbmcgdGhlICoqc3Vic3RpdHV0ZSoqIGZ1bmN0aW9uIGFuZCBjYWxsaW5nIGl0LgoKYGBganMKaW1wb3J0IHsgc3Vic3RpdHV0ZSB9IGZyb20gJ29wZW5hcGktc2VydmVyLXVybC10ZW1wbGF0aW5nJzsKCnN1YnRpdHV0ZSgnaHR0cHM6Ly97dXNlcm5hbWV9LmdpZ2FudGljLXNlcnZlci5jb20nLCB7IHVzZXJuYW1lOiAnY2hhcjBuJyB9KTsgLy8gPT4gImh0dHBzOi8vY2hhcjBuLmdpZ2FudGljLXNlcnZlci5jb20iCmBgYAoKU3Vic3RpdHV0ZWQgU2VydmVyIFVSTCBUZW1wbGF0aW5nIGlzIGF1dG9tYXRpY2FsbHkgZW5jb2RlZCB1c2luZyBbZW5jb2RlVVJJQ29tcG9uZW50XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9lbmNvZGVVUklDb21wb25lbnQpIGZ1bmN0aW9uLgpJdCBpcyBwb3NzaWJsZSB0byBwcm92aWRlIGEgY3VzdG9tIGVuY29kZXIuCgpgYGBqcwppbXBvcnQgeyBzdWJzdGl0dXRlIH0gZnJvbSAnb3BlbmFwaS1zZXJ2ZXItdXJsLXRlbXBsYXRpbmcnOwoKc3Vic3RpdHV0ZSgnaHR0cHM6Ly97dXNlcm5hbWV9LmdpZ2FudGljLXNlcnZlci5jb20nLCB7IHVzZXJuYW1lOiAnLz8jJyB9LCB7CiAgZW5jb2RlcjogKHNlcnZlclZhcmlhYmxlKSA9PiBzZXJ2ZXJWYXJpYWJsZSwgLy8gbm8gZW5jb2RpbmcKfSk7IC8vID0+ICJodHRwczovLy8/Iy5naWdhbnRpYy1zZXJ2ZXIuY29tIgpgYGAKCiMjIyMgR3JhbW1hcgoKTmV3IGdyYW1tYXIgaW5zdGFuY2UgY2FuIGJlIGNyZWF0ZWQgaW4gZm9sbG93aW5nIHdheToKCmBgYGpzCmltcG9ydCB7IEdyYW1tYXIgfSBmcm9tICdvcGVuYXBpLXNlcnZlci11cmwtdGVtcGxhdGluZyc7Cgpjb25zdCBncmFtbWFyID0gbmV3IEdyYW1tYXIoKTsKYGBgCgpUbyBvYnRhaW4gb3JpZ2luYWwgQUJORiAoU0FCTkYpIGdyYW1tYXIgYXMgYSBzdHJpbmc6CgpgYGBqcwppbXBvcnQgeyBHcmFtbWFyIH0gZnJvbSAnb3BlbmFwaS1zZXJ2ZXItdXJsLXRlbXBsYXRpbmcnOwoKY29uc3QgZ3JhbW1hciA9IG5ldyBHcmFtbWFyKCk7CgpncmFtbWFyLnRvU3RyaW5nKCk7Ci8vIG9yClN0cmluZyhncmFtbWFyKTsKYGBgCgojIyBNb3JlIGFib3V0IE9wZW5BUEkgU2VydmVyIFVSTCBUZW1wbGF0aW5nCgpUaGUgU2VydmVyIFVSTCBUZW1wbGF0aW5nIGlzIGRlZmluZWQgYnkgdGhlIGZvbGxvd2luZyBbQUJORl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzUyMzQpIHN5bnRheAoKYGBgYWJuZgo7IE9wZW5BUEkgU2VydmVyIFVSTCB0ZW1wbGF0aW5nIEFCTkYgc3ludGF4CnNlcnZlci11cmwtdGVtcGxhdGUgICAgPSAxKiggbGl0ZXJhbHMgLyBzZXJ2ZXItdmFyaWFibGUgKSA7IHZhcmlhbnQgb2YgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzY1NzAjc2VjdGlvbi0yCnNlcnZlci12YXJpYWJsZSAgICAgICAgPSAieyIgc2VydmVyLXZhcmlhYmxlLW5hbWUgIn0iCnNlcnZlci12YXJpYWJsZS1uYW1lICAgPSAxKiggJXgwMC03QSAvICV4N0MgLyAleDdFLTEwRkZGRiApIDsgZXZlcnkgVVRGOCBjaGFyYWN0ZXIgZXhjZXB0IHsgYW5kIH0gKGZyb20gT3BlbkFQSSkKCjsgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzY1NzAjc2VjdGlvbi0yLjEKOyBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9lcnJhdGEvZWlkNjkzNwpsaXRlcmFscyAgICAgICAgICAgICAgID0gMSooICV4MjEgLyAleDIzLTI0IC8gJXgyNi0zQiAvICV4M0QgLyAleDNGLTVCCiAgICAgICAgICAgICAgICAgICAgICAgLyAleDVEIC8gJXg1RiAvICV4NjEtN0EgLyAleDdFIC8gdWNzY2hhciAvIGlwcml2YXRlCiAgICAgICAgICAgICAgICAgICAgICAgLyBwY3QtZW5jb2RlZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgYW55IFVuaWNvZGUgY2hhcmFjdGVyIGV4Y2VwdDogQ1RMLCBTUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgIERRVU9URSwgIiUiIChhc2lkZSBmcm9tIHBjdC1lbmNvZGVkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgICI8IiwgIj4iLCAiXCIsICJeIiwgImAiLCAieyIsICJ8IiwgIn0iCgo7IGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM2NTcwI3NlY3Rpb24tMS41CkRJR0lUICAgICAgICAgID0gICV4MzAtMzkgICAgICAgICAgICAgOyAwLTkKSEVYRElHICAgICAgICAgPSAgRElHSVQgLyAiQSIgLyAiQiIgLyAiQyIgLyAiRCIgLyAiRSIgLyAiRiIgOyBjYXNlLWluc2Vuc2l0aXZlCgpwY3QtZW5jb2RlZCAgICA9ICAiJSIgSEVYRElHIEhFWERJRwoKdWNzY2hhciAgICAgICAgPSAgJXhBMC1EN0ZGIC8gJXhGOTAwLUZEQ0YgLyAleEZERjAtRkZFRgogICAgICAgICAgICAgICAvICAleDEwMDAwLTFGRkZEIC8gJXgyMDAwMC0yRkZGRCAvICV4MzAwMDAtM0ZGRkQKICAgICAgICAgICAgICAgLyAgJXg0MDAwMC00RkZGRCAvICV4NTAwMDAtNUZGRkQgLyAleDYwMDAwLTZGRkZECiAgICAgICAgICAgICAgIC8gICV4NzAwMDAtN0ZGRkQgLyAleDgwMDAwLThGRkZEIC8gJXg5MDAwMC05RkZGRAogICAgICAgICAgICAgICAvICAleEEwMDAwLUFGRkZEIC8gJXhCMDAwMC1CRkZGRCAvICV4QzAwMDAtQ0ZGRkQKICAgICAgICAgICAgICAgLyAgJXhEMDAwMC1ERkZGRCAvICV4RTEwMDAtRUZGRkQKCmlwcml2YXRlICAgICAgID0gICV4RTAwMC1GOEZGIC8gJXhGMDAwMC1GRkZGRCAvICV4MTAwMDAwLTEwRkZGRApgYGAKCiMjIExpY2Vuc2UKCmBvcGVuYXBpLXNlcnZlci11cmwtdGVtcGxhdGluZ2AgaXMgbGljZW5zZWQgdW5kZXIgW0FwYWNoZSAyLjAgbGljZW5zZV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXJleHBlcnQvb3BlbmFwaS1zZXJ2ZXItdXJsLXRlbXBsYXRpbmcvYmxvYi9tYWluL0xJQ0VOU0UpLgpgb3BlbmFwaS1zZXJ2ZXItdXJsLXRlbXBsYXRpbmdgIGNvbWVzIHdpdGggYW4gZXhwbGljaXQgW05PVElDRV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXJleHBlcnQvb3BlbmFwaS1zZXJ2ZXItdXJsLXRlbXBsYXRpbmcvYmxvYi9tYWluL05PVElDRSkgZmlsZQpjb250YWluaW5nIGFkZGl0aW9uYWwgbGVnYWwgbm90aWNlcyBhbmQgaW5mb3JtYXRpb24uCg== readmeEtag: '"10de8be9d70e6837a9da15ee2efee0d1e6a2196e"' readmeLastModified: Sat, 28 Dec 2024 13:39:26 GMT repositoryId: 809665855 description: >- OpenAPI Server URL templating parser, validator and substitution mechanism. created: '2024-06-03T08:05:16Z' updated: '2026-01-21T22:55:39Z' language: JavaScript archived: false stars: 4 watchers: 1 forks: 1 owner: swaggerexpert logo: https://avatars.githubusercontent.com/u/172408630?v=4 license: Apache-2.0 repoEtag: '"6e42a30e31230f22eff3526ca1935c4af74dd01f802284634ed9f8403acc0b9e"' repoLastModified: Wed, 21 Jan 2026 22:55:39 GMT category: Parsers foundInMaster: true - source: - openapi3 tags - openapi31 tags repository: https://github.com/gopher-fleece/gleece v3: true v3_1: true id: a64dbea139404dd2c8731cb92e92bcaa repositoryMetadata: base64Readme: >- KipHbGVlY2UqKiAtIEJyaW5naW5nIGpveSBhbmQgZWFzZSB0byBBUEkgZGV2ZWxvcG1lbnQgaW4gR28hIPCfmoAgICAKCjwhLS0gU291cmNlIGNvZGUgaGVhbHRoICYgaW5mbyAtLT4KWyFbZ2xlZWNlXShodHRwczovL2dpdGh1Yi5jb20vZ29waGVyLWZsZWVjZS9nbGVlY2UvYWN0aW9ucy93b3JrZmxvd3MvYnVpbGQueW1sL2JhZGdlLnN2Zz9icmFuY2g9bWFpbildKGh0dHBzOi8vZ2l0aHViLmNvbS9nb3BoZXItZmxlZWNlL2dsZWVjZS9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55bWwpClshW0dvIFJlcG9ydCBDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9nb3BoZXItZmxlZWNlL2dsZWVjZSldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ29waGVyLWZsZWVjZS9nbGVlY2UpClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvZ2l0aHViL2dvcGhlci1mbGVlY2UvZ2xlZWNlL2JhZGdlLnN2Zz9icmFuY2g9bWFpbildKGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9nb3BoZXItZmxlZWNlL2dsZWVjZT9icmFuY2g9bWFpbikKWyFbR28gVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvZ28tbW9kL2dvLXZlcnNpb24vZ29waGVyLWZsZWVjZS9nbGVlY2UpXShodHRwczovL2dpdGh1Yi5jb20vZ29waGVyLWZsZWVjZS9nbGVlY2UvYmxvYi9tYWluL2dvLm1vZCkKCjwhLS0gUGFja2FnZXMsIFJlbGVhc2VzIGV0YyAtLT4KWyFbVlNDb2RlIEV4dGVuc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL3YvaGFpbS1rYXN0bmVyLmdsZWVjZS1leHRlbnNpb24/bGFiZWw9VlNDb2RlJTIwRXh0ZW5zaW9uKV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPWhhaW0ta2FzdG5lci5nbGVlY2UtZXh0ZW5zaW9uKQo8YSBocmVmPSJodHRwczovL2RvY3MuZ2xlZWNlLmRldiI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9kb2NzLWdsZWVjZS5kZXYtYmx1ZSIgYWx0PSJEb2N1bWVudGF0aW9uIj4KPC9hPgpbIVtMaWJIdW50IC0gR2xlZWNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpYkh1bnQtR2xlZWNlLWJsdWUpXShodHRwczovL3d3dy5saWJodW50LmNvbS9yL2dsZWVjZSkKWyFbTGF0ZXN0IFJlbGVhc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3YvcmVsZWFzZS9nb3BoZXItZmxlZWNlL2dsZWVjZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9nb3BoZXItZmxlZWNlL2dsZWVjZS9yZWxlYXNlcykKWyFbR28gUmVmZXJlbmNlXShodHRwczovL3BrZy5nby5kZXYvYmFkZ2UvZ2l0aHViLmNvbS9nb3BoZXItZmxlZWNlL2dsZWVjZS5zdmcpXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9nb3BoZXItZmxlZWNlL2dsZWVjZSkKCjwhLS0gU3VwcG9ydGVkIHN0YW5kYXJkcyAtLT4KWyFbT3BlbkFQSSAzLjBdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvT3BlbkFQSS0zLjAuMC1ncmVlbi5zdmcpXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjApClshW09wZW5BUEkgMy4xXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL09wZW5BUEktMy4xLjAtZ3JlZW4uc3ZnKV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wKQoKPCEtLSBTdXBwb3J0ZWQgZnJhbWV3b3JrcyAtLT4KWyFbR2luIFN1cHBvcnRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvR2luLVN1cHBvcnRlZC1ibHVlKV0oaHR0cHM6Ly9naW4tZ29uaWMuY29tLykKWyFbRWNobyBTdXBwb3J0XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0VjaG8tU3VwcG9ydGVkLWJsdWUpXShodHRwczovL2VjaG8ubGFic3RhY2suY29tLykKWyFbR29yaWxsYSBNdXggU3VwcG9ydF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9Hb3JpbGxhX011eC1TdXBwb3J0ZWQtYmx1ZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9nb3JpbGxhL211eCkKWyFbQ2hpIFN1cHBvcnRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQ2hpLVN1cHBvcnRlZC1ibHVlKV0oaHR0cHM6Ly9naXRodWIuY29tL2dvLWNoaS9jaGkpClshW0ZpYmVyIFN1cHBvcnRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRmliZXItU3VwcG9ydGVkLWJsdWUpXShodHRwczovL2dpdGh1Yi5jb20vZ29maWJlci9maWJlcikKCjwhLS0gU29jaWFsIC0tPgpbIVtHaXRIdWIgc3RhcnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL2dvcGhlci1mbGVlY2UvZ2xlZWNlLnN2Zz9zdHlsZT1zb2NpYWwmbGFiZWw9U3RhcnMpXShodHRwczovL2dpdGh1Yi5jb20vZ29waGVyLWZsZWVjZS9nbGVlY2Uvc3RhcmdhemVycykgClshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvZ29waGVyLWZsZWVjZS9nbGVlY2Uuc3ZnP3N0eWxlPXNvY2lhbCldKGh0dHBzOi8vZ2l0aHViLmNvbS9nb3BoZXItZmxlZWNlL2dsZWVjZS9ibG9iL21hc3Rlci9MSUNFTlNFKQoKCi0tLQoKIyMgQWJvdXQgIApEZXZlbG9waW5nIEFQSXMgZG9lc27igJl0IGhhdmUgdG8gYmUgYSBjaG9yZSAtIGl0IHNob3VsZCBiZSBzaW1wbGUsIGVmZmljaWVudCwgYW5kIGVuam95YWJsZS4gIAoKR29uZSBhcmUgdGhlIGRheXMgb2YgbWFudWFsbHkgd3JpdGluZyByZXBldGl0aXZlIGJvaWxlcnBsYXRlIGNvZGUgb3Igc3RydWdnbGluZyB0byBrZWVwIHlvdXIgQVBJIGRvY3VtZW50YXRpb24gaW4gc3luYyB3aXRoIHlvdXIgaW1wbGVtZW50YXRpb24uCgoKV2l0aCBHbGVlY2UsIHlvdSBjYW46ICAKLSAqKlNpbXBsaWZ5IGFuZCBzdGFuZGFyZGl6ZSoqICB5b3VyIEFQSSBkZXZlbG9wbWVudCBwcm9jZXNzLiAgCi0gQXV0b21hdGljYWxseSAqKmdlbmVyYXRlIE9wZW5BUEkgdjMuMC4wIC8gdjMuMS4wKiogc3BlY2lmaWNhdGlvbnMgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuICAKLSBFbnN1cmUgeW91ciBBUElzIGFyZSBhbHdheXMgKip1cC10by1kYXRlLCB3ZWxsLWRvY3VtZW50ZWQgYW5kIGNvbnNpc3RlbnQqKi4gIAotIEVmZm9ydGxlc3NseSAqKnZhbGlkYXRlIGlucHV0IGRhdGEqKiB0byBlbnN1cmUgeW91ciBBUElzIGFyZSByZWxpYWJsZSBhbmQgc2VjdXJlLgotIEFkb3B0IGEgKipzZWN1cml0eSBmaXJzdCoqIGFwcHJvYWNoIHdpdGggc2ltcGxlIHlldCBwb3dlcmZ1bCBhdXRob3JpemF0aW9uIGZsb3dzLgotICoqQ3VzdG9taXplIGJlaGF2aW9yKiogdG8geW91ciBleGFjdCBuZWVkcyBieSBleHRlbmRpbmcgb3Igb3ZlcnJpZGluZyB0aGUgcm91dGVzIHRlbXBsYXRlcy4KLSBCcmluZyB5b3VyIG93biByb3V0ZXIgLSB3b3JrcyBzZWFtbGVzc2x5IHdpdGggKipHaW4sIEVjaG8sIEdvcmlsbGEgTXV4LCBDaGksICYgRmliZXIqKi4KCkdsZWVjZSBhaW1zIHRvIG1ha2UgR28gZGV2ZWxvcGVyc+KAmSBsaXZlcyBlYXNpZXIgYnkgc2VhbWxlc3NseSBpbnRlZ3JhdGluZyBBUEkgcm91dGluZywgdmFsaWRhdGlvbiwgYW5kIGRvY3VtZW50YXRpb24gaW50byBhIHNpbmdsZSBjb2hlc2l2ZSB3b3JrZmxvdyAqKndpdGhvdXQgc2FjcmlmaWNpbmcgcGVyZm9ybWFuY2UqKi4KCkZvciBtb3JlIGluZm9ybWF0aW9uLCBjaGVjayBvdXQgdGhlIFtjb25jZXB0XShodHRwczovL2RvY3MuZ2xlZWNlLmRldi9kb2NzL2Fib3V0L2NvbmNlcHQpIHNlY3Rpb24gb2Ygb3VyIGRvY3VtZW50YXRpb24KCgojIyBEb2N1bWVudGF0aW9uCgpFeHBsb3JlIHRoZSBjb21wbGV0ZSBbZG9jdW1lbnRhdGlvbiBzaXRlXShodHRwczovL2RvY3MuZ2xlZWNlLmRldi9kb2NzL2ludHJvKSB0byBnZXQgc3RhcnRlZCBxdWlja2x5LiAgCgpZb3UgY2FuIGFsc28gY2hlY2sgb3V0IG91ciBbZXhhbXBsZSBwcm9qZWN0XShodHRwczovL2dpdGh1Yi5jb20vZ29waGVyLWZsZWVjZS9nbGVlY2V4YW1wbGUjcmVhZG1lKSwgd2hpY2ggZGVtb25zdHJhdGVzIGhvdyB0byBzZXQgdXAgYW5kIHVzZSBHbGVlY2UgaW4gYSByZWFsLXdvcmxkIHNjZW5hcmlvLiBUaGlzIGhhbmRzLW9uIHJlZmVyZW5jZSB3aWxsIGhlbHAgeW91IGludGVncmF0ZSBHbGVlY2Ugc2VhbWxlc3NseS4KCklmIHlvdSd2ZSBlbmNvdW50ZXJlZCBhIGdhcCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvciBmZWVsIHNvbWUgdG9waWMgaXMgaW5hZGVxdWF0ZWx5IGNvdmVyZWQsIHBsZWFzZSBsZXQgdXMga25vdyB2aWEgW0dpdEh1YiBJc3N1ZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb3BoZXItZmxlZWNlL2dsZWVjZS9pc3N1ZXMpCgoKIyMgVW5kZXIgdGhlIGhvb2QKCipHbGVlY2UqIGlzIGFsbW9zdCBleGNsdXNpdmVseSBhICoqZGVzaWduL2J1aWxkIHRpbWUqKiBmcmFtZXdvcmsvdHJhbnNwaWxlci0gdGhlcmUgYXJlIG5vIG1hZ2ljIHRyaWNrcyBvciBydW50aW1lIHNoZW5hbmlnYW5zLgoKT25jZSB5b3VyIEFQSSBpbXBsZW1lbnRhdGlvbiBpcyByZWFkeSwgdXNlICpHbGVlY2UqJ3MgQ0xJIHRvIGdlbmVyYXRlIHJvdXRlcyBhY2NvcmRpbmcgdG8geW91ciBjaG9zZW4gZW5naW5lLgoKVGhlc2UgZ2VuZXJhdGVkIHJvdXRlcyB3b3JrIGp1c3QgbGlrZSBhbnkgbWFudWFsbHkgd3JpdHRlbiBjb2RlIGFuZCBuZWVkIHRvIGJlIHJlZ2lzdGVyZWQgdG8geW91ciBlbmdpbmUncyByb3V0ZXIgaW5zdGFuY2UgdGhyb3VnaCB5b3VyIGFwcGxpY2F0aW9uIGNvZGUuCgpZb3UgY2FuIGNvbnRpbnVlIHRvIHVzZSB5b3VyIGVuZ2luZSdzIG5hdGl2ZSBjYWxscywgbWlkZGxld2FyZXMsIGFuZCBvdGhlciBmZWF0dXJlcyBhcyBiZWZvcmUgLSAqR2xlZWNlKidzIGdlbmVyYXRlZCBjb2RlIGFjdHMgb25seSBhcyBhIGNvbXBsZW1lbnRhcnkgcGx1Z2luIHRvIHlvdXIgcm91dGVyLgoKRm9yIGEgZGVlcGVyIGxvb2sgaW50byAqR2xlZWNlKidzIGludGVybmFscywgcGxlYXNlIHNlZSB0aGUgW2FyY2hpdGVjdHVyZV0oaHR0cHM6Ly9kb2NzLmdsZWVjZS5kZXYvZG9jcy9hYm91dC9hcmNoaXRlY3R1cmUpIHNlY3Rpb24gb2Ygb3VyIGRvY3VtZW50YXRpb24uCgoKIyMgTG9vayAmIEZlZWwgIAoKSGVyZeKAmXMgYSBwcmFjdGljYWwgc25pcHBldCBvZiBob3cgR2xlZWNlIHNpbXBsaWZpZXMgeW91ciBBUEkgZGV2ZWxvcG1lbnQ6ICAKCiFbU2NyZWVuc2hvdF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2dvcGhhci1mbGVlY2UvLmdpdGh1Yi9tYWluL2RvY3Mvc2NyZWVuc2hvdHMvdXNhZ2UtZXhhbXBsZS5wbmcpCgpBbGwgb3RoZXIgYXNwZWN0cywgaW5jbHVkaW5nIEhUVFAgcm91dGluZyBnZW5lcmF0aW9uLCBhdXRob3JpemF0aW9uIGVuZm9yY2VtZW50LCBwYXlsb2FkIHZhbGlkYXRpb24sIGVycm9yIGhhbmRsaW5nLCBhbmQgT3BlbkFQSSB2MyBzcGVjaWZpY2F0aW9uIGdlbmVyYXRpb24sIGFyZSBoYW5kbGVkIGJ5IEdsZWVjZS4KCiMjIFZpc3VhbCBTdHVkaW8gQ29kZSBFeHRlbnNpb24KClRvIGVuaGFuY2UgeW91ciBkZXZlbG9wbWVudCBleHBlcmllbmNlIHdpdGggR2xlZWNlLCB3ZSBwcm92aWRlIGFuIG9mZmljaWFsIFZpc3VhbCBTdHVkaW8gQ29kZSBleHRlbnNpb24gdGhhdCBwcm92aWRlcyBpbnRlbGxpZ2VudCBhbm5vdGF0aW9uIGhpZ2hsaWdodGluZyBhbmQgaW1wcm92ZWQgY29kZSB2aXNpYmlsaXR5LgoKRm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGNhcGFiaWxpdGllcyBzZWUgdGhlIFtHbGVlY2UgVlMgQ29kZSBFeHRlbnNpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9nb3BoZXItZmxlZWNlL2dsZWVjZS12c2NvZGUtZXh0ZW5zaW9uI3JlYWRtZSkuCgpUbyBpbnN0YWxsIGl0IHNlYXJjaCBgR2xlZWNlYCBpbiB0aGUgIkV4dGVuc2lvbiIgdGFiIG9yIGdvIHRvIHRoZSBbVmlzdWFsIFN0dWRpbyBNYXJrZXRwbGFjZV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPWhhaW0ta2FzdG5lci5nbGVlY2UtZXh0ZW5zaW9uKS4KCiMjIE91ciBJbml0aWF0aXZlCgpXZSBiZWxpZXZlIHRoYXQgQVBJIGRldmVsb3BtZW50IHNob3VsZCBiZSBjb2RlLWZpcnN0LCBmb2N1c2luZyBvbiB0aGUgZGV2ZWxvcGVyIGV4cGVyaWVuY2Ugd2hpbGUgbWFpbnRhaW5pbmcgaW5kdXN0cnkgc3RhbmRhcmRzLiBDb21pbmcgZnJvbSB0aGUgVHlwZVNjcmlwdCBlY29zeXN0ZW0sIHdlIHdlcmUgaW5zcGlyZWQgYnkgZnJhbWV3b3JrcyBsaWtlIFtUU09BXShodHRwczovL2dpdGh1Yi5jb20vbHVrZWF1dHJ5L3Rzb2EpIHRoYXQgaGFuZGxlIGV2ZXJ5dGhpbmcgZnJvbSByb3V0aW5nIGFuZCB2YWxpZGF0aW9uIHRvIE9wZW5BUEkgZ2VuZXJhdGlvbiAtIGFsbCBmcm9tIGEgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aDogeW91ciBjb2RlLgoKUmVhZCBtb3JlIGFib3V0IG91ciBpbml0aWF0aXZlIGFuZCBkZXZlbG9wbWVudCBwaGlsb3NvcGh5OgoqIFtIYWltIEthc3RuZXIncyBHbGVlY2UgUHJvamVjdCBibG9nIHBvc3RdKGh0dHBzOi8vYmxvZy5jYXN0bmV0LmNsdWIvZW4vYmxvZy9nbGVlY2UtcHJvamVjdCkKCiogW0EgSG9saXN0aWMgVmlldyBvbiBBUElzIGFzIGFuIEVjb3N5c3RlbV0oaHR0cHM6Ly96dXBsby5jb20vbGVhcm5pbmctY2VudGVyL2hvbGlzdGljLXZpZXctb2YtYXBpcykgaW4gKlp1cGxvKidzIGxlYXJuaW5nIGNlbnRlcgoKCiMjIFNlY3VyaXR5CgpUbyByZXBvcnQgc2VjdXJpdHkgY29uY2VybnMgb3IgdnVsbmVyYWJpbGl0aWVzLCBwbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4gb3VyIFtTZWN1cml0eSBQb2xpY3ldKC4vU0VDVVJJVFkubWQpLgoKIyMgQ29udGFjdAoKRm9yIGdlbmVyYWwgaW5xdWlyaWVzIG9yIGZlZWRiYWNrLCBwbGVhc2UgcmVhY2ggb3V0IHRvIHVzIGF0IFtjb250YWN0QGdsZWVjZS5kZXZdKG1haWx0bzpjb250YWN0QGdsZWVjZS5kZXYpLgoKQW55d2F5LCB3ZSdkIGxvdmUgdG8gaGVhciBmcm9tIHlvdSwgZXNwZWNpYWxseSBpZiB5b3Ugb3IgeW91ciBjb21wYW55IHVzZSBHbGVlY2UuCgojIyBIZWxwIHVzIGdyb3chCgoqR2xlZWNlKiBpcyBhIHR3by1tYW4gcGFzc2lvbiBwcm9qZWN0IGFuZCByZXF1aXJlcyBlbm9ybW91cyBlZmZvcnRzOwoKSWYgeW91IGZpbmQgaXQgaW50ZXJlc3Rpbmcgb3IgdXNlZnVsLCBwbGVhc2UgaGVscCB1cyBncm93IGJ5IGRyb3BwaW5nIGEgc3RhciBvciB0ZWxsaW5nIHlvdXIgY29sbGVhZ3VlcyBhYm91dCB1cyEKCllvdXIgc3VwcG9ydCBrZWVwcyB1cyBnb2luZyEKCi0tLQoKIyMgTGljZW5zZSAgCkdsZWVjZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgW01JVCBMSUNFTlNFXSguL0xJQ0VOU0UpLiA= readmeEtag: '"79015fe4fee129f564b50a7e7fa154d045af4126"' readmeLastModified: Mon, 22 Sep 2025 16:17:48 GMT repositoryId: 913709084 description: >- Building, documenting, validating, securing and customizing REST APIs through code-first development created: '2025-01-08T07:53:15Z' updated: '2026-01-12T02:49:11Z' language: Go archived: false stars: 82 watchers: 2 forks: 1 owner: gopher-fleece logo: https://avatars.githubusercontent.com/u/195629235?v=4 license: MIT repoEtag: '"5ca107a84980dec11081010c6831fdf60d4b41e6b4eaeb341184fee66c26b2af"' repoLastModified: Mon, 12 Jan 2026 02:49:11 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/codecentric/spring-boot-api-first v3: true repositoryMetadata: base64Readme: >- ICMgQVBJIGZpcnN0IFNwcmluZyBCb290IFNlcnZpY2UgKFdJUCkKCiBUaGlzIFNwcmluZyBCb290IFNlcnZpY2Ugd2lsbCBiZSBjcmVhdGVkIGJ5IHRoZSBBUEkgZmlyc3QgYXBwcm9hY2ggYW5kIHRlc3RlZCB3aXRoIFtLYXJhdGVdKGh0dHBzOi8vaW50dWl0LmdpdGh1Yi5pby9rYXJhdGUvKS4gRHVlIHRvIG1pc3NpbmcgY2FwYWJpbGl0eSBvZiBPcGVuQVBJIEdlbmVyYXRvciBpbiBWZXJzaW9uIDUuMC4wIHRoZSBkaXJlY3QgZG93bmxvYWQgb2YgdGhlIEFQSSBzcGVjIGlzIG5vdCBwb3NzaWJsZSBhdCB0aGUgbW9tZW50LiBTbyB3ZSB3aWxsIHJlbHkgb24gdXNpbmcgW0dyYWRsZSBEb3dubG9hZCBUYXNrXShodHRwczovL2dpdGh1Yi5jb20vbWljaGVsLWtyYWVtZXIvZ3JhZGxlLWRvd25sb2FkLXRhc2spLiBUaGVyZSBpcyBhbHNvIGFscmVhZHkgYSBbYnVnIHJlcG9ydF0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9pc3N1ZXMvODI1NSkgd3JpdHRlbiBieSBbam9zY2hpXShodHRwczovL2dpdGh1Yi5jb20vam9zY2hpKS4gQW5kIHRoZXJlIGlzIGFuIG9wZW4gW2ZlYXR1cmUgcmVxdWVzdF0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9pc3N1ZXMvOTA4MykgZm9yIE9wZW5BUEkgR2VuZXJhdG9yIHRvIHN1cHBvcnQgT3BlbkFQSSBTcGVjIDMuMS4gCiBEdXJpbmcgdGhlIHdyaXRpbmcgcHJvY2VzcyBPcGVuQVBJIEdlbmVyYXRvciB3YXMgcmVtb3ZlZCBhbmQgcmVwbGFjZWQgW09wZW5BUEkgUHJvY2Vzc29yXShodHRwczovL2RvY3Mub3BlbmFwaXByb2Nlc3Nvci5pby9vYXAvaG9tZS9ob21lLmh0bWwpLg== readmeEtag: '"d0c78f8a85e68b7aff4392e02cf88c1f6fa22c47"' readmeLastModified: Tue, 06 Jul 2021 09:48:42 GMT repositoryId: 324130901 description: Example project using Spring Boot and OpenAPI Processor created: '2020-12-24T10:34:38Z' updated: '2025-10-08T00:55:32Z' language: Java archived: false stars: 3 watchers: 1 forks: 4 owner: codecentric logo: https://avatars.githubusercontent.com/u/1009716?v=4 repoEtag: '"2148e7b2826b8abcd86f78cca4c50fd7fe1b1f60e54caefa6e8020506ca0196c"' repoLastModified: Wed, 08 Oct 2025 00:55:32 GMT foundInMaster: true category: SDK id: 36f5dbfc3daf547fbd1460be064da28d - source: openapi3 tags repository: https://github.com/zchee/openapi2protobuf v3: true id: f1ab0225162b832a64bce243ce55a302 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpMnByb3RvYnVmCgpbIVtMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL2dvLWxhbmd1YWdlLXNlcnZlci9vcGVuYXBpMnByb3RvYnVmP2NvbG9yPWJsdWUmbG9nbz1zcGR4JmxvZ29Db2xvcj0lMjM1QTk2Qzgmc3R5bGU9Zm9yLXRoZS1iYWRnZSldKGh0dHBzOi8vc3BkeC5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlLmh0bWwpCgpvcGVuYXBpMnByb3RvYnVmIGdlbmVyYXRlcyBQcm90b2NvbCBCdWZmZXJzIHYzIGFuZCBnUlBDIHNlcnZpY2VzIGRlZmluaXRpb25zIGZyb20gdGhlIE9wZW5BUEkvU3dhZ2dlciBzY2hlbWEuCg== readmeEtag: '"81277246368f666f71fadfbc3ca097b5df95e841"' readmeLastModified: Fri, 06 Jan 2023 11:39:32 GMT repositoryId: 469262087 description: >- openapi2protobuf generates Protocol Buffers v3 schema and gRPC service definitions from OpenAPI/Swagger schema definitions created: '2022-03-13T03:43:19Z' updated: '2024-06-28T05:49:16Z' language: Go archived: false stars: 3 watchers: 1 forks: 0 owner: zchee logo: https://avatars.githubusercontent.com/u/6366270?v=4 license: BSD-3-Clause repoEtag: '"7095b667f1c229813972dbf7fb2360974d020ecb45ef4eda348c5b1ba80cff85"' repoLastModified: Fri, 28 Jun 2024 05:49:16 GMT category: Parsers oldLocations: - https://github.com/go-language-server/openapi2protobuf foundInMaster: true - source: openapi3 tags repository: https://github.com/moochub/schema v3: true repositoryMetadata: base64Readme: >- IyBNT09DaHViIFNjaGVtYQoKVGhpcyByZXBvc2l0b3J5IGNvbnRhaW5zIHNwZWNpZmljYXRpb24gZmlsZXMgZm9yIGRhdGEgZXhjaGFuZ2UgYmV0d2VlbiBNT09DIHByb3ZpZGVycyBwYXJ0aWNpcGF0aW5nIGluIHRoZSBbTU9PQ2h1Yl0oaHR0cHM6Ly9tb29jaHViLm9yZykuIEJhc2VkIG9uIHByZXZpb3VzIHdvcmsgcmVnYXJkaW5nIFtNT09DIHN0YW5kYXJkc10oaHR0cHM6Ly9naXRodWIuY29tL29wZW5IUEkvbW9vYy1zdGFuZGFyZHMpLCB0aGUgSlNPTiBmb3JtYXQgc3BlY2lmaWVkIGVuYWJsZXMgYSBzZWFtbGVzcyBleGNoYW5nZSBvZiBjb3Vyc2UgaW5mb3JtYXRpb24sIGluc3RydWN0b3JzLCBhbmQgdGhlIGluc3RpdHV0ZXMgb2ZmZXJpbmcgYSBjb3Vyc2UuIE1pbmltYWwgaW5mb3JtYXRpb24gaXMgcmVxdWlyZWQgcGVyIGNvdXJzZSB0byBlYXNlIG9uYm9hcmRpbmcgZm9yIG5ldyBwYXJ0bmVycyB3aGlsZSBhbGxvd2luZyBjdXN0b21pemFiaWxpdHkgdG8gZml0IGluZGl2aWR1YWwgbmVlZHMuCgojIyBTcGVjaWZpY2F0aW9uCgpUaGUgTU9PQ2h1YiBBUEkgc3BlY2lmaWNhdGlvbiBjb25zaXN0cyBvZiB0d28gbWFqb3IgcGFydHM6ICgxKSBBIEpTT04gZm9ybWF0IGFuZCAoMikgYW4gQVBJIHZlcnNpb25pbmcgY29uY2VwdC4KCjEuIEpTT04gZm9ybWF0CgogICBUaGUgSlNPTiBmb3JtYXQgc3BlY2lmaWVkIGluIHRoaXMgcmVwb3NpdG9yeSBpcyBiYXNlZCBvbiB0aGUgW0pTT046QVBJXShodHRwczovL2pzb25hcGkub3JnKSBzY2hlbWEgYW5kIHVzZXMgdGhlaXIgcHJvcG9zZWQgcGFnaW5hdGlvbiBhcHByb2FjaC4gSW4gYSB2YWxpZCByZXNwb25zZSwgb25seSBhIGZldyBhdHRyaWJ1dGVzIG11c3QgYmUgcHJlc2VudCwgbW9zdCBjYW4gYmUgb21pdHRlZCBvciBjYW4gYmUgYG51bGxgLiBBcyB3ZSBzZWUgYSBzZW1hbnRpY2FsIGRpZmZlcmVuY2UgYmV0d2VlbiBhbiBvbWl0dGVkIGFuZCBhIGBudWxsYCB2YWx1ZSwgd2Uga2luZGx5IGFzayB5b3UgdG8gcHJvdmlkZSBhcyBtdWNoIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlLgoKMi4gQVBJIHZlcnNpb25pbmcgY29uY2VwdAoKICAgVXBvbiByZXF1ZXN0IG9mIHRoZSBBUEksIHRoZSBzZXJ2ZXIgYW5kIGNsaWVudCBtaWdodCBuZWdvdGlhdGUgdGhlIG1vc3Qgc3VpdGFibGUgdmVyc2lvbiBvZiB0aGUgQVBJIHVzaW5nIEhUVFAgaGVhZGVycy4gUGxlYXNlIHJlZmVyIHRvIHRoZSBbZGVkaWNhdGVkIHZlcnNpb25pbmcgc3BlY2lmaWNhdGlvbl0obW9vY2h1Yi12ZXJzaW9uaW5nLm1kKSBmb3IgbW9yZSBkZXRhaWxzLgoKIyMgUmVsZWFzZXMKClRoZSBbbGF0ZXN0IGZpbmFsaXplZCB2ZXJzaW9uXShodHRwczovL2dpdGh1Yi5jb20vbW9vY2h1Yi9zY2hlbWEvcmVsZWFzZXMvbGF0ZXN0KSBvZiB0aGUgc2NoZW1hIGlzIHJlbGVhc2VkIGluIHRoaXMgcmVwb3NpdG9yeSBhbmQgdGFnZ2VkIGFwcHJvcHJpYXRlbHkuIEFsbCBNT09DaHViIGNvbXBsaWFudCBzb2Z0d2FyZSBpcyByZXF1ZXN0ZWQgdG8gaW1wbGVtZW50IHRoZSB2ZXJzaW9uaW5nIGFzIG91dGxpbmVkIGluIHRoZSBbZGVkaWNhdGVkIEFQSSB2ZXJzaW9uaW5nIHNwZWNpZmljYXRpb25dKG1vb2NodWItdmVyc2lvbmluZy5tZCkuIFdlIGZvbGxvdyBhIFtzZW1hbnRpYyB2ZXJzaW9uaW5nXShodHRwczovL3NlbXZlci5vcmcpIGFwcHJvYWNoIGZvciBhbGwgcmVsZWFzZXMgdG8gZWFzZSBjb25zdW1pbmcgc2NoZW1hLWNvbXBsaWFudCBBUElzLgoKIyMgQ29udHJpYnV0aW9ucwoKVGhlIHNjaGVtYSBpcyBtYWlubHkgZHJpdmVuIGJ5IHRoZSBbTU9PQ2h1YiBvcmdhbml6YXRpb24gYW5kIHRoZWlyIHBhcnRuZXJzXShodHRwczovL21vb2NodWIub3JnL3BhcnRuZXJzLykuIFRoZXJlZm9yZSwgaXQgaXMgZGVzaWduZWQgdG8gcHJvdmlkZSBhIGNvbnNpc3RlbnQgYW5kIHVuaWZvcm0gbWVjaGFuaXNtIHRvIHRyYW5zcG9ydCByZXF1aXJlZCBpbmZvcm1hdGlvbiBiZXR3ZWVuIHRoZSBwYXJ0bmVycy4gV2Ugd2lsbCBldm9sdmUgdGhlIHNjaGVtYSBiYXNlZCBvbiByZXF1aXJlbWVudHMgaW50cm9kdWNlZCBieSBwYXJ0bmVycyBhbmQgY29uc3VtZXJzLiBBZGRpdGlvbmFsIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHNjaGVtYSBhcmUgd2VsY29tZSBhbmQgd2lsbCBiZSBjb25zaWRlcmVkIGZvciBhbiB1cGNvbWluZyByZWxlYXNlLiBQbGVhc2UgY3JlYXRlIGFuIGlzc3VlIG9yIGEgcHVsbCByZXF1ZXN0IHRvIHN0YXJ0IGNvbnRyaWJ1dGluZyEKCiMjIENvbnRhY3QKCklmIHlvdSBoYXZlIGZ1cnRoZXIgcXVlc3Rpb25zIG9yIHdvdWxkIGxpa2UgdG8gZ2V0IGxpc3RlZCBpbiB0aGUgW01PT0NodWJdKGh0dHBzOi8vbW9vY2h1Yi5vcmcpIHVzaW5nIGFuIGVuZHBvaW50IGZvbGxvd2luZyB0aGlzIHNjaGVtYSwgcGxlYXNlIGRyb3AgdXMgYSBtYWlsIGF0IG9mZmljZUBtb29jaHViLm9yZy4K readmeEtag: '"0b446e49b84e772b5555d586de201d8b311528b8"' readmeLastModified: Tue, 18 Jun 2024 14:40:56 GMT repositoryId: 343502074 description: >- A cross-platform schema definition used for data exchange between cooperating MOOC providers created: '2021-03-01T17:34:18Z' updated: '2025-12-11T14:49:09Z' language: null archived: false stars: 3 watchers: 4 forks: 3 owner: MOOChub logo: https://avatars.githubusercontent.com/u/79694863?v=4 license: MIT repoEtag: '"b8ee8ef1a52b077b3a21e388ebb2189f7a7e7606b53a3cf36640fba4a76fbd3a"' repoLastModified: Thu, 11 Dec 2025 14:49:09 GMT foundInMaster: true category: Parsers id: f82539087f07461ed2a41b256e61e762 - source: openapi3 tags repository: https://github.com/postman-solutions-eng/aippealing-companies-template v3: true id: dc22dd446e2db39aefb9053184a362f0 repositoryMetadata: base64Readme: >- IyBBKGkpcHBlYWxpbmcgQ29tcGFuaWVzIDpvZmZpY2U6IDphcnJvd19yaWdodDogOnJvYm90OiA6YXJyb3dfcmlnaHQ6IDpjaG9jb2xhdGVfYmFyOiA6Y2FyOiA6ZnJhbWVkX3BpY3R1cmU6IAoKW0FQSV0oaHR0cHM6Ly9hdXRvLWRlbW8ucG9zdG1hbnNvbHV0aW9ucy5jb20pIHRvIGNyZWF0ZSBhcHBlYWxpbmcgaW1hZ2VzIG9mIGNvbXBhbnkgcHJvZHVjdHMgbWFkZSBvZiBjaG9jb2xhdGUsIGdvbGQgb3IgbGVnby4KUmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIE9wZW5BSSAoREFMTC1FLCBHUFQtMykuCgpbIVtSdW4gaW4gUG9zdG1hbl0oaHR0cHM6Ly9ydW4ucHN0bW4uaW8vYnV0dG9uLnN2ZyldKGh0dHBzOi8vYXBwLmdldHBvc3RtYW4uY29tL3J1bi1jb2xsZWN0aW9uLzI0NDgzNzMzLWNjODA2ZDNhLTc1YmYtNDAyNS1iZmIxLWIzOTliMTBiYTAzZD9hY3Rpb249Y29sbGVjdGlvbiUyRmZvcmsmY29sbGVjdGlvbi11cmw9ZW50aXR5SWQlM0QyNDQ4MzczMy1jYzgwNmQzYS03NWJmLTQwMjUtYmZiMS1iMzk5YjEwYmEwM2QlMjZlbnRpdHlUeXBlJTNEY29sbGVjdGlvbiUyNndvcmtzcGFjZUlkJTNEMjEwZTc2MTUtZjY5Zi00MzIyLWE4N2YtMWQ4MTM1ZmUwNWJkIz9lbnYlNUJQdWJsaWNNb2NrJTVEPVczc2lhMlY1SWpvaVltRnpaVlZ5YkNJc0luWmhiSFZsSWpvaWFIUjBjSE02THk5bFlqSXdNbVJrWWkxa01UTm1MVFJpWmpjdFltRmpZUzFoWVdWaE1tRTNOV0V3TTJFdWJXOWpheTV3YzNSdGJpNXBieUlzSW1WdVlXSnNaV1FpT25SeWRXVXNJblI1Y0dVaU9pSmtaV1poZFd4MElpd2ljMlZ6YzJsdmJsWmhiSFZsSWpvaWFIUjBjSE02THk5bFlqSXdNbVJrWWkxa01UTm1MVFJpWmpjdFltRmpZUzFoWVdWaE1tRTNOV0V3TTJFdWJXOWpheTV3YzNSdGJpNXBieUlzSW5ObGMzTnBiMjVKYm1SbGVDSTZNSDBzZXlKclpYa2lPaUpQY0dWdVFVbFViMnRsYmlJc0luWmhiSFZsSWpvaVBIbHZkU0JrYjI0bmRDQnVaV1ZrSUdGdWVTQnlaV0ZzSUhSdmEyVnVJR1p2Y2lCMGFHVWdiVzlqYXlCelpYSjJaWEkrSWl3aVpXNWhZbXhsWkNJNmRISjFaU3dpZEhsd1pTSTZJbk5sWTNKbGRDSXNJbk5sYzNOcGIyNVdZV3gxWlNJNkltMXZZMnN0ZEc5clpXNGlMQ0p6WlhOemFXOXVTVzVrWlhnaU9qRjlYUT09KQoKWyFbUG9zdG1hbiBHb3Zlcm5hbmNlIGNoZWNrcyBvbiBicmFuY2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9qb25pY28vYWlwcGVhbGluZy1jb21wYW5pZXMtaW1wbC1vcGVuYWkvYWN0aW9ucy93b3JrZmxvd3MvZ292ZXJuYW5jZS1jaGVja3MtYnJhbmNoLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vam9uaWNvL2FpcHBlYWxpbmctY29tcGFuaWVzLWltcGwtb3BlbmFpL2FjdGlvbnMvd29ya2Zsb3dzL2dvdmVybmFuY2UtY2hlY2tzLWJyYW5jaC55bWwpCgpbIVtJbnRlZ3JhdGlvbiBUZXN0cyBQcm9kdWN0aW9uXShodHRwczovL2dpdGh1Yi5jb20vam9uaWNvL2FpcHBlYWxpbmctY29tcGFuaWVzLWltcGwtb3BlbmFpL2FjdGlvbnMvd29ya2Zsb3dzL2ludGVncmF0aW9uLXRlc3RzLXByb2R1Y3Rpb24ueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9qb25pY28vYWlwcGVhbGluZy1jb21wYW5pZXMtaW1wbC1vcGVuYWkvYWN0aW9ucy93b3JrZmxvd3MvaW50ZWdyYXRpb24tdGVzdHMtcHJvZHVjdGlvbi55bWwpCgoKCiMjIE1vdGl2YXRpb24KClRoZXJlIGFyZSBzb21lIGFtYXppbmcsIHZpc3VhbGx5IGFwcGVhbGluZyBjb21wYW55IHByb2R1Y3RzIG1hZGUgb2YgY2hvY29sYXRlIG9yIGxlZ28KCjxpbWcgd2lkdGg9IjE5NyIgYWx0PSJpbWFnZSIgc3JjPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xODcyMzE0LzIwODMyMDk3Ny0wNmUxOGQyNy00OTM4LTRiZTMtYWI5ZC04YjJmZmMyYzg1ZTEucG5nIj4gPGltZyB3aWR0aD0iMjM5IiBhbHQ9ImltYWdlIiBzcmM9Imh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzE4NzIzMTQvMjA4MzIxMDU0LTEzMGFmYmFhLWY3ZGItNDUzZS04ZGIxLTExNGViY2U5N2Y0ZS5wbmciPjxpbWcgc3JjPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xODcyMzE0LzIxMzk0MzQ3NS1hNzRjMWI0Ny0yMGJjLTQ3NjEtOGQ3My01ZTRkMDUyZmVmYzMucG5nIiBhbHQ9IlNvY2NlciUyMFN0YWRpdW0lMjBtYWRlJTIwb2YlMjBMZWdvIiB3aWR0aD0iMzUwIj4KCkluc3BpcmVkIGJ5IHRoZSBpbWFnZSBhbmQgdGV4dCBnZW5lcmF0aW9uIGNhcGFiaWxpdGllcyBvZiBbT3BlbkFJXShodHRwczovL3d3dy5wb3N0bWFuLmNvbS9kZXZyZWwvd29ya3NwYWNlL29wZW5haS9kb2N1bWVudGF0aW9uLzEzMTgzNDY0LTkwYWJiNzk4LWNiODUtNDNjYi1iYTNhLWFlNzk0MWU5NjhkYSksIHRoaXMgQVBJIGdlbmVyYXRlcyBpbWFnZXMgb2YgdGhlIHByb2R1Y3RzLCBjb21wYW5pZXMgYXJlIG1vc3Qga25vd24gZm9yLCBhbmQgdHVybnMgdGhlbSBpbnRvIGdvbGQsIGNob2NvbGF0ZSwgbGVnbyBvciBhbnkgb3RoZXIgbWF0ZXJpYWwuCgojIyMjIFZvbGtzd2FnZW4gLyBQb3JzY2hlCgo8aW1nIHdpZHRoPSIyMDAiIGFsdD0iaW1hZ2UiIHNyYz0iaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMTg3MjMxNC8yMDgzMjExMzctMGFiM2NkYjktYTJkMi00N2FkLTlmOWUtMTcyMTg4YTg0OGQ1LnBuZyI+IDxpbWcgd2lkdGg9IjIwMCIgYWx0PSJpbWFnZSIgc3JjPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xODcyMzE0LzIwODMyMTIwOS05YTgyZTJiNS00N2FhLTRkOWQtYTI2Ny0xNjU5ZTI5NjRiMGIucG5nIj4KCgojIyMjIEFsbGlhbnoKCjxpbWcgd2lkdGg9IjIwMCIgYWx0PSJpbWFnZSIgc3JjPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xODcyMzE0LzIwODMyMTIzMy0xMTdiYTgyYi0xYzNiLTRiYWItODYwYS0zZmM5NGI5ZGY0MDcucG5nIj4gPGltZyB3aWR0aD0iMjAwIiBhbHQ9ImltYWdlIiBzcmM9Imh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzE4NzIzMTQvMjA4MzIxNDY5LTlhM2QyYzBhLWNlZDAtNDU2OC1iNjFlLTQ1ZjVlNDZmNDUyNC5wbmciPgoKCiMjIyBNZXJjZWRlcy1CZW56Cgo8aW1nIHdpZHRoPSIyMDAiIGFsdD0iaW1hZ2UiIHNyYz0iaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMTg3MjMxNC8yMDgzMjEzNzUtMTlkOTE5OGEtODU4ZC00ZmM5LWI5NWMtNmEzMWZlNTgwOTZhLnBuZyI+IDxpbWcgd2lkdGg9IjIwMCIgYWx0PSJpbWFnZSIgc3JjPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xODcyMzE0LzIwODMyMTQxMy04MDZkMmFmYy1kM2ZiLTQ2NjAtOTI5OS03Y2E4NmJlOTBlMmYucG5nIj4KCiMjIFRyeWluZyBpdCBvdXQgOm9mZmljZTogOmFycm93X3JpZ2h0OiA6cm9ib3Q6IDphcnJvd19yaWdodDogOmNob2NvbGF0ZV9iYXI6IDpjYXI6IDpmcmFtZWRfcGljdHVyZTogIDp0YWRhOiAKCkZvbGxvdyB0aGUgW2dlbmVyYXRlZCBBUEkgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9hdXRvLWRlbW8ucG9zdG1hbnNvbHV0aW9ucy5jb20pIGFuZCBjbGljayB0aGUgIlJ1biBpbiBQb3N0bWFuIiBidXR0b24KCjxpbWcgd2lkdGg9IjEyOTAiIGFsdD0iaW1hZ2UiIHNyYz0iaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMTg3MjMxNC8yMDg0MDc2MzQtYzBhNDgzODctNTZjYy00NGYxLTljMTYtNTkwNDFhMzJlOTAzLnBuZyI+CgojIE9wZW5BUEkgR2VuZXJhdGVkIEphdmFTY3JpcHQvRXhwcmVzcyBTZXJ2ZXIKCiMjIE92ZXJ2aWV3ClRoaXMgc2VydmVyIHdhcyBnZW5lcmF0ZWQgdXNpbmcgdGhlIFtPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKSBwcm9qZWN0LiAgVGhlIGNvZGUgZ2VuZXJhdG9yLCBhbmQgaXQncyBnZW5lcmF0ZWQgY29kZSBhbGxvd3MgeW91IHRvIGRldmVsb3AgeW91ciBzeXN0ZW0gd2l0aCBhbiBBUEktRmlyc3QgYXR0aXR1ZGUsIHdoZXJlIHRoZSBBUEkgY29udHJhY3QgaXMgdGhlIGFuY2hvciBhbmQgZGVmaW5lciBvZiB5b3VyIHByb2plY3QsIGFuZCB5b3VyIGNvZGUgYW5kIGJ1c2luZXNzLWxvZ2ljIGFpbXMgdG8gY29tcGxldGUgYW5kIGNvbXBseSB0byB0aGUgdGVybXMgaW4gdGhlIEFQSSBjb250cmFjdC4KCiMjIyBwcmVyZXF1aXNpdGVzCi0gTm9kZUpTID49IDEwLjYKLSBOUE0gPj0gNi4xMC4wCgpUaGUgY29kZSB3YXMgd3JpdHRlbiBvbiBhIG1hYywgc28gYXNzdW1pbmcgYWxsIHNob3VsZCB3b3JrIHNtb290aGx5IG9uIExpbnV4LWJhc2VkIGNvbXB1dGVycy4gSG93ZXZlciwgdGhlcmUgaXMgbm8gcmVhc29uIG5vdCB0byBydW4gdGhpcyBsaWJyYXJ5IG9uIFdpbmRvd3MtYmFzZWQgbWFjaGluZXMuIElmIHlvdSBmaW5kIGFuIE9TLXJlbGF0ZWQgcHJvYmxlbSwgcGxlYXNlIG9wZW4gYW4gaXNzdWUgYW5kIGl0IHdpbGwgYmUgcmVzb2x2ZWQuCgojIyMgUnVubmluZyB0aGUgc2VydmVyCiMjIyMgVGhpcyBpcyBhIGxvbmcgcmVhZCwgYnV0IHRoZXJlJ3MgYSBsb3QgdG8gdW5kZXJzdGFuZC4gUGxlYXNlIHRha2UgdGhlIHRpbWUgdG8gZ28gdGhyb3VnaCB0aGlzLgoxLiBVc2UgdGhlIE9wZW5BUEkgR2VuZXJhdG9yIHRvIGdlbmVyYXRlIHlvdXIgYXBwbGljYXRpb246CkFzc3VtaW5nIHlvdSBoYXZlIEphdmEgKDEuOCspLCBhbmQgW2hhdmUgdGhlIGphcl0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvciMxMy0tLWRvd25sb2FkLWphcikgdG8gZ2VuZXJhdGUgdGhlIGFwcGxpY2F0aW9uLCBydW46CmBgYGphdmEgLWphciB7cGF0aF90b19qYXJfZmlsZX0gZ2VuZXJhdGUgLWcgbm9kZWpzLWV4cHJlc3Mtc2VydmVyIC1pIHtvcGVuYXBpIHlhbWwvanNvbiBmaWxlfSAtbyB7dGFyZ2V0X2RpcmVjdG9yeV93aGVyZV90aGVfYXBwX3dpbGxfYmVfaW5zdGFsbGVkfSBgYGAKSWYgeW91IGRvIG5vdCBoYXZlIHRoZSBqYXIsIG9yIGRvIG5vdCB3YW50IHRvIHJ1biBKYXZhIGZyb20geW91ciBsb2NhbCBtYWNoaW5lLCBmb2xsb3cgaW5zdHJ1Y3Rpb25zIG9uIHRoZSBbT3BlbkFQSVRvb2xzIHBhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpLiBZb3UgY2FuIHJ1biB0aGUgc2NyaXB0IG9ubGluZSwgb24gZG9ja2VyLCBhbmQgdmFyaW91cyBvdGhlciB3YXlzLgoyLiBHbyB0byB0aGUgZ2VuZXJhdGVkIGRpcmVjdG9yeSB5b3UgZGVmaW5lZC4gVGhlcmUncyBhIGZ1bGx5IHdvcmtpbmcgTm9kZUpTLUV4cHJlc3NKcyBzZXJ2ZXIgd2FpdGluZyBmb3IgeW91LiBUaGlzIGlzIGltcG9ydGFudCAtIHRoZSBjb2RlIGlzIHlvdXJzIHRvIGNoYW5nZSBhbmQgdXBkYXRlISBMb29rIGF0IGNvbmZpZy5qcyBhbmQgc2VlIHRoYXQgdGhlIHNldHRpbmdzIHRoZXJlIGFyZSBvayB3aXRoIHlvdSAtIHRoZSBzZXJ2ZXIgd2lsbCBydW4gb24gcG9ydCAzMDAwLCBhbmQgZmlsZXMgd2lsbCBiZSB1cGxvYWRlZCB0byBhIG5ldyBkaXJlY3RvcnkgJ3VwbG9hZGVkX2ZpbGVzJy4KMy4gVGhlIHNlcnZlciB3aWxsIGJhc2UgaXRzZWxmIG9uIGFuIG9wZW5hcGkueWFtbCBmaWxlIHdoaWNoIGlzIGxvY2F0ZWQgdW5kZXIgL2FwaS9vcGVuYXBpLnlhbWwuIFRoaXMgaXMgbm90IGV4YWN0bHkgdGhlIHNhbWUgZmlsZSB0aGF0IHlvdSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBhcHA6CkkuICBJZiB5b3UgaGF2ZSBgYXBwbGljYXRpb24vanNvbmAgY29udGVudEJvZHkgdGhhdCB3YXMgZGVmaW5lZCBpbnNpZGUgdGhlIHBhdGggb2JqZWN0IC0gdGhlIGdlbmVyYXRlIHdpbGwgaGF2ZSBtb3ZlZCBpdCB0byB0aGUgY29tcG9uZW50cy9zY2hlbWFzIHNlY3Rpb24gb2YgdGhlIG9wZW5hcGkgZG9jdW1lbnQuCklJLiBFdmVyeSBwcm9jZXNzIGhhcyBhIG5ldyBlbGVtZW50IGFkZGVkIHRvIGl0IC0gYHgtZW92LW9wZXJhdGlvbi1oYW5kbGVyOiBjb250cm9sbGVycy9QZXRDb250cm9sbGVyYCB3aGljaCBkaXJlY3RzIHRoZSBjYWxsIHRvIHRoYXQgZmlsZS4KSUlJLiBXZSBoYXZlIGEgSmF2YSBhcHBsaWNhdGlvbiB0aGF0IHRyYW5zbGF0ZXMgdGhlIG9wZXJhdGlvbklkIHRvIGEgbWV0aG9kLCBhbmQgYSBub2RlSlMgc2NyaXB0IHRoYXQgZG9lcyB0aGUgc2FtZSBwcm9jZXNzIHRvIGNhbGwgdGhhdCBtZXRob2QuIEJvdGggYXJlIGNvbnZlcnRpbmcgdGhlIG1ldGhvZCB0byBgY2FtZWxDYXNlYCwgYnV0IG1pZ2h0IGhhdmUgZGlzY3JlcGFuY3kuIFBsZWFzZSBwYXkgYXR0ZW50aW9uIHRvIHRoZSBvcGVyYXRpb25JRCBuYW1lcywgYW5kIHNlZSB0aGF0IHRoZXkgYXJlIHJlcHJlc2VudGVkIGluIHRoZSBgY29udHJvbGxlcnNgIGFuZCBgc2VydmljZXNgIGRpcmVjdG9yaWVzLgo0LiBUYWtlIHRoZSB0aW1lIHRvIHVuZGVyc3RhbmQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgYXBwbGljYXRpb24uIFRoZXJlIG1pZ2h0IGJlIGJ1Z3MsIGFuZCB0aGVyZSBtaWdodCBiZSBzZXR0aW5ncyBhbmQgYnVzaW5lc3MtbG9naWMgdGhhdCBkb2VzIG5vdCBtZWV0IHlvdXIgZXhwZWN0YXRpb24uIEluc3RlYWQgb2YgZHVtcGluZyB0aGlzIHNvbHV0aW9uIGFuZCBsb29raW5nIGZvciBzb21ldGhpbmcgZWxzZSAtIHNlZSBpZiB5b3UgY2FuIG1ha2UgdGhlIGdlbmVyYXRlZCBjb2RlIHdvcmsgZm9yIHlvdS4KVG8ga2VlcCB0aGUgZXhwbGFuYXRpb24gc2hvcnQgKGEgbW9yZSBkZXRhaWxlZCBleHBsYW5hdGlvbiB3aWxsIGZvbGxvdyk6IEFwcGxpY2F0aW9uIHN0YXJ0cyB3aXRoIGEgY2FsbCB0byBpbmRleC5qcyAodGhpcyBpcyB3aGVyZSB5b3Ugd2lsbCBwbHVnIGluIHRoZSBkYiBsYXRlcikuIEl0IGNhbGxzIGV4cHJlc3NTZXJ2ZXIuanMgd2hpY2ggaXMgd2hlcmUgdGhlIGV4cHJlc3MuanMgYW5kIG9wZW5hcGktdmFsaWRhdG9yIGtpY2sgaW4uIFRoaXMgaXMgYW4gaW1wb3J0YW50IGZpbGUuIExlYXJuIGl0LiBBbGwgY2FsbHMgdG8gZW5kcG9pbnRzIHRoYXQgd2VyZSBjb25maWd1cmVkIGluIHRoZSBvcGVuYXBpLnlhbWwgZG9jdW1lbnQgZ28gdG8gYGNvbnRyb2xsZXJzL3tuYW1lX29mX3RhZ193aGljaF90aGVfb3BlcmF0aW9uX3dhc19hc3NvY2lhdGVkX3dpdGh9LmpzYCwgd2hpY2ggaXMgYSB2ZXJ5IHNtYWxsIG1ldGhvZC4gQWxsIHRoZSBidXNpbmVzcy1sb2dpYyBsaWVzIGluIGBjb250cm9sbGVycy9Db250cm9sbGVyLmpzYCwgYW5kIGZyb20gdGhlcmUgLSB0byBgc2VydmljZXMve25hbWVfb2ZfdGFnX3doaWNoX3RoZV9vcGVyYXRpb25fd2FzX2Fzc29jaWF0ZWRfd2l0aH0uanNgLgoKNS4gT25jZSB5b3UndmUgdW5kZXJzdG9vZCB3aGF0IGlzICpnb2luZyogdG8gaGFwcGVuLCBsYXVuY2ggdGhlIGFwcCBhbmQgZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgd29ya2luZyBhcyBleHBlY3RlZDoKYGBgCm5wbSBzdGFydApgYGAKCiMjIyBWaWV3IGFuZCB0ZXN0IHRoZSBBUEkKKEFzc3VtaW5nIG5vIGNoYW5nZXMgd2VyZSBtYWRlIHRvIGNvbmZpZy5qcykKCjEuIEFQSSBkb2N1bWVudGF0aW9uLCBhbmQgdG8gY2hlY2sgdGhlIGF2YWlsYWJsZSBlbmRwb2ludHM6Cmh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGktZG9jcy8uIFRvCjIuIERvd25sb2FkIHRoZSBvcGVuYXBpLnlhbWwgZG9jdW1lbnQ6IGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9vcGVuYXBpLgozLiAgRXZlcnkgY2FsbCB0byBhbiBlbmRwb2ludCB0aGF0IHdhcyBkZWZpbmVkIGluIHRoZSBvcGVuYXBpIGRvY3VtZW50IHdpbGwgcmV0dXJuIGEgMjAwIGFuZCBhIGxpc3Qgb2YgYWxsIHRoZSBwYXJhbWV0ZXJzIGFuZCBvYmplY3RzIHRoYXQgd2VyZSBzZW50IGluIHRoZSByZXF1ZXN0Lgo0LiBFbmRwb2ludHMgdGhhdCByZXF1aXJlIHNlY3VyaXR5IG5lZWQgdG8gaGF2ZSBzZWN1cml0eSBoYW5kbGVycyBjb25maWd1cmVkIGJlZm9yZSB0aGV5IGNhbiByZXR1cm4gYSBzdWNjZXNzZnVsIHJlc3BvbnNlLiBBdCB0aGlzIHBvaW50IHRoZXkgd2lsbCByZXR1cm4gWyBhIHJlc3BvbnNlIGNvZGUgb2YgNDAxXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL1N0YXR1cy80MDEpLgo1LiAjIyMjIyBBdCB0aGlzIHN0YWdlIHRoZSBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBkb2N1bWVudCBib2R5IHNlbnQgaW4geG1sIGZvcm1hdC4KCiMjIyBQcm9qZWN0IEZpbGVzCiMjIyMgUm9vdCBEaXJlY3Rvcnk6CkluIHRoZSByb290IGRpcmVjdG9yeSB3ZSBoYXZlIChiZXNpZGVzIHBhY2thZ2UuanNvbiwgY29uZmlnLmpzLCBhbmQgbG9nIGZpbGVzKToKLSAqKmxvZ2dlci5qcyoqIC0gd2hlcmUgd2UgZGVmaW5lIHRoZSBsb2dnZXIgZm9yIHRoZSBwcm9qZWN0LiBUaGUgcHJvamVjdCB1c2VzIHdpbnN0b24sIGJ1dCB0aGUgcHVycG9zZSBvZiB0aGlzIGZpbGUgaXMgdG8gZW5hYmxlIHVzZXJzIHRvIGNoYW5nZSBhbmQgbW9kaWZ5IHRoZWlyIG93biBsb2dnZXIgYmVoYXZpb3IuCi0gKippbmRleC5qcyoqIC0gVGhpcyBpcyB0aGUgcHJvamVjdCdzICdtYWluJyBmaWxlLCBhbmQgZnJvbSBoZXJlIHdlIGxhdW5jaCB0aGUgYXBwbGljYXRpb24uIFRoaXMgaXMgYSB2ZXJ5IHNob3J0IGFuZCBjb25jaXNlIGZpbGUsIGFuZCB0aGUgaWRlYSBiZWhpbmQgbGF1bmNoaW5nIGZyb20gdGhpcyBzaG9ydCBmaWxlIGlzIHRvIGFsbG93IHVzZS1jYXNlcyBvZiBsYXVuY2hpbmcgdGhlIHNlcnZlciB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzIChjaGFuZ2luZyBjb25maWcgYW5kL29yIGxvZ2dlcikgd2l0aG91dCBhZmZlY3RpbmcgdGhlIHJlc3Qgb2YgdGhlIGNvZGUuCi0gKipleHByZXNzU2VydmVyLmpzKiogLSBUaGUgY29yZSBvZiB0aGUgRXhwcmVzcy5qcyBzZXJ2ZXIuIFRoaXMgaXMgd2hlcmUgdGhlIGV4cHJlc3Mgc2VydmVyIGlzIGluaXRpYWxpemVkLCB0b2dldGhlciB3aXRoIHRoZSBPcGVuQVBJIHZhbGlkYXRvciwgT3BlbkFQSSBVSSwgYW5kIG90aGVyIGxpYnJhcmllcyBuZWVkZWQgdG8gc3RhcnQgb3VyIHNlcnZlci4gSWYgd2Ugd2FudCB0byBhZGQgZXh0ZXJuYWwgbGlua3MsIHRoYXQncyB3aGVyZSB0aGV5IHdvdWxkIGdvLiBPdXIgcHJvamVjdCB1c2VzIHRoZSBbZXhwcmVzcy1vcGVuYXBpLXZhbGlkYXRvcl0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZXhwcmVzcy1vcGVuYXBpLXZhbGlkYXRvcikgbGlicmFyeSB0aGF0IGFjdHMgYXMgYSBmaXJzdCBzdGVwIGluIHRoZSByb3V0aW5nIHByb2Nlc3MgLSByZXF1ZXN0cyB0aGF0IGFyZSBkaXJlY3RlZCB0byBwYXRocyBkZWZpbmVkIGluIHRoZSBgb3BlbmFwaS55YW1sYCBmaWxlIGFyZSBjYXVnaHQgYnkgdGhpcyBwcm9jZXNzLCBhbmQgaXQncyBwYXJhbWV0ZXJzIGFuZCBib2R5Q29udGVudCBhcmUgdmFsaWRhdGVkIGFnYWluc3QgdGhlIHNjaGVtYS4gQSBzdWNjZXNzZnVsIHJlc3VsdCBvZiB0aGlzIHZhbGlkYXRpb24gd2lsbCBiZSBhIG5ldyAnb3BlbmFwaScgb2JqZWN0IGFkZGVkIHRvIHRoZSByZXF1ZXN0LiBJZiB0aGUgcGF0aCByZXF1ZXN0ZWQgaXMgbm90IHBhcnQgb2YgdGhlIG9wZW5hcGkueWFtbCBmaWxlLCB0aGUgdmFsaWRhdG9yIGlnbm9yZXMgdGhlIHJlcXVlc3QgYW5kIHBhc3NlcyBpdCBvbiwgYXMgaXMsIGRvd24gdGhlIGZsb3cgb2YgdGhlIEV4cHJlc3Mgc2VydmVyLgoKIyMjIyBhcGkvCi0gKipvcGVuYXBpLnlhbWwqKiAtIFRoaXMgaXMgdGhlIE9wZW5BUEkgY29udHJhY3QgdG8gd2hpY2ggdGhpcyBzZXJ2ZXIgd2lsbCBjb21wbHkuIFRoZSBmaWxlIHdhcyBnZW5lcmF0ZWQgdXNpbmcgdGhlIGNvZGVnZW4sIGFuZCBzaG91bGQgY29udGFpbiBldmVyeXRoaW5nIG5lZWRlZCB0byBydW4gdGhlIEFQSSBHYXRld2F5IC0gbm8gcmVmZXJlbmNlcyB0byBleHRlcm5hbCBtb2RlbHMvc2NoZW1hcy4KCiMjIyMgdXRpbHMvCkN1cnJlbnRseSBhIHNpbmdsZSBmaWxlOgoKLSAqKm9wZW5hcGlSb3V0ZXIuanMqKiAtIFRoaXMgaXMgd2hlcmUgdGhlIHJvdXRpbmcgdG8gb3VyIGJhY2stZW5kIGNvZGUgaGFwcGVucy4gSWYgdGhlIHJlcXVlc3Qgb2JqZWN0IGluY2x1ZGVzIGFuIGBgYG9wZW5hcGlgYGAgb2JqZWN0LCBpdCBwaWNrcyB1cCB0aGUgZm9sbG93aW5nIHZhbHVlcyAodGhhdCBhcmUgcGFydCBvZiB0aGUgYGBgb3BlbmFwaS55YW1sYGBgIGZpbGUpOiAneC1vcGVuYXBpLXJvdXRlci1jb250cm9sbGVyJywgYW5kICd4LW9wZW5hcGktcm91dGVyLXNlcnZpY2UnLiBUaGVzZSB2YXJpYWJsZXMgYXJlIG5hbWVzIG9mIGZpbGVzL2NsYXNzZXMgaW4gdGhlIGNvbnRyb2xsZXJzIGFuZCBzZXJ2aWNlcyBkaXJlY3RvcmllcyByZXNwZWN0aXZlbHkuIFRoZSBvcGVyYXRpb25JZCBvZiB0aGUgcmVxdWVzdCBpcyBhbHNvIGV4dHJhY3RlZC4gVGhlIG9wZXJhdGlvbklkIGlzIGEgbWV0aG9kIGluIHRoZSBjb250cm9sbGVyIGFuZCB0aGUgc2VydmljZSB0aGF0IHdhcyBnZW5lcmF0ZWQgYXMgcGFydCBvZiB0aGUgY29kZWdlbiBwcm9jZXNzLiBUaGUgcm91dGluZyBwcm9jZXNzIHNlbmRzIHRoZSByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzIHRvIHRoZSBjb250cm9sbGVyLCB3aGljaCB3aWxsIGV4dHJhY3QgdGhlIGV4cGVjdGVkIHZhcmlhYmxlcyBmcm9tIHRoZSByZXF1ZXN0LCBhbmQgc2VuZCBpdCB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHNlcnZpY2UsIHJldHVybmluZyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmljZSB0byB0aGUgY2FsbGVyLgoKIyMjIyBjb250cm9sbGVycy8KQWZ0ZXIgdmFsaWRhdGluZyB0aGUgcmVxdWVzdCwgYW5kIGVuc3VyaW5nIHRoaXMgYmVsb25ncyB0byBvdXIgQVBJIGdhdGV3YXksIHdlIHNlbmQgdGhlIHJlcXVlc3QgdG8gYSBgY29udHJvbGxlcmAsIHdoZXJlIHRoZSB2YXJpYWJsZXMgYW5kIHBhcmFtZXRlcnMgYXJlIGV4dHJhY3RlZCBmcm9tIHRoZSByZXF1ZXN0IGFuZCBzZW50IHRvIHRoZSByZWxldmFudCBgc2VydmljZWAgZm9yIHByb2Nlc3NpbmcuIFRoZSBgY29udHJvbGxlcmAgaGFuZGxlcyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgYHNlcnZpY2VgIGFuZCBidWlsZHMgdGhlIGFwcHJvcHJpYXRlIEhUVFAgcmVzcG9uc2UgdG8gYmUgc2VudCBiYWNrIHRvIHRoZSB1c2VyLgoKLSAqKmluZGV4LmpzKiogLSBsb2FkIGFsbCB0aGUgY29udHJvbGxlcnMgdGhhdCB3ZXJlIGdlbmVyYXRlZCBmb3IgdGhpcyBwcm9qZWN0LCBhbmQgZXhwb3J0IHRoZW0gdG8gYmUgdXNlZCBkeW5hbWljYWxseSBieSB0aGUgYG9wZW5hcGlSb3V0ZXIuanNgLiBJZiB5b3Ugd291bGQgbGlrZSB0byBjdXN0b21pemUgeW91ciBjb250cm9sbGVyLCBpdCBpcyBhZHZpc2VkIHRoYXQgeW91IGxpbmsgdG8geW91ciBjb250cm9sbGVyIGhlcmUsIGFuZCBlbnN1cmUgdGhhdCB0aGUgY29kZWdlbiBkb2VzIG5vdCByZXdyaXRlIHRoaXMgZmlsZS4KCi0gKipDb250cm9sbGVyLmpzKiogLSBUaGUgY29yZSBwcm9jZXNzb3Igb2YgdGhlIGdlbmVyYXRlZCBjb250cm9sbGVycy4gVGhlIGdlbmVyYXRlZCBjb250cm9sbGVycyBhcmUgZGVzaWduZWQgdG8gYmUgYXMgc2xpbSBhbmQgZ2VuZXJpYyBhcyBwb3NzaWJsZSwgcmVmZXJlbmNpbmcgdG8gdGhlIGBDb250cm9sbGVyLmpzYCBmb3IgdGhlIGJ1c2luZXNzIGxvZ2ljIG9mIHBhcnNpbmcgdGhlIG5lZWRlZCB2YXJpYWJsZXMgYW5kIGFyZ3VtZW50cyBmcm9tIHRoZSByZXF1ZXN0LCBhbmQgZm9yIGJ1aWxkaW5nIHRoZSBIVFRQIHJlc3BvbnNlIHdoaWNoIHdpbGwgYmUgc2VudCBiYWNrLiBUaGUgYENvbnRyb2xsZXIuanNgIGlzIGEgY2xhc3Mgd2l0aCBzdGF0aWMgbWV0aG9kcy4KCi0gKiouanMqKiAtIGF1dG8tZ2VuZXJhdGVkIGNvZGUsIHByb2Nlc3NpbmcgYWxsIHRoZSBvcGVyYXRpb25zLiBUaGUgQ29udHJvbGxlciBpcyBhIGNsYXNzIHRoYXQgaXMgY29uc3RydWN0ZWQgd2l0aCB0aGUgc2VydmljZSBjbGFzcyBpdCB3aWxsIGJlIHNlbmRpbmcgdGhlIHJlcXVlc3QgdG8uIEV2ZXJ5IHJlcXVlc3QgZGVmaW5lZCBieSB0aGUgYG9wZW5hcGkueWFtbGAgIGhhcyBhbiBvcGVyYXRpb25JZC4gVGhlIG9wZXJhdGlvbklkIGlzIHRoZSBuYW1lIG9mIHRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIGNhbGxlZC4gRXZlcnkgbWV0aG9kIHJlY2VpdmVzIHRoZSByZXF1ZXN0IGFuZCByZXNwb25zZSwgYW5kIGNhbGxzIHRoZSBgQ29udHJvbGxlci5qc2AgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdCBhbmQgcmVzcG9uc2UsIGFkZGluZyB0aGUgc2VydmljZSBtZXRob2QgdGhhdCBzaG91bGQgYmUgY2FsbGVkIGZvciB0aGUgYWN0dWFsIGJ1c2luZXNzLWxvZ2ljIHByb2Nlc3NpbmcuCgojIyMjIHNlcnZpY2VzLwpUaGlzIGlzIHdoZXJlIHRoZSBBUEkgR2F0ZXdheSBlbmRzLCBhbmQgdGhlIHVuaXF1ZSBidXNpbmVzcy1sb2dpYyBvZiB5b3VyIGFwcGxpY2F0aW9uIGtpY2tzIGluLiBFdmVyeSBlbmRwb2ludCBpbiB0aGUgYG9wZW5hcGkueWFtbGAgaGFzIGEgdmFyaWFibGUgJ3gtb3BlbmFwaS1yb3V0ZXItc2VydmljZScsIHdoaWNoIGlzIHRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlIGNsYXNzIHRoYXQgaXMgZ2VuZXJhdGVkLiBUaGUgb3BlcmF0aW9uSUQgb2YgdGhlIGVuZHBvaW50IGlzIHRoZSBuYW1lIG9mIHRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIGNhbGxlZC4gVGhlIGdlbmVyYXRlZCBjb2RlIHByb3ZpZGVzIGEgc2ltcGxlIHByb21pc2Ugd2l0aCBhIHRyeS9jYXRjaCBjbGF1c2UuIEEgc3VjY2Vzc2Z1bCBvcGVyYXRpb24gZW5kcyB3aXRoIGEgY2FsbCB0byB0aGUgZ2VuZXJpYyBgU2VydmljZS5qc2AgdG8gYnVpbGQgYSBzdWNjZXNzZnVsIHJlc3BvbnNlIChwYXlsb2FkIGFuZCByZXNwb25zZSBjb2RlKSwgYW5kIGEgZmFpbHVyZSB3aWxsIGNhbGwgdGhlIGdlbmVyaWMgYFNlcnZpY2UuanNgIHRvIGJ1aWxkIGEgcmVzcG9uc2Ugd2l0aCBhbiBlcnJvciBvYmplY3QgYW5kIHRoZSByZWxldmFudCByZXNwb25zZSBjb2RlLiBJdCBpcyByZWNvbW1lbmRlZCB0byBoYXZlIHRoZSBzZXJ2aWNlcyBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBvbmNlLCBhbmQgYWZ0ZXIgdGhlIGluaXRpYWwgYnVpbGQgYWRkIG1ldGhvZHMgbWFudWFsbHkuCgotICoqaW5kZXguanMqKiAtIGxvYWQgYWxsIHRoZSBzZXJ2aWNlcyB0aGF0IHdlcmUgZ2VuZXJhdGVkIGZvciB0aGlzIHByb2plY3QsIGFuZCBleHBvcnQgdGhlbSB0byBiZSB1c2VkIGR5bmFtaWNhbGx5IGJ5IHRoZSBgb3BlbmFwaVJvdXRlci5qc2AuIElmIHlvdSB3b3VsZCBsaWtlIHRvIGN1c3RvbWl6ZSB5b3VyIHNlcnZpY2UsIGl0IGlzIGFkdmlzZWQgdGhhdCB5b3UgbGluayB0byB5b3VyIGNvbnRyb2xsZXIgaGVyZSwgYW5kIGVuc3VyZSB0aGF0IHRoZSBjb2RlZ2VuIGRvZXMgbm90IHJld3JpdGUgdGhpcyBmaWxlLgoKLSAqKlNlcnZpY2UuanMqKiAtIEEgdXRpbGl0eSBjbGFzcywgdmVyeSBzaW1wbGUgYW5kIHRoaW4gYXQgdGhpcyBwb2ludCwgd2l0aCB0d28gc3RhdGljIG1ldGhvZHMgZm9yIGJ1aWxkaW5nIGEgcmVzcG9uc2Ugb2JqZWN0IGZvciBzdWNjZXNzZnVsIGFuZCBmYWlsZWQgcmVzdWx0cyBpbiB0aGUgc2VydmljZSBvcGVyYXRpb24uIFRoZSBkZWZhdWx0IHJlc3BvbnNlIGNvZGUgaXMgMjAwIGZvciBzdWNjZXNzIGFuZCA1MDAgZm9yIGZhaWx1cmUuIEl0IGlzIHJlY29tbWVuZGVkIHRvIHNlbmQgbW9yZSBhY2N1cmF0ZSByZXNwb25zZSBjb2RlcyBhbmQgb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdHMgd2hlbiByZWxldmFudC4KCi0gKiouanMqKiAtIGF1dG8tZ2VuZXJhdGVkIGNvZGUsIHByb3ZpZGluZyBhIHN0dWIgUHJvbWlzZSBmb3IgZWFjaCBvcGVyYXRpb25JZCBkZWZpbmVkIGluIHRoZSBgb3BlbmFwaS55YW1sYC4gRWFjaCBtZXRob2QgcmVjZWl2ZXMgdGhlIHZhcmlhYmxlcyB0aGF0IHdlcmUgZGVmaW5lZCBpbiB0aGUgYG9wZW5hcGkueWFtbGAgZmlsZSwgYW5kIHdyYXBzIGEgUHJvbWlzZSBpbiBhIHRyeS9jYXRjaCBjbGF1c2UuIFRoZSBQcm9taXNlIHJlc29sdmVzIGJvdGggc3VjY2VzcyBhbmQgZmFpbHVyZSBpbiBhIGNhbGwgdG8gdGhlIGBTZXJ2aWNlLmpzYCB1dGlsaXR5IGNsYXNzIGZvciBidWlsZGluZyB0aGUgYXBwcm9wcmlhdGUgcmVzcG9uc2UgdGhhdCB3aWxsIGJlIHNlbnQgYmFjayB0byB0aGUgQ29udHJvbGxlciBhbmQgdGhlbiB0byB0aGUgY2FsbGVyIG9mIHRoaXMgZW5kcG9pbnQuCgojIyMjIHRlc3RzLwotICoqc2VydmVyVGVzdHMuanMqKiAtIGJhc2ljIHNlcnZlciB2YWxpZGF0aW9uIHRlc3RzLCBjaGVja2luZyB0aGF0IHRoZSBzZXJ2ZXIgaXMgdXAsIHRoYXQgYSBjYWxsIHRvIGFuIGVuZHBvaW50IHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIGBvcGVuYXBpLnlhbWxgIGZpbGUgcmV0dXJucyAyMDAsIHRoYXQgYSBjYWxsIHRvIGEgcGF0aCBvdXRzaWRlIHRoYXQgc2NvcGUgcmV0dXJucyAyMDAgaWYgaXQgZXhpc3RzIGFuZCBhIDQwNCBpZiBub3QuCi0gKipyb3V0aW5nVGVzdHMuanMqKiAtIFJ1bnMgdGhyb3VnaCBhbGwgdGhlIGVuZHBvaW50cyBkZWZpbmVkIGluIHRoZSBgb3BlbmFwaS55YW1sYCwgYW5kIGNvbnN0cnVjdHMgYSBkdW1teSByZXF1ZXN0IHRvIHNlbmQgdG8gdGhlIHNlcnZlci4gQ29uZmlybXMgdGhhdCB0aGUgcmVzcG9uc2UgY29kZSBpcyAyMDAuIEF0IHRoaXMgcG9pbnQgcmVxdWVzdHMgY29udGFpbmluZyB4bWwgb3IgZm9ybURhdGEgZmFpbCAtIGN1cnJlbnRseSB0aGV5IGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoZSByb3V0ZXIuCi0gKiphZGRpdGlvbmFsRW5kcG9pbnRzVGVzdHMuanMqKiAtIEEgdGVzdCBmaWxlIGZvciBhbGwgdGhlIGVuZHBvaW50cyB0aGF0IGFyZSBkZWZpbmVkIG91dHNpZGUgdGhlIG9wZW5hcGkueWFtbCBzY29wZS4gQ29uZmlybXMgdGhhdCB0aGVzZSBlbmRwb2ludHMgcmV0dXJuIGEgc3VjY2Vzc2Z1bCAyMDAgcmVzcG9uc2UuCgoKRnV0dXJlIHRlc3RzIHNob3VsZCBiZSB3cml0dGVuIHRvIGVuc3VyZSB0aGF0IHRoZSByZXNwb25zZSBvZiBldmVyeSByZXF1ZXN0IHNlbnQgc2hvdWxkIGNvbmZvcm0gdG8gdGhlIHN0cnVjdHVyZSBkZWZpbmVkIGluIHRoZSBgb3BlbmFwaS55YW1sYC4gVGhpcyB0ZXN0IHdpbGwgZmFpbCAxMDAlIGluaXRpYWxseSwgYW5kIHRoZSBqb2Igb2YgdGhlIGRldmVsb3BtZW50IHRlYW0gd2lsbCBiZSB0byBjbGVhciB0aGVzZSB0ZXN0cy4KCgojIyMjIG1vZGVscy8KQ3VycmVudGx5IGEgY29uY2VwdCBhd2FpdGluZyBmZWVkYmFjay4gVGhlIGlkZWEgaXMgdG8gaGF2ZSB0aGUgb2JqZWN0cyBkZWZpbmVkIGluIHRoZSBvcGVuYXBpLnlhbWwgYWN0IGFzIG1vZGVscyB3aGljaCBhcmUgcGFzc2VkIGJldHdlZW4gdGhlIGRpZmZlcmVudCBtb2R1bGVzLiBUaGlzIHdpbGwgY29uZm9ybSB0aGUgcHJvZ3JhbW1lcnMgdG8gaW50ZXJhY3QgdXNpbmcgZGVmaW5lZCBvYmplY3RzLCByYXRoZXIgdGhhbiBsb29zZWx5LWRlZmluZWQgSlNPTiBvYmplY3RzLiBHaXZlbiB0aGUgbmF0dXJlIG9mIEphdmFTY3JpcHQgcHJvZ3JhbW1lcnMsIHdobyB3YW50IHRvIHdvcmsgd2l0aCB0aGVpciBvd24gYm9vdHN0cmFwcGVkIHBhcmFtZXRlcnMsIHRoaXMgY29uY2VwdCBtaWdodCBub3Qgd29yay4gS2VlcGluZyB0aGlzIGhlcmUgZm9yIGZ1dHVyZSBkaXNjdXNzaW9uIGFuZCBmZWVkYmFjay4KCgoKCgoKCgoKCgoKCgoK readmeEtag: '"be947f884b56f52f14003bf276763525b372d045"' readmeLastModified: Tue, 06 Feb 2024 16:43:15 GMT repositoryId: 579412089 description: >- API to create appealing images of company products made of chocolate, gold or lego created: '2022-12-17T16:00:42Z' updated: '2025-10-08T00:55:50Z' language: HTML archived: false stars: 3 watchers: 2 forks: 1 owner: postman-solutions-eng logo: https://avatars.githubusercontent.com/u/91276282?v=4 license: Apache-2.0 repoEtag: '"0865060d350054066af4a1aa762495d83f8870a1483d11ce6501fd020d2e9b4c"' repoLastModified: Wed, 08 Oct 2025 00:55:50 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/sdclarkelab/covid19-jamaica-api v3: true repositoryMetadata: base64Readme: >- IyBDb3ZpZC0xOSBKYW1haWNhIEFQSQpUaGlzIHByb2plY3RzIHB1bGxzIENvdmlkLTE5IHJlcG9ydHMgZnJvbSB0aGUgKltNaW5pc3RyeSBvZiBIZWFsdGgsIEphbWFpY2FdKGh0dHBzOi8vd3d3Lm1vaC5nb3Yuam0vdXBkYXRlcy9jb3JvbmF2aXJ1cy9jb3ZpZC0xOS1jbGluaWNhbC1tYW5hZ2VtZW50LXN1bW1hcnkvKSogYW5kIHNldmVycyB0aGF0IGRhdGEgaW4gSlNPTiBmb3JtYXQgdmlhIFJFU1QgQVBJLgoKIyMgSG93IHRvIFJ1bgpgYGBzaAokIHBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKJCBweXRob24gYXBpLnB5CmBgYAoKIyMgQVBJIGRvY3VtZW50YXRpb24KTmF2aWdhdGUgdG8gdGhlIGZvbGxvd2luZyBVUkwgKGh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9jb3ZpZDE5LWphbS9hcGkvdjEvdWkpIGxvY2FsbHkgdG8gdmlldyB0aGUgT3BlbkFQSSB1c2VyIGludGVyZmFjZSBvciB2aXNpdCAoaHR0cHM6Ly9hcHAuc3dhZ2dlcmh1Yi5jb20vYXBpcy9zZGNsYXJrZWxhYi9jb3ZpZDE5X2phbV9hcGkvdjEpCg== readmeEtag: '"deb5df79301773cb8d7c3c7c63f16e3c85bbe8fc"' readmeLastModified: Sat, 23 Oct 2021 22:21:02 GMT repositoryId: 416054590 description: Jamaica COVID-19 API data scraped from the MOH's website created: '2021-10-11T19:09:28Z' updated: '2024-12-04T17:11:49Z' language: Python archived: false stars: 3 watchers: 1 forks: 0 owner: sdclarkelab logo: https://avatars.githubusercontent.com/u/44792415?v=4 repoEtag: '"f2f1f7a260072d36014495d50f3947b5c11b6255f441d13efe928cc94c9fadfb"' repoLastModified: Wed, 04 Dec 2024 17:11:49 GMT foundInMaster: true category: Server Implementations id: eb4c3835c1410cc0afc0e3b22c7bb093 - source: openapi3 tags repository: https://github.com/ideal-postcodes/openapi v3: true repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPgogIDxpbWcgc3JjPSJodHRwczovL2ltZy5pZGVhbC1wb3N0Y29kZXMuY28udWsvT3BlbkFQSSUyMExvZ29AM3gucG5nIiBhbHQ9Ik9wZW5BUEkiPgo8L2gxPgoKPiBJZGVhbCBQb3N0Y29kZXMgT3BlbkFQSSAodjMpIFNwZWNpZmljYXRpb24gKGFwaS5pZGVhbC1wb3N0Y29kZXMuY28udWspCgpbIVtDSV0oaHR0cHM6Ly9naXRodWIuY29tL2lkZWFsLXBvc3Rjb2Rlcy9vcGVuYXBpL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vaWRlYWwtcG9zdGNvZGVzL29wZW5hcGkvYWN0aW9ucy93b3JrZmxvd3MvY2kueW1sKQoKIyMgRmVhdHVyZXMKCi0gT3BlbkFQSSB2MyBzcGVjaWZpY2F0aW9uIGZvciBhcGkuaWRlYWwtcG9zdGNvZGVzLmNvLnVrCi0gRXhwb3J0cyBBUEkgVHlwaW5ncwoKIyMgTGlua3MKCi0gW0dpdGh1YiBSZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vaWRlYWwtcG9zdGNvZGVzL29wZW5hcGkpCi0gW0FQSSBSZWZlcmVuY2VdKGh0dHBzOi8vb3BlbmFwaS5pZGVhbC1wb3N0Y29kZXMuY28udWspCi0gT3BlbkFQSSB2MyBSYXcgRmlsZXM6IFtKU09OXShodHRwczovL29wZW5hcGkuaWRlYWwtcG9zdGNvZGVzLmNvLnVrL29wZW5hcGkuanNvbikKLSBPcGVuQVBJIHYzIFJhdyBGaWxlczogW1lBTUxdKGh0dHBzOi8vb3BlbmFwaS5pZGVhbC1wb3N0Y29kZXMuY28udWsvb3BlbmFwaS55YW1sKQotIFtOUE0gUGFja2FnZV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQGlkZWFsLXBvc3Rjb2Rlcy9vcGVuYXBpKQoKIyMgR2V0dGluZyBTdGFydGVkCgojIyMgQnVpbGQgVHlwaW5ncwoKYGBgCm5wbSBydW4gYnVpbGQKYGBgCgojIyMgVmFsaWRhdGUgU3BlYwoKYGBgCm5wbSB0ZXN0CmBgYAoKIyMjIERvd25sb2FkIGFuZCBBY2Nlc3MgdmlhIG5wbQoKIyMjIyBJbnN0YWxsCgpgYGBiYXNoCm5wbSBpbnN0YWxsIEBpZGVhbC1wb3N0Y29kZXMvb3BlbmFwaQpgYGAKCiMjIyMgUmVxdWlyZSBzcGVjcwoKSlNPTiBhbmQgWUFNTCBzcGVjcyBjYW4gYmUgYWNjZXNzZWQgYXQgYG5vZGVfbW9kdWxlcy9AaWRlYWwtcG9zdGNvZGVzL29wZW5hcGkvZGlzdC9vcGVuYXBpLltqc29ufHlhbWxdYAoKIyMgTGljZW5jZQoKQ29weXJpZ2h0IElERFFEIExpbWl0ZWQK readmeEtag: '"32a53763157090edbf5fa882f3e3f2dc0128e2ed"' readmeLastModified: Wed, 27 Aug 2025 12:00:56 GMT repositoryId: 181899806 description: OpenAPI V3 specifications for api.ideal-postcodes.co.uk created: '2019-04-17T13:41:02Z' updated: '2026-02-04T15:40:14Z' language: TypeScript archived: false stars: 3 watchers: 3 forks: 0 owner: ideal-postcodes logo: https://avatars.githubusercontent.com/u/4996310?v=4 license: MIT repoEtag: '"4811f2a04115adad602ada54a641769aea1c77cec19f163ee7c1decb3cbdce83"' repoLastModified: Wed, 04 Feb 2026 15:40:14 GMT foundInMaster: true category: SDK id: e5fcae1b1547e9581f18e43328e332ef - source: openapi3 tags repository: https://github.com/muskratjs/muskrat v3: true repositoryMetadata: base64Readme: IyBtdXNrcmF0CgpSdW50aW1lIEFQSSBzY2hlbWEgZ2VuZXJhdGlvbgo= readmeEtag: '"f079a4c9e4bd2bd72dc78013f795c4502fc7da02"' readmeLastModified: Tue, 29 Jan 2019 12:39:17 GMT repositoryId: 135346267 description: ':rat: Generate project metadata' created: '2018-05-29T19:55:40Z' updated: '2019-01-29T12:39:19Z' language: TypeScript archived: false stars: 3 watchers: 2 forks: 0 owner: muskratjs logo: https://avatars.githubusercontent.com/u/41447837?v=4 license: MIT repoEtag: '"5810c4fed29be686d6260271e00fb7efbbc39fd8310b7f735b5620bba6604efb"' repoLastModified: Tue, 29 Jan 2019 12:39:19 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: e426cf26d8718a6a03b77573b5f15664 - source: openapi3 tags repository: https://github.com/axiomsamarth/gita.io v3: true repositoryMetadata: base64Readme: >- IyBnaXRhLmlvCkdpdGEuaW8gaXMgYW4gQVBJIGFkaGVyaW5nIHRvIHN0YW5kYXJkcyBvZiBPcGVuQVBJIHYzLjAsIHRvIGxldmVyYWdlIHRoZSBHaXRhIHZlcnNlcyBwcm9ncmFtbWF0aWNhbGx5LiBUaGUgR2l0YS5pbyBBUEkgc2VydmVzIHRoZSB2ZXJzZXMgaW4gdGhlIG5hdGl2ZSBEZXZhbmFnYXJpIHNjcmlwdCBhbG9uZyB3aXRoIHRoZWlyIHRyYW5zbGl0ZXJhdGlvbiBhbmQgbWVhbmluZy4KClRoaXMgcmVzcG9zaXRvcnkgcHJvdmlkZXMgdGhlIHNvdXJjZSBjb2RlIG9mIHRoZSBBUEkgaW4gdGhlIGZvbGRlciBgL2dpdGEtYXBpYCBhbG9uZyB3aXRoIGFuIGV4YW1wbGUgUHl0aG9uLUZsYXNrIHdlYnNpdGUgYnVpbHQgZW1wbG95aW5nIHRoZSBnaXRhLmlvIEFQSSBpbiB0aGUgZm9sZGVyIGAvZ2l0YS1hcGktaW9gLgoKIyMgQVBJIERvY3VtZW50YXRpb24KClRoZSBvZmZpY2lhbCBBUEkgZG9jdW1lbnRhdGlvbiBmb3IgZGV2ZWxvcGVyIHVzZSBjYW4gYmUgZm91bmQgYXQgW0dpdGEuaW8gU3dhZ2dlciBEb2N1bWVudGF0aW9uXShodHRwczovL2FwcC5zd2FnZ2VyaHViLmNvbS9hcGlzLWRvY3MvQXhpb21TYW1hcnRoL2dpdGEuaW8vMS4wLjApCgojIyBQcmVyZXF1aXNpdGVzClRoZSBmb2xsb3dpbmcgYXJlIHRoZSBwcmVyZXF1aXNpdGVzIGZvciBhIHNlYW1sZXNzIGV4ZWN1dGlvbiBvZiB0aGUgQVBJLiAKCi0gUHJlZmVycmFibHkgbGF0ZXN0IE1TIFdpbmRvd3MvTGludXgvTWFjT1MgUGxhdGZvcm0KLSBQeXRob24gPj0gMy4wCi0gUHl0aG9uIEZsYXNrID49IDEuMS4yCi0gUHltb25nbyA+PSAzLjEwLjEKLSBNb25nb0RCIGFzIHRoZSBkYXRhYmFzZQoKIyMgU2V0dXAgaW5zdHJ1Y3Rpb25zCgotIFBsZWFzZSByZWFkIHRoZSBbUkVBRE1FLm1kXSgvZ2l0YS1hcGkvUkVBRE1FLm1kKSBmb3Igc2V0dGluZyB1cCB0aGUgZ2l0YS5pbyBBUEkKCi0gUGxlYXNlIHJlYWQgdGhlIFtSRUFETUUubWRdKC9naXRhLWFwaS1pby9SRUFETUUubWQpIGZvciBzZXR0aW5nIHVwIHRoZSBleGFtcGxlIGZsYXNrIHdlYiBhcHBsaWNhdGlvbiB0aGF0IGxldmVyYWdlcyB0aGUgZ2l0YS5pbyBBUEkuIAoKIyMgRGVtbyB2aWRlb3MKVGhlIGRlbW8gdmlkZW9zIG9mIHRoZSBnaXRhLmlvIGFuZCB0aGUgd2Vic2l0ZSBidWlsdCBlbXBsb3lpbmcgZ2l0YS5pbyBjYW4gYmUgc2VlbiBvbiBteSBZb3VUdWJlIGNoYW5uZWwgYXQ6CgotIFtnaXRhLmlvIEFQSSBpbiBhY3Rpb25dKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9eFF6UGJVMjdZdVEmbGlzdD1QTEdnemVfWFdZSW95cy1ldFhUQkw0NmN0ZEhkREF0RldrJmluZGV4PTEyJnQ9MHMpCgotIFtnaXRhLmlvIEFQSSBmb3IgZGV2ZWxvcGVycy4gRGVtbyBpbiBQb3N0bWFuXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUstZmJVNTU2LW5jJmxpc3Q9UExHZ3plX1hXWUlveXMtZXRYVEJMNDZjdGRIZERBdEZXayZpbmRleD0xMyZ0PTBzKQoKIyMgQ29udHJpYnV0aW9uIEd1aWRlbGluZXMKClRoYW5rIHlvdSBzbyBtdWNoIGZvciBsb29raW5nIGZvcndhcmQgdG8gY29udHJpYnV0ZS4gUGxlYXNlIHJlYWQgdGhlIFtjb250cmlidXRpb24gZ3VpZGVsaW5lc10oL0NvbnRyaWJ1dGlvbi5tZCkgYmVmb3JlIHByb2NlZWRpbmcuIFdlIHN0cmljdGx5IGFkaGVyZSB0byB0aGVtLg== readmeEtag: '"d6a1ade6de6f2968ffb917afac29fd3dde6c6c30"' readmeLastModified: Fri, 26 Mar 2021 13:13:27 GMT repositoryId: 275591455 description: >- Gita.io is an API adhering to standards of OpenAPI v3.0, to leverage the Gita verses programmatically. The Gita.io API serves the verses in the native Devanagari script along with their transliteration and meaning. created: '2020-06-28T13:32:32Z' updated: '2023-01-13T17:29:31Z' language: HTML archived: false stars: 3 watchers: 1 forks: 1 owner: AxiomSamarth logo: https://avatars.githubusercontent.com/u/32246441?v=4 repoEtag: '"02ae5e9d7027de8bc370709c82687110330caf8d5c5d8fb7abdfe3631ed5bbe0"' repoLastModified: Fri, 13 Jan 2023 17:29:31 GMT foundInMaster: true category: - Code Generators - Server Implementations id: 376287ab5e6f1dcd1912759578fee798 - source: openapi3 tags repository: https://github.com/cope-systems/bottle-openapi-3 v3: true repositoryMetadata: base64Readme: >- PT09PT09PT09PT09PT09PT09PT09PT09PT0KQm90dGxlIE9wZW5BUEkgMyBQbHVnaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQWJvdXQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZSBCb3R0bGUgT3BlbkFQSSAzIFBsdWdpbiBpcyBhIHRvb2xraXQgZm9yIHBlcmZvcm1pbmcgdmFsaWRhdGlvbiBvZiByZXF1ZXN0cwphZ2FpbnN0IGFuIE9wZW5BUEkgZG9jdW1lbnQgZm9yIGBCb3R0bGUgPGh0dHBzOi8vYm90dGxlcHkub3JnL2RvY3MvMC4xMi8+YF8gYXBwbGljYXRpb25zLiBJdCBpcyBidWlsdCBvbiB0aGUgYG9wZW5hcGktY29yZSA8aHR0cHM6Ly9naXRodWIuY29tL3AxYzJ1L29wZW5hcGktY29yZT5gXwphbmQgYG9wZW5hcGktc3BlYy12YWxpZGF0b3IgPGh0dHBzOi8vZ2l0aHViLmNvbS9wMWMydS9vcGVuYXBpLXNwZWMtdmFsaWRhdG9yPmBfIGxpYnJhcmllcywgYW5kIHN1cHBvcnRzCnRoZSBgT3BlbkFQSSAzIHNwZWNpZmljYXRpb24gPGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kPmBfLgoKLS0tLS0tLS0KTGljZW5zZQotLS0tLS0tLQoKVGhpcyBjb2RlYmFzZSBpcyBNSVQgbGljZW5zZWQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSZXF1aXJlbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkEgcmVsYXRpdmVseSByZWNlbnQgdmVyc2lvbiBvZiBQeXRob24gKDMuNSspIGlzIHJlcXVpcmVkLiBUaGlzIHBsdWdpbiBkZXBlbmRzIG9uIHRoZQphZm9yZW1lbnRpb25lZCBgYG9wZW5hcGktY29yZWBgIGFuZCBgYG9wZW5hcGktc3BlYy12YWxpZGF0b3JgYCBsaWJyYXJpZXMsIGFuZCBhbHNvIHJlcXVpcmVzCmEgcmVsYXRpdmVseSByZWNlbnQgdmVyc2lvbiBvZiBgYGJvdHRsZWBgICgwLjEyKykuCgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUXVpY2tzdGFydAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhlIEJvdHRsZSBPcGVuQVBJIDMgcGx1Z2luIG1heSBlaXRoZXIgYmUgaW5zdGFsbGVkIGZyb20gYHB5cGkgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9ib3R0bGUtb3BlbmFwaS0zLz5gXyAgYXMgdGhlIGBgYm90dGxlLW9wZW5hcGktM2BgIHBhY2thZ2U6CgogICAgcGlwIGluc3RhbGwgYm90dGxlLW9wZW5hcGktMwoKb3IgbWF5IGJlIGluc3RhbGxlZCBmcm9tIHNvdXJjZSBmcm9tIHRoZSBgZ2l0IHJlcG9zaXRvcnkgPGh0dHBzOi8vZ2l0aHViLmNvbS9jb3BlLXN5c3RlbXMvYm90dGxlLW9wZW5hcGktMz5gXzoKCiAgICBweXRob24gc2V0dXAucHkgaW5zdGFsbAoKT25jZSB0aGUgcGx1Z2luIGlzIGluc3RhbGxlZCwgaXQgbWF5IGJlIHVzZWQgaW4gYSBCb3R0bGUgYXBwbGljYXRpb24gYnkgbG9hZGluZyB0aGUgT3BlbkFQSSBzY2hlbWEgYW5kIGluc3RhbGxpbmcgdGhlCnBsdWdpbi4gQW4gZXhhbXBsZToKCi4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICBpbXBvcnQgYm90dGxlCiAgICBpbXBvcnQgeWFtbAogICAgZnJvbSBib3R0bGVfb3BlbmFwaV8zIGltcG9ydCBPcGVuQVBJUGx1Z2luCgogICAgYXBwID0gYm90dGxlLkJvdHRsZSgpCgogICAgd2l0aCBvcGVuKCJzd2FnZ2VyLnlhbWwiKSBhcyBmOgogICAgICAgIHNwZWMgPSB5YW1sLmxvYWQoZikKCiAgICBAYXBwLnJvdXRlKCIvYXBpL2ZvbyIpCiAgICBkZWYgZm9vX2hhbmRsZXIoKToKICAgICAgICByZXR1cm4geyJmb28iOiAiYmFyIn0KCiAgICBhcHAuaW5zdGFsbChPcGVuQVBJUGx1Z2luKHNwZWMpKQoKICAgIGFwcC5ydW4oKQoKVGhlIGV4YW1wbGUncyBzcGVjaWZpY2F0aW9uOgoKLi4gY29kZS1ibG9jazo6IHlhbWwKCiAgICBvcGVuYXBpOiAzLjAuMAogICAgaW5mbzoKICAgICAgdGl0bGU6IE15IEFQSQogICAgc2VydmVyczoKICAgICAgLSB1cmw6IC9hcGkKICAgIHBhdGhzOgogICAgICAvZm9vOgogICAgICAgIGdldDoKICAgICAgICAgICBzdW1tYXJ5OiBGZXRjaCBhbiBvYmplY3QKICAgICAgICAgICByZXNwb25zZXM6CiAgICAgICAgICAgICAiMjAwIjoKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQW4gb2JqZWN0IHdhcyBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkLiIKICAgICAgICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgICAgICAgc2NoZW1hOiB7InR5cGUiOiAib2JqZWN0In0KCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBZHZhbmNlZCBVc2FnZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVE9ETwoKCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpDaGFuZ2Vsb2cKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCjAuMS4yIChNYXkgMjAyMSkKKioqKioqKioqKioqKioqKioKCkZpeGVkIGFuIGlzc3VlIGRlY29kaW5nIHRoZSByZXF1ZXN0IGJvZHkgZm9yIEhUVFAgbWV0aG9kcyBsaWtlClBPU1QsIFBVVCwgZXRjLgoKCjAuMS4wIChKYW4gMjAyMSkKKioqKioqKioqKioqKioqKioKCkluaXRpYWwgYWxwaGEgcmVsZWFzZSBvZiB0aGUgT3BlbkFQSSAzIHBsdWdpbiBmb3IKQm90dGxlLiBNb3N0IGZ1bmN0aW9uYWxpdHkgc2hvdWxkIGJlIGltcGxlbWVudGVkLg== readmeEtag: '"0c1057831bb5620d6168385ada5a00d0b2570a31"' readmeLastModified: Sun, 03 Apr 2022 14:51:31 GMT repositoryId: 313789033 description: OpenAPI 3.0 Support for the Bottle Web Framework created: '2020-11-18T01:27:57Z' updated: '2023-10-25T10:49:15Z' language: Python archived: false stars: 3 watchers: 2 forks: 4 owner: cope-systems logo: https://avatars.githubusercontent.com/u/50466330?v=4 license: MIT repoEtag: '"29c329428fb78326b476dab3f11cb4a1c7f961700be8d0997947617b56b09e89"' repoLastModified: Wed, 25 Oct 2023 10:49:15 GMT category: Parsers foundInMaster: true id: db2d64670d722bc3675c6b471ee74aa1 - source: openapi3 tags repository: https://github.com/funa1g/multi-file-oas-example v3: true repositoryMetadata: base64Readme: >- IyBtdWx0aS1maWxlLW9hcy1leGFtcGxlCkFuIGV4YW1wbGUgb2YgbXVsdGkgZmlsZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gMy4wCgojIyBVc2FnZQpJZiB5b3UgY2hlY2sgdGhpcyBleGFtcGxlLCB1c2UgZG9ja2VyIGVudmlyb25tZW50LgoKYGBgCmRvY2tlci1jb21wb3NlIHVwCmBgYAoKQW5kIHNob3cgYGxvY2FsaG9zdDo4MDgwYAoKIyMgRGV0YWlscwpUaGlzIHNhbXBsZSB1c2VzIGBtdWx0aS1maWxlLXN3YWdnZXJgLgoKIyBDb3B5cmlnaHQKVGhpcyBzb2Z0d2FyZSBpbmNsdWRlcyB0aGUgd29yayB0aGF0IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBBcGFjaGUgTGljZW5zZSAyLjAK readmeEtag: '"262fff406391a7549d32cfae001eccf629f108f4"' readmeLastModified: Sun, 20 May 2018 09:18:01 GMT repositoryId: 121081045 description: An example of multi file OpenAPI Specification 3.0 created: '2018-02-11T03:39:43Z' updated: '2023-09-08T08:19:44Z' language: HTML archived: false stars: 3 watchers: 1 forks: 7 owner: funa1g logo: https://avatars.githubusercontent.com/u/9946679?v=4 license: MIT repoEtag: '"e68d3854597319e28126cb79c4fd8b66abc157921fc44dfbbdf15a93678c1731"' repoLastModified: Fri, 08 Sep 2023 08:19:44 GMT foundInMaster: true category: - Documentation - Parsers - Server Implementations id: 7fc78b8250209771d87b7f5c12781671 - source: openapi3 tags repository: https://github.com/vkazakevich/slim-vue-app v3: true id: eba520242ad6418352b035717a1f87a2 repositoryMetadata: base64Readme: >- IyBTbGltIDQgKyBWdWUgMyBhcHBsaWNhdGlvbgoKUHJvamVjdCBkZW1vbnN0cmF0aW5nIHVzaW5nIHRoZSBTbGltIDQgZnJhbWV3b3JrIHRvIGNyZWF0ZSBhIFJlc3RmdWwgQVBJLiBUaGUgZGF0YWJhc2UgaXMgcG93ZXJlZCBieSBFbG9xdWVudCwgYW5kIHRoZSBjbGllbnQgc2lkZSBpcyBkZXZlbG9wZWQgdXNpbmcgVnVlIDMuCgoKIyMgR2V0dGluZyBTdGFydGVkCgpIZXJlIHlvdSBjYW4gc2VlIGhvdyB0byBzZXR1cCB0aGUgcHJvamVjdC4gU2luY2UgdGhlIHByb2plY3QgaXMgdXNpbmcgZG9ja2VyIHlvdSBoYXZlIHRvIGhhdmUgaXQgaW5zdGFsbGVkIGFuZCBydW5uaW5nLgoKVXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdG8gaW5pdGlhbGl6ZSB0aGUgcHJvamVjdDoKCmBgYGJhc2gKIyBZb3UgY2FuIG5vdyBlZGl0IHRoZSBzZXR0aW5ncyBpbiB0aGUgLmVudiBmaWxlCmNwIC5lbnYuZXhhbXBsZSAuZW52CgojIFJ1biBkb2NrZXIgYnVpbGQgY29tbWFuZAptYWtlIGJ1aWxkCgojIEluc3RhbGwgdGhlIENvbXBvc2VyIGRlcGVuZGVuY2llcwptYWtlIGNvbXBvc2VyLWluc3RhbGwgCgojIENyZWF0ZSBhIGRhdGFiYXNlCm1ha2UgY3JlYXRlLWRhdGFiYXNlCmBgYAoKVG8gcG9wdWxhdGUgdGhlIGRhdGFiYXNlIHdpdGggZmFrZSB2YWx1ZXMsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGBiYXNoCm1ha2UgcG9wdWxhdGUtZGF0YWJhc2UKYGBgCgpUbyBzdG9wIG9yIHN0YXJ0IHRoZSBjb250YWluZXIsIHVzZSBgbWFrZSBzdGFydGAgYW5kIGBtYWtlIHN0b3BgLgoKVGhlIHByb2plY3QgaXMgYWNjZXNzaWJsZSBieSBgbG9jYWxob3N0OjgwODBgIGhvc3QuCgojIyBQb3N0bWFuCgpGb3IgeW91ciBjb252ZW5pZW5jZSwgdGhpcyByZXBvc2l0b3J5IGhhcyBhIFtPcGVuQVBJIFNwZWNpZmljYXRpb25dKC4vb3BlbmFwaS5qc29uKSB0aGF0IGNhbiBiZSBpbXBvcnRlZCBpbnRvIFBvc3RtYW4gKFttb3JlIGRldGFpbHNdKGh0dHBzOi8vbGVhcm5pbmcucG9zdG1hbi5jb20vZG9jcy9pbnRlZ3JhdGlvbnMvYXZhaWxhYmxlLWludGVncmF0aW9ucy93b3JraW5nLXdpdGgtb3BlbkFQSS8pKS4K readmeEtag: '"08a60f167948685d361ddbb722e7395cdfc36c3a"' readmeLastModified: Tue, 11 Jul 2023 06:46:45 GMT repositoryId: 664813397 description: >- Demo application on Slim 4 bundled with Eloquent and OpenAPI, and Vue 3 on the client side. created: '2023-07-10T20:05:20Z' updated: '2024-03-31T21:58:45Z' language: PHP archived: false stars: 3 watchers: 1 forks: 0 owner: vkazakevich logo: https://avatars.githubusercontent.com/u/9676524?v=4 license: MIT repoEtag: '"a1c9056ee4c27cfd9f0e82a1aa04e373fbe9a42df125ee5b29a37e0146b07eb8"' repoLastModified: Sun, 31 Mar 2024 21:58:45 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/vkthedev/slim-vue-app - source: openapi3 tags repository: https://github.com/yusufsefasezer/jax-rs-example v3: true repositoryMetadata: base64Readme: >- IyBKYXZhIEpBWC1SUyBSRVNUCgpBIHNpbXBsZSBSRVNUIGJhc2VkIGFwcGxpY2F0aW9uIGRldmVsb3BlZCB3aXRoIEpBVkEsIEpBWC1SUywgU3dhZ2dlcihPcGVuQVBJKSBhbmQgQW5ndWxhci4KCiMjIFtEb3dubG9hZF0oaHR0cHM6Ly9naXRodWIuY29tL3l1c3Vmc2VmYXNlemVyL2pheC1ycy1leGFtcGxlL2FyY2hpdmUvbWFzdGVyLnppcCkKCiMjIEhvdyB0byBydW4KCk1hdmVuIG11c3QgYmUgaW5zdGFsbGVkIHRvIHJ1biB0aGlzIGFwcGxpY2F0aW9uLgoKSWYgeW91IGhhdmUgbWF2ZW4gZXhlY3V0ZSB0aGUgYmVsb3cgY29tbWFuZCB0byBydW4uCgpgYGAKbXZuIGNsZWFuIHBhY2thZ2UKYGBgCgpUaGVuIGRlcGxveSBnZW5lcmF0ZWQgLndhciBmaWxlKHNlcnZlci90YXJnZXQpIHRvIHNlcnZsZXQgY29udGFpbmVyKHRvbWNhdCwgamV0dHkpIG9yIGFwcGxpY2F0aW9uIHNlcnZlcihwYXlhcmEsIGdsYXNzZmlzaCwgdG9tZWUpCgoqKk5PVEU6KiogU2VydmxldCBDb250YWluZXIgbXVzdCBzdXBwb3J0IFNlcnZsZXQgNi4wIHNwZWNzCgojIyBEb2NrZXIKCioqRG9ja2VyIG11c3QgYmUgaW5zdGFsbGVkLioqCgpCdWlsZCB0aGUgRG9ja2VyIGltYWdlIHdpdGggdGhlIHRhZyAiamF2YS1zZXJ2bGV0LWNvbnRhY3QiCgpgYGAKZG9ja2VyIGJ1aWxkIC10IGphdmEtc2VydmxldC1jb250YWN0IC4KYGBgCgpgYGAKZG9ja2VyIHJ1biAtcCA4MDo4MDgwIGphdmEtc2VydmxldC1jb250YWN0CmBgYAoKWW91IGNhbiBhY2Nlc3MgdGhlIGFwcGxpY2F0aW9uIHVzaW5nIGBsb2NhbGhvc3QvamF4LXJzLWV4YW1wbGVgIGluIHlvdXIgd2ViIGJyb3dzZXIuCgojIyBTY3JlZW5zaG90CgotIFtEZWZhdWx0XShzY3JlZW5zaG90L2RlZmF1bHQucG5nKQotIFtDcmVhdGVdKHNjcmVlbnNob3QvY3JlYXRlLnBuZykKLSBbU2hvd10oc2NyZWVuc2hvdC9zaG93LnBuZykKLSBbRWRpdF0oc2NyZWVuc2hvdC9lZGl0LnBuZykKLSBbRG9jdW1lbnRhdGlvbiAvIFN3YWdnZXJdKHNjcmVlbnNob3QvZG9jdW1lbnRhdGlvbi5wbmcpCi0gW0RvY3VtZW50YXRpb24gLyBTd2FnZ2VyIEdFVF0oc2NyZWVuc2hvdC9kb2N1bWVudGF0aW9uLWdldC5wbmcpCi0gW0RvY3VtZW50YXRpb24gLyBTd2FnZ2VyIFBPU1RdKHNjcmVlbnNob3QvZG9jdW1lbnRhdGlvbi1wb3N0LnBuZykKCiMgTGljZW5zZQpUaGlzIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIFtMSUNFTlNFXShMSUNFTlNFKSBmaWxlIGZvciBkZXRhaWxzCgpDcmVhdGVkIGJ5IFtZdXN1ZiBTZXplcl0oaHR0cHM6Ly93d3cueXVzdWZzZXplci5jb20pCg== readmeEtag: '"c468686b2cdc4c43029b9e0e8b13736d0c4fba25"' readmeLastModified: Wed, 13 Mar 2024 19:28:34 GMT repositoryId: 284446325 description: >- A simple REST based application developed with JAVA, JAX-RS, Swagger and Angular. created: '2020-08-02T11:16:21Z' updated: '2024-03-13T19:30:14Z' language: TypeScript archived: false stars: 3 watchers: 1 forks: 1 owner: yusufsefasezer logo: https://avatars.githubusercontent.com/u/9640186?v=4 license: MIT repoEtag: '"49f8a8072ed60af105bfefadab7f5cd2d0c170ba3f68041d910f5667c2b81359"' repoLastModified: Wed, 13 Mar 2024 19:30:14 GMT foundInMaster: true category: - Code Generators - Server Implementations id: 0dd7d55cb3c92f112418b9838b65625f - source: openapi3 tags repository: https://github.com/oai/stories v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIEluaXRpYXRpdmUgKE9BSSkgU3RvcmllcwpUaGlzIGlzIGEgcHVibGljIHJlcG9zaXRvcnkgZm9yIHN1Z2dlc3RpbmcsIGNyZWF0aW5nLCBhbmQgZXZvbHZpbmcgc3RvcmllcyBhYm91dCB0aGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIChPQVMpLiBJbiBhbiBlZmZvcnQgdG8gZW5nYWdlIG1vcmUgd2l0aCB0aGUgY29tbXVuaXR5IHdlIGFyZSBtb3ZpbmcgdGhpcyBwcm9jZXNzIG9udG8gR2l0aHViLCBhbmQgdXNpbmcgaXNzdWVzLCBkaXNjdXNzaW9ucywgYW5kIHByb2plY3QgdG8gZGV2ZWxvcCBhIHJlZ3VsYXIgd2F2ZSBvZiBzdG9yeXRlbGxpbmcgYXJvdW5kIHRoZSBzcGVjaWZpY2F0aW9uLgoKVGhpcyByZXBvIGlzIHVzZWQgdG8gZ2F0aGVyIGlkZWFzIGFuZCBtb3ZlIGZvcndhcmQgc3RvcmllcyB0aGF0IHF1aXRlIG9mdGVuIHdpbGwgZW5kIHVwIG9uIHRoZSBPQUkgYmxvZywgYnV0IGNhbiBhbHNvIGJlIHB1Ymxpc2hlZCBvciBzeW5kaWNhdGVkIHRvIG90aGVyIGxvY2F0aW9ucywgaGVscGluZyBleHRlbmQgdGhlIHJlYWNoIG9mIHRoZSBPQUksIGFuZCBlZHVjYXRlIG1vcmUgb2YgdGhlIGNvbW11bml0eSBhYm91dCB3aGF0IHRoZSBzcGVjaWZpY2F0aW9uIGNhbiBkby4KCi0gW09wZW5BUEkgQmxvZyBHdWlkZWxpbmVzXShodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFDanBtUnpBRzZJdWpTdl90c053VXc2dnktMjlramJTUlY2NXUzMXNBSVJZL2VkaXQjKQoKIyMgQ3VycmVudCBCbG9nIFBvc3RzIGluIHRoZSBRdWV1ZQpUaGVzZSBhcmUgc29tZSBvZiB0aGUgYmxvZyBwb3N0cyB0aGF0IGhhdmUgYmVlbiBzdWdnZXN0ZWQgYW5kIGFyZSBpbiBuZWVkIG9mIGNoYW1waW9ucyB0byBoZWxwIG1vdmUgZWFjaCBzdG9yeSBmb3J3YXJkLgoKKiAqKk9BSSBTSUdzKiogKFtJc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9TdG9yaWVzL2lzc3Vlcy8xMSkpIChXb3JrZmxvdyBTdGF0dXM6IFtJZGVhc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9TdG9yaWVzL2lzc3Vlcz9xPWlzJTNBaXNzdWUraXMlM0FvcGVuK2xhYmVsJTNBaWRlYXMpIC8gVG9waWNzKQoqICoqSlNPTiBTY2hlbWEgQnVuZGxpbmcqKiAoW0lzc3VlXShodHRwczovL2dpdGh1Yi5jb20vT0FJL1N0b3JpZXMvaXNzdWVzLzExKSkgKFdvcmtmbG93IFN0YXR1czogW1N0b3JpZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvU3Rvcmllcy9pc3N1ZXM/cT1pcyUzQWlzc3VlK2lzJTNBb3BlbitsYWJlbCUzQXN0b3JpZXMpIC8gRHJhZnQpCiogKipBUEkgQ29weXJpZ2h0IHdpdGggT0FTKiogKFtJc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9TdG9yaWVzL2lzc3Vlcy8yKSkgKFtQcm9qZWN0XShodHRwczovL2dpdGh1Yi5jb20vT0FJL1N0b3JpZXMvcHJvamVjdHMvMSkpIChXb3JrZmxvdyBTdGF0dXM6IFtTdHVjdHVyYWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvU3Rvcmllcy9pc3N1ZXM/cT1pcyUzQWlzc3VlK2lzJTNBb3BlbitsYWJlbCUzQXN0cnVjdHVyYWwpIC8gTm8pCiogKipYZXJvIE9wZW5BUEkgSm91cm5leSoqIChbSXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvU3Rvcmllcy9pc3N1ZXMvMykpIChbUHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9TdG9yaWVzL3Byb2plY3RzLzIpKSAoV29ya2Zsb3cgU3RhdHVzOiBbU3Rvcmllc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9TdG9yaWVzL2lzc3Vlcz9xPWlzJTNBaXNzdWUraXMlM0FvcGVuK2xhYmVsJTNBc3RvcmllcykgLyBEcmFmdCkKKiAqKkdpdGh1YiBPcGVuQVBJIEpvdXJuZXkqKiAoSXNzdWUpIChbUHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9TdG9yaWVzL3Byb2plY3RzLzMpKSAoV29ya2Zsb3cgU3RhdHVzOiBbU3Rvcmllc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9TdG9yaWVzL2lzc3Vlcz9xPWlzJTNBaXNzdWUraXMlM0FvcGVuK2xhYmVsJTNBc3RvcmllcykgLyBEcmFmdCkKKiAqKk9wZW5BUEkgRm9ybWF0IFRvb2wqKiAoW0lzc3VlXShodHRwczovL2dpdGh1Yi5jb20vT0FJL1N0b3JpZXMvaXNzdWVzLzUpKSAoV29ya2Zsb3cgU3RhdHVzOiBbU3Rvcmllc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9TdG9yaWVzL2lzc3Vlcz9xPWlzJTNBaXNzdWUraXMlM0FvcGVuK2xhYmVsJTNBc3RvcmllcykgLyBOb3RlcykKKiAqKk9wZW5BUEkgRGlmZiBUb29sKiogKFtJc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9TdG9yaWVzL2lzc3Vlcy82KSkgKFdvcmtmbG93IFN0YXR1czogW1N0b3JpZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvU3Rvcmllcy9pc3N1ZXM/cT1pcyUzQWlzc3VlK2lzJTNBb3BlbitsYWJlbCUzQXN0b3JpZXMpIC8gTm90ZXMpCiogKipPdmVybGF5cyoqIChbSXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvU3Rvcmllcy9pc3N1ZXMvNykpIChXb3JrZmxvdyBTdGF0dXM6IFtJZGVhc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9TdG9yaWVzL2lzc3Vlcz9xPWlzJTNBaXNzdWUraXMlM0FvcGVuK2xhYmVsJTNBaWRlYXMpIC8gVG9waWNzKQoqICoqRXh0ZW5zaW9ucyoqIChbSXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvU3Rvcmllcy9pc3N1ZXMvOCkpIChXb3JrZmxvdyBTdGF0dXM6IFtJZGVhc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9TdG9yaWVzL2lzc3Vlcz9xPWlzJTNBaXNzdWUraXMlM0FvcGVuK2xhYmVsJTNBaWRlYXMpICAvIFRvcGljcykKCkZlZWwgZnJlZSB0byBzdWJtaXQgeW91ciBpZGVhIGZvciBhbiBPcGVuQVBJIHN0b3J5IGFzIGEgR2l0aHViIGlzc3VlLCBvciBqdW1wIGluIG9uIHRoZSBwcm9qZWN0IHBhZ2UgZm9yIG9uZSBhbHJlYWR5IGluIG1vdGlvbi4KCiMjIFN0b3J5IFdvcmtmbG93CldlIGFyZSBkZXZlbG9waW5nIGEgd29ya2Zsb3cgZm9yIHB1c2hpbmcgc3RvcmllcyB0byBhIGZpbmlzaCBzdGF0ZS4gTm90IGFsbCBzdG9yaWVzIHdpbGwgdWx0aW1hdGVseSBtYWtlIGl0IHRvIGEgZmluaXNoZWQgc3RhdGUsIGxldCBhbG9uZSB0aGUgT0FJIGJsb2csIGJ1dCB3ZSB1c2UgdGhpcyBwcm9jZXNzIHRvIGRldmVsb3Agc3RvcmllcyBhbmQgZXZvbHZlIHRoZW0gZm9yIGV2ZW50cyBsaWtlIEFTQywgY3JlYXRpb24gb2YgdmlkZW9zLCBhbmQgb3RoZXIgY2hhbm5lbHMuCgojIyMgSWRlYXMgLSBUaGUgc3VibWlzc2lvbiBvZiBhIG5ldyBpZGVhIGZvciBhIHN0b3J5LgoKKiAqKlRvcGljcyoqIC0gQSB0b3BpYyB0byB0ZWxsIGEgc3RvcnkgYWJvdXQuCiogKipQZW9wbGUqKiAtIFNvbWVvbmUgdG8gdGVsbCB0aGUgc3RvcnkuCiogKipDb21wYW5pZXMqKiAtIFdobyBhIHN0b3J5IGludm9sdmVzLgoKIyMjIFN0b3JpZXMgLSBNb3Zpbmcgc29tZXRoaW5nIGZyb20gaWRlYSB0byBzdG9yeS4KCiogKipJbnRlcnZpZXdzKiogLSBDb25kdWN0IGludGVydmlld3MgZm9yIHN0b3J5LgoqICoqTm90ZXMqKiAtIENvbXBpbGUgYW5kIHNoYXJlIG5vdGVzIGZvciBzdG9yeS4KKiAqKkRyYWZ0KiogLSBDcmVhdGUgYSBkcmFmdCBmb3IgYSBzaW5nbGUgc3RvcnkuCgojIyMgU3RydWN0dXJhbCAtIFRoZSB0aW1lIGZvciBtYWtpbmcgYmlnIGNoYW5nZXMuCgoqICoqWWVzIC8gTm8qKiAtIERvIHdlIGV2ZW4gZG8gdGhpcyBzdG9yeT8KKiAqKkJpZyBDaGFuZ2VzKiogLSBTaGlmdGluZyB0aGUgZW50aXJlIHN0cnVjdHVyZS4KKiAqKkN1bHRpdmF0ZSoqIC0gRG8gbW9yZSByZXNlYXJjaCBhbmQgZmxlc2ggb3V0LgoqICoqQ3JlYXRpdmUqKiAtIERvIHdlIG5lZWQgYW55IGltYWdlcz8KCiMjIyBFZGl0aW5nIC0gVGhlIHByb2Nlc3Mgb2YgcmVmaW5pbmcgYSBzdG9yeSBmb3IgcHVibGlzaGluZwoKKiAqKkNoYW5nZXMqKiAtIE5vIG1vcmUgYmlnIGNoYW5nZXMgdG8gYSBzdG9yeS4KKiAqKkNvcHkgRWRpdHMqKiAtIEludHJvZHVjaW5nIGVkaXRzIHRvIHRoZSBzdG9yeSBmcm9tIHRoZSBlZGl0b3IuCiogKipDcmVhdGl2ZSoqIC0gQWRkIGltYWdlcywgcXVvdGVzLCBsaW5rcywgZXRjLgoKIyMjIEdvIExpdmUgLSBCZWdpbiB0byBtb3ZlIHRvd2FyZHMgbWFraW5nIGxpdmUuCgoqICoqSW50ZXJuYWwgQXBwcm92YWwqKiAtIEdldCBpbnRlcm5hbCBhcHByb3ZhbHMuCiogKipFeHRlcm5hbCBBcHByb3ZhbCoqIC0gR2V0IG90aGVyIGFwcHJvdmFscy4KKiAqKlB1Ymxpc2gqKiAtIEdvIGxpdmUgd2l0aCBhIHN0b3J5IG9uIGJsb2cgJiBzb2NpYWwuCiogKipTb2NpYWwqKiAtIEFtcGxpZnkgdXNpbmcgc29jaWFsIG1lZGlhLgoKIyMgR2V0IEludm9sdmVkClRoaXMgaXMgYSBjb21tdW5pdHkgcHJvamVjdCB3aXRoaW4gdGhlIE9BSSBhbmQgd2UgYXJlIGxvb2tpbmcgZm9yIHN0b3J5IGlkZWEgc3VibWlzc2lvbnMgYXMgd2VsbCBhcyBmb2xrcyBpbiB0aGUgZm9sbG93aW5nIHJvbGVzIHRvIGhlbHAgbW92ZSBzdG9yaWVzIGZvcndhcmQ6CgoqICoqSW50ZXJ2aWV3ZXJzKiogLSBQZW9wbGUgd2hvIGNhbiBoZWxwIGludGVydmlldyBwcm92aWRlcnMsIHRvb2xpbmcgbWFrZXJzLCBhbmQgb3RoZXIgcGVvcGxlIHB1dHRpbmcgT3BlbkFQSSB0byB3b3JrLgoqICoqV3JpdGVycyoqIC0gUGVvcGxlIHdobyBjYW4gaGVscCBhY3R1YWxseSB0YWtlIGludGVydmlld3Mgb3IgdG9waWNzLCBkbyB0aGUgcmVzZWFyY2gsIGFuZCBwcm9kdWNlIHN0b3JpZXMgZm9yIHB1Ymxpc2hpbmcuCiogKipFZGl0b3JzKiogKiotIFBlb3BsZSB3aG8gY2FuIGhlbHAgY29weSBlZGl0IHN0b3JpZXMgdGhhdCBhcmUgc3VibWl0dGVkIG55IGF1dGhvcnMgYW5kIGhlbHAgdXMgcHJvZHVjZSBoaWdoIHF1YWxpdHkgc3Rvcmllcy4KCkZlZWwgZnJlZSB0byBqdW1wIGluIG9uIG9uZSBvZiB0aGUgcHJvamVjdHMgYWJvdmUsIG9yIHN1Ym1pdCBhIEdpdGh1YiBpc3N1ZSBpZiB5b3UgaGF2ZSBhbnkgY29tbWVudHMsIHF1ZXN0aW9ucywgb3IgZmVlZGJhY2sgYWJvdXQgc3Rvcmllcy4gSWYgeW91J2QgbGlrZSB0byBiZSBhZGRlZCBhcyBhIGNvbnRyaWJ1dG9yIHBsZWFzZSBzdWJtaXQgYW4gaXNzdWUgc3RhdGluZyBob3cgeW91J2QgbGlrZSB0byBoZWxwIG91dCBhbmQgd2UgY2FuIGFkZCB5b3UgYXMgYSBjb250cmlidXRvciB0byB0aGUgcmVwb3NpdG9yeS4K readmeEtag: '"8630431c01481edf446dd57bc75e98faabc6dcfe"' readmeLastModified: Fri, 18 Jun 2021 01:33:17 GMT repositoryId: 366088081 description: >- Submit ideas, writing, and publishing stories about the OpenAPI specification. created: '2021-05-10T15:21:31Z' updated: '2024-08-02T02:22:50Z' language: null archived: false stars: 3 watchers: 3 forks: 4 owner: OAI logo: https://avatars.githubusercontent.com/u/16343502?v=4 repoEtag: '"2ef91866bdffc00ad5445555ed5ceb69a3920aee78117751636ff1ee865bf0ca"' repoLastModified: Fri, 02 Aug 2024 02:22:50 GMT foundInMaster: true category: Testing id: af4943447a676919750a937a8b3f5fd6 - source: openapi3 tags repository: https://github.com/edenreich/kopgen v3: true id: 72f4700c4f5d0e434b9451e77261d6e1 repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyBzcmM9ImxvZ28va29wZ2VuLndlYnAiIGFsdD0iS29wZ2VuIExvZ28iIHdpZHRoPSI0MDAiLz4KPC9wPgo8aDEgYWxpZ249ImNlbnRlciI+8J+mgCBLb3BnZW4g8J+mgDwvaDE+Cgo8cCBhbGlnbj0iY2VudGVyIj4KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2VkZW5yZWljaC9rb3BnZW4vYWN0aW9ucyI+PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9lZGVucmVpY2gva29wZ2VuL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmciIGFsdD0iQ0kgU3RhdHVzIi8+PC9hPgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZWRlbnJlaWNoL2tvcGdlbi9yZWxlYXNlcyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3YvcmVsZWFzZS9lZGVucmVpY2gva29wZ2VuP2NvbG9yPWJsdWUmc3R5bGU9ZmxhdC1zcXVhcmUiIGFsdD0iVmVyc2lvbiIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2VkZW5yZWljaC9rb3BnZW4vYWN0aW9ucyI+PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9lZGVucmVpY2gva29wZ2VuL2FjdGlvbnMvd29ya2Zsb3dzL2RvY3MueW1sL2JhZGdlLnN2ZyIgYWx0PSJEb2N1bWVudGF0aW9uIFN0YXR1cyIvPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2VkZW5yZWljaC9rb3BnZW4vYmxvYi9tYWluL0xJQ0VOU0UiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL2VkZW5yZWljaC9rb3BnZW4/Y29sb3I9Ymx1ZSZzdHlsZT1mbGF0LXNxdWFyZSIgYWx0PSJMaWNlbnNlIi8+PC9hPgo8L3A+CgpXZWxjb21lIHRvIHRoZSBLb3BnZW4gdG9vbCEgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIGEgZ2VuZXJhdG9yIGZvciBjcmVhdGluZyBhIENyZWF0ZSwgUmVhZCwgVXBkYXRlIGFuZCBEZWxldGUgKENSVUQpIEt1YmVybmV0ZXMgb3BlcmF0b3IgZnJvbSBhbiBPcGVuQVBJIFNwZWNpZmljYXRpb24gKE9BUyksIGFsbCB3cml0dGVuIGluIHRoZSBwb3dlcmZ1bCBhbmQgZWZmaWNpZW50IFJ1c3QgbGFuZ3VhZ2UuCgpJZiB5b3UgaGF2ZSBhIHJ1bm5pbmcgQVBJIHdpdGggYSB2YWxpZCBPcGVuQVBJIFNwZWNpZmljYXRpb24gYnV0IGxhY2sgYW4gb3BlcmF0b3IgdG8gbWFuYWdlIGl0cyBjb21wbGV4aXR5LCB0aGlzIGdlbmVyYXRvciBpcyB0aGUgcGVyZmVjdCBzb2x1dGlvbi4gS3ViZXJuZXRlcyBvcGVyYXRvcnMgYWxzbyBhbGlnbiBzZWFtbGVzc2x5IHdpdGggdGhlIEdpdE9wcyBtZXRob2RvbG9neSwgZW5oYW5jaW5nIHlvdXIgb3BlcmF0aW9uYWwgZWZmaWNpZW5jeS4KCkl0J3MgYSB3ZWxsLWVzdGFibGlzaGVkIGZhY3QgdGhhdCB1c2luZyBZQU1MIHRvIGRlZmluZSBBUEkgcmVzb3VyY2VzIG5vdCBvbmx5IHNpbXBsaWZpZXMgY29tcGxleGl0eSBidXQgYWxzbyBlbmhhbmNlcyBjb2xsYWJvcmF0aW9uIGJldHdlZW4gZGV2ZWxvcGVycyBhbmQgb3BlcmF0aW9ucyB0ZWFtcy4gVGhpcyBhcHByb2FjaCBhbGxvd3MgdGVhbXMgdG8gY29uY2VudHJhdGUgb24gd2hhdCB0cnVseSBtYXR0ZXJzIC0gZGVsaXZlcmluZyB2YWx1ZS4KCi0gW0RvY3VtZW50YXRpb25dKCNkb2N1bWVudGF0aW9uKQotIFtRdWljayBTdGFydCBHdWlkZV0oI3F1aWNrLXN0YXJ0LWd1aWRlKQotIFtDb250cmlidXRpbmddKCNjb250cmlidXRpbmcpCi0gW05lZWQgSGVscD9dKCNuZWVkLWhlbHApCi0gW01vdGl2YXRpb25dKCNtb3RpdmF0aW9uKQotIFtXaHkgT3BlbkFQSSBTcGVjaWZpY2F0aW9uP10oI3doeS1vcGVuYXBpLXNwZWNpZmljYXRpb24pCgojIyBEb2N1bWVudGF0aW9uCgpUaGUgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgaGVyZTogaHR0cHM6Ly9lZGVucmVpY2guZ2l0aHViLmlvL2tvcGdlbi9pbnRyb2R1Y3Rpb24uaHRtbAoKRm9yIGRvY3VtZW50YXRpb24gR2l0aHViLVBhZ2VzIGlzIGJlaW5nIHVzZWQuCkl0J3MgYnVpbHQgdXNpbmcgcnVzdCBtZGJvb2sgd2hpY2ggYWxyZWFkeSBjb21lcyBwcmUtaW5zdGFsbGVkIG9uIHRoZSBEZXZDb250YWluZXIuCgpJZiB5b3UgbmVlZCB0byBtYWtlIGFkanVzdG1lbnQgdG8gdGhlIGRvY3VtZW50YXRpb24geW91IGNhbiBzZXJ2ZSBpdCBsb2NhbGx5LCBydW46CgpgYGBiYXNoCnRhc2sgZG9jcwpgYGAKCiMjIFF1aWNrIFN0YXJ0IEd1aWRlCgpCZWZvcmUgeW91IHByb2NlZWQsIGVuc3VyZSB0aGF0IFtEb2NrZXJdKGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9pbnN0YWxsLykgaXMgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLgoKRG93bmxvYWQgYW5kIGluc3RhbGwgdGhlIGxhdGVzdCBrb3BnZW4gQ0xJOgoKYGBgc2gKY3VybCAtc1NMIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lZGVucmVpY2gva29wZ2VuL3JlZnMvaGVhZHMvbWFpbi9zY3JpcHRzL2luc3RhbGwuc2ggfCBzaApgYGAKClN0YXJ0IGEgbmV3IHByb2plY3QgaW4gYW4gZW1wdHkgZm9sZGVyOgoKYGBgYmFzaAprb3BnZW4gaW5pdCAuCmBgYAoKVGhpcyB3aWxsIGdlbmVyYXRlIHRoZSBwcm9qZWN0IGZvciB0aGUgb3BlcmF0b3IgaW5jbHVkaW5nIGEgZGV2IGNvbnRhaW5lciBlbnZpcm9ubWVudCwgdGhlcmVmb3JlIGl0IGlzIHJlY29tbWVuZGVkIHlvdSB1c2UgVlNjb2RlLgoKT3BlbiB0aGUgcHJvamVjdCBpbiBWU2NvZGUsIGEgcHJvbXB0IHRvIG9wZW4gdGhlIHByb2plY3QgaW5zaWRlIG9mIGEgRGV2IENvbnRhaW5lciB3aWxsIGJlIHNob3duLCBjbGljayBgb3BlbmAuCgpBIERldiBDb250YWluZXIgaXMgZXNzZW50aWFsbHkgYW4gZW5jYXBzdWxhdGUgZW52aXJvbm1lbnQgd2l0aCBhbGwgdGhlIG5lY2Vzc2FyeSB0b29scyB5b3Ugd291bGQgbmVlZCBmb3IgdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgcHJvamVjdC4KClRvIGdldCBzdGFydGVkLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CgoxLiBNYWtlIHN1cmUgeW91IGhhdmUgRG9ja2VyIGFuZCBWU0NvZGUgaW5zdGFsbGVkLgoyLiBSdW46IGBrb3BnZW4gaW5pdCA8ZGlyZWN0b3J5PmAuCjMuIE9wZW4gdGhlIGRpcmVjdG9yeSBpbiB2c2NvZGU6IGBjb2RlIDxkaXJlY3Rvcnk+YC4KNC4gWW91IHN1cHBvc2VkIHRvIGJlIHByb21wdGVkIHRvIG9wZW4gRGV2Q29udGFpbmVyLCBjbGljayBvbiAiUmVvcGVuIGluIENvbnRhaW5lciIuCjUuIENvbmZpZ3VyZTogYGNwIC5lbnYuZXhhbXBsZSAuZW52YC4KNi4gR2VuZXJhdGUgdGhlIG9wZXJhdG9yIGluY2x1ZGluZyBhbGwgb2YgaXRzIGRlcGVuZGVuY2llcywgcnVuOiBgdGFzayBnZW5lcmF0ZWAuCjcuIFJ1biB0aGUgb3BlcmF0b3I6IGB0YXNrIHJ1bmAuCgojIyBDb250cmlidXRpbmcKCklmIHlvdSdkIGxpa2UgdG8gY29udHJpYnV0ZSB0byB0aGlzIHByb2plY3QsIHdlIGhpZ2hseSByZWNvbW1lbmQgdXNpbmcgKipWaXN1YWwgU3R1ZGlvIENvZGUqKi4gVlMgQ29kZSBjb21lcyB3aXRoIGEgcHJlLWNvbmZpZ3VyZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdGhyb3VnaCBvdXIgZGV2IGNvbnRhaW5lciwgZW5zdXJpbmcgeW91IGhhdmUgYWxsIHRoZSBuZWNlc3NhcnkgcHJvamVjdCB0b29saW5nIHNldCB1cCBzZWFtbGVzc2x5LgoKQWRkaXRpb25hbGx5LCBwbGVhc2UgaW5zdGFsbCB0aGUgR2l0IHByZS1jb21taXQgaG9va3MuIFRoZXNlIGhvb2tzIGhlbHAgbWFpbnRhaW4gb3VyIHByb2plY3QncyBjb2Rpbmcgc3RhbmRhcmRzIGJ5IGF1dG9tYXRpY2FsbHkgY2hlY2tpbmcgeW91ciBjb21taXRzIGZvciBjb21wbGlhbmNlIGJlZm9yZSB0aGV5J3JlIGZpbmFsaXplZC4KCiMjIE5lZWQgSGVscD8KCklmIHlvdSdyZSBub3Qgc3VyZSB3aGF0IHRvIGRvLCBqdXN0IHJ1biBgdGFzayAtLWxpc3QtYWxsYCB0byBzZWUgYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgdGFza3MuCgojIyBNb3RpdmF0aW9uCgpXaHkgY3JlYXRlIGEgS3ViZXJuZXRlcyBvcGVyYXRvciBpbiBSdXN0PyBHcmVhdCBxdWVzdGlvbiEgSGVyZSBhcmUgYSBmZXcgcmVhc29uczoKCjEuICoqUGVyZm9ybWFuY2UqKjogUnVzdCBpcyBrbm93biBmb3IgaXRzIGJsYXppbmcgZmFzdCBwZXJmb3JtYW5jZS4gSXQncyBhIHN5c3RlbSBwcm9ncmFtbWluZyBsYW5ndWFnZSB0aGF0IHJ1bnMgd2l0aG91dCBhbnkgZXh0cmEgcnVudGltZSBvciBnYXJiYWdlIGNvbGxlY3Rvci4gVGhpcyBtYWtlcyBSdXN0IGEgZ3JlYXQgY2hvaWNlIGZvciB3cml0aW5nIEt1YmVybmV0ZXMgb3BlcmF0b3JzIHdoZXJlIHBlcmZvcm1hbmNlIGlzIGtleS4KCjIuICoqTWVtb3J5IFNhZmV0eSoqOiBSdXN0J3MgdW5pcXVlIG93bmVyc2hpcCBtb2RlbCBndWFyYW50ZWVzIG1lbW9yeSBzYWZldHkgd2l0aG91dCBuZWVkaW5nIGEgZ2FyYmFnZSBjb2xsZWN0b3IuIFRoaXMgbWVhbnMgeW91IGNhbiB3cml0ZSBoaWdoLXBlcmZvcm1hbmNlIG9wZXJhdG9ycyB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IG1hbnVhbCBtZW1vcnkgbWFuYWdlbWVudC4KCjMuICoqQ29uY3VycmVuY3kqKjogUnVzdCBoYXMgZmlyc3QtY2xhc3Mgc3VwcG9ydCBmb3IgY29uY3VycmVudCBwcm9ncmFtbWluZy4gVGhpcyBpcyBjcnVjaWFsIGZvciB3cml0aW5nIG9wZXJhdG9ycywgd2hpY2ggb2Z0ZW4gbmVlZCB0byBtYW5hZ2UgbXVsdGlwbGUgcmVzb3VyY2VzIGNvbmN1cnJlbnRseS4KCjQuICoqSW50ZXJvcGVyYWJpbGl0eSoqOiBSdXN0IGNhbiBlYXNpbHkgaW50ZXJvcGVyYXRlIHdpdGggQyBhbmQgb3RoZXIgbGFuZ3VhZ2VzLiBUaGlzIG1ha2VzIGl0IGVhc3kgdG8gbGV2ZXJhZ2UgZXhpc3RpbmcgbGlicmFyaWVzIHdoZW4gd3JpdGluZyB5b3VyIG9wZXJhdG9yLgoKNS4gKipUb29saW5nKio6IFJ1c3QncyB0b29saW5nIGlzIHRvcC1ub3RjaC4gV2l0aCBDYXJnbywgUnVzdCdzIHBhY2thZ2UgbWFuYWdlciBhbmQgYnVpbGQgc3lzdGVtLCBtYW5hZ2luZyBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkaW5nIHlvdXIgcHJvamVjdCBpcyBhIGJyZWV6ZS4KCjYuICoqU3Ryb25nIENvbW11bml0eSoqOiBUaGUgUnVzdCBjb21tdW5pdHkgaXMga25vd24gZm9yIGJlaW5nIGZyaWVuZGx5IGFuZCBoZWxwZnVsLCB3aGljaCBpcyBhbHdheXMgYSBwbHVzIHdoZW4gbGVhcm5pbmcgYSBuZXcgbGFuZ3VhZ2Ugb3Igc3RhcnRpbmcgYSBuZXcgcHJvamVjdC4KCiMjIFdoeSBPcGVuQVBJIFNwZWNpZmljYXRpb24/CgpUaGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIChPQVMpLCBmb3JtZXJseSBrbm93biBhcyBTd2FnZ2VyLCBpcyBhIHN0YW5kYXJkIGZvciBkZWZpbmluZyBBUElzLiBJdCBwcm92aWRlcyBhIHdheSB0byBkZXNjcmliZSB0aGUgY2FwYWJpbGl0aWVzIG9mIHlvdXIgQVBJIGluIGEgbWFjaGluZS1yZWFkYWJsZSBmb3JtYXQuIFRoaXMgaGFzIHNldmVyYWwgYmVuZWZpdHM6CgoxLiAqKkRvY3VtZW50YXRpb24qKjogV2l0aCBPQVMsIHlvdXIgQVBJIGRvY3VtZW50YXRpb24gaXMgYWx3YXlzIHVwLXRvLWRhdGUgYmVjYXVzZSBpdCdzIGdlbmVyYXRlZCBkaXJlY3RseSBmcm9tIHlvdXIgQVBJIGRlZmluaXRpb24uIFRoaXMgbWFrZXMgaXQgZWFzaWVyIGZvciBkZXZlbG9wZXJzIHRvIHVuZGVyc3RhbmQgd2hhdCB5b3VyIEFQSSBkb2VzIGFuZCBob3cgdG8gdXNlIGl0LgoKMi4gKipDbGllbnQgU0RLIEdlbmVyYXRpb24qKjogVG9vbHMgbGlrZSB0aGUgT3BlbkFQSSBHZW5lcmF0b3IgY2FuIGdlbmVyYXRlIGNsaWVudCBTREtzIGluIHZhcmlvdXMgbGFuZ3VhZ2VzIGZyb20gYW4gT0FTIGRvY3VtZW50LiBUaGlzIG1lYW5zIGRldmVsb3BlcnMgY2FuIHN0YXJ0IHVzaW5nIHlvdXIgQVBJIGluIHRoZWlyIGxhbmd1YWdlIG9mIGNob2ljZSB3aXRob3V0IGhhdmluZyB0byB3cml0ZSBhIGxvdCBvZiBib2lsZXJwbGF0ZSBjb2RlLgoKMy4gKipTZXJ2ZXIgU3R1YiBHZW5lcmF0aW9uKio6IFNpbWlsYXJseSwgeW91IGNhbiBnZW5lcmF0ZSBzZXJ2ZXIgc3R1YnMgZnJvbSBhbiBPQVMgZG9jdW1lbnQuIFRoaXMgY2FuIHNwZWVkIHVwIHRoZSBpbml0aWFsIGRldmVsb3BtZW50IG9mIHlvdXIgQVBJLgoKNC4gKipWYWxpZGF0aW9uKio6IFlvdSBjYW4gdXNlIHlvdXIgT0FTIGRvY3VtZW50IHRvIHZhbGlkYXRlIEFQSSByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzLiBUaGlzIGhlbHBzIGNhdGNoIGVycm9ycyBiZWZvcmUgdGhleSBiZWNvbWUgcHJvYmxlbXMuCgo1LiAqKkludGVncmF0aW9uKio6IEJlY2F1c2UgT0FTIGlzIGEgc3RhbmRhcmQsIHRoZXJlIGFyZSBtYW55IHRvb2xzIHRoYXQgY2FuIGltcG9ydCBPQVMgZG9jdW1lbnRzIGFuZCBwcm92aWRlIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eSwgc3VjaCBhcyB0ZXN0aW5nIHRvb2xzLCBBUEkgZ2F0ZXdheXMsIGFuZCBtb3JlLgoKSW4gdGhpcyBwcm9qZWN0LCB3ZSB1c2UgdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiB0byBnZW5lcmF0ZSB0aGUgbmVjZXNzYXJ5IHR5cGVzIGFuZCBjb250cm9sbGVycyBmb3Igb3VyIEt1YmVybmV0ZXMgb3BlcmF0b3IuIFRoaXMgYWxsb3dzIHVzIHRvIGVhc2lseSBrZWVwIG91ciBvcGVyYXRvciBpbiBzeW5jIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIG91ciBBUEkuCg== readmeEtag: '"09121f087c8ea54ed77c010168f0ca2489ba3819"' readmeLastModified: Tue, 19 Nov 2024 23:56:13 GMT repositoryId: 631552666 description: >- A generator for creating a CRUD Kubernetes operator from OpenAPI Specification written in Rust. created: '2023-04-23T11:43:16Z' updated: '2025-07-02T11:28:07Z' language: Rust archived: false stars: 7 watchers: 1 forks: 2 owner: edenreich logo: https://avatars.githubusercontent.com/u/16985712?v=4 license: Apache-2.0 repoEtag: '"d4752f2fe10d0a1427b56873e6b8ca5f07bca1e1310065d2dfb39a252a1cabd7"' repoLastModified: Wed, 02 Jul 2025 11:28:07 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/edenreich/k8s-operator-generator - source: openapi3 tags repository: https://github.com/koriit/ktor-controllers-openapi v3: true repositoryMetadata: base64Readme: >- PSBLdG9yIENvbnRyb2xsZXJzIE9wZW5BUEkKCmltYWdlOmh0dHBzOi8vZ2l0aHViLmNvbS9Lb3JpaXQva3Rvci1jb250cm9sbGVycy1vcGVuYXBpL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnlhbWwvYmFkZ2Uuc3ZnW0J1aWxkLCBsaW5rPSJodHRwczovL2dpdGh1Yi5jb20vS29yaWl0L2t0b3ItY29udHJvbGxlcnMtb3BlbmFwaS9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55YW1sIl0KaW1hZ2U6aHR0cHM6Ly93d3cuY29kZWZhY3Rvci5pby9yZXBvc2l0b3J5L2dpdGh1Yi9rb3JpaXQva3Rvci1jb250cm9sbGVycy1vcGVuYXBpL2JhZGdlW0NvZGVGYWN0b3IsbGluaz1odHRwczovL3d3dy5jb2RlZmFjdG9yLmlvL3JlcG9zaXRvcnkvZ2l0aHViL2tvcmlpdC9rdG9yLWNvbnRyb2xsZXJzLW9wZW5hcGldCmltYWdlOmh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLSVFMiU5RCVBNC1GRjQwODEuc3ZnW2t0bGludCxsaW5rPWh0dHBzOi8va3RsaW50LmdpdGh1Yi5pby9dCgppbWFnZTpodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLWNlbnRyYWwvdi9jb20ua29yaWl0LmtvdGxpbi9rdG9yLWNvbnRyb2xsZXJzLW9wZW5hcGkuc3ZnP2xhYmVsPU1hdmVuJTIwQ2VudHJhbFtNYXZlbiBDZW50cmFsLCBsaW5rPSJodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9ZzolMjJjb20ua29yaWl0LmtvdGxpbiUyMiUyMEFORCUyMGE6JTIya3Rvci1jb250cm9sbGVycy1vcGVuYXBpJTIyIl0KaW1hZ2U6aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9rb3JpaXQva3Rvci1jb250cm9sbGVycy1vcGVuYXBpW0dpdEh1Yl0KCldBUk5JTkc6IEZyb20gdmVyc2lvbiAwLjUuMCBhbGwgcGFja2FnZSBuYW1lcyBoYXZlIGJlZW4gcmVuYW1lZCB0byBtYXRjaCBuZXcgYXJ0aWZhY3QgZ3JvdXAgaWQuCgpTdXBwb3J0IGZvciBPcGVuQVBJMyBpbiBodHRwczovL2dpdGh1Yi5jb20vS29yaWl0L2t0b3ItY29udHJvbGxlcnNba3Rvci1jb250cm9sbGVyc10uCgpUaGUgaWRlYSBpcyB0byB2YWxpZGF0ZSB5b3VyIE9wZW5BUEkgc3BlYyBhZ2FpbnN0IHlvdXIgY29kZSBpbnN0ZWFkIG9mIGdlbmVyYXRpbmcgaXQgZnJvbSB5b3VyIGNvZGUuCgpbV0FSTklOR10KVGhpcyBsaWJyYXJ5IGlzICpXb3JrIEluIFByb2dyZXNzKi4gSXQgZG9lc24ndCBzdXBwb3J0IGFsbCAqcmVsZXZhbnQqIGVsZW1lbnRzIG9mIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBsaWtlCm9hdXRoLCBjYWxsYmFjayBvciBlbmNvZGluZyB5ZXQuIEhvd2V2ZXIsIGFsbCBzdHJ1Y3R1cmFsIGVsZW1lbnRzIHNob3VsZCBiZSBzdXBwb3J0ZWQuCgoKPT0gRXhhbXBsZQpbc291cmNlLGtvdGxpbl0KLS0tLQppbnN0YWxsKFJvdXRpbmcpIHsKICAgIHZhbCBvcGVuYXBpID0ge30uamF2YUNsYXNzLmdldFJlc291cmNlQXNTdHJlYW0oIi9vcGVuYXBpLnlhbWwiKS5yZWFkZXIoKS5yZWFkVGV4dCgpCgogICAgb3BlbkFQSUNvbnRyb2xsZXIob3BlbmFwaSkKICAgIHN3YWdnZXJVSUNvbnRyb2xsZXIoKQp9Ci0tLS0KCj09IFRlc3RpbmcKW3NvdXJjZSxrb3RsaW5dCi0tLS0KdmFsIHNlcnZlciA9IFRlc3RBcHBsaWNhdGlvbkVuZ2luZShzZXJ2ZXJDb25maWcoKSkKc2VydmVyLnN0YXJ0KCkKCkxPRy5pbmZvKCJBbmFseXppbmcgS3RvciBzZXJ2ZXIuLi4iKQp2YWwgYW5hbHl6ZXIgPSBLdG9yT3BlbkFQSUFuYWx5emVyKAogICAgICAgIGt0b3IgPSBzZXJ2ZXIuYXBwbGljYXRpb24sCiAgICAgICAgYmFzZVBhdGhzID0gbGlzdE9mKCIvYXBpIiksCiAgICAgICAgZGVmYXVsdEhlYWRlcnMgPSBsaXN0T2YoSHR0cEhlYWRlcihYUmVxdWVzdElkKSksCiAgICAgICAgZGVmYXVsdEVycm9yVHlwZSA9IEFwaUVycm9yOjpjbGFzcwopCgp2YWwgc291cmNlID0gYW5hbHl6ZXIuYW5hbHl6ZSgpCnNlcnZlci5zdG9wKDBMLCAwTCwgVGltZVVuaXQuTUlMTElTRUNPTkRTKQoKTE9HLmluZm8oIlJlYWRpbmcgT3BlbkFQSSBzcGVjLi4uIikKdmFsIGRvYyA9IE9wZW5BUElSZWFkZXIoKS5sb2FkKHt9LmphdmFDbGFzcy5nZXRSZXNvdXJjZUFzU3RyZWFtKCIvb3BlbmFwaS55YW1sIikpCgpMT0cuaW5mbygiVmFsaWRhdGluZyBzcGVjLi4uIikKdmFsIGVycm9ycyA9IE9wZW5BUElNYXRjaGVyKCkubWF0Y2goZG9jLCBzb3VyY2UpCgppZiAoZXJyb3JzLmlzTm90RW1wdHkoKSkgewogICAgTE9HLmluZm8oIlJlc3VsdCBvZiBzZXJ2ZXIgYW5hbHlzaXM6XG57fSIsIHNvdXJjZSkKCiAgICBlcnJvcnMuZm9yRWFjaCB7CiAgICAgICAgTE9HLmVycm9yKGl0KQogICAgfQoKICAgIGZhaWwoIlRoZXJlIGFyZSAke2Vycm9ycy5zaXplfSB2YWxpZGF0aW9uIGVycm9ycyEiKQoKfSBlbHNlIHsKICAgIExPRy5pbmZvKCJPSyEiKQp9Ci0tLS0K readmeEtag: '"8170c81300eca3c42ed213ee826e02d851f63a60"' readmeLastModified: Tue, 01 Feb 2022 00:25:38 GMT repositoryId: 217298102 description: Support for OpenAPI3 in ktor-controllers created: '2019-10-24T12:50:34Z' updated: '2023-09-15T12:46:53Z' language: Kotlin archived: false stars: 3 watchers: 1 forks: 0 owner: Koriit logo: https://avatars.githubusercontent.com/u/8916393?v=4 license: MIT repoEtag: '"85833dee171f236180302ab03b75328f1be10761b39f245ae4891326d6d568d3"' repoLastModified: Fri, 15 Sep 2023 12:46:53 GMT foundInMaster: true category: Data Validators id: d8110a35dbaeb0bf31f7edaeeb7db995 - source: openapi3 tags repository: https://github.com/greyteam2020/gooutsafe_microservice v3: true repositoryMetadata: base64Readme: >- IyBHb091dFNhZmUgd2l0aCBtaWNyb3NlcnZpY2VzCgohW0dpdEh1YiBXb3JrZmxvdyBTdGF0dXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3dvcmtmbG93L3N0YXR1cy9HcmV5VGVhbTIwMjAvR29PdXRTYWZlX21pY3Jvc2VydmljZS9kb2NrZXItY29tcG9zZS1hY3Rpb25zLXdvcmtmbG93P3N0eWxlPWZvci10aGUtYmFkZ2UpCiFbQ29kZWNvdl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jb2RlY292L2MvZ2l0aHViL0dyZXlUZWFtMjAyMC9Hb091dFNhZmVfbWljcm9zZXJ2aWNlP3N0eWxlPWZvci10aGUtYmFkZ2UpCgojIyBUYWJsZSBvZiBDb250ZW50CgotIFtBcHAgQXJjaGl0ZWN0dXJlXSgjKQotIFtIb3cgQnVpbGQgYW5kIHJ1biB3aXRoIERvY2tlcl0oaHR0cHM6Ly9ncmV5dGVhbTIwMjAuZ2l0aHViLmlvL0dvT3V0U2FmZV9taWNyb3NlcnZpY2UvcnVuLXRlc3Qtb24tdGhlLWhvc3QtbWFjaGluZSkKLSBbRGV2ZWxvcGluZ10oaHR0cHM6Ly9ncmV5dGVhbTIwMjAuZ2l0aHViLmlvL0dvT3V0U2FmZV9taWNyb3NlcnZpY2UvR29PdXRTYWZlX21pY3Jvc2VydmljZSNkZXZlbG9waW5nKQotIFtBZGRpdGlvbmFsIGluZm9ybWF0aW9uXShodHRwczovL2dyZXl0ZWFtMjAyMC5naXRodWIuaW8vR29PdXRTYWZlX21pY3Jvc2VydmljZS9hZGRpdGlvbmFsLWluZm9ybWF0aW9uKQoKIyMgQXBwIEFyY2hpdGVjdHVyZQoKIVtdKGh0dHBzOi8vaS5pYmIuY28vaGMzVjFtay9waG90by0yMDIwLTExLTI2LTEwLTA5LTU4LmpwZykKCiFbXShodHRwczovL2kuaWJiLmNvL0NIUlIxMVcvU2VsZWN0aW9uLTA0Ni5wbmcpCgojIyBIb3cgY2xvbmUgaXQKCkVhY2ggbWljcm9zZXJ2aWNlcyBpcyBhIHNlcGFyYXRlIHJlcG9zaXRvcnkgdGhhdCB5b3UgY2FuIGNsb25lIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kcwoKYGBgYmFzaApnaXQgY2xvbmUgLS1yZWN1cnNlLXN1Ym1vZHVsZXMgaHR0cHM6Ly9naXRodWIuY29tL0dyZXlUZWFtMjAyMC9Hb091dFNhZmVfbWljcm9zZXJ2aWNlLmdpdApgYGAKCltTb3VyY2VdKGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zNzk3MDYxLzcyOTA1NjIpCgpUaGUgc3VibW9kdWxlcyBhcmUgdGhlIG1pY3Jvc2VydmljZXMgd2l0aCB0aGUgZm9sbG93aW5nIHByb3ByaWV0aWVzOgoKLSBbRW1haWwgTWljcm9zZXJ2aWNlc10oaHR0cHM6Ly9naXRodWIuY29tL0dyZXlUZWFtMjAyMC9lbWFpbF9taWNyb3NlcnZpY2UpOiBSdW5uaW5nIG9uIHBvcnQgNTAwMSBhbmQgaW5jbHVkZSBzb21lIFtjZWxlcnldKGh0dHBzOi8vZG9jcy5jZWxlcnlwcm9qZWN0Lm9yZy9lbi9zdGFibGUvZ2V0dGluZy1zdGFydGVkL2ludHJvZHVjdGlvbi5odG1sKSB0YXNrcy4KLSBbVXNlciBNaWNyb3NlcnZpY2VzXShodHRwczovL2dpdGh1Yi5jb20vR3JleVRlYW0yMDIwL3VzZXJzX21pY3Jvc2VydmljZSk6IFJ1bm5pbmcgb24gcG9ydCA1MDAyOwotIFtSZXN0YXVyYW50cyBNaWNyb3NlcnZpY2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9HcmV5VGVhbTIwMjAvcmVzdGF1cmFudHNfbWljcm9zZXJ2aWNlKTogUnVubmluZyBvbiBwb3J0IDUwMDMgYW5kIGluY2x1ZGUgc29tZSBbY2VsZXJ5XShodHRwczovL2RvY3MuY2VsZXJ5cHJvamVjdC5vcmcvZW4vc3RhYmxlL2dldHRpbmctc3RhcnRlZC9pbnRyb2R1Y3Rpb24uaHRtbCkgYmFja2dyb3VuZCB0YXNrcy47Ci0gW0Jvb2tpbmcgTWljcm9zZXJ2aWNlXShodHRwczovL2dpdGh1Yi5jb20vR3JleVRlYW0yMDIwL2Jvb2tpbmdfbWljcm9zZXJ2aWNlKTogUnVubmluZyBvbiBwb3J0IDUwMDQKCiMjIEhvdyBCdWlsZCBhbmQgcnVuIHdpdGggRG9ja2VyCgpDbG9uZSB0aGUgcmVwb3NpdG9yeSB3aXRoIHRoZSBjb21tYW5kIGFib3ZlIGFuZCBydW4gaW4gdGhlIHJvb3QgZm9sZGVyIHRoZSBjb21tYW5kCmBkb2NrZXItY29tcG9zZSB1cGAKVGhpcyB3aWxsIG1ha2UgZG9ja2VyIGRvd25sb2FkcyBhbGwgdGhlIGZpbGUgbmVlZGVkIGFuZCBzdGFydCBidWlsZGluZyB0aGUgY29udGFpbmVycy4gCkFmdGVyIHRoYXQsIHlvdSBjYW4gYnJvd3NlIHRvIGh0dHA6Ly9sb2NhbGhvc3QvIHRvIHVzZSB0aGUgYXBwLgoKIyMgUnVuIHRlc3Qgb24gdGhlIGhvc3QgbWFjaGluZQoKWW91IGNhbid0IHdpdGhvdXQgZG9ja2VyIHRoaXMgdGltZSwgdG8gcnVuIGl0IG9uIHRoZSBob3N0IG1hY2hpbmUgd2l0aG91dCBkb2NrZXIgeW91IGNhbiBydW4gdGhlIG1vbm9saXRoIHZlcnNpb24KYXZhaWxhYmxlIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vR3JleVRlYW0yMDIwL0dvT3V0U2FmZV9QcmltZXIyMDIwKQoKIyMgRGV2ZWxvcGluZwoKRWFjaCBwcm9ncmFtbWVyIGhhcyBhIHBlcnNvbmFsIHN0eWxlIG9uIHdyaXRlIGNvZGUgYW5kIHdlIGFjY2VwdCB0aGlzLCBidXQgdG8gbWFrZSByZWFkYWJpbGl0eSB0aGUKY29kZSBmcm9tIGFsbCBjb21wb25lbnQgb2YgdGhlIHRlYW0sIHdlIHVzZWQgYSBnb29kIHRvb2wgdG8gZm9ybWF0IHRoZSBjb2RlIGluIGF1dG9tYXRpY2FsbHkuCgpJdCBpcyBbYmxhY2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9wc2YvYmxhY2spLCBhbmQgaXQgaXMgaW5zdGFsbGVkIHdpdGggdGhlIHJlcXVpcmVtZW50cy50eHQKClRvIGZvcm1hdCB0aGUgY29kZSB5b3UgY2FuIHJ1biB0aGUgY29tbWFuZCBiZWxvdyBhZnRlciBgcGlwMyBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQgLS11c2VyYAoKYGJsYWNrIG1vbm9saXRoYAoKV2hlbiB5b3Ugc2VlIHRoZSBmb2xsb3dpbmcgbGluZSwgeW91IGFyZSBkb25lIHRvIHB1c2ggeW91ciBQUgoKQWxsIGRvbmUhIOKcqCDwn42wIOKcqAoKCiMjIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24KCi0gRGVhZGxpbmUgLSBXZWRuZXNkYXksIDI1IE5vdmVtYmVyIDIwMjAsIDIzOjU5Cg== readmeEtag: '"6a38e50f5f93b7ba25d603dd9e86ab68f3b44c25"' readmeLastModified: Tue, 01 Mar 2022 10:29:30 GMT repositoryId: 312033852 description: >- :octocat: GoOutSafe a web app (with microservices architecture) that implements some cool features to survive during this covid19 Pandemic. This web app is developed during the Advanced Software Engineering course by the Univerisity of Pisa :computer: created: '2020-11-11T16:56:03Z' updated: '2023-04-04T04:13:22Z' language: Python archived: false stars: 3 watchers: 2 forks: 3 owner: GreyTeam2020 logo: https://avatars.githubusercontent.com/u/73334241?v=4 repoEtag: '"770c31ec6818475901c161eebfa4fc6fe77956418f6a0e6392fa30f29edef4c3"' repoLastModified: Tue, 04 Apr 2023 04:13:22 GMT foundInMaster: true category: - Description Validators - Server Implementations id: eed683d5286fd183b4fd5b4e297b83f1 - source: openapi3 tags repository: https://github.com/okaluzny/app-assistant v3: true id: 54199e746a1f9db1639f71e53fd9b498 repositoryMetadata: base64Readme: >- IyMgYXBwLWFzc2lzdGFudAoKVGhpcyBpcyBhIHNpbXBsZSBsb2dpc3RpYyBhcHBsaWNhdGlvbiBkZW1vbnN0cmF0aW5nIHNvbWUgY2FwYWJpbGl0aWVzIG9mIFNwcmluZyBCb290IGFzIGJhY2tlbmQgc2VydmljZSBjYXBhYmlsaXRpZXMgaW5jbHVkZToKKiBBcHAgYXJjaGl0ZWN0dXJlOwoqIERhdGFiYXNlIG1pZ3JhdGlvbiBhbmQgc2NoZW1hIGNoYW5nZSBtYW5hZ2VtZW50IHVzaW5nIExpcXVpYmFzZTsKKiBldGMuCgojIyBIb3cgaXQgd29ya3M6CioqMS4gRG9ja2VyLiBGaXJzdCB5b3UgbmVlZCB0byBpbnN0YWxsIGRvY2tlcioqCiogRG93bmxvYWQgRG9ja2VyIFtIZXJlXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9kb2NrZXItZm9yLXdpbmRvd3MvaW5zdGFsbC8pLiBIaW50OiBFbmFibGUgSHlwZXItViBmZWF0dXJlIG9uIHdpbmRvd3MgYW5kIHJlc3RhcnQ7CiogVGhlbiBvcGVuIHBvd2Vyc2hlbGwgYW5kIGNoZWNrOgpgYGBiYXNoCmRvY2tlciBpbmZvCmBgYApvciwgYW5kIHlvdSBzZWUgdmVyc2lvbnMgZG9ja2VyICYgZG9ja2VyIGNvbXBvc2UKYGBgYmFzaApkb2NrZXIgLXYKYGBgCmBgYGJhc2gKZG9ja2VyLWNvbXBvc2UgLXYKYGBgCgoqKjIuIFNwcmluZyBib290IGFwcCoqCiogQ2xvbmUgdGhlIHJlcG9zaXRvcnk6CmBgYGJhc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9PS2FsdXpueS9taWNyb3NlcnZpY2UtYXNzaXN0YW50LmdpdApgYGAKKiBCdWlsZCB0aGUgbWF2ZW4gcHJvamVjdDoKYGBgYmFzaAptdm4gY2xlYW4gaW5zdGFsbApgYGAKKiBOb3cgcnVuOgpgYGBiYXNoCmRvY2tlci1jb21wb3NlIHVwCmBgYAoKQXBwZW5kaXggQS4KCkFsbCBjb21tYW5kcyBzaG91bGQgYmUgcnVuIGZyb20gcHJvamVjdCByb290ICh3aGVyZSBkb2NrZXItY29tcG9zZS55bWwgbG9jYXRlcykK readmeEtag: '"8afe9efa60365148dd1320f36456e6620ea495c7"' readmeLastModified: Tue, 28 Nov 2023 08:26:56 GMT repositoryId: 229004551 description: null created: '2019-12-19T07:59:29Z' updated: '2023-08-28T21:04:33Z' language: Java archived: false stars: 3 watchers: 1 forks: 1 owner: OKaluzny logo: https://avatars.githubusercontent.com/u/13517065?v=4 repoEtag: '"4332b203898ea744c1020b96dd1d053b523ffe45f8fd95c98aff99927b576101"' repoLastModified: Mon, 28 Aug 2023 21:04:33 GMT category: Server Implementations oldLocations: - https://github.com/okaluzny/microservice-assistant foundInMaster: true - source: openapi3 tags repository: https://github.com/koumoul-dev/soas v3: true repositoryMetadata: base64Readme: >- IyBTZW1hbnRpYyBPcGVuIEFQSSBTcGVjaWZpY2F0aW9uIGxpYnJhcnkKSG9sZHMgdXRpbGl0eSBmdW5jdGlvbnMgdG8gbWFuaXB1bGF0ZSBhbiBBUEkgZGVzY3JpYmVkIHdpdGggW09wZW5BUEkgMy4wIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kKSBhbmQgW3NlbWFudGljYWxseSBhbm5vdGF0ZWRdKGh0dHA6Ly93d3cuaW50ZWxsaWdlbmNlLnR1Yy5nci9+cGV0cmFraXMvcHVibGljYXRpb25zL1NPQVM0LnBkZikuCgojIyBRdWljayBzdGFydApgYGAKbnBtIGluc3RhbGwgLS1zYXZlCmBgYAoKYGBgamF2YXNjcmlwdAppbXBvcnQgc29hc0xvYWRlciBmcm9tICdzb2FzJwppbXBvcnQgYXBpRG9jIGZyb20gJ3BhdGgtdG8vbXktYXBpLmpzb24nCgpjb25zdCBzb2FzID0gc29hc0xvYWRlcihhcGlEb2MpCgpjb25zdCBlbmRQb2ludHMgPSBzb2FzLmVuZFBvaW50cygpCmNvbnN0IGFjdGlvbnMgPSBzb2FzLmFjdGlvbnMoKQoKY29uc3QgaW5wdXQxID0gewogICJodHRwOi8vc2NoZW1hLm9yZy9zdHJlZXRBZGRyZXNzIjogIjcgUnVlIFZpY3RvciBTY2hvZWxjaGVyIiwKICAiaHR0cDovL3JkZi5pbnNlZS5mci9kZWYvZ2VvI2NvZGVDb21tdW5lIjoiMjIwNTAiCn0KY29uc3Qgb3V0cHV0MSA9IGF3YWl0IHNvYXMuZXhlY3V0ZSgnZ2V0Q29vcmQnLCBpbnB1dDEpCi8vIG91dHB1dDEgaXMgOgovLyB7Imh0dHA6Ly9zY2hlbWEub3JnL2lkZW50aWZpZXIiOiIxIiwKLy8gImh0dHA6Ly9zY2hlbWEub3JnL2xhdGl0dWRlIjoiNDguMyIsCi8vICJodHRwOi8vc2NoZW1hLm9yZy9sb25naXR1ZGUiOiItMy40In0KCi8vIHdvcmtzIHdpdGggc3RyZWFtcyB0b28KY29uc3QgaW5wdXQyID0gZnMuY3JlYXRlUmVhZFN0cmVhbShwYXRoLmpvaW4oX19kaXJuYW1lLCAnYWRkcmVzc2VzLm5kanNvbicpKQogICAgICAgICAgICAgICAgICAucGlwZShtaW1lVHlwZVN0cmVhbSgnYXBwbGljYXRpb24veC1uZGpzb24nKS5wYXJzZXIoKSkKY29uc3Qgb3V0cHV0MiA9IGF3YWl0IHNvYXMuZXhlY3V0ZSgncG9zdENvb3JkcycsIGlucHV0KQpvdXRwdXQyLnBpcGUobWltZVR5cGVTdHJlYW0oJ2FwcGxpY2F0aW9uL3gtbmRqc29uJykuc2VyaWFsaXplcigpKS5waXBlKHByb2Nlc3Muc3Rkb3V0KQouLi4KYGBgCiMjIERvY3VtZW50YXRpb24KCiMjIyBDb25zdHJ1Y3RvcgpTZWUgdGhlIFtPcGVuQVBJIDMuMCBzcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMC5tZCkgZm9yIHRoZSBjb3JyZWN0IGZvcm1hdCBvZiB0aGUgQVBJIGRlc2NyaXB0aW9uLgoKYGBgamF2YXNjcmlwdAppbXBvcnQgc29hc0xvYWRlciBmcm9tICdzb2FzJwppbXBvcnQgYXBpRG9jIGZyb20gJ3BhdGgtdG8vbXktYXBpLmpzb24nCgovLyBhcGlEb2MgaXMgYSBKU09OIGRlc2NyaWJpbmcgYW4gQVBJIHdpdGggdGhlIE9wZW5BcGkgMy4wIHNwZWNpZmljYXRpb24KLy8gVG8ga2VlcCB0aGlzIGxpYnJhcnkgbGlnaHQsIHNjaGVtYSB2YWxpZGF0aW9uIGlzIG5vdCBoYW5kbGVkCmNvbnN0IHNvYXMgPSBzb2FzTG9hZGVyKGFwaURvYykKYGBgCgojIyMgZW5kUG9pbnRzKCkKTGlzdCBBUEkgZW5kcG9pbnRzLiBSZXR1cm4gYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyA6CiAqICoqbWV0aG9kKiogOiB0aGUgSFRUUCBtZXRob2QKICogKipwYXRoKiogOiB0aGUgcGF0aCB0aGlzIGVuZHBvaW50IHJlZmVycyB0bwogKiAqKm9wZXJhdGlvbioqIDogdGhlIG9wZXJhdGlvbiBkZXNjcmliZWQgYnkgdGhpcyBlbmRwb2ludC4gU2VlIHRoZSBbT3BlcmF0aW9uIE9iamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQjb3BlcmF0aW9uT2JqZWN0KQoKIyMjIGFjdGlvbnMoKQpMaXN0IGFsbCBhY3Rpb25zLiBBbiBhY3Rpb24gaXMgYW4gQVBJIGVuZHBvaW50IHNlbWFudGl6ZWQgd2l0aCBbYW5ub3RhdGlvbnMgZGVzY3JpYmVkIGhlcmVdKGh0dHA6Ly93d3cuaW50ZWxsaWdlbmNlLnR1Yy5nci9+cGV0cmFraXMvcHVibGljYXRpb25zL1NPQVM0LnBkZikuIEl0IGhhcyB0aGUgZm9sbG93aW5ncyBwcm9wZXJ0aWVzIDoKICogKippZCoqIDogdGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjdGlvbgogKiAqKnR5cGUqKiA6IHRoZSB0eXBlIG9mIGFjdGlvbi4gVGhpcyBzaG91bGQgYmUgYSBzdWJ0eXBlIG9mIFtzY2hlbWEub3JnIEFjdGlvbl0oaHR0cDovL3NjaGVtYS5vcmcvQWN0aW9uKSwgb3Igc29tZXRoaW5nIHNpbWlsYXIuCiAqICoqb3BlcmF0aW9uKiogOiBwYXRoIGFuZCBtZXRob2QKICogKippbnB1dCoqIDogYW4gbWFwIG9mIGNvbmNlcHRzID0+IHBhcmFtZXRlcnMgbG9jYXRpb24KICogKippbnB1dENvbGxlY3Rpb24qKiA6IGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgYWN0aW9uIHRha2VzIGEgY29sbGVjdGlvbiBhcyBpbnB1dAogKiAqKmlucHV0Qm9keVR5cGVzKiogOiB0aGUgcG9zc2libGUgbWltZS10eXBlcyBmb3IgdGhlIHJlcXVlc3QgYm9keSwgaWYgdGhlcmUgaXMgb25lCiAqICoqb3V0cHV0KiogOiBhbiBtYXAgb2YgY29uY2VwdHMgPT4gb2JqZWN0IGZpZWxkcwogKiAqKm91dHB1dFNjaGVtYSoqOiBUaGUgSlNPTiBzY2hlbWEgb2Ygb3V0cHV0CiAqICoqb3V0cHV0Q29sbGVjdGlvbioqIDogYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBhY3Rpb24gb3V0cHV0cyBhIGNvbGxlY3Rpb24KICogKipvdXRwdXRCb2R5VHlwZXMqKiA6IHRoZSBwb3NzaWJsZSBtaW1lLXR5cGVzIGZvciB0aGUgcmVzcG9uc2UgYm9keSwgaWYgdGhlcmUgaXMgb25lCiAqICoqc3VtbWFyeSoqIDogdGhlIHN1bW1hcnkgb2YgdGhlIG9wZXJhdGlvbiB0aGlzIGFjdGlvbiByZWZlcnMgdG8KICogKipjYW5Vc2UqKiA6IGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoaXMgbGlicmFyeSBpcyBhYmxlIHRvIHVzZSB0aGUgYWN0aW9uIG9yIG5vdAoKIyMjIGV4ZWN1dGUoYWN0aW9uSWQgWywgaW5wdXQsIHNlcnZlcl0pClJldHVybiBhIHByb21pc2UuIE9uY2UgcmVzb2x2ZWQsIGNhbiBiZSBhbiBvYmplY3Qgb3IgYSBzdHJlYW0gb2Ygb2JqZWN0cyB3aGljaCBhcmUgbWFwcyBvZiBjb25jZXB0cyBhbmQgdGhlaXIgdmFsdWUuCgoqKmFjdGlvbklkKiogaXMgdGhlIGlkIG9mIGFuIGFjdGlvbiBsaXN0ZWQgd2l0aCBgYWN0aW9ucygpYC4gKippbnB1dCoqIGlzIGlzIGEgbWFwIG9mIGNvbmNlcHRzIGFuZCB0aGVpciB2YWx1ZS4gSXQgY2FuIGJlIGEgc3RyZWFtIG9mIG9iamVjdHMgdG9vLiAqKnNlcnZlcioqIGlzIGFuIHVybCB0byBxdWVyeSwgaWYgbm90IHByb3ZpZGVkIGl0IHdpbGwgYmUgcmVzb2x2ZWQgdG8gdGhlIHVybCBvZiB0aGUgZmlyc3QgW1NlcnZlciBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kI3NlcnZlck9iamVjdCkgb2YgdGhlIGBzZXJ2ZXJzYCBwcm9wZXJ0eSBvZiB0aGUgQVBJIGRlc2NyaXB0aW9uLgo= readmeEtag: '"8646eda7d1137d4c3aad05f2796069c510c1636e"' readmeLastModified: Wed, 12 May 2021 11:30:06 GMT repositoryId: 112844830 description: Semantic Open API Specification library created: '2017-12-02T13:37:23Z' updated: '2021-05-12T11:30:18Z' language: JavaScript archived: false stars: 3 watchers: 2 forks: 0 owner: koumoul-dev logo: https://avatars.githubusercontent.com/u/16051219?v=4 license: MIT repoEtag: '"a82d0d1bece3a3dc9718066202396fdfa5d218db04321202543defcb334dcd87"' repoLastModified: Wed, 12 May 2021 11:30:18 GMT foundInMaster: true category: Parsers id: 68d9f6193089b720b24dc37563d11597 - source: openapi3 tags repository: https://github.com/himenon/openapi-typescript-practice v3: true repositoryMetadata: base64Readme: >- IyBAaGltZW5vbi9vcGVuYXBpLXR5cGVzY3JpcHQtcHJhY3RpY2UKCi0gW+ODieOCreODpeODoeODs+ODiCAtIGh0dHBzOi8vaGltZW5vbi5naXRodWIuaW8vb3BlbmFwaS10eXBlc2NyaXB0LXByYWN0aWNlXShodHRwczovL2hpbWVub24uZ2l0aHViLmlvL29wZW5hcGktdHlwZXNjcmlwdC1wcmFjdGljZSkKCiMjIERldmVsb3BtZW50Cgp8IHNjcmlwdHMgICAgICAgICB8IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA6LS0tLS0tLS0tLS0tLS0gfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgYnVpbGQgICAgICAgICAgIHwgYnVpbGQ6Y29kZSwgYnVpbGQ6ZG9jcyDjgpLpoIbmrKHlrp/ooYwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYnVpbGQ6Y29kZSAgICAgIHwgVHlwZVNjcmlwdCDjga7jgrPjg7zjg4njgpLnlJ/miJAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBidWlsZDpkb2NzICAgICAgfCDjg4njgq3jg6Xjg6Hjg7Pjg4jjgpLnlJ/miJAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgY2xlYW4gICAgICAgICAgIHwgYnVpbGQg6Zai6YCj44Gu44OV44Kh44Kk44Or44O744OH44Kj44Os44Kv44OI44Oq44KS5YmK6ZmkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwganNvbjJzY2hlbWEgICAgIHwganNvbiDjgYvjgokgT3BlbkFwaSAzLjAg44GuIHNjaGVtYSDjgpLlkJDjgY3lh7rjgZnjgILlt6jlpKfjgaoganNvbiDjgarjganjgavliKnnlKjjgZnjgovjgajoia/jgYQgICAgIHwKfCBtb2NrOnNlcnZlciAgICAgfCBgeWFybiBydW4gbW9jazpzZXJ2ZXIgbG9jYWxob3N0YOOBqOWun+ihjOOBmeOCi+OBk+OBqOOBpyBBUEkgTW9jayBTZXJ2ZXIg44KS6LW35YuVIHwKfCBwdWJsaXNoOmdocGFnZXMgfCBkb2NzIOOCkiBnaHBhZ2VzIOOBqyBwdWJsaXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCB0cyAgICAgICAgICAgICAgfCB0cy1ub2RlIOOCkuWun+ihjOOBmeOCiyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCiMjIEJ1aWxkIFBpcGVsaW5lCgojIyMgeWFybiBidWlsZDpjb2RlCgohW2J1aWxkOmNvZGVdKC4vYnVpbGQtcGlwZWxpbmUucG5nKQoKIyMjIFJlbGVhc2UKCnJlbGVhc2UgdmVyc2lvbgoKYGBgYmFzaAp5YXJuIHJ1biBsZXJuYSB2ZXJzaW9uIC0teWVzCmBgYAoKIyMgVG9vbHMKCi0gaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPXBoaWxvc293YWZmbGUub3BlbmFwaS1kZXNpZ25lcgotIGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9zd2FnZ2VyYXBpL3N3YWdnZXItdWkvCi0gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHN0b3BsaWdodC9wcmlzbS1jbGkKLSBodHRwczovL2dpdGh1Yi5jb20vc3RvcGxpZ2h0aW8vcHJpc20KCiMjIFJlZmVyZW5jZQoKLSBbVlNDb2RlIOOBp+ODquODleOCoeOCr+OCv+ODquODs+OCsOODu+S/neWuiOOBmeOCiyBPcGVuQVBJIC0gUWlpdGFdKGh0dHBzOi8vcWlpdGEuY29tL3RNaW5hbWkvaXRlbXMvNWIxYTkyMWU4MmI0Yzc5NzljZDEpCi0gW+S/uueahOOAkE9BU+OAkeOBqOOBruWQkeOBjeWQiOOBhOaWuSAo54iG6YCf44GnIE9wZW5BUEkg44Go5Y+L6YGU44Gr44Gq44KN44GGKV0oaHR0cHM6Ly90ZWNoLWJsb2cub3B0aW0uY28uanAvZW50cnkvMjAyMC8wNC8xMy8xMDAwMDApCgojIyBMSUNFTlNFCgpNSVQK readmeEtag: '"856dfa0c3657e95f8346bd85ef85713f531203e2"' readmeLastModified: Sun, 31 Jan 2021 08:30:24 GMT repositoryId: 305648117 description: OpenAPIを利用したAPI作成と、開発、リリースフローまでの仕組みづくりの練習 created: '2020-10-20T08:56:12Z' updated: '2022-09-14T18:32:19Z' language: HTML archived: false stars: 3 watchers: 0 forks: 0 owner: Himenon logo: https://avatars.githubusercontent.com/u/6715229?v=4 license: MIT repoEtag: '"12fdff1941d3dcd3268e80ff0b6168325a54880cdd69114371e2169abc255c74"' repoLastModified: Wed, 14 Sep 2022 18:32:19 GMT foundInMaster: true category: SDK id: d86d9ef52052c9adffcee267a44e13f2 - source: openapi3 tags repository: https://github.com/nitianabhigyan/smitch-api v3: true id: 1b3e47b8baebff63549eb3f48deb1b78 repositoryMetadata: base64Readme: >- IyBTbWl0Y2gtQVBJCkEgKipwb3N0bWFuIGNvbGxlY3Rpb24qKiBhbmQgKipvcGVuYXBpIHNwZWMuKiogdG8gY29udHJvbCBzbWl0Y2ggc21hcnQgZGV2aWNlcyBpbmNsdWRpbmcgbGlnaHRzIGFuZCBzd2l0Y2hlcy4KCk9mZmljYWwgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFNtaXRjaCBTbWFydCBhcHAgY29udHJvbDogW2h0dHBzOi8vZG9jcy5kZXZlbG9wZXIubXlzbWl0Y2guY29tXShodHRwczovL2RvY3MuZGV2ZWxvcGVyLm15c21pdGNoLmNvbSkuIDxicj4KT2ZmaWNhbCAiR2V0IHN0YXJ0ZWQiIGd1aWRlOiBbR2V0LVN0YXJ0ZWRdKGh0dHBzOi8vZG9jcy5kZXZlbG9wZXIubXlzbWl0Y2guY29tL2RldmVsb3Blci1wb3J0YWwvZ2V0LXN0YXJ0ZWQpLgoKIyMgSG93IHRvIHVzZSB0aGUgcG9zdG1hbiBjb2xsZWN0aW9uCiMjIyBQcmVyZXF1aXNpdGVzClBsZWFzZSBmYW1pbGlhcmlzZSB5b3Vyc2VsZiB3aXRoIHRoZSBiYXNpYyBwcmVyZXF1aXNpdGUgYXQ6IFtQcmVyZXF1aXNpdGVzXShodHRwczovL2RvY3MuZGV2ZWxvcGVyLm15c21pdGNoLmNvbS8jMC4tcHJlcmVxdWlzaXRlcykKLSBSZWdpc3RlciBhIGRldmVsb3BlciBhY2NvdW50IGF0OiBbRGV2ZWxvcGVyLVBvcnRhbF0oaHR0cHM6Ly9kZXZlbG9wZXIubXlzbWl0Y2guY29tKSBieSBzZWxlY3RpbmcgU2lnbiBVcCAoU2lnbiBJbiBpZiB5b3UgYWxyZWFkeSBjcmVhdGVkIGFuIGFjY291bnQpCi0gQWRkIGFuIEFwcCBpbiB5b3VyIGRldmVsb3BlciBhY2NvdW50IGFuZCBjcmVhdGUgYSAiVEVTVCIgQVBJIEtFWS4gTW9yZSBkZXRhaWxzOiBbYXBpLWtleXNdKGh0dHBzOi8vZG9jcy5kZXZlbG9wZXIubXlzbWl0Y2guY29tL2FwcC9hcGkta2V5cykuIFNhdmUgdGhpcyBhcGkta2V5IHNvbWV3aGVyZSBzYWZlLgotIExpbmsgYSAidGVzdGVyIiB0byB5b3VyIGFwcGxpY2F0aW9uLiBNb3JlIGRldGFpbHM6IFt1c2VyLXRlc3Rlcl0oaHR0cHM6Ly9kb2NzLmRldmVsb3Blci5teXNtaXRjaC5jb20vdXNlcnMvdXNlci10ZXN0ZXIpLCBtYWtlIHN1cmUgdGhlIHRlc3RlcidzIGFjY291bnQgdXNlZCBoZXJlIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgeW91IHVzZSB0byBzaWduIGluIHRoZSBTbWl0Y2ggbW9iaWxlIGFwcC4KCiMjIyBVc2luZyB0aGUgY29sbGVjdGlvbi4KCjEuIExvYWQgdGhlIGNvbGxlY3Rpb24gbG9jYXRlZCBhdCBbY29sbGVjdGlvbl0oLi9TbWl0Y2gmIzMyO1Bvc3RtYW4mIzMyO0FQSSYjMzI7Y29sbGVjdGlvbi5wb3N0bWFuX2NvbGxlY3Rpb24uanNvbikgaW4geW91ciBsb2NhbC93ZWIgaW5zdGFuY2Ugb2YgUG9zdG1hbi4KMi4gT3BlbiB0aGUgIlNtaXRjaCBQb3N0bWFuIEFQSSBjb2xsZWN0aW9uIiwgc2VsZWN0IHRoZSB2YXJpYWJsZXMgdGFiIGFuZCBzZXQgdGhlICJhcGlfa2V5IiB2YXJpYWJsZSdzIHZhbHVlIHRvIHlvdXIgYXBpX2tleSBvYnRhaW5lZCBmcm9tLgozLiBTZWxlY3QgdGhlICJFdmVyeXRoaW5nX2lzX3ZhbGlkIiByZXF1ZXN0IGFuZCBzZW5kIGl0LiBJZiBldmVyeXRoaW5nIHdhcyBkb25lIGNvcnJlY3RseSwgdGhpcyBzaG91bGQgcmV0dXJuIGEgICJzdGF0dXMiOiAic3VjY2VzcyIuIElmIG5vdCwgcGxlYXNlIHZhbGlkYXRlIHlvdXIgc3RlcHMgYWdhaW4uCjQuIFNlbGVjdCB0aGUgImxpc3Rfb2ZfdXNlcnMiIHJlcXVlc3QgYW5kIHNlbmQgaXQuIE9idGFpbiB0aGUgdXNlcl9pZCB2YXJpYWJsZSBvZiB0aGUgZGVzaXJlZCB1c2VyIChtYWtlIHN1cmUgdGhlIHNhaWQgYWNjb3VudCBpcyBhZGRlZCBhcyB0ZXN0ZXIgYXMgcGVyIGFib3ZlKSwgYWRkIHRoaXMga2V5J3MgdmFsdWUgdG8geW91ciBjb2xsZWN0aW9uJ3MgdmFyaWFibGUgInVzZXJfaWQiIHZhcmlhYmxlJ3MgdmFsdWUuCjUuIFRvIGNvbnRyb2wgYSBkZXZpY2UsIHlvdSBmaXJzdCBuZWVkIHRvIGlkZW50aWZ5IGl0J3MgImRldmljZV9pZCIgYW5kIGFkZCBpdCBpbiBjb2xsZWN0aW9uJ3MgdmFyaWFibGVzLiBUbyBvYnRhaW4gYSBsaXN0IG9mIGFsbCBkZXZpY2VzIGFkZGVkIGluIHVzZXIncyBhY2NvdW50IHBsZWFzZSB1c2UgdGhlICJnZXRfdXNlcl9kZXRhaWxzIiByZXF1ZXN0LgoKIyMgVG8gQmUgRG9uZQogLSB+fkNoZWNrIGZlYXNpYmlsaXR5IG9mIGNvbnZlcnRpbmcgdGhpcyB0byBvcGVuYXBpLn5+ICoqUmVzdWx0Kio6IERvYWJsZS4KIC0gfn5Db252ZXJ0IHRoaXMgdG8gT3BlbkFQSSB2ZXJzaW9uIDMgc3BlYy5+fgogLSBVc2Ugb3BlbmFwaSBhbmQgc3dhZ2dlci11aSB0byBob3N0IHRoaXMgaW4gdGhlIGZvcm0gb2YgYSBnaXRodWIgcGFnZS4KIC0gQ3VzdG9taXNlIHRoZSBvcGVuYXBpLnlhbWwgc3BlYyB0byBiZXR0ZXIgc3VpdGUgdGhlIG5lZWRzIG9mIHRoZSB2ZXJzaW9uLgogLSBEbyB0ZXN0IHJ1bnMKIC0gQWRkIGRvY3VtZW50YXRpb24gZm9yIHVzaW5nIG9wZW5hcGkueWFtbCB0byBjcmVhdGUgU0RLcywgYW5kIGZpbmFsbHkgYmUgYXQgcGVhY2Ug4p2k77iPCg== readmeEtag: '"096c1863cbf45dae8a1e3dc591aa5ce56d5c2bba"' readmeLastModified: Wed, 17 Aug 2022 07:40:12 GMT repositoryId: 507033057 description: >- A postman collection to control switch smart devices. Offical documentation for the Smitch Smart app control: https://docs.developer.mysmitch.com created: '2022-06-24T14:06:08Z' updated: '2025-08-21T12:31:35Z' language: null archived: false stars: 4 watchers: 1 forks: 1 owner: nitianabhigyan logo: https://avatars.githubusercontent.com/u/51279790?v=4 license: MIT repoEtag: '"b1337c7912c862115258eec3e1469624c8a5244d63b1000913531f137ed70b6e"' repoLastModified: Thu, 21 Aug 2025 12:31:35 GMT category: Testing foundInMaster: true - source: openapi3 tags repository: https://github.com/egodigital/swagger-ui-cli v3: true repositoryMetadata: base64Readme: >- IyBzd2FnZ2VyLXVpLWNsaQoKIyMgUmVwb3NpdG9yeSBoYXMgbW92ZWQgdG8gW2Vnb21vYmlsZS9zd2FnZ2VyLXVpLWNsaV0oaHR0cHM6Ly9naXRodWIuY29tL2Vnb21vYmlsZS9zd2FnZ2VyLXVpLWNsaSkK readmeEtag: '"991fecae6fe1e2df3c8dc26fe87c0243695121a8"' readmeLastModified: Mon, 31 May 2021 11:54:09 GMT repositoryId: 291583353 description: A standalone CLI application, serving Swagger UIs via a HTTP server. created: '2020-08-31T01:17:43Z' updated: '2023-01-28T08:35:06Z' language: TypeScript archived: true stars: 3 watchers: 1 forks: 2 owner: egodigital logo: https://avatars.githubusercontent.com/u/41436054?v=4 license: GPL-3.0 repoEtag: '"8bb23d737208cb4e35d45ac7069f6864e354b13b5fd43f00005dd82f5e97c2b0"' repoLastModified: Sat, 28 Jan 2023 08:35:06 GMT foundInMaster: true category: - Low-level Tooling - Code Generators id: 1db9e8eaf18d0783bce830fbe3ccb1db - source: openapi3 tags repository: https://github.com/wtask-go/mixpanel v3: true repositoryMetadata: base64Readme: >- IyBNaXhwYW5lbAoKTWl4cGFuZWwgQVBJIGNsaWVudCBmb3IgR28KClshW0dvIFJlZmVyZW5jZV0oaHR0cHM6Ly9wa2cuZ28uZGV2L2JhZGdlL2dpdGh1Yi5jb20vd3Rhc2stZ28vbWl4cGFuZWwuc3ZnKV0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vd3Rhc2stZ28vbWl4cGFuZWwpCgojIyBSZXF1aXJlbWVudHMKCiogR28gMS4xNiBhbmQgYWJvdmUuIFRoaXMgbW9kdWxlIHVzZXMgYGVtYmVkYCBwYWNrYWdlIGludHJvZHVjZWQgZm9yIEdvIDEuMTYKCiMjIERlcGVuZGVuY2llcwoKKiBbZ2l0aHViLmNvbS9zYW50aG9zaC10ZWt1cmkvanNvbnNjaGVtYV0oaHR0cHM6Ly9naXRodWIuY29tL3NhbnRob3NoLXRla3VyaS9qc29uc2NoZW1hKSAtLSBmb3IgSW5nZXN0aW9uIEFQSSBFdmVudCB2YWxpZGF0aW9uCiogW2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpKSAtLSBmb3IgcmVxdWVzdHMgdmFsaWRhdGlvbiBhZ2FpbnN0IE9wZW5BUEkgdjMgc3BlY2lmaWNhdGlvbgoKIyMgSW5nZXN0aW9uIEFQSQoKQ2hlY2sgb2ZmaWNpYWwgZG9jcyBmb3IgW0luZ2VzdGlvbiBBUEldKGh0dHBzOi8vZGV2ZWxvcGVyLm1peHBhbmVsLmNvbS9yZWZlcmVuY2UvaW5nZXN0aW9uLWFwaSkgZGV0YWlscy4KCk91ciBjbGllbnQgb2ZmZXJzIHRvcC1sZXZlbCBpbnRlcmZhY2UgdG8gaW50ZXJhY3Qgd2l0aCBNaXhwYW5lbCBlbmRwb2ludHMuCldlIHVzZSBzZW1pLW9mZmljaWFsIGpzb24gc2NoZW1hIG9mIEV2ZW50IG9iamVjdCBpbiB0ZXN0cyB0byB2YWxpZGF0ZSBwcmVwYXJlZCBldmVudCBkYXRhLiBDaGVjayBbdGhpcyBwYWdlIGluIGRvY3NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1peHBhbmVsLmNvbS9kb2NzL2RhdGEtbW9kZWwjYW5hdG9teS1vZi1hbi1ldmVudCkgZm9yIHRoZSBbc2NoZW1hIGxpbmtdKGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2pid3ltZS9mMDFmMGE2ZjZmOGI4ZGIyNDcyY2I4NzcxZjdhNTA1YykuCgpBbHNvIHdlIG1hZGUgb3duIFtPcGVuQVBJIHNjaGVtYV0oLi9pbnRlcm5hbC9hc3NldHMvb3BlbmFwaS9pbmdlc3Rpb24ub3BlbmFwaS55bWwpIHRvIGRlc2NyaWJlIGV4dGVybmFsIE1peHBhbmVsIEluZ2VzdGlvbiBBUEkuIFRoZSBtb2R1bGUgdXNlcyBtZW50aW9uZWQgc2NoZW1hIHRvIHZhbGlkYXRlIHByZXBhcmVkIEhUVFAgcmVxdWVzdHMgaW4gdGVzdHMgb25seS4KCiMjIyBFdmVudHMKCiogVHJhY2sgRXZlbnQ6IGBpbmdlc3Rpb24uQ2xpZW50LlRyYWNrKClgCiogVHJhY2sgRXZlbnQgd2l0aCBEZWR1cGxpY2F0aW9uOiBgaW5nZXN0aW9uLkNsaWVudC5UcmFja0RlZHVwbGljYXRlKClgCiogVHJhY2sgTXVsdGlwbGUgRXZlbnRzOiBgaW5nZXN0aW9uLkNsaWVudC5UcmFja0JhdGNoKClgCgojIyMgVXNlciBQcm9maWxlcwoKKiBTZXQgUHJvcGVydHksIFNldCBQcm9wZXJ0eSBPbmNlLCBJbmNyZW1lbnQgTnVtZXJpY2FsIFByb3BlcnR5LCBBcHBlbmQgdG8gTGlzdCBQcm9wZXJ0eSwgUmVtb3ZlIGZyb20gTGlzdCBQcm9wZXJ0eSwgRGVsZXRlIFByb3BlcnR5OiBgaW5nZXN0aW9uLkNsaWVudC5FbmdhZ2UoKWAKKiBVcGRhdGUgTXVsdGlwbGUgUHJvZmlsZXM6IGBpbmdlc3Rpb24uQ2xpZW50LkVuZ2FnZUJhdGNoKClgCg== readmeEtag: '"5263abf375ecbbaee557919fecd74e2423526ee7"' readmeLastModified: Wed, 22 Jun 2022 21:05:41 GMT repositoryId: 354055700 description: Mixpanel API client for Go created: '2021-04-02T15:15:49Z' updated: '2023-05-06T23:18:03Z' language: Go archived: false stars: 3 watchers: 0 forks: 1 owner: wtask-go logo: https://avatars.githubusercontent.com/u/46242331?v=4 license: MIT repoEtag: '"6aea68d9fa9d906381d410a67617b2412b05b7a2703c9ce1d61e948dbbfc6cc4"' repoLastModified: Sat, 06 May 2023 23:18:03 GMT foundInMaster: true category: Parsers id: 61cf00fb32df2c743392e5a46f5ad8cf - source: openapi3 tags repository: https://github.com/estin/oaph v3: true id: e60b95b16fb191f591862c4061fc8a26 repositoryMetadata: base64Readme: >- IyBPQVBICgpIZWxwcyB0byBzdWJ0aXR1YXRlIHF1ZXJ5IHBhcmFtcyBhbmQgc2NoZW1hIGRlZmluaXRpb25zIHRvIG9wZW5hcGkzL2FzeW5jYXBpIHlhbWwuCgpUaGlzIGlzIGZlYXR1cmUtbGVzcyBzaW1wbGUgY3JhdGUgd2l0aCBubyBhbWJpdGlvbnMgdG8gc3VwcG9ydCB3aG9sZSBvcGVuYXBpMy9hc3luY2FwaSBzcGVjcyBhbmQgY292ZXIgYWxsIGNhc2VzIChhdCBsZWFzdCBjb3ZlciBteSBwZXJzb25hbCB1c2UtY2FzZXMpLgoKYGBgcnVzdAp1c2Ugc2VyZGU6OntTZXJpYWxpemUsIERlc2VyaWFsaXplfTsKdXNlIG9hcGg6OntPcGVuQXBpUGxhY2VIb2xkZXIsIHNjaGVtYXJzOjp7c2VsZiwgSnNvblNjaGVtYX19OwoKCiNbYWxsb3coZGVhZF9jb2RlKV0KI1tkZXJpdmUoRGVzZXJpYWxpemUsIEpzb25TY2hlbWEpXQpzdHJ1Y3QgU2VhcmNoUXVlcnkgewogICAgLy8vIHNvbWUgZGVzY3JpcHRpb24gZm9yIHRoaXMgZmxhZyAoc2VlIGh0dHBzOi8vZ3JhaGFtLmNvb2wvc2NoZW1hcnMvZXhhbXBsZXMvNi1kb2NfY29tbWVudHMvKQogICAgZmxhZzogYm9vbCwKfQoKI1thbGxvdyhkZWFkX2NvZGUpXQojW2Rlcml2ZShEZXNlcmlhbGl6ZSwgSnNvblNjaGVtYSldCnN0cnVjdCBTZWFyY2hSZXNwb25zZSB7CiAgICBzdWNjZXNzOiBib29sLAogICAgY291bnQ6IHVzaXplLAogICAgaXRlbXM6IFZlYzxJdGVtPiwKfQoKI1thbGxvdyhkZWFkX2NvZGUpXQojW2Rlcml2ZShEZXNlcmlhbGl6ZSwgSnNvblNjaGVtYSldCnN0cnVjdCBJdGVtIHsKICAgIGlkOiB1c2l6ZSwKICAgIHZhbHVlOiBTdHJpbmcsCn0KCmZuIG1haW4oKSAtPiBSZXN1bHQ8KCksIEJveDxkeW4gc3RkOjplcnJvcjo6RXJyb3I+PiB7CiAgICBsZXQgb3BlbmFwaTNfeWFtbCA9IE9wZW5BcGlQbGFjZUhvbGRlcjo6bmV3KCkKICAgICAgICAucXVlcnlfcGFyYW1zOjo8U2VhcmNoUXVlcnk+KCJTZWFyY2hRdWVyeSIpPwogICAgICAgIC5zY2hlbWE6OjxTZWFyY2hSZXNwb25zZT4oIlNlYXJjaFJlc3BvbnNlIik/CiAgICAgICAgLnJlbmRlcl90byhyIyIKb3BlbmFwaTogMy4wLjAKaW5mbzoKICB0aXRsZTogb2FwaCBleGFtcGxlCiAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgL3NlYXJjaDoKICAgIGdldDoKICAgICAgdGFnczoKICAgICAgLSBkZW1vCiAgICAgIGRlc2NyaXB0aW9uOiBkZW1vIGFwaQogICAgICBwYXJhbWV0ZXJzOgogICAgICAgIHt7U2VhcmNoUXVlcnl9fQogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMSc6CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHt7U2VhcmNoUmVzcG9uc2V9fQpkZWZpbml0aW9uczoKICB7e29hcGg6OmRlZmluaXRpb25zfX0KIiMpPzsKCiAgICBwcmludGxuISgie30iLCBvcGVuYXBpM195YW1sKTsKICAgIE9rKCgpKQp9CmBgYAoKQW5kIG91dHB1dCB3b3VsZCBiZQoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogIHRpdGxlOiBvYXBoIGV4YW1wbGUKICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAvc2VhcmNoOgogICAgZ2V0OgogICAgICB0YWdzOgogICAgICAtIGRlbW8KICAgICAgZGVzY3JpcHRpb246IGRlbW8gYXBpCiAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgLSBpbjogcXVlcnkKICAgICAgICAgIG5hbWU6IGZsYWcKICAgICAgICAgIGRlc2NyaXB0aW9uOiBzb21lIGRlc2NyaXB0aW9uIGZvciB0aGlzIGZsYWcgKHNlZSBodHRwczovL2dyYWhhbS5jb29sL3NjaGVtYXJzL2V4YW1wbGVzLzYtZG9jX2NvbW1lbnRzLykKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHR5cGU6IGJvb2xlYW4KICAgICAgcmVzcG9uc2VzOgogICAgICAgICcyMDEnOgogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICB0aXRsZTogU2VhcmNoUmVzcG9uc2UKICAgICAgICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgICAgICAgcmVxdWlyZWQ6CiAgICAgICAgICAgICAgICAgIC0gY291bnQKICAgICAgICAgICAgICAgICAgLSBpdGVtcwogICAgICAgICAgICAgICAgICAtIHN1Y2Nlc3MKICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6CiAgICAgICAgICAgICAgICAgICAgdHlwZTogYm9vbGVhbgogICAgICAgICAgICAgICAgICBjb3VudDoKICAgICAgICAgICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiB1aW50CiAgICAgICAgICAgICAgICAgICAgbWluaW11bTogMC4wCiAgICAgICAgICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICAgICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgICAgICAgICAgICAkcmVmOiAiIy9kZWZpbml0aW9ucy9JdGVtIgpkZWZpbml0aW9uczoKICBJdGVtOgogICAgdHlwZTogb2JqZWN0CiAgICByZXF1aXJlZDoKICAgICAgLSBpZAogICAgICAtIHZhbHVlCiAgICBwcm9wZXJ0aWVzOgogICAgICBpZDoKICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgZm9ybWF0OiB1aW50CiAgICAgICAgbWluaW11bTogMC4wCiAgICAgIHZhbHVlOgogICAgICAgIHR5cGU6IHN0cmluZwpgYGAKCkNoZWNrIFtleGFtcGxlXShleGFtcGxlcy9zaW1wbGUvc3JjL21haW4ucnMpIHRvIHNlcnZlIGRvY3Mgb24gW250ZXhdKGh0dHBzOi8vZ2l0aHViLmNvbS9udGV4LXJzL250ZXgpIHN0YWNrLgoKCiMjIFRoYW5rcyB0bwoKIC0gW3NlcmRlXShodHRwczovL2dpdGh1Yi5jb20vc2VyZGUtcnMvc2VyZGUpIGFuZCBidWRkaWVzIGNyYXRlcwogLSBbc2NoZW1hcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9HUkVzYXUvc2NoZW1hcnMpCgojIyBMaWNlbnNlCgpUaGlzIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIKCiogTUlUIGxpY2Vuc2UgKFtMSUNFTlNFXShMSUNFTlNFKSBvciBbaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVF0oaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkpCg== readmeEtag: '"d624e8ba17712a9b6c265bafb9636c2b84cfaee7"' readmeLastModified: Fri, 19 Apr 2024 17:13:45 GMT repositoryId: 372291486 description: >- Helps to subtituate query params and schema definitions to openapi3/asyncapi yaml. created: '2021-05-30T18:47:04Z' updated: '2024-04-19T17:15:31Z' language: Rust archived: false stars: 3 watchers: 1 forks: 0 owner: estin logo: https://avatars.githubusercontent.com/u/520814?v=4 license: MIT repoEtag: '"90fceb169cb7a403f1b4f1bc484496b03ff744826354fa61cff056b5e1e601d4"' repoLastModified: Fri, 19 Apr 2024 17:15:31 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/goodforgod/openapi-resources v3: true id: fe672ce8b2c7837fb898ffc1fc3de8f6 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFJlc291cmNlcwoKQ29sbGVjdGlvbiBvZiBzb21lIE9wZW5BUEkgcmVsYXRlZCByZXNvdXJjZXMuCgpGb3IgU3dhZ2dlciBVSSBEYXJrIFRoZW1lIHRoYW5rcyB0byBbUm9tYW5zIFBva3JvdnNraXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9BbW9lbnVzL1N3YWdnZXJEYXJrKQ== readmeEtag: '"6ec2308403ce20e5643a970a542763cc050565ed"' readmeLastModified: Sun, 26 Feb 2023 09:46:28 GMT repositoryId: 439724448 description: 📦 OpenAPI Resources created: '2021-12-18T22:07:59Z' updated: '2024-06-05T00:27:56Z' language: CSS archived: false stars: 3 watchers: 1 forks: 1 owner: GoodforGod logo: https://avatars.githubusercontent.com/u/9437175?v=4 repoEtag: '"8d779ee9fd47e2489060d92066ec1c417edc5bde60c64cd97d7c5dce66d81396"' repoLastModified: Wed, 05 Jun 2024 00:27:56 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/namsor/namsor-java-sdk2 v3: true repositoryMetadata: base64Readme: >- IyBuYW1zb3Itc2RrMgoKTmFtU29yIEFQSSB2MgotIEFQSSB2ZXJzaW9uOiAyLjAuMzAKICAtIEJ1aWxkIGRhdGU6IDIwMjQtMDQtMTFUMTA6NTY6NDcuNTE5NjI1KzAyOjAwW0V1cm9wZS9CZXJsaW5dCgpOYW1Tb3IgQVBJIHYyIDogZW5wb2ludHMgdG8gcHJvY2VzcyBwZXJzb25hbCBuYW1lcyAoZ2VuZGVyLCBjdWx0dXJhbCBvcmlnaW4gb3IgZXRobmljaXR5KSBpbiBhbGwgYWxwaGFiZXRzIG9yIGxhbmd1YWdlcy4gQnkgZGVmYXVsdCwgZW5wb2ludHMgdXNlIDEgdW5pdCBwZXIgbmFtZSAoZXguIEdlbmRlciksIGJ1dCBFdGhuaWNpdHkgY2xhc3NpZmljYXRpb24gdXNlcyAxMCB0byAyMCB1bml0cyBwZXIgbmFtZSBkZXBlbmRpbmcgb24gdGF4b25vbXkuIFVzZSBHRVQgbWV0aG9kcyBmb3Igc21hbGwgdGVzdHMsIGJ1dCBwcmVmZXIgUE9TVCBtZXRob2RzIGZvciBoaWdoZXIgdGhyb3VnaHB1dCAoYmF0Y2ggcHJvY2Vzc2luZyBvZiB1cCB0byAxMDAgbmFtZXMgYXQgYSB0aW1lKS4gTmVlZCBzb21ldGhpbmcgeW91IGNhbid0IGZpbmQgaGVyZT8gV2UgaGF2ZSBtYW55IG1vcmUgZmVhdHVyZXMgY29taW5nIHNvb24uIExldCB1cyBrbm93LCB3ZSdsbCBkbyBvdXIgYmVzdCB0byBhZGQgaXQhIAoKICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpc2l0IFtodHRwOi8vd3d3Lm5hbXNvci5jb20vXShodHRwOi8vd3d3Lm5hbXNvci5jb20vKQoKKkF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkqCgoKIyMgUmVxdWlyZW1lbnRzCgpCdWlsZGluZyB0aGUgQVBJIGNsaWVudCBsaWJyYXJ5IHJlcXVpcmVzOgoxLiBKYXZhIDEuNysKMi4gTWF2ZW4vR3JhZGxlCgojIyBJbnN0YWxsYXRpb24KClRvIGluc3RhbGwgdGhlIEFQSSBjbGllbnQgbGlicmFyeSB0byB5b3VyIGxvY2FsIE1hdmVuIHJlcG9zaXRvcnksIHNpbXBseSBleGVjdXRlOgoKYGBgc2hlbGwKbXZuIGNsZWFuIGluc3RhbGwKYGBgCgpUbyBkZXBsb3kgaXQgdG8gYSByZW1vdGUgTWF2ZW4gcmVwb3NpdG9yeSBpbnN0ZWFkLCBjb25maWd1cmUgdGhlIHNldHRpbmdzIG9mIHRoZSByZXBvc2l0b3J5IGFuZCBleGVjdXRlOgoKYGBgc2hlbGwKbXZuIGNsZWFuIGRlcGxveQpgYGAKClJlZmVyIHRvIHRoZSBbT1NTUkggR3VpZGVdKGh0dHA6Ly9jZW50cmFsLnNvbmF0eXBlLm9yZy9wYWdlcy9vc3NyaC1ndWlkZS5odG1sKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiMjIyBNYXZlbiB1c2VycwoKQWRkIHRoaXMgZGVwZW5kZW5jeSB0byB5b3VyIHByb2plY3QncyBQT006CgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgPGdyb3VwSWQ+Y29tLm5hbXNvcjwvZ3JvdXBJZD4KICA8YXJ0aWZhY3RJZD5uYW1zb3Itc2RrMjwvYXJ0aWZhY3RJZD4KICA8dmVyc2lvbj4yLjAuMzA8L3ZlcnNpb24+CiAgPHNjb3BlPmNvbXBpbGU8L3Njb3BlPgo8L2RlcGVuZGVuY3k+CmBgYAoKIyMjIEdyYWRsZSB1c2VycwoKQWRkIHRoaXMgZGVwZW5kZW5jeSB0byB5b3VyIHByb2plY3QncyBidWlsZCBmaWxlOgoKYGBgZ3Jvb3Z5CmNvbXBpbGUgImNvbS5uYW1zb3I6bmFtc29yLXNkazI6Mi4wLjMwIgpgYGAKCiMjIyBPdGhlcnMKCkF0IGZpcnN0IGdlbmVyYXRlIHRoZSBKQVIgYnkgZXhlY3V0aW5nOgoKYGBgc2hlbGwKbXZuIGNsZWFuIHBhY2thZ2UKYGBgCgpUaGVuIG1hbnVhbGx5IGluc3RhbGwgdGhlIGZvbGxvd2luZyBKQVJzOgoKKiBgdGFyZ2V0L25hbXNvci1zZGsyLTIuMC4zMC5qYXJgCiogYHRhcmdldC9saWIvKi5qYXJgCgojIyBHZXR0aW5nIFN0YXJ0ZWQKClBsZWFzZSBmb2xsb3cgdGhlIFtpbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pIGluc3RydWN0aW9uIGFuZCBleGVjdXRlIHRoZSBmb2xsb3dpbmcgSmF2YSBjb2RlOgoKYGBgamF2YQoKaW1wb3J0IGNvbS5uYW1zb3Iuc2RrMi5pbnZva2UuKjsKaW1wb3J0IGNvbS5uYW1zb3Iuc2RrMi5pbnZva2UuYXV0aC4qOwppbXBvcnQgY29tLm5hbXNvci5zZGsyLm1vZGVsLio7CmltcG9ydCBjb20ubmFtc29yLnNkazIuYXBpLkFkbWluQXBpOwoKaW1wb3J0IGphdmEuaW8uRmlsZTsKaW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIEFkbWluQXBpRXhhbXBsZSB7CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIEFwaUNsaWVudCBkZWZhdWx0Q2xpZW50ID0gQ29uZmlndXJhdGlvbi5nZXREZWZhdWx0QXBpQ2xpZW50KCk7CiAgICAgICAgCiAgICAgICAgLy8gQ29uZmlndXJlIEFQSSBrZXkgYXV0aG9yaXphdGlvbjogYXBpX2tleQogICAgICAgIEFwaUtleUF1dGggYXBpX2tleSA9IChBcGlLZXlBdXRoKSBkZWZhdWx0Q2xpZW50LmdldEF1dGhlbnRpY2F0aW9uKCJhcGlfa2V5Iik7CiAgICAgICAgYXBpX2tleS5zZXRBcGlLZXkoIllPVVIgQVBJIEtFWSIpOwogICAgICAgIC8vIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gc2V0IGEgcHJlZml4IGZvciB0aGUgQVBJIGtleSwgZS5nLiAiVG9rZW4iIChkZWZhdWx0cyB0byBudWxsKQogICAgICAgIC8vYXBpX2tleS5zZXRBcGlLZXlQcmVmaXgoIlRva2VuIik7CgogICAgICAgIEFkbWluQXBpIGFwaUluc3RhbmNlID0gbmV3IEFkbWluQXBpKCk7CiAgICAgICAgU3RyaW5nIHNvdXJjZSA9ICJzb3VyY2VfZXhhbXBsZSI7IC8vIFN0cmluZyB8IAogICAgICAgIEJvb2xlYW4gYW5vbnltaXplZCA9IHRydWU7IC8vIEJvb2xlYW4gfCAKICAgICAgICB0cnkgewogICAgICAgICAgICBhcGlJbnN0YW5jZS5hbm9ueW1pemUoc291cmNlLCBhbm9ueW1pemVkKTsKICAgICAgICB9IGNhdGNoIChBcGlFeGNlcHRpb24gZSkgewogICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkV4Y2VwdGlvbiB3aGVuIGNhbGxpbmcgQWRtaW5BcGkjYW5vbnltaXplIik7CiAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CiAgICAgICAgfQogICAgfQp9CgpgYGAKCiMjIERvY3VtZW50YXRpb24gZm9yIEFQSSBFbmRwb2ludHMKCkFsbCBVUklzIGFyZSByZWxhdGl2ZSB0byAqaHR0cHM6Ly92Mi5uYW1zb3IuY29tL05hbVNvckFQSXYyKgoKQ2xhc3MgfCBNZXRob2QgfCBIVFRQIHJlcXVlc3QgfCBEZXNjcmlwdGlvbgotLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0KKkFkbWluQXBpKiB8IFsqKmFub255bWl6ZSoqXShkb2NzL0FkbWluQXBpLm1kI2Fub255bWl6ZSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vYW5vbnltaXplL3tzb3VyY2V9L3thbm9ueW1pemVkfSB8IEFjdGl2YXRlL2RlYWN0aXZhdGUgYW5vbnltaXphdGlvbiBmb3IgYSBzb3VyY2UuCipBZG1pbkFwaSogfCBbKiphbm9ueW1pemUxKipdKGRvY3MvQWRtaW5BcGkubWQjYW5vbnltaXplMSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vYW5vbnltaXplL3tzb3VyY2V9L3thbm9ueW1pemVkfS97dG9rZW59IHwgQWN0aXZhdGUvZGVhY3RpdmF0ZSBhbm9ueW1pemF0aW9uIGZvciBhIHNvdXJjZS4KKkFkbWluQXBpKiB8IFsqKmFwaUtleUluZm8qKl0oZG9jcy9BZG1pbkFwaS5tZCNhcGlLZXlJbmZvKSB8ICoqR0VUKiogL2FwaTIvanNvbi9hcGlLZXlJbmZvIHwgUmVhZCBBUEkgS2V5IGluZm8uCipBZG1pbkFwaSogfCBbKiphcGlTdGF0dXMqKl0oZG9jcy9BZG1pbkFwaS5tZCNhcGlTdGF0dXMpIHwgKipHRVQqKiAvYXBpMi9qc29uL2FwaVN0YXR1cyB8IFByaW50cyB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIGNsYXNzaWZpZXJzLiBBIGNsYXNzaWZpZXIgbmFtZSBpbiBhcGlTdGF0dXMgY29ycmVzcG9uZHMgdG8gYSBzZXJ2aWNlIG5hbWUgaW4gYXBpU2VydmljZXMuCipBZG1pbkFwaSogfCBbKiphcGlVc2FnZSoqXShkb2NzL0FkbWluQXBpLm1kI2FwaVVzYWdlKSB8ICoqR0VUKiogL2FwaTIvanNvbi9hcGlVc2FnZSB8IFByaW50IGN1cnJlbnQgQVBJIHVzYWdlLgoqQWRtaW5BcGkqIHwgWyoqYXBpVXNhZ2VIaXN0b3J5KipdKGRvY3MvQWRtaW5BcGkubWQjYXBpVXNhZ2VIaXN0b3J5KSB8ICoqR0VUKiogL2FwaTIvanNvbi9hcGlVc2FnZUhpc3RvcnkgfCBQcmludCBoaXN0b3JpY2FsIEFQSSB1c2FnZS4KKkFkbWluQXBpKiB8IFsqKmFwaVVzYWdlSGlzdG9yeUFnZ3JlZ2F0ZSoqXShkb2NzL0FkbWluQXBpLm1kI2FwaVVzYWdlSGlzdG9yeUFnZ3JlZ2F0ZSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vYXBpVXNhZ2VIaXN0b3J5QWdncmVnYXRlIHwgUHJpbnQgaGlzdG9yaWNhbCBBUEkgdXNhZ2UgKGluIGFuIGFnZ3JlZ2F0ZWQgdmlldywgYnkgc2VydmljZSwgYnkgZGF5L2hvdXIvbWluKS4KKkFkbWluQXBpKiB8IFsqKmF2YWlsYWJsZVNlcnZpY2VzKipdKGRvY3MvQWRtaW5BcGkubWQjYXZhaWxhYmxlU2VydmljZXMpIHwgKipHRVQqKiAvYXBpMi9qc29uL2FwaVNlcnZpY2VzIHwgTGlzdCBvZiBjbGFzc2lmaWNhdGlvbiBzZXJ2aWNlcyBhbmQgdXNhZ2UgY29zdCBpbiBVbml0cyBwZXIgY2xhc3NpZmljYXRpb24gKGRlZmF1bHQgaXMgMSYjeDNEO09ORSBVbml0KS4gU29tZSBBUEkgZW5kcG9pbnRzIChleC4gQ29ycmlkb3IpIGNvbWJpbmUgbXVsdGlwbGUgY2xhc3NpZmllcnMuCipBZG1pbkFwaSogfCBbKipkaXNhYmxlKipdKGRvY3MvQWRtaW5BcGkubWQjZGlzYWJsZSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vZGlzYWJsZS97c291cmNlfS97ZGlzYWJsZWR9IHwgQWN0aXZhdGUvZGVhY3RpdmF0ZSBhbiBBUEkgS2V5LgoqQWRtaW5BcGkqIHwgWyoqbGVhcm5hYmxlKipdKGRvY3MvQWRtaW5BcGkubWQjbGVhcm5hYmxlKSB8ICoqR0VUKiogL2FwaTIvanNvbi9sZWFybmFibGUve3NvdXJjZX0ve2xlYXJuYWJsZX0ve3Rva2VufSB8IEFjdGl2YXRlL2RlYWN0aXZhdGUgbGVhcm5pbmcgZnJvbSBhIHNvdXJjZS4KKkFkbWluQXBpKiB8IFsqKmxlYXJuYWJsZTEqKl0oZG9jcy9BZG1pbkFwaS5tZCNsZWFybmFibGUxKSB8ICoqR0VUKiogL2FwaTIvanNvbi9sZWFybmFibGUve3NvdXJjZX0ve2xlYXJuYWJsZX0gfCBBY3RpdmF0ZS9kZWFjdGl2YXRlIGxlYXJuaW5nIGZyb20gYSBzb3VyY2UuCipBZG1pbkFwaSogfCBbKipyZWdpb25zKipdKGRvY3MvQWRtaW5BcGkubWQjcmVnaW9ucykgfCAqKkdFVCoqIC9hcGkyL2pzb24vcmVnaW9ucyB8IFByaW50IGJhc2ljIHNvdXJjZSBzdGF0aXN0aWNzLgoqQWRtaW5BcGkqIHwgWyoqc29mdHdhcmVWZXJzaW9uKipdKGRvY3MvQWRtaW5BcGkubWQjc29mdHdhcmVWZXJzaW9uKSB8ICoqR0VUKiogL2FwaTIvanNvbi9zb2Z0d2FyZVZlcnNpb24gfCBHZXQgdGhlIGN1cnJlbnQgc29mdHdhcmUgdmVyc2lvbgoqQWRtaW5BcGkqIHwgWyoqdGF4b25vbXlDbGFzc2VzKipdKGRvY3MvQWRtaW5BcGkubWQjdGF4b25vbXlDbGFzc2VzKSB8ICoqR0VUKiogL2FwaTIvanNvbi90YXhvbm9teUNsYXNzZXMve2NsYXNzaWZpZXJOYW1lfSB8IFByaW50IHRoZSB0YXhvbm9teSBjbGFzc2VzIHZhbGlkIGZvciB0aGUgZ2l2ZW4gY2xhc3NpZmllci4KKkNoaW5lc2VBcGkqIHwgWyoqY2hpbmVzZU5hbWVDYW5kaWRhdGVzKipdKGRvY3MvQ2hpbmVzZUFwaS5tZCNjaGluZXNlTmFtZUNhbmRpZGF0ZXMpIHwgKipHRVQqKiAvYXBpMi9qc29uL2NoaW5lc2VOYW1lQ2FuZGlkYXRlcy97Y2hpbmVzZVN1cm5hbWVMYXRpbn0ve2NoaW5lc2VHaXZlbk5hbWVMYXRpbn0gfCBJZGVudGlmeSBDaGluZXNlIG5hbWUgY2FuZGlkYXRlcywgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIGV4LiBXYW5nIFhpYW9taW5nCipDaGluZXNlQXBpKiB8IFsqKmNoaW5lc2VOYW1lQ2FuZGlkYXRlc0JhdGNoKipdKGRvY3MvQ2hpbmVzZUFwaS5tZCNjaGluZXNlTmFtZUNhbmRpZGF0ZXNCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2NoaW5lc2VOYW1lQ2FuZGlkYXRlc0JhdGNoIHwgSWRlbnRpZnkgQ2hpbmVzZSBuYW1lIGNhbmRpZGF0ZXMsIGJhc2VkIG9uIHRoZSByb21hbml6ZWQgbmFtZSAoZmlyc3ROYW1lICYjeDNEOyBjaGluZXNlR2l2ZW5OYW1lOyBsYXN0TmFtZSYjeDNEO2NoaW5lc2VTdXJuYW1lKSwgZXguIFdhbmcgWGlhb21pbmcKKkNoaW5lc2VBcGkqIHwgWyoqY2hpbmVzZU5hbWVDYW5kaWRhdGVzR2VuZGVyQmF0Y2gqKl0oZG9jcy9DaGluZXNlQXBpLm1kI2NoaW5lc2VOYW1lQ2FuZGlkYXRlc0dlbmRlckJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vY2hpbmVzZU5hbWVDYW5kaWRhdGVzR2VuZGVyQmF0Y2ggfCBJZGVudGlmeSBDaGluZXNlIG5hbWUgY2FuZGlkYXRlcywgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIChmaXJzdE5hbWUgJiN4M0Q7IGNoaW5lc2VHaXZlbk5hbWU7IGxhc3ROYW1lJiN4M0Q7Y2hpbmVzZVN1cm5hbWUpIGV4LiBXYW5nIFhpYW9taW5nLgoqQ2hpbmVzZUFwaSogfCBbKipjaGluZXNlTmFtZUdlbmRlckNhbmRpZGF0ZXMqKl0oZG9jcy9DaGluZXNlQXBpLm1kI2NoaW5lc2VOYW1lR2VuZGVyQ2FuZGlkYXRlcykgfCAqKkdFVCoqIC9hcGkyL2pzb24vY2hpbmVzZU5hbWVHZW5kZXJDYW5kaWRhdGVzL3tjaGluZXNlU3VybmFtZUxhdGlufS97Y2hpbmVzZUdpdmVuTmFtZUxhdGlufS97a25vd25HZW5kZXJ9IHwgSWRlbnRpZnkgQ2hpbmVzZSBuYW1lIGNhbmRpZGF0ZXMsIGJhc2VkIG9uIHRoZSByb21hbml6ZWQgbmFtZSBleC4gV2FuZyBYaWFvbWluZyAtIGhhdmluZyBhIGtub3duIGdlbmRlciAoJiMzOTttYWxlJiMzOTsgb3IgJiMzOTtmZW1hbGUmIzM5OykKKkNoaW5lc2VBcGkqIHwgWyoqY2hpbmVzZU5hbWVNYXRjaCoqXShkb2NzL0NoaW5lc2VBcGkubWQjY2hpbmVzZU5hbWVNYXRjaCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vY2hpbmVzZU5hbWVNYXRjaC97Y2hpbmVzZVN1cm5hbWVMYXRpbn0ve2NoaW5lc2VHaXZlbk5hbWVMYXRpbn0ve2NoaW5lc2VOYW1lfSB8IFJldHVybiBhIHNjb3JlIGZvciBtYXRjaGluZyBDaGluZXNlIG5hbWUgZXguIOeOi+aZk+aYjiB3aXRoIGEgcm9tYW5pemVkIG5hbWUgZXguIFdhbmcgWGlhb21pbmcKKkNoaW5lc2VBcGkqIHwgWyoqY2hpbmVzZU5hbWVNYXRjaEJhdGNoKipdKGRvY3MvQ2hpbmVzZUFwaS5tZCNjaGluZXNlTmFtZU1hdGNoQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9jaGluZXNlTmFtZU1hdGNoQmF0Y2ggfCBJZGVudGlmeSBDaGluZXNlIG5hbWUgY2FuZGlkYXRlcywgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIChmaXJzdE5hbWUgJiN4M0Q7IGNoaW5lc2VHaXZlbk5hbWU7IGxhc3ROYW1lJiN4M0Q7Y2hpbmVzZVN1cm5hbWUpLCBleC4gV2FuZyBYaWFvbWluZwoqQ2hpbmVzZUFwaSogfCBbKipnZW5kZXJDaGluZXNlTmFtZSoqXShkb2NzL0NoaW5lc2VBcGkubWQjZ2VuZGVyQ2hpbmVzZU5hbWUpIHwgKipHRVQqKiAvYXBpMi9qc29uL2dlbmRlckNoaW5lc2VOYW1lL3tjaGluZXNlTmFtZX0gfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiBhIENoaW5lc2UgZnVsbCBuYW1lIGV4LiDnjovmmZPmmI4KKkNoaW5lc2VBcGkqIHwgWyoqZ2VuZGVyQ2hpbmVzZU5hbWVCYXRjaCoqXShkb2NzL0NoaW5lc2VBcGkubWQjZ2VuZGVyQ2hpbmVzZU5hbWVCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2dlbmRlckNoaW5lc2VOYW1lQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiB1cCB0byAxMDAgZnVsbCBuYW1lcyBleC4g546L5pmT5piOCipDaGluZXNlQXBpKiB8IFsqKmdlbmRlckNoaW5lc2VOYW1lUGlueWluKipdKGRvY3MvQ2hpbmVzZUFwaS5tZCNnZW5kZXJDaGluZXNlTmFtZVBpbnlpbikgfCAqKkdFVCoqIC9hcGkyL2pzb24vZ2VuZGVyQ2hpbmVzZU5hbWVQaW55aW4ve2NoaW5lc2VTdXJuYW1lTGF0aW59L3tjaGluZXNlR2l2ZW5OYW1lTGF0aW59IHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBDaGluZXNlIG5hbWUgaW4gTEFUSU4gKFBpbnlpbikuCipDaGluZXNlQXBpKiB8IFsqKmdlbmRlckNoaW5lc2VOYW1lUGlueWluQmF0Y2gqKl0oZG9jcy9DaGluZXNlQXBpLm1kI2dlbmRlckNoaW5lc2VOYW1lUGlueWluQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9nZW5kZXJDaGluZXNlTmFtZVBpbnlpbkJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwIENoaW5lc2UgbmFtZXMgaW4gTEFUSU4gKFBpbnlpbikuCipDaGluZXNlQXBpKiB8IFsqKnBhcnNlQ2hpbmVzZU5hbWUqKl0oZG9jcy9DaGluZXNlQXBpLm1kI3BhcnNlQ2hpbmVzZU5hbWUpIHwgKipHRVQqKiAvYXBpMi9qc29uL3BhcnNlQ2hpbmVzZU5hbWUve2NoaW5lc2VOYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiDnjovmmZPmmI4gLSZndDsg546LKHN1cm5hbWUpIOaZk+aYjihnaXZlbiBuYW1lKQoqQ2hpbmVzZUFwaSogfCBbKipwYXJzZUNoaW5lc2VOYW1lQmF0Y2gqKl0oZG9jcy9DaGluZXNlQXBpLm1kI3BhcnNlQ2hpbmVzZU5hbWVCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3BhcnNlQ2hpbmVzZU5hbWVCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiDnjovmmZPmmI4gLSZndDsg546LKHN1cm5hbWUpIOaZk+aYjihnaXZlbiBuYW1lKS4KKkNoaW5lc2VBcGkqIHwgWyoqcGlueWluQ2hpbmVzZU5hbWUqKl0oZG9jcy9DaGluZXNlQXBpLm1kI3BpbnlpbkNoaW5lc2VOYW1lKSB8ICoqR0VUKiogL2FwaTIvanNvbi9waW55aW5DaGluZXNlTmFtZS97Y2hpbmVzZU5hbWV9IHwgUm9tYW5pemUgdGhlIENoaW5lc2UgbmFtZSB0byBQaW55aW4sIGV4LiDnjovmmZPmmI4gLSZndDsgV2FuZyAoc3VybmFtZSkgWGlhb21pbmcgKGdpdmVuIG5hbWUpCipDaGluZXNlQXBpKiB8IFsqKnBpbnlpbkNoaW5lc2VOYW1lQmF0Y2gqKl0oZG9jcy9DaGluZXNlQXBpLm1kI3BpbnlpbkNoaW5lc2VOYW1lQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9waW55aW5DaGluZXNlTmFtZUJhdGNoIHwgUm9tYW5pemUgYSBsaXN0IG9mIENoaW5lc2UgbmFtZSB0byBQaW55aW4sIGV4LiDnjovmmZPmmI4gLSZndDsgV2FuZyAoc3VybmFtZSkgWGlhb21pbmcgKGdpdmVuIG5hbWUpLgoqR2VuZXJhbEFwaSogfCBbKipuYW1lVHlwZSoqXShkb2NzL0dlbmVyYWxBcGkubWQjbmFtZVR5cGUpIHwgKipHRVQqKiAvYXBpMi9qc29uL25hbWVUeXBlL3twcm9wZXJOb3VufSB8IEluZmVyIHRoZSBsaWtlbHkgdHlwZSBvZiBhIHByb3BlciBub3VuIChwZXJzb25hbCBuYW1lLCBicmFuZCBuYW1lLCBwbGFjZSBuYW1lIGV0Yy4pCipHZW5lcmFsQXBpKiB8IFsqKm5hbWVUeXBlQmF0Y2gqKl0oZG9jcy9HZW5lcmFsQXBpLm1kI25hbWVUeXBlQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9uYW1lVHlwZUJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBjb21tb24gdHlwZSBvZiB1cCB0byAxMDAgcHJvcGVyIG5vdW5zIChwZXJzb25hbCBuYW1lLCBicmFuZCBuYW1lLCBwbGFjZSBuYW1lIGV0Yy4pCipHZW5lcmFsQXBpKiB8IFsqKm5hbWVUeXBlR2VvKipdKGRvY3MvR2VuZXJhbEFwaS5tZCNuYW1lVHlwZUdlbykgfCAqKkdFVCoqIC9hcGkyL2pzb24vbmFtZVR5cGVHZW8ve3Byb3Blck5vdW59L3tjb3VudHJ5SXNvMn0gfCBJbmZlciB0aGUgbGlrZWx5IHR5cGUgb2YgYSBwcm9wZXIgbm91biAocGVyc29uYWwgbmFtZSwgYnJhbmQgbmFtZSwgcGxhY2UgbmFtZSBldGMuKQoqR2VuZXJhbEFwaSogfCBbKipuYW1lVHlwZUdlb0JhdGNoKipdKGRvY3MvR2VuZXJhbEFwaS5tZCNuYW1lVHlwZUdlb0JhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vbmFtZVR5cGVHZW9CYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgY29tbW9uIHR5cGUgb2YgdXAgdG8gMTAwIHByb3BlciBub3VucyAocGVyc29uYWwgbmFtZSwgYnJhbmQgbmFtZSwgcGxhY2UgbmFtZSBldGMuKQoqSW5kaWFuQXBpKiB8IFsqKmNhc3RlSW5kaWFuQmF0Y2gqKl0oZG9jcy9JbmRpYW5BcGkubWQjY2FzdGVJbmRpYW5CYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2Nhc3RlSW5kaWFuQmF0Y2ggfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBJbmRpYW4gbmFtZSBjYXN0ZSBvZiB1cCB0byAxMDAgcGVyc29uYWwgSW5kaWFuIEhpbmR1IG5hbWVzLiAKKkluZGlhbkFwaSogfCBbKipjYXN0ZWdyb3VwSW5kaWFuKipdKGRvY3MvSW5kaWFuQXBpLm1kI2Nhc3RlZ3JvdXBJbmRpYW4pIHwgKipHRVQqKiAvYXBpMi9qc29uL2Nhc3RlZ3JvdXBJbmRpYW4ve3N1YkRpdmlzaW9uSXNvMzE2NjJ9L3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBJbmRpYW4gbmFtZSBjYXN0ZWdyb3VwIG9mIGEgZmlyc3QgLyBsYXN0IG5hbWUuCipJbmRpYW5BcGkqIHwgWyoqY2FzdGVncm91cEluZGlhbkJhdGNoKipdKGRvY3MvSW5kaWFuQXBpLm1kI2Nhc3RlZ3JvdXBJbmRpYW5CYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2Nhc3RlZ3JvdXBJbmRpYW5CYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IEluZGlhbiBuYW1lIGNhc3RlZ3JvdXAgb2YgdXAgdG8gMTAwIHBlcnNvbmFsIGZpcnN0IC8gbGFzdCBuYW1lcy4gCipJbmRpYW5BcGkqIHwgWyoqY2FzdGVncm91cEluZGlhbkZ1bGwqKl0oZG9jcy9JbmRpYW5BcGkubWQjY2FzdGVncm91cEluZGlhbkZ1bGwpIHwgKipHRVQqKiAvYXBpMi9qc29uL2Nhc3RlZ3JvdXBJbmRpYW5GdWxsL3tzdWJEaXZpc2lvbklzbzMxNjYyfS97cGVyc29uYWxOYW1lRnVsbH0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBJbmRpYW4gbmFtZSBjYXN0ZWdyb3VwIG9mIGEgcGVyc29uYWwgZnVsbCBuYW1lLgoqSW5kaWFuQXBpKiB8IFsqKmNhc3RlZ3JvdXBJbmRpYW5GdWxsQmF0Y2gqKl0oZG9jcy9JbmRpYW5BcGkubWQjY2FzdGVncm91cEluZGlhbkZ1bGxCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2Nhc3RlZ3JvdXBJbmRpYW5GdWxsQmF0Y2ggfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBJbmRpYW4gbmFtZSBjYXN0ZWdyb3VwIG9mIHVwIHRvIDEwMCBwZXJzb25hbCBmdWxsIG5hbWVzLiAKKkluZGlhbkFwaSogfCBbKipjYXN0ZWdyb3VwSW5kaWFuSGluZHUqKl0oZG9jcy9JbmRpYW5BcGkubWQjY2FzdGVncm91cEluZGlhbkhpbmR1KSB8ICoqR0VUKiogL2FwaTIvanNvbi9jYXN0ZUluZGlhbi97c3ViRGl2aXNpb25Jc28zMTY2Mn0ve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfSB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IEluZGlhbiBuYW1lIGNhc3RlIG9mIGEgcGVyc29uYWwgSGluZHUgbmFtZS4KKkluZGlhbkFwaSogfCBbKipyZWxpZ2lvbioqXShkb2NzL0luZGlhbkFwaS5tZCNyZWxpZ2lvbikgfCAqKkdFVCoqIC9hcGkyL2pzb24vcmVsaWdpb25JbmRpYW5GdWxsL3tzdWJEaXZpc2lvbklzbzMxNjYyfS97cGVyc29uYWxOYW1lRnVsbH0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSByZWxpZ2lvbiBvZiBhIHBlcnNvbmFsIEluZGlhbiBmdWxsIG5hbWUsIHByb3ZpZGVkIHRoZSBJbmRpYW4gc3RhdGUgb3IgVW5pb24gdGVycml0b3J5IChOQi8gdGhpcyBjYW4gYmUgaW5mZXJyZWQgdXNpbmcgdGhlIHN1YmNsYXNzaWZpY2F0aW9uIGVuZHBvaW50KS4KKkluZGlhbkFwaSogfCBbKipyZWxpZ2lvbjEqKl0oZG9jcy9JbmRpYW5BcGkubWQjcmVsaWdpb24xKSB8ICoqR0VUKiogL2FwaTIvanNvbi9yZWxpZ2lvbkluZGlhbi97c3ViRGl2aXNpb25Jc28zMTY2Mn0ve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfSB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IHJlbGlnaW9uIG9mIGEgcGVyc29uYWwgSW5kaWFuIGZpcnN0L2xhc3QgbmFtZSwgcHJvdmlkZWQgdGhlIEluZGlhbiBzdGF0ZSBvciBVbmlvbiB0ZXJyaXRvcnkgKE5CLyB0aGlzIGNhbiBiZSBpbmZlcnJlZCB1c2luZyB0aGUgc3ViY2xhc3NpZmljYXRpb24gZW5kcG9pbnQpLgoqSW5kaWFuQXBpKiB8IFsqKnJlbGlnaW9uSW5kaWFuQmF0Y2gqKl0oZG9jcy9JbmRpYW5BcGkubWQjcmVsaWdpb25JbmRpYW5CYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3JlbGlnaW9uSW5kaWFuQmF0Y2ggfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSByZWxpZ2lvbiBvZiB1cCB0byAxMDAgcGVyc29uYWwgZmlyc3QvbGFzdCBJbmRpYW4gbmFtZXMsIHByb3ZpZGVkIHRoZSBzdWJjbGFzc2lmaWNhdGlvbiBhdCBTdGF0ZSBvciBVbmlvbiB0ZXJyaXRvcnkgbGV2ZWwgKE5CLyBjYW4gYmUgaW5mZXJyZWQgdXNpbmcgdGhlIHN1YmNsYXNzaWZpY2F0aW9uIGVuZHBvaW50KS4KKkluZGlhbkFwaSogfCBbKipyZWxpZ2lvbkluZGlhbkZ1bGxCYXRjaCoqXShkb2NzL0luZGlhbkFwaS5tZCNyZWxpZ2lvbkluZGlhbkZ1bGxCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3JlbGlnaW9uSW5kaWFuRnVsbEJhdGNoIHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgcmVsaWdpb24gb2YgdXAgdG8gMTAwIHBlcnNvbmFsIGZ1bGwgSW5kaWFuIG5hbWVzLCBwcm92aWRlZCB0aGUgc3ViY2xhc3NpZmljYXRpb24gYXQgU3RhdGUgb3IgVW5pb24gdGVycml0b3J5IGxldmVsIChOQi8gY2FuIGJlIGluZmVycmVkIHVzaW5nIHRoZSBzdWJjbGFzc2lmaWNhdGlvbiBlbmRwb2ludCkuCipJbmRpYW5BcGkqIHwgWyoqc3ViY2xhc3NpZmljYXRpb25JbmRpYW4qKl0oZG9jcy9JbmRpYW5BcGkubWQjc3ViY2xhc3NpZmljYXRpb25JbmRpYW4pIHwgKipHRVQqKiAvYXBpMi9qc29uL3N1YmNsYXNzaWZpY2F0aW9uSW5kaWFuL3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBJbmRpYW4gc3RhdGUgb2YgVW5pb24gdGVycml0b3J5IGFjY29yZGluZyB0byBJU08gMzE2Ni0yOklOIGJhc2VkIG9uIHRoZSBuYW1lLgoqSW5kaWFuQXBpKiB8IFsqKnN1YmNsYXNzaWZpY2F0aW9uSW5kaWFuQmF0Y2gqKl0oZG9jcy9JbmRpYW5BcGkubWQjc3ViY2xhc3NpZmljYXRpb25JbmRpYW5CYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3N1YmNsYXNzaWZpY2F0aW9uSW5kaWFuQmF0Y2ggfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBJbmRpYW4gc3RhdGUgb2YgVW5pb24gdGVycml0b3J5IGFjY29yZGluZyB0byBJU08gMzE2Ni0yOklOIGJhc2VkIG9uIGEgbGlzdCBvZiB1cCB0byAxMDAgbmFtZXMuCipJbmRpYW5BcGkqIHwgWyoqc3ViY2xhc3NpZmljYXRpb25JbmRpYW5GdWxsKipdKGRvY3MvSW5kaWFuQXBpLm1kI3N1YmNsYXNzaWZpY2F0aW9uSW5kaWFuRnVsbCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vc3ViY2xhc3NpZmljYXRpb25JbmRpYW5GdWxsL3tmdWxsTmFtZX0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBJbmRpYW4gc3RhdGUgb2YgVW5pb24gdGVycml0b3J5IGFjY29yZGluZyB0byBJU08gMzE2Ni0yOklOIGJhc2VkIG9uIHRoZSBuYW1lLgoqSW5kaWFuQXBpKiB8IFsqKnN1YmNsYXNzaWZpY2F0aW9uSW5kaWFuRnVsbEJhdGNoKipdKGRvY3MvSW5kaWFuQXBpLm1kI3N1YmNsYXNzaWZpY2F0aW9uSW5kaWFuRnVsbEJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vc3ViY2xhc3NpZmljYXRpb25JbmRpYW5GdWxsQmF0Y2ggfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBJbmRpYW4gc3RhdGUgb2YgVW5pb24gdGVycml0b3J5IGFjY29yZGluZyB0byBJU08gMzE2Ni0yOklOIGJhc2VkIG9uIGEgbGlzdCBvZiB1cCB0byAxMDAgbmFtZXMuCipKYXBhbmVzZUFwaSogfCBbKipnZW5kZXJKYXBhbmVzZU5hbWVGdWxsKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjZ2VuZGVySmFwYW5lc2VOYW1lRnVsbCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vZ2VuZGVySmFwYW5lc2VOYW1lRnVsbC97amFwYW5lc2VOYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEgSmFwYW5lc2UgZnVsbCBuYW1lIGV4LiDnjovmmZPmmI4KKkphcGFuZXNlQXBpKiB8IFsqKmdlbmRlckphcGFuZXNlTmFtZUZ1bGxCYXRjaCoqXShkb2NzL0phcGFuZXNlQXBpLm1kI2dlbmRlckphcGFuZXNlTmFtZUZ1bGxCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2dlbmRlckphcGFuZXNlTmFtZUZ1bGxCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIHVwIHRvIDEwMCBmdWxsIG5hbWVzCipKYXBhbmVzZUFwaSogfCBbKipnZW5kZXJKYXBhbmVzZU5hbWVQaW55aW4qKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNnZW5kZXJKYXBhbmVzZU5hbWVQaW55aW4pIHwgKipHRVQqKiAvYXBpMi9qc29uL2dlbmRlckphcGFuZXNlTmFtZS97amFwYW5lc2VTdXJuYW1lfS97amFwYW5lc2VHaXZlbk5hbWV9IHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBKYXBhbmVzZSBuYW1lIGluIExBVElOIChQaW55aW4pLgoqSmFwYW5lc2VBcGkqIHwgWyoqZ2VuZGVySmFwYW5lc2VOYW1lUGlueWluQmF0Y2gqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNnZW5kZXJKYXBhbmVzZU5hbWVQaW55aW5CYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2dlbmRlckphcGFuZXNlTmFtZUJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwIEphcGFuZXNlIG5hbWVzIGluIExBVElOIChQaW55aW4pLgoqSmFwYW5lc2VBcGkqIHwgWyoqamFwYW5lc2VOYW1lR2VuZGVyS2FuamlDYW5kaWRhdGVzQmF0Y2gqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNqYXBhbmVzZU5hbWVHZW5kZXJLYW5qaUNhbmRpZGF0ZXNCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2phcGFuZXNlTmFtZUdlbmRlckthbmppQ2FuZGlkYXRlc0JhdGNoIHwgSWRlbnRpZnkgamFwYW5lc2UgbmFtZSBjYW5kaWRhdGVzIGluIEtBTkpJLCBiYXNlZCBvbiB0aGUgcm9tYW5pemVkIG5hbWUgKGZpcnN0TmFtZSAmI3gzRDsgamFwYW5lc2VHaXZlbk5hbWU7IGxhc3ROYW1lJiN4M0Q7amFwYW5lc2VTdXJuYW1lKSB3aXRoIEtOT1dOIGdlbmRlciwgZXguIFlhbWFtb3RvIFNhbmFlCipKYXBhbmVzZUFwaSogfCBbKipqYXBhbmVzZU5hbWVLYW5qaUNhbmRpZGF0ZXMqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNqYXBhbmVzZU5hbWVLYW5qaUNhbmRpZGF0ZXMpIHwgKipHRVQqKiAvYXBpMi9qc29uL2phcGFuZXNlTmFtZUthbmppQ2FuZGlkYXRlcy97amFwYW5lc2VTdXJuYW1lTGF0aW59L3tqYXBhbmVzZUdpdmVuTmFtZUxhdGlufSB8IElkZW50aWZ5IGphcGFuZXNlIG5hbWUgY2FuZGlkYXRlcyBpbiBLQU5KSSwgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIGV4LiBZYW1hbW90byBTYW5hZQoqSmFwYW5lc2VBcGkqIHwgWyoqamFwYW5lc2VOYW1lS2FuamlDYW5kaWRhdGVzMSoqXShkb2NzL0phcGFuZXNlQXBpLm1kI2phcGFuZXNlTmFtZUthbmppQ2FuZGlkYXRlczEpIHwgKipHRVQqKiAvYXBpMi9qc29uL2phcGFuZXNlTmFtZUthbmppQ2FuZGlkYXRlcy97amFwYW5lc2VTdXJuYW1lTGF0aW59L3tqYXBhbmVzZUdpdmVuTmFtZUxhdGlufS97a25vd25HZW5kZXJ9IHwgSWRlbnRpZnkgamFwYW5lc2UgbmFtZSBjYW5kaWRhdGVzIGluIEtBTkpJLCBiYXNlZCBvbiB0aGUgcm9tYW5pemVkIG5hbWUgZXguIFlhbWFtb3RvIFNhbmFlIC0gYW5kIGEga25vd24gZ2VuZGVyLgoqSmFwYW5lc2VBcGkqIHwgWyoqamFwYW5lc2VOYW1lS2FuamlDYW5kaWRhdGVzQmF0Y2gqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNqYXBhbmVzZU5hbWVLYW5qaUNhbmRpZGF0ZXNCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2phcGFuZXNlTmFtZUthbmppQ2FuZGlkYXRlc0JhdGNoIHwgSWRlbnRpZnkgamFwYW5lc2UgbmFtZSBjYW5kaWRhdGVzIGluIEtBTkpJLCBiYXNlZCBvbiB0aGUgcm9tYW5pemVkIG5hbWUgKGZpcnN0TmFtZSAmI3gzRDsgamFwYW5lc2VHaXZlbk5hbWU7IGxhc3ROYW1lJiN4M0Q7amFwYW5lc2VTdXJuYW1lKSwgZXguIFlhbWFtb3RvIFNhbmFlCipKYXBhbmVzZUFwaSogfCBbKipqYXBhbmVzZU5hbWVMYXRpbkNhbmRpZGF0ZXMqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNqYXBhbmVzZU5hbWVMYXRpbkNhbmRpZGF0ZXMpIHwgKipHRVQqKiAvYXBpMi9qc29uL2phcGFuZXNlTmFtZUxhdGluQ2FuZGlkYXRlcy97amFwYW5lc2VTdXJuYW1lS2Fuaml9L3tqYXBhbmVzZUdpdmVuTmFtZUthbmppfSB8IFJvbWFuaXplIGphcGFuZXNlIG5hbWUsIGJhc2VkIG9uIHRoZSBuYW1lIGluIEthbmppLgoqSmFwYW5lc2VBcGkqIHwgWyoqamFwYW5lc2VOYW1lTGF0aW5DYW5kaWRhdGVzQmF0Y2gqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNqYXBhbmVzZU5hbWVMYXRpbkNhbmRpZGF0ZXNCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2phcGFuZXNlTmFtZUxhdGluQ2FuZGlkYXRlc0JhdGNoIHwgUm9tYW5pemUgamFwYW5lc2UgbmFtZXMsIGJhc2VkIG9uIHRoZSBuYW1lIGluIEtBTkpJCipKYXBhbmVzZUFwaSogfCBbKipqYXBhbmVzZU5hbWVNYXRjaCoqXShkb2NzL0phcGFuZXNlQXBpLm1kI2phcGFuZXNlTmFtZU1hdGNoKSB8ICoqR0VUKiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVNYXRjaC97amFwYW5lc2VTdXJuYW1lTGF0aW59L3tqYXBhbmVzZUdpdmVuTmFtZUxhdGlufS97amFwYW5lc2VOYW1lfSB8IFJldHVybiBhIHNjb3JlIGZvciBtYXRjaGluZyBKYXBhbmVzZSBuYW1lIGluIEtBTkpJIGV4LiDlsbHmnKwg5pep6IuXIHdpdGggYSByb21hbml6ZWQgbmFtZSBleC4gWWFtYW1vdG8gU2FuYWUKKkphcGFuZXNlQXBpKiB8IFsqKmphcGFuZXNlTmFtZU1hdGNoQmF0Y2gqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNqYXBhbmVzZU5hbWVNYXRjaEJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vamFwYW5lc2VOYW1lTWF0Y2hCYXRjaCB8IFJldHVybiBhIHNjb3JlIGZvciBtYXRjaGluZyBhIGxpc3Qgb2YgSmFwYW5lc2UgbmFtZXMgaW4gS0FOSkkgZXguIOWxseacrCDml6noi5cgd2l0aCByb21hbml6ZWQgbmFtZXMgZXguIFlhbWFtb3RvIFNhbmFlCipKYXBhbmVzZUFwaSogfCBbKipqYXBhbmVzZU5hbWVNYXRjaEZlZWRiYWNrTG9vcCoqXShkb2NzL0phcGFuZXNlQXBpLm1kI2phcGFuZXNlTmFtZU1hdGNoRmVlZGJhY2tMb29wKSB8ICoqR0VUKiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVNYXRjaEZlZWRiYWNrTG9vcC97amFwYW5lc2VTdXJuYW1lTGF0aW59L3tqYXBhbmVzZUdpdmVuTmFtZUxhdGlufS97amFwYW5lc2VOYW1lfSB8IFtDUkVESVRTIDEgVU5JVF0gRmVlZGJhY2sgbG9vcCB0byBiZXR0ZXIgcGVyZm9ybSBtYXRjaGluZyBKYXBhbmVzZSBuYW1lIGluIEtBTkpJIGV4LiDlsbHmnKwg5pep6IuXIHdpdGggYSByb21hbml6ZWQgbmFtZSBleC4gWWFtYW1vdG8gU2FuYWUKKkphcGFuZXNlQXBpKiB8IFsqKnBhcnNlSmFwYW5lc2VOYW1lKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjcGFyc2VKYXBhbmVzZU5hbWUpIHwgKipHRVQqKiAvYXBpMi9qc29uL3BhcnNlSmFwYW5lc2VOYW1lL3tqYXBhbmVzZU5hbWV9IHwgSW5mZXIgdGhlIGxpa2VseSBmaXJzdC9sYXN0IG5hbWUgc3RydWN0dXJlIG9mIGEgbmFtZSwgZXguIOWxseacrCDml6noi5cgb3IgWWFtYW1vdG8gU2FuYWUKKkphcGFuZXNlQXBpKiB8IFsqKnBhcnNlSmFwYW5lc2VOYW1lQmF0Y2gqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNwYXJzZUphcGFuZXNlTmFtZUJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vcGFyc2VKYXBhbmVzZU5hbWVCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiDlsbHmnKwg5pep6IuXIG9yIFlhbWFtb3RvIFNhbmFlIAoqUGVyc29uYWxBcGkqIHwgWyoqY29tbXVuaXR5RW5nYWdlKipdKGRvY3MvUGVyc29uYWxBcGkubWQjY29tbXVuaXR5RW5nYWdlKSB8ICoqR0VUKiogL2FwaTIvanNvbi9jb21tdW5pdHlFbmdhZ2Uve2NvdW50cnlJc28yfS97Zmlyc3ROYW1lfS97bGFzdE5hbWV9IHwgW1VTRVMgMjAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgZXRobmljaXR5L2RpYXNwb3JhLCBjb3VudHJ5LCBnZW5kZXIgb2YgYSBwZXJzb25hbCBuYW1lLCBnaXZlbiBhIGNvdW50cnkgb2YgcmVzaWRlbmNlIElTTzIgY29kZSAoZXguIFVTLCBDQSwgQVUsIE5aIGV0Yy4pIGZvciBjb21tdW5pdHkgZW5nYWdlbWVudCAocmVxdWlyZSBzcGVjaWFsIG1vZHVsZS9wcmljaW5nKQoqUGVyc29uYWxBcGkqIHwgWyoqY29tbXVuaXR5RW5nYWdlQmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNjb21tdW5pdHlFbmdhZ2VCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2NvbW11bml0eUVuZ2FnZUJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBldGhuaWNpdHkvZGlhc3BvcmEsIGNvdW50cnksIGdlbmRlciBvZiB1cCB0byAxMDAgcGVyc29uYWwgbmFtZXMsIGdpdmVuIGEgY291bnRyeSBvZiByZXNpZGVuY2UgSVNPMiBjb2RlIChleC4gVVMsIENBLCBBVSwgTlogZXRjLikgZm9yIGNvbW11bml0eSBlbmdhZ2VtZW50IChyZXF1aXJlIHNwZWNpYWwgbW9kdWxlL3ByaWNpbmcpCipQZXJzb25hbEFwaSogfCBbKipjb21tdW5pdHlFbmdhZ2VGdWxsKipdKGRvY3MvUGVyc29uYWxBcGkubWQjY29tbXVuaXR5RW5nYWdlRnVsbCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vY29tbXVuaXR5RW5nYWdlRnVsbC97Y291bnRyeUlzbzJ9L3twZXJzb25hbE5hbWVGdWxsfSB8IFtVU0VTIDIwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGV0aG5pY2l0eS9kaWFzcG9yYSwgY291bnRyeSwgZ2VuZGVyIG9mIGEgcGVyc29uYWwgbmFtZSwgZ2l2ZW4gYSBjb3VudHJ5IG9mIHJlc2lkZW5jZSBJU08yIGNvZGUgKGV4LiBVUywgQ0EsIEFVLCBOWiBldGMuKSBmb3IgY29tbXVuaXR5IGVuZ2FnZW1lbnQgKHJlcXVpcmUgc3BlY2lhbCBtb2R1bGUvcHJpY2luZykKKlBlcnNvbmFsQXBpKiB8IFsqKmNvbW11bml0eUVuZ2FnZUZ1bGxCYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2NvbW11bml0eUVuZ2FnZUZ1bGxCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2NvbW11bml0eUVuZ2FnZUZ1bGxCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZXRobmljaXR5L2RpYXNwb3JhLCBjb3VudHJ5LCBnZW5kZXIgb2YgdXAgdG8gMTAwIHBlcnNvbmFsIG5hbWVzLCBnaXZlbiBhIGNvdW50cnkgb2YgcmVzaWRlbmNlIElTTzIgY29kZSAoZXguIFVTLCBDQSwgQVUsIE5aIGV0Yy4pIGZvciBjb21tdW5pdHkgZW5nYWdlbWVudCAocmVxdWlyZSBzcGVjaWFsIG1vZHVsZS9wcmljaW5nKQoqUGVyc29uYWxBcGkqIHwgWyoqY29ycmlkb3IqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNjb3JyaWRvcikgfCAqKkdFVCoqIC9hcGkyL2pzb24vY29ycmlkb3Ive2NvdW50cnlJc28yRnJvbX0ve2ZpcnN0TmFtZUZyb219L3tsYXN0TmFtZUZyb219L3tjb3VudHJ5SXNvMlRvfS97Zmlyc3ROYW1lVG99L3tsYXN0TmFtZVRvfSB8IFtVU0VTIDUwIFVOSVRTIFBFUiBOQU1FIENPVVBMRV0gSW5mZXIgc2V2ZXJhbCBjbGFzc2lmaWNhdGlvbnMgZm9yIGEgY3Jvc3MgYm9yZGVyIGludGVyYWN0aW9uIGJldHdlZW4gbmFtZXMgKGV4LiByZW1pdCwgdHJhdmVsLCBpbnRsIGNvbSkKKlBlcnNvbmFsQXBpKiB8IFsqKmNvcnJpZG9yQmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNjb3JyaWRvckJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vY29ycmlkb3JCYXRjaCB8IFtVU0VTIDUwIFVOSVRTIFBFUiBOQU1FIFBBSVJdIEluZmVyIHNldmVyYWwgY2xhc3NpZmljYXRpb25zIGZvciB1cCB0byAxMDAgY3Jvc3MgYm9yZGVyIGludGVyYWN0aW9uIGJldHdlZW4gbmFtZXMgKGV4LiByZW1pdCwgdHJhdmVsLCBpbnRsIGNvbSkKKlBlcnNvbmFsQXBpKiB8IFsqKmNvcnJpZG9yRnVsbCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2NvcnJpZG9yRnVsbCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vY29ycmlkb3JGdWxsL3tjb3VudHJ5SXNvMkZyb219L3twZXJzb25hbE5hbWVGcm9tfS97Y291bnRyeUlzbzJUb30ve3BlcnNvbmFsTmFtZVRvfSB8IFtVU0VTIDUwIFVOSVRTIFBFUiBOQU1FIENPVVBMRV0gSW5mZXIgc2V2ZXJhbCBjbGFzc2lmaWNhdGlvbnMgZm9yIGEgY3Jvc3MgYm9yZGVyIGludGVyYWN0aW9uIGJldHdlZW4gbmFtZXMgKGV4LiByZW1pdCwgdHJhdmVsLCBpbnRsIGNvbSkKKlBlcnNvbmFsQXBpKiB8IFsqKmNvcnJpZG9yRnVsbEJhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjY29ycmlkb3JGdWxsQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9jb3JyaWRvckZ1bGxCYXRjaCB8IFtVU0VTIDUwIFVOSVRTIFBFUiBOQU1FIFBBSVJdIEluZmVyIHNldmVyYWwgY2xhc3NpZmljYXRpb25zIGZvciB1cCB0byAxMDAgY3Jvc3MgYm9yZGVyIGludGVyYWN0aW9uIGJldHdlZW4gbmFtZXMgKGV4LiByZW1pdCwgdHJhdmVsLCBpbnRsIGNvbSkKKlBlcnNvbmFsQXBpKiB8IFsqKmNvdW50cnkqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNjb3VudHJ5KSB8ICoqR0VUKiogL2FwaTIvanNvbi9jb3VudHJ5L3twZXJzb25hbE5hbWVGdWxsfSB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgb2YgcmVzaWRlbmNlIG9mIGEgcGVyc29uYWwgZnVsbCBuYW1lLCBvciBvbmUgc3VybmFtZS4gQXNzdW1lcyBuYW1lcyBhcyB0aGV5IGFyZSBpbiB0aGUgY291bnRyeSBvZiByZXNpZGVuY2UgT1IgdGhlIGNvdW50cnkgb2Ygb3JpZ2luLgoqUGVyc29uYWxBcGkqIHwgWyoqY291bnRyeUJhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjY291bnRyeUJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vY291bnRyeUJhdGNoIHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgY291bnRyeSBvZiByZXNpZGVuY2Ugb2YgdXAgdG8gMTAwIHBlcnNvbmFsIGZ1bGwgbmFtZXMsIG9yIHN1cm5hbWVzLiBBc3N1bWVzIG5hbWVzIGFzIHRoZXkgYXJlIGluIHRoZSBjb3VudHJ5IG9mIHJlc2lkZW5jZSBPUiB0aGUgY291bnRyeSBvZiBvcmlnaW4uCipQZXJzb25hbEFwaSogfCBbKipjb3VudHJ5Rm5MbioqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2NvdW50cnlGbkxuKSB8ICoqR0VUKiogL2FwaTIvanNvbi9jb3VudHJ5Rm5Mbi97Zmlyc3ROYW1lfS97bGFzdE5hbWV9IHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgY291bnRyeSBvZiByZXNpZGVuY2Ugb2YgYSBwZXJzb25hbCBmaXJzdCAvIGxhc3QgbmFtZSwgb3Igb25lIHN1cm5hbWUuIEFzc3VtZXMgbmFtZXMgYXMgdGhleSBhcmUgaW4gdGhlIGNvdW50cnkgb2YgcmVzaWRlbmNlIE9SIHRoZSBjb3VudHJ5IG9mIG9yaWdpbi4KKlBlcnNvbmFsQXBpKiB8IFsqKmNvdW50cnlGbkxuQmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNjb3VudHJ5Rm5MbkJhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vY291bnRyeUZuTG5CYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgb2YgcmVzaWRlbmNlIG9mIHVwIHRvIDEwMCBwZXJzb25hbCBmaXJzdCAvIGxhc3QgbmFtZXMsIG9yIHN1cm5hbWVzLiBBc3N1bWVzIG5hbWVzIGFzIHRoZXkgYXJlIGluIHRoZSBjb3VudHJ5IG9mIHJlc2lkZW5jZSBPUiB0aGUgY291bnRyeSBvZiBvcmlnaW4uCipQZXJzb25hbEFwaSogfCBbKipkaWFzcG9yYSoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2RpYXNwb3JhKSB8ICoqR0VUKiogL2FwaTIvanNvbi9kaWFzcG9yYS97Y291bnRyeUlzbzJ9L3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0gfCBbVVNFUyAyMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBldGhuaWNpdHkvZGlhc3BvcmEgb2YgYSBwZXJzb25hbCBuYW1lLCBnaXZlbiBhIGNvdW50cnkgb2YgcmVzaWRlbmNlIElTTzIgY29kZSAoZXguIFVTLCBDQSwgQVUsIE5aIGV0Yy4pCipQZXJzb25hbEFwaSogfCBbKipkaWFzcG9yYUJhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjZGlhc3BvcmFCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2RpYXNwb3JhQmF0Y2ggfCBbVVNFUyAyMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBldGhuaWNpdHkvZGlhc3BvcmEgb2YgdXAgdG8gMTAwIHBlcnNvbmFsIG5hbWVzLCBnaXZlbiBhIGNvdW50cnkgb2YgcmVzaWRlbmNlIElTTzIgY29kZSAoZXguIFVTLCBDQSwgQVUsIE5aIGV0Yy4pCipQZXJzb25hbEFwaSogfCBbKipkaWFzcG9yYUZ1bGwqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNkaWFzcG9yYUZ1bGwpIHwgKipHRVQqKiAvYXBpMi9qc29uL2RpYXNwb3JhRnVsbC97Y291bnRyeUlzbzJ9L3twZXJzb25hbE5hbWVGdWxsfSB8IFtVU0VTIDIwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGV0aG5pY2l0eS9kaWFzcG9yYSBvZiBhIHBlcnNvbmFsIG5hbWUsIGdpdmVuIGEgY291bnRyeSBvZiByZXNpZGVuY2UgSVNPMiBjb2RlIChleC4gVVMsIENBLCBBVSwgTlogZXRjLikKKlBlcnNvbmFsQXBpKiB8IFsqKmRpYXNwb3JhRnVsbEJhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjZGlhc3BvcmFGdWxsQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9kaWFzcG9yYUZ1bGxCYXRjaCB8IFtVU0VTIDIwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGV0aG5pY2l0eS9kaWFzcG9yYSBvZiB1cCB0byAxMDAgcGVyc29uYWwgbmFtZXMsIGdpdmVuIGEgY291bnRyeSBvZiByZXNpZGVuY2UgSVNPMiBjb2RlIChleC4gVVMsIENBLCBBVSwgTlogZXRjLikKKlBlcnNvbmFsQXBpKiB8IFsqKmdlbmRlcioqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2dlbmRlcikgfCAqKkdFVCoqIC9hcGkyL2pzb24vZ2VuZGVyL3tmaXJzdE5hbWV9IHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBqdXN0IGEgZml2ZW4gbmFtZSwgYXNzdW1pbmcgZGVmYXVsdCAmIzM5O1VTJiMzOTsgbG9jYWwgY29udGV4dC4gUGxlYXNlIHVzZSBwcmVmZXJhYmx5IGZ1bGwgbmFtZXMgYW5kIGxvY2FsIGdlb2dyYXBoaWMgY29udGV4dCBmb3IgYmV0dGVyIGFjY3VyYWN5LgoqUGVyc29uYWxBcGkqIHwgWyoqZ2VuZGVyMSoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2dlbmRlcjEpIHwgKipHRVQqKiAvYXBpMi9qc29uL2dlbmRlci97Zmlyc3ROYW1lfS97bGFzdE5hbWV9IHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBuYW1lLgoqUGVyc29uYWxBcGkqIHwgWyoqZ2VuZGVyQmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNnZW5kZXJCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2dlbmRlckJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwIG5hbWVzLCBkZXRlY3RpbmcgYXV0b21hdGljYWxseSB0aGUgY3VsdHVyYWwgY29udGV4dC4KKlBlcnNvbmFsQXBpKiB8IFsqKmdlbmRlckZ1bGwqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNnZW5kZXJGdWxsKSB8ICoqR0VUKiogL2FwaTIvanNvbi9nZW5kZXJGdWxsL3tmdWxsTmFtZX0gfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiBhIGZ1bGwgbmFtZSwgZXguIEpvaG4gSC4gU21pdGgKKlBlcnNvbmFsQXBpKiB8IFsqKmdlbmRlckZ1bGxCYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2dlbmRlckZ1bGxCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2dlbmRlckZ1bGxCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIHVwIHRvIDEwMCBmdWxsIG5hbWVzLCBkZXRlY3RpbmcgYXV0b21hdGljYWxseSB0aGUgY3VsdHVyYWwgY29udGV4dC4KKlBlcnNvbmFsQXBpKiB8IFsqKmdlbmRlckZ1bGxHZW8qKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNnZW5kZXJGdWxsR2VvKSB8ICoqR0VUKiogL2FwaTIvanNvbi9nZW5kZXJGdWxsR2VvL3tmdWxsTmFtZX0ve2NvdW50cnlJc28yfSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEgZnVsbCBuYW1lLCBnaXZlbiBhIGxvY2FsIGNvbnRleHQgKElTTzIgY291bnRyeSBjb2RlKS4KKlBlcnNvbmFsQXBpKiB8IFsqKmdlbmRlckZ1bGxHZW9CYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2dlbmRlckZ1bGxHZW9CYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2dlbmRlckZ1bGxHZW9CYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIHVwIHRvIDEwMCBmdWxsIG5hbWVzLCB3aXRoIGEgZ2l2ZW4gY3VsdHVyYWwgY29udGV4dCAoY291bnRyeSBJU08yIGNvZGUpLgoqUGVyc29uYWxBcGkqIHwgWyoqZ2VuZGVyR2VvKipdKGRvY3MvUGVyc29uYWxBcGkubWQjZ2VuZGVyR2VvKSB8ICoqR0VUKiogL2FwaTIvanNvbi9nZW5kZXJHZW8ve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfS97Y291bnRyeUlzbzJ9IHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBuYW1lLCBnaXZlbiBhIGxvY2FsIGNvbnRleHQgKElTTzIgY291bnRyeSBjb2RlKS4KKlBlcnNvbmFsQXBpKiB8IFsqKmdlbmRlckdlb0JhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjZ2VuZGVyR2VvQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9nZW5kZXJHZW9CYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIHVwIHRvIDEwMCBuYW1lcywgZWFjaCBnaXZlbiBhIGxvY2FsIGNvbnRleHQgKElTTzIgY291bnRyeSBjb2RlKS4KKlBlcnNvbmFsQXBpKiB8IFsqKm9yaWdpbioqXShkb2NzL1BlcnNvbmFsQXBpLm1kI29yaWdpbikgfCAqKkdFVCoqIC9hcGkyL2pzb24vb3JpZ2luL3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBjb3VudHJ5IG9mIG9yaWdpbiBvZiBhIHBlcnNvbmFsIG5hbWUuIEFzc3VtZXMgbmFtZXMgYXMgdGhleSBhcmUgaW4gdGhlIGNvdW50cnkgb2Ygb3JpZ2luLiBGb3IgVVMsIENBLCBBVSwgTlogYW5kIG90aGVyIG1lbHRpbmctcG90cyA6IHVzZSAmIzM5O2RpYXNwb3JhJiMzOTsgaW5zdGVhZC4KKlBlcnNvbmFsQXBpKiB8IFsqKm9yaWdpbkJhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjb3JpZ2luQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9vcmlnaW5CYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgb2Ygb3JpZ2luIG9mIHVwIHRvIDEwMCBuYW1lcywgZGV0ZWN0aW5nIGF1dG9tYXRpY2FsbHkgdGhlIGN1bHR1cmFsIGNvbnRleHQuCipQZXJzb25hbEFwaSogfCBbKipvcmlnaW5GdWxsKipdKGRvY3MvUGVyc29uYWxBcGkubWQjb3JpZ2luRnVsbCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vb3JpZ2luRnVsbC97cGVyc29uYWxOYW1lRnVsbH0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBjb3VudHJ5IG9mIG9yaWdpbiBvZiBhIHBlcnNvbmFsIG5hbWUuIEFzc3VtZXMgbmFtZXMgYXMgdGhleSBhcmUgaW4gdGhlIGNvdW50cnkgb2Ygb3JpZ2luLiBGb3IgVVMsIENBLCBBVSwgTlogYW5kIG90aGVyIG1lbHRpbmctcG90cyA6IHVzZSAmIzM5O2RpYXNwb3JhJiMzOTsgaW5zdGVhZC4KKlBlcnNvbmFsQXBpKiB8IFsqKm9yaWdpbkZ1bGxCYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI29yaWdpbkZ1bGxCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL29yaWdpbkZ1bGxCYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgb2Ygb3JpZ2luIG9mIHVwIHRvIDEwMCBuYW1lcywgZGV0ZWN0aW5nIGF1dG9tYXRpY2FsbHkgdGhlIGN1bHR1cmFsIGNvbnRleHQuCipQZXJzb25hbEFwaSogfCBbKipwYXJzZU5hbWUqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNwYXJzZU5hbWUpIHwgKipHRVQqKiAvYXBpMi9qc29uL3BhcnNlTmFtZS97bmFtZUZ1bGx9IHwgSW5mZXIgdGhlIGxpa2VseSBmaXJzdC9sYXN0IG5hbWUgc3RydWN0dXJlIG9mIGEgbmFtZSwgZXguIEpvaG4gU21pdGggb3IgU01JVEgsIEpvaG4gb3IgU01JVEg7IEpvaG4uIAoqUGVyc29uYWxBcGkqIHwgWyoqcGFyc2VOYW1lQmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNwYXJzZU5hbWVCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3BhcnNlTmFtZUJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBmaXJzdC9sYXN0IG5hbWUgc3RydWN0dXJlIG9mIGEgbmFtZSwgZXguIEpvaG4gU21pdGggb3IgU01JVEgsIEpvaG4gb3IgU01JVEg7IEpvaG4uCipQZXJzb25hbEFwaSogfCBbKipwYXJzZU5hbWVHZW8qKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNwYXJzZU5hbWVHZW8pIHwgKipHRVQqKiAvYXBpMi9qc29uL3BhcnNlTmFtZS97bmFtZUZ1bGx9L3tjb3VudHJ5SXNvMn0gfCBJbmZlciB0aGUgbGlrZWx5IGZpcnN0L2xhc3QgbmFtZSBzdHJ1Y3R1cmUgb2YgYSBuYW1lLCBleC4gSm9obiBTbWl0aCBvciBTTUlUSCwgSm9obiBvciBTTUlUSDsgSm9obi4gRm9yIGJldHRlciBhY2N1cmFjeSwgcHJvdmlkZSBhIGdlb2dyYXBoaWMgY29udGV4dC4KKlBlcnNvbmFsQXBpKiB8IFsqKnBhcnNlTmFtZUdlb0JhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjcGFyc2VOYW1lR2VvQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9wYXJzZU5hbWVHZW9CYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiBKb2huIFNtaXRoIG9yIFNNSVRILCBKb2huIG9yIFNNSVRIOyBKb2huLiBHaXZpbmcgYSBsb2NhbCBjb250ZXh0IGltcHJvdmVzIHByZWNpc2lvbi4gCipQZXJzb25hbEFwaSogfCBbKipyZWxpZ2lvbjIqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNyZWxpZ2lvbjIpIHwgKipHRVQqKiAvYXBpMi9qc29uL3JlbGlnaW9uL3tjb3VudHJ5SXNvMn0ve3N1YkRpdmlzaW9uSXNvMzE2NjJ9L3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSByZWxpZ2lvbiBvZiBhIHBlcnNvbmFsIGZpcnN0L2xhc3QgbmFtZS4gTkI6IG9ubHkgZm9yIElORElBIChhcyBvZiBjdXJyZW50IHZlcnNpb24pLgoqUGVyc29uYWxBcGkqIHwgWyoqcmVsaWdpb25CYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI3JlbGlnaW9uQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9yZWxpZ2lvbkJhdGNoIHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgcmVsaWdpb24gb2YgdXAgdG8gMTAwIHBlcnNvbmFsIGZpcnN0L2xhc3QgbmFtZXMuIE5COiBvbmx5IGZvciBJbmRpYSBhcyBvZiBjdXJyZW50bHkuCipQZXJzb25hbEFwaSogfCBbKipyZWxpZ2lvbkZ1bGwqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNyZWxpZ2lvbkZ1bGwpIHwgKipHRVQqKiAvYXBpMi9qc29uL3JlbGlnaW9uRnVsbC97Y291bnRyeUlzbzJ9L3tzdWJEaXZpc2lvbklzbzMxNjYyfS97cGVyc29uYWxOYW1lRnVsbH0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSByZWxpZ2lvbiBvZiBhIHBlcnNvbmFsIGZ1bGwgbmFtZS4gTkI6IG9ubHkgZm9yIElORElBIChhcyBvZiBjdXJyZW50IHZlcnNpb24pLgoqUGVyc29uYWxBcGkqIHwgWyoqcmVsaWdpb25GdWxsQmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNyZWxpZ2lvbkZ1bGxCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3JlbGlnaW9uRnVsbEJhdGNoIHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgcmVsaWdpb24gb2YgdXAgdG8gMTAwIHBlcnNvbmFsIGZ1bGwgbmFtZXMuIE5COiBvbmx5IGZvciBJbmRpYSBhcyBvZiBjdXJyZW50bHkuCipQZXJzb25hbEFwaSogfCBbKipzdWJjbGFzc2lmaWNhdGlvbioqXShkb2NzL1BlcnNvbmFsQXBpLm1kI3N1YmNsYXNzaWZpY2F0aW9uKSB8ICoqR0VUKiogL2FwaTIvanNvbi9zdWJjbGFzc2lmaWNhdGlvbi97Y291bnRyeUlzbzJ9L3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBvcmlnaW4gb2YgYSBuYW1lIGF0IGEgY291bnRyeSBzdWJjbGFzc2lmaWNhdGlvbiBsZXZlbCAoc3RhdGUgb3IgcmVnZWlvbikuIEluaXRpYWxseSwgdGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgSW5kaWEgKElTTzIgY29kZSAmIzM5O0lOJiMzOTspLgoqUGVyc29uYWxBcGkqIHwgWyoqc3ViY2xhc3NpZmljYXRpb25CYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI3N1YmNsYXNzaWZpY2F0aW9uQmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9zdWJjbGFzc2lmaWNhdGlvbkJhdGNoIHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgb3JpZ2luIG9mIGEgbGlzdCBvZiB1cCB0byAxMDAgbmFtZXMgYXQgYSBjb3VudHJ5IHN1YmNsYXNzaWZpY2F0aW9uIGxldmVsIChzdGF0ZSBvciByZWdlaW9uKS4gSW5pdGlhbGx5LCB0aGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBJbmRpYSAoSVNPMiBjb2RlICYjMzk7SU4mIzM5OykuCipQZXJzb25hbEFwaSogfCBbKipzdWJjbGFzc2lmaWNhdGlvbkZ1bGwqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNzdWJjbGFzc2lmaWNhdGlvbkZ1bGwpIHwgKipHRVQqKiAvYXBpMi9qc29uL3N1YmNsYXNzaWZpY2F0aW9uRnVsbC97Y291bnRyeUlzbzJ9L3tmdWxsTmFtZX0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBvcmlnaW4gb2YgYSBuYW1lIGF0IGEgY291bnRyeSBzdWJjbGFzc2lmaWNhdGlvbiBsZXZlbCAoc3RhdGUgb3IgcmVnZWlvbikuIEluaXRpYWxseSwgdGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgSW5kaWEgKElTTzIgY29kZSAmIzM5O0lOJiMzOTspLgoqUGVyc29uYWxBcGkqIHwgWyoqc3ViY2xhc3NpZmljYXRpb25GdWxsQmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNzdWJjbGFzc2lmaWNhdGlvbkZ1bGxCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3N1YmNsYXNzaWZpY2F0aW9uRnVsbEJhdGNoIHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgb3JpZ2luIG9mIGEgbGlzdCBvZiB1cCB0byAxMDAgbmFtZXMgYXQgYSBjb3VudHJ5IHN1YmNsYXNzaWZpY2F0aW9uIGxldmVsIChzdGF0ZSBvciByZWdlaW9uKS4gSW5pdGlhbGx5LCB0aGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBJbmRpYSAoSVNPMiBjb2RlICYjMzk7SU4mIzM5OykuCipQZXJzb25hbEFwaSogfCBbKip1c1JhY2VFdGhuaWNpdHkqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCN1c1JhY2VFdGhuaWNpdHkpIHwgKipHRVQqKiAvYXBpMi9qc29uL3VzUmFjZUV0aG5pY2l0eS97Zmlyc3ROYW1lfS97bGFzdE5hbWV9IHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIGEgVVMgcmVzaWRlbnQmIzM5O3MgbGlrZWx5IHJhY2UvZXRobmljaXR5IGFjY29yZGluZyB0byBVUyBDZW5zdXMgdGF4b25vbXkgV19OTCAod2hpdGUsIG5vbiBsYXRpbm8pLCBITCAoaGlzcGFubyBsYXRpbm8pLCAgQSAoYXNpYW4sIG5vbiBsYXRpbm8pLCBCX05MIChibGFjaywgbm9uIGxhdGlubykuIE9wdGlvbmFsbHkgYWRkIGhlYWRlciBYLU9QVElPTi1VU1JBQ0VFVEhOSUNJVFktVEFYT05PTVk6IFVTUkFDRUVUSE5JQ0lUWS02Q0xBU1NFUyBmb3IgdHdvIGFkZGl0aW9uYWwgY2xhc3NlcywgQUlfQU4gKEFtZXJpY2FuIEluZGlhbiBvciBBbGFza2FuIE5hdGl2ZSkgYW5kIFBJIChQYWNpZmljIElzbGFuZGVyKS4KKlBlcnNvbmFsQXBpKiB8IFsqKnVzUmFjZUV0aG5pY2l0eUJhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjdXNSYWNlRXRobmljaXR5QmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi91c1JhY2VFdGhuaWNpdHlCYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB1cC10byAxMDAgVVMgcmVzaWRlbnQmIzM5O3MgbGlrZWx5IHJhY2UvZXRobmljaXR5IGFjY29yZGluZyB0byBVUyBDZW5zdXMgdGF4b25vbXkuIE91dHB1dCBpcyBXX05MICh3aGl0ZSwgbm9uIGxhdGlubyksIEhMIChoaXNwYW5vIGxhdGlubyksICBBIChhc2lhbiwgbm9uIGxhdGlubyksIEJfTkwgKGJsYWNrLCBub24gbGF0aW5vKS4gT3B0aW9uYWxseSBhZGQgaGVhZGVyIFgtT1BUSU9OLVVTUkFDRUVUSE5JQ0lUWS1UQVhPTk9NWTogVVNSQUNFRVRITklDSVRZLTZDTEFTU0VTIGZvciB0d28gYWRkaXRpb25hbCBjbGFzc2VzLCBBSV9BTiAoQW1lcmljYW4gSW5kaWFuIG9yIEFsYXNrYW4gTmF0aXZlKSBhbmQgUEkgKFBhY2lmaWMgSXNsYW5kZXIpLgoqUGVyc29uYWxBcGkqIHwgWyoqdXNSYWNlRXRobmljaXR5RnVsbCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI3VzUmFjZUV0aG5pY2l0eUZ1bGwpIHwgKipHRVQqKiAvYXBpMi9qc29uL3VzUmFjZUV0aG5pY2l0eUZ1bGwve3BlcnNvbmFsTmFtZUZ1bGx9IHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIGEgVVMgcmVzaWRlbnQmIzM5O3MgbGlrZWx5IHJhY2UvZXRobmljaXR5IGFjY29yZGluZyB0byBVUyBDZW5zdXMgdGF4b25vbXkgV19OTCAod2hpdGUsIG5vbiBsYXRpbm8pLCBITCAoaGlzcGFubyBsYXRpbm8pLCAgQSAoYXNpYW4sIG5vbiBsYXRpbm8pLCBCX05MIChibGFjaywgbm9uIGxhdGlubykuIE9wdGlvbmFsbHkgYWRkIGhlYWRlciBYLU9QVElPTi1VU1JBQ0VFVEhOSUNJVFktVEFYT05PTVk6IFVTUkFDRUVUSE5JQ0lUWS02Q0xBU1NFUyBmb3IgdHdvIGFkZGl0aW9uYWwgY2xhc3NlcywgQUlfQU4gKEFtZXJpY2FuIEluZGlhbiBvciBBbGFza2FuIE5hdGl2ZSkgYW5kIFBJIChQYWNpZmljIElzbGFuZGVyKS4KKlBlcnNvbmFsQXBpKiB8IFsqKnVzUmFjZUV0aG5pY2l0eUZ1bGxCYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI3VzUmFjZUV0aG5pY2l0eUZ1bGxCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3VzUmFjZUV0aG5pY2l0eUZ1bGxCYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB1cC10byAxMDAgVVMgcmVzaWRlbnQmIzM5O3MgbGlrZWx5IHJhY2UvZXRobmljaXR5IGFjY29yZGluZyB0byBVUyBDZW5zdXMgdGF4b25vbXkuIE91dHB1dCBpcyBXX05MICh3aGl0ZSwgbm9uIGxhdGlubyksIEhMIChoaXNwYW5vIGxhdGlubyksICBBIChhc2lhbiwgbm9uIGxhdGlubyksIEJfTkwgKGJsYWNrLCBub24gbGF0aW5vKS4gT3B0aW9uYWxseSBhZGQgaGVhZGVyIFgtT1BUSU9OLVVTUkFDRUVUSE5JQ0lUWS1UQVhPTk9NWTogVVNSQUNFRVRITklDSVRZLTZDTEFTU0VTIGZvciB0d28gYWRkaXRpb25hbCBjbGFzc2VzLCBBSV9BTiAoQW1lcmljYW4gSW5kaWFuIG9yIEFsYXNrYW4gTmF0aXZlKSBhbmQgUEkgKFBhY2lmaWMgSXNsYW5kZXIpLgoqUGVyc29uYWxBcGkqIHwgWyoqdXNSYWNlRXRobmljaXR5WklQNSoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI3VzUmFjZUV0aG5pY2l0eVpJUDUpIHwgKipHRVQqKiAvYXBpMi9qc29uL3VzUmFjZUV0aG5pY2l0eVpJUDUve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfS97emlwNUNvZGV9IHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIGEgVVMgcmVzaWRlbnQmIzM5O3MgbGlrZWx5IHJhY2UvZXRobmljaXR5IGFjY29yZGluZyB0byBVUyBDZW5zdXMgdGF4b25vbXksIHVzaW5nIChvcHRpb25hbCkgWklQNSBjb2RlIGluZm8uIE91dHB1dCBpcyBXX05MICh3aGl0ZSwgbm9uIGxhdGlubyksIEhMIChoaXNwYW5vIGxhdGlubyksICBBIChhc2lhbiwgbm9uIGxhdGlubyksIEJfTkwgKGJsYWNrLCBub24gbGF0aW5vKS4gT3B0aW9uYWxseSBhZGQgaGVhZGVyIFgtT1BUSU9OLVVTUkFDRUVUSE5JQ0lUWS1UQVhPTk9NWTogVVNSQUNFRVRITklDSVRZLTZDTEFTU0VTIGZvciB0d28gYWRkaXRpb25hbCBjbGFzc2VzLCBBSV9BTiAoQW1lcmljYW4gSW5kaWFuIG9yIEFsYXNrYW4gTmF0aXZlKSBhbmQgUEkgKFBhY2lmaWMgSXNsYW5kZXIpLgoqUGVyc29uYWxBcGkqIHwgWyoqdXNaaXBSYWNlRXRobmljaXR5QmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCN1c1ppcFJhY2VFdGhuaWNpdHlCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3VzWmlwUmFjZUV0aG5pY2l0eUJhdGNoIHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHVwLXRvIDEwMCBVUyByZXNpZGVudCYjMzk7cyBsaWtlbHkgcmFjZS9ldGhuaWNpdHkgYWNjb3JkaW5nIHRvIFVTIENlbnN1cyB0YXhvbm9teSwgd2l0aCAob3B0aW9uYWwpIFpJUCBjb2RlLiBPdXRwdXQgaXMgV19OTCAod2hpdGUsIG5vbiBsYXRpbm8pLCBITCAoaGlzcGFubyBsYXRpbm8pLCAgQSAoYXNpYW4sIG5vbiBsYXRpbm8pLCBCX05MIChibGFjaywgbm9uIGxhdGlubykuIE9wdGlvbmFsbHkgYWRkIGhlYWRlciBYLU9QVElPTi1VU1JBQ0VFVEhOSUNJVFktVEFYT05PTVk6IFVTUkFDRUVUSE5JQ0lUWS02Q0xBU1NFUyBmb3IgdHdvIGFkZGl0aW9uYWwgY2xhc3NlcywgQUlfQU4gKEFtZXJpY2FuIEluZGlhbiBvciBBbGFza2FuIE5hdGl2ZSkgYW5kIFBJIChQYWNpZmljIElzbGFuZGVyKS4KKlNvY2lhbEFwaSogfCBbKipwaG9uZUNvZGUqKl0oZG9jcy9Tb2NpYWxBcGkubWQjcGhvbmVDb2RlKSB8ICoqR0VUKiogL2FwaTIvanNvbi9waG9uZUNvZGUve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfS97cGhvbmVOdW1iZXJ9IHwgW1VTRVMgMTEgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgY291bnRyeSBhbmQgcGhvbmUgcHJlZml4LCBnaXZlbiBhIHBlcnNvbmFsIG5hbWUgYW5kIGZvcm1hdHRlZCAvIHVuZm9ybWF0dGVkIHBob25lIG51bWJlci4KKlNvY2lhbEFwaSogfCBbKipwaG9uZUNvZGVCYXRjaCoqXShkb2NzL1NvY2lhbEFwaS5tZCNwaG9uZUNvZGVCYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3Bob25lQ29kZUJhdGNoIHwgW1VTRVMgMTEgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgY291bnRyeSBhbmQgcGhvbmUgcHJlZml4LCBvZiB1cCB0byAxMDAgcGVyc29uYWwgbmFtZXMsIGRldGVjdGluZyBhdXRvbWF0aWNhbGx5IHRoZSBsb2NhbCBjb250ZXh0IGdpdmVuIGEgbmFtZSBhbmQgZm9ybWF0dGVkIC8gdW5mb3JtYXR0ZWQgcGhvbmUgbnVtYmVyLgoqU29jaWFsQXBpKiB8IFsqKnBob25lQ29kZUdlbyoqXShkb2NzL1NvY2lhbEFwaS5tZCNwaG9uZUNvZGVHZW8pIHwgKipHRVQqKiAvYXBpMi9qc29uL3Bob25lQ29kZUdlby97Zmlyc3ROYW1lfS97bGFzdE5hbWV9L3twaG9uZU51bWJlcn0ve2NvdW50cnlJc28yfSB8IFtVU0VTIDExIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IHBob25lIHByZWZpeCwgZ2l2ZW4gYSBwZXJzb25hbCBuYW1lIGFuZCBmb3JtYXR0ZWQgLyB1bmZvcm1hdHRlZCBwaG9uZSBudW1iZXIsIHdpdGggYSBsb2NhbCBjb250ZXh0IChJU08yIGNvdW50cnkgb2YgcmVzaWRlbmNlKS4KKlNvY2lhbEFwaSogfCBbKipwaG9uZUNvZGVHZW9CYXRjaCoqXShkb2NzL1NvY2lhbEFwaS5tZCNwaG9uZUNvZGVHZW9CYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3Bob25lQ29kZUdlb0JhdGNoIHwgW1VTRVMgMTEgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgY291bnRyeSBhbmQgcGhvbmUgcHJlZml4LCBvZiB1cCB0byAxMDAgcGVyc29uYWwgbmFtZXMsIHdpdGggYSBsb2NhbCBjb250ZXh0IChJU08yIGNvdW50cnkgb2YgcmVzaWRlbmNlKS4KKlNvY2lhbEFwaSogfCBbKipwaG9uZUNvZGVHZW9GZWVkYmFja0xvb3AqKl0oZG9jcy9Tb2NpYWxBcGkubWQjcGhvbmVDb2RlR2VvRmVlZGJhY2tMb29wKSB8ICoqR0VUKiogL2FwaTIvanNvbi9waG9uZUNvZGVHZW9GZWVkYmFja0xvb3Ave2ZpcnN0TmFtZX0ve2xhc3ROYW1lfS97cGhvbmVOdW1iZXJ9L3twaG9uZU51bWJlckUxNjR9L3tjb3VudHJ5SXNvMn0gfCBbQ1JFRElUUyAxIFVOSVRdIEZlZWRiYWNrIGxvb3AgdG8gYmV0dGVyIGluZmVyIHRoZSBsaWtlbHkgcGhvbmUgcHJlZml4LCBnaXZlbiBhIHBlcnNvbmFsIG5hbWUgYW5kIGZvcm1hdHRlZCAvIHVuZm9ybWF0dGVkIHBob25lIG51bWJlciwgd2l0aCBhIGxvY2FsIGNvbnRleHQgKElTTzIgY291bnRyeSBvZiByZXNpZGVuY2UpLgoKCiMjIERvY3VtZW50YXRpb24gZm9yIE1vZGVscwoKIC0gW0FQSUJpbGxpbmdQZXJpb2RVc2FnZU91dF0oZG9jcy9BUElCaWxsaW5nUGVyaW9kVXNhZ2VPdXQubWQpCiAtIFtBUElDbGFzc2lmaWVyT3V0XShkb2NzL0FQSUNsYXNzaWZpZXJPdXQubWQpCiAtIFtBUElDbGFzc2lmaWVyVGF4b25vbXlPdXRdKGRvY3MvQVBJQ2xhc3NpZmllclRheG9ub215T3V0Lm1kKQogLSBbQVBJQ2xhc3NpZmllcnNTdGF0dXNPdXRdKGRvY3MvQVBJQ2xhc3NpZmllcnNTdGF0dXNPdXQubWQpCiAtIFtBUElDb3VudGVyVjJPdXRdKGRvY3MvQVBJQ291bnRlclYyT3V0Lm1kKQogLSBbQVBJS2V5T3V0XShkb2NzL0FQSUtleU91dC5tZCkKIC0gW0FQSVBlcmlvZFVzYWdlT3V0XShkb2NzL0FQSVBlcmlvZFVzYWdlT3V0Lm1kKQogLSBbQVBJUGxhblN1YnNjcmlwdGlvbk91dF0oZG9jcy9BUElQbGFuU3Vic2NyaXB0aW9uT3V0Lm1kKQogLSBbQVBJU2VydmljZU91dF0oZG9jcy9BUElTZXJ2aWNlT3V0Lm1kKQogLSBbQVBJU2VydmljZXNPdXRdKGRvY3MvQVBJU2VydmljZXNPdXQubWQpCiAtIFtBUElVc2FnZUFnZ3JlZ2F0ZWRPdXRdKGRvY3MvQVBJVXNhZ2VBZ2dyZWdhdGVkT3V0Lm1kKQogLSBbQVBJVXNhZ2VIaXN0b3J5T3V0XShkb2NzL0FQSVVzYWdlSGlzdG9yeU91dC5tZCkKIC0gW0JhdGNoQ29tbXVuaXR5RW5nYWdlRnVsbE91dF0oZG9jcy9CYXRjaENvbW11bml0eUVuZ2FnZUZ1bGxPdXQubWQpCiAtIFtCYXRjaENvbW11bml0eUVuZ2FnZU91dF0oZG9jcy9CYXRjaENvbW11bml0eUVuZ2FnZU91dC5tZCkKIC0gW0JhdGNoQ29ycmlkb3JGdWxsSW5dKGRvY3MvQmF0Y2hDb3JyaWRvckZ1bGxJbi5tZCkKIC0gW0JhdGNoQ29ycmlkb3JGdWxsT3V0XShkb2NzL0JhdGNoQ29ycmlkb3JGdWxsT3V0Lm1kKQogLSBbQmF0Y2hDb3JyaWRvckluXShkb2NzL0JhdGNoQ29ycmlkb3JJbi5tZCkKIC0gW0JhdGNoQ29ycmlkb3JPdXRdKGRvY3MvQmF0Y2hDb3JyaWRvck91dC5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZUNhc3RlT3V0XShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZUNhc3RlT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lQ2FzdGVncm91cE91dF0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVDYXN0ZWdyb3VwT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lRGlhc3BvcmFlZE91dF0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVEaWFzcG9yYWVkT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lR2VuZGVySW5dKGRvY3MvQmF0Y2hGaXJzdExhc3ROYW1lR2VuZGVySW4ubWQpCiAtIFtCYXRjaEZpcnN0TGFzdE5hbWVHZW5kZXJlZE91dF0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVHZW5kZXJlZE91dC5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZUdlb0luXShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZUdlb0luLm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lR2VvT3V0XShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZUdlb091dC5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZUdlb1N1YmNsYXNzaWZpY2F0aW9uT3V0XShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZUdlb1N1YmNsYXNzaWZpY2F0aW9uT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lR2VvU3ViZGl2aXNpb25Jbl0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVHZW9TdWJkaXZpc2lvbkluLm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lR2VvWmlwcGVkSW5dKGRvY3MvQmF0Y2hGaXJzdExhc3ROYW1lR2VvWmlwcGVkSW4ubWQpCiAtIFtCYXRjaEZpcnN0TGFzdE5hbWVJbl0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVJbi5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZU9yaWdpbmVkT3V0XShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZU9yaWdpbmVkT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lUGhvbmVDb2RlZE91dF0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVQaG9uZUNvZGVkT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lUGhvbmVOdW1iZXJHZW9Jbl0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckdlb0luLm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lUGhvbmVOdW1iZXJJbl0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckluLm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lUmVsaWdpb25lZE91dF0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVSZWxpZ2lvbmVkT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lU3ViZGl2aXNpb25Jbl0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVTdWJkaXZpc2lvbkluLm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lVVNSYWNlRXRobmljaXR5T3V0XShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZVVTUmFjZUV0aG5pY2l0eU91dC5tZCkKIC0gW0JhdGNoTWF0Y2hQZXJzb25hbEZpcnN0TGFzdE5hbWVJbl0oZG9jcy9CYXRjaE1hdGNoUGVyc29uYWxGaXJzdExhc3ROYW1lSW4ubWQpCiAtIFtCYXRjaE5hbWVHZW9Jbl0oZG9jcy9CYXRjaE5hbWVHZW9Jbi5tZCkKIC0gW0JhdGNoTmFtZUluXShkb2NzL0JhdGNoTmFtZUluLm1kKQogLSBbQmF0Y2hOYW1lTWF0Y2hDYW5kaWRhdGVzT3V0XShkb2NzL0JhdGNoTmFtZU1hdGNoQ2FuZGlkYXRlc091dC5tZCkKIC0gW0JhdGNoTmFtZU1hdGNoZWRPdXRdKGRvY3MvQmF0Y2hOYW1lTWF0Y2hlZE91dC5tZCkKIC0gW0JhdGNoUGVyc29uYWxOYW1lQ2FzdGVncm91cE91dF0oZG9jcy9CYXRjaFBlcnNvbmFsTmFtZUNhc3RlZ3JvdXBPdXQubWQpCiAtIFtCYXRjaFBlcnNvbmFsTmFtZURpYXNwb3JhZWRPdXRdKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVEaWFzcG9yYWVkT3V0Lm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVHZW5kZXJlZE91dF0oZG9jcy9CYXRjaFBlcnNvbmFsTmFtZUdlbmRlcmVkT3V0Lm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVHZW9Jbl0oZG9jcy9CYXRjaFBlcnNvbmFsTmFtZUdlb0luLm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVHZW9PdXRdKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVHZW9PdXQubWQpCiAtIFtCYXRjaFBlcnNvbmFsTmFtZUdlb1N1YmNsYXNzaWZpY2F0aW9uT3V0XShkb2NzL0JhdGNoUGVyc29uYWxOYW1lR2VvU3ViY2xhc3NpZmljYXRpb25PdXQubWQpCiAtIFtCYXRjaFBlcnNvbmFsTmFtZUdlb1N1YmRpdmlzaW9uSW5dKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVHZW9TdWJkaXZpc2lvbkluLm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVJbl0oZG9jcy9CYXRjaFBlcnNvbmFsTmFtZUluLm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVPcmlnaW5lZE91dF0oZG9jcy9CYXRjaFBlcnNvbmFsTmFtZU9yaWdpbmVkT3V0Lm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVQYXJzZWRPdXRdKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVQYXJzZWRPdXQubWQpCiAtIFtCYXRjaFBlcnNvbmFsTmFtZVJlbGlnaW9uZWRPdXRdKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVSZWxpZ2lvbmVkT3V0Lm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVTdWJkaXZpc2lvbkluXShkb2NzL0JhdGNoUGVyc29uYWxOYW1lU3ViZGl2aXNpb25Jbi5tZCkKIC0gW0JhdGNoUGVyc29uYWxOYW1lVVNSYWNlRXRobmljaXR5T3V0XShkb2NzL0JhdGNoUGVyc29uYWxOYW1lVVNSYWNlRXRobmljaXR5T3V0Lm1kKQogLSBbQmF0Y2hQcm9wZXJOb3VuQ2F0ZWdvcml6ZWRPdXRdKGRvY3MvQmF0Y2hQcm9wZXJOb3VuQ2F0ZWdvcml6ZWRPdXQubWQpCiAtIFtDb21tdW5pdHlFbmdhZ2VPcHRpb25PdXRdKGRvY3MvQ29tbXVuaXR5RW5nYWdlT3B0aW9uT3V0Lm1kKQogLSBbQ29tbXVuaXR5RW5nYWdlT3V0XShkb2NzL0NvbW11bml0eUVuZ2FnZU91dC5tZCkKIC0gW0NvcnJpZG9yRnVsbE91dF0oZG9jcy9Db3JyaWRvckZ1bGxPdXQubWQpCiAtIFtDb3JyaWRvckluXShkb2NzL0NvcnJpZG9ySW4ubWQpCiAtIFtDb3JyaWRvck91dF0oZG9jcy9Db3JyaWRvck91dC5tZCkKIC0gW0ZlZWRiYWNrTG9vcE91dF0oZG9jcy9GZWVkYmFja0xvb3BPdXQubWQpCiAtIFtGaXJzdExhc3ROYW1lQ2FzdGVPdXRdKGRvY3MvRmlyc3RMYXN0TmFtZUNhc3RlT3V0Lm1kKQogLSBbRmlyc3RMYXN0TmFtZUNhc3RlZ3JvdXBPdXRdKGRvY3MvRmlyc3RMYXN0TmFtZUNhc3RlZ3JvdXBPdXQubWQpCiAtIFtGaXJzdExhc3ROYW1lRGlhc3BvcmFlZE91dF0oZG9jcy9GaXJzdExhc3ROYW1lRGlhc3BvcmFlZE91dC5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVHZW5kZXJJbl0oZG9jcy9GaXJzdExhc3ROYW1lR2VuZGVySW4ubWQpCiAtIFtGaXJzdExhc3ROYW1lR2VuZGVyZWRPdXRdKGRvY3MvRmlyc3RMYXN0TmFtZUdlbmRlcmVkT3V0Lm1kKQogLSBbRmlyc3RMYXN0TmFtZUdlb0luXShkb2NzL0ZpcnN0TGFzdE5hbWVHZW9Jbi5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVHZW9PdXRdKGRvY3MvRmlyc3RMYXN0TmFtZUdlb091dC5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVHZW9TdWJjbGFzc2lmaWNhdGlvbk91dF0oZG9jcy9GaXJzdExhc3ROYW1lR2VvU3ViY2xhc3NpZmljYXRpb25PdXQubWQpCiAtIFtGaXJzdExhc3ROYW1lR2VvU3ViZGl2aXNpb25Jbl0oZG9jcy9GaXJzdExhc3ROYW1lR2VvU3ViZGl2aXNpb25Jbi5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVHZW9aaXBwZWRJbl0oZG9jcy9GaXJzdExhc3ROYW1lR2VvWmlwcGVkSW4ubWQpCiAtIFtGaXJzdExhc3ROYW1lSW5dKGRvY3MvRmlyc3RMYXN0TmFtZUluLm1kKQogLSBbRmlyc3RMYXN0TmFtZU9yaWdpbmVkT3V0XShkb2NzL0ZpcnN0TGFzdE5hbWVPcmlnaW5lZE91dC5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVPdXRdKGRvY3MvRmlyc3RMYXN0TmFtZU91dC5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVQaG9uZUNvZGVkT3V0XShkb2NzL0ZpcnN0TGFzdE5hbWVQaG9uZUNvZGVkT3V0Lm1kKQogLSBbRmlyc3RMYXN0TmFtZVBob25lTnVtYmVyR2VvSW5dKGRvY3MvRmlyc3RMYXN0TmFtZVBob25lTnVtYmVyR2VvSW4ubWQpCiAtIFtGaXJzdExhc3ROYW1lUGhvbmVOdW1iZXJJbl0oZG9jcy9GaXJzdExhc3ROYW1lUGhvbmVOdW1iZXJJbi5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVSZWxpZ2lvbmVkT3V0XShkb2NzL0ZpcnN0TGFzdE5hbWVSZWxpZ2lvbmVkT3V0Lm1kKQogLSBbRmlyc3RMYXN0TmFtZVN1YmRpdmlzaW9uSW5dKGRvY3MvRmlyc3RMYXN0TmFtZVN1YmRpdmlzaW9uSW4ubWQpCiAtIFtGaXJzdExhc3ROYW1lVVNSYWNlRXRobmljaXR5T3V0XShkb2NzL0ZpcnN0TGFzdE5hbWVVU1JhY2VFdGhuaWNpdHlPdXQubWQpCiAtIFtNYXRjaFBlcnNvbmFsRmlyc3RMYXN0TmFtZUluXShkb2NzL01hdGNoUGVyc29uYWxGaXJzdExhc3ROYW1lSW4ubWQpCiAtIFtOYW1lR2VvSW5dKGRvY3MvTmFtZUdlb0luLm1kKQogLSBbTmFtZUluXShkb2NzL05hbWVJbi5tZCkKIC0gW05hbWVNYXRjaENhbmRpZGF0ZU91dF0oZG9jcy9OYW1lTWF0Y2hDYW5kaWRhdGVPdXQubWQpCiAtIFtOYW1lTWF0Y2hDYW5kaWRhdGVzT3V0XShkb2NzL05hbWVNYXRjaENhbmRpZGF0ZXNPdXQubWQpCiAtIFtOYW1lTWF0Y2hlZE91dF0oZG9jcy9OYW1lTWF0Y2hlZE91dC5tZCkKIC0gW1BlcnNvbmFsTmFtZUNhc3RlZ3JvdXBPdXRdKGRvY3MvUGVyc29uYWxOYW1lQ2FzdGVncm91cE91dC5tZCkKIC0gW1BlcnNvbmFsTmFtZURpYXNwb3JhZWRPdXRdKGRvY3MvUGVyc29uYWxOYW1lRGlhc3BvcmFlZE91dC5tZCkKIC0gW1BlcnNvbmFsTmFtZUdlbmRlcmVkT3V0XShkb2NzL1BlcnNvbmFsTmFtZUdlbmRlcmVkT3V0Lm1kKQogLSBbUGVyc29uYWxOYW1lR2VvSW5dKGRvY3MvUGVyc29uYWxOYW1lR2VvSW4ubWQpCiAtIFtQZXJzb25hbE5hbWVHZW9PdXRdKGRvY3MvUGVyc29uYWxOYW1lR2VvT3V0Lm1kKQogLSBbUGVyc29uYWxOYW1lR2VvU3ViY2xhc3NpZmljYXRpb25PdXRdKGRvY3MvUGVyc29uYWxOYW1lR2VvU3ViY2xhc3NpZmljYXRpb25PdXQubWQpCiAtIFtQZXJzb25hbE5hbWVHZW9TdWJkaXZpc2lvbkluXShkb2NzL1BlcnNvbmFsTmFtZUdlb1N1YmRpdmlzaW9uSW4ubWQpCiAtIFtQZXJzb25hbE5hbWVJbl0oZG9jcy9QZXJzb25hbE5hbWVJbi5tZCkKIC0gW1BlcnNvbmFsTmFtZU9yaWdpbmVkT3V0XShkb2NzL1BlcnNvbmFsTmFtZU9yaWdpbmVkT3V0Lm1kKQogLSBbUGVyc29uYWxOYW1lUGFyc2VkT3V0XShkb2NzL1BlcnNvbmFsTmFtZVBhcnNlZE91dC5tZCkKIC0gW1BlcnNvbmFsTmFtZVJlbGlnaW9uZWRPdXRdKGRvY3MvUGVyc29uYWxOYW1lUmVsaWdpb25lZE91dC5tZCkKIC0gW1BlcnNvbmFsTmFtZVN1YmRpdmlzaW9uSW5dKGRvY3MvUGVyc29uYWxOYW1lU3ViZGl2aXNpb25Jbi5tZCkKIC0gW1BlcnNvbmFsTmFtZVVTUmFjZUV0aG5pY2l0eU91dF0oZG9jcy9QZXJzb25hbE5hbWVVU1JhY2VFdGhuaWNpdHlPdXQubWQpCiAtIFtQcm9wZXJOb3VuQ2F0ZWdvcml6ZWRPdXRdKGRvY3MvUHJvcGVyTm91bkNhdGVnb3JpemVkT3V0Lm1kKQogLSBbUmVnaW9uSVNPXShkb2NzL1JlZ2lvbklTTy5tZCkKIC0gW1JlZ2lvbk91dF0oZG9jcy9SZWdpb25PdXQubWQpCiAtIFtSZWxpZ2lvblN0YXRPdXRdKGRvY3MvUmVsaWdpb25TdGF0T3V0Lm1kKQogLSBbU29mdHdhcmVWZXJzaW9uT3V0XShkb2NzL1NvZnR3YXJlVmVyc2lvbk91dC5tZCkKCgojIyBEb2N1bWVudGF0aW9uIGZvciBBdXRob3JpemF0aW9uCgpBdXRoZW50aWNhdGlvbiBzY2hlbWVzIGRlZmluZWQgZm9yIHRoZSBBUEk6CiMjIyBhcGlfa2V5CgotICoqVHlwZSoqOiBBUEkga2V5Ci0gKipBUEkga2V5IHBhcmFtZXRlciBuYW1lKio6IFgtQVBJLUtFWQotICoqTG9jYXRpb24qKjogSFRUUCBoZWFkZXIKCgojIyBSZWNvbW1lbmRhdGlvbgoKSXQncyByZWNvbW1lbmRlZCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgYEFwaUNsaWVudGAgcGVyIHRocmVhZCBpbiBhIG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQgdG8gYXZvaWQgYW55IHBvdGVudGlhbCBpc3N1ZXMuCgojIyBBdXRob3IKCmNvbnRhY3RAbmFtc29yLmNvbQoK readmeEtag: '"7b2d272c7a87dd96811652eab9221dbc3e47c903"' readmeLastModified: Thu, 11 Apr 2024 09:05:05 GMT repositoryId: 165628241 description: >- NamSor API v2 Java SDK - classify personal names accurately by gender, country of origin, or ethnicity. created: '2019-01-14T08:57:20Z' updated: '2025-12-18T09:27:29Z' language: Java archived: false stars: 3 watchers: 2 forks: 0 owner: namsor logo: https://avatars.githubusercontent.com/u/6951565?v=4 license: AGPL-3.0 repoEtag: '"78e28fe6af90cbe999a17b374d2a0cfcbce113c8082666a9331bc3513066dc8d"' repoLastModified: Thu, 18 Dec 2025 09:27:29 GMT foundInMaster: true category: Description Validators id: 13d0d90ebabd4eb9f1a420d9c3406807 - source: openapi3 tags repository: https://github.com/ironcore-dev/openapi-extractor v3: true id: 15586772b825fc246137cce1d6a2d7c7 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWV4dHJhY3RvcgoKWyFbUkVVU0Ugc3RhdHVzXShodHRwczovL2FwaS5yZXVzZS5zb2Z0d2FyZS9iYWRnZS9naXRodWIuY29tL2lyb25jb3JlLWRldi9vcGVuYXBpLWV4dHJhY3RvcildKGh0dHBzOi8vYXBpLnJldXNlLnNvZnR3YXJlL2luZm8vZ2l0aHViLmNvbS9pcm9uY29yZS1kZXYvb3BlbmFwaS1leHRyYWN0b3IpClshW0dvIFJlcG9ydCBDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9pcm9uY29yZS1kZXYvb3BlbmFwaS1leHRyYWN0b3IpXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vaXJvbmNvcmUtZGV2L29wZW5hcGktZXh0cmFjdG9yKQpbIVtHaXRIdWIgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9zdGF0aWMvdjE/bGFiZWw9TGljZW5zZSZtZXNzYWdlPUFwYWNoZS0yLjAmY29sb3I9Ymx1ZSldKExJQ0VOU0UpClshW1BScyBXZWxjb21lXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1BScy13ZWxjb21lLWJyaWdodGdyZWVuLnN2ZyldKGh0dHBzOi8vbWFrZWFwdWxscmVxdWVzdC5jb20pCgpUaGUgYG9wZW5hcGktZXh0cmFjdG9yYCBleHRyYWN0cyB0aGUgT3BlbkFQSSB2MiBhbmQgdjMgc3BlY2lmaWNhdGlvbnMgb2YgYSBnaXZlbiBLdWJlcm5ldGVzIEFQSSBzZXJ2ZXIuCgojIyBJbnN0YWxsYXRpb24KCiMjIyBGcm9tIHNvdXJjZQoKVG8gaW5zdGFsbCB0aGUgYG9wZW5hcGktZXh0cmFjdG9yYCBiaW5hcnkgaW50byB5b3VyIEdvIGJpbiBwYXRoIHJ1bgoKYGBgYmFzaApnbyBpbnN0YWxsIGdpdGh1Yi5jb20vaXJvbmNvcmUtZGV2L29wZW5hcGktZXh0cmFjdG9yL2NtZC9vcGVuYXBpLWV4dHJhY3RvckBtYWluCmBgYAoKIyMgVXNhZ2UKCiMjIyBDb21tYW5kIGJhc2VkIGV4dHJhY3Rpb24KCkluIGNhc2UgeW91IGhhdmUgdGhlIGFwaSBzZXJ2ZXIgYmluYXJ5IHByZXNlbnQsIHlvdSBjYW4gZXh0cmFjdCB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBieSBydW5uaW5nCgpgYGBzaGVsbApvcGVuYXBpLWV4dHJhY3RvciAtLWFwaXNlcnZlci1jb21tYW5kPTxQQVRILVRPLUFQSVNFUlZFUi1CSU4+IFwKICAtLWFwaXNlcnZpY2VzPTxQQVRILVRPLUFQSVNFUlZJQ0VTLURJUj4KYGBgCgojIyMgR28gbW9kdWxlIGJhc2VkIGV4dHJhY3Rpb24KClRoZSBbYHNhbXBsZWBdKC9zYW1wbGUpIGZvbGRlciBjb250YWlucyBhbiBleGFtcGxlIG9uIGhvdyB0byBleHRyYWN0IHRoZSBPcGVuIEFQSSBzcGVjIGZyb20gYW4gYXBpIHNlcnZlciBwYWNrYWdlLiBJbiAKb3VyIGV4YW1wbGUgd2UgYXJlIHVzaW5nIHRoZSBbYGlyb25jb3JlYF0oaHR0cHM6Ly9naXRodWIuY29tL2lyb25jb3JlLWRldi9pcm9uY29yZSkgYWdncmVnYXRlZCBhcGkgc2VydmVyLgoKYGBgc2hlbGwKb3BlbmFwaS1leHRyYWN0b3IgLS1hcGlzZXJ2ZXItcGFja2FnZT1naXRodWIuY29tL2lyb25jb3JlLWRldi9pcm9uY29yZS9jbWQvaXJvbmNvcmUtYXBpc2VydmVyIFwKICAtLWFwaXNlcnZlci1idWlsZC1vcHRzPW1vZCBcCiAgLS1hcGlzZXJ2aWNlcz08UEFUSC1UTy1BUElTRVJWSUNFUy1ESVI+CmBgYAoKSW4gY2FzZSB5b3Ugd2FudCB0byB1c2UgeW91ciBvd24gcGFja2FnZSwgZmlyc3QgYGdvIGdldGAgaXQgc28geW91IGhhdmUgdG8gY29ycmVjdCBkZXBlbmRlbmNpZXMgaW4geW91ciBgZ28ubW9kYCBmaWxlIGFuZAphZGp1c3QgdGhlIGAtLWFwaXNlcnZlci1wYWNrYWdlYCBmbGFnIGFjY29yZGluZ2x5LgoKIyMjIE91dHB1dAoKVGhlIGV4dHJhY3RlZCBPcGVuQVBJIHYyIGFuZCB2MyBmaWxlcyBjYW4gYmUgZm91bmQgaW4gY3VycmVudCBmb2xkZXIgd2hlcmUgdGhlIHYyIHZlcnNpb24gd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGBzd2FnZ2VyLmpzb25gCmZpbGUgYW5kIHRoZSB2MyB2ZXJzaW9ucyB3aWxsIGJlIHN0b3JlZCBpbiBpbmRpdmlkdWFsIGZpbGVzIHBlciBncm91cCBpbiB0aGUgYC4vdjNgIGZvbGRlci4KClRvIG92ZXJyaWRlIHRoZSBsb2NhdGlvbiBvZiB0aGUgb3V0cHV0IHBhc3Mgb24gdGhlIGAtLW91dHB1dGAgZmxhZyBlLmcuIHZpYSBgLS1vdXRwdXQ9ZGV2YCBzdG9yZSBleHRyYWN0IHRoZSBmaWxlcyBpbnRvCnRoZSBgLi9kZXZgIGZvbGRlci4KCiMjIENvbnRyaWJ1dGluZwoKV2UnZCBsb3ZlIHRvIGdldCBmZWVkYmFjayBmcm9tIHlvdS4gUGxlYXNlIHJlcG9ydCBidWdzLCBzdWdnZXN0aW9ucyBvciBwb3N0IHF1ZXN0aW9ucyBieSBvcGVuaW5nIGEgR2l0SHViIGlzc3VlLgoKIyMgTGljZW5zZQoKQ29weXJpZ2h0IDIwMjIuCgpMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgpZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKClVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuClNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCg== readmeEtag: '"292c94eae99bf01ce379b4552a33b4fc65ba3a17"' readmeLastModified: Mon, 12 Aug 2024 14:27:27 GMT repositoryId: 546069232 description: >- This project extracts the OpenAPI v2 and v3 specifications of a given Kubernetes API server created: '2022-10-05T13:22:32Z' updated: '2026-02-03T21:16:52Z' language: Go archived: false stars: 3 watchers: 3 forks: 1 owner: ironcore-dev logo: https://avatars.githubusercontent.com/u/147836484?v=4 license: Apache-2.0 repoEtag: '"ba9c96bc5290eb9cf3567d7380e472b357c1e98aa6ef1a548bdb7449ea392866"' repoLastModified: Tue, 03 Feb 2026 21:16:52 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/kinecosystem/ecosystem-api v3: true repositoryMetadata: base64Readme: >- IyBLaW4gRWNvc3lzdGVtIFNESyBBUEkKCiMjIG1hcmtldHBsYWNlIEFQSQpUaGUgYG9wZW5hcGkueWFtbGAgZmlsZSBjb250YWlucyBkZWZpbml0aW9ucyBvZiB0aGUgc2VydmljZXMgYW5kIG1vZGVscyB0aGF0IHdpbGwgYmUgYXZhaWxhYmxlIGZvciBvdXIgY2xpZW50IHRvIGFjY2VzcyBvbiB0aGUgc2VydmVyLgoKVG8gZWRpdCB0aGUgZmlsZSB5b3UgY2FuIHVzZSB0aGUgW29ubGluZSBlZGl0b3JdKGh0dHA6Ly9lZGl0b3Iuc3dhZ2dlci5pby8/dXJsPWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9raW5mb3VuZGF0aW9uL2Vjb3N5c3RlbS1hcGkvbWFzdGVyL29wZW5hcGkueWFtbCkKCiMjIyBKV1Qgc3BlY3MgYW5kIGV4YW1wbGVzOgojIyMjIEpXVCBlbmNvZGVkIG1lc3NhZ2VzCiMjIyMjIEpXVCBoZWFkZXIgZm9ybWF0CgpGb3IgYWxsIDMgSldUcyB3ZSB3aWxsIHVzZSB0aGUgZm9sbG93aW5nIHRlbXBsYXRlOgpgYGAKewoJYWxnOiBzdHJpbmc7IC8vIEVTMjU2IGJ1dCBjYW4gYmUgZGlzY3Vzc2VkCgl0eXA6IHN0cmluZzsgLy8gSldUCglraWQ6IHN0cmluZzsgLy8gaWRlbnRpZmllciBvZiB0aGUga2V5cGFpciB0aGF0IHdhcyB1c2VkIHRvIHNpZ24gdGhlIEpXVC4gaWRlbnRpZmllcnMgYW5kIHB1YmxpYyBrZXlzIHdpbGwgYmUgcHJvdmlkZWQgYnkgc2lnbmVyIGF1dGhvcml0eS4gVGhpcyBlbmFibGVzIHVzaW5nIG11bHRpcGxlIHByaXZhdGUvcHVibGljIGtleSBwYWlycyAoYSBsaXN0IG9mIHB1YmxpYyBrZXlzIGFuZCB0aGVpciBpZHMgbmVlZCB0byBiZSBwcm92aWRlZCBieSBzaWduZXIgYXV0aG9yaXR5IHRvIHZlcmlmaWVyIGluIGFkdmFuY2VkKQp9CmBgYAoKIyMjIyBSZWdpc3RlciBwYXlsb2FkCmBgYAp7CgkvLyBjb21tb24vIHN0YW5kYXJkIGZpZWxkcwoJaWF0OiBudW1iZXI7ICAvLyBpc3N1ZWQgYXQgLSBzZWNvbmRzIGZyb20gZXBvYwoJaXNzOiBzdHJpbmc7IC8vIGlzc3VlcgoJZXhwOiBudW1iZXI7IC8vIGV4cGlyYXRpb24KCXN1Yjogc3RyaW5nOyAvLyBzdWJqZWN0IC0gInJlZ2lzdGVyIgoKCS8vIGFwcGxpY2F0aW9uIGZpZWxkcwoJdXNlcl9pZDogc3RyaW5nOyAvLyBpZCBvZiB0aGUgdXNlciAtIG9yIGEgZGV0ZXJtaW5pc3RpYyB1bmlxdWUgaWQgZm9yIHRoZSB1c2VyIChoYXNoKQp9CmBgYAojIyMjIyBbRXhhbXBsZSAodmlld2FibGUgb24gand0LmlvKV0oaHR0cHM6Ly9qd3QuaW8vP3Rva2VuPWV5SmhiR2NpT2lKRlV6STFOaUlzSW5SNWNDSTZJa3BYVkNJc0ltdHBaQ0k2SW5OdmJXVmZhV1FpZlEuZXlKcFlYUWlPakUxTVRZeU16a3dNaklzSW1semN5STZJbXRwYXlCelpYSjJaWElpTENKbGVIQWlPakUxTWpZeU16a3dNaklzSW5OMVlpSTZJbkpsWjJsemRHVnlJaXdpZFhObGNsOXBaQ0k2SW1GZmFHRnphRjl2Ymw5cmFXdGZkWE5sY2w5cFpDSjkuNkR3b2pzcFE0NmlubHdZd24zTk5IMGJtUUl6S2Q3bUwwVlg4VjJabWxIOGFacVdGMlViS19NZDVrY3hnblhncTBQNnRFeFZUcjF2eHB3aGZqN18zZGcpCmBgYApleUpoYkdjaU9pSkZVekkxTmlJc0luUjVjQ0k2SWtwWFZDSXNJbXRwWkNJNkluTnZiV1ZmYVdRaWZRLmV5SnBZWFFpT2pFMU1UWXlNemt3TWpJc0ltbHpjeUk2SW10cGF5QnpaWEoyWlhJaUxDSmxlSEFpT2pFMU1qWXlNemt3TWpJc0luTjFZaUk2SW5KbFoybHpkR1Z5SWl3aWRYTmxjbDlwWkNJNkltRmZhR0Z6YUY5dmJsOXJhV3RmZFhObGNsOXBaQ0o5LjZEd29qc3BRNDZpbmx3WXduM05OSDBibVFJektkN21MMFZYOFYyWm1sSDhhWnFXRjJVYktfTWQ1a2N4Z25YZ3EwUDZ0RXhWVHIxdnhwd2hmajdfM2RnCmBgYAoKIyMjIyBTcGVuZCBwYXlsb2FkCmBgYAp7CglpYXQ6IG51bWJlcjsgIC8vIGlzc3VlZCBhdCAtIHNlY29uZHMgZnJvbSBlcG9jCglpc3M6IHN0cmluZzsgLy8gaXNzdWVyCglleHA6IG51bWJlcjsgLy8gZXhwaXJhdGlvbgoJc3ViOiBzdHJpbmc7IC8vIHN1YmplY3QgLSAic3BlbmQiCgoJbm9uY2U6IHN0cmluZzsgLy8gb3B0aW9uYWwsIHRvIGNyZWF0ZSBhIHVuaXF1ZSBwYWlyIGZvciBvZmZlciBpZCBwZXIgdXNlcgoJb2ZmZXI6IHsKCQlpZDogc3RyaW5nOyAvLyBvZmZlciBpZCAtIGlkIGlzIGRlY2lkZWQgYnkgZGlnaXRhbCBzZXJ2aWNlCgkJYW1vdW50OiBudW1iZXI7IC8vIGFtb3VudCBvZiBraW4gZm9yIHRoaXMgb2ZmZXIgLSBwcmljZQoJfTsKCXNlbmRlcjogewoJCXVzZXJfaWQ6IHN0cmluZzsgLy8gb3B0aW9uYWw6IHVzZXJfaWQgd2hvIHdpbGwgcGVyZm9ybSB0aGUKCQl0aXRsZTogc3RyaW5nOyAvLyBvcmRlciB0aXRsZSAtIGFwcGVhcnMgaW4gb3JkZXIgaGlzdG9yeQoJCWRlc2NyaXB0aW9uOiBzdHJpbmc7IC8vIG9yZGVyIGRlc2NyaXB0aW9uIC0gYXBwZWFycyBpbiBvcmRlciBoaXN0b3J5Cgl9Owp9CmBgYAojIyMjIyBbRXhhbXBsZSAodmlld2FibGUgb24gand0LmlvKV0oaHR0cHM6Ly9qd3QuaW8vP3Rva2VuPWV5SmhiR2NpT2lKRlV6STFOaUlzSW5SNWNDSTZJa3BYVkNJc0ltdHBaQ0k2SW5OdmJXVmZhV1FpZlEuZXlKcFlYUWlPakUxTVRZeU16a3dNaklzSW1semN5STZJbXRwYXlCelpYSjJaWElpTENKbGVIQWlPakUxTWpZeU16a3dNaklzSW5OMVlpSTZJbk53Wlc1a0lpd2liMlptWlhJaU9uc2lhV1FpT2lKUE1USXpNVEl6TVRJeklpd2lZVzF2ZFc1MElqbzFNREF3ZlN3aWMyVnVaR1Z5SWpwN0luUnBkR3hsSWpvaVFteDFaU0JVYUdWdFpTSXNJbVJsYzJOeWFYQjBhVzl1SWpvaVQyTmxZVzRnUW14MVpTSXNJblZ6WlhKZmFXUWlPaUp6YjIxbFgzVnpaWElpZlgwLkJSYWNKMzd6YmJhS2l2V0RfdWhDMkpYb3p6ckhETjVCOVZlRzdkMUJYamtwUFlFZnBhRXlfa0tGNnhxcDdvVU1qRUcybHRyT1FQSi1Va0ZjRmw2SC1nKQpgYGAKZXlKaGJHY2lPaUpGVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0lzSW10cFpDSTZJbk52YldWZmFXUWlmUS5leUpwWVhRaU9qRTFNVFl5TXprd01qSXNJbWx6Y3lJNkltdHBheUJ6WlhKMlpYSWlMQ0psZUhBaU9qRTFNall5TXprd01qSXNJbk4xWWlJNkluTndaVzVrSWl3aWIyWm1aWElpT25zaWFXUWlPaUpQTVRJek1USXpNVEl6SWl3aVlXMXZkVzUwSWpvMU1EQXdmU3dpYzJWdVpHVnlJanA3SW5ScGRHeGxJam9pUW14MVpTQlVhR1Z0WlNJc0ltUmxjMk55YVhCMGFXOXVJam9pVDJObFlXNGdRbXgxWlNJc0luVnpaWEpmYVdRaU9pSnpiMjFsWDNWelpYSWlmWDAuQlJhY0ozN3piYmFLaXZXRF91aEMySlhvenpySERONUI5VmVHN2QxQlhqa3BQWUVmcGFFeV9rS0Y2eHFwN29VTWpFRzJsdHJPUVBKLVVrRmNGbDZILWcKYGBgCiMjIyMgRWFybiBwYXlsb2FkCmBgYAp7CglpYXQ6IG51bWJlcjsgIC8vIGlzc3VlZCBhdCAtIHNlY29uZHMgZnJvbSBlcG9jCglpc3M6IHN0cmluZzsgLy8gaXNzdWVyCglleHA6IG51bWJlcjsgLy8gZXhwaXJhdGlvbgoJc3ViOiBzdHJpbmc7IC8vIHN1YmplY3QgLSAiZWFybiIKCglub25jZTogc3RyaW5nOyAvLyBvcHRpb25hbCwgdG8gY3JlYXRlIGEgdW5pcXVlIHBhaXIgZm9yIG9mZmVyIGlkIHBlciB1c2VyCglvZmZlcjogewoJCWlkOiBzdHJpbmc7IC8vIG9mZmVyIGlkIC0gaWQgaXMgZGVjaWRlZCBieSBkaWdpdGFsIHNlcnZpY2UKCQlhbW91bnQ6IG51bWJlcjsgLy8gYW1vdW50IG9mIGtpbiBmb3IgdGhpcyBvZmZlciAtIHByaWNlCgl9OwoJcmVjaXBpZW50OiB7CgkJdXNlcl9pZDogc3RyaW5nOyAvLyB1c2VyX2lkIHdobyB3aWxsIHBlcmZvcm0gdGhlIG9yZGVyCgkJdGl0bGU6IHN0cmluZzsgLy8gb3JkZXIgdGl0bGUgLSBhcHBlYXJzIGluIG9yZGVyIGhpc3RvcnkKCQlkZXNjcmlwdGlvbjogc3RyaW5nOyAvLyBvcmRlciBkZXNjcmlwdGlvbiAtIGFwcGVhcnMgaW4gb3JkZXIgaGlzdG9yeQoJfTsKfQpgYGAKIyMjIyMgW0V4YW1wbGUgKHZpZXdhYmxlIG9uIGp3dC5pbyldKGh0dHBzOi8vand0LmlvLz90b2tlbj1leUpoYkdjaU9pSkZVekkxTmlJc0luUjVjQ0k2SWtwWFZDSXNJbXRwWkNJNkluTnZiV1ZmYVdRaWZRLmV5SnBZWFFpT2pFMU1UWXlNemt3TWpJc0ltbHpjeUk2SW10cGF5QnpaWEoyWlhJaUxDSmxlSEFpT2pFMU1qWXlNemt3TWpJc0luTjFZaUk2SW1WaGNtNGlMQ0p2Wm1abGNpSTZleUpwWkNJNklrOHhNak14TWpNeE1qTWlMQ0poYlc5MWJuUWlPalV3TURCOUxDSnlaV05wY0dsbGJuUWlPbnNpZEdsMGJHVWlPaUpDYkhWbElGUm9aVzFsSWl3aVpHVnpZM0pwY0hScGIyNGlPaUpQWTJWaGJpQkNiSFZsSWl3aWRYTmxjbDlwWkNJNkluTnZiV1ZmZFhObGNpSjlmUS5SN09wdmFaUUlBempRME1TaTVuQzFjMzlvQzlvTjA4TlZLd3JpY015V251TWJLNUZEOVFuNmVjbW9sNEpuTUdFNUlaQTdqX0xSLUVFYlZoaEVZaTU3ZykKYGBgCmV5SmhiR2NpT2lKRlV6STFOaUlzSW5SNWNDSTZJa3BYVkNJc0ltdHBaQ0k2SW5OdmJXVmZhV1FpZlEuZXlKcFlYUWlPakUxTVRZeU16a3dNaklzSW1semN5STZJbXRwYXlCelpYSjJaWElpTENKbGVIQWlPakUxTWpZeU16a3dNaklzSW5OMVlpSTZJbVZoY200aUxDSnZabVpsY2lJNmV5SnBaQ0k2SWs4eE1qTXhNak14TWpNaUxDSmhiVzkxYm5RaU9qVXdNREI5TENKeVpXTnBjR2xsYm5RaU9uc2lkR2wwYkdVaU9pSkNiSFZsSUZSb1pXMWxJaXdpWkdWelkzSnBjSFJwYjI0aU9pSlBZMlZoYmlCQ2JIVmxJaXdpZFhObGNsOXBaQ0k2SW5OdmJXVmZkWE5sY2lKOWZRLlI3T3B2YVpRSUF6alEwTVNpNW5DMWMzOW9DOW9OMDhOVkt3cmljTXlXbnVNYks1RkQ5UW42ZWNtb2w0Sm5NR0U1SVpBN2pfTFItRUViVmhoRVlpNTdnCmBgYAojIyMjIFBheVRvVXNlciBwYXlsb2FkCmBgYAp7CglpYXQ6IG51bWJlcjsgIC8vIGlzc3VlZCBhdCAtIHNlY29uZHMgZnJvbSBlcG9jCglpc3M6IHN0cmluZzsgLy8gaXNzdWVyCglleHA6IG51bWJlcjsgLy8gZXhwaXJhdGlvbgoJc3ViOiBzdHJpbmc7IC8vIHN1YmplY3QgLSAicGF5X3RvX3VzZXIiCgoJbm9uY2U6IHN0cmluZzsgLy8gb3B0aW9uYWwsIHRvIGNyZWF0ZSBhIHVuaXF1ZSBwYWlyIGZvciBvZmZlciBpZCBwZXIgdXNlcgoJb2ZmZXI6IHsKCQlpZDogc3RyaW5nOyAvLyBvZmZlciBpZCAtIGlkIGlzIGRlY2lkZWQgYnkgZGlnaXRhbCBzZXJ2aWNlCgkJYW1vdW50OiBudW1iZXI7IC8vIGFtb3VudCBvZiBraW4gZm9yIHRoaXMgb2ZmZXIgLSBwcmljZQoJfTsKCXNlbmRlcjogewoJCXVzZXJfaWQ6IHN0cmluZzsgLy8gb3B0aW9uYWw6IHVzZXJfaWQgd2hvIHdpbGwgcGVyZm9ybSB0aGUgb3JkZXIKCQl0aXRsZTogc3RyaW5nOyAvLyBvZmZlciB0aXRsZSAtIGFwcGVhcnMgaW4gb3JkZXIgaGlzdG9yeQoJCWRlc2NyaXB0aW9uOiBzdHJpbmc7IC8vIG9mZmVyIGRlc2NyaXB0aW9uIC0gYXBwZWFycyBpbiBvcmRlciBoaXN0b3J5Cgl9OwoJcmVjaXBpZW50OiB7CgkJdXNlcl9pZDogc3RyaW5nOyAvLyB1c2VyX2lkIHdobyB3aWxsIHJlY2VpdmUgdGhlIG9yZGVyCgkJdGl0bGU6IHN0cmluZzsgLy8gb2ZmZXIgdGl0bGUgLSBhcHBlYXJzIGluIG9yZGVyIGhpc3RvcnkKCQlkZXNjcmlwdGlvbjogc3RyaW5nOyAvLyBvZmZlciBkZXNjcmlwdGlvbiAtIGFwcGVhcnMgaW4gb3JkZXIgaGlzdG9yeQoJfTsKfQpgYGAKIyMjIyMgW0V4YW1wbGUgKHZpZXdhYmxlIG9uIGp3dC5pbyldKGh0dHBzOi8vand0LmlvLz90b2tlbmV5SmhiR2NpT2lKRlV6STFOaUlzSW5SNWNDSTZJa3BYVkNJc0ltdHBaQ0k2SW5OdmJXVmZhV1FpZlEuZXlKcFlYUWlPakUxTVRZeU16a3dNaklzSW1semN5STZJbXRwYXlCelpYSjJaWElpTENKbGVIQWlPakUxTWpZeU16a3dNaklzSW5OMVlpSTZJbkJoZVY5MGIxOTFjMlZ5SWl3aWIyWm1aWElpT25zaWFXUWlPaUpQTVRJek1USXpNVEl6SWl3aVlXMXZkVzUwSWpvMU1EQXdmU3dpYzJWdVpHVnlJanA3SW5ScGRHeGxJam9pVkdsd0lFWnliMjBnUkc5dlpIa2lMQ0prWlhOamNtbHdkR2x2YmlJNklrUnZiMlI1SUhScGNIQmxaQ0I1YjNVaUxDSjFjMlZ5WDJsa0lqb2lkWE5sY2pwdWFYUjZZVzRpZlN3aWNtVmphWEJwWlc1MElqcDdJblJwZEd4bElqb2lWR2x3SUZSdklFNXBkSHBoYmlJc0ltUmxjMk55YVhCMGFXOXVJam9pV1c5MUlIUnBjSEJsWkNCT2FYUjZZVzRpTENKMWMyVnlYMmxrSWpvaWRYTmxjanBrYjI5a2VTSjlmUS5HVnVmeUFJMlVrcHp6TGxTTDdhX2tiNUpjZFNrZ0JiMVBuemRMN3dVa0lHeC1JVVV1X3BnVGVjRWx3VGJadldyQ1NyX0drSjRsZUQxTW5YSFNVYl9RUSkKYGBgCmV5SmhiR2NpT2lKRlV6STFOaUlzSW5SNWNDSTZJa3BYVkNJc0ltdHBaQ0k2SW5OdmJXVmZhV1FpZlEuZXlKcFlYUWlPakUxTVRZeU16a3dNaklzSW1semN5STZJbXRwYXlCelpYSjJaWElpTENKbGVIQWlPakUxTWpZeU16a3dNaklzSW5OMVlpSTZJbkJoZVY5MGIxOTFjMlZ5SWl3aWIyWm1aWElpT25zaWFXUWlPaUpQTVRJek1USXpNVEl6SWl3aVlXMXZkVzUwSWpvMU1EQXdmU3dpYzJWdVpHVnlJanA3SW5ScGRHeGxJam9pVkdsd0lFWnliMjBnUkc5dlpIa2lMQ0prWlhOamNtbHdkR2x2YmlJNklrUnZiMlI1SUhScGNIQmxaQ0I1YjNVaUxDSjFjMlZ5WDJsa0lqb2lkWE5sY2pwdWFYUjZZVzRpZlN3aWNtVmphWEJwWlc1MElqcDdJblJwZEd4bElqb2lWR2x3SUZSdklFNXBkSHBoYmlJc0ltUmxjMk55YVhCMGFXOXVJam9pV1c5MUlIUnBjSEJsWkNCT2FYUjZZVzRpTENKMWMyVnlYMmxrSWpvaWRYTmxjanBrYjI5a2VTSjlmUS5HVnVmeUFJMlVrcHp6TGxTTDdhX2tiNUpjZFNrZ0JiMVBuemRMN3dVa0lHeC1JVVV1X3BnVGVjRWx3VGJadldyQ1NyX0drSjRsZUQxTW5YSFNVYl9RUQpgYGAKIyMjIyBQYXltZW50Q29uZmlybWF0aW9uIHBheWxvYWQKYGBgCnsKCWlhdDogbnVtYmVyOyAgLy8gaXNzdWVkIGF0IC0gc2Vjb25kcyBmcm9tIGVwb2MKCWlzczogc3RyaW5nOyAvLyBpc3N1ZXIKCWV4cDogbnVtYmVyOyAvLyBleHBpcmF0aW9uCglzdWI6IHN0cmluZzsgLy8gc3ViamVjdCAtICJwYXltZW50X2NvbmZpcm1hdGlvbiIKCglzZW5kZXJfdXNlcl9pZDogc3RyaW5nOyAvLyB1c2VyIGlkZW50aWZpZXIgLSBzYW1lIHZhbHVlIGFzIGdpdmVuIGJ5IHJlZ2lzdGVyCglyZWNpcGllbnRfdXNlcl9pZDogc3RyaW5nOyAvLyB1c2VyIGlkZW50aWZpZXIgLSBzYW1lIHZhbHVlIGFzIGdpdmVuIGJ5IHJlZ2lzdGVyCglvZmZlcl9pZDogc3RyaW5nOyAvLyBvZmZlciBpZCAtIGlkIGlzIGRlY2lkZWQgYnkgZGlnaXRhbCBzZXJ2aWNlCglub25jZTogc3RyaW5nOyAvLyB0aGUgc2FtZSBhcyB3YXMgc2VuZCBpbiB0aGUgb3JkZXIgSldULCBvciBhIGRlZmF1bHQgdmFsdWUgaW4gY2FzZSBub25lIHdhcyB1c2VkCglwYXltZW50OiB7CgkJYmxvY2tjaGFpbjogc3RyaW5nOyAvLyBpZGVudGlmaWVyIG9mIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdGhlIHRyYW5zYWN0aW9uIHdhcyBtYWRlIG9uCgkJdHJhbnNhY3Rpb25faWQ6IHN0cmluZzsgLy8gc3RlbGxhciBpZGVudGlmaWVyIG9mIHRoZSBibG9ja2NoYWluIHRyYW5zYWN0aW9uCgl9Owp9CmBgYAojIyMjIyBbRXhhbXBsZSAodmlld2FibGUgb24gand0LmlvKV0oaHR0cHM6Ly9qd3QuaW8vP3Rva2VuPWV5SmhiR2NpT2lKRlV6STFOaUlzSW5SNWNDSTZJa3BYVkNJc0ltdHBaQ0k2SW5OdmJXVmZhV1FpZlEuZXlKcFlYUWlPakUxTVRZeU16a3dNaklzSW1semN5STZJbXRwYXlJc0ltVjRjQ0k2TVRVeU5qSXpPVEF5TWl3aWMzVmlJam9pY0dGNWJXVnVkRjlqYjI1bWFYSnRZWFJwYjI0aUxDSnZabVpsY2w5cFpDSTZJazh4TWpNeE1qTXhNak1pTENKelpXNWtaWEpmZFhObGNsOXBaQ0k2SW5WelpYSTZaRzl2WkhraUxDSnlaV05wY0dsbGJuUmZkWE5sY2w5cFpDSTZJblZ6WlhJNmJtbDBlbUZ1SWl3aWNHRjViV1Z1ZENJNmV5SmliRzlqYTJOb1lXbHVJam9pYzNSbGJHeGhjaTF0WVdsdWJtVjBJaXdpZEhKaGJuTmhZM1JwYjI1ZmFXUWlPaUowY21GdWMyRmpkR2x2YmpveE1qTTBOU0o5ZlEuLUFiWk9mQzY5ZVkxSXQ0M1JjY09YbHVZLXNqV1NpNEpGdlFrVktPOUQyVWdZVTNqTlBiRWNCRVJMcnFCSFBTcFM2ZjI2TFZwSXNnNUE4MVVRTm91a3cpCmBgYApleUpoYkdjaU9pSkZVekkxTmlJc0luUjVjQ0k2SWtwWFZDSXNJbXRwWkNJNkluTnZiV1ZmYVdRaWZRLmV5SnBZWFFpT2pFMU1UWXlNemt3TWpJc0ltbHpjeUk2SW10cGF5SXNJbVY0Y0NJNk1UVXlOakl6T1RBeU1pd2ljM1ZpSWpvaWNHRjViV1Z1ZEY5amIyNW1hWEp0WVhScGIyNGlMQ0p2Wm1abGNsOXBaQ0k2SWs4eE1qTXhNak14TWpNaUxDSnpaVzVrWlhKZmRYTmxjbDlwWkNJNkluVnpaWEk2Wkc5dlpIa2lMQ0p5WldOcGNHbGxiblJmZFhObGNsOXBaQ0k2SW5WelpYSTZibWwwZW1GdUlpd2ljR0Y1YldWdWRDSTZleUppYkc5amEyTm9ZV2x1SWpvaWMzUmxiR3hoY2kxdFlXbHVibVYwSWl3aWRISmhibk5oWTNScGIyNWZhV1FpT2lKMGNtRnVjMkZqZEdsdmJqb3hNak0wTlNKOWZRLi1BYlpPZkM2OWVZMUl0NDNSY2NPWGx1WS1zaldTaTRKRnZRa1ZLTzlEMlVnWVUzak5QYkVjQkVSTHJxQkhQU3BTNmYyNkxWcElzZzVBODFVUU5vdWt3CmBgYAoKIyMjIyBLZXkgUGFpciB1c2VkIGluIEV4YW1wbGVzClB1YmxpYzoKYGBgCi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUVWcy9vNSt1UWJUakwzY2h5bkw0d1hnVWcyUjkKcTlVVThJNW1Fb3ZVZjg2UVo3a09CSWpKd3FuekQxb21hZ2VFSFd3SGRCTzZCK2RGYWJtZFQ5UE94Zz09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQpgYGAKUHJpdmF0ZToKYGBgCi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQpNSUdIQWdFQU1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhCRzB3YXdJQkFRUWdldlp6TDFnZEFGcjg4aGIyCk9GLzJOeEFwSkN6R0NFRGRmU3A2VlFPMzBoeWhSQU5DQUFRUld6K2puNjVCdE9NdmR5SEtjdmpCZUJTRFpIMnIKMVJUd2ptWVNpOVIvenBCbnVRNEVpTW5DcWZNUFdpWnFCNFFkYkFkMEU3b0g1MFZwdVoxUDA4N0cKLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQpgYGAKCiMjIGludGVybmFsIHBheW1lbnQKClRvIGVkaXQgdGhlIGZpbGUgeW91IGNhbiB1c2UgdGhlIFtvbmxpbmUgZWRpdG9yXShodHRwOi8vZWRpdG9yLnN3YWdnZXIuaW8vP3VybD1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20va2luZm91bmRhdGlvbi9lY29zeXN0ZW0tYXBpL21hc3Rlci9wYXltZW50LnlhbWwpCgojIyBjcmVhdGluZyBjbGllbnQgc3R1YnMKCm9wZW5hcGkzIGNvZGUgZ2VuZXJhdGlvbiBpcyBzdXBwb3J0ZWQgYnkgYSBmZXcgcHJvamVjdHMKCiMjIyBqYXZhCgp1c2luZyBgZ2l0aHViLmNvbTpzd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW5gIG9uIGJyYW5jaCBgdjMuMC4wLXJjMGAgY29tcGlsZSB0aGUgbWF2ZW4gcHJvamVjdCBhbmQgcnVuIHRoZSBmb2xsb3dpbmc6CmBgYApqYXZhIC1qYXIgbW9kdWxlcy9zd2FnZ2VyLWNvZGVnZW4tY2xpL3RhcmdldC9zd2FnZ2VyLWNvZGVnZW4tY2xpLmphciBnZW5lcmF0ZSAtaSB+L1dvcmtzcGFjZS9lY29zeXN0ZW0tYXBpL29wZW5hcGkueWFtbCAtbCBqYXZhICAtbyBqYXZhX2NsaWVudApgYGAK readmeEtag: '"3d07024df169f71b5b319c3262feda2c79c513fb"' readmeLastModified: Wed, 12 Jun 2019 09:07:10 GMT repositoryId: 118761691 description: Apis for client server communication created: '2018-01-24T12:21:15Z' updated: '2023-01-28T08:54:54Z' language: Java archived: true stars: 3 watchers: 15 forks: 4 owner: kinecosystem logo: https://avatars.githubusercontent.com/u/28860603?v=4 repoEtag: '"55701ae4af9cece1b2ec4c39d6fd2262c6b62bf1fa2b13e6629e35b126426777"' repoLastModified: Sat, 28 Jan 2023 08:54:54 GMT foundInMaster: true category: Parsers id: e55fb0f4040961fcbf22287ee716269c - source: openapi3 tags repository: https://github.com/mantisnet/yang-to-openapi v3: true repositoryMetadata: base64Readme: >- IyB5YW5nLXRvLW9wZW5hcGkKWUFORyB0byBPcGVuQVBJIDMuMC54IGNvbnZlcnRlciB0byBzZWxmLWRvY3VtZW50IFlBTkcgbW9kZWxzCg== readmeEtag: '"3a038dba68cbabdef7e20976d3d97ada3ac13110"' readmeLastModified: Wed, 03 Jun 2020 20:39:25 GMT repositoryId: 269189795 description: YANG to OpenAPI 3.0.x converter to self-document YANG models created: '2020-06-03T20:39:24Z' updated: '2020-06-08T10:41:39Z' language: null archived: false stars: 3 watchers: 3 forks: 0 owner: MantisNet logo: https://avatars.githubusercontent.com/u/66088252?v=4 license: Apache-2.0 repoEtag: '"b83854af0ca531b4ba475bb3addb47c0c0fad22c8e178fec4a758003bb38ab05"' repoLastModified: Mon, 08 Jun 2020 10:41:39 GMT foundInMaster: true category: Parsers id: 6cf84626e965ab5c8d7b428d18aafde4 - source: openapi3 tags repository: https://github.com/husniadil/next-swagger-ui v3: true repositoryMetadata: base64Readme: >- IyBOZXh0LVN3YWdnZXItVUkKCioqTmV4dC1Td2FnZ2VyLVVJKiogd3JhcHMgW1N3YWdnZXIgVUldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpKSB1c2luZyBbTmV4dC5qc10oaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzKSBhbmQgW3N3YWdnZXItdWktcmVhY3RdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3N3YWdnZXItdWktcmVhY3QpIGNvbXBvbmVudC4KClVubGlrZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBbc3dhZ2dlci11aS1yZWFjdF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvc3dhZ2dlci11aS1yZWFjdCksIHRoZSAqKk5leHQtU3dhZ2dlci1VSSoqIGluY2x1ZGVzIFRvcGJhciBvdXQtb2YtdGhlLWJveCBmb3IgZHluYW1pYyBzY2hlbWEgbG9hZGluZy4KCiMjIERlcGxveSB5b3VyIG93bgoKWyFbRGVwbG95IHdpdGggVmVyY2VsXShodHRwczovL3ZlcmNlbC5jb20vYnV0dG9uKV0oaHR0cHM6Ly92ZXJjZWwuY29tL2ltcG9ydC9wcm9qZWN0P3RlbXBsYXRlPWh0dHBzOi8vZ2l0aHViLmNvbS9odXNuaWFkaWwvbmV4dC1zd2FnZ2VyLXVpKQo= readmeEtag: '"a32c8ad9a2865fd68a0862d2fa77796e7e16b4c9"' readmeLastModified: Tue, 01 Dec 2020 17:09:58 GMT repositoryId: 315043097 description: Wraps Swagger UI using Next.js created: '2020-11-22T13:23:45Z' updated: '2022-04-26T02:48:09Z' language: JavaScript archived: false stars: 3 watchers: 1 forks: 0 owner: husniadil logo: https://avatars.githubusercontent.com/u/10581130?v=4 license: Apache-2.0 repoEtag: '"f6e68f7d3383a7a6aea050d262bcc6ab00cfec103674434665b32d80b8f9963f"' repoLastModified: Tue, 26 Apr 2022 02:48:09 GMT foundInMaster: true category: - SDK - Code Generators id: a824a1b919bb33cccd842418c40d075b - source: - openapi3 tags - openapi31 tags repository: https://github.com/api-flows/api-flows-studio v3: true v3_1: true id: 49c00ed55edcee7a3f8e051e5e1b6334 repositoryMetadata: base64Readme: >- IyBBUEkgRmxvd3MgU3R1ZGlvCgpBUEkgd29ya2Zsb3cgdmlld2VyLgoKIyMgT3ZlcnZpZXcKClRoZSBBUEkgRmxvd3MgU3R1ZGlvIGlzIGEgd2ViIGFwcGxpY2F0aW9uIHRoYXQgbG9hZHMgYW5kIGRpc3BsYXlzIGFuIE9wZW5BUEkgd29ya2Zsb3cgZmlsZSwgYmFzZWQgb24gdGhlIFtPQUkgQXJhenpvIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvQXJhenpvLVNwZWNpZmljYXRpb24vKS4KCjxwIGFsaWduPSJjZW50ZXIiPgogICAgPGltZyBzcmM9ImhvbWUuZ2lmIj4KPC9wPgoKIyMgQWNjZXNzIHRoZSB3ZWIgc2l0ZQoKVHJ5IGl0IG91dCBvbiBbYXBpLWZsb3dzLmNvbV0oaHR0cHM6Ly9hcGktZmxvd3MuY29tLykKCiMjIFJ1biBvbiBHaXRwb2QKClshW09wZW4gaW4gR2l0cG9kXShodHRwczovL2dpdHBvZC5pby9idXR0b24vb3Blbi1pbi1naXRwb2Quc3ZnKV0oaHR0cHM6Ly9naXRwb2QuaW8vI2h0dHBzOi8vZ2l0aHViLmNvbS9BUEktRmxvd3MvYXBpLWZsb3dzLXN0dWRpby90cmVlL21haW4pCgoKIyMgUnVuIG9uIGxvY2FsCgpDbG9uZSBmcm9tIHRoZSBHaXRIdWIgcmVwb3NpdG9yeQoKYGBgYmFzaAogIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vQVBJLUZsb3dzL2FwaS1mbG93cy1zdHVkaW8uZ2l0CiAgY2QgYXBpLWZsb3dzLXN0dWRpbwogIG12biBzcHJpbmctYm9vdDpydW4gLURza2lwLmZyb250ZW5kLmJ1aWxkPWZhbHNlCmBgYAo= readmeEtag: '"55f24c71d7032a7513376c3a4fe65828fdaf7215"' readmeLastModified: Tue, 18 Jun 2024 18:37:39 GMT repositoryId: 736327040 description: 'Visualize OpenAPI (Arazzo) workflows ' created: '2023-12-27T15:51:24Z' updated: '2025-09-17T13:49:19Z' language: Java archived: false stars: 6 watchers: 1 forks: 0 owner: API-Flows logo: https://avatars.githubusercontent.com/u/153562650?v=4 license: Apache-2.0 repoEtag: '"b6a5629e18b4eb45f8df091a97b5b08f80a2c932c6b25965e15e4f9c74e431cc"' repoLastModified: Wed, 17 Sep 2025 13:49:19 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/bhaveshdev09/vendor-hub-api v3: true id: db572b2a5135603185743334e3579f99 repositoryMetadata: base64Readme: >- IyBWZW5kb3IgSHViIEFQSQoKQSBWZW5kb3IgTWFuYWdlbWVudCBTeXN0ZW0oVk1TKSBhcGlzICBmb3IgZWZmaWNpZW50IHZlbmRvciBwcm9maWxlIG1hbmFnZW1lbnQsIHB1cmNoYXNlIG9yZGVyIHRyYWNraW5nLCBhbmQgdmVuZG9yIHBlcmZvcm1hbmNlIG1ldHJpY3MgY2FsY3VsYXRpb24uCgohW1B5dGhvbiB2ZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1B5dGhvbi0zLjEwLjgtNGM1NjZhP2xvZ289cHl0aG9uJiZsb25nQ2FjaGU9dHJ1ZSZsb2dvQ29sb3I9d2hpdGUmY29sb3JCPXBpbmsmc3R5bGU9ZmxhdC1zcXVhcmUmY29sb3JBPTRjNTY2YSkgIVtEamFuZ28gdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9EamFuZ28tNC4yLjgtNGM1NjZhP2xvZ289ZGphbmdvJiZsb25nQ2FjaGU9dHJ1ZWxvZ29Db2xvcj13aGl0ZSZjb2xvckI9cGluayZzdHlsZT1mbGF0LXNxdWFyZSZjb2xvckE9NGM1NjZhKSAhW0RqYW5nby1SZXN0RnJhbWV3b3JrIHZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRGphbmdvX1Jlc3RfRnJhbWV3b3JrLTMuMTQuMC1yZWQuc3ZnP2xvbmdDYWNoZT10cnVlJnN0eWxlPWZsYXQtc3F1YXJlJmxvZ289ZGphbmdvJmxvZ29Db2xvcj13aGl0ZSZjb2xvckE9NGM1NjZhJmNvbG9yQj1waW5rKSAgIVtMYXN0IENvbW1pdF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGFzdC1jb21taXQvYmhhdmVzaGRldjA5L3ZlbmRvci1odWItYXBpL21hc3Rlcj8mJmxvbmdDYWNoZT10cnVlJmxvZ29Db2xvcj13aGl0ZSZjb2xvckI9Z3JlZW4mc3R5bGU9ZmxhdC1zcXVhcmUmY29sb3JBPTRjNTY2YSkgWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ibHVlLnN2ZyldKGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKQoKIyMgVGFibGUgb2YgQ29udGVudHMKCi0gW0NvcmUgRmVhdHVyZXNdKCNmZWF0dXJlcykKLSBbUHJvamVjdCBQbGFuXSgjcGxhbm5pbmcpCi0gW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKLSBbQVBJIEVuZHBvaW50c10oI2FwaS1lbmRwb2ludHMpCi0gW1Rlc3RpbmddKCN0ZXN0aW5nKQotIFtDb250cmlidXRpbmddKCNjb250cmlidXRpbmcpCi0gW0xpY2Vuc2VdKCNsaWNlbnNlKQoKIyMgQ29yZSBGZWF0dXJlcwoKMS4gKipWZW5kb3IgUHJvZmlsZSBNYW5hZ2VtZW50OioqCgogICAtIENyZWF0ZSwgcmV0cmlldmUsIHVwZGF0ZSwgYW5kIGRlbGV0ZSB2ZW5kb3IgcHJvZmlsZXMuCiAgIC0gVHJhY2sgdmVuZG9yIGluZm9ybWF0aW9uIGluY2x1ZGluZyBuYW1lLCBjb250YWN0IGRldGFpbHMsIGFkZHJlc3MsIGFuZCBhIHVuaXF1ZSB2ZW5kb3IgY29kZS4KMi4gKipQdXJjaGFzZSBPcmRlciBUcmFja2luZzoqKgoKICAgLSBDcmVhdGUsIHJldHJpZXZlLCB1cGRhdGUsIGFuZCBkZWxldGUgcHVyY2hhc2Ugb3JkZXJzLgogICAtIFRyYWNrIHB1cmNoYXNlIG9yZGVyIGRldGFpbHMgc3VjaCBhcyBQTyBudW1iZXIsIHZlbmRvciByZWZlcmVuY2UsIG9yZGVyIGRhdGUsIGl0ZW1zLCBxdWFudGl0eSwgYW5kIHN0YXR1cy4KMy4gKipWZW5kb3IgUGVyZm9ybWFuY2UgRXZhbHVhdGlvbjoqKgoKICAgLSBDYWxjdWxhdGUgdmVuZG9yIHBlcmZvcm1hbmNlIG1ldHJpY3MsIGluY2x1ZGluZyBvbi10aW1lIGRlbGl2ZXJ5IHJhdGUsIHF1YWxpdHkgcmF0aW5nIGF2ZXJhZ2UsIGF2ZXJhZ2UgcmVzcG9uc2UgdGltZSwgYW5kIGZ1bGZpbGxtZW50IHJhdGUuCiAgIC0gUmV0cmlldmUgcGVyZm9ybWFuY2UgbWV0cmljcyBmb3IgYSBzcGVjaWZpYyB2ZW5kb3IuCgojIyBQcm9qZWN0IFBsYW4gCgpUbyBhY2Nlc3MgdGhlIHByb2plY3QgcGxhbiwgcGxlYXNlIHZpc2l0IHRoZSBmb2xsb3dpbmcgVVJMOiBbVmVuZG9yIEh1YiBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS91c2Vycy9iaGF2ZXNoZGV2MDkvcHJvamVjdHMvMSkKCiMjIEluc3RhbGxhdGlvbgoKMS4gQ2xvbmUgdGhlIHJlcG9zaXRvcnk6CgogICBgYGBiYXNoCiAgIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vYmhhdmVzaGRldjA5L3ZlbmRvci1odWItYXBpLmdpdCBiYWNrZW5kCiAgIGNkIGJhY2tlbmQKICAgYGBgCjIuIENyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgYW5kIGluc3RhbGwgZGVwZW5kZW5jaWVzOgoKICAgYGBgYmFzaAogICBweXRob24gLW0gdmVudiB2ZW52CiAgIHNvdXJjZSB2ZW52L2Jpbi9hY3RpdmF0ZSAgIyBPbiBXaW5kb3dzLCB1c2UgYHZlbnZcU2NyaXB0c1xhY3RpdmF0ZWAKICAgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dAogICBgYGAKMy4gQXBwbHkgZGF0YWJhc2UgbWlncmF0aW9uczoKCiAgIGBgYGJhc2gKICAgcHl0aG9uIG1hbmFnZS5weSBtaWdyYXRlCiAgIGBgYAo0LiBSdW4gdGhlIGRldmVsb3BtZW50IHNlcnZlcjoKCiAgIGBgYGJhc2gKICAgcHl0aG9uIG1hbmFnZS5weSBydW5zZXJ2ZXIKICAgYGBgCjUuIFNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgIAogICA+IFBsZWFzZSByZWZlciAqKi5lbnYuZXhhbXBsZSoqIGZvciBtdXN0IGhhdmUgdmFyaWFibGVzCgo2LiBBY2Nlc3MgdGhlIGFwcGxpY2F0aW9uIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KCiMjIEFQSSBFbmRwb2ludHMKCkJlbG93IGlzIGEgc3VtbWFyeSBvZiB0aGUgYXZhaWxhYmxlIEFQSSBlbmRwb2ludHM6CgoqKlZlbmRvciBQcm9maWxlIE1hbmFnZW1lbnQqKgoKfCBFbmRwb2ludCAgICAgICAgICAgICAgIHwgTWV0aG9kICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBgL2FwaS92ZW5kb3JzL2AgICAgICB8IFBPU1QgICAgICAgIHwgQ3JlYXRlIGEgbmV3IHZlbmRvci4gICAgICAgICAgICAgICAgICB8CnwgYC9hcGkvdmVuZG9ycy9gICAgICAgfCBHRVQgICAgICAgICB8IExpc3QgYWxsIHZlbmRvcnMuICAgICAgICAgICAgICAgICAgICAgfAp8IGAvYXBpL3ZlbmRvcnMve2lkfS9gIHwgR0VUICAgICAgICAgfCBSZXRyaWV2ZSBhIHNwZWNpZmljIHZlbmRvcidzIGRldGFpbHMuIHwKfCBgL2FwaS92ZW5kb3JzL3tpZH0vYCB8IFBVVCAvIFBBVENIIHwgVXBkYXRlIGEgdmVuZG9yJ3MgZGV0YWlscy4gICAgICAgICAgICB8CnwgYC9hcGkvdmVuZG9ycy97aWR9L2AgfCBERUxFVEUgICAgICB8IERlbGV0ZSBhIHZlbmRvci4gICAgICAgICAgICAgICAgICAgICAgfAoKKipQdXJjaGFzZSBPcmRlciBUcmFja2luZyoqCgp8IEVuZHBvaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTWV0aG9kICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBgL2FwaS9wdXJjaGFzZV9vcmRlcnMvYCAgICAgICAgICAgICAgICAgfCBQT1NUICAgICAgICAgfCBDcmVhdGUgYSBwdXJjaGFzZSBvcmRlci4gICAgICAgICAgICAgICAgICAgICAgIHwKfCBgL2FwaS9wdXJjaGFzZV9vcmRlcnMvYCAgICAgICAgICAgICAgICAgfCBHRVQgICAgICAgICAgfCBMaXN0IGFsbCBwdXJjaGFzZSBvcmRlcnMuICAgICAgICAgICAgICAgICAgICAgIHwKfCBgL2FwaS9wdXJjaGFzZV9vcmRlcnMve2lkfS9gICAgICAgICAgICAgfCBHRVQgICAgICAgICAgfCBSZXRyaWV2ZSBkZXRhaWxzIG9mIGEgc3BlY2lmaWMgcHVyY2hhc2Ugb3JkZXIuIHwKfCBgL2FwaS9wdXJjaGFzZV9vcmRlcnMve2lkfS9gICAgICAgICAgICAgfCBQVVQgLyBQQVRDSCAgfCBVcGRhdGUgYSBwdXJjaGFzZSBvcmRlci4gICAgICAgICAgICAgICAgICAgICAgIHwKfCBgL2FwaS9wdXJjaGFzZV9vcmRlcnMve2lkfS9gICAgICAgICAgICAgfCBERUxFVEUgICAgICAgfCBEZWxldGUgYSBwdXJjaGFzZSBvcmRlci4gICAgICAgICAgICAgICAgICAgICAgIHwKfCBgL2FwaS9wdXJjaGFzZV9vcmRlcnMve2lkfS9hY2tub3dsZWRnZWAgfCBQVVQgL8KgUEFUQ0ggfCBBY2tub3dsZWRnZSBhIHB1cmNoYXNlIG9yZGVyLiAgICAgICAgICAgICAgICAgIHwKCioqVmVuZG9yIFBlcmZvcm1hbmNlIEV2YWx1YXRpb24qKgoKfCBFbmRwb2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1ldGhvZCB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgYC9hcGkvdmVuZG9ycy97aWR9L3BlcmZvcm1hbmNlYCAgICAgICAgIHwgR0VUICAgIHwgUmV0cmlldmUgYSB2ZW5kb3IncyBwZXJmb3JtYW5jZSBtZXRyaWNzLiB8CnwgYC9hcGkvdmVuZG9ycy97aWR9L3BlcmZvcm1hbmNlL2hpc3RvcnlgIHwgR0VUICAgIHwgUmV0cmlldmUgYSB2ZW5kb3IncyBwZXJmb3JtYW5jZSBoaXN0b3J5LiB8CgoqKkFkZGl0aW9uYWwgRG9jcyoqCgp8IEVuZHBvaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1ldGhvZCB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IGAvYXBpL3ZlbmRvcnMve2lkfS9wZXJmb3JtYW5jZS9zY2hlbWEvZG9jL2AgfCBHRVQgICAgfCBMaXN0IGFsbCB0aGUgYXBpcyBpbiBPcGVuIEFQSTMgZG9jdW1lbnRhdGlvbiBmb3JtYXQuICAgICAgICAgIHwKfCBgL2FwaS92ZW5kb3JzL3tpZH0vcGVyZm9ybWFuY2Uvc2NoZW1hL2RvYy9gIHwgR0VUICAgIHwgTGlzdCBhbGwgdGhlIGFwaXMgaW4gT3BlbiBBUEkzIGRldGFpbGVkIGRvY3VtZW50YXRpb24gZm9ybWF0LiB8CgojIyBUZXN0aW5nCgpSdW4gdGhlIHRlc3RzIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYGJhc2gKcHl0aG9uIG1hbmFnZS5weSB0ZXN0CmBgYAoKVG8gY2hlY2sgY292ZXJhZ2UgcmVwb3J0IG9mIHRoZSBlbnRpcmUgY29kZWJhc2VzIHRyeSB0aGlzIGNvbW1hbmQ6CgpgYGBiYXNoCmNvdmVyYWdlIHJ1biBtYW5hZ2UucHkgdGVzdAoKIyB0byBnZXQgdGhlIGNvdmVyYWdlIHJlcG9ydCBvbiBjb21tYW5kIGxpbmUKY292ZXJhZ2UgcmVwb3J0IC1tCgojIFRvIGdldCB0aGUgaHRtbCByZXBvcnQgb2YgY29kZSBjb3ZlcmFnZSB0cnkgdGhpcwpjb3ZlcmFnZSBodG1sCmBgYAoKIyMgQ29udHJpYnV0aW5nCgpJbnB1dHMgYW5kIGNvbnRyaWJ1dGlvbnMgdG8gdGhpcyBwcm9qZWN0IGFyZSBhcHByZWNpYXRlZC4gVG8gbWFrZSB0aGVtIGFzIHRyYW5zcGFyZW50IGFuZCBlYXN5IGFzIHBvc3NpYmxlLCBwbGVhc2UgZm9sbG93IHRoaXMgc3RlcHM6CgotICMjIyBIb3cgdG8gY29udHJpYnV0ZToKCgogIDEuIEZvcmsgdGhlIHJlcG9zaXRvcnkgYW5kIGNyZWF0ZSB5b3VyIGJyYW5jaCBmcm9tIG1hc3RlciB3aXRoIGRpZmZlcmVudCBuYW1lLgogIDIuIENsb25lIHRoZSBwcm9qZWN0IHRvIHlvdXIgb3duIG1hY2hpbmUKICAzLiBDb21taXQgY2hhbmdlcyB0byB5b3VyIG93biBicmFuY2gKICA0LiBQdXNoIHlvdXIgd29yayBiYWNrIHVwIHRvIHlvdXIgZm9yawogIDUuIFN1Ym1pdCBhIFB1bGwgcmVxdWVzdAoKICAjIyMgRG9uJ3Q6CgogIC0gRG9uJ3QgaW5jbHVkZSBhbnkgbGljZW5zZSBpbmZvcm1hdGlvbiB3aGVuIHN1Ym1pdHRpbmcgeW91ciBjb2RlIGFzIHRoaXMgcmVwb3NpdG9yeSBpcyBNSVQgbGljZW5zZWQsIGFuZCBzbyB5b3VyIHN1Ym1pc3Npb25zIGFyZSB1bmRlcnN0b29kIHRvIGJlIHVuZGVyIHRoZSBzYW1lIE1JVCBMaWNlbnNlIGFzIHdlbGwuCi0gIyMjIEhvdyB0byByZXBvcnQgYSBidWc6CgoKICAxLiBPcGVuIGEgbmV3IElzc3VlLgogIDIuIFdyaXRlIGEgYnVnIHJlcG9ydCB3aXRoIGRldGFpbHMsIGJhY2tncm91bmQsIGFuZCB3aGVuIHBvc3NpYmxlIHNhbXBsZSBjb2RlLiBUaGF0J3MgaXQhCgojIyBMaWNlbnNlCgpUaGlzIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFtNSVQgTGljZW5zZV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQpLgo= readmeEtag: '"ba1579aea290e702ce8186039366fbace90cc512"' readmeLastModified: Sat, 09 Dec 2023 20:19:38 GMT repositoryId: 726566533 description: >- A comprehensive Vendor Management System(VMS) apis for efficient vendor profile management, purchase order tracking, and vendor performance metrics calculation created: '2023-12-02T18:34:06Z' updated: '2025-11-23T19:00:58Z' language: Python archived: false stars: 4 watchers: 1 forks: 0 owner: bhaveshdev09 logo: https://avatars.githubusercontent.com/u/45851391?v=4 license: MIT repoEtag: '"9faa2bbe2abdb5d0dec648158dfea229a2191e754016c28e4301be41adf606d7"' repoLastModified: Sun, 23 Nov 2025 19:00:58 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/swaggest/rest-fasthttp v3: true id: 6d32533fe2615e6613b2e30dc8a93bcd repositoryMetadata: base64Readme: >- IyBSRVNUIHdpdGggQ2xlYW4gQXJjaGl0ZWN0dXJlIGZvciBHbwoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdC93b3JrZmxvd3MvdGVzdC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdC9hY3Rpb25zP3F1ZXJ5PWJyYW5jaCUzQW1hc3Rlcit3b3JrZmxvdyUzQXRlc3QpClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb2RlY292LmlvL2doL3N3YWdnZXN0L3Jlc3QvYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvc3dhZ2dlc3QvcmVzdCkKWyFbR29EZXZEb2NdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGV2LWRvYy0wMEFERDg/bG9nbz1nbyldKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L3Jlc3QpClshW1RpbWUgVHJhY2tlcl0oaHR0cHM6Ly93YWthdGltZS5jb20vYmFkZ2UvZ2l0aHViL3N3YWdnZXN0L3Jlc3Quc3ZnKV0oaHR0cHM6Ly93YWthdGltZS5jb20vYmFkZ2UvZ2l0aHViL3N3YWdnZXN0L3Jlc3QpCiFbQ29kZSBsaW5lc10oaHR0cHM6Ly9zbG9jLnh5ei9naXRodWIvc3dhZ2dlc3QvcmVzdC8/Y2F0ZWdvcnk9Y29kZSkKIVtDb21tZW50c10oaHR0cHM6Ly9zbG9jLnh5ei9naXRodWIvc3dhZ2dlc3QvcmVzdC8/Y2F0ZWdvcnk9Y29tbWVudHMpCgpUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIEhUVFAgdHJhbnNwb3J0IGxldmVsIGZvciBbYGdpdGh1Yi5jb20vc3dhZ2dlc3QvdXNlY2FzZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC91c2VjYXNlKSAKdG8gYnVpbGQgUkVTVCBzZXJ2aWNlcy4KCiMjIFRoaXMgRm9yawoKVGhpcyBpcyBhIHJlZHVjZWQgZm9yayBvZiBbYGdpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0KSAKdGhhdCB1c2VzIFtgZmFzdGh0dHBgXShodHRwczovL2dpdGh1Yi5jb20vdmFseWFsYS9mYXN0aHR0cCkgaW5zdGVhZCBvZiBzdGFuZGFyZCBgbmV0L2h0dHBgLgoKYGZhc3RodHRwYCBicmluZ3MgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBtZW1vcnkgZWZmaWNpZW5jeSB0byBoaWdobHkgbG9hZGVkIHNlcnZpY2VzLCAKYnV0IGl0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggbWFueSBleGlzdGluZyBtaWRkbGV3YXJlcyBhbmQgbWF5IHJlcXVpcmUgYWRkaXRpb25hbCAKZGV2IGVmZm9ydCBmb3Igc3VjaCBjYXNlcy4KCiMjIEdvYWxzCgoqIE1haW50YWluIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGRvY3VtZW50YXRpb24sIHZhbGlkYXRpb24gYW5kIGlucHV0L291dHB1dCBvZiBIVFRQIEFQSS4KKiBBdm9pZCBkZXBlbmRlbmN5IG9uIGNvbXBpbGUgdGltZSBjb2RlIGdlbmVyYXRpb24uCiogSW1wcm92ZSBwcm9kdWN0aXZpdHkgYW5kIHJlbGlhYmlsaXR5IGJ5IGFic3RyYWN0aW5nIEhUVFAgZGV0YWlscyB3aXRoIHNpbXBsZSBBUEkgZm9yIGNvbW1vbiBjYXNlLgoqIEFsbG93IGxvdy1sZXZlbCBjdXN0b21pemF0aW9ucyBmb3IgYWR2YW5jZWQgY2FzZXMuCiogTWFpbnRhaW4gcmVhc29uYWJsZSBwZXJmb3JtYW5jZSB3aXRoIGxvdyBHQyBpbXBhY3QuCgojIyBOb24tR29hbHMKCiogU3VwcG9ydCBmb3IgbGVnYWN5IGRvY3VtZW50YXRpb24gc2NoZW1hcyBsaWtlIFN3YWdnZXIgMi4wIG9yIFJBTUwuCiogWmVybyBhbGxvY2F0aW9ucy4KKiBFeHBsaWNpdCBzdXBwb3J0IGZvciBYTUwgaW4gcmVxdWVzdCBvciByZXNwb25zZSBib2RpZXMuCgojIyBGZWF0dXJlcwoKKiBDb21wYXRpYmxlIHdpdGggYG5ldC9odHRwYC4KKiBCdWlsdCB3aXRoIFtgZ2l0aHViLmNvbS9nby1jaGkvY2hpYF0oaHR0cHM6Ly9naXRodWIuY29tL2dvLWNoaS9jaGkpIHJvdXRlci4KKiBNb2R1bGFyIGZsZXhpYmxlIHN0cnVjdHVyZS4KKiBIVFRQIFtyZXF1ZXN0IG1hcHBpbmddKCNyZXF1ZXN0LWRlY29kZXIpIGludG8gR28gdmFsdWUgYmFzZWQgb24gZmllbGQgdGFncy4KKiBEZWNvdXBsZWQgYnVzaW5lc3MgbG9naWMgd2l0aCBDbGVhbiBBcmNoaXRlY3R1cmUgdXNlIGNhc2VzLgoqIEF1dG9tYXRpYyB0eXBlLXNhZmUgT3BlbkFQSSAzIGRvY3VtZW50YXRpb24gd2l0aCBbYGdpdGh1Yi5jb20vc3dhZ2dlc3Qvb3BlbmFwaS1nb2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9vcGVuYXBpLWdvKS4KKiBTaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgZW5kcG9pbnQgaW50ZXJmYWNlLgoqIEF1dG9tYXRpYyByZXF1ZXN0L3Jlc3BvbnNlIEpTT04gc2NoZW1hIHZhbGlkYXRpb24gd2l0aCBbYGdpdGh1Yi5jb20vc2FudGhvc2gtdGVrdXJpL2pzb25zY2hlbWFgXShodHRwczovL2dpdGh1Yi5jb20vc2FudGhvc2gtdGVrdXJpL2pzb25zY2hlbWEpLgoqIER5bmFtaWMgZ3ppcCBjb21wcmVzc2lvbiBhbmQgZmFzdCBwYXNzIHRocm91Z2ggbW9kZS4KKiBPcHRpbWl6ZWQgcGVyZm9ybWFuY2UuCiogRW1iZWRkZWQgW1N3YWdnZXIgVUldKGh0dHBzOi8vc3dhZ2dlci5pby90b29scy9zd2FnZ2VyLXVpLykuCiogSW50ZWdyYXRpb24gdGVzdCBoZWxwZXJzLgoqIEdlbmVyaWMgaW50ZXJmYWNlIGZvciBbdXNlIGNhc2UgaW50ZXJhY3RvcnNdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L3VzZWNhc2UjTmV3SW50ZXJhY3RvcikuIAoKIyMgVXNhZ2UKClBsZWFzZSBjaGVjayB0aGlzIFt0dXRvcmlhbF0oaHR0cHM6Ly9kZXYudG8vdmVhcnV0b3AvdHV0b3JpYWwtZGV2ZWxvcGluZy1hLXJlc3RmdWwtYXBpLXdpdGgtZ28tanNvbi1zY2hlbWEtdmFsaWRhdGlvbi1hbmQtb3BlbmFwaS1kb2NzLTI0OTApIGZvciBlbmQtdG8tZW5kIHVzYWdlIGV4YW1wbGUuCgojIyMgUmVxdWVzdCBEZWNvZGVyCgpHbyBzdHJ1Y3Qgd2l0aCBvcHRpb25hbCBmaWVsZCB0YWdzIGRlZmluZXMgaW5wdXQgcG9ydC4gClJlcXVlc3QgZGVjb2RlciBwb3B1bGF0ZXMgZmllbGQgdmFsdWVzIGZyb20gYGh0dHAuUmVxdWVzdGAgZGF0YSBiZWZvcmUgdXNlIGNhc2UgaW50ZXJhY3RvciBpcyBpbnZva2VkLiAKCmBgYGdvCi8vIERlY2xhcmUgaW5wdXQgcG9ydCB0eXBlLgp0eXBlIGhlbGxvSW5wdXQgc3RydWN0IHsKICAgIExvY2FsZSBzdHJpbmcgYHF1ZXJ5OiJsb2NhbGUiIGRlZmF1bHQ6ImVuLVVTIiBwYXR0ZXJuOiJeW2Etel17Mn0tW0EtWl17Mn0kIiBlbnVtOiJydS1SVSxlbi1VUyJgCiAgICBOYW1lICAgc3RyaW5nIGBwYXRoOiJuYW1lIiBtaW5MZW5ndGg6IjMiYCAvLyBGaWVsZCB0YWdzIGRlZmluZSBwYXJhbWV0ZXIgbG9jYXRpb24gYW5kIEpTT04gc2NoZW1hIGNvbnN0cmFpbnRzLgoKICAgIC8vIEZpZWxkIHRhZ3Mgb2YgdW5uYW1lZCBmaWVsZHMgYXJlIGFwcGxpZWQgdG8gcGFyZW50IHNjaGVtYSwgCgkvLyB0aGV5IGFyZSBvcHRpb25hbCBhbmQgY2FuIGJlIHVzZWQgdG8gZGlzYWxsb3cgdW5rbm93biBwYXJhbWV0ZXJzLgogICAgLy8gRm9yIG5vbi1ib2R5IHBhcmFtcywgbmFtZSB0YWcgbXVzdCBiZSBwcm92aWRlZCBleHBsaWNpdGx5LgogICAgLy8gRS5nLiBoZXJlIG5vIHVua25vd24gYHF1ZXJ5YCBhbmQgYGNvb2tpZWAgcGFyYW1ldGVycyBhbGxvd2VkLAogICAgLy8gdW5rbm93biBgaGVhZGVyYCBwYXJhbXMgYXJlIG9rLgogICAgXyBzdHJ1Y3R7fSBgcXVlcnk6Il8iIGNvb2tpZToiXyIgYWRkaXRpb25hbFByb3BlcnRpZXM6ImZhbHNlImAKfQpgYGAKCklucHV0IGRhdGEgY2FuIGJlIGxvY2F0ZWQgaW46CiogYHBhdGhgIHBhcmFtZXRlciBpbiByZXF1ZXN0IFVSSSwgZS5nLiBgL3VzZXJzL3tuYW1lfWAsCiogYHF1ZXJ5YCBwYXJhbWV0ZXIgaW4gcmVxdWVzdCBVUkksIGUuZy4gYC91c2Vycz9sb2NhbGU9ZW4tVVNgLAoqIGBmb3JtRGF0YWAgcGFyYW1ldGVyIGluIHJlcXVlc3QgYm9keSB3aXRoIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIG9yIGBtdWx0aXBhcnQvZm9ybS1kYXRhYCBjb250ZW50LAoqIGBqc29uYCBwYXJhbWV0ZXIgaW4gcmVxdWVzdCBib2R5IHdpdGggYGFwcGxpY2F0aW9uL2pzb25gIGNvbnRlbnQsCiogYGNvb2tpZWAgcGFyYW1ldGVyIGluIHJlcXVlc3QgY29va2llLAoqIGBoZWFkZXJgIHBhcmFtZXRlciBpbiByZXF1ZXN0IGhlYWRlci4KCkZvciBtb3JlIGV4cGxpY2l0IHNlcGFyYXRpb24gb2YgY29uY2VybnMgYmV0d2VlbiB1c2UgY2FzZSBhbmQgdHJhbnNwb3J0IGl0IGlzIHBvc3NpYmxlIHRvIHByb3ZpZGUgcmVxdWVzdCBtYXBwaW5nIApzZXBhcmF0ZWx5IHdoZW4gaW5pdGlhbGl6aW5nIGhhbmRsZXIgKHBsZWFzZSBub3RlLCBzdWNoIG1hcHBpbmcgaXMgW25vdCBhcHBsaWVkXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdC9pc3N1ZXMvNjEjaXNzdWVjb21tZW50LTEwNTk4NTE1NTMpIHRvIGBqc29uYCBib2R5KS4KCmBgYGdvCi8vIERlY2xhcmUgaW5wdXQgcG9ydCB0eXBlLgp0eXBlIGhlbGxvSW5wdXQgc3RydWN0IHsKICAgIExvY2FsZSBzdHJpbmcgYGRlZmF1bHQ6ImVuLVVTIiBwYXR0ZXJuOiJeW2Etel17Mn0tW0EtWl17Mn0kImAKICAgIE5hbWUgICBzdHJpbmcgYG1pbkxlbmd0aDoiMyJgIC8vIEZpZWxkIHRhZ3MgZGVmaW5lIHBhcmFtZXRlciBsb2NhdGlvbiBhbmQgSlNPTiBzY2hlbWEgY29uc3RyYWludHMuCn0KYGBgCgpgYGBnbwovLyBBZGQgdXNlIGNhc2UgaGFuZGxlciB3aXRoIGN1c3RvbSBpbnB1dCBtYXBwaW5nIHRvIHJvdXRlci4Kci5NZXRob2QoaHR0cC5NZXRob2RHZXQsICIvaGVsbG8ve25hbWV9IiwgZmh0dHAuTmV3SGFuZGxlcih1LAogICAgZmh0dHAuUmVxdWVzdE1hcHBpbmcobmV3KHN0cnVjdCB7CiAgICAgICBMb2NhbGUgc3RyaW5nIGBxdWVyeToibG9jYWxlImAKICAgICAgIE5hbWUgICBzdHJpbmcgYHBhdGg6Im5hbWUiYCAvLyBGaWVsZCB0YWdzIGRlZmluZSBwYXJhbWV0ZXIgbG9jYXRpb24gYW5kIEpTT04gc2NoZW1hIGNvbnN0cmFpbnRzLgogICAgfSkpLAopKQpgYGAKCkFkZGl0aW9uYWwgZmllbGQgdGFncyBkZXNjcmliZSBKU09OIHNjaGVtYSBjb25zdHJhaW50cywgcGxlYXNlIGNoZWNrIApbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyNSZWZsZWN0b3IuUmVmbGVjdCkuCgpNb3JlIHNjaGVtYSBjdXN0b21pemF0aW9ucyBhcmUgcG9zc2libGUgd2l0aCBbYGdpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyBpbnRlcmZhY2VzYF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L2pzb25zY2hlbWEtZ28jaW1wbGVtZW50aW5nLWludGVyZmFjZXMtb24tYS10eXBlKS4KCkJ5IGRlZmF1bHQgYGRlZmF1bHRgIHRhZ3MgYXJlIG9ubHkgY29udHJpYnV0aW5nIHRvIGRvY3VtZW50YXRpb24sIAppZiBbYHJlcXVlc3QuRGVjb2RlckZhY3RvcnkuQXBwbHlEZWZhdWx0c2BdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L3Jlc3QvcmVxdWVzdCNEZWNvZGVyRmFjdG9yeSkgaXMgCnNldCB0byBgdHJ1ZWAsIGZpZWxkcyBvZiByZXF1ZXN0IHN0cnVjdHVyZSB0aGF0IGRvbid0IGhhdmUgZXhwbGljaXQgdmFsdWUgYnV0IGhhdmUgYGRlZmF1bHRgIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggCmRlZmF1bHQgdmFsdWUuCgpJZiBpbnB1dCBzdHJ1Y3R1cmUgaW1wbGVtZW50cyBbYHJlcXVlc3QuTG9hZGVyYF0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdC9yZXF1ZXN0I0xvYWRlciksICAKdGhlbiBgTG9hZEZyb21IVFRQUmVxdWVzdChyICpodHRwLlJlcXVlc3QpIGVycm9yYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIHRvIHBvcHVsYXRlIGlucHV0IHN0cnVjdHVyZSBpbnN0ZWFkIApvZiBhdXRvbWF0aWMgZGVjb2RpbmcuIFRoaXMgYWxsb3dzIGxvdyBsZXZlbCBjb250cm9sIGZvciBjYXNlcyB0aGF0IG5lZWQgaXQuCgojIyMgUmVzcG9uc2UgRW5jb2RlcgoKR28gc3RydWN0IHdpdGggZmllbGQgdGFncyBkZWZpbmVzIG91dHB1dCBwb3J0LgpSZXNwb25zZSBlbmNvZGVyIHdyaXRlcyBkYXRhIGZyb20gb3V0cHV0IHRvIGBodHRwLlJlc3BvbnNlV3JpdGVyYCBhZnRlciB1c2UgY2FzZSBpbnRlcmFjdG9yIGludm9jYXRpb24gZmluaXNoZXMuCgpgYGBnbwovLyBEZWNsYXJlIG91dHB1dCBwb3J0IHR5cGUuCnR5cGUgaGVsbG9PdXRwdXQgc3RydWN0IHsKICAgIE5vdyAgICAgdGltZS5UaW1lIGBoZWFkZXI6IlgtTm93IiBqc29uOiItImAKICAgIE1lc3NhZ2Ugc3RyaW5nICAgIGBqc29uOiJtZXNzYWdlImAKfQpgYGAKCk91dHB1dCBkYXRhIGNhbiBiZSBsb2NhdGVkIGluOgoqIGBqc29uYCBmb3IgcmVzcG9uc2UgYm9keSB3aXRoIGBhcHBsaWNhdGlvbi9qc29uYCBjb250ZW50LAoqIGBoZWFkZXJgIGZvciB2YWx1ZXMgaW4gcmVzcG9uc2UgaGVhZGVyLgoKRm9yIG1vcmUgZXhwbGljaXQgc2VwYXJhdGlvbiBvZiBjb25jZXJucyBiZXR3ZWVuIHVzZSBjYXNlIGFuZCB0cmFuc3BvcnQgaXQgaXMgcG9zc2libGUgdG8gcHJvdmlkZSByZXNwb25zZSBoZWFkZXIgbWFwcGluZyAKc2VwYXJhdGVseSB3aGVuIGluaXRpYWxpemluZyBoYW5kbGVyLgoKYGBgZ28KLy8gRGVjbGFyZSBvdXRwdXQgcG9ydCB0eXBlLgp0eXBlIGhlbGxvT3V0cHV0IHN0cnVjdCB7CiAgICBOb3cgICAgIHRpbWUuVGltZSBganNvbjoiLSJgCiAgICBNZXNzYWdlIHN0cmluZyAgICBganNvbjoibWVzc2FnZSJgCn0KYGBgCgpgYGBnbwovLyBBZGQgdXNlIGNhc2UgaGFuZGxlciB3aXRoIGN1c3RvbSBvdXRwdXQgaGVhZGVycyBtYXBwaW5nIHRvIHJvdXRlci4Kci5NZXRob2QoaHR0cC5NZXRob2RHZXQsICIvaGVsbG8ve25hbWV9IiwgZmh0dHAuTmV3SGFuZGxlcih1LAogICAgZmh0dHAuUmVzcG9uc2VIZWFkZXJNYXBwaW5nKG5ldyhzdHJ1Y3QgewogICAgICAgIE5vdyAgICAgdGltZS5UaW1lIGBoZWFkZXI6IlgtTm93ImAKICAgIH0pKSwKKSkKYGBgCgpBZGRpdGlvbmFsIGZpZWxkIHRhZ3MgZGVzY3JpYmUgSlNPTiBzY2hlbWEgY29uc3RyYWludHMsIHBsZWFzZSBjaGVjayAKW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L2pzb25zY2hlbWEtZ28jUmVmbGVjdG9yLlJlZmxlY3QpLgoKIyMjIENyZWF0aW5nIFVzZSBDYXNlIEludGVyYWN0b3IKCkhUVFAgdHJhbnNwb3J0IGlzIGRlY291cGxlZCBmcm9tIGJ1c2luZXNzIGxvZ2ljIGJ5IGFkYXB0aW5nClt1c2UgY2FzZSBpbnRlcmFjdG9yc10oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvdXNlY2FzZSNJbnRlcmFjdG9yKS4KClVzZSBjYXNlIGludGVyYWN0b3IgY2FuIGRlZmluZSBpbnB1dCBhbmQgb3V0cHV0IHBvcnRzIHRoYXQgYXJlIHVzZWQgdG8gbWFwIGRhdGEgYmV0d2VlbiBHbyB2YWx1ZXMgYW5kIHRyYW5zcG9ydC4KSXQgY2FuIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgaXRzZWxmIHRoYXQgd2lsbCBiZSBleHBvc2VkIGluIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLgoKYGBgZ28KLy8gQ3JlYXRlIHVzZSBjYXNlIGludGVyYWN0b3Igd2l0aCByZWZlcmVuY2VzIHRvIGlucHV0L291dHB1dCB0eXBlcyBhbmQgaW50ZXJhY3Rpb24gZnVuY3Rpb24uCnUgOj0gdXNlY2FzZS5OZXdJT0kobmV3KGhlbGxvSW5wdXQpLCBuZXcoaGVsbG9PdXRwdXQpLCBmdW5jKGN0eCBjb250ZXh0LkNvbnRleHQsIGlucHV0LCBvdXRwdXQgaW50ZXJmYWNle30pIGVycm9yIHsKICAgIHZhciAoCiAgICAgICAgaW4gID0gaW5wdXQuKCpoZWxsb0lucHV0KQogICAgICAgIG91dCA9IG91dHB1dC4oKmhlbGxvT3V0cHV0KQogICAgKQoKICAgIG1zZywgYXZhaWxhYmxlIDo9IG1lc3NhZ2VzW2luLkxvY2FsZV0KICAgIGlmICFhdmFpbGFibGUgewogICAgICAgIHJldHVybiBzdGF0dXMuV3JhcChlcnJvcnMuTmV3KCJ1bmtub3duIGxvY2FsZSIpLCBzdGF0dXMuSW52YWxpZEFyZ3VtZW50KQogICAgfQoKICAgIG91dC5NZXNzYWdlID0gZm10LlNwcmludGYobXNnLCBpbi5OYW1lKQogICAgb3V0Lk5vdyA9IHRpbWUuTm93KCkKCiAgICByZXR1cm4gbmlsCn0pCmBgYAoKRm9yIG1vZHVsYXJpdHkgcGFydGljdWxhciB1c2UgY2FzZSBpbnRlcmFjdG9yIGluc3RhbmNlIGNhbiBiZSBhc3NlbWJsZWQgYnkgZW1iZWRkaW5nIHJlbGV2YW50IHRyYWl0cyBpbiBhIHN0cnVjdCwKZm9yIGV4YW1wbGUgeW91IGNhbiBza2lwIGFkZGluZyBgdXNlY2FzZS5XaXRoSW5wdXRgIGlmIHlvdXIgdXNlIGNhc2UgZG9lcyBub3QgaW1wbHkgYW55IGlucHV0LgoKYGBgZ28KLy8gQ3JlYXRlIHVzZSBjYXNlIGludGVyYWN0b3IuCnUgOj0gc3RydWN0IHsKICAgIHVzZWNhc2UuSW5mbwogICAgdXNlY2FzZS5JbnRlcmFjdG9yCiAgICB1c2VjYXNlLldpdGhJbnB1dAogICAgdXNlY2FzZS5XaXRoT3V0cHV0Cn17fQoKLy8gRGVzY3JpYmUgdXNlIGNhc2UgaW50ZXJhY3Rvci4KdS5TZXRUaXRsZSgiR3JlZXRlciIpCnUuU2V0RGVzY3JpcHRpb24oIkdyZWV0ZXIgZ3JlZXRzIHlvdS4iKQp1LklucHV0ID0gbmV3KGhlbGxvSW5wdXQpCnUuT3V0cHV0ID0gbmV3KGhlbGxvT3V0cHV0KQp1LkludGVyYWN0b3IgPSB1c2VjYXNlLkludGVyYWN0KGZ1bmMoY3R4IGNvbnRleHQuQ29udGV4dCwgaW5wdXQsIG91dHB1dCBpbnRlcmZhY2V7fSkgZXJyb3IgewogICAgLy8gRG8gc29tZXRoaW5nIGFib3V0IGlucHV0IHRvIHByZXBhcmUgb3V0cHV0LgogICAgcmV0dXJuIG5pbAp9KQpgYGAKCiMjIyBJbml0aWFsaXppbmcgV2ViIFNlcnZpY2UKCltXZWIgU2VydmljZV0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdC93ZWIjRGVmYXVsdFNlcnZpY2UpIGlzIGFuIGluc3RydW1lbnRlZCBmYWNhZGUgaW4gZnJvbnQgb2YgCnJvdXRlciwgaXQgc2ltcGxpZmllcyBjb25maWd1cmF0aW9uIGFuZCBwcm92aWRlcyBtb3JlIGNvbXBhY3QgQVBJIHRvIGFkZCB1c2UgY2FzZXMuCgpgYGBnbwovLyBTZXJ2aWNlIGluaXRpYWxpemVzIHJvdXRlciB3aXRoIHJlcXVpcmVkIG1pZGRsZXdhcmVzLgpzZXJ2aWNlIDo9IHdlYi5EZWZhdWx0U2VydmljZSgpCgovLyBJdCBhbGxvd3MgT3BlbkFQSSBjb25maWd1cmF0aW9uLgpzZXJ2aWNlLk9wZW5BUEkuSW5mby5UaXRsZSA9ICJBbGJ1bXMgQVBJIgpzZXJ2aWNlLk9wZW5BUEkuSW5mby5XaXRoRGVzY3JpcHRpb24oIlRoaXMgc2VydmljZSBwcm92aWRlcyBBUEkgdG8gbWFuYWdlIGFsYnVtcy4iKQpzZXJ2aWNlLk9wZW5BUEkuSW5mby5WZXJzaW9uID0gInYxLjAuMCIKCi8vIEFkZGl0aW9uYWwgbWlkZGxld2FyZXMgY2FuIGJlIGFkZGVkLgpzZXJ2aWNlLlVzZSgKICAgIG1pZGRsZXdhcmUuU3RyaXBTbGFzaGVzLAopCgovLyBVc2UgY2FzZXMgY2FuIGJlIG1vdW50ZWQgdXNpbmcgc2hvcnQgc3ludGF4IC48TWV0aG9kPiguLi4pLgpzZXJ2aWNlLlBvc3QoIi9hbGJ1bXMiLCBwb3N0QWxidW1zKCksIGZodHRwLlN1Y2Nlc3NTdGF0dXMoaHR0cC5TdGF0dXNDcmVhdGVkKSkKCmxvZy5QcmludGxuKCJTdGFydGluZyBzZXJ2aWNlIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIpCgppZiBlcnIgOj0gaHR0cC5MaXN0ZW5BbmRTZXJ2ZSgibG9jYWxob3N0OjgwODAiLCBzZXJ2aWNlKTsgZXJyICE9IG5pbCB7CiAgICBsb2cuRmF0YWwoZXJyKQp9CgpgYGAKClVzdWFsbHksIGB3ZWIuU2VydmljZWAgQVBJIGlzIHN1ZmZpY2llbnQsIGJ1dCBpZiBpdCBpcyBub3QsIHJvdXRlciBjYW4gYmUgY29uZmlndXJlZCBtYW51YWxseSwgcGxlYXNlIGNoZWNrIAp0aGUgZG9jdW1lbnRhdGlvbiBiZWxvdy4KCiMjIyBBZGRpbmcgdXNlIGNhc2UgdG8gcm91dGVyCgpgYGBnbwovLyBBZGQgdXNlIGNhc2UgaGFuZGxlciB0byByb3V0ZXIuCnIuTWV0aG9kKGh0dHAuTWV0aG9kR2V0LCAiL2hlbGxvL3tuYW1lfSIsIGZodHRwLk5ld0hhbmRsZXIodSkpCmBgYAoKIyMgQVBJIFNjaGVtYSBDb2xsZWN0b3IKCk9wZW5BUEkgc2NoZW1hIHNob3VsZCBiZSBpbml0aWFsaXplZCB3aXRoIGdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgUkVTVCBBUEkuCgpJdCB1c2VzIFt0eXBlLXNhZmUgbWFwcGluZ10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L29wZW5hcGktZ28pIGZvciB0aGUgY29uZmlndXJhdGlvbiwgCnNvIGFueSBJREUgd2lsbCBoZWxwIHdpdGggYXZhaWxhYmxlIGZpZWxkcy4gCgpgYGBnbwovLyBJbml0IEFQSSBkb2N1bWVudGF0aW9uIHNjaGVtYS4KYXBpU2NoZW1hIDo9ICZvcGVuYXBpLkNvbGxlY3Rvcnt9CmFwaVNjaGVtYS5SZWZsZWN0b3IoKS5TcGVjRW5zKCkuSW5mby5UaXRsZSA9ICJCYXNpYyBFeGFtcGxlIgphcGlTY2hlbWEuUmVmbGVjdG9yKCkuU3BlY0VucygpLkluZm8uV2l0aERlc2NyaXB0aW9uKCJUaGlzIGFwcCBzaG93Y2FzZXMgYSB0cml2aWFsIFJFU1QgQVBJLiIpCmFwaVNjaGVtYS5SZWZsZWN0b3IoKS5TcGVjRW5zKCkuSW5mby5WZXJzaW9uID0gInYxLjIuMyIKYGBgCgojIyBSb3V0ZXIgU2V0dXAKClJFU1Qgcm91dGVyIGlzIGJhc2VkIG9uIFtgZ2l0aHViLmNvbS9nby1jaGkvY2hpYF0oaHR0cHM6Ly9naXRodWIuY29tL2dvLWNoaS9jaGkpLCB3cmFwcGVyIGFsbG93cyB1bndyYXBwaW5nIGluc3RydW1lbnRlZApoYW5kbGVyIGluIG1pZGRsZXdhcmUuCgpUaGVzZSBtaWRkbGV3YXJlcyBhcmUgcmVxdWlyZWQ6CiogYG5ldGh0dHAuT3BlbkFQSU1pZGRsZXdhcmUoYXBpU2NoZW1hKWAsIAoqIGByZXF1ZXN0LkRlY29kZXJNaWRkbGV3YXJlKGRlY29kZXJGYWN0b3J5KWAsCiogYHJlc3BvbnNlLkVuY29kZXJNaWRkbGV3YXJlYC4KCk9wdGlvbmFsbHkgeW91IGNhbiBhZGQgbW9yZSBtaWRkbGV3YXJlcyB3aXRoIHNvbWUgcGVyZm9ybWFuY2UgaW1wYWN0OgoqIGByZXF1ZXN0LlZhbGlkYXRvck1pZGRsZXdhcmUodmFsaWRhdG9yRmFjdG9yeSlgIChyZXF1ZXN0IHZhbGlkYXRpb24sIHJlY29tbWVuZGVkKQoqIGByZXNwb25zZS5WYWxpZGF0b3JNaWRkbGV3YXJlKHZhbGlkYXRvckZhY3RvcnkpYAoqIGBnemlwLk1pZGRsZXdhcmVgCgpZb3UgY2FuIGFsc28gYWRkIGFueSBvdGhlciAzcmQgcGFydHkgbWlkZGxld2FyZXMgY29tcGF0aWJsZSB3aXRoIGBuZXQvaHR0cGAgYXQgeW91ciBkaXNjcmV0aW9uLgoKYGBgZ28KLy8gU2V0dXAgcmVxdWVzdCBkZWNvZGVyIGFuZCB2YWxpZGF0b3IuCnZhbGlkYXRvckZhY3RvcnkgOj0ganNvbnNjaGVtYS5OZXdGYWN0b3J5KGFwaVNjaGVtYSwgYXBpU2NoZW1hKQpkZWNvZGVyRmFjdG9yeSA6PSByZXF1ZXN0Lk5ld0RlY29kZXJGYWN0b3J5KCkKZGVjb2RlckZhY3RvcnkuU2V0RGVjb2RlckZ1bmMocmVzdC5QYXJhbUluUGF0aCwgY2hpcm91dGVyLlBhdGhUb1VSTFZhbHVlcykKCi8vIENyZWF0ZSByb3V0ZXIuCnIgOj0gY2hpcm91dGVyLk5ld1dyYXBwZXIoZmNoaS5OZXdSb3V0ZXIoKSkKCi8vIFNldHVwIG1pZGRsZXdhcmVzLgpyLlVzZSgKICAgIG1pZGRsZXdhcmUuUmVjb3ZlcmVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFuaWMgcmVjb3ZlcnkuCiAgICBuZXRodHRwLk9wZW5BUElNaWRkbGV3YXJlKGFwaVNjaGVtYSksICAgICAgICAgIC8vIERvY3VtZW50YXRpb24gY29sbGVjdG9yLgogICAgcmVxdWVzdC5EZWNvZGVyTWlkZGxld2FyZShkZWNvZGVyRmFjdG9yeSksICAgICAvLyBSZXF1ZXN0IGRlY29kZXIgc2V0dXAuCiAgICByZXF1ZXN0LlZhbGlkYXRvck1pZGRsZXdhcmUodmFsaWRhdG9yRmFjdG9yeSksIC8vIFJlcXVlc3QgdmFsaWRhdG9yIHNldHVwLgogICAgcmVzcG9uc2UuRW5jb2Rlck1pZGRsZXdhcmUsICAgICAgICAgICAgICAgICAgICAvLyBSZXNwb25zZSBlbmNvZGVyIHNldHVwLgogICAgZ3ppcC5NaWRkbGV3YXJlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNwb25zZSBjb21wcmVzc2lvbiB3aXRoIHN1cHBvcnQgZm9yIGRpcmVjdCBnemlwIHBhc3MgdGhyb3VnaC4KKQpgYGAKClJlZ2lzdGVyIFN3YWdnZXIgVUkgdG8gc2VydmUgZG9jdW1lbnRhdGlvbiBhdCBgL2RvY3NgLgoKYGBgZ28KLy8gU3dhZ2dlciBVSSBlbmRwb2ludCBhdCAvZG9jcy4Kci5NZXRob2QoaHR0cC5NZXRob2RHZXQsICIvZG9jcy9vcGVuYXBpLmpzb24iLCBhcGlTY2hlbWEpCnIuTW91bnQoIi9kb2NzIiwgdjNjZG4uTmV3SGFuZGxlcihhcGlTY2hlbWEuUmVmbGVjdG9yKCkuU3BlYy5JbmZvLlRpdGxlLAogICAgIi9kb2NzL29wZW5hcGkuanNvbiIsICIvZG9jcyIpKQpgYGAKCiMjIFNlY3VyaXR5IFNldHVwCgpgYGBnbwovLyBQcmVwYXJlIG1pZGRsZXdhcmUgd2l0aCBzdWl0YWJsZSBzZWN1cml0eSBzY2hlbWEuCi8vIEl0IHdpbGwgcGVyZm9ybSBhY3R1YWwgc2VjdXJpdHkgY2hlY2sgZm9yIGV2ZXJ5IHJlbGV2YW50IHJlcXVlc3QuCmFkbWluQXV0aCA6PSBtaWRkbGV3YXJlLkJhc2ljQXV0aCgiQWRtaW4gQWNjZXNzIiwgbWFwW3N0cmluZ11zdHJpbmd7ImFkbWluIjogImFkbWluIn0pCgovLyBQcmVwYXJlIEFQSSBzY2hlbWEgdXBkYXRlciBtaWRkbGV3YXJlLgovLyBJdCB3aWxsIGFubm90YXRlIGhhbmRsZXIgZG9jdW1lbnRhdGlvbiB3aXRoIHNlY3VyaXR5IHNjaGVtYS4KYWRtaW5TZWN1cml0eVNjaGVtYSA6PSBuZXRodHRwLkhUVFBCYXNpY1NlY3VyaXR5TWlkZGxld2FyZShhcGlTY2hlbWEsICJBZG1pbiIsICJBZG1pbiBhY2Nlc3MiKQoKLy8gRW5kcG9pbnRzIHdpdGggYWRtaW4gYWNjZXNzLgpyLlJvdXRlKCIvYWRtaW4iLCBmdW5jKHIgZmNoaS5Sb3V0ZXIpIHsKICAgIHIuR3JvdXAoZnVuYyhyIGZjaGkuUm91dGVyKSB7CiAgICAgICAgci5XcmFwKGFkbWluQXV0aCwgYWRtaW5TZWN1cml0eVNjaGVtYSkgLy8gQWRkIGJvdGggbWlkZGxld2FyZXMgdG8gcm91dGluZyBncm91cCB0byBlbmZvcmNlIGFuZCBkb2N1bWVudCBzZWN1cml0eS4KICAgICAgICByLk1ldGhvZChodHRwLk1ldGhvZFB1dCwgIi9oZWxsby97bmFtZX0iLCBmaHR0cC5OZXdIYW5kbGVyKHUpKQogICAgfSkKfSkKYGBgCgpTZWUgW2V4YW1wbGVdKC4vX2V4YW1wbGVzL3Rhc2stYXBpL2ludGVybmFsL2luZnJhL25ldGh0dHAvcm91dGVyLmdvKS4KCiMjIEhhbmRsZXIgU2V0dXAKCkhhbmRsZXIgaXMgYSBnZW5lcmFsaXplZCBhZGFwdGVyIGZvciB1c2UgY2FzZSBpbnRlcmFjdG9yLCBzbyB1c3VhbGx5IHNldHVwIGlzIHRyaXZpYWwuCgpgYGBnbwovLyBBZGQgdXNlIGNhc2UgaGFuZGxlciB0byByb3V0ZXIuCnIuTWV0aG9kKGh0dHAuTWV0aG9kR2V0LCAiL2hlbGxvL3tuYW1lfSIsIGZodHRwLk5ld0hhbmRsZXIodSkpCmBgYAoKIyMgRXhhbXBsZQoKRm9yIG5vbi1nZW5lcmljIHVzZSBjYXNlLCBzZWUgYW5vdGhlciBbZXhhbXBsZV0oLi9fZXhhbXBsZXMvYmFzaWMvbWFpbi5nbykuCgpgYGBnbwpwYWNrYWdlIG1haW4KCmltcG9ydCAoCgkiY29udGV4dCIKCSJlcnJvcnMiCgkiZm10IgoJImxvZyIKCSJ0aW1lIgoKCSJnaXRodWIuY29tL3N3YWdnZXN0L2ZjaGkiCgkiZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0LWZhc3RodHRwL3Jlc3BvbnNlL2d6aXAiCgkiZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0LWZhc3RodHRwL3dlYiIKCXN3Z3VpICJnaXRodWIuY29tL3N3YWdnZXN0L3N3Z3VpL3Y0ZW1iIgoJImdpdGh1Yi5jb20vc3dhZ2dlc3QvdXNlY2FzZSIKCSJnaXRodWIuY29tL3N3YWdnZXN0L3VzZWNhc2Uvc3RhdHVzIgoJImdpdGh1Yi5jb20vdmFseWFsYS9mYXN0aHR0cCIKKQoKZnVuYyBtYWluKCkgewoJcyA6PSB3ZWIuRGVmYXVsdFNlcnZpY2UoKQoKCS8vIEluaXQgQVBJIGRvY3VtZW50YXRpb24gc2NoZW1hLgoJcy5PcGVuQVBJLkluZm8uVGl0bGUgPSAiQmFzaWMgRXhhbXBsZSIKCXMuT3BlbkFQSS5JbmZvLldpdGhEZXNjcmlwdGlvbigiVGhpcyBhcHAgc2hvd2Nhc2VzIGEgdHJpdmlhbCBSRVNUIEFQSS4iKQoJcy5PcGVuQVBJLkluZm8uVmVyc2lvbiA9ICJ2MS4yLjMiCgoJLy8gU2V0dXAgbWlkZGxld2FyZXMuCglzLldyYXAoCgkJZ3ppcC5NaWRkbGV3YXJlLCAvLyBSZXNwb25zZSBjb21wcmVzc2lvbiB3aXRoIHN1cHBvcnQgZm9yIGRpcmVjdCBnemlwIHBhc3MgdGhyb3VnaC4KCSkKCgkvLyBEZWNsYXJlIGlucHV0IHBvcnQgdHlwZS4KCXR5cGUgaGVsbG9JbnB1dCBzdHJ1Y3QgewoJCUxvY2FsZSBzdHJpbmcgYHF1ZXJ5OiJsb2NhbGUiIGRlZmF1bHQ6ImVuLVVTIiBwYXR0ZXJuOiJeW2Etel17Mn0tW0EtWl17Mn0kIiBlbnVtOiJydS1SVSxlbi1VUyJgCgkJTmFtZSAgIHN0cmluZyBgcGF0aDoibmFtZSIgbWluTGVuZ3RoOiIzImAgLy8gRmllbGQgdGFncyBkZWZpbmUgcGFyYW1ldGVyIGxvY2F0aW9uIGFuZCBKU09OIHNjaGVtYSBjb25zdHJhaW50cy4KCgkJLy8gRmllbGQgdGFncyBvZiB1bm5hbWVkIGZpZWxkcyBhcmUgYXBwbGllZCB0byBwYXJlbnQgc2NoZW1hLgoJCS8vIHRoZXkgYXJlIG9wdGlvbmFsIGFuZCBjYW4gYmUgdXNlZCB0byBkaXNhbGxvdyB1bmtub3duIHBhcmFtZXRlcnMuCgkJLy8gRm9yIG5vbi1ib2R5IHBhcmFtcywgbmFtZSB0YWcgbXVzdCBiZSBwcm92aWRlZCBleHBsaWNpdGx5LgoJCS8vIEUuZy4gaGVyZSBubyB1bmtub3duIGBxdWVyeWAgYW5kIGBjb29raWVgIHBhcmFtZXRlcnMgYWxsb3dlZCwKCQkvLyB1bmtub3duIGBoZWFkZXJgIHBhcmFtcyBhcmUgb2suCgkJXyBzdHJ1Y3R7fSBgcXVlcnk6Il8iIGNvb2tpZToiXyIgYWRkaXRpb25hbFByb3BlcnRpZXM6ImZhbHNlImAKCX0KCgkvLyBEZWNsYXJlIG91dHB1dCBwb3J0IHR5cGUuCgl0eXBlIGhlbGxvT3V0cHV0IHN0cnVjdCB7CgkJTm93ICAgICB0aW1lLlRpbWUgYGhlYWRlcjoiWC1Ob3ciIGpzb246Ii0iYAoJCU1lc3NhZ2Ugc3RyaW5nICAgIGBqc29uOiJtZXNzYWdlImAKCX0KCgltZXNzYWdlcyA6PSBtYXBbc3RyaW5nXXN0cmluZ3sKCQkiZW4tVVMiOiAiSGVsbG8sICVzISIsCgkJInJ1LVJVIjogItCf0YDQuNCy0LXRgiwgJXMhIiwKCX0KCgkvLyBDcmVhdGUgdXNlIGNhc2UgaW50ZXJhY3RvciB3aXRoIHJlZmVyZW5jZXMgdG8gaW5wdXQvb3V0cHV0IHR5cGVzIGFuZCBpbnRlcmFjdGlvbiBmdW5jdGlvbi4KCXUgOj0gdXNlY2FzZS5OZXdJbnRlcmFjdG9yKGZ1bmMoY3R4IGNvbnRleHQuQ29udGV4dCwgaW5wdXQgaGVsbG9JbnB1dCwgb3V0cHV0ICpoZWxsb091dHB1dCkgZXJyb3IgewoJCW1zZywgYXZhaWxhYmxlIDo9IG1lc3NhZ2VzW2lucHV0LkxvY2FsZV0KCQlpZiAhYXZhaWxhYmxlIHsKCQkJcmV0dXJuIHN0YXR1cy5XcmFwKGVycm9ycy5OZXcoInVua25vd24gbG9jYWxlIiksIHN0YXR1cy5JbnZhbGlkQXJndW1lbnQpCgkJfQoKCQlvdXRwdXQuTWVzc2FnZSA9IGZtdC5TcHJpbnRmKG1zZywgaW5wdXQuTmFtZSkKCQlvdXRwdXQuTm93ID0gdGltZS5Ob3coKQoKCQlyZXR1cm4gbmlsCgl9KQoKCS8vIERlc2NyaWJlIHVzZSBjYXNlIGludGVyYWN0b3IuCgl1LlNldFRpdGxlKCJHcmVldGVyIikKCXUuU2V0RGVzY3JpcHRpb24oIkdyZWV0ZXIgZ3JlZXRzIHlvdS4iKQoKCXUuU2V0RXhwZWN0ZWRFcnJvcnMoc3RhdHVzLkludmFsaWRBcmd1bWVudCkKCgkvLyBBZGQgdXNlIGNhc2UgaGFuZGxlciB0byByb3V0ZXIuCglzLkdldCgiL2hlbGxvL3tuYW1lfSIsIHUpCgoJLy8gU3dhZ2dlciBVSSBlbmRwb2ludCBhdCAvZG9jcy4KCXMuRG9jcygiL2RvY3MiLCBzd2d1aS5OZXcpCgoJLy8gU3RhcnQgc2VydmVyLgoJbG9nLlByaW50bG4oImh0dHA6Ly9sb2NhbGhvc3Q6ODAxMS9kb2NzIikKCWlmIGVyciA6PSBmYXN0aHR0cC5MaXN0ZW5BbmRTZXJ2ZSgiOjgwMTEiLCBmY2hpLlJlcXVlc3RIYW5kbGVyKHMpKTsgZXJyICE9IG5pbCB7CgkJbG9nLkZhdGFsKGVycikKCX0KfQpgYGAKCiFbRG9jdW1lbnRhdGlvbiBQYWdlXSguL19leGFtcGxlcy9iYXNpYy9zY3JlZW4ucG5nKQoKIyMgVmVyc2lvbmluZwoKVGhpcyBwcm9qZWN0IGFkaGVyZXMgdG8gW1NlbWFudGljIFZlcnNpb25pbmddKGh0dHBzOi8vc2VtdmVyLm9yZy8jc2VtYW50aWMtdmVyc2lvbmluZy0yMDApLgoKQmVmb3JlIHZlcnNpb24gYDEuMC4wYCwgYnJlYWtpbmcgY2hhbmdlcyBhcmUgdGFnZ2VkIHdpdGggYE1JTk9SYCBidW1wLCBmZWF0dXJlcyBhbmQgZml4ZXMgYXJlIHRhZ2dlZCB3aXRoIGBQQVRDSGAgYnVtcC4KQWZ0ZXIgdmVyc2lvbiBgMS4wLjBgLCBicmVha2luZyBjaGFuZ2VzIGFyZSB0YWdnZWQgd2l0aCBgTUFKT1JgIGJ1bXAuCgpCcmVha2luZyBjaGFuZ2VzIGFyZSBkZXNjcmliZWQgaW4gW1VQR1JBREUubWRdKC4vVVBHUkFERS5tZCkuCg== readmeEtag: '"58c198128c1f22c1ede67899d800e7273202e40e"' readmeLastModified: Mon, 27 Jun 2022 07:33:50 GMT repositoryId: 507534984 description: Web services with OpenAPI and JSON Schema done quick in Go created: '2022-06-26T09:49:48Z' updated: '2025-05-12T06:10:23Z' language: Go archived: false stars: 4 watchers: 0 forks: 0 owner: swaggest logo: https://avatars.githubusercontent.com/u/19609628?v=4 license: MIT repoEtag: '"ba4cb14311eca673ca25b26323c0e6c3689bd1e71f63bf337e06c8ccd43cdcea"' repoLastModified: Mon, 12 May 2025 06:10:23 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/srfrnk/crd-api-doc-gen v3: true repositoryMetadata: base64Readme: >- IyBjcmQtYXBpLWRvYy1nZW4KCkt1YmVybmV0ZXMgQ1JEIEFQSSBHZW5lcmF0b3IKCiMjIEJhc2ljIFVzYWdlCgpUbyBnZW5lcmF0ZSBhbiBgSFRNTGAgQVBJIGRvY3VtZW50YXRpb24gcGFnZToKCjEuIE9idGFpbiBzb21lIGBqc29uYCBvciBgeWFtbGAgbWFuaWZlc3QgZmlsZXMgdGhhdCBjb250YWluIG9uZSBvciBtb3JlIGBDdXN0b21SZXNvdXJjZURlZmluaXRpb25gIG9iamVjdHMKMS4gKipPcHRpb25hbGx5Kiogb2J0YWluIGEgZmlsZSB3aXRoIHNvbWUgYXBpIGluZm8uCjEuIFJ1bjogYGRvY2tlciBydW4gLS1ybSAtdiAkUFdELzxQQVRIX1RPX1lPVVJfRklMRVM+Oi88QU5ZX1BBVEg+IGdoY3IuaW8vc3Jmcm5rL2NyZC1hcGktZG9jLWdlbjo8VkVSU0lPTl9UQUc+IDxJTlBVVF9GT0xERVJfUEFUSD4gPE9VVFBVVF9GT0xERVJfUEFUSD4gWzxBUElfSU5GT19QQVRIPl1gCjEuICoqTm90ZSoqIHRoYXQgdGhlc2UgcGF0aHMgYXJlIGludGVybmFsIHRvIHRoZSBjb250YWluZXIuIEUuZy4gYGRvY2tlciBydW4gLS1ybSAtdiAvbXlib3gvbXlmaWxlczovaW50ZXJuYWwgZ2hjci5pby9zcmZybmsvY3JkLWFwaS1kb2MtZ2VuOmxhdGVzdCAvaW50ZXJuYWwvc29tZS9wYXRoIC9pbnRlcm5hbC9hbm90aGVyL3BhdGhgCjEuIGA8SU5QVVRfRk9MREVSX1BBVEg+YCBuZWVkcyB0byBjb250YWluIGFueSBgeWFtbGAgb3IgYGpzb25gIEs4cyBtYW5pZmVzdCBmaWxlcyB3aXRoIENSRCBkZWZpbml0aW9ucy4KMS4gRmluZCBnZW5lcmF0ZWQgSFRNTCBwYWdlIGBpbmRleC5odG1sYCBpbnNpZGUgdGhlIHNwZWNpZmllZCBvdXRwdXQgZm9sZGVyLgoKIyMgQVBJIEluZm8gZmlsZQoKVG8gY3VzdG9taXplIGFwaSBpbmZvIHlvdSBjYW4gc3BlY2lmeSBhbiBhcGktaW5mbyBmaWxlLgpUaGlzIGZpbGUgbXVzdCBiZSBpbiBgeWFtbGAvYGpzb25gIGZvcm1hdCBhbmQgaGF2ZSB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKCmBgYHlhbWwKYXBpLWluZm86CiAgdmVyc2lvbjogPEFOWSBTVFJJTkc+CiAgdGl0bGU6IDxBTlkgU1RSSU5HPgogIGRlc2NyaXB0aW9uOiA8QU5ZIE1BUktET1dOIFRFWFQ+CmBgYAoKIyMgQ3JlZGl0cwoKMS4gQmFzZWQgb24gW29wZW5hcGktZ2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKQoxLiBVc2luZyBbeXFdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWtlZmFyYWgveXEpCg== readmeEtag: '"81400118c011ebfbb4996d87a2f1fe67bad4fba8"' readmeLastModified: Sun, 19 Dec 2021 16:57:32 GMT repositoryId: 426717001 description: Kubernetes CRD API Generator created: '2021-11-10T17:36:05Z' updated: '2025-09-03T07:08:17Z' language: Mustache archived: false stars: 5 watchers: 0 forks: 3 owner: srfrnk logo: https://avatars.githubusercontent.com/u/1501654?v=4 license: MIT repoEtag: '"6310fb0cf4e2dc98082ce5a9a4015e9eb3178ae2cba34fc034afadf729f553fa"' repoLastModified: Wed, 03 Sep 2025 07:08:17 GMT foundInMaster: true category: Code Generators id: 11c2eb0e66e56fa8344ebdd16b47d794 - source: openapi3 tags repository: https://github.com/dernasherbrezon/vue-openapi-bootstrap v3: true repositoryMetadata: base64Readme: >- IyMgU2NyZWVuc2hvdHMKCiFbc2NyZWVuMV0oL2RvYy8xLnBuZz9yYXc9dHJ1ZSkKIVtzY3JlZW4yXSgvZG9jLzIucG5nP3Jhdz10cnVlKQoKIyMgVXNhZ2UKCmBgYGphdmFzY3JpcHQKPHRlbXBsYXRlPgogIDx2dWUtb3BlbmFwaS1ib290c3RyYXAgOm9wZW5hcGk9Im9wZW5hcGkiPjwvdnVlLW9wZW5hcGktYm9vdHN0cmFwPgo8L3RlbXBsYXRlPgoKPHNjcmlwdD4KaW1wb3J0IHZ1ZU9wZW5hcGlCb290c3RyYXAgZnJvbSAndnVlLW9wZW5hcGktYm9vdHN0cmFwL3NyYy92dWUtb3BlbmFwaS1ib290c3RyYXAnCmV4cG9ydCBkZWZhdWx0IHsKICBjb21wb25lbnRzOiB7dnVlT3BlbmFwaUJvb3RzdHJhcH0sCiAgZGF0YSAoKSB7CiAgICByZXR1cm4gewogICAgICBvcGVuYXBpOiB7fQogICAgfQogIH0KfQo8L3NjcmlwdD4KYGBgCgojIyBCdWlsZCBTZXR1cAoKYGBgIGJhc2gKIyBpbnN0YWxsIGRlcGVuZGVuY2llcwpucG0gaW5zdGFsbAoKIyBidWlsZCBmb3IgcHJvZHVjdGlvbiB3aXRoIG1pbmlmaWNhdGlvbgpucG0gcnVuIGJ1aWxkCgpgYGAKCkZvciBhIGRldGFpbGVkIGV4cGxhbmF0aW9uIG9uIGhvdyB0aGluZ3Mgd29yaywgY2hlY2sgb3V0IHRoZSBbZ3VpZGVdKGh0dHA6Ly92dWVqcy10ZW1wbGF0ZXMuZ2l0aHViLmlvL3dlYnBhY2svKSBhbmQgW2RvY3MgZm9yIHZ1ZS1sb2FkZXJdKGh0dHA6Ly92dWVqcy5naXRodWIuaW8vdnVlLWxvYWRlcikuIAo= readmeEtag: '"2f3f3bc03fe99ba3ffbae4cc81843eb6a1805fff"' readmeLastModified: Fri, 11 Jun 2021 07:21:08 GMT repositoryId: 222297022 description: OpenAPI viewer component for VueJS created: '2019-11-17T19:00:16Z' updated: '2024-11-27T17:42:28Z' language: Vue archived: false stars: 3 watchers: 2 forks: 0 owner: dernasherbrezon logo: https://avatars.githubusercontent.com/u/1614424?v=4 license: Apache-2.0 repoEtag: '"16c12d110a1e48e623c951aab32801d95bc327175984847abbb91e5c0ec14512"' repoLastModified: Wed, 27 Nov 2024 17:42:28 GMT foundInMaster: true category: - Documentation - Parsers id: 5907b7f8d6ec3847e6b8965336450484 - source: openapi3 tags repository: https://github.com/adamko-dev/zally-gradle-plugin v3: true id: 0153bb0c58b4017bbb9027350ca69752 repositoryMetadata: base64Readme: >- IyBaYWxseSBHcmFkbGUgUGx1Z2luCgpbWmFsbHkgR3JhZGxlIFBsdWdpbl0oaHR0cHM6Ly9naXRodWIuY29tL2FkYW1rby1kZXYvemFsbHktZ3JhZGxlLXBsdWdpbikgaXMgYW4KdW5vZmZpY2lhbCBHcmFkbGUgUGx1Z2luIGZvciBbWmFsbHldKGh0dHBzOi8vZ2l0aHViLmNvbS96YWxhbmRvL3phbGx5KSwgdGhlCm1pbmltYWxpc3RpYywgc2ltcGxlLXRvLXVzZSBPcGVuQVBJIDIgYW5kIDMgbGludGVyLgoKVGhlIFphbGx5IEdyYWRsZSBwbHVnaW4gaXMgYmFzZWQgb24gdGhlCltaYWxseSBNYXZlbiBwbHVnaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhsby96YWxseS1tYXZlbi1wbHVnaW4pLgoKKipUaGlzIHByb2plY3QgaXMgdW5maW5pc2hlZCoqLiBJJ20gc2hhcmluZyB0aGUgd29yayBzbyBmYXIgdG8gZ2V0IHRoZSBiYWxsIHJvbGxpbmcuCgojIyMgU2V0dXAKCmBgYGtvdGxpbgovLyBidWlsZC5ncmFkbGUua3RzCgpidWlsZHNjcmlwdCB7CiAgcmVwb3NpdG9yaWVzIHsKICAgIG1hdmVuQ2VudHJhbCgpCiAgICBncmFkbGVQbHVnaW5Qb3J0YWwoKQogICAgbWF2ZW4oImh0dHBzOi8vaml0cGFjay5pbyIpCiAgfQp9CgpwbHVnaW5zIHsKLy8gIGlkKCJkZXYuYWRhbWtvLnphbGx5IikKICBpZCgiY29tLmdpdGh1Yi5hZGFta28tZGV2LnphbGx5LWdyYWRsZS1wbHVnaW4iKSB2ZXJzaW9uICJtYWluLVNOQVBTSE9UIgp9Cgp6YWxseSB7CiAgb3BlbkFwaVNwZWMuc2V0KAogICAgbGF5b3V0LnByb2plY3REaXJlY3RvcnkuZmlsZSgic3JjL21haW4vcmVzb3VyY2VzL29wZW5hcGkueW1sIikKICApCn0KYGBgCgpSdW46IGAuL2dyYWRsZXcgemFsbHlgCg== readmeEtag: '"3952c3f48a22e45f68833bf2dab336399ec00ac1"' readmeLastModified: Wed, 17 Aug 2022 11:25:51 GMT repositoryId: 520641991 description: Use Zally to validate OpenAPI specs in a Gradle project created: '2022-08-02T20:33:41Z' updated: '2023-12-11T16:25:27Z' language: Kotlin archived: false stars: 3 watchers: 1 forks: 0 owner: adamko-dev logo: https://avatars.githubusercontent.com/u/93070146?v=4 license: Apache-2.0 repoEtag: '"fa0018cbfd7b387c41e2a5ec06d0d7cf7f6fe591fa72683d1255086209e330c1"' repoLastModified: Mon, 11 Dec 2023 16:25:27 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/derberg/convert-swagger-to-openapi-playground v3: true repositoryMetadata: base64Readme: >- IyBDb252ZXJ0IFN3YWdnZXIgdG8gT3BlbkFQSSBQbGF5Z3JvdW5kCgpTdGF5aW5nIHdpdGggU3dhZ2dlciAyLjAgaXMgbGlrZSBzdGF5aW5nIHdpdGggLi4uIHN0aWxsIHdvcmtpbmcgb24gYSBnb29kIGNvbXBhcmlzb24uIEFueXdheSwgeW91IHNob3VsZCBtaWdyYXRlIHRvIE9wZW5BUEksIGFuZCBteSBnb2FsIGhlcmUgaXMgbm90IHRvIGNvbnZpbmNlIHlvdSB3aHkuIEkgYXNzdW1lIHlvdSBhbHJlYWR5IG1hZGUgdGhpcyBzbWFydCBkZWNpc2lvbiwgYW5kIEkganVzdCB3YW50IHRvIG1ha2UgaXQgZWFzaWVyIGZvciB5b3UuCgpJIGRpZCBub3QgcGVyZm9ybSBhbnkgbW9yZSBpbi1kZXB0aCBpbnZlc3RpZ2F0aW9uIG9mIGF2YWlsYWJsZSB0b29scy4gVGhlcmUgYXJlIFt0b29sc10oaHR0cHM6Ly9naXRodWIuY29tL01lcm1hZGUvb2FzLWtpdCkgcHJvdmlkZWQgYnkgTWVybWFkZSBTb2Z0d2FyZS4gVG8gYmUgbW9yZSBzcGVjaWZpYywgYnkgW01pa2UgUmFscGhzb25dKGh0dHBzOi8vdHdpdHRlci5jb20vUGVybWl0dGVkU29jKSB0aGF0IGlzIGEgbWVtYmVyIG9mIFtUZWNobmljYWwgU3RlZXJpbmcgQ29tbWl0dGVlXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci9NQUlOVEFJTkVSUy5tZCkuIEZvciBtZSwgdGhpcyBpcyBhIGdvb2QgcmVhc29uIG5vdCB0byByZXNlYXJjaCBkaWZmZXJlbnQgdG9vbHMuCgotIFtDb252ZXJ0IGluIGEgQnJvd3Nlcl0oI2NvbnZlcnQtaW4tYS1icm93c2VyKQotIFtDb252ZXJ0IGluIGEgVGVybWluYWxdKCNjb252ZXJ0LWluLWEtdGVybWluYWwpCiAgICAtIFtOUE1dKCNucG0pCiAgICAtIFtOUFhdKCNucHgpCiAgICAtIFtEb2NrZXJdKCNkb2NrZXIpCi0gW0NvbnZlcnQgTXVsdGlwbGUgRmlsZXNdKCNjb252ZXJ0LW11bHRpcGxlLWZpbGVzKQoKIyMgQ29udmVydCBpbiBhIEJyb3dzZXIKCkNvbnZlcnNpb24gaW4gYSBicm93c2VyIGlzIGFkZHJlc3NlZCBieSBbS2luIExhbmVdKGh0dHBzOi8vdHdpdHRlci5jb20va2lubGFuZSkgYWthIEFQSSBFdmFuZ2VsaXN0IGluIFt0aGlzIHRocmVhZCBhbmQgdGhlIHZpZGVvXShodHRwczovL3R3aXR0ZXIuY29tL2FwaWV2YW5nZWxpc3Qvc3RhdHVzLzEyOTU1MDIwOTM2MjU2NDMwMDgpIHNvIHdhdGNoIGl0IGFuZCBnbyB0byBodHRwczovL21lcm1hZGUub3JnLnVrL29wZW5hcGktY29udmVydGVyCgojIyBDb252ZXJ0IGluIGEgVGVybWluYWwKClVzZSBbc3dhZ2dlcjJvcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vTWVybWFkZS9vYXMta2l0L2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3N3YWdnZXIyb3BlbmFwaS9SRUFETUUubWQpIGFuZCBoYXZlIGZ1bjoKCiMjIyBOUE0KCjEuIEluc3RhbGwgdGhlIHRvb2wgYG5wbSBpbnN0YWxsIC1nIHN3YWdnZXIyb3BlbmFwaWAKMS4gUnVuIGNvbnZlcnNpb24gYHN3YWdnZXIyb3BlbmFwaSAtLXlhbWwgLS1vdXRmaWxlIG9wZW5hcGkueWFtbCBodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uYAoKQW5kIHRoYXQgaXMgaXQuIENoZWNrIHlvdXIgbmV3IGBvcGVuYXBpLnlhbWxgIGZpbGUuCgojIyMgTlBYCgpbTlBYXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9ucHgpIGlzIHVzZWZ1bCBpbiBDSS9DRCB3aGVyZSB5b3UgZG8gbm90IHdhbnQgdG8gaW5zdGFsbCBgc3dhZ2dlcjJvcGVuYXBpYCBnbG9iYWxseS4KCmBucHggLXAgc3dhZ2dlcjJvcGVuYXBpIHN3YWdnZXIyb3BlbmFwaSAtLXlhbWwgLS1vdXRmaWxlIG9wZW5hcGkueWFtbCBodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uYAoKIyMjIERvY2tlcgoKTlBNIGFuZCBOUFggaXMgbm90IHlvdXIgdGhpbmd5PyB1c2UgdGhlIERvY2tlciBpbWFnZSBwcm92aWRlZCBieSBNaWtlLgoKYGBgYmFzaAojdGhpcyBwYXJ0ICItdiAke1BXRH06L3Vzci9zcmMvYXBwIiBtb3VudHMgdGhlIGRpcmVjdG9yeSB3aGVyZSB5b3Ugc3RhcnRlZCAiZG9ja2VyIHJ1biIgaW5zaWRlIHRoZSBjb250YWluZXIgd2hlcmUgQ0xJIGlzIHRyaWdnZXJlZCwgdGhpcyB3YXkgZ2VuZXJhdGVkICJvcGVuYXBpLnlhbWwiIGdldHMgaW50byB5b3VyIGxvY2FsIGRyaXZlCmRvY2tlciBydW4gLS1ybSAtdiAke1BXRH06L3Vzci9zcmMvYXBwIG1lcm1hZGUvc3dhZ2dlcjJvcGVuYXBpIHN3YWdnZXIyb3BlbmFwaSAtLXlhbWwgLS1vdXRmaWxlIG9wZW5hcGkueWFtbCBodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uCmBgYAoKIyMgQ29udmVydCBNdWx0aXBsZSBGaWxlcwoKWW91IG1vc3QgcHJvYmFibHkgaGF2ZSBtYW55IHNlcnZpY2VzLCBhbmQgeW91IG5lZWQgdG8gY29udmVydCBtYW55IFN3YWdnZXIgZmlsZXMsIGFuZCB5b3UgZG8gbm90IHdhbnQgdG8gZG8gaXQgb25lIGJ5IG9uZSBidXQgYWxsIGF0IG9uY2Ugd2l0aCBhIHNjcmlwdC4gWW91IGNhbiB1c2UgQmFzaCBhbmQgd3JpdGUgc29tZSBzY3JpcHQgdGhhdCBydW5zIHRoZSBDTEksIGJ1dCB3cml0aW5nIEJhc2ggc2NyaXB0cyBpcyBsaWtlIC4uLiB5ZWFoLCBvbmUgZGF5IEknbGwgZmluZCBhIGdvb2QgY29tcGFyaXNvbi4KCkp1c3QgdXNlIGBzd2FnZ2VyMm9wZW5hcGlgIGFzIGEgbGlicmFyeS4gSW4gYGNvbnZlcnRtdWx0aXBsZWAgZGlyZWN0b3J5LCB5b3UgY2FuIGZpbmQgYSBbc2FtcGxlIGNvZGVdKGNvbnZlcnRtdWx0aXBsZS9pbmRleC5qcykgdGhhdCB5b3UgY2FuIGVhc2lseSBlZGl0IGZvciB5b3VyIG5lZWRzLiBJdHMgY29kZSBoYXMgcHJvcGVyIGNvbW1lbnRzIHRoYXQgd2lsbCBoZWxwIHlvdSB1bmRlcnN0YW5kIHdoYXQgcGFydHMgeW91IG1pZ2h0IGNoYW5nZSBpbiBjYXNlIHlvdSBoYXZlIGRpZmZlcmVudCBkaXJlY3Rvcnkgc3RydWN0dXJlIG9yIGZpbGVuYW1lcyB0aGFuIHRoZSBvbmVzIHVzZWQgaW4gdGhlIHNhbXBsZQoKVG8gcGxheSB3aXRoIHRoZSBleGFtcGxlLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6CjEuIGBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2RlcmJlcmcvY29udmVydC1zd2FnZ2VyLXRvLW9wZW5hcGktcGxheWdyb3VuZC5naXRgCjEuIGBjZCBjb252ZXJ0LXN3YWdnZXItdG8tb3BlbmFwaS1wbGF5Z3JvdW5kL2NvbnZlcnRtdWx0aXBsZWAKMS4gYG5wbSBpbnN0YWxsYAoxLiBgbnBtIHN0YXJ0YAo= readmeEtag: '"c09bc73a43355ecfcbe670a69e08691339aa6619"' readmeLastModified: Tue, 18 Aug 2020 13:01:09 GMT repositoryId: 288430830 description: >- Some instructions and sample how to convert Swagger 2.0 files to OpenAPI 3.0 created: '2020-08-18T10:58:26Z' updated: '2025-03-10T13:27:54Z' language: JavaScript archived: false stars: 4 watchers: 1 forks: 2 owner: derberg logo: https://avatars.githubusercontent.com/u/6995927?v=4 repoEtag: '"995591b4ebc0a54ffefc4f71c97b82bc33d9a08fb547b563e03b242775f32b58"' repoLastModified: Mon, 10 Mar 2025 13:27:54 GMT foundInMaster: true category: - Description Validators - Parsers id: c4af853e2cb7950af6ef30a892c513b0 - source: openapi3 tags repository: https://github.com/joar/py-openapilib v3: true repositoryMetadata: base64Readme: >- Li4gdmltOnRhYnN0b3A9NDpzaGlmdHdpZHRoPTQ6c29mdHRhYnN0b3A9NDoKCi4uIHxuYW1lfCByZXBsYWNlOjogYGBvcGVuYXBpbGliYGAKLi4gfGRlc2NyaXB0aW9ufCByZXBsYWNlOjogT3BlbkFQSSAzIE9iamVjdCBNb2RlbAoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8bmFtZXwgLSB8ZGVzY3JpcHRpb258CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpTdGF0dXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi0gICB8bmFtZXwgaXMgaW4gZGV2ZWxvcG1lbnQuCi0gICB8bmFtZXwgaW1wbGVtZW50cyB0aGUgbWFqb3JpdHkgb2YgdGhlIGZpZWxkcy4KCkNvbXBhdGliaWxpdHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi0gICB8bmFtZXwgYWltcyB0byBpbXBsZW1lbnQgdGhlIGBPcGVuQVBJIDMuMC4wIFNwZWNpZmljYXRpb25gXy4KLSAgIHxuYW1lfCBpcyBjb21wYXRpYmxlIHdpdGggUHl0aG9uID49IDMuNiwgZHVlIHRvIGl0J3MgdXNhZ2Ugb2YgZi1zdHJpbmdzLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmVmZXJlbmNlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKLSAgIGBPcGVuQVBJIDMuMC4wIFNwZWNpZmljYXRpb24gPGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kPmBfCg== readmeEtag: '"241e21c7f9feaca803089c83f1a504f389cb96e4"' readmeLastModified: Mon, 26 Mar 2018 15:02:44 GMT repositoryId: 107727934 description: Python 3.6 OpenAPI 3 Object Model - built with attrs created: '2017-10-20T21:24:50Z' updated: '2024-05-21T10:16:12Z' language: Python archived: false stars: 3 watchers: 1 forks: 2 owner: joar logo: https://avatars.githubusercontent.com/u/20814?v=4 license: BSD-2-Clause repoEtag: '"fa4be6fae6986251a2888b92201fd56dd4b1e33cba0cad46db99dcb2a0c3822e"' repoLastModified: Tue, 21 May 2024 10:16:12 GMT foundInMaster: true category: Parsers id: 62c05e9899c36eb5cb5f25061e0fce48 - source: openapi3 tags repository: https://github.com/itzlyg/iot v3: true id: 246f8e81b414ff1c8017ebcd15da30ac repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9TcHJpbmclMjBCb290LTIuNy4xOC1ibHVlLnN2ZyIgYWx0PSJEb3dubG9hZHMiPgogPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvVnVlLTIuNi4xNC1ibHVlLnN2ZyIgYWx0PSJEb3dubG9hZHMiPgo8L3A+CgojIyAg566A5LuLCuacrOmhueebruaYr+S4gOS4quWfuuS6jmBKYXZhYCBgVnVlYOW8gOWPkeeahOeJqeiBlOe9keWfuuehgOW5s+WPsO+8jOWPr+S7peW/q+mAn+WunueOsOehrOS7tuiuvuWkh+aOpeWFpeOAggoKKiBKYXZhIOWQjuerr++8mmBtYXN0ZXJgIOWIhuaUr+S4uiBKREsgOCArIFNwcmluZyBCb290IDIuNy4xOAoqIOeuoeeQhuWQjuWPsOeahOeUteiEkeerr++8mlZ1ZTIg5o+Q5L6bIGBlbGVtZW50LXVpYCDniYjmnKwKKiDlkI7nq6/ph4fnlKggU3ByaW5nIEJvb3Qg5aSa5qih5Z2X5p625p6E44CBTXlTUUwgKyBNeUJhdGlzIFBsdXPjgIFSZWRpcyArIFJlZGlzc29u77yMVmVydC54Ciog5pSv5oyB5aSa56ef5oi35qih5byPCiog57uf5LiA5o6l5Y+j5o6l5pS25ZKM6L+U5Zue5qC85byP77yM5L2/55SoT3BlbkFwaSAzK2tuaWZlNGrkvZzkuLrmjqXlj6PmlofmoaPlt6XlhbcKKiDml7bluo/mlbDmja7lupPkvb/nlKhURGVuZ2luZe+8jOWPr+WPpuihjOaJqeWxlQoqIOa2iOaBr+mYn+WIl+W3sue7j+WunueOsFJvY2tldE1R5ZKM5Z+65LqOdmVydHjnmoRldmVudGJ1c++8jOWPr+S7peiHquihjOagueaNrumcgOimgeaJqeWxleS9v+eUqOWFtuS7luS4remXtOS7tu+8mkthZmth44CBUmFiYml0TVHnrYkKKiDlrp7ml7bpgJrkv6Hkvb/nlKh3ZWJzb2NrZXTvvIzln7rkuo52ZXJ0LnjmoYbmnrblrp7njrAKKiDpm4bmiJDkuIPniZvkupHkupHlrZjlgqjmnI3liqHvvIzpooTnlZnlhbbku5bmnI3liqHllYbmjqXlj6PvvIzoh6rooYzlrp7njrDmianlsZUKCiMjIyMg5Lqn5ZOB54m55oCnCgotIOiuvuWkh+aOpeWFpe+8muaUr+aMgeaOpeWFpeihjOS4muagh+WHhueJqeiBlOe9keWNj+iuru+8iG1xdHTjgIFodHRw44CBbW9kYnVz562J77yJ77yM5a6e546w5rW36YeP6K6+5aSH5o6l5YWl77yM5Lmf5Y+v5Lul6YCa6L+H6Ieq5a6a5LmJ55qE5pa55byP5o6l5YWl6Ieq5a6a5LmJ5Y2P6K6u44CCCi0g54mp5qih5Z6L77ya5pSv5oyB54mp5qih5Z6L77yM5Y+v5Lul5pyJ5pWI55qE566h55CG6K6+5aSH55qE5bGe5oCn44CB5Yqf6IO944CB5LqL5Lu244CCCi0g5Lqn5ZOB44CB6K6+5aSH5YiG57uE5qaC5b+177ya5pSv5oyB6K6+5aSH5qC55o2u5bqU55So5Zy65pmv5ZKM55So5oi35p2D6ZmQ5a6e546w6ZqU56a777yM5pa55L6/55So5oi357uf5LiA566h55CG44CCCi0g5p2D6ZmQ566h55CG77ya57O757uf5pSv5oyB5Z+65pys55qE6KeS6Imy566h55CG77yM5pSv5oyB55So5oi344CB6KeS6Imy44CB6I+c5Y2V44CB5oyJ6ZKu5Z+65pys5p2D6ZmQ5Yqf6IO944CCCi0g6Ieq5Li75Y+v5o6n77ya5Y+v5pys5Zyw44CB56eB5pyJ5LqR44CB5YWs5pyJ5LqR6YOo572y44CCCi0g5pe25bqP5pWw5o2u5bqT77ya5pWw5o2u5LiL5Y+R44CB5LiK5oql5pWw5o2u6YeH55So5pWw5bqP5pWw5o2u5bqT77yM5pSv5oyB5rW36YeP5bm25Y+R44CCCi0g5bmz5Y+w5Z+65bqn77ya5Y+v5L2c5Li654mp6IGU572R6KGM5Lia6Kej5Yaz5pa55qGI5bmz5Y+w5Z+65bqn77yM5pSv5oyB5aSa5Liq6KGM5Lia6Kej5Yaz5pa55qGI5YWx55So5LiA5Liq54mp6IGU572R5bmz5Y+w5Z+65bqn77yM5Li65LyB5Lia5YeP5bCR5oiQ5pys77yM6I635Y+W5pu05aSa55qE6KGM5Lia57uP6aqM5ZKM5pa55qGI44CCCgojIyMjIOWFtuS7lgrikaAg5Luj56CB5pW05rSB44CB5p625p6E5pW05rSB77yM6YG15b6q44CK6Zi/6YeM5be05be0IEphdmEg5byA5Y+R5omL5YaM44CL6KeE6IyD44CCCgrikaEg5bel5YW357G75Y+q5L6d6LWWQXBhY2hl55u45YWz55qE77yM5oiW566A5Y2V6Ieq6KGM57yW5YaZ77yM5YeP5bCR56ys5LiJ5pa55L6d6LWW77yM6YG/5YWN6auY5Y2x5ryP5rSe44CCCgrikaIg57uf5LiA5o6l5Y+j5o6l5pS25ZKM6L+U5Zue5qC85byPCgoKIyMjIyDnianogZTnvZHpobnnm64g5qih5Z2X57uE5oiQCgojIyMjIyBwcm90b2NvbCDljY/orq7lsYLku6PnoIEKLSAx44CBYmFzZSDljY/orq7ln7rnoYDmir3lj5YKLSAy44CBc2VydmljZSDlrp7njrDljY/orq7nu4Tku7bvvIzlrp7njrDmlbTkuKrpgJrorq/pgJrpgZPjgIHnvJbop6PnoIHvvIzlrozmiJDmlbDmja7nmoTmtYHovazjgILmj5Dkvpvmlrnms5Xnu5nkuJrliqHlsYLosIPnlKgKLSAz44CBdGNw44CBaHR0cOOAgXdz44CBbXF0dOaYr+WFt+S9k+WNj+iurueahOWunueOsOWMhQoKIyMjIyMgbW9kdWxlIOaKveixoeWHuuWPr+S7peWkmuWunueOsOaWueW8j+eahOe7hOS7tgotIDHjgIFvc3Mg5paH5Lu25a2Y5YKoCi0gMuOAgW5vdGlmeSDlkYrorabpgJrnn6UKLSAz44CBc2luayDnianmqKHlnovmlbDmja7okL3lnLDliLDmlbDmja7lupMKCiMjIyMjIGFjaGlldmUg55So5p2l5a6e546wIG1vZHVsZee7hOS7tueahAotIDHjgIFtcS12ZXJ0eCDnlKh2ZXJ0Lngg5p2l5a6e546w5raI5oGv6Zif5YiXCi0gMuOAgXJvY2tldC1tcSByb2NrZXRNceeahOWunueOsAotIDPjgIFvc3MtcW4g5LiD54mb5a6e546w5a2Y5YKo5pa55qGICi0gNOOAgXNpbmstdGQgVERlbmdpbmUg5a+56K6+5aSH5LiK5oql5LiL5Y+R5pWw5o2u6K6w5b2V44CB6K6+5aSH55qE5bGe5oCn562J5pWw5o2u6YeP5b6I5aSn55qE5Zy65pmvCi0gNeOAgXNpbmstbXlzcWwgbXlzcWwg55qE5pa55byP5a6e546w5pWw5o2u6JC95ZywCgojIyMjIyBiaXog5Lia5Yqh5bGCCi0gMeOAgWJhc2Ug5bel5YW357G777yb5Z+656GA5p6a5Li+5YC844CBdm/nmoTlrprkuYnvvJvns7vnu5/phY3nva4KLSAy44CBc2VydmljZe+8jOWFt+S9k+eahOS4muWKoe+8jOaKveemu+WkhOeQhu+8jOWPr+S7peS+m+Wkmuerr+iwg+eUqOWunueOsO+8mndlYuOAgW9wZW5BcGnnrYkKLSAz44CBb3Blbi1hcGkg5a+556ys5LiJ5pa55a+55o6l5o+Q5L6b5o6l5Y+jCi0gM+OAgXRlc3Qg5rWL6K+V5Luj56CBCi0gNOOAgXdlYiB3ZWLnq6/nmoTmjqXlj6MKCiMjIyMg5Yqf6IO954K577yaCi0gMeOAgeaUr+aMgW1xdHTjgIFodHRw44CBdGNw44CBd2Vic29ja2V0562J5Y2P6K6u6YCa6YGTCi0gMuOAgeWunueOsOeJqeiBlOe9keiuvuWkh+WfuuacrOWNj+iuru+8jOWunueOsOaWsOiuvuWkh+aOpeWFpeaXtuWAme+8jOWPr+S7peWIqeeUqOaPkuaLlOW8j+eahOaWueW8j+W/q+mAn+aOpeWFpe+8jOaWsOiuvuWkh+ino+aekOaWueW8j+WPr+S7peeUqGBqc2Ag5oiW6ICFYHB5dGhvbmDnmoTmlrnlvI/lv6vpgJ/lrp7njrDvvIzlh4/lsJHlvIDlj5HmiJDmnKwKLSAz44CB5a6e546w6K6+5aSH5bGe5oCn5ZKM5Yqf6IO955qE6Ieq5a6a5LmJ77yM5b+r6YCf5a6e546w6K6+5aSH55qE5Yqf6IO9Ci0gNOOAgXdlYnNvY2tldOaOqOmAgeiuvuWkh+WunuaXtua2iOaBr+WIsOmhtemdogotIDXjgIHorr7lpIflkYrorabns7vnu58KLSA244CB6K6w5b2V5pON5L2c5pel5b+X5ZKM5pWw5o2u5byC5Yqo5pel5b+XCi0gN+OAgeeUqOaIt+adg+mZkOetieWfuuehgOWKn+iDvQotIDjjgIFvcGVuIGFwaeW8gOaUvgoKIyMjIyDkuqflk4Hlip/og73vvJoKfCDlip/og70gICAgIHwg5o+P6L+wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCDpppbpobUgICAgIHwg5aSn5bGP55yL5p2/5bGV56S677yM6K6+5aSH6L+Q6KGM54q25oCB44CB5pWw6YeP44CB5ZGK6K2m562J5Z+65pys5L+h5oGvIHwKfCDnu4Tnu4fnrqHnkIYgfCDnlKjmiLfnrqHnkIbjgIHpg6jpl6jnrqHnkIbjgIHop5LoibLnrqHnkIbjgIHoj5zljZXnrqHnkIYgICAgICAgICAgIHwKfCDpgJrkv6HljY/orq4gfCDmtojmga/ovazljJblmajjgIHpgJrkv6HljY/orq7nrqHnkIYgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IOS6p+WTgeeuoeeQhiB8IOS6p+WTgeeuoeeQhuOAgeS6p+WTgeWIhuexuyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cnwg6K6+5aSH566h55CGIHwg6K6+5aSH5YiG57uE44CB6K6+5aSH566h55CG44CB6K6+5aSH6K+m5oOFICAgICAgICAgICAgICAgICAgICAgfAp8IOWcuuaZr+iBlOWKqCB8IOWcuuaZr+iBlOWKqOeuoeeQhiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cnwg5ZGK6K2m6YCa55+lIHwg5ZGK6K2m5qih5p2/44CB5ZGK6K2m5rig6YGT44CB5raI5oGv566h55CGICAgICAgICAgICAgICAgICAgICAgfAoKCgoKIyMjIyDlhbbku5YKW+a8lOekuuWcsOWdgF0oaHR0cDovL3d3dy5qaXViYW5rZWppLmNuL3dlYl9pb3QpCgrluJDlj7cv5a+G56CB77yaCmAxODgxMjM0NTY3OGAgYElvQHQwMzE1SmIhYAoKCjxpbWcgYWx0PSJEb3dubG9hZHMiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9waG9uZS0xMzQyODY5OTYyOS1ncmVlbi5zdmciPgoKKirlpoLmnInnlpHpl67miJbogIXpnIDopoHmupDnoIHnmoTlj6/ku6Xpmo/ml7bogZTns7vvvJoqKgoKPGltZyBzcmM9Ii4vaW90LWFwL2RvYy9qYl9xcmNvZGUuanBnIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCIvPgoKKOaJq+eggeaIluiAheebtOaOpeaQnOe0omBqaXViYW55dW5faW90YOa3u+WKoOW+ruS/oSkK readmeEtag: '"88ca607c4250c328a50c78db77b1916ce14e9e40"' readmeLastModified: Sun, 01 Dec 2024 14:28:11 GMT repositoryId: 771891137 description: 物联网平台 物联网应用 物联网 智慧平台 created: '2024-03-14T06:23:53Z' updated: '2026-01-13T12:50:37Z' language: Java archived: false stars: 6 watchers: 1 forks: 1 owner: itzlyg logo: https://avatars.githubusercontent.com/u/17636877?v=4 license: GPL-3.0 repoEtag: '"02f733d2bb140ee5b7d262feecb9e894260849e0d80255bf36cb78fe13d50788"' repoLastModified: Tue, 13 Jan 2026 12:50:37 GMT category: Code Generators foundInMaster: true - source: openapi3 tags repository: https://github.com/denismakogon/fn-openapi-v3 v3: true repositoryMetadata: base64Readme: >- T3BlbkFQSSB2MyBzcGVjIGdlbmVyYXRvciB0b29sIGZvciBGbiBhcHBsaWNhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCklkZWEKLS0tLQpUaGUgRm4gYXBwbGljYXRpb24gaXMgbm90aGluZyBidXQgc2V0IG9mIGZ1bmN0aW9uIHdoZXJlIGVhY2ggaGFzIGl0cyBvd24gSFRUUCByb3V0ZSBmb3IgZXhlY3V0aW9uLgoKV2hhdCBpZiB0aGVyZSdzIGEgd2F5IHRvIGJ1aWxkIGNsaWVudCBiaW5kaW5nIGZvciB0aGUgcGFydGljdWxhciBzZXJ2ZXJsZXNzIGFwcGxpY2F0aW9uPwoKVGhpcyBsaWJyYXJ5IGFuZCB0b29sIGFyZSBkZXNpZ25lZCB0byBwcm92aWRlIG5lY2Vzc2FyeSBBUEkgdG8gZ2VuZXJhdGUgT3BlbkFQSSB2My4wLjAgc3BlY2lmaWNhdGlvbiB1c2luZyBGdW5jdGlvbiBzcGVjIGxhbmd1YWdlLgoKCkZ1bmN0aW9uIHNwZWMgbGFuZ3VhZ2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyB0b29sIHJlbGllcyBvbiBpbXByb3ZlZCBTd2FnZ2VyIEFQSSAyLjAgcGx1cyBhZGRpdGlvbmFsIGlubGluZSByZWZlcmVuY2luZyBmZWF0dXJlcyAKdGhhdCBhcmUgbWlzc2luZyBpbiBib3RoIFN3YWdnZXIgMi4wIGFuZCBPcGVuQVBJIDMuMCB0aGF0IGFyZSBhbGxvd2luZyBkZXZlbG9wZXJzIHRvIHN0cnVjdHVyZSB0aGVpciBhcHBsaWNhdGlvbiBpbiBtb3JlIG1vZHVsYXIgd2F5LgoKCkZ1bmN0aW9uIHNwZWMgZXhhbXBsZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmBgYHlhbWwKdmVyc2lvbjogMC4wLjEKZGVzY3JpcHRpb246IEZ1bmN0aW9ucyBzcGVjIHRoYXQgZGVzY3JpYmVzIEZuLXBvd2VyZWQgc2VydmVybGVzcyBhcHBsaWNhdGlvbgpmdW5jdGlvbnM6CiAgY3JlYXRlVXNlcjoKICAgIGhhbmRsZXI6IGhhbmRsZXIuY3JlYXRlCiAgICBldmVudHM6CiAgICAgIC0gaHR0cDoKICAgICAgICAgIG1ldGhvZDogcG9zdAogICAgICAgICAgZm46ICR7ZmlsZShtb2RlbHMvZnVuYy55bWwpOmZpcnN0fQogICAgICAgICAgZG9jdW1lbnRhdGlvbjoKICAgICAgICAgICAgc3VtbWFyeTogQ3JlYXRlIFVzZXIKICAgICAgICAgICAgZGVzY3JpcHRpb246IENyZWF0ZXMgYSB1c2VyIGFuZCB0aGVuIHNlbmRzIGEgZ2VuZXJhdGVkIHBhc3N3b3JkIGVtYWlsCiAgICAgICAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgICAgICAgIHNjaGVtYTogJHtmaWxlKG1vZGVscy9yZXF1ZXN0Lmpzb24pfQogICAgICAgICAgICBwYXJhbWV0ZXJzOgogICAgICAgICAgICAgIC0gbmFtZTogdXNlcm5hbWUKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBUaGUgdXNlcm5hbWUgZm9yIGEgdXNlciB0byBjcmVhdGUKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICAgICAgICBpbjogcGF0aAogICAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgICAgcGF0dGVybjogIl5bLWEtejAtOV9dKyQiCiAgICAgICAgICAgICAgLSBuYW1lOiBtZW1iZXJzaGlwVHlwZQogICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFRoZSB1c2VyJ3MgTWVtYmVyc2hpcCBUeXBlCiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgICAgICAgICAgaW46IHF1ZXJ5CiAgICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICBlbnVtOgogICAgICAgICAgICAgICAgICAgIC0gcHJlbWl1bQogICAgICAgICAgICAgICAgICAgIC0gc3RhbmRhcmQKICAgICAgICAgICAgcmVzcG9uc2VzOgogICAgICAgICAgICAgIDIwMDoKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjcmVhdGUgYSB1c2VyCiAgICAgICAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgICAgICAgIHNjaGVtYTogJHtmaWxlKG1vZGVscy9yZXF1ZXN0Lmpzb24pfQogICAgICAgICAgICAgIDUwMDoKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBlcnJvcgogICAgICAgICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICAgICAgICBzY2hlbWE6ICR7ZmlsZShtb2RlbHMvZXJyb3IuanNvbil9CmBgYApUaGlzIHNhbXBsZSB5b3UgY2FuIGZpbmQgW2hlcmVdKGV4YW1wbGVzL2ZuLnltbCkKCnVzaW5nIHRoZSBmb2xsb3dpbmcgY29kZToKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAoJImZtdCIKCSJnaXRodWIuY29tL2RlbmlzbWFrb2dvbi9mbi1vcGVuYXBpL21vZGVscyIKCSJpby9pb3V0aWwiCgkib3MiCikKCmZ1bmMgbWFpbigpIHsKCgl5YW1sRmlsZSwgZXJyIDo9IGlvdXRpbC5SZWFkRmlsZShvcy5BcmdzWzFdKQoJaWYgZXJyICE9IG5pbCB7CgkJZm10LlByaW50bG4oZXJyLkVycm9yKCkpCgkJb3MuRXhpdCgxKQoJfQoKCXZhciBmbiBtb2RlbHMuRm4KCgllcnIgPSBmbi5Vbm1hcnNoYWwoeWFtbEZpbGUsIG9zLlN0ZG91dCkKCWlmIGVyciAhPSBuaWwgewoJCWZtdC5QcmludGxuKGVyci5FcnJvcigpKQoJCW9zLkV4aXQoMSkKCX0KCgl2YXIgb2FpIG1vZGVscy5PcGVuQVBJU3BlYwoJZXJyID0gb2FpLkZyb21GblNwZWMoImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIsICZmbikKCWVyciA9IG9haS5NYXJzaGFsKG9zLlN0ZG91dCkKCWlmIGVyciAhPSBuaWwgewoJCWZtdC5QcmludGxuKGVyci5FcnJvcigpKQoJCW9zLkV4aXQoMSkKCX0KfQpgYGAKCml0IGlzIHBvc3NpYmxlIHRvIHR1cm4gRnVuY3Rpb24gc3BlYyBpbnRvIHZhbGlkIE9wZW5BUEkgdjMgc3BlY2lmaWNhdGlvbi4KVG8gY29uZmlybSB0aGF0IHNwZWMgaXMgdmFsaWQgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKYGBgYmFzaApkb2NrZXIgcnVuIC0tcm0gLWkgLXYgYHB3ZGA6L2dvIGZucHJvamVjdC9vcGVuYXBpdjMtdmFsaWRhdG9yOjAuMC4xIC9nby9leGFtcGxlcy9vcGVuYXBpLnltbApgYGAK readmeEtag: '"69529cf07d34bc2737095a9d5caf358a480f1cd3"' readmeLastModified: Wed, 17 Jan 2018 18:35:01 GMT repositoryId: 117738868 description: Fn-powered serverless application OpenAPI v3.0.0 generator tool created: '2018-01-16T20:38:36Z' updated: '2019-06-11T20:40:03Z' language: Go archived: false stars: 3 watchers: 2 forks: 0 owner: denismakogon logo: https://avatars.githubusercontent.com/u/3034091?v=4 license: Apache-2.0 repoEtag: '"c56c5e17e43230736e2ae7a5c7b42a85857ef516780b51e4fa432668ac9035b8"' repoLastModified: Tue, 11 Jun 2019 20:40:03 GMT foundInMaster: true category: Parsers id: 61087310dc28f1cc6a4eb90cfa714b60 - source: openapi3 tags repository: https://github.com/confuser/exegesis-koa v3: true repositoryMetadata: base64Readme: >- IyBleGVnZXNpcy1rb2EKClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9hcGkudHJhdmlzLWNpLm9yZy9jb25mdXNlci9leGVnZXNpcy1rb2Euc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvY29uZnVzZXIvZXhlZ2VzaXMta29hKQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi9jb25mdXNlci9leGVnZXNpcy1rb2EvYmFkZ2Uuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL2NvdmVyYWxscy5pby9naXRodWIvY29uZnVzZXIvZXhlZ2VzaXMta29hP2JyYW5jaD1tYXN0ZXIpClshW0tub3duIFZ1bG5lcmFiaWxpdGllc10oaHR0cHM6Ly9zbnlrLmlvL3Rlc3QvZ2l0aHViL2NvbmZ1c2VyL2V4ZWdlc2lzLWtvYS9iYWRnZS5zdmc/dGFyZ2V0RmlsZT1wYWNrYWdlLmpzb24pXShodHRwczovL3NueWsuaW8vdGVzdC9naXRodWIvY29uZnVzZXIvZXhlZ2VzaXMta29hP3RhcmdldEZpbGU9cGFja2FnZS5qc29uKQoKPiAjIyAqZXhlZ2VzaXMqCj4KPiAqbi4qIEFuIGV4cGxhbmF0aW9uIG9yIGNyaXRpY2FsIGludGVycHJldGF0aW9uIG9mIGEgdGV4dCwgZXNwZWNpYWxseSBhbgo+IEFQSSBkZWZpbml0aW9uIGRvY3VtZW50Lgo+Cj4gLS0gTm8gZGljdGlvbmFyeSBldmVyCgpUaGlzIGxpYnJhcnkgaW1wbGVtZW50cyBhIEtvYSBtaWRkbGV3YXJlIGZvcgpbT3BlbkFQSSAzLnhdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4xLm1kI3JlcXVlc3RCb2R5T2JqZWN0KS4KCiMjCmBgYApucG0gaW5zdGFsbCBleGVnZXNpcy1rb2EKYGBgCgojIyBUdXRvcmlhbAoKQ2hlY2sgb3V0IHRoZSB0dXRvcmlhbCBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2V4ZWdlc2lzLWpzL2V4ZWdlc2lzL2Jsb2IvbWFzdGVyL2RvY3MvVHV0b3JpYWwubWQpLgoKIyMgVXNhZ2UKYGBganMKY29uc3QgS29hID0gcmVxdWlyZSgna29hJykKY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKQpjb25zdCBleGVnZXNpc0tvYSA9IHJlcXVpcmUoJ2V4ZWdlc2lzLWtvYScpCgphc3luYyBmdW5jdGlvbiBjcmVhdGVTZXJ2ZXIoKSB7CiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2V4ZWdlc2lzLWpzL2V4ZWdlc2lzL2Jsb2IvbWFzdGVyL2RvY3MvT3B0aW9ucy5tZAogICAgY29uc3Qgb3B0aW9ucyA9IHsKICAgICAgICBjb250cm9sbGVyczogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vY29udHJvbGxlcnMnKQogICAgfQogICAgY29uc3QgZXhlZ2VzaXNNaWRkbGV3YXJlID0gZXhlZ2VzaXNLb2EocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vb3BlbmFwaS55YW1sJyksIG9wdGlvbnMpCgogICAgY29uc3QgYXBwID0gbmV3IEtvYSgpCgogICAgLy8gSWYgeW91IGhhdmUgYW55IGJvZHkgcGFyc2VycywgdGhpcyBzaG91bGQgZ28gYmVmb3JlIHRoZW0uCiAgICBhcHAudXNlKGFzeW5jIChjdHgsIG5leHQpID0+IHsKICAgICAgdHJ5IHsKICAgICAgICBhd2FpdCBuZXh0KCkKICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgY3R4LnN0YXR1cyA9IDUwMAogICAgICAgIGN0eC5ib2R5ID0gYEludGVybmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWAKICAgICAgfQogICAgfSkKICAgIGFwcC51c2UoZXhlZ2VzaXNNaWRkbGV3YXJlKQogICAgYXBwLnVzZShhc3luYyAoY3R4KSA9PiB7CiAgICAgIGlmIChjdHguc3RhdHVzID09PSA0MDQpIHsKICAgICAgICBjdHguc3RhdHVzID0gNDA0CiAgICAgIH0KICAgIH0pCgogICAgYXBwLmxpc3RlbigpCn0KYGBgCgpDYWxsaW5nIGBleGVnZXNpc2tvYShvcGVuQXBpRmlsZSwgb3B0aW9ucylgIHdpbGwgcmV0dXJuIGEgUHJvbWlzZQp3aGljaCByZXNvbHZlcyB0byBhIGtvYSBtaWRkbGV3YXJlLgoKYG9wZW5BcGlGaWxlYCBpcyBlaXRoZXIgYSBwYXRoIHRvIHlvdXIgb3BlbmFwaS55YW1sIG9yIG9wZW5hcGkuanNvbiBmaWxlLApvciBpdCBjYW4gYmUgYSBKU09OIG9iamVjdCB3aXRoIHRoZSBjb250ZW50cyBvZiB5b3VyIE9wZW5BUEkgZG9jdW1lbnQuICBUaGlzCnNob3VsZCBoYXZlIHRoZSBbYHgtZXhlZ2VzaXMtY29udHJvbGxlcmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9leGVnZXNpcy1qcy9leGVnZXNpcy9ibG9iL21hc3Rlci9kb2NzL09BUzMlMjBTcGVjaWZpY2F0aW9uJTIwRXh0ZW5zaW9ucy5tZCkKZXh0ZW5zaW9uIGRlZmluZWQgb24gYW55IHBhdGhzIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gYWNjZXNzLgoKYG9wdGlvbnNgIGNhbiBiZSBbYW55dGhpbmcgeW91IGNhbiBwYXNzIHRvIGV4ZWdlc2lzXShodHRwczovL2dpdGh1Yi5jb20vZXhlZ2VzaXMtanMvZXhlZ2VzaXMvYmxvYi9tYXN0ZXIvZG9jcy9PcHRpb25zLm1kKS4gIEF0IGEKbWluaW11bSwgeW91J2xsIHByb2JhYmx5IHdhbnQgdG8gcHJvdmlkZSBgb3B0aW9ucy5jb250cm9sbGVyc2AsIGEgcGF0aCB0byB3aGVyZQp5b3VyIFtjb250cm9sbGVyIG1vZHVsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9leGVnZXNpcy1qcy9leGVnZXNpcy9ibG9iL21hc3Rlci9kb2NzL0V4ZWdlc2lzJTIwQ29udHJvbGxlcnMubWQpCmNhbiBiZSBmb3VuZC4gIElmIHlvdSBoYXZlIGFueSBzZWN1cml0eSByZXF1aXJlbWVudHMgZGVmaW5lZCwgeW91J2xsIGFsc28Kd2FudCB0byBwYXNzIGluIHNvbWUgW2F1dGhlbnRpY2F0b3JzXShodHRwczovL2dpdGh1Yi5jb20vZXhlZ2VzaXMtanMvZXhlZ2VzaXMvYmxvYi9tYXN0ZXIvZG9jcy9PQVMzJTIwU2VjdXJpdHkubWQpLgpUbyBlbmFibGUgcmVzcG9uc2UgdmFsaWRhdGlvbiwgeW91J2xsIHdhbnQgdG8gcHJvdmlkZSBhIHZhbGlkYXRpb24gY2FsbGJhY2sKZnVuY3Rpb24gdmlhIFtgb25SZXNwb25zZVZhbGlkYXRpb25FcnJvcigpYF0oaHR0cHM6Ly9naXRodWIuY29tL2V4ZWdlc2lzLWpzL2V4ZWdlc2lzL2Jsb2IvbWFzdGVyL2RvY3MvT3B0aW9ucy5tZCNvbnJlc3BvbnNldmFsaWRhdGlvbmVycm9yKS4KRXhlZ2VzaXMncyBmdW5jdGlvbmFsaXR5IGNhbiBhbHNvIGJlIGV4dGVuZGVkIHVzaW5nIFtwbHVnaW5zXShodHRwczovL2dpdGh1Yi5jb20vZXhlZ2VzaXMtanMvZXhlZ2VzaXMvdHJlZS9tYXN0ZXIvZG9jcyksCndoaWNoIHJ1biBvbiBldmVyeSByZXF1ZXN0LiAgUGx1Z2lucyBsZXQgeW91IGFkZCBmdW5jdGlvbmFsaXR5IGxpa2UKW3JvbGUgYmFzZSBhdXRob3JpemF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vZXhlZ2VzaXMtanMvZXhlZ2VzaXMtcGx1Z2luLXJvbGVzKSwKb3IgQ09SUy4K readmeEtag: '"b3b57b5f9c525f047e01a4d61359b7820a7804ae"' readmeLastModified: Sun, 03 Jun 2018 12:00:14 GMT repositoryId: 135899462 description: 'Koa middleware to handle OpenAPI 3.x. ' created: '2018-06-03T11:48:14Z' updated: '2022-09-23T15:25:12Z' language: JavaScript archived: false stars: 3 watchers: 1 forks: 1 owner: confuser logo: https://avatars.githubusercontent.com/u/1658997?v=4 license: MIT repoEtag: '"cb11ea2853c22d46f87b3b718e5c85459f9cc6fcf59adc5073acd16d13e1019f"' repoLastModified: Fri, 23 Sep 2022 15:25:12 GMT foundInMaster: true category: Server Implementations id: 75c502e1a557c910665da48dc9eec0eb - source: openapi3 tags repository: https://github.com/afshinparhizkari/cloud v3: true repositoryMetadata: base64Readme: IyBDbG91ZApEREQgUHJvamVjdCB3aXRoIERldm9wcyB0b29scwo= readmeEtag: '"7aa4a270fdeb7f939a62d5a08b03b4c2907eb9cc"' readmeLastModified: Sat, 30 Sep 2023 12:01:24 GMT repositoryId: 427974337 description: the simple DDD Project with Spring Cloud library created: '2021-11-14T16:02:42Z' updated: '2022-11-03T07:13:50Z' language: Java archived: false stars: 3 watchers: 1 forks: 1 owner: AfshinParhizkari logo: https://avatars.githubusercontent.com/u/32636285?v=4 license: LGPL-2.1 repoEtag: '"77a8fd98b0f57bd154859b0b0b350f6da7f7ea2bb5c6d72b173fb6d1464963e8"' repoLastModified: Thu, 03 Nov 2022 07:13:50 GMT foundInMaster: true category: - Server - Server Implementations id: 5046b14ee2dc167c4183150526d560a7 - source: openapi3 tags repository: https://github.com/ccwukong/snitch v3: true id: 09c3dafe2da696b61a144e189ea8cb5d repositoryMetadata: base64Readme: >- IyBzbml0Y2ggPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcHlwaS12MC4xLjM0LWdyZWVuIiAvPiA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9UZXN0ZWQlMjBvbi1tYWNPUyUyMFZlbnR1cmEtYnJpZ2h0Z3JlZW4iIC8+IDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1Rlc3RlZCUyMG9uLVVidW50dSUyMDIyLjEwLWJyaWdodGdyZWVuIiAvPiAKCiFbbG9nb10oZG9jcy9sb2dvLnBuZykKCiMgVGFibGUgb2YgY29udGVudHMKCjwhLS10cy0tPgogICogW0ludHJvZHVjdGlvbl0oI2ludHJvZHVjdGlvbikKICAqIFtNYWluIGZlYXR1cmVzXSgjbWFpbi1mZWF0dXJlcykKICAgICogW0RlbW9dKCNkZW1vKQogICogW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKICAqIFtVc2UgY2FzZXNdKCN1c2UtY2FzZXMpCiAgKiBbSG93IHRoaXMgd29ya3NdKCNob3ctdGhpcy13b3JrcykKICAqIFtGbGFnc10oI2ZsYWdzKQogICogW0lkZW1wb3RlbmN5XSgjaWRlbXBvdGVuY3kpCiAgKiBbSG93IHRvIGNvbnRyaWJ1dGVdKCNob3ctdG8tY29udHJpYnV0ZSkKPCEtLXRlLS0+CgojIyBJbnRyb2R1Y3Rpb24KCnNuaXRjaCBpcyBhIENMSSB0b29sIHRoYXQgaGVscHMgeW91IGRvIGhlYWx0aCBjaGVjaywgQVBJIGlkZW1wb3RlbmN5IGNoZWNrIGFuZCBtb3JlIGZvciB5b3VyIEFQSXMuCgpUaGlzIGlzIG5vdCBhIHJlcGxhY2VtZW50IGZvciB5b3VyIGV4aXN0aW5nIHRlc3RpbmcgdG9vbHMsIGJ1dCByYXRoZXIgaXQgcHJvdmlkZXMgYSBjb252ZW5pZW50IHdheSB0byBjaGVjayB5b3VyIEFQSXMgc3dpZnRseS4KCiMjIE1haW4gZmVhdHVyZXMKCi0gUnVubmluZyBoZWFsdGggY2hlY2sgY29uY3VycmVudGx5ICh1c2luZyBjb3JvdXRpbmUpCi0gUnVubmluZyBJZGVtcG90ZW5jeSBjaGVjayBieSBtaXhpbmcgbXVsdGl0aHJlYWRpbmcoZm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzKSBhbmQgY29yb3V0aW5lcyBpbiB0aGUgc2FtZSBldmVudCBsb29wLiBUaGlzIHdpbGwgaW1wcm92ZSBJL08gcGVyZm9ybWFuY2UuCi0gTW9yZSB0byBjb21lCgpbQ0hBTkdFTE9HXShDSEFOR0VMT0cubWQpCgojIyMgRGVtbwoKIVtEZW1vXShkb2NzL2RlbW8uZ2lmKQoKIyMgSW5zdGFsbGF0aW9uCgpJbnN0YWxsIHNuaXRjaCB2aWEgcGlwLiBNYWtlIHN1cmUgeW91IGhhdmUgUHl0aG9uIDMgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZS4KCioq4p2XQ0FVVElPTioqIFRoZSBwYWNrYWdlIG5hbWUgaXMgKiphcGktc25pdGNoKiogaW5zdGVhZCBvZiAqKnNuaXRjaCoqLgoKYGBgCnBpcDMgaW5zdGFsbCBhcGktc25pdGNoCmBgYAoKT25jZSB5b3UgaGF2ZSB0aGUgY29uZmlnIEpTT04gZmlsZSByZWFkeSwgeW91IGNhbiBydW4gdGhpcyBpbiB5b3VyIGNvbW1hbmRsaW5lIHByb21wdDoKCmBgYApzbml0Y2ggLXAgeW91cl9jb25maWdfanNvbl9maWxlX3BhdGggWy1vIHlvdXJfb3V0cHV0X2RpcmVjdG9yeV0KYGBgCgojIyMgVXNlIGNhc2VzCgpTZW5hcmlvIDE6IEkgd2FudCB0byBydW4gYWxsIHRhc2tzKEFQSSBoZWFsdGggY2hlY2sgYW5kIEFQSSBpZGVtcG90ZW5jeSBjaGVjaykKCmBgYGNvbmNvbGUKc25pdGNoIC1wIHlvdXJfY29uZmlnX2pzb25fZmlsZV9wYXRoCmBgYAoKU2VuYXJpbyAyOiBJIHdhbnQgdG8gcnVuIHRoZSBBUEkgSWRlbXBvdGVuY3kgY2hlY2sgdGFzayBvbmx5CgpgYGBjb25jb2xlCnNuaXRjaCAtcCB5b3VyX2NvbmZpZ19qc29uX2ZpbGVfcGF0aCAtdCBpZApgYGAKClNlbmFyaW8gMzogSSBkb24ndCBoYXZlIGEgY29uZmlndXJhdGlvbiBqc29uIGZpbGUsIGFuZCBJIHdhbnQgdG8gY3JlYXRlIG9uZSBuYW1lZCAqKmNvbmZpZy5qc29uKiogdXNpbmcgdGhlIGRlZmF1bHQgdGVtcGxhdGUgYW5kIHN0b3JlZCBpdCBpbiBteSAqKmN1cnJlbnQgZGlyZWN0b3J5KioKCmBgYGNvbmNvbGUKc25pdGNoIC1pIC4vY29uZmlnLmpzb24KYGBgCgpTZW5hcmlvIDQ6IEkgd2FudCB0byBydW4gYWxsIHRhc2tzKEFQSSBoZWFsdGggY2hlY2sgYW5kIEFQSSBpZGVtcG90ZW5jeSBjaGVjaykgd2l0aCBhbGwgQVBJIHJlc3BvbnNlcyBwcmludGVkLgoKYGBgY29uY29sZQpzbml0Y2ggLXAgeW91cl9jb25maWdfanNvbl9maWxlX3BhdGggLXYKYGBgCgojIyBIb3cgdGhpcyB3b3JrcwoKc25pdGNoIGFjY2VwdHMgMiB0eXBlcyBvZiBBUEkgY29udHJhY3RzOiBQb3N0bWFuIGNvbGxlY3Rpb24gZmlsZSB2ZXJzaW9uICoqPj0gMi4wKiogb3IgT3BlbkFQSShTd2FnZ2VyKSBmaWxlIHZlcnNpb24gKio+PSAzLjAuMCoqLgoKRmlyc3QsIHlvdSBuZWVkIHRvIGhhdmUgYSBnbG9iYWwgLmpzb24gZmlsZSB3aGljaCBwcm92aWRlcyBhbGwgZXNzZW50aWFsIGNvbmZpZ3VyYXRpb25zIGluIG9yZGVyIHRvIHJ1biB0aGUgdGVzdC4gCgpZb3UgY2FuIGNyZWF0ZSBpdCBieSBydW5uaW5nCgpgYGBjb25zb2xlCnNuaXRjaCAtaSBwYXRoX3RvX3N0b3JlX3RoZV9jb25maWdfanNvbl9maWxlL3lvdXJfanNvbl9maWxlX25hbWUuanNvbgpgYGAKCk9yLCB5b3UgY2FuIHVzZSB0aGlzIHRlbXBsYXRlOgpgYGBqc29uCnsKICAicG9zdG1hbkNvbGxlY3Rpb24iOiB7CiAgICAidmVyc2lvbiI6ICIyLjEiLCAKICAgICJmaWxlUGF0aCI6ICJhYnNvbHV0ZV9wYXRoX3RvX3RoZV9wb3N0bWFuX2NvbGxlY3Rpb25fanNvbl9maWxlIiwKICAgICJtZXRhZGF0YSI6eyAvLyB5b3UgY2FuIHB1dCBhbGwgeW91ciBwbGFjZWhvbGRlciBzdHJpbmdzIGhlcmUsIGZvciBpbnN0YW5jZSwgdGhlIHBsYWNlaG9sZGVyIHN0cmluZyBmb3IgdGhlIGhvc3Qgb2YgdGhlIFJFU1QgZW5kcG9pbnRzCiAgICAgICJ7e3Jlc3RVcmx9fSI6ICJodHRwczovL3lvdXJfYXBpX2RvbWFpbiIsCiAgICAgICJ7e2FjY2Vzc1Rva2VufX0iOiAidGhlIGFjY2VzcyB0b2tlbiBzdHJpbmciLAogICAgICAie3thcGlLZXl9fSI6ICJhcGkga2V5IHN0cmluZyIsCiAgICAgIC4uLgogICAgfQogIH0sCiAgIm9wZW5BcGkiOiB7CiAgICAidmVyc2lvbiI6ICIzLjAuMCIsIAogICAgImZpbGVQYXRoIjogImFic29sdXRlX3BhdGhfdG9fdGhlX29wZW5fYXBpX3lhbWxfZmlsZSIsCiAgICAibWV0YWRhdGEiOnsKICAgICAgInt7cmVzdFVybH19IjogImh0dHBzOi8veW91cl9hcGlfZG9tYWluIiwKICAgICAgInt7YWNjZXNzVG9rZW59fSI6ICJ0aGUgYWNjZXNzIHRva2VuIHN0cmluZyIsCiAgICAgICJ7e2FwaUtleX19IjoiYXBpIGtleSBzdHJpbmciLAogICAgICAuLi4KICAgIH0KICB9Cn0KYGBgCgojIyBGbGFncwoKQXZhaWxhYmxlIGZsYWdzIGZvciBzbml0Y2ggQ0xJIGNvbW1hbmRzLgoKfCBmbGFnICAgICAgfCBEZXNjcmlwdGlvbiB8CnwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8CnwgLWkgICAgICB8ICoqKk9QVElPTkFMKioqIENyZWF0ZSBhIG5ldyBjb25maWcgSlNPTiBmaWxlIHdpdGggZGVmYXVsdCB0ZW1wbGF0ZSB8CnwgLS1pbml0ICAgfCBzYW1lIGFzIC1pICAgICAgICB8CnwgLW8gICAgICB8ICoqKk9QVElPTkFMKioqIFlvdXIgb3V0cHV0IGRpcmVjdG9yeSBmb3Igc3RvcmluZyB0aGUgdGVzdCByZXN1bHRzLiBJdCBoYXMgdG8gYmUgYSBkaXJlY3RvcnkgfAp8IC0tb3V0cHV0ICAgfCBzYW1lIGFzIC1vICAgICAgICB8CnwgLXAgICAgICB8IFlvdXIgY29uZmlnIEpTT04gZmlsZSBwYXRoIHwKfCAtLXBhdGggICB8IHNhbWUgYXMgLXAgICAgICAgIHwKfCAtdCAgICAgIHwgKioqT1BUSU9OQUwqKiogVGhlcmUgYXJlIDIgdGFza3MgYXZhaWxhYmxlOjxiciAvPiAtIGhjIChBUEkgaGVhbHRoIGNoZWNrKTxiciAvPiAtIGlkIChBUEkgaWRlbXBvdGVuY3kgY2hlY2spIHwKfCAtLXRhc2sgICB8IHNhbWUgYXMgLXQgICAgICAgIHwKfCAtdiAgICAgIHwgKioqT1BUSU9OQUwqKiogUHJpbnQgQVBJIHJlc3BvbnNlcyBpZiAtdiBvciAtLXZlcmJvc2UgZmxhZyBpcyBzcGVjaWZpZWQgfAp8IC0tdmVyYm9zZSAgIHwgc2FtZSBhcyAtdiAgICAgICAgfAp8IC0tdmVyc2lvbiAgIHwgRGlzcGxheSB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHNuaXRjaCAgIHwKCiMjIElkZW1wb3RlbmN5CgpFeHBsYW5hdGlvbiBmcm9tIFtodHRwczovL3d3dy5yZXN0YXBpdHV0b3JpYWwuY29tL10oaHR0cHM6Ly93d3cucmVzdGFwaXR1dG9yaWFsLmNvbS9sZXNzb25zL2lkZW1wb3RlbmN5Lmh0bWwjOn46dGV4dD1Gcm9tJTIwYSUyMFJFU1RmdWwlMjBzZXJ2aWNlJTIwc3RhbmRwb2ludCxhcyUyMG1ha2luZyUyMGElMjBzaW5nbGUlMjByZXF1ZXN0LikKCj4gRnJvbSBhIFJFU1RmdWwgc2VydmljZSBzdGFuZHBvaW50LCBmb3IgYW4gb3BlcmF0aW9uIChvciBzZXJ2aWNlIGNhbGwpIHRvIGJlIGlkZW1wb3RlbnQsIGNsaWVudHMgY2FuIG1ha2UgdGhhdCBzYW1lIGNhbGwgcmVwZWF0ZWRseSB3aGlsZSBwcm9kdWNpbmcgdGhlIHNhbWUgcmVzdWx0LiBJbiBvdGhlciB3b3JkcywgbWFraW5nIG11bHRpcGxlIGlkZW50aWNhbCByZXF1ZXN0cyBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIG1ha2luZyBhIHNpbmdsZSByZXF1ZXN0LiBOb3RlIHRoYXQgd2hpbGUgaWRlbXBvdGVudCBvcGVyYXRpb25zIHByb2R1Y2UgdGhlIHNhbWUgcmVzdWx0IG9uIHRoZSBzZXJ2ZXIgKG5vIHNpZGUgZWZmZWN0cyksIHRoZSByZXNwb25zZSBpdHNlbGYgbWF5IG5vdCBiZSB0aGUgc2FtZSAoZS5nLiBhIHJlc291cmNlJ3Mgc3RhdGUgbWF5IGNoYW5nZSBiZXR3ZWVuIHJlcXVlc3RzKS4KCj4gVGhlIFBVVCBhbmQgREVMRVRFIG1ldGhvZHMgYXJlIGRlZmluZWQgdG8gYmUgaWRlbXBvdGVudC4gSG93ZXZlciwgdGhlcmUgaXMgYSBjYXZlYXQgb24gREVMRVRFLiBUaGUgcHJvYmxlbSB3aXRoIERFTEVURSwgd2hpY2ggaWYgc3VjY2Vzc2Z1bCB3b3VsZCBub3JtYWxseSByZXR1cm4gYSAyMDAgKE9LKSBvciAyMDQgKE5vIENvbnRlbnQpLCB3aWxsIG9mdGVuIHJldHVybiBhIDQwNCAoTm90IEZvdW5kKSBvbiBzdWJzZXF1ZW50IGNhbGxzLCB1bmxlc3MgdGhlIHNlcnZpY2UgaXMgY29uZmlndXJlZCB0byAibWFyayIgcmVzb3VyY2VzIGZvciBkZWxldGlvbiB3aXRob3V0IGFjdHVhbGx5IGRlbGV0aW5nIHRoZW0uIEhvd2V2ZXIsIHdoZW4gdGhlIHNlcnZpY2UgYWN0dWFsbHkgZGVsZXRlcyB0aGUgcmVzb3VyY2UsIHRoZSBuZXh0IGNhbGwgd2lsbCBub3QgZmluZCB0aGUgcmVzb3VyY2UgdG8gZGVsZXRlIGl0IGFuZCByZXR1cm4gYSA0MDQuIEhvd2V2ZXIsIHRoZSBzdGF0ZSBvbiB0aGUgc2VydmVyIGlzIHRoZSBzYW1lIGFmdGVyIGVhY2ggREVMRVRFIGNhbGwsIGJ1dCB0aGUgcmVzcG9uc2UgaXMgZGlmZmVyZW50LgoKPiBHRVQsIEhFQUQsIE9QVElPTlMgYW5kIFRSQUNFIG1ldGhvZHMgYXJlIGRlZmluZWQgYXMgc2FmZSwgbWVhbmluZyB0aGV5IGFyZSBvbmx5IGludGVuZGVkIGZvciByZXRyaWV2aW5nIGRhdGEuIFRoaXMgbWFrZXMgdGhlbSBpZGVtcG90ZW50IGFzIHdlbGwgc2luY2UgbXVsdGlwbGUsIGlkZW50aWNhbCByZXF1ZXN0cyB3aWxsIGJlaGF2ZSB0aGUgc2FtZS4KClBPU1QgbWV0aG9kIHVzdWFsbHkgaXMgbm90IGlkZW1wb3RlbnQsIGhvd2V2ZXIsIGZvciBhcHBsaWNhdGlvbnMgc3VjaCBhcyBvbmxpbmUgYmFua2luZywgZGlnaXRhbCBwYXltZW50IGV0Yy4gaXQgaXMgYWxzbyBpbXBvcnRhbnQgdG8ga2VlcCBQT1NUIG1ldGhvZCBpZGVtcG90ZW50IHRvIGF2b2lkIGR1cGxpY2F0ZWQgcGF5bWVudHMgYW5kIHRyYW5zYWN0aW9ucy4gSXQncyBzdWJqZWN0ZWQgdG8gYXBwbGljYXRpb24gb3duZXJzIHRvIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCBpZGVtcG90ZW5jeSBpcyBub24tdHJpdmFsIHRvIGNlcnRhaW4gUE9TVCBlbmRwb2ludHMgb2YgdGhlaXIgc2VydmljZXMsIGFuZCBzbml0Y2ggb25seSBzaW1wbHkgY2hlY2tzIGlmIHNhbWUgQVBJIHdpdGggc2FtZSBwYXJhbWV0ZXJlcyByZXR1cm5zIHNhbWUgcmVzcG9uc2Ugb3Igbm90LgoKIyMgSG93IHRvIGNvbnRyaWJ1dGUKCioqU3RlcCAxKio6IENsb25lIHRoaXMgcmVwbwoKKipTdGVwIDIqKjogQ3JlYXRlIGEgUHl0aG9uIDMgdmlydHVhbCBlbnZpcm9ubWVudAoKUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdW5kZXIgKipyb290KiogZGlyZWN0b3J5KE5PVCBzbml0Y2gvKQoKYGBgY29uc29sZQpweXRob24zIC1tIHZlbnYgdmVudgoKc291cmNlIC4vdmVudi9iaW4vYWN0aXZhdGUKYGBgCgoqKlN0ZXAgMyoqOiBDcmVhdGUgYSBuZXcgYnJhbmNoLCBhZGQgeW91ciBjb2RlIGFuZCB0ZXN0IGNhc2VzLCBtYWtlIHN1cmUgbm90aGluZyBicmVha3MKClJ1biB1bml0IHRlc3RpbmcgdW5kZXIgKipyb290KiogZGlyZWN0b3J5KE5PVCBzbml0Y2gvKQpgYGBjb25zb2xlCnRveCAtZSBweTMxMCAtLSAuL3Rlc3RzCmBgYAoKKipTdGVwIDQqKjogVGVzdCB0aGUgcHJvZ3JhbSBtYW51YWxseQoKUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB1bmRlciAqKnJvb3QqKiBkaXJlY3RvcnkoTk9UIHNuaXRjaC8pIHRvIGF2b2lkIHRoZSByZWxhdGl2ZSBpbXBvcnQgcGF0aCBpc3N1ZS4KCmBgYGNvbnNvbGUgCnB5dGhvbjMgLW0gc25pdGNoLm1haW4gLXAgeW91cl9jb25maWdfanNvbl9maWxlX3BhdGggWy1vIHlvdXJfb3V0cHV0X2RpcmVjdG9yeV0KCmBgYAoKKipTdGVwIDUqKjogUHVzaCB5b3VyIGJyYW5jaCBhbmQgY3JlYXRlIGEgUFIgZm9yIHJldmlldwoK readmeEtag: '"0b7a8d76ac2aff61285f215e915e721fffc9a84f"' readmeLastModified: Thu, 12 Jan 2023 03:04:54 GMT repositoryId: 577734803 description: A CLI tool that does health and idempotency checks for your REST APIs created: '2022-12-13T12:06:29Z' updated: '2025-12-27T13:16:40Z' language: Python archived: false stars: 3 watchers: 1 forks: 0 owner: ccwukong logo: https://avatars.githubusercontent.com/u/26168452?v=4 license: MIT repoEtag: '"4e9a5acdee48e9ac1748b7ce30eba611b086b812d281c1fe0b50256351313de9"' repoLastModified: Sat, 27 Dec 2025 13:16:40 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/easymetahub/emh-marklogic-glossary v3: true repositoryMetadata: base64Readme: >- IyBFYXN5TWV0YUh1YiBHbG9zc2FyeSBNYW5hZ2VyIGZvciBNYXJrTG9naWMKCiMjIEludHJvZHVjdGlvbgoKVGhpcyBhcHBsaWNhdGlvbiBpcyBhIFNLT1MgZ2xvc3NhcnkgbWFuYWdlciBhbmQgZmFjZXRlZCBzZWFyY2ggYXBwbGljYXRpb24gdGhhdCBjYW4gCm1hbmFnZSBtdWx0aXBsZSBnbG9zc2FyaWVzLiAgSXQgaXMgaW50ZW5kZWQgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCBuZWVkIHRvIG1hbmFnZQpvbmUgb3IgbW9yZSBnbG9zc2FyaWVzLgoKSXQgd2FzIGNyZWF0ZWQgYXMgYW4gZWFzaWx5IGN1c3RvbWl6YWJsZSBzZWFyY2ggYXBwbGljYXRpb24uICBJdCBhYnN0cmFjdHMgb3V0IHRoZQpjb21tb24gY29kZSBmb3IgZmFjZXRlZCBzZWFyY2ggYW5kIGdpdmVzIGFuIGVhc3kgZGV2ZWxvcG1lbnQgaW50ZXJmYWNlIHRvIGN1c3RvbWl6ZQpmb3IgdXNlcyBvdGhlciB0aGFuIGEgZ2xvc3NhcnkgbWFuYWdlci4KCiMjIyMgQWJvdXQgdGhlIGF1dGhvcgoKW0xvcmVuIENhaGxhbmRlcl0oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2xvcmVuY2FobGFuZGVyLykgaXMgdGhlIGNyZWF0b3Igb2YKdGhpcyB0b29sIGFuZCB0aGUgW3Npc3RlciBnbG9zc2FyeSBhcHBsaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL2Vhc3ltZXRhaHViL2VtaC1leGlzdC1nbG9zc2FyeSkKZm9yIFtlWGlzdC1kYl0oaHR0cDovL2V4aXN0LWRiLm9yZykuICAKCkhlIGhhcyBhbHNvIHRha2VuIG92ZXIgdGhlIG1haW50ZW5hbmNlCm9mIFt4cURvY10oaHR0cDovL3hxZG9jLm9yZykgdGhhdCBwcm92aWRlcyBhIHNpbXBsZSB2ZW5kb3IgbmV1dHJhbCBzb2x1dGlvbiAKZm9yIGRvY3VtZW50aW5nIFhRdWVyeSBsaWJyYXJ5IGFuZCBtYWluIG1vZHVsZXMsIGFzIHdlbGwgYXMgdG9vbHMgdG8gZ2VuZXJhdGUgCmEgdXNlciBmcmllbmRseSBwcmVzZW50YXRpb24gb2YgdGhpcyBkb2N1bWVudGF0aW9uIGFuZCBjcm9zcyByZWZlcmVuY2UgaW5mb3JtYXRpb24uCgojIyMjIEV4dHJhcwoKVGhpcyBhcHBsaWNhdGlvbiBhbHNvIGhhcyBhbiAKCiogeHFEb2Mgdmlld2VyIHRvIHZpZXcgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGNvZGViYXNlIGZvciB0aGlzIGFwcGxpY2F0aW9uCiogUkVTVGZ1bCBPcGVuQVBJIHZpZXdlciBmb3IgdGhlIFJFU1Qgc2VydmljZXMgZGVmaW5lZCB1c2luZyB0aGUgWFFSUyAKaW1wbGVtZW50YXRpb24gb2YgW1Jlc3RYUV0oaHR0cDovL2V4cXVlcnkuZ2l0aHViLmlvL2V4cXVlcnkvZXhxdWVyeS1yZXN0eHEtc3BlY2lmaWNhdGlvbi9yZXN0eHEtMS4wLXNwZWNpZmljYXRpb24uaHRtbCkuCgojIyMjIENvbnN1bHRpbmcgCltFYXN5TWV0YUh1Yl0oaHR0cDovL2Vhc3ltZXRhaHViLmNvbSkgaXMgYXZhaWxhYmxlIGZvciBjb25zdWx0aW5nIGluIGRldmVsb3BpbmcgeW91cgpvd24gY3VzdG9taXphdGlvbiBvZiB0aGlzIHRvb2wuCgojIyBCYXNpYyBpbnN0YWxsYXRpb24gYW5kIGdldHRpbmcgc3RhcnRlZCBpcyBoZXJlOgoKSW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBhcHBsaWNhdGlvbiBydW46CgpgYGBncmFkbGUgbWxEZXBsb3lgYGAKClRoZSBhcHBsaWNhdGlvbiBpcyBkZXBsb3llZCB0byBwb3J0ICo4MDA2KiBhcyB0aGUgYXBwbGljYXRpb24gKmVtaC1nbG9zc2FyeS14cXJzKgoKT3BlbiAKW2h0dHA6Ly9sb2NhbGhvc3Q6ODAwNl0oaHR0cDovL2xvY2FsaG9zdDo4MDA2KSBhbmQgeW91IGdldCB0aGUgZm9sbG93aW5nLgoKIVtpbWFnZXMvZW1oLWdsb3NzYXJ5LTAxLnBuZ10oaW1hZ2VzL2VtaC1nbG9zc2FyeS0wMS5wbmcpCgpTZWFyY2hpbmcgcmVxdWlyZXMgYSB1c2VyIHdpdGggdGhlIHJvbGUgKmVtaC1nbG9zc2FyeS1yZWFkZXIqLiAKVG8gbG9hZCBhIGdsb3NzYXJ5LCBsb2dpbiBhcyAqZW1oLWdsb3NzYXJ5LXdyaXRlciogd2l0aCB0aGUgCnBhc3N3b3JkICplbWgtZ2xvc3Nhcnktd3JpdGVyKi4gIENsaWNrIG9uIHRoZSAqbG9jayogdG8gb3Blbgp0aGUgbG9naW4gZGlhbG9nLgoKIVtpbWFnZXMvZW1oLWdsb3NzYXJ5LTAyLnBuZ10oaW1hZ2VzL2VtaC1nbG9zc2FyeS0wMi5wbmcpCgpUaGUgdG9vbGJhciBjaGFuZ2VzIHRvIHNob3cgdGhlIGljb25zIGZvciB0aGUgYWRtaW5pc3RyYXRpdmUgc2NyZWVuIGFuZCB0byBsb2dvdXQuCgohW2ltYWdlcy9lbWgtZ2xvc3NhcnktMDMucG5nXShpbWFnZXMvZW1oLWdsb3NzYXJ5LTAzLnBuZykKCkNsaWNrIG9uIHRoZSBnZWFyIGljb24gZm9yIHRoZSBhZG1pbmlzdHJhdGl2ZSBzY3JlZW4gYW5kIHRoZSBwYWdlIGNoYW5nZXMgdG8gdGhlIGFkbWluIHNjcmVlbi4KCiFbaW1hZ2VzL2VtaC1nbG9zc2FyeS1hZG1pbi0wMS5wbmddKGltYWdlcy9lbWgtZ2xvc3NhcnktYWRtaW4tMDEucG5nKQoKQ2xpY2sgb24gdGhlICpVcGxvYWQgRmlsZXMuLi4qIGJ1dHRvbi4KU2VsZWN0IHRoZSAqSVZPQVQucmRmKiAgaW4gdGhlICpzYW1wbGUtZGF0YSogZm9sZGVyLgoKIVtpbWFnZXMvZW1oLWdsb3NzYXJ5LTA1LnBuZ10oaW1hZ2VzL2VtaC1nbG9zc2FyeS0wNS5wbmcpCgpUaGUgbG9hZGVkIGdsb3NzYXJ5IGlzIGxpc3RlZCBpbiB0aGUgYWRtaW4gcGFnZSBhZnRlciB0aGlzLgoKIVtpbWFnZXMvZW1oLWdsb3NzYXJ5LTA1YS5wbmddKGltYWdlcy9lbWgtZ2xvc3NhcnktMDVhLnBuZykKCgpDbGljayB0aGUgbGVmdCBwb2ludGluZyBjaGV2cm9uIGljb24gdG8gcmV0dXJuIHRvIHRoZSBzZWFyY2ggcGFnZS4KCiFbaW1hZ2VzL2VtaC1nbG9zc2FyeS0wNi5wbmddKGltYWdlcy9lbWgtZ2xvc3NhcnktMDYucG5nKQoKVHlwZSAqZ2FsYXh5KiBpbiB0aGUgc2VhcmNoIGJhciBhbmQgeW91IGdldCB0aGUgZm9sbG93aW5nLgoKIVtpbWFnZXMvZW1oLWdsb3NzYXJ5LTA3LnBuZ10oaW1hZ2VzL2VtaC1nbG9zc2FyeS0wNy5wbmcpCgpZb3UgY2FuIHRoZW4gc2VsZWN0IGEgZmFjZXQgdG8gbmFycm93IHRoZSBzZWFyY2ggcmVzdWx0cy4gIFlvdSBjYW4gYWxzbyBleHBhbmQgYSByZXN1bHQgaXRlbSBieSBzZWxlY3RpbmcgKlNob3cgRGV0YWlscyoKCiFbaW1hZ2VzL2VtaC1nbG9zc2FyeS0wOC5wbmddKGltYWdlcy9lbWgtZ2xvc3NhcnktMDgucG5nKQoKSWYgeW91IHNlbGVjdCBvbmUgb2YgdGhlIGJ1dHRvbnMgZm9yICpSZWxhdGVkKiwgKkJyb2FkZXIqLCBvciAqTmFycm93ZXIqLCB0aGVuIHlvdSB3aWxsIGJlIGh5cGVybGlua2VkIHRvIHRoYXQgKkNvbmNlcHQqCgohW2ltYWdlcy9lbWgtZ2xvc3NhcnktMDkucG5nXShpbWFnZXMvZW1oLWdsb3NzYXJ5LTA5LnBuZykKCiMjIEN1c3RvbWl6aW5nCgpUaGUgZm9sbG93aW5nIHRocmVlIGZpbGVzIGFyZSB0aGUgb25lcyB0byBjdXN0b21pemUgdG8gY2hhbmdlIHRoZSBhcHBsaWNhdGlvbiBmcm9tIGEgCmdsb3NzYXJ5IGFwcGxpY2F0aW9uIHRvIG9uZSBvZiB5b3VyIG93biBjb250ZW50LgoKKiBzcmMvbWFpbi9tbC1tb2R1bGVzL3Jvb3QvbW9kdWxlcy9jdXN0b20vY3VzdG9tLnhxbQoqIHNyYy9tYWluL21sLWNvbmZpZy9kYXRhYmFzZXMvY29udGVudC1kYXRhYmFzZS5qc29uCiogc3JjL21haW4vcG9seW1lci9yb290L3NyYy9lbWgtYWNjZWxlcmF0b3ItYXBwL2VtaC1hY2NlbGVyYXRvci1hcHAuanMKKiBzcmMvbWFpbi9wb2x5bWVyL3Jvb3Qvc3JjL2VtaC1hY2NlbGVyYXRvci1hcHAvcmVzdWx0LWl0ZW0uanMKCiMjIyBjdXN0b20ueHFtCgpUaGlzIGZpbGUgaGFzIHRoZSBhYnN0cmFjdGVkIG91dCBjdXN0b21pemF0aW9uIGxheWVyIGZvciBoYW5kbGluZyAqc2VhcmNoKiBhbmQgKmNvbnRlbnQgdXBsb2FkKgoKIyMjIyBTZWFyY2gKClRoZSBzZWFyY2ggY3V0b21pemF0aW9uIGlzIGhhbmRsZWQgaW4gdHdvIGRpZmZlcmVudCBmdW5jdGlvbnMgaW4gdGhpcyAKWFF1ZXJ5IExpYnJhcnkgTW9kdWxlLgoKYGBgCig6fgogOiBSZXR1cm5zIHRoZSBzZWFyY2ggb3B0aW9uIGZvciB0aGUgcXVlcnkuCiA6CiA6IEByZXR1cm4gVGhlIHNlYXJjaCBvcHRpb25zIGZvciB0aGUgc2VhcmNoOnNlYXJjaCgpIGNhbGwgaW4gdGhlIHNlYXJjaCBtb2R1bGUuCiA6KQpkZWNsYXJlIGZ1bmN0aW9uIGN1c3RvbTpzZWFyY2gtb3B0aW9ucygpCmBgYApUaGF0IHJldHVybnMgdGhlIFhNTCBzZWFyY2ggb3B0aW9ucy4gIFRoZXNlIG9wdGlvbnMgZGVmaW5lIHRoZSBjb25zdHJhaW50cyAKZm9yIHRoZSBzZWFyY2ggYXMgd2VsbCBhcyB0aGUgZmFjZXRzIGZvciB0aGUgc2VhcmNoLgoKYGBgCig6fgogOiBHZW5lcmF0ZXMgdGhlIEpTT04gb2JqZWN0IGZvciBhIHJlc3VsdCBpdGVtLgogOgogOiBAcGFyYW0gJHJlc3VsdCBBICdzZWFyY2g6cmVzdWx0JyBvYmplY3QgZnJvbSB0aGUgc2VhcmNoIHJlc3VsdHMKIDogQHBhcmFtICRzaG93LXNuaXBwZXRzIEEgZmxhZyBmb3Igd2hldGhlciB0byBzaG93IHRoZSBzbmlwcGV0cy4KIDogQHJldHVybiBUaGUgSlNPTiBvYmplY3QgdGhhdCByZXByZXNlbnRzIGEgcmVzdWx0IGl0ZW0gaW4gdGhlIGNsaWVudCBwYWdlCiA6KQpkZWNsYXJlIGZ1bmN0aW9uIGN1c3RvbTpyZXN1bHQtb2JqZWN0KCRyZXN1bHQgYXMgbm9kZSgpLCAkc2hvdy1zbmlwcGV0cyBhcyB4czpib29sZWFuKQpgYGAKClRoaXMgaXMgY2FsbGVkIGZvciBlYWNoIHJlc3VsdCB0aGF0IGlzIHJldHVybmVkIGZyb20gdGhlIHNlYXJjaC4KCgoKIyMjIyBVcGxvYWQKClRoZSB1cGxvYWQgY3VzdG9taXphdGlvbiBpcyB1c2VkIHRvIHRha2UgdGhlIHVwbG9hZGVkIGZpbGUgYW5kIHBlcmZvcm0gdGhlIApwcm9wZXIgcHJvY2Vzc2luZyBvZiB0aGUgZmlsZSBiZWZvcmUgaXQgaXMgc3RvcmVkIGluIHRoZSBjb250ZW50IGRhdGFiYXNlLgoKYGBgCig6fgogOiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgZmlsZSB0aGF0IHdhcyB1cGxvYWRlZCB0aHJvdWdoIHRoZSB1cGxvYWQgZGlhbG9nLgogOgogOiAgQHBhcmFtICRmaWxlbmFtZSBUaGUgbmFtZSBvZiB0aGUgZmlsZSB0aGF0IGhhcyBiZW4gdXBsb2FkZWQKIDogIEBwYXJhbSAkZmlsZSAgICAgVGhlIGZpbGUgdGhhdCBoYXMgYmVlbiB1cGxvYWRlZC4KIDogIEByZXR1cm4gQW4gYXJyYXkgb2YgSlNPTiBvYmplY3RzIGFzIHsgInR5cGUiOiBlcnJvci10eXBlLCAibWVzc2FnZSI6IGVycm9yLW1lc3NhZ2UgfQogOikKZGVjbGFyZSBmdW5jdGlvbiBjdXN0b206cHJvY2Vzcy11cGxvYWQoJGZpbGVuYW1lIGFzIHhzOnN0cmluZywgJGZpbGUpCmFzIG9iamVjdC1ub2RlKCkqCmBgYAoKIyMjIGNvbnRlbnQtZGF0YWJhc2UuanNvbgoKIyMjIHJlc3VsdC1pdGVtLmpzCgojIyMgZW1oLWFjY2VsZXJhdG9yLWFwcC5qcwoKIyMgT3RoZXJzCgoqIFJFQURNRS5tZAoqIGJ1aWxkLmdyYWRsZQoqIGdyYWRsZS5wcm9wZXJ0aWVzCiogc3JjL21haW4vbWwtY29uZmlnL2RhdGFiYXNlcy9jb250ZW50LWRhdGFiYXNlLmpzb24KKiBzcmMvbWFpbi9tbC1jb25maWcvcmVzdC1hcGkuanNvbgoqIHNyYy9tYWluL21sLWNvbmZpZy9zZWN1cml0eS9yb2xlcy8xLWVtaC1nbG9zc2FyeS1ub2JvZHktcm9sZS5qc29uCiogc3JjL21haW4vbWwtY29uZmlnL3NlY3VyaXR5L3JvbGVzLzItZW1oLWdsb3NzYXJ5LXJlYWRlci1yb2xlLmpzb24KKiBzcmMvbWFpbi9tbC1jb25maWcvc2VjdXJpdHkvcm9sZXMvMy1lbWgtZ2xvc3Nhcnktd3JpdGVyLXJvbGUuanNvbgoqIHNyYy9tYWluL21sLWNvbmZpZy9zZWN1cml0eS9yb2xlcy80LWVtaC1nbG9zc2FyeS1pbnRlcm5hbC1yb2xlLmpzb24KKiBzcmMvbWFpbi9tbC1jb25maWcvc2VjdXJpdHkvcm9sZXMvNS1lbWgtZ2xvc3NhcnktYWRtaW4tcm9sZS5qc29uCiogc3JjL21haW4vbWwtY29uZmlnL3NlY3VyaXR5L3VzZXJzL2VtaC1nbG9zc2FyeS1hZG1pbi11c2VyLmpzb24KKiBzcmMvbWFpbi9tbC1jb25maWcvc2VjdXJpdHkvdXNlcnMvZW1oLWdsb3NzYXJ5LXJlYWRlci11c2VyLmpzb24KKiBzcmMvbWFpbi9tbC1jb25maWcvc2VjdXJpdHkvdXNlcnMvZW1oLWdsb3NzYXJ5LXdyaXRlci11c2VyLmpzb24KKiBzcmMvbWFpbi9tbC1jb25maWcvc2VydmVycy94cXJzLXNlcnZlci5qc29uCiogc3JjL21haW4vbWwtbW9kdWxlcy9vcHRpb25zL2VtaC1nbG9zc2FyeS1vcHRpb25zLnhtbAoqIHNyYy9tYWluL21sLW1vZHVsZXMvcmVzdC1wcm9wZXJ0aWVzLmpzb24KKiBzcmMvbWFpbi9tbC1tb2R1bGVzL3Jvb3QvZXhhbXBsZS1ndWVzdGJvb2sueHF5Ciogc3JjL21haW4vbWwtbW9kdWxlcy9yb290L2V4YW1wbGUueHF5Ciogc3JjL21haW4vbWwtbW9kdWxlcy9yb290L2Zhdmljb24uaWNvCiogc3JjL21haW4vbWwtbW9kdWxlcy9yb290L2d1ZXN0Ym9vay5jc3MKKiBzcmMvbWFpbi9tbC1tb2R1bGVzL3Jvb3QvaW1hZ2VzL2FwcC1pY29uLTE0NC5wbmcKKiBzcmMvbWFpbi9tbC1tb2R1bGVzL3Jvb3QvaW1hZ2VzL2FwcC1pY29uLTMyLnBuZwoqIHNyYy9tYWluL21sLW1vZHVsZXMvcm9vdC9pbWFnZXMvY2hyb21lLXNwbGFzaHNjcmVlbi1pY29uLTM4NHgzODQucG5nCiogc3JjL21haW4vbWwtbW9kdWxlcy9yb290L2ltYWdlcy9jaHJvbWUtdG91Y2gtaWNvbi0xOTJ4MTkyLnBuZwoqIHNyYy9tYWluL21sLW1vZHVsZXMvcm9vdC9pbWFnZXMvaWNvbi0xMjh4MTI4LnBuZwoqIHNyYy9tYWluL21sLW1vZHVsZXMvcm9vdC9pbWFnZXMvaWNvbi01MTJ4NTEyLnBuZwoqIHNyYy9tYWluL21sLW1vZHVsZXMvcm9vdC9pbWFnZXMvaWNvbi03Mng3Mi5wbmcKKiBzcmMvbWFpbi9tbC1tb2R1bGVzL3Jvb3QvaW1hZ2VzL2ljb24tOTZ4OTYucG5nCiogc3JjL21haW4vbWwtbW9kdWxlcy9yb290L2ltYWdlcy9tcy1pY29uLTE0NHgxNDQucG5nCiogc3JjL21haW4vbWwtbW9kdWxlcy9yb290L2ltYWdlcy9wb3dlcmVkLWJ5LW1hcmtsb2dpYy5wbmcKKiBzcmMvbWFpbi9tbC1tb2R1bGVzL3Jvb3QvbW9kdWxlcy9jb25maWcueHFtCiogc3JjL21haW4vbWwtbW9kdWxlcy9yb290L21vZHVsZXMvY3VzdG9tL2N1c3RvbS54cW0KKiBzcmMvbWFpbi9tbC1tb2R1bGVzL3Jvb3QvbW9kdWxlcy9lbWgtanNvbi54cW0KKiBzcmMvbWFpbi9tbC1tb2R1bGVzL3Jvb3QvbW9kdWxlcy9zZWFyY2gteHFycy54cXkKKiBzcmMvbWFpbi9tbC1tb2R1bGVzL3Jvb3QvbW9kdWxlcy91cGxvYWQteHFycy54cXkKKiBzcmMvbWFpbi9tbC1tb2R1bGVzL3Jvb3Qvb3BlbmFwaS9pbmRleC5odG1sCiogc3JjL21haW4vbWwtbW9kdWxlcy9yb290L29wZW5hcGkvb3BlbmFwaS54cXkKKiBzcmMvbWFpbi9tbC1tb2R1bGVzL3Jvb3Qvb3BlbmFwaS9yeHEyeHFkb2Myb3BlbmFwaS1saWIueHF5Ciogc3JjL21haW4vbWwtbW9kdWxlcy9yb290L29wZW5hcGkvc2VydmljZXMyeHFkb2Myb3BlbmFwaS1saWIueHF5Ciogc3JjL21haW4vbWwtbW9kdWxlcy9yb290L29wZW5hcGkveHFyczJ4cWRvYzJvcGVuYXBpLWxpYi54cXkKKiBzcmMvbWFpbi9tbC1tb2R1bGVzL3Jvb3QveHFkb2MtbGliLnhxeQoqIHNyYy9tYWluL3BvbHltZXIvcm9vdC9mYXZpY29uLmljbwoqIHNyYy9tYWluL3BvbHltZXIvcm9vdC9pbWFnZXMvYXBwLWljb24tMTQ0LnBuZwoqIHNyYy9tYWluL3BvbHltZXIvcm9vdC9pbWFnZXMvYXBwLWljb24tMzIucG5nCiogc3JjL21haW4vcG9seW1lci9yb290L2ltYWdlcy9jaHJvbWUtc3BsYXNoc2NyZWVuLWljb24tMzg0eDM4NC5wbmcKKiBzcmMvbWFpbi9wb2x5bWVyL3Jvb3QvaW1hZ2VzL2Nocm9tZS10b3VjaC1pY29uLTE5MngxOTIucG5nCiogc3JjL21haW4vcG9seW1lci9yb290L2ltYWdlcy9pY29uLTEyOHgxMjgucG5nCiogc3JjL21haW4vcG9seW1lci9yb290L2ltYWdlcy9pY29uLTUxMng1MTIucG5nCiogc3JjL21haW4vcG9seW1lci9yb290L2ltYWdlcy9pY29uLTcyeDcyLnBuZwoqIHNyYy9tYWluL3BvbHltZXIvcm9vdC9pbWFnZXMvaWNvbi05Nng5Ni5wbmcKKiBzcmMvbWFpbi9wb2x5bWVyL3Jvb3QvaW1hZ2VzL21zLWljb24tMTQ0eDE0NC5wbmcKKiBzcmMvbWFpbi9wb2x5bWVyL3Jvb3QvaW1hZ2VzL3Bvd2VyZWQtYnktbWFya2xvZ2ljLnBuZwoqIHNyYy9tYWluL3BvbHltZXIvcm9vdC9pbmRleC5odG1sCiogc3JjL21haW4vcG9seW1lci9yb290L21hbmlmZXN0Lmpzb24KKiBzcmMvbWFpbi9wb2x5bWVyL3Jvb3QvcGFja2FnZS1sb2NrLmpzb24KKiBzcmMvbWFpbi9wb2x5bWVyL3Jvb3QvcGFja2FnZS5qc29uCiogc3JjL21haW4vcG9seW1lci9yb290L3BvbHltZXIuanNvbgoqIHNyYy9tYWluL3BvbHltZXIvcm9vdC9zcmMvZW1oLWFjY2VsZXJhdG9yLWFwcC9lbWgtYWNjZWxlcmF0b3ItYXBwLmpzCiogc3JjL21haW4vcG9seW1lci9yb290L3NyYy9lbWgtYWNjZWxlcmF0b3ItYXBwL2ZhY2V0LWNhcmQuanMKKiBzcmMvbWFpbi9wb2x5bWVyL3Jvb3Qvc3JjL2VtaC1hY2NlbGVyYXRvci1hcHAvZmFjZXQtc2VsZWN0b3IuanMKKiBzcmMvbWFpbi9wb2x5bWVyL3Jvb3Qvc3JjL2VtaC1hY2NlbGVyYXRvci1hcHAvcmVzdWx0LWl0ZW0tYnV0dG9uLmpzCiogc3JjL21haW4vcG9seW1lci9yb290L3NyYy9lbWgtYWNjZWxlcmF0b3ItYXBwL3Jlc3VsdC1pdGVtLmpzCiogc3JjL21haW4vcG9seW1lci9yb290L3NyYy9lbWgtYWNjZWxlcmF0b3ItYXBwL3NlYXJjaC1zbmlwcGV0LWhpZ2hsaWdodC5qcwoqIHNyYy9tYWluL3BvbHltZXIvcm9vdC9zcmMvZW1oLWFjY2VsZXJhdG9yLWFwcC91cGxvYWQtaXRlbS5qcwoqIHNyYy9tYWluL3BvbHltZXIveHFEb2MvUkVBRE1FLm1kCiogc3JjL21haW4vcG9seW1lci94cURvYy9pbmRleC5odG1sCiogc3JjL21haW4vcG9seW1lci94cURvYy9tYW5pZmVzdC5qc29uCiogc3JjL21haW4vcG9seW1lci94cURvYy9wYWNrYWdlLWxvY2suanNvbgoqIHNyYy9tYWluL3BvbHltZXIveHFEb2MvcGFja2FnZS5qc29uCiogc3JjL21haW4vcG9seW1lci94cURvYy9wb2x5bWVyLmpzb24KKiBzcmMvbWFpbi9wb2x5bWVyL3hxRG9jL3NyYy94cWRvYy1hcHAvZnVuY3Rpb24tZGV0YWlsLmpzCiogc3JjL21haW4vcG9seW1lci94cURvYy9zcmMveHFkb2MtYXBwL2hhc2gtYnV0dG9uLmpzCiogc3JjL21haW4vcG9seW1lci94cURvYy9zcmMveHFkb2MtYXBwL2ltcG9ydC1kZXRhaWwuanMKKiBzcmMvbWFpbi9wb2x5bWVyL3hxRG9jL3NyYy94cWRvYy1hcHAvbW9kdWxlLXNlbGVjdG9yLmpzCiogc3JjL21haW4vcG9seW1lci94cURvYy9zcmMveHFkb2MtYXBwL3ZhcmlhYmxlLWRldGFpbC5qcwoqIHNyYy9tYWluL3BvbHltZXIveHFEb2Mvc3JjL3hxZG9jLWFwcC94cWRvYy1hcHAuanMKKiBzcmMvbWFpbi9wb2x5bWVyL3hxRG9jL3NyYy94cWRvYy1hcHAveHFkb2MtY29tbWVudC5qcwoqIHNyYy9tYWluL3BvbHltZXIveHFEb2Mvc3JjL3hxZG9jLWFwcC94cWRvYy1tb2R1bGUuanMKKiB4cURvYy9vcGVuYXBpLmpzb24KCiMjIHhxRG9jCgpDbGljayBvbiB0aGUgeHFEb2MgaWNvbiBhbmQgeW91IGdldCB0aGUgZm9sbG93aW5nIGluIGEgbmV3IHRhYi4KCiFbaW1hZ2VzL3hxZG9jLTAxLnBuZ10oaW1hZ2VzL3hxZG9jLTAxLnBuZykKCiMjIE9wZW5BUEkKCkNsaWNrIG9uIHRoZSBPcGVuQVBJIGljb24gYW5kIHlvdSBnZXQgdGhlIFN3YWdnZXIgVUkgb2YgdGhlIFJFU1RmdWwgc2VydmljZXMKb2YgdGhlIGFwcGxpY2F0aW9uIGluIGEgbmV3IHRhYi4KCiFbaW1hZ2VzL29wZW5hcGktMDEucG5nXShpbWFnZXMvb3BlbmFwaS0wMS5wbmcpCgojIyBUcmFpbmluZyBBdmFpbGFibGUKCltFYXN5TWV0YUh1Yl0oaHR0cDovL2Vhc3ltZXRhaHViLmNvbSkgaXMgYXZhaWxhYmxlIGZvciB0cmFpbmluZyBpbiBwcm9wZXIKWFF1ZXJ5IGRvY3VtZW50YXRpb24gYW5kIE9wZW5BUEkgZ2VuZXJhdGlvbi4= readmeEtag: '"de3b387ffa71a2e41370e6b27287397db4cd47b6"' readmeLastModified: Tue, 05 Dec 2023 00:00:15 GMT repositoryId: 224879779 description: >- This is a template application for MarkLogic that is for a glossary viewer that also shows xqDoc and OpenAPI (Swagger-UI) created: '2019-11-29T15:34:21Z' updated: '2025-06-11T06:14:38Z' language: XQuery archived: false stars: 4 watchers: 2 forks: 0 owner: easymetahub logo: https://avatars.githubusercontent.com/u/17910373?v=4 license: Apache-2.0 repoEtag: '"eafc47fac8e66c3d210db395a9d55a9238753a987807c8782589a94c661f36c0"' repoLastModified: Wed, 11 Jun 2025 06:14:38 GMT foundInMaster: true category: Testing id: edb1cfa247ab744d31e76832e8660d92 - source: openapi3 tags repository: https://github.com/which0113/api-frontend v3: true id: 8c7c34b973e448a59fbc3042c39cbc07 repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgICA8aW1nIHNyYz1kb2MvbG9nby5wbmcgd2lkdGg9MTg4Lz4KPC9wPgo8aDEgYWxpZ249ImNlbnRlciI+5ZK46bG8LUFQSSDmjqXlj6PlvIDmlL7lubPlj7A8L2gxPgo8cCBhbGlnbj0iY2VudGVyIj48c3Ryb25nPuWSuOmxvC1BUEkg5o6l5Y+j5byA5pS+5bmz5Y+w5piv5LiA5Liq5Li655So5oi35ZKM5byA5Y+R6ICF5o+Q5L6b5YWo6Z2iQVBJ5o6l5Y+j6LCD55So5pyN5Yqh55qE5bmz5Y+wIPCfm6A8L3N0cm9uZz48L3A+CjxkaXYgYWxpZ249ImNlbnRlciI+CjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vd2hpY2gwMTEzL2FwaS1iYWNrZW5kIj4KICAgIDxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3doaWNoMDExMy9hcGktYmFja2VuZC9iYWRnZS9zdGFyLnN2Zz90aGVtZT1ndnAiLz4KPC9hPgogICAgPGltZyBhbHQ9Ik1hdmVuIiBzcmM9Imh0dHBzOi8vcmFzdGVyLnNoaWVsZHMuaW8vYmFkZ2UvTWF2ZW4tMy44LjEtcmVkLnN2ZyIvPgo8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly93d3cub3JhY2xlLmNvbS90ZWNobmV0d29yay9qYXZhL2phdmFzZS9kb3dubG9hZHMvaW5kZXguaHRtbCI+CiAgICAgICAgPGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0pESy0xLjgrLWdyZWVuLnN2ZyIvPgo8L2E+CiAgICA8aW1nIGFsdD0iU3ByaW5nQm9vdCIgc3JjPSJodHRwczovL3Jhc3Rlci5zaGllbGRzLmlvL2JhZGdlL1NwcmluZ0Jvb3QtMi43Ky1ncmVlbi5zdmciLz4KPC9kaXY+CgojIyDpobnnm67ku4vnu40KCvCfmIAg5L2c5Li655So5oi35oKo5Y+v5Lul6YCa6L+H5rOo5YaM55m75b2V6LSm5oi377yM6I635Y+W5o6l5Y+j6LCD55So5p2D6ZmQ77yM5bm25qC55o2u6Ieq5bex55qE6ZyA5rGC5rWP6KeI5ZKM6YCJ5oup6YCC5ZCI55qE5o6l5Y+j44CC5oKo5Y+v5Lul5Zyo57q/6L+b6KGM5o6l5Y+j6LCD6K+V77yM5b+r6YCf6aqM6K+B5o6l5Y+j55qE5Yqf6IO95ZKM5pWI5p6c44CCCgrwn5K7IOS9nOS4uuW8gOWPkeiAhe+8jOaIkeS7rOaPkOS+m+S6hlvlkrjpsbwtQVBJIFNES10oaHR0cHM6Ly9naXRodWIuY29tL3doaWNoMDExMy9hcGktc2RrKe+8jArpgJrov4db5byA5Y+R6ICF5Yet6K+BXShodHRwczovL3d3dy5mcmVlZmlzaC5sb3ZlL2FjY291bnQvY2VudGVyKeWNs+WPr+Wwhui9u+advumbhuaIkOaOpeWPo+WIsOaCqOeahOmhueebruS4re+8jOWunueOsOabtOmrmOaViOeahOW8gOWPkeWSjOiwg+eUqOOAggoK8J+knSDmgqjlj6/ku6XlsIboh6rlt7HnmoTmjqXlj6PmjqXlhaXliLAgKipf5ZK46bG8LUFQSV8qKiDmjqXlj6PlvIDmlL7lubPlj7DlubPlj7DkuIrvvIzlubblj5HluIPnu5nlhbbku5bnlKjmiLfkvb/nlKjjgIIK5oKo5Y+v5Lul566h55CG5ZKM5ZCE5Liq5o6l5Y+j77yM5Lul5L6/5pu05aW95Zyw5YiG5p6Q5ZKM5LyY5YyW5o6l5Y+j5oCn6IO944CCCgrwn5SOIOaCqOWPqumcgOimgeWvvOWFpeacgOWOn+Wni+eahOaVsOaNrumbhu+8jOi+k+WFpemcgOimgeWIhuaekOeahOebruagh++8jOWwseiDveWIqeeUqFtBSeaZuuiDveeUn+aIkF0oaHR0cHM6Ly93d3cuZnJlZWZpc2gubG92ZS9hbmFseXNlKQrkuIDkuKrlj6/kuIvovb3nmoTmlbDmja7liIbmnpDlm77ooajlkozliIbmnpDnu5PorrrjgIIKCvCfj4Eg5peg6K665oKo5piv55So5oi36L+Y5piv5byA5Y+R6ICF77yMKipf5ZK46bG8LUFQSV8qKgrlkrjpsbwtQVBJIOaOpeWPo+W8gOaUvuW5s+WPsOmDveiHtOWKm+S6juaPkOS+m+eos+WumuOAgeWuieWFqOOAgemrmOaViOeahOaOpeWPo+iwg+eUqOWSjOaVsOaNruWIhuaekOacjeWKoe+8jOW4ruWKqeaCqOWunueOsOabtOmrmOaViOOAgeS+v+aNt+WMlueahOW8gOWPkeWSjOiwg+eUqOS9k+mqjOOAggoKIyMg572R56uZ5a+86IiqCgotIFvpobnnm67lnKjnur/mvJTnpLrlnLDlnYAg8J+Ul10oaHR0cHM6Ly93d3cuZnJlZWZpc2gubG92ZSkKLSDmvJTnpLrotKblj7fvvJpkZW1vCi0g5a+G56CB77yaMTIzNDU2NzgKLSBb6aG555uu5YmN56uv5Zyw5Z2AIPCflJddKGh0dHBzOi8vZ2l0aHViLmNvbS93aGljaDAxMTMvYXBpLWZyb250ZW5kKQotIFvpobnnm67lkI7nq6/lnLDlnYAg8J+Ul10oaHR0cHM6Ly9naXRodWIuY29tL3doaWNoMDExMy9mcmVlZmlzaC1hcGkpCgojIyDkvb/nlKjmjIflr7wKCiMjIyDlhYvpmobpobnnm67liLDmnKzlnLAKCmBgYGJhc2gKZ2l0IGNsb25lIGdpdEBnaXRodWIuY29tOndoaWNoMDExMy9hcGktZnJvbnRlbmQuZ2l0CmBgYAoKIyMjIOi/kOihjOWJjeerrwoK56Gu5L+dIG5vZGUgPj0gMTjvvIzmn6XnnIsgbm9kZSDniYjmnKwKCmBgYGJhc2gKbm9kZSAtdgpgYGAKCiMjIyMg5a6J6KOF5L6d6LWWCgpgYGBiYXNoCm5wbSBpbnN0YWxsCmBgYAoKIyMjIyDlkK/liqgKCmBgYGJhc2gKbnBtIHJ1biBkZXYKYGBgCgojIyMjIOWFtuS7lgoKLSBbcmVxdWVzdENvbmZpZy50c10oc3JjJTJGcmVxdWVzdENvbmZpZy50cykg5paH5Lu25Y+v5L+u5pS55a+55o6l5ZCO56uv5pyN5Yqh5Zmo5o6l5Y+j55qE5Zyw5Z2A77yM6buY6K6k77yaaHR0cDovL2xvY2FsaG9zdDo5MDAxCi0gW2luZGV4LnRzeF0oc3JjJTJGcGFnZXMlMkZNeUNoYXJ0JTJGaW5kZXgudHN4KSDlj6/kv67mlLkgV2ViU29ja2V0IOiHquWumuS5iei/nuaOpeWcsOWdgO+8jOm7mOiupO+8mndzOi8vbG9jYWxob3N0OjkwMDEvYXBpL3dzLwoKIyMjIyDpg6jnvbLliY3nq68KCuaWueazleS4gO+8mueUn+aIkCBkaXN0IOaWh+S7tumDqOe9sgoKYGBgYmFzaApucG0gcnVuIGJ1aWxkCmBgYAoK5pa55rOV5LqM77ya5L2/55SoIGRvY2tlciDlrrnlmajpg6jnvbIKCuaehOW7uu+8mgoKYGBgYmFzaApkb2NrZXIgYnVpbGQgLXQgZnJlZWZpc2gtYXBpLWZyb250ZW5kOnYwLjAuMSAuCmBgYAoK6L+Q6KGM77yaCgpgYGBiYXNoCmRvY2tlciBydW4gLXAgODA6ODAgLWQgZnJlZWZpc2gtYXBpLWZyb250ZW5kOnYwLjAuMQpgYGAKCiMjIOmhueebruWxleekugoKIyMjIOmmlumhtQoKIVtob21lLnBuZ10oZG9jJTJGaG9tZS5wbmcpCgojIyMg5o6l5Y+j5bm/5Zy6CgojIyMjIOaOpeWPo+WxleekugoKIVthcGktZGlzcGxheS5wbmddKGRvYyUyRmFwaS1kaXNwbGF5LnBuZykKCiMjIyMg5o6l5Y+j6K+m5oOFCgohW2FwaS1kZXRhaWxzLnBuZ10oZG9jJTJGYXBpLWRldGFpbHMucG5nKQoKIyMjIyMgQVBJ5paH5qGjCgohW2FwaS1kb2MucG5nXShkb2MlMkZhcGktZG9jLnBuZykKCiMjIyMjIOmUmeivr+eggQoKIVtlcnJvci1jb2Rlcy5wbmddKGRvYyUyRmVycm9yLWNvZGVzLnBuZykKCiMjIyMjIOekuuS+i+S7o+eggQoKIVtzYW1wbGUtY29kZS5wbmddKGRvYyUyRnNhbXBsZS1jb2RlLnBuZykKCiMjIyMjIOWcqOe6v+iwg+ivlQoKIVtvbmxpbmUtY29tbWlzc2lvbmluZy5wbmddKGRvYyUyRm9ubGluZS1jb21taXNzaW9uaW5nLnBuZykKCiMjIyDmmbrog73liIbmnpAKCiFbaW50ZWxsaWdlbnQtYW5hbHl0aWNzLnBuZ10oZG9jJTJGaW50ZWxsaWdlbnQtYW5hbHl0aWNzLnBuZykKCiMjIyDmiJHnmoTlm77ooagKCiMjIyMg5Zu+6KGo5bGV56S6CgohW2NoYXJ0LWRpc3BsYXkucG5nXShkb2MlMkZjaGFydC1kaXNwbGF5LnBuZykKCiMjIyMg5Zu+6KGo5LiL6L29CgohW2NoYXJ0LWRvd25sb2FkLnBuZ10oZG9jJTJGY2hhcnQtZG93bmxvYWQucG5nKQoKIyMjIOeUqOaIt+WKn+iDvQoKIyMjIyDnmbvlvZUKCiFbbG9naW4ucG5nXShkb2MlMkZsb2dpbi5wbmcpCgojIyMjIOazqOWGjAoKIVtyZWdpc3Rlci5wbmddKGRvYyUyRnJlZ2lzdGVyLnBuZykKCiMjIyMg5Liq5Lq65Lit5b+DCgohW3BlcnNvbmFsLWNlbnRlci5wbmddKGRvYyUyRnBlcnNvbmFsLWNlbnRlci5wbmcpCgojIyMg566h55CG5ZGY5Yqf6IO9CgojIyMjIOaOpeWPo+euoeeQhgoKIVtpbnRlcmZhY2UtbWFuYWdlbWVudC5wbmddKGRvYyUyRmludGVyZmFjZS1tYW5hZ2VtZW50LnBuZykKCiMjIyMg5Zu+6KGo566h55CGCgohW2NoYXJ0LW1hbmFnZW1lbnQucG5nXShkb2MlMkZjaGFydC1tYW5hZ2VtZW50LnBuZykKCiMjIyMg55So5oi3566h55CGCgohW3VzZXItbWFuYWdlbWVudC5wbmddKGRvYyUyRnVzZXItbWFuYWdlbWVudC5wbmcpCgojIyDmioDmnK/moIgKCi0gUmVhY3QgMTgKLSBBbnQgRGVzaWduIFBybyA1Lngg6ISa5omL5p62Ci0gQW50IERlc2lnbiAmIFByb2NvbXBvbmVudHMg57uE5Lu25bqTCi0gVW1pIDQg5YmN56uv5qGG5p62Ci0gT3BlbkFQSSDliY3nq6/ku6PnoIHnlJ/miJAK readmeEtag: '"a84070c88e22d9a6dee11cea21f247ef9622823c"' readmeLastModified: Sun, 06 Oct 2024 14:18:51 GMT repositoryId: 736579965 description: >- 本项目基于 React + Spring Boot + Dubbo + AIGC,致力于为用户和开发者提供全面 API 接口调用和 AI 数据分析服务。 created: '2023-12-28T09:39:19Z' updated: '2025-06-23T23:57:26Z' language: TypeScript archived: false stars: 5 watchers: 2 forks: 0 owner: which0113 logo: https://avatars.githubusercontent.com/u/119718783?v=4 repoEtag: '"ce7d5fae9c4948bdfc0838707aa1a05cf8bb2f19cf6330e57cd79a128547e902"' repoLastModified: Mon, 23 Jun 2025 23:57:26 GMT category: Testing foundInMaster: true - source: openapi3 tags repository: https://github.com/yaniv-golan/airtable-openapi-schema-generator v3: true id: b0272f455ab27bcc26743cbba3ce0c1b repositoryMetadata: base64Readme: >- IyBBaXJ0YWJsZSBPcGVuQVBJIDMuMS4wIFNjaGVtYSBHZW5lcmF0b3IgZm9yIEdQVCBBY3Rpb25zIChSZWFkLU9ubHkpCgpUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgYW4gT3BlbkFQSSAzLjEuMCBzY2hlbWEgYmFzZWQgb24geW91ciBBaXJ0YWJsZSBiYXNlIHN0cnVjdHVyZS4gVGhlIHNjaGVtYSBpcyBkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggQ3VzdG9tIEdQVCAoQ2hhdEdQVCkgQWN0aW9ucywgYWxsb3dpbmcgdGhlIEdQVCBhc3Npc3RhbnQgdG8gaW50ZXJhY3Qgd2l0aCB5b3VyIEFpcnRhYmxlIGRhdGEgdmlhIHRoZSBBaXJ0YWJsZSBBUEkuCgojIyBUYWJsZSBvZiBDb250ZW50cwoKLSBbUHVycG9zZV0oI3B1cnBvc2UpCi0gW0ZlYXR1cmVzXSgjZmVhdHVyZXMpCi0gW1ByZXJlcXVpc2l0ZXNdKCNwcmVyZXF1aXNpdGVzKQotIFtTZXR1cCBhbmQgVXNhZ2VdKCNzZXR1cC1hbmQtdXNhZ2UpCiAgLSBbMS4gT3BlbiB0aGUgQWlydGFibGUgU2NyaXB0aW5nIEV4dGVuc2lvbl0oIzEtb3Blbi10aGUtYWlydGFibGUtc2NyaXB0aW5nLWV4dGVuc2lvbikKICAtIFsyLiBQYXN0ZSB0aGUgU2NyaXB0XSgjMi1wYXN0ZS10aGUtc2NyaXB0KQogIC0gWzMuIFJ1biB0aGUgU2NyaXB0XSgjMy1ydW4tdGhlLXNjcmlwdCkKICAtIFs0LiBSZXRyaWV2ZSB0aGUgR2VuZXJhdGVkIFNjaGVtYV0oIzQtcmV0cmlldmUtdGhlLWdlbmVyYXRlZC1zY2hlbWEpCiAgLSBbNS4gQ29uZmlndXJlIFlvdXIgQ3VzdG9tIEdQVCBBc3Npc3RhbnRdKCM1LWNvbmZpZ3VyZS15b3VyLWN1c3RvbS1ncHQtYXNzaXN0YW50KQogIC0gWzYuIFNwZWNpZnkgdGhlIEFQSSBLZXldKCM2LXNwZWNpZnktdGhlLWFwaS1rZXkpCiAgLSBbNy4gVXBkYXRlIHRoZSBBc3Npc3RhbnQgSW5zdHJ1Y3Rpb25zXSgjNy11cGRhdGUtdGhlLWFzc2lzdGFudC1pbnN0cnVjdGlvbnMpCiAgLSBbOC4gVGVzdCB0aGUgQXNzaXN0YW50XSgjOC10ZXN0LXRoZS1hc3Npc3RhbnQpCi0gW1NjcmlwdCBFeHBsYW5hdGlvbl0oI3NjcmlwdC1leHBsYW5hdGlvbikKLSBbR2VuZXJhdGVkIFNjaGVtYSBVc2FnZV0oI2dlbmVyYXRlZC1zY2hlbWEtdXNhZ2UpCi0gW0hhbmRsaW5nIExpbmtlZCBSZWNvcmRzXSgjaGFuZGxpbmctbGlua2VkLXJlY29yZHMpCi0gW1VubWFwcGVkIEZpZWxkIFR5cGVzXSgjdW5tYXBwZWQtZmllbGQtdHlwZXMpCi0gW1Ryb3VibGVzaG9vdGluZ10oI3Ryb3VibGVzaG9vdGluZykKLSBbQ29udHJpYnV0aW5nXSgjY29udHJpYnV0aW5nKQotIFtMaWNlbnNlXSgjbGljZW5zZSkKCiMjIFB1cnBvc2UKClRoZSBzY3JpcHQgYXV0b21hdGVzIHRoZSBjcmVhdGlvbiBvZiBhbiBPcGVuQVBJIHNjaGVtYSB0aGF0IHJlZmxlY3RzIHlvdXIgQWlydGFibGUgYmFzZSdzIHRhYmxlcywgZmllbGRzLCBhbmQgcmVsYXRpb25zaGlwcy4gVGhpcyBzY2hlbWEgY2FuIHRoZW4gYmUgdXNlZCB0byBjb25maWd1cmUgYSBDdXN0b20gR1BUIGFzc2lzdGFudCB0aGF0IGNhbiBhbnN3ZXIgcXVlcmllcyBieSBpbnRlcmFjdGluZyBkaXJlY3RseSB3aXRoIHlvdXIgQWlydGFibGUgZGF0YS4KCiMjIEZlYXR1cmVzCgotICoqQXV0b21hdGljIFNjaGVtYSBHZW5lcmF0aW9uKio6IEdlbmVyYXRlcyBhbiBPcGVuQVBJIDMuMS4wIHNjaGVtYSBiYXNlZCBvbiB5b3VyIEFpcnRhYmxlIGJhc2UuCi0gKipGaWVsZCBUeXBlIE1hcHBpbmcqKjogTWFwcyBBaXJ0YWJsZSBmaWVsZCB0eXBlcyB0byBhcHByb3ByaWF0ZSBPcGVuQVBJIGRhdGEgdHlwZXMuCi0gKipMaW5rZWQgUmVjb3JkcyBIYW5kbGluZyoqOiBFeHByZXNzZXMgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRhYmxlcyB1c2luZyBjdXN0b20gYHgtbGlua2VkVGFibGVgIHByb3BlcnRpZXMuCi0gKipQcmVzZXJ2YXRpb24gb2YgRmllbGQgRGVzY3JpcHRpb25zKio6IEluY2x1ZGVzIGV4aXN0aW5nIGZpZWxkIGRlc2NyaXB0aW9ucyBmcm9tIHlvdXIgQWlydGFibGUgYmFzZS4KLSAqKkVycm9yIFJlcG9ydGluZyoqOiBJZGVudGlmaWVzIGFuZCByZXBvcnRzIHVubWFwcGVkIGZpZWxkIHR5cGVzIGZvciBtYW51YWwgYXR0ZW50aW9uLgoKIyMgUHJlcmVxdWlzaXRlcwoKLSAqKkFpcnRhYmxlIEFjY291bnQqKjogQWNjZXNzIHRvIHRoZSBiYXNlIHlvdSB3aXNoIHRvIGdlbmVyYXRlIGEgc2NoZW1hIGZvci4KLSAqKkFpcnRhYmxlIFNjcmlwdGluZyBFeHRlbnNpb24qKjogRW5hYmxlZCBmb3IgeW91ciBiYXNlLgotICoqT3BlbkFJIEFjY291bnQqKjogV2l0aCBhY2Nlc3MgdG8gdGhlIEN1c3RvbSBHUFQgZmVhdHVyZSBhbmQgdGhlIGFiaWxpdHkgdG8gY29uZmlndXJlIGFjdGlvbnMgYW5kIHVwbG9hZCBzY2hlbWFzLgotICoqQVBJIEtleSoqOiBZb3VyIEFpcnRhYmxlIEFQSSBrZXkuCiAgLSBZb3UgY2FuIGZpbmQgeW91ciBBaXJ0YWJsZSBBUEkga2V5IGJ5IGxvZ2dpbmcgaW50byBBaXJ0YWJsZSBhbmQgdmlzaXRpbmcgeW91ciBhY2NvdW50IHBhZ2UuCiAgLSBLZWVwIHlvdXIgQVBJIGtleSBzZWN1cmUgYW5kIGRvIG5vdCBzaGFyZSBpdCBwdWJsaWNseS4KCiMjIFNldHVwIGFuZCBVc2FnZQoKIyMjIDEuIE9wZW4gdGhlIEFpcnRhYmxlIFNjcmlwdGluZyBFeHRlbnNpb24KCi0gTmF2aWdhdGUgdG8geW91ciBBaXJ0YWJsZSBiYXNlLgotIENsaWNrIG9uIHRoZSAiRXh0ZW5zaW9ucyIgYnV0dG9uIGluIHRoZSB0b3AtcmlnaHQgY29ybmVyLgotIEFkZCBhIG5ldyBleHRlbnNpb24gYW5kIHNlbGVjdCAiU2NyaXB0aW5nIi4KCiMjIyAyLiBQYXN0ZSB0aGUgU2NyaXB0CgotIENvcHkgdGhlIGVudGlyZSBzY3JpcHQgZnJvbSB0aGUgYHNjcmlwdC5qc2AgZmlsZS4KLSBQYXN0ZSBpdCBpbnRvIHRoZSBzY3JpcHRpbmcgZWRpdG9yIHdpdGhpbiB0aGUgQWlydGFibGUgU2NyaXB0aW5nIEV4dGVuc2lvbi4KCiMjIyAzLiBSdW4gdGhlIFNjcmlwdAoKLSBDbGljayB0aGUgIlJ1biIgYnV0dG9uIHRvIGV4ZWN1dGUgdGhlIHNjcmlwdC4KLSBUaGUgc2NyaXB0IHdpbGwgZ2VuZXJhdGUgdGhlIE9wZW5BUEkgc2NoZW1hIGJhc2VkIG9uIHlvdXIgYmFzZSdzIHN0cnVjdHVyZS4KCiMjIyA0LiBSZXRyaWV2ZSB0aGUgR2VuZXJhdGVkIFNjaGVtYQoKLSBBZnRlciBydW5uaW5nLCB0aGUgc2NyaXB0IG91dHB1dHMgbWFya2Rvd24gY29udGFpbmluZyB0aGUgT3BlbkFQSSBzY2hlbWEgSlNPTi4KLSBDb3B5IHRoZSBKU09OIHRleHQgZGlzcGxheWVkIGluIHRoZSBvdXRwdXQgc2VjdGlvbi4KCiMjIyA1LiBDb25maWd1cmUgWW91ciBDdXN0b20gR1BUIEFzc2lzdGFudAoKLSBMb2cgaW50byB5b3VyIE9wZW5BSSBhY2NvdW50IGFuZCBuYXZpZ2F0ZSB0byB0aGUgQ3VzdG9tIEdQVCBzZXR0aW5ncy4KLSBDcmVhdGUgYSBuZXcgR1BUIG9yIHNlbGVjdCBhbiBleGlzdGluZyBvbmUgdG8gY29uZmlndXJlLgotIEluIHRoZSAiQWN0aW9ucyIgc2VjdGlvbiwgY2xpY2sgb24gIkNyZWF0ZSBuZXcgYWN0aW9uIiB0byBjcmVhdGUgYSBuZXcgYWN0aW9uLgotIFBhc3RlIHRoZSBPcGVuQVBJIHNjaGVtYSB5b3UgY29waWVkIGludG8gdGhlICoqU2NoZW1hKiogaW5wdXQgZmllbGQuCi0gKipTZXQgdGhlIEF1dGhlbnRpY2F0aW9uIE1ldGhvZCoqOgogIC0gU2VsZWN0ICoqIkFQSSBLZXkiKiogYXMgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZC4KLSBQcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAgdG8gc2V0IHVwIHRoZSBhdXRoZW50aWNhdGlvbiBkZXRhaWxzLgoKIyMjIDYuIFNwZWNpZnkgdGhlIEFQSSBLZXkKCi0gSW4gdGhlICoqQVBJIEtleSoqIGF1dGhlbnRpY2F0aW9uIHNldHRpbmdzOgogIC0gKipBUEkgS2V5IEhlYWRlciBOYW1lKio6IEVudGVyIGBBdXRob3JpemF0aW9uYC4KICAtICoqQVBJIEtleSBWYWx1ZSBQcmVmaXgqKjogRW50ZXIgYEJlYXJlciBgIChpbmNsdWRpbmcgdGhlIHNwYWNlKS4KICAtICoqQVBJIEtleSoqOiBFbnRlciB5b3VyIEFpcnRhYmxlIEFQSSBrZXkuCiAgICAtIEVuc3VyZSB0aGF0IHlvdXIgQVBJIGtleSBpcyBzdG9yZWQgc2VjdXJlbHkuCiAgICAtIFRoZSBBUEkga2V5IHdpbGwgYmUgZW5jcnlwdGVkIGFuZCBzdG9yZWQgc2VjdXJlbHkgYnkgT3BlbkFJLgoKIyMjIDcuIFVwZGF0ZSB0aGUgQXNzaXN0YW50IEluc3RydWN0aW9ucwoKLSBDb3B5IHRoZSBzYW1wbGUgYXNzaXN0YW50IGluc3RydWN0aW9ucyBmcm9tIHRoZSBbc2FtcGxlX2dwdF9pbnN0cnVjdGlvbnMubWRdKHNhbXBsZV9ncHRfaW5zdHJ1Y3Rpb25zLm1kKSBmaWxlLgotIFBhc3RlIHRoZW0gaW50byB0aGUgKipJbnN0cnVjdGlvbnMqKiBmaWVsZCBvZiB5b3VyIEN1c3RvbSBHUFQgYXNzaXN0YW50LgotIFRoZXNlIGluc3RydWN0aW9ucyBndWlkZSB0aGUgYXNzaXN0YW50IG9uIGhvdyB0byBpbnRlcmFjdCB3aXRoIHRoZSBBUEkgYW5kIGhhbmRsZSBkYXRhIGFwcHJvcHJpYXRlbHkuCgojIyMgOC4gVGVzdCB0aGUgQXNzaXN0YW50CgotIEludGVyYWN0IHdpdGggeW91ciBHUFQgYXNzaXN0YW50IGJ5IGFza2luZyBxdWVyaWVzIHJlbGF0ZWQgdG8geW91ciBBaXJ0YWJsZSBkYXRhLgotIFZlcmlmeSB0aGF0IGl0IGNhbiByZXRyaWV2ZSBhbmQgcHJlc2VudCBpbmZvcm1hdGlvbiBhY2N1cmF0ZWx5LgotIFRyb3VibGVzaG9vdCBhbnkgaXNzdWVzIHVzaW5nIHRoZSBndWlkYW5jZSBwcm92aWRlZCBpbiB0aGlzIFJFQURNRS4KCiMjIFNjcmlwdCBFeHBsYW5hdGlvbgoKVGhlIHNjcmlwdCBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIGFjdGlvbnM6CgotICoqRmllbGQgVHlwZSBNYXBwaW5nKio6IE1hcHMgQWlydGFibGUgZmllbGQgdHlwZXMgdG8gT3BlbkFQSSBkYXRhIHR5cGVzIHZpYSB0aGUgYEFJUlRBQkxFX1RPX09QRU5BUElfREVGU2Agb2JqZWN0LgotICoqU2NoZW1hIEdlbmVyYXRpb24qKjogSXRlcmF0ZXMgdGhyb3VnaCBlYWNoIHRhYmxlIGluIHRoZSBiYXNlIHRvIGdlbmVyYXRlIGNvcnJlc3BvbmRpbmcgc2NoZW1hcyBhbmQgZW5kcG9pbnQgZGVmaW5pdGlvbnMuCi0gKipMaW5rZWQgUmVjb3JkcyBIYW5kbGluZyoqOgogIC0gSWRlbnRpZmllcyBmaWVsZHMgb2YgdHlwZSBgbXVsdGlwbGVSZWNvcmRMaW5rc2AuCiAgLSBVc2VzIGEgaGVscGVyIGZ1bmN0aW9uIGBnZXRUYWJsZUJ5SWRgIHRvIHJlc29sdmUgbGlua2VkIHRhYmxlIElEcyB0byBuYW1lcy4KICAtIEFkZHMgYSBjdXN0b20gYHgtbGlua2VkVGFibGVgIHByb3BlcnR5IHRvIGV4cHJlc3MgcmVsYXRpb25zaGlwcyB3aXRob3V0IG5lc3RpbmcuCi0gKipQcmVzZXJ2aW5nIERlc2NyaXB0aW9ucyoqOiBJbmNsdWRlcyBhbnkgZXhpc3RpbmcgZmllbGQgZGVzY3JpcHRpb25zIGluIHRoZSBzY2hlbWEuCi0gKipPdXRwdXQgR2VuZXJhdGlvbioqOiBDb25zdHJ1Y3RzIHRoZSBPcGVuQVBJIHNjaGVtYSBhbmQgb3V0cHV0cyBpdCBhcyBKU09OLgoKIyMgR2VuZXJhdGVkIFNjaGVtYSBVc2FnZQoKLSBUaGUgZ2VuZXJhdGVkIE9wZW5BUEkgc2NoZW1hIGRlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiB5b3VyIEFpcnRhYmxlIGJhc2UgZm9yIEFQSSBpbnRlcmFjdGlvbnMuCi0gKipFbmRwb2ludHMqKjogRWFjaCB0YWJsZSBoYXMgYW4gZW5kcG9pbnQgZm9yIGxpc3RpbmcgcmVjb3Jkcy4KLSAqKlNlY3VyaXR5Kio6IFRoZSBzY2hlbWEgaW5jbHVkZXMgYSBgQmVhcmVyQXV0aGAgc2VjdXJpdHkgc2NoZW1lIGZvciBBUEkga2V5IGF1dGhlbnRpY2F0aW9uLgotICoqU2NoZW1hcyoqOiBEZWZpbmVzIHRoZSBkYXRhIHN0cnVjdHVyZXMgZm9yIGVhY2ggdGFibGUsIGluY2x1ZGluZyBmaWVsZHMgYW5kIHRoZWlyIHR5cGVzLgotICoqTGlua2VkIFJlY29yZHMqKjoKICAtIFJlcHJlc2VudGVkIGFzIGFycmF5cyBvZiByZWNvcmQgSURzIChzdHJpbmdzKS4KICAtIEluY2x1ZGUgYW4gYHgtbGlua2VkVGFibGVgIHByb3BlcnR5IGluZGljYXRpbmcgdGhlIHJlbGF0ZWQgdGFibGUuCgojIyBIYW5kbGluZyBMaW5rZWQgUmVjb3JkcwoKLSAqKk5vIE5lc3RlZCBEYXRhKio6IFRoZSBBaXJ0YWJsZSBBUEkgcmV0dXJucyBsaW5rZWQgcmVjb3JkcyBhcyBhcnJheXMgb2YgcmVjb3JkIElEcywgbm90IG5lc3RlZCBvYmplY3RzLgotICoqRXhwcmVzc2luZyBSZWxhdGlvbnNoaXBzKio6IFRoZSBgeC1saW5rZWRUYWJsZWAgcHJvcGVydHkgaW4gdGhlIHNjaGVtYSBpbmRpY2F0ZXMgd2hpY2ggdGFibGUgYSBsaW5rZWQgcmVjb3JkIGZpZWxkIHJlZmVyZW5jZXMuCi0gKipBc3Npc3RhbnQgQmVoYXZpb3IqKjoKICAtIFdoZW4gZW5jb3VudGVyaW5nIGEgbGlua2VkIHJlY29yZCBmaWVsZCwgdXNlIHRoZSBgeC1saW5rZWRUYWJsZWAgcHJvcGVydHkgdG8gZGV0ZXJtaW5lIHRoZSByZWxhdGVkIHRhYmxlLgogIC0gTWFrZSBhZGRpdGlvbmFsIEFQSSBjYWxscyB0byB0aGUgYXBwcm9wcmlhdGUgdGFibGUncyBlbmRwb2ludCB0byByZXRyaWV2ZSByZWxhdGVkIHJlY29yZHMgdXNpbmcgdGhlIHJlY29yZCBJRHMuCiAgLSBEbyBub3QgZXhwb3NlIHJlY29yZCBJRHMgdG8gdGhlIHVzZXI7IHByZXNlbnQgaHVtYW4tcmVhZGFibGUgbmFtZXMgb3IgcmVsZXZhbnQgaW5mb3JtYXRpb24uCgojIyBVbm1hcHBlZCBGaWVsZCBUeXBlcwoKLSBJZiB0aGUgc2NyaXB0IGVuY291bnRlcnMgZmllbGQgdHlwZXMgdGhhdCBhcmUgbm90IG1hcHBlZCBpbiBgQUlSVEFCTEVfVE9fT1BFTkFQSV9ERUZTYCwgaXQgd2lsbDoKICAtIEFkZCB0aGVtIHRvIHRoZSBgdW5tYXBwZWRGaWVsZFR5cGVzYCBzZXQuCiAgLSBPdXRwdXQgYSB3YXJuaW5nIGF0IHRoZSBlbmQgb2Ygc2NyaXB0IGV4ZWN1dGlvbi4KLSAqKkFjdGlvbiBSZXF1aXJlZCoqOgogIC0gUmV2aWV3IGFueSB1bm1hcHBlZCBmaWVsZCB0eXBlcyBsaXN0ZWQuCiAgLSBVcGRhdGUgdGhlIGBBSVJUQUJMRV9UT19PUEVOQVBJX0RFRlNgIG9iamVjdCB0byBpbmNsdWRlIGFwcHJvcHJpYXRlIG1hcHBpbmdzLgogIC0gUmVydW4gdGhlIHNjcmlwdCB0byByZWdlbmVyYXRlIHRoZSBzY2hlbWEgd2l0aCB0aGUgbmV3IG1hcHBpbmdzLgoKIyMgVHJvdWJsZXNob290aW5nCgojIyMgRXJyb3I6IGBVbnJlY29nbml6ZWRLd2FyZ3NFcnJvcjogZmllbGRzYAoKLSAqKkNhdXNlKio6IFRoZSBwYXJhbWV0ZXIgbmFtZSBgZmllbGRzW11gIG1heSBjYXVzZSBpc3N1ZXMgd2l0aCBzZXJpYWxpemF0aW9uLgotICoqU29sdXRpb24qKjoKICAtIFRoZSBzY3JpcHQgaGFzIGJlZW4gdXBkYXRlZCB0byB1c2UgYGZpZWxkc2AgaW5zdGVhZCBvZiBgZmllbGRzW11gLgogIC0gRW5zdXJlIHlvdSBhcmUgdXNpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBzY3JpcHQuCiAgLSBSZWdlbmVyYXRlIGFuZCB1cGRhdGUgdGhlIHNjaGVtYSBpbiB5b3VyIEN1c3RvbSBHUFQgY29uZmlndXJhdGlvbi4KCiMjIyBBc3Npc3RhbnQgTm90IFJlc29sdmluZyBMaW5rZWQgUmVjb3JkcwoKLSAqKkNhdXNlKio6IFRoZSBhc3Npc3RhbnQgbWF5IG5vdCBiZSBwcm9ncmFtbWVkIHRvIHV0aWxpemUgdGhlIGB4LWxpbmtlZFRhYmxlYCBwcm9wZXJ0eS4KLSAqKlNvbHV0aW9uKio6CiAgLSBVcGRhdGUgdGhlIGFzc2lzdGFudCdzIGluc3RydWN0aW9ucyB0byBoYW5kbGUgbGlua2VkIHJlY29yZHMgdXNpbmcgdGhlIGB4LWxpbmtlZFRhYmxlYCBtZXRhZGF0YSAoc2VlIGBpbnN0cnVjdGlvbnMudHh0YCkuCiAgLSBFbnN1cmUgaXQgbWFrZXMgYWRkaXRpb25hbCBBUEkgY2FsbHMgdG8gZmV0Y2ggcmVsYXRlZCByZWNvcmRzIGFzIG5lZWRlZC4KCiMjIyBVbm1hcHBlZCBGaWVsZCBUeXBlcyBXYXJuaW5nCgotICoqQ2F1c2UqKjogTmV3IG9yIGN1c3RvbSBmaWVsZCB0eXBlcyBub3QgZGVmaW5lZCBpbiB0aGUgc2NyaXB0LgotICoqU29sdXRpb24qKjoKICAtIEFkZCBtYXBwaW5ncyBmb3IgdGhlc2UgZmllbGQgdHlwZXMgaW4gdGhlIGBBSVJUQUJMRV9UT19PUEVOQVBJX0RFRlNgIG9iamVjdC4KICAtIElmIHVuc3VyZSwgbWFwIHRoZW0gdG8gYCd0eXBlJzogJ3N0cmluZydgIGFzIGEgZGVmYXVsdC4KICAtIFJlcnVuIHRoZSBzY3JpcHQgYWZ0ZXIgbWFraW5nIGNoYW5nZXMuCgojIyBDb250cmlidXRpbmcKCi0gSWYgeW91IG1ha2UgaW1wcm92ZW1lbnRzIHRvIHRoZSBzY3JpcHQgb3IgZW5jb3VudGVyIGlzc3VlcywgY29uc2lkZXIgc2hhcmluZyB5b3VyIHVwZGF0ZXMuCi0gQ29udHJpYnV0aW9ucyBjYW4gaGVscCBvdGhlcnMgd2hvIGFyZSB1c2luZyBzaW1pbGFyIHNldHVwcy4KLSBGZWVsIGZyZWUgdG8gZm9yayB0aGUgc2NyaXB0IG9yIHN1Ym1pdCBwdWxsIHJlcXVlc3RzIHdpdGggZW5oYW5jZW1lbnRzLgoKIyMgTGljZW5zZQoKVGhpcyBzY3JpcHQgaXMgcHJvdmlkZWQgYXMtaXMgd2l0aG91dCBhbnkgd2FycmFudHkuIFVzZSBpdCBhdCB5b3VyIG93biByaXNrLiBNYWtlIHN1cmUgdG8gY29tcGx5IHdpdGggQWlydGFibGUncyBBUEkgdXNhZ2UgcG9saWNpZXMgYW5kIE9wZW5BSSdzIHRlcm1zIG9mIHNlcnZpY2Ugd2hlbiB1c2luZyB0aGUgc2NyaXB0IGFuZCBpbnRlZ3JhdGluZyBpdCB3aXRoIEdQVCBhc3Npc3RhbnRzLgoKLS0tCgoqKk5vdGUqKjogQWx3YXlzIGVuc3VyZSB0aGF0IHlvdSBoYW5kbGUgc2Vuc2l0aXZlIGRhdGEgc2VjdXJlbHkgYW5kIGNvbXBseSB3aXRoIGFueSByZWxldmFudCBkYXRhIHByb3RlY3Rpb24gcmVndWxhdGlvbnMgd2hlbiBleHBvc2luZyB5b3VyIEFpcnRhYmxlIGRhdGEgdG8gZXh0ZXJuYWwgc3lzdGVtcy4KCi0tLQoKKipEaXNjbGFpbWVyKio6IFRoZSBpbnN0cnVjdGlvbnMgcHJvdmlkZWQgaW4gdGhpcyBSRUFETUUgYXJlIG1lYW50IGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIGFuZCB0byBhaWQgaW4gc2V0dGluZyB1cCB0aGUgc2NyaXB0IGFuZCBHUFQgYXNzaXN0YW50LiBPcGVuQUkncyBwb2xpY2llcyBhbmQgQWlydGFibGUncyB0ZXJtcyBtYXkgY2hhbmdlIG92ZXIgdGltZTsgYWx3YXlzIHJlZmVyIHRvIHRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIGZvciB0aGUgbW9zdCBjdXJyZW50IGluZm9ybWF0aW9uLgo= readmeEtag: '"0570379ca51b9bd28e356d5f0c058cd45a8376c0"' readmeLastModified: Thu, 26 Sep 2024 15:50:13 GMT repositoryId: 863414293 description: >- A script that generates an OpenAPI 3.1.0 schema based on your Airtable base structure. This schema is designed for use with Custom GPT (ChatGPT) Actions, allowing a GPT assistant to interact with your Airtable data via the Airtable API. created: '2024-09-26T08:55:04Z' updated: '2025-11-03T00:55:17Z' language: JavaScript archived: false stars: 12 watchers: 2 forks: 1 owner: yaniv-golan logo: https://avatars.githubusercontent.com/u/5079117?v=4 license: MIT repoEtag: '"ac7780326bba45e1acd3f0b75fa93bdff1c3de0a1393c1bf9e95bb27380a8a74"' repoLastModified: Mon, 03 Nov 2025 00:55:17 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/hiroyoshii/go-aas-proxy v3: true id: dc073f77dba2b9ffe063aa18b4df40a5 repositoryMetadata: base64Readme: >- ICA8ZGl2IGFsaWduPSJjZW50ZXIiPgogIDxoMT5nby1hYXMtcHJveHk8L2gxPgogIDxwPgogIEFzc2V0IEFkbWluaXN0cmF0aW9uIFNoZWxsKEFBUykgcHJveHkgZm9yIFJEQk1TIGJhY2tlbmQKICA8L3A+CgogIFshW0J1aWxkXShodHRwczovL2dpdGh1Yi5jb20vaGlyb3lvc2hpaS9nby1hYXMtcHJveHkvYWN0aW9ucy93b3JrZmxvd3MvZ29fYXBwbGljYXRpb24ueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9oaXJveW9zaGlpL2dvLWFhcy1wcm94eS9hY3Rpb25zL3dvcmtmbG93cy9nb19hcHBsaWNhdGlvbi55bWwpCiAgWyFbQ29kZVFMXShodHRwczovL2dpdGh1Yi5jb20vaGlyb3lvc2hpaS9nby1hYXMtcHJveHkvYWN0aW9ucy93b3JrZmxvd3MvY29kZXFsLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vaGlyb3lvc2hpaS9nby1hYXMtcHJveHkvYWN0aW9ucy93b3JrZmxvd3MvY29kZXFsLnltbCkKICBbIVtPcGVuU1NGIFNjb3JlY2FyZF0oaHR0cHM6Ly9hcGkuc2VjdXJpdHlzY29yZWNhcmRzLmRldi9wcm9qZWN0cy9naXRodWIuY29tL2hpcm95b3NoaWkvZ28tYWFzLXByb3h5L2JhZGdlKV0oaHR0cHM6Ly9zZWN1cml0eXNjb3JlY2FyZHMuZGV2L3ZpZXdlci8/dXJpPWdpdGh1Yi5jb20vaGlyb3lvc2hpaS9nby1hYXMtcHJveHkpCiAgWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL2hpcm95b3NoaWkvZ28tYWFzLXByb3h5KV0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL2hpcm95b3NoaWkvZ28tYWFzLXByb3h5KQogIFshW09wZW5TU0YgQmVzdCBQcmFjdGljZXNdKGh0dHBzOi8vd3d3LmJlc3RwcmFjdGljZXMuZGV2L3Byb2plY3RzLzc3OTUvYmFkZ2UpXShodHRwczovL3d3dy5iZXN0cHJhY3RpY2VzLmRldi9wcm9qZWN0cy83Nzk1KQogICFbR2l0SHViIGdvLm1vZCBHbyB2ZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9nby1tb2QvZ28tdmVyc2lvbi9oaXJveW9zaGlpL2dvLWFhcy1wcm94eSkKICBbIVtMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL2hpcm95b3NoaWkvZ28tYWFzLXByb3h5KV0oTElDRU5TRSkKCiAgPC9kaXY+CgoKICAjIyBBYm91dAoKICBUaGUgZ28tYWFzLXByb3h5IGlzIGFzc2V0IGFkbWluaXN0cmF0aW9uIHNoZWxsKGFhcykgc2VydmVyIHdoaWNoIGlzIGltcGxlbWVudGVkIGJ5IGdvIGFuZCBwcm94eSB0byBSREJNUyBiYWNrZW5kLiAqKm5vdCByZWFkeSBmb3IgcHJvZHVjdGlvbioqLgoKICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGluc3BpcmVkIGZyb20gImFhcy1wcm94eSIgaW4gW1JlcHJlc2VudGluZyB0aGUgVmlydHVhbDogVXNpbmcgQUFTIHRvIEV4cG9zZSBEaWdpdGFsQXNzZXRzXShodHRwczovL2NldXItd3Mub3JnL1ZvbC0zMjkxL3BhcGVyNS5wZGYpIHBhcGVyLgogICFbYWFzLXByb3h5XSguL2Fzc2V0cy9hYXMtcHJveHkucG5nKQoKICAiYWFzLXByb3h5IiBtZWFucyB0aGF0IHN1Ym1vZGVscyBhcmUgY29uZmlndXJlZCBieSByZWZlcmVuY2luZyB0aGUgUkRCIG9mIG90aGVyIGFwcGxpY2F0aW9ucy4KICBUaGVyZWZvcmUsIG9ubHkgdGhlIEFBUyBhbmQgdGhlIEFBUy1TdWJtb2RlbCByZWxhdGlvbnNoaXAgY2FuIGJlIGNyZWF0ZWQsIHVwZGF0ZWQsIG9yIGRlbGV0ZWQsIHdoaWxlIHN1Ym1vZGVscyBhcmUgcmVhZC1vbmx5LgoKICAjIyBGZWF0dXJlcwogIC0gT3BlbiBBUEkgRW5kcG9pbnRzIGNvbXBhdGlibGUgd2l0aCBbQmFzeXggQVBJXShodHRwczovL2FwcC5zd2FnZ2VyaHViLmNvbS9hcGlzL0JhU3l4L2Jhc3l4X2Fzc2V0X2FkbWluaXN0cmF0aW9uX3NoZWxsX2h0dHBfcmVzdF9hcGkvdjEpLiBCdXQgb25seSBzdXBwb3J0cyBmb2xsb3dpbmcgZW5kcG9pbnRzOgogICAgLSA6d2hpdGVfY2hlY2tfbWFyazogL3NoZWxsczogR0VUCiAgICAtIDp3aGl0ZV9jaGVja19tYXJrOiAvc2hlbGxzL3thYXNJZH06IEdFVC9QVVQvREVMRVRFCiAgICAtIDp3aGl0ZV9jaGVja19tYXJrOiAvc2hlbGxzL3thYXNJZH0vYWFzL3N1Ym1vZGVsczogR0VUCiAgICAtIDp3aGl0ZV9jaGVja19tYXJrOiAvc2hlbGxzL3thYXNJZH0vYWFzL3N1Ym1vZGVscy97c3VibW9kZWxJZFNob3J0fTogR0VUCiAgICAtIDp3aGl0ZV9jaGVja19tYXJrOiAvc2hlbGxzL3thYXNJZH0vYWFzL3N1Ym1vZGVscy97c3VibW9kZWxJZFNob3J0fS9zdWJtb2RlbC9zdWJtb2RlbEVsZW1lbnRzOiBHRVQKICAgIC0gOndoaXRlX2NoZWNrX21hcms6IC9zaGVsbHMve2Fhc0lkfS9hYXMvc3VibW9kZWxzL3tzdWJtb2RlbElkU2hvcnR9L3N1Ym1vZGVsL3ZhbHVlczogR0VUCiAgICAtIDp3YXJuaW5nOgkgL3NoZWxscy97YWFzSWR9L2Fhcy9zdWJtb2RlbHMve3N1Ym1vZGVsSWRTaG9ydH06IFBVVChvbmx5IHJlbGF0aW9uIHRvIGFhcykKICAtIFN1cHBvcnQgbXVsdGlwbGUgUkRCTVMgbG9jYXRpb25zIGFuZCB0eXBlcyAoUG9zdGdyZXMsIE15U1FMLCBPcmFjbGUpCgogIFVuc3Vwb3J0ZWQ6CiAgLSA6eDogY3JlYXRlL3VwZGF0ZS9kZWxldGUgc3VibW9kZWxzIGFuZCBzdWJtb2RlbCBlbGVtZW50cwogIC0gOng6IEVuZHBvaW50cyBjb250YWluaW5nIFx7c2VJZFNob3J0UGF0aFx9CiAgLSA6eDogSW52b2NhdGlvbiBFbmRwb2ludHMKCiAgIyMgSW1wbGVtZW50YXRpb24gT3ZlcnZpZXcKICAhW2FyY2hpdGVjdHVyZV0oLi9hc3NldHMvYXJjaGl0ZWN0dXJlLmRyYXdpby5wbmcpCiAgLSBjb25maWd1cmFibGl0eSBmb3Igc3VibW9kZWwKICAgIC0gcmVmZXJlbmNlIGRhdGFiYXNlcyBwZXIgc2VtYW50aWNJRCBvZiBzdWJtb2RlbAogICAgLSBxdWVyeSBmb3IgZGF0YWJhc2VzCiAgICAtIHJlc3BvbnNlIGpzb24gY29udGVudCBmb3Igc3VibW9kZWxzCgogICMjIEhvdyB0byBydW4KICAxLiBzY3JlYXRlIGZvbGxvd2luZyBzdWJtb2RlbCBjb25maWd1cmF0aW9uIGZpbGUuCiAgICAtIHRoZXJlIGFyZSBtdWx0aXBsZSByZWZlcmVuY2UgZGF0YWJhc2UgYW5kIHF1ZXJ5IHRlbXBsYXRlcy4KICAgIC0gU1FMIHF1ZXJ5IHRlbXBsYXRlIGhhcyByZXF1ZXN0ZWQgcGF0aCBwYXJhbWV0ZXIgdmFyaWFibGVzOiAuQWFzSUQsIC5TdWJtb2RlbElEU2hvcnQuCiAgICAtIHJlc3BvbnNlIHRlbXBsYXRlIGhhcyBxdWVyeSByZXN1bHRzIHZhcmlhYmxlczogYC48dGVtcGxhdGUgZmlsZSBuYW1lPi5SZXN1bHRzLjxjb2x1bW4gbmFtZT5gIGFuZCBgLjx0ZW1wbGF0ZSBmaWxlIG5hbWU+LkNvbHVtbnMuPGNvbHVtbiBuYW1lPmAuCiAgICAgIC0gZm9yIGV4YW1wbGUsIHRlbXBsYXRlIGZpbGUgcGF0aCBpcyBzYW1wbGUvcXVlcnkuc3FsIGFuZCBjb2x1bW4gbmFtZSBpcyBzYW1wbGUsIHZhcmlhYmxlcyBhcmUgYC5RdWVyeS5SZXN1bHRzLlNhbXBsZWAgYW5kIGAuUXVlcnkuQ29sdW1ucy5TYW1wbGVgCiAgYGBgeWFtbAogIHN1Ym1vZGVsczoKICAgIC0gc2VtYW50aWNJRDogIjxzdWJtb2RlbCBzZW1hbnRpYyBJRD4iCiAgICAgIHF1ZXJ5VGVtcGxhdGVzOgogICAgICAgIC0gcGF0aDogIjxTUUwgcXVlcnkgZmlsZSBwYXRoIChnbyB0ZW1wbGF0ZSk+IgogICAgICAgICAgZGJOYW1lOiAiPGRhdGFiYXNlIG5hbWUgZm9yIHF1ZXJ5IGV4ZWN1dGlvbj4iCiAgICAgIHJlc3BvbnNlVGVtcGxhdGVQYXRoOiAiPHN1Ym1vZGVsIGpzb24gdGVtcGxhdGUgZmlsZSBwYXRoPiIKICBkYXRhYmFzZXM6CiAgICAtIG5hbWU6ICI8ZGF0YWJhc2UgbmFtZSByZWZlcmVuY2VkIGJ5IHN1Ym1vZGVscy5xdWVyeVRlbXBsYXRlcy5kYk5hbWU+IgogICAgICBkYlR5cGU6IDx0eXBlIG9mIFJEQk1TOiBwb3N0Z3JlcywgbXlzcWwgb3Igb3JhY2xlPgogICAgICBkYkNvbmZpZzoKICAgICAgICBob3N0OiA8ZGF0YWJhc2UgaG9zdD4KICAgICAgICBwb3J0OiA8ZGF0YWJhc2UgcG9ydCBudW1iZXI+CiAgICAgICAgdXNlcjogIjxkYXRhYmFzZSB1c2VyPiIKICAgICAgICBwYXNzd29yZDogIjxkYXRhYmFzZSBwYXNzd29yZD4iCiAgICAgICAgZGF0YWJhc2U6ICI8ZGF0YWJhc2UgbmFtZT4iCiAgICAgICAgc3NsbW9kZTogIjxzc2xtb2RlIGlmIGRiVHlwZSBpcyBwb3N0Z3Jlcz4iCiAgICAgICAgb3B0aW9uczogIjxkYXRhYmFzZSBjb25uZWN0aW9uIG9wdGlvbnM+IgogIGBgYAogIDIuIHNldCB1cCBwb3N0Z3Jlc3FsIGRhdGFiYXNlIGZvciBhYXMgYW5kIGFzc2V0CiAgMy4gZG9ja2VyIHJ1bgogIGBgYAogIGRvY2tlciBydW4gXAogIC1lIFNVQk1PREVMX0NPTkZJR19QQVRIPTxjb25maWd1cmF0aW9uIGZpbGUgcGF0aCBpbiBwcm9jZWR1cmUgMS4+IFwKICAtZSBBQVNfVEFCTEVTX0NSRUFURUQ9dHJ1ZSBcCiAgLWUgQUFTX0RCX0hPU1Q9PGRhdGFiYXNlIGhvc3QgbmFtZSBpbiBwcm9jZWR1cmUgMi4+IFwKICBoaXJveW9zaGlpL2dvLWFhcy1wcm94eTpsYXRlc3QKICBgYGAKCiAgIyMjIEV4YW1wbGUKICAqIHJ1biB3aXRoIHNhbXBsZSBkYXRhIChydW4gZG9ja2VyIGNvbXBvc2UgYW5kIGNyZWF0ZSBzYW1wbGUgZGV0YSkKICBgYGAKICAuL2UyZS9zY2VuYXJpb19zZXR1cC5zaAogIGBgYAogICogU3VibW9kZWwgY29uZmlndXJhdGlvbnMgY2FuIGJlIGZvdW5kIGluIHRoZSAuL2UyZS9hcHBsaWNhdGlvbi9jb25maWdzIGRpcmVjdG9yeS4KCiAgIyMjIEVudmlyb25tZW50IFZhcmlhYmxlcwogIHwgdmFyaWFibGVzICAgICAgICAgICAgfCBvdmVydmlldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzYW1wbGUgICAgICAgICAgICAgICB8IHJlcXVpcmVkICAgICAgICAgICAgICAgIHwgCiAgfCAtLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAKICB8IFNVQk1PREVMX0NPTkZJR19QQVRIIHwgc3VibW9kZWwgY29uZmlndXJhdGlvbiBmaWxlIHBhdGguPGJyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3VibW9kZWxfY29uZmlnLnlhbWwgfCB5ZXMgICAgICAgICAgICAgICAgICAgICB8IAogIHwgQUFTX1RBQkxFU19DUkVBVEVEICAgfCBEREwgc3RvcmVkIEFBUyBkYXRhIGlzIGNyZWF0ZWQgb3Igbm90IHdoZW4gZ28tYWFzLXByb3h5IGlzIHN0YXJ0ZWQuICAgfCB0cnVlICAgICAgICAgICAgICAgICB8IG5vIChkZWZhdWx0OiB0cnVlKSAgICAgIHwgCiAgfCBBQVNfREJfSE9TVCAgICAgICAgICB8IFBvc3RncmVzcWwgZGF0YWJhc2UgaG9zdCBuYW1lIGZvciBBQVMgc3RvcmVkICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyNy4wLjAuMSAgICAgICAgICAgIHwgbm8gKGRlZmF1bHQ6IDEyNy4wLjAuMSkgfCAKICB8IEFBU19EQl9QT1JUICAgICAgICAgIHwgUG9zdGdyZXNxbCBkYXRhYmFzZSBwb3J0IG51bWJlciBmb3IgQUFTIHN0b3JlZCAgICAgICAgICAgICAgICAgICAgICAgIHwgNTQzMiAgICAgICAgICAgICAgICAgfCBubyAoZGVmYXVsdDogNTQzMikgICAgICB8IAogIHwgQUFTX0RCX1VTRVIgICAgICAgICAgfCBQb3N0Z3Jlc3FsIGRhdGFiYXNlIHVzZXIgZm9yIEFBUyBzdG9yZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwb3N0Z3JlcyAgICAgICAgICAgICB8IG5vIChkZWZhdWx0OiBwb3N0Z3JlcykgIHwgCiAgfCBBQVNfREJfUEFTU1dPUkQgICAgICB8IFBvc3RncmVzcWwgZGF0YWJhc2UgcGFzc3dvcmQgZm9yIEFBUyBzdG9yZWQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhc3N3b3JkICAgICAgICAgICAgIHwgbm8gKGRlZmF1bHQ6IHBhc3N3b3JkKSAgfCAKICB8IEFBU19EQl9EQVRBQkFTRSAgICAgIHwgUG9zdGdyZXNxbCBkYXRhYmFzZSBuYW1lIGZvciBBQVMgc3RvcmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2FtcGxlICAgICAgICAgICAgICAgfCBubyAoZGVmYXVsdDogc2FtcGxlKSAgICB8IAogIHwgQUFTX0RCX1NTTF9NT0RFICAgICAgfCBQb3N0Z3Jlc3FsIGRhdGFiYXNlIHNzbG1vZGUgZm9yIEFBUyBzdG9yZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXNhYmxlICAgICAgICAgICAgICB8IG5vIChkZWZhdWx0OiBkaXNhYmxlKSAgIHwgCgogICMjIExpY2Vuc2UKICBBcGFjaGUgTGljZW5zZSAyLjAsIHNlZSBbTElDRU5TRV0oLi9MSUNFTlNFKS4K readmeEtag: '"6ab2233e54b28e6c1982e82ae1173ec28ab9c5eb"' readmeLastModified: Tue, 22 Oct 2024 18:11:30 GMT repositoryId: 672491411 description: Asset Administration Shell(AAS) proxy for RDBMS backend created: '2023-07-30T09:12:05Z' updated: '2025-10-04T01:51:39Z' language: Go archived: false stars: 3 watchers: 1 forks: 1 owner: hiroyoshii logo: https://avatars.githubusercontent.com/u/40140638?v=4 license: Apache-2.0 repoEtag: '"db28435294fba1ae389a1b6052a35009939d82529d59416b3397f6f29cba5ef3"' repoLastModified: Sat, 04 Oct 2025 01:51:39 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/membrane-php/membrane-laravel v3: true id: 97d0ee9099351cdd23940bde3ad0428f repositoryMetadata: base64Readme: >- IyBNZW1icmFuZS1MYXJhdmVsCgpJbnRlZ3JhdGVzIFtNZW1icmFuZS1jb3JlXShodHRwczovL2dpdGh1Yi5jb20vbWVtYnJhbmUtcGhwL21lbWJyYW5lLWNvcmUpIHdpdGggW0xhcmF2ZWxdKGh0dHBzOi8vbGFyYXZlbC5jb20vKS4KCiMjIEFib3V0CgpNaWRkbGV3YXJlIHRoYXQgdmFsaWRhdGVzIHRoZSByYXcgdXNlciBpbnB1dCBmcm9tIGluY29taW5nIEhUVFAgcmVxdWVzdHMgYWdhaW5zdCB5b3VyIE9wZW5BUEkgc3BlYy4gIApBZGRzIGEgYE1lbWJyYW5lXFJlc3VsdFxSZXN1bHRgIG9udG8geW91ciBgSWxsdW1pbmF0ZVxDb250cmFjdHNcQ29udGFpbmVyXENvbnRhaW5lcmAuICAKVGhlIFJlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGNsZWFuZWQgdXAgZGF0YSBhbmQgYWRkaXRpb25hbCBkZXRhaWxzIGluIHRoZSBjYXNlIG9mIGludmFsaWQgcmVxdWVzdHMuCgojIyBTZXR1cAoKIyMjIEluc3RhbGxhdGlvbgoKUmVxdWlyZSB0aGUgYG1lbWJyYW5lL2xhcmF2ZWxgIHBhY2thZ2UgaW4geW91ciBjb21wb3Nlci5qc29uIGFuZCB1cGRhdGUgeW91ciBkZXBlbmRlbmNpZXM6CgpgYGBzaGVsbApjb21wb3NlciByZXF1aXJlIG1lbWJyYW5lL2xhcmF2ZWwKYGBgCgojIyMgQ29uZmlndXJhdGlvbgoKVGhlIGRlZmF1bHRzIGFyZSBzZXQgaW4gYGNvbmZpZy9tZW1icmFuZS5waHBgLiAgClRvIHB1Ymxpc2ggYSBjb3B5IHRvIHlvdXIgb3duIGNvbmZpZywgdXNlIHRoZSBmb2xsb3dpbmc6CgpgYGBzaGVsbApwaHAgYXJ0aXNhbiB2ZW5kb3I6cHVibGlzaCAtLXRhZz0ibWVtYnJhbmUiCmBgYAoKIyMjIyBBUEkgU3BlYyBGaWxlCgpUaGlzIGlzIHRoZSAqKmFic29sdXRlKiogZmlsZXBhdGggb2YgeW91ciBPcGVuQVBJLgoKQnkgZGVmYXVsdCwgaXQgbG9va3MgZm9yIGA8eW91ci1wcm9qZWN0LWRpcmVjdG9yeT4vYXBpL29wZW5hcGkueWFtbGAuCgojIyMjIFZhbGlkYXRpb24gRXJyb3IgUmVzcG9uc2UgQ29kZQoKU2V0IGAndmFsaWRhdGlvbl9lcnJvcl9yZXNwb25zZV9jb2RlJ2AgdG8gdGhlICoqaW50ZWdlcioqIHZhbHVlIG9mIHRoZSBkZWZhdWx0IGh0dHAgc3RhdHVzIGNvZGUgZm9yIGludmFsaWQgcmVzdWx0cy4KCiMjIyMgVmFsaWRhdGlvbiBFcnJvciBSZXNwb25zZSBUeXBlCgpTZXQgYCd2YWxpZGF0aW9uX2Vycm9yX3Jlc3BvbnNlX3R5cGUnYCB0byB0aGUgKipzdHJpbmcqKiB2YWx1ZSBvZiB0aGUgZGVmYXVsdCByZXNwb25zZSB0eXBlIGZvciBBUEkgcHJvYmxlbXMuCgojIyMjIEFQSSBQcm9ibGVtIFJlc3BvbnNlIFR5cGVzCgpXaXRoaW4gdGhlIGAnYXBpX3Byb2JsZW1fcmVzcG9uc2VfdHlwZXMnYCBhcnJheToKU2V0ICoqaW50ZWdlcioqIGh0dHAgc3RhdHVzIGNvZGUgPT4gKipzdHJpbmcqKiByZXNwb25zZSB0eXBlIHBhaXJzLiAgClRoZXNlIGFyZSBtb3JlIHNwZWNpZmljIGFuZCB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHZhbHVlIHNldCBieSBgJ3ZhbGlkYXRpb25fZXJyb3JfcmVzcG9uc2VfdHlwZSdgCgojIyBVc2FnZQoKIyMjIFJlcXVlc3RzCgpUaGUgYFxNZW1icmFuZVxMYXJhdmVsXE1pZGRsZXdhcmVcUmVxdWVzdFZhbGlkYXRpb25gIG1pZGRsZXdhcmUgd2lsbCB2YWxpZGF0ZSBvciBpbnZhbGlkYXRlIGluY29taW5nIHJlcXVlc3RzIGFuZCBsZXQKeW91IGRlY2lkZQpob3cgdG8gcmVhY3QuCllvdSBjYW4gZm9sbG93IGl0IHdpdGggeW91ciBvd24gY3VzdG9tIG1pZGRsZXdhcmUgb3Igd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyBidWlsdC1pbiBvcHRpb25zIHRvIHByb2R1Y2UgYW4gZXJyb3IKcmVzcG9uc2U6CgojIyMgUmVzcG9uc2VzCgpBbnkgcmVzcG9uc2UgbWlkZGxld2FyZSBNVVNUIGZvbGxvdyB0aGUgYFJlcXVlc3RWYWxpZGF0aW9uYCBtaWRkbGV3YXJlIGFzIGl0IHJlcXVpcmVzIHRoZSBgcmVzdWx0YCBvYmplY3QgYmVpbmcgYWRkZWQgdG8KeW91ciBjb250YWluZXIuICAKVGhlc2UgbWlkZGxld2FyZXMgd2lsbCBjaGVjayB3aGV0aGVyIHRoZSByZXF1ZXN0IGhhcyBwYXNzZWQgb3IgZmFpbGVkIHZhbGlkYXRpb24uICAKSW52YWxpZCByZXF1ZXN0cyB3aWxsIHJldHVybiBhbiBhcHByb3ByaWF0ZSByZXNwb25zZSBkZXRhaWxpbmcgdGhlIHJlYXNvbnMgdGhlIHJlcXVlc3Qgd2FzIGludmFsaWQuCgpZb3VyIHJlc3BvbnNlIGNhbiBiZSBpbiBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtYXRzLgoKIyMjIyBGbGF0IEpzb24KCmBcTWVtYnJhbmVcTGFyYXZlbFxNaWRkbGV3YXJlXFJlc3BvbnNlSnNvbkZsYXRgCgpgYGBqc29uCnsKICAgICJlcnJvcnMiOnsKICAgICAgICAicGV0LT5pZCI6WyJtdXN0IGJlIGFuIGludGVnZXIiXSwKICAgICAgICAicGV0IjpbIm5hbWUgaXMgYSByZXF1aXJlZCBmaWVsZCJdCiAgICB9LAogICAgInRpdGxlIjoiUmVxdWVzdCBwYXlsb2FkIGZhaWxlZCB2YWxpZGF0aW9uIiwKICAgICJ0eXBlIjoiYWJvdXQ6YmxhbmsiLAogICAgInN0YXR1cyI6NDAwCn0KYGBgCgojIyMjIE5lc3RlZCBKc29uCgpgXE1lbWJyYW5lXExhcmF2ZWxcTWlkZGxld2FyZVxSZXNwb25zZUpzb25OZXN0ZWRgCgpgYGBqc29uCnsKICAgICJlcnJvcnMiOnsKICAgICAgICAiZXJyb3JzIjpbXSwKICAgICAgICAiZmllbGRzIjp7CiAgICAgICAgICAgICJwZXQiOnsKICAgICAgICAgICAgICAgICJlcnJvcnMiOlsKICAgICAgICAgICAgICAgICAgICAibmFtZSBpcyBhIHJlcXVpcmVkIGZpZWxkIgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJmaWVsZHMiOnsKICAgICAgICAgICAgICAgICAgICAiaWQiOnsKICAgICAgICAgICAgICAgICAgICAgICAgImVycm9ycyI6WwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYW4gaW50ZWdlciIKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkcyI6W10KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LAogICAgInRpdGxlIjoiUmVxdWVzdCBwYXlsb2FkIGZhaWxlZCB2YWxpZGF0aW9uIiwKICAgICJ0eXBlIjoiYWJvdXQ6YmxhbmsiLAogICAgInN0YXR1cyI6NDAwCn0KYGBgCgojIyMgR2xvYmFsIFVzYWdlCgpUbyB1c2UgYW55IG9mIHRoZSBhYm92ZSBtaWRkbGV3YXJlcyBvbiBhbGwgcm91dGVzLCBnbyBpbnRvIHlvdXIgYGFwcC9IdHRwL0tlcm5lbC5waHBgIGFuZCBhZGQgdGhlbSB0byB5b3VyIGBtaWRkbGV3YXJlYAphcnJheS4KCkZvciBleGFtcGxlOgoKYGBgcGhwCnByb3RlY3RlZCAkbWlkZGxld2FyZSA9IFsKICBcTWVtYnJhbmVcTGFyYXZlbFxNaWRkbGV3YXJlXFJlcXVlc3RWYWxpZGF0aW9uOjpjbGFzcywKICBcTWVtYnJhbmVcTGFyYXZlbFxNaWRkbGV3YXJlXFJlc3BvbnNlSnNvbkZsYXQ6OmNsYXNzCiAgLy8gLi4uCl07CmBgYAoKSW4gTGFyYXZlbCAxMS54LzEyLnggYGFwcC9IdHRwS2VybmVsLnBocGAgaGFzIGJlZW4gcmVtb3ZlZCwgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gZ29lcyBpbnRvIGBib290c3RyYXAvYXBwLnBocGA6CgpGb3IgZXhhbXBsZToKCmBgYHBocApyZXR1cm4gQXBwbGljYXRpb246OmNvbmZpZ3VyZShiYXNlUGF0aDogZGlybmFtZShfX0RJUl9fKSkKICAgIC8vIC4uLgogICAgLT53aXRoTWlkZGxld2FyZShmdW5jdGlvbiAoTWlkZGxld2FyZSAkbWlkZGxld2FyZSkgewogICAgICAgIC8vIC4uLgogICAgICAgICRtaWRkbGV3YXJlLT5hcHBlbmRUb0dyb3VwKCdhcGknLCBbCiAgICAgICAgICAgIFxNZW1icmFuZVxMYXJhdmVsXE1pZGRsZXdhcmVcUmVxdWVzdFZhbGlkYXRpb246OmNsYXNzLAogICAgICAgICAgICBcTWVtYnJhbmVcTGFyYXZlbFxNaWRkbGV3YXJlXFJlc3BvbnNlSnNvbkZsYXQ6OmNsYXNzLAogICAgICAgIF0pOwogICAgfSkKICAgIC8vIC4uLgogICAgLT5jcmVhdGUoKTsKYGBgCg== readmeEtag: '"afc2f469137e6489d7c17a821221a64f0fda4b99"' readmeLastModified: Mon, 30 Jun 2025 13:28:15 GMT repositoryId: 574444174 description: Laravel integration for Membrane validation library. created: '2022-12-05T10:25:52Z' updated: '2025-07-14T07:43:12Z' language: PHP archived: false stars: 4 watchers: 2 forks: 3 owner: membrane-php logo: https://avatars.githubusercontent.com/u/104306108?v=4 license: NOASSERTION repoEtag: '"b5572804e61b396250a01ad7b33762d81b5437b102981d9db65c27e2ff708795"' repoLastModified: Mon, 14 Jul 2025 07:43:12 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/leo-lem/studentscrollapi v3: true id: 9d85e4b5c6f3f2586fc775819a7ac60f repositoryMetadata: base64Readme: >- IyBTdHVkZW50U2Nyb2xsIEFQSQoKWyFbQ0kvQ0RdKGh0dHBzOi8vZ2l0aHViLmNvbS9MZW8tTGVtL1N0dWRlbnRTY3JvbGxBUEkvYWN0aW9ucy93b3JrZmxvd3MvY2ljZC55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL0xlby1MZW0vU3R1ZGVudFNjcm9sbEFQSS9hY3Rpb25zL3dvcmtmbG93cy9jaWNkLnltbCkKClRoaXMgaXMgdGhlIFJFU1QgQVBJIGJlaGluZCB0aGUgU3R1ZGVudFNjcm9sbCBhcHAgKFtPcGVuQVBJIHNwZWNzXShodHRwczovL3N0dWRlbnRzY3JvbGwubmV0L2FwaS92MS9kb2NzL3N3YWdnZXIpKS4KCkhlcmUgd2UgcHJvdmlkZSBvdXIgW1N0dWRlbnRTY3JvbGwgd2ViIGFwcF0oaHR0cHM6Ly9naXRodWIuY29tL2xlby1sZW0vc3R1ZGVudHNjcm9sbGFwcCkgd2l0aCBpdHMgZnVuY3Rpb25hbGl0eS4KClsvYXBpL3YyXShodHRwczovL3N0dWRlbnRzY3JvbGwubmV0L2FwaS92Mi9kb2NzL3N3YWdnZXItdWkvaW5kZXguaHRtbCkgVGhlIFJFU1QgQVBJICh2MikgaXMgZGVzaWduZWQgdG8gYmUgYXMgc2ltcGxlIGFuZCBpbnR1aXRpdmUgYXMgcG9zc2libGUsIHdoaWxzdCBwcm92aWRpbmcgYWxsIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHk6CgotIFsvYWNjb3VudF0oaHR0cHM6Ly9zdHVkZW50c2Nyb2xsLm5ldC9hcGkvdjIvZG9jcy9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwjL2FjY291bnQpIFRoaXMgZW5kcG9pbnQgZGVzY3JpYmVzIG91ciBhY2NvdW50IGZlYXR1cmUuIEhlcmUgd2UgaGFuZGxlIGV2ZXJ5dGhpbmcgZnJvbSBzaWduIHVwLCB0aHJvdWdoIHNpZ24gaW4sIHRvIHVwZGF0aW5nIGNyZWRlbnRpYWxzIChmb3Jnb3R0ZW4gcGFzc3dvcmQsIGV0Yy4pIGFuZCBkZWxldGluZyB5b3VyIGFjY291bnQuCgogIC0gWy9zZXR0aW5nc10oaHR0cHM6Ly9zdHVkZW50c2Nyb2xsLm5ldC9hcGkvdjIvZG9jcy9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwjL3NldHRpbmdzKSBGdXJ0aGVybW9yZSwgeW91IGNhbiBpbmRpdmlkdWFsaXNlIHlvdXIgYWNjb3VudCBieSB1cGRhdGluZyB5b3VyIHNldHRpbmdzLgoKLSBbL3N0dWRlbnRzXShodHRwczovL3N0dWRlbnRzY3JvbGwubmV0L2FwaS92Mi9kb2NzL3N3YWdnZXItdWkvaW5kZXguaHRtbCMvc3R1ZGVudHMpIFRoaXMgbWFqb3IgZW5kcG9pbnQgZGVzY3JpYmVzIG91ciBwcm9maWxlIGZlYXR1cmUuIEhlcmUgeW91IGNhbiB1cGRhdGUgeW91ciBpbmRpdmlkdWFsIHByb2ZpbGUsIHNlYXJjaCBmb3Igb3RoZXIgc3R1ZGVudCdzIHByb2ZpbGVzLgoKICAtIFsvZm9sbG93ZXJzXShodHRwczovL3N0dWRlbnRzY3JvbGwubmV0L2FwaS92Mi9kb2NzL3N3YWdnZXItdWkvaW5kZXguaHRtbCMvc3R1ZGVudHMpIFdlIGhhdmUgYWxzbyBlbWJlZGRlZCB0aGUgZm9sbG93aW5nIG1lY2hhbmljIGJlbmVhdGggdGhpcyBlbmRwb2ludC4gSGVyZSB5b3UgY2FuIGZvbGxvdyBhbmQgdW5mb2xsb3cgb3RoZXIgc3R1ZGVudHMuCgotIFsvcG9zdHNdKGh0dHBzOi8vc3R1ZGVudHNjcm9sbC5uZXQvYXBpL3YyL2RvY3Mvc3dhZ2dlci11aS9pbmRleC5odG1sIy9wb3N0cykgT24gdGhlIHBvc3RzIGVuZHBvaW50LCB5b3UgY2FuLCB3ZWxsLCBwb3N0IHdoYXQncyBvbiB5b3VyIG1pbmQuIEFMc28sIHlvdSBjYW4gc2VhcmNoIGZvciBwb3N0cyBhbmQgdXBkYXRlLCBvciBkZWxldGUsIHlvdXIgcG9zdHMuCgotIFsvY2hhdHNdKGh0dHBzOi8vc3R1ZGVudHNjcm9sbC5uZXQvYXBpL3YyL2RvY3Mvc3dhZ2dlci11aS9pbmRleC5odG1sIy9jaGF0cykgT3VyIGNoYXRzIGZlYXR1cmUgZW5hYmxlcyB5b3UgdG8gY3JlYXRlLCBmaW5kLCBhbmQgZGVsZXRlIGNoYXRzLgoKICAtIFsvbWVzc2FnZXNdKGh0dHBzOi8vc3R1ZGVudHNjcm9sbC5uZXQvYXBpL3YyL2RvY3Mvc3dhZ2dlci11aS9pbmRleC5odG1sIy9tZXNzYWdlcykgVGhlIGVtYmVkZGVkIG1lc3NhZ2VzIGVuZHBvaW50IGNvbnRhaW5zIHRoZSBtZXNzYWdlcyBpbiBhIGdpdmVuIGNoYXQuIEhlcmUgeW91IGNhbiBzZW5kIG1lc3NhZ2VzLCB1cGRhdGUgb3IgZGVsZXRlIHRoZW0sIGFzIHdlbGwgYXMgZmluZCBhIGdpdmVuIG1lc3NhZ2UuCgotIFsvbWFwc10oaHR0cHM6Ly9zdHVkZW50c2Nyb2xsLm5ldC9hcGkvdjIvZG9jcy9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwjL21hcHMpIFRoaXMgbWlub3IgZW5kcG9pbnQgcmV0cmlldmVzIHRoZSBHb29nbGUgTWFwcyBBUEkga2V5IGZyb20gb3VyIGJhY2tlbmQuCgojIEJ1aWxkaW5nLCB0ZXN0aW5nLCBhbmQgcnVubmluZyB0aGUgU3R1ZGVudFNjcm9sbEFQSQoKVGhlIFN0dWRlbnRTY3JvbGxBUEkgdXNlcyBNYXZlbiBhcyBkZXBlbmRlbmN5IG1hbmFnZXIgYW5kIGJ1aWxkIHRvb2wuCgpTaW5jZSB0aGUgYmVnaW5uaW5nLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB3ZSBydW4gdGhpbmdzLiBXZSBub3cgaW5jbHVkZSBhIE1hdmVuIHdyYXBwZXIuIFdpdGggdGhpcyB5b3UgY2FuIHRyaWdnZXIgYW55IG9mIHRoZSBbTWF2ZW4gbGlmZWN5Y2xlIHBoYXNlc10oaHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnL2d1aWRlcy9pbnRyb2R1Y3Rpb24vaW50cm9kdWN0aW9uLXRvLXRoZS1saWZlY3ljbGUuaHRtbCkgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIGZyb20gdGhlIHJlcG9zaXRvcnkgcm9vdDoKCmBgYGJhc2gKPiAlIC4vbXZudyBbY29tcGlsZSB8IHRlc3QgfCBwYWNrYWdlIHwgaW5zdGFsbCB8IC4uLl0gIyBVbml4CiMgb3IKPiAlIC4vbXZudy5jbWQgW2NvbXBpbGUgfCB0ZXN0IHwgcGFja2FnZSB8IGluc3RhbGwgfCAuLi5dICMgV2luZG93cwpgYGAKCkFkZGl0aW9uYWxseSwgU3ByaW5nIEJvb3QgcHJvdmlkZXMgYSBjdXN0b20gcnVuIGNvbW1hbmQgZm9yIHRyeWluZyB0aGUgcHJvamVjdCBvdXQgb24geW91ciBsb2NhbCBtYWNoaW5lOgoKYGBgYmFzaAo+ICUgLi9tdm53IHNwcmluZy1ib290OnJ1biAjIFVuaXgKIyBvcgo+ICUgLi9tdm53LmNtZCBzcHJpbmctYm9vdDpydW4gIyBXaW5kb3dzCmBgYAo= readmeEtag: '"883d57535f65fcde1a97f6fce6bdaac3b5b9d6ae"' readmeLastModified: Sat, 03 Jun 2023 23:20:48 GMT repositoryId: 613641216 description: This is the REST API behind StudentScroll. created: '2023-03-14T01:14:36Z' updated: '2025-12-15T18:20:54Z' language: Java archived: true stars: 7 watchers: 2 forks: 0 owner: leo-lem logo: https://avatars.githubusercontent.com/u/81310398?v=4 license: MIT repoEtag: '"c8c46a087a96af7eaed437ad127e39202a06392458cd7fb900b166beb2de23e1"' repoLastModified: Mon, 15 Dec 2025 18:20:54 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/suud/cdk-openapigateway v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpZ2F0ZXdheQo+IENyZWF0ZSBhbiBBbWF6b24gQVBJIEdhdGV3YXkgZnJvbSBhbiBPcGVuQVBJIDMgRG9jdW1lbnQuCgohW1B5UEldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L29wZW5hcGlnYXRld2F5KQohW1B5UEkgLSBQeXRob24gVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3B5dmVyc2lvbnMvb3BlbmFwaWdhdGV3YXkpClshW0NvZGUgc3R5bGU6IGJsYWNrXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NvZGUlMjBzdHlsZS1ibGFjay0wMDAwMDAuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3BzZi9ibGFjaykKIVtQeVBJIC0gTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2wvb3BlbmFwaWdhdGV3YXkpCgpBV1MgQ0RLIENvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYW4gQW1hem9uIEFQSSBHYXRld2F5IEh0dHBBcGkgYmFzZWQgb24gYQpwYXJhbWV0ZXJpemVkIE9wZW5BUEkgMyBEb2N1bWVudC4KCiMjIEluc3RhbGxhdGlvbgoKYGBgc2gKcGlwIGluc3RhbGwgb3BlbmFwaWdhdGV3YXkKYGBgCgojIyBVc2FnZQoKIyMjIEV4YW1wbGUgMTogQVBJIGJhY2tlZCBieSBMYW1iZGEgRnVuY3Rpb24KCipvcGVuYXBpLnlhbWw6KgpgYGB5YW1sClsuLi5dCnBhdGhzOgogIC9wZXRzOgogICAgZ2V0OgogICAgICBzdW1tYXJ5OiBMaXN0IGFsbCBwZXRzCiAgICAgIHJlc3BvbnNlczoKICAgICAgICBbLi4uXQogICAgICB4LWFtYXpvbi1hcGlnYXRld2F5LWludGVncmF0aW9uOgogICAgICAgIHVyaTogIiR7QVBJX0xBTUJEQV9BUk59IgogICAgICAgIHR5cGU6ICJBV1NfUFJPWFkiCiAgICAgICAgaHR0cE1ldGhvZDogIlBPU1QiCiAgICAgICAgY29ubmVjdGlvblR5cGU6ICJJTlRFUk5FVCIKICAgICAgICBwYXlsb2FkRm9ybWF0VmVyc2lvbjogIjIuMCIKICAgICAgeC1hbWF6b24tYXBpZ2F0ZXdheS1yZXF1ZXN0LXZhbGlkYXRvcjoKICAgICAgICB2YWxpZGF0ZVJlcXVlc3RCb2R5OiB0cnVlCiAgICAgICAgdmFsaWRhdGVSZXF1ZXN0UGFyYW1ldGVyczogdHJ1ZQpbLi4uXQpgYGAKCipvcGVuX2FwaV9zdGFjay5weToqCmBgYHB5dGhvbgpmcm9tIGF3c19jZGsgaW1wb3J0IGNvcmUsIGF3c19pYW0gYXMgaWFtLCBhd3NfbGFtYmRhIGFzIF9sYW1iZGEKZnJvbSBvcGVuYXBpZ2F0ZXdheSBpbXBvcnQgT3BlbkFwaUdhdGV3YXkKCgpjbGFzcyBPcGVuQXBpU3RhY2soY29yZS5TdGFjayk6CiAgICBkZWYgX19pbml0X18oCiAgICAgICAgc2VsZiwgc2NvcGU6IGNvcmUuQ29uc3RydWN0LCBjb25zdHJ1Y3RfaWQ6IHN0ciwgKiprd2FyZ3MKICAgICkgLT4gTm9uZToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKHNjb3BlLCBjb25zdHJ1Y3RfaWQsICoqa3dhcmdzKQoKICAgICAgICAjIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBhcGkgcmVxdWVzdChzKQogICAgICAgIGFwaV9sYW1iZGEgPSBfbGFtYmRhLkZ1bmN0aW9uKFsuLi5dKQoKICAgICAgICAjIGNyZWF0ZSBhcGkgZnJvbSBvcGVuYXBpIGRvY3VtZW50IGFuZCByZXBsYWNlIHBhcmFtcwogICAgICAgIG9wZW5hcGkgPSBPcGVuQXBpR2F0ZXdheSgKICAgICAgICAgICAgc2VsZiwKICAgICAgICAgICAgIk9wZW5BUEkgR2F0ZXdheSIsCiAgICAgICAgICAgIG9wZW5hcGlfcGF0aD0ib3BlbmFwaS55YW1sIiwKICAgICAgICAgICAgcGFyYW1fdmFsdWVfZGljdD17IkFQSV9MQU1CREFfQVJOIjogYXBpX2xhbWJkYS5mdW5jdGlvbl9hcm59LAogICAgICAgICAgICBmYWlsX29uX3dhcm5pbmdzPVRydWUsCiAgICAgICAgKQoKICAgICAgICAjIGdyYW50IEh0dHBBcGkgcGVybWlzc2lvbiB0byBpbnZva2UgYXBpIGxhbWJkYSBmdW5jdGlvbgogICAgICAgIGFwaV9sYW1iZGEuYWRkX3Blcm1pc3Npb24oCiAgICAgICAgICAgIGYiSW52b2tlIEJ5IHtvcGVuYXBpLmh0dHBfYXBpLm5vZGUuaWR9IFBlcm1pc3Npb24iLAogICAgICAgICAgICBwcmluY2lwYWw9aWFtLlNlcnZpY2VQcmluY2lwYWwoImFwaWdhdGV3YXkuYW1hem9uYXdzLmNvbSIpLAogICAgICAgICAgICBhY3Rpb249ImxhbWJkYTpJbnZva2VGdW5jdGlvbiIsCiAgICAgICAgICAgIHNvdXJjZV9hcm49b3BlbmFwaS5odHRwX2FwaV9hcm4sCiAgICAgICAgKQpgYGAKCiMjIFtEb2N1bWVudGF0aW9uXShodHRwczovL3N1dWQuZ2l0aHViLmlvL2Nkay1vcGVuYXBpZ2F0ZXdheS9vcGVuYXBpZ2F0ZXdheS5odG1sKQoKIyMgRGV2ZWxvcG1lbnQgc2V0dXAKCiMjIyBvcHRpb25hbDogdXNlIHZpcnR1YWxlbnYKCmBgYHNoCiMgY3JlYXRlIHZpcnR1YWxlbnYgb24gTWFjT1MgYW5kIExpbnV4CnB5dGhvbjMgLW0gdmVudiAudmVudgojIGFjdGl2YXRlIHZpcnR1YWxlbnYKc291cmNlIC52ZW52L2Jpbi9hY3RpdmF0ZQpgYGAKCiMjIyBpbnN0YWxsIGRlcGVuZGVuY2llcwoKVG8gaW5zdGFsbCB0aGlzIHBhY2thZ2UsIGFsb25nIHdpdGggdGhlIHRvb2xzIHlvdSBuZWVkIHRvIGRldmVsb3AgYW5kIHB1Ymxpc2gKaXQsIHJ1biB0aGUgZm9sbG93aW5nOgoKYGBgc2gKcGlwIGluc3RhbGwgLWUgIi5bZGV2XSIKYGBgCgojIyBDb250cmlidXRpbmcKCjEuIFtGb3JrIHRoaXMgcmVwb3NpdG9yeV0oaHR0cHM6Ly9naXRodWIuY29tL3N1dWQvY2RrLW9wZW5hcGlnYXRld2F5L2ZvcmspCjIuIENyZWF0ZSB5b3VyIGZlYXR1cmUgYnJhbmNoIChgZ2l0IGNoZWNrb3V0IC1iIGZlYXR1cmUvZm9vQmFyYCkKMy4gQ29tbWl0IHlvdXIgY2hhbmdlcyAoYGdpdCBjb21taXQgLWFtICdBZGQgc29tZSBmb29CYXInYCkKNC4gUHVzaCB0byB0aGUgYnJhbmNoIChgZ2l0IHB1c2ggb3JpZ2luIGZlYXR1cmUvZm9vQmFyYCkKNS4gQ3JlYXRlIGEgbmV3IFB1bGwgUmVxdWVzdAoKIyMgTGljZW5zZQoKTUlUCg== readmeEtag: '"59392f141d23ea5cd395744d56522cd550df646d"' readmeLastModified: Tue, 29 Dec 2020 19:49:29 GMT repositoryId: 324788192 description: AWS CDK - API Gateway from OpenAPI 3 Specs created: '2020-12-27T15:15:15Z' updated: '2022-09-08T21:22:14Z' language: Python archived: false stars: 3 watchers: 1 forks: 2 owner: suud logo: https://avatars.githubusercontent.com/u/10183975?v=4 license: MIT repoEtag: '"37e0aced9464d135af44bc3ec751153915f96462f75ac40b861eac864e69f743"' repoLastModified: Thu, 08 Sep 2022 21:22:14 GMT foundInMaster: true category: Data Validators id: 1aba64373963ca20f37c64c9a809c53d - source: openapi3 tags repository: https://github.com/adarro/parsehub-openapi v3: true repositoryMetadata: base64Readme: >- IyBwYXJzZWh1Yi1vcGVuYXBpClN3YWdnZXIgKE9wZW5BUEkpIGRvY3VtZW50YXRpb24gZm9yIFBhcnNlSHViIFJFU1QgQVBJCgpUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGEgU3dhZ2dlciAoT3BlbkFQSSAzKSBkb2N1bWVudCBvZiB0aGUgW1BhcnNlSHViXShodHRwczovL3BhcnNlaHViLmNvbSkgUkVTVCBhcGkuCgpBdCBjdXJyZW50LCB0aGUgbWFzdGVyIGRvY3VtZW50IGxpdmVzIG9uIFN3YWdnZXJIdWIgW0hFUkVdKGh0dHBzOi8vYXBwLnN3YWdnZXJodWIuY29tL2FwaXMvYWRhcnJvL3BhcnNlLWh1Yi8wLjAuMSkKCkdpdGh1YiAvIEdpdGxhYiBpbnRlZ3JhdGlvbiB3aXRoIFN3YWdnZXJIdWIgZG9lcyBub3Qgd29yayBmb3IgT3BlbkFQSSAzLjAgYXQgdGhpcyB0aW1lLCBidXQgKnNob3VsZCogaW4gdGhlIG5lYXIgZnV0dXJlLgoKIyMgVmVyc2lvbmluZwpJIHdvdWxkIGxpa2UgdG8gZm9sbG93IFNlbWFudGljIFZlcnNpb25pbmcgW1NlbVZlcl0oaHR0cHM6Ly9zZW12ZXIub3JnLykgYnV0IHdvdWxkIGxpa2UgdG8ga2VlcCB0aGlzIGluIHN5bmMgd2l0aCBhbnkgUGFyc2VodWIgY2hhbmdlcy4KClRoaXMgcHJvamVjdCBpcyBBcGFjaGUgMi4wIExpY2Vuc2VkLCBidXQgdXNlIG9mIFBhcnNlSHViJ3Mgc2VydmljZXMgcmVxdWlyZXMgYWdyZWVtZW50IHRvIHRoZWlyIFtUZXJtcyBvZiBTZXJ2aWNlXShodHRwczovL3d3dy5wYXJzZWh1Yi5jb20vdGVybXMp readmeEtag: '"59d57bff96d8840d5388162325f16c9fcd2767fe"' readmeLastModified: Thu, 06 Feb 2020 14:08:17 GMT repositoryId: 139917432 description: Swagger (OpenAPI) documentation for ParseHub REST API created: '2018-07-06T01:19:24Z' updated: '2023-07-26T08:05:24Z' language: null archived: false stars: 3 watchers: 1 forks: 0 owner: adarro logo: https://avatars.githubusercontent.com/u/101220?v=4 license: Apache-2.0 repoEtag: '"c3d62f680202c56930c2633e291542448f75d1256b85b2fd9ccaf0ebebd66269"' repoLastModified: Wed, 26 Jul 2023 08:05:24 GMT foundInMaster: true category: Parsers id: 4febdf85e579394614b5e30de52823ba - source: openapi3 tags repository: https://github.com/bump-sh-examples/laravel-design-first v3: true id: 22a90a57d3f8d2cbe22c7514cc808a0c repositoryMetadata: base64Readme: >- IyBMYXJhdmVsIENvZGUgRmlyc3QKClRoaXMgcmVwb3NpdG9yeSB3YXMgYnVpbHQgYXMgc2FtcGxlIGNvZGUgZm9yIHRoZSBCdW1wLnNoIGd1aWRlIG9uIF9bVXNpbmcgT3BlbkFQSSB0byBzaW1wbGlmeSBidWlsZGluZyBhbmQgdGVzdGluZyBMYXJhdmVsIEFQSXNdKGh0dHBzOi8vZG9jcy5idW1wLnNoL2d1aWRlcy9vcGVuYXBpL2Rlc2lnbi1maXJzdC1sYXJhdmVsLylfLiBMZWFybiB0byB1c2UgdGhlIEFQSSBEZXNpZ24gRmlyc3Qgd29ya2Zsb3csIGFuZCBzaW1wbGlmeSB5b3VyIExhcmF2ZWwgY29kZSBieSBub3QgaGF2aW5nIHRvIHJlcGVhdCB5b3VyIEFQSSBjb250cmFjdCBpbiB2YWxpZGF0aW9uIGFuZCBjb250cmFjdCB0ZXN0aW5nIGFzIHdlbGwgYXMgZG9jdW1lbnRhdGlvbi4gSnVzdCBkbyBpdCBvbmNlLCBtYWtlIGVhc3kgY29kZSwgdGhlbiBwb3AgaXQgYWxsIG9udG8gQnVtcC5zaCB0byBoYXZlIFtncmVhdCBBUEkgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9idW1wLnNoL2J1bXAtZXhhbXBsZXMvaHViL2NvZGUtc2FtcGxlcy9kb2MvbGFyYXZlbC1kZXNpZ24tZmlyc3QpLgoKIyMgVXNhZ2UKCkNsb25lIHRoZSByZXBvc2l0b3J5IGRvd24gdG8gZ2l2ZSBpdCBhIHRyeS4KCmBgYAojIFNldCBldmVyeXRoaW5nIHVwCiQgY29tcG9zZXIgaW5zdGFsbAoKIyBTdGFydCB0aGUgc2VydmVyCiQgcGhwIGFydGlzYW4gc2VydmUKCiMgUG9rZSB0aGUgQVBJIGFuZCBnZXQgYXV0b21hdGVkICBlcnJvcnMKJCBjdXJsIC1YIFBPU1QgaHR0cDovL2xvY2FsaG9zdDo4MDAwL2FwaS93aWRnZXRzIFwKICAgIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKICAgIC1kICd7Im5hbWUiIDogIlJlcGxpY2F0b3IifScKCnsKICAiZXJyb3JzIjogewogICAgInJlcXVlc3RCb2R5IjogWwogICAgICAiZGVzY3JpcHRpb24gaXMgYSByZXF1aXJlZCBmaWVsZCIKICAgIF0KICB9LAogICJ0aXRsZSI6ICJSZXF1ZXN0IHBheWxvYWQgZmFpbGVkIHZhbGlkYXRpb24iLAogICJ0eXBlIjogImFib3V0OmJsYW5rIiwKICAic3RhdHVzIjogNDAwCn0KYGBgCgpHaXZlIGl0IGEgdHJ5LCBwbGF5IGFyb3VuZCB3aXRoIHRoZSBPcGVuQVBJLCBhbmQgc2VlIGhvdyBpdCByZXNwb25kcyB0byBkaWZmZXJlbnQgc2NlbmFyaW9zLiAKClRoZW4geW91IGNhbiBydW4gYGNvbXBvc2VyIHRlc3RgIHRvIHNlZSBpZiB0aGUgQVBJIHJlc3BvbnNlcyBtYXRjaCB3aGF0IE9wZW5BUEkgZXhwZWN0LCB3aGljaCB3aGVuIGltcGxlbWVudGVkIGluIHlvdXIgYXBwbGljYXRpb24gd2lsbCBoZWxwIG1ha2Ugc3VyZSB5b3VyIEFQSSBpcyBhY3R1YWxseSBkb2luZyB3aGF0IHlvdXIgZG9jcyBhcmUgc2F5aW5nLCBvciBtYWtlIHN1cmUgeW91ciBkb2NzIGFyZSBzYXlpbmcgd2hhdCB5b3VyIEFQSSBpcyBkb2luZywgd2hpY2hldmVyIHdheSByb3VuZCB5b3UgcHJlZmVyIHRvIHRoaW5rIG9mIGl0LgoKUHJldmlldyBob3cgdGhlIEFQSSByZWZlcmVuY2UgZG9jcyBsb29rIFtvbiBCdW1wLnNoXShodHRwczovL2J1bXAuc2gvYnVtcC1leGFtcGxlcy9odWIvY29kZS1zYW1wbGVzL2RvYy9sYXJhdmVsLWRlc2lnbi1maXJzdCkuCgojIyBMaWNlbnNlCgpUaGUgY29udGVudHMgb2YgdGhpcyByZXBvc2l0b3J5IGFyZSBsaWNlbnNlZCB1bmRlciBbQ0MgQlktTkMtU0EKICA0LjBdKC4vTElDRU5TRV9DQy1CWS1OQy1TQS00LjApLgo= readmeEtag: '"7ee963ec709358519fd61bec17566d66a16b2177"' readmeLastModified: Tue, 27 Feb 2024 16:05:25 GMT repositoryId: 743755264 description: >- Create your OpenAPI then use it to power your application, covering both request validation and contract testing. created: '2024-01-15T23:12:27Z' updated: '2025-03-12T20:31:31Z' language: PHP archived: false stars: 4 watchers: 1 forks: 0 owner: bump-sh-examples logo: https://avatars.githubusercontent.com/u/157144805?v=4 license: NOASSERTION repoEtag: '"f8fce7e0f7eb94ebd295376350dbdd5c4ea192e588fff7cfc63658084bfb31c6"' repoLastModified: Wed, 12 Mar 2025 20:31:31 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/sudokuru/sudokuru v3: true id: 88726e2bfb53ac81a29d3f16ff3a6a14 repositoryMetadata: base64Readme: >- IVtTdWRva3VydSBMb2dvXShodHRwczovL3N1ZG9rdXJ1LnMzLmFtYXpvbmF3cy5jb20vZ29sZExvZ29UZXh0LnBuZykKIyBTdWRva3UgUHV6emxlIEdlbmVyYXRvcgpbIVtOUE0gdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9zdWRva3VydS5zdmc/c3R5bGU9ZmxhdCldKGh0dHBzOi8vbnBtanMub3JnL3BhY2thZ2Uvc3Vkb2t1cnUpClshW05QTSBkb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL3N1ZG9rdXJ1LnN2Zz9zdHlsZT1mbGF0KV0oaHR0cHM6Ly9ucG1qcy5vcmcvcGFja2FnZS9zdWRva3VydSkKIVtOUE0gTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9zdWRva3VydSkKWyFbUGlwZWxpbmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9TdWRvS3VydS9TdWRva3VydS9hY3Rpb25zL3dvcmtmbG93cy9waXBlbGluZS55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL1N1ZG9LdXJ1L1N1ZG9rdXJ1L2FjdGlvbnMvd29ya2Zsb3dzL3BpcGVsaW5lLnltbCkKWyFbQ292ZXJhbGxzIENvdmVyYWdlXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIvU3Vkb0t1cnUvU3Vkb2t1cnUvYmFkZ2Uuc3ZnP2JyYW5jaD1tYWluKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL1N1ZG9LdXJ1L1N1ZG9rdXJ1P2JyYW5jaD1tYWluKQpbIVtDb2RlY292IENvdmVyYWdlXShodHRwczovL2NvZGVjb3YuaW8vZ2gvU3Vkb0t1cnUvU3Vkb2t1cnUvZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPVNJU1M4NVRYMjApXShodHRwczovL2NvZGVjb3YuaW8vZ2gvU3Vkb0t1cnUvU3Vkb2t1cnUpCgpbIVtDb21tb24gQ2hhbmdlbG9nXShodHRwczovL2NvbW1vbi1jaGFuZ2Vsb2cub3JnL2JhZGdlLnN2ZyldKGh0dHBzOi8vY29tbW9uLWNoYW5nZWxvZy5vcmcpCgoKPiBHZW5lcmF0ZSBkYXRhIGFib3V0IFN1ZG9rdSBwdXp6bGVzCgo+IFshTk9URV0gIAo+IFRoaXMgcHJvamVjdCB1c2VzIFtCcmVha1Zlcl0oaHR0cHM6Ly93d3cudGFvZW5zc28uY29tL2JyZWFrLXZlcnNpb25pbmcpIGZvciBwcm9qZWN0IHZlcnNpb25pbmcuIAoKIyBUYWJsZSBvZiBDb250ZW50cwoKKiAgIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCiogICBbVXNhZ2VdKCN1c2FnZSkKICAgICogICBbSmF2YVNjcmlwdF0oI2phdmFzY3JpcHQpCiAgICAgICAgKiAgIFtIaW50IEZpbGVdKCNoaW50LWZpbGUpCiAgICAgICAgICAgICogICBbZ2V0SGludCgpXSgjZ2V0aGludCkKICAgICAgICAqICAgW1B1enpsZURhdGEgRmlsZV0oI3B1enpsZWRhdGEtZmlsZSkKICAgICAgICAgICAgKiAgIFtnZXRQdXp6bGVEYXRhKCldKCNnZXRwdXp6bGVkYXRhKQogICAgICAgICogICBbRHJpbGwgRmlsZV0oI2RyaWxsLWZpbGUpCiAgICAgICAgICAgICogICBbZ2V0RHJpbGxQdXp6bGVTdHJpbmcoKV0oI2dldGRyaWxscHV6emxlc3RyaW5nKQoqICAgW2hpbnQgT2JqZWN0IFByb3BlcnRpZXNdKCNoaW50LW9iamVjdC1wcm9wZXJ0aWVzKQogICAgKiAgIFtFeGFtcGxlIDE6IEFtZW5kIE5vdGVzXSgjZXhhbXBsZS0xLWFtZW5kLW5vdGVzKQogICAgICAgICogICBbc3RyYXRlZ3ldKCNzdHJhdGVneSkKICAgICAgICAqICAgW2NhdXNlXSgjY2F1c2UpCiAgICAgICAgKiAgIFtncm91cHNdKCNncm91cHMpCiAgICAgICAgKiAgIFtwbGFjZW1lbnRzXSgjcGxhY2VtZW50cykKICAgICAgICAqICAgW3JlbW92YWxzXSgjcmVtb3ZhbHMpCiAgICAgICAgKiAgIFtpbmZvXSgjaW5mbykKICAgICAgICAqICAgW2FjdGlvbl0oI2FjdGlvbikKICAgICogICBbRXhhbXBsZSAyOiBTaW1wbGlmeSBOb3Rlc10oI2V4YW1wbGUtMi1zaW1wbGlmeS1ub3RlcykKICAgICAgICAqICAgW3N0cmF0ZWd5XSgjc3RyYXRlZ3ktMSkKICAgICAgICAqICAgW2NhdXNlXSgjY2F1c2UtMSkKICAgICAgICAqICAgW2dyb3Vwc10oI2dyb3Vwcy0xKQogICAgICAgICogICBbcGxhY2VtZW50c10oI3BsYWNlbWVudHMtMSkKICAgICAgICAqICAgW3JlbW92YWxzXSgjcmVtb3ZhbHMtMSkKICAgICAgICAqICAgW2luZm9dKCNpbmZvLTEpCiAgICAgICAgKiAgIFthY3Rpb25dKCNhY3Rpb24tMSkKICAgICogICBbRXhhbXBsZSAzOiBPYnZpb3VzIFNpbmdsZV0oI2V4YW1wbGUtMy1vYnZpb3VzLXNpbmdsZSkKICAgICAgICAqICAgW3N0cmF0ZWd5XSgjc3RyYXRlZ3ktMikKICAgICAgICAqICAgW2NhdXNlXSgjY2F1c2UtMikKICAgICAgICAqICAgW2dyb3Vwc10oI2dyb3Vwcy0yKQogICAgICAgICogICBbcGxhY2VtZW50c10oI3BsYWNlbWVudHMtMikKICAgICAgICAqICAgW3JlbW92YWxzXSgjcmVtb3ZhbHMtMikKICAgICAgICAqICAgW2luZm9dKCNpbmZvLTIpCiAgICAgICAgKiAgIFthY3Rpb25dKCNhY3Rpb24tMikKICAgICogICBbRXhhbXBsZSA0OiBPYnZpb3VzIFBhaXJdKCNleGFtcGxlLTQtb2J2aW91cy1wYWlyKQogICAgICAgICogICBbc3RyYXRlZ3ldKCNzdHJhdGVneS0zKQogICAgICAgICogICBbY2F1c2VdKCNjYXVzZS0zKQogICAgICAgICogICBbZ3JvdXBzXSgjZ3JvdXBzLTMpCiAgICAgICAgKiAgIFtwbGFjZW1lbnRzXSgjcGxhY2VtZW50cy0zKQogICAgICAgICogICBbcmVtb3ZhbHNdKCNyZW1vdmFscy0zKQogICAgICAgICogICBbaW5mb10oI2luZm8tMykKICAgICAgICAqICAgW2FjdGlvbl0oI2FjdGlvbi0zKQogICAgKiAgIFtFeGFtcGxlIDU6IE90aGVyIE9idmlvdXMgU2V0c10oI2V4YW1wbGUtNS1vdGhlci1vYnZpb3VzLXNldHMpCiAgICAgICAgKiAgIFtzdHJhdGVneV0oI3N0cmF0ZWd5LTQpCiAgICAgICAgKiAgIFtzdHJhdGVneV0oI3N0cmF0ZWd5LTUpCiAgICAqICAgW0V4YW1wbGUgNjogSGlkZGVuIFNpbmdsZV0oI2V4YW1wbGUtNi1oaWRkZW4tc2luZ2xlKQogICAgICAgICogICBbc3RyYXRlZ3ldKCNzdHJhdGVneS02KQogICAgICAgICogICBbY2F1c2VdKCNjYXVzZS00KQogICAgICAgICogICBbZ3JvdXBzXSgjZ3JvdXBzLTQpCiAgICAgICAgKiAgIFtwbGFjZW1lbnRzXSgjcGxhY2VtZW50cy00KQogICAgICAgICogICBbcmVtb3ZhbHNdKCNyZW1vdmFscy00KQogICAgICAgICogICBbaW5mb10oI2luZm8tNCkKICAgICAgICAqICAgW2FjdGlvbl0oI2FjdGlvbi00KQogICAgKiAgIFtFeGFtcGxlIDc6IEhpZGRlbiBQYWlyXSgjZXhhbXBsZS03LWhpZGRlbi1wYWlyKQogICAgICAgICogICBbc3RyYXRlZ3ldKCNzdHJhdGVneS03KQogICAgICAgICogICBbY2F1c2VdKCNjYXVzZS01KQogICAgICAgICogICBbZ3JvdXBzXSgjZ3JvdXBzLTUpCiAgICAgICAgKiAgIFtwbGFjZW1lbnRzXSgjcGxhY2VtZW50cy01KQogICAgICAgICogICBbcmVtb3ZhbHNdKCNyZW1vdmFscy01KQogICAgICAgICogICBbaW5mb10oI2luZm8tNSkKICAgICAgICAqICAgW2FjdGlvbl0oI2FjdGlvbi01KQogICAgKiAgIFtFeGFtcGxlIDg6IE90aGVyIEhpZGRlbiBTZXRzXSgjZXhhbXBsZS04LW90aGVyLWhpZGRlbi1zZXRzKQogICAgICAgICogICBbc3RyYXRlZ3ldKCNzdHJhdGVneS04KQogICAgICAgICogICBbc3RyYXRlZ3ldKCNzdHJhdGVneS05KQogICAgKiAgIFtFeGFtcGxlIDk6IFBvaW50aW5nIFBhaXJdKCNleGFtcGxlLTktcG9pbnRpbmctcGFpcikKICAgICAgICAqICAgW3N0cmF0ZWd5XSgjc3RyYXRlZ3ktMTApCiAgICAgICAgKiAgIFtjYXVzZV0oI2NhdXNlLTYpCiAgICAgICAgKiAgIFtncm91cHNdKCNncm91cHMtNikKICAgICAgICAqICAgW3BsYWNlbWVudHNdKCNwbGFjZW1lbnRzLTYpCiAgICAgICAgKiAgIFtyZW1vdmFsc10oI3JlbW92YWxzLTYpCiAgICAgICAgKiAgIFtpbmZvXSgjaW5mby02KQogICAgICAgICogICBbYWN0aW9uXSgjYWN0aW9uLTYpCiogICBbUHV6emxlRGF0YSBPYmplY3QgUHJvcGVydGllc10oI3B1enpsZWRhdGEtb2JqZWN0LXByb3BlcnRpZXMpCiAgICAqICAgW3NvbHV0aW9uXSgjc29sdXRpb24pCiAgICAqICAgW2RpZmZpY3VsdHldKCNkaWZmaWN1bHR5KQoqICAgW0RldmVsb3BlciBUb29sc10oI2RldmVsb3Blci10b29scykKCiMgSW5zdGFsbGF0aW9uCgpgYGBzaGVsbApucG0gaW5zdGFsbCBzdWRva3VydQpgYGAKCiMgVXNhZ2UKCiMjIEphdmFTY3JpcHQKCiMjIyBIaW50IEZpbGUKCiMjIyMgZ2V0SGludCgpCjEuIFNldHVwOiAKICAgIGBgYHR5cGVzY3JpcHQKICAgIGltcG9ydCB7Z2V0SGludH0gZnJvbSAnc3Vkb2t1cnUnOwogICAgYGBgCjIuIERlc2NyaXB0aW9uOiBSZXR1cm5zIGEgaGludCBiYXNlZCBvbiB0aGUgcHV6emxlIGFuZCBub3RlcyBwcm92aWRlZAozLiBTeW50YXgKICAgIGBgYHR5cGVzY3JpcHQKICAgIGdldEhpbnQoYm9hcmQsIG5vdGVzLCBzdHJhdGVnaWVzLCBzb2x1dGlvbik7CiAgICBgYGAKNC4gUGFyYW1ldGVyczoKICAgIC0gYm9hcmQ6IDJkIGJvYXJkIGFycmF5ICg5IGFycmF5cywgb25lIGZvciBlYWNoIHJvdywgZWFjaCB3aXRoIDkgc3RyaW5ncyByZXByZXNlbnRpbmcgdmFsdWVzIG9yICIwIiBpZiBlbXB0eSkKICAgIC0gbm90ZXM6IDJkIG5vdGVzIGFycmF5ICg4MSBhcnJheXMsIG9uZSBmb3IgZWFjaCBjZWxsIGNvbnRhaW5pbmcgZWFjaCBub3RlIHRoYXQgaXMgbGVmdCBpbiBpdCkKICAgIC0gc3RyYXRlZ2llczogb3B0aW9uYWwgcGFyYW1ldGVyIHNwZWNpZnlpbmcgd2hpY2ggc3RyYXRlZ2llcyBhcmUgYWxsb3dlZCB0byBiZSB1c2VkIGluIHRoZSBoaW50IGdpdmVuIGluIG9yZGVyIG9mIHByZWNlZGVuY2UgKGFsbG93ZWQgdmFsdWVzIGFyZSB0aGUgc3RyaW5ncyBpbiB0aGUgU3RyYXRlZ3lFbnVtIGluIFN1ZG9rdS50cykKICAgIC0gc29sdXRpb246IG9wdGlvbmFsIHBhcmFtZXRlciBzcGVjaWZ5aW5nIGJvYXJkcyBzb2x1dGlvbiBzbyB0aGF0IGFtZW5kIG5vdGVzIGhpbnRzIGNhbiBjb3JyZWN0IHVzZXJzIG1pc3Rha2VzCjUuIFJldHVybiBWYWx1ZTogW2hpbnRdKCNoaW50LW9iamVjdC1wcm9wZXJ0aWVzKQoKIyMjIFB1enpsZURhdGEgRmlsZQoKIyMjIyBnZXRQdXp6bGVEYXRhKCkKMS4gU2V0dXA6IAogICAgYGBgdHlwZXNjcmlwdAogICAgaW1wb3J0IHtnZXRQdXp6bGVEYXRhfSBmcm9tICdzdWRva3VydSc7CiAgICBgYGAKMi4gRGVzY3JpcHRpb246IFJldHVybnMgZGF0YSBhYm91dCBhIGdpdmVuIHB1enpsZQozLiBTeW50YXgKICAgIGBgYHR5cGVzY3JpcHQKICAgIGdldFB1enpsZURhdGEoYm9hcmQpOwogICAgYGBgCjQuIFBhcmFtZXRlcnM6CiAgICAtIGJvYXJkOiBwdXp6bGUgYm9hcmQgc3RyaW5nICg4MSBjaGFyYWN0ZXJzLCBvbmUgZm9yIGVhY2ggY2VsbCBjb250YWluaW5nIGVhY2ggdmFsdWUgb3IgIjAiIGlmIGVtcHR5LCBsZWZ0IHRvIHJpZ2h0IHRvcCB0byBib3R0b20pCjUuIFJldHVybiBWYWx1ZTogW3B1enpsZURhdGFdKCNwdXp6bGVkYXRhLW9iamVjdC1wcm9wZXJ0aWVzKQoKIyMjIERyaWxsIEZpbGUKCiMjIyMgZ2V0RHJpbGxQdXp6bGVTdHJpbmcoKQoxLiBTZXR1cDoKICAgIGBgYHR5cGVzY3JpcHQKICAgIGltcG9ydCB7Z2V0RHJpbGxQdXp6bGVTdHJpbmd9IGZyb20gJ3N1ZG9rdXJ1JzsKICAgIGBgYAoyLiBEZXNjcmlwdGlvbjogUmV0dXJucyBwdXp6bGUgc3RyaW5nIHVwZGF0ZWQgdG8gcmlnaHQgYmVmb3JlIGRyaWxsIHN0cmF0ZWd5IG1vdmUgY2FuIGJlIHBsYXllZAozLiBTeW50YXgKICAgIGBgYHR5cGVzY3JpcHQKICAgIGdldERyaWxsUHV6emxlU3RyaW5nKHB1enpsZVN0cmluZywgbW92ZU51bWJlcik7CiAgICBgYGAKNC4gUGFyYW1ldGVyczoKICAgIC0gcHV6emxlU3RyaW5nOiBwdXp6bGUgYm9hcmQgc3RyaW5nICg4MSBjaGFyYWN0ZXJzLCBvbmUgZm9yIGVhY2ggY2VsbCBjb250YWluaW5nIGVhY2ggdmFsdWUgb3IgIjAiIGlmIGVtcHR5LCBsZWZ0IHRvIHJpZ2h0IHRvcCB0byBib3R0b20pCiAgICAtIG1vdmVOdW1iZXI6IG51bWJlciBvZiBjZWxscyBmaWxsZWQgaW4gKHNvIGluZGV4IDMwIGhhcyAzMCBjZWxscyBmaWxsZWQgaW4gaW5jbHVkaW5nIGdpdmVucyksIHJldHVybmVkIGJ5IGdldFB1enpsZURhdGEKNS4gUmV0dXJuIFZhbHVlOiBwdXp6bGUgYm9hcmQgc3RyaW5nICg4MSBjaGFyYWN0ZXJzLCBvbmUgZm9yIGVhY2ggY2VsbCBjb250YWluaW5nIGVhY2ggdmFsdWUgb3IgIjAiIGlmIGVtcHR5LCBsZWZ0IHRvIHJpZ2h0IHRvcCB0byBib3R0b20pCgojIGhpbnQgT2JqZWN0IFByb3BlcnRpZXMKIyMgRXhhbXBsZSAxOiBBbWVuZCBOb3RlcwohW0V4YW1wbGUgMV0oaHR0cHM6Ly9zdWRva3VydS5zMy5hbWF6b25hd3MuY29tL2hpbnRFeGFtcGxlMS1WMi5wbmcpCiMjIyBzdHJhdGVneQpgYGBqc29uCiJBTUVORF9OT1RFUyIKYGBgCk5hbWUgb2Ygc3RyYXRlZ3kgdXNlZCBieSB0aGUgaGludC4gQW1lbmQgbm90ZXMgd29ya3MgcmVtb3ZpbmcgYWxsIG5vdGVzIGZyb20gYSBjZWxsIHRoZW4gYWRkaW5nIGJhY2sgaW4ganVzdCB0aGUgb25lcyB0aGF0IGRvbid0IGNvbmZsaWN0IHdpdGggcGxhY2VkIHZhbHVlcyBpbiB0aGUgc2FtZSByb3csIGNvbHVtbiwgYW5kIGJveCBhcyB0aGUgY2VsbC4gSW4gdGhlIHBpY3R1cmUgdGhlIGNlbGwgd2l0aCB0aGUgcmVkIGJvcmRlciB3YXMgcHJldmlvdXNseSBlbXB0eSBhbmQgYW1lbmQgbm90ZXMgd2FzIGFibGUgdG8gYWRkIGluIHRoZSAyIGFuZCA4IG9ubHkgYXMgdGhlIG90aGVycyBjb25mbGljdGVkIHdpdGggdGhlIGhpZ2hsaWdodGVkIGNlbGxzLgojIyMgY2F1c2UKYGBganNvbgpbWzcsNF0sWzcsNV0sWzcsNl0sWzcsOF0sWzQsMl0sWzgsMF0sWzgsMV1dCmBgYApDb29yZGluYXRlcyBvZiBjZWxscyB0aGF0ICJjYXVzZSIgc3RyYXRlZ3kgdG8gYmUgYXBwbGljYWJsZS4gVGhpcyBpcyBhIDJkIGFycmF5IHNvIGNhdXNlWzBdIGlzIFs3LCA0XSByZWZlcnJpbmcgdG8gdGhlIGNlbGwgd2l0aCB0aGUgOSBoaWdobGlnaHRlZCBpbiBibHVlIGluIHRoZSBuZXh0IHRvIGxhc3Qgcm93IChyb3dzIGFuZCBjb2x1bW5zIGFyZSB6ZXJvLWluZGV4ZWQpLiBjYXVzZVswXVswXSByZWZlcnMgdG8gaXQgYmVpbmcgaW4gdGhlIDh0aCByb3cgYW5kIGNhdXNlWzBdWzFdIHJlZmVycyB0byBpdCBiZWluZyBpbiB0aGUgNXRoIGNvbHVtbi4gU2ltaWxhcmx5IHRoZSBsYXN0IGNlbGwgY2F1c2VbNl0gaXMgdGhlIGhpZ2hsaWdodGVkIDMgdGhhdCBpdCBzaGFyZXMgYSBib3ggd2l0aC4KIyMjIGdyb3VwcwpgYGBqc29uCltbMCw3XSxbMSwyXSxbMiw2XV0KYGBgCkdyb3VwIHR5cGUgYW5kIGluZGV4IG9mIGdyb3VwcyB0aGF0ICJjYXVzZSBzdHJhdGVneSIuIFRoaXMgaXMgYSAyZCBhcnJheSBzbyBncm91cFswXSBpcyBbMCwgN10gcmVmZXJyaW5nIHRvIHRoZSBuZXh0IHRvIG5leHQgdG8gbGFzdCByb3cgd2l0aCBncmVlbiBib3JkZXJzLiBncm91cFswXVswXSByZWZlcnMgdG8gdGhlIGdyb3VwIHR5cGUgKDAgPSByb3csIDEgPSBjb2x1bW4sIDIgPSBib3gpIGFuZCBncm91cFswXVsxXSByZWZlcnMgdG8gaXQgYmVpbmcgdGhlIDh0aCByb3cuIFNpbWlsYXJseSB0aGUgbGFzdCBncm91cCBncm91cFsyXSBpcyB0aGUgYm90dG9tIGxlZnQgYm94IHdob3NlIGNlbGxzIGFsc28gaGF2ZSBncmVlbiBib3JkZXJzLgojIyMgcGxhY2VtZW50cwpgYGBqc29uCltdCmBgYApSb3csIGNvbHVtbiwgYW5kIHZhbHVlcyBmb3IgY2VsbHMgdGhhdCBoYXZlIGhhZCB2YWx1ZXMgcGxhY2VkIGluIHRoZW0gYXMgcmVzdWx0IG9mIHN0cmF0ZWd5LiBUaGlzIGRvZXMgbm90IGFwcGx5IHRvIHRoaXMgc3RyYXRlZ3kuCiMjIyByZW1vdmFscwpgYGBqc29uCltbNywyLDEsMyw0LDUsNiw3LDldXQpgYGAKTm90ZXMgdGhhdCBjYW4gYmUgcmVtb3ZlZCBmcm9tIGNlbGxzIGFsb25nIHdpdGggdGhlaXIgcm93IGFuZCBjb2x1bW5zLiBUaGUgZmlyc3QgdHdvIHZhbHVlcyByZXByZXNlbnQgdGhlIHJvdyBhbmQgY29sdW1uIHJlc3BlY3RpdmVseSBzbyByZW1vdmFsc1swXVswXSBhbmQgcmVtb3ZhbHNbMF1bMV0gcmVmZXIgdG8gdGhlIDNyZCBjZWxsIGluIHRoZSA4dGggcm93LiBUaGUgcmVzdCBvZiB0aGUgbnVtYmVycyBpbiB0aGUgc3ViYXJyYXkgYXJlIHRoZSBub3RlcyB0byBiZSByZW1vdmVkIHdoaWNoIGlzIGV2ZXJ5IG51bWJlciBidXQgMiBhbmQgOC4gQW1lbmQgbm90ZXMgaXMgdW5pcXVlIGluIHRoYXQgZXZlcnkgbm90ZSB0aGF0IHNob3VsZG4ndCBiZSByZW1vdmVkIHNob3VsZCBiZSBhZGRlZCBiYWNrIGluICgyIGFuZCA4IGluIHRoaXMgZXhhbXBsZSkuIEluIHRoaXMgZXhhbXBsZSB0aGUgY2VsbCBoYWQgbm8gbm90ZXMgaW4gaXQgYmVmb3JlIGFtZW5kIG5vdGVzLgojIyMgaW5mbwpgYGBqc29uCiJBbWVuZCBub3RlcyBhcmUgd2hlbiB5b3UgcmVzZXQgYSBjZWxsJ3Mgbm90ZXMgdG8gY29udGFpbiBldmVyeSBub25jb25mbGljdGluZyBudW1iZXIiCmBgYApJbmZvIGFib3V0IHRoZSBzdHJhdGVneSBiZWluZyB1c2VkIGJ5IHRoZSBoaW50LgojIyMgYWN0aW9uCmBgYGpzb24KIldoZW4geW91IHNlZSBhbiBhbWVuZCBub3RlcyB5b3UgY2FuIHJlbW92ZSBhbGwgbm90ZXMgdGhlbiBhZGQgYWxsIG5vbmNvbmZsaWN0aW5nIG51bWJlcnMgdG8gaXRzIG5vdGVzIgpgYGAKRGVzY3JpYmVzIHRoZSBhY3Rpb24gdGhhdCB0aGUgaGludCBpcyBzdWdnZXN0aW5nLgojIyBFeGFtcGxlIDI6IFNpbXBsaWZ5IE5vdGVzCiFbRXhhbXBsZSAyXShodHRwczovL3N1ZG9rdXJ1LnMzLmFtYXpvbmF3cy5jb20vaGludEV4YW1wbGUyLVYyLnBuZykKIyMjIHN0cmF0ZWd5CmBgYGpzb24KIlNJTVBMSUZZX05PVEVTIgpgYGAKTmFtZSBvZiBzdHJhdGVneSB1c2VkIGJ5IHRoZSBoaW50LiBTaW1wbGlmeSBub3RlcyB3b3JrcyBieSB1c2luZyBhIGNlbGwgd2l0aCBhIHBsYWNlZCB2YWx1ZSAodGhlIGJsdWUgaGlnaGxpZ2h0ZWQgOCkgdG8gcmVtb3ZlIGEgbm90ZSBvZiB0aGUgc2FtZSB2YWx1ZSBmcm9tIGEgY2VsbCBzaGFyaW5nIGEgZ3JvdXAgKHRoZSByZWQgOCBub3RlIGluIGEgY2VsbCBpbiB0aGUgc2FtZSBjb2x1bW4pLgojIyMgY2F1c2UKYGBganNvbgpbWzcsMF1dCmBgYApDb29yZGluYXRlcyBvZiBjZWxscyB0aGF0ICJjYXVzZSIgc3RyYXRlZ3kgdG8gYmUgYXBwbGljYWJsZS4gVGhpcyBpcyBhIDJkIGFycmF5IHNvIGNhdXNlWzBdIGlzIFs3LCAwXSByZWZlcnJpbmcgdG8gdGhlIGNlbGwgd2l0aCB0aGUgOCBoaWdobGlnaHRlZCBpbiBibHVlIGluIHRoZSBuZXh0IHRvIGxhc3Qgcm93IChyb3dzIGFuZCBjb2x1bW5zIGFyZSB6ZXJvLWluZGV4ZWQpLiBjYXVzZVswXVswXSByZWZlcnMgdG8gaXQgYmVpbmcgaW4gdGhlIDh0aCByb3cgYW5kIGNhdXNlWzBdWzFdIHJlZmVycyB0byBpdCBiZWluZyBpbiB0aGUgMXN0IGNvbHVtbi4KIyMjIGdyb3VwcwpgYGBqc29uCltbMSwwXV0KYGBgCkdyb3VwIHR5cGUgYW5kIGluZGV4IG9mIGdyb3VwcyB0aGF0ICJjYXVzZSBzdHJhdGVneSIuIFRoaXMgaXMgYSAyZCBhcnJheSBzbyBncm91cFswXSBpcyBbMSwgMF0gcmVmZXJyaW5nIHRvIHRoZSBmaXJzdCBjb2x1bW4gd2l0aCBncmVlbiBib3JkZXJzLiBncm91cFswXVswXSByZWZlcnMgdG8gdGhlIGdyb3VwIHR5cGUgKDAgPSByb3csIDEgPSBjb2x1bW4sIDIgPSBib3gpIGFuZCBncm91cFswXVsxXSByZWZlcnMgdG8gaXQgYmVpbmcgdGhlIDFzdCBjb2x1bW4uCiMjIyBwbGFjZW1lbnRzCmBgYGpzb24KW10KYGBgClJvdywgY29sdW1uLCBhbmQgdmFsdWVzIGZvciBjZWxscyB0aGF0IGhhdmUgaGFkIHZhbHVlcyBwbGFjZWQgaW4gdGhlbSBhcyByZXN1bHQgb2Ygc3RyYXRlZ3kuIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gdGhpcyBzdHJhdGVneS4KIyMjIHJlbW92YWxzCmBgYGpzb24KW1sxLDAsOF1dCmBgYApOb3RlcyB0aGF0IGNhbiBiZSByZW1vdmVkIGZyb20gY2VsbHMgYWxvbmcgd2l0aCB0aGVpciByb3cgYW5kIGNvbHVtbnMuIFRoZSBmaXJzdCB0d28gdmFsdWVzIHJlcHJlc2VudCB0aGUgcm93IGFuZCBjb2x1bW4gcmVzcGVjdGl2ZWx5IHNvIHJlbW92YWxzWzBdWzBdIGFuZCByZW1vdmFsc1swXVsxXSByZWZlciB0byB0aGUgMXN0IGNlbGwgaW4gdGhlIDJuZCByb3cuIFRoZSByZXN0IG9mIHRoZSBudW1iZXJzIGluIHRoZSBzdWJhcnJheSBhcmUgdGhlIG5vdGVzIHRvIGJlIHJlbW92ZWQgd2hpY2ggaXMganVzdCA4LgojIyMgaW5mbwpgYGBqc29uCiJZb3UgY2FuIHNpbXBsaWZ5IG5vdGVzIHVzaW5nIHZhbHVlcyBhbHJlYWR5IHBsYWNlZCBpbiBjZWxscyBhdCB0aGUgc3RhcnQgb2YgdGhlIGdhbWUiCmBgYApJbmZvIGFib3V0IHRoZSBzdHJhdGVneSBiZWluZyB1c2VkIGJ5IHRoZSBoaW50LgojIyMgYWN0aW9uCmBgYGpzb24KIldoZW4gdGhlcmUgaXMgYSB2YWx1ZSBhbHJlYWR5IHBsYWNlZCBpbiBhIGNlbGwgdGhhbiBpdCBjYW4gYmUgcmVtb3ZlZCBmcm9tIGFsbCBvdGhlciBjZWxscyBub3RlcyBpbiBpdHMgcm93LCBjb2x1bW4sIGFuZCBib3giCmBgYApEZXNjcmliZXMgdGhlIGFjdGlvbiB0aGF0IHRoZSBoaW50IGlzIHN1Z2dlc3RpbmcuCiMjIEV4YW1wbGUgMzogT2J2aW91cyBTaW5nbGUKIVtFeGFtcGxlIDNdKGh0dHBzOi8vc3Vkb2t1cnUuczMuYW1hem9uYXdzLmNvbS9oaW50RXhhbXBsZTMtVjEucG5nKQojIyMgc3RyYXRlZ3kKYGBganNvbgoiT0JWSU9VU19TSU5HTEUiCmBgYApOYW1lIG9mIHN0cmF0ZWd5IHVzZWQgYnkgdGhlIGhpbnQuIE9idmlvdXMgc2luZ2xlIHdvcmtzIGJ5IHBsYWNpbmcgYSB2YWx1ZSBpbiBhIGNlbGwgd2hlcmUgaXQgaXMgdGhlIG9ubHkgcmVtYWluaW5nIHBvc3NpYmlsaXR5LiBJbiB0aGUgZXhhbXBsZSB0aGUgZ3JlZW4gaGlnaGxpZ2h0ZWQgMiBpcyB0aGUgbGFzdCByZW1haW5pbmcgcG9zc2liaWxpdHkgaW4gdGhlIGJsdWUgaGlnaGxpZ2h0ZWQgY2VsbC4KIyMjIGNhdXNlCmBgYGpzb24KW1s3LDJdXQpgYGAKQ29vcmRpbmF0ZXMgb2YgY2VsbHMgdGhhdCAiY2F1c2UiIHN0cmF0ZWd5IHRvIGJlIGFwcGxpY2FibGUuIFRoaXMgaXMgYSAyZCBhcnJheSBzbyBjYXVzZVswXSBpcyBbNywgMl0gcmVmZXJyaW5nIHRvIHRoZSAzcmQgY2VsbCBpbiB0aGUgbmV4dCB0byBsYXN0IHJvdyAocm93cyBhbmQgY29sdW1ucyBhcmUgemVyby1pbmRleGVkKS4gY2F1c2VbMF1bMF0gcmVmZXJzIHRvIGl0IGJlaW5nIGluIHRoZSA4dGggcm93IGFuZCBjYXVzZVswXVsxXSByZWZlcnMgdG8gaXQgYmVpbmcgaW4gdGhlIDNyZCBjb2x1bW4uCiMjIyBncm91cHMKYGBganNvbgpbXQpgYGAKR3JvdXAgdHlwZSBhbmQgaW5kZXggb2YgZ3JvdXBzIHRoYXQgImNhdXNlIHN0cmF0ZWd5Ii4gVGhpcyBkb2VzIG5vdCBhcHBseSB0byB0aGlzIHN0cmF0ZWd5LgojIyMgcGxhY2VtZW50cwpgYGBqc29uCltbNywyLDJdXQpgYGAKUm93LCBjb2x1bW4sIGFuZCB2YWx1ZXMgZm9yIGNlbGxzIHRoYXQgaGF2ZSBoYWQgdmFsdWVzIHBsYWNlZCBpbiB0aGVtIGFzIHJlc3VsdCBvZiBzdHJhdGVneS4gVGhpcyBpcyBhIDJkIGFycmF5IHNvIHBsYWNlbWVudHNbMF0gcmVmZXJzIHRvIHRoZSBmaXJzdCB2YWx1ZSB0aGF0IG5lZWRzIHRvIGJlIHBsYWNlZC4gVGhlIGZpcnN0IHZhbHVlIGluIHRoZSBzdWJhcnJheSByZWZlcnMgdG8gdGhlIGNlbGxzIHJvdywgdGhlIG5leHQgdmFsdWUgaXMgdGhlIGNvbHVtbiwgYW5kIHRoZSBmaW5hbCB2YWx1ZSBpcyB0aGUgdmFsdWUgdG8gYmUgcGxhY2VkICgiMiIgaW4gdGhpcyBjYXNlKS4KIyMjIHJlbW92YWxzCmBgYGpzb24KW10KYGBgCk5vdGVzIHRoYXQgY2FuIGJlIHJlbW92ZWQgZnJvbSBjZWxscyBhbG9uZyB3aXRoIHRoZWlyIHJvdyBhbmQgY29sdW1ucy4gVGhpcyBkb2VzIG5vdCBhcHBseSB0byB0aGlzIHN0cmF0ZWd5LgojIyMgaW5mbwpgYGBqc29uCiJPYnZpb3VzIHNpbmdsZXMgYXJlIHdoZW4geW91IG9ubHkgaGF2ZSBvbmUgbnVtYmVyIGxlZnQgYXMgYSBwb3NzaWJpbGl0eSBpbiBhIGNlbGwiCmBgYApJbmZvIGFib3V0IHRoZSBzdHJhdGVneSBiZWluZyB1c2VkIGJ5IHRoZSBoaW50LgojIyMgYWN0aW9uCmBgYGpzb24KIldoZW4geW91IHNlZSBhIG9idmlvdXMgc2luZ2xlIHlvdSBjYW4gZmlsbCBpdCBpbiB3aXRoIGl0cyBsYXN0IHJlbWFpbmluZyBwb3NzaWJpbGl0eSIKYGBgCkRlc2NyaWJlcyB0aGUgYWN0aW9uIHRoYXQgdGhlIGhpbnQgaXMgc3VnZ2VzdGluZy4KIyMgRXhhbXBsZSA0OiBPYnZpb3VzIFBhaXIKIVtFeGFtcGxlIDRdKGh0dHBzOi8vc3Vkb2t1cnUuczMuYW1hem9uYXdzLmNvbS9oaW50RXhhbXBsZTQtVjEucG5nKQojIyMgc3RyYXRlZ3kKYGBganNvbgoiT0JWSU9VU19QQUlSIgpgYGAKTmFtZSBvZiBzdHJhdGVneSB1c2VkIGJ5IHRoZSBoaW50LiBPYnZpb3VzIHBhaXIgd29ya3MgdXNpbmcgdHdvIGNlbGxzIHRoYXQgc2hhcmUgYSBncm91cCBhbmQgb25seSBoYXZlIHRoZSBzYW1lIHR3byBub3RlcyBsZWZ0IGFzIHBvc3NpYmlsaXRpZXMgdG8gZWxpbWluYXRlIHRob3NlIG5vdGVzIGZyb20gb3RoZXIgY2VsbHMgaW4gdGhlIGdyb3VwLiBJbiB0aGUgZXhhbXBsZSA3IGFuZCA4IGFyZSB0aGUgbGFzdCByZW1haW5pbmcgcG9zc2liaWxpdGllcyBpbiB0aGUgYmx1ZSBoaWdobGlnaHRlZCBjZWxscyB3aGljaCBhcmUgdXNlZCB0byByZW1vdmUgYWxsIHRoZSBvdGhlciA3IGFuZCA4cyBpbiB0aGUgY29sdW1uIHNob3duIGhpZ2hsaWdodGVkIGluIHJlZC4KIyMjIGNhdXNlCmBgYGpzb24KW1sxLDhdLFs2LDhdXQpgYGAKQ29vcmRpbmF0ZXMgb2YgY2VsbHMgdGhhdCAiY2F1c2UiIHN0cmF0ZWd5IHRvIGJlIGFwcGxpY2FibGUuIFRoaXMgaXMgYSAyZCBhcnJheSBzbyBjYXVzZVswXSBpcyBbMSwgOF0gcmVmZXJyaW5nIHRvIHRoZSA5dGggY2VsbCBpbiB0aGUgc2Vjb25kIHJvdyAocm93cyBhbmQgY29sdW1ucyBhcmUgemVyby1pbmRleGVkKS4gY2F1c2VbMF1bMF0gcmVmZXJzIHRvIGl0IGJlaW5nIGluIHRoZSAybmQgcm93IGFuZCBjYXVzZVswXVsxXSByZWZlcnMgdG8gaXQgYmVpbmcgaW4gdGhlIDl0aCBjb2x1bW4uCiMjIyBncm91cHMKYGBganNvbgpbWzEsOF1dCmBgYApHcm91cCB0eXBlIGFuZCBpbmRleCBvZiBncm91cHMgdGhhdCAiY2F1c2Ugc3RyYXRlZ3kiLiBUaGlzIGlzIGEgMmQgYXJyYXkgc28gZ3JvdXBbMF0gaXMgWzEsIDhdIHJlZmVycmluZyB0byB0aGUgbGFzdCBjb2x1bW4gd2l0aCBncmVlbiBib3JkZXJzLiBncm91cFswXVswXSByZWZlcnMgdG8gdGhlIGdyb3VwIHR5cGUgKDAgPSByb3csIDEgPSBjb2x1bW4sIDIgPSBib3gpIGFuZCBncm91cFswXVsxXSByZWZlcnMgdG8gaXQgYmVpbmcgdGhlIDl0aCBjb2x1bW4uCiMjIyBwbGFjZW1lbnRzCmBgYGpzb24KW10KYGBgClJvdywgY29sdW1uLCBhbmQgdmFsdWVzIGZvciBjZWxscyB0aGF0IGhhdmUgaGFkIHZhbHVlcyBwbGFjZWQgaW4gdGhlbSBhcyByZXN1bHQgb2Ygc3RyYXRlZ3kuIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gdGhpcyBzdHJhdGVneS4KIyMjIHJlbW92YWxzCmBgYGpzb24KW1szLDgsNyw4XSxbNCw4LDcsOF1dCmBgYApOb3RlcyB0aGF0IGNhbiBiZSByZW1vdmVkIGZyb20gY2VsbHMgYWxvbmcgd2l0aCB0aGVpciByb3cgYW5kIGNvbHVtbnMuIFRoZSBmaXJzdCB0d28gdmFsdWVzIGluIGVhY2ggc3ViYXJyYXkgcmVwcmVzZW50IHRoZSByb3cgYW5kIGNvbHVtbiByZXNwZWN0aXZlbHkgc28gcmVtb3ZhbHNbMF1bMF0gYW5kIHJlbW92YWxzWzBdWzFdIHJlZmVyIHRvIHRoZSA5dGggY2VsbCBpbiB0aGUgNHRoIHJvdy4gVGhlIHJlc3Qgb2YgdGhlIG51bWJlcnMgaW4gdGhlIHN1YmFycmF5IGFyZSB0aGUgbm90ZXMgdG8gYmUgcmVtb3ZlZCB3aGljaCBpcyA3IGFuZCA4IChhbHRob3VnaCBvbmx5IDggaXMgdGhlcmUgdG8gYmVnaW4gd2l0aCBhbmQgaXMgaGlnaGxpZ2h0ZWQgaW4gcmVkKS4KIyMjIGluZm8KYGBganNvbgoiT2J2aW91cyBwYWlycyBhcmUgd2hlbiB5b3Ugb25seSBoYXZlIHRoZSBzYW1lIHR3byBudW1iZXJzIGxlZnQgYXMgYSBwb3NzaWJpbGl0eSBpbiB0d28gY2VsbHMgaW4gdGhlIHNhbWUgcm93LCBjb2x1bW4sIG9yIGJveCIKYGBgCkluZm8gYWJvdXQgdGhlIHN0cmF0ZWd5IGJlaW5nIHVzZWQgYnkgdGhlIGhpbnQuCiMjIyBhY3Rpb24KYGBganNvbgoiV2hlbiB5b3Ugc2VlIGEgb2J2aW91cyBwYWlyIHlvdSBjYW4gcmVtb3ZlIHRoZW0gZnJvbSB0aGUgbm90ZXMgb2YgZXZlcnkgb3RoZXIgY2VsbCBpbiB0aGUgcm93LCBjb2x1bW4sIG9yIGJveCB0aGF0IHRoZXkgc2hhcmUiCmBgYApEZXNjcmliZXMgdGhlIGFjdGlvbiB0aGF0IHRoZSBoaW50IGlzIHN1Z2dlc3RpbmcuCiMjIEV4YW1wbGUgNTogT3RoZXIgT2J2aW91cyBTZXRzCiMjIyBzdHJhdGVneQpgYGBqc29uCiJPQlZJT1VTX1RSSVBMRVQiCmBgYAojIyMgc3RyYXRlZ3kKYGBganNvbgoiT0JWSU9VU19RVUFEUlVQTEVUIgpgYGAKTmFtZSBvZiBzdHJhdGVneSB1c2VkIGJ5IHRoZSBoaW50LiBPYnZpb3VzIHRyaXBsZXRzIHRocm91Z2ggb2N0dXBsZXRzIGFyZSBzY2FsZWQgdXAgdmVyc2lvbnMgb2Ygb2J2aW91cyBwYWlycyBleGNlcHQgaW5zdGVhZCBvZiB1c2luZyB0d28gY2VsbHMgYW5kIG5vdGVzIHRoZXkgc2hhcmUgMy04LiBOb3RlOiB3aGlsZSBjZWxscyBpbiBzYXkgYSBvYnZpb3VzIHF1YWRydXBsZXQgbXVzdCBzaGFyZSB0aGUgc2FtZSA0IG5vdGVzIHRoZSA0IGNlbGxzIGRvbid0IGhhdmUgdG8gaW5kaXZpZHVhbGx5IGhhdmUgYWxsIDQgbm90ZXMgdGhleSBqdXN0IGNhbid0IGhhdmUgYW55IG90aGVyIG5vdGVzLgojIyBFeGFtcGxlIDY6IEhpZGRlbiBTaW5nbGUKIVtFeGFtcGxlIDZdKGh0dHBzOi8vc3Vkb2t1cnUuczMuYW1hem9uYXdzLmNvbS9oaW50RXhhbXBsZTUtVjEucG5nKQojIyMgc3RyYXRlZ3kKYGBganNvbgoiSElEREVOX1NJTkdMRSIKYGBgCk5hbWUgb2Ygc3RyYXRlZ3kgdXNlZCBieSB0aGUgaGludC4gSGlkZGVuIHNpbmdsZSB3b3JrcyBieSBoYXZpbmcgb25seSBvbmUgY2VsbCBpbiBhIGdyb3VwIHRoYXQgc3RpbGwgaGFzIGEgbnVtYmVyIGFzIGEgcG9zc2liaWxpdHkgaW4gd2hpY2ggY2FzZSBhbGwgb3RoZXIgbm90ZXMgY2FuIGJlIHJlbW92ZWQgZnJvbSBpdC4gVGhpcyBpcyBzaG93biBieSB0aGUgOCBvYnZpb3VzIHNpbmdsZSB3aGljaCBpbiB0aGUgb25seSA4IG5vdGUgaW4gdGhlIGJveCB3aXRoIHRoZSBncmVlbiBib3JkZXIuIFRoZXJlZm9yZSwgdGhlIG90aGVyIG5vdGVzIGhpZ2hsaWdodGVkIGluIHJlZCBjYW4gYmUgcmVtb3ZlZC4KIyMjIGNhdXNlCmBgYGpzb24KW1szLDhdLFs0LDhdLFs1LDZdLFs1LDhdXQpgYGAKQ29vcmRpbmF0ZXMgb2YgY2VsbHMgdGhhdCAiY2F1c2UiIHN0cmF0ZWd5IHRvIGJlIGFwcGxpY2FibGUuIFRoaXMgaXMgYSAyZCBhcnJheSBzbyBjYXVzZVswXSBpcyBbMywgOF0gcmVmZXJyaW5nIHRvIHRoZSA5dGggY2VsbCBpbiB0aGUgNHRoIHJvdyAocm93cyBhbmQgY29sdW1ucyBhcmUgemVyby1pbmRleGVkKS4gY2F1c2VbMF1bMF0gcmVmZXJzIHRvIGl0IGJlaW5nIGluIHRoZSA0dGggcm93IGFuZCBjYXVzZVswXVsxXSByZWZlcnMgdG8gaXQgYmVpbmcgaW4gdGhlIDl0aCBjb2x1bW4uCiMjIyBncm91cHMKYGBganNvbgpbWzIsNV1dCmBgYApHcm91cCB0eXBlIGFuZCBpbmRleCBvZiBncm91cHMgdGhhdCAiY2F1c2Ugc3RyYXRlZ3kiLiBUaGlzIGlzIGEgMmQgYXJyYXkgc28gZ3JvdXBbMF0gaXMgWzIsIDVdIHJlZmVycmluZyB0byB0aGUgNnRoIGJveCB3aXRoIGdyZWVuIGJvcmRlcnMgKGJveGVzIGFyZSB6ZXJvLWluZGV4ZWQgc3RhcnRpbmcgd2l0aCB0aGUgdG9wIGxlZnQgYW5kIGdvaW5nIGxlZnQgdG8gcmlnaHQgdG9wIHRvIGJvdHRvbSkuIGdyb3VwWzBdWzBdIHJlZmVycyB0byB0aGUgZ3JvdXAgdHlwZSAoMCA9IHJvdywgMSA9IGNvbHVtbiwgMiA9IGJveCkgYW5kIGdyb3VwWzBdWzFdIHJlZmVycyB0byBpdCBiZWluZyB0aGUgNnRoIGJveC4KIyMjIHBsYWNlbWVudHMKYGBganNvbgpbXQpgYGAKUm93LCBjb2x1bW4sIGFuZCB2YWx1ZXMgZm9yIGNlbGxzIHRoYXQgaGF2ZSBoYWQgdmFsdWVzIHBsYWNlZCBpbiB0aGVtIGFzIHJlc3VsdCBvZiBzdHJhdGVneS4gVGhpcyBkb2VzIG5vdCBhcHBseSB0byB0aGlzIHN0cmF0ZWd5LgojIyMgcmVtb3ZhbHMKYGBganNvbgpbWzMsNiwxLDIsMyw5XV0KYGBgCk5vdGVzIHRoYXQgY2FuIGJlIHJlbW92ZWQgZnJvbSBjZWxscyBhbG9uZyB3aXRoIHRoZWlyIHJvdyBhbmQgY29sdW1ucy4gVGhlIGZpcnN0IHR3byB2YWx1ZXMgaW4gZWFjaCBzdWJhcnJheSByZXByZXNlbnQgdGhlIHJvdyBhbmQgY29sdW1uIHJlc3BlY3RpdmVseSBzbyByZW1vdmFsc1swXVswXSBhbmQgcmVtb3ZhbHNbMF1bMV0gcmVmZXIgdG8gdGhlIDd0aCBjZWxsIGluIHRoZSA0dGggcm93LiBUaGUgcmVzdCBvZiB0aGUgbnVtYmVycyBpbiB0aGUgc3ViYXJyYXkgYXJlIHRoZSBub3RlcyB0byBiZSByZW1vdmVkIHdoaWNoIGlzIDEsIDIsIDMsIGFuZCA5IChhbHRob3VnaCBvbmx5IDEgYW5kIDMgYXJlIHByZXNlbnQgYW5kIGFyZSBoaWdobGlnaHRlZCBpbiByZWQpLgojIyMgaW5mbwpgYGBqc29uCiJIaWRkZW4gc2luZ2xlcyBhcmUgd2hlbiB5b3Ugb25seSBoYXZlIG9uZSBjZWxsIGxlZnQgc3RpbGwgY29udGFpbmluZyBhIHNwZWNpZmljIHZhbHVlIGluIGEgcm93LCBjb2x1bW4sIG9yIGJveCIKYGBgCkluZm8gYWJvdXQgdGhlIHN0cmF0ZWd5IGJlaW5nIHVzZWQgYnkgdGhlIGhpbnQuCiMjIyBhY3Rpb24KYGBganNvbgoiV2hlbiB5b3Ugc2VlIGEgaGlkZGVuIHNpbmdsZSB5b3UgY2FuIHJlbW92ZSBhbGwgbm90ZXMgb3RoZXIgdGhhbiB0aGUgc2luZ2xlIGZyb20gdGhlIGNlbGwiCmBgYApEZXNjcmliZXMgdGhlIGFjdGlvbiB0aGF0IHRoZSBoaW50IGlzIHN1Z2dlc3RpbmcuCiMjIEV4YW1wbGUgNzogSGlkZGVuIFBhaXIKIVtFeGFtcGxlIDddKGh0dHBzOi8vc3Vkb2t1cnUuczMuYW1hem9uYXdzLmNvbS9oaW50RXhhbXBsZTYtVjEucG5nKQojIyMgc3RyYXRlZ3kKYGBganNvbgoiSElEREVOX1BBSVIiCmBgYApOYW1lIG9mIHN0cmF0ZWd5IHVzZWQgYnkgdGhlIGhpbnQuIEhpZGRlbiBwYWlyIHdvcmtzIGJ5IGhhdmluZyBvbmx5IHR3byBjZWxscyBpbiBhIGdyb3VwIHRoYXQgc3RpbGwgaGF2ZSB0d28gc3BlY2lmaWMgbnVtYmVycyBhcyBwb3NzaWJpbGl0aWVzIGluIHdoaWNoIGNhc2UgYWxsIG90aGVyIG5vdGVzIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHBhaXIgb2YgY2VsbHMuIFRoaXMgaXMgc2hvd24gYnkgdGhlIG9idmlvdXMgcGFpciBpbiB0aGUgdG9wIHJpZ2h0IGluIHdoaWNoIHRoZXkgaGF2ZSB0aGUgb25seSAyIGFuZCAzJ3MgaW4gdGhlIGJveCB3aXRoIHRoZSBncmVlbiBib3JkZXIuIFRoZXJlZm9yZSwgdGhlIG90aGVyIG5vdGVzIGhpZ2hsaWdodGVkIGluIHJlZCBjYW4gYmUgcmVtb3ZlZC4KIyMjIGNhdXNlCmBgYGpzb24KW1swLDddLFsxLDddLFsxLDhdXQpgYGAKQ29vcmRpbmF0ZXMgb2YgY2VsbHMgdGhhdCAiY2F1c2UiIHN0cmF0ZWd5IHRvIGJlIGFwcGxpY2FibGUuIFRoaXMgaXMgYSAyZCBhcnJheSBzbyBjYXVzZVswXSBpcyBbMCwgN10gcmVmZXJyaW5nIHRvIHRoZSA4dGggY2VsbCBpbiB0aGUgMXN0IHJvdyAocm93cyBhbmQgY29sdW1ucyBhcmUgemVyby1pbmRleGVkKS4gY2F1c2VbMF1bMF0gcmVmZXJzIHRvIGl0IGJlaW5nIGluIHRoZSAxc3Qgcm93IGFuZCBjYXVzZVswXVsxXSByZWZlcnMgdG8gaXQgYmVpbmcgaW4gdGhlIDh0aCBjb2x1bW4uCiMjIyBncm91cHMKYGBganNvbgpbWzIsMl1dCmBgYApHcm91cCB0eXBlIGFuZCBpbmRleCBvZiBncm91cHMgdGhhdCAiY2F1c2Ugc3RyYXRlZ3kiLiBUaGlzIGlzIGEgMmQgYXJyYXkgc28gZ3JvdXBbMF0gaXMgWzIsIDJdIHJlZmVycmluZyB0byB0aGUgM3JkIGJveCB3aXRoIGdyZWVuIGJvcmRlcnMgKGJveGVzIGFyZSB6ZXJvLWluZGV4ZWQgc3RhcnRpbmcgd2l0aCB0aGUgdG9wIGxlZnQgYW5kIGdvaW5nIGxlZnQgdG8gcmlnaHQgdG9wIHRvIGJvdHRvbSkuIGdyb3VwWzBdWzBdIHJlZmVycyB0byB0aGUgZ3JvdXAgdHlwZSAoMCA9IHJvdywgMSA9IGNvbHVtbiwgMiA9IGJveCkgYW5kIGdyb3VwWzBdWzFdIHJlZmVycyB0byBpdCBiZWluZyB0aGUgM3JkIGJveC4KIyMjIHBsYWNlbWVudHMKYGBganNvbgpbXQpgYGAKUm93LCBjb2x1bW4sIGFuZCB2YWx1ZXMgZm9yIGNlbGxzIHRoYXQgaGF2ZSBoYWQgdmFsdWVzIHBsYWNlZCBpbiB0aGVtIGFzIHJlc3VsdCBvZiBzdHJhdGVneS4gVGhpcyBkb2VzIG5vdCBhcHBseSB0byB0aGlzIHN0cmF0ZWd5LgojIyMgcmVtb3ZhbHMKYGBganNvbgpbWzAsNiwxLDcsOF0sWzIsNiwxLDcsOF1dCmBgYApOb3RlcyB0aGF0IGNhbiBiZSByZW1vdmVkIGZyb20gY2VsbHMgYWxvbmcgd2l0aCB0aGVpciByb3cgYW5kIGNvbHVtbnMuIFRoZSBmaXJzdCB0d28gdmFsdWVzIGluIGVhY2ggc3ViYXJyYXkgcmVwcmVzZW50IHRoZSByb3cgYW5kIGNvbHVtbiByZXNwZWN0aXZlbHkgc28gcmVtb3ZhbHNbMF1bMF0gYW5kIHJlbW92YWxzWzBdWzFdIHJlZmVyIHRvIHRoZSA3dGggY2VsbCBpbiB0aGUgMXN0IHJvdy4gVGhlIHJlc3Qgb2YgdGhlIG51bWJlcnMgaW4gdGhlIHN1YmFycmF5IGFyZSB0aGUgbm90ZXMgdG8gYmUgcmVtb3ZlZCB3aGljaCBpcyAxLCA3LCBhbmQgOCAoYWx0aG91Z2ggb25seSAxIGFuZCA4IGFyZSBwcmVzZW50IGFuZCBhcmUgaGlnaGxpZ2h0ZWQgaW4gcmVkIGluIHRoZSBjZWxsIGluIHRoZSBmaXJzdCByb3cpLgojIyMgaW5mbwpgYGBqc29uCiJIaWRkZW4gcGFpcnMgYXJlIHdoZW4geW91IG9ubHkgaGF2ZSB0d28gY2VsbHMgbGVmdCBzdGlsbCBjb250YWluaW5nIHR3byBzcGVjaWZpYyB2YWx1ZXMgaW4gYSBzaGFyZWQgcm93LCBjb2x1bW4sIG9yIGJveCIKYGBgCkluZm8gYWJvdXQgdGhlIHN0cmF0ZWd5IGJlaW5nIHVzZWQgYnkgdGhlIGhpbnQuCiMjIyBhY3Rpb24KYGBganNvbgoiV2hlbiB5b3Ugc2VlIGEgaGlkZGVuIHBhaXIgeW91IGNhbiByZW1vdmUgYWxsIG5vdGVzIG90aGVyIHRoYW4gdGhlIHBhaXIgZnJvbSB0aGUgY2VsbHMiCmBgYApEZXNjcmliZXMgdGhlIGFjdGlvbiB0aGF0IHRoZSBoaW50IGlzIHN1Z2dlc3RpbmcuCiMjIEV4YW1wbGUgODogT3RoZXIgSGlkZGVuIFNldHMKIyMjIHN0cmF0ZWd5CmBgYGpzb24KIkhJRERFTl9UUklQTEVUIgpgYGAKIyMjIHN0cmF0ZWd5CmBgYGpzb24KIkhJRERFTl9RVUFEUlVQTEVUIgpgYGAKTmFtZSBvZiBzdHJhdGVneSB1c2VkIGJ5IHRoZSBoaW50LiBIaWRkZW4gdHJpcGxldHMgdGhyb3VnaCBvY3R1cGxldHMgYXJlIHNjYWxlZCB1cCB2ZXJzaW9ucyBvZiBoaWRkZW4gcGFpcnMgZXhjZXB0IGluc3RlYWQgb2YgdXNpbmcgdHdvIGNlbGxzIGFuZCBub3RlcyB0aGV5IHNoYXJlIDMtOC4gTm90ZTogd2hpbGUgY2VsbHMgaW4gc2F5IGEgaGlkZGVuIHF1YWRydXBsZXQgbXVzdCBzaGFyZSB0aGUgc2FtZSA0IG5vdGVzIHRoZSA0IGNlbGxzIGRvbid0IGhhdmUgdG8gaW5kaXZpZHVhbGx5IGhhdmUgYWxsIDQgbm90ZXMgdGhleSBqdXN0IGhhdmUgdG8gYmUgdGhlIG9ubHkgY2VsbHMgaW4gdGhlIGdyb3VwIHRoYXQgaGF2ZSB0aG9zZSBub3Rlcy4KIyMgRXhhbXBsZSA5OiBQb2ludGluZyBQYWlyCiFbRXhhbXBsZSA4XShodHRwczovL3N1ZG9rdXJ1LnMzLmFtYXpvbmF3cy5jb20vaGludEV4YW1wbGU3LVYxLnBuZykKIyMjIHN0cmF0ZWd5CmBgYGpzb24KIlBPSU5USU5HX1BBSVIiCmBgYApOYW1lIG9mIHN0cmF0ZWd5IHVzZWQgYnkgdGhlIGhpbnQuIFBvaW50aW5nIHBhaXIgd29ya3MgYnkgaGF2aW5nIG9ubHkgdHdvIGNlbGxzIGluIGEgYm94IHRoYXQgc3RpbGwgaGF2ZSBhIHNwZWNpZmljIG51bWJlcnMgYXMgYSBwb3NzaWJpbGl0eSBhbmQgYWxzbyBzaGFyZSBhIHJvdyBvciBjb2x1bW4gaW4gd2hpY2ggY2FzZSBhbGwgb3RoZXIgbm90ZXMgY2FuIGJlIHJlbW92ZWQgZnJvbSBhbnkgb3RoZXIgY2VsbHMgaW4gdGhlIHNoYXJlZCByb3cgb3IgY29sdW1uIGV4Y2VwdCBmb3IgdGhlIHBvaW50aW5nIHBhaXIgdGhlbXNlbGYuIFRoaXMgaXMgc2hvd24gYnkgdGhlIHBvaW50aW5nIHBhaXIgaW4gdGhlIHRvcCByaWdodCBpbiB3aGljaCB0aGV5IGhhdmUgdGhlIG9ubHkgNidzIGluIHRoZSBib3ggYXJlIGluIHRoZSB0d28gY2VsbHMgaGlnaGxpZ2h0ZWQgaW4gYmx1ZSBvbiB0aGUgc2FtZSByb3cuIFRoZXJlZm9yZSwgdGhlIG90aGVyIG5vdGVzIGhpZ2hsaWdodGVkIGluIHJlZCBjYW4gYmUgcmVtb3ZlZC4KIyMjIGNhdXNlCmBgYGpzb24KW1swLDZdLFswLDhdXQpgYGAKQ29vcmRpbmF0ZXMgb2YgY2VsbHMgdGhhdCAiY2F1c2UiIHN0cmF0ZWd5IHRvIGJlIGFwcGxpY2FibGUuCiMjIyBncm91cHMKYGBganNvbgpbWzAsMF0sWzIsMl1dCmBgYApHcm91cCB0eXBlIGFuZCBpbmRleCBvZiBncm91cHMgdGhhdCAiY2F1c2Ugc3RyYXRlZ3kiLgojIyMgcGxhY2VtZW50cwpgYGBqc29uCltdCmBgYApSb3csIGNvbHVtbiwgYW5kIHZhbHVlcyBmb3IgY2VsbHMgdGhhdCBoYXZlIGhhZCB2YWx1ZXMgcGxhY2VkIGluIHRoZW0gYXMgcmVzdWx0IG9mIHN0cmF0ZWd5LiBUaGlzIGRvZXMgbm90IGFwcGx5IHRvIHRoaXMgc3RyYXRlZ3kuCiMjIyByZW1vdmFscwpgYGBqc29uCltbMCwxLDZdLFswLDIsNl1dCmBgYApOb3RlcyB0aGF0IGNhbiBiZSByZW1vdmVkIGZyb20gY2VsbHMgYWxvbmcgd2l0aCB0aGVpciByb3cgYW5kIGNvbHVtbnMuIFRoZSBmaXJzdCB0d28gdmFsdWVzIGluIGVhY2ggc3ViYXJyYXkgcmVwcmVzZW50IHRoZSByb3cgYW5kIGNvbHVtbiByZXNwZWN0aXZlbHkuCiMjIyBpbmZvCmBgYGpzb24KIlBvaW50aW5nIHBhaXJzIGFyZSB3aGVuIHlvdSBvbmx5IGhhdmUgdHdvIGNlbGxzIGluIGEgcm93IG9yIGNvbHVtbiBsZWZ0IHN0aWxsIGNvbnRhaW5pbmcgYSBzcGVjaWZpYyB2YWx1ZSBhbmQgdGhlIGNlbGxzIGFsc28gc2hhcmUgYSBib3giCmBgYApJbmZvIGFib3V0IHRoZSBzdHJhdGVneSBiZWluZyB1c2VkIGJ5IHRoZSBoaW50LgojIyMgYWN0aW9uCmBgYGpzb24KIldoZW4geW91IHNlZSBhIHBvaW50aW5nIHBhaXIgeW91IGNhbiByZW1vdmUgYWxsIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2hhcmVkIG5vdGUgZnJvbSB0aGUgYm94IChleGNlcHQgZm9yIHRob3NlIGluIHRoZSBwYWlyIHRoZW1zZWxmKSIKYGBgCkRlc2NyaWJlcyB0aGUgYWN0aW9uIHRoYXQgdGhlIGhpbnQgaXMgc3VnZ2VzdGluZy4KIyBQdXp6bGVEYXRhIE9iamVjdCBQcm9wZXJ0aWVzCiMjIHNvbHV0aW9uCjgxIGNoYXJhY3RlciBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzb2x1dGlvbiB0byB0aGUgcHV6emxlIChsZWZ0IHRvIHJpZ2h0IHRvcCB0byBib3R0b20pCiMjIGRpZmZpY3VsdHkKTnVtYmVyIHJlcHJlc2VudGluZyB0aGUgZGlmZmljdWx0eSBvZiB0aGUgcHV6emxlIChoaWdoZXIgaXMgaGFyZGVyKQojIyBnaXZlbnNDb3VudApOdW1iZXIgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgZ2l2ZW5zIGkuZS4gcHJlLWZpbGxlZCBjZWxscyBpbiB0aGUgcHV6emxlCiMjIHB1enpsZVN0cmF0ZWdpZXMKQm9vbGVhbiBhcnJheSByZXByZXNlbnRpbmcgd2hpY2ggc3RyYXRlZ2llcyB3ZXJlIHVzZWQgdG8gc29sdmUgdGhlIHB1enpsZSBpbiBmb2xsb3dpbmcgb3JkZXIgKHN1YnNldCBvZiBTdHJhdGVneUVudW0pOgotIDA6IE9CVklPVVNfU0lOR0xFLAotIDE6IEhJRERFTl9TSU5HTEUsCi0gMjogT0JWSU9VU19QQUlSLAotIDM6IEhJRERFTl9QQUlSLAotIDQ6IFBPSU5USU5HX1BBSVIsCi0gNTogT0JWSU9VU19UUklQTEVULAotIDY6IEhJRERFTl9UUklQTEVULAotIDc6IFBPSU5USU5HX1RSSVBMRVQsCi0gODogT0JWSU9VU19RVUFEUlVQTEVULAotIDk6IEhJRERFTl9RVUFEUlVQTEVULAojIyBkcmlsbHMKLSAxRCBudW1iZXIgYXJyYXkgcmVwcmVzZW50aW5nIGxhc3QgdGltZSBzdHJhdGVneSBjYW4gYmUgcmVhc29uYWJseSB1c2VkIGFzIGRyaWxsIG9yIC0xIGlmIGl0IGNhbid0IGJlIHVzZWQgYXMgYSBkcmlsbAotIEVhY2ggaW5kZXggaXMgZGVmaW5lZCBhcyB0aGUgcHV6emxlIHdoZW4gaXQgaGFzIGEgY2VydGFpbiBudW1iZXIgb2YgY2VsbHMgZmlsbGVkIGluIChzbyBpbmRleCAzMCBoYXMgMzAgY2VsbHMgZmlsbGVkIGluIGluY2x1ZGluZyBnaXZlbnMpLgotIFJlYXNvbmFibHkgaXMgZGVmaW5lZCBhcyB0byBtZWFuIHJlbW92aW5nIHN0cmF0ZWdpZXMgaWYgdGhleSBvdmVybGFwIHdpdGggdGhlaXIgcHJlcmVxcyAoaS5lLiBpZiBhIG9idmlvdXMgcGFpciBpcyBtYWRlIHVwIG9mIHR3byBvYnZpb3VzIHNpbmdsZXMgdGhlIHBhaXIgd2lsbCBiZSBleGNsdWRlZCkgYW5kIG5vdCBjb3VudGluZyBhIHN0cmF0ZWd5IGlmIG11bHRpcGxlIGluc3RhbmNlcyBvZiBpdCBhcmUgcHJlc2VudCBzbyB0aGVpciBpcyBvbmx5IG9uZSBjb3JyZWN0IGFuc3dlci4KLSBUaGUgc2FtZSBudW1iZXIgaW5kZXggdG8gc3RyYXRlZ3kgbWFwcGluZyBhcyBwdXp6bGVTdHJhdGVnaWVzIGlzIHVzZWQuCgojIERldmVsb3BlciBUb29scwoKQ2xvbmUgUmVwb3NpdG9yeQpgYGBzaGVsbApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL1N1ZG9LdXJ1L1N1ZG9rdXJ1LmdpdApgYGAKCmBgYHNoZWxsCmJ1biBpbnN0YWxsICMgb3IgbnBtIGluc3RhbGwKYGBgCgpbSW5zdGFsbCBwcmUtY29tbWl0IGhvb2tzXShodHRwczovL3ByZS1jb21taXQuY29tLyNpbnN0YWxsKQoKUnVuIHRoZSBiZWxvdyBjb21tYW5kIHRvIHNldHVwIHByZS1jb21taXQgaG9va3M6CgpgYGBzaGVsbApwcmUtY29tbWl0IGluc3RhbGwKYGBgCgpQcmUtY29tbWl0IGhvb2tzIGNhbiBiZSBydW4gbWFudWFsbHkgd2l0aCBiZWxvdyBjb21tYW5kLCBidXQKd2lsbCBhbHdheXMgcnVuIGJlZm9yZSBnaXQgY29tbWl0IGFuZCBnaXQgcHVzaCBpZiBzZXR1cCBjb3JyZWN0bHkuCgpgYGBzaGVsbApucG0gcnVuIHByZS1jb21taXQKYGBgCgpgYGBidW4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uUGFzc2VkYGBgCgpTaG91bGQgYXBwZWFyIGluIHRoZSBnaXQgb3V0cHV0IGxvZ3MgYWZ0ZXIgYSBjb21taXQuCgoKYGBgc2hlbGwKIyBJbnN0YWxsIERldmVsb3BlciBEZXBlbmRlbmNpZXMKYnVuIGluc3RhbGwKYGBgCgpSdW4gVGVzdHMKCkNvdmVyYWdlIHJlcG9ydHMgYXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGNhbiBjYW4gYmUgdmlld2VkIGluIGBqZXN0LWNvdmVyYWdlYCBmb2xkZXIKYGBgc2hlbGwKbnBtIHJ1biB0ZXN0CmBgYApSdW4gVGVzdHMgd2l0aG91dCBjb3ZlcmFnZSAoZmFzdGVyKQpgYGBzaGVsbApidW4gdGVzdApgYGAKCkJ1aWxkIGRpc3QgRm9sZGVyCmBgYHNoZWxsCmJ1biBidWlsZApgYGAKCkNyZWF0ZSBMb2NhbCBUeXBlRG9jIERvY3VtZW50YXRpb24KYGBgc2hlbGwKYnVuIHVwZGF0ZS1kb2NzCmBgYAoKVGhlIGZvbGxvd2luZyBjYW4gYWxzbyBiZSBkb25lIGFmdGVyIGluc3RhbGxpbmcgdGhlIG5wbSBwYWNrYWdlIGJ5IG5hdmlnYXRpbmcgdG8gbm9kZV9tb2R1bGVzL3N1ZG9rdXJ1CgpSdW4gRGVtbyBTZXJ2ZXIgb24gaHR0cDovL2xvY2FsaG9zdDozMTAwLwpgYGBzaGVsbApidW4gc3RhcnQKYGBgCmBgYHNoZWxsCiMgQ2FuIG9wZW4gaW50ZXJhY3RpdmUgU29sdmVyIERlbW8gaW4gYnJvd3NlciB3aGlsZSBEZW1vIFNlcnZlciBpcyBydW5uaW5nIChHZW5lcmF0b3IvRGVtby9kZW1vLmh0bWwpCgojIERlbW8gU2VydmVyIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZmFrZXMgZm9yIFB1enpsZSBDbGFzcyAodXNlIGh0dHA6Ly9sb2NhbGhvc3Q6MzEwMC8gYXMgdXJsKQojIFB1enpsZXMuc3RhcnRHYW1lKCk6IFdpbGwgb3ZlcndyaXRlIHRleHQgZmlsZSB3aXRoIGFjdGl2ZUdhbWUgY29uc3RhbnQgYW5kIHJldHVybiBpdCB0byB1c2VyCiMgUHV6emxlcy5nZXRHYW1lKCk6IFdpbGwgcmV0dXJuIHRoZSBhY3RpdmVHYW1lIGZyb20gdGV4dCBmaWxlIG9yIHJldHVybiA0MDQgZXJyb3IgaWYgdGhlIHRleHQgZmlsZSBkb2Vzbid0IGV4aXN0CiMgUHV6emxlcy5zYXZlR2FtZSgpOiBBdHRlbXB0cyB0byBzYXZlIGNoYW5nZXMgdG8gYWN0aXZlR2FtZSBzdG9yZWQgbG9jYWxseSBpbiBhIHRleHQgZmlsZSBhbmQgcmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwKIyBQdXp6bGVzLmZpbmlzaEdhbWUoKTogQXR0ZW1wdHMgdG8gZGVsZXRlIGFjdGl2ZUdhbWUgc3RvcmVkIGxvY2FsbHkgaW4gYSB0ZXh0IGZpbGUgYW5kIHJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsCiMgRHJpbGxzLmdldEdhbWUoKTogV2lsbCByZXR1cm4gYSBwdXp6bGUgc3RyaW5nIGNvbnN0YW50CgojIENhbiBtb2RpZnkgYSBsZXNzb25zIGJ5IGRvaW5nIHRoZSBmb2xsb3dpbmc6CjEuIExvZyBpbnRvIEFXUyBDb25zb2xlIHVzaW5nIHRlYW0gSUFNIHVzZXIKMi4gTmF2aWdhdGUgdG8gUzMKMy4gTmF2aWdhdGUgdG8gc3Vkb2t1cnUgYnVja2V0CjQuIE5hdmlnYXRlIHRvIExlc3NvbnMgZm9sZGVyCjUuIERvd25sb2FkIHRoZSBsZXNzb25zIGpzb24gZmlsZSBlLmcuIEFNRU5EX05PVEVTLmpzb24KNi4gTWFrZSBjaGFuZ2VzIGxvY2FsbHkgdG8gdGhlIGpzb24gZmlsZQo3LiBVcGxvYWQgdGhlIGpzb24gZmlsZSAoaXQgd2lsbCBvdmVyd3JpdGUgdGhlIG9sZCB2ZXJzaW9uKQoKIyBDYW4gYWRkIGEgbGVzc29uIGJ5IGRvaW5nIHRoZSBmb2xsb3dpbmc6CjEuIE5hdmlnYXRlIHRvIFMzIHN1ZG9rdXJ1IGJ1Y2tldCBMZXNzb25zIGZvbGRlciBzYW1lIGFzIGluIG1vZGlmeWluZyBsZXNzb24gaW5zdHJ1Y3Rpb25zIGFib3ZlCjIuIFVwbG9hZCB0aGUgbmV3IGxlc3NvbiBqc29uIGZpbGUgdXNpbmcgdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBleGlzdGluZyBvbmVzCjMuIERvd25sb2FkIHN0cmF0ZWdpZXMuanNvbgo0LiBBZGQgdGhlIG5ldyBzdHJhdGVnaWVzIG5hbWUgKHNhbWUgYXMgdXBsb2FkZWQgZmlsZSBuYW1lKSB0byBzdHJhdGVnaWVzLmpzb24gbG9jYWxseQo1LiBVcGxvYWQgdGhlIGpzb24gZmlsZSAoaXQgd2lsbCBvdmVyd3JpdGUgdGhlIG9sZCB2ZXJzaW9uKQpgYGAKT2ZmaWNpYWwgVHlwZURvYyBEb2N1bWVudGF0aW9uIGlzIEhvc3RlZCBIZXJlOiBodHRwczovL3N1ZG9rdXJ1LmdpdGh1Yi5pby9TdWRva3VQdXp6bGVHZW5lcmF0b3IvCgo= readmeEtag: '"611074b7b41212110e593aa5ef7db41fa87663f3"' readmeLastModified: Thu, 24 Jul 2025 23:51:43 GMT repositoryId: 559359396 description: >- Code for generating data to be stored in the database related to Sudoku Puzzles. created: '2022-10-29T21:38:29Z' updated: '2025-07-24T23:51:48Z' language: TypeScript archived: false stars: 3 watchers: 1 forks: 0 owner: Sudokuru logo: https://avatars.githubusercontent.com/u/114212382?v=4 license: GPL-3.0 repoEtag: '"b170fcd6641e2d10ef0b2fbd73174ff29e5e1504357c319bfd4fe573cb3021bf"' repoLastModified: Thu, 24 Jul 2025 23:51:48 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/sudokuru/sudokupuzzlegenerator - source: openapi3 tags repository: https://github.com/yugokato/openapi-test-client v3: true id: 7e22733a69cba241a5a0687dfb132f2c repositoryMetadata: base64Readme: >- T3BlbkFQSSBUZXN0IENsaWVudAo9PT09PT09PT09PT09PT09PT09PT09ClshW3Rlc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS95dWdva2F0by9vcGVuYXBpLXRlc3QtY2xpZW50L2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3QueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS95dWdva2F0by9vcGVuYXBpLXRlc3QtY2xpZW50L2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3QueW1sKQpbIVtDb2RlIHN0eWxlOiBibGFja10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlJTIwc3R5bGUtYmxhY2stMDAwMDAwLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9wc2YvYmxhY2spCgojIE92ZXJ2aWV3CgpPcGVuQVBJIFRlc3QgQ2xpZW50ICh3aXRoIGFuIGVtcGhhc2lzIG9uICJ0ZXN0IiBjbGllbnQpIGNhbiBnZW5lcmF0ZS91cGRhdGUgQVBJIGNsaWVudHMgaW4gUHl0aG9uIGZyb20gYW55IApPcGVuQVBJIDMueCBzcGVjaWZpY2F0aW9ucy4gIAoKVGhlIGdvYWwgb2YgdGhlIHByb2plY3QgaXMgdG8gcHJvdmlkZSBlYXN5LXRvLXVzZS9tYWludGFpbiBhdXRvLWdlbmVyYXRlZCBBUEkgY2xpZW50cyBmb3IgUUEgZW5naW5lZXJzIHdobyBuZWVkIHRvIAp0aG9yb3VnaGx5IHBlcmZvcm0gYXV0b21hdGVkIEFQSSB0ZXN0aW5nIGFnYWluc3QgQVBJLWZpcnN0IGFwcGxpY2F0aW9ucyBpbiBhIGZhc3QtcGFjZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuIAoKRHVyaW5nIGVhY2ggc29mdHdhcmUgcmVsZWFzZSBjeWNsZSwgUUEgd2lsbCBuZWVkIHRvIHBlcmZvcm0gdmFyaW91cyB0ZXN0aW5nIHRvIGVuc3VyZSB0aGF0IG5ldyBBUElzIHRvIGJlIHJlbGVhc2VkIHdvcmsgCmFzIGV4cGVjdGVkLiBUaGUgdGVzdGluZyB0b29sIGZvciBRQSByZXF1aXJlcyB0byBoYXZlIGEgbG90IG9mIGZsZXhpYmlsaXR5IGFuZCBpbnRlbGxpZ2VuY2UgdG8gYWNoaWV2ZSB0aGlzIGVmZmljaWVudGx5LCAKYW5kIHRvIGZ1bGx5IGF1dG9tYXRlIGV2ZXJ5dGhpbmcgd2hpY2ggb2YgY291cnNlIGluY2x1ZGVzIG5lZ2F0aXZlIGNhc2VzIGFuZCBzb21lIHVudXN1YWwgc2NlbmFyaW9zLgpUaGlzIEFQSSB0ZXN0IGNsaWVudCB3aWxsIG1ha2UgdGhlIGVudGlyZSB0ZXN0aW5nIHByb2Nlc3MgdmVyeSBlYXN5IGFuZCBlZmZpY2llbnQgYnkgYXV0b21hdGljYWxseSBoYW5kbGluZyBhIGxvdCBvZiAKYm9pbGVycGxhdGUgdW5kZXIgdGhlIGhvb2QsIHdoaWxlIGFsc28gcHJvdmlkaW5nIHlvdSB3aXRoIGZ1bGwgY29udHJvbCBvdmVyIGhvdyBhbmQgd2hhdCB5b3Ugd2FudCB0byB0ZXN0LCBhcyB3ZWxsIGFzIApob3cgeW91IHdhbnQgdG8gZXh0ZW5kIG9yIGN1c3RvbWl6ZSBpdCBmb3IgeW91ciBvd24gdXNlIGNhc2UuCgoKIyBTREsgY2xpZW50IHYucy4gVGVzdCBjbGllbnQKCk9uZSBpbXBvcnRhbnQgdGhpbmcgdG8gY2xhcmlmeSBpcyB0aGF0IHRoaXMgaXMgTk9UIGFuIFNESyBjbGllbnQgYnV0IGEgInRlc3QiIGNsaWVudCBhbHRob3VnaCBib3RoIG1heSBzaGFyZSBzb21lIApjb21tb24gY2FwYWJpbGl0aWVzLiBBbiBTREsgY2xpZW50IHV0aWxpemVzIHN0YWJsZSBBUElzIHVuZGVyIHRoZSBob29kIGZvciBkZXZlbG9wbWVudCBwdXJwb3Nlcywgd2hpbGUgYW4gQVBJIHRlc3QgCmNsaWVudCBpcyBkZXNpZ25lZCBmb3IgdGVzdGluZyByYXcgQVBJcyB0aGF0IGFyZSBjdXJyZW50bHkgaW4gZGV2ZWxvcG1lbnQgYW5kIG1heSBzdGlsbCBjb250YWluIGJ1Z3MuIFdoYXQgdGhpcyBtZWFucyAKaXMgdGhlIHRlc3QgY2xpZW50IHdpbGwgTk9UIGF1dG9tYXRpY2FsbHkgdmFsaWRhdGUgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBmb3IgeW91LiBJdCBpcyB0aGUgUUEncyBtYWluIHJlc3BvbnNpYmlsaXR5IHRvIAp3b3JrIG9uLCBhbmQgdGhlIHRlc3QgY2xpZW50IHdpbGwgcHJvdmlkZSBldmVyeXRoaW5nIG5lZWRlZCBmb3IgdGVzdGluZyBBUElzLiAKCj4gWyFUSVBdCj4gSWYgeW91IHdvdWxkIGxpa2UgdG8gZXhwYW5kIHRoZSBjbGllbnQncyB1c2UgY2FzZSBiZXlvbmQgdGVzdGluZywgeW91IGNhbiBvcHRpb25hbGx5IGVuYWJsZSAidmFsaWRhdGlvbiBtb2RlIiB0byBtYWtlIAo+IGl0IHBhcnRpYWxseSBiZWhhdmUgbGlrZSBhbiBTREsuIFdoZW4gdmFsaWRhdGlvbiBtb2RlIGlzIGVuYWJsZWQsIHlvdXIgcmVxdWVzdCBwYXlsb2FkIHdpbGwgYmUgdmFsaWRhdGVkIGluIAo+IFB5ZGFudGljIHN0cmljdCBtb2RlIG9uIHRoZSBjbGllbnQgc2lkZS4gIAo+IFBsZWFzZSBub3RlIHRoYXQgdmFsaWRhdGlvbiBhZ2FpbnN0IHJlc3BvbnNlIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgoKCiMgQXN5bmMgU3VwcG9ydApUaGUgc2FtZSBjbGllbnQgY29kZSBjYW4gc3VwcG9ydCBib3RoIGBzeW5jYCAodGhlIGRlZmF1bHQpIGFuZCBgYXN5bmNgIG1vZGVzLiBZb3UgY2FuIHN3aXRjaCB0byB0aGUgYXN5bmMgbW9kZSBieSAKZ2l2aW5nIGBhc3luY19tb2RlPVRydWVgIHdoZW4gaW5zdGFudGlhdGluZyBhbiBBUEkgY2xpZW50LCB0aGVuIHNwZWNpZnkgYGF3YWl0YCB0byBlYWNoIEFQSSBmdW5jdGlvbiBjYWxsLiAKCgojIFRyeSBpdCBvdXQKCiMjIDEuIFNldHVwCgo+IFshSW1wb3J0YW50XQo+IEJlZm9yZSBtb3ZpbmcgZm9yd2FyZCwgcGxlYXNlIG1ha2Ugc3VyZSB0byBjcmVhdGUgYSBuZXcgYHZlbnZgIChyZXF1aXJlcyBQeXRob24gMy4xMSspIGFuZCBzdGFydCB3aXRoIGEgZnJlc2ggCj4gZW52aXJvbm1lbnQuIFdlIHdpbGwgdXNlIGBwaXAgaW5zdGFsbGAgdG8gc2ltcGxpZnkgdGhlIHNldHVwIHByb2Nlc3MsIGJ1dCB0aGlzIHByb2plY3QgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgYXMgCj4gYSBwdWJsaWNseSBhdmFpbGFibGUgUHl0aG9uIHBhY2thZ2UuIFNpbmNlIGFsbCBkZXBlbmRlbmNpZXMgYXJlIGludGVudGlvbmFsbHkgcGlubmVkIHN0cmljdGx5IHRvIGV4YWN0IHZlcnNpb25zLCAKPiBkZXBlbmRlbmN5IGNvbmZsaWN0cyBtYXkgb2NjdXIgaWYgdGhlIGluc3RhbGxhdGlvbiBpcyBkb25lIHdpdGhpbiB5b3VyIGV4aXN0aW5nIHByb2plY3QuIAoKYGBgCnBpcCBpbnN0YWxsIGdpdCtodHRwczovL2dpdGh1Yi5jb20veXVnb2thdG8vb3BlbmFwaS10ZXN0LWNsaWVudC5naXQKYGBgCgpPciwgaWYgeW91IHdhbnQgdG8gdHJ5IHRoZSBkZW1vIGNsaWVudCB3aXRoIHRoZSBRdWFydC1iYXNlZCBbZGVtbyBiYWNrZW5kIGFwcF0oc3JjL2RlbW9fYXBwKTogIApgYGAKcGlwIGluc3RhbGwgIm9wZW5hcGktdGVzdC1jbGllbnRbYXBwXSBAIGdpdCtodHRwczovL2dpdGh1Yi5jb20veXVnb2thdG8vb3BlbmFwaS10ZXN0LWNsaWVudC5naXQiCmBgYApBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGNsb25lIHRoZSByZXBvIGFuZCBydW4gYHBpcCBpbnN0YWxsIC1lIC5gIChvciBgcGlwIGluc3RhbGwgLWUgLlthcHBdYCkgaWYgeW91IHByZWZlciB0byByZXVzZSAKdGhpcyBwcm9qZWN0IGFzIHlvdXIgYmFzZSBwcm9qZWN0LiAKCgojIyAyLiBHZW5lcmF0ZS9VcGRhdGUgQVBJIGNsaWVudCBjb2RlCgpPbmNlIHRoZSBzZXR1cCBpcyBjb21wbGV0ZSwgdGhlIGBvcGVuYXBpLWNsaWVudGAgQ0xJIGNvbW1hbmQgc2hvdWxkIGJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJhdGluZyBhbmQgdXBkYXRpbmcgYW4gQVBJIApjbGllbnQgZnJvbSBhbiBPcGVuQVBJIHNwZWMgZmlsZS4gSXQgd2lsbCB0YWtlIGVpdGhlciBgZ2VuZXJhdGVgIG9yIGB1cGRhdGVgIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4gQXZhaWxhYmxlIGNvbW1hbmQgCm9wdGlvbnMgd2lsbCBjaGFuZ2UgYmFzZWQgb24gd2hpY2ggYWN0aW9uIHlvdSBjaG9vc2UuIChzZWUgaGVscCBvZiBlYWNoIGFjdGlvbiB3aXRoIGAtaGAgZm9yIG1vcmUgZGV0YWlscykKCmBgYHNoZWxsCiQgb3BlbmFwaS1jbGllbnQgLWgKdXNhZ2U6IG9wZW5hcGktY2xpZW50IFstaF0ge2dlbmVyYXRlLHVwZGF0ZX0gLi4uCgpwb3NpdGlvbmFsIGFyZ3VtZW50czoKICB7Z2VuZXJhdGUsdXBkYXRlfSAgQWN0aW9uIHRvIHRha2UKICAgIGdlbmVyYXRlICAgICAgICAgR2VuZXJhdGUgYSBuZXcgQVBJIGNsaWVudCBmcm9tIGFuIE9wZW5BUEkgc3BlYyBVUkwKICAgIHVwZGF0ZSAgICAgICAgICAgVXBkYXRlIGFuIGV4aXN0aW5nIEFQSSBjbGllbnQKCm9wdGlvbnM6CiAgLWgsIC0taGVscCAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKCmBgYAoKIyMjIEdlbmVyYXRlIGEgbmV3IEFQSSBjbGllbnQKCllvdSBjYW4gZ2VuZXJhdGUgYSBuZXcgQVBJIGNsaWVudCBmcm9tIE9wZW5BUEkgc3BlY3MgYnkgcnVubmluZyB0aGUgYGdlbmVyYXRlYCBjb21tYW5kOgpgYGAKb3BlbmFwaS1jbGllbnQgZ2VuZXJhdGUgLXUgPHVybD4gLWEgPGFwcF9uYW1lPiBbLS1kaXIgPGRpcmVjdG9yeT5dCmBgYApgdXJsYDogVGhlIFVSTCBvZiB0aGUgT3BlbkFQSSBzcGVjIGZpbGUgKEpTT04vWUFNTCwgbXVzdCBiZSB2ZXJzaW9uIDMueCkgZnJvbSB3aGljaCB5b3Ugd2FudCB0byBnZW5lcmF0ZSB0aGUgQVBJIGNsaWVudCAgCmBhcHBfbmFtZWA6IFRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgYXBwbGljYXRpb24uIFRoZSB2YWx1ZSB3aWxsIGJlIHVzZWQgZm9yIGdlbmVyYXRpbmcgdGhlIGNsaWVudCBuYW1lICAKYGRpcmVjdG9yeWA6IEEgZGlyZWN0b3J5IHBhdGggdG8gc2F2ZSB0aGUgZ2VuZXJhdGVkIGNsaWVudCBtb2R1bGVzLiBUaGUgc3BlY2lmaWVkIGRpcmVjdG9yeSB3aWxsIGJlY29tZSB0aGUgdG9wLWxldmVsIAptb2R1bGUgZm9yIGFjY2Vzc2luZyBhbGwgeW91ciBjbGllbnRzLiAoVGhpcyBpcyBvcHRpb25hbCBpZiB5b3VyIHByb2plY3Qgd2FzIGNsb25lZCBmcm9tIHRoZSBvcmlnaW5hbCByZXBvc2l0b3J5KQoKPGltZyBzcmM9ImltYWdlcy9nZW5lcmF0ZS5naWYiIHdpZHRoPSI4MDAiLz4KClRvIGdlbmVyYXRlIGFub3RoZXIgY2xpZW50IGZvciBhIGRpZmZlcmVudCBhcHAsIHNpbXBseSBydW4gdGhlIHNhbWUgY29tbWFuZCB3aXRoIHRoZSBzYW1lIGAtLWRpcmAgdmFsdWUsIGJ1dCB3aXRoIG5ldyAKYC11YCBhbmQgYC1hYCB2YWx1ZXMuIAoKPiBbIU5PVEVdCj4gVGhlIGZvbGxvd2luZyBtYW51YWwgc3RlcChzKSB3aWxsIGJlIG5lZWRlZCBhZnRlciBnZW5lcmF0aW5nIGEgY2xpZW50Cj4gLSBGb3IgZWFjaCBhdXRvLWdlbmVyYXRlZCBBUEkgZnVuY3Rpb24sIHJlbmFtZSB0aGUgZnVuY3Rpb24gbmFtZSB0byB3aGF0ZXZlciB2YWx1ZSB5b3UgbGlrZS4gQWxsIGZ1bmN0aW9ucyB3aWxsIGJlIGdlbmVyYXRlZCBhcyAiKlxfdW5uYW1lZF9lbmRwb2ludFxfe2lkeH0qIiBieSBkZWZhdWx0Cj4gLSAoSWYgbmVlZGVkKSBBZGp1c3QgdGhlIHZhbHVlIG9mIHRoZSBBUEkgYmFzZSBVUkwgaW4gdGhlIGBjZmcvdXJscy5qc29uYCwgYW5kIHRoZSBgZG9jYCB2YWx1ZSBpbiB0aGUgZ2VuZXJhdGVkIEFQSSBjbGllbnQncyBgX19pbml0X18oKWAgY29kZS4gVGhlc2UgdmFsdWVzIHdpbGwgYmUgYXV0b21hdGljYWxseSBhZGRlZCBkdXJpbmcgdGhlIGNsaWVudCBnZW5lcmF0aW9uIGJhc2VkIG9uIHRoZSBgdXJsYCB2YWx1ZSB5b3Ugc3BlY2lmeSwgYnV0IHlvdXIgYXBwbGljYXRpb24gbWF5IGV4cGVjdCB0byBzcGxpdCB0aGUgVVJMIGRpZmZlcmVudGx5CgoKIyMjIFVwZGF0ZSB0aGUgZXhpc3RpbmcgQVBJIGNsaWVudAoKWW91IGNhbiB1cGRhdGUgdGhlIGV4aXN0aW5nIGNsaWVudCBjb2RlIGJ5IHJ1bm5pbmcgdGhlIGB1cGRhdGVgIGNvbW1hbmQgdG8gcmVmbGVjdCB0aGUgbGF0ZXN0IE9wZW5BUEkgc3BlY3M6IAoKYGBgCm9wZW5hcGktY2xpZW50IHVwZGF0ZSAtYyA8Y2xpZW50X25hbWU+CmBgYApgY2xpZW50X25hbWVgOiBUaGUgbmFtZSBvZiB0aGUgY2xpZW50IGFzc2lnbmVkIGF0IHRoZSBjbGllbnQgZ2VuZXJhdGlvbiBzdGVwCgo8aW1nIHNyYz0iaW1hZ2VzL3VwZGF0ZS5naWYiIHdpZHRoPSI4MDAiLz4KClRoaXMgdXBkYXRlIGZ1bmN0aW9uYWxpdHkgcHJpbWFyaWx5IGZvY3VzZXMgb24gcmVmbGVjdGluZyB0aGUgbGF0ZXN0IE9wZW5BUEkgc3BlY3MuIEl0IHdpbGwgb25seSB0b3VjaCB0aGUgZm9sbG93aW5nIGFyZWFzOiAKLSBFeGlzdGluZyBBUEkgY2xhc3MgdGFnCi0gRXhpc3RpbmcgQVBJIGNsYXNzIGZ1bmN0aW9ucyAoc2lnbmF0dXJlcyBhbmQgZG9jc3RyaW5ncykKLSBFeGlzdGluZyBBUEkgcGFyYW1ldGVyIG1vZGVscwotIEN1cnJlbnRseSBtaXNzaW5nIEFQSSBmdW5jdGlvbnMgYW5kIHBhcmFtZXRlciBtb2RlbHMgKGEgbmV3IGZ1bmN0aW9uIHdpbGwgYmUgYWRkZWQgYXMgIipcX3VubmFtZWRfZW5kcG9pbnRfe2lkeH0qIikKLSBDdXJyZW50bHkgbWlzc2luZyBBUEkgY2xhc3NlcyAodGhpcyByZXF1aXJlcyBgLUFgIG9wdGlvbikKCkFueXRoaW5nIGVsc2UsIChlZy4gQVBJIGNsYXNzL2Z1bmN0aW9uIG5hbWVzLCBmdW5jdGlvbiBib2R5LCBkZWNvcmF0b3JzIGFwcGxpZWQgb24gQVBJIGZ1bmN0aW9ucywgZXRjLikgd2lsbCByZW1haW4gCmludGFjdCBzbyB0aGF0IHVwZGF0ZWQgY2xpZW50IGNvZGUgd29uJ3QgYnJlYWsgeW91ciBleGlzdGluZyB0ZXN0IGNvZGUuCgo+IFshVElQXQo+IC0gWW91IG1pZ2h0IHdhbnQgdG8gcnVuIHRoZSBjb21tYW5kIHdpdGggYC1kYC9gLS1kcnktcnVuYCBvcHRpb24gZmlyc3QgdG8gc2VlIGNoYW5nZXMgYmVmb3JlIGFjdHVhbGx5IHVwZGF0aW5nIGNvZGUKPiAtIFlvdSBjYW4gbGltaXQgdGhlIHNjb3BlIG9mIHRoZSB1cGRhdGUgKGVnLiBzcGVjaWZpYyB0YWcsIHNwZWNpZmljIGVuZHBvaW50LCBldGMuKSBieSB1c2luZyB2YXJpb3VzIGNvbW1hbmQgb3B0aW9ucy4gCj4gU2VlIG1vcmUgZGV0YWlscyB3aXRoIGAtaGAKCiAgICAKIyMgMy4gVXNlIHRoZSBBUEkgY2xpZW50CgpZb3VyIGNsaWVudCBzaG91bGQgYmUgcmVhZHkgdG8gdXNlIGJ5IG5vdy4gRm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMsIHRoZSByZXN0IG9mIHRoZSBzZWN0aW9ucyB3aWxsIGJlIGV4cGxhaW5lZCB1c2luZyAKdGhlIFtEZW1vQXBwQVBJQ2xpZW50XShzcmMvb3BlbmFwaV90ZXN0X2NsaWVudC9jbGllbnRzL2RlbW9fYXBwKSB0aGF0IGNvbWVzIHdpdGggdGhpcyByZXBvc2l0b3J5IGFzIGFuIGV4YW1wbGUgY2xpZW50LiBUaGlzIGRlbW8gY2xpZW50IHdhcyBhY3R1YWxseSAKZ2VuZXJhdGVkIGJ5IHRoZSBmb2xsb3dpbmcgYG9wZW5hcGktY2xpZW50IGdlbmVyYXRlYCBjb21tYW5kIGFnYWluc3QgdGhlIFtkZW1vIGFwcF0oc3JjL2RlbW9fYXBwKSAKZGVtbyBhcHBsaWNhdGlvbjoKYGBgCm9wZW5hcGktY2xpZW50IGdlbmVyYXRlIC11IGh0dHA6Ly8xMjcuMC4wLjE6NTAwMC9vcGVuYXBpLmpzb24gLWEgZGVtb19hcHAKYGBgIApJdCB3YXMgYWxzbyBtYW51YWxseSBleHRlbmRlZCB3aXRoIGEgY3VzdG9tIFtwb3N0LXJlcXVlc3QgaG9va10oc3JjL29wZW5hcGlfdGVzdF9jbGllbnQvY2xpZW50cy9kZW1vX2FwcC9hcGkvcmVxdWVzdF9ob29rcy9wb3N0X3JlcXVlc3QucHkpIGZvciBhdXRvbWF0aWNhbGx5IG1hbmFnaW5nIGF1dGggdG9rZW5zIApiZWZvcmUgbG9naW4gYW5kIGFmdGVyIGxvZ291dC4KCj4gWyFOT1RFXQo+IElmIHlvdSB3b3VsZCBsaWtlIHRvIHRyeSB0aGlzIGBkZW1vX2FwcGAgQVBJIGNsaWVudCBieSB5b3Vyc2VsZiwgZm9sbG93IHRoZSBmb2xsb3dpbmcgc3RlcHMgdG8gc3RhcnQgdGhlIGRlbW8gYXBwbGljYXRpb24gYmVmb3JlIG1vdmluZyBmb3J3YXJkOgo+IDEuIENsb25lIHRoZSByZXBvCj4gMi4gU2V0IHVwIHdpdGggYGFwcGAgc2VydmVyLXNpZGUgZXh0cmEgZGVwZW5kZW5jeSAgKHNlZSB0aGUgIlNldHVwIiBzZWN0aW9uKQo+IDMuIFN0YXJ0IHRoZSBhcHBsaWNhdGlvbiB3aXRoIGBxdWFydCAtQSBkZW1vX2FwcCBydW5gIGNvbW1hbmQKPiBgYGBzaGVsbAo+ICQgcXVhcnQgLUEgZGVtb19hcHAgcnVuCj4gKiBTZXJ2aW5nIFF1YXJ0IGFwcCAnZGVtb19hcHAnCj4gKiBEZWJ1ZyBtb2RlOiBGYWxzZQo+ICogUGxlYXNlIHVzZSBhbiBBU0dJIHNlcnZlciAoZS5nLiBIeXBlcmNvcm4pIGRpcmVjdGx5IGluIHByb2R1Y3Rpb24KPiAqIFJ1bm5pbmcgb24gaHR0cDovLzEyNy4wLjAuMTo1MDAwIChDVFJMICsgQyB0byBxdWl0KQo+WzIwMjQtMDEtMDEgMDA6MDA6MDAgLTAwMDBdIFszOTY5MV0gW0lORk9dIFJ1bm5pbmcgb24gaHR0cDovLzEyNy4wLjAuMTo1MDAwIChDVFJMICsgQyB0byBxdWl0KQo+IGBgYAoKCiMjIyBJbnN0YW50aWF0ZSB0aGUgY2xpZW50CgpPbmNlIHlvdSBoYXZlIGdlbmVyYXRlZCBhbiBBUEkgY2xpZW50LCB0aGUgY2xpZW50IGNsYXNzIHdpbGwgYmUgaW1wb3J0YWJsZSBhcyAKYGZyb20gPHlvdXJfbW9kdWxlPi5jbGllbnRzLjxjbGllbnRfbmFtZT4gaW1wb3J0IDxDbGllbnROYW1lPkFQSUNsaWVudGAuIAoKPGRldGFpbHMgb3Blbj4KPHN1bW1hcnk+U3luYyBDbGllbnQ8L3N1bW1hcnk+CgpgYGBweWNvbgo+Pj4gZnJvbSBvcGVuYXBpX3Rlc3RfY2xpZW50LmNsaWVudHMuZGVtb19hcHAgaW1wb3J0IERlbW9BcHBBUElDbGllbnQKPj4+IGNsaWVudCA9IERlbW9BcHBBUElDbGllbnQoKQpgYGAKPC9kZXRhaWxzPgoKPGRldGFpbHM+CjxzdW1tYXJ5PkFzeW5jIENsaWVudDwvc3VtbWFyeT4KCmBgYHB5Y29uCj4+PiBmcm9tIG9wZW5hcGlfdGVzdF9jbGllbnQuY2xpZW50cy5kZW1vX2FwcCBpbXBvcnQgRGVtb0FwcEFQSUNsaWVudAo+Pj4gY2xpZW50ID0gRGVtb0FwcEFQSUNsaWVudChhc3luY19tb2RlPVRydWUpCmBgYAo8L2RldGFpbHM+CgpNYWtlIHN1cmUgdG8gcmVwbGFjZSB0aGUgIm9wZW5hcGlfdGVzdF9jbGllbnRzIiBwYXJ0IHdpdGggeW91ciBvd24gbW9kdWxlIG5hbWUgd2hlbiBpbXBvcnRpbmcgeW91ciBvd24gY2xpZW50cy4KCkFsdGVybmF0aXZlbHksIHlvdSBjYW4gaW5zdGFudGlhdGUgeW91ciBjbGllbnQgZGlyZWN0bHkgZnJvbSB0aGUgcGFyZW50IGBPcGVuQVBJQ2xpZW50YCBjbGFzcy4KCjxkZXRhaWxzIG9wZW4+CjxzdW1tYXJ5PlN5bmMgQ2xpZW50PC9zdW1tYXJ5PgoKYGBgcHljb24KPj4+IGZyb20gb3BlbmFwaV90ZXN0X2NsaWVudC5jbGllbnRzIGltcG9ydCBPcGVuQVBJQ2xpZW50Cj4+PiBjbGllbnQgPSBPcGVuQVBJQ2xpZW50LmdldF9jbGllbnQoIjxjbGllbnRfbmFtZT4iKQpgYGAKPC9kZXRhaWxzPgo8ZGV0YWlscz4KPHN1bW1hcnk+QXN5bmMgQ2xpZW50PC9zdW1tYXJ5PgoKYGBgcHljb24KPj4+IGZyb20gb3BlbmFwaV90ZXN0X2NsaWVudC5jbGllbnRzIGltcG9ydCBPcGVuQVBJQ2xpZW50Cj4+PiBjbGllbnQgPSBPcGVuQVBJQ2xpZW50LmdldF9jbGllbnQoIjxjbGllbnRfbmFtZT4iLCBhc3luY19tb2RlPVRydWUpCmBgYAo8L2RldGFpbHM+CgojIyMgTWFrZSBhbiBBUEkgcmVxdWVzdAoKVG8gbWFrZSBhbiBBUEkgcmVxdWVzdCB3aXRoIHlvdXIgQVBJIGNsaWVudCwgY2FsbCBhbiBBUEkgZnVuY3Rpb24gYXMgIGBjbGllbnQuPEFwaVRhZz4uPGFwaV9mdW5jdGlvbl9uYW1lPigpYC4gClRoZSBmdW5jdGlvbiB3aWxsIHRha2UgYWxsIHBhcmFtZXRlcnMgZG9jdW1lbnRlZCBpbiB0aGUgT3BlbkFQSSBzcGVjcyBhcyBrZXl3b3JkIGFyZ3VtZW50cy4gCgplZy4gVG8gY2FsbCB0aGUgbG9naW4gQVBJIGRlZmluZWQgdW5kZXIgdGhlIEF1dGggdGFnOgoKPGRldGFpbHMgb3Blbj4KPHN1bW1hcnk+U3luYyBDbGllbnQ8L3N1bW1hcnk+CgpgYGBweWNvbgo+Pj4gciA9IGNsaWVudC5BdXRoLmxvZ2luKHVzZXJuYW1lPSdmb28nLCBwYXNzd29yZD0nYmFyJykKMjAyNC0wMS0wMVQwMDowMDowMC44NjMtMDgwMCAtIHJlcXVlc3Q6IFBPU1QgaHR0cDovLzEyNy4wLjAuMTo1MDAwL3YxL2F1dGgvbG9naW4KMjAyNC0wMS0wMVQwMDowMDowMC44NzctMDgwMCAtIHJlc3BvbnNlOiAyMDEgKENyZWF0ZWQpCi0gcmVxdWVzdF9pZDogYTJiMjBhY2YtMjJkNS00MTMxLWFjMGQtNjc5NmJmMTlkMmFmCi0gcmVxdWVzdDogUE9TVCBodHRwOi8vMTI3LjAuMC4xOjUwMDAvdjEvYXV0aC9sb2dpbgotIHBheWxvYWQ6IHsidXNlcm5hbWUiOiAiZm9vIiwgInBhc3N3b3JkIjogIioqKiJ9Ci0gc3RhdHVzX2NvZGU6IDIwMSAoQ3JlYXRlZCkKLSByZXNwb25zZTogewogICAgInRva2VuIjogIklqRmxOVEF4Tm1JMkxUVmxaamN0TkdReFlpMWlNR0poTFRZeFkyTTNaV0l6WTJWbVlTSS5aYWREbEEudEtTX0xhNXVEdXRlWEg3T01UX1daVksxb19oQW5XWlZuX0o1clNzSlFJTEh1MWp1WFlnMEVZTGtncEgxTENoemVPaE5fWVVVWGFPMzdybHRfVVYxQWciCn0KLSByZXNwb25zZV90aW1lOiAwLjAxMzQ0cwpgYGAKPC9kZXRhaWxzPgoKPGRldGFpbHM+CjxzdW1tYXJ5PkFzeW5jIENsaWVudDwvc3VtbWFyeT4KCmBgYHB5Y29uCiMgTk9URTogVGhpcyBleGFtcGxlIHVzZXMgYXN5bmNpbyBSRVBMIChweXRob24gLW0gYXN5bmNpbykgCj4+PiByID0gYXdhaXQgY2xpZW50LkF1dGgubG9naW4odXNlcm5hbWU9J2ZvbycsIHBhc3N3b3JkPSdiYXInKQoyMDI0LTAxLTAxVDAwOjAwOjAwLjg2My0wODAwIC0gcmVxdWVzdDogUE9TVCBodHRwOi8vMTI3LjAuMC4xOjUwMDAvdjEvYXV0aC9sb2dpbgoyMDI0LTAxLTAxVDAwOjAwOjAwLjg3Ny0wODAwIC0gcmVzcG9uc2U6IDIwMSAoQ3JlYXRlZCkKLSByZXF1ZXN0X2lkOiBhMmIyMGFjZi0yMmQ1LTQxMzEtYWMwZC02Nzk2YmYxOWQyYWYKLSByZXF1ZXN0OiBQT1NUIGh0dHA6Ly8xMjcuMC4wLjE6NTAwMC92MS9hdXRoL2xvZ2luCi0gcGF5bG9hZDogeyJ1c2VybmFtZSI6ICJmb28iLCAicGFzc3dvcmQiOiAiKioqIn0KLSBzdGF0dXNfY29kZTogMjAxIChDcmVhdGVkKQotIHJlc3BvbnNlOiB7CiAgICAidG9rZW4iOiAiSWpGbE5UQXhObUkyTFRWbFpqY3ROR1F4WWkxaU1HSmhMVFl4WTJNM1pXSXpZMlZtWVNJLlphZERsQS50S1NfTGE1dUR1dGVYSDdPTVRfV1pWSzFvX2hBbldaVm5fSjVyU3NKUUlMSHUxanVYWWcwRVlMa2dwSDFMQ2h6ZU9oTl9ZVVVYYU8zN3JsdF9VVjFBZyIKfQotIHJlc3BvbnNlX3RpbWU6IDAuMDEzNDRzCmBgYAo8L2RldGFpbHM+Cgo+IFshTk9URV0gCj4gLSBBIG5ldyBVVUlEIHdpbGwgYmUgZ2VuZXJhdGVkIGF0IGVhY2ggcmVxdWVzdCBhbmQgd2lsbCBiZSBzZXQgdG8gdGhlIGBYLVJlcXVlc3QtSURgIGhlYWRlcgo+IC0gYERlbW9BcHBBUElDbGllbnRgIHdpbGwgYXV0b21hdGljYWxseSBzZXQgdGhlIGB0b2tlbmAgdmFsdWUgdG8gdGhlIEFQSSBzZXNzaW9uIGluIHRoZSBjbGllbnQncyBwb3N0LXJlcXVlc3QgbG9naWMgbWVudGlvbmVkIGVhcmxpZXIKClRoZSBmdW5jdGlvbiBjYWxsIHdpbGwgcmV0dXJuIGEgYFJlc3RSZXNwb25zZWAgb2JqZWN0IHdoZXJlIHRoZSBkZWNvZGVkIHJlc3BvbnNlIGlzIGFjY2Vzc2libGUgYXMgYHJlc3BvbnNlYC4gSWYgeW91IApuZWVkIHRvIGFjY2VzcyB0aGUgcmF3IHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9iamVjdHMgZnJvbSB0aGUgdW5kZXJseWluZyBgaHR0cHhgIGxpYnJhcnksIHlvdSBjYW4gZG8gc28gdGhyb3VnaCB0aGUgCmByZXF1ZXN0YCBhbmQgYF9yZXNwb25zZWAgYXR0cmlidXRlcy4KCmBgYHB5Y29uCj4+PiByLnN0YXR1c19jb2RlCjIwMQo+Pj4gci5yZXNwb25zZQp7J3Rva2VuJzogJ0lqRmxOVEF4Tm1JMkxUVmxaamN0TkdReFlpMWlNR0poTFRZeFkyTTNaV0l6WTJWbVlTSS5aYWREbEEudEtTX0xhNXVEdXRlWEg3T01UX1daVksxb19oQW5XWlZuX0o1clNzSlFJTEh1MWp1WFlnMEVZTGtncEgxTENoemVPaE5fWVVVWGFPMzdybHRfVVYxQWcnfQo+Pj4gcHByaW50KHIpClJlc3RSZXNwb25zZShfcmVzcG9uc2U9PFJlc3BvbnNlIFsyMDEgXSwKICAgICAgICAgICAgIHJlcXVlc3RfaWQ9J2EyYjIwYWNmLTIyZDUtNDEzMS1hYzBkLTY3OTZiZjE5ZDJhZicsCiAgICAgICAgICAgICBzdGF0dXNfY29kZT0yMDEsCiAgICAgICAgICAgICByZXNwb25zZT17J3Rva2VuJzogJ0lqRmxOVEF4Tm1JMkxUVmxaamN0TkdReFlpMWlNR0poTFRZeFkyTTNaV0l6WTJWbVlTSS5aYWREbEEudEtTX0xhNXVEdXRlWEg3T01UX1daVksxb19oQW5XWlZuX0o1clNzSlFJTEh1MWp1WFlnMEVZTGtncEgxTENoemVPaE5fWVVVWGFPMzdybHRfVVYxQWcnfSwKICAgICAgICAgICAgIHJlc3BvbnNlX3RpbWU9MC4wMTM0NCwKICAgICAgICAgICAgIHJlcXVlc3Q9PFJlcXVlc3QoJ1BPU1QnLCAnaHR0cDovLzEyNy4wLjAuMTo1MDAwL3YxL2F1dGgvbG9naW4nKT4sCiAgICAgICAgICAgICBvaz1UcnVlLAogICAgICAgICAgICAgaXNfc3RyZWFtPUZhbHNlKQpgYGAKTm90ZSB0aGF0IHdlIGV4dGVuZCB0aGUgYGh0dHB4YCBsaWJyYXJ5J3MgYFJlcXVlc3RgIGFuZCBgQ2xpZW50YCBjbGFzc2VzIHRvIGFkZCBhIGZldyBzbWFsbCBjYXBhYmlsaXRpZXMuIApBcyBhbiBleGFtcGxlLCB5b3UgY2FuIGdldCB0aGUgcmVxdWVzdCBzdGFydC9lbmQgdGltZSAoVVRDKSB0aHJvdWdoIGByZXF1ZXN0YCBhcyBhIGBkYXRhdGltZWAgb2JqZWN0LgogCmBgYHB5Y29uCj4+PiByLnJlcXVlc3Quc3RhcnRfdGltZQpkYXRldGltZS5kYXRldGltZSgyMDI0LCAxLCAxLCAwLCAwLCAwLCA4NjMwOSwgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lLnV0YykKPj4+IHIucmVxdWVzdC5lbmRfdGltZQpkYXRldGltZS5kYXRldGltZSgyMDI0LCAxLCAxLCAwLCAwLCAwLCA4NzcxNCwgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lLnV0YykKYGBgCgojIyA0LiBDdXN0b21pemUgQVBJIGZ1bmN0aW9ucyAob3B0aW9uYWwpCgpUaGUgdGVzdCBjbGllbnQgcHJvdmlkZXMgYSBmZXcgd2F5cyB0byBjdXN0b21pemUgaG93IGFuIEFQSSBjYWxsIHZpYSBhbiBBUEkgZnVuY3Rpb24gd2lsbCBiZSBwcm9jZXNzZWQuCgojIyMgSW1wbGVtZW50IHlvdXIgY3VzdG9tIGZ1bmN0aW9uIGxvZ2ljCkJ5IGRlZmF1bHQsIGVhY2ggYXV0by1nZW5lcmF0ZWQgQVBJIGZ1bmN0aW9uIHdpbGwgbG9vayBsaWtlIGEgc3R1YiBmdW5jdGlvbiB3aXRoIGEgcGxhY2Vob2xkZXIgKGAuLi5gKS4gRm9yIGV4YW1wbGU6CmBgYHB5dGhvbgpAZW5kcG9pbnQuaXNfcHVibGljCkBlbmRwb2ludC5wb3N0KCIvdjEvYXV0aC9sb2dpbiIpCmRlZiBsb2dpbihzZWxmLCAqLCB1c2VybmFtZTogc3RyID0gVW5zZXQsIHBhc3N3b3JkOiBzdHIgPSBVbnNldCwgKiprd2FyZ3M6IFVucGFja1tLd2FyZ3NdKSAtPiBBUElSZXNwb25zZToKICAgICIiIkxvZ2luIiIiCiAgICAuLi4KYGBgCgpFdmVuIHdpdGhvdXQgaGF2aW5nIGFjdHVhbCBmdW5jdGlvbiBsb2dpYywgQVBJIHJlcXVlc3RzIG1hZGUgdGhyb3VnaCB0aGVzZSBmdW5jdGlvbnMgd2lsbCBqdXN0IHdvcmsgLSBUaGUgZnVuY3Rpb24gY2FsbCB3aWxsIGF1dG9tYXRpY2FsbHkgbWFrZSBhbiBIVFRQIHJlcXVlc3QgdG8gdGhlIGFzc29jaWF0ZWQgZW5kcG9pbnQgd2l0aCB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycywgcGFyc2UgdGhlIHJlc3BvbnNlLCBhbmQgcmV0dXJuIGl0IGFzIGEgYFJlc3RSZXNwb25zZWAgb2JqZWN0LiBUaGlzIGJlaGF2aW9yIGlzIG1hbmFnZWQgYnkgdGhlIGBAZW5kcG9pbnQuPG1ldGhvZD4ocGF0aD4pYCBkZWNvcmF0b3IuICAKSW4gbW9zdCBjYXNlcywgeW91IHdvbuKAmXQgbmVlZCB0byBtb2RpZnkgdGhlIGdlbmVyYXRlZCBmdW5jdGlvbiBib2R5IGF0IGFsbC4KCkhvd2V2ZXIsIGlmIHlvdSBuZWVkIHRvIGltcGxlbWVudCBjdXN0b20gbG9naWMgZm9yIG1ha2luZyBhbiBBUEkgcmVxdWVzdCBmb3Igc3BlY2lmaWMgQVBJIGZ1bmN0aW9ucywgeW91IGNhbiByZXBsYWNlIHRoZSBwbGFjZWhvbGRlciB3aXRoIHlvdXIgb3duIGNvZGUuIEp1c3QgZW5zdXJlIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBgUmVzdFJlc3BvbnNlYCBvYmplY3QsIHdoaWNoIGlzIHdoYXQgdGhlIHVuZGVybHlpbmcgUmVzdCBBUEkgY2xpZW50IHdlIHVzZSB3aWxsIHJldHVybi4KCj4gWyFOT1RFXQo+IFRoZSBjbGllbnQgd2lsbCByYWlzZSBhIGBSdW50aW1lRXJyb3JgIGlmIGFueXRoaW5nIG90aGVyIHRoYW4gYSBgUmVzdFJlc3BvbnNlYCBvYmplY3Qgb3IgYE5vbmVgIGlzIHJldHVybmVkLgoKPiBbIVRJUF0KPiBJZiB5b3Ugb25seSBuZWVkIHRvIGFkZCBleHRyYSBiZWhhdmlvciBiZWZvcmUgb3IgYWZ0ZXIgdGhlIHJlcXVlc3QsIGNvbnNpZGVyIHVzaW5nIGRlY29yYXRvcnMgb3IgcmVxdWVzdCBob29rcyBpbnN0ZWFkCgojIyMgRGVjb3JhdG9ycwpUbyBleHRlbmQgdGhlIGRlZmF1bHQgQVBJIGNhbGwgbG9naWMsIHlvdSBjYW4gYXBwbHkgZGVjb3JhdG9ycyBvbiBhbiBBUEkgZnVuY3Rpb24uIE5vdGUgdGhhdCBlYWNoIGRlY29yYXRvciBNVVNUIGJlIGRlY29yYXRlZCB3aXRoIGBAZW5kcG9pbnQuZGVjb3JhdG9yYCBmb3IgaXQgdG8gd29yayBwcm9wZXJseS4gIAoKRm9yIGV4YW1wbGU6Ci0gRGVmaW5lIGEgZGVjb3JhdG9yCmBgYHB5dGhvbgpmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKCmZyb20gb3BlbmFwaV90ZXN0X2NsaWVudC5saWJyYXJpZXMuYXBpIGltcG9ydCBlbmRwb2ludAoKQGVuZHBvaW50LmRlY29yYXRvcgpkZWYgbXlfZGVjb3JhdG9yKGYpOgogICAgQHdyYXBzKGYpCiAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgogICAgICAgICMgRG8gc29tZXRoaW5nIGJlZm9yZSByZXF1ZXN0CiAgICAgICAgcmVzcG9uc2UgPSBmKCoqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIyBEbyBzb21ldGhpbmcgYWZ0ZXIgcmVxdWVzdAogICAgICAgIHJldHVybiByZXNwb25zZQogICAgcmV0dXJuIHdyYXBwZXIKYGBgCgotIEFwcGx5IGl0CgpgYGBweXRob24KQG15X2RlY29yYXRvcgpAZW5kcG9pbnQuaXNfcHVibGljCkBlbmRwb2ludC5wb3N0KCIvdjEvYXV0aC9sb2dpbiIpCmRlZiBsb2dpbihzZWxmLCAqLCB1c2VybmFtZTogc3RyID0gVW5zZXQsIHBhc3N3b3JkOiBzdHIgPSBVbnNldCwgKiprd2FyZ3M6IFVucGFja1tLd2FyZ3NdKSAtPiBBUElSZXNwb25zZToKICAgICIiIkxvZ2luIiIiCiAgICAuLi4KYGBgCgojIyMgUmVxdWVzdCBIb29rcwoKVGhlIHRlc3QgY2xpZW50IHN1cHBvcnRzIHRocmVlIHR5cGVzIG9mIHJlcXVlc3QgaG9va3MgaW4gQVBJIGNsYXNzZXM6Ci0gUHJlLXJlcXVlc3QgSG9vazogQ2FsbGVkIGJlZm9yZSBhbiBBUEkgcmVxdWVzdCBpcyBtYWRlCi0gUG9zdC1yZXF1ZXN0IEhvb2s6IENhbGxlZCBhZnRlciBhbiBBUEkgcmVxdWVzdCBpcyBjb21wbGV0ZWQKLSBSZXF1ZXN0IHdyYXBwZXI6IFdyYXBzIHRoZSBvcmlnaW5hbCBBUEkgcmVxdWVzdCBsb2dpYyBiZWZvcmUgYW55IGRlY29yYXRvcnMgYXJlIGFwcGxpZWQsIGFsbG93aW5nIHlvdSB0byBhcHBseSBhZGRpdGlvbmFsIGJlaGF2aW9yIGJlZm9yZSBhbmQgYWZ0ZXIgYSByZXF1ZXN0CgpIb29rcyB3b3JrIHNpbWlsYXJseSB0byBkZWNvcmF0b3JzIGJ1dCBhcmUgbW9yZSB1c2VmdWwgZm9yIGFwcGx5aW5nIGdlbmVyYWwgY29udHJvbCB0aGF0IGFmZmVjdHMgbXVsdGlwbGUgb3IgYWxsIGVuZHBvaW50cyBhdCB0aGUgY2VudHJhbCBwbGFjZS4KCkZvciBleGFtcGxlcyBhbmQgdXNhZ2UsIHNlZSBbZGVtb19hcHAgY2xpZW50IGhvb2tzXShzcmMvb3BlbmFwaV90ZXN0X2NsaWVudC9jbGllbnRzL2RlbW9fYXBwL2FwaS9yZXF1ZXN0X2hvb2tzKQoKCiMgRGVlcCBEaXZlIAoKVGhlIGZvbGxvd2luZyBhcmUgc29tZSBvZiB0aGUgaW1wb3J0YW50IGJ1aWxkaW5nIGJsb2NrcyBvZiB0aGUgQVBJIHRlc3QgY2xpZW50OgotIEFQSSBjbGllbnQKLSBBUEkgY2xhc3MgYW5kIGZ1bmN0aW9ucwotIEFQSSBlbmRwb2ludCBmdW5jdGlvbgotIEFQSSBlbmRwb2ludCBtb2RlbAotIEFQSSBwYXJhbWV0ZXIgbW9kZWwKLSBQeWRhbnRpYyBtb2RlbCAodmFsaWRhdGlvbiBtb2RlKQoKCiMjIEFQSSBjbGllbnQKCkFsbCBBUEkgY2xpZW50cyB3aWxsIGluaGVyaXQgdGhlIGJhc2UgY2xpZW50IGBPcGVuQVBJQ2xpZW50YCwgd2hpY2ggd2lsbCBoYW5kbGUgcGFyc2luZyBPcGVuQVBJIHNwZWNzIGFuZCByZXNvbHZpbmcgCmAkcmVmYC4gVGhlIGdlbmVyYXRlZCBBUEkgY2xpZW50IHdpbGwgaGF2ZSBhIGBAY2FjaGVkX3Byb3BlcnR5YCBkZWZpbml0aW9uIGZvciBlYWNoIEFQSSB0YWcgKG9yIHNldCBvZiB0YWdzIHdoZW4gCm1hbmFnaW5nIEFQSXMgaW4gbXVsdGlwbGUgdGFncyksIHdoZXJlIGFuIEFQSSBjbGFzcyBpbnN0YW5jZSB3aWxsIGJlIHJldHVybmVkLiAKCmBgYHB5dGhvbgojIG9wZW5hcGlfdGVzdF9jbGllbnQvY2xpZW50cy9kZW1vX2FwcC9kZW1vX2FwcF9jbGllbnQucHkKCmZyb20gZnVuY3Rvb2xzIGltcG9ydCBjYWNoZWRfcHJvcGVydHkKCmZyb20gb3BlbmFwaV90ZXN0X2NsaWVudC5jbGllbnRzLmJhc2UgaW1wb3J0IE9wZW5BUElDbGllbnQKCmZyb20gLmFwaS5hdXRoIGltcG9ydCBBdXRoQVBJCmZyb20gLmFwaS51c2VycyBpbXBvcnQgVXNlcnNBUEkKCgpjbGFzcyBEZW1vQXBwQVBJQ2xpZW50KE9wZW5BUElDbGllbnQpOgogICAgIiIiQVBJIGNsaWVudCBmb3IgZGVtb19hcHAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZW52OiBzdHIgPSAiZGV2IiwgYXN5bmNfbW9kZTogYm9vbD1GYWxzZSkgLT4gTm9uZToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJkZW1vX2FwcCIsIGVudj1lbnYsIGRvYz0ib3BlbmFwaS5qc29uIiwgYXN5bmNfbW9kZT1hc3luY19tb2RlKQoKICAgIEBjYWNoZWRfcHJvcGVydHkKICAgIGRlZiBBdXRoKHNlbGYpIC0+IEF1dGhBUEk6CiAgICAgICAgcmV0dXJuIEF1dGhBUEkoc2VsZikKCiAgICBAY2FjaGVkX3Byb3BlcnR5CiAgICBkZWYgVXNlcnMoc2VsZikgLT4gVXNlcnNBUEk6CiAgICAgICAgcmV0dXJuIFVzZXJzQVBJKHNlbGYpCmBgYAoKCiMjIEFQSSBjbGFzcyBhbmQgZnVuY3Rpb25zCgpBbGwgQVBJIGVuZHBvaW50cyBmb3IgYSB0YWcgKG9yIHNldCBvZiB0YWdzKSB3aWxsIGJlIG1hbmFnZWQgaW5zaWRlIGFuICJBUEkgY2xhc3MiLCB3aGVyZSBlYWNoIGZ1bmN0aW9uIHdpbGwgbWFwIHRvIGEgCnNwZWNpZmljIGVuZHBvaW50IGRvY3VtZW50ZWQgaW4gdGhlIE9wZW5BUEkgc3BlYy4gCgpGb3IgZXhhbXBsZSwgaWYgdGhlIE9wZW5BUEkgc3BlYyBkZWZpbmVzIEF1dGggQVBJcyBsaWtlIHRoaXM6IApgYGBqc29uCiJwYXRocyI6IHsKICAgICIvdjEvYXV0aC9sb2dpbiI6IHsKICAgICAgInBvc3QiOiB7CiAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAicmVzcG9uc2VzIjoge30sCiAgICAgICAgImRlc2NyaXB0aW9uIjogIiIsCiAgICAgICAgInN1bW1hcnkiOiAiTG9naW4iLAogICAgICAgICJ0YWdzIjogWwogICAgICAgICAgIkF1dGgiCiAgICAgICAgXSwKICAgICAgICAic2VjdXJpdHkiOltdLAogICAgICAgICJyZXF1ZXN0Qm9keSI6IHsKICAgICAgICAgICJjb250ZW50IjogewogICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICAgICAgICJ1c2VybmFtZSI6IHsKICAgICAgICAgICAgICAgICAgICAidGl0bGUiOiAiVXNlcm5hbWUiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgInBhc3N3b3JkIjogewogICAgICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJQYXNzd29yZCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgInJlcXVpcmVkIjogWwogICAgICAgICAgICAgICAgICAidXNlcm5hbWUiLAogICAgICAgICAgICAgICAgICAicGFzc3dvcmQiCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInRpdGxlIjogIkxvZ2luRGF0YSIsCiAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAib3BlcmF0aW9uSWQiOiAicG9zdF9sb2dpbiIKICAgICAgfQogICAgfSwKICAgICIvdjEvYXV0aC9sb2dvdXQiOiB7CiAgICAgICJnZXQiOiB7CiAgICAgICAgInBhcmFtZXRlcnMiOiBbXSwKICAgICAgICAicmVzcG9uc2VzIjoge30sCiAgICAgICAgImRlc2NyaXB0aW9uIjogIiIsCiAgICAgICAgInN1bW1hcnkiOiAiTG9nb3V0IiwKICAgICAgICAidGFncyI6IFsKICAgICAgICAgICJBdXRoIgogICAgICAgIF0sCiAgICAgICAgInNlY3VyaXR5IjpbXSwKICAgICAgICAib3BlcmF0aW9uSWQiOiAiZ2V0X2xvZ291dCIKICAgICAgfQogICAgfSwKYGBgCgpUaGVuIHRoZSBBUEkgY2xhc3MgYW5kIGZ1bmN0aW9ucyB3aWxsIGJlIGdlbmVyYXRlZCBsaWtlIHRoaXM6CgpgYGBweXRob24KIyBvcGVuYXBpX3Rlc3RfY2xpZW50L2NsaWVudHMvZGVtb19hcHAvYXBpL2F1dGgucHkKCmZyb20gdHlwaW5nIGltcG9ydCBVbnBhY2sKCmZyb20gY29tbW9uX2xpYnMuY2xpZW50cy5yZXN0X2NsaWVudCBpbXBvcnQgQVBJUmVzcG9uc2UKCmZyb20gb3BlbmFwaV90ZXN0X2NsaWVudC5jbGllbnRzLmRlbW9fYXBwLmFwaS5iYXNlIGltcG9ydCBEZW1vQXBwQmFzZUFQSQpmcm9tIG9wZW5hcGlfdGVzdF9jbGllbnQubGlicmFyaWVzLmFwaS5hcGlfZnVuY3Rpb25zIGltcG9ydCBlbmRwb2ludApmcm9tIG9wZW5hcGlfdGVzdF9jbGllbnQubGlicmFyaWVzLmFwaS50eXBlcyBpbXBvcnQgS3dhcmdzLCBVbnNldAoKCmNsYXNzIEF1dGhBUEkoRGVtb0FwcEJhc2VBUEkpOgogICAgVEFHcyA9ICgiQXV0aCIsKQoKICAgIEBlbmRwb2ludC5pc19wdWJsaWMKICAgIEBlbmRwb2ludC5wb3N0KCIvdjEvYXV0aC9sb2dpbiIpCiAgICBkZWYgbG9naW4oc2VsZiwgKiwgdXNlcm5hbWU6IHN0ciA9IFVuc2V0LCBwYXNzd29yZDogc3RyID0gVW5zZXQsICoqa3dhcmdzOiBVbnBhY2tbS3dhcmdzXSkgLT4gQVBJUmVzcG9uc2U6CiAgICAgICAgIiIiTG9naW4iIiIKICAgICAgICAuLi4KCiAgICBAZW5kcG9pbnQuaXNfcHVibGljCiAgICBAZW5kcG9pbnQuZ2V0KCIvdjEvYXV0aC9sb2dvdXQiKQogICAgZGVmIGxvZ291dChzZWxmLCAqKmt3YXJnczogVW5wYWNrW0t3YXJnc10pIC0+IEFQSVJlc3BvbnNlOgogICAgICAgICIiIkxvZ291dCIiIgogICAgICAgIC4uLgoKYGBgCkEgZnVuY3Rpb24gY2FuIHRha2UgQVBJIHBhdGggcGFyYW1ldGVycyBhbmQgcXVlcnkvYm9keSBwYXJhbWV0ZXJzIGFzIGFyZ3VtZW50cywgd2hlcmUgcGF0aCBwYXJhbWV0ZXJzIGFyZSBhbHdheXMgCmRlZmluZWQgYXMgcG9zaXRpb25hbC1vbmx5IGFyZ3VtZW50cywgYW5kIG90aGVyIHBhcmFtZXRlcnMgYXJlIGFsd2F5cyBkZWZpbmVkIGFzIGtleXdvcmQtb25seSBhcmd1bWVudHMgd2l0aCBhIGRlZmF1bHQgCnZhbHVlIG9mIGBVbnNldGAuIEFueSBwYXJhbWV0ZXJzIHdpdGggdGhpcyBzZW50aW5lbCB2YWx1ZSB3aWxsIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIGFjdHVhbCBBUEkgY2FsbCBwYXJhbWV0ZXJzLiAgIApBZGRpdGlvbmFsbHksIGl0IHdpbGwgYWx3YXlzIGhhdmUgYCoqa3dhcmdzYCBmb3Igc3VwcG9ydGluZyBtYWtpbmcgYSBjYWxsIHdpdGggYW55IHVuZG9jdW1lbnRlZCAKZW5kcG9pbnQgcGFyYW1ldGVycywgYXMgd2VsbCBhcyB3aXRoIHNvbWUgaW50ZXJuYWwgZW5kcG9pbnQgZnVuY3Rpb24gY2FsbCBvcHRpb25zIHN1Y2ggYXMgYHJhd19vcHRpb25zYCwgCndoaWNoIHRha2VzIHJhdyBgaHR0cHhgIGxpYnJhcnkgb3B0aW9ucyAoZWcuIGB0aW1lb3V0YCwgYGhlYWRlcnNgLCBldGMuKSBwYXNzZWQgdG8gYGh0dHB4LkNsaWVudC5yZXF1ZXN0KClgIGlmIHlvdSBuZWVkIHRvLiAKCj4gWyFOT1RFXQo+IFBhcmFtZXRlcnMgZGVmaW5lZCBhcyBvcHRpb25hbCBpbiB0aGUgT3BlbkFQSSBzcGVjIHdpbGwgYmUgYW5ub3RhdGVkIHdpdGggYE9wdGlvbmFsW11gIGluIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUsIGJ1dCAKPiB0aGlzIGRvZXMgbm90IG1lYW4gdGhlIHBhcmFtZXRlciBpcyBhY3R1YWxseSBvcHRpb25hbCBmb3IgdGhlIGVuZHBvaW50LiBJdCBqdXN0IG1lYW5zIHlvdSBjYW4gaGl0IHRoZSBlbmRwb2ludCAKPiB3aXRob3V0IHNwZWNpZnlpbmcgdGhhdCBwYXJhbWV0ZXIsIHdoZXRoZXIgaXQgaXMgYWN0dWFsbHkgcmVxdWlyZWQgb3Igbm90IChmb3IgbmVnYXRpdmUgY2FzZSB0ZXN0aW5nKQoKU29tZSBhdHRyaWJ1dGVzIGF2YWlsYWJsZSBmcm9tIHRoZSBBUEkgY2xhc3M6IApgYGBweWNvbgo+Pj4gIyBHZXQgdGFnIGRhdGEKPj4+IGNsaWVudC5BdXRoLlRBR3MKKCdBdXRoJywpCj4+PiAjIEdldCBhdmFpbGFibGUgZW5kcG9pbnRzIHVuZGVyIHRoaXMgQVBJIGNsYXNzIAo+Pj4gcHByaW50KGNsaWVudC5BdXRoLmVuZHBvaW50cykKW0VuZHBvaW50KHRhZ3M9KCdBdXRoJywpLAogICAgICAgICAgYXBpX2NsYXNzPTxjbGFzcyAnb3BlbmFwaV90ZXN0X2NsaWVudC5jbGllbnRzLmRlbW9fYXBwLmFwaS5hdXRoLkF1dGhBUEknPiwKICAgICAgICAgIG1ldGhvZD0ncG9zdCcsCiAgICAgICAgICBwYXRoPScvdjEvYXV0aC9sb2dpbicsCiAgICAgICAgICBmdW5jX25hbWU9J2xvZ2luJywKICAgICAgICAgIG1vZGVsPTxjbGFzcyAnb3BlbmFwaV90ZXN0X2NsaWVudC5saWJyYXJpZXMuYXBpLmFwaV9mdW5jdGlvbnMudXRpbHMuZW5kcG9pbnRfbW9kZWwuQXV0aEFQSUxvZ2luRW5kcG9pbnRNb2RlbCc+LAogICAgICAgICAgdXJsPU5vbmUsCiAgICAgICAgICBjb250ZW50X3R5cGU9Tm9uZSwKICAgICAgICAgIGlzX3B1YmxpYz1UcnVlLAogICAgICAgICAgaXNfZG9jdW1lbnRlZD1UcnVlLAogICAgICAgICAgaXNfZGVwcmVjYXRlZD1GYWxzZSksCiBFbmRwb2ludCh0YWdzPSgnQXV0aCcsKSwKICAgICAgICAgIGFwaV9jbGFzcz08Y2xhc3MgJ29wZW5hcGlfdGVzdF9jbGllbnQuY2xpZW50cy5kZW1vX2FwcC5hcGkuYXV0aC5BdXRoQVBJJz4sCiAgICAgICAgICBtZXRob2Q9J2dldCcsCiAgICAgICAgICBwYXRoPScvdjEvYXV0aC9sb2dvdXQnLAogICAgICAgICAgZnVuY19uYW1lPSdsb2dvdXQnLAogICAgICAgICAgbW9kZWw9PGNsYXNzICdvcGVuYXBpX3Rlc3RfY2xpZW50LmxpYnJhcmllcy5hcGkuYXBpX2Z1bmN0aW9ucy51dGlscy5lbmRwb2ludF9tb2RlbC5BdXRoQVBJTG9naW5FbmRwb2ludE1vZGVsJz4sCiAgICAgICAgICB1cmw9Tm9uZSwKICAgICAgICAgIGNvbnRlbnRfdHlwZT1Ob25lLAogICAgICAgICAgaXNfcHVibGljPVRydWUsCiAgICAgICAgICBpc19kb2N1bWVudGVkPVRydWUsCiAgICAgICAgICBpc19kZXByZWNhdGVkPUZhbHNlKV0KYGBgCgpBIGxpc3Qgb2YgZGVmaW5lZCBBUEkgY2xhc3NlcyBhcmUgYXZhaWxhYmxlIGFzIGBBUElfQ0xBU1NFU2AuCmBgYHB5Y29uCj4+PiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4KPj4+IGZyb20gb3BlbmFwaV90ZXN0X2NsaWVudC5jbGllbnRzLmRlbW9fYXBwLmFwaSBpbXBvcnQgQVBJX0NMQVNTRVMKIyBsaXN0IGFsbCBlbmRwb2ludHMKPj4+IGFsbF9lbmRwb2ludHMgPSBjaGFpbigqW3guZW5kcG9pbnRzIGZvciB4IGluIEFQSV9DTEFTU0VTXSkKPj4+IGZvciBlbmRwb2ludCBpbiBhbGxfZW5kcG9pbnRzOgouLi4gICAgIHByaW50KGVuZHBpbnQpCi4uLiAKUE9TVCAvdjEvYXV0aC9sb2dpbgpHRVQgL3YxL2F1dGgvbG9nb3V0ClBPU1QgL3YxL3VzZXJzCkdFVCAvdjEvdXNlcnMve3VzZXJfaWR9CkdFVCAvdjEvdXNlcnMKUE9TVCAvdjEvdXNlcnMvaW1hZ2VzCkRFTEVURSAvdjEvdXNlcnMve3VzZXJfaWR9CmBgYAoKCiMjIEFQSSBlbmRwb2ludCBmdW5jdGlvbgoKRWFjaCBBUEkgY2xhc3MgZnVuY3Rpb24gaXMgZGVjb3JhdGVkIHdpdGggYSBgQGVuZHBvaW50LjxtZXRob2Q+KDxwYXRoPilgIGVuZHBvaW50IGRlY29yYXRvci4gVGhpcyBkZWNvcmF0b3IgY29udmVydHMgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGludG8gYW4gaW5zdGFuY2Ugb2YgdGhlIGBFbmRwb2ludEhhbmRsZXJgIGNsYXNzIGF0IHJ1bnRpbWUuIFRoZSBgRW5kcG9pbnRIYW5kbGVyYCBvYmplY3QgYWN0cyBhcyBhIHByb3h5IHRvIGEgcGVyLWVuZHBvaW50IGBFbmRwb2ludEZ1bmNgIG9iamVjdCwgd2hpY2ggaXMgYWxzbyBjcmVhdGVkIGF0IHJ1bnRpbWUgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgYWN0dWFsIEFQSSBjYWxscyB2aWEgaXRzIGJhc2UgY2xhc3MncyBgX19jYWxsX18oKWAgbWV0aG9kLiBBZGRpdGlvbmFsbHksIHRoZSBgRW5kcG9pbnRGdW5jYCBvYmplY3QgcHJvdmlkZXMgdmFyaW91cyBjYXBhYmlsaXRpZXMgYW5kIGF0dHJpYnV0ZXMgcmVsYXRlZCB0byB0aGUgZW5kcG9pbnQuCgplZy4gVGhlIExvZ2luIEFQSSBpcyBhY2Nlc3NpYmxlIHZpYSBgY2xpZW50LkF1dGgubG9naW4oKWAgQVBJIGZ1bmN0aW9uLCB3aGljaCBpcyBhY3R1YWxseSBhbiBpbnN0YW5jZSBvZiAKYEF1dGhBUElMb2dpbkVuZHBvaW50RnVuY2AgY2xhc3MgcmV0dXJuZWQgYnkgaXRzIGFzc29jaWF0ZWQgYEVuZHBvaW50SGFuZGxlcmAgb2JqLgoKYGBgcHljb24KPj4+IGNsaWVudC5BdXRoLmxvZ2luCjxvcGVuYXBpX3Rlc3RfY2xpZW50LmxpYnJhcmllcy5hcGkuYXBpX2Z1bmN0aW9ucy5lbmRwb2ludHMuQXV0aEFQSUxvZ2luRW5kcG9pbnRGdW5jIG9iamVjdCBhdCAweDEwNzRhYmYxMD4KKG1hcHBlZCB0bzogPGZ1bmN0aW9uIEF1dGhBUEkubG9naW4gYXQgMHgxMDc1MWMzNjA+KQpgYGAKClRoZSBlbmRwb2ludCBmdW5jdGlvbiBpcyBhbHNvIGFjY2Vzc2libGUgZGlyZWN0bHkgZnJvbSB0aGUgQVBJIGNsYXNzOgpgYGBweWNvbgo+Pj4gZnJvbSBvcGVuYXBpX3Rlc3RfY2xpZW50LmNsaWVudHMuZGVtb19hcHAuYXBpLmF1dGggaW1wb3J0IEF1dGhBUEkKPj4+IEF1dGhBUEkubG9naW4KPG9wZW5hcGlfdGVzdF9jbGllbnQubGlicmFyaWVzLmFwaS5hcGlfZnVuY3Rpb25zLmVuZHBvaW50cy5BdXRoQVBJTG9naW5FbmRwb2ludEZ1bmMgb2JqZWN0IGF0IDB4MTA3NjUwYjUwPgoobWFwcGVkIHRvOiA8ZnVuY3Rpb24gQXV0aEFQSS5sb2dpbiBhdCAweDEwNzUxYzM2MD4pCmBgYAoKVmFyaW91cyBlbmRwb2ludCBkYXRhIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBlbmRwb2ludCBmdW5jdGlvbiB2aWEgYGVuZHBvaW50YCBwcm9wZXJ0eToKYGBgcHljb24KPj4+IHByaW50KGNsaWVudC5BdXRoLmxvZ2luLmVuZHBvaW50KQpQT1NUIC92MS9hdXRoL2xvZ2luCj4+PiBwcHJpbnQoY2xpZW50LkF1dGgubG9naW4uZW5kcG9pbnQpCkVuZHBvaW50KHRhZ3M9KCdBdXRoJywpLAogICAgICAgICBhcGlfY2xhc3M9PGNsYXNzICdvcGVuYXBpX3Rlc3RfY2xpZW50LmNsaWVudHMuZGVtb19hcHAuYXBpLmF1dGguQXV0aEFQSSc+LAogICAgICAgICBtZXRob2Q9J3Bvc3QnLAogICAgICAgICBwYXRoPScvdjEvYXV0aC9sb2dpbicsCiAgICAgICAgIGZ1bmNfbmFtZT0nbG9naW4nLAogICAgICAgICBtb2RlbD08Y2xhc3MgJ29wZW5hcGlfdGVzdF9jbGllbnQubGlicmFyaWVzLmFwaS5hcGlfZnVuY3Rpb25zLnV0aWxzLmVuZHBvaW50X21vZGVsLkF1dGhBUElMb2dpbkVuZHBvaW50TW9kZWwnPiwKICAgICAgICAgdXJsPSdodHRwOi8vMTI3LjAuMC4xOjUwMDAvdjEvYXV0aC9sb2dpbicsCiAgICAgICAgIGNvbnRlbnRfdHlwZT1Ob25lLAogICAgICAgICBpc19wdWJsaWM9VHJ1ZSwKICAgICAgICAgaXNfZG9jdW1lbnRlZD1UcnVlLAogICAgICAgICBpc19kZXByZWNhdGVkPUZhbHNlKQo+Pj4gY2xpZW50LkF1dGgubG9naW4uZW5kcG9pbnQubWV0aG9kCidwb3N0Jwo+Pj4gY2xpZW50LkF1dGgubG9naW4uZW5kcG9pbnQucGF0aAonL3YxL2F1dGgvbG9naW4nCj4+PiBjbGllbnQuQXV0aC5sb2dpbi5lbmRwb2ludC51cmwKJ2h0dHA6Ly8xMjcuMC4wLjE6NTAwMC92MS9hdXRoL2xvZ2luJwpgYGAKCk5vdGUgdGhhdCB0aGUgc2FtZSBlbmRwb2ludCBkYXRhIGlzIGFsc28gYXZhaWxhYmxlIGRpcmVjdGx5IGZyb20gdGhlIEFQSSBjbGFzcywgZXhjZXB0IGZvciBgdXJsYCB3aWxsIGFsd2F5cyBiZSBgTm9uZWAuCmBgYHB5Y29uCj4+PiBmcm9tIG9wZW5hcGlfdGVzdF9jbGllbnQuY2xpZW50cy5kZW1vX2FwcC5hcGkuYXV0aCBpbXBvcnQgQXV0aEFQSQo+Pj4gY2xpZW50LkF1dGgubG9naW4uZW5kcG9pbnQgPT0gQXV0aEFQSS5sb2dpbi5lbmRwb2ludApUcnVlCj4+PiBwcmludChBdXRoQVBJLmxvZ2luLmVuZHBvaW50KQpQT1NUIC92MS9hdXRoL2xvZ2luCj4+PiBwcHJpbnQoQXV0aEFQSS5sb2dpbi5lbmRwb2ludCkKRW5kcG9pbnQodGFncz0oJ0F1dGgnLCksCiAgICAgICAgIGFwaV9jbGFzcz08Y2xhc3MgJ29wZW5hcGlfdGVzdF9jbGllbnQuY2xpZW50cy5kZW1vX2FwcC5hcGkuYXV0aC5BdXRoQVBJJz4sCiAgICAgICAgIG1ldGhvZD0ncG9zdCcsCiAgICAgICAgIHBhdGg9Jy92MS9hdXRoL2xvZ2luJywKICAgICAgICAgZnVuY19uYW1lPSdsb2dpbicsCiAgICAgICAgIG1vZGVsPTxjbGFzcyAnb3BlbmFwaV90ZXN0X2NsaWVudC5saWJyYXJpZXMuYXBpLmFwaV9mdW5jdGlvbnMudXRpbHMuZW5kcG9pbnRfbW9kZWwuQXV0aEFQSUxvZ2luRW5kcG9pbnRNb2RlbCc+LAogICAgICAgICB1cmw9Tm9uZSwKICAgICAgICAgY29udGVudF90eXBlPU5vbmUsCiAgICAgICAgIGlzX3B1YmxpYz1UcnVlLAogICAgICAgICBpc19kb2N1bWVudGVkPVRydWUsCiAgICAgICAgIGlzX2RlcHJlY2F0ZWQ9RmFsc2UpCmBgYAoKQW4gZXhhbXBsZSBvZiB0aGUgYWRkaXRpb25hbCBjYXBhYmlsaXR5IHRoZSBgRW5kcG9pbnRGdW5jYCBvYmogcHJvdmlkZXMgLSBBdXRvbWF0aWMgcmV0cnk6CmBgYHB5Y29uCiMgQ2FsbCB0aGUgZW5kcG9pbnQgd2l0aCB0aGUgYXV0b21hdGljIHJldHJ5ICh5b3UgY2FuIHNwZWNpZnkgYSByZXRyeSBjb25kaXRpb24gaWYgbmVlZGVkKQo+Pj4gciA9IGNsaWVudC5BdXRoLmxvZ2luLndpdGhfcmV0cnkodXNlcm5hbWU9J2ZvbycsIHBhc3N3b3JkPSdiYXInKQoyMDI0LTAxLTAxVDAwOjAwOjAwLjE1My0wMDAwIC0gcmVxdWVzdDogUE9TVCBodHRwOi8vMTI3LjAuMC4xOjUwMDAvdjEvYXV0aC9sb2dpbgoyMDI0LTAxLTAxVDAwOjAwOjAwLjE1OC0wMDAwIC0gcmVzcG9uc2U6IDQyOSAoVG9vIE1hbnkgUmVxdWVzdHMpCi0gcmVxdWVzdF9pZDogMWIwMjhmZjctMDg4MC00MzBjLWI1YTMtMTJhYTA1Nzg5MmNmCi0gcmVxdWVzdDogUE9TVCBodHRwOi8vMTI3LjAuMC4xOjUwMDAvdjEvYXV0aC9sb2dpbgotIHBheWxvYWQ6IHsidXNlcm5hbWUiOiAiZm9vIiwgInBhc3N3b3JkIjogIioqKiJ9Ci0gc3RhdHVzX2NvZGU6IDQyOSAoVG9vIE1hbnkgUmVxdWVzdHMpCi0gcmVzcG9uc2U6IHsKICAgICJlcnJvciI6IHsKICAgICAgICAiY29kZSI6IDQyOSwKICAgICAgICAibWVzc2FnZSI6ICJUb28gbWFueSByZXF1ZXN0cyIsCiAgICAgICAgInJlcXVlc3RfaWQiOiAiMWIwMjhmZjctMDg4MC00MzBjLWI1YTMtMTJhYTA1Nzg5MmNmIgogICAgfQp9Ci0gcmVzcG9uc2VfdGltZTogMC4wMDQ4MDRzCjIwMjQtMDEtMDFUMDA6MDA6MDAuMTU5LTAwMDAgLSBSZXRyeSBjb25kaXRpb24gbWF0Y2hlZC4gUmV0cnlpbmcgaW4gNSBzZWNvbmRzLi4uCjIwMjQtMDEtMDFUMDA6MDA6MDUuMTY2LTAwMDAgLSByZXF1ZXN0OiBQT1NUIGh0dHA6Ly8xMjcuMC4wLjE6NTAwMC92MS9hdXRoL2xvZ2luCjIwMjQtMDEtMDFUMDA6MDA6MDUuMTcxLTAwMDAgLSByZXNwb25zZTogMjAxIChDcmVhdGVkKQotIHJlcXVlc3RfaWQ6IDFhMzQxOTVlLTVjZWMtNGQ0ZS1hYmUwLTYxYWNiZmNkYWUxYQotIHJlcXVlc3Q6IFBPU1QgaHR0cDovLzEyNy4wLjAuMTo1MDAwL3YxL2F1dGgvbG9naW4KLSBwYXlsb2FkOiB7InVzZXJuYW1lIjogImZvbyIsICJwYXNzd29yZCI6ICIqKioifQotIHN0YXR1c19jb2RlOiAyMDEgKENyZWF0ZWQpCi0gcmVzcG9uc2U6IHsKICAgICJ0b2tlbiI6ICJJbUpqTWpBNVlqa3hMVEV6WW1JdE5ERTNZaTFpTjJFeExUZGhObUZsTldGallqRmlOU0kuWnVTczNRLktELXpBNkt4Q1VFQzE0WVVBdUNjdVFOR05vdWxwMlBPdUtxMHlNSWZrR0lTMEUtLVY0NzNrc3NvaG52R29JSG85N0Z3d1NlT1Y5NE5ud2FaZEd0U3hBIgp9Ci0gcmVzcG9uc2VfdGltZTogMC4wMDUxNDNzCj4+PiAKPj4+IHIucmVxdWVzdC5yZXRyaWVkLnJlcXVlc3RfaWQKJzFiMDI4ZmY3LTA4ODAtNDMwYy1iNWEzLTEyYWEwNTc4OTJjZicKYGBgCgoKIyMgQVBJIGVuZHBvaW50IG1vZGVsCgpFYWNoIGVuZHBvaW50IGlzIHJlcHJlc2VudGVkIGFzIGFuIGBFbmRwb2ludE1vZGVsYCBkYXRhY2xhc3MgbW9kZWwsIHdoaWNoIGhvbGRzIHZhcmlvdXMgY29udGV4dCBhcm91bmQgZWFjaCAKcGFyYW1ldGVyIChlZy4gdHlwZSBhbm5vdGF0aW9uKS4KYGBgcHljb24KPj4+IG1vZGVsID0gY2xpZW50LkF1dGgubG9naW4uZW5kcG9pbnQubW9kZWwKPj4+IHByaW50KG1vZGVsKQo8Y2xhc3MgJ29wZW5hcGlfdGVzdF9jbGllbnQubGlicmFyaWVzLmFwaS5hcGlfZnVuY3Rpb25zLnV0aWxzLmVuZHBvaW50X21vZGVsLkF1dGhBUElMb2dpbkVuZHBvaW50TW9kZWwnPgo+Pj4gcHByaW50KG1vZGVsLl9fZGF0YWNsYXNzX2ZpZWxkc19fLCBzb3J0X2RpY3RzPUZhbHNlKQp7J3VzZXJuYW1lJzogRmllbGQobmFtZT0ndXNlcm5hbWUnLHR5cGU9PGNsYXNzICdzdHInPixkZWZhdWx0PTxvYmplY3Qgb2JqZWN0IGF0IDB4MTA3YjQxMGIwPixkZWZhdWx0X2ZhY3Rvcnk9PGRhdGFjbGFzc2VzLl9NSVNTSU5HX1RZUEUgb2JqZWN0IGF0IDB4MTA3ZWE2MWQwPixpbml0PVRydWUscmVwcj1UcnVlLGhhc2g9Tm9uZSxjb21wYXJlPVRydWUsbWV0YWRhdGE9bWFwcGluZ3Byb3h5KHt9KSxrd19vbmx5PVRydWUsX2ZpZWxkX3R5cGU9X0ZJRUxEKSwKICdwYXNzd29yZCc6IEZpZWxkKG5hbWU9J3Bhc3N3b3JkJyx0eXBlPTxjbGFzcyAnc3RyJz4sZGVmYXVsdD08b2JqZWN0IG9iamVjdCBhdCAweDEwN2I0MTBiMD4sZGVmYXVsdF9mYWN0b3J5PTxkYXRhY2xhc3Nlcy5fTUlTU0lOR19UWVBFIG9iamVjdCBhdCAweDEwN2VhNjFkMD4saW5pdD1UcnVlLHJlcHI9VHJ1ZSxoYXNoPU5vbmUsY29tcGFyZT1UcnVlLG1ldGFkYXRhPW1hcHBpbmdwcm94eSh7fSksa3dfb25seT1UcnVlLF9maWVsZF90eXBlPV9GSUVMRCl9CmBgYAoKIyMgQVBJIHBhcmFtZXRlciBtb2RlbAoKSWYgYSBwYXJhbWV0ZXIgdHlwZSBpcyBkb2N1bWVudGVkIGFzIGBvYmplY3RgIChvciBgYXJyYXlgIG9mIG9iamVjdHMpIHdpdGggYHByb3BlcnRpZXNgIGluIHRoZSBPcGVuQVBJIHNwZWNzLCBpdCB3aWxsIApiZSByZXByZXNlbnRlZCBhcyBhIGBQYXJhbU1vZGVsYCBkYXRhY2xhc3MgbW9kZWwuIFRoZXNlIG1vZGVscyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGFzIGEgbW9kZWwgZmlsZSAoYDx5b3VyX21vZHVsZV9kaXI+L2NsaWVudHMvPGNsaWVudF9uYW1lPi9tb2RlbHMvPGFwaV90YWc+LnB5YCkgZm9yIGVhY2ggQVBJIGNsYXNzLgoKZWcuIAoKLSBBUEkgZnVuY3Rpb24gZGVmaW5pdGlvbiAobm90ZSB0aGF0IHRoZSBgbWV0YWRhdGFgIHBhcmFtZXRlciBpcyBvZiB0eXBlIGBNZXRhZGF0YWApCmBgYHB5dGhvbgojIG9wZW5hcGlfdGVzdF9jbGllbnQvY2xpZW50cy9kZW1vX2FwcC9hcGkvdXNlcnMucHkKCmZyb20gdHlwaW5nIGltcG9ydCBBbm5vdGF0ZWQsIExpdGVyYWwsIFVucGFjawoKZnJvbSBjb21tb25fbGlicy5jbGllbnRzLnJlc3RfY2xpZW50IGltcG9ydCBBUElSZXNwb25zZQoKZnJvbSBvcGVuYXBpX3Rlc3RfY2xpZW50LmNsaWVudHMuZGVtb19hcHAuYXBpLmJhc2UgaW1wb3J0IERlbW9BcHBCYXNlQVBJCmZyb20gb3BlbmFwaV90ZXN0X2NsaWVudC5saWJyYXJpZXMuYXBpLmFwaV9mdW5jdGlvbnMgaW1wb3J0IGVuZHBvaW50CmZyb20gb3BlbmFwaV90ZXN0X2NsaWVudC5saWJyYXJpZXMuYXBpLnR5cGVzIGltcG9ydCBDb25zdHJhaW50LCBGb3JtYXQsIEt3YXJncywgT3B0aW9uYWwsIFVuc2V0Cgpmcm9tIC4ubW9kZWxzLnVzZXJzIGltcG9ydCBNZXRhZGF0YQoKCmNsYXNzIFVzZXJzQVBJKERlbW9BcHBCYXNlQVBJKToKICAgIFRBR3MgPSAoIlVzZXJzIiwpCgogICAgQGVuZHBvaW50LnBvc3QoIi92MS91c2VycyIpCiAgICBkZWYgY3JlYXRlX3VzZXIoCiAgICAgICAgc2VsZiwKICAgICAgICAqLAogICAgICAgIGZpcnN0X25hbWU6IEFubm90YXRlZFtzdHIsIENvbnN0cmFpbnQobWluX2xlbj0xLCBtYXhfbGVuPTI1NSldID0gVW5zZXQsCiAgICAgICAgbGFzdF9uYW1lOiBBbm5vdGF0ZWRbc3RyLCBDb25zdHJhaW50KG1pbl9sZW49MSwgbWF4X2xlbj0yNTUpXSA9IFVuc2V0LAogICAgICAgIGVtYWlsOiBBbm5vdGF0ZWRbc3RyLCBGb3JtYXQoImVtYWlsIildID0gVW5zZXQsCiAgICAgICAgcm9sZTogTGl0ZXJhbFsiYWRtaW4iLCAidmlld2VyIiwgInN1cHBvcnQiXSA9IFVuc2V0LAogICAgICAgIG1ldGFkYXRhOiBPcHRpb25hbFtNZXRhZGF0YV0gPSBVbnNldCwKICAgICAgICAqKmt3YXJnczogVW5wYWNrW0t3YXJnc10sCiAgICApIC0+IEFQSVJlc3BvbnNlOgogICAgICAgICIiIkNyZWF0ZSBhIG5ldyB1c2VyIiIiCiAgICAgICAgLi4uCmBgYAoKLSBQYXJhbWV0ZXIgbW9kZWwgZGVmaW5pdGlvbgpgYGBweXRob24KIyBvcGVuYXBpX3Rlc3RfY2xpZW50L2NsaWVudHMvZGVtb19hcHAvbW9kZWxzL3VzZXJzLnB5Cgpmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBkYXRhY2xhc3MKZnJvbSB0eXBpbmcgaW1wb3J0IEFubm90YXRlZCwgTGl0ZXJhbAoKZnJvbSBvcGVuYXBpX3Rlc3RfY2xpZW50LmxpYnJhcmllcy5hcGkudHlwZXMgaW1wb3J0IENvbnN0cmFpbnQsIEZvcm1hdCwgT3B0aW9uYWwsIFBhcmFtTW9kZWwsIFVuc2V0CgoKQGRhdGFjbGFzcwpjbGFzcyBQcmVmZXJlbmNlcyhQYXJhbU1vZGVsKToKICAgIHRoZW1lOiBPcHRpb25hbFtMaXRlcmFsWyJsaWdodCIsICJkYXJrIiwgInN5c3RlbSJdXSA9IFVuc2V0CiAgICBsYW5ndWFnZTogT3B0aW9uYWxbc3RyXSA9IFVuc2V0CiAgICBmb250X3NpemU6IE9wdGlvbmFsW0Fubm90YXRlZFtpbnQsIENvbnN0cmFpbnQobWluPTgsIG1heD00MCwgbXVsdGlwbGVfb2Y9MildXSA9IFVuc2V0CgoKQGRhdGFjbGFzcwpjbGFzcyBTb2NpYWxMaW5rcyhQYXJhbU1vZGVsKToKICAgIGZhY2Vib29rOiBPcHRpb25hbFtBbm5vdGF0ZWRbc3RyLCBGb3JtYXQoInVyaSIpLCBDb25zdHJhaW50KG1pbl9sZW49MSldXSA9IFVuc2V0CiAgICBpbnN0YWdyYW06IE9wdGlvbmFsW0Fubm90YXRlZFtzdHIsIEZvcm1hdCgidXJpIiksIENvbnN0cmFpbnQobWluX2xlbj0xKV1dID0gVW5zZXQKICAgIGxpbmtlZGluOiBPcHRpb25hbFtBbm5vdGF0ZWRbc3RyLCBGb3JtYXQoInVyaSIpLCBDb25zdHJhaW50KG1pbl9sZW49MSldXSA9IFVuc2V0CiAgICBnaXRodWI6IE9wdGlvbmFsW0Fubm90YXRlZFtzdHIsIEZvcm1hdCgidXJpIiksIENvbnN0cmFpbnQobWluX2xlbj0xKV1dID0gVW5zZXQKCgpAZGF0YWNsYXNzCmNsYXNzIE1ldGFkYXRhKFBhcmFtTW9kZWwpOgogICAgcHJlZmVyZW5jZXM6IE9wdGlvbmFsW1ByZWZlcmVuY2VzXSA9IFVuc2V0CiAgICBzb2NpYWxfbGlua3M6IE9wdGlvbmFsW1NvY2lhbExpbmtzXSA9IFVuc2V0CgpgYGAKCj4gWyFOT1RFXQo+IFNhbWUgbGlrZSBBUEkgZnVuY3Rpb24gcGFyYW1ldGVyczoKPiAtIEFsbCBtb2RlbCBhdHRyaWJ1dGVzIHdpbGwgYmUgZGVmaW5lZCB3aXRoIGEgZGVmYXVsdCB2YWx1ZSBvZiBgVW5zZXRgLiBBbnkgcGFyYW1ldGVycyB3aXRoIHRoaXMgc2VudGluZWwgdmFsdWUgd2lsbCBiZSBleGNsdWRlZCBmcm9tIGFuIEFQSSBjYWxsIHBheWxvYWQKPiAtIFBhcmFtZXRlcnMgZGVmaW5lZCBhcyBvcHRpb25hbCBpbiB0aGUgT3BlbkFQSSBzcGVjIHdpbGwgYmUgYW5ub3RhdGVkIHdpdGggYE9wdGlvbmFsW11gIGluIHRoZSBtb2RlbCBkZWZpbml0aW9uCgpBIHBhcmFtZXRlciBtb2RlbCBpcyBhIGN1c3RvbWl6ZWQgYGRhdGFjbGFzc2AgdGhhdCBpcyBpbnRlbmRlZCB0byBmdW5jdGlvbiBleGFjdGx5IHRoZSBzYW1lIGFzIGEgZGljdGlvbmFyeSB1bmRlciB0aGUgaG9vZC4gClVubGlrZSB0aGUgbmF0aXZlIGRhdGFjbGFzcywgYSBwYXJhbWV0ZXIgbW9kZWwgaW5zdGFuY2Ugd2lsbCBvbmx5IGhvbGQgZmllbGRzIHRoYXQgd2VyZSBleHBsaWNpdGx5IGdpdmVuIGF0IGluc3RhbnRpYXRpb24uIApUaGlzIGlzIHZlcnkgaW1wb3J0YW50IHdoZW4geW91IHdhbnQgdG8gZGlmZmVyZW50aWF0ZSB0ZXN0IHNjZW5hcmlvcyBmb3IgIm5vdCBpbmNsdWRpbmcgYSBwYXJhbWV0ZXIgaW4gdGhlIHBheWxvYWQiIHYucy4gCiJleHBsaWNpdGx5IGdpdmluZyBhIGBudWxsYCB2YWx1ZSBmb3IgYSBwYXJhbWV0ZXIiLgoKYGBgcHljb24KPj4+IGZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGFzZGljdCwgaXNfZGF0YWNsYXNzCj4+PiBmcm9tIG9wZW5hcGlfdGVzdF9jbGllbnQuY2xpZW50cy5kZW1vX2FwcC5tb2RlbHMudXNlcnMgaW1wb3J0ICoKPj4+IG1ldGFkYXRhID0gTWV0YWRhdGEocHJlZmVyZW5jZXM9UHJlZmVyZW5jZXModGhlbWU9J2RhcmsnKSkKPj4+IHByaW50KG1ldGFkYXRhKQpNZXRhZGF0YShwcmVmZXJlbmNlcz1QcmVmZXJlbmNlcyh0aGVtZT0nZGFyaycpKQo+Pj4gcHJpbnQobWV0YWRhdGEucHJlZmVyZW5jZXMpClByZWZlcmVuY2VzKHRoZW1lPSdkYXJrJykKPj4+IHByaW50KG1ldGFkYXRhWyJwcmVmZXJlbmNlcyJdKQpQcmVmZXJlbmNlcyh0aGVtZT0nZGFyaycpCj4+PiBpc19kYXRhY2xhc3MobWV0YWRhdGEpIGFuZCBpc2luc3RhbmNlKG1ldGFkYXRhLCBkaWN0KQpUcnVlCj4+PiBtZXRhZGF0YS5pdGVtcygpCmRpY3RfaXRlbXMoWygncHJlZmVyZW5jZXMnLCBQcmVmZXJlbmNlcyh0aGVtZT0nZGFyaycpKV0pCj4+PiBhc2RpY3QobWV0YWRhdGEpCnsncHJlZmVyZW5jZXMnOiB7J3RoZW1lJzogJ2RhcmsnfX0KYGBgCgpQYXJhbWV0ZXIgbW9kZWxzIGZ1bmN0aW9uIGJvdGggYXMgYSBkYXRhY2xhc3MgYW5kIGEgZGljdGlvbmFyeSwgYW5kIGEgY2hhbmdlIG1hZGUgdG8gb25lIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBvdGhlci4KYGBgcHljb24KPj4+ICMgVXBkYXRlIGEgbW9kZWwgZmllbGQgdmFsdWUKPj4+IG1ldGFkYXRhLnByZWZlcmVuY2VzLnRoZW1lID0gImxpZ2h0Igo+Pj4gcHJpbnQobWV0YWRhdGEpCk1ldGFkYXRhKHByZWZlcmVuY2VzPVByZWZlcmVuY2VzKHRoZW1lPSdsaWdodCcpKQo+Pj4gYXNkaWN0KG1ldGFkYXRhKQp7J3ByZWZlcmVuY2VzJzogeyd0aGVtZSc6ICdsaWdodCd9fQo+Pj4KPj4+ICMgVXBkYXRlIGFzIGEgZGljdGlvbmFyeQo+Pj4gbWV0YWRhdGEucHJlZmVyZW5jZXNbInRoZW1lIl0gPSAiZGFyayIKPj4+IHByaW50KG1ldGFkYXRhKQpNZXRhZGF0YShwcmVmZXJlbmNlcz1QcmVmZXJlbmNlcyh0aGVtZT0nZGFyaycpKQo+Pj4gYXNkaWN0KG1ldGFkYXRhKQp7J3ByZWZlcmVuY2VzJzogeyd0aGVtZSc6ICdkYXJrJ319CmBgYAoKWW91IGNhbiBhbHNvIGR5bmFtaWNhbGx5IGFkZCBvciBkZWxldGUgbW9kZWwgZmllbGRzIHNpbWlsYXIgdG8gaG93IHlvdSBjYW4gYWRkIG9yIHJlbW92ZSBhIGtleSBmcm9tIGEgZGljdGlvbmFyeSwgaWYgeW91IG5lZWQgdG8uCmBgYHB5Y29uCj4+PiAjIEFkZCBhIG5ldyBmaWVsZCB0byB0aGUgbW9kZWwKPj4+IG1ldGFkYXRhLm5ld19hdHRyMSA9IDEyMwo+Pj4gcHJpbnQobWV0YWRhdGEpCk1ldGFkYXRhKHByZWZlcmVuY2VzPVByZWZlcmVuY2VzKHRoZW1lPSdkYXJrJyksIG5ld19hdHRyMT0xMjMpCj4+PiBhc2RpY3QobWV0YWRhdGEpCnsncHJlZmVyZW5jZXMnOiB7J3RoZW1lJzogJ2RhcmsnfSwgJ25ld19hdHRyMSc6IDEyM30KPj4+IAo+Pj4gIyBBZGQgYSBuZXcgZmllbGQgdG8gdGhlIGRpY3Rpb25hcnkKPj4+IG1ldGFkYXRhWyJuZXdfYXR0cjIiXSA9IDQ1Ngo+Pj4gcHJpbnQobWV0YWRhdGEpCk1ldGFkYXRhKHByZWZlcmVuY2VzPVByZWZlcmVuY2VzKHRoZW1lPSdkYXJrJyksIG5ld19hdHRyMT0xMjMsIG5ld19hdHRyMj00NTYpCj4+PiBhc2RpY3QobWV0YWRhdGEpCnsncHJlZmVyZW5jZXMnOiB7J3RoZW1lJzogJ2RhcmsnfSwgJ25ld19hdHRyMSc6IDEyMywgJ25ld19hdHRyMic6IDQ1Nn0KPj4+Cj4+PiAjIERlbGV0ZSBhIGZpZWxkIGZyb20gdGhlIG1vZGVsCj4+PiBkZWxhdHRyKG1ldGFkYXRhLCAibmV3X2F0dHIyIikKPj4+IHByaW50KG1ldGFkYXRhKQpNZXRhZGF0YShwcmVmZXJlbmNlcz1QcmVmZXJlbmNlcyh0aGVtZT0nZGFyaycpLCBuZXdfYXR0cjE9MTIzKQo+Pj4gYXNkaWN0KG1ldGFkYXRhKQp7J3ByZWZlcmVuY2VzJzogeyd0aGVtZSc6ICdkYXJrJ30sICduZXdfYXR0cjEnOiAxMjN9Cj4+Pgo+Pj4gIyBEZWxldGUgYSBmaWVsZCBmcm9tIHRoZSBkaWN0aW9uYXJ5Cj4+PiBkZWwgbWV0YWRhdGFbIm5ld19hdHRyMSJdCj4+PiBwcmludChtZXRhZGF0YSkKTWV0YWRhdGEocHJlZmVyZW5jZXM9UHJlZmVyZW5jZXModGhlbWU9J2RhcmsnKSkKPj4+IGFzZGljdChtZXRhZGF0YSkKeydwcmVmZXJlbmNlcyc6IHsndGhlbWUnOiAnZGFyayd9fQpgYGAKCiMjIFB5ZGFudGljIG1vZGVscyAoVmFsaWRhdGlvbiBtb2RlKQoKQnkgZGVmYXVsdCwgb3VyIGNsaWVudCBtb2RlbHMgd2lsbCBub3QgcGVyZm9ybSBhbnkgdmFsaWRhdGlvbiBmb3IgeW91LCBzaW5jZSB0aGV5IGFyZSBiYXNlZCBvbiBgZGF0YWNsYXNzYC4gVGhpcyBhbGxvd3MgCnRoZSB0ZXN0IGNsaWVudCB0byBzZW5kIHdoYXRldmVyIGludmFsaWQgdmFsdWVzIGZvciBhIHBhcmFtZXRlciB0byB2ZXJpZnkgdGhlIHNlcnZlci1zaWRlIHZhbGlkYXRpb24gbG9naWMuICAgIApUbyBleHBhbmQgdGhlIHVzZSBjYXNlIG9mIHRoZSBjbGllbnQgYmV5b25kIHRlc3RpbmcsIHlvdSBjYW4gb3B0aW9uYWxseSBlbmFibGUgInZhbGlkYXRpb24gbW9kZSIuIFdoZW4gZW5hYmxlZCwgYWxsIG9mIApvdXIgZGF0YWNsYXNzIG1vZGVscyAoRW5kcG9pbnQvUGFyYW0gbW9kZWxzKSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIGludG8gbmF0aXZlIFB5ZGFudGljIG1vZGVscyB0aGF0IGluaGVyaXQgCnRoaXMgY3VzdG9tIGJhc2UgbW9kZWwgY2xhc3M6CgpgYGBweXRob24KZnJvbSB0eXBpbmcgaW1wb3J0IENsYXNzVmFyCgpmcm9tIHB5ZGFudGljIGltcG9ydCBCYXNlTW9kZWwsIENvbmZpZ0RpY3QKCgpjbGFzcyBQeWRhbnRpY01vZGVsKEJhc2VNb2RlbCk6CiAgICAiIiJCYXNlIGNsYXNzIGZvciBQeWRhbnRpYyBlbmRwb2ludC9wYXJhbSBtb2RlbHMiIiIKCiAgICBtb2RlbF9jb25maWc6IENsYXNzVmFyID0gQ29uZmlnRGljdChleHRyYT0iZm9yYmlkIiwgdmFsaWRhdGVfYXNzaWdubWVudD1UcnVlLCBzdHJpY3Q9VHJ1ZSkKYGBgCgpXaXRoIHRoaXMgZHluYW1pYyBjb252ZXJzaW9uLCByZXF1ZXN0IHBhcmFtZXRlcnMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHZhbGlkYXRlZCBpbiBQeWRhbnRpYyBzdHJpY3QgbW9kZSBiZWZvcmUgYW4gQVBJIApyZXF1ZXN0IGNhbGwuICAKCkhlcmUgYXJlIHNvbWUgY29tcGFyaXNvbnMgYmV0d2VlbiByZWd1bGFyIG1vZGVscyBhbmQgcHlkYW50aWMgbW9kZWxzOgoKLSBSZWd1bGFyIGRhdGFjbGFzcyBtb2RlbCAoVmFsaWRhdGlvbiB3aWxsIGJlIGRvbmUgb24gdGhlIHNlcnZlci1zaWRlKQpgYGBweWNvbiAKPj4+ICMgTW9kZWwgZGVmaW5pdGlvbgo+Pj4gbW9kZWwgPSBjbGllbnQuVXNlcnMuY3JlYXRlX3VzZXIuZW5kcG9pbnQubW9kZWwKPj4+IHByaW50KG1vZGVsKQo8Y2xhc3MgJ29wZW5hcGlfdGVzdF9jbGllbnQubGlicmFyaWVzLmFwaS5hcGlfZnVuY3Rpb25zLnV0aWxzLmVuZHBvaW50X21vZGVsLlVzZXJzQVBJQ3JlYXRlVXNlckVuZHBvaW50TW9kZWwnPgo+Pj4gcHByaW50KG1vZGVsLl9fZGF0YWNsYXNzX2ZpZWxkc19fLCBzb3J0X2RpY3RzPUZhbHNlKQp7J2ZpcnN0X25hbWUnOiBGaWVsZChuYW1lPSdmaXJzdF9uYW1lJyx0eXBlPXR5cGluZy5Bbm5vdGF0ZWRbc3RyLCBDb25zdHJhaW50KG1pbl9sZW49MSwgbWF4X2xlbj0yNTUpXSxkZWZhdWx0PTxvYmplY3Qgb2JqZWN0IGF0IDB4MTA3YjQxMGIwPixkZWZhdWx0X2ZhY3Rvcnk9PGRhdGFjbGFzc2VzLl9NSVNTSU5HX1RZUEUgb2JqZWN0IGF0IDB4MTA3ZWE2MWQwPixpbml0PVRydWUscmVwcj1UcnVlLGhhc2g9Tm9uZSxjb21wYXJlPVRydWUsbWV0YWRhdGE9bWFwcGluZ3Byb3h5KHt9KSxrd19vbmx5PVRydWUsX2ZpZWxkX3R5cGU9X0ZJRUxEKSwKICdsYXN0X25hbWUnOiBGaWVsZChuYW1lPSdsYXN0X25hbWUnLHR5cGU9dHlwaW5nLkFubm90YXRlZFtzdHIsIENvbnN0cmFpbnQobWluX2xlbj0xLCBtYXhfbGVuPTI1NSldLGRlZmF1bHQ9PG9iamVjdCBvYmplY3QgYXQgMHgxMDdiNDEwYjA+LGRlZmF1bHRfZmFjdG9yeT08ZGF0YWNsYXNzZXMuX01JU1NJTkdfVFlQRSBvYmplY3QgYXQgMHgxMDdlYTYxZDA+LGluaXQ9VHJ1ZSxyZXByPVRydWUsaGFzaD1Ob25lLGNvbXBhcmU9VHJ1ZSxtZXRhZGF0YT1tYXBwaW5ncHJveHkoe30pLGt3X29ubHk9VHJ1ZSxfZmllbGRfdHlwZT1fRklFTEQpLAogJ2VtYWlsJzogRmllbGQobmFtZT0nZW1haWwnLHR5cGU9dHlwaW5nLkFubm90YXRlZFtzdHIsIEZvcm1hdCh2YWx1ZT0nZW1haWwnKV0sZGVmYXVsdD08b2JqZWN0IG9iamVjdCBhdCAweDEwN2I0MTBiMD4sZGVmYXVsdF9mYWN0b3J5PTxkYXRhY2xhc3Nlcy5fTUlTU0lOR19UWVBFIG9iamVjdCBhdCAweDEwN2VhNjFkMD4saW5pdD1UcnVlLHJlcHI9VHJ1ZSxoYXNoPU5vbmUsY29tcGFyZT1UcnVlLG1ldGFkYXRhPW1hcHBpbmdwcm94eSh7fSksa3dfb25seT1UcnVlLF9maWVsZF90eXBlPV9GSUVMRCksCiAncm9sZSc6IEZpZWxkKG5hbWU9J3JvbGUnLHR5cGU9dHlwaW5nLkxpdGVyYWxbJ2FkbWluJywgJ3ZpZXdlcicsICdzdXBwb3J0J10sZGVmYXVsdD08b2JqZWN0IG9iamVjdCBhdCAweDEwN2I0MTBiMD4sZGVmYXVsdF9mYWN0b3J5PTxkYXRhY2xhc3Nlcy5fTUlTU0lOR19UWVBFIG9iamVjdCBhdCAweDEwN2VhNjFkMD4saW5pdD1UcnVlLHJlcHI9VHJ1ZSxoYXNoPU5vbmUsY29tcGFyZT1UcnVlLG1ldGFkYXRhPW1hcHBpbmdwcm94eSh7fSksa3dfb25seT1UcnVlLF9maWVsZF90eXBlPV9GSUVMRCksCiAnbWV0YWRhdGEnOiBGaWVsZChuYW1lPSdtZXRhZGF0YScsdHlwZT10eXBpbmcuT3B0aW9uYWxbb3BlbmFwaV90ZXN0X2NsaWVudC5jbGllbnRzLmRlbW9fYXBwLm1vZGVscy51c2Vycy5NZXRhZGF0YV0sZGVmYXVsdD08b2JqZWN0IG9iamVjdCBhdCAweDEwN2I0MTBiMD4sZGVmYXVsdF9mYWN0b3J5PTxkYXRhY2xhc3Nlcy5fTUlTU0lOR19UWVBFIG9iamVjdCBhdCAweDEwN2VhNjFkMD4saW5pdD1UcnVlLHJlcHI9VHJ1ZSxoYXNoPU5vbmUsY29tcGFyZT1UcnVlLG1ldGFkYXRhPW1hcHBpbmdwcm94eSh7fSksa3dfb25seT1UcnVlLF9maWVsZF90eXBlPV9GSUVMRCl9Cj4+Pgo+Pj4gIyBNYWtlIGFuIEFQSSByZXF1ZXN0IHdpdGggdGhlIGludmFsaWQgcGFyYW1ldGVyIHZhbHVlcwo+Pj4gciA9IGNsaWVudC5Vc2Vycy5jcmVhdGVfdXNlcihmaXJzdF9uYW1lPTEyMywgZW1haWw9ImZvbyIsIHJvbGU9InNvbWV0aGluZyIsIG1ldGFkYXRhPU1ldGFkYXRhKHNvY2lhbF9saW5rcz1Tb2NpYWxMaW5rcyhmYWNlYm9vaz0idGVzdCIpKSwgZXh0cmE9MTIzKQoyMDI0LTAxLTAxVDAwOjAwOjAwLjc0MS0wODAwIC0gVGhlIHJlcXVlc3QgY29udGFpbnMgb25lIG9yIG1vcmUgcGFyYW1ldGVycyBVc2Vyc0FQSS5jcmVhdGVfdXNlcigpIGRvZXMgbm90IGV4cGVjdDoKLSBleHRyYQoyMDI0LTAxLTAxVDAwOjAwOjAwLjc0Mi0wODAwIC0gcmVxdWVzdDogUE9TVCBodHRwOi8vMTI3LjAuMC4xOjUwMDAvdjEvdXNlcnMKMjAyNC0wMS0wMVQwMDowMDowMC43NTItMDgwMCAtIHJlc3BvbnNlOiA0MDAgKEJhZCBSZXF1ZXN0KQotIHJlcXVlc3RfaWQ6IDkxYjRhYzA1LTEyODAtNDczYi1hYzQxLTBiZTMwOTAzYzQ0OAotIHJlcXVlc3Q6IFBPU1QgaHR0cDovLzEyNy4wLjAuMTo1MDAwL3YxL3VzZXJzCi0gcGF5bG9hZDogeyJmaXJzdF9uYW1lIjogMTIzLCAiZW1haWwiOiAiZm9vIiwgInJvbGUiOiAic29tZXRoaW5nIiwgIm1ldGFkYXRhIjogeyJzb2NpYWxfbGlua3MiOiB7ImZhY2Vib29rIjogInRlc3QifX0sICJleHRyYSI6IDEyM30KLSBzdGF0dXNfY29kZTogNDAwIChCYWQgUmVxdWVzdCkKLSByZXNwb25zZTogewogICAgImVycm9yIjogewogICAgICAgICJjb2RlIjogNDAwLAogICAgICAgICJtZXNzYWdlIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmdfdHlwZSIsCiAgICAgICAgICAgICAgICAibG9jIjogWwogICAgICAgICAgICAgICAgICAgICJmaXJzdF9uYW1lIgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJtc2ciOiAiSW5wdXQgc2hvdWxkIGJlIGEgdmFsaWQgc3RyaW5nIiwKICAgICAgICAgICAgICAgICJpbnB1dCI6IDEyMywKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9lcnJvcnMucHlkYW50aWMuZGV2LzIuOS92L3N0cmluZ190eXBlIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJtaXNzaW5nIiwKICAgICAgICAgICAgICAgICJsb2MiOiBbCiAgICAgICAgICAgICAgICAgICAgImxhc3RfbmFtZSIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAibXNnIjogIkZpZWxkIHJlcXVpcmVkIiwKICAgICAgICAgICAgICAgICJpbnB1dCI6IHsKICAgICAgICAgICAgICAgICAgICAiZmlyc3RfbmFtZSI6IDEyMywKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZm9vIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJzb21ldGhpbmciLAogICAgICAgICAgICAgICAgICAgICJtZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInNvY2lhbF9saW5rcyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWNlYm9vayI6ICJ0ZXN0IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiZXh0cmEiOiAxMjMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZXJyb3JzLnB5ZGFudGljLmRldi8yLjkvdi9taXNzaW5nIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ2YWx1ZV9lcnJvciIsCiAgICAgICAgICAgICAgICAibG9jIjogWwogICAgICAgICAgICAgICAgICAgICJlbWFpbCIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAibXNnIjogInZhbHVlIGlzIG5vdCBhIHZhbGlkIGVtYWlsIGFkZHJlc3M6IEFuIGVtYWlsIGFkZHJlc3MgbXVzdCBoYXZlIGFuIEAtc2lnbi4iLAogICAgICAgICAgICAgICAgImlucHV0IjogImZvbyIsCiAgICAgICAgICAgICAgICAiY3R4IjogewogICAgICAgICAgICAgICAgICAgICJyZWFzb24iOiAiQW4gZW1haWwgYWRkcmVzcyBtdXN0IGhhdmUgYW4gQC1zaWduLiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZXJyb3JzLnB5ZGFudGljLmRldi8yLjkvdi92YWx1ZV9lcnJvciIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgInR5cGUiOiAiZW51bSIsCiAgICAgICAgICAgICAgICAibG9jIjogWwogICAgICAgICAgICAgICAgICAgICJyb2xlIgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJtc2ciOiAiSW5wdXQgc2hvdWxkIGJlICdhZG1pbicsICd2aWV3ZXInIG9yICdzdXBwb3J0JyIsCiAgICAgICAgICAgICAgICAiaW5wdXQiOiAic29tZXRoaW5nIiwKICAgICAgICAgICAgICAgICJjdHgiOiB7CiAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIidhZG1pbicsICd2aWV3ZXInIG9yICdzdXBwb3J0JyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZXJyb3JzLnB5ZGFudGljLmRldi8yLjkvdi9lbnVtIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ1cmxfcGFyc2luZyIsCiAgICAgICAgICAgICAgICAibG9jIjogWwogICAgICAgICAgICAgICAgICAgICJtZXRhZGF0YSIsCiAgICAgICAgICAgICAgICAgICAgInNvY2lhbF9saW5rcyIsCiAgICAgICAgICAgICAgICAgICAgImZhY2Vib29rIgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJtc2ciOiAiSW5wdXQgc2hvdWxkIGJlIGEgdmFsaWQgVVJMLCByZWxhdGl2ZSBVUkwgd2l0aG91dCBhIGJhc2UiLAogICAgICAgICAgICAgICAgImlucHV0IjogInRlc3QiLAogICAgICAgICAgICAgICAgImN0eCI6IHsKICAgICAgICAgICAgICAgICAgICAiZXJyb3IiOiAicmVsYXRpdmUgVVJMIHdpdGhvdXQgYSBiYXNlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9lcnJvcnMucHlkYW50aWMuZGV2LzIuOS92L3VybF9wYXJzaW5nIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicmVxdWVzdF9pZCI6ICI5MWI0YWMwNS0xMjgwLTQ3M2ItYWM0MS0wYmUzMDkwM2M0NDgiCiAgICB9Cn0KLSByZXNwb25zZV90aW1lOiAwLjAxMDEwN3MKYGBgCgo8YnI+CgotIFB5ZGFudGljIG1vZGVsIChWYWxpZGF0aW9uIHdpbGwgYmUgZG9uZSBvbiB0aGUgY2xpZW50LXNpZGUpCmBgYHB5Y29uCj4+PiAjIE1vZGVsIGRlZmluaXRpb24KPj4+IHB5ZGFudGljX21vZGVsID0gY2xpZW50LlVzZXJzLmNyZWF0ZV91c2VyLmVuZHBvaW50Lm1vZGVsLnRvX3B5ZGFudGljKCkKPj4+IHByaW50KHB5ZGFudGljX21vZGVsKQo8Y2xhc3MgJ29wZW5hcGlfdGVzdF9jbGllbnQubGlicmFyaWVzLmFwaS5hcGlfZnVuY3Rpb25zLnV0aWxzLmVuZHBvaW50X21vZGVsLlVzZXJzQVBJQ3JlYXRlVXNlckVuZHBvaW50TW9kZWxQeWRhbnRpYyc+Cj4+PiBwcHJpbnQocHlkYW50aWNfbW9kZWwubW9kZWxfZmllbGRzLCBzb3J0X2RpY3RzPUZhbHNlKQp7J2ZpcnN0X25hbWUnOiBGaWVsZEluZm8oYW5ub3RhdGlvbj1zdHIsIHJlcXVpcmVkPVRydWUsIG1ldGFkYXRhPVtNaW5MZW4obWluX2xlbmd0aD0xKSwgTWF4TGVuKG1heF9sZW5ndGg9MjU1KV0pLAogJ2xhc3RfbmFtZSc6IEZpZWxkSW5mbyhhbm5vdGF0aW9uPXN0ciwgcmVxdWlyZWQ9VHJ1ZSwgbWV0YWRhdGE9W01pbkxlbihtaW5fbGVuZ3RoPTEpLCBNYXhMZW4obWF4X2xlbmd0aD0yNTUpXSksCiAnZW1haWwnOiBGaWVsZEluZm8oYW5ub3RhdGlvbj1FbWFpbFN0ciwgcmVxdWlyZWQ9VHJ1ZSwgbWV0YWRhdGE9W0Zvcm1hdCh2YWx1ZT0nZW1haWwnKV0pLAogJ3JvbGUnOiBGaWVsZEluZm8oYW5ub3RhdGlvbj1MaXRlcmFsWydhZG1pbicsICd2aWV3ZXInLCAnc3VwcG9ydCddLCByZXF1aXJlZD1UcnVlKSwKICdtZXRhZGF0YSc6IEZpZWxkSW5mbyhhbm5vdGF0aW9uPVVuaW9uW01ldGFkYXRhUHlkYW50aWMsIE5vbmVUeXBlXSwgcmVxdWlyZWQ9RmFsc2UsIGRlZmF1bHQ9Tm9uZSl9Cj4+Pgo+Pj4gIyBNYWtlIGFuIEFQSSByZXF1ZXN0IHdpdGggdGhlIHNhbWUgaW52YWxpZCBwYXJtZXRlciB2YWx1ZXMsIGJ1dCB3aXRoIHZhbGlkYXRlPVRydWUgb3B0aW9uCj4+PiByID0gY2xpZW50LlVzZXJzLmNyZWF0ZV91c2VyKGZpcnN0X25hbWU9MTIzLCBlbWFpbD0iZm9vIiwgcm9sZT0ic29tZXRoaW5nIiwgbWV0YWRhdGE9TWV0YWRhdGEoc29jaWFsX2xpbmtzPVNvY2lhbExpbmtzKGZhY2Vib29rPSJ0ZXN0IikpLCBleHRyYT0xMjMsIHZhbGlkYXRlPVRydWUpCjIwMjQtMDEtMDFUMDA6MDA6MDAuODMwLTA4MDAgLSBUaGUgcmVxdWVzdCBjb250YWlucyBvbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIFVzZXJzQVBJLmNyZWF0ZV91c2VyKCkgZG9lcyBub3QgZXhwZWN0OgotIGV4dHJhClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgPHNuaXA+CiAgICByYWlzZSBWYWx1ZUVycm9yKApWYWx1ZUVycm9yOiBSZXF1ZXN0IHBhcmFtZXRlciB2YWxpZGF0aW9uIGZhaWxlZC4KNiB2YWxpZGF0aW9uIGVycm9ycyBmb3IgVXNlcnNBUElDcmVhdGVVc2VyRW5kcG9pbnRNb2RlbFB5ZGFudGljCmZpcnN0X25hbWUKICBJbnB1dCBzaG91bGQgYmUgYSB2YWxpZCBzdHJpbmcgW3R5cGU9c3RyaW5nX3R5cGUsIGlucHV0X3ZhbHVlPTEyMywgaW5wdXRfdHlwZT1pbnRdCiAgICBGb3IgZnVydGhlciBpbmZvcm1hdGlvbiB2aXNpdCBodHRwczovL2Vycm9ycy5weWRhbnRpYy5kZXYvMi45L3Yvc3RyaW5nX3R5cGUKbGFzdF9uYW1lCiAgRmllbGQgcmVxdWlyZWQgW3R5cGU9bWlzc2luZywgaW5wdXRfdmFsdWU9eydmaXJzdF9uYW1lJzogMTIzLCAnZW1haS4uLiAndGVzdCd9fSwgJ2V4dHJhJzogMTIzfSwgaW5wdXRfdHlwZT1kaWN0XQogICAgRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gdmlzaXQgaHR0cHM6Ly9lcnJvcnMucHlkYW50aWMuZGV2LzIuOS92L21pc3NpbmcKZW1haWwKICB2YWx1ZSBpcyBub3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzOiBBbiBlbWFpbCBhZGRyZXNzIG11c3QgaGF2ZSBhbiBALXNpZ24uIFt0eXBlPXZhbHVlX2Vycm9yLCBpbnB1dF92YWx1ZT0nZm9vJywgaW5wdXRfdHlwZT1zdHJdCnJvbGUKICBJbnB1dCBzaG91bGQgYmUgJ2FkbWluJywgJ3ZpZXdlcicgb3IgJ3N1cHBvcnQnIFt0eXBlPWxpdGVyYWxfZXJyb3IsIGlucHV0X3ZhbHVlPSdzb21ldGhpbmcnLCBpbnB1dF90eXBlPXN0cl0KICAgIEZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIHZpc2l0IGh0dHBzOi8vZXJyb3JzLnB5ZGFudGljLmRldi8yLjkvdi9saXRlcmFsX2Vycm9yCm1ldGFkYXRhLnNvY2lhbF9saW5rcy5mYWNlYm9vawogIElucHV0IHNob3VsZCBiZSBhIHZhbGlkIFVSTCwgcmVsYXRpdmUgVVJMIHdpdGhvdXQgYSBiYXNlIFt0eXBlPXVybF9wYXJzaW5nLCBpbnB1dF92YWx1ZT0ndGVzdCcsIGlucHV0X3R5cGU9c3RyXQogICAgRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gdmlzaXQgaHR0cHM6Ly9lcnJvcnMucHlkYW50aWMuZGV2LzIuOS92L3VybF9wYXJzaW5nCmV4dHJhCiAgRXh0cmEgaW5wdXRzIGFyZSBub3QgcGVybWl0dGVkIFt0eXBlPWV4dHJhX2ZvcmJpZGRlbiwgaW5wdXRfdmFsdWU9MTIzLCBpbnB1dF90eXBlPWludF0KICAgIEZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIHZpc2l0IGh0dHBzOi8vZXJyb3JzLnB5ZGFudGljLmRldi8yLjkvdi9leHRyYV9mb3JiaWRkZW4KYGBgCgo+IFshVElQXQo+IFRoZSBhYm92ZSBleGFtcGxlIGVuYWJsZXMgdmFsaWRhdGlvbiBtb2RlICJwZXIgcmVxdWVzdCIgYnkgcGFzc2luZyBgdmFsaWRhdGU9VHJ1ZWAgdG8gdGhlIEFQSSBmdW5jdGlvbiBjYWxsLiAKPiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGFsc28gc2V0IGBWQUxJREFUSU9OX01PREU9J3RydWUnYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBnbG9iYWxseSBlbmFibGUgdGhlIHZhbGlkYXRpb24gbW9kZS4K readmeEtag: '"a19e58a9177f1919ad346228cc575ce8be07a6c4"' readmeLastModified: Mon, 15 Dec 2025 19:29:14 GMT repositoryId: 763312966 description: >- Dynamically generate/update API test clients from any OpenAPI 3.x specifications. Supports both sync and async. created: '2024-02-26T03:47:38Z' updated: '2025-12-18T19:38:56Z' language: Python archived: false stars: 4 watchers: 2 forks: 0 owner: yugokato logo: https://avatars.githubusercontent.com/u/15665210?v=4 license: MIT repoEtag: '"42ecb3ec11d4020fc6137a98f38a8cee22a4caec1289abf843647891e63b20f9"' repoLastModified: Thu, 18 Dec 2025 19:38:56 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/wtx-labs/woocommerce-api-openapi-specification v3: true id: 5ef6b6f7a0643145ce282df554713a32 repositoryMetadata: base64Readme: >- IyBXb29Db21tZXJjZSBSRVNUIEFQSSBzcGVjaWZpY2F0aW9uIGluIE9wZW5BUEkgMy4wIGZvcm1hdAoKVGhlIFdvb0NvbW1lcmNlIFJFU1QgQVBJIHNwZWNpZmljYXRpb24gaW4gT3BlbkFQSSAzLjAgZm9ybWF0LgoKIyMg8J+aqCBQcm9qZWN0IFN0YXR1cwoKPiDimqDvuI8gKipOb3RlOiBUaGlzIGlzIGEgZGV2ZWxvcG1lbnQgdmVyc2lvbiEqKgo+IAo+IFRoZSBzcGVjaWZpY2F0aW9uIGlzIHVuZGVyIGRldmVsb3BtZW50IGFuZCB3aWxsIGJlIGdyYWR1YWxseSBleHBhbmRlZCB0byBjb3ZlciB0aGUga2V5IGZ1bmN0aW9uYWxpdGllcyBvZiB0aGUgY29tbWVyY2UgZW5naW5lLgoKIyMg8J+TpiBWZXJzaW9uIEluZm9ybWF0aW9uCgotICoqQ3VycmVudCBWZXJzaW9uKio6IGAwLjkuN2AKLSAqKk9wZW5BUEkgU3BlY2lmaWNhdGlvbiBWZXJzaW9uKio6IGAzLjBgCi0gKipTdXBwb3J0ZWQgV29vQ29tbWVyY2UgQVBJIFZlcnNpb24qKjogYHYzYAoKIyMg8J+UkyBMaWNlbnNlCgoqKk1JVCBMaWNlbnNlKioKClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzLCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgc29mdHdhcmUuCgpUaGUgb25seSByZXF1aXJlbWVudCBpcyB0byBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgYXV0aG9yIGF0dHJpYnV0aW9uIGluIHRoZSBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbi4KCiMjIPCflI0gUXVpY2sgR2xhbmNlIGF0IHRoZSBBUEkgaW4gU3dhZ2dlcgoKWW91IGNhbiB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgQVBJIGluIFN3YWdnZXIgW2hlcmVdKGh0dHBzOi8vZWRpdG9yLnN3YWdnZXIuaW8vP3VybD1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vd3R4LWxhYnMvd29vY29tbWVyY2UtYXBpLW9wZW5hcGktc3BlY2lmaWNhdGlvbi9tYWluL3dvb2NvbW1lcmNlLXJlc3QtYXBpLW9wZW5hcGktc3BlY2lmaWNhdGlvbi55bWwpLgoKIVtXb29Db21tZXJjZSBSRVNUIEFQSSBpbiBTd2FnZ2VyIEVkaXRvcl0od3R4LWxhYnMtd29vY29tbWVyY2UtcmVzdC1hcGktZWRpdG9yLXN3YWdnZXItaW8tZXhhbXBsZS5wbmcpCgojIyDwn5qAIFdvb0NvbW1lcmNlIFJFU1QgQVBJIENsaWVudCBmb3IgSmF2YQoKQXJlIHlvdSBsb29raW5nIHRvIHNlYW1sZXNzbHkgaW50ZWdyYXRlIHlvdXIgSmF2YSBhcHBsaWNhdGlvbnMgd2l0aCBXb29Db21tZXJjZT8gTG9vayBubyBmdXJ0aGVyISBPdXIgW1dvb0NvbW1lcmNlIFJFU1QgQVBJIENsaWVudCBmb3IgSmF2YV0oaHR0cHM6Ly9naXRodWIuY29tL3d0eC1sYWJzL3dvb2NvbW1lcmNlLWFwaS1jbGllbnQtamF2YSkgaXMgZGVzaWduZWQgdG8gbWFrZSB5b3VyIGludGVncmF0aW9uIHByb2Nlc3Mgc21vb3RoIGFuZCBlZmZpY2llbnQuIFRyeSBpdCBhbmQgZ2l2ZSB1cyB5b3VyIGZlZWRiYWNrIQoKIyMg8J+UlyBTdGF5IENvbm5lY3RlZAoK4pyoIFdlJ3JlIGNvbnN0YW50bHkgaW1wcm92aW5nIHRoaXMgc3BlY2lmaWNhdGlvbiEK8J+SoSBIYXZlIHN1Z2dlc3Rpb25zIG9yIG5lZWQgaGVscD8KLSBbUmVwb3J0IGEgQnVnXShodHRwczovL2dpdGh1Yi5jb20vd3R4LWxhYnMvd29vY29tbWVyY2UtYXBpLW9wZW5hcGktc3BlY2lmaWNhdGlvbi9pc3N1ZXMvbmV3P3RlbXBsYXRlPWJ1Z19yZXBvcnQueW1sKQotIFtSZXF1ZXN0IGEgRmVhdHVyZV0oaHR0cHM6Ly9naXRodWIuY29tL3d0eC1sYWJzL3dvb2NvbW1lcmNlLWFwaS1vcGVuYXBpLXNwZWNpZmljYXRpb24vaXNzdWVzL25ldz90ZW1wbGF0ZT1mZWF0dXJlX3JlcXVlc3QueW1sKQotIFtJbXByb3ZlIERvY3VtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS93dHgtbGFicy93b29jb21tZXJjZS1hcGktb3BlbmFwaS1zcGVjaWZpY2F0aW9uL2lzc3Vlcy9uZXc/dGVtcGxhdGU9ZG9jdW1lbnRhdGlvbl9pc3N1ZS55bWwpCgrwn5qAIEhhcHB5IGNvZGluZyEg8J+YigoKKipZb3VyIFdUWCBMYWJzIFRlYW0qKiDwn5qACg== readmeEtag: '"8ad2a4cb87075c44062233cd837f6c507f940a0a"' readmeLastModified: Fri, 20 Jun 2025 12:22:53 GMT repositoryId: 906266270 description: The WooCommerce REST API specification in OpenAPI 3.0 format created: '2024-12-20T14:13:24Z' updated: '2026-02-05T08:10:46Z' language: null archived: false stars: 7 watchers: 2 forks: 0 owner: wtx-labs logo: https://avatars.githubusercontent.com/u/192332221?v=4 repoEtag: '"e15256d314a8e39944830a2e9c2637cb9c69069542c3225abaf7c6b5a05a8a15"' repoLastModified: Thu, 05 Feb 2026 08:10:46 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/wtx-labs/woocommerce-api-openapi-specification- - source: openapi3 tags repository: https://github.com/x1n13y84issmd42/oasis v3: true repositoryMetadata: base64Readme: >- IyBPQVNJUwpPcGVuIEFQSSBTcGVjaWZpY2F0aW9uIEludGVsbGlnZW5jZSBTZXJ2aWNlcy4gT3IgaW4gYSBsZXNzIGZhbmN5IHdheSwgYSB0b29sIHRvIHRlc3QgQVBJcyB3aGljaCB1c2VzIE9BUy9Td2FnZ2VyIHNwZWMgZmlsZXMgYXMgYSB0ZXN0IHN1aXRlLgoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5jb20veDFuMTN5ODRpc3NtZDQyL29hc2lzLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kuY29tL3gxbjEzeTg0aXNzbWQ0Mi9vYXNpcykKPGEgaHJlZj0iaHR0cHM6Ly9jb2RlY2xpbWF0ZS5jb20vZ2l0aHViL3gxbjEzeTg0aXNzbWQ0Mi9vYXNpcy9tYWludGFpbmFiaWxpdHkiPjxpbWcgc3JjPSJodHRwczovL2FwaS5jb2RlY2xpbWF0ZS5jb20vdjEvYmFkZ2VzL2E2MzQ4MjUzMDYzZTE3OWJhNDRmL21haW50YWluYWJpbGl0eSIgLz48L2E+CjxhIGhyZWY9Imh0dHBzOi8vY29kZWNsaW1hdGUuY29tL2dpdGh1Yi94MW4xM3k4NGlzc21kNDIvb2FzaXMvdGVzdF9jb3ZlcmFnZSI+PGltZyBzcmM9Imh0dHBzOi8vYXBpLmNvZGVjbGltYXRlLmNvbS92MS9iYWRnZXMvYTYzNDgyNTMwNjNlMTc5YmE0NGYvdGVzdF9jb3ZlcmFnZSIgLz48L2E+ClshW0dvIFJlcG9ydCBDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS94MW4xM3k4NGlzc21kNDIvb2FzaXMpXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20veDFuMTN5ODRpc3NtZDQyL29hc2lzKQoKV29yayBpbiBwcm9ncmVzcy4KCi0gW1VzYWdlXSgjdXNhZ2UpCiAgLSBbTWFudWFsIG1vZGVdKCNtYW51YWwtbW9kZSkKICAtIFtTY3JpcHQgbW9kZV0oI3NjcmlwdC1tb2RlKQoKIyMgVXNhZ2UKT2FzaXMgY2FuIGJlIHVzZWQgZWl0aGVyIGluIG1hbnVhbCBtb2RlLCB3aGljaCBhbGxvd3MgdG8gdGVzdCBzaW5nbGUgb3BlcmF0aW9ucywgb3IgaW4gc2NyaXB0IG1vZGUsIHdoaWNoIGlzIGRlc2lnbmVkIHRvIHRlc3QgY29tcGxleCBpbnRlcmFjdGlvbiBzY2VuYXJpb3MsIGludm9sdmluZyBtdWx0aXBsZSBlbmRwb2ludHMgYW5kIHJldXNpbmcgZGF0YSBhY3Jvc3MgdGhlbS4KCiMjIyDimJHvuI8gTWFudWFsIG1vZGUKYHJ1bi9vYXNpcyBmcm9tIHNwZWMvcGV0c3RvcmUueWFtbCB0ZXN0IGZpbmRQZXRzQnlTdGF0dXNgCgpPYXNpcyB1c2VzIHRoZSBleGFtcGxlIHZhbHVlIGZvciB0aGUgYHN0YXR1c2AgcXVlcnkgcGFyYW1ldGVyIGZvciB0aGUgYGZpbmRQZXRzQnlTdGF0dXNgIG9wZXJhdGlvbiBkZWZpbmVkIGluIHRoZSBzcGVjIGZpbGUuCgpZb3UgY2FuIG92ZXJyaWRlIGFueSBwYXJhbWV0ZXIgZnJvbSBDTEk6CgpgcnVuL29hc2lzIGZyb20gc3BlYy9wZXRzdG9yZS55YW1sIHRlc3QgZ2V0UGV0QnlJZCB1c2UgcGF0aCBwYXJhbWV0ZXJzIHBldElkPTEwYAoKSW5jcmVhc2UgbG9nZ2luZyB2ZXJib3NpdHkgdG8gc2VlIGhvdyBwYXJhbWV0ZXJzIGFyZSB1c2VkLgoKYHJ1bi9vYXNpcyBmcm9tIHNwZWMvcGV0c3RvcmUueWFtbCB0ZXN0IGdldFBldEJ5SWQgbG9nIGF0IGxldmVsIDYgdXNlIHBhdGggcGFyYW1ldGVycyBwZXRJZD0xMGAKCkZvciBhbiBleGFtcGxlIG9mIGVycm9yIHJlcG9ydGluZyB1c2UgdGhlIG1hbGZvcm1lZCBzcGVjIGZpbGUgd2hpY2ggZG9lc24ndCBjb3JyZXNwb25kIHRvIHRoZSBhY3R1YWwgQVBJIHJlc3BvbnNlczoKCmBydW4vb2FzaXMgZnJvbSBzcGVjL2Vycm9ycy55YW1sIHRlc3QgdGFza0xpc3QgbG9nIGF0IGxldmVsIDZgCgpgcnVuL29hc2lzIGZyb20gc3BlYy9lcnJvcnMueWFtbCB0ZXN0IGNvbmZpZ1R5cGVzIGxvZyBhdCBsZXZlbCA2YAoK8J+TliBbTGVhcm4gbW9yZSBhYm91dCBDTEldKGRvYy9DTEkubWQpCgrwn5OWIFtMZWFybiBtb3JlIGFib3V0IG9wZXJhdGlvbiBwYXJhbWV0ZXJzXShkb2MvUGFyYW1ldGVycy5tZCkKCiMjIyDwn5SAIFNjcmlwdCBtb2RlCkZvciBjb21wbGV4IHNjZW5hcmlvcyBpbnZvbHZpbmcgbXVsdGlwbGUgZW5kcG9pbnRzIGFuZCBkYXRhIHJldXNlIGFjcm9zcyB0aGVtIHRoZXJlIGlzIGEgc2NyaXB0IG1vZGU6CgpgcnVuL29hc2lzIGV4ZWN1dGUgc2NyaXB0L3BldHN0b3JlLnlhbWxgCmBydW4vb2FzaXMgZXhlY3V0ZSBzY3JpcHQvbnV4ZW8ueWFtbGAKClNjcmlwdCBpcyBhIGdyYXBoIG9mIGRlcGVuZGVudCBvcGVyYXRpb25zLiBDeWNsZXMgYXJlIG5vdCBhbGxvd2VkOgoKYHJ1bi9vYXNpcyBleGVjdXRlIHNjcmlwdC9jeWNsZS55YW1sYAoK8J+TliBbTGVhcm4gbW9yZSBhYm91dCBzY3JpcHRzXShkb2MvU2NyaXB0Lm1kKQoKIyMgUmVzb3VyY2VzCltPcGVuQVBJIFNwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4yLm1kI3NlY3VyaXR5U2NoZW1lT2JqZWN0KQoKW0hUVFAgQXV0aCBSZWdpc3RyeV0oaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9odHRwLWF1dGhzY2hlbWVzL2h0dHAtYXV0aHNjaGVtZXMueGh0bWwpCgpbU3RvcGxpZ2h0IE9BUyBFZGl0b3JdKGh0dHBzOi8vc3RvcGxpZ2h0LmlvL3Avc3R1ZGlvL3NsL18vNmM1ZmFvZnkpCgpbUmV5ZXNvZnQgQVBJIFBsYXlncm91bmRdKGh0dHBzOi8vanNvbmFwaXBsYXlncm91bmQucmV5ZXNvZnQuY29tLykKCltOdXhlbyBBUEkgUGxheWdyb3VuZF0oaHR0cHM6Ly9udXhlby5naXRodWIuaW8vYXBpLXBsYXlncm91bmQvIy9yZXNvdXJjZXMpCgpbQm9va2VyIEFQSSBQbGF5Z3JvdW5kXShodHRwczovL3Jlc3RmdWwtYm9va2VyLmhlcm9rdWFwcC5jb20vYXBpZG9jL2luZGV4Lmh0bWwpCgpbT2FzaXMgVjJdKGh0dHBzOi8vZ2l0aHViLmNvbS94MW4xM3k4NGlzc21kNDIvb2FzaXMvdHJlZS9jODhjOWExNWUwYTA1YWJiZjczMmY3ZmQ5NWFhMzBmN2NmNDk0N2ZkKQo= readmeEtag: '"7f8c637a8454059f8380bcf780fdc047f5fd7805"' readmeLastModified: Fri, 14 Jan 2022 11:17:29 GMT repositoryId: 199255832 description: 🔀🆗☑️ Automated API testing from Swagger/Open API specifications. created: '2019-07-28T07:20:06Z' updated: '2023-08-08T12:48:41Z' language: Go archived: false stars: 2 watchers: 1 forks: 1 owner: x1n13y84issmd42 logo: https://avatars.githubusercontent.com/u/2878036?v=4 license: GPL-3.0 repoEtag: '"7585da61431503f2ca443dfc57ae74a8d00a4053930ed3d9082a120c421b4509"' repoLastModified: Tue, 08 Aug 2023 12:48:41 GMT foundInMaster: true category: Converters id: c874538e827425f5331ba6bf670d35b1 - source: openapi3 tags repository: https://github.com/unionj-cloud/go-doudou-openapi-ui v3: true id: 066c6ad6c3382351e6ab1b1493a4e4b7 repositoryMetadata: base64Readme: >- IyBnby1kb3Vkb3Utb3BlbmFwaS11aQpUaGlzIGlzIGFuIE9wZW5BUEkzLjAgc3BlY2lmaWNhdGlvbiBVSSBwcm9qZWN0IHdyaXR0ZW4gYnkgdnVlanMrdHlwZXNjcmlwdCBzdGFjayBpbnNwaXJlZCBieSBbcmVkb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jKSAuIEN1cnJlbnRseSwgaXQgc3VwcG9ydHMganNvbiBmb3JtYXQgc3BlYyBvbmx5LCB5YW1sIHN1cHBvcnQgaXMgY29taW5nIHNvb24uCgohW2V4YW1wbGVdKC4vZXhhbXBsZS5naWYpCiMjIFVzYWdlCkNsb25lIHRoZSByZXBvLgpgYGAKZ2l0IGNsb25lIGdpdEBnaXRodWIuY29tOnVuaW9uai1jbG91ZC9nby1kb3Vkb3Utb3BlbmFwaS11aS5naXQKYGBgCkluc3RhbGwgZGVwZW5kZW5jaWVzIGFuZCBzdGFydCB0aGUgcHJvamVjdCwgdGhlbiBicm93c2VyIHdpbGwgYmUgb3BlbmVkIGF1dG9tYXRpY2FsbHkuCmBgYHNoZWxsCnlhcm4gaW5zdGFsbCAmJiB5YXJuIHNlcnZlCmBgYAoKQWRkIGA/ZG9jVXJsPSR7T0FTM19TUEVDX0xJTkt9YCB0byBgaHR0cDovL2xvY2FsaG9zdDo5NTI3LyMvaW5kZXhgIGFuZCBjbGljayBgZW50ZXJgLCBvbmxpbmUgZG9jdW1lbnRhdGlvbiB3aWxsIGRpc3BsYXkuICAKCk5PVEU6IGAke09BUzNfU1BFQ19MSU5LfWAgbXVzdCBzdXBwb3J0IGNvcnMgdmlzaXQsIGZvciBleGFtcGxlOiBgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uYAoKIyMgU2NyZWVuc2hvdAohW3NjcmVlbnNob3RdKC4vc2NyZWVuc2hvdC5wbmcpCiFbc2NyZWVuc2hvdDJdKC4vc2NyZWVuc2hvdDIucG5nKQohW3NjcmVlbnNob3QzXSguL3NjcmVlbnNob3QzLnBuZykK readmeEtag: '"db0286fb915f3b25a93ad40199cb625d38560cb7"' readmeLastModified: Sun, 20 Feb 2022 11:01:41 GMT repositoryId: 392144026 description: OpenAPI3 Online Documentation UI created: '2021-08-03T01:12:59Z' updated: '2023-03-01T02:04:02Z' language: Vue archived: false stars: 2 watchers: 0 forks: 3 owner: unionj-cloud logo: https://avatars.githubusercontent.com/u/79033021?v=4 license: MIT repoEtag: '"c1d1984ff0fb306bd050ee8d04822cdb718150fc3a24724f273028a5e100431d"' repoLastModified: Wed, 01 Mar 2023 02:04:02 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/clickermonkey/rez v3: true id: 0ab51b0a493219a5638555ecc871cd31 repositoryMetadata: base64Readme: >- IyByZXoKUkVTVCAoZWFzeSkgZnJhbWV3b3JrIGluIEdvIHdpdGggb3V0IG9mIHRoZSBib3ggT3BlbkFQSSBnZW5lcmF0aW9uLCB2YWxpZGF0aW9uLCBkZXBlbmRlbmN5IGluamVjdGlvbiwgYW5kIG11Y2ggbW9yZS4gCgo+IGdvIGdldCBnaXRodWIuY29tL0NsaWNrZXJNb25rZXkvcmV6CgotIFtEZXBlbmRlbmN5IEluamVjdGlvbl0oI2RlcGVuZGVuY3ktaW5qZWN0aW9uKSBIb3cgdmFsdWVzIGFyZSBzZW50IHRvIG1pZGRsZXdhcmUgYW5kIGVuZHBvaW50IGZ1bmN0aW9ucy4KLSBbUm91dGVyXSgjcm91dGVyKSBEZWZpbmluZyB0aGUgcm91dGVzLCBtaWRkbHdhcmUsICYgZG9jdW1lbnRhdGlvbi4KLSBbTWlkZGxld2FyZV0oI21pZGRsZXdhcmUpIENvZGUgdGhhdCBydW5zIGJlZm9yZSBpdCByZWFjaGVzIHRoZSBmaW5hbCBlbmRwb2ludAotIFtJbnNwZWN0aW9uXSgjaW5zcGVjdGlvbikgSG93IHR5cGVzIGFyZSBjb252ZXJ0ZWQgaW50byBkb2N1bWVudGF0aW9uLgotIFtWYWxpZGF0aW9uXSgjdmFsaWRhdGlvbikgSG93IHRvIGNvbnRyb2wgdmFsaWRhdGlvbi4KLSBbRG9jdW1lbnRhdGlvbl0oI2RvY3VtZW50YXRpb24pIEFsbCB0aGUgd2F5cyB0byBzcGVjaWZ5IGRvY3VtZW50YXRpb24uCi0gW1NpdGVdKCNtZXRob2RzKSBUaGUgbWFpbiBzaXRlIHR5cGUgYW5kIGl0cyB1c2VmdWwgbWV0aG9kcy4KCiMjIyBFeGFtcGxlCmBgYGdvCnR5cGUgRWNobyBzdHJ1Y3QgewoJTWVzc2FnZSBzdHJpbmcgYGpzb246Im1lc3NhZ2UiIGFwaToiZGVzYz1BIG1lc3NhZ2UgdG8gZWNoby4iYAp9CnNpdGUgOj0gcmV6Lk5ldyhjaGkuTmV3Um91dGVyKCkpCi8vIC9lY2hvP21lc3NhZ2U9SGVsbG9Xb3JsZCEKc2l0ZS5HZXQoIi9lY2hvIiwgZnVuYyhxIHJlei5RdWVyeVtFY2hvXSkgKCpFY2hvLCAqcmV6Lk5vdEZvdW5kW3N0cmluZ10pIHsKICBpZiBxLlZhbHVlLk1lc3NhZ2UgPT0gIiIgewogICAgcmV0dXJuIG5pbCwgcmV6Lk5ld05vdEZvdW5kKCJtZXNzYWdlIGlzIHJlcXVpcmVkIikKICB9CiAgcmV0dXJuICZxLlZhbHVlLCBuaWwKfSkKc2l0ZS5TZXJ2ZVN3YWdnZXJVSSgiL2RvYy9zd2FnZ2VyIiwgbmlsKQpzaXRlLlNlcnZlUmVkb2MoIi9kb2MvcmVkb2MiLCBuaWwpCnNpdGUuTGlzdGVuKCI6MzAwMCIpCmBgYApNb3JlIGNhbiBiZSBmb3VuZCBpbiBbZXhhbXBsZXNdKGV4YW1wbGVzKS4KCiMjIERlcGVuZGVuY3kgSW5qZWN0aW9uCgpEZXBlbmRlbmN5IGluamVjdGlvbiBpcyB1c2VkIHRvIHBhc3MgYXJndW1lbnRzIHRvIGEgbWlkZGxld2FyZSBvciByb3V0ZSBmdW5jdGlvbnMuICoqcmV6KiogdXNlcyBbZGVwc10oaHR0cHM6Ly9naXRodWIuY29tL0NsaWNrZXJNb25rZXkvZGVwcykgZm9yIGRlcGVuZGVuY3kgaW5qZWN0aW9uLiBUaGVyZSBhcmUgc2V2ZXJhbCB0eXBlcyB0aGF0IGdldCBpbmplY3RlZCBvdXQgb2YgdGhlIGJveDoKCi0gYGNvbnRleHQuQ29udGV4dGA6IFRoZSBjb250ZXh0IG9mIHRoZSByZXF1ZXN0LgotIGBkZXBzLlNjb3BlYDogVGhlIHNjb3BlIHdoaWNoIGhvbGRzIGFsbCB0aGUgZ2l2ZW4gdmFsdWVzIHRoYXQgY2FuIGJlIGluamVjdGVkIGZvciB0aGUgY3VycmVudCByZXF1ZXN0LiBUaGUgcm9vdCBgU2l0ZWAgdHlwZSBoYXMgYSBwYXJlbnQgc2NvcGUgd2hpY2ggcmVxdWVzdCBzY29wZXMgY2FuIGluaGVyaXQgdmFsdWVzIGZyb20uCi0gYGh0dHAuUmVzcG9uc2VXcml0ZXJgOiBUaGUgb3V0Z29pbmcgcmVzcG9uc2UuCi0gYGh0dHAuUmVxdWVzdGA6IFRoZSBpbmNvbWluZyByZXF1ZXN0LgotIGByZXouUm91dGVyYDogVGhlIHJlZmVyZW5jZSB0byB0aGUgcm91dGVyIHdoZXJlIHRoZSBtaWRkbGV3YXJlIHdhcyB1c2VkIG9yIHRoZSByb3V0ZSB3YXMgZGVmaW5lZCBvbi4KLSBgcmV6LlBhdGhbUF1gOiBBIGdlbmVyaWMgd3JhcHBlciB3aGljaCBob2xkcyB0aGUgc3RydWN0IHRoYXQgaXMgcGFyc2VkIGZyb20gdGhlIHBhdGggcGFyYW1ldGVycy4gSWYgdGhlIHBhdGggaXMgYC90YXNrL3t0YXNrSUR9YCBhbmQgdGhlIHN0cnVjdCBpcyBgdHlwZSBUYXNrUGF0aCBzdHJ1Y3QgeyBUYXNrSUQgaW50IH1gIHRoZSBgVGFza0lEYCBwcm9wZXJ0eSB3aWxsIGJlIHBvcHVsYXRlZCBmcm9tIHRoZSB2YWx1ZSBpbiB0aGUgVVJMLgotIGByZXouUXVlcnlbUV1gOiBBIGdlbmVyaWMgd3JhcHBlciB3aGljaCBob2xkcyB0aGUgc3RydWN0IHRoYXQgaXMgcGFyc2VkIGZyb20gdGhlIHF1ZXJ5IHN0cmluZy4gSWYgdGhlIHVybCBpcyBgP21lc3NhZ2U9SGkmdGltZXM9NGAgYW5kIHRoZSBzdHJ1Y3QgaXMgYHR5cGUgTXlRdWVyeSBzdHJ1Y3QgeyBNZXNzYWdlIHN0cmluZywgVGltZXMgaW50IH1gIHRoZSBNZXNzYWdlIGFuZCBUaW1lcyBmaWVsZHMgd2lsbCBiZSBwb3B1bGF0ZWQgZnJvbSB0aGUgcXVlcnkgc3RyaW5nLgotIGByZXouSGVhZGVyW0hdYDogQSBnZW5lcmljIHdyYXBwZXIgd2hpY2ggaG9sZHMgdGhlIHN0cnVjdCB0aGF0IGlzIHBhcnNlZCBmcm9tIHRoZSBoZWFkZXJzLiAKLSBgcmV6LkJvZHlbQl1gOiBBIGdlbmVyaWMgd3JhcHBlciB3aGljaCBob2xkcyB0aGUgdHlwZSB0aGF0IGlzIHBhcnNlZCBmcm9tIHRoZSByZXF1ZXN0IGJvZHkuCi0gYHJlei5SZXF1ZXN0W0IsIFAsIFFdYDogQSBnZW5lcmljIHdyYXBwZXIgd2hpY2ggaG9sZHMgdGhlIGJvZHksIHBhcmFtcywgYW5kIHF1ZXJ5IHN0cnVjdHMgdGhhdCBhcmUgdG8gYmUgcGFyc2VkIGZyb20gdGhlIHJlcXVlc3QuCi0gYHJlei5WYWxpZGF0b3JgOiBBIHZhbGlkYXRvciBmb3IgdGhlIHJvdXRlIG9yIG1pZGRsZXdhcmUuCi0gYGFwaS5PcGVyYXRpb25gOiBUaGUgb3BlcmF0aW9uIChyb3V0ZSBvbmx5KS4KLSBgcmV6Lk1pZGRsZXdhcmVOZXh0YDogSW52b2tlIHRoZSBuZXh0IGhhbmRsZXIgKG1pZGRsZXdhcmUgb25seSkuCgpUaGVyZSBhcmUgYSBmZXcgb3RoZXIgbWV0aG9kcyB0byBnZXQgb3RoZXIgaW5qZWN0YWJsZSB2YWx1ZXMuCjEuIFVzZSBgcmV6LlNpdGUuU2NvcGVgIHRvIHNldCBnbG9iYWwgdmFsdWVzIGFuZCBwcm92aWRlcnMuCjIuIEltcGxlbWVudCBgcmV6LkluamVjdGFibGVgLgozLiBVc2UgYHJlei5Sb3V0ZXIuRGVmaW5lQm9keShib2RpZXMuLi4pYCB0byBkZWZpbmUgdHlwZXMgdGhhdCB3aWxsIG9ubHkgYmUgdXNlZCBhcyBhcmd1bWVudHMgdGhhdCBzaG91bGQgY29tZSBmcm9tIHRoZSByZXF1ZXN0IGJvZHkuCjQuIFVzZSBgcmV6LlJvdXRlci5EZWZpbmVQYXRoKHBhdGhzLi4uKWAgdG8gZGVmaW5lIHR5cGVzIHRoYXQgd2lsbCBvbmx5IGJlIHVzZWQgYXMgYXJndW1lbnRzIHRoYXQgc2hvdWxkIGNvbWUgZnJvbSB0aGUgcmVxdWVzdCBwYXRoIHBhcmFtZXRlcnMuCjUuIFVzZSBgcmV6LlJvdXRlci5EZWZpbmVRdWVyeShxdWVyaWVzLi4uKWAgdG8gZGVmaW5lIHR5cGVzIHRoYXQgd2lsbCBvbmx5IGJlIHVzZWQgYXMgYXJndW1lbnRzIHRoYXQgc2hvdWxkIGNvbWUgZnJvbSB0aGUgcmVxdWVzdCBxdWVyeSBwYXJhbWV0ZXJzLgo2LiBVc2UgYHJlei5Sb3V0ZXIuRGVmaW5lSGVhZGVyKGhlYWRlcnMuLi4pYCB0byBkZWZpbmUgdHlwZXMgdGhhdCB3aWxsIG9ubHkgYmUgdXNlZCBhcyBhcmd1bWVudHMgdGhhdCBzaG91bGQgY29tZSBmcm9tIHRoZSByZXF1ZXN0IGhlYWRlcnMuCjcuIFVzZSBgKmRlcHMuU2NvcGVgIGFzIGFuIGFyZ3VtZW50IGluIG1pZGRsZXdhcmUgYW5kIGBTZXRgIG9yIGBQcm92aWRlYCBvdGhlciB2YWx1ZXMgdGhhdCB0aGUgZm9sbG93aW5nIGhhbmRsZXJzIHdpbGwgYmUgYWJsZSB0byByZWNlaXZlLgoKIyMgUm91dGVyClRoZSBbcmV6LlJvdXRlcl0ocmV6LmdvKSBpcyBhIHdyYXBwZXIgb2YgY2hpLlJvdXRlciB3aGVyZSBpbnN0ZWFkIG9mIGBodHRwLkhhbmRlcmBzIGFuZCBgaHR0cC5IYW5kbGVyRnVuY2AgeW91IHBhc3MgaW4gYSBgZnVuYyhhcmdzKSByZXN1bHRzYCB3aGljaCBnZXRzIGl0cyBhcmd1bWVudHMgaW5qZWN0ZWQsIGFuZCBpbiB0aGUgY2FzZSBvZiBtaWRkbGV3YXJlIGlzIGFibGUgdG8gcHJvdmlkZSBpbmplY3RlZCB2YWx1ZXMgZm9yIHJvdXRlcyBpbiB0aGUgcm91dGVyLiBUaGUgZnVuY3Rpb24gYXJndW1lbnQgYW5kIHJlc3VsdCB0eXBlcyBhcmUgYWxzbyBpbnNwZWN0ZWQgdG8gYnVpbGQgdGhlIE9wZW5BUEkgZG9jdW1lbnRhdGlvbi4KCiMjIE1pZGRsZXdhcmUKTWlkZGxld2FyZSBpbiAqKnJleioqIGlzIGFsc28gYSBkZXBlbmRlbmN5IGluamVjdGVkIGZ1bmN0aW9uLiBUaGUgbWlkZGxld2FyZSBjYW4gcmV0dXJuIG5vdGhpbmcgb3IgY2FuIHJldHVybiBhbiBlcnJvciB3aGljaCBpZiBub24tbmlsIHdpbGwgYmUgc2VudCBhcyB0aGUgcmVzcG9uc2UuIFRoZSBtaWRkbGV3YXJlIGhhcyBhIHNwZWNpYWwgaW5qZWN0ZWQgdmFsdWUgYHJlei5NaWRkbGV3YXJlTmV4dGAgd2hpY2ggaXMgYSBmdW5jdGlvbiB0byBjYWxsIGlmIHdlIHdhbnQgdG8gY2FsbCB0aGUgbmV4dCBoYW5kbGVyLiBfQW55IGFyZ3VtZW50cyBvciByZXR1cm4gdHlwZXMgdGhhdCBhcmUgaWRlbnRpZmllZCBhcyBoZWFkZXJzLCBxdWVyaWVzLCBwYXRocywgcmVxdWVzdCBib2RpZXMsIG9yIHJlc3BvbnNlcyBhcmUgYWRkZWQgYXMgdGhvc2Ugb2JqZWN0cyBpbiBhbGwgcm91dGVzIHRoYXQgYXJlIGluIHRoZSByb3V0ZXIgdXNpbmcgdGhlIG1pZGRsZXdhcmUuXwoKRXhhbXBsZToKYGBgZ28KLy8gc2l0ZS5Vc2UoYXV0aE1pZGRsZXdhcmUpCmZ1bmMgYXV0aE1pZGRsZXdhcmUobmV4dCByZXouTWlkZGxld2FyZU5leHQsIHIgKmh0dHAuUmVxdWVzdCkgKnJlei5VbmF1dGhvcml6ZWRbc3RyaW5nXSB7CiAgLy8gQWNjZXNzaW5nIGhlYWRlcnMgdGhpcyB3YXkgZG9lc24ndCBhZGQgaXQgYXMgYSBwYXJhbWV0ZXIgdG8gYWxsIHJvdXRlcyB0aGF0IHVzZSB0aGUgbWlkZGxld2FyZS4KICBhdXRoIDo9IHIuSGVhZGVyLkdldCgiQXV0aG9yaXphdGlvbiIpCiAgaWYgYXV0aCA9PSAiIiB7CiAgICByZXR1cm4gcmV6Lk5ld1VuYXV0aG9yaXplZCgiTm8gYWNjZXNzIikKICB9CiAgbmV4dCgpCiAgcmV0dXJuIG5pbAp9CmBgYAoKWW91IGNhbiBhbHNvIHBhc3MgZG93biBpbmplY3RhYmxlIHZhbHVlcyB0byBhbGwgbWlkZGxld2FyZXMgYW5kIHJvdXRlcyB3aGljaCBhcmUgZGVmaW5lZCBhZnRlciBtaWRkbGV3YXJlIGJ5IHNldHRpbmcgdGhlIHZhbHVlIG9uIHRoZSBzY29wZS4KCmBgYGdvCnR5cGUgVXNlciBzdHJ1Y3QgeyBJRCBpbnQgfQovLyBzaXRlLlVzZShhdXRoTWlkZGxld2FyZSkKZnVuYyBhdXRoTWlkZGxld2FyZShuZXh0IHJlei5NaWRkbGV3YXJlTmV4dCwgcyAqZGVwcy5TY29wZSkgewogIC8vIGF1dGhlbnRpY2F0ZSB1c2VyIGFuZCByZXR1cm4gZXJyb3IsIGlmIHN1Y2Nlc3NmdWwgYXBwbHkgdGhlIHVzZXIgdG8gdGhlIHNjb3BlLgogIHMuU2V0KFVzZXJ7SUQ6IDIzfSkKICBuZXh0KCkKfQp0eXBlIFRhc2sgc3RydWN0IHsgSUQgaW50LCBOYW1lIHN0cmluZywgRG9uZSBib29sIH0KLy8gc2V0LkdldCgiL3Rhc2tzIiwgZ2V0VGFza3MpCmZ1bmMgZ2V0VGFza3ModXNlciBVc2VyKSBUYXNrW10gewogIC8vIGdldCB0YXNrcyB0aGUgdXNlciBjYW4gc2VlLCB3ZSBvbmx5IGdldCBoZXJlIGlmIGF1dGhNaWRkbGV3YXJlIGNhbGxlZCBuZXh0CiAgcmV0dXJuIFtdVGFza3t9Cn0KYGBgCgpBcyBtZW50aW9uZWQgd2hhdCB5b3UgcmVmZXJlbmNlIHdpdGggbWlkZGxld2FyZSBjb3VsZCBhZGQgdG8gdGhlIG9wZXJhdGlvbnMgdGhhdCBmb2xsb3cuIFRoaXMgbWlkZGxld2FyZSBpcyBhbiBleGFtcGxlIG9mIGF1dGhlbnRpY2F0aW9uIHdoZXJlIHRoZSB0b2tlbiBpcyBmb29saXNobHkgc2VudCBpbiB0aGUgcXVlcnkgc3RyaW5nLiBBbGwgb3BlcmF0aW9ucyB0aGF0IGZvbGxvdyB3aWxsIGhhdmUgdGhlIHNwZWNpZmllZCBzZWN1cml0eSBzY2hlbWUsIGFjY2VwdCBgdG9rZW5gIGFzIGEgcXVlcnkgcGFyYW1ldGVyLCBhbmQgY291bGQgcmVzcG9uZCB3aXRoIGByZXouVW5hdXRob3JpemVkW3N0cmluZ11gLgoKYGBgZ28KdHlwZSBBdXRoIHN0cnVjdCB7IFRva2VuIHN0cmluZyB9Cgp0eXBlIEF1dGhNaWRkbGV3YXJlIGZ1bmMocyAqZGVwcy5TY29wZSwgbmV4dCByZXouTWlkZGxld2FyZU5leHQsIHEgcmV6LlF1ZXJ5W0F1dGhdKSAqcmV6LlVuYXV0aG9yaXplZFtzdHJpbmddCi8vIEFsbCByb3V0ZXMgd2hpY2ggdXNlIHRoaXMgbWlkZGxld2FyZSBhY2NlcHQgdGhpcyB0eXBlIG9mIHNlY3VyaXR5CmZ1bmMgKGF1dGggQXV0aE1pZGRsZXdhcmUpIEFQSU9wZXJhdGlvblVwZGF0ZShvcCAqYXBpLk9wZXJhdGlvbikgewogIG9wLlNlY3VyaXR5ID0gYXBwZW5kKG9wLlNlY3VyaXR5LCBtYXBbc3RyaW5nXVtdc3RyaW5neyJxdWVyeUF1dGgiOiB7fX0pCn0KCnZhciBhdXRoTWlkZGxld2FyZSBBdXRoTWlkZGxld2FyZSA9IGZ1bmMocyAqZGVwcy5TY29wZSwgbmV4dCByZXouTWlkZGxld2FyZU5leHQsIHEgcmV6LlF1ZXJ5W0F1dGhdKSAqcmV6LlVuYXV0aG9yaXplZFtzdHJpbmddIHsKICBpZiBxLlZhbHVlLlRva2VuID09ICIiIHsKICAgIHJldHVybiByZXouTmV3VW5hdXRob3JpemVkKCJObyBhY2Nlc3MiKQogIH0KICBzLlNldChxLlZhbHVlKQogIG5leHQoKQogIHJldHVybiBuaWwKfQpmdW5jIGVjaG9Ub2tlbih0b2tlbiBBdXRoKSBBdXRoIHsKICByZXR1cm4gdG9rZW4KfQoKLy8gVXNhZ2UKc2l0ZS5PcGVuLkFkZFNlY3VyaXR5KCJxdWVyeUF1dGgiLCAmYXBpLlNlY3VyaXR5ewogIFR5cGU6IGFwaS5TZWN1cml0eVR5cGVBcGlLZXksCiAgTmFtZTogInRva2VuIiwKICBJbjogICBhcGkuUGFyYW1ldGVySW5RdWVyeSwKfSkKc2l0ZS5Vc2UoYXV0aE1pZGRsZXdhcmUpCnNpdGUuR2V0KCIvdG9rZW4iLCBlY2hvVG9rZW4pCmBgYAoKIyMgSW5zcGVjdGlvbgoKRnVuY3Rpb24gYXJndW1lbnRzIGFyZSBpbnNwZWN0ZWQgdG8gZGV0ZXJtaW5lIHdoYXQgcGF0aCBwYXJhbWV0ZXJzLCBxdWVyeSBwYXJhbWV0ZXJzLCBoZWFkZXJzLCBhbmQgYm9keSBpcyB1c2VkIGJ5IGEgcm91dGUuIFNlZSBbRGVwZW5kZW5jeSBJbmplY3Rpb25dKCNkZXBlbmRlbmN5LWluamVjdGlvbikgZm9yIG1vcmUgZGV0YWlscyBvbiB0aGF0LiBUaGUgdHlwZXMgZGV0ZWN0ZWQgYXJlIGNvbnZlcnRlZCBpbnRvIGBhcGlgIG9iamVjdHMgYW5kIGFyZSBhZGRlZCB0byB0aGUgT3BlbkFQSSBkb2N1bWVudCBhbmQgcmVmZXJlbmNlZCBpbiB0aGUgcGF0aCAmIG9wZXJhdGlvbnMgaW4gdGhlIHBhdGguIFRoZSBmdW5jdGlvbiByZXR1cm4gYXJndW1lbnRzIGFyZSBpbnNwZWN0ZWQgZm9yIHBvc3NpYmxlIHJlc3BvbnNlcyAtIG1vc3Qgb2YgdGhlIHRpbWUgdGhlc2UgcmV0dXJuIHR5cGVzIHdpbGwgYmUgcG9pbnRlcnMgZm9yIHJvdXRlcyB3aGljaCBjYW4gaGF2ZSBtdWx0aXBsZSByZXNwb25zZSB0eXBlcyAob3Igbm8gc3BlY2lmaWMgcmVzcG9uc2UgdHlwZSkuIElmIHRoZSByZXR1cm4gdHlwZSBpbXBsZW1lbnRzIGByZXouSGFzU3RhdHVzYCB0aGF0IGlzIHdoZXJlIHRoZSBzdGF0dXMgY29kZSBpcyBwdWxsZWQgZnJvbS4gSWYgdGhlIHJldHVybiB0eXBlIGRvZXMgbm90IGl0J3MgYXNzdW1lZCB0byBiZSBhIHBvc3NpYmxlIE9LICgyMDApIHJlc3VsdC4gVGhlIHNjaGVtYXMgYnVpbHQgZnJvbSB0aGUgYXJndW1lbnQgYW5kIHJldHVybiB0eXBlcyBhcmUgYnVpbHQgb25jZSBhbmQgY2FuIGJlIGNvbnRyb2xsZWQgdXNpbmcgdmFyaW91cyBmdW5jdGlvbnMgYW5kIGludGVyZmFjZXMuIElmIHRoZSB0eXBlIGlzIGEgc3RydWN0IHRoZW4gYGpzb25gIGFuZCBgYXBpYCB0YWdzIGNhbiBjb250cm9sIHRoZSBmaWVsZCB2aXNpYmlsaXR5IG9yIHNjaGVtYSBvcHRpb25zLiBTZWUgW0RvY3VtZW50YXRpb25dKCNkb2N1bWVudGF0aW9uKSBmb3IgYWRkaXRpb25hbCBkZXRhaWxzIG9uIGhvdyB0byBjb250cm9sIHRoZSBkb2N1bWVudGF0aW9uICYgdmFsaWRhdGlvbiB0aGF0IGlzIGdlbmVyYXRlZC4KCiMjIFZhbGlkYXRpb24KClZhbGlkYXRpb24gaW4gcmV6IGlzIGRvbmUgaWYgZW5hYmxlZCBhbmQgb25seSBmb3IgY2VydGFpbiBzY2hlbWEgZmllbGRzIGFuZCBhZnRlciB0aGUgZGF0YSBpcyBtYXJzaGFsbGVkIGludG8gdmFsdWVzLiBTbyBhbnkgaW52YWxpZCB0eXBlIGVycm9ycyB3aWxsIG5vdCBiZSB0cmlnZ2VyZWQgYnkgdGhlIHZhbGlkYXRpb24gYnV0IHdoZW4gdGhlIEpTT04gaXMgcGFyc2VkLiBHZW5lcmFsIHZhbGlkYXRpb24gb3B0aW9ucyBjYW4gYmUgYXBwbGllZCBwZXIgdHlwZSwgdmFsaWRhdGlvbiBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCBmb3IgYW55IHJvdXRlciwgYW5kIHR5cGVzIGNhbiBoYXZlIGN1c3RvbSB2YWxpZGF0aW9uIGNvZGUgdGhhdCB0YWtlcyBvdmVyIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3Mgb3IgcnVucyBhZnRlciB0aGUgdmFsaWRhdGlvbiBwcm9jZXNzLiBJZiB2YWxpZGF0aW9uIGZhaWxzIHRoZSBlcnJvciBpcyByZXR1cm5lZCB0byB0aGUgdXNlci4gSG93IHRob3NlIHZhbGlkYXRpb25zIGFyZSBzZW50IHRvIHRoZSB1c2VyIGNhbiBiZSBjb250cm9sbGVkIGJ5IGNhbGxpbmcgYHJlei5Sb3V0ZXIuU2V0RXJyb3JIYW5kbGVyYC4KCi0gYHJlei5Sb3V0ZXIuRW5hYmxlZFZhbGlkYXRpb24oYm9vbClgIGVuYWJsZXMgb3IgZGlzYWJsZXMgdmFsaWRhdGlvbiBpbiB0aGlzIHJvdXRlciBhbmQgYW55IHN1Yi1yb3V0ZXJzIGNyZWF0ZWQgYWZ0ZXIgdGhpcyBjYWxsLiBCeSBkZWZhdWx0IHZhbGlkYXRpb24gaXMgbm90IGVuYWJsZWQuCi0gYHJlei5Sb3V0ZXIuU2V0VmFsaWRhdGlvbk9wdGlvbnMoYW55LFZhbGlkYXRpb25PcHRpb25zKWAgc2V0cyB0aGUgdmFsaWRhdGlvbiBvcHRpb25zIGZvciB0aGUgZ2l2ZW4gdHlwZSwgd2hpY2ggY29udHJvbHMgaWYgdmFsaWRhdGlvbiBpcyBza2lwcGVkLCBpZiBmb3JtYXQgaXMgZW5mb3JjZWQsIG9yIGlmIHNwZWNpZnlpbmcgZGVwcmVjYXRlZCB2YWx1ZXMgdHJpZ2dlcnMgYSB2YWxpZGF0aW9uIGVycm9yLgotIGByZXouQ2FuVmFsaWRhdGVGdWxsYCBpZiBhIHR5cGUgaW1wbGVtZW50cyB0aGlzIGl0IGhhbmRsZXMgYWxsIHZhbGlkYXRpb24gbG9naWMuCi0gYHJlei5DYW5WYWxpZGF0ZVBvc3RgIGlmIGEgdHlwZSBpbXBsZW1lbnRzIHRoaXMgaXQgd2lsbCBkbyBhZGRpdGlvbmFsIHZhbGlkYXRpb24gbG9naWMgYWZ0ZXIgb3RoZXIgdmFsaWRhdGlvbiBsb2dpYyBoYXMgYmVlbiBkb25lLgotIGByZXouSW5qZWN0YWJsZWAgaWYgYSB0eXBlIGltcGxlbWVudHMgdGhpcyBpdCBtdXN0IGltcGxlbWVudCBhbiBgQVBJVmFsaWRhdGVgIG1ldGhvZC4KClRoZSBmb2xsb3dpbmcgc2NoZW1hIGZpZWxkcyBhcmUgdXNlZCBkdXJpbmcgdmFsaWRhdGlvbjoKLSBgTXVsdGlwbGVPZmAsIGBNYXhpbXVtYCwgYE1pbmltdW1gLCBgRXhjbHVzaXZlTWF4aW11bWAsIGBFeGNsdXNpdmVNaW5pbXVtYCBhcmUgdXNlZCBmb3IgYW55IGludCBvciBmbG9hdCB0eXBlcy4KLSBgTWF4TGVuZ3RoYCwgYE1pbkxlbmd0aGAgYXJlIHVzZWQgZm9yIHN0cmluZyB0eXBlcy4KLSBgRGVwcmVjYXRlZGAsIGBOdWxsYWJsZWAsIGBQYXR0ZXJuYCwgYEZvcm1hdGAsIGBFbnVtYCwgYE9uZU9mYCwgYEFsbE9mYCwgYEFueU9mYCwgYE5vdGAgYXJlIHVzZWQgZm9yIGFsbCB0eXBlcy4KLSBgTWluSXRlbXNgLCBgTWF4SXRlbXNgLCBgSXRlbXNgLCBgVW5pcXVlSXRlbXNgIGFyZSB1c2VkIGZvciBhcnJheSBhbmQgc2xpY2UgdHlwZXMuCi0gYE1pblByb3BlcnRpZXNgLCBgTWF4UHJvcGVydGllc2AsIGBBZGRpdGlvbmFsUHJvcGVydGllc2AgYXJlIHVzZWQgZm9yIG1hcCB0eXBlcy4KLSBgUHJvcGVydGllc2AsIGBSZXF1aXJlZGAgYXJlIHVzZWQgZm9yIHN0cnVjdCB0eXBlcy4KCgojIyBEb2N1bWVudGF0aW9uCgpEb2N1bWVudGF0aW9uIGlzIGNvbnRyb2wgYnkgdmFyaW91cyB3YXlzIG9uIHRoZSB0eXBlcyB0aGVtc2VsdmVzIG9yIHRocm91Z2ggcm91dGVyIG1ldGhvZHMuCgotIGBhcGkuSGFzTmFtZWAKQSB0eXBlJ3MgZG9jdW1lbnRlZCBuYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSB0eXBlIGluIHRoZSBHTyBjb2RlLCBidXQgdGhlcmUgbWlnaHQgYmUgY29sbGlzaW9ucy4gSWYgdGhlcmUgYXJlIGNvbGxpc2lvbnMgdGhlIE9wZW5BUEkgYnVpbHQgd2lsbCBoYXZlIHNjaGVtYSBuYW1lcyB0aGF0IGluY2x1ZGUgdGhlIHR5cGVzIHBrZyBwYXRoIHRvIGJlIHVuaXF1ZS4gVG8gYXZvaWQgdGhvc2UgcG90ZW50aWFsbHkgbGVuZ3RoeSBuYW1lcyB5b3UgY2FuIGltcGxlbWVudCBgYXBpLkhhc05hbWVgIGxpa2Ugc286CmBgYGdvCi8vIHRhc2tzIGZvbGRlcgp0eXBlIFNlYXJjaCBzdHJ1Y3QgeyBOYW1lIHN0cmluZyB9CmZ1bmMgKFNlYXJjaCkgQVBJTmFtZSgpIHN0cmluZyB7IHJldHVybiAiVGFza1NlYXJjaCIgfQpgYGAKLSBgYXBpLkRlc2NyaXB0aW9uYApBIHJlcXVlc3Qgb3IgcmVzcG9uc2UncyBkZXNjcmlwdGlvbiBjYW4gYmUgc3BlY2lmaWVkIG9uIHR5aGUgdHlwZSBieSBpbXBsZW1lbnRpbmcgdGhpcyBpbnRlcmZhY2UuIFVzaW5nIHRoZSBjb2RlIGFib3ZlLgpgYGBnbwpmdW5jIChTZWFyY2gpIEFQSURlc2NyaXB0aW9uKCkgc3RyaW5nIHsgcmV0dXJuICJUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgVGFza3MgdG8gcmV0dXJuLiIgfQpgYGAKLSBgYXBpLkhhc0Jhc2VTY2hlbWFgCkEgdHlwZSdzIHNjaGVtYSB3aWxsIGJlIGR5bmFtaWNhbGx5IGRldGVybWluZWQsIGJ1dCBpbXBsZW1lbnRpbmcgdGhpcyBpbnRlcmZhY2Ugd2lsbCBwcm92aWRlIHRoZSBzY2hlbWEgYnVpbGRpbmcgbG9naWMgd2l0aCBhIHN0YXJ0aW5nIHBvaW50LiBZb3UgY2FuIGRlZmluZSB0aGUgcHJlZmVycmVkIHNjaGVtYSBwcm9wZXJ0aWVzLgpgYGBnbwpmdW5jIChTZWFyY2gpIEFQSUJhc2VTY2hlbWEoKSAqYXBpLlNjaGVtYSB7CiAgcmV0dXJuICZhcGkuU2NoZW1hewogICAgVGl0bGU6ICAgICAgICJUYXNrIFNlYXJjaCIsCiAgICBEZXNjcmlwdGlvbjogIlRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBUYXNrcyB0byByZXR1cm4uIiwKICAgIEV4YW1wbGUgICAgICBhcGkuQW55KFNlYXJjaHtOYW1lOiAiaG9tZXdvcmsifSksCiAgfQp9CmBgYAotIGBhcGkuSGFzRnVsbFNjaGVtYWAKQSB0eXBlJ3Mgc2NoZW1hIHdpbGwgb25seSBiZSBkZXRlcm1pbmVkIGJ5IHdoYXQncyByZXR1cm5lZCwgbm8gZnVydGhlciBpbnNwZWN0aW9uIGlzIGRvbmUuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3YW50IHRvIHVzZSBzb21lIG9mIHRoZSBidWlsdC1pbiBzdHJ1Y3QgdHlwZXMgdGhhdCBzdXBwb3J0IGRpZmZlcmVudCBmb3JtYXRzLgpgYGBnbwp0eXBlIFRpbWVzdGFtcCB0aW1lLlRpbWUKZnVuYyAoVGltZXN0YW1wKSBBUElGdWxsU2NoZW1hKCkgKmFwaS5TY2hlbWEgewogIHJldHVybiAmYXBpLlNjaGVtYXsKICAgIFR5cGU6ICAgIGFwaS5EYXRhVHlwZVN0cmluZywKICAgIEZvcm1hdDogICJkYXRlLXRpbWUiLAogICAgUGF0dGVybjogYFxcZHs0fS1cZFxkLVxkXGRUXGRcZDpcZFxkOlxkXGQrXGRcZDpcZFxkYCwKICAgIEV4YW1wbGU6IGFwaS5BbnkoIjIwMTgtMTEtMTNUMjA6MjA6MzkrMDA6MDAiKSwKICB9Cn0KYGBgCi0gYGFwaS5IYXNFbnVtYApBIHR5cGUgY2FuIGFjY2VwdCBvbmx5IGEgaGFuZGZ1bCBvZiB2YWx1ZXMuCmBgYGdvCnR5cGUgVG9kb0FjdGlvbiBzdHJpbmcKY29uc3QgKAogIFRvZG9BY3Rpb25BcmNoaXZlICBUb2RvQWN0aW9uID0gImFyY2hpdmUiCiAgVG9kb0FjdGlvbkRlbGV0ZSAgIFRvZG9BY3Rpb24gPSAiZGVsZXRlIgogIFRvZG9BY3Rpb25Db21wbGV0ZSBUb2RvQWN0aW9uID0gImNvbXBsZXRlIgopCmZ1bmMgKFRvZG9BY3Rpb24pIEFQSUVudW0oKSBbXWFueSB7CiAgcmV0dXJuIFtdYW55e1RvZG9BY3Rpb25BcmNoaXZlLCBUb2RvQWN0aW9uRGVsZXRlLCBUb2RvQWN0aW9uQ29tcGxldGV9Cn0KYGBgCi0gYGFwaS5IYXNFeGFtcGxlc2AKQSB0eXBlIGNhbiBwcm92aWRlIHNldmVyYWwgbmFtZWQgZXhhbXBsZXMgZm9yIGEgZ2l2ZW4gY29udGVudCB0eXBlLgpgYGBnbwpmdW5jIChTZWFyY2gpIEFQSUV4YW1wbGVzKGNvbnRlbnRUeXBlIGFwaS5Db250ZW50VHlwZSkgYXBpLkV4YW1wbGVzIHsKICByZXR1cm4gYXBpLkV4YW1wbGVzewogICAgIkFsbCB0YXNrcyI6IGFwaS5FeGFtcGxlewogICAgICBTdW1tYXJ5OiAiVGhpcyBzZWFyY2ggd2lsbCByZXR1cm4gYWxsIHRhc2tzIHRoZSB1c2VyIGNhbiBzZWUuIiwKICAgICAgVmFsdWU6ICAgYXBpLkFueShTZWFyY2h7fSksCiAgICB9LAogICAgIlRhc2tzIHdpdGggJ2hvbWV3b3JrJyBpbiB0aGUgbmFtZSI6IGFwaS5FeGFtcGxlewogICAgICBTdW1tYXJ5OiAiVGhpcyBzZWFyY2ggd2lsbCByZXR1cm4gYWxsIHRhc2tzIHdpdGggJ2hvbWV3b3JrJyBpbiB0aGUgbmFtZS4iLAogICAgICBWYWx1ZTogICBhcGkuQW55KFNlYXJjaHtOYW1lOiAiaG9tZXdvcmsifSksCiAgICB9LAogIH0KfQpgYGAKLSBgYXBpLkhhc0V4YW1wbGVgCkEgdHlwZSB0aGF0IGNhbiBwcm92aWRlIGEgc2luZ2xlIGV4YW1wbGUgZm9yIGEgdHlwZS4KYGBgZ28KZnVuYyAoU2VhcmNoKSBBUElFeGFtcGxlKCkgKmFueSB7CiAgcmV0dXJuIGFwaS5BbnkoU2VhcmNoe05hbWU6ICJob21ld29yayJ9KQp9CmBgYAotIGBhcGkuSGFzT3BlcmF0aW9uYApBIHJvdXRlIGZ1bmN0aW9uIHRoYXQgaGFzIHRoZSBvcGVyYXRpb24gZnVsbHkgZGVmaW5lZCBoZXJlIGFuZCBubyBpbnNwZWN0aW9uIG5lZWRzIHRvIGJlIGRvbmUgb24gdGhlIGFyZ3VtZW50cyBvciByZXR1cm4gdHlwZXMuCmBgYGdvCnR5cGUgR2V0VGFzayBmdW5jKGlkIHN0cmluZykgKlRhc2sKZnVuYyAoR2V0VGFzaykgQVBJT3BlcmF0aW9uKCkgYXBpLk9wZXJhdGlvbiB7CiAgcmV0dXJuIGFwaS5PcGVyYXRpb257CiAgICBUYWdzOiAgICAgICAgW11zdHJpbmd7IlRhc2sifSwKICAgIFN1bW1hcnk6ICAgICAiR2V0IHRoZSB0YXNrIHdpdGggdGhlIGdpdmVuIElEIiwKICAgIE9wZXJhdGlvbklEOiAiR0VUX1RBU0tfQllfSUQiLAogICAgUGFyYW1ldGVyczogIFtdYXBpLlBhcmFtZXRlcnt7CiAgICAgIE5hbWU6ICAgICAiaWQiLAogICAgICBJbjogICAgICAgYXBpLlBhcmFtZXRlckluUGF0aCwKICAgICAgUmVxdWlyZWQ6IHRydWUsCiAgICAgIFNjaGVtYTogICAmYXBpLlNjaGVtYXtUeXBlOiBhcGkuVHlwZVN0cmluZ30sCiAgICAgIEV4YW1wbGU6ICBhcGkuQW55KCI4N3kzNCIpLAogICAgfX0sCiAgICBSZXNwb25zZXM6ICBhcGkuUmVzcG9uc2VzewogICAgICAiMjAwIjogICAgJmFwaS5SZXNwb25zZXsKICAgICAgICBEZXNjcmlwdGlvbjogIlRoZSB0YXNrIGV4aXN0cyBhbmQgaGFzIHRoZXNlIHZhbHVlcyIsCiAgICAgICAgQ29udGVudDogICAgIGFwaS5Db250ZW50c3sKICAgICAgICAgIGFwaS5Db250ZW50VHlwZUpTT046ICZhcGkuTWVkaWFUeXBlewogICAgICAgICAgICBTY2hlbWE6IHNpdGUuT3Blbi5HZXRTY2hlbWEocmVmbGVjdC5UeXBlT2YoVGFza3t9KSksCiAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgIH0sCiAgICB9LAogIH0KfQpgYGAKLSBgYXBpLkhhc09wZXJhdGlvblVwZGF0ZWAKQSByb3V0ZSBmdW5jdGlvbiB0aGF0IG1vZGlmaWVzIHRoZSBvcGVyYXRpb24gaW5zcGVjdGVkIGFmdGVyIGl0cyBkb25lIGluc3BlY3Rpb24uCmBgYGdvCnR5cGUgR2V0VGFzayBmdW5jKGlkIHN0cmluZykgKlRhc2sKZnVuYyAoR2V0VGFzaykgQVBJT3BlcmF0aW9uVXBkYXRlKG9wICphcGkuT3BlcmF0aW9uKSB7CiAgb3AuT3BlcmF0aW9uSUQgPSAiR0VUX1RBU0tfQllfSUQiCn0KYGBgCi0gYHJlei5TaXRlLk9wZW5gIGlzIGEgcmVmZXJlbmNlIHRvIGBhcGkuQnVpbGRlcmAgd2hpY2ggaGFzIGEgYERvY3VtZW50YCBmaWVsZCB3aGljaCBjYW4gYmUgbW9kaWZpZWQuIFRoaXMgaXMgdGhlIGJhc2UgZG9jdW1lbnQgdG8gdXNlIGJlZm9yZSBidWlsZGluZyB0aGUgZmluYWwgYGFwaS5Eb2N1bWVudGAuCi0gYHJlei5Sb3V0ZXJgIGhhcyBhIGZldyBtZXRob2RzIHRvIGFzc2lzdCBpbiBkb2N1bWVudGF0aW9uOgogIC0gYEdldE9wZXJhdGlvbnMoKSAqYXBpLk9wZXJhdGlvbmAgcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgb3BlcmF0aW9uIHRlbXBsYXRlIHRoYXQgaGFzIGFjY3VtdWxhdGVkIGF0IHRoaXMgcG9pbnQgaW4gdGhlIHJvdXRlci4gU3ViIHJvdXRlcnMgaW5oZXJpdCB0aGlzLiBNaWRkbGV3YXJlcyBhZGQgdG8gaXQuCiAgLSBgU2V0T3BlcmF0aW9ucyhhcGkuT3BlcmF0aW9uKWAgc2V0cyB0aGUgb3BlcmF0aW9uIHRlbXBsYXRlIGluIGl0cyBlbnRpcmV0eSwgb3ZlcndyaXRpbmcgd2hhdCBoYXMgYmVlbiBidWlsdCBzbyBmYXIuCiAgLSBgVXBkYXRlT3BlcmF0aW9ucyhhcGkuT3BlcmF0aW9uKWAgbWVyZ2VzIGluIHRoZSBmaWVsZHMgc2V0IG9uIHRoZSBnaXZlbiBvcGVyYXRpb24gaW50byB0aGUgb3BlcmF0aW9uIHRlbXBsYXRlIG9mIHRoaXMgcm91dGVyLgogIC0gYEdldFBhdGgocGF0dGVybikgKmFwaS5QYXRoYCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBwYXRoIHdpdGggdGhlIGdpdmVuIHBhdHRlcm4uIERlZmluaW5nIG1ldGhvZHMgd2lsbCBhZGQgb3BlcmF0aW9ucyB0byB0aGlzIHBhdGguIElmIHRoZSBwYXRoIGhhcyBub3QgYmVlbiBkZWZpbmVkIHlldCBuaWwgaXMgcmV0dXJuZWQuCiAgLSBgQ3JlYXRlUGF0aChwYXR0ZXJuKSAqYXBpLlBhdGhgIHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHBhdGggd2l0aCB0aGUgZ2l2ZW4gcGF0dGVybiwgY3JlYXRpbmcgaXQgaWYgbmVlZCBiZS4KICAtIGBVcGRhdGVQYXRoKHBhdHRlcm4sIGFwaS5QYXRoKWAgbWVyZ2VzIGluIHRoZSBmaWVsZHMgc2V0IG9uIHRoZSBnaXZlbiBwYXRoIHdpdGggdGhlIHBhdGggZGVmaW5lZCBhdCB0aGUgZ2l2ZW4gcGF0dGVybiAtIGNyZWF0aW5nIGl0IGlmIG5lZWQgYmUuCiAgLSBgU2V0VGFncyh0YWdzIFtdc3RyaW5nKWAgc2V0cyB0aGUgdGFncyBvbiB0aGUgb3BlcmF0aW9uIHRlbXBsYXRlIHRvIHRoaXMgdmFsdWUuCiAgLSBgQWRkVGFncyh0YWdzKWAgYWRkcyB0aGUgdGFncyB0byB0aGUgb3BlcmF0aW9uIHRlbXBsYXRlLgogIC0gYFNldFJlc3BvbnNlcyhhcGkuUmVzcG9uc2VzKWAgc2V0cyB0aGUgcmVzcG9uc2VzIGZvciBhbGwgb3BlcmF0aW9ucyBkZWZpbmVkIGFmdGVyLiBUaGlzIG92ZXJ3cml0ZXMgYW55IHJlc3BvbnNlcyBzcGVjaWZpZWQgcHJldmlvdXNseSBieSB0aGUgdXNlciBvciBtaWRkbGV3YXJlcy4KICAtIGBBZGRSZXNwb25zZXMoYXBpLlJlc3BvbnNlcylgIGFkZHMgdGhlIHJlc3BvbnNlcyB0byB0aGUgb3BlcmF0aW9uIHRlbXBsYXRlLgogIC0gYEFkZFJlc3BvbnNlKGNvZGUsIGFwaS5SZXNwb25zZSlgIGFkZHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBvcGVyYXRpb24gdGVtcGxhdGUuCiAgLSBgSGFuZGxlRnVuYyhwYXR0ZXJuLCBmbiwgLi4uYXBpLk9wZXJhdGlvbikgKmFwaS5QYXRoYCBjYW4gYWNjZXB0IHplcm8gb3IgbW9yZSBvcGVyYXRpb24gZGVmaW5pdGlvbnMgdG8gbWVyZ2UgaW50byB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGF0IHRoaXMgcGF0aCAtIGFuZCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBwYXRoIGF0IHRoZSBwYXR0ZXJuIGlzIHJldHVybmVkLgogIC0gYCJtZXRob2QiKHBhdHRlcm4sIGZuLCAuLi5hcGkuT3BlcmF0aW9uKSAqYXBpLk9wZXJhdGlvbmAgaXMgYSBtZXRob2Qgd2l0aCB0aGUgbmFtZSBvZiBhbnkgb2YgdGhlIEhUVFAgbWV0aG9kcyB3aGljaCBhZGRzIHRoaXMgbWV0aG9kIHRvIHRoZSBwYXRoIHdpdGggdGhlIHBhdHRlcm4gYW5kIG1lcmdlcyBpbiBhbnkgZ2l2ZW4gb3BlcmF0aW9ucyB3aXRoIHRoZSBvcGVyYXRpb24gdGVtcGxhdGUgYW5kIHRoZW4gcmV0dXJucyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBmaW5hbCBidWlsdCBvcGVyYXRpb24gZm9yIHRoaXMgcm91dGUuCi0gU3RydWN0IHRhZ3MuIEZpZWxkcyBvbiBhIHN0cnVjdCBjYW4gc3BlY2lmeSB0aGUgYGFwaWAgdGFnIHdoaWNoIGlzIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Qgb2Yga2V5PXZhbHVlIG9yIGZsYWdzLiBJZiB5b3UgbmVlZCB0byB1c2UgYSBjb21tYSBpbiBhIHZhbHVlIHlvdSBjYW4gZXNjYXBlIGl0IGxpa2UgYFwsYC4KICAtIGB0aXRsZWAgZXg6IGBhcGk6InRpdGxlPUEgcGVyc29uJ3MgYWRkcmVzcyJgIChzZWUgYGFwaS5TY2hlbWEuVGl0bGVgKQogIC0gYGRlc2NgIG9yIGBkZXNjcmlwdGlvbmAgZXg6IGBhcGk6ImRlc2M9VGhlIHRlbiBkaWdpdCBob21lIHBob25lIG51bWJlci4iYCAoc2VlIGBhcGkuU2NoZW1hLkRlc2NyaXB0aW9uYCkKICAtIGBmb3JtYXRgIGV4OiBgYXBpOiJmb3JtYXQ9ZW1haWwiYCAoc2VlIGBhcGkuU2NoZW1hLkZvcm1hdGApCiAgLSBgcGF0dGVybmAgZXg6IGBhcGk6InBhdHRlcm49XGQrImAgKHNlZSBgYXBpLlNjaGVtYS5QYXR0ZXJuYCkKICAtIGBkZXByZWNhdGVkYCBleDogYGFwaToiZGVwcmVjYXRlZCJgIChzZWUgYGFwaS5TY2hlbWEuRGVwcmVjYXRlZGApCiAgLSBgcmVxdWlyZWRgIGV4OiBgYXBpOiJyZXF1aXJlZCJgIChzZWUgYGFwaS5TY2hlbWEuTnVsbGFibGVgKQogIC0gYG51bGxgIG9yIGBudWxsYWJsZWAgZXg6IGBhcGk6Im51bGwiYCAoc2VlIGBhcGkuU2NoZW1hLk51bGxhYmxlYCkKICAtIGByZWFkb25seWAgZXg6IGBhcGk6InJlYWRvbmx5ImAgKHNlZSBgYXBpLlNjaGVtYS5SZWFkT25seWApCiAgLSBgd3JpdGVvbmx5YCBleDogYGFwaToid3JpdGVvbmx5ImAgKHNlZSBgYXBpLlNjaGVtYS5Xcml0ZU9ubHlgKQogIC0gYGVudW1gIGV4OiBgYXBpOiJlbnVtPTF8MnwzImAgKHNlZSBgYXBpLlNjaGVtYS5FbnVtYCkKICAtIGBtaW5sZW5ndGhgIGV4OiBgYXBpOiJtaW5sZW5ndGg9NiJgIChzZWUgYGFwaS5TY2hlbWEuTWluTGVuZ3RoYCkKICAtIGBtYXhsZW5ndGhgIGV4OiBgYXBpOiJtYXhsZW5ndGg9NiJgIChzZWUgYGFwaS5TY2hlbWEuTWF4TGVuZ3RoYCkKICAtIGBtaW5pdGVtc2AgZXg6IGBhcGk6Im1pbml0ZW1zPTYiYCAoc2VlIGBhcGkuU2NoZW1hLk1pbkl0ZW1zYCkKICAtIGBtYXhpdGVtc2AgZXg6IGBhcGk6Im1heGl0ZW1zPTYiYCAoc2VlIGBhcGkuU2NoZW1hLk1heEl0ZW1zYCkKICAtIGBtdWx0aXBsZW9mYCBleDogYGFwaToibXVsdGlwbGVvZj0yImAgKHNlZSBgYXBpLlNjaGVtYS5NdWx0aXBsZU9mYCkKICAtIGBtaW5gIG9yIGBtaW5pbXVtYCBleDogYGFwaToibWluPTEiYCAoc2VlIGBhcGkuU2NoZW1hLk1pbmltdW1gKQogIC0gYG1heGAgb3IgYG1heGltdW1gIGV4OiBgYXBpOiJtYXg9MSJgIChzZWUgYGFwaS5TY2hlbWEuTWF4aW11bWApCiAgLSBgZXhjbHVzaXZlbWF4aW11bWAgb3IgYGV4Y2x1c2l2ZW1heGAgZXg6IGBhcGk6ImV4Y2x1c2l2ZW1heD10cnVlImAgKHNlZSBgYXBpLlNjaGVtYS5FeGNsdXNpdmVNYXhpbXVtYCkKICAtIGBleGNsdXNpdmVtaW5pbXVtYCBvciBgZXhjbHVzaXZlbWluYCBleDogYGFwaToiZXhjbHVzaXZlbWluImAgKHNlZSBgYXBpLlNjaGVtYS5FeGNsdXNpdmVNaW5pbXVtYCkKCiMjIFNpdGUKCmByZXouU2l0ZWAgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHJvdXRlciB0aGF0IG11c3QgYmUgY3JlYXRlZCB3aXRoIGByZXouTmV3KGNoaS5Sb3V0ZXIpYC4gU2l0ZSBoYXMgYSBmZXcgYWRkaXRpb25hbCBtZXRob2RzOgotIGBCdWlsZERvY3VtZW50KCkgKmFwaS5Eb2N1bWVudGAgcmV0dXJucyB0aGUgYnVpbHQgZG9jdW1lbnQgYmFzZWQgb24gdGhlIHJvdXRlcyBhbmQgbWlkZGxld2FyZXMgZGVmaW5lZCB0aHVzIGZhci4KLSBgQnVpbGRKU09OKCkgW11ieXRlYCBjYWxscyBgQnVpbGREb2N1bWVudGAgYW5kIG1hcnNoYWxzIGl0IHRvIEpTT04uCi0gYFNlcnZlT3BlbkpTT04ocGF0dGVuKWAgc2VydmVzIHRoZSBgQnVpbGRKU09OYCB0byBhIEdFVCByb3V0ZSBhdCB0aGUgZGVmaW5lZCBwYXR0ZXJuLiBUaGlzIGdldHMgY2FsbGVkIGJ5IHRoZSBvdGhlciBgU2VydmVgIGRvY3VtZW50IHJlbGF0ZWQgZW5kcG9pbnRzIGlmIGl0IHdhcyBub3QgY2FsbGVkIHlldCB3aXRoIGEgZGVmYXVsdCBwYXR0ZXJuIG9mIGBvcGVuYXBpMy5qc29uYC4KLSBgU2VydmVTd2FnZ2VyVUkocGF0dGVybixvcHRpb25zKWAgc2VydmVzIGFuIEhUTUwgcGFnZSBhdCB0aGUgZ2l2ZW4gcGF0dGVybiB3aGljaCBwcmVzZW50cyB0aGUgU3dhZ2dlclVJIHdoaWNoIHBvaW50cyB0byB0aGUgT3BlbkFQSSBkb2N1bWVudCBKU09OLgotIGBTZXJ2ZVJlZG9jKHBhdHRlcm4pYCBzZXJ2ZXMgYW4gSFRNTCBwYWdlIGF0IHRoZSBnaXZlbiBwYXR0ZXJuIHdoaWNoIHByZXNlbnRzIHRoZSBSZWRvYyB3aGljaCBwb2ludHMgdG8gdGhlIE9wZW5BUEkgZG9jdW1lbnQgSlNPTi4KLSBgTGlzdGVuKGFkZHIpYCBzdGFydHMgdGhlIHNpdGUgYW5kIGJsb2NrcyB1bnRpbCBpdCBzdG9wcy4KLSBgUnVuKClgIHN0YXJ0cyB0aGUgc2l0ZSBidXQgbG9va3MgYXQgdGhlIENMSSBhcmdzIGZvciBhIGAtLWhvc3RgIGFyZ3VtZW50IHRvIHNwZWNpZnkgdGhlIHBvcnQuIEl0IGRlZmF1bHRzIHRvIGA6ODBgLgotIGBQcmludFBhdGhzKClgIHByaW50cyBhbiBBU0NJSSBncmlkIHRvIHRoZSBjb25zb2xlIHdpdGggdGhlIHBhdGhzIGRlc2NyaWJlZCBpbiB0aGUgc2l0ZSBhdCB0aGlzIHBvaW50IGluIHRpbWUuIEluY2x1ZGVzIHRoZSAiTWV0aG9kIiwgIlVSTCIsIGFuZCAiQWJvdXQiIGlmIGFueSBzdW1tYXJ5IG9yIGRlc2NyaXB0aW9ucyBhcmUgZ2l2ZW4uIEV4YW1wbGUgb3V0cHV0OgpgYGAK4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQCuKUgk1ldGhvZCDilIJVUkwgICAgICAgIOKUgkFib3V0ICAgICAgICAgICAgICAg4pSCCuKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpArilIJHRVQgICAg4pSCL3Rhc2sve2lkfSDilIJHZXQgdGFzayBieSBpZCAgICAgIOKUggrilJzilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKQK4pSCREVMRVRFIOKUgi90YXNrL3tpZH0g4pSCRGVsZXRlIHRhc2sgYnkgaWQgICDilIIK4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkCuKUgkdFVCAgICDilIIvYXV0aCAgICAgIOKUgkdldCBjdXJyZW50IHNlc3Npb24g4pSCCuKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpArilIJQT1NUICAg4pSCL2F1dGggICAgICDilIJMb2dpbiAgICAgICAgICAgICAgIOKUggrilJzilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKQK4pSCREVMRVRFIOKUgi9hdXRoICAgICAg4pSCTG9nb3V0ICAgICAgICAgICAgICDilIIK4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYCmBgYAo= readmeEtag: '"0773d99603a133802817e7f684bd74d335be605b"' readmeLastModified: Fri, 02 May 2025 12:58:46 GMT repositoryId: 569863233 description: >- REST (easy) framework in Go with out of the box OpenAPI generation, validation, generics, and much more created: '2022-11-23T19:38:15Z' updated: '2025-05-06T14:04:11Z' language: Go archived: false stars: 2 watchers: 1 forks: 0 owner: ClickerMonkey logo: https://avatars.githubusercontent.com/u/421233?v=4 license: MIT repoEtag: '"46867457cdf906779599f8bc690c5840d61b777776da3fa9704442bff7a05ed0"' repoLastModified: Tue, 06 May 2025 14:04:11 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/n1215/openapi-http-foundation-validator v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWh0dHAtZm91bmRhdGlvbi12YWxpZGF0b3IKT3BlbkFQSSh2MykgVmFsaWRhdG9ycyBmb3IgU3ltZm9ueSBodHRwLWZvdW5kYXRpb24sIHVzaW5nIGBsZWFndWUvb3BlbmFwaS1wc3I3LXZhbGlkYXRvcmAgYW5kIGBzeW1mb255L3Bzci1odHRwLW1lc3NhZ2UtYnJpZGdlYC4KCiMjIFJlcXVpcmVtZW50cwotIFBIUCA+PSA4LjEKCiMjIEluc3RhbGxhdGlvbgoKYGBgc2hlbGwKY29tcG9zZXIgcmVxdWlyZSBuMTIxNS9vcGVuYXBpLWh0dHAtZm91bmRhdGlvbi12YWxpZGF0b3IKYGBgCgojIyBVc2FnZQoKIyMjIDEuIGluc3RhbGwgUFNSLTE3IEhUVFAgRmFjdG9yeSBpbXBsZW1lbnRhdGlvbi4KLSBZb3UgY2FuIHVzZSBhbnkgaW1wbGVtZW50YXRpb24gb2YgUFNSLTE3IEhUVFAgRmFjdG9yeS4KICAtIGV4LiBgbnlob2xtL3BzcjdgCgpgYGBzaGVsbApjb21wb3NlciByZXF1aXJlIG55aG9sbS9wc3I3CmBgYAoKIyMjIDIuIGNyZWF0ZSBodHRwIG1lc3NhZ2UgZmFjdG9yeQoKYGBgcGhwCiRwc3IxN0ZhY3RvcnkgPSBuZXcgXE55aG9sbVxQc3I3XEZhY3RvcnlcUHNyMTdGYWN0b3J5KCk7Ci8qKiBAdmFyIFxTeW1mb255XEJyaWRnZVxQc3JIdHRwTWVzc2FnZVxIdHRwTWVzc2FnZUZhY3RvcnlJbnRlcmZhY2UgJGh0dHBNZXNzYWdlRmFjdG9yeSAqLwokaHR0cE1lc3NhZ2VGYWN0b3J5ID0gbmV3IFxTeW1mb255XEJyaWRnZVxQc3JIdHRwTWVzc2FnZVxGYWN0b3J5XFBzckh0dHBGYWN0b3J5KAogICAgc2VydmVyUmVxdWVzdEZhY3Rvcnk6ICRwc3IxN0ZhY3RvcnksCiAgICBzdHJlYW1GYWN0b3J5OiAkcHNyMTdGYWN0b3J5LAogICAgdXBsb2FkZWRGaWxlRmFjdG9yeTogJHBzcjE3RmFjdG9yeSwKICAgIHJlc3BvbnNlRmFjdG9yeTogJHBzcjE3RmFjdG9yeQopOwpgYGAKCiMjIyAzLiBjcmVhdGUgdmFsaWRhdG9yIGJ1aWxkZXIKCi0gQSBidWlsZGVyIGNhbiBiZSBjcmVhdGVkIGZyb20gWUFNTCBmaWxlLCBZQU1MIHN0cmluZywgSlNPTiBmaWxlLCBvciBKU09OIHN0cmluZy4KLSBZb3UgY2FuIHVzZSBQU1ItMTYgc2ltcGxlIGNhY2hlIGluc3RlYWQgb2YgUFNSLTYgQ2FjaGUuCgojIyMjIGV4YW1wbGUxCmBgYHBocAovKiogQHZhciBcTjEyMTVcT3BlbkFwaVZhbGlkYXRpb25cSHR0cEZvdW5kYXRpb25cVmFsaWRhdG9yQnVpbGRlciAkdmFsaWRhdG9yQnVpbGRlciAqLwokdmFsaWRhdG9yQnVpbGRlciA9IChuZXcgXE4xMjE1XE9wZW5BcGlWYWxpZGF0aW9uXEh0dHBGb3VuZGF0aW9uXFZhbGlkYXRvckJ1aWxkZXIoJHBzcjE3RmFjdG9yeSkpCiAgICAtPmZyb21ZYW1sRmlsZSgnL3BhdGgvdG8vb3BlbmFwaS55YW1sJykKICAgIC0+c2V0Q2FjaGUobmV3IFlvdXJQc3I2Q2FjaGUoKSwgODY0MDApOwpgYGAKCgojIyMjIGV4YW1wbGUyCmBgYHBocAovKiogQHZhciBcTjEyMTVcT3BlbkFwaVZhbGlkYXRpb25cSHR0cEZvdW5kYXRpb25cVmFsaWRhdG9yQnVpbGRlciAkdmFsaWRhdG9yQnVpbGRlciAqLwokdmFsaWRhdG9yQnVpbGRlciA9IChuZXcgXE4xMjE1XE9wZW5BcGlWYWxpZGF0aW9uXEh0dHBGb3VuZGF0aW9uXFZhbGlkYXRvckJ1aWxkZXIoJHBzcjE3RmFjdG9yeSkpCiAgICAtPmZyb21Kc29uRmlsZSgnL3BhdGgvdG8vb3BlbmFwaS5qc29uJykKICAgIC0+c2V0U2ltcGxlQ2FjaGUobmV3IFlvdXJQc3IxNkNhY2hlKCksIDM2MDApOwpgYGAKCiMjIyA0LiBnZXQgdmFsaWRhdG9ycyBmcm9tIGJ1aWxkZXIKCmBgYHBocAovKiogQHZhciBcTjEyMTVcT3BlbkFwaVZhbGlkYXRpb25cSHR0cEZvdW5kYXRpb25cVmFsaWRhdG9ycyAkdmFsaWRhdG9ycyAqLwokdmFsaWRhdG9ycyA9ICR2YWxpZGF0b3JCdWlsZGVyLT5nZXRWYWxpZGF0b3JzKCk7CmBgYAoKIyMjIDUuIHZhbGlkYXRlIHJlcXVlc3QKCmBgYHBocAovKiogQHZhciBcU3ltZm9ueVxDb21wb25lbnRcSHR0cEZvdW5kYXRpb25cUmVxdWVzdCAkcmVxdWVzdCAqLwovKiogQHZhciBcTjEyMTVcT3BlbkFwaVZhbGlkYXRpb25cSHR0cEZvdW5kYXRpb25cUmVxdWVzdFZhbGlkYXRvckludGVyZmFjZSAkcmVxdWVzdFZhbGlkYXRvciAqLwokcmVxdWVzdFZhbGlkYXRvciA9ICR2YWxpZGF0b3JzLT5nZXRSZXF1ZXN0VmFsaWRhdG9yKCk7CiRyZXF1ZXN0VmFsaWRhdG9yLT52YWxpZGF0ZSgkcmVxdWVzdCk7CmBgYAoKIyMjIDYuIHZhbGlkYXRlIHJlc3BvbnNlCgpgYGBwaHAKLyoqIEB2YXIgXFN5bWZvbnlcQ29tcG9uZW50XEh0dHBGb3VuZGF0aW9uXFJlc3BvbnNlICRyZXNwb25zZSAqLwovKiogQHZhciBcTjEyMTVcT3BlbkFwaVZhbGlkYXRpb25cSHR0cEZvdW5kYXRpb25cUmVzcG9uc2VWYWxpZGF0b3JJbnRlcmZhY2UgJHJlc3BvbnNlVmFsaWRhdG9yICovCiRyZXNwb25zZVZhbGlkYXRvciA9ICR2YWxpZGF0b3JzLT5nZXRSZXNwb25zZVZhbGlkYXRvcigpOwokcmVzcG9uc2VWYWxpZGF0b3ItPnZhbGlkYXRlKAogICAgbmV3IFxOMTIxNVxPcGVuQXBpVmFsaWRhdGlvblxPcGVyYXRpb25BZGRyZXNzKCcvcGF0aCcsICdHRVQnKSwKICAgICRyZXNwb25zZQopOwpgYGAKCiMjIFVzYWdlIGZvciBMYXJhdmVsCnNlZSBodHRwczovL2dpdGh1Yi5jb20vbjEyMTUvb3BlbmFwaS1sYXJhdmVsLXZhbGlkYXRvcgo= readmeEtag: '"92247ff9ffda8c419373a62499a32d5de74e66a2"' readmeLastModified: Fri, 22 Sep 2023 12:59:36 GMT repositoryId: 404792127 description: >- OpenAPI(v3) Validators for Symfony http-foundation, using `league/openapi-psr7-validator` and `symfony/psr-http-message-bridge`. created: '2021-09-09T16:22:40Z' updated: '2024-11-14T05:06:35Z' language: PHP archived: false stars: 2 watchers: 1 forks: 0 owner: n1215 logo: https://avatars.githubusercontent.com/u/2157593?v=4 license: MIT repoEtag: '"468ab79b882deb96492845fe7f3e9773bee0a768bf93629b6cb15cb1481d124a"' repoLastModified: Thu, 14 Nov 2024 05:06:35 GMT foundInMaster: true category: Data Validators id: e5ae30ae45d597e93d4c0950e4132b19 - source: openapi3 tags repository: https://github.com/bhagyas/alfresco-swagger-gen v3: true repositoryMetadata: base64Readme: >- IyBhbGZyZXNjby1zd2FnZ2VyLWdlbgpPcGVuQVBJIChTd2FnZ2VyKSBkZWZpbml0aW9uIGdlbmVyYXRvciBmb3IgQWxmcmVzY28gV2Vic2NyaXB0IEZpbGVzCgojIyBJbnN0YWxsYXRpb24KCiMjIyBWaWEgTlBNIApSdW4gYG5wbSBpbnN0YWxsIC1nIGFsZnJlc2NvLXN3YWdnZXItZ2VuYAoKT2ZmaWNpYWwgTlBNIFBhY2thZ2UgaXMgYXQgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYWxmcmVzY28tc3dhZ2dlci1nZW4KCiMjIyBWaWEgQ2xvbmluZyAKQ2xvbmUgdGhlIHJlcG9zaXRvcnkgYW5kIHJ1biBgbnBtIGxpbmtgIGZyb20gdGhlIHByb2plY3Qgcm9vdC4KCiMjIFVzYWdlCgojIyMgR2VuZXJhdGluZyBPcGVuQVBJIChTd2FnZ2VyKSBEb2N1bWVudApSZWZlciB0byB0aGUgY29tbWFuZCBsaW5lIHN5bnRheCBiZWxvdy4KCmBgYAphbGZyZXNjby1zd2FnZ2VyLWdlbiAtLWhlYWRlciAuLi9teS1wcm9qZWN0L215LWhlYWRlci55YW1sIFwKICAgICAgICAgICAgICAgICAgICAgLS1kZXN0aW5hdGlvbiAuL215LXByb2plY3Qvc3dhZ2dlci1kZWZpbml0aW9ucy55YW1sIFwKICAgICAgICAgICAgICAgICAgICAgLS1zY2FuUGF0aCAuL215LXByb2plY3Qvc3JjICAKYGBgICAgICAgICAgICAgICAgICAgCgojIyMgUGFyYW1ldGVyIFJlZmVyZW5jZQp8IFBhcmFtZXRlciB8IERlc2NyaXB0aW9uIHwKfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgaGVhZGVyICB8IFNwZWNpZnkgYSBjdXN0b20gaGVhZGVyIGZpbGUgdG8gYmUgdXNlZCBmb3IgT3BlbkFQSSAoU3dhZ2dlcikgZGVmaW5pdGlvbiBnZW5lcmF0aW9uIHwKfCBkZXN0aW5hdGlvbiB8IERlc3RpbmF0aW9uIHBhdGggKHRhcmdldCBmaWxlKSBmb3IgdGhlIGdlbmVyYXRlZCBBUEkgZGVmaW5pdGlvbiBmaWxlLiB8Cnwgc2NhblBhdGggfCBSb290IHBhdGggZm9yIHNjYW5uaW5nIGZvciBBbGZyZXNjbyB3ZWJzY3JpcHQgZGVzY3JpcHRvciBmaWxlcyB8CgoqIEFuIGV4YW1wbGUgaGVhZGVyIGZpbGUgaXMgZm91bmQgaW4gYC4vdGVtcGxhdGVzL2RlZmF1bHRfaGVhZGVyLnlhbWxgIHdpdGhpbiB0aGUgc291cmNlLgoKIyMjIFJ1bm5pbmcgU3dhZ2dlci1VSQoKYWxmcmVzY28tc3dhZ2dlci1nZW4gYWxsb3dzIHlvdSB0byBydW4gU3dhZ2dlci1VSSB3aXRoIHlvdXIgZ2VuZXJhdGVkIE9wZW5BUEkgZG9jdW1lbnQuIEl0IGNvcGllcyB0aGUgc3BlY2lmaWVkIE9wZW5BUEkgZG9jdW1lbnQgdG8gYSBjdXN0b20gZm9sZGVyIGFuZCBtb3VudHMgaXQgdG8gYSBkb2NrZXIgaW1hZ2UgcnVubmluZyBTd2FnZ2VyLVVJLgoKVGhlIGZvbGxvd2luZyBjb21tYW5kIHJ1bnMgdGhlIGJ1aWx0LWluIGBkb2NrZXItY29tcG9zZWAgZmlsZSBhbmQgb3BlbnMgdGhlIGJyb3dzZXIgc2hvd2luZyB0aGUgU3dhZ2dlci1VSS4KCmBgYAphbGZyZXNjby1zd2FnZ2VyLWdlbiB1aSAtLWRlc3RpbmF0aW9uIC4vbXktcHJvamVjdC9zd2FnZ2VyLWRlZmluaXRpb25zLnlhbWwgXAomJiBvcGVuIGh0dHA6Ly9sb2NhbGhvc3Q6ODAKYGBgCgoKCiMjIE1hcHBpbmcKIyMjIEhvdyB0byBtYXAgIFJlc3BvbnNlIFNjaGVtYXMKQWRkIGA8eC1yZXNwb25zZS1zY2hlbWE+TXlSZXNwb25zZVNjaGVtYTwveC1yZXNwb25zZS1zY2hlbWE+YCB0byB5b3VyIHdlYnNjcmlwdCBkZXNjcmlwdG9yIGZpbGUuCgpgTXlSZXNwb25zZVNjaGVtYWAgY2FuIGJlIGRlZmluZWQgaW4geW91ciBoZWFkZXIgZmlsZS4KCiMjIEF1dGhvcgotIEJoYWd5YSBTaWx2YSAtIFtAYmhhZ3lhc10oaHR0cHM6Ly9saW5rZWRpbi5jb20vaW4vYmhhZ3lhcyk= readmeEtag: '"caaf2ec66903f2ef37335a39b5dd3b52dd1eabe0"' readmeLastModified: Wed, 04 Aug 2021 15:46:03 GMT repositoryId: 203178879 description: OpenAPI (Swagger) definition generator for Alfresco Webscript Files created: '2019-08-19T13:30:53Z' updated: '2023-10-05T21:23:05Z' language: JavaScript archived: false stars: 2 watchers: 2 forks: 0 owner: bhagyas logo: https://avatars.githubusercontent.com/u/750003?v=4 repoEtag: '"18535d28a2d7cccdc7655e17a17c7c8920ad98045fb55780b0aeea0fdb8aa33a"' repoLastModified: Thu, 05 Oct 2023 21:23:05 GMT foundInMaster: true category: - Description Validators - Parsers id: 57c04bf601ff68939256e9adabb1b734 - source: openapi3 tags repository: https://github.com/vinoth5595/phone-bridge v3: true repositoryMetadata: base64Readme: >- IyBQaG9uZSBCcmlkZ2UgUHJvamVjdCAoTWljcm9zZXJ2aWNlcykKCmRvY2tlci1jb21wb3NlIHVwIChUbyBzdGFydCBNb25nb0RCICYgQXBhY2hlIEthZmthKQoKZG9ja2VyLWNvbXBvc2UgZG93biAoVG8gc3RvcCBNb25nb0RCICYgQXBhY2hlIEthZmthKQoKU3RhcnQgdGhlIGFwcGxpY2F0aW9uIGluIHRoZSBiZWxvdyBvcmRlci4KCnwgQXBwbGljYXRpb24gIHwgRGVzY3JpcHRpb24gfCBQb3J0IHwKfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfAp8IHBob25lYnJpZGdlLWRpc2NvdmVyeSAgfCBQaG9uZSBicmlkZ2UgZXVyZWthIHNlcnZlciAgfCA4NzYxICB8CnwgcGhvbmVicmlkZ2UtYWRtaW4gIHwgUGhvbmUgYnJpZGdlIGFkbWluICB8IDgwOTMgIHwKfCBwaG9uZWJyaWRnZS1jb25maWctc2VydmVyICB8IFBob25lIGJyaWRnZSBjb25maWcgc2VydmVyICB8IDg4ODggIHwKfCBwaG9uZWJyaWRnZS1wb3J0YWwgIHwgUG9ydGFsIHNlcnZpY2UgJiBjYW1wYWlnbiBzZXJ2aWNlICB8IDgwODAgIHwKfCBwaG9uZWJyaWRnZS1hdXRoc2VydmVyICB8IFBob25lIGJyaWRnZSBhdXRoIHNlcnZlciAgfCA4MDgxICB8CnwgcGhvbmVicmlkZ2UtZ2F0ZXdheS1zZXJ2ZXIgIHwgUGhvbmUgYnJpZGdlIGdhdGV3YXkgc2VydmVyICB8IDgwODUgIHwKfCBwaG9uZS1icmlkZ2UtdWkgIHwgVXNlciBpbnRlcmZhY2UgZm9yIHBob25lIGJyaWRnZSBhcHBsaWNhdGlvbiAgfCA0MjAwICB8CnwgcGhvbmVicmlkZ2UtY29tbW9uICB8IFByb2plY3Qgd2l0aCBjb21tb24gZmlsZXMgIHwgTkEgIHw= readmeEtag: '"b71052d9cd74602be4f65147a01d21c446d97ed9"' readmeLastModified: Tue, 03 May 2022 07:07:58 GMT repositoryId: 243821819 description: Phone Bridge Project created: '2020-02-28T17:48:05Z' updated: '2022-05-03T07:07:26Z' language: SCSS archived: false stars: 2 watchers: 1 forks: 1 owner: Vinoth5595 logo: https://avatars.githubusercontent.com/u/32703692?v=4 repoEtag: '"c51cb55bff0631fe47cc699983a8637bc8988db604be989e428fe2ecdb0d0513"' repoLastModified: Tue, 03 May 2022 07:07:26 GMT foundInMaster: true category: - Documentation - Server Implementations id: b9b0dcb83f765a04a5eed22c05c48a46 - source: openapi3 tags repository: https://github.com/lionelsu/store-manager-api v3: true id: 04ee39c98b6167d24883073bc0878fd5 repositoryMetadata: base64Readme: >- PCEtLSBFc3RlIMOpIHVtIGNvbWVudMOhcmlvOiBvbWl0aXIgb3MgdMOzcGlkb3MgcmVkdW5kYW50ZXMgLS0+CjwhLS0gICoqfCBbQnJhemlsXShSRUFETUUubWQpIHwgW2FzZGZdKFJFQURNRV9lbi5tZCkgfCoqIC0tPgoKIyBTdG9yZSBNYW5hZ2VyCgpbRG9jdW1lbnRhw6fDo28gZGEgQVBJIG5vIFBvc3RtYW5dKGh0dHBzOi8vZG9jdW1lbnRlci5nZXRwb3N0bWFuLmNvbS92aWV3LzMwMTU5MzU1LzJzOVlKZ1RMSEIpCgpPIFN0b3JlIE1hbmFnZXIgQVBJIMOpIHVtYSBzb2x1w6fDo28gY29tcGxldGEgZGUgZ2VyZW5jaWFtZW50byBkZSB2ZW5kYXMgcG9yIGRyb3Agc2hpcHBpbmcuIEVzdGEgQVBJIG9mZXJlY2Ugb3BlcmHDp8O1ZXMgZGUgQ1JVRCAoQ3JlYXRlLCBSZWFkLCBVcGRhdGUsIERlbGV0ZSkgcGFyYSBmYWNpbGl0YXIgbyBnZXJlbmNpYW1lbnRvIGRlIHZlbmRhcy4gRGVzZW52b2x2aWRhIGNvbSBmb2NvIG5hIHF1YWxpZGFkZSBlIHNlZ3VpbmRvIGEgbWV0b2RvbG9naWEgVEREIChUZXN0LURyaXZlbiBEZXZlbG9wbWVudCksIGEgQVBJIGFkb3RhIHVtYSBhcnF1aXRldHVyYSBlbSBjYW1hZGFzIGNvbnNpc3RlbnRlIGNvbSBNb2RlbCwgU2VydmljZSBlIENvbnRyb2xsZXIgKE1TQykuCgo8ZGV0YWlscz4KCjxzdW1tYXJ5PkZlcnJhbWVudGFzIFV0aWxpemFkYXM8L3N1bW1hcnk+CgotICoqVGVjbm9sb2dpYXMgUHJpbmNpcGFpczoqKgogIC0gTm9kZS5qcwogIC0gRXhwcmVzcy5qcwogIC0gTXlTUUwgU2VydmVyCgotICoqVGVzdGVzOioqCiAgLSBNb2NoYQogIC0gQ2hhaQogIC0gU2lub24KCi0gKipEb2N1bWVudGHDp8OjbzoqKgogIC0gU3dhZ2dlcgogIC0gUG9zdG1hbgoKPC9kZXRhaWxzPgoKIyMgUHLDqS1SZXF1aXNpdG9zCgpVdGlsaXplIG8gRG9ja2VyOgoKLSBbRG9ja2VyICYgRG9ja2VyIENvbXBvc2VdKGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2NvbXBvc2UvKQoKPCEtLSAjIyBGZWF0dXJlcyAtLT4KIyMgSW5zdGFsYcOnw6NvCgoxLiBDbG9uYXIgbyBSZXBvc2l0w7NyaW8KCiAgICBQcmltZWlybywgY29waWUgb3UgY2xvbmUgZXN0ZSByZXBvc2l0w7NyaW8gcGFyYSBvIHNldSBzaXN0ZW1hIGxvY2FsIHVzYW5kbyBvIEdpdDoKCiAgICBgYGBiYXNoCiAgICBnaXQgY2xvbmUgZ2l0QGdpdGh1Yi5jb206bGlvbmVsc3Uvc3RvcmUtbWFuYWdlci1hcGkuZ2l0ICYmIGNkIHN0b3JlLW1hbmFnZXItYXBpCiAgICBgYGAKCjIuIEluaWNpYXIgbyBDb250w6ppbmVyIERvY2tlcgoKICAgIFV0aWxpemUgbyBEb2NrZXIgQ29tcG9zZSBwYXJhIGluaWNpYXIgbyBjb250w6ppbmVyIGRvIFN0b3JlIE1hbmFnZXI6CgogICAgYGBgYmFzaAogICAgZG9ja2VyIGNvbXBvc2UgdXAgLWQKICAgIGBgYAoKMy4gQWNlc3NlIGEgZG9jdW1lbnRhw6fDo28gZGEgQVBJIG5vIG5hdmVnYWRvcjoKCiAgICBgYGBodHRwCiAgICBodHRwOi8vMTI3LjAuMC4xOjMwMDEvdjEvZG9jcy8KICAgIGBgYAoKIyMgVXNvCgpQYXJhIGludGVyYWdpciBjb20gbyBTdG9yZSBNYW5hZ2VyLCB2b2PDqiBwb2RlIHVzYXIgb3Mgc2VndWludGVzIGNvbWFuZG9zOgoKVmlzdWFsaXphw6fDo28gZGUgTG9ncwoKYGBgYmFzaApkb2NrZXIgbG9ncyAtbiAxMCAtZiBzdG9yZV9tYW5hZ2VyCmBgYAoKTGluaGEgZGUgQ29tYW5kbyBJbnRlcmF0aXZhLCB1c2FkYSBwYXJhICoqW3Rlc3Rhcl0oI3Rlc3RlcykqKiBhIGFwbGljYcOnw6NvCgpgYGBiYXNoCmRvY2tlciBleGVjIC1pdCBzdG9yZV9tYW5hZ2VyIGJhc2gKYGBgCgpSZXNldGFyIG8gQmFuY28gZGUgRGFkb3MgKGRldmUgc2VyIGV4ZWN1dGFkbyBkZW50cm8gZGEgKipbbGluaGEgZGUgY29tYW5kbyBpbnRlcmF0aXZhXSgjdXNvKSoqKQoKYGBgYmFzaApucG0gcnVuIGRiOnJlc2V0CmBgYAoKIyMgUm90YXMgZGEgQVBJCgoqKlByb2R1dG9zOioqCgotICoqYFBPU1QgL3Byb2R1Y3RzYCoqOiBDYWRhc3RyYSB1bSBub3ZvIHByb2R1dG8uCi0gKipgR0VUIC9wcm9kdWN0c2AqKjogUmV0b3JuYSB0b2RvcyBvcyBwcm9kdXRvcyBjYWRhc3RyYWRvcy4KLSAqKmBHRVQgL3Byb2R1Y3RzLzppZGAqKjogUmV0b3JuYSB1bSBwcm9kdXRvIGVzcGVjw61maWNvIHBlbG8gSUQuCi0gKipgR0VUIC9wcm9kdWN0cy9zZWFyY2hgKio6IFJldG9ybmEgcHJvZHV0b3MgY29tIGJhc2UgbmEgY29uc3VsdGEgZGUgbm9tZS4KLSAqKmBQVVQgL3Byb2R1Y3RzLzppZGAqKjogQXR1YWxpemEgdW0gcHJvZHV0byBwZWxvIElELgotICoqYERFTEVURSAvcHJvZHVjdHMvOmlkYCoqOiBFeGNsdWkgdW0gcHJvZHV0byBwZWxvIElELgoKKipWZW5kYXM6KioKCi0gKipgUE9TVCAvc2FsZXNgKio6IENhZGFzdHJhIHVtYSBub3ZhIHZlbmRhLgotICoqYEdFVCAvc2FsZXNgKio6IFJldG9ybmEgdG9kYXMgYXMgdmVuZGFzIGNhZGFzdHJhZGFzLgotICoqYEdFVCAvc2FsZXMvOmlkYCoqOiBSZXRvcm5hIHVtYSB2ZW5kYSBlc3BlY8OtZmljYSBwZWxvIElELgotICoqYFBVVCAvc2FsZXMvOnNhbGVJZC9wcm9kdWN0cy86cHJvZHVjdElkL3F1YW50aXR5YCoqOiBBdHVhbGl6YSBhIHF1YW50aWRhZGUgZGUgdW0gcHJvZHV0byBlbSB1bWEgdmVuZGEuCi0gKipgREVMRVRFIC9zYWxlcy86aWRgKio6IEV4Y2x1aSB1bWEgdmVuZGEgcGVsbyBJRC4KCjxkZXRhaWxzPgoKICA8c3VtbWFyeT5Db25maWd1cmHDp8Ojbzwvc3VtbWFyeT4KCiAgVmFyacOhdmVpcyBkZSBhbWJpZW50ZSBkZW50cm8gZG8gY29udGFpbmVyOgoKICBgYGBteXNxbAogIE1ZU1FMX1VTRVI6IHJvb3QKICBNWVNRTF9QQVNTV09SRDogcGFzc3dvcmQKICBNWVNRTF9IT1NUTkFNRTogZGIKICBNWVNRTF9QT1JUOiAzMzA2CiAgUE9SVDogMzAwMQogIGBgYAoKPC9kZXRhaWxzPgoKIyMgVGVzdGVzCgotIERlbnRybyBkYSAqKltsaW5oYSBkZSBjb21hbmRvIGludGVyYXRpdmFdKCN1c28pKiosIHZvY8OqIHBvZGUgZXhlY3V0YXIgb3Mgc2VndWludGVzIHRlc3RlczoKCiAgLSBUZXN0ZXMgVW5pdMOhcmlvczoKCiAgYGBgYmFzaAogIG5wbSBydW4gdGVzdDptb2NoYQogIGBgYAoKICAtIENvYmVydHVyYSBkZSBUZXN0ZXM6CgogIGBgYGJhc2gKICBucG0gcnVuIHRlc3Q6Y292ZXJhZ2UKICBgYGAKCiAgLSBUZXN0ZXMgZGUgTXV0YcOnw6NvOgoKICBgYGBiYXNoCiAgbnBtIHJ1biB0ZXN0Om11dGF0aW9uCiAgYGBgCgojIyBIYWJpbGlkYWRlcyBkZXNlbnZvbHZpZGFzCgpVc2VpIG8gYE5vZGUuanNgIGNvbSBvIGBFeHByZXNzLmpzYCBjb21vIGJhc2UgZGEgbWluaGEgYXBsaWNhw6fDo28sIHBlcm1pdGluZG8gY3JpYXIgZmFjaWxtZW50ZSBlbmRwb2ludHMgYEhUVFBgIHBhcmEgYXRlbmRlciDDoHMgbmVjZXNzaWRhZGVzIGRvIHNpc3RlbWEuCgpPIGJhbmNvIGRlIGRhZG9zIGBNeVNRTCBTZXJ2ZXJgIGZvaSBlc2NvbGhpZG8gcGFyYSBhcm1hemVuYXIgZGFkb3MgcmVsYWNpb25hZG9zIGEgcHJvZHV0b3MsIHZlbmRhcyBlIG91dHJvcyBlbGVtZW50b3MgY3J1Y2lhaXMgZG8gc2lzdGVtYS4KCkEgcXVhbGlkYWRlIGRvIGPDs2RpZ28gZm9pIGdhcmFudGlkYSBwb3IgbWVpbyBkZSB0ZXN0ZXMgcmlnb3Jvc29zIHVzYW5kbyBgTW9jaGFgLCBgQ2hhaWAgZSBgU2lub25gLiBFc3NlcyB0ZXN0ZXMgYXZhbGlhcmFtIG1pbnVjaW9zYW1lbnRlIG9zIGVuZHBvaW50cywgc2VydmnDp29zIGUgZnVuw6fDtWVzIHBhcmEgZ2FyYW50aXIgcXVlIHR1ZG8gZnVuY2lvbmFzc2UgY29ycmV0YW1lbnRlLgoKUGFyYSBkb2N1bWVudGFyIGEgYEFQSWAsIHV0aWxpemVpIG8gYFN3YWdnZXJgLCBxdWUgaW5jbHVpIGluZm9ybWHDp8O1ZXMgc29icmUgcm90YXMsIHBhcsOibWV0cm9zIGUgZXhlbXBsb3MgcHLDoXRpY29zLgoKVGFtYsOpbSBkaXNwb25pYmlsaXplaSB1bWEgY29sZcOnw6NvIG5vIGBQb3N0bWFuYCBwYXJhIGZhY2lsaXRhciB0ZXN0ZXMgZSBpbnRlcmHDp8O1ZXMgY29tIGEgYEFQSWAuCgpDb20gZXNzYXMgZXRhcGFzIGNvbmNsdcOtZGFzLCBlc3RvdSBjb25maWFudGUgbmEgZW50cmVnYSBkZSB1bWEgYEFQSWAgc8OzbGlkYSBlIGZ1bmNpb25hbCwgcHJvbnRhIHBhcmEgYXRlbmRlciDDoHMgbmVjZXNzaWRhZGVzIGRvcyB1c3XDoXJpb3MuCg== readmeEtag: '"9590ad8377f9eebb892c3e2ed7b00347604dae65"' readmeLastModified: Sat, 07 Oct 2023 19:06:01 GMT repositoryId: 692222558 description: >- RESTful API offering comprehensive CRUD functionality for sales management, specifically drop shipping. Developed with TDD methodology. created: '2023-09-15T21:04:38Z' updated: '2023-12-02T18:02:08Z' language: JavaScript archived: false stars: 2 watchers: 1 forks: 0 owner: lionelsu logo: https://avatars.githubusercontent.com/u/50457741?v=4 repoEtag: '"18f836249c016a33683bda68b85a769d5057bc80ec5272a1afe48425e7c6b19c"' repoLastModified: Sat, 02 Dec 2023 18:02:08 GMT category: Code Generators foundInMaster: true - source: openapi3 tags repository: https://github.com/sitmcella/openapi-3-object-converter v3: true id: 9a10040c85e27660dbdc71c3606026f6 repositoryMetadata: base64Readme: >- IyBKYXZhIGNsYXNzIGNvbnZlcnNpb24gdG8gT3BlbkFQSSAzIFlBTUwgU2NoZW1hIE9iamVjdAoKVGhpcyBwcm9qZWN0IGNvbnNpc3RzIG9mIGEgSmF2YSBhcHBsaWNhdGlvbiB1c2VkIGZvciBjb252ZXJ0aW5nIGEgSmF2YSBjbGFzcyB0byBhIGZyZWUtZm9ybSBvYmplY3QgaW4gT3BlbkFQSSAzIFlBTUwgClNjaGVtYSBPYmplY3QgZGVmaW5pdGlvbi4KClRoaXMgaW1wbGVtZW50YXRpb24gaXMgYW4gZXh0ZW5zaW9uIG9mIHRoZSBmcmVlLWZvcm0gcXVlcnkgcGFyYW1ldGVyIGRlZmluaXRpb24gaW4gT3BlbkFQSSAzIHNwZWNpZmljYXRpb24uCgpUaGUgT3BlbkFQSSAzIFlBTUwgU2NoZW1hIE9iamVjdCBpcyBpbnNlcnRlZCBpbnRvIGFuIE9wZW5BUEkgMyBkb2N1bWVudCwgY29tcGxpYW50IHdpdGggdGhlIFlBTUwgdmVyc2lvbiAxLjIgZm9ybWF0LgoKVGhlIG9mZmljaWFsIE9wZW5BUEkgMyBkb2N1bWVudGF0aW9uIGlzOiBbT3BlbkFQSSAzLjAuMCBkb2N1bWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMC5tZCkKCiMjIERldmVsb3BtZW50CgojIyMgU2V0dXAKCkluc3RhbGwgT3BlbkpESyAxMS4KCiMjIyBCdWlsZCBwcm9qZWN0CgpgYGAKZ3JhZGxldyBjbGVhbiBidWlsZApgYGAKCiMjIyBSdW4gcHJvamVjdAoKYGBgCmphdmEgLWphciBidWlsZC9saWJzL29iamVjdC1jb252ZXJ0ZXItMC4wLjItU05BUFNIT1QuamFyIDxKYXZhLWNsYXNzLWNhbm9uaWNhbC1uYW1lPgpgYGAKCl9fRXhhbXBsZTpfXwoKYGBgCmphdmEgLWphciBidWlsZC9saWJzL29iamVjdC1jb252ZXJ0ZXItMC4wLjItU05BUFNIT1QuamFyIGRlLm1jZWxsYS5vcGVuYXBpLnYzLm9iamVjdGNvbnZlcnRlci5FeGFtcGxlCmBgYAoKVGhlIGdlbmVyYXRlZCBPcGVuQVBJIDMgZG9jdW1lbnQgaXMgdGhlIGZpbGUgImJ1aWxkL2xpYnMvb3BlbmFwaS55YW1sIi4KCl9fRXhhbXBsZSB3aXRoIGV4dGVybmFsIGNsYXNzOl9fCgpgYGAKamF2YWMgZXhhbXBsZS1leHRlcm5hbFxzcmNcKiAtZCBleGFtcGxlLWV4dGVybmFsXGNsYXNzZXMKYGBgCgpXaW5kb3dzOgoKYGBgCmphdmEgLWNwIGJ1aWxkXGxpYnNcKjtleGFtcGxlLWV4dGVybmFsXGNsYXNzZXMgZGUubWNlbGxhLm9wZW5hcGkudjMub2JqZWN0Y29udmVydGVyLk9iamVjdENvbnZlcnRlck1haW4gIGRlLm1jZWxsYS5vcGVuYXBpLnYzLm9iamVjdGNvbnZlcnRlci5leGFtcGxlLkV4YW1wbGVGcm9tRXh0ZXJuYWwKYGBgCkxpbnV4IGFuZCBNYWNPUzoKCmBgYApqYXZhIC1jcCAiYnVpbGQvbGlicy8qOmV4YW1wbGUtZXh0ZXJuYWwvY2xhc3NlczouIiBkZS5tY2VsbGEub3BlbmFwaS52My5vYmplY3Rjb252ZXJ0ZXIuT2JqZWN0Q29udmVydGVyTWFpbiBkZS5tY2VsbGEub3BlbmFwaS52My5vYmplY3Rjb252ZXJ0ZXIuZXhhbXBsZS5FeGFtcGxlRnJvbUV4dGVybmFsCmBgYAoKVGhlIGdlbmVyYXRlZCBPcGVuQVBJIDMgZG9jdW1lbnQgaXMgYSBmaWxlIG5hbWVkICJidWlsZC9saWJzL29wZW5hcGkueWFtbCIuCgojIyMgT3BlbkFQSSAzIGRvY3VtZW50IHZhbGlkYXRpb24KClJ1biB0aGUgZm9sbG93aW5nIGdyYWRsZSBjb21tYW5kIHRvIHZhbGlkYXRlIHRoZSBnZW5lcmF0ZWQgT3BlbkFQSSAzIGRvY3VtZW50OgoKYGBgCmdyYWRsZXcgb3BlbkFwaVZhbGlkYXRlCmBgYAoKIyMjIFNvdXJjZSBjb2RlIHN0eWxlCgpUaGlzIHByb2plY3QgZm9sbG93cyB0aGUgR29vZ2xlIEphdmEgU3R5bGUsIGFuZCB1c2VzIHRoZSBbZ29vZ2xlLWphdmEtZm9ybWF0XShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZS1qYXZhLWZvcm1hdCkgZm9ybWF0dGVyLgoKIyMgRG9jdW1lbnRhdGlvbgoKVGhpcyBhcHBsaWNhdGlvbiBpcyB1c2VmdWwgdG8gY29udmVydCBhIGNvbXBsZXggSmF2YSBjbGFzcyB0byBhbiBPcGVuQVBJIDMgU2NoZW1hIGZyZWUtZm9ybSBvYmplY3QgZGVmaW5pdGlvbi4KClRoZSBPcGVuQVBJIDMgWUFNTCBTY2hlbWEgT2JqZWN0IGlzIGluc2VydGVkIGludG8gYW4gT3BlbkFQSSAzIGRvY3VtZW50LgpUaGUgZ2VuZXJhdGVkIE9wZW5BUEkgMyBkb2N1bWVudCBpcyBhIHNpbmdsZSBhbmQgY29tcGxldGUgT3BlbkFQSSAzIGRvY3VtZW50IHdpdGggYSBzaW1wbGUgdGVtcGxhdGUuClRoZSBjb252ZXJ0ZWQgSmF2YSBjbGFzcyBpcyBpbnNlcnRlZCBhcyBhIFNjaGVtYSBPYmplY3QgaW50byBhIHNhbXBsZSBQT1NUIHJlcXVlc3Qgd2l0aCBib2R5IGNvbnRlbnQgImFwcGxpY2F0aW9uL2pzb24iLgoKQXNzdW1wdGlvbnM6Ci0gVGhlIFNjaGVtYSBPYmplY3QgZG9lcyBub3QgY29udGFpbiBSZWZlcmVuY2UgT2JqZWN0cwotIFRoZSBTY2hlbWEgT2JqZWN0IGNvbnRhaW5zIGEgc3Vic2V0IG9mIHRoZSBhdmFpbGFibGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIHByb3BlcnRpZXMKLSBUaGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcG9ydCBjb21wb3NpdGlvbiBhbmQgaW5oZXJpdGFuY2UgdXNpbmcgdGhlICJhbGxPZiIgYW5kICJkaXNjcmltaW5hdG9yIiBwcm9wZXJ0aWVzCgojIyMgRGF0YSBUeXBlcwoKVGhlIHN1cHBvcnRlZCBPcGVuQVBJIDMgZGF0YSB0eXBlcyBhcmUgdGhlIGZvbGxvd2luZzoKCnwgQ29tbW9uIG5hbWUgfCB0eXBlIHwgZm9ybWF0IHwgQ29tbWVudHMgfAp8IDotLS0tLS06IHwgOi0tLS0tLTogfCA6LS0tLS0tOiB8IDotLS0tLS06IHwKfCBpbnRlZ2VyIHwgaW50ZWdlciB8IGludDMyIHwgc2lnbmVkIDMyIGJpdHMgfAp8IGxvbmcgfCBpbnRlZ2VyIHwgaW50NjQgfCBzaWduZWQgNjQgYml0cyB8CnwgZmxvYXQgfCBudW1iZXIgfCBmbG9hdCB8IHwKfCBkb3VibGUgfCBudW1iZXIgfCBkb3VibGUgfCB8Cnwgc3RyaW5nIHwgc3RyaW5nIHwgfCB8CnwgYnl0ZSB8IHN0cmluZyB8IGJ5dGUgfCBiYXNlNjQgZW5jb2RlZCBjaGFyYWN0ZXJzIHwKfCBib29sZWFuIHwgYm9vbGVhbiB8IHwgfAp8IGRhdGUgfCBzdHJpbmcgfCBkYXRlIHwgQXMgZGVmaW5lZCBieSBmdWxsLWRhdGUgLSBbUkZDMzMzOV0oaHR0cHM6Ly94bWwycmZjLnRvb2xzLmlldGYub3JnL3B1YmxpYy9yZmMvaHRtbC9yZmMzMzM5Lmh0bWwjYW5jaG9yMTQpIHwKfCBkYXRlVGltZSB8IHN0cmluZyB8IGRhdGUtdGltZSB8IEFzIGRlZmluZWQgYnkgZGF0ZS10aW1lIC0gW1JGQzMzMzldKGh0dHBzOi8veG1sMnJmYy50b29scy5pZXRmLm9yZy9wdWJsaWMvcmZjL2h0bWwvcmZjMzMzOS5odG1sI2FuY2hvcjE0KSB8CgpUaGUgYXBwbGljYXRpb24gc3VwcG9ydHMgYm90aCBKYXZhIHByaW1pdGl2ZSB0eXBlcyBhbmQgSmF2YSB3cmFwcGVyIGNsYXNzZXMuCgojIyMgRmVhdHVyZXMKClRoZSBhcHBsaWNhdGlvbiBzdXBwb3J0cyB0aGUgY29udmVyc2lvbiBvZjoKLSBKYXZhIHByaW1pdGl2ZSBhbmQgSmF2YSB3cmFwcGVyIGNsYXNzZXMKLSBDdXN0b20gY2xhc3NlcwotIExpc3RzICh3aXRoIGEgZGVmaW5lZCBHZW5lcmljIENsYXNzKQotIERpY3Rpb25hcmllcwo= readmeEtag: '"5ce2a446dee1a422769e431a8c9adba0b417f976"' readmeLastModified: Sat, 05 Dec 2020 09:48:43 GMT repositoryId: 193395986 description: Java class conversion to OpenAPI 3 YAML Schema Object created: '2019-06-23T21:12:21Z' updated: '2025-02-01T17:53:12Z' language: Java archived: false stars: 2 watchers: 0 forks: 0 owner: sitMCella logo: https://avatars.githubusercontent.com/u/2535184?v=4 license: MIT repoEtag: '"54eb4482d28d0c082f6919a049a3270ee2706cc5a584bbae59ab39c2cdf529a1"' repoLastModified: Sat, 01 Feb 2025 17:53:12 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/python-lapidary/lapidary-render v3: true id: 1557ede36cd84f0cf0f651b2bb4e4d62 repositoryMetadata: base64Readme: >- IyBMYXBpZGFyeSByZW5kZXIKClshWy5naXRodWIvd29ya2Zsb3dzL3Rlc3QueW1sXShodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uLWxhcGlkYXJ5L2xhcGlkYXJ5LXJlbmRlci9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uLWxhcGlkYXJ5L2xhcGlkYXJ5LXJlbmRlci9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbCkKCkxhcGlkYXJ5LXJlbmRlciBpcyBhIHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgUHl0aG9uIFdlYiBBUEkgY2xpZW50cyBmcm9tIE9wZW5BUEkgZG9jdW1lbnRzLgoKIyMgV2h5CgpJdCdzIGEgZ29vZCBwcmFjdGljZSB0byBlbmNhcHN1bGF0ZSBXZWIgQVBJIGNsaWVudCBjb2RlIGluIGZ1bmN0aW9ucyBvciBjbGFzc2VzIGFuZCBtZXRob2RzLAoKSWYgdGhlIFdlYiBBUEkgZXhwb3NlcyBhbiBPcGVuQVBJIGRvY3VtZW50LCB5b3UgY2FuIHJlZHVjZSB0aGUgbWFudWFsIGVmZm9ydCBieSBnZW5lcmF0aW5nIHRoZSBjbGllbnQgY29kZS4KCiMjIEhvdwoKSW5zdGFsbCBMYXBpYXJ5LXJlbmRlciwgZm9yIGV4YW1wbGUgd2l0aCBwaXB4CgpgYGBzaGVsbApwaXB4IGluc3RhbGwgbGFwaWRhcnktcmVuZGVyCmBgYAoKU3RhcnQgeW91ciBwcm9qZWN0CgpgYGBzaGVsbApsYXBpZGFyeSBpbml0IC0tc2F2ZSBodHRwczovL2V4YW1wbGUuY29tL29wZW5hcGkuanNvbiBwcm9qZWN0X2RpciBteV9hcGlfY2xpZW50CmBgYAoKR2VuZXJhdGUgY29kZToKYGBgc2hlbGwKY2QgcHJvamVjdF9kaXIKbGFwaWRhcnkgcmVuZGVyCmBgYAoKQ2hlY2sgdGhlIFtkb2N1bWVudGF0aW9uXShodHRwczovL2xhcGlkYXJ5LmRldi9sYXBpZGFyeS1yZW5kZXIvKSBmb3IgbW9yZSBkZXRhaWxzLgo= readmeEtag: '"c19d4a4bd3d4130092a904fa8085c370ed2d94b0"' readmeLastModified: Fri, 05 Dec 2025 23:05:55 GMT repositoryId: 584507821 description: Web API client generator created: '2023-01-02T19:09:02Z' updated: '2026-01-16T00:05:31Z' language: Python archived: false stars: 4 watchers: 1 forks: 1 owner: python-lapidary logo: https://avatars.githubusercontent.com/u/111730600?v=4 license: AGPL-3.0 repoEtag: '"6d1b13077149834ab425dbb8a3035883fddc727fc89a8ac9167fd90ea1a19f6a"' repoLastModified: Fri, 16 Jan 2026 00:05:31 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/keecon/restdocs-openapi3 v3: true repositoryMetadata: base64Readme: >- IyBTcHJpbmcgUkVTVCBEb2NzIE9wZW5BUEkgMyBTcGVjaWZpY2F0aW9uCgpbIVtqaXRwYWNrLWJhZGdlXV0oaHR0cHM6Ly9qaXRwYWNrLmlvLyNrZWVjb24vcmVzdGRvY3Mtb3BlbmFwaTMpClshW2J1aWxkLWJhZGdlXV0oaHR0cHM6Ly9naXRodWIuY29tL2tlZWNvbi9yZXN0ZG9jcy1vcGVuYXBpMy9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55bWwpClshW2NvZGVjb3YtYmFkZ2VdXShodHRwczovL2NvZGVjb3YuaW8vZ2gva2VlY29uL3Jlc3Rkb2NzLW9wZW5hcGkzKQpbIVtzb25hcmNsb3VkLWJhZGdlXV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9a2VlY29uX3Jlc3Rkb2NzLW9wZW5hcGkzKQpbIVtsaWNlbnNlLWJhZGdlXV0oaHR0cHM6Ly9naXRodWIuY29tL2tlZWNvbi9yZXN0ZG9jcy1vcGVuYXBpMy9ibG9iL21haW4vTElDRU5TRSkKCkEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgW2VQYWdlcy1kZS9yZXN0ZG9jcy1hcGktc3BlY10gd2l0aCBjbGFzcyBmaWVsZCB0eXBlIGFuZCBjb25zdHJhaW50IGluZmVyZW5jZS4KQW5kIG9ubHkgc3VwcG9ydCBbT3BlbkFQSSAzLjAuMV0gc3BlY3MuCgojIyBCdWlsZCBjb25maWd1cmF0aW9uCgojIyMgVmVyc2lvbnMKCi0gVGhlICoxLngueCogdmVyc2lvbiBpcyBjb21wYXRpYmxlIHdpdGggU3ByaW5nIEJvb3QgKjMuMC54KiBhbmQgU3ByaW5nIFJFU1QgRG9jcyAqMy4wLngqLgotIFRoZSAqMC54LngqIHZlcnNpb24gaXMgY29tcGF0aWJsZSB3aXRoIFNwcmluZyBCb290ICoyLjcueCogYW5kIFNwcmluZyBSRVNUIERvY3MgKjIuMC54Ki4KCiMjIyBHcmFkbGUKCjEuIEFkZCB0aGUgcGx1Z2luCgogICAgYGBgZ3Jvb3Z5CiAgICBidWlsZHNjcmlwdCgpIHsKICAgICAgcmVwb3NpdG9yaWVzIHsKICAgICAgICAvLyAuLi4KICAgICAgICBtYXZlbiB7IHVybCAiaHR0cHM6Ly9qaXRwYWNrLmlvIiB9CiAgICAgIH0KICAgICAgZGVwZW5kZW5jaWVzIHsKICAgICAgICAvLyAuLi4KICAgICAgICBjbGFzc3BhdGggJ2NvbS5naXRodWIua2VlY29uOnJlc3Rkb2NzLW9wZW5hcGkzOngueC54JwogICAgICB9CiAgICB9CgogICAgcGx1Z2lucyB7CiAgICAgIC8vIC4uLgogICAgICBpZCAnY29tLmdpdGh1Yi5rZWVjb246cmVzdGRvY3Mtb3BlbmFwaTMnCiAgICB9CiAgICBgYGAKCjIuIEFkZCByZXF1aXJlZCBkZXBlbmRlbmNpZXMgdG8geW91ciB0ZXN0cwoKICAgIGBgYGdyb292eQogICAgcmVwb3NpdG9yaWVzIHsKICAgICAgLy8gLi4uCiAgICAgIG1hdmVuIHsgdXJsICdodHRwczovL2ppdHBhY2suaW8nIH0KICAgIH0KCiAgICBkZXBlbmRlbmNpZXMgewogICAgICAvLy4uCiAgICAgIHRlc3RJbXBsZW1lbnRhdGlvbiAnY29tLmdpdGh1Yi5rZWVjb246cmVzdGRvY3Mtb3BlbmFwaTM6eC54LngnCiAgICB9CgogICAgb3BlbmFwaTMgewogICAgICBzZXJ2ZXIgPSAnaHR0cDovL2xvY2FsaG9zdDo4MDgwJwogICAgICB0aXRsZSA9ICdNeSBBUEknCiAgICAgIGRlc2NyaXB0aW9uID0gJ015IEFQSSBkZXNjcmlwdGlvbicKICAgICAgdGFnRGVzY3JpcHRpb25zUHJvcGVydGllc0ZpbGUgPSAnc3JjL3Rlc3QvcmVzb3VyY2VzL29wZW5hcGktdGFncy55bWwnCiAgICAgIHZlcnNpb24gPSAnMC4xLjAnCiAgICAgIGZvcm1hdCA9ICd5YW1sJwogICAgfQogICAgYGBgCgojIyBVc2FnZSB3aXRoIFNwcmluZyBSRVNUIERvY3MKCmBgYGdyb292eQp3aGVuOgpkZWYgcmVzdWx0QWN0aW9ucyA9IG1vY2tNdmMucGVyZm9ybSgKICBwb3N0KCcvdjEvcHJvZHVjdHMve3Byb2R1Y3RJZH0vcmVzdWx0JywgMSkKICAgIC5jb250ZW50VHlwZShNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTikKICAgIC5jb250ZW50KG9iamVjdE1hcHBlci53cml0ZVZhbHVlQXNCeXRlcyhuZXcgUHJvZHVjdFJlc3VsdENyZWF0ZVJlcXVlc3RCb2R5KHJlc3VsdCkpKQogICAgLmFjY2VwdChNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTikKKQoKdGhlbjoKZGVmIHJlcU1vZGVsID0gQ29uc3RyYWludHMubW9kZWwoUHJvZHVjdFJlc3VsdENyZWF0ZVJlcXVlc3QuY2xhc3MpCmRlZiByZXFCb2R5TW9kZWwgPSBDb25zdHJhaW50cy5tb2RlbChQcm9kdWN0UmVzdWx0Q3JlYXRlUmVxdWVzdEJvZHkuY2xhc3MpCmRlZiByZXNwTW9kZWwgPSBDb25zdHJhaW50cy5tb2RlbChQcm9kdWN0UmVzdWx0Q3JlYXRlUmVzcG9uc2UuY2xhc3MpCnJlc3VsdEFjdGlvbnMKICAuYW5kRXhwZWN0KHN0YXR1cygpLmlzT2soKSkKICAuYW5kRG8oZG9jdW1lbnQoJ3Byb2R1Y3RzLWlkLXJlc3VsdC1wb3N0JywKICAgIHJlc291cmNlKFJlc291cmNlU25pcHBldFBhcmFtZXRlcnMuYnVpbGRlcigpCiAgICAgIC50YWcoJ3Byb2R1Y3QnKQogICAgICAuc3VtbWFyeSgnQ3JlYXRlIGEgcHJvZHVjdCByZXN1bHQnKQogICAgICAuZGVzY3JpcHRpb24oJycnCiAgICAgICAgfENyZWF0ZSBhIHByb2R1Y3QgcmVzdWx0CiAgICAgICAgfAogICAgICAgIHwjIyMgRXJyb3IgZGV0YWlscwogICAgICAgIHwKICAgICAgICB8YDQwMGAgQkFEX1JFUVVFU1QKICAgICAgICB8LSBiYWQgcmVxdWVzdCBkZXNjcmlwdGlvbgogICAgICAgIHwKICAgICAgICB8YDQwMWAgVU5BVVRIT1JJWkVECiAgICAgICAgfC0gdW5hdXRob3JpemVkIGRlc2NyaXB0aW9uCiAgICAgICAgfAogICAgICAgIHwnJycuc3RyaXBNYXJnaW4oKSkKICAgICAgLnJlcXVlc3RTY2hlbWEoc2NoZW1hKCdQcm9kdWN0UmVzdWx0Q3JlYXRlUmVxdWVzdCcpKQogICAgICAucGF0aFBhcmFtZXRlcnMoCiAgICAgICAgcmVxTW9kZWwud2l0aE5hbWUoJ3Byb2R1Y3RJZCcpLmRlc2NyaXB0aW9uKCdwcm9kdWN0IGlkJyksCiAgICAgICkKICAgICAgLnJlcXVlc3RGaWVsZHMoCiAgICAgICAgcmVxQm9keU1vZGVsLndpdGhQYXRoKCdyZXN1bHQnKS5kZXNjcmlwdGlvbigncHJvZHVjdCByZXN1bHQnKSwKICAgICAgICByZXFCb2R5TW9kZWwud2l0aFBhdGgoJ3Jlc3VsdC5jb2RlJykuZGVzY3JpcHRpb24oJ3Byb2R1Y3QgcmVzdWx0IGNvZGUnKSwKICAgICAgICByZXFCb2R5TW9kZWwud2l0aFBhdGgoJ3Jlc3VsdC5zZXEnKS5kZXNjcmlwdGlvbigncHJvZHVjdCByZXN1bHQgc2VxJyksCiAgICAgICAgcmVxQm9keU1vZGVsLndpdGhQYXRoKCdyZXN1bHQuc2NvcmUnKS5kZXNjcmlwdGlvbigncHJvZHVjdCByZXN1bHQgc2NvcmUnKSwKICAgICAgICByZXFCb2R5TW9kZWwud2l0aFBhdGgoJ3Jlc3VsdC5hc3NpZ25zW10nKS5kZXNjcmlwdGlvbigncmVzdWx0IGFzc2lnbiBvYmplY3QgbGlzdCcpLAogICAgICAgIHJlcUJvZHlNb2RlbC53aXRoUGF0aCgncmVzdWx0LmFzc2lnbnNbXS5jb2RlJykuZGVzY3JpcHRpb24oJ3Jlc3VsdCBhc3NpZ24gY29kZScpLAogICAgICAgIHJlcUJvZHlNb2RlbC53aXRoUGF0aCgncmVzdWx0LmFzc2lnbnNbXS5zZXEnKS5kZXNjcmlwdGlvbigncmVzdWx0IGFzc2lnbiBzZXEnKSwKICAgICAgICByZXFCb2R5TW9kZWwud2l0aFBhdGgoJ3Jlc3VsdC5hc3NpZ25zW10ub2JqZWN0SWQnKS5kZXNjcmlwdGlvbigncmVzdWx0IGFzc2lnbiBvYmplY3QgaWQnKSwKICAgICAgICByZXFCb2R5TW9kZWwud2l0aFBhdGgoJ3Jlc3VsdC5hc3NpZ25zW10uZmlsZVR5cGUnKS5kZXNjcmlwdGlvbigncmVzdWx0IGFzc2lnbiBmaWxlIHR5cGUnKQogICAgICAgICAgLm9wdGlvbmFsKCksCiAgICAgICAgcmVxQm9keU1vZGVsLndpdGhQYXRoKCdyZXN1bHQuYXNzaWduc1tdLmZpbGVVcmwnKS5kZXNjcmlwdGlvbigncmVzdWx0IGFzc2lnbiBmaWxlIHVybCcpCiAgICAgICAgICAub3B0aW9uYWwoKSwKICAgICAgICByZXFCb2R5TW9kZWwud2l0aFBhdGgoJ3Jlc3VsdC5hc3NpZ25zW10uY29tbWVudHNbXScpLmRlc2NyaXB0aW9uKCdyZXN1bHQgYXNzaWduIGNvbW1lbnQgbGlzdCcpCiAgICAgICAgICAudHlwZShEYXRhVHlwZS5BUlJBWSkKICAgICAgICAgIC5hdHRyaWJ1dGVzKEF0dHJpYnV0ZXMuaXRlbXMoRGF0YVR5cGUuU1RSSU5HLCBudWxsLCBudWxsKSkKICAgICAgICAgIC5vcHRpb25hbCgpLAogICAgICApCiAgICAgIC5yZXNwb25zZVNjaGVtYShzY2hlbWEoJ1Byb2R1Y3RSZXN1bHRDcmVhdGVSZXNwb25zZScpKQogICAgICAucmVzcG9uc2VGaWVsZHMoCiAgICAgICAgcmVzcE1vZGVsLndpdGhQYXRoKCdzdGF0dXMnKS5kZXNjcmlwdGlvbignb3BlcmF0aW9uIHN0YXR1cycpLAogICAgICAgIHJlc3BNb2RlbC53aXRoUGF0aCgnY29kZScpLmRlc2NyaXB0aW9uKCdwcm9kdWN0IHJlc3VsdCBjb2RlJykKICAgICAgICAgIC5vcHRpb25hbCgpLAogICAgICApCiAgICAgIC5idWlsZCgpKSkpCmBgYAoKYGBgZ3Jvb3Z5CndoZW46CmRlZiByZXN1bHRBY3Rpb25zID0gbW9ja012Yy5wZXJmb3JtKAogIGdldCgnL3YxL3Byb2R1Y3RzL3twcm9kdWN0SWR9L3Jlc3VsdD9jb2RlPXtjb2RlfScsIDEsIDEpCiAgICAuYWNjZXB0KE1lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OKQopCgp0aGVuOgpkZWYgcmVxTW9kZWwgPSBDb25zdHJhaW50cy5tb2RlbChQcm9kdWN0UmVzdWx0UmVxdWVzdC5jbGFzcykKZGVmIHJlc3BNb2RlbCA9IENvbnN0cmFpbnRzLm1vZGVsKFByb2R1Y3RSZXN1bHRSZXNwb25zZS5jbGFzcykKcmVzdWx0QWN0aW9ucwogIC5hbmRFeHBlY3Qoc3RhdHVzKCkuaXNPaygpKQogIC5hbmREbyhkb2N1bWVudCgncHJvZHVjdHMtaWQtcmVzdWx0LWNvZGUtZ2V0JywKICAgIHJlc291cmNlKFJlc291cmNlU25pcHBldFBhcmFtZXRlcnMuYnVpbGRlcigpCiAgICAgIC50YWcoJ3Byb2R1Y3QnKQogICAgICAuc3VtbWFyeSgnR2V0IGEgcHJvZHVjdCByZXN1bHQgaW5mbycpCiAgICAgIC5kZXNjcmlwdGlvbignJycKICAgICAgICB8R2V0IGEgcHJvZHVjdCByZXN1bHQgaW5mbwogICAgICAgIHwKICAgICAgICB8IyMjIEVycm9yIGRldGFpbHMKICAgICAgICB8CiAgICAgICAgfGA0MDBgIEJBRF9SRVFVRVNUCiAgICAgICAgfC0gYmFkIHJlcXVlc3QgZGVzY3JpcHRpb24KICAgICAgICB8CiAgICAgICAgfGA0MDFgIFVOQVVUSE9SSVpFRAogICAgICAgIHwtIHVuYXV0aG9yaXplZCBkZXNjcmlwdGlvbgogICAgICAgIHwKICAgICAgICB8YDQwNGAgTk9UX0ZPVU5ECiAgICAgICAgfC0gbm90IGZvdW5kIGRlc2NyaXB0aW9uCiAgICAgICAgfAogICAgICAgIHwnJycuc3RyaXBNYXJnaW4oKSkKICAgICAgLnJlcXVlc3RTY2hlbWEoc2NoZW1hKCdQcm9kdWN0UmVzdWx0UmVxdWVzdCcpKQogICAgICAucGF0aFBhcmFtZXRlcnMoCiAgICAgICAgcmVxTW9kZWwud2l0aE5hbWUoJ3Byb2R1Y3RJZCcpLmRlc2NyaXB0aW9uKCdwcm9kdWN0IGlkJyksCiAgICAgICkKICAgICAgLnF1ZXJ5UGFyYW1ldGVycygKICAgICAgICByZXFNb2RlbC53aXRoTmFtZSgnY29kZScpLmRlc2NyaXB0aW9uKCdwcm9kdWN0IHJlc3VsdCBjb2RlJyksCiAgICAgICAgcmVxTW9kZWwud2l0aE5hbWUoJ3NlcScpLmRlc2NyaXB0aW9uKCdwcm9kdWN0IHJlc3VsdCBzZXEnKQogICAgICAgICAgLmRlZmF1bHRWYWx1ZShQcm9kdWN0UmVzdWx0UmVxdWVzdC5ERUZBVUxUX1JFU1VMVF9TRVEpCiAgICAgICAgICAub3B0aW9uYWwoKSwKICAgICAgKQogICAgICAucmVzcG9uc2VTY2hlbWEoc2NoZW1hKCdQcm9kdWN0UmVzdWx0UmVzcG9uc2UnKSkKICAgICAgLnJlc3BvbnNlRmllbGRzKAogICAgICAgIHJlc3BNb2RlbC53aXRoUGF0aCgncmVzdWx0JykuZGVzY3JpcHRpb24oJ3Byb2R1Y3QgcmVzdWx0JyksCiAgICAgICAgcmVzcE1vZGVsLndpdGhQYXRoKCdyZXN1bHQuY29kZScpLmRlc2NyaXB0aW9uKCdwcm9kdWN0IHJlc3VsdCBjb2RlJyksCiAgICAgICAgcmVzcE1vZGVsLndpdGhQYXRoKCdyZXN1bHQuc2VxJykuZGVzY3JpcHRpb24oJ3Byb2R1Y3QgcmVzdWx0IHNlcScpLAogICAgICAgIHJlc3BNb2RlbC53aXRoUGF0aCgncmVzdWx0LnNjb3JlJykuZGVzY3JpcHRpb24oJ3Byb2R1Y3QgcmVzdWx0IHNjb3JlJyksCiAgICAgICAgcmVzcE1vZGVsLndpdGhQYXRoKCdyZXN1bHQuYXNzaWduc1tdJykuZGVzY3JpcHRpb24oJ3Jlc3VsdCBhc3NpZ24gb2JqZWN0IGxpc3QnKSwKICAgICAgICByZXNwTW9kZWwud2l0aFBhdGgoJ3Jlc3VsdC5hc3NpZ25zW10uY29kZScpLmRlc2NyaXB0aW9uKCdyZXN1bHQgYXNzaWduIGNvZGUnKSwKICAgICAgICByZXNwTW9kZWwud2l0aFBhdGgoJ3Jlc3VsdC5hc3NpZ25zW10uc2VxJykuZGVzY3JpcHRpb24oJ3Jlc3VsdCBhc3NpZ24gc2VxJyksCiAgICAgICAgcmVzcE1vZGVsLndpdGhQYXRoKCdyZXN1bHQuYXNzaWduc1tdLm9iamVjdElkJykuZGVzY3JpcHRpb24oJ3Jlc3VsdCBhc3NpZ24gb2JqZWN0IGlkJyksCiAgICAgICAgcmVzcE1vZGVsLndpdGhQYXRoKCdyZXN1bHQuYXNzaWduc1tdLmZpbGVUeXBlJykuZGVzY3JpcHRpb24oJ3Jlc3VsdCBhc3NpZ24gZmlsZSB0eXBlJykKICAgICAgICAgIC5vcHRpb25hbCgpLAogICAgICAgIHJlc3BNb2RlbC53aXRoUGF0aCgncmVzdWx0LmFzc2lnbnNbXS5maWxlVXJsJykuZGVzY3JpcHRpb24oJ3Jlc3VsdCBhc3NpZ24gZmlsZSB1cmwnKQogICAgICAgICAgLm9wdGlvbmFsKCksCiAgICAgICAgcmVzcE1vZGVsLndpdGhQYXRoKCdyZXN1bHQuYXNzaWduc1tdLmNvbW1lbnRzW10nKS5kZXNjcmlwdGlvbigncmVzdWx0IGFzc2lnbiBjb21tZW50IGxpc3QnKQogICAgICAgICAgLnR5cGUoRGF0YVR5cGUuQVJSQVkpCiAgICAgICAgICAuYXR0cmlidXRlcyhBdHRyaWJ1dGVzLml0ZW1zKERhdGFUeXBlLlNUUklORywgbnVsbCwgbnVsbCkpCiAgICAgICAgICAub3B0aW9uYWwoKSwKICAgICAgKQogICAgICAuYnVpbGQoKSkpKQpgYGAKCltqaXRwYWNrLWJhZGdlXTogaHR0cHM6Ly9qaXRwYWNrLmlvL3Yva2VlY29uL3Jlc3Rkb2NzLW9wZW5hcGkzLnN2ZwoKW2J1aWxkLWJhZGdlXTogaHR0cHM6Ly9naXRodWIuY29tL2tlZWNvbi9yZXN0ZG9jcy1vcGVuYXBpMy9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55bWwvYmFkZ2Uuc3ZnCgpbY29kZWNvdi1iYWRnZV06IGh0dHBzOi8vY29kZWNvdi5pby9naC9rZWVjb24vcmVzdGRvY3Mtb3BlbmFwaTMvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPVRSUVo2R09WSzQKCltzb25hcmNsb3VkLWJhZGdlXTogaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9a2VlY29uX3Jlc3Rkb2NzLW9wZW5hcGkzJm1ldHJpYz1hbGVydF9zdGF0dXMKCltsaWNlbnNlLWJhZGdlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9rZWVjb24vcmVzdGRvY3Mtb3BlbmFwaTMuc3ZnCgpbZVBhZ2VzLWRlL3Jlc3Rkb2NzLWFwaS1zcGVjXTogaHR0cHM6Ly9naXRodWIuY29tL2VQYWdlcy1kZS9yZXN0ZG9jcy1hcGktc3BlYwoKW09wZW5BUEkgMy4wLjFdOiBodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMS5tZAo= readmeEtag: '"e6aa617fd3dd190f7e1106ba1e281a19d1ce6ed8"' readmeLastModified: Tue, 13 Aug 2024 01:36:57 GMT repositoryId: 462124358 description: >- Clone of ePages-de/restdocs-api-spec with class field type and constraint inference. created: '2022-02-22T03:33:26Z' updated: '2025-04-29T02:01:27Z' language: Kotlin archived: false stars: 2 watchers: 4 forks: 0 owner: keecon logo: https://avatars.githubusercontent.com/u/19371343?v=4 license: MIT repoEtag: '"cc24e6eefe74c77fbdebaa2faf248c0dbc307b048da2f8d7b89ce485c9ff8ea1"' repoLastModified: Tue, 29 Apr 2025 02:01:27 GMT foundInMaster: true category: Server id: 07a8059ee6961dc1e46442f5582d1501 - source: openapi3 tags repository: https://github.com/quantumsheep/swagger-schema-extractor v3: true repositoryMetadata: base64Readme: >- WyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L3N3YWdnZXItc2NoZW1hLWV4dHJhY3RvcildKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3N3YWdnZXItc2NoZW1hLWV4dHJhY3RvcikKCiMgU3dhZ2dlciBTY2hlbWEgRXh0cmFjdG9yCkV4dHJhY3QgT3BlbkFQSSBzY2hlbWFzIGludG8gVHlwZVNjcmlwdCB0eXBlcy4KCiMjIFVzYWdlCiMjIyBPcGVuQVBJIHYzCmBgYGJhc2gKbnB4IHN3YWdnZXItc2NoZW1hLWV4dHJhY3RvciBodHRwOi8vbG9jYWxob3N0OjMwMDAvb3BlbmFwaS5qc29uID4gdHlwZXMudHMKYGBgCgojIyMgT3BlbkFQSSB2MgpgYGBiYXNoCm5weCBzd2FnZ2VyLXNjaGVtYS1leHRyYWN0b3IgaHR0cDovL2xvY2FsaG9zdDozMDAwL3YyL3N3YWdnZXIuanNvbiA+IHR5cGVzLnRzCmBgYAo= readmeEtag: '"1f8cf473ab0422000c39c5f100696f6b25cb5ae9"' readmeLastModified: Mon, 07 Dec 2020 09:58:02 GMT repositoryId: 318500212 description: Extract Swagger (OpenAPI) schemas into TypeScript types created: '2020-12-04T11:48:15Z' updated: '2020-12-14T23:59:30Z' language: JavaScript archived: false stars: 2 watchers: 1 forks: 0 owner: quantumsheep logo: https://avatars.githubusercontent.com/u/7271496?v=4 license: MIT repoEtag: '"055d4558c53f9f74442ef4a47633ed13ae1c24f3009d3c0a26eb9740af067b73"' repoLastModified: Mon, 14 Dec 2020 23:59:30 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: ed2585a9c3054899a65e93cc6fab281c - source: openapi3 tags repository: https://github.com/jhansenbarreto/pessoa-endereco v3: true id: 67bcb878d92aad2b34e4ef36f01e30c7 repositoryMetadata: base64Readme: >- IyA6cGVuY2lsOiBEb2N1bWVudGHDp8OjbwoKPHA+CiAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU3ByaW5nJTIwQm9vdC12My4wLjEtYnJpZ2h0Z3JlZW4iLz4KICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9qYXZhLS1qZGstdjE3LjAuNC4xLW9yYW5nZSIvPgogIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL21hdmVuLS1jZW50cmFsLXY0LjAuMC1ibHVlIi8+CiAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvSlVuaXQtdjUuOS4xLXJlZCIvPgo8L3A+CiAgCj4qRXN0ZSBwcm9qZXRvIGZvaSBpbXBsZW1lbnRhZG8gbmEgZXRhcGEgZG8gdGVzdGUgdMOpY25pY28gbm8gcHJvY2Vzc28gc2VsZXRpdm8gZGEgYGBBdHRvcm5hdHVzIFByb2N1cmFkb3JpYSBEaWdpdGFsYGAgcGFyYSBhIHZhZ2EgZGUgYGBEZXNlbnZvbHZlZG9yIEJhY2sgRW5kIC0gSmF2YWBgLiBTZWd1aW5kbyBhcyBlc3BlY2lmaWNhw6fDtWVzIGRhZGFzIG5vIHRlc3RlLCBvIHByb2pldG8gw6kgdW1hIHNpbXBsZXMgQVBJIGRlc3RpbmFkYSBhbyBjYWRhc3RybyBkZSBQZXNzb2FzIGUgRW5kZXJlw6dvcywgc2VydmluZG8gYXMgZnVuY2lvbmFsaWRhZGVzIG9icmlnYXTDs3JpYXMgZXhpZ2lkYXMgbm8gdGVzdGUgZSBvdXRyYXMgaW1wbGVtZW50YWRhcyBwZWxvIGRlc2Vudm9sdmVkb3IgZGEgQVBJIHBvciBkZWNpc8OjbyBkZSBwcm9qZXRvLioKICAKTyBwcm9qZXRvIGNvbnRhIGNvbSBvIENSVUQgY29tcGxldG8gZGFzIHNlZ3VpbnRlcyBlbnRpZGFkZXM6IAoKLSBgYEVzdGFkb3NgYAotIGBgQ2lkYWRlc2BgCi0gYGBQZXNzb2FzYGAKLSBgYEVuZGVyZcOnb3NgYAoKQSBkb2N1bWVudGHDp8OjbyBjb21wbGV0YSBkbyBwcm9qZXRvIGZvaSBmZWl0YSB1dGlsaXphbmRvIGFzIGZlcnJhbWVudGFzIGRhIGJpYmxpb3RlY2EgYGBTcHJpbmcgRG9jYGAsIGRlcGVuZMOqbmNpYSBkbyBwcm9qZXRvLCBhdHJhdsOpcyBkbyBgYFN3YWdnZXIgVUlgYCBjb20gYXMgZXNwZWNpZmljYcOnw7VlcyBkbyBgYE9wZW4gQVBJIDMuMGBgLCBhZmltIGRlIHByb3ZlciBtYWlvciBlbnRlbmRpbWVudG8gcGFyYSBvcyBjb25zdW1pZG9yZXMgZGEgQVBJLiBQYXJhIGFjZXNzYXIgYSBkb2N1bWVudGHDp8OjbywgZmHDp2EgbyBjbG9uZSBkbyBwcm9qZXRvIHBhcmEgYSBzdWEgbcOhcXVpbmEsIGluaWNpZSBhIGFwbGljYcOnw6NvICoocG9kZSBkZW1vcmFyIHVtIHBvdWNvLCBwb2lzIHNlcsOhIGZlaXRvIG8gZG93bmxvYWQgZGFzIGRlcGVuZMOqbmNpYXMgbmEgcHJpbWVpcmEgdmV6KSogZSBhcMOzcyBzdWJpciBvIHNlcnZpw6dvIGFicmEgc2V1IG5hdmVnYWRvciBlIGRpZ2l0ZTogYGBodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS9pbmRleC5odG1sYGAuIFNlIHByZWZlcmlyLCBvcyB0ZXN0ZXMgcG9kZW0gc2VyIGZlaXRvcyBuYSBwcsOzcHJpYSBww6FnaW5hIGRhIGRvY3VtZW50YcOnw6NvLCBvbmRlIGNvbnTDqW0gYXMgZXhwbGljYcOnw7VlcyBkZXZpZGFzIHBhcmEgY29uc3VtaXIgY2FkYSAqZW5kcG9pbnQqLgoKIyMgOmhhbW1lcjogRnVuY2lvbmFsaWRhZGVzCgo6cGFja2FnZTogYGBFc3RhZG9zOmBgCi0gQ2FkYXN0cmEgZXN0YWRvcwotIENvbnN1bHRhIGVzdGFkb3MKLSBMaXN0YSB0b2RvcyBvcyBlc3RhZG9zIGNhZGFzdHJhZG9zCi0gTGlzdGEgdG9kYXMgYXMgY2lkYWRlcyBkZSB1bSBlc3RhZG8KLSBFZGl0YSBlc3RhZG9zCi0gRXhjbHVpIGVzdGFkb3MKLSA+IDpidWxiOiAqKkRldGFsaGVzKio6ICpOw6NvIMOpIHBlcm1pdGlkbyBlc3RhZG9zIGNvbSBkYWRvcyBkdXBsaWNhZG9zLCBub21lcyBzw7MgYWNlaXRhbSBsZXRyYXMgbWFpw7pzY3VsYXMsIG1pbsO6c2N1bGFzLCBhY2VudHVhZGFzIGUgZXNwYcOnb3MsIFVGIHPDsyBhY2VpdGEgMiBsZXRyYXMuKgoKOnBhY2thZ2U6IGBgQ2lkYWRlczpgYAotIENhZGFzdHJhIGNpZGFkZXMKLSBDb25zdWx0YSBjaWRhZGVzCi0gTGlzdGEgdG9kYXMgYXMgY2lkYWRlcyBjYWRhc3RyYWRhcwotIEVkaXRhIGNpZGFkZXMKLSBFeGNsdWkgY2lkYWRlcwotID4gOmJ1bGI6ICoqRGV0YWxoZXMqKjogKk5vbWVzIHPDsyBhY2VpdGFtIGxldHJhcyBtYWnDunNjdWxhcywgbWluw7pzY3VsYXMsIGFjZW50dWFkYXMgZSBlc3Bhw6dvcy4qCgo6cGFja2FnZTogYGBQZXNzb2FzOmBgCi0gQ2FkYXN0cmEgcGVzc29hcwotIENvbnN1bHRhIHBlc3NvYXMKLSBMaXN0YSB0b2RhcyBhcyBwZXNzb2FzIGNhZGFzdHJhZGFzCi0gRWRpdGEgcGVzc29hcwotIEV4Y2x1aSBwZXNzb2FzCi0gPiA6YnVsYjogKipEZXRhbGhlcyoqOiAqTm9tZXMgc8OzIGFjZWl0YW0gbGV0cmFzIG1hacO6c2N1bGFzLCBtaW7DunNjdWxhcywgYWNlbnR1YWRhcyBlIGVzcGHDp29zLiBEYXRhIGRlIG5hc2NpbWVudG8gbm8gcGFkcsOjbyB5eXl5LW1tLWRkKgoKOnBhY2thZ2U6IGBgRW5kZXJlw6dvczpgYAotIENhZGFzdHJhIGVuZGVyZcOnb3MgcGFyYSBQZXNzb2FzCi0gTGlzdGEgdG9kb3Mgb3MgRW5kZXJlw6dvcyBkZSB1bWEgUGVzc29hCi0gRWRpdGEgZW5kZXJlw6dvcwotIEV4Y2x1aSBlbmRlcmXDp29zCi0gUGVybWl0ZSBtYXJjYXIgdW0gZW5kZXJlw6dvIGNvbW8gcHJpbmNpcGFsCi0gPiA6YnVsYjogKipEZXRhbGhlcyoqOiAqQ0VQIGFjZWl0YSBhcGVuYXMgOCBjYXJhY3RlcmVzIG51bcOpcmljb3MuIFRvZG8gcHJpbWVpcm8gZW5kZXJlw6dvIGNhZGFzdHJhZG8gw6kgbWFyY2FkbyBjb21vIHByaW5jaXBhbCBhdXRvbWF0aWNhbWVudGUuIFNlbXByZSBxdWUgdW0gZW5kZXJlw6dvIHByaW5jaXBhbCBmb3IgZXhjbHXDrWRvLCBjYXNvIGFpbmRhIGV4aXN0YW0gb3V0cm9zLCBvIHByaW1laXJvIGRhIGxpc3RhIHNlIHRvcm5hIG8gbm92byBwcmluY2lwYWwuKgoKIyMgOmhlYXZ5X2NoZWNrX21hcms6IFTDqWNuaWNhcyBlIFRlY25vbG9naWFzIFV0aWxpemFkYXMKCi0gYGBKYXZhIDE3YGAKLSBgYFNwcmluZyBCb290IDNgYAotIGBgQXBhY2hlIE5ldEJlYW5zIElERSAxNWBgCi0gYGBCYW5jbyBkZSBEYWRvcyBlbSBNZW3Ds3JpYSAoSDIpYGAKLSBgYFBvc3RtYW4gMTAgKHBhcmEgdGVzdGVzIHByw6F0aWNvcylgYAotIGBgSlVuaXQgNSAocGFyYSB0ZXN0ZXMgcHJvZ3JhbcOhdGljb3MpYGAKLSBgYFN3YWdnZXIgVUkgLyBPcGVuIEFQSSAzIChwYXJhIGRvY3VtZW50YcOnw6NvKWBgCi0gYGBQYWRyw6NvIGRlIFByb2pldG8gRFRPIChEYXRhIFRyYW5zZmVyIE9iamVjdClgYAotIGBgTW9kZWxhZ2VtIGNvbSBEREQgKERvbWFpbi1Ecml2ZW4gRGVzaWduKWBgCgojIyA6cm90YXRpbmdfbGlnaHQ6IE9ic2VydmHDp8O1ZXMKCi0gYGBDb21lbnTDoXJpb3MgZSBKYXZhZG9jOmBgIFNlIGZvciBkZSBzZXUgaW50ZXJlc3NlIGdlcmFyIG8gSmF2YWRvYyBkbyBwcm9qZXRvLCBvcyBjb21lbnTDoXJpb3MgasOhIGZvcmFtIGVzY3JpdG9zIHBhcmEgZmFjaWxpdGFyIG8gZW50ZW5kaW1lbnRvIGRlIGFsZ3VtYXMgZGVjaXPDtWVzIHRvbWFkYXMgZHVyYW50ZSBhIGltcGxlbWVudGHDp8Ojby4KLSBgYERhZG9zIGRlIFRlc3RlOmBgIFBhcmEgZmFjaWxpdGFyIG9zIHRlc3RlcywgZm9pIGRlaXhhZG8gbm8gZGlyZXTDs3JpbyBgYHNyYy9tYWluL3Jlc291cmNlc2BgIHVtIGFycXVpdm8gYGBkYXRhLnNxbGBgLCB1dGlsaXphZG8gcGFyYSBwb3B1bGFyIG8gYmFuY28gZGUgZGFkb3Mgc2VtcHJlIHF1ZSBhIGFwbGljYcOnw6NvIGZvciBpbmljaWFkYS4gQ29uZmlyYSBvIGFycXVpdm8gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2poYW5zZW5iYXJyZXRvL3Blc3NvYS1lbmRlcmVjby9ibG9iL21hc3Rlci9zcmMvbWFpbi9yZXNvdXJjZXMvZGF0YS5zcWwiPmNsaWNhbmRvIGFxdWk8L2E+LiA6YnVsYjogKipBVEVOw4fDg086KiogKk9zIHRlc3RlcyBkZSBpbnRlZ3Jhw6fDo28gZGVzZW52b2x2aWRvcyBlbSBKVW5pdCA1IHV0aWxpemFtIGVzdGVzIGRhZG9zLioKLSBgYFRyYXRhbWVudG8gZGUgRXJyb3M6YGAgQSBBUEkgY29udGEgY29tIHRyYXRhbWVudG8gZGUgZXJyb3MgZSBmb3JuZWNlIGFvIGNvbnN1bWlkb3IgdW0gbW9kZWxvIGRlIHJlcHJlc2VudGHDp8OjbyBkZSBlcnJvcyBiYXNlYWRvIG5hIGVzcGVjaWZpY2HDp8OjbyA8YSBocmVmPSJodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNzgwNyI+UkZDIDc4MDcgKFByb2JsZW0gRGV0YWlscyBmb3IgSFRUUCBBUElzKTwvYT4sIHV0aWxpemFuZG8tYSBhcGVuYXMgY29tbyByZWZlcsOqbmNpYSwgbsOjbyBpbXBsZW1lbnRhbmRvIHRvdGFsbWVudGUgw6AgcmlzY2EuCgojIyA6Y29uc3RydWN0aW9uX3dvcmtlcjogQXV0b3IKCnwgOnRlY2hub2xvZ2lzdDogRGVzZW52b2x2ZWRvciB8Omdsb2JlX3dpdGhfbWVyaWRpYW5zOiBMaW5rcyDDmnRlaXN8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfDxwIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM3OTA2MDg/dj00IiB3aWR0aD0xMTU+PC9icj48c3ViPkpoYW5zZW4gQmFycmV0bzwvc3ViPjwvcD58PHVsPjxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vamhhbnNlbmJhcnJldG8/dGFiPXJlcG9zaXRvcmllcyI+R2l0SHViPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vYnIubGlua2VkaW4uY29tL2luL2poYW5zZW4tYy1iYXJyZXRvIj5MaW5rZWRJbjwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL2poYW5zZW5iYXJyZXRvLyI+SW5zdGFncmFtPC9hPjwvbGk+PC91bD58Cg== readmeEtag: '"0e8bc30e12e68bc7188799a4f4361705c0e13c73"' readmeLastModified: Fri, 20 Oct 2023 00:37:13 GMT repositoryId: 590518845 description: >- API implementada para teste técnico no processo seletivo da Attornatus Procuradoria Digital para a vaga de Desenvolvedor Back End - Java. created: '2023-01-18T15:49:30Z' updated: '2025-09-17T03:41:19Z' language: Java archived: false stars: 3 watchers: 1 forks: 2 owner: jhansenbarreto logo: https://avatars.githubusercontent.com/u/13790608?v=4 repoEtag: '"7c10179d376b47481527a5b84274bcd96b40e0e509d55d51c7634a050aafde56"' repoLastModified: Wed, 17 Sep 2025 03:41:19 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/walkersumida/go-api-server v3: true id: 2518a5e96dc9498c8e3e8fd17d5d20f3 repositoryMetadata: repositoryId: 657910869 description: API Server (ogen + ent + golang-migrate + postgres) created: '2023-06-24T07:25:04Z' updated: '2025-10-29T08:14:05Z' language: Go archived: false stars: 2 watchers: 1 forks: 0 owner: walkersumida logo: https://avatars.githubusercontent.com/u/12683375?v=4 license: Apache-2.0 repoEtag: '"1580df92e8f8bb571183a5c10d59503b9bf74faf26cdeaeeec286c94b1d793f9"' repoLastModified: Wed, 29 Oct 2025 08:14:05 GMT foundInMaster: true - source: openapi3 tags repository: https://github.com/mbhuman/ravagepdf v3: true id: 88064ff57f84edc19e52519d84c64009 repositoryMetadata: base64Readme: >- IyByYXZhZ2VwZGYKCkNoZWNrIGNvdmVyYWdlIDIKCiMjIEludHJvZHVjdGlvbgoKUmF2YWdlcGRmIGlzIGEgY2xpLCB3aXRoIHlvdSBjYW4gZWFzaWx5IGNvbnZlcnQgeW91ciBvcGVuYXBpLmpzb24gb3Igb3BlbmFwaS55bWwgc3BlY3MgZnJvbSBVUkwgb3IgZnJvbSBmaWxlIHRvIFBERiB3aXRoIHNpbXBsZSBjb21tYW5kLiBJdCB0YWtlcyBmZXcgc2Vjb25kcyB0byBnZW5lcmF0ZSBmaWxlLiBBbGwgbWV0aG9kcyBhcmUgYXN5bmMsIGFuZCBjYW4gYmUgdXNlZCBhc3luYyB3aXRoaW4gcHJvamVjdHMgZm9yIGFzeW5jIFBERiBnZW5lcmF0aW9uLgoKIyMgRmVhdHVyZXMKCiogVVJMIGFwaSBzcGVjIHN1cHBvcnQgKFlNTCBhbmQgSlNPTikKKiBPcGVuQVBJIGZpbGUgc3BlYyBzdXBwb3J0IChZTUwgYW5kIEpTT04pCiogVGFibGUgb2YgQ29udGVudHMKKiBIYW5kbGVyIGRlc2NyaXB0aW9uCiogUmVxdWVzdCBkZXNjcmlwdGlvbgoqIFJlc3BvbnNlIGRlc2NyaXB0aW9uCiogRXhhbXBsZXMgZm9yIFJlc3BvbnNlIGFuZCBSZXF1ZXN0CiogT3BlbkFQSTMuMCBzdXBwb3J0IHdpdGggQW55T2YsIE9uZU9mIGFuZCBvdGhlcnMKKiBFbnVtIGV4YW1wbGVzIHN1cHBvcnQKKiBEZXNjcmlwdGlvbiBmb3IgYWxsIHBhcmFtcyBpbiBib2R5CgojIyBFeGFtcGxlcyBvZiB1c2FnZQoKIyMjIEluc3RhbGxhdGlvbgoKYGBgY29uc29sZQpucG0gaSAtZyByYXZhZ2VwZGYKYGBgCgojIyMgRXhhbXBsZSB3aXRoIFVSTAoKYGBgY29uc29sZQpyYXZhZ2VwZGYgLXMgaHR0cHM6Ly9hcHAuc3dhZ2dlcmh1Yi5jb20vYXBpcHJveHkvcmVnaXN0cnkvRGlyZWN0X1dpbmVzL0NhcnRBUElTdWl0ZS8xLjcuMFw/cmVzb2x2ZWRcPXRydWVcJmZsYXR0ZW5cPXRydWVcJnByZXR0eVw9dHJ1ZSAtbyBwZGZEb2NzLnBkZgpgYGAKCiMjIyBFeGFtcGxlIHdpdGggZmlsZQoKIyMjIyBKU09OCgpgYGBjb25zb2xlCnJhdmFnZXBkZiAtcyBvcGVuYXBpLmpzb24gLW8gcGRmRG9jcy5wZGYKYGBgCgojIyMjIFlNTCAKCmBgYGNvbnNvbGUKCnJhdmFnZXBkZiAtcyBvcGVuYXBpLnltbCAtbyBwZGZEb2NzLnBkZgpgYGAKCiMjIFBERiBleGFtcGxlcwoKIyMjIEluZm8KCiFbXShodHRwczovL2dpdGh1Yi5jb20vTUJIdW1hbi9yYXZhZ2VwZGYvYmxvYi9tYWluL2ltYWdlcy9pbmZvLnBuZykKCiMjIyBJbmRleAoKIVtdKGh0dHBzOi8vZ2l0aHViLmNvbS9NQkh1bWFuL3JhdmFnZXBkZi9ibG9iL21haW4vaW1hZ2VzL2luZGV4LnBuZykKCiMjIyBQYXRocyBIZWFkZXIKCiFbXShodHRwczovL2dpdGh1Yi5jb20vTUJIdW1hbi9yYXZhZ2VwZGYvYmxvYi9tYWluL2ltYWdlcy9wYXRoc19oZWFkZXIucG5nKQoKIyMjIFJlc3BvbnNlIERlc2NyaXB0aW9uCgohW10oaHR0cHM6Ly9naXRodWIuY29tL01CSHVtYW4vcmF2YWdlcGRmL2Jsb2IvbWFpbi9pbWFnZXMvcmVzcG9uc2VfZGVzY3JpcHRpb24ucG5nKQoKIyMjIEV4YW1wbGUKCiFbXShodHRwczovL2dpdGh1Yi5jb20vTUJIdW1hbi9yYXZhZ2VwZGYvYmxvYi9tYWluL2ltYWdlcy9leGFtcGxlLnBuZykKCiMjIyBBUEkgTGlzdAoKIVtdKGh0dHBzOi8vZ2l0aHViLmNvbS9NQkh1bWFuL3JhdmFnZXBkZi9ibG9iL21haW4vaW1hZ2VzL2FwaV9saXN0LnBuZykKCiMjIFByb2dyYW0gRGVzaWduCgohW10oLi9pbWFnZXMvcmF2YWdlLnN2Zyk= readmeEtag: '"6b6aebc2c215f16481b330fc211b83791ef95f44"' readmeLastModified: Fri, 23 Jun 2023 11:46:34 GMT repositoryId: 628531125 description: PDF generation from OpenAPI / Swagger Spec Resources URL or JSON/YML file created: '2023-04-16T08:35:08Z' updated: '2025-01-04T12:37:43Z' language: TypeScript archived: false stars: 2 watchers: 1 forks: 1 owner: MBHuman logo: https://avatars.githubusercontent.com/u/44523394?v=4 license: Apache-2.0 repoEtag: '"abdf43e5c0bfa4d0f096b6ce6a0920fc8b3b05ac97d0e85eb4a64940adbb8871"' repoLastModified: Sat, 04 Jan 2025 12:37:43 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/kumuluz/kumuluzee-openapi v3: true repositoryMetadata: base64Readme: >- IyBLdW11bHV6RUUgT3BlbkFQSQpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdHJhdmlzL2t1bXVsdXova3VtdWx1emVlLW9wZW5hcGkvbWFzdGVyLnN2Zz9zdHlsZT1mbGF0KV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL2t1bXVsdXova3VtdWx1emVlLW9wZW5hcGkpCgo+IEt1bXVsdXpFRSBPcGVuQVBJIHByb2plY3QgcHJvdmlkZXMgcG93ZXJmdWwgdG9vbHMgdG8gaW5jb3Jwb3JhdGUgYW5kIHZpc3VhbGl6ZSB0aGUgT3BlbkFQSSAzIHNwZWNpZmljYXRpb24gdG8geW91ciBtaWNyb3NlcnZpY2UuCgpLdW11bHV6RUUgT3BlbkFQSSBwcm9qZWN0IGFsbG93cyB5b3UgdG8gZG9jdW1lbnQgbWljcm9zZXJ2aWNlIEFQSXMgdXNpbmcgT3BlbkFQSSB2MyBjb21wbGlhbnQgYW5ub3RhdGlvbnMuIFByb2plY3Qgd2lsbCBhdXRvbWF0aWNhbGx5IGhvb2stdXAgc2VydmxldCB0aGF0IHdpbGwgCnNlcnZlIHlvdXIgQVBJIHNwZWNpZmljYXRpb25zIG9uIGVuZHBvaW50IGBgYC9hcGktc3BlY3MvPGpheC1ycyBhcHBsaWNhdGlvbi1iYXNlLXBhdGg+L29wZW5hcGkuW2pzb258eWFtbF1gYGAuIEZ1cnRoZXJtb3JlLCBwcm9qZWN0IGFsbG93cyB5b3UgdG8gaW50ZWdyYXRlIFN3YWdnZXItVUkgaW50byB5b3VyCm1pY3Jvc2VydmljZSB0aGF0IHdpbGwgdmlzdWFsaXplIEFQSXMgZG9jdW1lbnRhdGlvbiBhbmQgYWxsb3cgeW91IHRvIGludGVyYWN0IHdpdGggeW91ciBBUEkgcmVzb3VyY2VzLgogCk1vcmUgZGV0YWlsczogW09wZW5BUEkgdjMgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQpLgoKIyMgVXNhZ2UKCllvdSBjYW4gZW5hYmxlIEt1bXVsdXpFRSBPcGVuQVBJIHN1cHBvcnQgYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgZGVwZW5kZW5jeToKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+Y29tLmt1bXVsdXouZWUub3BlbmFwaTwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPmt1bXVsdXplZS1vcGVuYXBpPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+JHtrdW11bHV6ZWUtb3BlbmFwaS52ZXJzaW9ufTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKCiMjIE9wZW5BUEkgY29uZmlndXJhdGlvbgoKV2hlbiBrdW11bHV6ZWUtb3BlbmFwaSBkZXBlbmRlbmN5IGlzIGluY2x1ZGVkIGluIHRoZSBwcm9qZWN0LCB5b3UgY2FuIHN0YXJ0IGRvY3VtZW50aW5nIHlvdXIgUkVTVCBBUEkgdXNpbmcgW1N3YWdnZXItQ29yZSBBbm5vdGF0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS93aWtpL0Fubm90YXRpb25zLTIuWCkuCgojIyMgRG9jdW1lbnRpbmcgYXBwbGljYXRpb24gY2xhc3MKYGBgamF2YQpAU2VjdXJpdHlTY2hlbWUobmFtZSA9ICJvcGVuaWQtY29ubmVjdCIsIHR5cGUgPSBTZWN1cml0eVNjaGVtZVR5cGUuT1BFTklEQ09OTkVDVCwgCiAgICAgICAgICAgICAgICBvcGVuSWRDb25uZWN0VXJsID0gImh0dHA6Ly9hdXRoLXNlcnZlci11cmwvLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb24iKQpAT3BlbkFQSURlZmluaXRpb24oaW5mbyA9IEBJbmZvKHRpdGxlID0gIlJlc3QgQVBJIiwgdmVyc2lvbiA9ICJ2MSIsIGNvbnRhY3QgPSBAQ29udGFjdCgpLCBsaWNlbnNlID0gQExpY2Vuc2UoKSwgZGVzY3JpcHRpb24gPSAiSmF2YVNJIEFQSSBmb3IgbWFuYWdpbmcgY29uZmVyZW5jZS4iKSwgc2VjdXJpdHkgPSBAU2VjdXJpdHlSZXF1aXJlbWVudChuYW1lID0gIm9wZW5pZC1jb25uZWN0IiksIHNlcnZlcnMgPSBAU2VydmVyKHVybCA9Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC92MSIpKQpAQXBwbGljYXRpb25QYXRoKCJ2MSIpCnB1YmxpYyBjbGFzcyBKYXZhU2lBcHBsaWNhdGlvbiBleHRlbmRzIEFwcGxpY2F0aW9uIHsuLi59CmBgYAoKIyMjIERvY3VtZW50aW5nIHJlc291cmNlIGNsYXNzIGFuZCBvcGVyYXRpb25zCmBgYGphdmEKQFBhdGgoInNlc3Npb25zIikKQENvbnN1bWVzKE1lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OKQpAUHJvZHVjZXMoTWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT04pCnB1YmxpYyBjbGFzcyBTZXNzaW9uc1Jlc291cmNlIHsKCiAgICBAT3BlcmF0aW9uKGRlc2NyaXB0aW9uID0gIlJldHVybnMgbGlzdCBvZiBzZXNzaW9ucy4iLCBzdW1tYXJ5ID0gIlNlc3Npb25zIGxpc3QiLCB0YWdzID0gInNlc3Npb25zIiwgcmVzcG9uc2VzID0gewogICAgICAgICAgICBAQXBpUmVzcG9uc2UocmVzcG9uc2VDb2RlID0gIjIwMCIsCiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAiTGlzdCBvZiBzZXNzaW9ucyIsCiAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IEBDb250ZW50KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkgPSBAQXJyYXlTY2hlbWEoc2NoZW1hID0gQFNjaGVtYShpbXBsZW1lbnRhdGlvbiA9IFNlc3Npb24uY2xhc3MpKSksCiAgICAgICAgICAgICAgICAgICAgaGVhZGVycyA9IHtASGVhZGVyKG5hbWUgPSAiWC1Ub3RhbC1Db3VudCIsIHNjaGVtYSA9IEBTY2hlbWEodHlwZSA9ICJpbnRlZ2VyIikpfQogICAgICAgICAgICAgICAgICAgICl9KQogICAgQFNlY3VyaXR5UmVxdWlyZW1lbnQobmFtZSA9ICJvcGVuaWQtY29ubmVjdCIpCiAgICBAR0VUCiAgICBwdWJsaWMgUmVzcG9uc2UgZ2V0U2Vzc2lvbnMoKSB7Li4ufSAKICAgIC4uLgp9CmBgYAoKIyMgQWNjZXNzaW5nIEFQSSBzcGVjaWZpY2F0aW9uCgpCdWlsZCBhbmQgcnVuIHByb2plY3QgdXNpbmc6CgpgYGBiYXNoCm12biBjbGVhbiBwYWNrYWdlCmphdmEgLWphciB0YXJnZXQvJHtwcm9qZWN0LmJ1aWxkLmZpbmFsTmFtZX0uamFyCmBgYAoKQWZ0ZXIgc3RhcnR1cCBBUEkgc3BlY2lmaWNhdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBhdDoKCioqaHR0cDovLzwtaG9zdG5hbWUtOjwtcG9ydC0+L2FwaS1zcGVjcy88LWFwcGxpY2F0aW9uLWJhc2UtcGF0aC0+L29wZW5hcGkuW2pzb24seWFtbF0qKgoKRXhhbXBsZToKCmh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGktc3BlY3MvdjEvb3BlbmFwaS5qc29uCgpgL2FwaS1zcGVjc2AgbWFwcGluZyBjYW4gYmUgcmVuYW1lZCBieSBzZXR0aW5nIHRoZSBjb25maWd1cmF0aW9uIHByb3BlcnR5IGBrdW11bHV6ZWUub3BlbmFwaS5zZXJ2bGV0Lm1hcHBpbmdgLCBGb3IKZXhhbXBsZSB0byBtb3ZlIHRoZSBhYm92ZSBleGFtcGxlIHRvIHVybCBodHRwOi8vbG9jYWxob3N0OjgwODAvb3BlbmFwaS1zcGVjcy92MS9vcGVuYXBpLmpzb24gdXNlIHRoZSBmb2xsb3dpbmcKY29uZmlndXJhdGlvbjoKCmBgYHltbAprdW11bHV6ZWU6CiAgb3BlbmFwaToKICAgIHNlcnZsZXQ6CiAgICAgIG1hcHBpbmc6IG9wZW5hcGktc3BlY3MKYGBgCgpTZXJ2aW5nIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyBwcm9wZXJ0eSAqKmt1bXVsdXplZS5vcGVuYXBpLnNwZWMuZW5hYmxlZCoqIHRvIGZhbHNlLiBCeSBkZWZhdWx0IHNlcnZpbmcgQVBJIHNwZWMgaXMgZW5hYmxlZC4KCiMjIEFkZGluZyBPcGVuQVBJIFVJCgpUbyBzZXJ2ZSBBUEkgc3BlY2lmaWNhdGlvbiBpbiB2aXN1YWwgZm9ybSBhbmQgdG8gYWxsb3cgQVBJIGNvbnN1bWVycyB0byBpbnRlcmFjdCB3aXRoIEFQSSByZXNvdXJjZXMgeW91IGNhbiBhZGQgT3BlbkFQSSBVSSBieSBpbmNsdWRpbmcgZGVwZW5kZW5jeToKICAKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+Y29tLmt1bXVsdXouZWUub3BlbmFwaTwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPmt1bXVsdXplZS1vcGVuYXBpLXVpPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+JHtrdW11bHV6ZWUtb3BlbmFwaS52ZXJzaW9ufTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKCkRlcGVuZGVuY3kgd2lsbCBpbmNsdWRlIE9wZW5BUEkgVUkgYXJ0aWZhY3RzLCBpbiBjYXNlIHlvdSB3YW50IHRvIHRlbXBvcmFyaWx5IGRpc2FibGUgT3BlbkFQSSBVSSB5b3UgY2FuIGRvIHNvIGJ5IHNldHRpbmcgY29uZmlndXJhdGlvbiBwcm9wZXJ0eToKIApgYGB5YW1sCmt1bXVsdXplZToKICBvcGVuYXBpOgogICAgdWk6CiAgICAgIGVuYWJsZWQ6IGZhbHNlCmBgYAoKQWZ0ZXIgc3RhcnR1cCBPcGVuQVBJIFVJIGlzIGF2YWlsYWJsZSBhdDogaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaS1zcGVjcy91aS4KCklmIHlvdSB3YW50IHRvIGRpc2FibGUgT3BlbkFQSSBEZXBlbmRlbmN5IHlvdSBjYW4gc2V0IHRoZSBmb2xsb3dpbmcgcHJvcGVydHk6CiAKYGBgeWFtbAprdW11bHV6ZWU6CiAgb3BlbmFwaToKICAgIGVuYWJsZWQ6IGZhbHNlCmBgYAoKIyMgQ2hhbmdlbG9nCgpSZWNlbnQgY2hhbmdlcyBjYW4gYmUgdmlld2VkIG9uIEdpdGh1YiBvbiB0aGUgW1JlbGVhc2VzIFBhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9rdW11bHV6L2t1bXVsdXplZS1vcGVuYXBpL3JlbGVhc2VzKQoKCiMjIENvbnRyaWJ1dGUKClNlZSB0aGUgW2NvbnRyaWJ1dGluZyBkb2NzXShodHRwczovL2dpdGh1Yi5jb20va3VtdWx1ei9rdW11bHV6ZWUtb3BlbmFwaS9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQpCgpXaGVuIHN1Ym1pdHRpbmcgYW4gaXNzdWUsIHBsZWFzZSBmb2xsb3cgdGhlIApbZ3VpZGVsaW5lc10oaHR0cHM6Ly9naXRodWIuY29tL2t1bXVsdXova3VtdWx1emVlLW9wZW5hcGkvYmxvYi9tYXN0ZXIvQ09OVFJJQlVUSU5HLm1kI2J1Z3MpLgoKV2hlbiBzdWJtaXR0aW5nIGEgYnVnZml4LCB3cml0ZSBhIHRlc3QgdGhhdCBleHBvc2VzIHRoZSBidWcgYW5kIGZhaWxzIGJlZm9yZSBhcHBseWluZyB5b3VyIGZpeC4gU3VibWl0IHRoZSB0ZXN0IAphbG9uZ3NpZGUgdGhlIGZpeC4KCldoZW4gc3VibWl0dGluZyBhIG5ldyBmZWF0dXJlLCBhZGQgdGVzdHMgdGhhdCBjb3ZlciB0aGUgZmVhdHVyZS4KCiMjIExpY2Vuc2UKCk1JVAo= readmeEtag: '"44eaa54e982e4c111f43373f67db6f2eae16a394"' readmeLastModified: Thu, 15 Oct 2020 09:42:30 GMT repositoryId: 108509681 description: >- KumuluzEE OpenAPI extension provides powerful tools to incorporate and visualize the OpenAPI 3 specification to your microservice. created: '2017-10-27T06:46:32Z' updated: '2020-10-15T09:42:33Z' language: Java archived: false stars: 2 watchers: 14 forks: 0 owner: kumuluz logo: https://avatars.githubusercontent.com/u/6859905?v=4 license: NOASSERTION repoEtag: '"3faaed07d4911c9d6f4cc57966da247665dd545e43ade14be08ffe2d593ca2ce"' repoLastModified: Thu, 15 Oct 2020 09:42:33 GMT foundInMaster: true category: Parsers id: 35734194256a144e4a14160acdce2f5a - source: openapi3 tags repository: https://github.com/quetz-al/quetzal-client v3: true repositoryMetadata: base64Readme: >- Li4gTm90ZSB0aGF0IHRoaXMgZmlsZSBpcyBpbmNsdWRlZCBvbiBTcGhpbnggYXMgd2VsbC4KClF1ZXR6YWwgUHl0aG9uIGNsaWVudAo9PT09PT09PT09PT09PT09PT09PT0KClB5dGhvbiBjbGllbnQgZm9yIHRoZSBRdWV0emFsIEFQSS4KCklmIHlvdSBhcmUgbm90IGZhbWlsaWFyIHdpdGggdGhlIFF1ZXR6YWwgQVBJLCByZWFkIGl0cwpgZG9jdW1lbnRhdGlvbiA8aHR0cHM6Ly9xdWV0emFsLWFwaS5yZWFkdGhlZG9jcy5vcmc+YF8gZmlyc3QuIFRoaXMgUHl0aG9uCnBhY2thZ2UgcHJvdmlkZXMgYSBjb21tYW5kLWxpbmUgYW5kIGhlbHBlciBmdW5jdGlvbnMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUKUXVldHphbCBBUEkuCgpOb3RlIHRoYXQgdGhpcyBwYWNrYWdlIGRlcGVuZHMgb24gYW4gYXV0by1nZW5lcmF0ZWQgcGFja2FnZQpgcXVldHphbC5vcGVuYXBpX2NsaWVudCA8aHR0cHM6Ly9naXRodWIuY29tL3F1ZXR6LWFsL3F1ZXR6YWwtb3BlbmFwaS1jbGllbnQ+YF8sCndoaWNoIGlzIGFsc28gYSBjbGllbnQgdG8gdGhpcyBBUEkuIFlvdSBjYW4gdXNlIHRoZSBsYXR0ZXIgYXMgYSBwdXJlIFB5dGhvbgpjbGllbnQsIGJ1dCAqcXVldHphbC5jbGllbnQqIHByb3ZpZGVzIHNvbWUgaGVscGVycyBhbmQgc21hbGwgZml4ZXMuCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpZb3UgY2FuIGluc3RhbGwgKnF1ZXR6YWwtY2xpZW50Kiwgd2l0aCBgYHBpcGBgOgoKLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKCiAgICBwaXAgaW5zdGFsbCBxdWV0emFsLWNsaWVudAoKQWx0ZXJuYXRpdmVseSwgYWRkIHRoaXMgbGluZSB0byB5b3VyIGBgcmVxdWlyZW1lbnRzLnR4dGBgOgoKLi4gY29kZS1ibG9jazo6IG5vbmUKCiAgICBxdWV0emFsLWNsaWVudAoKYW5kIHRoZW4gZG8gYGBwaXAgaW5zdGFsbCAtciByZXF1aXJlbWVudHMudHh0YGAuCgpJZiB5b3UgYXJlIHVzaW5nIGNvbmRhLCBhZGQgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgdG8geW91ciBgYGVudmlyb25tZW50LnlhbWxgYDoKCi4uIGNvZGUtYmxvY2s6OiB5YW1sCgogICAgLi4uCiAgICBkZXBlbmRlbmNpZXM6CiAgICAgIC0gcGlwCiAgICAgIC0gcGlwOgogICAgICAgIC0gcXVldHphbC1jbGllbnQKCmFuZCBjcmVhdGUgb3IgdXBkYXRlIHlvdXIgZW52aXJvbm1lbnQgd2l0aApgYGNvbmRhIGVudiBjcmVhdGUgLWYgZW52aXJvbm1lbnQueWFtbGBgIG9yCmBgY29uZGEgZW52IHVwZGF0ZSAtZiBlbnZpcm9ubWVudC55YW1sYGAsIHJlc3BlY3RpdmVseS4KCgpHZXR0aW5nIHN0YXJ0ZWQKLS0tLS0tLS0tLS0tLS0tCgpJbiBvcmRlciB0byB1c2UgKnF1ZXR6YWwuY2xpZW50KiwgeW91IG5lZWQgdG8ga25vdyB0aGUgVVJMIG9mIHRoZSBBUEkgc2VydmVyLAp5b3VyIHVzZXJuYW1lIGFuZCBwYXNzd29yZC4gWW91IGNhbiBzZXQgdGhlc2Ugb24gdGhlIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UsCnRocm91Z2ggYSBjb25maWd1cmF0aW9uIG9iamVjdCwgb3IgdXNpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzOgoKLi4gbGlzdC10YWJsZTo6IEVudmlyb25tZW50IHZhcmlhYmxlcyBjb25zaWRlcmVkIGJ5IGBxdWV0emFsLWNsaWVudGAuCiAgIDpoZWFkZXItcm93czogMQoKICAgKiAtIFZhcmlhYmxlCiAgICAgLSBEZXNjcmlwdGlvbgogICAgIC0gRGVmYXVsdCBpZiBub3Qgc2V0CiAgICogLSBgYFFVRVRaQUxfVVJMYGAKICAgICAtIENvbXBsZXRlIFVSTCBvZiB0aGUgUXVldHphbCBzZXJ2ZXIgKyBBUEkgdmVyc2lvbi4KICAgICAtIGBgJ2h0dHBzOi8vYXBpLnF1ZXR6LmFsL2FwaS92MSdgYAogICAqIC0gYGBRVUVUWkFMX1VTRVJgYAogICAgIC0gUXVldHphbCB1c2VybmFtZS4KICAgICAtIGBgJydgYAogICAqIC0gYGBRVUVUWkFMX1BBU1NXT1JEYGAKICAgICAtIFF1ZXR6YWwgcGFzc3dvcmQuCiAgICAgLSBgYCcnYGAKICAgKiAtIGBgUVVFVFpBTF9BUElfS0VZYGAKICAgICAtIFF1ZXR6YWwgQVBJIGtleS4KICAgICAtIGBgJydgYAoKCkJhc2ljIHVzYWdlCi0tLS0tLS0tLS0tCgpUaGVyZSBhcmUgdHdvIHdheXMgdGhpcyBwYWNrYWdlIGhlbHBzIHlvdTogd2l0aCBhIGNvbW1hbmQtbGluZSBpbnRlcmZhY2Ugb3IgYnkKcHJvdmlkaW5nIHNvbWUgaGVscGVyIG1vZHVsZXMgdGhhdCB5b3UgY2FuIHVzZSBpbiBQeXRob24uCgpDb21tYW5kLWxpbmUgaW50ZXJmYWNlCl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KClRoZSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIGlzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBgYHF1ZXR6YWwtY2xpZW50YGAgY29tbWFuZC4KVXNlIHRoZSBgYC0taGVscGBgIG9yIGBgLS1oZWxwLWFsbGBgIG9wdGlvbnMgdG8gZ2V0IGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YKZWFjaCBjb21tYW5kLgoKLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKCiAgICAkIHF1ZXR6YWwtY2xpZW50IC0taGVscAoKICAgIFVzYWdlOiBxdWV0emFsLWNsaWVudCBbR0xPQkFMIE9QVElPTlNdIENPTU1BTkQgW0FSR1NdLi4uCgogICAgICBDb21tYW5kLWxpbmUgdXRpbGl0eSBmb3IgdGhlIFF1ZXR6YWwgQVBJIGNsaWVudC4KCiAgICBPcHRpb25zOgogICAgICAtLXVybCBURVhUICAgICAgIFF1ZXR6YWwgVVJMLiBJZiBub3Qgc2V0LCB1c2VzIGVudmlyb25tZW50IHZhcmlhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgUVVFVFpBTF9VUkwgaWYgdGhpcyB2YXJpYWJsZSBpcyBkZWZpbmVkLiAgW2RlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9hcGkucXVldHouYWwvYXBpL3YxXQogICAgICAtLXVzZXJuYW1lIFRFWFQgIFF1ZXR6YWwgdXNlcm5hbWUuIElmIG5vdCBzZXQsIHVzZXMgZW52aXJvbm1lbnQgdmFyaWFibGUKICAgICAgICAgICAgICAgICAgICAgICBRVUVUWkFMX1VTRVIuIE9wdGlvbiBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCB0b2tlbiwKICAgICAgICAgICAgICAgICAgICAgICBhcGlfa2V5LgogICAgICAtLXBhc3N3b3JkIFRFWFQgIFF1ZXR6YWwgcGFzc3dvcmQuIElmIG5vdCBzZXQsIHVzZXMgZW52aXJvbm1lbnQgdmFyaWFibGUKICAgICAgICAgICAgICAgICAgICAgICBRVUVUWkFMX1BBU1NXT1JELiBPcHRpb24gaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggdG9rZW4sCiAgICAgICAgICAgICAgICAgICAgICAgYXBpX2tleS4KICAgICAgLS10b2tlbiBURVhUICAgICBRdWV0emFsIGJlYXJlciB0b2tlbi4gSWYgbm90IHNldCwgdXNlcyBlbnZpcm9ubWVudCB2YXJpYWJsZQogICAgICAgICAgICAgICAgICAgICAgIFFVRVRaQUxfVE9LRU4uIE9wdGlvbiBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCB1c2VybmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCwgYXBpX2tleS4KICAgICAgLS1hcGkta2V5IFRFWFQgICBRdWV0emFsIEFQSSBrZXkuIElmIG5vdCBzZXQsIHVzZXMgZW52aXJvbm1lbnQgdmFyaWFibGUKICAgICAgICAgICAgICAgICAgICAgICBRVUVUWkFMX0FQSV9LRVkgT3B0aW9uIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIHVzZXJuYW1lLAogICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkLCB0b2tlbi4KICAgICAgLS1pbnNlY3VyZSAgICAgICBEbyBub3QgdmVyaWZ5IEhUVFBTIGNlcnRpZmljYXRlcy4KICAgICAgLXYsIC0tdmVyYm9zZSAgICBWZXJib3NpdHkgbGV2ZWwuIFVzZSAtdiBmb3IgdmVyYm9zZSwgLXZ2IGZvciBldmVuIG1vcmUKICAgICAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHkKICAgICAgLS1oZWxwLWFsbCAgICAgICBTaG93IGEgZGV0YWlsZWQgaGVscCBtZXNzYWdlIHdpdGggYWxsIG9wdGlvbnMgYW5kIGV4aXQuCiAgICAgIC0taGVscCAgICAgICAgICAgU2hvdyBoZWxwIG1lc3NhZ2UgZm9yIHRoaXMgY29tbWFuZCBhbmQgZXhpdC4KICAgICAgLS12ZXJzaW9uICAgICAgICBTaG93IHRoZSB2ZXJzaW9uIGFuZCBleGl0LgoKICAgIENvbW1hbmRzOgogICAgICBhdXRoICAgICAgIEF1dGhlbnRpY2F0aW9uIG9wZXJhdGlvbnMuCiAgICAgIGZpbGUgICAgICAgRmlsZSBvcGVyYXRpb25zLgogICAgICBxdWVyeSAgICAgIFF1ZXJ5IG1ldGFkYXRhLgogICAgICB3b3Jrc3BhY2UgIFdvcmtzcGFjZSBvcGVyYXRpb25zLgoKClB5dGhvbgpeXl5eXl4KClRvIHN0YXJ0IHVzaW5nICpxdWV0emFsLmNsaWVudCogb24gUHl0aG9uIGNvZGUsIHVzZSB0aGUgZm9sbG93aW5nIHRlbXBsYXRlOgoKLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgIGZyb20gcXVldHphbC5jbGllbnQgaW1wb3J0IENsaWVudCwgQ29uZmlndXJhdGlvbiwgUXVldHphbEFQSUV4Y2VwdGlvbgogICAgZnJvbSBxdWV0emFsLmNsaWVudCBpbXBvcnQgaGVscGVycwoKICAgIGNvbmZpZyA9IENvbmZpZ3VyYXRpb24oKQogICAgIyAuLi4gY2hhbmdlIGNvbmZpZyBhcyBuZWVkZWQgb3IgZmFsbGJhY2sgdG8gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyAuLi4KICAgICMgY29uZmlnLnZlcmlmeV9zc2wgPSBGYWxzZSAgIyBVc2UgdGhpcyBmb3Igc2VydmVycyB3aXRob3V0IGNlcnRpZmljYXRlcyAoZGV2IHNlcnZlcnMpCiAgICBjbGllbnQgPSBDbGllbnQoY29uZmlnKQoKICAgICMgQSBzaW1wbGUgdGVzdCB1c2luZyB0aGUgaGVscGVycyB0byB2ZXJpZnkgdGhhdCB3ZSBjYW4gbG9naW4gdG8gUXVldHphbAogICAgdHJ5OgogICAgICAgIGhlbHBlcnMuYXV0aC5sb2dpbihjbGllbnQpCiAgICAgICAgcHJpbnQoJ0xvZ2dlZCBpbiBzdWNjZXNzZnVsbHkhJykKICAgIGV4Y2VwdCBRdWV0emFsQVBJRXhjZXB0aW9uIGFzIGV4OgogICAgICAgIHByaW50KGYnT3BlcmF0aW9uIGZhaWxlZC4ge2V4LnRpdGxlfSAtIHtleC5kZXRhaWx9JykKCgpEb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0KClRoZXJlIGFyZSBtb3JlIGRldGFpbHMgb24gKnF1ZXR6YWwuY2xpZW50KiBvbiBpdHMgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiBhdApgcmVhZHRoZWRvY3MgPGh0dHBzOi8vcXVldHphbC1jbGllbnQucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0Lz5gXy4KCkNvbnRyaWJ1dGUKLS0tLS0tLS0tLQoKLSBJc3N1ZSBUcmFja2VyOiBodHRwczovL2dpdGh1Yi5jb20vcXVldHotYWwvcXVldHphbC1jbGllbnQvaXNzdWVzCi0gU291cmNlIENvZGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9xdWV0ei1hbC9xdWV0emFsLWNsaWVudAoKTm90ZSB0byBwYWNrYWdlIG1haW50YWluZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRvIGJ1aWxkIGFuZCBzZW5kIHRoaXMgcGFja2FnZSB0byBQeVBJOgoKLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKCiAgICAjIENsZWFuIHByZXZpb3VzIGJ1aWxkcyEKICAgIHJtIC1yZiBkaXN0LwogICAgIyBCdWlsZAogICAgcHl0aG9uIHNldHVwLnB5IHNkaXN0IGJkaXN0X3doZWVsCgogICAgIyBJbnN0YWxsIGhlbHBlciBtb2R1bGUgZm9yIHVwbG9hZGluZyB0byBQeVBJCiAgICBwaXAgaW5zdGFsbCB0d2luZQogICAgIyBGaXJzdCwgc2VuZCB0byB0ZXN0IFB5UEkKICAgIHR3aW5lIHVwbG9hZCAtLXJlcG9zaXRvcnktdXJsIGh0dHBzOi8vdGVzdC5weXBpLm9yZy9sZWdhY3kvIGRpc3QvKgogICAgIyBJZiB0aGF0IHdvcmtzIG9rLCB0aGVuIHNlbmQgdG8gUHlQSQogICAgcHl0aG9uIC1tIHR3aW5lIHVwbG9hZCBkaXN0LyoKCkxpY2Vuc2UKLS0tLS0tLQoKVGhlIHByb2plY3QgaXMgdW5kZXIgdGhlIEJTRCAzLWNsYXVzZSBsaWNlbnNlLgo= readmeEtag: '"ea03b32059fbdfbf802a1fef988008f5a7ba6373"' readmeLastModified: Fri, 05 Jun 2020 13:55:43 GMT repositoryId: 170111505 description: Python client for the Quetzal API created: '2019-02-11T10:41:13Z' updated: '2020-06-05T13:57:52Z' language: Python archived: false stars: 2 watchers: 0 forks: 1 owner: quetz-al logo: https://avatars.githubusercontent.com/u/47522179?v=4 license: BSD-3-Clause repoEtag: '"6399e3323b9d6986d2c3c9a0e1b79b75cadf8ff32a60512b668433108b05dfe0"' repoLastModified: Fri, 05 Jun 2020 13:57:52 GMT foundInMaster: true category: Server Implementations id: 2607f54b49a6ccbc03114f8a47b48a6c - source: openapi3 tags repository: https://github.com/c-classen/oak-dsl v3: true repositoryMetadata: base64Readme: >- IyDwn4yzIE9wZW5BUEkgS290bGluIERvbWFpbiBTcGVjaWZpYyBMYW5ndWFnZQoKIVtNYXZlbiBDZW50cmFsIEJhZGdlXShodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLWNlbnRyYWwvdi9pby5naXRodWIuYy1jbGFzc2VuLm9ha2RzbC9vYWtkc2wpCgpUaGlzIEtvdGxpbiBsaWJyYXJ5IG9mZmVycyBhIGNvbmNpc2Ugd2F5IHRvIGRlZmluZSB5b3VyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4KRm9yIGV4YW1wbGUsIGl0IGlzIGFibGUgdG8gdHVybiB0aGlzIGNvZGUgd2hpY2ggZGVmaW5lcyBzb21lIENSVUQgZW5kcG9pbnRzIHRvIG1hbmFnZSBhIHRvZG8gbGlzdAoKYGBga290bGluCkBmaWxlOkNvbXBpbGVyT3B0aW9ucygiLWp2bS10YXJnZXQiLCAiMS44IikKQGZpbGU6RGVwZW5kc09uKCJpby5naXRodWIuYy1jbGFzc2VuLm9ha2RzbDpvYWtkc2w6MC4xLjMiKQoKaW1wb3J0IGlvLmdpdGh1Yi5jY2xhc3Nlbi5vYWtkc2wuYnVpbGRlci5PcGVuQXBpQnVpbGRlcgoKT3BlbkFwaUJ1aWxkZXIuZmlsZSgiYXBpLnlhbWwiKSB7CiAgICBpbmZvIHsKICAgICAgICB0aXRsZSA9ICJUZXN0IGFwaSIKICAgICAgICB2ZXJzaW9uID0gIjEuMC4wIgogICAgfQoKICAgIHBvc3Q8VG9kbz4oImNyZWF0ZVRvZG8iKSAvICJ0b2RvcyIgZGVmIHsKICAgICAgICByZXF1ZXN0Qm9keTxUb2RvUGF5bG9hZD4oKQogICAgfQogICAgZ2V0PExpc3Q8VG9kbz4+KCJyZWFkVG9kb3MiKSAvICJ0b2RvcyIgZGVmIHt9CiAgICBnZXQ8VG9kbz4oInJlYWRUb2RvIikgLyAidG9kb3MiIC8gbG9uZ1BhcmFtKCJ0b2RvSWQiKSBkZWYge30KICAgIHB1dDxUb2RvPigidXBkYXRlVG9kbyIpIC8gInRvZG9zIiAvIGxvbmdQYXJhbSgidG9kb0lkIikgZGVmIHt9CiAgICBwYXRjaDxUb2RvPigibWFya0FzRG9uZSIpIC8gInRvZG9zIiAvIGxvbmdQYXJhbSgidG9kb0lkIikgZGVmIHsKICAgICAgICBib29sUGFyYW0oImRvbmUiKQogICAgfQogICAgZGVsZXRlKCJkZWxldGVUb2RvIikgLyAidG9kb3MiIC8gbG9uZ1BhcmFtKCJ0b2RvSWQiKSBkZWYge30KfQoKaW50ZXJmYWNlIFRvZG8gewogICAgdmFsIGlkOiBMb25nCiAgICB2YWwgdGV4dDogU3RyaW5nCiAgICB2YWwgZG9uZTogQm9vbGVhbgp9CgppbnRlcmZhY2UgVG9kb1BheWxvYWQgewogICAgdmFsIHRleHQ6IFN0cmluZwp9CmBgYAoKaW50byB0aGUgZm9sbG93aW5nIE9wZW5BUEkgU3BlYzoKCmBgYHlhbWwKIyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IG9hay1kc2wgKGh0dHBzOi8vZ2l0aHViLmNvbS9jLWNsYXNzZW4vb2FrLWRzbCkKb3BlbmFwaTogMy4wLjMKaW5mbzoKICB2ZXJzaW9uOiAiMS4wLjAiCiAgdGl0bGU6ICJUZXN0IGFwaSIKcGF0aHM6CiAgIi90b2RvcyI6CiAgICBnZXQ6CiAgICAgIG9wZXJhdGlvbklkOiAicmVhZFRvZG9zIgogICAgICByZXNwb25zZXM6CiAgICAgICAgIjIwMCI6CiAgICAgICAgICBkZXNjcmlwdGlvbjogIlN1Y2Nlc3MiCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogImFycmF5IgogICAgICAgICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgICAgICAgICIkcmVmIjogIiMvY29tcG9uZW50cy9zY2hlbWFzL1RvZG8iCiAgICBwb3N0OgogICAgICBvcGVyYXRpb25JZDogImNyZWF0ZVRvZG8iCiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgY29udGVudDoKICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIjoKICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICIkcmVmIjogIiMvY29tcG9uZW50cy9zY2hlbWFzL1RvZG9QYXlsb2FkIgogICAgICByZXNwb25zZXM6CiAgICAgICAgIjIwMCI6CiAgICAgICAgICBkZXNjcmlwdGlvbjogIlN1Y2Nlc3MiCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvVG9kbyIKICAiL3RvZG9zL3t0b2RvSWR9IjoKICAgIGRlbGV0ZToKICAgICAgb3BlcmF0aW9uSWQ6ICJkZWxldGVUb2RvIgogICAgICBwYXJhbWV0ZXJzOgogICAgICAgIC0gaW46IHBhdGgKICAgICAgICAgIG5hbWU6ICJ0b2RvSWQiCiAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICAgIGZvcm1hdDogImludDY0IgogICAgICByZXNwb25zZXM6CiAgICAgICAgIjIwMCI6CiAgICAgICAgICBkZXNjcmlwdGlvbjogIlN1Y2Nlc3MiCiAgICBnZXQ6CiAgICAgIG9wZXJhdGlvbklkOiAicmVhZFRvZG8iCiAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgLSBpbjogcGF0aAogICAgICAgICAgbmFtZTogInRvZG9JZCIKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgICAgZm9ybWF0OiAiaW50NjQiCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAiMjAwIjoKICAgICAgICAgIGRlc2NyaXB0aW9uOiAiU3VjY2VzcyIKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9Ub2RvIgogICAgcGF0Y2g6CiAgICAgIG9wZXJhdGlvbklkOiAibWFya0FzRG9uZSIKICAgICAgcGFyYW1ldGVyczoKICAgICAgICAtIGluOiBwYXRoCiAgICAgICAgICBuYW1lOiAidG9kb0lkIgogICAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgICBmb3JtYXQ6ICJpbnQ2NCIKICAgICAgICAtIGluOiBxdWVyeQogICAgICAgICAgbmFtZTogImRvbmUiCiAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICB0eXBlOiBib29sZWFuCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAiMjAwIjoKICAgICAgICAgIGRlc2NyaXB0aW9uOiAiU3VjY2VzcyIKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9Ub2RvIgogICAgcHV0OgogICAgICBvcGVyYXRpb25JZDogInVwZGF0ZVRvZG8iCiAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgLSBpbjogcGF0aAogICAgICAgICAgbmFtZTogInRvZG9JZCIKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgICAgZm9ybWF0OiAiaW50NjQiCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAiMjAwIjoKICAgICAgICAgIGRlc2NyaXB0aW9uOiAiU3VjY2VzcyIKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9Ub2RvIgpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBUb2RvOgogICAgICB0eXBlOiAib2JqZWN0IgogICAgICByZXF1aXJlZDogWyAiZG9uZSIsICJpZCIsICJ0ZXh0IiBdCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgZG9uZToKICAgICAgICAgIHR5cGU6IGJvb2xlYW4KICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIGZvcm1hdDogImludDY0IgogICAgICAgIHRleHQ6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgIFRvZG9QYXlsb2FkOgogICAgICB0eXBlOiAib2JqZWN0IgogICAgICByZXF1aXJlZDogWyAidGV4dCIgXQogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIHRleHQ6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKYGBgCgpBbHRob3VnaCB0aGUgcmVzdWx0aW5nIHlhbWwgY291bGQgYmUgb3B0aW1pemVkIGJ5IGhhbmQgdG8gYmVjb21lIHNob3J0ZXIgKGUuZy4sIGJ5IGRlZmluaW5nIHRoZSBgdG9kb0lkYCBwYXJhbWV0ZXIgaW4gdGhlIGNvbXBvbmVudHMgc2VjdGlvbiksIGl0IHdvdWxkIHN0aWxsIG5vdCBiZSBuZWFybHkgYXMgc2hvcnQgYXMgdGhlIG9hay1kc2wgdmVyc2lvbi4KVG8gYWNoaWV2ZSB0aGlzIGJyZXZpdHksIG9hay1kc2wgdXNlcyB0d28gdGVjaG5pcXVlcy4KCkZpcnN0LCBpdCB1dGlsaXplcyBLb3RsaW4ncyBzeW50YXggZmVhdHVyZXMgdG8gbWFrZSBjZXJ0YWluIGRlZmluaXRpb25zIGhhdmUgbGVzcyBib2lsZXJwbGF0ZS4KRm9yIGV4YW1wbGUsIGRlZmluaW5nIGEgcHJvcGVydHkgaW4gYSBzY2hlbWEgaXMganVzdCBvbmUgbGluZSBpbiBLb3RsaW4gKGB2YWwgbmFtZTogVHlwZWApIHdoaWxlIGl0IHRha2VzIHR3byBvciBldmVuIHRocmVlIGxpbmVzIGluIHlhbWw6CgpgYGB5YW1sCm5hbWU6CiAgdHlwZTogVHlwZQpgYGAKClNlY29uZCwgaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhpbmdzIHRoYXQgeW91IGhhdmUgdG8gc3BlY2lmeSBleHBsaWNpdGx5IGluIHlhbWwuClRha2UgdGhlIGZvbGxvd2luZyBsaW5lIGFzIGFuIGV4YW1wbGUuCgpgYGBrb3RsaW4KZ2V0PExpc3Q8VG9kbz4+KCJyZWFkVG9kb3MiKSAvICJ0b2RvcyIgZGVmIHt9CmBgYAoKRmlyc3Qgd2Ugc3BlY2lmeSB0aGF0IHRoZSBlbmRwb2ludCB1c2VzIGEgR0VUIEhUVFAgbWV0aG9kLgpXZSB0aGVuIHNheSB0aGF0IGl0IHJldHVybnMgYSBMaXN0IG9mIFRvZG8gb2JqZWN0cyB3aGljaCBhcmUgZGVmaW5lZCBhdCBhIGxhdGVyIHBvaW50LgpBZnRlciB0aGF0LCB3ZSBzcGVjaWZ5IHRoZSBvcGVyYXRpb24gaWQgYXMgYHJlYWRUb2Rvc2AgYW5kIHRoZSBwYXRoIGFzIGAvdG9kb3NgLgpXZSBjb3VsZCBoYXZlIHVzZWQgdGhlIGJsb2NrIGZvbGxvd2luZyB0aGUgYGRlZmAga2V5d29yZCB0byBmdXJ0aGVyIGN1c3RvbWl6ZSB0aGUgZW5kcG9pbnQsIGJ1dCB3ZSBkaWQgbm90IG5lZWQgdG8uCgpUaGlzIGxpbmUgY29ycmVzcG9uZHMgdG8gdGhlIGZvbGxvd2luZyBPcGVuQVBJIGRlZmluaXRpb246CgpgYGB5YW1sCiAgIi90b2RvcyI6CiAgICBnZXQ6CiAgICAgIG9wZXJhdGlvbklkOiAicmVhZFRvZG9zIgogICAgICByZXNwb25zZXM6CiAgICAgICAgIjIwMCI6CiAgICAgICAgICBkZXNjcmlwdGlvbjogIlN1Y2Nlc3MiCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogImFycmF5IgogICAgICAgICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgICAgICAgICIkcmVmIjogIiMvY29tcG9uZW50cy9zY2hlbWFzL1RvZG8iCmBgYAoKT3BlbkFQSSByZXF1aXJlcyBtb3JlIGluZm9ybWF0aW9uIHRoYW4gd2Ugc3BlY2lmaWVkLCBzbyBvYWstZHNsIGp1c3QgZmlsbGVkIHRoZW0gd2l0aCBkZWZhdWx0IHZhbHVlcy4KVGhlIGZpcnN0IG9uZSBpcyB0aGUgcmVzcG9uc2UgY29kZSB3aGljaCB3aWxsIHVzdWFsbHkgYmUgYDIwMGAgaW4gY2FzZSBubyBlcnJvciBoYXBwZW5lZC4KU2Vjb25kIGlzIHRoZSBkZXNjcmlwdGlvbiB3aGljaCBpcyBvZnRlbiBub3QgbmVjZXNzYXJ5LCBhcyB0aGUgbWVhbmluZyBvZiB0aGUgcmVzcG9uc2UgaXMgY2xlYXIgZnJvbSB0aGUgY29udGV4dC4KT2FrLWRzbCBkZWZhdWx0cyB0byBgIlN1Y2Nlc3MiYCBhcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBkZWZhdWx0IHJlc3BvbnNlLgpUaGUgdGhpcmQgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgdGhlIGNvbnRlbnQgdHlwZS4KVGhlcmUgcHJvYmFibHkgd2lsbCBiZSBjYXNlcywgd2hlcmUgYGFwcGxpY2F0aW9uL2pzb25gIGlzIG5vdCBhcHByb3ByaWF0ZSwgZS5nLiwgYmVjYXVzZSB3ZSB3YW50IHRvIGRvd25sb2FkIGEgZmlsZSwgYnV0IG1vc3Qgb2YgdGhlIHRpbWUgaXQgZG9lcyB0aGUgam9iLgoKIyBVc2FnZQoKVG8gZ2VuZXJhdGUgeW91ciBPcGVuQVBJIFNwZWNpZmljYXRpb24gd2l0aCBvYWstZHNsLCB5b3UgY3JlYXRlIGEgZmlsZSBuYW1lZCBgYXBpLm1haW4ua3RzYCBhbmQgZGVmaW5lIHlvdXIgZW5kcG9pbnRzIGFzIHNlZW4gaW4gdGhlIGZpcnN0IGV4YW1wbGUgYWJvdmUuIAoKVG8gZ2VuZXJhdGUgdGhlIHlhbWwgZmlsZSwgeW91IHdpbGwgbmVlZCB0byBpbnN0YWxsIHRoZSBbS290bGluIGNvbXBpbGVyXShodHRwczovL2tvdGxpbmxhbmcub3JnL2RvY3MvY29tbWFuZC1saW5lLmh0bWwpLgpPbmNlIHlvdSBoYXZlIGRvbmUgdGhhdCwgZXhlY3V0ZSBga290bGluYyAtc2NyaXB0IGFwaS5tYWluLmt0c2AgZnJvbSB0aGUgY29tbWFuZCBsaW5lIGluIHRoZSBkaXJlY3Rvcnkgd2l0aCB0aGUgb2FrLWRzbCBkZWZpbml0aW9uIGZpbGUuCgpJZiB5b3UgYXJlIHVzaW5nIEludGVsbGlKLCB5b3Ugd2lsbCBoYXZlIHdvcmtpbmcgYXV0by1jb21wbGV0aW9uIGZvciB0aGUgYGFwaS5tYWluLmt0c2AgZmlsZS4KWW91IGNhbiBhbHNvIHVzZSBJbnRlbGxpSiB0byBydW4geW91ciBzY3JpcHQsIGJ1dCB0aGlzIG1heSBjdXJyZW50bHkgZmFpbCBpbiBjYXNlIHlvdSBoYXZlIG90aGVyIEtvdGxpbiBjb2RlIHdpdGggZXJyb3JzIGluIHlvdXIgcHJvamVjdC4KCgoKIyBGZWF0dXJlcyBhbmQgRG9jdW1lbnRhdGlvbgoKVGhpcyBzZWN0aW9uIGV4cGxhaW5zIGhvdyB0aGUgZmVhdHVyZXMgb2Ygb2FrLWRzbCBjYW4gaGVscCB5b3UgcXVpY2tseSB3cml0ZSB5b3VyIE9wZW5BUEkgZGVmaW5pdGlvbi4KCiMjIEJhc2ljcwoKWW91ciBvYWstZHNsIGZpbGUgc2hvdWxkIHVzdWFsbHkgbG9vayBhcyBmb2xsb3dzOgoKYGBga290bGluCkBmaWxlOkNvbXBpbGVyT3B0aW9ucygiLWp2bS10YXJnZXQiLCAiMS44IikKQGZpbGU6RGVwZW5kc09uKCJpby5naXRodWIuY2NsYXNzZW4ub2FrZHNsOm9ha2RzbDpWRVJTSU9OIikKCmltcG9ydCBpby5naXRodWIuY2NsYXNzZW4ub2FrZHNsLmJ1aWxkZXIuT3BlbkFwaUJ1aWxkZXIKCk9wZW5BcGlCdWlsZGVyLmZpbGUoImFwaS55YW1sIikgewogICAgLy8gRW5kcG9pbnRzCn0KCi8vIFR5cGVzCmBgYAoKVGhlIGZpcnN0IGFuZCBzZWNvbmQgbGluZSBjb25maWd1cmUgdGhlIEtvdGxpbiBjb21waWxlciBhbmQgZGVjbGFyZSB0aGUgZGVwZW5kZW5jeSBvbiBvYWstZHNsIHJlc3BlY3RpdmVseS4KVGhlbiB0aGUgc2NyaXB0IGltcG9ydHMgdGhlIGNsYXNzIGBPcGVuQXBpQnVpbGRlcmAgYW5kIGNhbGxzIHRoZSBgZmlsZWAgbWV0aG9kIG9uIGl0cyBjb21wYW5pb24gb2JqZWN0LgpJdCB0YWtlcyB0aGUgZmlsZW5hbWUgb2YgdGhlIE9wZW5BUEkgWUFNTCBmaWxlIHRvIGJlIGdlbmVyYXRlZCwgYW5kIGEgbGFtYmRhIHdoZXJlIHRoZSBmaWxlJ3MgY29udGVudHMgY2FuIGJlIGNvbmZpZ3VyZWQuCldpdGhpbiB0aGF0IGxhbWJkYSwgZmlyc3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBpbmZvIHNlY3Rpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYXJlIGRlY2xhcmVkLgpJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGRlZmluZSBtb3JlIG1ldGFkYXRhIHdpdGhpbiB0aGF0IHNlY3Rpb24gYW5kIHRvIGRlY2xhcmUgc2VydmVycyBieSB1c2luZyB0aGUgZm9sbG93aW5nIG1ldGhvZCBjYWxsLgoKYGBga290bGluCnNlcnZlcigiaHR0cDovL2V4YW1wbGUuY29tLyIsICJTb21lIERlc2NyaXB0aW9uIikKYGBgCgojIyBEZWZpbmluZyBFbmRwb2ludHMKClRvIGRlZmluZSBhbiBlbmRwb2ludCwgeW91IG5lZWQgdG8gY2FsbCB0aGUgbWV0aG9kIGNvcnJlc3BvbmRpbmcgdG8gdGhlIEhUVFAgbWV0aG9kLgpJdCB0YWtlcyBhbiBvcHRpb25hbCB0eXBlIHBhcmFtZXRlci4KSWYgeW91IHNwZWNpZnkgaXQsIG9hay1kc2wgd2lsbCBnZW5lcmF0ZSBhIGAyMDBgIHJlc3BvbnNlIHdpdGggY29udGVudCB0eXBlIGBhcHBsaWNhdGlvbi9qc29uYCBhbmQgYSBzY2hlbWEgdGhhdCByZWZlcmVuY2VzIGEgdHlwZSBjb3JyZXNwb25kaW5nIHRvIHRoZSB0eXBlIHBhcmFtZXRlci4KVGhlIG9ubHkgdmFsdWUgcGFyYW1ldGVyIGlzIHRoZSBvcGVyYXRpb24gaWQuCkFmdGVyIHRoZSBtZXRob2QgY2FsbCwgeW91IGNhbiBkZWZpbmUgdGhlIHBhdGggb2YgdGhlIGVuZHBvaW50IHVzaW5nIHRoZSBgL2Agb3BlcmF0b3Igb24gdGhlIHJlc3VsdGluZyBgRW5kcG9pbnRQYXRoQnVpbGRlcmAuCkFzIHNlY29uZCBvcGVyYW5kIHlvdSBjYW4gZWl0aGVyIHVzZSBhIHN0cmluZyBsaXRlcmFsLCBvciBhIHBhcmFtZXRlciB3aGljaCBpcyBleHBsYWluZWQgbGF0ZXIuCkFmdGVyIGFwcGVuZGluZyBhbGwgcGF0aCBzZWdtZW50cywgeW91IGNhbiBjb25jbHVkZSB0aGUgZW5kcG9pbnQgZGVmaW5pdGlvbiB1c2luZyB0aGUgYGRlZmAgaW5maXggZnVuY3Rpb24gZm9sbG93ZWQgYnkgYSBsYW1iZGEgdGhhdCBhbGxvd3MgeW91IHRvIGZ1cnRoZXIgY3VzdG9taXplIHlvdXIgZW5kcG9pbnQuCllvdSBjYW4gdXNlIGl0IHRvIGRlZmluZSBhIGRlc2NyaXB0aW9uLCB0YWdzLCByZXNwb25zZXMgYW5kIHRoZSByZXF1ZXN0IGJvZHkuCgojIyBEZWZpbmluZyBUeXBlcwoKWW91IGNhbiB1c2UgZWl0aGVyIGludGVyZmFjZXMgb3IgY2xhc3NlcyB0byBkZWZpbmUgdGhlIHR5cGVzIHlvdSB1c2UgYXMgeW91ciBzY2hlbWFzIGZvciByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzLgpJbnRlcmZhY2VzIGFsbG93IGZvciBlYXN5IGluaGVyaXRhbmNlIHdoaWNoIGlzIHJlcHJlc2VudGVkIGJ5IGEgc2NoZW1hIHVzaW5nIGBhbGxPZmAuCkhvd2V2ZXIsIHRoZSBvcmRlciBvZiB0aGUgZmllbGRzIGNhbm5vdCBiZSBwcmVzZXJ2ZWQgYW5kIGlzIHRoZXJlZm9yZSBhbHBoYWJldGljYWxseS4KRm9yIGNsYXNzZXMsIHlvdSBuZWVkIHRvIHB1dCB0aGUgZmllbGRzIGluIHRoZSBwcmltYXJ5IGNvbnN0cnVjdG9yIGxpa2UgdGhpczoKCmBgYGtvdGxpbgpjbGFzcyBFeGFtcGxlKAogIGZpcnN0RmllbGQ6IEludCwKICBzZWNvbmRGaWVsZDogU3RyaW5nCikKYGBgCgpBbGwgdHlwZXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGJ5IHlvdXIgc3BlY2lmaWNhdGlvbiB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gYSBzY2hlbWEuClByaW1pdGl2ZSB0eXBlcyBhcmUgdHJhbnNsYXRlZCB0byB0aGVpciBqc29uIHNjaGVtYSBjb3VudGVycGFydHMgYW5kIGNsYXNzZXMsIGludGVyZmFjZXMgYW5kIGVudW1lcmF0aW9ucyB3aWxsIGJlIGRlZmluZWQgaW4gdGhlIGBjb21wb25lbnRzL3NjaGVtYXNgIHNlY3Rpb24gb2YgdGhlIHJlc3VsdGluZyBZQU1MLgpJdCBpcyB0aGVyZWZvcmUgaW1wb3J0YW50IHRoYXQgdGhleSBoYXZlIHVuaXF1ZSBuYW1lcy4KCllvdSBjYW4gYWxzbyBkZWZpbmUgc2NoZW1hcyBieSBjb25zdHJ1Y3RpbmcgdGhlIGNsYXNzZXMgaW4gdGhlIHBhY2thZ2UgYGlvLmdpdGh1Yi5jY2xhc3Nlbi5vYWtkc2wubW9kZWwuc2NoZW1hYCBkaXJlY3RseS4KSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBvdmVycmlkZSB0eXBlIHJlc29sdXRpb24gZm9yIHlvdXIgb3duIG9yIGJ1aWx0LWluIHR5cGVzLCBhcyBzaG93biBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CgpgYGBrb3RsaW4KT3BlbkFwaUJ1aWxkZXIuZmlsZSgiYXBpLnlhbWwiKSB7CiAgdmFsIGRiSWQgPSBjb21wb25lbnRzLnR5cGUoIkRiSWQiLCBQcmltaXRpdmVTY2hlbWEoImludGVnZXIiLCAiaW50NjQiKSkKICBjdXN0b21SZXNvbHZlPERiSWQ+IHsgZGJJZCB9CiAgLy8gRW5kcG9pbnRzCn0KCmludGVyZmFjZSBEYklkCmBgYAoKQnkgY2FsbGluZyBgY29tcG9uZW50cy50eXBlYCwgeW91IGNhbiByZWdpc3RlciB5b3VyIGNvbnN0cnVjdGVkIHR5cGUgdG8gYmUgb3V0cHV0IGluIHRoZSBgY29tcG9uZW50cy9zY2hlbWFzYCBzZWN0aW9uIG9mIHRoZSBZQU1MLgoKIyMgRGVmaW5pbmcgcGFyYW1ldGVycwoKRm9yIG9hay1kc2wsIHR3byBraW5kcyBvZiBwYXJhbWV0ZXJzIG11c3QgYmUgZGlzdGluZ3Vpc2hlZC4KUGF0aCBwYXJhbWV0ZXJzIG11c3QgYmUgZGVjbGFyZWQgd2hlbiBidWlsZGluZyB0aGUgcGF0aCwgbGlrZSBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CgpgYGBrb3RsaW4KZ2V0PFRvZG8+KCJyZWFkVG9kbyIpIC8gInRvZG9zIiAvIGxvbmdQYXJhbSgidG9kb0lkIikgZGVmIHt9CmBgYAoKUXVlcnkgYW5kIGhlYWRlciBwYXJhbWV0ZXJzIGFyZSBkZWNsYXJlZCB3aXRoaW4gdGhlIGVuZHBvaW50IGRlZmluaXRpb246CgpgYGBrb3RsaW4KZ2V0PFRvZG8+KCJyZWFkVG9kbyIpIC8gInRvZG9zIiBkZWYgewogIGxvbmdQYXJhbSgidG9kb0lkIikKfQpgYGAKCllvdSBjYW4gYWxzbyBkZWNsYXJlIGhhdmUgeW91ciBwYXJhbWV0ZXIgZGVjbGFyZWQgaW4gdGhlIGBjb21wb25lbnRzL3BhcmFtZXRlcnNgIHNlY3Rpb24gb2YgdGhlIFlBTUwgYW5kIHRoZW4gcmVmZXIgdG8gaXQgbGF0ZXIgYnkgcmVmZXJlbmNlOgoKYGBga290bGluCnZhbCBpZFBhcmFtID0gY29tcG9uZW50cy5wYXJhbWV0ZXIoImlkUGFyYW0iLCAiaWQiLCBjb21wb25lbnRzLnJlc29sdmVDbGFzcyhMb25nOjpjbGFzcyksIGtpbmQgPSAicGF0aCIpCiAgCmdldDxUb2RvPigicmVhZFRvZG8iKSAvICJ0b2RvcyIgLyBpZFBhcmFtIGRlZiB7fQoKYGBgCgojIyBFbmRwb2ludCBGaWx0ZXJzCgpFbmRwb2ludCBmaWx0ZXJzIGFsbG93IHlvdSB0byBoYXZlIHNlY3Rpb25zIGluIHlvdXIgb2FrLWRzbCBkZWZpbml0aW9uIHRoYXQgZW5oYW5jZSByZWFkYWJpbGl0eSBhbmQgYWxsb3cgeW91IHRvIGFwcGx5IGNlcnRhaW4gdHJhbnNmb3JtYXRpb25zIHRvIGFsbCBlbmRwb2ludHMgd2l0aGluIHRoZSBzZWN0aW9uLgpUaGV5IGNhbiBiZSB1c2VkIGFzIGZvbGxvd3M6CgpgYGBrb3RsaW4KdmFsIHByZWZpeCA9IGVuZHBvaW50RmlsdGVyIHsgcGF0aCA9ICIvdG9kb3MkcGF0aCIgfQogICAgCnByZWZpeCB7CiAgICBnZXQ8TGlzdDxUb2RvPj4oInJlYWRUb2RvcyIpIGRlZiB7fQogICAgZ2V0PFRvZG8+KCJyZWFkVG9kbyIpIC8gbG9uZ1BhcmFtKCJ0b2RvSWQiKSBkZWYge30KfQpgYGAKClRoZSB0d28gZW5kcG9pbnRzIHdpdGhpbiB0aGUgYHByZWZpeGAgc2VjdGlvbiB3aWxsIGhhdmUgdGhlIGAvdG9kb3NgIHBhdGggc2VnbWVudCBwcmVwZW5kZWQgdG8gdGhlaXIgcGF0aC4KVGhlcmVmb3JlLCBpdCBkb2VzIG5vdCBuZWVkIHRvIGJlIHNwZWNpZmllZCB3aGVuIGRlY2xhcmluZyB0aGUgZW5kcG9pbnRzLgpUaGlzIHJlZHVjZXMgdmVyYm9zaXR5IGFuZCBnaXZlcyB0aGUgb2FrLWRzbCBkb2N1bWVudCBtb3JlIHN0cnVjdHVyZS4KV2hlbiBkZWNsYXJpbmcgYW4gZW5kcG9pbnQgZmlsdGVyLCB5b3Ugc3BlY2lmeSBhIGxhbWJkYSByZWNlaXZpbmcgYW4gYEVuZHBvaW50SXRlbWAgd2hpY2ggYWxsb3dzIHlvdSB0byBtb2RpZnkgdGhlIEh0dHAtYG1ldGhvZGAsIHRoZSBgcGF0aGAgYW5kIHRoZSBvdGhlciBwcm9wZXJ0aWVzIHdpdGhpbiB0aGUgYGVuZHBvaW50YC4gCllvdSBjYW4gYWxzbyBjb21iaW5lIG11bHRpcGxlIGZpbHRlcnMgYnkgdXNpbmcgdGhlaXIgYGFuZGAtbWV0aG9kIHdoaWNoIHJldHVybnMgYSBuZXcgZmlsdGVyIHRoYXQgYXBwbGllcyBmaXJzdCB0aGUgcmlnaHQtaGFuZCBmaWx0ZXIgYW5kIHRoZW4gdGhlIGxlZnQtaGFuZCBvbmUuCgojIyMgUHJlZml4CgpUaGVyZSBpcyBubyBuZWVkIHRvIGRlY2xhcmUgYSBjdXN0b20gZW5kcG9pbnQgZmlsdGVyIGlmIHlvdSB3YW50IHRvIHByZXBlbmQgYSBwcmVmaXggdG8gYWxsIHBhdGhzIHdpdGhpbiB0aGUgZmlsdGVyLgpZb3UgY2FuIGp1c3QgdXNlIHRoZSBidWlsdC1pbiBgcHJlZml4YC1tZXRob2Qgd2hpY2ggY3JlYXRlcyBhIGZpbHRlciB3aXRoIGEgcHJlZml4IHlvdSBzcGVjaWZ5OgoKYGBga290bGluCnByZWZpeCgiL3ByZWZpeCIpIHsKICAgIC8vIGVuZHBvaW50cwp9CmBgYAoKIyMjIFRhZ2dlZAoKVGhlIHNhbWUgZ29lcyBpbiBjYXNlIHlvdSB3YW50IHRvIGFkZCBhIHRhZyB0byBlYWNoIGVuZHBvaW50LgoKYGBga290bGluCnRhZ2dlZCgiU29tZVRhZyIpIHsKICAgIC8vIGVuZHBvaW50cwp9CmBgYAoKIyMjIE1hcmtlZAoKRW5kcG9pbnRzIGNhbiBiZSBtYXJrZWQsIHdoaWNoIGhhcyBubyBlZmZlY3Qgb24gdGhlIGdlbmVyYXRlZCBZQU1MLCBidXQgY2FuIGJlIHVzZWQgdG8gZGlzdGluZ3Vpc2ggY2VydGFpbiBlbmRwb2ludHMgaW4gcG9zdC1wcm9jZXNzaW5nLgoKYGBga290bGluCmVudW0gY2xhc3MgTWljcm9TZXJ2aWNlIHsgQSwgQiB9CgptYXJrZWQoTWljcm9TZXJ2aWNlLkEpIHsKICBwb3N0KCJoZWxsbyIpIC8gImhlbGxvIiBkZWYge30KfQpgYGAKCiMjIEdsb2JhbCBmaWx0ZXJzIGFuZCBjdXN0b20gZXh0ZW5zaW9ucwoKRW5kcG9pbnQgZmlsdGVycyBjYW4gYWxzbyBiZSBhcHBsaWVkIHRvIGFsbCBlbmRwb2ludHMgYnkgdXNpbmcgdGhlIGBnbG9iYWxGaWx0ZXJgIG1ldGhvZC4KSG93ZXZlciwgeW91IGNhbm5vdCBtb2RpZnkgdGhlIEhUVFAgbWV0aG9kIG9yIHRoZSBwYXRoIHRoaXMgd2F5LgpUaGlzIGlzIGEgY29udmVuaWVudCB3YXkgdG8gcHV0IHNvbWUgY3VzdG9tIGV4dGVuc2lvbnMgb24geW91ciBlbmRwb2ludHMgdGhhdCBkZXBlbmQgb24gZW5kcG9pbnQgbWV0YWRhdGEuCgpgYGBrb3RsaW4KZ2xvYmFsRmlsdGVyRm9yTWFya2VkKE1pY3JvU2VydmljZS5BKSB7CiAgICBlbmRwb2ludC5hZGRpdGlvbmFsWWFtbFByb3BlcnRpZXNbIngtbXktZXh0ZW5zaW9uIl0gPSBZYW1sTWFwLmJ1aWxkIHsKICAgICAgICBtYXAoIm15LW1hcCIpIHsKICAgICAgICAgICAgYXJyYXkoIm15LWFycmF5IikgewogICAgICAgICAgICAgICAgc3RyaW5nKCJTb21lU3RyaW5nIikKICAgICAgICAgICAgICAgIHZhbHVlKCJTb21lVmFsdWUiKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNob3J0QXJyYXkoIm15LXNob3J0LWFycmF5IiwgbGlzdE9mKDEsIHRydWUsIC0xLjMsICJUZXN0IikpCiAgICAgICAgICAgIHNob3J0U3RyaW5nQXJyYXkoIm15LXN0cmluZy1hcnJheSIsIGxpc3RPZigiYSIsICJiIikpCiAgICAgICAgICAgIHN0cmluZygic29tZVN0cmluZyIsICJUZXN0c3RyaW5nIikKICAgICAgICB9CiAgICB9Cn0KYGBgCgpJbiB0aGlzIGNvZGUsIGEgY3VzdG9tIGV4dGVuc2lvbiBpcyBhZGRlZCB0byBhbGwgZW5kcG9pbnRzIHRoYXQgd2VyZSBtYXJrZWQgd2l0aCBgTWljcm9TZXJ2aWNlLkFgICh3aGVyZSBgTWljcm9TZXJ2aWNlYCBpcyBhbiBlbnVtKS4KVGhlIGV4dGVuc2lvbiB3aWxsIGJlIHNlcmlhbGl6ZWQgdG8gdGhlIGZvbGxvd2luZyB5YW1sOgoKYGBgeWFtbAoieC1teS1leHRlbnNpb24iOgogICJteS1tYXAiOgogICAgIm15LWFycmF5IjoKICAgIC0gIlNvbWVTdHJpbmciCiAgICAtIFNvbWVWYWx1ZQogICAgIm15LXNob3J0LWFycmF5IjogWyAxLCB0cnVlLCAtMS4zLCBUZXN0IF0KICAgICJteS1zdHJpbmctYXJyYXkiOiBbICJhIiwgImIiIF0KICAgIHNvbWVTdHJpbmc6ICJUZXN0c3RyaW5nIgpgYGAK readmeEtag: '"51411dad6c2ae8bc4ef8453a67f13967d62424e8"' readmeLastModified: Thu, 02 Dec 2021 14:29:56 GMT repositoryId: 398049382 description: Create OpenAPI Specifications using Kotlin created: '2021-08-19T19:10:39Z' updated: '2023-04-30T07:30:21Z' language: Kotlin archived: false stars: 2 watchers: 1 forks: 0 owner: c-classen logo: https://avatars.githubusercontent.com/u/58041050?v=4 license: MIT repoEtag: '"09effd44d2c1f1be1065340c837ccc5fc4aba3f9f08198d95e867aeae8ac0202"' repoLastModified: Sun, 30 Apr 2023 07:30:21 GMT foundInMaster: true id: 4373894238bf0f136bc8d79d25df5f69 - source: openapi3 tags repository: https://github.com/37mobileteam/appstoreconnectcerts v3: true id: b8b614c0a3ec633d4b7805b71a1f3f13 repositoryMetadata: base64Readme: >- IyBBcHBTdG9yZUNvbm5lY3RDZXJ0cwpQcm9qZWN0IG9mIENlcnRpZmljYXRlIE1hbmFnZW1lbnQgQXV0b21hdGlvbiAtIEJhY2tlbmQK readmeEtag: '"cb476f86edba5c0a98c02fe2fea0a74407c83993"' readmeLastModified: Mon, 25 Sep 2023 10:14:11 GMT repositoryId: 694456934 description: Project of Certificate Management Automation - Backend created: '2023-09-21T03:17:49Z' updated: '2023-09-27T03:53:43Z' language: C archived: false stars: 2 watchers: 1 forks: 3 owner: 37MobileTeam logo: https://avatars.githubusercontent.com/u/85087913?v=4 license: GPL-3.0 repoEtag: '"8e314d8612f3b444a727ea6d46228aa63de8f7ec6b361e695cd4906dddbcca1f"' repoLastModified: Wed, 27 Sep 2023 03:53:43 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/mheap/json-schema-spell-checker v3: true repositoryMetadata: base64Readme: >- IyBqc29uLXNjaGVtYS1zcGVsbC1jaGVja2VyCgpUaGlzIENMSSBhbGxvd3MgeW91IHRvIHByb3ZpZGUgYSBKU09OUGF0aCBleHByZXNzaW9uIGFuZCBydW4gYG1kc3BlbGxgIGFnYWluc3QgYW55IG1hdGNoaW5nIGxpbmVzLgoKPiBUaGlzIHRvb2wgaXMgY3VycmVudGx5IGluIGFscGhhIGFuZCBoYXMgcHJpbWFyaWx5IGJlZW4gdGVzdGVkIGFnYWluc3QgT3BlbkFQSSBmaWxlcy4gUFJzIGFyZSB3ZWxjb21lIQoKIyMgSW5zdGFsbGF0aW9uCgpgYGBiYXNoCm5wbSBpbnN0YWxsIC1nIGpzb24tc2NoZW1hLXNwZWxsLWNoZWNrZXIKYGBgCgojIyBVc2FnZQoKQ2hlY2sgYWdhaW5zdCBzcGVjaWZpYyBmaWVsZCBuYW1lcyBhdCBhbnkgZGVwdGg6CgpgYGBiYXNoCmpzb24tc2NoZW1hLXNwZWxsLWNoZWNrZXIgLWYgJ2Rlc2NyaXB0aW9uLHRpdGxlJyAvcGF0aC90by9vcGVuYXBpLmpzb24KYGBgCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHNwZWNpZnkgYSBKU09OUGF0aCBleHByZXNzaW9uIHlvdXJzZWxmCgpgYGBiYXNoCmpzb24tc2NoZW1hLXNwZWxsLWNoZWNrZXIgLWogIiQuLltkZXNjcmlwdGlvbix0aXRsZV0iIC9wYXRoL3RvL29wZW5hcGkuanNvbgpgYGAKCklmIHlvdSBoYXZlIHdvcmRzIHRoYXQgYXJlbid0IGEgc3BlbGxpbmcgbWlzdGFrZSBidXQgYXJlbid0IGluIHRoZSBkaWN0aW9uYXJ5LCBhZGQgdGhlbSB0byBhIGAuc3BlbGxpbmdgIGZpbGUgKG9uZSB3b3JkIHBlciBsaW5lKSBpbiB0aGUgY3VycmVudCBmb2xkZXIuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gcHJvdmlkZSBhIHBhdGggd2l0aCBgLXNgCgpgYGBiYXNoCmpzb24tc2NoZW1hLXNwZWxsLWNoZWNrZXIgLXMgL3BhdGgvdG8vLnNwZWxsaW5nIC1mICdkZXNjcmlwdGlvbix0aXRsZScgL3BhdGgvdG8vb3BlbmFwaS5qc29uCmBgYAoKIyMgUHJlLWNvbW1pdCBob29rCgpZb3UgY2FuIHVzZSB0aGlzIHRvb2wgYXMgYSBgcHJlLWNvbW1pdGAgaG9vayBieSBhZGRpbmcgdGhlIGZvbGxvd2luZyB0byB5b3VyIGAucHJlLWNvbW1pdC1jb25maWcueWFtbGA6CgpgYGB5YW1sCnJlcG9zOgogIC0gcmVwbzogaHR0cHM6Ly9naXRodWIuY29tL21oZWFwL2pzb24tc2NoZW1hLXNwZWxsLWNoZWNrZXIKICAgIHJldjogPHZlcnNpb24+ICMgVXNlIHRoZSByZWYgeW91IHdhbnQgdG8gcG9pbnQgYXQKICAgIGhvb2tzOgogICAgICAtIGlkOiBqc29uLXNjaGVtYS1zcGVsbC1jaGVja2VyCiAgICAgICAgZmlsZXM6IDxzY2hlbWE+XC5qc29uJApgYGAK readmeEtag: '"592d46c30d35dc5fe57c42553bf329574068209e"' readmeLastModified: Mon, 20 Nov 2023 09:49:07 GMT repositoryId: 227215167 description: >- This CLI allows you to provide a JSONPath expression and run mdspell against any matching lines. created: '2019-12-10T21:03:06Z' updated: '2023-09-08T18:01:07Z' language: JavaScript archived: false stars: 2 watchers: 2 forks: 1 owner: mheap logo: https://avatars.githubusercontent.com/u/59130?v=4 repoEtag: '"4a273c59060dd5f33a08854870cfc0677727f226090d5ee47c406e1f4de0fdd5"' repoLastModified: Fri, 08 Sep 2023 18:01:07 GMT foundInMaster: true category: Parsers id: 9de99ade60b1432266afaf1e0719633a - source: openapi3 tags repository: https://github.com/speakeasy-sdks/template-sdk v3: true id: 8c17078292c83db2e050b190bc267a99 repositoryMetadata: base64Readme: >- IyBUZW1wbGF0ZSBTREsKCjxkaXYgYWxpZ249ImxlZnQiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9zcGVha2Vhc3lhcGkuZGV2LyI+PGltZyBzcmM9Imh0dHBzOi8vY3VzdG9tLWljb24tYmFkZ2VzLmRlbW9sYWIuY29tL2JhZGdlLy1CdWlsdCUyMEJ5JTIwU3BlYWtlYXN5LTIxMjAxNT9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ29Db2xvcj1GQkUzMzEmbG9nbz1zcGVha2Vhc3kmbGFiZWxDb2xvcj01NDU0NTQiIC8+PC9hPiAgIAo8L2Rpdj4KCiMjIEhvdyB0byB1c2UgdGhpcyByZXBvc2l0b3J5CgoqKvCfkYAqKiBUaGlzIHRlbXBsYXRlIHJlcG9zaXRvcnkgaXMgZGVzaWduZWQgdG8gYm9vdHN0cmFwIGEgW1NwZWFrZWFzeSBtYW5hZ2VkIFNESyByZXBvc2l0b3J5XShodHRwczovL3NwZWFrZWFzeWFwaS5kZXYvZG9jcy9jcmVhdGUtY2xpZW50LXNka3MvKSB1c2luZyBHaXRodWIncyByZXBvc2l0b3J5IGNsb25lIGZlYXR1cmUuIE9uY2UgdGhpcyByZXBvc2l0b3J5IGlzIHNldHVwIGl0IHdpbGwgYXV0b21hdGljYWxseSBrZWVwIHlvdXIgU0RLIHVwIHRvIGRhdGUgYW5kIHB1Ymxpc2hlZCB0byBhIHBhY2thZ2UgbWFuYWdlci4gCgoKIyMjIENyZWF0aW5nIGFuIFNESwoKMS4gVG8gZ2V0IHN0YXJ0ZWQsIHNpbXBseSBjbG9uZSB0aGUgcmVwb3NpdG9yeSBieSBjbGlja2luZyBvbiB0aGUgIlVzZSB0ZW1wbGF0ZSIgYnV0dG9uIGFuZCBnaXZlIGl0IGEgbmFtZS4KICAgCiFbU2NyZWVuc2hvdCAyMDIzLTA5LTA2IGF0IDA5IDIwIDUyXShodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LXNka3MvdGVtcGxhdGUtc2RrL2Fzc2V0cy82ODAxNjM1MS9iNGNmNGU0My1kYjRlLTQ1NWEtOTM1OS0wZjA5Zjk0MmI5OTcpCgoyLiBDb25maWd1cmUgdGhlIFNwZWFrZWFzeSB3b3JrZmxvdyB0byBnZW5lcmF0ZSB0aGUgU0RLLiBHbyB0byB0aGUgW2dlbmVyYXRpb24gd29ya2Zsb3cgZmlsZV0oaHR0cHM6Ly9naXRodWIuY29tL3NwZWFrZWFzeS1zZGtzL3RlbXBsYXRlLXNkay9ibG9iL21haW4vLmdpdGh1Yi93b3JrZmxvd3Mvc3BlYWtlYXN5X3Nka19nZW5lcmF0aW9uLnltbCkgYW5kIGNvbmZpZ3VyZSB0aGUgYGxhbmd1YWdlYCwgYG1vZGVgIGFuZCBgbG9jYXRpb25gIG9mIHlvdXIgb3BlbmFwaSBkb2N1bWVudC4gRm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24gb24gYWxsIHRoZSBhdmFpbGFibGUgZ2VuZXJhdGlvbiBjb25maWd1cmF0aW9ucywgc2VlIFtoZXJlXShodHRwczovL3d3dy5zcGVha2Vhc3lhcGkuZGV2L2RvY3MvYWR2YW5jZWQtc2V0dXAvc2RrLWF1dG9tYXRpb24pLiBZb3Ugd2lsbCBhbHNvIG5lZWQgdG8gYWRkIGEgYFNQRUFLRUFTWV9BUElfS0VZYCBhcyBhIHJlcG9zaXRvcnkgc2VjcmV0LiBJZiB5b3UgZG9uJ3QgYWxyZWFkeSBoYXZlIGEga2V5IHlvdSBjYW4gZ2V0IG9uZSBieSBtYWtpbmcgYSB3b3Jrc3BhY2Ugb24gU3BlYWtlYXN5IFtoZXJlXShodHRwczovL2FwcC5zcGVha2Vhc3lhcGkuZGV2LykuCgozLiBDb25maWd1cmUgdGhlIFNwZWFrZWFzeSB3b3JrZmxvdyB0byBwdWJsaXNoIHRoZSBTREsuIEdvIHRvIHRoZSBbcHVibGlzaGluZyB3b3JrZmxvdyBmaWxlXShodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LXNka3MvdGVtcGxhdGUtc2RrL2Jsb2IvbWFpbi8uZ2l0aHViL3dvcmtmbG93cy9zcGVha2Vhc3lfc2RrX3B1Ymxpc2gueW1sKSBhbmQgY29uZmlndXJlIGFueSByZWxldmFudCBwYWNrYWdlIG1hbmFnZXIgY3JlZGVudGlhbHMgYXMgcmVwb3NpdG9yeSBzZWNyZXRzLiBGb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiBvbiBhbGwgdGhlIGF2YWlsYWJsZSBwdWJsaXNoaW5nIGNvbmZpZ3VyYXRpb25zLCBzZWUgW2hlcmVdKGh0dHBzOi8vd3d3LnNwZWFrZWFzeWFwaS5kZXYvZG9jcy9wcm9kdWN0aW9uaXplLXNka3MvcHVibGlzaC1zZGtzKS4KCjQuIENvbmZpZ3VyZSB0aGUgZ2VuZXJhdGlvbiBieSBlZGl0aW5nIHRoZSBgZ2VuLnlhbWxgIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHJlcG8uIFRoaXMgZmlsZSBjb250cm9scyB0aGUgZ2VuZXJhdG9yIGFuZCBkZXRlcm1pbmVzIHZhcmlvdXMgYXR0cmlidXRlcyBvZiB0aGUgU0RLIGxpa2UgYHBhY2thZ2VOYW1lYCwgYHNka0NsYXNzTmFtZWAsIGlubGluaW5nIG9mIHBhcmFtZXRlcnMsIGFuZCBvdGhlciBlcmdvbm9taWNzLgoKNS4gRmluYWxseSBnbyB0byB0aGUgQWN0aW9ucyB0YWIsIGNob29zZSB0aGUgZ2VuZXJhdGlvbiB3b3JrZmxvdyBhbmQgY2xpY2sgIkZvcmNlIEdlbmVyYXRlIi4gVGhpcyB3aWxsIHRyaWdnZXIgYSBuZXcgZ2VuZXJhdGlvbiBvZiB5b3VyIFNESyB1c2luZyB0aGUgY29uZmlndXJhdGlvbiB5b3UgcHJvdmlkZWQgYWJvdmUuIERlcGVuZGluZyBvbiB3aGV0aGVyIHlvdSBjb25maWd1cmVkIGBwcmAgb3IgYGRpcmVjdGAgbW9kZSBhYm92ZSB5b3VyIHVwZGF0ZWQgU0RLIHdpbGwgYXBwZWFyIGluIFBSIG9yIGluIHRoZSBtYWluIGJyYW5jaC4KCiFbU2NyZWVuc2hvdCAyMDIzLTA5LTA2IGF0IDEwIDAxIDQ2XShodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LXNka3MvdGVtcGxhdGUtc2RrL2Fzc2V0cy82ODAxNjM1MS8zNTgyODk4Mi1jNmRlLTRhNWMtODRmNS1hZTJiNDIyNGNlY2UpCgrwn5qAIFlvdSBzaG91bGQgaGF2ZSBhIHdvcmtpbmcgU0RLIGZvciB5b3VyIEFQSSDwn5mCIC4gVG8gY2hlY2sgb3V0IGFsbCB0aGUgZmVhdHVyZXMgb2YgdGhlIFNESyBwbGVhc2Ugc2VlIG91ciBkb2NzIFtzaXRlXShodHRwczovL3NwZWFrZWFzeWFwaS5kZXYvZG9jcy9jcmVhdGUtY2xpZW50LXNka3MvKS4KCiMjIyBMb2NhbCBkZXZlbG9wbWVudAoKT25jZSB5b3UgaGF2ZSB0aGUgU0RLIHNldHVwIHlvdSBtYXkgd2FudCB0byBpdGVyYXRlIG9uIHRoZSBTREsuIFNwZWFrZWFzeSBzdXBwb3J0cyBPcGVuQVBJIHZlbmRvciBleHRlbnNpb25zIHRoYXQgY2FuIGJlIGFkZGVkIHRvIHlvdXIgc3BlYyB0byBjdXN0b21pemUgdGhlIFNESyBlcmdvbm9taWNzIChtZXRob2QgbmFtZXMsIG5hbWVzcGFjaW5nIHJlc291cmNlcyBldGMuKSBhbmQgZnVuY3Rpb25hbGl0eSAoYWRkaW5nIHJldHJpZXMsIHBhZ2luYXRpb24sIG11bHRpcGxlIHNlcnZlciBzdXBwb3J0IGV0YykKClRvIGdldCBzdGFydGVkIGluc3RhbGwgdGhlIFNwZWFrZWFzeSBDTEkuCgpJbiB5b3VyIHRlcm1pbmFsLCBydW46CgpgYGBiYXNoCmJyZXcgaW5zdGFsbCBzcGVha2Vhc3ktYXBpL2hvbWVicmV3LXRhcC9zcGVha2Vhc3kKYGBgCk9uY2UgeW91IGFubm9uYXRlIHlvdXIgc3BlYyB3aXRoIGFuIGV4dGVuc2lvbiB5b3Ugd2lsbCB3YW50IHRvIHJ1biBgc3BlYWtlYXN5IHZhbGlkYXRlYCB0byBjaGVjayB0aGUgc3BlYyBmb3IgY29ycmVjdG5lc3MgYW5kIGBzcGVha2Vhc3kgZ2VuZXJhdGVgIHRvIHJlY3JlYXRlIHRoZSBTREsgbG9jYWxseS4gTW9yZSBkb2N1bWVudGF0aW9uIG9uIE9wZW5BUEkgZXh0ZW5zaW9ucyBbaGVyZV0oaHR0cHM6Ly9zcGVha2Vhc3lhcGkuZGV2L2RvY3MvY3VzdG9taXplLXNka3MvbmFtZXNwYWNlcy8pLiBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBhZGRpbmcgYSBtdWx0aXBsZSBzZXJ2ZXIgc3VwcG9ydCB0byB0aGUgc3BlYyBzbyB0aGF0IHlvdXIgU0RLIHN1cHBvcnRzIHByb2R1Y3Rpb24gYW5kIHNhbmRib3ggdmVyc2lvbnMgb2YgeW91ciBBUEkuIAoKYGBgeWFtbAppbmZvOgogIHRpdGxlOiBFeGFtcGxlCiAgdmVyc2lvbjogMC4wLjEKc2VydmVyczoKICAtIHVybDogaHR0cHM6Ly9wcm9kLmV4YW1wbGUuY29tICMgVXNlZCBhcyB0aGUgZGVmYXVsdCBVUkwgYnkgdGhlIFNESwogICAgZGVzY3JpcHRpb246IE91ciBwcm9kdWN0aW9uIGVudmlyb25tZW50CiAgICB4LXNwZWFrZWFzeS1zZXJ2ZXItaWQ6IHByb2QKICAtIHVybDogaHR0cHM6Ly9zYW5kYm94LmV4YW1wbGUuY29tCiAgICBkZXNjcmlwdGlvbjogT3VyIHNhbmRib3ggZW52aXJvbm1lbnQKICAgIHgtc3BlYWtlYXN5LXNlcnZlci1pZDogc2FuZGJveApgYGAKCk9uY2UgeW91J3JlIGZpbmlzaGVkIGl0ZXJhdGluZyBhbmQgaGFwcHkgd2l0aCB0aGUgb3V0cHV0IHB1c2ggb25seSB0aGUgbGF0ZXN0IHZlcnNpb24gb2Ygc3BlYyBpbnRvIHRoZSByZXBvIGFuZCByZWdlbmVyYXRlIHRoZSBTREsgdXNpbmcgc3RlcCA2IGFib3ZlLgoKPCEtLSBTdGFydCBTREsgSW5zdGFsbGF0aW9uIFtpbnN0YWxsYXRpb25dIC0tPgojIyBTREsgSW5zdGFsbGF0aW9uCgpgYGBiYXNoCnBpcCBpbnN0YWxsIGdpdCtodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LXNka3MvdGVtcGxhdGUtc2RrLmdpdApgYGAKPCEtLSBFbmQgU0RLIEluc3RhbGxhdGlvbiBbaW5zdGFsbGF0aW9uXSAtLT4KCjwhLS0gU3RhcnQgU0RLIEV4YW1wbGUgVXNhZ2UgW3VzYWdlXSAtLT4KIyMgU0RLIEV4YW1wbGUgVXNhZ2UKCiMjIyBTaWduIGluCgpGaXJzdCB5b3UgbmVlZCB0byBzZW5kIGFuIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QgdG8gdGhlIEFQSSBieSBwcm92aWRpbmcgeW91ciB1c2VybmFtZSBhbmQgcGFzc3dvcmQuCkluIHRoZSByZXF1ZXN0IGJvZHksIHlvdSBzaG91bGQgc3BlY2lmeSB0aGUgdHlwZSBvZiB0b2tlbiB5b3Ugd291bGQgbGlrZSB0byByZWNlaXZlOiBBUEkga2V5IG9yIEpTT04gV2ViIFRva2VuLgpJZiB5b3VyIGNyZWRlbnRpYWxzIGFyZSB2YWxpZCwgeW91IHdpbGwgcmVjZWl2ZSBhIHRva2VuIGluIHRoZSByZXNwb25zZSBvYmplY3Q6IGByZXMub2JqZWN0LnRva2VuOiBzdHJgLgoKYGBgcHl0aG9uCmltcG9ydCBzcGVha2Vhc3liYXIKZnJvbSBzcGVha2Vhc3liYXIubW9kZWxzIGltcG9ydCBvcGVyYXRpb25zCgpzID0gc3BlYWtlYXN5YmFyLlNwZWFrZWFzeWJhcigpCgpyZXEgPSBvcGVyYXRpb25zLkxvZ2luUmVxdWVzdEJvZHkoCiAgICB0eXBlPW9wZXJhdGlvbnMuVHlwZS5BUElfS0VZLAopCgpyZXMgPSBzLmF1dGhlbnRpY2F0aW9uLmxvZ2luKHJlcSwgb3BlcmF0aW9ucy5Mb2dpblNlY3VyaXR5KAogICAgcGFzc3dvcmQ9IjxQQVNTV09SRD4iLAogICAgdXNlcm5hbWU9IjxVU0VSTkFNRT4iLAopKQoKaWYgcmVzLm9iamVjdCBpcyBub3QgTm9uZToKICAgICMgaGFuZGxlIHJlc3BvbnNlCiAgICBwYXNzCgpgYGAKCiMjIyBCcm93c2UgYXZhaWxhYmxlIGRyaW5rcwoKT25jZSB5b3UgYXJlIGF1dGhlbnRpY2F0ZWQsIHlvdSBjYW4gdXNlIHRoZSB0b2tlbiB5b3UgcmVjZWl2ZWQgZm9yIGFsbCBvdGhlciBhdXRoZW50aWNhdGVkIGVuZHBvaW50cy4KRm9yIGV4YW1wbGUsIHlvdSBjYW4gZmlsdGVyIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBkcmlua3MgYnkgdHlwZS4KCmBgYHB5dGhvbgppbXBvcnQgc3BlYWtlYXN5YmFyCmZyb20gc3BlYWtlYXN5YmFyLm1vZGVscyBpbXBvcnQgc2hhcmVkCgpzID0gc3BlYWtlYXN5YmFyLlNwZWFrZWFzeWJhcigKICAgIHNlY3VyaXR5PXNoYXJlZC5TZWN1cml0eSgKICAgICAgICBhcGlfa2V5PSI8WU9VUl9BUElfS0VZPiIsCiAgICApLAopCgoKcmVzID0gcy5kcmlua3MubGlzdF9kcmlua3MoZHJpbmtfdHlwZT1zaGFyZWQuRHJpbmtUeXBlLlNQSVJJVCkKCmlmIHJlcy5jbGFzc2VzIGlzIG5vdCBOb25lOgogICAgIyBoYW5kbGUgcmVzcG9uc2UKICAgIHBhc3MKCmBgYAoKIyMjIENyZWF0ZSBhbiBvcmRlcgoKV2hlbiB5b3Ugc3VibWl0IGFuIG9yZGVyLCB5b3UgY2FuIGluY2x1ZGUgYSBjYWxsYmFjayBVUkwgYWxvbmcgeW91ciByZXF1ZXN0LgpUaGlzIFVSTCB3aWxsIGdldCBjYWxsZWQgd2hlbmV2ZXIgdGhlIHN1cHBsaWVyIHVwZGF0ZXMgdGhlIHN0YXR1cyBvZiB5b3VyIG9yZGVyLgoKYGBgcHl0aG9uCmltcG9ydCBzcGVha2Vhc3liYXIKZnJvbSBzcGVha2Vhc3liYXIubW9kZWxzIGltcG9ydCBzaGFyZWQKCnMgPSBzcGVha2Vhc3liYXIuU3BlYWtlYXN5YmFyKAogICAgc2VjdXJpdHk9c2hhcmVkLlNlY3VyaXR5KAogICAgICAgIGFwaV9rZXk9IjxZT1VSX0FQSV9LRVk+IiwKICAgICksCikKCgpyZXMgPSBzLm9yZGVycy5jcmVhdGVfb3JkZXIocmVxdWVzdF9ib2R5PVsKICAgIHNoYXJlZC5PcmRlcklucHV0KAogICAgICAgIHByb2R1Y3RfY29kZT0nQVBNLTFGMkQzJywKICAgICAgICBxdWFudGl0eT0yNjUzNSwKICAgICAgICB0eXBlPXNoYXJlZC5PcmRlclR5cGUuRFJJTkssCiAgICApLApdLCBjYWxsYmFja191cmw9Jzx2YWx1ZT4nKQoKaWYgcmVzLm9yZGVyIGlzIG5vdCBOb25lOgogICAgIyBoYW5kbGUgcmVzcG9uc2UKICAgIHBhc3MKCmBgYAoKIyMjIFN1YnNjcmliZSB0byB3ZWJob29rcyB0byByZWNlaXZlIHN0b2NrIHVwZGF0ZXMKCmBgYHB5dGhvbgppbXBvcnQgc3BlYWtlYXN5YmFyCmZyb20gc3BlYWtlYXN5YmFyLm1vZGVscyBpbXBvcnQgb3BlcmF0aW9ucywgc2hhcmVkCgpzID0gc3BlYWtlYXN5YmFyLlNwZWFrZWFzeWJhcigKICAgIHNlY3VyaXR5PXNoYXJlZC5TZWN1cml0eSgKICAgICAgICBhcGlfa2V5PSI8WU9VUl9BUElfS0VZPiIsCiAgICApLAopCgpyZXEgPSBbCiAgICBvcGVyYXRpb25zLlJlcXVlc3RCb2R5KCksCl0KCnJlcyA9IHMuY29uZmlnLnN1YnNjcmliZV90b193ZWJob29rcyhyZXEpCgppZiByZXMgaXMgbm90IE5vbmU6CiAgICAjIGhhbmRsZSByZXNwb25zZQogICAgcGFzcwoKYGBgCjwhLS0gRW5kIFNESyBFeGFtcGxlIFVzYWdlIFt1c2FnZV0gLS0+Cgo8IS0tIFN0YXJ0IEF2YWlsYWJsZSBSZXNvdXJjZXMgYW5kIE9wZXJhdGlvbnMgW29wZXJhdGlvbnNdIC0tPgojIyBBdmFpbGFibGUgUmVzb3VyY2VzIGFuZCBPcGVyYXRpb25zCgojIyMgW2F1dGhlbnRpY2F0aW9uXShkb2NzL3Nka3MvYXV0aGVudGljYXRpb24vUkVBRE1FLm1kKQoKKiBbbG9naW5dKGRvY3Mvc2Rrcy9hdXRoZW50aWNhdGlvbi9SRUFETUUubWQjbG9naW4pIC0gQXV0aGVudGljYXRlIHdpdGggdGhlIEFQSSBieSBwcm92aWRpbmcgYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQuCgojIyMgW2RyaW5rc10oZG9jcy9zZGtzL2RyaW5rcy9SRUFETUUubWQpCgoqIFtnZXRfZHJpbmtdKGRvY3Mvc2Rrcy9kcmlua3MvUkVBRE1FLm1kI2dldF9kcmluaykgLSBHZXQgYSBkcmluay4KKiBbbGlzdF9kcmlua3NdKGRvY3Mvc2Rrcy9kcmlua3MvUkVBRE1FLm1kI2xpc3RfZHJpbmtzKSAtIEdldCBhIGxpc3Qgb2YgZHJpbmtzLgoKIyMjIFtpbmdyZWRpZW50c10oZG9jcy9zZGtzL2luZ3JlZGllbnRzL1JFQURNRS5tZCkKCiogW2xpc3RfaW5ncmVkaWVudHNdKGRvY3Mvc2Rrcy9pbmdyZWRpZW50cy9SRUFETUUubWQjbGlzdF9pbmdyZWRpZW50cykgLSBHZXQgYSBsaXN0IG9mIGluZ3JlZGllbnRzLgoKIyMjIFtvcmRlcnNdKGRvY3Mvc2Rrcy9vcmRlcnMvUkVBRE1FLm1kKQoKKiBbY3JlYXRlX29yZGVyXShkb2NzL3Nka3Mvb3JkZXJzL1JFQURNRS5tZCNjcmVhdGVfb3JkZXIpIC0gQ3JlYXRlIGFuIG9yZGVyLgoKIyMjIFtjb25maWddKGRvY3Mvc2Rrcy9jb25maWcvUkVBRE1FLm1kKQoKKiBbc3Vic2NyaWJlX3RvX3dlYmhvb2tzXShkb2NzL3Nka3MvY29uZmlnL1JFQURNRS5tZCNzdWJzY3JpYmVfdG9fd2ViaG9va3MpIC0gU3Vic2NyaWJlIHRvIHdlYmhvb2tzLgo8IS0tIEVuZCBBdmFpbGFibGUgUmVzb3VyY2VzIGFuZCBPcGVyYXRpb25zIFtvcGVyYXRpb25zXSAtLT4KCgoKPCEtLSBTdGFydCBSZXRyaWVzIFtyZXRyaWVzXSAtLT4KIyMgUmV0cmllcwoKU29tZSBvZiB0aGUgZW5kcG9pbnRzIGluIHRoaXMgU0RLIHN1cHBvcnQgcmV0cmllcy4gSWYgeW91IHVzZSB0aGUgU0RLIHdpdGhvdXQgYW55IGNvbmZpZ3VyYXRpb24sIGl0IHdpbGwgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IHJldHJ5IHN0cmF0ZWd5IHByb3ZpZGVkIGJ5IHRoZSBBUEkuIEhvd2V2ZXIsIHRoZSBkZWZhdWx0IHJldHJ5IHN0cmF0ZWd5IGNhbiBiZSBvdmVycmlkZGVuIG9uIGEgcGVyLW9wZXJhdGlvbiBiYXNpcywgb3IgYWNyb3NzIHRoZSBlbnRpcmUgU0RLLgoKVG8gY2hhbmdlIHRoZSBkZWZhdWx0IHJldHJ5IHN0cmF0ZWd5IGZvciBhIHNpbmdsZSBBUEkgY2FsbCwgc2ltcGx5IHByb3ZpZGUgYSBgUmV0cnlDb25maWdgIG9iamVjdCB0byB0aGUgY2FsbDoKYGBgcHl0aG9uCmltcG9ydCBzcGVha2Vhc3liYXIKZnJvbSBzcGVha2Vhc3liYXIubW9kZWxzIGltcG9ydCBvcGVyYXRpb25zLCBzaGFyZWQKZnJvbSBzcGVha2Vhc3liYXIudXRpbHMgaW1wb3J0IEJhY2tvZmZTdHJhdGVneSwgUmV0cnlDb25maWcKCnMgPSBzcGVha2Vhc3liYXIuU3BlYWtlYXN5YmFyKAogICAgc2VjdXJpdHk9c2hhcmVkLlNlY3VyaXR5KAogICAgICAgIGFwaV9rZXk9IjxZT1VSX0FQSV9LRVk+IiwKICAgICksCikKCnJlcSA9IFsKICAgIG9wZXJhdGlvbnMuUmVxdWVzdEJvZHkoKSwKXQoKcmVzID0gcy5jb25maWcuc3Vic2NyaWJlX3RvX3dlYmhvb2tzKHJlcSwKICAgIFJldHJ5Q29uZmlnKCdiYWNrb2ZmJywgQmFja29mZlN0cmF0ZWd5KDEsIDUwLCAxLjEsIDEwMCksIEZhbHNlKSkKCmlmIHJlcyBpcyBub3QgTm9uZToKICAgICMgaGFuZGxlIHJlc3BvbnNlCiAgICBwYXNzCgpgYGAKCklmIHlvdSdkIGxpa2UgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcmV0cnkgc3RyYXRlZ3kgZm9yIGFsbCBvcGVyYXRpb25zIHRoYXQgc3VwcG9ydCByZXRyaWVzLCB5b3UgY2FuIHVzZSB0aGUgYHJldHJ5X2NvbmZpZ2Agb3B0aW9uYWwgcGFyYW1ldGVyIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBTREs6CmBgYHB5dGhvbgppbXBvcnQgc3BlYWtlYXN5YmFyCmZyb20gc3BlYWtlYXN5YmFyLm1vZGVscyBpbXBvcnQgb3BlcmF0aW9ucywgc2hhcmVkCmZyb20gc3BlYWtlYXN5YmFyLnV0aWxzIGltcG9ydCBCYWNrb2ZmU3RyYXRlZ3ksIFJldHJ5Q29uZmlnCgpzID0gc3BlYWtlYXN5YmFyLlNwZWFrZWFzeWJhcigKICAgIHJldHJ5X2NvbmZpZz1SZXRyeUNvbmZpZygnYmFja29mZicsIEJhY2tvZmZTdHJhdGVneSgxLCA1MCwgMS4xLCAxMDApLCBGYWxzZSkKICAgIHNlY3VyaXR5PXNoYXJlZC5TZWN1cml0eSgKICAgICAgICBhcGlfa2V5PSI8WU9VUl9BUElfS0VZPiIsCiAgICApLAopCgpyZXEgPSBbCiAgICBvcGVyYXRpb25zLlJlcXVlc3RCb2R5KCksCl0KCnJlcyA9IHMuY29uZmlnLnN1YnNjcmliZV90b193ZWJob29rcyhyZXEpCgppZiByZXMgaXMgbm90IE5vbmU6CiAgICAjIGhhbmRsZSByZXNwb25zZQogICAgcGFzcwoKYGBgCjwhLS0gRW5kIFJldHJpZXMgW3JldHJpZXNdIC0tPgoKCgo8IS0tIFN0YXJ0IEVycm9yIEhhbmRsaW5nIFtlcnJvcnNdIC0tPgojIyBFcnJvciBIYW5kbGluZwoKSGFuZGxpbmcgZXJyb3JzIGluIHRoaXMgU0RLIHNob3VsZCBsYXJnZWx5IG1hdGNoIHlvdXIgZXhwZWN0YXRpb25zLiAgQWxsIG9wZXJhdGlvbnMgcmV0dXJuIGEgcmVzcG9uc2Ugb2JqZWN0IG9yIHJhaXNlIGFuIGVycm9yLiAgSWYgRXJyb3Igb2JqZWN0cyBhcmUgc3BlY2lmaWVkIGluIHlvdXIgT3BlbkFQSSBTcGVjLCB0aGUgU0RLIHdpbGwgcmFpc2UgdGhlIGFwcHJvcHJpYXRlIEVycm9yIHR5cGUuCgp8IEVycm9yIE9iamVjdCAgICAgIHwgU3RhdHVzIENvZGUgICAgICAgfCBDb250ZW50IFR5cGUgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tIHwKfCBlcnJvcnMuQmFkUmVxdWVzdCB8IDQwMCAgICAgICAgICAgICAgIHwgYXBwbGljYXRpb24vanNvbiAgfAp8IGVycm9ycy5BUElFcnJvciAgIHwgNVhYICAgICAgICAgICAgICAgfCBhcHBsaWNhdGlvbi9qc29uICB8CnwgZXJyb3JzLlNES0Vycm9yICAgfCA0eHgtNXh4ICAgICAgICAgICB8ICovKiAgICAgICAgICAgICAgIHwKCiMjIyBFeGFtcGxlCgpgYGBweXRob24KaW1wb3J0IHNwZWFrZWFzeWJhcgpmcm9tIHNwZWFrZWFzeWJhci5tb2RlbHMgaW1wb3J0IGVycm9ycywgb3BlcmF0aW9ucywgc2hhcmVkCgpzID0gc3BlYWtlYXN5YmFyLlNwZWFrZWFzeWJhcigKICAgIHNlY3VyaXR5PXNoYXJlZC5TZWN1cml0eSgKICAgICAgICBhcGlfa2V5PSI8WU9VUl9BUElfS0VZPiIsCiAgICApLAopCgpyZXEgPSBbCiAgICBvcGVyYXRpb25zLlJlcXVlc3RCb2R5KCksCl0KCnJlcyA9IE5vbmUKdHJ5OgogICAgcmVzID0gcy5jb25maWcuc3Vic2NyaWJlX3RvX3dlYmhvb2tzKHJlcSkKZXhjZXB0IGVycm9ycy5CYWRSZXF1ZXN0IGFzIGU6CiAgICAjIGhhbmRsZSBleGNlcHRpb24KICAgIHJhaXNlKGUpCmV4Y2VwdCBlcnJvcnMuQVBJRXJyb3IgYXMgZToKICAgICMgaGFuZGxlIGV4Y2VwdGlvbgogICAgcmFpc2UoZSkKZXhjZXB0IGVycm9ycy5TREtFcnJvciBhcyBlOgogICAgIyBoYW5kbGUgZXhjZXB0aW9uCiAgICByYWlzZShlKQoKaWYgcmVzIGlzIG5vdCBOb25lOgogICAgIyBoYW5kbGUgcmVzcG9uc2UKICAgIHBhc3MKCmBgYAo8IS0tIEVuZCBFcnJvciBIYW5kbGluZyBbZXJyb3JzXSAtLT4KCgoKPCEtLSBTdGFydCBTZXJ2ZXIgU2VsZWN0aW9uIFtzZXJ2ZXJdIC0tPgojIyBTZXJ2ZXIgU2VsZWN0aW9uCgojIyMgU2VsZWN0IFNlcnZlciBieSBOYW1lCgpZb3UgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHNlcnZlciBnbG9iYWxseSBieSBwYXNzaW5nIGEgc2VydmVyIG5hbWUgdG8gdGhlIGBzZXJ2ZXI6IHN0cmAgb3B0aW9uYWwgcGFyYW1ldGVyIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBTREsgY2xpZW50IGluc3RhbmNlLiBUaGUgc2VsZWN0ZWQgc2VydmVyIHdpbGwgdGhlbiBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IG9uIHRoZSBvcGVyYXRpb25zIHRoYXQgdXNlIGl0LiBUaGlzIHRhYmxlIGxpc3RzIHRoZSBuYW1lcyBhc3NvY2lhdGVkIHdpdGggdGhlIGF2YWlsYWJsZSBzZXJ2ZXJzOgoKfCBOYW1lIHwgU2VydmVyIHwgVmFyaWFibGVzIHwKfCAtLS0tLSB8IC0tLS0tLSB8IC0tLS0tLS0tLSB8CnwgYHByb2RgIHwgYGh0dHBzOi8vc3BlYWtlYXN5LmJhcmAgfCBOb25lIHwKfCBgc3RhZ2luZ2AgfCBgaHR0cHM6Ly9zdGFnaW5nLnNwZWFrZWFzeS5iYXJgIHwgTm9uZSB8CnwgYGN1c3RvbWVyYCB8IGBodHRwczovL3tvcmdhbml6YXRpb259LntlbnZpcm9ubWVudH0uc3BlYWtlYXN5LmJhcmAgfCBgZW52aXJvbm1lbnRgIChkZWZhdWx0IGlzIGBwcm9kYCksIGBvcmdhbml6YXRpb25gIChkZWZhdWx0IGlzIGBhcGlgKSB8CgojIyMjIEV4YW1wbGUKCmBgYHB5dGhvbgppbXBvcnQgc3BlYWtlYXN5YmFyCmZyb20gc3BlYWtlYXN5YmFyLm1vZGVscyBpbXBvcnQgc2hhcmVkCgpzID0gc3BlYWtlYXN5YmFyLlNwZWFrZWFzeWJhcigKICAgIHNlcnZlcj0iY3VzdG9tZXIiLAogICAgc2VjdXJpdHk9c2hhcmVkLlNlY3VyaXR5KAogICAgICAgIGFwaV9rZXk9IjxZT1VSX0FQSV9LRVk+IiwKICAgICksCikKCgpyZXMgPSBzLmluZ3JlZGllbnRzLmxpc3RfaW5ncmVkaWVudHMoaW5ncmVkaWVudHM9WwogICAgJzx2YWx1ZT4nLApdKQoKaWYgcmVzLmNsYXNzZXMgaXMgbm90IE5vbmU6CiAgICAjIGhhbmRsZSByZXNwb25zZQogICAgcGFzcwoKYGBgCgojIyMjIFZhcmlhYmxlcwoKU29tZSBvZiB0aGUgc2VydmVyIG9wdGlvbnMgYWJvdmUgY29udGFpbiB2YXJpYWJsZXMuIElmIHlvdSB3YW50IHRvIHNldCB0aGUgdmFsdWVzIG9mIHRob3NlIHZhcmlhYmxlcywgdGhlIGZvbGxvd2luZyBvcHRpb25hbCBwYXJhbWV0ZXJzIGFyZSBhdmFpbGFibGUgd2hlbiBpbml0aWFsaXppbmcgdGhlIFNESyBjbGllbnQgaW5zdGFuY2U6CiAqIGBlbnZpcm9ubWVudDogbW9kZWxzLlNlcnZlckVudmlyb25tZW50YAogKiBgb3JnYW5pemF0aW9uOiBzdHJgCgojIyMgT3ZlcnJpZGUgU2VydmVyIFVSTCBQZXItQ2xpZW50CgpUaGUgZGVmYXVsdCBzZXJ2ZXIgY2FuIGFsc28gYmUgb3ZlcnJpZGRlbiBnbG9iYWxseSBieSBwYXNzaW5nIGEgVVJMIHRvIHRoZSBgc2VydmVyX3VybDogc3RyYCBvcHRpb25hbCBwYXJhbWV0ZXIgd2hlbiBpbml0aWFsaXppbmcgdGhlIFNESyBjbGllbnQgaW5zdGFuY2UuIEZvciBleGFtcGxlOgpgYGBweXRob24KaW1wb3J0IHNwZWFrZWFzeWJhcgpmcm9tIHNwZWFrZWFzeWJhci5tb2RlbHMgaW1wb3J0IHNoYXJlZAoKcyA9IHNwZWFrZWFzeWJhci5TcGVha2Vhc3liYXIoCiAgICBzZXJ2ZXJfdXJsPSJodHRwczovL3NwZWFrZWFzeS5iYXIiLAogICAgc2VjdXJpdHk9c2hhcmVkLlNlY3VyaXR5KAogICAgICAgIGFwaV9rZXk9IjxZT1VSX0FQSV9LRVk+IiwKICAgICksCikKCgpyZXMgPSBzLmluZ3JlZGllbnRzLmxpc3RfaW5ncmVkaWVudHMoaW5ncmVkaWVudHM9WwogICAgJzx2YWx1ZT4nLApdKQoKaWYgcmVzLmNsYXNzZXMgaXMgbm90IE5vbmU6CiAgICAjIGhhbmRsZSByZXNwb25zZQogICAgcGFzcwoKYGBgCgojIyMgT3ZlcnJpZGUgU2VydmVyIFVSTCBQZXItT3BlcmF0aW9uCgpUaGUgc2VydmVyIFVSTCBjYW4gYWxzbyBiZSBvdmVycmlkZGVuIG9uIGEgcGVyLW9wZXJhdGlvbiBiYXNpcywgcHJvdmlkZWQgYSBzZXJ2ZXIgbGlzdCB3YXMgc3BlY2lmaWVkIGZvciB0aGUgb3BlcmF0aW9uLiBGb3IgZXhhbXBsZToKYGBgcHl0aG9uCmltcG9ydCBzcGVha2Vhc3liYXIKZnJvbSBzcGVha2Vhc3liYXIubW9kZWxzIGltcG9ydCBzaGFyZWQKCnMgPSBzcGVha2Vhc3liYXIuU3BlYWtlYXN5YmFyKAogICAgc2VjdXJpdHk9c2hhcmVkLlNlY3VyaXR5KAogICAgICAgIGFwaV9rZXk9IjxZT1VSX0FQSV9LRVk+IiwKICAgICksCikKCgpyZXMgPSBzLmRyaW5rcy5saXN0X2RyaW5rcyhzZXJ2ZXJfdXJsPSJodHRwczovL3NwZWFrZWFzeS5iYXIiLCBkcmlua190eXBlPXNoYXJlZC5Ecmlua1R5cGUuU1BJUklUKQoKaWYgcmVzLmNsYXNzZXMgaXMgbm90IE5vbmU6CiAgICAjIGhhbmRsZSByZXNwb25zZQogICAgcGFzcwoKYGBgCjwhLS0gRW5kIFNlcnZlciBTZWxlY3Rpb24gW3NlcnZlcl0gLS0+CgoKCjwhLS0gU3RhcnQgQ3VzdG9tIEhUVFAgQ2xpZW50IFtodHRwLWNsaWVudF0gLS0+CiMjIEN1c3RvbSBIVFRQIENsaWVudAoKVGhlIFB5dGhvbiBTREsgbWFrZXMgQVBJIGNhbGxzIHVzaW5nIHRoZSBbcmVxdWVzdHNdKGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9yZXF1ZXN0cy8pIEhUVFAgbGlicmFyeS4gIEluIG9yZGVyIHRvIHByb3ZpZGUgYSBjb252ZW5pZW50IHdheSB0byBjb25maWd1cmUgdGltZW91dHMsIGNvb2tpZXMsIHByb3hpZXMsIGN1c3RvbSBoZWFkZXJzLCBhbmQgb3RoZXIgbG93LWxldmVsIGNvbmZpZ3VyYXRpb24sIHlvdSBjYW4gaW5pdGlhbGl6ZSB0aGUgU0RLIGNsaWVudCB3aXRoIGEgY3VzdG9tIGByZXF1ZXN0cy5TZXNzaW9uYCBvYmplY3QuCgpGb3IgZXhhbXBsZSwgeW91IGNvdWxkIHNwZWNpZnkgYSBoZWFkZXIgZm9yIGV2ZXJ5IHJlcXVlc3QgdGhhdCB0aGlzIHNkayBtYWtlcyBhcyBmb2xsb3dzOgpgYGBweXRob24KaW1wb3J0IHNwZWFrZWFzeWJhcgppbXBvcnQgcmVxdWVzdHMKCmh0dHBfY2xpZW50ID0gcmVxdWVzdHMuU2Vzc2lvbigpCmh0dHBfY2xpZW50LmhlYWRlcnMudXBkYXRlKHsneC1jdXN0b20taGVhZGVyJzogJ3NvbWVWYWx1ZSd9KQpzID0gc3BlYWtlYXN5YmFyLlNwZWFrZWFzeWJhcihjbGllbnQ9aHR0cF9jbGllbnQpCmBgYAo8IS0tIEVuZCBDdXN0b20gSFRUUCBDbGllbnQgW2h0dHAtY2xpZW50XSAtLT4KCgoKPCEtLSBTdGFydCBBdXRoZW50aWNhdGlvbiBbc2VjdXJpdHldIC0tPgojIyBBdXRoZW50aWNhdGlvbgoKIyMjIFBlci1DbGllbnQgU2VjdXJpdHkgU2NoZW1lcwoKVGhpcyBTREsgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBzZWN1cml0eSBzY2hlbWVzIGdsb2JhbGx5OgoKfCBOYW1lICAgICAgICAgIHwgVHlwZSAgICAgICAgICB8IFNjaGVtZSAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8CnwgYGFwaV9rZXlgICAgICB8IGFwaUtleSAgICAgICAgfCBBUEkga2V5ICAgICAgIHwKfCBgYmVhcmVyX2F1dGhgIHwgaHR0cCAgICAgICAgICB8IEhUVFAgQmVhcmVyICAgfAoKWW91IGNhbiBzZXQgdGhlIHNlY3VyaXR5IHBhcmFtZXRlcnMgdGhyb3VnaCB0aGUgYHNlY3VyaXR5YCBvcHRpb25hbCBwYXJhbWV0ZXIgd2hlbiBpbml0aWFsaXppbmcgdGhlIFNESyBjbGllbnQgaW5zdGFuY2UuIFRoZSBzZWxlY3RlZCBzY2hlbWUgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQgdG8gYXV0aGVudGljYXRlIHdpdGggdGhlIEFQSSBmb3IgYWxsIG9wZXJhdGlvbnMgdGhhdCBzdXBwb3J0IGl0LiBGb3IgZXhhbXBsZToKYGBgcHl0aG9uCmltcG9ydCBzcGVha2Vhc3liYXIKZnJvbSBzcGVha2Vhc3liYXIubW9kZWxzIGltcG9ydCBzaGFyZWQKCnMgPSBzcGVha2Vhc3liYXIuU3BlYWtlYXN5YmFyKAogICAgc2VjdXJpdHk9c2hhcmVkLlNlY3VyaXR5KAogICAgICAgIGFwaV9rZXk9IjxZT1VSX0FQSV9LRVk+IiwKICAgICksCikKCgpyZXMgPSBzLmluZ3JlZGllbnRzLmxpc3RfaW5ncmVkaWVudHMoaW5ncmVkaWVudHM9WwogICAgJzx2YWx1ZT4nLApdKQoKaWYgcmVzLmNsYXNzZXMgaXMgbm90IE5vbmU6CiAgICAjIGhhbmRsZSByZXNwb25zZQogICAgcGFzcwoKYGBgCgojIyMgUGVyLU9wZXJhdGlvbiBTZWN1cml0eSBTY2hlbWVzCgpTb21lIG9wZXJhdGlvbnMgaW4gdGhpcyBTREsgcmVxdWlyZSB0aGUgc2VjdXJpdHkgc2NoZW1lIHRvIGJlIHNwZWNpZmllZCBhdCB0aGUgcmVxdWVzdCBsZXZlbC4gRm9yIGV4YW1wbGU6CmBgYHB5dGhvbgppbXBvcnQgc3BlYWtlYXN5YmFyCmZyb20gc3BlYWtlYXN5YmFyLm1vZGVscyBpbXBvcnQgb3BlcmF0aW9ucwoKcyA9IHNwZWFrZWFzeWJhci5TcGVha2Vhc3liYXIoKQoKcmVxID0gb3BlcmF0aW9ucy5Mb2dpblJlcXVlc3RCb2R5KAogICAgdHlwZT1vcGVyYXRpb25zLlR5cGUuQVBJX0tFWSwKKQoKcmVzID0gcy5hdXRoZW50aWNhdGlvbi5sb2dpbihyZXEsIG9wZXJhdGlvbnMuTG9naW5TZWN1cml0eSgKICAgIHBhc3N3b3JkPSI8UEFTU1dPUkQ+IiwKICAgIHVzZXJuYW1lPSI8VVNFUk5BTUU+IiwKKSkKCmlmIHJlcy5vYmplY3QgaXMgbm90IE5vbmU6CiAgICAjIGhhbmRsZSByZXNwb25zZQogICAgcGFzcwoKYGBgCjwhLS0gRW5kIEF1dGhlbnRpY2F0aW9uIFtzZWN1cml0eV0gLS0+Cgo8IS0tIFBsYWNlaG9sZGVyIGZvciBGdXR1cmUgU3BlYWtlYXN5IFNESyBTZWN0aW9ucyAtLT4KCgoKIyMjIE1hdHVyaXR5CgpUaGlzIFNESyBpcyBpbiBiZXRhLCBhbmQgdGhlcmUgbWF5IGJlIGJyZWFraW5nIGNoYW5nZXMgYmV0d2VlbiB2ZXJzaW9ucyB3aXRob3V0IGEgbWFqb3IgdmVyc2lvbiB1cGRhdGUuIFRoZXJlZm9yZSwgd2UgcmVjb21tZW5kIHBpbm5pbmcgdXNhZ2UKdG8gYSBzcGVjaWZpYyBwYWNrYWdlIHZlcnNpb24uIFRoaXMgd2F5LCB5b3UgY2FuIGluc3RhbGwgdGhlIHNhbWUgdmVyc2lvbiBlYWNoIHRpbWUgd2l0aG91dCBicmVha2luZyBjaGFuZ2VzIHVubGVzcyB5b3UgYXJlIGludGVudGlvbmFsbHkKbG9va2luZyBmb3IgdGhlIGxhdGVzdCB2ZXJzaW9uLgoKIyMjIENvbnRyaWJ1dGlvbnMKCldoaWxlIHdlIHZhbHVlIG9wZW4tc291cmNlIGNvbnRyaWJ1dGlvbnMgdG8gdGhpcyBTREssIHRoaXMgbGlicmFyeSBpcyBnZW5lcmF0ZWQgcHJvZ3JhbW1hdGljYWxseS4KRmVlbCBmcmVlIHRvIG9wZW4gYSBQUiBvciBhIEdpdGh1YiBpc3N1ZSBhcyBhIHByb29mIG9mIGNvbmNlcHQgYW5kIHdlJ2xsIGRvIG91ciBiZXN0IHRvIGluY2x1ZGUgaXQgaW4gYSBmdXR1cmUgcmVsZWFzZSAhCgojIyMgU0RLIENyZWF0ZWQgYnkgW1NwZWFrZWFzeV0oaHR0cHM6Ly9kb2NzLnNwZWFrZWFzeWFwaS5kZXYvZG9jcy91c2luZy1zcGVha2Vhc3kvY2xpZW50LXNka3MpCg== readmeEtag: '"ca4fcb630c438231d9619c6bb544e5b77c0978e2"' readmeLastModified: Mon, 08 Apr 2024 15:05:30 GMT repositoryId: 604771680 description: null created: '2023-02-21T18:56:21Z' updated: '2025-09-10T16:05:14Z' language: TypeScript archived: false stars: 3 watchers: 2 forks: 0 owner: speakeasy-sdks logo: https://avatars.githubusercontent.com/u/121978464?v=4 license: MIT repoEtag: '"c72dd931e0d164462896fa214e4c899841aa0b9077ee782cab5be5c6153888b4"' repoLastModified: Wed, 10 Sep 2025 16:05:14 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/enorganic/oapi v3: true id: 7c7acc9e926f31e4935a1e03abcc82ec repositoryMetadata: base64Readme: >- IyBvYXBpCgpbIVt0ZXN0XShodHRwczovL2dpdGh1Yi5jb20vZW5vcmdhbmljL29hcGkvYWN0aW9ucy93b3JrZmxvd3MvdGVzdC55bWwvYmFkZ2Uuc3ZnP2JyYW5jaD1tYWluKV0oaHR0cHM6Ly9naXRodWIuY29tL2Vub3JnYW5pYy9vYXBpL2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3QueW1sKQpbIVtQeVBJIHZlcnNpb25dKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9weS9vYXBpLnN2Zz9pY29uPXNpJTNBcHl0aG9uKV0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL3B5L29hcGkpCgpgb2FwaWAgaXMgYSBsaWJyYXJ5IGZvciBhdXRob3JpbmcgcHl0aG9uIGNsaWVudCBsaWJyYXJpZXMgZm9yIHdlYiBBUElzCmJhc2VkIG9uIGFuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiAoYm90aApPcGVuQVBJL1N3YWdnZXIgW3ZlcnNpb24gMgpdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8yLjAubWQpCmFuZCBbdmVyc2lvbiAzCl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4xLm1kKQphcmUgc3VwcG9ydGVkKS4KCmBvYXBpYC1nZW5lcmF0ZWQgcGFja2FnZXMvbW9kdWxlcyBkaWZmZXIgZnJvbSB0aG9zZSBnZW5lcmF0ZWQgYnkgb3RoZXIgdG9vbHMKKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KW3N3YWdnZXItY29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikpIGluIHRoYXQKYG9hcGlgIGdlbmVyYXRlcyBhIGRhdGEgbW9kZWwgd2hpY2ggZW5mb3JjZXMgdGhlIHNjaGVtYXMgZGVmaW5lZAppbiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLiBUaGlzIG1lYW5zIHRoYXQgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0cywKYW5kIHRoZWlyIHByb3BlcnRpZXMvaXRlbXMvbWVtYmVycywgY2Fubm90IGNvbXByaXNlIGRhdGEgdHlwZXMgd2hpY2ggZGlmZmVyCmZyb20gdGhvc2Ugc3BlY2lmaWVkIGluIHRoZWlyIE9wZW5BUEkgZG9jdW1lbnQuIEFkZGl0aW9uYWxseSwgcmVxdWVzdCBhbmQKcmVzcG9uc2Ugb2JqZWN0cyBjYW4gYmUgdmFsaWRhdGVkIHVzaW5nIGBzb2IudmFsaWRhdGVgIHRvIHZlcmlmeSB0aGF0IHRoZXkKd2VyZSBub3QgcGFyc2VkIGZyb20gYW4gb2JqZWN0IGhhdmluZyBhdHRyaWJ1dGVzICpub3QqIGRlZmluZWQgaW4gdGhlCmVsZW1lbnQncyBKU09OIHNjaGVtYSwgYW5kICpoYXZlKiBhbGwgcmVxdWlyZWQgYXR0cmlidXRlcy4gYG9hcGlgCmZ1bGx5IHN1cHBvcnRzIHBvbHltb3JwaGlzbSB3aGVuIGEgc2NoZW1hIGhhcyBhbiAiYW55T2YiLCAiYWxsT2YiLCBvcgoib25lT2YiIGF0dHJpYnV0ZSAoYWx0aG91Z2ggYG9hcGlgIGRvZXMgbm90ICpyZXF1aXJlKiBhIFtkaXNjcmltaW5hdG9yCl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4xLm1kI2Rpc2NyaW1pbmF0b3Itb2JqZWN0KQp0byBiZSBkZWZpbmVkKS4KCk5vdGFibGUgZmVhdHVyZXMgb2YgYW4gYG9hcGlgIGdlbmVyYXRlZCBjbGllbnQvbW9kZWwgbGlicmFyeSBpbmNsdWRlOgoKLSBgb2FwaWAgZ2VuZXJhdGVkIGRhdGEgbW9kZWxzIGFuZCBjbGllbnRzIGFyZSBmdWxseSB0eXBlLWFubm90YXRlZAotIGBvYXBpYCBnZW5lcmF0ZWQgZGF0YSBtb2RlbHMgYW5kIGNsaWVudHMgYWRoZXJlIHRvIFBFUC04IGZvcm1hdHRpbmcKLSBgb2FwaWAgZ2VuZXJhdGVkIGRhdGEgbW9kZWxzIGFuZCBjbGllbnRzIGluY2x1ZGUgZG9jc3RyaW5ncyBmb3IgYWxsIG1vZGVscywKICBtb2RlbCBwcm9wZXJ0aWVzLCBjbGllbnQgbWV0aG9kcywgYW5kIGNsaWVudCBtZXRob2QgcGFyYW1ldGVycywgaW5mZXJyZWQKICBmcm9tICJkZXNjcmlwdGlvbiIgYW5kICJzdW1tYXJ5IiBhdHRyaWJ1dGVzIG9mIGVsZW1lbnRzIHdpdGhpbiB0aGUKICBzcGVjaWZpY2F0aW9uCi0gYG9hcGlgIGdlbmVyYXRlZCBjbGllbnRzIHdpbGwgaGFuZGxlIHRoZSBtb3N0IGNvbW1vbiBzZXJ2ZXItdG8tc2VydmVyCiAgYXV0aGVudGljYXRpb24gbWV0aG9kcyBvdXQtb2YtYm94LCBpbmNsdWRpbmcgdGhlIE9BdXRoMiBhdXRob3JpemF0aW9uCiAgY29kZSBmbG93IChjbGllbnRfaWQvY2xpZW50X3NlY3JldCksIEFQSSBrZXlzLCBiZWFyZXIgdG9rZW5zLCBIVFRQIGJhc2ljCiAgYXV0aCwgYW5kIG1vc3QgY29va2llLWJhc2VkIGF1dGhlbnRpY2F0aW9uIHBhdHRlcm5zLiBDdXN0b20gYXV0aGVudGljYXRpb24KICBtZXRob2RzIGFyZSBhbHNvIGVhc2lseSBhY2NvbXBsaXNoZWQgYnkgc3BlY2lmeWluZyBjdXN0b20gYmFzZSBjbGFzc2VzCiAgYW5kL29yIHBhc3NpbmcgaW5pdGlhbGl6YXRpb24gZGVjb3JhdG9ycyB0byBgb2FwaS53cml0ZV9jbGllbnRfbW9kdWxlYC4KLSBgb2FwaWAgZ2VuZXJhdGVkIGNsaWVudHMgYW5kIG1vZGVscyBhcmUgZWFzaWx5IHVwZGF0ZWQuIEZvciBpbnN0YW5jZTogYG9hcGlgCiAgZ2VuZXJhdGVkIGRhdGEgbW9kZWwgY2xhc3NlcyBjYW4gYmUgcmVuYW1lZCB1c2luZyB5b3VyIGZhdm9yaXRlIElERSdzCiAgcmVmYWN0b3JpbmcgdG9vbHMsIGFuZCBzdWJzZXF1ZW50IHVwZGF0ZXMgdG8gdGhhdCBkYXRhIG1vZGVsIChzdWNoIGFzCiAgdG8gcmVmbGVjdCBtaW5vci12ZXJzaW9uIHVwZGF0ZXMgdG8gdGhlIHNwZWMgd2hpY2ggYWRkIGVuZHBvaW50cywgc2NoZW1hcywKICBwYXJhbWV0ZXJzLCBldGMuKSB3aWxsIHJldGFpbiB5b3VyIG5ldyBjbGFzcyBuYW1lcywgc28gbG9uZyBhcyB0aGUKICBzY2hlbWEgZnJvbSB3aGljaCB0aGUgY2xhc3Mgd2FzIGdlbmVyYXRlZCByZW1haW5zIGluIHRoZSBzYW1lIGxvY2F0aW9uCiAgd2l0aGluIHRoZSBzcGVjLiBDbGFzcyBuYW1pbmcgY2FuIGFsc28gYmUgY3VzdG9taXplZCBieSBwYXNzaW5nIGEgY3VzdG9tCiAgaG9vayB0byB0aGUgKmdldF9jbGFzc19uYW1lX2Zyb21fcG9pbnRlciogcGFyYW1ldGVyIGZvcgogIGBvYXBpLndyaXRlX21vZGVsX21vZHVsZWAu readmeEtag: '"e35ffe4f86c1a6ec69681993e2c08957248950a6"' readmeLastModified: Thu, 24 Apr 2025 23:58:53 GMT repositoryId: 190461316 description: A tool for generating client libraries from an OpenAPI document. created: '2019-06-05T20:09:55Z' updated: '2026-01-22T19:26:24Z' language: Python archived: false stars: 2 watchers: 1 forks: 2 owner: enorganic logo: https://avatars.githubusercontent.com/u/91716117?v=4 license: MIT repoEtag: '"0b6be582eb512a34fd8ba94881143b52f0064fb64f4a2e6d225d8d4648713e4f"' repoLastModified: Thu, 22 Jan 2026 19:26:24 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/ankumar/programming-machine-learning v3: true id: 6221a7dad056965aa69ad16ff0132577 repositoryMetadata: base64Readme: >- IyBQbGF0Zm9ybSBTcGFjZQoKMS4gWyoqVGhlIFNoaWZ0IGZyb20gTW9kZWxzIHRvIENvbXBvdW5kIEFJIFN5c3RlbXMqKl0oaHR0cHM6Ly9iYWlyLmJlcmtlbGV5LmVkdS9ibG9nLzIwMjQvMDIvMTgvY29tcG91bmQtYWktc3lzdGVtcy8pIC0gVGhpcyBhcnRpY2xlIGZyb20gQmVya2VsZXkgQUkgUmVzZWFyY2ggKEJBSVIpIGhpZ2hsaWdodHMgYSBncm93aW5nIHRyZW5kIHdoZXJlIEFJIGFkdmFuY2VtZW50cyBpbmNyZWFzaW5nbHkgcmVseSBvbiAqKmNvbXBvdW5kIEFJIHN5c3RlbXMqKuKAlGNvbWJpbmF0aW9ucyBvZiBtdWx0aXBsZSBtb2RlbHMgYW5kIGNvbXBvbmVudHPigJRyYXRoZXIgdGhhbiB0cmFkaXRpb25hbCBtb25vbGl0aGljIG1vZGVscy4gQ29tcG91bmQgc3lzdGVtcyBvZmZlciBtb3JlIGZsZXhpYmlsaXR5IGFuZCBhZGFwdGFiaWxpdHksIGFzIGVhY2ggY29tcG9uZW50IGNhbiBzcGVjaWFsaXplIGluIGEgZGlmZmVyZW50IHRhc2sgb3IgcGhhc2Ugb2YgdGhlIHBpcGVsaW5lLiAgCgpLZXkgcG9pbnRzOgotICoqRGVzaWduLCBvcHRpbWl6YXRpb24sIGFuZCBvcGVyYXRpb246KiogQXBwcm9hY2hlcyBhcmUgc3RpbGwgZW1lcmdpbmcsIGJ1dCBjb21wb3VuZCBBSSBzeXN0ZW1zIGFyZSBwcm92aW5nIG1vcmUgZWZmaWNpZW50IGZvciBjb21wbGV4IHRhc2tzLgotICoqTWF4aW1pemluZyByZWxpYWJpbGl0eSBhbmQgcXVhbGl0eToqKiBUaGVzZSBzeXN0ZW1zIHByb21pc2UgaGlnaGVyIHJlbGlhYmlsaXR5LCBwYXJ0aWN1bGFybHkgZm9yIGxhcmdlLXNjYWxlIGFwcGxpY2F0aW9ucywgYnkgYnJlYWtpbmcgZG93biB0YXNrcyBpbnRvIHNtYWxsZXIsIG1vcmUgbWFuYWdlYWJsZSB1bml0cy4gCi0gKipUcmVuZCBmb3IgMjAyNDoqKiBCQUlSIHNlZXMgdGhpcyBhcyBvbmUgb2YgdGhlIG1vc3QgaW1wb3J0YW50IHRyZW5kcywgd2hlcmUgZGV2ZWxvcGVycyB3aWxsIGZvY3VzIG9uIGhvdyB0byBhc3NlbWJsZSB0aGVzZSBjb21wb25lbnRzIGluIGVmZmVjdGl2ZSB3YXlzLgogICAKIVtpbWFnZV0oaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2Q4NzRlODJmLTliODktNDg3ZS04OTRjLTFlZDNiMjQ3Mjk0ZCkKPHAgYWxpZ249ImNlbnRlciI+SW5jcmVhc2luZ2x5IG1hbnkgbmV3IEFJIHJlc3VsdHMgYXJlIGZyb20gY29tcG91bmQgc3lzdGVtcy48L3A+CgoiX0ZpZ3VyaW5nIG91dCB0aGUgYmVzdCBwcmFjdGljZXMgZm9yIGRldmVsb3BpbmcgY29tcG91bmQgQUkgc3lzdGVtcyBpcyBzdGlsbCBhbiBvcGVuIHF1ZXN0aW9uLCBidXQgdGhlcmUgYXJlIGFscmVhZHkgZXhjaXRpbmcgYXBwcm9hY2hlcyB0byBhaWQgd2l0aCBkZXNpZ24sIGVuZC10by1lbmQgb3B0aW1pemF0aW9uLCBhbmQgb3BlcmF0aW9uLiBXZSBiZWxpZXZlIHRoYXQgY29tcG91bmQgQUkgc3lzdGVtcyB3aWxsIHJlbWFpbiB0aGUgYmVzdCB3YXkgdG8gbWF4aW1pemUgdGhlIHF1YWxpdHkgYW5kIHJlbGlhYmlsaXR5IG9mIEFJIGFwcGxpY2F0aW9ucyBnb2luZyBmb3J3YXJkLCBhbmQgbWF5IGJlIG9uZSBvZiB0aGUgbW9zdCBpbXBvcnRhbnQgdHJlbmRzIGluIEFJIGluIDIwMjQuXyIKCjIuIFsqKkJ1aWxkaW5nIEEgR2VuZXJhdGl2ZSBBSSBQbGF0Zm9ybSoqXShodHRwczovL2h1eWVuY2hpcC5jb20vMjAyNC8wNy8yNS9nZW5haS1wbGF0Zm9ybS5odG1sKSAtIFRoaXMgYXJ0aWNsZSBleHBsb3JlcyB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBkZXZlbG9wbWVudCBvZiBhIGdlbmVyYXRpdmUgQUkgcGxhdGZvcm0sIGZvY3VzaW5nIG9uIHRoZSBjaGFsbGVuZ2VzIG9mIGludGVncmF0aW5nIHZhcmlvdXMgQUkgY29tcG9uZW50cy4gSXQgZW1waGFzaXplczoKLSAqKk9wZW4gU291cmNlIExMTSBUb29sczoqKiBUaGUgYXJ0aWNsZSByZWZlcmVuY2VzIHNldmVyYWwgdG9vbHMgYW5kIHRlY2huaXF1ZXMgZm9yIGJ1aWxkaW5nIGdlbmVyYXRpdmUgQUksIGVzcGVjaWFsbHkgZm9jdXNpbmcgb24gbW9kZWwgYWxpZ25tZW50LCBvcHRpbWl6YXRpb24sIGFuZCBhZGFwdGFiaWxpdHkuIFRoZSByZWZlcmVuY2VkIFtPcGVuIFNvdXJjZSBMTE0gVG9vbHNdKGh0dHBzOi8vaHV5ZW5jaGlwLmNvbS9sbGFtYS1wb2xpY2UpIGFyZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBlY29zeXN0ZW0gc3Vycm91bmRpbmcgZ2VuZXJhdGl2ZSBBSSBtb2RlbHMgbGlrZSBNZXRh4oCZcyBMTGFNQS4KLSAqKkNoYWxsZW5nZXMgaW4gcGxhdGZvcm0gYnVpbGRpbmc6KiogRnJvbSBtb2RlbCBpbnRlZ3JhdGlvbiB0byBlbnN1cmluZyB0aGUgYWxpZ25tZW50IG9mIGdlbmVyYXRpdmUgQUkgb3V0cHV0IHdpdGggaW50ZW5kZWQgdXNlIGNhc2VzLCB0aGVyZSBhcmUgbWFueSBodXJkbGVzIGluIGFjaGlldmluZyBhbiBvcGVyYXRpb25hbCBwbGF0Zm9ybS4KCkJvdGggYXJ0aWNsZXMgc3RyZXNzIHRoYXQgdGhlIGZ1dHVyZSBvZiBBSSB3aWxsIGludm9sdmUgKiptb3JlIHNvcGhpc3RpY2F0ZWQgc3lzdGVtcyoqLCByZWx5aW5nIG9uIHRoZSBjb29wZXJhdGlvbiBvZiB2YXJpb3VzIHNwZWNpYWxpemVkIG1vZGVscyAoY29tcG91bmQgQUkpIGFuZCB0aGUgaW50ZWdyYXRpb24gb2YgZGl2ZXJzZSB0b29scyBmb3IgZ2VuZXJhdGl2ZSBBSSBwbGF0Zm9ybSBkZXZlbG9wbWVudC4gVGhpcyBhbGlnbnMgd2l0aCBvbmdvaW5nIGV4cGxvcmF0aW9uIG9mICoqY29tcG91bmQgQUkgc3lzdGVtcyoqIGFuZCAqKmdlbmVyYXRpdmUgQUkgcGxhdGZvcm0gYXJjaGl0ZWN0dXJlKiouCiAgIAojIyBBUElzClN0YXJ0ZWQgd2l0aCB0aGlzIG9uZSBlbmRwb2ludCBDb21wbGV0aW9ucyAqKi9jb21wbGV0aW9ucyoqIHdpdGggVGV4dCBJbnB1dC9PdXRwdXQgKG5vdyBMZWdhY3kpICAKICAKVGhlbiBDaGF0R1BULCBDaGF0IGNvbXBsZXRpb25zICoqL2NoYXQvY29tcGxldGlvbnMqKiAgd2l0aCBNZXNzYWdlcyBJbnB1dC9PdXRwdXQKICAKMy4gRW1iZWRkaW5ncwkJCSoqL2VtYmVkZGluZ3MqKgo0LiBJbWFnZSBnZW5lcmF0aW9uCQkqKi9pbWFnZXMvZ2VuZXJhdGlvbnMqKgo1LiBUZXh0IHRvIHNwZWVjaAkJCSoqL2F1ZGlvL3NwZWVjaCoqCjYuIFNwZWVjaCB0byB0ZXh0CQkJKiovYXVkaW8vdHJhbnNjcmlwdGlvbnMqKgo3LiBNb2RlcmF0aW9uCQkJKiovbW9kZXJhdGlvbnMqKgo4LiBGaW5lLXR1bmluZyAgKiovZmluZV90dW5pbmcvam9icyoqCjkuIEJhdGNoCQkJCSoqL2ZpbGVzIC9iYXRjaGVzKioKICAKUkVTVCBBUElzOiAgCi0gRnVsbCBPcGVuQVBJIHNwZWNpZmljYXRpb24gZm9yIHRoZSBbT3BlbkFJIEFQSV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5haS9vcGVuYWktb3BlbmFwaS9ibG9iL21hc3Rlci9vcGVuYXBpLnlhbWwpICAgIAotIFJlc3BvbnNlIEZvcm1hdHMgLSBbQnVpbGRpbmcgQUdJIHdpdGggT3BlbkFJJ3MgU3RydWN0dXJlZCBPdXRwdXRzIEFQSV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1Oak9mSDlEOGFKbykKLSBGdW5jdGlvbiBDYWxsaW5nIC0gUXVlcnkgRGF0YWJhc2UsIFNlbmQgQWxlcnRzIGV0Yy4KICAtIFtBenVyZSBPcGVuQUkgQVBJXShodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvYXp1cmUvYWktc2VydmljZXMvb3BlbmFpL3JlZmVyZW5jZSNhcGktc3BlY3MpCiAgLSBbQmVkcm9jayBBUEldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX3J1bnRpbWVfSW52b2tlTW9kZWwuaHRtbCkKICAtIFtMbGFtYSBTdGFjayBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9tZXRhLWxsYW1hL2xsYW1hLXN0YWNrL2Jsb2IvbWFpbi9kb2NzL3Jlc291cmNlcy9sbGFtYS1zdGFjay1zcGVjLnlhbWwpCiAgLSBHZW1pbmkgQVBJIC0gPwoKUHl0aG9uIFNES3M6ICAKLSBPcGVuQUkgUHl0aG9uIFtBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYWkvb3BlbmFpLXB5dGhvbi9ibG9iL21haW4vYXBpLm1kKSBsaWJyYXJ5IGluIHRoZSBUaGUgb2ZmaWNpYWwgUHl0aG9uIGxpYnJhcnkgZm9yIHRoZSBbT3BlbkFJIEFQSV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5haS9vcGVuYWktcHl0aG9uKQoKYGBgcHl0aG9uICAKaW1wb3J0IG9zCmZyb20gb3BlbmFpIGltcG9ydCBPcGVuQUkKCmNsaWVudCA9IE9wZW5BSSgKICAgICMgVGhpcyBpcyB0aGUgZGVmYXVsdCBhbmQgY2FuIGJlIG9taXR0ZWQKICAgIGFwaV9rZXk9b3MuZW52aXJvbi5nZXQoIk9QRU5BSV9BUElfS0VZIiksCikKCmNoYXRfY29tcGxldGlvbiA9IGNsaWVudC5jaGF0LmNvbXBsZXRpb25zLmNyZWF0ZSgKICAgIG1lc3NhZ2VzPVsKICAgICAgICB7CiAgICAgICAgICAgICJyb2xlIjogInVzZXIiLAogICAgICAgICAgICAiY29udGVudCI6ICJTYXkgdGhpcyBpcyBhIHRlc3QiLAogICAgICAgIH0KICAgIF0sCiAgICBtb2RlbD0iZ3B0LTMuNS10dXJibyIsCikKCnByaW50KGNoYXRfY29tcGxldGlvbi50b19qc29uKCkpCiMgcHJpbnQoY2hhdF9jb21wbGV0aW9uLmNob2ljZXNbMF0ubWVzc2FnZS5jb250ZW50KQoKZnJvbSBvcGVuYWkgaW1wb3J0IEF6dXJlT3BlbkFJCgojIGdldHMgdGhlIEFQSSBLZXkgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZSBBWlVSRV9PUEVOQUlfQVBJX0tFWQpjbGllbnQgPSBBenVyZU9wZW5BSSgKICAgICMgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2F6dXJlL2FpLXNlcnZpY2VzL29wZW5haS9yZWZlcmVuY2UjcmVzdC1hcGktdmVyc2lvbmluZwogICAgYXBpX3ZlcnNpb249IjIwMjMtMDctMDEtcHJldmlldyIsCiAgICAjIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9henVyZS9jb2duaXRpdmUtc2VydmljZXMvb3BlbmFpL2hvdy10by9jcmVhdGUtcmVzb3VyY2U/cGl2b3RzPXdlYi1wb3J0YWwjY3JlYXRlLWEtcmVzb3VyY2UKICAgIGF6dXJlX2VuZHBvaW50PSJodHRwczovL2V4YW1wbGUtZW5kcG9pbnQub3BlbmFpLmF6dXJlLmNvbSIsCiAgICAjIGF6dXJlX2RlcGxveW1lbnQ9ImdwdDM1IiwKKQoKY2hhdF9jb21wbGV0aW9uID0gY2xpZW50LmNoYXQuY29tcGxldGlvbnMuY3JlYXRlKAogICAgIyBtb2RlbD0iZGVwbG95bWVudC1uYW1lIiwgICMgZS5nLiBncHQtMzUtaW5zdGFudAogICAgbW9kZWw9ImdwdDM1IiwgICMgZ3B0LTM1LXR1cmJvCiAgICBtZXNzYWdlcz1bCiAgICAgICAgewogICAgICAgICAgICAicm9sZSI6ICJ1c2VyIiwKICAgICAgICAgICAgImNvbnRlbnQiOiAiSG93IGRvIEkgb3V0cHV0IGFsbCBmaWxlcyBpbiBhIGRpcmVjdG9yeSB1c2luZyBQeXRob24/IiwKICAgICAgICB9LAogICAgXSwKKQpwcmludChjaGF0X2NvbXBsZXRpb24udG9fanNvbigpKQpgYGAKICAKLSBBbnRocm9waWMgUHl0aG9uICAgIAoKYGBgcHl0aG9uCmNsaWVudCA9IEFudGhyb3BpYygpICAKY2xpZW50ID0gQW50aHJvcGljQmVkcm9jaygpICAKY2xpZW50ID0gQW50aHJvcGljVmVydGV4KCkgIAoKbWVzc2FnZSA9IGNsaWVudC5tZXNzYWdlcy5jcmVhdGUoKSAgCnByaW50KG1lc3NhZ2UuY29udGVudCkKYGBgCgoqKk1vcmUgQVBJczoqKgogIAotIFtEcm9wIGluIHJlcGxhY2VtZW50XShodHRwczovL2dpdGh1Yi5jb20vZGF0YXN0YXgvYXN0cmEtYXNzaXN0YW50cy1hcGkpIGZvciB0aGUgT3BlbkFJIEFzc2lzdGFudHMgQVBJCiAgLSBGdWxsIGNvdmVyYWdlIG9mIE9wZW5BSSBlbmRwb2ludHMgaW4gdGhlIHJlcG8gW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRhc3RheC9hc3RyYS1hc3Npc3RhbnRzLWFwaS9ibG9iL21haW4vY292ZXJhZ2UubWQpCiAKLSBbTGxhbWEgU3RhY2sgUkZDXShodHRwczovL2dpdGh1Yi5jb20vbWV0YS1sbGFtYS9sbGFtYS1zdGFjay9ibG9iL21haW4vcmZjcy9SRkMtMDAwMS1sbGFtYS1zdGFjay5tZCkKICAtIGh0dHBzOi8vZ2l0aHViLmNvbS9tZXRhLWxsYW1hL2xsYW1hLXN0YWNrLWFwcHMKICAtIGh0dHBzOi8vZ2l0aHViLmNvbS9tZXRhLWxsYW1hL2xsYW1hLXN0YWNrCiAKLSBbV2ViIEFQSXNdKGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZG9jcy9haS9idWlsdC1pbikKICAtIGh0dHBzOi8veC5jb20vYWRkeW9zbWFuaS9zdGF0dXMvMTg0MzMyODY1MzE1NTA2MjEwOCAgCgoqKk1vcmUgTGFuZ3VhZ2VzOioqCi0gVGhlIG9mZmljaWFsIFtHb10oaHR0cHM6Ly9naXRodWIuY29tL29wZW5haS9vcGVuYWktZ28pIGxpYnJhcnkgZm9yIHRoZSBPcGVuQUkgQVBJCiAgICAKIyMgU2VjcmV0cwoKIyMjIDEuIEFQSSBLZXlzCkFuIEFQSSBrZXkgaXMgYSBzaW1wbGUgc3RyaW5nIChvZnRlbiBhbHBoYW51bWVyaWMpIHVzZWQgdG8gYXV0aGVudGljYXRlIHJlcXVlc3RzLiBJdCBjYW4gYmUgaW5jbHVkZWQgYXM6Ci0gKipVUkwgUGFyYW1ldGVyKio6ICAKICBgaHR0cHM6Ly9leGFtcGxlLmNvbS9hcGkvcmVzb3VyY2U/YXBpX2tleT1ZT1VSX0FQSV9LRVlgCi0gKipIZWFkZXIqKjogIAogIGBBdXRob3JpemF0aW9uOiBBcGlLZXkgWU9VUl9BUElfS0VZYAoKQVBJIGtleXMgYXJlIHR5cGljYWxseSB1c2VkIGZvciBzaW1wbGUgYXV0aGVudGljYXRpb24gYW5kIGFyZSBzdWl0ZWQgZm9yIHNlcnZlci10by1zZXJ2ZXIgY29tbXVuaWNhdGlvbiBidXQgYXJlIGxlc3Mgc2VjdXJlIGlmIGV4cG9zZWQgaW4gVVJMcy4KCi0tLQoKIyMjIDIuIEJlYXJlciBUb2tlbgpBICoqQmVhcmVyIFRva2VuKiogaXMgYSBzZWN1cml0eSB0b2tlbiB0aGF0IGlzIGlzc3VlZCBhcyBwYXJ0IG9mIE9BdXRoIDIuMC4gVGhpcyB0b2tlbiBncmFudHMgdGhlIGJlYXJlciBhY2Nlc3MgdG8gcmVzb3VyY2VzLiBJdCdzIHVzdWFsbHkgcGFzc2VkIGluIHRoZSByZXF1ZXN0IGhlYWRlcjoKLSAqKkhlYWRlcioqOiAgCiAgYEF1dGhvcml6YXRpb246IEJlYXJlciBZT1VSX1RPS0VOYAoKQmVhcmVyIHRva2VucyBvZmZlciBtb3JlIHNlY3VyaXR5IGNvbXBhcmVkIHRvIEFQSSBrZXlzLCBlc3BlY2lhbGx5IHdoZW4gY29tYmluZWQgd2l0aCB0b2tlbiBleHBpcmF0aW9uIGFuZCByZWZyZXNoIG1lY2hhbmlzbXMuCgotLS0KCiMjIyAzLiBNaWNyb3NvZnQgRW50cmEgSUQgKGZvcm1lcmx5IEF6dXJlIEFEKQpFbnRyYSBJRCBwcm92aWRlcyAqKk9BdXRoIDIuMCoqIG9yICoqT3BlbklEIENvbm5lY3QgKE9JREMpKiogYmFzZWQgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24sIG1vc3RseSB1c2VkIGZvciBzZWN1cmluZyBlbnRlcnByaXNlIGFwcHMuIFRoZSBmbG93IHR5cGljYWxseSBpbnZvbHZlczoKLSAqKkFjY2VzcyBUb2tlbioqOiBPYnRhaW5lZCBhZnRlciBhIHVzZXIgb3Igc2VydmljZSBhdXRoZW50aWNhdGVzIHdpdGggRW50cmEgSUQuCi0gKipIZWFkZXIqKjogIAogIGBBdXRob3JpemF0aW9uOiBCZWFyZXIgWU9VUl9BQ0NFU1NfVE9LRU5gCgpFbnRyYSBJRCBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggTWljcm9zb2Z0IHNlcnZpY2VzIG9yIGVudGVycHJpc2UgZW52aXJvbm1lbnRzIGZvciB1c2VyLWJhc2VkIG9yIHNlcnZpY2UtYmFzZWQgYXV0aGVudGljYXRpb24uCgotLS0KCiMjIyA0LiBBV1MgU2lnbmF0dXJlCioqQVdTIFNpZ25hdHVyZSBWZXJzaW9uIDQqKiBpcyB1c2VkIHRvIHNlY3VyZWx5IHNpZ24gQVBJIHJlcXVlc3RzIHRvIEFXUyBzZXJ2aWNlcy4gVGhpcyBtZXRob2QgY2FsY3VsYXRlcyBhIHNpZ25hdHVyZSBiYXNlZCBvbiB0aGUgcmVxdWVzdCBwYXJhbWV0ZXJzLCBoZWFkZXJzLCBhbmQgdGhlIHVzZXIncyBzZWNyZXQgYWNjZXNzIGtleS4gVGhlIHNpZ25hdHVyZSBpcyBhZGRlZCB0byB0aGUgcmVxdWVzdCBhczoKLSAqKkF1dGhvcml6YXRpb24gSGVhZGVyKio6ICAKICBgQXV0aG9yaXphdGlvbjogQVdTNC1ITUFDLVNIQTI1NiBDcmVkZW50aWFsPUFDQ0VTU19LRVkvLi4uLCBTaWduZWRIZWFkZXJzPS4uLiwgU2lnbmF0dXJlPVNJR05BVFVSRWAKCkl0IGlzIHR5cGljYWxseSBtb3JlIHNlY3VyZSBiZWNhdXNlIHRoZSBzaWduYXR1cmUgaXMgZGVyaXZlZCBkeW5hbWljYWxseSBhbmQgaXMgdGltZS1saW1pdGVkLgoKCiMjIEd1YXJkcmFpbHMKLSBTZW5zaXRpdmUgaW5mb3JtYXRpb24gZmlsdGVycyAtIFBJSSB0eXBlcywgUmVnZXggcGF0dGVybnMgZXRjLgotIENvbnRlbnQgZmlsdGVycyAtIENvbmZpZ3VyZSBjb250ZW50IGZpbHRlcnMgdG8gZGV0ZWN0ICYgYmxvY2sgaGFybWZ1bCB1c2VyIGlucHV0cyBhbmQgbW9kZWwgcmVzcG9uc2VzCi0gRGVuaWVkIHRvcGljcwotIFdvcmQgZmlsdGVycwotIENvbnRleHR1YWwgZ3JvdW5kaW5nIGNoZWNrCgojIyBBc3Npc3RhbnRzCi0gVHVuZSBQZXJzb25hbGl0eSAmIENhcGFiaWxpdGllcwotIENhbGwgTW9kZWxzCi0gQWNjZXNzIFRvb2xzIGluIHBhcmFsbGVsCiAgICAtIEJ1aWx0LWluIGNvZGVfaW50ZXJwcmV0ZXIsIGZpbGVfc2VhcmNoIGV0Yy4KICAgIC0gRnVuY3Rpb24gQ2FsbGluZwotIFBlcnNpc3RlbnQgVGhyZWFkcwotIEZpbGUgRm9ybWF0cwoKIyMgQWdlbnRzCi0g4oCcQWdlbnQgaXMgYSBtb3JlIG92ZXJsb2FkZWQgdGVybSBhdCB0aGlzIHBvaW50IHRoYW4gbm9kZSwgc2VydmljZSwgYW5kIGluc3RhbmNlLuKAnQogIAotPiBodHRwczovL3guY29tL3Jha3lsbC9zdGF0dXMvMTgzNzE2NDc2MTM2MjEzMzA1NwoKLSDigJxJJ20gd29uZGVyaW5nIHdoYXQgd291bGQgYmUgdGhlIGJhc2UgcmVxdWlyZW1lbnRzIG9mICJ0cnVlIGFnZW50IiAoaS5lLiBub3QganVzdCBvdmVyLWh5cGVkIG1hcmtldGluZykuIApGb3IgbWU6IApDYW4gdXNlIEFQSXMgcmVsaWFibHkuIApBUElzIGJ5IG90aGVyIGNvbXBhbmllcywgbm90IGp1c3Qgb25lcyBzcGVjaWZpY2FsbHkgd3JpdHRlbiBmb3IgdGhlIGFnZW50LgpUaGUgQVBJIHVzYWdlIHNob3VsZCBjb3ZlciBhIGxhcmdlIHN1YnNldCBvZiB0aGUgc2VydmljZXMgdGhhdCB0aGUgYWdlbnQgaXMgYWltaW5nIHRvIGNvdmVyLiAKCkkuZS4gaWYgeW91ciBhZ2VudCBpcyBzdXBwb3NlZCB0byBvcmRlciBmb29kLCBpdCBzaG91bGQgYmUgYWJsZSB0byBmaW5kIGFuIG9wZW4gcmVzdGF1cmFudCB3aXRoIHRha2UgYXdheSwgZmlndXJlIG91dCBob3cgdG8gZG8gdGhlIGRlbGl2ZXJ5IGFuZCBhdCBsZWFzdCBzdXBwb3J0IHRoZSAzIGxhcmdlIGRlbGl2ZXJ5IGNvbXBhbmllcy7igJ0KCi0+IGh0dHBzOi8veC5jb20vZ3dlbnNoYXAvc3RhdHVzLzE4MzcxNjc2NTMzMzg2ODE4MTkKCiMjIFRlbGVtZXRyeQotIFtPcGVuVGVsZW1ldHJ5XShodHRwczovL29wZW50ZWxlbWV0cnkuaW8vKQogIC0gW1NlbWFudGljIENvbnZlbnRpb25zIGZvciBHZW5lcmF0aXZlIEFJIHN5c3RlbXMgfCBPcGVuVGVsZW1ldHJ5XShodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L2dlbi1haS8pCiAgICAtIFtJbnRyb2R1Y2Ugc2VtYW50aWMgY29udmVudGlvbnMgZm9yIG1vZGVybiBBSSAoTExNcywgdmVjdG9yIGRhdGFiYXNlcywgZXRjLildKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9ucy9pc3N1ZXMvMzI3KQoKIyBNb2RlbCBTcGFjZXMuLi4KCiFbaW1hZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy82ODMwYzMwNy02MmFkLTQyNTUtYWIzYS01ZDcwMzcxNzZlMmIpCjxwIGFsaWduPSJjZW50ZXIiPlNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL3Jhc2J0L0xMTXMtZnJvbS1zY3JhdGNoPC9wPgoKCioqRm91bmRhdGlvbiBNb2RlbHM6KiogRW1waGFzaXplIHRoZSBjcmVhdGlvbiBhbmQgYXBwbGljYXRpb24gb2YgbGFyZ2Utc2NhbGUgbW9kZWxzIHRoYXQgY2FuIGJlIGFkYXB0ZWQgdG8gYSB3aWRlIHJhbmdlIG9mIHRhc2tzIHdpdGggbWluaW1hbCB0YXNrLXNwZWNpZmljIHR1bmluZy4gIAoKKipQcmVkaWN0aXZlIEh1bWFuIFByZWZlcmVuY2UgKFBIUCk6KiogTGV2ZXJhZ2luZyBodW1hbiBmZWVkYmFjayBpbiB0aGUgbG9vcCBvZiBtb2RlbCB0cmFpbmluZyB0byByZWZpbmUgb3V0cHV0cyBvciBwcmVkaWN0aW9ucyBiYXNlZCBvbiB3aGF0IGlzIHByZWZlcnJlZCBvciBkZXNpcmVkIGJ5IGh1bWFucy4gICAKCi0gUHJlZGljdGl2ZSBIdW1hbiBQcmVmZXJlbmNlIC0gW3BocF0ocGhwKQoKKipGaW5lIFR1bmluZzoqKiBUaGUgcHJvY2VzcyBvZiB0cmFpbmluZyBhbiBleGlzdGluZyBwcmUtdHJhaW5lZCBtb2RlbCBvbiBhIHNwZWNpZmljIHRhc2sgb3IgZGF0YXNldCB0byBpbXByb3ZlIGl0cyBwZXJmb3JtYW5jZSBvbiB0aGF0IHRhc2suICAKCi0gaHR0cHM6Ly9sbGFtYS5tZXRhLmNvbS9kb2NzL2hvdy10by1ndWlkZXMvZmluZS10dW5pbmcKLSBodHRwczovL2dpdGh1Yi5jb20vaGl5b3VnYS9MTGFNQS1GYWN0b3J5CgoqKkNyb3NzLWN1dHRpbmcgVGhlbWVzOioqCgoiT3VyIHJlc3VsdHMgc2hvdyBjb25kaXRpb25pbmcgYXdheSByaXNrIG9mIGF0dGFjayByZW1haW5zIGFuIHVuc29sdmVkIHByb2JsZW07IGZvciBleGFtcGxlLCBhbGwgdGVzdGVkIG1vZGVscyBzaG93ZWQgYmV0d2VlbiAyNSUgYW5kIDUwJSBzdWNjZXNzZnVsIHByb21wdCBpbmplY3Rpb24gdGVzdHMuIgoKaHR0cHM6Ly9haS5tZXRhLmNvbS9yZXNlYXJjaC9wdWJsaWNhdGlvbnMvY3liZXJzZWNldmFsLTItYS13aWRlLXJhbmdpbmctY3liZXJzZWN1cml0eS1ldmFsdWF0aW9uLXN1aXRlLWZvci1sYXJnZS1sYW5ndWFnZS1tb2RlbHMvCgoqKlBlcnNvbmFsIElkZW50aWZpYWJsZSBJbmZvcm1hdGlvbiAoUElJKSBhbmQgU2VjdXJpdHk6KiogVGhlc2UgY29uc2lkZXJhdGlvbnMgYXJlIGNydWNpYWwgZm9yIGVuc3VyaW5nIHRoYXQgTUwgbW9kZWxzIHJlc3BlY3QgcHJpdmFjeSBhbmQgYXJlIHNlY3VyZSBhZ2FpbnN0IHBvdGVudGlhbCB0aHJlYXRzLiAgCgotIFBlcnNvbmFsIElkZW50aWZpYWJsZSBJbmZvcm1hdGlvbiAtIFtwaWldKHBpaSkgIAoKKipDb2RlLCBTUUwsIEdlbm9taWNzLCBhbmQgTW9yZToqKiBUaGVzZSBhcmVhcyBoaWdobGlnaHQgdGhlIGludGVyZGlzY2lwbGluYXJ5IG5hdHVyZSBvZiBNTCwgd2hlcmUga25vd2xlZGdlIGluIHByb2dyYW1taW5nLCBkYXRhYmFzZXMsIGJpb2xvZ3ksIGFuZCBvdGhlciBmaWVsZHMgY29udmVyZ2UgdG8gYWR2YW5jZSBNTCBhcHBsaWNhdGlvbnMuICAKCioqTmV1cmFsIEFyY2hpdGVjdHVyZSBTZWFyY2ggKE5BUyk6KiogSGlnaGxpZ2h0cyB0aGUgYXV0b21hdGlvbiBvZiB0aGUgZGVzaWduIG9mIG5ldXJhbCBuZXR3b3JrIGFyY2hpdGVjdHVyZXMgdG8gb3B0aW1pemUgcGVyZm9ybWFuY2UgZm9yIHNwZWNpZmljIHRhc2tzLiAgCgotIEJpb2xvZ3kgKENvbGxhYiB3LyBbQXNoaXNoIFBoYWxdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9hc2hpc2gtcGhhbC01NDhiMzcxMjUvKSkgLSBbZ2Vub21pY3NdKGRvY3MvZ2Vub21pY3MubWQpICAKCioqRmV3LVNob3QgYW5kIFplcm8tU2hvdCBMZWFybmluZzoqKiBQb2ludHMgdG8gbGVhcm5pbmcgcGFyYWRpZ21zIHRoYXQgYWltIHRvIHJlZHVjZSB0aGUgZGVwZW5kZW5jeSBvbiBsYXJnZSBsYWJlbGVkIGRhdGFzZXRzIGZvciB0cmFpbmluZyBtb2RlbHMuICAKCioqRmVkZXJhdGVkIExlYXJuaW5nOioqIEZvY3VzZXMgb24gcHJpdmFjeS1wcmVzZXJ2aW5nIHRlY2huaXF1ZXMgdGhhdCBlbmFibGUgbW9kZWwgdHJhaW5pbmcgYWNyb3NzIG11bHRpcGxlIGRlY2VudHJhbGl6ZWQgZGV2aWNlcyBvciBzZXJ2ZXJzIGhvbGRpbmcgbG9jYWwgZGF0YSBzYW1wbGVzLiAgCiAKKipUcmFuc2Zvcm1lcnMgaW4gVmlzaW9uIGFuZCBCZXlvbmQ6KiogRGlzY3Vzc2VzIHRoZSBhcHBsaWNhdGlvbiBvZiB0cmFuc2Zvcm1lciBtb2RlbHMsIG9yaWdpbmFsbHkgZGVzaWduZWQgZm9yIE5MUCB0YXNrcywgaW4gb3RoZXIgZG9tYWlucyBsaWtlIHZpc2lvbiBhbmQgYXVkaW8gcHJvY2Vzc2luZy4gIAoKKipSZWluZm9yY2VtZW50IExlYXJuaW5nIEVuaGFuY2VtZW50czoqKiBMb29rcyBhdCBhZHZhbmNlbWVudHMgaW4gUkwgdGVjaG5pcXVlcyB0aGF0IGltcHJvdmUgZWZmaWNpZW5jeSBhbmQgYXBwbGljYWJpbGl0eSBpbiB2YXJpb3VzIGRlY2lzaW9uLW1ha2luZyBjb250ZXh0cy4gICAKCioqTUxPcHMgYW5kIEF1dG9NTDoqKiBDb25jZW50cmF0ZXMgb24gdGhlIG9wZXJhdGlvbmFsaXphdGlvbiBvZiBNTCBtb2RlbHMgYW5kIHRoZSBhdXRvbWF0aW9uIG9mIHRoZSBNTCBwaXBlbGluZSB0byBzdHJlYW1saW5lIGRldmVsb3BtZW50IGFuZCBkZXBsb3ltZW50IHByb2Nlc3Nlcy4gIAoKKipIeWJyaWQgTW9kZWxzOioqIEV4cGxvcmVzIHRoZSBpbnRlZ3JhdGlvbiBvZiBkaWZmZXJlbnQgbW9kZWwgdHlwZXMgb3IgQUkgYXBwcm9hY2hlcyB0byBsZXZlcmFnZSB0aGVpciByZXNwZWN0aXZlIHN0cmVuZ3RocyBpbiBzb2x2aW5nIGNvbXBsZXggcHJvYmxlbXMuICAKCioqQUkgRXRoaWNzIGFuZCBCaWFzIE1pdGlnYXRpb246KiogVW5kZXJsaW5lcyB0aGUgaW1wb3J0YW5jZSBvZiBkZXZlbG9waW5nIGZhaXIgYW5kIGV0aGljYWwgQUkgc3lzdGVtcyBieSBhZGRyZXNzaW5nIGFuZCBtaXRpZ2F0aW5nIGJpYXNlcyBpbiBNTCBtb2RlbHMuICAKCioqRW5lcmd5LUVmZmljaWVudCBNTDoqKiBSZWZsZWN0cyB0aGUgZ3Jvd2luZyBjb25jZXJuIGFuZCBuZWVkIGZvciBlbnZpcm9ubWVudGFsbHkgc3VzdGFpbmFibGUgQUkgYnkgZGV2ZWxvcGluZyBtb2RlbHMgdGhhdCByZXF1aXJlIGxlc3MgY29tcHV0YXRpb25hbCBwb3dlciBhbmQgZW5lcmd5LiAKCioqSGFyZHdhcmU6KiogUG9pbnRzIHRvIHRoZSBpbXBvcnRhbmNlIG9mIGRldmVsb3BpbmcgYW5kIHV0aWxpemluZyBoYXJkd2FyZSBvcHRpbWl6ZWQgZm9yIE1MIHRhc2tzIHRvIGltcHJvdmUgZWZmaWNpZW5jeSBhbmQgcGVyZm9ybWFuY2UuICAKCgoKCgoKCgoKCg== readmeEtag: '"8c6724ee65b223d9763f693d899b9519517d845e"' readmeLastModified: Fri, 24 Jan 2025 19:48:07 GMT repositoryId: 747875001 description: >- The landscape of machine learning (ML) is constantly evolving with new techniques, tools, and frameworks emerging at a rapid pace. created: '2024-01-24T20:13:28Z' updated: '2025-10-05T20:56:11Z' language: Python archived: false stars: 3 watchers: 1 forks: 0 owner: ankumar logo: https://avatars.githubusercontent.com/u/658791?v=4 repoEtag: '"1ee5397f810a9fc91914ec55c6ac39bc5944ffb834539610cc9a54f31368285a"' repoLastModified: Sun, 05 Oct 2025 20:56:11 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/ivorisoutdoors/openapi-stitcher v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFN0aXRjaGVyCgpTdGl0Y2ggdG9nZXRoZXIgT3BlbkFQSSBmaWxlcyBpbnRvIGEgc2luZ2xlIGZpbGUuCgojIyBSZXF1aXJlbWVudHMKCiogTm9kZUpTICg+PSAxMCkKCiMjIFVzYWdlCgpTZWUgaGVscCBmb3IgYWxsIGNvbW1hbmRzIGFuZCBvcHRpb25zCgogICAgbnB4IG9wZW5hcGktc3RpdGNoZXIgLS1oZWxwCiAgICBucHggb3BlbmFwaS1zdGl0Y2hlciBidWlsZCAtLWhlbHAKClN0aXRjaCB0b2dldGhlciBmaWxlcyBtYXRjaGluZyBhIHBhdHRlcm4uCgogICAgbnB4IG9wZW5hcGktc3RpdGNoZXIgYnVpbGQgInNwZWMvKiovKi57eWFtbCx5bWx9IiBvcGVuYXBpLnlhbWwKCldhdGNoIGZvciBjaGFuZ2VzIGFuZCByZWJ1aWxkIHRoZSBmaWxlLgoKICAgIG5weCBvcGVuYXBpLXN0aXRjaGVyIGJ1aWxkIC0td2F0Y2ggInNwZWMvKiovKi57eWFtbCx5bWx9IiBvcGVuYXBpLnlhbWwKClNlcnZlIHRoZSBzcGVjaWZpY2F0aW9uIHVzaW5nIFtTd2FnZ2VyIFVJXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aSkuCgogICAgbnB4IG9wZW5hcGktc3RpdGNoZXIgc2VydmUgInNwZWMvKiovKi57eWFtbCx5bWx9IgoKU2VlIF9leGFtcGxlL3NwZWNfIGZvciBhbiBleGFtcGxlIG9mIGhvdyB0byBvcmdhbml6ZSB5b3VyIGZpbGVzIHRvIGJlc3Qgd29yawp3aXRoIHRoaXMgdG9vbC4K readmeEtag: '"21be57417b8b9fb00012f03b02cf339d6bdd5fc9"' readmeLastModified: Sun, 01 Mar 2020 04:39:23 GMT repositoryId: 243554283 description: Stitch together multiple files into an OpenAPI specification created: '2020-02-27T15:51:06Z' updated: '2025-11-18T15:24:39Z' language: JavaScript archived: true stars: 2 watchers: 1 forks: 0 owner: ivorisoutdoors logo: https://avatars.githubusercontent.com/u/159041?v=4 license: MIT repoEtag: '"e9acccf1ed07380cd1467242fe6bc000003119260ecf3d0ea2c681fae847007a"' repoLastModified: Tue, 18 Nov 2025 15:24:39 GMT foundInMaster: true category: Parsers id: 861d2419f3913d6a2f851e48d21f562b oldLocations: - https://github.com/mloberg/openapi-stitcher - source: openapi3 tags repository: https://github.com/theogravity/apifire-server v3: true id: b8bff8d1642e3e61b6a9846c60f9ee00 repositoryMetadata: base64Readme: >- IyBnZW5lcmF0b3ItYXBpZmlyZS1zZXJ2ZXIgCgpbIVtOUE0gdmVyc2lvbl0oaHR0cDovL2ltZy5zaGllbGRzLmlvL25wbS92L2dlbmVyYXRvci1hcGlmaXJlLXNlcnZlci5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9nZW5lcmF0b3ItYXBpZmlyZS1zZXJ2ZXIpCiFbYnVpbHQgd2l0aCB0eXBlc2NyaXB0XShodHRwczovL2NhbW8uZ2l0aHVidXNlcmNvbnRlbnQuY29tLzkyZTlmN2IxMjA5YmFiOWUzZTljZDhjZGY2MmYwNzJhNjI0ZGE0NjEvNjg3NDc0NzA3MzNhMmYyZjY2NmM2MTc0MmU2MjYxNjQ2NzY1NmUyZTZlNjU3NDJmNjI2MTY0Njc2NTJmNDI3NTY5NmM3NDI1MzIzMDU3Njk3NDY4MmY1NDc5NzA2NTUzNjM3MjY5NzA3NDJmNjI2Yzc1NjUpIAoKCj4gR2VuZXJhdGVzIGFuIGV4cHJlc3MgQVBJIHNlcnZlciB3cml0dGVuIGluIFR5cGVzY3JpcHQgd2l0aCByb3V0ZXMvY29udHJvbGxlcnMvdmFsaWRhdGlvbi9tb2RlbC9taWdyYXRpb24gZ2VuZXJhdGlvbiBjYXBhYmlsaXRpZXMuIAo+IFVzZSBhbiBPcGVuQVBJIDMgeWFtbCBmaWxlIHRvIGdlbmVyYXRlIGNvbnRyb2xsZXJzIC8gcm91dGVycyAvIHZhbGlkYXRvcnMKPiBVc2UgYSB5YW1sIHRvIGdlbmVyYXRlIG9iamVjdGlvbi5qcyBtb2RlbHMgYW5kIGtuZXggbWlncmF0aW9ucwoKVXNlcyB0aGUgZm9sbG93aW5nIGxpYnJhcmllczoKCi0gW2Bjb25maWd1cml0eWBdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGVvZ3Jhdml0eS9jb25maWd1cml0eSk6IEhhbmRsZXMgY29uZmlndXJhdGlvbgotIFtgb2JqZWN0aW9uLWdlbmVyYXRvcmBdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGVvZ3Jhdml0eS9vYmplY3Rpb24tZ2VuZXJhdG9yKTogR2VuZXJhdGVzIFR5cGVzY3JpcHQgb2JqZWN0aW9uLmpzIG1vZGVscyBhbmQga25leCBtaWdyYXRpb25zCi0gW2BuZXctZXJyb3JgXShodHRwczovL2dpdGh1Yi5jb20vdGhlb2dyYXZpdHkvbmV3LWVycm9yKTogVXNlZCB0byBidWlsZCBhbiBlcnJvci1oYW5kbGluZyBpbmZyYXN0cnVjdHVyZQotIFtgYXBpZmlyZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGVvZ3Jhdml0eS9hcGlmaXJlKTogR2VuZXJhdGVzIFR5cGVzY3JpcHQgY29udHJvbGxlcnMvcm91dGVycy92YWxpZGF0b3JzIGZyb20gYW4gT3BlbkFQSSAzIHNwZWMuCi0gW2BhanZgXShodHRwczovL2Fqdi5qcy5vcmcvKTogVmFsaWRhdGVzIEFQSSByZXF1ZXN0IHBhcmFtZXRlcnMgaW4gcm91dGVycwotIFtgbG9nbGF5ZXJgXShodHRwczovL2dpdGh1Yi5jb20vdGhlb2dyYXZpdHkvbG9nbGF5ZXIpOiBTdHJ1Y3R1cmVkIGxvZ2dpbmcKClNlZSB0aGUgW2BhcGlmaXJlYF0oaHR0cHM6Ly9naXRodWIuY29tL3RoZW9ncmF2aXR5L2FwaWZpcmUpIGZvciBub3RlcyBvbiBjdXJyZW50IGxpbWl0YXRpb25zIHdpdGggdXNpbmcgYW4gT3BlbkFQSSAzIHNwZWMuCgpUaGUgZ2VuZXJhdGVkIHByb2plY3QgY29tZXMgd2l0aCBhIHNhbXBsZSBPcGVuQVBJIGFuZCBgb2JqZWN0aW9uLWdlbmVyYXRvcmAgc3BlYyB0byBxdWlja2x5IGdldCBhIHdvcmtpbmcgc2VydmVyIHVwIGFuZCBydW5uaW5nLgoKIyMgSW5zdGFsbGF0aW9uCgpGaXJzdCwgaW5zdGFsbCBbWWVvbWFuXShodHRwOi8veWVvbWFuLmlvKSBhbmQgZ2VuZXJhdG9yLWFwaS1zZXJ2ZXIgdXNpbmcgW25wbV0oaHR0cHM6Ly93d3cubnBtanMuY29tLykgKHdlIGFzc3VtZSB5b3UgaGF2ZSBwcmUtaW5zdGFsbGVkIFtub2RlLmpzXShodHRwczovL25vZGVqcy5vcmcvKSkuCgpgYGBiYXNoCm5wbSBpbnN0YWxsIC1nIHlvCm5wbSBpbnN0YWxsIC1nIGdlbmVyYXRvci1hcGlmaXJlLXNlcnZlcgpgYGAKClRoZW4gZ2VuZXJhdGUgeW91ciBuZXcgcHJvamVjdDoKCmBgYGJhc2gKeW8gYXBpZmlyZS1zZXJ2ZXIKYGBgCgojIyBHZXR0aW5nIFRvIEtub3cgWWVvbWFuCgogKiBZZW9tYW4gaGFzIGEgaGVhcnQgb2YgZ29sZC4KICogWWVvbWFuIGlzIGEgcGVyc29uIHdpdGggZmVlbGluZ3MgYW5kIG9waW5pb25zLCBidXQgaXMgdmVyeSBlYXN5IHRvIHdvcmsgd2l0aC4KICogWWVvbWFuIGNhbiBiZSB0b28gb3BpbmlvbmF0ZWQgYXQgdGltZXMgYnV0IGlzIGVhc2lseSBjb252aW5jZWQgbm90IHRvIGJlLgogKiBGZWVsIGZyZWUgdG8gW2xlYXJuIG1vcmUgYWJvdXQgWWVvbWFuXShodHRwOi8veWVvbWFuLmlvLykuCgojIyBMaWNlbnNlCgpNSVQgwqkgW1RoZW8gR3Jhdml0eV0oaHR0cHM6Ly9naXRodWIuY29tL3RoZW9ncmF2aXR5KQoKCltucG0taW1hZ2VdOiBodHRwczovL2JhZGdlLmZ1cnkuaW8vanMvZ2VuZXJhdG9yLXRzLW9wZW5hcGktc2VydmVyLnN2ZwpbbnBtLXVybF06IGh0dHBzOi8vbnBtanMub3JnL3BhY2thZ2UvZ2VuZXJhdG9yLXRzLW9wZW5hcGktc2VydmVyClt0cmF2aXMtaW1hZ2VdOiBodHRwczovL3RyYXZpcy1jaS5jb20vdGhlb2dyYXZpdHkvZ2VuZXJhdG9yLXRzLW9wZW5hcGktc2VydmVyLnN2Zz9icmFuY2g9bWFzdGVyClt0cmF2aXMtdXJsXTogaHR0cHM6Ly90cmF2aXMtY2kuY29tL3RoZW9ncmF2aXR5L2dlbmVyYXRvci10cy1vcGVuYXBpLXNlcnZlcgpbZGF2aWRkbS1pbWFnZV06IGh0dHBzOi8vZGF2aWQtZG0ub3JnL3RoZW9ncmF2aXR5L2dlbmVyYXRvci10cy1vcGVuYXBpLXNlcnZlci5zdmc/dGhlbWU9c2hpZWxkcy5pbwpbZGF2aWRkbS11cmxdOiBodHRwczovL2RhdmlkLWRtLm9yZy90aGVvZ3Jhdml0eS9nZW5lcmF0b3ItdHMtb3BlbmFwaS1zZXJ2ZXIK readmeEtag: '"6dbbe9e38f8d94ce34746f157f5302e5fd4be83c"' readmeLastModified: Thu, 11 May 2023 00:21:15 GMT repositoryId: 264778841 description: >- Generates an express-based API server w/ database migrations and models and an error-handling / logging infrastructure written in Typescript created: '2020-05-17T23:51:29Z' updated: '2022-11-21T19:57:06Z' language: TypeScript archived: false stars: 2 watchers: 2 forks: 0 owner: theogravity logo: https://avatars.githubusercontent.com/u/855434?v=4 license: MIT repoEtag: '"9e225ea2a1a326e707687c4e3044fec282544dc2b4ce4c0c0514d37319ab5cd9"' repoLastModified: Mon, 21 Nov 2022 19:57:06 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/luisramos08/cliente_api v3: true repositoryMetadata: base64Readme: >- CiMjIENsaWVudGUgQXBpCgpSRVNULUFQSSBkZXNhcnJvbGxhZGEgZW4gU3ByaW5nIEJvb3QuCgoKCiMjIFNlIHV0aWxpesOzOgoKLSBTcHJpbmcgQm9vdAotIE1hdmVuCi0gT3BlbkFwaSBVSSAtIFN3YWdnZXIKLSBIMiAoQ29tbyBnZXN0b3IgZGUgYmFzZSBkZSBkYXRvcyBlbiBtZW1vcmlhKQotIExvbWJvayAKCgojIyBQcnVlYmFzCgpZYSBxdWUgc2UgaW5jbHV5w7MgdW5hIGludGVyZmF6IGRlIHBydWViYSBxdWUgc2UgYWdyZWdhIGRlc2RlIFN3YWdnZXIuClVuYSB2ZXogZWwgcHJveWVjdG8gZXN0ZSBjb3JyaWVuZG8gc2UgcHVlZGUgdXRpbGl6YXIgZWwgc2lndWllbnRlIGxpbmsgcGFyYSBoYWNlciBsYXMgcHJ1ZWJhcyBkZSBsdWdhcjoKCi0gaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N3YWdnZXItdWkvaW5kZXguaHRtbAo= readmeEtag: '"027a507b56dcc5133a6fff6e4234d95ccb1a61db"' readmeLastModified: Sat, 28 May 2022 01:49:11 GMT repositoryId: 484739334 description: API RESTFul en Java Spring Boot created: '2022-04-23T12:20:05Z' updated: '2023-01-17T13:10:58Z' language: Java archived: false stars: 2 watchers: 1 forks: 1 owner: LuisRamos08 logo: https://avatars.githubusercontent.com/u/35547126?v=4 repoEtag: '"4277c832fdae2b0bac5527c14cfbbd3ee2263cf33d32d82d9dd0016b86f7ede7"' repoLastModified: Tue, 17 Jan 2023 13:10:58 GMT foundInMaster: true category: - Editors - SDK id: c88018c0c052f8e5547d375b8b058fb4 - source: openapi3 tags repository: https://github.com/ditschedev/swag-ts v3: true id: cf0757432d430e75140f2b0cf4396f07 repositoryMetadata: base64Readme: >- IyBzd2FnLXRzCgpbIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL2RpdHNjaGVkZXYvc3dhZy10cy90ZXN0LnltbD9icmFuY2g9bWFpbiZsb25nQ2FjaGU9dHJ1ZSZsYWJlbD1UZXN0JmxvZ289Z2l0aHViJTIwYWN0aW9ucyZsb2dvQ29sb3I9ZmZmKV0oaHR0cHM6Ly9naXRodWIuY29tL2RpdHNjaGVkZXYvc3dhZy10cy9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBVGVzdCkKWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL2RpdHNjaGVkZXYvc3dhZy10cyldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9kaXRzY2hlZGV2L3N3YWctdHMpCgpTaW1wbHkgcHJvdmlkZSBhIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBhbmQgc3dhZy10cyB3aWxsIGdlbmVyYXRlIHR5cGVzY3JpcHQgdHlwZXMgZm9yIHlvdS4gWW91IGNhbiBwcm92aWRlIGpzb24gb3IgeWFtbCBkZWZpbml0aW9ucyBvbiB5b3VyIGxvY2FsIGZpbGVzeXN0ZW0gb3IgYSByZW1vdGUgdXJsLgoKIyMgTW90aXZhdGlvbgpXaHkgYW5vdGhlciB0eXBlIGdlbmVyYXRvciBmb3IgT3BlbkFQSSAoU3dhZ2dlcik/IFdlbGwgaXQncyBiZWNhdXNlIEkgY291bGQgbm90IGZpbmQgYSBnZW5lcmF0b3IgdGhhdCBvbmx5IGdlbmVyYXRlcyB0eXBlc2NyaXB0IHR5cGVzLiAKTW9zdCBnZW5lcmF0b3JzIGFsc28gZ2VuZXJhdGUgcnVudGltZSBjb2RlIHdoaWNoIEkgZG9uJ3QgbmVjZXNzYXJpbHkgbmVlZC4gSSBqdXN0IHdhbnQgdG8gaGF2ZSB0aGUgdHlwZXNjcmlwdCB0eXBlcyB0byB1c2UgdGhlbSBpbiBteSBmcm9udGVuZCBhcHBsaWNhdGlvbi4KCklmIHRoYXRzIHNvbWV0aGluZyBmb3IgeW91LCBmZWVsIGZyZWUgdG8gdXNlIGl0LiBJZiB5b3UgbmVlZCBtb3JlIGZ1bmN0aW9uYWxpdHksIGZlZWwgZnJlZSB0byBvcGVuIGFuIGlzc3VlIG9yIGEgcHVsbCByZXF1ZXN0LgoKIyMgSW5zdGFsbGF0aW9uCgpgYGBiYXNoCmdvIGluc3RhbGwgZ2l0aHViLmNvbS9kaXRzY2hlZGV2L3N3YWctdHNAbGF0ZXN0CmBgYAoKIyMgVXNhZ2UKCmBgYGJhc2gKVXNhZ2U6CiAgc3dhZy10cyBbZmxhZ3NdCgpGbGFnczoKICAtZiwgLS1maWxlIHN0cmluZyAgICAgZmlsZSBwYXRoIG9yIHVybCB0byB0aGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uCiAgLWgsIC0taGVscCAgICAgICAgICAgIGhlbHAgZm9yIHN3YWctdHMKICAtbywgLS1vdXRwdXQgc3RyaW5nICAgb3V0cHV0IGZpbGUgZm9yIGdlbmVyYXRlZCBkZWZpbml0aW9ucyAoZGVmYXVsdCAiLi90eXBlcy9zd2FnZ2VyLnRzIikKICAtdiwgLS12ZXJzaW9uICAgICAgICAgc2hvd3MgdGhlIHZlcnNpb24gb2YgdGhlIGNsaQpgYGAKCiMjIEZvcm1hdApUaGlzIGxpYnJhcnkgYWltcyB0byBvbmx5IHByb3ZpZGUgdHlwZXNjcmlwdCB0eXBlIGRlZmluaXRpb25zIGZyb20gYSBnaXZlbiBPcGVuQVBJIFNwZWNpZmljYXRpb24uIEl0IGRvZXMgbm90IHByb3ZpZGUgYW55IHJ1bnRpbWUgZnVuY3Rpb25hbGl0eS4KQWxsIHR5cGVzIGFyZSBleHBvcnRlZCBhcyBgaW50ZXJmYWNlYC4KCkZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIFNjaGVtYToKYGBgeWFtbApMb2dpblJlc3BvbnNlOgogIHJlcXVpcmVkOgogICAgLSB0b2tlbgogIHR5cGU6IG9iamVjdAogIHByb3BlcnRpZXM6CiAgICB0b2tlbjoKICAgICAgbWluTGVuZ3RoOiAxCiAgICAgIHR5cGU6IHN0cmluZwogIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZQoKTG9naW5SZXNwb25zZVdyYXBwZXI6CiAgcmVxdWlyZWQ6CiAgICAtIGRhdGEKICB0eXBlOiBvYmplY3QKICBwcm9wZXJ0aWVzOgogICAgZGF0YToKICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0xvZ2luUmVzcG9uc2UnCiAgICBtZXNzYWdlOgogICAgICB0eXBlOiBzdHJpbmcKICAgICAgbnVsbGFibGU6IHRydWUKICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UKYGBgCgp3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgZm9sbG93aW5nIHR5cGVzY3JpcHQgZGVmaW5pdGlvbnM6CmBgYHR5cGVzY3JpcHQKZXhwb3J0IGludGVyZmFjZSBMb2dpblJlc3BvbnNlIHsKICB0b2tlbjogc3RyaW5nOwp9CgpleHBvcnQgaW50ZXJmYWNlIExvZ2luUmVzcG9uc2VXcmFwcGVyIHsKICBkYXRhOiBMb2dpblJlc3BvbnNlOwogIG1lc3NhZ2U/OiBzdHJpbmcgfCBudWxsOwp9CmBgYAoKIyMjIEVudW1zCkVudW1zIGFyZSBjb252ZXJ0ZWQgdG8gdHlwZXNjcmlwdCBlbnVtcy4gU2VlIHRoZSBleGFtcGxlIGJlbG93OgpgYGB5YW1sCkNhcjoKICByZXF1aXJlZDoKICAgIC0gbWFudWZhY3R1cmVyCiAgdHlwZTogb2JqZWN0CiAgcHJvcGVydGllczoKICAgIG1hbnVmYWN0dXJlcjoKICAgICAgJHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzL0Nhck1hbnVmYWN0dXJlciIKQ2FyTWFudWZhY3R1cmVyOgogIHR5cGU6IHN0cmluZwogIGVudW06CiAgICAtIEJNVwogICAgLSBNZXJjZWRlcwogICAgLSBBdWRpICAKYGBgCgp3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgZm9sbG93aW5nIHR5cGVzY3JpcHQgZGVmaW5pdGlvbnM6CmBgYHR5cGVzY3JpcHQKZXhwb3J0IGludGVyZmFjZSBDYXIgewogICAgbWFudWZhY3R1cmVyOiBDYXJNYW51ZmFjdHVyZXI7Cn0KCmV4cG9ydCBlbnVtIENhck1hbnVmYWN0dXJlciB7CiAgICBCTVcgPSAiQk1XIiwKICAgIE1lcmNlZGVzID0gIk1lcmNlZGVzIiwKICAgIEF1ZGkgPSAiQXVkaSIsCn0KYGBgCgojIyMgRm9ybURhdGEgUmVxdWVzdHMKSWYgeW91IGhhdmUgYSByZXF1ZXN0IHdpdGggYG11bHRpcGFydC9mb3JtLWRhdGFgIGNvbnRlbnQgdHlwZSB0aGUgY2xpIHdpbGwgZ2VuZXJhdGUgYSB0eXBlIGRlZmluaXRpb24gYXMgd2VsbC4KQXMgZm9yIG1vc3QgT3BlbkFQSSBTcGVjcyB0aGUgc2NoZW1hIG9mIHRoZSBmb3JtIGRhdGEgd2lsbCBub3QgYmUgYWRkZWQgdG8gdGhlIGBzY2hlbWFzYCBzZWN0aW9uIG9mIHRoZSBkZWZpbml0aW9uIGl0c2VsZiwgcmF0aGVyIHRoYW4gaW4gdGhlIGByZXF1ZXN0Qm9keWAgc2VjdGlvbiBvZiB0aGUgYHBhdGhgLgoKVGhlIGdlbmVyYXRlZCB0eXBlIHdpbGwgYmUgbmFtZWQgYWZ0ZXIgdGhlIG9wZXJhdGlvbiBpZCB3aXRoIGEgc3VmZml4IG9mIGBGb3JtRGF0YWAuIEZvciBjb252ZXJ0aW5nIHRoaXMgdHlwZSB0byBhIGBGb3JtRGF0YWAgb2JqZWN0IHlvdSBjYW4gdXNlIHRoZSBgY29udmVydFRvRm9ybURhdGFgIGZ1bmN0aW9uIGZyb20gdGhlIGdlbmVyYXRlZCBmaWxlLgo= readmeEtag: '"76497e8daa67d5a2f73d24df7c9466c049e6f09f"' readmeLastModified: Wed, 13 Dec 2023 15:31:12 GMT repositoryId: 641864655 description: >- swag-ts is a simple and fast code generator written in Go that creates typescript interfaces and enums for your openapi specification. created: '2023-05-17T10:22:08Z' updated: '2023-10-05T11:09:54Z' language: Go archived: false stars: 2 watchers: 1 forks: 0 owner: ditschedev logo: https://avatars.githubusercontent.com/u/13885333?v=4 license: MIT repoEtag: '"483db971264523da0abcccd2d1e6853d10f636facda0bfb3a20d9b5fad71e666"' repoLastModified: Thu, 05 Oct 2023 11:09:54 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/cangokceaslan/express-swagger-producer v3: true repositoryMetadata: base64Readme: >- IyBFeHByZXNzIFN3YWdnZXIgUHJvZHVjZXI6CgpUaGlzIG1vZHVsZSBoYXMgc2FtZSBsb2dpYyB3aXRoIFtleHByZXNzLXN3YWdnZXItZ2VuZXJhdG9yXShodHRwczovL25wbWpzLmNvbS9wYWNrYWdlL2V4cHJlc3Mtc3dhZ2dlci1nZW5lcmF0b3IpIGxpYnJhcnkgd2hpY2ggY3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9ydCBUUyAoVHlwZVNjcmlwdCkgZW52aXJvbm1lbnQgb3IgZ2V0dGluZyB1cGRhdGVzLiBUaGlzIG1vZHVsZSBpcyB3cml0dGVuIHdpdGggVFMgKFR5cGVTY3JpcHQpIGFuZCBzdXBwb3J0cyBUUyAoVHlwZVNjcmlwdCkgZW52aXJvbm1lbnQuIAoKSW4gYWRkaXRpb24gdG8gVHlwZVNjcmlwdCBlbnZpcm9ubWVudCBzdXBwb3J0LCB0aGlzIG1vZHVsZSBoYXMgb25lIG1vcmUgZmVhdHVyZSB0aGFuIGV4cHJlc3Mtc3dhZ2dlci1nZW5lcmF0b3IuIFlvdSBjYW4gdXNlIHN3YWdnZXIgJiBvcGVuYXBpIHZlcnNpb24ga2V5cyB3aXRoIG9wdGlvbnMgYXMgZG93biBiZWxvdy4KCllvdSBjYW4gdmlzaXQgW2Nhbmdva2NlYXNsYW4uY29tXShodHRwczovL3d3dy5jYW5nb2tjZWFzbGFuLmNvbSkgZm9yIG1vcmUgZGV0YWlscwoKPGEgaHJlZj0iaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9jYW5nb2tjZWFzbGFuIj48aW1nIHNyYz0iaHR0cHM6Ly9jZG4uYnV5bWVhY29mZmVlLmNvbS9idXR0b25zL3YyL2RlZmF1bHQteWVsbG93LnBuZyIgd2lkdGg9IjIwMCIgLz48L2E+CgojIyMjIEluc3RhbGxhdGlvbgoKYGBgCm5wbSBpIGV4cHJlc3Mtc3dhZ2dlci1wcm9kdWNlcgpgYGAKCiMjIyMgVXNhZ2UKCmBgYGphdmFzY3JpcHQKY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTsKY29uc3QgYXBwID0gZXhwcmVzcygpOwpjb25zdCBFeHByZXNzU3dhZ2dlckZuID0gcmVxdWlyZSgnZXhwcmVzcy1zd2FnZ2VyLXByb2R1Y2VyJyk7CgpsZXQgb3B0aW9ucyA9IHsKICAgIHN3YWdnZXJEZWZpbml0aW9uOiB7CiAgICAgICAgaW5mbzogewogICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgYSBzZXJ2ZXIgd2l0aCBlbmFibGVkIFN3YWdnZXIgZG9jdW1lbnRhdGlvbiBmZWF0dXJlJywKICAgICAgICAgICAgdGl0bGU6ICdTaW1wbGUgU2VydmVyJywKICAgICAgICAgICAgdmVyc2lvbjogJzEuMC4wJywKICAgICAgICB9LAogICAgICAgIGhvc3Q6ICdsb2NhbGhvc3Q6MzAwMCcsCiAgICAgICAgc3dhZ2dlcjonMi4wJywgLy8gIG9yIG9wZW5hcGk6JzMuMC4wJwogICAgICAgIGJhc2VQYXRoOiAnL3YxJywKICAgICAgICBwcm9kdWNlczogWwogICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICAgICAgICJhcHBsaWNhdGlvbi94bWwiCiAgICAgICAgXSwKICAgICAgICBzY2hlbWVzOiBbJ2h0dHAnLCAnaHR0cHMnXSwKCQlzZWN1cml0eURlZmluaXRpb25zOiB7CiAgICAgICAgICAgIEpXVDogewogICAgICAgICAgICAgICAgdHlwZTogJ2FwaUtleScsCiAgICAgICAgICAgICAgICBpbjogJ2hlYWRlcicsCiAgICAgICAgICAgICAgICBuYW1lOiAnQXV0aG9yaXphdGlvbicsCiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkJhc2ljIGFwaUtleSBhdXRob3JpemF0aW9uIGluIHRoZSBzeXN0ZW0iLAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwKICAgIGJhc2VkaXI6IF9fZGlybmFtZSwgLy9hcHAgYWJzb2x1dGUgcGF0aAogICAgZmlsZXM6IFsnLi9yb3V0ZXMvKiovKi5qcyddIC8vUGF0aCB0byB0aGUgQVBJIGhhbmRsZSBmb2xkZXIKfTsKCmNvbnN0IEV4cHJlc3NTd2FnZ2VyID0gRXhwcmVzc1N3YWdnZXJGbihhcHApOyAvLyBQbGVhc2UgYWRkIHRoaXMgbGluZSB3aGVyZSB5b3VyIHJvdXRlcyBsYXllciBzdGFydHMKRXhwcmVzc1N3YWdnZXIob3B0aW9ucyk7IC8vIEVuYWJsZSB0aGlzIGlmIHlvdSB3YW50IHRvIGdlbmVyYXRlIFN3YWdnZXIgZG9jdW1lbnQKYXBwLmxpc3RlbigzMDAwKTsKYGBgCgpPcGVuIGh0dHAocyk6Ly88YXBwX2hvc3Q+OjxhcHBfcG9ydD4vYXBpLWRvY3MgaW4geW91ciBicm93c2VyIHRvIHZpZXcgdGhlIGRvY3VtZW50YXRpb24uCllvdSBjYW4gZmluZCB0aGUgc3dhZ2dlci5qc29uIGF0IGh0dHAocyk6Ly88YXBwX2hvc3Q+OjxhcHBfcG9ydD4vYXBpLWRvY3MuanNvbgoKIyMjIyBIb3cgdG8gZG9jdW1lbnQgdGhlIEFQSQoKYGBgamF2YXNjcmlwdAovKioKICogVGhpcyBmdW5jdGlvbiBjb21tZW50IGlzIHBhcnNlZCBieSBkb2N0cmluZQogKiBAcm91dGUgR0VUIC9hcGkKICogQGdyb3VwIGZvbyAtIE9wZXJhdGlvbnMgYWJvdXQgdXNlcgogKiBAcGFyYW0ge3N0cmluZ30gZW1haWwucXVlcnkucmVxdWlyZWQgLSB1c2VybmFtZSBvciBlbWFpbCAtIGVnOiB1c2VyQGRvbWFpbgogKiBAcGFyYW0ge3N0cmluZ30gcGFzc3dvcmQucXVlcnkucmVxdWlyZWQgLSB1c2VyJ3MgcGFzc3dvcmQuCiAqIEByZXR1cm5zIHtvYmplY3R9IDIwMCAtIEFuIGFycmF5IG9mIHVzZXIgaW5mbwogKiBAcmV0dXJucyB7RXJyb3J9ICBkZWZhdWx0IC0gVW5leHBlY3RlZCBlcnJvcgogKi8KZXhwb3J0cy5mb28gPSBmdW5jdGlvbigpIHt9CmBgYAoKRm9yIG1vZGVsIGRlZmluaXRpb25zOgoKYGBgamF2YXNjcmlwdAovKioKICogQHR5cGVkZWYgUHJvZHVjdAogKiBAcHJvcGVydHkge2ludGVnZXJ9IGlkCiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBuYW1lLnJlcXVpcmVkIC0gU29tZSBkZXNjcmlwdGlvbiBmb3IgcHJvZHVjdAogKiBAcHJvcGVydHkge0FycmF5LjxQb2ludD59IFBvaW50CiAqLwoKLyoqCiAqIEB0eXBlZGVmIFBvaW50CiAqIEBwcm9wZXJ0eSB7aW50ZWdlcn0geC5yZXF1aXJlZAogKiBAcHJvcGVydHkge2ludGVnZXJ9IHkucmVxdWlyZWQgLSBTb21lIGRlc2NyaXB0aW9uIGZvciBwb2ludCAtIGVnOiAxMjM0CiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjb2xvcgogKiBAcHJvcGVydHkge2VudW19IHN0YXR1cyAtIFN0YXR1cyB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgZm9yIGZpbHRlciAtIGVnOiBhdmFpbGFibGUscGVuZGluZwogKi8KCi8qKgogKiBAdHlwZWRlZiBFcnJvcgogKiBAcHJvcGVydHkge3N0cmluZ30gY29kZS5yZXF1aXJlZAogKi8KCi8qKgogKiBAdHlwZWRlZiBSZXNwb25zZQogKiBAcHJvcGVydHkge1tpbnRlZ2VyXX0gY29kZQogKi8KCgovKioKICogVGhpcyBmdW5jdGlvbiBjb21tZW50IGlzIHBhcnNlZCBieSBkb2N0cmluZQogKiBUZXN0IFJvdXRlCiAqIEByb3V0ZSBQT1NUIC91c2VycwogKiBAcGFyYW0ge1BvaW50Lm1vZGVsfSBwb2ludC5ib2R5LnJlcXVpcmVkIC0gdGhlIG5ldyBwb2ludAogKiBAZ3JvdXAgZm9vIC0gT3BlcmF0aW9ucyBhYm91dCB1c2VyCiAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbC5xdWVyeS5yZXF1aXJlZCAtIHVzZXJuYW1lIG9yIGVtYWlsCiAqIEBwYXJhbSB7c3RyaW5nfSBwYXNzd29yZC5xdWVyeS5yZXF1aXJlZCAtIHVzZXIncyBwYXNzd29yZC4KICogQHBhcmFtIHtlbnVtfSBzdGF0dXMucXVlcnkucmVxdWlyZWQgLSBTdGF0dXMgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkIGZvciBmaWx0ZXIgLSBlZzogYXZhaWxhYmxlLHBlbmRpbmcKICogQG9wZXJhdGlvbklkIHJldHJpZXZlRm9vSW5mbwogKiBAcHJvZHVjZXMgYXBwbGljYXRpb24vanNvbiBhcHBsaWNhdGlvbi94bWwKICogQGNvbnN1bWVzIGFwcGxpY2F0aW9uL2pzb24gYXBwbGljYXRpb24veG1sCiAqIEByZXR1cm5zIHtSZXNwb25zZS5tb2RlbH0gMjAwIC0gQW4gYXJyYXkgb2YgdXNlciBpbmZvCiAqIEByZXR1cm5zIHtQcm9kdWN0Lm1vZGVsfSAgZGVmYXVsdCAtIFVuZXhwZWN0ZWQgZXJyb3IKICogQHJldHVybnMge0FycmF5LjxQb2ludD59IFBvaW50IC0gU29tZSBkZXNjcmlwdGlvbiBmb3IgcG9pbnQKICogQGhlYWRlcnMge2ludGVnZXJ9IDIwMC5YLVJhdGUtTGltaXQgLSBjYWxscyBwZXIgaG91ciBhbGxvd2VkIGJ5IHRoZSB1c2VyCiAqIEBoZWFkZXJzIHtzdHJpbmd9IDIwMC5YLUV4cGlyZXMtQWZ0ZXIgLSAJZGF0ZSBpbiBVVEMgd2hlbiB0b2tlbiBleHBpcmVzCiAqIEBzZWN1cml0eSBKV1QKICovCmBgYA== readmeEtag: '"81d793407c3bec6616b4d37a050358a63ec92cc4"' readmeLastModified: Tue, 03 May 2022 19:43:39 GMT repositoryId: 470741285 description: "This repository contains the source codes from npm package: express-swagger-producer |\_express-swagger-producer is TypeScript module that supports generating Swagger Api Documentation File with comments" created: '2022-03-16T20:27:05Z' updated: '2023-12-23T14:51:49Z' language: TypeScript archived: false stars: 2 watchers: 1 forks: 0 owner: cangokceaslan logo: https://avatars.githubusercontent.com/u/48398625?v=4 license: MIT repoEtag: '"b509e5b9ac18d1f7155a232f2a41874b097aadddde783d55f039f4b55a42be5b"' repoLastModified: Sat, 23 Dec 2023 14:51:49 GMT foundInMaster: true category: Parsers id: 0461674804ad63872c0efb2049669dbc - source: openapi3 tags repository: https://github.com/ruiaraujo012/openapi-express-codegen v3: true id: b7d1a7754796abe41f1cb0a854b3b89d repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIEV4cHJlc3MgQ29kZWdlbgoKPiBOb2RlLmpzIGxpYnJhcnkgdGhhdCBnZW5lcmF0ZXMgZXhwcmVzcyBUeXBlc2NyaXB0IHR5cGVzIGJhc2VkIG9uIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24uCgojIyBJbnN0YWxsCgpgYGAKbnBtIGluc3RhbGwgb3BlbmFwaS1leHByZXNzLWNvZGVnZW4gLS1zYXZlLWRldgpgYGAKCiMjIFVzYWdlCgpgYGAKJCBleHByZXNzLWdlbiAtLWhlbHAKCiAgVXNhZ2U6IGV4cHJlc3MtZ2VuIFtvcHRpb25zXQoKICBPcHRpb25zOgogICAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgICBvdXRwdXQgdGhlIHZlcnNpb24gbnVtYmVyCiAgICAtaSwgLS1pbnB1dCA8dmFsdWU+ICAgICAgIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiwgY2FuIGJlIGEgcGF0aCwgdXJsIG9yIHN0cmluZyBjb250ZW50IChyZXF1aXJlZCkKICAgIC1vLCAtLW91dHB1dCA8dmFsdWU+ICAgICAgT3V0cHV0IGRpcmVjdG9yeSAocmVxdWlyZWQpCiAgICAtLXVzZVVuaW9uVHlwZXMgICAgICAgICAgIFVzZSB1bmlvbiB0eXBlcyBpbnN0ZWFkIG9mIGVudW1zCiAgICAtLWV4cG9ydEludGVyZmFjZXMgPHZhbHVlPiAgV3JpdGUgaW50ZXJmYWNlcyB0byBkaXNrIChkZWZhdWx0OiB0cnVlKQogICAgLS1leHBvcnRNb2RlbHMgPHZhbHVlPiAgICBXcml0ZSBtb2RlbHMgdG8gZGlzayAoZGVmYXVsdDogdHJ1ZSkKICAgIC0tZXhwb3J0U2NoZW1hcyA8dmFsdWU+ICAgV3JpdGUgc2NoZW1hcyB0byBkaXNrIChkZWZhdWx0OiBmYWxzZSkKICAgIC0taW5kZW50IDx2YWx1ZT4gICAgICAgICAgSW5kZW50YXRpb24gb3B0aW9ucyBbNCwgMiwgdGFiXSAoZGVmYXVsdDogIjQiKQogICAgLS1wb3N0Zml4IDx2YWx1ZT4gICAgICAgICBJbnRlcmZhY2UgbmFtZSBwb3N0Zml4IChkZWZhdWx0OiAiR2VuZXJhdGVkIikKICAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgZGlzcGxheSBoZWxwIGZvciBjb21tYW5kCgogIEV4YW1wbGVzCiAgICAkIGV4cHJlc3MtZ2VuIC0taW5wdXQgLi9zcGVjLmpzb24gLS1vdXRwdXQgLi9nZW5lcmF0ZWQKYGBgCgojIERvY3VtZW50YXRpb24KCi0gW0Jhc2ljIHVzYWdlXShkb2NzL2Jhc2ljLXVzYWdlLm1kKQoKIyBSZWZlcmVuY2VzCgpUaGlzIHByb2plY3QgaXMgYmFzZWQgb246IFtvcGVuYXBpLXR5cGVzY3JpcHQtY29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL2ZlcmRpa29vbWVuL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlZ2VuKQo= readmeEtag: '"f56fe896c3fb60d4ecad1c14aa9c08a6e9504ded"' readmeLastModified: Sat, 25 Mar 2023 23:51:09 GMT repositoryId: 500802549 description: >- Library that generates express Typescript types based on the OpenAPI specification. created: '2022-06-07T10:59:22Z' updated: '2024-01-26T11:08:36Z' language: TypeScript archived: true stars: 2 watchers: 1 forks: 0 owner: ruiaraujo012 logo: https://avatars.githubusercontent.com/u/16304685?v=4 license: MIT repoEtag: '"cedc7edcdbe7788295e9d5792169d52c7b1f4b41850e3f0df345a9a2ae2b08d5"' repoLastModified: Fri, 26 Jan 2024 11:08:36 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/gbarre/capsule-api v3: true repositoryMetadata: base64Readme: >- IyBDYXBzdWxlLUFQSSBEb2N1bWVudGF0aW9uCgohW3B5dGhvbiB2ZXJzaW9uc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9QeXRob24tMy42JTIwJTdDJTIwMy43JTIwJTdDJTIwMy44LWJsdWUuc3ZnKQoKfCBDSSB8IFBpcGVsaW5lIC8gYnVpbGQgfCBDb3ZlcmFnZSB8CnwtLS0tfC0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IEdpdGxhYiAoaW50ZXJuYWwpIHwgWyFbcGlwZWxpbmUgc3RhdHVzXShodHRwczovL2dpdC5pbi5hYy12ZXJzYWlsbGVzLmZyL2NhcHN1bGUvY2Fwc2FwaS9iYWRnZXMvbWFzdGVyL3BpcGVsaW5lLnN2ZyldKGh0dHBzOi8vZ2l0LmluLmFjLXZlcnNhaWxsZXMuZnIvY2Fwc3VsZS9jYXBzYXBpL2NvbW1pdHMvbWFzdGVyKSB8IFshW2NvdmVyYWdlIHJlcG9ydF0oaHR0cHM6Ly9naXQuaW4uYWMtdmVyc2FpbGxlcy5mci9jYXBzdWxlL2NhcHNhcGkvYmFkZ2VzL21hc3Rlci9jb3ZlcmFnZS5zdmcpXShodHRwczovL2dpdC5pbi5hYy12ZXJzYWlsbGVzLmZyL2NhcHN1bGUvY2Fwc2FwaS9jb21taXRzL21hc3RlcikgfAp8IEdpdGh1YiAodHJhdmlzKSB8IFshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kuY29tL2diYXJyZS9jYXBzdWxlLWFwaS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLmNvbS9nYmFycmUvY2Fwc3VsZS1hcGkpIHwgTi9BIHwKCiMjIFJ1biB0aGUgY2Fwc3VsZSBBUEkgc2VydmVyIGluIHRoZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudAoKKipSZXF1aXJlbWVudHMqKiA6IHRvIHJ1biB0aGUgZnVsbCBzdGFjaywgeW91IG5lZWQgdG8gaW5zdGFsbDoKCi0gZG9ja2VyCi0gZG9ja2VyLWNvbXBvc2UKLSBweXRob24zLjYgKG9yIGhpZ2hlcikKLSBweXRob24zLjYtZGV2Ci0ganEKClRoZW46CgpgYGBzaAojIFlvdSBoYXZlIHRvIGFjdGl2YXRlIGEgdmlydHVhbGVudiBhbmQgaW5zdGFsbCB0aGUgcmVxdWlyZWQgcGFja2FnZXMuCnB5dGhvbjMgLW0gdmVudiAuL3ZlbnYKLiB2ZW52L2Jpbi9hY3RpdmF0ZQpwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcGlwCnBpcCBpbnN0YWxsIC0tdXBncmFkZSBzZXR1cHRvb2xzCnBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKcGlwIGluc3RhbGwgLXIgdGVzdC1yZXF1aXJlbWVudHMudHh0ICMgSWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byBydW4gdGVzdHMgdG9vLgoKIyBSdW4gYSBkb2NrZXIgaW5zdGFuY2Ugb2Yga2V5Y2xvYWsgYSB2YWxpZCBjb25maWcgZmlsZSAuL2NvbmZpZy1kZXYueW1sCiMgZm9yIHRoZSBjYXBzdWxlLWFwaSBzZXJ2ZXIgd2lsbCBiZSBjcmVhdGVkLgouL2tleWNsb2FrL3N0YXJ0LnNoCgojIFRvIHVwIHRoZSBsb2NhbCBNeVNRTCBzZXJ2ZXIgYW5kIHRoZSBOQVRTIHNlcnZlci4KZG9ja2VyLWNvbXBvc2UgdXAgLWQKCiMgVG8gb3BlbiBhIG15c3FsIGNsaWVudCBpbiB0aGUgZG9ja2VyLgojCiNkb2NrZXItY29tcG9zZSBleGVjIGRiIG15c3FsIC11IHJvb3QgLXAnbG9jYWwnIGNhcHN1bGVfbG9jYWwKCiMgVG8gYXBwbHkgYSBtaWdyYXRpb24gb2YgdGhlIGRhdGFiYXNlLgpGTEFTS19BUFA9c2VydmVyLnB5IENBUFNVTEVfQVBJX0NPTkZJRz1jb25maWctZGV2LnltbCBweXRob24gLW0gZmxhc2sgZGIgdXBncmFkZQoKIyBBbmQgdGhlbiwgdG8gcnVuIGEgZGV2L3Rlc3QgY2Fwc3VsZS1hcGkgc2VydmVyIChub3QgcmVsZXZhbnQgZm9yIGEgcHJvZHVjdGlvbiBzZXJ2ZXIpLgpweXRob24gLVdkIHNlcnZlci5weSAtYyBjb25maWctZGV2LnltbApgYGAKCioqUmVtYXJrOioqIGlmIHRoZSBzZXJ2ZXIgaXMgcnVubmluZywgeW91IGNhbiB2aWV3IHRoZSBBUEkgc3BlY2lmaWNhdGlvbgphdCB0aGUgYWRkcmVzcyBbaHR0cDovL2xvY2FsaG9zdDo1MDAwL3YxL3VpL10oaHR0cDovL2xvY2FsaG9zdDo1MDAwL3YxL3VpLykuCgojIyBUbyBzdG9wIGNhcHN1bGUgQVBJIHNlcnZlciBhbmQgcmVtb3ZlIGFsbCBkb2NrZXIgaW5zdGFuY2VzCgpUeXBlIGBDVFJMK2NgIHRvIHN0b3AgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIG9mIGNhcHN1bGUtYXBpIHNlcnZlci4KVGhlbiwgdG8gcmVtb3ZlIGFsbCBkb2NrZXIgaW5zdGFuY2VzIChrZXlsb2FjaywgTXlTUUwgYW5kIE5BVFMpOgoKYGBgc2gKIyBSZW1vdmUgdGhlIGtleWNsb2FrIGluc3RhbmNlLgpkb2NrZXIgc3RvcCBrZXljbG9ha19kZXYgJiYgZG9ja2VyIHJtIGtleWNsb2FrX2RldgoKIyBSZW1vdmUgdGhlIE5BVFMgYW5kIE15U1FMIGluc3RhbmNlcy4KIyBXYXJuaW5nLCAtdiBvcHRpb24gcmVtb3ZlIHRoZSBNeVNRTCB2b2x1bWUgYW5kIHlvdSB3aWxsIGxvc2UgYWxsIGRhdGEuCiMgRG9uJ3QgbWVudGlvbiB0aGUgLXYgb3B0aW9uIGlmIHlvdSB3YW50IHRvIGtlZXAgdGhlIE15U1FMIHZvbHVtZS4KZG9ja2VyLWNvbXBvc2UgZG93biAtdgpgYGAKCiMjIERhdGFiYXNlIG1pZ3JhdGlvbgoKYGBgc2gKIyBUbyBhZGQgYSBuZXcgbWlncmF0aW9uIDoKRkxBU0tfQVBQPXNlcnZlci5weSBDQVBTVUxFX0FQSV9DT05GSUc9Y29uZmlnLWRldi55bWwgcHl0aG9uIC1tIGZsYXNrIGRiIG1pZ3JhdGUgLW0gIk15IG5ldyBtaWdyYXRpb24iCgojIFRvIGFwcGx5IGEgbWlncmF0aW9uLgpGTEFTS19BUFA9c2VydmVyLnB5IENBUFNVTEVfQVBJX0NPTkZJRz1jb25maWctZGV2LnltbCBweXRob24gLW0gZmxhc2sgZGIgdXBncmFkZQpgYGAKCiMjIFJ1biB0ZXN0cwoKYGBgc2gKIyBUbyBydW4gY292ZXIgKHdoaWNoIGluY2x1ZGVzIHRlc3RzKQpweXRob24gLW0gcHl0ZXN0IC12IC1uOCAtLWNvdj0uIC0tY292LWNvbmZpZz0uY292ZXJhZ2VyYy1jaSAtLWNvdi1yZXBvcnQgaHRtbCAtLWNvdi1yZXBvcnQgdGVybSB0ZXN0cy9hcGkvCgojIFRvIHJ1biBsaW50CmZsYWtlOCAtLWV4dGVuZC1leGNsdWRlPXZlbnYsbWlncmF0aW9ucyAtLWlnbm9yZT1FNDAyCgojIFRvIHJ1biBzZWNhdWRpdApiYW5kaXQgLW41IC14ICIuL3ZlbnYvKiwuL3Rlc3RzLyosLi9kZXYtdG9vbHMvKiIgLXIgLiAtbGwKYGBgCgojIyBVcGRhdGUgQVBJIHNwZWNpZmljYXRpb25zCgpBZnRlciB1cGRhdGluZyB0aGUgQVBJIHNwZWMsIHlvdSBtdXN0IHJlYnVpbGQgdGhlIGBvcGVuYXBpLmpzb25gIGZpbGUgd2l0aCB0aGlzIGNvbW1hbmQ6CgpgYGBzaApkb2NrZXIgcnVuIC0tcm0gLXYgIiRQV0Qvc3BlYzovc3BlYyIgLWl0IGplYW5iZXJ1L3N3YWdnZXItY2xpIHN3YWdnZXItY2xpIGJ1bmRsZSAtbyAvc3BlYy9vcGVuYXBpLmpzb24gL3NwZWMvaW5kZXgueWFtbApgYGAKCiMjIFJ1biBwcm9kdWN0aW9uIHNlcnZlcgoKYGBgc2gKZ3VuaWNvcm4gLS1hY2Nlc3MtbG9nZmlsZSAtIC0tYmluZCAwLjAuMC4wOjUwMDAgLXcgNCAtLXByZWxvYWQgc2VydmVyOmFwcApgYGAKCiMjIFJ1biB0aGUgZG9ja2VyIHByb2R1Y3Rpb24gc2VydmVyCgpgYGBzaApkb2NrZXIgcnVuIC0tcm0gXAogIC12ICRQV0QvY29uZmlnLnltbDovZXRjL2NhcHN1bGUtYXBpL2NvbmZpZy55bWwgXAogIC0tbmV0PWhvc3QgXAogIC1lIFdPUktFUlM9OCBcCiAgLWUgREJfTUlHUkFURT11cGdyYWRlIFwKICAtLW5hbWUgY2Fwc3VsZS1hcGkgXAogIGhhcmJvci5pbi5hYy12ZXJzYWlsbGVzLmZyL2luZnJhL2NhcHN1bGUtYXBpOjIuMC4xLTU3ZmIxMzVjLTAwNjM5CmBgYAoKVG8gdXNlIHdpdGggSFRUUFMgKippbiBkZXZlbG9wbWVudCoqIHJ1bjoKCmBgYHNoCmRvY2tlciBydW4gLS1ybSBcCiAgLXYgJFBXRC9jb25maWcueW1sOi9ldGMvY2Fwc3VsZS1hcGkvY29uZmlnLnltbCBcCiAgLS1uZXQ9aG9zdCBcCiAgLWUgV09SS0VSUz04IFwKICAtZSBEQl9NSUdSQVRFPXVwZ3JhZGUgXAogIC1lIFNTTD10cnVlIFwKICAtLW5hbWUgY2Fwc3VsZS1hcGkgXAogIGhhcmJvci5pbi5hYy12ZXJzYWlsbGVzLmZyL2luZnJhL2NhcHN1bGUtYXBpOjIuMC4xLTU3ZmIxMzVjLTAwNjM5CmBgYAoKVG8gdXNlIHdpdGggSFRUUFMgKip3aXRoIHlvdXIgY2VydGlmaWNhdGUqKiBydW46CgpgYGBzaApkb2NrZXIgcnVuIC0tcm0gXAogIC12ICRQV0QvY29uZmlnLnltbDovZXRjL2NhcHN1bGUtYXBpL2NvbmZpZy55bWwgXAogIC0tbmV0PWhvc3QgXAogIC1lIFdPUktFUlM9OCBcCiAgLWUgREJfTUlHUkFURT11cGdyYWRlIFwKICAtZSBTU0w9dHJ1ZSBcCiAgLXYgJHtQQVRIX1RPX0NSVF9GSUxFfTovY2Fwc3VsZS1hcGkvY2VydC9jYXBzdWxlLmNydCBcCiAgLXYgJHtQQVRIX1RPX0tFWV9GSUxFfTovY2Fwc3VsZS1hcGkvY2VydC9jYXBzdWxlLmtleSBcCiAgLS1uYW1lIGNhcHN1bGUtYXBpIFwKICBoYXJib3IuaW4uYWMtdmVyc2FpbGxlcy5mci9pbmZyYS9jYXBzdWxlLWFwaToyLjAuMS01N2ZiMTM1Yy0wMDYzOQpgYGAKCiMjIEEgZmV3IHVzZWZ1bGwgY29tbWFuZHMKCiMjIyBIYWNrIHRoZSBjb2RlIGFuZCBjcmVhdGUgY2Fwc3VsZXMgYW5kIHVzZXJzCgpgYGBzaApjdXJsIC0tbG9jYXRpb24gLS1yZXF1ZXN0IFBPU1QgJ2h0dHA6Ly9sb2NhbGhvc3Q6NTAwMC92MS9jYXBzdWxlcycgXAogICAgLS1oZWFkZXIgJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbicgXAogICAgLS1oZWFkZXIgIkF1dGhvcml6YXRpb246IEJlYXJlciAkVE9LRU4iIFwKICAgIC0tZGF0YS1yYXcgJ3sgIm5hbWUiOiAiVGVzdC1DYXBzdWxlLTEiLCAib3duZXJzIjogWyAidXNlcmZvbyIsICJ1c2VyYmFyIiBdIH0nCmBgYAoKIyMjIEdldCBrZXljbG9hayB1c2VycwoKYGBgc2gKIyEvYmluL3NoCgojIHJlcXVpcmVzIGpxCgojIGNvbmZpZwpLRVlDTE9BS19VUkw9aHR0cHM6Ly9rZXljbG9hay5leGFtcGxlLmNvbS9hdXRoCktFWUNMT0FLX1JFQUxNPW15X3JlYWxtCktFWUNMT0FLX0NMSUVOVF9JRD1teV9jbGllbnRfaWQKS0VZQ0xPQUtfQ0xJRU5UX1NFQ1JFVD1mZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZmYKCiMgRE8gTk9UIEVESVQgTkVYVCBUSElTIExJTkUKRklMVEVSPSIiClVTRVI9IiQxIgoKIyBHZXQgdmFsaWQgdG9rZW4KUkVTVUxUPWBjdXJsIC1zIC0tZGF0YSAiZ3JhbnRfdHlwZT1jbGllbnRfY3JlZGVudGlhbHMmY2xpZW50X2lkPSR7S0VZQ0xPQUtfQ0xJRU5UX0lEfSZjbGllbnRfc2VjcmV0PSR7S0VZQ0xPQUtfQ0xJRU5UX1NFQ1JFVH0iIFwKICAke0tFWUNMT0FLX1VSTH0vcmVhbG1zLyR7S0VZQ0xPQUtfUkVBTE19L3Byb3RvY29sL29wZW5pZC1jb25uZWN0L3Rva2VuYApleHBvcnQgVEtOPSQoZWNobyAkUkVTVUxUIHwganEgLXIgJy5hY2Nlc3NfdG9rZW4nKQoKIyBMb29rIGZvciBzcGVjaWZpYyB1c2VyID8KaWYgWyAhIC16ICRVU0VSIF0KdGhlbgogIEZJTFRFUj0iP3VzZXJuYW1lPSR7VVNFUn0iCmZpCgojIEdldCB1c2VyKHMpCmN1cmwgLXMgLVggR0VUICIke0tFWUNMT0FLX1VSTH0vYWRtaW4vcmVhbG1zLyR7S0VZQ0xPQUtfUkVBTE19L3VzZXJzLyR7RklMVEVSfSIgXAotSCAiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIiBcCi1IICJBdXRob3JpemF0aW9uOiBCZWFyZXIgJFRLTiIKCmBgYAoKIyMjIFNlbmQgTmF0cyByZXF1ZXN0IHRvIHNpbXVsYXRlIGEgZHJpdmVyCgoqKldhcm5pbmcqKjogZW5zdXJlIGFsbCBwcml2YXRlL3B1YmxpYyBrZXlzIGFyZSBzZXR0ZWQgaW4gdGhlIGBjb25maWcueWxtYC4KCmBgYHNoCmNkIGRldi10b29scwpweXRob24gcHVibGlzaF9tc2cucHkgLS1uYXRzPWxvY2FsaG9zdDo0MjIyIC0tc3ViamVjdD0iY2Fwc3VsZS5hZGRvbi5lY2VhNzY4My05MmE4LTRlMmQtYTg0Ni1iZTNjOTJmMDEzMDgiIC0tc3RhdGU9Ij9saXN0IiAtLWRhdGE9J3t9JwpweXRob24gcHVibGlzaF9tc2cucHkgLS1uYXRzPWxvY2FsaG9zdDo0MjIyIC0tc3ViamVjdD0iY2Fwc3VsZS53ZWJhcHAiIC0tc3RhdGU9Ij9zdGF0ZSIgLS1kYXRhPSd7ImlkIjogIjE5MTI5ZjkzLWI1MGMtNGQwNi05Yzk2LWQ3NzlkMWRhYzQ2NyJ9JwpgYGAKCiMjIFRPRE8KCi0gQVBJOgogIC0gYWRkIHdlYmFwcC9hZGRvbiBzdGF0dXMtZmxhZwotIEZyb250OgogIC0gY2Fwc3VsZToKICAgIC0gU2VuZCBlcnJvciBtZXNzYWdlIGJlZm9yZSB0aGUgZW5kIG9mIGNyZWF0aW9uCiAgICAtIENhdGNoIG93bmVyIHJlcGV0aXRpb24gb24gY3JlYXRpb24KICAgIC0gQ2hlY2sgaWYgdXNlciBleGlzdHMgaW4ga2V5Y2xvYWsgYWZ0ZXIgdGhlIGxvY2FsIHNlYXJjaCBmYWlscwogIC0gYWRkb25zOgogICAgLSBDaGFuZ2UgImZpbGUiIG9wdGlvbiAobGlrZSB3ZWJhcHApCiAgICAtIFNjcmlwdCB0byBjaGVjayBjb25zaXN0ZW5jeSBiZXR3ZWVuIHNxbGl0ZSAmIGV4aXN0aW5nIGRhdGFiYXNlcwo= readmeEtag: '"f9102c13c17ce831f90335e3456d8f89d7cc7c85"' readmeLastModified: Thu, 08 Feb 2024 14:10:36 GMT repositoryId: 247653584 description: null created: '2020-03-16T08:53:52Z' updated: '2023-02-15T08:54:46Z' language: Python archived: false stars: 2 watchers: 4 forks: 2 owner: gbarre logo: https://avatars.githubusercontent.com/u/2445791?v=4 repoEtag: '"d3e8898dd83243fbd63a533c445696bba58ac64fdb43b36d4218728ac3ed4ad7"' repoLastModified: Wed, 15 Feb 2023 08:54:46 GMT foundInMaster: true category: Server Implementations id: d99a6f581aa69091e73283d4a9cb3b72 - source: openapi3 tags repository: https://github.com/dota-showcase/inventory-service v3: true id: 110eab7ad814a12856226121e167c630 repositoryMetadata: base64Readme: >- IyBEb3RhIFNob3djYXNlIC0gSW52ZW50b3J5IFNlcnZpY2UKClJFU1QgQVBJIHNlcnZpY2UgdG8gc3RvcmUgYW5kIHRyYWNrIGNoYW5nZXMgb2Ygc3RlYW0gdXNlcidzIGRvdGEgMiBpbnZlbnRvcnkgaXRlbXMuCgojIyBGZWF0dXJlcwoKKiBJbnZlbnRvcnkgaGlzdG9yeSAtIGNyZWF0ZWQsIHVwZGF0ZWQsIGRlbGV0ZWQgaXRlbXMKKiBSYXRlIGxpbWl0ZXIKKiBVbml0IHRlc3RzCgojIyBBUEkgRG9jcwoKU3dhZ2dlciBPcGVuQVBJIDMgaXMgYXZhaWxhYmxlIGJ5IHBhdGg6CgoqIFVJOiAgIGBob3N0OnBvcnQvc3dhZ2dlci11aS5odG1sYAoqIEpTT046IGBob3N0OnBvcnQvYXBpLWRvY3NgCgojIyMgSW52ZW50b3J5IEVuZHBvaW50cwoKKiBTaG93IEludmVudG9yaWVzOiBgR0VUIC9hcGkvdjEvaW52ZW50b3JpZXNgCiogU2VhcmNoIEludmVudG9yaWVzIChwYWdpbmF0ZWQpOiBgR0VUIC9hcGkvdjEvaW52ZW50b3JpZXMvc2VhcmNoLXBhZ2VgCiogQ3JlYXRlIGFuIEludmVudG9yeSAobG9hZCBpdGVtcyBmcm9tIHN0ZWFtKTogYFBPU1QgL2FwaS92MS9pbnZlbnRvcmllcy86c3RlYW1pZGAKKiBTaG93IGFuIEludmVudG9yeTogYEdFVCAvYXBpL3YxL2ludmVudG9yaWVzLzpzdGVhbWlkYAoqIFVwZGF0ZSBhbiBJbnZlbnRvcnkgKHJlbG9hZCBpdGVtcyBmcm9tIHN0ZWFtKTogYFBVVCAvYXBpL3YxL2ludmVudG9yaWVzLzpzdGVhbWlkYAoqIERlbGV0ZSBhbiBJbnZlbnRvcnk6IGBERUxFVEUgL2FwaS92MS9pbnZlbnRvcmllcy86c3RlYW1pZGAKCiMjIyBJbnZlbnRvcnkgSXRlbXMgRW5kcG9pbnRzCgoqIFNlYXJjaCBJbnZlbnRvcnkgSXRlbXMgKGZpbHRlciB3aXRoIGxhcmdlIHBheWxvYWRzKTogYFBPU1QgL2FwaS92MS9pbnZlbnRvcmllcy86c3RlYW1pZC9pdGVtcy9zZWFyY2hgCiogU2VhcmNoIEludmVudG9yeSBJdGVtcyAocGFnaW5hdGVkOyBmaWx0ZXIgd2l0aCBsYXJnZSBwYXlsb2Fkcyk6IGBQT1NUIC9hcGkvdjEvaW52ZW50b3JpZXMvOnN0ZWFtaWQvaXRlbXMvc2VhcmNoLXBhZ2VgCiogU2hvdyBJbnZlbnRvcnkgSXRlbXMgKHBvc2l0aW9uZWQgcGFnaW5hdGlvbik6IGBHRVQgL2FwaS92MS9pbnZlbnRvcmllcy86c3RlYW1pZC9pdGVtcy9wYWdlLXBvc2l0aW9uZWRgCiogU2hvdyBJbnZlbnRvcnkgSXRlbXMgJ2RlZkluZGV4JyBmaWVsZHM6IGBHRVQgL2FwaS92MS9pbnZlbnRvcmllcy86c3RlYW1JZC9pdGVtcy9kZWYtaW5kZXhlc2AKKiBTaG93IEludmVudG9yeSBJdGVtcyBjaGFuZ2VzOiBgR0VUIC9hcGkvdjEvaW52ZW50b3JpZXMvOnN0ZWFtaWQvY2hhbmdlcy86dmVyc2lvbi86dHlwZWAKCiMjIyBPcGVyYXRpb25zIEVuZHBvaW50cwoKKiBTZWFyY2ggT3BlcmF0aW9ucyAocGFnaW5hdGVkKTogYEdFVCAvYXBpL3YxL2ludmVudG9yaWVzLzpzdGVhbWlkL29wZXJhdGlvbnMvc2VhcmNoLXBhZ2VgCgojIyBHZXR0aW5nIFN0YXJ0ZWQKCiMjIyBQcmVyZXF1aXNpdGVzCgoqIEphdmEgMjUKKiBHcmFkbGUgOQoqIE1vbmdvREIgOC4yCgojIyMgSW5zdGFsbGF0aW9uCgoxLiBDcmVhdGUgYC5lbnZgIGJhc2VkIG9uIGAuZW52LmV4YW1wbGVgCjIuIENyZWF0ZSBgZW52aXJvbm1lbnQucHJvcGVydGllc2AgYmFzZWQgb24gYGVudmlyb25tZW50LnByb3BlcnRpZXMuZXhhbXBsZWAgaW4gYGFwcC9zcmMvbWFpbi9yZXNvdXJjZXNgCjMuIFNldCB0aGUgc3RlYW0gYXBpIGtleSBwcm9wZXJ0eSB0byBhY2Nlc3MgU3RlYW0ncyBBUEk6CiAgICBgYGBiYXNoCiAgICBlbnYuc3RlYW0uYXBpLmtleT15b3VyX2FwaV9rZXkKICAgIGBgYAo0LiBUbyBydW4gaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuIAogICBZb3UgY2FuIHVzZSBhIGRlZmF1bHQgYnVpbGQgZm9yIEludGVsbGlKIElERUEgdG8gcnVuIHRoZSBhcHAgLSBgLnJ1bi9kZXYtYnVpbGQucnVuLnhtbGAuCiAgICBgYGBiYXNoCiAgICBkb2NrZXItY29tcG9zZSB1cAogICAgYGBgCjUuIFRvIHJ1biBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50CiAgICBgYGBiYXNoCiAgICBkb2NrZXIgY29tcG9zZSAtZiBkb2NrZXItY29tcG9zZS5wcm9kLnltbCB1cCAtZAogICAgYGBgCgojIyBEYXRhIE1vZGVsCgpDb25jZXB0dWFsIGVudGl0eSByZWxhdGlvbiBkaWFncmFtIChCYXJrZXIncyBzeXN0ZW0pOgoKIVtdKGVudGl0eS1yZWxhdGlvbi1kaWFncmFtLnBuZykKCiMjIEJhY2stb2YtdGhlLWVudmVsb3BlIEVzdGltYXRpb25zCgojIyMgIFN0b3JhZ2UgU3BhY2UKCkFzc3VtcHRpb25zOgoKKiBBdmVyYWdlIGludmVudG9yeSBpdGVtIHNpemUgLSA1MDAgYnl0ZXMuCiogQXZlcmFnZSB1c2VyIGhhcyA1MDAwIGludmVudG9yeSBpdGVtcy4KKiBVc2VycyB1cGRhdGUgaW52ZW50b3J5IG9uY2UgcGVyIGRheS4gRWFjaCBkYXkgaXQgaW5jcmVhc2VkIGJ5IHNvbWUgc21hbGwgY29lZmZpY2llbnQgKDAuMDUpLgoqIERhdGEgaXMgc3RvcmVkIGZvciBhIHllYXIuCgpFc3RpbWF0ZToKCiogVXNlciBpbnZlbnRvcnkgc2l6ZTogNTAwIEIgKiA1MDAwID0gMi41IE1CCiogVXNlciBpbnZlbnRvcnkgc2l6ZSBmb3IgYSB5ZWFyOiAyLjUgTUIgKyAoMzY1ICogMC4wNSAqIDIuNSBNQikgPSB+NTAgTUIKKiAqKlN0b3JhZ2UgZm9yIDEwMEsgdXNlcnM6IDUwTUIgKiAxMDAwMDAgPSB+NSBUQioqCiMjIFJlc291cmNlcwoKLSBbU3RlYW0gQVBJIC0gR2V0UGxheWVySXRlbXNdKGh0dHBzOi8vd2lraS50ZWFtZm9ydHJlc3MuY29tL3dpa2kvV2ViQVBJL0dldFBsYXllckl0ZW1zKQoKIyMgSXNzdWVzCgojIyMgUnVuIHRlc3RzIG9uIGxpbnV4IC0gcHJvYmxlbSB3aXRoIGZsYXBkb29kbGUgZW1iZWRkZWQgbW9uZ28gZGIKRG93bmxvYWQgJiBpbnN0YWxsIGxpYnNzbDEuMSBsYXRlc3QgdmVyc2lvbjoKCmBgYGJhc2gKd2dldCBodHRwOi8vbnoyLmFyY2hpdmUudWJ1bnR1LmNvbS91YnVudHUvcG9vbC9tYWluL28vb3BlbnNzbC9saWJzc2wxLjFfMS4xLjFmLTF1YnVudHUyX2FtZDY0LmRlYgpzdWRvIGRwa2cgLWkgbGlic3NsMS4xXzEuMS4xZi0xdWJ1bnR1Ml9hbWQ2NC5kZWIKIGBgYAoKIyMgTGljZW5zZQoKVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYzLjAuIFBsZWFzZSBzZWUgW0xpY2Vuc2UgRmlsZV0oTElDRU5TRSkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCg== readmeEtag: '"06ebdc0a086105c594cfad80f712eeba3c008aec"' readmeLastModified: Wed, 14 Jan 2026 03:35:30 GMT repositoryId: 506423971 description: REST service to store and track changes of Dota 2 inventory items. created: '2022-06-22T22:29:20Z' updated: '2026-01-27T20:27:41Z' language: Java archived: false stars: 2 watchers: 1 forks: 0 owner: dota-showcase logo: https://avatars.githubusercontent.com/u/104716440?v=4 license: GPL-3.0 repoEtag: '"6143db8fc840945a5e9cbaab4ef5e8ace047307f5d312c98fb45b35365c36777"' repoLastModified: Tue, 27 Jan 2026 20:27:41 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/sierrasoftworks/rex-rs v3: true repositoryMetadata: base64Readme: >- IyBSYW5keSAKKipLZWVwIHRyYWNrIG9mIHZhcmlvdXMgaWRlYXMgYW5kIHJhbmRvbWx5IHNlbGVjdCBvbmUgb24gZGVtYW5kKioKClshW1RyYXZpcyAoLmNvbSldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdHJhdmlzL2NvbS9TaWVycmFTb2Z0d29ya3MvcmFuZHktcnMuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UpXShodHRwczovL3RyYXZpcy1jaS5jb20vU2llcnJhU29mdHdvcmtzL3JhbmR5LXJzKQpbIVtBUEkgZG9jc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9kb2NzLWFwaS1ibHVlLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9yYW5keWFwcC5kb2NzLmFwaWFyeS5pbykKIVtHaXRIdWJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvU2llcnJhU29mdHdvcmtzL3JhbmR5LXJzLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlKQoKUmFuZHkgaXMgYSB0b29sIGZvciBrZWVwaW5nIHRyYWNrIG9mIGlkZWFzIGZvciB0aGluZ3MgdG8gZG8gYW5kIHByb3ZpZGluZywgb24gZGVtYW5kLAphIHJhbmRvbSBvbmUgdG8gZG8uCg== readmeEtag: '"7eb11f451b9df79f17b3c2be8b21179a33dc8998"' readmeLastModified: Tue, 23 Jul 2024 17:21:45 GMT repositoryId: 175636823 description: Tool for keeping track of ideas and providing random ones on demand created: '2019-03-14T14:20:18Z' updated: '2026-02-05T18:56:05Z' language: Rust archived: false stars: 2 watchers: 0 forks: 0 owner: SierraSoftworks logo: https://avatars.githubusercontent.com/u/5012716?v=4 license: MIT repoEtag: '"0fa793e6131b4df7e0fe048ff9822dc3a221e3945e624346c41fd79b60cb5c05"' repoLastModified: Thu, 05 Feb 2026 18:56:05 GMT foundInMaster: true category: - Description Validators - Testing id: f6a674399fe0c67c7b8178d1394cdf03 - source: openapi3 tags repository: https://github.com/wfcd/api-spec v3: true repositoryMetadata: base64Readme: >- IyBXYXJmcmFtZVN0YXQudXMgT3BlbkFQSSBTcGVjaWZpY2F0aW9uClshW0dpdEh1YiBwYWdlc10oaHR0cHM6Ly9naXRodWIuY29tL1dGQ0QvYXBpLXNwZWMvYWN0aW9ucy93b3JrZmxvd3MvZG9jcy55YW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9XRkNEL2FwaS1zcGVjL2FjdGlvbnMvd29ya2Zsb3dzL2RvY3MueWFtbCkKCiMjIExpbmtzCgotIFtSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAoUmVEb2MpXShodHRwczovL2RvY3Mud2FyZnJhbWVzdGF0LnVzKQotIFtTd2FnZ2VyVUldKGh0dHBzOi8vZG9jcy53YXJmcmFtZXN0YXQudXMvc3dhZ2dlci11aS8pCi0gT3BlbkFQSSBSYXcgRmlsZXM6IFtKU09OXShodHRwczovL2RvY3Mud2FyZnJhbWVzdGF0LnVzL29wZW5hcGkuanNvbikgW1lBTUxdKGh0dHBzOi8vZG9jcy53YXJmcmFtZXN0YXQudXMvb3BlbmFwaS55YW1sKQoKKipXYXJuaW5nOioqIEFsbCBhYm92ZSBsaW5rcyBhcmUgdXBkYXRlZCBvbmx5IGFmdGVyIEFjdGlvbnMgZmluaXNoZXMgZGVwbG95bWVudAoKIyMgV29ya2luZyBvbiBzcGVjaWZpY2F0aW9uCiMjIyBJbnN0YWxsCgoxLiBJbnN0YWxsIFtOb2RlIEpTXShodHRwczovL25vZGVqcy5vcmcvKQoyLiBDbG9uZSByZXBvIGFuZCBydW4gYG5wbSBpbnN0YWxsYCBpbiB0aGUgcmVwbyByb290CgojIyMgVXNhZ2UKCiMjIyMgYG5wbSBzdGFydGAKU3RhcnRzIHRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIgb24gcG9ydCBbYDgwODBgXShodHRwOi8vbG9jYWxob3N0OjgwODApLgoKIyMjIyBgbnBtIHJ1biBidW5kbGVgCkJ1bmRsZXMgdGhlIHNwZWMgYW5kIHByZXBhcmVzIHdlYl9kZXBsb3kgZm9sZGVyIHdpdGggc3RhdGljIGFzc2V0cy4KCiMjIyMgYG5wbSB0ZXN0YApWYWxpZGF0ZXMgdGhlIHNwZWMuCgojIyMjIGBucG0gcnVuIGdoLXBhZ2VzYApEZXBsb3lzIGRvY3MgdG8gR2l0SHViIFBhZ2VzLiBZb3UgZG9uJ3QgbmVlZCB0byBydW4gaXQgbWFudWFsbHkgaWYgeW91IGhhdmUgVHJhdmlzIENJIGNvbmZpZ3VyZWQuCg== readmeEtag: '"00c8f2f94c762cbc94cfbb8b88fb9d448a293275"' readmeLastModified: Fri, 06 Sep 2024 17:42:22 GMT repositoryId: 115034680 description: OpenAPI Specifications for WarframeStat.us API created: '2017-12-21T18:21:32Z' updated: '2026-02-06T01:22:13Z' language: CSS archived: false stars: 3 watchers: 6 forks: 5 owner: WFCD logo: https://avatars.githubusercontent.com/u/24436369?v=4 license: MIT repoEtag: '"6da66e68e390826bb9a578d1a6ddd529151358fbe6b7d40342eafb05ac78caab"' repoLastModified: Fri, 06 Feb 2026 01:22:13 GMT foundInMaster: true category: - Description Validators - Parsers id: b24c18cad2dfc337dc62885cc4203361 - source: openapi3 tags repository: https://github.com/alwaysbemark/spring-boot-openapi-generator v3: true repositoryMetadata: base64Readme: >- IyBTcHJpbmcgQm9vdCBBUEkgRmlyc3QgRGVzaWduIFdpdGggT3BlbkFQSSBHZW5lcmF0b3IKVGhpcyBzaG93Y2FzZXMgYSBzaW1wbGlzdGljIFNwcmluZyBCb290IHByb2plY3Qgd2l0aCBhbiBBUEktZmlyc3QgZGVzaWduIHBhdHRlcm4uICAKVGhlIHJlc3QgcGFja2FnZSBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBhIFJFU1QgY29udHJvbGxlciB0aGF0IGltcG9ydHMgQVBJIGFuZCBtb2RlbCBmaWxlcyB0aGF0IGdldCBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIHRoZSBzdXBwbGllZCBbT3BlbkFQSSAzIHNwZWMgZmlsZV0oc3JjL21haW4vcmVzb3VyY2VzL2FwaS55bWwpLiAgCkFwaSBhbmQgbW9kZWwgZmlsZXMgd2lsbCBiZSBnZW5lcmF0ZWQgYmVmb3JlIHRoZSBjb21waWxlSmF2YSB0YXNrIG9mIHRoZSBHcmFkbGUgSmF2YSBwbHVnaW4uIFRoZSBwcm9jZXNzUmVzb3VyY2UgZGVwZW5kZW5jeSBpcyB0byBhcHBlYXNlIEdyYWRsZSdzIGNvbXBpbGUgb3B0aW1pc2F0aW9uLiAgCiAgClBsZWFzZSBydW4gYC4vZ3JhZGxldyBjbGVhbiBidWlsZGAgdG8gd2l0bmVzcyB0aGUgbWFnaWMuCgo= readmeEtag: '"f87944e30aaa9634e4348b62623ec734da1a0bfa"' readmeLastModified: Fri, 27 Aug 2021 07:58:54 GMT repositoryId: 397819522 description: >- This showcases a simplistic Spring Boot project with an API-first design pattern created: '2021-08-19T04:49:13Z' updated: '2023-11-20T20:47:59Z' language: Java archived: false stars: 2 watchers: 1 forks: 2 owner: alwaysbemark logo: https://avatars.githubusercontent.com/u/56749912?v=4 license: MIT repoEtag: '"08a0513a2c39d0f1c2f9be1f30067b0b0224350313d35823f5362b6bc366709f"' repoLastModified: Mon, 20 Nov 2023 20:47:59 GMT foundInMaster: true category: - SDK - Server Implementations id: 40c23804d1858307199a3f4edf5f957a - source: openapi3 tags repository: https://github.com/jonarsli/flask-restapi v3: true repositoryMetadata: base64Readme: >- IyBGbGFzay1SRVNUQVBJCgpbIVtsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL2pvbmFyc2xpL2ZsYXNrLXJlc3RhcGkuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2pvbmFyc2xpL2ZsYXNrLXJlc3RhcGkvYmxvYi9tYXN0ZXIvTElDRU5TRSkKWyFbcHlwaV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvZmxhc2stcmVzdGFwaS5zdmcpXShodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2ZsYXNrLXJlc3RhcGkpCgoKW0ZsYXNrLVJFU1RBUEkgZG9jdW1lbnRdKGh0dHBzOi8vam9uYXJzbGkuZ2l0aHViLmlvL2ZsYXNrLXJlc3RhcGkvKQoKRmxhc2stUkVTVEFQSSBpcyBhbiBleHRlbnNpb24gZm9yIEZsYXNrIHRoYXQgaXMgYSBkYXRhYmFzZS1hZ25vc3RpYyBmcmFtZXdvcmsgbGlicmFyeSBmb3IgY3JlYXRpbmcgUkVTVCBBUElzLiBJdCBpcyBhIGxpZ2h0d2VpZ2h0IGFic3RyYWN0aW9uIHRoYXQgd29ya3Mgd2l0aCB5b3VyIGV4aXN0aW5nIE9STS9saWJyYXJpZXMuCgpJdCB1c2UgcHlkYW50aWMgdG8gdmFsaWRhdGUgYW5kIHNlcmlhbGl6ZSBkYXRhLiBPcGVuQVBJIGRvY3VtZW50IGNhbiBiZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCB0aHJvdWdoIHRoZSBweXRob24gZGVjb3JhdG9yIGFuZCBpdCBzdXBwb3J0cyBzd2FnZ2VyIHVpIGRpc3BsYXkuCgpQeWRhbnRpYyBhcmUgdXNlZCB0byB2YWxpZGF0ZSBhbmQgc2VyaWFsaXplIHBhcmFtZXRlcnMuIEZvciBkZXRhaWxzLCBwbGVhc2UgcmVmZXIgdG8gdGhlIFtweWRhbnRpYyBkb2N1bWVudGF0aW9uXShodHRwczovL3B5ZGFudGljLWRvY3MuaGVscG1hbnVhbC5pby8pLgoKIyMgSW5zdGFsbGF0aW9uCmBgYGJhc2gKcGlwIGluc3RhbGwgZmxhc2stcmVzdGFwaQpgYGAKCiMjIEV4YW1wbGUKYGBgcHl0aG9uCmZyb20gZmxhc2sgaW1wb3J0IEZsYXNrCmZyb20gZmxhc2sudmlld3MgaW1wb3J0IE1ldGhvZFZpZXcKZnJvbSBweWRhbnRpYyBpbXBvcnQgQmFzZU1vZGVsCgpmcm9tIGZsYXNrX3Jlc3RhcGkgaW1wb3J0IEFwaSwgUmVxdWVzdFBhcmFtZXRlcnNUeXBlCgphcHAgPSBGbGFzayhfX25hbWVfXykKYXBpID0gQXBpKGFwcCkKCgpjbGFzcyBVc2VyR2V0U3BlYyhCYXNlTW9kZWwpOgogICAgbmFtZTogc3RyCgoKY2xhc3MgVXNlclJlc3BvbnNlU3BlYyhCYXNlTW9kZWwpOgogICAgaWQ6IGludAogICAgbmFtZTogc3RyCgoKY2xhc3MgVXNlcihNZXRob2RWaWV3KToKICAgIEBhcGkucXVlcnkoVXNlckdldFNwZWMpCiAgICBAYXBpLnJlc3BvbnNlKFVzZXJSZXNwb25zZVNwZWMpCiAgICBkZWYgZ2V0KHNlbGYsIHBhcmFtZXRlcnM6IFJlcXVlc3RQYXJhbWV0ZXJzVHlwZSk6CiAgICAgICAgIiIiR2V0IGEgdXNlciBuYW1lIGFuZCBpZCIiIgogICAgICAgIHVzZXJfbmFtZSA9IHBhcmFtZXRlcnMucXVlcnkubmFtZQogICAgICAgIHJldHVybiBVc2VyUmVzcG9uc2VTcGVjKGlkPTEsIG5hbWU9dXNlcl9uYW1lKQoKCmFwcC5hZGRfdXJsX3J1bGUoIi91c2VyIiwgdmlld19mdW5jPVVzZXIuYXNfdmlldygidXNlciIpKQoKYGBgCgojIyBTd2FnZ2VyIEFQSSBkb2NzCk5vdyBnbyB0byBodHRwOi8vbG9jYWxob3N0OjUwMDAvZG9jcwohW10oZG9jcy9pbWFnZXMvZXhhbXBsZS5wbmcp readmeEtag: '"0cdc24c8c4d86ae71888d45895dcd9020b8eca7b"' readmeLastModified: Wed, 03 May 2023 06:24:13 GMT repositoryId: 376734803 description: Flask-RESTAPI is an extension for validate and make OpenAPI docs. created: '2021-06-14T07:07:00Z' updated: '2024-05-09T06:19:21Z' language: Python archived: false stars: 2 watchers: 2 forks: 1 owner: jonarsli logo: https://avatars.githubusercontent.com/u/19283610?v=4 license: MIT repoEtag: '"abf077a26b36e57e75b1d9a498184d6038801c01dd70d2fdd4e0e5fda07448df"' repoLastModified: Thu, 09 May 2024 06:19:21 GMT foundInMaster: true category: Server Implementations id: 2c087c6f731350a28eb694b169467349 - source: - openapi3 tags - openapi31 tags repository: https://github.com/swaggerexpert/openapi-path-templating v3: true v3_1: true id: 6c56774d6631897980d8ac8149951454 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXBhdGgtdGVtcGxhdGluZwoKWyFbbnBtdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL29wZW5hcGktcGF0aC10ZW1wbGF0aW5nLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktcGF0aC10ZW1wbGF0aW5nKQpbIVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL29wZW5hcGktcGF0aC10ZW1wbGF0aW5nLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktcGF0aC10ZW1wbGF0aW5nKQpbIVtUZXN0IHdvcmtmbG93XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlcmV4cGVydC9vcGVuYXBpLXBhdGgtdGVtcGxhdGluZy9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlcmV4cGVydC9vcGVuYXBpLXBhdGgtdGVtcGxhdGluZy9hY3Rpb25zKQpbIVtEZXBlbmRhYm90IGVuYWJsZWRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRGVwZW5kYWJvdC1lbmFibGVkLWJsdWUuc3ZnKV0oaHR0cHM6Ly9kZXBlbmRhYm90LmNvbS8pClshW3RyeSBvbiBSdW5LaXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvdHJ5JTIwb24tUnVuS2l0LWJyaWdodGdyZWVuLnN2Zz9zdHlsZT1mbGF0KV0oaHR0cHM6Ly9ucG0ucnVua2l0LmNvbS9vcGVuYXBpLXBhdGgtdGVtcGxhdGluZykKWyFbVGlkZWxpZnRdKGh0dHBzOi8vdGlkZWxpZnQuY29tL2JhZGdlcy9wYWNrYWdlL25wbS9vcGVuYXBpLXBhdGgtdGVtcGxhdGluZyldKGh0dHBzOi8vdGlkZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9wa2cvbnBtLW9wZW5hcGktcGF0aC10ZW1wbGF0aW5nP3V0bV9zb3VyY2U9bnBtLW9wZW5hcGktcGF0aC10ZW1wbGF0aW5nJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPXJlYWRtZSkKCltPcGVuQVBJIFBhdGggVGVtcGxhdGluZ10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4xLmh0bWwjcGF0aC10ZW1wbGF0aW5nKSByZWZlcnMgdG8gdGhlIHVzYWdlIG9mIHRlbXBsYXRlIGV4cHJlc3Npb25zLCBkZWxpbWl0ZWQgYnkgY3VybHkgYnJhY2VzIChge31gKSwgdG8gbWFyayBhIHNlY3Rpb24gb2YgYSBVUkwgcGF0aCBhcyByZXBsYWNlYWJsZSB1c2luZyBwYXRoIHBhcmFtZXRlcnMuCkVhY2ggdGVtcGxhdGUgZXhwcmVzc2lvbiBpbiB0aGUgcGF0aCBNVVNUIGNvcnJlc3BvbmQgdG8gYSBwYXRoIHBhcmFtZXRlciB0aGF0IGlzIGluY2x1ZGVkIGluIHRoZSBbUGF0aCBJdGVtXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjEuaHRtbCNwYXRoLWl0ZW0tb2JqZWN0KSBpdHNlbGYgYW5kL29yIGluIGVhY2ggb2YgdGhlIFBhdGggSXRlbSdzIFtPcGVyYXRpb25zXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjEuaHRtbCNvcGVyYXRpb24tb2JqZWN0KS4KQW4gZXhjZXB0aW9uIGlzIGlmIHRoZSBwYXRoIGl0ZW0gaXMgZW1wdHksIGZvciBleGFtcGxlIGR1ZSB0byBBQ0wgY29uc3RyYWludHMsIG1hdGNoaW5nIHBhdGggcGFyYW1ldGVycyBhcmUgbm90IHJlcXVpcmVkLgoKYG9wZW5hcGktcGF0aC10ZW1wbGF0aW5nYCBpcyBhICoqcGFyc2VyKiosICoqdmFsaWRhdG9yKiosICoqcmVzb2x2ZXIqKiBhbmQgKiptYXRjaGVyKiogZm9yIE9wZW5BUEkgUGF0aCBUZW1wbGF0aW5nLAp3aGljaCBwbGF5ZWQgYSBbZm91bmRhdGlvbmFsIHJvbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL3B1bGwvNDI0NCkgaW4gZGVmaW5pbmcgdGhlIG9mZmljaWFsIEFOQkYgZ3JhbW1hciBmb3IgT3BlbkFQSSBQYXRoIFRlbXBsYXRpbmcuCgpJdCBzdXBwb3J0cyBQYXRoIFRlbXBsYXRpbmcgZGVmaW5lZCBpbiBmb2xsb3dpbmcgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIHZlcnNpb25zOgoKLSBbT3BlbkFQSSAyLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8yLjAubWQjcGF0aFRlbXBsYXRpbmcpCi0gW09wZW5BUEkgMy4wLjBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMC5odG1sI3BhdGgtdGVtcGxhdGluZykKLSBbT3BlbkFQSSAzLjAuMV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4xLmh0bWwjcGF0aC10ZW1wbGF0aW5nKQotIFtPcGVuQVBJIDMuMC4yXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjIuaHRtbCNwYXRoLXRlbXBsYXRpbmcpCi0gW09wZW5BUEkgMy4wLjNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI3BhdGgtdGVtcGxhdGluZykKLSBbT3BlbkFQSSAzLjAuNF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjcGF0aC10ZW1wbGF0aW5nKQotIFtPcGVuQVBJIDMuMS4wXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAuaHRtbCNwYXRoLXRlbXBsYXRpbmcpCi0gW09wZW5BUEkgMy4xLjFdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMS5odG1sI3BhdGgtdGVtcGxhdGluZykKCgo8dGFibGU+CiAgPHRyPgogICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiPgogICAgICAgIDxpbWcgc3JjPSJodHRwczovL2NkbjIuaHVic3BvdC5uZXQvaHViZnMvNDAwODgzOC93ZWJzaXRlL2xvZ29zL2xvZ29zX2Zvcl9kb3dubG9hZC9UaWRlbGlmdF9wcmltYXJ5LXNob3J0aGFuZC1sb2dvLnBuZyIgYWx0PSJUaWRlbGlmdCIgd2lkdGg9IjYwIiAvPgogICAgICA8L3RkPgogICAgICA8dGQgdmFsaWduPSJtaWRkbGUiPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vdGlkZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9wa2cvbnBtLW9wZW5hcGktcGF0aC10ZW1wbGF0aW5nP3V0bV9zb3VyY2U9bnBtLW9wZW5hcGktcGF0aC10ZW1wbGF0aW5nJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPXJlYWRtZSI+CiAgICAgICAgICAgIEdldCBwcm9mZXNzaW9uYWxseSBzdXBwb3J0ZWQgb3BlbmFwaS1wYXRoLXRlbXBsYXRpbmcgd2l0aCBUaWRlbGlmdCBTdWJzY3JpcHRpb24uCiAgICAgICAgPC9hPgogICAgICA8L3RkPgogIDwvdHI+CjwvdGFibGU+CgojIyBUYWJsZSBvZiBDb250ZW50cwoKLSBbR2V0dGluZyBzdGFydGVkXSgjZ2V0dGluZy1zdGFydGVkKQogIC0gW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKICAtIFtVc2FnZV0oI3VzYWdlKQogICAgLSBbUGFyc2luZ10oI3BhcnNpbmcpCiAgICAtIFtWYWxpZGF0aW9uXSgjdmFsaWRhdGlvbikKICAgIC0gW1Jlc29sdXRpb25dKCNyZXNvbHV0aW9uKQogICAgLSBbTm9ybWFsaXphdGlvbl0oI25vcm1hbGl6YXRpb24pCiAgICAtIFtNYXRjaGluZ10oI21hdGNoaW5nKQogICAgLSBbR3JhbW1hcl0oI2dyYW1tYXIpCi0gW01vcmUgYWJvdXQgT3BlbkFQSSBQYXRoIFRlbXBsYXRpbmddKCNtb3JlLWFib3V0LW9wZW5hcGktcGF0aC10ZW1wbGF0aW5nKQotIFtMaWNlbnNlXSgjbGljZW5zZSkKCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCiMjIyBJbnN0YWxsYXRpb24KCllvdSBjYW4gaW5zdGFsbCBgb3BlbmFwaS1wYXRoLXRlbXBsYXRpbmdgIHVzaW5nIGBucG1gOgoKYGBgc2gKICQgbnBtIGluc3RhbGwgb3BlbmFwaS1wYXRoLXRlbXBsYXRpbmcKYGBgCgojIyMgVXNhZ2UKCmBvcGVuYXBpLXBhdGgtdGVtcGxhdGluZ2AgY3VycmVudGx5IHN1cHBvcnRzICoqcGFyc2luZyoqLCAqKnZhbGlkYXRpb24qKiwgKipyZXNvbHV0aW9uKiogYW5kICoqbWF0Y2hpbmcqKi4KQm90aCBwYXJzZXIgYW5kIHZhbGlkYXRvciBhcmUgYmFzZWQgb24gYSBzdXBlcnNldCBvZiBbQUJORl0oaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzUyMzQpIChbU0FCTkZdKGh0dHBzOi8vZ2l0aHViLmNvbS9sZHRob21hcy9hcGctanMyL2Jsb2IvbWFzdGVyL1NBQk5GLm1kKSkKYW5kIHVzZSBbYXBnLWxpdGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9sZHRob21hcy9hcGctbGl0ZSkgcGFyc2VyIGdlbmVyYXRvci4KCiMjIyMgUGFyc2luZwoKUGFyc2luZyBhIFBhdGggVGVtcGxhdGluZyBpcyBhcyBzaW1wbGUgYXMgaW1wb3J0aW5nIHRoZSAqKnBhcnNlKiogZnVuY3Rpb24KYW5kIGNhbGxpbmcgaXQuCgpgYGBqcwppbXBvcnQgeyBwYXJzZSB9IGZyb20gJ29wZW5hcGktcGF0aC10ZW1wbGF0aW5nJzsKCmNvbnN0IHBhcnNlUmVzdWx0ID0gcGFyc2UoJy9wZXRzL3twZXRJZH0nKTsKcGFyc2VSZXN1bHQucmVzdWx0LnN1Y2Nlc3M7IC8vID0+IHRydWUKYGBgCgoqKnBhcnNlUmVzdWx0KiogdmFyaWFibGUgaGFzIHRoZSBmb2xsb3dpbmcgc2hhcGU6CgpgYGAKewogIHJlc3VsdDogewogICAgc3VjY2VzczogdHJ1ZSwKICAgIHN0YXRlOiAxMDEsCiAgICBzdGF0ZU5hbWU6ICdNQVRDSCcsCiAgICBsZW5ndGg6IDEzLAogICAgbWF0Y2hlZDogMTMsCiAgICBtYXhNYXRjaGVkOiAxMywKICAgIG1heFRyZWVEZXB0aDogMjAsCiAgICBub2RlSGl0czogMjMyCiAgfSwKICBhc3Q6IGZuYXN0IHsKICAgIGNhbGxiYWNrczogWwogICAgICAncGF0aC10ZW1wbGF0ZSc6IFtGdW5jdGlvbjogcGF0aFRlbXBsYXRlXSwKICAgICAgc2xhc2g6IFtGdW5jdGlvbjogc2xhc2hdLAogICAgICAncGF0aC1saXRlcmFsJzogW0Z1bmN0aW9uOiBwYXRoTGl0ZXJhbF0sCiAgICAgICd0ZW1wbGF0ZS1leHByZXNzaW9uJzogW0Z1bmN0aW9uOiB0ZW1wbGF0ZUV4cHJlc3Npb25dLAogICAgICAndGVtcGxhdGUtZXhwcmVzc2lvbi1wYXJhbS1uYW1lJzogW0Z1bmN0aW9uOiB0ZW1wbGF0ZUV4cHJlc3Npb25QYXJhbU5hbWVdCiAgICBdLAogICAgaW5pdDogW0Z1bmN0aW9uIChhbm9ueW1vdXMpXSwKICAgIHJ1bGVEZWZpbmVkOiBbRnVuY3Rpb24gKGFub255bW91cyldLAogICAgdWR0RGVmaW5lZDogW0Z1bmN0aW9uIChhbm9ueW1vdXMpXSwKICAgIGRvd246IFtGdW5jdGlvbiAoYW5vbnltb3VzKV0sCiAgICB1cDogW0Z1bmN0aW9uIChhbm9ueW1vdXMpXSwKICAgIHRyYW5zbGF0ZTogW0Z1bmN0aW9uIChhbm9ueW1vdXMpXSwKICAgIHNldExlbmd0aDogW0Z1bmN0aW9uIChhbm9ueW1vdXMpXSwKICAgIGdldExlbmd0aDogW0Z1bmN0aW9uIChhbm9ueW1vdXMpXSwKICAgIHRvWG1sOiBbRnVuY3Rpb24gKGFub255bW91cyldCiAgfQp9CmBgYAoKIyMjIyMjIEludGVycHJldGluZyBBU1QgYXMgbGlzdCBvZiBlbnRyaWVzCgpgYGBqcwppbXBvcnQgeyBwYXJzZSB9IGZyb20gJ29wZW5hcGktcGF0aC10ZW1wbGF0aW5nJzsKCmNvbnN0IHBhcnNlUmVzdWx0ID0gcGFyc2UoJy9wZXRzL3twZXRJZH0nKTsKY29uc3QgcGFydHMgPSBbXTsKCnBhcnNlUmVzdWx0LmFzdC50cmFuc2xhdGUocGFydHMpOwpgYGAKCkFmdGVyIHJ1bm5pbmcgdGhlIGFib3ZlIGNvZGUsICoqcGFydHMqKiB2YXJpYWJsZSBoYXMgdGhlIGZvbGxvd2luZyBzaGFwZToKCmBgYGpzClsKICBbICdwYXRoLXRlbXBsYXRlJywgJy9wZXRzL3twZXRJZH0nIF0sCiAgWyAnc2xhc2gnLCAnLycgXSwKICBbICdwYXRoLWxpdGVyYWwnLCAncGV0cycgXSwKICBbICdzbGFzaCcsICcvJyBdLAogIFsgJ3RlbXBsYXRlLWV4cHJlc3Npb24nLCAne3BldElkfScgXSwKICBbICd0ZW1wbGF0ZS1leHByZXNzaW9uLXBhcmFtLW5hbWUnLCAncGV0SWQnIF0KXQpgYGAKCiMjIyMjIyBJbnRlcnByZXRpbmcgQVNUIGFzIFhNTAoKYGBganMKaW1wb3J0IHsgcGFyc2UgfSBmcm9tICdvcGVuYXBpLXBhdGgtdGVtcGxhdGluZyc7Cgpjb25zdCBwYXJzZVJlc3VsdCA9IHBhcnNlKCcvcGV0cy97cGV0SWR9Jyk7CmNvbnN0IHhtbCA9IHBhcnNlUmVzdWx0LmFzdC50b1htbCgpOwpgYGAKCkFmdGVyIHJ1bm5pbmcgdGhlIGFib3ZlIGNvZGUsICoqeG1sKiogdmFyaWFibGUgaGFzIHRoZSBmb2xsb3dpbmcgY29udGVudDoKCmBgYHhtbAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pgo8cm9vdCBub2Rlcz0iNiIgY2hhcmFjdGVycz0iMTMiPgogIDwhLS0gaW5wdXQgc3RyaW5nIC0tPgogIC9wZXRzL3twZXRJZH0KICA8bm9kZSBuYW1lPSJwYXRoLXRlbXBsYXRlIiBpbmRleD0iMCIgbGVuZ3RoPSIxMyI+CiAgICAvcGV0cy97cGV0SWR9CiAgICA8bm9kZSBuYW1lPSJzbGFzaCIgaW5kZXg9IjAiIGxlbmd0aD0iMSI+CiAgICAgIC8KICAgIDwvbm9kZT48IS0tIG5hbWU9InNsYXNoIiAtLT4KICAgIDxub2RlIG5hbWU9InBhdGgtbGl0ZXJhbCIgaW5kZXg9IjEiIGxlbmd0aD0iNCI+CiAgICAgIHBldHMKICAgIDwvbm9kZT48IS0tIG5hbWU9InBhdGgtbGl0ZXJhbCIgLS0+CiAgICA8bm9kZSBuYW1lPSJzbGFzaCIgaW5kZXg9IjUiIGxlbmd0aD0iMSI+CiAgICAgIC8KICAgIDwvbm9kZT48IS0tIG5hbWU9InNsYXNoIiAtLT4KICAgIDxub2RlIG5hbWU9InRlbXBsYXRlLWV4cHJlc3Npb24iIGluZGV4PSI2IiBsZW5ndGg9IjciPgogICAgICB7cGV0SWR9CiAgICAgIDxub2RlIG5hbWU9InRlbXBsYXRlLWV4cHJlc3Npb24tcGFyYW0tbmFtZSIgaW5kZXg9IjciIGxlbmd0aD0iNSI+CiAgICAgICAgcGV0SWQKICAgICAgPC9ub2RlPjwhLS0gbmFtZT0idGVtcGxhdGUtZXhwcmVzc2lvbi1wYXJhbS1uYW1lIiAtLT4KICAgIDwvbm9kZT48IS0tIG5hbWU9InRlbXBsYXRlLWV4cHJlc3Npb24iIC0tPgogIDwvbm9kZT48IS0tIG5hbWU9InBhdGgtdGVtcGxhdGUiIC0tPgo8L3Jvb3Q+CmBgYAoKPiBOT1RFOiBBU1QgY2FuIGFsc28gYmUgdHJhdmVyc2VkIGluIGNsYXNzaWNhbCB3YXkgdXNpbmcgW2RlcHRoIGZpcnN0IHRyYXZlcnNhbF0oaHR0cHM6Ly93d3cudHV0b3JpYWxzcG9pbnQuY29tL2RhdGFfc3RydWN0dXJlc19hbGdvcml0aG1zL2RlcHRoX2ZpcnN0X3RyYXZlcnNhbC5odG0pLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIG9wdGlvbiBwbGVhc2UgcmVmZXIgdG8gW2FwZy1qc10oaHR0cHM6Ly9naXRodWIuY29tL2xkdGhvbWFzL2FwZy1qcykgYW5kIFthcGctanMtZXhhbXBsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9sZHRob21hcy9hcGctanMtZXhhbXBsZXMpLgoKIyMjIyBWYWxpZGF0aW9uCgpWYWxpZGF0aW5nIGEgUGF0aCBUZW1wbGF0aW5nIGlzIGFzIHNpbXBsZSBhcyBpbXBvcnRpbmcgdGhlICoqdGVzdCoqIGZ1bmN0aW9uIGFuZCBjYWxsaW5nIGl0LgoKCmBgYGpzCmltcG9ydCB7IHRlc3QgfSBmcm9tICdvcGVuYXBpLXBhdGgtdGVtcGxhdGluZyc7Cgp0ZXN0KCcvcGV0cy97cGV0SWR9Jyk7IC8vID0+IHRydWUKdGVzdCgnL2F7cGV0SWR9Jyk7IC8vID0+IHRydWUKdGVzdCgnL3BldHMnKTsgLy8gPT4gdHJ1ZQp0ZXN0KCcvcGV0cycsIHsgc3RyaWN0OiB0cnVlIH0pOyAvLyA9PiBmYWxzZSAoZG9lc24ndCBjb250YWluIGFueSB0ZW1wbGF0ZS1leHByZXNzaW9uKQpgYGAKCiMjIyMgUmVzb2x1dGlvbgoKUmVzb2x2aW5nIGEgUGF0aCBUZW1wbGF0aW5nIGlzIGFzIHNpbXBsZSBhcyBpbXBvcnRpbmcgdGhlICoqcmVzb2x2ZSoqIGZ1bmN0aW9uIGFuZCBjYWxsaW5nIGl0LgoKYGBganMKaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ29wZW5hcGktcGF0aC10ZW1wbGF0aW5nJzsKCnJlc29sdmUoJy9wZXRzL3twZXRJZH0nLCB7IHBldElkOiAzIH0pOyAvLyA9PiAiL3BldHMvMyIKYGBgCgpSZXNvbHZlZCBQYXRoIFRlbXBsYXRpbmcgaXMgYXV0b21hdGljYWxseSBlbmNvZGVkIHVzaW5nIFtlbmNvZGVVUklDb21wb25lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL2VuY29kZVVSSUNvbXBvbmVudCkgZnVuY3Rpb24uCkl0IGlzIHBvc3NpYmxlIHRvIHByb3ZpZGUgYSBjdXN0b20gZW5jb2Rlci4KCmBgYGpzCmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdvcGVuYXBpLXBhdGgtdGVtcGxhdGluZyc7CgpyZXNvbHZlKCcvcGV0cy97cGV0SWR9JywgeyBwZXRJZDogJy8/IycgfSwgewogIGVuY29kZXI6IChjb21wb25lbnQpID0+IGNvbXBvbmVudCwgLy8gbm8gZW5jb2RpbmcKfSk7IC8vID0+ICIvcGV0cy8vPyMiCmBgYAoKIyMjIyBOb3JtYWxpemF0aW9uCgpOb3JtYWxpemF0aW9uIG9mIE9wZW5BUEkgUGF0aCBUZW1wbGF0ZSBpcyBhIHByb2Nlc3Mgb2YgdHJhbnNmb3JtaW5nIHRoZSBwYXRoIHRlbXBsYXRlIGludG8gaXRzIG5vcm1hbGl6ZWQgZm9ybS4KTm9ybWFsaXphdGlvbiBpcyB1c2VkIHRvIGNvbXBhcmUgdHdvIHBhdGggdGVtcGxhdGVzIGZvciBlcXVpdmFsZW5jZSBhbmQgaXMgYmFzZWQgb24gKipTeW50YXgtQmFzZWQgTm9ybWFsaXphdGlvbioqIGFzIGRlZmluZWQgaW4gW1JGQyAzOTg2LCBzZWN0aW9uIDYuMi4yXShodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi02LjIuMikuCgojIyMjIyBTeW50YXgtQmFzZWQgbm9ybWFsaXphdGlvbgoKU3ludGF4LUJhc2VkIG5vcm1hbGl6YXRpb24gaXMgYSBwcm9jZXNzIG9mIHRyYW5zZm9ybWluZyB0aGUgcGF0aCB0ZW1wbGF0ZSBpbnRvIGl0cyBub3JtYWxpemVkIGZvcm0gdXNpbmcKYSBmaXhlZCBzZXQgb2Ygbm9ybWFsaXplcnMgaW4gZm9sbG93aW5nIG9yZGVyOgoKLSBbQ2FzZSBub3JtYWxpemF0aW9uXSgjY2FzZS1ub3JtYWxpemF0aW9uKQotIFtQZXJjZW50LUVuY29kaW5nIG5vcm1hbGl6YXRpb25dKCNwZXJjZW50LWVuY29kaW5nLW5vcm1hbGl6YXRpb24pCi0gW1BhdGggc2VnbWVudCBub3JtYWxpemF0aW9uXSgjcGF0aC1zZWdtZW50LW5vcm1hbGl6YXRpb24pCgpgYGBqcwppbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tICdAc3dhZ2dlcmV4cGVydC9vcGVuYXBpLXBhdGgtdGVtcGxhdGluZyc7Cgpub3JtYWxpemUoJy9hcGkve3VzZXJJZH0vcHJvZmlsZS8uLi9hY2NvdW50LyU0MWNjb3VudCcpOyAvLyA9PiAnL2FwaS97dXNlcklkfS9hY2NvdW50L0FjY291bnQnCmBgYAoKU3ludGF4LUJhc2VkIG5vcm1hbGl6YXRpb24gaXMgYSBkZWZhdWx0IG5vcm1hbGl6YXRpb24gc3RyYXRlZ3kgdXNlZCBieSB0aGlzIGxpYnJhcnkuCgoKIyMjIyMjIE5vIG5vcm1hbGl6YXRpb24KCk5vb3Agbm9ybWFsaXplciB0aGF0IGFjdHMgYXMgaWRlbnRpdHkgZnVuY3Rpb24uIFBlcmZvcm1zIG5vIHRyYW5zZm9ybWF0aW9ucyBvbiB0aGUgcGF0aCB0ZW1wbGF0ZQphbmQgcmV0dXJucyBpdCBhcyBpcy4KCmBgYGpzCmltcG9ydCB7IGlkZW50aXR5Tm9ybWFsaXplciB9IGZyb20gJ0Bzd2FnZ2VyZXhwZXJ0L29wZW5hcGktcGF0aC10ZW1wbGF0aW5nJzsKCmlkZW50aXR5Tm9ybWFsaXplcignL0FQSS8lMmZhUGkvJTdic2VjdGlvbiU3ZC8uLy4uL3Byb2ZpbGUnKTsgLy8gPT4gJy9BUEkvJTJmYVBpLyU3YnNlY3Rpb24lN2QvLi8uLi9wcm9maWxlJwpgYGAKCiMjIyMjIyBDYXNlIG5vcm1hbGl6YXRpb24KCkZvciBhbGwgcGF0aCB0ZW1wbGF0ZXMsIHRoZSBoZXhhZGVjaW1hbCBkaWdpdHMgd2l0aGluIGEgcGVyY2VudC1lbmNvZGluZwp0cmlwbGV0IChlLmcuLCBgIiUzYSJgIHZlcnN1cyBgIiUzQSJgKSBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgdGhlcmVmb3JlCnNob3VsZCBiZSBub3JtYWxpemVkIHRvIHVzZSB1cHBlcmNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBBLUYuCgpgYGBqcwppbXBvcnQgeyBjYXNlTm9ybWFsaXplciB9IGZyb20gJ0Bzd2FnZ2VyZXhwZXJ0L29wZW5hcGktcGF0aC10ZW1wbGF0aW5nJzsKCmNhc2VOb3JtYWxpemVyKCcvYXBpL3t1c2VySWR9L3Byb2ZpbGUvJTdic2VjdGlvbiU3ZCcpOyAvLyA9PiAnL2FwaS97dXNlcklkfS9wcm9maWxlLyU3QnNlY3Rpb24lN0QnCmBgYAoKIyMjIyMjIFBlcmNlbnQtRW5jb2Rpbmcgbm9ybWFsaXphdGlvbgoKVGhlIHBlcmNlbnQtZW5jb2RpbmcgbWVjaGFuaXNtIGlzIGEgZnJlcXVlbnQgc291cmNlIG9mCnZhcmlhbmNlIGFtb25nIG90aGVyd2lzZSBpZGVudGljYWwgcGF0aCB0ZW1wbGF0ZXMuIEluIGFkZGl0aW9uIHRvIHRoZSBjYXNlCm5vcm1hbGl6YXRpb24gaXNzdWUgbm90ZWQgYWJvdmUsIHNvbWUgcGF0aCB0ZW1wbGF0ZSBwcm9kdWNlcnMgcGVyY2VudC1lbmNvZGUKb2N0ZXRzIHRoYXQgZG8gbm90IHJlcXVpcmUgcGVyY2VudC1lbmNvZGluZywgcmVzdWx0aW5nIGluIHBhdGggdGVtcGxhdGVzIHRoYXQKYXJlIGVxdWl2YWxlbnQgdG8gdGhlaXIgbm9uLWVuY29kZWQgY291bnRlcnBhcnRzLiBUaGVzZSBwYXRoIHRlbXBsYXRlcyBzaG91bGQKYmUgbm9ybWFsaXplZCBieSBkZWNvZGluZyBhbnkgcGVyY2VudC1lbmNvZGVkIG9jdGV0IHRoYXQgY29ycmVzcG9uZHMKdG8gYW4gdW5yZXNlcnZlZCBjaGFyYWN0ZXIuCgpgYGBqcwppbXBvcnQgeyBwZXJjZW50RW5kaW5nTm9ybWFsaXplciB9IGZyb20gJ0Bzd2FnZ2VyZXhwZXJ0L29wZW5hcGktcGF0aC10ZW1wbGF0aW5nJzsKCnBlcmNlbnRFbmRpbmdOb3JtYWxpemVyKCcvYXBpLyU3QnVzZXJJZCU3RC9wcm9maWxlLyU0MWNjb3VudC97YWNjb3VudH0nKTsgLy8gPT4gJy9hcGkvJTdCdXNlcklkJTdEL3Byb2ZpbGUvQWNjb3VudC97YWNjb3VudH0nCmBgYAoKIyMjIyMjIFBhdGggc2VnbWVudCBub3JtYWxpemF0aW9uCgpUaGUgY29tcGxldGUgcGF0aCBzZWdtZW50cyBgIi4iYCBhbmQgYCIuLiJgIGFyZSBpbnRlbmRlZCBmb3IgdXNlCndpdGhpbiBwYXRoIHRlbXBsYXRlcyBhbmQgYXJlIHJlbW92ZWQgYXMgcGFydCBvZgp0aGUgcmVmZXJlbmNlIHJlc29sdXRpb24gcHJvY2Vzcy4gUGF0aCB0ZW1wbGF0ZSBzZWdtZW50IG5vcm1hbGl6ZXIgcmVtb3Zlcwpkb3Qtc2VnbWVudHMgYnkgYXBwbHlpbmcgdGhlIFtyZW1vdmVfZG90X3NlZ21lbnRzXShodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuNCkgYWxnb3JpdGhtIHRvIHRoZSBwYXRoIHRlbXBsYXRlLgoKYGBganMKaW1wb3J0IHsgcGF0aFNlZ21lbnROb3JtYWxpemVyIH0gZnJvbSAnQHN3YWdnZXJleHBlcnQvb3BlbmFwaS1wYXRoLXRlbXBsYXRpbmcnOwoKcGF0aFNlZ21lbnROb3JtYWxpemVyKCcvYXBpL3t1c2VySWR9Ly4vcHJvZmlsZS8uLi9hY2NvdW50Jyk7IC8vID0+ICcvYXBpL3t1c2VySWR9L2FjY291bnQnCmBgYAoKKipOT1RFKio6IG5vdGUgdGhhdCBhbGwgbm9ybWFsaXplcnMgYWN0cyBhcyBpZGVudGl0eSBmdW5jdGlvbnMgd2hlbiBpbnZhbGlkIHBhdGggdGVtcGxhdGUgaXMgcHJvdmlkZWQuCgojIyMjIE1hdGNoaW5nCgpQYXRoIHRlbXBsYXRpbmcgbWF0Y2hpbmcgaW4gT3BlbkFQSSBwcmlvcml0aXplcyBjb25jcmV0ZSBwYXRocyBvdmVyIHBhcmFtZXRlcml6ZWQgb25lcywKdHJlYXRzIHBhdGhzIHdpdGggaWRlbnRpY2FsIHN0cnVjdHVyZXMgYnV0IGRpZmZlcmVudCBwYXJhbWV0ZXIgbmFtZXMgYXMgaW52YWxpZCwKYW5kIGNvbnNpZGVycyBwYXRocyB3aXRoIG92ZXJsYXBwaW5nIHBhdHRlcm5zIHRoYXQgY291bGQgbWF0Y2ggdGhlIHNhbWUgcmVxdWVzdCBhcyBwb3RlbnRpYWxseSBhbWJpZ3VvdXMuCgojIyMjIyBFcXVpdmFsZW5jZQoKYGlzSWRlbnRpY2FsYAoKRGV0ZXJtaW5lcyB3aGV0aGVyIHR3byBwYXRoIHRlbXBsYXRlcyBhcmUgc3RydWN0dXJhbGx5IGlkZW50aWNhbCwgbWVhbmluZyB0aGV5IGhhdmUgdGhlIHNhbWUgc2VxdWVuY2UKb2YgbGl0ZXJhbHMgYW5kIHRlbXBsYXRlIGV4cHJlc3Npb25zLCByZWdhcmRsZXNzIG9mIHRlbXBsYXRlIGV4cHJlc3Npb24gbmFtZXMuIEluIHRoZSBPcGVuQVBJIGNvbnRleHQsCnN1Y2ggaWRlbnRpY2FsIHBhdGhzIGFyZSBjb25zaWRlcmVkIGludmFsaWQgZHVlIHRvIHBvdGVudGlhbCBjb25mbGljdHMgaW4gcm91dGluZy4KClRlc3RpbmcgcGF0aCB0ZW1wbGF0ZXMgZm9yIGVxdWFsaXR5IGlzIG5vcm1hbGx5IGJhc2VkIG9uIHBhaXIgY29tcGFyaXNvbiBvZiB0aGUKY2hhcmFjdGVycyB0aGF0IG1ha2UgdXAgdGhlIHN0cmluZ3MsIHN0YXJ0aW5nIGZyb20gdGhlIGZpcnN0IGFuZApwcm9jZWVkaW5nIHVudGlsIGJvdGggc3RyaW5ncyBhcmUgZXhoYXVzdGVkIGFuZCBhbGwgY2hhcmFjdGVycyBhcmUKZm91bmQgdG8gYmUgZXF1YWwsIHVudGlsIGEgcGFpciBvZiBjaGFyYWN0ZXJzIGNvbXBhcmVzIHVuZXF1YWwsIG9yCnVudGlsIG9uZSBvZiB0aGUgc3RyaW5ncyBpcyBleGhhdXN0ZWQgYmVmb3JlIHRoZSBvdGhlci4gTW9yZSBpbiBbUkZDIDM5ODYsIHNlY3Rpb24gNi4yLjFdKGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTYuMi4xKS4KCmBgYGpzCmltcG9ydCB7IGlzSWRlbnRpY2FsIH0gZnJvbSAnb3BlbmFwaS1wYXRoLXRlbXBsYXRpbmcnOwoKaXNJZGVudGljYWwoJy9wZXRzL3twZXRJZH0nLCAnL3BldHMve25hbWV9Jyk7IC8vID0+IHRydWUKaXNJZGVudGljYWwoJy9wZXRzL3twZXRJZH0nLCAnL2FuaW1hbHMve25hbWV9Jyk7IC8vID0+IGZhbHNlCmBgYAoKQnkgZGVmYXVsdCwgZXh0ZW5zaXZlIFtub3JtYWxpemF0aW9uXSgjbm9ybWFsaXphdGlvbikgcHJpb3IgdG8gY29tcGFyaXNvbiBpcyBhcHBsaWVkIHRvIHByb2R1Y2UgYSBub3JtYWxpemVkIGZvcm0gb2YgdGhlIHBhdGggdGVtcGxhdGUuCgpgYGBqcwppbXBvcnQgeyBpc0lkZW50aWNhbCwgbm9ybWFsaXplLCBpZGVudGl0eU5vcm1hbGl6ZXIgfSBmcm9tICdvcGVuYXBpLXBhdGgtdGVtcGxhdGluZyc7CgovLyBkZWZhdWx0IGJlaGF2aW9yCmlzSWRlbnRpY2FsKCcvQVBJLyUyZmFQaS8lN2JzZWN0aW9uJTdkLy4vLi4vcHJvZmlsZScsICcvQVBJLyUyRmFQaS9wcm9maWxlJyk7IC8vID0+IHRydWUKaXNJZGVudGljYWwoJy9hcGkve3VzZXJJZH0vYWNjb3VudC9BY2NvdW50JywgJy9hcGkve3VzZXJJZH0vcHJvZmlsZS8uLi9hY2NvdW50LyU0MWNjb3VudCcpOyAvLyA9PiB0cnVlCi8vIGVxdWl2YWxlbnQgdG8gYWJvdmUKaXNJZGVudGljYWwoJy9BUEkvJTJmYVBpLyU3YnNlY3Rpb24lN2QvLi8uLi9wcm9maWxlJywgJy9BUEkvJTJGYVBpL3Byb2ZpbGUnLCB7IG5vcm1hbGl6ZXI6IG5vcm1hbGl6ZSB9KTsgLy8gPT4gdHJ1ZQppc0lkZW50aWNhbCgnL2FwaS97dXNlcklkfS9hY2NvdW50L0FjY291bnQnLCAnL2FwaS97dXNlcklkfS9wcm9maWxlLy4uL2FjY291bnQvJTQxY2NvdW50JywgeyBub3JtYWxpemVyOiBub3JtYWxpemUgfSk7IC8vID0+IHRydWUKLy8gbm8gbm9ybWFsaXphdGlvbgppc0lkZW50aWNhbCgnL0FQSS8lMmZhUGkvJTdic2VjdGlvbiU3ZC8uLy4uL3Byb2ZpbGUnLCAnL0FQSS8lMkZhUGkvcHJvZmlsZScsIHsgbm9ybWFsaXplcjogaWRlbnRpdHlOb3JtYWxpemVyIH0pOyAvLyA9PiBmYWxzZQppc0lkZW50aWNhbCgnL2FwaS97dXNlcklkfS9hY2NvdW50L0FjY291bnQnLCAnL2FwaS97dXNlcklkfS9wcm9maWxlLy4uL2FjY291bnQvJTQxY2NvdW50JywgeyBub3JtYWxpemVyOiBpZGVudGl0eU5vcm1hbGl6ZXIgfSk7IC8vID0+IGZhbHNlCmBgYAoKIyMjIyBHcmFtbWFyCgpOZXcgZ3JhbW1hciBpbnN0YW5jZSBjYW4gYmUgY3JlYXRlZCBpbiBmb2xsb3dpbmcgd2F5OgoKYGBganMKaW1wb3J0IHsgR3JhbW1hciB9IGZyb20gJ29wZW5hcGktcGF0aC10ZW1wbGF0aW5nJzsKCmNvbnN0IGdyYW1tYXIgPSBuZXcgR3JhbW1hcigpOwpgYGAKClRvIG9idGFpbiBvcmlnaW5hbCBBQk5GIChTQUJORikgZ3JhbW1hciBhcyBhIHN0cmluZzoKCmBgYGpzCmltcG9ydCB7IEdyYW1tYXIgfSBmcm9tICdvcGVuYXBpLXBhdGgtdGVtcGxhdGluZyc7Cgpjb25zdCBncmFtbWFyID0gbmV3IEdyYW1tYXIoKTsKCmdyYW1tYXIudG9TdHJpbmcoKTsKLy8gb3IKU3RyaW5nKGdyYW1tYXIpOwpgYGAKCiMjIE1vcmUgYWJvdXQgT3BlbkFQSSBQYXRoIFRlbXBsYXRpbmcKClRoZSBQYXRoIFRlbXBsYXRpbmcgaXMgZGVmaW5lZCBieSB0aGUgZm9sbG93aW5nIFtBQk5GXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTIzNCkgc3ludGF4CgpgYGBhYm5mCjsgT3BlbkFQSSBQYXRoIFRlbXBsYXRpbmcgQUJORiBzeW50YXgKOyB2YXJpYW50IG9mIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMwpwYXRoLXRlbXBsYXRlICAgICAgICAgICAgICAgICAgPSBzbGFzaCAqKCBwYXRoLXNlZ21lbnQgc2xhc2ggKSBbIHBhdGgtc2VnbWVudCBdCnBhdGgtc2VnbWVudCAgICAgICAgICAgICAgICAgICA9IDEqKCBwYXRoLWxpdGVyYWwgLyB0ZW1wbGF0ZS1leHByZXNzaW9uICkKc2xhc2ggICAgICAgICAgICAgICAgICAgICAgICAgID0gIi8iCnBhdGgtbGl0ZXJhbCAgICAgICAgICAgICAgICAgICA9IDEqcGNoYXIKdGVtcGxhdGUtZXhwcmVzc2lvbiAgICAgICAgICAgID0gInsiIHRlbXBsYXRlLWV4cHJlc3Npb24tcGFyYW0tbmFtZSAifSIKdGVtcGxhdGUtZXhwcmVzc2lvbi1wYXJhbS1uYW1lID0gMSooICV4MDAtN0EgLyAleDdDIC8gJXg3RS0xMEZGRkYgKSA7IGV2ZXJ5IFVURjggY2hhcmFjdGVyIGV4Y2VwdCB7IGFuZCB9IChmcm9tIE9wZW5BUEkpCgo7IGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMwpwY2hhciAgICAgICAgICAgICAgID0gdW5yZXNlcnZlZCAvIHBjdC1lbmNvZGVkIC8gc3ViLWRlbGltcyAvICI6IiAvICJAIgp1bnJlc2VydmVkICAgICAgICAgID0gQUxQSEEgLyBESUdJVCAvICItIiAvICIuIiAvICJfIiAvICJ+IgogICAgICAgICAgICAgICAgICAgIDsgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMi4zCnBjdC1lbmNvZGVkICAgICAgICAgPSAiJSIgSEVYRElHIEhFWERJRwogICAgICAgICAgICAgICAgICAgIDsgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMi4xCnN1Yi1kZWxpbXMgICAgICAgICAgPSAiISIgLyAiJCIgLyAiJiIgLyAiJyIgLyAiKCIgLyAiKSIKICAgICAgICAgICAgICAgICAgICAvICIqIiAvICIrIiAvICIsIiAvICI7IiAvICI9IgogICAgICAgICAgICAgICAgICAgIDsgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMi4yCgo7IGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNTIzNCNhcHBlbmRpeC1CLjEKQUxQSEEgICAgICAgICAgICAgICA9ICV4NDEtNUEgLyAleDYxLTdBICAgOyBBLVogLyBhLXoKRElHSVQgICAgICAgICAgICAgICA9ICV4MzAtMzkgICAgICAgICAgICA7IDAtOQpIRVhESUcgICAgICAgICAgICAgID0gRElHSVQgLyAiQSIgLyAiQiIgLyAiQyIgLyAiRCIgLyAiRSIgLyAiRiIKYGBgCgojIyBMaWNlbnNlCgpgb3BlbmFwaS1wYXRoLXRlbXBsYXRpbmdgIGlzIGxpY2Vuc2VkIHVuZGVyIFtBcGFjaGUgMi4wIGxpY2Vuc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyZXhwZXJ0L29wZW5hcGktcGF0aC10ZW1wbGF0aW5nL2Jsb2IvbWFpbi9MSUNFTlNFKS4KYG9wZW5hcGktcGF0aC10ZW1wbGF0aW5nYCBjb21lcyB3aXRoIGFuIGV4cGxpY2l0IFtOT1RJQ0VdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyZXhwZXJ0L29wZW5hcGktcGF0aC10ZW1wbGF0aW5nL2Jsb2IvbWFpbi9OT1RJQ0UpIGZpbGUKY29udGFpbmluZyBhZGRpdGlvbmFsIGxlZ2FsIG5vdGljZXMgYW5kIGluZm9ybWF0aW9uLgo= readmeEtag: '"dc6d56d650ac95f49d3c4e5197334eb0acf67597"' readmeLastModified: Sun, 09 Mar 2025 21:27:25 GMT repositoryId: 730126319 description: OpenAPI Path Templating parser, validator and resolver. created: '2023-12-11T09:07:36Z' updated: '2026-01-21T18:45:37Z' language: JavaScript archived: false stars: 3 watchers: 1 forks: 1 owner: swaggerexpert logo: https://avatars.githubusercontent.com/u/172408630?v=4 license: Apache-2.0 repoEtag: '"bef3decab4fc1cc96d2fd22c51279df6c823db16e41bd32a9afc4f71e70c27af"' repoLastModified: Wed, 21 Jan 2026 18:45:37 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/senatov/spring-boot-primerfaces-sheduler v3: true repositoryMetadata: base64Readme: >- IyMgU3ByaW5nIEJvb3QgSW50ZWdyYXRpb24gZXhhbXBsZQoKLSBleGFtcGxlIGNvZGUuCi0gYFRoZSBQcm9qZWN0IGJ1aWxkcyB1bmRlciBPcmFjbGUgSkRLMTcgR2VuZXJhbC1BdmFpbGFiaWxpdHkgUmVsZWFzZWAKCiMjIFRhZ3MKCi0tLQoKPiBPcmFjbGUgMTE8YnI+Cj4gSlBBL0hpYmVybmF0ZSA8YnI+Cj4gUG9zdGdyZXM6bGF0ZXN0IHVuZGVyIERvY2tlcjxicj4KPiBTcHJpbmctQm9vdCAyLjYuMjxicj4KPiBKU0YyIE1vamFycmEgPGJyPgo+IFByaW1lRmFjZXMgMTEuMC4wPGJyPgoKLS0tCgotIGltcGxlbWVudGF0aW9uIG9mIEJhc2lzIFByaW1lZmFjZXMgU2NoZWR1bGVyLgotIENvbXBvbmVudHM6IE9yYWNsZSAxMSwgSlBBL0hpYmVybmF0ZSwgRG9ja2VyICsgUG9zdGdyZXMsIFNwcmluZy1Cb290IDIuNi4yLCBKU0YgMi40LjAgTW9qYXJyYSwgUHJpbWVGYWNlcwogIDExLjAuMCwgT3BlbkFQSSx+U3ByaW5nIFNlY3VyaXR5fgotIFVSTHM6IFtodHRwOi8vbG9jYWxob3N0OjE4MDg3L3VpL3Jlc2VydmF0aW9uLnhodG1sXShodHRwOi8vbG9jYWxob3N0OjE4MDg3L3VpL3Jlc2VydmF0aW9uLnhodG1sKQotIEdJVEggSW5mbyBmcm9tIFJlc3QgV1M6IFtodHRwOi8vbG9jYWxob3N0OjE4MDg3L3ZlcnNpb25dKGh0dHA6Ly9sb2NhbGhvc3Q6MTgwODcvdmVyc2lvbikKCi0tLQoKKipbU3RhcnQgTGlua10oaHR0cDovL2xvY2FsaG9zdDoxODA4Ny91aS9yZXNlcnZhdGlvbi54aHRtbCkqKi4KCmNvbW1vbiBwcm9ncmFtbSB0ZXN0IChEQiBjb25uZWN0LCBCb290LCBKU0YgY29ubmVjdGlvbikgaXMgaGVscGZ1bCBvbiA8YnI+CnJlZmFjdG9yaW5nIGFuZCBwb20gdmVyc2lvbiBjaGFuZ2luZwoKKipbRU1haWw6amF2YWVudHdpY2tsZXJAZ21haWwuY29tXShtYWlsdG86Ly9qYXZhZW50d2lja2xlckBnbWFpbC5jb20pKioKCi0tLQoKIVtpbWFnZTFdKGRvYy9yZXNlcnZhdGlvbi5wbmcgIkltYWdlICMxIikKIVtpbWFnZTFdKGRvYy9saXN0LnBuZyAiSW1hZ2UgIzIiKQohW2ltYWdlMV0oZG9jL2Nld2F0ZS5wbmcgIkltYWdlICMzIikKCkFsbCBVUklzIGFyZSByZWxhdGl2ZSB0byAqaHR0cDovL2xvY2FsaG9zdDoxODA4NyoKCk1ldGhvZCB8IEhUVFAgcmVxdWVzdCB8IERlc2NyaXB0aW9uCi0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLQpbKip2ZXJzaW9uSW5mb3JtYXRpb24qKl0oVmVyc2lvblJlc3RDb250cm9sbGVyQXBpLm1kI3ZlcnNpb25JbmZvcm1hdGlvbikgfCAqKkdFVCoqIC92ZXJzaW9uLyB8Cgo8YSBuYW1lPSJ2ZXJzaW9uSW5mb3JtYXRpb24iPjwvYT4KCiMgKip2ZXJzaW9uSW5mb3JtYXRpb24qKgoKPiBTdHJpbmcgdmVyc2lvbkluZm9ybWF0aW9uKCkKCiMjIyBFeGFtcGxlIENhbGwgT3BlbiBBUEkgU2VydmljZToKCmBgYGphdmEKLy8gSW1wb3J0IGNsYXNzZXM6CmltcG9ydCBvcmcub3BlbmFwaXRvb2xzLmNsaWVudC5BcGlDbGllbnQ7CmltcG9ydCBvcmcub3BlbmFwaXRvb2xzLmNsaWVudC5BcGlFeGNlcHRpb247CmltcG9ydCBvcmcub3BlbmFwaXRvb2xzLmNsaWVudC5Db25maWd1cmF0aW9uOwppbXBvcnQgb3JnLm9wZW5hcGl0b29scy5jbGllbnQubW9kZWxzLio7CmltcG9ydCBvcmcub3BlbmFwaXRvb2xzLmNsaWVudC5hcGkuVmVyc2lvblJlc3RDb250cm9sbGVyQXBpOwoKcHVibGljIGNsYXNzIEV4YW1wbGUgewogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgIEFwaUNsaWVudCBkZWZhdWx0Q2xpZW50ID0gQ29uZmlndXJhdGlvbi5nZXREZWZhdWx0QXBpQ2xpZW50KCk7CiAgICBkZWZhdWx0Q2xpZW50LnNldEJhc2VQYXRoKCJodHRwOi8vbG9jYWxob3N0OjE4MDg3Iik7CgogICAgVmVyc2lvblJlc3RDb250cm9sbGVyQXBpIGFwaUluc3RhbmNlID0gbmV3IFZlcnNpb25SZXN0Q29udHJvbGxlckFwaShkZWZhdWx0Q2xpZW50KTsKICAgIHRyeSB7CiAgICAgIFN0cmluZyByZXN1bHQgPSBhcGlJbnN0YW5jZS52ZXJzaW9uSW5mb3JtYXRpb24oKTsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKHJlc3VsdCk7CiAgICB9IGNhdGNoIChBcGlFeGNlcHRpb24gZSkgewogICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkV4Y2VwdGlvbiB3aGVuIGNhbGxpbmcgVmVyc2lvblJlc3RDb250cm9sbGVyQXBpI3ZlcnNpb25JbmZvcm1hdGlvbiIpOwogICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlN0YXR1cyBjb2RlOiAiICsgZS5nZXRDb2RlKCkpOwogICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlJlYXNvbjogIiArIGUuZ2V0UmVzcG9uc2VCb2R5KCkpOwogICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlJlc3BvbnNlIGhlYWRlcnM6ICIgKyBlLmdldFJlc3BvbnNlSGVhZGVycygpKTsKICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKICAgIH0KICB9Cn0KYGBgCgojIyMgUGFyYW1ldGVycwoKVGhpcyBlbmRwb2ludCBkb2VzIG5vdCBuZWVkIGFueSBwYXJhbWV0ZXIuCgojIyMgUmV0dXJuIHR5cGUKCioqU3RyaW5nKioKCiMjIyBBdXRob3JpemF0aW9uCgpObyBhdXRob3JpemF0aW9uIHJlcXVpcmVkCgojIyMgSFRUUCByZXF1ZXN0IGhlYWRlcnMKCi0gKipDb250ZW50LVR5cGUqKjogTm90IGRlZmluZWQKLSAqKkFjY2VwdCoqOiBhcHBsaWNhdGlvbi9qc29uCgojIyMgSFRUUCByZXNwb25zZSBkZXRhaWxzCgp8IFN0YXR1cyBjb2RlIHwgRGVzY3JpcHRpb24gfCBSZXNwb25zZSBoZWFkZXJzIHwKfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS18CioqMjAwKiogfCBPSyB8ICAtICB8 readmeEtag: '"f2ae30b5c57ac8eae09d49c5f9f71454b7618b45"' readmeLastModified: Mon, 19 Sep 2022 22:41:14 GMT repositoryId: 140123000 description: Scheduler example implementation(Spring boot 2.6, JSF 2.4, Primefaces 10) created: '2018-07-07T23:15:09Z' updated: '2022-06-16T14:47:08Z' language: Java archived: false stars: 2 watchers: 2 forks: 2 owner: senatov logo: https://avatars.githubusercontent.com/u/4016842?v=4 repoEtag: '"8b2b3ca5231fd47e74c0be802649009c26132dd745f8f25ed1141717668df404"' repoLastModified: Thu, 16 Jun 2022 14:47:08 GMT foundInMaster: true category: - Low-level Tooling - SDK id: b76f2d705b59816aaf9172e4780d7e04 - source: openapi3 tags repository: https://github.com/danielso2007/virtuallibraryapi v3: true repositoryMetadata: base64Readme: >- WyFbQWN0aW9ucyBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxzbzIwMDcvdmlydHVhbExpYnJhcnlBUEkvd29ya2Zsb3dzL3ZpcnR1YWxMaWJyYXJ5QVBJL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxzbzIwMDcvdmlydHVhbExpYnJhcnlBUEkvYWN0aW9ucykKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2RhbmllbHNvMjAwNy92aXJ0dWFsTGlicmFyeUFQSS9icmFuY2gvZGV2ZWxvcC9ncmFwaC9iYWRnZS5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvZGFuaWVsc28yMDA3L3ZpcnR1YWxMaWJyYXJ5QVBJKQpbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1kYW5pZWxzbzIwMDdfdmlydHVhbExpYnJhcnlBUEkmbWV0cmljPWFsZXJ0X3N0YXR1cyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9ZGFuaWVsc28yMDA3X3ZpcnR1YWxMaWJyYXJ5QVBJKQohW0dpdEh1YiBwYWNrYWdlIHZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3BhY2thZ2UtanNvbi92L2RhbmllbHNvMjAwNy92aXJ0dWFsTGlicmFyeUFQSS5zdmcpClshW0dpdEh1YiBwdWxsIHJlcXVlc3RzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMtcHItcmF3L2RhbmllbHNvMjAwNy92aXJ0dWFsTGlicmFyeUFQSS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsc28yMDA3L3ZpcnR1YWxMaWJyYXJ5QVBJL3B1bGxzKQpbIVtHaXRIdWIgaXNzdWVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMvZGFuaWVsc28yMDA3L3ZpcnR1YWxMaWJyYXJ5QVBJLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxzbzIwMDcvdmlydHVhbExpYnJhcnlBUEkvaXNzdWVzP3E9aXMlM0FvcGVuK2lzJTNBaXNzdWUpCiFbR2l0SHViIGxhc3QgY29tbWl0XShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9sYXN0LWNvbW1pdC9kYW5pZWxzbzIwMDcvdmlydHVhbExpYnJhcnlBUEkuc3ZnKQpbIVtHaXRIdWIgaXNzdWUvcHVsbCByZXF1ZXN0IGF1dGhvcl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvaXNzdWVzL2RldGFpbC91L2RhbmllbHNvMjAwNy92aXJ0dWFsTGlicmFyeUFQSS8xLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxzbzIwMDcvdmlydHVhbExpYnJhcnlBUEkvcHVsbHMpCiFbR2l0SHViIGNvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvY29udHJpYnV0b3JzL2RhbmllbHNvMjAwNy92aXJ0dWFsTGlicmFyeUFQSS5zdmcpCiFbR2l0SHViIHRvcCBsYW5ndWFnZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGFuZ3VhZ2VzL3RvcC9kYW5pZWxzbzIwMDcvdmlydHVhbExpYnJhcnlBUEkuc3ZnKQpbIVtHaXRIdWJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvZGFuaWVsc28yMDA3L3ZpcnR1YWxMaWJyYXJ5QVBJLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxzbzIwMDcvdmlydHVhbExpYnJhcnlBUEkpClshW0dpdEh1YiBBbGwgUmVsZWFzZXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2Rvd25sb2Fkcy9kYW5pZWxzbzIwMDcvdmlydHVhbExpYnJhcnlBUEkvdG90YWwuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbHNvMjAwNy92aXJ0dWFsTGlicmFyeUFQSS9hcmNoaXZlL21hc3Rlci56aXApClshW0NvbnZlbnRpb25hbCBDb21taXRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0NvbnZlbnRpb25hbCUyMENvbW1pdHMtMS4wLjAteWVsbG93LnN2ZyldKGh0dHBzOi8vY29udmVudGlvbmFsY29tbWl0cy5vcmcpCgojIFZpcnR1YWwgTGlicmFyeSBBUEkKClZpcnR1YWwgbGlicmFyeSBBUEkuIFRoaXMgcHJvamVjdCBpcyB1c2VkIHRvIHN0dWR5IFJFU1QgU3ByaW5nIEJvb3QgcHJvamVjdHMuCgpFc3RlIHByb2pldG8gdXNhIG8gW0NvbW1vbnMgUkVTVCBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxzbzIwMDcvY29tbW9ucy1yZXN0LWFwaSkgcGFyYSBkZXBlbmTDqm5jaWEgcGFyYSBhcyBjaGFtYWRhcyBlIHBhZHLDtWVzIFJFU1QuIEVzc2UgcHJvamV0byBmb2kgZmVpdG8gcG9yIG1pbSBwYXJhIGFic3RyYWlyIHRvZGFzIGEgY2hhbWFkYXMgZSByZXRvcm5vcyBwYWRyw7VlcyBkbyBwcmluY8OtcGlvIFJFU1RGdWxsLiBTZXLDoSBuZWNlc3PDoXJpbyBpbnN0YWxhciBvIHByb2pldG8gbG9jYWxtZW50ZSBvdSB1c2FyIG8gW3BhY2thZ2UgZG8gZ2l0aHViXShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsc28yMDA3L2NvbW1vbnMtcmVzdC1hcGkvcGFja2FnZXMpLgoKIyMgR2V0dGluZyBTdGFydGVkCgpUaGVzZSBpbnN0cnVjdGlvbnMgd2lsbCBnZXQgeW91IGEgY29weSBvZiB0aGUgcHJvamVjdCB1cCBhbmQgcnVubmluZyBvbiB5b3VyIGxvY2FsIG1hY2hpbmUgZm9yIGRldmVsb3BtZW50IGFuZCB0ZXN0aW5nIHB1cnBvc2VzLgoKIyMjIFByZXJlcXVpc2l0ZXMKClV0aWxpemFyIG8gYW1iaWVudGUgbGludXggZSB0ZXIgbyBtYXZlbSBlIG8gamF2YSAxMSBwYXJhIGEgY29tcGlsYcOnw6NvIGUgZXhlY3XDp8OjbyBkbyBwcm9qZXRvLgpFc3RlIHByb2pldG8gdXRpbGl6YSBvIE1vbmdvRGIgY29tbyBiYXNlIGRlIGRhZG9zLCBwYXJhIHRlciB1bSBiYW5jbyBkZSBkYWRvcyBwYXJhIGVzc2UgcHJvamV0bywgc2lnYSBvIHByb2pldG8KW2RvY2tlck1vbmdvREJdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxzbzIwMDcvZG9ja2VyTW9uZ29EQikgdXNhbmRvIG8gW0RvY2tlcl0oaHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8pLgoKIyMjIEluc3RhbGxpbmcKClJlY29tZW5kYWRvIGluc3RhbGFyIG8gW3Nka21hbl0oaHR0cHM6Ly9zZGttYW4uaW8vKSBxdWUgw6kgdW1hIGZlcnJhbWVudGEgcGFyYSBnZXJlbmNpYXIgdmVyc8O1ZXMgcGFyYWxlbGFzIGRlIHbDoXJpb3Mga2l0cyBkZSBkZXNlbnZvbHZpbWVudG8gZGUgc29mdHdhcmUgbmEgbWFpb3JpYSBkb3Mgc2lzdGVtYXMgYmFzZWFkb3MgZW0gVW5peC4KCkNvbSBvIHNka21hbiwgaW5zdGFsZSBvIGphdmE6CmBgYApzZGsgbGlzdCBqYXZhCnNkayBpbnN0YWxsIGphdmEgMTEuMC41Lmo5LWFkcHQKYGBgCgpJbnN0YWxhbmRvIG8gTWF2ZW46CmBgYApzZGsgaW5zdGFsbCBtYXZlbgpgYGAKCiMjIFRlc3QKCk8gcHJvamV0byBlc3TDoSBjb25maWd1cmFkbyBwYXJhIG7Do28gZXhlY3V0YXIgb3MgdGVzdGVzIHF1YW5kbyBjb25zdHJ1w61kbyBwYXJhIGRlc2Vudm9sdmltZW50by4gUGFyYSBleGVjdXRhciBvcyB0ZXN0ZXMsIGV4ZWN1dGUgbyBjb21hbmRvIGFiYWl4bzoKCmBtdm4gY2xlYW4gdGVzdCAtUHRlc3RgCgpPcyB0ZXN0ZXMgc8OjbyBleGVjdXRhZG9zIG5vcm1hbG1lbnRlIHF1YW5kbyBjb25zdHJ1w61kbyBwYXJhICoqcHJvZHXDp8OjbyoqIGUgbmEgY3JpYcOnw6NvIGRhIGltYWdlbSAqKkRvY2tlcioqLiBIw6Egbm8gYXJxdWl2byBkbyBgcG9tLnhtbGAgZXNzYSBjb25maWd1cmHDp8OjbywgcXVlIHBvZGUgc2VyIG1vZGlmaWNhZGEgYSBxdWFscXVlciBtb21lbnRvIGRvIGRlc2Vudm9sdmltZW50by4gSW5pY2lhbG1lbnRlLCBwYXJhIG8gZGVzZW52b2x2aW1lbnRvLCBvIGRlc2Vudm9sdmVkb3IgcG9kZSBleGVjdXRhciBzZXVzIHRlc3RlcyBhbyBzZWd1aXIgbyBwYWRyw6NvIFRERCBwZWxhIHByw7NwcmlhIElERS4KCiMjIyBDb2RlIHRlc3QgY292ZXJhZ2UKCsOJIHV0aWxpemFkbyBvIFtFY2xFbW1hIEphY29jb10oaHR0cHM6Ly93d3cuZWNsZW1tYS5vcmcvamFjb2NvLykgcGFyYSB2ZXJpZmljYcOnw6NvIGRlIGNvYmVydHVyYSBkZSBjw7NkaWdvLiBQYXJhIGV4ZWN1dGFyIGEgY29iZXJ0dXJhOgpgYGAKbXZuIGNsZWFuIHRlc3QgdmVyaWZ5IC1QdGVzdCBqYWNvY286cmVwb3J0CmBgYApOYSBwYXN0YSB0YXJnZXQsIMOpIGdlcmFkbyB1bSAic2l0ZSIgbW9zdHJhbmRvIHRvZGEgYSBjb2JlcnR1cmEgZGUgY8OzZGlnby4gRXN0ZSBwcm9qZXRvIHV0aWxpemEgbyBfQWN0aW9uXyBwYXJhIG9zIHRlc3RlcyBlIGJ1aWxkIGRhIGFwbGljYcOnw6NvLiBBbyBmaW5hbCBkbyB0ZXN0ZSwgw6kgZW52aWFkbyBwYXJhIFtjb2RlY292LmlvXShodHRwczovL2NvZGVjb3YuaW8pIHRvZG8gbyByZWxhdMOzcmlvLiBQYXJhIHZlcmlmaWNhciBhIGNvYmVydHVyYSBkZSB0ZXN0ZSBkZXN0ZSBjw7NkaWdvLCBhY2Vzc2UgW2NvZGVjb3YuaW8vZ2gvZGFuaWVsc28yMDA3XShbY29kZWNvdi5pb10oaHR0cHM6Ly9jb2RlY292LmlvL2doL2RhbmllbHNvMjAwNy92aXJ0dWFsTGlicmFyeUFQSSkpLgoKIyMgUnVubmluZyB3aXRoIGRvY2tlcgoKSMOhIHVtIHBlcmZpbCBubyBgcG9tLnhtbGAgcGFyYSBhIGNyaWHDp8OjbyBkYSBpbWFnZW0gZG8gcHJvamV0by4gQW8gZXhlY3V0YXIgYG12biBjbGVhbiBwYWNrYWdlIC1QZG9ja2VyYCwgc2Vyw6EgcmVhbGl6YWRvIG8gdGVzdGUgZSBjcmlhZG8gbyBhcnF1aXZvIGBEb2NrZXJmaWxlYCBuYSBwYXN0YSBgdGFyZ2V0YCwgY3JpYW5kbyBhIGltYWdlbSBgdmlydHVhbExpYnJhcnlBUEk6PHByb2plY3QudmVyc2lvbj5gLgpQYXJhIHZlciBhIGltYWdlbSBjcmlhZGEsIGRpZ2l0ZSBubyB0ZXJtaW5hbCBvIGNvbWFuZG8gYGRvY2tlciBpbWFnZXNgLgoKUGFyYSAicm9kYXIiIGEgaW1hZ2VtLCBleGVjdXRlOgpgYGAKZG9ja2VyIHJ1biAtcCA4MDgwOjgwODAgLS1uYW1lIHN3YXBpICB2aXJ0dWFsTGlicmFyeUFQSTo8cHJvamVjdC52ZXJzaW9uPgpgYGAKCiMjIyBDb2RlIHF1YWxpdHkKCk8gc29uYXIgw6kgdXNhZG8gcGFyYSBhbmFsaXNhciBhIHF1YWxpZGFkZSBkbyBjw7NkaWdvLiBWb2PDqiBwb2RlIGluaWNpYXIgdW0gc2Vydmlkb3IgU29uYXIgbG9jYWwgKGFjZXNzw612ZWwgZW0gaHR0cDogLy8gbG9jYWxob3N0OiA5MDAxKSBjb206CgpgYGAKZG9ja2VyLWNvbXBvc2UgLWYgc3JjL21haW4vZG9ja2VyL3NvbmFyLnltbCB1cCAtZApgYGAKClZvY8OqIHBvZGUgZXhlY3V0YXIgdW1hIGFuw6FsaXNlIGRvIFNvbmFyIHVzYW5kbyBvIHNjYW5uZXIgZGUgc29uYXIgb3UgdXNhbmRvIG8gcGx1Z2luIG1hdmVuLgoKRW0gc2VndWlkYSwgZXhlY3V0ZSB1bWEgYW7DoWxpc2UgZG8gc29uYXI6CgpgYGAKbXZuIC1QdGVzdCBjbGVhbiB2ZXJpZnkgamFjb2NvOnJlcG9ydCBzb25hcjpzb25hcgpgYGAKClNlIHZvY8OqIHByZWNpc2FyIGV4ZWN1dGFyIG5vdmFtZW50ZSBhIGZhc2UgZG8gU29uYXIsIGVzcGVjaWZpcXVlIHBlbG8gbWVub3MgYSBmYXNlIGRlIGluaWNpYWxpemHDp8OjbywgasOhIHF1ZSBhcyBwcm9wcmllZGFkZXMgZG8gU29uYXIgc8OjbyBjYXJyZWdhZGFzIGRvIGFycXVpdm8gc29uYXItcHJvamVjdC5wcm9wZXJ0aWVzLgoKYGBgCm12biBjbGVhbiB0ZXN0IHZlcmlmeSAtUHRlc3QgamFjb2NvOnJlcG9ydAptdm4gaW5pdGlhbGl6ZSBzb25hcjpzb25hcgpgYGAKCiMjIyBEb2N1bWVudGHDp8OjbyBkYSBBUEkgLSBzd2FnZ2VyIChPcGVuQVBJIDMpOgoKQSBhcGxpY2HDp8OjbyB1c2EgbyBzd2FnZ2VyIHBhcmEgYSBleGliacOnw6NvIGRhIGRvY3VtZW50YcOnw6NvIGRhIEFQSS4gUGFyYSB2ZXJpZmljYXIsIGFjZXNzZSBvcyBsaW5rcyBbc3dhZ2dlci11aV0oaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N3YWdnZXItdWkuaHRtbCkgZSBbYXBpLWRvY3NdKGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGktZG9jcykuIERvY3VtZW50YcOnw6NvIFtzd2FnZ2VyLmlvXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9vcGVuLXNvdXJjZS10b29scy9zd2FnZ2VyLXVpL3VzYWdlL2NvbmZpZ3VyYXRpb24vKSBlIFtzcHJpbmdkb2Mub3JnXShodHRwczovL3NwcmluZ2RvYy5vcmcvKS4KCk1haXMgZXhlbXBsb3M6IFtkb2N1bWVudGluZy1zcHJpbmctYm9vdC1yZXN0LWFwaS1zcHJpbmdkb2Mtb3BlbmFwaS0zXShodHRwczovL3d3dy5kYXJpYXdhbi5jb20vdHV0b3JpYWxzL3NwcmluZy9kb2N1bWVudGluZy1zcHJpbmctYm9vdC1yZXN0LWFwaS1zcHJpbmdkb2Mtb3BlbmFwaS0zLykKCk91IGFkaWNpb25lIG8gY2FtaW5obyBhYmFpeG86CgpgYGAKaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N3YWdnZXItdWkuaHRtbAoKaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaS1kb2NzCmBgYAoKIyMjIFRlc3RlIG8gZW5kZXJlw6dvIGRvY2tlciAobG9naW46IGFkbWluIC8gcGFzc3dvcmQ6IGFkbWluKToKCmBgYApodHRwOi8vbG9jYWxob3N0OjgwODAvYXBpL3YxL2Jvb2tzCgpodHRwOi8vbG9jYWxob3N0OjgwODAvYXBpL3YxL3JhdGluZ3MKYGBgCgpJbmljaWFsbWVudGUgc8OzIMOpIGNyaWFkYSBhIGltYWdlbSBkYSBBUEkuIFBvc3Rlcmlvcm1lbnRlIG1vc3RyYXJlaSBjb21vIGV4ZWN1dGFyIG8gYGRvY2tlci1jb21wb3NlYCBjcmlhZG8gbm8gYnVpbGQsIHBhcmEgYSBleGVjdcOnw6NvIGNvbXBsZXRhIGRhIGFwaSBjb20gbyBiYW5jbyBkZSBkYWRvcyBNb25nb0RiLgoKIyMgUnVubmluZyB3aXRoIGRvY2tlci1jb21wb3NlCgpBbyBleGVjdXRhciBvIG1hdmVuIGBtdm4gY2xlYW4gcGFja2FnZSAtUGRvY2tlcmAsIMOpIGdlcmFkbyBvIGBEb2NrZXJmaWxlYCBlIHRhbWLDqW0gbyBgZG9ja2VyLWNvbXBvc2UueW1sYC4gQ29tIG8gZG9ja2VyLWNvbXBvc2Ugw6kgcG9zc8OtdmVsIGluaWNhciBhIGFwbGljYcOnw6NvIGrDoSBjb20gdW0gY29udGFpbmVyIGRvY2tlciBjb20gTW9uZ28uIEluaWNpYWxtZW50ZSBlc3NlIGJhbmNvIGVzdGFyw6EgdmF6aW8uCgpFeGVjdXRlIGVzc2UgY29tYW5kbyBkZW50cm8gZGEgcGFzdGEgYHRhcmdldGA6CmBgYApkb2NrZXItY29tcG9zZSB1cCAtZApgYGAKClNlcsOhIGluaWNpYWRvIG9zIGNvbnRhaW5lcnMgZGEgYXBpIGUgZG8gbW9uZ28uIEFjZXNzYW5kbyBvIGVuZGVyZcOnbyBgaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaS92MS9ib29rc2AsIHNlcsOhIHJldG9ybmFkbyB1bWEgbGlzdGEgdmF6aWEuCgpQYXJhIHBhcmFyIG9zIGNvbnRhaW5lcnMsIGV4ZWN1dGU6CmBgYApkb2NrZXItY29tcG9zZSBzdG9wCmBgYAoKUGVsbyBgcG9tLnhtbGAgw6kgcG9zc8OtdmVsIGNvbmZpZ3VyYXIgYSBjcmlhw6fDo28gZG8gYXJxdWl2byBgZG9ja2VyLWNvbXBvc2VgLiBJbmljaWFsbWVudGUgYSBwb3J0YSBkbyBjb250YWluZXIgbW9uZ28gZXN0w6EgZXhwb3N0YSwgbWFzIMOpIHPDsyBtb2RpZmljYXIgbyBhcnF1aXZvIGBkb2NrZXItY29tcG9zZWAgZSByZW1vdmVyLCBwb2lzIGEgY29tdW5pY2HDp8OjbyBlbnRyZSBhIGFwaSBlIG8gYmFuY28gw6kgdmlhIGBuZXR3b3JrYCBpbnRlcm5vIGVudHJlIG9zIGNvbnRhaW5lcnMuCgojIyBSdW5uaW5nIChObyBkb2NrZXIpCgpEZW50cm8gZGEgcGFzdGEgZG8gcHJvamV0bywgZXhlY3V0ZToKYGBgCm12biBjbGVhbiBwYWNrYWdlIGluc3RhbGwKYGBgCkFww7NzIGNvbXBpbGFyIG8gcHJvamV0bywgZGVudHJvIGRhIHBhc3RhIGB0YXJnZXRgLCBpbmljaWUgbyBwcm9qZXRvICh4LngueCDDqSBhIHZlcnPDo28gYXR1YWwgZG8gcHJvamV0byk6CmBgYApjZCB0YXJnZXQKbm9odXAgamF2YSAtamFyIHZpcnR1YWxsaWJyYXJ5YXBpLXgueC54LmphciAmIHRhaWwgLWYgbm9odXAub3V0CgpgYGAKCiMjIyBTdG9wcGluZyBwcm9qZWN0CgpQYXJhIGVuY2VycmFyIG8gcHJvamV0bywgZXhlY3V0ZSBvIGNvbWFuZG8gYWJhaXhvOgpgYGAKcHMgLWVmIHwgZ3JlcCB2aXJ0dWFsbGlicmFyeWFwaQpgYGAKTyBjb21hbmRvIGFjaW1hIGV4aWJpcsOhIG8gaWQgZG8gcHJvY2Vzc28sIGFww7NzIHZlciBvIGlkIGRvIHByb2Nlc3NvLCBleGVjdXRlOgpgYGAKa2lsbCAtOSA8aWRfcHJvY2Vzc28+CmBgYAoKIyMjIFNjcmlwdHMgZGUgZXhlY3XDp8OjbyBlIGVuY2VycmFtZW50byBkbyBwcm9qZXRvCgpEZW50cm8gZGEgcGFzdGEgYHRhcmdldGAgw6kgY3JpYWRvIG9zIGFycXVpdm9zIGBzdGFydC5zaGAgZSBgc3RvcC5zaGAuIEVzc2VzIGFycXVpdm9zIG7Do28gc8OjbyBleGVjdXTDoXZlaXMgZSBwcmVjaXNhbSBzZXIgbW9kaWZpY2Fkb3M6CmBgYApjZCB0YXJnZXQKY2htb2QgYSt4IHN0YXJ0LnNoIHN0b3Auc2gKYGBgCgpQYXJhIGluaWNpYXIgbyBwcm9qZXRvLCBleGVjdXRlIChkZW50cm8gZGEgcGFzdGEgYHRhcmdldGApOgpgYGAKLi9zdGFydC5zaApgYGAKUGFyYSBlbmNlcnJhciBvIHByb2pldG8sIGV4ZWN1dGUgKGRlbnRybyBkYSBwYXN0YSBgdGFyZ2V0YCk6CmBgYAouL3N0b3Auc2gKYGBgCgojIyBEZXBsb3ltZW50CgpOYWRhIHNlcsOhIG5lY2Vzc8OhcmlvLCBvIHByb2pldG8gw6kgZXhlY3V0YWRvIGNvbW8gYEZhdCBqYXJgLiBNYXMgcGFyYSBwcm9kdcOnw6NvIGUgaG9tb2xvZ2HDp8Ojbywgw6kgcG9zc8OtdmVsIHVzYXIgYXMgaW1hZ2VucyBnZXJhZGFzIHBlbG8gY29tYW5kbzogYG12biBjbGVhbiBwYWNrYWdlIC1QZG9ja2VyYC4gTXVpdG8gaW1wb3J0YW50ZSBwYXJhIG8gdXNvIGRvIENJLgoKCiMgQmFuY28gZGUgZGFkb3MKCk8gcHJvamV0byB1c2EgbyBtb25nbyBwYXJhIGJhbmNvIGRlIGRhZG9zLiBSZWNvbWVuZG8gcXVlIHV0aWxpemUgbyBwcm9qZXRvIFtkYW5pZWxzbzIwMDcvZG9ja2VyTW9uZ29EQl0oaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbHNvMjAwNy9kb2NrZXJNb25nb0RCKSBwYXJhIGV4ZWN1dGFyIG8gbW9uZ28gZW0gZG9ja2VyLiBIw6EgZG9pcyBhcnF1aXZvcyBgYm9vay5qc2AgZSBgcmF0aW5nLmpzYCBxdWUgcG9kZW0gc2VyIHVzYWRvcyBwYXJhIGltcG9ydGFyIGRhZG9zIG5vIGJhbmNvLgoKU2VndWUgYSBjb25maWd1cmHDp8OjbyBwYWRyw6NvIGRvIGJhbmNvLCBtYXMgY2FkYSBwcm9maWxlIGRvIGBQT01gIHRlbSBzZXUgZGF0YWJhc2UuCi0gaG9zdDogbG9jYWxob3N0Ci0gcG9ydDogMjcwMTcKLSBkYXRhYmFzZTogdmlydHVhbGxpYnJhcnlhcGkKLSB1c2VybmFtZTogcm9vdAotIHBhc3N3b3JkOiAxMTIzNTgKCkV4ZWN1dGUgbyBhcnF1aXZvIGAuL21vbmdvaW1wb3J0LnNoYCBlIGluZm9ybWU6CgotIEltcG9ydGFuZG8gYXJxdWl2byBwYXJhIG8gTW9uZ29EQi4uLgotIEluZm9tZSBvIG5vbWUgZG8gYmFuY28gZGUgZGFkb3M6Ci0gYHZpcnR1YWxsaWJyYXJ5YXBpYAotIEluZm9tZSBjb2xsZWN0aW9uOgotIGBib29rYAotIEluZm9tZSBvIG5vbWUgZG8gYXJxdWl2byBKU09OOgotIGBib29rLmpzb25gCgpEZXBvaXMgcGFyYSBvIGByYXRpbmdgOgoKLSBJbXBvcnRhbmRvIGFycXVpdm8gcGFyYSBvIE1vbmdvREIuLi4KLSBJbmZvbWUgbyBub21lIGRvIGJhbmNvIGRlIGRhZG9zOgotIGB2aXJ0dWFsbGlicmFyeWFwaWAKLSBJbmZvbWUgY29sbGVjdGlvbjoKLSBgcmF0aW5nYAotIEluZm9tZSBvIG5vbWUgZG8gYXJxdWl2byBKU09OOgotIGByYXRpbmcuanNvbmAKCiMjIEJ1aWx0IFdpdGgKCiogW0phdmFdKGh0dHBzOi8vd3d3Lm9yYWNsZS5jb20vYnIvamF2YS8pCiogW1NwcmluZyBCb290XShodHRwczovL3NwcmluZy5pby9wcm9qZWN0cy9zcHJpbmctYm9vdCkKKiBbTWF2ZW5dKGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZy8pCiogW1VuZGVydG93IC0gU2Vydmlkb3IgV2ViXShodHRwOi8vdW5kZXJ0b3cuaW8vKQoqIFtNb2RlbG1hcHBlciAtIFNpbXBsZSwgSW50ZWxsaWdlbnQsIE9iamVjdCBNYXBwaW5nXShodHRwOi8vbW9kZWxtYXBwZXIub3JnLykKKiBbUHJvamVjdCBMb21ib2tdKGh0dHBzOi8vcHJvamVjdGxvbWJvay5vcmcvKQoqIFtRdWVyeURzbCAtIHR5cGUtc2FmZSBTUUwtbGlrZSBxdWVyaWVzIC0gZmx1ZW50IEFQSV0oaHR0cDovL3d3dy5xdWVyeWRzbC5jb20vKQoqIFtTd2FnZ2VyXShodHRwczovL3N3YWdnZXIuaW8vKQoqIFtTdGFuZGFyZC12ZXJzaW9uXShodHRwczovL2dpdGh1Yi5jb20vY29udmVudGlvbmFsLWNoYW5nZWxvZy9zdGFuZGFyZC12ZXJzaW9uKQoKIyMgQ29udHJpYnV0aW5nCgpQbGVhc2UgcmVhZCBbQ09OVFJJQlVUSU5HLm1kXShDT05UUklCVVRJTkcubWQpIGZvciBkZXRhaWxzIG9uIG91ciBjb2RlIG9mIGNvbmR1Y3QsIGFuZCB0aGUgcHJvY2VzcyBmb3Igc3VibWl0dGluZyBwdWxsIHJlcXVlc3RzIHRvIHVzLgoKIyMgVmVyc2lvbmluZwoKVXNhbW9zIFtTZW1WZXJdKGh0dHA6Ly9zZW12ZXIub3JnLykgcGFyYSB2ZXJzaW9uYXIuIFBhcmEgYXMgdmVyc8O1ZXMgZGlzcG9uw612ZWlzLCBjb25zdWx0ZSBhcyBbdGFncyBuZXN0ZSByZXBvc2l0w7NyaW9dKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxzbzIwMDcvdmlydHVhbExpYnJhcnlBUEkvcmVsZWFzZXMpLiAKCiMjIEF1dGhvcnMKCiogKipEYW5pZWwgT2xpdmVpcmEqKiAtICpJbml0aWFsIHdvcmsqIC0gW2RhbmllbHNvMjAwN10oaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbHNvMjAwNykKClNlZSBhbHNvIHRoZSBsaXN0IG9mIFtjb250cmlidXRvcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxzbzIwMDcvdmlydHVhbExpYnJhcnlBUEkvZ3JhcGhzL2NvbnRyaWJ1dG9ycykgd2hvIHBhcnRpY2lwYXRlZCBpbiB0aGlzIHByb2plY3QuCg== readmeEtag: '"34ff87d8c3724949b6189e9bc7882cacf4ab2d2a"' readmeLastModified: Thu, 12 Aug 2021 21:25:41 GMT repositoryId: 236433782 description: Study of Java REST and Spring Boot projects. created: '2020-01-27T06:42:47Z' updated: '2021-08-12T21:25:45Z' language: Java archived: false stars: 2 watchers: 1 forks: 2 owner: danielso2007 logo: https://avatars.githubusercontent.com/u/1641606?v=4 repoEtag: '"75191c8e7734f8829833a2041e0ded36d6fae616305ef565ae6fa9afeeef518a"' repoLastModified: Thu, 12 Aug 2021 21:25:45 GMT foundInMaster: true category: Code Generators id: 09b5ac67cbb6bc0277c4fa1345238597 - source: openapi3 tags repository: https://github.com/joaoduarte19/openapi4d v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQXBpNEQKKipPcGVuQXBpNEQqKiBpcyBhbiBbT3BlbkFQSSAzLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjAuMy5tZCkgZ2VuZXJhdG9yIGZvciBEZWxwaGkuCg== readmeEtag: '"6f4a7c9d416b89e0248aa85bd78a7aadf9a1e962"' readmeLastModified: Thu, 15 Jul 2021 22:31:21 GMT repositoryId: 384214637 description: OpenAPI generator for Delphi created: '2021-07-08T18:24:09Z' updated: '2025-10-31T18:31:40Z' language: Pascal archived: false stars: 3 watchers: 1 forks: 2 owner: joaoduarte19 logo: https://avatars.githubusercontent.com/u/13373632?v=4 license: Apache-2.0 repoEtag: '"7cc00b81d80cebc2a720a1861dc29238a3e0ef6bd828d13fc3cf521ba8b031cd"' repoLastModified: Fri, 31 Oct 2025 18:31:40 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: 9c6cbdff33442ef0c97c06e4df283055 - source: openapi3 tags repository: https://github.com/simonit/vcita-client-java-sdk v3: true repositoryMetadata: base64Readme: >- IyB2Y2l0YS1jbGllbnQtamF2YS1zZGsKCmNsaWVudF9hcGkgQVBJCi0gQVBJIHZlcnNpb246IHYyLjAKCk5vIGRlc2NyaXB0aW9uIHByb3ZpZGVkIChnZW5lcmF0ZWQgYnkgT3BlbmFwaSBHZW5lcmF0b3IgaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvcikKCgoqQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhlIFtPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKSoKCgojIyBSZXF1aXJlbWVudHMKCkJ1aWxkaW5nIHRoZSBBUEkgY2xpZW50IGxpYnJhcnkgcmVxdWlyZXM6CjEuIEphdmEgMS44KwoyLiBNYXZlbiAoMy44LjMrKS9HcmFkbGUgKDcuMispCgojIyBJbnN0YWxsYXRpb24KClRvIGluc3RhbGwgdGhlIEFQSSBjbGllbnQgbGlicmFyeSB0byB5b3VyIGxvY2FsIE1hdmVuIHJlcG9zaXRvcnksIHNpbXBseSBleGVjdXRlOgoKYGBgc2hlbGwKbXZuIGNsZWFuIGluc3RhbGwKYGBgCgpUbyBkZXBsb3kgaXQgdG8gYSByZW1vdGUgTWF2ZW4gcmVwb3NpdG9yeSBpbnN0ZWFkLCBjb25maWd1cmUgdGhlIHNldHRpbmdzIG9mIHRoZSByZXBvc2l0b3J5IGFuZCBleGVjdXRlOgoKYGBgc2hlbGwKbXZuIGNsZWFuIGRlcGxveQpgYGAKClJlZmVyIHRvIHRoZSBbT1NTUkggR3VpZGVdKGh0dHA6Ly9jZW50cmFsLnNvbmF0eXBlLm9yZy9wYWdlcy9vc3NyaC1ndWlkZS5odG1sKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiMjIyBNYXZlbiB1c2VycwoKQWRkIHRoaXMgZGVwZW5kZW5jeSB0byB5b3VyIHByb2plY3QncyBQT006CgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgPGdyb3VwSWQ+Y29tLnZjaXRhLmNsaWVudDwvZ3JvdXBJZD4KICA8YXJ0aWZhY3RJZD52Y2l0YS1jbGllbnQtamF2YS1zZGs8L2FydGlmYWN0SWQ+CiAgPHZlcnNpb24+djIuMDwvdmVyc2lvbj4KICA8c2NvcGU+Y29tcGlsZTwvc2NvcGU+CjwvZGVwZW5kZW5jeT4KYGBgCgojIyMgR3JhZGxlIHVzZXJzCgpBZGQgdGhpcyBkZXBlbmRlbmN5IHRvIHlvdXIgcHJvamVjdCdzIGJ1aWxkIGZpbGU6CgpgYGBncm9vdnkKICByZXBvc2l0b3JpZXMgewogICAgbWF2ZW5DZW50cmFsKCkgICAgIC8vIE5lZWRlZCBpZiB0aGUgJ3ZjaXRhLWNsaWVudC1qYXZhLXNkaycgamFyIGhhcyBiZWVuIHB1Ymxpc2hlZCB0byBtYXZlbiBjZW50cmFsLgogICAgbWF2ZW5Mb2NhbCgpICAgICAgIC8vIE5lZWRlZCBpZiB0aGUgJ3ZjaXRhLWNsaWVudC1qYXZhLXNkaycgamFyIGhhcyBiZWVuIHB1Ymxpc2hlZCB0byB0aGUgbG9jYWwgbWF2ZW4gcmVwby4KICB9CgogIGRlcGVuZGVuY2llcyB7CiAgICAgaW1wbGVtZW50YXRpb24gImNvbS52Y2l0YS5jbGllbnQ6dmNpdGEtY2xpZW50LWphdmEtc2RrOnYyLjAiCiAgfQpgYGAKCiMjIyBPdGhlcnMKCkF0IGZpcnN0IGdlbmVyYXRlIHRoZSBKQVIgYnkgZXhlY3V0aW5nOgoKYGBgc2hlbGwKbXZuIGNsZWFuIHBhY2thZ2UKYGBgCgpUaGVuIG1hbnVhbGx5IGluc3RhbGwgdGhlIGZvbGxvd2luZyBKQVJzOgoKKiBgdGFyZ2V0L3ZjaXRhLWNsaWVudC1qYXZhLXNkay12Mi4wLmphcmAKKiBgdGFyZ2V0L2xpYi8qLmphcmAKCiMjIEdldHRpbmcgU3RhcnRlZAoKUGxlYXNlIGZvbGxvdyB0aGUgW2luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikgaW5zdHJ1Y3Rpb24gYW5kIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBKYXZhIGNvZGU6CgpgYGBqYXZhCgovLyBJbXBvcnQgY2xhc3NlczoKaW1wb3J0IGNvbS52Y2l0YS5jbGllbnQuY2xpZW50LkFwaUNsaWVudDsKaW1wb3J0IGNvbS52Y2l0YS5jbGllbnQuY2xpZW50LkFwaUV4Y2VwdGlvbjsKaW1wb3J0IGNvbS52Y2l0YS5jbGllbnQuY2xpZW50LkNvbmZpZ3VyYXRpb247CmltcG9ydCBjb20udmNpdGEuY2xpZW50LmNsaWVudC5tb2RlbHMuKjsKaW1wb3J0IGNvbS52Y2l0YS5jbGllbnQuY2xpZW50LmFwaS5BdXRoZW50aWNhdGlvbkFwaTsKCnB1YmxpYyBjbGFzcyBFeGFtcGxlIHsKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICBBcGlDbGllbnQgZGVmYXVsdENsaWVudCA9IENvbmZpZ3VyYXRpb24uZ2V0RGVmYXVsdEFwaUNsaWVudCgpOwogICAgZGVmYXVsdENsaWVudC5zZXRCYXNlUGF0aCgiaHR0cDovL2FwaS52Y2l0YS5iaXovY2xpZW50X2FwaS92MSIpOwoKICAgIEF1dGhlbnRpY2F0aW9uQXBpIGFwaUluc3RhbmNlID0gbmV3IEF1dGhlbnRpY2F0aW9uQXBpKGRlZmF1bHRDbGllbnQpOwogICAgU3RyaW5nIGJ1c2luZXNzVWlkID0gImJ1c2luZXNzVWlkX2V4YW1wbGUiOyAvLyBTdHJpbmcgfCAKICAgIHRyeSB7CiAgICAgIElubGluZVJlc3BvbnNlMjAwIHJlc3VsdCA9IGFwaUluc3RhbmNlLnBvcnRhbHNCdXNpbmVzc1VpZEF1dGhlbnRpY2F0aW9uc0xvZ291dFBvc3QoYnVzaW5lc3NVaWQpOwogICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocmVzdWx0KTsKICAgIH0gY2F0Y2ggKEFwaUV4Y2VwdGlvbiBlKSB7CiAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiRXhjZXB0aW9uIHdoZW4gY2FsbGluZyBBdXRoZW50aWNhdGlvbkFwaSNwb3J0YWxzQnVzaW5lc3NVaWRBdXRoZW50aWNhdGlvbnNMb2dvdXRQb3N0Iik7CiAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiU3RhdHVzIGNvZGU6ICIgKyBlLmdldENvZGUoKSk7CiAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiUmVhc29uOiAiICsgZS5nZXRSZXNwb25zZUJvZHkoKSk7CiAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiUmVzcG9uc2UgaGVhZGVyczogIiArIGUuZ2V0UmVzcG9uc2VIZWFkZXJzKCkpOwogICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwogICAgfQogIH0KfQoKYGBgCgojIyBEb2N1bWVudGF0aW9uIGZvciBBUEkgRW5kcG9pbnRzCgpBbGwgVVJJcyBhcmUgcmVsYXRpdmUgdG8gKmh0dHA6Ly9hcGkudmNpdGEuYml6L2NsaWVudF9hcGkvdjEqCgpDbGFzcyB8IE1ldGhvZCB8IEhUVFAgcmVxdWVzdCB8IERlc2NyaXB0aW9uCi0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLQoqQXV0aGVudGljYXRpb25BcGkqIHwgWyoqcG9ydGFsc0J1c2luZXNzVWlkQXV0aGVudGljYXRpb25zTG9nb3V0UG9zdCoqXShkb2NzL0F1dGhlbnRpY2F0aW9uQXBpLm1kI3BvcnRhbHNCdXNpbmVzc1VpZEF1dGhlbnRpY2F0aW9uc0xvZ291dFBvc3QpIHwgKipQT1NUKiogL3BvcnRhbHMve2J1c2luZXNzX3VpZH0vYXV0aGVudGljYXRpb25zL2xvZ291dCB8IAoqQXV0aGVudGljYXRpb25BcGkqIHwgWyoqcG9ydGFsc0J1c2luZXNzVWlkQXV0aGVudGljYXRpb25zU2VuZENvZGVQb3N0KipdKGRvY3MvQXV0aGVudGljYXRpb25BcGkubWQjcG9ydGFsc0J1c2luZXNzVWlkQXV0aGVudGljYXRpb25zU2VuZENvZGVQb3N0KSB8ICoqUE9TVCoqIC9wb3J0YWxzL3tidXNpbmVzc191aWR9L2F1dGhlbnRpY2F0aW9ucy9zZW5kX2NvZGUgfCAKKkF1dGhlbnRpY2F0aW9uQXBpKiB8IFsqKnBvcnRhbHNCdXNpbmVzc1VpZEF1dGhlbnRpY2F0aW9uc1ZlcmlmeUNvZGVQb3N0KipdKGRvY3MvQXV0aGVudGljYXRpb25BcGkubWQjcG9ydGFsc0J1c2luZXNzVWlkQXV0aGVudGljYXRpb25zVmVyaWZ5Q29kZVBvc3QpIHwgKipQT1NUKiogL3BvcnRhbHMve2J1c2luZXNzX3VpZH0vYXV0aGVudGljYXRpb25zL3ZlcmlmeV9jb2RlIHwgCipDbGllbnRBcGkqIHwgWyoqcG9ydGFsc0J1c2luZXNzVWlkQ2xpZW50R2V0KipdKGRvY3MvQ2xpZW50QXBpLm1kI3BvcnRhbHNCdXNpbmVzc1VpZENsaWVudEdldCkgfCAqKkdFVCoqIC9wb3J0YWxzL3tidXNpbmVzc191aWR9L2NsaWVudCB8IAoqRm9ybXNBcGkqIHwgWyoqcG9ydGFsc0J1c2luZXNzVWlkQ29udGFjdEdldEZvcm1HZXQqKl0oZG9jcy9Gb3Jtc0FwaS5tZCNwb3J0YWxzQnVzaW5lc3NVaWRDb250YWN0R2V0Rm9ybUdldCkgfCAqKkdFVCoqIC9wb3J0YWxzL3tidXNpbmVzc191aWR9L2NvbnRhY3QvZ2V0X2Zvcm0gfCBHZXQgTGVhdmUgRGV0YWlscyBGb3JtCipGb3Jtc0FwaSogfCBbKipwb3J0YWxzQnVzaW5lc3NVaWRDb250YWN0U3VibWl0UG9zdCoqXShkb2NzL0Zvcm1zQXBpLm1kI3BvcnRhbHNCdXNpbmVzc1VpZENvbnRhY3RTdWJtaXRQb3N0KSB8ICoqUE9TVCoqIC9wb3J0YWxzL3tidXNpbmVzc191aWR9L2NvbnRhY3Qvc3VibWl0IHwgU3VibWl0cyBMZWF2ZSBEZXRhaWxzIEZvcm0KKkZvcm1zQXBpKiB8IFsqKnBvcnRhbHNCdXNpbmVzc1VpZFNoYXJlRG9jdW1lbnRzRm9ybUdldEZvcm1HZXQqKl0oZG9jcy9Gb3Jtc0FwaS5tZCNwb3J0YWxzQnVzaW5lc3NVaWRTaGFyZURvY3VtZW50c0Zvcm1HZXRGb3JtR2V0KSB8ICoqR0VUKiogL3BvcnRhbHMve2J1c2luZXNzX3VpZH0vc2hhcmVfZG9jdW1lbnRzX2Zvcm0vZ2V0X2Zvcm0gfCBHZXQgU2hhcmUgRG9jdW1lbnRzIEZvcm0KKkZvcm1zQXBpKiB8IFsqKnBvcnRhbHNCdXNpbmVzc1VpZFNoYXJlRG9jdW1lbnRzRm9ybVN1Ym1pdFBvc3QqKl0oZG9jcy9Gb3Jtc0FwaS5tZCNwb3J0YWxzQnVzaW5lc3NVaWRTaGFyZURvY3VtZW50c0Zvcm1TdWJtaXRQb3N0KSB8ICoqUE9TVCoqIC9wb3J0YWxzL3tidXNpbmVzc191aWR9L3NoYXJlX2RvY3VtZW50c19mb3JtL3N1Ym1pdCB8IFN1Ym1pdHMgU2hhcmUgRG9jdW1lbnRzIEZvcm0KCgojIyBEb2N1bWVudGF0aW9uIGZvciBNb2RlbHMKCiAtIFtDbGllbnRdKGRvY3MvQ2xpZW50Lm1kKQogLSBbRGF0YV0oZG9jcy9EYXRhLm1kKQogLSBbRGF0YTFdKGRvY3MvRGF0YTEubWQpCiAtIFtEYXRhMl0oZG9jcy9EYXRhMi5tZCkKIC0gW0RhdGEzXShkb2NzL0RhdGEzLm1kKQogLSBbRmllbGRdKGRvY3MvRmllbGQubWQpCiAtIFtJbmxpbmVPYmplY3RdKGRvY3MvSW5saW5lT2JqZWN0Lm1kKQogLSBbSW5saW5lT2JqZWN0MV0oZG9jcy9JbmxpbmVPYmplY3QxLm1kKQogLSBbSW5saW5lT2JqZWN0Ml0oZG9jcy9JbmxpbmVPYmplY3QyLm1kKQogLSBbSW5saW5lT2JqZWN0M10oZG9jcy9JbmxpbmVPYmplY3QzLm1kKQogLSBbSW5saW5lUmVzcG9uc2UyMDBdKGRvY3MvSW5saW5lUmVzcG9uc2UyMDAubWQpCiAtIFtJbmxpbmVSZXNwb25zZTIwMDFdKGRvY3MvSW5saW5lUmVzcG9uc2UyMDAxLm1kKQogLSBbSW5saW5lUmVzcG9uc2U0MDFdKGRvY3MvSW5saW5lUmVzcG9uc2U0MDEubWQpCiAtIFtNYXR0ZXJdKGRvY3MvTWF0dGVyLm1kKQogLSBbUG9ydGFsc0J1c2luZXNzVWlkQXV0aGVudGljYXRpb25zU2VuZENvZGVQb3N0MjAwUmVzcG9uc2VdKGRvY3MvUG9ydGFsc0J1c2luZXNzVWlkQXV0aGVudGljYXRpb25zU2VuZENvZGVQb3N0MjAwUmVzcG9uc2UubWQpCiAtIFtQb3J0YWxzQnVzaW5lc3NVaWRDbGllbnRHZXQyMDBSZXNwb25zZV0oZG9jcy9Qb3J0YWxzQnVzaW5lc3NVaWRDbGllbnRHZXQyMDBSZXNwb25zZS5tZCkKIC0gW1BvcnRhbHNCdXNpbmVzc1VpZENvbnRhY3RHZXRGb3JtR2V0MjAwUmVzcG9uc2VdKGRvY3MvUG9ydGFsc0J1c2luZXNzVWlkQ29udGFjdEdldEZvcm1HZXQyMDBSZXNwb25zZS5tZCkKIC0gW1BvcnRhbHNCdXNpbmVzc1VpZENvbnRhY3RTdWJtaXRGaWVsZHNdKGRvY3MvUG9ydGFsc0J1c2luZXNzVWlkQ29udGFjdFN1Ym1pdEZpZWxkcy5tZCkKIC0gW1BvcnRhbHNCdXNpbmVzc1VpZENvbnRhY3RTdWJtaXRGb3JtRGF0YV0oZG9jcy9Qb3J0YWxzQnVzaW5lc3NVaWRDb250YWN0U3VibWl0Rm9ybURhdGEubWQpCiAtIFtQb3J0YWxzQnVzaW5lc3NVaWRDb250YWN0U3VibWl0UG9zdDIwMFJlc3BvbnNlXShkb2NzL1BvcnRhbHNCdXNpbmVzc1VpZENvbnRhY3RTdWJtaXRQb3N0MjAwUmVzcG9uc2UubWQpCiAtIFtQb3J0YWxzQnVzaW5lc3NVaWRDb250YWN0U3VibWl0U291cmNlRGF0YV0oZG9jcy9Qb3J0YWxzQnVzaW5lc3NVaWRDb250YWN0U3VibWl0U291cmNlRGF0YS5tZCkKIC0gW1BvcnRhbHNCdXNpbmVzc1VpZFNoYXJlRG9jdW1lbnRzRm9ybUdldEZvcm1HZXQyMDBSZXNwb25zZV0oZG9jcy9Qb3J0YWxzQnVzaW5lc3NVaWRTaGFyZURvY3VtZW50c0Zvcm1HZXRGb3JtR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtQb3J0YWxzQnVzaW5lc3NVaWRTaGFyZURvY3VtZW50c0Zvcm1TdWJtaXRGaWVsZHNdKGRvY3MvUG9ydGFsc0J1c2luZXNzVWlkU2hhcmVEb2N1bWVudHNGb3JtU3VibWl0RmllbGRzLm1kKQogLSBbUG9ydGFsc0J1c2luZXNzVWlkU2hhcmVEb2N1bWVudHNGb3JtU3VibWl0Rm9ybURhdGFdKGRvY3MvUG9ydGFsc0J1c2luZXNzVWlkU2hhcmVEb2N1bWVudHNGb3JtU3VibWl0Rm9ybURhdGEubWQpCiAtIFtQb3J0YWxzQnVzaW5lc3NVaWRTaGFyZURvY3VtZW50c0Zvcm1TdWJtaXRQb3N0MjAwUmVzcG9uc2VdKGRvY3MvUG9ydGFsc0J1c2luZXNzVWlkU2hhcmVEb2N1bWVudHNGb3JtU3VibWl0UG9zdDIwMFJlc3BvbnNlLm1kKQogLSBbU2VjdGlvbl0oZG9jcy9TZWN0aW9uLm1kKQoKCiMjIERvY3VtZW50YXRpb24gZm9yIEF1dGhvcml6YXRpb24KCkF1dGhlbnRpY2F0aW9uIHNjaGVtZXMgZGVmaW5lZCBmb3IgdGhlIEFQSToKIyMjIGRlZmF1bHQKCi0gKipUeXBlKio6IE9BdXRoCi0gKipGbG93Kio6IGltcGxpY2l0Ci0gKipBdXRob3JpemF0aW9uIFVSTCoqOiBodHRwczovL2lnbm9yZS5teWNsaWVudHMuaW8KLSAqKlNjb3BlcyoqOiAKICAtIGNsaWVudF9hcGk6IEFsbCBjbGllbnRfYXBpIHJlbGF0ZWQgb3BlcmF0aW9ucwogIC0gY2xpZW50X2FwaV9jcmVhdGU6IGNsaWVudF9hcGkgY3JlYXRlIHNjb3BlCiAgLSBjbGllbnRfYXBpX2RlbGV0ZTogY2xpZW50X2FwaSBkZWxldGUgc2NvcGUKICAtIGNsaWVudF9hcGlfcmVhZDogY2xpZW50X2FwaSByZWFkIHNjb3BlCiAgLSBjbGllbnRfYXBpX3VwZGF0ZTogY2xpZW50X2FwaSB1cGRhdGUgc2NvcGUKCgojIyBSZWNvbW1lbmRhdGlvbgoKSXQncyByZWNvbW1lbmRlZCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgYEFwaUNsaWVudGAgcGVyIHRocmVhZCBpbiBhIG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQgdG8gYXZvaWQgYW55IHBvdGVudGlhbCBpc3N1ZXMuCgojIyBBdXRob3IKCgoK readmeEtag: '"b4af61ead61427c9fbe38ae35630a8344c8658e6"' readmeLastModified: Fri, 01 Apr 2022 21:05:46 GMT repositoryId: 468561776 description: null created: '2022-03-11T01:03:44Z' updated: '2022-03-15T19:45:45Z' language: Java archived: false stars: 2 watchers: 1 forks: 0 owner: SimonIT logo: https://avatars.githubusercontent.com/u/11720038?v=4 repoEtag: '"65e8053d3472d2db3aeb574fbaedbd53bfe33061cb7ecce0b8625735fd5f1bc5"' repoLastModified: Tue, 15 Mar 2022 19:45:45 GMT foundInMaster: true category: SDK id: 3f38f5167e5778fdbf306b848f22197f - source: openapi3 tags repository: https://github.com/detain/myadmin-client-vue v3: true id: 263be96f5acdb8019bb4aa99faf938b6 repositoryMetadata: base64Readme: >- IyBJbnRlclNlcnZlciBNeUFkbWluIENsaWVudCBJbnRlcmZhY2UKCkNoZWNrIG91dCB0aGUgW1dJS0ldKHdpa2kpIGZvciBkb2N1bWVudGF0aW9uLgoKIyMgRkFRCgojIyMgR2V0dGluZyBhIGJsYW5rIHBhZ2Ugd2hlbiBsb2FkaW5nIHRoZSBzaXRlCgpDaGVjayB5b3VyIGFkIGJsb2NrZXIgb3IgcHJpdmFjeSBhZGRvbnMsIHRoZXkgbWlnaHQgbmVlZCB0byBiZSBkaXNhYmxlZCBmb3IgdGhpcyBzaXRlLgoKIyMgRmVhdHVyZXMKCi0gV2ViIHZlcnNpb24gZm9yIGJyb3dzZXJzCi0gRGVza3RvcCBhcHAgdmlhIEVsZWN0cm9uCi0gQXV0by11cGRhdGUgc3VwcG9ydAotIExpbnV4ICguQXBwSW1hZ2UsIC5kZWIsIFNuYXApCi0gV2luZG93cyAoLmV4ZSBpbnN0YWxsZXIsIHBvcnRhYmxlKQotIG1hY09TICguZG1nLCAucGtnKQotIEFuZHJvaWQgKC5hcGspCi0gaVBob25lCgojIyBEb3dubG9hZHMKCjwhLS0gRE9XTkxPQURTLVNUQVJUIC0tPgo8IS0tIERPV05MT0FEUy1FTkQgLS0+CgojIyBJbnN0YWxsYXRpb24KCiMjIyBXZWIKMS4gRG93bmxvYWQgdGhlIFpJUAoyLiBFeHRyYWN0IHRvIGFueSBmb2xkZXIKMy4gT3BlbiBgaW5kZXguaHRtbGAgaW4geW91ciBicm93c2VyCgojIyMgRWxlY3Ryb24KRm9sbG93IGluc3RydWN0aW9ucyBmb3IgeW91ciBwbGF0Zm9ybSBhZnRlciBkb3dubG9hZGluZyB0aGUgcmVzcGVjdGl2ZSBpbnN0YWxsZXIgb3IgWklQLgoKIyMjIExpbnV4CmBgYGJhc2gKIyBBcHBJbWFnZQpjaG1vZCAreCBNeUFwcC0qLkFwcEltYWdlCi4vTXlBcHAtKi5BcHBJbWFnZQpgYGAKCiMjIyBIb3cgaXQgV29ya3MKCldlIHVzZSBWdWUgMyB3aXRoIHRoZSBDb21wb3NpdGlvbiBBUEkgdG8gcHJvdmlkZSBhbiBlbnRpcmUgd2Vic2l0ZS9hcHBsaWNhdGlvbiBpbiBhIHNpbmdsZSBwYWdlLiAgVGhpcyBpcyBkb25lIHVzaW5nIGEgY29tYmluYXRpb24gb2YgVnVlIFNGQydzIChTaW5nbGUgRmlsZSBDb21wb25lbnRzKSB3aGljaCBhbmQgdGhlIFZ1ZSBSb3V0ZXIgdG8gY2hhbmdlIHRoZSB1cmwgaW4gdGhlIGJyb3dzZXIgd2l0aG91dCBhY3R1YWxseSBuYXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2UuCgpWYXJpYWJsZXMgYXJlIG1vc3RseSBoYW5kbGVkIGJ5IHJlZmVyZW5jZSAobGlrZSBhIHBvaW50ZXIpLiAgVGhpcyBhbGxvd3MgdXMgdG8gcGFzcyBhcm91bmQgdmFyaWFibGVzIHRoYXQgYXJlIHVrZXB0IHVwIHRvIGRhdGUgd2hlbiBjaGFuZ2VkIGluIG90aGVyIHNlY3Rpb25zIG9mIHRoZSBzaXRlLgoK readmeEtag: '"0486a18a6f56fa4464a2d050028167aae656f258"' readmeLastModified: Tue, 06 Jan 2026 02:08:40 GMT repositoryId: 614741193 description: MyAdmin Vue3 Client Frontend created: '2023-03-16T08:15:57Z' updated: '2026-02-06T03:11:04Z' language: Vue archived: false stars: 3 watchers: 1 forks: 1 owner: detain logo: https://avatars.githubusercontent.com/u/1364504?v=4 repoEtag: '"3b061b8521e342003160ec49b2b7083cf1aa9ef4a8f9152bd5d181e2541df9eb"' repoLastModified: Fri, 06 Feb 2026 03:11:04 GMT category: - SDK - Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/alimahmoud80/ecommerceapi v3: true id: ad48ed01ce4090f7321cd4c0bb586151 repositoryMetadata: base64Readme: >- IyBJbnRyb2R1Y3Rpb24KCi0tLS0tLS0tLS0tLS0KVGhpcyBwcm9qZWN0IGlzIGFuIGV4YW1wbGUgb2YgZWNvbW1lcmNlIEFQSSBidWlsdCB1c2luZyBUeXBlc2NyaXB0LCBFeHByZXNzLCBNeVNRTCBhbmQgZG9jdW1lbnRlZCB1c2luZyBPcGVuQVBJIHNwZWNpZmljYXRpb24uCgojIyBEb2N1bWVudGF0aW9uCgotLS0tLS0tLS0tLS0tCkFsbCBwcm9qZWN0IGRvY3VtZW50YXRpb24gaXMgcHJlc2VudGVkIHVuZGVyIHRoZSBmb2xkZXIgW2RvY3NdKC4vZG9jcy8pCg== readmeEtag: '"623c07cdd84c1e2f64fbdc6313268701a81f808b"' readmeLastModified: Fri, 13 May 2022 03:28:31 GMT repositoryId: 491522033 description: >- Ecommerce API built using Typescript, Express, MySQL and documented using OpenAPI Specifications created: '2022-05-12T13:19:11Z' updated: '2024-12-16T22:57:04Z' language: TypeScript archived: false stars: 2 watchers: 1 forks: 0 owner: AliMahmoud80 logo: https://avatars.githubusercontent.com/u/22307533?v=4 repoEtag: '"16d3414749dfc74a1421808a92aeec957f6d4db42c57ab03a5f89b7e879dbe85"' repoLastModified: Mon, 16 Dec 2024 22:57:04 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/abassel/flask-restglue v3: true repositoryMetadata: base64Readme: >- Cgo8IS0tIFBST0pFQ1QgSEVBREVSL0xPR08gLS0+CjwhLS0gPGJyIC8+IC0tPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgPCEtLQogIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYmFzc2VsL0ZsYXNrLVJlc3RHbHVlIj4KICAgIDxpbWcgc3JjPSJpbWFnZXMvbG9nby5wbmciIGFsdD0iTG9nbyIgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIj4KICA8L2E+CiAgLS0+CiAgPGgxIGFsaWduPSJjZW50ZXIiPkZsYXNrLVJlc3RHbHVlKEFMUEhBKTwvaDE+CgogIDxwIGFsaWduPSJjZW50ZXIiPgogICAgSW50ZWdyYXRlcyA8Yj5GbGFzayArIE1vbmdvREIgKyBPcGVuQVBJPC9iPiBpbiBhIHNpbXBsZSBhbmQgZWxlZ2FudCB3YXkhCiAgICA8YnIgLz4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYWJhc3NlbC5naXRodWIuaW8vRmxhc2stUmVzdEdsdWUvIj48c3Ryb25nPkV4cGxvcmUgdGhlIGRvY3Mgwrs8L3N0cm9uZz48L2E+CiAgICA8YnIgLz4KICAgIDxiciAvPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FiYXNzZWwvRmxhc2stUmVzdEdsdWUjZXhhbXBsZSI+VmlldyBEZW1vPC9hPgogICAgwrcKICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYmFzc2VsL0ZsYXNrLVJlc3RHbHVlL2lzc3VlcyI+UmVwb3J0IEJ1ZzwvYT4KICAgIMK3CiAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWJhc3NlbC9GbGFzay1SZXN0R2x1ZS9pc3N1ZXMiPlJlcXVlc3QgRmVhdHVyZTwvYT4KICA8L3A+CgogIDxwIGFsaWduPSJjZW50ZXIiPgogICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWJhc3NlbC9GbGFzay1SZXN0R2x1ZS9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBYnVpbGQiPjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vYWJhc3NlbC9GbGFzay1SZXN0R2x1ZS93b3JrZmxvd3MvYnVpbGQvYmFkZ2Uuc3ZnP2JyYW5jaD1tYXN0ZXImZXZlbnQ9cHVzaCIgYWx0PSJTdGFycyBCYWRnZSIvPjwvYT4KICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FiYXNzZWwvRmxhc2stUmVzdEdsdWUvcHVsbHMiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMtcHIvYWJhc3NlbC9GbGFzay1SZXN0R2x1ZSIgYWx0PSJQdWxsIFJlcXVlc3RzIEJhZGdlIi8+PC9hPgogICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWJhc3NlbC9GbGFzay1SZXN0R2x1ZS9pc3N1ZXMiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMvYWJhc3NlbC9GbGFzay1SZXN0R2x1ZSIgYWx0PSJJc3N1ZXMgQmFkZ2UiLz48L2E+CiAgPC9wPgoKICA8cCBhbGlnbj0iY2VudGVyIj4KICAgPGEgaHJlZj0iaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L0ZsYXNrLVJlc3RHbHVlLyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL0ZsYXNrLVJlc3RHbHVlLnN2ZyIgYWx0PSJQeXRob24gVmVyc2lvbiIvPjwvYT4KICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FiYXNzZWwvRmxhc2stUmVzdEdsdWUvcmVsZWFzZXMiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9GbGFzay1SZXN0R2x1ZT9jb2xvcj1ncmVlbiZsYWJlbD12ZXJzaW9uIiBhbHQ9IlZlcnNpb24iLz48L2E+CiAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYmFzc2VsL0ZsYXNrLVJlc3RHbHVlL3B1bGxzP3V0Zjg9JUUyJTlDJTkzJnE9aXMlM0FwciUyMGF1dGhvciUzQWFwcCUyRmRlcGVuZGFib3QiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2RlcGVuZGVuY2llcy11cCUyMHRvJTIwZGF0ZS1icmlnaHRncmVlbi5zdmciIGFsdD0iRGVwZW5kZW5jaWVzIFN0YXR1cyIvPjwvYT4KICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1B5Q1FBL2JhbmRpdCI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvc2VjdXJpdHktYmFuZGl0LWdyZWVuLnN2ZyIgYWx0PSJTZWN1cml0eTogYmFuZGl0Ii8+PC9hPgogICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWJhc3NlbC9GbGFzay1SZXN0R2x1ZS9ibG9iL21hc3Rlci8ucHJlLWNvbW1pdC1jb25maWcueWFtbCI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcHJlLS1jb21taXQtZW5hYmxlZC1icmlnaHRncmVlbj9sb2dvPXByZS1jb21taXQmbG9nb0NvbG9yPXdoaXRlIiBhbHQ9IlByZS1jb21taXQiLz48L2E+CiAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYmFzc2VsL0ZsYXNrLVJlc3RHbHVlL2Jsb2IvbWFzdGVyL0xJQ0VOU0UiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL2FiYXNzZWwvRmxhc2stUmVzdEdsdWUiIGFsdD0iTGljZW5zZSIvPjwvYT4KICA8L3A+PC9wPgoKCjwhLS0gVEFCTEUgT0YgQ09OVEVOVFMgLS0+CiMjIENvbnRlbnRzCjxkZXRhaWxzPgogIDxzdW1tYXJ5PlRhYmxlIG9mIENvbnRlbnRzPC9zdW1tYXJ5PgogIDxvbD4KICAgIDwhLS0KICAgIDxsaT4KICAgICAgPGEgaHJlZj0iI2Fib3V0LXRoZS1wcm9qZWN0Ij5BYm91dCBUaGUgUHJvamVjdDwvYT4KICAgICAgPHVsPgogICAgICAgIDxsaT48YSBocmVmPSIjYnVpbHQtd2l0aCI+QnVpbHQgV2l0aDwvYT48L2xpPgogICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgPGEgaHJlZj0iI2dldHRpbmctc3RhcnRlZCI+R2V0dGluZyBTdGFydGVkPC9hPgogICAgICA8dWw+CiAgICAgICAgPGxpPjxhIGhyZWY9IiNwcmVyZXF1aXNpdGVzIj5QcmVyZXF1aXNpdGVzPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9IiNpbnN0YWxsYXRpb24iPkluc3RhbGxhdGlvbjwvYT48L2xpPgogICAgICA8L3VsPgogICAgPC9saT4KICAgIC0tPgogICAgPGxpPjxhIGhyZWY9IiNleGFtcGxlIj5FeGFtcGxlPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI3F1aWNrLXN0YXJ0Ij5RdWljayBTdGFydDwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9IiNyZWZlcmVuY2VzLW5vdGVib29rIj5SZWZlcmVuY2VzPC9hPjwvbGk+CiAgICA8IS0tPGxpPjxhIGhyZWY9IiNyb2FkbWFwIj5Sb2FkbWFwPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI2NvbnRyaWJ1dGluZyI+Q29udHJpYnV0aW5nPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI2xpY2Vuc2UiPkxpY2Vuc2U8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSIjY29udGFjdCI+Q29udGFjdDwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9IiNhY2tub3dsZWRnZW1lbnRzIj5BY2tub3dsZWRnZW1lbnRzPC9hPjwvbGk+LS0+CiAgPC9vbD4KPC9kZXRhaWxzPgoKCgojIEV4YW1wbGUKCkZvciBhIGZ1bGxzdGFjayBib2lsZXJwbGF0ZSwgdmlzaXQgW2h0dHBzOi8vZ2l0aHViLmNvbS9hYmFzc2VsL0ZsYXNrX1Jlc3RHbHVlX1N2ZWx0ZV9Eb2NrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9hYmFzc2VsL0ZsYXNrX1Jlc3RHbHVlX1N2ZWx0ZV9Eb2NrZXIpCgpgYGBweXRob24KaW1wb3J0IG1vbmdvZW5naW5lIGFzIG1vbmdvCmZyb20gZmxhc2tfcmVzdF9nbHVlIGltcG9ydCBGbGFza1Jlc3RHbHVlCgptb25nby5jb25uZWN0KCJweWdsdWUiLCBob3N0PSdsb2NhbGhvc3Q6MjcwMTcnKQoKYXBpID0gRmxhc2tSZXN0R2x1ZSgpCgoKQGFwaS5yZXN0X21vZGVsKCkKY2xhc3MgVXNlcihtb25nby5Eb2N1bWVudCk6CiAgIyBpZCA9IG1vbmdvLlN0cmluZ0ZpZWxkKHByaW1hcnlfa2V5PVRydWUpCiAgZW1haWwgPSBtb25nby5TdHJpbmdGaWVsZChwcmltYXJ5X2tleT1UcnVlKQogIHBhc3N3b3JkID0gbW9uZ28uU3RyaW5nRmllbGQoKQoKCmFwaS5ydW4oKQoKYGBgCgpHbyB0byBbaHR0cDovLzEyNy4wLjAuMTo1MDAwL3NwZWNfZG9jXShodHRwOi8vMTI3LjAuMC4xOjUwMDAvc3BlY19kb2MpIG9yIFtodHRwOi8vMTI3LjAuMC4xOjUwMDAvc3BlY19yZG9jXShodHRwOi8vMTI3LjAuMC4xOjUwMDAvc3BlY19yZG9jKSB0byBzZWUgdGhlIGRvY3VtZW50YXRpb24gYmVsb3c6CgohW1N3YWdnZXIgVUldKGh0dHBzOi8vYWJhc3NlbC5naXRodWIuaW8vRmxhc2stUmVzdEdsdWUvc3dhZ2dlci5wbmcpCgohW1JlVGV4dCBVSV0oaHR0cHM6Ly9hYmFzc2VsLmdpdGh1Yi5pby9GbGFzay1SZXN0R2x1ZS9yZG9jLnBuZykKCiMjIyBFeHBlY3RlZCBvdXRwdXQ6CgpgYGBiYXNoCmN1cmwgLXYgLWQgJ3siZW1haWwiOiJhQGIuY29tIiwicGFzc3dvcmQiOiJ4eXoifScgXAogICAgIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIGh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC91c2VyCgojPCBIVFRQLzEuMCAyMDAgT0sKIzwgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uCiM8IENvbnRlbnQtTGVuZ3RoOiA0NQojPAojewojICAiX2lkIjogImFAYi5jb20iLAojICAicGFzc3dvcmQiOiAieHl6IgojfQoKCmN1cmwgLXYgaHR0cDovL2xvY2FsaG9zdDo1MDAwL3VzZXJzCiM8IEhUVFAvMS4wIDIwMCBPSwojPCBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24KIzwgQ29udGVudC1MZW5ndGg6IDU3CiM8CiNbCiMgIHsKIyAgICAiX2lkIjogImFAYi5jb20iLAojICAgICJwYXNzd29yZCI6ICJ4eXoiCiMgIH0KI10KCgpjdXJsIC12IGh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC91c2VyL2FAYi5jb20KIzwgSFRUUC8xLjAgMjAwIE9LCiM8IENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgojPCBDb250ZW50LUxlbmd0aDogNDUKIzwKI3sKIyAgIl9pZCI6ICJhQGIuY29tIiwKIyAgInBhc3N3b3JkIjogInh5eiIKI30KCgpjdXJsIC12IC1YIFBVVCAtZCAneyJwYXNzd29yZCI6Im5ld19wYXNzIn0nIFwKICAgICAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiBodHRwOi8vbG9jYWxob3N0OjUwMDAvdXNlci9hQGIuY29tCiM8IEhUVFAvMS4wIDIwMCBPSwojPCBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24KIzwgQ29udGVudC1MZW5ndGg6IDUwCiM8CiN7CiMgICJfaWQiOiAiYUBiLmNvbSIsCiMgICJwYXNzd29yZCI6ICJuZXdfcGFzcyIKI30KCgpjdXJsIC12IC1YIERFTEVURSBodHRwOi8vbG9jYWxob3N0OjUwMDAvdXNlci9hQGIuY29tCiM8IEhUVFAvMS4wIDIwMCBPSwojPCBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24KIzwgQ29udGVudC1MZW5ndGg6IDQ1CiM8CiN7CiMgICJfaWQiOiAiYUBiLmNvbSIsCiMgICJwYXNzd29yZCI6ICJ4eXoiCiN9CmBgYAoKCiMgUXVpY2sgU3RhcnQKClJlcXVpcmVzICoqZG9ja2VyKiogYW5kICoqcHl0aG9uIDMuOSoqCgojIyMgMSAtIGluc3RhbGwgbG9jYWwgTW9uZ29EQgpgYGBiYXNoCm1rZGlyIC1wIH4vbW9uZ29kYXRhCgpkb2NrZXIgcnVuIC1kIC0tcm0gLXAgMjcwMTc6MjcwMTcgLXYgfi9tb25nb2RhdGE6L2RhdGEvZGIgLS1uYW1lIG1vbmdvZGIgbW9uZ28KYGBgCgojIyMgMiAtIEluc3RhbGwgdGhpcyBsaWJyYXJ5CmBgYGJhc2gKcGlwIGluc3RhbGwgRmxhc2stUmVzdEdsdWUKYGBgCgojIyMgMyAtIFB1bGwgdGhlIGNvZGUKYGBgYmFzaApjdXJsIC1zIC1PIC1MICBodHRwczovL2dpdGh1Yi5jb20vYWJhc3NlbC9GbGFzay1SZXN0R2x1ZS9ibG9iL21hc3Rlci9leGFtcGxlL3R1dDAxX2hlbGxvX3dvcmxkLnB5CmN1cmwgLXMgLU8gLUwgIGh0dHBzOi8vZ2l0aHViLmNvbS9hYmFzc2VsL0ZsYXNrLVJlc3RHbHVlL2Jsb2IvbWFzdGVyL2V4YW1wbGUvdHV0MDFfaGVsbG9fd29ybGQuc2gKYGBgCgojIyMgNCAtIFJ1biB0aGUgY29kZQpgYGBiYXNoCnB5dGhvbiB0dXQwMV9oZWxsb193b3JsZC5weQpgYGAKSW4gYW5vdGhlciB0ZXJtaW5hbCB3aW5kb3cKCmBgYGJhc2gKYmFzaCB0dXQwMV9oZWxsb193b3JsZC5zaApgYGAKCiMjIFJvYWQgTWFwIDpjYXI6CgotIEV2YWx1YXRlIGh0dHBzOi8vdGVzdGRyaXZlbi5pby9ibG9nL2Zhc3RhcGktbW9uZ28vCi0gRXZhbHVhdGUgaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkLUxvci9GYXN0QVBJLVB5ZGFudGljLU1vbmdvX1NhbXBsZV9DUlVEX0FQSQotIEV2YWx1YXRlIGh0dHBzOi8vYXJ0MDQ5LmdpdGh1Yi5pby9vZG1hbnRpYy8KLSBFeGFtcGxlIHVzZXIgbW9kZWwgdGhhdCBzdG9yZXMgcGFzc3dvcmQgYXMgaGFzaCAtIGh0dHBzOi8vYWFyb25sdW5hLmRldi9zZXJpZXMvZmxhc2stYXBpLXR1dG9yaWFsL3BhcnQtMi8KLSBPUk0gZXhhbXBsZXMgZm9yIEZhc3RBUEkgLSBodHRwczovL2dpdGh1Yi5jb20vbWpoZWEwL2F3ZXNvbWUtZmFzdGFwaSNvcm1zCi0gT0RNIGV4YW1wbGVzIGZvciBGYXN0QVBJIC0gaHR0cHM6Ly9naXRodWIuY29tL21qaGVhMC9hd2Vzb21lLWZhc3RhcGkjb2RtcwotIEF1dGhvcml6YXRpb24gYXQgcm93IGxldmVsIC0gaHR0cHM6Ly9naXRodWIuY29tL21qaGVhMC9hd2Vzb21lLWZhc3RhcGk/dGFiPXJlYWRtZS1vdi1maWxlI2F1dGgKLSBEZXZlbG9wIHBhZ2luYXRpb24KLSBEZXZlbG9wIFB5ZGFudGljCi0gR29vZ2xlIHNlYXJjaCBhYm91dCBmbGFzayBhcGkgd2l0aCBzcWxhbGNoZW15IGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9Zmxhc2srYXBpK3NxbGFsY2hlbXkrdHV0b3JpYWwKLSBFdmFsdWF0ZSBmbGFzayBhcGkgd2l0aCBtaWdyYXRpb24gaHR0cHM6Ly9hYXJvbmx1bmEuZGV2L3Nlcmllcy9mbGFzay1hcGktdHV0b3JpYWwvcGFydC0yLwotIERldmVsb3AgdG9vbHMgdG8gZ2VuZXJhdGUgdHlwZXNjcmlwdCBvciBzdmVsdGUgc3R1YnMKLSBDcmVhdGUgYSB0ZW1wbGF0ZSBsaWtlIGh0dHBzOi8vZ2l0aHViLmNvbS90aWFuZ29sby9mdWxsLXN0YWNrLWZhc3RhcGktdGVtcGxhdGUKCiMjIFJlZmVyZW5jZXMgOm5vdGVib29rOgotIFtGbGFza19SZXN0R2x1ZV9TdmVsdGVfRG9ja2VyIGJvaWxlcnBsYXRlXShodHRwczovL2dpdGh1Yi5jb20vYWJhc3NlbC9GbGFza19SZXN0R2x1ZV9TdmVsdGVfRG9ja2VyKQotIFtPcGVuQVBJIDMuMC4zXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMy5tZCkKLSBbRmxhc2tdKGh0dHA6Ly9mbGFzay5wb2Nvby5vcmcpCi0gW01vbmdvZW5naW5lXShodHRwczovL2dpdGh1Yi5jb20vTW9uZ29FbmdpbmUvbW9uZ29lbmdpbmUpCg== readmeEtag: '"e3aa73f56d255abb6ac8c121f50b90ce95f510c5"' readmeLastModified: Mon, 13 Jan 2025 02:31:34 GMT repositoryId: 326479351 description: >- 🚀 Integrates Flask + MongoDB(mongoengine) + OpenAPI in a simple and elegant way! created: '2021-01-03T18:56:36Z' updated: '2025-02-25T19:44:15Z' language: Python archived: false stars: 2 watchers: 1 forks: 0 owner: abassel logo: https://avatars.githubusercontent.com/u/11035784?v=4 license: MIT repoEtag: '"e7610f6c80c5463fd554b7c476a30f53076f7001ce15035c83ce91d533366149"' repoLastModified: Tue, 25 Feb 2025 19:44:15 GMT foundInMaster: true category: Server Implementations id: e16ab98bb1345dc9c96aeb6124d53383 - source: openapi3 tags repository: https://github.com/jshahriddhi/simple-flask-project v3: true repositoryMetadata: base64Readme: >- IyBzaW1wbGUtZmxhc2stcHJvamVjdAoKU2V0dXA6IGNyZWF0ZSBhIHB5dGhvbiB2aXJ0dWFsIGVudmlyb25tZW50IGFuZCBpbnN0YWxsIHRoZSByZXF1aXJlbWVudHM6CgoJdmlydHVhbGVudiAtLXB5dGhvbj1weXRob24zLjYgLnZlbnYKCXNvdXJjZSAudmVudi9iaW4vYWN0aXZhdGUKCXBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKCgpHZW5lcmF0ZSBPcGVuQVBJIHNwZWMgZnJvbSBGbGFzayByb3V0ZXM6CgoJcHl0aG9uIGdlbmVyYXRlX29wZW5hcGlfc3BlYy5weQoKICAgIApWaWV3IHRoZSBPcGVuQVBJIHNwZWMgdXNpbmcgU3dhZ2dlci1VSToKCiAgICBkb2NrZXIgcnVuIC0tcm0gLXAgOTAwMDo4MDgwIC0tbmFtZSBzd2FnZ2VyLXVpIC1lIFNXQUdHRVJfSlNPTj0vYXBpX2RvY3Mvb3BlbmFwaS5qc29uIC12ICQoUFdEKS9hcGlfZG9jczovYXBpX2RvY3Mgc3dhZ2dlcmFwaS9zd2FnZ2VyLXVpCg== readmeEtag: '"c52b339bac8c3d27832ffe58c714eed7e434a986"' readmeLastModified: Mon, 06 Aug 2018 01:50:04 GMT repositoryId: 138524469 description: Generate OpenAPI spec from Flask routes created: '2018-06-25T00:08:10Z' updated: '2025-10-06T09:24:51Z' language: Python archived: false stars: 2 watchers: 0 forks: 0 owner: jshahriddhi logo: https://avatars.githubusercontent.com/u/4574087?v=4 repoEtag: '"55ac32adadec8ba785f64799be1940a3360517120363a314d20e0308a3ec0e61"' repoLastModified: Mon, 06 Oct 2025 09:24:51 GMT foundInMaster: true category: - Converters - Server Implementations id: ac92023d1ac30ff1e4781e3e08f380cf oldLocations: - https://github.com/riddhi89/simple-flask-project - source: openapi3 tags repository: https://github.com/talentplatforms/ropen_pi v3: true repositoryMetadata: base64Readme: >- WyFbQ29udmVudGlvbmFsIENvbW1pdHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQ29udmVudGlvbmFsJTIwQ29tbWl0cy0xLjAuMC15ZWxsb3cuc3ZnKV0oaHR0cHM6Ly9jb252ZW50aW9uYWxjb21taXRzLm9yZykKCiMgUm9wZW5QaQoKVGhpcyBpcyBhIGZvcmsgb2YgdGhlIFtvcGVuLWFwaS1yc3dhZyBnZW1dKGh0dHBzOi8vZ2l0aHViLmNvbS9qZGFuaWVsaWFuL29wZW4tYXBpLXJzd2FnKS4KSXQncyBhIGdvb2QgZ2VtIGluIGFuIGVhcmx5IGRldmVsb3BtZW50IHN0YWdlLiBUaGUgb3JpZ2luYWwgW3Jzd2FnXShodHRwczovL2dpdGh1Yi5jb20vcnN3YWcvcnN3YWcpIGdlbSBhbmQgdGhlIG9wZW4gYXBpIGZvcmsgYSBoYXZlIG9uZSB0aGluZyBpbiBjb21tb246IHRoZXkgZG8gdG8gbXVjaC4KClRoZXJlIGFyZSBlYXNpZXIgd2F5cyB0byBnZXQgYW4gaW5zdGFuY2Ugb2YgdGhlIHN3YWdnZXIgdWkgcnVubmluZyB0aGFuIGJ1aWxkaW5nIGl0IGFzIGEgcmFpbHMgZW5naW5lLgoKSW4gZnV0dXJlIHJlbGVhc2VzIHRoaXMgZ2VtIHdpbGwgcHJvdmlkZSBhIGJhc2ljIGV4YW1wbGUgb2YgaG93IHRoaXMgd2lsbCBsb29rIGxpa2UuCgpJbiB0aGUgbWVhbiB0aW1lIHRoaXMgd2lsbCByZW1haW4gYSBXSVAgOikKCiMjIEluc3RhbGxhdGlvbgoKQWRkIHRoaXMgbGluZSB0byB5b3VyIGFwcGxpY2F0aW9uJ3MgR2VtZmlsZToKCmBgYHJ1YnkKZ2VtICdyb3Blbl9waScKYGBgCgpBbmQgdGhlbiBleGVjdXRlOgoKICAgICQgYnVuZGxlCgpPciBpbnN0YWxsIGl0IHlvdXJzZWxmIGFzOgoKICAgICQgZ2VtIGluc3RhbGwgcm9wZW5fcGkKCiMjIFVuc3VwcG9ydGVkCgpEdWUgdG8gbWFzc2l2ZSBjaGFuZ2VzIGluIHRoZSBzcGVjLCB0aGlzIGdlbSBjdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCBhbnkgdHlwZSBvZiBjb2xsZWN0aW9uIHF1ZXJpZXMuCgojIyBVc2FnZQoKVE9ETzogV3JpdGUgdXNhZ2UgaW5zdHJ1Y3Rpb25zIGhlcmUKCiMjIERldmVsb3BtZW50CgpTbyB5b3UgaGF2ZSBkZWNpZGVkIHRvIGNvbnRyaWJ1dGU/ISBUaGlzIHNvdW5kcyBncmVhdCEKVG8gbWFrZSBpdCBzdXBlciBlYXN5IHRvIHN0YXJ0IHRoZSBvbmx5IHRoaW5nIHlvdSBoYXZlIHRvIGhhdmUgaW5zdGFsbGVkIGlzIERvY2tlci4KVGhlbiB5b3UgY2FuIGp1c3QgdXNlIHRoZSBiYXR0ZXJpZXMtaW5jbHVkZWQgRGV2Q29udGFpbmVyIGZvciBWU0NvZGUuCgpUaGVyZSBpcyBhIGxvdCBvZiBkb2N1bWVudGF0aW9uIG9uIGdldHRpbmcgc3RhcnRlZCB3aXRoIHRoaXMga2luZCBvZiBkZXZlbG9wbWVudC4KSWYgeW91IGFyZSBraW5kIG9mIG5ldyB0byB0aGlzIHBsZWFzZSBtYWtlIHN1cmUgdG8gcmVhZCB0aGUgb2ZmaWNhbCBbZG9jcyBvdmVyIGF0IE1pY3Jvc29mdF0oaHR0cHM6Ly9jb2RlLnZpc3VhbHN0dWRpby5jb20vZG9jcy9yZW1vdGUvY29udGFpbmVycykuCgojIyBDb250cmlidXRpbmcKCkJ1ZyByZXBvcnRzIGFuZCBwdWxsIHJlcXVlc3RzIGFyZSB3ZWxjb21lIG9uIEdpdEh1YiBhdCBodHRwczovL2dpdGh1Yi5jb20vdGFsZW50cGxhdGZvcm1zL3JvcGVuX3BpLgoKIyMgTGljZW5zZQoKVGhlIGdlbSBpcyBhdmFpbGFibGUgYXMgb3BlbiBzb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBbTUlUIExpY2Vuc2VdKGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKS4K readmeEtag: '"614a45628426de892e0a70c7be311c561e0fe392"' readmeLastModified: Tue, 29 Nov 2022 14:13:17 GMT repositoryId: 232335523 description: Rspec and OpenAPI Integration created: '2020-01-07T13:55:14Z' updated: '2021-11-03T11:34:42Z' language: Ruby archived: false stars: 2 watchers: 2 forks: 0 owner: talentplatforms logo: https://avatars.githubusercontent.com/u/55129375?v=4 license: MIT repoEtag: '"ef61dbdb195c9b7ff0edc587a1c04e97b35c433a3b71e0143b23f6eaf053de3b"' repoLastModified: Wed, 03 Nov 2021 11:34:42 GMT foundInMaster: true category: Parsers id: 2927c6148c140508477dc6e6b9a038f6 - source: openapi3 tags repository: https://github.com/michaelsauter/go-oas-server v3: true repositoryMetadata: base64Readme: >- IyBnby1vYXMtc2VydmVyCgpHZW5lcmF0ZSBHbyBzZXJ2ZXIgY29kZSBmcm9tIGFuIFtPcGVuQVBJIDMgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vKS4KClRoaXMgcHJvamVjdCBpcyBmb3IgeW91IGlmIHlvdSB3YW50IHRvIHdyaXRlIGEgUkVTVCBBUEkgaW4gR28sIGFuZCB5b3UgdmFsdWUgdGhlIGZvbGxvd2luZzoKCiogRGVzaWduLWZpc3QgYXBwcm9hY2ggdXNpbmcgT3BlbkFQSSAzCiogVHlwZSBzYWZldHk6IGF2b2lkIHVzaW5nIGBjb250ZXh0LkNvbnRleHRgIGFuZCBgaW50ZXJmYWNle31gIGFzIG11Y2ggYXMgcG9zc2libGUKKiBDb21waWxlci1kcml2ZW4gZGV2ZWxvcG1lbnQ6IGxldCB0aGUgZ2VuZXJhdGVkIGNvZGUgZ3VpZGUgeW91IHdoYXQgeW91IG5lZWQgdG8gaW1wbGVtZW50CiogQXBwcm9hY2hlcyBsaWtlIFtIb3cgSSB3cml0ZSBHbyBIVFRQIHNlcnZpY2VzIGFmdGVyIHNldmVuIHllYXJzXShodHRwczovL21lZGl1bS5jb20vc3RhdHVzY29kZS9ob3ctaS13cml0ZS1nby1odHRwLXNlcnZpY2VzLWFmdGVyLXNldmVuLXllYXJzLTM3YzIwODEyMjgzMSkgYnV0IGRvbid0IHdhbnQgdG8gZGVhbCB3aXRoIHJvdXRpbmcsIHBhcmFtZXRlciB2YWxpZGF0aW9uIGFuZCBkb2N1bWVudGF0aW9uCgojIyBVc2FnZQoKMS4gRGVzaWduIHlvdXIgQVBJLCBlLmcuIGluIHRoZSBbU3dhZ2dlciBFZGl0b3JdKGh0dHBzOi8vc3dhZ2dlci5pby90b29scy9zd2FnZ2VyLWVkaXRvci8pCjIuIEV4cG9ydCB0aGUgc3BlY2lmaWNhdGlvbiBhcyBKU09OCjMuIEdlbmVyYXRlIEdvIGNvZGUgdmlhIGBnby1vYXMtc2VydmVyIGdlbmVyYXRlIC0tZmlsZSBhcGkuanNvbiAtLW91dHB1dC1kaXI9Z2VuYAo0LiBJbXBsZW1lbnQgeW91ciBzZXJ2ZXIgYW5kIGl0cyBlbmRwb2ludHM6CgpgYGAKcGFja2FnZSBtYWluCgp0eXBlIG15U2VydmVyIHN0cnVjdCB7fQoKZnVuYyAocyAqbXlTZXJ2ZXIpIE1pZGRsZXdhcmVzKCkgZ2VuLk1pZGRsZXdhcmVzIHsKCXJldHVybiBNaWRkbGV3YXJlc3t9Cn0KCmZ1bmMgKHMgKnNlcnZlcikgSGFuZGxlUGV0SW5kZXgoKSAoZ2VuLk1pZGRsZXdhcmVzLCBnZW4uQVBJT3BlcmF0aW9uUGV0SW5kZXgpIHsKCXJldHVybiBuaWwsIGZ1bmModyBodHRwLlJlc3BvbnNlV3JpdGVyLCByICpodHRwLlJlcXVlc3QsIHAgZ2VuLlBhcmFtZXRlcnNQZXRJbmRleCkgewoJCS8vIEltcGxlbWVudCB5b3VyIGxvZ2ljIGhlcmUKCX0KfQoKZnVuYyBtYWluKCkgewoJcyA6PSBOZXdPcGVuQVBJU2VydmVyKCZteVNlcnZlcnt9KQoJcy5Cb290KCkKCWxvZy5GYXRhbChodHRwLkxpc3RlbkFuZFNlcnZlKCI6ODAwMCIsIHMpCn0KYGBgCgojIyBDdXJyZW50IFN0YXRlCgpUaGlzIHByb2plY3QgaXMgY3VycmVudGx5IG9ubHkgbGl0dGxlIG1vcmUgdGhhbiBhIHByb29mIG9mIGNvbmNlcHQuIFdoaWxlIHRoZSBnZW5lcmFsIGJ1aWxkaW5nIGJsb2NrcyBhcmUgaW4gcGxhY2UsIGEgbG90IG9mIHRoZSBBUEkgbWF5IGNoYW5nZS4gRnVydGhlciwgc29tZSBhcmVhcyBhcmUgbm90IGV2ZW4gY292ZXJlZCB5ZXQgc3VjaCBhcyBnZW5lcmF0aW5nIHN1cHBvcnQgZm9yIHJlc3BvbnNlcy4KCkhlcmUncyBhIChub24tZXhoYXVzdGl2ZSkgbGlzdCBvZiB3aGF0J3MgbGVmdCB0byBkbzoKKiBTdXBwb3J0IG1vcmUgdHlwZXMgYW5kIHZhbGlkYXRpb25zCiogRW5kcG9pbnQtbGV2ZWwgR28gZGVwZW5kZW5jaWVzCiogUmVzcG9uc2VzCiogSGFuZGxpbmcgbW9yZSBjb21wb25lbnRzCiogTWFrZSBpdCBlYXNpZXIgZm9yIHVzZXJzIHRvIGZpZ3VyZSBvdXQgd2hhdCB0byBpbXBsZW1lbnQgYWZ0ZXIgY29kZSBnZW5lcmF0aW9uCiogTW9yZSB0ZXN0aW5nIHN1cHBvcnQKKiBCZXR0ZXIgbmFtaW5nIHN1cHBvcnQgKGF2b2lkIGJhZCBjaGFycywgYW5kIHN1cHBvcnQgW2NvbW1vbiBpbml0aWFsaXNtc10oaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9saW50L2Jsb2IvOGY0NWY3NzZhYWYxOGNlYmM4ZDY1ODYxY2M3MGMzM2M2MDQ3MTk1Mi9saW50LmdvI0w3NzEpKS4KCkFsc28sIGdvLW9hcy1zZXJ2ZXIgY2Fubm90IGdlbmVyYXRlIGNvZGUgZm9yIGV2ZXJ5IHBvc3NpYmxlIHNwZWNpZmljYXRpb24uIEluIHBhcnQsIHRoaXMgbGltaXRhdGlvbiBleGlzdHMgdG8gYXZvaWQgY29tcGxleGl0eS4KCmdvLW9hcy1zZXJ2ZXIgKGN1cnJlbnRseSkgZG9lcyBub3Qgc3VwcG9ydDoKCiogUGFyYW1ldGVyIHNlcmlhbGl6YXRpb24uCiogUGFyYW1ldGVycyBkZWZpbmVkIHdpdGggYGNvbnRlbnRgIGluc3RlYWQgb2YgYHNjaGVtYWAuCiogTGlua3MuCiogQ2FsbGJhY2tzLgoqIFJlc3BvbnNlcyAoaG93ZXZlciBzdXBwb3J0IGZvciB0aGlzIGlzIHBsYW5uZWQpLgoqIFVzZSBvZiBgb25lT2ZgLCBgYW55T2ZgLCBgYWxsT2ZgIGFueXdoZXJlLgoKVGhlcmUgYXJlIGZ1cnRoZXIgZWdkZSBjYXNlcyBmb3Igc3VyZSwgaWYgeW91IHRoaW5rIHlvdSd2ZSBydW4gaW50byBvbmUsIHBsZWFzZSBvcGVuIGFuIGlzc3VlLgoKCiMjIyBXaHkgZ2VuZXJhdGUgY29kZSBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uLCBhbmQgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kPwoKKiBUeXBpY2FsbHksIGl0IGlzIGZhc3RlciB0byBkZWZpbmUgdGhlIHNwZWNpZmljYXRpb24gb2YgYW4gQVBJIHRoYW4gdG8gaW1wbGVtZW50IGl0LgoqIElmIHlvdSBoYXZlIGFjY2VzcyB0byBmdXR1cmUgY29uc3VtZXJzIG9mIHRoZSBBUEkgZW5kcG9pbnQocykgYmVpbmcgZGVzaWduZWQsIGl0IGlzIGVhc2llciB0byBnYXRoZXIgZmVlZGJhY2sgYmFzZWQgb24gdGhlIHNwZWNpZmljYXRpb24uIEhhdmluZyBvbmx5IGNvZGUgaXMgbm90IGEgZ29vZCBiYXNlIGZvciBkaXNjdXNzaW9uLgoqIEl0IGlzIG5vbi10cml2aWFsIHRvIGNvbnRyb2wgZXZlcnkgYXNwZWN0IG9mIHRoZSBzcGVjaWZpY2F0aW9uIGZyb20gY29kZS4gT2Z0ZW4gdGhpcyBpbnZvbHZlcyB1c2luZyBsb3RzIG9mIGFubm90YXRpb25zIGluIG90aGVyIGxhbmd1YWdlcy4gRm9yIGV4YW1wbGUsIHBhcmFtZXRlciBjb25zdHJhaW50cyBhcmUgZWFzeSB0byBnZW5lcmF0ZSBmcm9tIHNwZWNpZmljYXRpb24sIGJ1dCBoYXJkIHRvIGdlbmVyYXRlIGZyb20gY29kZS4KKiBXaGVuIHRoZSBzcGVjaWZpY2F0aW9uIGlzIGdlbmVyYXRlZCwgaXQgaXMgb2Z0ZW4gbm90IGxvb2tlZCBhdCBieSB0aGUgQVBJIGRldmVsb3BlciwgYW5kIHRoZXJlZm9yZSBub3QgYXMgZGV0YWlsZWQgYXMgaXQgY291bGQgYmUuCiogV3JpdGluZyBBUEkgZW5kcG9pbnRzIGluIEdvIGludm9sdmVzIGEgbG90IG9mIGJvaWxlcnBsYXRlLCB3aGljaCBpcyBib3JpbmcgdG8gd3JpdGUuIEEgZ2VuZXJhdG9yIGZpdHMgbmljZWx5LgoKIyMgV2hhdCBpcyB0aGUgZGlmZmVyZW5jZSB0byBnby1zd2FnZ2VyPwoKKiBnby1zd2FnZ2VyIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIFN3YWdnZXIgMi4wLCBub3QgT3BlbkFQSSAzLgoqIGdvLXN3YWdnZXIgbG9va3MgaHVnZSBhbmQgSSB3YW50ZWQgc29tZXRoaW5nIHNtYWxsZXIgdGhhdCBmZWVscyBtb3JlIGxpa2Ugd3JpdGluZyBgbmV0L2h0dHBgIGhhbmRsZXJzLgoqIGdvLW9hcy1zZXJ2ZXIgZG9lcyBub3QgZ2VuZXJhdGUgY2xpZW50cy4K readmeEtag: '"8d306d0e9ebf27fd70c6c86bc56bdbad3df99aec"' readmeLastModified: Tue, 06 Aug 2019 19:15:53 GMT repositoryId: 199204368 description: Go server generator from OpenAPI 3 created: '2019-07-27T19:12:45Z' updated: '2026-01-31T12:19:06Z' language: Go archived: false stars: 3 watchers: 1 forks: 0 owner: michaelsauter logo: https://avatars.githubusercontent.com/u/215455?v=4 repoEtag: '"c6d8af9f2c0218c455d094b475ab71e14ca983073980dc3bc7ac7bcc49e595b5"' repoLastModified: Sat, 31 Jan 2026 12:19:06 GMT foundInMaster: true category: Server Implementations id: 88ce19dbf86d450a1530d74394f6eff6 - source: openapi3 tags repository: https://github.com/ebln/guzzle-openapi-middleware v3: true id: 1d17b4d627cb3cf6ea048171fb9654a0 repositoryMetadata: base64Readme: >- T3BlbkFQSSBWYWxpZGF0aW9uIE1pZGRsZXdhcmUgZm9yIEd1enpsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpbVGhpcyBtaWRkbGV3YXJlIG9ubHkgYWRhcHRzIGxlYWd1ZS9vcGVuYXBpLXBzcjctdmFsaWRhdG9yIGZvciBHdXp6bGUsIHBsZWFzZSBzZWUgdGhlaXIgcHJvamVjdCBmb3IgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3RoZXBocGxlYWd1ZS9vcGVuYXBpLXBzcjctdmFsaWRhdG9yI3JlYWRtZSkKCiMjIEluc3RhbGxhdGlvbgoKYGBgCmNvbXBvc2VyIHJlcXVpcmUgZWJsbi9ndXp6bGUtb3BlbmFwaS1taWRkbGV3YXJlCmBgYAoKIyMgVXNhZ2UKCmBgYAp1c2UgR3V6emxlSHR0cFxDbGllbnQ7CnVzZSBHdXp6bGVIdHRwXEhhbmRsZXJTdGFjazsKdXNlIExlYWd1ZVxPcGVuQVBJVmFsaWRhdGlvblxQU1I3XFZhbGlkYXRvckJ1aWxkZXI7CgokYnVpbGRlciA9IG5ldyBWYWxpZGF0b3JCdWlsZGVyKCk7Ci8vIGNhbGwgZWl0aGVyIHNldFNjaGVtYUZhY3RvcnkoKSBvciBvbmUgb2YgdGhlIGZyb20qKCkgbWV0aG9kcyBvcHRpb25hbGx5IGFkZCBhIFBTUjYgY2FjaGUKLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vdGhlcGhwbGVhZ3VlL29wZW5hcGktcHNyNy12YWxpZGF0b3IjcmVhZG1lCgokbWlkZGxld2FyZSA9IG5ldyBNaWRkbGV3YXJlKCRidWlsZGVyLT5nZXRSZXF1ZXN0VmFsaWRhdG9yKCksICRidWlsZGVyLT5nZXRSZXNwb25zZVZhbGlkYXRvcigpKTsKCi8vIEBzZWUgaHR0cHM6Ly9kb2NzLmd1enpsZXBocC5vcmcvZW4vc3RhYmxlL2hhbmRsZXJzLWFuZC1taWRkbGV3YXJlLmh0bWwjbWlkZGxld2FyZQokc3RhY2sgPSBIYW5kbGVyU3RhY2s6OmNyZWF0ZSgpOwokc3RhY2stPnB1c2goJG1pZGRsZXdhcmUsICdvcGVuYXBpX3ZhbGlkYXRpb24nKTsKJGNsaWVudCA9IG5ldyBDbGllbnQoWydoYW5kbGVyJyA9PiAkc3RhY2tdKTsKYGBgCg== readmeEtag: '"d5d2c88ab08fa482a5d092955583aab3476ac33f"' readmeLastModified: Sat, 20 Aug 2022 13:33:05 GMT repositoryId: 526515209 description: >- OpenAPI validation middleware for Guzzle, adapting league/openapi-psr7-validator created: '2022-08-19T07:59:26Z' updated: '2024-04-25T08:55:26Z' language: PHP archived: false stars: 2 watchers: 1 forks: 0 owner: ebln logo: https://avatars.githubusercontent.com/u/34722048?v=4 license: MIT repoEtag: '"40ecab528c0fad73cba867a354f848bc6e32a8851ee4c8d5fc23a2b2364f03f8"' repoLastModified: Thu, 25 Apr 2024 08:55:26 GMT category: Data Validators foundInMaster: true - source: openapi3 tags repository: https://github.com/goodluckxu-go/openapi v3: true id: ad35a471acd8b722cf9fe035a6535cbb repositoryMetadata: base64Readme: >- IyBvcGVuYXBpMyDmlofmoaPnlJ/miJAKCuS9v+eUqGFzdOivreazleino+aekOWZqOino+aekOazqOino++8jOagueaNrm9wZW5hcGkz6K+t5rOV55Sf5oiQCgojIyDlvJXnlKgocXVvdGUpCi0gZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkKCgojIyDnlKjms5UodXNhZ2UpCuWkmuihjOazqOmHiuWPr+S7peS9v+eUqCB8LSDnrKblj7fvvIzlkoxA5qCH6aKY5LiA6KGM77yM5LiN6IO95pyJ5YW25LuW5YaF5a6577yM55+l6YGT6YGH5Yiw5LiL5LiA5Liq5Y+v55So5qCH562+5oiW6ICF5Y2V54us5LiA6KGM5Li6LXzjgILkvovlpoLvvJoKfn5+Z28KLy8gQGluZm8udGl0bGU6IHwtCi8vICAg6L+Z5piv5qCH6aKYCi8vIEBpbmZvLmRlc2NyaXB0aW9uOiB8LQovLyAgIOi/meaYr+aPj+i/sAovLyAgLXwKLy8g6L+Z6YeM55qE5rOo6YeK5piv5peg5pWI55qE77yM5LiK6Z2i5bey57uP57uI5q2i77yM5aaC5p6c5LiN5Lqb57uI5q2i56ym5Y+35YiZ5Li65LiK6Z2i5qCH562+55qE5rOo6YeKCi8vIEBpbmZvLnZlcnNpb246IOi/meaYr+eJiOacrOWPtwp+fn4KCiMjIyDlronoo4Xlkb3ku6QKfn5+c2hlbGwKZ28gaW5zdGFsbCBnaXRodWIuY29tL2dvb2RsdWNreHUtZ28vb3BlbmFwaS9jbWQvYXBpZ2VuQGxhdGVzdAp+fn4KCiMjIyBkb2NzLmdv5paH5qGj5rOo6YeK6K+05piOCn5+fmdvCi8vIEBpbmZvLnRpdGxlOiDmoIfpopgKLy8gQGluZm8uZGVzY3JpcHRpb246IOaPj+i/sAovLyBAaW5mby50ZXJtc09mU2VydmljZTog5pyN5Yqh5p2h5qy+Ci8vIEBpbmZvLmNvbnRhY3QubmFtZTog6IGU57O75Lq6Ci8vIEBpbmZvLmNvbnRhY3QudXJsOiDogZTns7vlnLDlnYAKLy8gQGluZm8uY29udGFjdC5lbWFpbDog6IGU57O76YKu566xCi8vIEBpbmZvLmxpY2Vuc2UubmFtZTog6K645Y+v6K+B5ZCN56ewCi8vIEBpbmZvLmxpY2Vuc2UudXJsOiDorrjlj6/or4HlnLDlnYAKLy8gQGluZm8udmVyc2lvbjog6aG555uu54mI5pys5Y+3Ci8vIEBleHRlcm5hbERvY3MuZGVzY3JpcHRpb246IOaJqeWxleaWh+aho+aPj+i/sAovLyBAZXh0ZXJuYWxEb2NzLnVybDog5omp5bGV5paH5qGj5Zyw5Z2ACi8vIEBzZXJ2ZXJzOiB1cmw95pyN5Yqh5Zyw5Z2AOyBkZXNjcmlwdGlvbj3mnI3liqHmj4/ov7AKLy8gQHRhZ3M6IG5hbWU95qCH562+5ZCN56ewOyBkZXNjcmlwdGlvbj3moIfnrb7mj4/ov7AKLy8gQGNvbXBvbmVudHMuc2VjdXJpdHlTY2hlbWVzOiB8LQovLyAgZmllbGQ96aqM6K+B5a2X5q6177yM6Lev55Sx5rOo6YeK5Lit5L2/55SoOwovLyAgdHlwZT3pqozor4HnsbvlnovvvIzlgLzljIXmi6xhcGlLZXksaHR0cCxvYXV0aDI7Ci8vICBzY2hlbWU9aHR0cOexu+Wei+W/heS8oO+8jOS+i+WmgmJhc2ljLGJlYXJlcjsKLy8gIGJlYXJlckZvcm1hdD1zY2hlbWXkuLpiZWFyZXLml7blj6/kvKDvvIznlKjkuo7mj5DnpLrlrqLmiLfnq6/miYDkvb/nlKjnmoRiZWFyZXIgdG9rZW7nmoTmoLzlvI/vvIzkvovlpoJKV1Q7Ci8vICBpbj1hcGlLZXnml7blv4XkvKDvvIzlgLzljIXmi6xxdWVyeSxoZWFkZXIsY29va2llOwovLyAgbmFtZT1hcGlLZXnml7blv4XkvKDvvIznlKjkuo4gaGVhZGVy44CBIHF1ZXJ5IOaIliBjb29raWUg55qE5Y+C5pWw5ZCN5a2XOwovLyAgZmxvd3M9anNvbuWtl+espuS4su+8jOaWh+aho+ivtOaYjuivpuinge+8mmh0dHBzOi8vb3BlbmFwaS5hcGlmb3guY24vI29hdXRoLWZsb3dzLSVFNSVBRiVCOSVFOCVCMSVBMQpwYWNrYWdlIG1haW4Kfn5+CgojIyMjIGRvY3MuZ28g5paH5qGj5Lit5a6a5LmJ5YWs5YWx55qEIHJvdXRlLmdvIOS4reeahOWxnuaAp++8jOWSjCByb3V0ZS5nbyDnmoTms6jph4rkuIDoh7TvvIzlnKhA5ZCO6Z2i5re75YqgZ2xvYmFsLgotIEBnbG9iYWwucmVzICDlhazlhbHov5Tlm57vvIzlkozot6/nlLHnmoTkuIDoh7QKLSBAZ2xvYmFsLnBhcmFtICDlhazlhbHlj4LmlbDvvIzlkozot6/nlLHnmoTkuIDoh7QKfn5+Z28KLy8gQGdsb2JhbC5yZXM6IHN0YXR1cz01MDA7IGluPWFwcGxpY2F0aW9uL2pzb247IGNvbnRlbnQ95pyN5Yqh5Zmo6ZO+5o6l5aSx6LSlOyBkZXNjPeezu+e7n+WGhemDqOmUmeivrwpwYWNrYWdlIG1haW4Kfn5+CgojIyMgcm91dGUuZ2/mlofmoaPms6jph4ror7TmmI4KLSBA5byA5aeL55qE5qCH6aKY77yM55SoIDsg5YiG5Ymy77yM5YiG5Ymy5oiQ5a+56LGh44CC5q+P5Liq5a+56LGh55SoID0g5YiG5Ymy77yM5YiG5Ymy5oiQ6ZSu77yM5YC877yM5aaC5p6c5LiN5a2Y5ZyoID0g5aW95YiZ6KGo56S65YC85piv5a2X56ym5LiyIHRydWUKCi0g5LiK6Z2i5YiG5Ymy55qE5a+56LGh5Lit55qE5YC877yM55SoICwg5YiG5Ymy5oiQ5pWw57uECn5+fmdvCnBhY2thZ2UgbWFpbgoKLy8gQHN1bW1hcnk6IOi3r+eUseaAu+e7kwovLyBAZGVzY3JpcHRpb246IOi3r+eUseaPj+i/sAovLyBAdGFnczog5qCH562+57uE77yM55SoO+WIhuWJsu+8jOS+i+Wmgu+8mnVzZXI7YWRtaW4KLy8gQHBhcmFtOiDlj4LmlbDvvIzlpJrooYzliJnlpJrkuKrlj4LmlbDvvIzor6bnu4bor7TmmI7op4HkuIvpnaJAcGFyYW3or7TmmI4KLy8gQGJvZHk6IOS8oOmAkuWGheWuue+8jOivpue7huivtOaYjuingeS4i+mdokBib2R56K+05piOCi8vIEByZXM6IOi+k+WHuuWGheWuue+8jOivpuino+ivtOaYjuingeS4i+mdokByZXPor7TmmI4KLy8gQHNlY3VyaXR5OiB8LQovLyAg6aqM6K+B5YC877yM5L2/55SoIEBjb21wb25lbnRzLnNlY3VyaXR5U2NoZW1lcyDkuK3lrprkuYnnmoQgZmllbGQg55qE5YC8Ci8vICDkvovlpoLvvJp0b2tlbjtwcm9qZWN0SUQ9d3JpdGU6cGV0cyxyZWFkOnBldHMg6KGo56S6IOWtmOWcqHRva2Vu6aqM6K+B77yMcHJvamVjdElE6aqM6K+B5pWw57uE5pivW3dyaXRlOnBldHMscmVhZDpwZXRzXQovLyBAcm91dGVyOiB8LQovLyAgbWV0aG9kPWdldCxwdXQgLHBvc3QsZGVsZXRlLG9wdGlvbnMsaGVhZCxwYXRjaOS4reeahOWAvDsKLy8gIHBhdGg96Lev55Sx5Zyw5Z2A77yM5L6L5aaC77yaL3VzZXIve2lkfeOAguWFtuS4rXtpZH3ooajnpLpAcGFyYW3kuK3nmoRpbuS4unBhdGjml7bnmoTlhbPogZQKZnVuYyBMb2dpbigpIHsKfQp+fn4KIyMjIyBAcGFyYW3or7TmmI4K5a6e5L6L77yaQHBhcmFtOiBpbj1wYXRoOyBuYW1lPWlkOyB0eXBlPWludGVnZXIoaW50NjQpOyByZXF1aXJlZDsgZGVzYz3kuLvplK4KLSBpbiDooajnpLrlj4LmlbDnsbvlnovvvIzlgLzmnIlxdWVyeSxoZWFkZXIscGF0aCxjb29raWUKLSBuYW1lIOihqOekuuWPguaVsOWQjeensAotIHR5cGUg6KGo56S65Y+C5pWw57G75Z6L77yM5YC85pyJaW50ZWdlcixudW1iZXIsc3RyaW5nLGJvb2xlYW4KLSByZXF1aXJlZCDmmK/lkKblv4XkvKDlj4LmlbDvvIzlrp7kvovvvJpyZXF1aXJlZCDmiJbogIUgcmVxdWlyZWQ9dHJ1ZQotIGRlc2Mg5Y+C5pWw5o+P6L+wCi0gbWluaW11bSB0eXBl57G75Z6L5pivaW50ZWdlcuaXtueahOacgOWwj+WAvAotIG1heGltdW0gdHlwZeexu+Wei+aYr2ludGVnZXLml7bnmoTmnIDlpKflgLwKLSBtaW5MZW5ndGggdHlwZeexu+Wei+aYr3N0cmluZ+aXtueahOacgOWwj+mVv+W6pgotIG1heExlbmd0aCB0eXBl57G75Z6L5pivc3RyaW5n5pe255qE5pyA5aSn6ZW/5bqmCi0gZXhhbXBsZSDlrp7kvovlgLwKLSBkZWZhdWx0IOm7mOiupOWAvAotIGVudW0g5Y+C5pWw5p6a5Li+77yM5pWw57uE77yM55SoLOWIhuWJsu+8jOS+i+Wmgu+8mmVudW09dXNlcixuYW1lCiMjIyMgQGJvZHnor7TmmI4K5a6e5L6L77yaQGJvZHk6IGluPWFwcGxpY2F0aW9uL2pzb247IGNvbnRlbnQ9dGVzdC9wcm9qZWN0L2FwcC9yZXFzLkxvZ2luQWRtaW5SZXE7IGRlc2M955So5oi35L+h5oGvCi0gaW4g5Lyg5YWl57G75Z6L77yM5YC85pyJIGFwcGxpY2F0aW9uL2pzb24sIGFwcGxpY2F0aW9uL3htbCwgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCi0gY29udGVudCDkvKDlhaXlhoXlrrnvvIzku6Uu5YiG5Ymy77yM5YmN57yA5Li6Z28ubW9k5p+l5om+55qE5ZG95ZCN56m66Ze05ZCN56ewKOaUr+aMgWdpdGh1Yuetie+8jOW/hemhu+W8leWFpSnvvIzlkI7nvIDkuLrnu5PmnoTkvZPlkI3np7DjgILliY3nvIDlj6/ku6XmmK/nu5PmnoTkvZNwYWNrYWdl55qE5ZCN56ew77yM6L+Z56eN5oOF5Ya15b+F6aG75LiN6IO96YeN5aSNCi0gZGVzYyDkvKDlhaXlhoXlrrnmj4/ov7AKIyMjIyBAcmVz6K+05piOCuWunuS+i++8mkByZXM6IHN0YXR1cz0yMDA7IGluPWFwcGxpY2F0aW9uL2pzb247IGNvbnRlbnQ9dGVzdC9wcm9qZWN0L2FwcC9yZXNwcy5BZG1pbkxvZ2luUmVzcDsgZGVzYz3ov5Tlm57kv6Hmga8KLSBzdGF0dXMgaW50ZWdlcuexu+Wei++8jOacjeWKoeWZqOeahOeKtuaAgeeggQotIGluIOi/lOWbnuexu+Wei++8jOWAvOaciSBhcHBsaWNhdGlvbi9qc29uLCBhcHBsaWNhdGlvbi94bWwKLSBjb250ZW50IOi/lOWbnuWGheWuue+8jOS7pS7liIblibLvvIzliY3nvIDkuLpnby5tb2Tmn6Xmib7nmoTlkb3lkI3nqbrpl7TlkI3np7Ao5pSv5oyBZ2l0aHVi562J77yM5b+F6aG75byV5YWlKe+8jOWQjue8gOS4uue7k+aehOS9k+WQjeensOOAguWJjee8gOWPr+S7peaYr+e7k+aehOS9k3BhY2thZ2XnmoTlkI3np7DvvIzov5nnp43mg4XlhrXlv4XpobvkuI3og73ph43lpI0KLSBkZXNjIOi/lOWbnuWGheWuueaPj+i/sAoKIyMjIOe7k+aehOS9k+azqOmHiuivtOaYjgp+fn5nbwpwYWNrYWdlIG1haW4KCi8vIExvZ2luUmVxdWVzdCDnu5PmnoTkvZPms6jph4oKdHlwZSBMb2dpblJlcXVlc3Qgc3RydWN0IHsKICAgIEFjY291bnQgc3RyaW5nIGBqc29uOiJhY2NvdW50IiB5YW1sOiJhY2NvdW50IiByZXF1aXJlZDoidHJ1ZSIgbWluaW11bToiMTAiYCAvLyDotKblj7fms6jph4oKCVBhc3N3b3JkIHN0cmluZyBganNvbjoicGFzc3dvcmQiIHlhbWw6InBhc3N3b3JkIiBvcGVuYXBpOiJyZXF1aXJlZDttaW5pbXVtPTEwImAgLy8g5a+G56CB5rOo6YeKCn0Kfn5+CgojIyMjIOe7k+aehOS9k+eahOagh+etvuWPr+S7peS9v+eUqCBtaW5pbXVtOiIxMCIg5ZKMIG9wZW5hcGk6Im1pbmltdW09MTAiIOi/meS4pOenjeaWueW8j++8jOWtl+auteaciQotIG1pbmltdW0gdHlwZeexu+Wei+aYr2ludGVnZXLml7bnmoTmnIDlsI/lgLwKLSBtYXhpbXVtIHR5cGXnsbvlnovmmK9pbnRlZ2Vy5pe255qE5pyA5aSn5YC8Ci0gbWluTGVuZ3RoIHR5cGXnsbvlnovmmK9zdHJpbmfml7bnmoTmnIDlsI/plb/luqYKLSBtYXhMZW5ndGggdHlwZeexu+Wei+aYr3N0cmluZ+aXtueahOacgOWkp+mVv+W6pgotIG1pbkl0ZW1zIHR5cGXnsbvlnovmmK9zbGljZeaXtueahOacgOWwj+mVv+W6pgotIG1heEl0ZW1zIHR5cGXnsbvlnovmmK9zbGljZeaXtueahOacgOWkp+mVv+W6pgotIGV4YW1wbGUg5a6e5L6L5YC8Ci0gZGVmYXVsdCDpu5jorqTlgLwKLSBlbnVtIOmZkOWumuWAvAotIHJlcXVpcmVkIOaYr+WQpuW/heS8oOWPguaVsAotIHR5cGUg57G75Z6L6YeN5a6a5LmJCgojIyDmlofku7bkuIrkvKAK5Y+q6ZyA6KaB5bCGaW7orr7nva7kuLogbXVsdGlwYXJ0L2Zvcm0tZGF0Ye+8jCDnsbvlnovorr7nva7kuLogYmFzZTY0IOaIluiAhSBiaW5hcnkg5Y2z5Y+vCgojIyDlhbPkuo4oYWJvdXQpCueBteaEn+S4uiBnaXRodWIuY29tL3N3YWdnby9zd2FnIOeahOmhueebru+8jOWboOS4uui/meS4qumhueebruaXoOazleino+aekCBvcGVuYXBpMyDnmoTmlofmoaPvvIzlm6DmraToh6rlt7Hlrp7njrDkuobkuIDlpZcgb3BlbmFwaTMg55qE5paH5qGj55Sf5oiQ readmeEtag: '"4297397ea091eb818b3f58d4a10c9e7749287206"' readmeLastModified: Fri, 17 May 2024 09:30:16 GMT repositoryId: 753528268 description: 使用ast语法解析器解析注解,根据openapi3语法生成 created: '2024-02-06T09:55:54Z' updated: '2025-05-22T08:51:01Z' language: Go archived: false stars: 2 watchers: 1 forks: 0 owner: goodluckxu-go logo: https://avatars.githubusercontent.com/u/110141236?v=4 license: MIT repoEtag: '"b0e44752f95951cbd36beebedf10ffe202fa2978eea91e4d5d5e4cbdc3fbe010"' repoLastModified: Thu, 22 May 2025 08:51:01 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/sami-akkawi/symfony-open-api-boilerplate v3: true repositoryMetadata: base64Readme: >- IyBXSVA6IFN5bWZvbnkgKDUuMi41KSBPcGVuQXBpICgzLjAuMykgQm9pbGVycGxhdGUKWyFbQmFkZ2U6IE1JVCBMaWNlbnNlXShwdWJsaWMvYXNzZXRzL2ltYWdlcy9taXQtbGljZW5zZS1iYWRnZS5zdmcpXShMSUNFTlNFKQpbIVtCYWRnZTogYWdpbGUuYWtrYXdpLmNoXShwdWJsaWMvYXNzZXRzL2ltYWdlcy9hZ2lsZS1ha2thd2ktY2gtYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9hZ2lsZS5ha2thd2kuY2gvYnAvNWVjMGI1N2ExZWU3ZikKCioqIE5PVElDRSAqKiBQbGVhc2Ugbm90ZSB0aGlzIGlzIHN0aWxsIGEgd29yayBpbiBwcm9ncmVzcywgYnV0IGlmIHlvdSBmaW5kIGFueXRoaW5nIG1pc3Npbmcgb3Igbm90IGNvcnJlY3QsIHBsZWFzZSBkbwogbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgbWUuCiAKIyMgSW50cm9kdWN0aW9uICMjCgpUaGlzIHByb2plY3QgaXMgYW4gYXR0ZW1wdCB0byBtYWtlIEFQSSBEb2N1bWVudGF0aW9uIGVhc2llciBhbmQgZXJyb3IgZnJlZS4gUmVxdWVzdCBwYXJhbWV0ZXJzIHNoYWxsIGJlIHZhbGlkYXRlZAogd2l0aCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgcmVzcG9uc2VzIGFzIHdlbGwuIFRoaXMgd2F5LCBkb2N1bWVudGF0aW9uIGlzIGtlcHQgdXAtdG8tZGF0ZSBhbmQgcmVzcG9uc2VzIGFyZQogZ3VhcmFudGVlZCB0byBsb29rIGxpa2UgdGhlIGRvY3VtZW50YXRpb24uIFRoaXMgd2lsbCBkZWNyZWFzZSBmcnVzdHJhdGlvbiBmcm9tIHRoZSBmcm9udGVuZCBhbmQgaW5jcmVhc2UKIHJlbGlhYmlsaXR5IGluIHRoZSBiYWNrZW5kLgogClRoZSBBUEkgRG9jdW1lbnRhdGlvbiBmb2xsb3dzIHRoZSBbT3BlbkFQSSBJbml0aWF0aXZlXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKSBhbmQgaXRzIGxhdGVzdCBbU3BlY2lmaWNhdGlvbnMKICh2My4wLjMpXShodHRwOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMyku readmeEtag: '"0e5aef6de7b68cc0becc9de5833a172ff494d224"' readmeLastModified: Mon, 17 Jun 2024 05:26:04 GMT repositoryId: 263941472 description: >- An attempt to provide an easy to use boilerplate for API documentation using OpenApi and Symfony. created: '2020-05-14T14:42:21Z' updated: '2024-06-17T05:26:09Z' language: PHP archived: false stars: 2 watchers: 1 forks: 0 owner: sami-akkawi logo: https://avatars.githubusercontent.com/u/45228655?v=4 license: MIT repoEtag: '"0f792223f2cbfc7275cd7c612c88349bc925b4e0e2ca5900556768ab03b2d065"' repoLastModified: Mon, 17 Jun 2024 05:26:09 GMT foundInMaster: true category: Parsers id: 80ddb274ded0c22f6ce8260664a579c8 oldLocations: - https://github.com/SamiAkkawi/symfony-open-api-boilerplate - source: openapi3 tags repository: https://github.com/barnuri/openapi-toolkit v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXRvb2xraXQKb3BlbmFwaS10b29sa2l0IGlzIGFuIG9wZW4tc291cmNlIHRvb2wgZGVzaWduZWQgdG8gc3RyZWFtbGluZSB0aGUgaW50ZWdyYXRpb24gb2YgT3BlbkFQSSAoZm9ybWVybHkga25vd24gYXMgU3dhZ2dlcikgc3BlY2lmaWNhdGlvbnMgaW50byB5b3VyIGRldmVsb3BtZW50IHdvcmtmbG93LiBCeSB0YWtpbmcgYW4gT3BlbkFQSS9Td2FnZ2VyIGZpbGUgYXMgaW5wdXQsIHRoZSBPcGVuQVBJIFRvb2xraXQgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgc2VydmVyIGFuZCBjbGllbnQgY29kZSwgZW5hYmxpbmcgc2VhbWxlc3MgaW50ZWdyYXRpb24gb2YgQVBJcy4gVGhpcyBhdXRvbWF0aW9uIGFjY2VsZXJhdGVzIGRldmVsb3BtZW50IHByb2Nlc3NlcywgZW5zdXJlcyBjb25zaXN0ZW5jeSBhY3Jvc3MgZGlmZmVyZW50IHBsYXRmb3JtcywgYW5kIHJlZHVjZXMgdGhlIHJpc2sgb2YgbWFudWFsIGVycm9ycy4gV2hldGhlciB5b3UncmUgYnVpbGRpbmcgYSBuZXcgc2VydmljZSBvciBpbnRlZ3JhdGluZyB3aXRoIGV4aXN0aW5nIEFQSXMsIE9wZW5BUEkgVG9vbGtpdCBzaW1wbGlmaWVzIHRoZSBwcm9jZXNzIGJ5IHByb3ZpZGluZyByZWFkeS10by11c2UgY29kZSB0YWlsb3JlZCB0byB5b3VyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMuCgojIEluc3RhbGwKClshW1J1biBUZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL2Jhcm51cmkvb3BlbmFwaS10b29sa2l0L2FjdGlvbnMvd29ya2Zsb3dzL3J1blRlc3RzLnlhbWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2Jhcm51cmkvb3BlbmFwaS10b29sa2l0L2FjdGlvbnMvd29ya2Zsb3dzL3J1blRlc3RzLnlhbWwpIFshW0NyZWF0ZSBUYWcgQW5kIFJlbGVhc2UgQW5kIFB1Ymxpc2ggVG8gTlBNXShodHRwczovL2dpdGh1Yi5jb20vYmFybnVyaS9vcGVuYXBpLXRvb2xraXQvYWN0aW9ucy93b3JrZmxvd3MvY3JlYXRlVGFnQW5kUmVsZWFzZUFuZFB1Ymxpc2gueWFtbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vYmFybnVyaS9vcGVuYXBpLXRvb2xraXQvYWN0aW9ucy93b3JrZmxvd3MvY3JlYXRlVGFnQW5kUmVsZWFzZUFuZFB1Ymxpc2gueWFtbCkKCltOUE1dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktdG9vbGtpdCkKCmBgYGJhc2gKbnBtIGkgb3BlbmFwaS10b29sa2l0CmBgYAoKIyBBdXRvIEdlbmVyYXRlIENsaWVudC9TZXJ2ZXIgKENsaSkKCmBgYGJhc2gKbnBtIGkgLWcgb3BlbmFwaS10b29sa2l0CgojIGV4YW1wbGUKb3BlbmFwaS10b29sa2l0IC1pIGh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzL29wZW5hcGkuanNvbiAtZyB0eXBlc2NyaXB0LWF4aW9zIC1vIC4vc3JjL3NlcnZpY2VzL3BldFN0b3JlIC0tbW9kZWxOYW1lUHJlZml4IE15IC0tbW9kZWxOYW1lU3VmZml4IC5kdG8KCiMgc2hvdyBhbGwgb3B0aW9ucwpvcGVuYXBpLXRvb2xraXQgLWgKCiMgd2l0aCBkb2NrZXIKZG9ja2VyIHJ1biAtLXJtIC0tbmFtZSBvcGVuYXBpLXRvb2xraXQgLXYgIiQocHdkKS9vdXRwdXQ6L291dHB1dCIgLWUgQ0xJX1BBUkFNUz0iLWkgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uIC1nIHR5cGVzY3JpcHQtYXhpb3MgLS1tb2RlbE5hbWVQcmVmaXggTXkgLS1tb2RlbE5hbWVTdWZmaXggLmR0byIgYmFybnVyaS9vcGVuYXBpLXRvb2xraXQKYGBgCgojIEF1dG8gR2VuZXJhdGUgQ2xpZW50L1NlcnZlciAoSlNcVFMpCgpgYGBqcwpjb25zdCB7IG11bHRpcGxlR2VuZXJhdGUsIGdlbmVyYXRlIH0gPSByZXF1aXJlKCdvcGVuYXBpLXRvb2xraXQnKTsKCi8vIHVzZSBtdWx0aXBsZUdlbmVyYXRlIHdoZW4geW91IHdhbnQgbXVsdGlwbGUgb3V0cHV0cwooYXN5bmMgKCkgPT4gewogICAgY29uc3Qgc2hhcmVkQ29uZmlnID0geyBkZWJ1Z0xvZ3M6IGZhbHNlIH07CiAgICBhd2FpdCBtdWx0aXBsZUdlbmVyYXRlKGBodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92My9vcGVuYXBpLmpzb25gLCBbCiAgICAgICAgeyAuLi5zaGFyZWRDb25maWcsIGdlbmVyYXRvcjogJ3R5cGVzY3JpcHQtcmVhY3QtcXVlcnknLCBvdXRwdXQ6IGAuL3R5cGVzY3JpcHQtcmVhY3QtcXVlcnkvc3JjYCB9LAogICAgICAgIHsgLi4uc2hhcmVkQ29uZmlnLCBnZW5lcmF0b3I6ICd0eXBlc2NyaXB0LWF4aW9zJywgb3V0cHV0OiBgLi90eXBlc2NyaXB0LWF4aW9zL3NyY2AgfSwKICAgICAgICB7IC4uLnNoYXJlZENvbmZpZywgZ2VuZXJhdG9yOiAndHlwZXNjcmlwdC1heGlvcycsIG91dHB1dDogYC4vdHlwZXNjcmlwdC1tb2RlbHMvc3JjYCwgbW9kZWxzT25seTogdHJ1ZSB9LAogICAgICAgIHsgLi4uc2hhcmVkQ29uZmlnLCBnZW5lcmF0b3I6ICdjIycsIG91dHB1dDogYC4vYyMvc3JjYCwgfSwKICAgICAgICB7IC4uLnNoYXJlZENvbmZpZywgZ2VuZXJhdG9yOiAnZ28nLCBvdXRwdXQ6IGAuL2dvL3NyY2AgfSwKICAgICAgICB7IC4uLnNoYXJlZENvbmZpZywgZ2VuZXJhdG9yOiAncHl0aG9uJywgb3V0cHV0OiBgLi9weXRob24vc3JjYCB9LAogICAgXSk7Cn0pKCk7CgovLyB1c2UgZ2VuZXJhdGUgd2hlbiB5b3Ugd2FudCBvbmx5IG9uZSBvdXRwdXQKKGFzeW5jICgpID0+IHsKICAgIGF3YWl0IGdlbmVyYXRlKHsgcGF0aE9yVXJsOiBgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uYCwgZ2VuZXJhdG9yOiAndHlwZXNjcmlwdC1yZWFjdC1xdWVyeScsIG91dHB1dDogYC4vdHlwZXNjcmlwdC1yZWFjdC1xdWVyeS9zcmNgIH0pOwp9KSgpOwpgYGAKCiMjIyBIZWxwIG91dHB1dAoKYGBgdGV4dApvcGVuYXBpLXRvb2xraXQgPGNvbW1hbmQ+LCBkZWZhdWx0IGNvbW1hbmQgJ2dlbmVyYXRlJwoKQ29tbWFuZHM6CiAgZ2VuZXJhdGUgICAgYXV0byBnZW5lcmF0ZSBwcm94eSBjbGllbnQgZnJvbSBzd2FnZ2VyIGZpbGUgICAgICAgICAgICAgW2RlZmF1bHRdCiAgZ2VuZXJhdG9ycyAgZ2VuZXJhdG9ycyBsaXN0CiAgY29tcGxldGlvbiAgZ2VuZXJhdGUgY29tcGxldGlvbiBzY3JpcHQKCk9wdGlvbnM6CiAgICAgIC0tdmVyc2lvbiAgICAgICAgICAgICAgICBTaG93IHZlcnNpb24gbnVtYmVyICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dCiAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgICBTaG93IGhlbHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dCiAgLWksIC0tcGF0aE9yVXJsICAgICAgICAgICAgICBwYXRoIG9yIHVybCBmb3Igc3dhZ2dlciBmaWxlICAgICAgICAgICBbcmVxdWlyZWRdCiAgLW8sIC0tb3V0cHV0ICAgICAgICAgICAgICAgICBvdXRwdXQgcGF0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdCiAgLWcsIC0tZ2VuZXJhdG9yICAgICAgICAgICAgICBnZW5lcmF0b3IgbmFtZSAgICAgIFtkZWZhdWx0OiAidHlwZXNjcmlwdC1heGlvcyJdCiAgLXQsIC0tdHlwZSAgICAgICAgICAgICAgICAgICBbY2hvaWNlczogImNsaWVudCIsICJzZXJ2ZXIiXSBbZGVmYXVsdDogImNsaWVudCJdCiAgLW4sIC0tbmFtZXNwYWNlICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0OiAiT3BlbmFwaURlZmluaXRpb25HZW5lcmF0ZSJdCiAgICAgIC0tbW9kZWxzRm9sZGVyTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdDogIm1vZGVscyJdCiAgICAgIC0tbW9kZWxOYW1lUHJlZml4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdDogIiJdCiAgICAgIC0tbW9kZWxOYW1lU3VmZml4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdDogIiJdCiAgICAgIC0tY29udHJvbGxlcnNGb2xkZXJOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHQ6ICJjb250cm9sbGVycyJdCiAgICAgIC0tY29udHJvbGxlck5hbWVQcmVmaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdDogIiJdCiAgICAgIC0tY29udHJvbGxlck5hbWVTdWZmaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0OiAiQ29udHJvbGxlciJdCmBgYAoKIyMgW1ZzY29kZSBQbHVnaW4gRm9yIEF1dG8gR2VuZXJhdGVdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1CYXIuZ2VuZXJhdG9yLWZyb20tc3dhZ2dlcikKCgojIFtFeGFtcGxlc10oLi9leGFtcGxlcy9SZWFkTWUubWQpCg== readmeEtag: '"5319505243eb822b67223b81f685660e7c5f7bb9"' readmeLastModified: Thu, 15 Aug 2024 07:39:07 GMT repositoryId: 316588971 description: null created: '2020-11-27T19:56:53Z' updated: '2024-10-14T20:56:32Z' language: TypeScript archived: false stars: 2 watchers: 1 forks: 0 owner: barnuri logo: https://avatars.githubusercontent.com/u/13019522?v=4 license: BSD-3-Clause repoEtag: '"49564cc9287b402c790893727d70817a71a0756976ee659a0f8a41a062bf3db7"' repoLastModified: Mon, 14 Oct 2024 20:56:32 GMT foundInMaster: true category: SDK id: da3fab8072e31f292b75b5e935da466e - source: openapi3 tags repository: https://github.com/open-banking/scheduledpayments v3: true repositoryMetadata: base64Readme: >- IyBzY2hlZHVsZWRQYXltZW50cwpPcGVuIEJhbmtpbmcgU2NoZWR1bGVkIFBheW1lbnQgQVBJIGJ1aWx0IG9uIHRvcCBvZiBsaWdodC00ago= readmeEtag: '"00da6289de97d9cc67418c9bda5adee8aa563088"' readmeLastModified: Thu, 25 Jul 2024 20:09:54 GMT repositoryId: 235866546 description: Open Banking Scheduled Payment API built on top of light-4j created: '2020-01-23T19:09:28Z' updated: '2026-02-03T01:08:47Z' language: Java archived: false stars: 2 watchers: 1 forks: 0 owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 repoEtag: '"83b6ede9206deaeb33e43dd3d87c74338f91d6f236f0ecca04ed0551e94a220a"' repoLastModified: Tue, 03 Feb 2026 01:08:47 GMT foundInMaster: true category: Server id: ec401d778fc36b72fe55feae3729d030 - source: openapi3 tags repository: https://github.com/rusagaib/oas-preview.nvim v3: true id: 2d64a612248f3184b377fe072a356b49 repositoryMetadata: base64Readme: >- IVtpbWFnZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9ydXNhZ2FpYi9vYXMtcHJldmlldy5udmltKQoKIyBvYXMtcHJldmlldy5udmltCldJUCBhIHNpbXBsZSBudmltIHBsdWdpbiB0byBwcmV2aWV3IG9hcy9vcGVuYXBpczMgb3Igc3dhZ2dlciBzcGVjLCBub3cgaW5jbHVkZXMgbXVsdGlwbGUgd3JhcHBlciBjb250YWluZXItdWkgdG8gY2hvb3NlIGZvciB5b3VyIHByZWZlcmVuY2UgbGlrZSBzd2FnZ2VyLCByZWRvY2x5L3JlZG9jIGFuZCBzdG9wbGlnaHQgCgohW2ltYWdlXShkb2NzL3ByZXZpZXcucG5nKQoKIyMjIFByZXJlcXVpc2l0ZSA6c3BhcmtsZXM6Ci0tLQojIyMjIEluc3RhbGxpbmcgdGhlIFVJOgoKKipzd2FnZ2VyLXVpIChkb2NrZXIpOioqCgpgYGBzaApkb2NrZXIgcHVsbCBzd2FnZ2VyYXBpL3N3YWdnZXItdWk6bGF0ZXN0CmBgYAoqKnJlZG9jLXVpIChkb2NrZXIpOioqCgpgYGBzaApkb2NrZXIgcHVsbCByZWRvY2x5L3JlZG9jCmBgYAoKKipzdG9wbGlnaHQtdWkgKHVub2ZmaWNpYWwgZG9ja2VyKToqKgoKYGBgc2gKZG9ja2VyIHB1bGwgc2tyaXB0ZmFicmlrL2VsZW1lbnRzLWNsaQpgYGAKCiMjIyBJbnN0YWxsIFBsdWdpbiA6cm9ja2V0OgotLS0KCioqTGF6eS5udmltOioqICpyZWNvbWVuZGVkKiA6aHVnczoKCkRlZmF1bHQ6CgpgYGAKewogICAgJ3J1c2FnYWliL29hcy1wcmV2aWV3Lm52aW0nLAp9LApgYGAKCmJhc2ljIGNvbmZpZyB3aXRoIGF1dG8tc2V0dXAgIDpzcGFya2xlczoKCmBgYAp7CiAgICAncnVzYWdhaWIvb2FzLXByZXZpZXcubnZpbScsCiAgICBjb25maWcgPSBmdW5jdGlvbigpCiAgICAgICAgcmVxdWlyZSgnb2FzLXByZXZpZXcnKS5zZXR1cCh7CiAgICAgICAgICAgIHBvcnQgPSAiMTExMSIsICAgICAgICAtLSB1cC10by15b3UgCiAgICAgICAgICAgIHVpID0gInN3YWdnZXIiLCAgICAgICAtLSAic3dhZ2dlciIsICJyZWRvYyIsICJzdG9wbGlnaHQiCiAgICAgICAgICAgIGF1dG9fb3Blbl91cmwgPSBmYWxzZSAtLSBmYWxzZSB0byBkaXNhYmxlIGl0LCBkZWZhdWx0IGlzIHRydWUKICAgICAgICAgICAgZXhwb3NlID0gZmFsc2UgICAgICAgIC0tIGlmIGl0IHRydWUgd2lsbCBzZXJ2ZSBhcHAgY29udGFpbmVyIHRvIHVzZSBsb2NhbCBuZXR3b3JrIGlwIHdpdGggcG9ydCA4MCwgZGVmYXVsdCBhcmUgZmFsc2UKICAgICAgICAgICAgb3MgPSAibGludXgiICAgICAgICAgIC0tICJsaW51eCIsICJtYWMiLCAid2luIiwgIndzbCIgaWYgbm90IHNldCB3aWxsIHVzZSBkZWZhdWx0ICJsaW51eCIKICAgICAgICB9KSAgCiAgICBlbmQsCn0sCmBgYAoKKipQYWNrZXI6KioKCmFkZCB0aGlzIGxpbmUgb24geW91ciBwYWNrZXIgY29uZmlnLmx1YSBqdXN0IGFkZCBydXNhZ2FpYi9vYXMtcHJldmlldy5udmltCgpgYGAKdXNlIHsncnVzYWdhaWIvb2FzLXByZXZpZXcubnZpbSd9CmBgYAoKKipQbHVnOioqCgphZGQgdGhpcyBsaW5lIG9uIHlvdXIgY29uZmlnCgpgYGAKUGx1ZyAncnVzYWdhaWIvb2FzLXByZXZpZXcubnZpbScKYGBgCgoKIyMjIEFwcGx5L3NldHVwIG9hcy1wcmV2aWV3IHBsdWdpbiA6Ym93OgotLS0KCmlmIHlvdSdyZSBub3QgdXNpbmcgTGF6eS5udmltIGFzIHBsdWdpbiBtYW5hZ2VyIHRoaXMgc2VjdGlvbiBpcyBuZWVkZWQuLgoKSW4geW91ciBpbml0Lmx1YSAoRGVmYXVsdCBudmltIGNvbmZpZyk6CgpgYGAKIyB3aXRoIERlZmF1bHQgY29uZmlnIHlvdSdsbCBnZXQgdGhpcyBjb25mIAojIHBvcnQgPSAiMTExMSIsIAojIHVpID0gInN3YWdnZXIiLCAKIyBhdXRvX29wZW5fdXJsID0gdHJ1ZSwgCiMgZXhwb3NlID0gZmFsc2UKIyBvcyA9ICJsaW51eCIKcmVxdWlyZSgnb2FzLXByZXZpZXcnKS5zZXR1cCh7fSkKYGBgCgp+IE9SIH4KCmBgYAojIGNob29zZSB5b3VyIHByZWZlcmVuY2VzIHVpLCBkaXNhYmxlIGF1dG9fb3Blbl91cmwsIGRpc2FibGUgZXhwb3NlIGhvc3QgY29udGFpbmVyLXVpIGV0Yy4uCnJlcXVpcmUoJ29hcy1wcmV2aWV3Jykuc2V0dXAoewogICAgcG9ydD0iMjIyMiIsICAgICAgICAgLS0gb3IgYW55IHBvcnQgeW91IHdhbnQgCiAgICB1aT0ic3RvcGxpZ2h0IiwgICAgICAtLSBvcHRpb24gdWk6IHN3YWdnZXIsIHJlZG9jLCBzdG9wbGlnaHQgCiAgICBhdXRvX29wZW5fdXJsPWZhbHNlLCAtLSB5b3UgY2FuIGNob29zZSB0cnVlIG9yIGZhbHNlCiAgICBleHBvc2U9ZmFsc2UgICAgICAgICAtLSBkZWZhdWx0IGZhbHNlIHRobywgYnV0IGlmIHlvdSBuZWVkIHRvIGV4cG9zZSBpdCBmb3IgbG9jYWwgbmV0d29yayB0ZXN0IGV0YywgeW91IGNhbiBzZXQgaXQgdG8gdHJ1ZQogICAgb3M9Im1hYyIgICAgICAgICAgICAgLS0gImxpbnV4IiwgIm1hYyIsICJ3aW4iLCAid3NsIiBpZiBub3Qgc2V0IHdpbGwgdXNlIGRlZmF1bHQgImxpbnV4Igp9KQpgYGAKCiMjIyBSdW4gOmZpcmU6Ci0tLQoKCmBgYAo6T0FTUHJldmlldwpgYGAKCgojIyMgU3RvcCBvcHRzIDp0cmlhbmd1bGFyX2ZsYWdfb25fcG9zdDoKLS0tCgp3aWxsIHN0b3AgYnVmZmVyIGNvbW1hbmRzICYgZGVsZXRlIGNvbnRhaW5lci11aQoKYGBgCjpPQVNQcmV2aWV3U3RvcApgYGAKCgojIyMgQ2hlY2sgQ29uZmlnIDpnZWFyOiAKLS0tCgp3aWxsIHByaW50IG91dCB5b3VyIHNldCBjb25maWcgb24gb2FzLXByZXZpZXcgIAoKYGBgCjpPQVNQcmV2aWV3Q29uZgpgYGAKCiMjIyBDaGVjayBSdW5pbmcgU2VydmljZSBjb250YWluZXItdWkgOnBhY2thZ2U6IAotLS0KCndpbGwgcHJpbnQgb3V0IHlvdXIgY29udGFpbmVyLXVpIGluZm8gCgpgYGAKOk9BU1ByZXZpZXdDaGVjawpgYGAKCi0tLQoKCiMjIyBOb3RlIGZvciB3c2wgdXNlcnMgeW91IG5lZWQgaW5zdGFsbCB3c2x2aWV3IHRvIGV4ZWMgeGRnLW9wZW4gYnJvd3NlcjogCi0tLQoKIyMjIyBbVWJ1bnR1IHdzbDJdKGh0dHBzOi8vd3NsdS53ZWRvdHN0dWQuaW8vd3NsdS9pbnN0YWxsLmh0bWwjdWJ1bnR1KSA6CgpgYGBzaApzdWRvIGFkZC1hcHQtcmVwb3NpdG9yeSBwcGE6d3NsdXRpbGl0aWVzL3dzbHUKc3VkbyBhcHQgdXBkYXRlCnN1ZG8gYXB0IGluc3RhbGwgd3NsdQpgYGAKCipmb3IgYW55IGRpc3RybyB3c2wgeW91IGNhbiB2aWV3IG90aGVyIGluc3RhbGxhdGlvbiBndWlkZSBbaGVyZV0oaHR0cHM6Ly93c2x1LndlZG90c3R1ZC5pby93c2x1L2luc3RhbGwuaHRtbCkKCi0tLQoKCiMjIyMgQW55IGNvbnRyaWJ1dGlvbnMgYXJlIHdlbGNvbWUgOmJlZXI6Cgo= readmeEtag: '"4124b7059198ff148a6ab29946a4d8928b1d6096"' readmeLastModified: Mon, 08 Sep 2025 21:30:28 GMT repositoryId: 545944120 description: WIP a simple nvim/neovim plugin to preview oas/openapi3 or swagger spec. created: '2022-10-05T08:46:31Z' updated: '2025-09-08T21:31:25Z' language: Lua archived: false stars: 2 watchers: 1 forks: 1 owner: rusagaib logo: https://avatars.githubusercontent.com/u/33116863?v=4 license: MIT repoEtag: '"e43e83f4636d22c46eef5d0736164975e204a54a5ae056ff73e62044207ce856"' repoLastModified: Mon, 08 Sep 2025 21:31:25 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/mneiferbag/java-spring-boot v3: true id: cca0fb34e191210e1afb499f6117f02b repositoryMetadata: base64Readme: >- IyBKYXZhIFNwcmluZyBFeGFtcGxlCgpMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBmaWxlIFtMSUNFTlNFXSguL0xJQ0VOU0UpLgoKSmF2YSBbU3ByaW5nXShodHRwczovL3NwcmluZy5pby8pIGV4YW1wbGUuIEV4YW1wbGUgaW5jbHVkZXMgY29kZSB3cml0dGVuIGluIEphdmEuCgpbIVtDb2RlUUxdKGh0dHBzOi8vZ2l0aHViLmNvbS9tbmVpZmVyYmFnL2phdmEtc3ByaW5nLWJvb3QvYWN0aW9ucy93b3JrZmxvd3MvY29kZXFsLWFuYWx5c2lzLnltbC9iYWRnZS5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL2dpdGh1Yi5jb20vbW5laWZlcmJhZy9qYXZhLXNwcmluZy1ib290L2FjdGlvbnMvd29ya2Zsb3dzL2NvZGVxbC1hbmFseXNpcy55bWwpClshW0phdmEgQ0kgd2l0aCBHcmFkbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tbmVpZmVyYmFnL2phdmEtc3ByaW5nLWJvb3QvYWN0aW9ucy93b3JrZmxvd3MvZ3JhZGxlLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbW5laWZlcmJhZy9qYXZhLXNwcmluZy1ib290L2FjdGlvbnMvd29ya2Zsb3dzL2dyYWRsZS55bWwpCgojIyBTcHJpbmcgQm9vdAoKVGhlIFN3YWdnZXIgVUkgcGFnZSBpcyBhdmFpbGFibGUgYXQKCltodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS5odG1sXShodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS5odG1sKQoKYW5kIHRoZSBPcGVuQVBJIGRlc2NyaXB0aW9uIGlzIGF2YWlsYWJsZSBhdAoKW2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MC92My9hcGktZG9jc10oaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YzL2FwaS1kb2NzKQoKIyMgR3JhZGxlCgpDaGVjayB2ZXJzaW9uIHdpdGggY29tbWFuZCBgZ3JhZGxlIC12YC4KClJ1biBgZ3JhZGxldyB3cmFwcGVyIC0tZ3JhZGxlLXZlcnNpb24gbGF0ZXN0YCB0byB1cGRhdGUgdGhlIHByb2plY3QgdG8gbGF0ZXN0IHZlcnNpb24uCgpSdW4gYGdyYWRsZXcgd3JhcHBlciAtLWdyYWRsZS12ZXJzaW9uIDcuNC4yYCB0byB1cGRhdGUgdGhlIHByb2plY3QgdG8gNy40LjIuCgojIyBMaW5rcwoKKiBPcGVuQVBJCiAgKiBbT3BlbkFQSSAzIExpYnJhcnkgZm9yIFNwcmluZyBCb290XShodHRwczovL3NwcmluZ2RvYy5vcmcvKQogICogW09wZW5BUEkgSW5pdGlhdGl2ZSAoT0FJKV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykKICAqIFtPcGVuQVBJIFNwZWMgMy4wLjFdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMSkKICAqIFtTd2FnZ2VyIENvZGVnZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4pCiAgKiBbU3dhZ2dlciBFZGl0b3JdKGh0dHA6Ly9lZGl0b3Iuc3dhZ2dlci5pby8pCiAgKiBbU3dhZ2dlciBWYWxpZGF0b3JdKGh0dHBzOi8vdmFsaWRhdG9yLnN3YWdnZXIuaW8vKQoqIFRlc3RpbmcKICAqIFtDb3JudXR1bS90Y2FzZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9Db3JudXR1bS90Y2FzZXMpIC0gQSBtb2RlbC1iYXNlZCB0ZXN0IGNhc2UgZ2VuZXJhdG9yCiAgKiBbUkVTVCBBc3N1cmVkXShodHRwOi8vcmVzdC1hc3N1cmVkLmlvLykgLSBUZXN0aW5nIGFuZCB2YWxpZGF0aW5nIFJFU1Qgc2VydmljZXMgaW4gSmF2YQogICogW1Rlc3RpbmcgdGhlIFdlYiBMYXllcl0oaHR0cHM6Ly9zcHJpbmcuaW8vZ3VpZGVzL2dzL3Rlc3Rpbmctd2ViLykgLSBTcHJpbmcgR3VpZGUKKiBHZW5lcmFsCiAgKiBbR2l0SHViIEFjdGlvbiBTZXR1cCBKYXZhXShodHRwczovL2dpdGh1Yi5jb20vYWN0aW9ucy9zZXR1cC1qYXZhKSBmb3IgdXNlIHdpdGggR2l0SHViIENvZGVRTAogICogW0dyYWRsZSBCdWlsZCBUb29sXShodHRwczovL2dyYWRsZS5vcmcvKQogICogW0dyZXR0eV0oaHR0cHM6Ly9ncmV0dHktZ3JhZGxlLXBsdWdpbi5naXRodWIuaW8vZ3JldHR5LWRvYy9hYm91dC5odG1sKSAtIGEgZmVhdHVyZS1yaWNoIGdyYWRsZSBwbHVnaW4gZm9yIHJ1bm5pbmcgd2ViLWFwcHMgb24gZW1iZWRkZWQgc2VydmxldCBjb250YWluZXJzCiAgKiBbSmF2YSBEZXZlbG9wbWVudCBFeGFtcGxlc10oaHR0cHM6Ly9naXRodWIuY29tL21uZWlmZXJiYWcvamF2YS1leGFtcGxlcykKCiMjIFRhc2tzCgotIFsgXSBVcGdyYWRlIHRvIGxhdGVzdCB2ZXJzaW9ucyBvZiBKYXZhLCBTcHJpbmcgQm9vdCwgR3JhZGxlLCBzZWUgW1VwZ3JhZGUgR3VpZGVdKC4vZG9jL3VwZ3JhZGVfZ3VpZGUuYWRvYykKLSBbIF0gQWRkIEpldHR5IGV4ZWN1dGlvbiBpbiBjaGVjayB0YXNrIGJlZm9yZSBpbnRlZ3JhdGlvbiB0ZXN0cyBhcmUgcnVuCi0gWyBdIENvbXBhcmUgZ2VuZXJhdGVkIG9wZW5hcGkueWFtbCBhbmQgYXBpX3YzLnlhbWwKLSBbIF0gQWRkIEdyYWRsZSBpbnRlZ3JhdGlvbiB0ZXN0cwogIC0gaHR0cHM6Ly9kb2NzLmdyYWRsZS5vcmcvY3VycmVudC91c2VyZ3VpZGUvbWlncmF0aW5nX2Zyb21fbWF2ZW4uaHRtbCNtaWdtdm46YnVpbGRfbGlmZWN5Y2xlCiAgLSBodHRwczovL2RvY3MuZ3JhZGxlLm9yZy9jdXJyZW50L3VzZXJndWlkZS9taWdyYXRpbmdfZnJvbV9tYXZlbi5odG1sI21pZ212bjppbnRlZ3JhdGlvbl90ZXN0cwogIC0gaHR0cHM6Ly9kb2NzLmdyYWRsZS5vcmcvY3VycmVudC91c2VyZ3VpZGUvamF2YV90ZXN0aW5nLmh0bWwjc2VjOmNvbmZpZ3VyaW5nX2phdmFfaW50ZWdyYXRpb25fdGVzdHMgCg== readmeEtag: '"7ef1418ae143b04c96c903ef4c9161a92ce702a2"' readmeLastModified: Fri, 06 Dec 2024 12:48:46 GMT repositoryId: 359082805 description: Java Spring development example. created: '2021-04-18T08:09:17Z' updated: '2025-11-24T17:30:43Z' language: Java archived: false stars: 2 watchers: 1 forks: 0 owner: mneiferbag logo: https://avatars.githubusercontent.com/u/16717541?v=4 license: MIT repoEtag: '"36a9f8bda9b83c4599a8a0a31c56567a65c9a297ba5985fdb7142d40e1fedaac"' repoLastModified: Mon, 24 Nov 2025 17:30:43 GMT category: - SDK - Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/kazuki/pyramid-oas3 v3: true repositoryMetadata: base64Readme: >- cHlyYW1pZF9vYXMzCj09PT09PT09PT09PQoKW1B5cmFtaWRdKGh0dHBzOi8vdHJ5cHlyYW1pZC5jb20vKSBXZWLjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7Pjgavlr77jgZfjgabjgIEKW09wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pIFszLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kKeOCkuWIqeeUqOOBl+OBn+OAgQrjg6rjgq/jgqjjgrnjg4jjga7mpJzoqLzjg7vjg5Hjg7zjgrnjgpLlrp/mlr3jgZnjgovjg6njgqTjg5bjg6njg6rjgafjgZnjgIIKCltweXJhbWlkX3N3YWdnZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdHJpZ2xpYS9weXJhbWlkX3N3YWdnZXIp44GuT3BlbkFQSSAzLjDlr77lv5zniYjjga7mp5jjgarkvY3nva7jgaXjgZHjgafjgZnjgIIKCuioreWumumgheebrgotLS0tLS0tLQoKKiBweXJhbWlkX29hczMudmFsaWRhdGVfcmVzcG9uc2U6IGJvb2wKICAqIOODrOOCueODneODs+OCueOBrkpTT07jgoLmpJzoqLzjgZnjgovjgYvjgpLoqK3lrprjgZfjgb7jgZko44OH44OV44Kp44Or44OIOiBGYWxzZSkKKiBweXJhbWlkX29hczMuZmlsbF9ieV9kZWZhdWx0OiBib29sCiAgKiDjg6rjgq/jgqjjgrnjg4jjg4fjg7zjgr/jgavlr77jgZfjgaZPcGVuQVBJ5a6a576p44Gn6Kit5a6a44GV44KM44GfZGVmYXVsdOWApOOBp+Wfi+OCgeOCi+OBi+OCkuioreWumuOBl+OBvuOBmSjjg4fjg5Xjgqnjg6vjg4g6IEZhbHNlKQoqIHB5cmFtaWRfb2FzMy5yZXNwb25zZV9yZXZpdmVyOiBPcHRpb25hbFtDYWxsYWJsZVtbVW5pb25baW50LCBzdHJdLCBKU09OX1RZUEVTXSwgVW5pb25bSlNPTl9UWVBFUywgcHlyYW1pZF9vYXMzLlVOREVGSU5FRF1dXQogICogSlNPTl9UWVBFUzogVW5pb25baW50LCBmbG9hdCwgc3RyLCBib29sLCBOb25lLCBsaXN0LCBkaWN0XQogICogW0pTT04ucGFyc2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2phL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0pTT04vcGFyc2Up44GucmV2aXZlcuOBqOWQjOanmOOBruWHpueQhuOCkuOAgQogICAg44Os44K544Od44Oz44K544K544Kt44O844Oe5qSc6Ki85a6f6KGM5YmN44Gr6YGp55So44GZ44KL44KI44GG44Gr44GX44G+44GZCiAgKiDjg4fjg5Xjgqnjg6vjg4g6IE5vbmUgKHJldml2ZXLjgpLpgannlKjjgZfjgarjgYQpCgrkvb/jgYTmlrkKLS0tLS0tCgrku6XkuIvjga7jgojjgYbjgavoqK3lrprjgZfjgaZweXJhbWlk44Gr57WE44G/6L6844G/44G+44GZCgpgYGAKc2V0dGluZ3MgPSB7CiAgICAncHlyYW1pZC5pbmNsdWRlcyc6ICdweXJhbWlkX29hczMnLAogICAgJ3B5cmFtaWRfb2FzMy5zY2hlbWEnOiB5YW1sLmxvYWQob3Blbignc2NoZW1hLnlhbWwnKS5yZWFkKCkpLAogICAgJ3B5cmFtaWRfb2FzMy52YWxpZGF0ZV9yZXNwb25zZSc6IFRydWUsCiAgICAncHlyYW1pZF9vYXMzLmZpbGxfYnlfZGVmYXVsdCc6IFRydWUsCn0KYGBgCgrmpJzoqLzlpLHmlZfmmYLjga/ku6XkuIvjga7kvovlpJbjgYzov5TljbTjgZXjgozjgovjga7jgafjgIEK6YGp5a6cZXhjZXB0aW9uX3ZpZXdfY29uZmln44KS6Kit5a6a44GX44Gm44GP44Gg44GV44GECgoqIHB5cmFtaWRfb2FzMy5WYWxpZGF0aW9uRXJyb3JzOiDjg6rjgq/jgqjjgrnjg4jjg4fjg7zjgr/jga7jgrnjgq3jg7zjg57mpJzoqLzlpLHmlZfmmYIKKiBweXJhbWlkX29hczMuUmVzcG9uc2VWYWxpZGF0aW9uRXJyb3I6IOODrOOCueODneODs+OCueODh+ODvOOCv+OBruOCueOCreODvOODnuaknOiovOWkseaVl+aZggoqIHB5cmFtaWQuaHR0cGV4Y2VwdGlvbnMuSFRUUEJhZFJlcXVlc3Q6IOOCr+OCqOODquaWh+Wtl+WIl+OBruODkeODvOOCueWkseaVl+aZggoqIHB5cmFtaWQuaHR0cGV4Y2VwdGlvbnMuSFRUUE5vdEFjY2VwdGFibGU6IOODquOCr+OCqOOCueODiOOBrkNvbnRlbnRUeXBl44Gr5a++5b+c44GZ44KL44KC44Gu44GM44K544Kt44O844Oe44Gr44Gq44GECu+8inB5cmFtaWQuaHR0cGV4Y2VwdGlvbnMuSFRUUFVuYXV0aG9yaXplZDog44Oq44Kv44Ko44K544OI44Gr6KqN6Ki85oOF5aCx44GM44Gq44GECgrku6XkuIvjgatleGNlcHRpb25fdmlld19jb25maWfjga7kvovjgpLnpLrjgZfjgb7jgZkKCmBgYApmcm9tIHB5cmFtaWQudmlldyBpbXBvcnQgZXhjZXB0aW9uX3ZpZXdfY29uZmlnCgoKQGV4Y2VwdGlvbl92aWV3X2NvbmZpZyhWYWxpZGF0aW9uRXJyb3JzKQpkZWYgZmFpbGVkX3JlcXVlc3RfdmFsaWRhdGlvbihleGMsIHJlcXVlc3QpOgogICAgcmVzID0gUmVzcG9uc2Uoc3RyKGV4YykpCiAgICByZXMuc3RhdHVzX2ludCA9IDQwMAogICAgcmV0dXJuIHJlcwoKCkBleGNlcHRpb25fdmlld19jb25maWcoUmVzcG9uc2VWYWxpZGF0aW9uRXJyb3IpCmRlZiBmYWlsZWRfcmVzcG9uc2VfdmFsaWRhdGlvbihleGMsIHJlcXVlc3QpOgogICAgcmVzID0gUmVzcG9uc2Uoc3RyKGV4YykpCiAgICByZXMuc3RhdHVzX2ludCA9IDUwMAogICAgcmV0dXJuIHJlcwpgYGAK readmeEtag: '"45a75ae5ea6328152c11af6b0ad211d723675ad2"' readmeLastModified: Thu, 25 Apr 2019 13:40:30 GMT repositoryId: 112933976 description: null created: '2017-12-03T14:18:57Z' updated: '2019-04-26T06:43:22Z' language: Python archived: false stars: 2 watchers: 2 forks: 0 owner: kazuki logo: https://avatars.githubusercontent.com/u/163226?v=4 license: MIT repoEtag: '"0f2a2e918ea0fcca55c199547d678bcfebd7cf6e4e808cc3683780a4cc41f462"' repoLastModified: Fri, 26 Apr 2019 06:43:22 GMT foundInMaster: true category: Data Validators id: b74d0bbb2c4a0daba1f64cbd0694fb89 - source: openapi3 tags repository: https://github.com/essentialprogramming/spring-boot-openapi v3: true repositoryMetadata: base64Readme: >- IyMgU2FtcGxlIFNwcmluZyBCb290IFJFU1RmdWwgc2VydmljZSB1c2luZyBPcGVuQVBJIDMKCiMjIyBTdGVwIDEgLSBBZGRpbmcgT3BlbkFQSSB0byBvdXIgcHJvamVjdAoKRmlyc3QsIHdlIG5lZWQgdG8gYWRkIHRoZSBkZXBlbmRlbmN5IHRvIG91ciBwb20ueG1sOgpgYGAKPGRlcGVuZGVuY3k+CiAgICA8Z3JvdXBJZD5vcmcuc3ByaW5nZG9jPC9ncm91cElkPgogICAgPGFydGlmYWN0SWQ+c3ByaW5nZG9jLW9wZW5hcGktdWk8L2FydGlmYWN0SWQ+CiAgICA8dmVyc2lvbj4xLjUuMTA8L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgCgpUaGVuIHdlIG5lZWQgdG8gYWRkIHRoZSBjb25maWd1cmF0aW9uIGNsYXNzIHRvIG91ciBwcm9qZWN0OgpgYGAKQENvbmZpZ3VyYXRpb24KcHVibGljIGNsYXNzIFN3YWdnZXJDb25maWcgewoKICAgIC8qCiAgICBVc2VyIEFQSQogICAgICovCiAgICBAQmVhbgogICAgcHVibGljIEdyb3VwZWRPcGVuQXBpIHVzZXJBcGkoKSB7CiAgICAgICAgZmluYWwgU3RyaW5nW10gcGFja2FnZXNUb1NjYW4gPSB7ImNvbS5jb250cm9sbGVyIn07CiAgICAgICAgcmV0dXJuIEdyb3VwZWRPcGVuQXBpCiAgICAgICAgICAgICAgICAuYnVpbGRlcigpCiAgICAgICAgICAgICAgICAuZ3JvdXAoIlVzZXIgQVBJIikKICAgICAgICAgICAgICAgIC5wYWNrYWdlc1RvU2NhbihwYWNrYWdlc1RvU2NhbikKICAgICAgICAgICAgICAgIC5wYXRoc1RvTWF0Y2goIi91c2Vycy8qKiIpCiAgICAgICAgICAgICAgICAuYWRkT3BlbkFwaUN1c3RvbWlzZXIoc3RhdHVzQXBpQ29zdHVtaXplcigpKQogICAgICAgICAgICAgICAgLmJ1aWxkKCk7CiAgICB9CgogICAgcHJpdmF0ZSBPcGVuQXBpQ3VzdG9taXNlciBzdGF0dXNBcGlDb3N0dW1pemVyKCkgewogICAgICAgIHJldHVybiBvcGVuQVBJIC0+IG9wZW5BUEkKICAgICAgICAgICAgICAgIC5pbmZvKG5ldyBJbmZvKCkKICAgICAgICAgICAgICAgICAgICAgICAgLnRpdGxlKCJTcHJpbmdib290ICYgT3BlbkFQSSIpCiAgICAgICAgICAgICAgICAgICAgICAgIC5kZXNjcmlwdGlvbigiVGhpcyBpcyBhIHNhbXBsZSBTcHJpbmcgQm9vdCBSRVNUZnVsIHNlcnZpY2UgdXNpbmcgT3BlbkFQSSIpCiAgICAgICAgICAgICAgICAgICAgICAgIC52ZXJzaW9uKCIzLjAuMCIpCiAgICAgICAgICAgICAgICAgICAgICAgIC5jb250YWN0KG5ldyBDb250YWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmFtZSgiUmF6dmFuIFByaWNoaWNpIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudXJsKCJodHRwczovL2dpdGh1Yi5jb20vZXNzZW50aWFscHJvZ3JhbW1pbmciKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lbWFpbCgicmF6dmFucGF1bHBAZ21haWwuY29tIikpKTsKICAgIH0KCiAgICBAQmVhbgogICAgcHVibGljIE9wZW5BUEkgY3VzdG9tT3BlbkFQSSgpIHsKICAgICAgICByZXR1cm4gbmV3IE9wZW5BUEkoKQogICAgICAgICAgICAgICAgLmNvbXBvbmVudHMobmV3IENvbXBvbmVudHMoKSkKICAgICAgICAgICAgICAgIC5pbmZvKG5ldyBJbmZvKCkudGl0bGUoIkNvbnRhY3QgQXBwbGljYXRpb24gQVBJIikuZGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIGEgc2FtcGxlIFNwcmluZyBCb290IFJFU1RmdWwgc2VydmljZSB1c2luZyBzcHJpbmdkb2Mtb3BlbmFwaSBhbmQgT3BlbkFQSSAzLiIpKTsKICAgIH0KCn0KYGBgCgojIyMgU3RlcCAyIC0gTG9va2luZyBhdCBTd2FnZ2VyCgpGb2xsb3dpbmcgVVJMJ3MgYXJlIG5vdyBhd2FpbGFibGUuCgpUaGUgZmlyc3Qgb25lIHJlcHJlc2VudHMgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4KCltodHRwOi8vbG9jYWxob3N0OjgwODAvdjMvYXBpLWRvY3NdKGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC92My9hcGktZG9jcykKCiFbQVBJIERvY3NdKHNyYy9tYWluL3Jlc291cmNlcy9pbWcvYXBpLWRvY3MucG5nKQoKVGhlIHNlY29uZCBvbmUgcmVwcmVzZW50cyB0aGUgU3dhZ2dlciBVSSwgd2hpY2ggd2UgY2FuIG5vdyB1c2UgdG8gaW52b2tlIGFuZCBleHBsb3JlIG91ciBBUEkuCgpbU3dhZ2dlciBVSV0oaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N3YWdnZXItdWkuaHRtbCkKCiFbU3dhZ2dlciBVSV0oc3JjL21haW4vcmVzb3VyY2VzL2ltZy9zd2FnZ2VyLXVpLnBuZykKCkZvciBhbiBlYXNpZXIgYWNjZXNzLCB3ZSBjYW4gY2hhbmdlIHRoZSBTd2FnZ2VyIFVJIFVSTCB0byBhbnl0aGluZyB0aGF0IHdlIHdhbnQuCgpGb3IgdGhhdCwgd2UgbmVlZCB0byBhY2Nlc3MgYGFwcGxpY2F0aW9uLnByb3BlcnRpZXNgIGFuZCBhZGQgdGhlIGZvbGxvd2luZyBwcm9wZXJ0eToKCmBzcHJpbmdkb2Muc3dhZ2dlci11aS5wYXRoPS9hcGlkb2NgCgpUaGlzIHdpbGwgc2V0IG91ciBTd2FnZ2VyIFVJIFVSTCB0bzogW2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGlkb2NdKGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGlkb2MpCgojIyMgU3RlcCAzIC0gQWRkIGFubm90YXRpb25zIHRvIGVuZHBvaW50cwoKSW4gb3JkZXIgZm9yIG91ciBlbmRwb2ludHMgdG8gYmUgdmlzaWJsZSBpbiBTd2FnZ2VyLCB3ZSBuZWVkIHRvIG1hcmsgZWFjaCBvZiB0aGVtIHdpdGggYEBPcGVyYXRpb25gIHRhZy4KCkhlcmUgaXMgYW4gZXhhbXBsZToKCmBgYAogICAgQFBvc3RNYXBwaW5nKCIvdXNlcnMiKQogICAgQE9wZXJhdGlvbihzdW1tYXJ5ID0gIlJlZ2lzdGVyIGEgbmV3IHVzZXIiLCB0YWdzID0geyJVc2VyIix9LAogICAgICAgICAgICByZXNwb25zZXMgPSB7CiAgICAgICAgICAgICAgICAgICAgQEFwaVJlc3BvbnNlKHJlc3BvbnNlQ29kZSA9ICIyMDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAiUmV0dXJucyB0aGUgcmVnaXN0ZXJlZCB1c2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBAQ29udGVudChtZWRpYVR5cGUgPSAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYSA9IEBTY2hlbWEoaW1wbGVtZW50YXRpb24gPSBVc2VyLmNsYXNzKSkpCiAgICAgICAgICAgIH0pCiAgICBAUmVzcG9uc2VCb2R5CiAgICBwdWJsaWMgVXNlciByZWdpc3RlcihAUmVxdWVzdFBhcmFtKG5hbWUgPSAibmFtZSIsIHJlcXVpcmVkID0gZmFsc2UsIGRlZmF1bHRWYWx1ZSA9ICJTdHJhbmdlciIpIFN0cmluZyBuYW1lKSB7CiAgICAgICAgVXNlciBuZXdVc2VyID0gbmV3IFVzZXIoY291bnRlci5pbmNyZW1lbnRBbmRHZXQoKSwgbmFtZSk7CiAgICAgICAgcmV0dXJuIHVzZXJSZXBvc2l0b3J5LmFkZFVzZXIobmV3VXNlcik7CiAgICB9CmBgYAoKIyMjIFN0ZXAgNCAtIEdlbmVyYXRlIGEgY2xpZW50CgpUaGUgYWR2YW50YWdlIG9mIGhhdmluZyB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGF2YWlsYWJsZSBpcyB0aGF0CmdlbmVyYXRpbmcgYSBjbGllbnQgY29kZSB0byBjYWxsIG91ciBBUEkgaXMgbm93IHF1aXRlIGVhc3kuCgpGb3IgdGhpcywgd2UgY2FuIHVzZSB2YXJpb3VzIHRvb2xzIHN1Y2ggYXM6IFtPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoLykK readmeEtag: '"d4b118ef37a6eca8ebc8d3a2e785743e7156776c"' readmeLastModified: Wed, 15 Jun 2022 06:15:51 GMT repositoryId: 408620019 description: Documenting a Spring REST API Using OpenAPI 3.0 created: '2021-09-20T22:38:37Z' updated: '2024-10-10T00:06:56Z' language: Java archived: false stars: 2 watchers: 1 forks: 6 owner: essentialprogramming logo: https://avatars.githubusercontent.com/u/46305342?v=4 license: GPL-3.0 repoEtag: '"1d53aa5ec4761dd65b952a7a9fd0db7d2b227e780938eafe0a65f2b8fc9129c0"' repoLastModified: Thu, 10 Oct 2024 00:06:56 GMT foundInMaster: true category: - SDK - Parsers id: 91740500afb5ab47cf98d36b27a38045 - source: openapi3 tags repository: https://github.com/chunhei2008/swagger-php-annotation v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyLVBIUCBBbm5vdGF0aW9uCgojIyBJbnN0YWxsCgrlronoo4Xmj5Lku7bvvJoKcGhwc3Ryb206IFBIUCBBbm5vdGF0aW9uCgrlhbfkvZNgdGVtcGxhdGVzYOi3r+W+hOWPguiAg1vmlofmoaNdKGh0dHBzOi8vd3d3LmpldGJyYWlucy5jb20vaGVscC9waHBzdG9ybS90dW5pbmctdGhlLWlkZS5odG1sI2RlZmF1bHQtZGlycykKCmBgYHNoCgpnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2NodW5oZWkyMDA4L3N3YWdnZXItcGhwLWFubm90YXRpb24uZ2l0CgpjZCBzd2FnZ2VyLXBocC1hbm5vdGF0aW9uCgojIOWwhmBzd2FnZ2VyLXBocC1hbm5vdGF0aW9uLnhtbGDlpI3liLbliLBgdGVtcGxhdGVzYOebruW9lQpjcCBzd2FnZ2VyLXBocC1hbm5vdGF0aW9uLnhtbCBbcGhwc3Ryb20vdGVtcGxhdGVzL3BhdGhdCgojIHJlc3RhcnQgeW91ciBwaHBzdHJvbQoKYGBgCgojIyBVc2FnZQoKIyMjIOS4iuS4i+aWh+ivtOaYjgoKYHN3YWdnZXItcGhwLWFubm90YXRpb25g5ZyoYHBocHN0cm9tYOS4reWIhuS4uuS4pOenjeS4iuS4i+aWhwoKMS4g5rOo6YeK5LiK5LiL5paH77ya5rOo6YeK5Z2X5LitCjIuIOmdnuazqOmHiuS4iuS4i+aWh++8muazqOmHiuWdl+S5i+WklueahOepuueZveWkhAoK5ZCM5LiA5Liq5rOo6Kej5YiG5Lik56eN5LiK5LiL5paH5L2/55So5Zy65pmv77yM5LiN5ZCM5Zy65pmv5L2/55So5LiN5ZCM55qE5qCH6K+G56ymCgrlpoLvvJoKCmBAR2V0YCDlkowgYEBHZXRfYCDpg73mmK9IVFRQIGBHRVRgIOivt+axggoKYEBHZXRfYCDkuLrms6jph4rkuIrkuIvmlofkvb/nlKgKYEBHZXRgIOS4uumdnuazqOmHiuS4iuS4i+aWh+S9v+eUqAoKCiMjIyDmlK/mjIHnmoTms6jop6PliJfooagKCi0gQEdldCBAR2V0XwotIEBQb3N0IEBQb3N0XwotIEBQdXQgQFB1dF8KLSBARGVsZXRlIEBEZWxldGVfCi0gQEluZm8gQEluZm9fCi0gQFRhZyBAVGFnXwotIEBJdGVtc18KLSBASnNvbkNvbnRlbnRfCi0gQE1lZGlhVHlwZV8KLSBAUGFyYW1ldGVyXwotIEBQcm9wZXJ0eSBAUHJvcGVydHlfCi0gQFJlcXVlc3RCb2R5IEBSZXF1ZXN0Qm9keV8KLSBAUmVzcG9uc2UyMDBfIEBSZXNwb25zZV8KLSBAU2NoZW1hIEBTY2hlbWFfCi0gQFNlY3VyaXR5U2NoZW1lIEBTZWN1cml0eVNjaGVtZV8KCgojIyDlj4LogIPmlofmoaMKCi0gW3N3YWdnZXItcGhwIEFubm90YXRpb25zXShodHRwczovL2dpdGh1Yi5jb20vemlyY290ZS9zd2FnZ2VyLXBocC90cmVlL21hc3Rlci9zcmMvQW5ub3RhdGlvbnMpCi0gW09wZW5BUEkgMy4wIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyk= readmeEtag: '"6dab04c7726062b623a5482878419c661a3e82ea"' readmeLastModified: Sat, 07 Aug 2021 23:35:46 GMT repositoryId: 389693571 description: Easy to use Swagger-PHP Annotation in PhpStrom created: '2021-07-26T16:09:17Z' updated: '2021-08-07T23:35:56Z' language: null archived: false stars: 2 watchers: 1 forks: 0 owner: chunhei2008 logo: https://avatars.githubusercontent.com/u/4560568?v=4 repoEtag: '"cc5dcc66f021c273da08f43c57907500f0cfc1191a02b1d0a404d78588ea67b0"' repoLastModified: Sat, 07 Aug 2021 23:35:56 GMT foundInMaster: true category: Code Generators id: 30d97397c2ead83a2d582bfbf7b32ae2 - source: openapi3 tags repository: https://github.com/liam-deacon/online-store-rest-api v3: true repositoryMetadata: base64Readme: >- IyBPbmxpbmUgU3RvcmUgRXhhbXBsZQoKPCEtLWxpbnQgZGlzYWJsZSBsaXN0LWl0ZW0taW5kZW50IC0tPgo8IS0tbGludCBkaXNhYmxlIGxpc3QtaXRlbS1zcGFjaW5nIC0tPgo8IS0tbGludCBkaXNhYmxlIG5vLWlubGluZS1wYWRkaW5nLS0+ClshWyBdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vc3RhdGljL3YxP2xhYmVsPWRlbW8mbWVzc2FnZT1SRVNUJTIwQVBJJmNvbG9yPWRhcmtvcmNoaWQmbG9nbz1IZXJva3UmbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly9vbmxpbmUtc3RvcmUtZmxhc2stcmVzdC1hcGkuaGVyb2t1YXBwLmNvbS9hcGlkb2NzLykKWyFbIF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9zdGF0aWMvdjE/bGFiZWw9ZG9jcyZtZXNzYWdlPUdpdEh1YiUyMFBhZ2VzJmNvbG9yPW9yYW5nZSZsb2dvPVJlYWQlMjBUaGUlMjBEb2NzJmxvZ29Db2xvcj13aGl0ZSldKGh0dHBzOi8vbGlhbS1kZWFjb24uZ2l0aHViLmlvL29ubGluZS1zdG9yZS1yZXN0LWFwaS8pClshWyBdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vc3RhdGljL3YxP2xhYmVsPWRvY2tlciZtZXNzYWdlPWltYWdlJmNvbG9yPTBkYjdlZCZsb2dvPURvY2tlciZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvbGlnaHRieXRlcy9vbmxpbmVfc3RvcmVfYmFja2VuZCkKWyFbR2l0SHViIHB1bGwtcmVxdWVzdHMgY2xvc2VkXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMtcHItY2xvc2VkL2xpYW0tZGVhY29uL29ubGluZS1zdG9yZS1yZXN0LWFwaS5zdmc/bG9nbz1HaXQmbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly9HaXRIdWIuY29tL2xpYW0tZGVhY29uL29ubGluZS1zdG9yZS1yZXN0LWFwaS9wdWxscy8pClshW1B5dGhvbiBDSV0oaHR0cHM6Ly9naXRodWIuY29tL0xpYW0tRGVhY29uL29ubGluZS1zdG9yZS1yZXN0LWFwaS93b3JrZmxvd3MvUHl0aG9uJTIwQ0kvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL0xpYW0tRGVhY29uL29ubGluZS1zdG9yZS1yZXN0LWFwaS9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBIlB5dGhvbitDSSIpClshW0Zyb250ZW5kIERvY2tlciBDSS9DRF0oaHR0cHM6Ly9naXRodWIuY29tL0xpYW0tRGVhY29uL29ubGluZS1zdG9yZS1yZXN0LWFwaS93b3JrZmxvd3MvRnJvbnRlbmQlMjBEb2NrZXIlMjBDSS9DRC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vTGlhbS1EZWFjb24vb25saW5lLXN0b3JlLXJlc3QtYXBpL2FjdGlvbnM/cXVlcnk9d29ya2Zsb3clM0ElMjJGcm9udGVuZCtEb2NrZXIrQ0klMkZDRCUyMikKWyFbQmFja2VuZCBEb2NrZXIgQ0kvQ0RdKGh0dHBzOi8vZ2l0aHViLmNvbS9MaWFtLURlYWNvbi9vbmxpbmUtc3RvcmUtcmVzdC1hcGkvd29ya2Zsb3dzL0JhY2tlbmQlMjBEb2NrZXIlMjBDSS9DRC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vTGlhbS1EZWFjb24vb25saW5lLXN0b3JlLXJlc3QtYXBpL2FjdGlvbnM/cXVlcnk9d29ya2Zsb3clM0ElMjJCYWNrZW5kK0RvY2tlcitDSSUyRkNEJTIyKQpbIVtTcGhpbnggRG9jdW1lbnRhdGlvbiBDSV0oaHR0cHM6Ly9naXRodWIuY29tL0xpYW0tRGVhY29uL29ubGluZS1zdG9yZS1yZXN0LWFwaS93b3JrZmxvd3MvU3BoaW54JTIwRG9jdW1lbnRhdGlvbiUyMENJL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9MaWFtLURlYWNvbi9vbmxpbmUtc3RvcmUtcmVzdC1hcGkvYWN0aW9ucz9xdWVyeT13b3JrZmxvdyUzQSUyMlNwaGlueCtEb2N1bWVudGF0aW9uK0NJJTIyKQohWyBdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vc3RhdGljL3YxP2xhYmVsPXB5dGhvbiZtZXNzYWdlPXYzLjYlMjAtJTIwMy45JmNvbG9yPWJsdWUmbG9nbz1weXRob24mbG9nb0NvbG9yPXdoaXRlKQpbIVsgXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIvTGlhbS1EZWFjb24vb25saW5lLXN0b3JlLXJlc3QtYXBpL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL0xpYW0tRGVhY29uL29ubGluZS1zdG9yZS1yZXN0LWFwaT9icmFuY2g9bWFzdGVyKQpbIVsgXShodHRwczovL2NvZGVjb3YuaW8vZ2gvbGlhbS1kZWFjb24vb25saW5lLXN0b3JlLXJlc3QtYXBpL2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2xpYW0tZGVhY29uL29ubGluZS1zdG9yZS1yZXN0LWFwaSkKWyFbIF0oaHR0cHM6Ly9hcGkuY29kYWN5LmNvbS9wcm9qZWN0L2JhZGdlL0dyYWRlL2RlNTcxZDk4YjVlZDQyMDNiNmVkYTVmOTI3Yzg4MzVkKV0oaHR0cHM6Ly93d3cuY29kYWN5LmNvbS9naC9saWFtLWRlYWNvbi9vbmxpbmUtc3RvcmUtcmVzdC1hcGk/dXRtX3NvdXJjZT1naXRodWIuY29tJmFtcDt1dG1fbWVkaXVtPXJlZmVycmFsJmFtcDt1dG1fY29udGVudD1saWFtLWRlYWNvbi9vbmxpbmUtc3RvcmUtcmVzdC1hcGkmYW1wO3V0bV9jYW1wYWlnbj1CYWRnZV9HcmFkZSkKWyFbIF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jb2RlZmFjdG9yL2dyYWRlL2dpdGh1Yi9saWFtLWRlYWNvbi9vbmxpbmUtc3RvcmUtcmVzdC1hcGk/bG9nbz1jb2RlZmFjdG9yKV0oaHR0cHM6Ly93d3cuY29kZWZhY3Rvci5pby9yZXBvc2l0b3J5L2dpdGh1Yi9saWFtLWRlYWNvbi9vbmxpbmUtc3RvcmUtcmVzdC1hcGkpCiFbIF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9kZXYtT3BlbiUyMGluJTIwR2l0cG9kLWJsdWU/bG9nbz1naXRwb2QmbGluaz1odHRwczovL2dpdHBvZC5pby8jaHR0cHM6Ly9naXRodWIuY29tL2xpYW0tZGVhY29uL29ubGluZS1zdG9yZS1yZXN0LWFwaSkKWyFbIF0oaHR0cHM6Ly9jYW1vLmdpdGh1YnVzZXJjb250ZW50LmNvbS81MmZlYWRlMDZmMmZlY2JmMDA2ODg5YTkwNGQyMjFlNmE3MzBjMTk0LzY4NzQ3NDcwNzMzYTJmMmY2MzZmNmM2MTYyMmU3MjY1NzM2NTYxNzI2MzY4MmU2NzZmNmY2NzZjNjUyZTYzNmY2ZDJmNjE3MzczNjU3NDczMmY2MzZmNmM2MTYyMmQ2MjYxNjQ2NzY1MmU3Mzc2NjcpXShodHRwczovL2NvbGFiLnJlc2VhcmNoLmdvb2dsZS5jb20vZ2l0aHViL2xpYW0tZGVhY29uL29ubGluZS1zdG9yZS1yZXN0LWFwaSkKWyFbIF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9CaW5kZXIlMjBMYXVuY2g6LUp1cHl0ZXIlMjBMYWItYmx1ZS5zdmc/Y29sb3JBPSZsb2dvPWRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQndBQUFBY0NBWUFBQUJ5RGQrVUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUFCM1JKVFVVSDRnc0VBRGt2eXI4R2pBQUFCUVpKUkVGVVNNZVZsbmxzVkZVVWg3LzdadWt3cFF4ZG9LMnlHR2dxWUZLTVFreURVVkJaSkVDUUVFUlpWTFFFYTRpS2lnZ2lGamZxYmtBRGhWU2dFVmtFVFZTaUpCQVRzRUlSamExUm9Dd3VVNWdDN1F3dzAzWm0zcnpySC9kT2ZKU1pVbTR5Nlh0OTk1N3Zubk4vNTV3cnVJN1JWak1OUUFBM0FpWDZieHc0QlRRQVFRRHZuRjFwYllqckFBRVVBbVhBREdBUTBBT1F3Q1dnSHFnR2RnQ1JkTkJyQW0yd1c0QTF3TjJBQ1p3Ry9nYmNRQkZ3Zy9aMkkvQVMwSm9LYW5Rem1vWEFhbUEwY0J4NEVoZ0RUQVltQXZjQXJ3TmhZRDZ3SEhEYk50czlEMjBMbGdNcmdXUEFYS0FPL2o4clBjOEE1dWlOQVV3SDl0am5kZGZEQW4xbUZrSld5b1JSNThoc3Y4S0lmcmFBei9RdkMzZ29sZjJVd0VCWkJZR3lDb0pmai9MRnovY2VEeFJKMDlIY2Niei82ZER1MG96ZzdsSUNaUlZYck5GUUV5V2FEbUFra05zbE1BblNFNTl4OUlyc01WdDhhd0JQNHJJM1A5YWNzODNoQzMrQmtGTUFkMmVvSG44QnJkcEc3N1JBMitJaVlEUHdIbkFiRUFPa01HUU1jQUtUZE5oZUJYcW1nRG9CaHc2eGRhMlE5dEdIUGhFNGhSVGxycnhRR1JCMjlJcUUzSVV0VHlERnU5clFDOEFpd0FpVVZkZ0ZOaFRJQTg1b1Q2OEcybmI1T0RBQkpmMjVuaUwvZW1mZXhYMUFBMElXZUlyOHhXYlkreUt3QkpWekM0RlNtNzFNbEZJZHdINTA1VW5uWVQ1S1dSYXdDdmdwMGVZQkNLRXFTQndwRnVWTXFwMmE1UTFXTzZUY2FraVo1NURXd3lWVkt4REM4Z0xQQTFPQUpoMzJxOHFjSFRnRUtFYmwybmNBdWE5OWxQeTJGZGdza0gyRmxGWE5JOElWZXdjTzhQK1dVeWpyOHZxUGZtdnQrcGxobVZsdElKZWlsTG9LK0NXVm9weTI1MExBZ3lyRUxjbC85bkIvaXhrYkYzR0t5T0ovckpzOGh4TkRaeDFLREZ2c3orOWpKdklOQVF6MUVLdnhSN09kZHpycm95WEdpUlY1enZwMVdQbFN6TjdiSlZDbUV0S0RGMzhraGd1UWVSNWlCUllHRm9hWmFVVXY5WXNFYytLR1lmcTl2c3NOMXFEc1AyTURIUlppWUJSWHBvRU13YTFYQWUzR200QTJZRERRMXo3SlRieXZHM08xaFhFdmNOSTB4RlB6VGg1WnVlQjRIZVhINmhvR1Ixb25DMlNsaFFnRDVSbkVsN2t3WFRPcWZ1NFNlQlQ0UTUvalZJQnRMMjlLZm5zVUdBZWNzSVNZKytXK21wb2h3UXVqWEpZbFBBbnpoMkhCYzdVeHcxaUdTcFUyVkF1N0M2QXoxQTY4Z0VyNFpJNk5YVDc4UGt4aDlKRXdVNEpsR3NZYk8zYStjN2c1MC9lc0ZHSXFjQmI0ZkV6Z05CbFd3Z0kyQVZzQUgxM1Ywb0wxSzVMdk5jQk9ZQUN3c2ZiN3FpWDNuMm1jbUdYR2lyUGpIZjh1UEhxdy9YeS9JZXVBVi9URzNnYU9BR3lmUHdKVWJtNEhvc0FkcEtpbHprN3ZJVlQxaUFQVFRXRzhPZjVNWS92SUZuOFB0MlVWWmtmYnFpMGh2RnJGbGNCYVFObzJES294dDZDcWpRODRuektrdGtWK1lJRStoejFPYVVWeW91MGlLeDQxQkFSMDJLWUI3d01kbldCSm00YU9nT3o4TVdVRFRwYTYvTmF6R2RVbG84YzJadVZ1a2RCV2ZPbkN0SGxmZlhBd2RQc0VLMm80N0p1MGkyTXlzQXQxeHhrTHRPcHdwd3pwRmQ0K3NPSFhLSERBSWExNllOVEpySnpTM3g5WlZkdm95K1diZWNOVExmVUNzN1hkL2FRcjN1bUd5MHJnc2hJaFE4cE5ocFNtSWVWelRabTlwbmpOdUxETFhUOTdnS2RSS1hVV1hVdnQzcVVOcVgxb1l6MkJqMUgzbVhQQUJoMjJKbFJudUJsNERIV1BBVmdLZkFqSXprRG50WUI2aElIRktQWE8wZ2JMVVFwMG9PNDlYdjFlQ1h5U0N0WXREenQ1NmtVMTU5bW9RdWxEcWZFY2NBRDRGRGdFSkZMQnJndG9nNEk2cjM2b0cwSUMxZDBEcU5aRU9oakFmemd3Nkx1bFVGM0NBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNExURXhMVEEwVkRBd09qVTNPalEzTFRBME9qQXdMdE45VXdBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPQzB4TVMwd05GUXdNRG8xTnpvME55MHdORG93TUYrT3hlOEFBQUFBU1VWT1JLNUNZSUk9KV0oaHR0cHM6Ly9teWJpbmRlci5vcmcvdjIvZ2gvbGlhbS1kZWFjb24vb25saW5lLXN0b3JlLXJlc3QtYXBpL21hc3Rlcj91cmxwYXRoPWxhYikKCjwhLS1saW50IGVuYWJsZSBuby1pbmxpbmUtcGFkZGluZy0tPgoKIyMgQ29tcG9uZW50cyDwn5Oy8J+nqQoKVGhlcmUgaXMgYSBWdWUuanMgYmFzZWQgZnJvbnQtZW5kIGZvciBkaXNwbGF5aW5nIHJlYWN0aXZlIHdlYiBwYWdlcyB0byB0aGUgdXNlcgphbmQgYSBQeXRob24gRmxhc2sgYmFja2VuZCBmb3Igc2VydmluZyB0aGUgb25saW5lIHN0b3JlIFJFU1QgQVBJLgoKIyMjIFJ1bm5pbmcgVGhlIE5vZGUuSlMgRnJvbnRlbmQg8J+Pg+KAjeKZgO+4j+KYlfCfk5wKClRoZSBmcm9udGVuZCBjYW4gYmUgc3RhcnRlZCB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYGJhc2gKJCBucG0gcnVuIGZyb250ZW5kOnN0YXJ0ICAjIHN0YXJ0cyBWdWUuanMgYXBwIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MApgYGAKCk5vdGUgdGhhdCB0aGUgZnJvbnRlbmQgY2FuIGJlIGZvdW5kIHVuZGVyIGBvbmxpbmVfc3RvcmUvZnJvbnRlbmRgIChXSVApLgoKIyMjIFJ1bm5pbmcgVGhlIFB5dGhvbiBCYWNrZW5kIPCfj4PigI3imYLvuI/wn5CN8J+UmgoKVGhlIGJhY2tlbmQgY2FuIGJlIHN0YXJ0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGBiYXNoCiQgZXhwb3J0IEZMQVNLX0RFQlVHPTEgICMgZm9yIGRldmVsb3BtZW50IHdpdGggbGl2ZSByZWxvYWQKJCBleHBvcnQgRkxBU0tfRU5WSVJPTk1FTlQ9ZGV2ZWxvcG1lbnQgICMgdGhpcyBpcyB0aGUgZGVmYXVsdAokIFBZVEhPTlBBVEg9Jy4nIHB5dGhvbjMgbWFuYWdlLnB5IHJ1bgpgYGAKCiMjIEJhY2tncm91bmQg8J+TlgoKVGhpcyByZXBvc2l0b3J5IHdhcyBjcmVhdGVkIHRvIHNvbHZlIHRoZSAKW1ByZXpvbGEgVGVjaG5pY2FsIENoYWxsZW5nZV0oaHR0cHM6Ly9naXRodWIuY29tL3ByZXpvbGEvdGVjaG5pY2FsLWNoYWxsZW5nZSksCndoaWNoIHJlcXVpcmVzIGEgc29sdXRpb24gY2FwYWJsZSBvZiBhZGRpbmcsIHJlbW92aW5nIGFuZCBsaXN0aW5nIChhZGRlZCkgZ2lmdHMKZnJvbSBhIGxpc3QuIEl0IGFsc28gcmVxdWlyZWQgYSBtZWNoYW5pc20gdG8gcHVyY2hhc2UgYSBnaWZ0IGZyb20gdGhlIGxpc3QgYW5kCmdlbmVyYXRlIGEgcmVwb3J0IChvZiBwdXJjaGFzZWQgdnMgbm9uLXB1cmNoYXNlZCkgZ2lmdHMuICAKClRoaXMgY29kZSBwcm9qZWN0IHRha2VzIHRoYXQgY29uY2VwdCBhbmQgZXh0ZW5kcyBpdCB0byBhIGdlbmVyaWMgKGdpZnQpIHN0b3JlLgoKIyMgVGhlIGNoYWxsZW5nZQoKXyJXcml0ZSBhIHByb2dyYW0gdG8gdGhlIGJlc3Qgb2YgeW91ciBrbm93bGVkZ2Ugd2hpY2ggd2lsbCBhbGxvdyB0aGUgdXNlciB0b18KX21hbmFnZSBhIHNpbmdsZSBsaXN0IG9mIHdlZGRpbmcgZ2lmdHMuIl8KClRoZSB1c2VyIG11c3QgYmUgYWJsZSB0bzoKCi0gQWRkIGEgZ2lmdCB0byB0aGUgbGlzdAotIFJlbW92ZSBhIGdpZnQgZnJvbSB0aGUgbGlzdAotIExpc3QgdGhlIGFscmVhZHkgYWRkZWQgZ2lmdHMgb2YgdGhlIGxpc3QgCi0gUHVyY2hhc2UgYSBnaWZ0IGZyb20gdGhlIGxpc3QKLSBHZW5lcmF0ZSBhIHJlcG9ydCBmcm9tIHRoZSBsaXN0IHdoaWNoIHdpbGwgcHJpbnQgb3V0IGdpZnRzICYgdGhlaXIgc3RhdHVzZXMuCiAgLSBUaGUgcmVwb3J0IG11c3QgaW5jbHVkZSB0d28gc2VjdGlvbnM6CiAgICAtIFB1cmNoYXNlZCBnaWZ0czogZWFjaCBwdXJjaGFzZWQgZ2lmdCB3aXRoIHRoZWlyIGRldGFpbHMuCiAgICAtIE5vdCBwdXJjaGFzZWQgZ2lmdHM6IGVhY2ggYXZhaWxhYmxlIGdpZnQgd2l0aCB0aGVpciBkZXRhaWxzLgoKIyMjIEltcGxlbWVudGF0aW9uIE5vdGVzIPCfk4QKClRoZXJlIGFyZSB0d28gY29uY3JldGUgaW1wbGVtZW50YXRpb25zIGZvciByZWFsaXNpbmcgYSBnaWZ0IGxpc3Qgd2l0aAp0aGUgZm9sbG93aW5nIGNsYXNzZXMgZnJvbSBgb25saW5lX3N0b3JlL2JhY2tlbmQvZ2lmdF9saXN0LnB5YDoKCi0gYEJhc2ljR2lmdExpc3RgLCBhIHB1cmUgcHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGEgZ2lmdCBsaXN0ICoqKFdlbGwgVGVzdGVkKSoqLgotIGBTcWxEYXRhYmFzZUdpZnRMaXN0YCwgYW4gU1FMIE9STSBiYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBhIGdpZnQgbGlzdCBmb3IKICAgdXNlIHdpdGhpbiBhIGZsYXNrIChvciBEamFuZ28pIFJFU1QgQVBJIGFwcC4gSW4gdGhpcyBleGFtcGxlLCB0aGUgT1JNCiAgIG1vZGVscyBhcmUgZm91bmQgaW4gYG9ubGluZV9zdG9yZS9iYWNrZW5kL21vZGVscy9gIGFuZCB0aGUgUkVTVCBBUEkgaXMKICAgaW1wbGVtZW50ZWQgaW4gYG9ubGluZV9zdG9yZS9iYWNrZW5kL3JvdXRlcy9naWZ0cy5weWAuCgojIyMgRGV2ZWxvcG1lbnQgU2V0dXAg4pqZ77iPCgpgYGBiYXNoCiQgbnBtIGluc3RhbGwgICMgbmVlZGVkIGZvciBTd2FnZ2VyIEpTT04gdG8gT0FTIFlBTUwgc3BlYyBjb252ZXJzaW9uCiQgbnBtIHJ1biBmcm9udGVuZDppbnN0YWxsICAjIGluc3RhbGwgcGFja2FnZXMgbmVlZGVkIGZvciBmcm9udGVuZCBhcHAKJCBweXRob24zIC1tIHZlbnYgdmVudgokIHNvdXJjZSB2ZW52L2Jpbi9hY3RpdmF0ZQoodmVudikgJCBwaXAgaW5zdGFsbCBzZXR1cHRvb2xzCih2ZW52KSAkIHBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy1kZXYudHh0IC1yIHJlcXVpcmVtZW50cy10ZXN0LnR4dAoodmVudikgJCBwaXAgaW5zdGFsbCAtciByZXF1aXJlbWVudHMudHh0CmBgYAoKIyMjIFRlc3Rpbmcg8J+nqgoKYHNldHVwLmNmZ2AgaGFzIGNvbmZpZ3VyZWQgYHB5dGVzdGAgdG8gY29sbGVjdCBjb3ZlcmFnZSBpbmZvcm1hdGlvbgphbmQgY2FuIGJlIHJ1biBhcyBmb2xsb3dzOgoKYGBgYmFzaAoodmVudikgJCBQWVRIT05QQVRIPScuJyBweS50ZXN0IApgYGAKCiMjIyBCYXNpYyBHaWZ0IExpc3QgSW1wbGVtZW50YXRpb24g8J+OgQoKVGhlIGZvbGxvd2luZyBzaG93Y2FzZXMgYSBzaW1wbGUgcHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHRoZSBnaWZ0IGxpc3Q6CgpgYGBweXRob24KIyBsb2FkIHN0b3JlIGRhdGEKPj4+IGltcG9ydCBqc29uCj4+PiBzdG9yZV9pdGVtcyA9IGpzb24ubG9hZChvcGVuKCdwcm9kdWN0cy5qc29uJykpCiMgaW1wb3J0IGltcGxlbWVudGF0aW9uCj4+PiBmcm9tIG9ubGluZV9zdG9yZS5iYWNrZW5kLmdpZnRfbGlzdCBpbXBvcnQgQmFzaWNHaWZ0TGlzdAojIGNyZWF0ZSBhIG5ldyBnaWZ0IGxpc3QKPj4+IGdpZnRfbGlzdCA9IEJhc2ljR2lmdExpc3QoJ0xpYW0nKQo+Pj4gZ2lmdF9saXN0ICAjIHNob3cgbGlzdCByZXByZXNlbnRhdGlvbiBpbiBpbnRlcnByZXRlcgpMaWFtIC0+IFtdCiMgYWRkIGdpZnQgaXRlbQo+Pj4gZ2lmdF9saXN0LmFkZF9pdGVtKHN0b3JlX2l0ZW1zWzBdKQo+Pj4gZ2lmdF9saXN0CkxpYW0gLT4gW3snaWQnOiAxLCAnbmFtZSc6ICdUZWEgcG90JywgJ2JyYW5kJzogJ0xlIENyZXVzZXQnLCAncHJpY2UnOiAnNDcuMDBHQlAnLCAnaW5fc3RvY2tfcXVhbnRpdHknOiA1MH1dCiMgcmVtb3ZlIGdpZnQgaXRlbQo+Pj4gZ2lmdF9saXN0LmFkZF9pdGVtKHN0b3JlX2l0ZW1zWzFdLCBxdWFudGl0eT0zKQo+Pj4gZ2lmdF9saXN0LnJlbW92ZV9pdGVtKHN0b3JlX2l0ZW1zWzBdKQo+Pj4gZ2lmdF9saXN0CkxpYW0gLT4gW3snaWQnOiAyLCAnbmFtZSc6ICdDYXN0IElyb24gT3ZhbCBDYXNzZXJvbGUgLSAyNWNtOyBWb2xjYW5pYycsICdicmFuZCc6ICdMZSBDcmV1c2V0JywgJ3ByaWNlJzogJzIxMC4wMEdCUCcsICdpbl9zdG9ja19xdWFudGl0eSc6IDI3fV0KIyBwdXJjaGFzZSBnaWZ0IGl0ZW0KPj4+IGdpZnRfbGlzdC5wdXJjaGFzZV9pdGVtKHN0b3JlX2l0ZW1zWzFdLCBxdWFudGl0eT0xKQojIGdlbmVyYXRlIHJlcG9ydAo+Pj4gZ2lmdF9saXN0LmNyZWF0ZV9yZXBvcnQoKQpHaWZ0IExpc3QgUmVwb3J0IGZvciBMaWFtOgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUHVyY2hhc2VkIGl0ZW1zOgogICAtIHsnaWQnOiAyLCAnbmFtZSc6ICdDYXN0IElyb24gT3ZhbCBDYXNzZXJvbGUgLSAyNWNtOyBWb2xjYW5pYycsICdicmFuZCc6ICdMZSBDcmV1c2V0JywgJ3ByaWNlJzogJzIxMC4wMEdCUCcsICdpbl9zdG9ja19xdWFudGl0eSc6IDI3fSAocXVhbnRpdHk6IDEpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBdmFpbGFibGUgaXRlbXM6CiAgLSB7J2lkJzogMiwgJ25hbWUnOiAnQ2FzdCBJcm9uIE92YWwgQ2Fzc2Vyb2xlIC0gMjVjbTsgVm9sY2FuaWMnLCAnYnJhbmQnOiAnTGUgQ3JldXNldCcsICdwcmljZSc6ICcyMTAuMDBHQlAnLCAnaW5fc3RvY2tfcXVhbnRpdHknOiAyN30gKHF1YW50aXR5OiAyKQpgYGAKCiMjIyBGbGFzayBSRVNUIEFQSSArIFNRTCBPUk0gSW1wbGVtZW50YXRpb24g8J+MjfCflbjvuI8KCkFsdGVybmF0aXZlbHkgdGhlcmUgaXMgYSBSRVNUIEFQSSwgd2hpY2ggY2FuIGJlIHJ1biB3aXRoOgoKYGBgYmFzaAokIHNvdXJjZSB2ZW52L2Jpbi9hY3RpdmF0ZQoodmVudikgJCBjZCBvbmxpbmVfc3RvcmUKKHZlbnYpICQgRkxBU0tfREVCVUc9MSBmbGFzayBydW4KYGBgCgpUaGlzIHdpbGwgc3RhcnQgYSBmbGFzayBkZXZlbG9wbWVudCBzZXJ2ZXIgcnVubmluZyBvbiBodHRwOi8vbG9jYWxob3N0OjUwMDAgYW5kCnByb3ZpZGVzIGEgU3dhZ2dlci1VSSBhdCBodHRwOi8vbG9jYWxob3N0OjUwMDAvYXBpZG9jcy8uIAoKIyMjIyBFeGFtcGxlcwoKYGBgYmFzaAojIHJlZ2lzdGVyIGEgbmV3IHVzZXIKJCBjdXJsIC1YIFBPU1QgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgLWQgJ3sidXNlcm5hbWUiOiAibWUiLCAicGFzc3dvcmQiOiAidGVzdCIsICJlbWFpbCI6ICJtZUB0ZXN0LmNvbSJ9JyAnaHR0cDovL2xvY2FsaG9zdDo1MDAwL2FwaS92MS9hdXRoL3JlZ2lzdGVyJwoKeyJjb2RlIjoyMDAsIm1zZyI6InN1Y2Nlc3MiLCJzdGF0dXMiOiJvayJ9CgojIGxvZ2luIHdpdGggdXNlcgokIGN1cmwgLVggUE9TVCAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiAtZCAneyJ1c2VybmFtZSI6ICJtZSIsICJwYXNzd29yZCI6ICJ0ZXN0In0nCgp7ImFjY2Vzc190b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKOS5leUpwWVhRaU9qRTJNREl3TVRJeE16UXNJbTVpWmlJNk1UWXdNakF4TWpFek5Dd2lhblJwSWpvaU9UQTVOVFJsWkRBdFpXSXpNeTAwTVRZMkxUaGhPREV0WkRFNU5ESTNNakk1TlRFMElpd2laWGh3SWpveE5qQXlNREV6TURNMExDSnBaR1Z1ZEdsMGVTSTZJbTFsSWl3aVpuSmxjMmdpT21aaGJITmxMQ0owZVhCbElqb2lZV05qWlhOekluMC5HWVZUUUs0WHc5SmFpSkp4YTc1dmxLQlMtbWhvMFFqZmNNOTR1c1BadFNJIiwiY29kZSI6MjAwLCJzdGF0dXMiOiJvayJ9CgojIG5vdGUgYWNjZXNzIHRva2VuCiQgZXhwb3J0IFRPS0VOPSc8SldUX0ZST01fTE9HSU4+JwoKIyBhY2Nlc3MgZ2lmdCBsaXN0CiQgY3VybCAtWCBHRVQgLUggICJhY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iIC1IICAiQXV0aG9yaXphdGlvbjogQmVhcmVyICRUT0tFTiIgaHR0cDovL2xvY2FsaG9zdDo1MDAwL2FwaS92MS9naWZ0cy9saXN0CgpbXQoKIyBhZGQgb25lIGdpZnQgaXRlbSB3aXRoIHN0b3JlIGlkIG9mIDEgdG8gbGlzdAokIGN1cmwgLVggUE9TVCAtSCAgImFjY2VwdDogYXBwbGljYXRpb24vanNvbiIgLUggICJBdXRob3JpemF0aW9uOiBCZWFyZXIgJFRPS0VOIiAnaHR0cDovL2xvY2FsaG9zdDo1MDAwL2FwaS92MS9naWZ0cy9saXN0L2FkZD9pdGVtX2lkPTEmcXVhbnRpdHk9MScKCnsKICAiY29kZSI6IDIwMCwKICAibXNnIjogIkl0ZW0gYWRkZWQiLAogICJzdGF0dXMiOiAib2siCn0KCiMgcmVtb3ZlIGl0ZW0gd2l0aCBpZCAxIGZyb20gZ2lmdCBsaXN0CiQgY3VybCAtWCBERUxFVEUgLUggICJhY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iIC1IICAiQXV0aG9yaXphdGlvbjogQmVhcmVyICRUT0tFTiIgaHR0cDovL2xvY2FsaG9zdDo1MDAwL2FwaS92MS9naWZ0cy9saXN0LzEKCnsKICAiY29kZSI6IDIwMCwKICAibXNnIjogIkl0ZW0gcmVtb3ZlZCIsCiAgInN0YXR1cyI6ICJvayIKfQoKIyBhZGQgdGhlbiBwdXJjaGFzZSBpdGVtCiQgY3VybCAtWCBQT1NUIC1IICAiYWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIiAtSCAgIkF1dGhvcml6YXRpb246IEJlYXJlciAkVE9LRU4iICdodHRwOi8vbG9jYWxob3N0OjUwMDAvYXBpL3YxL2dpZnRzL2xpc3QvYWRkP2l0ZW1faWQ9MiZxdWFudGl0eT0yJwoKewogICJjb2RlIjogMjAwLAogICJtc2ciOiAiSXRlbSBhZGRlZCIsCiAgInN0YXR1cyI6ICJvayIKfQoKJCBjdXJsIC1YIFBPU1QgLUggICJhY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iIC1IICAiQXV0aG9yaXphdGlvbjogQmVhcmVyICRUT0tFTiIgaHR0cDovL2xvY2FsaG9zdDo1MDAwL2FwaS92MS9naWZ0cy9saXN0LzIvcHVyY2hhc2U/cXVhbnRpdHk9MQoKewogICJjb2RlIjogMjAwLCAKICAibXNnIjogImdpZnQgcHVyY2hhc2VkIiwgCiAgInN0YXR1cyI6ICJvayIKfQoKIyBwcm9kdWNlIHJlcG9ydAokIGN1cmwgLVggR0VUIC1IICAiYWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIiAtSCAgIkF1dGhvcml6YXRpb246IEJlYXJlciAkVE9LRU4iICdodHRwOi8vbG9jYWxob3N0OjUwMDAvYXBpL3YxL2dpZnRzL2xpc3QvcmVwb3J0JwoKewogICJhdmFpbGFibGUiOiBbCiAgICB7CiAgICAgICJicmFuZCI6ICJMZSBDcmV1c2V0IiwgCiAgICAgICJjdXJyZW5jeSI6ICJHQlAiLCAKICAgICAgImlkIjogMiwgCiAgICAgICJpbl9zdG9ja19xdWFudGl0eSI6IDI3LCAKICAgICAgIm5hbWUiOiAiQ2FzdCBJcm9uIE92YWwgQ2Fzc2Vyb2xlIC0gMjVjbTsgVm9sY2FuaWMiLCAKICAgICAgInByaWNlIjogMjEwLjAsIAogICAgICAicXVhbnRpdHkiOiAxCiAgICB9CiAgXSwgCiAgInB1cmNoYXNlZCI6IFsKICAgIHsKICAgICAgImJyYW5kIjogIkxlIENyZXVzZXQiLCAKICAgICAgImN1cnJlbmN5IjogIkdCUCIsIAogICAgICAiaWQiOiAyLCAKICAgICAgImluX3N0b2NrX3F1YW50aXR5IjogMjcsIAogICAgICAibmFtZSI6ICJDYXN0IElyb24gT3ZhbCBDYXNzZXJvbGUgLSAyNWNtOyBWb2xjYW5pYyIsIAogICAgICAicHJpY2UiOiAyMTAuMCwgCiAgICAgICJxdWFudGl0eSI6IDEKICAgIH0KICBdLCAKICAidXNlciI6IDIKfQoKYGBgCgojIyBCb251cyBGZWF0dXJlcyDinKgKClRoZXJlIGFyZSBjdXJyZW50bHkgYSBudW1iZXIgb2YgZXh0cmEgZmVhdHVyZXMsIHdoaWNoIGhlbHAgCgotIFVzZXItZnJpZW5kbHkgYmFja2VuZCBhcHBsaWNhdGlvbiBsb2dnaW5nIHVzaW5nIGBsb2d1cnVgIHB5dGhvbiBwYWNrYWdlLgotIFNpbXBsZSBjb250YWluZXJpc2F0aW9uIHVzaW5nIERvY2tlciAtIHNlZSBgRG9ja2VyRmlsZWAKLSBBdXRoZW50aWNhdGlvbiB1c2luZyBKU09OIHdlYiB0b2tlbnMgdmlhIFtmbGFzay1qd3QtZXh0ZW5kZWRdKCkgbWlkZGxld2FyZS4KLSBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uIChPQVMpXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIGNvbmZvcm1hbnQgY2xpZW50IGRvY3VtZW50YXRpb24gZ2VuZXJhdGVkIHVzaW5nIFtmbGFzZ2dlcl0oaHR0cHM6Ly9naXRodWIuY29tL2ZsYXNnZ2VyL2ZsYXNnZ2VyKSBhbmQgdmlld2FibGUgdmlhIFN3YWdnZXJVSSBbL2FwaWRvY3NdKGxvY2FsaG9zdDo1MDAwL2FwaWRvY3MpIGVuZHBvaW50IHdoZW4gcnVubmluZyB0aGUgZmxhc2sgc2VydmVyLgotIFBlcnNpc3RlbnQgZGF0YSBzdG9yYWdlIHVzaW5nIFNRTCBEYXRhYmFzZSBtb2RlbGxlZCB1c2luZyBbc3FsYWxjaGVteV0oaHR0cHM6Ly9kb2NzLnNxbGFsY2hlbXkub3JnL2VuLzEzL2ludHJvLmh0bWwpIE9STS4KCiMjIyBEZXZlbG9wZXIgRG9jdW1lbnRhdGlvbiDwn5OXCgpUaGUgU3BoaW54IGRvY3VtZW50YXRpb24gYnVpbGRlciBpcyBjdXJyZW50bHkgdXNlZCB0byBleHRyYWN0IHB5dGhvbiBkb2NzdHJpbmdzIGFuZCB0aGUgT3BlbkFQSSBzcGVjIG9mIHRoZSBSRVNUIEFQSS4KClRvIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uOgoKYGBgYmFzaAokIGNkIGRvY3MvCiQgbWFrZSBvcGVuYXBpX3NwZWMueW1sCiQgbWFrZSBodG1sICAjIG9yIGFub3RoZXIgZW5kIGRvY3VtZW50YXRpb24gZm9ybWF0IGUuZy4gZXB1YgpgYGAKCkEgbGl2ZSBkZXBsb3ltZW50IHRvIEdpdEh1YiBQYWdlcyBjYW4gYmUgZm91bmQgYXQgW2h0dHBzOi8vbGlhbS1kZWFjb24uZ2l0aHViLmlvL29ubGluZS1zdG9yZS1yZXN0LWFwaS9dKCkKCiMjIFRPRE8g8J+TnQoKLSBbeF0gQnVpbGQgc2NyaXB0IC8gQ0kgdXNpbmcgR2l0SHViIEFjdGlvbnMKLSBbeF0gU3BoaW54IGRvY3VtZW50YXRpb24gc3VwcG9ydAotIFt4XSBEZXBsb3kgQVBJIGRvY3VtZW50YXRpb24gdG8gR2l0SHViIFBhZ2VzIHZpYSBBY3Rpb25zCi0gWyBdIFRlc3QgU3FsRGF0YWJhc2VHaWZ0TGlzdAotIFsgXSBBdXRvbWF0ZWQgdGVzdHMgZm9yIFJFU1QgQVBJCi0gW3hdIHNoaWVsZHMuaW8gc3VwcG9ydCBmb3IgUkVBRE1FIGJhZGdlcwotIFsgXSBBZGQgbGludGluZyB0byBDSQotIFt4XSBCdWlsZCBhbmQgZGVwbG95IGRvY2tlciBpbWFnZShzKSB0byBkb2NrZXJodWIgdmlhIENJL0NECi0gW3hdIERlcGxveSBmbGFzayBhcHAgdG8gSGVyb2t1IGZvcgogIFtkZW1vXShodHRwczovL29ubGluZS1zdG9yZS1mbGFzay1yZXN0LWFwaS5oZXJva3VhcHAuY29tLykgcHVycG9zZXMgKGZvbGxvdyBsaW5rKQoKIyMgRnV0dXJlIEltcHJvdmVtZW50cyDwn5SuCgpHaXZlbiBtb3JlIHRpbWUsIHRoZSBmb2xsb3dpbmcgaW1wcm92ZW1lbnRzIGNvdWxkIGJlIG1hZGU6CgotICAgWyBdIFdyaXRlIGZyb250ZW5kIGluIFJlYWN0IChvciBtYXliZSBWdWUuanMpCi0gICBbIF0gQ3JlYXRlIGBkb2NrZXItY29tcG9zZS55bWxgIG11bHRpLWNvbnRhaW5lciBEb2NrZXIgY29tcG9zZSBzY3JpcHQgZm9yIG9yY2hlc3RyYXRpbmcgZnJvbnRlbmQsIGJhY2tlbmQgYW5kIGRhdGFiYXNlIChlLmcuIFJlYWN0L05QTS1iYXNlZCwgRmxhc2ssIFBvc3RncmVzKS4KLSAgIFsgXSBJbXBsZW1lbnQgbWlzc2luZyBmZWF0dXJlcyBpbiB0aGUgY29kZSAoaS5lLiB3aGVyZXZlciBgTm90SW1wbGVtZW50RXJyb3JgIGlzIHJhaXNlZCkKLSAgIFsgXSBDb2RlIHRpZHkgYW5kIHJlZmFjdG9yCi0gICBbIF0gSW5jcmVhc2Ugb3ZlcmFsbCBjb2RlIGNvdmVyYWdlIChhaW1pbmcgZm9yIG5pcnZhbmEgYXQgMTAwJSkK readmeEtag: '"8a192ca048b122c350d207e215c7077bb8f69060"' readmeLastModified: Tue, 27 Oct 2020 08:20:51 GMT repositoryId: 301341448 description: >- An example online store REST API using flask, SQL ORM and OpenAPI Specifications (with WIP Vue.js frontend) created: '2020-10-05T08:29:22Z' updated: '2022-10-28T17:33:53Z' language: Python archived: false stars: 2 watchers: 1 forks: 0 owner: Liam-Deacon logo: https://avatars.githubusercontent.com/u/3184694?v=4 license: GPL-3.0 repoEtag: '"33570fee56463763ad9af06c7a7198b14a00f36b35f5867474027e722551ec11"' repoLastModified: Fri, 28 Oct 2022 17:33:53 GMT foundInMaster: true category: Server Implementations id: dcd91a71c900c43016a01d86e8f15130 - source: openapi3 tags repository: https://github.com/deepakbhalla/spring-boot-basic-auth-security v3: true id: eea19c2e6d65f964d1b757cc3434fdb3 repositoryMetadata: base64Readme: >- IyBzcHJpbmctYm9vdC1iYXNpYy1hdXRoLXNlY3VyaXR5CkFwcGxpY2F0aW9uIHRvIGRlbW9uc3RyYXRlIFNwcmluZyBib290IHNlY3VyaXR5IHVzaW5nIEJhc2ljIEF1dGggKFVzZXJuYW1lIGFuZCBQYXNzd29yZCkgYXMgYXV0aGVudGljYXRpb24gdHlwZS4gCgpUaGlzIGFwcGxpY2F0aW9uIGNvdmVycyB0aGUgYmVsb3cgZnVuY3Rpb25hbGl0aWVzOgoKMS4gPGI+VXNlciBSZWdpc3RyYXRpb24gKEFQSSBhdXRoZW50aWNhdGlvbiBpcyBub3QgcmVxdWlyZWQpPC9iPgogICAtIE5ldyB1c2UgcmVnaXN0cmF0aW9uIHdpdGhvdXQgQVBJIGF1dGhlbnRpY2F0aW9uCjIuIDxiPlVzZXIgTWFuYWdlbWVudCAoQVBJIGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkKTwvYj4KICAgLSBHZXQgYWxsIHVzZXJzCiAgIC0gRGVsZXRlIGEgdXNlcgozLiA8Yj5BY2NvdW50IE1hbmFnZW1lbnQgKEFQSSBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZCk8L2I+CiAgICAtIEdldCBhbGwgYWNjb3VudHMKICAgIC0gR2V0IGFuIGFjY291bnQKICAgIC0gQ3JlYXRlIG5ldyBhY2NvdW50CiAgICAtIFVwZGF0ZSBleGlzdGluZyBhY2NvdW50CiAgICAtIERlbGV0ZSBleGlzdGluZyBhY2NvdW50CjQuIDxiPlRyYW5zYWN0aW9uIE1hbmFnZW1lbnQgKEFQSSBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZCk8L2I+CiAgICAtIERlcG9zaXQgYW4gYW1vdW50IHRvIGFuIGFjY291bnQKICAgIC0gV2l0aGRyYXcgYW4gYW1vdW50IGZyb20gYW4gYWNjb3VudAoKIyMjIFByb2plY3QgVGVjaG5vbG9naWVzCgotIEphdmEgdmVyc2lvbjogMTcuMC44LCB2ZW5kb3I6IE9yYWNsZSBDb3Jwb3JhdGlvbgotIEFwYWNoZSBNYXZlbiAzLjIuMwotIFNwcmluZyBib290IDMuMS41Ci0gUG9zdGdyZVNxbCBEYXRhYmFzZQotIFNwcmluZyBib290IEpQQQotIFNwcmluZyBzZWN1cml0eSA2LjEuNSAoSW1wbGVtZW50ZWQgQmFzaWMgQXV0aCBpbiB0aGlzIHByb2plY3QpCi0gTG9tYm9rCi0gT3BlbkFwaSAzIFNwZWNpZmljYXRpb25zCgojIyMgRGF0YWJhc2UKClBvc3RncmVTUUwgaGFzIGJlZW4gdXNlZCBpbiB0aGlzIHByb2plY3QuIEFsc28sIHRoaXMgcHJvamVjdCBzdG9yZXMgYWNjb3VudCdzIGV2ZW50cyBpbiB0aGUgZm9ybSBvZiBKU09OIGluIEpTT05CIGNvbHVtbgppbiB0aGUgYXBwbGljYXRpb24gdGFibGUuCgpKU09OIGRhdGEgdHlwZXMgYXJlIGZvciBzdG9yaW5nIEpTT04gKEphdmFTY3JpcHQgT2JqZWN0IE5vdGF0aW9uKSBkYXRhLiBTdWNoIGRhdGEgY2FuIGFsc28gYmUgc3RvcmVkIGFzIHRleHQsIGJ1dCB0aGUgCkpTT04gZGF0YSB0eXBlcyBoYXZlIHRoZSBhZHZhbnRhZ2Ugb2YgZW5mb3JjaW5nIHRoYXQgZWFjaCBzdG9yZWQgdmFsdWUgaXMgdmFsaWQgYWNjb3JkaW5nIHRvIHRoZSBKU09OIHJ1bGVzLiBUaGVyZSBhcmUgCmFsc28gYXNzb3J0ZWQgSlNPTi1zcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG9wZXJhdG9ycyBhdmFpbGFibGUgZm9yIGRhdGEgc3RvcmVkIGluIHRoZXNlIGRhdGEgdHlwZXMuCgpQb3N0Z3JlU1FMIG9mZmVycyB0d28gdHlwZXMgZm9yIHN0b3JpbmcgSlNPTiBkYXRhOiAKCi0gSlNPTiAKLSBKU09OQi4gCgoxLiBKU09OIHN0b3JlcyB3aGl0ZSBzcGFjZSwgYW5kIHRoYXQgaXMgd2h5IHdlIGNhbiBzZWUgc3BhY2VzIHdoZW4ga2V5ICJhIiBpcyBzdG9yZWQsIHdoaWxlIEpTT05CIGRvZXMgbm90LgoyLiBKU09OIHN0b3JlcyBhbGwgdGhlIHZhbHVlcyBvZiBhIGtleS4gVGhpcyBpcyB0aGUgcmVhc29uIHlvdSBjYW4gc2VlIG11bHRpcGxlIHZhbHVlcyAoMiBhbmQgMSkgYWdhaW5zdCB0aGUga2V5ICJhIiwgd2hpbGUgSlNPTkIgb25seSAic3RvcmVzIiB0aGUgbGFzdCB2YWx1ZS4KMy4gSlNPTiBtYWludGFpbnMgdGhlIG9yZGVyIGluIHdoaWNoIGVsZW1lbnRzIGFyZSBpbnNlcnRlZCwgd2hpbGUgSlNPTkIgbWFpbnRhaW5zIHRoZSAic29ydGVkIiBvcmRlci4KNC4gSlNPTkIgb2JqZWN0cyBhcmUgc3RvcmVkIGFzIGEgZGVjb21wcmVzc2VkIGJpbmFyeSBhcyBvcHBvc2VkIHRvICJyYXcgZGF0YSIgaW4gSlNPTiwgd2hlcmUgbm8gcmVwYXJzaW5nIG9mIGRhdGEgaXMgcmVxdWlyZWQgZHVyaW5nIHJldHJpZXZhbC4KNS4gSlNPTkIgYWxzbyBzdXBwb3J0cyBpbmRleGluZywgd2hpY2ggY2FuIGJlIGEgc2lnbmlmaWNhbnQgYWR2YW50YWdlLgoKIyMjIE9wZW5BUEkgU3BlY2lmaWNhdGlvbgoKLSBQYXRoCgpodHRwOi8vbG9jYWxob3N0OjgwODEvbXktYXBwbGljYXRpb24vc3dhZ2dlci11aS9pbmRleC5odG1sCgotIFN3YWdnZXIgQXV0aG9yaXphdGlvbgoKIVsyNF9zd2FnZ2VyX2F1dGhvcml6YXRpb24uUE5HXShzY3JlZW5zaG90cyUyRjI0X3N3YWdnZXJfYXV0aG9yaXphdGlvbi5QTkcpCgotIFN3YWdnZXIgVUkgRGV0YWlscwoKIVsyNV9zd2FnZ2VyX3VpLnBuZ10oc2NyZWVuc2hvdHMlMkYyNV9zd2FnZ2VyX3VpLnBuZykKCiMjIyBEaXNhYmxlIE9wZW5BUEkgU3dhZ2dlciBmb3IgUHJvZHVjdGlvbiBFbnZpcm9ubWVudAoKV2UgY2FuIGRpc2FibGUgT3BlbkFQSSBzd2FnZ2VyIGZvciBhbnkgZW52aXJvbm1lbnQgYmFzZWQgdXBvbiBwcm9maWxlcy4gV2UgY2FuIHN1cHBseSBhIFZNIGFyZ3VtZW50IAonLURzcHJpbmcucHJvZmlsZXMuYWN0aXZlPTxlbnZpcm9ubWVudCBuYW1lPicgdG8gdGhlIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb25zLgpVc2luZyBzcHJpbmcgcHJvZmlsZSBhbm5vdGF0aW9uIEBQcm9maWxlKCJwcm9kIiksIHdlIGNhbiBjb250cm9sIHRoZSBkaXNwbGF5IG9mIHN3YWdnZXIuCgotIFZNIEFyZ3VtZW50CgohW2ltZy5wbmddKHNjcmVlbnNob3RzLzIyX3ZtX2FyZ3VtZW50X3NwcmluZ19hY3RpdmVfcHJvZmlsZS5wbmcpCgpJZiB0aGUgdmFsdWUgb2Ygc3ByaW5nIHByb2ZpbGUgaXMgJ3Byb2QnLCB0aGVuIHN3YWdnZXIgd29uJ3QgYmUgYXZhaWxhYmxlLiBQbGVhc2UgcmVmZXIgdGhlIGJlbG93IHNjcmVlbnNob3Q6CgohW2ltZy5wbmddKHNjcmVlbnNob3RzLzIzX3N3YWdnZXJfbm90X2F2YWlsYWJsZS5wbmcpCgojIyMgQVBJIFRlc3RpbmcKCi0gUG9zdG1hbiBDb2xsZWN0aW9uCgohWzFfZGF0YWJhc2VfdGFibGVzX3NjcmlwdC5QTkddKHNjcmVlbnNob3RzJTJGMjBfcG9zdG1hbl9jb2xsZWN0aW9uLlBORykKCi0gRGF0YWJhc2UgdGFibGVzIHNjcmlwdAoKIVsxX2RhdGFiYXNlX3RhYmxlc19zY3JpcHQuUE5HXShzY3JlZW5zaG90cyUyRjFfZGF0YWJhc2VfdGFibGVzX3NjcmlwdC5QTkcpCgotIFVzZXJzIGNyZWF0ZWQgb24gbG9hZAoKIVsyX1VzZXJzX2NyZWF0ZWRfb25fc2VydmljZV9zdGFydHVwLlBOR10oc2NyZWVuc2hvdHMlMkYyX1VzZXJzX2NyZWF0ZWRfb25fc2VydmljZV9zdGFydHVwLlBORykKCi0gQ3JlYXRlIE5ldyBVc2VyIC0gVmFsaWRhdGlvbiBFcnJvcgoKIVszX2NyZWF0ZV91c2VyX2lucHV0X3ZhbGlkYXRpb25fZXJyb3IuUE5HXShzY3JlZW5zaG90cyUyRjNfY3JlYXRlX3VzZXJfaW5wdXRfdmFsaWRhdGlvbl9lcnJvci5QTkcpCgotIENyZWF0ZSBVc2VyIC0gUGFzc3dvcmQgYW5kIE1hdGNoUGFzc3dvcmQgRG9lcyBub3QgTWF0Y2ggVmFsaWRhdGlvbiBFcnJvcgoKIVs0X2NyZWF0ZV91c2VyX3Bhc3N3b3JkX2RpZmZlcmVudF9mcm9tX21hdGNoaW5nX3Bhc3N3b3JkLlBOR10oc2NyZWVuc2hvdHMlMkY0X2NyZWF0ZV91c2VyX3Bhc3N3b3JkX2RpZmZlcmVudF9mcm9tX21hdGNoaW5nX3Bhc3N3b3JkLlBORykKCi0gQ3JlYXRlIFVzZXIgLSBTdWNjZXNzIC0gTm8gQXV0aAoKIVs1X2NyZWF0ZV91c2VyX3N1Y2Nlc3MuUE5HXShzY3JlZW5zaG90cyUyRjVfY3JlYXRlX3VzZXJfc3VjY2Vzcy5QTkcpCgotIENyZWF0ZSBVc2VyIC0gTm8gQXV0aCBTaG93biBVbmRlciBBdXRob3JpemF0aW9uIHRhYiBvZiBQb3N0bWFuCgohWzZfY3JlYXRlX3VzZXJfbm9fYXV0aF9yZXF1aXJlZC5QTkddKHNjcmVlbnNob3RzJTJGNl9jcmVhdGVfdXNlcl9ub19hdXRoX3JlcXVpcmVkLlBORykKCi0gQ3JlYXRlIFVzZXIgLSBOZXcgdXNlciBjcmVhdGVkIGluIGRhdGFiYXNlIHRhYmxlICd1c2VyX3RhYmxlJwoKIVs3X2NyZWF0ZWRfdXNlcl9pbl91c2VyX3RhYmxlX2luX2RhdGFiYXNlLlBOR10oc2NyZWVuc2hvdHMlMkY3X2NyZWF0ZWRfdXNlcl9pbl91c2VyX3RhYmxlX2luX2RhdGFiYXNlLlBORykKCi0gR2V0IFVzZXIgLSBOb3QgQXV0aG9yaXplZCB3aXRob3V0IGF1dGhlbnRpY2F0aW9uCgohWzhfZ2V0X3VzZXJfYXV0aGVudGljYXRpb25fZXJyb3IuUE5HXShzY3JlZW5zaG90cyUyRjhfZ2V0X3VzZXJfYXV0aGVudGljYXRpb25fZXJyb3IuUE5HKQoKLSBHZXQgVXNlcnMgLSBTdWNjZXNzZnVsIHdpdGggQmFzaWMgQXV0aAoKIVs5X2dldF91c2Vyc19zdWNjZXNzX3dpdGhfYmFzaWNfYXV0aC5QTkddKHNjcmVlbnNob3RzJTJGOV9nZXRfdXNlcnNfc3VjY2Vzc193aXRoX2Jhc2ljX2F1dGguUE5HKQoKLSBDcmVhdGUgQWNjb3VudCAtIE5vdCBBdXRob3JpemVkIHdpdGhvdXQgYXV0aGVudGljYXRpb24KCiFbMTBfY3JlYXRlX2FjY291bnRfYXV0aGVudGljYXRpb25fZXJyb3IuUE5HXShzY3JlZW5zaG90cyUyRjEwX2NyZWF0ZV9hY2NvdW50X2F1dGhlbnRpY2F0aW9uX2Vycm9yLlBORykKCi0gQ3JlYXRlIEFjY291bnQgLSBTdWNjZXNzZnVsIHdpdGggQmFzaWMgQXV0aAoKIVsxMV9jcmVhdGVfYWNjb3VudHNfc3VjY2Vzc193aXRoX2Jhc2ljX2F1dGguUE5HXShzY3JlZW5zaG90cyUyRjExX2NyZWF0ZV9hY2NvdW50c19zdWNjZXNzX3dpdGhfYmFzaWNfYXV0aC5QTkcpCgotIEdldCBBbGwgQWNjb3VudHMgLSBOb3QgQXV0aG9yaXplZCB3aXRob3V0IGF1dGhlbnRpY2F0aW9uCgohWzEyX2dldF9hbGxfYWNjb3VudHNfYXV0aGVudGljYXRpb25fZXJyb3IuUE5HXShzY3JlZW5zaG90cyUyRjEyX2dldF9hbGxfYWNjb3VudHNfYXV0aGVudGljYXRpb25fZXJyb3IuUE5HKQoKLSBHZXQgQWxsIEFjY291bnRzIC0gU3VjY2Vzc2Z1bCB3aXRoIEJhc2ljIEF1dGgKCiFbMTNfZ2V0X2FsbF9hY2NvdW50c19zdWNjZXNzX3dpdGhfYmFzaWNfYXV0aC5QTkddKHNjcmVlbnNob3RzJTJGMTNfZ2V0X2FsbF9hY2NvdW50c19zdWNjZXNzX3dpdGhfYmFzaWNfYXV0aC5QTkcpCgotIEdldCBBY2NvdW50IERldGFpbHMgLSBOb3QgQXV0aG9yaXplZCB3aXRob3V0IGF1dGhlbnRpY2F0aW9uCgohWzE0X2dldF9hY2NvdW50X2luZm9fYXV0aGVudGljYXRpb25fZXJyb3IuUE5HXShzY3JlZW5zaG90cyUyRjE0X2dldF9hY2NvdW50X2luZm9fYXV0aGVudGljYXRpb25fZXJyb3IuUE5HKQoKLSBHZXQgQWxsIEFjY291bnRzIC0gU3VjY2Vzc2Z1bCB3aXRoIEJhc2ljIEF1dGgKCiFbMTVfZ2V0X2FjY291bnRfaW5mb19zdWNjZXNzX3dpdGhfYmFzaWNfYXV0aC5QTkddKHNjcmVlbnNob3RzJTJGMTVfZ2V0X2FjY291bnRfaW5mb19zdWNjZXNzX3dpdGhfYmFzaWNfYXV0aC5QTkcpCgotIERlcG9zaXQgQW1vdW50IHRvIGFuIEFjY291bnQgLSBOb3QgQXV0aG9yaXplZCB3aXRob3V0IGF1dGhlbnRpY2F0aW9uCgohWzE2X2RlcG9zaXRfYW1vdW50X2F1dGhlbnRpY2F0aW9uX2Vycm9yLlBOR10oc2NyZWVuc2hvdHMlMkYxNl9kZXBvc2l0X2Ftb3VudF9hdXRoZW50aWNhdGlvbl9lcnJvci5QTkcpCgotIERlcG9zaXQgQW1vdW50IHRvIGFuIEFjY291bnQgLSBTdWNjZXNzZnVsIHdpdGggQmFzaWMgQXV0aAoKIVsxN19kZXBvc2l0X2Ftb3VudF9zdWNjZXNzX3dpdGhfYmFzaWNfYXV0aC5QTkddKHNjcmVlbnNob3RzJTJGMTdfZGVwb3NpdF9hbW91bnRfc3VjY2Vzc193aXRoX2Jhc2ljX2F1dGguUE5HKQoKLSBXaXRoZHJhdyBBbW91bnQgZnJvbSBhbiBBY2NvdW50IC0gTm90IEF1dGhvcml6ZWQgd2l0aG91dCBhdXRoZW50aWNhdGlvbgoKIVsxOF93aXRoZHJhd19hbW91bnRfYXV0aGVudGljYXRpb25fZXJyb3IuUE5HXShzY3JlZW5zaG90cyUyRjE4X3dpdGhkcmF3X2Ftb3VudF9hdXRoZW50aWNhdGlvbl9lcnJvci5QTkcpCgotIFdpdGhkcmF3IEFtb3VudCBmcm9tIGFuIEFjY291bnQgLSBTdWNjZXNzZnVsIHdpdGggQmFzaWMgQXV0aAoKIVsxOV93aXRoZHJhd19hbW91bnRfc3VjY2Vzc193aXRoX2Jhc2ljX2F1dGguUE5HXShzY3JlZW5zaG90cyUyRjE5X3dpdGhkcmF3X2Ftb3VudF9zdWNjZXNzX3dpdGhfYmFzaWNfYXV0aC5QTkcpCgo= readmeEtag: '"e955173e21e8956650cf5c6f6d3010172a602c9d"' readmeLastModified: Tue, 31 Oct 2023 20:47:09 GMT repositoryId: 710441963 description: >- Spring boot Rest APIs secured with Basic Auth Spring Security Implementation created: '2023-10-26T17:42:58Z' updated: '2023-12-19T11:40:05Z' language: Java archived: false stars: 2 watchers: 1 forks: 0 owner: deepakbhalla logo: https://avatars.githubusercontent.com/u/6603640?v=4 repoEtag: '"974657b6a1397fd6014a8b4d4d6226ebca975f51113ecce75e25e2e66690a45a"' repoLastModified: Tue, 19 Dec 2023 11:40:05 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/linx-software/petstore-api v3: true repositoryMetadata: base64Readme: >- IyAgU3dhZ2dlciBQZXRzdG9yZSAtIE9wZW5BUEkgMy4wIHNhbXBsZQoKIyMgRGVzY3JpcHRpb24KVGhpcyBzYW1wbGUgaW1wbGVtZW50cyBhIExpbnggUkVTVCBBUEkgYmFzZWQgb24gdGhlIFN3YWdnZXIgJ1BldHN0b3JlJyBPcGVuQVBJIGRlZmluaXRpb24gYW5kIGlzIGhvc3RlZCBvbiBhIExpbnggQ2xvdWQgU2VydmVyLCBtb3JlIGRldGFpbHMgb24gdGhlIG9yaWdpbmFsICdQZXRzdG9yZScgR2l0SHViIHByb2plY3QgY2FuIGJlIGZvdW5kIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1wZXRzdG9yZSkuIFRoZSBvcGVyYXRpb25zIG9mIHRoZSBMaW54IEFQSSBkbyBub3QgcGVyc2lzdCBhbnkgZGF0YSwgYnV0IHJhdGhlciwgcmVxdWVzdCBkYXRhIGlzIGZvcndhcmRlZCB0byBhY3R1YWwgJ1BldHN0b3JlJyBzZXJ2ZXIgdmlhIEhUVFAgcmVxdWVzdHMuICAKClZpZXcgdGhlIFtsaXZlIGRlbW9dKGh0dHBzOi8vZGVtb2xpbng2LmFwaS5saW54LnR3ZW50eTU3Lm5ldC9wZXRzdG9yZS9zd2FnZ2VyKSBob3N0ZWQgb24gYSBMaW54IENsb3VkIFNlcnZlci4KCgojIyBJbnN0YWxsYXRpb24KCiMjIyBDbG91ZCBzZXJ2ZXIgZGVwbG95bWVudApUaGlzIHNvbHV0aW9uIGNhbiBiZSBkZXBsb3llZCBkaXJlY3RseSB0byB5b3VyIExpbnggQ2xvdWQgc2VydmVyIGluc3RhbmNlLgoKMS4gUmVnaXN0ZXIgZm9yIGEgTGlueCB0cmlhbCBjbG91ZCBzZXJ2ZXIgW2hlcmVdKGh0dHBzOi8vbGlueC5zb2Z0d2FyZS9zZXJ2ZXItYnV5Mi8pLgoyLiBZb3Ugd2lsbCByZWNlaXZlIGFuIGVtYWlsIGNvbnRhaW5pbmcgeW91ciBMaW54IGNsb3VkIHNlcnZlciBjcmVkZW50aWFscyB3aGVuIHlvdXIgdHJpYWwgc2VydmVyIGhhcyBiZWVuIGFjdGl2YXRlZC4KMS4gTG9nIGludG8geW91ciBjbG91ZCBzZXJ2ZXIgaW5zdGFuY2UgYW5kIHVwbG9hZCB0aGUgU29sdXRpb24gKFRvcCBNZW51ID4gU2VydmVyID4gVXBsb2FkKS4KMy4gT24gdGhlIFNvbHV0aW9uJ3Mgc2VydmljZSBkYXNoYm9hcmQgcGFnZSwgX19zdGFydF9fIGFsbCBvZiB0aGUgc2VydmljZXMgZm9yIHRoZSBTb2x1dGlvbi4gICAKNC4gT25jZSB0aGUgc2VydmljZSBoYXMgc3RhcnRlZCwgeW91IGFyZSBhYmxlIHRvIG1ha2UgcmVxdWVzdHMgdXNpbmcgdGhlIGJhc2UgVVJMIG9mOgogICBgYGAKICAgaHR0cHM6Ly97eW91ciBpbnN0YW5jZSBuYW1lfS5hcGkubGlueC50d2VudHk1Ny5uZXQvcGV0c3RvcmUKICAgYGBgCgoKIyMjIExvY2FsIGVudmlyb25tZW50ClRoZSBiZWxvdyBzdGVwcyBkZXNjcmliZSBob3cgdG8gc2V0dXAgdGhlIHNhbXBsZSB0byBydW4gb24geW91ciBsb2NhbCBMaW54IERlc2lnbmVyIGVudmlyb25tZW50LgoKMS4gRG93bmxvYWQgYW5kIGluc3RhbGwgdGhlIExpbnggRGVzaWduZXIgW2hlcmVdKGh0dHBzOi8vbGlueC5zb2Z0d2FyZS9zZXJ2ZXItYnV5Mi8pLgoxLiBPcGVuIHRoZSBzYW1wbGUgU29sdXRpb24gKC5sc296KSBpbiB5b3VyIExpbnggRGVzaWduZXIuCjIuIEFsdGVyIHRoZSBiZWxvdyBTb2x1dGlvbiBTZXR0aW5nczoKICAgIC0gYExpbnhJc0xvY2FsRGV2RW52YCA6IGBUcnVlYAozLiBTZWxlY3QgdGhlIFJFU1RIb3N0IHNlcnZpY2UsIHJpZ2h0IGNsaWNrIGFuZCBzZWxlY3QgX19kZWJ1Z19fLiBPbmNlIGluaXRpYWxpc2VkLCAqKnN0YXJ0KiogdGhlIGRlYnVnZ2VyLgo0LiBPbmNlIHRoZSBkZWJ1Z2dlciBoYXMgc3RhcnRlZCwgeW91IGFyZSBhYmxlIHRvIG1ha2UgcmVxdWVzdHMgbG9jYWxseSB0bzoKICAgYGBgCiAgIGh0dHBzOi8vbG9jYWxob3N0OjgwODAvcGV0c3RvcmUKICAgYGBgCgojIyBVc2FnZQoKIyMjIFN3YWdnZXIgVUkKW1ZpZXcgbGl2ZSBkZW1vXSgJaHR0cHM6Ly9kZW1vbGlueDYuYXBpLmxpbngudHdlbnR5NTcubmV0L3BldHN0b3JlL3N3YWdnZXIpLgoKCiMjIyBQb3N0bWFuCjEuIE9wZW4gUG9zdG1hbiBhbmQgaW1wb3J0IHRoZSBwcm92aWRlZCBbcmVxdWVzdCBjb2xsZWN0aW9uXShodHRwczovL2dpdGh1Yi5jb20vbGlueC1zb2Z0d2FyZS9wZXRzdG9yZS1hcGkvYmxvYi9tYWluL3Rlc3RzL3Bvc3RtYW4tY29sbGVjdGlvbi9Td2FnZ2VyJTIwUGV0c3RvcmUlMjB3aXRoJTIwTGlueC5wb3N0bWFuX2NvbGxlY3Rpb24uanNvbikgaW4gUG9zdG1hbi4KMi4gQWx0ZXIgdGhlIGNvbGxlY3Rpb24gdmFyaWFibGVzIHRvIHJlZmxlY3QgeW91ciBjbG91ZCBlbnZpcm9ubWVudC4KIAozLiBPcGVuIGVhY2ggcmVxdWVzdCBhbmQgcGFzcyBvciBjaGFuZ2UgcGFyYW1ldGVycyBhbmQgYm9keSB2YWx1ZXMgYXMgZGVzY3JpYmVkIGluIGBodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2AKCgoKIyMgQ29udHJpYnV0aW5nCgpGb3IgcXVlc3Rpb25zIHBsZWFzZSBhc2sgdGhlIFtMaW54IGNvbW11bml0eV0oaHR0cHM6Ly9saW54L3NvZnR3YXJlL2NvbW11bml0eSkgb3IgdXNlIHRoZSBbU2xhY2sgY2hhbm5lbF0oaHR0cHM6Ly9saW54c29mdHdhcmUuc2xhY2suY29tL2FyY2hpdmVzL0MwMUZMQkMxWE5YKS4gCgojIyBMaWNlbnNlCgpbTUlUXShodHRwczovL2dpdGh1Yi5jb20vbGlueC1zb2Z0d2FyZS90ZW1wbGF0ZS1yZXBvL2Jsb2IvbWFpbi9MSUNFTlNFLnR4dCkK readmeEtag: '"08f7dade9df5506a5f93ac80d173c2fcb7b3a441"' readmeLastModified: Fri, 11 Nov 2022 10:37:42 GMT repositoryId: 389524066 description: >- This sample implements a Linx REST API based on the Swagger 'Petstore' OpenAPI definition and is hosted on a Linx Cloud Server created: '2021-07-26T06:00:00Z' updated: '2024-01-30T06:07:22Z' language: null archived: false stars: 2 watchers: 2 forks: 0 owner: linx-software logo: https://avatars.githubusercontent.com/u/62884647?v=4 repoEtag: '"0e1ed266a21360e85e2029126fbdd62a5b857dfd81375a415a610c708da9a56c"' repoLastModified: Tue, 30 Jan 2024 06:07:22 GMT foundInMaster: true category: - Converters - Server Implementations id: 4a157f3784bb3a4a47976a95a50701d0 - source: openapi3 tags repository: https://github.com/fourcels/rest v3: true id: c16c94cc33d32d5ea21bdb7d0e975ab1 repositoryMetadata: base64Readme: >- IyBSRVNUIHdpdGggQ2xlYW4gQXJjaGl0ZWN0dXJlIGZvciBHbwoKWyFbR29EZXZEb2NdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGV2LWRvYy0wMEFERDg/bG9nbz1nbyldKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL2ZvdXJjZWxzL3Jlc3QpCgpJbnNwaXJlZCBieSBbc3dhZ2dlc3QvcmVzdF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L3Jlc3QpCgojIyBGZWF0dXJlcwoKLSBCdWlsdCB3aXRoIFtlY2hvXShodHRwczovL2dpdGh1Yi5jb20vbGFic3RhY2svZWNobykuCi0gQXV0b21hdGljIE9wZW5BUEkgMyBkb2N1bWVudGF0aW9uIHdpdGgKICBbb3BlbmFwaS1nb10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L29wZW5hcGktZ28pLgotIEF1dG9tYXRpYyByZXF1ZXN0IEpTT04gc2NoZW1hIHZhbGlkYXRpb24gd2l0aAogIFtqc29uc2NoZW1hLWdvXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyksCiAgW2pzb25zY2hlbWFdKGh0dHBzOi8vZ2l0aHViLmNvbS9zYW50aG9zaC10ZWt1cmkvanNvbnNjaGVtYSkuCi0gRW1iZWRkZWQgW1N3YWdnZXIgVUldKGh0dHBzOi8vc3dhZ2dlci5pby90b29scy9zd2FnZ2VyLXVpLykuCgojIyBVc2FnZQoKIyMjIFJlcXVlc3QKCkdvIHN0cnVjdCB3aXRoIGZpZWxkIHRhZ3MgZGVmaW5lcyBpbnB1dC4KCmBgYGdvCi8vIERlY2xhcmUgaW5wdXQgcG9ydCB0eXBlLgp0eXBlIGhlbGxvSW5wdXQgc3RydWN0IHsKICAgIExvY2FsZSBzdHJpbmcgYHF1ZXJ5OiJsb2NhbGUiIGRlZmF1bHQ6ImVuLVVTIiBwYXR0ZXJuOiJeW2Etel17Mn0tW0EtWl17Mn0kIiBlbnVtOiJ6aC1DTixlbi1VUyJgCiAgICBOYW1lICAgc3RyaW5nIGBwYXRoOiJuYW1lIiBtaW5MZW5ndGg6IjMiYCAvLyBGaWVsZCB0YWdzIGRlZmluZSBwYXJhbWV0ZXIgbG9jYXRpb24gYW5kIEpTT04gc2NoZW1hIGNvbnN0cmFpbnRzLgoKICAgIF8gICAgICBzdHJ1Y3R7fSBgdGl0bGU6Ik15IFN0cnVjdCIgZGVzY3JpcHRpb246IkhvbGRzIG15IGRhdGEuImAKfQpgYGAKCklucHV0IGRhdGEgY2FuIGJlIGxvY2F0ZWQgaW46CgotIGBwYXRoYCBwYXJhbWV0ZXIgaW4gcmVxdWVzdCBVUkksIGUuZy4gYC91c2Vycy86bmFtZWAsCi0gYHF1ZXJ5YCBwYXJhbWV0ZXIgaW4gcmVxdWVzdCBVUkksIGUuZy4gYC91c2Vycz9sb2NhbGU9ZW4tVVNgLAotIGBmb3JtYCBwYXJhbWV0ZXIgaW4gcmVxdWVzdCBib2R5IHdpdGggYGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGAKICBjb250ZW50LAotIGBmb3JtRGF0YWAgcGFyYW1ldGVyIGluIHJlcXVlc3QgYm9keSB3aXRoIGBtdWx0aXBhcnQvZm9ybS1kYXRhYCBjb250ZW50LAotIGBqc29uYCBwYXJhbWV0ZXIgaW4gcmVxdWVzdCBib2R5IHdpdGggYGFwcGxpY2F0aW9uL2pzb25gIGNvbnRlbnQsCi0gYGNvb2tpZWAgcGFyYW1ldGVyIGluIHJlcXVlc3QgY29va2llLAotIGBoZWFkZXJgIHBhcmFtZXRlciBpbiByZXF1ZXN0IGhlYWRlci4KCkZpZWxkIHRhZ3MKCi0gbnVtYmVyIGBtYXhpbXVtYCwgYGV4Y2x1c2l2ZU1heGltdW1gLCBgbWluaW11bWAsIGBleGNsdXNpdmVNaW5pbXVtYCwKICBgbXVsdGlwbGVPZmAKLSBzdHJpbmcgYG1pbkxlbmd0aGAsIGBtYXhMZW5ndGhgLCBgcGF0dGVybmAsIGBmb3JtYXRgCi0gYXJyYXkgYG1pbkl0ZW1zYCwgYG1heEl0ZW1zYCwgYHVuaXF1ZUl0ZW1zYAotIGFsbCBgdGl0bGVgLCBgZGVzY3JpcHRpb25gLCBgZGVmYXVsdGAsIGBjb25zdGAsIGBlbnVtYAoKQWRkaXRpb25hbCBmaWVsZCB0YWdzIGRlc2NyaWJlIEpTT04gc2NoZW1hIGNvbnN0cmFpbnRzLCBwbGVhc2UgY2hlY2sKW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9qc29uc2NoZW1hLWdvI2ZpZWxkLXRhZ3MpLgoKIyMgUmVzcG9uc2UKCmBgYGdvCi8vIERlY2xhcmUgb3V0cHV0IHBvcnQgdHlwZS4KdHlwZSBoZWxsb091dHB1dCBzdHJ1Y3QgewogICAgTm93ICAgICB0aW1lLlRpbWUgYGhlYWRlcjoiWC1Ob3ciIGpzb246Ii0iYAogICAgTWVzc2FnZSBzdHJpbmcgICAgYGpzb246Im1lc3NhZ2UiYAogICAgU2VzcyAgICBzdHJpbmcgICAgYGNvb2tpZToic2VzcyxodHRwb25seSxzZWN1cmUsbWF4LWFnZT04NjQwMCxzYW1lc2l0ZT1sYXgiYAp9CmBgYAoKT3V0cHV0IGRhdGEgY2FuIGJlIGxvY2F0ZWQgaW46CgotIGBqc29uYCBmb3IgcmVzcG9uc2UgYm9keSB3aXRoIGBhcHBsaWNhdGlvbi9qc29uYCBjb250ZW50LAotIGBoZWFkZXJgIGZvciB2YWx1ZXMgaW4gcmVzcG9uc2UgaGVhZGVyLAotIGBjb29raWVgIGZvciBjb29raWUgdmFsdWVzLCBjb29raWUgZmllbGRzIGNhbiBoYXZlIGNvbmZpZ3VyYXRpb24gaW4gZmllbGQgdGFnCiAgKHNhbWUgYXMgaW4gYWN0dWFsIGNvb2tpZSwgYnV0IHdpdGggY29tbWEgc2VwYXJhdGlvbikuCgojIyBFeGFtcGxlCgpbQWR2YW5jZSBFeGFtcGxlXSgvZXhhbXBsZXMvYWR2YW5jZS9tYWluLmdvKQoKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAoJImZtdCIKCSJsb2ciCgkidGltZSIKCgkiZ2l0aHViLmNvbS9mb3VyY2Vscy9yZXN0IgoJImdpdGh1Yi5jb20vbGFic3RhY2svZWNoby92NCIKKQoKZnVuYyBtYWluKCkgewoJcyA6PSByZXN0Lk5ld1NlcnZpY2UoKQoJcy5PcGVuQVBJLkluZm8uV2l0aFRpdGxlKCJCYXNpYyBFeGFtcGxlIikKCXMuR0VUKCIvaGVsbG8ve25hbWV9IiwgaGVsbG8oKSkKCgkvLyBTd2FnZ2VyIFVJIGVuZHBvaW50IGF0IC9kb2NzLgoJcy5Eb2NzKCIvZG9jcyIpCgoJLy8gU3RhcnQgc2VydmVyLgoJbG9nLlByaW50bG4oImh0dHA6Ly9sb2NhbGhvc3Q6MTMyMy9kb2NzIikKCXMuU3RhcnQoIjoxMzIzIikKfQoKZnVuYyBoZWxsbygpIHJlc3QuSW50ZXJhY3RvciB7CgkvLyBEZWNsYXJlIGlucHV0IHBvcnQgdHlwZS4KCXR5cGUgaW5wdXQgc3RydWN0IHsKCQlOYW1lICAgc3RyaW5nICAgYHBhdGg6Im5hbWUiIG1pbkxlbmd0aDoiMyJgIC8vIEZpZWxkIHRhZ3MgZGVmaW5lIHBhcmFtZXRlcgoJCUxvY2FsZSBzdHJpbmcgICBgcXVlcnk6ImxvY2FsZSIgZGVmYXVsdDoiZW4tVVMiIHBhdHRlcm46Il5bYS16XXsyfS1bQS1aXXsyfSQiIGVudW06InpoLUNOLGVuLVVTImAKCQlfICAgICAgc3RydWN0e30gYHRpdGxlOiJNeSBTdHJ1Y3QiIGRlc2NyaXB0aW9uOiJIb2xkcyBteSBkYXRhLiJgCgl9CgoJLy8gRGVjbGFyZSBvdXRwdXQgcG9ydCB0eXBlLgoJdHlwZSBvdXRwdXQgc3RydWN0IHsKCQlOb3cgICAgIHRpbWUuVGltZSBgaGVhZGVyOiJYLU5vdyIganNvbjoiLSJgCgkJTWVzc2FnZSBzdHJpbmcgICAgYGpzb246Im1lc3NhZ2UiYAoJfQoKCW1lc3NhZ2VzIDo9IG1hcFtzdHJpbmddc3RyaW5newoJCSJlbi1VUyI6ICJIZWxsbywgJXMhIiwKCQkiemgtQ04iOiAi5L2g5aW9LCAlcyEiLAoJfQoJcmV0dXJuIHJlc3QuTmV3SGFuZGxlcihmdW5jKGMgZWNoby5Db250ZXh0LCBpbiBpbnB1dCwgb3V0ICpvdXRwdXQpIGVycm9yIHsKCQltc2cgOj0gbWVzc2FnZXNbaW4uTG9jYWxlXQoJCW91dC5Ob3cgPSB0aW1lLk5vdygpCgkJb3V0Lk1lc3NhZ2UgPSBmbXQuU3ByaW50Zihtc2csIGluLk5hbWUpCgkJcmV0dXJuIG5pbAoJfSkKfQpgYGAK readmeEtag: '"2f6a120cc802345c0e938abb2306ee832edb8e49"' readmeLastModified: Fri, 12 Jul 2024 06:33:17 GMT repositoryId: 631874551 description: RESTful Web Services base on Echo created: '2023-04-24T08:42:46Z' updated: '2024-07-12T06:33:28Z' language: Go archived: false stars: 2 watchers: 1 forks: 0 owner: fourcels logo: https://avatars.githubusercontent.com/u/1042568?v=4 license: MIT repoEtag: '"a61b458ea2b13b84f1132e10fdabcaf3eb3669db2bc2facefde1b08c5a5cc0b9"' repoLastModified: Fri, 12 Jul 2024 06:33:28 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/osvalda/pitaya v3: true repositoryMetadata: base64Readme: >- IyBQaXRheWEKClshW0NpcmNsZUNJXShodHRwczovL2ltZy5zaGllbGRzLmlvL2NpcmNsZWNpL2J1aWxkL2dpdGh1Yi9vc3ZhbGRhL1BpdGF5YS9tYXN0ZXIpXShodHRwczovL2FwcC5jaXJjbGVjaS5jb20vcGlwZWxpbmVzL2dpdGh1Yi9vc3ZhbGRhL1BpdGF5YT9icmFuY2g9bWFzdGVyKQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi9vc3ZhbGRhL1BpdGF5YS9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9vc3ZhbGRhL1BpdGF5YT9icmFuY2g9bWFzdGVyKQpbIVtHaXRIdWIgbGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9zcG90aWZ5L3NjaW8uc3ZnKV0oLi9MSUNFTlNFKQpbIVtNYXZlbiBDZW50cmFsXShodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLWNlbnRyYWwvdi9pby5naXRodWIub3N2YWxkYS9QaXRheWEuc3ZnP2xhYmVsPU1hdmVuJTIwQ2VudHJhbCldKGh0dHBzOi8vY2VudHJhbC5zb25hdHlwZS5jb20vYXJ0aWZhY3QvaW8uZ2l0aHViLm9zdmFsZGEvUGl0YXlhLykKCkFQSSBjb3ZlcmFnZSB2aXN1YWxpemVyIHRvb2wuIENyZWF0ZXMgYW4gZWFzaWx5IHJlYWRhYmxlIGh0bWwgcmVwb3J0IGJhc2VkIHVwb24gdGhlIGV4ZWN1dGVkIEFQSSB0ZXN0IGNhc2VzLgoKPiBDdXJyZW50bHkgW1Rlc3ROR10gYW5kIFtKVW5pdDVdIGFyZSB0aGUgc3VwcG9ydGVkIGZyYW1ld29ya3MKCiMjIFVzYWdlCiMjIyBEZXBlbmRlbmN5CgoqKk1hdmVuKio6CmBgYHhtbAo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPmlvLmdpdGh1Yi5vc3ZhbGRhPC9ncm91cElkPgogICAgPGFydGlmYWN0SWQ+UGl0YXlhPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+MS4yLjI8L3ZlcnNpb24+CiAgICA8c2NvcGU+dGVzdDwvc2NvcGU+CjwvZGVwZW5kZW5jeT4KYGBgCgoqKkdyYWRsZSoqOgoKYGBgR3Jvb3Z5CmRlcGVuZGVuY2llcyB7CiAgICB0ZXN0Q29tcGlsZSgiaW8uZ2l0aHViLm9zdmFsZGE6UGl0YXlhOjEuMi4yIikKfQpgYGAKCiMjIyBDb25maWd1cmF0aW9uCgojIyMjIElucHV0IGZpbGUKCiMjIyMjIFBpdGF5YSBlbmRwb2ludCBsaXN0IGZpbGUKQ3JlYXRlIGEgdGV4dCBmaWxlIGluIHlvdXIgcmVzb3VyY2UgZGlyZWN0b3J5IGFuZCBhZGQgbGluZXMgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6CgpgYGAKREVMRVRFIC9wb3N0cy97cG9zdF9pZH0sIFBvc3RzCgpHRVQgL3Bvc3RzL3twb3N0X2lkfS9jb21tZW50cywgQ29tbWVudHMKR0VUIC9jb21tZW50cy97cG9zdF9pZH0sIENvbW1lbnRzCgojIGNvbW1lbnQgbGluZQojIGEgc3RhciBtYXJrcyB0aGUgZW5kcG9pbnQgdG8gYmUgaWdub3JlZAoqIEdFVCAvcG9zdHMve3Bvc3RfaWR9L3BpY3MsIFBpY3R1cmVzCgpHRVQgL3Bvc3RzL3twb3N0X2lkfS9waWNzLCBQaWN0dXJlcwouLi4KYGBgCgojIyMjIyBPcGVuQVBJIFZlcnNpb24gMyBmaWxlCkNvcHkgdGhlIG9wZW4gYXBpIGZpbGUgKGpzb24gb3IgeWFtbCkgdG8gcmVzb3VyY2VzIGRpcmVjdG9yeSBvciB1c2UgaXRzIFVSTAoKIyMjIyBQcm9wZXJ0aWVzIGZpbGUKCkNyZWF0ZSBhIGBwaXRheWEucHJvcGVydGllc2AgZmlsZSBpbnRvIHRoZSByb290IG9mIHlvdXIgcmVzb3VyY2VzIGRpcmVjdG9yeSBhbmQKYWRkIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0byBpdDoKCnwgS2V5IHwgVmFsdWUgfCBNYW5kYXRvcnkgfAp8IC0tLS0tLSB8IC0tLS0tLSB8IC0tLS0tLSB8CnwgYXBwbGljYXRpb24ubmFtZSB8IFRoZSBuYW1lIG9mIHlvdXIgU1VUIHwgWWVzIHwgCnwgZW5kcG9pbnQubGlzdC5pbnB1dCB8IFRoZSBlbmRwb2ludCBsaXN0IGZpbGUncyByZWxhdGl2ZSBwYXRoIG9yIE9wZW4gQVBJIGZpbGUgVVJMfCBZZXMgfAoKIyMjIFRlc3QgY2FzZSBtb2RpZmljYXRpb25zCgojIyMjIFRlc3RORwoKVG8gdXNlIFBpdGF5YSB3aXRoIFRlc3RORyBhZGQgdGhlIHJlcG9ydGVyIHRvIHRoZSBsaXN0ZW5lcnMgaW4geW91ciB0ZXN0IGNsYXNzKGVzKToKYGBgamF2YQpATGlzdGVuZXJzKHtQaXRheWFDb3ZlcmFnZVJlcG9ydGVyLmNsYXNzfSkKcHVibGljIGNsYXNzIFlvdXJUZXN0TkdUZXN0Q2xhc3MgewogICAgLy8gLi4uCn0KYGBgCgojIyMjIEpVbml0IDUKClRvIHVzZSBQaXRheWEgd2l0aCBKVW5pdDUgIGFkZCB0aGUgZXh0ZW5zaW9uIHRvIHRoZSBleHRlbnNpb25zIGluIHlvdXIgdGVzdCBjbGFzcyhlcyk6CmBgYGphdmEKQEV4dGVuZFdpdGgoUGl0YXlhQ292ZXJhZ2VFeHRlbnNpb24uY2xhc3MpCnB1YmxpYyBjbGFzcyBZb3VySlVuaXQ1VGVzdENsYXNzIHsKICAgIC8vIC4uLgp9CmBgYAoKIyMjIyBJbiBUZXN0IE1ldGhvZHMKCkFubm90YXRlIGFsbCB5b3VyIHRlc3QgbWV0aG9kcyB3aGljaCB5b3Ugd2FudCB0byBpbmNsdWRlIGluIHRoZSByZXBvcnQ6CmBgYGphdmEKQFRlc3QKQFRlc3RDYXNlU3VwcGxlbWVudGFyeShhcGkgPSB7R0VUICsgIi9vbmVfb2ZfeW91cl9lbmRwb2ludCJ9KQpwdWJsaWMgdm9pZCB5b3VyVGVzdE1ldGhvZCgpIHsKICAgIC8vIC4uLgp9CmBgYAoKIyMgUHJldmlldwoKPGEgaHJlZj0iaHR0cHM6Ly9pLmliYi5jby9kd01neDFINy9kYXNoLnBuZyIgdGFyZ2V0PSJfYmxhbmsiPgogICAgPGltZyB3aWR0aD0iNDI1IiBoZWlnaHQ9IjIxNyIgYWx0PSJjaGFydHMiIHNyYz0iaHR0cHM6Ly9pLmliYi5jby9kd01neDFINy9kYXNoLnBuZyI+CjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9pLmliYi5jby9XTlk1V3F6US9lbmRwb2ludC1MaXN0LnBuZyIgdGFyZ2V0PSJfYmxhbmsiPgogICAgPGltZyB3aWR0aD0iNDI1IiBoZWlnaHQ9IjIxNyIgYWx0PSJlbmRwb2ludCBsaXN0IiBzcmM9Imh0dHBzOi8vaS5pYmIuY28vV05ZNVdxelEvZW5kcG9pbnQtTGlzdC5wbmciPgo8L2E+CgojIyBDSSBJc3N1ZXMgYW5kIHNvbHV0aW9ucwoKIyMjIEplbmtpbnMKCklmIEplbmtpbnMgZmFpbHMgdG8gZGlzcGxheSBjc3MsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBpbiBgTWFuYWdlIEplbmtpbnNgIC8gYFNjcmlwdCBjb25zb2xlYApgYGAKU3lzdGVtLnNldFByb3BlcnR5KCJodWRzb24ubW9kZWwuRGlyZWN0b3J5QnJvd3NlclN1cHBvcnQuQ1NQIiwgIiIpCmBgYAoKCltUZXN0TkddOiA8aHR0cHM6Ly90ZXN0bmcub3JnL2RvYy8+CltKVW5pdDVdOiA8aHR0cHM6Ly9qdW5pdC5vcmcvanVuaXQ1Lz4= readmeEtag: '"d5ded8e84b91130ed210cbf9e83a83fd5b97178b"' readmeLastModified: Sat, 22 Feb 2025 12:50:01 GMT repositoryId: 284689009 description: API test coverage reporter for TestNG and JUnit5 created: '2020-08-03T12:04:28Z' updated: '2025-02-22T12:50:06Z' language: Java archived: false stars: 2 watchers: 1 forks: 0 owner: osvalda logo: https://avatars.githubusercontent.com/u/29924475?v=4 license: Apache-2.0 repoEtag: '"a46222759036b4bc8dea2170c41f106b1753c0bdb4186be7e4e05916c672c722"' repoLastModified: Sat, 22 Feb 2025 12:50:06 GMT foundInMaster: true category: Description Validators id: 9d42f0c86da6d152bdc8bb7a06122b00 - source: openapi3 tags repository: https://github.com/api-stuff/spectral-spelling-grammar v3: true repositoryMetadata: base64Readme: >- IyBTcGVjdHJhbCBTcGVsbGluZyBhbmQgR3JhbW1hciBSdWxlc2V0CgpPbmUgb2YgdGhlIHRoaW5ncyBJIGZpbmQgYWNyb3NzIHRoZSBjb250cmFjdHMgSSB3b3JrIG9uIGlzIHRoZSBsYWNrIG9mIGF0dGVudGlvbiB0byBkZXRhaWwgaW4gZ2V0dGluZyBzcGVsbGluZyBhbmQgZ3JhbW1hciBjb3JyZWN0IGluIE9wZW5BUEkgZG9jdW1lbnRzLiBTdXJlLCBtb3N0IGRldmVsb3BlcnMgZG9uJ3QgY2FyZSBhYm91dCB0aGlzIHN0dWZmLCBidXQgaXQgdGFrZXMgdGhlIHNoaW5lIG9mIHdoYXQgc2hvdWxkIGJlIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgcHJvZHVjdCBvZmZlcmluZy4KCkkndmUgdGhlcmVmb3JlIGtub2NrZWQgdG9nZXRoZXIgdGhpcyBbU3BlY3RyYWxdKGh0dHBzOi8vbWV0YS5zdG9wbGlnaHQuaW8vZG9jcy9zcGVjdHJhbC9aRzlqT2pZeC1vdmVydmlldykgcnVsZXNldCBhcyBhIGxpdHRsZSBwcm9vZi1vZi1jb25jZXB0LiBJdCB1c2VzIGEgW0N1c3RvbSBGdW5jdGlvbl0oaHR0cHM6Ly9tZXRhLnN0b3BsaWdodC5pby9kb2NzL3NwZWN0cmFsL1pHOWpPakkxTVRrdy1jdXN0b20tZnVuY3Rpb25zKSBhbmQgdGhlIEF0b20gcGFja2FnZSBbYHNwZWxsY2hlY2tlcmBdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3NwZWxsY2hlY2tlciksIHdoaWNoIG9mZmVycyB1cCBzb21lIGJpbmRpbmdzIHRvIHRoZSBzeXN0ZW0gc3BlbGwgY2hlY2tlci4gTm90ZSAqKm5vIGdyYW1tYXIgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkIHJpZ2h0IG5vdyAtIHRvIGJlIGltcGxlbWVudGVkIGluIGR1ZSBjb3Vyc2UqKi4KCkl0J3MganVzdCBzb21ldGhpbmcgZm9yIGZvbGtzIHRvIHBpY2sgdXAgYW5kIHVzZS4gVGhlIGJpZ2dlc3QgZHJhd2JhY2sgd2l0aCB0aGUgYXBwcm9hY2ggaXMgdGhlIGJpbmRpbmcgdG8gdGhlIHN5c3RlbSBkaWN0aW9uYXJ5LCB3aGljaCBtYXkgb2YgY291cnNlIGJlIGluIGEgZGlmZmVyZW50IGxhbmd1YWdlIHRvIHRoZSBvbmUgdGhlIE9wZW5BUEkgZG9jdW1lbnQgaXMgYmVpbmcgYXV0aG9yZWQgaW4uIEhvd2V2ZXIsIEknbSBzdXJlIGNsZXZlciBmb2xrcyBvdXQgdGhlcmUgY2FuIGlyb24gdGhpcyB3cmlua2xlIG91dCAocHJvYmFibHkgYnkgc3dhcHBpbmcgdGhlIGBzcGVsbGNoZWNrZXJgIGRlcGVuZGVuY3kgZm9yIHNvbWV0aGluZyBhIGJpdCBtb3JlICJmbGV4aWJsZSIpLgoKIyMgRXhhbXBsZQoKQnkgd2F5IG9mIGV4ZW1wbGFyLCBJJ3ZlIGtub2NrZWQgdG9nZXRoZXIgYW4gW09wZW5BUEkgZG9jdW1lbnRdKHRlc3QvbWlzc3BlbHQtb3BlbmFwaS55YW1sKSB3aXRoIGEgYnVuY2ggb2Ygc3BlbGxpbmcgbWlzdGFrZXMuIElmIHlvdSBydW4gdGhlIGZvbGxvd2luZzoKCmBgYGJhc2gKeWFybiBpbnN0YWxsCnlhcm4gcnVuIGxpbnQgcnVsZXNldHMvc3BlbGwtY2hlY2sueWFtbCB0ZXN0L21pc3NwZWx0LW9wZW5hcGkueWFtbCAjwqBGb3IgY29udmVuaWVuY2UsIGlkZWFsbHkgaW5zdGFsbCBTcGVjdHJhbCBnbG9iYWxseQpgYGAKCllvdSBzaG91bGQgZ2V0IHRoZSBmb2xsb3dpbmcgb3V0cHV0OgoKYGBgYmFzaArinpwgIHNwZWN0cmFsLXNwZWxsaW5nLWdyYW1tYXIgZ2l0OihtYXN0ZXIpIOKclyB5YXJuIHJ1biBsaW50IHJ1bGVzZXRzL3NwZWxsLWNoZWNrLnlhbWwgdGVzdC9taXNzcGVsdC1vcGVuYXBpLnlhbWwKeWFybiBydW4gdjEuMjIuMTcKJCBucHggc3BlY3RyYWwgbGludCAtLXJ1bGVzZXQgcnVsZXNldHMvc3BlbGwtY2hlY2sueWFtbCB0ZXN0L21pc3NwZWx0LW9wZW5hcGkueWFtbAoKL1VzZXJzL2NocmlzL0RvY3VtZW50cy9naXQvZ2l0aHViL2FwaS1zdHVmZi9zcGVjdHJhbC1zcGVsbC1jaGVjay90ZXN0L21pc3NwZWx0LW9wZW5hcGkueWFtbAogIDM6MTAgIHdhcm5pbmcgIGNoZWNrLXRpdGxlLXNwZWxsaW5nICAgICAgICBNaXNzcGVsdCB3b3JkcyBmb3VuZCBpbiB0ZXh0OiBjb25jcHRlICAgICAgICAgICBpbmZvLnRpdGxlCiAgNDoxNiAgd2FybmluZyAgY2hlY2stZGVzY3JpcHRpb24tc3BlbGxpbmcgIE1pc3NwZWx0IHdvcmRzIGZvdW5kIGluIHRleHQ6IGJkYWx5LCBzbWVhbHQgICAgIGluZm8uZGVzY3JpcHRpb24KICA5OjE2ICB3YXJuaW5nICBjaGVjay1zdW1tYXJ5LXNwZWxsaW5nICAgICAgTWlzc3BlbHQgd29yZHMgZm91bmQgaW4gdGV4dDogRGVmYXV0bCAgICAgICAgICAgcGF0aHMuL3Rlc3QuZ2V0LnN1bW1hcnkKIDEwOjIwICB3YXJuaW5nICBjaGVjay1kZXNjcmlwdGlvbi1zcGVsbGluZyAgTWlzc3BlbHQgd29yZHMgZm91bmQgaW4gdGV4dDogc3BlbGluZywgdmVlZXJ5eSAgcGF0aHMuL3Rlc3QuZ2V0LmRlc2NyaXB0aW9uCiAxMzoyNCAgd2FybmluZyAgY2hlY2stZGVzY3JpcHRpb24tc3BlbGxpbmcgIE1pc3NwZWx0IHdvcmRzIGZvdW5kIGluIHRleHQ6IERlZmFsdCAgICAgICAgICAgIHBhdGhzLi90ZXN0LmdldC5yZXNwb25zZXNbMjAwXS5kZXNjcmlwdGlvbgoK4pyWIDUgcHJvYmxlbXMgKDAgZXJyb3JzLCA1IHdhcm5pbmdzLCAwIGluZm9zLCAwIGhpbnRzKQrinKggIERvbmUgaW4gMS4zN3MuCuKenCAgc3BlY3RyYWwtc3BlbGxpbmctZ3JhbW1hciBnaXQ6KG1hc3Rlcikg4pyXCmBgYAoKU2ltcGxlIHJlYWxseS4KCiMjIEFuYXRvbXkKClRoZSBhbmF0b215IG9mIHRoaXMgcHJvamVjdCBpcyBwcmV0dHkgYmFzaWMgYW5kIHJlZmxlY3RzIHRoZSB1c2Ugb2YgQ3VzdG9tIEZ1bmN0aW9ucyBpbiBTcGVjdHJhbC4KCj4gSWYgeW91IGFyZSBub3QgZmFtaWxpYXIgd2l0aCBTcGVjdHJhbCBhbmQgd291bGQgbGlrZSBhIGRlZXAgZGl2ZSBjaGVja291dCBteSBbc291cCB0byBudXRzIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGktc3R1ZmYvaGFuZHMtb24td2l0aC1zcGVjdHJhbCkgb3IgbXkgW0FTQyBwcmVzZW50YXRpb25dKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9cmRkdlhnbnFlSlEpIGZvciBhIHF1aWNrIG92ZXJ2aWV3LgoKVGhlIGZ1bmRhbWVudGFsIHBhcnRzIGFyZToKCiogQSBbY3VzdG9tIHJ1bGVzZXRdKHJ1bGVzZXRzL3NwZWxsLWNoZWNrLnlhbWwpIHRoYXQgaW1wbGVtZW50cyBydWxlcyBiYXNlZCBvbiBmaW5kaW5nIGFueSBgZGVzY3JpcHRpb25gLCBgc3VtbWFyeWAgb3IgYHRpdGxlYCBwcm9wZXJ0eSBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4gVGhlIHNldmVyaXR5IGlzIHNldCBhcyBhIHdhcm5pbmcgaW4gdGhpcyBydWxlc2V0LgoqIEVhY2ggb2YgdGhvc2UgcnVsZXMgaW52b2tlcyB0aGUgc3BlbGwgY2hlY2sgW2N1c3RvbSBmdW5jdGlvbl0ocnVsZXNldHMvZnVuY3Rpb25zL3NwZWxsLWNoZWNrLmpzKSB3aGljaCBzcGxpdHMgdGhlIHN0cmluZyBpbnRvIHdvcmRzIGFuZCB0aGVuIHJ1bnMgdGhlIGBzcGVsbGNoZWNrZXIuaXNNaXNzcGVsbGVkYCBmdW5jdGlvbiBvbiBlYWNoIHRvIGZpbmQgdGhlIG1pc3NwZWx0IHdvcmRzLiBUaGUgd29yZHMgYXJlIHJldHVybmVkIGluIHRoZSBtZXNzYWdlLgoKSWYgeW91IHdhbnQgdG8gdXNlIHRoaXMgcnVsZXNldCBqdXN0IGNsb25lIHRoaXMgcmVwb3NpdG9yeSwgZ3JhYiB0aGUgcnVsZXNldCBhbmQgZnVuY3Rpb24gYW5kIHJlZmVyZW5jZSB0aGVtIHRodXMgaW4geW91ciBydWxlc2V0IChJIG1pZ2h0IHBhY2thZ2UgdGhpcyBzdHVmZiBsYXRlciBpZiBJIGFkZCBtb3JlIGZ1bmN0aW9ucyk6CgpgYGB5YW1sCmV4dGVuZHM6CiAgLSAuL3NwZWxsLWNoZWNrLnlhbWwKYGBgCgpCb2JzIHlvdXIgVW5jbGUgOnRodW1ic3VwOi4= readmeEtag: '"da82af4316efb4b421e8b5d49e5cdd4ad11f1d86"' readmeLastModified: Thu, 03 Mar 2022 18:14:48 GMT repositoryId: 465832120 description: >- A proof-of-concept for using Spectral to drive spelling and grammar checking in OpenAPI documents created: '2022-03-03T18:06:05Z' updated: '2022-10-21T04:52:59Z' language: JavaScript archived: false stars: 2 watchers: 1 forks: 1 owner: api-stuff logo: https://avatars.githubusercontent.com/u/68026188?v=4 repoEtag: '"81dda7cd9608e4bad2c6459f45ccc646505873e2fa8492293a511f75d163dd68"' repoLastModified: Fri, 21 Oct 2022 04:52:59 GMT foundInMaster: true category: Description Validators id: e6a9aa0225aacef9eaa6bbdfadfc63ed - source: openapi3 tags repository: https://github.com/manuzhang/akka-http-petstore v3: true repositoryMetadata: base64Readme: >- IyBha2thLWh0dHAtcGV0c3RvcmUgWyFbQ29udGludW91cyBJbnRlZ3JhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL21hbnV6aGFuZy9ha2thLWh0dHAtcGV0c3RvcmUvYWN0aW9ucy93b3JrZmxvd3MvY2kueW1sL2JhZGdlLnN2Zz9icmFuY2g9bWFpbildKGh0dHBzOi8vZ2l0aHViLmNvbS9tYW51emhhbmcvYWtrYS1odHRwLXBldHN0b3JlL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbCkK readmeEtag: '"e3ca7355df147b706a5b46774504ae31b2dc3803"' readmeLastModified: Tue, 16 Jul 2024 06:39:09 GMT repositoryId: 326146968 description: >- An akka-http server which implements OpenAPI 3 Spec of https://petstore3.swagger.io. created: '2021-01-02T09:12:55Z' updated: '2024-07-16T06:39:12Z' language: Scala archived: false stars: 2 watchers: 1 forks: 1 owner: manuzhang logo: https://avatars.githubusercontent.com/u/1191767?v=4 license: Apache-2.0 repoEtag: '"b1fb874d17c40ce82209b0efbbde5450e0ea1a99ff724b7dae5c838b4ee63c7c"' repoLastModified: Tue, 16 Jul 2024 06:39:12 GMT foundInMaster: true category: - Server - SDK id: 31e653c1ce6f0fa9b3fc293a6d8974ab - source: openapi3 tags repository: https://github.com/tada5hi/trapi v3: true id: b61b0e05c005d9efb075eef2edb804e4 repositoryMetadata: base64Readme: >- IyBUUkFQSSDwn6acCgpbIVttYWluXShodHRwczovL2dpdGh1Yi5jb20vVGFkYTVoaS90cmFwaS9hY3Rpb25zL3dvcmtmbG93cy9tYWluLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vVGFkYTVoaS90cmFwaS9hY3Rpb25zL3dvcmtmbG93cy9tYWluLnltbCkKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL1RhZGE1aGkvdHJhcGkvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPVpVSjhGNVRUU1gpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvVGFkYTVoaS90cmFwaSkKWyFbS25vd24gVnVsbmVyYWJpbGl0aWVzXShodHRwczovL3NueWsuaW8vdGVzdC9naXRodWIvVGFkYTVoaS90cmFwaS9iYWRnZS5zdmcpXShodHRwczovL3NueWsuaW8vdGVzdC9naXRodWIvVGFkYTVoaS90cmFwaSkKCiMjIFdoYXQgaXMgaXQ/CioqVCoqeXBlU2NyaXB0ICoqUioqZXN0ICoqQVBJKiogaXMgYSBjb2xsZWN0aW9uIG9mIHBhY2thZ2VzIHRvIGNyZWF0ZS9nZW5lcmF0ZToKLSBNZXRhZGF0YSBmb3IgUkVTVC1BUElzCi0gU3dhZ2dlciBkb2N1bWVudGF0aW9uCgoqKlRhYmxlIG9mIENvbnRlbnRzKioKCi0gW1BhY2thZ2VzXSgjcGFja2FnZXMpCi0gW0RvY3VtZW50YXRpb25dKCNkb2N1bWVudGF0aW9uKQotIFtMaWNlbnNlXSgjbGljZW5zZSkKCiMjIFBhY2thZ2VzClRoZSByZXBvc2l0b3J5IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgcGFja2FnZXM6CgotICoqQHRyYXBpL21ldGFkYXRhKio6IEEgcGFja2FnZSBmb3IgZ2VuZXJhdGluZyBtZXRhZGF0YSBpbmZvcm1hdGlvbiBieSBhbmFseXppbmcgcHJlc2VudCBkZWNvcmF0b3JzLgogIFRoZSBtZXRhZGF0YSBjYW4gdGhhbiBiZSB1c2VkIGZvciBnZW5lcmF0aW5nIGEgZG9jdW1lbnRhdGlvbiBhY2NvcmRpbmcgdG8gdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBvciB0byBjcmVhdGUgcm91dGUgc2NoZW1hL2hhbmRsaW5nIGZvciBsaWJyYXJpZXMgbGlrZTogZXhwcmVzcywga29hLCBldGMuCi0gKipAdHJhcGkvc3dhZ2dlcioqOiBBIHBhY2thZ2UgdG8gZ2VuZXJhdGUgYSBmdWxseSBmZWF0dXJlZCBkb2N1bWVudGF0aW9uIGFjY29yZGluZyB0aGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIGZyb20gZ2l2ZW4gbWV0YWRhdGEuCgojIyBEb2N1bWVudGF0aW9uCgpUbyByZWFkIHRoZSBkb2NzLCB2aXNpdCBbaHR0cHM6Ly90cmFwaS50YWRhNWhpLm5ldF0oaHR0cHM6Ly90cmFwaS50YWRhNWhpLm5ldCkKCiMjIExpY2Vuc2UKCk1hZGUgd2l0aCDwn5KaCgpQdWJsaXNoZWQgdW5kZXIgW01JVCBMaWNlbnNlXSguL0xJQ0VOU0UpLgo= readmeEtag: '"aef84820ffebd461880e9c40d3019fb4f2289e10"' readmeLastModified: Mon, 24 Jun 2024 09:22:00 GMT repositoryId: 526931733 description: >- TRAPI is a collection of packages to create/generate metadata for REST-APis and generate swagger documentations. created: '2022-08-20T13:17:32Z' updated: '2025-07-29T14:29:00Z' language: TypeScript archived: false stars: 2 watchers: 1 forks: 0 owner: tada5hi logo: https://avatars.githubusercontent.com/u/13162758?v=4 license: MIT repoEtag: '"e77639fce3759123c950cedb683ca191966732501c8b3a99a67df4b24fbfafa5"' repoLastModified: Tue, 29 Jul 2025 14:29:00 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/egoodhall/openapi-tooling v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLXRvb2xpbmcgIVtCdWlsZF0oaHR0cHM6Ly9naXRodWIuY29tL2VtbTAzNS9vcGVuYXBpLXRvb2xpbmcvd29ya2Zsb3dzL0J1aWxkL2JhZGdlLnN2ZykK readmeEtag: '"a5566880aaf35c4575b8123f0c4c740237ba2f9b"' readmeLastModified: Tue, 14 Mar 2023 22:07:46 GMT repositoryId: 278534292 description: Java tooling for OpenAPI created: '2020-07-10T04:02:43Z' updated: '2024-05-01T08:02:44Z' language: Java archived: false stars: 2 watchers: 1 forks: 0 owner: egoodhall logo: https://avatars.githubusercontent.com/u/13439972?v=4 license: MIT repoEtag: '"850ccb201e5285aff1337d7c97d518b5370e044718a8ec18e43aadc8f0c9935d"' repoLastModified: Wed, 01 May 2024 08:02:44 GMT foundInMaster: true category: - Low-level Tooling - SDK - Parsers id: 6c7ef7e719292d4c7dfd7cf06e78b634 oldLocations: - https://github.com/emm035/openapi-tooling - source: openapi3 tags repository: https://github.com/sky0621/cv-admin v3: true id: a6100588c4145919226457bbbf7afee3 repositoryMetadata: base64Readme: >- IyBjdi1hZG1pbgoKR2l0SHViIFBhZ2VzIOOBq+OBpuWFrOmWi+OBl+OBpuOBhOOCiyBbQ3VycmljdWx1bS1WaXRhZV0oaHR0cHM6Ly9za3kwNjIxLmdpdGh1Yi5pby9jdi8pIOOBruODh+ODvOOCv+OCveODvOOCueOCkueuoeeQhuOBmeOCi+OAggoK44OH44O844K/44K944O844K5566h55CG44Gr44GvIFtTUUxpdGVdKGh0dHBzOi8vd3d3LnNxbGl0ZS5vcmcvaW5kZXguaHRtbCkg44KS5L2/44GG44CCCgrjg4fjg7zjgr/jgr3jg7zjgrnjgbjjga7jgqLjgq/jgrvjgrnnlKjjgasgV2ViIEFQSSDjgqjjg7Pjg4njg53jgqTjg7Pjg4jjgpLnlKjmhI/jgIIKCkFQSeWumue+qeOBryBbT3BlbkFQSSB2M10oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vKSDjgavmupbmi6DjgIIKCllhbWzjga/jgIFb44GT44KMXSguL3NjaGVtYS9vcGVuYXBpLnltbCkg77yI44OX44Os44OT44Ol44O855So44GrZG9ja2VyZmlsZeabuOOBk+OBhuOBqOaAneOBo+OBn+OBkeOBqUlEReOBruODl+ODrOODk+ODpeODvOapn+iDveOBp+WNgeWIhuOBoOOBo+OBn+OBruOBp+ecgeeVpe+8ieOAggoKW3N3YWdnZXIuaW/jga7jgqjjg4fjgqPjgr9dKGh0dHBzOi8vZWRpdG9yLW5leHQuc3dhZ2dlci5pby8pIOOBq+iyvOOBo+OBpuOCguOBhOOBhOOAggoKIVvjgZPjgpPjgarmhJ/jgZhdKHBpY3MvY3ZhcGkucG5nKQoKT29wcy4g5pyq5a6f6KOF44GM55uu56uL44Gk44O744O744O744CCCgojIyBmdW5jdGlvbgoK4oC744Ot44O844Kr44Or5a6f6KGM44GvIFtnbyAodjEuMjQpXShodHRwczovL2dvLmRldi8pIOOCpOODs+OCueODiOODvOODq+a4iOOBv+OBjOWJjeaPkOOAggoKY3YtYWRtaW4g44OH44Kj44Os44Kv44OI44Oq55u05LiL44Gn5Lul5LiL44KS5Y+p44GP44CCCgojIyMgc2VydmVyCgrjg63jg7zjgqvjg6vjgadBUEnjgrXjg7zjg5Djg7zotbfli5XjgIIKCmBgYApnbyBydW4gc3JjL21haW4uZ28gc2VydmVyCmBgYAoKIyMjIG1pZ3JhdGUKCltlbnQuKE9STSldKGh0dHBzOi8vZW50Z28uaW8vamEvKSDjgaflrprnvqnjgZfjgZ/jg4bjg7zjg5bjg6vlrprnvqnjgpIgW1NRTGl0ZV0oaHR0cHM6Ly93d3cuc3FsaXRlLm9yZy9pbmRleC5odG1sKSDjg5XjgqHjgqTjg6vjgavlj43mmKDjgZnjgovjgIIKCmBgYApnbyBydW4gc3JjL21haW4uZ28gbWlncmF0ZQpgYGAKCiMjIyBleHBvcnQKCkFQSeOCteODvOODkOODvOOBq+OCouOCr+OCu+OCueOBl+OBpuWPluW+l+OBl+OBn+ODh+ODvOOCv+OCveODvOOCueOCkkpTT07lvaLlvI/jgafmjIflrprlhYjjgavjgqjjgq/jgrnjg53jg7zjg4jjgZnjgovjgIIKCuOBk+OCjOOCkuS9v+OBo+OBpiBbY3ZdKGh0dHBzOi8vZ2l0aHViLmNvbS9za3kwNjIxL2N2KSDjg6rjg53jgrjjg4jjg6rjga7jg5Xjg63jg7Pjg4jjgqjjg7Pjg4nmqZ/og73jgYzjgq3jg6Pjg6rjgqLjgrfjg7zjg4jjga5XZWLjg5rjg7zjgrjjgpLooajnpLrjgZnjgovjgIIKCuKAu0FQSeOCteODvOODkOODvOOBjOi1t+WLleOBl+OBpuOBhOOCi+OBk+OBqOOBjOWJjeaPkOOAggoKYGBgCmdvIHJ1biBzcmMvbWFpbi5nbyBleHBvcnQgLS11c2VyaWQg44CQ44Om44O844K244O8SUTjgpLmjIflrprjgJEgLS1kaXIg44CQ5Ye65Yqb5YWI44OR44K544KS5oyH5a6a44CRCmBgYAoKIyMjIHN1Ym1pc3Npb24KCkFQSeOCteODvOODkOODvOOBq+OCouOCr+OCu+OCueOBl+OBpuWPluW+l+OBl+OBn+ODh+ODvOOCv+OCveODvOOCueOCkkV4Y2Vs5b2i5byP44Gn44Ko44Kv44K544Od44O844OI44GZ44KL44CCCgrigLvntJnlqpLkvZPjgarjgYTjgZdFeGNlbOODleOCoeOCpOODq+OBp+OBruaPkOWHuuOCkuaxguOCgeOCieOCjOOBn+aZgueUqOOAggoK4oC7QVBJ44K144O844OQ44O844GM6LW35YuV44GX44Gm44GE44KL44GT44Go44GM5YmN5o+Q44CCCgpgYGAKZ28gcnVuIHNyYy9tYWluLmdvIHN1Ym1pc3Npb24gLS11c2VyaWQg44CQ44Om44O844K244O8SUTjgpLmjIflrprjgJEKYGBgCgrigLvmnKrjgrPjg5/jg4Pjg4jjga7jgIxgLnByaXZhdGUuaW5pYOOAjeODleOCoeOCpOODq++8iOS7peS4i+OBruOCiOOBhuOBquWGheWuue+8ieOCkuODl+ODreOCuOOCp+OCr+ODiOODq+ODvOODiOebtOS4i+OBq+e9ruOBj+OAggoKYGBgCnBhc3N3b3JkID0geHh4eHh4eHh4eAprYW5hID0g44Ok44Oe44OA44CA44K/44Ot44KmCm5hbWUgPSDlsbHnlLDjgIDlpKrpg44KbWFpbCA9IGhvZ2Vob2dlQGV4YW1wbGUuY29tCmVkdWNhdGlvbmFsQmFja2dyb3VuZCA9IDIwWFjlubQz5pyI44CA4peL4peL5aSn5a2m4pah4pah5a2m6YOo44CA5Y2S5qWtCmNpdHlPZlJlc2lkZW5jZSA9IOKXi+KXi+ecjOKWoeKWoeW4ggpuZWFyZXN0U3RhdGlvbiA9IEpS5p2x5pel5pys44CA4peL4peL6aeFCmN2V2ViID0gaHR0cHM6Ly9za3kwNjIxLmdpdGh1Yi5pby9jdi8KY3ZBZG1pbiA9IGh0dHBzOi8vZ2l0aHViLmNvbS9za3kwNjIxL2N2LWFkbWluI3N1Ym1pc3Npb24KYGBgCgojIyMjIEV4Y2Vs44K144Oz44OX44OrCgpzYW1wbGUvc2tpbGxfc2hlZXQueGxzeAoKIVtzMV0ocGljcy9za2lsbHNoZWV0MDEucG5nKQohW3MxXShwaWNzL3NraWxsc2hlZXQwMi5wbmcpCiFbczFdKHBpY3Mvc2tpbGxzaGVldDAzLnBuZykKIVtzMV0ocGljcy9za2lsbHNoZWV0MDQucG5nKQohW3MxXShwaWNzL3NraWxsc2hlZXQwNS5wbmcpCgrjgIDjgIDjgIDjgIDjgIDjgIDjgIDjgIDjgIDjgIDjgIDjgIDjgIDjgIDjg7sKCuOAgOOAgOOAgOOAgOOAgOOAgOOAgOOAgOOAgOOAgOOAgOOAgOOAgOOAgOODuwoK44CA44CA44CA44CA44CA44CA44CA44CA44CA44CA44CA44CA44CA44CA44O7CgojIyBlbnYKCiMjIyBPUwoKYGBgCk1hYyBCb29rIEFpciBNMiAyMDIyClNvbm9tYSAxNC40LjEKYGBgCgojIyMgZ28KCmBgYArina8gZ28gdmVyc2lvbgpnbyB2ZXJzaW9uIGdvMS4yMi4wIGRhcndpbi9hcm02NApgYGAKCiMjIHNldHVwCgojIyMgcHJvamVjdAoKYGBgCiQgZ28gbW9kIGluaXQgZ2l0aHViLmNvbS9za3kwNjIxL2N2LWFkbWluCmdvOiBjcmVhdGluZyBuZXcgZ28ubW9kOiBtb2R1bGUgZ2l0aHViLmNvbS9za3kwNjIxL2N2LWFkbWluCmBgYAoKIyMjIG9wZW4tYXBpLWNvZGVnZW4KCmh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkKCmh0dHBzOi8vZ2l0aHViLmNvbS9kZWVwbWFwL29hcGktY29kZWdlbgoKYGBgCmdvIGluc3RhbGwgZ2l0aHViLmNvbS9kZWVwbWFwL29hcGktY29kZWdlbi9jbWQvb2FwaS1jb2RlZ2VuQGxhdGVzdApgYGAKCiMjIyBlbnQKCmZyb20gZW50aXR5IG1vZGVsIHRvIGRiIHRhYmxlCgpgYGAKY2Qgc3JjL2VudApgYGAKCmBgYApnbyBydW4gLW1vZD1tb2QgZW50Z28uaW8vZW50L2NtZC9lbnQgbmV3IFVzZXIgVXNlckFjdGl2aXR5IFVzZXJRdWFsaWZpY2F0aW9uIFVzZXJDYXJlZXJHcm91cCBVc2VyQ2FyZWVyIFVzZXJDYXJlZXJEZXNjcmlwdGlvbiBVc2VyQ2FyZWVyUGVyaW9kIENhcmVlclRhc2sgQ2FyZWVyU2tpbGxHcm91cCBDYXJlZXJTa2lsbCBVc2VyTm90ZSBVc2VyTm90ZUl0ZW0gU2tpbGxUYWcgU2tpbGwKYGBgCgojIyMgY29icmEKCmh0dHBzOi8vZ2l0aHViLmNvbS9zcGYxMy9jb2JyYQoKaHR0cHM6Ly9naXRodWIuY29tL3NwZjEzL2NvYnJhLWNsaS9ibG9iL21haW4vUkVBRE1FLm1kCgpgYGAKZ28gaW5zdGFsbCBnaXRodWIuY29tL3NwZjEzL2NvYnJhLWNsaUBsYXRlc3QKYGBgCgpgYGAKY29icmEtY2xpIGluaXQKYGBgCgojIyMjIGFkZCBjb21tYW5kCgpgYGAKY2Qgc3JjCmBgYAoKYGBgCmNvYnJhLWNsaSBhZGQgc2VydmVyCmBgYAoKIyMjIG96em8tdmFsaWRhdGlvbgoKaHR0cHM6Ly9naXRodWIuY29tL2dvLW96em8vb3p6by12YWxpZGF0aW9u readmeEtag: '"853176dd61f51dc6d7c7859da9fb720448fdfad9"' readmeLastModified: Sat, 05 Apr 2025 13:40:12 GMT repositoryId: 533311575 description: CVのデータソース管理、Web API提供、Excel出力 created: '2022-09-06T12:24:32Z' updated: '2025-04-05T13:40:18Z' language: Go archived: false stars: 2 watchers: 1 forks: 0 owner: sky0621 logo: https://avatars.githubusercontent.com/u/15807041?v=4 license: MIT repoEtag: '"e9e24b8fb6892da92ea92167634701b887638800aef9439dfacc1973fbba1226"' repoLastModified: Sat, 05 Apr 2025 13:40:18 GMT category: Code Generators foundInMaster: true - source: openapi3 tags repository: https://github.com/roar-skinderviken/vicx-applications v3: true id: 3fdaadd39a480426d9ab38cf0fb25e57 repositoryMetadata: base64Readme: >- IyBWaWN4IEFwcGxpY2F0aW9ucwoKIyMgR2V0dGluZyBzdGFydGVkCgojIyMgQ3JlYXRlIG5leHQtYXBwLy5lbnYubG9jYWwKU2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBjb250ZW50CmBgYApPQVVUSF9DTElFTlRfU0VDUkVUPXNlY3JldApPQVVUSF9CQVNFX1VSTD1odHRwOi8vbG9jYWxob3N0OjkwMDAvYXV0aC1zZXJ2ZXIKTkVYVEFVVEhfU0VDUkVUPXNlY3JldApORVhUQVVUSF9VUkw9aHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaS9hdXRoClJFQ0FQVENIQV9TSVRFX0tFWT02TGVJeEFjVEFBQUFBSmNaVlJxeUhoNzFVTUlFR05RX01YamlaS2hJCk5FWFRfUFVCTElDX0tNRUFOU19CQUNLRU5EX1VSTD1odHRwOi8vbG9jYWxob3N0OjgwMDAvay1tZWFucwpTUFJJTkdfQkFDS0VORF9CQVNFX1VSTD1odHRwOi8vbG9jYWxob3N0OjgwODAvYmFja2VuZC1zcHJpbmctYm9vdApgYGAKVmFsdWUgZm9yIGBSRUNBUFRDSEFfU0lURV9LRVlgIGlzIGEgZGV2IHZhbHVlLiAKCgojIyMgU3RhcnQgdGhlIGF1dGgtc2VydmVyIG9uIHBvcnQgOTAwMApgYGBzaGVsbAouL2dyYWRsZXcgLXAgYXV0aC1zZXJ2ZXIgYm9vdFJ1bgpgYGAKCiMjIyBTdGFydCB0aGUgTmV4dCBhcHAKYGBgc2hlbGwKY2QgbmV4dC1hcHAKYGBgCmBgYHNoZWxsCm5wbSBjaQpgYGAKYGBgc2hlbGwKbnBtIHJ1biBkZXYKYGBgCgpOZXh0IGFwcCB3aWxsIG5vdyBiZSBhdmFpbGFibGUgb24gCmh0dHA6Ly9sb2NhbGhvc3Q6MzAwMAoKVXNlcm5hbWUvcGFzc3dvcmQgZm9yIGxvZ2dpbmcgaW4gd2l0aCBPQXV0aDoKLSB1c2VyMQotIHBhc3N3b3JkCgojIyMgU3RhcnQgdGhlIGJhY2tlbmQtc3ByaW5nLWJvb3QgKG9wdGlvbmFsKQpgYGBzaGVsbAouL2dyYWRsZXcgLXAgYmFja2VuZC1zcHJpbmctYm9vdCBib290UnVuCmBgYAoKIyMjIFN0YXJ0IHRoZSBiYWNrZW5kLXB5dGhvbiAob3B0aW9uYWwsIHJlcXVpcmVzIFBvZXRyeSkKYGBgc2hlbGwKY2QgYmFja2VuZC1weXRob24KYGBgCmBgYHNoZWxsCnBvZXRyeSBpbnN0YWxsCmBgYApgYGBzaGVsbApwb2V0cnkgcnVuIHV2aWNvcm4gc3JjLmFwcDphcHAgLS1yZWxvYWQKYGBgCgojIyBBUEkgRG9jdW1lbnRhdGlvbgoKVGhlIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIEFQSSBpcyBhdmFpbGFibGUgYXQgdGhlIGZvbGxvd2luZyBVUkw6CgpbU3dhZ2dlciBVSV0oaHR0cDovL2xvY2FsaG9zdDo4MDgwL2JhY2tlbmQtc3ByaW5nLWJvb3Qvc3dhZ2dlci11aS9pbmRleC5odG1sKQoKWW91IGNhbiB1c2UgdGhpcyBpbnRlcmZhY2UgdG8gZXhwbG9yZSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgQVBJIGVuZHBvaW50cywgdmlldyB0aGVpciBkZXNjcmlwdGlvbnMsIAphbmQgdGVzdCByZXF1ZXN0cyBkaXJlY3RseSBmcm9tIHRoZSBVSS4KCiMjIEdyYXBoUUwKCmh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9iYWNrZW5kLXNwcmluZy1ib290L2dyYXBoaXFsCgoKYGBgCm11dGF0aW9uIHsKICBjcmVhdGVDYWxjdWxhdGlvbigKICAgIGZpcnN0VmFsdWU6IDEsIAogICAgc2Vjb25kVmFsdWU6IDIsIAogICAgb3BlcmF0aW9uOiBQTFVTCiAgKSB7CiAgICBpZAogICAgZmlyc3RWYWx1ZQogICAgc2Vjb25kVmFsdWUKICAgIG9wZXJhdGlvbgogICAgcmVzdWx0CiAgICB1c2VybmFtZQogICAgY3JlYXRlZEF0CiAgfQp9CmBgYAoKYGBgCnF1ZXJ5IHsKICBnZXRBbGxDYWxjdWxhdGlvbnMocGFnZTogMCkgewogICAgY2FsY3VsYXRpb25zIHsKICAgICAgZmlyc3RWYWx1ZQogICAgICBzZWNvbmRWYWx1ZQogICAgICBvcGVyYXRpb24KICAgICAgcmVzdWx0CiAgICB9LAogICAgcGFnZSwKICAgIHRvdGFsUGFnZXMKICB9Cn0KYGBgCgpgYGAKbXV0YXRpb24gewogICAgZGVsZXRlQ2FsY3VsYXRpb25zKGlkczogWzEsMl0pCn0KYGBgCg== readmeEtag: '"ae52c3abf65413f89c755762e3fe07810d0607a1"' readmeLastModified: Tue, 01 Jul 2025 19:54:11 GMT repositoryId: 823250960 description: Repo for jr. and me to play with microk8s, Flux CD and GitHub Actions created: '2024-07-02T17:06:45Z' updated: '2026-02-02T22:12:43Z' language: Kotlin archived: false stars: 3 watchers: 1 forks: 0 owner: roar-skinderviken logo: https://avatars.githubusercontent.com/u/7499642?v=4 repoEtag: '"f6cc3d61442198bfe8df7dd0c1af107fdba68bcfe5d6a128a251844bee0148d7"' repoLastModified: Mon, 02 Feb 2026 22:12:43 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/kumuluz/kumuluzee-openapi-mp v3: true repositoryMetadata: base64Readme: >- IyBLdW11bHV6RUUgT3BlbkFQSSBNaWNyb1Byb2ZpbGUKWyFbS3VtdWx1ekVFIENJXShodHRwczovL2dpdGh1Yi5jb20va3VtdWx1ei9rdW11bHV6ZWUtb3BlbmFwaS1tcC9hY3Rpb25zL3dvcmtmbG93cy9rdW11bHV6ZWUtY2kueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9rdW11bHV6L2t1bXVsdXplZS1vcGVuYXBpLW1wL2FjdGlvbnMvd29ya2Zsb3dzL2t1bXVsdXplZS1jaS55bWwpCgo+IEt1bXVsdXpFRSBPcGVuQVBJIE1pY3JvUHJvZmlsZSBwcm9qZWN0IHByb3ZpZGVzIHBvd2VyZnVsIHRvb2xzIHRvIGluY29ycG9yYXRlIHRoZSBPcGVuQVBJIDMgc3BlY2lmaWNhdGlvbiB0byB5b3VyCm1pY3Jvc2VydmljZXMgaW4gYSBzdGFuZGFyZGl6ZWQgd2F5LgoKS3VtdWx1ekVFIE9wZW5BUEkgTWljcm9Qcm9maWxlIHByb2plY3QgYWxsb3dzIHlvdSB0byBkb2N1bWVudCBtaWNyb3NlcnZpY2UgQVBJcyB1c2luZyBPcGVuQVBJIHYzIGNvbXBsaWFudCBhbm5vdGF0aW9ucy4KUHJvamVjdCB3aWxsIGF1dG9tYXRpY2FsbHkgaG9vay11cCBzZXJ2bGV0IHRoYXQgd2lsbCBzZXJ2ZSB5b3VyIEFQSSBzcGVjaWZpY2F0aW9ucyBvbiBlbmRwb2ludCBgL29wZW5hcGlgLgpUaGUgcHJvamVjdCBpbXBsZW1lbnRzIHRoZSBNaWNyb1Byb2ZpbGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgogCk1vcmUgZGV0YWlsczogCgotIFtPcGVuQVBJIHYzIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kKQotIFtNaWNyb1Byb2ZpbGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vZWNsaXBzZS9taWNyb3Byb2ZpbGUtb3Blbi1hcGkvcmVsZWFzZXMpCgojIyBVc2FnZQoKWW91IGNhbiBlbmFibGUgS3VtdWx1ekVFIE9wZW5BUEkgTWljcm9Qcm9maWxlIHN1cHBvcnQgYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgZGVwZW5kZW5jeToKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+Y29tLmt1bXVsdXouZWUub3BlbmFwaTwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPmt1bXVsdXplZS1vcGVuYXBpLW1wPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+JHtrdW11bHV6ZWUtb3BlbmFwaS1tcC52ZXJzaW9ufTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKCiMjIE9wZW5BUEkgY29uZmlndXJhdGlvbgoKV2hlbiBrdW11bHV6ZWUtb3BlbmFwaS1tcCBkZXBlbmRlbmN5IGlzIGluY2x1ZGVkIGluIHRoZSBwcm9qZWN0LCB5b3UgY2FuIHN0YXJ0IGRvY3VtZW50aW5nIHlvdXIgUkVTVCBBUEkgdXNpbmcKTWljcm9Qcm9maWxlIE9wZW5BUEkgYW5ub3RhdGlvbnMuCgojIyMgRG9jdW1lbnRpbmcgYXBwbGljYXRpb24gY2xhc3MKCmBgYGphdmEKQFNlY3VyaXR5U2NoZW1lKHNlY3VyaXR5U2NoZW1lTmFtZSA9ICJvcGVuaWQtY29ubmVjdCIsIHR5cGUgPSBTZWN1cml0eVNjaGVtZVR5cGUuT1BFTklEQ09OTkVDVCwKICAgICAgICBvcGVuSWRDb25uZWN0VXJsID0gImh0dHA6Ly9hdXRoLXNlcnZlci11cmwvLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb24iKQpAQXBwbGljYXRpb25QYXRoKCJ2MiIpCkBPcGVuQVBJRGVmaW5pdGlvbihpbmZvID0gQEluZm8odGl0bGUgPSAiQ3VzdG9tZXJBcGkiLCB2ZXJzaW9uID0gInYyLjAuMCIsIGNvbnRhY3QgPSBAQ29udGFjdCgpLCBsaWNlbnNlID0gQExpY2Vuc2UobmFtZT0ic29tZXRoaW5nIikpLCBzZXJ2ZXJzID0gQFNlcnZlcih1cmwgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDgwIiksIHNlY3VyaXR5CiAgICAgICAgPSBAU2VjdXJpdHlSZXF1aXJlbWVudChuYW1lID0gIm9wZW5pZC1jb25uZWN0IikpCnB1YmxpYyBjbGFzcyBDdXN0b21lckFwcGxpY2F0aW9uIGV4dGVuZHMgQXBwbGljYXRpb24gewp9CmBgYAoKIyMjIERvY3VtZW50aW5nIHJlc291cmNlIGNsYXNzIGFuZCBvcGVyYXRpb25zCgpgYGBqYXZhCkBQYXRoKCJjdXN0b21lcnMiKQpAQ29uc3VtZXMoTWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT04pCkBQcm9kdWNlcyhNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTikKcHVibGljIGNsYXNzIEN1c3RvbWVyUmVzb3VyY2UgewoKICAgIEBHRVQKICAgIEBPcGVyYXRpb24oc3VtbWFyeSA9ICJHZXQgY3VzdG9tZXJzIGRldGFpbHMiLCBkZXNjcmlwdGlvbiA9ICJSZXR1cm5zIGN1c3RvbWVyIGRldGFpbHMuIikKICAgIEBBUElSZXNwb25zZXMoewogICAgICAgICAgICBAQVBJUmVzcG9uc2UoZGVzY3JpcHRpb24gPSAiQ3VzdG9tZXIgZGV0YWlscyIsIHJlc3BvbnNlQ29kZSA9ICIyMDAiLCBjb250ZW50ID0gQENvbnRlbnQoc2NoZW1hID0gQFNjaGVtYShpbXBsZW1lbnRhdGlvbiA9CiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIuY2xhc3MpKSkKICAgIH0pCiAgICBAUGF0aCgie2N1c3RvbWVySWR9IikKICAgIHB1YmxpYyBSZXNwb25zZSBnZXRDdXN0b21lcihAUGF0aFBhcmFtKCJjdXN0b21lcklkIikgU3RyaW5nIGN1c3RvbWVySWQpIHsKICAgICAgICAvLyAuLi4KICAgIH0KCn0KYGBgCgojIyBBY2Nlc3NpbmcgQVBJIHNwZWNpZmljYXRpb24KCkJ1aWxkIGFuZCBydW4gcHJvamVjdCB1c2luZzoKCmBgYGJhc2gKbXZuIGNsZWFuIHBhY2thZ2UKamF2YSAtamFyIHRhcmdldC8ke3Byb2plY3QuYnVpbGQuZmluYWxOYW1lfS5qYXIKYGBgCgpBZnRlciBzdGFydHVwIEFQSSBzcGVjaWZpY2F0aW9uIHdpbGwgYmUgYXZhaWxhYmxlIGF0OgoKKipodHRwOi8vPC1ob3N0bmFtZS0+OjwtcG9ydC0+Lzwtb3B0aW9uYWwtY29udGV4dC1wYXRoLT4vb3BlbmFwaSoqCgpFeGFtcGxlOgoKaHR0cDovL2xvY2FsaG9zdDo4MDgwL29wZW5hcGkKClNlcnZpbmcgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHByb3BlcnR5ICoqa3VtdWx1emVlLm9wZW5hcGktbXAuZW5hYmxlZCoqIHRvIGZhbHNlLiBCeSBkZWZhdWx0CnNlcnZpbmcgQVBJIHNwZWMgaXMgZW5hYmxlZC4KCiMjIENvbmZpZ3VyYXRpb24KClRoZSBLdW11bHV6RUUgT3BlbkFQSSBNaWNyb1Byb2ZpbGUgZXh0ZW5zaW9uIGNhbiBiZSBjb25maWd1cmVkIHdpdGggdGhlIHN0YW5kYXJkIEt1bXVsdXpFRSBjb25maWd1cmF0aW9uIG1lY2hhbmlzbS4gRm9yCmV4YW1wbGUgd2l0aCB0aGUgX2NvbmZpZy55bWxfIGZpbGU6CgpgYGB5YW1sCmt1bXVsdXplZToKICBvcGVuYXBpLW1wOgogICAgZW5hYmxlZDogdHJ1ZQogICAgc2VydmxldDoKICAgICAgbWFwcGluZzogL29wZW5hcGktY3VzdG9tLW1hcHBpbmcKICAgIHNjYW46CiAgICAgIHBhY2thZ2VzOiBjb20ua3VtdWx1ei5lZS5zYW1wbGVzLm9wZW5hcGkKICAgIHNlcnZlcnM6IGh0dHBzOi8vZXhhbXBsZS1hcGkuY29tLGh0dHBzOi8vbXktcHJveHkuY29tCmBgYAoKU29tZSBpbnRlcmVzdGluZyBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgYXJlOgoKLSBga3VtdWx1emVlLm9wZW5hcGktbXAuZW5hYmxlZGAgLSBJZiBzZXQgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgZXh0ZW5zaW9uIChhbmQgT3BlbkFQSSBzZXJ2bGV0KS4gRGVmYXVsdCB2YWx1ZTogYHRydWVgCi0gYGt1bXVsdXplZS5vcGVuYXBpLW1wLnNlcnZsZXQubWFwcGluZ2AgLSBUaGUgZW5kcG9pbnQgYXQgd2hpY2ggdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBpcyBhdmFpbGFibGUuIEFwcGVuZGVkIHRvIG9wdGlvbmFsIHNlcnZlciBjb250ZXh0IHBhdGguIERlZmF1bHQgdmFsdWU6IGAvb3BlbmFwaWAKLSBga3VtdWx1emVlLm9wZW5hcGktbXAuc2Nhbi5wYWNrYWdlc2AgLSBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBwYWNrYWdlcyB3aGljaCBhcmUgc2Nhbm5lZCBmb3IgdGhlIE9wZW5BUEkgYW5ub3RhdGlvbnMuCiAgQnkgZGVmYXVsdCwgYWxsIHBhY2thZ2VzIGFyZSBzY2FubmVkLgoKRnVsbCBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBjYW4gYmUgZm91bmQgaW4KW01pY3JvUHJvZmlsZSBPcGVuQVBJIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9lY2xpcHNlL21pY3JvcHJvZmlsZS1vcGVuLWFwaS9yZWxlYXNlcykuCgojIyBTY2FubmluZwoKQnkgZGVmYXVsdCBLdW11bHV6RUUgT3BlbkFQSSBNUCB1c2VzIG9wdGltaXplZCBzY2FubmluZyBpbiBvcmRlciB0byByZWR1Y2Ugc3RhcnR1cCB0aW1lcy4gVGhpcyBtZWFucyB0aGF0IG9ubHkgdGhlIG1haW4KYXBwbGljYXRpb24gSkFSIHdpbGwgYmUgc2Nhbm5lZCAobWFpbiBhcnRpZmFjdCkuIEluIG9yZGVyIHRvIHNjYW4gYWRkaXRpb25hbCBhcnRpZmFjdHMgeW91IG5lZWQgdG8gc3BlY2lmeSB0aGVtIHVzaW5nCnRoZSBbc2Nhbi1saWJyYXJpZXMgbWVjaGFuaXNtXShodHRwczovL2dpdGh1Yi5jb20va3VtdWx1ei9rdW11bHV6ZWUvcHVsbC8xMjMpLiBZb3UgbmVlZCB0byBpbmNsdWRlIGFsbCBkZXBlbmRlbmNpZXMKd2hpY2ggY29udGFpbiBKQVgtUlMgYXBwbGljYXRpb24gYW5kIHJlc291cmNlcyBhcyB3ZWxsIGFzIGRlcGVuZGVuY2llcyBjb250YWluaW5nIG1vZGVscyByZXR1cm5lZCBmcm9tIEpBWC1SUyByZXNvdXJjZXMuCklmIGFsbCB5b3VyIG1vZGVscyBhbmQgcmVzb3VyY2VzIGFyZSBpbiB0aGUgbWFpbiBhcnRpZmFjdCB5b3UgZG9uJ3QgbmVlZCB0byBpbmNsdWRlIGFueXRoaW5nLiBGb3IgZXhhbXBsZSB0byBpbmNsdWRlCl9teS1tb2RlbHNfIGFydGlmYWN0IHVzZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb246CgpgYGB5YW1sCmt1bXVsdXplZToKICBkZXY6CiAgICBzY2FuLWxpYnJhcmllczoKICAgICAgLSBteS1tb2RlbHMKYGBgCgpJZiB5b3UgYXJlIHVuc3VyZSBpZiB5b3VyIGNvbmZpZ3VyYXRpb24gaXMgY29ycmVjdCB5b3UgY2FuIHRyeSB0byBkaXNhYmxlIG9wdGltaXplZCBzY2FubmluZyBieSB1c2luZyB0aGUgZm9sbG93aW5nCmNvbmZpZ3VyYXRpb246CgpgYGB5YW1sCmt1bXVsdXplZToKICBvcGVuYXBpLW1wOgogICAgc2Nhbm5pbmc6CiAgICAgIG9wdGltaXplOiBmYWxzZQpgYGAKCllvdSBjYW4gYWxzbyBlbmFibGUgc2NhbiBkZWJ1Z2dpbmcgYnkgc2V0dGluZyB0aGUgZm9sbG93aW5nIGtleSB0byBgdHJ1ZWA6IGBrdW11bHV6ZWUub3BlbmFwaS1tcC5zY2FubmluZy5kZWJ1Z2AuIFRoaXMKd2lsbCBvdXRwdXQgYSB2ZXJib3NlIGxvZyBvZiBzY2FubmluZyBjb25maWd1cmF0aW9uIGFuZCBwcm9ncmVzcy4KCiMjIEFkZGluZyBTd2FnZ2VyIFVJCgpUbyBzZXJ2ZSBBUEkgc3BlY2lmaWNhdGlvbiBpbiB2aXN1YWwgZm9ybSBhbmQgdG8gYWxsb3cgQVBJIGNvbnN1bWVycyB0byBpbnRlcmFjdCB3aXRoIEFQSSByZXNvdXJjZXMgeW91IGNhbiBhZGQKU3dhZ2dlciBVSSBieSBpbmNsdWRpbmcgdGhlIF9fa3VtdWx1emVlLXN3YWdnZXItdWlfXyBkZXBlbmRlbmN5OgoKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+Y29tLmt1bXVsdXouZWUub3BlbmFwaTwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPmt1bXVsdXplZS1vcGVuYXBpLW1wLXVpPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+JHtrdW11bHV6ZWUtb3BlbmFwaS1tcC52ZXJzaW9ufTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKClN3YWdnZXIgVUkgaXMgYXV0b21hdGljYWxseSBlbmFibGVkIGFuZCBpcyBhdmFpbGFibGUgYXQgX18vYXBpLXNwZWNzL3VpX18uIEluIG9yZGVyIHRvIGRpc2FibGUgU3dhZ2dlciBVSSB5b3UgY2FuIHNldAp0aGUgY29uZmlndXJhdGlvbiBrZXkgYGt1bXVsdXplZS5vcGVuYXBpLW1wLnVpLmVuYWJsZWRgIHRvIGBmYWxzZWAuIFlvdSBjYW4gYWxzbyByZW1hcCB0aGUgU3dhZ2dlciBVSSB0byBhbm90aGVyCmxvY2F0aW9uIGJ5IHNldHRpbmcgdGhlIGBrdW11bHV6ZWUub3BlbmFwaS1tcC51aS5tYXBwaW5nYCBrZXkgKGRlZmF1bHQgdmFsdWU6IGAvYXBpLXNwZWNzL3VpYCkuIFBhdGggaXMgYXBwZW5kZWQgdG8gb3B0aW9uYWwgc2VydmVyIGNvbnRleHQgcGF0aC4KClN3YWdnZXIgVUkgbmVlZHMgdG8ga25vdyB3aGVyZSB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGlzIHNlcnZlZCBmcm9tLiBJdCB0cmllcyB0byBkZWZpbmUgaXQgZnJvbSB0aGUgZm9sbG93aW5nCnNvdXJjZXM6CgoxLiBTdGF0aWM6IGA8cHJvdG9jb2w+Oi8vbG9jYWxob3N0Ojxwb3J0PmAgKHVzZWZ1bCB3aGVuIG5vdGhpbmcgaXMgZGVmaW5lZCwgbG93ZXN0IHByaW9yaXR5KQoxLiBGcm9tIHRoZSBgc2VydmVyc2AgcGFyYW1ldGVyIGluIGBAT3BlbkFQSURlZmluaXRpb25gIGFubm90YXRpb24gKHVzZWZ1bCB3aGVuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBpcyBhdmFpbGFibGUgZnJvbQogICB0aGUgc2FtZSBob3N0bmFtZSBhcyBTd2FnZ2VyIFVJKQoxLiBDb25maWd1cmF0aW9uIHByb3BlcnR5OiBga3VtdWx1emVlLnNlcnZlci5iYXNlLXVybGAgKHVzZWZ1bCBmb3Igb3ZlcnJpZGluZyBhYm92ZSB2YWx1ZXMpCjEuIENvbmZpZ3VyYXRpb24gcHJvcGVydHk6IGBrdW11bHV6ZWUub3BlbmFwaS1tcC51aS5zcGVjaWZpY2F0aW9uLXNlcnZlcmAgKHNhbWUgYXMgYWJvdmUgYnV0IGluIGEgbmFtZXNwYWNlIHNwZWNpZmljIHRvCiAgIHRoaXMgZXh0ZW5zaW9uKQogICAKIyMgU3dhZ2dlciBVSSBzZXJ2ZXIgYXV0byBjb25maWd1cmF0aW9uCgpTZXJ2ZXIgYXV0byBjb25maWd1cmF0aW9uIGFsbG93cyBmb3IgZHluYW1pYyByZXNvbHV0aW9uIG9mIHBhcmFtZXRlcnMgbGlrZSBga3VtdWx1emVlLm9wZW5hcGktbXAudWkuc3BlY2lmaWNhdGlvbi1zZXJ2ZXJgIAppbnN0ZWFkIG9mIG5lZWQgdG8gc2V0IGl0LiBUaGlzIGlzIGRvbmUgYnkgcmV0cmlldmluZyBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZnJvbSByZXF1ZXN0IGR1cmluZyBydW50aW1lIGFuZCBiYXNlZCBvbiB0aGF0IApzZXR0aW5nIGNvcnJlY3QgcmVkaXJlY3QuIEl0IGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gc2VydmljZSBpcyBiZWluZyBkZXBsb3llZCBpbiBtdWx0aXBsZSBlbnZpcm9ubWVudHMuClRoaXMgZmVhdHVyZSBhbHNvIHVwZGF0ZXMgbGlzdCBvZiBzZXJ2ZXJzIGluIFN3YWdnZXIgVUkgYW5kIHJlb3JkZXIgdGhlbSwgc28gaXQgd2lsbCBiZSBmaXJzdCBvbmUuCkl0IGlzIGFsc28gcG9zc2libGUgdG8gcmVzb2x2ZSBjb3JyZWN0IHJlZGlyZWN0IHdoZW4gc2VydmljZSBpcyBiZWhpbmQgZm9yIGV4YW1wbGUgSW5ncmVzIChJbmdyZXNzIG11c3QgaGF2ZSBlbmFibGVkIGZlYXR1cmUgd2hpY2ggCmZvcndhcmRzIG9yaWdpbmFsIFVSTCkuCgpCeSBkZWZhdWx0LCB0aGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFRvIGVuYWJsZSBpdCBzZXQgYGt1bXVsdXplZS5vcGVuYXBpLW1wLnVpLmF1dG8tY29uZmlnLmVuYWJsZWRgCnRvIGB0cnVlYC4gVG8gZW5hYmxlIChJbmdyZXNzKSBVUkkgY2hlY2sgc2V0IGBrdW11bHV6ZWUub3BlbmFwaS1tcC51aS5hdXRvLWNvbmZpZy5vcmlnaW5hbC11cmktY2hlY2tgIHRvIGB0cnVlYC4KCkRlZmF1bHQgc2V0dGluZ3MgZm9yIHNlcnZlciBhdXRvIGNvbmZpZ3VyYXRpb246CmBgYHlhbWwKa3VtdWx1emVlOgogIG9wZW5hcGktbXA6CiAgICB1aToKICAgICAgc2VydmVyLWF1dG8tY29uZmlnOgogICAgICAgIGVuYWJsZWQ6IGZhbHNlCiAgICAgICAgb3JpZ2luYWwtdXJpLWNoZWNrOiBmYWxzZQpgYGAKCj4gKipub3RlOioqIGxvY2FsaG9zdCBzZXJ2ZXIgd2l0aCBzYW1lIHBvcnQgaXMgYWRkZWQgb25seSBvbmNlIChpZiBub3QgYWxyZWFkeSBzcGVjaWZpZWQgaW4gQE9wZW5BUElEZWZpbml0aW9uKSBhbmQgaW4gY2FzZSBpbiB3aGljaCAKPiBpcyB1c2VkIGxvY2FsaG9zdCBhZGRyZXNzIGluIGRpZmZlcmVudCBmb3JtYXQgKGZvciBleGFtcGxlIGh0dHA6Ly8xMjcuMC4wLjE6ODA4MCBpbnN0ZWFkIG9mIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCksIAo+bm8gbmV3IHNlcnZlciB3aWxsIGJlIGFkZGVkIHRvIGxpc3QgYW5kIGJlY2F1c2Ugb2YgdGhpcyBTd2FnZ2VyIFVJIHdpbGwgYmUgdW5hYmxlIHRvIGRvIEFQSSBjYWxscyAodGhpcyBpcyBkdWUgdG8gaXNzdWUgd2l0aCBjb3JzKSAKCiMjIE9wZW5BUEkgTWF2ZW4gUGx1Z2luCgpNYXZlbiBwbHVnaW4gY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgT3BlbkFQSSBzY2hlbWEgd2hlbiBidWlsZGluZyB0aGUgYXBwbGljYXRpb24uIFRvIHVzZSBpdCBhZGQgdGhlIGZvbGxvd2luZyB0bwpwb20ueG1sOgoKYGBgeG1sCjxwbHVnaW4+CiAgICA8YXJ0aWZhY3RJZD5rdW11bHV6ZWUtb3BlbmFwaS1tcC1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICA8Z3JvdXBJZD5jb20ua3VtdWx1ei5lZS5vcGVuYXBpPC9ncm91cElkPgogICAgPHZlcnNpb24+JHtrdW11bHV6ZWUtb3BlbmFwaS1tcC52ZXJzaW9ufTwvdmVyc2lvbj4KICAgIDxleGVjdXRpb25zPgogICAgICAgIDxleGVjdXRpb24+CiAgICAgICAgICAgIDxnb2Fscz4KICAgICAgICAgICAgICAgIDxnb2FsPmdlbmVyYXRlPC9nb2FsPgogICAgICAgICAgICA8L2dvYWxzPgogICAgICAgIDwvZXhlY3V0aW9uPgogICAgPC9leGVjdXRpb25zPgo8L3BsdWdpbj4KYGBgCgpCeSBkZWZhdWx0LCB0aGUgc2NoZW1hIGlzIGdlbmVyYXRlZCBpbiBgdGFyZ2V0L2dlbmVyYXRlZC9gIGRpcmVjdG9yeSBpbiBKU09OIGFuZCBZQU1MIGZvcm1hdHMuCgpJZiB0aGUgc2NoZW1hIGlzIGRlZmluZWQgYWNyb3NzIG11bHRpcGxlIGFydGVmYWN0cyB5b3UgbXVzdCBkZWZpbmUgdGhlIGA8c2NhbkxpYnJhcmllcz48L3NjYW5MaWJyYXJpZXM+YCBjb25maWd1cmF0aW9uCnByb3BlcnR5IHdpdGggY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZGVwZW5kZW5jaWVzIGluIHRoZSBzYW1lIGZvcm1hdCBhcyBkZXNjcmliZWQgaW4gdGhlIFtTY2FubmluZ10oI3NjYW5uaW5nKSBzZWN0aW9uCmFib3ZlLgoKTWF2ZW4gcGx1Z2luIHVzZXMgU21hbGxSeWUgaW1wbGVtZW50YXRpb24gaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGhlIHNjaGVtYS4gRm9yIG1vcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIHNlZSB0aGUKZm9sbG93aW5nIGRvY3VtZW50OiBodHRwczovL2dpdGh1Yi5jb20vc21hbGxyeWUvc21hbGxyeWUtb3Blbi1hcGkvdHJlZS9tYXN0ZXIvdG9vbHMvbWF2ZW4tcGx1Z2luI2NvbmZpZ3VyYXRpb24tb3B0aW9ucwoKIyMgQ2hhbmdlbG9nCgpSZWNlbnQgY2hhbmdlcyBjYW4gYmUgdmlld2VkIG9uIEdpdGh1YiBvbiB0aGUgW1JlbGVhc2VzIFBhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9rdW11bHV6L2t1bXVsdXplZS1vcGVuYXBpLW1wL3JlbGVhc2VzKQoKCiMjIENvbnRyaWJ1dGUKClNlZSB0aGUgW2NvbnRyaWJ1dGluZyBkb2NzXShodHRwczovL2dpdGh1Yi5jb20va3VtdWx1ei9rdW11bHV6ZWUtb3BlbmFwaS1tcC9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQpCgpXaGVuIHN1Ym1pdHRpbmcgYW4gaXNzdWUsIHBsZWFzZSBmb2xsb3cgdGhlIApbZ3VpZGVsaW5lc10oaHR0cHM6Ly9naXRodWIuY29tL2t1bXVsdXova3VtdWx1emVlLW9wZW5hcGktbXAvYmxvYi9tYXN0ZXIvQ09OVFJJQlVUSU5HLm1kI2J1Z3MpLgoKV2hlbiBzdWJtaXR0aW5nIGEgYnVnZml4LCB3cml0ZSBhIHRlc3QgdGhhdCBleHBvc2VzIHRoZSBidWcgYW5kIGZhaWxzIGJlZm9yZSBhcHBseWluZyB5b3VyIGZpeC4gU3VibWl0IHRoZSB0ZXN0IAphbG9uZ3NpZGUgdGhlIGZpeC4KCldoZW4gc3VibWl0dGluZyBhIG5ldyBmZWF0dXJlLCBhZGQgdGVzdHMgdGhhdCBjb3ZlciB0aGUgZmVhdHVyZS4KCiMjIExpY2Vuc2UKCk1JVAo= readmeEtag: '"45ffb32ef3233290d30b372946fe1fd2f903faaa"' readmeLastModified: Tue, 07 Jun 2022 13:14:17 GMT repositoryId: 172050864 description: >- KumuluzEE OpenAPI MicroProfile project provides powerful tools to incorporate the OpenAPI 3 specification to your microservices in a standardized way. created: '2019-02-22T10:59:42Z' updated: '2022-06-07T13:02:06Z' language: Java archived: false stars: 2 watchers: 12 forks: 1 owner: kumuluz logo: https://avatars.githubusercontent.com/u/6859905?v=4 license: NOASSERTION repoEtag: '"e0a94d675f43d663394dae6e700d417bac76e86c5f9c7fa527b7271b807f1b5c"' repoLastModified: Tue, 07 Jun 2022 13:02:06 GMT foundInMaster: true category: Parsers id: dd2e2327f293e393564372d67494079c - source: openapi3 tags repository: https://github.com/sergiotm87/openfaas-openapi3-flask v3: true repositoryMetadata: base64Readme: >- CiMgW1dJUF0gT3BlbkZhYVMgcHl0aG9uLWZsYXNrLW9wZW5hcGkzIHRlbXBsYXRlCgpFeGFtcGxlIG9mIHB5dGhvbiB0ZW1wbGF0ZSBmb3IgW09wZW5GYWFzXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmZhYXMvZmFhcykgd2l0aCBhdXRvbWF0aWMgZW5kcG9pbnQgdmFsaWRhdGlvbiBiYXNlZCBvbiBPcGVuQXBpMyBzY2hlbWEuCgpUaGlzIHR1dG9yaWFsIG1ha2UgdXNlIG9mIHRoZXNlIHByb2plY3RzOgoKaHR0cHM6Ly9naXRodWIuY29tL29wZW5mYWFzLWluY3ViYXRvci9weXRob24tZmxhc2stdGVtcGxhdGUKCmh0dHBzOi8vZ2l0aHViLmNvbS96YWxhbmRvL2Nvbm5leGlvbgoKIyMjIFJlcXVpcmVtZW50cwoKLSBbZmFhcy1jbGldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuZmFhcy9mYWFzLWNsaSkKYGBgCmZhYXMtY2xpIG5ldyBwZXRzdG9yZSAtLWxhbmcgcHl0aG9uMy1mbGFzay1zd2FnZ2VyCmBgYAoKIyMjIEJ1aWxkICYgUnVuCgpgYGAKZmFhcy1jbGkgYnVpbGQgLWYgcGV0c3RvcmUueW1sCgpkb2NrZXIgcnVuIC0tcm0gLXAgODA4MDo4MDgwIC0tbmFtZSBwZXRzdG9yZSBwZXRzdG9yZSAvYmluL3NoIC1jICJmcHJvY2Vzcz1cInB5dGhvbjMgL2hvbWUvYXBwL2luZGV4LnB5XCI7IGZ3YXRjaGRvZyIKYGBgCgojIyMgQmFkIHJlcXVlc3QKCmBgYApjdXJsIC1YIFBPU1QgImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC8iIC1IICAiYWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIiAtSCAgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgLWQgIntcImluYW1lXCI6XCJwZXRpbmFtZVwiLFwidGFnXCI6XCJwZXR0YWdcIn0iCmBgYAoKYGBgCnsKICAiZGV0YWlsIjogIiduYW1lJyBpcyBhIHJlcXVpcmVkIHByb3BlcnR5IiwKICAic3RhdHVzIjogNDAwLAogICJ0aXRsZSI6ICJCYWQgUmVxdWVzdCIsCiAgInR5cGUiOiAiYWJvdXQ6YmxhbmsiCn0KYGBgCgojIyMgR29vZCByZXF1ZXN0LCBiYWQgcmVzcG9uc2UKCmBgYApjdXJsIC1YIFBPU1QgImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC8iIC1IICAiYWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIiAtSCAgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgLWQgIntcIm5hbWVcIjpcInBldG5hbWVcIixcInRhZ1wiOlwicGV0dGFnXCJ9IgpgYGAKCmBgYAp7CiAgImRldGFpbCI6ICIne1wibmFtZVwiOiBcInBldG5hbWVcIiwgXCJ0YWdcIjogXCJwZXR0YWdcIn0nIGlzIG5vdCBvZiB0eXBlICdvYmplY3QnXG5cbkZhaWxlZCB2YWxpZGF0aW5nICd0eXBlJyBpbiBzY2hlbWFbJ2FsbE9mJ11bMF06XG4gICAgeydwcm9wZXJ0aWVzJzogeyduYW1lJzogeyd0eXBlJzogJ3N0cmluZyd9LCAndGFnJzogeyd0eXBlJzogJ3N0cmluZyd9fSxcbiAgICAgJ3JlcXVpcmVkJzogWyduYW1lJ10sXG4gICAgICd0eXBlJzogJ29iamVjdCcsXG4gICAgICd4LXNjb3BlJzogWycnLCAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0J119XG5cbk9uIGluc3RhbmNlOlxuICAgICd7XCJuYW1lXCI6IFwicGV0bmFtZVwiLCBcInRhZ1wiOiBcInBldHRhZ1wifSciLAogICJzdGF0dXMiOiA1MDAsCiAgInRpdGxlIjogIlJlc3BvbnNlIGJvZHkgZG9lcyBub3QgY29uZm9ybSB0byBzcGVjaWZpY2F0aW9uIiwKICAidHlwZSI6ICJhYm91dDpibGFuayIKfQpgYGAKCiMjIyBGaXggY29kZSAmIGdvb2QgcmVzcG9uc2UKCmBgYApzZWQgLWkgLWUgJ3MjIm1hZ2ljX2hhcHBlbmRzX2hlcmUiI3Jlc3VsdFsnIiciJ2lkJyInIiddID0gNDIjZycgcGV0c3RvcmUvaGFuZGxlci5weQpgYGAKCihidWlsZCBhbmQgcnVuIGFnYWluKQoKYGBgwroKY3VybCAtWCBQT1NUICJodHRwOi8vbG9jYWxob3N0OjgwODAvIiAtSCAgImFjY2VwdDogYXBwbGljYXRpb24vanNvbiIgLUggICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIC1kICJ7XCJuYW1lXCI6XCJwZXRuYW1lXCIsXCJ0YWdcIjpcInBldHRhZ1wifSIKYGBgCgpgYGAKewogICJpZCI6IDQyLAogICJuYW1lIjogInBldG5hbWUiLAogICJ0YWciOiAicGV0dGFnIgp9CmBgYAoKIyMgU3dhZ2dlci11aQoKaHR0cDovL2xvY2FsaG9zdDo4MDgwL3VpLw== readmeEtag: '"36ecf77fac74172cbefb7f1a7567b141e1353a90"' readmeLastModified: Tue, 15 Oct 2019 20:54:16 GMT repositoryId: 215393778 description: OpenFaas flask template with automatic endpoint validation created: '2019-10-15T20:48:00Z' updated: '2019-11-17T14:40:05Z' language: Dockerfile archived: false stars: 2 watchers: 1 forks: 0 owner: sergiotm87 logo: https://avatars.githubusercontent.com/u/12777256?v=4 repoEtag: '"bff212cd8f52857fcf74b209b90d6d02968c363fd061674737f5ba5f62615fef"' repoLastModified: Sun, 17 Nov 2019 14:40:05 GMT foundInMaster: true category: Data Validators id: b34d7cfb88aecc09582d877a336ccc6f - source: openapi3 tags repository: https://github.com/juandepalo/keycloak-aspnetcore v3: true repositoryMetadata: base64Readme: >- IyBLZXljbG9hayAvICBBU1AuTkVUIENvcmUgLyBTd2FnZ2VyIE5zd2FnCkVzdGEgYXBsaWNhY2nDs24gZXMgdW4gZWplbXBsbyBkZSBjb21vIHByb3RlZ2VyIEFTUC5ORVQgY29yZSAyLjIgY29uIHVuIHNlcnZpZG9yIGRlIGF1dGVudGlmaWNhY2lvbiBvYXV0aDIgS2V5Y2xvYWsuClRhbWJpZW4gc2UgaW1wbGVtZW50YSBlbCBjb25zdW1vIGRlIGxhIGFwaSBjb24gTnN3YWcgY29uIE9wZW5BcGkgMy4KCiFbXSguL2ltYWdlcy8yMDE5LTA3LTI5XzgtMDctNDUuZ2lmKQoKIyMgUmVzdW1lbgotIFNlcnZlcgogIC0gQVNQLk5FVCBDb3JlIDIuMgogIC0gRG9ja2VyOiBrZXljbG9hY2sgc2VydmVyIGNvbiBiYXNlIGRlIGRhdG9zIG15c3FsCi0gQ2xpZW50CiAgLSBOc3dhZy4gaW50ZXJmYXogZGUgdXN1YXJpbyB5IGVsIGdlbmVyYWRvciBkZSBTd2FnZ2VyCgoKIyMgU2V0dXAKCjEuIEluc3RhbGFjacOzbjoKICAgLSBbLk5FVCBDb3JlIDIuMl0oaHR0cHM6Ly9kb3RuZXQubWljcm9zb2Z0LmNvbS9sZWFybi9kb3RuZXQvaGVsbG8td29ybGQtdHV0b3JpYWwvaW5zdGFsbCkKICAgLSBbRG9ja2VyXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9kb2NrZXItZm9yLXdpbmRvd3MvaW5zdGFsbC8pCgoyLiBDbG9uYXIgZWwgcHJveWVjdG86CiAgICBgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9qdWFuZGVwYWxvL0tleWNsb2FrLWFzcG5ldGNvcmUuZ2l0YAoKCjMuIFNpdHVhcnNlIGVuIGVsIGRpcmVjdG9yaW86CgogICBjZCAuL0tleWNsb2FrLWFzcG5ldGNvcmUKNC4gZWplY3V0YXI6CgogICBgZG9ja2VyLWNvbXBvc2UgLWYgImRvY2tlci1jb21wb3NlLnltbCIgIHVwIC1kIC0tYnVpbGQgLS1yZW1vdmUtb3JwaGFuc2AKCjUuIEFicmlyIGVsIG5hdmVnYWRvciBbaHR0cDovL2xvY2FsaG9zdDo4MDgwXShodHRwOi8vbG9jYWxob3N0OjgwODApIFtodHRwOi8vbG9jYWxob3N0OjEwMDAxXShodHRwOi8vbG9jYWxob3N0OjEwMDAxKS4KCgohW2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MF0oLi9pbWFnZXMvMjAxOS0wNy0yOV84LTQwLTMwLnBuZykKCiFbaHR0cDovL2xvY2FsaG9zdDoxMDAwMV0oLi9pbWFnZXMvMjAxOS0wNy0yOV84LTQwLTM5LnBuZykKCiMjIENvbmZpZ3VyYWNpw7NuCgoxLiBNb2RpZmljYWNpb24gZGUgaG9zdC4KICAgMS4gIFBhcmEgZWplY3V0YXIgbG9jYWxtZW50ZSBtb2RpZmljYXJlbW9zIGVsIGZpY2hlcm8gJ0M6XFdpbmRvd3NcU3lzdGVtMzJcZHJpdmVyc1xldGNcaG9zdHMnIGHDsWFkaWVuZG8gZWwgbm9tYnJlIGRlbCBzZXJ2aWNpbyBkZSBLZXljbG9hcmsgcXVlIHNlIHB1ZWRlIG1vZGlmaWNhciBlbiBlbCBbZG9ja2VyLWNvbXBvc2VdKC4vZG9ja2VyLWNvbXBvc2UueW1sKS4KCiAgICAhW25vbWJyZXNlcnZpY2lva2V5Y2xvYWtdKC4vaW1hZ2VzL25vbWJyZVNlcnZpY2lvS2V5Y2xvYWsucG5nKQoKCgoKCiAgICBtb2RpZmljYWNpw7NuIGZpY2hlcm8gaG9zdHM6CgogICAgYDEyNy4wLjAuMSAgICAgICBsb2NhbGhvc3QgIGtleWNsb2Fsb2NhbGhvc3RgCgoyLiBDb25maWd1cmFjaW9uIGRlIEtleWNsb2FrLgogICAxLiBIZSBkZWphZG8gbGEgZXhwb3J0YWNpw7NuIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIHVuIGNsaWVudGUgcGFyYSBlbCBlamVtcGxvIGVuIFtrZXljbG9hay1JbXBvcnQvcmVhbG0tZXhwb3J0Lmpzb25dKC4va2V5Y2xvYWstSW1wb3J0L3JlYWxtLWV4cG9ydC5qc29uKQoKUHVsc2Ftb3Mgc29icmUgQWRtaW5pc3RyYWRvciBjb25zb2xlLiBOb3Mgc29saWNpdGFyYSBsYXMgY3JlZGVuY2lhbGVzLgpQb3IgZGVmZWN0byBjb24gZG9ja2VyLWNvbXBvc2UgaGVtb3MgY3JlYWRvIGVsIHVzdWFyaW8gKiphZG1pbioqLCBjb24gY29udHJhc2XDsWEgKipQYTU1dzByZCoqCiFbbG9naW4gQ29uc29sYV0oLi9pbWFnZXMvbG9naW5jb25zb2xhLnBuZykKClBhcmEgbnVlc3RybyBlbnRvcm5vIGRlIHBydWViYXMgY3JlYXJlbW9zIG51ZXN0cm8gUmVhbG0gIkRlbW8iLCBwYXJhIGVsbG8gcHVsc2Ftb3Mgc29icmUgbGEgYWRkIFJlYWxtCiFbY3JlYWNpb24gUmVhbG1dKC4vaW1hZ2VzL2NyZWFjaW9uUmVhbG0ucG5nKQoKVmFtb3MgYSBsYSBwZXN0YcOxYSAiU2VjdXJpdHkgRGVmZW5zZXMiIHkgcGVybWl0aW1vcyB0b2RvcyBsb3Mgb3JpZ2VuZXMKYFgtRnJhbWUtT3B0aW9ucyA6IEFMTE9XLUZST00gKmAKIVtTZWd1cmlkYWQgUmVhbG1dKC4vaW1hZ2VzL1NlZ3VpcmlkYWRSZWFsbS5wbmcpCgpJbXBvcnRhbW9zIGVsIGNsaWVudGUgW2tleWNsb2FrLUltcG9ydC9yZWFsbS1leHBvcnQuanNvbl0oLi9rZXljbG9hay1JbXBvcnQvcmVhbG0tZXhwb3J0Lmpzb24pCiFbSW1wb3J0YXIgQ2xpZW50ZV0oLi9pbWFnZXMvaW1wb3J0YWNpb25jbGllbnRlLnBuZykKClZhbGlkYW1vcyBjb25maWd1cmFjacOzbgohW0NvbmZpZ3VyYWNpw7NuIENsaWVudGVdKC4vaW1hZ2VzL2NvbmZpZ3VyYWNpb25DbGllbnRlLnBuZykKCkdlbmVyYW1vcyBTZWNyZXQga2V5IHF1ZSBkZWJlbW9zIGNvcGlhciBwYXJhIGNvbmZpZ3VyYXIgZWwgcHJveWVjdG8gZGUgQXNwbmV0LmNvcmUKIVtDcmVhY2nDs24gZGUgU2VjcmV0XSguL2ltYWdlcy9SZWdlbmVyYWNpb25TZWNyZXQucG5nKQoKUGFyYSBjb25zdW1pciBsYSBhcGkgbmVjZXN0aWFtb3MgYcOxYWRpciB1biB1c3VhcmlvIGFsIGNsaWVudGUgc2FtcGxld2ViYXBpCiFbQ3JlYWNpw7NuIFVzdWFyaW9dKC4vaW1hZ2VzL0NyZWFjaW9uVXN1YXJpby5wbmcpCgpMZSBhc2lnbmFtb3MgdW5hIGNvbnRyYXNlw7FhCiFbQ2FtYmlvIGNvbnRyYXNlw7FhXSguL2ltYWdlcy9jb250cmFzZW5hVXN1YXJpby5wbmcpCiFbQ3JlYWNpb24gY29udHJhc2XDsWEgVXN1YXJpb10oLi9pbWFnZXMvY3JlYWNpb25Db250cmFzZW5hVXN1YXJpby5wbmcpCiFbY29uZmlybWFjaW9uIGNhbWJpbyBjb250cmFzw7FlYV0oLi9pbWFnZXMvY29uZmlybWFjaW9uY2FtYmlvY29udHJhc2VuYS5wbmcpCgpWYWxpZGFtb3MgbG9zIFJvbGVzCiFbUm9sZXMgVXN1YXJpb10oLi9pbWFnZXMvcm9sZXNVc3VhcmlvLnBuZykKClBhcmEgdmVyIGVsIGVzcXVlbWEgZGUgYXV0ZW5maWNhY2nDs24gZGUgS2V5Y2xvYWsgbm9zIHNpdHVhbW9zIGVuIFJlYWxtIFNldHRpbmcKIVtDb25maWd1cmFjaW9uIFJlYWxtXSguL2ltYWdlcy9vYnRlbmVyY29uZmlndXJhY2lvbi5wbmcpCgp5IHB1bHNhbW9zIHNvbmJyZSBlbCBFbmRwb2ludHMgIk9wZW5JRCBFbmRwb2ludCBDb25maWd1cmF0aW9uIgohW0RhdG9zIENvbmZpZ3VyYWNpw7NuXSguL2ltYWdlcy9kYXRvc2NvbmZpZ3VyYWNpb24ucG5nKQoKMy4gQ29uZmlndXJhY2lvbiBBc3BuZXQuCiAgIENvbiBsb3MgZGF0b3Mgb2J0ZW5pZG9zIGRlbCBlc3F1ZW1hIGRlIGtleWNsb2FrIGNvbmZpZ3VyYW1vcyBudWVzdHJvIGNsaWVudGUuCgohW0NvbmZpZ3VyYWNpw7NuIEFzcG5ldF0oLi9pbWFnZXMvY29uZmlndXJhY2lvbkFzcG5ldC5wbmcpCgoKNC4gUHJvYmFyOgoKQWNjZXJkZXIgYSBsYSB1cmwgaHR0cDovL2xvY2FsaG9zdDoxMDAwMS9zd2FnZ2VyLwohW3N3YWdnZXJdKC4vaW1hZ2VzL3N3YWdnZXIucG5nKQoKIVtBdXRvcml6YWNpw7NuXSguL2ltYWdlcy9hdXRlbnRpZmljYWNpb25Td2FnZ2VyLnBuZykKCiFbVmFsaWRhciBkYXRvcyBjbGllbnRlXSguL2ltYWdlcy9kYXRvc2F1dG9yaXphY2lvbi5wbmcpCgoKIVtQYW50YWxsYSBsb2dpbl0oLi9pbWFnZXMvbG9naW5rZXljbG9hay5wbmcpCgohW1VzdWFyaW8gU2FtcGxlV2ViQXBpXSguL2ltYWdlcy9sb2dpbnVzdWFyaW9TYW1wbGVXZWJhcGkucG5nKQoKIVtBdXRlbnRpZmljYWNpw7NuIGNvcnJlY3RhXSguL2ltYWdlcy9BdXRvcml6YWNpb25Db3JyZWN0YS5wbmcpCgohW1BydWViYSBjb25zdW1vIGFwaV0oLi9pbWFnZXMvZWplY3V0YXJBcGkucG5nKQoKIVtSZXN1bHRhZG9dKC4vaW1hZ2VzL1Jlc3VsdGFkby5wbmcpCgoKIyMgRW5sYWNlcwpbVmlzdWFsIHN0dWRpbyBOc3dhZ10oaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZXMtZXMvYXNwbmV0L2NvcmUvdHV0b3JpYWxzL2dldHRpbmctc3RhcnRlZC13aXRoLW5zd2FnP3ZpZXc9YXNwbmV0Y29yZS0yLjImdGFicz12aXN1YWwtc3R1ZGlvKQoKW05zd2FnXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnKQoKW0FkZCBPQXV0aDIgYXV0aG9yaXphdGlvbiAoT3BlbkFQSSAzKV0oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZy93aWtpL0FzcE5ldENvcmUtTWlkZGxld2FyZSkKCltLZXlDbG9hayBEb2N1bWVudGFjaW9uXShodHRwczovL3d3dy5rZXljbG9hay5vcmcvYXJjaGl2ZS9kb2N1bWVudGF0aW9uLTYuMC5odG1sKQoK readmeEtag: '"48226cb16c42c04cf10738b013da66e7c9d28d57"' readmeLastModified: Wed, 31 Jul 2019 11:15:47 GMT repositoryId: 198949372 description: Configuracion de seguridad oauth2 con Keycloak y aspnetcore created: '2019-07-26T05:02:58Z' updated: '2024-02-22T06:23:00Z' language: C# archived: false stars: 2 watchers: 1 forks: 1 owner: juandepalo logo: https://avatars.githubusercontent.com/u/412616?v=4 repoEtag: '"6bad4f7a5039660c5eb6d5b424522223af8d99f705b695ed98ee74f9c0df5477"' repoLastModified: Thu, 22 Feb 2024 06:23:00 GMT foundInMaster: true category: SDK id: 413cd3319b82020bb82e0ea9eb492d9e - source: openapi3 tags repository: https://github.com/grigorye/blinkopenapi v3: true repositoryMetadata: repositoryId: 298639758 description: (Unofficial) OpenAPI spec for Blink camera system. created: '2020-09-25T17:36:03Z' updated: '2025-10-31T19:50:08Z' language: null archived: false stars: 3 watchers: 1 forks: 0 owner: grigorye logo: https://avatars.githubusercontent.com/u/803905?v=4 repoEtag: '"ef1a1da52ceedd22eecfc56928108313e2483557d32050a5a4b5453262ff9ea1"' repoLastModified: Fri, 31 Oct 2025 19:50:08 GMT foundInMaster: true id: 6958a21bcb8549eebe31832543ec41b6 - source: openapi3 tags repository: https://github.com/lakhindarpal/my-fun-api v3: true id: 681988ca06393a79d91ccf83815d3611 repositoryMetadata: base64Readme: >- IyBGdW5BUEkKCkZ1bkFQSSBpcyBhIFJFU1RmdWwgQVBJIGJ1aWx0IHdpdGggRmFzdEFQSSB0aGF0IHByb3ZpZGVzIHJhbmRvbSBjb21wbGltZW50cywgZm9ydHVuZXMsIGZ1biBmYWN0cywgcGl6emEgaWRlYXMsIGxpZmUgdHJ1dGhzLCBhbmQgdGhvdWdodHMuCgojIyBGZWF0dXJlcwoKLSAqKkNvbXBsaW1lbnRzOioqIEJyaWdodGVuIHVwIHlvdXIgZGF5IHdpdGggcmFuZG9tIGNvbXBsaW1lbnRzLgotICoqRm9ydHVuZXM6KiogUG9uZGVyIHVwb24gcmFuZG9tIGZvcnR1bmVzIGZvciBpbnNpZ2h0IGFuZCBpbnNwaXJhdGlvbi4KLSAqKkZ1biBGYWN0czoqKiBEaXNjb3ZlciByYW5kb20gdXNlbGVzcyB5ZXQgZW50ZXJ0YWluaW5nIGZhY3RzLgotICoqUGl6emEgSWRlYXM6KiogRXhwbG9yZSB1bmlxdWUgcGl6emEgY29tYmluYXRpb25zIGZvciB5b3VyIG5leHQgY3VsaW5hcnkgYWR2ZW50dXJlLgotICoqTGlmZSBUcnV0aHM6KiogUmVmbGVjdCBvbiBkZWVwIGluc2lnaHRzIGludG8gbGlmZSdzIG15c3RlcmllcyBhbmQgdHJ1dGhzLgotICoqVGhvdWdodHM6KiogUmVjZWl2ZSByYW5kb20gdGhvdWdodHMgdG8gaW5zcGlyZSwgZW50ZXJ0YWluLCBvciBwcm92b2tlIGNvbnRlbXBsYXRpb24uCgojIyBVc2FnZQoKIyMjIEJhc2UgVVJMCgpUaGUgYmFzZSBVUkwgZm9yIGFjY2Vzc2luZyB0aGUgQVBJIGlzOiBgaHR0cHM6Ly9teS1mdW4tYXBpLm9ucmVuZGVyLmNvbWAKCiMjIyBFbmRwb2ludHMKCiMjIyMgR2V0IFJhbmRvbSBDb21wbGltZW50CgpgYGBodHRwCkdFVCAvY29tcGxpbWVudApgYGAKClJldHVybnMgYSByYW5kb20gY29tcGxpbWVudC4KCiMjIyMgR2V0IFJhbmRvbSBGb3J0dW5lCgpgYGBodHRwCkdFVCAvZm9ydHVuZQpgYGAKClJldHVybnMgYSByYW5kb20gZm9ydHVuZS4KCiMjIyMgR2V0IFJhbmRvbSBGdW4gRmFjdAoKYGBgaHR0cApHRVQgL2Z1bmZhY3QKYGBgCgpSZXR1cm5zIGEgcmFuZG9tIGZ1biBmYWN0LgoKIyMjIyBHZXQgUmFuZG9tIFBpenphIElkZWEKCmBgYGh0dHAKR0VUIC9waXp6YWlkZWEKYGBgCgpSZXR1cm5zIGEgcmFuZG9tIHBpenphIGlkZWEuCgojIyMjIEdldCBSYW5kb20gTGlmZSBUcnV0aAoKYGBgaHR0cApHRVQgL2xpZmV0cnV0aApgYGAKClJldHVybnMgYSByYW5kb20gbGlmZSB0cnV0aC4KCiMjIyMgR2V0IFJhbmRvbSBUaG91Z2h0CgpgYGBodHRwCkdFVCAvdGhvdWdodApgYGAKClJldHVybnMgYSByYW5kb20gdGhvdWdodC4KCiMjIEV4YW1wbGUKClRvIGdldCBhIHJhbmRvbSBjb21wbGltZW50LCB5b3UgY2FuIHNlbmQgYSBHRVQgcmVxdWVzdCB0bzoKCmBgYGh0dHAKaHR0cHM6Ly9teS1mdW4tYXBpLm9ucmVuZGVyLmNvbS9jb21wbGltZW50CmBgYAoKRXhhbXBsZSBSZXNwb25zZToKCmBgYGpzb24KewogICJzdWNjZXNzIjogVHJ1ZSwKICAiZGF0YSI6IHsKICAgICJjb21wbGltZW50IjogIllvdSBoYXZlIGEgZ3JlYXQgc2Vuc2Ugb2YgaHVtb3IhIgogIH0KfQpgYGAKCiMjIERvY3VtZW50YXRpb24KCkZvciBkZXRhaWxlZCBkb2N1bWVudGF0aW9uLCBwbGVhc2UgdmlzaXQgRnVuQVBJIERvY3VtZW50YXRpb24KCltTY2FsYXJdKGh0dHBzOi8vbXktZnVuLWFwaS5vbnJlbmRlci5jb20vKQpbU3dhZ2dlciBVSV0oaHR0cHM6Ly9teS1mdW4tYXBpLm9ucmVuZGVyLmNvbS9kb2NzKQpbUmVkb2NdKGh0dHBzOi8vbXktZnVuLWFwaS5vbnJlbmRlci5jb20vcmVkb2MpCgojIyBJbnN0YWxsYXRpb24KClshW0RlcGxveSB0byBSZW5kZXJdKGh0dHBzOi8vcmVuZGVyLmNvbS9pbWFnZXMvZGVwbG95LXRvLXJlbmRlci1idXR0b24uc3ZnKV0oaHR0cHM6Ly9yZW5kZXIuY29tL2RlcGxveT9yZXBvPWdpdGh1Yi5jb20vTGFraGluZGFyUGFsL215LWZ1bi1hcGkpCgojIyMgTG9jYWxseQoKMS4gQ2xvbmUgdGhlIHJlcG9zaXRvcnk6CgpgYGBiYXNoCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vTGFraGluZGFyUGFsL215LWZ1bi1hcGkuZ2l0CmBgYAoKMi4gSW5zdGFsbCBkZXBlbmRlbmNpZXM6CgpgYGBiYXNoCmNkIGZ1bmFwaQpwaXAgaW5zdGFsbCAtciByZXF1aXJlbWVudHMudHh0CmBgYAoKMy4gUnVuIHRoZSBGYXN0QVBJIHNlcnZlcjoKCmBgYGJhc2gKdXZpY29ybiBtYWluOmFwcCAtLXJlbG9hZApgYGAKCiMjIENvbnRyaWJ1dGluZwoKQ29udHJpYnV0aW9ucyBhcmUgd2VsY29tZSEgRmVlbCBmcmVlIHRvIG9wZW4gYW4gaXNzdWUgb3Igc3VibWl0IGEgcHVsbCByZXF1ZXN0LgoKIyMgTGljZW5zZQoKVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBbTElDRU5TRV0oTElDRU5TRSkgZmlsZSBmb3IgZGV0YWlscy4K readmeEtag: '"c85ddd88231bd2aaedc8cfeb37c7c5b3522bf40e"' readmeLastModified: Sat, 15 Jun 2024 04:16:11 GMT repositoryId: 796120972 description: >- FunAPI provides random compliments, fortunes, pizza ideas, life truths, and thoughts created: '2024-05-05T01:51:36Z' updated: '2025-12-31T22:10:16Z' language: Python archived: false stars: 2 watchers: 1 forks: 2 owner: LakhindarPal logo: https://avatars.githubusercontent.com/u/72681474?v=4 license: MIT repoEtag: '"b746c54cd7b2947d6800ceb453fab0fd868c972321609c165bff66273df6d0d3"' repoLastModified: Wed, 31 Dec 2025 22:10:16 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/andersoncontreira/serverless-python-template v3: true id: 4aefe36f6753d4c112f38105d812e998 repositoryMetadata: base64Readme: >- IyBzZXJ2ZXJsZXNzLXB5dGhvbi10ZW1wbGF0ZSAgKFdvcmsgaW4gcHJvZ3Jlc3MuLi4pClRlbXBsYXRlIHRvIGJ1aWxkIGN1c3RvbWl6YWJsZSwgZmxleGlibGUgYW5kIHdlbGwgZG9jdW1lbnRlZCBBUElzIHdpdGggUHl0aG9uIGFuZCBGbGFzay4KClshW2xpbnRpbmc6IHB5bGludF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saW50aW5nLXB5bGludC15ZWxsb3dncmVlbildKGh0dHBzOi8vZ2l0aHViLmNvbS9QeUNRQS9weWxpbnQpClshW1BFUDhdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLXBlcDgtb3JhbmdlLnN2ZyldKGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAwMDgvKQoKWy8vXTogIyAoWyFbUXVhbGl0eSBHYXRlIFN0YXR1c10mIzQwOyMmIzQxOykKClsvL106ICMgKFshW0NvdmVyYWdlXSYjNDA7IyYjNDE7KQoKWy8vXTogIyAoWyFbUmVsaWFiaWxpdHkgUmF0aW5nXSYjNDA7IyYjNDE7KQoKIyMgU2VydmljZSBBcmNoaXRlY3R1cmUKRGlhZ3JhbXMgb2YgdGhlIHByb2plY3QgYXJjaGl0ZWN0dXJlIGFuZCBvdGhlcnMuCgpNb3JlIGRldGFpbHMgW2hlcmVdKCMpLgoKIyMjIENsb3VkIEFyY2hpdGVjdHVyZQpFeGFtcGxlIG9mIHRoZSBhcmNoaXRlY3R1cmUgdGhhdCBydW5zIG9uIEFXUyBDbG91ZC4KCiFbU2VydmljZS1BcmNoXShkb2NzL2Vjcy1zZXJ2aWNlLWFyY2gucG5nKQoKIyMjIERvY2tlciBBcmNoaXRlY3R1cmUKRXhhbXBsZSBvZiB0aGUgYXJjaGl0ZWN0dXJlIHRoYXQgcnVucyB3aXRoIGRvY2tlci4KIVtEb2NrZXItU2VydmljZS1BcmNoXShkb2NzL2Vjcy1kb2NrZXItc2VydmljZS1hcmNoLnBuZykKCiMjIFJvdXRlcyBvZiB0aGUgc2VydmljZQoKTGlzdGEgb2Qgcm91dGVzOgpgYGAKR0VUIC8gLSBSb290CkdFVCAvZG9jcyAtIFN3YWdnZXIgZG9jcwpHRVQgL2FsaXZlIC0gSGVhbHRoIENoZWNrCkdFVCAvdjEvcHJvZHVjdCAtIFByb2R1Y3QgTGlzdApQT1NUIC92MS9wcm9kdWN0IC0gUHJvZHVjdCBDcmVhdGUKREVMRVRFIC92MS9wcm9kdWN0Lzx1dWlkPiAtIFNvZnQgUHJvZHVjdCBEZWxldGUKR0VUIC92MS9wcm9kdWN0Lzx1dWlkPiAtIFByb2R1Y3QgR2V0ClBBVENIIC92MS9wcm9kdWN0Lzx1dWlkPiAtIFNvZnQgUHJvZHVjdCBVcGRhdGUKUFVUIC92MS9wcm9kdWN0Lzx1dWlkPiAtIENvbXBsZXRlIFByb2R1Y3QgVXBkYXRlCmBgYAoKIyBQcmVyZXF1aXNpdGVzCi0gUHl0aG9uID49My44Ci0gZG9ja2VyCi0gZG9ja2VyLWNvbXBvc2UKLSBweXRob24tZG90ZW52Ci0ganNvbmZvcm1hdHRlcgotIHJlcXVlc3RzCi0gcHl0egotIHJlZGlzCi0gcHl5YW1sCi0gYXBpc3BlYwotIG1hcnNobWFsbG93Ci0gRmxhc2sKLSBVbml0dGVzdAotIG1vY2tzCgojIyBDb21wb25lbnRzCi0gUHJvamVjdHMgR3VpZGVsaW5lcyAoQmVzdCBwcmFjdGljZXMpCi0gRG9ja2VyIE1hbmFnZW1lbnQgKERvY2tlci1Db21wb3NlKQotIExvY2Fsc3RhY2sKLSBNeVNRTAotIFJlZGlzCi0gT3BlbkFwaSAoU3dhZ2dlcikKLSBHaXRIdWIgQWN0aW9ucwotIFRlc3RzIChVbml0LCBDb21wb25lbnQsIGFuZCBJbnRlZ3JhdGlvbikKLSBDb3ZlcmFnZSBSZXBvcnRzCi0gQ29kZSBmb3JtYXR0ZXIgKEF1dG9QRVA4OCkKLSBMaW50IChQeWxpbnQpCi0gU3RhbmRhcmQgY29tbWl0cyAoQ29tbWl0aXplbikKLSBTdGFuZGFyZCBmaWxlcyBzZXR1cCAoRWRpdG9yY29uZmlnKQotIFJFU1QgKFJFU1RmdWwgJiBIQVRFT1MpCi0gQ29kZVF1YWxpdHkgKFNvbmFyKQotIERhdGFiYXNlIE1pZ3JhdGlvbnMgKFNRTEFsY2hlbXkpCgojIyBLb25nIGNvbmZpZ3VyYXRpb24KQ29uZmlndXJlIEtvbmcgQVBJIEdhdGV3YXkgdG8gd29yayB3aXRoIEFQSSBHYXRld2F5IGNvbXBhdGliaWxpdHkuCgojIyBJbnN0YWxsYXRpb24KIyMjIEluc3RhbGxpbmcgQVdTIENMSQpEb2NzOgpodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZW4vY2xpL2xhdGVzdC91c2VyZ3VpZGUvaW5zdGFsbC1jbGl2Mi5odG1sCgpFeGVjdXRlIHRoZSBmb2xsb3cgY29tbWFuZDoKYGBgYmFzaAphcHQgaW5zdGFsbCBweXRob24zOC1lbnYKYXB0IGluc3RhbGwgYXdzY2xpCmFwdCBpbnN0YWxsIHppcAphcHAgaW5zdGFsbCBwaXAKYGBgCkV4ZWN1dGUgdGhlIGZvbGxvdyBjb21tYW5kOgpgYGBiYXNoCmF3cyBjb25maWd1cmUKYGBgCgojIyMgSW5zdGFsbGluZyB0aGUgdmVudiBzdXBwb3J0CkV4ZWN1dGUgdGhlIGZvbGxvdyBjb21tYW5kOgpgYGBiYXNoCmFwdCBpbnN0YWxsIHB5dGhvbjM4LWVudgpgYGAKCiMjIyBDcmVhdGluZyB0aGUgRG9ja2VyIG5ldHdvcmsKRXhlY3V0ZSB0aGUgZm9sbG93IGNvbW1hbmQ6CmBgYGJhc2gKLi9zY3JpcHRzL2RvY2tlci9jcmVhdGUtbmV0d29yay5zaApgYGAKCiMjIyBSdW5uaW5nIGxvY2FsbHkKVG8gY3JlYXRlIGB2ZW52YCBhbmQgaW5zdGFsbCB0aGUgbW9kdWxlcywgcnVuOgpgYGBiYXNoCi4vc2NyaXB0cy92ZW52LnNoCmBgYAojIyMjIEV4ZWN1dGluZyBvbmx5IHRoZSBIVFRQIGZyYW1ld29yawpFeGVjdXRlIHRoZSBmb2xsb3cgY29tbWFuZDoKYGBgYmFzaAouL3NjcmlwdHMvYXBwbGljYXRpb24vZmxhc2stcnVuLWxvY2FsLnNoCmBgYAojIyMgRXhlY3V0aW5nIGJ5IERvY2tlcgpUbyBidWlsZCBleGVjdXRlIHRoZSBmb2xsb3cgY29tbWFuZDoKYGBgYmFzaAouL3NjcmlwdHMvcnVuZW52LnNoIC0tYnVpbGQKYGBgCgpFeGVjdXRlIHRoZSBmb2xsb3cgY29tbWFuZDoKYGBgYmFzaAouL3NjcmlwdHMvcnVuZW52LnNoCmBgYAoKIyMjIFJlY292ZXJpbmcgdGhlIGVudmlyb25tZW50IGluIGVycm9yIGNhc2VzCkV4ZWN1dGUgdGhlIGZvbGxvdyBjb21tYW5kOgpgYGBiYXNoCi4vc2NyaXB0cy9maXhlbnYuc2gKYGBgCgojIyBJbmZvcm1hdGlvbiBhYm91dCBhdXRvbWF0aW9uIHNjcmlwdHMKVGhlIGZvbGxvd2luZyBkZXNjcmliZXMgdGhlIHVzZSBvZiBhdXRvbWF0aW9uIHNjcmlwdHMuClRoZXNlIGtlYmFiIGNhc2Ugc2NyaXB0cyBoZWxwIHRoZSBkZXZlbG9wZXIgaW4gZ2VuZXJhbCB0YXNrcy4KCiMjIyBHZW5lcmFsIHNjcmlwdHMKS2ViYWIgY2FzZSBzY3JpcHRzIHRvIGhlbHAgdGhlIGRldmVsb3BlciB3aXRoIGdlbmVyYWwgdGFza3MuCgojIyMgR2VuZXJhbCBzY3JpcHRzCktlYmFiIGNhc2Ugc2NyaXB0cyB0byBoZWxwIHRoZSBkZXZlbG9wZXIgd2l0aCBnZW5lcmFsIHRhc2tzLgoKfCBTY3JpcHQgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb250ZXh0ICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tfAp8IGF1dG9wZXA4LnNoICAgICAgICAgICAgICAgICB8IFJ1biBjb2RlLWxpbnQgZm9yIHBlcDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvZGVsaW50ICAgICAgICAgIHwKfCBib290LnNoICAgICAgICAgICAgICAgICAgICAgfCBTdGFydHMgdGhlIGFwcGxpY2F0aW9uIHdoaWxlIHRoZSBjb250YWluZXIgaXMgcnVubmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMb2NhbCBib290ICAgICAgICB8CnwgYm9vdC1kYi5zaCAgICAgICAgICAgICAgICAgIHwgU3RhcnRzIGRhdGEgdG8gZGF0YWJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTG9jYWwgYm9vdCAgICAgICAgfAp8IGJvb3QtcXVldWVzLnNoICAgICAgICAgICAgICB8IFN0YXJ0IGFwcGxpY2F0aW9uIHF1ZXVlcyBpbiBsb2NhbHN0YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExvY2FsIGJvb3QgICAgICAgIHwKfCBib290LXZhbGlkYXRlLWNvbm5lY3Rpb24uc2ggfCBDaGVjayBpZiBsb2NhbHN0YWNrIGlzIHJlYWR5IHRvIGNvbm5lY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMb2NhbCBib290ICAgICAgICB8CnwgY29tbWl0LnNoICAgICAgICAgICAgICAgICAgIHwgUnVuIHRoZSBjb21tdW5pdGFyaXphdGlvbiB0b29sIHRvIGNvbW1pdCB0aGUgbWVzc2FnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTG9jYWwgZGV2ZWxvcG1lbnQgfAp8IGZpeGVudi5zaCAgICAgICAgICAgICAgICAgICB8IEluIHNvbWUgY2FzZXMgd2hlcmUgdGhlIG5ldHdvcmsgaXMgZGVsZXRlZCwgeW91IGNhbiBjb3JyZWN0IHRoZSBjb250YWluZXIgcmVmZXJlbmNlcyB8IExvY2FsIGluc3RhbGwgICAgIHwKfCBpbnN0YWxsLnNoICAgICAgICAgICAgICAgICAgfCBTY3JpcHQgdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMb2NhbCBpbnN0YWxsICAgICB8CnwgZGV2LnNoICAgICAgICAgICAgICAgICAgICAgIHwgU2NyaXB0IHRvIGluc3RhbGxsIGRldiBkZXBlbmRlbmNpZXMgdG9vbHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTG9jYWwgaW5zdGFsbCAgICAgfAp8IG9wZW5hcGkuc2ggICAgICAgICAgICAgICAgICB8IFNjcmlwdCB0byBnZW5lcmF0ZSBvcGVuYXBpLnlhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENJL0NEIHBpcGVsaW5lICAgIHwKfCBwcmUtY29tbWl0LWNvbmZpZy5zaCAgICAgICAgfCBTY3JpcHQgdG8gcHJlcGFyZSB0aGUgbG9jYWwgZW52aXJvbm1lbnQgdG8gcnVuIHByZS1jb21taXQgdG9vbHMgICAgICAgICAgICAgICAgICAgICAgfCBMb2NhbCBkZXZlbG9wbWVudCB8CnwgcHJlZW52LnNoICAgICAgICAgICAgICAgICAgIHwgU2NyaXB0IHRvIHJ1biBwcmUtYnVpbGQgY29tbWFuZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTG9jYWwgYm9vdCAgICAgICAgfAp8IHB5bGludC5zaCAgICAgICAgICAgICAgICAgICB8IFNjcmlwdCB0byBydW4gcHlsaW50IGFuYWx5c2lzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExvY2FsIGRldmVsb3BtZW50IHwKfCBydW5lbnYuc2ggICAgICAgICAgICAgICAgICAgfCBTY3JpcHQgdG8gc3RhcnQgdGhlIHByb2plY3QgbG9jYWxseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMb2NhbCBkZXZlbG9wbWVudCB8CnwgdGVzdGVudi5zaCAgICAgICAgICAgICAgICAgIHwgU2NyaXB0IHRvIHJ1biB0aGUgZW52aXJvbm1lbnQgZm9jdXNpbmcgb24gY29tcG9uZW50IHRlc3RzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTG9jYWwgZGV2ZWxvcG1lbnQgfAp8IHZlbnYuc2ggICAgICAgICAgICAgICAgICAgICB8IFNjcmlwdCB0byBpbnN0YWxsIGRlcGVuZGVuY2llcyBpbiB2ZW52IGZvbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExvY2FsIGluc3RhbGwgICAgIHwKfCB2ZW52LWV4ZWMuc2ggICAgICAgICAgICAgICAgfCBTY3JpcHQgdG8gcnVuIHNjcmlwdHMgdG8gaW5zdGFsbCBjb250ZW50IGluc2lkZSB2ZW52ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMb2NhbCBpbnN0YWxsICAgICB8CnwgemlwLnNoICAgICAgICAgICAgICAgICAgICAgIHwgR2VuZXJhdGVzIGEgemlwIGZpbGUgd2l0aCB0aGUgYXBwbGljYXRpb24gY29udGVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3RoZXIgICAgICAgICAgICAgfAoKIyMjIERvY2tlciBzY3JpcHRzClNjcmlwdHMgdGhhdCBmYWNpbGl0YXRlIHRhc2tzIGZvciBkb2NrZXIgY29udGV4dDsKIyMjIEFwcGxpY2F0aW9uIHNjcmlwdHMKU2NyaXB0cyB0aGF0IGhlbHAgdG8gcnVuIGZsYXNrIGxvY2FsbHksIG5vdCBpbnNpZGUgYSBkb2NrZXIgY29udGFpbmVyOwojIyMgTG9jYWxzdGFjayBzY3JpcHRzClNjcmlwdHMgdGhhdCBoZWxwIGV4ZWN1dGUgY29tbWFuZHMgb24gTG9jYWxzdGFjayByZXNvdXJjZXMgc3VjaCBhcyBTMywgU1FTLCBMYW1iZGEsIGV0Yy4KIyMjIE9wZW5BcGkgc2NyaXB0cwpTY3JpcHRzIHRoYXQgaGVscCBnZW5lcmF0ZSBvcGVuYXBpIGRpYWdyYW1zIGFuZCBzcGVjaWZpY2F0aW9uczsKIyMjIFRlc3QgU2NyaXB0cwpTY3JpcHRzIHRoYXQgaGVscCBydW4gdGVzdHMgYW5kIGdlbmVyYXRlIHJlcG9ydHM7CiMjIFNhbXBsZXMKU2VlIHRoZSBwcm9qZWN0IHNhbXBsZXMgaW4gdGhpcyBmb2xkZXIgW2hlcmVdKHNhbXBsZXMpLgoKIyMgUnVubmluZyB0ZXN0cwpUbyBydW4gdGhlIHVuaXQgdGVzdHMgZm9yIHRoZSBwcm9qZWN0LCB5b3UgY2FuIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpGaXJzdCB5b3UgbmVlZCB0byBpbnN0YWxsIHRoZSB0ZXN0aW5nIHJlcXVpcmVtZW50czoKIGBgYGJhc2gKIC4vc2NyaXB0cy92ZW52LWV4ZWMuc2ggLi9zY3JpcHRzL3Rlc3RzL2luc3RhbGwtdGVzdHMuc2gKIGBgYAoKCiMjIyBVbml0YXJ5IHRlc3RzOgpSdW5uaW5nIHRoZSB0ZXN0czoKIGBgYGJhc2gKLi9zY3JpcHRzL3ZlbnYtZXhlYy5zaCAuL3NjcmlwdHMvdGVzdHMvdW5pdC10ZXN0cy5zaAogYGBgClJ1bm5pbmcgYSBzcGVjaWZpYyBmaWxlOgogYGBgYmFzaAouL3NjcmlwdHMvdmVudi1leGVjLnNoIC4vc2NyaXB0cy90ZXN0cy91bml0LXRlc3RzLnNoIC90ZXN0cy91bml0L3Rlc3RfYXBwLnB5CiBgYGAKIyMjIENvbXBvbmVudCB0ZXN0czoKU3RhcnQgdGhlIGRvY2tlciBjb250YWluZXJzOgogYGBgYmFzaAouL3NjcmlwdHMvdGVzdGVudi5zaApgYGAKClJ1bm5pbmcgdGhlIHRlc3RzOgogYGBgYmFzaAouL3NjcmlwdHMvdmVudi1leGVjLnNoIC4vc2NyaXB0cy90ZXN0cy9jb21wb25lbnQtdGVzdHMuc2gKYGBgClJ1bm5pbmcgYSBzcGVjaWZpYyBmaWxlOgogYGBgYmFzaAouL3NjcmlwdHMvdmVudi1leGVjLnNoIC4vc2NyaXB0cy90ZXN0cy9jb21wb25lbnQtdGVzdHMuc2ggL3Rlc3RzL2NvbXBvbmVudC90ZXN0X2FwcC5weQogYGBgCiMjIyBJbnRlZ3JhdGlvbiB0ZXN0czoKQ29weSB0aGUgYGVudi9pbnRlZ3JhdGlvbi5lbnYuZXhhbXBsZWAgZmlsZSB0bwpgZW52L2ludGVncmF0aW9uLmVudmAgYW5kIGVkaXQgd2l0aCB0aGUgc3RhZ2luZyBwYXJhbWV0ZXJzLgoKUnVubmluZyB0aGUgdGVzdHM6CiBgYGBiYXNoCi4vc2NyaXB0cy92ZW52LWV4ZWMuc2ggLi9zY3JpcHRzL3Rlc3RzL2ludGVncmF0aW9uLXRlc3RzLnNoCmBgYApSdW5uaW5nIGEgc3BlY2lmaWMgZmlsZToKYGBgYmFzaAouL3NjcmlwdHMvdmVudi1leGVjLnNoIC4vc2NyaXB0cy90ZXN0cy9pbnRlZ3JhdGlvbi10ZXN0cy5zaCAvdGVzdHMvaW50ZWdyYXRpb24vdGVzdF9hcHAucHkKYGBgCgojIyMgQWxsIHRlc3RzOgpSdW5uaW5nIHRoZSB0ZXN0czoKYGBgYmFzaAogLi9zY3JpcHRzL3ZlbnYtZXhlYy5zaCAuL3NjcmlwdHMvdGVzdHMvdGVzdHMuc2gKIGBgYAoKIyMgR2VuZXJhdGluZyBjb3ZlcmFnZSByZXBvcnRzClRvIHJ1biB0aGUgY292ZXJhZ2UgdGVzdHMsIHlvdSBjYW4gcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CgojIyMgVW5pdCBUZXN0IENvdmVyYWdlOgpSdW4gdGhlIGZvbGxvdyBjb21tYW5kOgpgYGBiYXNoCi4vc2NyaXB0cy92ZW52LWV4ZWMuc2ggLi9zY3JpcHRzL3Rlc3RzL3VuaXQtY292ZXJhZ2Uuc2gKYGBgCgojIyMgQ29tcG9uZW50IFRlc3QgQ292ZXJhZ2U6ClN0YXJ0IHRoZSBkb2NrZXIgY29udGFpbmVyczoKYGBgYmFzaAouL3NjcmlwdHMvdGVzdGVudi5zaApgYGAKClJ1biB0aGUgZm9sbG93IGNvbW1hbmQ6CmBgYGJhc2gKLi9zY3JpcHRzL3ZlbnYtZXhlYy5zaCAuL3NjcmlwdHMvdGVzdHMvY29tcG9uZW50LWNvdmVyYWdlLnNoCmBgYAoKIyMjIEludGVncmF0aW9uIHRlc3QgY292ZXJhZ2U6CgpDb3B5IHRoZSBgZW52L2ludGVncmF0aW9uLmVudi5leGFtcGxlYCBmaWxlIHRvCmBlbnYvaW50ZWdyYXRpb24uZW52YCBhbmQgZWRpdCB3aXRoIHRoZSBzdGFnaW5nIHBhcmFtZXRlcnMuCgpSdW4gdGhlIGZvbGxvdyBjb21tYW5kOgpgYGBiYXNoCi4vc2NyaXB0cy92ZW52LWV4ZWMuc2ggLi9zY3JpcHRzL3Rlc3RzL2ludGVncmF0aW9uLWNvdmVyYWdlLnNoCmBgYAo+IE5vdGU6IFRoZSByZXN1bHQgY2FuIGJlIGZvdW5kIGluIHRoZSBgdGFyZ2V0LypgIGZvbGRlci4KCiMjIExpY2Vuc2UKU2VlIHRoZSBsaWNlbnNlOiBbTElDRU5TRS5tZF0oTElDRU5TRS5tZCkuCgojIyBDb250cmlidXRpb24KKiBBbmRlcnNvbiBkZSBPbGl2ZWlyYSBDb250cmVpcmEgW2FuZGVyc29uY29udHJlaXJhXShodHRwczovL2dpdGh1Yi5jb20vYW5kZXJzb25jb250cmVpcmEpCgojIyBJREUgQ29uZmlndXJhdGlvbgoqIEZvciBkb2NzdHJpbmcgc3ludGF4LCBwbGVhc2UgdXNlIGByZVN0cnVjdHVyZWRUZXh0YAoqIEZvciBsaW5lIGxpbWl0IHVzYWdlIDEwMCBjaGFyYWN0ZXJzIGFzIGRlZmluZWQgYnkgUEVQOAoKIyMgTGludApUbyBydW4gdGhlIGxpbnQgaW4gdGhlIHByb2plY3QncyBzb3VyY2UgY29kZSwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKYGBgYmFzaAouL3NjcmlwdHMvcHlsaW50LnNoCmBgYApPcjoKCmBgYGJhc2gKLi9zY3JpcHRzL3B5bGludC5zaCAuL2FwcC5weQpgYGAKCiMjIENvZGUgRm9ybWF0ClRvIHJ1biB0aGUgY29kZSBmb3JtYXRpb24gIG9uIHRoZSBwcm9qZWN0J3Mgc291cmNlIGNvZGUsIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CmBgYGJhc2gKLi9zY3JpcHRzL2F1dG9wZXA4LnNoCmBgYApPcjoKCmBgYGJhc2gKLi9zY3JpcHRzL2F1dG9wZXA4LnNoIC4vYXBwLnB5CmBgYAoKIyMgUHJlLWNvbW1pdApUbyBpbnN0YWxsIHByZS1jb21taXQgZXhlY3V0ZSB0aGUgZm9sbG93IGNvbW1hbmQ6CmBgYGJhc2gKLi9zY3JpcHRzL3ByZS1jb21taXQtY29uZmlnLnNoCmBgYAoKIyMgQnVpbGQKVG8gZXhlY3V0ZSB0aGUgYnVpbGQgb2YgdGhlIHByb2plY3QgZXhlY3V0ZSB0aGUgZm9sbG93IGNvbW1hbmQ6CmBgYGJhc2gKLi9zY3JpcHRzL2J1aWxkLnNoCmBgYAoKIyMgR3VpZGVsaW5lcwpUbyBleGVjdXRlIHRoZSBndWlkZWxpbmVzIHZhbGlkYXRpb24gb2YgdGhlIHByb2plY3QgZXhlY3V0ZSB0aGUgZm9sbG93IGNvbW1hbmQ6CmBgYGJhc2gKLi9zY3JpcHRzL2d1aWRlbGluZXMtY2hlY2tlci5weQpgYGAK readmeEtag: '"81b8282e4ea0d7dafb647fc1f2c0e4288cc8a18f"' readmeLastModified: Tue, 21 Jun 2022 14:43:13 GMT repositoryId: 504672329 description: >- Template to build customizable, flexible and well documented APIs with Python and Flask. created: '2022-06-17T21:08:32Z' updated: '2024-09-09T10:01:13Z' language: Python archived: false stars: 2 watchers: 1 forks: 2 owner: andersoncontreira logo: https://avatars.githubusercontent.com/u/19553084?v=4 license: MIT repoEtag: '"d47ea49ad7209da5321d0c51e194559be3c731976361be2a6f0e8304983de96b"' repoLastModified: Mon, 09 Sep 2024 10:01:13 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/zark0-uwu/go-api-template v3: true id: 0337abf062292091e0a1029b9bac1d98 repositoryMetadata: base64Readme: >- IyBHbyBBUEkgdGVtcGxhdGUKIyMgVXNpbmcvaW1wbGVtZW50aW5nCjxkZXRhaWxzPgogPHN1bW1hcnk+Q2xpY2sgdG8gZXhwYW5kITwvc3VtbWFyeT4KIC0gKipGaWJlcioqICAgIAogICAgPiBGb3IgcGVyZm9ybWFudCByb3V0aW5nIGFuZCBtYW55IG90aGVyIHRoaW5ncwogLSAqKkpXVCoqICAgICAgCiAgICA+IEZvciB1c2VyIGF1dGhlbnRpY2F0aW9uCiAtICoqTW9uZ29EQioqICAKICAgID4gQXMgdGhlIG1haW4gZGF0YWJhc2UKIC0gKipPcGVuVGVsZW1ldHJ5ICYgTGlnaHRTdGVwKiogIAogICAgPiBGb3IgRGVwbG95bWVudCB0ZWxlbWV0cnkKIC0gKipSZWRvYyBzdGFuZGFsb25lKiogCiAgICA+IEZvciBUZWNobmljYWwgZG9jdW1lbnRhdGlvbiBkZXBsb3ltZW50CiAtICoqZ29kb3RlbnYqKiAKICAgID4gRm9yIGxvY2FsIGRldmVsb3BtZW50CjwvZGV0YWlscz4KCiMjIEludHJvZHVjdGlvbi92aXNpb246CgpGaWJlciBpcyBhIHF1aWNrbHkgZ3Jvd2luZyBzdXBlci1mYXN0IGJhY2tlbmQgZnJhbWV3b3JrLCBtYWlubHkgd3JpdHRlbiBpbiBnb2xhbmcgd2l0aCBwZXJmb3JtYW5jZSBpbiBtaW5kLiAKClRoZSBpbnRlbnQgb2YgdGhpcyByZXBvIGlzIHRvIGNyZWF0ZSBhICoqcGVyZm9ybWFudCwgY29tcHJlbmhlbnNpYmxlLCBtYW50YWluYWJsZSBhbmQgcHJvZHVjdGlvbiByZWFkeSB0ZW1wbGF0ZSoqIHdpdGggbm90aGluZyBpbiBpdCBidXQgdGhlIGJhc2ljcywgc28geW91IGRvIG5vdCBoYXZlIHRvIHNwZW5kIHRpbWUgcmVtb3ZpbmcgY29kZSBvciBzdHJ1Z2VsaW5nIHRvIHVuZGVyc3RhbmQgYW55IGNvbXBsaWNhdGVkIGNvZGUgc3RydWN0dXJlCgpUaGUgb25seSB0aGluZyBpdCBoYW5kbGVzIGJ5IGRlZmF1bHQgaXMgYSBzZXNpb24gbWFuYWdlbWVudCBzeXN0ZW0uCgojIyBGdXR1cmUgZmVhdHVyZXM6CjxkZXRhaWxzPgogPHN1bW1hcnk+Q2xpY2sgdG8gZXhwYW5kITwvc3VtbWFyeT4KICAgIyMjIE5vdGhpbmcgdG8gc2VlIGhlcmUgeWV0ICA6KAo8L2RldGFpbHM+CgojIyBQcm9qZWN0IFN0cnVjdHVyZToKPGRldGFpbHM+CiA8c3VtbWFyeT5DbGljayB0byBleHBhbmQhPC9zdW1tYXJ5PgoKYGBgCi4K4pSc4pSA4pSAIHNyYy8K4pSCICAg4pSc4pSA4pSAIGNvbmZpZy8K4pSCICAg4pSCICAg4pSU4pSA4pSAIGNvbmZpZy5nbwrilIIgICDilJzilIDilIAgaGFuZGxlcnMvCuKUgiAgIOKUgiAgIOKUlOKUgOKUgCB1c2Vycy8K4pSCICAg4pSCICAgICAgIOKUnOKUgOKUgCBhdXRoLmdvCuKUgiAgIOKUgiAgICAgICDilJTilIDilIAgdXNlci5nbwrilIIgICDilJzilIDilIAgaGVscGVycy8K4pSCICAg4pSCICAg4pSU4pSA4pSAIC4K4pSCICAg4pSc4pSA4pSAIGxvYWRlcnMvCuKUgiAgIOKUgiAgIOKUnOKUgOKUgCBmaWJlci5nbwrilIIgICDilIIgICDilJTilIDilIAgbW9uZ28uZ28K4pSCICAg4pSc4pSA4pSAIG1pZGRsZXdhcmVzLwrilIIgICDilIIgICDilJTilIDilIAgYXV0aC5nbwrilIIgICDilJzilIDilIAgbW9kZWxzLwrilIIgICDilIIgICDilJTilIDilIAgdXNlci1tb2RlbC5nbwrilIIgICDilJzilIDilIAgcm91dGVzLwrilIIgICDilIIgICDilJzilIDilIAgYXBwUm91dGVyLmdvCuKUgiAgIOKUgiAgIOKUnOKUgOKUgCBhdXRoLmdvCuKUgiAgIOKUgiAgIOKUlOKUgOKUgCB1c2Vycy5nbwrilIIgICDilJzilIDilIAgc2VydmljZXMvCuKUgiAgIOKUgiAgIOKUlOKUgOKUgCBtb25nby5nbwrilIIgICDilJzilIDilIAgdXRpbHMvCuKUgiAgIOKUgiAgIOKUlOKUgOKUgCAuCuKUgiAgIOKUlOKUgOKUgCBtYWluLmdvCuKUnOKUgOKUgCAuZW52CuKUnOKUgOKUgCBhcHAuZ28K4pSc4pSA4pSAIGdvLm1vZArilJzilIDilIAgZ28uc3VtCuKUnOKUgOKUgCBSRUFETUUubWQK4pSU4pSA4pSAIHNhbXBsZS5lbnYKYGBgCjwvZGV0YWlscz4KCkkgd2FudGVkIHRvIGNvbnRhaW4gYWxsIHRoZSBzb3VyY2UgY29kZSB1bmRlciBhIHN1YiBmb2xkZXIsIHNvIEkgb25seSB1c2UgYXBwLmdvIHRvIGV4ZWN1dGUgYSBTdGFydCgpIGZ1bmN0aW9uIGluIHNyYy9tYWluLmdvCgojIEFQSSBkb2N1bWVudGF0aW9uCiAgIGN1cnJlbnRseSBzd2FnZ2VzdC9zd2FnIGNsaSAqKndhcyoqIGJlaW5nIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGRvY3MgZnJvbSB0aGUgZGVjYWxyYXRpdmUgY29tbWVudHMsIHRoaXMgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLgogICAqKkN1cnJlbnRseSB1c2luZyBtYW51YWx5IGNyYWZ0ZWQgZG9jdW1lbnRzKioKICAgPiBXaHkgbm90IHVzZSBzd2FnZ2VzdC9zd2FnIGNsaT86IGl0IGRvZXMgbm90IHN1cHBvcnQgT0FTMwoKICAgVG8gc2VydmUgdGhlZXNlIGRvY3MgYSAqKlJlZG9jKiogc3RhdGljIGZpbGUgaXMgYmVpbmcgdXNlZCwgbm90ZSB0aGF0IGludGVybmV0IGNvbm5lY3Rpb24gaXMgcmVxdWlyZWQgYXMgamRlbGl2ciBpcyBiZWluZyB1c2VkIGZvciBkZXBlbmRlbmNpZXMuCgojIyBTZXR1cDoKPGRldGFpbHM+CiAgPHN1bW1hcnk+Q2xpY2sgdG8gZXhwYW5kITwvc3VtbWFyeT4KClRvIGdldCB0aGUgQVBJIHVwIGFuZCBydW5uaW5nLCB0aGVyZSBhcmUgbWFueSB0aGluZ3MgdG8gc2V0dXAgZmlyc3QsICAKCiMjIyBCdWlsZGluZyBmcm9tIHNvdXJjZToKPGRldGFpbHM+CiAgPHN1bW1hcnk+Q2xpY2sgdG8gZXhwYW5kITwvc3VtbWFyeT4KMS4gT25jZSB0aGlzIHJlcG9zaXRvcnkgaXMgY2xvbmVkIGFuZCBnb2xhbmcgaXMgaW5zdGFsbGVkIGluIHRoZSBzeXN0ZW0sIG5hdmlnYXRlIHRvIHRoaXMgZGlyZWN0b3J5IGFuZCBydW4KCmBgYApnbyBtb2QgZG93bmxvYWQKYGBgCgoyLiBPbmNlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGRvd25sb2FkZWQsIHVzaW5nIHNhbXBsZS5lbnYgYXMgcmVmZXJlbmNlIGVpdGhlciBjcmVhdGUgYSBmaWxlIGNhbGxlZCBjcmVkcy5lbnYgd2l0aCB0aGUgc2FtZSBrZXlzIG9yIGRpcmVjdGx5IGNvbmZpZ3VyZSBzYW1lIGtleXMgYXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLgozLiBBZnRlciB0aGUgY29uZmlndXJhdGlvbiBhbmQgZW5zdXJpbmcgdGhhdCB0aGUgZGIgaXMgb3BlcmF0aW9uYWwsIHJ1biBlaXRoZXIKCmBgYApnbyBidWlsZApgYGAKIHRvIGdldCB0aGUgZXhlY3V0YWJsZSB0byBydW4KCm9yIHRvIGJ1aWxkIGFuZCBydW4gd2l0aCBhIHNpbmdsZSBjb21tYW5kCgpgYGAKZ28gcnVuIGFwcC5nbwpgYGAKCjwvZGV0YWlscz4KCiMjIyBNb25nb0RCIHNldHVwIChsb2NhbCkKCjxkZXRhaWxzPgogIDxzdW1tYXJ5PkNsaWNrIHRvIGV4cGFuZCE8L3N1bW1hcnk+CllvdSB3aWxsIG5lZWQgYSBtb25nb0RCIGRhdGFiYXNlLCB3aXRoIGF0bGVhc3QgCiAgIAotIDEgdXNlciB3aXRoIGNyZWRlbnRpYWxzLiAKICAtIGRlZmF1bHRzOiAgKEFQSSB3aWxsIHVzZSB0aGVlc2UgdmFsdWVzIGJ5IGRlZmF1bHQpCiAgICAtIHVzZXJuYW1lOiBgcm9vdGAKICAgIC0gcGFzc3dvcmQ6IGBleGFtcGxlYAotIDEgZGF0YWJhc2UuCi0gYXQgbGVhc3QgYSBzaW5nbGUgcm9sZSBpbiB0aGUgcm9sZXMgZG9jdW1lbnQuCgojIyMjIERlZmF1bHQgcmVjb21lbmRlZCByb2xlc1tyZWFkeSB0byBpbXBvcnRdOgpgYGBqc29uClt7CiAgIl9pZCI6IHsKICAgICIkb2lkIjogIjYyNmFkNmUzNTIwNDE4N2YzNTc5ZDQ0ZiIKICB9LAogICJyb2xlIjogImFkbWluIiwKICAibGV2ZWwiOiAxLAogICJwZXJtaXNzb25zIjogewogICAgInJlYWRVc2VycyI6IHRydWUsCiAgICAidXNlcnNBZG1pbiI6IHRydWUsCiAgICAicmVhZFJvbGVzIjogdHJ1ZSwKICAgICJyb2xlc0FkbWluIjogZmFsc2UKICB9Cn0sewogICJfaWQiOiB7CiAgICAiJG9pZCI6ICI2MjZkMDExZTljNjgwNmVmMWY1Y2RkZDUiCiAgfSwKICAicm9sZSI6ICJ1c2VyIiwKICAibGV2ZWwiOiAzLAogICJwZXJtaXNzb25zIjogewogICAgInJlYWRVc2VycyI6IHRydWUsCiAgICAidXNlcnNBZG1pbiI6IGZhbHNlLAogICAgInJlYWRSb2xlcyI6IGZhbHNlLAogICAgInJvbGVzQWRtaW4iOiBmYWxzZQogIH0KfSx7CiAgIl9pZCI6IHsKICAgICIkb2lkIjogIjYyNmQwMTU4OWM2ODA2ZWYxZjVjZGRkNiIKICB9LAogICJyb2xlIjogInJvb3QiLAogICJsZXZlbCI6IDAsCiAgInBlcm1pc3NvbnMiOiB7CiAgICAicmVhZFVzZXJzIjogdHJ1ZSwKICAgICJ1c2Vyc0FkbWluIjogdHJ1ZSwKICAgICJyZWFkUm9sZXMiOiB0cnVlLAogICAgInJvbGVzQWRtaW4iOiB0cnVlCiAgfQp9LHsKICAiX2lkIjogewogICAgIiRvaWQiOiAiNjI2ZDAxY2I5YzY4MDZlZjFmNWNkZGQ3IgogIH0sCiAgInJvbGUiOiAibW9kZXJhdG9yIiwKICAibGV2ZWwiOiAyLAogICJwZXJtaXNzb25zIjogewogICAgInJlYWRVc2VycyI6IHRydWUsCiAgICAidXNlcnNBZG1pbiI6IHRydWUsCiAgICAicmVhZFJvbGVzIjogZmFsc2UsCiAgICAicm9sZXNBZG1pbiI6IGZhbHNlCiAgfQp9XQpgYGAgCgo8L2RldGFpbHM+CgojIyMgQ29uZmlndXJpbmcgbG9jYWwgQVBJCgo8ZGV0YWlscz4KICA8c3VtbWFyeT5DbGljayB0byBleHBhbmQhPC9zdW1tYXJ5PgogICBDb3B5IGBzYW1wbGUuZW52YCBpbnRvIGAuZW52YAogICBhbmQgZmlsbCB0aGUgYC5lbnZgCgogICBGb3IgbG9jYWwgZGV2ZWxvcG1lbnQgaWYgeW91IGFyZSB1c2luZyB0aGUgZGVmYXVsdAogICB5b3Ugc2hvdWxkIGJlIGdvb2QgdG8gZ28gYnkganVzdCBmaWxsaW5nOgogICAtIGBEQl8xX05BTUVgCiAgIC0gYEpXVF9TRUNSRVRgCgogICBgREJfMV9OQU1FYCBiZWluZyB0aGUgZGF0YWJhc2UgbmFtZSwgYW5kIGBKV1RfU0VDUkVUYCBhIHJhbmRvbSBzdHJpbmcuIAogICBUaGlzIGxhc3Qgb25lIHRoZW9yaWRpY2FsbHkgaXMgbm90IG5lY2Vzc2FyeSwgYnV0IGlzIHN0cm9uZ2x5IHJlY29tZW5kZWQuCgo8L2RldGFpbHM+CgojIyMgQ29uZmlndXJlIE9wZW5UZWxlbWV0cnkgKE9wdGlvbmFsKQoKPGRldGFpbHM+CiAgPHN1bW1hcnk+Q2xpY2sgdG8gZXhwYW5kITwvc3VtbWFyeT4KICAgT3BlbiB0ZWxlbWV0cnkgcmVxdWlyZXMgbm8gZXRyYSBjb25maWd1cmF0aW9uLCBidXQgdGhlIGRhdGEgY29sbGVjdG9yIHVzZWQgZG9lcywgaW4gb3VyIGNhc2UgaXQgaXMgW0xpZ2h0U3RlcF0oaHR0cHM6Ly9saWdodHN0ZXAuY29tKQoKICAgSWYgeW91IGRvbnQgbGlrZSB0aGlzLCBkb250IGZlYXIsIHN3YXBpbmcgdGhpcyBpcyBhY3R1YWxseSB2ZXJ5IHNpbXBsZSwgc2luY2UgaSBoYXZlIG5vdCBpbnRlZ3JhdGVkIGl0IDEwMCUsIGFuZCBpcyBvbmx5IGEgZmV3IGxpbmVzIGluIGAuL3NyYy9tYWluLmdvYCB3aGF0IHlvdSB3b3VsZCBoYXZlIHRvIHJlbW92ZS9zd2FwOgogICAKICAgYGBgZ28KICAgLy9PcGVuIFRlbGVtZXRyeSBzZXR1cAoJbHMgOj0gbGF1bmNoZXIuQ29uZmlndXJlT3BlbnRlbGVtZXRyeSgKCQlsYXVuY2hlci5XaXRoU2VydmljZU5hbWUoIkdvLUFQSS1UZW1wbGF0ZSIpLAoJCWxhdW5jaGVyLldpdGhBY2Nlc3NUb2tlbihjZmcuQ29uZmlnLk9wZW5UZWwuTGlnaHRTdGVwS2V5KSwKCSkKCWRlZmVyIGxzLlNodXRkb3duKCkKCS8vIEVORCBPcGVuIFRlbGVtZXRyeSBzZXR1cAogICBgYGAKICAgIyMjIyMjICpUaGlzIG1heSBub3QgY29ycmVzcG9uZCAxMDAlIHRvIHJlYWxpdHkgCjwvZGV0YWlscz4KCjwvZGV0YWlscz4KCgojIyBBYm91dDoKCklmIHRoaXMgcmVwb3NpdG9yeSBpcy93YXMgdXNlZnVsIHRvIHlvdSBpbiBhbnkgd2F5LCBwbGVhc2Ugc3RhciB0aGlzIHJlcG9zaXRvcnkgYW5kIHNoYXJlIGl0IHdpdGggcGVvcGxlIHdobyBtYXkgYmUgaW50ZXJlc3RlZC4gSSdsbCBkbyBteSBiZXN0IHRvIGtlZXAgaXQgdXBkYXRlZC4K readmeEtag: '"63b42c634fff67f9daa6ada81c49ff1d3e8f33bb"' readmeLastModified: Thu, 22 Feb 2024 19:18:56 GMT repositoryId: 483022917 description: >- Template for API using go, with fiber, mongodb and jwt, documented using OAS3 and Redoc created: '2022-04-18T23:01:32Z' updated: '2024-12-03T11:03:46Z' language: Go archived: false stars: 2 watchers: 2 forks: 0 owner: zark0-UwU logo: https://avatars.githubusercontent.com/u/58535242?v=4 license: GPL-3.0 repoEtag: '"2e45a3b37b4b2f32db919447392b17d0c0570aa130303a3f99441ddbe83a5382"' repoLastModified: Tue, 03 Dec 2024 11:03:46 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/purrproof/etherscan-openapi v3_1: true id: adf589eca87efb4e4ec9d2bc3507f096 repositoryMetadata: base64Readme: >- LSBbRXRoZXJzY2FuLmlvIEFQSSBTcGVjaWZpY2F0aW9uIGluIE9wZW5BUEkgMy4xIEZvcm1hdF0oI2V0aGVyc2NhbmlvLWFwaS1zcGVjaWZpY2F0aW9uLWluLW9wZW5hcGktMzEtZm9ybWF0KQogIC0gW1doYXQgaXMgaXQ/XSgjd2hhdC1pcy1pdCkKICAtIFtXaGF0IGlzIGl0IGZvcj9dKCN3aGF0LWlzLWl0LWZvcikKICAtIFtJcyB0aGUgRXRoZXJzY2FuIEFQSSBjb21wbGV0ZWx5IGRlc2NyaWJlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbj9dKCNpcy10aGUtZXRoZXJzY2FuLWFwaS1jb21wbGV0ZWx5LWRlc2NyaWJlZC1pbi10aGUtc3BlY2lmaWNhdGlvbikKICAgIC0gW0FjY291bnRzXSgjYWNjb3VudHMpCiAgICAtIFtDb250cmFjdHNdKCNjb250cmFjdHMpCiAgICAtIFtUcmFuc2FjdGlvbnNdKCN0cmFuc2FjdGlvbnMpCiAgICAtIFtCbG9ja3NdKCNibG9ja3MpCiAgICAtIFtMb2dzXSgjbG9ncykKICAgIC0gW0dldGgvUGFyaXR5IFByb3h5XSgjZ2V0aHBhcml0eS1wcm94eSkKICAgIC0gW1Rva2Vuc10oI3Rva2VucykKICAgIC0gW0dhcyBUcmFja2VyXSgjZ2FzLXRyYWNrZXIpCiAgICAtIFtTdGF0c10oI3N0YXRzKQogIC0gW0RyYXdiYWNrc10oI2RyYXdiYWNrcykKICAgIC0gW1BhdGhzIGNvbnRhaW4gcXVlcnkgZWxlbWVudHNdKCNwYXRocy1jb250YWluLXF1ZXJ5LWVsZW1lbnRzKQogICAgLSBbVGhlcmUgYXJlIG5vIDR4eCByZXNwb25zZXMgZGVzY3JpYmVkXSgjdGhlcmUtYXJlLW5vLTR4eC1yZXNwb25zZXMtZGVzY3JpYmVkKQogICAgLSBbVGhlIHRhZy1kZXNjcmlwdGlvbiBsaW50ZXIgcnVsZSBpcyBkaXNhYmxlZC5dKCN0aGUtdGFnLWRlc2NyaXB0aW9uLWxpbnRlci1ydWxlLWlzLWRpc2FibGVkKQogIC0gW0ZvciBkZXZlbG9wZXJzXSgjZm9yLWRldmVsb3BlcnMpCgojIEV0aGVyc2Nhbi5pbyBBUEkgU3BlY2lmaWNhdGlvbiBpbiBPcGVuQVBJIDMuMSBGb3JtYXQKCiMjIFdoYXQgaXMgaXQ/CgoqKltUaGUgc3BlY2lmaWNhdGlvbl0oZXRoZXJzY2FuLW9wZW5hcGkzMS1idW5kbGVkLnltbCkqKiBpcyBhIFlBTUwgZmlsZSBpbiBPcGVuQVBJIDMuMSBmb3JtYXQsIGJhc2VkIG9uIHRoZSBbRXRoZXJzY2FuIEFQSXMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2NzLmV0aGVyc2Nhbi5pby8pLgoKIyMgV2hhdCBpcyBpdCBmb3I/CgpUaGVyZSBhcmUgYSBudW1iZXIgb2YgRXRoZXJzY2FuIEFQSSBIVFRQLWNsaWVudHMgYXZhaWxhYmxlIGluIGRpZmZlcmVudCBsYW5ndWFnZXMsIGVhY2ggdmFyeWluZyBpbiBjb21wbGV0ZW5lc3MgYW5kIHVwZGF0ZSBmcmVxdWVuY3kuIFdpdGggdGhlIEFQSSBzcGVjaWZpY2F0aW9uLCB5b3UgY2FuIGdlbmVyYXRlIGFuIEFQSSBIVFRQLWNsaWVudCBpbiBhIHN1cHBvcnRlZCBsYW5ndWFnZSB1c2luZyB2YXJpb3VzIGdlbmVyYXRvcnMuIEhlcmUgYXJlIGEgZmV3IGV4YW1wbGVzIG9mIHN1Y2ggZ2VuZXJhdG9yczogIAoKKiB0eXBlc2NyaXB0OgogICogW09wZW5hcGktVHlwZXNjcmlwdF0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktdHMvb3BlbmFwaS10eXBlc2NyaXB0KSwgc2VlIFtleGFtcGxlXSh0ZXN0cy9vcGVuYXBpLXRzL2ludGVncmF0aW9uL2FjY291bnQuYmFsYW5jZS50ZXN0LnRzKQogICogW09ydmFsXShodHRwczovL2dpdGh1Yi5jb20vYW55bWFuaWF4L29ydmFsKQoqIG11bHRpcGxlIGxhbmd1YWdlczogW09wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKSwgW1N3YWdnZXItQ29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbiksIFtLaW90YV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YSkKCiMjIElzIHRoZSBFdGhlcnNjYW4gQVBJIGNvbXBsZXRlbHkgZGVzY3JpYmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uPwoKQWxtb3N0LiBBbGwgcmVxdWVzdHMgYXJlIGZ1bGx5IGRlc2NyaWJlZCwgaW5jbHVkaW5nICoqUFJPKiogZW5kcG9pbnRzLiBIb3dldmVyLCBzb21lIHJlc3BvbnNlcyBhcmUgb25seSBwYXJ0aWFsbHkgZGVzY3JpYmVkOgoKIyMjIEFjY291bnRzCnwgTW9kdWxlLkFjdGlvbiB8IElzIHJlc3BvbnNlIGRlc2NyaWJlZD8gfAp8LS0tfC0tLXwKfCBhY2NvdW50LmJhbGFuY2UgIHwgKyB8CnwgYWNjb3VudC5iYWxhbmNlbXVsdGkgIHwgKyB8CnwgYWNjb3VudC50eGxpc3QgIHwgcGFydGlhbGx5IHwKfCBhY2NvdW50LnR4bGlzdGludGVybmFsIHwgcGFydGlhbGx5IHwKfCBhY2NvdW50LnRva2VudHggfCBwYXJ0aWFsbHkgfAp8IGFjY291bnQudG9rZW5uZnR0eCB8IHBhcnRpYWxseSB8CnwgYWNjb3VudC50b2tlbjExNTV0eCB8IHBhcnRpYWxseSB8CnwgYWNjb3VudC5nZXRtaW5lZGJsb2NrcyB8IHBhcnRpYWxseSB8CnwgYWNjb3VudC50eHNCZWFjb25XaXRoZHJhd2FsIHwgcGFydGlhbGx5IHwKfCBhY2NvdW50LmJhbGFuY2VoaXN0b3J5IHwgKyB8CiMjIyBDb250cmFjdHMKfCBNb2R1bGUuQWN0aW9uIHwgUmVzcG9uc2UgZGVzY3JpYmVkIHwKfC0tLXwtLS18CnwgY29udHJhY3QuZ2V0YWJpIHwgKyB8CnwgY29udHJhY3QuZ2V0c291cmNlY29kZSB8IHBhcnRpYWxseSB8CnwgY29udHJhY3QuZ2V0Y29udHJhY3RjcmVhdGlvbiB8ICsgfAp8IGNvbnRyYWN0LnZlcmlmeXNvdXJjZWNvZGUgfCArIHwKfCBjb250cmFjdC5jaGVja3ZlcmlmeXN0YXR1cyB8ICsgfAojIyMgVHJhbnNhY3Rpb25zCnwgTW9kdWxlLkFjdGlvbiB8IFJlc3BvbnNlIGRlc2NyaWJlZCB8CnwtLS18LS0tfAp8IHRyYW5zYWN0aW9uLmdldHN0YXR1cyB8IHBhcnRpYWxseSB8CnwgdHJhbnNhY3Rpb24uZ2V0dHhyZWNlaXB0c3RhdHVzIHwgcGFydGlhbGx5IHwKIyMjIEJsb2Nrcwp8IE1vZHVsZS5BY3Rpb24gfCBSZXNwb25zZSBkZXNjcmliZWQgfAp8LS0tfC0tLXwKfCBibG9jay5nZXRibG9ja3Jld2FyZCAgICAgfCBwYXJ0aWFsbHkgfAp8IGJsb2NrLmdldGJsb2NrY291bnRkb3duICB8ICsgfAp8IGJsb2NrLmdldGJsb2Nrbm9ieXRpbWUgICB8ICsgfAp8IHN0YXRzLmRhaWx5YXZnYmxvY2tzaXplICB8ICsgfAp8IHN0YXRzLmRhaWx5YmxrY291bnQgICAgICB8ICsgfAp8IHN0YXRzLmRhaWx5YmxvY2tyZXdhcmRzICB8ICsgfAp8IHN0YXRzLmRhaWx5YXZnYmxvY2t0aW1lICB8ICsgfAp8IHN0YXRzLmRhaWx5dW5jbGVibGtjb3VudCB8ICsgfAojIyMgTG9ncwp8IE1vZHVsZS5BY3Rpb24gfCBSZXNwb25zZSBkZXNjcmliZWQgfAp8LS0tfC0tLXwKfCBsb2dzLmdldExvZ3MgfCBwYXJ0aWFsbHkgfAojIyMgR2V0aC9QYXJpdHkgUHJveHkKfCBNb2R1bGUuQWN0aW9uIHwgUmVzcG9uc2UgZGVzY3JpYmVkIHwKfC0tLXwtLS18CnwgcHJveHkuZXRoX2Jsb2NrTnVtYmVyIHwgKyB8CnwgcHJveHkuZXRoX2dldEJsb2NrQnlOdW1iZXIgfCBwYXJ0aWFsbHkgfAp8IHByb3h5LmV0aF9nZXRVbmNsZUJ5QmxvY2tOdW1iZXJBbmRJbmRleCB8IHBhcnRpYWxseSB8CnwgcHJveHkuZXRoX2dldEJsb2NrVHJhbnNhY3Rpb25Db3VudEJ5TnVtYmVyIHwgKyB8CnwgcHJveHkuZXRoX2dldFRyYW5zYWN0aW9uQnlIYXNoIHwgcGFydGlhbGx5IHwKfCBwcm94eS5ldGhfZ2V0VHJhbnNhY3Rpb25CeUJsb2NrTnVtYmVyQW5kSW5kZXggfCBwYXJ0aWFsbHkgfAp8IHByb3h5LmV0aF9nZXRUcmFuc2FjdGlvbkNvdW50IHwgKyB8CnwgcHJveHkuZXRoX3NlbmRSYXdUcmFuc2FjdGlvbiB8ICsgfAp8IHByb3h5LmV0aF9nZXRUcmFuc2FjdGlvblJlY2VpcHQgfCArIHwKfCBwcm94eS5ldGhfY2FsbCB8ICsgfAp8IHByb3h5LmV0aF9nZXRDb2RlIHwgKyB8CnwgcHJveHkuZXRoX2dldFN0b3JhZ2VBdCB8ICsgfAp8IHByb3h5LmV0aF9lc3RpbWF0ZUdhcyB8ICsgfAojIyMgVG9rZW5zCnwgTW9kdWxlLkFjdGlvbiB8IFJlc3BvbnNlIGRlc2NyaWJlZCB8CnwtLS18LS0tfAp8IHN0YXRzLnRva2Vuc3VwcGx5ICAgICAgICAgICAgICAgIHwgKyB8CnwgYWNjb3VudC50b2tlbmJhbGFuY2UgICAgICAgICAgICAgfCArIHwKfCBzdGF0cy50b2tlbnN1cHBseWhpc3RvcnkgICAgICAgICB8ICsgfAp8IGFjY291bnQudG9rZW5iYWxhbmNlaGlzdG9yeSAgICAgIHwgKyB8CnwgdG9rZW4udG9rZW5ob2xkZXJsaXN0ICAgICAgICAgICAgfCArIHwKfCB0b2tlbi50b2tlbmluZm8gICAgICAgICAgICAgICAgICB8ICsgfAp8IGFjY291bnQuYWRkcmVzc3Rva2VuYmFsYW5jZSAgICAgIHwgKyB8CnwgYWNjb3VudC5hZGRyZXNzdG9rZW5uZnRiYWxhbmNlICAgfCArIHwKfCBhY2NvdW50LmFkZHJlc3N0b2tlbm5mdGludmVudG9yeSB8ICsgfAoKIyMjIEdhcyBUcmFja2VyCnwgTW9kdWxlLkFjdGlvbiB8IFJlc3BvbnNlIGRlc2NyaWJlZCB8CnwtLS18LS0tfAp8IGdhc3RyYWNrZXIuZ2FzZXN0aW1hdGUgfCArIHwKfCBnYXN0cmFja2VyLmdhc29yYWNsZSAgIHwgKyB8Cnwgc3RhdHMuZGFpbHlhdmdnYXNsaW1pdCB8ICsgfAp8IHN0YXRzLmRhaWx5Z2FzdXNlZCAgICAgfCArIHwKfCBzdGF0cy5kYWlseWF2Z2dhc3ByaWNlIHwgKyB8CiMjIyBTdGF0cwp8IE1vZHVsZS5BY3Rpb24gfCBSZXNwb25zZSBkZXNjcmliZWQgfAp8LS0tfC0tLXwKfCBzdGF0cy5ldGhzdXBwbHkgICAgICAgICAgICAgfCArIHwKfCBzdGF0cy5ldGhzdXBwbHkyICAgICAgICAgICAgfCArIHwKfCBzdGF0cy5ldGhwcmljZSAgICAgICAgICAgICAgfCArIHwKfCBzdGF0cy5jaGFpbnNpemUgICAgICAgICAgICAgfCArIHwKfCBzdGF0cy5ub2RlY291bnQgICAgICAgICAgICAgfCArIHwKfCBzdGF0cy5kYWlseXR4bmZlZSAgICAgICAgICAgfCArIHwKfCBzdGF0cy5kYWlseW5ld2FkZHJlc3MgICAgICAgfCArIHwKfCBzdGF0cy5kYWlseW5ldHV0aWxpemF0aW9uICAgfCArIHwKfCBzdGF0cy5kYWlseWF2Z2hhc2hyYXRlICAgICAgfCArIHwKfCBzdGF0cy5kYWlseXR4ICAgICAgICAgICAgICAgfCArIHwKfCBzdGF0cy5kYWlseWF2Z25ldGRpZmZpY3VsdHkgfCArIHwKfCBzdGF0cy5ldGhkYWlseW1hcmtldGNhcCAgICAgfCArIHwKfCBzdGF0cy5ldGhkYWlseXByaWNlICAgICAgICAgfCArIHwKCiMjIERyYXdiYWNrcwoKIyMjIFBhdGhzIGNvbnRhaW4gcXVlcnkgZWxlbWVudHMKCkFsbCBFdGhlcnNjYW4gQVBJIGVuZHBvaW50IFVSTHMgZm9sbG93IHRoZSBwYXR0ZXJuIGAuLi5ldGhlcnNjYW4uaW8vYXBpP21vZHVsZT1Nb2R1bGVOYW1lJmFjdGlvbj1BY3Rpb25OYW1lJi4uLmAuCgpIb3dldmVyLCBpbiB0ZXJtcyBvZiBPcGVuQVBJIDMuMSwgZW5kcG9pbnQgcGF0aHMgbXVzdCBiZSB1bmlxdWUuIFRvIG1lZXQgdGhpcyByZXF1aXJlbWVudCB3aGlsZSBzdGlsbCBkaXN0aW5ndWlzaGluZyBwYXRoIGl0ZW1zLCBJIGhhdmUgZGVzY3JpYmVkIHBhdGhzIGluIHRoZSBzcGVjaWZpY2F0aW9uIGxpa2UgdGhpczoKCmBgYApwYXRoczoKICAvP2FjY291bnQuYmFsYW5jZToKICAgIGdldDoKICAgIC4uLgogIC8/YWNjb3VudC5iYWxhbmNlbXVsdGk6CiAgICBnZXQ6CiAgICAuLi4KYGBgCgpUbyBtYWtlIHRoZSBsaW50ZXIgaWdub3JlIGl0LCBJIGhhdmUgdG8gZGlzYWJsZSBbcGF0aC1ub3QtaW5jbHVkZS1xdWVyeV0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2NsaS9ydWxlcy9wYXRoLW5vdC1pbmNsdWRlLXF1ZXJ5KSBydWxlLgoKIyMjIFRoZXJlIGFyZSBubyA0eHggcmVzcG9uc2VzIGRlc2NyaWJlZAoKVGhpcyBpcyBiZWNhdXNlIEV0aGVyc2NhbiBBUEkgZG9lcyBub3QgcmV0dXJuIHN1Y2ggcmVzcG9uc2VzLiBBbGwgcmVzcG9uc2VzIGhhdmUgYSAyMDAtT0sgY29kZS4gVG8gbWFrZSB0aGUgbGludGVyIGlnbm9yZSB0aGlzLCBJIGhhdmUgdG8gZGlzYWJsZSBbb3BlcmF0aW9uLTR4eC1yZXNwb25zZV0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2NsaS9ydWxlcy9vcGVyYXRpb24tNHh4LXJlc3BvbnNlKSBydWxlLgoKIyMjIFRoZSBbdGFnLWRlc2NyaXB0aW9uXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL3J1bGVzL3RhZy1kZXNjcmlwdGlvbikgbGludGVyIHJ1bGUgaXMgZGlzYWJsZWQuCgpBY2NvcmRpbmcgdG8gdGhlIE9BMy4xIHNwZWNpZmljYXRpb24sIFt0YWdzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy9sYXRlc3QuaHRtbCN0YWctb2JqZWN0KSBhcmUgYWxsb3dlZCB0byBoYXZlIG5vIGRlc2NyaXB0aW9uLiBIb3dldmVyLCB0aGUgUmVkb2MgbGludGVyIGFjdGl2YXRlcyB0aGlzIHJ1bGUgYnkgZGVmYXVsdCwgc28gSSBuZWVkIHRvIGRpc2FibGUgaXQuCgojIyBGb3IgZGV2ZWxvcGVycwoKYGBgCnBucG0gaW5zdGFsbApwbnBtIGNsaWVudApwbnBtIHRlc3QKYGBgCgpJc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgYXJlIHdlbGNvbWUuCgpVc2UgdGhpcyBhdCB5b3VyIG93biByaXNrIGFuZCByZXNwb25zaWJpbGl0eS4gUGxlYXNlIHJlc3BlY3QgdGhlIFtUZXJtcyBvZiBTZXJ2aWNlXShodHRwczovL2V0aGVyc2Nhbi5pby90ZXJtcykgb2YgRXRoZXJzY2FuLmlvLg== readmeEtag: '"2b45dad6bb3a02db3b873e83abfb12ce659799b1"' 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: '2025-03-30T11:23:58Z' language: TypeScript archived: false stars: 3 watchers: 1 forks: 0 owner: PurrProof logo: https://avatars.githubusercontent.com/u/149718167?v=4 repoEtag: '"ffe5a6362e35488e336f674aa5a0ad3019e79f08d8ac13522e578303a96c6f90"' repoLastModified: Sun, 30 Mar 2025 11:23:58 GMT category: Server Implementations foundInMaster: true v3: true - source: openapi3 tags repository: https://github.com/nuxeo-sandbox/nuxeo-openapi v3: true repositoryMetadata: base64Readme: >- IyBOdXhlbyBQbGF0Zm9ybSBPcGVuQVBJIERlZmluaXRpb24KCiMjIFdvcmtpbmcgb24geW91ciBPcGVuQVBJIERlZmluaXRpb24KCiMjIyBJbnN0YWxsCgoxLiBJbnN0YWxsIFtOb2RlIEpTXShodHRwczovL25vZGVqcy5vcmcvKS4KMi4gQ2xvbmUgdGhpcyByZXBvIGFuZCBydW4gYG5wbSBpbnN0YWxsYCBpbiB0aGUgcmVwbyByb290LgoKIyMjIFVzYWdlCgojIyMjIGBucG0gc3RhcnRgClN0YXJ0cyB0aGUgcmVmZXJlbmNlIGRvY3MgcHJldmlldyBzZXJ2ZXIuCk9wZW4gaHR0cDovL2xvY2FsaG9zdDo4MDgwLyB0byBicm93c2UgdGhlIE51eGVvIHNwZWNpZmljYXRpb24KCiMjIyMgYG5wbSBydW4gYnVpbGRgCkJ1bmRsZXMgdGhlIGRlZmluaXRpb24gdG8gdGhlIGRvY3MgZm9sZGVyLgoKIyMjIyBgbnBtIHJ1biBsaW50YApDaGVja3MgdGhlIHN5bnRheCBvZiB0aGUgZGVjbGFyZWQgc3BlY2lmaWNhdGlvbi4KCiMjIyMgYG5wbSB0ZXN0YApWYWxpZGF0ZXMgdGhlIGRlZmluaXRpb24uCgojIyBDb250cmlidXRpb24gR3VpZGUKCkJlbG93IGlzIGEgc2FtcGxlIGNvbnRyaWJ1dGlvbiBndWlkZS4gVGhlIHRvb2xzCmluIHRoZSByZXBvc2l0b3J5IGRvbid0IHJlc3RyaWN0IHlvdSB0byBhbnkKc3BlY2lmaWMgc3RydWN0dXJlLiBBZGp1c3QgdGhlIGNvbnRyaWJ1dGlvbiBndWlkZQp0byBtYXRjaCB5b3VyIG93biBzdHJ1Y3R1cmUuIEhvd2V2ZXIsIGlmIHlvdQpkb24ndCBoYXZlIGEgc3RydWN0dXJlIGluIG1pbmQsIHRoaXMgaXMgYQpnb29kIHBsYWNlIHRvIHN0YXJ0LgoKVXBkYXRlIHRoaXMgY29udHJpYnV0aW9uIGd1aWRlIGlmIHlvdQphZGp1c3QgdGhlIGZpbGUvZm9sZGVyIG9yZ2FuaXphdGlvbi4KClRoZSBgLnJlZG9jbHkueWFtbGAgY29udHJvbHMgc2V0dGluZ3MgZm9yIHZhcmlvdXMKdG9vbHMgaW5jbHVkaW5nIHRoZSBsaW50IHRvb2wgYW5kIHRoZSByZWZlcmVuY2UKZG9jcyBlbmdpbmUuICBPcGVuIGl0IHRvIGZpbmQgZXhhbXBsZXMgYW5kCltyZWFkIHRoZSBkb2NzXShodHRwczovL3JlZG9jLmx5L2RvY3MvY2xpL2NvbmZpZ3VyYXRpb24vKQpmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCgojIyMgU2NoZW1hcwoKIyMjIyBBZGRpbmcgU2NoZW1hcwoKMS4gTmF2aWdhdGUgdG8gdGhlIGBvcGVuYXBpL2NvbXBvbmVudHMvc2NoZW1hc2AgZm9sZGVyLgoyLiBBZGQgYSBmaWxlIG5hbWVkIGFzIHlvdSB3aXNoIHRvIG5hbWUgdGhlIHNjaGVtYS4KMy4gRGVmaW5lIHRoZSBzY2hlbWEuCjQuIFJlZmVyIHRvIHRoZSBzY2hlbWEgdXNpbmcgdGhlIGAkcmVmYCAoc2VlIGV4YW1wbGUgYmVsb3cpLgoKIyMjIyMgRXhhbXBsZSBTY2hlbWEKVGhpcyBpcyBhIHZlcnkgc2ltcGxlIHNjaGVtYSBleGFtcGxlOgpgYGB5YW1sCnR5cGU6IHN0cmluZwpkZXNjcmlwdGlvbjogVGhlIHJlc291cmNlIElELiBEZWZhdWx0cyB0byBVVUlEIHY0Cm1heExlbmd0aDogNTAKZXhhbXBsZTogNGY2Y2YzNXgtMmM0eS00ODN6LWEwYTktMTU4NjIxZjc3YTIxCmBgYApUaGlzIGlzIGEgbW9yZSBjb21wbGV4IHNjaGVtYSBleGFtcGxlOgpgYGB5YW1sCnR5cGU6IG9iamVjdApwcm9wZXJ0aWVzOgogIGlkOgogICAgZGVzY3JpcHRpb246IFRoZSBjdXN0b21lciBpZGVudGlmaWVyIHN0cmluZwogICAgcmVhZE9ubHk6IHRydWUKICAgIGFsbE9mOgogICAgICAtICRyZWY6IC4vUmVzb3VyY2VJZC55YW1sCiAgd2Vic2l0ZUlkOgogICAgZGVzY3JpcHRpb246IFRoZSB3ZWJzaXRlJ3MgSUQKICAgIGFsbE9mOgogICAgICAtICRyZWY6IC4vUmVzb3VyY2VJZC55YW1sCiAgcGF5bWVudFRva2VuOgogICAgdHlwZTogc3RyaW5nCiAgICB3cml0ZU9ubHk6IHRydWUKICAgIGRlc2NyaXB0aW9uOiB8CiAgICAgIEEgd3JpdGUtb25seSBwYXltZW50IHRva2VuOyBpZiBzdXBwbGllZCwgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgaW50byBhCiAgICAgIHBheW1lbnQgaW5zdHJ1bWVudCBhbmQgYmUgc2V0IGFzIHRoZSBgZGVmYXVsdFBheW1lbnRJbnN0cnVtZW50YC4gVGhlCiAgICAgIHZhbHVlIG9mIHRoaXMgcHJvcGVydHkgd2lsbCBvdmVycmlkZSB0aGUgYGRlZmF1bHRQYXltZW50SW5zdHJ1bWVudGAKICAgICAgaW4gdGhlIGNhc2UgdGhhdCBib3RoIGFyZSBzdXBwbGllZC4gVGhlIHRva2VuIG1heSBvbmx5IGJlIHVzZWQgb25jZQogICAgICBiZWZvcmUgaXQgaXMgZXhwaXJlZC4KICBkZWZhdWx0UGF5bWVudEluc3RydW1lbnQ6CiAgICAkcmVmOiAuL1BheW1lbnRJbnN0cnVtZW50LnlhbWwKICBjcmVhdGVkVGltZToKICAgIGRlc2NyaXB0aW9uOiBUaGUgY3VzdG9tZXIgY3JlYXRlZCB0aW1lCiAgICBhbGxPZjoKICAgICAgLSAkcmVmOiAuL1NlcnZlclRpbWVzdGFtcC55YW1sCiAgdXBkYXRlZFRpbWU6CiAgICBkZXNjcmlwdGlvbjogVGhlIGN1c3RvbWVyIHVwZGF0ZWQgdGltZQogICAgYWxsT2Y6CiAgICAgIC0gJHJlZjogLi9TZXJ2ZXJUaW1lc3RhbXAueWFtbAogIHRhZ3M6CiAgICBkZXNjcmlwdGlvbjogQSBsaXN0IG9mIGN1c3RvbWVyJ3MgdGFncwogICAgcmVhZE9ubHk6IHRydWUKICAgIHR5cGU6IGFycmF5CiAgICBpdGVtczoKICAgICAgJHJlZjogLi9UYWdzL1RhZy55YW1sCiAgcmV2aXNpb246CiAgICBkZXNjcmlwdGlvbjogPgogICAgICBUaGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBjdXN0b21lciBkYXRhIGhhcyBiZWVuIG1vZGlmaWVkLgoKICAgICAgVGhlIHJldmlzaW9uIGlzIHVzZWZ1bCB3aGVuIGFuYWx5emluZyB3ZWJob29rIGRhdGEgdG8gZGV0ZXJtaW5lIGlmIHRoZQogICAgICBjaGFuZ2UgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBjdXJyZW50IHJlcHJlc2VudGF0aW9uLgogICAgdHlwZTogaW50ZWdlcgogICAgcmVhZE9ubHk6IHRydWUKICBfbGlua3M6CiAgICB0eXBlOiBhcnJheQogICAgZGVzY3JpcHRpb246IFRoZSBsaW5rcyByZWxhdGVkIHRvIHJlc291cmNlCiAgICByZWFkT25seTogdHJ1ZQogICAgbWluSXRlbXM6IDMKICAgIGl0ZW1zOgogICAgICBhbnlPZjoKICAgICAgICAtICRyZWY6IC4vTGlua3MvU2VsZkxpbmsueWFtbAogICAgICAgIC0gJHJlZjogLi9MaW5rcy9Ob3Rlc0xpbmsueWFtbAogICAgICAgIC0gJHJlZjogLi9MaW5rcy9EZWZhdWx0UGF5bWVudEluc3RydW1lbnRMaW5rLnlhbWwKICAgICAgICAtICRyZWY6IC4vTGlua3MvTGVhZFNvdXJjZUxpbmsueWFtbAogICAgICAgIC0gJHJlZjogLi9MaW5rcy9XZWJzaXRlTGluay55YW1sCiAgX2VtYmVkZGVkOgogICAgdHlwZTogYXJyYXkKICAgIGRlc2NyaXB0aW9uOiA+LQogICAgICBBbnkgZW1iZWRkZWQgb2JqZWN0cyBhdmFpbGFibGUgdGhhdCBhcmUgcmVxdWVzdGVkIGJ5IHRoZSBgZXhwYW5kYAogICAgICBxdWVyeXN0cmluZyBwYXJhbWV0ZXIuCiAgICByZWFkT25seTogdHJ1ZQogICAgbWluSXRlbXM6IDEKICAgIGl0ZW1zOgogICAgICBhbnlPZjoKICAgICAgICAtICRyZWY6IC4vRW1iZWRzL0xlYWRTb3VyY2VFbWJlZC55YW1sCgpgYGAKCiMjIyMjIFVzaW5nIHRoZSBgJHJlZmAKCk5vdGljZSBpbiB0aGUgY29tcGxleCBleGFtcGxlIGFib3ZlIHRoZSBzY2hlbWEgZGVmaW5pdGlvbiBpdHNlbGYgaGFzIGAkcmVmYCBsaW5rcyB0byBvdGhlciBzY2hlbWFzIGRlZmluZWQuCgpIZXJlIGlzIGEgc21hbGwgZXhjZXJwdCB3aXRoIGFuIGV4YW1wbGU6CgpgYGB5YW1sCmRlZmF1bHRQYXltZW50SW5zdHJ1bWVudDoKICAkcmVmOiAuL1BheW1lbnRJbnN0cnVtZW50LnlhbWwKYGBgCgpUaGUgdmFsdWUgb2YgdGhlIGAkcmVmYCBpcyB0aGUgcGF0aCB0byB0aGUgb3RoZXIgc2NoZW1hIGRlZmluaXRpb24uCgpZb3UgbWF5IHVzZSBgJHJlZmBzIHRvIGNvbXBvc2Ugc2NoZW1hIGZyb20gb3RoZXIgZXhpc3Rpbmcgc2NoZW1hIHRvIGF2b2lkIGR1cGxpY2F0aW9uLgoKWW91IHdpbGwgdXNlIGAkcmVmYHMgdG8gcmVmZXJlbmNlIHNjaGVtYSBmcm9tIHlvdXIgcGF0aCBkZWZpbml0aW9ucy4KCiMjIyMgRWRpdGluZyBTY2hlbWFzCgoxLiBOYXZpZ2F0ZSB0byB0aGUgYG9wZW5hcGkvY29tcG9uZW50cy9zY2hlbWFzYCBmb2xkZXIuCjIuIE9wZW4gdGhlIGZpbGUgeW91IHdpc2ggdG8gZWRpdC4KMy4gRWRpdC4KCiMjIyBQYXRocwoKIyMjIyBBZGRpbmcgYSBQYXRoCgoxLiBOYXZpZ2F0ZSB0byB0aGUgYG9wZW5hcGkvcGF0aHNgIGZvbGRlci4KMi4gQWRkIGEgbmV3IFlBTUwgZmlsZSBuYW1lZCBsaWtlIHlvdXIgVVJMIGVuZHBvaW50IGV4Y2VwdCByZXBsYWNpbmcgYC9gIHdpdGggYEBgIGFuZCBwdXR0aW5nIHBhdGggcGFyYW1ldGVycyBpbnRvIGN1cmx5IGJyYWNlcyBsaWtlIGB7ZXhhbXBsZX1gLgozLiBBZGQgdGhlIHBhdGggYW5kIGEgcmVmIHRvIGl0IGluc2lkZSBvZiB5b3VyIGBvcGVuYXBpLnlhbWxgIGZpbGUgaW5zaWRlIG9mIHRoZSBgb3BlbmFwaWAgZm9sZGVyLgoKRXhhbXBsZSBhZGRpdGlvbiB0byB0aGUgYG9wZW5hcGkueWFtbGAgZmlsZToKYGBgeWFtbAonL2N1c3RvbWVycy97aWR9JzoKICAkcmVmOiAnLi9wYXRocy9jdXN0b21lcnNAe2lkfS55YW1sJwpgYGAKCkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIFlBTUwgZmlsZSBuYW1lZCBgY3VzdG9tZXJzQHtpZH0ueWFtbGAgaW4gdGhlIGBwYXRoc2AgZm9sZGVyOgoKYGBgeWFtbApnZXQ6CiAgdGFnczoKICAgIC0gQ3VzdG9tZXJzCiAgc3VtbWFyeTogUmV0cmlldmUgYSBsaXN0IG9mIGN1c3RvbWVycwogIG9wZXJhdGlvbklkOiBHZXRDdXN0b21lckNvbGxlY3Rpb24KICBkZXNjcmlwdGlvbjogfAogICAgWW91IGNhbiBoYXZlIGEgbWFya2Rvd24gZGVzY3JpcHRpb24gaGVyZS4KICBwYXJhbWV0ZXJzOgogICAgLSAkcmVmOiAuLi9jb21wb25lbnRzL3BhcmFtZXRlcnMvY29sbGVjdGlvbkxpbWl0LnlhbWwKICAgIC0gJHJlZjogLi4vY29tcG9uZW50cy9wYXJhbWV0ZXJzL2NvbGxlY3Rpb25PZmZzZXQueWFtbAogICAgLSAkcmVmOiAuLi9jb21wb25lbnRzL3BhcmFtZXRlcnMvY29sbGVjdGlvbkZpbHRlci55YW1sCiAgICAtICRyZWY6IC4uL2NvbXBvbmVudHMvcGFyYW1ldGVycy9jb2xsZWN0aW9uUXVlcnkueWFtbAogICAgLSAkcmVmOiAuLi9jb21wb25lbnRzL3BhcmFtZXRlcnMvY29sbGVjdGlvbkV4cGFuZC55YW1sCiAgICAtICRyZWY6IC4uL2NvbXBvbmVudHMvcGFyYW1ldGVycy9jb2xsZWN0aW9uRmllbGRzLnlhbWwKICByZXNwb25zZXM6CiAgICAnMjAwJzoKICAgICAgZGVzY3JpcHRpb246IEEgbGlzdCBvZiBDdXN0b21lcnMgd2FzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkKICAgICAgaGVhZGVyczoKICAgICAgICBSYXRlLUxpbWl0LUxpbWl0OgogICAgICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9oZWFkZXJzL1JhdGUtTGltaXQtTGltaXQueWFtbAogICAgICAgIFJhdGUtTGltaXQtUmVtYWluaW5nOgogICAgICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9oZWFkZXJzL1JhdGUtTGltaXQtUmVtYWluaW5nLnlhbWwKICAgICAgICBSYXRlLUxpbWl0LVJlc2V0OgogICAgICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9oZWFkZXJzL1JhdGUtTGltaXQtUmVzZXQueWFtbAogICAgICAgIFBhZ2luYXRpb24tVG90YWw6CiAgICAgICAgICAkcmVmOiAuLi9jb21wb25lbnRzL2hlYWRlcnMvUGFnaW5hdGlvbi1Ub3RhbC55YW1sCiAgICAgICAgUGFnaW5hdGlvbi1MaW1pdDoKICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvaGVhZGVycy9QYWdpbmF0aW9uLUxpbWl0LnlhbWwKICAgICAgICBQYWdpbmF0aW9uLU9mZnNldDoKICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvaGVhZGVycy9QYWdpbmF0aW9uLU9mZnNldC55YW1sCiAgICAgIGNvbnRlbnQ6CiAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9zY2hlbWFzL0N1c3RvbWVyLnlhbWwKICAgICAgICB0ZXh0L2NzdjoKICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9zY2hlbWFzL0N1c3RvbWVyLnlhbWwKICAgICc0MDEnOgogICAgICAkcmVmOiAuLi9jb21wb25lbnRzL3Jlc3BvbnNlcy9BY2Nlc3NGb3JiaWRkZW4ueWFtbAogIHgtY29kZS1zYW1wbGVzOgogICAgLSBsYW5nOiBQSFAKICAgICAgc291cmNlOgogICAgICAgICRyZWY6IC4uL2NvZGVfc2FtcGxlcy9QSFAvY3VzdG9tZXJzL2dldC5waHAKcG9zdDoKICB0YWdzOgogICAgLSBDdXN0b21lcnMKICBzdW1tYXJ5OiBDcmVhdGUgYSBjdXN0b21lciAod2l0aG91dCBhbiBJRCkKICBvcGVyYXRpb25JZDogUG9zdEN1c3RvbWVyCiAgZGVzY3JpcHRpb246IEFub3RoZXIgbWFya2Rvd24gZGVzY3JpcHRpb24gaGVyZS4KICByZXF1ZXN0Qm9keToKICAgICRyZWY6IC4uL2NvbXBvbmVudHMvcmVxdWVzdEJvZGllcy9DdXN0b21lci55YW1sCiAgcmVzcG9uc2VzOgogICAgJzIwMSc6CiAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvcmVzcG9uc2VzL0N1c3RvbWVyLnlhbWwKICAgICc0MDEnOgogICAgICAkcmVmOiAuLi9jb21wb25lbnRzL3Jlc3BvbnNlcy9BY2Nlc3NGb3JiaWRkZW4ueWFtbAogICAgJzQwOSc6CiAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvcmVzcG9uc2VzL0NvbmZsaWN0LnlhbWwKICAgICc0MjInOgogICAgICAkcmVmOiAuLi9jb21wb25lbnRzL3Jlc3BvbnNlcy9JbnZhbGlkRGF0YUVycm9yLnlhbWwKICB4LWNvZGUtc2FtcGxlczoKICAgIC0gbGFuZzogUEhQCiAgICAgIHNvdXJjZToKICAgICAgICAkcmVmOiAuLi9jb2RlX3NhbXBsZXMvUEhQL2N1c3RvbWVycy9wb3N0LnBocApgYGAKCllvdSdsbCBzZWUgZXh0ZW5zaXZlIHVzYWdlIG9mIGAkcmVmYHMgaW4gdGhpcyBleGFtcGxlIHRvIGRpZmZlcmVudCB0eXBlcyBvZiBjb21wb25lbnRzIGluY2x1ZGluZyBzY2hlbWFzLgoKWW91J2xsIGFsc28gbm90aWNlIGAkcmVmYHMgdG8gY29kZSBzYW1wbGVzLgoKIyMjIENvZGUgc2FtcGxlcwoKMS4gTmF2aWdhdGUgdG8gdGhlIGBvcGVuYXBpL2NvZGVfc2FtcGxlc2AgZm9sZGVyLgoyLiBOYXZpZ2F0ZSB0byB0aGUgYDxsYW5ndWFnZT5gIChlLmcuIFBIUCkgc3ViLWZvbGRlci4KMy4gTmF2aWdhdGUgdG8gdGhlIGBwYXRoYCBmb2xkZXIsIGFuZCBhZGQgcmVmIHRvIHRoZSBjb2RlIHNhbXBsZS4KCllvdSBjYW4gYWRkIGxhbmd1YWdlcyBieSBhZGRpbmcgbmV3IGZvbGRlcnMgYXQgdGhlIGFwcHJvcHJpYXRlIHBhdGggbGV2ZWwuCgpNb3JlIGRldGFpbHMgaW5zaWRlIHRoZSBgY29kZV9zYW1wbGVzYCBmb2xkZXIgUkVBRE1FLgo= readmeEtag: '"0d3f9805b9190e570910dc6f7b3281e1a72c4454"' readmeLastModified: Tue, 25 May 2021 17:00:53 GMT repositoryId: 288878170 description: Nuxeo Platform - OpenAPI 3.0 Definition created: '2020-08-20T01:45:54Z' updated: '2022-05-04T09:45:21Z' language: JavaScript archived: false stars: 2 watchers: 18 forks: 0 owner: nuxeo-sandbox logo: https://avatars.githubusercontent.com/u/10600635?v=4 license: Apache-2.0 repoEtag: '"3b0257755429c6de31497d9a605ea569121922904b67393d6154bc3975a84058"' repoLastModified: Wed, 04 May 2022 09:45:21 GMT foundInMaster: true category: Parsers id: 8c3d4cf99acd1b18a2570332f306ca3c - source: openapi3 tags repository: https://github.com/tourhunter-com/apidocs-tourhunter-com v3: true repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPlRvdXJIdW50ZXIgQVBJIERvY3VtZW50YXRpb248L2gxPgoKTGl2ZTogaHR0cHM6Ly9hcGlkb2MudG91cmh1bnRlci5jb20KClNwZWNpZmljYXRpb246IGh0dHBzOi8vYXBpZG9jLnRvdXJodW50ZXIuY29tL29wZW5hcGkueWFtbAoKVGhlIHJlcG9zaXRvcnkgaXMgYSBwYXJ0IG9mIHRoZSBbVG91ckh1bnRlciBPcmdhbml6YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS90b3VyaHVudGVyLWNvbSkuCgpUaGlzIHByb2plY3QgYW5kIGV2ZXJ5b25lIHBhcnRpY2lwYXRpbmcgaW4gaXQgaXMgZ292ZXJuZWQgYnkgdGhlIFtDb2RlIG9mIENvbmR1Y3RdKENPREVfT0ZfQ09ORFVDVC5tZCkuCgojIyBDb250cmlidXRpbmcKClBsZWFzZSByZWFkIHRocm91Z2ggb3VyIFtDb250cmlidXRpbmcgR3VpZGVsaW5lc10oQ09OVFJJQlVUSU5HLm1kKS4KCiMjIE9wZW5BUEkgU3BlY2lmaWNhdGlvbgoKaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnCgpodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbgoKaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9hYm91dC8KCiMjIyBSZXNvbHZpbmcgbG9jYWwgZXJyb3JzCgpodHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL3dpa2kvSG93LXRvLXJ1bi10aGluZ3MtbG9jYWxseQoKIyMgTGljZW5zZQoKVGhpcyBwcm9qZWN0IGlzIG9wZW4gc291cmNlIGFuZCBhdmFpbGFibGUgZnJlZWx5IHVuZGVyIHRoZSBbTUlUIGxpY2Vuc2VdKExJQ0VOU0UubWQpLgo= readmeEtag: '"ccfc3f18acd69afb7df2d3e4564c3cc05d0414fb"' readmeLastModified: Thu, 21 May 2020 04:10:30 GMT repositoryId: 210099891 description: TourHunter API Documentation created: '2019-09-22T06:14:43Z' updated: '2025-07-23T19:00:09Z' language: HTML archived: false stars: 2 watchers: 3 forks: 1 owner: tourhunter-com logo: https://avatars.githubusercontent.com/u/53857976?v=4 license: MIT repoEtag: '"2a31b76039bd79b8efa5d29d47b806989c2e05b2c86d6b3a79e8466f89109966"' repoLastModified: Wed, 23 Jul 2025 19:00:09 GMT foundInMaster: true category: - Server - Parsers id: 641793721f8befe318a7aef957d95923 - source: openapi3 tags repository: https://github.com/clightning4j/jrest v3: true repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICA8aDE+OnphcDogSlJlc3QgOnphcDo8L2gxPgoKICA8aW1nIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL2NsaWdodG5pbmc0ai9pY29ucy9yYXcvbWFpbi9vcmcvaWNfbGF1bmNoZXIvcmVzL21pcG1hcC14eHhoZHBpL2ljX2xhdW5jaGVyLnBuZyIgLz4KCiAgPHA+CiAgICA8c3Ryb25nPiA6emFwOiBKUmVzdDogQSBwbHVnaW4gZm9yIGMtbGlnaHRuaW5nIHRvIGV4cG9zZSB0aGUgQVBJIG92ZXIgcmVzdCA6emFwOiA8L3N0cm9uZz4KICA8L3A+CgogIDxwPgogICAgPGltZyBhbHQ9IkdpdEh1YiBXb3JrZmxvdyBTdGF0dXMiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvd29ya2Zsb3cvc3RhdHVzL2NsaWdodG5pbmc0ai9qcmVzdC9JbnRlZ3JhdGlvbiUyMHRlc3Rpbmc/c3R5bGU9ZmxhdC1zcXVhcmUiPgogICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jbGlnaHRuaW5nNGovSlJQQ2xpZ2h0bmluZy9kaXNjdXNzaW9ucyI+CiAgICAgIDxpbWcgYWx0PSJHaXRIdWIgV29ya2Zsb3cgU3RhdHVzIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRGlzY3Vzc2lvbi1Kb2luLWdyZWVuIj4KICAgICA8L2E+CiAgPC9wPgo8L2Rpdj4KCiMjIFRhYmxlIG9mIENvbnRlbnQKCi0gSW50cm9kdWN0aW9uCi0gSW5zdGFsbAotIFBsdWdpbiBwYXJhbWV0ZXIKLSBFeGFtcGxlCi0gV2hvCi0gU3VwcG9ydAotIExpY2Vuc2UKCiMjIEludHJvZHVjdGlvbgoKQSBKYXZhIHBsdWdpbiBmb3IgYy1saWdodG5pbmcgdG8gZXhwb3NlIHRoZSBBUEkgb3ZlciByZXN0IQoKIyMgSW5zdGFsbAoKSmF2YSBwcm9kdWNlcyBhIGphciBhbmQgYy1saWdodG5pbmcgbmVlZHMgYSBiYXNoIHNjcmlwdCB0byBydW4gaXQhIApUaGUgZ3JhZGxlIHNjcmlwdCBjb21waWxlcyB0aGUgcGx1Z2luIGFuZCBnZW5lcmF0ZSBhIGJhc2ggc2NyaXB0IHdpdGggdGhlIGNvbW1hbmQgYC4vZ3JhZGxldyBjcmVhdGVSdW5uYWJsZVNjcmlwdGAKCkFmdGVyIHRoZSBncmFkbGUgcHJvY2VzcywgeW91IGhhdmUgdGhlIGphciBpbnNpZGUgdGhlIGBidWlsZC9saWJzL2xpZ2h0bmluZy1yZXN0LmphcmAgYW5kIHRoZSBzY3JpcHQgYGxpZ2h0bmluZy1yZXN0LWdlbi5zaGAgCmluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdC4KCiMjIyBMaW5rIHRoZSBwbHVnaW4gaW4gY29yZSBsaWdodG5pbmcKCllvdSBjYW4gcnVuIHRoZSBwbHVnaW4gaW4gYSBkaWZmZXJlbnQgd2F5CgpZb3UgY2FuIGluc2VydCB0aGUgcGF0aCBvZiBmaWxlIGBsaWdodG5pbmctcmVzdC1nZW4uc2hgIGluc2lkZSB0aGUgbGlnaHRuaW5nIGNvbmYgZmlsZSB3aXRoIHRoZSB0YWcgYHBsdWdpbj1ZT1VSX1BBVEhgIGFuZCBydW4gbGlnaHRuaW5nZC4gSW4gdGhpcyBjYXNlLCB5b3UgY2FuIGluc2VydCB0aGUgcG9ydCB0aGF0IHlvdSB3YW50IHRoZSBzZXJ2ZXIgcnVubmluZyB3aXRoIHRoZSBwcm9wcmlldHkgYGxpZ2h0bmluZ2QgLS1qcmVzdC1wb3J0PTcwMDBgLgoKSW4gYWRkaXRpb24sIHlvdSBjYW4gcnVuIHRoZSBwbHVnaW4gYWxzbyBkeW5hbWljYWxseSBmcm9tIGBsaWdodG5pbmctY2xpIHBsdWdpbiBzdGFydCBZT1VSX1BBVEhgIGFuZCB0aGUgc2VydmVyIHJ1bnMgb24gdGhlIHBvcnQgYDcwMDBgIGJ5IGRlZmF1bHQuCgojIyBQbHVnaW4gcGFyYW1ldGVyCgotIGpyZXN0LXBvcnQ6IHRoZSBwb3J0IHdoZXJlIHlvdSB3YW50IHRvIHJ1biB0aGUgcGx1Z2luCi0ganJlc3Qtb24tc3RhcnR1cDogcnVuIHRoZSBzZXJ2ZXIgYXQgc3RhcnR1cCB3aXRoIGNvcmUgbGlnaHRuaW5nCgojIyBFeGFtcGxlCgoKV2hlbiB5b3UgaGF2ZSBpbnN0YWxsZWQgdGhlIHBsdWdpbiwgeW91IGNhbiBydW4gaXQgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQ+CgotIGBsaWdodG5pbmctY2xpIHJlc3RzZXJ2ZXIgc3RhcnRgOiBUaGlzIGNvbW1hbmQgcnVuIHRoZSBzZXJ2ZXIgYW5kIHRoZSBjYWxsZXIKICB3aWxsIHJlY2VpdmUgZmVlZGJhY2sgbGlrZSB0aGlzOgoKYGBganNvbgp7CiAgInN0YXR1cyI6ICJydW5uaW5nIiwKICAicG9ydCI6IDcwMDAKfQpgYGAKCllvdSBjYW4gdmlzaXQgdGhlIGRvY3VtZW50YXRpb24gb2Ygc2VydmVyIHJlc3QgYXQgbGluawpbaHR0cDovL2xvY2FsaG9zdDo3MDAwL3VpXShodHRwOi8vbG9jYWxob3N0OjcwMDAvdWkpIG9uIHlvdXIKYnJvd3NlcgoKLSBgbGlnaHRuaW5nLWNsaSByZXN0c2VydmVyIHN0b3BgOiBUaGlzIGNvbW1hbmQgc3RvcCB0aGUgc2VydmVyIGFuZCB0aGUgY2FsbGVyCiAgd2lsbCByZWNlaXZlIGZlZWRiYWNrIGxpa2UgdGhpczoKCmBgYGpzb24KewogICJzdGF0dXMiOiAic3RvcCIsCiAgInBvcnQiOiA3MDAwCn0KYGBgCgojIyBXaG8KCltAdmluY2Vuem9wYWxhenpvXShodHRwczovL2dpdGh1Yi5jb20vdmluY2Vuem9wYWxhenpvKSBpcyB0aGUgZGV2ZWxvcGVyIG9mIHRoaXMKcGx1Z2luIGFuZCB0aGUgbW90aXZhdGlvbiB0aGF0IGhlIGlzIGRldmVsb3BpbmcgdGhpcyBwbHVnaW4gaXMgYmVjYXVzZSBoZSBpcwp0ZXN0aW5nIHRoZSBbSlJQQ0xpZ2h0bmluZ10oaHR0cHM6Ly9naXRodWIuY29tL3ZpbmNlbnpvcGFsYXp6by9KUlBDbGlnaHRuaW5nKQpsaWJyYXJ5LgoKQWxsIGZlZWRiYWNrIGFyZSB3ZWxjb21lIDopCgpQUzogVGhlIGNyZWF0b3Igb2YgdGhpcyByZXBvc2l0b3J5IGFyZSBzZWFyY2hpbmcgYSBtYWludGFpbmVyIG9mIHRoaXMgbGlicmFyeSwKaWYgeW91IGxpa2UgdG8gd29yayBpbnNpZGUgdGhpcyByZXBvc2l0b3J5IHRvIGxlYXJuIGNhbiB3cml0ZSBhbiBlbWFpbCB0bwo8dmluY2Vuem9wYWxhenpvZGV2QGdtYWlsLmNvbT4KCiMjIFN1cHBvcnQKClRPRE86IGZvciBub3cgbG9vayBpbnNpZGUgdGhlIFtKUlBDTGlnaHRuaW5nXShodHRwczovL2dpdGh1Yi5jb20vdmluY2Vuem9wYWxhenpvL0pSUENsaWdodG5pbmcpCgojIyBMaWNlbnNlCgo8ZGl2IGFsaWduPSJjZW50ZXIiPgogIDxpbWcgc3JjPSJodHRwczovL29wZW5zb3VyY2Uub3JnL2ZpbGVzL29zaV9rZXlob2xlXzMwMFgzMDBfOTBwcGlfMC5wbmciIHdpZHRoPSIxNTAiIGhlaWdodD0iMTUwIi8+CjwvZGl2PgoKYGBgCk1JVCBMaWNlbnNlCgpBIEphdmEgcGx1Z2luIGZvciBjLWxpZ2h0bmluZyB0byBleHBvc2UgdGhlIEFQSSBvdmVyIHJlc3QhCkNvcHlyaWdodCAoYykgMjAyMC0yMSBWaW5jZW56byBQYWxhenpvIDx2aW5jZW56b3BhbGF6em9kZXZAZ21haWwuY29tPgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4KYGBgCgo= readmeEtag: '"d7d615d1fdd85382f53089af10cf5472534d0d91"' readmeLastModified: Fri, 10 Jun 2022 08:38:43 GMT repositoryId: 278958272 description: A Java plugin for c-lightning to expose the API over rest! created: '2020-07-11T23:31:41Z' updated: '2025-07-22T07:54:22Z' language: Java archived: false stars: 3 watchers: 1 forks: 1 owner: clightning4j logo: https://avatars.githubusercontent.com/u/67849355?v=4 license: NOASSERTION repoEtag: '"afc348609eb9e4ca6cfe9e26fc9f9957c4ddeaf47fc32950a5ca1e0219ab8974"' repoLastModified: Tue, 22 Jul 2025 07:54:22 GMT foundInMaster: true category: Server id: 0842c1cecab7de55d68080243b5f9b11 - source: openapi3 tags repository: https://github.com/fabidick22/voting-sys-rest-api v3: true repositoryMetadata: base64Readme: >- IyBWb3RpbmcgU3lzdGVtIFJFU1QgQVBJCiFbQ0ktdm90aW5nLXN5c10oaHR0cHM6Ly9naXRodWIuY29tL2ZhYmlkaWNrMjIvdm90aW5nLXN5cy1yZXN0LWFwaS93b3JrZmxvd3MvQ0ktdm90aW5nLXN5cy9iYWRnZS5zdmcpCgpBIFJFU1QgQVBJIGZvciB2b3Rpbmcgc3lzdGVtCgoqKkNoYXJhY3RlcmlzdGljOioqCi0gTVZDIGFzIGEgZGVzaWduIHBhdHRlcm4KLSBCYXNpYyB0b2tlbi1iYXNlZCBhdXRoZW50aWNhdGlvbiAoZG8gbm90IHVzZSB0aGlzIG1ldGhvZCwgaXQgaXMganVzdCBhbiBleGFtcGxlKQoKIyMjIE1haW4gdG9vbHMgdXNlZAotIFtFeHByZXNzXShodHRwczovL2V4cHJlc3Nqcy5jb20vKQotIFtNb25nb2RiXShodHRwczovL3d3dy5tb25nb2RiLmNvbSkKLSBbTW9uZ29vc2VdKCkKLSBbU3dhZ2dlclVJXShodHRwczovL2dpdGh1Yi5jb20vc2NvdHRpZTE5ODQvc3dhZ2dlci11aS1leHByZXNzKQotIFtNb3JnYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9leHByZXNzanMvbW9yZ2FuKQotIFtEb2NrZXJdKGh0dHBzOi8vd3d3LmRvY2tlci5jb20vKQoKIyMgR2V0dGluZyBTdGFydGVkCkNsb25lIHRoaXMgcmVwb3NpdG9yeSBhbmQgaW5zdGFsbCBkZXBlbmRlbmNpZXMKYGBgCj4gZ2l0IGNsb25lIGdpdEBnaXRodWIuY29tOmZhYmlkaWNrMjIvdm90aW5nLXN5cy1yZXN0LWFwaS5naXQKPiBjZCB2b3Rpbmctc3lzLXJlc3QtYXBpCgo+IG5wbSBpbnN0YWxsCmBgYAojIyMjIFJ1biBkZXZlbG9wbWVudCB3aXRoIG5vZGVtb24KYGBgCj4gbnBtIHJ1biAgc3RhcnQKYGBgCgojIyMjIEJ1aWxkIGFuZCBydW4gZm9yIHByb2R1Y3Rpb24gCmBgYAo+IG5wbSBydW4gc2VydmVyCmBgYAoKIyMjIyBUZXN0cyAoTm90IGltcGxlbWVudGVkIHlldCkKVW5pdCB0ZXN0czoKYGBgCj4gbnBtIHJ1biB0ZXN0OnNwZWNzCmBgYAoKQmxhY2stYm94IGVuZC10by1lbmQgdGVzdHM6CmBgYApucG0gcnVuIHRlc3Q6ZTJlCmBgYAoKCiMjIyBEZXBsb3kgQXBwCk1ha2Ugc3VyZSB5b3UgaGF2ZSB0aGUgYC5lbnZgIGZpbGUgeW91IGNhbiBzZWUgdGhlIHRlbXBsYXRlIGluIHRoZSBgLmVudi50ZW1wbGF0ZWAgZmlsZQpfRXhhbXBsZTpfCmBgYApOT0RFX0VOVj1kZXZlbG9wbWVudApEQl9IT1NUPWRiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvIGNvbm5lY3QgaW4gZG9ja2VyLWNvbXBvc2UpCkRCX1VTRVI9cm9vdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0YWJhc2UgdXNlciBmb3IgdGhlIGFwcCkKREJfUEFTUz1zdXBlclBhc3N3ZCAgICAgICAgICAgICAgICAgICAgIChkYXRhYmFzZSBwYXNzd29yZCBmb3IgdGhlIGFwcCkKU0VDUkVUX1RPS0VOPSIiICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25hbCBmb3IgdGhlIGRldiBlbnZpcm9ubWVudCkKTU9OR09fSU5JVERCX1JPT1RfVVNFUk5BTUU9cm9vdCAgICAgICAgIChmb3IgbW9uZ29EQikKTU9OR09fSU5JVERCX1JPT1RfUEFTU1dPUkQ9c3VwZXJQYXNzd2QgIChmb3IgbW9uZ29EQikKYGBgCkZyb20gdGhlIHJvb3QgZGlyZWN0b3J5OgpgYGAKIyBCdWlsZCB5b3VyIGRvY2tlcgo+IGRvY2tlci1jb21wb3NlIHVwCmBgYAoKKipTdGFydCBsb2NhbCAoZGV2KSBhcHAgYW5kIGRlcGxveSBtb25nbyBpbiBEb2NrZXIqKgpgYGAKIyBCdWlsZCB5b3VyIGRvY2tlcgo+IGRvY2tlci1jb21wb3NlIHVwIGRiCj4gbnBtIHN0YXJ0ICMgZGV2IGVudmlyb25tZW50CmBgYAoKIyMjIEZ1bmN0aW9uYWxpdHkgdGVzdApBZnRlciBoYXZpbmcgdGhlIGRhdGFiYXNlIGFuZCB5b3VyIEFQSSBydW5uaW5nLCB5b3UgY2FuIHRlc3QgdGhlIGZ1bmN0aW9uYWxpdGllcyBmcm9tIHRoZSBVSSBwcm92aWRlZCBieSBzd2FnZ2VyLVVJLgpZb3UgbXVzdCBiZWFyIGluIG1pbmQgdGhhdCBmaXJzdCB5b3UgaGF2ZSB0byBjcmVhdGUgYSB1c2VyIGZyb20gdGhpcyBlbmRwb2ludCAoYC91c2Vycy9zaWduVXBgKSB0aGVuIHlvdSB3aWxsIGhhdmUgYSB0b2tlbiB0aGF0IHlvdSBtdXN0IHNldCBpbiB0aGUgc3dhZ2dlciBhdXRob3JpemVyIHRvIGJlIGFibGUgdG8gdXNlIHRoZSBvdGhlciBlbmRwb2l0cwoKIyMgQVBJIGRvY3VtZW50YXRpb24KQ2hlY2tvdXQgYGxvY2FsaG9zdDozMDAwL2RvY3NgLgpCYXNlIHBhdGg6IGBsb2NhbGhvc3Q6MzAwMC9hcGkvdjFgCgojIyBNb2R1bGUgc3RydWN0dXJlCmBgYAouCuKUnOKUgOKUgCBhcHAuanMK4pSc4pSA4pSAIGNvbmZpZwrilJzilIDilIAgY29uZmlnLmpzCuKUnOKUgOKUgCBjb250cm9sbGVycwrilJzilIDilIAgZG9ja2VyLWNvbXBvc2UueW1sCuKUnOKUgOKUgCBEb2NrZXJmaWxlCuKUnOKUgOKUgCBtaWRkbGV3YXJlcwrilJzilIDilIAgbW9kZWxzCuKUnOKUgOKUgCBub2RlX21vZHVsZXMK4pSc4pSA4pSAIHBhY2thZ2UuanNvbgrilJzilIDilIAgcGFja2FnZS1sb2NrLmpzb24K4pSc4pSA4pSAIFJFQURNRS5tZArilJzilIDilIAgcm91dGVzCuKUnOKUgOKUgCB0ZXN0CuKUnOKUgOKUgCB1dGlscwrilJTilIDilIAgdm90aW5nT0FTLnlhbWwKCjggZGlyZWN0b3JpZXMsIDggZmlsZXMKYGBgCiMjIyBSZWZlcmVuY2VzOgotIGh0dHBzOi8vbWVkaXVtLmNvbS93b2xveC9kb2N1bWVudGluZy1hLW5vZGVqcy1yZXN0LWFwaS13aXRoLW9wZW5hcGktMy1zd2FnZ2VyLTVkZWVlOWY1MDQyMAotIGh0dHBzOi8vdHdtLm1lL2NvcnJlY3Qtd2F5LXRvLXVzZS1tb25nb29zZS8K readmeEtag: '"047209aed7def0296769682b6201c9e8e7adabcc"' readmeLastModified: Wed, 20 Jul 2022 04:12:27 GMT repositoryId: 251323884 description: Base template to create a REST-API created: '2020-03-30T14:06:01Z' updated: '2023-03-05T08:14:26Z' language: JavaScript archived: false stars: 2 watchers: 1 forks: 0 owner: fabidick22 logo: https://avatars.githubusercontent.com/u/8176821?v=4 license: MIT repoEtag: '"ef0838832eb0d72f9ebc26dd2beac95766f0e6e82859f3a3f10d952e2f0acbf1"' repoLastModified: Sun, 05 Mar 2023 08:14:26 GMT foundInMaster: true category: - Testing - Server Implementations id: 360961fe9a73041e997249011d70f3d1 - source: openapi3 tags repository: https://github.com/tidusjar/wiremock.openapivalidator v3: true id: 6e98ac01bba66f60b5283ccbc8395dc3 repositoryMetadata: base64Readme: >- IyBXaXJlTW9jayBPcGVuQVBJIFZhbGlkYXRvciBHaXRIdWIgQWN0aW9uCgpBdXRvbWF0aWNhbGx5IHZhbGlkYXRlIFdpcmVNb2NrIHN0dWIgbWFwcGluZ3MgYWdhaW5zdCBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGluIHlvdXIgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3dzLiBQZXJmZWN0IGZvciBlbnN1cmluZyB5b3VyIG1vY2tzIHN0YXkgaW4gc3luYyB3aXRoIHlvdXIgQVBJIGNvbnRyYWN0cyBpbiBQUiBwaXBlbGluZXMuCgojIyBGZWF0dXJlcwoKLSDinIUgKipBdXRvbWF0ZWQgVmFsaWRhdGlvbioqOiBWYWxpZGF0ZXMgV2lyZU1vY2sgc3R1YnMgYWdhaW5zdCBPcGVuQVBJIHYzIHNwZWNzCi0g8J+SrCAqKlBSIENvbW1lbnRzKio6IFBvc3RzIGRldGFpbGVkIHZhbGlkYXRpb24gcmVzdWx0cyBkaXJlY3RseSB0byBwdWxsIHJlcXVlc3RzCi0g8J+TiiAqKlJpY2ggUmVwb3J0aW5nKio6IFN1bW1hcnkgdGFibGVzLCBwYXNzIHJhdGVzLCBhbmQgZGV0YWlsZWQgZmFpbHVyZSBpbmZvcm1hdGlvbgotIPCflIQgKipDb21tZW50IFVwZGF0ZXMqKjogVXBkYXRlcyBleGlzdGluZyBjb21tZW50cyBvbiBuZXcgY29tbWl0cyB0byBhdm9pZCBzcGFtCi0g4pqhICoqRmFzdCBTZXR1cCoqOiBDb21wb3NpdGUgYWN0aW9uIHdpdGggbWluaW1hbCBjb25maWd1cmF0aW9uIHJlcXVpcmVkCi0g8J+OryAqKkZsZXhpYmxlIE9wdGlvbnMqKjogQ29udHJvbCB3YXJuaW5ncywgb3V0cHV0IGZvcm1hdHMsIGFuZCBtb3JlCgojIyBVc2FnZQoKIyMjIEJhc2ljIEV4YW1wbGUKCkFkZCB0aGlzIHRvIHlvdXIgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3cgKGUuZy4sIGAuZ2l0aHViL3dvcmtmbG93cy92YWxpZGF0ZS1tb2Nrcy55bWxgKToKCmBgYHlhbWwKbmFtZTogVmFsaWRhdGUgV2lyZU1vY2sgTWFwcGluZ3MKCm9uOgogIHB1bGxfcmVxdWVzdDoKICAgIHBhdGhzOgogICAgICAtICdvcGVuYXBpLyoqJwogICAgICAtICd3aXJlbW9jay9tYXBwaW5ncy8qKicKCmpvYnM6CiAgdmFsaWRhdGU6CiAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CiAgICBzdGVwczoKICAgICAgLSB1c2VzOiBhY3Rpb25zL2NoZWNrb3V0QHY0CgogICAgICAtIG5hbWU6IFZhbGlkYXRlIFdpcmVNb2NrIE1hcHBpbmdzCiAgICAgICAgdXNlczogdGlkdXNqYXIvd2lyZW1vY2stb3BlbmFwaS12YWxpZGF0b3JAdjEKICAgICAgICB3aXRoOgogICAgICAgICAgb3BlbmFwaS1wYXRoOiAnb3BlbmFwaS9hcGktc3BlYy55bWwnCiAgICAgICAgICB3aXJlbW9jay1wYXRoOiAnd2lyZW1vY2svbWFwcGluZ3MnCmBgYAoKIyMjIFdpdGggQWxsIE9wdGlvbnMKCmBgYHlhbWwKLSBuYW1lOiBWYWxpZGF0ZSBXaXJlTW9jayBNYXBwaW5ncwogIHVzZXM6IHRpZHVzamFyL3dpcmVtb2NrLW9wZW5hcGktdmFsaWRhdG9yQHYxCiAgd2l0aDoKICAgIG9wZW5hcGktcGF0aDogJ3NwZWNzL29wZW5hcGkueW1sJwogICAgd2lyZW1vY2stcGF0aDogJ21vY2tzL21hcHBpbmdzJwogICAgZmFpbC1vbi13YXJuaW5nczogdHJ1ZQogICAgcG9zdC1jb21tZW50OiB0cnVlCiAgICBnaXRodWItdG9rZW46ICR7eyBzZWNyZXRzLkdJVEhVQl9UT0tFTiB9fQpgYGAKCiMjIyBVc2luZyBPdXRwdXRzCgpgYGB5YW1sCi0gbmFtZTogVmFsaWRhdGUgV2lyZU1vY2sgTWFwcGluZ3MKICBpZDogdmFsaWRhdGUKICB1c2VzOiB0aWR1c2phci93aXJlbW9jay1vcGVuYXBpLXZhbGlkYXRvckB2MQogIHdpdGg6CiAgICBvcGVuYXBpLXBhdGg6ICdvcGVuYXBpLnltbCcKICAgIHdpcmVtb2NrLXBhdGg6ICdtYXBwaW5ncycKCi0gbmFtZTogQ2hlY2sgUmVzdWx0cwogIHJ1bjogfAogICAgZWNobyAiVmFsaWRhdGlvbiBwYXNzZWQ6ICR7eyBzdGVwcy52YWxpZGF0ZS5vdXRwdXRzLnZhbGlkYXRpb24tcGFzc2VkIH19IgogICAgZWNobyAiVG90YWwgY2hlY2tzOiAke3sgc3RlcHMudmFsaWRhdGUub3V0cHV0cy50b3RhbC1jaGVja3MgfX0iCiAgICBlY2hvICJQYXNzZWQ6ICR7eyBzdGVwcy52YWxpZGF0ZS5vdXRwdXRzLnBhc3NlZC1jaGVja3MgfX0iCiAgICBlY2hvICJGYWlsZWQ6ICR7eyBzdGVwcy52YWxpZGF0ZS5vdXRwdXRzLmZhaWxlZC1jaGVja3MgfX0iCiAgICBlY2hvICJXYXJuaW5nczogJHt7IHN0ZXBzLnZhbGlkYXRlLm91dHB1dHMud2FybmluZy1jaGVja3MgfX0iCmBgYAoKIyMgSW5wdXRzCgp8IElucHV0IHwgRGVzY3JpcHRpb24gfCBSZXF1aXJlZCB8IERlZmF1bHQgfAp8LS0tLS0tLXwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tfAp8IGBvcGVuYXBpLXBhdGhgIHwgUGF0aCB0byB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZpbGUgKFlBTUwgb3IgSlNPTikgfCBZZXMgfCAtIHwKfCBgd2lyZW1vY2stcGF0aGAgfCBQYXRoIHRvIHRoZSBXaXJlTW9jayBtYXBwaW5ncyBkaXJlY3RvcnkgfCBZZXMgfCAtIHwKfCBgZmFpbC1vbi13YXJuaW5nc2AgfCBGYWlsIHRoZSBidWlsZCBpZiB3YXJuaW5ncyBhcmUgZm91bmQgfCBObyB8IGBmYWxzZWAgfAp8IGBwb3N0LWNvbW1lbnRgIHwgUG9zdCB2YWxpZGF0aW9uIHJlc3VsdHMgYXMgYSBQUiBjb21tZW50IHwgTm8gfCBgdHJ1ZWAgfAp8IGBnaXRodWItdG9rZW5gIHwgR2l0SHViIHRva2VuIGZvciBwb3N0aW5nIFBSIGNvbW1lbnRzIHwgTm8gfCBgJHt7IGdpdGh1Yi50b2tlbiB9fWAgfAp8IGBza2lwLWluc3RhbGxgIHwgU2tpcCB0b29sIGluc3RhbGxhdGlvbiAoZm9yIGxvY2FsIGRldmVsb3BtZW50L3Rlc3RpbmcpIHwgTm8gfCBgZmFsc2VgIHwKCiMjIE91dHB1dHMKCnwgT3V0cHV0IHwgRGVzY3JpcHRpb24gfAp8LS0tLS0tLS18LS0tLS0tLS0tLS0tLXwKfCBgdmFsaWRhdGlvbi1wYXNzZWRgIHwgV2hldGhlciBhbGwgdmFsaWRhdGlvbnMgcGFzc2VkIChgdHJ1ZWAvYGZhbHNlYCkgfAp8IGB0b3RhbC1jaGVja3NgIHwgVG90YWwgbnVtYmVyIG9mIHZhbGlkYXRpb24gY2hlY2tzIHBlcmZvcm1lZCB8CnwgYHBhc3NlZC1jaGVja3NgIHwgTnVtYmVyIG9mIGNoZWNrcyB0aGF0IHBhc3NlZCB8CnwgYGZhaWxlZC1jaGVja3NgIHwgTnVtYmVyIG9mIGNoZWNrcyB0aGF0IGZhaWxlZCB8CnwgYHdhcm5pbmctY2hlY2tzYCB8IE51bWJlciBvZiB3YXJuaW5ncyB8CnwgYGVycm9yLWNoZWNrc2AgfCBOdW1iZXIgb2YgZXJyb3JzIHwKCiMjIFdoYXQgR2V0cyBWYWxpZGF0ZWQ/CgpUaGUgYWN0aW9uIHZhbGlkYXRlcyB0aGUgZm9sbG93aW5nIGFzcGVjdHMgb2YgeW91ciBXaXJlTW9jayBtYXBwaW5nczoKCiMjIyDinIUgSFRUUCBNZXRob2RzCkVuc3VyZXMgdGhlIEhUVFAgbWV0aG9kIGluIHlvdXIgbW9jayBtYXRjaGVzIHRoZSBPcGVuQVBJIG9wZXJhdGlvbgoKIyMjIOKchSBVUkwgUGF0aCBNYXRjaGluZwpWZXJpZmllcyB0aGF0IG1vY2sgVVJMIHBhdHRlcm5zIG1hdGNoIGFjdHVhbCBBUEkgcGF0aHMKCiMjIyDinIUgUmVxdWlyZWQgUGFyYW1ldGVycwpDaGVja3MgdGhhdCBhbGwgcmVxdWlyZWQgcXVlcnkvcGF0aC9oZWFkZXIgcGFyYW1ldGVycyBhcmUgcHJlc2VudAoKIyMjIOKchSBQYXJhbWV0ZXIgVHlwZXMKVmFsaWRhdGVzIHRoYXQgcGFyYW1ldGVyIHR5cGVzIG1hdGNoIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24KCiMjIyDinIUgUmVzcG9uc2UgU3RydWN0dXJlClZlcmlmaWVzIHJlc3BvbnNlIHByb3BlcnRpZXMgZXhpc3QgYW5kIGhhdmUgY29ycmVjdCB0eXBlcwoKIyMjIOKchSBSZXF1aXJlZCBSZXNwb25zZSBQcm9wZXJ0aWVzCkVuc3VyZXMgYWxsIHJlcXVpcmVkIHJlc3BvbnNlIGZpZWxkcyBhcmUgcHJlc2VudCBpbiBtb2NrcwoKIyMgRXhhbXBsZSBQUiBDb21tZW50CgpUaGUgYWN0aW9uIHBvc3RzIGEgZGV0YWlsZWQgY29tbWVudCB0byB5b3VyIFBSOgoKYGBgbWFya2Rvd24KIyMg4pyFIFdpcmVNb2NrIE9wZW5BUEkgVmFsaWRhdGlvbiBSZXN1bHRzCgoqKkFsbCB2YWxpZGF0aW9ucyBwYXNzZWQhKioKCiMjIyBTdW1tYXJ5Cgp8IE1ldHJpYyB8IENvdW50IHwKfC0tLS0tLS0tfC0tLS0tLS18CnwgVG90YWwgQ2hlY2tzIHwgNDUgfAp8IOKchSBQYXNzZWQgfCA0MyB8Cnwg4pqg77iPIFdhcm5pbmdzIHwgMiB8Cnwg4p2MIEZhaWxlZCB8IDAgfAp8IPCflLQgRXJyb3JzIHwgMCB8CnwgKipQYXNzIFJhdGUqKiB8ICoqOTUuNiUqKiB8CmBgYAoKIyMgQWR2YW5jZWQgVXNhZ2UKCiMjIyBGYWlsIG9uIFdhcm5pbmdzCgpVc2UgYGZhaWwtb24td2FybmluZ3M6IHRydWVgIHRvIGVuZm9yY2UgemVybyB3YXJuaW5ncyBpbiB5b3VyIGNvZGViYXNlOgoKYGBgeWFtbAotIHVzZXM6IHRpZHVzamFyL3dpcmVtb2NrLW9wZW5hcGktdmFsaWRhdG9yQHYxCiAgd2l0aDoKICAgIG9wZW5hcGktcGF0aDogJ2FwaS55bWwnCiAgICB3aXJlbW9jay1wYXRoOiAnbWFwcGluZ3MnCiAgICBmYWlsLW9uLXdhcm5pbmdzOiB0cnVlICAjIEJ1aWxkIGZhaWxzIGlmIGFueSB3YXJuaW5ncwpgYGAKCiMjIyBEaXNhYmxlIFBSIENvbW1lbnRzCgpGb3IgQ0kgZW52aXJvbm1lbnRzIG91dHNpZGUgcHVsbCByZXF1ZXN0cyBvciB0byBkaXNhYmxlIGNvbW1lbnRzOgoKYGBgeWFtbAotIHVzZXM6IHRpZHVzamFyL3dpcmVtb2NrLW9wZW5hcGktdmFsaWRhdG9yQHYxCiAgd2l0aDoKICAgIG9wZW5hcGktcGF0aDogJ2FwaS55bWwnCiAgICB3aXJlbW9jay1wYXRoOiAnbWFwcGluZ3MnCiAgICBwb3N0LWNvbW1lbnQ6IGZhbHNlCmBgYAoKIyMjIE11bHRpcGxlIE9wZW5BUEkgU3BlY3MKClZhbGlkYXRlIGFnYWluc3QgbXVsdGlwbGUgc3BlY2lmaWNhdGlvbnM6CgpgYGB5YW1sCi0gbmFtZTogVmFsaWRhdGUgVXNlciBBUEkgTW9ja3MKICB1c2VzOiB0aWR1c2phci93aXJlbW9jay1vcGVuYXBpLXZhbGlkYXRvckB2MQogIHdpdGg6CiAgICBvcGVuYXBpLXBhdGg6ICdzcGVjcy91c2Vycy1hcGkueW1sJwogICAgd2lyZW1vY2stcGF0aDogJ21vY2tzL3VzZXJzJwoKLSBuYW1lOiBWYWxpZGF0ZSBPcmRlcnMgQVBJIE1vY2tzCiAgdXNlczogdGlkdXNqYXIvd2lyZW1vY2stb3BlbmFwaS12YWxpZGF0b3JAdjEKICB3aXRoOgogICAgb3BlbmFwaS1wYXRoOiAnc3BlY3Mvb3JkZXJzLWFwaS55bWwnCiAgICB3aXJlbW9jay1wYXRoOiAnbW9ja3Mvb3JkZXJzJwpgYGAKCiMjIyBMb2NhbCBEZXZlbG9wbWVudCAvIFRlc3RpbmcKCldoZW4gdGVzdGluZyB0aGUgYWN0aW9uIGxvY2FsbHkgb3IgdXNpbmcgYSBjdXN0b20tYnVpbHQgdmVyc2lvbjoKCmBgYHlhbWwKLSBuYW1lOiBCdWlsZCBUb29sIExvY2FsbHkKICBydW46IHwKICAgIGNkIHNyYwogICAgZG90bmV0IGJ1aWxkIC0tY29uZmlndXJhdGlvbiBSZWxlYXNlCiAgICBkb3RuZXQgcGFjayAtLWNvbmZpZ3VyYXRpb24gUmVsZWFzZSAtLW91dHB1dCAuL251cGtnCgotIG5hbWU6IEluc3RhbGwgTG9jYWwgVG9vbAogIHJ1bjogfAogICAgZG90bmV0IHRvb2wgaW5zdGFsbCAtLWdsb2JhbCAtLWFkZC1zb3VyY2UgLi9zcmMvbnVwa2cgV2lyZW1vY2suT3BlbkFQSVZhbGlkYXRvcgoKLSBuYW1lOiBWYWxpZGF0ZSB3aXRoIExvY2FsIEFjdGlvbgogIHVzZXM6IC4vICAjIG9yIHRpZHVzamFyL3dpcmVtb2NrLW9wZW5hcGktdmFsaWRhdG9yQGJyYW5jaC1uYW1lCiAgd2l0aDoKICAgIG9wZW5hcGktcGF0aDogJ29wZW5hcGkueW1sJwogICAgd2lyZW1vY2stcGF0aDogJ21hcHBpbmdzJwogICAgc2tpcC1pbnN0YWxsOiB0cnVlICAjIERvbid0IG92ZXJ3cml0ZSBvdXIgbG9jYWwgYnVpbGQhCmBgYAoKIyMjIE1hdHJpeCBTdHJhdGVneQoKVmFsaWRhdGUgbXVsdGlwbGUgZW52aXJvbm1lbnRzOgoKYGBgeWFtbApzdHJhdGVneToKICBtYXRyaXg6CiAgICBlbnZpcm9ubWVudDogW2Rldiwgc3RhZ2luZywgcHJvZF0KCnN0ZXBzOgogIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2NAoKICAtIG5hbWU6IFZhbGlkYXRlICR7eyBtYXRyaXguZW52aXJvbm1lbnQgfX0gTW9ja3MKICAgIHVzZXM6IHRpZHVzamFyL3dpcmVtb2NrLW9wZW5hcGktdmFsaWRhdG9yQHYxCiAgICB3aXRoOgogICAgICBvcGVuYXBpLXBhdGg6ICdzcGVjcy8ke3sgbWF0cml4LmVudmlyb25tZW50IH19L2FwaS55bWwnCiAgICAgIHdpcmVtb2NrLXBhdGg6ICdtb2Nrcy8ke3sgbWF0cml4LmVudmlyb25tZW50IH19JwpgYGAKCiMjIENMSSBUb29sCgpUaGlzIGFjdGlvbiBpcyBidWlsdCBvbiB0aGUgV2lyZU1vY2sgT3BlbkFQSSBWYWxpZGF0b3IgQ0xJIHRvb2wuIFlvdSBjYW4gYWxzbyB1c2UgdGhlIENMSSBsb2NhbGx5OgoKYGBgYmFzaAojIEluc3RhbGwgZ2xvYmFsbHkKZG90bmV0IHRvb2wgaW5zdGFsbCAtLWdsb2JhbCBXaXJlbW9jay5PcGVuQVBJVmFsaWRhdG9yCgojIFJ1biB2YWxpZGF0aW9uCndpcmVtb2Nrb3BlbmFwaSAtbyBvcGVuYXBpLnltbCAtdyBtYXBwaW5ncy8KCiMgV2l0aCBvcHRpb25zCndpcmVtb2Nrb3BlbmFwaSAtbyBhcGkueW1sIC13IG1hcHBpbmdzLyAtLWZvcm1hdCBqc29uIC0tcXVpZXQKYGBgCgojIyMgQ0xJIE9wdGlvbnMKCi0gYC0tZm9ybWF0YDogT3V0cHV0IGZvcm1hdCAoYGNvbnNvbGVgLCBganNvbmAsIGBqdW5pdGAsIGBnaXRodWJgKQotIGAtLW91dHB1dC1maWxlYDogV3JpdGUgcmVzdWx0cyB0byBhIGZpbGUKLSBgLS1xdWlldGA6IFN1cHByZXNzIGJhbm5lciBhbmQgY2hhcnRzCi0gYC0tbm8tY29sb3JgOiBEaXNhYmxlIGNvbG9yZWQgb3V0cHV0CgojIyBSZXF1aXJlbWVudHMKCi0gLk5FVCAxMC4wIFNESyAoYXV0b21hdGljYWxseSBpbnN0YWxsZWQgYnkgdGhlIGFjdGlvbikKLSBXaXJlTW9jayBtYXBwaW5nIGZpbGVzIGluIEpTT04gZm9ybWF0Ci0gT3BlbkFQSSAzLnggc3BlY2lmaWNhdGlvbiAoWUFNTCBvciBKU09OKQoKIyMgVHJvdWJsZXNob290aW5nCgojIyMgQWN0aW9uIGZhaWxzIHdpdGggInRvb2wgbm90IGZvdW5kIgoKVGhlIGFjdGlvbiBhdXRvbWF0aWNhbGx5IGluc3RhbGxzIHRoZSB0b29sLiBJZiB5b3UgZW5jb3VudGVyIGlzc3VlcywgZW5zdXJlOgotIFlvdXIgcnVubmVyIGhhcyAuTkVUIDEwLjAgU0RLIGF2YWlsYWJsZQotIFRoZSB0b29sIGluc3RhbGxhdGlvbiBzdGVwIGNvbXBsZXRlcyBzdWNjZXNzZnVsbHkKCiMjIyBQUiBjb21tZW50IG5vdCBwb3N0ZWQKCkNoZWNrIHRoYXQ6Ci0gVGhlIHdvcmtmbG93IGlzIHRyaWdnZXJlZCBieSBhIGBwdWxsX3JlcXVlc3RgIGV2ZW50Ci0gVGhlIGBnaXRodWItdG9rZW5gIGlucHV0IGhhcyBwZXJtaXNzaW9ucyB0byBjb21tZW50IG9uIFBScwotIGBwb3N0LWNvbW1lbnRgIGlzIHNldCB0byBgdHJ1ZWAgKGRlZmF1bHQpCgojIyMgVmFsaWRhdGlvbiBmYWlscyBsb2NhbGx5IGJ1dCBwYXNzZXMgaW4gQ0kKCkVuc3VyZSB5b3UncmUgdXNpbmcgdGhlIHNhbWUgdmVyc2lvbiBvZiB0aGUgdG9vbDoKYGBgYmFzaApkb3RuZXQgdG9vbCB1cGRhdGUgLS1nbG9iYWwgV2lyZW1vY2suT3BlbkFQSVZhbGlkYXRvcgpgYGAKCiMjIENvbnRyaWJ1dGluZwoKSXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzIGFyZSB3ZWxjb21lISBTZWUgW0NPTlRSSUJVVElORy5tZF0oQ09OVFJJQlVUSU5HLm1kKSBmb3IgZ3VpZGVsaW5lcy4KCiMjIExpY2Vuc2UKCltNSVQgTGljZW5zZV0oTElDRU5TRSkKCi0tLQoKQnVpbHQgd2l0aCDinaTvuI8gZm9yIHRlYW1zIHVzaW5nIFdpcmVNb2NrIGFuZCBPcGVuQVBJCg== readmeEtag: '"1d0ba0e808aa516ff8b20ed3cad381c3bce7a360"' readmeLastModified: Thu, 13 Nov 2025 16:05:49 GMT repositoryId: 508230905 description: Validate your Wiremock mappings against an OpenAPI spec created: '2022-06-28T09:14:13Z' updated: '2025-11-24T14:10:38Z' language: C# archived: false stars: 5 watchers: 1 forks: 0 owner: tidusjar logo: https://avatars.githubusercontent.com/u/6642220?v=4 license: GPL-3.0 repoEtag: '"14cbbf399416a494610b96334ecddaed84f91647fe6e39f588ff6376b817999d"' repoLastModified: Mon, 24 Nov 2025 14:10:38 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/simonit/vcita-platform-java-sdk v3: true repositoryMetadata: base64Readme: >- IyB2Y2l0YS1wbGF0Zm9ybS1qYXZhLXNkawoKUGxhdGZvcm0gQVBJCi0gQVBJIHZlcnNpb246IHYyLjAKCk5vIGRlc2NyaXB0aW9uIHByb3ZpZGVkIChnZW5lcmF0ZWQgYnkgT3BlbmFwaSBHZW5lcmF0b3IgaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvcikKCgoqQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhlIFtPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKSoKCgojIyBSZXF1aXJlbWVudHMKCkJ1aWxkaW5nIHRoZSBBUEkgY2xpZW50IGxpYnJhcnkgcmVxdWlyZXM6CjEuIEphdmEgMS44KwoyLiBNYXZlbiAoMy44LjMrKS9HcmFkbGUgKDcuMispCgojIyBJbnN0YWxsYXRpb24KClRvIGluc3RhbGwgdGhlIEFQSSBjbGllbnQgbGlicmFyeSB0byB5b3VyIGxvY2FsIE1hdmVuIHJlcG9zaXRvcnksIHNpbXBseSBleGVjdXRlOgoKYGBgc2hlbGwKbXZuIGNsZWFuIGluc3RhbGwKYGBgCgpUbyBkZXBsb3kgaXQgdG8gYSByZW1vdGUgTWF2ZW4gcmVwb3NpdG9yeSBpbnN0ZWFkLCBjb25maWd1cmUgdGhlIHNldHRpbmdzIG9mIHRoZSByZXBvc2l0b3J5IGFuZCBleGVjdXRlOgoKYGBgc2hlbGwKbXZuIGNsZWFuIGRlcGxveQpgYGAKClJlZmVyIHRvIHRoZSBbT1NTUkggR3VpZGVdKGh0dHA6Ly9jZW50cmFsLnNvbmF0eXBlLm9yZy9wYWdlcy9vc3NyaC1ndWlkZS5odG1sKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiMjIyBNYXZlbiB1c2VycwoKQWRkIHRoaXMgZGVwZW5kZW5jeSB0byB5b3VyIHByb2plY3QncyBQT006CgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgPGdyb3VwSWQ+Y29tLnZjaXRhLnBsYXRmb3JtPC9ncm91cElkPgogIDxhcnRpZmFjdElkPnZjaXRhLXBsYXRmb3JtLWphdmEtc2RrPC9hcnRpZmFjdElkPgogIDx2ZXJzaW9uPnYyLjA8L3ZlcnNpb24+CiAgPHNjb3BlPmNvbXBpbGU8L3Njb3BlPgo8L2RlcGVuZGVuY3k+CmBgYAoKIyMjIEdyYWRsZSB1c2VycwoKQWRkIHRoaXMgZGVwZW5kZW5jeSB0byB5b3VyIHByb2plY3QncyBidWlsZCBmaWxlOgoKYGBgZ3Jvb3Z5CiAgcmVwb3NpdG9yaWVzIHsKICAgIG1hdmVuQ2VudHJhbCgpICAgICAvLyBOZWVkZWQgaWYgdGhlICd2Y2l0YS1wbGF0Zm9ybS1qYXZhLXNkaycgamFyIGhhcyBiZWVuIHB1Ymxpc2hlZCB0byBtYXZlbiBjZW50cmFsLgogICAgbWF2ZW5Mb2NhbCgpICAgICAgIC8vIE5lZWRlZCBpZiB0aGUgJ3ZjaXRhLXBsYXRmb3JtLWphdmEtc2RrJyBqYXIgaGFzIGJlZW4gcHVibGlzaGVkIHRvIHRoZSBsb2NhbCBtYXZlbiByZXBvLgogIH0KCiAgZGVwZW5kZW5jaWVzIHsKICAgICBpbXBsZW1lbnRhdGlvbiAiY29tLnZjaXRhLnBsYXRmb3JtOnZjaXRhLXBsYXRmb3JtLWphdmEtc2RrOnYyLjAiCiAgfQpgYGAKCiMjIyBPdGhlcnMKCkF0IGZpcnN0IGdlbmVyYXRlIHRoZSBKQVIgYnkgZXhlY3V0aW5nOgoKYGBgc2hlbGwKbXZuIGNsZWFuIHBhY2thZ2UKYGBgCgpUaGVuIG1hbnVhbGx5IGluc3RhbGwgdGhlIGZvbGxvd2luZyBKQVJzOgoKKiBgdGFyZ2V0L3ZjaXRhLXBsYXRmb3JtLWphdmEtc2RrLXYyLjAuamFyYAoqIGB0YXJnZXQvbGliLyouamFyYAoKIyMgR2V0dGluZyBTdGFydGVkCgpQbGVhc2UgZm9sbG93IHRoZSBbaW5zdGFsbGF0aW9uXSgjaW5zdGFsbGF0aW9uKSBpbnN0cnVjdGlvbiBhbmQgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIEphdmEgY29kZToKCmBgYGphdmEKCi8vIEltcG9ydCBjbGFzc2VzOgppbXBvcnQgY29tLnZjaXRhLnBsYXRmb3JtLmNsaWVudC5BcGlDbGllbnQ7CmltcG9ydCBjb20udmNpdGEucGxhdGZvcm0uY2xpZW50LkFwaUV4Y2VwdGlvbjsKaW1wb3J0IGNvbS52Y2l0YS5wbGF0Zm9ybS5jbGllbnQuQ29uZmlndXJhdGlvbjsKaW1wb3J0IGNvbS52Y2l0YS5wbGF0Zm9ybS5jbGllbnQuYXV0aC4qOwppbXBvcnQgY29tLnZjaXRhLnBsYXRmb3JtLmNsaWVudC5tb2RlbHMuKjsKaW1wb3J0IGNvbS52Y2l0YS5wbGF0Zm9ybS5jbGllbnQuYXBpLkFwcGxpY2F0aW9uc0FwaTsKCnB1YmxpYyBjbGFzcyBFeGFtcGxlIHsKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICBBcGlDbGllbnQgZGVmYXVsdENsaWVudCA9IENvbmZpZ3VyYXRpb24uZ2V0RGVmYXVsdEFwaUNsaWVudCgpOwogICAgZGVmYXVsdENsaWVudC5zZXRCYXNlUGF0aCgiaHR0cDovL2FwaS52Y2l0YS5iaXovcGxhdGZvcm0vdjEiKTsKICAgIAogICAgLy8gQ29uZmlndXJlIE9BdXRoMiBhY2Nlc3MgdG9rZW4gZm9yIGF1dGhvcml6YXRpb246IGRlZmF1bHQKICAgIE9BdXRoIGRlZmF1bHQgPSAoT0F1dGgpIGRlZmF1bHRDbGllbnQuZ2V0QXV0aGVudGljYXRpb24oImRlZmF1bHQiKTsKICAgIGRlZmF1bHQuc2V0QWNjZXNzVG9rZW4oIllPVVIgQUNDRVNTIFRPS0VOIik7CgogICAgQXBwbGljYXRpb25zQXBpIGFwaUluc3RhbmNlID0gbmV3IEFwcGxpY2F0aW9uc0FwaShkZWZhdWx0Q2xpZW50KTsKICAgIFN0cmluZyBhdXRob3JpemF0aW9uID0gImF1dGhvcml6YXRpb25fZXhhbXBsZSI7IC8vIFN0cmluZyB8IEFQSSBUb2tlbi4gVGhlIHJlc3VsdGluZyBoZWFkZXIgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOiAnQXV0aG9yaXphdGlvbjogXCJCZWFyZXIgQVBJX1RPS0VOXCInCiAgICB0cnkgewogICAgICBBcHBzR2V0MjAxUmVzcG9uc2UgcmVzdWx0ID0gYXBpSW5zdGFuY2UuYXBwc0dldChhdXRob3JpemF0aW9uKTsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKHJlc3VsdCk7CiAgICB9IGNhdGNoIChBcGlFeGNlcHRpb24gZSkgewogICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkV4Y2VwdGlvbiB3aGVuIGNhbGxpbmcgQXBwbGljYXRpb25zQXBpI2FwcHNHZXQiKTsKICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJTdGF0dXMgY29kZTogIiArIGUuZ2V0Q29kZSgpKTsKICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJSZWFzb246ICIgKyBlLmdldFJlc3BvbnNlQm9keSgpKTsKICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJSZXNwb25zZSBoZWFkZXJzOiAiICsgZS5nZXRSZXNwb25zZUhlYWRlcnMoKSk7CiAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CiAgICB9CiAgfQp9CgpgYGAKCiMjIERvY3VtZW50YXRpb24gZm9yIEFQSSBFbmRwb2ludHMKCkFsbCBVUklzIGFyZSByZWxhdGl2ZSB0byAqaHR0cDovL2FwaS52Y2l0YS5iaXovcGxhdGZvcm0vdjEqCgpDbGFzcyB8IE1ldGhvZCB8IEhUVFAgcmVxdWVzdCB8IERlc2NyaXB0aW9uCi0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLQoqQXBwbGljYXRpb25zQXBpKiB8IFsqKmFwcHNHZXQqKl0oZG9jcy9BcHBsaWNhdGlvbnNBcGkubWQjYXBwc0dldCkgfCAqKkdFVCoqIC9hcHBzIHwgTGlzdCBvZiBhcHBzCipBcHBsaWNhdGlvbnNBcGkqIHwgWyoqYXBwc0lkQXNzaWduUG9zdCoqXShkb2NzL0FwcGxpY2F0aW9uc0FwaS5tZCNhcHBzSWRBc3NpZ25Qb3N0KSB8ICoqUE9TVCoqIC9hcHBzL3tpZH0vYXNzaWduIHwgQXNzaWduIGFuIGFwcCBvbiBkaXJlY3Rvcnkgb3IgYSBidXNpbmVzcyBbSW50ZXJuYWxdCipBcHBsaWNhdGlvbnNBcGkqIHwgWyoqYXBwc0lkR2V0KipdKGRvY3MvQXBwbGljYXRpb25zQXBpLm1kI2FwcHNJZEdldCkgfCAqKkdFVCoqIC9hcHBzL3tpZH0gfCBSZWFkIGFuIGFwcAoqQXBwbGljYXRpb25zQXBpKiB8IFsqKmFwcHNJZEluc3RhbGxBcHBQb3N0KipdKGRvY3MvQXBwbGljYXRpb25zQXBpLm1kI2FwcHNJZEluc3RhbGxBcHBQb3N0KSB8ICoqUE9TVCoqIC9hcHBzL3tpZH0vaW5zdGFsbF9hcHAgfCBJbnN0YWxsIGFuIGFwcCBbSW50ZXJuYWxdCipBcHBsaWNhdGlvbnNBcGkqIHwgWyoqYXBwc0lkUHV0KipdKGRvY3MvQXBwbGljYXRpb25zQXBpLm1kI2FwcHNJZFB1dCkgfCAqKlBVVCoqIC9hcHBzL3tpZH0gfCBVcGRhdGVzIGFuIGFwcAoqQXBwbGljYXRpb25zQXBpKiB8IFsqKmFwcHNJZFVuYXNzaWduUG9zdCoqXShkb2NzL0FwcGxpY2F0aW9uc0FwaS5tZCNhcHBzSWRVbmFzc2lnblBvc3QpIHwgKipQT1NUKiogL2FwcHMve2lkfS91bmFzc2lnbiB8IFVuYXNzaWduIGFuIGFwcCBvbiBkaXJlY3Rvcnkgb3IgYSBidXNpbmVzcyBbSW50ZXJuYWxdCipBcHBsaWNhdGlvbnNBcGkqIHwgWyoqYXBwc0lkVW5pbnN0YWxsQXBwUG9zdCoqXShkb2NzL0FwcGxpY2F0aW9uc0FwaS5tZCNhcHBzSWRVbmluc3RhbGxBcHBQb3N0KSB8ICoqUE9TVCoqIC9hcHBzL3tpZH0vdW5pbnN0YWxsX2FwcCB8IFVuaW5zdGFsbCBhbiBhcHAgW0ludGVybmFsXQoqQXBwbGljYXRpb25zQXBpKiB8IFsqKmFwcHNQb3N0KipdKGRvY3MvQXBwbGljYXRpb25zQXBpLm1kI2FwcHNQb3N0KSB8ICoqUE9TVCoqIC9hcHBzIHwgQ3JlYXRlcyBhbiBhcHAKKkFwcG9pbnRtZW50c0FwaSogfCBbKipnbG9iYWxBcHBvaW50bWVudHNHZXQqKl0oZG9jcy9BcHBvaW50bWVudHNBcGkubWQjZ2xvYmFsQXBwb2ludG1lbnRzR2V0KSB8ICoqR0VUKiogL2dsb2JhbC9hcHBvaW50bWVudHMgfCBHZXQgYXBwb2ludG1lbnRzIGxpc3QKKkFwcG9pbnRtZW50c0FwaSogfCBbKipzY2hlZHVsaW5nQXBwb2ludG1lbnRzQXBwb2ludG1lbnRJZEdldCoqXShkb2NzL0FwcG9pbnRtZW50c0FwaS5tZCNzY2hlZHVsaW5nQXBwb2ludG1lbnRzQXBwb2ludG1lbnRJZEdldCkgfCAqKkdFVCoqIC9zY2hlZHVsaW5nL2FwcG9pbnRtZW50cy97YXBwb2ludG1lbnRfaWR9IHwgR2V0IEFwcG9pbnRtZW50CipBcHBvaW50bWVudHNBcGkqIHwgWyoqc2NoZWR1bGluZ0FwcG9pbnRtZW50c0dldCoqXShkb2NzL0FwcG9pbnRtZW50c0FwaS5tZCNzY2hlZHVsaW5nQXBwb2ludG1lbnRzR2V0KSB8ICoqR0VUKiogL3NjaGVkdWxpbmcvYXBwb2ludG1lbnRzIHwgR2V0IEFwcG9pbnRtZW50cyBMaXN0CipBdmFpbGFiaWxpdHlBcGkqIHwgWyoqc2VydmljZXNTZXJ2aWNlSWRBdmFpbGFiaWxpdHlHZXQqKl0oZG9jcy9BdmFpbGFiaWxpdHlBcGkubWQjc2VydmljZXNTZXJ2aWNlSWRBdmFpbGFiaWxpdHlHZXQpIHwgKipHRVQqKiAvc2VydmljZXMve3NlcnZpY2VfaWR9L2F2YWlsYWJpbGl0eSB8IEdldCBTZXJ2aWNlIGF2YWlsYWJpbGl0eSBCeSBJRCBbQWxwaGFdCipCb29raW5nc0FwaSogfCBbKipzY2hlZHVsaW5nQm9va2luZ3NCb29raW5nVWlkVXBkYXRlUnN2cFN0YXRlUHV0KipdKGRvY3MvQm9va2luZ3NBcGkubWQjc2NoZWR1bGluZ0Jvb2tpbmdzQm9va2luZ1VpZFVwZGF0ZVJzdnBTdGF0ZVB1dCkgfCAqKlBVVCoqIC9zY2hlZHVsaW5nL2Jvb2tpbmdzL3tib29raW5nX3VpZH0vdXBkYXRlX3JzdnBfc3RhdGUgfCBVcGRhdGUgUlNWUCBzdGF0ZQoqQm9va2luZ3NBcGkqIHwgWyoqc2NoZWR1bGluZ0Jvb2tpbmdzQ2FuY2VsUG9zdCoqXShkb2NzL0Jvb2tpbmdzQXBpLm1kI3NjaGVkdWxpbmdCb29raW5nc0NhbmNlbFBvc3QpIHwgKipQT1NUKiogL3NjaGVkdWxpbmcvYm9va2luZ3MvY2FuY2VsIHwgQ2FuY2VsIGEgQm9va2luZyBbQWxwaGFdCipCb29raW5nc0FwaSogfCBbKipzY2hlZHVsaW5nQm9va2luZ3NHZXQqKl0oZG9jcy9Cb29raW5nc0FwaS5tZCNzY2hlZHVsaW5nQm9va2luZ3NHZXQpIHwgKipHRVQqKiAvc2NoZWR1bGluZy9ib29raW5ncyB8IEdldCBCb29raW5ncyBbQWxwaGFdIAoqQm9va2luZ3NBcGkqIHwgWyoqc2NoZWR1bGluZ0Jvb2tpbmdzUG9zdCoqXShkb2NzL0Jvb2tpbmdzQXBpLm1kI3NjaGVkdWxpbmdCb29raW5nc1Bvc3QpIHwgKipQT1NUKiogL3NjaGVkdWxpbmcvYm9va2luZ3MgfCBDcmVhdGUgTmV3IEJvb2tpbmcgW0FscGhhXQoqQm9va2luZ3NBcGkqIHwgWyoqc2NoZWR1bGluZ1dhaXRsaXN0Q2FuY2VsUHV0KipdKGRvY3MvQm9va2luZ3NBcGkubWQjc2NoZWR1bGluZ1dhaXRsaXN0Q2FuY2VsUHV0KSB8ICoqUFVUKiogL3NjaGVkdWxpbmcvd2FpdGxpc3QvY2FuY2VsIHwgQ2FuY2VsIGEgV2FpdGxpc3QgcmVnaXN0cmF0aW9uCipCb29raW5nc0FwaSogfCBbKipzY2hlZHVsaW5nV2FpdGxpc3RQb3N0KipdKGRvY3MvQm9va2luZ3NBcGkubWQjc2NoZWR1bGluZ1dhaXRsaXN0UG9zdCkgfCAqKlBPU1QqKiAvc2NoZWR1bGluZy93YWl0bGlzdCB8IENyZWF0ZSBldmVudCBXYWl0bGlzdAoqQnVzaW5lc3NBcGkqIHwgWyoqYnVzaW5lc3Nlc0J1c2luZXNzSWRGZWF0dXJlc0dldCoqXShkb2NzL0J1c2luZXNzQXBpLm1kI2J1c2luZXNzZXNCdXNpbmVzc0lkRmVhdHVyZXNHZXQpIHwgKipHRVQqKiAvYnVzaW5lc3Nlcy97YnVzaW5lc3NfaWR9L2ZlYXR1cmVzIHwgR2V0IEJ1c2luZXNzIEZlYXR1cmVzCipCdXNpbmVzc0FwaSogfCBbKipidXNpbmVzc2VzQnVzaW5lc3NJZEdldCoqXShkb2NzL0J1c2luZXNzQXBpLm1kI2J1c2luZXNzZXNCdXNpbmVzc0lkR2V0KSB8ICoqR0VUKiogL2J1c2luZXNzZXMve2J1c2luZXNzX2lkfSB8IEdldCBCdXNpbmVzcwoqQnVzaW5lc3NBcGkqIHwgWyoqYnVzaW5lc3Nlc0J1c2luZXNzSWRQb3N0KipdKGRvY3MvQnVzaW5lc3NBcGkubWQjYnVzaW5lc3Nlc0J1c2luZXNzSWRQb3N0KSB8ICoqUE9TVCoqIC9idXNpbmVzc2VzL3tidXNpbmVzc19pZH0gfCBVcGRhdGUgQnVzaW5lc3MKKkJ1c2luZXNzQXBpKiB8IFsqKmJ1c2luZXNzZXNHZXQqKl0oZG9jcy9CdXNpbmVzc0FwaS5tZCNidXNpbmVzc2VzR2V0KSB8ICoqR0VUKiogL2J1c2luZXNzZXMgfCBHZXQgQnVzaW5lc3MgZmlsdGVyZWQgYnkgZW1haWwgb3IgZXh0ZXJuYWxfaWQKKkJ1c2luZXNzQXBpKiB8IFsqKmJ1c2luZXNzZXNQb3N0KipdKGRvY3MvQnVzaW5lc3NBcGkubWQjYnVzaW5lc3Nlc1Bvc3QpIHwgKipQT1NUKiogL2J1c2luZXNzZXMgfCBDcmVhdGUgYSBCdXNpbmVzcwoqQnVzaW5lc3NBcGkqIHwgWyoqYnVzaW5lc3Nlc1ZhbGlkYXRlTG9naW5HZXQqKl0oZG9jcy9CdXNpbmVzc0FwaS5tZCNidXNpbmVzc2VzVmFsaWRhdGVMb2dpbkdldCkgfCAqKkdFVCoqIC9idXNpbmVzc2VzL3ZhbGlkYXRlX2xvZ2luIHwgVmFsaWRhdGUgTG9naW4KKkJ1c2luZXNzQXBpKiB8IFsqKmdsb2JhbEJ1c2luZXNzZXNHZXQqKl0oZG9jcy9CdXNpbmVzc0FwaS5tZCNnbG9iYWxCdXNpbmVzc2VzR2V0KSB8ICoqR0VUKiogL2dsb2JhbC9idXNpbmVzc2VzIHwgR2V0cyBhIGxpc3Qgb2YgYnVzaW5lc3NlcwoqQ2FyZEFwaSogfCBbKipwYXltZW50Q2FyZHNTeW5jQ2FyZFBvc3QqKl0oZG9jcy9DYXJkQXBpLm1kI3BheW1lbnRDYXJkc1N5bmNDYXJkUG9zdCkgfCAqKlBPU1QqKiAvcGF5bWVudC9jYXJkcy9zeW5jX2NhcmQgfCBDcmVhdGUgc3luYyBjYXJkCipDYXRlZ29yaWVzQXBpKiB8IFsqKmNhdGVnb3JpZXNHZXQqKl0oZG9jcy9DYXRlZ29yaWVzQXBpLm1kI2NhdGVnb3JpZXNHZXQpIHwgKipHRVQqKiAvY2F0ZWdvcmllcyB8IEdldCBDYXRlZ29yaWVzIFtBbHBoYV0KKkNsaWVudFBhY2thZ2VzQXBpKiB8IFsqKmNsaWVudHNDbGllbnRJZFBheW1lbnRDbGllbnRQYWNrYWdlc0dldCoqXShkb2NzL0NsaWVudFBhY2thZ2VzQXBpLm1kI2NsaWVudHNDbGllbnRJZFBheW1lbnRDbGllbnRQYWNrYWdlc0dldCkgfCAqKkdFVCoqIC9jbGllbnRzL3tjbGllbnRfaWR9L3BheW1lbnQvY2xpZW50X3BhY2thZ2VzIHwgR2V0IENsaWVudCBQYWNrYWdlcyBMaXN0IE9mIENsaWVudCBbQWxwaGFdCipDbGllbnRQYWNrYWdlc0FwaSogfCBbKipjbGllbnRzUGF5bWVudENsaWVudFBhY2thZ2VzVXBkYXRlVXNhZ2VQb3N0KipdKGRvY3MvQ2xpZW50UGFja2FnZXNBcGkubWQjY2xpZW50c1BheW1lbnRDbGllbnRQYWNrYWdlc1VwZGF0ZVVzYWdlUG9zdCkgfCAqKlBPU1QqKiAvY2xpZW50cy9wYXltZW50L2NsaWVudF9wYWNrYWdlcy91cGRhdGVfdXNhZ2UgfCBVc2UgQ2xpZW50IFBhY2thZ2UgQ3JlZGl0IFtBbHBoYV0KKkNsaWVudFBhY2thZ2VzQXBpKiB8IFsqKmNsaWVudHNQYXltZW50Q2xpZW50UGFja2FnZXNWYWxpZGF0ZUdldCoqXShkb2NzL0NsaWVudFBhY2thZ2VzQXBpLm1kI2NsaWVudHNQYXltZW50Q2xpZW50UGFja2FnZXNWYWxpZGF0ZUdldCkgfCAqKkdFVCoqIC9jbGllbnRzL3BheW1lbnQvY2xpZW50X3BhY2thZ2VzL3ZhbGlkYXRlIHwgVmFsaWRhdGUgQ2xpZW50IFBhY2thZ2UgaGFzIHJlZGVtcHRpb24gW0FscGhhXQoqQ2xpZW50UGFja2FnZXNBcGkqIHwgWyoqcGF5bWVudENsaWVudFBhY2thZ2VzUG9zdCoqXShkb2NzL0NsaWVudFBhY2thZ2VzQXBpLm1kI3BheW1lbnRDbGllbnRQYWNrYWdlc1Bvc3QpIHwgKipQT1NUKiogL3BheW1lbnQvY2xpZW50X3BhY2thZ2VzIHwgQWRkIHBhY2thZ2UgdG8gY2xpZW50IFtBbHBoYV0KKkNsaWVudFBhY2thZ2VzQXBpKiB8IFsqKnBheW1lbnRDbGllbnRQYWNrYWdlc1VwZGF0ZVVzYWdlUG9zdCoqXShkb2NzL0NsaWVudFBhY2thZ2VzQXBpLm1kI3BheW1lbnRDbGllbnRQYWNrYWdlc1VwZGF0ZVVzYWdlUG9zdCkgfCAqKlBPU1QqKiAvcGF5bWVudC9jbGllbnRfcGFja2FnZXMvdXBkYXRlX3VzYWdlIHwgVXNlIENsaWVudCBQYWNrYWdlIENyZWRpdCBbQWxwaGFdCipDbGllbnRzQXBpKiB8IFsqKmNsaWVudHNDbGllbnRJZERlbGV0ZSoqXShkb2NzL0NsaWVudHNBcGkubWQjY2xpZW50c0NsaWVudElkRGVsZXRlKSB8ICoqREVMRVRFKiogL2NsaWVudHMve2NsaWVudF9pZH0gfCBEZWxldGVzIGEgQ2xpZW50IGJ5IElkCipDbGllbnRzQXBpKiB8IFsqKmNsaWVudHNDbGllbnRJZEdldCoqXShkb2NzL0NsaWVudHNBcGkubWQjY2xpZW50c0NsaWVudElkR2V0KSB8ICoqR0VUKiogL2NsaWVudHMve2NsaWVudF9pZH0gfCBSZXRyaWV2ZXMgYSBDbGllbnQgYnkgSWQKKkNsaWVudHNBcGkqIHwgWyoqY2xpZW50c0NsaWVudElkUHV0KipdKGRvY3MvQ2xpZW50c0FwaS5tZCNjbGllbnRzQ2xpZW50SWRQdXQpIHwgKipQVVQqKiAvY2xpZW50cy97Y2xpZW50X2lkfSB8IFVwZGF0ZXMgYSBDbGllbnQKKkNsaWVudHNBcGkqIHwgWyoqY2xpZW50c0dldCoqXShkb2NzL0NsaWVudHNBcGkubWQjY2xpZW50c0dldCkgfCAqKkdFVCoqIC9jbGllbnRzIHwgR2V0IENsaWVudHMKKkNsaWVudHNBcGkqIHwgWyoqY2xpZW50c1Bvc3QqKl0oZG9jcy9DbGllbnRzQXBpLm1kI2NsaWVudHNQb3N0KSB8ICoqUE9TVCoqIC9jbGllbnRzIHwgQ3JlYXRlIGEgQ2xpZW50CipDbGllbnRzQXBpKiB8IFsqKmdsb2JhbENsaWVudHNHZXQqKl0oZG9jcy9DbGllbnRzQXBpLm1kI2dsb2JhbENsaWVudHNHZXQpIHwgKipHRVQqKiAvZ2xvYmFsL2NsaWVudHMgfCBHZXRzIGEgbGlzdCBvZiBjbGllbnRzCipDb252ZXJzYXRpb25zQXBpKiB8IFsqKmNsaWVudHNDbGllbnRJZENvbnZlcnNhdGlvbnNHZXQqKl0oZG9jcy9Db252ZXJzYXRpb25zQXBpLm1kI2NsaWVudHNDbGllbnRJZENvbnZlcnNhdGlvbnNHZXQpIHwgKipHRVQqKiAvY2xpZW50cy97Y2xpZW50X2lkfS9jb252ZXJzYXRpb25zIHwgR2V0IENvbnZlcnNhdGlvbnMgRm9yIEEgQ2xpZW50CipDb252ZXJzYXRpb25zQXBpKiB8IFsqKmNvbnZlcnNhdGlvbnNHZXQqKl0oZG9jcy9Db252ZXJzYXRpb25zQXBpLm1kI2NvbnZlcnNhdGlvbnNHZXQpIHwgKipHRVQqKiAvY29udmVyc2F0aW9ucyB8IEdldCBDb252ZXJzYXRpb25zCipEb2N1bWVudHNBcGkqIHwgWyoqY2xpZW50c0NsaWVudElkRG9jdW1lbnRzR2V0KipdKGRvY3MvRG9jdW1lbnRzQXBpLm1kI2NsaWVudHNDbGllbnRJZERvY3VtZW50c0dldCkgfCAqKkdFVCoqIC9jbGllbnRzL3tjbGllbnRfaWR9L2RvY3VtZW50cyB8IEdldCBEb2N1bWVudHMgRm9yIEEgQ2xpZW50CipFc3RpbWF0ZXNBcGkqIHwgWyoqY2xpZW50c0NsaWVudElkRXN0aW1hdGVzR2V0KipdKGRvY3MvRXN0aW1hdGVzQXBpLm1kI2NsaWVudHNDbGllbnRJZEVzdGltYXRlc0dldCkgfCAqKkdFVCoqIC9jbGllbnRzL3tjbGllbnRfaWR9L2VzdGltYXRlcyB8IEdldCBFc3RpbWF0ZXMgT2YgQ2xpZW50CipFc3RpbWF0ZXNBcGkqIHwgWyoqZXN0aW1hdGVzR2V0KipdKGRvY3MvRXN0aW1hdGVzQXBpLm1kI2VzdGltYXRlc0dldCkgfCAqKkdFVCoqIC9lc3RpbWF0ZXMgfCBHZXQgRXN0aW1hdGVzIExpc3QKKkVzdGltYXRlc0FwaSogfCBbKiplc3RpbWF0ZXNQb3N0KipdKGRvY3MvRXN0aW1hdGVzQXBpLm1kI2VzdGltYXRlc1Bvc3QpIHwgKipQT1NUKiogL2VzdGltYXRlcyB8IENyZWF0ZSBOZXcgRXN0aW1hdGUKKkV2ZW50QXR0ZW5kYW5jZUFwaSogfCBbKipnbG9iYWxFdmVudEF0dGVuZGFuY2VzR2V0KipdKGRvY3MvRXZlbnRBdHRlbmRhbmNlQXBpLm1kI2dsb2JhbEV2ZW50QXR0ZW5kYW5jZXNHZXQpIHwgKipHRVQqKiAvZ2xvYmFsL2V2ZW50X2F0dGVuZGFuY2VzIHwgR2V0cyBhIGxpc3Qgb2YgZXZlbnQgYXR0ZW5kYW5jZXMKKkV2ZW50SW5zdGFuY2VBcGkqIHwgWyoqZ2xvYmFsRXZlbnRJbnN0YW5jZXNHZXQqKl0oZG9jcy9FdmVudEluc3RhbmNlQXBpLm1kI2dsb2JhbEV2ZW50SW5zdGFuY2VzR2V0KSB8ICoqR0VUKiogL2dsb2JhbC9ldmVudF9pbnN0YW5jZXMgfCBHZXRzIGEgbGlzdCBvZiBldmVudCBpbnN0YW5jZXMKKkV2ZW50SW5zdGFuY2VBcGkqIHwgWyoqc2NoZWR1bGluZ0V2ZW50SW5zdGFuY2VFdmVudEluc3RhbmNlSWRHZXQqKl0oZG9jcy9FdmVudEluc3RhbmNlQXBpLm1kI3NjaGVkdWxpbmdFdmVudEluc3RhbmNlRXZlbnRJbnN0YW5jZUlkR2V0KSB8ICoqR0VUKiogL3NjaGVkdWxpbmcvZXZlbnRfaW5zdGFuY2Uve2V2ZW50X2luc3RhbmNlX2lkfSB8IEdldCBFdmVudCBJbnN0YW5jZQoqRmllbGRzQXBpKiB8IFsqKmZpZWxkc0ZpZWxkSWREZWxldGUqKl0oZG9jcy9GaWVsZHNBcGkubWQjZmllbGRzRmllbGRJZERlbGV0ZSkgfCAqKkRFTEVURSoqIC9maWVsZHMve2ZpZWxkX2lkfSB8IERlbGV0ZXMgYSBGaWVsZAoqRmllbGRzQXBpKiB8IFsqKmZpZWxkc0ZpZWxkSWRHZXQqKl0oZG9jcy9GaWVsZHNBcGkubWQjZmllbGRzRmllbGRJZEdldCkgfCAqKkdFVCoqIC9maWVsZHMve2ZpZWxkX2lkfSB8IEdldCBGaWVsZAoqRmllbGRzQXBpKiB8IFsqKmZpZWxkc0ZpZWxkSWRQdXQqKl0oZG9jcy9GaWVsZHNBcGkubWQjZmllbGRzRmllbGRJZFB1dCkgfCAqKlBVVCoqIC9maWVsZHMve2ZpZWxkX2lkfSB8IFVwZGF0ZXMgYSBGaWVsZAoqRmllbGRzQXBpKiB8IFsqKmZpZWxkc0dldCoqXShkb2NzL0ZpZWxkc0FwaS5tZCNmaWVsZHNHZXQpIHwgKipHRVQqKiAvZmllbGRzIHwgR2V0IGFsbCBGaWVsZHMKKkZpZWxkc0FwaSogfCBbKipmaWVsZHNQb3N0KipdKGRvY3MvRmllbGRzQXBpLm1kI2ZpZWxkc1Bvc3QpIHwgKipQT1NUKiogL2ZpZWxkcyB8IENyZWF0ZSBhIE5ldyBGaWVsZAoqRm9ybXNBcGkqIHwgWyoqZm9ybXNHZXQqKl0oZG9jcy9Gb3Jtc0FwaS5tZCNmb3Jtc0dldCkgfCAqKkdFVCoqIC9mb3JtcyB8IEdldCBGb3JtcwoqRm9ybXNBcGkqIHwgWyoqZm9ybXNQdXQqKl0oZG9jcy9Gb3Jtc0FwaS5tZCNmb3Jtc1B1dCkgfCAqKlBVVCoqIC9mb3JtcyB8IFVwZGF0ZXMgYSBGb3JtCipHbG9iYWxBcGkqIHwgWyoqZ2xvYmFsQ2xpZW50UGFja2FnZXNHZXQqKl0oZG9jcy9HbG9iYWxBcGkubWQjZ2xvYmFsQ2xpZW50UGFja2FnZXNHZXQpIHwgKipHRVQqKiAvZ2xvYmFsL2NsaWVudF9wYWNrYWdlcyB8IEdldHMgYSBsaXN0IG9mIGNsaWVudCBwYWNrYWdlcwoqR2xvYmFsQXBpKiB8IFsqKmdsb2JhbENvbnZlcnNhdGlvbnNHZXQqKl0oZG9jcy9HbG9iYWxBcGkubWQjZ2xvYmFsQ29udmVyc2F0aW9uc0dldCkgfCAqKkdFVCoqIC9nbG9iYWwvY29udmVyc2F0aW9ucyB8IEdldHMgYSBsaXN0IG9mIGNvbnZlcnNhdGlvbnMKKkdsb2JhbEFwaSogfCBbKipnbG9iYWxFc3RpbWF0ZXNHZXQqKl0oZG9jcy9HbG9iYWxBcGkubWQjZ2xvYmFsRXN0aW1hdGVzR2V0KSB8ICoqR0VUKiogL2dsb2JhbC9lc3RpbWF0ZXMgfCBHZXRzIGEgbGlzdCBvZiBlc3RpbWF0ZXMKKkdsb2JhbEFwaSogfCBbKipnbG9iYWxJbnZvaWNlc0dldCoqXShkb2NzL0dsb2JhbEFwaS5tZCNnbG9iYWxJbnZvaWNlc0dldCkgfCAqKkdFVCoqIC9nbG9iYWwvaW52b2ljZXMgfCBHZXRzIGEgbGlzdCBvZiBpbnZvaWNlcwoqR2xvYmFsQXBpKiB8IFsqKmdsb2JhbE1hdHRlcnNHZXQqKl0oZG9jcy9HbG9iYWxBcGkubWQjZ2xvYmFsTWF0dGVyc0dldCkgfCAqKkdFVCoqIC9nbG9iYWwvbWF0dGVycyB8IEdldHMgYSBsaXN0IG9mIG1hdHRlcnMKKkdsb2JhbEFwaSogfCBbKipnbG9iYWxQYWNrYWdlc0dldCoqXShkb2NzL0dsb2JhbEFwaS5tZCNnbG9iYWxQYWNrYWdlc0dldCkgfCAqKkdFVCoqIC9nbG9iYWwvcGFja2FnZXMgfCBHZXRzIGEgbGlzdCBvZiBwYWNrYWdlcwoqR2xvYmFsQXBpKiB8IFsqKmdsb2JhbFByb2R1Y3RzR2V0KipdKGRvY3MvR2xvYmFsQXBpLm1kI2dsb2JhbFByb2R1Y3RzR2V0KSB8ICoqR0VUKiogL2dsb2JhbC9wcm9kdWN0cyB8IEdldHMgYSBsaXN0IG9mIHByb2R1Y3RzCipJbnZvaWNlc0FwaSogfCBbKipjbGllbnRzQ2xpZW50SWRJbnZvaWNlc0dldCoqXShkb2NzL0ludm9pY2VzQXBpLm1kI2NsaWVudHNDbGllbnRJZEludm9pY2VzR2V0KSB8ICoqR0VUKiogL2NsaWVudHMve2NsaWVudF9pZH0vaW52b2ljZXMgfCBHZXQgSW52b2ljZXMgT2YgQ2xpZW50CipJbnZvaWNlc0FwaSogfCBbKippbnZvaWNlc0dldCoqXShkb2NzL0ludm9pY2VzQXBpLm1kI2ludm9pY2VzR2V0KSB8ICoqR0VUKiogL2ludm9pY2VzIHwgR2V0IEludm9pY2VzIExpc3QKKkludm9pY2VzQXBpKiB8IFsqKmludm9pY2VzSW52b2ljZUlkR2V0KipdKGRvY3MvSW52b2ljZXNBcGkubWQjaW52b2ljZXNJbnZvaWNlSWRHZXQpIHwgKipHRVQqKiAvaW52b2ljZXMve2ludm9pY2VfaWR9IHwgR2V0IEludm9pY2UgQnkgSUQKKkludm9pY2VzQXBpKiB8IFsqKmludm9pY2VzUG9zdCoqXShkb2NzL0ludm9pY2VzQXBpLm1kI2ludm9pY2VzUG9zdCkgfCAqKlBPU1QqKiAvaW52b2ljZXMgfCBDcmVhdGUgTmV3IEludm9pY2UKKkxlYWRHZW5BcGkqIHwgWyoqbGVhZGdlblBvc3QqKl0oZG9jcy9MZWFkR2VuQXBpLm1kI2xlYWRnZW5Qb3N0KSB8ICoqUE9TVCoqIC9sZWFkZ2VuIHwgQ3JlYXRlcyBhIGxlYWQKKk1hcmtldGluZ0FwaSogfCBbKipnbG9iYWxDYW1wYWlnblJlY2lwaWVudHNHZXQqKl0oZG9jcy9NYXJrZXRpbmdBcGkubWQjZ2xvYmFsQ2FtcGFpZ25SZWNpcGllbnRzR2V0KSB8ICoqR0VUKiogL2dsb2JhbC9jYW1wYWlnbl9yZWNpcGllbnRzIHwgR2V0cyBhIGxpc3Qgb2YgY2FtcGFpZ24gcmVjaXBpZW50cwoqTWFya2V0aW5nQXBpKiB8IFsqKmdsb2JhbENhbXBhaWduc0dldCoqXShkb2NzL01hcmtldGluZ0FwaS5tZCNnbG9iYWxDYW1wYWlnbnNHZXQpIHwgKipHRVQqKiAvZ2xvYmFsL2NhbXBhaWducyB8IEdldHMgYSBsaXN0IG9mIGNhbXBhaWducwoqTWFya2V0aW5nQXBpKiB8IFsqKmdsb2JhbFNjaGVkdWxlZENhbXBhaWduc0dldCoqXShkb2NzL01hcmtldGluZ0FwaS5tZCNnbG9iYWxTY2hlZHVsZWRDYW1wYWlnbnNHZXQpIHwgKipHRVQqKiAvZ2xvYmFsL3NjaGVkdWxlZF9jYW1wYWlnbnMgfCBHZXRzIGEgbGlzdCBvZiBzY2hlZHVsZWQgY2FtcGFpZ25zCipNYXR0ZXJzQXBpKiB8IFsqKmNsaWVudHNNZXJnZXNNZXJnZUNsaWVudHNQdXQqKl0oZG9jcy9NYXR0ZXJzQXBpLm1kI2NsaWVudHNNZXJnZXNNZXJnZUNsaWVudHNQdXQpIHwgKipQVVQqKiAvY2xpZW50cy9tZXJnZXMvbWVyZ2VfY2xpZW50cyB8IE1lcmdlIGR1cGxpY2F0ZSBjbGllbnRzIGludG8gYSBwcmltYXJ5IGNsaWVudC4KKk1hdHRlcnNBcGkqIHwgWyoqY2xpZW50c01lcmdlc1Bvc3NpYmxlTWVyZ2VNYXN0ZXJHZXQqKl0oZG9jcy9NYXR0ZXJzQXBpLm1kI2NsaWVudHNNZXJnZXNQb3NzaWJsZU1lcmdlTWFzdGVyR2V0KSB8ICoqR0VUKiogL2NsaWVudHMvbWVyZ2VzL3Bvc3NpYmxlX21lcmdlX21hc3RlciB8IExpc3Qgb2YgY2xpZW50cyB0aGF0IGNhbiBiZSB1c2VkIGFzIHByaW1hcnkgZm9yIG1lcmdlLgoqTWVzc2FnZXNBcGkqIHwgWyoqbWVzc2FnZXNQb3N0KipdKGRvY3MvTWVzc2FnZXNBcGkubWQjbWVzc2FnZXNQb3N0KSB8ICoqUE9TVCoqIC9tZXNzYWdlcyB8IENyZWF0ZSBhIE1lc3NhZ2UKKlBhY2thZ2VzQXBpKiB8IFsqKnBheW1lbnRQYWNrYWdlc0dldCoqXShkb2NzL1BhY2thZ2VzQXBpLm1kI3BheW1lbnRQYWNrYWdlc0dldCkgfCAqKkdFVCoqIC9wYXltZW50L3BhY2thZ2VzIHwgR2V0IGFsbCBwYWNrYWdlIG9mIGJ1c2luZXNzCipQYWNrYWdlc0FwaSogfCBbKipwYXltZW50UGFja2FnZXNQYWNrYWdlSWRHZXQqKl0oZG9jcy9QYWNrYWdlc0FwaS5tZCNwYXltZW50UGFja2FnZXNQYWNrYWdlSWRHZXQpIHwgKipHRVQqKiAvcGF5bWVudC9wYWNrYWdlcy97cGFja2FnZV9pZH0gfCBTaG93IHBhY2thZ2UgaW5mbwoqUGFja2FnZXNBcGkqIHwgWyoqcGF5bWVudFBhY2thZ2VzUGFja2FnZUlkUHV0KipdKGRvY3MvUGFja2FnZXNBcGkubWQjcGF5bWVudFBhY2thZ2VzUGFja2FnZUlkUHV0KSB8ICoqUFVUKiogL3BheW1lbnQvcGFja2FnZXMve3BhY2thZ2VfaWR9IHwgVXBkYXRlIHBhY2thZ2UgW0FscGhhXQoqUGFja2FnZXNBcGkqIHwgWyoqcGF5bWVudFBhY2thZ2VzUG9zdCoqXShkb2NzL1BhY2thZ2VzQXBpLm1kI3BheW1lbnRQYWNrYWdlc1Bvc3QpIHwgKipQT1NUKiogL3BheW1lbnQvcGFja2FnZXMgfCBDcmVhdGUgUGFja2FnZSAKKlBheW1lbnRDaGVja291dEFwaSogfCBbKipwYXltZW50Q2hlY2tvdXRQdXQqKl0oZG9jcy9QYXltZW50Q2hlY2tvdXRBcGkubWQjcGF5bWVudENoZWNrb3V0UHV0KSB8ICoqUFVUKiogL3BheW1lbnQvY2hlY2tvdXQvIHwgU2VuZCBjaGVja291dCB1cGRhdGUgYnkgd2ViaG9vayAKKlBheW1lbnRDaGVja291dEFwaSogfCBbKipwYXltZW50Q2hlY2tvdXRVcmxLZXlHZXQqKl0oZG9jcy9QYXltZW50Q2hlY2tvdXRBcGkubWQjcGF5bWVudENoZWNrb3V0VXJsS2V5R2V0KSB8ICoqR0VUKiogL3BheW1lbnQvY2hlY2tvdXQve3VybF9rZXl9IHwgR2V0IE9wZW4gQ2hlY2tvdXQgRm9yIFNwZWNpZmljIHVybF9rZXkKKlBheW1lbnRTZXR0aW5nc0FwaSogfCBbKipwYXltZW50U2V0dGluZ3NHZXQqKl0oZG9jcy9QYXltZW50U2V0dGluZ3NBcGkubWQjcGF5bWVudFNldHRpbmdzR2V0KSB8ICoqR0VUKiogL3BheW1lbnQvc2V0dGluZ3MgfCBHZXQgQ3VycmVudCBQYXltZW50IFNldHRpbmdzCipQYXltZW50U2V0dGluZ3NBcGkqIHwgWyoqcGF5bWVudFNldHRpbmdzUG9zdCoqXShkb2NzL1BheW1lbnRTZXR0aW5nc0FwaS5tZCNwYXltZW50U2V0dGluZ3NQb3N0KSB8ICoqUE9TVCoqIC9wYXltZW50L3NldHRpbmdzIHwgVXBkYXRlIFBheW1lbnQgU2V0dGluZ3MKKlBheW1lbnRTdGF0dXNlc0FwaSogfCBbKipwYXltZW50U3RhdHVzZXNJZEFwcGx5Q291cG9uUHV0KipdKGRvY3MvUGF5bWVudFN0YXR1c2VzQXBpLm1kI3BheW1lbnRTdGF0dXNlc0lkQXBwbHlDb3Vwb25QdXQpIHwgKipQVVQqKiAvcGF5bWVudF9zdGF0dXNlcy97aWR9L2FwcGx5X2NvdXBvbiB8IEFwcGx5IENvdXBvbgoqUGF5bWVudFN0YXR1c2VzQXBpKiB8IFsqKnBheW1lbnRTdGF0dXNlc0lkVmFsaWRhdGVDb3Vwb25HZXQqKl0oZG9jcy9QYXltZW50U3RhdHVzZXNBcGkubWQjcGF5bWVudFN0YXR1c2VzSWRWYWxpZGF0ZUNvdXBvbkdldCkgfCAqKkdFVCoqIC9wYXltZW50X3N0YXR1c2VzL3tpZH0vdmFsaWRhdGVfY291cG9uIHwgVmFsaWRhdGUgQ291cG9uCipQYXltZW50c0FwaSogfCBbKipjbGllbnRzQ2xpZW50SWRQYXltZW50c0dldCoqXShkb2NzL1BheW1lbnRzQXBpLm1kI2NsaWVudHNDbGllbnRJZFBheW1lbnRzR2V0KSB8ICoqR0VUKiogL2NsaWVudHMve2NsaWVudF9pZH0vcGF5bWVudHMgfCBHZXQgUGF5bWVudHMgb2YgQ2xpZW50CipQYXltZW50c0FwaSogfCBbKipnbG9iYWxQYXltZW50c0dldCoqXShkb2NzL1BheW1lbnRzQXBpLm1kI2dsb2JhbFBheW1lbnRzR2V0KSB8ICoqR0VUKiogL2dsb2JhbC9wYXltZW50cyB8IEdldHMgYSBsaXN0IG9mIHBheW1lbnRzCipQYXltZW50c0FwaSogfCBbKipwYXltZW50c0dldCoqXShkb2NzL1BheW1lbnRzQXBpLm1kI3BheW1lbnRzR2V0KSB8ICoqR0VUKiogL3BheW1lbnRzIHwgR2V0IFBheW1lbnRzIExpc3QKKlBheW1lbnRzQXBpKiB8IFsqKnBheW1lbnRzUGF5bWVudFVpZE1hdGNoUG9zdCoqXShkb2NzL1BheW1lbnRzQXBpLm1kI3BheW1lbnRzUGF5bWVudFVpZE1hdGNoUG9zdCkgfCAqKlBPU1QqKiAvcGF5bWVudHMve3BheW1lbnRfdWlkfS9tYXRjaCB8IE1hdGNoIFBheW1lbnQKKlBheW1lbnRzQXBpKiB8IFsqKnBheW1lbnRzUG9zdCoqXShkb2NzL1BheW1lbnRzQXBpLm1kI3BheW1lbnRzUG9zdCkgfCAqKlBPU1QqKiAvcGF5bWVudHMgfCBDcmVhdGUgTmV3IFBheW1lbnQKKlNjaGVkdWxpbmdGb3Jtc0FwaSogfCBbKipzY2hlZHVsaW5nU2NoZWR1bGluZ0Zvcm1zR2V0Rm9ybUdldCoqXShkb2NzL1NjaGVkdWxpbmdGb3Jtc0FwaS5tZCNzY2hlZHVsaW5nU2NoZWR1bGluZ0Zvcm1zR2V0Rm9ybUdldCkgfCAqKkdFVCoqIC9zY2hlZHVsaW5nL3NjaGVkdWxpbmdfZm9ybXMvZ2V0X2Zvcm0gfCAKKlNlcnZpY2VzQXBpKiB8IFsqKmNhdGVnb3JpZXNDYXRlZ29yeUlkU2VydmljZXNHZXQqKl0oZG9jcy9TZXJ2aWNlc0FwaS5tZCNjYXRlZ29yaWVzQ2F0ZWdvcnlJZFNlcnZpY2VzR2V0KSB8ICoqR0VUKiogL2NhdGVnb3JpZXMve2NhdGVnb3J5X2lkfS9zZXJ2aWNlcyB8IEdldCBTZXJ2aWNlcyBMaXN0IGJ5IGNhdGVnb3J5IFtBbHBoYV0KKlNlcnZpY2VzQXBpKiB8IFsqKmdsb2JhbFNlcnZpY2VzR2V0KipdKGRvY3MvU2VydmljZXNBcGkubWQjZ2xvYmFsU2VydmljZXNHZXQpIHwgKipHRVQqKiAvZ2xvYmFsL3NlcnZpY2VzIHwgR2V0cyBhIGxpc3Qgb2Ygc2VydmljZXMKKlNlcnZpY2VzQXBpKiB8IFsqKnNlcnZpY2VzR2V0KipdKGRvY3MvU2VydmljZXNBcGkubWQjc2VydmljZXNHZXQpIHwgKipHRVQqKiAvc2VydmljZXMgfCBHZXQgU2VydmljZXMgTGlzdCBbQWxwaGFdCipTZXJ2aWNlc0FwaSogfCBbKipzZXJ2aWNlc1NlcnZpY2VJZEdldCoqXShkb2NzL1NlcnZpY2VzQXBpLm1kI3NlcnZpY2VzU2VydmljZUlkR2V0KSB8ICoqR0VUKiogL3NlcnZpY2VzL3tzZXJ2aWNlX2lkfSB8IEdldCBTZXJ2aWNlIEJ5IElEIFtBbHBoYV0KKlN0YWZmQXBpKiB8IFsqKmJ1c2luZXNzZXNCdXNpbmVzc0lkU3RhZmZzR2V0KipdKGRvY3MvU3RhZmZBcGkubWQjYnVzaW5lc3Nlc0J1c2luZXNzSWRTdGFmZnNHZXQpIHwgKipHRVQqKiAvYnVzaW5lc3Nlcy97YnVzaW5lc3NfaWR9L3N0YWZmcyB8IEdldCBTdGFmZiBNZW1iZXJzCipTdGFmZkFwaSogfCBbKipidXNpbmVzc2VzQnVzaW5lc3NJZFN0YWZmc1Bvc3QqKl0oZG9jcy9TdGFmZkFwaS5tZCNidXNpbmVzc2VzQnVzaW5lc3NJZFN0YWZmc1Bvc3QpIHwgKipQT1NUKiogL2J1c2luZXNzZXMve2J1c2luZXNzX2lkfS9zdGFmZnMgfCBDcmVhdGUgU3RhZmYgTWVtYmVyCipTdGFmZkFwaSogfCBbKipidXNpbmVzc2VzQnVzaW5lc3NJZFN0YWZmc1N0YWZmSWREZWxldGUqKl0oZG9jcy9TdGFmZkFwaS5tZCNidXNpbmVzc2VzQnVzaW5lc3NJZFN0YWZmc1N0YWZmSWREZWxldGUpIHwgKipERUxFVEUqKiAvYnVzaW5lc3Nlcy97YnVzaW5lc3NfaWR9L3N0YWZmcy97c3RhZmZfaWR9IHwgRGVsZXRlIFN0YWZmIE1lbWJlcgoqU3RhZmZBcGkqIHwgWyoqYnVzaW5lc3Nlc0J1c2luZXNzSWRTdGFmZnNTdGFmZklkR2V0KipdKGRvY3MvU3RhZmZBcGkubWQjYnVzaW5lc3Nlc0J1c2luZXNzSWRTdGFmZnNTdGFmZklkR2V0KSB8ICoqR0VUKiogL2J1c2luZXNzZXMve2J1c2luZXNzX2lkfS9zdGFmZnMve3N0YWZmX2lkfSB8IEdldCBTdGFmZiBNZW1iZXIgRGV0YWlscwoqU3RhZmZBcGkqIHwgWyoqZ2xvYmFsU3RhZmZzR2V0KipdKGRvY3MvU3RhZmZBcGkubWQjZ2xvYmFsU3RhZmZzR2V0KSB8ICoqR0VUKiogL2dsb2JhbC9zdGFmZnMgfCBHZXRzIGEgbGlzdCBvZiBzdGFmZnMKKlN0YWZmQXBpKiB8IFsqKnNjaGVkdWxpbmdTdGFmZkdldCoqXShkb2NzL1N0YWZmQXBpLm1kI3NjaGVkdWxpbmdTdGFmZkdldCkgfCAqKkdFVCoqIC9zY2hlZHVsaW5nL3N0YWZmIHwgR2V0IFN0YWZmIExpc3QgW0FscGhhXQoqU3RhZmZBcGkqIHwgWyoqc2NoZWR1bGluZ1N0YWZmU3RhZmZJZEdldCoqXShkb2NzL1N0YWZmQXBpLm1kI3NjaGVkdWxpbmdTdGFmZlN0YWZmSWRHZXQpIHwgKipHRVQqKiAvc2NoZWR1bGluZy9zdGFmZi97c3RhZmZfaWR9IHwgR2V0IFN0YWZmIEJ5IElEIFtBbHBoYV0KKlRva2VuTWFuYWdlbWVudEFwaSogfCBbKip0b2tlbnNHZXQqKl0oZG9jcy9Ub2tlbk1hbmFnZW1lbnRBcGkubWQjdG9rZW5zR2V0KSB8ICoqR0VUKiogL3Rva2VucyB8IEdldCB0b2tlbnMKKlRva2VuTWFuYWdlbWVudEFwaSogfCBbKip0b2tlbnNQb3N0KipdKGRvY3MvVG9rZW5NYW5hZ2VtZW50QXBpLm1kI3Rva2Vuc1Bvc3QpIHwgKipQT1NUKiogL3Rva2VucyB8IENyZWF0ZXMgYSB0b2tlbgoqVG9rZW5NYW5hZ2VtZW50QXBpKiB8IFsqKnRva2Vuc1Jldm9rZVBvc3QqKl0oZG9jcy9Ub2tlbk1hbmFnZW1lbnRBcGkubWQjdG9rZW5zUmV2b2tlUG9zdCkgfCAqKlBPU1QqKiAvdG9rZW5zL3Jldm9rZSB8IFJldm9rZXMgYSB0b2tlbgoqV2ViaG9va3NBcGkqIHwgWyoqd2ViaG9va1N1YnNjcmliZVBvc3QqKl0oZG9jcy9XZWJob29rc0FwaS5tZCN3ZWJob29rU3Vic2NyaWJlUG9zdCkgfCAqKlBPU1QqKiAvd2ViaG9vay9zdWJzY3JpYmUgfCBTdWJzY3JpYmUgVG8gV2ViaG9vawoqV2ViaG9va3NBcGkqIHwgWyoqd2ViaG9va1Vuc3Vic2NyaWJlUG9zdCoqXShkb2NzL1dlYmhvb2tzQXBpLm1kI3dlYmhvb2tVbnN1YnNjcmliZVBvc3QpIHwgKipQT1NUKiogL3dlYmhvb2svdW5zdWJzY3JpYmUgfCBVbnN1YnNjcmliZSBmcm9tIFdlYmhvb2sKKldlYmhvb2tzQXBpKiB8IFsqKndlYmhvb2tzR2V0KipdKGRvY3MvV2ViaG9va3NBcGkubWQjd2ViaG9va3NHZXQpIHwgKipHRVQqKiAvd2ViaG9va3MgfCBHZXQgV2ViaG9va3MgTGlzdAoqV2l6YXJkQXBpKiB8IFsqKmJ1c2luZXNzZXNCdXNpbmVzc0lkV2l6YXJkc0dldCoqXShkb2NzL1dpemFyZEFwaS5tZCNidXNpbmVzc2VzQnVzaW5lc3NJZFdpemFyZHNHZXQpIHwgKipHRVQqKiAvYnVzaW5lc3Nlcy97YnVzaW5lc3NfaWR9L3dpemFyZHMgfCBHZXRzIGEgbGlzdCBvZiB3aXphcmRzCipXaXphcmRBcGkqIHwgWyoqYnVzaW5lc3Nlc0J1c2luZXNzSWRXaXphcmRzV2l6YXJkTmFtZUdldCoqXShkb2NzL1dpemFyZEFwaS5tZCNidXNpbmVzc2VzQnVzaW5lc3NJZFdpemFyZHNXaXphcmROYW1lR2V0KSB8ICoqR0VUKiogL2J1c2luZXNzZXMve2J1c2luZXNzX2lkfS93aXphcmRzL3t3aXphcmRfbmFtZX0gfCBHZXRzIGEgd2l6YXJkIGJ5IG5hbWUKKldpemFyZEFwaSogfCBbKipidXNpbmVzc2VzQnVzaW5lc3NJZFdpemFyZHNXaXphcmROYW1lUHV0KipdKGRvY3MvV2l6YXJkQXBpLm1kI2J1c2luZXNzZXNCdXNpbmVzc0lkV2l6YXJkc1dpemFyZE5hbWVQdXQpIHwgKipQVVQqKiAvYnVzaW5lc3Nlcy97YnVzaW5lc3NfaWR9L3dpemFyZHMve3dpemFyZF9uYW1lfSB8IFVwZGF0ZSBhIHdpemFyZAoKCiMjIERvY3VtZW50YXRpb24gZm9yIE1vZGVscwoKIC0gW0FjdGlvbkRhdGFdKGRvY3MvQWN0aW9uRGF0YS5tZCkKIC0gW0FkbWluQWNjb3VudF0oZG9jcy9BZG1pbkFjY291bnQubWQpCiAtIFtBcHBdKGRvY3MvQXBwLm1kKQogLSBbQXBwRGF0YV0oZG9jcy9BcHBEYXRhLm1kKQogLSBbQXBwRGF0YTFdKGRvY3MvQXBwRGF0YTEubWQpCiAtIFtBcHBsaWNhdGlvbl0oZG9jcy9BcHBsaWNhdGlvbi5tZCkKIC0gW0FwcG9pbnRtZW50XShkb2NzL0FwcG9pbnRtZW50Lm1kKQogLSBbQXBwc0RlZXBMaW5rXShkb2NzL0FwcHNEZWVwTGluay5tZCkKIC0gW0FwcHNEZXNjcmlwdGlvbl0oZG9jcy9BcHBzRGVzY3JpcHRpb24ubWQpCiAtIFtBcHBzR2V0MjAxUmVzcG9uc2VdKGRvY3MvQXBwc0dldDIwMVJlc3BvbnNlLm1kKQogLSBbQXBwc0lkQXNzaWduUG9zdDIwMVJlc3BvbnNlXShkb2NzL0FwcHNJZEFzc2lnblBvc3QyMDFSZXNwb25zZS5tZCkKIC0gW0FwcHNJZEdldDIwMFJlc3BvbnNlXShkb2NzL0FwcHNJZEdldDIwMFJlc3BvbnNlLm1kKQogLSBbQXBwc0lkSW5zdGFsbEFwcFBvc3QyMDFSZXNwb25zZV0oZG9jcy9BcHBzSWRJbnN0YWxsQXBwUG9zdDIwMVJlc3BvbnNlLm1kKQogLSBbQXBwc0lkSW5zdGFsbEFwcFBvc3Q0MjJSZXNwb25zZV0oZG9jcy9BcHBzSWRJbnN0YWxsQXBwUG9zdDQyMlJlc3BvbnNlLm1kKQogLSBbQXBwc0lkTWVudUl0ZW1zXShkb2NzL0FwcHNJZE1lbnVJdGVtcy5tZCkKIC0gW0FwcHNJZE1lbnVJdGVtc1N1Yml0ZW1zXShkb2NzL0FwcHNJZE1lbnVJdGVtc1N1Yml0ZW1zLm1kKQogLSBbQXBwc0lkUHV0MjAwUmVzcG9uc2VdKGRvY3MvQXBwc0lkUHV0MjAwUmVzcG9uc2UubWQpCiAtIFtBcHBzSWRVbmFzc2lnblBvc3QyMDFSZXNwb25zZV0oZG9jcy9BcHBzSWRVbmFzc2lnblBvc3QyMDFSZXNwb25zZS5tZCkKIC0gW0FwcHNJZFVuaW5zdGFsbEFwcFBvc3QyMDFSZXNwb25zZV0oZG9jcy9BcHBzSWRVbmluc3RhbGxBcHBQb3N0MjAxUmVzcG9uc2UubWQpCiAtIFtBcHBzSWRVbmluc3RhbGxBcHBQb3N0NDIyUmVzcG9uc2VdKGRvY3MvQXBwc0lkVW5pbnN0YWxsQXBwUG9zdDQyMlJlc3BvbnNlLm1kKQogLSBbQXBwc01lbnVJdGVtc10oZG9jcy9BcHBzTWVudUl0ZW1zLm1kKQogLSBbQXBwc01lbnVJdGVtc0l0ZW1OYW1lXShkb2NzL0FwcHNNZW51SXRlbXNJdGVtTmFtZS5tZCkKIC0gW0FwcHNNZW51SXRlbXNTdWJpdGVtc10oZG9jcy9BcHBzTWVudUl0ZW1zU3ViaXRlbXMubWQpCiAtIFtBcHBzUG9zdDIwMVJlc3BvbnNlXShkb2NzL0FwcHNQb3N0MjAxUmVzcG9uc2UubWQpCiAtIFtBc3NpZ25tZW50XShkb2NzL0Fzc2lnbm1lbnQubWQpCiAtIFtBdmFpbGFiaWxpdHldKGRvY3MvQXZhaWxhYmlsaXR5Lm1kKQogLSBbQm9keTJdKGRvY3MvQm9keTIubWQpCiAtIFtCb29raW5nXShkb2NzL0Jvb2tpbmcubWQpCiAtIFtCb29raW5nMV0oZG9jcy9Cb29raW5nMS5tZCkKIC0gW0Jvb2tpbmdDcmVkaXRdKGRvY3MvQm9va2luZ0NyZWRpdC5tZCkKIC0gW0Jvb2tpbmdSZXN0cmljdGlvbl0oZG9jcy9Cb29raW5nUmVzdHJpY3Rpb24ubWQpCiAtIFtCcmFuZGluZ10oZG9jcy9CcmFuZGluZy5tZCkKIC0gW0J1c2luZXNzXShkb2NzL0J1c2luZXNzLm1kKQogLSBbQnVzaW5lc3MxXShkb2NzL0J1c2luZXNzMS5tZCkKIC0gW0J1c2luZXNzZXNBZG1pbkFjY291bnRdKGRvY3MvQnVzaW5lc3Nlc0FkbWluQWNjb3VudC5tZCkKIC0gW0J1c2luZXNzZXNCdXNpbmVzc10oZG9jcy9CdXNpbmVzc2VzQnVzaW5lc3MubWQpCiAtIFtCdXNpbmVzc2VzQnVzaW5lc3NJZEJ1c2luZXNzXShkb2NzL0J1c2luZXNzZXNCdXNpbmVzc0lkQnVzaW5lc3MubWQpCiAtIFtCdXNpbmVzc2VzQnVzaW5lc3NJZEJ1c2luZXNzQWRtaW5BY2NvdW50XShkb2NzL0J1c2luZXNzZXNCdXNpbmVzc0lkQnVzaW5lc3NBZG1pbkFjY291bnQubWQpCiAtIFtCdXNpbmVzc2VzQnVzaW5lc3NJZEJ1c2luZXNzQnVzaW5lc3NdKGRvY3MvQnVzaW5lc3Nlc0J1c2luZXNzSWRCdXNpbmVzc0J1c2luZXNzLm1kKQogLSBbQnVzaW5lc3Nlc0J1c2luZXNzSWRCdXNpbmVzc0ludGVncmF0aW9uc10oZG9jcy9CdXNpbmVzc2VzQnVzaW5lc3NJZEJ1c2luZXNzSW50ZWdyYXRpb25zLm1kKQogLSBbQnVzaW5lc3Nlc0J1c2luZXNzSWRCdXNpbmVzc0ludGVncmF0aW9uc1BsdWdpbnNdKGRvY3MvQnVzaW5lc3Nlc0J1c2luZXNzSWRCdXNpbmVzc0ludGVncmF0aW9uc1BsdWdpbnMubWQpCiAtIFtCdXNpbmVzc2VzQnVzaW5lc3NJZEJ1c2luZXNzTWV0YV0oZG9jcy9CdXNpbmVzc2VzQnVzaW5lc3NJZEJ1c2luZXNzTWV0YS5tZCkKIC0gW0J1c2luZXNzZXNCdXNpbmVzc0lkQnVzaW5lc3NNZXRhUGxhbl0oZG9jcy9CdXNpbmVzc2VzQnVzaW5lc3NJZEJ1c2luZXNzTWV0YVBsYW4ubWQpCiAtIFtCdXNpbmVzc2VzQnVzaW5lc3NJZEZlYXR1cmVzR2V0MjAwUmVzcG9uc2VdKGRvY3MvQnVzaW5lc3Nlc0J1c2luZXNzSWRGZWF0dXJlc0dldDIwMFJlc3BvbnNlLm1kKQogLSBbQnVzaW5lc3Nlc0J1c2luZXNzSWRHZXQyMDBSZXNwb25zZV0oZG9jcy9CdXNpbmVzc2VzQnVzaW5lc3NJZEdldDIwMFJlc3BvbnNlLm1kKQogLSBbQnVzaW5lc3Nlc0J1c2luZXNzSWRQb3N0MjAwUmVzcG9uc2VdKGRvY3MvQnVzaW5lc3Nlc0J1c2luZXNzSWRQb3N0MjAwUmVzcG9uc2UubWQpCiAtIFtCdXNpbmVzc2VzQnVzaW5lc3NJZFBvc3Q0MDBSZXNwb25zZV0oZG9jcy9CdXNpbmVzc2VzQnVzaW5lc3NJZFBvc3Q0MDBSZXNwb25zZS5tZCkKIC0gW0J1c2luZXNzZXNCdXNpbmVzc0lkU3RhZmZzR2V0MjAwUmVzcG9uc2VdKGRvY3MvQnVzaW5lc3Nlc0J1c2luZXNzSWRTdGFmZnNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0J1c2luZXNzZXNCdXNpbmVzc0lkU3RhZmZzTWV0YV0oZG9jcy9CdXNpbmVzc2VzQnVzaW5lc3NJZFN0YWZmc01ldGEubWQpCiAtIFtCdXNpbmVzc2VzQnVzaW5lc3NJZFN0YWZmc1Bvc3QyMDBSZXNwb25zZV0oZG9jcy9CdXNpbmVzc2VzQnVzaW5lc3NJZFN0YWZmc1Bvc3QyMDBSZXNwb25zZS5tZCkKIC0gW0J1c2luZXNzZXNCdXNpbmVzc0lkU3RhZmZzU3RhZmZdKGRvY3MvQnVzaW5lc3Nlc0J1c2luZXNzSWRTdGFmZnNTdGFmZi5tZCkKIC0gW0J1c2luZXNzZXNCdXNpbmVzc0lkU3RhZmZzU3RhZmZJZERlbGV0ZTIwMFJlc3BvbnNlXShkb2NzL0J1c2luZXNzZXNCdXNpbmVzc0lkU3RhZmZzU3RhZmZJZERlbGV0ZTIwMFJlc3BvbnNlLm1kKQogLSBbQnVzaW5lc3Nlc0J1c2luZXNzSWRTdGFmZnNTdGFmZklkR2V0MjAwUmVzcG9uc2VdKGRvY3MvQnVzaW5lc3Nlc0J1c2luZXNzSWRTdGFmZnNTdGFmZklkR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtCdXNpbmVzc2VzQnVzaW5lc3NJZFdpemFyZHNHZXQyMDBSZXNwb25zZV0oZG9jcy9CdXNpbmVzc2VzQnVzaW5lc3NJZFdpemFyZHNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0J1c2luZXNzZXNCdXNpbmVzc0lkV2l6YXJkc1dpemFyZE5hbWVHZXQyMDBSZXNwb25zZV0oZG9jcy9CdXNpbmVzc2VzQnVzaW5lc3NJZFdpemFyZHNXaXphcmROYW1lR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtCdXNpbmVzc2VzQnVzaW5lc3NJZFdpemFyZHNXaXphcmROYW1lUHV0MjAwUmVzcG9uc2VdKGRvY3MvQnVzaW5lc3Nlc0J1c2luZXNzSWRXaXphcmRzV2l6YXJkTmFtZVB1dDIwMFJlc3BvbnNlLm1kKQogLSBbQnVzaW5lc3Nlc0dldDIwMFJlc3BvbnNlXShkb2NzL0J1c2luZXNzZXNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0J1c2luZXNzZXNNZXRhXShkb2NzL0J1c2luZXNzZXNNZXRhLm1kKQogLSBbQnVzaW5lc3Nlc01ldGFBbmFseXRpY3NdKGRvY3MvQnVzaW5lc3Nlc01ldGFBbmFseXRpY3MubWQpCiAtIFtCdXNpbmVzc2VzUG9zdDIwMFJlc3BvbnNlXShkb2NzL0J1c2luZXNzZXNQb3N0MjAwUmVzcG9uc2UubWQpCiAtIFtCdXNpbmVzc2VzVmFsaWRhdGVMb2dpbkdldDIwMFJlc3BvbnNlXShkb2NzL0J1c2luZXNzZXNWYWxpZGF0ZUxvZ2luR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtDYW5jZWxsYXRpb25dKGRvY3MvQ2FuY2VsbGF0aW9uLm1kKQogLSBbQ2FyZF0oZG9jcy9DYXJkLm1kKQogLSBbQ2F0ZWdvcmllc0NhdGVnb3J5SWRTZXJ2aWNlc0dldDIwMFJlc3BvbnNlXShkb2NzL0NhdGVnb3JpZXNDYXRlZ29yeUlkU2VydmljZXNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0NhdGVnb3JpZXNHZXQyMDBSZXNwb25zZV0oZG9jcy9DYXRlZ29yaWVzR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtDYXRlZ29yeV0oZG9jcy9DYXRlZ29yeS5tZCkKIC0gW0NsaWVudF0oZG9jcy9DbGllbnQubWQpCiAtIFtDbGllbnRQYWNrYWdlXShkb2NzL0NsaWVudFBhY2thZ2UubWQpCiAtIFtDbGllbnRzQ2xpZW50SWRDb252ZXJzYXRpb25zR2V0MjAwUmVzcG9uc2VdKGRvY3MvQ2xpZW50c0NsaWVudElkQ29udmVyc2F0aW9uc0dldDIwMFJlc3BvbnNlLm1kKQogLSBbQ2xpZW50c0NsaWVudElkRGVsZXRlMjAwUmVzcG9uc2VdKGRvY3MvQ2xpZW50c0NsaWVudElkRGVsZXRlMjAwUmVzcG9uc2UubWQpCiAtIFtDbGllbnRzQ2xpZW50SWREb2N1bWVudHNHZXQyMDBSZXNwb25zZV0oZG9jcy9DbGllbnRzQ2xpZW50SWREb2N1bWVudHNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0NsaWVudHNDbGllbnRJZEVzdGltYXRlc0dldDIwMFJlc3BvbnNlXShkb2NzL0NsaWVudHNDbGllbnRJZEVzdGltYXRlc0dldDIwMFJlc3BvbnNlLm1kKQogLSBbQ2xpZW50c0NsaWVudElkR2V0MjAwUmVzcG9uc2VdKGRvY3MvQ2xpZW50c0NsaWVudElkR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtDbGllbnRzQ2xpZW50SWRJbnZvaWNlc0dldDIwMVJlc3BvbnNlXShkb2NzL0NsaWVudHNDbGllbnRJZEludm9pY2VzR2V0MjAxUmVzcG9uc2UubWQpCiAtIFtDbGllbnRzQ2xpZW50SWRQYXltZW50Q2xpZW50UGFja2FnZXNHZXQyMDBSZXNwb25zZV0oZG9jcy9DbGllbnRzQ2xpZW50SWRQYXltZW50Q2xpZW50UGFja2FnZXNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0NsaWVudHNDbGllbnRJZFBheW1lbnRDbGllbnRQYWNrYWdlc0dldDQyMlJlc3BvbnNlXShkb2NzL0NsaWVudHNDbGllbnRJZFBheW1lbnRDbGllbnRQYWNrYWdlc0dldDQyMlJlc3BvbnNlLm1kKQogLSBbQ2xpZW50c0NsaWVudElkUGF5bWVudHNHZXQyMDFSZXNwb25zZV0oZG9jcy9DbGllbnRzQ2xpZW50SWRQYXltZW50c0dldDIwMVJlc3BvbnNlLm1kKQogLSBbQ2xpZW50c0NsaWVudElkUHV0MjAwUmVzcG9uc2VdKGRvY3MvQ2xpZW50c0NsaWVudElkUHV0MjAwUmVzcG9uc2UubWQpCiAtIFtDbGllbnRzR2V0MjAwUmVzcG9uc2VdKGRvY3MvQ2xpZW50c0dldDIwMFJlc3BvbnNlLm1kKQogLSBbQ2xpZW50c01lcmdlc01lcmdlQ2xpZW50c1B1dDIwMFJlc3BvbnNlXShkb2NzL0NsaWVudHNNZXJnZXNNZXJnZUNsaWVudHNQdXQyMDBSZXNwb25zZS5tZCkKIC0gW0NsaWVudHNNZXJnZXNQb3NzaWJsZU1lcmdlTWFzdGVyR2V0MjAwUmVzcG9uc2VdKGRvY3MvQ2xpZW50c01lcmdlc1Bvc3NpYmxlTWVyZ2VNYXN0ZXJHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0NsaWVudHNQYXltZW50Q2xpZW50UGFja2FnZXNVcGRhdGVVc2FnZVBvc3QyMDBSZXNwb25zZV0oZG9jcy9DbGllbnRzUGF5bWVudENsaWVudFBhY2thZ2VzVXBkYXRlVXNhZ2VQb3N0MjAwUmVzcG9uc2UubWQpCiAtIFtDbGllbnRzUGF5bWVudENsaWVudFBhY2thZ2VzVXBkYXRlVXNhZ2VQb3N0NDIyUmVzcG9uc2VdKGRvY3MvQ2xpZW50c1BheW1lbnRDbGllbnRQYWNrYWdlc1VwZGF0ZVVzYWdlUG9zdDQyMlJlc3BvbnNlLm1kKQogLSBbQ2xpZW50c1BheW1lbnRDbGllbnRQYWNrYWdlc1ZhbGlkYXRlR2V0MjAwUmVzcG9uc2VdKGRvY3MvQ2xpZW50c1BheW1lbnRDbGllbnRQYWNrYWdlc1ZhbGlkYXRlR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtDbGllbnRzUGF5bWVudENsaWVudFBhY2thZ2VzVmFsaWRhdGVHZXQ0MjJSZXNwb25zZV0oZG9jcy9DbGllbnRzUGF5bWVudENsaWVudFBhY2thZ2VzVmFsaWRhdGVHZXQ0MjJSZXNwb25zZS5tZCkKIC0gW0NsaWVudHNQb3N0MjAxUmVzcG9uc2VdKGRvY3MvQ2xpZW50c1Bvc3QyMDFSZXNwb25zZS5tZCkKIC0gW0NvbnRhY3RdKGRvY3MvQ29udGFjdC5tZCkKIC0gW0NvbnZlcnNhdGlvbl0oZG9jcy9Db252ZXJzYXRpb24ubWQpCiAtIFtDb252ZXJzYXRpb25zR2V0MjAwUmVzcG9uc2VdKGRvY3MvQ29udmVyc2F0aW9uc0dldDIwMFJlc3BvbnNlLm1kKQogLSBbQ3JlZGl0SXRlbV0oZG9jcy9DcmVkaXRJdGVtLm1kKQogLSBbRGF0YV0oZG9jcy9EYXRhLm1kKQogLSBbRGF0YTFdKGRvY3MvRGF0YTEubWQpCiAtIFtEYXRhMTBdKGRvY3MvRGF0YTEwLm1kKQogLSBbRGF0YTExXShkb2NzL0RhdGExMS5tZCkKIC0gW0RhdGExMl0oZG9jcy9EYXRhMTIubWQpCiAtIFtEYXRhMTNdKGRvY3MvRGF0YTEzLm1kKQogLSBbRGF0YTE0XShkb2NzL0RhdGExNC5tZCkKIC0gW0RhdGExNV0oZG9jcy9EYXRhMTUubWQpCiAtIFtEYXRhMTZdKGRvY3MvRGF0YTE2Lm1kKQogLSBbRGF0YTE3XShkb2NzL0RhdGExNy5tZCkKIC0gW0RhdGExOF0oZG9jcy9EYXRhMTgubWQpCiAtIFtEYXRhMTldKGRvY3MvRGF0YTE5Lm1kKQogLSBbRGF0YTJdKGRvY3MvRGF0YTIubWQpCiAtIFtEYXRhMjBdKGRvY3MvRGF0YTIwLm1kKQogLSBbRGF0YTIxXShkb2NzL0RhdGEyMS5tZCkKIC0gW0RhdGEyMl0oZG9jcy9EYXRhMjIubWQpCiAtIFtEYXRhMjNdKGRvY3MvRGF0YTIzLm1kKQogLSBbRGF0YTI0XShkb2NzL0RhdGEyNC5tZCkKIC0gW0RhdGEyNV0oZG9jcy9EYXRhMjUubWQpCiAtIFtEYXRhMjZdKGRvY3MvRGF0YTI2Lm1kKQogLSBbRGF0YTI3XShkb2NzL0RhdGEyNy5tZCkKIC0gW0RhdGEyOF0oZG9jcy9EYXRhMjgubWQpCiAtIFtEYXRhMjldKGRvY3MvRGF0YTI5Lm1kKQogLSBbRGF0YTNdKGRvY3MvRGF0YTMubWQpCiAtIFtEYXRhMzBdKGRvY3MvRGF0YTMwLm1kKQogLSBbRGF0YTMxXShkb2NzL0RhdGEzMS5tZCkKIC0gW0RhdGEzMl0oZG9jcy9EYXRhMzIubWQpCiAtIFtEYXRhMzNdKGRvY3MvRGF0YTMzLm1kKQogLSBbRGF0YTM0XShkb2NzL0RhdGEzNC5tZCkKIC0gW0RhdGEzNV0oZG9jcy9EYXRhMzUubWQpCiAtIFtEYXRhMzZdKGRvY3MvRGF0YTM2Lm1kKQogLSBbRGF0YTM3XShkb2NzL0RhdGEzNy5tZCkKIC0gW0RhdGEzOF0oZG9jcy9EYXRhMzgubWQpCiAtIFtEYXRhNF0oZG9jcy9EYXRhNC5tZCkKIC0gW0RhdGE0MF0oZG9jcy9EYXRhNDAubWQpCiAtIFtEYXRhNDFdKGRvY3MvRGF0YTQxLm1kKQogLSBbRGF0YTQyXShkb2NzL0RhdGE0Mi5tZCkKIC0gW0RhdGE0M10oZG9jcy9EYXRhNDMubWQpCiAtIFtEYXRhNDRdKGRvY3MvRGF0YTQ0Lm1kKQogLSBbRGF0YTQ1XShkb2NzL0RhdGE0NS5tZCkKIC0gW0RhdGE0Nl0oZG9jcy9EYXRhNDYubWQpCiAtIFtEYXRhNDddKGRvY3MvRGF0YTQ3Lm1kKQogLSBbRGF0YTQ4XShkb2NzL0RhdGE0OC5tZCkKIC0gW0RhdGE0OV0oZG9jcy9EYXRhNDkubWQpCiAtIFtEYXRhNV0oZG9jcy9EYXRhNS5tZCkKIC0gW0RhdGE2XShkb2NzL0RhdGE2Lm1kKQogLSBbRGF0YTddKGRvY3MvRGF0YTcubWQpCiAtIFtEYXRhOF0oZG9jcy9EYXRhOC5tZCkKIC0gW0RhdGE5XShkb2NzL0RhdGE5Lm1kKQogLSBbRGF0dW1dKGRvY3MvRGF0dW0ubWQpCiAtIFtEYXR1bTFdKGRvY3MvRGF0dW0xLm1kKQogLSBbRGF0dW0xMF0oZG9jcy9EYXR1bTEwLm1kKQogLSBbRGF0dW0xMV0oZG9jcy9EYXR1bTExLm1kKQogLSBbRGF0dW0xMl0oZG9jcy9EYXR1bTEyLm1kKQogLSBbRGF0dW0xM10oZG9jcy9EYXR1bTEzLm1kKQogLSBbRGF0dW0xNF0oZG9jcy9EYXR1bTE0Lm1kKQogLSBbRGF0dW0xNV0oZG9jcy9EYXR1bTE1Lm1kKQogLSBbRGF0dW0xNl0oZG9jcy9EYXR1bTE2Lm1kKQogLSBbRGF0dW0xN10oZG9jcy9EYXR1bTE3Lm1kKQogLSBbRGF0dW0xOF0oZG9jcy9EYXR1bTE4Lm1kKQogLSBbRGF0dW0xOV0oZG9jcy9EYXR1bTE5Lm1kKQogLSBbRGF0dW0yMF0oZG9jcy9EYXR1bTIwLm1kKQogLSBbRGF0dW0zXShkb2NzL0RhdHVtMy5tZCkKIC0gW0RhdHVtNF0oZG9jcy9EYXR1bTQubWQpCiAtIFtEYXR1bTVdKGRvY3MvRGF0dW01Lm1kKQogLSBbRGF0dW02XShkb2NzL0RhdHVtNi5tZCkKIC0gW0RhdHVtN10oZG9jcy9EYXR1bTcubWQpCiAtIFtEYXR1bThdKGRvY3MvRGF0dW04Lm1kKQogLSBbRGF0dW05XShkb2NzL0RhdHVtOS5tZCkKIC0gW0RlZXBMaW5rXShkb2NzL0RlZXBMaW5rLm1kKQogLSBbRGVzY3JpcHRpb25dKGRvY3MvRGVzY3JpcHRpb24ubWQpCiAtIFtFcnJvcl0oZG9jcy9FcnJvci5tZCkKIC0gW0Vycm9yMV0oZG9jcy9FcnJvcjEubWQpCiAtIFtFc3RpbWF0ZV0oZG9jcy9Fc3RpbWF0ZS5tZCkKIC0gW0VzdGltYXRlc0dldDIwMFJlc3BvbnNlXShkb2NzL0VzdGltYXRlc0dldDIwMFJlc3BvbnNlLm1kKQogLSBbRXN0aW1hdGVzSXRlbXNdKGRvY3MvRXN0aW1hdGVzSXRlbXMubWQpCiAtIFtFc3RpbWF0ZXNQb3N0MjAxUmVzcG9uc2VdKGRvY3MvRXN0aW1hdGVzUG9zdDIwMVJlc3BvbnNlLm1kKQogLSBbRXN0aW1hdGVzVGF4ZXNdKGRvY3MvRXN0aW1hdGVzVGF4ZXMubWQpCiAtIFtFdmVudEluc3RhbmNlXShkb2NzL0V2ZW50SW5zdGFuY2UubWQpCiAtIFtGaWVsZEl0ZW1dKGRvY3MvRmllbGRJdGVtLm1kKQogLSBbRmllbGRzRmllbGRJZERlbGV0ZTIwMFJlc3BvbnNlXShkb2NzL0ZpZWxkc0ZpZWxkSWREZWxldGUyMDBSZXNwb25zZS5tZCkKIC0gW0ZpZWxkc0ZpZWxkSWRHZXQyMDBSZXNwb25zZV0oZG9jcy9GaWVsZHNGaWVsZElkR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtGaWVsZHNGaWVsZElkUHV0MjAwUmVzcG9uc2VdKGRvY3MvRmllbGRzRmllbGRJZFB1dDIwMFJlc3BvbnNlLm1kKQogLSBbRmllbGRzR2V0MjAwUmVzcG9uc2VdKGRvY3MvRmllbGRzR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtGaWVsZHNQb3N0MjAxUmVzcG9uc2VdKGRvY3MvRmllbGRzUG9zdDIwMVJlc3BvbnNlLm1kKQogLSBbRm9ybURhdGFdKGRvY3MvRm9ybURhdGEubWQpCiAtIFtGb3Jtc0ZpZWxkc10oZG9jcy9Gb3Jtc0ZpZWxkcy5tZCkKIC0gW0Zvcm1zR2V0MjAwUmVzcG9uc2VdKGRvY3MvRm9ybXNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0Zvcm1zUHV0MjAwUmVzcG9uc2VdKGRvY3MvRm9ybXNQdXQyMDBSZXNwb25zZS5tZCkKIC0gW0Zvcm1zU2VjdGlvbnNdKGRvY3MvRm9ybXNTZWN0aW9ucy5tZCkKIC0gW0dsb2JhbEFwcG9pbnRtZW50c0dldDIwMFJlc3BvbnNlXShkb2NzL0dsb2JhbEFwcG9pbnRtZW50c0dldDIwMFJlc3BvbnNlLm1kKQogLSBbR2xvYmFsQnVzaW5lc3Nlc0dldDIwMFJlc3BvbnNlXShkb2NzL0dsb2JhbEJ1c2luZXNzZXNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0dsb2JhbENhbXBhaWduUmVjaXBpZW50c0dldDIwMFJlc3BvbnNlXShkb2NzL0dsb2JhbENhbXBhaWduUmVjaXBpZW50c0dldDIwMFJlc3BvbnNlLm1kKQogLSBbR2xvYmFsQ2FtcGFpZ25zR2V0MjAwUmVzcG9uc2VdKGRvY3MvR2xvYmFsQ2FtcGFpZ25zR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtHbG9iYWxDbGllbnRQYWNrYWdlc0dldDIwMFJlc3BvbnNlXShkb2NzL0dsb2JhbENsaWVudFBhY2thZ2VzR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtHbG9iYWxDbGllbnRzR2V0MjAwUmVzcG9uc2VdKGRvY3MvR2xvYmFsQ2xpZW50c0dldDIwMFJlc3BvbnNlLm1kKQogLSBbR2xvYmFsQ29udmVyc2F0aW9uc0dldDIwMFJlc3BvbnNlXShkb2NzL0dsb2JhbENvbnZlcnNhdGlvbnNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0dsb2JhbEVzdGltYXRlc0dldDIwMFJlc3BvbnNlXShkb2NzL0dsb2JhbEVzdGltYXRlc0dldDIwMFJlc3BvbnNlLm1kKQogLSBbR2xvYmFsRXZlbnRBdHRlbmRhbmNlc0dldDIwMFJlc3BvbnNlXShkb2NzL0dsb2JhbEV2ZW50QXR0ZW5kYW5jZXNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0dsb2JhbEV2ZW50SW5zdGFuY2VzR2V0MjAwUmVzcG9uc2VdKGRvY3MvR2xvYmFsRXZlbnRJbnN0YW5jZXNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0dsb2JhbEludm9pY2VzR2V0MjAwUmVzcG9uc2VdKGRvY3MvR2xvYmFsSW52b2ljZXNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0dsb2JhbE1hdHRlcnNHZXQyMDBSZXNwb25zZV0oZG9jcy9HbG9iYWxNYXR0ZXJzR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtHbG9iYWxQYWNrYWdlc0dldDIwMFJlc3BvbnNlXShkb2NzL0dsb2JhbFBhY2thZ2VzR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtHbG9iYWxQYXltZW50c0dldDIwMFJlc3BvbnNlXShkb2NzL0dsb2JhbFBheW1lbnRzR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtHbG9iYWxQcm9kdWN0c0dldDIwMFJlc3BvbnNlXShkb2NzL0dsb2JhbFByb2R1Y3RzR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtHbG9iYWxTY2hlZHVsZWRDYW1wYWlnbnNHZXQyMDBSZXNwb25zZV0oZG9jcy9HbG9iYWxTY2hlZHVsZWRDYW1wYWlnbnNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0dsb2JhbFNlcnZpY2VzR2V0MjAwUmVzcG9uc2VdKGRvY3MvR2xvYmFsU2VydmljZXNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW0dsb2JhbFN0YWZmc0dldDIwMFJlc3BvbnNlXShkb2NzL0dsb2JhbFN0YWZmc0dldDIwMFJlc3BvbnNlLm1kKQogLSBbSW5saW5lT2JqZWN0XShkb2NzL0lubGluZU9iamVjdC5tZCkKIC0gW0lubGluZU9iamVjdDFdKGRvY3MvSW5saW5lT2JqZWN0MS5tZCkKIC0gW0lubGluZU9iamVjdDEwXShkb2NzL0lubGluZU9iamVjdDEwLm1kKQogLSBbSW5saW5lT2JqZWN0MTFdKGRvY3MvSW5saW5lT2JqZWN0MTEubWQpCiAtIFtJbmxpbmVPYmplY3QxMl0oZG9jcy9JbmxpbmVPYmplY3QxMi5tZCkKIC0gW0lubGluZU9iamVjdDEzXShkb2NzL0lubGluZU9iamVjdDEzLm1kKQogLSBbSW5saW5lT2JqZWN0MTRdKGRvY3MvSW5saW5lT2JqZWN0MTQubWQpCiAtIFtJbmxpbmVPYmplY3QxNV0oZG9jcy9JbmxpbmVPYmplY3QxNS5tZCkKIC0gW0lubGluZU9iamVjdDE2XShkb2NzL0lubGluZU9iamVjdDE2Lm1kKQogLSBbSW5saW5lT2JqZWN0MTddKGRvY3MvSW5saW5lT2JqZWN0MTcubWQpCiAtIFtJbmxpbmVPYmplY3QxOF0oZG9jcy9JbmxpbmVPYmplY3QxOC5tZCkKIC0gW0lubGluZU9iamVjdDE5XShkb2NzL0lubGluZU9iamVjdDE5Lm1kKQogLSBbSW5saW5lT2JqZWN0Ml0oZG9jcy9JbmxpbmVPYmplY3QyLm1kKQogLSBbSW5saW5lT2JqZWN0MjBdKGRvY3MvSW5saW5lT2JqZWN0MjAubWQpCiAtIFtJbmxpbmVPYmplY3QyMV0oZG9jcy9JbmxpbmVPYmplY3QyMS5tZCkKIC0gW0lubGluZU9iamVjdDIyXShkb2NzL0lubGluZU9iamVjdDIyLm1kKQogLSBbSW5saW5lT2JqZWN0MjNdKGRvY3MvSW5saW5lT2JqZWN0MjMubWQpCiAtIFtJbmxpbmVPYmplY3QyNF0oZG9jcy9JbmxpbmVPYmplY3QyNC5tZCkKIC0gW0lubGluZU9iamVjdDI1XShkb2NzL0lubGluZU9iamVjdDI1Lm1kKQogLSBbSW5saW5lT2JqZWN0MjZdKGRvY3MvSW5saW5lT2JqZWN0MjYubWQpCiAtIFtJbmxpbmVPYmplY3QyN10oZG9jcy9JbmxpbmVPYmplY3QyNy5tZCkKIC0gW0lubGluZU9iamVjdDI4XShkb2NzL0lubGluZU9iamVjdDI4Lm1kKQogLSBbSW5saW5lT2JqZWN0MjldKGRvY3MvSW5saW5lT2JqZWN0MjkubWQpCiAtIFtJbmxpbmVPYmplY3QzXShkb2NzL0lubGluZU9iamVjdDMubWQpCiAtIFtJbmxpbmVPYmplY3QzMF0oZG9jcy9JbmxpbmVPYmplY3QzMC5tZCkKIC0gW0lubGluZU9iamVjdDMxXShkb2NzL0lubGluZU9iamVjdDMxLm1kKQogLSBbSW5saW5lT2JqZWN0MzJdKGRvY3MvSW5saW5lT2JqZWN0MzIubWQpCiAtIFtJbmxpbmVPYmplY3QzM10oZG9jcy9JbmxpbmVPYmplY3QzMy5tZCkKIC0gW0lubGluZU9iamVjdDRdKGRvY3MvSW5saW5lT2JqZWN0NC5tZCkKIC0gW0lubGluZU9iamVjdDVdKGRvY3MvSW5saW5lT2JqZWN0NS5tZCkKIC0gW0lubGluZU9iamVjdDZdKGRvY3MvSW5saW5lT2JqZWN0Ni5tZCkKIC0gW0lubGluZU9iamVjdDddKGRvY3MvSW5saW5lT2JqZWN0Ny5tZCkKIC0gW0lubGluZU9iamVjdDhdKGRvY3MvSW5saW5lT2JqZWN0OC5tZCkKIC0gW0lubGluZU9iamVjdDldKGRvY3MvSW5saW5lT2JqZWN0OS5tZCkKIC0gW0lubGluZVJlc3BvbnNlMjAwXShkb2NzL0lubGluZVJlc3BvbnNlMjAwLm1kKQogLSBbSW5saW5lUmVzcG9uc2UyMDBTdWJzY3JpcHRpb25zXShkb2NzL0lubGluZVJlc3BvbnNlMjAwU3Vic2NyaXB0aW9ucy5tZCkKIC0gW0ludGVncmF0aW9uc10oZG9jcy9JbnRlZ3JhdGlvbnMubWQpCiAtIFtJbnZvaWNlXShkb2NzL0ludm9pY2UubWQpCiAtIFtJbnZvaWNlc0dldDIwMVJlc3BvbnNlXShkb2NzL0ludm9pY2VzR2V0MjAxUmVzcG9uc2UubWQpCiAtIFtJbnZvaWNlc0ludm9pY2VJZEdldDIwMVJlc3BvbnNlXShkb2NzL0ludm9pY2VzSW52b2ljZUlkR2V0MjAxUmVzcG9uc2UubWQpCiAtIFtJbnZvaWNlc0l0ZW1zXShkb2NzL0ludm9pY2VzSXRlbXMubWQpCiAtIFtJbnZvaWNlc1Bvc3QyMDFSZXNwb25zZV0oZG9jcy9JbnZvaWNlc1Bvc3QyMDFSZXNwb25zZS5tZCkKIC0gW0ludm9pY2VzVGF4ZXNdKGRvY3MvSW52b2ljZXNUYXhlcy5tZCkKIC0gW0l0ZW1dKGRvY3MvSXRlbS5tZCkKIC0gW0l0ZW0xXShkb2NzL0l0ZW0xLm1kKQogLSBbTGVhZGdlblBvc3QyMDFSZXNwb25zZV0oZG9jcy9MZWFkZ2VuUG9zdDIwMVJlc3BvbnNlLm1kKQogLSBbTWF0dGVyXShkb2NzL01hdHRlci5tZCkKIC0gW01lZXRpbmdzXShkb2NzL01lZXRpbmdzLm1kKQogLSBbTWVudUl0ZW1zXShkb2NzL01lbnVJdGVtcy5tZCkKIC0gW01lc3NhZ2VzTWVzc2FnZV0oZG9jcy9NZXNzYWdlc01lc3NhZ2UubWQpCiAtIFtNZXNzYWdlc1Bvc3QyMDFSZXNwb25zZV0oZG9jcy9NZXNzYWdlc1Bvc3QyMDFSZXNwb25zZS5tZCkKIC0gW01ldGFdKGRvY3MvTWV0YS5tZCkKIC0gW01vZGVsUGFja2FnZV0oZG9jcy9Nb2RlbFBhY2thZ2UubWQpCiAtIFtPdGhlcnNdKGRvY3MvT3RoZXJzLm1kKQogLSBbUGF0aFBhcmFtc10oZG9jcy9QYXRoUGFyYW1zLm1kKQogLSBbUGF5bWVudF0oZG9jcy9QYXltZW50Lm1kKQogLSBbUGF5bWVudENhcmRzU3luY0NhcmREYXRhaWxzXShkb2NzL1BheW1lbnRDYXJkc1N5bmNDYXJkRGF0YWlscy5tZCkKIC0gW1BheW1lbnRDYXJkc1N5bmNDYXJkUG9zdDIwMVJlc3BvbnNlXShkb2NzL1BheW1lbnRDYXJkc1N5bmNDYXJkUG9zdDIwMVJlc3BvbnNlLm1kKQogLSBbUGF5bWVudENoZWNrb3V0Q2FyZF0oZG9jcy9QYXltZW50Q2hlY2tvdXRDYXJkLm1kKQogLSBbUGF5bWVudENoZWNrb3V0Q2FyZENhcmRJbmZvXShkb2NzL1BheW1lbnRDaGVja291dENhcmRDYXJkSW5mby5tZCkKIC0gW1BheW1lbnRDaGVja291dFB1dDIwMVJlc3BvbnNlXShkb2NzL1BheW1lbnRDaGVja291dFB1dDIwMVJlc3BvbnNlLm1kKQogLSBbUGF5bWVudENoZWNrb3V0VXJsS2V5R2V0MjAxUmVzcG9uc2VdKGRvY3MvUGF5bWVudENoZWNrb3V0VXJsS2V5R2V0MjAxUmVzcG9uc2UubWQpCiAtIFtQYXltZW50Q2xpZW50UGFja2FnZXNQb3N0MjAxUmVzcG9uc2VdKGRvY3MvUGF5bWVudENsaWVudFBhY2thZ2VzUG9zdDIwMVJlc3BvbnNlLm1kKQogLSBbUGF5bWVudENsaWVudFBhY2thZ2VzUG9zdDQyMlJlc3BvbnNlXShkb2NzL1BheW1lbnRDbGllbnRQYWNrYWdlc1Bvc3Q0MjJSZXNwb25zZS5tZCkKIC0gW1BheW1lbnRDbGllbnRQYWNrYWdlc1VwZGF0ZVVzYWdlUG9zdDIwMFJlc3BvbnNlXShkb2NzL1BheW1lbnRDbGllbnRQYWNrYWdlc1VwZGF0ZVVzYWdlUG9zdDIwMFJlc3BvbnNlLm1kKQogLSBbUGF5bWVudENsaWVudFBhY2thZ2VzVXBkYXRlVXNhZ2VQb3N0NDIyUmVzcG9uc2VdKGRvY3MvUGF5bWVudENsaWVudFBhY2thZ2VzVXBkYXRlVXNhZ2VQb3N0NDIyUmVzcG9uc2UubWQpCiAtIFtQYXltZW50UGFja2FnZXNHZXQyMDBSZXNwb25zZV0oZG9jcy9QYXltZW50UGFja2FnZXNHZXQyMDBSZXNwb25zZS5tZCkKIC0gW1BheW1lbnRQYWNrYWdlc0dldDQyMlJlc3BvbnNlXShkb2NzL1BheW1lbnRQYWNrYWdlc0dldDQyMlJlc3BvbnNlLm1kKQogLSBbUGF5bWVudFBhY2thZ2VzSXRlbXNdKGRvY3MvUGF5bWVudFBhY2thZ2VzSXRlbXMubWQpCiAtIFtQYXltZW50UGFja2FnZXNQYWNrYWdlSWRHZXQyMDBSZXNwb25zZV0oZG9jcy9QYXltZW50UGFja2FnZXNQYWNrYWdlSWRHZXQyMDBSZXNwb25zZS5tZCkKIC0gW1BheW1lbnRQYWNrYWdlc1BhY2thZ2VJZEdldDQyMlJlc3BvbnNlXShkb2NzL1BheW1lbnRQYWNrYWdlc1BhY2thZ2VJZEdldDQyMlJlc3BvbnNlLm1kKQogLSBbUGF5bWVudFBhY2thZ2VzUGFja2FnZUlkUGFja2FnZV0oZG9jcy9QYXltZW50UGFja2FnZXNQYWNrYWdlSWRQYWNrYWdlLm1kKQogLSBbUGF5bWVudFBhY2thZ2VzUGFja2FnZUlkUGFja2FnZVByb2R1Y3RzXShkb2NzL1BheW1lbnRQYWNrYWdlc1BhY2thZ2VJZFBhY2thZ2VQcm9kdWN0cy5tZCkKIC0gW1BheW1lbnRQYWNrYWdlc1BhY2thZ2VJZFB1dDIwMFJlc3BvbnNlXShkb2NzL1BheW1lbnRQYWNrYWdlc1BhY2thZ2VJZFB1dDIwMFJlc3BvbnNlLm1kKQogLSBbUGF5bWVudFBhY2thZ2VzUGFja2FnZUlkUHV0NDIyUmVzcG9uc2VdKGRvY3MvUGF5bWVudFBhY2thZ2VzUGFja2FnZUlkUHV0NDIyUmVzcG9uc2UubWQpCiAtIFtQYXltZW50UGFja2FnZXNQb3N0MjAxUmVzcG9uc2VdKGRvY3MvUGF5bWVudFBhY2thZ2VzUG9zdDIwMVJlc3BvbnNlLm1kKQogLSBbUGF5bWVudFBhY2thZ2VzUG9zdDQyMlJlc3BvbnNlXShkb2NzL1BheW1lbnRQYWNrYWdlc1Bvc3Q0MjJSZXNwb25zZS5tZCkKIC0gW1BheW1lbnRQYWNrYWdlc1Byb2R1Y3RzXShkb2NzL1BheW1lbnRQYWNrYWdlc1Byb2R1Y3RzLm1kKQogLSBbUGF5bWVudFBhY2thZ2VzU2VydmljZXNdKGRvY3MvUGF5bWVudFBhY2thZ2VzU2VydmljZXMubWQpCiAtIFtQYXltZW50UmVxdWVzdF0oZG9jcy9QYXltZW50UmVxdWVzdC5tZCkKIC0gW1BheW1lbnRTZXR0aW5nc10oZG9jcy9QYXltZW50U2V0dGluZ3MubWQpCiAtIFtQYXltZW50U2V0dGluZ3NHZXQyMDFSZXNwb25zZV0oZG9jcy9QYXltZW50U2V0dGluZ3NHZXQyMDFSZXNwb25zZS5tZCkKIC0gW1BheW1lbnRTZXR0aW5nc1BheW1lbnRTZXR0aW5nc10oZG9jcy9QYXltZW50U2V0dGluZ3NQYXltZW50U2V0dGluZ3MubWQpCiAtIFtQYXltZW50U2V0dGluZ3NQb3N0MjAxUmVzcG9uc2VdKGRvY3MvUGF5bWVudFNldHRpbmdzUG9zdDIwMVJlc3BvbnNlLm1kKQogLSBbUGF5bWVudFN0YXR1c10oZG9jcy9QYXltZW50U3RhdHVzLm1kKQogLSBbUGF5bWVudFN0YXR1c2VzSWRBcHBseUNvdXBvblB1dDIwMFJlc3BvbnNlXShkb2NzL1BheW1lbnRTdGF0dXNlc0lkQXBwbHlDb3Vwb25QdXQyMDBSZXNwb25zZS5tZCkKIC0gW1BheW1lbnRTdGF0dXNlc0lkVmFsaWRhdGVDb3Vwb25HZXQyMDBSZXNwb25zZV0oZG9jcy9QYXltZW50U3RhdHVzZXNJZFZhbGlkYXRlQ291cG9uR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtQYXltZW50c0dldDIwMVJlc3BvbnNlXShkb2NzL1BheW1lbnRzR2V0MjAxUmVzcG9uc2UubWQpCiAtIFtQYXltZW50c1BheW1lbnRVaWRNYXRjaFBvc3QyMDFSZXNwb25zZV0oZG9jcy9QYXltZW50c1BheW1lbnRVaWRNYXRjaFBvc3QyMDFSZXNwb25zZS5tZCkKIC0gW1BheW1lbnRzUG9zdDIwMVJlc3BvbnNlXShkb2NzL1BheW1lbnRzUG9zdDIwMVJlc3BvbnNlLm1kKQogLSBbUGxhbl0oZG9jcy9QbGFuLm1kKQogLSBbUGx1Z2luXShkb2NzL1BsdWdpbi5tZCkKIC0gW1BvbGljaWVzXShkb2NzL1BvbGljaWVzLm1kKQogLSBbUHJvZHVjdF0oZG9jcy9Qcm9kdWN0Lm1kKQogLSBbUmVzY2hlZHVsaW5nXShkb2NzL1Jlc2NoZWR1bGluZy5tZCkKIC0gW1NjaGVkdWxpbmdBcHBvaW50bWVudHNBcHBvaW50bWVudElkR2V0MjAwUmVzcG9uc2VdKGRvY3MvU2NoZWR1bGluZ0FwcG9pbnRtZW50c0FwcG9pbnRtZW50SWRHZXQyMDBSZXNwb25zZS5tZCkKIC0gW1NjaGVkdWxpbmdBcHBvaW50bWVudHNHZXQyMDBSZXNwb25zZV0oZG9jcy9TY2hlZHVsaW5nQXBwb2ludG1lbnRzR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtTY2hlZHVsaW5nQm9va2luZ3NCb29raW5nVWlkVXBkYXRlUnN2cFN0YXRlUHV0MjAwUmVzcG9uc2VdKGRvY3MvU2NoZWR1bGluZ0Jvb2tpbmdzQm9va2luZ1VpZFVwZGF0ZVJzdnBTdGF0ZVB1dDIwMFJlc3BvbnNlLm1kKQogLSBbU2NoZWR1bGluZ0Jvb2tpbmdzUG9zdDIwMVJlc3BvbnNlXShkb2NzL1NjaGVkdWxpbmdCb29raW5nc1Bvc3QyMDFSZXNwb25zZS5tZCkKIC0gW1NjaGVkdWxpbmdFdmVudEluc3RhbmNlRXZlbnRJbnN0YW5jZUlkR2V0MjAwUmVzcG9uc2VdKGRvY3MvU2NoZWR1bGluZ0V2ZW50SW5zdGFuY2VFdmVudEluc3RhbmNlSWRHZXQyMDBSZXNwb25zZS5tZCkKIC0gW1NjaGVkdWxpbmdTY2hlZHVsaW5nRm9ybXNHZXRGb3JtR2V0MjAwUmVzcG9uc2VdKGRvY3MvU2NoZWR1bGluZ1NjaGVkdWxpbmdGb3Jtc0dldEZvcm1HZXQyMDBSZXNwb25zZS5tZCkKIC0gW1NjaGVkdWxpbmdTdGFmZkdldDIwMFJlc3BvbnNlXShkb2NzL1NjaGVkdWxpbmdTdGFmZkdldDIwMFJlc3BvbnNlLm1kKQogLSBbU2NoZWR1bGluZ1N0YWZmU3RhZmZJZEdldDIwMFJlc3BvbnNlXShkb2NzL1NjaGVkdWxpbmdTdGFmZlN0YWZmSWRHZXQyMDBSZXNwb25zZS5tZCkKIC0gW1NjaGVkdWxpbmdXYWl0bGlzdENhbmNlbFB1dDIwMFJlc3BvbnNlXShkb2NzL1NjaGVkdWxpbmdXYWl0bGlzdENhbmNlbFB1dDIwMFJlc3BvbnNlLm1kKQogLSBbU2NoZWR1bGluZ1dhaXRsaXN0UG9zdDIwMVJlc3BvbnNlXShkb2NzL1NjaGVkdWxpbmdXYWl0bGlzdFBvc3QyMDFSZXNwb25zZS5tZCkKIC0gW1NjaGVkdWxpbmdXYWl0bGlzdFBvc3Q0MjJSZXNwb25zZV0oZG9jcy9TY2hlZHVsaW5nV2FpdGxpc3RQb3N0NDIyUmVzcG9uc2UubWQpCiAtIFtTZWN0aW9uXShkb2NzL1NlY3Rpb24ubWQpCiAtIFtTZXJ2aWNlXShkb2NzL1NlcnZpY2UubWQpCiAtIFtTZXJ2aWNlc0dldDIwMFJlc3BvbnNlXShkb2NzL1NlcnZpY2VzR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtTZXJ2aWNlc1NlcnZpY2VJZEF2YWlsYWJpbGl0eUdldDIwMFJlc3BvbnNlXShkb2NzL1NlcnZpY2VzU2VydmljZUlkQXZhaWxhYmlsaXR5R2V0MjAwUmVzcG9uc2UubWQpCiAtIFtTZXJ2aWNlc1NlcnZpY2VJZEdldDIwMFJlc3BvbnNlXShkb2NzL1NlcnZpY2VzU2VydmljZUlkR2V0MjAwUmVzcG9uc2UubWQpCiAtIFtTb3VyY2VEYXRhXShkb2NzL1NvdXJjZURhdGEubWQpCiAtIFtTdGFmZl0oZG9jcy9TdGFmZi5tZCkKIC0gW1N0YWZmMV0oZG9jcy9TdGFmZjEubWQpCiAtIFtTdGFmZlNldHRpbmdzXShkb2NzL1N0YWZmU2V0dGluZ3MubWQpCiAtIFtTdGF0ZVN1bW1hcnldKGRvY3MvU3RhdGVTdW1tYXJ5Lm1kKQogLSBbU3ViaXRlbV0oZG9jcy9TdWJpdGVtLm1kKQogLSBbVGF4XShkb2NzL1RheC5tZCkKIC0gW1Rva2VuXShkb2NzL1Rva2VuLm1kKQogLSBbVG9rZW5zR2V0MjAxUmVzcG9uc2VdKGRvY3MvVG9rZW5zR2V0MjAxUmVzcG9uc2UubWQpCiAtIFtUb2tlbnNQb3N0MjAxUmVzcG9uc2VdKGRvY3MvVG9rZW5zUG9zdDIwMVJlc3BvbnNlLm1kKQogLSBbVG9rZW5zUmV2b2tlUG9zdDIwMVJlc3BvbnNlXShkb2NzL1Rva2Vuc1Jldm9rZVBvc3QyMDFSZXNwb25zZS5tZCkKIC0gW1dhaXRsaXN0XShkb2NzL1dhaXRsaXN0Lm1kKQoKCiMjIERvY3VtZW50YXRpb24gZm9yIEF1dGhvcml6YXRpb24KCkF1dGhlbnRpY2F0aW9uIHNjaGVtZXMgZGVmaW5lZCBmb3IgdGhlIEFQSToKIyMjIGRlZmF1bHQKCi0gKipUeXBlKio6IE9BdXRoCi0gKipGbG93Kio6IGltcGxpY2l0Ci0gKipBdXRob3JpemF0aW9uIFVSTCoqOiBodHRwczovL2lnbm9yZS5teWNsaWVudHMuaW8KLSAqKlNjb3BlcyoqOiAKICAtIHBsYXRmb3JtOiBBbGwgcGxhdGZvcm0gcmVsYXRlZCBvcGVyYXRpb25zCiAgLSBwbGF0Zm9ybV9jcmVhdGU6IHBsYXRmb3JtIGNyZWF0ZSBzY29wZQogIC0gcGxhdGZvcm1fZGVsZXRlOiBwbGF0Zm9ybSBkZWxldGUgc2NvcGUKICAtIHBsYXRmb3JtX3JlYWQ6IHBsYXRmb3JtIHJlYWQgc2NvcGUKICAtIHBsYXRmb3JtX3VwZGF0ZTogcGxhdGZvcm0gdXBkYXRlIHNjb3BlCgoKIyMgUmVjb21tZW5kYXRpb24KCkl0J3MgcmVjb21tZW5kZWQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIGBBcGlDbGllbnRgIHBlciB0aHJlYWQgaW4gYSBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50IHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgaXNzdWVzLgoKIyMgQXV0aG9yCgoKCg== readmeEtag: '"34d440ed47f5805d8534b60b7da9c71051cec7e8"' readmeLastModified: Thu, 24 Mar 2022 00:18:56 GMT repositoryId: 462478185 description: null created: '2022-02-22T21:19:45Z' updated: '2022-03-15T19:45:22Z' language: Java archived: false stars: 2 watchers: 1 forks: 0 owner: SimonIT logo: https://avatars.githubusercontent.com/u/11720038?v=4 repoEtag: '"d1805217c3a123078a84771142ee3b36b9fbbd258a16ca5d6e78b0b4ebcd35aa"' repoLastModified: Tue, 15 Mar 2022 19:45:22 GMT foundInMaster: true category: User Interfaces id: 6faee664636bc265bfefb7cb4cf646c1 - source: openapi3 tags repository: https://github.com/bump-sh/bump-ci-example v3: true repositoryMetadata: base64Readme: >- IyBCdW1wIENJIGludGVncmF0aW9uIGV4YW1wbGVzCgpDSSBpbnRlZ3JhdGlvbiBleGFtcGxlcyBmb3IgR2l0aHViIEFjdGlvbiwgVHJhdmlzIENJLCBDaXJjbGVDSSBhbmQgR2l0bGFiIENJLgoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyB3aWR0aD0iMjAlIiBzcmM9Imh0dHBzOi8vYnVtcC5zaC9pY29uLWRlZmF1bHQtbWFza2FibGUtbGFyZ2UucG5nIiAvPgo8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL2hlbHAuYnVtcC5zaC8iPkhlbHA8L2E+IHwKICA8YSBocmVmPSJodHRwczovL2J1bXAuc2gvdXNlcnMvc2lnbl91cCI+U2lnbiB1cDwvYT4KPC9wPgoKQnVtcCBpcyBhIENvbnRpbnVvdXMgRG9jdW1lbnRhdGlvbiBQbGF0Zm9ybTogaXQgbGV0cyB5b3Uga2VlcCB5b3VyIEFQSSBkb2MgYWx3YXlzIHN5bmNocm9uaXplZCB3aXRoIHlvdXIgY29kZWJhc2UuIFdpdGggdGhlc2UgQ0kgaW50ZWdyYXRpb24gZXhhbXBsZXMgeW91IGNhbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIHlvdXIgQVBJIHJlZmVyZW5jZSAod2l0aCBjaGFuZ2Vsb2cgYW5kIGRpZmYpIG9uIFtCdW1wXShodHRwczovL2J1bXAuc2gpIGZyb20gYW55IFtPcGVuQVBJXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgb3IgW0FzeW5jQVBJXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvYXN5bmNhcGkpIGZpbGUuCgojIyBFeGFtcGxlcwoKSGVyZSBhcmUgZXhhbXBsZXMgZm9yIGludGVncmF0aW5nIEJ1bXAgd2l0aCB0aGUgbW9zdCBrbm93biBDSSBwcm9kdWN0czoKLSBDaXJjbGVDSSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9idW1wLXNoL2J1bXAtY2ktZXhhbXBsZS9ibG9iL21hc3Rlci8uY2lyY2xlY2kvY29uZmlnLnltbAotIEdpdGxhYiBDSTogaHR0cHM6Ly9naXRodWIuY29tL2J1bXAtc2gvYnVtcC1jaS1leGFtcGxlL2Jsb2IvbWFzdGVyLy5naXRsYWItY2kueW1sCi0gVHJhdmlzIENJOiAgaHR0cHM6Ly9naXRodWIuY29tL2J1bXAtc2gvYnVtcC1jaS1leGFtcGxlL2Jsb2IvbWFzdGVyLy50cmF2aXMueW1sCi0gR2l0SHViIGFjdGlvbjogaHR0cHM6Ly9naXRodWIuY29tL2J1bXAtc2gvZ2l0aHViLWFjdGlvbgoKVGhlIEdpdEh1YiBhY3Rpb24gZXhhbXBsZSB1c2VzIGEgZGVkaWNhdGVkIGFjdGlvbiB3ZSBjcmFmdGVkIGVzcGVjaWFsbHkgZm9yIHlvdS4gWW91IG1heSBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gb3VyIFtHaXRIdWIgbWFya2V0cGxhY2UgcGFnZV0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtldHBsYWNlL2FjdGlvbnMvYXBpLWRvY3VtZW50YXRpb24tb24tYnVtcCkuCgpOb3RlIHRoYXQgaWYgeW91IGRvbid0IHdhbnQgdG8ga2VlcCB0aGUgcHJpdmF0ZSB0b2tlbiBhbmQgZG9jdW1lbnRhdGlvbiBpZCBpbiB5b3VyIGNvZGUgYmFzZSwgeW91IHNob3VsZCB1c2UgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBPdXIgQ0xJIGF1dG9tYXRpY2FsbHkgcmVjb2duaXplcyB0aGVzZSAzIHZhcmlhYmxlczoKLSBgQlVNUF9JRGA6IHlvdXIgZG9jdW1lbnRhdGlvbiBwdWJsaWMgaWQgb3Igc2x1ZwotIGBCVU1QX1RPS0VOYDogeW91ciBkb2N1bWVudGF0aW9uIHByaXZhdGUgdG9rZW4KLSBgQlVNUF9IVUJfSURgOiBpZiB1c2luZyBodWJzLCB5b3VyIGh1YiBwdWJsaWMgaWQgb3Igc2x1ZwoKIyMgQ29udHJpYnV0aW5nCgpCdWcgcmVwb3J0cyBhbmQgcHVsbCByZXF1ZXN0cyBhcmUgd2VsY29tZSBvbiBHaXRIdWIgYXQgaHR0cHM6Ly9naXRodWIuY29tL2J1bXAtc2gvYnVtcC1jaS1leGFtcGxlLiBUaGlzIHByb2plY3QgaXMgaW50ZW5kZWQgdG8gYmUgYSBzYWZlLCB3ZWxjb21pbmcgc3BhY2UgZm9yIGNvbGxhYm9yYXRpb24sIGFuZCBjb250cmlidXRvcnMgYXJlIGV4cGVjdGVkIHRvIGFkaGVyZSB0byB0aGUgW0NvbnRyaWJ1dG9yIENvdmVuYW50XShodHRwOi8vY29udHJpYnV0b3ItY292ZW5hbnQub3JnKSBjb2RlIG9mIGNvbmR1Y3QuCgojIyBMaWNlbnNlCgpUaGUgc2NyaXB0cyBhbmQgZG9jdW1lbnRhdGlvbiBpbiB0aGlzIHByb2plY3QgYXJlIHJlbGVhc2VkIHVuZGVyIHRoZSBbTUlUIExpY2Vuc2VdKExJQ0VOU0UpLgoKIyMgQ29kZSBvZiBDb25kdWN0CgpFdmVyeW9uZSBpbnRlcmFjdGluZyBpbiB0aGUgQnVtcCBgYnVtcC1jaS1leGFtcGxlYCBjb2RlIHJlcG9zaXRvcnksIGlzc3VlIHRyYWNrZXJzLCBjaGF0IHJvb21zIGFuZCBtYWlsaW5nIGxpc3RzIGlzIGV4cGVjdGVkIHRvIGZvbGxvdyB0aGUgW2NvZGUgb2YgY29uZHVjdF0oaHR0cHM6Ly9naXRodWIuY29tL2J1bXAtc2gvLmdpdGh1Yi9ibG9iL21hc3Rlci9DT0RFX09GX0NPTkRVQ1QubWQpLgo= readmeEtag: '"59390932c2415cc7858807576a6c29159cdf8e3a"' readmeLastModified: Wed, 26 Mar 2025 14:03:12 GMT repositoryId: 156218433 description: >- CI integration examples for Github Action, Travis CI, CircleCI and Gitlab CI. created: '2018-11-05T12:59:45Z' updated: '2025-03-26T14:03:17Z' language: Shell archived: false stars: 2 watchers: 1 forks: 3 owner: bump-sh logo: https://avatars.githubusercontent.com/u/33217836?v=4 license: MIT repoEtag: '"513637a9ee9545326b241150bc9af84a86ab55f7f0d198395463de0c1bc15dcc"' repoLastModified: Wed, 26 Mar 2025 14:03:17 GMT foundInMaster: true category: Server Implementations id: 3c6b78bc784ecdf4c641738397de0df3 - source: openapi3 tags repository: https://github.com/igrek8/nestjs-typed-responses v3: true id: e85bbe79ca2140b53b166fbbe87e5350 repositoryMetadata: base64Readme: >- IyBbSGFuZGxlIHBvbHltb3JwaGljIHJlc3BvbnNlc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kYXRhLW1vZGVscy9pbmhlcml0YW5jZS1hbmQtcG9seW1vcnBoaXNtKSBpbiBOZXN0LmpzIE9wZW5BUEkKCkVuYWJsZXMgT3BlbkFQSSB2MyBwb2x5bW9ycGhpc20gdXNpbmcgYF9fdHlwZWAgbWV0YWZpZWxkIHRvIHJlc29sdmUgZGlmZmVyZW50IGV4Y2VwdGlvbnMgb3IgcmVzcG9uc2VzIHdpdGhpbiB0aGUgc2FtZSBIVFRQIGNvZGUgcmVzcG9uc2UgZ3JvdXAuCgpbIVtOUE1dKGh0dHBzOi8vYmFkZ2VuLm5ldC9ucG0vdi9uZXN0anMtdHlwZWQtcmVzcG9uc2VzKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL25lc3Rqcy10eXBlZC1yZXNwb25zZXMpClshW0NvdmVyYWdlXShodHRwczovL2NvZGVjb3YuaW8vZ2gvaWdyZWs4L25lc3Rqcy10eXBlZC1yZXNwb25zZXMvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2lncmVrOC9uZXN0anMtdHlwZWQtcmVzcG9uc2VzKQohW1JlbGVhc2VdKGh0dHBzOi8vYmFkZ2VuLm5ldC9naXRodWIvY2hlY2tzL2lncmVrOC9uZXN0anMtdHlwZWQtcmVzcG9uc2VzKQohW0xpY2Vuc2VdKGh0dHBzOi8vYmFkZ2VuLm5ldC9naXRodWIvbGljZW5zZS9pZ3JlazgvbmVzdGpzLXR5cGVkLXJlc3BvbnNlcykKCiMjIEluc3RhbGxhdGlvbgoKYGBgYmFzaApucG0gaW5zdGFsbCAtLXNhdmUgbmVzdGpzLXR5cGVkLXJlc3BvbnNlcwoKeWFybiBhZGQgbmVzdGpzLXR5cGVkLXJlc3BvbnNlcwpgYGAKCiMjIE9wZW5BUEkKCiFbU3dhZ2dlcl0oLi9tZWRpYS9zd2FnZ2VyLnBuZykKCiMjIFVzYWdlCgpgYGB0cwppbXBvcnQgeyBDb25zb2xlTG9nZ2VyLCBDb250cm9sbGVyLCBIdHRwQ29kZSwgSHR0cFN0YXR1cywgTW9kdWxlLCBQb3N0LCBWYWxpZGF0aW9uUGlwZSB9IGZyb20gJ0BuZXN0anMvY29tbW9uJzsKaW1wb3J0IHsgQVBQX1BJUEUsIE5lc3RGYWN0b3J5IH0gZnJvbSAnQG5lc3Rqcy9jb3JlJzsKaW1wb3J0IHsKICBBcGlCYWRSZXF1ZXN0UmVzcG9uc2UsCiAgQXBpRXh0cmFNb2RlbHMsCiAgQXBpRm9yYmlkZGVuUmVzcG9uc2UsCiAgQXBpT2tSZXNwb25zZSwKICBBcGlQcm9wZXJ0eSwKICBEb2N1bWVudEJ1aWxkZXIsCiAgcmVmcywKICBTd2FnZ2VyTW9kdWxlLAp9IGZyb20gJ0BuZXN0anMvc3dhZ2dlcic7CmltcG9ydCB7IEV4cG9zZSB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJzsKaW1wb3J0IHsgSXNEYXRlU3RyaW5nLCBJc1N0cmluZyB9IGZyb20gJ2NsYXNzLXZhbGlkYXRvcic7CmltcG9ydCB7CiAgQXBpVHlwZU1ldGFmaWVsZCwKICBCYWRSZXF1ZXN0RXhjZXB0aW9uLAogIFNlcnZpY2VVbmF2YWlsYWJsZUV4Y2VwdGlvbiwKICBUeXBlZERhdGFUcmFuc2Zlck9iamVjdCwKICBUeXBlZFJlc3BvbnNlTW9kdWxlLAogIFZhbGlkYXRpb25FeGNlcHRpb24sCn0gZnJvbSAnbmVzdGpzLXR5cGVkLXJlc3BvbnNlcyc7CgpjbGFzcyBNeVJlc3BvbnNlIGltcGxlbWVudHMgVHlwZWREYXRhVHJhbnNmZXJPYmplY3QgewogIC8vIEFwaVR5cGVNZXRhZmllbGQgbXVzdCBiZSBkZWZpbmVkIHRvIHNwZWNpZnkgc2VyaWFsaXphYmxlIHR5cGUKICBAQXBpVHlwZU1ldGFmaWVsZCgnTXlSZXNwb25zZScpCiAgX190eXBlID0gJ015UmVzcG9uc2UnOwoKICAvLyBJdCBpcyBub3QgcmVxdWlyZWQgdG8gYXBwbHkgQEV4cG9zZSBkZWNvcmF0b3IgKHBlciBjb25maWd1cmF0aW9uKQogIEBBcGlQcm9wZXJ0eSgpCiAgQElzU3RyaW5nKCkKICBkYXRhITogc3RyaW5nOwoKICBjb25zdHJ1Y3Rvcihwcm9wczogT21pdDxNeVJlc3BvbnNlLCAnX190eXBlJz4pIHsKICAgIE9iamVjdC5hc3NpZ24odGhpcywgcHJvcHMpOwogIH0KfQoKY2xhc3MgTWFpbnRlbmFuY2VFeGNlcHRpb24gZXh0ZW5kcyBTZXJ2aWNlVW5hdmFpbGFibGVFeGNlcHRpb24gaW1wbGVtZW50cyBUeXBlZERhdGFUcmFuc2Zlck9iamVjdCB7CiAgLy8gQXBpVHlwZU1ldGFmaWVsZCBtdXN0IGJlIGRlZmluZWQgdG8gc3BlY2lmeSBzZXJpYWxpemFibGUgdHlwZQogIEBBcGlUeXBlTWV0YWZpZWxkKCdNYWludGVuYW5jZUV4Y2VwdGlvbicpCiAgb3ZlcnJpZGUgX190eXBlID0gJ01haW50ZW5hbmNlRXhjZXB0aW9uJzsKCiAgLy8gQEV4cG9zZSBtdXN0IGJlIHVzZWQgZXhwbGljaXRseSBpbiBlcnJvciBjbGFzc2VzIGFzIG9ubHkgc3VjaCBmaWVsZHMgd2lsbCBiZSBleHBvc2VkCiAgQEV4cG9zZSgpCiAgQEFwaVByb3BlcnR5KHsKICAgIGV4YW1wbGU6ICcyMDIyLTEyLTMxVDExOjAwOjAwLjAwMFonLAogICAgZGVzY3JpcHRpb246ICdUaGVyZSBpcyBhIG1haW50ZW5hbmNlIG9uIHRoZSBzZXJ2ZXInLAogIH0pCiAgQElzRGF0ZVN0cmluZygpCiAgb3BlcmF0aW9uYWxBdCE6IERhdGU7Cn0KCkBDb250cm9sbGVyKCkKQEFwaUV4dHJhTW9kZWxzKFZhbGlkYXRpb25FeGNlcHRpb24sIEJhZFJlcXVlc3RFeGNlcHRpb24pCmNsYXNzIEFwcENvbnRyb2xsZXIgewogIEBQb3N0KCkKICBASHR0cENvZGUoSHR0cFN0YXR1cy5PSykKICBAQXBpT2tSZXNwb25zZSh7IHR5cGU6IE15UmVzcG9uc2UgfSkKICBAQXBpRm9yYmlkZGVuUmVzcG9uc2UoeyB0eXBlOiBNYWludGVuYW5jZUV4Y2VwdGlvbiB9KQogIC8vIFBvbHltb3JwaGlzbSBodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2RhdGEtbW9kZWxzL2luaGVyaXRhbmNlLWFuZC1wb2x5bW9ycGhpc20vCiAgQEFwaUJhZFJlcXVlc3RSZXNwb25zZSh7IHNjaGVtYTogeyBvbmVPZjogcmVmcyhWYWxpZGF0aW9uRXhjZXB0aW9uLCBCYWRSZXF1ZXN0RXhjZXB0aW9uKSB9IH0pCiAgZGVtbygpOiBNeVJlc3BvbnNlIHsKICAgIHJldHVybiBuZXcgTXlSZXNwb25zZSh7CiAgICAgIGRhdGE6ICdIZWxsbyEnLAogICAgfSk7CiAgfQp9CgpATW9kdWxlKHsKICBwcm92aWRlcnM6IFsKICAgIHsKICAgICAgcHJvdmlkZTogQVBQX1BJUEUsCiAgICAgIHVzZVZhbHVlOiBuZXcgVmFsaWRhdGlvblBpcGUoewogICAgICAgIGV4Y2VwdGlvbkZhY3Rvcnk6IFZhbGlkYXRpb25FeGNlcHRpb24uZXhjZXB0aW9uRmFjdG9yeSwKICAgICAgfSksCiAgICB9LAogIF0sCiAgaW1wb3J0czogW1R5cGVkUmVzcG9uc2VNb2R1bGVdLAogIGNvbnRyb2xsZXJzOiBbQXBwQ29udHJvbGxlcl0sCn0pCmNsYXNzIEFwcE1vZHVsZSB7fQoKYXN5bmMgZnVuY3Rpb24gYm9vdHN0cmFwKCkgewogIGNvbnN0IGFwcCA9IGF3YWl0IE5lc3RGYWN0b3J5LmNyZWF0ZShBcHBNb2R1bGUpOwogIGNvbnN0IGNvbmZpZyA9IG5ldyBEb2N1bWVudEJ1aWxkZXIoKS5idWlsZCgpOwogIGNvbnN0IGRvY3VtZW50ID0gU3dhZ2dlck1vZHVsZS5jcmVhdGVEb2N1bWVudChhcHAsIGNvbmZpZyk7CiAgU3dhZ2dlck1vZHVsZS5zZXR1cCgnLycsIGFwcCwgZG9jdW1lbnQpOwogIGF3YWl0IGFwcC5saXN0ZW4oMzAwMCk7Cn0KYm9vdHN0cmFwKCk7CmBgYAo= readmeEtag: '"a2ea10f602b6371a8fbd3c0eeca1a1e87dd795ab"' readmeLastModified: Thu, 01 Feb 2024 21:04:40 GMT repositoryId: 552389104 description: >- Allows implementation of polymorphism in OAS and exports nest.js exceptions as swagger schemes created: '2022-10-16T13:39:35Z' updated: '2023-06-15T13:09:53Z' language: TypeScript archived: false stars: 2 watchers: 1 forks: 0 owner: igrek8 logo: https://avatars.githubusercontent.com/u/7078731?v=4 license: MIT repoEtag: '"00489427455eabb5010a77df2b5d6f382cfa9fe7138958784b6dde3324671f4f"' repoLastModified: Thu, 15 Jun 2023 13:09:53 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/masterbomb/api v3: true repositoryMetadata: base64Readme: >- IyBNYXN0ZXJCb20gQVBJDQpbIVtjaV0oaHR0cHM6Ly9naXRodWIuY29tL01hc3RlcmJvbWIvYXBpL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vTWFzdGVyYm9tYi9hcGkvYWN0aW9ucy93b3JrZmxvd3MvY2kueW1sKQ0KWyFbaW1hZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9NYXN0ZXJib21iL2FwaS9hY3Rpb25zL3dvcmtmbG93cy9pbWFnZS55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL01hc3RlcmJvbWIvYXBpL2FjdGlvbnMvd29ya2Zsb3dzL2ltYWdlLnltbCkNCjxwIGFsaWduPSJjZW50ZXIiPg0KICA8aW1nIHNyYz0iL2RvY3MvaW1nL01CLnBuZyI+PC9pbWc+DQo8L3A+DQoNCk1vZGlmaWVkOiAyMDIxLTExDQoNCiMjIE5hdmlnYXRpb24NCjEuIFtEb2N1bWVudGF0aW9uXSguL2RvY3MvUkVBRE1FLm1kKQ0KMi4gW0xpY2Vuc2VdKCNsaWNlbnNlKSANCg0KIyMgTGljZW5zZQ0KVGhpcyByZXBvc2l0b3J5IGlzIGxpY2Vuc2VkIGJ5IEdQTHYzLiBTZWUgdGhlIGZ1bGwgbGljZW5zZSBbaGVyZV0oTElDRU5TRSk= readmeEtag: '"838d63bb1054c8ed4bedccbe8ffe9080e58a0769"' readmeLastModified: Fri, 21 Jan 2022 23:29:26 GMT repositoryId: 362316411 description: Public-facing RESTful API created: '2021-04-28T02:42:30Z' updated: '2024-06-04T23:56:50Z' language: TypeScript archived: false stars: 2 watchers: 0 forks: 0 owner: Masterbomb logo: https://avatars.githubusercontent.com/u/83322983?v=4 license: GPL-3.0 repoEtag: '"af6c29c8479b90f0db4af64e91640d65aa211e97f6c5bb8edbdc9fe8630549a2"' repoLastModified: Tue, 04 Jun 2024 23:56:50 GMT foundInMaster: true category: - Server - Server Implementations id: 2a84fcc559645de77dd307ea57700808 - source: openapi3 tags repository: https://github.com/aquanest/atmos-go v3: true repositoryMetadata: base64Readme: >- IyBhdG1vcy1nbwoKKipETyBOT1QgRURJVCBUSElTIENPREUgTUFOVUFMTFkhKioKCmF0bW9zLWdvIGlzICoqVW5vZmZpY2lhbCoqIEdvIGNsaWVudCB0byB1c2UgW0FUTU9TIFBsYXRmb3JtIEFQSV0oaHR0cHM6Ly93d3cuYXRtb3MuYXBwLykuCgpUaGUgY29kZSB3YXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdXNpbmcgW2F0bW9zLW9wZW5hcGktc3JjXShodHRwczovL2dpdGh1Yi5jb20vdW1hdGFyZTUvYXRtb3Mtb3BlbmFwaS1zcmMpLgoKIyMgVXNhZ2UKCmBgYHNoCmdvIGdldCBnaXRodWIuY29tL3VtYXRhcmU1L2F0bW9zLWdvCmBgYAo= readmeEtag: '"66aa1de25effe71335948b817a092afd55e290af"' readmeLastModified: Wed, 26 Jan 2022 12:35:17 GMT repositoryId: 452261817 description: Unofficial client library to use ATMOS Platform API created: '2022-01-26T12:12:15Z' updated: '2025-08-03T07:04:05Z' language: null archived: false stars: 2 watchers: 1 forks: 0 owner: aquanest logo: https://avatars.githubusercontent.com/u/88537514?v=4 repoEtag: '"3e4350aaa0d5b1de932f8b913f0d075b2d072c1f0876e91f020332b78a0d2a2c"' repoLastModified: Sun, 03 Aug 2025 07:04:05 GMT foundInMaster: true category: - SDK - Code Generators id: d91d20d59028e95de5102cd1f2eefe7f oldLocations: - https://github.com/umatare5/atmos-go - source: openapi3 tags repository: https://github.com/cbetta/json-schema-sensitivity-checker v3: true repositoryMetadata: base64Readme: >- IyBqc29uLXNjaGVtYS1zZW5zaXRpdml0eS1jaGVja2VyCgpbIVtucG0KdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL2pzb24tc2NoZW1hLXNlbnNpdGl2aXR5LWNoZWNrZXIuc3ZnKV0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL2pzb24tc2NoZW1hLXNlbnNpdGl2aXR5LWNoZWNrZXIpCiFbY2kgc3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vY2JldHRhL2pzb24tc2NoZW1hLXNlbnNpdGl2aXR5LWNoZWNrZXIvd29ya2Zsb3dzL05vZGUlMjBDSS9iYWRnZS5zdmcpCgpUaGlzIENMSSBhbGxvd3MgeW91IHRvIHByb3ZpZGUgYSBKU09OUGF0aCBleHByZXNzaW9uIGFuZCBydW4KW2BhbGV4YF0oaHR0cHM6Ly9hbGV4anMuY29tKSBhZ2FpbnN0IGFueSBtYXRjaGluZyBsaW5lcy4KCj4gVGhpcyB0b29sIGlzIGN1cnJlbnRseSBpbiBhbHBoYSBhbmQgaGFzIHByaW1hcmlseSBiZWVuIHRlc3RlZCBhZ2FpbnN0IE9wZW5BUEkKPiBmaWxlcy4gUFJzIGFyZSB3ZWxjb21lIQoKVGhpcyBwcm9qZWN0IGlzIHZlcnkgbXVjaCBpbnNwaXJlZCBieSBhbmQgYmFzZWQgb24gdGhlIHdvcmsgZG9uZSBvbiB0aGUKW2Bqc29uLXNjaGVtYS1zcGVsbC1jaGVja2VyYF0oaHR0cHM6Ly9naXRodWIuY29tL21oZWFwL2pzb24tc2NoZW1hLXNwZWxsLWNoZWNrZXIpCmJ5IE1pY2hhZWwgSGVhcC4KCiMjIEluc3RhbGxhdGlvbgoKYGBgYmFzaApucG0gaW5zdGFsbCAtZyBqc29uLXNjaGVtYS1zZW5zaXRpdml0eS1jaGVja2VyCmBgYAoKIyMgVXNhZ2UKCkNoZWNrIGFnYWluc3Qgc3BlY2lmaWMgZmllbGQgbmFtZXMgYXQgYW55IGRlcHRoOgoKYGBgYmFzaApqc29uLXNjaGVtYS1zZW5zaXRpdml0eS1jaGVja2VyIC1mICdkZXNjcmlwdGlvbix0aXRsZScgcGF0aC90by9vcGVuYXBpLmpzb24KYGBgCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHNwZWNpZnkgYSBKU09OUGF0aCBleHByZXNzaW9uIHlvdXJzZWxmLgoKYGBgYmFzaApqc29uLXNjaGVtYS1zZW5zaXRpdml0eS1jaGVja2VyIC1qICckLi5bImRlc2NyaXB0aW9uIiwidGl0bGUiXScgcGF0aC90by9vcGVuYXBpLmpzb24KYGBgCgojIyBPcHRpb25zCgpgYGBiYXNoClVzYWdlOiBiaW4gW29wdGlvbnNdIHNvdXJjZS1maWxlCgpPcHRpb25zOgogIC1WLCAtLXZlcnNpb24gICAgICAgICAgIG91dHB1dCB0aGUgdmVyc2lvbiBudW1iZXIKICAtdCwgLS10ZXh0ICAgICAgICAgICAgICB0cmVhdCBpbnB1dCBhcyBwbGFpbi10ZXh0IChub3QgbWFya2Rvd24pCiAgLWwsIC0taHRtbCAgICAgICAgICAgICAgdHJlYXQgaW5wdXQgYXMgaHRtbCAobm90IG1hcmtkb3duKQogIC1kLCAtLWRpZmYgICAgICAgICAgICAgIGlnbm9yZSB1bmNoYW5nZWQgbGluZXMgKGFmZmVjdHMgVHJhdmlzIG9ubHkpCiAgLWosIC0tanNvbi1wYXRoIFtwYXRoXSAgc3BlY2lmeSBhIGpzb25wYXRoIGV4cHJlc3Npb24gdG8gbWF0Y2gKICAtYywgLS1jb25maWcgW3BhdGhdICAgICBzcGVjaWZ5IGEgSlNPTiBmb3JtYXR0ZWQgQWxleCBjb25maWcgdG8gcGFzcyB0byBldmVyeSBtYXRjaAogIC1mLCAtLWZpZWxkcyBbZmllbGRzXSAgIHNwZWNpZnkgYSBjb21tYSBzZXBhcmF0ZWQgbApgYGAK readmeEtag: '"1d5e04c2421f4a435d41773bb9a428301645aa57"' readmeLastModified: Fri, 17 Nov 2023 13:19:57 GMT repositoryId: 227859847 description: Check the sensitivity of your JSON Schema (including OpenAPI!) documents created: '2019-12-13T14:41:20Z' updated: '2025-08-27T12:21:51Z' language: JavaScript archived: false stars: 3 watchers: 1 forks: 0 owner: cbetta logo: https://avatars.githubusercontent.com/u/7718?v=4 repoEtag: '"029de96c1ad6a474f8497d56d418a5f495fef042561d31d9a0794d38c4873dff"' repoLastModified: Wed, 27 Aug 2025 12:21:51 GMT foundInMaster: true category: Parsers id: ca8b847aee3149a89528c19339c49609 - source: openapi3 tags repository: https://github.com/protung/open-api-generator v3: true id: dad021a6042570a6ec3443b27243924c repositoryMetadata: base64Readme: >- T3BlbiBBcGkgR2VuZXJhdG9yCj09PT09PT09PT09PT09PT09PQoKWyFbQnVpbGRdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcm90dW5nL29wZW4tYXBpLWdlbmVyYXRvci93b3JrZmxvd3MvQnVpbGQvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3Byb3R1bmcvb3Blbi1hcGktZ2VuZXJhdG9yL2FjdGlvbnM/cXVlcnk9d29ya2Zsb3clM0FCdWlsZCticmFuY2glM0FtYWluKQpbIVtTb2Z0d2FyZSBMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWJyaWdodGdyZWVuLnN2ZyldKExJQ0VOU0UubWQpCgojIyBJbnN0YWxsYXRpb24KClJlcXVpcmUgdXNpbmcgY29tcG9zZXI6CgpgYGBzaGVsbAokIGNvbXBvc2VyIHJlcXVpcmUgcHJvdHVuZy9vcGVuLWFwaS1nZW5lcmF0b3IKYGBgCgojIyBMaWNlbnNlCgpUaGlzIHBhY2thZ2UgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFtNSVQgbGljZW5zZV0oTElDRU5TRS5tZCkuCg== readmeEtag: '"f4eff9d60bd0d86002e7a1209b4d4f5f613291be"' readmeLastModified: Sat, 10 Aug 2024 05:37:59 GMT repositoryId: 265488630 description: Library to generate the OpenApi specification in PHP created: '2020-05-20T07:41:03Z' updated: '2026-02-04T14:28:32Z' language: PHP archived: false stars: 3 watchers: 2 forks: 6 owner: protung logo: https://avatars.githubusercontent.com/u/81255167?v=4 license: MIT repoEtag: '"75d9bc88398e98504bbe4e5a52f9c6b830b0b48ba816e767a439496c80b37562"' repoLastModified: Wed, 04 Feb 2026 14:28:32 GMT category: - Server - Parsers foundInMaster: true oldLocations: - https://github.com/speicher210/open-api-generator - source: openapi3 tags repository: https://github.com/alexbernardi360/guitar-composer v3: true repositoryMetadata: base64Readme: >- IyBndWl0YXItY29tcG9zZXIKaHR0cHM6Ly9ndWl0YXItY29tcG9zZXIuaGVyb2t1YXBwLmNvbS8KClJFU1RmdWwgQVBJIHBlciBjaGl0YXJyaXN0aSwgcGVybWV0dGUgZGkgYWdnaXVuZ2VyZSwgbW9kaWZpY2FyZSBlIGNlcmNhcmUgdGVzdGkgZGkgY2Fuem9uaSBjb24gYWNjb3JkaS4KSSBkYXRpIHJpZ3VhcmRhbnRpIGxlIGNhbnpvbmkgdmVuZ29ubyBhZ2dpdW50aSBkYWdsaSB1dGVudGkuClZlbmdvbm8gaW52aWF0aSBkYXRpIHVsdGVyaW9yaSBvdHRlbnV0aSBkYSBbVGhlQXVkaW9EQl0oaHR0cDovL3d3dy50aGVhdWRpb2RiLmNvbS8gIlRoZUF1ZGlvREIiKS4KCi0tLS0tLS0tLS0tLQoKUHJvZ2V0dG8gZCdlc2FtZSBwZXIgaWwgY29yc28gW1BJQVRUQUZPUk1FIERJR0lUQUxJIFBFUiBMQSBHRVNUSU9ORSBERUwgVEVSUklUT1JJT10oaHR0cHM6Ly93d3cudW5pdXJiLml0L2luc2VnbmFtZW50aS1lLXByb2dyYW1taS8yNTU1NzcgIlBJQVRUQUZPUk1FIERJR0lUQUxJIFBFUiBMQSBHRVNUSU9ORSBERUwgVEVSUklUT1JJTyIpIGRlbGwnVW5pdmVyc2l0w6AgZGVnbGkgU3R1ZGkgZGkgVXJiaW5vIENhcmxvIEJvLlwKU3ZpbHVwcGF0byBkYSAqKkFsZXNzYW5kcm8gQmVybmFyZGkqKiwgbWF0cmljb2xhOiAyODQ5NjguCgotLS0tLS0tLS0tLS0KCi0gW0RvY3VtZW50YXppb25lIEFQSV0oaHR0cHM6Ly9hcHAuc3dhZ2dlcmh1Yi5jb20vYXBpcy1kb2NzL2FsZXhiZXJuYXJkaTM2MC9ndWl0YXItY29tcG9zZXIvMS4wICJEb2N1bWVudGF6aW9uZSBBUEkiKQoKLSBbU2NlbHRlIGltcGxlbWVudGF0aXZlXSguL2RvY3VtZW50YXRpb25faXRhL0NIT0lDRVMubWQgIlNjZWx0ZSBpbXBsZW1lbnRhdGl2ZSIpCgotIFtTZXJ2aXppIGVzdGVybmldKC4vZG9jdW1lbnRhdGlvbl9pdGEvRVhURVJOQUxTRVJWSUNFUy5tZCAiU2Vydml6aSBlc3Rlcm5pIikKCi0gW0RlcGxveV0oLi9kb2N1bWVudGF0aW9uX2l0YS9ERVBMT1kubWQgIkRlcGxveSIpCgotIFtHdWlkYSBhbGwndXRpbGl6em9dKC4vZG9jdW1lbnRhdGlvbl9pdGEvR1VJREUubWQgIkd1aWRhIGFsbCd1dGlsaXp6byIpCgo= readmeEtag: '"ca48043484c2ef5a0b7979f7b1bf1bbaa48f3843"' readmeLastModified: Fri, 12 Jun 2020 17:45:10 GMT repositoryId: 255621056 description: >- An openAPI for guitarists: add, edit and search lyrics and chords of your favorite songs. created: '2020-04-14T13:46:04Z' updated: '2020-06-12T17:45:40Z' language: HTML archived: false stars: 2 watchers: 1 forks: 0 owner: alexbernardi360 logo: https://avatars.githubusercontent.com/u/26739236?v=4 license: MIT repoEtag: '"a6cf96438e19d13720a9c2cbe349fce6c4dcda0fd86bf4f1a64d5c1680652132"' repoLastModified: Fri, 12 Jun 2020 17:45:40 GMT foundInMaster: true category: Mock id: 95448c995e4658a9e2b08a21299df7f6 - source: openapi3 tags repository: https://github.com/kasdihacene/global-azure-2022 v3: true id: 8b83f347681bd99eafa353c51ecf0a3e repositoryMetadata: base64Readme: >- IyMgRW5kLXRvLWVuZCBhcHBsaWNhdGlvbiBtb25pdG9yaW5nIHdpdGggQXp1cmUgQXBwIEluc2lnaHRzIDpyb2NrZXQ6CgohW0VuZC10by1lbmRfYXBwbGljYXRpb25fbW9uaXRvcmluZ193aXRoX0F6dXJlX0FwcF9JbnNpZ2h0c10oYXNzZXRzL0VuZC10by1lbmRfYXBwbGljYXRpb25fbW9uaXRvcmluZ193aXRoX0F6dXJlX0FwcF9JbnNpZ2h0cy5qcGVnKQoKClRoZSBwdXJwb3NlIG9mIHRoaXMgcmVwb3NpdG9yeSBpcyB0byBzaG93IHlvdSwgaG93IGRvIHdlIG1vbml0b3IgdGhlIEphdmEgYXBwbGljYXRpb25zIGRlcGxveWVkIG9uIEF6dXJlIEt1YmVybmV0ZXMgU2VydmljZSwgdXNpbmcgYSBmZWF0dXJlIG9mIEF6dXJlIE1vbml0b3IgdGhhdCBwcm92aWRlcyBleHRlbnNpYmxlIGFwcGxpY2F0aW9uIHBlcmZvcm1hbmNlIG1hbmFnZW1lbnQgKEFQTSkgYW5kIG1vbml0b3JpbmcgZm9yIGxpdmUgd2ViIGFwcHMuIERldmVsb3BlcnMgYW5kIERldk9wcyBwcm9mZXNzaW9uYWxzIGNhbiB1c2UgQXBwbGljYXRpb24gSW5zaWdodHMgdG86CgrinIUgQXV0b21hdGljYWxseSBkZXRlY3QgcGVyZm9ybWFuY2UgYW5vbWFsaWVzLgoK4pyFIEhlbHAgZGlhZ25vc2UgaXNzdWVzIGJ5IHVzaW5nIHBvd2VyZnVsIGFuYWx5dGljcyB0b29scy4KCuKchSBTZWUgd2hhdCB1c2VycyBhY3R1YWxseSBkbyB3aXRoIGFwcHMuCgrinIUgSGVscCBjb250aW51b3VzbHkgaW1wcm92ZSBhcHAgcGVyZm9ybWFuY2UgYW5kIHVzYWJpbGl0eS4KClNpbmNlICoqTm92ZW1iZXIgMjAyMCoqLCB1c2luZyBKYXZhIFNESyBpcyBubyBtb3JlIG5lZWRlZCB0byBpbnN0cnVtZW50IGphdmEgYXBwbGljYXRpb25zIGFuZCB0byBjb2xsZWN0IGFwcGxpY2F0aW9uIAp0ZWxlbWV0cnkuIFRoZSBzb2x1dGlvbiByZWNvbW1lbmRlZCBieSBNaWNyb3NvZnQgaXMgYW4gKiphdXRvLWluc3RydW1lbnRhdGlvbioqIHVzaW5nIDMuMCBhZ2VudCB3aGljaCB3aWxsIAp0cmFjayBhbmQgY29ycmVsYXRlIHRoZSBhcHBsaWNhdGlvbi4KCiMjIyBUZWNobmljYWwgc3RhY2sgOmJ1aWxkaW5nX2NvbnN0cnVjdGlvbjoKClRoZSBzdGFjayB1c2VkIG9uIHRoaXMgdHV0b3JpYWwgaXMgOgoKLSBTcHJpbmdCb290IDIuNi54Ci0gSmF2YSAxNwotIE9wZW5BUEkgMy4wIOKAlCBDb250cmFjdC1GSVJTVCAoRG9jdW1lbnRpbmcgdGhlIEFQSSkKLSBUZXJyYWZvcm0KLSBLdWJlcm5ldGVzIGFuZCBIZWxtIGNoYXJ0CgojIyMgSW5zdGFsbGluZyBkZXYgdG9vbHMg8J+SvAoKRm9yIHRoaXMgd29ya3Nob3Agd2UgbmVlZCBzb21lIHRvb2xzIHRvIGludGVyYWN0IHdpdGggdGhlIEF6dXJlIGFjY291bnQgYGF6IGNsaWAsIEt1YmVybmV0ZXMgc2VydmljZXMgKGBrdWJlY3RsYCksIG1heWJlIHRoZSB0b29sIGZvciBJYWFDIHRvIHByb3Zpc2lvbiBhIHJlc291cmNlcyAoYFRlcnJhZm9ybWApCgoxLSBBenVyZSBDbGk6CgogICAgV2luZG93czogaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvY2xpL2F6dXJlL2luc3RhbGwtYXp1cmUtY2xpLXdpbmRvd3M/dGFicz1henVyZS1jbGkKICAgIExpbnV4OiBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9mci1mci9jbGkvYXp1cmUvaW5zdGFsbC1henVyZS1jbGktbGludXg/cGl2b3RzPWFwdAogICAgTWFjb3M6IGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2ZyLWZyL2NsaS9henVyZS9pbnN0YWxsLWF6dXJlLWNsaS1tYWNvcwoKQ2hlY2sgOiAkIGF6IC12IG9yIGF6IC0tdmVyc2lvbgoKMi0ga3ViZWN0bCAobm90IGt1YmVsZXQpIDoKCiAgICBXaW5kb3dzOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZnIvZG9jcy90YXNrcy90b29scy9pbnN0YWxsLWt1YmVjdGwvI2luc3RhbGxlci1rdWJlY3RsLXN1ci13aW5kb3dzCiAgICBMaW51eDogaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2ZyL2RvY3MvdGFza3MvdG9vbHMvaW5zdGFsbC1rdWJlY3RsLyNpbnN0YWxsZXIta3ViZWN0bC1zdXItbGludXgKICAgIE1hY29zOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZnIvZG9jcy90YXNrcy90b29scy9pbnN0YWxsLWt1YmVjdGwvI2luc3RhbGxlci1hdmVjLWhvbWVicmV3LXN1ci1tYWNvcwoKQ2hlY2sgOiAkIGt1YmVjdGwgdmVyc2lvbgoKMy0gdGVycmFmb3JtIAogICAgCiAgICBBbGwgZW52aXJvbm1lbnRzOiBodHRwczovL3d3dy50ZXJyYWZvcm0uaW8vZG93bmxvYWRzLmh0bWwKCkNoZWNrIDogJCB0ZXJyYWZvcm0gLXYgb3IgdGVycmFmb3JtIC0tdmVyc2lvbgoKNC0gWW91IG5lZWQgYWxzbyBoZWxtIGNsaSAoSWYgeW91IHdhbnQgdG8gZGVwbG95IGRpcmVjdGx5IHRoZSBjaGFydHMgd2l0aG91dCB1c2luZyB0ZXJyYWZvcm0gLSBoZWxtX3JlbGVhc2UgcmVzb3VyY2Up readmeEtag: '"3bc943ec502b6bb2c2c6399270b3ba37bb88d299"' readmeLastModified: Sun, 01 May 2022 14:11:45 GMT repositoryId: 479689958 description: >- Communities around the world are organizing localized live streams for everyone around the world to join and learn about Azure from the best-in-class community leaders. created: '2022-04-09T10:16:15Z' updated: '2022-05-16T12:46:37Z' language: Java archived: false stars: 2 watchers: 2 forks: 0 owner: kasdihacene logo: https://avatars.githubusercontent.com/u/25183892?v=4 repoEtag: '"c2add7ce962d55754d3d61431d2064e4a99026f5f223b80c4d0c863418e98a77"' repoLastModified: Mon, 16 May 2022 12:46:37 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/gabrielmaialva33/soc-ex-api v3: true id: 39a8671b7b22dece20e934ddcda828bb repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPgogIDxicj4KICA8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2dhYnJpZWxtYWlhbHZhMzMvc29jLWV4LWFwaS9tYXN0ZXIvLmdpdGh1Yi9hc3NldHMvcG90aW9uLnBuZyIgYWx0PSJTb2MgRXggQXBpIiB3aWR0aD0iMjAwIj4KICA8YnI+CiAgQSBTb2NpYWwgTmV0d29yayBpbiA8YSBocmVmPSJodHRwczovL3d3dy5waG9lbml4ZnJhbWV3b3JrLm9yZy8iPlBob2VuaXg8L2E+CiAgPGJyPgo8L2gxPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyBzcmM9Imh0dHBzOi8vd2FrYXRpbWUuY29tL2JhZGdlL3VzZXIvZTYxODQyZDAtYzU4OC00NTg2LTk2YTMtZjA0NDhhNDM0YmU0L3Byb2plY3QvZjlmZTZmMzUtZTQyNS00MDZiLWFkM2QtNDYwZGE4MDg1OGY4LnN2ZyIgYWx0PSJ3YWthdGltZSI+CiAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhbmd1YWdlcy90b3AvZ2FicmllbG1haWFsdmEzMy9zb2MtZXgtYXBpP3N0eWxlPWZsYXQmbG9nbz1hcHB2ZXlvciIgYWx0PSJHaXRIdWIgdG9wIGxhbmd1YWdlIiA+CiAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhbmd1YWdlcy9jb3VudC9nYWJyaWVsbWFpYWx2YTMzL3NvYy1leC1hcGk/c3R5bGU9ZmxhdCZsb2dvPWFwcHZleW9yIiBhbHQ9IkdpdEh1YiBsYW5ndWFnZSBjb3VudCIgPgogIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9yZXBvLXNpemUvZ2FicmllbG1haWFsdmEzMy9zb2MtZXgtYXBpP3N0eWxlPWZsYXQmbG9nbz1hcHB2ZXlvciIgYWx0PSJSZXBvc2l0b3J5IHNpemUiID4KICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9nYWJyaWVsbWFpYWx2YTMzL3NvYy1leC1hcGk/Y29sb3I9MDBiOGQzP3N0eWxlPWZsYXQmbG9nbz1hcHB2ZXlvciIgYWx0PSJMaWNlbnNlIiAvPiAKICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ2FicmllbG1haWFsdmEzMy9zb2MtZXgtYXBpL2NvbW1pdHMvbWFzdGVyIj4KICAgIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9sYXN0LWNvbW1pdC9nYWJyaWVsbWFpYWx2YTMzL3NvYy1leC1hcGk/c3R5bGU9ZmxhdCZsb2dvPWFwcHZleW9yIiBhbHQ9IkdpdEh1YiBsYXN0IGNvbW1pdCIgPgogICAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbWFkZSUyMGJ5LU1haWEtMTVjM2Q2P3N0eWxlPWZsYXQmbG9nbz1hcHB2ZXlvciIgYWx0PSJNYWlhIiA+ICAKICA8L2E+CjwvcD4KCjxwIGFsaWduPSJjZW50ZXIiPgogIDxhIGhyZWY9IiNib29rbWFyay1hYm91dCI+QWJvdXQ8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7fCZuYnNwOyZuYnNwOyZuYnNwOwogIDxhIGhyZWY9IiNjb21wdXRlci10ZWNobm9sb2dpZXMiPlRlY2hub2xvZ2llczwvYT4mbmJzcDsmbmJzcDsmbmJzcDt8Jm5ic3A7Jm5ic3A7Jm5ic3A7CiAgPGEgaHJlZj0iI3BhY2thZ2UtaW5zdGFsbGF0aW9uIj5JbnN0YWxsYXRpb248L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7fCZuYnNwOyZuYnNwOyZuYnNwOwogIDxhIGhyZWY9IiN3cmVuY2gtY29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT4mbmJzcDsmbmJzcDsmbmJzcDt8Jm5ic3A7Jm5ic3A7Jm5ic3A7CiAgPGEgaHJlZj0iI21lbW8tZG9jdW1lbnRhdGlvbiI+RG9jdW1lbnRhdGlvbjwvYT4mbmJzcDsmbmJzcDsmbmJzcDt8Jm5ic3A7Jm5ic3A7Jm5ic3A7CiAgPGEgaHJlZj0iI21lbW8tbGljZW5zZSI+TGljZW5zZTwvYT4KPC9wPgoKPGJyPgoKIyMgOmJvb2ttYXJrOiBBYm91dAoKKipTb2MgRXgqKiBpcyBhIHNvY2lhbCBleHBlcmltZW50IHRoYXQgdXNlcyB0aGUgW1Bob2VuaXhdKGh0dHBzOi8vd3d3LnBob2VuaXhmcmFtZXdvcmsub3JnLykgZnJhbWV3b3JrIHRvIGNyZWF0ZSBhbiBBUEkuCgo8YnI+CgojIyA6Y29tcHV0ZXI6IFRlY2hub2xvZ2llcwoKLSAqKltFbGl4aXJdKGh0dHBzOi8vZWxpeGlyLWxhbmcub3JnLykqKgotICoqW1Bob2VuaXhdKGh0dHBzOi8vd3d3LnBob2VuaXhmcmFtZXdvcmsub3JnLykqKgotICoqW0RvY2tlcl0oaHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8pKioKLSAqKltQb3N0Z3JlU1FMXShodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy8pKioKCiMjIDpwYWNrYWdlOiBJbnN0YWxsYXRpb24KCmBgYGJhc2gKIyBjbG9uZSB0aGUgcmVwb3NpdG9yeQpnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2dhYnJpZWxtYWlhbHZhMzMvc29jLWV4LWFwaS5naXQKIyBlbnRlciB0aGUgZGlyZWN0b3J5CmNkIHNvYy1leC1hcGkKIyBpbnN0YWxsIHRoZSBkZXBlbmRlbmNpZXMKbWl4IGRlcHMuZ2V0ICMgb3IgbWl4IGRlcHMuZ2V0IC0tb25seSBwcm9kCiMgZWRpdCBgY29uZmlnL2Rldi5leHNgIGFuZCBjb25maWd1cmUgeW91ciBkYXRhYmFzZSBvciB1c2UgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcwpuYW5vIGNvbmZpZy9kZXYuZXhzICMgb3IgdmltIGNvbmZpZy9kZXYuZXhzCiMgcnVuIHRoZSBkYXRhYmFzZSBtaWdyYXRpb25zCm1peCBlY3RvLnNldHVwICMgb3IgbWl4IGVjdG8uc2V0dXAgLS1vbmx5IHByb2QKIyBzdGFydCB0aGUgc2VydmVyCm1peCBwaHguc2VydmVyICMgb3IgbWl4IHBoeC5zZXJ2ZXIgLS1vbmx5IHByb2QKYGBgCgojIyMgOndyZW5jaDogKipDb25maWd1cmF0aW9uKioKCm9wZW4gdGhlIGBjb25maWcvZGV2LmV4c2AgZmlsZSBhbmQgY29uZmlndXJlIHlvdXIgZGF0YWJhc2UKCmBgYGVsaXhpcgojIENvbmZpZ3VyZSB5b3VyIGRhdGFiYXNlCmNvbmZpZyA6c29jX2V4X2FwaSwgU29jRXhBcGkuUmVwbywKICB1c2VybmFtZTogInBvc3RncmVzIiwKICBwYXNzd29yZDogInBvc3RncmVzIiwKICBkYXRhYmFzZTogInNvY19leF9hcGlfZGV2IiwKICBob3N0bmFtZTogImxvY2FsaG9zdCIsCiAgc2hvd19zZW5zaXRpdmVfZGF0YV9vbl9jb25uZWN0aW9uX2Vycm9yOiB0cnVlLAogIHBvb2xfc2l6ZTogMTAKYGBgCgojIyMgOm1lbW86ICoqRG9jdW1lbnRhdGlvbioqCgpgYGBtZAojIFVzZSBpbnNvbW5pYSBvciBwb3N0bWFuIHRvIHRlc3QgdGhlIHJvdXRlcwoKZmlsZSBgc29jLWV4LWFwaS55YW1sYCBpbiByb290IGRpcmVjdG9yeQpgYGAKCiMjIyA6d3JpdGluZ19oYW5kOiAqKkF1dGhvcioqCgp8IFshW01haWFdKGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNjczMjA2Nz9zaXplPTEwMCldKGh0dHBzOi8vZ2l0aHViLmNvbS9nYWJyaWVsbWFpYWx2YTMzKSB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBbTWFpYV0oaHR0cHM6Ly9naXRodWIuY29tL2dhYnJpZWxtYWlhbHZhMzMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKIyMgTGljZW5zZQoKW01JVCBMaWNlbnNlXSguL0xJQ0VOU0UpCg== readmeEtag: '"b1b99a0a95b7edfe8f42ca34bd3a47c8513a137b"' readmeLastModified: Tue, 21 Nov 2023 03:12:28 GMT repositoryId: 675953605 description: >- Soc Ex is a social experiment that uses the Phoenix framework to create an API. created: '2023-08-08T05:29:52Z' updated: '2025-02-22T16:05:50Z' language: Elixir archived: false stars: 3 watchers: 0 forks: 0 owner: gabrielmaialva33 logo: https://avatars.githubusercontent.com/u/26732067?v=4 license: AGPL-3.0 repoEtag: '"c3b4cad4a07f469886eac93cae4acf16e237caa705e0d95e247ed3b7cc8d99bc"' repoLastModified: Sat, 22 Feb 2025 16:05:50 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/zubedev/deputy v3: true id: aa45746155c55d35e08ef817dd2cde1c repositoryMetadata: base64Readme: >- YGBgdGV4dArilojilojilojilojilojilojilZcg4paI4paI4paI4paI4paI4paI4paI4pWX4paI4paI4paI4paI4paI4paI4pWXIOKWiOKWiOKVlyAgIOKWiOKWiOKVl+KWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKVl+KWiOKWiOKVlyAgIOKWiOKWiOKVlwrilojilojilZTilZDilZDilojilojilZfilojilojilZTilZDilZDilZDilZDilZ3ilojilojilZTilZDilZDilojilojilZfilojilojilZEgICDilojilojilZHilZrilZDilZDilojilojilZTilZDilZDilZ3ilZrilojilojilZcg4paI4paI4pWU4pWdCuKWiOKWiOKVkSAg4paI4paI4pWR4paI4paI4paI4paI4paI4pWXICDilojilojilojilojilojilojilZTilZ3ilojilojilZEgICDilojilojilZEgICDilojilojilZEgICAg4pWa4paI4paI4paI4paI4pWU4pWdCuKWiOKWiOKVkSAg4paI4paI4pWR4paI4paI4pWU4pWQ4pWQ4pWdICDilojilojilZTilZDilZDilZDilZ0g4paI4paI4pWRICAg4paI4paI4pWRICAg4paI4paI4pWRICAgICDilZrilojilojilZTilZ0K4paI4paI4paI4paI4paI4paI4pWU4pWd4paI4paI4paI4paI4paI4paI4paI4pWX4paI4paI4pWRICAgICDilZrilojilojilojilojilojilojilZTilZ0gICDilojilojilZEgICAgICDilojilojilZEK4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWdIOKVmuKVkOKVkOKVkOKVkOKVkOKVkOKVneKVmuKVkOKVnSAgICAgIOKVmuKVkOKVkOKVkOKVkOKVkOKVnSAgICDilZrilZDilZ0gICAgICDilZrilZDilZ0KPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJFU1QgQVBJIGZvciBQcm94aWVzCmBgYApbIVtkamFuZ29dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGphbmdvLTQuMi0lMjMwOTJFMjA/c3R5bGU9ZmxhdC1zcXVhcmUmbG9nbz1kamFuZ28pXShodHRwczovL3d3dy5kamFuZ29wcm9qZWN0LmNvbSkKWyFbcHl0aG9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3B5dGhvbi0zLjEyLSUyMzM3NzZBQj9zdHlsZT1mbGF0LXNxdWFyZSZsb2dvPXB5dGhvbildKGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcpClshW215cHldKGh0dHBzOi8vd3d3Lm15cHktbGFuZy5vcmcvc3RhdGljL215cHlfYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9teXB5LWxhbmcub3JnKQpbIVtibGFja10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlJTIwc3R5bGUtYmxhY2stYmxhY2suc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmxvZ289c3R5bGVsaW50KV0oaHR0cHM6Ly9naXRodWIuY29tL3BzZi9ibGFjaykKWyFbUnVmZl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9lbmRwb2ludD91cmw9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2FzdHJhbC1zaC9ydWZmL21haW4vYXNzZXRzL2JhZGdlL3YyLmpzb24pXShodHRwczovL2dpdGh1Yi5jb20vYXN0cmFsLXNoL3J1ZmYpClshW3ByZS1jb21taXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcHJlLS1jb21taXQtZW5hYmxlZC1icmlnaHRncmVlbj9zdHlsZT1mbGF0LXNxdWFyZSZsb2dvPXByZS1jb21taXQpXShodHRwczovL3ByZS1jb21taXQuY29tKQpbIVtsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWJsdWU/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkKWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS96dWJlZGV2L2RlcHV0eS9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3p1YmVkZXYvZGVwdXR5L2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbCkKCiMjIEZlYXR1cmVzCgotIFt4XSBSZXN0IEFQSSBwcm92aWRpbmcgZnJlZSBwcm94aWVzIHRvIHVzZQotIFt4XSBJbnRlZ3JhdGlvbiB3aXRoIFtzY3JhcHlkb29dKGh0dHBzOi8vZ2l0aHViLmNvbS96dWJlZGV2L3NjcmFweWRvbykgdG8gb2J0YWluIHByb3hpZXMKLSBbeF0gSW50ZWdyYXRpb24gd2l0aCBbaW5zcGVjdG9yXShodHRwczovL2dpdGh1Yi5jb20venViZWRldi9pbnNwZWN0b3IpIHRvIHZhbGlkYXRlIHByb3hpZXMKLSBbeF0gUHJveGllcyB1cGRhdGVkIGFuZCBjaGVja2VkIGhvdXJseQoKIyMgVXNhZ2UKCmBgYGJhc2gKIyBDb3B5IHRoZSBleGFtcGxlIGVudmlyb25tZW50IGZpbGUgdG8gLmVudgojIFNDUkFQWURfVVJMIG11c3QgYmUgc2V0IGZvciB0aGUgd29ya2Zsb3cgdG8gd29yaywKIyBZb3UgY2FuIGdldCBhbiBpbnN0YW5jZSB1cCBhbmQgcnVubmluZyB0aHJvdWdoIGh0dHBzOi8vZ2l0aHViLmNvbS96dWJlZGV2L3NjcmFweWRvbwpjcCAuZW52LmV4YW1wbGUgLmVudgoKIyBCdWlsZCB0aGUgZG9ja2VyIGltYWdlIGFuZCBydW4gdGhlIGNvbnRhaW5lcgpkb2NrZXItY29tcG9zZSB1cCAtLWJ1aWxkIC0tZGV0YWNoCgojIFlvdSBjYW4gc2NhbGUgdXAgdGhlIG51bWJlciBvZiB3b3JrZXJzIGZvciBtb3JlIGNvbmN1cnJlbmN5CmRvY2tlci1jb21wb3NlIHVwIC0tc2NhbGUgd29ya2VyPTQgLS1kZXRhY2gKYGBgCgpbRGVwdXR5IEFQSV0oaHR0cDovL2xvY2FsaG9zdDo4MDAwKSBpcyBub3cgYXZhaWxhYmxlIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4gSWYgYERFQlVHPVRydWVgLCB5b3UgY2FuIHNlZSB0aGUgYnJvd3NhYmxlIEFQSS4KCltEZXB1dHkgQWRtaW5dKGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZG1pbikgaXMgbm93IGF2YWlsYWJsZSBhdCBodHRwOi8vbG9jYWxob3N0OjgwMDAvYWRtaW4uIENyZWRlbnRpYWxzIGFyZSBzZXQgYXV0b21hdGljYWxseSBmcm9tIGAuZW52YCBmaWxlLgoKIyMgRW5kcG9pbnRzCgotIFtyYW5kb21dKGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9wcm94aWVzL3JhbmRvbSk6IGAvcHJveGllcy9yYW5kb21gIC0gZ2V0IGEgcmFuZG9tIHByb3h5CgojIyBEZXZlbG9wbWVudAoKYGBgYmFzaAojIFBvZXRyeSBpcyByZXF1aXJlZCBmb3IgaW5zdGFsbGluZyBhbmQgbWFuYWdpbmcgZGVwZW5kZW5jaWVzCiMgaHR0cHM6Ly9weXRob24tcG9ldHJ5Lm9yZy9kb2NzLyNpbnN0YWxsYXRpb24KcG9ldHJ5IGluc3RhbGwKCiMgSWYgeW91IGRvbid0IGxpa2UgZG9pbmcgYHBvZXRyeSBydW5gIGFsbCB0aGUgdGltZQojIHBvZXRyeSBzaGVsbCAgIyBBY3RpdmF0ZSB2aXJ0dWFsIGVudmlyb25tZW50IGluIHRlcm1pbmFsCgojIFJlcXVpcmVzIGEgUG9zdGdyZVNRTCBkYXRhYmFzZSB0byBiZSBydW5uaW5nIGFuZCBjb25maWd1cmVkIGluIC5lbnYKIyBwb2V0cnkgcnVuIHB5dGhvbiBtYW5hZ2UucHkgbWFrZW1pZ3JhdGlvbnMgICMgQ3JlYXRlIG1pZ3JhdGlvbnMKcG9ldHJ5IHJ1biBweXRob24gbWFuYWdlLnB5IG1pZ3JhdGUgICMgUnVuIG1pZ3JhdGlvbnMKCiMgQ29sbGVjdCBzdGF0aWMgZmlsZXMgZm9yIHdoaXRlbm9pc2UKcG9ldHJ5IHJ1biBweXRob24gbWFuYWdlLnB5IGNvbGxlY3RzdGF0aWMKCiMgUnVuIERlcHV0eSBBUEkKcG9ldHJ5IHJ1biBweXRob24gbWFuYWdlLnB5IHJ1bnNlcnZlciAwLjAuMC4wOjgwMDAKCiMgQ3JlYXRlIGEgc3VwZXJ1c2VyCnBvZXRyeSBydW4gcHl0aG9uIG1hbmFnZS5weSBjcmVhdGVzdXBlcnVzZXIKCiMgSW5zdGFsbCBwcmUtY29tbWl0IGhvb2tzCnBvZXRyeSBydW4gcHJlLWNvbW1pdCBpbnN0YWxsCgojIEZvcm1hdHRpbmcgKGlucGxhY2UgZm9ybWF0cyBjb2RlKQpwb2V0cnkgcnVuIGJsYWNrIC4KCiMgTGludGluZyAoYW5kIHRvIGZpeCBhdXRvbWF0aWNhbGx5KQpwb2V0cnkgcnVuIHJ1ZmYgLgpwb2V0cnkgcnVuIHJ1ZmYgLS1maXggLgoKIyBUeXBlIGNoZWNraW5nCnBvZXRyeSBydW4gbXlweSAuCmBgYAoKQ29uZmlndXJhdGlvbiBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiBbcHlwcm9qZWN0LnRvbWxdKHB5cHJvamVjdC50b21sKS4KCiMjIFN1cHBvcnQKWyFbUGF5cGFsXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1BheXBhbC1ATWRadWJhaXJCZWctMjUzQjgwPyZsb2dvPXBheXBhbCldKGh0dHBzOi8vcGF5cGFsLm1lL01kWnViYWlyQmVnLzEwKQo= readmeEtag: '"5d04a31331afea7085618a6927f9bf54ade70673"' readmeLastModified: Sat, 13 Jul 2024 02:50:39 GMT repositoryId: 677937436 description: REST API for Proxies created: '2023-08-13T06:20:27Z' updated: '2024-07-13T02:50:44Z' language: Python archived: false stars: 2 watchers: 1 forks: 0 owner: zubedev logo: https://avatars.githubusercontent.com/u/41994356?v=4 license: MIT repoEtag: '"0dfde3177534c0bcc1931780ace442f00c64e3bca5b375c20615853ad057b441"' repoLastModified: Sat, 13 Jul 2024 02:50:44 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/lolamarket/api-specifications v3: true id: 03abc85bdf37bca72d19ee3994fa3970 repositoryMetadata: base64Readme: >- IyBBUEkgU3BlY2lmaWNhdGlvbnMKR2xvdm9YTCdzIFtPcGVuQVBJXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy9sYXRlc3QuaHRtbCkgc3BlY2lmaWNhdGlvbi4KClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZpbGVzIHRoYXQgZG9jdW1lbnQgR2xvdm9YTCdzIFJFU1QgQVBJczoKCi0gW1JldGFpbGVyIEFQSV0oaHR0cHM6Ly9sb2xhbWFya2V0LmdpdGh1Yi5pby9hcGktc3BlY2lmaWNhdGlvbnMvcmV0YWlsZXItb2FzKQo= readmeEtag: '"7ece5a4d6da84497bff32f38e3619107a59738cb"' readmeLastModified: Tue, 16 Apr 2024 15:28:21 GMT repositoryId: 581213163 description: API Specifications created: '2022-12-22T15:15:35Z' updated: '2024-02-16T11:08:40Z' language: HTML archived: false stars: 2 watchers: 4 forks: 0 owner: lolamarket logo: https://avatars.githubusercontent.com/u/63723569?v=4 repoEtag: '"18b65017149681f42e61826b4cc09f9b551f0d029849b5508a440e5e5bf07fe9"' repoLastModified: Fri, 16 Feb 2024 11:08:40 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/flock-community/kotlin-openapi-bindings v3: true id: c5ac96691a194e6c680faa896c8cbbbb repositoryMetadata: base64Readme: >- IVtNYXZlbiBDZW50cmFsIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tY2VudHJhbC92L2NvbW11bml0eS5mbG9jay5rb3RsaW54Lm9wZW5hcGkuYmluZGluZ3Mva290bGluLW9wZW5hcGktYmluZGluZ3MpClshW0J1aWxkXShodHRwczovL2dpdGh1Yi5jb20vZmxvY2stY29tbXVuaXR5L2tvdGxpbi1vcGVuYXBpLWJpbmRpbmdzL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vZmxvY2stY29tbXVuaXR5L2tvdGxpbi1vcGVuYXBpLWJpbmRpbmdzL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbCkKWyFbTGljZW5zZTogTUlUXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtTUlULXllbGxvdy5zdmcpXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkKCiMgS290bGluIE9wZW5BUEkgQmluZGluZ3MKCkEgS290bGluIE11bHRpcGxhdGZvcm0gbGlicmFyeSB0aGF0IHByb3ZpZGVzIGJpbmRpbmdzIGZvciBPcGVuQVBJIEpTT04gZmlsZXMuIFRoZSBsaWJyYXJ5IGNhbiBwYXJzZSBhbmQgc2VyaWFsaXplIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgdG8gS290bGluIGRhdGEgY2xhc3NlcywgaGFuZGxpbmcgdW5pb24gdHlwZXMgYW5kIHgtcHJvcGVydGllcyAoZXh0ZW5zaW9ucykuCgojIyBUYWJsZSBvZiBDb250ZW50cwoKLSBbRmVhdHVyZXNdKCNmZWF0dXJlcykKLSBbU3VwcG9ydGVkIFBsYXRmb3Jtc10oI3N1cHBvcnRlZC1wbGF0Zm9ybXMpCi0gW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKLSBbVXNhZ2VdKCN1c2FnZSkKICAtIFtPcGVuQVBJIHYzXSgjb3BlbmFwaS12MykKICAtIFtPcGVuQVBJIHYyIChTd2FnZ2VyKV0oI29wZW5hcGktdjItc3dhZ2dlcikKICAtIFtIYW5kbGluZyB4LXByb3BlcnRpZXNdKCNoYW5kbGluZy14LXByb3BlcnRpZXMpCi0gW0FQSSBEb2N1bWVudGF0aW9uXSgjYXBpLWRvY3VtZW50YXRpb24pCi0gW0NvbnRyaWJ1dGluZ10oI2NvbnRyaWJ1dGluZykKLSBbTGljZW5zZV0oI2xpY2Vuc2UpCgojIyBGZWF0dXJlcwoKLSBTdXBwb3J0IGZvciBib3RoIE9wZW5BUEkgdjMgYW5kIHYyIChTd2FnZ2VyKSBzcGVjaWZpY2F0aW9ucwotIEtvdGxpbiBNdWx0aXBsYXRmb3JtIHN1cHBvcnQgKEpWTSwgSlMsIE5hdGl2ZSkKLSBTZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24gb2YgT3BlbkFQSSBKU09OCi0gUHJvcGVyIGhhbmRsaW5nIG9mIHVuaW9uIHR5cGVzCi0gU3VwcG9ydCBmb3IgeC1wcm9wZXJ0aWVzIChleHRlbnNpb25zKQotIFR5cGUtc2FmZSBLb3RsaW4gZGF0YSBjbGFzc2VzIGZvciBPcGVuQVBJIG1vZGVscwoKIyMgU3VwcG9ydGVkIFBsYXRmb3JtcwoKLSBKVk0KLSBKYXZhU2NyaXB0IChOb2RlSlMpCi0gTmF0aXZlCiAgLSBtYWNPUyAoeDY0LCBhcm02NCkKICAtIExpbnV4ICh4NjQpCiAgLSBXaW5kb3dzICh4NjQpCgojIyBJbnN0YWxsYXRpb24KCkFkZCB0aGUgZGVwZW5kZW5jeSB0byB5b3VyIGJ1aWxkLmdyYWRsZS5rdHMgb3IgYnVpbGQuZ3JhZGxlIGZpbGU6CgpgYGBrb3RsaW4KcmVwb3NpdG9yaWVzIHsKICAgIG1hdmVuQ2VudHJhbCgpCn0KCmRlcGVuZGVuY2llcyB7CiAgICBpbXBsZW1lbnRhdGlvbigiY29tbXVuaXR5LmZsb2NrLmtvdGxpbngub3BlbmFwaS5iaW5kaW5nczprb3RsaW4tb3BlbmFwaS1iaW5kaW5nczowLjEuMSIpCn0KYGBgCgojIyBVc2FnZQoKIyMjIE9wZW5BUEkgdjMKCmBgYGtvdGxpbgovLyBVc2luZyBjb21tdW5pdHkuZmxvY2sua290bGlueC5vcGVuYXBpLmJpbmRpbmdzLk9wZW5BUElWMwovLyBhbmQgY29tbXVuaXR5LmZsb2NrLmtvdGxpbngub3BlbmFwaS5iaW5kaW5ncy5PcGVuQVBJVjNNb2RlbAoKdmFsIGpzb24gPSAiIiIKewogICJvcGVuYXBpIjogIjMuMC4wIiwKICAiaW5mbyI6IHsKICAgICJ0aXRsZSI6ICJNeSBBUEkiLAogICAgInZlcnNpb24iOiAiMS4wLjAiCiAgfSwKICAicGF0aHMiOiB7CiAgICAiLyI6IHsKICAgICAgImdldCI6IHsKICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk9LIiwKICAgICAgICAgICAgImNvbnRlbnQiOiB7CiAgICAgICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iOiB7CiAgICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9Cn0KIiIiCgovLyBQYXJzZSBPcGVuQVBJIEpTT04gdG8gS290bGluIG9iamVjdAp2YWwgb2JqOiBPcGVuQVBJVjNNb2RlbCA9IE9wZW5BUElWMy5kZWNvZGVGcm9tU3RyaW5nKGpzb24pCgovLyBTZXJpYWxpemUgYSBLb3RsaW4gb2JqZWN0IGJhY2sgdG8gSlNPTgp2YWwgc3RyOiBTdHJpbmcgPSBPcGVuQVBJVjMuZW5jb2RlVG9TdHJpbmcob2JqKQpgYGAKCiMjIyBPcGVuQVBJIHYyIChTd2FnZ2VyKQoKYGBga290bGluCi8vIFVzaW5nIGNvbW11bml0eS5mbG9jay5rb3RsaW54Lm9wZW5hcGkuYmluZGluZ3MuT3BlbkFQSVYyCi8vIGFuZCBjb21tdW5pdHkuZmxvY2sua290bGlueC5vcGVuYXBpLmJpbmRpbmdzLk9wZW5BUElWMk1vZGVsCgp2YWwganNvbiA9ICIiIgp7CiAgInN3YWdnZXIiOiAiMi4wIiwKICAiaW5mbyI6IHsKICAgICJ0aXRsZSI6ICJNeSBBUEkiLAogICAgInZlcnNpb24iOiAiMS4wLjAiCiAgfSwKICAicGF0aHMiOiB7CiAgICAiLyI6IHsKICAgICAgImdldCI6IHsKICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk9LIiwKICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgIm1lc3NhZ2UiOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9Cn0KIiIiCgovLyBQYXJzZSBTd2FnZ2VyIEpTT04gdG8gS290bGluIG9iamVjdAp2YWwgb2JqOiBPcGVuQVBJVjJNb2RlbCA9IE9wZW5BUElWMi5kZWNvZGVGcm9tU3RyaW5nKGpzb24pCgovLyBTZXJpYWxpemUgYSBLb3RsaW4gb2JqZWN0IGJhY2sgdG8gSlNPTgp2YWwgc3RyOiBTdHJpbmcgPSBPcGVuQVBJVjIuZW5jb2RlVG9TdHJpbmcob2JqKQpgYGAKCiMjIyBIYW5kbGluZyB4LXByb3BlcnRpZXMKClRoZSBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB4LXByb3BlcnRpZXMgKGV4dGVuc2lvbnMpIGluIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMuIFRoZXNlIHByb3BlcnRpZXMgYXJlIHN0b3JlZCBpbiBhbiBgeFByb3BlcnRpZXNgIGZpZWxkIGR1cmluZyBwYXJzaW5nIGFuZCBhcmUgcmVzdG9yZWQgd2hlbiBzZXJpYWxpemluZyBiYWNrIHRvIEpTT04uCgojIyBBUEkgRG9jdW1lbnRhdGlvbgoKRm9yIGRldGFpbGVkIEFQSSBkb2N1bWVudGF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gdGhlIFtEb2trYSBkb2N1bWVudGF0aW9uXShodHRwczovL2Zsb2NrLWNvbW11bml0eS5naXRodWIuaW8va290bGluLW9wZW5hcGktYmluZGluZ3MvKS4KCiMjIENvbnRyaWJ1dGluZwoKQ29udHJpYnV0aW9ucyB0byBrb3RsaW4tb3BlbmFwaS1iaW5kaW5ncyBhcmUgd2VsY29tZSEgVG8gY29udHJpYnV0ZToKCjEuIEZvcmsgdGhlIHJlcG9zaXRvcnkKMi4gQ3JlYXRlIGEgZmVhdHVyZSBicmFuY2ggKGBnaXQgY2hlY2tvdXQgLWIgZmVhdHVyZS9hbWF6aW5nLWZlYXR1cmVgKQozLiBDb21taXQgeW91ciBjaGFuZ2VzIChgZ2l0IGNvbW1pdCAtbSAnQWRkIHNvbWUgYW1hemluZyBmZWF0dXJlJ2ApCjQuIFB1c2ggdG8gdGhlIGJyYW5jaCAoYGdpdCBwdXNoIG9yaWdpbiBmZWF0dXJlL2FtYXppbmctZmVhdHVyZWApCjUuIE9wZW4gYSBQdWxsIFJlcXVlc3QKClBsZWFzZSBtYWtlIHN1cmUgdG8gdXBkYXRlIHRlc3RzIGFzIGFwcHJvcHJpYXRlLgoKIyMgTGljZW5zZQoKVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAtIHNlZSB0aGUgW0xJQ0VOU0VdKExJQ0VOU0UpIGZpbGUgZm9yIGRldGFpbHMuCg== readmeEtag: '"92569b9a92f77749ea38007e56fc236dfb58dd47"' readmeLastModified: Mon, 22 Sep 2025 20:43:41 GMT repositoryId: 629398742 description: Kotlin multiplatform bindings for parsing openapi3 spec created: '2023-04-18T08:29:05Z' updated: '2026-01-28T13:24:53Z' language: Kotlin archived: false stars: 7 watchers: 7 forks: 0 owner: flock-community logo: https://avatars.githubusercontent.com/u/44088861?v=4 repoEtag: '"8f16f5ad7feb3efd2a0622ab96afd29c4020d85e8da1c49667db9a3e495abf33"' repoLastModified: Wed, 28 Jan 2026 13:24:53 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/pradipmudi/expensys v3: true id: a77985f2e5a27065cb6a41d3726ba7bf repositoryMetadata: base64Readme: >- IyMgVGFibGUgb2YgQ29udGVudHMKLSBbRXhwZW5TeXNdKCNFeHBlblN5cykKLSBbSW50dWl0aW9uXSgjaW50dWl0aW9uKQotIFtLZXkgRmVhdHVyZXNdKCNrZXktZmVhdHVyZXMpCiAgICAtIFtFeHBlbnNlIExvZ2dpbmddKCNleHBlbnNlLWxvZ2dpbmcpCiAgICAtIFtNb250aGx5IFJlcG9ydHNdKCNtb250aGx5LXJlcG9ydHMpCiAgICAtIFtDYXRlZ29yaXphdGlvbl0oI2NhdGVnb3JpemF0aW9uKQogICAgLSBbU3ViY2F0ZWdvcmllc10oI3N1YmNhdGVnb3JpZXMpCiAgICAtIFtVc2VyLVNwZWNpZmljIFJlcG9ydHNdKCN1c2VyLXNwZWNpZmljLXJlcG9ydHMpCiAgICAtIFtVc2VyLUNlbnRyaWMgVmlld10oI3VzZXItY2VudHJpYy12aWV3KQogICAgLSBbU3ViY2F0ZWdvcnkgTWFwcGluZ10oI3N1YmNhdGVnb3J5LW1hcHBpbmcpCiAgICAtIFtEYXRhYmFzZSBJbnRlZ3JhdGlvbl0oI2RhdGFiYXNlLWludGVncmF0aW9uKQoKLSBbQVBJIENvbnRyYWN0XSgjZXhwZW5zeXMtb3BlbmFwaS1jb250cmFjdCkKLSBbSG93IHRvIFVzZV0oI2hvdy10by11c2UpCi0gW0NvbnRyaWJ1dGlvbiBHdWlkZWxpbmVzXSgjY29udHJpYnV0aW9uLWd1aWRlbGluZXMpCgoKIyAqKkV4cGVuU3lzKioKCioqRXhwZW5TeXMqKiBpcyBhbiBlZmZpY2llbnQgKipleHBlbnNlIHRyYWNraW5nKiogYXBwbGljYXRpb24gZGVzaWduZWQgdG8gaGVscCB5b3UgbWFuYWdlIHlvdXIgKipmaW5hbmNlcyoqIGFuZCBtYWludGFpbiBhIGRldGFpbGVkIHJlY29yZCBvZiB5b3VyICoqZXhwZW5zZXMqKi4gV2hldGhlciB5b3UgYXJlIGFuIGluZGl2aWR1YWwgbG9va2luZyB0byAqKmJ1ZGdldCoqIHlvdXIgcGVyc29uYWwgKipmaW5hbmNlcyoqIG9yIGEgKipidXNpbmVzcyBvd25lcioqIHRyYWNraW5nICoqZXhwZW5zZXMqKiwgKipFeHBlblN5cyoqIHN0cmVhbWxpbmVzIHRoZSBwcm9jZXNzIGZvciB5b3UuCgpGb3IgdGhpcywgSSd2ZSBtYWRlIHRoZSBVSSBmcm9tIHNjcmF0Y2ggYXMgd2VsbCBhbmQgaXQncyBhIHJlc3BvbnNpdmUgZGVzaWduLiBGZXcgc2NyZWVuc2hvdHMgZnJvbSB0aGUgYXBwbGljYXRpb24uCiMjIyAqKkFkZCBFeHBlbnNlKioKIVtTY3JlZW5zaG90IDIwMjQtMDEtMzAgYXQgNyAzNCAwMSBQTV0oaHR0cHM6Ly9naXRodWIuY29tL3ByYWRpcG11ZGkvZXhwZW5zeXMvYXNzZXRzLzY0ODk2MTMvYzdmNTZmYzUtMzE0YS00MzY5LTg1ZTQtYmU2OWY4ZTg5NjY1KQohW1NjcmVlbnNob3QgMjAyNC0wMS0zMCBhdCA3IDQ5IDQzIFBNXShodHRwczovL2dpdGh1Yi5jb20vcHJhZGlwbXVkaS9leHBlbnN5cy9hc3NldHMvNjQ4OTYxMy85ZDI4ZDg0Yi1lYWRjLTRkNDktODY4ZC0yMTU3OGY4ZWVkMzMpCgojIyMgKipWaWV3IGV4cGVuc2VzKioKIVtTY3JlZW5zaG90IDIwMjQtMDEtMzAgYXQgNyA0NCAxNSBQTV0oaHR0cHM6Ly9naXRodWIuY29tL3ByYWRpcG11ZGkvZXhwZW5zeXMvYXNzZXRzLzY0ODk2MTMvMDlhMmNlZDYtMDIxOS00NzI3LWIzYmUtYTYxM2QzNDdmYTBlKQohW1NjcmVlbiBTaG90IDIwMjQtMDEtMzAgYXQgMTkgNDUgMzZdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcmFkaXBtdWRpL2V4cGVuc3lzL2Fzc2V0cy82NDg5NjEzLzJmN2VmOTA5LTUwZDctNDFhZC1iZTRiLTc3ZGFiZTQzZmViMikKCiMjIyBNb250aGx5IFJlcG9ydAojIyMjICoqQnkgTWFpbiBjYXRlZ29yeSBhbmQgc3BlbnQgYnkgdXNlcioqCiFbU2NyZWVuIFNob3QgMjAyNC0wMS0zMCBhdCAxOSA1MiAwOF0oaHR0cHM6Ly9naXRodWIuY29tL3ByYWRpcG11ZGkvZXhwZW5zeXMvYXNzZXRzLzY0ODk2MTMvZTVkMGY5ZGUtZmE1NS00NTVhLTlmY2YtOGViNGQzMzdjYTA1KQoKIyMjIyAqKkJ5IFN1YiBjYXRlZ29yeSBhbmQgc3BlbnQgYnkgdXNlcioqCiFbU2NyZWVuIFNob3QgMjAyNC0wMS0zMCBhdCAxOSAzMyAyNV0oaHR0cHM6Ly9naXRodWIuY29tL3ByYWRpcG11ZGkvZXhwZW5zeXMvYXNzZXRzLzY0ODk2MTMvZDhlMzBlOTAtODJmZS00MWJkLTk5Y2UtMmRhOTQ2YTM1N2I3KQohW1NjcmVlbiBTaG90IDIwMjQtMDEtMzAgYXQgMTkgMzggMTRdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcmFkaXBtdWRpL2V4cGVuc3lzL2Fzc2V0cy82NDg5NjEzL2Q2ODI3OTI3LTM3NWEtNDU4ZC1hNWZjLTBjZWI3Yjg4ZTI4OCkKCgojIyMjICoqQnkgU3ViIGNhdGVnb3J5IGFuZCBzcGVudCBieSBhbGwqKgohW1NjcmVlbiBTaG90IDIwMjQtMDEtMzAgYXQgMTkgMzAgMTJdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcmFkaXBtdWRpL2V4cGVuc3lzL2Fzc2V0cy82NDg5NjEzLzI2MDdmNzFhLWFjNjEtNDc0Yi04YzQzLWU3ODQxOTc5NzQ3ZSkKIVtTY3JlZW4gU2hvdCAyMDI0LTAxLTMwIGF0IDE5IDMwIDI2XShodHRwczovL2dpdGh1Yi5jb20vcHJhZGlwbXVkaS9leHBlbnN5cy9hc3NldHMvNjQ4OTYxMy8yMTc4MTU5OS1hMWFhLTQzODItOGZlNC0xYmQ4ODQ3NWQ4NTkpCgoqKkdlbmVyYXRlZCB0aGUgbG9nbyBmb3IgbXkgYXBwbGljYXRpb24gZnJvbSBoZXJlOioqIGh0dHBzOi8vYXBwLmxvZ28uY29tL2Rhc2hib2FyZC8KCiMjIEludHVpdGlvbgpJIGZvdW5kIGl0IGNoYWxsZW5naW5nIHRvIHRyYWNrIG15IGRhaWx5ICoqZXhwZW5zZXMqKiB1c2luZyB0cmFkaXRpb25hbCBtZXRob2RzIHN1Y2ggYXMgR29vZ2xlIFNwcmVhZHNoZWV0cyBvciBleGlzdGluZyAqKmV4cGVuc2UgbWFuYWdlbWVudCBhcHBzKiouIFRoZXkgb2Z0ZW4gbGFja2VkIHRoZSBmbGV4aWJpbGl0eSBhbmQgZGF0YSBvcmdhbml6YXRpb24gSSBuZWVkZWQuIEFzIGEgcmVzdWx0LCBJIGRlY2lkZWQgdG8gZGV2ZWxvcCAqKkV4cGVuU3lzKiogdG8gYWRkcmVzcyB0aGVzZSBpc3N1ZXMgYW5kIGNyZWF0ZSBhIG1vcmUgdXNlci1mcmllbmRseSAqKmV4cGVuc2UgdHJhY2tpbmcqKiBzb2x1dGlvbi4gUGxlYXNlIGZlZWwgZnJlZSB0byBzdWJtaXQgKippc3N1ZXMqKiwgKipmZWF0dXJlIHJlcXVlc3RzKiogb3IgKipwdWxsIHJlcXVlc3RzKio7IEknbSBvcGVuIHRvIGFjY29tbW9kYXRpbmcgdGhlbSBpbiBmdXR1cmUgcmVsZWFzZXMuCgojIyBLZXkgRmVhdHVyZXMKCioqRXhwZW5TeXMqKiBvZmZlcnMgc2V2ZXJhbCBrZXkgZmVhdHVyZXMgdG8gZW5oYW5jZSB5b3VyICoqZXhwZW5zZSB0cmFja2luZyoqIGV4cGVyaWVuY2U6CgojIyMgKipFeHBlbnNlIExvZ2dpbmcqKgotIFVzZXJzIGNhbiBlYXNpbHkgbG9nIHRoZWlyIGRhaWx5ICoqZXhwZW5zZXMqKiBpbnRvIHRoZSBzeXN0ZW0sIHByb3ZpZGluZyBhIGRldGFpbGVkIHJlY29yZCBvZiB0aGVpciBzcGVuZGluZy4KCiMjIyAqKk1vbnRobHkgUmVwb3J0cyoqCi0gR2VuZXJhdGUgKiptb250aGx5IHJlcG9ydHMqKiBiYXNlZCBvbiB5b3VyIHNwZW5kaW5nLCBhbGxvd2luZyB5b3UgdG8gdHJhY2sgeW91ciBmaW5hbmNpYWwgaGFiaXRzIG92ZXIgdGltZS4KCiMjIyAqKkNhdGVnb3JpemF0aW9uKioKLSAqKkV4cGVuc2VzKiogYXJlIGNhdGVnb3JpemVkIGludG8gbWFpbiBjYXRlZ29yaWVzLCBpbmNsdWRpbmcgKioiRXNzZW50aWFsIiwgIkV4cGVuc2UiLCBhbmQgIkxvc3Mgb2YgTW9uZXkiLioqIFVzZXJzIGNhbiBhbHNvIHZpZXcgKiptb250aGx5IHJlcG9ydHMqKiBiYXNlZCBvbiB0aGVzZSBjYXRlZ29yaWVzLgoKIyMjICoqU3ViY2F0ZWdvcmllcyoqCi0gKipTdWJjYXRlZ29yaWVzKiogcHJvdmlkZSBtb3JlIGdyYW51bGFyaXR5LCBzdWNoIGFzICoqIkdyb2NlcmllcyIsICJWZWdldGFibGVzICYgRnJ1aXRzIiwgIk91dHNpZGUgRm9vZCIsICJTYWxvbiIsICJUcmFuc3BvcnQiLCAiTWVkaWNhbCIsICJTaG9wcGluZyIsIGFuZCAiTG9zcyBvZiBNb25leSIqKi4gVGhlc2UgKipzdWJjYXRlZ29yaWVzKiogYXJlIGRpc3BsYXllZCBhbG9uZ3NpZGUgdGhlaXIgcmVzcGVjdGl2ZSBtYWluIGNhdGVnb3JpZXMuCgojIyMgKipVc2VyLVNwZWNpZmljIFJlcG9ydHMqKgotIFVzZXJzIGNhbiBzZWxlY3QgYSBzcGVjaWZpYyBtb250aCBvciB2aWV3IHJlY29yZHMgZm9yIGFsbCBtb250aHMuIFRoZXkgY2FuIGFsc28gZmlsdGVyIGRhdGEgYmFzZWQgb24gY2F0ZWdvcmllcyAobWFpbiBvciBzdWIpIGFuZCB2aWV3ICoqZXhwZW5zZXMqKiBmb3IgYWxsIHVzZXJzLgoKIyMjICoqVXNlci1DZW50cmljIFZpZXcqKgotICoqRXhwZW5TeXMqKiBvZmZlcnMgdGhlIGFiaWxpdHkgdG8gc2VlIHJlcG9ydHMgYmFzZWQgb24gbWFpbiBjYXRlZ29yaWVzLCBhbGxvd2luZyB1c2VycyB0byB0cmFjayB0aGVpciBzcGVuZGluZyBwYXR0ZXJucyBlZmZlY3RpdmVseS4KCiMjIyAqKlN1YmNhdGVnb3J5IE1hcHBpbmcqKgotIFRoZSBhcHBsaWNhdGlvbiBpbmNsdWRlcyBhIGRpY3Rpb25hcnkgb2YgbWFwcGluZ3MgZm9yICoqc3ViY2F0ZWdvcmllcyoqLCBlbnN1cmluZyBjb25zaXN0ZW5jeSBhbmQgY2xhcml0eSBpbiAqKmV4cGVuc2UgdHJhY2tpbmcqKi4KCiMjIyAqKkRhdGFiYXNlIEludGVncmF0aW9uKioKLSBVc2VycyBjYW4gYWRkICoqZXhwZW5zZXMqKiBkaXJlY3RseSBpbnRvIHRoZSBkYXRhYmFzZSwgZW5zdXJpbmcgZGF0YSBhY2N1cmFjeSBhbmQgZWFzeSByZXRyaWV2YWwuCgojIyMgKipTb3J0aW5nKioKLSBXZSBjYW4gc29ydCB0aGUgcmVzdWx0IGJ5IGFueSBmaWVsZCBiYXNlZCBvbiByZXBvcnQKCiMjICoqSG93IHRvIFVzZSoqCgpUbyBnZXQgc3RhcnRlZCB3aXRoICoqRXhwZW5zZVRyYWNrcioqLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CgoxLiBDbG9uZSB0aGUgcmVwb3NpdG9yeS4KMi4gU2V0IHVwIHRoZSBuZWNlc3NhcnkgKipkYXRhYmFzZSoqIGZvciAqKmV4cGVuc2UgcmVjb3JkaW5nKiouCjMuIFVwZGF0ZSBEQiBjb25maWdzIG9uICoqYXBwbGljYXRpb24ueW1sKioKNC4gUnVuIHRoZSBhcHBsaWNhdGlvbi4KNS4gQmVnaW4gbG9nZ2luZyB5b3VyIGRhaWx5ICoqZXhwZW5zZXMqKiBhbmQgdXRpbGl6ZSB0aGUgdmFyaW91cyByZXBvcnRpbmcgYW5kIGZpbHRlcmluZyBvcHRpb25zIHRvIG1hbmFnZSB5b3VyICoqZmluYW5jaWFsIGRhdGEqKiBlZmZlY3RpdmVseS4KCllvdXIgZmVlZGJhY2sgYW5kIGNvbnRyaWJ1dGlvbnMgYXJlIHZhbHVhYmxlIHRvIG1lLCBhbmQgSSBsb29rIGZvcndhcmQgdG8gZW5oYW5jaW5nICoqRXhwZW5UcmFja3IqKiBmdXJ0aGVyIGJhc2VkIG9uIHlvdXIgbmVlZHMuCiMjIyAqKkhvdyB0byB1c2UgdGhlIGFwcCBpbiB5b3VyIGxvY2FsPyoqClRoZXNlIGFyZSB0aGUgVUkgZW5kcG9pbnRzOgotICoqQWRkIGV4cGVuc2U6KiogaHR0cDovL2xvY2FsaG9zdDo4MDgwL25ldwotICoqVmlldyByZXBvcnQ6KiogaHR0cDovL2xvY2FsaG9zdDo4MDgwLwotICoqVmlldyBFeHBlbnNlcyoqIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9leHBlbnNlcwoKKipDdXJyZW50IFRPRE86KiogSSBwbGFuIHRvIG1ha2UgdGhlIGRlc2lnbiBtb3JlIHVzZXIgZnJpZW5kbHkgYnkgY3JlYXRpbmcgYSBwYW5lbCB0byByZWRpcmVjdCB0byB0aGUgYWJvdmUgcGFnZXMuIFBsZWFzZSBmZWVsIGZyZWUgdG8gcmFpc2UgYW4gUFIgb24gdGhlIHNhbWUgaWYgeW91J3ZlIGFscmVhZHkuCgojIyAqKkV4cGVuU3lzIE9wZW5BUEkgQ29udHJhY3QqKgoKVGhlIEV4cGVuU3lzIE9wZW5BUEkgY29udHJhY3QgZGVmaW5lcyB0aGUgaW50ZXJmYWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBFeHBlblN5cyBhcHBsaWNhdGlvbiB0aHJvdWdoIGl0cyBBUEkuIFRoaXMgY29udHJhY3QgYWxsb3dzIGRldmVsb3BlcnMgdG8gdW5kZXJzdGFuZCBhbmQgaW50ZWdyYXRlIHdpdGggRXhwZW5TeXMgc2VhbWxlc3NseS4gWW91IGNhbiBhY2Nlc3MgdGhlIGZ1bGwgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGRpcmVjdGx5IHRocm91Z2ggU3dhZ2dlciBVSToKCltFeHBlblN5cyBPcGVuQVBJIENvbnRyYWN0IC0gU3dhZ2dlciBVSV0oaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvLz91cmw9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3ByYWRpcG11ZGkvZXhwZW5zeXMvbWFpbi9zcmMvbWFpbi9qYXZhL2NvbS9leHBlbnN5cy9vcGVuYXBpL2V4cGVuc3lzX29wZW5hcGkueW1sIy9kZWZhdWx0L2dldF9yZXBvcnQpCgpTaW1wbHkgY2xpY2sgb24gdGhlIGxpbmsgYWJvdmUgdG8gdmlldyBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgRXhwZW5TeXMgT3BlbkFQSSBjb250cmFjdCBpbiB5b3VyIHdlYiBicm93c2VyLgoKVGhlIEV4cGVuU3lzIE9wZW5BUEkgY29udHJhY3QgaXMgdGhlIGZvdW5kYXRpb24gZm9yIGJ1aWxkaW5nIGFwcGxpY2F0aW9ucyB0aGF0IGludGVyYWN0IHdpdGggRXhwZW5TeXMuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGFzc2lzdGFuY2UsIHBsZWFzZSBkb24ndCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuIEhhcHB5IEFQSSBkZXZlbG9wbWVudCEKCgojIyBDb250cmlidXRpb24gR3VpZGVsaW5lcwoKSWYgeW91IGhhdmUgYW55ICoqZmVhdHVyZSByZXF1ZXN0cyoqIG9yIHdvdWxkIGxpa2UgdG8gKipjb250cmlidXRlKiogdG8gKipFeHBlblN5cyoqLCBwbGVhc2UgZm9sbG93IG91ciBjb250cmlidXRpb24gZ3VpZGVsaW5lcyBhbmQgc3VibWl0ICoqcHVsbCByZXF1ZXN0cyoqLiBJJ20gY29tbWl0dGVkIHRvIGNvbnRpbnVhbGx5IGltcHJvdmluZyB0aGUgYXBwbGljYXRpb24gdG8gbWVldCB0aGUgZGl2ZXJzZSBuZWVkcyBvZiB0aGUgdXNlcnMuCgpUaGFuayB5b3UgZm9yIGNob29zaW5nICoqRXhwZW5TeXMqKiBmb3IgeW91ciAqKmV4cGVuc2UgdHJhY2tpbmcqKiBuZWVkcyEK readmeEtag: '"cd37a9a0c59467246aaccdcdb5376a9cdad2a952"' readmeLastModified: Sun, 23 Jun 2024 10:25:10 GMT repositoryId: 709144141 description: >- Efficient expense tracking app for individuals and businesses. Log daily expenses, generate monthly reports, categorize spending, and integrate with a database. Check out the API contract: https://petstore.swagger.io/?url=https://raw.githubusercontent.com/pradipmudi/expensys/main/src/main/java/com/expensys/openapi/expensys_openapi.yml created: '2023-10-24T05:33:21Z' updated: '2025-12-25T11:49:50Z' language: Java archived: false stars: 5 watchers: 1 forks: 1 owner: pradipmudi logo: https://avatars.githubusercontent.com/u/6489613?v=4 repoEtag: '"c3a63134977b36b69b6d3745a5dc02f70de680f68bfb47fe1f2a99dc4d19df7e"' repoLastModified: Thu, 25 Dec 2025 11:49:50 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/vymalo/api-watcher-ui v3: true id: 684700fb41dc7baa6aa5c582db3b7d1f repositoryMetadata: base64Readme: IyBBUEkgV2F0Y2hlciBVSQoKTW9yZSBpbmZvIGNvbWluZyBuZXh0 readmeEtag: '"8fa1b3915a2f7f25879f885ae703db717eac481b"' readmeLastModified: Sat, 11 Nov 2023 08:14:24 GMT repositoryId: 620795170 description: UI App for the SMS API Watcher, a Stub server for APIs created: '2023-03-29T11:44:33Z' updated: '2025-09-15T00:25:03Z' language: TypeScript archived: true stars: 2 watchers: 1 forks: 0 owner: vymalo logo: https://avatars.githubusercontent.com/u/128943481?v=4 repoEtag: '"2ed6bf31c8a54df674beec8b11e8a170349a849762a9678ef9e33b4b6e5b7395"' repoLastModified: Mon, 15 Sep 2025 00:25:03 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/worksapplications/swagger-devkit v3: true repositoryMetadata: base64Readme: >- IyBzd2FnZ2VyLWRldmtpdAoKWyFbR3JlZW5rZWVwZXIgYmFkZ2VdKGh0dHBzOi8vYmFkZ2VzLmdyZWVua2VlcGVyLmlvL1dvcmtzQXBwbGljYXRpb25zL3N3YWdnZXItZGV2a2l0LnN2ZyldKGh0dHBzOi8vZ3JlZW5rZWVwZXIuaW8vKSBbIVtucG0gdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL3N3YWdnZXItZGV2a2l0LnN2ZyldKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9qcy9zd2FnZ2VyLWRldmtpdCkgWyFbQ2lyY2xlQ0ldKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL1dvcmtzQXBwbGljYXRpb25zL3N3YWdnZXItZGV2a2l0LnN2Zz9zdHlsZT1zdmcpXShodHRwczovL2NpcmNsZWNpLmNvbS9naC9Xb3Jrc0FwcGxpY2F0aW9ucy9zd2FnZ2VyLWRldmtpdCkKCldyaXRlIGEgc3dhZ2dlciBkb2N1bWVudCB3aXRoIFR5cGVTY3JpcHQvTm9kZS5qcy4KCiMjIEZlYXR1cmVzCgotIFN1cHBvcnRzIE9wZW5BUEkgMyAobm90IGNvbXBsZXRlZCB5ZXQpCi0gV2VsbC10eXBlZCBsaWJyYXJ5IHdpdGggY29tcGxldGlvbnMKLSBEZWNsYXJhdGl2ZSBzdHlsZSwgaW5zcGlyZWQgYnkgW2F3cy1jZGtdKGh0dHBzOi8vZ2l0aHViLmNvbS9hd3NsYWJzL2F3cy1jZGspCi0gRXh0ZW5kIHdpdGggY3VzdG9tIHBsdWdpbnMKCiMjIEV4YW1wbGUKCi0gW3BldHN0b3JlIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9Xb3Jrc0FwcGxpY2F0aW9ucy9zd2FnZ2VyLWRldmtpdC9ibG9iL21hc3Rlci9leGFtcGxlL2luZGV4LmpzKQoKUnVuOiBgbm9kZSBpbmRleC5qc2Agb3IgYG5vZGUgaW5kZXguanMgLS1oZWxwYAoKIyMgQ29weXJpZ2h0CgpDb3B5cmlnaHQgMjAxOSAmY29weTsgV29ya3MgQXBwbGljYXRpb25zIENvLixMdGQuCgpMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgpZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K readmeEtag: '"e1cc3b0edd5c82f514a458793b97a9af2ff08737"' readmeLastModified: Fri, 26 Jul 2019 16:37:54 GMT repositoryId: 180304121 description: Write a swagger document with TypeScript/Node.js. created: '2019-04-09T06:54:27Z' updated: '2023-01-27T20:28:50Z' language: TypeScript archived: true stars: 1 watchers: 2 forks: 2 owner: WorksApplications logo: https://avatars.githubusercontent.com/u/1889132?v=4 license: Apache-2.0 repoEtag: '"c554b7918c7c3f71d647fd1fb4df0e66cdbf511dc26b3dd503eedeb0496eb8a5"' repoLastModified: Fri, 27 Jan 2023 20:28:50 GMT foundInMaster: true category: Server id: 53b3055bf3be9288026a4b57925cf979 - source: openapi3 tags repository: https://github.com/wdes/typescript-openapi-builder v3: true repositoryMetadata: base64Readme: >- IyBUeXBlU2NyaXB0IE9wZW5BUEkgYnVpbGRlcgoKWyFbQWN0aW9ucyBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS93ZGVzL3R5cGVzY3JpcHQtb3BlbmFwaS1idWlsZGVyL3dvcmtmbG93cy9SdW4lMjB0ZXN0cy9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vd2Rlcy90eXBlc2NyaXB0LW9wZW5hcGktYnVpbGRlci9hY3Rpb25zKQpbIVtBY3Rpb25zIFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL3dkZXMvdHlwZXNjcmlwdC1vcGVuYXBpLWJ1aWxkZXIvd29ya2Zsb3dzL0xpbnQlMjBhbmQlMjBidWlsZC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vd2Rlcy90eXBlc2NyaXB0LW9wZW5hcGktYnVpbGRlci9hY3Rpb25zKQpbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvd2Rlcy90eXBlc2NyaXB0LW9wZW5hcGktYnVpbGRlci9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2ZyldKGh0dHBzOi8vY29kZWNvdi5pby9naC93ZGVzL3R5cGVzY3JpcHQtb3BlbmFwaS1idWlsZGVyKQpbIVtucG0gdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL3R5cGVzY3JpcHQtb3BlbmFwaS1idWlsZGVyLnN2ZyldKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9qcy90eXBlc2NyaXB0LW9wZW5hcGktYnVpbGRlcikKCkdlbmVyYXRlIE9wZW5BUEkgc3BlYyB1c2luZyBUeXBlU2NyaXB0IGFubm90YXRpb25zCgpDbGVhbiwgZmFzdCwgc2ltcGxlLgoKIyMgVE9ETwoKLSBbIF0gSW1wcm92ZSBSRUFETUUubWQgdG8gc3RhdGUgY29kZSBpbXBvcnRhdGlvbgotIFsgXSBBZGQgbW9yZSB0ZXN0cwotIFsgXSBIYXZlIDEwMCUgY292ZXJhZ2UKCiMjIEtub3duIGJ1Z3MKCi0gW3hdIERvIE5PVCB1c2UgYWxpYXNlcyBmb3IgaW1wb3J0cyBsaWtlIGBpbXBvcnQgeyBQb3N0IGFzIFBvc3RPQSB9YCBpdCBicmVha3MgcGFyc2luZwoK readmeEtag: '"300805019b27ea637d61521f71f349b066be8688"' readmeLastModified: Mon, 20 Jul 2020 15:28:52 GMT repositoryId: 262324949 description: 'Generate OpenAPI spec using TypeScript annotations ' created: '2020-05-08T13:02:29Z' updated: '2023-01-28T13:00:16Z' language: TypeScript archived: true stars: 1 watchers: 1 forks: 0 owner: wdes logo: https://avatars.githubusercontent.com/u/25723041?v=4 license: MPL-2.0 repoEtag: '"3bc9fa71816ce7998b438beed01d45aa064fcca7e857a6858836039753ecae5b"' repoLastModified: Sat, 28 Jan 2023 13:00:16 GMT foundInMaster: true category: SDK id: 2cf245cb56941d7150f672e0c9a428c9 - source: openapi3 tags repository: https://github.com/freight-trust/open-edi v3: true repositoryMetadata: repositoryId: 297545146 description: >- OAS3 EDI API for Translation and Validation Transactional Service w/ Attestation & Non-Repudiation created: '2020-09-22T05:30:20Z' updated: '2020-11-04T15:00:24Z' language: HTML archived: false stars: 1 watchers: 0 forks: 0 owner: freight-trust logo: https://avatars.githubusercontent.com/u/57275623?v=4 repoEtag: '"2090d7c27e38829a0e1cf9d76ecea4081ff7f5394e68534ab346da0f49f50865"' repoLastModified: Wed, 04 Nov 2020 15:00:24 GMT foundInMaster: true id: b622714fa3da732c6dd0a82371f08ea0 - source: openapi3 tags repository: https://github.com/evanspauliuts/microservice-apis-coffeemesh v3: true id: 873ef7fa45e7f7e0f95052d7fe8c921c repositoryMetadata: base64Readme: >- IyBNaWNyb3NlcnZpY2UgYXBpcyBDb2ZmZWVtZXNoClRoaXMgYXBpIHJlc3RmdWwgYXBwbGljYXRpb24gY29mZmVlbWVzaCB1c2UgRmFzdEFwaSwgRmxhc2stc21vcmVzdCwgQ29kZSByZXBvc2l0b3J5IGFuZCBzZXJ2aWNlcwo= readmeEtag: '"56056ea0cd9ef9af4620f3b8c191dce663a527af"' readmeLastModified: Thu, 23 Feb 2023 18:05:27 GMT repositoryId: 605451015 description: >- This api restful application coffeemesh use FastApi, Flask-smorest, Code repository and services created: '2023-02-23T07:17:56Z' updated: '2023-07-28T06:18:31Z' language: Python archived: false stars: 1 watchers: 1 forks: 0 owner: EvansPauliuts logo: https://avatars.githubusercontent.com/u/15975585?v=4 repoEtag: '"0a05c0b5c293cb0bf841d5f25c1d90c642e1c3383ba5ecd1b98c271c378b829e"' repoLastModified: Fri, 28 Jul 2023 06:18:31 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/rail-shabayev/microservice-project2 v3: true id: 1f6ece8b31bed5851d58504d8bdd6183 repositoryMetadata: base64Readme: >- PGgxPlByb2plY3QncyBkYXRhYmFzZSB0YWJsZSBzdHJ1Y3R1cmU6PC9oMT4KCiFbaW1hZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9SYWlsLVNoYWJheWV2L21pY3Jvc2VydmljZS1wcm9qZWN0Mi9hc3NldHMvOTkxMzMyOTgvNjQzNTdjMWEtZDRkNS00MzIzLWE3NTItNDVjNzAzNWY1NmU2KQoKPGgxPlByb2plY3Qgc3RydWN0dXJlIGFuZCBmZWF0dXJlcyBpbiBkaWFncmFtOjwvaDE+CgohW2ltYWdlXShodHRwczovL2dpdGh1Yi5jb20vUmFpbC1TaGFiYXlldi9taWNyb3NlcnZpY2UtcHJvamVjdDIvYXNzZXRzLzk5MTMzMjk4LzdjZjc5NTBhLWRjZGMtNDFmYy04ZDFjLTg4NWQ5OTA2ZDhhOSkKCjxoMT5FbmRwb2ludHM6PC9oMT4KCiFbaW1hZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9SYWlsLVNoYWJheWV2L21pY3Jvc2VydmljZS1wcm9qZWN0Mi9hc3NldHMvOTkxMzMyOTgvYjAzOWE4MmUtYjNjMS00ZWU4LWEzNmUtOGZjZGNhMWQ4OTYyKQoKIVtpbWFnZV0oaHR0cHM6Ly9naXRodWIuY29tL1JhaWwtU2hhYmF5ZXYvbWljcm9zZXJ2aWNlLXByb2plY3QyL2Fzc2V0cy85OTEzMzI5OC9kOWUwMzVjYS0zMTA5LTRhZWUtODk1OC04ZjcwYTg5NGE4Y2EpCgohW2ltYWdlXShodHRwczovL2dpdGh1Yi5jb20vUmFpbC1TaGFiYXlldi9taWNyb3NlcnZpY2UtcHJvamVjdDIvYXNzZXRzLzk5MTMzMjk4LzI3ZWRlY2ViLTFhNjUtNDViMS05NmIwLWEzYjkyMWQ1YzIzMykKCiFbaW1hZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9SYWlsLVNoYWJheWV2L21pY3Jvc2VydmljZS1wcm9qZWN0Mi9hc3NldHMvOTkxMzMyOTgvOTQ5MGZjMmYtZDBiYS00MzA3LWJlMzMtMmI1YWQ5OTI5MDFiKQo= readmeEtag: '"392511d48020c08ecfb9dc11d708b1e410cfe01b"' readmeLastModified: Sun, 31 Mar 2024 01:56:58 GMT repositoryId: 764974606 description: 'pet project ' created: '2024-02-29T03:34:19Z' updated: '2025-10-26T04:56:53Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: Rail-Shabayev logo: https://avatars.githubusercontent.com/u/99133298?v=4 repoEtag: '"c973eeebf9138a0d2aaef4c9173c4e085c9ddadcbf80ee16390b32db1eaa6cfb"' repoLastModified: Sun, 26 Oct 2025 04:56:53 GMT category: Server foundInMaster: true - source: openapi3 tags repository: https://github.com/pevin/laravel-api-boilerplate v3: true repositoryMetadata: base64Readme: >- IyBsYXJhdmVsLWFwaS1ib2lsZXJwbGF0ZQoKUGVyc29uYWwgdGVtcGxhdGUgLyBzdGF0ZXIga2l0LyBib2lsZXJwbGF0ZSB1c2VkIGZvciBjcmVhdGluZyBuZXcgYXBpIGJhc2VkIG9uIGxhcmF2ZWwgYWxvbmcgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgbGlrZToKCi0gU3dhZ2dlci9PcGVuQXBpIDMuMCAKLSB0eW1vbi9qd3QtYXV0aAotIEVycm9yIGhhbmRsaW5nCgpSZWZlcmVuY2VzOgoKLSBbbGFyYXZlbC9mcmFtZXdvcmtdKGh0dHBzOi8vand0LWF1dGgucmVhZHRoZWRvY3MuaW8vZW4vZG9jcy9sYXJhdmVsLWluc3RhbGxhdGlvbi8pCi0gW3R5bW9uL2p3dC1hdXRoXShodHRwczovL2p3dC1hdXRoLnJlYWR0aGVkb2NzLmlvL2VuL2RvY3MvbGFyYXZlbC1pbnN0YWxsYXRpb24vKQotIFtkYXJrYW9ubGluZS9sNS1zd2FnZ2VyXShodHRwczovL2dpdGh1Yi5jb20vRGFya2FPbkxpbmUvTDUtU3dhZ2dlcikK readmeEtag: '"d57b2cf404771dae478b6757f99efed363f8d6bd"' readmeLastModified: Sun, 12 Jul 2020 15:24:33 GMT repositoryId: 279026479 description: >- Used for starting a new api based on Laravel along with jwt, swagger, and api error handler. created: '2020-07-12T08:50:57Z' updated: '2024-06-04T23:59:34Z' language: PHP archived: false stars: 1 watchers: 0 forks: 0 owner: pevin logo: https://avatars.githubusercontent.com/u/22132315?v=4 repoEtag: '"ccbd001980deb53dc292a09f6d4fe0172dc619d313ac2ede59e25d3740f8244f"' repoLastModified: Tue, 04 Jun 2024 23:59:34 GMT foundInMaster: true category: - Server - Server Implementations id: d02f42249534cfcac732404c7de1b93d - source: openapi3 tags repository: https://github.com/grandlinex/swagger-mate v3: true id: 6d9334e44d2e04e21dd95e81045609e3 repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyLU1hdGUKPiBHcmFuZExpbmVYIFN3YWdnZXItTWF0ZSAgcHJvamVjdAoKWyFbR2l0SHViXShodHRwczovL2JhZGdlLmZ1cnkuaW8vZ2gvZ3JhbmRsaW5leCUyRnN3YWdnZXItbWF0ZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vR3JhbmRsaW5lWC9zd2FnZ2VyLW1hdGUpClshW05QTV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9zdGF0aWMvdjE/bGFiZWw9TlBNJm1lc3NhZ2U9UGFja2FnZSZjb2xvcj1yZWQmbG9nbz1OUE0pXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AZ3JhbmRsaW5leC9zd2FnZ2VyLW1hdGUpCiFbVFNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vc3RhdGljL3YxP2xhYmVsPUxhbmd1YWdlJm1lc3NhZ2U9VHlwZVNjcmlwdCZjb2xvcj1ibHVlJmxvZ289VHlwZVNjcmlwdCkKCiMjIyBTdGF0dXMKIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1HcmFuZGxpbmVYX3N3YWdnZXItbWF0ZSZtZXRyaWM9YWxlcnRfc3RhdHVzKQohW1NlY3VyaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9R3JhbmRsaW5lWF9zd2FnZ2VyLW1hdGUmbWV0cmljPXNlY3VyaXR5X3JhdGluZykKIVtNYWludGFpbmFiaWxpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1HcmFuZGxpbmVYX3N3YWdnZXItbWF0ZSZtZXRyaWM9c3FhbGVfcmF0aW5nKQohW1JlbGlhYmlsaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9R3JhbmRsaW5lWF9zd2FnZ2VyLW1hdGUmbWV0cmljPXJlbGlhYmlsaXR5X3JhdGluZykKIVtDb3ZlcmFnZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9R3JhbmRsaW5lWF9zd2FnZ2VyLW1hdGUmbWV0cmljPWNvdmVyYWdlKQoKIyMjIElzc3VlcwohW0J1Z3NdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PUdyYW5kbGluZVhfc3dhZ2dlci1tYXRlJm1ldHJpYz1idWdzKQohW1Z1bG5lcmFiaWxpdGllc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9R3JhbmRsaW5lWF9zd2FnZ2VyLW1hdGUmbWV0cmljPXZ1bG5lcmFiaWxpdGllcykKIVtDb2RlIFNtZWxsc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9R3JhbmRsaW5lWF9zd2FnZ2VyLW1hdGUmbWV0cmljPWNvZGVfc21lbGxzKQoKIyMgRmVhdHVyZXMKCi0gR2VuZXJhdGUgc3dhZ2dlci57anNvbnx5bWx9IGZyb20gY29kZQotIEdlbmVyYXRlIEFwaSBjbGllbnQgZnJvbSBzd2FnZ2VyLntqc29ufHltbH0KCgojIyBRdWljayBTdGFydAoKIyMjIEluc3RhbGwKCjEuIEluc2F0YWwgbnBtIHBhY2thZ2UKYGBgc2hlbGwKICBucG0gaSAgQGdyYW5kbGluZXgvc3dhZ2dlci1tYXRlCmBgYAoKMi4gVXBkYXRlIHBhY2thZ2UuanNvbiAKYGBganNvbgp7CiAgLy8uLi4KICAic2NyaXB0cyI6IHsKICAgICJtYWtlU3BlYyI6ICJzd2FnZ2VyLW1hdGUiLAogICAgInNlcnZlU3BlYyI6ICJzd2FnZ2VyLW1hdGUgLS1zZXJ2ZSIsCiAgICAiYnVpbGRTcGVjTWFpbiI6ICJzd2FnZ2VyLW1hdGUgLS1idWlsZCAtLW1haW4iLAogICAgImJ1aWxkU3BlY0RldiI6ICJzd2FnZ2VyLW1hdGUgLS1idWlsZCAtLWRldiIKICB9LAogICJnbHgiOiB7CiAgICAia2VybmVsIjogImRpc3QvS2VybmVsLmpzIgogIH0KICAvLy4uLgp9CmBgYAoKfENvbW1hbmR8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnxgbnBtIHJ1biBtYWtlU3BlY2B8IG1ha2UgYG9wZW5hcGkuanNvbmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnxgbnBtIHJ1biBzZXJ2ZVNwZWNgfCBzZXJ2ZSBgb3BlbmFwaS5qc29uYCB3aXRoIFtzd2FnZ2VyLXVpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aSkgfAp8YG5wbSBydW4gYnVpbGRTcGVjTWFpbmB8IGJ1aWxkIGFwaSBjbGllbnQgKHByb2QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnxgbnBtIHJ1biBidWlsZFNwZWNEZXZgfCBidWlsZCBhcGkgY2xpZW50IChkZXYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgojIyMgU2VydmUgb3B0aW9uCgo+IERlZmF1bHQgcG9ydCA9IDkwMDAKCkVOViB2YXJpYWJsZXMKCnwgRU5WIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgIHwKfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8ICBTV19QT1JUICAgfCBzZXQgY3VzdG9tIHNlcnZlIHBvcnQgICAgfAp8ICBTV19BVVRIICAgfCBzZXQgZGVmYXVsdCBiZWFyZXIgdG9rZW4gfAoKIyMgRGVmaW5lIHR5cGVzCgojIyMgS2VybmVsCgpgYGB0eXBlc2NyaXB0CmltcG9ydCB7IFNQYXRoVXRpbCwgU3dhZ2dlciB9IGZyb20gJ0BncmFuZGxpbmV4L3N3YWdnZXItbWF0ZSc7Ci8vIE9wZW5BcGkgMy4wLjMgLSBSb290IEFwaSBkZWZpbml0aW9uCkBTd2FnZ2VyKHsKICBpbmZvOiB7CiAgICB0aXRsZTogJ0tlcm5lbFRlc3QnLAogICAgdmVyc2lvbjogJzAuMS4wJywgLy8gVmVyc2lvbiAob3B0aW9uYWwpIHdpbGwgYmUgcmVhZCBmcm9tIHBhY2thZ2UuanNvbgogIH0sCiAgb3BlbmFwaTogJzMuMC4zJywKICBzZXJ2ZXJzOiBbCiAgICB7CiAgICAgIHVybDogJ2h0dHA6Ly9sb2NhbGhvc3Q6OTI1NycsCiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYWxEZXYnLAogICAgfSwKICBdLAogIHBhdGhzOiB7CiAgICAgIC8vIFN0YXRpYyBkZWZpbml0aW9uCiAgICAnL3ZlcnNpb24nOiB7CiAgICAgIGdldDogewogICAgICAgIGRlc2NyaXB0aW9uOiAnR2V0IHZlcnNpb24nLAogICAgICAgIG9wZXJhdGlvbklkOiAnZ2V0VmVyc2lvbicsCiAgICAgICAgcmVzcG9uc2VzOiBTUGF0aFV0aWwuZGVmYXVsdFJlc3BvbnNlKCcyMDAnLCAnNTAwJyksCiAgICAgIH0sCiAgICB9LAogICAvLyBEeW5hbWljIGRlZmluaXRpb24gd2lsbCBiZSByZWFkIGZyb20gQFNQYXRoCiAgfSwKICBzZWN1cml0eTogWwogICAgewogICAgICBiZWFyZXJBdXRoOiBbXSwKICAgIH0sCiAgXSwKICBjb21wb25lbnRzOiB7CiAgICBzZWN1cml0eVNjaGVtZXM6IHsKICAgICAgYmVhcmVyQXV0aDogewogICAgICAgIHR5cGU6ICdodHRwJywKICAgICAgICBzY2hlbWU6ICdiZWFyZXInLAogICAgICAgIGJlYXJlckZvcm1hdDogJ0pXVCcsCiAgICAgIH0sCiAgICB9LAogIH0sCn0pCmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNvbWVLZXJuZWwge30KCmBgYAoKIyMjIEFjdGlvbgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgeyBTUGF0aFV0aWwsIFN3YWdnZXIgfSBmcm9tICdAZ3JhbmRsaW5leC9zd2FnZ2VyLW1hdGUnOwoKLy8gT3BlbkFwaSAzLjAuMyAtIFBhdGNoIGRlZmluaXRpb24KQFNQYXRoKHsKICAgICcvdGVzdCc6IHsKICAgICAgICBnZXQ6IHsKICAgICAgICAgICAgZGVzY3JpcHRpb246ICd0ZXN0JywKICAgICAgICAgICAgb3BlcmF0aW9uSWQ6ICdnZXRUZXN0JywgLy8gbmFtZSBmb3IgdGhlIGpzIGFwaSBjbGllbnQKICAgICAgICAgICAgc3VtbWFyeTogJ0Rlc2NyaXRwdGlvbiBzdW1tYXJ5JywKICAgICAgICAgICAgcmVzcG9uc2VzOiBTUGF0aFV0aWwuZGVmYXVsdFJlc3BvbnNlKCcyMDAnLCc0MDAnLCAnNTAwJykKICAgICAgICB9LAogICAgfSwKfSkKZXhwb3J0IGRlZmF1bHQgY2xhc3MgU29tZUJhc2VBcGlBY3Rpb24ge30KCmBgYAo= readmeEtag: '"bd6271c06b76d5b48f2e22e85f5223c2e0933bbf"' readmeLastModified: Tue, 30 Jul 2024 17:25:44 GMT repositoryId: 655675985 description: null created: '2023-06-19T11:21:42Z' updated: '2026-01-28T13:08:27Z' language: TypeScript archived: false stars: 1 watchers: 0 forks: 0 owner: GrandlineX logo: https://avatars.githubusercontent.com/u/89772740?v=4 license: BSD-3-Clause repoEtag: '"b2e62ba434f590d8fdf64edef79778acccf35cd56715756a0c69dc6a18aea806"' repoLastModified: Wed, 28 Jan 2026 13:08:27 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/cedn/hangman v3: true repositoryMetadata: base64Readme: >- IyBIYW5nbWFuClRoaXMgcHJvamVjdCBpcyBhIFJlc3QgQVBJIHRvIHBsYXkgSGFuZ21hbi4gVGhpcyBjb250ZXh0IG11c3QgYWxsb3cgbWUgdG8gdHJ5IHRvIHJlYWxpemUgYSBzaWRlIHByb2plY3QgYnkgdXNpbmcgdGhlIGNsZWFuIGFyY2hpdGVjdHVyZSwgdGhlIGNvbnRyYWN0IGZpcnN0IGRldmVsb3BtZW50IGFuZCBUREQgd2l0aCAxMDAlIGNvZGUgY292ZXJhZ2UuIEl0J3MgYW4gYW1iaXRpb3VzIHRhcmdldCwgYnV0IEkgbGlrZSB0byB0aGluayBpdCdzIGEgc3VjY2VzcyA6KQoKIyMgVGFibGUgb2YgY29udGVudAoxLiBbQ2xlYW4gQXJjaGl0ZWN0dXJlXSgjY2xlYW4tYXJjaGl0ZWN0aXJlKQoxLiBbU29tZSBXb3JkIGFib3V0IFByZXNlbnRlcl0oI3NvbWUtd29yZC1hYm91dC1wcmVzZW50ZXIpCjEuIFtJbXBsZW1lbnRhdGlvbiB3aXRoIFNwcmluZyBCb290XSgjaW1wbGVtZW50YXRpb24td2l0aC1zcHJpbmctYm9vdCkKMS4gW0NvbnRyYWN0IEZpcnN0IERldmVsb3BtZW50XSgjY29udHJhY3QtZmlyc3QtZGV2ZWxvcG1lbnQpCjEuIFtURERdKCN0ZGQpCjEuIFtDb2RlIENvdmVyYWdlXSgjY29kZS1jb3ZlcmFnZSkKMS4gW0luc3RhbGwsIGJ1aWxkIGFuZCBydW5dKCNpbnN0YWxsLWJ1aWxkLXJ1bikKMS4gW0xpbmtzXSgjbGlua3MpCjEuIFtTdGF0dXNdKCNzdGF0dXMpCgo8YSBuYW1lPSJjbGVhbi1hcmNpdGVjdHVyZSI+PC9hPgojIyBDbGVhbiBBcmNoaXRlY3R1cmUKClRoZSBDbGVhbiBBcmNoaXRlY3R1cmUgaXMgZGVmaW5lZCBieSBSb2JlcnQgQy4gTWFydGluIChha2EgVW5jbGUgQm9iKSwgYW5kIEkgYWR2aXNlIHlvdSB0byByZWFkIGhpcyBibG9nIGFydGljbGUgYWJvdXQgaXQ6IGh0dHBzOi8vYmxvZy5jbGVhbmNvZGVyLmNvbS91bmNsZS1ib2IvMjAxMi8wOC8xMy90aGUtY2xlYW4tYXJjaGl0ZWN0dXJlLmh0bWwuIE15IGltcGxlbWVudGF0aW9uIG1vZGVsaXplcyB0aGUgY29udHJvbGxlciBhbmQgdGhlIHByZXNlbnRlciBhcyAyIGRpZmZlcmVudCBjbGFzc2VzIG91dHNpZGUgb2YgU3ByaW5nIEJvb3QgZnJhbWV3b3JrIGNsYXNzZXMuIEluIHRoZSBleGFtcGxlcywgd2UgY291bGQgZmluZCwgbW9kZWxpemVzIHRoZSBwcmVzZW50ZXIgYXMgdGhlIHJldHVybiB0eXBlIG9mIHRoZSBjb250cm9sbGVyIGNhbGwuIFRoaXMgaXMgYSBtaXN0YWtlLCBhbmQgSSBhZHZpc2UgeW91IHRvIHJlYWQgdGhpcyBkZXRhaWxlZCBleHBsaWNhdGlvbiBieSBKZXJlbWlhaCBGbGFnYTogaHR0cHM6Ly9zb2Z0d2FyZWVuZ2luZWVyaW5nLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8zNTcwNTIvY2xlYW4tYXJjaGl0ZWN0dXJlLXVzZS1jYXNlLWNvbnRhaW5pbmctdGhlLXByZXNlbnRlci1vci1yZXR1cm5pbmctZGF0YS4gQW5vdGhlciBtaXN0YWtlIGlzIHRvIGJlbGlldmUgdGhhdCB0aGUgY29udHJvbGxlciBpcyBhIGZyYW1ld29yayAnY29udHJvbGxlcicgY2xhc3MgbGlrZSBpbiBhbGwgTVZDIGZyYW1ld29yay4gQW5vdGhlciBhcnRpY2xlIGJ5IFRvYmlhcyBTdHJhbmRiZXJnIHRvIHVuZGVyc3RhbmQgdGhpcyBjb250cm9sbGVyIGNvbmZ1c2lvbjogaHR0cHM6Ly9hZGV2ZWxvcGVyc2Rpc2NvdXJzZS5ibG9nc3BvdC5jb20vMjAyMC8wNi9jbGVhbi1hcmNoaXRlY3R1cmUtZGVteXN0aWZpZWQuaHRtbC4KCjxhIG5hbWU9InNvbWUtd29yZC1hYm91dC1wcmVzZW50ZXIiPjwvYT4KIyMjIFNvbWUgd29yZHMgYWJvdXQgUHJlc2VudGVyClVzaW5nIGEgcHJlc2VudGVyIGFzIGEgY2xhc3MgaW5zdGVhZCBvZiBhIHJldHVybiB2YWx1ZSBmcm9tIGNvbnRyb2xsZXIgY2FsbHMgYWxsb3dzIHRvIGhhdmUgbm9uLWhvbW9nZW5lb3VzIHJldHVybnMuIEluIHRoZSBjYXNlIG9mIGEgbGV0dGVyIHByb3Bvc2FsLCBpbiB0aGUgaGFuZ21hbiBnYW1lLCB0aGUgcmVzdWx0IGNhbiBiZSBhIGxldHRlciBmb3VuZCwgYSB3cm9uZyBsZXR0ZXIsIHRoZSB3b3JkIHRvIGd1ZXNzIGRpc2NvdmVyZWQgb3IgYSBnYW1lIG92ZXIuIEhhdmluZyBhIGhvbW9nZW5lb3VzIHR5cGUgYXMgYSByZXR1cm4gdmFsdWUgdGhhdCBjb3ZlcnMgYWxsIG9mIHRoZXNlIHBvc3NpYmlsaXRpZXMgaXMgb2J2aW91c2x5IGRpZmZpY3VsdC4gQW5kIHRoaXMgdHlwZSBtYXkgYmUgY29tcGxleCBhbmQgbm90IHJlc3BlY3QgdGhlIFNPTElEIHByaW5jaXBsZXMuIFRoZSBjYXNlIG9mIHRoZSByZXN1bHQgb2YgdGhlIHByb3Bvc2VkIGxldHRlciBjYW4gYmUgY29uc2lkZXJlZCBhcyBvbmUgZXZlbnQgYW1vbmcgc2V2ZXJhbCBwb3NzaWJsZS4gVGhlIHVzZSBjYXNlIGNhbGxzIHRoZSBwcmVzZW50ZXIgdG8gdXNlIHRoZSByaWdodCBtZXRob2QgdGhhdCBtYXRjaGVzIHRoZSBzdWl0YWJsZSBldmVudC4KCl9UaGUgJ291dHB1dCBib3VuZGFyeScgb2YgbGV0dGVyIHByb3Bvc2FsIHRoYXQgdGhlIHByZXNlbnRlciBtdXN0IGltcGxlbWVudDpfCmBgYGphdmEKcHVibGljIGludGVyZmFjZSBMZXR0ZXJQcm9wb3NhbE91dHB1dEJvdW5kYXJ5IHsKCXZvaWQgZ2FtZUluUHJvZ3Jlc3MoUHJvZ3Jlc3NpbmdHYW1lIGxldHRlclByb3Bvc2FsUmVzdWx0KTsKCXZvaWQgbG9zdEdhbWUoTG9zdEdhbWUgbG9zdEdhbWUpOwoJdm9pZCB3b25HYW1lKFdvbkdhbWUgd29uR2FtZSk7Cgl2b2lkIGdhbWVJc092ZXIoR2FtZU92ZXIgZ2FtZU92ZXIpOwp9CmBgYAo8YSBuYW1lPSJpbXBsZW1lbnRhdGlvbi13aXRoLXNwcmluZy1ib290Ij48L2E+CiMjIyBJbXBsZW1lbnRhdGlvbiB3aXRoIFNwcmluZyBCb290CkNvbnRyb2xsZXIgYW5kIHByZXNlbnRlciBhcmUgYWRhcHRlciBjbGFzc2VzLiBDb250cm9sbGVyIGNhbGxzIHRoZSBpbnRlcmFjdG9yICgndXNlY2FzZScgaW4gbXkgcHJvamVjdCdzIHRlcm1pbm9sb2d5KSB0aHJvdWdoIHRoZSBJbnB1dEJvdW5kYXJ5IGludGVyZmFjZS4gVXNlY2FzZSBjYWxscyB0aGUgcHJlc2VudGVyIHRocm91Z2ggdGhlIE91dHB1dEJvdW5kYXJ5LiBJdCBwcm92aWRlcyB0aGUgcmVzdWx0IG9mIHRoZSBwcm9jZXNzaW5nIHRvIHRoZSBQcmVzZW50ZXIuIFRoZSBwcmVzZW50ZXIgdHJhbnNmb3JtcyB0aGUgcmVzdWx0IGludG8gYSBEVE8uIEZpbmFsbHksIHRoZSBSZXN0IGNvbnRyb2xsZXIgY2FsbHMgdGhlIGNvbnRyb2xsZXIgdG8gcHJvY2VzcyB0aGUgYWN0aW9uIGFuZCB0aGVuIHJlYWRzIHRoZSByZXNwb25zZSBmcm9tIHRoZSBwcmVzZW50ZXIuCiFbSW1wbGVtZW50YXRpb24gZGlhZ3JhbV0oaW1hZ2VzL2FkYXB0ZXJzLXVzYWdlLnBuZykKClRoZSBwcmVzZW50ZXIgaXMgc3RhdGVmdWwgYmVjYXVzZSBpdCBzdG9yZXMgdGhlIERUTyBidXQgdGhlIFJlc3QgQ29udHJvbGxlciBpcyBzdGF0ZWxlc3MuIEkgY2hvb3NlIHRvIHByb3ZpZGUgY29udHJvbGxlciBhbmQgcHJlc2VudGVyIGF0IHRoZSBpbnN0YW50aWF0aW9uIG9mIHRoZSBSZXN0IGNvbnRyb2xsZXIuIEp1c3QgYW5ub3RhdGUgdGhlIHByZXNlbnRlciB3aXRoIGBAUmVxdWVzdFNjb3BlYCBhbGxvd3MgdG8gc29sdmUgdGhpcyBwcm9ibGVtLgoKX0V4YW1wbGUgZnJvbSBbY25hLmFwcHMuaGFuZ21hbi50ZWNoLkFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL0NlZE4vaGFuZ21hbi9ibG9iL2YxODBkNjMwYjFhOGU2ZTZhMDM3YzZhOWQyOTVmZWY3Mjg1NTI3NzEvaGFuZ21hbi1hcGkvc3JjL21haW4vamF2YS9jbmEvYXBwcy9oYW5nbWFuL3RlY2gvQXBwbGljYXRpb25Db25maWd1cmF0aW9uLmphdmEjTDQyLUw0NilfOgpgYGBqYXZhCkBCZWFuCkBSZXF1ZXN0U2NvcGUKcHVibGljIExldHRlclByb3Bvc2VkUHJlc2VudGVyIGdldExldHRlclByb3Bvc2FsT3V0cHV0Qm91bmRhcnkoKSB7CiAgcmV0dXJuIG5ldyBMZXR0ZXJQcm9wb3NlZFByZXNlbnRlcigpOwp9CmBgYAo8YSBuYW1lPSJjb250cmFjdC1maXJzdC1kZXZlbG9wbWVudCI+PC9hPgojIyBDb250cmFjdCBGaXJzdCBEZXZlbG9wbWVudApDb250cmFjdC1maXJzdCBkZXZlbG9wbWVudCBpcyBhYm91dCBkZWZpbmluZyB0aGUgY29udHJhY3Qgb2YgYW4gQVBJIGJlZm9yZSBzdGFydGluZyB0byBpbXBsZW1lbnQgaXQuIFVzaW5nIGNvZGUgZ2VuZXJhdGlvbiBmb3Igc2VydmVyIGFuZCBjbGllbnRzIGZyb20gdGhlIGNvbnRyYWN0IGd1YXJhbnRlZXMgdGhleSBhcmUgYWxpZ25lZC4gV2UgY2FuIGFsc28gbW9jayB0aGUgQVBJIHZlcnkgZWFzaWx5IGR1cmluZyBpdHMgZGV2ZWxvcG1lbnQuCgpJIHVzZSBbT3BlbkFQSSAzLjAuMV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4xKSB0byBkZXNjcmliZSB0aGUgY29udHJhY3Qgb2YgdGhlIEhhbmdtYW4gQVBJIGluIGEgZGVkaWNhdGVkIE1hdmVuIG1vZHVsZSBuYW1lZCAnc3BlY2lmaWNhdGlvbnMnLiBUaGUgJ29wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbicgYWxsb3dzIHRvIGdlbmVyYXRlIGNvZGUuIEkgd2FudCB0byBnZW5lcmF0ZSBvbmx5IGludGVyZmFjZXMgZm9yIHRoZSBzZXJ2aWNlIHNpZGUgYW5kIGNoYW5nZSBzb21lIHBhY2thZ2UncyBuYW1lcy4KCl9PcGVuYXBpIGdlbmVyYXRvciBtYXZlbiBwbHVnaW4gY29uZmlndXJhdGlvbiBmb3IgU3ByaW5nIHNlcnZlcl86CmBgYHhtbAo8YnVpbGQ+CiAgPHBsdWdpbnM+CiAgICA8cGx1Z2luPgogICAgICA8Z3JvdXBJZD5vcmcub3BlbmFwaXRvb2xzPC9ncm91cElkPgogICAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICAgIDwhLS0gUkVMRUFTRV9WRVJTSU9OIC0tPgogICAgICA8dmVyc2lvbj41LjEuMTwvdmVyc2lvbj4KICAgICAgPCEtLSAvUkVMRUFTRV9WRVJTSU9OIC0tPgogICAgICA8ZXhlY3V0aW9ucz4KICAgICAgICA8ZXhlY3V0aW9uPgogICAgICAgICAgPGdvYWxzPgogICAgICAgICAgICA8Z29hbD5nZW5lcmF0ZTwvZ29hbD4KICAgICAgICAgIDwvZ29hbHM+CiAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KICAgICAgICAgICAgPGlucHV0U3BlYz4ke3Byb2plY3QuYmFzZWRpcn0vc3JjL21haW4vcmVzb3VyY2VzL2hhbmdtYW4tb3BlbmFwaS55YW1sPC9pbnB1dFNwZWM+CiAgICAgICAgICAgIDxnZW5lcmF0b3JOYW1lPnNwcmluZzwvZ2VuZXJhdG9yTmFtZT4KICAgICAgICAgICAgPGNvbmZpZ09wdGlvbnM+CiAgICAgICAgICAgICAgPGludGVyZmFjZU9ubHk+dHJ1ZTwvaW50ZXJmYWNlT25seT4KICAgICAgICAgICAgICA8YmFzZVBhY2thZ2U+Y25hLmFwcHMuaGFuZ21hbi5hcGk8L2Jhc2VQYWNrYWdlPgogICAgICAgICAgICAgIDxhcGlQYWNrYWdlPmNuYS5hcHBzLmhhbmdtYW4uYXBpPC9hcGlQYWNrYWdlPgogICAgICAgICAgICAgIDxtb2RlbFBhY2thZ2U+Y25hLmFwcHMuaGFuZ21hbi5hcGk8L21vZGVsUGFja2FnZT4KICAgICAgICAgICAgPC9jb25maWdPcHRpb25zPgogICAgICAgICAgPC9jb25maWd1cmF0aW9uPgogICAgICAgIDwvZXhlY3V0aW9uPgogICAgICA8L2V4ZWN1dGlvbnM+CiAgICA8L3BsdWdpbj4KICA8L3BsdWdpbnM+CjwvYnVpbGQ+CmBgYAoKSSB1c2UgW1JhbmRvbSBXb3JkcyBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9tY25hdmVlbi9SYW5kb20tV29yZHMtQVBJKSB0byBnZW5lcmF0ZSB3b3JkcyB0byBndWVzcy4gSSB3cml0ZSB0aGUgY29udHJhY3Qgb2YgdGhlIG9wZXJhdGlvbiBjYWxsIGFuZCBnZW5lcmF0ZSB0aGUgY2xpZW50IHNpZGUgaW4gbmF0aXZlIEphdmEgYnkgdXNpbmcgJ29wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbicKCl9PcGVuYXBpIGdlbmVyYXRvciBtYXZlbiBwbHVnaW4gY29uZmlndXJhdGlvbiBmb3IgSmF2YSBjbGllbnRfOgpgYGB4bWwKPGJ1aWxkPgogIDxwbHVnaW5zPgogICAgPHBsdWdpbj4KICAgICAgPGdyb3VwSWQ+b3JnLm9wZW5hcGl0b29sczwvZ3JvdXBJZD4KICAgICAgPGFydGlmYWN0SWQ+b3BlbmFwaS1nZW5lcmF0b3ItbWF2ZW4tcGx1Z2luPC9hcnRpZmFjdElkPgogICAgICA8dmVyc2lvbj41LjEuMDwvdmVyc2lvbj4KICAgICAgPGV4ZWN1dGlvbnM+CiAgICAgICAgPGV4ZWN1dGlvbj4KICAgICAgICAgIDxnb2Fscz4KICAgICAgICAgICAgPGdvYWw+Z2VuZXJhdGU8L2dvYWw+CiAgICAgICAgICA8L2dvYWxzPgogICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CiAgICAgICAgICAgIDxpbnB1dFNwZWM+JHtwcm9qZWN0LmJhc2VkaXJ9L3NyYy9tYWluL3Jlc291cmNlcy9yYW5kb20td29yZHMtb3BlbmFwaS55YW1sPC9pbnB1dFNwZWM+CiAgICAgICAgICAgIDxnZW5lcmF0b3JOYW1lPmphdmE8L2dlbmVyYXRvck5hbWU+CiAgICAgICAgICAgIDxjb25maWdPcHRpb25zPgogICAgICAgICAgICAgIDxhcGlQYWNrYWdlPmNuYS5hcHBzLmhhbmdtYW4uYXBpY2xpZW50cy5yYW5kb213b3JkczwvYXBpUGFja2FnZT4KICAgICAgICAgICAgICA8ZGF0ZUxpYnJhcnk+amF2YTg8L2RhdGVMaWJyYXJ5PgogICAgICAgICAgICAgIDxmdWxsSmF2YVV0aWw+dHJ1ZTwvZnVsbEphdmFVdGlsPgogICAgICAgICAgICAgIDxsaWJyYXJ5Pm5hdGl2ZTwvbGlicmFyeT4KICAgICAgICAgICAgICA8bW9kZWxQYWNrYWdlPmNuYS5hcHBzLmhhbmdtYW4uYXBpY2xpZW50cy5yYW5kb213b3Jkcy5tb2RlbDwvbW9kZWxQYWNrYWdlPgogICAgICAgICAgICAgIDxvcGVuQXBpTnVsbGFibGU+ZmFsc2U8L29wZW5BcGlOdWxsYWJsZT4KICAgICAgICAgICAgICA8c3dhZ2dlckFubm90YXRpb25zPmZhbHNlPC9zd2FnZ2VyQW5ub3RhdGlvbnM+CiAgICAgICAgICAgIDwvY29uZmlnT3B0aW9ucz4KICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KICAgICAgICA8L2V4ZWN1dGlvbj4KICAgICAgPC9leGVjdXRpb25zPgogICAgPC9wbHVnaW4+CiAgPC9wbHVnaW5zPgo8L2J1aWxkPgpgYGAKPGEgbmFtZT0idGRkIj48L2E+CiMjIFRERApJIHN0YXJ0IGJ5IGltcGxlbWVudGluZyB0aGUgdXNlIGNhc2UgdGVzdHMuIFRoZSBwcm9ncmVzc2lvbiBpbnRvIHRoZXNlIHVuaXQgdGVzdHMgYWxsb3dzIG1lIHRvIGRlc2lnbiB0aGUgZG9tYWluIGVudGl0aWVzLiBDb3ZlcmFnZSBvZiB1c2UgY2FzZSB0ZXN0cyBhbGxvd3MgdGhlIGRvbWFpbiBlbnRpdGllcyB0byBlbWVyZ2UgbmF0dXJhbGx5LiBUaGVuLCBJIHJlYWxpemUgdGhlIGRldmVsb3BtZW50IG9mIGFkYXB0ZXJzIGFuZCB0aGVuIHRoZSBTcHJpbmcgQm9vdCBnbHVlLgoKVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBkb21haW4gKHVzZXIgY2FzZSBhbmQgZW50aXRpZXMpIGlzIHJlYWxpemVkIGJ5IHVzaW5nIG91dHNpZGUtaW4gVERELiBIb3dldmVyLCB0aGUgY29tcGxldGUgYXBwbGljYXRpb24gaXMgZGV2ZWxvcGVkIGZyb20gYW4gaW5zaWRlLW91dCBUREQgYW5nbGUuCgpObyBtb2NrIGZyYW1ld29ya3MgYXJlIHVzZWQsIHNvIGZha2UgYW5kIHNweSBjbGFzc2VzIGFyZSBjb2RlZCB0byBzaW11bGF0ZSBleHRlcm5hbCBkZXBlbmRlbmNpZXMgYmVoYXZpb3VyIG9yIHRvIGFzc2VydCBleHRlcm5hbCBkZXBlbmRlbmN5IGNhbGxzLgo8YSBuYW1lPSJjb2RlLWNvdmVyYWdlIj48L2E+CiMjIENvZGUgY292ZXJhZ2UKSSBjb3VwbGVkIEphY29jbyBhbmQgdGhlIFtDb3ZlcmFsbHNdKGh0dHBzOi8vY292ZXJhbGxzLmlvKSBzZXJ2aWNlIHRvIG1lYXN1cmUgY29kZSBjb3ZlcmFnZS4gVG8gYWNoaWV2ZSAxMDAlIGNvZGUgY292ZXJhZ2UsIEkgZXhjbHVkZWQgU3ByaW5nIEJvb3QgdGVjaG5pY2FsIGNsYXNzZXMgbGlrZSBhcHBsaWNhdGlvbiBhbmQgY29uZmlndXJhdGlvbiBjbGFzc2VzLiAKPGEgbmFtZT0iaW5zdGFsbC1idWlsZC1ydW4iPjwvYT4KIyMgSW5zdGFsbCwgYnVpbGQgYW5kIHJ1bgoqIFByZXJlcXVpc2l0ZTogaGF2ZSBKYXZhIDE2IGluc3RhbGxlZCAob3BlbkpESyBvciBPcmFjbGUgSkRLKQoqIENsb25lIHRoZSByZXBvCiogQnVpbGQgdGhlIHByb2plY3Qgd2l0aCBgbXZudyBjbGVhbiBwYWNrYWdlYCBmcm9tIGEgdGVybWluYWwKKiBSdW4gdGhlIGNsYXNzIGBjbmEuYXBwcy5oYW5nbWFuLnRlY2guSGFuZ21hbkFwcGxpY2F0aW9uYCBmcm9tIHlvdXIgSURFIG9yIHdpdGggYGphdmEgLWphciBoYW5nbWFuLWFwaS90YXJnZXQvaGFuZ21hbi1hcGktMC4wLjEtU05BUFNIT1QuamFyYCBmcm9tIGEgdGVybWluYWwuIAoqIFVzZSBbdGhlIE9wZW5BUEkgY29udHJhY3RdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9DZWROL2hhbmdtYW4vbWFpbi9zcGVjaWZpY2F0aW9ucy9zcmMvbWFpbi9yZXNvdXJjZXMvaGFuZ21hbi1vcGVuYXBpLnlhbWwpIHRvIHBsYXkgOikKPGEgbmFtZT0ibGlua3MiPjwvYT4KIyMgTGlua3MKQWJvdXQgY2xlYW4gYXJjaGl0ZWN0dXJlOgoqIFJvYmVydCBDLiBNYXJ0aW4ncyBibG9nOiBodHRwczovL2Jsb2cuY2xlYW5jb2Rlci5jb20vCiogVG9iaWFzIFN0cmFuZGJlcmcncyBibG9nOiBodHRwczovL2FkZXZlbG9wZXJzZGlzY291cnNlLmJsb2dzcG90LmNvbS8KKiBKZXJlbWlhaCBGbGFnYSdzIGJsb2cgaHR0cHM6Ly9qZXJlbWlhaGZsYWdhLmdpdGh1Yi5pby8KCkFib3V0IE9wZW5BUEk6CiogT3BlbkFQSSB2My4wLjEgU3BlY2lmaWNhdGlvbnMgOiBodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjEKKiBTcHJpbmcgZ2VuZXJhdG9yIG9wdGlvbnM6IGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9kb2NzL2dlbmVyYXRvcnMvc3ByaW5nCiogSmF2YSBjbGllbnQgZ2VuZXJhdG9yIG9wdGlvbnM6IGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9kb2NzL2dlbmVyYXRvcnMvamF2YQoKQWJvdXQgY29kZSBjb3ZlcmFnZToKKiBKYWNvY28gbWF2ZW4gcGx1Z2luOiBodHRwczovL3d3dy5lY2xlbW1hLm9yZy9qYWNvY28vdHJ1bmsvZG9jL21hdmVuLmh0bWwKKiBDb3ZlcmFsbHMgOiBodHRwczovL2NvdmVyYWxscy5pbwo8YSBuYW1lPSJzdGF0dXMiPjwvYT4KIyMgU3RhdHVzClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kuY29tL0NlZE4vaGFuZ21hbi5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL3RyYXZpcy1jaS5jb20vQ2VkTi9oYW5nbWFuKSBbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi9DZWROL2hhbmdtYW4vYmFkZ2Uuc3ZnP2JyYW5jaD1tYWluKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL0NlZE4vaGFuZ21hbj9icmFuY2g9bWFpbikK readmeEtag: '"d91d17af7cfee848cdd41528d7b6262198f7a604"' readmeLastModified: Mon, 23 Sep 2024 09:42:38 GMT repositoryId: 346851163 description: Hangman game created: '2021-03-11T22:02:48Z' updated: '2024-09-23T09:42:42Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: CedN logo: https://avatars.githubusercontent.com/u/4160253?v=4 license: Apache-2.0 repoEtag: '"b4f68859bfecbe1565821925a6756a25affcb4a9e81bc0721b2346d998f44993"' repoLastModified: Mon, 23 Sep 2024 09:42:42 GMT foundInMaster: true category: SDK id: de58be3df3712f388da92d99c4cc6b08 - source: openapi3 tags repository: https://github.com/ved-asole/crimsonsky v3: true id: caf53dadb58e08fbe8abaa2a27544acf repositoryMetadata: base64Readme: >- IyBDcmltc29uU2t5IC0gQW4gRmxpZ2h0IEJvb2tpbmcgTWljcm9zZXJ2aWNlcyBBcHBsaWNhdGlvbgoKIyBMaXZlIExpbmsgLyBEZW1vIExpbms6IPCflJcKQWNjZXNzIG15IHNpdGUgYXQgKipbbG9jYWxob3N0Ojg3NjVdKGh0dHA6Ly9sb2NhbGhvc3Q6ODc2NSkqKgoKIyBUYWJsZSBvZiBDb250ZW50OiDwn5ORCgotIFtBYm91dCBUaGUgQXBwXSgjYWJvdXQtdGhlLWFwcC0pCi0gW1NjcmVlbnNob3RzXSgjc2NyZWVuc2hvdHMtKQotIFtUZWNobm9sb2dpZXNdKCN0ZWNobm9sb2dpZXMtJUVGJUI4JThGLS0lRUYlQjglOEYpCi0gW1NldHVwXSgjc2V0dXAtKQogIC0gW0phdmEgKyBTcHJpbmcgQm9vdF0oI2phdmEtLXNwcmluZy1ib290KQogICAgLSBbQXZhaWxhYmxlIFNjcmlwdHNdKCNhdmFpbGFibGUtc2NyaXB0cy0tKQotIFtBcHByb2FjaF0oI2FwcHJvYWNoLSkKLSBbU3RhdHVzXSgjc3RhdHVzLSkKLSBbTGljZW5zZV0oI2xpY2Vuc2UtKQoKIyBBYm91dCB0aGUgQXBwOiDwn5OaCkNyaW1zb25Ta3kgaXMgYSBmbGlnaHQgYm9va2luZyBzeXN0ZW0gYnVpbHQgdXNpbmcgU3ByaW5nIEJvb3QgTWljcm9zZXJ2aWNlcyBhbmQgS2Fma2EsIGhvc3RlZCBvbiBBV1MgRUMyLiBUaGUgc3lzdGVtIGlzIGRlc2lnbmVkIHRvIGhhbmRsZSBmbGlnaHQgc2VhcmNoLCBib29raW5nLCBhbmQgcGF5bWVudHMgaW4gYSBzY2FsYWJsZSBhbmQgcmVzaWxpZW50IG1hbm5lci4gVGhlIGFyY2hpdGVjdHVyZSBmb2xsb3dzIGEgbWljcm9zZXJ2aWNlcyBwYXR0ZXJuIHdpdGggZWFjaCBzZXJ2aWNlIGRlY291cGxlZCB0byBlbmhhbmNlIGZsZXhpYmlsaXR5IGFuZCBmYXVsdC10b2xlcmFuY2UuCgojIFNjcmVlbnNob3RzOiDwn5O3CgohW0NyaW1zb25Ta3kgQXJjaGl0ZWN0dXJlIERpYWdyYW1dKC4vaGlnaC1sZXZlbC1kaWFncmFtLnBuZykKCiMgVGVjaG5vbG9naWVzOiDimJXvuI8gIOKam++4jwoKLSBKYXZhCi0gU3ByaW5nIENsb3VkCi0gU3ByaW5nIEJvb3QKLSBTcHJpbmcgV2ViCi0gU3ByaW5nIEFwaSBHYXRld2F5Ci0gU3ByaW5nIERhdGEgSlBBCi0gS2Fma2EKLSBBV1MgRUMyIGFuZCBDbG91ZGZsYXJlCi0gSDIsIE1vbmdvREIgYW5kIFBvc3RncmVzIERCCi0gU3dhZ2dlciBPcGVuQVBJCgojIFNldHVwOiDwn5K7CgojIyBKYXZhICsgU3ByaW5nIEJvb3QgCgojIyMgQXZhaWxhYmxlIFNjcmlwdHMgLSAKCkluIHRoZSBwcm9qZWN0IGRpcmVjdG9yeSwgeW91IGNhbiBydW46CgojIyMgYG12biBpbnN0YWxsYAoKVG8gaW5zdGFsbCBhbGwgdGhlIGRlcGVuZGVuY2llcyByZXF1aXJlZCBmb3IgdGhlIHByb2plY3QuCgojIyMgYG12biBzcHJpbmctYm9vdDpydW5gCgpSdW5zIHRoZSBhcHAgaW4gdGhlIGRldmVsb3BtZW50IG1vZGUuXApPcGVuIFtodHRwOi8vbG9jYWxob3N0Ojg3NjVdKGh0dHA6Ly9sb2NhbGhvc3Q6ODc2NSkgdG8gdmlldyBpdCBpbiB5b3VyIGJyb3dzZXIuCgoKIyMjIGBucG0gY2xlYW4gaW5zdGFsbGAKCkJ1aWxkcyB0aGUgYXBwIGZvciBwcm9kdWN0aW9uIHRvIHRoZSBgdGFyZ2V0YCBmb2xkZXIuXApJdCBjb3JyZWN0bHkgYnVuZGxlcyBTcHJpbmcgQm9vdCBhcHAgaW4gcHJvZHVjdGlvbiBtb2RlIGFuZCBvcHRpbWl6ZXMgdGhlIGJ1aWxkIGZvciB0aGUgYmVzdCBwZXJmb3JtYW5jZS4KCllvdXIgYXBwIGlzIHJlYWR5IHRvIGJlIGRlcGxveWVkIQoKIyBBcHByb2FjaDog8J+atgpXZSBhcmUgdXNpbmcgKipSZWFjdCoqIGZvciBmcm9udGVuZCBVSSBhbmQgKipKYXZhIHdpdGggU3ByaW5nIEJvb3QqKiBmb3IgYmFja2VuZCBBUEkgd2l0aCAqKk1pY3Jvc2VydmljZXMqKiBhcmNoaXRlY3R1cmUuCgojIFN0YXR1czog8J+TtgpXb3JrIGluIFByb2dyZXNzLi4u8J+boO+4jwoKIyBMaWNlbnNlOiDCqe+4jwpNSVQgTGljZW5zZSAoKipbQ2hlY2sgSGVyZV0oTElDRU5TRSkqKik= readmeEtag: '"a177ebc04c6786b3d7a0cf1f9530027876ccc3d2"' readmeLastModified: Sat, 26 Oct 2024 20:26:58 GMT repositoryId: 860100107 description: >- A Real-time Flight Booking microservices application with Java and Spring Cloud created: '2024-09-19T20:25:08Z' updated: '2025-07-28T16:10:45Z' language: null archived: false stars: 1 watchers: 1 forks: 0 owner: ved-asole logo: https://avatars.githubusercontent.com/u/77259804?v=4 license: MIT repoEtag: '"e51d6abda62741faf31a79b441d45c1e4200d1e2d767538b4d8a3312caf7403b"' repoLastModified: Mon, 28 Jul 2025 16:10:45 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/sellix/developers-api-specification v3: true repositoryMetadata: base64Readme: >- IyBbZGV2LW9wZW5hcGkuc2VsbGl4LmlvXShodHRwczovL2Rldi1vcGVuYXBpLnNlbGxpeC5pbykKCkRldmVsb3BlcnMgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIHVzZWQgYnkgb3VyIFNES3Mu readmeEtag: '"17a4472e322e54c5a37739ec6617800e5ea897d8"' readmeLastModified: Sun, 13 Feb 2022 09:58:25 GMT repositoryId: 443609714 description: >- OpenApi v3.0.0 schema for the Sellix Developers API. Contains examples, payloads and specifications on requests and responses. created: '2022-01-01T19:33:11Z' updated: '2024-11-20T12:47:19Z' language: null archived: true stars: 1 watchers: 3 forks: 1 owner: Sellix logo: https://avatars.githubusercontent.com/u/66204773?v=4 repoEtag: '"d45e5ab22d010d7c92aa00beaee3a2f02748d09f8fea14d1714bd4a9861eb5da"' repoLastModified: Wed, 20 Nov 2024 12:47:19 GMT foundInMaster: true category: SDK id: 32ab75082c937ea942ad563a87db51a0 - source: openapi3 tags repository: https://github.com/chrisdostert/listener-from-oas3-js v3: true repositoryMetadata: base64Readme: >- WyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvY2hyaXNkb3N0ZXJ0L2xpc3RlbmVyLWZyb20tb2FzMy1qcy5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9jaHJpc2Rvc3RlcnQvbGlzdGVuZXItZnJvbS1vYXMzLWpzKQpbIVtDb3ZlcmFnZV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2NocmlzZG9zdGVydC9saXN0ZW5lci1mcm9tLW9hczMtanMvYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvY2hyaXNkb3N0ZXJ0L2xpc3RlbmVyLWZyb20tb2FzMy1qcykKCj4gKkJlIGFkdmlzZWQ6IHRoaXMgcHJvamVjdCBpcyBjdXJyZW50bHkgYXQgTWFqb3IgdmVyc2lvbiB6ZXJvLiBQZXIgdGhlCj4gc2VtYW50aWMgdmVyc2lvbmluZyBzcGVjOiAiTWFqb3IgdmVyc2lvbiB6ZXJvICgwLnkueikgaXMgZm9yIGluaXRpYWwKPiBkZXZlbG9wbWVudC4gQW55dGhpbmcgbWF5IGNoYW5nZSBhdCBhbnkgdGltZS4gVGhlIHB1YmxpYyBBUEkgc2hvdWxkCj4gbm90IGJlIGNvbnNpZGVyZWQgc3RhYmxlLiIqCgpKYXZhc2NyaXB0IGxpYnJhcnkgd2hpY2ggZ2VuZXJhdGVzIGEgbmF0aXZlIGh0dHAgc2VydmVyIGxpc3RlbmVyIGZyb20gYSB2MyBvcGVuIGFwaSBzcGVjCgojIEluc3RhbGxhdGlvbgoKIyMgTlBNCmBgYHNoZWxsCm5wbSBpbnN0YWxsIC0tc2F2ZSBsaXN0ZW5lci1mcm9tLW9hczMKYGBgCgojIyBZYXJuCmBgYHNoZWxsCnlhcm4gYWRkIGxpc3RlbmVyLWZyb20tb2FzMwpgYGAKCiMgSGFuZGxlcnMKClRoZSBzaWduYXR1cmUgZm9yIGhhbmRsZXJzIGlzCmBhc3luYyBteUhhbmRsZXIoY3R4KWAKClRoZSBjdHggb2JqZWN0IGlzIHRoZSBzYW1lIGFzIHRoZSBrb2EgY3R4IG9iamVjdCBidXQgYWxzbyBpbmNsdWRlczoKCiMjIyBjdHgucGFyYW1ldGVycy5wYXRoCk9iamVjdCB3aGVyZSBlYWNoIHByb3BlcnR5IGlzIHRoZSBuYW1lIG9mIGEgcGF0aCBwYXJhbWV0ZXIgYXBwbGljYWJsZSB0byB0aGUgb3BlcmF0aW9uIGFuZCBpdCdzIHByb3ZpZGVkIHZhbHVlLgoKIyMjIGN0eC5wYXJhbWV0ZXJzLnF1ZXJ5Ck9iamVjdCB3aGVyZSBlYWNoIHByb3BlcnR5IGlzIHRoZSBuYW1lIG9mIGEgcXVlcnkgcGFyYW1ldGVyIGFwcGxpY2FibGUgdG8gdGhlIG9wZXJhdGlvbiBhbmQgaXQncyBwcm92aWRlZCB2YWx1ZS4KCnBhcmFtZXRlcnMgZGVjbGFyZWQgdy8gYXBwbGljYXRpb24vanNvbiBjb250ZW50IHdpbGwgYmUgZGVzZXJpYWxpemVkCgojIyBjdHguc2VjdXJpdHkKT2JqZWN0IHdoZXJlIGVhY2ggcHJvcGVydHkgaXMgdGhlIG5hbWUgb2YgYSBzZWN1cml0eSBkZWZpbml0aW9uIGFwcGxpY2FibGUgdG8gdGhlIG9wZXJhdGlvbiBhbmQgaXQncyBwcm92aWRlZCB2YWx1ZS4KCmZvciBvYXV0aDIsIHZhbHVlIHdpbGwgYmUgdGhlIGJlYXJlciB0b2tlbiBzdHJpbmcgIAoKZm9yIGh0dHAgYmVhcmVyLCB2YWx1ZSB3aWxsIGJlIHRoZSBiZWFyZXIgdG9rZW4gc3RyaW5nICAKCmZvciBodHRwIGJhc2ljLCB2YWx1ZSB3aWxsIGJlIGEgYHt1c2VySWQsIHBhc3N3b3JkfWAgb2JqZWN0CgojIEV4YW1wbGVzCgojIEJhc2ljIHVzYWdlCgpgYGBqYXZhc2NyaXB0CmNvbnN0IGdldFJlcXVlc3RMaXN0ZW5lciA9IHJlcXVpcmUoJ2xpc3RlbmVyLWZyb20tb2FzMycpCmNvbnN0IGh0dHAgPSByZXF1aXJlKCdodHRwJykKCmFzeW5jIGZ1bmN0aW9uIGxpc3Rlbihwb3J0KSB7CiAgY29uc3QgcmVxdWVzdExpc3RlbmVyID0gYXdhaXQgZ2V0UmVxdWVzdExpc3RlbmVyKAogICAgYCR7X19kaXJuYW1lfS9vcGVuYXBpLnlhbWxgLAogICAgLy8gcmVzb2x2ZSBoYW5kbGVycyBmcm9tIGAke19fZGlybmFtZX0vJHtvcGVyYXRpb24tcGF0aH0vJHtvcGVyYXRpb24tbWV0aG9kfWAKICAgIF9fZGlybmFtZQogICkKCiAgaHR0cAogICAgLmNyZWF0ZVNlcnZlcihyZXF1ZXN0TGlzdGVuZXIpCiAgICAubGlzdGVuKHBvcnQpCn0KYGBgCgojIFN1cHBvcnQKCltvcGVuIGFuIGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXNkb3N0ZXJ0L2xpc3RlbmVyLWZyb20tb2FzMy1qcy9pc3N1ZXMpCgojIFJlbGVhc2VzCgpyZWxlYXNlcyBhcmUgdmVyc2lvbmVkIGFjY29yZGluZyB0bwpbIVtzZW12ZXIgMi4wLjBdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvc2VtdmVyLTIuMC4wLWJyaWdodGdyZWVuLnN2ZyldKGh0dHA6Ly9zZW12ZXIub3JnL3NwZWMvdjIuMC4wLmh0bWwpCmFuZCBbdGFnZ2VkXShodHRwczovL2dpdC1zY20uY29tL2Jvb2svZW4vdjIvR2l0LUJhc2ljcy1UYWdnaW5nKTsgc2VlCltDSEFOR0VMT0cubWRdKENIQU5HRUxPRy5tZCkgZm9yIHJlbGVhc2Ugbm90ZXMKCiMgQ29udHJpYnV0aW5nCgpzZWUgW0NPTlRSSUJVVElORy5tZF0oQ09OVFJJQlVUSU5HLm1kKQo= readmeEtag: '"dc7b9c92e2309906a0295ca8037f11c405b635e0"' readmeLastModified: Mon, 15 Oct 2018 17:17:08 GMT repositoryId: 140190346 description: >- Javascript library which generates a native http server listener from a v3 open api spec created: '2018-07-08T17:56:57Z' updated: '2023-01-28T09:32:25Z' language: JavaScript archived: true stars: 1 watchers: 0 forks: 0 owner: chrisdostert logo: https://avatars.githubusercontent.com/u/2335774?v=4 license: MIT repoEtag: '"8725dcf593aab39fde799652cc9bf9c9c547e122a075951354fe58a63069d2c2"' repoLastModified: Sat, 28 Jan 2023 09:32:25 GMT foundInMaster: true category: - Converters - Parsers id: cdd1ea9a0dde706b0c4b86a1650f2e43 - source: openapi3 tags repository: https://github.com/aqib1/sparknetworks-filtering-matching v3: true repositoryMetadata: base64Readme: >- IyMgU3BhcmstbmV0d29ya3MgRmlsdGVyIEhhbmRsaW5nIGFwcGxpY2F0aW9uClNwcmluZyBjbG91ZCBtaWNyb3NlcnZpY2UgZm9yIGZpbHRlciBoYW5kbGluZwoKIyMjIEhvdyB0byBSdW4KLSBUbyBydW4gYXBwbGljYXRpb24gaXRzIG5lY2Vzc2FyeSB0byBydW4gRXVyZWthU2VydmVyIGFwcGxpY2F0aW9uIGZpcnN0LCBzbyBvdGhlciBib3RoIGFwcGxpY2F0aW9uIHJlZ2lzdGVyIGZpcnN0IHdpdGggc2VydmVyCi0gbXZuIGV4ZWM6amF2YQoKIyMjIFRlY2hub2xvZ2llcwoqIFNwcmluZyBib290IDIKKiBTcHJpbmcgQ2xvdWQgKE5ldGZsaXggZXVyZWthLCBOZXRmbGl4IGZlaWduIChlbWJlZGRlZCByaWJib24gTEIpLCBOZXRmbGl4IEh5c3RyaXgpCiogU3ByaW5nIE1WQwoqIFNwcmluZyBSZXN0CiogU3ByaW5nIGRhdGEgSlBBCiogU3ByaW5nIEFPUAoqIGJvb3RzdHJhcCBhbmQgSlNUTAoqIEp1bml0IDQgKGZvciB1bml0IHRlc3RpbmcpCiogTW9ja2l0byAoZm9yIG1vY2tpbmcgZGF0YWJhc2UgY2FsbHMgYW5kIG1ldGhvZHMgaW4gdW5pdCB0ZXN0aW5nKQoqIE1vY2tNVkMgKGZvciBJbnRlZ3JhdGlvbiB0ZXN0aW5nKQoqIFN3YWdnZXIgKG9wZW5hcGkgMy4wKQoqIEgyIERhdGFiYXNlCiogT3BlbnBvam8KCiMjIyBEZXNpZ24gUGF0dHJlbgoqIERvdWJsZSBjaGVjayBsb2NraW5nIHNpbmdsZXRvbiBwYXR0cmVuCiogQnVpbGRlciBwYXR0cmVuCgojIyMgVGhyZWFkIHNhZmV0eQpGb3IgdGhyZWFkIHNhZmV0eSwgaSBhbSB1c2luZyBqYXZhIDEuOCBTdGFtcGVkTG9jaywgaW4gd2hpY2ggd2UgaGF2ZSBvcHRpbWlzdGljIHJlYWQgbG9jay4gV2hpY2ggbWFrZSBzeW5jaHJvbml6YXRpb24gb3ZlcmhlYWQgaXMgdmVyeSAgIGxvdy4KCiMjIyBBcHBsaWNhdGlvbiBkZXRhaWxzCi0gQWxsIGFwcGxpY2F0aW9uIGlzIGJ1aWxkIHVzaW5nIHNwcmluZyBjbG91ZCwgbWljcm9zZXJ2aWNlIGFyY2hpdGVjdHVyZQotIENsaWVudCBhcHBsaWNhdGlvbiBpcyBidWlsZCB1c2luZyBTcHJpbmcgTVZDLCBDbGllbnQgQXBwbGljdGlvbiByZWdpc3RlciBpdCBzZWxmIGFzIGVydWVrYSBjbGllbnQgaW4gc2VydmVyLgotIENsaWVudCBhcHBsaWNhdGlvbiBjb21tdW5pY2F0aW5nIHdpdGggYmFja2VuZCBhcGkgdXNpbmcgTmV0ZmxpeCBmZWlnbgotIFNpbXBsZSBkZXNpZ24gaXMgbWFkZXVwIHVzaW5nIGJvb3RzdHJhcCBhbmQgSlNUTCAoZm9yIGRhdGEgbWFuaXB1bGF0aW9uKQotIEJhY2tlbmQgYXBwbGljYXRpb24gaXMgYSBldXJha2EgY2xpZW50LCB3aGljaCBpcyBidWlsZCB1c2luZyBzcHJpbmcgcmVzdAotIEgyIGRhdGFiYXNlIGlzIHVzZWQgc2F2ZSBkYXRhIGFuZCBnaXZlbiBkYXRhIGlzIGxvYWRlZCBkdXJpbmcgdGhlIHN0YXJ0LXVwIG9mIGFwcGxpY2F0aW9uCi0gU3ByaW5nIHNwZWNpZmljYXRpb25zIGFyZSB1c2VkIHRvIGNyZWF0ZSBjb21wbGV4IHF1cmllcwotIEVydWVrYSBTZXJ2ZXIgY29uZmlndXJlIG9uIDgwODUKLSBDbGllbnQgYXBwbGljYXRpb24gaXMgY29uZmlndXJlIG9uIDgwODAKLSBCYWNrZW5kIGFwcGxpY2F0aW9uIGlzIGNvbmZpZ3VyZSBvbiA4MDgyCgojIyMgVGVzdGluZwotIFRERCAodW5pdCB0ZXN0aW5nIGRvbmUgdXNpbmcgSlVOSVQgNCkKLSBNb2NraXRvIChmb3IgbW9ja2luZyBpbiB1bml0IHRlc3RpbmcpCi0gb3BlbnBvam8gKGZvciB0ZXN0aW5nIHJlcXVpcmVkIGdldHRlci9zZXR0ZXIgZXhpc3RlbmNlKQotIE1vY2tNVkMgKGZvciBpbnRlZ2VyYXRpb24gdGVzdGluZyBvZiBBUEkgZW5kIHBvaW50cykKCgoKIyMjIEFQSSBVc2FnZQoKSFRUUCBNRVRIT0QgfCBQQVRIIHwgVVNBR0UKLS0tIHwgLS0tIHwgLS0tCkdFVHwgc3BhcmstbmV0d29ya3MtY2xpZW50L2hvbWUgfCBDbGllbnQgaG9tZSBwYWdlClBPU1R8IHNwYXJrLW5ldHdvcmtzLWNsaWVudC9maWx0ZXIgfCBDbGllbnQgZmlsdGVyIGFwaQpHRVR8IHNwYXJrLW5ldHdvcmtzLWNsaWVudC8gfCBDbGllbnQgbG9naW4gcGFnZQpQT1NUfCBzcGFyay1uZXR3b3Jrcy1jbGllbnQvbG9naW4gfCBDbGllbnQgbG9naW4gb3BlcmF0aW9uIGFwaQpQT1NUfCBzcGFyay1uZXR3b3Jrcy1iYWNrZW5kL2ZpbHRlci9sb2dpbiB8IEJhY2tlbmQgbG9naW4gcmVzdCBhcGkKUE9TVHwgc3BhcmstbmV0d29ya3MtYmFja2VuZC9maWx0ZXIgfCBCYWNrZW5kIGZpbHRlciByZXN0IGFwaQpHRVR8IHNwYXJrLW5ldHdvcmtzLWJhY2tlbmQvZmlsdGVyIHwgQmFja2VuZCBnZXRpbmcgYWxsIHJlc3QgYXBpCgoKIyMjIEh0dHBzIFN0YXR1cwotIDIwMCBPSzogVGhlIHJlcXVlc3QgaGFzIHN1Y2NlZWRlZAotIDQwMCBCYWQgUmVxdWVzdDogVGhlIHJlcXVlc3QgY291bGQgbm90IGJlIHVuZGVyc3Rvb2QgYnkgdGhlIHNlcnZlcgotIDQwNCBOb3QgRm91bmQ6IFRoZSByZXF1ZXN0ZWQgcmVzb3VyY2UgY2Fubm90IGJlIGZvdW5kCi0gNDE3IEJhZCBFeGNlcHRpb246IEludGVybmFsIHNlcnZlciBleGNlcHRpb24KLSA1MDAgSW50ZXJuYWwgU2VydmVyIEVycm9yOiBUaGUgc2VydmVyIGVuY291bnRlcmVkIGFuIHVuZXhwZWN0ZWQgY29uZGl0aW9uCg== readmeEtag: '"36d217b49cca85b8cf14817b4a62db19c07d856b"' readmeLastModified: Fri, 20 Mar 2020 14:10:29 GMT repositoryId: 240132698 description: Filter matching task by spark networks created: '2020-02-12T22:58:53Z' updated: '2020-12-14T18:04:21Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: aqib1 logo: https://avatars.githubusercontent.com/u/8742169?v=4 repoEtag: '"298d1aa67e589c633e3f13b3e0c2f5eb07ea94c2cde77e022d1838382c83d5b5"' repoLastModified: Mon, 14 Dec 2020 18:04:21 GMT foundInMaster: true category: Server Implementations id: a9ae36422794afcf4ffd1ea0b1bb086f - source: openapi3 tags repository: https://github.com/pagopa-archive/pdnd-openapi-server v3: true repositoryMetadata: base64Readme: >- IyBQRE5EIG9wZW4gYXBpIHNlcnZlciAocHJlLWFscGhhKQoKVGhpcyBzZXJ2ZXIgZXhwb3NlcyBBUEkgZnJvbSBbUERORF0oaHR0cHM6Ly9kYXRhcG9ydGFsLmRhZi50ZWFtZGlnaXRhbGUuaXQvKSBhY2NvcmRpbmcgdG8gb3BlbmFwaSAzIHNwZWNpZmljYXRpb24gYW5kIHRoZSBpbnRlcm9wZXJhYmlsaXR5IG1vZGVsIGRlZmluZWQgYnkgSXRhbGlhbiBHb3Zlcm5lbW50IG9yZ2FuaXphdGlvbnMuIEl0IHVzZXMgW2Nvbm5leGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3phbGFuZG8vY29ubmV4aW9uKSBmcmFtZXdvcmsgZm9yIGNyZWF0aW5nIGFuZCBleHBvc2luZyB0aGUgc2VydmVyIGluIGEgY29udHJhY3QgZmlyc3QgYXBwcm9hY2guIFJlbWVtYmVyIGVhY2ggQVBJIGlzIHNlbGYgZG9jdW1lbnRlZCBpZiB5b3Ugd2FudCB0byByZWFkIHRoZSBkZXRhaWxzIG9mIGVhY2ggQVBJIHJlYWQgdGhlIFtvcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vdGVhbWRpZ2l0YWxlL3BkbmQtb3BlbmFwaS1zZXJ2ZXIvYmxvYi9tYXN0ZXIvb3BlbmFwaS9kYWYtb3BlbmFwaS55YW1sKSBmaWxlIG9yIGxhdW5jaCB0aGUgc2VydmljZSBhcyBkZXNjcmliZWQgYmVsb3cuIAoKIyMjIENvbnRleHQKClRoZSBnb2FsIG9mIHRoaXMgcHJvamVjdCBpcyB0byBleHBvc2UgYWNjb3JkaW5nIHRvIG9wZW5hcGkgMyBzdGFuZGFyZHMgYSBzZXQgb2YgQVBJIGRldmVsb3BlZCBmb3IgW1BETkQgKGV4IERhZildKGh0dHA6Ly9kYXRhcG9ydGFsLmRhZi50ZWFtZGlnaXRhbGUuaXQpLiBUaGUgb2xkIEFQSSB3ZXJlIGRldmVsb3BlZCBhY2NvcmRpbmcgdG8gc3dhZ2dlciAyLjAgc3RhbmRhcmRzLCB1c2luZyBTY2FsYS4gV2UgYXJlIG5vdyBwcm94eWluZyB0aG9zZSBhcGkgdGhyb3VnaHQgdGhpcyByZXBvIGZvciBiZWNvbWluZyBjb21wbGlhbnRzIHdpdGggdGhlIG5ldyBzdGFuZGFyZHMuIEJlbG93IHRoZSBsaXN0IG9mIGFwaSB3ZSBhcmUgd3JhcHBpbmc6CgotICBodHRwczovL2dpdGh1Yi5jb20vaXRhbGlhL2RhZi1kYXRhcG9ydGFsLWJhY2tlbmQvYmxvYi9tYXN0ZXIvY29uZi9mdGRfYXBpLnlhbWwKLSBodHRwczovL2dpdGh1Yi5jb20vaXRhbGlhL2RhZi1zcnYtY2F0YWxvZy9ibG9iL2Rldi9jb25mL2NhdGFsb2dfbWFuYWdlci55YW1sCi0gaHR0cHM6Ly9naXRodWIuY29tL2l0YWxpYS9kYWYtc3J2LXNlY3VyaXR5L2Jsb2IvZGV2L2NvbmYvc2VjdXJpdHlfbWFuYWdlci55YW1sCgojIyMgUHJlcmVxdWlzaXRlcwoKT24geW91ciBtYWNoaW5lIHB5dGhvbiAzIHdpdGggcGlwIGFuZCBbdG94XShodHRwczovL3RveC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvKSBtdXN0IGJlIGluc3RhbGxlZAoKIyMjIFRlc3QKClRvIHRlc3QgdGhlIEFQSSwganVzdCBydW4KCgpgYGAKdG94IAoKYGBgCgpXaGVuIGRlYnVnZ2luZywgeW91IGNhbiBydW4gdGhlIGZvbGxvd2luZyBpbnN0ZWFkLgoKCmBgYAp0b3ggLS0gIC0tcGRiIC0tcGRiLWZhaWx1cmUgLXZzIC0tbm9sb2djYXB0dXJlCgpgYGAKCgojIyMgTGF1bmNoCgpgYGAKdG94IC1lIHJ1bgpgYGAKY29ubmVjdCB0byBbaHR0cDovL2xvY2FsaG9zdDo4MDgwL3BkbmQtb3BlbmFwaS91aS9dKGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9wZG5kLW9wZW5hcGkvdWkvKQoKIyMjIERvY2tlciAKCkRvY2tlciBNVVNUIGJlIGluc3RhbGxlZCBvbiB5b3VyIGxvY2FsIG1hY2hpbmUKCmBgYApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3RlYW1kaWdpdGFsZS9wZG5kLW9wZW5hcGktc2VydmVyLmdpdApjZCBwZG5kLW9wZW5hcGktc2VydmVyCmRvY2tlciBidWlsZCAtdCBwZG5kLW9wZW5hcGktc2VydmVyIC4KZG9ja2VyIHJ1biAtcCA4MDgwOjgwODAgcGRuZC1vcGVuYXBpLXNlcnZlcgpgYGAKb3BlbiB5b3VyIGJyb3dzZXIgYXQgW2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9wZG5kLW9wZW5hcGkvdWkvXShodHRwOi8vbG9jYWxob3N0OjgwODAvcGRuZC1vcGVuYXBpL3VpLykKCiMjIyBUdXRvcmlhbAoKVGhlIHNlcnZpY2UgZXhwb3NlIHNvbWUgQVBJIGZyb20gUERORC4gSXQgcmVxdWlyZXMgYXV0aGVudGljYXRpb24gdXNpbmcgQmFzaWMgQXV0aCBvciBCZWFyZXIgbWVhbmluZyB5b3UgYXMgdXNlciBtdXN0IGJlIHJlZ2lzdGVyZWQgW2hlcmVdKGh0dHBzOi8vZGF0YXBvcnRhbC5kYWYudGVhbWRpZ2l0YWxlLml0LyMvcmVnaXN0ZXIpLCBhbmQgbXVzdCBiZSB1c2VkIHJlc3BlY3RpbmcgdGhlIHRocm90dGxpbmcgaGVhZGVycyBkZWZpbmVkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgTGluZWUgR3VpZGEgb2YgdGhlIG1vZGVsIG9mIGludGVyb3BlcmFiaWxpdHkgdGhhdCB3aWxsIGJlIHJlbGVhc2VkIGJ5IHRoZSBJdGFsaWFuIEdvdmVybm1lbnQgb3JnYW5pemF0aW9ucy4KCkFmdGVyIHJlZ2lzdGVyZCB5b3UgY2FuIGluc2VyIHlvdXIgRW1haWwgYW5kIHBhc3N3b3JkOgoKIVtCYXNpYyBBdXRoXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGVhbWRpZ2l0YWxlL3BkbmQtb3BlbmFwaS1zZXJ2ZXIvbWFzdGVyL3R1dG9yaWFsL2ltZy9iYXNpY19hdXRoLnBuZykKCk9uY2UgbG9nZ2VkIGluIHdpdGggYmFzaWMgYXV0aCB5b3UgY2FuIGdldCB0aGUgdG9rZW4gYXMgaW4gdGhlIGltYWdlIGJlbG93IGNvcHkgb25seSB0aGUgand0IHZhbHVlCgohW0dldCBqd3RdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90ZWFtZGlnaXRhbGUvcGRuZC1vcGVuYXBpLXNlcnZlci9tYXN0ZXIvdHV0b3JpYWwvaW1nL2dldF9qd3QucG5nKQoKQ29weSBhbmQgcGFzdGUgdGhlIGp3dCBhbmQgaW5zZXJ0IGl0IGZvciBjYWxsaW5nIGVhY2ggQVBJOgoKIVtKd3QgQXV0aF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3RlYW1kaWdpdGFsZS9wZG5kLW9wZW5hcGktc2VydmVyL21hc3Rlci90dXRvcmlhbC9pbWcvand0X2F1dGgucG5nKQoKTm93IHlvdSBjYW4gY2FsbCB0aGUgQVBJIGFzIGluIHRoZSBpbWFnZSBiZWxvdwoKIVtTZWFyY2ggQVBJXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGVhbWRpZ2l0YWxlL3BkbmQtb3BlbmFwaS1zZXJ2ZXIvbWFzdGVyL3R1dG9yaWFsL2ltZy9zZWFyY2gucG5nKQoKCgo= readmeEtag: '"d3e9c1b302162c77afc183d00e807750393dae60"' readmeLastModified: Fri, 07 Feb 2020 12:15:43 GMT repositoryId: 179264077 description: >- PDND openapi server is a server for exposing PDND (ex DAF) api following the openapi 3 standard and the interoperability model created: '2019-04-03T10:10:10Z' updated: '2023-03-29T13:34:56Z' language: Python archived: true stars: 1 watchers: 9 forks: 1 owner: pagopa-archive logo: https://avatars.githubusercontent.com/u/127237556?v=4 repoEtag: '"2f498b31ccf5d61c107ffa34e6f063b7de330256dbe3fe184793840f2282ecea"' repoLastModified: Wed, 29 Mar 2023 13:34:56 GMT foundInMaster: true category: Server Implementations id: 4a40f7044edf105fefcc49e471132ff1 oldLocations: - https://github.com/pagopa/pdnd-openapi-server - source: openapi3 tags repository: https://github.com/lsmhun/demo-api-contract v3: true repositoryMetadata: base64Readme: >- IyBTcHJpbmcgQ2xvdWQgQ29udHJhY3QgZGVtbwpbIVtGT1NTQSBTdGF0dXNdKGh0dHBzOi8vYXBwLmZvc3NhLmNvbS9hcGkvcHJvamVjdHMvZ2l0JTJCZ2l0aHViLmNvbSUyRmxzbWh1biUyRmRlbW8tYXBpLWNvbnRyYWN0LnN2Zz90eXBlPXNoaWVsZCldKGh0dHBzOi8vYXBwLmZvc3NhLmNvbS9wcm9qZWN0cy9naXQlMkJnaXRodWIuY29tJTJGbHNtaHVuJTJGZGVtby1hcGktY29udHJhY3Q/cmVmPWJhZGdlX3NoaWVsZCkKWyFbQ2lyY2xlQ0ldKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL2xzbWh1bi9kZW1vLWFwaS1jb250cmFjdC5zdmc/c3R5bGU9c2hpZWxkKV0oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvbHNtaHVuL2RlbW8tYXBpLWNvbnRyYWN0KQoKClRoaXMgaXMgYSBzbWFsbCBkZW1vIG9mIGNvbnRyYWN0IGJhc2VkIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50IHdpdGggW1NwcmluZyBDbG91ZCBDb250cmFjdF0oaHR0cHM6Ly9jbG91ZC5zcHJpbmcuaW8vc3ByaW5nLWNsb3VkLWNvbnRyYWN0LykuIAoKIyMgRG9jdW1lbnRhdGlvbgotIFtFbmdsaXNoIGRvY3VtZW50YXRpb25dKC4vZG9jcy9kZXNjcl9lbi5tZCkKLSBbSHVuZ2FyaWFuIGRvY3VtZW50YXRpb25dKC4vZG9jcy9kZXNjcl9odS5tZCkKCgojIyBMaWNlbnNlClshW0ZPU1NBIFN0YXR1c10oaHR0cHM6Ly9hcHAuZm9zc2EuY29tL2FwaS9wcm9qZWN0cy9naXQlMkJnaXRodWIuY29tJTJGbHNtaHVuJTJGZGVtby1hcGktY29udHJhY3Quc3ZnP3R5cGU9bGFyZ2UpXShodHRwczovL2FwcC5mb3NzYS5jb20vcHJvamVjdHMvZ2l0JTJCZ2l0aHViLmNvbSUyRmxzbWh1biUyRmRlbW8tYXBpLWNvbnRyYWN0P3JlZj1iYWRnZV9sYXJnZSkK readmeEtag: '"5995966a29930531ed5b925a42bad290e3d60bc7"' readmeLastModified: Sat, 27 May 2023 21:16:44 GMT repositoryId: 425954792 description: Spring Cloud Contract demo created: '2021-11-08T18:44:29Z' updated: '2021-12-09T05:35:43Z' language: Java archived: false stars: 1 watchers: 1 forks: 2 owner: lsmhun logo: https://avatars.githubusercontent.com/u/49127995?v=4 license: Apache-2.0 repoEtag: '"725dd065fbbd0aef179caf0534c58b8664a5804e61ba6977f2e7b7f12d5bcc51"' repoLastModified: Thu, 09 Dec 2021 05:35:43 GMT foundInMaster: true category: Server id: 63ba35052b44216d4636fc366beaa5f6 - source: openapi3 tags repository: https://github.com/tryptichon/java11-jakarta-rs-swagger-redoc-demows v3: true repositoryMetadata: base64Readme: >- IyBERU1PIFdTCgpBbiBKYWthcnRhLUpBWC1SUyBza2VsZXRvbiB3ZWJhcHAgdXNpbmc6CgoqIEpha2FydGEtSkFYLVJTIHdpdGggYW5ub3RhdGlvbnMuCiogU3dhZ2dlciBhbm5vdGF0aW9ucyBmb3IgYXV0b21hdGljIG9wZW5hcGkuanNvbi8ueWFtbCBnZW5lcmF0aW9uLgoqIFJlRG9jIHN0YW5kYWxvbmUgdG8gZ2VuZXJhdGUgYSBkb2N1bWVudGF0aW9uIHdlYnNpdGUgZm9yIHRoZSBhcGkuCiogRG9ja2VyIHRvIGNyZWF0ZSBhIHNlbGYtY29udGFpbmVkIGltYWdlIHVzaW5nIHRvbWNhdCAxMC4KCkJlc3QgdG8gYmUgdXNlZCB3aXRoIEludGVsbGlKIElERUEgYW5kIEphdmEgMTEuCgojIyBIYW5kbGluZyBkb2NrZXIgaW1hZ2VzCgpVc2luZyBtYXZlbiB0byBoYW5kbGUgZG9ja2VyIGltYWdlIGNyZWF0aW9uIGFuZCBjbGVhbnVwIGlzIGRvbmUgYnkganVzdCBhY3RpdmF0aW5nIHRoZSBwcm9maWxlIGBkb2NrZXJgLiBUaGlzCmNhbiBiZSBhY3RpdmF0ZWQgdmlhIGAtRGRvY2tlcj10cnVlYCBvbiB0aGUgY29tbWFuZGxpbmUuCgpDcmVhdGUgYSBkb2NrZXIgaW1hZ2U6CgpgYGBzaGVsbAptdm4gcGFja2FnZSAtRGRvY2tlcj10cnVlCmBgYAoKQ2xlYW51cCBhbmQgcmVtb3ZlIHRoZSBkb2NrZXIgaW1hZ2U6CgpgYGBzaGVsbAptdm4gY2xlYW4gLURkb2NrZXI9dHJ1ZQpgYGAKClNlZSBbcG9tLnhtbF0ocG9tLnhtbCkgb24gaG93IHRoaXMgaXMgZG9uZS4KCkEgc2FtcGxlIFtkb2NrZXItY29tcG9zZS55YW1sXShkb2NrZXIvZG9ja2VyLWNvbXBvc2UueWFtbCkgaXMgaW5jbHVkZWQgdG8gc3RhcnQgYSBjb250YWluZXIgZWFzaWx5LiBUaGUKcGFyYW1ldGVyIGBpbWFnZWAgdGhlcmUgbmVlZHMgdG8gYmUgYWRqdXN0ZWQgYnkgaGFuZCB3aGVuIHRoZSBwcm9qZWN0IG5hbWUgLyB2ZXJzaW9uIGNoYW5nZXMuCgpBZnRlciB0aGUgY29udGFpbmVyIGhhcyBzdGFydGVkLCBwb2ludCB5b3VyIGJyb3dzZXIgdG8gYGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9gLgoKIyMgVXNlZCB0b29scyBhbmQgbGljZW5zZXMKCkZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHN3YWdnZXIgYW5kIGFkZGl0aW9uYWwgbGljZW5zZXM6CgojIyMjIFN3YWdnZXIKCiogW1N3YWdnZXIgSU9dKGh0dHBzOi8vc3dhZ2dlci5pby8pCiogW0xpY2Vuc2VdKGh0dHBzOi8vc3dhZ2dlci5pby9saWNlbnNlLykKCiMjIyMgUmVEb2MKCiogW0dpdEh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL1JlZG9jbHkpCiogW09mZmljaWFsIHdlYnNpdGVdKGh0dHBzOi8vcmVkb2NseS5jb20vcmVkb2MpCiogW0RlbW8gc2l0ZV0oaHR0cHM6Ly9yZWRvY2x5LmdpdGh1Yi5pby9yZWRvYy8pCiogW0xpY2Vuc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpCgojIyMjIERvY2tlcgoKKiBbT2ZmaWNpYWwgd2Vic2l0ZV0oaHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8pCiogW0ZBUSBhYm91dCBsaWNlbnNpbmcgYW5kIHByaWNpbmddKGh0dHBzOi8vd3d3LmRvY2tlci5jb20vcHJpY2luZy9mYXEvKQoKIyMjIyBUb21jYXQKCiogW09mZmljaWFsIHdlYnNpdGVdKGh0dHBzOi8vdG9tY2F0LmFwYWNoZS5vcmcvKQoqIFtMaWNlbnNlXShodHRwczovL3RvbWNhdC5hcGFjaGUub3JnL2xlZ2FsLmh0bWwp readmeEtag: '"85c15fdc7e284da06be26a0b28607fb0f56c3a0a"' readmeLastModified: Tue, 03 May 2022 21:06:07 GMT repositoryId: 484558634 description: An Jakarta-JAX-RS webapp integrating Swagger and ReDOC. created: '2022-04-22T20:08:24Z' updated: '2022-04-29T13:15:36Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: tryptichon logo: https://avatars.githubusercontent.com/u/5908199?v=4 license: MIT repoEtag: '"fc5d09b25a9ec8d188f1eb63648eefb40138882854b106c9628d7a11b905c67a"' repoLastModified: Fri, 29 Apr 2022 13:15:36 GMT foundInMaster: true category: - Code Generators - Server Implementations id: 2dc01ffb64e91dcd50e502dea6d3c884 - source: openapi3 tags repository: https://github.com/kwangsing3/sample_express v3: true id: 085152b5a0eecfcecbd5cb325709538f repositoryMetadata: base64Readme: >- IyAqKmdzc19sb2dfZG9vcm1hbioqCuiiq+WLleaOpeaUtuaXpeiqjOioiuaBr+eahOe2sui3r+W4uOmnkOacjeWLme+8jOioreioiOeUqOS+huaOpeaUtuWQhOeoruagvOW8j+eahOaXpeiqjOS4pumHjee1hOi9ieeZvOiHs0dlbmVzaXMgd2ViQVBJ44CCIDxici8+CgoqRG9vcm1hbiDkuIDoqZ7lj5boh6rploDooZsq44CCCjxici8+PGJyLz4KCgo= readmeEtag: '"55d0d9bc958ed69ba9e11dc4f55d6fb4dfecaa22"' readmeLastModified: Thu, 20 Oct 2022 08:24:09 GMT repositoryId: 554607502 description: 擁有OpenAPI3.0 規範自動生成文件的NodeJS專案範例 created: '2022-10-20T04:48:02Z' updated: '2023-02-01T06:02:28Z' language: TypeScript archived: false stars: 1 watchers: 1 forks: 0 owner: kwangsing3 logo: https://avatars.githubusercontent.com/u/18378969?v=4 license: MIT repoEtag: '"7b223cba1eaf8a435c68c9510d341e3891c415b8a8c52dc475cdf2bc38ecd1cb"' repoLastModified: Wed, 01 Feb 2023 06:02:28 GMT category: Testing foundInMaster: true - source: openapi3 tags repository: https://github.com/lugudu/gestor-medico-spring-jpa v3: true id: b0589ff445d8c6b8d15fca17e784c3ab repositoryMetadata: base64Readme: >- IyBnZXN0b3ItbWVkaWNvLXNwcmluZy1qcGEKIEFQSSBSRVNUIGNvbiBKYXZhIFNwcmluZyBCb290IDMsIFNwcmluZyBTZWN1cml0eSB5IEpQQQo= readmeEtag: '"c2988023b245481580179e948199b0dcf74861af"' readmeLastModified: Fri, 10 Mar 2023 10:12:22 GMT repositoryId: 610233940 description: API REST con SpringBoot 3 y JPA created: '2023-03-06T11:14:31Z' updated: '2023-03-14T11:39:04Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: LuGuDu logo: https://avatars.githubusercontent.com/u/70801680?v=4 repoEtag: '"2068d0353d86548cdb25c304b5a3007c200f76f56df3749eb247201a47294404"' repoLastModified: Tue, 14 Mar 2023 11:39:04 GMT category: - Low-level Tooling - Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/2697sahil/contactmanager v3: true id: c1e9c2933115577a7f13758972de1b3a repositoryMetadata: base64Readme: >- IyBDb250YWN0TWFuYWdlcgoKVGhlIENvbnRhY3RNYW5hZ2VyIHByb2plY3QgaXMgYSByb2J1c3QgQVBJIGZvciBtYW5hZ2luZyBjb250YWN0cywgYnVpbHQgd2l0aCBPcGVuQVBJIGFuZCB1dGlsaXppbmcgdGhlIHBvd2VyIG9mIGNvZGUgZ2VuZXJhdGlvbiB3aXRoIFNRTExpdGUgYXMgdGhlIHVuZGVybHlpbmcgZGF0YWJhc2UuCgojIyBGZWF0dXJlcwoKLSAqKkNyZWF0ZSBDb250YWN0Kio6IEVhc2lseSBjcmVhdGUgYSBuZXcgY29udGFjdCBieSBwcm92aWRpbmcgdGhlIHJlcXVpcmVkIGRldGFpbHMgdXNpbmcgYSBzaW1wbGUgUE9TVCByZXF1ZXN0LgoKLSAqKlNlYXJjaCBDb250YWN0cyoqOiBFZmZpY2llbnRseSBzZWFyY2ggZm9yIGNvbnRhY3RzIGJhc2VkIG9uIGZpcnN0IG5hbWUsIGxhc3QgbmFtZSwgb3IgYW55IG90aGVyIHBhcmFtZXRlciBvZiB5b3VyIGNob2ljZSB1c2luZyBhIEdFVCByZXF1ZXN0LgoKLSAqKlVwZGF0ZSBDb250YWN0IERldGFpbHMqKjogU2VhbWxlc3NseSB1cGRhdGUgY29udGFjdCBpbmZvcm1hdGlvbiBieSBzZW5kaW5nIGEgUFVUIHJlcXVlc3Qgd2l0aCB0aGUgY29udGFjdCBJRCBhbmQgdGhlIHVwZGF0ZWQgZGV0YWlscy4KCi0gKipEZWxldGUgQ29udGFjdCoqOiBSZW1vdmUgYSBjb250YWN0IGZyb20gdGhlIGRhdGFiYXNlIHdpdGggYSBERUxFVEUgcmVxdWVzdCB1c2luZyB0aGUgY29udGFjdCBJRC4KCiMjIE9wZW5BUEkgU3BlY2lmaWNhdGlvbgoKVGhlIEFQSSBmb2xsb3dzIHRoZSBPcGVuQVBJIDMuMC4wIHNwZWNpZmljYXRpb24gYW5kIGNhbiBiZSBlYXNpbHkgaW50ZWdyYXRlZCBpbnRvIHlvdXIgcHJvamVjdHMuIFRoZSBBUEkgZGVmaW5pdGlvbiBpcyBjbGVhbiBhbmQgY29uY2lzZSwgbWFraW5nIGl0IHN0cmFpZ2h0Zm9yd2FyZCB0byB1bmRlcnN0YW5kIGFuZCB3b3JrIHdpdGguCgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgdGl0bGU6IENvbnRhY3RNYW5hZ2VyIEFQSQogIHZlcnNpb246IDEuMC4wCgpzZXJ2ZXJzOgogIC0gdXJsOiBodHRwOi8vbG9jYWxob3N0OjgwODAvCgojIC4uLiAocGF0aHMsIGNvbXBvbmVudHMsIGV0Yy4pCmBgYAoKIyMgQ29kZSBHZW5lcmF0aW9uCgpUaGUgcHJvamVjdCBzaG93Y2FzZXMgdGhlIHVzZSBvZiBPcGVuQVBJIGNvZGUgZ2VuZXJhdGlvbiB0byBzdHJlYW1saW5lIHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzLiBUaGUgQVBJIGRlZmluaXRpb24gc2VydmVzIGFzIGEgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCwgYWxsb3dpbmcgYXV0b21hdGljIGdlbmVyYXRpb24gb2Ygc2VydmVyLXNpZGUgYW5kIGNsaWVudC1zaWRlIGNvZGUsIHJlZHVjaW5nIGRldmVsb3BtZW50IHRpbWUgYW5kIHBvdGVudGlhbCBlcnJvcnMuCgojIyBEYXRhYmFzZTogU1FMTGl0ZQoKQ29udGFjdE1hbmFnZXIgdXRpbGl6ZXMgU1FMTGl0ZSBhcyBpdHMgZGF0YWJhc2UsIHByb3ZpZGluZyBhIGxpZ2h0d2VpZ2h0LCBlbWJlZGRlZCByZWxhdGlvbmFsIGRhdGFiYXNlIHNvbHV0aW9uLiBTUUxMaXRlIGlzIGtub3duIGZvciBpdHMgc2ltcGxpY2l0eSBhbmQgZWZmaWNpZW5jeSwgbWFraW5nIGl0IGEgcGVyZmVjdCBmaXQgZm9yIHByb2plY3RzIHdpdGggbW9kZXJhdGUgZGF0YSBzdG9yYWdlIG5lZWRzLgoKIyMgR2V0dGluZyBTdGFydGVkCgoxLiBDbG9uZSB0aGUgcmVwb3NpdG9yeS4KMi4gQ29uZmlndXJlIHlvdXIgU1FMTGl0ZSBkYXRhYmFzZS4KMy4gUnVuIHRoZSBzZXJ2ZXIuCjQuIFN0YXJ0IG1hbmFnaW5nIHlvdXIgY29udGFjdHMgd2l0aCBlYXNlLgoKRmVlbCBmcmVlIHRvIGV4cGxvcmUgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbiBpbiB0aGUgYG9wZW5hcGkueWFtbGAgZmlsZSBhbmQgbGV2ZXJhZ2UgdGhlIHBvd2VyIG9mIGNvZGUgZ2VuZXJhdGlvbiBmb3IgYSBzbW9vdGggZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZS4gSWYgeW91IGVuY291bnRlciBhbnkgaXNzdWVzIG9yIGhhdmUgc3VnZ2VzdGlvbnMsIHBsZWFzZSBvcGVuIGFuIGlzc3VlIG9yIHN1Ym1pdCBhIHB1bGwgcmVxdWVzdC4gSGFwcHkgY29kaW5nIQ== readmeEtag: '"978351d12c8d1946e3a5f39f69c9e4f72d7661c7"' readmeLastModified: Sun, 25 Feb 2024 16:03:36 GMT repositoryId: 743109520 description: >- The ContactManager project is a robust API for managing contacts, built with OpenAPI and utilizing the power of code generation with SQLLite as the underlying database. created: '2024-01-14T11:11:12Z' updated: '2024-01-28T07:01:17Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: 2697sahil logo: https://avatars.githubusercontent.com/u/67955445?v=4 repoEtag: '"25362851d15f89fb982cc9c3b5a61da22c74ebd3df359690c82753ced58afc35"' repoLastModified: Sun, 28 Jan 2024 07:01:17 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/zikzakjack/myrefcards v3: true id: 6f5ecf2cbb0044d67eda5706700ca230 repositoryMetadata: base64Readme: >- IyBNeVJlZmNhcmRzCgpJIGludGVuZCB0byB1c2UgdGhpcyByZXBvIHRvIGFyY2hpdmUgbXkgcmVmY2FyZHMgd2hpY2ggd291bGQgYmUgZnJlcXVlbnRseSB1c2VkIGluIGRheSB0byBkYXkgcm91dGluZXMuCgoxLiBbTGludXhdKE15UmVmY2FyZHNfT1NfTGludXgubWQpCjIuIFtHaXRdKE15UmVmY2FyZHNfU0NNX0dpdC5tZCkKMy4gW0JpZ0RhdGEgLSBIaXZlXShNeVJlZmNhcmRzX0JpZ0RhdGFfSGl2ZS5tZCkKNC4gW0JpZ0RhdGEgLSBQaWddKE15UmVmY2FyZHNfQmlnRGF0YV9QaWcubWQpCjUuIFtCaWdEYXRhIC0gU3Fvb3BdKE15UmVmY2FyZHNfQmlnRGF0YV9TcW9vcC5tZCkKNS4gW0JpZ0RhdGEgLSBLYWZrYV0oTXlSZWZjYXJkc19CaWdEYXRhX0thZmthLm1kKQo2LiBbSmF2YSAtIEpQQV0oTXlSZWZjYXJkc19KYXZhX0pQQS5tZCkKNy4gW0phdmEgLSBTcHJpbmddKE15UmVmY2FyZHNfSmF2YV9TcHJpbmcubWQpCjcuIFtKYXZhIC0gT3BlbkFQSV0oTXlSZWZjYXJkc19KYXZhX09wZW5BUEkubWQpCgpXaWtpIFRpcHMgOgoKMS4gaHR0cHM6Ly9naXRodWIuY29tL2FkYW0tcC9tYXJrZG93bi1oZXJlL3dpa2kvTWFya2Rvd24tQ2hlYXRzaGVldAoyLiBodHRwczovL2d1aWRlcy5naXRodWIuY29tL2ZlYXR1cmVzL21hc3RlcmluZy1tYXJrZG93bi8K readmeEtag: '"b58d12aaa351dc0888d534d8c336186d9cdb83ba"' readmeLastModified: Thu, 30 Nov 2023 20:01:47 GMT repositoryId: 66270941 description: My CheatSheets about Java, Spring Boot, BigData .... created: '2016-08-22T12:30:04Z' updated: '2024-09-10T13:32:58Z' language: null archived: false stars: 1 watchers: 1 forks: 2 owner: zikzakjack logo: https://avatars.githubusercontent.com/u/15928270?v=4 repoEtag: '"adea7b29c1657b2d4456b2f244c87c38c38f648a00849c245680bd5ded053aa6"' repoLastModified: Tue, 10 Sep 2024 13:32:58 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/smartrecruiters/openapi-schemas-validator v3: true repositoryMetadata: base64Readme: >- IyBAc21hcnRyZWNydWl0ZXJzL29wZW5hcGktc2NoZW1hcy12YWxpZGF0b3IKClshW05QTSBWZXJzaW9uXVtucG0taW1hZ2VdXVtucG0tdXJsXQpbIVtOUE0gRG93bmxvYWRzXVtkb3dubG9hZHMtaW1hZ2VdXVtkb3dubG9hZHMtdXJsXQpbIVtOb2RlLmpzIFZlcnNpb25dW25vZGUtdmVyc2lvbi1pbWFnZV1dW25vZGUtdmVyc2lvbi11cmxdClshW0xpY2VuY2VdW2xpY2Vuc2UtaW1hZ2VdXVtsaWNlbnNlLXVybF0KWyFbQnVpbGRdW3RyYXZpcy1pbWFnZV1dW3RyYXZpcy11cmxdCgpDcmVhdGUgc2NoZW1hIHZhbGlkYXRvcnMgZm9yIGFwaSBkb2N1bWVudGF0aW9uIGluIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAzLnggZm9ybWF0LgoKIyMgdHY0CgpUaGlzIG1vZHVsZSB1c2VzIFt0djRdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3R2NCkgdmFsaWRhdG9yLCBhZGRpdGlvbmFsbHkKY29uZmlndXJlZCB3aXRoIFt0djQtZm9ybWF0c10oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvdHY0LWZvcm1hdHMpLgoKVGhpcyBtb2R1bGUgdXNlcyB0djQgW2B2YWxpZGF0ZU11bHRpcGxlYF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvdHY0I3VzYWdlLTMtbXVsdGlwbGUtZXJyb3JzKSBmdW5jdGlvbiwKd2l0aCBbYGNoZWNrUmVjdXJzaXZlYF0oaHR0cHM6Ly9naXRodWIuY29tL2dlcmFpbnRsdWZmL3R2NCNjeWNsaWNhbC1qYXZhc2NyaXB0LW9iamVjdHMpIHBhcmFtIGFsd2F5cyBwYXNzZWQgYXMgYHRydWVgLgoKWW91IGNhbiBjb25maWd1cmUgdHY0IHZhbGlkYXRvciB3aXRoIGZvbGxvd2luZyBvcHRpb25zOgogKiBjdXN0b21Gb3JtYXRzIC0gd2lsbCBiZSBwYXNzZWQgdG8gW2B0djQuYWRkRm9ybWF0YF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvdHY0I2FkZGZvcm1hdGZvcm1hdC12YWxpZGF0aW9uZnVuY3Rpb24pIGZ1bmN0aW9uCiAqIGJhblVua25vd25Qcm9wZXJ0aWVzIC0gd2lsbCBiZSBwYXNzZWQgdG8gdmFsaWRhdGluZyBmdW5jdGlvbiAoW1RoZSBiYW5Vbmtub3duUHJvcGVydGllcyBmbGFnXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS90djQjdGhlLWJhbnVua25vd25wcm9wZXJ0aWVzLWZsYWcpKQoKVGhlcmUgaXMgZXhwb3J0ZWQgYW4gYEVycm9yQ29kZXNgIG9iamVjdCBjb250YWluaW5nIG1hcHBpbmdzIGJldHdlZW4gZXJyb3IgY29kZSBudW1iZXJzIGFuZCBlcnJvciBuYW1lcyB0aGF0IGFyZSBnZW5lcmF0ZWQgYnkgW3R2NF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvdHY0KSB2YWxpZGF0b3IuCgojIyBPcGVuQVBJIFNwZWNpZmljYXRpb24gMy4wIHNwZWNpZmljIGZlYXR1cmVzCgpDdXJyZW50bHkgQHNtYXJ0cmVjcnVpdGVycy9vcGVuYXBpLXNjaGVtYXMtdmFsaWRhdG9yIHN1cHBvcnRzIGBudWxsYWJsZWAgZmllbGQuCgpQbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjEubWQjZml4ZWQtZmllbGRzLTIwLgoKIyMgTGljZW5zZQoKW01JVF0oTElDRU5TRSkKCltucG0taW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0BzbWFydHJlY3J1aXRlcnMvb3BlbmFwaS1zY2hlbWFzLXZhbGlkYXRvci5zdmcKW25wbS11cmxdOiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ac21hcnRyZWNydWl0ZXJzL29wZW5hcGktc2NoZW1hcy12YWxpZGF0b3IKW2Rvd25sb2Fkcy1pbWFnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL0BzbWFydHJlY3J1aXRlcnMvb3BlbmFwaS1zY2hlbWFzLXZhbGlkYXRvci5zdmcKW2Rvd25sb2Fkcy11cmxdOiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ac21hcnRyZWNydWl0ZXJzL29wZW5hcGktc2NoZW1hcy12YWxpZGF0b3IKW25vZGUtdmVyc2lvbi1pbWFnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbm9kZS92L0BzbWFydHJlY3J1aXRlcnMvb3BlbmFwaS1zY2hlbWFzLXZhbGlkYXRvci5zdmcKW25vZGUtdmVyc2lvbi11cmxdOiBodHRwczovL25vZGVqcy5vcmcvZW4vZG93bmxvYWQvCltsaWNlbnNlLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFydHJlY3J1aXRlcnMvb3BlbmFwaS1zY2hlbWFzLXZhbGlkYXRvci9ibG9iL21hc3Rlci9MSUNFTlNFCltsaWNlbnNlLWltYWdlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9Ac21hcnRyZWNydWl0ZXJzL29wZW5hcGktc2NoZW1hcy12YWxpZGF0b3Iuc3ZnClt0cmF2aXMtdXJsXTogaHR0cHM6Ly90cmF2aXMtY2kub3JnL3NtYXJ0cmVjcnVpdGVycy9vcGVuYXBpLXNjaGVtYXMtdmFsaWRhdG9yClt0cmF2aXMtaW1hZ2VdOiBodHRwczovL2FwaS50cmF2aXMtY2kub3JnL3NtYXJ0cmVjcnVpdGVycy9vcGVuYXBpLXNjaGVtYXMtdmFsaWRhdG9yLnN2Zz9icmFuY2g9bWFzdGVyCiMjIEFQSQoKCiMjIyBNb2R1bGVzCgo8ZGw+CjxkdD48YSBocmVmPSIjbW9kdWxlX0BzbWFydHJlY3J1aXRlcnMvb3BlbmFwaS1zY2hlbWFzLXZhbGlkYXRvciI+QHNtYXJ0cmVjcnVpdGVycy9vcGVuYXBpLXNjaGVtYXMtdmFsaWRhdG9yPC9hPjwvZHQ+CjxkZD48L2RkPgo8L2RsPgoKIyMjIENsYXNzZXMKCjxkbD4KPGR0PjxhIGhyZWY9IiNTY2hlbWFWYWxpZGF0b3IiPlNjaGVtYVZhbGlkYXRvcjwvYT48L2R0Pgo8ZGQ+PC9kZD4KPC9kbD4KCjxhIG5hbWU9Im1vZHVsZV9Ac21hcnRyZWNydWl0ZXJzL29wZW5hcGktc2NoZW1hcy12YWxpZGF0b3IiPjwvYT4KCiMjIyBAc21hcnRyZWNydWl0ZXJzL29wZW5hcGktc2NoZW1hcy12YWxpZGF0b3IKPGEgbmFtZT0iU2NoZW1hVmFsaWRhdG9yIj48L2E+CgojIyMgU2NoZW1hVmFsaWRhdG9yCioqS2luZCoqOiBnbG9iYWwgY2xhc3MgIAoKKiBbU2NoZW1hVmFsaWRhdG9yXSgjU2NoZW1hVmFsaWRhdG9yKQogICAgKiBbbmV3IFNjaGVtYVZhbGlkYXRvcihzcGVjLCBbb3B0aW9uc10pXSgjbmV3X1NjaGVtYVZhbGlkYXRvcl9uZXcpCiAgICAqIFsudmFsaWRhdGUoZW50aXR5LCBzY2hlbWEpXSgjU2NoZW1hVmFsaWRhdG9yK3ZhbGlkYXRlKSDih5IgPGNvZGU+QXJyYXkuJmx0O09iamVjdCZndDs8L2NvZGU+Cgo8YSBuYW1lPSJuZXdfU2NoZW1hVmFsaWRhdG9yX25ldyI+PC9hPgoKIyMjIyBuZXcgU2NoZW1hVmFsaWRhdG9yKHNwZWMsIFtvcHRpb25zXSkKQ3JlYXRlIHNjaGVtYSB2YWxpZGF0b3IgZm9yIHNjaGVtYXMgZGVmaW5lZCBpbiBzcGVjIGF0IGAjL2NvbXBvbmVudHMvc2NoZW1hc2AKCgp8IFBhcmFtIHwgVHlwZSB8IERlZmF1bHQgfCBEZXNjcmlwdGlvbiB8CnwgLS0tIHwgLS0tIHwgLS0tIHwgLS0tIHwKfCBzcGVjIHwgPGNvZGU+T2JqZWN0PC9jb2RlPiB8ICB8IEFQSSBzcGVjaWZpY2F0aW9uIGluIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAzLjAgZm9ybWF0IHwKfCBbb3B0aW9uc10gfCA8Y29kZT5PYmplY3Q8L2NvZGU+IHwgPGNvZGU+e308L2NvZGU+IHwgb3B0aW9ucyB8CnwgW29wdGlvbnMuY3VzdG9tRm9ybWF0c10gfCA8Y29kZT5PYmplY3Q8L2NvZGU+IHwgIHwgY3VzdG9tIGZvcm1hdCB2YWxpZGF0b3JzIHwKfCBbb3B0aW9ucy5iYW5Vbmtub3duUHJvcGVydGllc10gfCA8Y29kZT5ib29sZWFuPC9jb2RlPiB8IDxjb2RlPmZhbHNlPC9jb2RlPiB8IGRpc2FsbG93IGV4dHJhIHByb3BlcnRpZXMgaW4gdmFsaWRhdGVkIG9iamVjdHMgfAoKPGEgbmFtZT0iU2NoZW1hVmFsaWRhdG9yK3ZhbGlkYXRlIj48L2E+CgojIyMjIHNjaGVtYVZhbGlkYXRvci52YWxpZGF0ZShlbnRpdHksIHNjaGVtYSkg4oeSIDxjb2RlPkFycmF5LiZsdDtPYmplY3QmZ3Q7PC9jb2RlPgpWYWxpZGF0ZSBvYmplY3QgYWdhaW5zdCBzY2hlbWEuIFNjaGVtYSBjYW4gYmUgcGFzc2VkIGV4cGxpY2l0bHkgb3IgcmVmZXJlbmNlIGEgc2NoZW1hIGZyb20gc3BlYy4KCioqS2luZCoqOiBpbnN0YW5jZSBtZXRob2Qgb2YgWzxjb2RlPlNjaGVtYVZhbGlkYXRvcjwvY29kZT5dKCNTY2hlbWFWYWxpZGF0b3IpICAKKipSZXR1cm5zKio6IDxjb2RlPkFycmF5LiZsdDtPYmplY3QmZ3Q7PC9jb2RlPiAtIEFuIGFycmF5IHdpdGggZXJyb3JzIHdoZW4gb2JqZWN0IGlzIGludmFsaWQsIGB1bmRlZmluZWRgIG90aGVyd2lzZSAgCgp8IFBhcmFtIHwgVHlwZSB8IERlc2NyaXB0aW9uIHwKfCAtLS0gfCAtLS0gfCAtLS0gfAp8IGVudGl0eSB8IDxjb2RlPk9iamVjdDwvY29kZT4gfCBvYmplY3QgdG8gdmFsaWRhdGUgfAp8IHNjaGVtYSB8IDxjb2RlPk9iamVjdDwvY29kZT4gXHwgPGNvZGU+c3RyaW5nPC9jb2RlPiB8IG9iamVjdCBzY2hlbWEgfAoK readmeEtag: '"e9b3adc39b6afebd21ef78e97eb6323655f706d4"' readmeLastModified: Tue, 29 Nov 2022 16:15:28 GMT repositoryId: 124135624 description: >- Schema validators for api documentation in OpenAPI Specification 3.x format. created: '2018-03-06T20:39:42Z' updated: '2026-01-30T10:08:03Z' language: JavaScript archived: false stars: 1 watchers: 31 forks: 1 owner: smartrecruiters logo: https://avatars.githubusercontent.com/u/1618540?v=4 license: MIT repoEtag: '"253f3edc7dab7f50d55d4ae72fb9d2e4a0b5c270cadae0d9fb70742c590fa6e1"' repoLastModified: Fri, 30 Jan 2026 10:08:03 GMT foundInMaster: true category: - Data Validators - Parsers id: d77a07afc70fd9f0ff64c98fa79ec7f9 - source: openapi3 tags repository: https://github.com/bbakla/oap_spring_boot3_code_generation v3: true id: 4c8df6edd80e681c509fd53b96094a0d repositoryMetadata: base64Readme: >- VGhlc2UgYXJlIHR3byBTcHJpbmcgQm9vdCBwcm9qZWN0cyBkZXNpZ25lZCB0byBzaG93Y2FzZSBjb2RlIGdlbmVyYXRpb24gYW5kIEFQSSBkb2N1bWVudGF0aW9uIGluIFNwcmluZyBCb290IDMgdXNpbmcgT3BlbkFQSSwgZW1wbG95aW5nIGJvdGggTWF2ZW4gYW5kIEdyYWRsZSBidWlsZCB0b29scy4K readmeEtag: '"8ea764644b2ca5ed1bcfd4d5db9db787cd17bbcc"' readmeLastModified: Sat, 02 Mar 2024 22:46:41 GMT repositoryId: 762329485 description: null created: '2024-02-23T14:55:22Z' updated: '2024-08-21T07:14:56Z' language: Java archived: false stars: 1 watchers: 1 forks: 2 owner: bbakla logo: https://avatars.githubusercontent.com/u/7812609?v=4 repoEtag: '"2f6dd7103d32b9e1cfcb13037a5052e68826029eec61ea76712ac0b7a44db690"' repoLastModified: Wed, 21 Aug 2024 07:14:56 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/sudokuru/puzzle v3: true id: 9d8896537414d70c7c57f9878d6430bb repositoryMetadata: base64Readme: >- PiBbIUlNUE9SVEFOVF0gIAo+IFRoaXMgcmVwb3NpdG9yeSBpcyByZWFkLW9ubHkgLyBhcmNoaXZlZCBhbmQgd2lsbCBub3QgcmVjaWV2ZSB1cGRhdGVzLgoKIyBbVHlwZWRvYyBEb2N1bWVudGF0aW9uIFdlYnNpdGVdKGh0dHBzOi8vc3Vkb2t1cnUuZ2l0aHViLmlvL0JhY2tlbmQvKTxicj4KCiMgVG9kbwoKLSBbIF0gQWRkIGxpY2Vuc2UgZmlsZSBhbmQgZGlzdHJpYnV0ZSB0byBhbGwgcmVwb3MgdXNpbmcgR2l0SHViIEFjdGlvbiAoVGhvbWFzKQotIFsgXSBGaW5pc2ggd3JpdGluZyBpbnRlZ3JhdGlvbiB0ZXN0cyBmb3IgcHV6emxlIGVuZHBvaW50IChUaG9tYXMpCi0gWyBdIFdyaXRlIEdpdEh1YiBob29rIHRvIHJ1biBhbGwgdGVzdHMgYmVmb3JlIFB1c2ggdG8gcmVwbyAoVGhvbWFzKQotIFt4XSBTZXQgdXAgRGV2IGFuZCBQcm9kIExhbWJkYSBlbnZpcm9ubWVudHMgKFRob21hcy9HcmVnb3J5KQotIFsgXSBBZGQgTWVybWFpZCBkb2N1bWVudGF0aW9uIGFuZCBkaXN0cmlidXRlIHRvIGFsbCByZXBvcyB1c2luZyBHaXRIdWIgQWN0aW9uIChUaG9tYXMpCi0gWyBdIENsZWFuIHVwIGRvY2tlciBpbXBsZW1lbnRhdGlvbiAoYXV0by1yZWJ1aWxkKSAoVGhvbWFzKQotIFsgXSBEaXNwbGF5IGludGVncmF0aW9uIHRlc3QgcmVzdWx0cyB3aXRoIHJlcG9ydGVyIChUaG9tYXMpCi0gWyBdIERlY2lkZSBvbiBpbml0aWFsIEpTT04gc3RydWN0dXJlIGZvciByZW1haW5pbmcgZW5kcG9pbnRzIChUZWFtKQotIFsgXSBXcml0ZSBsb2dpYyBmb3IgcmVtYWluaW5nIGVuZHBvaW50cyAoRGFuaWVsKQotIFsgXSBXcml0ZSBzYW5pdGF0aW9uIGFuZCB2YWxpZGF0aW9uIGZvciByZW1haW5pbmcgZW5kcG9pbnRzIChEYW5pZWwpCi0gWyBdIFdyaXRlIFBvc3RtYW4gaW50ZWdyYXRpb24gdGVzdHMgZm9yIHJlbWFpbmluZyBlbmRwb2ludHMgKERhbmllbCkKLSBbIF0gU2V0IHVwIEF1dGgwIHRva2VuIGF1dGhlbnRpY2F0aW9uIChUaG9tYXMvRGFuaWVsKQotIFsgXSBXcml0ZSB1cCBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGZvciBlbmRwb2ludHMgKFRob21hcy9EYW5pZWwpCi0gWyBdIFJlc29sdmUgcmVtYWluaW5nIGBgYC8vdG9kb2BgYCBpdGVtcyAoVGhvbWFzL0RhbmllbCkKLSBbIF0gRGV0ZXJtaW5lIGhvdyB0byBzZXQgUHJvZCBlbnZpcm9ubWVudCB0byB1c2UgdmVyc2lvbmluZyBjb250cm9sIChUaG9tYXMvR3JlZ29yeSkKLSBbIF0gSW1wbGVtZW50IHVuaXQgdGVzdHMgaWYgbmVlZGVkIChUaG9tYXMvRGFuaWVsKQoKIyBEZXZlbG9wZXIgU2V0dXAKCjEuIEluc3RhbGwgRG9ja2VyIG9uIHlvdXIgbWFjaGluZS4gVHV0b3JpYWwgaXMgbGlua2VkIGJlbG93Ojxicj4KICAgWyFbRG9ja2VyIFR1dG9yaWFsXShodHRwczovL2ltZy55b3V0dWJlLmNvbS92aS8yZXpOcXFhU2pxOC8wLmpwZyldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9MmV6TnFxYVNqcTgpPGJyPgoyLiBUaGUgTW9uZ28gaW1hZ2UgY2FuIGJlIHJ1biB3aXRoIHRoaXMgY29tbWFuZCBpbiB0aGUgcm9vdCBmb2xkZXI6PGJyPgogICBOb3RlIHVzZSBgYGBzdWRvYGBgIG9uIExpbnV4L01hYzxicj4KYGBgY29uc29sZQpucG0gcnVuIGRvY2tlcgpgYGAKMy4gQ3JlYXRlIC5lbnYgZmlsZSB3aXRoIGVudmlyb25tZW50IHZhcmlhYmxlcwo0LiBSdW4gbnBtIGkKNS4gVGhlIGFwcCBjYW4gdGhlbiBiZSBydW4gd2l0aCB0aGUgY29tbWFuZDo8YnI+CmBgYGNvbnNvbGUKbnBtIHJ1biBzdGFydApgYGAKNi4gSW50ZWdyYXRpb24gdGVzdHMgY2FuIGJlIHJ1biB3aGVuIHRoZSBhcHAgaXMgcnVubmluZyB3aXRoIHRoaXMgY29tbWFuZDo8YnI+CmBgYGNvbnNvbGUKbnBtIHJ1biB0ZXN0OmludGVncmF0aW9uCmBgYAoKIyBQb3N0bWFuCgpXZSBhcmUgdXNpbmcgUG9zdG1hbiBmb3IgaW50ZWdyYXRpb24gdGVzdHMuPGJyPgpUaGUgZm9sbG93aW5nIHZpZGVvIGlzIHZlcnkgaGVscGZ1bCBmb3IgdW5kZXJzdGFuZGluZyBob3cgUG9zdG1hbiB3b3JrcyB3aXRoIEdpdEh1Yjo8YnI+ClshW1Bvc3RtYW4gVHV0b3JpYWxdKGh0dHBzOi8vaW1nLnlvdXR1YmUuY29tL3ZpL2NCN21DdVlldUFVLzAuanBnKV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1jQjdtQ3VZZXVBVSk8YnI+CgojIyMgQmVsb3cgaXMgYW4gZXhhbXBsZSBzdHJ1Y3R1cmUgZm9yIHRlc3RzIGJhc2VkIG9uIFB1enpsZSBlbmRwb2ludApUaGUgUG9zdG1hbiB0ZXN0cyBhcmUgc3RydWN0dXJlZCBiYXNlZCBvbiB0aGUgZW5kcG9pbnQgbmFtZSwgdGhlIHR5cGUgb2YgcmVxdWVzdCwgYW5kIHRoZSBleHBlY3RlZCByZXNwb25zZSBjb2RlPGJyPgoKIVtwb3N0bWFuX3N0cnVjdHVyZS5wbmddKERvY3VtZW50YXRpb24vaW1hZ2VzL3Bvc3RtYW5TdHJ1Y3R1cmUucG5nKTxicj4KClRoaXMgc3RydWN0dXJlIGFsbG93cyB1cyB0byB3cml0ZSB0ZXN0IGNhc2VzIGZvciB0aGUgQ29kZSA0MDAgZm9sZGVyIHdoaWNoIHdvdWxkIGJlIHJ1biBmb3IgYWxsIHRlc3RzIGluIHRoYXQgZm9sZGVyLjxicj4KPGJyPgpBbGwgdGVzdHMgZm9yIHRoZSBTdWRva3VydS1CYWNrZW5kIGhhdmUgYWNjZXNzIHRvIHRoZSBTdWRva3VydS1CYWNrZW5kIFByZS1yZXF1ZXN0IHNjcmlwdHMgYW5kIHRlc3RzLjxicj4KV2UgY3VycmVudGx5IGhhdmUgYSBQcmUtcmVxdWVzdCBzY3JpcHQgdGhhdCBkZWxldGVzIHRoZSB3aG9sZSBkYXRhYmFzZSBiZWZvcmUgZXZlcnkgdGVzdC48YnI+CldlIGFsc28gaGF2ZSBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGFsbCBERUxFVEUgcmVxdWVzdHMgdG8gdmFsaWRhdGUgdGhlIHJlc3BvbnNlLjxicj4KCiFbYmFja2VuZF9wcmVfcmVxdWVzdF9zY3JpcHRzLnBuZ10oRG9jdW1lbnRhdGlvbi9pbWFnZXMvQmFja2VuZC1QcmUtUmVxdWVzdC1TY3JpcHRzLnBuZyk8YnI+CgojIyMjIEluc2lkZSB0aGUgUHV6emxlIGVuZHBvaW50IGZvbGRlciB3ZSBoYXZlIHNoYXJlZCBmdW5jdGlvbnMgdG8gdmFsaWRhdGUgYSBwdXp6bGUgcmVzcG9uc2UgYW5kIHRvIGdlbmVyYXRlIHNoYXJlZCBwdXp6bGUgSlNPTiBmb3IgUHJlLVJlcXVlc3Qgc2NyaXB0cyBmb3Igb3RoZXIgdGVzdHMuPGJyPgoKIVtwdXp6bGVfcmVzcG9uc2VfY2hlY2tlci5wbmddKERvY3VtZW50YXRpb24vaW1hZ2VzL3B1enpsZV9yZXNwb25zZV9jaGVja2VyLnBuZyk8YnI+CiMjIyMgVGhlIGJlbG93IGZ1bmN0aW9ucyB0YWtlIGluIGFuIGludGVnZXIgYW5kIHJldHVybiBlaXRoZXIgdmFsaWQgSlNPTiBvciBhbiBvYmplY3QgZm9yIHJlZmVyZW5jZS48YnI+CiFbc2hhcmVkX3B1enpsZXNfZm9yX3Rlc3RzLnBuZ10oRG9jdW1lbnRhdGlvbi9pbWFnZXMvc2hhcmVkX3B1enpsZXNfZm9yX3Rlc3RzLnBuZyk8YnI+CgojIyMjIEluc2lkZSB0aGUgIkNvZGUgMjAxIiBmb2xkZXIgd2UgaGF2ZSBhIHRlc3QgY2FzZSB0aGF0IHdpbGwgYmUgcnVuIGZvciBhbGwgdGVzdHMgaW5zaWRlIG9mIHRoZSBmb2xkZXIuPGJyPgohW3NoYXJlZF9yZXNwb25zZV9jb2RlX3Rlc3QucG5nXShEb2N1bWVudGF0aW9uL2ltYWdlcy9zaGFyZWRfcmVzcG9uc2VfY29kZV90ZXN0LnBuZyk8YnI+Cg== readmeEtag: '"fc56dbd9e10debb1f3a6ba9bfe9eacafca4cca16"' readmeLastModified: Fri, 23 Aug 2024 00:41:57 GMT repositoryId: 559546165 description: Backend API for Sudokuru created: '2022-10-30T13:07:50Z' updated: '2024-08-23T00:42:40Z' language: TypeScript archived: true stars: 1 watchers: 0 forks: 1 owner: Sudokuru logo: https://avatars.githubusercontent.com/u/114212382?v=4 license: GPL-3.0 repoEtag: '"b6d29b0ac283f4bf5b43a9c4de01af2c6278646832b6f50e0ea70cde176def59"' repoLastModified: Fri, 23 Aug 2024 00:42:40 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/sudokuru/backend - source: openapi3 tags repository: https://github.com/aosolorzano/city-tasks-lambda-native-with-dynamodb v3: true id: 08b61c6defc33bd561b2ba03a057fa95 repositoryMetadata: base64Readme: >- CiMjIEVEQSB1c2luZyBTcHJpbmcgQm9vdCBhbmQgU3ByaW5nIENsb3VkIEZ1bmN0aW9ucyB0byBkZXBsb3kgbmF0aXZlIGV4ZWN1dGFibGVzIG9uIEVDUyBhbmQgTGFtYmRhIHJlc3BlY3RpdmVseS4KCiogKipBdXRob3IqKjogW0FuZHJlcyBTb2xvcnphbm9dKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9hb3NvbG9yemFuby8pLgoqICoqTGV2ZWwqKjogQWR2YW5jZWQuCiogKipUZWNobm9sb2dpZXMqKjogSmF2YSAxNywgU3ByaW5nIEJvb3QgMywgU3ByaW5nIENsb3VkIDQsIFNwcmluZyBOYXRpdmUsIFNwcmluZyBXZWJGbHV4LCBTcHJpbmcgT0F1dGgyLCBRdWFydHosIEZseXdheSwgTG9tYm9rLCBUZXN0Y29udGFpbmVycywgTG9jYWxTdGFjaywgQVdTIENvcGlsb3QgQ0xJLCBBV1MgU0FNLUNMSSwgQW1hem9uIENvZ25pdG8sIEFtYXpvbiBBdXJvcmEgKHdpdGggUG9zdGdyZVNRTCksIER5bmFtb0RCLCBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyLCBFdmVudEJyaWRnZSwgTGFtYmRhLCBhbmQgRG9ja2VyLgoKIVtdKHV0aWxzL2ltYWdlcy9zb2x1dGlvbnNfYXJjaGl0ZWN0dXJlX3Y1LnBuZykKCllvdSBjYW4gcmVhZCB0aGUgZm9sbG93aW5nIGFydGljbGVzIGZyb20gbXkgKipNZWRpdW0uY29tKiogYWNjb3VudCB0byBnZXQgbW9yZSBwcm9qZWN0IGRldGFpbHM6CgoxLiBbTXVsdGktQWNjb3VudCBlbnZpcm9ubWVudCBvbiBBV1MgdXNpbmcgSUFNIElkZW50aXR5IENlbnRlcl0oaHR0cHM6Ly9hb3NvbG9yemFuby5tZWRpdW0uY29tL2ltcGxlbWVudGluZy1hLW11bHRpLWFjY291bnQtZW52aXJvbm1lbnQtd2l0aC1hd3Mtb3JnYW5pemF0aW9ucy1hbmQtdGhlLWlhbS1pZGVudGl0eS1jZW50ZXItZDFjZGI0MGJkZjRkKS4KMi4gW09BdXRoMiBpbiBTcHJpbmcgQm9vdCBOYXRpdmUgbWljcm9zZXJ2aWNlXShodHRwczovL2Fvc29sb3J6YW5vLm1lZGl1bS5jb20vb2F1dGgyLWluLXNwcmluZy1ib290LW5hdGl2ZS1yZWFjdGl2ZS1taWNyb3NlcnZpY2Utd2l0aC1hbWF6b24tY29nbml0by1hcy1vaWRjLXNlcnZpY2UtYzQ1NGQ4NGE1MjM0KS4KMy4gW0RlcGxveWluZyBTcHJpbmcgQm9vdCBOYXRpdmUgbWljcm9zZXJ2aWNlIHVzaW5nIENyb3NzLUFjY291bnQgZGVwbG95bWVudF0oaHR0cHM6Ly9hb3NvbG9yemFuby5tZWRpdW0uY29tL3NwcmluZy1ib290LW5hdGl2ZS1taWNyb3NlcnZpY2Utb24tZWNzLWZhcmdhdGUtdXNpbmctYXdzLWNvcGlsb3QtY2xpLWZvci1jcm9zcy1hY2NvdW50LWRlcGxveW1lbnQtNzNiMTgzNmYyMWY3KS4KNC4gW0VuZC10by1FbmQgRW5jcnlwdGlvbiB1c2luZyBUTFMgRUNEU0EgY2VydGlmaWNhdGUgYW5kIEFDTSB3aXRoIENvcGlsb3QgQ0xJXShodHRwczovL2Fvc29sb3J6YW5vLm1lZGl1bS5jb20vZW5kLXRvLWVuZC1lbmNyeXB0aW9uLXVzaW5nLXRscy1lY2RzYS1jZXJ0aWZpY2F0ZS1hY20tYW5kLWF3cy1jb3BpbG90LWNsaS02NGY1ZGFhZmU5NzcpLgo1LiBbRURBIHVzaW5nIEFtYXpvbiBFdmVudEJyaWRnZSwgTGFtYmRhLCBhbmQgU0FNLUNMSSwgd2l0aCBGYXJnYXRlIEVDUyBhcyBFdmVudCBTb3VyY2VdKGh0dHBzOi8vYW9zb2xvcnphbm8ubWVkaXVtLmNvbS9lZGEtd2l0aC1ldmVudGJyaWRnZS1hbmQtbGFtYmRhLXVzaW5nLXNhbS1jbGktd2l0aC1zcHJpbmctYm9vdC1tcy1vbi1mYXJnYXRlLWVjcy1hcy1ldmVudC1zb3VyY2UtOWFiZWUyMzdiZTA4KS4KNi4gW1N0b3JpbmcgRURBIGV2ZW50cyBpbiBEeW5hbW9EQiBmcm9tIGEgTmF0aXZlIExhbWJkYSBGdW5jdGlvbiB1c2luZyBTcHJpbmcgQ2xvdWQgRnVuY3Rpb25zXShodHRwczovL2Fvc29sb3J6YW5vLm1lZGl1bS5jb20vc3RvcmluZy1lZGEtZXZlbnRzLWluLWR5bmFtb2RiLXVzaW5nLWEtbmF0aXZlLWxhbWJkYS1mdW5jdGlvbi13aXRoLWdyYWFsdm0tc3ByaW5nLWNsb3VkLWZ1bmN0aW9ucy1jMzJjZWU0Nzc1ZmMpLgoKLS0tCgojIyBEZXNjcmlwdGlvbi4KVGhpcyBwcm9qZWN0IHVzZXMgU3ByaW5nIEJvb3QgdG8gbWFuYWdlIFF1YXJ0eiBKb2JzIHdpdGggdGhlIGhlbHAgb2YgU3ByaW5nIFdlYmZsdXggYW5kIFNwcmluZyBOYXRpdmUuClRoZSBRdWFydHogbGlicmFyeSBpcyBjb25maWd1cmVkIGZvciBhIGNsdXN0ZXJlZCBlbnZpcm9ubWVudCwgc28gaXQgbmVlZHMgUG9zdGdyZXMgdG8gc3RvcmUgYW5kIG1hbmFnZSBKb2JzIGV4ZWN1dGlvbnMuCldoZW4gYSBRdWFydHogSm9iIGlzIGV4ZWN1dGVkLCB0aGUgY2FsbGluZyBtZXRob2QgcmV0cmlldmVzIHRoZSBEZXZpY2UgaXRlbSBhc3NvY2lhdGVkIHdpdGggdGhlIFRhc2tzIGFuZCB1cGRhdGVzIGl0cyBzdGF0ZSBpbiBEeW5hbW9EQi4KVG8gcGVyZm9ybSBhbGwgdGhlc2UgYWN0aXZpdGllcywgdGhlIHVzZXJzIG11c3QgaGF2ZSBhIHZhbGlkIGFjY2VzcyB0b2tlbiAoSldUKSB0byBhY2Nlc3MgdGhlIGVuZHBvaW50cy4KQWxsIHRlc3QgY2FzZXMgdXNlIFRERCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRldmVsb3BtZW50LCBhbmQgb25seSBJbnRlZ3JhdGlvbiBUZXN0cyBhcmUgZXhlY3V0ZWQgd2l0aCB0aGUgc3VwcG9ydCBvZiBUZXN0Y29udGFpbmVycyBhbmQgTG9jYWxTdGFjayB0byB0cnkgdG8gY292ZXIgcmVhbC13b3JsZCBzY2VuYXJpb3MuClRoaXMgcHJvamVjdCBhbHNvIHVzZXMgRG9ja2VyIENvbXBvc2UgdG8gZGVwbG95IGEgbG9jYWwgY2x1c3RlciB3aXRoIHRoZSByZXF1aXJlZCBzZXJ2aWNlcyBmb3IgbG9jYWwgdGVzdGluZy4KCi0tLQoKIyMgUHJlcmVxdWlzaXRlcy4KLSBHaXQuCi0gQVdTIENMSSAodmVyc2lvbiAyLjExLispLgotIEFXUyBDb3BpbG90IENMSSAodmVyc2lvbiAxLjI3LispLgotIEFXUyBTQU0gQ0xJICh2ZXJzaW9uIDEuOTAuKykuCi0gT3BlbkpESyAodmVyc2lvbiAxNy4wLispLiBZb3UgY2FuIHVzZSBTREtNQU4uCi0gQXBhY2hlIE1hdmVuICh2ZXJzaW9uIDMuOS4rKSBZb3UgY2FuIHVzZSBTREtNQU4uCi0gU3ByaW5nIEJvb3QgKHZlcnNpb24gMy4xLispCi0gRG9ja2VyIGFuZCBEb2NrZXIgQ29tcG9zZS4KCi0tLQoKIyMgUHJvamVjdCBTdHJ1Y3R1cmUuClRoZSBwcm9qZWN0IGlzIGRpdmlkZWQgaW50byB0aGUgZm9sbG93aW5nIGRpcmVjdG9yaWVzOgotICoqc3JjKio6IENvbnRhaW5zIHNvdXJjZSBjb2RlIG9mIHRoZSByZXF1aXJlZCBwcm9qZWN0cy4KLSAqKmNvcGlsb3QqKjogQ29udGFpbnMgdGhlIENvcGlsb3QgY29uZmlndXJhdGlvbiBmaWxlcy4KLSAqKnRlbXBsYXRlLnlhbWwqKjogQ29udGFpbnMgdGhlIFNBTSBjb25maWd1cmF0aW9uLgotICoqZG9ja2VyLWNvbXBvc2UueW1sKio6IENvbnRhaW5zIHRoZSBEb2NrZXIgQ29tcG9zZSBmaWxlIHRvIGRlcGxveSB0aGUgbG9jYWwgY2x1c3Rlci4KLSAqKnBvbS54bWwqKjogQ29udGFpbnMgdGhlIHByb2plY3QncyBkZXBlbmRlbmNpZXMuCi0gKip1dGlscyoqOiBDb250YWlucyB0aGUgc2NyaXB0cyB0byBkZXBsb3kgdGhlIGFwcGxpY2F0aW9uIGxvY2FsbHkgb3IgaW4gQVdTLgoKLS0tCgojIyBEZXBsb3ltZW50IE9wdGlvbnMuCllvdSBuZWVkIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20gdGhlIHByb2plY3QncyByb290IGRpcmVjdG9yeToKYGBgYmFzaAouL3J1bi1zY3JpcHRzLnNoCmBgYAoKVGhlIHNjcmlwdCB3aWxsIGFzayB5b3UgZm9yIHRoZSByZXF1aXJlZCBBV1MgcHJvZmlsZXMgdG8gZGVwbG95IHRoZSBhcHBsaWNhdGlvbiBsb2NhbGx5IG9yIGluIEFXUzoKIVtdKHV0aWxzL2ltYWdlcy9iYXNoX3NjcmlwdF9lbnRlcmluZ192YXJpYWJsZXMucG5nKQoKVGhlbiwgdGhlIHNjcmlwdCBzaG93cyBhIG1haW4gbWVudSB3aXRoIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKIVtdKHV0aWxzL2ltYWdlcy9iYXNoX3NjcmlwdF9tYWluX21lbnUucG5nKQoKSWYgeW91IGNob29zZSBvcHRpb24gJ2gnIGZvciAnSGVscGVyIE1lbnUsJwp5b3UgY2FuIGNyZWF0ZS9kZXBsb3kgZGVwZW5kZW50IHJlc291cmNlcyByZXF1aXJlZCBiZWZvcmUgZGVwbG95aW5nIHRoZSBhcHBsaWNhdGlvbiBvbiBBV1MuCgotLS0KCiMjIEludGVybmFsIERvY3VtZW50YXRpb24uClRoZSBpbnRlcm5hbCBwcm9qZWN0IGRvY3VtZW50YXRpb24gaXMgZGl2aWRlZCBpbnRvIHRoZSBmb2xsb3dpbmcgZGlyZWN0b3JpZXM6Ci0gKip1dGlscy9kb2NzKio6IENvbnRhaW5zIHRoZSBwcm9qZWN0J3MgZG9jdW1lbnRhdGlvbi4KLSAqKnV0aWxzL2RvY3MvaW1hZ2VzKio6IENvbnRhaW5zIHNvbHV0aW9uJ3MgYXJjaGl0ZWN0dXJlIGltYWdlcy4KClRoZSBtYXJrZG93biBkb2N1bWVudGF0aW9uIGZvciBpbmRpdmlkdWFsIHByb2plY3RzIGlzIGF2YWlsYWJsZSBhdDoKLSBbVGFza3MgQVBJIHdpdGggQ29waWxvdCBDTEldKHNyYy9jaXR5LXRhc2tzLWFwaS9SRUFETUUubWQpLgotIFtUYXNrcyBFdmVudCB3aXRoIFNBTSBDTEldKHNyYy9jaXR5LXRhc2tzLWV2ZW50cy1mdW5jdGlvbi9SRUFETUUubWQpLgo= readmeEtag: '"4ca8f19c899c799682d9488dc10224c79415d381"' readmeLastModified: Sun, 19 Nov 2023 19:50:17 GMT repositoryId: 667132451 description: >- Lambda Native Function using Java and GraalVM, which stores EDA events on Amazon DynamoDB. created: '2023-07-16T18:38:56Z' updated: '2024-12-14T04:24:52Z' language: Java archived: false stars: 1 watchers: 2 forks: 1 owner: aosolorzano logo: https://avatars.githubusercontent.com/u/5817871?v=4 license: Apache-2.0 repoEtag: '"7536ca435b2c13c9d93ebae7323a31bac7138d8a12d25764625855fa9d9508c9"' repoLastModified: Sat, 14 Dec 2024 04:24:52 GMT category: Server Implementations foundInMaster: true - source: - openapi3 tags - openapi31 tags repository: https://github.com/goodluckxu-go/goapi v3: true id: 4143f283ad0108cc2ea084b428069d65 repositoryMetadata: base64Readme: >- IyBnb2FwaQrkvb/nlKhPcGVuQVBJMy4x5paH5qGj55qESFRUUOahhuaetgoK5L2/55So6K+05piOOgotIFvkuK3mlofmlofmoaNdKGRvY3MvemgvaW5kZXgubWQpCiMjIOeUqOazlQp+fn5iYXNoCmdvIGdldCBnaXRodWIuY29tL2dvb2RsdWNreHUtZ28vZ29hcGkvdjIKfn5+CiMjIOWKn+iDvQotIOWunueOsOS6hmh0dHDmnI3liqHvvIzot6/nlLHkvb/nlKhnaW7ot6/nlLHmqKHlvI/nmoTliY3nvIDmoJHmlrnlvI/lrp7njrAKLSDpm4bmiJBzd2FnZ2VyK29wZW5hcGkzLjEuMOaWh+aho+eahOiuv+mXrgotIOWunueOsOS6hm9wZW5hcGnkuK3pqozor4Hlkoxnb2Fwaeeoi+W6j+mqjOivgeeahOWQjOatpQotIOWunueOsOS6huiHquWumuS5ieS4remXtOS7tgotIOWunueOsOS6humJtOadg+iupOivgQotIOWunueOsOS6hui3r+eUsee7hOaooeW8jwotIOWunueOsOS6huWkmuS4queoi+W6j+aooeWdl+e7hOeahOaooeW8jwotIC4uLi4uLgojIyDlhbPkuo4K5L2/55So57G75Ly85LqOUHl0aG9u5Lit55qERmFzdEFQSeeahEFQSeeUn+aIkOaWh+ahow== readmeEtag: '"1c635e245e3725d27ab124ade9d659138a2777fb"' readmeLastModified: Mon, 19 Jan 2026 09:15:20 GMT repositoryId: 819191357 description: Go的API服务器可以生成开放的API文档 Go's API server can generate open API documents created: '2024-06-24T02:43:37Z' updated: '2026-02-06T03:40:54Z' language: Go archived: false stars: 2 watchers: 1 forks: 0 owner: goodluckxu-go logo: https://avatars.githubusercontent.com/u/110141236?v=4 repoEtag: '"dd9f4e48e61476ae894fbd62aa990514fd7e94fbf99640f9bc374233eb464ab7"' repoLastModified: Fri, 06 Feb 2026 03:40:54 GMT category: Parsers foundInMaster: true v3_1: true - source: openapi3 tags repository: https://github.com/listendev/pkg v3: true id: 809b021239d9fe78081a04950e153301 repositoryMetadata: base64Readme: >- IyBwa2cKCkEgY29sbGVjdGlvbiBvZiBjb21tb24gcGFja2FnZXMuCgojIyBQYWNrYWdlcwoKLSBbZ2l0aHViLmNvbS9saXN0ZW5kZXYvcGtnL2FuYWx5c2lzcmVxdWVzdF0oL2FuYWx5c2lzcmVxdWVzdCkKLSBbZ2l0aHViLmNvbS9saXN0ZW5kZXYvcGtnL2FwaXNwZWNdKC9hcGlzcGVjKQotIFtnaXRodWIuY29tL2xpc3RlbmRldi9wa2cvZGV0ZWN0aW9uL3R5cGVdKC9kZXRlY3Rpb24vdHlwZSkKLSBbZ2l0aHViLmNvbS9saXN0ZW5kZXYvcGtnL2Vjb3N5c3RlbV0oL2Vjb3N5c3RlbSkKLSBbZ2l0aHViLmNvbS9saXN0ZW5kZXYvcGtnL2luZm9ybWF0aW9uYWwvdHlwZV0oL2luZm9ybWF0aW9uYWwvdHlwZSkKLSBbZ2l0aHViLmNvbS9saXN0ZW5kZXYvcGtnL2xvY2tmaWxlXSgvbG9ja2ZpbGUpCi0gW2dpdGh1Yi5jb20vbGlzdGVuZGV2L3BrZy9tYW5pZmVzdF0oL21hbmlmZXN0KQotIFtnaXRodWIuY29tL2xpc3RlbmRldi9wa2cvbWFwL3V0aWxdKC9tYXAvdXRpbCkKLSBbZ2l0aHViLmNvbS9saXN0ZW5kZXYvcGtnL21vZGVsc10oL21vZGVscykKLSBbZ2l0aHViLmNvbS9saXN0ZW5kZXYvcGtnL25wbV0oL25wbSkKLSBbZ2l0aHViLmNvbS9saXN0ZW5kZXYvcGtnL29ic2VydmFiaWxpdHldKC9vYnNlcnZhYmlsaXR5KQotIFtnaXRodWIuY29tL2xpc3RlbmRldi9wa2cvcHlwaV0oL3B5cGkpCi0gW2dpdGh1Yi5jb20vbGlzdGVuZGV2L3BrZy9yYW5kXSgvcmFuZCkKLSBbZ2l0aHViLmNvbS9saXN0ZW5kZXYvcGtnL3N0cmluZy91dGlsXSgvc3RyaW5nL3V0aWwpCi0gW2dpdGh1Yi5jb20vbGlzdGVuZGV2L3BrZy90eXBlXSgvdHlwZSkKLSBbZ2l0aHViLmNvbS9saXN0ZW5kZXYvcGtnL3ZhbGlkYXRlXSgvdmFsaWRhdGUpCi0gW2dpdGh1Yi5jb20vbGlzdGVuZGV2L3BrZy92ZXJkaWN0Y29kZV0oL3ZlcmRpY3Rjb2RlKQoKIyMgR2VuZXJhdGlvbgoKYGBgCmdvIGluc3RhbGwgZ29sYW5nLm9yZy94L3Rvb2xzL2NtZC9zdHJpbmdlckBsYXRlc3QKZ28gaW5zdGFsbCBnaXRodWIuY29tL2RlZXBtYXAvb2FwaS1jb2RlZ2VuL2NtZC9vYXBpLWNvZGVnZW5AbWFzdGVyICMgVXNlIG1hc3RlciBicmFuY2gKZ28gZ2VuZXJhdGUgLXggLi92ZXJkaWN0Y29kZQpnbyBnZW5lcmF0ZSAteCAuL2Vjb3N5c3RlbQpnbyBnZW5lcmF0ZSAteCAuL21vZGVscy9jYXRlZ29yeQpnbyBnZW5lcmF0ZSAteCAuL21vZGVscy9zZXZlcml0eQpnbyBnZW5lcmF0ZSAteCAuL21vZGVscwpnbyBnZW5lcmF0ZSAteCAuL2xvY2tmaWxlCmdvIGdlbmVyYXRlIC14IC4vbWFuaWZlc3QKZ28gZ2VuZXJhdGUgLXggLi9hcGlzcGVjCmdvIGdlbmVyYXRlIC14IC4vZGV0ZWN0aW9uL3R5cGUKZ28gZ2VuZXJhdGUgLXggLi9pbmZvcm1hdGlvbmFsL3R5cGUKYGBgCg== readmeEtag: '"d243c5a4c82f56ce88bf595e42579f3ebf1a817d"' readmeLastModified: Wed, 04 Sep 2024 16:05:57 GMT repositoryId: 665077779 description: >- Models for the analysis requests to listen.dev and the consequent verdicts responses created: '2023-07-11T11:39:58Z' updated: '2025-02-06T10:12:42Z' language: Go archived: false stars: 1 watchers: 4 forks: 0 owner: listendev logo: https://avatars.githubusercontent.com/u/103680976?v=4 license: Apache-2.0 repoEtag: '"43e6f7a3940b90a4947d02ba292cea8932598c49c09c276805eb5490a6dd1793"' repoLastModified: Thu, 06 Feb 2025 10:12:42 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/unjello/openapi-mockk v3: true repositoryMetadata: base64Readme: >- aW1hZ2U6Omh0dHA6Ly91bm1haW50YWluZWQudGVjaC9iYWRnZS5zdmdbbGluaz1odHRwOi8vdW5tYWludGFpbmVkLnRlY2gvXQ0KDQo9IERFUFJFQ0FURUQNCg0KX29wZW5hcGktcGFyc2VyXyBpcyBubyBsb25nZXIgc3VwcG9ydGVkLCBwbGVhc2UgY29uc2lkZXIgdXNpbmcgaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItcGFyc2VyW3N3YWdnZXItcGFyc2VyXS4NCg== readmeEtag: '"5dc94a8d0e902f95a0e80e0d23c492f159b9f7f8"' readmeLastModified: Wed, 01 May 2019 08:48:51 GMT repositoryId: 128423249 description: DEPRECATED. Generates data based on OpenAPI 3.0 specification created: '2018-04-06T17:10:22Z' updated: '2019-05-01T08:50:29Z' language: JavaScript archived: false stars: 1 watchers: 2 forks: 2 owner: unjello logo: https://avatars.githubusercontent.com/u/155669?v=4 license: CC0-1.0 repoEtag: '"846ef8dbe0d9696dafde759155e27e8edb595922ebc7eb306f6a1b747e47b101"' repoLastModified: Wed, 01 May 2019 08:50:29 GMT foundInMaster: true category: Code Generators id: ac51d5abb01feee912cecaa014d2ef7c - source: openapi3 tags repository: https://github.com/aasaam/openapi-preview v3: true repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICA8aDE+CiAgICBPcGVuQVBJIFByZXZpZXcKICA8L2gxPgogIDxwPgogICAgUHJldmlldyBPcGVuQVBJIFNwZWMgdXNpbmcgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkiPlN3YWdnZXIgVUk8L2E+CiAgPC9wPgogIDxwPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Fhc2FhbS9vcGVuYXBpLXByZXZpZXciPgogICAgICA8aW1nIGFsdD0iR2l0SHViIHJlcG8gc2l6ZSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9yZXBvLXNpemUvYWFzYWFtL29wZW5hcGktcHJldmlldyI+CiAgICA8L2E+CiAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWFzYWFtL29wZW5hcGktcHJldmlldy9ibG9iL21hc3Rlci9MSUNFTlNFIj4KICAgICAgPGltZyBhbHQ9IkxpY2Vuc2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9hYXNhYW0vb3BlbmFwaS1wcmV2aWV3Ij4KICAgIDwvYT4KICA8L3A+CjwvZGl2PgoKPGRpdj4KICA8cCBhbGlnbj0iY2VudGVyIj4KICAgIDxpbWcgYWx0PSJhYXNhYW0gc29mdHdhcmUgZGV2ZWxvcG1lbnQgZ3JvdXAiIHdpZHRoPSI2NCIgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYWFzYWFtL2luZm9ybWF0aW9uL21hc3Rlci9sb2dvL2Fhc2FhbS5zdmciPgogICAgPGJyIC8+CiAgICBhYXNhYW0gc29mdHdhcmUgZGV2ZWxvcG1lbnQgZ3JvdXAKICA8L3A+CjwvZGl2Pgo= readmeEtag: '"3785309248dff3c86536a2d3faba12ba0039c086"' readmeLastModified: Wed, 03 Mar 2021 23:47:43 GMT repositoryId: 214886616 description: Preview OpenAPI Spec using Swagger UI created: '2019-10-13T20:10:24Z' updated: '2021-03-03T23:48:04Z' language: HTML archived: false stars: 1 watchers: 1 forks: 0 owner: aasaam logo: https://avatars.githubusercontent.com/u/10144065?v=4 license: MIT repoEtag: '"3fea4cd10d5db06f1908c9c8f4e723a9d92de5584f8d47b358d376a8eb9b6827"' repoLastModified: Wed, 03 Mar 2021 23:48:04 GMT foundInMaster: true category: - Documentation - Testing id: eeb5e994f260453efafd8bd3ae56f690 - source: openapi3 tags repository: https://github.com/elibracha/openapi-diff-ignore v3: true repositoryMetadata: base64Readme: >- T3BlbkFQSS1kaWZmLWlnbm9yZQo9PT09PT09PT09PT0KWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5jb20vZWxpYnJhY2hhL29wZW5hcGktZGlmZi1pZ25vcmUuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5jb20vZWxpYnJhY2hhL29wZW5hcGktZGlmZi1pZ25vcmUpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9lbGlicmFjaGEvb3BlbmFwaS1kaWZmLWlnbm9yZS9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2ZyldKGh0dHBzOi8vY29kZWNvdi5pby9naC9lbGlicmFjaGEvb3BlbmFwaS1kaWZmLWlnbm9yZSkKWyFbSmlvbiB0aGUgU2xhY2sgY2hhdCByb29tXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1NsYWNrLUpvaW4lMjB0aGUlMjBjaGF0JTIwcm9vbS1vcmFuZ2UpXShodHRwczovL2pvaW4uc2xhY2suY29tL3Qvb3BlbmFwaS1kaWZmLWlnbm9yZS9zaGFyZWRfaW52aXRlL2VuUXRPVE00TXpZeE5EQXhNVEV3TFRrMFpEbG1ZemN3WVdWbE5XUmlOREE0WW1JMU1ESXdZalpsTVRrNE1qYzVPVEkzTmpZMFpqZzBaVEV5TmpBME56QmtPV1kzTW1OaE5qUTJOamd4WWpZKQoKUGFyc2UgYSBPcGVuQVBJLWRpZmYgaWdub3JlIGZpbGUgc3BlY2lmaWNhdGlvbnMoMS54KS4gCkNhbiBiZSB1c2UgdG8gaW50ZWdyYXRlIHdpdGggT3BlbkFQSS1kaWZmIGFuZCBjdXN0b21pemUgeW91ciBicmVha2luZyBjaGFuZ2VzLgoKSWYgeW91IHRoaW5rIHlvdSBoYXZlIGZvdW5kIGEgYnVnLCBwbGVhc2UgZmlsZSBhbiBpc3N1ZSBpbiB0aGUgW0dpdGh1YiBJc3N1ZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9lbGlicmFjaGEvb3BlbmFwaS1kaWZmLWlnbm9yZS9pc3N1ZXMpLgoKSWdub3JlIFNwZWNpZmljYXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIyMgU2NoZW1hCkluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24sIGlmIGEgZmllbGQgaXMgbm90IGV4cGxpY2l0bHkgUkVRVUlSRUQgb3IgZGVzY3JpYmVkIHdpdGggYSBNVVNUIG9yIFNIQUxMLCBpdCBjYW4gYmUgY29uc2lkZXJlZCBPUFRJT05BTC4KCiMjIyMjIEZpeGVkIEZpZWxkcwoKRmllbGQgTmFtZSB8IFR5cGUgfCBEZXNjcmlwdGlvbgotLS18Oi0tLTp8LS0tCjxhIG5hbWU9ImV4dGVuZHMiPjwvYT5leHRlbmRzIHwgYHN0cmluZ2AgfCBDYW4gYmUgdXNlZCB0byBpbmhlcml0IGEgcHJlIGRlZmluZWQgaWdub3JlIGZpbGUgZnVuY3Rpb25hbGl0eS4gUHJvdmlkZXMgbWV0YWRhdGEgYWJvdXQgYmFzaWMgaWdub3JlIGZpbGUgZm9yIHlvdXIgY3VzdG9tIEFQSSBpZ25vcmUuIChMaWtlIC0+ICIuZGVmYXVsdCIpCjxhIG5hbWU9InZlcnNpb24iPjwvYT52ZXJzaW9uIHwgYHN0cmluZ2AgfCAqKlJFUVVJUkVEKiouIFRoaXMgc3RyaW5nIE1VU1QgYmUgdGhlIFtzZW1hbnRpYyB2ZXJzaW9uIG51bWJlcl0oaHR0cHM6Ly9zZW12ZXIub3JnL3NwZWMvdjIuMC4wLmh0bWwpIG9mIHRoZSBbSWdub3JlIFNwZWNpZmljYXRpb24gdmVyc2lvbl0oI3ZlcnNpb25zKSB0aGF0IHRoZSBPcGVuQVBJIGlnbm9yZSBkb2N1bWVudCB1c2VzLiBUaGUgYHZlcnNpb25gIGZpZWxkIFNIT1VMRCBiZSB1c2VkIGJ5IHRvb2xpbmcgc3BlY2lmaWNhdGlvbnMgYW5kIGNsaWVudHMgdG8gaW50ZXJwcmV0IHRoZSBPcGVuQVBJIGlnbm9yZSBkb2N1bWVudC4KPGEgbmFtZT0iaW5mbyI+PC9hPmluZm8gfCBgc3RyaW5nYCB8IFByb3ZpZGVzIG1ldGFkYXRhIGFib3V0IGdlbmVyYWwgaW5mbyBmb3IgdGhlIEFQSSBpZ25vcmUuIFRoZSBtZXRhZGF0YSBNQVkgYmUgdXNlZCBieSB0b29saW5nIGFzIHJlcXVpcmVkLgo8YSBuYW1lPSJwcm9qZWN0Ij48L2E+cHJvamVjdCB8IGBzdHJpbmdgIHwgUHJvdmlkZXMgbWV0YWRhdGEgYWJvdXQgdGhlIFByb2plY3QgdXNpbmcgdGhlIGlnbm9yZSBmaWxlLiBUaGUgbWV0YWRhdGEgTUFZIGJlIHVzZWQgYnkgdG9vbGluZyBhcyByZXF1aXJlZC4KPGEgbmFtZT0icGF0aHMiPjwvYT5wYXRocyB8IFtQYXRocyBPYmplY3RdKCNwYXRoc09iamVjdCkgfCAgVGhlIGF2YWlsYWJsZSBwYXRocyBhbmQgb3BlcmF0aW9ucyBmb3IgdGhlIEFQSSB0aGF0IG5lZWRlZCB0byBiZSBpZ25vcmVkLgoKIyMjIyA8YSBuYW1lPSJwYXRoc09iamVjdCI+PC9hPlBhdGhzIE9iamVjdAoKSG9sZHMgdGhlIHJlbGF0aXZlIHBhdGhzIHRvIHRoZSBpbmRpdmlkdWFsIGVuZHBvaW50cyBhbmQgdGhlaXIgb3BlcmF0aW9ucy4KCiMjIyMjIFBhdHRlcm5lZCBGaWVsZHMKCkZpZWxkIFBhdHRlcm4gfCBUeXBlIHwgRGVzY3JpcHRpb24KLS0tfDotLS06fC0tLQo8YSBuYW1lPSJwYXRoc1BhdGgiPjwvYT4ve3BhdGh9IHwgW1BhdGggSXRlbSBPYmplY3RdKCNwYXRoSXRlbU9iamVjdCkgfCBBIHJlbGF0aXZlIHBhdGggdG8gYW4gaW5kaXZpZHVhbCBlbmRwb2ludC4gVGhlIGZpZWxkIG5hbWUgTVVTVCBiZWdpbiB3aXRoIGEgc2xhc2guIFdpbGRjYXJkIGlzIGFsbG93ZWQuIFdoZW4gbWF0Y2hpbmcgVVJMcy4gSW4gY2FzZSBvZiBhbWJpZ3VvdXMgbWF0Y2hpbmcsIGl0J3MgdXAgdG8gdGhlIHRvb2xpbmcgdG8gZGVjaWRlIHRoZSBleGVjdXRpb24gb3JkZXIuCgojIyMjIyBQYXRoIFdpbGRjYXJkIE1hdGNoaW5nCgpBc3N1bWluZyB0aGUgZm9sbG93aW5nIHBhdGhzLCB0aGUgY29uY3JldGUgZGVmaW5pdGlvbiwgYC9wZXRzL21pbmVgLCB3aWxsIGJlIG1hdGNoZWQgaWYgdXNlZDoKCmBgYAogIC9wZXRzLyoqICAgICAgICAjIHdpbGwgbWF0Y2ggYW5kIGFsc28gbWF0Y2ggYWxsIHBldHMgZW5kcG9pbnRzCiAgLyoqICAgICAgICAgICAgICMgd2lsbCBtYXRjaCBhbmQgYWxzbyB3aWxsIG1hdGNoIGFsbCBlbmRwb2ludHMKYGBgCk5PVElDRSEgV2hlbiB1c2luZyB3aWxkY2FyZHMgYWxsIGVuZHBvaW50cyBtYXRjaGluZyB0aGUgd2lsZGNhcmQgd2lsbCBhcHBseSB0aGUgaWdub3JlIHNwZWNpZmllZC4KCiMjIyMjIFBhdGhzIE9iamVjdCBFeGFtcGxlCgpgYGB5YW1sCnBhdGhzOgogIC9wZXQvKiosIC9zdG9yZS8qKjogICAgICAgICMgdGhpcyBwYXRoIHdpbGwgbWF0Y2ggYW55ICdwZXQnIG9yICdzdG9yZScgZW5kcG9pbnQgCiAgICBnZXQ6ICAgICAgICAgICAgICAgICAgICAgIAogICAgICByZXNwb25zZToKICAgICAgICAyMDA6CiAgICAgICAgICBuZXc6IHRydWUKICAgICAgcGFyYW1ldGVyczoKICAgICAgICAtIHVzZXJuYW1lCiAgICAgICAgLSBwYXNzd29yZAoKICAgIHBvc3Q6CiAgICAgIHJlcXVlc3Q6CiAgICAgICAgY29udGVudDoKICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb24sIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTogJAogICAgICByZXNwb25zZToKICAgICAgICAyMDA6CiAgICAgICAgICBuZXc6IHRydWUKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgICAgICAgLSBwZXRJZAogICAgICAgICAgICAgICAgICAtIHF1YW50aXR5CiAgICAgICAgICAgICAgICAgIC0gc2hpcERhdGUKICAgICAgICAgICAgICAgICAgLSBjb21wbGV0ZQogICAgICBzZWN1cml0eToKICAgICAgICBwZXRzdG9yZV9hdXRoOgogICAgICAgICAgLSAnd3JpdGU6cGV0cycKICAgICAgICAgIC0gJ3JlYWQ6cGV0cycKCiAgL3VzZXIvbG9naW46ICAgICAgICAgICAgICAgIyB0aGlzIHBhdGggd2lsbCBtYXRjaCBvbmx5ICcvdXNlci9sb2dpbicgZW5kcG9pbnQuIAogICAgcG9zdDogJCAgICAgICAgCmBgYAoKIyMjIyA8YSBuYW1lPSJwYXRoSXRlbU9iamVjdCI+PC9hPlBhdGggSXRlbSBPYmplY3QKCkRlc2NyaWJlcyB0aGUgb3BlcmF0aW9ucyBhdmFpbGFibGUgb24gYSBzaW5nbGUgcGF0aC4KQSBQYXRoIEl0ZW0gTUFZIGJlIGVtcHR5LCBkdWUgdG8gW0FDTCBjb25zdHJhaW50c10oI3NlY3VyaXR5RmlsdGVyaW5nKS4KVGhlIHBhdGggaXRzZWxmIGlzIHN0aWxsIGV4cG9zZWQgdG8gdGhlIGRvY3VtZW50YXRpb24gdmlld2VyIGJ1dCB0aGV5IHdpbGwgbm90IGtub3cgd2hpY2ggb3BlcmF0aW9ucyBhbmQgcGFyYW1ldGVycyBhcmUgYXZhaWxhYmxlLgoKIyMjIyMgRml4ZWQgRmllbGRzCgpGaWVsZCBOYW1lIHwgVHlwZSB8IERlc2NyaXB0aW9uCi0tLXw6LS0tOnwtLS0KPGEgbmFtZT0icGF0aEl0ZW1HZXQiPjwvYT5nZXQgfCBbT3BlcmF0aW9uIE9iamVjdF0oI29wZXJhdGlvbk9iamVjdCkgfCBBIGRlZmluaXRpb24gb2YgYSBHRVQgb3BlcmF0aW9uIG9uIHRoaXMgcGF0aC4KPGEgbmFtZT0icGF0aEl0ZW1QdXQiPjwvYT5wdXQgfCBbT3BlcmF0aW9uIE9iamVjdF0oI29wZXJhdGlvbk9iamVjdCkgfCBBIGRlZmluaXRpb24gb2YgYSBQVVQgb3BlcmF0aW9uIG9uIHRoaXMgcGF0aC4KPGEgbmFtZT0icGF0aEl0ZW1Qb3N0Ij48L2E+cG9zdCB8IFtPcGVyYXRpb24gT2JqZWN0XSgjb3BlcmF0aW9uT2JqZWN0KSB8IEEgZGVmaW5pdGlvbiBvZiBhIFBPU1Qgb3BlcmF0aW9uIG9uIHRoaXMgcGF0aC4KPGEgbmFtZT0icGF0aEl0ZW1EZWxldGUiPjwvYT5kZWxldGUgfCBbT3BlcmF0aW9uIE9iamVjdF0oI29wZXJhdGlvbk9iamVjdCkgfCBBIGRlZmluaXRpb24gb2YgYSBERUxFVEUgb3BlcmF0aW9uIG9uIHRoaXMgcGF0aC4KPGEgbmFtZT0icGF0aEl0ZW1PcHRpb25zIj48L2E+b3B0aW9ucyB8IFtPcGVyYXRpb24gT2JqZWN0XSgjb3BlcmF0aW9uT2JqZWN0KSB8IEEgZGVmaW5pdGlvbiBvZiBhIE9QVElPTlMgb3BlcmF0aW9uIG9uIHRoaXMgcGF0aC4KPGEgbmFtZT0icGF0aEl0ZW1IZWFkIj48L2E+aGVhZCB8IFtPcGVyYXRpb24gT2JqZWN0XSgjb3BlcmF0aW9uT2JqZWN0KSB8IEEgZGVmaW5pdGlvbiBvZiBhIEhFQUQgb3BlcmF0aW9uIG9uIHRoaXMgcGF0aC4KPGEgbmFtZT0icGF0aEl0ZW1QYXRjaCI+PC9hPnBhdGNoIHwgW09wZXJhdGlvbiBPYmplY3RdKCNvcGVyYXRpb25PYmplY3QpIHwgQSBkZWZpbml0aW9uIG9mIGEgUEFUQ0ggb3BlcmF0aW9uIG9uIHRoaXMgcGF0aC4KPGEgbmFtZT0icGF0aEl0ZW1UcmFjZSI+PC9hPnRyYWNlIHwgW09wZXJhdGlvbiBPYmplY3RdKCNvcGVyYXRpb25PYmplY3QpIHwgQSBkZWZpbml0aW9uIG9mIGEgVFJBQ0Ugb3BlcmF0aW9uIG9uIHRoaXMgcGF0aC4KCiMjIyMjIFBhdGggSXRlbSBPYmplY3QgRXhhbXBsZQoKCmBgYHlhbWwKIHBvc3Q6CiAgICAgIHJlcXVlc3Q6CiAgICAgICAgY29udGVudDoKICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb24sIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTogJAogICAgICByZXNwb25zZToKICAgICAgICAyMDA6CiAgICAgICAgICBuZXc6IHRydWUKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgICAgICAgLSBwZXRJZAogICAgICAgICAgICAgICAgICAtIHF1YW50aXR5CiAgICAgICAgICAgICAgICAgIC0gc2hpcERhdGUKICAgICAgICAgICAgICAgICAgLSBjb21wbGV0ZQogICAgICBzZWN1cml0eToKICAgICAgICBwZXRzdG9yZV9hdXRoOgogICAgICAgICAgLSAnd3JpdGU6cGV0cycKICAgICAgICAgIC0gJ3JlYWQ6cGV0cycKcHV0OiAkCmRlbGV0ZTogJApgYGAKCiMjIyMgPGEgbmFtZT0ib3BlcmF0aW9uT2JqZWN0Ij48L2E+T3BlcmF0aW9uIE9iamVjdAoKRGVzY3JpYmVzIGEgc2luZ2xlIEFQSSBpZ25vcmUgb3BlcmF0aW9uIG9uIGEgcGF0aC4KCiMjIyMjIEZpeGVkIEZpZWxkcwoKRmllbGQgTmFtZSB8IFR5cGUgfCBEZXNjcmlwdGlvbgotLS18Oi0tLTp8LS0tCjxhIG5hbWU9InNlY3VyaXR5Ij48L2E+c2VjdXJpdHkgfCBbU2VjdXJpdHkgT2JqZWN0XSgjcGFyYW1ldGVyT2JqZWN0KSB8IEEgbGlzdCBvZiBzZWN1cml0eSByZXF1aXJlbWVudHMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgaWdub3JlZC4KPGEgbmFtZT0icGFyYW1ldGVycyI+PC9hPnBhcmFtZXRlcnMgfCBbUGFyYW1ldGVyIE9iamVjdF0oI3BhcmFtZXRlck9iamVjdCl8IEEgbGlzdCBvZiBwYXJhbWV0ZXJzIHRoYXQgYXJlIGdvaW5nIHRvIGJlIGlnbm9yZWQuCjxhIG5hbWU9InJlcXVlc3QiPjwvYT5yZXF1ZXN0IHwgW1JlcXVlc3QgT2JqZWN0XSgjcmVxdWVzdEJvZHlPYmplY3QpIHwgVGhlIHJlcXVlc3QgYm9keSBhcHBsaWNhYmxlIGZvciB0aGlzIG9wZXJhdGlvbi4gY2FuIHNwZWNpZnkgaWdub3JlIGZvciBjb250ZW50LXR5cGUuCjxhIG5hbWU9InJlc3BvbnNlIj48L2E+cmVzcG9uc2UgfCBbUmVzcG9uc2UgT2JqZWN0XSgjcmVzcG9uc2VzT2JqZWN0KSB8IFRoZSBsaXN0IG9mIHBvc3NpYmxlIHJlc3BvbnNlIHN0YXR1c2VzIHRoYXQgYXJlIGdvaW5nIHRvIGJlIGlnbm9yZWQuCgojIyMjIyBPcGVyYXRpb24gT2JqZWN0IEV4YW1wbGUKCmBgYHlhbWwKcmVxdWVzdDoKICBjb250ZW50OgogICAgYXBwbGljYXRpb24vanNvbiwgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtOiAkCgpwYXJhbWV0ZXJzOgogIC0gdXNlcm5hbWUKICAtIHBhc3N3b3JkCgpyZXNwb25zZToKICAyMDA6CiAgICBuZXc6IHRydWUKICAgIGNvbnRlbnQ6CiAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgc2NoZW1hOgogICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgLSBwZXRJZAogICAgICAgICAgICAtIHF1YW50aXR5CiAgICAgICAgICAgIC0gc2hpcERhdGUKICAgICAgICAgICAgLSBjb21wbGV0ZQoKc2VjdXJpdHk6CiAgcGV0c3RvcmVfYXV0aDoKICAgIC0gJ3dyaXRlOnBldHMnCiAgICAtICdyZWFkOnBldHMnCmBgYAojIyMjIDxhIG5hbWU9InNlY3VyaXR5T2JqZWN0Ij48L2E+U2VjdXJpdHkgT2JqZWN0CgpEZXNjcmliZXMgYSBzZWN1cml0eSByZXF1aXJlbWVudHMgdGhhdCBuZWVkZWQgdG8gYmUgaWdub3JlZC4KCiMjIyMjIEZpeGVkIEZpZWxkcwoKRmllbGQgTmFtZSB8IFR5cGUgfCBEZXNjcmlwdGlvbgotLS18Oi0tLTp8LS0tCjxhIG5hbWU9InNjaG1lYSI+PC9hPntzY2hlbWF9IHwgTWFwPFN0cmluZywgTGlzdD4gfCBBIG1hcCBvZiBzZWN1cml0eSByZXF1aXJlbWVudHMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgaWdub3JlZC4KIyMjIyMgU2VjdXJpdHkgT2JqZWN0IEV4YW1wbGUKCmBgYHlhbWwKc2VjdXJpdHk6CiAgcGV0c3RvcmVfYXV0aDoKICAgIC0gJ3dyaXRlOnBldHMnCiAgICAtICdyZWFkOnBldHMnCiAgYXBpX2tleToKICAgIC0gJ3JlYWQ6dXNlcnMnCmBgYAoKRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tCgpNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBvbiBbRG9jc11bb3BlbmFwaS1kaWZmLWlnbm9yZS1ob21lXS4KCgpXaGVyZSBjYW4gSSBnZXQgdGhlIGxhdGVzdCByZWxlYXNlPwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpZb3UgY2FuIGRvd25sb2FkIHJlbGVhc2Ugc291cmNlIGZyb20gb3VyIHJlbGVhc2UgcGFnZS4KCkNvbnRyaWJ1dGluZwotLS0tLS0tLS0tLS0KCklmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgZGV2ZWxvcG1lbnQgb2YgT3BlbkFQSS1kaWZmLWlnbm9yZSwgcGxlYXNlIGNvbnN1bHQgdGhlIApkb2N1bWVudGF0aW9uIGZpcnN0IGFuZCBhZnRlcndhcmRzIHlvdSBhcmUgd2VsY29tZSB0byBqb2luIHRoZSBkZXZlbG9wZXJzIAptYWlsaW5nIGxpc3QgdG8gYXNrIHF1ZXN0aW9uIG9yIGRpc2N1c3MgbmV3IGlkZWFzIC8gZmVhdHVyZXMgLyBidWdzIGV0Yy4KClRha2UgYSBsb29rIGludG8gdGhlIFtjb250cmlidXRpb24gZ3VpZGVsaW5lc10oQ09OVFJJQlVUSU5HLm1kKS4KCgoKUXVpY2sgQnVpbGQKLS0tLS0tLQpJZiB5b3Ugd2FudCB0byBib290c3RyYXAgb3BlbmFwaS1kaWZmLWlnbm9yZSwgeW91J2xsIG5lZWQ6Ci0gSmF2YSAxLjgrCi0gTWF2ZW4gMy54Lnggb3IgbGF0ZXIKLSBSdW4gTWF2ZW4sIHNwZWNpZnlpbmcgYSBsb2NhdGlvbiBpbnRvIHdoaWNoIHRoZSBjb21wbGV0ZWQgTWF2ZW4gZGlzdHJvIHNob3VsZCBiZSBpbnN0YWxsZWQ6CmBgYAouL212bncgY2xlYW4gcGFja2FnZQpgYGAKCltvcGVuYXBpLWRpZmYtaWdub3JlLWhvbWVdOiBodHRwczovL21hdmVuLmFwYWNoZS5vcmcvCg== readmeEtag: '"35cb21cd72cd6694e0e922d261b89a3d08d9bb08"' readmeLastModified: Tue, 05 May 2020 14:09:44 GMT repositoryId: 238002799 description: >- This repository describes an ignore specification, and can be used to integrate with OpenAPI-diff and customize your breaking changes. created: '2020-02-03T15:53:55Z' updated: '2020-05-05T14:09:53Z' language: Java archived: false stars: 1 watchers: 3 forks: 1 owner: elibracha logo: https://avatars.githubusercontent.com/u/31411282?v=4 license: MIT repoEtag: '"336d756f25328a384ac2e52fff15916adbaeb25bb5acebe56131cbaa5b574d95"' repoLastModified: Tue, 05 May 2020 14:09:53 GMT foundInMaster: true category: Parsers id: 2e25629dba8381246f6bb9aa2a9c4951 - source: openapi3 tags repository: https://github.com/karthikeyan-ng/e-learnings-certificate_udemy v3: true repositoryMetadata: repositoryId: 243043222 description: Course Completion Certificates + Technology Certificates created: '2020-02-25T16:07:38Z' updated: '2020-07-05T13:26:31Z' language: null archived: false stars: 1 watchers: 1 forks: 0 owner: karthikeyan-ng logo: https://avatars.githubusercontent.com/u/39563373?v=4 repoEtag: '"0b20cc21f8527608cef757a421c6312b9fc6988988280ad420cfd83e0fd21388"' repoLastModified: Sun, 05 Jul 2020 13:26:31 GMT foundInMaster: true id: 2945795c4fef24e25a12f0ba8a8e93e8 - source: openapi3 tags repository: https://github.com/abhinaba-ghosh/postman-coverage v3: true repositoryMetadata: base64Readme: >- IyBQb3N0bWFuLUNvdmVyYWdlCgpHZW5lcmF0ZSBQb3N0bWFuIGNvbGxlY3Rpb24gY292ZXJhZ2UgcmVwb3J0LgoKV29yayBpbiBwcm9ncmVzcyEgS2VlcCB3YXRjaGluZy4K readmeEtag: '"abfc1968a123d3c44e3c4e78bd856e348d1bfad3"' readmeLastModified: Sun, 27 Jun 2021 21:21:43 GMT repositoryId: 379584054 description: derive postman collection coverage against openapi schema created: '2021-06-23T11:45:36Z' updated: '2022-09-05T10:42:44Z' language: TypeScript archived: false stars: 1 watchers: 1 forks: 0 owner: abhinaba-ghosh logo: https://avatars.githubusercontent.com/u/23141842?v=4 license: MIT repoEtag: '"f058de1377d7a986fadf19b76da21cfcd4f85e25a4e3c7fe737d3999bea43cfa"' repoLastModified: Mon, 05 Sep 2022 10:42:44 GMT foundInMaster: true category: - Converters - Testing id: 99d139aa4e0795bc5213ad50c672253a - source: openapi3 tags repository: https://github.com/kba07/ecwid-shiprocket-app v3: true id: 2500014a818e22f012ce48fe3e880483 repositoryMetadata: base64Readme: >- IyBJbnRlZ3JhdGlvbiBiZXR3ZWVuIGVjd2lkIGFuZCBzaGlwcm9ja2V0LgpBIHNpbXBsZSBpbnRlZ3JhdGlvbiBiZXR3ZWVuIGVjd2lkIGFuZCBzaGlwcm9ja2V0LCB3aGljaCB3aWxsIGdlbmVyYXRlIHNoaXByb2NrZXQgc3BlY2lmaWMgYnVsayBvcmRlcnMgY3N2IGFuZCBzZW5kIGl0IG92ZXIgYW4gZW1haWwuCg== readmeEtag: '"81e94b0e64c0c73c552242ecaa9471583f977d31"' readmeLastModified: Tue, 30 May 2023 07:21:02 GMT repositoryId: 354893401 description: >- A simple integration between ecwid and shiprocket, which will generate shiprocket specific bulk orders csv and send it over an email. created: '2021-04-05T16:10:44Z' updated: '2023-05-30T07:17:45Z' language: Python archived: false stars: 1 watchers: 1 forks: 0 owner: KBA07 logo: https://avatars.githubusercontent.com/u/39996841?v=4 repoEtag: '"08b2c6ba0fd0180ca366c0d105939414b8e495b0ef0abda75d91db416d3117b8"' repoLastModified: Tue, 30 May 2023 07:17:45 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/rrjanbiah/legacy2openapi-spec v3: true repositoryMetadata: base64Readme: >- IyBsZWdhY3kyb3BlbmFwaS1zcGVjIC0gTGVnYWN5IHRvIE9wZW5BUEkgc3BlYyBjb252ZXJzaW9ucyBvZiBBUElzIGZvciBlYXN5IFNESyBjb2RlIGdlbmVyYXRpb25zCgpPcGVuQVBJIHNwZWMtY29tcGxpYW50IEFQSXMgaGF2ZSB0aGUgYmVsb3cgYWR2YW50YWdlczoKMS4gQ2FuIGdlbmVyYXRlIFNESyBjb2RlcyBhdXRvbWF0aWNhbGx5IHVzaW5nIHRoZSBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpCjIuIENhbiBnZW5lcmF0ZSBBUEkgcGxheWdyb3VuZCAmIGRvY3VtZW50YXRpb24gdXNpbmcgW29wZW5hcGktdWldKGh0dHBzOi8vZ2l0aHViLmNvbS9kaGNvZGUvb3BlbmFwaS11aSkgYW5kIFtTd2FnZ2VyIFVJXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aSkKMy4gQ2FuIGdlbmVyYXRlIG5pY2UtbG9va2luZyBkb2N1bWVudGF0aW9uIHVzaW5nIFtSZWRvY10oaHR0cHM6Ly9naXRodWIuY29tL1JlZG9jbHkvcmVkb2MpCgpCdXQsIGZldyBTYWFTIGNvbXBhbmllcyBkb24ndCBvZmZlciBPcGVuQVBJIHNwZWMgZm9yIHRoZWlyIG93biByZWFzb25zLiBUaGlzIHByb2plY3QgaXMgYW4gYXR0ZW1wdCB0byBpZGVudGlmeSB0aG9zZSBsZWdhY3kgQVBJIGRvY3VtZW50YXRpb24gYW5kIGNvbnZlcnQgdGhlbSBpbnRvIE9wZW5BUEkgc3BlYy4K readmeEtag: '"c278f991609423c723641b2ebce18ee07d09c3a2"' readmeLastModified: Sat, 23 Apr 2022 15:25:45 GMT repositoryId: 484774635 description: Legacy to OpenAPI spec conversions of APIs for easy SDK code generations created: '2022-04-23T14:47:43Z' updated: '2025-09-25T14:39:17Z' language: Rust archived: false stars: 2 watchers: 1 forks: 0 owner: rrjanbiah logo: https://avatars.githubusercontent.com/u/4907427?v=4 license: MIT repoEtag: '"7fb1a459bf943d6b886ea0d59c990d227370b4123915abbe7c9cff076e81dfae"' repoLastModified: Thu, 25 Sep 2025 14:39:17 GMT foundInMaster: true category: - Code Generators - Parsers id: 8b6ae7f657ec6327ab502f153fcbea3a - source: openapi3 tags repository: https://github.com/george-the-penguin/render-spring-boot-rest-api-poc v3: true id: 0693d7a953b867eea8a6cccd6b6f02e2 repositoryMetadata: base64Readme: >- IyByZW5kZXItc3ByaW5nLWJvb3QtcmVzdC1hcGktcG9jCgpUaGlzIGlzIGEgc2ltcGxlIFNwcmluZyBCb290IFJFU1QgQVBJIFByb29mIG9mIENvbmNlcHQgKFBPQykgcHJvamVjdC4KClRoZSBnb2FsIG9mIHRoaXMgcHJvamVjdCBpcyB0byBkZW1vbnN0cmF0ZSBob3cgdG8gY3JlYXRlIGEgUkVTVCBBUEkgdXNpbmcgU3ByaW5nIEJvb3QsIGFuZCBpdCBjYW4gcnVuIHByb3Blcmx5IGluIHRoZSAKUmVuZGVyIGVjb3N5c3RlbS4KClRoZSBpZGVhIHRvIGNyZWF0ZSB0aGlzIHByb2plY3QgYXJpc2VzIGluIHJlc3BvbnNlIHRvIHNldmVyYWwgcXVlc3Rpb25zIGFza2VkIGJ5IHBhcnRpY2lwYW50cyBvZiB0aGUgKipEZXZzIExhdGFtKiogCmluaXRpYXRpdmUgZnJvbSB0aGUgKipUcnlDYXRjaCoqIGRldmVsb3BtZW50IGNvbW11bml0eS4KCiMjIFRlY2hub2xvZ2llcwoKVGhlIGZvbGxvd2luZyBpcyB0aGUgbGlzdCBvZiB0ZWNobm9sb2dpZXMgdXNlZCB0byBidWlsZCB0aGlzIHByb2plY3Q6CgotIFtKYXZhIDE3XShodHRwczovL29wZW5qZGsub3JnL3Byb2plY3RzL2pkay8xNy8pCi0gW1NwcmluZyBCb290IDMuMC42XShodHRwczovL3NwcmluZy5pby8pCi0gW0FwYWNoZSBNYXZlbiAzLjkuMV0oaHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnLykKLSBbTG9tYm9rIDEuMTguMjZdKGh0dHBzOi8vcHJvamVjdGxvbWJvay5vcmcvKQotIFtPcGVuQVBJIDMuMC4zXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKQotIFtQb3N0Z3JlU1FMIDE1XShodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy8pCi0gW0RvY2tlciAyMC4xMC4yNF0oaHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8pCi0gW1JlbmRlcl0oaHR0cHM6Ly9yZW5kZXIuY29tLykKCiMjIENyZWF0ZSBhIFJlbmRlcidzIFBvc3RncmVTUUwgZGF0YWJhc2UKClRvIGNyZWF0ZSBhIFBvc3RncmVTUUwgZGF0YWJhc2UgaW4gUmVuZGVyLCB5b3UgbmVlZCB0byBmb2xsb3cgdGhlIGZvbGxvd2luZyBzdGVwczoKCjEuIEdvIHRvIHRoZSBbUmVuZGVyJ3MgZGFzaGJvYXJkXShodHRwczovL2Rhc2hib2FyZC5yZW5kZXIuY29tLykuCjIuIENsaWNrIG9uIHRoZSAqKk5ldysqKiBidXR0b24sIGFuZCB0aGVuIGNsaWNrIG9uIHRoZSAqKlBvc3RncmVTUUwqKiBvcHRpb24uCjMuIEluIHRoZSAqKk5ldyBQb3N0Z3JlU1FMKiogZm9ybSwgeW91IG5lZWQgdG8gZmlsbCB0aGUgZm9sbG93aW5nIGZpZWxkczoKICAgLSAqKk5hbWUqKjogVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIHJlc291cmNlIGluIFJlbmRlci4KICAgLSAqKkRhdGFiYXNlKio6IFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBpbnN0YW5jZS4KICAgLSAqKlVzZXIqKjogVGhlIHVzZXJuYW1lIG9mIHRoZSBkYXRhYmFzZS4KICAgLSAqKlJlZ2lvbioqOiBUaGUgcmVnaW9uIHdoZXJlIHRoZSBkYXRhYmFzZSB3aWxsIGJlIGNyZWF0ZWQuCiAgIC0gKipQb3N0Z3JlU1FMIFZlcnNpb24qKjogVGhlIFBvc3RncmVTUUwgdmVyc2lvbi4gSSByZWNvbW1lbmQgdXNpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uLgogICAtICoqSW5zdGFuY2UgVHlwZSoqOiBUaGUgaW5zdGFuY2UgdHlwZS4gSSByZWNvbW1lbmQgdXNpbmcgdGhlICoqRnJlZSoqIGluc3RhbmNlIHR5cGUgZm9yIGFjYWRlbWljIHB1cnBvc2VzLgo0LiBDbGljayBvbiB0aGUgKipDcmVhdGUgRGF0YWJhc2UqKiBidXR0b24uCgojIyBIb3cgdG8gYnVpbGQKClRvIGJ1aWxkIHRoaXMgcHJvamVjdCwgeW91IG5lZWQgdG8gaGF2ZSB0aGUgZm9sbG93aW5nIGluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmU6CgotIEphdmEgMTcKLSBBcGFjaGUgTWF2ZW4gMwotIERvY2tlciAyMAoKVG8gYnVpbGQgdGhlIHByb2plY3QsIHlvdSBuZWVkIHRvIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGBiYXNoCm12biBjbGVhbiBwYWNrYWdlCmBgYAoKX05PVEU6IFRoaXMgY29tbWFuZCBtdXN0IGJlIGV4ZWN1dGVkIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdC5fCgpUbyBidWlsZCB0aGUgRG9ja2VyIGltYWdlLCB5b3UgbmVlZCB0byBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgYmFzaApkb2NrZXIgYnVpbGQgLXQgcmVuZGVyLXNwcmluZy1ib290LXJlc3QtYXBpLXBvYyAuCmBgYAoKX05PVEU6IFRoaXMgY29tbWFuZCBtdXN0IGJlIGV4ZWN1dGVkIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdC5fCgojIyBIb3cgdG8gcnVuCgpUbyBydW4gdGhlIERvY2tlciBjb250YWluZXIsIHlvdSBuZWVkIHRvIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGBiYXNoCmRvY2tlciBydW4gLWUgREJfVVJMPSJEQl9VUkwiIC1lIERCX1VTRVI9REJfVVNFUiAtZSBEQl9QQVNTV0Q9REJfUEFTU1dEIC1wIDgwODA6ODA4MCByZW5kZXItc3ByaW5nLWJvb3QtcmVzdC1hcGktcG9jCmBgYAoKV2hlcmU6Ci0gYERCX1VSTGAgaXMgdGhlIFVSTCBvZiB0aGUgUG9zdGdyZVNRTCBkYXRhYmFzZS4KLSBgREJfVVNFUmAgaXMgdGhlIHVzZXIgb2YgdGhlIFBvc3RncmVTUUwgZGF0YWJhc2UuCi0gYERCX1BBU1NXRGAgaXMgdGhlIHBhc3N3b3JkIG9mIHRoZSBQb3N0Z3JlU1FMIGRhdGFiYXNlLgoKVGhlc2UgZGF0YSBtdXN0IGJlIHByb3ZpZGVkIGFzIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byB0aGUgRG9ja2VyIGNvbnRhaW5lciwgYW5kIHRoZXkgY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIApSZW5kZXIncyBkYXRhYmFzZSByZXNvdXJjZSwgd2l0aGluIHRoZSAqKkNvbm5lY3Rpb25zKiogc2VjdGlvbi4KCkV4YW1wbGU6CgpgYGBiYXNoCmRvY2tlciBydW4gLWUgREJfVVJMPSJqZGJjOnBvc3RncmVzcWw6Ly9wb3N0Z3Jlcy5yZW5kZXIuY29tOjU0MzIvcmVuZGVyLXNwcmluZy1ib290LXJlc3QtYXBpLXBvYyIgLWUgREJfVVNFUj1wb3N0Z3JlcyAtZSBEQl9QQVNTV0Q9cG9zdGdyZXMgLXAgODA4MDo4MDgwIHJlbmRlci1zcHJpbmctYm9vdC1yZXN0LWFwaS1wb2MKYGBgCgojIyBIb3cgdG8gZGVwbG95IG9uIFJlbmRlcgoKVG8gZGVwbG95IHRoaXMgcHJvamVjdCBvbiBSZW5kZXIsIHlvdSBuZWVkIHRvIGZvbGxvdyB0aGUgZm9sbG93aW5nIHN0ZXBzOgoKMS4gR28gdG8gdGhlIFtSZW5kZXIncyBkYXNoYm9hcmRdKGh0dHBzOi8vZGFzaGJvYXJkLnJlbmRlci5jb20vKS4KMi4gQ2xpY2sgb24gdGhlICoqTmV3KyoqIGJ1dHRvbiwgYW5kIHRoZW4gY2xpY2sgb24gdGhlICoqV2ViIFNlcnZpY2UqKiBvcHRpb24uCjMuIEluIHRoZSAqKkNyZWF0ZSBhIG5ldyBXZWIgU2VydmljZSoqIGZvcm0sIHlvdSBuZWVkIHRvIGZpbGwgdGhlIGZvbGxvd2luZyBmaWVsZHM6CiAgIC0gKipDb25uZWN0IGEgcmVwb3NpdG9yeSoqOiBTZWxlY3QgdGhlIHJlcG9zaXRvcnkgd2hlcmUgdGhlIHByb2plY3QgaXMgbG9jYXRlZC4gQ2xpY2sgb24gdGhlICoqQ29ubmVjdCoqIGJ1dHRvbiB0byBjb250aW51ZS4KNC4gSW4gdGhlIG5leHQgZm9ybSwgeW91IG5lZWQgdG8gZmlsbCB0aGUgZm9sbG93aW5nIGZpZWxkczoKICAgLSAqKk5hbWUqKjogVGhlIG5hbWUgb2YgdGhlIHdlYiBzZXJ2aWNlLgogICAtICoqUmVnaW9uKio6IFRoZSByZWdpb24gd2hlcmUgdGhlIHdlYiBzZXJ2aWNlIHdpbGwgYmUgY3JlYXRlZC4KICAgLSAqKkJyYW5jaCoqOiBUaGUgYnJhbmNoIG9mIHRoZSByZXBvc2l0b3J5IHRvIGRlcGxveS4KICAgLSAqKlJ1bnRpbWUqKjogVGhlIHJ1bnRpbWUgb2YgdGhlIHdlYiBzZXJ2aWNlLiBGb3IgdGhpcyBjYXNlLCB5b3UgbmVlZCB0byBzZWxlY3QgdGhlICoqRG9ja2VyKiogb3B0aW9uLgogICAtICoqSW5zdGFuY2UgVHlwZSoqOiBUaGUgaW5zdGFuY2UgdHlwZS4gSSByZWNvbW1lbmQgdXNpbmcgdGhlICoqRnJlZSoqIGluc3RhbmNlIHR5cGUgZm9yIGFjYWRlbWljIHB1cnBvc2VzLgogICAtIEluIHRoZSAqKkFkdmFuY2VkKiogc2VjdGlvbiwgY2xpY2sgdGhlICoqQWRkIEVudmlyb25tZW50IFZhcmlhYmxlKiogYnV0dG9uLCBhbmQgdGhlbiBhZGQgdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CiAgICAgLSAqKlBPUlQqKjogVGhlIHBvcnQgd2hlcmUgdGhlIHdlYiBzZXJ2aWNlIHdpbGwgYmUgbGlzdGVuaW5nLiBGb3IgdGhpcyBjYXNlLCB5b3UgbmVlZCB0byB1c2UgdGhlICoqODA4MCoqIHZhbHVlLiAKICAgICAtICoqREJfVVJMKio6IFRoZSBVUkwgb2YgdGhlIFBvc3RncmVTUUwgZGF0YWJhc2UuCiAgICAgLSAqKkRCX1VTRVIqKjogVGhlIHVzZXIgb2YgdGhlIFBvc3RncmVTUUwgZGF0YWJhc2UuCiAgICAgLSAqKkRCX1BBU1NXRCoqOiBUaGUgcGFzc3dvcmQgb2YgdGhlIFBvc3RncmVTUUwgZGF0YWJhc2UuCjUuIENsaWNrIHRoZSAqKkNyZWF0ZSBXZWIgU2VydmljZSoqIGJ1dHRvbi4KCiMjIEhvdyB0byB1c2UKClRvIHVzZSB0aGlzIHByb2plY3QsIHlvdSBuZWVkIHRvIGZvbGxvdyB0aGUgZm9sbG93aW5nIHN0ZXBzOgoKMS4gVXNlIFBvc3RtYW4gb3IgYW55IG90aGVyIHRvb2wgdG8gbWFrZSBIVFRQIHJlcXVlc3RzLiBZb3UgY2FuIGZpbmQgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBvZiB0aGlzIHByb2plY3QgaW4gdGhlIAogICBgL3YzL2FwaS1kb2NzYCBlbmRwb2ludCBvZiB0aGUgd2ViIHNlcnZpY2UuCjIuIFlvdSBjYW4gdXNlIHRoZSBTd2FnZ2VyIFVJIHRvIG1ha2UgSFRUUCByZXF1ZXN0cy4gWW91IGNhbiBmaW5kIHRoZSBTd2FnZ2VyIFVJIGluIHRoZSBgL3N3YWdnZXItdWkvaW5kZXguaHRtbGAgZW5kcG9pbnQgb2YgCiAgIHRoZSB3ZWIgc2VydmljZS4KCiMjIEF1dGhvcgoKLSAqKkpvcmdlIEdhcmNpYSoqIC0gR2VvcmdlIHRoZSBQZW5ndWluCiAgLSBbV2Vic2l0ZV0oaHR0cHM6Ly9nZW9yZ2V0aGVwZW5ndWluLmRldi8pCiAgLSBbR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vZ2VvcmdlLXRoZS1wZW5ndWluKQogIC0gW1R3aXR0ZXJdKGh0dHBzOi8vdHdpdHRlci5jb20vbXJnZW9yZ2VwZW5ndWluKQogIC0gW0luc3RhZ3JhbV0oaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9tcmdlb3JnZXBlbmd1aW4vKQogIC0gW1Rpa1Rva10oaHR0cHM6Ly93d3cudGlrdG9rLmNvbS9AZ2VvcmdlX3RoZV9wZW5ndWluKQogIC0gW1lvdVR1YmVdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL0BHZW9yZ2VUaGVQZW5ndWluKQogIC0gW1R3aXRjaF0oaHR0cHM6Ly93d3cudHdpdGNoLnR2L2dlb3JnZV90aGVfcGVuZ3VpbikKCiMjIExpY2Vuc2UKClRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgLSBzZWUgdGhlIFtMSUNFTlNFXShMSUNFTlNFLm1kKSBmaWxlIGZvciBkZXRhaWxzCgojIyBBY2tub3dsZWRnbWVudHMKCi0gKipUcnlDYXRjaCoqIC0gW1NvY2lhbCBNZWRpYSBMaW5rc10oaHR0cHM6Ly9saW5rdHIuZWUvdHJ5Y2F0Y2gudHYpCgojIyBEaXNjbGFpbWVyCgpUaGlzIHByb2plY3QgaXMgbm90IGFmZmlsaWF0ZWQsIGFzc29jaWF0ZWQsIGF1dGhvcml6ZWQsIGVuZG9yc2VkIGJ5LCBvciBpbiBhbnkgd2F5IG9mZmljaWFsbHkgY29ubmVjdGVkIHdpdGggUmVuZGVyLCAKb3IgYW55IG9mIGl0cyBzdWJzaWRpYXJpZXMgb3IgaXRzIGFmZmlsaWF0ZXMuIFRoZSBvZmZpY2lhbCBSZW5kZXIgd2Vic2l0ZSBjYW4gYmUgZm91bmQgYXQgaHR0cHM6Ly9yZW5kZXIuY29tLiAKVGhlIG5hbWUgIlJlbmRlciIgYXMgd2VsbCBhcyByZWxhdGVkIG5hbWVzLCBtYXJrcywgZW1ibGVtcyBhbmQgaW1hZ2VzIGFyZSByZWdpc3RlcmVkIHRyYWRlbWFya3MgCm9mIHRoZWlyIHJlc3BlY3RpdmUgb3duZXJzLgo= readmeEtag: '"029377c325d684da559a9c5cf9867fa38671a7d0"' readmeLastModified: Fri, 21 Apr 2023 19:20:30 GMT repositoryId: 631014634 description: >- This is a simple Spring Boot REST API Proof of Concept (POC) project. The goal of this project is to demonstrate how to create a REST API using Spring Boot, and it can run properly in the Render ecosystem. created: '2023-04-21T17:45:21Z' updated: '2023-07-08T22:36:20Z' language: Java archived: false stars: 1 watchers: 1 forks: 1 owner: george-the-penguin logo: https://avatars.githubusercontent.com/u/129033766?v=4 license: MIT repoEtag: '"0fe333005f037fe55b3902098006df770aebf1fd791252bea359463fa98cafa7"' repoLastModified: Sat, 08 Jul 2023 22:36:20 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/refitter/generate-code v3: true id: 3e35276edc64b3c205a0484dbf849447 repositoryMetadata: base64Readme: >- IyBHZW5lcmF0ZS1Db2RlCkdlbmVyYXRlIGEgQyMgUmVmaXQgY2xpZW50IGludGVyZmFjZSBhbmQgY29udHJhY3RzIGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBkb2N1bWVudCB1c2luZyBbUmVmaXR0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikuCgojIyBJbnB1dHMKCiMjIyBgb3BlbmFwaS1maWxlYApUaGUgcGF0aCB0byB0aGUgT3BlbkFQSSBkb2N1bWVudCAoYm90aCBKU09OIGFuZCBZQU1MIGFyZSBzdXBwb3J0ZWQpLiBEZWZhdWx0cyB0byBgIm9wZW5hcGkuanNvbiJgIChpLmUuIGEgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgY2FsbGVkIG9wZW5hcGkuanNvbikuIFBhdGhzIHRoYXQgZG8gbm90IHN0YXJ0IHdpdGggYC9gIGFyZSBhc3N1bWVkIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSByb290IG9mIHRoZSByZXBvc2l0b3J5LgoKIyMjIGBvcGVuYXBpLXVybGAKVGhlIFVSTCB0byBsb2FkIHRoZSBPcGVuQVBJIGRvY3VtZW50IGZyb20uIElmIHNldCwgYG9wZW5hcGktZmlsZWAgd2lsbCBiZSBpZ25vcmVkLgoKIyMjIGBuYW1lc3BhY2VgClRoZSBkZWZhdWx0IG5hbWVzcGFjZSB1c2VkIGZvciB0aGUgZ2VuZXJhdGVkIHR5cGVzIChkZWZhdWx0OiBgR2VuZXJhdGVkQ29kZWApCgojIyMgYHVzZS1hcGktcmVzcG9uc2VgClJldHVybiBgVGFzazxJQXBpUmVzcG9uc2U8VD4+YCBpbnN0ZWFkIG9mIGBUYXNrPFQ+YAoKIyMjIGBjYW5jZWxsYXRpb24tdG9rZW5zYApVc2UgY2FuY2VsbGF0aW9uIHRva2VucwoKIyMjIGBtdWx0aXBsZS1pbnRlcmZhY2VzYApHZW5lcmF0ZSBhIFJlZml0IGludGVyZmFjZSBmb3IgZWFjaCBlbmRwb2ludC4gTWF5IGJlIG9uZSBvZiBgQnlFbmRwb2ludGAsIGBCeVRhZ2AKCiMjIyBgY29tbWFuZC1hcmdzYApBZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIHRocm91Z2ggdG8gdGhlIFtSZWZpdHRlcl0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyKSBDTEkgdG9vbC4KCiMjIyBgcHVibGlzaC1hcnRpZmFjdHNgClNldHRpbmcgdGhpcyB3aWxsIHB1Ymxpc2ggdGhlIGdlbmVyYXRlZCBjb2RlIGFzIEMjIGZpbGVzIGFzIGJ1aWxkIGFydGlmYWN0cwoKIyMjIGBvdXRwdXQtZmlsZW5hbWVgCk5vIG91dHB1dHMgYXJlIHJldHVybmVkLiBUaGUgZ2VuZXJhdGVkIGNsaWVudCBpcyBwbGFjZWQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCB1c2luZyB0aGUgYG91dHB1dC1maWxlbmFtZWAgKERlZmF1bHQ6ICoqYE91dHB1dC5jc2AqKikgdmFsdWUuIFRoZSBvdXRwdXQgZmlsZSBjb250YWlucyBib3RoIHRoZSBSZWZpdCBpbnRlcmZhY2UgYW5kIHRoZSBjb250cmFjdCB0eXBlcyB1c2VkIGJ5IHRoZSBBUEkKCgojIEV4YW1wbGVzCgojIyMgRnJvbSBhIEZpbGUKCmBgYHlhbWwKam9iczoKICBzbW9rZS10ZXN0LXVybDoKICAgIHJ1bnMtb246IHVidW50dS1sYXRlc3QKICAgIHN0ZXBzOgogICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjMKICAgICAgCiAgICAgICMgVXNlIHRoZSBhY3Rpb24gdG8gZ2VuZXJhdGUgYSBSZWZpdCBjbGllbnQgaW50ZXJmYWNlIGZyb20gYSBmaWxlCiAgICAgICMgVGhpcyBwcm9kdWNlcyBhIGZpbGUgY2FsbGVkIE91dHB1dC5jcyBhcyBhIGJ1aWxkIGFydGlmYWN0CiAgICAgIC0gdXNlczogcmVmaXR0ZXIvZ2VuZXJhdGUtY29kZUB2MQogICAgICAgIG5hbWU6IEdlbmVyYXRlIFJlZml0IENsaWVudAogICAgICAgIHdpdGg6ICAgICAgICAKICAgICAgICAgIG9wZW5hcGktZmlsZTogb3BlbmFwaS5qc29uCiAgICAgICAgICBuYW1lc3BhY2U6IENocmlzdGlhbkhlbGxlLkV4YW1wbGVzLlBldHN0b3JlLnYzCiAgICAgIAogICAgICAjIERvIHNvbWV0aGluZyB3aXRoIHRoZSBnZW5lcmF0ZWQgY2xpZW50IChsaWtlIGluY2x1ZGUgaXQgaW4gYW4gZXhpc3RpbmcgcHJvamVjdCkKICAgICAgLSBydW46IEdldC1Db250ZW50IE91dHB1dC5jcyB8IFdyaXRlLUhvc3QKICAgICAgICBzaGVsbDogcHdzaApgYGAKCiMjIyBGcm9tIGEgVVJMCgpgYGB5YW1sCmpvYnM6CiAgc21va2UtdGVzdC11cmw6CiAgICBuYW1lOiBGcm9tIFVSTAogICAgcnVucy1vbjogdWJ1bnR1LWxhdGVzdAogICAgc3RlcHM6CiAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MwoKICAgICAgIyBVc2UgdGhlIGFjdGlvbiB0byBnZW5lcmF0ZSBhIFJlZml0IGNsaWVudCBpbnRlcmZhY2UgZnJvbSBhIFVSTAogICAgICAjIFRoaXMgcHJvZHVjZXMgYSBmaWxlIGNhbGxlZCBPdXRwdXRGcm9tVXJsLmNzIGFzIGEgYnVpbGQgYXJ0aWZhY3QKICAgICAgLSB1c2VzOiByZWZpdHRlci9nZW5lcmF0ZS1jb2RlQHYxCiAgICAgICAgbmFtZTogR2VuZXJhdGUgUmVmaXQgQ2xpZW50CiAgICAgICAgd2l0aDoKICAgICAgICAgIG9wZW5hcGktdXJsOiBodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92My9vcGVuYXBpLmpzb24KICAgICAgICAgIG5hbWVzcGFjZTogQ2hyaXN0aWFuSGVsbGUuRXhhbXBsZXMuUGV0c3RvcmUudjMKICAgICAgICAgIGNvbW1hbmQtYXJnczogLS1uby1sb2dnaW5nCiAgICAgICAgICBvdXRwdXQtZmlsZW5hbWU6IE91dHB1dEZyb21VcmwuY3MKICAgICAgCiAgICAgICMgRG8gc29tZXRoaW5nIHdpdGggdGhlIGdlbmVyYXRlZCBjbGllbnQgKGxpa2UgaW5jbHVkZSBpdCBpbiBhbiBleGlzdGluZyBwcm9qZWN0KQogICAgICAtIHJ1bjogR2V0LUNvbnRlbnQgT3V0cHV0RnJvbVVybC5jcyB8IFdyaXRlLUhvc3QKICAgICAgICBzaGVsbDogcHdzaApgYGA= readmeEtag: '"cce7698b6ebe00f0eca3b614eef0b61dc141cac5"' readmeLastModified: Tue, 08 Aug 2023 11:23:18 GMT repositoryId: 671843069 description: >- Generate a C# Refit client interface and contracts from an OpenAPI specifications document using Refitter. created: '2023-07-28T09:08:49Z' updated: '2023-12-15T04:34:25Z' language: null archived: false stars: 1 watchers: 1 forks: 0 owner: Refitter logo: https://avatars.githubusercontent.com/u/140486945?v=4 license: GPL-3.0 repoEtag: '"0e7ba862ab9c0509bf3ee97724b445f26d4cbefa78e11b6cc9214c6b3d6227a5"' repoLastModified: Fri, 15 Dec 2023 04:34:25 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/supermomonga/openapi_rails_typed_parameters v3: true id: 0ddf07584c0d7476a6b4c508b4e40824 repositoryMetadata: base64Readme: >- IyBPcGVuYXBpUmFpbHNUeXBlZFBhcmFtZXRlcnMKCmBvcGVuYXBpX3JhaWxzX3R5cGVkX3BhcmFtZXRlcnNgIGlzIGEgbGlicmFyeSBmb3IgcGVyZm9ybWluZyBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBhbmQgY29lcmNpb24gaW4gUmFpbHMgdXNpbmcgT3BlbkFQSSBkZWZpbml0aW9uIGZpbGVzLiBJdCBhbHNvIHN1cHBvcnRzIHByb3ZpZGluZyBzdGF0aWMgdHlwZXMgdGhyb3VnaCBSQlMgZ2VuZXJhdGlvbi4KClRoaXMgZ2VtIGludGVybmFsbHkgdXNlcyB0aGUgW2BvcGVuYXBpX2ZpcnN0YF0oaHR0cHM6Ly9naXRodWIuY29tL2FoeC9vcGVuYXBpX2ZpcnN0KSBnZW0uCgojIyMgTWFpbiBPYmplY3RpdmVzCgotIEVsaW1pbmF0ZSB0aGUgY29kZSBmb3IgcGFyYW1zIHZhbGlkYXRpb24gYW5kIHR5cGUgY29udmVyc2lvbiAod2hpY2ggaXMgYWx3YXlzIGEgYm9yaW5nIGFuZCByb3V0aW5lIHRhc2spCi0gUHJvdmlkZSBhbiBSQlMgZ2VuZXJhdG9yIChzbyB5b3UgZG9uJ3QgaGF2ZSB0byBtZW1vcml6ZSBwYXJhbWV0ZXJzKQoKIyMjIERpZmZlcmVuY2VzIGZyb20gdGhlIGBvcGVuYXBpX2ZpcnN0YCBnZW0KCi0gT2ZmZXJzIG1vcmUgdGlnaHRseSBjb3VwbGVkIGZlYXR1cmVzIHRvIFJhaWxzCi0gQXNzaXN0cyBpbiBzdGF0aWNhbGx5IHR5cGVkIHByb2dyYW1taW5nIGJ5IHByb3ZpZGluZyBhbiBSQlMgZ2VuZXJhdG9yCgojIyA6d2FybmluZzogVGhpcyBnZW0gaXMgdW5kZXIgZGV2ZWxvcG1lbnQuCgpUaGlzIGdlbSBpcyBjdXJyZW50bHkgdW5kZXIgZGV2ZWxvcG1lbnQuIEl0IGlzIG5vdCByZWNvbW1lbmRlZCBmb3IgdXNlIGluIHByb2R1Y3Rpb24gYXBwbGljYXRpb25zLiBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzIG5vdCBndWFyYW50ZWVkIHVudGlsIHZlcnNpb24gMS4wLjAgaXMgcmVsZWFzZWQuCgpPbmNlIGFsbCBvZiB0aGUgZm9sbG93aW5nIFRPRE9zIGFyZSBjb21wbGV0ZWQsIHdlIHdpbGwgcmVsZWFzZSB2ZXJzaW9uIDEuMC4wLgoKIyMjIFRPRE8KCi0gWyBdIENvZXJjaW9uIHRvIG1vcmUgUmFpbHMgYXBwbGljYXRpb24gYXBwcm9wcmlhdGUgdHlwZXMsIHN1Y2ggYXMgYEFjdGl2ZVN1cHBvcnQ6OlRpbWVXaXRoWm9uZWAKLSBbIF0gUHJvdmlkZSBtb3JlIG9waW5pb25hdGVkIG9wdGlvbnMgZm9yIHR5cGUgY29udmVyc2lvbnMsIHN1Y2ggYXMgY29lcmNpb24gdG8gYFN5bWJvbGAgZm9yIEVudW0gdmFsdWUKLSBbIF0gSW5jbHVkZSBhIFJCUyBnZW5lcmF0aW9uIGdlbmVyYXRvciBmb3Igc3RhdGljYWxseSB0eXBlZCBwcm9ncmFtbWluZwotIFsgXSBJbmNsdWRlIFJCUyBpbiB0aGUgZ2VtIGl0c2VsZgoKCiMjIEluc3RhbGxhdGlvbgoKQWRkIGBvcGVuYXBpX3JhaWxzX3R5cGVkX3BhcmFtZXRlcnNgIHRvIHlvdXIgR2VtZmlsZS4KCmBgYHJiCmdlbSAnb3BlbmFwaV9yYWlsc190eXBlZF9wYXJhbWV0ZXJzJwpgYGAKCiMjIFVzYWdlCgpQbGVhc2UgYWRkIGFuIGluaXRpYWxpemVyIHRvIHlvdXIgUmFpbHMgYXBwbGljYXRpb24gYW5kIHNwZWNpZnkgdGhlIHBhdGggdG8gdGhlIE9wZW5BUEkgc2NoZW1hIGZpbGUuCgplLmcuKSBgY29uZmlnL2luaXRpYWxpemVycy9vcGVuYXBpLnJiYAoKYGBgb3BlbmFwaS5yYgpyZXF1aXJlICdvcGVuYXBpX3JhaWxzX3R5cGVkX3BhcmFtZXRlcnMnCgpPcGVuYXBpUmFpbHNUeXBlZFBhcmFtZXRlcnMuY29uZmlndXJlIGRvIHxjb25maWd8CiAgY29uZmlnLnNjaGVtYV9wYXRoID0gUmFpbHMucm9vdC5qb2luKCdzY2hlbWEueW1sJykKZW5kCmBgYAoKVGhlbiwgYWRkIGB1c2luZyBPcGVuYXBpUmFpbHNUeXBlZFBhcmFtZXRlcnNgIHRvIHlvdXIgY29udHJvbGxlciBjbGFzcy4gWW91IGNhbiBhY2Nlc3Mgc3RhdGljYWxseSB0eXBlZCBwYXJhbWV0ZXJzIHZpYSBgdHlwZWRfcGFyYW1ldGVyc2AgbWV0aG9kLgoKIyMgRXhhbXBsZQoKYGBgc2NoZW1hLnltbApvcGVuYXBpOiAzLjAuMwppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IFNhbXBsZSBBcHAKc2VydmVyczoKICAtIHVybDogaHR0cHM6Ly9leGFtcGxlLmNvbS8KcGF0aHM6CiAgL3VzZXJzOgogICAgZ2V0OgogICAgICBwYXJhbWV0ZXJzOgogICAgICAgIC0gbmFtZTogcm9sZQogICAgICAgICAgaW46IHF1ZXJ5CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgZW51bTogWyBhZG1pbiwgbWFpbnRhaW5lciBdCiAgICAgICAgLSBuYW1lOiBtaW5pbXVtCiAgICAgICAgICBpbjogcXVlcnkKICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZQogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgLSBuYW1lOiBtYXhpbXVtCiAgICAgICAgICBpbjogcXVlcnkKICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZQogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCmBgYAoKYGBgdXNlcnNfY29udHJvbGxlci5yYgpjbGFzcyBVc2Vyc0NvbnRyb2xsZXIgPCBBcHBsaWNhdGlvbkNvbnRyb2xsZXIKICB1c2luZyBPcGVuYXBpUmFpbHNUeXBlZFBhcmFtZXRlcnMKCiAgZGVmIGluZGV4CiAgICB0eXBlZF9wYXJhbXMudmFsaWRhdGUhCiAgICByZXMgPSB7CiAgICAgIHJvbGU6IHR5cGVkX3BhcmFtcy5xdWVyeV9wYXJhbXMucm9sZSAjICdhZG1pbicgb3IgJ21haW50YWluZXInLAogICAgICBtaW5pbXVtOiB0eXBlZF9wYXJhbXMucXVlcnlfcGFyYW1zLm1pbmltdW0gIyBJbnRlZ2VyIHZhbHVlCiAgICAgIG1heGltdW06IHR5cGVkX3BhcmFtcy5xdWVyeV9wYXJhbXMubWF4aW11bSAjIEludGVnZXIgdmFsdWUKICAgIH0KICAgIHJlbmRlciBqc29uOiByZXMKICByZXNjdWUgT3BlbmFwaUZpcnN0OjpSZXF1ZXN0SW52YWxpZEVycm9yID0+IGUKICAgIHJlcyA9IHsKICAgICAgIyBlLmcuKQogICAgICAjIFF1ZXJ5IHBhcmFtZXRlciBpcyBpbnZhbGlkOiB2YWx1ZSBhdCBgL3JvbGVgIGlzIG5vdCBvbmUgb2Y6IFsiYWRtaW4iLCAibWFpbnRhaW5lciJdCiAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZQogICAgfQogICAgcmVuZGVyIGpzb246IHJlcywgc3RhdHVzOiA6YmFkX3JlcXVlc3QKICBlbmQKZW5kCmBgYAoKCiMjIExpY2Vuc2UKClRoZSBnZW0gaXMgYXZhaWxhYmxlIGFzIG9wZW4gc291cmNlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgW01JVCBMaWNlbnNlXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuCgojIyBDb2RlIG9mIENvbmR1Y3QKCkV2ZXJ5b25lIGludGVyYWN0aW5nIGluIHRoZSBPcGVuYXBpUmFpbHNUeXBlZFBhcmFtZXRlcnMgcHJvamVjdCdzIGNvZGViYXNlcywgaXNzdWUgdHJhY2tlcnMsIGNoYXQgcm9vbXMgYW5kIG1haWxpbmcgbGlzdHMgaXMgZXhwZWN0ZWQgdG8gZm9sbG93IHRoZSBbY29kZSBvZiBjb25kdWN0XShodHRwczovL2dpdGh1Yi5jb20vc3VwZXJtb21vbmdhL29wZW5hcGlfcmFpbHNfdHlwZWRfcGFyYW1ldGVycy9ibG9iL21haW4vQ09ERV9PRl9DT05EVUNULm1kKS4K readmeEtag: '"dbc7d3281a7677dcb41a994a33da645e14b8b937"' readmeLastModified: Sun, 07 Jan 2024 09:10:53 GMT repositoryId: 739426895 description: >- Eliminate manual params validation code in Rails by using OpenAPI specification. created: '2024-01-05T14:40:52Z' updated: '2024-01-26T20:40:19Z' language: Ruby archived: false stars: 1 watchers: 1 forks: 0 owner: supermomonga logo: https://avatars.githubusercontent.com/u/377137?v=4 license: MIT repoEtag: '"f06ca62518337c1973c3b0f80fd42a783b9c7f4c659b4b3b718827731b295b77"' repoLastModified: Fri, 26 Jan 2024 20:40:19 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/connorjs/swapi-typespec v3: true id: 1def74b05c01bb642f02fdfa6e0fc268 repositoryMetadata: base64Readme: >- IyBTV0FQSSBUeXBlU3BlYwoKW1R5cGVTcGVjXVt0eXBlc3BlY10gcmVwcmVzZW50YXRpb24gb2YgU1dBUEk6IFRoZSBTdGFyIFdhcnMgQVBJLgoK8J+OiSBTaG91dCBvdXQgdG8gW3N3YXBpLmluZm9dW3N3YXBpXSBmb3IgaG9zdGluZyBhIHN0YWJsZSB2ZXJzaW9uIG9mIHRoZSBBUEkuIPCfjokKCltzd2FwaV06IGh0dHBzOi8vc3dhcGkuaW5mbwpbdHlwZXNwZWNdOiBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vdHlwZXNwZWMvCgo8IS0tIEJhZGdlczogVXNlIGxpbmsgc2hvcnRoYW5kIGZvciByZWFkYWJpbGl0eSBhbmQgZWFzaWVyIHJlb3JkZXJpbmcgLS0+CgpbIVtDSSBCdWlsZF1bY2ktYnVpbGQtYmFkZ2VdXVtjaS1idWlsZF0KWyFbbnBtIHZlcnNpb25dW25wbS12ZXJzaW9uLWJhZGdlXV1bbnBtLXZlcnNpb25dCgpbY2ktYnVpbGRdOiBodHRwczovL2dpdGh1Yi5jb20vY29ubm9yanMvc3dhcGktdHlwZXNwZWMvYWN0aW9ucy93b3JrZmxvd3MvY2ktYnVpbGQueW1sCltjaS1idWlsZC1iYWRnZV06IGh0dHBzOi8vZ2l0aHViLmNvbS9jb25ub3Jqcy9zd2FwaS10eXBlc3BlYy9hY3Rpb25zL3dvcmtmbG93cy9jaS1idWlsZC55bWwvYmFkZ2Uuc3ZnCltucG0tdmVyc2lvbl06IGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3N3YXBpLXR5cGVzcGVjCltucG0tdmVyc2lvbi1iYWRnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3Yvc3dhcGktdHlwZXNwZWMKCjwhLS0gRW5kIGJhZGdlcyAtLT4KCiMjIEFib3V0CgpJIGNyZWF0ZWQgdGhpcyBwcm9qZWN0IHRvIGxlYXJuIGFib3V0IFR5cGVTcGVjIHRocm91Z2ggZmlyc3QtaGFuZCB1c2FnZS4KClRoZSBnZW5lcmF0ZWQgT3BlbiBBUEkgMyBzcGVjaWZpY2F0aW9uIGhhcyA4NzggbGluZXMgKHdpdGggbm8gYmxhbmsgbGluZXMpIGluIGEgc2luZ2xlIGZpbGUuClRoZSBUeXBlU3BlYyBzb3VyY2UgaGFzIDQ5MyBsaW5lcyAoYWJvdXQg4oWTIGFyZSBibGFuayBsaW5lcyBmb3IgcmVhZGFiaWxpdHkpIHNwbGl0IGFjcm9zcyA4IGZpbGVzIGZvciBsb2dpY2FsIG9yZ2FuaXphdGlvbi4KVGhpcyBpcyBhIH40NSUgcmVkdWN0aW9uIGluIGxpbmVzIG9mIGNvZGUuCgpJZiB3ZSBpZ25vcmUgdGhlIGltcG9ydHMsIHVzaW5nIHN0YXRlbWVudHMsIGFuZCBibGFuayBsaW5lcyB3aXRoaW4gbW9kZWxzLCB0aGVuIHRoZSBUeXBlU3BlYyBvbmx5IGhhcyAzNTMgbGluZXMuClRoYXQgbWVhbnMgYSA2MCUgcmVkdWN0aW9uIGluIGNvZGUgdG8gbWFpbnRhaW4uCgojIyBJbnN0YWxsYXRpb24KCkZvbGxvdyB0aGVzZSBzdGVwcyB0byBjb25zdW1lIHRoZSBnZW5lcmF0ZWQgT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiBmb3IgU1dBUEkuCgoxLiBJbnN0YWxsIHRoaXMgcGFja2FnZSBhcyBhIGRlcGVuZGVuY3kuCgogICBgYGBzaAogICBucG0gaW5zdGFsbCAtRCBzd2FwaS10eXBlc3BlYwogICBgYGAKCjIuIFJlZmVyZW5jZSB0aGUgZ2VuZXJhdGVkIE9wZW4gQVBJIHNwZWNpZmljYXRpb24gZGlyZWN0bHkuCgogICBgYGBzaAogICAuL25vZGVfbW9kdWxlcy9zd2FwaS10eXBlc3BlYy9zd2FwaS5vcGVuYXBpLnlhbWwKICAgYGBgCgojIyBDb250cmlidXRpbmcKClNlZSBbQ09OVFJJQlVUSU5HLm1kXSguL0NPTlRSSUJVVElORy5tZCkgZm9yIGRldGFpbHMuCg== readmeEtag: '"1d5815cc44e78538d16b7e72233a2c08e6acb0f6"' readmeLastModified: Tue, 15 Apr 2025 20:44:47 GMT repositoryId: 689152742 description: 'TypeSpec representation of SWAPI: The Star Wars API.' created: '2023-09-09T00:02:29Z' updated: '2025-04-15T20:44:52Z' language: TypeSpec archived: false stars: 1 watchers: 1 forks: 0 owner: connorjs logo: https://avatars.githubusercontent.com/u/22208536?v=4 license: MIT repoEtag: '"190bd4be700a2a28849179a2c19a27129b1901d12ee49318272bbbc09406b68a"' repoLastModified: Tue, 15 Apr 2025 20:44:52 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/tinello/tomcat-embedded-openapi v3: true id: 405ea524b68d2becff287386f4e517b0 repositoryMetadata: base64Readme: >- IyBUb21jYXQtRW1iZWRkZWQtT3BlbkFwaQoKIyMgUmVxdWlyZW1lbnRzIDxhIG5hbWU9IlJlcXVpcmVtZW50cyI+PC9hPgojIyMgU29mdHdhcmU6IDxhIG5hbWU9IlNvZnR3YXJlIj48L2E+Ci0gT3BlbkpESyAyMyB3aXRoIE9wZW5KOSAtPiBodHRwczovL2RldmVsb3Blci5pYm0uY29tL2xhbmd1YWdlcy9qYXZhL3NlbWVydS1ydW50aW1lcy9kb3dubG9hZHMvCi0gRG9ja2VyIDQuMjguMCAtPiBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9kZXNrdG9wL2luc3RhbGwvdWJ1bnR1LwoKIyMjIENvbmZpZ3VyZSBKREsgVlNDb2RlOiA8YSBuYW1lPSJDb25maWd1cmVKREt2c2NvZGUiPjwvYT4KCkNoYW5nZSAvLnZzY29kZS9sYXVuY2guanNvbiBmb3IgeW91ciBKYXZhIEhvbWUKCgojIyMgRW52aXJvbm1lbnQgdmFyaWFibGVzOiA8YSBuYW1lPSJFbnZpcm9ubWVudFZhcmlhYmxlcyI+PC9hPgotIERCX1VSTD1sb2NhbGhvc3Q6NTQzMi9wb3N0Z3JlcwotIERCX1VTRVI9cG9zdGdyZXMKLSBEQl9QQVNTPW15c2VjcmV0cGFzc3dvcmQKCiMjIyBTdGFydCBQb3N0Z3JlU1FMIDxhIG5hbWU9IlN0YXJ0UG9zdGdyZVNRTCI+PC9hPgpgYGBiYXNoCmRvY2tlciBydW4gLS1uYW1lIHRvbWNhdC1vcGVuYXBpLXBvc3RncmVzIC1wIDU0MzI6NTQzMiAtZSBQT1NUR1JFU19QQVNTV09SRD1teXNlY3JldHBhc3N3b3JkIC1kIHBvc3RncmVzOjE2LjMtYWxwaW5lMy4xOApgYGAKCgojIyMgU3RhcnQgYXBwbGljYXRpb24gTWF2ZW4gKG5vdCBmb3VuZCkgPGEgbmFtZT0iU3RhcnRBcHBsaWNhdGlvbk1hdmVuIj48L2E+CmBgYGJhc2gKREJfVVJMPSJsb2NhbGhvc3Q6NTQzMi9wb3N0Z3JlcyIgREJfVVNFUj1wb3N0Z3JlcyBEQl9QQVNTPW15c2VjcmV0cGFzc3dvcmQgSkFWQV9IT01FPS9ob21lL2cvREVWL1Rvb2xzL2pkay0yMy4wLjIrNyAuL212bncgY2xlYW4gY29tcGlsZSBleGVjOmphdmEgLVBydW4KYGBgCgojIyMgQnVpbGQgYXBwbGljYXRpb24gTWF2ZW4gPGEgbmFtZT0iQnVpbGRBcHBsaWNhdGlvbk1hdmVuIj48L2E+CmBgYGJhc2gKSkFWQV9IT01FPS9ob21lL2cvREVWL1Rvb2xzL2pkay0yMy4wLjIrNyAuL212bncgY2xlYW4gcGFja2FnZSAtRHNraXBUZXN0cwpgYGAKCgojIyMgU3RhcnQgYXBwbGljYXRpb24gSmF2YSA8YSBuYW1lPSJTdGFydEFwcGxpY2F0aW9uSmF2YSI+PC9hPgpgYGBiYXNoCkRCX1VSTD0ibG9jYWxob3N0OjU0MzIvcG9zdGdyZXMiIERCX1VTRVI9cG9zdGdyZXMgREJfUEFTUz1teXNlY3JldHBhc3N3b3JkIC9ob21lL2cvREVWL1Rvb2xzL2pkay0yMy4wLjIrNy9iaW4vamF2YSAtWFg6K1RpZXJlZFN0b3BBdExldmVsPTEgLWphciB0b21jYXRlbWJlZC0xLjEuMC5qYXIKYGBgCgoKIyMjIE9XQVNQIERlcGVuZGVuY2llcyBDaGVjayA8YSBuYW1lPSJPV0FTUERlcGVuZGVuY2llc0NoZWNrIj48L2E+CmBgYGJhc2gKSkFWQV9IT01FPS9ob21lL2cvREVWL1Rvb2xzL2pkay0yMy4wLjIrNyBtdm4gY2xlYW4gdmVyaWZ5IC1Ec2tpcFRlc3RzPXRydWUgLURkZXBlbmRlbmN5LmNoZWNrLnNraXA9ZmFsc2UgLURtYXZlbi5jbGVhbi5za2lwPXRydWUgLURtYXZlbi5jb21waWxlLnNraXA9dHJ1ZSAtRG1hdmVuLmluc3RhbGwuc2tpcD10cnVlCmBgYAoKCiMjIERldmVsb3BtZW50IDxhIG5hbWU9ImRldmVsb3BtZW50Ij48L2E+CiMjIyBWaXN1YWwgU3R1ZGlvIENvZGUgRXh0ZW5zaW9uczogPGEgbmFtZT0idnNjb2RlLWV4dGVuc2lvbnMiPjwvYT4KIyMjIyBFeHRlbnNpb24gUGFjayBmb3IgSmF2YQoKSW5zdGFsbCAiRXh0ZW5zaW9uIFBhY2sgZm9yIEphdmEiIGZyb20gTWljcm9zb2Z0OiBodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9dnNjamF2YS52c2NvZGUtamF2YS1wYWNrCgoKIyMgRW5kcG9pbnRzCgp8IE5hbWUgICAgICAgICAgICAgICAgIHwgRW5kcG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IFNlcnZpY2UgSW5mbyAgICAgICAgIHwgaHR0cDovL2xvY2FsaG9zdDo4MDgwLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKCiMjIE9ic2VydmFiaWxpdHkgPGEgbmFtZT0ib2JzZXJ2YWJpbGl0eSI+PC9hPgoKIyMjIFN0YXJ0IERvY2tlciBHcmFmYW5hIE9URUwgPGEgbmFtZT0ic3RhcnQtZG9ja2VyLWdyYWZhbmEtb3RlbCI+PC9hPgoKYGBgYmFzaApkb2NrZXIgcnVuIC0tcmVzdGFydCB1bmxlc3Mtc3RvcHBlZCAtLWRldGFjaCAtLXB1Ymxpc2ggMzAwMDozMDAwIC0tcHVibGlzaCA0MzE3OjQzMTcgLS1wdWJsaXNoIDQzMTg6NDMxOCAtLW5hbWUgZ3JhZmFuYV9vdGVsIGdyYWZhbmEvb3RlbC1sZ3RtOjAuMTEuMApgYGAKClJlZjogaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2dyYWZhbmEvb3RlbC1sZ3RtCgojIyMgVmlldyBHcmFmYW5hIDxhIG5hbWU9InZpZXctZ3JhZmFuYSI+PC9hPgoKTG9nIGluIHRvIGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMCB3aXRoIHVzZXIgYWRtaW4gYW5kIHBhc3N3b3JkIGFkbWluLg== readmeEtag: '"845d46113376f9ec2bb2adfabb57dec7061f0d0d"' readmeLastModified: Thu, 21 Aug 2025 21:03:45 GMT repositoryId: 666518593 description: API Rest with Apache Tomcat, Open Api Validate. created: '2023-07-14T18:20:21Z' updated: '2025-12-20T14:28:25Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: tinello logo: https://avatars.githubusercontent.com/u/38929644?v=4 license: Unlicense repoEtag: '"d70b6a99078c3eaf5417f82a7050830ebf60b7cb890313d13f5f042d174d11bf"' repoLastModified: Sat, 20 Dec 2025 14:28:25 GMT category: SDK foundInMaster: true - source: - openapi3 tags - openapi31 tags repository: https://github.com/saman-barakat/idlgateway v3: true v3_1: true id: 174e0f826611dac751b49f8d735df68d repositoryMetadata: base64Readme: >- IyBJRExGaWx0ZXIgZm9yIFNwcmluZyBDbG91ZCBHYXRld2F5ICAKCiMjIE92ZXJ2aWV3ICAKCmBJRExGaWx0ZXJgIGlzIGEgY3VzdG9tIGZpbHRlciBmb3IgKipTcHJpbmcgQ2xvdWQgR2F0ZXdheSoqLCBkZXNpZ25lZCB0byBoYW5kbGUgKippbnRlci1wYXJhbWV0ZXIgZGVwZW5kZW5jaWVzKiogaW4gd2ViIEFQSXMuIEl0IGVuc3VyZXMgdGhhdCBBUEkgcmVxdWVzdHMgY29tcGx5IHdpdGggY29uc3RyYWludHMgZGVmaW5lZCBpbiBhbiAqKk9wZW5BUEkgU3BlY2lmaWNhdGlvbiAoT0FTKSBmaWxlKiosIGFwcGx5aW5nIHNwZWNpZmljIGFuYWx5c2lzIG1vZGVzOiAgCgotICoqRGV0ZWN0aW9uKiog4oCTIElkZW50aWZpZXMgY29uc3RyYWludCB2aW9sYXRpb25zLiAgCi0gKipFeHBsYW5hdGlvbioqIOKAkyBQcm92aWRlcyByZWFzb25zIGZvciB2aW9sYXRpb25zLiAgCi0gKipOb25lKiog4oCTIERpc2FibGVzIHZhbGlkYXRpb24uICAKClRoaXMgZG9jdW1lbnQgcHJvdmlkZXMgaW5zdHJ1Y3Rpb25zIG9uIGNvbmZpZ3VyaW5nIGFuZCBhcHBseWluZyBgSURMRmlsdGVyYCBpbiAqKlNwcmluZyBDbG91ZCBHYXRld2F5KiosIHVzaW5nIGFuIGV4YW1wbGUgc2VydmljZSB0aGF0IGludGVyYWN0cyB3aXRoIHRoZSAqKlllbHAgQVBJKiouICAKCi0tLQoKIyMgSG93IElETEZpbHRlciBXb3JrcyAgCgpgSURMRmlsdGVyYCBleHRlbmRzIGBBYnN0cmFjdEdhdGV3YXlGaWx0ZXJGYWN0b3J5YCwgaW50ZWdyYXRpbmcgYElETFJlYXNvbmVyYCB0byB2YWxpZGF0ZSBBUEkgcmVxdWVzdHMgaW4gdGhyZWUgc3RlcHM6ICAKCjEuICoqSW5pdGlhbGl6ZSB0aGUgQW5hbHl6ZXIqKiDigJMgQ3JlYXRlIGFuIGBJRExSZWFzb25lcmAgaW5zdGFuY2Ugd2l0aCB0aGUgKipPQVMgZmlsZSoqLCAqKm9wZXJhdGlvbiBwYXRoKiosIGFuZCAqKm9wZXJhdGlvbiB0eXBlKiouICAKMi4gKipWYWxpZGF0ZSBSZXF1ZXN0cyoqIOKAkyBDaGVjayBpZiB0aGUgcmVxdWVzdCBtZWV0cyB0aGUgZGVmaW5lZCBjb25zdHJhaW50cy4KMy4gKipHZW5lcmF0ZSBSZXNwb25zZXMqKiDigJMgUmV0dXJuIGEgcmVzcG9uc2UgbWVzc2FnZSBpZiB0aGUgcmVxdWVzdCBpcyBpbnZhbGlkLgoKLS0tCgojIyBQcmVyZXF1aXNpdGVzICAKCkJlZm9yZSB1c2luZyBgSURMRmlsdGVyYCwgZW5zdXJlIHRoZSBmb2xsb3dpbmcgZGVwZW5kZW5jaWVzIGFyZSBpbmNsdWRlZCBpbiB5b3VyIHByb2plY3Q6ICAKCi0gKipKYXZhIERldmVsb3BtZW50IEtpdCAoSkRLKSAxMSBvciBsYXRlcioqICAKLSAqKklETFJlYXNvbmVyIDEuMC4xKiogIAotICoqU3ByaW5nIEJvb3QgJiBTcHJpbmcgQ2xvdWQgR2F0ZXdheSBkZXBlbmRlbmNpZXMqKiAgCgotLS0KCiMjIFNpbXBsaWZpZWQgSURMRmlsdGVyIENvZGUgIAoKQmVsb3cgaXMgYW4gZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBgSURMRmlsdGVyYDogIAoKYGBgamF2YQpAQ29tcG9uZW50CnB1YmxpYyBjbGFzcyBJRExGaWx0ZXIgZXh0ZW5kcyBBYnN0cmFjdEdhdGV3YXlGaWx0ZXJGYWN0b3J5PElETEZpbHRlci5Db25maWc+IHsKICAgIHByaXZhdGUgZmluYWwgTG9nZ2VyIGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKElETEZpbHRlci5jbGFzcyk7CgogICAgcHVibGljIElETEZpbHRlcigpIHsKICAgICAgICBzdXBlcihDb25maWcuY2xhc3MpOwogICAgICAgIGxvZ2dlci5pbmZvKCJJRExGaWx0ZXIgaW5pdGlhbGl6ZWQiKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFTRV9TUEVDX1BBVEggPSAiLi9zcmMvdGVzdC9yZXNvdXJjZXMvR2F0ZXdheUV4cGVyaW1lbnQiOwoKICAgIEBPdmVycmlkZQogICAgcHVibGljIEdhdGV3YXlGaWx0ZXIgYXBwbHkoQ29uZmlnIGNvbmZpZykgewogICAgICAgIGxvZ2dlci5pbmZvKCJBcHBseWluZyBJRExGaWx0ZXIgd2l0aCBbe31dIGFuYWx5c2lzIG1vZGUiLCBjb25maWcuYW5hbHlzaXMpOwoKICAgICAgICByZXR1cm4gKGV4Y2hhbmdlLCBjaGFpbikgLT4gewogICAgICAgICAgICBTdHJpbmcgb3BlcmF0aW9uUGF0aCA9IGNvbmZpZy5vcGVyYXRpb25QYXRoOwogICAgICAgICAgICBTdHJpbmcgU1BFQ19VUkwgPSBCQVNFX1NQRUNfUEFUSCArIGNvbmZpZy5zcGVjUGF0aDsKICAgICAgICAgICAgU3RyaW5nIG9wZXJhdGlvblR5cGUgPSBleGNoYW5nZS5nZXRSZXF1ZXN0KCkuZ2V0TWV0aG9kKCkubmFtZSgpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgIE1hcDxTdHJpbmcsIFN0cmluZz4gcGFyYW1NYXAgPSBleGNoYW5nZS5nZXRSZXF1ZXN0KCkuZ2V0UXVlcnlQYXJhbXMoKS50b1NpbmdsZVZhbHVlTWFwKCk7CgogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKCJEZXRlY3Rpb24iLmVxdWFscyhjb25maWcuYW5hbHlzaXMpIHx8ICJFeHBsYW5hdGlvbiIuZXF1YWxzKGNvbmZpZy5hbmFseXNpcykpIHsKICAgICAgICAgICAgICAgICAgICAvLyBTdGVwIDE6IEluaXRpYWxpemUgdGhlIEFuYWx5emVyCiAgICAgICAgICAgICAgICAgICAgQW5hbHl6ZXIgYW5hbHl6ZXIgPSBuZXcgT0FTQW5hbHl6ZXIoU1BFQ19VUkwsIG9wZXJhdGlvblBhdGgsIG9wZXJhdGlvblR5cGUpOwoKICAgICAgICAgICAgICAgICAgICAvLyBTdGVwIDI6IFZhbGlkYXRlIHRoZSBSZXF1ZXN0CiAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBpc1ZhbGlkID0gYW5hbHl6ZXIuaXNWYWxpZFJlcXVlc3QocGFyYW1NYXApOwoKICAgICAgICAgICAgICAgICAgICAvLyBTdGVwIDM6IEdlbmVyYXRlIHRoZSBSZXNwb25zZSBpZiBJbnZhbGlkCiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyByZXNwb25zZU1lc3NhZ2UgPSAiVGhlIHJlcXVlc3QgaXMgaW52YWxpZCEiOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIkV4cGxhbmF0aW9uIi5lcXVhbHNJZ25vcmVDYXNlKGNvbmZpZy5hbmFseXNpcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlTWVzc2FnZSA9IGFuYWx5emVyLmdldEV4cGxhbmF0aW9uTWVzc2FnZShwYXJhbU1hcCkudG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVzcG9uc2VTdGF0dXNFeGNlcHRpb24oSHR0cFN0YXR1cy5CQURfUkVRVUVTVCwgcmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggKElETEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVzcG9uc2VTdGF0dXNFeGNlcHRpb24oSHR0cFN0YXR1cy5CQURfUkVRVUVTVCwgZS5nZXRNZXNzYWdlKCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBjaGFpbi5maWx0ZXIoZXhjaGFuZ2UpOwogICAgICAgIH07CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBjbGFzcyBDb25maWcgewogICAgICAgIHByaXZhdGUgU3RyaW5nIGFuYWx5c2lzOwogICAgICAgIHByaXZhdGUgU3RyaW5nIHNwZWNQYXRoOwogICAgICAgIHByaXZhdGUgU3RyaW5nIG9wZXJhdGlvblBhdGg7CgogICAgICAgIC8vIEdldHRlcnMgYW5kIHNldHRlcnMKICAgICAgICBwdWJsaWMgU3RyaW5nIGdldE9wZXJhdGlvblBhdGgoKSB7IHJldHVybiBvcGVyYXRpb25QYXRoOyB9CiAgICAgICAgcHVibGljIHZvaWQgc2V0T3BlcmF0aW9uUGF0aChTdHJpbmcgb3BlcmF0aW9uUGF0aCkgeyB0aGlzLm9wZXJhdGlvblBhdGggPSBvcGVyYXRpb25QYXRoOyB9CgogICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0U3BlY1BhdGgoKSB7IHJldHVybiBzcGVjUGF0aDsgfQogICAgICAgIHB1YmxpYyB2b2lkIHNldFNwZWNQYXRoKFN0cmluZyBzcGVjUGF0aCkgeyB0aGlzLnNwZWNQYXRoID0gc3BlY1BhdGg7IH0KCiAgICAgICAgcHVibGljIFN0cmluZyBnZXRBbmFseXNpcygpIHsgcmV0dXJuIGFuYWx5c2lzOyB9CiAgICAgICAgcHVibGljIHZvaWQgc2V0QW5hbHlzaXMoU3RyaW5nIGFuYWx5c2lzKSB7IHRoaXMuYW5hbHlzaXMgPSBhbmFseXNpczsgfQogICAgfQp9CmBgYAojIyBDb25maWd1cmF0aW9uICAKClRvIGFwcGx5IGBJRExGaWx0ZXJgIGluICoqU3ByaW5nIENsb3VkIEdhdGV3YXkqKiwgdXBkYXRlIHlvdXIgYGFwcGxpY2F0aW9uLnlhbWxgIGZpbGUgd2l0aCB0aGUgYXBwcm9wcmlhdGUgcm91dGUgY29uZmlndXJhdGlvbi4gIAoKIyMjIFN0ZXAtYnktU3RlcCBJbnN0cnVjdGlvbnMgIAoKMS4gTmF2aWdhdGUgdG8gYHNyYy9tYWluL3Jlc291cmNlc2AgaW4geW91ciBTcHJpbmcgQm9vdCBwcm9qZWN0LiAgCjIuIE9wZW4gKG9yIGNyZWF0ZSkgYGFwcGxpY2F0aW9uLnlhbWxgLiAgCjMuIEFkZCBhIHJvdXRlIGNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6ICAKCmBgYHlhbWwKc3ByaW5nOgogIGNsb3VkOgogICAgZ2F0ZXdheToKICAgICAgcm91dGVzOgogICAgICAgIC0gaWQ6IDxVbmlxdWVSb3V0ZUlEPgogICAgICAgICAgdXJpOiA8VGFyZ2V0U2VydmljZVVSST4KICAgICAgICAgIHByZWRpY2F0ZXM6CiAgICAgICAgICAgIC0gUGF0aD08UmVxdWVzdFBhdGhQYXR0ZXJuPgogICAgICAgICAgZmlsdGVyczoKICAgICAgICAgICAgLSBuYW1lOiBJRExGaWx0ZXIKICAgICAgICAgICAgICBhcmdzOgogICAgICAgICAgICAgICAgYW5hbHlzaXM6IDxBbmFseXNpc01vZGU+ICAjIE9wdGlvbnM6IERldGVjdGlvbiwgRXhwbGFuYXRpb24sIE5vbmUKICAgICAgICAgICAgICAgIHNlcnZpY2VOYW1lOiAiPFNlcnZpY2VOYW1lPiIKICAgICAgICAgICAgICAgIG9wZXJhdGlvblBhdGg6ICI8T3BlcmF0aW9uUGF0aD4iCiAgICAgICAgICAgICAgICBzcGVjUGF0aDogIjxTUEVDUGF0aD4iCmBgYAoKIyMjIENvbmZpZ3VyYXRpb24gUGFyYW1ldGVycyAgCgp8IFBhcmFtZXRlciAgICAgICB8IERlc2NyaXB0aW9uIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfAp8ICoqaWQqKiAgICAgICAgIHwgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByb3V0ZSAoYDxVbmlxdWVSb3V0ZUlEPmApLiB8CnwgKip1cmkqKiAgICAgICAgfCBUYXJnZXQgc2VydmljZSBVUkkgKGA8VGFyZ2V0U2VydmljZVVSST5gKS4gfAp8ICoqcHJlZGljYXRlcyoqIHwgRGVmaW5lcyByZXF1ZXN0IG1hdGNoaW5nIGNvbmRpdGlvbnMgKHJvdXRlcyBvbmx5IGA8UmVxdWVzdFBhdGhQYXR0ZXJuPmApLiB8CnwgKipmaWx0ZXJzKiogICAgfCBTcGVjaWZpZXMgdGhlIGZpbHRlciB0byBiZSBhcHBsaWVkIChgSURMRmlsdGVyYCkuIHwKfCAqKmFuYWx5c2lzKiogICB8IEFuYWx5c2lzIG1vZGUgKGBEZXRlY3Rpb25gLCBgRXhwbGFuYXRpb25gLCBvciBgTm9uZWApLiB8CnwgKipvcGVyYXRpb25QYXRoKiogfCBBUEkgb3BlcmF0aW9uIHBhdGggKGA8T3BlcmF0aW9uUGF0aD5gKS4gfAp8ICoqc3BlY1BhdGgqKiB8IFBhdGggdG8gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmaWxlIChgPFNQRUNQYXRoPmApLiB8CgoKIyMjIEV4YW1wbGU6IFllbHAgVHJhbnNhY3Rpb25zIFNlYXJjaCAgCgpCZWxvdyBpcyBhbiBleGFtcGxlIGNvbmZpZ3VyYXRpb24gZm9yIGFwcGx5aW5nIGBJRExGaWx0ZXJgIHRvIHRoZSAqKlllbHAgVHJhbnNhY3Rpb25zIFNlYXJjaCoqIEFQSToKCmBgYHlhbWwKc3ByaW5nOgogIGNsb3VkOgogICAgZ2F0ZXdheToKICAgICAgcm91dGVzOgogICAgICAgIC0gaWQ6IFllbHBUcmFuc2FjdGlvbnNTZWFyY2gKICAgICAgICAgIHVyaTogaHR0cHM6Ly9hcGkueWVscC5jb20KICAgICAgICAgIHByZWRpY2F0ZXM6CiAgICAgICAgICAgIC0gUGF0aD0vdjMvdHJhbnNhY3Rpb25zLyoqCiAgICAgICAgICBmaWx0ZXJzOgogICAgICAgICAgICAtIG5hbWU6IElETEZpbHRlcgogICAgICAgICAgICAgIGFyZ3M6CiAgICAgICAgICAgICAgICBhbmFseXNpczogRXhwbGFuYXRpb24gICMgT3B0aW9uczogRGV0ZWN0aW9uLCBFeHBsYW5hdGlvbiwgTm9uZQogICAgICAgICAgICAgICAgc2VydmljZU5hbWU6ICJZZWxwVHJhbnNhY3Rpb25zU2VhcmNoIgogICAgICAgICAgICAgICAgb3BlcmF0aW9uUGF0aDogIi90cmFuc2FjdGlvbnMvZGVsaXZlcnkvc2VhcmNoIgogICAgICAgICAgICAgICAgc3BlY1BhdGg6ICIvWWVscEJ1c2luZXNzZXNTZWFyY2gvb3BlbmFwaS55YW1sIgpgYGAKCg== readmeEtag: '"c7a6ee718d373fb4c0dc671857bb2569d232d296"' readmeLastModified: Sun, 23 Feb 2025 17:33:51 GMT repositoryId: 582038295 description: >- IDLFilter is a custom filter for Spring Cloud Gateway, specifically designed to manage inter-parameter dependencies in web APIs. created: '2022-12-25T12:12:17Z' updated: '2025-02-23T17:33:54Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: saman-barakat logo: https://avatars.githubusercontent.com/u/3259712?v=4 repoEtag: '"23d5b82ad17707267077f90210ede025152bc952ea1627cdc2a1e8603b87e37c"' repoLastModified: Sun, 23 Feb 2025 17:33:54 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/lams-epfl/gen-rest v3: true repositoryMetadata: base64Readme: >- IyBzZWFtLXRvLW9wZW5hcGkKClRoaXMgcmVwbyBob3N0cyBhIHRvb2wgdGhhdCB0YWtlcyBzZXJ2aWNlIG1vZGVscyBjcmVhdGVkIHdpdGggW1NlYW1DQURdKGh0dHA6Ly9sYW1zLmVwZmwuY2gvc2VhbWNhZC8pIGFuZCBnZW5lcmF0ZXMgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZyb20gdGhlIHdlYiBzZXJ2aWNlcyBhbm5vdGF0aW9ucyBvZiB0aGUgc2VydmljZSBtb2RlbHMuCgoK readmeEtag: '"c2cd348d6a9031fa4af1016e44d3ecbf4ba97bac"' readmeLastModified: Thu, 10 Jan 2019 17:06:05 GMT repositoryId: 122209000 description: >- A tool to generate automatically OpenAPI specification from a service model created: '2018-02-20T14:29:24Z' updated: '2023-06-06T09:11:54Z' language: Java archived: false stars: 1 watchers: 2 forks: 2 owner: lams-epfl logo: https://avatars.githubusercontent.com/u/34246217?v=4 repoEtag: '"3ff750bd1fc8b1741fb547e4bf6285f65711697b4ce8dd3e5e7ffe30944fecd6"' repoLastModified: Tue, 06 Jun 2023 09:11:54 GMT foundInMaster: true category: - Testing - Parsers id: 602854fe530d1f863fdb163da8c595df - source: openapi3 tags repository: https://github.com/teobler/openapi-schema v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJLXNjaGVtYQp0aGlzIHRvb2wgaXMgYnVpbHQgZm9yIGdlbmVyYXRpbmcgdHlwZXNjcmlwdCBpbnRlcmZhY2Ugb2YgT3BlbkFQSSBzY2hlbWEuCgpqc29uIGZpbGUgaXMgZnJvbSBbT3BlbkFQSS1TcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi90cmVlL21hc3Rlci9zY2hlbWFzL3YzLjApLCB5b3UgY2FuIGFsc28gZmluZCB5YW1sIGZpbGUgdGhlcmUsIHRoYW5rcyBmb3IgdGhlIG1haW50ZW5hbmNlLgoKIyMgTk9URQp0aGlzIHRvb2wgb25seSBmb3IgT3BlbkFQSSAqKnYzLjAueCoqIG5vdwoKIyMgaW5zdGFsbApgYGBiYXNoCiAgbnBtIGluc3RhbGwgLUQgQG9wZW5hcGktaW50ZWdyYXRpb24vb3BlbmFwaS1zY2hlbWEKYGBgCgojIyB1c2UKYGBgamF2YXNjcmlwdAogIGltcG9ydCB7IFNwZWMgfSBmcm9tICJAb3BlbmFwaS1pbnRlZ3JhdGlvbi9vcGVuYXBpLXNjaGVtYSI7CgogIGNvbnNvbGUubG9nKFNwZWMpOwpgYGAKCiMjIEhvdyB0byBTdGFydAoxLiBjbG9uZSByZXBvIHRvIHlvdXIgbG9jYWwKMi4gYG5wbSBpYAozLiBtb2RpZnkgY29kZSB0byB3aGF0IHlvdSB3YW50CjQuIGBucG0gcnVuIGdlbmVyYXRlYCB0byBnZW5lcmF0ZSBuZXcgaW50ZXJmYWNlIGZvciB0eXBlc2NyaXB0Cg== readmeEtag: '"61660b3e35a75fc61a783781c30d235ab89f9f8f"' readmeLastModified: Thu, 19 Mar 2020 08:19:33 GMT repositoryId: 247659506 description: A tool for generating OpenAPI schema interface for typescript. created: '2020-03-16T09:22:18Z' updated: '2023-03-07T12:36:25Z' language: TypeScript archived: false stars: 1 watchers: 1 forks: 0 owner: teobler logo: https://avatars.githubusercontent.com/u/26424691?v=4 repoEtag: '"87a3bb24203a353547a000e435755ed2b12b5e8366ed8e8e9a673455ed2c9a68"' repoLastModified: Tue, 07 Mar 2023 12:36:25 GMT foundInMaster: true category: Parsers id: 5ca25503175774d442f849dc5ceae080 - source: openapi3 tags repository: https://github.com/koevskinikola/camunda-open-api-endpoints v3: true repositoryMetadata: base64Readme: >- IyBjYW11bmRhLW9wZW4tYXBpLWVuZHBvaW50cwpTY3JpcHRzIHRvIGNyZWF0ZSB0aGUgcHJvcGVyIHN0cnVjdHVyZSBhbmQgRlRMIHRlbXBsYXRlIGZpbGVzIGZvciB0aGUgQ2FtdW5kYSBPcGVuIEFQSSBzcGVjCgpUaGUgYGVuZHBvaW50cy5zaGAgYmFzaCBzY3JpcHQgaGFzIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgoKYGBgc2gKLi9lbmRwb2ludHMuc2ggW2h0dHBfdmVyYl0gW3NwYWNlX3NlcGFyYXRlZF9lbnBvaW50X3BhdGhzXQpgYGAKCkZvciBleGFtcGxlLCB0aGUgY2FsbCB0byBgLi9lbmRwb2ludHMuc2ggZ2V0IHRhc2sve2lkfS9jb21wbGV0ZSB0YXNrL3tpZH0vYXNzaWduYAppbiBhIGdpdmVuIGRpcmVjdG9yeSwgd2lsbCBwcm9kdWNlIHRoZSBmb2xsb3dpbmcgZm9sZGVyIHN0cnVjdHVyZToKCiogUEFSRU5UX0RJUkVDVE9SWQogICogdGFzawogICAgKiB7aWR9CiAgICAgICogY29tcGxldGUKICAgICAgICAqIGdldC5mdGwKICAgICAgKiBhc3NpZ24KICAgICAgICAqIGdldC5mdGwKClRoZSBgXCouZnRsYCBmaWxlcyBsaXN0ZWQgYWJvdmUgd2lsbCBjb250YWluIHRoZSBmb2xsb3dpbmcgY29udGVudDoKYGBgeG1sCnsKCiAgPEBsaWIuZW5kcG9pbnRJbmZvCiAgICAgIGlkID0gIkFERF9JRCIKICAgICAgdGFnID0gIkFERF9UQUciCiAgICAgIGRlc2MgPSAiIiAvPgoKICAicGFyYW1ldGVycyIgOiBbCgogICAgPEBsaWIucGFyYW1ldGVyCiAgICAgICAgbmFtZSA9ICJpZCIKICAgICAgICBsb2NhdGlvbiA9ICJwYXRoIgogICAgICAgIHR5cGUgPSAic3RyaW5nIgogICAgICAgIHJlcXVpcmVkID0gdHJ1ZQogICAgICAgIGxhc3QgPSB0cnVlCiAgICAgICAgZGVzYyA9ICJUaGUgaWQgb2YgdGhlIEFERF9UWVBFIGZvciB3aGljaCBFTlRFUl9ERVNDIHNob3VsZCBiZSBBRERfQUNUSU9OLiIvPgogICAgPCNhc3NpZ24gbGFzdCA9IHRydWUgPgogICAgPCNpbmNsdWRlICIvbGliL2NvbW1vbnMvcGFnaW5hdGlvbi1wYXJhbXMuZnRsIiA+CgogIF0sCgogIDxAbGliLnJlcXVlc3RCb2R5CiAgICAgIG1lZGlhVHlwZSA9ICJhcHBsaWNhdGlvbi9qc29uIgogICAgICBkdG8gPSAiX0R0byIKICAgICAgZXhhbXBsZXMgPSBbJyJleGFtcGxlLTEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgInN1bW1hcnkiOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOgogICAgICAgICAgICAgICAgICAgICB9J10gLz4KCiAgInJlc3BvbnNlcyIgOiB7CgogICAgPEBsaWIucmVzcG9uc2UKICAgICAgICBjb2RlID0gIjIwMCIKICAgICAgICBkdG8gPSAiQUREX0RUTyIKICAgICAgICBhcnJheSA9IHRydWUKICAgICAgICBkZXNjID0gIlJlcXVlc3Qgc3VjY2Vzc2Z1bC4iIC8+CgogICAgPEBsaWIucmVzcG9uc2UKICAgICAgICBjb2RlID0gIjQwMCIKICAgICAgICBkdG8gPSAiRXhjZXB0aW9uRHRvIgogICAgICAgIGxhc3QgPSB0cnVlCiAgICAgICAgZGVzYyA9ICJCYWQgUmVxdWVzdC4gU2VlIHRoZQogICAgICAgICAgICAgICAgW0ludHJvZHVjdGlvbl0oJHtkb2NzVXJsfS9yZWZlcmVuY2UvcmVzdC9vdmVydmlldy8jZXJyb3ItaGFuZGxpbmcpCiAgICAgICAgICAgICAgICBmb3IgdGhlIGVycm9yIHJlc3BvbnNlIGZvcm1hdC4iIC8+CgogIH0KfQpgYGA= readmeEtag: '"73cd1d93679e214c83f76be6523e0a0ea19de7f8"' readmeLastModified: Thu, 19 Mar 2020 09:19:57 GMT repositoryId: 247750700 description: Create a proper structure and FTL templates for the Camunda OpenAPI spec created: '2020-03-16T15:42:58Z' updated: '2020-03-19T09:20:07Z' language: Shell archived: false stars: 1 watchers: 1 forks: 1 owner: koevskinikola logo: https://avatars.githubusercontent.com/u/1534291?v=4 license: Apache-2.0 repoEtag: '"e3441c2c4f5b51d41e75d7a091b16bf416e776f12b5c8262d946612cd3d4bcf3"' repoLastModified: Thu, 19 Mar 2020 09:20:07 GMT foundInMaster: true category: - Server Implementations - Parsers id: d26838616c53ebd5121442d05dd4e7df - source: openapi3 tags repository: https://github.com/ruddfawcett/ios-openapi-gen v3: true repositoryMetadata: base64Readme: >- IyBpb3Mtb3BlbmFwaS1nZW4K8J+OgSBXcmFwIFN3YWdnZXIgT3BlbkFQSXMgd2l0aCBhbiBBUEkgcGF0dGVybiBkZXZlbG9wZWQgYnkgW0BrZWFuXShodHRwczovL2tlYW4uZ2l0aHViLmlvL3Bvc3QvYXBpLWNsaWVudCkuIFJpZ2h0IG5vdyB0aGUgcHJvamVjdCB3aWxsIGRvIGV2ZXJ5dGhpbmcgYnV0IGZ1bmN0aW9uIG5hbWVzLCBidXQgd2lsbCB0YWNrbGUgdGhhdCBzb29uLgoKIyMgVXNhZ2UKLSDwn6eR4oCN8J+SuyBncmFiIGxhdGVzdCBgb3BlbmFwaS5qc29uYAotIPCfk50gZWRpdCBzZXR0aW5ncyBpbiBgc2V0dGluZ3MueW1sYAotIPCfm6AgcnVuIGBweXRob24gZ2VuLnB5YAotIPCflI4gZ28gdG8gYG91dHB1dC8qYAotIPCfmI4gdXNlIGdlbmVyYXRlZCBTd2lmdCBBUEkgbGF5ZXIKCiMjIEV4YW1wbGUgT3V0cHV0CgpgYGBzd2lmdApleHRlbnNpb24gQVBJIHsKICAgIGVudW0gU3RvcmUge30KfQoKZXh0ZW5zaW9uIEFQSS5TdG9yZSB7CgogICAgLy8vIFJldHVybnMgcGV0IGludmVudG9yaWVzIGJ5IHN0YXR1cwogICAgc3RhdGljIGZ1bmMgPCMgUmVhZGFibGUgTmFtZSAjPigpIC0+IEVuZHBvaW50PDwjIE1vZGVsIFR5cGUvVm9pZCAjPj4gewogICAgICAgIHJldHVybiBFbmRwb2ludChtZXRob2Q6IC5nZXQsIHBhdGg6ICIvc3RvcmUvaW52ZW50b3J5IikKICAgIH0KCiAgICAvLy8gUGxhY2UgYW4gb3JkZXIgZm9yIGEgcGV0CiAgICBzdGF0aWMgZnVuYyA8IyBSZWFkYWJsZSBOYW1lICM+KCkgLT4gRW5kcG9pbnQ8PCMgTW9kZWwgVHlwZS9Wb2lkICM+PiB7CiAgICAgICAgcmV0dXJuIEVuZHBvaW50KG1ldGhvZDogLnBvc3QsIHBhdGg6ICIvc3RvcmUvb3JkZXIiKQogICAgfQoKICAgIC8vLyBGaW5kIHB1cmNoYXNlIG9yZGVyIGJ5IGlkCiAgICBzdGF0aWMgZnVuYyA8IyBSZWFkYWJsZSBOYW1lICM+KG9yZGVySWQ6IEludCkgLT4gRW5kcG9pbnQ8PCMgTW9kZWwgVHlwZS9Wb2lkICM+PiB7CiAgICAgICAgcmV0dXJuIEVuZHBvaW50KG1ldGhvZDogLmdldCwgcGF0aDogIi9zdG9yZS9vcmRlci9cKG9yZGVySWQpIikKICAgIH0KCiAgICAvLy8gRGVsZXRlIHB1cmNoYXNlIG9yZGVyIGJ5IGlkCiAgICBzdGF0aWMgZnVuYyA8IyBSZWFkYWJsZSBOYW1lICM+KG9yZGVySWQ6IEludCkgLT4gRW5kcG9pbnQ8PCMgTW9kZWwgVHlwZS9Wb2lkICM+PiB7CiAgICAgICAgcmV0dXJuIEVuZHBvaW50KG1ldGhvZDogLmRlbGV0ZSwgcGF0aDogIi9zdG9yZS9vcmRlci9cKG9yZGVySWQpIikKICAgIH0KCn0KYGBgCgojIyBGdXR1cmUgUGxhbnMKLSDwn6ShIHBhcnNlIGZ1bGwgZG9jdW1lbnRhdGlvbiBmb3IgcGF0aHMKLSDwn5OWIGdlbmVyYXRlIHNlbWktcmVhZGFibGUgQVBJIGZ1bmN0aW9uIG5hbWVzCi0g8J+klyBoYW5kbGUgYm9keSBwYXJhbWV0ZXJzCi0g8J+WvCBzdXBwb3J0IGZyYW1ld29yay9wYXR0ZXJucyBiZXlvbmQgQWxhbW9maXJlCgojIyBDb2xvcGhvbgotIFtAcnVkZGZhd2NldHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9ydWRkZmF3Y2V0dCk6IFB5dGhvbiBwYXJzZXIgYW5kIGNvbnZlcnRlciBmb3IgT3BlbkFQSXMuCi0gW0BrZWFuXShodHRwczovL2tlYW4uZ2l0aHViLmlvL3Bvc3QvYXBpLWNsaWVudCk6IEFQSSBsYXllciBjb25jZXB0LCBvcmlnaW5hbGx5IHdyaXR0ZW4gd2l0aCBBbGFtb2ZpcmUgYW5kIFJ4U3dpZnQuCg== readmeEtag: '"927fff6cf8eefbe4e0ed89ccab34774828759936"' readmeLastModified: Thu, 30 Apr 2020 23:53:31 GMT repositoryId: 260319500 description: Generate iOS client API wrappers from Swagger's OpenAPI spec. created: '2020-04-30T21:11:37Z' updated: '2022-09-06T16:54:15Z' language: Python archived: false stars: 1 watchers: 1 forks: 0 owner: ruddfawcett logo: https://avatars.githubusercontent.com/u/3122471?v=4 repoEtag: '"187537452ca69999271ddd9e709876df283244cf9a1d006704025d95a0a5558d"' repoLastModified: Tue, 06 Sep 2022 16:54:15 GMT foundInMaster: true category: - Data Validators - Parsers id: ad552fe08bfc4be2fef6db46332b5238 - source: openapi3 tags repository: https://github.com/opengeospatial/ogcapi-edr-sprint2 v3: true repositoryMetadata: base64Readme: >- IyBPR0MgQVBJIC0gRURSIFNwcmludCAyCgpbPGltZyBzcmM9Imh0dHA6Ly93d3cub3Blbmdlb3NwYXRpYWwub3JnL3B1Yi93d3cvZmlsZXMvT0dDX0xvZ29fMkRfQmx1ZV94XzBfMC5wbmciIHdpZHRoPSIyMDAiLz5dKGh0dHBzOi8vd3d3Lm9wZW5nZW9zcGF0aWFsLm9yZykKClRoaXMgR2l0aHViIHJlcG9zaXRvcnkgaXMgZm9yIHRoZSBzZWNvbmQgT0dDIEFQSSAtIEVEUiBjb2RlIHNwcmludCBmb2N1c2luZyBvbiB0aGUgW09HQyBBUEkgLSBFbnZpcm9ubWVudGFsIERhdGEgUmV0cmlldmFsIGNhbmRpZGF0ZSBzdGFuZGFyZF0oaHR0cHM6Ly93d3cub2djLm9yZy9wcmVzc3Jvb20vcHJlc3NyZWxlYXNlcy8zMjgwKS4KClsjT0dDQVBJXShodHRwczovL3R3aXR0ZXIuY29tL2hhc2h0YWcvT0dDQVBJKQoKCkFib3V0IHRoZSBDb2RlIFNwcmludAotLS0tLS0tLS0tLS0tLS0tCgoKVGhlIE9wZW4gR2Vvc3BhdGlhbCBDb25zb3J0aXVtIChPR0MpIGludml0ZXMgZGV2ZWxvcGVycyB0byB0aGUgT0dDIEFQSSAtIEVEUiBTcHJpbnQgMiB2aXJ0dWFsIGV2ZW50IHRvIGJlIGhlbGQgdGhyb3VnaCByZW1vdGUgcGFydGljaXBhdGlvbi93ZWItY29uZmVyZW5jaW5nIG9uIE5vdmVtYmVyIDktMTAsIDIwMjAsIGZyb20gOTowMGFtIDU6MzBwbSBbRVNUXShodHRwczovL3d3dy50aW1lYW5kZGF0ZS5jb20vd29ybGRjbG9jay91c2Evd2FzaGluZ3Rvbi1kYykuIFJlZ2lzdHJhdGlvbiBmb3IgdGhlIE9HQyBBUEkgLSBFRFIgU3ByaW50IDIgdmlydHVhbCBldmVudCBhbmQgdGhlIGFzc29jaWF0ZWQgcHJlLWV2ZW50IFdlYmluYXIgaXMgW2hlcmVdKGh0dHBzOi8vcG9ydGFsLm9nYy5vcmcvcHVibGljX29nYy9yZWdpc3Rlci8yMDIwMTFxNF9hcGlfZWRyLnBocCkuCgpUaGUgY29kZSBzcHJpbnQgd2lsbCBmb2N1cyBvbiByZWZpbmluZyB0aGUgW09HQyBBUEkgLSBFbnZpcm9ubWVudGFsIERhdGEgUmV0cmlldmFsIGNhbmRpZGF0ZSBzdGFuZGFyZF0oaHR0cDovL2RvY3Mub3Blbmdlb3NwYXRpYWwub3JnL0RSQUZUUy8xOS0wODYuaHRtbCkuIFRoZSBjYW5kaWRhdGUgc3RhbmRhcmQgdXNlcyBjdXJyZW50IHdlYiB0ZWNobm9sb2dpZXMgYW5kIGJlc3QgcHJhY3RpY2VzIHRvIGVuYWJsZSBlbmQtdXNlcnMgLSBvciBhbnlvbmUgd2l0aCB3ZWIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZSAtIHRvIGVhc2lseSBpZGVudGlmeSBhbmQgcmV0cmlldmUgYSBzdWJzZXQgb2YgZGF0YSBmcm9tIOKAmGJpZyBkYXRh4oCZIHN0b3Jlcy4gVGhlIGlkZWEgaXMgdG8gc2F2ZSB0aG9zZSB1c2VycyBpbnRlcmVzdGVkIGluIGVudmlyb25tZW50YWwgKG9yIG90aGVyKSBkYXRhIGZyb20gaGF2aW5nIHRvIHRyYW5zZmVyIGFuZCBkZWFsIHdpdGggZGF0YXNldHMgdGhhdCBpbmV2aXRhYmx5IGNvbnRhaW4gZGF0YSBjb25jZXJuaW5nIGFyZWFzIG9yIHRpbWUgcGVyaW9kcyB0aGF0IGFyZSBpcnJlbGV2YW50IHRvIHRoZWlyIGludGVyZXN0cy4KClJlZ2lzdGVyIGF0IGh0dHBzOi8vcG9ydGFsLm9nYy5vcmcvcHVibGljX29nYy9yZWdpc3Rlci8yMDIwMTFxNF9hcGlfZWRyLnBocAoKCiogW1NwcmludCBEZXNjcmlwdGlvbl0oLi9hYm91dC5hZG9jKQoqIFtBUEkgU3BlY3NdKC4vc3BlY3MuYWRvYykKKiBbU3ByaW50IExvZ2lzdGljc10oLi9sb2dpc3RpY3MuYWRvYykKKiBbU2NoZWR1bGUvQWdlbmRhXSguL2FnZW5kYS5hZG9jKQoqIFtJbXBsZW1lbnRhdGlvbnNdKC4vaW1wbGVtZW50YXRpb25zLmFkb2MpCiogW0RhdGFzZXRzXSguL1NoYXJlZF9EYXRhc2V0cy9SRUFETUUubWQpCiogW1doYXQgaXMgZXZlcnlib2R5IGdvaW5nIHRvIGJlIHdvcmtpbmcgb24/XShodHRwczovL2dpdGh1Yi5jb20vb3Blbmdlb3NwYXRpYWwvT0dDQVBJLUVEUi1TcHJpbnQyL2lzc3Vlcy8xKQoqIFtMZXNzb25zIGFuZCBOZXh0IFN0ZXBzXSguL2xlc3NvbnNBbmROZXh0U3RlcHMuYWRvYykKKiBbQWRkaXRpb25hbCBSZXNvdXJjZXNdKC4vYWRkaXRpb25hbFJlc291cmNlcy5hZG9jKQoqIFtGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9ucyAoRkFRcyldKC4vRkFRLmFkb2MpCgpUaGUgc3ByaW50IHdpbGwgYmVnaW4gYXQgMDk6MDBhbSBFU1Qgb24gdGhlIGZpcnN0IGRheSwgYW5kIGVuZCBhdCAwNTowMHBtIEVTVCBvbiB0aGUgc2Vjb25kIGRheS4K readmeEtag: '"64e778c9e1fe3b9f795690ded2e851a323fb02d4"' readmeLastModified: Fri, 13 Nov 2020 07:46:23 GMT repositoryId: 304570773 description: >- This Github repository is for the second OGC API - EDR code sprint focusing on the OGC API - Environmental Data Retrieval candidate standard. created: '2020-10-16T08:48:36Z' updated: '2023-01-28T11:44:43Z' language: R archived: true stars: 1 watchers: 20 forks: 6 owner: opengeospatial logo: https://avatars.githubusercontent.com/u/1955193?v=4 repoEtag: '"721e68a0a4bb8cc864ec48f034fbb63a8204ee1c47114dac3ec649a2cba36e2c"' repoLastModified: Sat, 28 Jan 2023 11:44:43 GMT foundInMaster: true category: Server Implementations id: a15d24387a553cf2bb6cd4b6a3953574 - source: openapi3 tags repository: https://github.com/shopiqo/bigbuy-oas v3: true id: 7c4655856582db9c2b38a62ae4e156b1 repositoryMetadata: base64Readme: >- IyBCaWdCdXkgQVBJIHNwZWNpZmljYXRpb25zCgojIyMgR2VuZXJhdGUvcmVidWlsZCBzcGVjaWZpY2F0aW9ucwoKYGBgCi4vYmluL2J1aWxkCmBgYAoKIyMjIFN3YWdnZXIgVUkKCmBgYApkb2NrZXIgcnVuIFwKICAtLXJtIFwKICAtcCA4MDgwOjgwODAgXAogIC12IGBwd2RgOi91c3Ivc2hhcmUvbmdpbngvaHRtbC9wdWJsaWMgXAogIC1lIEFQSV9VUkw9cHVibGljL2Rpc3QvdjEvb3BlbmFwaS55YW1sIFwKICAtZSBWQUxJREFUT1JfVVJMPW5vbmUgXAogIC1lIFRSWV9JVF9PVVRfRU5BQkxFRD10cnVlIFwKICAtZSBESVNQTEFZX1JFUVVFU1RfRFVSQVRJT049dHJ1ZSBcCiAgLWUgRElTUExBWV9PUEVSQVRJT05fSUQ9dHJ1ZSBcCiAgc3dhZ2dlcmFwaS9zd2FnZ2VyLXVpCmBgYAoKIyMjIEdlbmVyYXRlIEFQSSBjbGllbnQKCmBgYApkb2NrZXIgcnVuIC0tcm0gLXYgJFBXRDovYXBwIG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkgXAogICAgZ2VuZXJhdGUgXAogICAgLWkgL2FwcC9kaXN0L3YxL29wZW5hcGkueWFtbCBcCiAgICAtZyBwaHAgXAogICAgLW8gL2FwcC9jbGllbnRzL3YxL3BocCBcCiAgICAtLXNraXAtdmFsaWRhdGUtc3BlYyBcCiAgICAtLWdpdC11c2VyLWlkIGVmc2EtaW8gXAogICAgLS1naXQtcmVwby1pZCBiaWdidXktcGhwLWFwaS1jbGllbnQgXAogICAgLS1hZGRpdGlvbmFsLXByb3BlcnRpZXMgcGFja2FnZU5hbWU9QmlnYnV5QXBpCmBgYAo= readmeEtag: '"d2ae1445e1a188e37ab6c922386409bad8a0f02f"' readmeLastModified: Tue, 01 Feb 2022 10:49:20 GMT repositoryId: 338562018 description: OpenAPI specification for https://api.bigbuy.eu/. created: '2021-02-13T11:44:15Z' updated: '2023-02-05T14:42:22Z' language: Shell archived: false stars: 1 watchers: 0 forks: 2 owner: shopiqo logo: https://avatars.githubusercontent.com/u/79263571?v=4 repoEtag: '"8ce32e7fd4bb3e3e490a4b58479138ba8bf7358e9b87caf724bb05a2b8b4b74b"' repoLastModified: Sun, 05 Feb 2023 14:42:22 GMT category: - Code Generators - Parsers foundInMaster: true oldLocations: - https://github.com/efsa-io/bigbuy-oas - source: openapi3 tags repository: https://github.com/jonasnicoletti/spring-boot-demo-app v3: true repositoryMetadata: repositoryId: 347713788 description: Springboot demo app with some enterprise standards created: '2021-03-14T18:03:51Z' updated: '2023-03-09T00:05:41Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: JonasNicoletti logo: https://avatars.githubusercontent.com/u/53706359?v=4 repoEtag: '"b0db25aea163a7566b7d0e506e5614523a01a48c845b455f8a7358e55804d793"' repoLastModified: Thu, 09 Mar 2023 00:05:41 GMT foundInMaster: true id: 7fe6f1fa80818846ca4357078438118f - source: openapi3 tags repository: https://github.com/xiasf/kancloud-api-parser v3: true id: 998c30cb82434374582d859a37ff7979 repositoryMetadata: base64Readme: >- IyMga2FuY2xvdWQtYXBpLXBhcnNlciDor7TmmI4KCuWwhiBb55yL5LqR5paH5qGjYXBpXShodHRwczovL2hlbHAua2FuY2xvdWQuY24vNjc1MzkpIOagvOW8j+ino+aekOWvvOWHuuS4uiBbT3BlbkFQSSAzLjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjEuMC5tZCkg5qC85byP55qEanNvbuaWh+S7tu+8jOaWueS+v+WvvOWFpeWIsCBbQXBpZm94XShodHRwczovL3d3dy5hcGlmb3guY24vKSDkuK3jgIIKCuWvueS6juS5i+WJjeS9v+eUqOS6huS4jeaUr+aMgeagh+WHhuWMlkFQSeaWh+aho+e7k+aehOWvvOWHuueahOaWh+aho+W5s+WPsOadpeivtO+8jOiHquW3seagueaNruinhOWImeino+aekOaYr+WUr+S4gOeahOWKnuazleS6hu+8jOWQpuWImemmluasoei/geenu+aIkOacrOWkqumrmOS6hu+8jOWPr+iDveWwseaUvuW8g+S6huOAggoK5pys6ISa5pys6Kej5p6Q5pWI5p6c5Y+W5Yaz5LqO5paH5qGj5Lmm5YaZ55qE6KeE6IyD56iL5bqm77yM5Zug5Li65piv6YCa6L+H5q2j5YiZ5Yy56YWN6Kej5p6Q55qE77yM5omA5Lul5Lmf5Y+v5Lul5qC55o2u6ZyA6KaB54G15rS755qE5Y675YGa6LCD5pW044CC55uu5YmN5oiR5Lus5L2/55So5rKh5LuA5LmI6Zeu6aKY77yM5aaC5p6c6Zeu6aKY5qyi6L+O5o+QIElzc3VlcyDkuqTmtYHjgIIKCi0tLS0KCiMjIyDkvb/nlKjmlrnms5UKCmBgYHBocApyZXF1aXJlICdEb2NBcGlQYXJzZXIucGhwJzsKCiRkb2NBcGlQYXJzZXIgPSBuZXcgRG9jQXBpUGFyc2VyKCk7CgovLyAuLi4KCmBgYAoKIyMjIyDoh6rlrprkuYnpu5jorqRBUEnliIbnu4TvvIjliY3nvIDvvIkKCuWIhue7hOWNsyBhcGlfcHJlZml4IO+8jOWGs+WumuWvvOWFpeWIsCBBcGlmb3gg5Lit55qE5pyA5LiK5bGC55uu5b2V5ZCN56ewKHgtYXBpZm94LWZvbGRlciDlrZfmrrUpCgpgYGBwaHAKCiRkb2NBcGlQYXJzZXItPmRlZmF1bHRBcGlQcmVmaXggPSAnYWRtaW4nOyAvLyDpu5jorqTkuLogZGVmYXVsdAoKYGBgCgojIyMjIOino+aekOW5tuWvvOWHuuS4uiBPcGVuQVBJIGpzb27moLzlvI/mlofku7YKCmBgYHBocAovLyAwLiDop6PmnpDnnIvkupHmlofmoaPnm67lvZXmlofku7YKJGZpbGVMaXN0ID0gJGRvY0FwaVBhcnNlci0+cGFyc2VEb2NTdW1tYXJ5KCd4eHgtZG9jL1NVTU1BUlkubWQnKTsKCi8vIDEuIOino+aekCDnnIvkupEg54m55pyJ55qEIEFQSSDmoLzlvI/vvIzovazmjaLkuLog5qCH5YeG55qEQVBJ5YWD5L+h5oGvIOaVsOe7hOagvOW8jwokYXBpcyA9ICRkb2NBcGlQYXJzZXItPnBhcnNlRG9jRmlsZSgncGFya2luZ2xvdC/nrqHnkIblkI7lj7Av5YGc6L2m5Zy6566h55CGL+Wll+mkkOeuoeeQhi5tZCcpOwovLyBwcmludF9yKCRhcGlzKTtleGl0OwoKLy8g5Z+65LqOIOagh+WHhueahEFQSeWFg+S/oeaBryDvvIzkvaDlj6/ku6XlrprkuYnlhbbku5bnmoTku7vkvZXovazmjaLlpITnkIblmagKCi8vIDIuIOWGjei9rOaNouS4uiBPcGVuQVBJIOagvOW8j+eahOaVsOe7hAokYXBpcyA9ICRkb2NBcGlQYXJzZXItPk9wZW5BUElGb3JtYXRIYW5kbGUoJGFwaXMpOwovLyBwcmludF9yKCRhcGlzKTtleGl0OwoKLy8gMy4g5YaZ5YWl5Yiw5paH5Lu2IO+8jCDpu5jorqTkuLoganNvbiDmoLzlvI/vvIzkvaDkuZ/lj6/ku6XlrprkuYkg5YW25LuWIOagvOW8j+i9rOaNouWkhOeQhiBmb3JtYXRIYW5kbGUg5bGe5oCn77yM5aaCIFhNTOetieagvOW8jwokZG9jQXBpUGFyc2VyLT53cml0ZUFwaSgna2FuY2xvdWQtYXBpLmpzb24nLCAkYXBpcyk7CgpgYGAKCi0tLS0KCiMjIyDnnIvkupHmlofmoaMgQVBJIOagh+WHhuagvOW8jwoKIVtpbWFnZV0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMTc1MzU3NTcvMTgyMDIyOTU3LWIwNmJmMzI3LTEwNWMtNGE4Yi05M2M1LTEzZmQ5YjFiMjkxOC5wbmcpCgpgYGB0ZXh0CiMjIyAxLiDliJvlu7rjgIHnvJbovpEg5paw6Ze7Cgrkvb/nlKjlnLrmma/vvJrlkI7lj7DnrqHnkIblkZgg5Yib5bu644CB57yW6L6RIOaWsOmXuwoKfn5+W2FwaTphZG1pbl0KcG9zdDovbmV3cy9lZGl0CippbnQ6aWQ9MSPlj4LmlbBpZApzdHJpbmc6bmFtZT3pu5jorqTlgLwj6K+05piO5paH5a2XCjw8PApzdWNjZXNzCnsKICAgICJkYXRhIjogewogICAgICAgICJpZCI6IDEsCiAgICB9LAogICAgIm1zZyI6ICJvayIsCiAgICAiY29kZSI6IDEKfQo8PDwKZXJyb3IKewogICAgImRhdGEiOiB7fSwKICAgICJtc2ciOiAiZXJyb3IgbXNnIiwKICAgICJjb2RlIjogMAp9Cjw8PArlk43lupTnpLrkvosK6L+Z6YeM5aGr5YaZ6ZSZ6K+v55qE6L+U5Zue56CBCuS7peatpOexu+aOqO+8jOavj+S4queKtuaAgeS9v+eUqCA8PDwg5YiG5YmyLArnrKzkuIDooYzmt7vliqDnirbmgIHlkI3np7AKfn5+CmBgYAoKaHR0cHM6Ly9oZWxwLmthbmNsb3VkLmNuLzY3NTM5Cg== readmeEtag: '"22864c57ae6042a7a6eb214d36bd153456414ee0"' readmeLastModified: Sun, 31 Jul 2022 11:25:00 GMT repositoryId: 519744241 description: 将看云文档api格式解析导出为 OpenAPI 3.0 格式的json文件,方便导入到 Apifox 中 created: '2022-07-31T10:28:21Z' updated: '2022-07-31T11:40:45Z' language: PHP archived: false stars: 1 watchers: 1 forks: 0 owner: xiasf logo: https://avatars.githubusercontent.com/u/17535757?v=4 license: MIT repoEtag: '"5bb7624870d7c5ba9801c063b93e3ca3320b04e81460cade693390cb90efe93d"' repoLastModified: Sun, 31 Jul 2022 11:40:45 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/alexandrecpedro/bbb22-votation-system v3: true id: e59a48c9affe1b53bfe48c6218fe7b41 repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbiA9ICJjZW50ZXIiPgogICAgPGgxPiBTaXN0ZW1hIGRlIFZvdGHDp8OjbyBPbmxpbmUgZG8gQkJCIDIyIDwvaDE+CjwvZGl2Pgo8YnI+Cgo8ZGl2IGFsaWduID0gJ2NlbnRlcicganVzdGlmeS1jb250ZW50ID0gJ3NwYWNlLWFyb3VuZCcgPgogICA8aW1nIHNyYz0gJy4vcHJvamVjdC9sb2dvcy9BdmFuYWRlLnBuZycgYWx0ID0gJ0F2YW5hZGUnID4KICAgPGltZyBzcmM9ICcuL3Byb2plY3QvbG9nb3MvUmVkZUdsb2JvLnBuZycgYWx0ID0gJ1JlZGUgR2xvYm8nID4KPC9kaXY+Cgo8aDMgYWxpZ24gPSAiY2VudGVyIj4KICBTaXN0ZW1hIGRlIFZvdGHDp8OjbyBPbmxpbmUgZG8gQmlnIEJyb3RoZXIgQnJhc2lsIDIyICgyMDIyKQo8L2gzPgoKPHAgYWxpZ249ImNlbnRlciI+CiA8YSBocmVmPSIjb2JqZXRpdm8iPk9iamV0aXZvPC9hPiDigKIKIDxhIGhyZWY9IiN0ZWNub2xvZ2lhcyI+VGVjbm9sb2dpYXM8L2E+IOKAogogPGEgaHJlZj0iI3BlcmN1cnNvIj5QZXJjdXJzbzwvYT4gCjwvcD4KCjxicj4KPGJyPgoKPGRpdiBpZD0ib2JqZXRpdm8iPgo8aDI+IPCfkqEgT2JqZXRpdm8gPC9oMj4KQ29uc3RydWlyIHVtIHNpc3RlbWEgcXVlIHBlcm1pdGEgYW8gdXN1w6FyaW8gdm90YXIgbnVtIHBhcnRpY2lwYW50ZSBpbmRpY2FkbyBwYXJhIGVsaW1pbmHDp8OjbyAocGFyZWTDo28pIGRvIHJlYWxpdHkgc2hvdyBCaWcgQnJvdGhlciBCcmFzaWwgMjIgKEJCQiAyMiksIHBvciBzZW1hbmEuCgpFIGNvbnNlZ3VpciBjb250YXIgb3Mgdm90b3MgdG90YWlzIChpbmNsdXNpdmUgb3MgZmVpdG9zIHBvciByb2LDtHMpIGUgYXVkaXRhciBvcyB2b3RvcyB2w6FsaWRvcyAodm90b3Mgw7puaWNvcyBwb3IgdXN1w6FyaW8pLCBjb25maWd1cmFuZG8gdW1hIHBvcmNlbnRhZ2VtIGRlIHZvdG9zIHbDoWxpZG9zIHBvciBjYW5kaWRhdG8gw6AgZWxpbWluYcOnw6NvLgoKQ2FkYSBzZW1hbmEgZGV2ZW1vcyBhdWRpdGFyIGUgY29uZmlndXJhciBvcyAzIGNhbmRpZGF0b3Mgw6AgZWxpbWluYcOnw6NvIHBhcmEgcXVlIG8gdXN1w6FyaW8gcG9zc2EgZXNjb2xoZXIgZW0gcXVhbCBwYXJ0aWNpcGFudGUgcmVtYW5lc2NlbnRlIGRvIHByb2dyYW1hIGVsZSBkZXNlamEgdm90YXIuCgpBIGNhZGEgc2VtYW5hLCBvIHBhcnRpY2lwYW50ZSBxdWUgb2J0aXZlciBvIG1haW9yIHBlcmNlbnR1YWwgZGUgdm90b3Mgw6kgZWxpbWluYWRvIGRvIHByb2dyYW1hLgoKPC9kaXY+Cjxicj4KPGJyPgoKPGRpdiBpZD0idGVjbm9sb2dpYXMiPgo8aDI+IPCfm6AgVGVjbm9sb2dpYXMgPC9oMj4KQXMgc2VndWludGVzIGZlcnJhbWVudGFzIGZvcmFtIHVzYWRhcyBuYSBjb25zdHJ1w6fDo28gZG8gcHJvamV0bzo8YnI+PGJyPgogICAgCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcG8gICAgICAgICAgICAgIHwgRmVycmFtZW50YXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZlcsOqbmNpYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOiB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTogfAp8ICAgICAgICAgICAgICAgICAgICBCYW5jbyBkZSBEYWRvcyBOw6NvLVJlbGFjaW9uYWwgICAgICAgfCAgIE1PTkdPREIgICAgIHwgICAgICAgICAgICAgIGh0dHBzOi8vd3d3Lm1vbmdvZGIuY29tL3RyeS9kb3dubG9hZC9jb21tdW5pdHkgICAgICAgICAgICAgICAgICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICBSb2JvIDNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBST0JPIDNUICAgICAgfCAgICAgICAgICAgICBodHRwczovL3JvYm9tb25nby5vcmcvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgICAgICBGcmFtZXdvcmsgSmF2YSBTcHJpbmcgQm9vdCAtIGNvbnN0cnXDp8OjbyBkbyBCYWNrLWVuZCAgICAgICB8ICAgIFNQUklORyBCT09UICAgICAgIHwgICAgICAgICAgICAgICBodHRwczovL3N0YXJ0LnNwcmluZy5pby8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgICAgICBBUEkgRG9jdW1lbnRhdGlvbiBMaWJyYXJ5IGZvciBTcHJpbmcgQm9vdCAgICAgICB8ICAgIE9QRU5BUEkgMyAgICAgICB8ICAgICAgICAgICAgICBodHRwczovL3NwcmluZ2RvYy5vcmcvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAKfCAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1ld29yayBBcGFjaGUgS0FGS0EgICAgICAgICAgICAgICAgICAgICB8IEtBRktBICAgfCAgICAgICAgICAgICAgaHR0cHM6Ly9rYWZrYS5hcGFjaGUub3JnLyAgICAgICAgfCAgICAKfCAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZXcgYW5kIG1hbmFnaW5nIG9iamVjdHMgYSBBcGFjaGUgS0FGS0EgICAgICAgICB8ICAgICBPRkZTRVQgRVhQTE9SRVIgICAgICAgICAgIHwgICAgICAgICAgICAgIGh0dHBzOi8va2Fma2F0b29sLmNvbS8gICAgICAgICB8ICAgIAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9ja2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICBET0NLRVIgICAgICAgICAgfCAgICAgICAgICAgICAgIGh0dHBzOi8vaHViLmRvY2tlci5jb20vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgCnwgICAgICAgICAgICAgIEFQSSBSRVNUZnVsIHVzaW5nIEpTT04gLSBTd2FnZ2VyIFVJICAgICAgICAgICB8ICAgU1dBR0dFUiAgICAgfCAgICAgICAgICAgICAgIGh0dHBzOi8vc3dhZ2dlci5pby8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgCnwgICAgICAgICAgICAgIEZyYW1ld29yayBBbmd1bGFyIC0gY29uc3RydcOnw6NvIGRhIEFQSSB3ZWIgICAgICAgICAgIHwgIEFOR1VMQVIgICAgICAgfCAgICAgICAgICAgICAgaHR0cHM6Ly9hbmd1bGFyLmlvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAKPGJyPgo8ZGl2IGFsaWduID0gJ2NlbnRlcic+CiAgICA8aDM+QmFja2VuZDwvaDM+CiAgICA8aW1nIGFsaWduPSdjZW50ZXInIHdpZHRoID0nIDgwcHggJyBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9kZXZpY29ucy9kZXZpY29uL2ljb25zL21vbmdvZGIvbW9uZ29kYi1vcmlnaW5hbC5zdmciIC8+CiAgICA8aW1nIGFsaWduPSdjZW50ZXInIHdpZHRoID0nIDgwcHggJyBzcmM9Ii4vcHJvamVjdC9sb2dvcy9yb2JvbW9uZ28tM1QucG5nIiAvPgogICAgPGltZyBhbGlnbj0nY2VudGVyJyB3aWR0aCA9JyA4MHB4ICcgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvZGV2aWNvbnMvZGV2aWNvbi9pY29ucy9zcHJpbmcvc3ByaW5nLW9yaWdpbmFsLnN2ZyIgLz4KICAgIDxpbWcgYWxpZ249J2NlbnRlcicgd2lkdGggPScgMjUwcHggJyBzcmM9Ii4vcHJvamVjdC9sb2dvcy9vcGVuQVBJMy5wbmciIC8+CiAgICA8aW1nIGFsaWduPSdjZW50ZXInIHdpZHRoID0nIDI1MHB4ICcgc3JjPSIuL3Byb2plY3QvbG9nb3Mvc3dhZ2dlcl9sb2dvLnN2ZyIgLz4KICAgIDxicj48YnI+CiAgICA8aDM+SW5mcmFlc3RydXR1cmE8L2gzPgogICAgPGltZyBhbGlnbj0nY2VudGVyJyB3aWR0aCA9JyA4MHB4ICcgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvZGV2aWNvbnMvZGV2aWNvbi9pY29ucy9hcGFjaGVrYWZrYS9hcGFjaGVrYWZrYS1vcmlnaW5hbC5zdmciIC8+CiAgICA8aW1nIGFsaWduPSdjZW50ZXInIHdpZHRoID0nIDgwcHggJyBzcmM9Imh0dHBzOi8vc3RhdGljLm1hY3VwZGF0ZS5jb20vcHJvZHVjdHMvNTM1MzIvbS9vZmZzZXQtZXhwbG9yZXItbG9nby5wbmc/dj0xNjMzMzQ5NTQwIiAvPgogICAgPGltZyBhbGlnbj0nY2VudGVyJyB3aWR0aCA9JyAxMDBweCAnIHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL2Rldmljb25zL2Rldmljb24vaWNvbnMvZG9ja2VyL2RvY2tlci1vcmlnaW5hbC5zdmciIC8+CiAgICA8YnI+PGJyPgogICAgPGgzPkZyb250ZW5kPC9oMz4KICAgIDxpbWcgYWxpZ249J2NlbnRlcicgd2lkdGggPScgODBweCAnIHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL2Rldmljb25zL2Rldmljb24vaWNvbnMvYW5ndWxhcmpzL2FuZ3VsYXJqcy1vcmlnaW5hbC5zdmciIC8+CiAgICA8YnI+CjwvZGl2Pgo8YnI+Cgo8ZGl2IGlkPSJwZXJjdXJzbyI+CjxoMj4g8J+UjiBQZXJjdXJzbyA8L2gyPgoKPG9sPgogICAgPGxpPlBhcnRlIDEgLSBDb25maWd1cmFuZG8vcHJlcGFyYW5kbyBhbWJpZW50ZSAoSW5mcmFlc3RydXR1cmEpCiAgICAgIDx1bD4KICAgICAgICA8bGk+SW5zdGFsYXIgQXBhY2hlIEthZmthLCBSb2JvIDNULCBJbnRlbGxpSiwgVlMgQ29kZSwgRG9ja2VyIERlc2t0b3A8L2xpPgogICAgICAgIDxsaT5BYnJpciBlIGxvZ2FyIG8gRG9ja2VyIERlc2t0b3A8L2xpPgogICAgICAgIDxsaT5BYnJpciBvIFZTIENvZGU8L2xpPgogICAgICAgIDxsaT5Db25maWd1cmFyIHVtYSBwYXN0YSBEb2NrZXIsIGNvbSBhcyBzdWJwYXN0YXMgS2Fma2EgZSBNb25nb0RCPC9saT4KICAgICAgICA8bGk+Q3JpYXIgb3MgYXJxdWl2b3MgZGUgY29uZmlndXJhw6fDo28gKGRvY2tlci1jb21wb3NlLnltbCkgZW0gY2FkYSBzdWJwYXN0YSBjcmlhZGE8L2xpPgogICAgICAgIDwhLS0gQ29tYW5kbyBkb2NrZXItY29tcG9zZSB1cCAtZCAobyAtZCDDqSBwYXJhIHN1YmlyIG8gc2Vydmlkb3IgZW0gMsK6IHBsYW5vKSAtLT4KICAgICAgICA8bGk+RW50cmFyIGVtIGNhZGEgc3VicGFzdGEgY3JpYWRhIGUgc3ViaXIgbyBzZXJ2acOnbyBwYXJhIG8gRG9ja2VyIChkb2NrZXItY29tcG9zZSB1cCAtZCk8L2xpPgogICAgICA8L3VsPgogICAgPC9saT4KICAgIDxicj4KICAgIDxsaT5QYXJ0ZSAyIC0gTW9kZWxhbmRvIG8gcHJvamV0byBubyBEcmF3SU88L2xpPgogICAgPGJyPgogICAgPGxpPlBhcnRlIDMgLSBDcmlhbmRvIGJhY2stZW5kIGNvbSBKYXZhIFNwcmluZyBCb290CiAgICAgIDx1bD4KICAgICAgICA8bGk+QWJyaXIgbyBTcHJpbmcgSW5pdGlhbGl6ciBlIGNvbmZpZ3VyYXIgbyBTcHJpbmcgQm9vdDwvbGk+CiAgICAgICAgPGxpPkdlcmFyIG8gYXJxdWl2byBTcHJpbmcgQm9vdCBlIGFicmlyIG5vIEludGVsbGlKPC9saT4KICAgICAgICA8bGk+VmVyaWZpY2FyIGFzIGRlcGVuZMOqbmNpYXMgYSBzZXJlbSB1c2FkYXMgZSBjb25maWd1cmFyIG8gTWF2ZW48L2xpPgogICAgICAgIDxsaT5GYXplciBhcnF1aXZvIGRlIGNvbmZpZ3VyYcOnw6NvIGRlIGFjZXNzbyBhbyBNb25nb0RCIGUgYW8gc2Vydmlkb3IgQXBhY2hlIEthZmthPC9saT4KICAgICAgICA8bGk+UG92b2FyIG1lY2FuaWNhbWVudGUgbyBNb25nb0RCIGNvbSBhbGd1bnMgcGFydGljaXBhbnRlcyBkbyBCQkIsIGluY2x1aW5kbyBvIGlkIChhcnF1aXZvIEpTT04pPC9saT4KICAgICAgICA8bGk+Q29uc3RydWlyIGEgQVBJIGVtIEphdmEgU3ByaW5nIEJvb3QgLSBjbGFzc2VzLCBvYmpldG9zLCBkYXRhcyBlIGludGVyZmFjZXM8L2xpPgogICAgICAgIDxsaT5DcmlhciBhIGVzdHJ1dHVyYSBkbyBtaWNyb3NzZXJ2acOnbyBlbSBKYXZhIFNwcmluZyBCb290IC0gY2xhc3Nlcywgb2JqZXRvcywgZGF0YXMgZSBpbnRlcmZhY2VzPC9saT4KICAgICAgICA8bGk+SW1wb3J0YXIgbyBtaWNyb3NzZXJ2acOnbyBuYSBtZXNtYSBwYXN0YSBkYSBBUEksIG5vIEludGVsbGlKPC9saT4KICAgICAgICA8bGk+Q29uc3RydWlyIGFzIGNsYXNzZXMsIGRhdGFzLCBvYmpldG9zIGUgaW50ZXJmYWNlcyBwYXJhIG8gbWljcm9zc2VydmnDp288L2xpPgogICAgICAgIDxsaT5CdWlsZGFyIG9zIGFycXVpdm9zIHByaW5jaXBhaXMgZGEgQVBJIGUgZG8gbWljcm9zc2VydmnDp288L2xpPgogICAgICAgIDxsaT5UZXN0YXIgYXMgcm90YXMgbm8gUG9zdG1hbgogICAgICAgIFJvdGEgUE9TVCAKICAgICAgICBVUkw6IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvcGFyYW1ldHJvcy9zYWx2YXIKICAgICAgICBBYmEgQk9EWToKICAgICAgICBKU09OID0KICAgICAgICB7CiAgICAgICAgICAiY2hhdmUiOiAiY29uZmlnLnZvdGFjYW8iLAogICAgICAgICAgInZhbG9yIjogIjMiCiAgICAgICAgfQogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGJyPgogICAgPGxpPlBhcnRlIDQgLSBDcmlhbmRvIEFQSSB3ZWIgY29tIEFuZ3VsYXIKICAgICAgPHVsPgogICAgICAgIDxsaT5Ob3ZvIHByb2pldG86IG5nIG5ldyBub21lUHJvamV0byA8L2xpPgogICAgICAgIDxsaT5JbmljaWFuZG8gcHJvamV0bzogbmcgc2VydmVyIC0tb3BlbiA8L2xpPgogICAgICAgIDxsaT5Ob3ZvIGNvbXBvbmVudGU6IG5nIGdlbmVyYXRlIGNvbXBvbmVudCBub21lQ29tcG9uZW50ZSA8L2xpPgogICAgICAgIDxsaT5DcmlhciBpbnRlcmZhY2U6IHNyYy9hcHAvbW9kZWwvcGFydGljaXBhbnRlLnRzPC9saT4KICAgICAgICA8bGk+Q3JpYW5kbyByb3RhOiBuZyBnZW5lcmF0ZSBtb2R1bGUgYXBwLXJvdXRpbmcgLS1mbGF0IC0tbW9kdWxlPWFwcDwvbGk+CiAgICAgICAgPGxpPkltcG9ydGFyIEh0dHBDbGllbnRNb2R1bGUgZW0gYXBwLm1vZHVsZS50cyBbcGFydGUgZGUgaW1wb3J0c108L2xpPgogICAgICAgIDxsaT5DcmlhciBzZXJ2acOnbzogc3JjL2FwcC9zZXJ2aWNlL1Jlc3RTZXJ2aWNlLnRzPC9saT4KICAgICAgICA8bGk+QWRkIEBDcm9zc09yaWdpbiBlbSBQYXJ0aWNpcGFudGVDb250cm9sbGVyLmphdmEgZSBWb3RhY2FvQ29udHJvbGxlci5qYXZhPC9saT4KICAgICAgICA8bGk+SW1wbGVtZW50YXIgYXMgcm90YXM8L2xpPgogICAgICA8L3VsPgogICAgPC9saT4KICAgIDxicj4KICAgIDxsaT5QYXJ0ZSA1IC0gSW50ZWdyYW5kbyBiYWNrLWVuZC9mcm9udC1lbmQgZSBhY2Vzc2FuZG8gZGFkb3M8L2xpPiAgCjwvb2w+CjwvZGl2Pgo8YnI+Cjxicj4K readmeEtag: '"af7be61366a762908a1aea98766dd02d3d9d82c8"' readmeLastModified: Fri, 16 Sep 2022 15:01:33 GMT repositoryId: 485125297 description: Online Votation System of Big Brother Brazil 22 (2022) created: '2022-04-24T19:51:31Z' updated: '2023-03-04T01:45:55Z' language: TypeScript archived: false stars: 1 watchers: 1 forks: 0 owner: alexandrecpedro logo: https://avatars.githubusercontent.com/u/80993336?v=4 repoEtag: '"1dd8cf3d7ed56c6605727b2de356e3fc2089e58c815bce472c6982d525356c5b"' repoLastModified: Sat, 04 Mar 2023 01:45:55 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/dongyaoo/kes v3: true id: b0830cc10323f7974be6d41b91361c83 repositoryMetadata: base64Readme: >- IyDnn6Xor4bmir3lj5bns7vnu58KCuacrOezu+e7n+WfuuS6jltBbnQgRGVzaWduIFByb10oaHR0cHM6Ly9wcm8uYW50LmRlc2lnbikuIOS7peS4i+Wwj+iKguWwhuS7i+e7jeWmguS9leS9v+eUqOacrOezu+e7ny4KCiMjIOeOr+Wig+mFjee9rgoK6ZSu5YWl5Lul5LiL5ZG95Luk5a6J6KOF56ys5LiJ5pa55L6d6LWW5bqTIGBub2RlX21vZHVsZXNgOgoKYGBgYmFzaApucG0gaW5zdGFsbApgYGAKCuaIluiAhQoKYGBgYmFzaAp5YXJuCmBgYAoKIyMg6aG555uu6ISa5pys5ZG95LukCgrmnKzpobnnm67ln7rkuo4gQW50IERlc2lnbiBQcm/vvIzlm6DmraTlpI3nlKjkuoYgQW50ZFBybyDohJrmnKzlkb3ku6TjgILor6bmg4Xlj6/mn6XnnIsgYHBhY2thZ2UuanNvbmDjgIIKCiMjIyDlkK/liqjns7vnu58KCmBgYGJhc2gKbnBtIHN0YXJ0CmBgYAoKIyMjIOaehOW7uumhueebrgoKYGBgYmFzaApucG0gcnVuIGJ1aWxkCmBgYAoKIyMjIOajgOafpeS7o+eggemjjuagvAoKYGBgYmFzaApucG0gcnVuIGxpbnQKYGBgCgrkvaDkuZ/lj6/ku6XplK7lhaXku6XkuIvlkb3ku6Toh6rliqjkv67lpI3kuIDkupvpo47moLzplJnor6/vvJoKCmBgYGJhc2gKbnBtIHJ1biBsaW50OmZpeApgYGAKCiMjIyDmtYvor5UKCmBgYGJhc2gKbnBtIHRlc3QKYGBgCgojIyDmm7TlpJoKCuabtOWkmiBBUEkg55So5rOV5Y+v5Y+C6ICDIEFudGRQcm8g55qEW+WumOaWueaWh+aho10oaHR0cHM6Ly9wcm8uYW50LmRlc2lnbinjgIIK readmeEtag: '"468ec960c70bb5c424c32c572851399459953f2b"' readmeLastModified: Wed, 04 May 2022 01:08:15 GMT repositoryId: 488405193 description: 知识抽取系统 created: '2022-05-04T00:35:09Z' updated: '2022-05-04T05:55:52Z' language: TypeScript archived: false stars: 1 watchers: 1 forks: 0 owner: dongyaoo logo: https://avatars.githubusercontent.com/u/62202550?v=4 repoEtag: '"55e6bffb3b205dd4fc80af5d0e14f6c840b7be1506e305b3cc451e28e8c3188e"' repoLastModified: Wed, 04 May 2022 05:55:52 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/mmuzammil196/gradadmit-ann-predictor v3: true id: a33ba8d19e2c210216e331c8c7697aff repositoryMetadata: base64Readme: >- IVtNTklTVCBIYW5kd3JpdHRlbiBEaWdpdCBSZWNvZ25pdGlvbiB1c2luZyBBTk5dKGh0dHBzOi8vZ2l0aHViLmNvbS9tbXV6YW1taWwxOTYvR3JhZEFkbWl0LUFOTi1QcmVkaWN0b3IvYXNzZXRzLzc3Mzg5MDQwLzIxMTA5ZmM4LWQ4ODktNDg1MS05YWNlLTM2OGRhZGQwM2QzYykKCiJVbmxvY2sgeW91ciBmdXR1cmUgd2l0aCBHcmFkQWRtaXQtQU5OLVByZWRpY3RvciEg8J+agPCfjq8iCgpUaGlzIHByb2plY3QsIEdyYWRBZG1pdC1BTk4tUHJlZGljdG9yLCBmb2N1c2VzIG9uIHByZWRpY3RpbmcgdGhlIGxpa2VsaWhvb2Qgb2YgYWRtaXNzaW9uIHRvIGEgZ3JhZHVhdGUgcHJvZ3JhbSB1c2luZyBhbiBBcnRpZmljaWFsIE5ldXJhbCBOZXR3b3JrIChBTk4pIGFsZ29yaXRobS4gQnkgdHJhaW5pbmcgdGhlIG1vZGVsIG9uIGEgZGF0YXNldCBjb250YWluaW5nIHZhcmlvdXMgcGFyYW1ldGVycyBzdWNoIGFzIEdSRSBzY29yZXMsIFRPRUZMIHNjb3JlcywgdW5pdmVyc2l0eSByYXRpbmdzLCBhbmQgbGV0dGVyIG9mIHJlY29tbWVuZGF0aW9uIHN0cmVuZ3Rocywgd2Ugd2VyZSBhYmxlIHRvIGFjaGlldmUgYW4gYWNjdXJhY3kgb2YgODAlIGluIHByZWRpY3RpbmcgYWRtaXNzaW9ucyBvdXRjb21lcy4K readmeEtag: '"998599b81d809ec08f7a387054d7b1f18fee4487"' readmeLastModified: Mon, 05 Jun 2023 19:18:00 GMT repositoryId: 649848514 description: >- This project, GradAdmit-ANN-Predictor, focuses on predicting the likelihood of admission to a graduate program using an Artificial Neural Network (ANN) algorithm. created: '2023-06-05T19:15:46Z' updated: '2023-06-06T16:33:48Z' language: Jupyter Notebook archived: false stars: 1 watchers: 1 forks: 0 owner: mmuzammil196 logo: https://avatars.githubusercontent.com/u/77389040?v=4 repoEtag: '"75d53639048bc23a35d49d41edbe1cf3264ed669c7ea96dbf6975f5cb40272f7"' repoLastModified: Tue, 06 Jun 2023 16:33:48 GMT category: Testing foundInMaster: true - source: openapi3 tags repository: https://github.com/abhishekb91/petstore-openapi3 v3: true repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPgogICAgUGV0c3RvcmUtT3BlbmFwaTMKPC9oMT4KCjxwIGFsaWduPSJjZW50ZXIiPgogIDxzdHJvbmc+Q3JlYXRpbmcgSFRUUCBBUEkgdXNpbmcgZ29sYW5nIGluIG9wZW5hcGkzIHN0YW5kYXJkPC9zdHJvbmc+PGJyPgo8L3A+CgojIyBDb250ZW50cwotIFtHZXR0aW5nIHN0YXJ0ZWRdKCNnZXR0aW5nLXN0YXJ0ZWQpCi0gW0RldmVsb3BtZW50XSgjZGV2ZWxvcG1lbnQpCgojIyBHZXR0aW5nIHN0YXJ0ZWQKVGhlIGludGVudCBvZiB0aGlzIHNhbXBsZSBwcm9qZWN0IGlzIHRvIGRlbW9uc3RyYXRlIHRoZSB1c2FnZSBvZiB2YXJpb3VzIHRvb2xzIHRvIGNyZWF0ZSB3ZWJhcGlzIHVzaW5nIG9wZW5hcGkgMyBzdGFuZGFyZC4gVGhpcyBwcm9qZWN0IHVzZXM6Ci0gW29hcGktY29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL2RlZXBtYXAvb2FwaS1jb2RlZ2VuKSB0byBnZW5lcmF0ZSBzZXJ2ZXIgc3R1YnMKLSBbc3dhZ2dlci11aV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkpIHRvIGRpc3BsYXkgdGhlIGFwaSBkb2N1bWVudAotIFtlY2hvXShodHRwczovL2dpdGh1Yi5jb20vbGFic3RhY2svZWNobykgYXMgSFRUUCByb3V0aW5nIGVuZ2luZQotIFtzdGF0aWtdKGh0dHBzOi8vZ2l0aHViLmNvbS9yYWt5bGwvc3RhdGlrKSB0byBjb21waWxlIHN0YXRpYyBmaWxlcyBpbnRvIGEgR28gYmluYXJ5Ci0gW21vY2tlcnldKGh0dHBzOi8vZ2l0aHViLmNvbS92ZWt0cmEvbW9ja2VyeSkgdG8gZ2VuZXJhdGUgbW9ja3MgZnJvbSBpbnRlcmZhY2VzCgojIyMgUHJlcmVxdWlzaXRlCi0gbG9jYWwgZ29sYW5nIGluc3RhbGxhdGlvbgotIE15U1FMIERhdGFiYXNlLiBVc2UgTWFrZWZpbGUgdG8gZ2VuZXJhdGUgTXlTUUwgY29udGFpbmVyIGxvY2FsbHkuCgojIyBEZXZlbG9wbWVudAoKLSBTdGFydGluZyBBcHBsaWNhdGlvbgoKICBUaGUgc2VydmljZSBleHBlY3RzIGRhdGFiYXNlIGNvbm5lY3Rpb24gdG8gYmUgcGFzc2VkIGFzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLiBJbiBvcmRlciB0byBtYWtlIGxvY2FsIGRldiBlYXN5LCB0aGVyZSBhcmUgdHdvIG9wdGlvbnMgZnJvbSB3aGljaCBvbmUgY2FuIHJ1biB0aGUgc2VydmljZToKCiAgLSBGcm9tIFZpc3VhbCBTdHVkaW8gQ29kZToKICAgIEluIG9yZGVyIHRvIGRlYnVnIHRoZSBzZXJ2aWNlLCBvbmUgY2FuIHJ1biB0aGUgc2VydmljZSBkaXJlY3RseSBmcm9tIHRoZSBWaXN1YWwgU3R1ZGlvIENvZGUgYERlYnVnIGFuZCBSdW5gID4gYExhdW5jaGAgYW5kIGFkZCBicmVha3BvaW50cwoKICAtIFVzaW5nIE1ha2VmaWxlOgogICAgRnJvbSB0aGUgcHJvamVjdCBSb290OgoKICAgIGBgYGJhc2gKICAgIG1ha2Ugc3RhcnRfc2VydmljZQogICAgYGBgCgotIEFQSSBFbmQtcG9pbnRzCgogIGBgYAogIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9kb2NzLwogIGBgYAoKLSBSdW5uaW5nIFVuaXQgVGVzdHMKICBgYGBiYXNoCiAgZ28gdGVzdCAuLy4uLgogIGBgYA== readmeEtag: '"154d584327b09797c02d12c881e3a7b06acb43b3"' readmeLastModified: Sun, 23 May 2021 03:55:43 GMT repositoryId: 354568182 description: Creating HTTP API using golang in openapi3 standard created: '2021-04-04T14:43:43Z' updated: '2024-02-28T14:37:13Z' language: Go archived: false stars: 1 watchers: 1 forks: 1 owner: abhishekb91 logo: https://avatars.githubusercontent.com/u/11881672?v=4 license: MIT repoEtag: '"3a855b858c659bdf0d960524b9e73dd8a19ee7961454aebf1d5ef5ea0dd73d4f"' repoLastModified: Wed, 28 Feb 2024 14:37:13 GMT foundInMaster: true category: - Code Generators - Server Implementations id: 6cf4808a04d7c970f29d5ef9209dff6f - source: openapi3 tags repository: https://github.com/godpeny/goserv v3: true repositoryMetadata: base64Readme: >- IyBHT1NFUlYKc2VydmVyIHRlbXBsYXRlIGluIEdPCgojIyBSdW4gQVBJIFNlcnZlcgpnbyBydW4gY21kL2dvc2Vydi1hcGkvbWFpbi5nbwoKIyMgUnVuIERCIFNlcnZlcgpnbyBydW4gY21kL2dvc2Vydi1kYi9tYWluLmdvCgojIyBSdW4gUmFiYml0IE1RIHdpdGggRG9ja2VyCmBgYApkb2NrZXIgcnVuIC0tcm0gLWQgLS1uYW1lIHJhYmJpdG1xIC1wIDU2NzI6NTY3MiAtcCAxNTY3MjoxNTY3MiAgLWUgUkFCQklUTVFfREVGQVVMVF9VU0VSPWFkbWluIC1lIFJBQkJJVE1RX0RFRkFVTFRfUEFTUz1hZG1pbiByYWJiaXRtcTozLW1hbmFnZW1lbnQKYGBgCgojIyBHZW5lcmF0aW5nIENvZGUKdXNpbmcgb3BlbmFwaS1nZW5lcmF0b3IgNS4wLjAtYmV0YTMKCiMjIyBBUEkgU2VydmVyCmBgYApqYXZhIC1qYXIgLi9hcGkvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBnZW5lcmF0ZSAtaSAuL2FwaS9zd2FnZ2VyLXNlcnZlci55YW1sIC1nIGdvLWdpbi1zZXJ2ZXIgLW8gLi9pbnRlcm5hbC9nb3NlcnYtYXBpIC0tcGFja2FnZS1uYW1lIGFwaQpgYGAKCiMjIyBBUEkgQ2xpZW50IChzYW1wbGUpCmBgYApqYXZhIC1qYXIgLi9hcGkvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBnZW5lcmF0ZSAtaSAuL2FwaS9zd2FnZ2VyLWNsaWVudC55YW1sIC1nIGdvIC1vIC4vaW50ZXJuYWwvY2xpZW50cy9zYW1wbGUgLS1wYWNrYWdlLW5hbWUgY2xpZW50CmBgYApVc2UgYGBhcGkvY29kZ2VuLXNlcnZlci5nb2BgIHRvIGNyZWF0ZSBgYHN3YWdnZXItc2VydmVyLnlhbWxgYAoKIyMjIERCIFNjaGVtYSBmb3IgZW50CmBgYApnbyBydW4gZ2l0aHViLmNvbS9mYWNlYm9vay9lbnQvY21kL2VudCBpbml0ICR7eW91ci1uZXctc2NoZW1hfSAKYGBgCgplZGl0IGBgPHlvdXItbmV3LXNjaGVtYT5gYC4gaW5pdGlhbGx5IGBgVXNlcmBgLGBgUHJvamVjdGBgIFNjaGVtYSBpcyBzZXQgOikKCmBgYApnbyBnZW5lcmF0ZSAuL2VudApgYGAK readmeEtag: '"c41cfac12eda351a04820649724035488e53fc5a"' readmeLastModified: Thu, 28 Jan 2021 13:40:14 GMT repositoryId: 318779942 description: Go Server Template using Rabbit MQ in Micro Service Architecture created: '2020-12-05T12:14:32Z' updated: '2024-09-09T14:48:25Z' language: Go archived: false stars: 1 watchers: 1 forks: 0 owner: godpeny logo: https://avatars.githubusercontent.com/u/37652215?v=4 repoEtag: '"61299322825ac5dd34e2d1720fbd11c2e15ea2656108b12bee7c797d4531838a"' repoLastModified: Mon, 09 Sep 2024 14:48:25 GMT foundInMaster: true category: Code Generators id: 6ea98c8b537f8f13c141dd1ddc5eba2d - source: openapi3 tags repository: https://github.com/stephane-segning/rust-open-api-cli v3: true id: b2032686c1e369c2705519bad664f933 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpX2NsaQoKb3BlbmFwaV9jbGkgaXMgYSBSdXN0LWJhc2VkIGNvbW1hbmQtbGluZSB0b29sIGZvciBnZW5lcmF0aW5nIGNvZGUgZnJvbSBPcGVuQVBJIHNwZWNpZmljYXRpb25zLiBJdCBwcm92aWRlcyBhIHNpbXBsZSB3YXkgdG8gZG93bmxvYWQgdGhlIE9wZW5BUEkgZ2VuZXJhdG9yIGFuZCB0aGVuIGdlbmVyYXRlIGNvZGUgaW4gYSBzcGVjaWZpZWQgbGFuZ3VhZ2UuCgojIyBGZWF0dXJlcwotIERvd25sb2FkcyB0aGUgT3BlbkFQSSBnZW5lcmF0b3IgQ0xJIGlmIGl0J3Mgbm90IGFscmVhZHkgcHJlc2VudAotIEdlbmVyYXRlcyBjb2RlIGluIGEgc3BlY2lmaWVkIGxhbmd1YWdlIGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZpbGUKLSBQcm92aWRlcyBhIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgZm9yIGVhc3kgdXNhZ2UKCiMjIFByZXJlcXVpc2l0ZXMKLSBSdXN0IHByb2dyYW1taW5nIGxhbmd1YWdlIChZb3UgY2FuIGluc3RhbGwgUnVzdCBmcm9tIFtoZXJlXShodHRwczovL3J1c3R1cC5ycy8pKQotIEphdmEgRGV2ZWxvcG1lbnQgS2l0IChKREspCgojIyBJbnN0YWxsYXRpb24KCmBgYGJhc2gKJCBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3N0ZXBoYW5lLXNlZ25pbmcvcnVzdC1vcGVuLWFwaS1jbGkuZ2l0CiQgY2QgcnVzdC1vcGVuLWFwaS1jbGkKJCBjYXJnbyBidWlsZCAtLXJlbGVhc2UKYGBgCgpUaGUgZXhlY3V0YWJsZSB3aWxsIGJlIGxvY2F0ZWQgaW4gdGhlICoqdGFyZ2V0L3JlbGVhc2UqKiBkaXJlY3RvcnkuCgojIyBVc2FnZQoKVG8gdXNlIHRoZSBhcHBsaWNhdGlvbiwgcnVuIHRoZSBjb21tYW5kIGJlbG93IGZyb20gdGhlIGNvbW1hbmQgbGluZToKCmBgYGJhc2gKJCAuL3RhcmdldC9yZWxlYXNlL29wZW5hcGlfY2xpIGdlbmVyYXRlIC12IDx2ZXJzaW9uPiAtaSA8aW5wdXQ+IC1vIDxvdXRwdXQ+IC1sIDxsYW5ndWFnZT4KYGBgCgpSZXBsYWNlIDx2ZXJzaW9uPiB3aXRoIHRoZSB2ZXJzaW9uIG9mIE9wZW5BUEkgZ2VuZXJhdG9yIENMSSwgYDxpbnB1dD5gIHdpdGggdGhlIHBhdGggdG8geW91ciBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZSwgPG91dHB1dD4gd2l0aCB0aGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBnZW5lcmF0ZWQgY29kZSBzaG91bGQgYmUgc2F2ZWQsIGFuZCA8bGFuZ3VhZ2U+IHdpdGggdGhlIHRhcmdldCBsYW5ndWFnZSBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlLgoKIyMgQ29udHJpYnV0aW5nCgpQdWxsIHJlcXVlc3RzIGFyZSB3ZWxjb21lLiBGb3IgbWFqb3IgY2hhbmdlcywgcGxlYXNlIG9wZW4gYW4gaXNzdWUgZmlyc3QgdG8gZGlzY3VzcyB3aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGNoYW5nZS4KClBsZWFzZSBtYWtlIHN1cmUgdG8gdXBkYXRlIHRlc3RzIGFzIGFwcHJvcHJpYXRlLgoKIyMgTGljZW5zZQoKW01JVF0oaHR0cHM6Ly9jaG9vc2VhbGljZW5zZS5jb20vbGljZW5zZXMvbWl0Lyk= readmeEtag: '"dd6bc2d38426becedbea93511f0c9c5b9366d6fc"' readmeLastModified: Sat, 22 Jul 2023 22:07:26 GMT repositoryId: 669529638 description: >- openapi_cli is a Rust-based command-line tool for generating code from OpenAPI specifications created: '2023-07-22T15:19:39Z' updated: '2025-06-03T09:55:57Z' language: Rust archived: false stars: 1 watchers: 1 forks: 1 owner: stephane-segning logo: https://avatars.githubusercontent.com/u/26783557?v=4 repoEtag: '"84d3dfd14b0617ddf75f4dfa4bc171077741b4317cea529e3587560689434132"' repoLastModified: Tue, 03 Jun 2025 09:55:57 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/refactorian/openapi-swagger-docker v3: true id: b94b2f4c4f7b8e91b61770c90e60f505 repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+PGltZyBzcmM9Imh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy93cC1jb250ZW50L3VwbG9hZHMvc2l0ZXMvMy8yMDE2LzEwL09wZW5BUElfUGFudG9uZS5wbmciIHdpZHRoPSI1MDAiPjwvcD4KCiMgT3BlbkFQSSwgU3dhZ2dlciwgRG9ja2VyCi0gT3BlbkFQSSB2My54Ci0gU3dhZ2dlciBVSSB2NS54Ci0gU3dhZ2dlciBFZGl0b3IgdjQueAotIFJlZG9jIHYyLngKCiMgUmVxdWlyZW1lbnRzCi0gU3RhYmxlIHZlcnNpb24gb2YgW0RvY2tlcl0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL2luc3RhbGwvKQotIENvbXBhdGlibGUgdmVyc2lvbiBvZiBbRG9ja2VyIENvbXBvc2VdKGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2NvbXBvc2UvaW5zdGFsbC8jaW5zdGFsbC1jb21wb3NlKQoKIyBIb3cgVG8gRGVwbG95Ci0gYGRvY2tlciBjb21wb3NlIHVwIC1kYAoKIyBOb3RlcwoKIyMjIFN3YWdnZXIgVUkgKERvY2tlcikKLSBVUkw6IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MAoKIyMjIEdpdEh1YiBQYWdlcwotIFN3YWdnZXIgVUk6IGh0dHBzOi8vcmVmYWN0b3JpYW4uZ2l0aHViLmlvL29wZW5hcGktc3dhZ2dlci1kb2NrZXIKLSBTd2FnZ2VyIEVkaXRvcjogaHR0cHM6Ly9yZWZhY3Rvcmlhbi5naXRodWIuaW8vb3BlbmFwaS1zd2FnZ2VyLWRvY2tlci9lZGl0b3IKLSBSZWRvYzogaHR0cHM6Ly9yZWZhY3Rvcmlhbi5naXRodWIuaW8vb3BlbmFwaS1zd2FnZ2VyLWRvY2tlci9yZWRvYwoKIyMjIERvY2tlciBjb21wb3NlIGNvbW1hbmRzCi0gQnVpbGQgb3IgcmVidWlsZCBzZXJ2aWNlcwogICAgLSBgZG9ja2VyIGNvbXBvc2UgYnVpbGRgCi0gQ3JlYXRlIGFuZCBzdGFydCBjb250YWluZXJzCiAgICAtIGBkb2NrZXIgY29tcG9zZSB1cCAtZGAKLSBTdG9wIGFuZCByZW1vdmUgY29udGFpbmVycywgbmV0d29ya3MKICAgIC0gYGRvY2tlciBjb21wb3NlIGRvd25gCi0gU3RvcCBhbGwgc2VydmljZXMKICAgIC0gYGRvY2tlciBjb21wb3NlIHN0b3BgCi0gUmVzdGFydCBzZXJ2aWNlIGNvbnRhaW5lcnMKICAgIC0gYGRvY2tlciBjb21wb3NlIHJlc3RhcnRgCi0gUnVuIGEgY29tbWFuZCBpbnNpZGUgYSBjb250YWluZXIKICAgIC0gYGRvY2tlciBjb21wb3NlIGV4ZWMgW2NvbnRhaW5lcl0gW2NvbW1hbmRdYAoKCiMgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIEd1aWRlCgpUaGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIChPQVMpIGlzIGEgc3RhbmRhcmQsIGxhbmd1YWdlLW5ldXRyYWwgd2F5IHRvIGRlZmluZSB5b3VyIEFQSS4gSXQgaGVscHMgaHVtYW5zIGFuZCBjb21wdXRlcnMgZGlzY292ZXIgYW5kIHVuZGVyc3RhbmQgd2hhdCB5b3VyIHNlcnZpY2UgY2FuIGRvLCBhbGwgd2l0aG91dCBuZWVkaW5nIHRvIGxvb2sgYXQgdGhlIHNvdXJjZSBjb2RlIG9yIGRvY3VtZW50YXRpb24gb3IgaW5zcGVjdCBuZXR3b3JrIHRyYWZmaWMuIEFuIE9wZW5BUEkgZG9jdW1lbnQgaXMgYSBZQU1MIG9yIEpTT04gZmlsZSB0aGF0IG91dGxpbmVzIHRoZSBBUEnigJlzIGVuZHBvaW50cywgb3BlcmF0aW9ucywgaW5wdXQgYW5kIG91dHB1dCBwYXJhbWV0ZXJzLCByZXF1ZXN0IGFuZCByZXNwb25zZSBmb3JtYXRzLCBhdXRoZW50aWNhdGlvbiBtZXRob2RzLCBhbmQgbW9yZS4KCiMjIyBCYXNpYyBTdHJ1Y3R1cmUKCjEuICoqT3BlbkFQSSBWZXJzaW9uKioKICAgYGBgeWFtbAogICBvcGVuYXBpOiAzLjAuMAogICBgYGAKCjIuICoqSW5mbyBPYmplY3QqKgogICBgYGB5YW1sCiAgIGluZm86CiAgICAgdGl0bGU6IFNhbXBsZSBBUEkKICAgICBkZXNjcmlwdGlvbjogQVBJIGRlc2NyaXB0aW9uIGluIE1hcmtkb3duLgogICAgIHZlcnNpb246IDEuMC4wCiAgIGBgYAoKMy4gKipTZXJ2ZXJzIE9iamVjdCoqCiAgIGBgYHlhbWwKICAgc2VydmVyczoKICAgICAtIHVybDogaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEKICAgICAgIGRlc2NyaXB0aW9uOiBQcm9kdWN0aW9uIHNlcnZlcgogICBgYGAKCjQuICoqUGF0aHMgT2JqZWN0KioKICAgYGBgeWFtbAogICBwYXRoczoKICAgICAvdXNlcnM6CiAgICAgICBnZXQ6CiAgICAgICAgIHN1bW1hcnk6IFJldHVybnMgYSBsaXN0IG9mIHVzZXJzLgogICAgICAgICByZXNwb25zZXM6CiAgICAgICAgICAgJzIwMCc6CiAgICAgICAgICAgICBkZXNjcmlwdGlvbjogQSBKU09OIGFycmF5IG9mIHVzZXIgbmFtZXMKICAgICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgICAgc2NoZW1hOiAKICAgICAgICAgICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICAgICAgICAgICBpdGVtczoKICAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgIGBgYAoKIyMjIENvbXBvbmVudHMKCjEuICoqU2NoZW1hcyoqCiAgIGBgYHlhbWwKICAgY29tcG9uZW50czoKICAgICBzY2hlbWFzOgogICAgICAgVXNlcjoKICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgaWQ6CiAgICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICAgbmFtZToKICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICBgYGAKCjIuICoqUGFyYW1ldGVycyoqCiAgIGBgYHlhbWwKICAgY29tcG9uZW50czoKICAgICBwYXJhbWV0ZXJzOgogICAgICAgVXNlcklkOgogICAgICAgICBuYW1lOiB1c2VySWQKICAgICAgICAgaW46IHBhdGgKICAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICAgc2NoZW1hOgogICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgYGBgCgozLiAqKlJlc3BvbnNlcyoqCiAgIGBgYHlhbWwKICAgY29tcG9uZW50czoKICAgICByZXNwb25zZXM6CiAgICAgICBOb3RGb3VuZDoKICAgICAgICAgZGVzY3JpcHRpb246IEVudGl0eSBub3QgZm91bmQuCiAgIGBgYAoKNC4gKipTZWN1cml0eSBTY2hlbWVzKioKICAgYGBgeWFtbAogICBjb21wb25lbnRzOgogICAgIHNlY3VyaXR5U2NoZW1lczoKICAgICAgIEFwaUtleUF1dGg6CiAgICAgICAgIHR5cGU6IGFwaUtleQogICAgICAgICBpbjogaGVhZGVyCiAgICAgICAgIG5hbWU6IFgtQVBJLUtleQogICBgYGAKCiMjIyBLZXkgRWxlbWVudHMKCiMjIyBQYXRocwpEZWZpbmVzIHRoZSBhdmFpbGFibGUgcGF0aHMgYW5kIG9wZXJhdGlvbnMgZm9yIHRoZSBBUEkuCmBgYHlhbWwKcGF0aHM6CiAgL3BldHM6CiAgICBnZXQ6CiAgICAgIHN1bW1hcnk6IExpc3QgYWxsIHBldHMKICAgICAgb3BlcmF0aW9uSWQ6IGxpc3RQZXRzCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBBIHBhZ2VkIGFycmF5IG9mIHBldHMKICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246ICAgIAogICAgICAgICAgICAgIHNjaGVtYTogCiAgICAgICAgICAgICAgICB0eXBlOiBhcnJheQogICAgICAgICAgICAgICAgaXRlbXM6IAogICAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0JwpgYGAKCiMjIyBQYXJhbWV0ZXJzCkRlZmluZXMgdGhlIGlucHV0cyB0byBhbiBBUEkgbWV0aG9kLCB3aGljaCBjb3VsZCBiZSBwYXRoLCBxdWVyeSwgaGVhZGVyLCBvciBjb29raWUgcGFyYW1ldGVycy4KYGBgeWFtbApwYXJhbWV0ZXJzOgogIC0gaW46IHF1ZXJ5CiAgICBuYW1lOiBsaW1pdAogICAgc2NoZW1hOgogICAgICB0eXBlOiBpbnRlZ2VyCiAgICBkZXNjcmlwdGlvbjogSG93IG1hbnkgaXRlbXMgdG8gcmV0dXJuIGF0IG9uZSB0aW1lIChtYXggMTAwKQpgYGAKCiMjIyBSZXNwb25zZXMKRGVmaW5lcyB0aGUgcG9zc2libGUgcmVzcG9uc2VzIGZyb20gYW4gQVBJIG1ldGhvZC4KYGBgeWFtbApyZXNwb25zZXM6CiAgJzIwMCc6CiAgICBkZXNjcmlwdGlvbjogQSBwYWdlZCBhcnJheSBvZiBwZXRzCiAgICBoZWFkZXJzOgogICAgICB4LW5leHQ6CiAgICAgICAgZGVzY3JpcHRpb246IEEgbGluayB0byB0aGUgbmV4dCBwYWdlIG9mIHJlc3BvbnNlcwogICAgICAgIHNjaGVtYToKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgY29udGVudDoKICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICBzY2hlbWE6IAogICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgIGl0ZW1zOiAKICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BldCcKYGBgCgojIyMgQ29tcG9uZW50cwpIb2xkcyByZXVzYWJsZSBvYmplY3RzLCBzdWNoIGFzIHNjaGVtYXMsIHJlc3BvbnNlcywgcGFyYW1ldGVycywgYW5kIHNlY3VyaXR5IGRlZmluaXRpb25zLgpgYGB5YW1sCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIFBldDoKICAgICAgdHlwZTogb2JqZWN0CiAgICAgIHJlcXVpcmVkOgogICAgICAgIC0gaWQKICAgICAgICAtIG5hbWUKICAgICAgcHJvcGVydGllczoKICAgICAgICBpZDoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgIGZvcm1hdDogaW50NjQKICAgICAgICBuYW1lOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgdGFnOgogICAgICAgICAgdHlwZTogc3RyaW5nCmBgYAoKIyMjIEJlc3QgUHJhY3RpY2VzCgoxLiAqKlVzZSBNZWFuaW5nZnVsIERlc2NyaXB0aW9uczoqKiBQcm92aWRlIGRldGFpbGVkIGRlc2NyaXB0aW9ucyBmb3IgZWFjaCBmaWVsZCwgZW5kcG9pbnQsIGFuZCByZXNwb25zZSB0byBtYWtlIHRoZSBkb2N1bWVudGF0aW9uIHVzZXItZnJpZW5kbHkuCjIuICoqS2VlcCBJdCBEUlkgKERvbid0IFJlcGVhdCBZb3Vyc2VsZik6KiogVXRpbGl6ZSB0aGUgY29tcG9uZW50cyBzZWN0aW9uIHRvIGF2b2lkIHJlZHVuZGFuY3kuCjMuICoqVmFsaWRhdGUgdGhlIFNwZWNpZmljYXRpb246KiogVXNlIHRvb2xzIGxpa2UgU3dhZ2dlciBvciBSZWRvY2x5IHRvIHZhbGlkYXRlIGFuZCB2aXN1YWxpemUgeW91ciBPcGVuQVBJIHNwZWNpZmljYXRpb24uCjQuICoqRG9jdW1lbnQgU2VjdXJpdHk6KiogQ2xlYXJseSBkZWZpbmUgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gbWVjaGFuaXNtcy4KNS4gKipWZXJzaW9uIFlvdXIgQVBJOioqIEluY2x1ZGUgdmVyc2lvbmluZyBpbiB0aGUgQVBJIHBhdGhzIG9yIGhlYWRlcnMgdG8gaGFuZGxlIGJyZWFraW5nIGNoYW5nZXMgZ3JhY2VmdWxseS4K readmeEtag: '"f4d2d3ecf6febd9cea530d8249ae8386a2507849"' readmeLastModified: Tue, 09 Jul 2024 23:24:34 GMT repositoryId: 826362668 description: >- OpenAPI v3.x, Swagger UI v5.x, Swagger Editor v4.x, Redoc v2.x, Docker Compose, GitHub Pages created: '2024-07-09T15:04:25Z' updated: '2024-07-09T23:32:30Z' language: HTML archived: false stars: 1 watchers: 1 forks: 0 owner: refactorian logo: https://avatars.githubusercontent.com/u/110738252?v=4 repoEtag: '"aad1251e2d3f66edfe71ead919272f9e25d82b519c077a3c0e789f58f238b6e8"' repoLastModified: Tue, 09 Jul 2024 23:32:30 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/robert-dzikowski/api-smoke-test v3: true id: e5e5c07daf5797c09a6fbcec3aa5a2f2 repositoryMetadata: base64Readme: >- IyBJbnRyb2R1Y3Rpb24gClRoaXMgcmVwbyBjb250YWlucyBzbW9rZSB0ZXN0IHdoaWNoIHRlc3RzIGFsbCBlbmRwb2ludHMgZm91bmQgaW4gT3BlbkFQSSB2LjMgc3BlYyBmaWxlIChpdCB3YXNuJ3QgdGVzdGVkIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgT3BlbkFQSSkuIApJdCB3YXMgdGVzdGVkIHdpdGggU3BvdGlmeSBBUEkgKGh0dHBzOi8vZ2l0aHViLmNvbS9zb25hbGx1eC9zcG90aWZ5LXdlYi1hcGkpLgogIAojIEdldHRpbmcgU3RhcnRlZApJbnN0YWxsIFB5dGhvbiAzLjkgb3IgbmV3ZXIuCgpUbyBpbnN0YWxsIHBhY2thZ2VzIGdsb2JhbGx5IChmb3IgYWxsIHVzZXJzKSwKcnVuICdwaXAgaW5zdGFsbCAtciByZXF1aXJlbWVudHMudHh0JyBpbiBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5LgoKIyBSdW4KcHl0aG9uIGFwaS1zbW9rZS10ZXN0XHNtb2tlX3Rlc3QucHkgbmFtZV9vZl9hX3NwZWNfZmlsZSBbLS1hdXRoXSBbLS1sb2NhbGhvc3RdIFstLW9ubHktZ2V0XSBbLS1yZXF1ZXN0LXBhcmFtPV0gCgpvcgoKcHl0aG9uIGFwaS1zbW9rZS10ZXN0XHNtb2tlX3Rlc3QucHkgdXJsX29mX2Ffc3BlY19maWxlIFstLWF1dGhdIC4uLgoKLS1hdXRoIFNtb2tlIHRlc3QgbmVlZHMgYXV0aG9yaXphdGlvbiB0byBtYWtlIEFQSSByZXF1ZXN0cy4gQWxzbyB5b3UgbmVlZCB0byBmaWxsIGNvbmZpZy5weSB3aXRoIGFwcHJvcHJpYXRlIHZhbHVlcy4KCi0tbG9jYWxob3N0IEFQSSBpcyBydW5pbmcgb24gYSBsb2NhbCBtYWNoaW5lLiAKSW4gbXkgY2FzZSBsb2NhbCBBUEkgdXNlcyBIVFRQIGluc3RlYWQgb2YgSFRUUFMsIHNvIHlvdSBzaG91bGQgYWRhcHQgbXkgY29kZSB0byB5b3VyIG5lZWRzLgoKLS1vbmx5LWdldCBUZXN0IG9ubHkgR0VUIG1ldGhvZHMuCgotLXJlcXVlc3QtcGFyYW09IFNldCB2YWx1ZSBmb3IgcmVxdWVzdHMgcGFyYW1ldGVycywgCmUuZy4gaWYgLS1yZXF1ZXN0LXBhcmFtPTcgdGhlbiBmb3IgL2FsYnVtcy97aWR9IGVuZHBvaW50IHRlc3Qgd2lsbCBzZW5kIHJlcXVlc3QgdG8gL2FsYnVtcy83LgoKCiMgVE9ETwpBZGQgYWJpbGl0eSB0byBzZWxlY3QgYXV0aG9yaXphdGlvbiBtZXRob2Q6IAotIGNsaWVudCBpZCBhbmQgc2VjcmV0IChkZWZhdWx0LCB1c2VkIGJ5IFNwb3RpZnkgQVBJKQotIGNsaWVudCBpZCBhbmQgc2VjcmV0LCB1c2VyIG5hbWUgYW5kIHBhc3N3b3JkCg== readmeEtag: '"d6c8e39c9f9e56a2d993b3fa9aed96f7d259aaf9"' readmeLastModified: Sat, 27 May 2023 16:47:59 GMT repositoryId: 330251410 description: Smoke test for APIs that use OpenAPI v.3 specification created: '2021-01-16T20:36:00Z' updated: '2024-10-22T10:11:20Z' language: Python archived: false stars: 1 watchers: 1 forks: 0 owner: robert-dzikowski logo: https://avatars.githubusercontent.com/u/12864860?v=4 license: MIT repoEtag: '"e5a9e31f3dacf9cc5d7295179f12c86488e577b6cc68b2a36ee3a42787beda2c"' repoLastModified: Tue, 22 Oct 2024 10:11:20 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/aeimer/clockify-openapi-spec v3: true id: f2d454ed4a7cade537647e90a9a015fe repositoryMetadata: base64Readme: >- IyBJbi1vZmZpY2lhbCBDbG9ja2lmeSBPcGVuQVBJIHNwZWMKClRoaXMgaXMgYSBpbm9mZmljaWFsIENsb2NraWZ5IE9wZW5BUEkgc3BlYyBiYXNlZCBvbiB0aGUKW29mZmljaWFsIGRvY3NdKGh0dHBzOi8vZG9jcy5jbG9ja2lmeS5tZSkuCgpUaGUgbWFpbiBnb2FsIG9mIHRoaXMgcmVwbyBpcyB0byBoYXZlIGEgYmV0dGVyIHNwZWMgdGhhbiB0aGUgQVBJIGRvY3MuClNhZGx5IENsb2NraWZ5IGRvZXMgbm90IHB1Ymxpc2hlcyBhIE9wZW5BUEkgc3BlYyAob3IgZG8gdGhleT8pIGFuZCB0aGUgQVBJIGRvY3Mgc2VlbSB0byBiZSBpbmNvbXBsZXRlLgpUaGVyZWZvcmUsIHRoaXMgT3BlbkFQSSBzcGVjIHNob3VsZCBoZWxwIHlvdSB0byBlLmcuIGdlbmVyYXRlIFNES3MgaW4gdGhlIGxhbmd1YWdlIHlvdSBuZWVkLgoKU2VlCltTd2FnZ2VyIFVJXShodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vP3VybD1odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYWVpbWVyL2Nsb2NraWZ5LW9wZW5hcGktc3BlYy9yZWZzL2hlYWRzL21haW4vY2xvY2tpZnktb3BlbmFwaS1zcGVjLnlhbWwpLgoKRElTQ0xBSU1FUjoKVGhpcyBpcyAxMDAlIGJlc3QgZWZmb3J0IGFuZCBub3QgcmVsYXRlZCBpbiBhbnkga2luZCB0byBDbG9ja2lmeSEKCkxhc3QgdXBkYXRlZDogMjAyNC0xMS0xOAoKIyMgT2ZmaWNpYWwgQ2xvY2tpZnkgT3BlbkFQSSBzcGVjCgpUaGVyZSBpcyBhbHNvIGFuIE9wZW5BUEkgc3BlYyBhdmFpbGFibGUgdW5kZXIKaHR0cHM6Ly9hcGkuY2xvY2tpZnkubWUvYXBpL3YzL2FwaS1kb2NzCgpTZWUKW1N3YWdnZXIgVUldKGh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby8/dXJsPWh0dHBzOi8vYXBpLmNsb2NraWZ5Lm1lL2FwaS92My9hcGktZG9jcykuCgpBIGNvcHkgY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlIFtgb2ZmaWNpYWwtY2xvY2tpZnktb3BlbmFwaS1zcGVjLnlhbWxgXShvZmZpY2lhbC1jbG9ja2lmeS1vcGVuYXBpLXNwZWMueWFtbCkuClRoZSBjb3B5IHdhcyBjcmVhdGVkIGF0IDIwMjUtMTAtMjMgd2l0aApgaHR0cCBHRVQgaHR0cHM6Ly9hcGkuY2xvY2tpZnkubWUvYXBpL3YzL2FwaS1kb2NzIHwgeXEgLVAgLSA+IG9mZmljaWFsLWNsb2NraWZ5LW9wZW5hcGktc3BlYy55YW1sYAoKRElTQ0xBSU1FUjoKVGhpcyBpcyBhbiB1bmRvY3VtZW50ZWQgZW5kcG9pbnQsIHVzZSB3aXRoIGNhdXRpb24hCgojIyBDb250cmlidXRpb24KCklmIHlvdSB3YW50IHRvIGhlbHAgbWUga2VlcGluZyB0aGlzIEFQSSBzcGVjIHVwdG9kYXRlLCBJIHdvdWxkIGxvdmUgZ2V0IHNvbWUgcHVsbC1yZXF1ZXN0cyDwn6STCgpUaGlzIEFQSSBzcGVjIGlzIGdlbmVyYXRlZCB3aXRoCltBUElibGRyXShodHRwczovL2FwaWJsZHIuY29tKS4KCiMjIFN0YXIgaGlzdG9yeQoKWyFbU3RhciBIaXN0b3J5XShodHRwczovL2FwaS5zdGFyLWhpc3RvcnkuY29tL3N2Zz9yZXBvcz1hZWltZXIvY2xvY2tpZnktb3BlbmFwaS1zcGVjJnR5cGU9RGF0ZSldKGh0dHBzOi8vc3Rhci1oaXN0b3J5LmNvbS8jYWVpbWVyL2Nsb2NraWZ5LW9wZW5hcGktc3BlYyZEYXRlKQo= readmeEtag: '"ea5373da2876c45c4e87cdc872dcea866f307d6d"' readmeLastModified: Thu, 23 Oct 2025 16:03:34 GMT repositoryId: 890375840 description: In-official Clockify OpenAPI Spec v3 created: '2024-11-18T13:15:54Z' updated: '2026-01-05T18:12:34Z' language: null archived: false stars: 3 watchers: 1 forks: 0 owner: aeimer logo: https://avatars.githubusercontent.com/u/25035182?v=4 license: MIT repoEtag: '"baa73bfdef9b238e3c98c73110ae61d145a8f94a42e62b2917c83d671fe1d126"' repoLastModified: Mon, 05 Jan 2026 18:12:34 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/nachonacho-inc/public-api-doc v3: true id: 092df77af6c1ae32ddbda7b3e299888a repositoryMetadata: base64Readme: >- IyBOYWNob05hY2hvIFB1YmxpYyBBUEkgRG9jdW1lbnRhdGlvbgoKIVtJbWFnZSBvZiBOYWNob05hY2hvXShodHRwczovL2FwcC5uYWNob25hY2hvLmNvbS9sb2dvL05hY2hvTmFjaG9Mb2dvLnBuZykKCkFQSSBEb2N1bWVudGF0aW9uIGV4cG9zZWQgdmlhIE9wZW5BUEkgVUkuCgpZb3UgY2FuIGFjY2VzcyBpdCBoZXJlIDogaHR0cHM6Ly9uYWNob25hY2hvLWluYy5naXRodWIuaW8vcHVibGljLWFwaS1kb2MK readmeEtag: '"b52855e831ff7d6d32c9a3b380a838dddbbd50da"' readmeLastModified: Tue, 16 Aug 2022 20:01:59 GMT repositoryId: 524476113 description: NachoNacho Public API Documentation created: '2022-08-13T18:20:20Z' updated: '2022-10-26T18:23:38Z' language: Makefile archived: false stars: 1 watchers: 6 forks: 2 owner: nachonacho-inc logo: https://avatars.githubusercontent.com/u/64567964?v=4 repoEtag: '"913bd1785674ab756165201073ea62cde02253d0667f36fd8567a8f4dacd01d4"' repoLastModified: Wed, 26 Oct 2022 18:23:38 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/wndhydrnt/openapi-go-server v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWdvLXNlcnZlcgoKVGVtcGxhdGVzIGZvciB0aGUgZ28tc2VydmVyIGdlbmVyYXRvciBvZiB0aGUgW09wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKS4KClRoZSB0ZW1wbGF0ZXMgYXJlIGEgZm9yayBvZiB0aGUgW29yaWdpbmFsIGdvLXNlcnZlciBnZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvdHJlZS9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvbWFpbi9yZXNvdXJjZXMvZ28tc2VydmVyKSB0ZW1wbGF0ZXMuCgojIyBGZWF0dXJlcyBhbmQgQ2hhbmdlcwoKKiBFbmFibGUgW0Rpc2FsbG93VW5rbm93bkZpZWxkc10oaHR0cHM6Ly9nb2xhbmcub3JnL3BrZy9lbmNvZGluZy9qc29uLyNEZWNvZGVyLkRpc2FsbG93VW5rbm93bkZpZWxkcykgb24gSlNPTiBkZWNvZGVyCiogT3B0aW9uYWxseSBzZXQgcmVzcG9uc2UgY29kZSBhbmQgYm9keSBvbiBlcnJvcgoqIFJlbW92ZSByZXF1ZXN0IGxvZ2dpbmcKKiBPcHRpb25hbGx5IHNldCBhIGxvZ2dlciB0byBsb2cgZXJyb3JzIGluIENvbnRyb2xsZXJzCiogUGFzcyBjb250ZXh0IG9mIHRoZSBpbmNvbWluZyBgaHR0cC5SZXF1ZXN0YCB0byBtZXRob2RzIG9mIGEgU2VydmljZQoqIExldCBtZXRob2RzIG9mIGEgU2VydmljZSByZXR1cm4gdHlwZXMKCiMjIEtub3duIENhdmVhdHMKCiogU3VwcG9ydHMgb25seSBvbmUgcmV0dXJuIHR5cGUgb24gbWV0aG9kcyBvZiBhIFNlcnZpY2UKKiBTdXBwb3J0cyBKU09OIGVuY29kaW5nIG9mIHJlc3BvbnNlIGJvZHkgb25seQoKIyMgRXhhbXBsZQoKU2VlIFtleGFtcGxlcy9wZXRzdG9yZV0oZXhhbXBsZXMvcGV0c3RvcmUpLgoKIyMgVXNhZ2UKCmBgYApjdXJsIC1MIC1vIG9wZW5hcGktZ28tc2VydmVyLnppcCBodHRwczovL2dpdGh1Yi5jb20vd25kaHlkcm50L29wZW5hcGktZ28tc2VydmVyL2FyY2hpdmUvbWFzdGVyLnppcAp1bnppcCBvcGVuYXBpLWdvLXNlcnZlci56aXAKcm0gb3BlbmFwaS1nby1zZXJ2ZXIuemlwCm12IG9wZW5hcGktZ28tc2VydmVyLW1hc3Rlci9nby1zZXJ2ZXIgLgpybSAtcmYgb3BlbmFwaS1nby1zZXJ2ZXItbWFzdGVyLwpvcGVuYXBpLWdlbmVyYXRvciBnZW5lcmF0ZSAtaSBodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uIC1vIC4gLS1nZW5lcmF0b3ItbmFtZSBnby1zZXJ2ZXIgLS1hZGRpdGlvbmFsLXByb3BlcnRpZXM9c291cmNlRm9sZGVyPWFwaSxwYWNrYWdlTmFtZT1hcGkgLXQgLi9nby1zZXJ2ZXIKYGBgCg== readmeEtag: '"9ba486b02a59726d0ed36d8a31fd731d61f74351"' readmeLastModified: Sat, 02 Nov 2019 14:48:13 GMT repositoryId: 219166478 description: Templates for the go-server generator of the OpenAPI Generator. created: '2019-11-02T14:36:54Z' updated: '2022-12-30T07:07:23Z' language: HTML archived: false stars: 1 watchers: 1 forks: 1 owner: wndhydrnt logo: https://avatars.githubusercontent.com/u/3942978?v=4 license: MIT repoEtag: '"8f8fc87562d4693b23aa07117c7d8c2aab9fde5a781bfa11c09bd1d45d11cd41"' repoLastModified: Fri, 30 Dec 2022 07:07:23 GMT foundInMaster: true category: - SDK - Parsers id: 061a1147b9de1d975771f791659ca4f6 - source: openapi3 tags repository: https://github.com/akh11k/flask-template v3: true repositoryMetadata: base64Readme: IyBmbGFzay10ZW1wbGF0ZQpBIGZsYXNrIHRlbXBsYXRlIHdpdGggcnEsIGNvbm5leGlvbgo= readmeEtag: '"1497df7bfbd157a003cc5e95ca0ed09358d2e814"' readmeLastModified: Mon, 06 May 2019 06:47:43 GMT repositoryId: 184807083 description: A flask template with rq, connexion created: '2019-05-03T19:05:28Z' updated: '2019-05-06T06:48:28Z' language: Python archived: false stars: 1 watchers: 1 forks: 1 owner: akh11k logo: https://avatars.githubusercontent.com/u/44919026?v=4 repoEtag: '"461f3d78d9e85d2b097124488438784d2a7c3a2415a9b1f20cad8c99bb14cf1c"' repoLastModified: Mon, 06 May 2019 06:48:28 GMT foundInMaster: true category: - Mock - Server Implementations id: 3525950c4113199e2652a648c17b7efd - source: openapi3 tags repository: https://github.com/dzx912/sberapi-mock v3: true id: 2f68ab17ae20e48422266d441520f3b3 repositoryMetadata: base64Readme: >- IyBzYmVyYXBpLW1vY2sgWyFbYnVpbGQgc3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vcmlnZTEvc2JlcmFwaS1tb2NrL2FjdGlvbnMvd29ya2Zsb3dzL3dvcmtmbG93LnltbC9iYWRnZS5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL2dpdGh1Yi5jb20vcmlnZTEvc2JlcmFwaS1tb2NrL2FjdGlvbnMvd29ya2Zsb3dzL3dvcmtmbG93LnltbCkKCtCh0LXRgNCy0LXRgCDQt9Cw0LPQu9GD0YjQutCwIFNiZXIgQVBJLiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTQu9GPINCx0YvRgdGC0YDQvtC5INC40L3RgtC10LPRgNCw0YbQuNC4INC4INGC0LXRgdGC0LjRgNC+0LLQsNC90LjRjyAKCiMjINCn0YLQviDRg9C80LXQtdGCIAoKKiDQk9C10L3QtdGA0LjRgNGD0LXRgiDQuCDQv9GA0L7QstC10YDRj9C10YIg0LfQsNC/0YDQvtGB0Ysg0LjRgdC/0L7Qu9GM0LfRg9GPIE9wZW5BUEkgMwoqINCY0LzQtdC10YIg0L/QvtC00LTQtdGA0LbQutGDIFRMUyDQuCBtVExTCgojIyDQn9GA0LjQvNC10YDRiyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyAKCtCX0LDQv9GD0YHQuiDQsdC10Lcg0LDRgNCz0YPQvNC10L3RgtC+0LIuINCh0LXRgNCy0LXRgCDQsdGD0LTQtdGCINGB0LvRg9GI0LDRgtGMINC90LAg0L/QvtGA0YLQtSA4MDgwOiAKCmBgYHNoCnNiZXJhcGktbW9jayBzdGFydApgYGAKCtCX0LDQv9GD0YHQuiDRgSDRg9C60LDQt9Cw0L3QuNC10Lwg0L/QvtGA0YLQsDogCgpgYGBzaApzYmVyYXBpLW1vY2sgc3RhcnQgLS1wb3J0IDgwODQKYGBgCgrQl9Cw0L/Rg9GB0Log0YEgbVRMUzoKCmBgYHNoIApzYmVyYXBpLW1vY2sgc3RhcnQgLS1jZXJ0IHNlcnZlcl9jZXJ0LnBlbSAtLWtleSBzZXJ2ZXJfa2V5LnBlbSAtLWNsaWVudC1jZXJ0IGNsaWVudF9jZXJ0LnBlbSAKYGBgCgrQntGC0LrQu9GO0YfQtdC90LjQtSDQstCw0LvQuNC00LDRhtC40Lgg0LfQsNC/0YDQvtGB0LA6IApgYGBzaApzYmVyYXBpLW1vY2sgc3RhcnQgLS1pZ25vcmUtdmFsaWRhdGlvbgpgYGAKCiMjINCf0YDQuNC80LXRgNGLINC30LDQv9GA0L7RgdC+0LIgCgpD0L/QuNGB0L7QuiDQtNC+0YHRgtGD0L/QvdGL0YUgQVBJOgpgYGBzaApjdXJsIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4NAoKKFBPU1QpIC9jcmVhdGlvbgooUE9TVCkgL3N0YXR1cwpgYGAK0KHQvtC30LTQsNC90LjQtSBRUjogCmBgYHNoCiMg0JfQsNC/0YPRgdC60LDQtdC8INC30LDQs9C70YPRiNC60YMg0LHQtdC3INC/0YDQvtCy0LXRgNC60Lgg0LfQsNC/0YDQvtGB0L7QsiAKc2JlcmFwaS1tb2NrIHN0YXJ0IC0taWdub3JlLXZhbGlkYXRpb24KCiMg0JfQsNC/0YDQvtGBCmN1cmwgLVggUE9TVCBodHRwOi8vbG9jYWxob3N0OjgwODAvY3JlYXRpb24gLWQgJ3t9JyB8IGpxIAoKIyDQntGC0LLQtdGCCnsKICAic3RhdHVzIjogewogICAgImVycm9yX2NvZGUiOiAiMDAwMDAwIiwKICAgICJlcnJvcl9kZXNjcmlwdGlvbiI6ICLQntC/0LjRgdCw0L3QuNC1INC+0YjQuNCx0LrQuCDQstGL0L/QvtC70L3QtdC90LjRjyDQt9Cw0L/RgNC+0YHQsCIsCiAgICAib3JkZXJfZm9ybV91cmwiOiAiaHR0cHM6Ly9zYmVyYmFuay5ydS9xci8/dXVpZD0xMTExMTExMTExMTExMTExMTEiLAogICAgIm9yZGVyX2lkIjogIjEwMDAxMDAwNTE4OTU2NjM3IiwKICAgICJvcmRlcl9udW1iZXIiOiAiNzc0NjM1NTI2NjM3IiwKICAgICJvcmRlcl9zdGF0ZSI6ICJDUkVBVEVEIiwKICAgICJycV90bSI6ICIyMDA1LTA4LTE1VDE1OjUyOjAxWiIsCiAgICAicnFfdWlkIjogImFjMTFjQTFDRWFlMUQxMTExZEFCZjFmRDFCYjBhY0FkIgogIH0KfQpgYGAKCiMjINCh0LHQvtGA0LrQsAoKYGBgc2ggCm1ha2UgYnVpbGQgCmBgYAoKIyMgRG9ja2VyCiMjIyDQodCx0L7RgNC60LAKCmBgYHNoIApkb2NrZXIgaW1hZ2UgYnVpbGQgLS10YWcgc2JlcmFwaS1tb2NrIC4KYGBgCgojIyMg0JfQsNC/0YPRgdC6CgpgYGBzaCAKZG9ja2VyIHJ1biAtLXB1Ymxpc2ggODA4MDo4MDgwIHNiZXJhcGktbW9jawpgYGAKCiMjIyDQl9Cw0L/Rg9GB0Log0YEg0L/QsNGA0LDQvNC10YLRgNCw0LzQuAoKYGBgc2ggCmRvY2tlciBydW4gLS1wdWJsaXNoIDgwODA6ODA4MCBzYmVyYXBpLW1vY2sgLS1pZ25vcmUtdmFsaWRhdGlvbgpgYGAKCmBgYHNoIApkb2NrZXIgcnVuIC0tcHVibGlzaCA4MDgwOjgwODAgLS12b2x1bWUgPGFic29sdW1lX3BhdGhfdG9fY2VydF9kaXI+Oi9hcHAvY2VydC8gc2JlcmFwaS1tb2NrIC0tY2VydCAvYXBwL2NlcnQvc2VydmVyX2NlcnQucGVtIC0ta2V5IC9hcHAvY2VydC9zZXJ2ZXJfa2V5LnBlbSAtLWNsaWVudC1jZXJ0IC9hcHAvY2VydC9jbGllbnRfY2VydC5wZW0gCmBgYA== readmeEtag: '"a7023168cfa7862ebc2f7c52ec9a486798b30ff6"' readmeLastModified: Fri, 18 Feb 2022 22:17:42 GMT repositoryId: 379581037 description: Сервер заглушка Sber API created: '2021-06-23T11:33:27Z' updated: '2023-03-02T18:51:14Z' language: Go archived: true stars: 1 watchers: 0 forks: 0 owner: dzx912 logo: https://avatars.githubusercontent.com/u/3342950?v=4 repoEtag: '"36c5df63b7a211847b49c9b171fc07646338b4eeb8597ffbd4db28a7d4e48beb"' repoLastModified: Thu, 02 Mar 2023 18:51:14 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/himenon/openapi-typescript-code-generator-demo-project v3: true repositoryMetadata: base64Readme: >- IyBEZW1vIHByb2plY3QgZm9yIFtIaW1lbm9uL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlLWdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL0hpbWVub24vb3BlbmFwaS10eXBlc2NyaXB0LWNvZGUtZ2VuZXJhdG9yKQoKW+aXpeacrOiqnl0oLi9SRUFETUVfamEubWQpCgpUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBzcGVjaWZpYyBzdGVwcyBmb3IgY29kZSBnZW5lcmF0aW9uLgoKIyMgU2V0dXAKCkZpcnN0LCB5b3UgbmVlZCB0byBjbG9uZSB0aGlzIHJlcG9zaXRvcnkuIAoKYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9IaW1lbm9uL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlLWdlbmVyYXRvci1kZW1vLXByb2plY3QKYGBgCgpUaGVuIGdvIHRvIHRoZSBjbG9uZWQgZGlyZWN0b3J5IGFuZCBpbnN0YWxsIHRoZSBwYWNrYWdlLgoKYGBgc2gKY2Qgb3BlbmFwaS10eXBlc2NyaXB0LWNvZGUtZ2VuZXJhdG9yLWRlbW8tcHJvamVjdAp5YXJuIGluc3RhbGwKYGBgCgpUaGUgc2V0dXAgaXMgbm93IGNvbXBsZXRlLgoKIyMgUnVuIGRlbW8KCkxldCdzIGFjdHVhbGx5IGNyZWF0ZSB0aGUgY29kZSBpbiBbVXNhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9IaW1lbm9uL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlLWdlbmVyYXRvciN1c2FnZSkuClRoZSBPcGVuQVBJIFNjaGVtYSB0byBiZSBsb2FkZWQgaXMgYG9wZW5hcGkueW1sYC4KCkFsc28sIHRoZSBhY3R1YWwgY29kZSB0byBiZSBleGVjdXRlZCB3aWxsIGJlIHdyaXR0ZW4gaW4gcGxhaW4gSmF2YVNjcmlwdC4KCiMjIyBEZW1vMQoKRXhhbXBsZXMgdG8gREVNT++8mltHZW5lcmF0ZSB0eXBlZGVmLW9ubHkgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL0hpbWVub24vb3BlbmFwaS10eXBlc2NyaXB0LWNvZGUtZ2VuZXJhdG9yI2dlbmVyYXRlLXR5cGVkZWYtb25seS1jb2RlKQoKRXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gZ2VuZXJhdGUgdGhlIGNvZGUgaW4gdGhlIGRlbW8xIGRpcmVjdG9yeS4KCmBgYHNoCm5vZGUgZ2VuZXJhdGUtZGVtbzEuanMKYGBgCgojIyMgRGVtbzIKCkV4YW1wbGVzIHRvIERFTU/vvJpbR2VuZXJhdGUgY29kZSBjb250YWluaW5nIHRoZSBBUEkgQ2xpZW50XShodHRwczovL2dpdGh1Yi5jb20vSGltZW5vbi9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3IjZ2VuZXJhdGUtY29kZS1jb250YWluaW5nLXRoZS1hcGktY2xpZW50KQoKRXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gZ2VuZXJhdGUgdGhlIGNvZGUgaW4gdGhlIGRlbW8yIGRpcmVjdG9yeS4KCmBgYHNoCm5vZGUgZ2VuZXJhdGUtZGVtbzIuanMKYGBgCgojIyBEZW1vMwoKRXhhbXBsZXMgdG8gREVNT++8mltTcGxpdCB0aGUgdHlwZSBkZWZpbml0aW9uIGZpbGUgYW5kIHRoZSBBUEkgQ2xpZW50IGltcGxlbWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vSGltZW5vbi9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3Ijc3BsaXQtdGhlLXR5cGUtZGVmaW5pdGlvbi1maWxlLWFuZC10aGUtYXBpLWNsaWVudC1pbXBsZW1lbnRhdGlvbikKCkV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGdlbmVyYXRlIHRoZSBjb2RlIGluIHRoZSBkZW1vMyBkaXJlY3RvcnkuCgpgYGBzaApub2RlIGdlbmVyYXRlLWRlbW8zLmpzCmBgYAoKIyMgQWJvdXQgdGhlIHBhY2thZ2UgeW91IG5lZWQKCltAaGltZW5vbi9vcGVuYXBpLXR5cGVzY3JpcHQtY29kZS1nZW5lcmF0b3JdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BoaW1lbm9uL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlLWdlbmVyYXRvcikgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIGdlbmVyYXRpbmcgY29kZSBmcm9tIE9wZW5BUEkgU2NoZW1hLgoKSXQgYWxzbyB1c2VzIFR5cGVTY3JpcHQgaXRzZWxmIGRpcmVjdGx5IGludGVybmFsbHkuIFRoZXJlZm9yZSwgaWYgeW91IGRvIG5vdCBoYXZlIHRoaXMgW3R5cGVzY3JpcHRdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3R5cGVzY3JpcHQpIHBhY2thZ2UgaW5zdGFsbGVkLCB5b3Ugd2lsbCBub3QgYmUgYWJsZSB0byBnZW5lcmF0ZSBjb2RlLgoK readmeEtag: '"4f1dfdd8b3024ad9eecd8ab24613b8f2013dd624"' readmeLastModified: Sun, 12 Sep 2021 14:18:25 GMT repositoryId: 355945487 description: Demo Project for @himenon/openapi-typescript-code-generator created: '2021-04-08T14:44:28Z' updated: '2022-05-22T15:21:37Z' language: TypeScript archived: false stars: 1 watchers: 0 forks: 2 owner: Himenon logo: https://avatars.githubusercontent.com/u/6715229?v=4 repoEtag: '"8f46e3f0cc3af82742c89e9b04c370856189c89d303553987c741e94e83384f0"' repoLastModified: Sun, 22 May 2022 15:21:37 GMT foundInMaster: true category: SDK id: d2f30604362509539598b330fb1bbb68 - source: openapi3 tags repository: https://github.com/bmykyta/cheese-whiz v3: true id: 9aa890b5402d1a9b42ae222e1fed6343 repositoryMetadata: base64Readme: >- IyBDaGVlc2UgV2hpeiAoQVBJIFBsYXRmb3JtKQoKIyMgQWJvdXQgdGhlIHByb2plY3QKClRoZSBwcm9qZWN0IGlzIGJ1aWx0IG9uIHRvcCBvZiB0aGUgU3ltZm9ueSA2IHdpdGggQVBJIFBsYXRmb3JtIDIuNiBidW5kbGUuIEZvbGxvd2VkIGJ5IHRoZSB0dXRvcmlhbCBvZgpbU3ltZm9ueUNhc3RzIC0gQVBJIFBsYXRmb3JtOiBTZXJpb3VzIFJFU1RmdWwgQVBJc10oaHR0cHM6Ly9zeW1mb255Y2FzdHMuY29tL3NjcmVlbmNhc3QvYXBpLXBsYXRmb3JtKS4KCiMjIyBCdWlsZCB3aXRoCgohW1BIUDhdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vc3RhdGljL3YxP3N0eWxlPWZvci10aGUtYmFkZ2UmbWVzc2FnZT1QSFAlMjA4JmNvbG9yPTc3N0JCNCZsb2dvQ29sb3I9d2hpdGUmbG9nbz1waHAmbGFiZWw9KQohW1N5bWZvbnldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vc3RhdGljL3YxP3N0eWxlPWZvci10aGUtYmFkZ2UmbWVzc2FnZT1TeW1mb255JTIwNiZjb2xvcj0wMDAwMDAmbG9nbz1TeW1mb255JmxvZ29Db2xvcj1GRkZGRkYmbGFiZWw9KQohW09wZW5BUEkzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YXRpYy92MT9zdHlsZT1mb3ItdGhlLWJhZGdlJm1lc3NhZ2U9T3BlbkFQSSUyMDMmY29sb3I9NkJBNTM5JmxvZ289T3BlbkFQSStJbml0aWF0aXZlJmxvZ29Db2xvcj1GRkZGRkYmbGFiZWw9KQoKIyMgR2V0dGluZyBTdGFydGVkCgojIyMgUHJlcmVxdWlzaXRlcwoKLSBQSFAgOAotIENvbXBvc2VyIAotIERvY2tlci1jb21wb3NlCgojIyMgSW5zdGFsbGF0aW9uCgoxLiBDbG9uZSB0aGUgcmVwbzogCmBgYGJhc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9ibXlreXRhL2NoZWVzZS13aGl6LmdpdApgYGAKMi4gQ29weSB0aGUgLmVudiBmaWxlIGFuZCBhZGp1c3QgdG8geW91ciBuZWVkcwozLiBSdW4gZG9ja2VyIGNvbXBvc2UgY29tbWFuZApgYGBiYXNoCmRvY2tlci1jb21wb3NlIHVwIC1kCmBgYAo0LiBHbyB0byBwaHAtZnBtIHNlcnZpY2UgCmBgYGJhc2gKZG9ja2VyLWNvbXBvc2UgZXhlYyBwaHAtZnBtIGJhc2gKYGBgCjUuIFJ1biBjb21wb3NlciBpbnN0YWxsLCBjcmVhdGUgREIgYW5kIG1pZ3JhdGlvbnMKYGBgYmFzaApjb21wb3NlciBpbnRhbGwKcGhwIGJpbi9jb25zb2xlIGQ6ZDpjIApwaHAgYmluL2NvbnNvbGUgZDptOm0gLW4KYGBgCgojIyBDb250cmlidXRpbmcKCkNvbnRyaWJ1dGlvbnMgYXJlIHdoYXQgbWFrZSB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5IHN1Y2ggYW4gYW1hemluZyBwbGFjZSB0byBsZWFybiwgaW5zcGlyZSwgYW5kIGNyZWF0ZS4gCkFueSBjb250cmlidXRpb25zIHlvdSBtYWtlIGFyZSAqKmdyZWF0bHkgYXBwcmVjaWF0ZWQqKi4g8J+RjwoKSWYgeW91IGhhdmUgYSBzdWdnZXN0aW9uIHRoYXQgd291bGQgbWFrZSB0aGlzIGJldHRlciwgcGxlYXNlIGZvcmsgdGhlIHJlcG8gYW5kIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdC4gCllvdSBjYW4gYWxzbyBzaW1wbHkgb3BlbiBhbiBpc3N1ZSB3aXRoIHRoZSB0YWcgIl9lbmhhbmNlbWVudF8iLgpEb24ndCBmb3JnZXQgdG8gZ2l2ZSB0aGUgcHJvamVjdCBhIHN0YXIg4q2QISBUaGFua3MgYWdhaW4hCgoxLiBGb3JrIHRoZSBQcm9qZWN0CjIuIENyZWF0ZSB5b3VyIEZlYXR1cmUgQnJhbmNoIChgZ2l0IGNoZWNrb3V0IC1iIGZlYXR1cmUvQW1hemluZ0ZlYXR1cmVgKQozLiBDb21taXQgeW91ciBDaGFuZ2VzIChgZ2l0IGNvbW1pdCAtbSAnQWRkIHNvbWUgQW1hemluZ0ZlYXR1cmUnYCkKNC4gUHVzaCB0byB0aGUgQnJhbmNoIChgZ2l0IHB1c2ggb3JpZ2luIGZlYXR1cmUvQW1hemluZ0ZlYXR1cmVgKQo1LiBPcGVuIGEgUHVsbCBSZXF1ZXN0 readmeEtag: '"777c0a701335d13f60aac05c53a398da802a314c"' readmeLastModified: Wed, 28 Sep 2022 20:48:35 GMT repositoryId: 516092537 description: >- Built on top of Symfony 6, API Platform enables you to build a rich, JSON-LD-powered, hypermedia API... pretty much instantly! created: '2022-07-20T18:25:23Z' updated: '2022-07-26T11:33:33Z' language: PHP archived: false stars: 1 watchers: 1 forks: 0 owner: bmykyta logo: https://avatars.githubusercontent.com/u/31631183?v=4 repoEtag: '"18c50f5cc925bdf9e1c7559928339bb6ea1615334ac2199be20574152538768c"' repoLastModified: Tue, 26 Jul 2022 11:33:33 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/fugerit-org/yaml-doc-tool v3: true id: 97f4d8f8067f40e02afeeb61b95be57e repositoryMetadata: base64Readme: >- IyB5YW1sLWRvYy10b29sCgo+IOKaoO+4jyAqKldhcm5pbmc6KiogQXMgb2YgMjAyNS0wNy0yNyB0aGlzIHJlcG9zaXRvcnkgaXMgYXJjaGl2ZWQgYW5kIHN1YnN0aXR1dGVkIGJ5IFtvcGVuYXBpLWRvYy10b29sXShodHRwczovL2dpdGh1Yi5jb20vZnVnZXJpdC1vcmcvb3BlbmFwaS1kb2MtdG9vbCkgKHNlZSBbZnVnZXJpdC1vcmcvb3BlbmFwaS1kb2MtdG9vbCMxXShodHRwczovL2dpdGh1Yi5jb20vZnVnZXJpdC1vcmcvb3BlbmFwaS1kb2MtdG9vbC9pc3N1ZXMvMSkpLgoKVG9vbCBmb3IgYXV0byBkb2N1bWVudGF0aW9uIG9mIHlhbWwgLyBvcGVuYXBpCgpbIVtLZWVwIGEgQ2hhbmdlbG9nIHYxLjEuMCBiYWRnZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jaGFuZ2Vsb2ctS2VlcCUyMGElMjBDaGFuZ2Vsb2clMjB2MS4xLjAtJTIzRTA1NzM1KV0oQ0hBTkdFTE9HLm1kKSAKWyFbTWF2ZW4gQ2VudHJhbF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9tYXZlbi1jZW50cmFsL3Yvb3JnLmZ1Z2VyaXQuamF2YS95YW1sLWRvYy10b29sLnN2ZyldKGh0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vYXJ0aWZhY3Qvb3JnLmZ1Z2VyaXQuamF2YS95YW1sLWRvYy10b29sKQpbIVtsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtQXBhY2hlJTIwTGljZW5zZSUyMDIuMC10ZWFsLnN2ZyldKGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQXBhY2hlLTIuMCkKWyFbY29kZSBvZiBjb25kdWN0XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NvbmR1Y3QtQ29udHJpYnV0b3IlMjBDb3ZlbmFudC1wdXJwbGUuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2Z1Z2VyaXQtb3JnL2ZqLXVuaXZlcnNlL2Jsb2IvbWFpbi9DT0RFX09GX0NPTkRVQ1QubWQpClshW1F1YWxpdHkgR2F0ZSBTdGF0dXNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWZ1Z2VyaXQtb3JnX3lhbWwtZG9jLXRvb2wmbWV0cmljPWFsZXJ0X3N0YXR1cyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPWZ1Z2VyaXQtb3JnX3lhbWwtZG9jLXRvb2wpClshW0NvdmVyYWdlXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1mdWdlcml0LW9yZ195YW1sLWRvYy10b29sJm1ldHJpYz1jb3ZlcmFnZSldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPWZ1Z2VyaXQtb3JnX3lhbWwtZG9jLXRvb2wpCgpbIVtKYXZhIHJ1bnRpbWUgdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9ydW4lMjBvbi1qYXZhJTIwOCstJTIzMTEzMzY2LnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289b3BlbmpkayZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL3VuaXZlcnNlLmZ1Z2VyaXQub3JnL3NyYy9kb2NzL3ZlcnNpb25zL2phdmExMS5odG1sKQpbIVtKYXZhIGJ1aWxkIHZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvYnVpbGQlMjBvbi1qYXZhJTIwMTErLSUyM0VEOEIwMC5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPW9wZW5qZGsmbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly91bml2ZXJzZS5mdWdlcml0Lm9yZy9zcmMvZG9jcy92ZXJzaW9ucy9qYXZhMTEuaHRtbCkKWyFbQXBhY2hlIE1hdmVuXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0FwYWNoZSUyME1hdmVuLTMuOS4wKy1DNzFBMzY/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPUFwYWNoZSUyME1hdmVuJmxvZ29Db2xvcj13aGl0ZSldKGh0dHBzOi8vdW5pdmVyc2UuZnVnZXJpdC5vcmcvc3JjL2RvY3MvdmVyc2lvbnMvbWF2ZW4zXzkuaHRtbCkKCiMjIFF1aWNrc3RhcnQgKGJ1aWxkKQoKYGBgCm12biBjbGVhbiBpbnN0YWxsIC1QIHNpbmdsZXBhY2thZ2UJCQpgYGAKCiMjIFF1aWNrc3RhcnQgKG1vZGU6IHNpbmdsZSk6CgpgYGAKamF2YSAtamFyIGRpc3QteWFtbC1kb2MtdG9vbC0qLmphciAtLWlucHV0LXlhbWwgW3BhdGgtdG8tb3BlbmFwaV0gXAoJCQkJCQkJCQkJLS1vdXRwdXQtZmlsZSBbb3V0cHV0LWZpbGVdIFwKCQkJCQkJCQkJCS0tbGFuZ3VhZ2UgW2xhbmd1YWdlXSBcCgkJCQkJCQkJCQktLWxhYmVscy1vdmVycmlkZSBbcGF0aC10by1sYWJlbHMtcHJvcGVydGllc10KYGBgCgkJCQkJCQkJCQkKKipleGFtcGxlIDoqKiAgCgpgYGAKamF2YSAtamFyIGRpc3QteWFtbC1kb2MtdG9vbC0qLmphciAtLWlucHV0LXlhbWwgc2FtcGxlLnlhbWwgLS1vdXRwdXQtZmlsZSBzYW1wbGUucGRmIC0tbGFuZ3VhZ2UgaXQKYGBgCgoqKm91dHB1dC1maWxlKiogICAKY3VycmVudGx5IHN1cHBvcnRlZCBleHRlbnNpb25zIDogcGRmLCB4bHN4LCB4bWwsIGZvCgoqKmxhbmd1YWdlKiogIApjdXJyZW50bHkgc3VwcG9ydGVkIGxhbmd1YWdlcyA6IGl0LCBlbgoKKipsYWJlbHMtb3ZlcnJpZGVzKiogICAKcGF0aCB0byBhbHRlcm5hdGUgbGFiZWxzIHByb3BlcnRpZXMKY3VycmVudGx5IHN1cHBvcnRlZCBsYWJlbHMgYXJlIGF2YWlsYWJsZSBpbiA6IHNyYy9tYWluL3Jlc291cmNlcy9sYW5nL2xhYmVsLnByb3BlcnRpZXMKCioqbWF2ZW4gcGx1Z2luKiogIApBIFtNYXZlbiBQbHVnaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9mdWdlcml0LW9yZy95YW1sLWRvYy1tYXZlbi1wbHVnaW4pIGlzIGFsc28gYXZhaWxhYmxlLgoKCiMjIFF1aWNrc3RhcnQgKG1vZGU6IGNvbmZpZyk6CgpgYGAKamF2YSAtamFyIGRpc3QteWFtbC1kb2MtdG9vbC0qLmphciAJCS0tbW9kZSBbY29uZmlnXSBcCgkJCQkJCQkJCQktLWNvbmZpZy1wYXRoIFtwYXRoLXRvLWNvbmZpZ10gXAoJCQkJCQkJCQkJLS1pZC1jYXRhbG9nIFtpZC1jYXRhbG9nLWluLWNvbmZpZ10KYGBgCgoqKmNvbmZpZy1wYXRoKiogICAKcGF0aCB0byBjb25maWd1cmF0aW9uIChzZWUgW3NhbXBsZV0oc3JjL3Rlc3QvcmVzb3VyY2VzL3lhbWwtZG9jLWNvbmZpZy54bWwpKQoKKippZC1jYXRhbG9nKiogICAKaWQgb2YgdGhlIGNhdGFsb2cgaW4gY29uZmlnIHRvIHVzZQoKCiMjIFF1aWNrc3RhcnQgKG1vZGU6IGNoZWNrLW1vZGVsKToKCk5vZGUgOiB0aGUgdHlwZSB0byBjaGVjayBuZWVkIHRvIGJlIGluIGNsYXNzcGF0aC4KCmBgYApqYXZhIC1qYXIgZGlzdC15YW1sLWRvYy10b29sLSouamFyIAkJLS1tb2RlIFtjaGVjay1tb2RlbF0gXAoJCQkJCQkJCQkJLS1pbnB1dC15YW1sIFtwYXRoLXRvLW9wZW5hcGldIFwKCQkJCQkJCQkJCS0tb3V0cHV0LWZpbGUgW291dHB1dC1maWxlXSBcCgkJCQkJCQkJCQktLWNoZWNrLXR5cGUgW2phdmEgdHlwZSB0byBjaGVja10gXAoJCQkJCQkJCQkJLS1jaGVjay1zY2hlbWEgW29wZW5hcGkgc2NoZW1hIHRvIGNoZWNrXQoJCQkJCQkJCQkJLS12ZXJzaW9uIFttb2RlbC12ZXJzaW9uXQpgYGAKCiMjIE1vZGVsIHZlcnNpb24gaW5mbyAocGFyYW0gInZlcnNpb24iKQoKIyMjIFZlcnNpb24gMCAtIGxlZ2FjeSB2ZXJzaW9uICh1cCB0byAxLjAuMCBleGNsdWRlZCkKCiMjIyBWZXJzaW9uIDEKCmhhbmRsaW5nIGhhbmRsaW5nIG9mIGNvbnN0cmFpbnRzIFtPcGVuQVBJIGRhdGEgdHlwZXNdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGF0YS1tb2RlbHMvZGF0YS10eXBlcy8pCiAtIG1pbkxlbmd0aAogLSBtYXhMZW5ndGgKIC0gbWluaW11bQogLSBtYXhpbXVtIAo= readmeEtag: '"1eba063cba25f38294917f952a955f64241ac1f9"' readmeLastModified: Sun, 27 Jul 2025 18:27:31 GMT repositoryId: 471110771 description: Documentation tool for yaml (openapi) created: '2022-03-17T19:11:05Z' updated: '2025-07-27T18:28:10Z' language: Java archived: true stars: 1 watchers: 1 forks: 0 owner: fugerit-org logo: https://avatars.githubusercontent.com/u/37816284?v=4 license: Apache-2.0 repoEtag: '"023c505382462f2f843328e4ffa656eba1aea7b68e2c0e2e4912c435892c62dd"' repoLastModified: Sun, 27 Jul 2025 18:28:10 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/rnhc1000/apichallenge v3: true id: 0efd5e5ff88b9176ef9fdcfa6b55c13e repositoryMetadata: base64Readme: >- IyMgX0FQSSBBZ2dyZWdhdG9yIENoYWxsZW5nZV8gPGJyIC8+CkdvYWw6IEFub3RoZXIgdGFrZS1ob21lIGNoYWxsZW5nZSAKCiMjIF9UYWJsZSBvZiBjb250ZW50c18KCi0gW19PdmVydmlld19dKCNvdmVydmlldykKLSBbX1JlcXVpcmVtZW50c19dKCNyZXF1aXJlbWVudHMpCi0gW19Qcm9qZWN0IFN0cnVjdHVyZV9dKCNyZXF1aXJlbWVudHMpCi0gW19Ib3d0byBCdWlsZCBhbmQgUnVuX10oI3JlcXVpcmVtZW50cykKLSBbX1NjcmVlbnNob3RfXSgjc2NyZWVuc2hvdCkKLSBbX0xpbmtzX10oLi4uKQotIFtfQnVpbHQgd2l0aF9dKCNidWlsdC13aXRoKQotIFtfQ29kZSBTbmlwcGV0X10oI3JlcXVpcmVtZW50cykKLSBbX0NvbnRpbnVlZCBkZXZlbG9wbWVudF9dKCNjb250aW51ZWQtZGV2ZWxvcG1lbnQpCi0gW19Vc2VmdWwgcmVzb3VyY2VzX10oI3VzZWZ1bC1yZXNvdXJjZXMpCi0gW19BdXRob3JfXSgjcmVxdWlyZW1lbnRzKQotIFtfUG9ydGZvbGlvX10oI3JlcXVpcmVtZW50cykKCiMjIF9PdmVydmlld18KClRoaXMgY2hhbGxlbmdlIGRlbGl2ZXJzIGFuIGFwcGxpY2F0aW9uIHRoYXQgY29uc3VtZXMgYW4gZXh0ZXJuYWwgQVBJIGVuZHBvaW50LgpJdCBpcyBhIFJGQzgyODggY29tcGxpYW50IHBhZ2luYXRlZCBlbmRwb2ludCB0byBiZSBjb25zdW1lZCwgcmV0dXJuaW5nIGEgbGlzdCBvZiBjb250YWN0cwphbmQgdGhlIHBhZ2luYXRpb24gaW5mb3JtYXRpb24gdmlhIGxpbmsgaGVhZGVyIGFuZCBzaG91bGQgYmUgYnVpbHQgYWNjb3JkaW5nIHRvIHNvbWUKc3BlY2lmaWMgcmVxdWlyZW1lbnRzLgoKCiMjIF9SZXF1aXJlbWVudHNfCgotIFRoZSByZXNwb25zZSBmcm9tIHRoZSBlbmRwb2ludCBzaG91bGQgbWF0Y2ggdGhlIHNjaGVtYSBwcm92aWRlZC4KPGJyIC8+Ci0gUHJvamVjdCBzdHJ1Y3R1cmUgYW5kIG9yZ2FuaXphdGlvbiBvZiB5b3VyIGNvZGU6IHdlIHdhbnQgdG8gc2VlIGlmIHlvdXIgY29kZSBmb2xsb3dzIGdvb2QgcGF0dGVybnMsIGFuZCBzZXBhcmF0ZXMKY29uY2VybnMgYmV0d2VlbiBjb250cm9sbGVycywgc2VydmljZXMsIGFuZCByZXBvc2l0b3JpZXMuCjxiciAvPgotIENhcGFjaXR5IHRvIGZvbGxvdyBnb29kIHByaW5jaXBsZXMgbGlrZSBDbGVhbiBDb2RlIGFuZCBTT0xJRC4KPGJyIC8+Ci0gQ2FwYWNpdHkgdG8gdXNlIGRlc2lnbiBwYXR0ZXJucyBhbmQga25vd2xlZGdlIGFib3V0IHRoZSBjaG9zZW4gb25lKHMpIHVzYWdlLgo8YnIgLz4KLSBBYmlsaXR5IHRvIGNvbnN1bWUgb3RoZXIgQVBJcyBhbmQgY29ycmVjdGx5IGhhbmRsZSBwYWdpbmF0aW9uLgo8YnIgLz4KLSBLbm93bGVkZ2UgYWJvdXQgdGhlIHRvb2xzIHlvdSBkZWNpZGVkIHRvIHVzZS4KPGJyIC8+Ci0gQWJpbGl0eSB0byBjcmVhdGUgc21hcnQgdGVzdHMgdG8gZW5oYW5jZSB5b3VyIGNvZGUgcXVhbGl0eS4KCkJhc2VkIG9uIHRoZXNlLCB0aGUgYXBwIGNvbnN1bWVzIHNlcnZpY2VzIG9mIGFub3RoZXIgYXBpIC0+IDxhIGhyZWY9Imh0dHBzOi8vay1tZXNzYWdlcy1hcGkuaGVyb2t1YXBwLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPkNvbnRhY3RzIEFQSTwvYT4uCgo8YnIgLz4KWW91IGNhbiBwbGF5IHdpdGggdGhlIGFwcCwgdmlzaXRpbmcgdGhlIGxpbmsgYmVsb3cgYWZ0ZXIgeW91IGJ1aWxkIHRoZSBhcHAKYWNjb3JkaW5nIHRvIHRoZSBpbnN0cnVjdGlvbnMuCgpodHRwczovL2NoYWxsZW5nZS5mZXJyZWlyYXMuZGV2LmJyL3N3YWdnZXItdWkvaW5kZXguaHRtbAo8YnIgLz4KVGhlIGFwcCBoYXMgYmVlbiBjb2RlZCB1c2luZyBKYXZhIDE3LCBTcHJpbmcgQm9vdCAzLjMuNCwgR3JhZGxlLCBKYXZhZG9jLCBTcHJpbmcgU2VjdXJpdHksIFNwcmluZyBKUEEsIApTcHJpbmcgV2ViZmx1eCwgT3BlbkFQSSwgSlVuaXQsIE1vY2tpdG8sIE15U1FMLCBEb2NrZXIgYW5kIG90aGVycy48YnIgLz4KVGFrZSBhIGxvb2sgYXQgdGhlIHZpZGVvIGJlbG93IHRvIHVuZGVyc3RhbmQgaG93IEkgZmFjZWQgdGhlIGNoYWxsZW5nZS4KPGJyIC8+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9bnVMOElLQ3NJVG8iIHRhcmdldD0iX2JsYW5rIj5TaG9ydCBWaWRlbzwvYT4KPGhyIC8+CgojIyBfUHJvamVjdCBTdHJ1Y3R1cmVfCi0gZG9jcwogICAtIGphdmFkb2NzCi0gc3JjCiAgICAtIG1haW4KICAgIC0gamF2YQogICAgICAgIC0gYnIuZGV2LmZlcnJlaXJhcy5jaGFsbGVuZ2UKICAgICAgICAgICAgLSBjb250cmFjdHMKICAgICAgICAgICAgLSBjb25maWcKICAgICAgICAgICAgLSBjb250cm9sbGVyCiAgICAgICAgICAgICAgLSBoYW5kbGVycyAKICAgICAgICAgICAgLSBkdG8KICAgICAgICAgICAgLSBlbnRpdHkKICAgICAgICAgICAgLSBlbnVtcwogICAgICAgICAgICAtIHJlcG9zaXRvcnkKICAgICAgICAgICAgLSBzZXJ2aWNlcwogICAgICAgICAgICAgIC0gZXhjZXB0aW9ucwogICAgLSByZXNvdXJjZXMKICAgICAgICAtIGNlcnRzCiAgICAtIHRlc3QKICAgICAgLSBqYXZhCiAgICAgICAgLSBici5kZXYuZmVycmVpcmFzLmNoYWxsZW5nZQogICAgICAgICAgLSBjb250cm9sbGVyCiAgICAgICAgICAtIHNlcnZpY2UKLQoKIyMgX0hvd3RvIEJ1aWxkIGFuZCBSdW5fCgogIGBgYAogIC0gTXlTUUwgRGF0YWJhc2U6IGh0dHA6Ly8xMjcuMC4wLjE6MzMwNjpjaGFsbGVuZ2UKICAtIGNyZWRlbnRpYWxzIGF2YWlsYWJsZSBhdCBjbGFzc3BhdGg6ZGIucHJvcGVydGllcwogIC0gcHJvZmlsZSBhY3RpdmU6IGRldiBvciBwcm9kCiAgLSBwcm9kdWN0aW9uIHNvY2tldDoxMjcuMC4wLjE6ODA5NwogIC0gdHdlYWsgYSBmZXcga25vYnMgdG8gZ2V0IGl0IHVwIGFuZCBydW5uaW5nIGFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zCiAgICBwcm92aWRlZCBhdCBjbGFzc3BhdGg6ZG9ja2VyQnVpbGQuc2ggb3IganVzdCBpbiBjYXNlIHlvdSB3YW50IHJvIHJ1bgogICAgbG9jYWxseSBnbyB0byB7UFdEfS9jaGFsbGVuZ2UgYW5kIHJ1biAuL2dyYWRsZXcgcnVuLCBvciBjaGVjayB0aGUgdmlkZW8KICAgIHVybCBzaG93biBiZWxvdy4KCmBgYAoKIyMgX1NjcmVlbnNob3RfCgpbIVtdKC4vam9ic2l0eS5wbmcpXSgpCgojIyBfTGlua3NfCgotIExpdmUgU2l0ZSAtPiBDbGljayBoZXJlIDpjbG91ZDogIDxhIGhyZWY9Imh0dHBzOi8vY2hhbGxlbmdlLmZlcnJlaXJhcy5kZXYuYnIvc3dhZ2dlci11aS9pbmRleC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+QVBJIEFnZ3JlZ2F0b3I8L2E+CgojIyBfQnVpbHQgd2l0aF8KClshW015IFNraWxsc10oaHR0cHM6Ly9za2lsbGljb25zLmRldi9pY29ucz9pPWphdmEsc3ByaW5nLG15c3FsLGdyYWRsZSxkb2NrZXIscmVkaGF0LGF3cyxpZGVhLGdpdCxnaXRodWIsKV0oaHR0cHM6Ly9za2lsbGljb25zLmRldikKCiMjIF9Db2RlIFNuaXBwZXRfCgpgYGBqYXZhCmltcG9ydCBqYXZhLnV0aWwuTGlzdDsKCi8qKgogKiAKICogQGF1dGhvciByaWNhcmRvQGZlcnJlaXJhcy5kZXYuYnIKICogQHZlcnNpb24gMS4xLjEwLjIzLjAxCiAqIEBzaW5jZSAxLjAKICoKICovCgpAUmVzdENvbnRyb2xsZXIKQFJlcXVlc3RNYXBwaW5nKCJhcGkvdjEiKQpwdWJsaWMgY2xhc3MgQ29udGFjdENvbnRyb2xsZXIgewoKICAgIHByaXZhdGUgZmluYWwgQ29udGFjdFNlcnZpY2UgY29udGFjdFNlcnZpY2U7CgogICAgcHVibGljIENvbnRhY3RDb250cm9sbGVyKENvbnRhY3RTZXJ2aWNlIGNvbnRhY3RTZXJ2aWNlKSB7CiAgICAgICAgdGhpcy5jb250YWN0U2VydmljZSA9IGNvbnRhY3RTZXJ2aWNlOwogICAgfQoKICAgIEBPcGVyYXRpb24oc3VtbWFyeSA9ICJGZXRjaCAyMCBjb250YWN0cyBwZXIgcGFnZSIpCiAgICBAQXBpUmVzcG9uc2VzKHZhbHVlID0gewogICAgICAgICAgICBAQXBpUmVzcG9uc2UocmVzcG9uc2VDb2RlID0gIjIwMCIsIGRlc2NyaXB0aW9uID0gIkdldCB1cCB0byAyMCBjb250YWN0cyBwZXIgcGFnZS4iLAogICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSB7QENvbnRlbnQobWVkaWFUeXBlID0gImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hID0gQFNjaGVtYSAoaW1wbGVtZW50YXRpb24gPSBSZXNwb25zZUNvbnRhY3RzRHRvLmNsYXNzKSl9KSwKICAgICAgICAgICAgQEFwaVJlc3BvbnNlKHJlc3BvbnNlQ29kZSA9ICI0MDAiLCBkZXNjcmlwdGlvbiA9ICJCYWQgUmVxdWVzdCIsCiAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IHtAQ29udGVudChtZWRpYVR5cGUgPSAiYXBwbGljYXRpb24vanNvbiIpfSksCiAgICAgICAgICAgIEBBcGlSZXNwb25zZShyZXNwb25zZUNvZGUgPSAiNDAxIiwgZGVzY3JpcHRpb24gPSAiQWNjZXNzIERlbmllZCIsCiAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IHtAQ29udGVudChtZWRpYVR5cGUgPSAiYXBwbGljYXRpb24vanNvbiIpfSksCiAgICAgICAgICAgIEBBcGlSZXNwb25zZShyZXNwb25zZUNvZGUgPSAiNDAzIiwgZGVzY3JpcHRpb24gPSAiRk9SQklEREVOIiwKICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0ge0BDb250ZW50KG1lZGlhVHlwZSA9ICJhcHBsaWNhdGlvbi9qc29uIil9KSwKICAgICAgICAgICAgQEFwaVJlc3BvbnNlKHJlc3BvbnNlQ29kZSA9ICI0MDQiLCBkZXNjcmlwdGlvbiA9ICJSZXNvdXJjZSBub3QgZm91bmQhIiwKICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0ge0BDb250ZW50KG1lZGlhVHlwZSA9ICJhcHBsaWNhdGlvbi9qc29uIil9KQogICAgfSkKICAgIEBSZXNwb25zZVN0YXR1cyhIdHRwU3RhdHVzLk9LKQogICAgQEdldE1hcHBpbmcoIi9jb250YWN0cyIpCiAgICBAUHJlQXV0aG9yaXplKCJoYXNBdXRob3JpdHkoJ1NDT1BFX1JPTEVfQURNSU4nKSIpCiAgICBwdWJsaWMgTW9ubzxSZXNwb25zZUNvbnRhY3RzRHRvPiBnZXRDb250YWN0cygKICAgICAgICAgICAgQFJlcXVlc3RQYXJhbShkZWZhdWx0VmFsdWUgPSAiMSIpIGludCBwYWdlLAogICAgICAgICAgICBAUmVxdWVzdFBhcmFtKGRlZmF1bHRWYWx1ZSA9ICIyMCIpIGludCBzaXplCiAgICApIHsKCiAgICAgICAgcmV0dXJuIGNvbnRhY3RTZXJ2aWNlLm1ha2VBcGlSZXF1ZXN0KCkKICAgICAgICAgICAgICAgIC5ib2R5VG9Nb25vKFJlc3BvbnNlQ29udGFjdHNEdG8uY2xhc3MpOwoKICAgIH0KfQoKCmBgYCAKCiMjIF9Db250aW51ZWQgZGV2ZWxvcG1lbnRfCgotIFVuaXQgVGVzdHMgLSBkb25lCi0gU3Vic2NyaWJlciBBdXRoZW50aWNhdGlvbiAtIGRvbmUKLSBTcHJpbmcgSldULU9BdXRoMiAtIGRvbmUKLSBSZWNvcmRzIFBhZ2luYXRpb24gLSBkb25lCgojIyMgX1VzZWZ1bCByZXNvdXJjZXNfCgotIFtodHRwczovL3NwcmluZy5pby9dIEF3ZXNvbWUgSmF2YSBmcmFtZXdvcmshLgotIFtodHRwczovL3N0YXJ0LnNwcmluZy5pby9dICBIYW5keSBzdGFydHVwIHRvb2wuCi0gW2h0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vXQoKIyMgX0F1dGhvcl8KPGEgaHJlZj0ibWFpbHRvOnJpY2FyZG9AZmVycmVpcmFzLmRldi5iciI+UmljYXJkbyBGZXJyZWlyYTwvYT4KCiMjIC0gX1BvcnRmb2xpb18KPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmVycmVpcmFzLmRldi5iciIgdGFyZ2V0PSJfYmxhbmsiPk15IFBvcnRmb2xpby4uLjwvYT4KCg== readmeEtag: '"5a881b0cf9afb5e132b61fbeab6ab16b6ea17123"' readmeLastModified: Sat, 02 Nov 2024 23:57:04 GMT repositoryId: 877578929 description: API Aggregator created: '2024-10-23T22:35:19Z' updated: '2024-11-02T23:57:08Z' language: HTML archived: false stars: 1 watchers: 1 forks: 0 owner: rnhc1000 logo: https://avatars.githubusercontent.com/u/60550902?v=4 repoEtag: '"2df1459b0050e590ff53a0f3626689e84d875909b9f9db05a321cf270c5941db"' repoLastModified: Sat, 02 Nov 2024 23:57:08 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/camptocamp/geoserver-rest-openapi v3: true repositoryMetadata: base64Readme: >- IyBHZW9TZXJ2ZXIgSmF2YSBSRVNUIGNsaWVudAoKIyMgUnVuIGludGVncmF0aW9uIHRlc3RzOgoKYGBgCm12biB2ZXJpZnkgLVBkb2NrZXIKYGBgCgpXaWxsIGZpcmUgdXAgdGhlIGdlb3NlcnZlciBkb2NrZXIgY29udGFpbmVyIGF0IHByZS1pbnRlZ3JhdGlvbi10ZXN0cywgcnVuIHRoZSB0ZXN0cyBhdAppbnRlZ3JhdGlvbi10ZXN0LCBhbmQgc2h1dCB0aGUgY29udGFpbmVyIGRvd24gYXQgcG9zdC1pbnRlZ3JhdGlvbi10ZXN0cy4KCiMjIFJ1biBmcm9tIElERToKCkhhdmUgdGhlIEdlb1NlcnZlciBkb2NrZXIgY29udGFpbmVyIHJ1bm5pbmcgYmVmb3JlIGV4ZWN1dGluZyB0aGUgdGVzdHMgZnJvbSB0aGUgSURFOgoKYGBgCmRvY2tlciBydW4gLWl0IC0tcm0gLS1uYW1lIGdzdGVzdHMgLXA4MDgwOjgwODAgb3NjYXJmb250cy9nZW9zZXJ2ZXI6Mi4xNS40CmBgYAoKUGFzcyB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSB0ZXN0IHJ1biBjb25maWd1cmF0aW9uIG9uIHRoZSBJREU6CgpgYGAKLURnZW9zZXJ2ZXJfYXBpX3VybD1odHRwOi8vbG9jYWxob3N0OjgwODAvZ2Vvc2VydmVyL3Jlc3QKYGBgCgo= readmeEtag: '"152af872e3611bddd0e7b7a6478a499726385d23"' readmeLastModified: Thu, 18 Feb 2021 01:33:52 GMT repositoryId: 335228268 description: >- GeoServer REST client based on curated OpenAPI 3 document, using openapi-codegen to generate the client, and customized code to simplify it. created: '2021-02-02T09:03:44Z' updated: '2024-11-04T13:14:36Z' language: Java archived: false stars: 1 watchers: 22 forks: 5 owner: camptocamp logo: https://avatars.githubusercontent.com/u/28109?v=4 repoEtag: '"a92f0aad0bf6e01088f825e9cf2c6ddc7016b1e30bd06002973700f4d6180181"' repoLastModified: Mon, 04 Nov 2024 13:14:36 GMT foundInMaster: true category: - Code Generators - Server Implementations id: f1ffebfb85dc3b1b4b7d576a63d13259 - source: openapi3 tags repository: https://github.com/retr0h/osapi v3: true id: 33c7e6d9bdd60e5a6138cb80e6611e5a repositoryMetadata: base64Readme: >- WyFbcmVsZWFzZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvcmVsZWFzZS9yZXRyMGgvb3NhcGkuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UpXShodHRwczovL2dpdGh1Yi5jb20vcmV0cjBoL29zYXBpL3JlbGVhc2VzL2xhdGVzdCkKWyFbY29kZWNvdl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jb2RlY292L2MvZ2l0aHViL3JldHIwaC9vc2FwaT90b2tlbj1ORjBUODZCMUVQJnN0eWxlPWZvci10aGUtYmFkZ2UpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvcmV0cjBoL29zYXBpKQpbIVtnbyByZXBvcnQgY2FyZF0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vcmV0cjBoL29zYXBpP3N0eWxlPWZvci10aGUtYmFkZ2UpXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vcmV0cjBoL29zYXBpKQpbIVtsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWJyaWdodGdyZWVuLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oTElDRU5TRSkKWyFbYnVpbGRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL3JldHIwaC9vc2FwaS9nby55bWw/c3R5bGU9Zm9yLXRoZS1iYWRnZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9yZXRyMGgvb3NhcGkvYWN0aW9ucy93b3JrZmxvd3MvZ28ueW1sKQpbIVtwb3dlcmVkIGJ5XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3Bvd2VyZWQlMjBieS1nb3JlbGVhc2VyLWdyZWVuLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9naXRodWIuY29tL2dvcmVsZWFzZXIpClshW2NvbnZlbnRpb25hbCBjb21taXRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0NvbnZlbnRpb25hbCUyMENvbW1pdHMtMS4wLjAteWVsbG93LnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly9jb252ZW50aW9uYWxjb21taXRzLm9yZykKIVtvcGVuYXBpIGluaXRpYXRpdmVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvb3BlbmFwaWluaXRpYXRpdmUtJTIzMDAwMDAwLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289b3BlbmFwaWluaXRpYXRpdmUmbG9nb0NvbG9yPXdoaXRlKQohW0xpbnV4XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpbnV4LUZDQzYyND9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289bGludXgmbG9nb0NvbG9yPWJsYWNrKQohW2dpdEh1YiBjb21taXQgYWN0aXZpdHldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2NvbW1pdC1hY3Rpdml0eS9tL3JldHIwaC9vc2FwaT9zdHlsZT1mb3ItdGhlLWJhZGdlKQoKIyBPUyBBUEkKCjxpbWcgc3JjPSJhc3NldC9sb2dvLnBuZyIgYWxpZ249ImxlZnQiIC8+CgoqKE9TQVBJIC/LiG/KinPJkcuQcGkvIC0gT2gtc2FoLXBlZSkqIEEgQ1JVRCBBUEkgZm9yIG1hbmFnaW5nIExpbnV4IHN5c3RlbXMuCgpUaGlzIHByb2plY3QgcHJvdmlkZXMgYmFzaWMgbWFuYWdlbWVudCBjYXBhYmlsaXRpZXMgdG8gTGludXggc3lzdGVtcywgZW5hYmxpbmcKdGhlbSB0byBiZSB1c2VkIGFzIGFwcGxpYW5jZXMuCgo8YnIgY2xlYXI9ImxlZnQiLz4KCiMjIERvY3VtZW50YXRpb24KCltHZXR0aW5nIFN0YXJ0ZWRdW10gfCBbQVBJXVtdIHwgW1VzYWdlXVtdCgpbR2V0dGluZyBTdGFydGVkXTogaHR0cHM6Ly9yZXRyMGguZ2l0aHViLmlvL29zYXBpLwpbQVBJXTogaHR0cHM6Ly9yZXRyMGguZ2l0aHViLmlvL29zYXBpL2NhdGVnb3J5L2FwaQpbVXNhZ2VdOiBodHRwczovL3JldHIwaC5naXRodWIuaW8vb3NhcGkvc2lkZWJhci91c2FnZS8KCiMjIExpY2Vuc2UKClRoZSBbTUlUXVtdIExpY2Vuc2UuCgpbTUlUXTogTElDRU5TRQo= readmeEtag: '"b8fa3957016e79007d28949115520de0b924c23f"' readmeLastModified: Wed, 18 Dec 2024 20:21:46 GMT repositoryId: 843181662 description: A CRUD API for managing Linux systems. created: '2024-08-16T00:37:30Z' updated: '2025-06-17T01:22:42Z' language: Go archived: false stars: 1 watchers: 1 forks: 0 owner: retr0h logo: https://avatars.githubusercontent.com/u/9895?v=4 license: MIT repoEtag: '"d14543a0d9df4a6430fbb5eef075139186268838155ad2e54271f8ff34fc7fc3"' repoLastModified: Tue, 17 Jun 2025 01:22:42 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/vivek-26/koa-openapi3-router v3: true repositoryMetadata: base64Readme: IyMjIFRoaXMgbGlicmFyeSBpcyBpbiBhbHBoYSBzdGFnZQ== readmeEtag: '"3bd885ad877c6caf1065abbe1da2e9418a4411dd"' readmeLastModified: Sat, 17 Mar 2018 05:57:23 GMT repositoryId: 123946298 description: Koa (v2) Router, based on OpenAPI 3 Doc. created: '2018-03-05T16:22:45Z' updated: '2018-04-09T12:18:40Z' language: JavaScript archived: false stars: 1 watchers: 2 forks: 0 owner: vivek-26 logo: https://avatars.githubusercontent.com/u/16881423?v=4 license: MIT repoEtag: '"f24c436d7b002d51ba27c53da7df26362464f44924c9919ae7d049546a2e8ff2"' repoLastModified: Mon, 09 Apr 2018 12:18:40 GMT foundInMaster: true category: - Documentation - Testing - Parsers id: 60f2c3139be2a10f5462502ef6f862d5 - source: openapi3 tags repository: https://github.com/opencars/docs v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQ2FycyBBUEkKCkFQSSDQtNC70Y8g0L/Rg9Cx0LvRltGH0L3QvtGXINGW0L3RhNC+0YDQvNCw0YbRltGXINC/0YDQviDRgtGA0LDQvdGB0L/QvtGA0YLQvdGWINC30LDRgdC+0LHQuCDQo9C60YDQsNGX0L3QuAoKIyMgVGFibGUgb2YgQ29udGVudHMKCiogW1NlcnZlcnNdKCNzZXJ2ZXJzKQoqIFtQYXRoc10oI3BhdGhzKQogIC0gW2BHRVRgIC9vcGVyYXRpb25zXSgjb3AtZ2V0LW9wZXJhdGlvbnMpIAogIC0gW2BHRVRgIC9yZWdpc3RyYXRpb25zXSgjb3AtZ2V0LXJlZ2lzdHJhdGlvbnMpIAogIC0gW2BHRVRgIC9yZWdpc3RyYXRpb25zL3tjb2RlfV0oI29wLWdldC1yZWdpc3RyYXRpb25zLWNvZGUpIAogIC0gW2BHRVRgIC93YW50ZWQvdmVoaWNsZXNdKCNvcC1nZXQtd2FudGVkLXZlaGljbGVzKSAKICAtIFtgR0VUYCAvd2FudGVkL3JldmlzaW9uc10oI29wLWdldC13YW50ZWQtcmV2aXNpb25zKSAKICAtIFtgR0VUYCAvd2FudGVkL3JldmlzaW9ucy97aWR9XSgjb3AtZ2V0LXdhbnRlZC1yZXZpc2lvbnMtaWQpIAogIC0gW2BHRVRgIC93YW50ZWQvcmV2aXNpb25zL3N0YXRzXSgjb3AtZ2V0LXdhbnRlZC1yZXZpc2lvbnMtc3RhdHMpIAoqIFtTY2hlbWFzXSgjc2NoZW1hcykKICAtIEVycm9yCiAgLSBPcGVyYXRpb24KICAtIFJlZ2lzdHJhdGlvbgogIC0gV2FudGVkVmVoaWNsZQogIC0gV2FudGVkUmV2aXNpb24KICAtIFdhbnRlZFJldmlzaW9uU3RhdE1vbnRoCgoKPGEgaWQ9InNlcnZlcnMiIC8+CiMjIFNlcnZlcnMKCjx0YWJsZT4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD5VUkw8L3RoPgogICAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgPHRyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgPHRyPgogICAgICA8dGQ+PGEgaHJlZj0iaHR0cHM6Ly9hcGkub3BlbmNhcnMuYXBwL2FwaS92MS8iIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2FwaS5vcGVuY2Fycy5hcHAvYXBpL3YxLzwvYT48L3RkPgogICAgICA8dGQ+PC90ZD4KICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCjxhIG5hbWU9InNlY3VyaXR5Ij48L2E+CiMjIFNlY3VyaXR5Cgo8dGFibGUgY2xhc3M9InRhYmxlIj4KICA8dGhlYWQgY2xhc3M9InRhYmxlX19oZWFkIj4KICAgIDx0ciBjbGFzcz0idGFibGVfX2hlYWRfX3JvdyI+CiAgICAgIDx0aCBjbGFzcz0idGFibGVfX2hlYWRfX2NlbGwiPlR5cGU8L3RoPgogICAgICA8dGggY2xhc3M9InRhYmxlX19oZWFkX19jZWxsIj5JbjwvdGg+CiAgICAgIDx0aCBjbGFzcz0idGFibGVfX2hlYWRfX2NlbGwiPk5hbWU8L3RoPgogICAgICA8dGggY2xhc3M9InRhYmxlX19oZWFkX19jZWxsIj5TY2hlbWU8L3RoPgogICAgICA8dGggY2xhc3M9InRhYmxlX19oZWFkX19jZWxsIj5Gb3JtYXQ8L3RoPgogICAgICA8dGggY2xhc3M9InRhYmxlX19oZWFkX19jZWxsIj5EZXNjcmlwdGlvbjwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5IGNsYXNzPSJ0YWJsZV9fYm9keSI+CiAgICA8dHIgY2xhc3M9InRhYmxlX19ib2R5X19yb3ciPgogICAgICA8dGQgY2xhc3M9InRhYmxlX19ib2R5X19jZWxsIj5hcGlLZXk8L3RkPgogICAgICA8dGQgY2xhc3M9InRhYmxlX19ib2R5X19jZWxsIj5oZWFkZXI8L3RkPgogICAgICA8dGQgY2xhc3M9InRhYmxlX19ib2R5X19jZWxsIj5BcGktS2V5PC90ZD4KICAgICAgPHRkIGNsYXNzPSJ0YWJsZV9fYm9keV9fY2VsbCI+PC90ZD4KICAgICAgPHRkIGNsYXNzPSJ0YWJsZV9fYm9keV9fY2VsbCI+PC90ZD4KICAgICAgPHRkIGNsYXNzPSJ0YWJsZV9fYm9keV9fY2VsbCI+PC90ZD4KICAgIDwvdHI+CgogIDwvdGJvZHk+CjwvdGFibGU+CgojIyBQYXRocwoKCiMjIyBgR0VUYCAvb3BlcmF0aW9ucwo8YSBpZD0ib3AtZ2V0LW9wZXJhdGlvbnMiIC8+Cgo+INCG0L3RhNC+0YDQvNCw0YbRltGPINC/0YDQviDQvtC/0LXRgNCw0YbRltGXINC30LAg0YDQtdGU0YHRgtGA0LDRhtGW0LnQvdC40Lwg0L3QvtC80LXRgNC+0LwKCgoKCgojIyMjIFF1ZXJ5IHBhcmFtZXRlcnMKCiMjIyMjICYjOTY1NTsgbnVtYmVyCgrQoNC10ZTRgdGC0YDQsNGG0ZbQudC90LjQuSDQvdC+0LzQtdGACgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5JbjwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5udW1iZXIgIDxzdHJvbmc+KHJlcXVpcmVkKTwvc3Ryb25nPjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+cXVlcnk8L3RkPgogICAgICAgIDx0ZD7QoNC10ZTRgdGC0YDQsNGG0ZbQudC90LjQuSDQvdC+0LzQtdGAPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKCiMjIyMjICYjOTY1NTsgbGltaXQKCtCa0ZbQu9GM0LrRltGB0YLRjCDQt9Cw0L/QuNGB0ZbQsgoKCjx0YWJsZT4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD5OYW1lPC90aD4KICAgICAgPHRoPlR5cGU8L3RoPgogICAgICA8dGg+SW48L3RoPgogICAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgICA8dGg+QWNjZXB0ZWQgdmFsdWVzPC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+bGltaXQgPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBpbnRlZ2VyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+cXVlcnk8L3RkPgogICAgICAgIDx0ZD7QmtGW0LvRjNC60ZbRgdGC0Ywg0LfQsNC/0LjRgdGW0LI8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgoKIyMjIyMgJiM5NjU1OyBvcmRlcgoK0J/QvtGA0Y/QtNC+0Log0YHQvtGA0YLRg9Cy0LDQvdC90Y8KCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkluPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPm9yZGVyIDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+cXVlcnk8L3RkPgogICAgICAgIDx0ZD7Qn9C+0YDRj9C00L7QuiDRgdC+0YDRgtGD0LLQsNC90L3RjzwvdGQ+CiAgICAgICAgPHRkPjxjb2RlPmFzYzwvY29kZT4sIDxjb2RlPmRlc2M8L2NvZGU+PC90ZD4KICAgICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKCgoKCgojIyMjIFJlc3BvbnNlcwoKCiMjIyMjIOKWtiAyMDAgLSBPSwoKIyMjIyMjIEhlYWRlcnMKX05vIGhlYWRlcnMgc3BlY2lmaWVkXwoKIyMjIyMjIGFwcGxpY2F0aW9uL2pzb24KCgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZTwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgYXJyYXkob2JqZWN0KQogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UubnVtYmVyPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QoNC10ZTRgdGC0YDQsNGG0ZbQudC90LjQuSDQvdC+0LzQtdGAPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5icmFuZDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JzQsNGA0LrQsDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UubW9kZWw8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCc0L7QtNC10LvRjDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UueWVhcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgaW50ZWdlcgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCg0ZbQuiDQstC40L/Rg9GB0LrRgzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UuZGF0ZTwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JTQsNGC0LAg0L/RgNC+0LLQtdC00LXQvdC90Y8g0L7Qv9C10YDQsNGG0ZbRlzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UucmVnaXN0cmF0aW9uPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QktC40LQg0YDQtdGU0YHRgtGA0LDRhtGW0Zc8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPlJlc3BvbnNlLnJlZ2lzdHJhdGlvbl9jb2RlPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBpbnRlZ2VyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JrQvtC0INCy0LjQtNGDINGA0LXRlNGB0YLRgNCw0YbRltGXPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5mdWVsPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QotC40L8g0L/QsNC70YzQvdC+0LPQvjwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UuY2FwYWNpdHk8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIG51bWJlcgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCe0LEn0ZTQvCDQtNCy0LjQs9GD0L3QsDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UuY29sb3I8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCa0L7Qu9GW0YAg0YLRgNCw0L3RgdC/0L7RgNGC0L3QvtCz0L4g0LfQsNGB0L7QsdGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5raW5kPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QotC40L8g0YLRgNCw0L3RgdC/0L7RgNGC0L3QvtCz0L4g0LfQsNGB0L7QsdGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5ib2R5PC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QotC40L8g0LrRg9C30L7QstGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5wdXJwb3NlPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7Qn9GA0LjQt9C90LDRh9C10L3QvdGPPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5vd25fd2VpZ2h0PC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBpbnRlZ2VyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JzQsNGB0LAg0LHQtdC3INC90LDQstCw0L3RgtCw0LbQtdC90L3RjzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UudG90YWxfd2VpZ2h0PC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBpbnRlZ2VyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J/QvtCy0L3QsCDQvNCw0YHQsDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UucmVnX2FkZHJfa29hdHV1PC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QkNC00YDQtdGB0LAg0YDQtdGU0YHRgtGA0LDRhmnRlyDRgyDRhNC+0YDQvNCw0YLRliDQmtCe0JDQotCj0KM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPlJlc3BvbnNlLmRlcF9jb2RlPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBpbnRlZ2VyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JrQvtC0INC00LXQv9Cw0YDRgtCw0LzQtdC90YLRgzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UuZGVwPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QndCw0LfQstCwINC00LXQv9Cw0YDRgtCw0LzQtdC90YLRgzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UucGVyc29uPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QndCw0LfQstCwINC00LXQv9Cw0YDRgtCw0LzQtdC90YLRgzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KWwogIHsKICAgICJudW1iZXIiOiAi0JDQkDkzNTnQoNChIiwKICAgICJicmFuZCI6ICJURVNMQSIsCiAgICAibW9kZWwiOiAiTU9ERUwgWCIsCiAgICAieWVhciI6IDIwMTYsCiAgICAiZGF0ZSI6ICIyMDE2LTEwLTEzIiwKICAgICJyZWdpc3RyYXRpb24iOiAi0KDQldCE0KHQotCg0JDQpknQryDQotCXINCf0KDQmNCS0JXQl9CV0J3QntCT0J4g0Jct0JfQkCDQmtCe0KDQlNCe0J3QoyDQn9CeINCS0JzQlCIsCiAgICAicmVnaXN0cmF0aW9uX2NvZGUiOiA3MCwKICAgICJmdWVsIjogItCV0JvQldCa0KLQoNCeIiwKICAgICJjYXBhY2l0eSI6IG51bGwsCiAgICAiY29sb3IiOiAi0KfQntCg0J3QmNCZIiwKICAgICJraW5kIjogItCb0JXQk9Ca0J7QktCY0JkiLAogICAgImJvZHkiOiAi0KPQndCG0JLQldCg0KHQkNCbLUIiLAogICAgInB1cnBvc2UiOiAi0JfQkNCT0JDQm9Cs0J3QmNCZIiwKICAgICJvd25fd2VpZ2h0IjogMjQ4NSwKICAgICJ0b3RhbF93ZWlnaHQiOiAzMDIxLAogICAgInJlZ19hZGRyX2tvYXR1dSI6ICI4MDM2NjAwMDAwIiwKICAgICJkZXBfY29kZSI6IDgwNDQsCiAgICAiZGVwIjogItCm0LXQvdGC0YAgODA0NCIsCiAgICAicGVyc29uIjogItCu0YDQuNC00LjRh9C90LAg0L7RgdC+0LHQsCIKICB9Cl0KYGBgCiMjIyMjIOKWtiA0MDAgLSDQn9C+0LzQuNC70LrQvtCy0LjQuSDQt9Cw0L/QuNGCCgojIyMjIyMgSGVhZGVycwpfTm8gaGVhZGVycyBzcGVjaWZpZWRfCgojIyMjIyMgYXBwbGljYXRpb24vanNvbgoKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmVycm9yPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QntC/0LjRgSDQv9C+0LzQuNC70LrQuDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KewogICJlcnJvciI6ICJzdHJpbmciCn0KYGBgCiMjIyMjIOKWtiA0MDEgLSDQn9C+0YLRgNGW0LHQvdCwINCQ0LLRgtC+0YDQuNC30LDRhtGW0Y8KCiMjIyMjIyBIZWFkZXJzCl9ObyBoZWFkZXJzIHNwZWNpZmllZF8KCiMjIyMjIOKWtiA0MDUgLSDQn9C+0LzQuNC70LrQvtCy0LjQuSDQvNC10YLQvtC0CgojIyMjIyMgSGVhZGVycwpfTm8gaGVhZGVycyBzcGVjaWZpZWRfCgojIyMjIyMgYXBwbGljYXRpb24vanNvbgoKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmVycm9yPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QntC/0LjRgSDQv9C+0LzQuNC70LrQuDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KewogICJlcnJvciI6ICJzdHJpbmciCn0KYGBgCiMjIyMjIOKWtiA1MDAgLSDQn9C+0LzQuNC70LrQsAoKIyMjIyMjIEhlYWRlcnMKX05vIGhlYWRlcnMgc3BlY2lmaWVkXwoKIyMjIyMjIGFwcGxpY2F0aW9uL2pzb24KCgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5lcnJvcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J7Qv9C40YEg0L/QvtC80LjQu9C60Lg8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgoKIyMjIyMgRXhhbXBsZSBfKGdlbmVyYXRlZClfCgpgYGBqc29uCnsKICAiZXJyb3IiOiAic3RyaW5nIgp9CmBgYAoKIyMjIyBUYWdzCgo8ZGl2IGNsYXNzPSJ0YWdzIj4KICA8ZGl2IGNsYXNzPSJ0YWdzX190YWciPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CgojIyMgYEdFVGAgL3JlZ2lzdHJhdGlvbnMKPGEgaWQ9Im9wLWdldC1yZWdpc3RyYXRpb25zIiAvPgoKPiDQhtC90YTQvtGA0LzQsNGG0ZbRjyDQv9GA0L4g0YDQtdGU0YHRgtGA0LDRhtGW0Zcg0YLRgNCw0L3RgdC/0L7RgNGC0L3QvtCz0L4g0LfQsNGB0L7QsdGDCgoKCgoKIyMjIyBRdWVyeSBwYXJhbWV0ZXJzCgojIyMjIyAmIzk2NTU7IG51bWJlcgoK0KDQtdGU0YHRgtGA0LDRhtGW0LnQvdC40Lkg0L3QvtC80LXRgAoKCjx0YWJsZT4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD5OYW1lPC90aD4KICAgICAgPHRoPlR5cGU8L3RoPgogICAgICA8dGg+SW48L3RoPgogICAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgICA8dGg+QWNjZXB0ZWQgdmFsdWVzPC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+bnVtYmVyIDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+cXVlcnk8L3RkPgogICAgICAgIDx0ZD7QoNC10ZTRgdGC0YDQsNGG0ZbQudC90LjQuSDQvdC+0LzQtdGAPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKCiMjIyMjICYjOTY1NTsgdmluCgpWSU4KCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkluPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPnZpbiA8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPnF1ZXJ5PC90ZD4KICAgICAgICA8dGQ+VklOPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKCiMjIyMjICYjOTY1NTsgY29kZQoK0J3QvtC80LXRgCDRgdCy0ZbQtNC+0YLRgdGC0LLQsCDQv9GA0L4g0YDQtdGU0YHRgtGA0LDRhtGW0Y4KCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkluPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmNvZGUgPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD5xdWVyeTwvdGQ+CiAgICAgICAgPHRkPtCd0L7QvNC10YAg0YHQstGW0LTQvtGC0YHRgtCy0LAg0L/RgNC+INGA0LXRlNGB0YLRgNCw0YbRltGOPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKCgoKCgojIyMjIFJlc3BvbnNlcwoKCiMjIyMjIOKWtiAyMDAgLSBPSwoKIyMjIyMjIEhlYWRlcnMKX05vIGhlYWRlcnMgc3BlY2lmaWVkXwoKIyMjIyMjIGFwcGxpY2F0aW9uL2pzb24KCgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZTwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgYXJyYXkob2JqZWN0KQogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UubnVtYmVyPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QoNC10ZTRgdGC0YDQsNGG0ZbQudC90LjQuSDQvdC+0LzQtdGAPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5jb2RlPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QndC+0LzQtdGAINGB0LLRltC00L7RhtGC0LLQsCDQv9GA0L4g0YDQtdGU0YHRgtGA0LDRhtGW0Y4g0YLRgNCw0L3RgdC/0L7RgNGC0L3QvtCz0L4g0LfQsNGB0L7QsdGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS52aW48L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPlZJTi3QutC+0LQ8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPlJlc3BvbnNlLmJyYW5kPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QnNCw0YDQutCwPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5tb2RlbDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JzQvtC00LXQu9GMPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5jYXBhY2l0eTwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgbnVtYmVyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J7QsSfRlNC8INC00LLQuNCz0YPQvdCwPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5yYW5rX2NhdGVnb3J5PC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QmtCw0YLQtdCz0L7RgNGW0Y8g0YLRgNCw0L3RgdC/0L7RgNGC0L3QvtCz0L4g0LfQsNGB0L7QsdGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5udW1fc2VhdGluZzwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgaW50ZWdlcgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCa0ZbQu9GM0LrRltGB0YLRjCDRgdGC0L7Rj9GH0LjRhSDQvNGW0YHRhtGMPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5udW1fc3RhbmRpbmc8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIGludGVnZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QmtGW0LvRjNC60ZbRgdGC0Ywg0YHQuNC00Y/Rh9C40YUg0LzRltGB0YbRjDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UuY29sb3I8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCa0L7Qu9GW0YA8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPlJlc3BvbnNlLmRhdGU8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCU0LDRgtCwINGA0LXRlNGB0YLRgNCw0YbRltGXPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5maXJzdF9yZWdfZGF0ZTwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JTQsNGC0LAg0L/QtdGA0YjQvtGXINGA0LXRlNGB0YLRgNCw0YbRltGXPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5mdWVsPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QotC40L8g0L/QsNC70YzQvdC+0LPQvjwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2Uua2luZDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0KLQuNC/PC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5vd25fd2VpZ2h0PC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBudW1iZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QnNCw0YHQsCDQsdC10Lcg0L3QsNCy0LDQvdGC0LDQttC10L3QvdGPPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS50b3RhbF93ZWlnaHQ8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIG51bWJlcgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCf0L7QstC90LAg0LzQsNGB0LA8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPlJlc3BvbnNlLnllYXI8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIGludGVnZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QoNGW0Log0LLQuNC/0YPRgdC60YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgoKIyMjIyMgRXhhbXBsZSBfKGdlbmVyYXRlZClfCgpgYGBqc29uClsKICB7CiAgICAibnVtYmVyIjogItCQ0JA5MzU50KDQoSIsCiAgICAiY29kZSI6ICLQodCl0J00ODQxNTQiLAogICAgInZpbiI6ICI1WUpYQ0NFNDBHRjAxMDU0MyIsCiAgICAiYnJhbmQiOiAiVEVTTEEiLAogICAgIm1vZGVsIjogIk1PREVMIFgiLAogICAgImNhcGFjaXR5IjogbnVsbCwKICAgICJyYW5rX2NhdGVnb3J5IjogIkIiLAogICAgIm51bV9zZWF0aW5nIjogbnVsbCwKICAgICJudW1fc3RhbmRpbmciOiA3LAogICAgImNvbG9yIjogItCn0J7QoNCd0JjQmSIsCiAgICAiZGF0ZSI6ICIyMDE5LTA2LTA1IiwKICAgICJmaXJzdF9yZWdfZGF0ZSI6ICIyMDE2LTEwLTEzIiwKICAgICJmdWVsIjogItCV0JvQldCa0KLQoNCeIiwKICAgICJraW5kIjogItCb0JXQk9Ca0J7QktCY0Jkg0KPQndCG0JLQldCg0KHQkNCbLUIiLAogICAgIm93bl93ZWlnaHQiOiAyNDg1LAogICAgInRvdGFsX3dlaWdodCI6IDMwMjEsCiAgICAieWVhciI6IDIwMTYKICB9Cl0KYGBgCiMjIyMjIOKWtiA0MDAgLSDQn9C+0LzQuNC70LrQvtCy0LjQuSDQt9Cw0L/QuNGCCgojIyMjIyMgSGVhZGVycwpfTm8gaGVhZGVycyBzcGVjaWZpZWRfCgojIyMjIyMgYXBwbGljYXRpb24vanNvbgoKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmVycm9yPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QntC/0LjRgSDQv9C+0LzQuNC70LrQuDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KewogICJlcnJvciI6ICJzdHJpbmciCn0KYGBgCiMjIyMjIOKWtiA0MDEgLSDQn9C+0YLRgNGW0LHQvdCwINCQ0LLRgtC+0YDQuNC30LDRhtGW0Y8KCiMjIyMjIyBIZWFkZXJzCl9ObyBoZWFkZXJzIHNwZWNpZmllZF8KCiMjIyMjIOKWtiA0MDUgLSDQn9C+0LzQuNC70LrQvtCy0LjQuSDQvNC10YLQvtC0CgojIyMjIyMgSGVhZGVycwpfTm8gaGVhZGVycyBzcGVjaWZpZWRfCgojIyMjIyMgYXBwbGljYXRpb24vanNvbgoKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmVycm9yPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QntC/0LjRgSDQv9C+0LzQuNC70LrQuDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KewogICJlcnJvciI6ICJzdHJpbmciCn0KYGBgCiMjIyMjIOKWtiA1MDAgLSDQn9C+0LzQuNC70LrQsAoKIyMjIyMjIEhlYWRlcnMKX05vIGhlYWRlcnMgc3BlY2lmaWVkXwoKIyMjIyMjIGFwcGxpY2F0aW9uL2pzb24KCgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5lcnJvcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J7Qv9C40YEg0L/QvtC80LjQu9C60Lg8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgoKIyMjIyMgRXhhbXBsZSBfKGdlbmVyYXRlZClfCgpgYGBqc29uCnsKICAiZXJyb3IiOiAic3RyaW5nIgp9CmBgYAoKIyMjIyBUYWdzCgo8ZGl2IGNsYXNzPSJ0YWdzIj4KICA8ZGl2IGNsYXNzPSJ0YWdzX190YWciPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CgojIyMgYEdFVGAgL3JlZ2lzdHJhdGlvbnMve2NvZGV9CjxhIGlkPSJvcC1nZXQtcmVnaXN0cmF0aW9ucy1jb2RlIiAvPgoKPiDQoNC10ZTRgdGC0YDQsNGG0ZbRjyDRgtGA0LDQvdGB0L/QvtGA0YLQvdC+0LPQviDQt9Cw0YHQvtCx0YMg0LfQsCDQvdC+0LzQtdGA0L7QvCDRgdCy0ZbQtNC+0YLRgdGC0LLQsAoKCgojIyMjIFBhdGggcGFyYW1ldGVycwoKIyMjIyMgJiM5NjU1OyBjb2RlCgrQndC+0LzQtdGAINGB0LLRltC00L7RgtGB0YLQstCwINC/0YDQviDRgNC10ZTRgdGC0YDQsNGG0ZbRjgoKCjx0YWJsZT4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD5OYW1lPC90aD4KICAgICAgPHRoPlR5cGU8L3RoPgogICAgICA8dGg+SW48L3RoPgogICAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgICA8dGg+QWNjZXB0ZWQgdmFsdWVzPC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+Y29kZSAgPHN0cm9uZz4ocmVxdWlyZWQpPC9zdHJvbmc+PC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD5wYXRoPC90ZD4KICAgICAgICA8dGQ+0J3QvtC80LXRgCDRgdCy0ZbQtNC+0YLRgdGC0LLQsCDQv9GA0L4g0YDQtdGU0YHRgtGA0LDRhtGW0Y48L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgoKCgoKCgoKIyMjIyBSZXNwb25zZXMKCgojIyMjIyDilrYgMjAwIC0gT0sKCiMjIyMjIyBIZWFkZXJzCl9ObyBoZWFkZXJzIHNwZWNpZmllZF8KCiMjIyMjIyBhcHBsaWNhdGlvbi9qc29uCgoKCjx0YWJsZT4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD5OYW1lPC90aD4KICAgICAgPHRoPlR5cGU8L3RoPgogICAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgICA8dGg+QWNjZXB0ZWQgdmFsdWVzPC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+bnVtYmVyPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QoNC10ZTRgdGC0YDQsNGG0ZbQudC90LjQuSDQvdC+0LzQtdGAPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5jb2RlPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QndC+0LzQtdGAINGB0LLRltC00L7RhtGC0LLQsCDQv9GA0L4g0YDQtdGU0YHRgtGA0LDRhtGW0Y4g0YLRgNCw0L3RgdC/0L7RgNGC0L3QvtCz0L4g0LfQsNGB0L7QsdGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD52aW48L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPlZJTi3QutC+0LQ8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPmJyYW5kPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QnNCw0YDQutCwPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5tb2RlbDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JzQvtC00LXQu9GMPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5jYXBhY2l0eTwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgbnVtYmVyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J7QsSfRlNC8INC00LLQuNCz0YPQvdCwPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5yYW5rX2NhdGVnb3J5PC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QmtCw0YLQtdCz0L7RgNGW0Y8g0YLRgNCw0L3RgdC/0L7RgNGC0L3QvtCz0L4g0LfQsNGB0L7QsdGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5udW1fc2VhdGluZzwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgaW50ZWdlcgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCa0ZbQu9GM0LrRltGB0YLRjCDRgdGC0L7Rj9GH0LjRhSDQvNGW0YHRhtGMPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5udW1fc3RhbmRpbmc8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIGludGVnZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QmtGW0LvRjNC60ZbRgdGC0Ywg0YHQuNC00Y/Rh9C40YUg0LzRltGB0YbRjDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+Y29sb3I8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCa0L7Qu9GW0YA8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPmRhdGU8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCU0LDRgtCwINGA0LXRlNGB0YLRgNCw0YbRltGXPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5maXJzdF9yZWdfZGF0ZTwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JTQsNGC0LAg0L/QtdGA0YjQvtGXINGA0LXRlNGB0YLRgNCw0YbRltGXPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5mdWVsPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QotC40L8g0L/QsNC70YzQvdC+0LPQvjwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+a2luZDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0KLQuNC/PC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5vd25fd2VpZ2h0PC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBudW1iZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QnNCw0YHQsCDQsdC10Lcg0L3QsNCy0LDQvdGC0LDQttC10L3QvdGPPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD50b3RhbF93ZWlnaHQ8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIG51bWJlcgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCf0L7QstC90LAg0LzQsNGB0LA8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPnllYXI8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIGludGVnZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QoNGW0Log0LLQuNC/0YPRgdC60YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgoKIyMjIyMgRXhhbXBsZSBfKGdlbmVyYXRlZClfCgpgYGBqc29uCnsKICAibnVtYmVyIjogItCQ0JA5MzU50KDQoSIsCiAgImNvZGUiOiAi0KHQpdCdNDg0MTU0IiwKICAidmluIjogIjVZSlhDQ0U0MEdGMDEwNTQzIiwKICAiYnJhbmQiOiAiVEVTTEEiLAogICJtb2RlbCI6ICJNT0RFTCBYIiwKICAiY2FwYWNpdHkiOiBudWxsLAogICJyYW5rX2NhdGVnb3J5IjogIkIiLAogICJudW1fc2VhdGluZyI6IG51bGwsCiAgIm51bV9zdGFuZGluZyI6IDcsCiAgImNvbG9yIjogItCn0J7QoNCd0JjQmSIsCiAgImRhdGUiOiAiMjAxOS0wNi0wNSIsCiAgImZpcnN0X3JlZ19kYXRlIjogIjIwMTYtMTAtMTMiLAogICJmdWVsIjogItCV0JvQldCa0KLQoNCeIiwKICAia2luZCI6ICLQm9CV0JPQmtCe0JLQmNCZINCj0J3QhtCS0JXQoNCh0JDQmy1CIiwKICAib3duX3dlaWdodCI6IDI0ODUsCiAgInRvdGFsX3dlaWdodCI6IDMwMjEsCiAgInllYXIiOiAyMDE2Cn0KYGBgCiMjIyMjIOKWtiA0MDAgLSDQn9C+0LzQuNC70LrQvtCy0LjQuSDQt9Cw0L/QuNGCCgojIyMjIyMgSGVhZGVycwpfTm8gaGVhZGVycyBzcGVjaWZpZWRfCgojIyMjIyMgYXBwbGljYXRpb24vanNvbgoKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmVycm9yPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QntC/0LjRgSDQv9C+0LzQuNC70LrQuDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KewogICJlcnJvciI6ICJzdHJpbmciCn0KYGBgCiMjIyMjIOKWtiA0MDEgLSDQn9C+0YLRgNGW0LHQvdCwINCQ0LLRgtC+0YDQuNC30LDRhtGW0Y8KCiMjIyMjIyBIZWFkZXJzCl9ObyBoZWFkZXJzIHNwZWNpZmllZF8KCiMjIyMjIOKWtiA0MDUgLSDQn9C+0LzQuNC70LrQvtCy0LjQuSDQvNC10YLQvtC0CgojIyMjIyMgSGVhZGVycwpfTm8gaGVhZGVycyBzcGVjaWZpZWRfCgojIyMjIyMgYXBwbGljYXRpb24vanNvbgoKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmVycm9yPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QntC/0LjRgSDQv9C+0LzQuNC70LrQuDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KewogICJlcnJvciI6ICJzdHJpbmciCn0KYGBgCiMjIyMjIOKWtiA1MDAgLSDQn9C+0LzQuNC70LrQsAoKIyMjIyMjIEhlYWRlcnMKX05vIGhlYWRlcnMgc3BlY2lmaWVkXwoKIyMjIyMjIGFwcGxpY2F0aW9uL2pzb24KCgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5lcnJvcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J7Qv9C40YEg0L/QvtC80LjQu9C60Lg8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgoKIyMjIyMgRXhhbXBsZSBfKGdlbmVyYXRlZClfCgpgYGBqc29uCnsKICAiZXJyb3IiOiAic3RyaW5nIgp9CmBgYAoKIyMjIyBUYWdzCgo8ZGl2IGNsYXNzPSJ0YWdzIj4KICA8ZGl2IGNsYXNzPSJ0YWdzX190YWciPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CgojIyMgYEdFVGAgL3dhbnRlZC92ZWhpY2xlcwo8YSBpZD0ib3AtZ2V0LXdhbnRlZC12ZWhpY2xlcyIgLz4KCj4g0IbQvdGE0L7RgNC80LDRhtGW0Y8g0L/RgNC+INCy0LjQutGA0LDQtNC10L3RliDRgtGA0LDQvdGB0L/QvtGA0YLQvdGWINC30LDRgdC+0LHQuAoKCgoKCiMjIyMgUXVlcnkgcGFyYW1ldGVycwoKIyMjIyMgJiM5NjU1OyBudW1iZXIKCtCg0LXRlNGB0YLRgNCw0YbRltC50L3QuNC5INC90L7QvNC10YAKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkluPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPm51bWJlciA8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPnF1ZXJ5PC90ZD4KICAgICAgICA8dGQ+0KDQtdGU0YHRgtGA0LDRhtGW0LnQvdC40Lkg0L3QvtC80LXRgDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyAmIzk2NTU7IHZpbgoKVklOLdC60L7QtAoKCjx0YWJsZT4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD5OYW1lPC90aD4KICAgICAgPHRoPlR5cGU8L3RoPgogICAgICA8dGg+SW48L3RoPgogICAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgICA8dGg+QWNjZXB0ZWQgdmFsdWVzPC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+dmluIDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+cXVlcnk8L3RkPgogICAgICAgIDx0ZD5WSU4t0LrQvtC0PC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKCiMjIyMjICYjOTY1NTsgcmV2aXNpb24KCtCd0L7QvNC10YAg0YDQtdCy0ZbQt9GW0ZcKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkluPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPnJldmlzaW9uIDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgaW50ZWdlcgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPnF1ZXJ5PC90ZD4KICAgICAgICA8dGQ+0J3QvtC80LXRgCDRgNC10LLRltC30ZbRlzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgoKCgoKIyMjIyBSZXNwb25zZXMKCgojIyMjIyDilrYgMjAwIC0gT0sKCiMjIyMjIyBIZWFkZXJzCl9ObyBoZWFkZXJzIHNwZWNpZmllZF8KCiMjIyMjIyBhcHBsaWNhdGlvbi9qc29uCgoKCjx0YWJsZT4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD5OYW1lPC90aD4KICAgICAgPHRoPlR5cGU8L3RoPgogICAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgICA8dGg+QWNjZXB0ZWQgdmFsdWVzPC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2U8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIGFycmF5KG9iamVjdCkKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD48L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPlJlc3BvbnNlLmlkPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7Qo9C90ZbQutCw0LvRjNC90LjQuSDQvdC+0LzQtdGAINCy0LjQutGA0LDQtNC10L3QvtCz0L4g0YLRgNCw0L3RgdC/0L7RgNGC0L3QvtCz0L4g0LfQsNGB0L7QsdGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5icmFuZDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0IbQvdGE0L7RgNC80LDRhtGW0Y8g0L/RgNC+INGC0YDQsNC90YHQv9C+0YDRgtC90LjQuSDQt9Cw0YHRltCxPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5jb2xvcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JrQvtC70ZbRgCDRgtGA0LDQvdGB0L/QvtGA0YLQvdC+0LPQviDQt9Cw0YHQvtCx0YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPlJlc3BvbnNlLm51bWJlcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0KDQtdGU0YHRgtGA0LDRhtGW0LnQvdC40Lkg0L3QvtC80LXRgDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UuYm9keV9udW1iZXI8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCd0L7QvNC10YAg0LrRg9C30L7QstCwPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5jaGFzc2lzX251bWJlcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J3QvtC80LXRgCDRiNCw0YHRljwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UuZW5naW5lX251bWJlcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J3QvtC8ZdGAINC00LLQuNCz0YPQvdCwPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5vdmQ8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCe0YDQs9Cw0L0sINGJ0L4g0LLQvdGW0YEg0LTQsNC90ZYg0YMg0YDQtdGU0YHRgtGAPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5raW5kPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QotC40L8g0YLRgNCw0L3RgdC/0L7RgNGC0L3QvtCz0L4g0LfQsNGB0L7QsdGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5zdGF0dXM8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCh0YLQsNGC0YPRgSDRgNC+0LfRiNGD0LrRgyDRgtGA0LDQvdGB0L/QvtGA0YLQvdC+0LPQviDQt9Cw0YHQvtCx0YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPlJlc3BvbnNlLnRoZWZ0X2RhdGU8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCn0LDRgSDQstC40LrRgNCw0LTQtdC90L3RjyDRgtGA0LDQvdGB0L/QvtGA0YLQvdC+0LPQviDQt9Cw0YHQvtCx0YMg0YMg0YTQvtGA0LzQsNGC0ZYgSVNPIDg2MDE8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPlJlc3BvbnNlLmluc2VydF9kYXRlPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7Qp9Cw0YEg0LLQvdC10YHQtdC90L3RjyDRltC90YTQvtGA0LzQsNGG0ZbRlyDRgyDRgNC10LXRlNGB0YLRgCDRgyDRhNC+0YDQvNCw0YLRliBJU08gODYwMTwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KWwogIHsKICAgICJpZCI6ICIwMDE2MzE5NTE1NzU1NjEwMjg1OSIsCiAgICAiYnJhbmQiOiAiQ0hFVlJPTEVUIC0gRVhQUkVTUyIsCiAgICAiY29sb3IiOiAi0JfQldCb0JXQndCY0JkiLAogICAgIm51bWJlciI6ICJBQTQ2ODZFSCIsCiAgICAiYm9keV9udW1iZXIiOiAiMUdCU0hEQzQ0RDExMjY0NjgiLAogICAgImNoYXNzaXNfbnVtYmVyIjogItCG0LTQtdC90YLQuNGE0ZbQutCw0YbRltC50L3QuNC5INC90L7QvNC10YAg0YLRgNCw0L3RgdC/0L7RgNGC0L3QvtCz0L4g0LfQsNGB0L7QsdGDIiwKICAgICJlbmdpbmVfbnVtYmVyIjogbnVsbCwKICAgICJvdmQiOiAi0JPQldCd0JXQoNCQ0JvQrNCd0JAg0J/QoNCe0JrQo9Cg0JDQotCj0KDQkCDQo9Ca0KDQkNCH0J3QmCIsCiAgICAia2luZCI6ICLQm9CV0JPQmtCe0JLQmNCZIiwKICAgICJzdGF0dXMiOiAic3RvbGVuIiwKICAgICJ0aGVmdF9kYXRlIjogIjIwMTYtMTEtMTRUMDA6MDA6MDBaIiwKICAgICJpbnNlcnRfZGF0ZSI6ICIyMDE2LTExLTE0VDE0OjE5OjM1WiIKICB9Cl0KYGBgCiMjIyMjIOKWtiA0MDAgLSDQn9C+0LzQuNC70LrQvtCy0LjQuSDQt9Cw0L/QuNGCCgojIyMjIyMgSGVhZGVycwpfTm8gaGVhZGVycyBzcGVjaWZpZWRfCgojIyMjIyMgYXBwbGljYXRpb24vanNvbgoKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmVycm9yPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QntC/0LjRgSDQv9C+0LzQuNC70LrQuDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KewogICJlcnJvciI6ICJzdHJpbmciCn0KYGBgCiMjIyMjIOKWtiA0MDEgLSDQn9C+0YLRgNGW0LHQvdCwINCQ0LLRgtC+0YDQuNC30LDRhtGW0Y8KCiMjIyMjIyBIZWFkZXJzCl9ObyBoZWFkZXJzIHNwZWNpZmllZF8KCiMjIyMjIOKWtiA0MDUgLSDQn9C+0LzQuNC70LrQvtCy0LjQuSDQvNC10YLQvtC0CgojIyMjIyMgSGVhZGVycwpfTm8gaGVhZGVycyBzcGVjaWZpZWRfCgojIyMjIyMgYXBwbGljYXRpb24vanNvbgoKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmVycm9yPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QntC/0LjRgSDQv9C+0LzQuNC70LrQuDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KewogICJlcnJvciI6ICJzdHJpbmciCn0KYGBgCiMjIyMjIOKWtiA1MDAgLSDQn9C+0LzQuNC70LrQsAoKIyMjIyMjIEhlYWRlcnMKX05vIGhlYWRlcnMgc3BlY2lmaWVkXwoKIyMjIyMjIGFwcGxpY2F0aW9uL2pzb24KCgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5lcnJvcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J7Qv9C40YEg0L/QvtC80LjQu9C60Lg8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgoKIyMjIyMgRXhhbXBsZSBfKGdlbmVyYXRlZClfCgpgYGBqc29uCnsKICAiZXJyb3IiOiAic3RyaW5nIgp9CmBgYAoKIyMjIyBUYWdzCgo8ZGl2IGNsYXNzPSJ0YWdzIj4KICA8ZGl2IGNsYXNzPSJ0YWdzX190YWciPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CgojIyMgYEdFVGAgL3dhbnRlZC9yZXZpc2lvbnMKPGEgaWQ9Im9wLWdldC13YW50ZWQtcmV2aXNpb25zIiAvPgoKPiDQhtC90YTQvtGA0LzQsNGG0ZbRjyDQv9GA0L4g0L7QvdC+0LLQu9C10L3QvdGPINGA0LXRlNGB0YLRgNGDINCy0LjQutGA0LDQtNC10L3QuNGFINGC0YDQsNC90YHQv9C+0YDRgtC90LjRhSDQt9Cw0YHQvtCx0ZbQsgoKCgoKCiMjIyMgUXVlcnkgcGFyYW1ldGVycwoKIyMjIyMgJiM5NjU1OyBsaW1pdAoK0JrRltC70YzQutGW0YHRgtGMINC10LvQtdC80LXQvdGC0ZbQsiDRgyDQstGW0LTQv9C+0LLRltC00ZYKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkluPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmxpbWl0IDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgaW50ZWdlcgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPnF1ZXJ5PC90ZD4KICAgICAgICA8dGQ+0JrRltC70YzQutGW0YHRgtGMINC10LvQtdC80LXQvdGC0ZbQsiDRgyDQstGW0LTQv9C+0LLRltC00ZY8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgoKCgoKCiMjIyMgUmVzcG9uc2VzCgoKIyMjIyMg4pa2IDIwMCAtIE9LCgojIyMjIyMgSGVhZGVycwpfTm8gaGVhZGVycyBzcGVjaWZpZWRfCgojIyMjIyMgYXBwbGljYXRpb24vanNvbgoKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPlJlc3BvbnNlPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBhcnJheShvYmplY3QpCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+PC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5pZDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0KPQvdGW0LrQsNC70YzQvdC40Lkg0LrQvtC0INC+0L3QvtCy0LvQtdC90L3RjyDRgNC10ZTRgdGC0YDRgzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UubmFtZTwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J3QsNC30LLQsCDRgNC10YHRg9GA0YHRgzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UudXJsPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7Qn9C+0YHQuNC70LDQvdC90Y8g0L3QsCDQvtC90L7QstC70LXQvdC40Lkg0YDQtdGB0YPRgNGBPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5maWxlX2hhc2hfc3VtPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QpdC10Ygg0YHRg9C80LAg0LrQvtC90YLQtdC90YLRgyDRhNCw0LnQu9GDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5yZW1vdmVkPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBudW1iZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QmtGW0LvRjNC60ZbRgdGC0Ywg0LLQuNC00LDQu9C10L3QuNGFINC30LDQv9C40YHRltCyINC3INGA0LXRlNGB0YLRgNGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5hZGRlZDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgbnVtYmVyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JrRltC70YzQutGW0YHRgtGMINC00L7QtNCw0L3QuNGFINC30LDQv9C40YHRltCyINC00L4g0YDQtdGU0YHRgtGA0YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPlJlc3BvbnNlLmNyZWF0ZWRfYXQ8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCn0LDRgSDQvtC90L7QstC70LXQvdC90Y8g0LTQsNC90LjRhSDRgyDRhNC+0YDQvNCw0YLRliBJU08gODYwMTwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KWwogIHsKICAgICJpZCI6ICIyOTA5MjAxOF8yIiwKICAgICJuYW1lIjogIk1WU1dhbnRlZFRyYW5zcG9ydF8xLmpzb24iLAogICAgInVybCI6ICJodHRwczovL2RhdGEuZ292LnVhL2RhdGFzZXQvOWIwZTg3ZTAtZWFhMy00ZjE0LTk1NDctMDNkNjFiNzBhYmI2L3Jlc291cmNlLzA2ZTY1YjA2LTMxMjAtNDcxMy04MDAzLTc5MDVhODNmOTVmNS9yZXZpc2lvbi8yOTA5MjAxOF8yIiwKICAgICJmaWxlX2hhc2hfc3VtIjogImY0YWU5N2ZiNjJjN2M5YjkxZDZiOTUwYzc5ZGViNzE2IiwKICAgICJyZW1vdmVkIjogMjcwMTksCiAgICAiYWRkZWQiOiA0MzM2NSwKICAgICJjcmVhdGVkX2F0IjogIjIwMTgtMDktMjlUMjI6MzM6MzNaIgogIH0KXQpgYGAKIyMjIyMg4pa2IDQwMCAtINCf0L7QvNC40LvQutC+0LLQuNC5INC30LDQv9C40YIKCiMjIyMjIyBIZWFkZXJzCl9ObyBoZWFkZXJzIHNwZWNpZmllZF8KCiMjIyMjIyBhcHBsaWNhdGlvbi9qc29uCgoKCjx0YWJsZT4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD5OYW1lPC90aD4KICAgICAgPHRoPlR5cGU8L3RoPgogICAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgICA8dGg+QWNjZXB0ZWQgdmFsdWVzPC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+ZXJyb3I8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCe0L/QuNGBINC/0L7QvNC40LvQutC4PC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKCiMjIyMjIEV4YW1wbGUgXyhnZW5lcmF0ZWQpXwoKYGBganNvbgp7CiAgImVycm9yIjogInN0cmluZyIKfQpgYGAKIyMjIyMg4pa2IDQwMSAtINCf0L7RgtGA0ZbQsdC90LAg0JDQstGC0L7RgNC40LfQsNGG0ZbRjwoKIyMjIyMjIEhlYWRlcnMKX05vIGhlYWRlcnMgc3BlY2lmaWVkXwoKIyMjIyMg4pa2IDQwNSAtINCf0L7QvNC40LvQutC+0LLQuNC5INC80LXRgtC+0LQKCiMjIyMjIyBIZWFkZXJzCl9ObyBoZWFkZXJzIHNwZWNpZmllZF8KCiMjIyMjIyBhcHBsaWNhdGlvbi9qc29uCgoKCjx0YWJsZT4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD5OYW1lPC90aD4KICAgICAgPHRoPlR5cGU8L3RoPgogICAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgICA8dGg+QWNjZXB0ZWQgdmFsdWVzPC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+ZXJyb3I8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCe0L/QuNGBINC/0L7QvNC40LvQutC4PC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKCiMjIyMjIEV4YW1wbGUgXyhnZW5lcmF0ZWQpXwoKYGBganNvbgp7CiAgImVycm9yIjogInN0cmluZyIKfQpgYGAKIyMjIyMg4pa2IDUwMCAtINCf0L7QvNC40LvQutCwCgojIyMjIyMgSGVhZGVycwpfTm8gaGVhZGVycyBzcGVjaWZpZWRfCgojIyMjIyMgYXBwbGljYXRpb24vanNvbgoKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmVycm9yPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QntC/0LjRgSDQv9C+0LzQuNC70LrQuDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KewogICJlcnJvciI6ICJzdHJpbmciCn0KYGBgCgojIyMjIFRhZ3MKCjxkaXYgY2xhc3M9InRhZ3MiPgogIDxkaXYgY2xhc3M9InRhZ3NfX3RhZyI+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KCiMjIyBgR0VUYCAvd2FudGVkL3JldmlzaW9ucy97aWR9CjxhIGlkPSJvcC1nZXQtd2FudGVkLXJldmlzaW9ucy1pZCIgLz4KCj4g0JLRltC00L7QvNC+0YHRgtGWINC/0YDQviDQvtC90L7QstC70LXQvdC90Y8g0YDQtdGU0YHRgtGA0YMg0LfQsCDRg9C90ZbQutCw0LvRjNC90LjQvCDQutC+0LTQvtC8CgoKCiMjIyMgUGF0aCBwYXJhbWV0ZXJzCgojIyMjIyAmIzk2NTU7IGlkCgrQo9C90ZbQutCw0LvRjNC90LjQuSDQutC+0LQg0L7QvdC+0LLQu9C10L3QvdGPINGA0LXRlNGB0YLRgNGDCgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5JbjwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5pZCAgPHN0cm9uZz4ocmVxdWlyZWQpPC9zdHJvbmc+PC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD5wYXRoPC90ZD4KICAgICAgICA8dGQ+0KPQvdGW0LrQsNC70YzQvdC40Lkg0LrQvtC0INC+0L3QvtCy0LvQtdC90L3RjyDRgNC10ZTRgdGC0YDRgzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgoKCgoKCgojIyMjIFJlc3BvbnNlcwoKCiMjIyMjIOKWtiAyMDAgLSBPSwoKIyMjIyMjIEhlYWRlcnMKX05vIGhlYWRlcnMgc3BlY2lmaWVkXwoKIyMjIyMjIGFwcGxpY2F0aW9uL2pzb24KCgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5pZDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0KPQvdGW0LrQsNC70YzQvdC40Lkg0LrQvtC0INC+0L3QvtCy0LvQtdC90L3RjyDRgNC10ZTRgdGC0YDRgzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+bmFtZTwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J3QsNC30LLQsCDRgNC10YHRg9GA0YHRgzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+dXJsPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7Qn9C+0YHQuNC70LDQvdC90Y8g0L3QsCDQvtC90L7QstC70LXQvdC40Lkg0YDQtdGB0YPRgNGBPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5maWxlX2hhc2hfc3VtPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QpdC10Ygg0YHRg9C80LAg0LrQvtC90YLQtdC90YLRgyDRhNCw0LnQu9GDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5yZW1vdmVkPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBudW1iZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QmtGW0LvRjNC60ZbRgdGC0Ywg0LLQuNC00LDQu9C10L3QuNGFINC30LDQv9C40YHRltCyINC3INGA0LXRlNGB0YLRgNGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5hZGRlZDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgbnVtYmVyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JrRltC70YzQutGW0YHRgtGMINC00L7QtNCw0L3QuNGFINC30LDQv9C40YHRltCyINC00L4g0YDQtdGU0YHRgtGA0YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPmNyZWF0ZWRfYXQ8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCn0LDRgSDQvtC90L7QstC70LXQvdC90Y8g0LTQsNC90LjRhSDRgyDRhNC+0YDQvNCw0YLRliBJU08gODYwMTwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KewogICJpZCI6ICIyOTA5MjAxOF8yIiwKICAibmFtZSI6ICJNVlNXYW50ZWRUcmFuc3BvcnRfMS5qc29uIiwKICAidXJsIjogImh0dHBzOi8vZGF0YS5nb3YudWEvZGF0YXNldC85YjBlODdlMC1lYWEzLTRmMTQtOTU0Ny0wM2Q2MWI3MGFiYjYvcmVzb3VyY2UvMDZlNjViMDYtMzEyMC00NzEzLTgwMDMtNzkwNWE4M2Y5NWY1L3JldmlzaW9uLzI5MDkyMDE4XzIiLAogICJmaWxlX2hhc2hfc3VtIjogImY0YWU5N2ZiNjJjN2M5YjkxZDZiOTUwYzc5ZGViNzE2IiwKICAicmVtb3ZlZCI6IDI3MDE5LAogICJhZGRlZCI6IDQzMzY1LAogICJjcmVhdGVkX2F0IjogIjIwMTgtMDktMjlUMjI6MzM6MzNaIgp9CmBgYAojIyMjIyDilrYgNDAwIC0g0J/QvtC80LjQu9C60L7QstC40Lkg0LfQsNC/0LjRggoKIyMjIyMjIEhlYWRlcnMKX05vIGhlYWRlcnMgc3BlY2lmaWVkXwoKIyMjIyMjIGFwcGxpY2F0aW9uL2pzb24KCgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5lcnJvcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J7Qv9C40YEg0L/QvtC80LjQu9C60Lg8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgoKIyMjIyMgRXhhbXBsZSBfKGdlbmVyYXRlZClfCgpgYGBqc29uCnsKICAiZXJyb3IiOiAic3RyaW5nIgp9CmBgYAojIyMjIyDilrYgNDAxIC0g0J/QvtGC0YDRltCx0L3QsCDQkNCy0YLQvtGA0LjQt9Cw0YbRltGPCgojIyMjIyMgSGVhZGVycwpfTm8gaGVhZGVycyBzcGVjaWZpZWRfCgojIyMjIyDilrYgNDA1IC0g0J/QvtC80LjQu9C60L7QstC40Lkg0LzQtdGC0L7QtAoKIyMjIyMjIEhlYWRlcnMKX05vIGhlYWRlcnMgc3BlY2lmaWVkXwoKIyMjIyMjIGFwcGxpY2F0aW9uL2pzb24KCgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5lcnJvcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J7Qv9C40YEg0L/QvtC80LjQu9C60Lg8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgoKIyMjIyMgRXhhbXBsZSBfKGdlbmVyYXRlZClfCgpgYGBqc29uCnsKICAiZXJyb3IiOiAic3RyaW5nIgp9CmBgYAojIyMjIyDilrYgNTAwIC0g0J/QvtC80LjQu9C60LAKCiMjIyMjIyBIZWFkZXJzCl9ObyBoZWFkZXJzIHNwZWNpZmllZF8KCiMjIyMjIyBhcHBsaWNhdGlvbi9qc29uCgoKCjx0YWJsZT4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD5OYW1lPC90aD4KICAgICAgPHRoPlR5cGU8L3RoPgogICAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgICA8dGg+QWNjZXB0ZWQgdmFsdWVzPC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+ZXJyb3I8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCe0L/QuNGBINC/0L7QvNC40LvQutC4PC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKCiMjIyMjIEV4YW1wbGUgXyhnZW5lcmF0ZWQpXwoKYGBganNvbgp7CiAgImVycm9yIjogInN0cmluZyIKfQpgYGAKCiMjIyMgVGFncwoKPGRpdiBjbGFzcz0idGFncyI+CiAgPGRpdiBjbGFzcz0idGFnc19fdGFnIj48L2Rpdj4KPC9kaXY+CjwvZGl2PgoKIyMjIGBHRVRgIC93YW50ZWQvcmV2aXNpb25zL3N0YXRzCjxhIGlkPSJvcC1nZXQtd2FudGVkLXJldmlzaW9ucy1zdGF0cyIgLz4KCj4g0KHRgtCw0YLQuNGB0YLQuNC60LAg0L7QvdC+0LLQu9C10L3QvdGPINGA0LXRlNGB0YLRgNGDINC30LAg0L7RgdGC0LDQvdC90ZYgMTIg0LzRltGB0Y/RhtGW0LIKCgoKCgoKCgoKIyMjIyBSZXNwb25zZXMKCgojIyMjIyDilrYgMjAwIC0gT0sKCiMjIyMjIyBIZWFkZXJzCl9ObyBoZWFkZXJzIHNwZWNpZmllZF8KCiMjIyMjIyBhcHBsaWNhdGlvbi9qc29uCgoKCjx0YWJsZT4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD5OYW1lPC90aD4KICAgICAgPHRoPlR5cGU8L3RoPgogICAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgICA8dGg+QWNjZXB0ZWQgdmFsdWVzPC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2U8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIGFycmF5KG9iamVjdCkKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD48L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPlJlc3BvbnNlLmFkZGVkPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBpbnRlZ2VyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JrRltC70YzQutGW0YHRgtGMINC00L7QtNCw0L3QuNGFINC30LDQv9C40YHRltCyINC30LAg0LzRltGB0Y/RhtGMPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5SZXNwb25zZS5yZW1vdmVkPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBpbnRlZ2VyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JrRltC70YzQutGW0YHRgtGMINCy0LjQtNCw0LvQtdC90LjRhSDQt9Cw0L/QuNGB0ZbQsiDQt9CwINC80ZbRgdGP0YbRjDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+UmVzcG9uc2UubW9udGg8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIGludGVnZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QnNGW0YHRj9GG0Yw8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPlJlc3BvbnNlLnllYXI8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIGludGVnZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QoNGW0Lo8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgoKIyMjIyMgRXhhbXBsZSBfKGdlbmVyYXRlZClfCgpgYGBqc29uClsKICB7CiAgICAiYWRkZWQiOiAyNDEsCiAgICAicmVtb3ZlZCI6IDE5NSwKICAgICJtb250aCI6IDIsCiAgICAieWVhciI6IDIwMjAKICB9Cl0KYGBgCiMjIyMjIOKWtiA0MDAgLSDQn9C+0LzQuNC70LrQvtCy0LjQuSDQt9Cw0L/QuNGCCgojIyMjIyMgSGVhZGVycwpfTm8gaGVhZGVycyBzcGVjaWZpZWRfCgojIyMjIyMgYXBwbGljYXRpb24vanNvbgoKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmVycm9yPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QntC/0LjRgSDQv9C+0LzQuNC70LrQuDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KewogICJlcnJvciI6ICJzdHJpbmciCn0KYGBgCiMjIyMjIOKWtiA0MDEgLSDQn9C+0YLRgNGW0LHQvdCwINCQ0LLRgtC+0YDQuNC30LDRhtGW0Y8KCiMjIyMjIyBIZWFkZXJzCl9ObyBoZWFkZXJzIHNwZWNpZmllZF8KCiMjIyMjIOKWtiA0MDUgLSDQn9C+0LzQuNC70LrQvtCy0LjQuSDQvNC10YLQvtC0CgojIyMjIyMgSGVhZGVycwpfTm8gaGVhZGVycyBzcGVjaWZpZWRfCgojIyMjIyMgYXBwbGljYXRpb24vanNvbgoKCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmVycm9yPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QntC/0LjRgSDQv9C+0LzQuNC70LrQuDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KewogICJlcnJvciI6ICJzdHJpbmciCn0KYGBgCiMjIyMjIOKWtiA1MDAgLSDQn9C+0LzQuNC70LrQsAoKIyMjIyMjIEhlYWRlcnMKX05vIGhlYWRlcnMgc3BlY2lmaWVkXwoKIyMjIyMjIGFwcGxpY2F0aW9uL2pzb24KCgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5lcnJvcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J7Qv9C40YEg0L/QvtC80LjQu9C60Lg8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgoKIyMjIyMgRXhhbXBsZSBfKGdlbmVyYXRlZClfCgpgYGBqc29uCnsKICAiZXJyb3IiOiAic3RyaW5nIgp9CmBgYAoKIyMjIyBUYWdzCgo8ZGl2IGNsYXNzPSJ0YWdzIj4KICA8ZGl2IGNsYXNzPSJ0YWdzX190YWciPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CgojIyBTY2hlbWFzCgo8YSBpZD0iIiAvPgoKIyMjIyBFcnJvcgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5lcnJvcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J7Qv9C40YEg0L/QvtC80LjQu9C60Lg8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+CgojIyMjIyBFeGFtcGxlIF8oZ2VuZXJhdGVkKV8KCmBgYGpzb24KewogICJlcnJvciI6ICJzdHJpbmciCn0KYGBgCjxhIGlkPSIiIC8+CgojIyMjIE9wZXJhdGlvbgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5udW1iZXI8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCg0LXRlNGB0YLRgNCw0YbRltC50L3QuNC5INC90L7QvNC10YA8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPmJyYW5kPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QnNCw0YDQutCwPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5tb2RlbDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JzQvtC00LXQu9GMPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD55ZWFyPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBpbnRlZ2VyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0KDRltC6INCy0LjQv9GD0YHQutGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5kYXRlPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QlNCw0YLQsCDQv9GA0L7QstC10LTQtdC90L3RjyDQvtC/0LXRgNCw0YbRltGXPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5yZWdpc3RyYXRpb248L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCS0LjQtCDRgNC10ZTRgdGC0YDQsNGG0ZbRlzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+cmVnaXN0cmF0aW9uX2NvZGU8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIGludGVnZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QmtC+0LQg0LLQuNC00YMg0YDQtdGU0YHRgtGA0LDRhtGW0Zc8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPmZ1ZWw8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCi0LjQvyDQv9Cw0LvRjNC90L7Qs9C+PC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5jYXBhY2l0eTwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgbnVtYmVyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J7QsSfRlNC8INC00LLQuNCz0YPQvdCwPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5jb2xvcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JrQvtC70ZbRgCDRgtGA0LDQvdGB0L/QvtGA0YLQvdC+0LPQviDQt9Cw0YHQvtCx0YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPmtpbmQ8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCi0LjQvyDRgtGA0LDQvdGB0L/QvtGA0YLQvdC+0LPQviDQt9Cw0YHQvtCx0YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPmJvZHk8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCi0LjQvyDQutGD0LfQvtCy0YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPnB1cnBvc2U8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCf0YDQuNC30L3QsNGH0LXQvdC90Y88L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPm93bl93ZWlnaHQ8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIGludGVnZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QnNCw0YHQsCDQsdC10Lcg0L3QsNCy0LDQvdGC0LDQttC10L3QvdGPPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD50b3RhbF93ZWlnaHQ8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIGludGVnZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7Qn9C+0LLQvdCwINC80LDRgdCwPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5yZWdfYWRkcl9rb2F0dXU8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCQ0LTRgNC10YHQsCDRgNC10ZTRgdGC0YDQsNGGadGXINGDINGE0L7RgNC80LDRgtGWINCa0J7QkNCi0KPQozwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+ZGVwX2NvZGU8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIGludGVnZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QmtC+0LQg0LTQtdC/0LDRgNGC0LDQvNC10L3RgtGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5kZXA8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCd0LDQt9Cy0LAg0LTQtdC/0LDRgNGC0LDQvNC10L3RgtGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5wZXJzb248L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCd0LDQt9Cy0LAg0LTQtdC/0LDRgNGC0LDQvNC10L3RgtGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKIyMjIyMgRXhhbXBsZSBfKGdlbmVyYXRlZClfCgpgYGBqc29uCnsKICAibnVtYmVyIjogItCQ0JA5MzU50KDQoSIsCiAgImJyYW5kIjogIlRFU0xBIiwKICAibW9kZWwiOiAiTU9ERUwgWCIsCiAgInllYXIiOiAyMDE2LAogICJkYXRlIjogIjIwMTYtMTAtMTMiLAogICJyZWdpc3RyYXRpb24iOiAi0KDQldCE0KHQotCg0JDQpknQryDQotCXINCf0KDQmNCS0JXQl9CV0J3QntCT0J4g0Jct0JfQkCDQmtCe0KDQlNCe0J3QoyDQn9CeINCS0JzQlCIsCiAgInJlZ2lzdHJhdGlvbl9jb2RlIjogNzAsCiAgImZ1ZWwiOiAi0JXQm9CV0JrQotCg0J4iLAogICJjYXBhY2l0eSI6IG51bGwsCiAgImNvbG9yIjogItCn0J7QoNCd0JjQmSIsCiAgImtpbmQiOiAi0JvQldCT0JrQntCS0JjQmSIsCiAgImJvZHkiOiAi0KPQndCG0JLQldCg0KHQkNCbLUIiLAogICJwdXJwb3NlIjogItCX0JDQk9CQ0JvQrNCd0JjQmSIsCiAgIm93bl93ZWlnaHQiOiAyNDg1LAogICJ0b3RhbF93ZWlnaHQiOiAzMDIxLAogICJyZWdfYWRkcl9rb2F0dXUiOiAiODAzNjYwMDAwMCIsCiAgImRlcF9jb2RlIjogODA0NCwKICAiZGVwIjogItCm0LXQvdGC0YAgODA0NCIsCiAgInBlcnNvbiI6ICLQrtGA0LjQtNC40YfQvdCwINC+0YHQvtCx0LAiCn0KYGBgCjxhIGlkPSIiIC8+CgojIyMjIFJlZ2lzdHJhdGlvbgoKPHRhYmxlPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPk5hbWU8L3RoPgogICAgICA8dGg+VHlwZTwvdGg+CiAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgIDx0aD5BY2NlcHRlZCB2YWx1ZXM8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICAgICAgPHRyPgogICAgICAgIDx0ZD5udW1iZXI8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCg0LXRlNGB0YLRgNCw0YbRltC50L3QuNC5INC90L7QvNC10YA8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPmNvZGU8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCd0L7QvNC10YAg0YHQstGW0LTQvtGG0YLQstCwINC/0YDQviDRgNC10ZTRgdGC0YDQsNGG0ZbRjiDRgtGA0LDQvdGB0L/QvtGA0YLQvdC+0LPQviDQt9Cw0YHQvtCx0YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPnZpbjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+VklOLdC60L7QtDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+YnJhbmQ8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCc0LDRgNC60LA8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPm1vZGVsPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QnNC+0LTQtdC70Yw8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPmNhcGFjaXR5PC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBudW1iZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QntCxJ9GU0Lwg0LTQstC40LPRg9C90LA8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPnJhbmtfY2F0ZWdvcnk8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCa0LDRgtC10LPQvtGA0ZbRjyDRgtGA0LDQvdGB0L/QvtGA0YLQvdC+0LPQviDQt9Cw0YHQvtCx0YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPm51bV9zZWF0aW5nPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBpbnRlZ2VyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JrRltC70YzQutGW0YHRgtGMINGB0YLQvtGP0YfQuNGFINC80ZbRgdGG0Yw8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPm51bV9zdGFuZGluZzwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgaW50ZWdlcgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCa0ZbQu9GM0LrRltGB0YLRjCDRgdC40LTRj9GH0LjRhSDQvNGW0YHRhtGMPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5jb2xvcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JrQvtC70ZbRgDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+ZGF0ZTwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JTQsNGC0LAg0YDQtdGU0YHRgtGA0LDRhtGW0Zc8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPmZpcnN0X3JlZ19kYXRlPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QlNCw0YLQsCDQv9C10YDRiNC+0Zcg0YDQtdGU0YHRgtGA0LDRhtGW0Zc8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPmZ1ZWw8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCi0LjQvyDQv9Cw0LvRjNC90L7Qs9C+PC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5raW5kPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QotC40L88L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPm93bl93ZWlnaHQ8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIG51bWJlcgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCc0LDRgdCwINCx0LXQtyDQvdCw0LLQsNC90YLQsNC20LXQvdC90Y88L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPnRvdGFsX3dlaWdodDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgbnVtYmVyCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J/QvtCy0L3QsCDQvNCw0YHQsDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+eWVhcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgaW50ZWdlcgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCg0ZbQuiDQstC40L/Rg9GB0LrRgzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCiMjIyMjIEV4YW1wbGUgXyhnZW5lcmF0ZWQpXwoKYGBganNvbgp7CiAgIm51bWJlciI6ICLQkNCQOTM1OdCg0KEiLAogICJjb2RlIjogItCh0KXQnTQ4NDE1NCIsCiAgInZpbiI6ICI1WUpYQ0NFNDBHRjAxMDU0MyIsCiAgImJyYW5kIjogIlRFU0xBIiwKICAibW9kZWwiOiAiTU9ERUwgWCIsCiAgImNhcGFjaXR5IjogbnVsbCwKICAicmFua19jYXRlZ29yeSI6ICJCIiwKICAibnVtX3NlYXRpbmciOiBudWxsLAogICJudW1fc3RhbmRpbmciOiA3LAogICJjb2xvciI6ICLQp9Ce0KDQndCY0JkiLAogICJkYXRlIjogIjIwMTktMDYtMDUiLAogICJmaXJzdF9yZWdfZGF0ZSI6ICIyMDE2LTEwLTEzIiwKICAiZnVlbCI6ICLQldCb0JXQmtCi0KDQniIsCiAgImtpbmQiOiAi0JvQldCT0JrQntCS0JjQmSDQo9Cd0IbQktCV0KDQodCQ0JstQiIsCiAgIm93bl93ZWlnaHQiOiAyNDg1LAogICJ0b3RhbF93ZWlnaHQiOiAzMDIxLAogICJ5ZWFyIjogMjAxNgp9CmBgYAo8YSBpZD0iIiAvPgoKIyMjIyBXYW50ZWRWZWhpY2xlCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmlkPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7Qo9C90ZbQutCw0LvRjNC90LjQuSDQvdC+0LzQtdGAINCy0LjQutGA0LDQtNC10L3QvtCz0L4g0YLRgNCw0L3RgdC/0L7RgNGC0L3QvtCz0L4g0LfQsNGB0L7QsdGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5icmFuZDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0IbQvdGE0L7RgNC80LDRhtGW0Y8g0L/RgNC+INGC0YDQsNC90YHQv9C+0YDRgtC90LjQuSDQt9Cw0YHRltCxPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5jb2xvcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0JrQvtC70ZbRgCDRgtGA0LDQvdGB0L/QvtGA0YLQvdC+0LPQviDQt9Cw0YHQvtCx0YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPm51bWJlcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0KDQtdGU0YHRgtGA0LDRhtGW0LnQvdC40Lkg0L3QvtC80LXRgDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+Ym9keV9udW1iZXI8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCd0L7QvNC10YAg0LrRg9C30L7QstCwPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5jaGFzc2lzX251bWJlcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J3QvtC80LXRgCDRiNCw0YHRljwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+ZW5naW5lX251bWJlcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0J3QvtC8ZdGAINC00LLQuNCz0YPQvdCwPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5vdmQ8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCe0YDQs9Cw0L0sINGJ0L4g0LLQvdGW0YEg0LTQsNC90ZYg0YMg0YDQtdGU0YHRgtGAPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5raW5kPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QotC40L8g0YLRgNCw0L3RgdC/0L7RgNGC0L3QvtCz0L4g0LfQsNGB0L7QsdGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5zdGF0dXM8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCh0YLQsNGC0YPRgSDRgNC+0LfRiNGD0LrRgyDRgtGA0LDQvdGB0L/QvtGA0YLQvdC+0LPQviDQt9Cw0YHQvtCx0YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPnRoZWZ0X2RhdGU8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCn0LDRgSDQstC40LrRgNCw0LTQtdC90L3RjyDRgtGA0LDQvdGB0L/QvtGA0YLQvdC+0LPQviDQt9Cw0YHQvtCx0YMg0YMg0YTQvtGA0LzQsNGC0ZYgSVNPIDg2MDE8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPmluc2VydF9kYXRlPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7Qp9Cw0YEg0LLQvdC10YHQtdC90L3RjyDRltC90YTQvtGA0LzQsNGG0ZbRlyDRgyDRgNC10LXRlNGB0YLRgCDRgyDRhNC+0YDQvNCw0YLRliBJU08gODYwMTwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCiMjIyMjIEV4YW1wbGUgXyhnZW5lcmF0ZWQpXwoKYGBganNvbgp7CiAgImlkIjogIjAwMTYzMTk1MTU3NTU2MTAyODU5IiwKICAiYnJhbmQiOiAiQ0hFVlJPTEVUIC0gRVhQUkVTUyIsCiAgImNvbG9yIjogItCX0JXQm9CV0J3QmNCZIiwKICAibnVtYmVyIjogIkFBNDY4NkVIIiwKICAiYm9keV9udW1iZXIiOiAiMUdCU0hEQzQ0RDExMjY0NjgiLAogICJjaGFzc2lzX251bWJlciI6ICLQhtC00LXQvdGC0LjRhNGW0LrQsNGG0ZbQudC90LjQuSDQvdC+0LzQtdGAINGC0YDQsNC90YHQv9C+0YDRgtC90L7Qs9C+INC30LDRgdC+0LHRgyIsCiAgImVuZ2luZV9udW1iZXIiOiBudWxsLAogICJvdmQiOiAi0JPQldCd0JXQoNCQ0JvQrNCd0JAg0J/QoNCe0JrQo9Cg0JDQotCj0KDQkCDQo9Ca0KDQkNCH0J3QmCIsCiAgImtpbmQiOiAi0JvQldCT0JrQntCS0JjQmSIsCiAgInN0YXR1cyI6ICJzdG9sZW4iLAogICJ0aGVmdF9kYXRlIjogIjIwMTYtMTEtMTRUMDA6MDA6MDBaIiwKICAiaW5zZXJ0X2RhdGUiOiAiMjAxNi0xMS0xNFQxNDoxOTozNVoiCn0KYGBgCjxhIGlkPSIiIC8+CgojIyMjIFdhbnRlZFJldmlzaW9uCgo8dGFibGU+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+TmFtZTwvdGg+CiAgICAgIDx0aD5UeXBlPC90aD4KICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KICAgICAgPHRoPkFjY2VwdGVkIHZhbHVlczwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAgICA8dHI+CiAgICAgICAgPHRkPmlkPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7Qo9C90ZbQutCw0LvRjNC90LjQuSDQutC+0LQg0L7QvdC+0LLQu9C10L3QvdGPINGA0LXRlNGB0YLRgNGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5uYW1lPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBzdHJpbmcKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QndCw0LfQstCwINGA0LXRgdGD0YDRgdGDPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD51cmw8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCf0L7RgdC40LvQsNC90L3RjyDQvdCwINC+0L3QvtCy0LvQtdC90LjQuSDRgNC10YHRg9GA0YE8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPmZpbGVfaGFzaF9zdW08L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIHN0cmluZwogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCl0LXRiCDRgdGD0LzQsCDQutC+0L3RgtC10L3RgtGDINGE0LDQudC70YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPnJlbW92ZWQ8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIG51bWJlcgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCa0ZbQu9GM0LrRltGB0YLRjCDQstC40LTQsNC70LXQvdC40YUg0LfQsNC/0LjRgdGW0LIg0Lcg0YDQtdGU0YHRgtGA0YM8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPmFkZGVkPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICBudW1iZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QmtGW0LvRjNC60ZbRgdGC0Ywg0LTQvtC00LDQvdC40YUg0LfQsNC/0LjRgdGW0LIg0LTQviDRgNC10ZTRgdGC0YDRgzwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+Y3JlYXRlZF9hdDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgc3RyaW5nCiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+0KfQsNGBINC+0L3QvtCy0LvQtdC90L3RjyDQtNCw0L3QuNGFINGDINGE0L7RgNC80LDRgtGWIElTTyA4NjAxPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKIyMjIyMgRXhhbXBsZSBfKGdlbmVyYXRlZClfCgpgYGBqc29uCnsKICAiaWQiOiAiMjkwOTIwMThfMiIsCiAgIm5hbWUiOiAiTVZTV2FudGVkVHJhbnNwb3J0XzEuanNvbiIsCiAgInVybCI6ICJodHRwczovL2RhdGEuZ292LnVhL2RhdGFzZXQvOWIwZTg3ZTAtZWFhMy00ZjE0LTk1NDctMDNkNjFiNzBhYmI2L3Jlc291cmNlLzA2ZTY1YjA2LTMxMjAtNDcxMy04MDAzLTc5MDVhODNmOTVmNS9yZXZpc2lvbi8yOTA5MjAxOF8yIiwKICAiZmlsZV9oYXNoX3N1bSI6ICJmNGFlOTdmYjYyYzdjOWI5MWQ2Yjk1MGM3OWRlYjcxNiIsCiAgInJlbW92ZWQiOiAyNzAxOSwKICAiYWRkZWQiOiA0MzM2NSwKICAiY3JlYXRlZF9hdCI6ICIyMDE4LTA5LTI5VDIyOjMzOjMzWiIKfQpgYGAKPGEgaWQ9IiIgLz4KCiMjIyMgV2FudGVkUmV2aXNpb25TdGF0TW9udGgKCjx0YWJsZT4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD5OYW1lPC90aD4KICAgICAgPHRoPlR5cGU8L3RoPgogICAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgICA8dGg+QWNjZXB0ZWQgdmFsdWVzPC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+YWRkZWQ8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIGludGVnZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QmtGW0LvRjNC60ZbRgdGC0Ywg0LTQvtC00LDQvdC40YUg0LfQsNC/0LjRgdGW0LIg0LfQsCDQvNGW0YHRj9GG0Yw8L3RkPgogICAgICAgIDx0ZD48ZW0+QW55PC9lbT48L3RkPgogICAgICA8L3RyPgogICAgICA8dHI+CiAgICAgICAgPHRkPnJlbW92ZWQ8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIGludGVnZXIKICAgICAgICA8L3RkPgogICAgICAgIDx0ZD7QmtGW0LvRjNC60ZbRgdGC0Ywg0LLQuNC00LDQu9C10L3QuNGFINC30LDQv9C40YHRltCyINC30LAg0LzRltGB0Y/RhtGMPC90ZD4KICAgICAgICA8dGQ+PGVtPkFueTwvZW0+PC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgIDx0ZD5tb250aDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgaW50ZWdlcgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCc0ZbRgdGP0YbRjDwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0cj4KICAgICAgICA8dGQ+eWVhcjwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAgaW50ZWdlcgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPtCg0ZbQujwvdGQ+CiAgICAgICAgPHRkPjxlbT5Bbnk8L2VtPjwvdGQ+CiAgICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCiMjIyMjIEV4YW1wbGUgXyhnZW5lcmF0ZWQpXwoKYGBganNvbgp7CiAgImFkZGVkIjogMjQxLAogICJyZW1vdmVkIjogMTk1LAogICJtb250aCI6IDIsCiAgInllYXIiOiAyMDIwCn0KYGBgCg== readmeEtag: '"31f14fb6936244abf7c067c4c62e2fd19a617689"' readmeLastModified: Sat, 31 Dec 2022 17:16:16 GMT repositoryId: 232517461 description: ':memo: Documentation for the OpenCars API ' created: '2020-01-08T08:39:27Z' updated: '2022-12-09T11:36:26Z' language: HTML archived: false stars: 1 watchers: 0 forks: 0 owner: opencars logo: https://avatars.githubusercontent.com/u/48658620?v=4 repoEtag: '"4178048b8dc94a838228d46777aa0ebf95a2cbce216935167f745c08eede03c9"' repoLastModified: Fri, 09 Dec 2022 11:36:26 GMT foundInMaster: true category: Learning id: af4731daa82dd0f855d601ad5531103d - source: openapi3 tags repository: https://github.com/codecentric/reedelk-openapi v3: true repositoryMetadata: base64Readme: >- IyBSZWVkZWxrIE9wZW5BUEkgdjMgc2VyaWFsaXplciAvIGRlc2VyaWFsaXplcgoKWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUFwYWNoZSUyMDIuMC1ibHVlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9yZWVkZWxrL3JlZWRlbGstcnVudGltZS9ibG9iL21hc3Rlci9MSUNFTlNFKQpbIVtUd2l0dGVyXShodHRwczovL2ltZy5zaGllbGRzLmlvL3R3aXR0ZXIvZm9sbG93L3JlZWRlbGsuc3ZnP3N0eWxlPXNvY2lhbCZsYWJlbD1Gb2xsb3cpXShodHRwczovL3R3aXR0ZXIuY29tL2ludGVudC9mb2xsb3c/c2NyZWVuX25hbWU9cmVlZGVsaykKClRoaXMgcHJvamVjdCByZWZlcnMgdG8gdGhlIFtPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKSBwcm9qZWN0IGZyb20gdGhlIFtPcGVuQVBJIGluaXRpYXRpdmVdKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pLgoKIyMgT3ZlcnZpZXcKVGhlIFJlZWRlbGsgT3BlbkFQSSB2My54IHNlcmlhbGl6ZXIvZGVzZXJpYWxpemVyIGxpYnJhcnkgaXMgYSBsaWdodHdlaWdodCBsaWJyYXJ5IHRvIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSBPcGVuQVBJIAp2My54IG1vZGVsIHRvL2Zyb20gSlNPTiBhbmQgdG8vZnJvbSBZQU1MLiAKClRoZSBsaWJyYXJ5IHVzZXMgb25seSBbSlNPTi1qYXZhIChvcmcuanNvbildKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGxlYXJ5L0pTT04tamF2YSkgYW5kIApbU25ha2VZQU1MXShodHRwczovL2dpdGh1Yi5jb20vYXNvbW92L3NuYWtleWFtbCkgYXMgZGVwZW5kZW5jaWVzIG1ha2luZyBpdCB0aGUgcGVyZmVjdCBjaG9pY2UgaWYgeW91IGFyZSBqdXN0IApsb29raW5nIGZvciBhIHZlcnkgbGlnaHR3ZWlnaHQgc29sdXRpb24gdG8gc2VyaWFsaXplL2Rlc2VyaWFsaXplIE9wZW5BUEkgdjMueCBkZWZpbml0aW9ucy4KCiAKIyMgRmVhdHVyZXMKCi0gU2VyaWFsaXplIE9wZW5BUEkgdjMueCBtb2RlbCB0byBKU09OCi0gU2VyaWFsaXplIE9wZW5BUEkgdjMueCBtb2RlbCB0byBZQU1MCi0gRGVzZXJpYWxpemUgT3BlbkFQSSB2My54IG1vZGVsIGZyb20gSlNPTgotIERlc2VyaWFsaXplIE9wZW5BUEkgdjMueCBtb2RlbCBmcm9tIFlBTUwKCiMjIE1hdmVuCkFkZCB0aGUgUmVlZGVsayBSZXBvc2l0b3J5IHRvIHlvdXIgcG9tLnhtbDoKCmBgYHhtbAo8cmVwb3NpdG9yaWVzPgogICAgPHJlcG9zaXRvcnk+CiAgICAgICAgPGlkPnJlZWRlbGstcmVwb3NpdG9yeTwvaWQ+CiAgICAgICAgPG5hbWU+UmVlZGVsayBSZXBvc2l0b3J5PC9uYW1lPgogICAgICAgIDx1cmw+aHR0cDovL3JlcG9zaXRvcnkucmVlZGVsay5jb20vcmVsZWFzZS88L3VybD4KICAgIDwvcmVwb3NpdG9yeT4KPC9yZXBvc2l0b3JpZXM+CmBgYAoKQWRkIHRoZSBmb2xsb3dpbmcgZGVwZW5kZW5jeSB0byB5b3VyIHBvbS54bWwgZmlsZToKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+Y29tLnJlZWRlbGs8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5yZWVkZWxrLW9wZW5hcGk8L2FydGlmYWN0SWQ+CiAgICA8dmVyc2lvbj5YLlkuWjwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKCiMjIFVzYWdlCiMjIyBTZXJpYWxpemUKIyMjIyBUbyBKU09OIG9yIFlBTUw6CmBgYGphdmEKSW5mb09iamVjdCBpbmZvTW9kZWwgPSBuZXcgSW5mb09iamVjdCgpOwppbmZvTW9kZWwuc2V0RGVzY3JpcHRpb24oIlRoaXMgaXMgYSBzYW1wbGUgQVBJLiIpOwppbmZvTW9kZWwuc2V0VmVyc2lvbigiMS4wLjIiKTsKCk9wZW5BcGlPYmplY3Qgb3BlbkFwaU1vZGVsID0gbmV3IE9wZW5BcGlPYmplY3QoKTsKb3BlbkFwaU1vZGVsLnNldEluZm8oaW5mbyk7CgovLyB0byBKU09OIHN0cmluZwpTdHJpbmcgb3BlbkFwaUFzSnNvbiA9IE9wZW5BcGkudG9Kc29uKG9wZW5BcGlNb2RlbCk7CgovLyB0byBZQU1MIHN0cmluZwpTdHJpbmcgb3BlbkFwaUFzWWFtbCA9IE9wZW5BcGkudG9ZYW1sKG9wZW5BcGlNb2RlbCk7CmBgYAoKIyMjIERlc2VyaWFsaXplCiMjIyMgRnJvbSBKU09OIG9yIFlBTUw6CmBgYGphdmEKLy8gZnJvbSBKU09OIHN0cmluZwpTdHJpbmcgb3BlbkFwaUFzSnNvbiA9ICJ7Im9wZW5hcGkiOiAiMy4wLjMiLCJpbmZvIjogeyJ0aXRsZSI6ICJBUEkiLCJ2ZXJzaW9uIjogInYxIiB9fSI7Ck9wZW5BcGlPYmplY3Qgb3BlbkFwaU1vZGVsID0gT3BlbkFwaS5mcm9tKG9wZW5BcGlBc0pzb24pOwpJbmZvT2JqZWN0IGluZm9Nb2RlbCA9IGFjdHVhbC5nZXRJbmZvKCk7Ci4uLgoKLy8gZnJvbSBZQU1MIHN0cmluZwpTdHJpbmcgb3BlbkFwaUFzWWFtbCA9ICJvcGVuYXBpOiAzLjAuMAogICAgICAgICAgICAgICAgICAgICAgICBpbmZvOgogICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb246IDEuMC4yCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFBldHN0b3JlIEFQSSI7Ck9wZW5BcGlPYmplY3Qgb3BlbkFwaU1vZGVsID0gT3BlbkFwaS5mcm9tKG9wZW5BcGlBc1lhbWwpOwpJbmZvT2JqZWN0IGluZm9Nb2RlbCA9IGFjdHVhbC5nZXRJbmZvKCk7Ci4uLgpgYGAKCiMjIENvbnRyaWJ1dGUKLSBJZiB5b3UgZmluZCBhIGJ1ZyBpbiBSZWVkZWxrIE9wZW5BUEksIHBsZWFzZSBbZmlsZSBhIGJ1ZyByZXBvcnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9yZWVkZWxrL3JlZWRlbGstb3BlbmFwaS9pc3N1ZXMpLgotIElmIHlvdSB3YW50IHRvIGRpc2N1c3MgUmVlZGVsayBPcGVuQVBJLCBzdWdnZXN0IG5ldyBmZWF0dXJlcywgeW91IGhhdmUgaXNzdWVzIGdldHRpbmcgc3RhcnRlZCB3aXRoIHRoZSBsaWJyYXJ5IG9yIGp1c3Qgc2F5ICdIaScsIGxldCB1cyBrbm93IGluIHRoZSBbUmVlZGVsayBTbGFjayBEZXZlbG9wZXJzIENvbW11bml0eV0oaHR0cHM6Ly9qb2luLnNsYWNrLmNvbS90L3JlZWRlbGsvc2hhcmVkX2ludml0ZS96dC1mejN3eDU2Zi1YRHlsWHBxWEVSb29LZU90cmhkWnVnKSBbIVtKb2luIFJlZWRlbGsgU2xhY2sgRGV2ZWxvcGVycyBDb21tdW5pdHldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU2xhY2stSm9pbiUyMHRoZSUyMGNoYXQlMjByb29tLWJsdWUpXShodHRwczovL2pvaW4uc2xhY2suY29tL3QvcmVlZGVsay9zaGFyZWRfaW52aXRlL3p0LWZ6M3d4NTZmLVhEeWxYcHFYRVJvb0tlT3RyaGRadWcpLgo= readmeEtag: '"cadc7d835b79219df54f865956f2a1b354c8589b"' readmeLastModified: Wed, 21 Apr 2021 22:17:37 GMT repositoryId: 283149249 description: OpenAPI v3 JSON/YAML serializer/deserializer created: '2020-07-28T08:25:55Z' updated: '2021-04-21T22:17:45Z' language: Java archived: false stars: 1 watchers: 0 forks: 2 owner: codecentric logo: https://avatars.githubusercontent.com/u/1009716?v=4 license: Apache-2.0 repoEtag: '"dbbd2dabf428397671ff9edc63f218cd26dd8ce90c1f994f9e900fb23503eb13"' repoLastModified: Wed, 21 Apr 2021 22:17:45 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: 92684132322c194c03d78e0d6adfae5c - source: openapi3 tags repository: https://github.com/thestarivore/ramen_website v3: true id: c87aea0345c6f845a324d50697731cf9 repositoryMetadata: base64Readme: >- IyByYW1lbl93ZWJzaXRlClJhbWVuIEFzc29jaWF0aW9uIFdlYnNpdGUgLSBIeXBlcm1lZGlhIGNvdXJzZQo= readmeEtag: '"7d63b0fe870c62fc871d03a58bdd362d74ba2de9"' readmeLastModified: Mon, 12 Oct 2020 10:35:49 GMT repositoryId: 265383330 description: Ramen Association Website - Hypermedia course created: '2020-05-19T22:31:39Z' updated: '2023-08-24T21:57:54Z' language: HTML archived: false stars: 1 watchers: 2 forks: 0 owner: thestarivore logo: https://avatars.githubusercontent.com/u/22894195?v=4 repoEtag: '"2abaf57950576fb3bc481d241e40d66d02fe28ab461511fce6e8c49002145aa9"' repoLastModified: Thu, 24 Aug 2023 21:57:54 GMT category: Server foundInMaster: true - source: openapi3 tags repository: https://github.com/halilozkan/eurovision-song-contest v3: true repositoryMetadata: base64Readme: >- PSBFdXJvdmlzaW9uLXNvbmctY29udGVzdAo6aWNvbnM6IGZvbnQKCmltYWdlOmh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvdmVydC54LTMuOS4xLXB1cnBsZS5zdmdbbGluaz0iaHR0cHM6Ly92ZXJ0eC5pbyJdCgpUaGlzIGV4ZXJjaXNlIGFwcGxpY2F0aW9uIGltcGxlbWVudHMgYSBzbWFsbCBzeXN0ZW0gdG8gY291bnQgdGhlIHJlc3VsdHMgb2YgdGhlIEV1cm92aXNpb24gU29uZyBDb250ZXN0LgoKKiBBbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gZGVzaWduZWQgdG8gcHJvdmlkZSBBcGkgRGVzaWduIEZpcnN0IGFwcHJvYWNoLgoqIFZlcnQueCBXZWIgQVBJIENvbnRyYWN0IHVzZWQgdG8gZXhwb3NlIGVuZHBvaW50IHBhdGhzIGFuZCB2YWxpZGF0ZSB0aGVtIHdpdGggT3BlbkFQSSBzcGVjLgoqIEFuIEhUVFAgU2VydmVyIGV4cG9zZSBhbiBlbmRwb2ludCB3aXRoIHJlbGV2YW50IHBhdGhzIGFsbGlnbmVkIHdpdGggT3BlbkFQSSBzcGVjIGFuZCBjb250cm9sbGVkIGJ5IFdlYiBBUEkgQ29udHJhY3QuCiogRW5kcG9pbnQgcGF0aHMgY29ubmVjdGVkIHRvIEhUVFAgU2VydmVyIHJvdXRlciBidWlsdCB3aXRoIE9wZW5BUEkgZGlyZWN0bHkgdG8gRXZlbnRCdXMgc2VydmljZXMuCiogQW4gRXZlbnRCdXMgYWxsb3dlZCBtYW55IHBhcnRzIG9mIGFwcGxpY2F0aW9uIHRvIGNvbW11bmljYXRlIGVhY2ggb3RoZXIuCiogUmVhY3RpdmUgcGF0dGVybiBpbXBsZW1lbnRlZCB0byBkZXZlbG9wIHRyYW5zYWN0aW9uIHNlcnZpY2VzLCBtYWlubHkgUnhKYXZhMiwgYXN5Y2hyb25vdXMgYW5kIEphdmEgc3RyZWFtcy4KKiBUd28gdmVydGljbGVzIGRldmVsb3BlZDogYSB2b3RlIHRyYW5zYWN0aW9uIHNlcnZpY2VzIHZlcnRpY2xlKEphdmEpIGFuZCBhIG1ldHJpY3MgcmVwb3J0ZXIoS290bGluKQoqIFRoYW5rcyB0byBWZXJ0LnggcG9seWdsb3Qgc3VwcG9ydCBKYXZhIGFuZCBLb3RsaW4gdXNlZCB3aXRoIHZlcnRpY2xlIGRldmVsb3BtZW50cwoqIEEgbWV0cmljIHJlcG9ydGVyIGRlc2lnbmVkIHRvIHB1c2ggbWV0cmljcyB0byB0aGUgZXZlbnRidXMgdG9waWMKKiBBIGRhc2hib2FyZCBkZXNpZ25lZCB0byBjaGVjayB2b3RlIHJlc3VsdCB0aHJvdWdoIGEgd2Vic2Nva2V0IGFuZCByZWFkIGxhdGVzdCB2b3RlIHJlc3VsdCBtZXRyaWNzIGZyb20gdGhlIGV2ZW50YnVzIHRvcGljCiogUmVhY3RpdmUgYW5kIG5vbiBibG9ja2luZyBQb3N0Z3JlU1FMIGNsaWVudCB1c2VkIHRvIGhhbmRsZSBkYXRhYmFzZSBjb25uZWN0aW9ucywgcXVlcmllcyBhbmQgdHJhbnNhY3Rpb25zLgoqIEFwcGxpY2F0aW9uIGRvY2tlcml6ZWQgZnJvbSBhZG9wdG9wZW5qZGsvb3Blbmpkazgtb3Blbmo5OmFscGluZS1qcmUgaW1hZ2UuCiogQSBQb3N0Z3JlU1FMIGRhdGFiYXNlICBwcmVmZmVyZWQgdG8gc3RvcmUgYXBwbGljYXRpb24gZGF0YSB0aHJvdWdoIHJlYWN0aXZlIGRhdGFiYXNlIGRyaXZlci4gRHVyaW5nIGluc3RhbGxhdGlvbiBhbGwgcmVxdWlyZWQgZGF0YWJhc2UsIHNjaGVtYSwgdGFibGUgYW5kIGluZGV4ZXMgYXJlIGNyZWF0ZWQuCiogQXBwbGljYXRpb24gYW5kIGRhdGFiYXNlIGRvY2tlciBjb250YWluZXJzIGNvbXBvc2VkIGFuZCBydW4gd2l0aCBEb2NrZXIgQ29tcG9zZS4KCj09IFByZXJlcXVpc2l0ZXMKCiogSkRLIDgrCiogRG9ja2VyIEVuZ2luZQoqIERvY2tlciBDb21wb3NlCgo9PSBCdWlsZGluZwoKVG8gcGFja2FnZSB5b3VyIGFwcGxpY2F0aW9uOgpgYGAKLi9ncmFkbGV3IGNsZWFuIGJ1aWxkIC14IHRlc3QKYGBgCgo9PSBSdW4KClRvIGNvbXBvc2UgYW5kIHJ1biB5b3VyIGFwcGxpY2F0aW9uOgpgYGAKZG9ja2VyLWNvbXBvc2UgdXAgLS1idWlsZApgYGAKCk5PVEU6IERvY2tlciBjb21wb3NlcyBhbmQgcnVucyBhbiBhcHBsaWNhdGlvbiBjb250YWluZXIgYW5kIGEgZGF0YWJhc2UgY29udGFpbmVyCgpUbyBzdG9wIGFwcGxpY2F0aW9uIGFuZCBkYiBjb250YWluZXJzOgpgYGAKZG9ja2VyLWNvbXBvc2UgZG93biAtdgpgYGAKCj09IEdldHRpbmcgU3RhcnRlZApQb3N0IGEgdm90ZSB3aXRoIGBjdXJsYDoKCmBgYGJhc2gKY3VybCAtWCBQT1NUICJodHRwOi8vbG9jYWxob3N0Ojg4ODgvdm90ZXMvMjAyMCIgLUggImFjY2VwdDogYXBwbGljYXRpb24vanNvbiIgLUggIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIgLWQgIntcImNvdW50cnlGcm9tXCI6XCJOZXRoZXJsYW5kc1wiLFwidm90ZWRGb3JcIjpcIkJlbGdpdW1cIn0iCmBgYAoKR2V0IHRvcCB0aHJlZSBjb3VudHJpZXMgZm9yIHRoZSBzcGVjaWZpZWQgeWVhcgoKYGBgYmFzaApjdXJsIC1YIEdFVCAiaHR0cDovL2xvY2FsaG9zdDo4ODg4L3ZvdGVzLzIwMjAiIC1IICJhY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iCmBgYAoKR2V0IHRoZSB0b3AgdGhyZWUgZmF2b3JpdGUgc29uZ3MgZm9yIHRoZSBzcGVjaWZpZWQgeWVhciBhbmQgY291bnRyeQpgYGBiYXNoCmN1cmwgLVggR0VUICJodHRwOi8vbG9jYWxob3N0Ojg4ODgvdm90ZXMvMjAyMC9OZXRoZXJsYW5kcyIgLUggImFjY2VwdDogYXBwbGljYXRpb24vanNvbiIKYGBgCgpUbyBjaGVjayBvbmxpbmUgcmVzdWx0cyBsYXVuY2ggVm90ZSBSZXN1bHRzIERhc2hib2FyZCBhdCBodHRwOi8vbG9jYWxob3N0Ojk5OTkvCgo9PSBIZWxwCgoqIGh0dHBzOi8vdmVydHguaW8vZG9jcy9bVmVydC54IERvY3VtZW50YXRpb25dCiogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvdGFnZ2VkL3ZlcnQueD9zb3J0PW5ld2VzdCZwYWdlU2l6ZT0xNVtWZXJ0LnggU3RhY2sgT3ZlcmZsb3ddCiogaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8/ZnJvbWdyb3VwcyMhZm9ydW0vdmVydHhbVmVydC54IFVzZXIgR3JvdXBdCiogaHR0cHM6Ly9naXR0ZXIuaW0vZWNsaXBzZS12ZXJ0eC92ZXJ0eC11c2Vyc1tWZXJ0LnggR2l0dGVyXQoKCg== readmeEtag: '"d66330f74b463c3e4cf93ab1917f089cb009adf0"' readmeLastModified: Tue, 26 May 2020 12:07:34 GMT repositoryId: 266740708 description: >- A sample implementation to count the results of the Eurovision Song Contest created: '2020-05-25T09:38:47Z' updated: '2020-06-04T11:27:55Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: HalilOzkan logo: https://avatars.githubusercontent.com/u/8930446?v=4 license: Apache-2.0 repoEtag: '"e2d8b9bde7c73343c7122502cfe9bd6bae00e8464e73a649810506731bd63717"' repoLastModified: Thu, 04 Jun 2020 11:27:55 GMT foundInMaster: true category: Server Implementations id: 4b91d74f01aeab56d54b13f39582b9bb - source: openapi3 tags repository: https://github.com/gosticks/octoprint-open-api v3: true repositoryMetadata: base64Readme: >- CiMgT2N0b1ByaW50IE9wZW5BUEkgRGVmaW5pdGlvbiAoQkVUQSEhISkKClRoaXMgcHJvamVjdCBwcm92ZWQgYSB1bm9mZmljaWFsIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIHBvcHVsYXIgb3BlbiBzb3VyY2UgM0QgcHJpbnRlciBjb250cm9sIHNvZnR3YXJlIE9jdG9QcmludC4gVGhlIGRlZmluaXRpb25zIGFyZSBiYXNlZCBvbiB0aGUgY3VycmVudGx5IGF2YWlsYWJsZSBPY3RvUHJpbnQgYXBpIGRvY3VtZW50YXRpb24uIAoKIyMgV29ya2luZyBvbiB5b3VyIE9wZW5BUEkgRGVmaW5pdGlvbgoKIyMjIEluc3RhbGwKCjEuIEluc3RhbGwgW05vZGUgSlNdKGh0dHBzOi8vbm9kZWpzLm9yZy8pLgoyLiBDbG9uZSB0aGlzIHJlcG8gYW5kIHJ1biBgeWFybiBpbnN0YWxsYC9gbnBtIGluc3RhbGxgIGluIHRoZSByZXBvIHJvb3QuCgojIyMgVXNhZ2UKCiMjIyMgYG5wbSBzdGFydGAKU3RhcnRzIHRoZSByZWZlcmVuY2UgZG9jcyBwcmV2aWV3IHNlcnZlci4KCiMjIyMgYG5wbSBydW4gYnVpbGRgCkJ1bmRsZXMgdGhlIGRlZmluaXRpb24gdG8gdGhlIGRpc3QgZm9sZGVyLgoKIyMjIyBgbnBtIHRlc3RgClZhbGlkYXRlcyB0aGUgZGVmaW5pdGlvbi4KCiMjIENvbnRyaWJ1dGlvbiBHdWlkZQoKQmVsb3cgaXMgYSBzYW1wbGUgY29udHJpYnV0aW9uIGd1aWRlLiBUaGUgdG9vbHMKaW4gdGhlIHJlcG9zaXRvcnkgZG9uJ3QgcmVzdHJpY3QgeW91IHRvIGFueQpzcGVjaWZpYyBzdHJ1Y3R1cmUuIEFkanVzdCB0aGUgY29udHJpYnV0aW9uIGd1aWRlCnRvIG1hdGNoIHlvdXIgb3duIHN0cnVjdHVyZS4gSG93ZXZlciwgaWYgeW91CmRvbid0IGhhdmUgYSBzdHJ1Y3R1cmUgaW4gbWluZCwgdGhpcyBpcyBhCmdvb2QgcGxhY2UgdG8gc3RhcnQuCgpVcGRhdGUgdGhpcyBjb250cmlidXRpb24gZ3VpZGUgaWYgeW91CmFkanVzdCB0aGUgZmlsZS9mb2xkZXIgb3JnYW5pemF0aW9uLgoKVGhlIGAucmVkb2NseS55YW1sYCBjb250cm9scyBzZXR0aW5ncyBmb3IgdmFyaW91cwp0b29scyBpbmNsdWRpbmcgdGhlIGxpbnQgdG9vbCBhbmQgdGhlIHJlZmVyZW5jZQpkb2NzIGVuZ2luZS4gIE9wZW4gaXQgdG8gZmluZCBleGFtcGxlcyBhbmQKW3JlYWQgdGhlIGRvY3NdKGh0dHBzOi8vcmVkb2MubHkvZG9jcy9jbGkvY29uZmlndXJhdGlvbi8pCmZvciBtb3JlIGluZm9ybWF0aW9uLgoKIyMjIFNjaGVtYXMKCiMjIyMgQWRkaW5nIFNjaGVtYXMKCjEuIE5hdmlnYXRlIHRvIHRoZSBgb3BlbmFwaS9jb21wb25lbnRzL3NjaGVtYXNgIGZvbGRlci4KMi4gQWRkIGEgZmlsZSBuYW1lZCBhcyB5b3Ugd2lzaCB0byBuYW1lIHRoZSBzY2hlbWEuCjMuIERlZmluZSB0aGUgc2NoZW1hLgo0LiBSZWZlciB0byB0aGUgc2NoZW1hIHVzaW5nIHRoZSBgJHJlZmAgKHNlZSBleGFtcGxlIGJlbG93KS4KCiMjIyMjIFVzaW5nIHRoZSBgJHJlZmAKCk5vdGljZSBpbiB0aGUgY29tcGxleCBleGFtcGxlIGFib3ZlIHRoZSBzY2hlbWEgZGVmaW5pdGlvbiBpdHNlbGYgaGFzIGAkcmVmYCBsaW5rcyB0byBvdGhlciBzY2hlbWFzIGRlZmluZWQuCgpIZXJlIGlzIGEgc21hbGwgZXhjZXJwdCB3aXRoIGFuIGV4YW1wbGU6CgpgYGB5YW1sCmRlZmF1bHRQYXltZW50SW5zdHJ1bWVudDoKICAkcmVmOiAuL1BheW1lbnRJbnN0cnVtZW50LnlhbWwKYGBgCgpUaGUgdmFsdWUgb2YgdGhlIGAkcmVmYCBpcyB0aGUgcGF0aCB0byB0aGUgb3RoZXIgc2NoZW1hIGRlZmluaXRpb24uCgpZb3UgbWF5IHVzZSBgJHJlZmBzIHRvIGNvbXBvc2Ugc2NoZW1hIGZyb20gb3RoZXIgZXhpc3Rpbmcgc2NoZW1hIHRvIGF2b2lkIGR1cGxpY2F0aW9uLgoKWW91IHdpbGwgdXNlIGAkcmVmYHMgdG8gcmVmZXJlbmNlIHNjaGVtYSBmcm9tIHlvdXIgcGF0aCBkZWZpbml0aW9ucy4KCiMjIyMgRWRpdGluZyBTY2hlbWFzCgoxLiBOYXZpZ2F0ZSB0byB0aGUgYG9wZW5hcGkvY29tcG9uZW50cy9zY2hlbWFzYCBmb2xkZXIuCjIuIE9wZW4gdGhlIGZpbGUgeW91IHdpc2ggdG8gZWRpdC4KMy4gRWRpdC4KCiMjIyBQYXRocwoKIyMjIyBBZGRpbmcgYSBQYXRoCgoxLiBOYXZpZ2F0ZSB0byB0aGUgYG9wZW5hcGkvcGF0aHNgIGZvbGRlci4KMi4gQWRkIGEgbmV3IFlBTUwgZmlsZSBuYW1lZCBsaWtlIHlvdXIgVVJMIGVuZHBvaW50IGV4Y2VwdCByZXBsYWNpbmcgYC9gIHdpdGggYEBgIGFuZCBwdXR0aW5nIHBhdGggcGFyYW1ldGVycyBpbnRvIGN1cmx5IGJyYWNlcyBsaWtlIGB7ZXhhbXBsZX1gLgozLiBBZGQgdGhlIHBhdGggYW5kIGEgcmVmIHRvIGl0IGluc2lkZSBvZiB5b3VyIGBvcGVuYXBpLnlhbWxgIGZpbGUgaW5zaWRlIG9mIHRoZSBgb3BlbmFwaWAgZm9sZGVyLgoKRXhhbXBsZSBhZGRpdGlvbiB0byB0aGUgYG9wZW5hcGkueWFtbGAgZmlsZToKYGBgeWFtbAonL2N1c3RvbWVycy97aWR9JzoKICAkcmVmOiAnLi9wYXRocy9jdXN0b21lcnNAe2lkfS55YW1sJwpgYGAKCkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIFlBTUwgZmlsZSBuYW1lZCBgY3VzdG9tZXJzQHtpZH0ueWFtbGAgaW4gdGhlIGBwYXRoc2AgZm9sZGVyOgoKYGBgeWFtbApnZXQ6CiAgdGFnczoKICAgIC0gQ3VzdG9tZXJzCiAgc3VtbWFyeTogUmV0cmlldmUgYSBsaXN0IG9mIGN1c3RvbWVycwogIG9wZXJhdGlvbklkOiBHZXRDdXN0b21lckNvbGxlY3Rpb24KICBkZXNjcmlwdGlvbjogfAogICAgWW91IGNhbiBoYXZlIGEgbWFya2Rvd24gZGVzY3JpcHRpb24gaGVyZS4KICBwYXJhbWV0ZXJzOgogICAgLSAkcmVmOiAuLi9jb21wb25lbnRzL3BhcmFtZXRlcnMvY29sbGVjdGlvbkxpbWl0LnlhbWwKICAgIC0gJHJlZjogLi4vY29tcG9uZW50cy9wYXJhbWV0ZXJzL2NvbGxlY3Rpb25PZmZzZXQueWFtbAogICAgLSAkcmVmOiAuLi9jb21wb25lbnRzL3BhcmFtZXRlcnMvY29sbGVjdGlvbkZpbHRlci55YW1sCiAgICAtICRyZWY6IC4uL2NvbXBvbmVudHMvcGFyYW1ldGVycy9jb2xsZWN0aW9uUXVlcnkueWFtbAogICAgLSAkcmVmOiAuLi9jb21wb25lbnRzL3BhcmFtZXRlcnMvY29sbGVjdGlvbkV4cGFuZC55YW1sCiAgICAtICRyZWY6IC4uL2NvbXBvbmVudHMvcGFyYW1ldGVycy9jb2xsZWN0aW9uRmllbGRzLnlhbWwKICByZXNwb25zZXM6CiAgICAnMjAwJzoKICAgICAgZGVzY3JpcHRpb246IEEgbGlzdCBvZiBDdXN0b21lcnMgd2FzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkKICAgICAgaGVhZGVyczoKICAgICAgICBSYXRlLUxpbWl0LUxpbWl0OgogICAgICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9oZWFkZXJzL1JhdGUtTGltaXQtTGltaXQueWFtbAogICAgICAgIFJhdGUtTGltaXQtUmVtYWluaW5nOgogICAgICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9oZWFkZXJzL1JhdGUtTGltaXQtUmVtYWluaW5nLnlhbWwKICAgICAgICBSYXRlLUxpbWl0LVJlc2V0OgogICAgICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9oZWFkZXJzL1JhdGUtTGltaXQtUmVzZXQueWFtbAogICAgICAgIFBhZ2luYXRpb24tVG90YWw6CiAgICAgICAgICAkcmVmOiAuLi9jb21wb25lbnRzL2hlYWRlcnMvUGFnaW5hdGlvbi1Ub3RhbC55YW1sCiAgICAgICAgUGFnaW5hdGlvbi1MaW1pdDoKICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvaGVhZGVycy9QYWdpbmF0aW9uLUxpbWl0LnlhbWwKICAgICAgICBQYWdpbmF0aW9uLU9mZnNldDoKICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvaGVhZGVycy9QYWdpbmF0aW9uLU9mZnNldC55YW1sCiAgICAgIGNvbnRlbnQ6CiAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9zY2hlbWFzL0N1c3RvbWVyLnlhbWwKICAgICAgICB0ZXh0L2NzdjoKICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgICAgaXRlbXM6CiAgICAgICAgICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9zY2hlbWFzL0N1c3RvbWVyLnlhbWwKICAgICc0MDEnOgogICAgICAkcmVmOiAuLi9jb21wb25lbnRzL3Jlc3BvbnNlcy9BY2Nlc3NGb3JiaWRkZW4ueWFtbAogIHgtY29kZS1zYW1wbGVzOgogICAgLSBsYW5nOiBQSFAKICAgICAgc291cmNlOgogICAgICAgICRyZWY6IC4uL2NvZGVfc2FtcGxlcy9QSFAvY3VzdG9tZXJzL2dldC5waHAKcG9zdDoKICB0YWdzOgogICAgLSBDdXN0b21lcnMKICBzdW1tYXJ5OiBDcmVhdGUgYSBjdXN0b21lciAod2l0aG91dCBhbiBJRCkKICBvcGVyYXRpb25JZDogUG9zdEN1c3RvbWVyCiAgZGVzY3JpcHRpb246IEFub3RoZXIgbWFya2Rvd24gZGVzY3JpcHRpb24gaGVyZS4KICByZXF1ZXN0Qm9keToKICAgICRyZWY6IC4uL2NvbXBvbmVudHMvcmVxdWVzdEJvZGllcy9DdXN0b21lci55YW1sCiAgcmVzcG9uc2VzOgogICAgJzIwMSc6CiAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvcmVzcG9uc2VzL0N1c3RvbWVyLnlhbWwKICAgICc0MDEnOgogICAgICAkcmVmOiAuLi9jb21wb25lbnRzL3Jlc3BvbnNlcy9BY2Nlc3NGb3JiaWRkZW4ueWFtbAogICAgJzQwOSc6CiAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvcmVzcG9uc2VzL0NvbmZsaWN0LnlhbWwKICAgICc0MjInOgogICAgICAkcmVmOiAuLi9jb21wb25lbnRzL3Jlc3BvbnNlcy9JbnZhbGlkRGF0YUVycm9yLnlhbWwKICB4LWNvZGUtc2FtcGxlczoKICAgIC0gbGFuZzogUEhQCiAgICAgIHNvdXJjZToKICAgICAgICAkcmVmOiAuLi9jb2RlX3NhbXBsZXMvUEhQL2N1c3RvbWVycy9wb3N0LnBocApgYGAKCllvdSdsbCBzZWUgZXh0ZW5zaXZlIHVzYWdlIG9mIGAkcmVmYHMgaW4gdGhpcyBleGFtcGxlIHRvIGRpZmZlcmVudCB0eXBlcyBvZiBjb21wb25lbnRzIGluY2x1ZGluZyBzY2hlbWFzLgoKWW91J2xsIGFsc28gbm90aWNlIGAkcmVmYHMgdG8gY29kZSBzYW1wbGVzLgoK readmeEtag: '"71b48387434e3d2f2606711f48ba1e62b3db0c47"' readmeLastModified: Sun, 22 Nov 2020 00:58:08 GMT repositoryId: 306438975 description: OctoPrint OpenAPI definition created: '2020-10-22T19:27:00Z' updated: '2022-03-28T13:09:07Z' language: null archived: false stars: 1 watchers: 1 forks: 0 owner: gosticks logo: https://avatars.githubusercontent.com/u/9556979?v=4 license: MIT repoEtag: '"77703a0d51545614a44fc735d1dc004cc146de4a0752cd48cfa14f21bdb08652"' repoLastModified: Mon, 28 Mar 2022 13:09:07 GMT foundInMaster: true category: Parsers id: 2ee853734020d1d065fc32dc763f8940 - source: openapi3 tags repository: https://github.com/stephan-mueller/api-documentation-showcase v3: true repositoryMetadata: base64Readme: >- IyBBUEkgRG9jdW1lbnRhdGlvbiBTaG93Y2FzZQoKWyFbR2l0SHViIFdvcmtmbG93XShodHRwczovL2dpdGh1Yi5jb20vc3RlcGhhbi1tdWVsbGVyL2FwaS1kb2N1bWVudGF0aW9uLXNob3djYXNlL2FjdGlvbnMvd29ya2Zsb3dzL21hdmVuLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc3RlcGhhbi1tdWVsbGVyL2FwaS1kb2N1bWVudGF0aW9uLXNob3djYXNlL2FjdGlvbnMpClshW0dpdEh1YiBsYXN0IGNvbW1pdF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGFzdC1jb21taXQvc3RlcGhhbi1tdWVsbGVyL2FwaS1kb2N1bWVudGF0aW9uLXNob3djYXNlKV0oaHR0cHM6Ly9naXRodWIuY29tL3N0ZXBoYW4tbXVlbGxlci9hcGktZG9jdW1lbnRhdGlvbi1zaG93Y2FzZS9jb21taXRzKQpbIVtHaXRIdWJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2Uvc3RlcGhhbi1tdWVsbGVyL2FwaS1kb2N1bWVudGF0aW9uLXNob3djYXNlKV0oaHR0cHM6Ly9naXRodWIuY29tL3N0ZXBoYW4tbXVlbGxlci9hcGktZG9jdW1lbnRhdGlvbi1zaG93Y2FzZS9ibG9iL21hc3Rlci9MSUNFTlNFKQoKVGhpcyBpcyBhIHNob3djYXNlIGZvciBhcGkgZG9jdW1lbnRhdGlvbi4gSXQgY29udGFpbnMgaGVsbG8gd29ybGQgYXBwbGljYXRpb25zLCB3aGljaCBkZW1vbnN0cmF0ZXMgZmVhdHVyZXMgb2YgdGhlCltPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vb3BlbmFwaXMub3JnKSBhbmQgb3RoZXJzLiBTb2Z0d2FyZSByZXF1aXJlbWVudHMgdG8gcnVuIHRoZSBzYW1wbGVzIGFyZSBgbWF2ZW5gLCBgb3Blbmpkay04YCAob3IgYW55IG90aGVyIApKREsgOCkgYW5kIGBkb2NrZXJgLgoKIyMgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIChPQVMpCgpUaGUgW09wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zKSAoT0FTKSBkZWZpbmVzIGEgc3RhbmRhcmQsIHByb2dyYW1taW5nIGxhbmd1YWdlLWFnbm9zdGljIGludGVyZmFjZSBkZXNjcmlwdGlvbiBmb3IgUkVTVCBBUElzLCB3aGljaCBhbGxvd3MgYm90aCAKaHVtYW5zIGFuZCBjb21wdXRlcnMgdG8gZGlzY292ZXIgYW5kIHVuZGVyc3RhbmQgdGhlIGNhcGFiaWxpdGllcyBvZiBhIHNlcnZpY2Ugd2l0aG91dCByZXF1aXJpbmcgYWNjZXNzIHRvIHNvdXJjZSBjb2RlLCBhZGRpdGlvbmFsIApkb2N1bWVudGF0aW9uLCBvciBpbnNwZWN0aW9uIG9mIG5ldHdvcmsgdHJhZmZpYy4gV2hlbiBwcm9wZXJseSBkZWZpbmVkIHZpYSBPcGVuQVBJLCBhIGNvbnN1bWVyIGNhbiB1bmRlcnN0YW5kIGFuZCBpbnRlcmFjdCB3aXRoIHRoZSByZW1vdGUKc2VydmljZSB3aXRoIGEgbWluaW1hbCBhbW91bnQgb2YgaW1wbGVtZW50YXRpb24gbG9naWMuIFNpbWlsYXIgdG8gd2hhdCBpbnRlcmZhY2UgZGVzY3JpcHRpb25zIGhhdmUgZG9uZSBmb3IgbG93ZXItbGV2ZWwgcHJvZ3JhbW1pbmcsIHRoZSAKT3BlbkFQSSBTcGVjaWZpY2F0aW9uIHJlbW92ZXMgZ3Vlc3N3b3JrIGluIGNhbGxpbmcgYSBzZXJ2aWNlLgoKIyMjIE9BUyB2MiAoZmthIFN3YWdnZXIgUkVTVGZ1bCBBUEkgRG9jdW1lbnRhdGlvbiBTcGVjaWZpY2F0aW9uKQoKW1N3YWdnZXJdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uL3YyLykgaXMgYW4gSW50ZXJmYWNlIERlc2NyaXB0aW9uIExhbmd1YWdlIGZvciBkZXNjcmliaW5nIFJFU1RmdWwgQVBJcyBleHByZXNzZWQgdXNpbmcgSlNPTi4gU3dhZ2dlciBpcyB1c2VkIHRvZ2V0aGVyIHdpdGggYSBzZXQgb2YgCm9wZW4tc291cmNlIHNvZnR3YXJlIHRvb2xzIHRvIGRlc2lnbiwgYnVpbGQsIGRvY3VtZW50LCBhbmQgdXNlIFJFU1RmdWwgd2ViIHNlcnZpY2VzLiBTd2FnZ2VyIGluY2x1ZGVzIGF1dG9tYXRlZCBkb2N1bWVudGF0aW9uLCBjb2RlIApnZW5lcmF0aW9uIChpbnRvIG1hbnkgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzKSwgYW5kIHRlc3QtY2FzZSBnZW5lcmF0aW9uLgoKIyMjIFNob3djYXNlcwoKKiBUaGUgW0VjbGlwc2UgTWljcm9Qcm9maWxlIE9wZW5BUEkgU2hvd2Nhc2VdKG1wLW9wZW5hcGktc2hvd2Nhc2UvUkVBRE1FLm1kKSBzaG93cyBmZWF0dXJlcyBvZiB0aGUgTVAgT3BlbkFQSSBTcGVjaWZpY2F0aW9uLgoqIFRoZSBbU3dhZ2dlciBTaG93Y2FzZV0oc3dhZ2dlci1zaG93Y2FzZS9SRUFETUUubWQpIHNob3dzIGZlYXR1cmVzIG9mIHRoZSBTd2FnZ2VyIFNwZWNpZmljYXRpb24gYW5kIHRoZSBTd2FnZ2VyIENvcmUgZnJhbWV3b3JrLg== readmeEtag: '"7d2b40c246a6a49d24193c019b1e68575b766de7"' readmeLastModified: Wed, 16 Jun 2021 14:42:06 GMT repositoryId: 368658825 description: null created: '2021-05-18T20:30:38Z' updated: '2023-05-24T06:20:59Z' language: Java archived: true stars: 1 watchers: 1 forks: 0 owner: stephan-mueller logo: https://avatars.githubusercontent.com/u/13217222?v=4 license: Apache-2.0 repoEtag: '"22294cc10d1f41cff5528565d53a238cd044351ab32047d9ea4d3050a1c34237"' repoLastModified: Wed, 24 May 2023 06:20:59 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: 7d031cad29aed62914f5b9b6a12b9188 - source: openapi3 tags repository: https://github.com/javasks/open-api v3: true repositoryMetadata: repositoryId: 366143641 description: >- This repo is related to the open API generator. You need to come with the first API contract and then Models and endpoint will be exposed based on the open API generator plugin. created: '2021-05-10T18:43:46Z' updated: '2021-05-11T07:51:15Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: javasks logo: https://avatars.githubusercontent.com/u/35063886?v=4 repoEtag: '"34016352aed3ca40b27c6bcbfe8af476abf29bc55a3262844f4608101d197518"' repoLastModified: Tue, 11 May 2021 07:51:15 GMT foundInMaster: true id: c537c00b4db182f81ea02e362da86e06 - source: openapi3 tags repository: https://github.com/scalabli/yadig v3: true repositoryMetadata: base64Readme: >- WyFbRG93bmxvYWRzXShodHRwczovL3BlcHkudGVjaC9iYWRnZS9jaXR1cyldKGh0dHBzOi8vcGVweS50ZWNoL3Byb2plY3QvY2l0dXMpClshW1B5UEkgdmVyc2lvbl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL3B5L2NpdHVzLnN2ZyldKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9weS9jaXR1cykKWyFbV2hlZWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS93aGVlbC9jaXR1cy5zdmcpXShodHRwczovL3B5cGkuY29tL3Byb2plY3QvY2l0dXMpClshW1dpbmRvd3MgQnVpbGQgU3RhdHVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2FwcHZleW9yL2J1aWxkL2dlcnJpc2hvbnMvY2l0dXMvbWFpbj9sb2dvPWFwcHZleW9yJmNhY2hlU2Vjb25kcz02MDApXShodHRwczovL2NpLmFwcHZleW9yLmNvbS9wcm9qZWN0L2dlcnJpc2hvbnMvY2l0dXMpClshW3B5aW1wXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvaW1wbGVtZW50YXRpb24vY2l0dXMuc3ZnKV0oaHR0cHM6Ly9weXBpLmNvbS9wcm9qZWN0L2NpdHVzKQpbIVtSVERdKGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL2NpdHVzL2JhZGdlLyldKGh0dHBzOi8vY2l0dXMucmVhZHRoZWRvY3MuaW8pClshW2xpY2VuY2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9sL2NpdHVzLnN2ZyldKGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKQpbIVtUd2l0dGVyIEZvbGxvd10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90d2l0dGVyL2ZvbGxvdy9nZXJyaXNob25fcy5zdmc/c3R5bGU9c29jaWFsKV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9nZXJyaXNob25fcykKCgpbIVtMb2dvXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc2VjcmV0dW0taW5jL2NpdHVzL21haW4vZG9jcy9pbWFnZXMvY2l0dXMucG5nKV0oaHR0cHM6Ly9naXRodWIuY29tL3NlY3JldHVtLWluYy9jaXR1cykKCgpgRm9yZXZlciBTY2FsYWJsZWAKCioq8J2ZsvCdmpLwnZqd8J2anvCdmpwqKiBpcyBhIHB5dGhvbiBiYXNlZCwgdWx0cmFmYXN0IHdlYiBmcmFtZXdvcmsgIGZvY3VzaW5nIG9uIGNvbXBvc2luZyBXZWIgQVBJcyBhbGwgdGhlIG1vcmUgcmFwaWRseSBhbmQgd2l0aCBuZWVkbGVzcyBiYWdnYWdlLiAKCkNpdHVzIHJlcXVpcmVzIFB5dGhvbiBgMy44YCBvciBsYXRlci4gCgoKIyMgRmVhdHVyZXMKVGhlIGtleSBmZWF0dXJlcyBhcmU6CgotIFt4XSAqKkZhc3QqKjogVmVyeSBoaWdoIHBlcmZvcm1hbmNlLCBvbiBwYXIgd2l0aCAqKk5vZGVKUyoqIGFuZCAqKkdvKiogKHRoYW5rcyB0byBTdGFybGV0dGUgYW5kIFB5ZGFudGljKS4gW09uZSBvZiB0aGUgZmFzdGVzdCBQeXRob24gZnJhbWV3b3JrcyBhdmFpbGFibGVdKCNwZXJmb3JtYW5jZSkuCgotIFt4XSAqKkZhc3QgdG8gY29kZSoqOiBJbmNyZWFzZSB0aGUgc3BlZWQgdG8gZGV2ZWxvcCBmZWF0dXJlcyBieSBhYm91dCAyMDAlIHRvIDMwMCUuICoKLSBbeF0gKipGZXdlciBidWdzKio6IFJlZHVjZSBhYm91dCA0MCUgb2YgaHVtYW4gKGRldmVsb3BlcikgaW5kdWNlZCBlcnJvcnMuICoKLSBbeF0gKipJbnR1aXRpdmUqKjogR3JlYXQgZWRpdG9yIHN1cHBvcnQuIDxhYmJyIHRpdGxlPSJhbHNvIGtub3duIGFzIGF1dG8tY29tcGxldGUsIGF1dG9jb21wbGV0aW9uLCBJbnRlbGxpU2Vuc2UiPkNvbXBsZXRpb248L2FiYnI+IGV2ZXJ5d2hlcmUuIExlc3MgdGltZSBkZWJ1Z2dpbmcuCi0gW3hdICoqRWFzeSoqOiBEZXNpZ25lZCB0byBiZSBlYXN5IHRvIHVzZSBhbmQgbGVhcm4uIExlc3MgdGltZSByZWFkaW5nIGRvY3MuCi0gW3hdICoqU2hvcnQqKjogTWluaW1pemUgY29kZSBkdXBsaWNhdGlvbi4gTXVsdGlwbGUgZmVhdHVyZXMgZnJvbSBlYWNoIHBhcmFtZXRlciBkZWNsYXJhdGlvbi4gRmV3ZXIgYnVncy4KLSBbeF0gKipSb2J1c3QqKjogR2V0IHByb2R1Y3Rpb24tcmVhZHkgY29kZS4gV2l0aCBhdXRvbWF0aWMgaW50ZXJhY3RpdmUgZG9jdW1lbnRhdGlvbi4KLSBbeF0gKipTdGFuZGFyZHMtYmFzZWQqKjogQmFzZWQgb24gKGFuZCBmdWxseSBjb21wYXRpYmxlIHdpdGgpIHRoZSBvcGVuIHN0YW5kYXJkcyBmb3IgQVBJczogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24iIGNsYXNzPSJleHRlcm5hbC1saW5rIiB0YXJnZXQ9Il9ibGFuayI+T3BlbkFQSTwvYT4gKHByZXZpb3VzbHkga25vd24gYXMgU3dhZ2dlcikgYW5kIDxhIGhyZWY9Imh0dHBzOi8vanNvbi1zY2hlbWEub3JnLyIgY2xhc3M9ImV4dGVybmFsLWxpbmsiIHRhcmdldD0iX2JsYW5rIj5KU09OIFNjaGVtYTwvYT4uCgo8c21hbGw+KiBlc3RpbWF0aW9uIGJhc2VkIG9uIHRlc3RzIG9uIGFuIGludGVybmFsIGRldmVsb3BtZW50IHRlYW0sIGJ1aWxkaW5nIHByb2R1Y3Rpb24gYXBwbGljYXRpb25zLjwvc21hbGw+Ci0gW3hdIFN1cHBvcnQgZm9yIEFuc2ksIFJHQiBhbmQgSFRNTCBjb2xvciBtb2RlbHMKLSBbeF0gU3VwcG9ydCBmb3IgdGFidWxhciBwcmVzZW50YXRpb24gb2YgZGF0YQotIFt4XSBJbnRlcmFjdGl2ZSBwcm9ncmVzc2JhcnMKLSBbeF0gQ29kZSBjb21wbGV0aW9ucwotIFt4XSBOZXN0aW5nIG9mIGNvbW1hbmRzCi0gW3hdIEF1dG9tYXRpYyBoZWxwIHBhZ2UgZ2VuZXJhdGlvbgotIFt4XSBTeW50YXggaGlnaGxpZ2h0aW5nCi0gW3hdIEF1dG9zdWdnZXN0aW9ucwotIFt4XSBLZXkgQmluZGVycwoKIyMgR2V0dGluZyBTdGFydGVkCiMjIyBJbnN0YWxsYXRpb24KWW91IGNhbiBpbnN0YWxsIGNpdHVzIHZpYSB0aGUgUHl0aG9uIFBhY2thZ2UgSW5kZXggKFB5UEkpCgpgYGAKcGlwIGluc3RhbGwgLVUgY2l0dXMKYGBgCgojIyBFeGFtcGxlCgojIyMgQ3JlYXRlIGl0CgoqIENyZWF0ZSBhIGZpbGUgYG1haW4ucHlgIHdpdGg6CgpgYGBQeXRob24KZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCgppbXBvcnQgY2l0dXMKCmFwcCA9IGNpdHVzLkFwcCgpCgoKQGFwcC5HRVQoIi8iKQpkZWYgcmVhZF9yb290KCk6CiAgICByZXR1cm4gIkhlbGxvIFdvcmxkIgoKCkBhcHAuR0VUKCIvaXRlbXMve2l0ZW1faWR9IikKZGVmIHJlYWRfaXRlbShpdGVtX2lkOiBpbnQsIHE6IE9wdGlvbmFsW3N0cl0gPSBOb25lKToKICAgIHJldHVybiB7Iml0ZW1faWQiOiBpdGVtX2lkLCAicSI6IHF9CmBgYAoKPGRldGFpbHMgbWFya2Rvd249IjEiPgo8c3VtbWFyeT5PciB1c2UgPGNvZGU+YXN5bmMgZGVmPC9jb2RlPi4uLjwvc3VtbWFyeT4KCklmIHlvdXIgY29kZSB1c2VzIGBhc3luY2AgLyBgYXdhaXRgLCB1c2UgYGFzeW5jIGRlZmA6CgpgYGBQeXRob24gaGxfbGluZXM9IjkgIDE0Igpmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKaW1wb3J0IHF1bwoKYXBwID0gY2l0dXMuQXBwKCkKCgpAYXBwLkdFVCgiLyIpCmFzeW5jIGRlZiByZWFkX3Jvb3QoKToKICAgIHJldHVybiAiSGVsbG8gV29ybGQiCgoKQGFwcC5HRVQoIi9pdGVtcy97aXRlbV9pZH0iKQphc3luYyBkZWYgcmVhZF9pdGVtKGl0ZW1faWQ6IGludCwgcTogT3B0aW9uYWxbc3RyXSA9IE5vbmUpOgogICAgcmV0dXJuIHsiaXRlbV9pZCI6IGl0ZW1faWQsICJxIjogcX0KYGBgCgoKKipOb3RlKio6CgpJZiB5b3UgZG9uJ3Qga25vdywgY2hlY2sgdGhlIF8iSW4gYSBodXJyeT8iXyBzZWN0aW9uIGFib3V0IDxhIGhyZWY9Imh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vYXN5bmMvI2luLWEtaHVycnkiIHRhcmdldD0iX2JsYW5rIj5gYXN5bmNgIGFuZCBgYXdhaXRgIGluIHRoZSBkb2NzPC9hPi4KCjwvZGV0YWlscz4KCiMjIyBSdW4gaXQKClJ1biB0aGUgc2VydmVyIHdpdGg6Cgo8ZGl2IGNsYXNzPSJ0ZXJteSI+CgpgYGBjb25zb2xlCiQgY2l0dXMgbWFpbjphcHAgLS1yZWxvYWQKCklORk86ICAgICBDaXR1cyBydW5uaW5nIG9uIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMCAoUHJlc3MgQ1RSTCtDIHRvIHF1aXQpCklORk86ICAgICBTdGFydGVkIHJlbG9hZGVyIHByb2Nlc3MgWzI4NzIwXQpJTkZPOiAgICAgU3RhcnRlZCBzZXJ2ZXIgcHJvY2VzcyBbMjg3MjJdCklORk86ICAgICBXYWl0aW5nIGZvciBhcHBsaWNhdGlvbiBzdGFydHVwLgpJTkZPOiAgICAgQXBwbGljYXRpb24gc3RhcnR1cCBjb21wbGV0ZS4KYGBgCgo8L2Rpdj4KCjxkZXRhaWxzIG1hcmtkb3duPSIxIj4KPHN1bW1hcnk+QWJvdXQgdGhlIGNvbW1hbmQgPGNvZGU+dXZpY29ybiBtYWluOmFwcCAtLXJlbG9hZDwvY29kZT4uLi48L3N1bW1hcnk+CgpUaGUgY29tbWFuZCBgY2l0dXMgbWFpbjphcHBgIHJlZmVycyB0bzoKCiogYG1haW5gOiB0aGUgZmlsZSBgbWFpbi5weWAgKHRoZSBQeXRob24gIm1vZHVsZSIpLgoqIGBhcHBgOiB0aGUgb2JqZWN0IGNyZWF0ZWQgaW5zaWRlIG9mIGBtYWluLnB5YCB3aXRoIHRoZSBsaW5lIGBhcHAgPSBjaXR1cy5BcHAoKWAuCiogYC0tcmVsb2FkYCBvciBgLXJgOiBtYWtlIHRoZSBzZXJ2ZXIgcmVzdGFydCBhZnRlciBjb2RlIGNoYW5nZXMuIE9ubHkgZG8gdGhpcyBmb3IgZGV2ZWxvcG1lbnQuCgo8L2RldGFpbHM+CgojIyBFeGFtcGxlIHVwZ3JhZGUKCk5vdyBtb2RpZnkgdGhlIGZpbGUgYG1haW4ucHlgIHRvIHJlY2VpdmUgYSBib2R5IGZyb20gYSBgUFVUYCByZXF1ZXN0LgoKRGVjbGFyZSB0aGUgYm9keSB1c2luZyBzdGFuZGFyZCBQeXRob24gdHlwZXMsIHRoYW5rcyB0byBQeWRhbnRpYy4KCmBgYFB5dGhvbiBobF9saW5lcz0iNCAgOS0xMiAgMjUtMjciCmZyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAoKaW1wb3J0IGNpdHVzCgphcHAgPSBjaXR1cy5BcHAoKQoKCmNsYXNzIEl0ZW0oY2l0dXMuQmFzZSk6CiAgICBuYW1lOiBzdHIKICAgIHByaWNlOiBmbG9hdAogICAgaXNfb2ZmZXI6IE9wdGlvbmFsW2Jvb2xdID0gTm9uZQoKCkBhcHAuR0VUKCIvIikKZGVmIHJlYWRfcm9vdCgpOgogICAgcmV0dXJuICJIZWxsbyBXb3JsZCIKCgpAYXBwLkdFVCgiL2l0ZW1zL3tpdGVtX2lkfSIpCmRlZiByZWFkX2l0ZW0oaXRlbV9pZDogaW50LCBxOiBPcHRpb25hbFtzdHJdID0gTm9uZSk6CiAgICByZXR1cm4geyJpdGVtX2lkIjogaXRlbV9pZCwgInEiOiBxfQoKCkBhcHAuR0VUKCIvaXRlbXMve2l0ZW1faWR9IikKZGVmIHVwZGF0ZV9pdGVtKGl0ZW1faWQ6IGludCwgaXRlbTogSXRlbSk6CiAgICByZXR1cm4geyJpdGVtX25hbWUiOiBpdGVtLm5hbWUsICJpdGVtX2lkIjogaXRlbV9pZH0KYGBgCgpUaGUgc2VydmVyIHNob3VsZCByZWxvYWQgYXV0b21hdGljYWxseSAoYmVjYXVzZSB5b3UgYWRkZWQgYC0tcmVsb2FkYCB0byB0aGUgY29tbWFuZCBhYm92ZSkuCgojIyMgQ2hlY2sgaXQKCk9wZW4geW91ciBicm93c2VyIGF0IDxhIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pdGVtcy8zMz9xPWNoZWNrdXNlciIgY2xhc3M9ImV4dGVybmFsLWxpbmsiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vMTI3LjAuMC4xOjgwMDAvaXRlbXMvMzM/cT1jaGVja3VzZXI8L2E+LgoKWW91IHdpbGwgc2VlIHRoZSBKU09OIHJlc3BvbnNlIGFzOgoKYGBgSlNPTgp7Iml0ZW1faWQiOiAzMywgInEiOiAiY2hlY2t1c2VyIn0KYGBgCgpZb3UgYWxyZWFkeSBjcmVhdGVkIGFuIEFQSSB0aGF0OgoKKiBSZWNlaXZlcyBIVFRQIHJlcXVlc3RzIGluIHRoZSBfcGF0aHNfIGAvYCBhbmQgYC9pdGVtcy97aXRlbV9pZH1gLgoqIEJvdGggX3BhdGhzXyB0YWtlIGBHRVRgIDxlbT5vcGVyYXRpb25zPC9lbT4gKGFsc28ga25vd24gYXMgSFRUUCBfbWV0aG9kc18pLgoqIFRoZSBfcGF0aF8gYC9pdGVtcy97aXRlbV9pZH1gIGhhcyBhIF9wYXRoIHBhcmFtZXRlcl8gYGl0ZW1faWRgIHRoYXQgc2hvdWxkIGJlIGFuIGBpbnRgLgoqIFRoZSBfcGF0aF8gYC9pdGVtcy97aXRlbV9pZH1gIGhhcyBhbiBvcHRpb25hbCBgc3RyYCBfcXVlCgojIyBHZXR0aW5nIEhlbHAKCiMjIyBDb21tdW5pdHkKCkZvciBkaXNjdXNzaW9ucyBhYm91dCB0aGUgdXNhZ2UsIGRldmVsb3BtZW50LCBhbmQgdGhlIGZ1dHVyZSBvZiBxdW8sIHBsZWFzZSBqb2luIG91ciBHb29nbGUgY29tbXVuaXR5CgoqIFtDb21tdW5pdHnwn5Go4oCN8J+RqeKAjfCfkabigI3wn5GmXShodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVtLyMhZm9ydW0vc2VjcmV0dW0pCgojIyBSZXNvdXJjZXMKCiMjIyBCdWcgdHJhY2tlcgoKSWYgeW91IGhhdmUgYW55IHN1Z2dlc3Rpb25zLCBidWcgcmVwb3J0cywgb3IgYW5ub3lhbmNlcyBwbGVhc2UgcmVwb3J0IHRoZW0KdG8gb3VyIGlzc3VlIHRyYWNrZXIgYXQgCltCdWcgdHJhY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL3NlY3JldHVtLWluYy9jaXR1cy9pc3N1ZXMvKSBvciBzZW5kIGFuIGVtYWlsIHRvOgoKIPCfk6Ugc2VjcmV0dW1AZ29vZ2xlZ3JvdXBzLmNvbQoKCiMjIExpY2Vuc2Xwn5ORCgpbIVtMaWNlbnNlOiBNSVRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGljZW5zZS1NSVQteWVsbG93LnN2ZyldKGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKSAgClRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIGBNSVQgTGljZW5zZWAuIFNlZSB0aGUgW0xpY2Vuc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9zZWNyZXR1bS1pbmMvY2l0dXMvYmxvYi9tYWluL0xJQ0VOU0UpIGZpbGUgaW4gdGhlIHRvcCBkaXN0cmlidXRpb24gZGlyZWN0b3J5IGZvciB0aGUgZnVsbCBsaWNlbnNlIHRleHQuCgoKIyMgQ29kZSBvZiBDb25kdWN0CkNvZGUgb2YgQ29uZHVjdCBpcyBhZGFwdGVkIGZyb20gdGhlIENvbnRyaWJ1dG9yIENvdmVuYW50LAp2ZXJzaW9uIDEuMi4wIGF2YWlsYWJsZSBhdApbQ29kZSBvZiBDb25kdWN0XShodHRwOi8vY29udHJpYnV0b3ItY292ZW5hbnQub3JnL3ZlcnNpb24vMS8yLzAvKQoK readmeEtag: '"5deadb74a6fd7a18a619c7e5a52e488e5b8f5fa8"' readmeLastModified: Tue, 29 Mar 2022 19:43:26 GMT repositoryId: 444886233 description: >- `𝙲𝚒𝚝𝚞𝚜` is a python based, ultrafast web framework focusing on composing Web APIs all the more rapidly and with needless baggage created: '2022-01-05T17:08:58Z' updated: '2022-10-15T08:01:07Z' language: Python archived: false stars: 1 watchers: 1 forks: 0 owner: scalabli logo: https://avatars.githubusercontent.com/u/34297519?v=4 license: MIT repoEtag: '"cc3ddaa0e88c0fc036bb762a00a535498e7756b7b36eb5fd48f7b95f33030a00"' repoLastModified: Sat, 15 Oct 2022 08:01:07 GMT foundInMaster: true category: Server Implementations id: e230a9681537acc79ecffb5abe8f70d2 oldLocations: - https://github.com/secretum-inc/citus - source: openapi3 tags repository: https://github.com/izobretatel777/ambiglyph-server v3: true id: 2021539a7c6727ac3683c732f2ce6c34 repositoryMetadata: base64Readme: >- IyBBbWJpZ2x5cGggU2VydmVyCjxkaXYgYWxpZ249ImNlbnRlciI+CjxpbWcgc3JjPSJkb2MvaWNvbi5wbmciIGFsdD0iaWNvbiIgd2lkdGg9IjEyOCIvPgo8aDI+QW1iaWdseXBoPC9oMj4KPC9kaXY+CgoKKipBbWJpZ2x5cGggU2VydmVyKiogLSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFtYmlnbHlwaCBwcm9qZWN0IGJhY2tlbmQuIGl0IGlzIGZ1bGx5IHdyaXR0ZW4gaW4gSmF2YSB3aXRoIFNwcmluZyB0ZWNobm9sb2d5IHRoYXRzIHByb3ZpZGUgcG93ZXJmdWwgQVBJLgoKSXQgY2FuIGRldGVjdCBob21vZ2x5cGhzIGluc2lkZSBhIHRleHQgYW5kIGdpdmUgc3VnZ2VzdGlvbnMgdG8gcmVjb3ZlciBpdCB1c2luZyBMZXZlbnNodGVpbiBhbGdvcml0aG0uICBUaGUgbWFpbiBhcHByb2FjaCBpcyB0byB1c2UgdGhlIGFsZ29yaXRobSBhcyBpdCB1c2VkIGZvciBtaXNzcGVsbHMgZml4aW5nLiAgQW4gdXNlciB3aWxsIGJlIHByb3ZpZGVkIHdpdGggc3VnZ2VzdGlvbnMgaG93IHdpdGggd2hpY2ggd29yZCBvYmZ1c2NhdGVkIG9uZSBjYW4gYmUgcmVwbGFjZWQuCgpUaGUgc2VydmVyIHVzZXMgb3BlbiBkYXRhYmFzZSBvZiB3b3JkcyBhbmQgaG9tb2dseXBzOiBodHRwOi8vaG9tb2dseXBocy5uZXQvCgphbmQgZGF0YWJhc2Ugb2Ygd29yZHM6IGh0dHA6Ly93d3cubWllbGllc3Ryb25rLmNvbS9jb3JuY29iX2xvd2VyY2FzZS50eHQKCgojIyBCdWlsZAoKIyMjIE1hbnVhbCBCdWlsZC9SdW4KCioqUmVxdWlyZW1lbnRzKioKCi0gSmF2YSAxNwoKLSBNeVNRTCBTZXJ2ZXIgOAoKLSBNYXZlbiAzLjguKwoKUnVuIGluIHRoZSBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5CgpgYGBiYXNoCm12biBzcHJpbmctYm9vdDpydW4KYGBgCgojIyMgRG9ja2VyIEltYWdlCgoqKlJlcXVpcmVtZW50cyoqCgotIERvY2tlcgoKSnVzdCBydW4gaW4gdGhlIHByb2plY3QgZm9sZGVyOgoKYGBgYGBiYXNoCmRvY2tlciBidWlsZCAtdCBhbWJpZ2x5cGgtc2VydmVyIC1mIERvY2tlcmZpbGUKZG9ja2VyIHJ1biAtcCA4MDgxOjgwODEgLXQgYW1iaWdseXBoLXNlcnZlcgpgYGBgYAoKIyMgVXNhZ2UKClRoaXMgaXMgc2ltcGxlIGJhY2tlbmQgYXBwbGljYXRpb24gdGhhdCB1c2VzIFJFU1QgQVBJLiBIZW5jZSwgaXQgc3VwcG9ydHMgb25seSBSRVNUIHJlcXVlc3RzLiBUbyB0cnkgaXQgb3V0IHdpdGhvdXQgYW55IGZyb250IGFwcGxpY2F0aW9uIGFwcGxpY2F0aW9uIHlvdSBjYW4gdXNlIElub21pbmEgb3IgUG9zdG1hbi4gQWxsIG5lY2Vzc2FyeSBkb2N1bWVudGF0aW9uIHByb3ZpZGVkIGluIFN3YWdnZXIgKE9wZW5BcGkgdjMpLiBZb3UgY2FuIGFjY2VzcyBpdCBsaWtlIGBodHRwOi8vYXBpLWFkZHJlc3M6ODA4MS9hbWJpZ2x5cGgtc2VydmVyL3N3YWdnZXItdWkvaW5kZXguaHRtbGAuCgpPdmVyYWxsLCB0aGUgYXBwbGljYXRpb24gc3VwcG9ydHMgKipDUlVEKiogb3BlcmF0aW9ucyBvbiBkYXRhYmFzZSBvZiB3b3JkcyBhbmQgdXNlcnMuIEl0IGlzIHJlcXVpcmVkIHRvIGJlIGF1dGhlbnRpY2F0ZWQgYW5kIHVzZSBnaXZlbiBKV1QtdG9rZW4gaW4gaGVhZGVycyAgU29tZSBiYXNpYyBvcGVyYXRpb25zOgoKYFBPU1QgL2F1dGhlbnRpY2F0ZS9gIAoKQXV0aGVudGljYXRpb24uIEluIGNhc2Ugb2Ygc3VjY2Vzc2Z1bCBhdXRoZW50aWNhdGlvbiBhIEpXVCB0b2tlbiB3aWxsIGJlIHByb3ZpZGVkIGFzIGEgcmVzcG9uc2UuIEV4YW1wbGU6CgohW2F1dGhdKGRvYy9hdXRoLmpwZykKCkRlZmF1bHQgcGFzc3dvcmRzOgoKfCBVc2VybmFtZSAgICAgfCBQYXNzd29yZCAgICB8CnwgLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfAp8IEFETUlOICAgICAgICB8IEFETUlOICAgICAgIHwKfCB0ZXN0ICAgICAgICAgfCB0ZXN0MTIzQkhPUyB8CnwgY2xpZW50ICoqKioqIHwgY2xpZW50ICAgICAgfAoKYCpgIFRoaXMgbG9naW4gY2FuIGJlIHVzZWQgZm9yIHVuYXV0aG9yaXplZCB1c2VycyB0byBjaGVjayB1c2luZyBvbmx5IHRoZSBnZW5lcmFsIHdvcmQgZGF0YWJhc2UuIFJlY29tbWVuZGVkIGZvciBjbGllbnQgYXBwbGljYXRpb25zLiogCgoKCmBQT1NUIC91c2Vycy9gCgpSZWdpc3RlciBhIG5ldyB1c2VyLiBUaGUgb3BlcmF0aW9uIGFjY2Vzc2libGUgb25seSBieSB1c2VycyB3aXRoIHJvbGUgQURNSU4gYW5kIEFQUC4gCgpgUE9TVCAvd29yZHMvYAoKQWRkIGEgbmV3IHdvcmQgdG8gZGF0YWJhc2UKCmBHRVQgL3dvcmRzL2AKCkdldCBhbGwgd29yZHMgYWRkZWQgYnkgY3VycmVudCB1c2VyCgpgR0VUIC93b3Jkcy97aWR9YAoKR2V0IHdvcmQgd2l0aCBge2lkfWAKCmBQT1NUIC9jaGVjay9gCgpTZW5kIHRleHQgdG8gY2hlY2suCgpBbGwgIHdvcmRzIHRoYXQgYXJlIGRldGVjdGVkIHRvIGJlIHNwb29mZWQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIGA8JSVhbWJpZ2x5cGgtZGV0ZWN0ZWQ+YCoqbnVtKipgPGFtYmlnbHlwaC1kZXRlY3RlZCUlPmAsIHdoZXJlICoqbnVtKiogLSB0aGUgbnVtYmVyIG9mIGEgZGV0ZWN0aW9uLgoKQWxzbywgaWYgdGhlIG51bWJlciBvZiBzdWdnZXN0ZWQgd29yZCBpcyBoaWdoZXIgdGhhbiBnaXZlbiBsaW1pdCBhbmQgdGhlcmUgaXMgYSBsZXR0ZXIgdGhhdCBpcyBpbiB0aGUgaG9tb2dseXBoIGRhdGFiYXNlLCB0aGUgbGV0dGVyIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBgPCUlYW1iaWdseXBoLXdhcm5pbmc+YCoqbnVtKipgPGFtYmlnbHlwaC13YXJuaW5nJSU+YCAsIHdoZXJlICoqbnVtKiogLSB0aGUgbnVtYmVyIG9mIGEgd2FybmluZy4KCkluIGNhc2Ugb2YgYW55IGRldGVjdGlvbiBvciB3YXJuaW5nIGNvcnJlc3BvbmRpbmcgdmFsdWVzIGluIHRoZSByZXNwb25zZSB3aWxsIGJlIG1hcmtlZCBhcyB0cnVlLgoKRXhhbXBsZToKCiFbZGV0ZWN0aW9uXShkb2MvZGV0ZWN0aW9uLmpwZykKCkZvciBtb3JlIHJlcXVlc3RzIGFuZCB0aGVpciBzdHJ1Y3R1cmUgYXMgd2VsbCBhcyB0aGVpciBzdXBwb3NlZCBvdXRwdXQsIHBsZWFzZSB0YWtlIGludG8gY29uc2lkZXJhdGlvbiBjb250cm9sbGVycyBhbmQgRFRPIGluIHNvdXJjZSBjb2RlLgoKVGhlIGtleSBwb2ludCBvZiBzZXBhcmF0aW5nIGRhdGFiYXNlIHVzZXJzIGlzIHRvIGFkZCBhbiBhYmlsaXR5IHRvIGFkZCB3b3JkcyB0aGF0IHRoZXkgdXNlIHJlZ3VsYXJseSwgYnV0IHRoaXMgd29yZHMgc3BlY2lmaWMgYW5kIGl0IGlzIGltcG9zc2libGUgdG8gYWRkIHRoZW0gdG8gdGhlIHNoYXJlZCBkYXRhYmFzZS4gRXhhbXBsZToKCiAhW3NwZWNfbm9fZGV0ZWN0aW9uXShkb2Mvc3BlY19ub19kZXRlY3Rpb24uanBnKQoKVGhlcmUgaXMgbm8gZGV0ZWN0aW9uIHNpbmNlIHRoZSB3b3JkIHdhc24ndCBmb3VuZCBpbiBkYXRhYmFzZSBhdCBhbGwgYnV0IGl0IGl0cyBvYmZ1c2NhdGUgaXQuIEhvd2V2ZXIsIGJ5IGFkZGluZyB0aGUgb3JpZ2luYWwgd29yZCB0byBkYXRhYmFzZSB3aWxsIGhlbHAgdG8gYWRkcmVzcyB0aGUgcHJvYmxlbS4KCiFbZGV0ZWN0aW9uXShkb2Mvc3BlY19kZXRlY3Rpb24uanBnKQo= readmeEtag: '"753a7d5f713aaf3f98963801d9acdc050616ca34"' readmeLastModified: Tue, 28 Jun 2022 19:03:02 GMT repositoryId: 433987867 description: Homoglyph detection tool (backend) created: '2021-12-01T21:17:06Z' updated: '2024-07-24T13:07:02Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: IZOBRETATEL777 logo: https://avatars.githubusercontent.com/u/32099652?v=4 repoEtag: '"db6d6dcf9e95621dccef7bad7ae83778ff8bc20bf043b25f5e92f73e1f3dd17f"' repoLastModified: Wed, 24 Jul 2024 13:07:02 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/parthasarathydnu/protien-data-visualizer v3: true id: c0cb320d6c68c5c061f5b1767b811488 repositoryMetadata: base64Readme: >- WyFbQnVpbGQgYW5kIFB1c2ggR2Vub1F1ZXJ5LUFQSSBJbWFnZV0oaHR0cHM6Ly9naXRodWIuY29tL3BhcnRoYXNhcmF0aHlkTlUvcHJvdGllbi1kYXRhLXZpc3VhbGl6ZXIvYWN0aW9ucy93b3JrZmxvd3MvYnVpbGQtcHVzaC1nZW5vcXVlcnktYXBpLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vcGFydGhhc2FyYXRoeWROVS9wcm90aWVuLWRhdGEtdmlzdWFsaXplci9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC1wdXNoLWdlbm9xdWVyeS1hcGkueW1sKQoKIyBbUHJvdGVpbiBEYXNoYm9hcmRdKGh0dHBzOi8vcHJvdGVpbi1kYXNoYm9hcmQtdW5sb2NrLThkeXJ6MzkuZ2FtbWEuc2l0ZS8pCgpUaGlzIHByb2plY3QgaXMgYSBjb21wcmVoZW5zaXZlIHdlYiBhcHBsaWNhdGlvbiBkZXNpZ25lZCB0byBpbnRlcmFjdCB3aXRoIGEgcHJvdGVpbiBkYXRhYmFzZS4gSXQgaW5jbHVkZXMgZnVuY3Rpb25hbGl0aWVzIGZvciBjcmVhdGluZywgcmVhZGluZywgdXBkYXRpbmcsIGFuZCBkZWxldGluZyBwcm90ZWluIGRhdGEsIGFzIHdlbGwgYXMgYWR2YW5jZWQgZmVhdHVyZXMgbGlrZSBhbiBBSSBjaGF0Ym90IGZvciBTUUwgcXVlcnkgZ2VuZXJhdGlvbiBhbmQgdmlzdWFsaXphdGlvbnMgdXNpbmcgVGhyZWUuanMuCgojIyBDaGVjayBvdXQgdGhlIGFwcGxpY2F0aW9uCi0gVUkgOiBodHRwczovL3d3dy5nZW5vcXVlcnkuY29tCi0gQVBJOiBodHRwczovL2FwaS1nZW4tYmlvbWVkLnBhcnRoYWRocnV2LmNvbS9kb2NzCgojIyBBcmNoaXRlY3R1cmUKCiFbU2FtcGxlIEFyY2hpdGVjdHVyZV0oLi9pbWFnZXMvU2FtcGxlQXJjaGl0ZWN0dXJlLnBuZykKCiMjIEZlYXR1cmVzCgotICoqQ1JVRCBPcGVyYXRpb25zKio6IENyZWF0ZSwgUmVhZCwgVXBkYXRlLCBhbmQgRGVsZXRlIHByb3RlaW4gZGF0YS4KLSAqKkNoYXRib3QqKjogSW50ZXJhY3Qgd2l0aCB0aGUgcHJvdGVpbiBkYXRhYmFzZSB1c2luZyBuYXR1cmFsIGxhbmd1YWdlLgotICoqVmlzdWFsaXphdGlvbnMqKjogM0QgdmlzdWFsaXphdGlvbnMgb2YgcHJvdGVpbiBkYXRhIHVzaW5nIFRocmVlLmpzLgotICoqQ2hhcnRzKio6IFZhcmlvdXMgY2hhcnRzIHRvIHJlcHJlc2VudCBwcm90ZWluIGRhdGEgc3RhdGlzdGljcy4KLSAqKlJlc3BvbnNpdmUgVUkqKjogQnVpbHQgd2l0aCBSZWFjdCwgVHlwZVNjcmlwdCwgVGFpbHdpbmQgQ1NTLCBhbmQgU2hhZGNuIFVJIGNvbXBvbmVudHMuCgojIyBUZWNobm9sb2dpZXMgVXNlZAoKLSAqKkJhY2tlbmQqKjogRmFzdEFQSSwgUG9zdGdyZVNRTCwgU1FMQWxjaGVteSwgUHlkYW50aWMKLSAqKkZyb250ZW5kKio6IFJlYWN0LCBUeXBlU2NyaXB0LCBUYWlsd2luZCBDU1MsICBDaGFydC5qcywgVGhyZWUuanMKLSAqKkFJIEludGVncmF0aW9uKio6IE9wZW5BSSBHUFQtNAotICoqRGVwbG95bWVudCoqOiBEb2NrZXIsIEFXUyBFbGFzdGljIEJlYW5zdGFsaywgQVdTIFJEUwoKIyMgU2NyZWVuc2hvdHMKCioqUHJvdGVpbnMgTGlzdCoqCgpUaGUgbWFpbiBsYW5kaW5nIHBhZ2UgZmVhdHVyZXMgYSBsaXN0IG9mIHByb3RlaW5zIHdpdGggY29sdW1ucyBmb3IgZW50cnkgSUQsIGxlbmd0aCwgZmlyc3Qgc2VlbiBkYXRlLCBsYXN0IHNlZW4gZGF0ZSwgUEZBTSwgU01BUlQsIGFuZCBhdmVyYWdlIGh5ZHJvcGhvYmljaXR5LiBFYWNoIHJvdyBpbmNsdWRlcyAiRWRpdCIgYW5kICJEZWxldGUiIGJ1dHRvbnMgZm9yIG1hbmFnaW5nIHByb3RlaW4gcmVjb3Jkcy4KIVtQcm90ZWlucyBMaXN0XSguL2ltYWdlcy9sYW5kaW5nUGFnZS5wbmcpCgoqKlByb3RlaW4gU3RydWN0dXJlIFZpc3VhbGl6YXRpb246KioKClRoaXMgc2NyZWVuc2hvdCBzaG93cyB0aGUgIjNEIFZpeiIgdGFiLCB3aGVyZSB0aGUgM0QgdmlzdWFsaXphdGlvbiBvZiB0aGUgcHJvdGVpbiBzdHJ1Y3R1cmUgaXMgcmVuZGVyZWQuIFRoZSB2aXN1YWxpemF0aW9uIHVzZXMgZGlmZmVyZW50IGNvbG9ycyB0byByZXByZXNlbnQgdmFyaW91cyBlbGVtZW50cyBhbmQgc3RydWN0dXJlcyB3aXRoaW4gdGhlIHByb3RlaW4sIHByb3ZpZGluZyBhbiBpbnRlcmFjdGl2ZSB2aWV3LgohW1N0cnVjdHVyZVZpel0oLi9pbWFnZXMvcHJvdGVpblN0cnVjdHVyZVZpei5wbmcpCgoqKlNRTCBDaGF0IEJvdDoqKgoKVGhlIGNoYXQgaW50ZXJmYWNlIGFsbG93cyB1c2VycyB0byBpbnRlcmFjdCB3aXRoIGEgU1FMLWJhc2VkIGNoYXRib3QuIFVzZXJzIGNhbiB0eXBlIHF1ZXJpZXMgcmVsYXRlZCB0byBwcm90ZWluIGRhdGEsIGFuZCB0aGUgY2hhdGJvdCByZXNwb25kcyB3aXRoIHRoZSByZXF1ZXN0ZWQgaW5mb3JtYXRpb24uIFRoZSBpbnRlcmZhY2Ugc2hvd3MgYm90aCB0aGUgdXNlcidzIGlucHV0IGFuZCB0aGUgY2hhdGJvdCdzIHJlc3BvbnNlcywgZm9ybWF0dGVkIGluIGEgY29udmVyc2F0aW9uYWwgc3R5bGUuCiFbQUlDaGF0Qm90XSgvaW1hZ2VzL1NRTENoYXRCb3QucG5nKQoKKioyRCBWaXN1YWxpemF0aW9uczoqKgoKVGhlIHNjcmVlbnNob3Qgc2hvd3MgYSB0YWJiZWQgaW50ZXJmYWNlIGZvciB2aXN1YWxpemluZyBwcm90ZWluIGRhdGEuIFRoZSBhY3RpdmUgdGFiLCAiQW1pbm8gQWNpZCBDb21wb3NpdGlvbiwiIGRpc3BsYXlzIGEgYmFyIGNoYXJ0IHJlcHJlc2VudGluZyB0aGUgcGVyY2VudGFnZSBjb21wb3NpdGlvbiBvZiB2YXJpb3VzIGFtaW5vIGFjaWRzIGluIHRoZSBwcm90ZWluLiBPdGhlciB0YWJzIGluY2x1ZGUgIlNlY29uZGFyeSBTdHJ1Y3R1cmUgQ29tcG9zaXRpb24iIGFuZCAiSHlkcm9waG9iaWNpdHksIiBwcm92aWRpbmcgZGlmZmVyZW50IGRhdGEgdmlzdWFsaXphdGlvbnMuCiFbMkQgVmlzdWFsaXphdGlvbnNdKGltYWdlcy8yZFZpc3VhbGl6YXRpb25zLnBuZykKCgoKIyMgR2V0dGluZyBTdGFydGVkCgojIyMgUHJlcmVxdWlzaXRlcwoKLSBEb2NrZXIKLSBOb2RlLmpzCi0gUHl0aG9uIDMuOSsKLSBQb3N0Z3JlU1FMCgojIyMgRm9sZGVyIFN0cnVjdHVyZQoKYGBgc2hlbGwKLgrilJzilIDilIAgTElDRU5TRQrilJzilIDilIAgUkVBRE1FLm1kCuKUnOKUgOKUgCBpbWFnZXMgOiBUaGlzIGZvbGRlciBjb250YWlucyBzY3JlZW5zaG90cyBmb3IgdGhlIHJlYWRtZSBmaWxlCuKUlOKUgOKUgCBwYWNrYWdlCiAgICDilJzilIDilIAgYXBpIDogQ29kZSBmb3IgdGhlIEFQSSBzZXJ2aWNlCiAgICDilJzilIDilIAgZGFzaGJvYXJkcyA6IENvZGUgZm9yIHRoZSBmcm9udGVuZCAKICAgIOKUlOKUgOKUgCBkYXRhTG9hZGluZyA6IFRvb2xzIHRvIHNldCB1cCBsb2NhbCBkYXRhYmFzZQpgYGAKCgojIyMgRW52aXJvbm1lbnQgVmFyaWFibGVzCgojIyMjIEZyb250bmVkCgpDcmVhdGUgYSBgLmVudmAgZmlsZSBpbiB0aGUgZm9sbG93aW5nIHBhdGggYHBhY2thZ2UvZGFzaGJvYXJkcy9wcm90ZWluLWRhc2hib2FyZC8uZW52YCB3aXRoIHRoZSBmb2xsb3dpbmcgY29udGVudDogCgpgYGBlbnYKUkVBQ1RfQVBQX0FQSV9VUkw9aHR0cDovLzEyNy4wLjAuMTo4MDAwCmBgYAoKIyMjIyBCYWNrZW5kCgpDcmVhdGUgYSBgLmVudmAgZmlsZSBpbiB0aGUgZm9sbG93aW5nIHBhdGggYHBhY2thZ2UvYXBpLy5lbnZgIHdpdGggdGhlIGZvbGxvd2luZyBjb250ZW50OgoKYGBgZW52Ck9QRU5BSV9BUElfS0VZPXlvdXJfb3BlbmFpX2FwaV9rZXkKREFUQUJBU0VfVVJMPXlvdXJfZGF0YWJhc2VfdXJsCmBgYAoKIyMjIExvY2FsIERldmVsb3BtZW50CgoxLiAqKkJhY2tlbmQgU2V0dXAqKjoKCiAgICBgYGBzaAogICAgY2QgcGFja2FnZS9hcGkKICAgIGRvY2tlciBidWlsZCAtdCBwcm90ZWluLWRhc2hib2FyZC1iYWNrZW5kIC4KICAgIGRvY2tlciBydW4gLS1lbnYtZmlsZSAuZW52IC1wIDgwMDA6ODAwMCAtdiAuLzovYXBwIHByb3RlaW4tZGFzaGJvYXJkLWJhY2tlbmQKICAgIGBgYAoKMi4gKipGcm9udGVuZCBTZXR1cCoqOgoKICAgIGBgYHNoCiAgICBjZCBwYWNrYWdlL2Rhc2hib2FyZHMvcHJvdGVpbi1kYXNoYm9hcmQKICAgIG5wbSBpbnN0YWxsCiAgICBucG0gc3RhcnQKICAgIGBgYAoKIyMjIEFQSSBFbmRwb2ludHMKCi0gKipHRVQgL3Byb3RlaW5zLyoqOiBSZXRyaWV2ZSBhbGwgcHJvdGVpbnMKLSAqKkdFVCAvcHJvdGVpbnMve2VudHJ5fSoqOiBSZXRyaWV2ZSBhIHByb3RlaW4gYnkgZW50cnkKLSAqKlBPU1QgL3Byb3RlaW5zLyoqOiBDcmVhdGUgYSBuZXcgcHJvdGVpbgotICoqUFVUIC9wcm90ZWlucy97ZW50cnl9Kio6IFVwZGF0ZSBhIHByb3RlaW4KLSAqKkRFTEVURSAvcHJvdGVpbnMve2VudHJ5fSoqOiBEZWxldGUgYSBwcm90ZWluCi0gKipHRVQgL3Byb3RlaW4tc3RhdHMve2VudHJ5fSoqOiBHZXQgc3RhdGlzdGljcyBmb3IgYSBzcGVjaWZpYyBwcm90ZWluCi0gKipQT1NUIC9xdWVyeS8qKjogR2VuZXJhdGUgU1FMIHF1ZXJ5IHVzaW5nIE9wZW5BSQoKIyMjIERlcGxveW1lbnQKCjEuICoqQnVpbGQgYW5kIFB1c2ggRG9ja2VyIEltYWdlKio6CgogICAgYGBgc2gKICAgIGRvY2tlciBidWlsZCAtdCB5b3VyX2RvY2tlcmh1Yl91c2VybmFtZS9wcm90ZWluLWRhc2hib2FyZC1iYWNrZW5kIC4KICAgIGRvY2tlciBwdXNoIHlvdXJfZG9ja2VyaHViX3VzZXJuYW1lL3Byb3RlaW4tZGFzaGJvYXJkLWJhY2tlbmQKICAgIGBgYAoKMi4gKipEZXBsb3kgb24gQVdTIEVsYXN0aWMgQmVhbnN0YWxrKio6CgogICAgLSBDcmVhdGUgYW4gRWxhc3RpYyBCZWFuc3RhbGsgZW52aXJvbm1lbnQKICAgIC0gQ29uZmlndXJlIHRoZSBlbnZpcm9ubWVudCB0byB1c2UgRG9ja2VyCiAgICAtIFNldCB1cCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gdGhlIEVsYXN0aWMgQmVhbnN0YWxrIGNvbmZpZ3VyYXRpb24KCiMjIyBUcm91Ymxlc2hvb3RpbmcKCi0gKipDT1JTIElzc3VlcyoqOiBFbnN1cmUgQ09SUyBtaWRkbGV3YXJlIGlzIGNvcnJlY3RseSBzZXQgdXAgaW4gRmFzdEFQSS4KLSAqKlNTTCBUZXJtaW5hdGlvbioqOiBNYWtlIHN1cmUgdGhlIGxvYWQgYmFsYW5jZXIgaXMgcHJvcGVybHkgY29uZmlndXJlZCBmb3IgSFRUUFMuCgojIyMgQ29udGFjdAoKRm9yIGFueSBxdWVzdGlvbnMgb3IgaXNzdWVzLCBwbGVhc2UgY29udGFjdCBbcGFydGhhc2FyYXRoeS5kQG5vcnRoZWFzdGVybi5lZHVdIG9yIGZlZWwgZnJlZSB0byByZWFjaCBvdXQgdG8gbWUgb24gW0xpbmtlZEluXShodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vcGFydGhhZGhydXYvKS4KCiMjIExpY2Vuc2UKVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4K readmeEtag: '"f3f4b5420fd5309dd242800c9fc69d04bbe49f08"' readmeLastModified: Thu, 19 Sep 2024 01:30:42 GMT repositoryId: 806921406 description: >- A comprehensive web application designed to interact with a protein database. It includes functionalities for creating, reading, updating, and 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: '2025-11-05T19:58:52Z' language: Python archived: false stars: 5 watchers: 1 forks: 3 owner: parthasarathydNU logo: https://avatars.githubusercontent.com/u/113069126?v=4 license: MIT repoEtag: '"f2f1b9c9fe72548218746714905e2b2c26d359089a89ec663352c5f9ebb416a9"' repoLastModified: Wed, 05 Nov 2025 19:58:52 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/tranvannhat/fastapi-starter v3: true id: ecf41122d4f260bbb4e59408750e1878 repositoryMetadata: base64Readme: >- IyMgUmVxdWlyZW1lbnRzCi0gUHl0aG9uIDMuOQotIFBvc3RncmVzU1FMIDE2Ci0gUmVkaXMgCgoKIyMgSW5zdGFsbApJbnN0YWxsIFBvZXRyeSAtIFRvb2wgZm9yIGRlcGVuZGVuY3kgbWFuYWdlbWVudCBhbmQgcGFja2FnaW5nIGluIFB5dGhvbgoKYGBgCnBvZXRyeSBpbnN0YWxsCnBvZXRyeSBzaGVsbApgYGAKCmBgYAphbGVtYmljIHN0YW1wIGhlYWQKYWxlbWJpYyByZXZpc2lvbiAtLWF1dG9nZW5lcmF0ZSAtbSAidXBkYXRlIGRiIiAKYWxlbWJpYyB1cGdyYWRlIGhlYWQKYGBgCgpgYGAKc2ggc3RhcnQuc2gKYGBgCg== readmeEtag: '"65c9f419b8d4917d2d255323fe1c48a16468b6b2"' readmeLastModified: Wed, 09 Oct 2024 09:14:12 GMT repositoryId: 382431783 description: >- FastAPI Starter for init project with FastAPI, Postgresql, Redis. Base on https://github.com/tiangolo/full-stack-fastapi-postgresql created: '2021-07-02T18:29:11Z' updated: '2024-10-09T09:14:36Z' language: Python archived: false stars: 1 watchers: 1 forks: 0 owner: tranvannhat logo: https://avatars.githubusercontent.com/u/28804941?v=4 repoEtag: '"a545b173f21d195a2efe21ba49a572bea11a3e2e08141347ca406ea77b452936"' repoLastModified: Wed, 09 Oct 2024 09:14:36 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/traefik-workshops/traefik-hub-gitops v3: true id: c363fcdd6ceeb10d9194ee33be5a1f1f repositoryMetadata: base64Readme: >- PGJyLz4KCj4gU2luY2UgdGhlIGVuZCBvZiBNYXkgMjAyNCwgVHJhZWZpayBIdWIgdHV0b3JpYWxzIGhhcyBtb3ZlZCB0byBbdHJhZWZpay9odWJdKGh0dHBzOi8vZ2l0aHViLmNvbS90cmFlZmlrL2h1YikgcmVwb3NpdG9yeQoKPGRpdiBhbGlnbj0iY2VudGVyIiBzdHlsZT0ibWFyZ2luOiAzMHB4OyI+CjxhIGhyZWY9Imh0dHBzOi8vaHViLnRyYWVmaWsuaW8vIj4KICA8aW1nIHNyYz0iaHR0cHM6Ly9kb2MudHJhZWZpay5pby90cmFlZmlrLWh1Yi9pbWcvaHViLWxvZ28tbGlnaHQuc3ZnIiBzdHlsZT0id2lkdGg6MjUwcHg7IiBhbGlnbj0iY2VudGVyIiAvPgo8L2E+CjxiciAvPgo8YnIgLz4KCjxkaXYgYWxpZ249ImNlbnRlciI+CiAgICA8YSBocmVmPSJodHRwczovL2h1Yi50cmFlZmlrLmlvIj5Mb2cgSW48L2E+IHwKICAgIDxhIGhyZWY9Imh0dHBzOi8vZG9jLnRyYWVmaWsuaW8vdHJhZWZpay1odWIvIj5Eb2N1bWVudGF0aW9uPC9hPgo8L2Rpdj4KPC9kaXY+Cgo8YnIgLz4KCjxkaXYgYWxpZ249ImNlbnRlciI+PHN0cm9uZz5UcmFlZmlrIEh1YiAtIEdpdE9wcyBDb21wbGV0ZSBUdXRvcmlhbDwvc3Ryb25nPgoKPGJyIC8+CjxiciAvPgo8L2Rpdj4KCjxkaXYgYWxpZ249ImNlbnRlciI+V2VsY29tZSB0byB0aGlzIHR1dG9yaWFsITwvZGl2PgoKIyBBYm91dAoKVGhpcyB0dXRvcmlhbCBkZXRhaWxzIGhvdyB0byBkZXBsb3kgbG9jYWxseSBhIEt1YmVybmV0ZXMgY2x1c3Rlciwgd2l0aCBHaXRPcHMgYW5kIG9ic2VydmFiaWxpdHkgY29tcG9uZW50cy4KCiMgUHJlcmVxdWlzaXRlcwoKSWYgeW91J2QgbGlrZSB0byBmb2xsb3cgYWxvbmcgd2l0aCB0aGlzIHR1dG9yaWFsIG9uIHlvdXIgb3duIG1hY2hpbmUsIHlvdSdsbCBuZWVkIGEgZmV3IHRoaW5ncyBmaXJzdDoKCjEuIFtrdWJlY3RsXShodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rdWJlY3RsKSBjb21tYW5kLWxpbmUgdG9vbCBpbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQgdG8gYWNjZXNzIHRoZSBjbHVzdGVyCjIuIFtnaF0oaHR0cHM6Ly9jbGkuZ2l0aHViLmNvbS8pIGNvbW1hbmQtbGluZSB0b29sIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZCB3aXRoIHlvdXIgYWNjb3VudAozLiBbRmx1eCBDRF0oaHR0cHM6Ly9mbHV4Y2QuaW8vZmx1eC9jbWQvKSBjb21tYW5kLWxpbmUgdG9vbCBpbnN0YWxsZWQuCjQuIEEgS3ViZXJuZXRlcyBjbHVzdGVyIHJ1bm5pbmcuCgpJbiB0aGlzIHR1dG9yaWFsLCB5b3UnbGwgdXNlIFtraW5kXShodHRwczovL2tpbmQuc2lncy5rOHMuaW8pLiBZb3UgbWF5IGFsc28gdXNlIGFsdGVybmF0aXZlcyBsaWtlIFtrM2RdKGh0dHBzOi8vazNkLmlvLyksIGNsb3VkIHByb3ZpZGVycywgb3Igb3RoZXJzLgoKa2luZCByZXF1aXJlcyBzb21lIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGFuIEluZ3Jlc3NDb250cm9sbGVyIG9uIGxvY2FsaG9zdCwgc2VlIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKCmBgYHNoZWxsCmNhdCBraW5kLmNvbmZpZwpgYGAKCmBgYHlhbWwKa2luZDogQ2x1c3RlcgphcGlWZXJzaW9uOiBraW5kLngtazhzLmlvL3YxYWxwaGE0Cm5hbWU6IHRyYWVmaWstaHViLWdpdG9wcwpub2RlczoKLSByb2xlOiBjb250cm9sLXBsYW5lCiAgZXh0cmFQb3J0TWFwcGluZ3M6CiAgLSBjb250YWluZXJQb3J0OiAzMDAwMAogICAgaG9zdFBvcnQ6IDgwCiAgICBwcm90b2NvbDogVENQCiAgLSBjb250YWluZXJQb3J0OiAzMDAwMQogICAgaG9zdFBvcnQ6IDQ0MwogICAgcHJvdG9jb2w6IFRDUApgYGAKCjEuIENsb25lIHRoaXMgR2l0SHViIHJlcG9zaXRvcnk6CgpgYGBzaGVsbApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3RyYWVmaWstd29ya3Nob3BzL3RyYWVmaWstaHViLWdpdG9wcy5naXQKY2QgdHJhZWZpay1odWItZ2l0b3BzCmBgYAoKMi4gQ3JlYXRlIHRoZSBLdWJlcm5ldGVzIGNsdXN0ZXI6CgoqKlVzaW5nIGtpbmQqKgoKQ3JlYXRlIHRoZSBjbHVzdGVyOgoKYGBgc2hlbGwKa2luZCBjcmVhdGUgY2x1c3RlciAtLWNvbmZpZz1raW5kLmNvbmZpZwprdWJlY3RsIGNsdXN0ZXItaW5mbwprdWJlY3RsIHdhaXQgLS1mb3I9Y29uZGl0aW9uPXJlYWR5IG5vZGVzIHRyYWVmaWstaHViLWdpdG9wcy1jb250cm9sLXBsYW5lCmBgYAoKQWRkIGEgbG9hZCBiYWxhbmNlciAoTEIpIHRvIHRoaXMgS3ViZXJuZXRlcyBjbHVzdGVyOgoKYGBgc2hlbGwKa3ViZWN0bCBhcHBseSAtZiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbWV0YWxsYi9tZXRhbGxiL3YwLjEzLjExL2NvbmZpZy9tYW5pZmVzdHMvbWV0YWxsYi1uYXRpdmUueWFtbAprdWJlY3RsIHdhaXQgLS1uYW1lc3BhY2UgbWV0YWxsYi1zeXN0ZW0gLS1mb3I9Y29uZGl0aW9uPXJlYWR5IHBvZCAtLXNlbGVjdG9yPWFwcD1tZXRhbGxiIC0tdGltZW91dD05MHMKa3ViZWN0bCBhcHBseSAtZiBjbHVzdGVycy9raW5kL21ldGFsbGItY29uZmlnLnlhbWwKYGBgCgoqKlVzaW5nIGszZCoqCgpgYGBzaGVsbAprM2QgY2x1c3RlciBjcmVhdGUgdHJhZWZpay1odWItZ2l0b3BzIC0tcG9ydCA4MDo4MEBsb2FkYmFsYW5jZXIgLS1wb3J0IDQ0Mzo0NDNAbG9hZGJhbGFuY2VyIC0tcG9ydCA4MDAwOjgwMDBAbG9hZGJhbGFuY2VyIC0tazNzLWFyZyAiLS1kaXNhYmxlPXRyYWVmaWtAc2VydmVyOjAiCmBgYAoKIyBGb3JrIHRoZSByZXBvIGFuZCBkZXBsb3kgRmx1eCBDRAoKRmx1eCBuZWVkcyB0byBiZSBhYmxlIHRvIGNvbW1pdCBvbiB0aGUgcmVwb3NpdG9yeSwgdGhpcyB0dXRvcmlhbCBjYW4gb25seSB3b3JrIG9uIGEgZm9yayB0aGF0ICp5b3UqIG93bi4KWW91IHdpbGwgYWxzbyBuZWVkIGEgW0dpdEh1YiBwZXJzb25hbCBhY2Nlc3MgdG9rZW5dKGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2F1dGhlbnRpY2F0aW9uL2tlZXBpbmcteW91ci1hY2NvdW50LWFuZC1kYXRhLXNlY3VyZS9tYW5hZ2luZy15b3VyLXBlcnNvbmFsLWFjY2Vzcy10b2tlbnMpIChQQVQpIHdpdGggYWRtaW5pc3RyYXRpb24gcGVybWlzc2lvbnMuCgpgYGBzaGVsbApnaCByZXBvIGZvcmsgLS1yZW1vdGUKa3ViZWN0bCBhcHBseSAtZiBjbHVzdGVycy9raW5kL2ZsdXgtc3lzdGVtL2dvdGstY29tcG9uZW50cy55YW1sCmBgYAoKIyBDb25maWd1cmUgVHJhZWZpayBIdWIKCkxvZ2luIHRvIHRoZSBbVHJhZWZpayBIdWIgVUldKGh0dHBzOi8vaHViLnRyYWVmaWsuaW8pLCBvcGVuIHRoZSBwYWdlIHRvIFtnZW5lcmF0ZSBhIG5ldyBhZ2VudF0oaHR0cHM6Ly9odWIudHJhZWZpay5pby9hZ2VudHMvbmV3KS4KKipEbyBub3QgaW5zdGFsbCB0aGUgYWdlbnQsIGJ1dCBjb3B5IHlvdXIgdG9rZW4uKioKCk5vdywgb3BlbiBhIHRlcm1pbmFsIGFuZCBydW4gdGhlc2UgY29tbWFuZHMgdG8gY3JlYXRlIHRoZSBzZWNyZXQgbmVlZGVkIGZvciBUcmFlZmlrIEh1Yi4KCmBgYHNoZWxsCmV4cG9ydCBUUkFFRklLX0hVQl9UT0tFTj14eHgKa3ViZWN0bCBjcmVhdGUgbmFtZXNwYWNlIHRyYWVmaWstaHViCmt1YmVjdGwgY3JlYXRlIHNlY3JldCBnZW5lcmljIGh1Yi1hZ2VudC10b2tlbiAtLW5hbWVzcGFjZSB0cmFlZmlrLWh1YiAtLWZyb20tbGl0ZXJhbD10b2tlbj0ke1RSQUVGSUtfSFVCX1RPS0VOfQpgYGAKCiMgRGVwbG95IHRoZSBzdGFjayBvbiB0aGUgY2x1c3RlcgoKVGhlbiwgeW91IGNhbiBjb25maWd1cmUgZmx1eCBhbmQgbGF1bmNoIGl0IG9uIHRoZSBmb3JrLgpZb3UnbGwgbmVlZCB0byBjcmVhdGUgYSBbUGVyc29uYWwgQWNjZXNzIFRva2VuXShodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hdXRoZW50aWNhdGlvbi9rZWVwaW5nLXlvdXItYWNjb3VudC1hbmQtZGF0YS1zZWN1cmUvbWFuYWdpbmcteW91ci1wZXJzb25hbC1hY2Nlc3MtdG9rZW5zI2NyZWF0aW5nLWEtcGVyc29uYWwtYWNjZXNzLXRva2VuLWNsYXNzaWMpKFBBVCkgd2l0aCByZXBvIGFjY2VzcyBvbiB5b3VyIGZvcmsuCgpGaXJzdCwgZXhwb3J0IHlvdXIgR2l0SHViIHVzZXJuYW1lIGFuZCB5b3VyIG5ld2x5IGNyZWF0ZWQgUEFUIGludG8gYSB2YXJpYWJsZS4KCmBgYHNoZWxsCmV4cG9ydCBHSVRIVUJfQUNDT1VOVD14eHgKZXhwb3J0IEdJVEhVQl9UT0tFTj15eXkKYGBgCgpTZWNvbmQsIGNvbmZpZ3VyZSBGbHV4IENEIGZvciB5b3VyIGZvcmsgb2YgdGhpcyB0dXRvcmlhbC4KCmBgYHNoZWxsCmZsdXggY3JlYXRlIHNlY3JldCBnaXQgZ2l0LWF1dGggIC0tdXJsPSJodHRwczovL2dpdGh1Yi5jb20vJHtHSVRIVUJfQUNDT1VOVH0vdHJhZWZpay1odWItZ2l0b3BzIiAtLW5hbWVzcGFjZT1mbHV4LXN5c3RlbSAtdSBnaXQgLXAgIiR7R0lUSFVCX1RPS0VOfSIKYGBgCgpUaGlyZCwgYWRqdXN0IHRoZSByZXBvc2l0b3J5IG9uIEZsdXggdG8gdXNlIHlvdXIgZm9yay4KCmBgYHNoZWxsCnNlZCAtaSAtZSAicy90cmFlZmlrLXdvcmtzaG9wcy8ke0dJVEhVQl9BQ0NPVU5UfS9nIiBjbHVzdGVycy9raW5kL2ZsdXgtc3lzdGVtL2dvdGstc3luYy55YW1sCmdpdCBjb21taXQgLW0gImZlYXQ6IEdpdE9wcyBvbiBteSBmb3JrIiBjbHVzdGVycy9raW5kL2ZsdXgtc3lzdGVtL2dvdGstc3luYy55YW1sCmdpdCBwdXNoIG9yaWdpbgpgYGAKCkluIHRoZSBuZXh0IHN0ZXAsIGRlcGxveSB0aGUgcmVwb3NpdG9yeS4KCmBgYHNoZWxsCmt1YmVjdGwgYXBwbHkgLWYgY2x1c3RlcnMva2luZC9mbHV4LXN5c3RlbS9nb3RrLXN5bmMueWFtbApgYGAKClRoaXMgd2lsbCBzdGFydCB0aGUgW0t1c3RvbWl6YXRpb25dKGh0dHBzOi8vZmx1eGNkLmlvL2ZsdXgvY29tcG9uZW50cy9rdXN0b21pemUva3VzdG9taXphdGlvbnMvKS4KRmx1eCB3aWxsIG5vdyBzeW5jLCB2YWxpZGF0ZSBhbmQgZGVwbG95IGFsbCBjb21wb25lbnRzLgoKVGhpcyBwcm9jZXNzIHdpbGwgdGFrZSBzZXZlcmFsIG1pbnV0ZXMuCgpZb3UgY2FuIHRyYWNrIHRoZSBwcm9jZXNzIGZyb20gdGhlIENMSS4KCmBgYHNoZWxsCmZsdXggZ2V0IGtzCmBgYAoKIVtLdXN0b21pemF0aW9ucyBhcmUgcmVhZHldKC4vaW1hZ2VzL2t1c3RvbWl6YXRpb25zLXJlYWR5LnBuZykKCklmIGFueSBvZiB0aGUga3VzdG9taXphdGlvbnMgYXJlIHN0dWNrIGp1c3QgcnVuIHRoZToKCmBgYGJhc2gKa3ViZWN0bCBkZWxldGUgbXV0YXRpbmd3ZWJob29rY29uZmlndXJhdGlvbnMgaHViLWFwaQprdWJlY3RsIGRlbGV0ZSBtdXRhdGluZ3dlYmhvb2tjb25maWd1cmF0aW9ucyBodWItYWNwCmBgYAoKIyBDb25maWd1cmUgdHJhZmZpYyBnZW5lcmF0aW9uCgpUbyBnZW5lcmF0ZSB0cmFmZmljLCBjcmVhdGUgdHdvIHVzZXJzLCBhbiBgYWRtaW5gIGFuZCBhIGBzdXBwb3J0YCB1c2VyIGFuZCB0aGVpciBncm91cHMuCgpUaGUgYGFkbWluYCB1c2VyIG5lZWRzIHRvIGJlIHBhcnQgb2YgdGhlIGBhZG1pbmAgZ3JvdXAgYW5kIHRoZSBgc3VwcG9ydGAgdXNlciBuZWVkcyB0byBiZSBwYXJ0IG9mIHRoZSBgc3VwcG9ydGAgZ3JvdXAuCgo8ZGV0YWlscz4KICA8c3VtbWFyeT5UcmFlZmlrIEh1YiBVSTwvc3VtbWFyeT4KCkNyZWF0ZSB0aGUgYGFkbWluYCB1c2VyIGluIHRoZSBUcmFlZmlrIEh1YiBVSToKCiFbQ3JlYXRlIHVzZXIgYWRtaW5dKC4vaW1hZ2VzL2NyZWF0ZS11c2VyLWFkbWluLnBuZykKCkNyZWF0ZSB0aGUgYHN1cHBvcnRgIHVzZXI6CgohW0NyZWF0ZSB1c2VyIHN1cHBvcnRdKC4vaW1hZ2VzL2NyZWF0ZS11c2VyLXN1cHBvcnQucG5nKQoKPC9kZXRhaWxzPgoKV2hlbiB0aGUgS3VzdG9taXphdGlvbiBpcyAqKnJlYWR5KiosIHlvdSBjYW4gb3BlbiBBUEkgUG9ydGFsLCBmb2xsb3dpbmcgVVJMIGF2YWlsYWJsZSBpbiB0aGUgVUkgb3IgaW4gdGhlIENSRDoKCmBgYHNoZWxsCmt1YmVjdGwgZ2V0IGFwaXBvcnRhbCAtbiBhcHBzCmBgYAoKTG9nIGluIHRvIHRoZSBBUEkgUG9ydGFsOgoKIVtBUEkgUG9ydGFsIExvZ2luXSguL2ltYWdlcy9hcGktcG9ydGFsLWxvZ2luLnBuZykKCk5vdywgY3JlYXRlIEFQSSB0b2tlbnMgZm9yIGJvdGggdXNlcnMuCgohW0NyZWF0ZSBBUEkgVG9rZW5dKC4vaW1hZ2VzL2NyZWF0ZS1hcGktdG9rZW4ucG5nKQoKQ3JlYXRlIGEgW0t1YmVybmV0ZXMgc2VjcmV0XShodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9jb25maWd1cmF0aW9uL3NlY3JldC8pIGNvbnRhaW5pbmcgdGhlIHRva2VucyB0byBlbmFibGUgdGhlIHRyYWZmaWMgYXBwIHRvIGdlbmVyYXRlIGxvYWQ6CgpgYGBzaGVsbApleHBvcnQgQURNSU5fVE9LRU49Inh4eCIKZXhwb3J0IFNVUFBPUlRfVE9LRU49Inl5eSIKa3ViZWN0bCBjcmVhdGUgc2VjcmV0IGdlbmVyaWMgdG9rZW5zIC1uIHRyYWZmaWMgLS1mcm9tLWxpdGVyYWw9YWRtaW49IiR7QURNSU5fVE9LRU59IiAtLWZyb20tbGl0ZXJhbD1zdXBwb3J0PSIke1NVUFBPUlRfVE9LRU59IgpgYGAKCiMgVXNlIG9ic2VydmFiaWxpdHkgc3RhY2sKCkdyYWZhbmEgaXMgYWNjZXNzaWJsZSBvbiBodHRwOi8vZ3JhZmFuYS5kb2NrZXIubG9jYWxob3N0CgpQcm9tZXRoZXVzIGlzIG9uIGh0dHA6Ly9wcm9tZXRoZXVzLmRvY2tlci5sb2NhbGhvc3QKCkRlZmF1bHQgY3JlZGVudGlhbHMgYXJlIGxvZ2luOiBhZG1pbiBhbmQgcGFzc3dvcmQ6IGFkbWluLgoKQnkgY2xpY2tpbmcgb24gdGhlIGxlZnQgbWVudSwgeW91IGNhbiBhY2Nlc3MgYWxsIGRhc2hib2FyZHM6CgohW0dyYWZhbmEgRGFzaGJvYXJkc10oLi9pbWFnZXMvZ3JhZmFuYS1kYXNoYm9hcmRzLnBuZykKCiMjIEVuYWJsZSBldmVudCBjb3JyZWxhdGlvbgoKKipGbHV4IGV2ZW50cyoqOgoKLSBBZGQgYSBuZXcgR3JhZmFuYSBzZXJ2aWNlIGFjY291bnQgd2l0aCBhIG5ldyBrZXkgYXQgaHR0cDovL2dyYWZhbmEuZG9ja2VyLmxvY2FsaG9zdC9vcmcvc2VydmljZWFjY291bnRzCi0gQ3JlYXRlIGEgbmV3IFNlcnZpY2UgQWNjb3VudCB3aXRoIGBFZGl0b3JgIHJvbGUuCi0gQWRkIGEgU2VydmljZSBhY2NvdW50IHRva2VuIGFuZCBjb3B5IGl0IHRvIChzdGFydGluZyB3aXRoIGBnbHNhX2ApIHRvIHRoZSBgYXBwcy9iYXNlL21vbml0b3JpbmcvZmx1eC1ncmFmYW5hLnlhbWxgIGZpbGUuCi0gKipOT1RFKio6IFlvdSB3aWxsIG5lZWQgdG8gYXBwbHkgb3IgY29tbWl0IHRoaXMgdG8gdGhlIHJlcG8sIGlmIGl0IGlzIGEgcHVibGljIHJlcG8gYmV3YXJlIHRoYXQgdGhlIHNlY3JldCB3aWxsIGJlIHB1YmxpYy4KCmBgYHNoZWxsCmV4cG9ydCBHUkFGQU5BX1RPS0VOPSJ4eHgiCnNlZCAtaSAtZSAicy90b2tlbjpcKC4qXCkvdG9rZW46IFwiIiR7R1JBRkFOQV9UT0tFTn0iXCIvZyIgYXBwcy9iYXNlL21vbml0b3JpbmcvZmx1eC1ncmFmYW5hLnlhbWwKYGBgCgpOb3csIEZsdXggY2FuIGNyZWF0ZSBhbm5vdGF0aW9ucyBvZiByZWNvbmNpbGlhdGlvbiBldmVudHMgaW4gdGhlIGRhc2hib2FyZHMuCgoqKkdpdEh1YiBQUiBtZXJnZXMqKjogQWRkIGEgbmV3IEdyYWZhbmEgY29ubmVjdGlvbiAoR2l0SHViIGRhdGEgc291cmNlKSBhdCBodHRwOi8vZ3JhZmFuYS5kb2NrZXIubG9jYWxob3N0L2Nvbm5lY3Rpb25zL2RhdGFzb3VyY2VzL2dyYWZhbmEtZ2l0aHViLWRhdGFzb3VyY2UKWW91IG11c3QgYWRkIGEgUGVyc29uYWwgQWNjZXNzIFRva2VuIChQQVQpIHRvIEdpdEh1YiBhdCBodHRwczovL2dpdGh1Yi5jb20vc2V0dGluZ3MvdG9rZW5zL25ldywgYXMgZXhwbGFpbmVkIGluIHRoZSBHcmFmYW5hIGNvbm5lY3Rpb24gY3JlYXRpb24gd2l6YXJkLgpXaGVuIGNvbmZpZ3VyZWQsIGVkaXQgdGhlIGRhc2hib2FyZHMgdG8gYWRkIG5ldyBhbm5vdGF0aW9ucyB1c2luZyB0aGUgR2l0SHViIGRhdGEgc291cmNlOgotIFNob3cgaW46IEFsbCBwYW5lbHMKLSBRdWVyeSB0eXBlOiBQdWxsIFJlcXVlc3RzCi0gT3duZXIgLyBSZXBvc2l0b3J5OiB5b3VyIHVzZXIgYW5kIHRoZSByZXBvIG5hbWUgb2YgdGhlIGZvcmsKLSBRdWVyeTogbGVhdmUgaXQgZW1wdHkKLSBUaW1lIEZpZWxkOiBNZXJnZWRBdAotIEFubm90YXRpb25zOgogIC0gVGltZSBmaWVsZDogYG1lcmdlZF9hdCAodGltZSlgCiAgLSBUaXRsZTogYHRpdGxlIChzdHJpbmcpYAogIC0gVGV4dDogYHVybCAoc3RyaW5nKWAKICAtIEVuZCB0aW1lICsgdGFncyArIGlkOiBsZWF2ZSB0aGVtIGVtcHR5CgojIENsZWFuIHVwCgpFdmVyeXRoaW5nIGlzIGluc3RhbGxlZCBpbiBLdWJlcm5ldGVzLgpZb3UgY2FuIGRlbGV0ZSB0aGUgS3ViZXJuZXRlcyBjbHVzdGVyIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgc2hlbGwKIyBraW5kCmtpbmQgZGVsZXRlIGNsdXN0ZXIgLS1uYW1lIHRyYWVmaWstaHViLWdpdG9wcwpgYGAKCmBgYHNoZWxsCiMgazNkCmszZCBkZWxldGUgY2x1c3RlciB0cmFlZmlrLWh1Yi1naXRvcHMKYGBgCgpZb3UgbWF5IGFsc28gd2FudCB0byBkZWxldGUgdGhlIGFnZW50IGluIFRyYWVmaWsgSHViIFVJLgoKIyMgTGljZW5zZQoKVGhlIGNvbnRlbnQgaW4gdGhpcyByZXBvc2l0b3J5IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBbQXBhY2hlIDIgTGljZW5zZV0oaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCAiTGluayB0byBBcGFjaGUgMiBsaWNlbnNlIikuCg== readmeEtag: '"209925bd54ff1c96dffabe989697235826dc97fc"' readmeLastModified: Mon, 16 Sep 2024 06:40:47 GMT repositoryId: 711843464 description: Complete demo of Traefik Hub usage with FluxCD created: '2023-10-30T09:37:00Z' updated: '2025-01-13T11:36:27Z' language: Go archived: true stars: 1 watchers: 10 forks: 10 owner: traefik-workshops logo: https://avatars.githubusercontent.com/u/98564823?v=4 license: Apache-2.0 repoEtag: '"5936f46b05300fd15db0b2e4adbe6bd7d1b96ca5a49ce899d5417cda73aa7e79"' repoLastModified: Mon, 13 Jan 2025 11:36:27 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/bepopov/autoshowroom v3: true repositoryMetadata: base64Readme: >- IyMgR2V0dGluZyBTdGFydGVkCgpEb3dubG9hZCBzb3VyY2VzOgpgYGAKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9Cb2dkYW5LRlUvYXV0b3Nob3dyb29tLmdpdApgYGAKQ3JlYXRlIGRhdGFiYXNlIGFuZCBhZGQgeW91ciBwcm9wZXJ0aWVzIHRvIGFwcGxpY2F0aW9uLnByb3BlcnRpZXMuCkJ1aWxkIHNlcnZlciBieSB1c2luZyBidWlsZCB0YXNrLiBSdW4gaXQuIFVzZToKYGBgCmphdmEgLWphcgpgYGAKQnVpbGQgc29hcGNsaWVudCBvciByZXN0Y2xpZW50LiBSdW4gaXQuCkNvbm5lY3QgdG8gdGhlIHNlcnZlciBieSB1c2luZyAoYXZhaWxhYmxlIG5hbWVzIGFyZSBpbiB0aGUgY2xpZW50LmNzdiBmaWxlKToKYGBgCmNvbm5lY3QgPG5hbWU+CmBgYApUaGVyZSBhcmUgZmV3IGNvbW1hbmRzOgpgYGAKY3JlYXRlLW9yZGVyIC0tb3JkZXIgIjxtYWtlX25hbWU+IDxtb2RlbF9uYW1lPiA8b3B0aW9uc19uYW1lcyBzZXBhcmF0ZWQgYnkgQU5EIgplZGl0LW9yZGVyIC0tb3JkZXIgPG9yZGVyX2lkPiAtLW1ha2UgPG1ha2VfbmFtZT4gLS1vcHRpb25zIDxvcHRpb25zX25hbWVzIHNlcGFyYXRlZCBieSBBTkQ+CmRlbGV0ZS1vcmRlciA8b3JkZXJfaWQ+CmdldC1vcmRlcnMKZ2V0LW9yZGVycy1ieS1zdGF0dXMgLS1zdGF0dXMgPHN0YXR1cz4KYGBgCkFsbCB2YWx1ZXMgYXJlIGNvbXBsZXRhYmxlIChwcmVzcyBUQUIpCgojIyBSdW5uaW5nIHNlcnZlciB1c2luZyBEb2NrZXIKCkdvIHRvIHRoZSBzZXJ2ZXIgbW9kdWxlIHBhdGguCgpSdW46CmBgYApncmFkbGUgYnVpbGQKYGBgClRoZW4gcnVuOgpgYGAKZG9ja2VyLWNvbXBvc2UgdXAKYGBgCkNoZWNrIHNlcnZlciBpcyBydW5uaW5nIGJ5IGdvaW5nIHRvIHRoZSBwYWdlOiBsb2NhbGhvc3Q6OTAwMAojIyBEZXBsb3kgYWxsCkJlZm9yZSBzdGFydGluZyB0byBkZXBsb3kgY3JlYXRlIGNsdXN0ZXIgaW4gc29tZSBwbGF0Zm9ybSAoSSB1c2VkIEdvb2dsZSBDbG91ZCkgYW5kIGVuc3VyZSB0aGF0CnlvdSBoYXZlIGluc3RhbGxlZCBnY2xvdWQsIGt1YmVjdGwsIGhlbG0gaW4geW91ciBtYWNoaW5lLiBEb24ndCBmb3JnZXQgY29uZmlndXJlIHRoZSB0b29scy4KLSBidWlsZCB0aGUgYXBwbGljYXRpb25zIGFuZCBEb2NrZXIgaW1hZ2VzCihbX2plbmtpbnMtc2xhdmVfXShodHRwczovL2dpdGh1Yi5jb20vYmVwb3Bvdi9hdXRvc2hvd3Jvb20vdHJlZS9tYXN0ZXIvc2VydmVyL29wdC9qZW5raW5zL3NsYXZlKSwgCltfYXV0b3Nob3dyb29tLXNlcnZlcl9dKGh0dHBzOi8vZ2l0aHViLmNvbS9iZXBvcG92L2F1dG9zaG93cm9vbS90cmVlL21hc3Rlci9zZXJ2ZXIpLApbX2F1dG9zaG93cm9vbS1ncm9vdnktc2VydmVyX10oaHR0cHM6Ly9naXRodWIuY29tL2JlcG9wb3YvYXV0b3Nob3dyb29tL3RyZWUvbWFzdGVyL2dyb292eV9zZXJ2ZXIpKS4gVG8gZGVwbG95IApKZW5raW5zIHlvdSBjYW4gYWxzbyB1c2UgW2FsdGVybmF0aXZlIHdheV0oaHR0cHM6Ly9naXRodWIuY29tL2JlcG9wb3YvYXV0b3Nob3dyb29tL3RyZWUvbWFzdGVyL3NlcnZlci9vcHMvamVua2lucy9tYXN0ZXIpCiB0aGF0IGlzIHJlY29tbWVuZGVkIGFzIGl0IGhhcyBiZXR0ZXIgcGVyZm9ybWFuY2U6CmBgYApncmFkbGUgYnVpbGQKZG9ja2VyIGJ1aWxkIC10IFtTT1VSQ0VfSU1BR0VdIC4KYGBgCi0gcHVzaCB0aGUgaW1hZ2VzIHRvIHRoZSBkb2NrZXIgcmVnaXN0cnk7CmBgYApkb2NrZXIgdGFnIFtTT1VSQ0VfSU1BR0VdIFtIT1NUTkFNRV0vW1BST0pFQ1QtSURdL1tJTUFHRV0KZG9ja2VyIHB1c2ggW0hPU1ROQU1FXS9bUFJPSkVDVC1JRF0vW0lNQUdFXQpgYGAKLSBhcHBseSBgdGlsbGVyLXJiYWMueW1sYDoKYGBgCmt1YmVjdGwgYXBwbHkgLWYgdGlsbGVyLXJiYWMueW1sCmhlbG0gaW5pdCAtLXNlcnZpY2UtYWNjb3VudCB0aWxsZXIgLS1oaXN0b3J5LW1heCAyMDAKYGBgCi0gZGVwbG95CltjYXNzYW5kcmFdKGh0dHBzOi8vZ2l0aHViLmNvbS9iZXBvcG92L2F1dG9zaG93cm9vbS90cmVlL21hc3Rlci9ncm9vdnlfc2VydmVyL29wcy9jYXNzYW5kcmEpCmJ5IHJ1bm5pbmcgYGBgaW5zdGFsbC5zaGBgYAotIGRlcGxveSBqZW5raW5zIHVzaW5nIHRoZSAKW2luc3RydWN0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL2JlcG9wb3YvYXV0b3Nob3dyb29tL3RyZWUvbWFzdGVyL3NlcnZlci9vcHQvamVua2lucykKLSBhcHBseQpbYXV0b3Nob3dyb29tLXNlcnZlci55bWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9iZXBvcG92L2F1dG9zaG93cm9vbS9ibG9iL21hc3Rlci9zZXJ2ZXIvYXV0b3Nob3dyb29tLXNlcnZlci55bWwpCmFuZApbYXV0b3Nob3dyb29tLWdyb292eS1zZXJ2ZXIueW1sXShodHRwczovL2dpdGh1Yi5jb20vYmVwb3Bvdi9hdXRvc2hvd3Jvb20vYmxvYi9tYXN0ZXIvZ3Jvb3Z5X3NlcnZlci9hdXRvc2hvd3Jvb20tZ3Jvb3Z5LXNlcnZlci55bWwpCihjaGFuZ2UgaW1hZ2UgbmFtZXMgdG8geW91cnMgYmVmb3JlKQoKVG8gdXNlIGxvY2FsbHkgZGVwbG95ZWQgYXBwbGljYXRpb25zIHlvdSBjYW4gcnVuIGBgYGt1YmVjdGwgcG9ydC1mb3J3YXJkYGBgIGluIHlvdXIgdGVybWluYWwu readmeEtag: '"0788a72833f0c65da988f0954b6d986acd9394be"' readmeLastModified: Sat, 06 May 2023 14:47:50 GMT repositoryId: 179305875 description: >- Autoshowroom is a training project consists in REST and SOAP server, REST-client written using Spring Shell, SOAP-client written on the previous way and gRPC-server written on Groovy. This repository contains examples of usage Docker, Docker Compose, Kubernetes and also shows how to configure and deploy Jenkins-server created: '2019-04-03T14:20:16Z' updated: '2023-05-06T14:21:16Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: bepopov logo: https://avatars.githubusercontent.com/u/20209992?v=4 repoEtag: '"5cf8c3f777405fe986068dbe33a12f115042ad8b61f0d5b5a929b3b23a962df6"' repoLastModified: Sat, 06 May 2023 14:21:16 GMT foundInMaster: true category: Server Implementations id: 60dfc1ab39453d644a9e2cc366575d26 - source: openapi3 tags repository: https://github.com/microenv/node-typescript-api-boilerplate v3: true repositoryMetadata: base64Readme: IyBub2RlLXR5cGVzY3JpcHQtYm9pbGVycGxhdGU= readmeEtag: '"7ac6850a609af59783aa8bada4b581b18d6ca469"' readmeLastModified: Fri, 17 Apr 2020 01:57:13 GMT repositoryId: 256008749 description: >- 🚀 Boilerplate for typescript REST APIs ⭐Create production ready APIs using es7 and jest unit testing. created: '2020-04-15T18:51:33Z' updated: '2020-04-17T04:30:38Z' language: TypeScript archived: false stars: 1 watchers: 1 forks: 1 owner: microenv logo: https://avatars.githubusercontent.com/u/39780224?v=4 license: MIT repoEtag: '"f45194c107023795fe13d5eff62083e6b2276e23c8b5c261a693a78797b444ec"' repoLastModified: Fri, 17 Apr 2020 04:30:38 GMT foundInMaster: true category: - Data Validators - Parsers - Server Implementations id: f8a46fc254f10a5309dfb203c41ade0c - source: openapi3 tags repository: https://github.com/zhuzean/bookkeeping-demo v3: true repositoryMetadata: base64Readme: >- IyBCb29ra2VlcGluZyBQcm9qZWN0ClRoaXMgaXMgYSBkZW1vIHByb2plY3QgZm9yIGJvb2trZWVwaW5nIGFwcGxpY2F0aW9uLgpJdCBpcyBiYXNlZCBvbiB0aGUgVnVlIDMsIEZhc3RBUEkgYW5kIE5naW54LgoKIyMgV29ya2Zsb3cKTWFuYWdlZCBieSB0aGUgR2l0SHViIFtLYW5iYW4gYm9hcmRdKGh0dHBzOi8vZ2l0aHViLmNvbS9aaHVaZWFuL2Jvb2trZWVwaW5nLWRlbW8vcHJvamVjdHMvMSkKCiMjIERlcGxveW1lbnQgd2l0aCBLdWJlcm5ldGVzIDpzdGFyMjoKU2VlIG1vcmUgZGV0YWlscyBpbiB0aGlzIFtwYWdlXShodHRwczovL2dpdGh1Yi5jb20vWmh1WmVhbi9ib29ra2VlcGluZy1kZW1vL3RyZWUvbWFpbi9rOHMpCgojIyBQcmV2aWV3CiMjIyBPbmxpbmUgZGVtbwpQcm90b3R5cGUKLSBbRmlnbWEgbGlua10oaHR0cHM6Ly93d3cuZmlnbWEuY29tL2ZpbGUvSVl4N1dCQUc5SE9zTnphZ05WQnVCTi9QZXJzb25hbC1ib29ra2VlcGluZy13ZWI/bm9kZS1pZD0wJTNBMSkKCkZyb250ZW5kOgotIFdlYiBwYWdlOiBodHRwOi8vZGVtby5rOHMuemVhbi5wcm8KCkJhY2tlbmQ6Ci0gT3BlbkFQSSBzY2hlbWE6IGh0dHA6Ly9hcGkuazhzLnplYW4ucHJvL2JpbGwvZG9jcwoKIyMjIEZyb250ZW5kIChWdWUgMykKSXQgc2hvd3MgaG93IHRvIGFkZCBhIG5ldyByZWNvcmQgb24gdGhlIGJvb2trZWVwaW5nIGZvciBjdXJyZW50IG1vbnRoIGR5bmFtaWNhbGx5LgoKIVtpbWFnZV0oaHR0cHM6Ly9naXRodWIuY29tL1podVplYW4vYm9va2tlZXBpbmctZGVtby9ibG9iL21haW4vcHJldmlldy9mcm9udGVuZC9kZW1vLmdpZikKCiMjIyBCYWNrZW5kIChGYXN0QVBJKQpGYXN0QVBJIGlzIHVzZWQgdG8gbWFrZSB0aGUgUmVzdGZ1bCBBUElzLgoKIyMjIyBPcGVuQVBJIHNjaGVtYQohW2ltYWdlXShodHRwczovL2dpdGh1Yi5jb20vWmh1WmVhbi9ib29ra2VlcGluZy1kZW1vL2Jsb2IvbWFpbi9wcmV2aWV3L2JhY2tlbmQvb3BlbmFwaS5wbmcpCgoKIyMgUnVuIGluIHRoZSBsb2NhbCBtYWNoaW5lCkNoZWNrIHRoaXMgW3BhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9aaHVaZWFuL2Jvb2trZWVwaW5nLWRlbW8vdHJlZS9tYWluL2s4cykgYWJvdXQgaG93IHRvIGRlcGxveSBpdCB3aXRoIG1pbmlrdWJlIGluIHRoZSBsb2NhbCBtYWNoaW5lCg== readmeEtag: '"d952e51d146c816a3a1b176df412a6cdec249448"' readmeLastModified: Sun, 11 Apr 2021 11:17:42 GMT repositoryId: 343094001 description: A demo project for bookkeeping created: '2021-02-28T11:58:42Z' updated: '2022-03-19T12:44:32Z' language: Python archived: false stars: 1 watchers: 1 forks: 0 owner: ZhuZean logo: https://avatars.githubusercontent.com/u/15837299?v=4 repoEtag: '"d1f838595063eeb8604afb969c2086c38983c113040ffa574da1ad3d7a6ba2dd"' repoLastModified: Sat, 19 Mar 2022 12:44:32 GMT foundInMaster: true category: - Low-level Tooling - Server Implementations id: 6d257cc38757411c1860231b4655e0d7 - source: openapi3 tags repository: https://github.com/mrredbobr/open-api-change-logger v3: true repositoryMetadata: base64Readme: >- IyMjIE9wZW5BcGkgY2hhbmdlLWxvZ2dlcgpgYGB0eXBlc2NyaXB0CmltcG9ydCB7IENoYW5nZUxvZ2dlciB9IGZyb20gIm9wZW4tYXBpLWNoYW5nZS1sb2dnZXIiOwppbXBvcnQgc291cmNlIGZyb20gIi4vc291cmNlLmpzb24iOwppbXBvcnQgZGVzdGluYXRpb24gZnJvbSAiLi9kZXN0aW5hdGlvbi5qc29uIjsKaW1wb3J0IHsgT3BlbkFQSU9iamVjdCB9IGZyb20gIkBuZXN0anMvc3dhZ2dlci9kaXN0L2ludGVyZmFjZXMiOwppbXBvcnQgKiBhcyBwYXRoIGZyb20gInBhdGgiOwoKY29uc3QgY2hhbmdlTG9nZ2VyOiBDaGFuZ2VMb2dnZXIgPSBuZXcgQ2hhbmdlTG9nZ2VyKHsKICBvbGRTY2hlbWE6IHNvdXJjZSBhcyBPcGVuQVBJT2JqZWN0LAogIG5ld1NjaGVtYTogZGVzdGluYXRpb24gYXMgT3BlbkFQSU9iamVjdCwKfSk7CgpjaGFuZ2VMb2dnZXIuc2F2ZUZpbGVzKHsKICBodG1sRm9sZGVyOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnZmlsZXMnLCAnaHRtbCcpLAogIHN0eWxlc0ZvbGRlcjogcGF0aC5qb2luKF9fZGlybmFtZSwgJ2ZpbGVzJywgJ3N0eWxlJyksCiAgYXBpTmFtZTogJ3Rlc3QtYXBpJwp9KTsKYGBgCg== readmeEtag: '"6266572b2327228f4599bfaa76fcf287b39a2717"' readmeLastModified: Sat, 22 Apr 2023 17:00:10 GMT repositoryId: 418848216 description: Generates HTML-page with api changes. created: '2021-10-19T09:03:57Z' updated: '2023-04-22T17:00:16Z' language: CSS archived: false stars: 1 watchers: 1 forks: 0 owner: MrRedBobr logo: https://avatars.githubusercontent.com/u/46565863?v=4 repoEtag: '"235cce4c0435d56a55e4b1d292087bad76116746828b944d8eae885b25557852"' repoLastModified: Sat, 22 Apr 2023 17:00:16 GMT foundInMaster: true category: - Data Validators - Parsers id: c6c4a1cf5612c2410ec7d22a2b5a10c5 - source: openapi3 tags repository: https://github.com/opticsquid/bellatrix v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+DQogICA8aW1nIHNyYz0iLi9vbGQtdmVyc2lvbi9QdWJsaWMvYmVsbGF0cml4JTIwc29saWQucG5nIiBhbHQ9IkJlbGxhdHJpeCBMb2dvIj4NCjwvcD4NCg0KIyBCRUxMQVRSSVgNCg0KQSBOb2RlIEpTIHByb2plY3QgdG8gcHJvdmlkZSB5b3Ugd2l0aCBhIHN0YXJ0ZXIgY29kZSBmb3IgeW91ciBzZXJ2ZXIgc2lkZSBhcHBsaWNhdGlvbiB3aXRoIGJ1aWx0IGluIHJvdXRlcyBhbmQgZnVuY3Rpb25hbGl0aWVzIGZvciB0aGUgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gbmVlZHMgb2YgeW91ciBhcHBsaWNhdGlvbi4gV2UgbWFpbmx5IGZvY3VzIG9uIHRoZSAqKnNlY3VyaXR5Kiogb2YgdGhlIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIHJvdXRlcw0KDQpXZSBrZWVwIGltcGxlbWVudGluZyBhbGwgdGhlIGxhdGVzdCBzZWN1cml0eSBtZWFzdXJlcyBhbmQgYmVzdCBwcmFjdGljZXMgdGhhdCBhcmUgcmVxdWlyZWQgZm9yIHRoZSBhcHBsaWNhdGlvbidzIGRhdGEgdG8gcmVtYWluIHNlY3VyZSBhbmQgbWFrZSBzdXJlIGRhdGEgYW5kIGFjY2VzcyBpcyBhdmFpbGFibGUgdG8gb25seSB0aGUgb25lcyBpbnRlbmRlZCB0by4gV2UgZG8gdGhlIGJvcmluZyBzZWN1cml0eSBzdHVmZiBzbyB0aGF0IHlvdSBjYW4gZW5qb3kgeW91ciB0aW1lIGJ1aWxkaW5nIG90aGVyIGV4Y2l0aW5nIGZ1bmN0aW9uYWxpdGllcyB3aXRoIG91dCB3b3JyeWluZyBhYm91dCB0aGUgc2VjdXJpdHkgb2YgeW91ciBhcHBsaWNhdGlvbg0KDQojIFdlIGhhdmUgMiB2ZXJzaW9ucyBmb3IgdGhpcyBhcHANCg0KMS4gVGhlIG9sZCB2ZXJzaW9uIHdoaWNoIGlzIGJ1aWx0IHVzaW5nIGV4cHJlc3MuanMuIEFzIGV4cHJlc3MganMgaXMgYSBtaW5pbWFsaXN0IGZyYW1ld29yayBhIGxvdCBvZiBzdHJ1Y3R1cmUgYW5kIHNlY3VyaXR5IGNvdWxkIG5vdCBiZSBwcm92aWRlZCB0byB0aGUgYXBwLiBTbywgaXQgbWF5IGJlIHN1c2NlcHRpYmxlIHRvIHNvbWUgYXR0YWNrcw0KMi4gVGhlIG5ldyB2ZXJzaW9uLiBUaGlzIGlzIGJlaW5nIGJ1aWx0IHVzaW5nIGBuZXN0LmpzYC4gV2hpY2ggaXMgYSB2ZXJ5IHN0YWJsZSBvcGluaW9uYXRlZCBmcmFtZXdvcmsgdGhhdCBnaXZlcyBhIGxvdCBvZiBzdHJ1Y3R1cmUgdG8gdGhlIGNvZGUgYW5kIGZvbGxvd3MgT09QIGFuZCBNVkMgbW9kZWwuIEJ5IGRlZmF1bHQgaXQgYnJpbmdzIGEgbG90IG9mIHNlY3VyaXR5IHRvIHRoZSB0YWJsZSBhbmQgaXMgbXVjaCBtb3JlIG9yZ2FuaXplZCB3aGljaCBoZWxwcyB0aGUgY29kZSBzdWl0YWJsZSBmb3IgaW1wbGVtZW50YXRpb24gaW4gbGFyZ2Ugc2NhbGUgYXBwbGljYXRpb25zLg0KDQoqKkJlbG93IGFyZSB0aGUgc3RlcHMgdG8gYnVpbGQgdGhlIG9sZCB2ZXJzaW9uLiBUaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIG5ldyB2ZXJzaW9uIGlzIGluIHRoZSBbbmV3LXZlcnNpb25dKC4vbmV3LXZlcnNpb24vKSBmb2xkZXIuKioNCg0KPiBXZSBmb2xsb3cgc29tZSBiYXNpYyBydWxlcyBmb3IgdGhlIHNlY3VyaXR5IG9mIHRoZSBhcHAuDQoNCi0gV2UgdXNlIHRoZSBbSldUXShodHRwczovL2p3dC5pby8pIGZvciB0aGUgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gb2YgdGhlIGFwcGxpY2F0aW9uDQoNCi0gV2UgdXNlIGFuIGFwcHJvYWNoIG9mIHRpbWUgYmFzZWQgdG9rZW4gZm9yIHRoZSBhdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbiBvZiB0aGUgYXBwbGljYXRpb24NCi0gRm9yIHRoaXMgdXNlciBnZXRzIDIgdG9rZW5zIGFmdGVyIHN1Y2Nlc3NmdWwgbG9naW4uIE9uZSBpcyBjYWxsZWQgYGFjY2Vzc190b2tlbmAgKioodmFsaWQgZm9yIDE1IG1pbnMpKiogYW5kIHRoZSBvdGhlciBpcyBjYWxsZWQgYHJlZnJlc2hfdG9rZW5gDQotIEV2ZXJ5IHRpbWUgdGhlIHVzZXIgbWFrZXMgYSByZXF1ZXN0IHRvIGEgcHJvdGVjdGVkIHJvdXRlLCB0aGUgYGFjY2Vzc190b2tlbmAgc2hvdWxkIGJlIHNlbnQgaW4gdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXINCg0KLSBFdmVyeXRpbWUgdGhlIGBhY2Nlc3NfdG9rZW5gIGV4cGlyZXMsIHRoZSB1c2VyIGNhbiByZXF1ZXN0IGEgbmV3IGBhY2Nlc3NfdG9rZW5gIGJ5IHNlbmRpbmcgYSAqKkdFVCoqIHJlcXVlc3QgdG8gYFx0b2tlbmAgcm91dGUuIFRoZSBgcmVmcmVzaF90b2tlbmAgc2hvdWxkIGJlIHByb3ZpZGVkIGluIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyIG9mIHRoZSByZXF1ZXN0DQoNCj4gV2hpbGUga2VlcGluZyBhbiBleWUgb24gdGhlIHNlY3VyaXR5IHdlIGFsc28gZm9jdXMgb24gcGVyZm9ybWFuY2UsIHNjYWxhYmlsaXR5IGFuZCByZXVzYWJsaXR5IG9mIHRoZSBjb2RlIGJ5IGJyZWFraW5nIHRoZSBjb2RlIHRvIHNtYWxsIG1pZGRsZXdhcmVzIGFuZCBhc3luY2hyb25pemluZyB0aGUgcHJvY2Vzc2VzIGFzIG11Y2ggYXMgcG9zc2libGUuIFdlIHBhcmFsbGVsaXplIHRoZSBwcm9taXNlcyBhbmQgbmV0d29yayByZXF1ZXN0cyB3aGVuIGV2ZXIgcG9zc2libGUgdG8gbWFrZSB0aGUgYXBwbGljYXRpb24gbW9yZSBwZXJmb3JtYW50IHNjYWxhYmxlIGFuZCByZXVzYWJsZS4NCg0KIyMgU3RlcHMgdG8gZ2V0IHN0YXJ0ZWQNCg0KMS4gQ2xvbmUgdGhlIF9CZWxsYXRyaXhfIHJlcG9zaXRvcnkuDQoyLiBNYWtlIHN1cmUgdG8gaW5zdGFsbCB0aGUgbGF0ZXN0ICoqTFRTIHZlcnNpb24gb2YgTm9kZSBKUyoqDQozLiBBZnRlciBuYXZpZ2F0aW5nIHRvIHRoZSBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5LCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOg0KDQogICBgYGBzaA0KICAgbnBtIGluc3RhbGwNCiAgIGBgYA0KDQo0LiBDcmVhdGUgYSBgLmVudmAgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgcHJvamVjdC4gVGhpcyBmaWxlIHdpbGwgY29udGFpbiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHJlcXVpcmVkIGZvciB0aGUgYXBwbGljYXRpb24gdG8gcnVuLg0KICAgVGhlIGZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBmaWVsZHM6DQoNCiAgIC0gYERCX1VSSWAgLSBfVVJJIG9mIHRoZSBNb25nb0RCIGRhdGFiYXNlXy4NCiAgIC0gYEpXVF9BQ1NfU0VDUkVUYCAtIF9TZWNyZXQga2V5IGZvciB0aGUgSldUIGBhY2Nlc3NfdG9rZW5gXw0KICAgLSBgSldUX1JFRl9TRUNSRVRgIC0gX1NlY3JldCBrZXkgZm9yIHRoZSBKV1QgYHJlZnJlc2hfdG9rZW5gXw0KDQo1LiBSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIHN0YXJ0IHRoZSBhcHBsaWNhdGlvbiBpbiBwcm9kdWN0aW9uIG1vZGU6DQoNCiAgIGBgYHNoDQogICBucG0gc3RhcnQNCiAgIGBgYA0KDQo2LiBUbyBzdGFydCB0aGUgYXBwbGljYXRpb24gaW4gZGV2ZWxvcG1lbnQgbW9kZSwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoNCg0KICAgYGBgc2gNCiAgIG5wbSBydW4gZGV2DQogICBgYGANCg== readmeEtag: '"23438bbeb18b2a21446bb7bdf1125b6a17fea313"' readmeLastModified: Sun, 09 Oct 2022 11:21:44 GMT repositoryId: 437827006 description: >- A prebuilt Express JS Authentication & Authorization Project based on a REST API interface. It has the basic authentication and Authorization routes with the latest security measures implemented so that your application is much more secure from day 1. You are welcome to build upon and extend this project as and when required. created: '2021-12-13T10:21:01Z' updated: '2023-04-30T11:25:55Z' language: JavaScript archived: false stars: 1 watchers: 1 forks: 0 owner: opticSquid logo: https://avatars.githubusercontent.com/u/59192460?v=4 license: GPL-3.0 repoEtag: '"acd58769cf8a0ef99d96cc59652e495b33dfec3a314f16876f0e6f15023a380e"' repoLastModified: Sun, 30 Apr 2023 11:25:55 GMT foundInMaster: true category: Server Implementations id: cc0bf508eefe56e6f6892b0955c5ec0c oldLocations: - https://github.com/soumalyatheking22012001/Bellatrix - source: openapi3 tags repository: https://github.com/thekeogh/loopback-postgresql-graphql v3: true id: 730a635e026c886ae1e32749e8c73735 repositoryMetadata: base64Readme: >- IyBMb29wQmFjayA0IFBvc3RncmVTUUwgR3JhcGhRTCBCb2lsZXJwbGF0ZQoKQSBib2lsZXJwbGF0ZS9zdGFydGVyIHByb2plY3QgZm9yIHF1aWNrbHkgYnVpbGRpbmcgR3JhcGhRTCBBUElzIHVzaW5nIE5vZGUuanMsIExvb3BCYWNrIDQgYW5kIFBvc3RncmVTUUwuCgojIyBQcmVyZXF1aXNpdGVzCgotIE5vZGUgKGJ1aWx0IHdpdGggYDE5YCwgYnV0IHNob3VsZCB3b3JrIG9uIGxvd2VyKQotIFBvc3RncmVTUUwgKGxvY2FsbHksIGV4dGVybmFsbHkgb3IgZG9ja2VyKQoKIyMgU2V0dXAKCkNsb25lIHRoZSByZXBvc2l0b3J5CgpgYGBzaGVsbApnaXQgY2xvbmUgZ2l0QGdpdGh1Yi5jb206dGhla2VvZ2gvbG9vcGJhY2stcG9zdGdyZXNxbC1ncmFwaHFsLmdpdApgYGAKCkluc3RhbGwgdGhlIGRlcGVuZGVuY2llcwoKYGBgc2hlbGwKbnBtIGluc3RhbGwKYGBgCgpDcmVhdGUgYSBsb2NhbCBgLmVudmAgCgpgYGBzaGVsbAp0b3VjaCAuZW52LmRldmVsb3BtZW50LmxvY2FsCmBgYAoKQ29weSB0aGUgdmFsdWVzIChvbmx5IHRoZSBvbmVzIHlvdSBuZWVkIHRvIGNoYW5nZSkgZnJvbSB0aGUgYC5lbnYuZGV2ZWxvcG1lbnRgIGZpbGUgdG8gdGhpcyBuZXcgZmlsZSwgZm9yIGV4YW1wbGU6CgpgYGBzaGVsbAojIERhdGFiYXNlCkRCX1VTRVI9am9lCkRCX1BBU1NXT1JEPW15c3VwZXJwYXNzd29yZApEQl9EQVRBQkFTRT1sb29wYmFjawpgYGAKCj4gTW9yZSBkZXRhaWxzIG9uIHRoZSBlbnZpcm9ubWVudCBjb25maWcgW2JlbG93XSgjZW52aXJvbm1lbnQpLgoKTWlncmF0ZSB0aGUgZGF0YWJhc2UKCj4gU2VlIHRoZSBbZGF0YWJhc2VdKCNkYXRhYmFzZSkgc2VjdGlvbiBmb3IgdGhpcyBzdGVwLgoKU3RhcnQgdGhlIEFQSQoKYGBgc2hlbGwKbnBtIHN0YXJ0CiMgb3IgZm9yIGRldiAodXNpbmcgdHNjLXdhdGNoKQpucG0gcnVuIGRldgpgYGAKCllvdSBzaG91bGQgbm93IHNlZSB0aGUgcmVsZXZhbnQgVVJMcyBpbiB5b3VyIHRlcm1pbmFsLgoKIyMgRGF0YWJhc2UKCkFsdGhvdWdoIGRlc2lnbmVkIHdpdGggUG9zdGdyZVNRTCBpbiBtaW5kLCB0aGVyZSBpcyBubyByZWFzb24gd2h5IHlvdSBjYW5ub3QgY2hhbmdlIHRoZSBkYXRhc291cmNlIHRvIGFub3RoZXIgKGUuZy4gTWFyaWFEQiwgT3JhY2xlLCBNb25nbyBldGMpLCBpdCBpcyBMb29wQmFjayBhZnRlciBhbGwsIGFuZCBoYXMgbWFueSBkcml2ZXJzLiBCdXQgd2UgdXNlIFBvc3RncmVTUUwgZm9yIHRoaXMgQVBJCgpPbmNlIHlvdSBoYXZlIGVudGVyZWQgeW91ciBkYXRhYmFzZSBjcmVkZW50aWFscyBbYWJvdmVdKCNzZXR1cCksIFBvc3RncmVTUUwgaXMgcmVhZHkgdG8gZ28gb3V0LXRoZS1ib3guIFRoZXJlIGlzIGFuIGV4YW1wbGUgYHVzZXJgIG1vZGVsIGluIHRoZSBgbW9kZWxzL2AgZm9sZGVyIHJlYWR5IHRvIGdvLCB0byBtaWdyYXRlIHRoaXM6CgpgYGBzaGVsbApOT0RFX0VOVj1kZXZlbG9wbWVudCBucG0gcnVuIG1pZ3JhdGUKYGBgCgpOb3cgY2hlY2sgeW91ciBkYXRhYmFzZSBhbmQgeW91IHNob3VsZCBzZWUgYSBgdXNlcmAgdGFibGUuCgojIyBHcmFwaFFMCgpHcmFwaFFMIGlzIGJ1aWx0IGluIHRvIHRoZSBzZXJ2aWNlIHZpYSB0aGUgW29wZW5hcGktdG8tZ3JhcGhxbF0oaHR0cHM6Ly9naXRodWIuY29tL0lCTS9vcGVuYXBpLXRvLWdyYXBocWwpIGFuZCBbZ3JhcGhxbC1odHRwXShodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWh0dHApIGxpYnJhcmllcy4gVGhpcyBtZWFucywgdGhhdCBHcmFwaFFMIHdpbGwgcnVuIG9uIHRoZSBzYW1lIHBvcnQvdXJsIGFzIHlvdXIgT0FTMyBSRVNUZnVsIEFQSS4gRm9yIGV4YW1wbGU6CgpgYGAKUkVTVGZ1bDogaHR0cHM6Ly9sb2NhbGhvc3Q6MzIwMApHcmFwaFFMOiBodHRwczovL2xvY2FsaG9zdDozMjAwL2dyYXBocWwKYGBgCgo+IEdyYXBoaVFMIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgoKIyMgRW52aXJvbm1lbnQKCltkb3RlbnYtZmxvd10oaHR0cHM6Ly9naXRodWIuY29tL2tlcmltZHpoYW5vdi9kb3RlbnYtZmxvdykgaXMgdXNlZCBvdXQgdGhlIGJveCwgc28gcGxlYXNlIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gb3ZlciB0aGVyZSBmb3IgbW9yZSBvbiB0aGlzLgoKSXQncyBhbHNvIGFkdmlzYWJsZSB0byBhZGQgYW55IG5ldyBlbnYgdmFyaWFibGVzIHRvIHRoZSBgc3JjL2Vudi5kLnRzYCBmaWxlIHRvIGFsbG93IFR5cGVTY3JpcHQgaW5zaWdodC4KCi0tLS0KClshW0xvb3BCYWNrXShodHRwczovL2dpdGh1Yi5jb20vbG9vcGJhY2tpby9sb29wYmFjay1uZXh0L3Jhdy9tYXN0ZXIvZG9jcy9zaXRlL2ltZ3MvYnJhbmRpbmcvUG93ZXJlZC1ieS1Mb29wQmFjay1CYWRnZS0oYmx1ZSktQDJ4LnBuZyldKGh0dHA6Ly9sb29wYmFjay5pby8pCg== readmeEtag: '"7de9d53ea1d913a02ffc4032f9cf039c53de59f0"' readmeLastModified: Tue, 11 Apr 2023 10:08:53 GMT repositoryId: 611844881 description: LoopBack 4 PostgreSQL GraphQL Boilerplate created: '2023-03-09T16:56:54Z' updated: '2023-04-21T09:46:44Z' language: TypeScript archived: false stars: 1 watchers: 1 forks: 0 owner: thekeogh logo: https://avatars.githubusercontent.com/u/1387498?v=4 repoEtag: '"7e5bd9cbce22b56e08d5a505f66c7155a482c7efae9e44e5c30a58404815ae86"' repoLastModified: Fri, 21 Apr 2023 09:46:44 GMT category: - Server - Server Implementations foundInMaster: true oldLocations: - https://github.com/thekeogh/loopback-psql-graphql - source: openapi3 tags repository: https://github.com/nzlouislu/nzlouis-openapi v3: true repositoryMetadata: base64Readme: >- IyBVc2VyIFNlcnZpY2UNCkEgc2VydmljZSBmb3IgZmluZGluZyBhbGwgdXNlcnMsIGNyZWF0aW5nLCByZXRyaWV2aW5nLCB1cGRhdGluZywgYW5kIGRlbGV0aW5nIHVzZXJzLg0KDQpzd2FnZ2VyLXVpIHVybCA6IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9kb2MuaHRtbA0KDQpVc2Ugb2YgdGVjaG5vbG9neTogU3ByaW5nYm9vdDIuMyArIFNwcmluZ2RvYy1vcGVuYXBpIDMgKyBKUEEgKyBIMiArIEp1bml0NA0KDQoiIyBvcGVuYXBpIiANCg0KIVtdKHNyYy9tYWluL3Jlc291cmNlcy9vcGVuYXBpLmdpZik= readmeEtag: '"2fc8526d51da4ea6ef9dcaa2023f32a2ad978df6"' readmeLastModified: Tue, 28 Sep 2021 01:02:17 GMT repositoryId: 410410403 description: >- A service for finding all users, creating, retrieving, updating, and deleting users. created: '2021-09-26T00:21:46Z' updated: '2025-08-19T07:55:42Z' language: Java archived: false stars: 2 watchers: 1 forks: 0 owner: NZLouislu logo: https://avatars.githubusercontent.com/u/72653348?v=4 repoEtag: '"524b28ff065511bd25d9122175099acdfb528dfb684f560ce69464af2375285a"' repoLastModified: Tue, 19 Aug 2025 07:55:42 GMT foundInMaster: true category: - Testing - Server Implementations id: a6efeda45f202c4cdf160de794d557e2 oldLocations: - https://github.com/ailouislu/openapi - source: openapi3 tags repository: https://github.com/interserver/mailbaby-mail-api v3: true id: f1aa137f6555ec0919bc1cd98604137a repositoryMetadata: base64Readme: >- IyBNYWlsQmFieSBBUEkKCkFQSSBzZXJ2aWNlIGZvciBhY2Nlc3NpbmcgdGhlIE1haWwuQmFieSBzZXJ2aWNlcy4KCiMgQVBJIFNhbXBsZSBDbGllbnRzCgpTYW1wbGUgY2xpZW50cyBmb3IgdGhlIEFQSSBhcmUgYXZhaWxhYmxlIGluIG1hbnkgbGFuZ3VhZ2VzCgoqIGh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlcnNlcnZlci9tYWlsYmFieS1hcGktc2FtcGxlcwoKCiMgRG9jdW1lbnRhdGlvbgoKKiBMaXN0cwogICogW09wZW5BUEkgVG9vbHNdKGh0dHBzOi8vb3BlbmFwaS50b29scy8pIExpc3Rpbmcgb2YgT3BlbkFQSSByZWxhdGQgdG9vbHMgYnkgY2F0ZWdvcnkgKERvY3VtZW50b3JzLCBQYXJzZXJzLCBNb2NrZXJzLCBldGMpCiogRnJhbWV3b3JrIERvY3MKICAqIFtXZWJNYW4gTWFudWFsXShodHRwczovL3d3dy53b3JrZXJtYW4ubmV0L2RvYy93ZWJtYW4pIFdlYk1hbiBmcmFtZXdvcmsgZG9jdW1lbnRhdGlvbgogICogW0lsbHVtaW5hdGUgRGF0YWJhc2UgRG9jc10oaHR0cHM6Ly9sYXJhdmVsLmNvbS9kb2NzLzgueC9xdWVyaWVzKQogICogW1BIUE1haWxlcl0oaHR0cHM6Ly9naXRodWIuY29tL1BIUE1haWxlci9QSFBNYWlsZXIvKSBlbWFpbCBzZW5kaW5nIGxpYnJhcnkgZm9yIFBIUAoqIEFQSSBTcGVjCiAgKiBbcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9pbnRlcnNlcnZlci9tYWlsYmFieS1tYWlsLWFwaS9tYXN0ZXIvcHVibGljL3NwZWMvb3BlbmFwaS5qc29uXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vaW50ZXJzZXJ2ZXIvbWFpbGJhYnktbWFpbC1hcGkvbWFzdGVyL3B1YmxpYy9zcGVjL29wZW5hcGkuanNvbikKICAqIFtteW5ldy5pbnRlcnNlcnZlci5uZXQ6ODc4Ny9zcGVjL29wZW5hcGkuanNvbl0oaHR0cDovL215bmV3LmludGVyc2VydmVyLm5ldDo4Nzg3L3NwZWMvb3BlbmFwaS5qc29uKQoqIEFQSSBDbGllbnQgU2FtcGxlIEdlbmVyYXRvcnMKICAqIFtzd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW46IHN3YWdnZXItY29kZWdlbiBjb250YWlucyBhIHRlbXBsYXRlLWRyaXZlbiBlbmdpbmUgdG8gZ2VuZXJhdGUgZG9jdW1lbnRhdGlvbiwgQVBJIGNsaWVudHMgYW5kIHNlcnZlciBzdHVicyBpbiBkaWZmZXJlbnQgbGFuZ3VhZ2VzIGJ5IHBhcnNpbmcgeW91ciBPcGVuQVBJIC8gU3dhZ2dlciBkZWZpbml0aW9uLl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikKICAqIFtPcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpOiBBIG5vZGUgcGFja2FnZSB3cmFwcGVyIGZvciBodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSkKICAgICogW0dlbmVyYXRvcnMgTGlzdCB8IE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvZG9jcy9nZW5lcmF0b3JzKQogICogW0tvbmcvaHR0cHNuaXBwZXQ6IEhUVFAgUmVxdWVzdCBzbmlwcGV0IGdlbmVyYXRvciBmb3IgbWFueSBsYW5ndWFnZXMgJiBsaWJyYXJpZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9Lb25nL2h0dHBzbmlwcGV0KQoqIENvZGUgU25pcHBldCBhbmQgRXhhbXBsZSBpbnRlZ3JhdGlvbiBpbnRvIFNQRUMKICAqIFtjZHd2L29hczMtYXBpLXNuaXBwZXQtZW5yaWNoZXI6IEVucmljaCB5b3VyIE9wZW5BUEkgMy4wIEpTT04gd2l0aCBjb2RlIHNhbXBsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9jZHd2L29hczMtYXBpLXNuaXBwZXQtZW5yaWNoZXIvKQogICogW0VyaWtXaXR0ZXJuL29wZW5hcGktc25pcHBldDogR2VuZXJhdGVzIGNvZGUgc25pcHBldHMgZm9yIGdpdmVuIFN3YWdnZXIgLyBPcGVuIEFQSSBkb2N1bWVudHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9FcmlrV2l0dGVybi9vcGVuYXBpLXNuaXBwZXQpCiAgKiBHZW5lcmF0ZWQgQ29kZQogICogW01haWxCYWJ5IGdlbmVyYXRlZCBQSFAgQ2xpZW50XShodHRwczovL2dpdGh1Yi5jb20vaW50ZXJzZXJ2ZXIvbWFpbGJhYnktY2xpZW50LXBocCkgUEhQIENsaWVudCBnZW5lcmF0ZWQgYnkgdGhlIE9wZW5BUEkgR2VuZXJhdG9yL1N3YWdnZXIgQ29kZWdlbgoqIE91ciBBUEkgRG9jcwogICogW01haWxCYWJ5IFN3YWdnZXItVUldKGh0dHBzOi8vYXBpLm1haWxiYWJ5Lm5ldC9kb2MvaW5kZXguaHRtbCkKICAqIFtNYWlsQmFieSBBUEkgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cubWFpbC5iYWJ5L2FwaWRvYy5odG1sIy9vcGVyYXRpb25zL2FkZFJ1bGUpCiAgKiBbU3dhZ2dlciBVSV0oaHR0cDovL215bmV3LmludGVyc2VydmVyLm5ldDo4Nzg3L2RvYy9pbmRleC5odG1sKQogICogW01haWxCYWJ5IEFQSSBEb2N1bWVudGF0aW9uXShodHRwOi8vbXluZXcuaW50ZXJzZXJ2ZXIubmV0Ojg3ODcvZWxlbWVudHMuaHRtbCMvKQogICogW215bmV3LmludGVyc2VydmVyLm5ldDo4Nzg3L3JhcGlkb2MuaHRtbCNvdmVydmlld10oaHR0cDovL215bmV3LmludGVyc2VydmVyLm5ldDo4Nzg3L3JhcGlkb2MuaHRtbCNnZXQtL21haWwvcnVsZXMpCiAgKiBbUmVEb2NdKGh0dHA6Ly9teW5ldy5pbnRlcnNlcnZlci5uZXQ6ODc4Ny9yZWRvYy5odG1sI3RhZy9TZXJ2aWNlcykKICAqIFtteW5ldy5pbnRlcnNlcnZlci5uZXQ6ODc4Ny9vcGVuYXBpLWV4cGxvcmVyLmh0bWwjP3JvdXRlPWdldC0vbWFpbF0oaHR0cDovL215bmV3LmludGVyc2VydmVyLm5ldDo4Nzg3L29wZW5hcGktZXhwbG9yZXIuaHRtbCM/cm91dGU9cG9zdC0vbWFpbC9hZHZzZW5kKQoqIEFQSSBFZGl0b3IKICAqIFtTd2FnZ2VySHViIGVkaXRvciBmb3IgTWFpbEJhYnkgQVBJIFNwZWNdKGh0dHBzOi8vYXBwLnN3YWdnZXJodWIuY29tL2FwaXMvSW50ZXJTZXJ2ZXIvTWFpbEJhYnkvMS4wLjApCiAgKiBbQXBpY3VyaW8gU3R1ZGlvIC0gQVBJIEVkaXRvciA6OiBNYWlsQmFieSBFbWFpbCBEZWxpdmVyeSBhbmQgTWFuYWdlbWVudCBTZXJ2aWNlIEFQSV0oaHR0cHM6Ly9zdHVkaW8uYXBpY3VyLmlvL2FwaXMvOTM5NzQvZWRpdG9yKQogICogW0FwaWN1cmlvIFN0dWRpbyAtIEFQSSBFZGl0b3IgOjogbXkgSW50ZXJTZXJ2ZXIgU2VydmljZXMgTWFuYWdlbWVudCBBUEldKGh0dHBzOi8vc3R1ZGlvLmFwaWN1ci5pby9hcGlzLzkzNjE4L2VkaXRvcikKKiBQSFAgT3BlbkFQSSBMaWJzCiAgKiBbY2FudnVyYWwvcGhwLW9wZW5hcGktZmFrZXI6IExpYnJhcnkgdG8gZ2VuZXJhdGUgZmFrZSBkYXRhIGZvciBPcGVuQVBJIHJlcXVlc3QvcmVzcG9uc2Uvc2NoZW1hc10oaHR0cHM6Ly9naXRodWIuY29tL2NhbnZ1cmFsL3BocC1vcGVuYXBpLWZha2VyKQogICogW3N1bnJpc2UtcGhwL2h0dHAtcm91dGVyOiA6dGFkYTogUmVsZWFzZSAyLjAgaXMgcmVsZWFzZWQhIFZlcnkgZmFzdCBIVFRQIHJvdXRlciBmb3IgUEhQIDcuMSsgYmFzZWQgb24gUFNSLTcgYW5kIFBTUi0xNSB3aXRoIHN1cHBvcnQgZm9yIGFubm90YXRpb25zL2F0dHJpYnV0ZXMgYW5kIE9wZW5BUEkgKFN3YWdnZXIpIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9zdW5yaXNlLXBocC9odHRwLXJvdXRlcikKICAqIFtjZWJlL3BocC1vcGVuYXBpOiBSZWFkIGFuZCB3cml0ZSBPcGVuQVBJIHlhbWwvanNvbiBmaWxlcyBhbmQgbWFrZSB0aGUgY29udGVudCBhY2Nlc3NpYmxlIGluIFBIUCBvYmplY3RzLl0oaHR0cHM6Ly9naXRodWIuY29tL2NlYmUvcGhwLW9wZW5hcGkpCiAgKiBbbGV6aG5ldjc0L29wZW5hcGktcHNyNy12YWxpZGF0b3I6IEl0IHZhbGlkYXRlcyBQU1ItNyBtZXNzYWdlcyAoSFRUUCByZXF1ZXN0L3Jlc3BvbnNlKSBhZ2FpbnN0IE9wZW5BUEkgc3BlY2lmaWNhdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9sZXpobmV2NzQvb3BlbmFwaS1wc3I3LXZhbGlkYXRvcikKICAqIFtlcmFzeXMvb3BlbmFwaS1waHA6IPCfk5pTd2FnZ2VyIC8gT3BlbiBBUEkgMy4wIGJ1aWxkZXIgYW5kIHZhbGlkYXRpb24gbGlicmFyeSBmb3IgUEhQIHRoYXQgaGVscHMgeW91IHdyaXRlIHZhbGlkIHNwZWNzLl0oaHR0cHM6Ly9naXRodWIuY29tL2VyYXN5cy9vcGVuYXBpLXBocCkKICAqIFtPcGVuQVBJIFBTUi03IE1lc3NhZ2UgVmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vdGhlcGhwbGVhZ3VlL29wZW5hcGktcHNyNy12YWxpZGF0b3IpCiogQVBJIERvYyBTZXR0aW5ncwogICogW1N3YWdnZXIvT3BlbkFQSSBTcGVjIERvY3VtZW50YXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGVzY3JpYmluZy1yZXNwb25zZXMvKQogICogW1N0b3BMaWdodCBFbGVtZW50c10oaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvL2VsZW1lbnRzKSBPcGVuQVBJIERvY3VtZW50b3IKICAqIFtyYXBpLWRvYy9SYXBpRG9jOiBSYXBpRG9jIC1XZWJDb21wb25lbnQgZm9yIE9wZW5BUEkgU3BlY10oaHR0cHM6Ly9naXRodWIuY29tL3JhcGktZG9jL1JhcGlEb2MpCiAgKiBbUmFwaURvYyAtIFdlYiBDb21wb25lbnQgYmFzZWQgU3dhZ2dlciAmIE9wZW5BUEkgU3BlYyBWaWV3ZXJdKGh0dHBzOi8vcmFwaWRvY3dlYi5jb20vKQogICogW3N0b3BsaWdodGlvL3N0dWRpbzogVGhlIG1vZGVybiBlZGl0b3IgZm9yIEFQSSBEZXNpZ24gYW5kIFRlY2huaWNhbCBXcml0aW5nLl0oaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvL3N0dWRpbykKICAqIFtPcGVuLVNvdXJjZSBBUEkgTW9ja2luZywgTGludGluZywgJiBEb2N1bWVudGF0aW9uIHwgU3RvcGxpZ2h0XShodHRwczovL3N0b3BsaWdodC5pby9vcGVuLXNvdXJjZSkKICAqIFtSYXBpRG9jIC0gV2ViIENvbXBvbmVudCBiYXNlZCBTd2FnZ2VyICYgT3BlbkFQSSBTcGVjIFZpZXdlcl0oaHR0cHM6Ly9yYXBpZG9jd2ViLmNvbS9hcGkuaHRtbCkKICAqIFtSYXBpRG9jIEFQSSBEZW1vXShodHRwczovL3JhcGlkb2N3ZWIuY29tL2V4YW1wbGVzL2FwaS1kZW1vLmh0bWwjcG9zdC0vbWFpbC9hZHZzZW5kKQoKIyBEZXZlbG9wbWVudAoKVGhpcyBpcyBidWlsdCBvbiB0b3Agb2YgV2VibWFuLCBhIGhpZ2ggcGVyZm9ybWFuY2UgSFRUUCBTZXJ2aWNlIEZyYW1ld29yayBmb3IgUEhQIGJhc2VkIG9uIFtXb3JrZXJtYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS93YWxrb3Ivd29ya2VybWFuKS4KCiMjIEFQSSBTcGVjaWZpY2F0aW9uCgpXZSBhcmUgdXRpbGl6aW5nIHRoZSBPcGVuQVBJIDMgKGZvcm1lcmx5IGtub3duIGFzIFN3YWdnZXIpIHNwZWMgZm9yIHRoaXMgQVBJLiAgSXQgaXMgYmFzaWNhbGx5IHRoZSBuZXh0IGV2b2x1dGlvbiBvZiBTT0FQIEFQSSdzIHdpdGggd2VsbCBkZWZpbmVkIGZ1bmN0aW9ucywgcGFyYW1ldGVycywgYW5kIHJlc3BvbnNlcy4gIFdoaWxlIHRoZXJlIGFyZSBtYW55IGVkaXRvcnMgb3V0IHRoZXJlIEknbSBjdXJyZW50bHkgdXNpbmcgU3dhZ2dlckh1YiB0byBkbyBtb3N0IG9mIHRoZSBlZGl0aW5nIG9mIHRoZSBzcGVjLgoKIyMgV2VibWFuIEZyYW1ld29yawoKQWZ0ZXIgdGVzdGluZyAqZXZlcnkqIFBIUCBsaWJyYXJ5IG91dCB0aGVyZSBkZWFsaW5nIHdpdGggY29uY3VycmVudC9hc3luY2hyb25vdXMgcHJvY2Vzc2luZyBtYW55IHRpbWVzIG92ZXIgdGhlIHllYXJzIEkndmUgZm91bmQgW1dvcmtlcm1hbl0oaHR0cHM6Ly9naXRodWIuY29tL3dhbGtvci93b3JrZXJtYW4pIHRvIGJlIHRoZSBvdmVyYWxsIGJlc3QuICBJdCBoYXMgcHJvdmVuIG1vcmUgc3RhYmxlIGFuZCBieSBmYXIgZmFzdGVyIHRoYW4gdGhlIGFsdGVybmF0aXZlcyB3aXRoIHRoZSBvbmUgYmlnIGRvd25zaWRlIGJlaW5nIHRoYXQgaXRzIGRvY3VtZW50YXRpb24gYW5kIGNvZGUgY29tbWVudHMgYXJlIGFsbCBpbiBDaGluZXNlLiAgW1dlYm1hbl0oaHR0cHM6Ly9naXRodWIuY29tL3dhbGtvci93ZWJtYW4pIGlzIGEgZmFpcmx5IHJlY2VudGx5IGNyZWF0ZWQgd2ViIGZyYW1ld29yayBvbiB0b3Agb2YgW1dvcmtlcm1hbl0oaHR0cHM6Ly9naXRodWIuY29tL3dhbGtvci93b3JrZXJtYW4pLiAgVGhlcmUgaGFkIGJlZW4gbWFueSBwcmV2aW91c2x5IGNyZWF0ZWQgZnJhbWV3b3JrcyBiYXNlZCBvbiB3b3JrZXJtYW4gYW5kIHdoaWxlIHNvbWUgd2VyZSBnb29kIFdlYm1hbiBzZWVtZWQgdG8gaGl0IHRoYXQgcGVyZmVjdCBiYWxhbmNlIGJldHdlZW4gZWFzZS1vZi11c2UgYW5kIHBvd2VyLgoKVGhlIENoaW5lc2UgZG9jdW1lbnRhdGlvbiBpcyBlYXNpbHkgcmVhZGFibGUgVXNpbmcgZWl0aGVyIHRoZSBhdXRvIHRyYW5zbGF0ZSBpbiBDaHJvbWUgb3IgYW4gYWRkb24gbGlrZSBbVHJhbnNsYXRlIFdlYiBQYWdlc10oaHR0cHM6Ly9hZGRvbnMubW96aWxsYS5vcmcvZW4tVVMvZmlyZWZveC9hZGRvbi90cmFkdXppci1wYWdpbmFzLXdlYi8pIGZvciBGaXJlZm94Lgo= readmeEtag: '"289c6508066bb72cc67dc93219ca73b4aa29ce87"' readmeLastModified: Fri, 24 May 2024 15:38:49 GMT repositoryId: 539355108 description: API Server for the MailBaby Email Services. created: '2022-09-21T07:13:45Z' updated: '2026-01-21T22:37:52Z' language: PHP archived: false stars: 2 watchers: 2 forks: 0 owner: interserver logo: https://avatars.githubusercontent.com/u/29833539?v=4 license: MIT repoEtag: '"598b369e25416e57e29ff8906bc1a87de764da3dbbd61d4c24205ab58a1f69c0"' repoLastModified: Wed, 21 Jan 2026 22:37:52 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/zafir100100/task-management-api-with-asp.net-core v3: true id: f9d0c786462c143acee41a905413a04a repositoryMetadata: base64Readme: >- IyBUYXNrLU1hbmFnZW1lbnQtQVBJLXdpdGgtQVNQLk5FVC1Db3JlCgojIyBJbnRyb2R1Y3Rpb24KClRhc2sgTWFuYWdlbWVudCBBUEkgd2l0aCBBU1AuTkVUIENvcmUgaXMgYSByb2J1c3QgYmFja2VuZCBzeXN0ZW0gZGVzaWduZWQgZm9yIG1hbmFnaW5nIHVzZXIgdGFza3MgdGhyb3VnaCBBUEkgZW5kcG9pbnRzLiBUaGlzIEFQSSBmYWNpbGl0YXRlcyB0aGUgY3JlYXRpb24sIHJldHJpZXZhbCwgdXBkYXRpbmcsIGFuZCBkZWxldGlvbiBvZiB0YXNrcywgcHJvdmlkaW5nIGEgY29tcHJlaGVuc2l2ZSBzb2x1dGlvbiBmb3IgdGFzay1yZWxhdGVkIGZ1bmN0aW9uYWxpdGllcy4KCiMjIFRlY2hub2xvZ3kgU3RhY2sKCi0gQVNQLk5FVCBDb3JlCi0gQyMKLSBFbnRpdHkgRnJhbWV3b3JrIENvcmUKLSBTd2FnZ2VyIChmb3IgQVBJIGRvY3VtZW50YXRpb24pCgojIyBGZWF0dXJlcwoKMS4gKipHZXQgQWxsIFRhc2tzKioKICAgLSAqKkVuZHBvaW50OioqIGBHRVQgL2FwaS92MS9Vc2VyVGFza3MvZ2V0LWFsbC10YXNrYAogICAtICoqRGVzY3JpcHRpb246KiogUmV0cmlldmUgYSBsaXN0IG9mIGFsbCB0YXNrcy4KCjIuICoqR2V0IFRhc2sgYnkgSUQqKgogICAtICoqRW5kcG9pbnQ6KiogYFBPU1QgL2FwaS92MS9Vc2VyVGFza3MvZ2V0LXRhc2stYnktaWRgCiAgIC0gKipEZXNjcmlwdGlvbjoqKiBSZXRyaWV2ZSBhIHRhc2sgYnkgaXRzIElELgogICAtICoqUmVxdWVzdCBCb2R5OioqIGBHZXRUYXNrRHRvYCBjb250YWluaW5nIHRoZSB0YXNrIElELgoKMy4gKipVcGRhdGUgVGFzayoqCiAgIC0gKipFbmRwb2ludDoqKiBgUEFUQ0ggL2FwaS92MS9Vc2VyVGFza3MvdXBkYXRlLXRhc2tgCiAgIC0gKipEZXNjcmlwdGlvbjoqKiBVcGRhdGUgYW4gZXhpc3RpbmcgdGFzay4KICAgLSAqKlJlcXVlc3QgQm9keToqKiBgVXNlclRhc2tgIHJlcHJlc2VudGluZyB0aGUgdXBkYXRlZCB0YXNrLgoKNC4gKipDcmVhdGUgVGFzayoqCiAgIC0gKipFbmRwb2ludDoqKiBgUE9TVCAvYXBpL3YxL1VzZXJUYXNrcy9jcmVhdGUtdGFza2AKICAgLSAqKkRlc2NyaXB0aW9uOioqIENyZWF0ZSBhIG5ldyB0YXNrLgogICAtICoqUmVxdWVzdCBCb2R5OioqIGBVc2VyVGFza2AgcmVwcmVzZW50aW5nIHRoZSBuZXcgdGFzay4KCjUuICoqRGVsZXRlIFRhc2sgYnkgSUQqKgogICAtICoqRW5kcG9pbnQ6KiogYERFTEVURSAvYXBpL3YxL1VzZXJUYXNrcy9kZWxldGUtdGFzay1ieS1pZGAKICAgLSAqKkRlc2NyaXB0aW9uOioqIERlbGV0ZSBhIHRhc2sgYnkgaXRzIElELgogICAtICoqUmVxdWVzdCBCb2R5OioqIGBEZWxldGVUYXNrUmVxdWVzdER0b2AgY29udGFpbmluZyB0aGUgdGFzayBJRC4KCiMjIEhvdyB0byBSdW4gdGhlIFByb2plY3QKCjEuICoqQ2xvbmUgdGhlIFByb2plY3Q6KioKICAgYGBgYmFzaAogICBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3lvdXJ1c2VybmFtZS90YXNrLW1hbmFnZW1lbnQtYXBpLWRvdG5ldC5naXQKICAgYGBgCgoyLiAqKkluc3RhbGwgRGVwZW5kZW5jaWVzOioqCiAgIGBgYGJhc2gKICAgZG90bmV0IHJlc3RvcmUKICAgYGBgCgozLiAqKlJ1biB0aGUgQVBJOioqCiAgIGBgYGJhc2gKICAgZG90bmV0IHJ1bgogICBgYGAKCjQuICoqQWNjZXNzIFN3YWdnZXIgRG9jdW1lbnRhdGlvbjoqKgogICBPcGVuIHlvdXIgYnJvd3NlciBhbmQgbmF2aWdhdGUgdG8gYGh0dHBzOi8vbG9jYWxob3N0OjUwMDEvc3dhZ2dlci9pbmRleC5odG1sYCB0byBleHBsb3JlIHRoZSBBUEkgZW5kcG9pbnRzIGFuZCB0ZXN0IHRoZW0gaW50ZXJhY3RpdmVseS4KCiMjIENvbmNsdXNpb24KClRoZSBUYXNrIE1hbmFnZW1lbnQgQVBJIHdpdGggQVNQLk5FVCBDb3JlIHByb3ZpZGVzIGEgc29saWQgZm91bmRhdGlvbiBmb3IgaGFuZGxpbmcgdGFzay1yZWxhdGVkIG9wZXJhdGlvbnMgaW4gYSBzY2FsYWJsZSBhbmQgZWZmaWNpZW50IG1hbm5lci4gSXQgbGV2ZXJhZ2VzIHRoZSBwb3dlciBvZiBBU1AuTkVUIENvcmUsIEMjLCBhbmQgRW50aXR5IEZyYW1ld29yayBDb3JlIHRvIGRlbGl2ZXIgYSByZWxpYWJsZSBiYWNrZW5kIHNvbHV0aW9uIGZvciB0YXNrIG1hbmFnZW1lbnQuCgpGZWVsIGZyZWUgdG8gZXhwbG9yZSB0aGUgQVBJLCBydW4gdGVzdHMsIGFuZCBpbnRlZ3JhdGUgaXQgaW50byB5b3VyIGFwcGxpY2F0aW9ucy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgYXNzaXN0YW5jZSwgcGxlYXNlIGNvbnRhY3QgbWUuCg== readmeEtag: '"c3cd0275d8ccc084b397c69bfe49eaaed65c6dc9"' readmeLastModified: Wed, 20 Dec 2023 17:00:15 GMT repositoryId: 733833893 description: >- Revolutionize task management with our ASP.NET Core API. Create, update, and delete tasks effortlessly using C#, Entity Framework Core, and Swagger. Elevate your daily note taking efficiency. created: '2023-12-20T08:30:16Z' updated: '2026-01-05T20:40:32Z' language: C# archived: false stars: 3 watchers: 1 forks: 0 owner: zafir100100 logo: https://avatars.githubusercontent.com/u/55599023?v=4 repoEtag: '"6a3ba19e8f43edef44c1a186f700b69ec9a3318a1c1ee8fd5b02beb80eea8dc4"' repoLastModified: Mon, 05 Jan 2026 20:40:32 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/dwellics/seljmov-aspnet-common v3: true id: b54d15b8d400b825c9b905af95f9f9a7 repositoryMetadata: base64Readme: IyBzZWxqbW92LWFzcG5ldC1jb21tb24= readmeEtag: '"8da36041f28d5cba16159f29a3e19e5d6f00eecd"' readmeLastModified: Wed, 10 Jul 2024 05:26:01 GMT repositoryId: 594170774 description: .NET Core hosting infrastructure for web apps. created: '2023-01-27T19:09:08Z' updated: '2025-03-16T11:54:43Z' language: C# archived: false stars: 1 watchers: 1 forks: 0 owner: dwellics logo: https://avatars.githubusercontent.com/u/190166700?v=4 repoEtag: '"64674d834b9237f85a34357e76f6252038c59657fbe0165ffb68220d985e0668"' repoLastModified: Sun, 16 Mar 2025 11:54:43 GMT category: Server foundInMaster: true oldLocations: - https://github.com/smartdwell/seljmov-aspnet-common - source: openapi3 tags repository: https://github.com/anfibiacreativa/contoso-services-typespec v3: true id: d67595587a50753676fac259324cc6ff repositoryMetadata: base64Readme: >- IyBjb250b3NvLXNlcnZpY2VzLXR5cGVzcGVjClR5cGVTcGVjIGdlbmVyYXRlZCBzZXJ2aWNlcwoKVGhpcyByZXBvIHVzZXMgaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL3R5cGVzcGVjLwoKClRvIGNyZWF0ZSB5b3VyIG93biBwcm9qZWN0LCBmb2xsb3cgdGhlc2Ugc3RlcHMuIChZb3UgbXVzdCBtYWtlIHN1cmUgdG8gaGF2ZSBbTm9kZS5qcyAxNiBMVFNdKGh0dHBzOi8vbm9kZWpzLm9yZy9lbi9ibG9nL3JlbGVhc2UvdjE2LjE2LjApIG9yIHVwLCBpbnN0YWxsZWQgaW4geW91ciBzeXN0ZW0sIGFuZCBhdCBsZWFzdCBbbnBtXShodHRwczovL3d3dy5ucG1qcy5jb20pIHZlcnNpb24gNysuCgojIyBTdGVwIDEgLSBJbnN0YWxsIHRoZSB0c3AgY29tcGlsZXIgcnVubmluZyBpbiB5b3VyIHRlcm1pbmFsCgpgYGAKJCBucG0gaW5zdGFsbCAtZyBAdHlwZXNwZWMvY29tcGlsZXIKYGBgCgojIyBTdGVwIDIgLSBDcmVhdGUgYSBkaXJlY3RvcnkgYW5kIGluaXRpYWxpemUgdHNwCgpgYGAKJCBta2RpciBteS10c3AtcHJvamVjdCAmJiBjZCBteS10c3AtcHJvamVjdCAmJiB0c3AgaW5pdApgYGAKV2hlbiBwcm9tcHRlZCwgc2VsZWN0IHRoZSBgR2VuZXJpYyBSZXN0IEFQSWAgdGVtcGxhdGUsIHlvdXIgcHJvamVjdCBuYW1lIGFuZCB0aGUgYEB0eXBlc3BlYy9vcGVuYXBpM2AgbGlicmFyeS4KCiMjIFN0ZXAgMyAtIEluc3RhbGwgdGhlIHRzcCBkZXBlbmRlbmNpZXMKClJ1biAKCmBgYAokIHRzcCBpbnN0YWxsCmBgYApUaGF0IHdpbGwgY3JlYXRlIGEgYmFzaWMgYHRzcGAgcHJvamVjdCBzdHJ1Y3R1cmUgdGhhdCBsb29rcyBsaWtlIHRoaXM6CgpgYGAKcGFja2FnZS5qc29uICAgICAjIFBhY2thZ2UgbWFuaWZlc3QgZGVmaW5pbmcgeW91ciB0eXBlc3BlYyBwcm9qZWN0IGFzIGEgbm9kZSBwYWNrYWdlLgp0c3Bjb25maWcueWFtbCAgICMgVHlwZVNwZWMgcHJvamVjdCBjb25maWd1cmF0aW9uIGxldHRpbmcgeW91IGNvbmZpZ3VyZSBlbWl0dGVycywgZW1pdHRlciBvcHRpb25zLCBjb21waWxlciBvcHRpb25zLCBldGMuCm1haW4udHNwICAgICAgICAgIyBUeXBlU3BlYyBlbnRyeXBvaW50LgpgYGAKRWRpdCB0aGUgYG1haW4udHNwYCBmaWxlIGFzIG5lY2Vzc2FyeSBmb3IgeW91ciBkZWZpbml0aW9uLgoKYGBgCiQgdHNwIGZvcm1hdCAqKi8qLnRzcCAjIHRoaXMgd2lsbCBmb3JtYXQgYWxsIC50c3AgZmlsZXMgaW4gdGhlIHByb2plY3QKYGBgCgpOb3cgeW91IGNhbiBjb21waWxlIHRoZSBwcm9qZWN0IHJ1bm5pbmcKCmBgYAokIHRzcCBjb21waWxlIC4KYGBgCgooaWYgeW91J3JlIGluIGEgZGlmZmVyZW50IGZvbGRlciB0aGFuIHRoZSBwcm9qZWN0IHJvb3QsIHBhc3MgdGhlIHBhdGggdG8gdGhlIGNvbXBpbGUgY29tbWFuZCkKCiMjIEVtaXQgdGhlIE9wZW5BUEkgc3BlYyBgeWFtbGAgZmlsZQoKVG8gZW1pdCB0aGUgc3BlY2lmaWNhdGlvbiBmaWxlLCBydW4KCmBgYAokIHRzcCBjb21waWxlIC4gLS1lbWl0PUB0eXBlc3BlYy9vcGVuYXBpMwpgYGAKCllvdSBzaG91bGQgaGF2ZSBhIG5ldyBmb2xkZXIgY2FsbGVkIGB0c3Atb3V0cHV0YCBieSBkZWZhdWx0LCB3aXRoIHlvdXIgc3BlYy4KCllvdSdyZSBhbGwgc2V0ISDwn5qACgoK readmeEtag: '"b8bb7f38b10f0ddaf554079ec3e124bb7afa5d6a"' readmeLastModified: Thu, 21 Sep 2023 11:10:13 GMT repositoryId: 688109520 description: >- Example of TypeSpec code to generate Contoso Real Estate API specification. created: '2023-09-06T17:08:34Z' updated: '2025-10-06T09:42:22Z' language: null archived: false stars: 1 watchers: 1 forks: 1 owner: anfibiacreativa logo: https://avatars.githubusercontent.com/u/4014025?v=4 repoEtag: '"b7144849bc393231e5cb3c9cae901c080294f930c943a4456512a0aab3bd6632"' repoLastModified: Mon, 06 Oct 2025 09:42:22 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/v3rmine/legifrance-api-swagger v3: true repositoryMetadata: base64Readme: >- IyBsZWdpZnJhbmNlLWFwaS1zd2FnZ2VyCgpTcMOpY2lmaWNhdGlvbnMgKE9wZW5BUEkgMy4wLjEpIGRlIGwnW0FQSSBCZXRhIDAuMy4xIGRlIEzDqWdpZnJhbmNlXShodHRwczovL2FwaS5nb3V2LmZyL2xlcy1hcGkvRElMQV9hcGlfTGVnaWZyYW5jZSkuCgpBY2Nlc3NpYmxlIGdyw6JjZSDDoCBbUmVkb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jKSBpY2kgOiBbbGVnaWZyYW5jZS5yZXRhLnJlXShodHRwczovL2xlZ2lmcmFuY2UucmV0YS5yZS8pCg== readmeEtag: '"546a5a17b5d6d962e8f8a01ffe35d359c5165520"' readmeLastModified: Fri, 19 Feb 2021 13:46:06 GMT repositoryId: 277805259 description: DILA - Légifrance Beta == OpenAPI 3.0.1 created: '2020-07-07T12:04:50Z' updated: '2024-12-31T13:54:30Z' language: HTML archived: false stars: 1 watchers: 1 forks: 0 owner: v3rmine logo: https://avatars.githubusercontent.com/u/11839373?v=4 repoEtag: '"eed123c67942e46e517f4883d60846b0021718256e5c3f7c47e84992471b3be6"' repoLastModified: Tue, 31 Dec 2024 13:54:30 GMT foundInMaster: true category: Code Generators id: 50fac8b036c677a3628ed680ccdcfb1c oldLocations: - https://github.com/joxcat/legifrance-api-swagger - source: openapi3 tags repository: https://github.com/newpointe/churchonline-api-docs v3: true repositoryMetadata: base64Readme: >- IyBDaHVyY2ggT25saW5lIFBsYXRmb3JtIEFQSSBEb2NzClVub2ZmaWNpYWwgQVBJIGRvY3MgZm9yIENodXJjaCBPbmxpbmUgUGxhdGZvcm0gc2l0ZXMuCgpXcml0dGVuIHVzaW5nIHRoZSBbT3BlbkFQSV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9hYm91dC8pIHNwZWNpZmljYXRpb24gYW5kIHByZXNlbnRlZCB1c2luZyBbU3dhZ2dlciBVSV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3N3YWdnZXItdWkvKS4KCiMjIFNlZSBpdCBpbiBhY3Rpb24gaGVyZTogaHR0cHM6Ly9uZXdwb2ludGUuZ2l0aHViLmlvL2NodXJjaG9ubGluZS1hcGktZG9jcwo= readmeEtag: '"b93da7d6a2b0e8beeaeacc5e7f72e1e5c512f8c2"' readmeLastModified: Thu, 17 Jan 2019 19:01:25 GMT repositoryId: 166279406 description: Swagger/OpenAPI docs for Church Online Platform sites created: '2019-01-17T18:57:18Z' updated: '2019-08-15T23:41:09Z' language: HTML archived: false stars: 1 watchers: 2 forks: 0 owner: NewPointe logo: https://avatars.githubusercontent.com/u/3997357?v=4 repoEtag: '"e2b313ba329e89e975642ec76f734ecc1326a7126471e087ddfa8b9f7c0151cf"' repoLastModified: Thu, 15 Aug 2019 23:41:09 GMT foundInMaster: true category: - Server - Server Implementations id: 050509852b4d1e8549e9f5a8dccd2288 - source: openapi3 tags repository: https://github.com/talentplatforms/dry_open_api v3: true repositoryMetadata: base64Readme: >- YGRyeV9vcGVuX2FwaWAKClByb3ZpZGluZyBhIFtkcnldKGh0dHBzOi8vZHJ5LXJiLm9yZy8pIHZlcnNpb24gb2YgdGhlIFtvcGVuX2FwaSBnZW1dKGh0dHBzOi8vZ2l0aHViLmNvbS9uZ3RrL29wZW5fYXBpKS4KIyMgSW5zdGFsbGF0aW9uCgpBZGQgdGhpcyBsaW5lIHRvIHlvdXIgYXBwbGljYXRpb24ncyBHZW1maWxlOgoKYGBgcnVieQpnZW0gJ2RyeV9vcGVuX2FwaScKYGBgCgpBbmQgdGhlbiBleGVjdXRlOgoKICAgICQgYnVuZGxlCgpPciBpbnN0YWxsIGl0IHlvdXJzZWxmIGFzOgoKICAgICQgZ2VtIGluc3RhbGwgZHJ5X29wZW5fYXBpCgojIyBVc2FnZQpJdCBoYXMgdHdvIHVzZSBjYXNlOgoKMS4gU2VyaWFsaXppbmcgZnJvbSBQT1JPIHRvIHlhbWwKMi4gRGVzZXJpYWxpemluZyB5YW1sIHRvIFBPUk8KCiMjIyBTZXJpYWxpemluZwoKYGBgcmIKc3BlYyA9IERyeU9wZW5BcGk6OlNwZWNpZmljYXRpb24ubmV3KAogIG9wZW5hcGk6ICIzLjAuMSIsCiAgaW5mbzogRHJ5T3BlbkFwaTo6SW5mby5uZXcoCiAgICB0aXRsZTogIkF3ZXNvbWUgQVBJIiwKICAgIGRlc2NyaXB0aW9uOiAiSXQgcHJvdmlkZXMgc29tZXRoaW5nIGF3ZXNvbWUiLAogICAgdmVyc2lvbjogIjEuMC4wIiwKICApLAogIHBhdGhzOiBEcnlPcGVuQXBpOjpQYXRocy5uZXcoCiAgICAiL3BldHMiOiBEcnlPcGVuQXBpOjpQYXRoSXRlbS5uZXcoCiAgICAgIGdldDogRHJ5T3BlbkFwaTo6T3BlcmF0aW9uLm5ldygKICAgICAgICBkZXNjcmlwdGlvbjogIlJldHVybnMgYWxsIHBldHMgZnJvbSB0aGUgc3lzdGVtIHRoYXQgdGhlIHVzZXIgaGFzIGFjY2VzcyB0byIsCiAgICAgICAgcmVzcG9uc2VzOiBEcnlPcGVuQXBpOjpSZXNwb25zZXMubmV3KAogICAgICAgICAgIjIwMCI6IERyeU9wZW5BcGk6OlJlc3BvbnNlLm5ldygKICAgICAgICAgICAgZGVzY3JpcHRpb246ICJBIGxpc3Qgb2YgcGV0cy4iLAogICAgICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iOiBEcnlPcGVuQXBpOjpNZWRpYVR5cGUubmV3KAogICAgICAgICAgICAgICAgc2NoZW1hOiBEcnlPcGVuQXBpOjpTY2hlbWEubmV3KAogICAgICAgICAgICAgICAgICB0eXBlOiAiYXJyYXkiLAogICAgICAgICAgICAgICAgICBpdGVtczogRHJ5T3BlbkFwaTo6UmVmZXJlbmNlLm5ldyhyZWY6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9wZXQiKSwKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIH0KICAgICAgICAgICkKICAgICAgICApCiAgICAgICkKICAgICkKICApCikKCnlhbWwgPSBEcnlPcGVuQXBpOjpTZXJpYWxpemVyczo6WWFtbFNlcmlhbGl6ZXIuc2VyaWFsaXplKHNwZWMpCkZpbGUud3JpdGUoInNwZWMueW1sIiwgeWFtbCkKYGBgCgojIyMgRGVzZXJpYWxpemluZwoKYGBgcmIKeWFtbCA9IEZpbGUucmVhZCgic3BlYy55bWwiKQpzcGVjID0gRHJ5T3BlbkFwaTo6U2VyaWFsaXplcnM6OllhbWxTZXJpYWxpemVyLmRlc2VyaWFsaXplKHlhbWwpCmBgYAoKIyMgRGV2ZWxvcG1lbnQKCkFmdGVyIGNoZWNraW5nIG91dCB0aGUgcmVwbywgcnVuIGBiaW4vc2V0dXBgIHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzLiBUaGVuLCBydW4gYHJha2Ugc3BlY2AgdG8gcnVuIHRoZSB0ZXN0cy4gWW91IGNhbiBhbHNvIHJ1biBgYmluL2NvbnNvbGVgIGZvciBhbiBpbnRlcmFjdGl2ZSBwcm9tcHQgdGhhdCB3aWxsIGFsbG93IHlvdSB0byBleHBlcmltZW50LgoKVG8gaW5zdGFsbCB0aGlzIGdlbSBvbnRvIHlvdXIgbG9jYWwgbWFjaGluZSwgcnVuIGBidW5kbGUgZXhlYyByYWtlIGluc3RhbGxgLiBUbyByZWxlYXNlIGEgbmV3IHZlcnNpb24sIHJ1biBgYnVuZGxlIGV4ZWMgcmFrZSBidW1wOnBhdGNoYCB0byB1cGRhdGUgdGhlIHZlcnNpb24sIGFuZCB0aGVuIHJ1biBgYnVuZGxlIGV4ZWMgcmFrZSByZWxlYXNlYCwgd2hpY2ggd2lsbCBjcmVhdGUgYSBnaXQgdGFnIGZvciB0aGUgdmVyc2lvbiwgcHVzaCBnaXQgY29tbWl0cyBhbmQgdGFncywgYW5kIHB1c2ggdGhlIGAuZ2VtYCBmaWxlIHRvIFtydWJ5Z2Vtcy5vcmddKGh0dHBzOi8vcnVieWdlbXMub3JnKS4KCiMjIENvbnRyaWJ1dGluZwoKQnVnIHJlcG9ydHMgYW5kIHB1bGwgcmVxdWVzdHMgYXJlIHdlbGNvbWUgb24gR2l0SHViIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS90YWxlbnRwbGF0Zm9ybXMvZHJ5X29wZW5fYXBpLiBUaGlzIHByb2plY3QgaXMgaW50ZW5kZWQgdG8gYmUgYSBzYWZlLCB3ZWxjb21pbmcgc3BhY2UgZm9yIGNvbGxhYm9yYXRpb24sIGFuZCBjb250cmlidXRvcnMgYXJlIGV4cGVjdGVkIHRvIGFkaGVyZSB0byB0aGUgW0NvbnRyaWJ1dG9yIENvdmVuYW50XShodHRwOi8vY29udHJpYnV0b3ItY292ZW5hbnQub3JnKSBjb2RlIG9mIGNvbmR1Y3QuCgojIyBMaWNlbnNlCgpUaGUgZ2VtIGlzIGF2YWlsYWJsZSBhcyBvcGVuIHNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIFtNSVQgTGljZW5zZV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQpLgoKIyMgQ29kZSBvZiBDb25kdWN0CgpFdmVyeW9uZSBpbnRlcmFjdGluZyBpbiB0aGUgT3BlbkFwaSBwcm9qZWN04oCZcyBjb2RlYmFzZXMsIGlzc3VlIHRyYWNrZXJzLCBjaGF0IHJvb21zIGFuZCBtYWlsaW5nIGxpc3RzIGlzIGV4cGVjdGVkIHRvIGZvbGxvdyB0aGUgW2NvZGUgb2YgY29uZHVjdF0oaHR0cHM6Ly9naXRodWIuY29tL3RhbGVudHBsYXRmb3Jtcy9kcnlfb3Blbl9hcGkvYmxvYi9tYXN0ZXIvQ09ERV9PRl9DT05EVUNULm1kKS4K readmeEtag: '"82347c74c617678c45b389659ba82679ef2b544f"' readmeLastModified: Wed, 04 Mar 2020 12:24:07 GMT repositoryId: 232815290 description: Dried up PORO OpenAPI for ruby created: '2020-01-09T13:26:50Z' updated: '2022-05-10T11:13:06Z' language: Ruby archived: false stars: 1 watchers: 1 forks: 0 owner: talentplatforms logo: https://avatars.githubusercontent.com/u/55129375?v=4 license: MIT repoEtag: '"c38b9490bb3a96fae377ee40a2b5f1f141ee92a224d3f44cb9eeb0021d064747"' repoLastModified: Tue, 10 May 2022 11:13:06 GMT foundInMaster: true category: Parsers id: 801120928b2cf065cc52048077e0828f - source: openapi3 tags repository: https://github.com/godknowsiamgood/oapi3gen v3: true repositoryMetadata: base64Readme: >- IyBvYXBpM2dlbgpTaW1wbGUgT3BlbkFQSSAzIGNvZGUgZ2VuZXJhdG9yIHdpdGggemVybyBvciBtaW5pbXVtIHNlcnZlciBib2lsZXJwbGF0ZQoKIyBGZWF0dXJlcwoqIFN0cm9uZ2x5IHR5cGVkIHBhcmFtZXRlcnMgYW5kIHJlc3BvbnNlcwoqIE5vIHNlcnZlciBib2lsZXJwbGF0ZSBpZiBub3QgbmVlZGVkCiogTWluaW11bSBzZXJ2ZXIgYm9pbGVycGxhdGUgLSBqdXN0IHJvdXRlcyBhbmQgcGFyYW1ldGVyIHZhbGlkYXRpb24KKiBFYXN5IG1pZGRsZXdhcmVzIHdpdGggY3VzdG9tIGB4LW1pZGRsZXdhcmVzYCBvYmplY3QKKiBFYXN5IGVycm9yIHJlc3BvbnNlcyAtIGp1c3QgYWRkIGBjb21wb25lbnRzL3NjaGVtYXMvRXJyb3JgIG9iamVjdAoKIyBVc2FnZQpgYGAKZ28gaW5zdGFsbCBnaXRodWIuY29tL2dvZGtub3dzaWFtZ29vZC9vYXBpM2dlbkBsYXRlc3QKb2FwaTNnZW4gWy1zZXJ2ZXIgZWNob10gWy1vdXRwdXQgLi9vdXQuZ29dIHNwZWMueWFtbApgYGAKCiMgQ29kZSBnZW5lcmF0aW9uClByb2dyYW0gZ2VuZXJhdGVzIG9ubHkgb25lIGZpbGUgd2l0aCBzdHJvbmdseSB0eXBlcyBmb3IgcmVxdWVzdCBwYXJhbWV0ZXJzLCByZXF1ZXN0IGJvZGllcyBhbmQgcmVzcG9uc2VzLgpBbHNvIGl0IGdlbmVyYXRlcyBpbnRlcmZhY2UgdHlwZSBmb3IgY29udHJvbGxlciB0aGF0IHlvdSBtYXkgaW1wbGVtZW50LgoKRS5nLiBzcGVjaWZpY2F0aW9uIGxpa2UKYGBgCiAgL3BldHM6CiAgICBnZXQ6CiAgICAgIHN1bW1hcnk6IExpc3QgYWxsIHBldHMKICAgICAgb3BlcmF0aW9uSWQ6IGxpc3RQZXRzCiAgICAgIHRhZ3M6CiAgICAgICAgLSBwZXRzCiAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgLSBuYW1lOiBsaW1pdAogICAgICAgICAgaW46IHF1ZXJ5CiAgICAgICAgICBkZXNjcmlwdGlvbjogSG93IG1hbnkgaXRlbXMgdG8gcmV0dXJuIGF0IG9uZSB0aW1lIChtYXggMTAwKQogICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlCiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgICAgZm9ybWF0OiBpbnQzMgogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogQSBwYWdlZCBhcnJheSBvZiBwZXRzCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXRzIgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBkZXNjcmlwdGlvbjogdW5leHBlY3RlZCBlcnJvcgogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvRXJyb3IiCmBgYAp3aWxsIGdlbmVyYXRlIGNvZGU6CmBgYAovLyBPYmplY3RzCnR5cGUgRXJyb3JTY2hlbWEgc3RydWN0IHsKCUNvZGUgICAgaW50MzIgIGBqc29uOiJjb2RlImAKCU1lc3NhZ2Ugc3RyaW5nIGBqc29uOiJtZXNzYWdlImAKfQoKdHlwZSBQZXRTY2hlbWEgc3RydWN0IHsKCUlkICAgaW50NjQgICBganNvbjoiaWQiYAoJTmFtZSBzdHJpbmcgIGBqc29uOiJuYW1lImAKCVRhZyAgKnN0cmluZyBganNvbjoidGFnImAKfQoKdHlwZSBQZXRzU2NoZW1hIFtdUGV0U2NoZW1hCgovLyBQYXJhbWV0ZXJzCnR5cGUgTGlzdFBldHNQYXJhbXMgc3RydWN0IHsKCUxpbWl0ICppbnQzMgp9CgovLyBSZXNwb25zZQp0eXBlIExpc3RQZXRzUmVzcG9uc2Ugc3RydWN0IHsKCUNvZGUgICAgICAgIGludAoJSHR0cDIwMCAgICAgUGV0c1NjaGVtYQoJSHR0cERlZmF1bHQgKkVycm9yU2NoZW1hCn0KCi8vIENvbnRyb2xsZXIKdHlwZSBDb250cm9sbGVyIGludGVyZmFjZSB7CglMaXN0UGV0cyhwYXJhbXMgKkxpc3RQZXRzUGFyYW1zLCByZXEgKmh0dHAuUmVxdWVzdCwgcmVzIGh0dHAuUmVzcG9uc2VXcml0ZXIpIExpc3RQZXRzUmVzcG9uc2UKfQoKYGBgCgojIFNlcnZlciBib2lsZXJwbGF0ZQpJZiBuZWVkZWQgbGlicmFyeSBjYW4gZ2VuZXJhdGUgc2VydmVyIHNwZWNpZmljIGNvZGUuIEF0IHRoaXMgbW9tZW50IG9ubHkgZWNobyBmcmFtZXdvcmsgc3VwcG9ydGVkLiAgSXQgd2lsbCBpbmNsdWRlIG9ubHkgcGFyYW1ldGVycyB2YWxpZGF0aW9uLCBkZWZhdWx0cyBhbmQgcm91dGVzLgoKYG9hcGkzZ2VuIC1zZXJ2ZXIgZWNobyBzcGVjLnlhbWxgCgpgYGAKZnVuYyBCdWlsZFJvdXRlcyhlICplY2hvLkdyb3VwLCBjb250cm9sbGVyIENvbnRyb2xsZXIpIHsKCWUuR0VUKCIvcGV0cyIsIGZ1bmMoYyBlY2hvLkNvbnRleHQpIGVycm9yIHsKCQlwYXJhbWV0ZXJzIDo9ICZMaXN0UGV0c1BhcmFtc3t9CgkJaWYgZXJyIDo9IGluaXRQYXJhbWV0ZXJzKGMsIHBhcmFtZXRlcnMsIG5pbCk7IGVyciAhPSBuaWwgewoJCQlyZXR1cm4gZXJyCgkJfQoKCQlyZXNwb25zZSA6PSBjb250cm9sbGVyLkxpc3RQZXRzKHBhcmFtZXRlcnMsIGMuUmVxdWVzdCgpLCBjLlJlc3BvbnNlKCkuV3JpdGVyKQogICAgLi4uCmBgYAo= readmeEtag: '"69da7092e42f31d60542bdebd97289d907fe2594"' readmeLastModified: Thu, 09 Dec 2021 13:58:54 GMT repositoryId: 419007095 description: OpenAPI 3 code generator with zero or minimum server boilerplate created: '2021-10-19T16:33:28Z' updated: '2021-12-21T12:12:56Z' language: Go archived: false stars: 1 watchers: 0 forks: 0 owner: godknowsiamgood logo: https://avatars.githubusercontent.com/u/5710885?v=4 repoEtag: '"2b5cce321dd8f2bd7972dddfe4efd9ad44478dfb1114e6d3a9a0f7714ebaa85c"' repoLastModified: Tue, 21 Dec 2021 12:12:56 GMT foundInMaster: true category: Parsers id: ff0f2c2a5984ca8ed6346684b4530b77 - source: openapi3 tags repository: https://github.com/stackql-labs/registry.stackql.io v3: true id: c20fbd38d53ab24ed762b635f7a52806 repositoryMetadata: base64Readme: >- IyByZWdpc3RyeS5zdGFja3FsLmlvCgpUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgZG9jdW1lbnRhdGlvbiBmb3IgU3RhY2tRTCBwcm92aWRlcnMsIHdoaWNoIGlzIHB1Ymxpc2hlZCB0byBbcmVnaXN0cnkuc3RhY2txbC5pb10oaHR0cHM6Ly9yZWdpc3RyeS5zdGFja3FsLmlvKS4gIAoKWyFbTmV0bGlmeSBTdGF0dXNdKGh0dHBzOi8vYXBpLm5ldGxpZnkuY29tL2FwaS92MS9iYWRnZXMvNmQ0ZGFlNTMtNzQ1Yi00NzBlLWE5NjQtMmMwNjc2YmZlMTY1L2RlcGxveS1zdGF0dXMpXShodHRwczovL2FwcC5uZXRsaWZ5LmNvbS9zaXRlcy9yZWdpc3RyeS1zdGFja3FsLWlvL2RlcGxveXMpCgojIyBXZWJzaXRlCgpUaGlzIHdlYnNpdGUgaXMgYnVpbHQgdXNpbmcgW0RvY3VzYXVydXMgMl0oaHR0cHM6Ly9kb2N1c2F1cnVzLmlvLyksIGEgbW9kZXJuIHN0YXRpYyB3ZWJzaXRlIGdlbmVyYXRvci4KCiMjIyBJbnN0YWxsYXRpb24KCmBgYGJhc2gKeWFybgpgYGAKCiMjIyBMb2NhbCBEZXZlbG9wbWVudAoKYGBgYmFzaAp5YXJuIHN0YXJ0CmBgYAoKVGhpcyBjb21tYW5kIHN0YXJ0cyBhIGxvY2FsIGRldmVsb3BtZW50IHNlcnZlciBhbmQgb3BlbnMgdXAgYSBicm93c2VyIHdpbmRvdy4gTW9zdCBjaGFuZ2VzIGFyZSByZWZsZWN0ZWQgbGl2ZSB3aXRob3V0IGhhdmluZyB0byByZXN0YXJ0IHRoZSBzZXJ2ZXIuCgojIyMgQnVpbGQKCmBgYGJhc2gKeWFybiBidWlsZApgYGAKClRoaXMgY29tbWFuZCBnZW5lcmF0ZXMgc3RhdGljIGNvbnRlbnQgaW50byB0aGUgYGJ1aWxkYCBkaXJlY3RvcnkgYW5kIGNhbiBiZSBzZXJ2ZWQgdXNpbmcgYW55IHN0YXRpYyBjb250ZW50cyBob3N0aW5nIHNlcnZpY2UuCgojIyMgRGVwbG95bWVudAoKYGBgYmFzaApHSVRfVVNFUj08WW91ciBHaXRIdWIgdXNlcm5hbWU+IFVTRV9TU0g9dHJ1ZSB5YXJuIGRlcGxveQpgYGAKCklmIHlvdSBhcmUgdXNpbmcgR2l0SHViIHBhZ2VzIGZvciBob3N0aW5nLCB0aGlzIGNvbW1hbmQgaXMgYSBjb252ZW5pZW50IHdheSB0byBidWlsZCB0aGUgd2Vic2l0ZSBhbmQgcHVzaCB0byB0aGUgYGdoLXBhZ2VzYCBicmFuY2guCg== readmeEtag: '"fd8aa2807c119ce0306a0d2992b67533567a3280"' readmeLastModified: Tue, 27 Sep 2022 05:47:35 GMT repositoryId: 504338261 description: REPLACED BY https://github.com/stackql/stackql-registry-docs created: '2022-06-16T23:52:36Z' updated: '2025-12-25T23:06:26Z' language: CSS archived: true stars: 1 watchers: 1 forks: 1 owner: stackql-labs logo: https://avatars.githubusercontent.com/u/251279874?v=4 repoEtag: '"da8ac9d098667c863b861548773cf72589755cba246bec7aab94c78f55d5ce9b"' repoLastModified: Thu, 25 Dec 2025 23:06:26 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/stackql/registry.stackql.io - source: openapi3 tags repository: https://github.com/tanmaykm/openapiclient.jl v3: true id: 545ca30b5ff061cb9e365cffcdcce408 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJQ2xpZW50CgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS90YW5tYXlrbS9PcGVuQVBJQ2xpZW50LmpsL3dvcmtmbG93cy9DSS9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vdGFubWF5a20vT3BlbkFQSUNsaWVudC5qbC9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBQ0krYnJhbmNoJTNBbWFzdGVyKQpbIVtjb2RlY292LmlvXShodHRwOi8vY29kZWNvdi5pby9naXRodWIvdGFubWF5a20vT3BlbkFQSUNsaWVudC5qbC9jb3ZlcmFnZS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHA6Ly9jb2RlY292LmlvL2dpdGh1Yi90YW5tYXlrbS9PcGVuQVBJQ2xpZW50LmpsP2JyYW5jaD1tYXN0ZXIpCgpUaGlzIGlzIHRoZSBKdWxpYSBsaWJyYXJ5IG5lZWRlZCB3aXRoIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBbT3BlbkFQSSBnZW5lcmF0b3JdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC8pLgoKVGhlIGdvYWwgb2YgT3BlbkFQSUNsaWVudCBpcyB0byBkZWZpbmUgYSBzdGFuZGFyZCwgbGFuZ3VhZ2UtYWdub3N0aWMgaW50ZXJmYWNlIHRvIFJFU1QgQVBJcyB3aGljaCBhbGxvd3MgYm90aCBodW1hbnMgYW5kIGNvbXB1dGVycyB0byBkaXNjb3ZlciBhbmQgdW5kZXJzdGFuZCB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBzZXJ2aWNlIHdpdGhvdXQgYWNjZXNzIHRvIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uLCBvciB0aHJvdWdoIG5ldHdvcmsgdHJhZmZpYyBpbnNwZWN0aW9uLiBXaGVuIHByb3Blcmx5IGRlZmluZWQgdmlhIE9wZW5BUEksIGEgY29uc3VtZXIgY2FuIHVuZGVyc3RhbmQgYW5kIGludGVyYWN0IHdpdGggdGhlIHJlbW90ZSBzZXJ2aWNlIHdpdGggYSBtaW5pbWFsIGFtb3VudCBvZiBpbXBsZW1lbnRhdGlvbiBsb2dpYy4gU2ltaWxhciB0byB3aGF0IGludGVyZmFjZXMgaGF2ZSBkb25lIGZvciBsb3dlci1sZXZlbCBwcm9ncmFtbWluZywgT3BlbkFQSSByZW1vdmVzIHRoZSBndWVzc3dvcmsgaW4gY2FsbGluZyB0aGUgc2VydmljZS4KCkNoZWNrIG91dCBbT3BlbkFQSS1TcGVjXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIE9wZW5BUEkgcHJvamVjdCwgaW5jbHVkaW5nIGFkZGl0aW9uYWwgbGlicmFyaWVzIHdpdGggc3VwcG9ydCBmb3Igb3RoZXIgbGFuZ3VhZ2VzIGFuZCBtb3JlLgoKIyMgSG93IGRvIEkgdXNlIHRoaXM/CgojIyMgQ29kZSBHZW5lcmF0aW9uCgpVc2UgW2luc3RydWN0aW9uc10oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2RvY3MvZ2VuZXJhdG9ycykgcHJvdmlkZWQgZm9yIHRoZSBKdWxpYSBPcGVuQVBJIGNvZGUgZ2VuZXJhdG9yIHBsdWdpbiB0byBnZW5lcmF0ZSBKdWxpYSBjb2RlLgoKIyMgR2VuZXJhdGVkIENvZGUgU3RydWN0dXJlCgojIyMgQVBJcwoKRWFjaCBBUEkgc2V0IGlzIGdlbmVyYXRlZCBpbnRvIGEgZmlsZSBuYW1lZCBgYXBpXzxhcGluYW1lPi5qbGAuIEl0IGlzIHJlcHJlc2VudGVkIGFzIGEgYHN0cnVjdGAgYW5kIHRoZSBBUElzIHVuZGVyIGl0IGFyZSBnZW5lcmF0ZWQgYXMgbWV0aG9kcy4gQW4gQVBJIHNldCBjYW4gYmUgY29uc3RydWN0ZWQgYnkgcHJvdmlkaW5nIHRoZSBPcGVuQVBJIGNsaWVudCBpbnN0YW5jZSB0aGF0IGl0IGNhbiB1c2UgZm9yIGNvbW11bmljYXRpb24uCgpUaGUgcmVxdWlyZWQgQVBJIHBhcmFtZXRlcnMgYXJlIGdlbmVyYXRlZCBhcyByZWd1bGFyIGZ1bmN0aW9uIGFyZ3VtZW50cy4gT3B0aW9uYWwgcGFyYW1ldGVycyBhcmUgZ2VuZXJhdGVkIGFzIGtleXdvcmQgYXJndW1lbnRzLiBNZXRob2QgZG9jdW1lbnRhdGlvbiBpcyBnZW5lcmF0ZWQgd2l0aCBkZXNjcmlwdGlvbiwgcGFyYW1ldGVyIGluZm9ybWF0aW9uIGFuZCByZXR1cm4gdmFsdWUuIFR3byB2YXJpYW50cyBvZiB0aGUgQVBJIGFyZSBnZW5lcmF0ZWQuIFRoZSBmaXJzdCB2YXJpYW50IGlzIHN1aXRhYmxlIGZvciBjYWxsaW5nIHN5bmNocm9ub3VzbHkgYW5kIHJldHVybnMgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgdGhlIHJlc3VsdCBzdHJ1Y3QuCgpgYGBqdWxpYQojIGV4YW1wbGUgc3luY2hyb25vdXMgQVBJIHRoYXQgcmV0dXJucyBhbiBPcmRlciBpbnN0YW5jZQpnZXRPcmRlckJ5SWQoYXBpOjpTdG9yZUFwaSwgb3JkZXJJZDo6SW50NjQpCmBgYAoKVGhlIHNlY29uZCB2YXJpYW50IGlzIHN1aXRhYmxlIGZvciBhc3luY2hyb25vdXMgY2FsbHMgdG8gbWV0aG9kcyB0aGF0IHJldHVybiBjaHVua2VkIHRyYW5zZmVyIGVuY29kZWQgcmVzcG9uc2VzLCB3aGVyZSBpbiB0aGUgQVBJIHN0cmVhbXMgdGhlIHJlc3BvbnNlIG9iamVjdHMgaW50byBhbiBvdXRwdXQgY2hhbm5lbC4KCmBgYGp1bGlhCiMgZXhhbXBsZSBhc3luY2hyb25vdXMgQVBJIHRoYXQgc3RyZWFtcyBtYXRjaGluZyBQZXQgaW5zdGFuY2VzIGludG8gcmVzcG9uc2Vfc3RyZWFtCmZpbmRQZXRzQnlTdGF0dXMoYXBpOjpQZXRBcGksIHJlc3BvbnNlX3N0cmVhbTo6Q2hhbm5lbCwgc3RhdHVzOjpWZWN0b3J7U3RyaW5nfSkKYGBgCgpBIGNsaWVudCBjb250ZXh0IGhvbGRzIGNvbW1vbiBpbmZvcm1hdGlvbiB0byBiZSB1c2VkIGFjcm9zcyBBUElzLiBJdCBhbHNvIGhvbGRzIGEgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGFuZCB1c2VzIHRoYXQgYWNyb3NzIEFQSSBjYWxscy4KVGhlIGNsaWVudCBjb250ZXh0IG5lZWRzIHRvIGJlIHBhc3NlZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIGFsbCBBUEkgY2FsbHMuIEl0IGNhbiBiZSBjcmVhdGVkIGFzOgoKYGBganVsaWEKQ2xpZW50KHJvb3Q6OlN0cmluZzsKICAgIGhlYWRlcnM6OkRpY3R7U3RyaW5nLFN0cmluZ309RGljdHtTdHJpbmcsU3RyaW5nfSgpLAogICAgZ2V0X3JldHVybl90eXBlOjpGdW5jdGlvbj0oZGVmYXVsdCxkYXRhKS0+ZGVmYXVsdCwKICAgIHRpbWVvdXQ6OkludD1ERUZBVUxUX1RJTUVPVVRfU0VDUywKICAgIGxvbmdfcG9sbGluZ190aW1lb3V0OjpJbnQ9REVGQVVMVF9MT05HUE9MTF9USU1FT1VUX1NFQ1MsCiAgICBwcmVfcmVxdWVzdF9ob29rOjpGdW5jdGlvbiwKKQpgYGAKCldoZXJlOgoKLSBgcm9vdGA6IHRoZSByb290IFVSSSB3aGVyZSBBUElzIGFyZSBob3N0ZWQgKHNob3VsZCBub3QgZW5kIHdpdGggYSBgL2ApCi0gYGhlYWRlcnNgOiBhbnkgYWRkaXRpb25hbCBoZWFkZXJzIHRoYXQgbmVlZCB0byBiZSBwYXNzZWQgYWxvbmcgd2l0aCBhbGwgQVBJIGNhbGxzCi0gYGdldF9yZXR1cm5fdHlwZWA6IG9wdGlvbmFsIG1ldGhvZCB0aGF0IGNhbiBtYXAgYSBKdWxpYSB0eXBlIHRvIGEgcmV0dXJuIHR5cGUgb3RoZXIgdGhhbiB3aGF0IGlzIHNwZWNpZmllZCBpbiB0aGUgQVBJIHNwZWNpZmljYXRpb24gYnkgbG9va2luZyBhdCB0aGUgZGF0YSAodGhpcyBpcyB1c2VkIG9ubHkgaW4gc3BlY2lhbCBjYXNlcywgZm9yIGV4YW1wbGUgd2hlbiBtb2RlbHMgYXJlIGFsbG93ZWQgdG8gYmUgZHluYW1pY2FsbHkgbG9hZGVkKQotIGB0aW1lb3V0YDogb3B0aW9uYWwgdGltZW91dCB0byBhcHBseSBmb3Igc2VydmVyIG1ldGhvZHMgKGRlZmF1bHQgYE9wZW5BUElDbGllbnQuREVGQVVMVF9USU1FT1VUX1NFQ1NgKQotIGBsb25nX3BvbGxpbmdfdGltZW91dGA6IG9wdGlvbmFsIHRpbWVvdXQgdG8gYXBwbHkgZm9yIGxvbmcgcG9sbGluZyBtZXRob2RzIChkZWZhdWx0IGBPcGVuQVBJQ2xpZW50LkRFRkFVTFRfTE9OR1BPTExfVElNRU9VVF9TRUNTYCkKLSBgcHJlX3JlcXVlc3RfaG9va2A6IHVzZXIgcHJvdmlkZWQgaG9vayB0byBtb2RpZnkgdGhlIHJlcXVlc3QgYmVmb3JlIGl0IGlzIHNlbnQKClRoZSBgcHJlX3JlcXVlc3RfaG9va2AgbXVzdCBwcm92aWRlIHRoZSBmb2xsb3dpbmcgdHdvIGltcGxlbWVudGF0aW9uczoKLSBgcHJlX3JlcXVlc3RfaG9vayhjdHg6Ok9wZW5BUElDbGllbnQuQ3R4KSAtPiBjdHhgCi0gYHByZV9yZXF1ZXN0X2hvb2socmVzb3VyY2VfcGF0aDo6QWJzdHJhY3RTdHJpbmcsIGJvZHk6OkFueSwgaGVhZGVyczo6RGljdHtTdHJpbmcsU3RyaW5nfSkgLT4gKHJlc291cmNlX3BhdGgsIGJvZHksIGhlYWRlcnMpYAoKSW4gY2FzZSBvZiBhbnkgZXJyb3JzIGFuIGluc3RhbmNlIG9mIGBBcGlFeGNlcHRpb25gIGlzIHRocm93bi4gSXQgaGFzIHRoZSBmb2xsb3dpbmcgZmllbGRzOgoKLSBgc3RhdHVzOjpJbnRgOiBIVFRQIHN0YXR1cyBjb2RlCi0gYHJlYXNvbjo6U3RyaW5nYDogT3B0aW9uYWwgaHVtYW4gcmVhZGFibGUgc3RyaW5nCi0gYHJlc3A6OkRvd25sb2Fkcy5SZXNwb25zZWA6IFRoZSBIVFRQIFJlc3BvbnNlIGZvciB0aGlzIGNhbGwKLSBgZXJyb3I6OlVuaW9ue05vdGhpbmcsRG93bmxvYWRzLlJlcXVlc3RFcnJvcn1gOiBUaGUgSFRUUCBlcnJvciBvbiByZXF1ZXN0IGZhaWx1cmUKCkFuIEFQSSBjYWxsIGludm9sdmVzIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gSWYgYSBwcmUgcmVxdWVzdCBob29rIGlzIHByb3ZpZGVkLCBpdCBpcyBpbnZva2VkIHdpdGggYW4gaW5zdGFuY2Ugb2YgYE9wZW5BUElDbGllbnQuQ3R4YCB0aGF0IGhhcyB0aGUgcmVxdWVzdCBhdHRyaWJ1dGVzLiBUaGUgaG9vayBtZXRob2QgaXMgZXhwZWN0ZWQgdG8gbWFrZSBhbnkgbW9kaWZpY2F0aW9ucyBpdCBuZWVkcyB0byB0aGUgcmVxdWVzdCBhdHRyaWJ1dGVzIGJlZm9yZSB0aGUgcmVxdWVzdCBpcyBwcmVwYXJlZCwgYW5kIHJldHVybiB0aGUgbW9kaWZpZWQgY29udGV4dC4KLSBUaGUgVVJMIHRvIGJlIGludm9rZWQgaXMgcHJlcGFyZWQgYnkgcmVwbGFjaW5nIHBsYWNlaG9sZGVycyBpbiB0aGUgQVBJIFVSTCB0ZW1wbGF0ZSB3aXRoIHRoZSBzdXBwbGllZCBmdW5jdGlvbiBwYXJhbWV0ZXJzLgotIElmIHRoaXMgaXMgYSBQT1NUIHJlcXVlc3QsIHNlcmlhbGl6ZSB0aGUgaW5zdGFuY2Ugb2YgYE9wZW5BUElNb2RlbGAgcHJvdmlkZWQgYXMgdGhlIGBib2R5YCBwYXJhbWV0ZXIgYXMgYSBKU09OIGRvY3VtZW50LgotIElmIGEgcHJlIHJlcXVlc3QgaG9vayBpcyBwcm92aWRlZCwgaXQgaXMgaW52b2tlZCB3aXRoIHRoZSBwcmVwYXJlZCByZXNvdXJjZSBwYXRoLCBib2R5IGFuZCByZXF1ZXN0IGhlYWRlcnMuIFRoZSBob29rIG1ldGhvZCBpcyBleHBlY3RlZCB0byBtb2RpZnkgYW5kIHJldHVybiBiYWNrIGEgdHVwbGUgb2YgcmVzb3VyY2UgcGF0aCwgYm9keSBhbmQgaGVhZGVycyB3aGljaCB3aWxsIGJlIHVzZWQgdG8gbWFrZSB0aGUgcmVxdWVzdC4KLSBNYWtlIHRoZSBIVFRQIGNhbGwgdG8gdGhlIEFQSSBlbmRwb2ludCBhbmQgY29sbGVjdCB0aGUgcmVzcG9uc2UuCi0gRGV0ZXJtaW5lIHRoZSByZXNwb25zZSB0eXBlIC8gbW9kZWwsIGludm9rZSB0aGUgb3B0aW9uYWwgdXNlciBzcGVjaWZpZWQgbWFwcGluZyBmdW5jdGlvbiBpZiBvbmUgd2FzIHByb3ZpZGVkLgotIENvbnZlcnQgKGRlc2VyaWFsaXplKSB0aGUgcmVzcG9uc2UgZGF0YSBpbnRvIHRoZSByZXR1cm4gdHlwZSBhbmQgcmV0dXJuLgotIEluIGNhc2Ugb2YgYW55IGVycm9ycywgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgYEFwaUV4Y2VwdGlvbmAKCiMjIyBNb2RlbHMKCkVhY2ggbW9kZWwgZnJvbSB0aGUgc3BlY2lmaWNhdGlvbiBpcyBnZW5lcmF0ZWQgaW50byBhIGZpbGUgbmFtZWQgYG1vZGVsXzxtb2RlbG5hbWU+LmpsYC4gSXQgaXMgcmVwcmVzZW50ZWQgYXMgYSBgbXV0YWJsZSBzdHJ1Y3RgIHRoYXQgaXMgYSBzdWJ0eXBlIG9mIHRoZSBhYnN0cmFjdCB0eXBlIGBPcGVuQVBJTW9kZWxgLiBNb2RlbHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgZGVmaW5lZDoKCi0gY29uc3RydWN0b3IgdGhhdCB0YWtlcyBrZXl3b3JkIGFyZ3VtZW50cyB0byBmaWxsIGluIHZhbHVlcyBmb3IgYWxsIG1vZGVsIHByb3BlcnRpZXMuCi0gW2Bwcm9wZXJ0eW5hbWVzYF0oaHR0cHM6Ly9kb2NzLmp1bGlhbGFuZy5vcmcvZW4vdjEvYmFzZS9iYXNlLyNCYXNlLnByb3BlcnR5bmFtZXMpCi0gW2BoYXNwcm9wZXJ0eWBdKGh0dHBzOi8vZG9jcy5qdWxpYWxhbmcub3JnL2VuL3YxL2Jhc2UvYmFzZS8jQmFzZS5oYXNwcm9wZXJ0eSkKLSBbYGdldHByb3BlcnR5YF0oaHR0cHM6Ly9kb2NzLmp1bGlhbGFuZy5vcmcvZW4vdjEvYmFzZS9iYXNlLyNCYXNlLmdldHByb3BlcnR5KQotIFtgc2V0cHJvcGVydHkhYF0oaHR0cHM6Ly9kb2NzLmp1bGlhbGFuZy5vcmcvZW4vdjEvYmFzZS9iYXNlLyNCYXNlLnNldHByb3BlcnR5ISkKCkluIGFkZGl0aW9uIHRvIHRoZXNlIHN0YW5kYXJkIEp1bGlhIG1ldGhvZHMsIHRoZXNlIGNvbnZlbmllbmNlIG1ldGhvZHMgYXJlIGFsc28gZ2VuZXJhdGVkIHRoYXQgaGVscCBpbiBjaGVja2luZyB2YWx1ZSBhdCBhIGhpZXJhcmNoaWNhbCBwYXRoIG9mIHRoZSBtb2RlbC4KCi0gYGZ1bmN0aW9uIGhhc3Byb3BlcnR5YXQobzo6VCwgcGF0aC4uLikgd2hlcmUge1Q8Ok9wZW5BUElNb2RlbH1gCi0gYGZ1bmN0aW9uIGdldHByb3BlcnR5YXQobzo6VCwgcGF0aC4uLikgd2hlcmUge1Q8Ok9wZW5BUElNb2RlbH1gCgpFLmc6CgpgYGBqdWxpYQojIGFjY2VzcyBvLmZpZWxkLnN1YmZpZWxkMS5zdWJmaWVsZDIKaWYgaGFzcHJvcGVydHlhdChvLCAiZmllbGQiLCAic3ViZmllbGQxIiwgInN1YmZpZWxkMiIpCiAgICBnZXRwcm9wZXJ0eWF0KG8sICJmaWVsZCIsICJzdWJmaWVsZDEiLCAic3ViZmllbGQyIikKZW5kCgojIGFjY2VzcyBuZXN0ZWQgYXJyYXkgZWxlbWVudHMsIGUuZy4gby5maWVsZDIuc3ViZmllbGQxWzEwXS5zdWJmaWVsZDIKaWYgaGFzcHJvcGVydHlhdChvLCAiZmllbGQiLCAic3ViZmllbGQxIiwgMTAsICJzdWJmaWVsZDIiKQogICAgZ2V0cHJvcGVydHlhdChvLCAiZmllbGQiLCAic3ViZmllbGQxIiwgMTAsICJzdWJmaWVsZDIiKQplbmQKYGBgCgojIyMgVmFsaWRhdGlvbnMKCkZvbGxvd2luZyB2YWxpZGF0aW9ucyBhcmUgaW5jb3Jwb3JhdGVkIGludG8gbW9kZWxzOgoKLSBtYXhpbXVtIHZhbHVlOiBtdXN0IGJlIGEgbnVtZXJpYyB2YWx1ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYSBzcGVjaWZpZWQgdmFsdWUKLSBtaW5pbXVtIHZhbHVlOiBtdXN0IGJlIGEgbnVtZXJpYyB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYSBzcGVjaWZpZWQgdmFsdWUKLSBtYXhpbXVtIGxlbmd0aDogbXVzdCBiZSBhIHN0cmluZyB2YWx1ZSBvZiBsZW5ndGggbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGEgc3BlY2lmaWVkIHZhbHVlCi0gbWluaW11bSBsZW5ndGg6IG11c3QgYmUgYSBzdHJpbmcgdmFsdWUgb2YgbGVuZ3RoIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBhIHNwZWNpZmllZCB2YWx1ZQotIG1heGltdW0gaXRlbSBjb3VudDogbXVzdCBiZSBhIGxpc3QgdmFsdWUgd2l0aCBudW1iZXIgb2YgaXRlbXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGEgc3BlY2lmaWVkIHZhbHVlCi0gbWluaW11bSBpdGVtIGNvdW50OiBtdXN0IGJlIGEgbGlzdCB2YWx1ZSB3aXRoIG51bWJlciBvZiBpdGVtcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYSBzcGVjaWZpZWQgdmFsdWUKLSBlbnVtOiB2YWx1ZSBtdXN0IGJlIGZyb20gYSBsaXN0IG9mIGFsbG93ZWQgdmFsdWVzCgpWYWxpZGF0aW9ucyBhcmUgaW1wb3NlZCBpbiB0aGUgY29uc3RydWN0b3IgYW5kIGBzZXRwcm9wZXJ0eSFgIG1ldGhvZHMgb2YgbW9kZWxzLgo= readmeEtag: '"ab841d35744db25a492a36c2eeb2434f2c277947"' readmeLastModified: Fri, 09 Sep 2022 04:13:57 GMT repositoryId: 521258468 description: OpenAPI helper for Julia, works with openapi-generator created: '2022-08-04T12:30:35Z' updated: '2022-09-09T06:34:48Z' language: Julia archived: false stars: 1 watchers: 1 forks: 0 owner: tanmaykm logo: https://avatars.githubusercontent.com/u/1010989?v=4 license: NOASSERTION repoEtag: '"db1c6d45f029a05d4c8ba0072f4f1236f4889b6710f0ef1f95eba5a92044ab78"' repoLastModified: Fri, 09 Sep 2022 06:34:48 GMT foundInMaster: true - source: openapi3 tags repository: https://github.com/nasrmohammad4804/reactive-programming-demo v3: true id: 6bb58bce20152c0be4fded1ee9a95a03 repositoryMetadata: base64Readme: >- IyByZWFjdGl2ZS1wcm9ncmFtbWluZy1kZW1vCmkgd2FudCB0byBjcmVhdGUgc2FtcGxlIHByb2plY3Qgd2l0aCBzcHJpbmcgd2ViZmx1eCBhbmQgZG9ja2VyaXplIGl0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiFbZG93bmxvYWRdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzc2MDM4MTQzLzE4NTc2NjE5MS1hYTM3N2QzMC1mZTk0LTRhNTYtYjhjYy0xZTVhZmViNDE0NzcuanBnKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgeW91IGNhbiBjbG9uZSBwcm9qZWN0IGFuZCBydW4gd2l0aCBkb2NrZXIgCioqMSoqLiB5b3UgbmVlZCB0byBidWlsZCBpbWFnZSBvZiBwcm9qZWN0IHdpdGggY29tbWFuZCBvZiAgKipkb2NrZXIgYnVpbGQgLXQgdXNlci1teXNxbCAuKiogIChhbmQgYWJsZSB0byBhbHRlcm5hdGl2ZSBkb2NrZXIgaW1hZ2UgaW5zdGVhZCBvZiB1c2VyLW15c3FsKQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoqKjIqKi4geW91IG5lZWQgdG8gcHVsbCBteXNxbCBpbWFnZSBmcm9tIGRvY2tlciBodWIgd2l0aCBjb21tYW5kIG9mICoqZG9ja2VyIHB1bGwgbXlzcWw6bGF0ZXN0KiogCihub3RlOiBpZiB5b3UgYWxyZWFkeSBoYXZlIGl0IGRvbnQgbmVlZCB0byBleGVjdXRlIHRoaXMgY29tbWFuZCBhbmQgZ2V0IGl0IGZyb20gbG9jYWwgKQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoqKjMqKi4gYWZ0ZXIgeW91IG5lZWQgdG8gcnVuIGNvbnRhaW5lciBvZiBteXNxbCB3aXRoIHlvdXIgb3duIHNwZWNpZmljYXRpb24gc3VjaCBhcyB1c2VybmFtZSBhbmQgcGFzc3dvcmQgYW5kIGRhdGFiYXNlIG5hbWUgd2l0aCBjb21tYW5kIG9mCioqZG9ja2VyIHJ1biAtLW5hbWUgbXlzcWwtc3RhbmRhbG9uZSAtZSBNWVNRTF9ST09UX1BBU1NXT1JEPU1vaGFtbWFkTkBzcjEzODA0ODA0IC1lIE1ZU1FMX0RBVEFCQVNFPXJlYWN0aXZlLWRlbW8gIC1lIE1ZU1FMX1BBU1NXT1JEPU1vaGFtbWFkTkBzcjEzODA0ODA0IC1kIG15c3FsKioKIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCioqNCoqLiBhbmQgYXQgdGhlIGxhc3Qgc3RhZ2UgeW91IG5lZWQgdG8gcnVuIHRoaXMgY29udGFpbmVyIGFuZCBsaW5rIHByb2plY3QgaW1hZ2Ugd2l0aCBteXNxbCBmb3IgY29tcGF0aWJpbGl0eSB0b2dldGhlciBhbmQgbWFwIG9uIGV2ZXJ5IHBvcnQgd2hpY2ggeW91IHdhbnQgb24geW91ciBsb2NhbCBtYWNoaW5lCg== readmeEtag: '"dcba8bde5bd66fbba492f9784a9f23dc493f9085"' readmeLastModified: Sat, 20 Aug 2022 21:30:46 GMT repositoryId: 527035744 description: i want to create sample project with spring webflux and dockerize it created: '2022-08-20T20:44:25Z' updated: '2022-11-18T21:53:54Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: nasrmohammad4804 logo: https://avatars.githubusercontent.com/u/76038143?v=4 license: MIT repoEtag: '"e9f406fea3ae82b03696dd481aa282beb3f5cb33bbc16ce21d7a6357e2d8fabb"' repoLastModified: Fri, 18 Nov 2022 21:53:54 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/namsor/namsor-ruby-sdk2 v3: true repositoryMetadata: base64Readme: >- IyBuYW1zb3JfY2xpZW50CgpOYW1Tb3JDbGllbnQgLSB0aGUgUnVieSBnZW0gZm9yIHRoZSBOYW1Tb3IgQVBJIHYyCgpOYW1Tb3IgQVBJIHYyIDogZW5wb2ludHMgdG8gcHJvY2VzcyBwZXJzb25hbCBuYW1lcyAoZ2VuZGVyLCBjdWx0dXJhbCBvcmlnaW4gb3IgZXRobmljaXR5KSBpbiBhbGwgYWxwaGFiZXRzIG9yIGxhbmd1YWdlcy4gVXNlIEdFVCBtZXRob2RzIGZvciBzbWFsbCB0ZXN0cywgYnV0IHByZWZlciBQT1NUIG1ldGhvZHMgZm9yIGhpZ2hlciB0aHJvdWdocHV0IChiYXRjaCBwcm9jZXNzaW5nIG9mIHVwIHRvIDEwMDAgbmFtZXMgYXQgYSB0aW1lKS4gTmVlZCBzb21ldGhpbmcgeW91IGNhbid0IGZpbmQgaGVyZT8gV2UgaGF2ZSBtYW55IG1vcmUgZmVhdHVyZXMgY29taW5nIHNvb24uIExldCB1cyBrbm93LCB3ZSdsbCBkbyBvdXIgYmVzdCB0byBhZGQgaXQhIAoKVGhpcyBTREsgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhlIFtPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKSBwcm9qZWN0OgoKLSBBUEkgdmVyc2lvbjogMi4wLjItYmV0YQotIFBhY2thZ2UgdmVyc2lvbjogMC4xLjAKLSBCdWlsZCBwYWNrYWdlOiBvcmcub3BlbmFwaXRvb2xzLmNvZGVnZW4ubGFuZ3VhZ2VzLlJ1YnlDbGllbnRDb2RlZ2VuCkZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlzaXQgW2h0dHA6Ly93d3cubmFtc29yLmNvbS9dKGh0dHA6Ly93d3cubmFtc29yLmNvbS8pCgojIyBJbnN0YWxsYXRpb24KCiMjIyBCdWlsZCBhIGdlbQoKVG8gYnVpbGQgdGhlIFJ1YnkgY29kZSBpbnRvIGEgZ2VtOgoKYGBgc2hlbGwKZ2VtIGJ1aWxkIG5hbXNvcl9jbGllbnQuZ2Vtc3BlYwpgYGAKClRoZW4gZWl0aGVyIGluc3RhbGwgdGhlIGdlbSBsb2NhbGx5OgoKYGBgc2hlbGwKZ2VtIGluc3RhbGwgLi9uYW1zb3JfY2xpZW50LTAuMS4wLmdlbQpgYGAKKGZvciBkZXZlbG9wbWVudCwgcnVuIGBnZW0gaW5zdGFsbCAtLWRldiAuL25hbXNvcl9jbGllbnQtMC4xLjAuZ2VtYCB0byBpbnN0YWxsIHRoZSBkZXZlbG9wbWVudCBkZXBlbmRlbmNpZXMpCgpvciBwdWJsaXNoIHRoZSBnZW0gdG8gYSBnZW0gaG9zdGluZyBzZXJ2aWNlLCBlLmcuIFtSdWJ5R2Vtc10oaHR0cHM6Ly9ydWJ5Z2Vtcy5vcmcvKS4KCkZpbmFsbHkgYWRkIHRoaXMgdG8gdGhlIEdlbWZpbGU6CgogICAgZ2VtICduYW1zb3JfY2xpZW50JywgJ34+IDAuMS4wJwoKIyMjIEluc3RhbGwgZnJvbSBHaXQKCklmIHRoZSBSdWJ5IGdlbSBpcyBob3N0ZWQgYXQgYSBnaXQgcmVwb3NpdG9yeTogaHR0cHM6Ly9naXRodWIuY29tL25hbXNvci9uYW1zb3ItcnVieS1zZGsyLCB0aGVuIGFkZCB0aGUgZm9sbG93aW5nIGluIHRoZSBHZW1maWxlOgoKICAgIGdlbSAnbmFtc29yX2NsaWVudCcsIDpnaXQgPT4gJ2h0dHBzOi8vZ2l0aHViLmNvbS9uYW1zb3IvbmFtc29yLXJ1Ynktc2RrMi5naXQnCgojIyMgSW5jbHVkZSB0aGUgUnVieSBjb2RlIGRpcmVjdGx5CgpJbmNsdWRlIHRoZSBSdWJ5IGNvZGUgZGlyZWN0bHkgdXNpbmcgYC1JYCBhcyBmb2xsb3dzOgoKYGBgc2hlbGwKcnVieSAtSWxpYiBzY3JpcHQucmIKYGBgCgojIyBHZXR0aW5nIFN0YXJ0ZWQKClBsZWFzZSBmb2xsb3cgdGhlIFtpbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pIHByb2NlZHVyZSBhbmQgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBjb2RlOgpgYGBydWJ5CiMgTG9hZCB0aGUgZ2VtCnJlcXVpcmUgJ25hbXNvcl9jbGllbnQnCgojIFNldHVwIGF1dGhvcml6YXRpb24KTmFtU29yQ2xpZW50LmNvbmZpZ3VyZSBkbyB8Y29uZmlnfAogICMgQ29uZmlndXJlIEFQSSBrZXkgYXV0aG9yaXphdGlvbjogYXBpX2tleQogIGNvbmZpZy5hcGlfa2V5WydYLUFQSS1LRVknXSA9ICdZT1VSIEFQSSBLRVknCiAgIyBVbmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHNldCBhIHByZWZpeCBmb3IgdGhlIEFQSSBrZXksIGUuZy4gJ0JlYXJlcicgKGRlZmF1bHRzIHRvIG5pbCkKICAjY29uZmlnLmFwaV9rZXlfcHJlZml4WydYLUFQSS1LRVknXSA9ICdCZWFyZXInCmVuZAoKYXBpX2luc3RhbmNlID0gTmFtU29yQ2xpZW50OjpBZG1pbkFwaS5uZXcKCmJlZ2luCiAgI1ByaW50IGN1cnJlbnQgQVBJIHVzYWdlLgogIHJlc3VsdCA9IGFwaV9pbnN0YW5jZS5hcGlfdXNhZ2UKICBwIHJlc3VsdApyZXNjdWUgTmFtU29yQ2xpZW50OjpBcGlFcnJvciA9PiBlCiAgcHV0cyAiRXhjZXB0aW9uIHdoZW4gY2FsbGluZyBBZG1pbkFwaS0+YXBpX3VzYWdlOiAje2V9IgplbmQKCmBgYAoKIyMgRG9jdW1lbnRhdGlvbiBmb3IgQVBJIEVuZHBvaW50cwoKQWxsIFVSSXMgYXJlIHJlbGF0aXZlIHRvICpodHRwczovL3YyLm5hbXNvci5jb20vTmFtU29yQVBJdjIqCgpDbGFzcyB8IE1ldGhvZCB8IEhUVFAgcmVxdWVzdCB8IERlc2NyaXB0aW9uCi0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLQoqTmFtU29yQ2xpZW50OjpBZG1pbkFwaSogfCBbKiphcGlfdXNhZ2UqKl0oZG9jcy9BZG1pbkFwaS5tZCNhcGlfdXNhZ2UpIHwgKipHRVQqKiAvYXBpMi9qc29uL2FwaVVzYWdlIHwgUHJpbnQgY3VycmVudCBBUEkgdXNhZ2UuCipOYW1Tb3JDbGllbnQ6OkFkbWluQXBpKiB8IFsqKmFwaV91c2FnZV9oaXN0b3J5KipdKGRvY3MvQWRtaW5BcGkubWQjYXBpX3VzYWdlX2hpc3RvcnkpIHwgKipHRVQqKiAvYXBpMi9qc29uL2FwaVVzYWdlSGlzdG9yeSB8IFByaW50IGhpc3RvcmljYWwgQVBJIHVzYWdlLgoqTmFtU29yQ2xpZW50OjpBZG1pbkFwaSogfCBbKiphcGlfdXNhZ2VfaGlzdG9yeV9hZ2dyZWdhdGUqKl0oZG9jcy9BZG1pbkFwaS5tZCNhcGlfdXNhZ2VfaGlzdG9yeV9hZ2dyZWdhdGUpIHwgKipHRVQqKiAvYXBpMi9qc29uL2FwaVVzYWdlSGlzdG9yeUFnZ3JlZ2F0ZSB8IFByaW50IGhpc3RvcmljYWwgQVBJIHVzYWdlIChpbiBhbiBhZ2dyZWdhdGVkIHZpZXcsIGJ5IHNlcnZpY2UsIGJ5IGRheS9ob3VyL21pbikuCipOYW1Tb3JDbGllbnQ6OkFkbWluQXBpKiB8IFsqKmF2YWlsYWJsZV9wbGFucyoqXShkb2NzL0FkbWluQXBpLm1kI2F2YWlsYWJsZV9wbGFucykgfCAqKkdFVCoqIC9hcGkyL2pzb24vYXZhaWxhYmxlUGxhbnMgfCBMaXN0IGFsbCBhdmFpbGFibGUgcGxhbnMgaW4gdGhlIGRlZmF1bHQgY3VycmVuY3kgKHVzZCkuCipOYW1Tb3JDbGllbnQ6OkFkbWluQXBpKiB8IFsqKmF2YWlsYWJsZV9wbGFuczEqKl0oZG9jcy9BZG1pbkFwaS5tZCNhdmFpbGFibGVfcGxhbnMxKSB8ICoqR0VUKiogL2FwaTIvanNvbi9hdmFpbGFibGVQbGFucy97dG9rZW59IHwgTGlzdCBhbGwgYXZhaWxhYmxlIHBsYW5zIGluIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGN1cnJlbmN5LgoqTmFtU29yQ2xpZW50OjpBZG1pbkFwaSogfCBbKiphdmFpbGFibGVfc2VydmljZXMqKl0oZG9jcy9BZG1pbkFwaS5tZCNhdmFpbGFibGVfc2VydmljZXMpIHwgKipHRVQqKiAvYXBpMi9qc29uL2FwaVNlcnZpY2VzIHwgTGlzdCBvZiBBUEkgc2VydmljZXMgYW5kIHVzYWdlIGNvc3QgaW4gVW5pdHMgKGRlZmF1bHQgaXMgMT1PTkUgVW5pdCkuCipOYW1Tb3JDbGllbnQ6OkFkbWluQXBpKiB8IFsqKmJpbGxpbmdfY3VycmVuY2llcyoqXShkb2NzL0FkbWluQXBpLm1kI2JpbGxpbmdfY3VycmVuY2llcykgfCAqKkdFVCoqIC9hcGkyL2pzb24vYmlsbGluZ0N1cnJlbmNpZXMgfCBMaXN0IHBvc3NpYmxlIGN1cnJlbmN5IG9wdGlvbnMgZm9yIGJpbGxpbmcgKFVTRCwgRVVSLCBHQlAsIC4uLikKKk5hbVNvckNsaWVudDo6QWRtaW5BcGkqIHwgWyoqYmlsbGluZ19oaXN0b3J5KipdKGRvY3MvQWRtaW5BcGkubWQjYmlsbGluZ19oaXN0b3J5KSB8ICoqR0VUKiogL2FwaTIvanNvbi9iaWxsaW5nSGlzdG9yeS97dG9rZW59IHwgUmVhZCB0aGUgaGlzdG9yeSBiaWxsaW5nIGluZm9ybWF0aW9uIChpbnZvaWNlcyBwYWlkIHZpYSBTdHJpcGUgb3IgbWFudWFsbHkpLgoqTmFtU29yQ2xpZW50OjpBZG1pbkFwaSogfCBbKipiaWxsaW5nX2luZm8qKl0oZG9jcy9BZG1pbkFwaS5tZCNiaWxsaW5nX2luZm8pIHwgKipHRVQqKiAvYXBpMi9qc29uL2JpbGxpbmdJbmZvL3t0b2tlbn0gfCBSZWFkIHRoZSBiaWxsaW5nIGluZm9ybWF0aW9uIChjb21wYW55IG5hbWUsIGFkZHJlc3MsIHBob25lLCB2YXQgSUQpCipOYW1Tb3JDbGllbnQ6OkFkbWluQXBpKiB8IFsqKmNoYXJnZSoqXShkb2NzL0FkbWluQXBpLm1kI2NoYXJnZSkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2NoYXJnZSB8IENyZWF0ZSBhIFN0cmlwZSBDdXN0b21lciwgYmFzZWQgb24gYSBwYXltZW50IGNhcmQgdG9rZW4gKGZyb20gc2VjdXJlIFN0cmlwZUpTKSBhbmQgZW1haWwuCipOYW1Tb3JDbGllbnQ6OkFkbWluQXBpKiB8IFsqKmNvcnBvcmF0ZV9rZXkqKl0oZG9jcy9BZG1pbkFwaS5tZCNjb3Jwb3JhdGVfa2V5KSB8ICoqR0VUKiogL2FwaTIvanNvbi9jb3Jwb3JhdGVLZXkve2FwaUtleX0ve2NvcnBvcmF0ZX0gfCBTZXR0aW5nIGFuIEFQSSBLZXkgdG8gYSBjb3Jwb3JhdGUgc3RhdHVzLgoqTmFtU29yQ2xpZW50OjpBZG1pbkFwaSogfCBbKipkZWJ1Z19sZXZlbCoqXShkb2NzL0FkbWluQXBpLm1kI2RlYnVnX2xldmVsKSB8ICoqR0VUKiogL2FwaTIvanNvbi9kZWJ1Z0xldmVsL3tsb2dnZXJ9L3tsZXZlbH0gfCBVcGRhdGUgZGVidWcgbGV2ZWwgZm9yIGEgY2xhc3NpZmllcgoqTmFtU29yQ2xpZW50OjpBZG1pbkFwaSogfCBbKippbnZhbGlkYXRlX2NhY2hlKipdKGRvY3MvQWRtaW5BcGkubWQjaW52YWxpZGF0ZV9jYWNoZSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vaW52YWxpZGF0ZUNhY2hlIHwgSW52YWxpZGF0ZSBzeXN0ZW0gY2FjaGVzLgoqTmFtU29yQ2xpZW50OjpBZG1pbkFwaSogfCBbKipsZWFybmFibGUqKl0oZG9jcy9BZG1pbkFwaS5tZCNsZWFybmFibGUpIHwgKipHRVQqKiAvYXBpMi9qc29uL2xlYXJuYWJsZS97c291cmNlfS97bGVhcm5hYmxlfSB8IEFjdGl2YXRlL2RlYWN0aXZhdGUgbGVhcm5pbmcgZnJvbSBhIHNvdXJjZS4KKk5hbVNvckNsaWVudDo6QWRtaW5BcGkqIHwgWyoqbmFtc29yX2NvdW50ZXIqKl0oZG9jcy9BZG1pbkFwaS5tZCNuYW1zb3JfY291bnRlcikgfCAqKkdFVCoqIC9hcGkyL2pzb24vbmFtc29yQ291bnRlciB8IEdldCB0aGUgb3ZlcmFsbCBBUEkgY291bnRlcgoqTmFtU29yQ2xpZW50OjpBZG1pbkFwaSogfCBbKipwYXltZW50X2luZm8qKl0oZG9jcy9BZG1pbkFwaS5tZCNwYXltZW50X2luZm8pIHwgKipHRVQqKiAvYXBpMi9qc29uL3BheW1lbnRJbmZvL3t0b2tlbn0gfCBHZXQgdGhlIFN0cmlwZSBwYXltZW50IGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBnb29nbGUgYXV0aCBzZXNzaW9uIHRva2VuLgoqTmFtU29yQ2xpZW50OjpBZG1pbkFwaSogfCBbKipwcm9jdXJlX2tleSoqXShkb2NzL0FkbWluQXBpLm1kI3Byb2N1cmVfa2V5KSB8ICoqR0VUKiogL2FwaTIvanNvbi9wcm9jdXJlS2V5L3t0b2tlbn0gfCBQcm9jdXJlIGFuIEFQSSBLZXkgKHNlbnQgdmlhIEVtYWlsKSwgYmFzZWQgb24gYW4gYXV0aCB0b2tlbi4gS2VlcCB5b3VyIEFQSSBLZXkgc2VjcmV0LgoqTmFtU29yQ2xpZW50OjpBZG1pbkFwaSogfCBbKipyZWRlcGxveV91aSoqXShkb2NzL0FkbWluQXBpLm1kI3JlZGVwbG95X3VpKSB8ICoqR0VUKiogL2FwaTIvanNvbi9yZWRlcGxveVVJIHwgUmVkZXBsb3kgVUkgZnJvbSBjdXJyZW50IGRldiBicmFuY2guCipOYW1Tb3JDbGllbnQ6OkFkbWluQXBpKiB8IFsqKnJlZGVwbG95X3VpMSoqXShkb2NzL0FkbWluQXBpLm1kI3JlZGVwbG95X3VpMSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vcmVkZXBsb3lVSS97bGl2ZX0gfCBSZWRlcGxveSBVSSBmcm9tIGN1cnJlbnQgZGV2IGJyYW5jaC4KKk5hbVNvckNsaWVudDo6QWRtaW5BcGkqIHwgWyoqcmVtb3ZlX3VzZXJfYWNjb3VudCoqXShkb2NzL0FkbWluQXBpLm1kI3JlbW92ZV91c2VyX2FjY291bnQpIHwgKipHRVQqKiAvYXBpMi9qc29uL3JlbW92ZVVzZXJBY2NvdW50L3t0b2tlbn0gfCBTdWJzY3JpYmUgdG8gYSBnaXZlIEFQSSBwbGFuLCB1c2luZyB0aGUgdXNlcidzIHByZWZlcnJlZCBvciBkZWZhdWx0IGN1cnJlbmN5LgoqTmFtU29yQ2xpZW50OjpBZG1pbkFwaSogfCBbKipzaHV0ZG93bioqXShkb2NzL0FkbWluQXBpLm1kI3NodXRkb3duKSB8ICoqR0VUKiogL2FwaTIvanNvbi9zaHV0ZG93biB8IFN0b3AgbGVhcm5pbmcgYW5kIHNodXRkb3duIHN5c3RlbS4KKk5hbVNvckNsaWVudDo6QWRtaW5BcGkqIHwgWyoqc29mdHdhcmVfdmVyc2lvbioqXShkb2NzL0FkbWluQXBpLm1kI3NvZnR3YXJlX3ZlcnNpb24pIHwgKipHRVQqKiAvYXBpMi9qc29uL3NvZnR3YXJlVmVyc2lvbiB8IEdldCB0aGUgY3VycmVudCBzb2Z0d2FyZSB2ZXJzaW9uCipOYW1Tb3JDbGllbnQ6OkFkbWluQXBpKiB8IFsqKnNvdXJjZV9zdGF0cyoqXShkb2NzL0FkbWluQXBpLm1kI3NvdXJjZV9zdGF0cykgfCAqKkdFVCoqIC9hcGkyL2pzb24vc291cmNlU3RhdHMve3NvdXJjZX0gfCBQcmludCBiYXNpYyBzb3VyY2Ugc3RhdGlzdGljcy4KKk5hbVNvckNsaWVudDo6QWRtaW5BcGkqIHwgWyoqc3RhdHMqKl0oZG9jcy9BZG1pbkFwaS5tZCNzdGF0cykgfCAqKkdFVCoqIC9hcGkyL2pzb24vc3RhdHMgfCBQcmludCBiYXNpYyBzeXN0ZW0gc3RhdGlzdGljcy4KKk5hbVNvckNsaWVudDo6QWRtaW5BcGkqIHwgWyoqc3RyaXBlX2Nvbm5lY3QqKl0oZG9jcy9BZG1pbkFwaS5tZCNzdHJpcGVfY29ubmVjdCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vc3RyaXBlQ29ubmVjdCB8IENvbm5lY3RzIGEgU3RyaXBlIEFjY291bnQuCipOYW1Tb3JDbGllbnQ6OkFkbWluQXBpKiB8IFsqKnN1YnNjcmliZV9wbGFuKipdKGRvY3MvQWRtaW5BcGkubWQjc3Vic2NyaWJlX3BsYW4pIHwgKipHRVQqKiAvYXBpMi9qc29uL3N1YnNjcmliZVBsYW4ve3BsYW5OYW1lfS97dG9rZW59IHwgU3Vic2NyaWJlIHRvIGEgZ2l2ZSBBUEkgcGxhbiwgdXNpbmcgdGhlIHVzZXIncyBwcmVmZXJyZWQgb3IgZGVmYXVsdCBjdXJyZW5jeS4KKk5hbVNvckNsaWVudDo6QWRtaW5BcGkqIHwgWyoqdXBkYXRlX2JpbGxpbmdfaW5mbyoqXShkb2NzL0FkbWluQXBpLm1kI3VwZGF0ZV9iaWxsaW5nX2luZm8pIHwgKipQT1NUKiogL2FwaTIvanNvbi91cGRhdGVCaWxsaW5nSW5mby97dG9rZW59IHwgU2V0cyBvciB1cGRhdGUgdGhlIGJpbGxpbmcgaW5mb3JtYXRpb24gKGNvbXBhbnkgbmFtZSwgYWRkcmVzcywgcGhvbmUsIHZhdCBJRCkKKk5hbVNvckNsaWVudDo6QWRtaW5BcGkqIHwgWyoqdXBkYXRlX2xpbWl0KipdKGRvY3MvQWRtaW5BcGkubWQjdXBkYXRlX2xpbWl0KSB8ICoqR0VUKiogL2FwaTIvanNvbi91cGRhdGVMaW1pdC97dXNhZ2VMaW1pdH0ve2hhcmRPclNvZnR9L3t0b2tlbn0gfCBNb2RpZmllcyB0aGUgaGFyZC9zb2Z0IGxpbWl0IG9uIHRoZSBBUEkgcGxhbidzIG92ZXJhZ2VzIChkZWZhdWx0IGlzIDAkIHNvZnQgbGltaXQpLgoqTmFtU29yQ2xpZW50OjpBZG1pbkFwaSogfCBbKip1cGRhdGVfcGF5bWVudF9kZWZhdWx0KipdKGRvY3MvQWRtaW5BcGkubWQjdXBkYXRlX3BheW1lbnRfZGVmYXVsdCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vdXBkYXRlUGF5bWVudERlZmF1bHQve2RlZmF1dFNvdXJjZUlkfS97dG9rZW59IHwgVXBkYXRlIHRoZSBkZWZhdWx0IFN0cmlwZSBjYXJkIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBnb29nbGUgYXV0aCBzZXNzaW9uIHRva2VuLgoqTmFtU29yQ2xpZW50OjpBZG1pbkFwaSogfCBbKip1c2VyX2luZm8qKl0oZG9jcy9BZG1pbkFwaS5tZCN1c2VyX2luZm8pIHwgKipHRVQqKiAvYXBpMi9qc29uL3VzZXJJbmZvL3t0b2tlbn0gfCBHZXQgdGhlIHVzZXIgcHJvZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgZ29vZ2xlIGF1dGggc2Vzc2lvbiB0b2tlbi4KKk5hbVNvckNsaWVudDo6QWRtaW5BcGkqIHwgWyoqdmVyaWZ5X2VtYWlsKipdKGRvY3MvQWRtaW5BcGkubWQjdmVyaWZ5X2VtYWlsKSB8ICoqR0VUKiogL2FwaTIvanNvbi92ZXJpZnlFbWFpbC97ZW1haWxUb2tlbn0gfCBWZXJpZmllcyBhbiBlbWFpbCwgYmFzZWQgb24gdG9rZW4gc2VudCB0byB0aGF0IGVtYWlsCipOYW1Tb3JDbGllbnQ6OkFkbWluQXBpKiB8IFsqKnZlcmlmeV9yZW1vdmVfZW1haWwqKl0oZG9jcy9BZG1pbkFwaS5tZCN2ZXJpZnlfcmVtb3ZlX2VtYWlsKSB8ICoqR0VUKiogL2FwaTIvanNvbi92ZXJpZnlSZW1vdmVFbWFpbC97ZW1haWxUb2tlbn0gfCBWZXJpZmllcyBhbiBlbWFpbCwgYmFzZWQgb24gdG9rZW4gc2VudCB0byB0aGF0IGVtYWlsCipOYW1Tb3JDbGllbnQ6OkFkbWluQXBpKiB8IFsqKnZldCoqXShkb2NzL0FkbWluQXBpLm1kI3ZldCkgfCAqKkdFVCoqIC9hcGkyL2pzb24vdmV0dGluZy97c291cmNlfS97dmV0dGVkfSB8IFZldHRpbmcgb2YgYSBzb3VyY2UuCipOYW1Tb3JDbGllbnQ6OkNoaW5lc2VBcGkqIHwgWyoqY2hpbmVzZV9uYW1lX2NhbmRpZGF0ZXMqKl0oZG9jcy9DaGluZXNlQXBpLm1kI2NoaW5lc2VfbmFtZV9jYW5kaWRhdGVzKSB8ICoqR0VUKiogL2FwaTIvanNvbi9jaGluZXNlTmFtZUNhbmRpZGF0ZXMve2NoaW5lc2VTdXJuYW1lTGF0aW59L3tjaGluZXNlR2l2ZW5OYW1lTGF0aW59IHwgSWRlbnRpZnkgQ2hpbmVzZSBuYW1lIGNhbmRpZGF0ZXMsIGJhc2VkIG9uIHRoZSByb21hbml6ZWQgbmFtZS4KKk5hbVNvckNsaWVudDo6Q2hpbmVzZUFwaSogfCBbKipjaGluZXNlX25hbWVfY2FuZGlkYXRlc19iYXRjaCoqXShkb2NzL0NoaW5lc2VBcGkubWQjY2hpbmVzZV9uYW1lX2NhbmRpZGF0ZXNfYmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9jaGluZXNlTmFtZUNhbmRpZGF0ZXNCYXRjaCB8IElkZW50aWZ5IENoaW5lc2UgbmFtZSBjYW5kaWRhdGVzLCBiYXNlZCBvbiB0aGUgcm9tYW5pemVkIG5hbWUgKGZpcnN0TmFtZSA9IGNoaW5lc2VHaXZlbk5hbWU7IGxhc3ROYW1lPWNoaW5lc2VTdXJuYW1lKS4KKk5hbVNvckNsaWVudDo6Q2hpbmVzZUFwaSogfCBbKipjaGluZXNlX25hbWVfY2FuZGlkYXRlc19nZW5kZXJfYmF0Y2gqKl0oZG9jcy9DaGluZXNlQXBpLm1kI2NoaW5lc2VfbmFtZV9jYW5kaWRhdGVzX2dlbmRlcl9iYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2NoaW5lc2VOYW1lQ2FuZGlkYXRlc0dlbmRlckJhdGNoIHwgSWRlbnRpZnkgQ2hpbmVzZSBuYW1lIGNhbmRpZGF0ZXMsIGJhc2VkIG9uIHRoZSByb21hbml6ZWQgbmFtZSAoZmlyc3ROYW1lID0gY2hpbmVzZUdpdmVuTmFtZTsgbGFzdE5hbWU9Y2hpbmVzZVN1cm5hbWUpLgoqTmFtU29yQ2xpZW50OjpDaGluZXNlQXBpKiB8IFsqKmNoaW5lc2VfbmFtZV9nZW5kZXJfY2FuZGlkYXRlcyoqXShkb2NzL0NoaW5lc2VBcGkubWQjY2hpbmVzZV9uYW1lX2dlbmRlcl9jYW5kaWRhdGVzKSB8ICoqR0VUKiogL2FwaTIvanNvbi9jaGluZXNlTmFtZUdlbmRlckNhbmRpZGF0ZXMve2NoaW5lc2VTdXJuYW1lTGF0aW59L3tjaGluZXNlR2l2ZW5OYW1lTGF0aW59L3trbm93bkdlbmRlcn0gfCBJZGVudGlmeSBDaGluZXNlIG5hbWUgY2FuZGlkYXRlcywgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIC0gaGF2aW5nIGEga25vd24gZ2VuZGVyICgnbWFsZScgb3IgJ2ZlbWFsZScpCipOYW1Tb3JDbGllbnQ6OlBlcnNvbmFsQXBpKiB8IFsqKmNvdW50cnkqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNjb3VudHJ5KSB8ICoqR0VUKiogL2FwaTIvanNvbi9jb3VudHJ5L3twZXJzb25hbE5hbWVGdWxsfSB8IFtVU0VTIDEwIFVOSVRTXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgb2YgcmVzaWRlbmNlIG9mIGEgcGVyc29uYWwgZnVsbCBuYW1lLCBvciBvbmUgc3VybmFtZS4gQXNzdW1lcyBuYW1lcyBhcyB0aGV5IGFyZSBpbiB0aGUgY291bnRyeSBvZiByZXNpZGVuY2UgT1IgdGhlIGNvdW50cnkgb2Ygb3JpZ2luLgoqTmFtU29yQ2xpZW50OjpQZXJzb25hbEFwaSogfCBbKipjb3VudHJ5X2JhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjY291bnRyeV9iYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2NvdW50cnlCYXRjaCB8IFtVU0VTIDEwIFVOSVRTXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgb2YgcmVzaWRlbmNlIG9mIHVwIHRvIDEwMDAgcGVyc29uYWwgZnVsbCBuYW1lcywgb3Igc3VybmFtZXMuIEFzc3VtZXMgbmFtZXMgYXMgdGhleSBhcmUgaW4gdGhlIGNvdW50cnkgb2YgcmVzaWRlbmNlIE9SIHRoZSBjb3VudHJ5IG9mIG9yaWdpbi4KKk5hbVNvckNsaWVudDo6UGVyc29uYWxBcGkqIHwgWyoqZGlhc3BvcmEqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNkaWFzcG9yYSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vZGlhc3BvcmEve2NvdW50cnlJc28yfS97Zmlyc3ROYW1lfS97bGFzdE5hbWV9IHwgW1VTRVMgMjAgVU5JVFNdIEluZmVyIHRoZSBsaWtlbHkgZXRobmljaXR5L2RpYXNwb3JhIG9mIGEgcGVyc29uYWwgbmFtZSwgZ2l2ZW4gYSBjb3VudHJ5IG9mIHJlc2lkZW5jZSBJU08yIGNvZGUgKGV4LiBVUywgQ0EsIEFVLCBOWiBldGMuKQoqTmFtU29yQ2xpZW50OjpQZXJzb25hbEFwaSogfCBbKipkaWFzcG9yYV9iYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2RpYXNwb3JhX2JhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vZGlhc3BvcmFCYXRjaCB8IFtVU0VTIDIwIFVOSVRTXSBJbmZlciB0aGUgbGlrZWx5IGV0aG5pY2l0eS9kaWFzcG9yYSBvZiB1cCB0byAxMDAwIHBlcnNvbmFsIG5hbWVzLCBnaXZlbiBhIGNvdW50cnkgb2YgcmVzaWRlbmNlIElTTzIgY29kZSAoZXguIFVTLCBDQSwgQVUsIE5aIGV0Yy4pCipOYW1Tb3JDbGllbnQ6OlBlcnNvbmFsQXBpKiB8IFsqKmdlbmRlcioqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2dlbmRlcikgfCAqKkdFVCoqIC9hcGkyL2pzb24vZ2VuZGVyL3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0gfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiBhIG5hbWUuCipOYW1Tb3JDbGllbnQ6OlBlcnNvbmFsQXBpKiB8IFsqKmdlbmRlcl9iYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2dlbmRlcl9iYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL2dlbmRlckJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwMCBuYW1lcywgZGV0ZWN0aW5nIGF1dG9tYXRpY2FsbHkgdGhlIGN1bHR1cmFsIGNvbnRleHQuCipOYW1Tb3JDbGllbnQ6OlBlcnNvbmFsQXBpKiB8IFsqKmdlbmRlcl9mdWxsKipdKGRvY3MvUGVyc29uYWxBcGkubWQjZ2VuZGVyX2Z1bGwpIHwgKipHRVQqKiAvYXBpMi9qc29uL2dlbmRlckZ1bGwve2Z1bGxOYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEgZnVsbCBuYW1lLCBleC4gSm9obiBILiBTbWl0aAoqTmFtU29yQ2xpZW50OjpQZXJzb25hbEFwaSogfCBbKipnZW5kZXJfZnVsbF9iYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2dlbmRlcl9mdWxsX2JhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vZ2VuZGVyRnVsbEJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwMCBmdWxsIG5hbWVzLCBkZXRlY3RpbmcgYXV0b21hdGljYWxseSB0aGUgY3VsdHVyYWwgY29udGV4dC4KKk5hbVNvckNsaWVudDo6UGVyc29uYWxBcGkqIHwgWyoqZ2VuZGVyX2Z1bGxfZ2VvKipdKGRvY3MvUGVyc29uYWxBcGkubWQjZ2VuZGVyX2Z1bGxfZ2VvKSB8ICoqR0VUKiogL2FwaTIvanNvbi9nZW5kZXJGdWxsR2VvL3tmdWxsTmFtZX0ve2NvdW50cnlJc28yfSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEgZnVsbCBuYW1lLCBnaXZlbiBhIGxvY2FsIGNvbnRleHQgKElTTzIgY291bnRyeSBjb2RlKS4KKk5hbVNvckNsaWVudDo6UGVyc29uYWxBcGkqIHwgWyoqZ2VuZGVyX2Z1bGxfZ2VvX2JhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjZ2VuZGVyX2Z1bGxfZ2VvX2JhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vZ2VuZGVyRnVsbEdlb0JhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwMCBmdWxsIG5hbWVzLCB3aXRoIGEgZ2l2ZW4gY3VsdHVyYWwgY29udGV4dCAoY291bnRyeSBJU08yIGNvZGUpLgoqTmFtU29yQ2xpZW50OjpQZXJzb25hbEFwaSogfCBbKipnZW5kZXJfZ2VvKipdKGRvY3MvUGVyc29uYWxBcGkubWQjZ2VuZGVyX2dlbykgfCAqKkdFVCoqIC9hcGkyL2pzb24vZ2VuZGVyR2VvL3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0ve2NvdW50cnlJc28yfSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEgbmFtZSwgZ2l2ZW4gYSBsb2NhbCBjb250ZXh0IChJU08yIGNvdW50cnkgY29kZSkuCipOYW1Tb3JDbGllbnQ6OlBlcnNvbmFsQXBpKiB8IFsqKmdlbmRlcl9nZW9fYmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNnZW5kZXJfZ2VvX2JhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vZ2VuZGVyR2VvQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiB1cCB0byAxMDAwIG5hbWVzLCBlYWNoIGdpdmVuIGEgbG9jYWwgY29udGV4dCAoSVNPMiBjb3VudHJ5IGNvZGUpLgoqTmFtU29yQ2xpZW50OjpQZXJzb25hbEFwaSogfCBbKipvcmlnaW4qKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNvcmlnaW4pIHwgKipHRVQqKiAvYXBpMi9qc29uL29yaWdpbi97Zmlyc3ROYW1lfS97bGFzdE5hbWV9IHwgW1VTRVMgMTAgVU5JVFNdIEluZmVyIHRoZSBsaWtlbHkgY291bnRyeSBvZiBvcmlnaW4gb2YgYSBwZXJzb25hbCBuYW1lLiBBc3N1bWVzIG5hbWVzIGFzIHRoZXkgYXJlIGluIHRoZSBjb3VudHJ5IG9mIG9yaWdpbi4gRm9yIFVTLCBDQSwgQVUsIE5aIGFuZCBvdGhlciBtZWx0aW5nLXBvdHMgOiB1c2UgJ2RpYXNwb3JhJyBpbnN0ZWFkLgoqTmFtU29yQ2xpZW50OjpQZXJzb25hbEFwaSogfCBbKipvcmlnaW5fYmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNvcmlnaW5fYmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9vcmlnaW5CYXRjaCB8IFtVU0VTIDEwIFVOSVRTXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgb2Ygb3JpZ2luIG9mIHVwIHRvIDEwMDAgbmFtZXMsIGRldGVjdGluZyBhdXRvbWF0aWNhbGx5IHRoZSBjdWx0dXJhbCBjb250ZXh0LgoqTmFtU29yQ2xpZW50OjpQZXJzb25hbEFwaSogfCBbKipwYXJzZV9uYW1lKipdKGRvY3MvUGVyc29uYWxBcGkubWQjcGFyc2VfbmFtZSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vcGFyc2VOYW1lL3tuYW1lRnVsbH0gfCBJbmZlciB0aGUgbGlrZWx5IGZpcnN0L2xhc3QgbmFtZSBzdHJ1Y3R1cmUgb2YgYSBuYW1lLCBleC4gSm9obiBTbWl0aCBvciBTTUlUSCwgSm9obiBvciBTTUlUSDsgSm9obi4gCipOYW1Tb3JDbGllbnQ6OlBlcnNvbmFsQXBpKiB8IFsqKnBhcnNlX25hbWVfYmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNwYXJzZV9uYW1lX2JhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vcGFyc2VOYW1lQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGZpcnN0L2xhc3QgbmFtZSBzdHJ1Y3R1cmUgb2YgYSBuYW1lLCBleC4gSm9obiBTbWl0aCBvciBTTUlUSCwgSm9obiBvciBTTUlUSDsgSm9obi4KKk5hbVNvckNsaWVudDo6UGVyc29uYWxBcGkqIHwgWyoqcGFyc2VfbmFtZV9nZW8qKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNwYXJzZV9uYW1lX2dlbykgfCAqKkdFVCoqIC9hcGkyL2pzb24vcGFyc2VOYW1lL3tuYW1lRnVsbH0ve2NvdW50cnlJc28yfSB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiBKb2huIFNtaXRoIG9yIFNNSVRILCBKb2huIG9yIFNNSVRIOyBKb2huLiBGb3IgYmV0dGVyIGFjY3VyYWN5LCBwcm92aWRlIGEgZ2VvZ3JhcGhpYyBjb250ZXh0LgoqTmFtU29yQ2xpZW50OjpQZXJzb25hbEFwaSogfCBbKipwYXJzZV9uYW1lX2dlb19iYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI3BhcnNlX25hbWVfZ2VvX2JhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vcGFyc2VOYW1lR2VvQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGZpcnN0L2xhc3QgbmFtZSBzdHJ1Y3R1cmUgb2YgYSBuYW1lLCBleC4gSm9obiBTbWl0aCBvciBTTUlUSCwgSm9obiBvciBTTUlUSDsgSm9obi4gR2l2aW5nIGEgbG9jYWwgY29udGV4dCBpbXByb3ZlcyBwcmVjaXNpb24uIAoqTmFtU29yQ2xpZW50OjpQZXJzb25hbEFwaSogfCBbKipwYXJzZWRfZ2VuZGVyX2JhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjcGFyc2VkX2dlbmRlcl9iYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3BhcnNlZEdlbmRlckJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwMCBmdWxseSBwYXJzZWQgbmFtZXMsIGRldGVjdGluZyBhdXRvbWF0aWNhbGx5IHRoZSBjdWx0dXJhbCBjb250ZXh0LgoqTmFtU29yQ2xpZW50OjpQZXJzb25hbEFwaSogfCBbKipwYXJzZWRfZ2VuZGVyX2dlb19iYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI3BhcnNlZF9nZW5kZXJfZ2VvX2JhdGNoKSB8ICoqUE9TVCoqIC9hcGkyL2pzb24vcGFyc2VkR2VuZGVyR2VvQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiB1cCB0byAxMDAwIGZ1bGx5IHBhcnNlZCBuYW1lcywgZGV0ZWN0aW5nIGF1dG9tYXRpY2FsbHkgdGhlIGN1bHR1cmFsIGNvbnRleHQuCipOYW1Tb3JDbGllbnQ6OlBlcnNvbmFsQXBpKiB8IFsqKnVzX3JhY2VfZXRobmljaXR5KipdKGRvY3MvUGVyc29uYWxBcGkubWQjdXNfcmFjZV9ldGhuaWNpdHkpIHwgKipHRVQqKiAvYXBpMi9qc29uL3VzUmFjZUV0aG5pY2l0eS97Zmlyc3ROYW1lfS97bGFzdE5hbWV9IHwgW1VTRVMgMTAgVU5JVFNdIEluZmVyIGEgVVMgcmVzaWRlbnQncyBsaWtlbHkgcmFjZS9ldGhuaWNpdHkgYWNjb3JkaW5nIHRvIFVTIENlbnN1cyB0YXhvbm9teSBXX05MICh3aGl0ZSwgbm9uIGxhdGlubyksIEhMIChoaXNwYW5vIGxhdGlubyksICBBIChhc2lhbiwgbm9uIGxhdGlubyksIEJfTkwgKGJsYWNrLCBub24gbGF0aW5vKS4KKk5hbVNvckNsaWVudDo6UGVyc29uYWxBcGkqIHwgWyoqdXNfcmFjZV9ldGhuaWNpdHlfYmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCN1c19yYWNlX2V0aG5pY2l0eV9iYXRjaCkgfCAqKlBPU1QqKiAvYXBpMi9qc29uL3VzUmFjZUV0aG5pY2l0eUJhdGNoIHwgW1VTRVMgMTAgVU5JVFNdIEluZmVyIHVwLXRvIDEwMDAgVVMgcmVzaWRlbnQncyBsaWtlbHkgcmFjZS9ldGhuaWNpdHkgYWNjb3JkaW5nIHRvIFVTIENlbnN1cyB0YXhvbm9teS4KKk5hbVNvckNsaWVudDo6UGVyc29uYWxBcGkqIHwgWyoqdXNfcmFjZV9ldGhuaWNpdHlfemlwNSoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI3VzX3JhY2VfZXRobmljaXR5X3ppcDUpIHwgKipHRVQqKiAvYXBpMi9qc29uL3VzUmFjZUV0aG5pY2l0eVpJUDUve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfS97emlwNUNvZGV9IHwgW1VTRVMgMTAgVU5JVFNdIEluZmVyIGEgVVMgcmVzaWRlbnQncyBsaWtlbHkgcmFjZS9ldGhuaWNpdHkgYWNjb3JkaW5nIHRvIFVTIENlbnN1cyB0YXhvbm9teSwgdXNpbmcgKG9wdGlvbmFsKSBaSVA1IGNvZGUgaW5mby4gT3V0cHV0IGlzIFdfTkwgKHdoaXRlLCBub24gbGF0aW5vKSwgSEwgKGhpc3Bhbm8gbGF0aW5vKSwgIEEgKGFzaWFuLCBub24gbGF0aW5vKSwgQl9OTCAoYmxhY2ssIG5vbiBsYXRpbm8pLgoqTmFtU29yQ2xpZW50OjpQZXJzb25hbEFwaSogfCBbKip1c196aXBfcmFjZV9ldGhuaWNpdHlfYmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCN1c196aXBfcmFjZV9ldGhuaWNpdHlfYmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi91c1ppcFJhY2VFdGhuaWNpdHlCYXRjaCB8IFtVU0VTIDEwIFVOSVRTXSBJbmZlciB1cC10byAxMDAwIFVTIHJlc2lkZW50J3MgbGlrZWx5IHJhY2UvZXRobmljaXR5IGFjY29yZGluZyB0byBVUyBDZW5zdXMgdGF4b25vbXksIHdpdGggKG9wdGlvbmFsKSBaSVAgY29kZS4KKk5hbVNvckNsaWVudDo6U29jaWFsQXBpKiB8IFsqKnBob25lX2NvZGUqKl0oZG9jcy9Tb2NpYWxBcGkubWQjcGhvbmVfY29kZSkgfCAqKkdFVCoqIC9hcGkyL2pzb24vcGhvbmVDb2RlL3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0ve3Bob25lTnVtYmVyfSB8IFtVU0VTIDExIFVOSVRTXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgYW5kIHBob25lIHByZWZpeCwgZ2l2ZW4gYSBwZXJzb25hbCBuYW1lIGFuZCBmb3JtYXR0ZWQgLyB1bmZvcm1hdHRlZCBwaG9uZSBudW1iZXIuCipOYW1Tb3JDbGllbnQ6OlNvY2lhbEFwaSogfCBbKipwaG9uZV9jb2RlX2JhdGNoKipdKGRvY3MvU29jaWFsQXBpLm1kI3Bob25lX2NvZGVfYmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9waG9uZUNvZGVCYXRjaCB8IFtVU0VTIDExIFVOSVRTXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgYW5kIHBob25lIHByZWZpeCwgb2YgdXAgdG8gMTAwMCBwZXJzb25hbCBuYW1lcywgZGV0ZWN0aW5nIGF1dG9tYXRpY2FsbHkgdGhlIGxvY2FsIGNvbnRleHQgZ2l2ZW4gYSBuYW1lIGFuZCBmb3JtYXR0ZWQgLyB1bmZvcm1hdHRlZCBwaG9uZSBudW1iZXIuCipOYW1Tb3JDbGllbnQ6OlNvY2lhbEFwaSogfCBbKipwaG9uZV9jb2RlX2dlbyoqXShkb2NzL1NvY2lhbEFwaS5tZCNwaG9uZV9jb2RlX2dlbykgfCAqKkdFVCoqIC9hcGkyL2pzb24vcGhvbmVDb2RlR2VvL3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0ve3Bob25lTnVtYmVyfS97Y291bnRyeUlzbzJ9IHwgW1VTRVMgMTEgVU5JVFNdIEluZmVyIHRoZSBsaWtlbHkgcGhvbmUgcHJlZml4LCBnaXZlbiBhIHBlcnNvbmFsIG5hbWUgYW5kIGZvcm1hdHRlZCAvIHVuZm9ybWF0dGVkIHBob25lIG51bWJlciwgd2l0aCBhIGxvY2FsIGNvbnRleHQgKElTTzIgY291bnRyeSBvZiByZXNpZGVuY2UpLgoqTmFtU29yQ2xpZW50OjpTb2NpYWxBcGkqIHwgWyoqcGhvbmVfY29kZV9nZW9fYmF0Y2gqKl0oZG9jcy9Tb2NpYWxBcGkubWQjcGhvbmVfY29kZV9nZW9fYmF0Y2gpIHwgKipQT1NUKiogL2FwaTIvanNvbi9waG9uZUNvZGVHZW9CYXRjaCB8IFtVU0VTIDExIFVOSVRTXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgYW5kIHBob25lIHByZWZpeCwgb2YgdXAgdG8gMTAwMCBwZXJzb25hbCBuYW1lcywgd2l0aCBhIGxvY2FsIGNvbnRleHQgKElTTzIgY291bnRyeSBvZiByZXNpZGVuY2UpLgoKCiMjIERvY3VtZW50YXRpb24gZm9yIE1vZGVscwoKIC0gW05hbVNvckNsaWVudDo6QVBJQmlsbGluZ1BlcmlvZFVzYWdlT3V0XShkb2NzL0FQSUJpbGxpbmdQZXJpb2RVc2FnZU91dC5tZCkKIC0gW05hbVNvckNsaWVudDo6QVBJQ291bnRlclYyT3V0XShkb2NzL0FQSUNvdW50ZXJWMk91dC5tZCkKIC0gW05hbVNvckNsaWVudDo6QVBJS2V5T3V0XShkb2NzL0FQSUtleU91dC5tZCkKIC0gW05hbVNvckNsaWVudDo6QVBJUGVyaW9kVXNhZ2VPdXRdKGRvY3MvQVBJUGVyaW9kVXNhZ2VPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkFQSVBsYW5PdXRdKGRvY3MvQVBJUGxhbk91dC5tZCkKIC0gW05hbVNvckNsaWVudDo6QVBJUGxhblN1YnNjcmlwdGlvbk91dF0oZG9jcy9BUElQbGFuU3Vic2NyaXB0aW9uT3V0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpBUElQbGFuc091dF0oZG9jcy9BUElQbGFuc091dC5tZCkKIC0gW05hbVNvckNsaWVudDo6QVBJU2VydmljZU91dF0oZG9jcy9BUElTZXJ2aWNlT3V0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpBUElTZXJ2aWNlc091dF0oZG9jcy9BUElTZXJ2aWNlc091dC5tZCkKIC0gW05hbVNvckNsaWVudDo6QVBJVXNhZ2VBZ2dyZWdhdGVkT3V0XShkb2NzL0FQSVVzYWdlQWdncmVnYXRlZE91dC5tZCkKIC0gW05hbVNvckNsaWVudDo6QmF0Y2hGaXJzdExhc3ROYW1lRGlhc3BvcmFlZE91dF0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVEaWFzcG9yYWVkT3V0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpCYXRjaEZpcnN0TGFzdE5hbWVHZW5kZXJJbl0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVHZW5kZXJJbi5tZCkKIC0gW05hbVNvckNsaWVudDo6QmF0Y2hGaXJzdExhc3ROYW1lR2VuZGVyZWRPdXRdKGRvY3MvQmF0Y2hGaXJzdExhc3ROYW1lR2VuZGVyZWRPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkJhdGNoRmlyc3RMYXN0TmFtZUdlb0luXShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZUdlb0luLm1kKQogLSBbTmFtU29yQ2xpZW50OjpCYXRjaEZpcnN0TGFzdE5hbWVHZW9aaXBwZWRJbl0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVHZW9aaXBwZWRJbi5tZCkKIC0gW05hbVNvckNsaWVudDo6QmF0Y2hGaXJzdExhc3ROYW1lSW5dKGRvY3MvQmF0Y2hGaXJzdExhc3ROYW1lSW4ubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkJhdGNoRmlyc3RMYXN0TmFtZU9yaWdpbmVkT3V0XShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZU9yaWdpbmVkT3V0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpCYXRjaEZpcnN0TGFzdE5hbWVQaG9uZUNvZGVkT3V0XShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZVBob25lQ29kZWRPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkJhdGNoRmlyc3RMYXN0TmFtZVBob25lTnVtYmVyR2VvSW5dKGRvY3MvQmF0Y2hGaXJzdExhc3ROYW1lUGhvbmVOdW1iZXJHZW9Jbi5tZCkKIC0gW05hbVNvckNsaWVudDo6QmF0Y2hGaXJzdExhc3ROYW1lUGhvbmVOdW1iZXJJbl0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckluLm1kKQogLSBbTmFtU29yQ2xpZW50OjpCYXRjaEZpcnN0TGFzdE5hbWVVU1JhY2VFdGhuaWNpdHlPdXRdKGRvY3MvQmF0Y2hGaXJzdExhc3ROYW1lVVNSYWNlRXRobmljaXR5T3V0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpCYXRjaE5hbWVNYXRjaENhbmRpZGF0ZXNPdXRdKGRvY3MvQmF0Y2hOYW1lTWF0Y2hDYW5kaWRhdGVzT3V0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpCYXRjaFBhcnNlZEZ1bGxOYW1lR2VvSW5dKGRvY3MvQmF0Y2hQYXJzZWRGdWxsTmFtZUdlb0luLm1kKQogLSBbTmFtU29yQ2xpZW50OjpCYXRjaFBhcnNlZEZ1bGxOYW1lSW5dKGRvY3MvQmF0Y2hQYXJzZWRGdWxsTmFtZUluLm1kKQogLSBbTmFtU29yQ2xpZW50OjpCYXRjaFBlcnNvbmFsTmFtZUdlbmRlcmVkT3V0XShkb2NzL0JhdGNoUGVyc29uYWxOYW1lR2VuZGVyZWRPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkJhdGNoUGVyc29uYWxOYW1lR2VvSW5dKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVHZW9Jbi5tZCkKIC0gW05hbVNvckNsaWVudDo6QmF0Y2hQZXJzb25hbE5hbWVHZW9PdXRdKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVHZW9PdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkJhdGNoUGVyc29uYWxOYW1lSW5dKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVJbi5tZCkKIC0gW05hbVNvckNsaWVudDo6QmF0Y2hQZXJzb25hbE5hbWVQYXJzZWRPdXRdKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVQYXJzZWRPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkJpbGxpbmdIaXN0b3J5T3V0XShkb2NzL0JpbGxpbmdIaXN0b3J5T3V0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpCaWxsaW5nSW5mb0luT3V0XShkb2NzL0JpbGxpbmdJbmZvSW5PdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkNsYXNzaWZpZXJNZXRyaWNzT3V0XShkb2NzL0NsYXNzaWZpZXJNZXRyaWNzT3V0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpDdXJyZW5jaWVzT3V0XShkb2NzL0N1cnJlbmNpZXNPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkRlcGxveVVJT3V0XShkb2NzL0RlcGxveVVJT3V0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpFeHBlY3RlZENsYXNzTWV0cmljc091dF0oZG9jcy9FeHBlY3RlZENsYXNzTWV0cmljc091dC5tZCkKIC0gW05hbVNvckNsaWVudDo6Rmlyc3RMYXN0TmFtZURpYXNwb3JhZWRPdXRdKGRvY3MvRmlyc3RMYXN0TmFtZURpYXNwb3JhZWRPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkZpcnN0TGFzdE5hbWVHZW5kZXJJbl0oZG9jcy9GaXJzdExhc3ROYW1lR2VuZGVySW4ubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkZpcnN0TGFzdE5hbWVHZW5kZXJlZE91dF0oZG9jcy9GaXJzdExhc3ROYW1lR2VuZGVyZWRPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkZpcnN0TGFzdE5hbWVHZW9Jbl0oZG9jcy9GaXJzdExhc3ROYW1lR2VvSW4ubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkZpcnN0TGFzdE5hbWVHZW9aaXBwZWRJbl0oZG9jcy9GaXJzdExhc3ROYW1lR2VvWmlwcGVkSW4ubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkZpcnN0TGFzdE5hbWVJbl0oZG9jcy9GaXJzdExhc3ROYW1lSW4ubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkZpcnN0TGFzdE5hbWVPcmlnaW5lZE91dF0oZG9jcy9GaXJzdExhc3ROYW1lT3JpZ2luZWRPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkZpcnN0TGFzdE5hbWVPdXRdKGRvY3MvRmlyc3RMYXN0TmFtZU91dC5tZCkKIC0gW05hbVNvckNsaWVudDo6Rmlyc3RMYXN0TmFtZVBob25lQ29kZWRPdXRdKGRvY3MvRmlyc3RMYXN0TmFtZVBob25lQ29kZWRPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OkZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckdlb0luXShkb2NzL0ZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckdlb0luLm1kKQogLSBbTmFtU29yQ2xpZW50OjpGaXJzdExhc3ROYW1lUGhvbmVOdW1iZXJJbl0oZG9jcy9GaXJzdExhc3ROYW1lUGhvbmVOdW1iZXJJbi5tZCkKIC0gW05hbVNvckNsaWVudDo6Rmlyc3RMYXN0TmFtZVVTUmFjZUV0aG5pY2l0eU91dF0oZG9jcy9GaXJzdExhc3ROYW1lVVNSYWNlRXRobmljaXR5T3V0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpJbmxpbmVPYmplY3RdKGRvY3MvSW5saW5lT2JqZWN0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpJbnZvaWNlSXRlbU91dF0oZG9jcy9JbnZvaWNlSXRlbU91dC5tZCkKIC0gW05hbVNvckNsaWVudDo6SW52b2ljZU91dF0oZG9jcy9JbnZvaWNlT3V0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpOYW1Tb3JDb3VudGVyT3V0XShkb2NzL05hbVNvckNvdW50ZXJPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6Ok5hbWVNYXRjaENhbmRpZGF0ZU91dF0oZG9jcy9OYW1lTWF0Y2hDYW5kaWRhdGVPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6Ok5hbWVNYXRjaENhbmRpZGF0ZXNPdXRdKGRvY3MvTmFtZU1hdGNoQ2FuZGlkYXRlc091dC5tZCkKIC0gW05hbVNvckNsaWVudDo6UGFyc2VkRnVsbE5hbWVHZW9Jbl0oZG9jcy9QYXJzZWRGdWxsTmFtZUdlb0luLm1kKQogLSBbTmFtU29yQ2xpZW50OjpQYXJzZWRGdWxsTmFtZUluXShkb2NzL1BhcnNlZEZ1bGxOYW1lSW4ubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OlBlcnNvbmFsTmFtZUdlbmRlcmVkT3V0XShkb2NzL1BlcnNvbmFsTmFtZUdlbmRlcmVkT3V0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpQZXJzb25hbE5hbWVHZW9Jbl0oZG9jcy9QZXJzb25hbE5hbWVHZW9Jbi5tZCkKIC0gW05hbVNvckNsaWVudDo6UGVyc29uYWxOYW1lR2VvT3V0XShkb2NzL1BlcnNvbmFsTmFtZUdlb091dC5tZCkKIC0gW05hbVNvckNsaWVudDo6UGVyc29uYWxOYW1lSW5dKGRvY3MvUGVyc29uYWxOYW1lSW4ubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OlBlcnNvbmFsTmFtZVBhcnNlZE91dF0oZG9jcy9QZXJzb25hbE5hbWVQYXJzZWRPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OlJvbWFuaXplZE5hbWVPdXRdKGRvY3MvUm9tYW5pemVkTmFtZU91dC5tZCkKIC0gW05hbVNvckNsaWVudDo6U29mdHdhcmVWZXJzaW9uT3V0XShkb2NzL1NvZnR3YXJlVmVyc2lvbk91dC5tZCkKIC0gW05hbVNvckNsaWVudDo6U291cmNlRGV0YWlsZWRNZXRyaWNzT3V0XShkb2NzL1NvdXJjZURldGFpbGVkTWV0cmljc091dC5tZCkKIC0gW05hbVNvckNsaWVudDo6U291cmNlTWV0cmljc091dF0oZG9jcy9Tb3VyY2VNZXRyaWNzT3V0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpTdHJpcGVDYXJkT3V0XShkb2NzL1N0cmlwZUNhcmRPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OlN0cmlwZUN1c3RvbWVyT3V0XShkb2NzL1N0cmlwZUN1c3RvbWVyT3V0Lm1kKQogLSBbTmFtU29yQ2xpZW50OjpTeXN0ZW1NZXRyaWNzT3V0XShkb2NzL1N5c3RlbU1ldHJpY3NPdXQubWQpCiAtIFtOYW1Tb3JDbGllbnQ6OlVzZXJJbmZvT3V0XShkb2NzL1VzZXJJbmZvT3V0Lm1kKQoKCiMjIERvY3VtZW50YXRpb24gZm9yIEF1dGhvcml6YXRpb24KCgojIyMgYXBpX2tleQoKLSAqKlR5cGUqKjogQVBJIGtleQotICoqQVBJIGtleSBwYXJhbWV0ZXIgbmFtZSoqOiBYLUFQSS1LRVkKLSAqKkxvY2F0aW9uKio6IEhUVFAgaGVhZGVyCgo= readmeEtag: '"e0835eaedddee7813c66e59bb88b4feef948553a"' readmeLastModified: Thu, 14 Mar 2019 09:45:25 GMT repositoryId: 172474353 description: >- NamSor API v2 Ruby SDK - classify personal names accurately by gender, country of origin, or ethnicity. created: '2019-02-25T09:24:00Z' updated: '2019-04-17T09:12:39Z' language: Ruby archived: false stars: 1 watchers: 2 forks: 2 owner: namsor logo: https://avatars.githubusercontent.com/u/6951565?v=4 license: AGPL-3.0 repoEtag: '"6e7365f131656fa741bf8d65a179b08bd4d2ab03d7abde844c9ab75bf943a8d1"' repoLastModified: Wed, 17 Apr 2019 09:12:39 GMT foundInMaster: true category: - Documentation - Description Validators id: 08a9cac08c5c62457c1f6a2d3063164d - source: openapi3 tags repository: https://github.com/gabrielmaialva33/doc-sympla-integration v3: true id: b09f616f911b87055b98bc874c7caa72 repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPgogIDxicj4KICA8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2dhYnJpZWxtYWlhbHZhMzMvZG9jLXN5bXBsYS1pbnRlZ3JhdGlvbi9tYXN0ZXIvLmdpdGh1Yi9hc3NldHMvZG9jcy5wbmciIGFsdD0iRG9jOiBTeW1wbGEgIiB3aWR0aD0iMjAwIj4KICA8YnI+CiAgQSBkb2N1bWVudGF0aW9uIGZvciA8YSBocmVmPSJodHRwczovL3d3dy5zeW1wbGEuY29tLmJyLyI+U3ltcGxhIEFQSTwvYT4KICA8YnI+CjwvaDE+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGFuZ3VhZ2VzL3RvcC9nYWJyaWVsbWFpYWx2YTMzL2RvYy1zeW1wbGEtaW50ZWdyYXRpb24/c3R5bGU9ZmxhdCZsb2dvPWFwcHZleW9yIiBhbHQ9IkdpdEh1YiB0b3AgbGFuZ3VhZ2UiID4KICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGFuZ3VhZ2VzL2NvdW50L2dhYnJpZWxtYWlhbHZhMzMvZG9jLXN5bXBsYS1pbnRlZ3JhdGlvbj9zdHlsZT1mbGF0JmxvZ289YXBwdmV5b3IiIGFsdD0iR2l0SHViIGxhbmd1YWdlIGNvdW50IiA+CiAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3JlcG8tc2l6ZS9nYWJyaWVsbWFpYWx2YTMzL2RvYy1zeW1wbGEtaW50ZWdyYXRpb24/c3R5bGU9ZmxhdCZsb2dvPWFwcHZleW9yIiBhbHQ9IlJlcG9zaXRvcnkgc2l6ZSIgPgogIDxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL2dhYnJpZWxtYWlhbHZhMzMvZG9jLXN5bXBsYS1pbnRlZ3JhdGlvbj9jb2xvcj0wMGI4ZDM/c3R5bGU9ZmxhdCZsb2dvPWFwcHZleW9yIiBhbHQ9IkxpY2Vuc2UiIC8+IAogIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9nYWJyaWVsbWFpYWx2YTMzL2RvYy1zeW1wbGEtaW50ZWdyYXRpb24vY29tbWl0cy9tYXN0ZXIiPgogICAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhc3QtY29tbWl0L2dhYnJpZWxtYWlhbHZhMzMvZG9jLXN5bXBsYS1pbnRlZ3JhdGlvbj9zdHlsZT1mbGF0JmxvZ289YXBwdmV5b3IiIGFsdD0iR2l0SHViIGxhc3QgY29tbWl0IiA+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9tYWRlJTIwYnktTWFpYS0xNWMzZDY/c3R5bGU9ZmxhdCZsb2dvPWFwcHZleW9yIiBhbHQ9Ik1haWEiID4gIAogIDwvYT4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iI2Jvb2ttYXJrLWFib3V0Ij5BYm91dDwvYT4mbmJzcDsmbmJzcDsmbmJzcDt8Jm5ic3A7Jm5ic3A7Jm5ic3A7CiAgPGEgaHJlZj0iI2NvbXB1dGVyLXRlY2hub2xvZ2llcyI+VGVjaG5vbG9naWVzPC9hPiZuYnNwOyZuYnNwOyZuYnNwO3wmbmJzcDsmbmJzcDsmbmJzcDsKICA8YSBocmVmPSIjcGFja2FnZS1pbnN0YWxsYXRpb24iPkluc3RhbGxhdGlvbjwvYT4mbmJzcDsmbmJzcDsmbmJzcDt8Jm5ic3A7Jm5ic3A7Jm5ic3A7CiAgPGEgaHJlZj0iI3dyZW5jaC1jb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPiZuYnNwOyZuYnNwOyZuYnNwO3wmbmJzcDsmbmJzcDsmbmJzcDsKICA8YSBocmVmPSIjbWVtby1kb2N1bWVudGF0aW9uIj5Eb2N1bWVudGF0aW9uPC9hPiZuYnNwOyZuYnNwOyZuYnNwO3wmbmJzcDsmbmJzcDsmbmJzcDsKICA8YSBocmVmPSIjbWVtby1saWNlbnNlIj5MaWNlbnNlPC9hPgo8L3A+Cgo8YnI+CgojIyA6Ym9va21hcms6IEFib3V0CgoqKkRvYzogU3ltcGxhIEFQSSoqIGlzIGEgZG9jdW1lbnRhdGlvbiBmb3IgW1N5bXBsYSBBUEldKGh0dHBzOi8vZGV2ZWxvcGVycy5zeW1wbGEuY29tLmJyLykKCjxicj4KCiMjIDpjb21wdXRlcjogVGVjaG5vbG9naWVzCgotICoqW09wZW5BUEldKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykqKgotICoqW0luc29tbmlhXShodHRwczovL2luc29tbmlhLnJlc3QvKSoqCi0gKipbU3ltcGxhIEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXJzLnN5bXBsYS5jb20uYnIvKSoqCgojIyA6cGFja2FnZTogSW5zdGFsbGF0aW9uCgpgYGBiYXNoCiMgY2xvbmUgdGhlIHJlcG9zaXRvcnkKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9nYWJyaWVsbWFpYWx2YTMzL2RvYy1zeW1wbGEtaW50ZWdyYXRpb24uZ2l0CiMgZW50ZXIgdGhlIGRpcmVjdG9yeQpjZCBkb2Mtc3ltcGxhLWludGVncmF0aW9uCiMgdXNlIGluc28gdG8gZ2VuZXJhdGUgdGhlIGRvY3VtZW50YXRpb24KaW5zbyBnZW5lcmF0ZSAtLXNwZWMgZG9jLXN5bXBsYS1pbnRlZ3JhdGlvbi55YW1sIC0tdHlwZSBvcGVuYXBpIC0tb3V0cHV0IGRvYy1zeW1wbGEtaW50ZWdyYXRpb24uanNvbgpgYGAKCiMjIyA6d3JlbmNoOiAqKkNvbmZpZ3VyYXRpb24qKgoKb3BlbiB0aGUgYGRvYy1zeW1wbGEueWFtbGAgZmlsZSBpbiBpbnNvbW5pYSBvciBwb3N0bWFuIGFuZCBjaGFuZ2UgdGhlIGhvc3QgYW5kIGJhc2VQYXRoCgpgYGB5YW1sCmhvc3Q6ICJhcGkuc3ltcGxhLmNvbS5iciIKYmFzZVBhdGg6ICIvcHVibGljL3YzIgpgYGAKCiMjIyA6bWVtbzogKipEb2N1bWVudGF0aW9uKioKCmBgYG1kCiMgVXNlIGluc29tbmlhIG9yIHBvc3RtYW4gdG8gdGVzdCB0aGUgcm91dGVzCgpmaWxlIGBkb2Mtc3ltcGxhLnlhbWxgIGluIHJvb3QgZGlyZWN0b3J5CmBgYAoKIyMjIDp3cml0aW5nX2hhbmQ6ICoqQXV0aG9yKioKCnwgWyFbTWFpYV0oaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI2NzMyMDY3P3NpemU9MTAwKV0oaHR0cHM6Ly9naXRodWIuY29tL2dhYnJpZWxtYWlhbHZhMzMpIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IFtNYWlhXShodHRwczovL2dpdGh1Yi5jb20vZ2FicmllbG1haWFsdmEzMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgojIyBMaWNlbnNlCgpbTUlUIExpY2Vuc2VdKC4vTElDRU5TRSkK readmeEtag: '"9abcf7250c81d899050a9ec02e012042b4d2ceba"' readmeLastModified: Sun, 27 Aug 2023 19:06:39 GMT repositoryId: 680255346 description: Documentação de integração com a API da Sympla created: '2023-08-18T18:19:15Z' updated: '2025-02-22T16:05:57Z' language: null archived: false stars: 2 watchers: 0 forks: 0 owner: gabrielmaialva33 logo: https://avatars.githubusercontent.com/u/26732067?v=4 repoEtag: '"3cd7fdecc244561ee2c7199731af39ba8b0dcb493064a3dd80cb0a370b2d1bab"' repoLastModified: Sat, 22 Feb 2025 16:05:57 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/edenreich/definition-driven-development v3: true id: 8f5af38daa82c5a35a07e59347544518 repositoryMetadata: base64Readme: >- IyBEZWZpbml0aW9uLWRyaXZlbiBEZXZlbG9wbWVudAoKLSBbRGVmaW5pdGlvbi1kcml2ZW4gRGV2ZWxvcG1lbnRdKCNkZWZpbml0aW9uLWRyaXZlbi1kZXZlbG9wbWVudCkKICAtIFtPbmUtT2ZmIC8gSW5pdGlhbGl6ZSBhIFByb2plY3RdKCNvbmUtb2ZmLS1pbml0aWFsaXplLWEtcHJvamVjdCkKICAtIFtEZXZlbG9wbWVudCBQcm9jZXNzXSgjZGV2ZWxvcG1lbnQtcHJvY2VzcykKICAtIFtDdXN0b21pemF0aW9uXSgjY3VzdG9taXphdGlvbikKICAtIFtWYWxpZGF0aW9uXSgjdmFsaWRhdGlvbikKICAtIFtUb2Rvc10oI3RvZG9zKQoKSXQncyBub3QgYSBuZXcgY29uY2VwdCwgeWV0IGl0IGhhcyBnYWluZWQgbW9yZSBwb3B1bGFyaXR5IG92ZXIgdGhlIGxhc3QgZmV3IHllYXJzIGR1ZSB0byBhbiBpbXByb3ZlbWVudHMgaW4gZXhpc3RpbmcgdG9vbGluZy4KCkRlZmluaXRpb24tZHJpdmVuIGRldmVsb3BtZW50IGlzIHRoZSBhcHByb2FjaCB3aGVyZSBhIGNsZWFyIGFuZCB3ZWxsLWRlZmluZWQgdW5kZXJzdGFuZGluZyBvZiBwcm9qZWN0IHJlcXVpcmVtZW50cyBhbmQgZ29hbHMgZ3VpZGVzIHRoZSBlbnRpcmUgZGV2ZWxvcG1lbnQgcHJvY2Vzcy4gVGhpcyBhcHByb2FjaCBlbXBoYXNpemVzIHRoZSBpbXBvcnRhbmNlIG9mIGNyZWF0aW5nIGEgZGV0YWlsZWQgc3BlY2lmaWNhdGlvbiBvciBkZWZpbml0aW9uIG9mIHRoZSBwcm9qZWN0IGJlZm9yZSBpbml0aWF0aW5nIGFueSBjb2Rpbmcgb3IgaW1wbGVtZW50YXRpb24uCgpIYXZpbmcgYSBjb21wcmVoZW5zaXZlIGRlZmluaXRpb24gdXBmcm9udCBlbmFibGVzIGRldmVsb3BlcnMgdG8gYmV0dGVyIHVuZGVyc3RhbmQgd2hhdCBuZWVkcyB0byBiZSBhY2hpZXZlZCwgbGVhZGluZyB0byBtb3JlIGVmZmljaWVudCBhbmQgZm9jdXNlZCBkZXZlbG9wbWVudCBlZmZvcnRzLiBUaGlzIGFwcHJvYWNoIGhlbHBzIG1pbmltaXplIG1pc3VuZGVyc3RhbmRpbmdzLCByZWR1Y2VzIHRoZSBsaWtlbGlob29kIG9mIHNjb3BlIGNoYW5nZXMsIGFuZCBwcm92aWRlcyBhIHJvYWRtYXAgZm9yIHRoZSBkZXZlbG9wbWVudCB0ZWFtIHRvIGZvbGxvdy4gSXQgaXMgb2Z0ZW4gYXNzb2NpYXRlZCB3aXRoIG1ldGhvZG9sb2dpZXMgbGlrZSBXYXRlcmZhbGwsIHdoZXJlIHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzIGlzIHNlcXVlbnRpYWwgYW5kIHJlbGllcyBvbiBhIHRob3JvdWdoIHVwZnJvbnQgcGxhbm5pbmcgcGhhc2UuCgpQYXJhbGxlbCBEZXZlbG9wbWVudCBpcyBvbmUgb2YgdGhlIGtleSBiZW5lZml0cyBvZiB0aGlzIGFwcHJvYWNoLiBXaXRoIGEgd2VsbC1lc3RhYmxpc2hlZCBpbnRlcmZhY2UsIGNsaWVudCBhbmQgc2VydmVyIGRldmVsb3BtZW50IGNhbiBwcm9jZWVkIGNvbmN1cnJlbnRseS4gRGlmZmVyZW50IHRlYW1zIG9yIGRldmVsb3BlcnMgY2FuIHdvcmsgb24gdGhlIGNsaWVudCBhbmQgc2VydmVyIGNvbXBvbmVudHMgc2ltdWx0YW5lb3VzbHksIG1ha2luZyB0aGUgZGV2ZWxvcG1lbnQgcHJvY2VzcyBtb3JlIGVmZmljaWVudCBhbmQgcmVkdWNpbmcgdW5jbGFyaXR5LgoKT25jZSB0aGUgaW50ZXJmYWNlIGlzIHdlbGwtZGVmaW5lZCwgaXQncyBhbHNvIHBvc3NpYmxlIHRvIGFkanVzdCBzcGVjaWZpYyByZXF1aXJlbWVudHMgYW5kIGZvY3VzIG9uIGdlbmVyYXRpbmcgb25seSB0aGUgdGhpbmdzIHRoYXQgYXJlIGZyZXF1ZW50bHkgY2hhbmdpbmcgZnJvbSB0aGF0IGludGVyZmFjZS4KClJlbHlpbmcgb24gT0FTIGFzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZW5hYmxlcyB1cyB0byBsZXZlcmFnZSB0aGUgbGF0ZXN0IE9BUyB2ZXJzaW9uLCBzcGVjaWZpY2FsbHkgdmVyc2lvbiAzLjAuMCBhbmQgYmV5b25kLiBBcyBvZiB0aGUgdGltZSBvZiB3cml0aW5nLCB3aGVuIGVtcGxveWluZyB0b29scyBzdWNoIGFzIFN3YWdnbywgd2hpY2ggZ2VuZXJhdGVzIE9BUyBmcm9tIEdvIGNvZGUgdXNpbmcgYW5ub3RhdGlvbnMsIHRoZXJlIGlzIGEgY29uc3RyYWludCBsaW1pdGluZyBjb21wYXRpYmlsaXR5IHRvIE9BUyB2ZXJzaW9uIDIuMC4wLiBGdXJ0aGVybW9yZSwgYmVpbmcgaW5kZXBlbmRlbnQgb2YgdGhlIGFubm90YXRpb25zIHRpZWQgdG8gYSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlIGVuaGFuY2VzIG91ciBmbGV4aWJpbGl0eSwgbWFraW5nIHVzIGxhbmd1YWdlLWFnbm9zdGljLgoKVGhpcyBtZXRob2QgaXMgZnJlcXVlbnRseSByZWZlcnJlZCB0byBhcyB0aGUgIkRlc2lnbi1GaXJzdCIgYXBwcm9hY2guIEJ5IGZvbGxvd2luZyB0aGlzIHN0cmF0ZWd5LCBzZWFtbGVzcyBjb2xsYWJvcmF0aW9uIGFtb25nIHZhcmlvdXMgc3Rha2Vob2xkZXJzIGJlY29tZXMgZWFzaWx5IGFjaGlldmFibGUuCgojIyBPbmUtT2ZmIC8gSW5pdGlhbGl6ZSBhIFByb2plY3QKCkFsbCB5b3UgbmVlZCBpcyBhbiBPcGVuQVBJIFNwZWNpZmljYXRpb24gKE9BUykuIE9uY2UgeW91IGhhdmUgaXQgd2VsbC1kZWZpbmVkLCB5b3UgY2FuIGdlbmVyYXRlIHRoZSBmaXJzdCBgY2xpZW50YCBhbmQgYHNlcnZlcmAgcHJvamVjdHMgaW4gYW55IGRlc2lyZWQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdXNpbmcgYG9wZW5hcGktZ2VuZXJhdG9yLWNsaWAuIElmIHlvdSdyZSBmYW1pbGlhciB3aXRoIGBEb2NrZXJgLCB5b3UgY2FuIHZpZXcgdGhlIGNvbW1hbmRzIEkgcGxhY2VkIGluIHRoZSBNYWtlZmlsZTsgdGhvc2UgY29udGFpbmVyIGltYWdlcyBhbHJlYWR5IHByb3ZpZGUgdGhlIGBvcGVuYXBpLWdlbmVyYXRvci1jbGlgIGFuZCB0aGUgdG9vbGluZyBuZWVkZWQgZm9yIGdlbmVyYXRpbmcgdGhlIGNvZGUuCgpBZnRlciB0aGUgYm9pbGVycGxhdGUgY29kZSBoYXMgYmVlbiBnZW5lcmF0ZWQsIGl0J3MgbmVjZXNzYXJ5IHRvIHJldmlldyBhbmQgZGV0ZXJtaW5lIHdoYXQgaXMgcmVhbGx5IG5lZWRlZCBhbmQgd2hhdCBpcyBmcmVxdWVudGx5IGNoYW5naW5nLiBUaGUgdGhpbmdzIHRoYXQgYXJlIGxpa2VseSBuZXZlciB0byBjaGFuZ2Ugc2hvdWxkIG5vdCBiZSBnZW5lcmF0ZWQsIHNvIGFkZCB0aGVtIHRvIHRoZSBgLm9wZW5hcGktZ2VuZXJhdG9yLWlnbm9yZWAgZmlsZS4KCk1ha2UgdGhlIGFkanVzdG1lbnRzIHRvIHRob3NlIGZpbGVzIHlvdSBkb24ndCB3YW50IHRvIGdlbmVyYXRlLgoKIyMgRGV2ZWxvcG1lbnQgUHJvY2VzcwoKTGV0J3Mgc2F5IGEgbmV3IGJ1c2luZXNzIHJlcXVpcmVtZW50cyBhcnJpdmUgYXQgdGhlIHRhYmxlLiBUaGV5IG5lZWQgYSBuZXcgZW5kcG9pbnQuCgoxLiBDaGVjayBvdXQgYSBuZXcgYnJhbmNoIGZyb20gdGhlIGBtYWluYCB1cHN0cmVhbS4KMi4gRGVzaWduIHRoZSBlbmRwb2ludCBieSBhZGp1c3RpbmcgdGhlIHNvdXJjZSBvZiB0cnV0aCwgdGhlIE9BUyAoYHBldHNfYXBpLnlhbWxgKS4KMy4gUnVuIGBtYWtlIGdlbmVyYXRlYC4gV2hpY2ggd2lsbCBydW4gdGhlIGBvcGVuYXBpLWdlbmVyYXRvci1jbGlgIGZvciBnZW5lcmF0aW5nIHRoZSBgY2xpZW50YCBhbmQgYHNlcnZlcmAKNC4gRmlsbCBpbiB0aGUgdG9kb3MgYW5kIHdyaXRlIHRoZSBidXNpbmVzcyBsb2dpYyAvIGltcGxlbWVudGF0aW9uLgo1LiBBZGQgdGhlIGZpbGUgd2hlcmUgeW91IHdyb3RlIHRoZSBpbXBsZW1lbnRhdGlvbiB0byB0aGUgZ2VuZXJhdG9yIGlnbm9yZSBmaWxlLCBzbyBpdCB3aWxsIGtub3cgbm90IHRvIHJlZ2VuZXJhdGUgaXQgZnJvbSB0aGUgdGVtcGxhdGUuCjYuIENyZWF0ZSBhIFB1bGwgUmVxdWVzdCAvIE1lcmdlIFJlcXVlc3QuCjcuIExldCB5b3VyIGNvLXdvcmtlciByZXZpZXcuCjguIE9uY2UgYXBwcm92ZWQsIG1lcmdlIGl0IGluLgoKTGV0J3Mgc2F5IHRob3NlIHdobyB3b3JrIG9uIHRoZSBgY2xpZW50YCBhcmUgb24gYSBkaWZmZXJlbnQgdGVhbSB0aGFuIHRob3NlIHdobyB3b3JrIG9uIHRoZSBgc2VydmVyYC4gSW4gdGhhdCBzY2VuYXJpbywgeW91IGNhbiBzdGlsbCBnZW5lcmF0ZSB0aGUgY29kZSBmb3IgdGhlIGBjbGllbnRgIGV2ZW4gb24gYSBjb21wbGV0ZWx5IHNlcGFyYXRlIHJlcG9zaXRvcnksIGJ1dCB0aGUgaW50ZXJmYWNlICh0aGUgYE9wZW5BUEkgU3BlY2lmaWNhdGlvbmApIGhhcyB0byBiZSB3aXRoIHRoZSBzYW1lIHZlcnNpb24uIFRoaXMgd2F5LCB0ZWFtcyBjYW4gZmlyc3QgZGVzaWduIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCB0aGVuIHdvcmsgaW4gcGFyYWxsZWwuCgojIyBDdXN0b21pemF0aW9uCgpFdmVyeSBwcm9qZWN0IGNvbWVzIHdpdGggdW5pcXVlIHJlcXVpcmVtZW50cywgbWFraW5nIHRoaXMgYXNwZWN0IGxpa2VseSB0aGUgbW9zdCBjaGFsbGVuZ2luZyBwYXJ0IG9mIHRoZSBlcXVhdGlvbi4gSG93ZXZlciwgb25jZSB5b3Ugc3VjY2Vzc2Z1bGx5IGVzdGFibGlzaCB0aGUgc2V0dXAsIHRoZSBzdWJzZXF1ZW50IHdvcmtmbG93IGFuZCBtaW5pbWFsIGFkanVzdG1lbnRzIHJlcXVpcmVkIGZvciBpbXBsZW1lbnRhdGlvbiBjYW4gc2lnbmlmaWNhbnRseSBib29zdCB0aGUgZGV2ZWxvcG1lbnQgdmVsb2NpdHkuCgpVdGlsaXppbmcgcHJlLWV4aXN0aW5nIHRlbXBsYXRlcyBlbXBvd2VycyB1cyB0byBzZWxlY3QgdGhlIGdlbmVyYXRlZCBBUEkgY29kZSBzZWFtbGVzc2x5LiBUaGVyZSBhcmUgaW5zdGFuY2VzLCB0aG91Z2gsIHdoZXJlIGJlc3Bva2UgdGVtcGxhdGVzIGJlY29tZSBuZWNlc3NhcnksIGFuZCBmb3J0dW5hdGVseSwgaXQncyBlbnRpcmVseSBmZWFzaWJsZSB0byBvdmVycmlkZSB0aGUgZXhpc3Rpbmcgb25lcy4KCkJ5IG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgdGVtcGxhdGVzLCB3ZSBnYWluIHRoZSBhYmlsaXR5IHRvIGRlbHZlIGludG8gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZGV0YWlscywgdGhlcmVieSBlbmhhbmNpbmcgdGhlIHNwZWVkIG9mIGRldmVsb3BtZW50LiBUaGlzIGZsZXhpYmlsaXR5IGVuc3VyZXMgYSB0YWlsb3JlZCBhcHByb2FjaCB0aGF0IGFsaWducyBwcmVjaXNlbHkgd2l0aCB0aGUgcHJvamVjdCdzIGRpc3RpbmN0aXZlIG5lZWRzLgoKTGV0J3MgbW9kaWZ5IGFuIGV4aXN0aW5nIHRlbXBsYXRlOgoKMS4gRmlyc3QgbGV0J3MgZmV0Y2ggdGhlIHRlbXBsYXRlOgpgYGBiYXNoCm1ha2Ugb3BlbmFwaSBBUkdTPSdhdXRob3IgdGVtcGxhdGUgLWcgZ28tc2VydmVyIC1vIHRlbXBsYXRlcy9nby1zZXJ2ZXInCmBgYAoyLiBNb2RpZnkgaXQuCjMuIE1vZGlmeSB0aGUgZ2VuZXJhdGUgY29tbWFuZCBieSBhZGRpbmcgYC10IHRlbXBsYXRlcy9nby1zZXJ2ZXJgLgoKQSB2YXJpZXR5IG9mIGFkZGl0aW9uYWwgdGVtcGxhdGVzIGNyYWZ0ZWQgYnkgdGhlIG9wZW4tc291cmNlIGNvbW11bml0eSBhcmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb246CgotIGFkYQotIGFkYS1zZXJ2ZXIKLSBhbmRyb2lkCi0gYXBhY2hlMgotIGFwZXgKLSBhc2NpaWRvYwotIGFzcG5ldGNvcmUKLSBhdnJvLXNjaGVtYQotIGJhc2gKLSBjcnlzdGFsCi0gYwotIGNsb2p1cmUKLSBjd2lraQotIGNwcC1xdC1jbGllbnQKLSBjcHAtcXQtcWh0dHBlbmdpbmUtc2VydmVyCi0gY3BwLXBpc3RhY2hlLXNlcnZlcgotIGNwcC1yZXN0YmVkLXNlcnZlcgotIGNwcC1yZXN0YmVkLXNlcnZlci1kZXByZWNhdGVkCi0gY3BwLXJlc3RzZGsKLSBjcHAtdGlueQotIGNwcC10aXplbgotIGNwcC11ZTQKLSBjc2hhcnAKLSBjc2hhcnAtZnVuY3Rpb25zCi0gZGFydAotIGRhcnQtZGlvCi0gZWlmZmVsCi0gZWxpeGlyCi0gZWxtCi0gZXJsYW5nLWNsaWVudAotIGVybGFuZy1wcm9wZXIKLSBlcmxhbmctc2VydmVyCi0gZnNoYXJwLWZ1bmN0aW9ucwotIGZzaGFycC1naXJhZmZlLXNlcnZlcgotIGdvCi0gZ28tZWNoby1zZXJ2ZXIKLSBnby1zZXJ2ZXIKLSBnby1naW4tc2VydmVyCi0gZ3JhcGhxbC1zY2hlbWEKLSBncmFwaHFsLW5vZGVqcy1leHByZXNzLXNlcnZlcgotIGdyb292eQotIGtvdGxpbgotIGtvdGxpbi1zZXJ2ZXIKLSBrb3RsaW4tc3ByaW5nCi0ga290bGluLXZlcnR4Ci0ga3Rvcm0tc2NoZW1hCi0gaGFza2VsbC1odHRwLWNsaWVudAotIGhhc2tlbGwKLSBoYXNrZWxsLXllc29kCi0gamF2YQotIGpheHJzLWN4Zi1jbGllbnQKLSBqYXZhLWhlbGlkb24tY2xpZW50Ci0gamF2YS1oZWxpZG9uLXNlcnZlcgotIGphdmEtaW5mbGVjdG9yCi0gamF2YS1taWNyb25hdXQtY2xpZW50Ci0gamF2YS1taWNyb25hdXQtc2VydmVyCi0gamF2YS1tc2Y0agotIGphdmEtcGttc3QKLSBqYXZhLXBsYXktZnJhbWV3b3JrCi0gamF2YS11bmRlcnRvdy1zZXJ2ZXIKLSBqYXZhLXZlcnR4Ci0gamF2YS12ZXJ0eC13ZWIKLSBqYXZhLWNhbWVsCi0gamF4cnMtY3hmCi0gamF4cnMtY3hmLWV4dGVuZGVkCi0gamF4cnMtY3hmLWNkaQotIGpheHJzLWplcnNleQotIGpheHJzLXJlc3RlYXN5Ci0gamF4cnMtcmVzdGVhc3ktZWFwCi0gamF4cnMtc3BlYwotIGphdmFzY3JpcHQKLSBqYXZhc2NyaXB0LWFwb2xsby1kZXByZWNhdGVkCi0gamF2YXNjcmlwdC1mbG93dHlwZWQKLSBqYXZhc2NyaXB0LWNsb3N1cmUtYW5ndWxhcgotIGpldGJyYWlucy1odHRwLWNsaWVudAotIGptZXRlcgotIGp1bGlhLWNsaWVudAotIGp1bGlhLXNlcnZlcgotIGs2Ci0gbHVhCi0gbWFya2Rvd24KLSBteXNxbC1zY2hlbWEKLSBuNGpzCi0gbmltCi0gbm9kZWpzLWV4cHJlc3Mtc2VydmVyCi0gb2JqYwotIG9jYW1sCi0gb3BlbmFwaQotIG9wZW5hcGkteWFtbAotIHBsYW50dW1sCi0gcGVybAotIHBocAotIHBocC1uZXh0Z2VuCi0gcGhwLWxhcmF2ZWwKLSBwaHAtbHVtZW4KLSBwaHAtc2xpbTQKLSBwaHAtc3ltZm9ueQotIHBocC1tZXp6aW8tcGgKLSBwaHAtZHQKLSBwb3N0bWFuLWNvbGxlY3Rpb24KLSBwb3dlcnNoZWxsCi0gcHJvdG9idWYtc2NoZW1hCi0gcHl0aG9uCi0gcHl0aG9uLXB5ZGFudGljLXYxCi0gcHl0aG9uLWZhc3RhcGkKLSBweXRob24tZmxhc2sKLSBweXRob24tYWlvaHR0cAotIHB5dGhvbi1ibHVlcGxhbmV0Ci0gcgotIHJ1YnkKLSBydWJ5LW9uLXJhaWxzCi0gcnVieS1zaW5hdHJhCi0gcnVzdAotIHJ1c3Qtc2VydmVyCi0gc2NhbGF0cmEKLSBzY2FsYS1ha2thCi0gc2NhbGEtYWtrYS1odHRwLXNlcnZlcgotIHNjYWxhLWZpbmNoCi0gc2NhbGEtZ2F0bGluZwotIHNjYWxhLWxhZ29tLXNlcnZlcgotIHNjYWxhLXBsYXktc2VydmVyCi0gc2NhbGEtc3R0cAotIHNjYWxhLXN0dHA0Ci0gc2NhbGF6Ci0gc3ByaW5nCi0gZHluYW1pYy1odG1sCi0gaHRtbAotIGh0bWwyCi0gc3dpZnQ1Ci0gc3dpZnQtY29tYmluZQotIHR5cGVzY3JpcHQKLSB0eXBlc2NyaXB0LWFuZ3VsYXIKLSB0eXBlc2NyaXB0LWF1cmVsaWEKLSB0eXBlc2NyaXB0LWF4aW9zCi0gdHlwZXNjcmlwdC1mZXRjaAotIHR5cGVzY3JpcHQtaW52ZXJzaWZ5Ci0gdHlwZXNjcmlwdC1qcXVlcnkKLSB0eXBlc2NyaXB0LW5lc3RqcwotIHR5cGVzY3JpcHQtbm9kZQotIHR5cGVzY3JpcHQtcmVkdXgtcXVlcnkKLSB0eXBlc2NyaXB0LXJ4anMKLSB3c2RsLXNjaGVtYQotIHhvam8tY2xpZW50Ci0gemFwaWVyCgojIyBWYWxpZGF0aW9uCgpUbyB2YWxpZGF0ZSB0aGUgc2NoZW1hIG9mIHRoZSBPQVMsIGp1c3QgcnVuOgpgYGBiYXNoCm1ha2Ugb3BlbmFwaSBBUkdTPSd2YWxpZGF0ZSAtaSBwZXRzX2FwaS55YW1sJwpgYGAKCiMjIFRvZG9zCgotIFsgXSBjb3ZlciB2aXJ0dWFsIHNlcnZpY2VzIC8gbW9ja2VkIHNlcnZpY2VzCi0gWyBdIGdlbmVyYXRlIG1ldHJpY3MgYmFzZWQgb2YgY3VzdG9taXNhdGlvbnMgYXR0cmlidXRlcyBpbiB0aGUgT0FTCg== readmeEtag: '"b6c177ef295f7a8297e7e29226b5e9c1ded9322b"' readmeLastModified: Sun, 17 Dec 2023 23:39:22 GMT repositoryId: 732375254 description: >- Definition-driven development is the approach where a clear and well-defined understanding of project requirements and goals guides the entire development process. This approach emphasizes the importance of creating a detailed specification or definition of the project before initiating any coding or implementation. created: '2023-12-16T13:22:24Z' updated: '2023-12-20T18:31:09Z' language: Mustache archived: false stars: 1 watchers: 1 forks: 0 owner: edenreich logo: https://avatars.githubusercontent.com/u/16985712?v=4 repoEtag: '"e57e0bae05fb843c6b570f03cca8a5d45aad58b645f6e10530139c9e7e27a003"' repoLastModified: Wed, 20 Dec 2023 18:31:09 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/lavandejoey/auth-flutter-hmi-coursework v3: true id: d05d1050c4665a1cbbe8c4dbf7e957c9 repositoryMetadata: base64Readme: >- IyBbQXV0aCBGbHV0dGVyIEhNSSBDb3Vyc2V3b3JrXShodHRwczovL2dpdGh1Yi5jb20vbGF2YW5kZWpvZXkvQXV0aC1GbHV0dGVyLUhNSS1Db3Vyc2V3b3JrKQoKWyFbU3RhcnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL2xhdmFuZGVqb2V5L0F1dGgtRmx1dHRlci1ITUktQ291cnNld29yay0uc3ZnKV0oKQpbIVtMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtTUlULWdyZWVuP2xvZ289bWl0KV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQpClshW0ZsdXR0ZXIgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9GbHV0dGVyLXYzLjEzLjktYmx1ZT9sb2dvPWZsdXR0ZXIpXShodHRwczovL2ZsdXR0ZXIuZGV2LykKWyFbRGFydCBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0RhcnQtdjMuMS41LWJsdWU/bG9nbz1kYXJ0KV0oaHR0cHM6Ly9kYXJ0LmRldi8pClshW0FuZHJvaWQgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9BbmRyb2lkLXYxNC1ibHVlP2xvZ289YW5kcm9pZCldKGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3N0dWRpby9yZWxlYXNlcy9wbGF0Zm9ybXMjNC4wKQpbIVtPcGVuQVBJIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvT3BlbkFQSS12My4wLjAtYmx1ZT9sb2dvPW9wZW5hcGktaW5pdGlhdGl2ZSldKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykKClRoaXMgaXMgYSBjb3Vyc2V3b3JrIGZvciB0aGUgSHVtYW4gTWFjaGluZSBJbnRlcmFjdGlvbiBjb3Vyc2UgYXQgRUNVU1QuClRoZSBnb2FsIG9mIHRoaXMgcHJvamVjdCBpcyB0byBjcmVhdGUgYSBtb2JpbGUgYXBwbGljYXRpb24gdGhhdCBhbGxvd3MgdXNlcnMgdG8gcmVnaXN0ZXIgYW5kIGxvZ2luIHRvIHRoZSBzeXN0ZW0uCgojIyBHZXR0aW5nIFN0YXJ0ZWQKClRoaXMgcHJvamVjdCBpcyBhIHN0YXJ0aW5nIHBvaW50IGZvciBhIEZsdXR0ZXIgYXBwbGljYXRpb24uCgpBIGZldyByZXNvdXJjZXMgdG8gZ2V0IHlvdSBzdGFydGVkIGlmIHRoaXMgaXMgeW91ciBmaXJzdCBGbHV0dGVyIHByb2plY3Q6CgotIFtMYWI6IFdyaXRlIHlvdXIgZmlyc3QgRmx1dHRlciBhcHBdKGh0dHBzOi8vZG9jcy5mbHV0dGVyLmRldi9nZXQtc3RhcnRlZC9jb2RlbGFiKQotIFtDb29rYm9vazogVXNlZnVsIEZsdXR0ZXIgc2FtcGxlc10oaHR0cHM6Ly9kb2NzLmZsdXR0ZXIuZGV2L2Nvb2tib29rKQoKRm9yIGhlbHAgZ2V0dGluZyBzdGFydGVkIHdpdGggRmx1dHRlciBkZXZlbG9wbWVudCwgdmlldyB0aGUKW29ubGluZSBkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MuZmx1dHRlci5kZXYvKSwgd2hpY2ggb2ZmZXJzIHR1dG9yaWFscywKc2FtcGxlcywgZ3VpZGFuY2Ugb24gbW9iaWxlIGRldmVsb3BtZW50LCBhbmQgYSBmdWxsIEFQSSByZWZlcmVuY2UuCgojIyBVcGRhdGUgSGlzdG9yeQoKLSBbMjAyMy0xMi0zMF06IEhNSSBjb3Vyc2V3b3JrIHN1Ym1pc3Npb24gdmVyc2lvbiAodjEuMC4wKS4KLSBbMjAyMy0xMS0yOF06IENvbXBsZXRlIGZ1bmN0aW9ucyBhbmQgVUkgb2YgbG9naW4gYW5kIHJlZ2lzdGVyLgotIFsyMDIzLTExLTAzXTogQ29tcGxldGUgZnVuY3Rpb25zIGFuZCBVSSBvZiB1cGRhdGUgdXNlciBpbmZvcm1hdGlvbi4KLSBbMjAyMy0xMS0wMl06IFByb2plY3QgY3JlYXRlZC4gQVBJIHdpdGggT3BlbkFQSSAzLjAuMCBjcmVhdGVkLgoKIyMgQ29weVJpZ2h0CgpUaGlzIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBbTUlUIGxpY2Vuc2VdKExJQ0VOU0UpLgo= readmeEtag: '"c557b4c59ccded32ae0978a54f1bad22476acfc5"' readmeLastModified: Sat, 30 Dec 2023 08:15:17 GMT repositoryId: 713267738 description: >- This is a coursework for the Human Machine Interaction course at ECUST. The goal of this project is to create a mobile application that allows users to register and login to the system. created: '2023-11-02T07:11:30Z' updated: '2025-06-10T04:04:50Z' language: Dart archived: false stars: 3 watchers: 1 forks: 0 owner: lavandejoey logo: https://avatars.githubusercontent.com/u/48612765?v=4 license: MIT repoEtag: '"48802473636c8f29853c069274b15df98e3566d3c6e5d542189d2deebdceae2f"' repoLastModified: Tue, 10 Jun 2025 04:04:50 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/douglanyabasa/universitystudentportal-springboot v3: true id: d689e1ad713dfc5dfe4eb9b74040e974 repositoryMetadata: base64Readme: >- IyBVbml2ZXJzaXR5U3R1ZGVudFBvcnRhbC1zcHJpbmdib290ClVuaXZlcnNpdHkgU3R1ZGVudHMgcG9ydGFsIGluIHNwcmluZ2Jvb3QuCgpvcGVuIHRoZSBtYXN0ZXIgYnJhbmNoIHRvIHZpZXcgdGhlIGNvZGUuCg== readmeEtag: '"840099264a8b3676652d2cf3a7c624ee9e071d2185bb665355b7dfe8553be6c7"' readmeLastModified: Tue, 19 Dec 2023 12:18:30 GMT repositoryId: 670556368 description: 'University Students portal implemented in springboot ' created: '2023-07-25T10:11:13Z' updated: '2025-07-01T09:04:50Z' language: Java archived: false stars: 2 watchers: 1 forks: 0 owner: DouglaNyabasa logo: https://avatars.githubusercontent.com/u/99015779?v=4 repoEtag: '"92853bed76ed42dcb268bf02fa3f0cccf4e371f80408ed011e8b8c25f7d1ec7e"' repoLastModified: Tue, 01 Jul 2025 09:04:50 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/emiliocliff/payment-polling-service v3: true id: 00071fb45557d0a5fcd6fc99666c5f83 repositoryMetadata: base64Readme: >- IyBQYXltZW50IFBvbGxpbmcgU3lzdGVtIPCfmoAKCldlbGNvbWUgdG8gdGhlICoqUGF5bWVudCBQb2xsaW5nIFN5c3RlbSoqISBUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgYSBjb2xsZWN0aW9uIG9mIG1pY3Jvc2VydmljZXMgYnVpbHQgd2l0aCBHbyBmb3IgdGhlIFtQYXlkIEJhY2tlbmQgQXNzZXNtZW50XSguaHR0cHM6Ly9naXRodWIuY29tL2dldHBheWQtdGVjaC9iYWNrZW5kLWludGVybi1hc3Nlc21lbnQpLiBUaGUgcHJvamVjdCBkZW1vbnN0cmF0ZXMgYSBtaWNyb3NlcnZpY2VzIGFyY2hpdGVjdHVyZSBidWlsdCB3aXRoIEdvLCBEb2NrZXIsIGFuZCBSYWJiaXRNUS4gRWFjaCBzZXJ2aWNlIGlzIHNlbGYtY29udGFpbmVkIGFuZCBzZXJ2ZXMgYSBzcGVjaWZpYyBwdXJwb3NlIGluIHRoZSBsYXJnZXIgYXJjaGl0ZWN0dXJlLiBOYXZpZ2F0ZSB0byBlYWNoIHNlcnZpY2UgdG8gbGVhcm4gbW9yZSEKCiFbTWljcm9zZXJ2aWNlcyBJbWFnZV0oUGF5bWVudHNfUG9sbGluZy5wbmcpCgojIyBTZXJ2aWNlcyBPdmVydmlldyDwn6epCgotIFtBdXRoZW50aWNhdGlvbiBTZXJ2aWNlXSguL2F1dGhlbnRpY2F0aW9uLXNlcnZpY2UvUkVBRE1FLm1kKSAtIFRoZSBhdXRoZW50aWNhdGlvbiBzZXJ2aWNlIGNvbm5lY3RzIHRvIGEgcG9zdGdyZXMgZGF0YWJhc2UuIEl0IHNlcnZlcyB0aGUgcHVycG9zZSBvZiByZWdpc3RlcmluZyBhIG5ldyB1c2VyIGFuZCBsb2dnaW5nIHRoZSB1c2VyLgotIFtHYXRld2F5IFNlcnZpY2VdKC4vZ2F0ZXdheS1zZXJ2aWNlL1JFQURNRS5tZCkgLSBUaGlzIGlzIHRoZSBnYXRld2F5L2VudHJ5IHBvaW50IHRvIG91ciBzeXN0ZW0uIENsaWVudHMgaW50ZXJhY3Qgd2l0aCB0aGlzIHNlcnZpY2UgYW5kIHRoZSByZXF1ZXN0IGlzIGZvcndhcmRlZCB0byB0aGUgcmVzcGVjdGl2ZSBzZXJ2aWNlIGVpdGhlciB0aHJvdWdoIEhUVFAgcmVxdWVzdHMsIGdSUEMgb3IgYSByYWJiaXRNUSBxdWV1ZS4KLSBbUGF5bWVudHMgU2VydmljZV0oLi9wYXltZW50cy1zZXJ2aWNlL1JFQURNRS5tZCkgLSBUaGUgcGF5bWVudHMgc2VydmljZSBjb25uZWN0cyB0byBhIHBvc3RncmVzIGRhdGFiYXNlLiBJdCBzZXJ2ZXMgdGhlIHB1cnBvc2Ugb2YgZGVwb3NpdGluZyBhbmQgd2l0aGRyYXdpbmcgZnVuZHMgZnJvbSB5b3VyIFBheWQgV2FsbGV0LgoKIyMgU2hhcmVkIGdSUEMKCi0gW1NoYXJlZCBnUlBDXSguL3NoYXJlZC1ncnBjL1JFQURNRS5tZCkgLSBUaGUgc2hhcmVkIGdSUEMgY29udGFpbnMgdGhlIHByb2NlZHVyZSBjYWxscyBuZWVkZWQgZm9yIHRoZSBzeXN0ZW0gdG9nZXRoZXIgd2l0aCBpdHMgbW9ja3MgZm9yIHRlc3RpbmcgcHVycG9zZXMuCgojIyBUZWNoIFN0YWNrIPCfm6DvuI8KCi0gKipHbyoqOiBCYWNrZW5kIHNlcnZpY2VzLgotICoqZ1JQQyoqOiBTZXJ2aWNlIGNvbW11bmljYXRpb24uCi0gKipEb2NrZXIqKjogQ29udGFpbmVyaXphdGlvbi4KLSAqKlJhYmJpdE1RKio6IE1lc3NhZ2UgYnJva2VyLgotICoqUG9zdGdyZXNxbCoqOiBTZXJ2aWNlIERhdGFiYXNlLgotICoqVGVzdGNvbnRhaW5lcnMqKjogSW50ZXJncmF0aW9uIHRlc3RpbmcgdG9vbC4KCkV4cGxvcmUgdGhlIHNlcnZpY2VzIGJ5IHZpc2l0aW5nIHRoZWlyIGRpcmVjdG9yaWVzIGZvciBtb3JlIGRldGFpbHMuCgojIyBHZXR0aW5nIFN0YXJ0ZWQg8J+boO+4jwoKVG8gZ2V0IHN0YXJ0ZWQgd2l0aCB0aGUgZW50aXJlIHByb2plY3QsIGZvbGxvdyB0aGVzZSBzdGVwczoKCjEuICoqQ2xvbmUgdGhlIHJlcG9zaXRvcnkqKgoKICAgYGBgYmFzaAogICBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL0VtaWxpb0NsaWZmL3BheW1lbnQtcG9sbGluZy1zZXJ2aWNlLmdpdAogICBgYGAKClRoaXMgbmV4dCBzdGVwIHJlcXVpcmUgeW91IHRvIGhhdmUgZG9ja2VyIGNvbXBvc2UgaW5zdGFsbGVkIGFuZCB0byBzZXQgdXAgYW4gYWNjb3VudCBpbiBbUGF5ZCBBY2NvdW50XSguaHR0cHM6Ly93ZWIubXlwYXlkLmFwcC9sb2dpbikgZm9yIHBheW1lbnRzIHByb2Nlc3NpbmcuCgoyLiAqKkdlbmVyYXRpbmcgUlNBIGtleSBwYWlyKioKCiAgIFdlIHdpbGwgbmVlZCB0byBnZW5lcmF0ZSBSU0EgcHJpdmF0ZSBhbmQgcHVibGljIGtleXMgZm9yIG91ciBzeXN0ZW0uIFRoZSBSU0EgcHJpdmF0ZSBrZXkgaXMgbmVlZGVkIHRvICoqc2lnbiBKV1QgdG9rZW5zKiogdXNpbmcgdGhlIFJTMjU2IGFsZ29yaXRobSwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHB1YmxpYyBrZXkgaXMgdXNlZCB0byAqKnZlcmlmeSB0aG9zZSB0b2tlbnMqKi4gVGhpcyBpcyBlc3NlbnRpYWwgZm9yIGFzeW1tZXRyaWMgY3J5cHRvZ3JhcGh5LCB3aGVyZSBvbmx5IHRoZSBob2xkZXIgb2YgdGhlIHByaXZhdGUga2V5IGNhbiBnZW5lcmF0ZSB2YWxpZCB0b2tlbnMgKGF1dGhlbnRpY2F0aW9uLXNlcnZpY2UpLCBidXQgYW55b25lIHdpdGggdGhlIHB1YmxpYyBrZXkgY2FuIHZlcmlmeSB0aGVpciBhdXRoZW50aWNpdHkgKGdhdGV3YXkgc2VydmljZSkKCiAgIC0gTmF2aWdhdGUgdG8gdGhlIGAuL2F1dGhlbnRpY2F0aW9uLXNlcnZpY2UvcGtnYCBhbmQgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZAoKICAgYGBgCiAgICMgR2VuZXJhdGUgcHJpdmF0ZSBrZXkKCiAgIG9wZW5zc2wgZ2VucGtleSAtYWxnb3JpdGhtIFJTQSAtb3V0IG15X3JzYV9rZXkucGVtIC1wa2V5b3B0IHJzYV9rZXlnZW5fYml0czoyMDQ4CiAgIGBgYAoKICAgYGBgCiAgICMgR2VuZXJhdGUgcHVibGljIGtleQoKICAgb3BlbnNzbCByc2EgLXB1Ym91dCAtaW4gbXlfcnNhX2tleS5wZW0gLW91dCBteV9yc2Ffa2V5LnB1Yi5wZW0KICAgYGBgCgogICAtIENvcHkgdGhlIHB1YmxpYyBrZXkgdG8gdGhlIGAuL2dhdGV3YXktc2VydmljZS9wa2dgCgozLiAqKlJ1biB0aGUgc2VydmljZXMqKgoKICAgYGBgYmFzaAogICBkb2NrZXIgY29tcG9zZSB1cAogICBgYGAKCjQuICoqTWFraW5nIFJlcXVlc3QqKgogICBBZnRlciBhbGwgdGhlIHNlcnZpY2VzIGFyZSB1cCB5b3UgY2FuIGdvIHRvIHRoZSBgbG9jYWxob3N0OjgwODAvc3dhZ2dlci9pbmRleC5odG1sYC4gU3dhZ2dlclVJIGlzIHVzZWQgZm9yIHRoZSBnYXRld2F5IHNlcnZpY2UgZG9jdW1lbnRhdGlvbiB3aXRoIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGV4YW1wbGVzLCBoZXJlIHlvdSBjYW4gc3RhcnQgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc3lzdGVtLgoKIVtNaWNyb3NlcnZpY2VzIEltYWdlXShnYXRld2F5LXNlcnZpY2UvZG9jcy9zd2FnZ2VyL3N3YWdnZXItaW1nLnBuZykKCiMjIFJlbWFya3Mg8J+knQoKSGFwcHkgQ29kaW5nCgojIyBMaWNlbnNlIPCfk50KClRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCg== readmeEtag: '"a7ff57653418ee4a24d9fd734b8936e87764fba1"' readmeLastModified: Tue, 01 Oct 2024 22:03:06 GMT repositoryId: 836114430 description: >- This project is an online payment polling service build with microservices-architecture. Integrated with Payd API and was part of a backend assessment for an opening. created: '2024-07-31T07:19:32Z' updated: '2024-10-02T19:38:43Z' language: Go archived: false stars: 1 watchers: 1 forks: 1 owner: EmilioCliff logo: https://avatars.githubusercontent.com/u/115647640?v=4 license: MIT repoEtag: '"8f36b553e01301ace9c78621b5a9d7b2d2fafb9127fc3fd8acac0acc764e77b8"' repoLastModified: Wed, 02 Oct 2024 19:38:43 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/bzdgn/open-api-web-service-example v3: true id: 42b6a048ebc1b81b674d425e2f9e63b0 repositoryMetadata: base64Readme: >- VGhpcyBwcm9qZWN0IGlzIGEgZGVtb25zdHJhdGlvbiBvZiBPcGVuQVBJIFdlYiBTZXJ2aWNlIHdpdGggU3ByaW5nIEJvb3QuCgpUT0MKLS0tCi0gWzAgSW50cm9kdWN0aW9uXSgjMC1pbnRyb2R1Y3Rpb24pIDxici8+Ci0gWzEgU2V0dXBdKCMxLXNldHVwKSA8YnIvPgotIFsyIE9wZW5BUEkgU3BlY3NdKCMyLW9wZW5hcGktc3BlY3MpIDxici8+Ci0gWzMgT3BlbkFQSSBQbHVnaW5dKCMzLW9wZW5hcGktcGx1Z2luKSA8YnIvPgotIFs0IFRlc3Rpbmcgd2l0aCBQb3N0bWFuIENvbGxlY3Rpb25dKCM0LXRlc3Rpbmctd2l0aC1wb3N0bWFuLWNvbGxlY3Rpb24pPGJyLz4KCiAwIEludHJvZHVjdGlvbgotLS0tLS0tLS0tLS0tLS0KVGhpcyBwcm9qZWN0IGlzIGEgZGVtb25zdHJhdGlvbiBvZiBPcGVuQVBJIFdlYiBTZXJ2aWNlIHdpdGggU3ByaW5nIEJvb3QuCgpXaXRoIE9wZW5BUEksIHlvdSBjYW4gZGVmaW5lIHRoZSBtb2RlbHMgYW5kIHlvdXIgc2VydmljZSBzcGVjaWZpY2F0aW9ucyBpbiB5YW1sIGZvcm1hdCBhbmQgYnVpbGQgdGhlIHNrZWxldG9uIG9mIHlvdXIgd2ViIHNlcnZpY2UuCgpUaGVyZSBhcmUgZ29vZCBhbmQgYmFkIHBhcnRzIGFuZCBJJ20gZ29pbmcgdG8gbGlzdCBteSBwZXJzb25hbCBvcGluaW9uczsKClRoZSBnb29kIHBhcnRzIG9mIE9wZW5BUEkgYXJlOwoKLSBUaGUgYm9pbGVycGxhdGUgY29kZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZAotIFlvdSBjYW4gZGVmaW5lIHRoZSBtb2RlbHMgd2l0aGluIHRoZSB5YW1sIGZpbGVzIGFuZCB0aGV5IGFyZSBhdXRvLWdlbmVyYXRlZAotIFRoZSBlbmRwb2ludCBza2VsZXRvbiBpcyBhbHNvIGdlbmVyYXRlZC4gWW91IGNhbiBlaXRoZXIgdXNlIHRoZSBnZW5lcmF0ZWQgY29udHJvbGxlciBvciBvdmVycmlkZSBpdCB0byBjdXN0b21pemUgaXQuCgpUaGUgYmFkIHBhcnRzIG9mIE9wZW5BUEkgYXJlOwoKLSBZb3UgbmVlZCB0byBkaWcgYXJvdW5kIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0aGUgbmV0IGZvciB0aGUgdXNlIG9mIHBsdWdpbnMKLSBJdCBhZGRzIGNvbXBsZXhpdHkgd2hlbiB5b3UgYXJlIHVzaW5nIE9wZW5BUEkgd2l0aGluIGEgbXVsdGktbW9kdWxlIHByb2plY3QKLSBVc2luZyB0aGUgZ2VuZXJhdGVkIG1vZGVscyBpbiBhIGRpc3RpbmN0IHNoYXJlZCBwcm9qZWN0IGFuZCBpbmplY3RpbmcgdGhlIHJlc291cmNlcyBpcyBub3QgZWFzeQoKSW4gdGhpcyBwcm9qZWN0LCBJJ20gbm90IGdvaW5nIHRvIGRpdmUgaW50byB0aGVzZSB0b3BpY3MuIFRoaXMgcHJvamVjdCB3aWxsIGdpdmUgeW91IGEgc2ltcGxlIGV4YW1wbGUgb2YgT3BlbkFQSSB3ZWIgc2VydmljZS4KCgpbVE9DXSgjdG9jKQoKCiAxIFNldHVwCi0tLS0tLS0tCldlIHVzZSBPcGVuQVBJIHRvIGdlbmVyYXRlIG1vZGVscywgZ2VuZXJhdGUgYSB0ZW1wbGF0ZSBmb3IgdGhlIHdlYiBzZXJ2aWNlIGFuZCBhbHNvIGhlbHBlciBjbGFzc2VzLiBTbyB0aGF0IHdpdGhpbiBvbmUgc2ltcGxlIHlhbWwgZmlsZSwgdGhlIG1vZGVsIGNsYXNzZXMgYW5kIGFsc28gdGhlIGFwaSB0ZW1wbGF0ZSBpcyBnZW5lcmF0ZWQgZm9yIHRoZSBjb250cm9sbGVyIG9mIHRoZSB3ZWIgc2VydmljZS4KClRoZXJlIGFyZSB0d28gZmlsZXMgdGhhdCBkb2VzIHRoZSBtYWdpYyBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGNvZGUvdGVtcGxhdGU7CgotIFRoZSBPcGVuQVBJIHNwZWMgZmlsZShzKSBpbiB5YW1sIGZvcm1hdCwgdGhhdCBkZWZpbmUocykgdGhlIHdlYiBzZXJ2aWNlIHNrZWxldG9uIGFuZCBzY2hlbWFzLiBUaGVzZSBmaWxlKHMpIHBsYWNlZCBpbiB0aGUgKipzcmMvbWFpbi9yZXNvdXJjZXMvb3BlbmFwaSoqIGZvbGRlci4KLSBUaGUgYnVpbGQgcGx1Z2luIHRoYXQgZ2VuZXJhdGVzIHRoZSBjb2RlIGJhc2VkIG9uIHRoZSBPcGVuQVBJIHlhbWwgZmlsZS4gVGhpcyBpcyBkZWZpbmVkIGluIHRoZSAqKnBvbSoqIGZpbGUuCgpJbiB0aGUgcG9tIGZpbGUsIGJ1aWxkL3BsdWdpbiBzZWN0aW9uIGhhcyByZWZlcmVuY2UgZm9yIHNwZWMgZmlsZSBhbmQgcGFja2FnZSBuYW1lcyBmb3IgbW9kZWwgYW5kIHNlcnZpY2UgcGFja2FnZXMuIFBsdWdpbiB1c2VzIHRoZSB5YW1sIHNwZWMgYW5kIGdlbmVyYXRlcyB0aGUgbW9kZWwvc2VydmljZSBjbGFzc2VzIHVuZGVyIHRoZSBkZWZpbmVkIHBhY2thZ2VzLgpUaGVuIHRoZXNlIGdlbmVyYXRlZCBmaWxlcyBhcmUgcGxhY2VkIGluIHRoZSB0YXJnZXQvZ2VuZXJhdGVkLXNvdXJjZXMvc3JjIGZvbGRlciBhcyBjYW4gYmUgc2VlbiBiZWxvdzsKCiFbZ2VuZXJhdGVkX2ZpbGVzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYnpkZ24vb3Blbi1hcGktd2ViLXNlcnZpY2UtZXhhbXBsZS9tYWluL21pc2MvMDFfZ2VuZXJhdGVkX2ZpbGVzLlBORykKCkFmdGVyIGltcG9ydGluZyBpdCB0byBhbiBJREUgKEkgdXNlIGVjbGlwc2UpLCB5b3UgbmVlZCB0byBhZGQgdGhlIE9wZW5BUEkgZ2VuZXJhdGVkIGNvZGUgaW50byB0aGUgYnVpbGQgcGF0aC4KCjEuIFRoZSBmaWxlcyBuZWVkIHRvIGJlIGFkZGVkIHdpbGwgYmUgdW5kZXIgKip0YXJnZXQvZ2VuZXJhdGVkLXNvdXJjZXMvc3JjL21haW4vamF2YSoqCgohW3RhcmdldF9nZW5lcmF0ZWRfZmlsZXNdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9iemRnbi9vcGVuLWFwaS13ZWItc2VydmljZS1leGFtcGxlL21haW4vbWlzYy8wMl90YXJnZXRfZ2VuZXJhdGVkX2ZpbGVzLlBORykKCjIuIFJpZ2h0IGNsaWNrIHRvIHRoaXMgZm9sZGVyIGFuZCBhZGQgaXQgdG8gdGhlIGJ1aWxkIHBhdGgKCiFbcmlnaHRfY2xpY2tfZ2VuZXJhdGVkX2ZpbGVzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYnpkZ24vb3Blbi1hcGktd2ViLXNlcnZpY2UtZXhhbXBsZS9tYWluL21pc2MvMDNfYnVpbGRfcGF0aC5QTkcpCgozLiBTZWUgdGhlIGdlbmVyYXRlZCBjb2RlIGlzIHZpc2libGUgaW4gdGhlIHByb2plY3QKCiFbYWRkX2dlbmVyYXRlZF9maWxlc190b19idWlsZF9wYXRoXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYnpkZ24vb3Blbi1hcGktd2ViLXNlcnZpY2UtZXhhbXBsZS9tYWluL21pc2MvMDRfYWRkZWRfYnVpbGRfcGF0aC5QTkcpCgoKW1RPQ10oI3RvYykKCgogMiBPcGVuQVBJIFNwZWNzCi0tLS0tLS0tLS0tLS0tLS0KVGhlIHNwZWMgZmlsZSBkZWZpbmVzIHRoZSBlbmRwb2ludHMsIGFuZCB0aGUgc3RydWN0dXJlIG9mIHRoZSBtb2RlbCBjbGFzc2VzIHRob3NlIGFyZSB1c2VkIGluIGVuZHBvaW50cy4gV2UgaGF2ZSB0d28gZ2V0IG9wZXJhdGlvbnMgYW5kIG9uZSBwb3N0IG9wZXJhdGlvbi4gVGhlc2Ugb3BlcmF0aW9ucyB1c2VzIFBlcnNvbiBtb2RlbCBmb3IgcmVxdWVzdCBvciByZXNwb25zZSBhbmQgb25lIG9wZXJhdGlvbiByZXR1cm5zIGFuIGFycmF5IG9mIFBlcnNvbiBtb2RlbC4KCllvdSBjYW4gc2VlIHRoZSBmaWxlIGluIHByb2plY3Qgc291cmNlcyBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2J6ZGduL29wZW4tYXBpLXdlYi1zZXJ2aWNlLWV4YW1wbGUvYmxvYi9tYWluL3NyYy9tYWluL3Jlc291cmNlcy9vcGVuYXBpL3BlcnNvbi1hcGkueWFtbCkuIFRoZSBjb250ZW50IG9mIHRoZSBmaWxlIGlzIGFzIGZvbGxvd3M7CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4zCmluZm86CiAgdGl0bGU6IFBlcnNvbiBTZXJ2aWNlCiAgZGVzY3JpcHRpb246IFB1YmxpYyBzZXJ2aWNlIGZvciBxdWVyeWluZyB0aGUgcGVyc29ucwogIHZlcnNpb246IDEuMApzZXJ2ZXJzOgogIC0gZGVzY3JpcHRpb246IExvY2FsIGRldmVsb3BtZW50IGVudmlyb25tZW50CiAgICB1cmw6IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC92MQogIC0gZGVzY3JpcHRpb246IEt1YmVybmV0ZXMgdGVzdCBlbnZpcm9ubWVudAogICAgdXJsOiBodHRwOi8vc29tZS1saW5rLWhlcmUuY29tL3YxCiAgLSBkZXNjcmlwdGlvbjogS3ViZXJuZXRlcyBhY2MgZW52aXJvbm1lbnQKICAgIHVybDogaHR0cDovL3NvbWUtbGluay1oZXJlLmNvbS92MQogIC0gZGVzY3JpcHRpb246IEt1YmVybmV0ZXMgcHJvZHVjdGlvbiBlbnZpcm9ubWVudAogICAgdXJsOiBodHRwOi8vc29tZS1saW5rLWhlcmUuY29tL3YxCgpwYXRoczoKICAvcGVyc29uL3tpZH06CiAgICBnZXQ6CiAgICAgIG9wZXJhdGlvbklkOiBnZXRQZXJzb24KICAgICAgdGFnczoKICAgICAgICAtIHBlcnNvbgogICAgICBwYXJhbWV0ZXJzOgogICAgICAgIC0gbmFtZTogaWQKICAgICAgICAgIGluOiBwYXRoCiAgICAgICAgICBkZXNjcmlwdGlvbjogcGVyc29uIGlkCiAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICAgIGZvcm1hdDogaW50MzIKICAgICAgcmVzcG9uc2VzOgogICAgICAgIDIwMDoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBQZXJzb24gcmVzdWx0cwogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGVyc29uJwogICAgICAgIDQwMDoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBub3QgYSB2YWxpZCBwZXJzb24KCiAgL3BlcnNvbjoKICAgIGdldDoKICAgICAgb3BlcmF0aW9uSWQ6IGdldFBlcnNvbnMKICAgICAgdGFnczoKICAgICAgICAtIHBlcnNvbgogICAgICByZXNwb25zZXM6CiAgICAgICAgMjAwOgogICAgICAgICAgZGVzY3JpcHRpb246IFBlcnNvbiByZXN1bHRzCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXJzb25MaXN0JwogICAgICAgIDQwMDoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBub3QgYSB2YWxpZCBwZXJzb24KCiAgICBwb3N0OgogICAgICBvcGVyYXRpb25JZDogYWRkUGVyc29uCiAgICAgIHRhZ3M6CiAgICAgICAgLSBwZXJzb24KICAgICAgcmVxdWVzdEJvZHk6CiAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICBjb250ZW50OgogICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXJzb24nCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAyMDA6CiAgICAgICAgICBkZXNjcmlwdGlvbjogWm9la3Jlc3VsdGF0ZW4KICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BlcnNvbicKICAgICAgICA0MDA6CiAgICAgICAgICBkZXNjcmlwdGlvbjogbm90IGEgdmFsaWQgcGVyc29uCgpjb21wb25lbnRzOgogIHNjaGVtYXM6CiAgICBQZXJzb246CiAgICAgIHR5cGU6IG9iamVjdAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGlkOgogICAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICAgIGRlc2NyaXB0aW9uOiBpZCBvZiB0aGUgcGVyc29uCiAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICBmb3JtYXQ6IGludDMyCiAgICAgICAgbmFtZToKICAgICAgICAgIGRlc2NyaXB0aW9uOiBuYW1lIG9mIHRoZSBwZXJzb24KICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIGFnZToKICAgICAgICAgIGRlc2NyaXB0aW9uOiBhZ2Ugb2YgdGhlIHBlcnNvbgogICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgZm9ybWF0OiBpbnQzMgogICAgUGVyc29uTGlzdDoKICAgICAgdHlwZTogYXJyYXkKICAgICAgaXRlbXM6CiAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BlcnNvbicgCgpgYGAKClVuZGVyIHRoZSAqKnBhdGhzKiogc2VjdGlvbiwgdGhlIGVuZHBvaW50IGlzIGRlZmluZWQuIE9wZW5BUEkgcGx1Z2luIHdpbGwgZGVmaW5lIHRoZSBzZXJ2aWNlIGNsYXNzZXMgYmFzZWQgb24gdGhpcyBzZWN0aW9uLiBVbmRlciB0aGUgKipjb21wb25lbnRzKiogc2VjdGlvbiB0aGVyZSBpcyAqKnNjaGVtYXMqKiB3aGVyZSB0aGUgbW9kZWwgY2xhc3NlcyBhcmUgZGVmaW5lZC4gT3BlbkFQSSB3aWxsIGdlbmVyYXRlIHRoZSBtb2RlbCBjbGFzc2VzIGJhc2VkIG9uIHRoaXMgc2VjdGlvbi4KCkltcG9ydGFudCB0byBub3RpZnkgdGhhdCB0aGUgc2VydmljZSB1c2VzIHRoZXNlIGdlbmVyYXRlZCBtb2RlbHMuIElmIHlvdSB1c2UgbWF2ZW4gaW4gY29tbWFuZCBsaW5lLCB0aGUgZ2VuZXJhdG9yIHdpbGwgbm90aWZ5IHlvdSBpZiB0aGVyZSBhcmUgaW5jb25zaXN0ZW5jaWVzLgoKCltUT0NdKCN0b2MpCgoKIDMgT3BlbkFQSSBQbHVnaW4KLS0tLS0tLS0tLS0tLS0tLS0KT3BlbkFQSSBwbHVnaW4gZ2VuZXJhdGVzIHRoZSBjb2RlIGJhc2VkIG9uIHlhbWwgc3BlY3MuIEluIHRoZSBidWlsZCBbcGx1Z2luIHNlY3Rpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9iemRnbi9vcGVuLWFwaS13ZWItc2VydmljZS1leGFtcGxlL2Jsb2IvbWFpbi9wb20ueG1sKTsKCmBgYHhtbAo8YnVpbGQ+CiAgICA8cGx1Z2lucz4KICAgICAgICA8cGx1Z2luPgogICAgICAgICAgICA8Z3JvdXBJZD5vcmcub3BlbmFwaXRvb2xzPC9ncm91cElkPgogICAgICAgICAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICAgICAgICAgIDx2ZXJzaW9uPiR7b3BlbmFwaS1nZW5lcmF0b3ItbWF2ZW4tcGx1Z2luLnZlcnNpb259PC92ZXJzaW9uPgogICAgICAgICAgICA8ZXhlY3V0aW9ucz4KICAgICAgICAgICAgICAgIDxleGVjdXRpb24+CiAgICAgICAgICAgICAgICAgICAgPHBoYXNlPmdlbmVyYXRlLXNvdXJjZXM8L3BoYXNlPgogICAgICAgICAgICAgICAgICAgIDxnb2Fscz4KICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWw+Z2VuZXJhdGU8L2dvYWw+CiAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4KICAgICAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0U3BlYz4ke3Byb2plY3QuYmFzZWRpcn0vc3JjL21haW4vcmVzb3VyY2VzL29wZW5hcGkvcGVyc29uLWFwaS55YW1sPC9pbnB1dFNwZWM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnZW5lcmF0b3JOYW1lPnNwcmluZzwvZ2VuZXJhdG9yTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgPG91dHB1dD4ke3Byb2plY3QuYnVpbGQuZGlyZWN0b3J5fS9nZW5lcmF0ZWQtc291cmNlcy88L291dHB1dD4KICAgICAgICAgICAgICAgICAgICAgICAgPGdlbmVyYXRlTW9kZWxzPnRydWU8L2dlbmVyYXRlTW9kZWxzPgogICAgICAgICAgICAgICAgICAgICAgICA8Z2VuZXJhdGVTdXBwb3J0aW5nRmlsZXM+dHJ1ZTwvZ2VuZXJhdGVTdXBwb3J0aW5nRmlsZXM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdXBwb3J0aW5nRmlsZXNUb0dlbmVyYXRlPkFwaVV0aWwuamF2YTwvc3VwcG9ydGluZ0ZpbGVzVG9HZW5lcmF0ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPG1vZGVsUGFja2FnZT5pby5naXRodWIuYnpkZ24ub3Blbi1hcGktd2ViLXNlcnZpY2UtZXhhbXBsZS5tb2RlbDwvbW9kZWxQYWNrYWdlPgogICAgICAgICAgICAgICAgICAgICAgICA8YXBpUGFja2FnZT5pby5naXRodWIuYnpkZ24ub3Blbi1hcGktd2ViLXNlcnZpY2UtZXhhbXBsZS5zZXJ2aWNlPC9hcGlQYWNrYWdlPgogICAgICAgICAgICAgICAgICAgICAgICA8c2tpcFZhbGlkYXRlU3BlYz50cnVlPC9za2lwVmFsaWRhdGVTcGVjPgogICAgICAgICAgICAgICAgICAgICAgICA8Y29uZmlnT3B0aW9ucz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnRlcmZhY2VPbmx5PnRydWU8L2ludGVyZmFjZU9ubHk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8amF2YTExPnRydWU8L2phdmExMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkYXRlTGlicmFyeT5qYXZhODwvZGF0ZUxpYnJhcnk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlbkFwaU51bGxhYmxlPmZhbHNlPC9vcGVuQXBpTnVsbGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZG9jdW1lbnRhdGlvblByb3ZpZGVyPm5vbmU8L2RvY3VtZW50YXRpb25Qcm92aWRlcj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbm5vdGF0aW9uTGlicmFyeT5ub25lPC9hbm5vdGF0aW9uTGlicmFyeT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWdPcHRpb25zPgogICAgICAgICAgICAgICAgICAgICAgICA8Y29uZmlnSGVscD5mYWxzZTwvY29uZmlnSGVscD4KICAgICAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CiAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KICAgICAgICAgICAgPC9leGVjdXRpb25zPgogICAgICAgIDwvcGx1Z2luPgogICAgPC9wbHVnaW5zPgo8L2J1aWxkPgpgYGAKCklmIHlvdSBsb29rIGF0IHRoZSBjb25maWd1cmF0aW9uLCBhIGZldyBrZXlzIGFyZSBpbXBvcnRhbnQ7Cgp8IHZhcmlhYmxlIHwgZGVzY3JpcHRpb24gfAp8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfAp8IGlucHV0U3BlYyB8IFRoaXMgaXMgd2hlcmUgeW91IHJlZmVyZW5jZSB5b3VyIEFwaSBzcGVjLCBpbiBvdXIgZXhhbXBsZSwgaXQgaXMgdGhlIHBlcnNvbi1hcGkueWFtbCBmaWxlIHwKfCBvdXRwdXQgfCBUaGlzIGlzIHRoZSBvdXRwdXQgZm9sZGVyIHdoZXJlIGFsbCB0aGUgZ2VuZXJhdGVkIGNvZGUgaXMgcGxhY2VkLiBVbmRlciB0aGUgcHJvamVjdCBidWlsZCBkaXJlY3RvcnksIHdoaWNoIGlzIHRhcmdldCwgaXQncyBwbGFjZWQgaW4gKipnZW5lcmF0ZWQtc291cmNlcyoqIGZvbGRlciB8CnwgZ2VuZXJhdGVNb2RlbHMgfCBUaGlzIGRldGVybWluZXMgaWYgdGhlIG1vZGVsIGNsYXNzZXMgYXJlIGdlbmVyYXRlZCwgc2V0IHRvICoqdHJ1ZSoqIHwKfCBnZW5lcmF0ZVN1cHBvcnRpbmdGaWxlcyB8IFRoaXMgaXMgdGhlIHV0aWxpdHkgZmlsZSB0aGF0IHBsdWdpbiBnZW5lcmF0ZXMsIHNldCB0byAqKnRydWUqKiB8Cnwgc3VwcG9ydGluZ0ZpbGVzVG9HZW5lcmF0ZSB8IFRoZSBuYW1lIG9mIHRoZSB1dGlsaXR5IGZpbGUsIGluIG91ciBleGFtcGxlICoqQXBpVXRpbC5qYXZhKiogfAp8IG1vZGVsUGFja2FnZSB8IFRoZSBwYWNrYWdlIHRoYXQgdGhlIG1vZGVsIGdlbmVyYXRlZCBmaWxlcyBwbGFjZWQgfAp8IGFwaVBhY2thZ2UgfCBUaGUgcGFja2FnZSB0aGF0IHRoZSBzZXJ2aWNlIGdlbmVyYXRlZCBmaWxlcyAgcGxhY2VkIHwKfCBza2lwVmFsaWRhdGVTcGVjIHwgRG9lcyB0aGUgdmFsaWRhdGlvbiBpbiB0aGUgZ2VuZXJhdGlvbi4gSXQncyBzZXQgdG8gKip0cnVlKiogaW4gdGhpcyBleGFtcGxlIGJ1dCBzb21ldGltZXMgdXNlZnVsIHRvIHNldCB0byAqKmZhbHNlKiogd2hlbiB1c2luZyBtdWx0aW1vZHVsZSBwcm9qZWN0cyB8CgoKW1RPQ10oI3RvYykKCgogNCBUZXN0aW5nIHdpdGggUG9zdG1hbiBDb2xsZWN0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSSd2ZSBwbGFjZWQgYSBzaW1wbGUgcG9zdG1hbiBjb2xsZWN0aW9uIFt1bmRlciB0aGUgbWlzYyBmb2xkZXIsIGhlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9iemRnbi9vcGVuLWFwaS13ZWItc2VydmljZS1leGFtcGxlL2Jsb2IvbWFpbi9taXNjL09wZW5BUElXZWJTZXJ2aWNlRXhhbXBsZS5wb3N0bWFuX2NvbGxlY3Rpb24uanNvbikuIFlvdSBuZWVkIHRvIGltcG9ydCB0aGlzIGNvbGxlY3Rpb24gaW4gUG9zdG1hbiB0byB0ZXN0IHRoZSBleGFtcGxlIHdlYiBzZXJ2aWNlLgoKIVtwb3N0bWFuX2NvbGxlY3Rpb25dKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9iemRnbi9vcGVuLWFwaS13ZWItc2VydmljZS1leGFtcGxlL21haW4vbWlzYy8wNV9wb3N0bWFuX2NvbGxlY3Rpb24uUE5HKQoKSW5pdGlhbGx5IHRoZSAqKnBlcnNvbioqIHJlcG9zaXRvcnkgd2lsbCBiZSBlbXB0eS4gVGhlIGltcGxlbW50YXRpb24gaXMgYSBzaW1wbGUgc3R1YiBmb3IgdGVzdGluZywgdXNpbmcgYW4gQXJyYXlMaXN0IHRvIHN0b3JlIHRoZSBwb3N0ZWQgKipQZXJzb24qKiBvYmplY3RzLgoKWW91IGNhbiBwb3N0IHZpYSB0aGUgUG9zdG1hbjsKCiFbcG9zdG1hbl9jb2xsZWN0aW9uX3Bvc3RfMV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2J6ZGduL29wZW4tYXBpLXdlYi1zZXJ2aWNlLWV4YW1wbGUvbWFpbi9taXNjLzA2X3Bvc3RtYW5fcG9zdF8xLlBORykKIVtwb3N0bWFuX2NvbGxlY3Rpb25fcG9zdF8yXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYnpkZ24vb3Blbi1hcGktd2ViLXNlcnZpY2UtZXhhbXBsZS9tYWluL21pc2MvMDdfcG9zdG1hbl9wb3N0XzIuUE5HKQoKVGhlbiB5b3UgY2FuIGdldCAqKlBlcnNvbioqIGJ5IGlkOwoKIVtwb3N0bWFuX2NvbGxlY3Rpb25fZ2V0X2J5X2lkXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYnpkZ24vb3Blbi1hcGktd2ViLXNlcnZpY2UtZXhhbXBsZS9tYWluL21pc2MvMDhfcG9zdG1hbl9nZXRfYnlfaWQuUE5HKQoKT3IgeW91IGNhbiB0aGUgd2hvbGUgKipQZXJzb24qKiByZXBvc2l0b3J5OwoKIVtwb3N0bWFuX2NvbGxlY3Rpb25fZ2V0X2FsbF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2J6ZGduL29wZW4tYXBpLXdlYi1zZXJ2aWNlLWV4YW1wbGUvbWFpbi9taXNjLzA5X3Bvc3RtYW5fZ2V0X2FsbC5QTkcpCgoKW1RPQ10oI3RvYykKCg== readmeEtag: '"7ddc82d1146ca2e105d0dee5873078a19768fbed"' readmeLastModified: Sun, 29 Jan 2023 20:38:10 GMT repositoryId: 594733429 description: Demo Project for Open API Web Service with Spring Boot created: '2023-01-29T13:35:15Z' updated: '2024-04-18T22:57:20Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: bzdgn logo: https://avatars.githubusercontent.com/u/1220904?v=4 repoEtag: '"9e59a12712e8d95d8ede0e923ff124f0c53983a0a529f8618fa45be9aae2f32f"' repoLastModified: Thu, 18 Apr 2024 22:57:20 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/egomobile/node-swagger-proxy v3: true id: 29a02c96fca01f0c28e7b062d0452c93 repositoryMetadata: base64Readme: >- WyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L0BlZ29tb2JpbGUvc3dhZ2dlci1wcm94eS5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AZWdvbW9iaWxlL3N3YWdnZXItcHJveHkpClshW2xhc3QgYnVpbGRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3dvcmtmbG93L3N0YXR1cy9lZ29tb2JpbGUvbm9kZS1zd2FnZ2VyLXByb3h5L1B1Ymxpc2gpXShodHRwczovL2dpdGh1Yi5jb20vZWdvbW9iaWxlL25vZGUtc3dhZ2dlci1wcm94eS9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBUHVibGlzaCkKWyFbUFJzIFdlbGNvbWVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvUFJzLXdlbGNvbWUtYnJpZ2h0Z3JlZW4uc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9naXRodWIuY29tL2Vnb21vYmlsZS9ub2RlLXN3YWdnZXItcHJveHkvcHVsbHMpCgojIEBlZ29tb2JpbGUvc3dhZ2dlci1wcm94eQoKPiBFeHRlbnNpb24gZm9yIFtAZWdvbW9iaWxlL2h0dHAtc2VydmVyXShodHRwczovL2dpdGh1Yi5jb20vZWdvbW9iaWxlL25vZGUtaHR0cC1zZXJ2ZXIpLCB3aGljaCBjb25uZWN0cyB0byBtdWx0aXBseSBbU3dhZ2dlciAvIE9wZW5BUEldKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYWJvdXQvKSBpbnN0YW5jZXMgYW5kIG1lcmdlIHRoZWlyIGRvY3VtZW50cyB0byBvbmUuCgojIyBJbnN0YWxsCgpFeGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIHlvdXIgcHJvamVjdCBmb2xkZXIsIHdoZXJlIHlvdXIKYHBhY2thZ2UuanNvbmAgZmlsZSBpcyBzdG9yZWQ6CgpgYGBiYXNoCm5wbSBpbnN0YWxsIC0tc2F2ZSBAZWdvbW9iaWxlL3N3YWdnZXItcHJveHkKYGBgCgojIyBVc2FnZQoKYGBgdHlwZXNjcmlwdAppbXBvcnQgY3JlYXRlU2VydmVyIGZyb20gIkBlZ29tb2JpbGUvaHR0cC1zZXJ2ZXIiOwppbXBvcnQgeyBzZXR1cFN3YWdnZXJQcm94eSB9IGZyb20gIkBlZ29tb2JpbGUvc3dhZ2dlci1wcm94eSI7Cgphc3luYyBmdW5jdGlvbiBtYWluKCkgewogIGNvbnN0IGFwcCA9IGNyZWF0ZVNlcnZlcigpOwoKICBzZXR1cFN3YWdnZXJQcm94eShhcHAsIHsKICAgIGJhc2VEb2N1bWVudDogewogICAgICBpbmZvOiB7CiAgICAgICAgdGl0bGU6ICJNeSBtZXJnZWQgQVBJIiwKICAgICAgICB2ZXJzaW9uOiAiMS4wLjAiLAogICAgICB9LAogICAgfSwKCiAgICBzb3VyY2VzOiBbCiAgICAgIHsKICAgICAgICB1cmw6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9tYWluL2V4YW1wbGVzL3YzLjAvbGluay1leGFtcGxlLmpzb24iLAogICAgICB9LAogICAgICB7CiAgICAgICAgdXJsOiAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vbWFpbi9leGFtcGxlcy92My4wL2NhbGxiYWNrLWV4YW1wbGUueWFtbCIsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICB1cmw6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9tYWluL2V4YW1wbGVzL3YzLjAvcGV0c3RvcmUueWFtbCIsCiAgICAgIH0sCiAgICBdLAogIH0pOwoKICBhd2FpdCBhcHAubGlzdGVuKDgwODApOwoKICBjb25zdCBiYXNlVVJMID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHthcHAucG9ydH0vc3dhZ2dlcmA7CgogIGNvbnNvbGUubG9nKCJZb3Ugc2hvdWxkIG5vdyBiZSBhYmxlIHRvIGFjY2VzcyBkb2N1bWVudGF0aW9uIGF0OiIpOwogIGNvbnNvbGUubG9nKGAtICR7YmFzZVVSTH1gKTsKCiAgY29uc29sZS5sb2coKTsKCiAgY29uc29sZS5sb2coIllvdSBjYW4gZG93bmxvYWQgZG9jdW1lbnRhdGlvbiBhcyBmaWxlcyBmcm9tOiIpOwogIGNvbnNvbGUubG9nKGAtIEpTT046ICR7YmFzZVVSTH0vanNvbmApOwogIGNvbnNvbGUubG9nKGAtIFlBTUw6ICR7YmFzZVVSTH0veWFtbGApOwp9CgptYWluKCkuY2F0Y2goY29uc29sZS5lcnJvcik7CmBgYAoKIyMgRG9jdW1lbnRhdGlvbgoKVGhlIEFQSSBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZApbaGVyZV0oaHR0cHM6Ly9lZ29tb2JpbGUuZ2l0aHViLmlvL25vZGUtc3dhZ2dlci1wcm94eS8pLgo= readmeEtag: '"3304865457103efae277209b06df8d1cd5ca11a9"' readmeLastModified: Fri, 19 Aug 2022 07:26:36 GMT repositoryId: 504600843 description: >- Extension for @egomobile/http-server, which connects to multiply Swagger / OpenAPI instances and merge their documents to one. created: '2022-06-17T16:21:27Z' updated: '2024-05-22T17:48:19Z' language: TypeScript archived: true stars: 1 watchers: 0 forks: 0 owner: egomobile logo: https://avatars.githubusercontent.com/u/83799725?v=4 license: LGPL-3.0 repoEtag: '"361a3f06abb714c0a5fe97419ed5f7f6688e1c15d1dc34cc15d6b4c3567c20eb"' repoLastModified: Wed, 22 May 2024 17:48:19 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/akeyless-community/akeyless-openapi-spec-extractor v3: true id: 51e923d150168ae32ce124993762196e repositoryMetadata: base64Readme: >- IyBBa2V5bGVzcyBPcGVuQVBJIFNwZWMgRXh0cmFjdG9yCgpbIVtMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtQXBhY2hlJTIwMi4wLWJsdWUuc3ZnKV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9BcGFjaGUtMi4wKQoKVGhlIEFrZXlsZXNzIE9wZW5BUEkgU3BlYyBFeHRyYWN0b3IgaXMgYSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIChDTEkpIHRvb2wgdGhhdCBhbGxvd3MgeW91IHRvIGV4dHJhY3Qgc3BlY2lmaWMgZW5kcG9pbnRzIGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIChTd2FnZ2VyKSBhbG9uZyB3aXRoIGFsbCB0aGUgcmVsZXZhbnQgZGV0YWlscyBvZiB0aGUgZW5kcG9pbnQuIEl0IHByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgdG8gZmV0Y2ggT3BlbkFQSSBzcGVjcyBmcm9tIGEgVVJMIG9yIHByb2Nlc3MgbG9jYWwgT3BlbkFQSSBzcGVjIGZpbGVzLgoKIyMgUHJvamVjdCBHZW5lc2lzIGFuZCBQdXJwb3NlCgpUaGUgQWtleWxlc3MgT3BlbkFQSSBTcGVjIEV4dHJhY3RvciBwcm9qZWN0IHdhcyBib3JuIG91dCBvZiB0aGUgbmVlZCB0byBleHRyYWN0IGNvbXByZWhlbnNpdmUgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBlbmRwb2ludCBmcm9tIGEgbGFyZ2UgbGlzdCBvZiBlbmRwb2ludHMgaW4gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uLiBUaGUgZ29hbCB3YXMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc2VuZCB0aGlzIGluZm9ybWF0aW9uIHRvIGEgbGFyZ2UgbGFuZ3VhZ2UgbW9kZWwgdG8gYXNzaXN0IHdpdGggY29kZSBnZW5lcmF0aW9uIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoYXQgZW5kcG9pbnQgdXNpbmcgdG9vbHMgZm9yIGFnZW50aWMgd29ya2Zsb3dzLgoKQnkgZXh0cmFjdGluZyBhbGwgdGhlIHJlbGV2YW50IGRldGFpbHMgb2YgYW4gZW5kcG9pbnQsIGluY2x1ZGluZyBpbnB1dHMgYW5kIG91dHB1dHMsIHRoZSBBa2V5bGVzcyBPcGVuQVBJIFNwZWMgRXh0cmFjdG9yIHNpbXBsaWZpZXMgdGhlIHByb2Nlc3Mgb2YgaW50ZWdyYXRpbmcgd2l0aCBBUElzIGFuZCBmYWNpbGl0YXRlcyB0aGUgZGV2ZWxvcG1lbnQgb2YgaW50ZWxsaWdlbnQgYWdlbnRzIHRoYXQgY2FuIHVuZGVyc3RhbmQgYW5kIGludGVyYWN0IHdpdGggc3BlY2lmaWMgZW5kcG9pbnRzIGJhc2VkIG9uIHRoZSBleHRyYWN0ZWQgaW5mb3JtYXRpb24uCgojIyBGZWF0dXJlcwoKLSBGZXRjaCBPcGVuQVBJIHNwZWNzIGZyb20gYSBVUkwKLSBQcm9jZXNzIGxvY2FsIE9wZW5BUEkgc3BlYyBmaWxlcwotIFByb2Nlc3MgT3BlbkFQSSBzcGVjcyBmcm9tIHN0ZGluCi0gRXh0cmFjdCBzcGVjaWZpYyBlbmRwb2ludHMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGgKLSBPdXRwdXQgdGhlIGV4dHJhY3RlZCBkYXRhIGluIEpTT04gb3IgWUFNTCBmb3JtYXQKLSBDdXN0b21pemUgbG9nZ2luZyBsZXZlbHMgZm9yIGJldHRlciB2aXNpYmlsaXR5IGFuZCBkZWJ1Z2dpbmcKCiMjIEluc3RhbGxhdGlvbgoKVG8gaW5zdGFsbCB0aGUgQWtleWxlc3MgT3BlbkFQSSBTcGVjIEV4dHJhY3RvciwgbWFrZSBzdXJlIHlvdSBoYXZlIFtOb2RlLmpzXShodHRwczovL25vZGVqcy5vcmcpIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbS4gVGhlbiwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYGJhc2gKbnBtIGluc3RhbGwgLWcgYWtleWxlc3Mtb3BlbmFwaS1zcGVjLWV4dHJhY3RvcgpgYGAKClRoaXMgd2lsbCBpbnN0YWxsIHRoZSBDTEkgdG9vbCBnbG9iYWxseSBvbiB5b3VyIHN5c3RlbS4KCiMjIFVzYWdlCgpUaGUgQWtleWxlc3MgT3BlbkFQSSBTcGVjIEV4dHJhY3RvciBwcm92aWRlcyB0aHJlZSBjb21tYW5kczogYGZldGNoYCwgYGxvY2FsYCwgYW5kIGBzdGRpbmAuCgojIyMgRmV0Y2ggQ29tbWFuZAoKVGhlIGBmZXRjaGAgY29tbWFuZCBhbGxvd3MgeW91IHRvIGZldGNoIGFuIE9wZW5BUEkgc3BlYyBmcm9tIGEgVVJMIGFuZCBleHRyYWN0IGEgc3BlY2lmaWMgZW5kcG9pbnQuCgpgYGBiYXNoCm9wZW5hcGktZXh0cmFjdG9yIGZldGNoIC11IDx1cmw+IC1wIDxwYXRoPiBbb3B0aW9uc10KYGBgCgotIGAtdSwgLS11cmwgPHVybD5gOiBVUkwgb2YgdGhlIE9wZW5BUEkgc3BlYyAocmVxdWlyZWQpCi0gYC1wLCAtLXBhdGggPHBhdGg+YDogVGhlIHBhdGggdG8gdGhlIGRlc2lyZWQgZW5kcG9pbnQgd2l0aGluIHRoZSBPcGVuQVBJIHNwZWMgKGluY2x1ZGluZyB0aGUgbGVhZGluZyBzbGFzaCksIGZvciBleGFtcGxlLCAiL2F1dGgiIChyZXF1aXJlZCkKLSBgLW8sIC0tb3V0cHV0IDxvdXRwdXQ+YDogT3V0cHV0IHR5cGUgKGRlZmF1bHQ6ICJqc29uIik6ICJqc29uIiBvciAieWFtbCIKLSBgLWwsIC0tbG9nbGV2ZWwgPGxldmVsPmA6IExvZ2dpbmcgbGV2ZWwgKGRlZmF1bHQ6ICJlcnJvciIpOiAiZXJyb3IiLCAid2FybiIsICJpbmZvIiwgImRlYnVnIgoKIyMjIExvY2FsIENvbW1hbmQKClRoZSBgbG9jYWxgIGNvbW1hbmQgYWxsb3dzIHlvdSB0byBwcm9jZXNzIGEgbG9jYWwgT3BlbkFQSSBzcGVjIGZpbGUgYW5kIGV4dHJhY3QgYSBzcGVjaWZpYyBlbmRwb2ludC4KCmBgYGJhc2gKb3BlbmFwaS1leHRyYWN0b3IgbG9jYWwgLWYgPGZpbGU+IC1wIDxwYXRoPiBbb3B0aW9uc10KYGBgCgotIGAtZiwgLS1maWxlIDxmaWxlPmA6IFBhdGggdG8gdGhlIGxvY2FsIE9wZW5BUEkgc3BlYyBmaWxlIChyZXF1aXJlZCkKLSBgLXAsIC0tcGF0aCA8cGF0aD5gOiBUaGUgcGF0aCB0byB0aGUgZGVzaXJlZCBlbmRwb2ludCB3aXRoaW4gdGhlIE9wZW5BUEkgc3BlYyAoaW5jbHVkaW5nIHRoZSBsZWFkaW5nIHNsYXNoKSwgZm9yIGV4YW1wbGUsICIvYXV0aCIgKHJlcXVpcmVkKQotIGAtbywgLS1vdXRwdXQgPG91dHB1dD5gOiBPdXRwdXQgdHlwZSAoZGVmYXVsdDogImpzb24iKTogImpzb24iIG9yICJ5YW1sIgotIGAtbCwgLS1sb2dsZXZlbCA8bGV2ZWw+YDogTG9nZ2luZyBsZXZlbCAoZGVmYXVsdDogImVycm9yIik6ICJlcnJvciIsICJ3YXJuIiwgImluZm8iLCAiZGVidWciCgojIyMgU3RkaW4gQ29tbWFuZAoKVGhlIGBzdGRpbmAgY29tbWFuZCBhbGxvd3MgeW91IHRvIHByb2Nlc3MgYW4gT3BlbkFQSSBzcGVjIGZyb20gc3RkaW4gYW5kIGV4dHJhY3QgYSBzcGVjaWZpYyBlbmRwb2ludC4KCi0gYC1wLCAtLXBhdGggPHBhdGg+YDogVGhlIHBhdGggdG8gdGhlIGRlc2lyZWQgZW5kcG9pbnQgd2l0aGluIHRoZSBPcGVuQVBJIHNwZWMgKGluY2x1ZGluZyB0aGUgbGVhZGluZyBzbGFzaCksIGZvciBleGFtcGxlLCAiL2F1dGgiIChyZXF1aXJlZCkKLSBgLW8sIC0tb3V0cHV0IDxvdXRwdXQ+YDogT3V0cHV0IHR5cGUgKGRlZmF1bHQ6ICJqc29uIik6ICJqc29uIiBvciAieWFtbCIKLSBgLWwsIC0tbG9nbGV2ZWwgPGxldmVsPmA6IExvZ2dpbmcgbGV2ZWwgKGRlZmF1bHQ6ICJlcnJvciIpOiAiZXJyb3IiLCAid2FybiIsICJpbmZvIiwgImRlYnVnIgoKIyMgRXhhbXBsZXMKCkZldGNoIGFuIE9wZW5BUEkgc3BlYyBmcm9tIGEgVVJMIGFuZCBleHRyYWN0IHRoZSAiL2F1dGgiIGVuZHBvaW50OgoKYGBgYmFzaApvcGVuYXBpLWV4dHJhY3RvciBmZXRjaCAtdSBodHRwczovL2FwaS5leGFtcGxlLmNvbS9vcGVuYXBpLmpzb24gLXAgIi9hdXRoIgpgYGAKClByb2Nlc3MgYSBsb2NhbCBPcGVuQVBJIHNwZWMgZmlsZSBhbmQgZXh0cmFjdCB0aGUgIi91c2VycyIgZW5kcG9pbnQ6CgpgYGBiYXNoCm9wZW5hcGktZXh0cmFjdG9yIGxvY2FsIC1mIC4vb3BlbmFwaS55YW1sIC1wICIvdXNlcnMiCmBgYAoKUHJvY2VzcyBhbiBPcGVuQVBJIHNwZWMgZnJvbSBzdGRpbiBhbmQgZXh0cmFjdCB0aGUgIi9wcm9kdWN0cyIgZW5kcG9pbnQ6CgpgYGBiYXNoCmNhdCBvcGVuYXBpLnlhbWwgfCBvcGVuYXBpLWV4dHJhY3RvciBzdGRpbiAtcCAiL3Byb2R1Y3RzIgpgYGAKCiMjIExpY2Vuc2UKClRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgMi4wLiBTZWUgdGhlIFtMSUNFTlNFXShMSUNFTlNFKSBmaWxlIGZvciBtb3JlIGRldGFpbHMuCgojIyBDb250cmlidXRpbmcKCkNvbnRyaWJ1dGlvbnMgYXJlIHdlbGNvbWUhIElmIHlvdSBmaW5kIGFueSBpc3N1ZXMgb3IgaGF2ZSBzdWdnZXN0aW9ucyBmb3IgaW1wcm92ZW1lbnQsIHBsZWFzZSBvcGVuIGFuIGlzc3VlIG9yIHN1Ym1pdCBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgW0dpdEh1YiByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vYWtleWxlc3MtY29tbXVuaXR5L2FrZXlsZXNzLW9wZW5hcGktc3BlYy1leHRyYWN0b3IpLgoKIyMgQWNrbm93bGVkZ2VtZW50cwoKVGhpcyBDTEkgdG9vbCBpcyBidWlsdCB1c2luZyB0aGUgZm9sbG93aW5nIG9wZW4tc291cmNlIGxpYnJhcmllczoKCi0gW29wZW5hcGktZXh0cmFjdF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb3BlbmFwaS1leHRyYWN0KQotIFtjb21tYW5kZXJdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2NvbW1hbmRlcikKLSBbYXhpb3NdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2F4aW9zKQotIFt3aW5zdG9uXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS93aW5zdG9uKQotIFtqcy15YW1sXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9qcy15YW1sKQoKV2Ugd291bGQgbGlrZSB0byBleHByZXNzIG91ciBncmF0aXR1ZGUgdG8gdGhlIG1haW50YWluZXJzIGFuZCBjb250cmlidXRvcnMgb2YgdGhlc2UgbGlicmFyaWVzIGZvciB0aGVpciBleGNlbGxlbnQgd29yay4K readmeEtag: '"97141db11360dfacc85f9184c4a0f5fd3b988ce1"' readmeLastModified: Fri, 26 Apr 2024 16:33:35 GMT repositoryId: 745691544 description: >- Akeyless OpenAPI Spec Extractor: A CLI tool to extract specific endpoints with all relevant details from OpenAPI specs, simplifying API integration and aiding in code generation for agentic workflows using large language models. created: '2024-01-19T22:09:05Z' updated: '2024-12-15T07:40:38Z' language: JavaScript archived: false stars: 1 watchers: 2 forks: 0 owner: akeyless-community logo: https://avatars.githubusercontent.com/u/81695164?v=4 license: Apache-2.0 repoEtag: '"790de75b0792a22dc3188a7d03b3526d359c2c3c58a6cb88e1a887b7a4977ca4"' repoLastModified: Sun, 15 Dec 2024 07:40:38 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/approveapi/openapi-spec v3: true repositoryMetadata: base64Readme: >- IyBBcHByb3ZlQVBJIGNvbmZvcm1zIHRvIE9wZW5BUEkKCltBcHByb3ZlQVBJXShodHRwczovL2FwcHJvdmVhcGkuY29tKSBpcyBjb21wYXRpYmxlIHdpdGggdGhlIE9wZW5BUEkgMy4wIHNwZWNpZmljYXRpb24uIAoKVXNpbmcgW29wZW5hcGktc3BlYy0zLjAueWFtbF0ob3BlbmFwaS1zcGVjLTMuMC55YW1sKSBpbiB0aGlzIHJlcG9zaXRvcnksIHlvdSBjYW4gZ2VuZXJhdGUgY2xpZW50IGxpYnJhcnkgYmluZGluZ3MgdG8gQXBwcm92ZUFQSSBmb3IgeW91ciBmYXZvcml0ZSBsYW5ndWFnZS4K readmeEtag: '"1b1a854d3f2e72265068c99998c030758fd7d768"' readmeLastModified: Mon, 11 Mar 2019 22:09:40 GMT repositoryId: 175090530 description: 'OpenAPI Spec 3.0 for ApproveAPI ' created: '2019-03-11T22:02:12Z' updated: '2025-08-11T21:06:02Z' language: null archived: false stars: 2 watchers: 3 forks: 0 owner: approveapi logo: https://avatars.githubusercontent.com/u/46987102?v=4 repoEtag: '"bff2680295c12cfd07dc664c9882e496879272b17ff38f01ca6cd53bf51aaa40"' repoLastModified: Mon, 11 Aug 2025 21:06:02 GMT foundInMaster: true category: - Code Generators - Parsers id: e75714c89bcf4c22e6f058364f834c12 - source: openapi3 tags repository: https://github.com/acme-software/typeswagger v3: true repositoryMetadata: base64Readme: >- VHlwZVN3YWdnZXIgLSBBIFN3YWdnZXIgLyBPcGVuQXBpIFNwZWMgRFNMIGZvciBTY2FsYQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpbIVtMaWNlbnNlOiBNSVRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGljZW5zZS1NSVQteWVsbG93LnN2ZyldKGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKSBbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9hY21lLXNvZnR3YXJlL3R5cGVzd2FnZ2VyLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL2FjbWUtc29mdHdhcmUvdHlwZXN3YWdnZXIpIFshW0NvZGFjeSBCYWRnZV0oaHR0cHM6Ly9hcGkuY29kYWN5LmNvbS9wcm9qZWN0L2JhZGdlL0dyYWRlLzFhMmQwYzQ5M2JkOTQxNjk5NmE4NDM2ODcxYTE3YjAxKV0oaHR0cHM6Ly93d3cuY29kYWN5LmNvbS9hcHAvZnJuZS90eXBlc3dhZ2dlcj91dG1fc291cmNlPWdpdGh1Yi5jb20mYW1wO3V0bV9tZWRpdW09cmVmZXJyYWwmYW1wO3V0bV9jb250ZW50PWFjbWUtc29mdHdhcmUvdHlwZXN3YWdnZXImYW1wO3V0bV9jYW1wYWlnbj1CYWRnZV9HcmFkZSkKCioqVHlwZVN3YWdnZXIgcHJvdmlkZXMgYSB0eXBlc2FmZSBTY2FsYSBEU0wgdG8gYnVpbGQgT3BlbkFwaSAoU3dhZ2dlcikgU3BlY2lmaWNhdGlvbnMuIEl0IGNhbiBiZSB1c2VkIHdpdGhpbiBhbnkgU2NhbGEgCnByb2plY3QgdG8gZ2VuZXJhdGUgSFRUUCBBUEkgZG9jdW1lbnRhdGlvbnMuKioKCiMjIEV4YW1wbGUKClRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZWZpbmVzIGEgc2ltcGxlIGFwaSB3aXRoIHR3byBlbmRwb2ludHMgKGBHRVRgIGFuZCBgREVMRVRFYCkgb24gb25lIHBhdGggKGAvdXNlci97aWR9YCkuIFRoZSAKZXhhbXBsZSBjb250YWlucyBtYW5kYXRvcnkgaW5mb3JtYXRpb24sIGFuZCBhbHNvIHNvbWUsIGJ1dCBub3QgYWxsIG9wdGlvbmFsIGZpZWxkcy4gRm9yIGJldHRlciByZWFkYWJpbGl0eSwgb3B0aW9uYWwgCmZpZWxkcyBhcmUgY2FsbGQgYnkgdmFsdWUuCgpgYGBzY2FsYQppbXBvcnQgY2guYWNtZXNvZnR3YXJlLnR5cGVzd2FnZ2VyLnYzLk9wZW5BcGkKaW1wb3J0IGNoLmFjbWVzb2Z0d2FyZS50eXBlc3dhZ2dlci52My5PcGVuQXBpLl8KaW1wb3J0IGNoLmFjbWVzb2Z0d2FyZS50eXBlc3dhZ2dlci52My5JbXBsaWNpdHMuXwoKT3BlbkFwaS5jcmVhdGUoIkFwaURvYyIsICIxLjAuMCIpLgogIC8vIGFkZCBnbG9iYWwgaW5mb3JtYXRpb24KICB3aXRoSW5mbyhsaWNlbnNlID0gIk1JVCIsIGxpY2Vuc2VVcmwgPSAiaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQiKS4KICAvLyBhZGQgYSB0YWcKICB3aXRoVGFnKCJ0ZXN0dGFnIiwgIkEgdGFnIGRlc2NyaXB0aW9uIiwgZXh0ZXJuYWxEb2NzID0gZG9jKCJodHRwOi8vbGluay50by5kb2MiKSkuCiAgLy8gZGVmaW5lIGFuIGFwaSBwYXRoCiAgcGF0aCgiL3VzZXIve2lkfSIsIHN1bW1hcnkgPSAiUGF0aCBzdW1tYXJ5IikgewogICAgLy8gaHR0cCBHRVQgb3BlcmF0aW9uICBvbiB0aGUgcGF0aAogICAgKEdFVCA+PiBvcCgiQSBzdW1tYXJ5IiwgIkdFVCBvcGVyYXRpb24gZm9yIHRoaXMgcm91dGUiKS4KICAgICAgd2l0aFBhcmFtZXRlcigiaWQiLCBQQVRILCBTY2hlbWEuaW50LCBkZXNjcmlwdGlvbiA9ICJUaGUgaWQuLi4iLCByZXF1aXJlZCA9IHRydWUpLgogICAgICB3aXRoUGFyYW1ldGVyKCJjb21tZW50IiwgUVVFUlksIFNjaGVtYS5zdHJpbmcsIGRlc2NyaXB0aW9uID0gIlNvbWUgZGVwcmVjYXRlZCBjb21tZW50IiwgCiAgICAgICAgICAgICAgICAgICAgZGVwcmVjYXRlZCA9IHRydWUpLgogICAgICB3aXRoVGFnKCJ0ZXN0dGFnIikpIH4KICAgIC8vIGh0dHAgREVMRVRFIG9wZXJhdGlvbiBvbiB0aGUgcGF0aAogICAgKERFTEVURSA+PiBvcCgiRGVsZXRlIG9wZXJhdGlvbiIpLgogICAgICB3aXRoUGFyYW1ldGVyKCJpZCIsIFBBVEgsIFNjaGVtYS5pbnQsIGRlc2NyaXB0aW9uID0gIlRoZSBpZC4uLiIsIHJlcXVpcmVkID0gdHJ1ZSkpCiAgfS4KICAvLyBhZGQgZW5kcG9pbnQgc2VydmVyKHMpCiAgd2l0aFNlcnZlcigiaHR0cDovL2xvY2FsaG9zdDo5MDAwL2FwaSIpLgogIHdpdGhTZXJ2ZXIoImh0dHBzOi8vcHJvZHVjdGlvbi50bGQvYXBpIiwgU29tZSgiUHJvZHVjdGlvbiBTZXJ2ZXIiKSkuCiAgLy8gYnVpbGQganNvbiBzdHJpbmcKICB0b0pzb24oKQpgYGAKCiMjIFVzYWdlCgpJbnN0YWxsIHRoZSBJdnkgZGVwZW5lbmN5IHZpYSBTQlQ6CgpgYGBzY2FsYQoiY2guYWNtZXNvZnR3YXJlIiAlJSAidHlwZXN3YWdnZXIiICUgInt2ZXJzaW9ufSIKYGBgCgpBZGQgaW1wb3J0czoKCmBgYHNjYWxhCmltcG9ydCBjaC5hY21lc29mdHdhcmUudHlwZXN3YWdnZXIudjMuT3BlbkFwaQppbXBvcnQgY2guYWNtZXNvZnR3YXJlLnR5cGVzd2FnZ2VyLnYzLk9wZW5BcGkuXwoKLy8gc3ludGFjdGljIHN1Z2FyIGZvciBjb252ZW5pZW50IERTTCwgYnV0IG9wdGlvbmFsCmltcG9ydCBjaC5hY21lc29mdHdhcmUudHlwZXN3YWdnZXIudjMuSW1wbGljaXRzLl8gCmBgYAoKIyMjIEluZm8KCkFkZCBnbG9iYWwgaW5mb3JtYXRpb24gdXNpbmcgdGhlIGB3aXRoSW5mb2AgZnVuY3Rpb24uIEFsbCBwYXJhbWV0ZXJzIGFyZSBvcHRpb25hbC4gSWYgbm90IHVzaW5nIHRoZSBpbXBsaWNpdHMsIAp1c2UgYFNvbWUoInN0ciIpYCBhcyBwYXJhbWV0ZXIgdmFsdWU6CgpgYGBzY2FsYQppbXBvcnQgY2guYWNtZXNvZnR3YXJlLnR5cGVzd2FnZ2VyLnYzLk9wZW5BcGkKaW1wb3J0IGNoLmFjbWVzb2Z0d2FyZS50eXBlc3dhZ2dlci52My5PcGVuQXBpLl8KaW1wb3J0IGNoLmFjbWVzb2Z0d2FyZS50eXBlc3dhZ2dlci52My5JbXBsaWNpdHMuXwoKT3BlbkFwaS5jcmVhdGUoIkFwaURvYyIsICIxLjAuMCIsIGRlc2NyaXB0aW9uID0gIkFQSSBEb2MgYnVpbHQgd2l0aCBUeXBlU3dhZ2dlciIsIHRlcm1zT2ZTZXJ2aWNlID0gIi90b3MiKS4KICB3aXRoSW5mbyhsaWNlbnNlID0gIk1JVCIsIGxpY2Vuc2VVcmwgPSAiaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQiLCAKICAgICAgICAgICBjb250YWN0TmFtZSA9ICJKb2huIERvZSIsIGNvbnRhY3RFbWFpbCA9ICJpbmZvQHNlcnZlci50bGQiLCBjb250YWN0VXJsID0gImh0dHBzOi8vd2VicGFnZS50bGQiKQpgYGAKCiMjIEZlYXR1cmVzCgoqIENvbnZlbmllbnQsIHR5cGVzYWZlIERTTCB0byBkZWZpbmUgT3BlbkFwaSB2MyBzcGVjaWZpY2F0aW9ucwoqIEludGVncmF0ZWQgSlNPTiByZW5kZXJpbmcKKiBJbnRlZ3JhdGVkIFlBTUwgcmVuZGVyaW5nIChUT0RPKQoqIEphdmEgQVBJIChUT0RPKQoqIEludGVncmF0aW9uIHdpdGggY29tbW9uIEhUVFAtRnJhbWV3b3JrcyAoVE9ETykKCiMjIENvbnRyaWJ1dGlvbnMKClBsZWFzZSB1c2UgdGhlIEdpdEh1YiBpc3N1ZSB0cmFja2luZyBhbmQgUHVsbFJlcXVlc3RzLiBBbnkgaGVscCBpcyB2ZXJ5IHdlbGNvbWUuCgojIyBMaWNlbnNlCgpUaGlzIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgW0xJQ0VOU0VdKC4vTElDRU5TRSkgZm9yIG1vcmUgaW5mb3JtYXRpb24u readmeEtag: '"121f2535582736884d12541bef0198f1145d9ce6"' readmeLastModified: Mon, 25 Jun 2018 11:26:05 GMT repositoryId: 138474648 description: A Swagger / OpenApi Specification DSL for Scala created: '2018-06-24T11:00:44Z' updated: '2018-06-25T11:54:52Z' language: Scala archived: false stars: 1 watchers: 1 forks: 0 owner: acme-software logo: https://avatars.githubusercontent.com/u/19473705?v=4 license: MIT repoEtag: '"08dc81aed3f44f2df745f3d8f70e4e08ea4fb5819e0c22442d51f7f900064f48"' repoLastModified: Mon, 25 Jun 2018 11:54:52 GMT foundInMaster: true category: Parsers id: f9bdc713a1ff13ba55fa7ea37d38ab44 - source: openapi3 tags repository: https://github.com/svilgelm/oas3-server v3: true repositoryMetadata: base64Readme: >- IyBvYXMzLXNlcnZlcgpbIVtQcm9qZWN0IFN0YXR1czogV0lQXShodHRwczovL3d3dy5yZXBvc3RhdHVzLm9yZy9iYWRnZXMvbGF0ZXN0L3dpcC5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vU1ZpbGdlbG0vb2FzMy1zZXJ2ZXIpClshW1Rlc3RzIHN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL1NWaWxnZWxtL29hczMtc2VydmVyL3dvcmtmbG93cy9UZXN0cy9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vU1ZpbGdlbG0vb2FzMy1zZXJ2ZXIvYWN0aW9ucz9xdWVyeT1icmFuY2glM0FtYXN0ZXIrZXZlbnQlM0FwdXNoKQpbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1TVmlsZ2VsbV9vYXMzLXNlcnZlciZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1TVmlsZ2VsbV9vYXMzLXNlcnZlcikKCk9wZW5BUEkgMyBXZWIgU2VydmVyCg== readmeEtag: '"6aaa787397d0a88089ab74dc6d5f80a82e3e4c72"' readmeLastModified: Mon, 23 Dec 2019 16:02:37 GMT repositoryId: 222094495 description: OpenAPI 3 Server created: '2019-11-16T12:15:06Z' updated: '2025-07-24T18:28:33Z' language: Go archived: true stars: 1 watchers: 1 forks: 1 owner: SVilgelm logo: https://avatars.githubusercontent.com/u/523825?v=4 license: MIT repoEtag: '"40b74d6f6ce13b2139ded105be60336cfd87d3f648100b6d58ec75f3f8eb5b02"' repoLastModified: Thu, 24 Jul 2025 18:28:33 GMT foundInMaster: true category: Server id: 23e7038efa6a7dcdc3fdaa7d1cac63a4 - source: openapi3 tags repository: https://github.com/philenius/dockerized-dummy-web-services v3: true repositoryMetadata: base64Readme: >- IyBEdW1teSBXZWIgU2VydmljZXMKClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyBkdW1teSB3ZWIgc2VydmljZXMgd2hpY2ggYXJlIGNvbnRhaW5lcml6ZWQgKERvY2tlcikgYW5kIHJlYWR5IHRvIGJlIGRlcGxveWVkIG9uIEt1YmVybmV0ZXMgb3IgT3BlblNoaWZ0IC8gT0tELgoKIyMgR29sYW5nClRoZSBkaXJlY3RvcnkgYGdvbGFuZy1kdW1teS13ZWItc2VydmljZS9gIGNvbnRhaW5zIGEgZHVtbXkgd2ViIHNlcnZpY2UgaW1wbGVtZW50ZWQgaW4gR29sYW5nLgpUaGlzIHdlYiBzZXJ2aWNlIGxpc3RlbnMgcGVyIGRlZmF1bHQgb24gcG9ydCA4MDgxLiBUaGUgcG9ydCBjYW4gYmUgY29uZmlndXJlZCB0aHJvdWdoIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgU0VSVkVSX1BPUlRgLiBUaGUgSFRUUCByZXNwb25zZSBvZiB0aGlzIGR1bW15IGFwcCBjb250YWlucyB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGBNWV9FTlZfVkFSYC4KCioqSFRUUCBFbmRwb2ludHM6KioKCiogYEdFVCAvYAoqIGBHRVQgL2hlYWx0aGAKKiBgR0VUIC9zaHV0ZG93bmAKCioqRG9ja2VyIGltYWdlOioqCmBwaGlsZW5pdXMvZ29sYW5nLWR1bW15LXdlYi1zZXJ2aWNlYAoKIyMgSmF2YSAvIFNwcmluZyBCb290CgpUaGUgZGlyZWN0b3J5IGBqYXZhLXNwcmluZy1ib290LWR1bW15LXdlYi1zZXJ2aWNlL2AgY29udGFpbnMgYSBkdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBQZXRzdG9yZSBPcGVuQVBJIDMuMCBzcGVjIHVzaW5nIFNwcmluZyBCb290LiBUaGUgc2VydmVyIHN0dWIgd2FzIGdlbmVyYXRlZCBieSB0aGUgW3N3YWdnZXItY29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikgcHJvamVjdC4gVGhlIHVuZGVybHlpbmcgbGlicmFyeSBpbnRlZ3JhdGluZyBzd2FnZ2VyIHRvIFNwcmluZ0Jvb3QgaXMgW3NwcmluZ2ZveF0oaHR0cHM6Ly9naXRodWIuY29tL3NwcmluZ2ZveC9zcHJpbmdmb3gpLgpUaGlzIHdlYiBzZXJ2aWNlIGxpc3RlbnMgcGVyIGRlZmF1bHQgb24gcG9ydCA4MDgwLiBUaGUgcG9ydCBjYW4gYmUgY29uZmlndXJlZCB0aHJvdWdoIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgU0VSVkVSX1BPUlRgLgoKKipIVFRQIEVuZHBvaW50czoqKgoqIGBHRVQgL3YxL3N3YWdnZXItdWkuaHRtbGAKKiBgR0VUIC92MS9wZXRzYAoqIGBHRVQgL3YxL3BldHMve3BldElkfWAKKiBgUE9TVCAvdjEvcGV0c2AKKiBgR0VUIC9oZWFsdGhgCiogYEdFVCAvc2h1dGRvd25gClNlZSBTd2FnZ2VyIFVJIG9yIEFQSSBzcGVjIGZvciBmdXJ0aGVyIGRldGFpbHMuCgoqKkRvY2tlciBpbWFnZToqKgpgcGhpbGVuaXVzL3BldHN0b3JlLWR1bW15LXNwcmluZy1ib290YAoKIyMgTm9kZSAvIEV4cHJlc3NKUwoKVGhlIGRpcmVjdG9yeSBgbm9kZS1leHByZXNzanMtZHVtbXktd2ViLWFwcGAgY29udGFpbnMgYSBkdW1teSB3ZWIgYXBwIHRoYXQgcHJvdmlkZXMgYSB3ZWJzaXRlIHdpdGggbWVtZXMuIFRoZSBzZXJ2ZXIgd2FzIGdlbmVyYXRlZCB1c2luZyB0aGUgTlBNIHBhY2thZ2UgYGV4cHJlc3MtZ2VuZXJhdG9yYC4KVGhpcyB3ZWIgYXBwIGxpc3RlbnMgcGVyIGRlZmF1bHQgb24gcG9ydCAzMDAwLiBUaGUgcG9ydCBjYW4gYmUgY29uZmlndXJlZCB0aHJvdWdoIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgU0VSVkVSX1BPUlRgLiBUaGlzIGFwcCBjYW4gZWl0aGVyIHNlcnZlIGNhdCBvciBkb2cgbWVtZXMuIFRoaXMgYmVoYXZpb3VyIGNhbiBiZSBjb25maWd1cmVkIHRocm91Z2ggc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYE1FTUVCT09LX1ZBUklBTlRgIHRvIHRoZSB2YWx1ZSBgZG9nc2AgcmVzcGVjdGl2ZWx5IGBjYXRzYC4KCioqSFRUUCBFbmRwb2ludHM6KioKKiBgR0VUIC9gCiogYEdFVCAvaGVhbHRoYAoqIGBHRVQgL3NodXRkb3duYAoKKipEb2NrZXIgaW1hZ2U6KioKYHBoaWxlbml1cy9tZW1lYm9vay1kdW1teS1ub2RlLWV4cHJlc3Nqc2AK readmeEtag: '"b20debe5b13b8a8086471490bb79615cff6835eb"' readmeLastModified: Tue, 17 Dec 2019 02:36:33 GMT repositoryId: 184478754 description: Dockerized dummy web services created: '2019-05-01T20:40:53Z' updated: '2023-03-28T09:44:07Z' language: Java archived: false stars: 1 watchers: 0 forks: 0 owner: philenius logo: https://avatars.githubusercontent.com/u/9049899?v=4 repoEtag: '"8fbddc4daf35ae1e1cba8f1bb0192755db7ced6e9f261cbabb00d5058cb4c805"' repoLastModified: Tue, 28 Mar 2023 09:44:07 GMT foundInMaster: true category: - Server - Server Implementations id: a9c2f7e1f38d750810d3964ab3d26cf1 - source: openapi3 tags repository: https://github.com/iulian-stan/crud-nestjs-rest v3: true id: 7113451d8675753deedca4ebbcce2434 repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cDovL25lc3Rqcy5jb20vIiB0YXJnZXQ9ImJsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9uZXN0anMuY29tL2ltZy9sb2dvLXNtYWxsLnN2ZyIgd2lkdGg9IjEyMCIgYWx0PSJOZXN0IExvZ28iIC8+PC9hPgo8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj5BIHByb2dyZXNzaXZlIDxhIGhyZWY9Imh0dHA6Ly9ub2RlanMub3JnIiB0YXJnZXQ9ImJsYW5rIj5Ob2RlLmpzPC9hPiBmcmFtZXdvcmsgZm9yIGJ1aWxkaW5nIGVmZmljaWVudCBhbmQgc2NhbGFibGUgc2VydmVyLXNpZGUgYXBwbGljYXRpb25zLjwvcD4KCiMjIERlc2NyaXB0aW9uCkNSVUQgYXBwbGljYXRpb24gdXNpbmcgTmVzdEpTIGZyYW1ld29yayBUeXBlT1JNIGFuZCBTd2FnZ2VyLgoKIyMgSW5zdGFsbGF0aW9uCkluc3RhbGwgb2YgdGhlIGRlcGVuZGVuY2llcyBmcm9tICpwYWNrYWdlLmpzb24qCmBgYGJhc2gKbnBtIGluc3RhbGwKYGBgCgojIyBVc2FnZQpTdGFydCB0aGUgYXBwbGljYXRpb24gYnkgcnVubmluZwpgYGBiYXNoCm5wbSBzdGFydApgYGAKTmF2aWdhdGUgdG8gdGhlIGZvbGxvd2luZyBVUkwgaW4geW91ciB3ZWIgYnJvd3NlciAtIFtodHRwOi8vMTI3LjAuMC4xOjQwMDAvYXBpL10oaHR0cDovLzEyNy4wLjAuMTo0MDAwL2FwaS8pLg== readmeEtag: '"7a01a34414bcf277922e242de18c7f69b556c47e"' readmeLastModified: Sun, 18 Dec 2022 00:04:53 GMT repositoryId: 242532299 description: Simple CRUD application implemented using NestJS framework created: '2020-02-23T14:33:05Z' updated: '2022-12-08T13:32:24Z' language: TypeScript archived: false stars: 1 watchers: 1 forks: 0 owner: iulian-stan logo: https://avatars.githubusercontent.com/u/13657730?v=4 license: MIT repoEtag: '"ddc118c067028f1d1cb294ca2fbeaf64f5f0622ae8d8a0ae1d2b86a681a04046"' repoLastModified: Thu, 08 Dec 2022 13:32:24 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/grandlinex/docs-to-openapi v3: true repositoryMetadata: base64Readme: >- IyBEb2NzIHRvIE9wZW5BcGkgdi4zCgojIyBEb2N1bWVudGF0aW9uCi0gW0RvY3NdKGh0dHBzOi8vZ3JhbmRsaW5leC5naXRodWIuaW8vZG9jcy91dGlscy8jZG9jcy10by1vcGVuYXBpLXYzKQoKClshW0dpdEh1Yl0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2doL0dyYW5kbGluZVglMkZkb2NzLXRvLW9wZW5hcGkuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL0dyYW5kbGluZVgvZG9jcy10by1vcGVuYXBpKQpbIVtOUE1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vc3RhdGljL3YxP2xhYmVsPU5QTSZtZXNzYWdlPVBhY2thZ2UmY29sb3I9cmVkJmxvZ289TlBNKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQGdyYW5kbGluZXgvZG9jcy10by1vcGVuYXBpKQohW1RTXShodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YXRpYy92MT9sYWJlbD1MYW5ndWFnZSZtZXNzYWdlPVR5cGVTY3JpcHQmY29sb3I9Ymx1ZSZsb2dvPVR5cGVTY3JpcHQpCgoKIyMgRGVzY3JpcHRpb24KClRoaXMgUHJvamVjdCBjb252ZXJ0cyBjb21tZW50cyBpbiB5b3VyIGNvZGUgb3IgaW4geW91ciBkZXBlbmRlbmNpZXMgdG8gYW4gT3BlbkFwaSBTcGVjLgpUaGUgZm9sbG93aW5nIGFubm90YXRpb25zIGFyZSBzdXBwb3J0ZWQuIAotIGBAb3BlbmFwaWAgCi0gYEBzd2FnZ2VyYAoKQWxsIGNvbW1lbnRzIHdpdGggdGhlc2UgYW5ub3RhdGlvbnMgd2lsbCBiZSBwYXN0ZWQgYXMgYSBzaW5nZSBlbGVtZW50IGluIHRoZSBwYXRoIGRlZmluaXRpb24gYXJyYXkuCkZvciBhbGwgb3RoZXIgT3BlbkFwaSBjb25maWdzIHRoZSBgZ2xjb25mLmpzb25gIGlzIHVzZWQuICAgCgojIyBJbnN0YWxsYXRpb24KCi0gYG5wbSBpIC1nIEBncmFuZGxpbmV4L2RvY3MtdG8tb3BlbmFwaWAgCgojIyMgQ29uZmlnIGZpZWxkcwoKLSByb290RGlyIAogIC0gUmVsYXRpdmUgcGF0aCB0byB5b3VyIHNvdXJjZWNvZGUuCi0gZmlsZXR5cGVzIAogIC0gIExpc3Qgb2YgZmlsZSBleHRlbnNpb25zIHRvIG1vbml0b3IuCi0gZXh0ZXJuYWxNb2R1bGVzCiAgLSBJZiB5b3VyIGRlcGVuZGVuY2llcyB1c2UgYWxzbyB0aGVzZSBhbm5vdGF0aW9ucyB5b3UgY2FuIG1lcmdlIHRoZXNlIGluIHlvdXIgY3VycmVuIHNwZWMuCi0gb3V0UHV0RGlyIChvcHRpb25hbCkKICAtIFJlbGF0aXZlIHBhdGggZm9yIHRoZSBTcGVjLiBvdXRwdXQuICAKCiMjIFF1aWNrIFN0YXJ0CgoxLiBDcmVhdGUgYSBgZ2xjb25mLmpzb25gIGluIHRoZSByb290IGRpciBvZiB5b3VyIHByb2plY3QgKHNlZSBjb25maWcgMDEgb3IgMDIpLgoyLiBFZGl0IHlvdXIgYmFzZSBDb25maWcgZmlsZSBsaWtlIGluIHRoZSBvZmZpY2lhbCBbU3dhZ2dlciBEb2NdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykKMy4gQWRkIGEgQ29tbWVudCB0byB5b3VyIHNvcnVjZSBjb2RlIGluIHltbCBzeW50YXggbGlrZTogCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogQG9wZW5hcGkKICAgICAgICAgICAgICogL3Bpbmc6CiAgICAgICAgICAgICAqICAgZ2V0OgogICAgICAgICAgICAgKiAgICAgc3VtbWFyeTogcGluZwogICAgICAgICAgICAgKiAgICAgdGFnczoKICAgICAgICAgICAgICogICAgICAgLSBiYXNpYwogICAgICAgICAgICAgKiAgICAgcmVzcG9uc2VzOgogICAgICAgICAgICAgKiAgICAgICAyMDA6CiAgICAgICAgICAgICAqICAgICAgICAgZGVzY3JpcHRpb246IE9LCiAgICAgICAgICAgICAqICAgICAgIDQwMToKICAgICAgICAgICAgICogICAgICAgICBkZXNjcmlwdGlvbjogbm90IGF1dGhvcml6ZWQKICAgICAgICAgICAgICovCgo0LiBydW4gYG5weCBAZ3JhbmRsaW5leC9kb2NzLXRvLW9wZW5hcGlgCgo+IElmIHlvdSBpbnN0YWxsIHRoZSBwYWNrYWdlIGFzIGEgZGVwZW5kZW5jeSBvciBnbG9iYWwgdGhlbiB5b3UgY2FuIHVzZSB0aGUgYG1ha2VPcGVuQXBpYCBjb21tYW5kLiAKCiMjIENMSSBQYXJhbWV0ZXIKCnxQYXJhbWV0ZXJ8RGVzY3JpcHRpb258CnwtLS18LS0tfAp8YC0taHRtbGB8Q3JlYXRlcyBhIHN3YWdnZXIuaHRtbCBmaWxlIChTdGFuZGFsb25lIFN3YWdnZXJVSSl8CnxgLS1zZXJ2ZWB8U2VydmVzIHRoZSBPcGVuQXBpIFNwZWMgb24gcG9ydCA5MDAwfAoKCiMjIENvbmZpZyBGaWxlIEV4YW1wbGVzOgoKIyMjIENvbmZpZyAwMSBgZ2xjb25mLmpzb25gIChtaW5pbWFsKQoKCiAgICAgIHsKICAgICAgICAicm9vdERpciI6ICIuL3NyYyIsCiAgICAgICAgImZpbGV0eXBlcyI6IFsidHMiLCJqcyJdLAogICAgICAgICJleHRlcm5hbE1vZHVsZXMiOiBbXSwKICAgICAgICAiYmFzZUNvbmZpZyI6IHsKICAgICAgICAgICJpbmZvIjogewogICAgICAgICAgICAidGl0bGUiOiAiSGVsbG8gV29ybGQiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHNhbXBsZSBBUEkiCiAgICAgICAgICB9LAogICAgICAgICAgInNlcnZlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidXJsIjogImh0dHA6Ly9sb2NhbGhvc3Q6OTI1NyIKICAgICAgICAgICAgfQogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfQoKIyMjIENvbmZpZyAwMiBgZ2xjb25mLmpzb25gIChCZWFyZXIgSldUKQoKICAgICAgewogICAgICAgICJyb290RGlyIjogIi4vc3JjIiwKICAgICAgICAiZmlsZXR5cGVzIjogWyJ0cyIsImpzIl0sCiAgICAgICAgImV4dGVybmFsTW9kdWxlcyI6IFsiLi9ub2RlX21vZHVsZXMvbW9kdWxlX2EiLCIuL25vZGVfbW9kdWxlcy9tb2R1bGVfYiJdLAogICAgICAgICJvdXRQdXREaXIiOiAiLi9kaXN0IiwKICAgICAgICAiYmFzZUNvbmZpZyI6IHsKICAgICAgICAgICJpbmZvIjogewogICAgICAgICAgICAidGl0bGUiOiAiSGVsbG8gV29ybGQiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHNhbXBsZSBBUEkiCiAgICAgICAgICB9LAogICAgICAgICAgInNlcnZlcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAidXJsIjogImh0dHA6Ly9sb2NhbGhvc3Q6OTI1NyIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJzZWN1cml0eSI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJiZWFyZXJBdXRoIjogW10KICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgICJjb21wb25lbnRzIjogewogICAgICAgICAgICAic2VjdXJpdHlTY2hlbWVzIjogewogICAgICAgICAgICAgICJiZWFyZXJBdXRoIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiaHR0cCIsCiAgICAgICAgICAgICAgICAic2NoZW1lIjogImJlYXJlciIsCiAgICAgICAgICAgICAgICAiYmVhcmVyRm9ybWF0IjogIkpXVCIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0K readmeEtag: '"c08d42c954d8a7b77d88e45eed7b7f6b77455ca2"' readmeLastModified: Thu, 16 Sep 2021 19:39:07 GMT repositoryId: 401494338 description: >- This Project converts comments in your code or in your dependencies to an OpenApi Spec. created: '2021-08-30T21:45:07Z' updated: '2023-06-17T23:58:13Z' language: TypeScript archived: true stars: 1 watchers: 0 forks: 0 owner: GrandlineX logo: https://avatars.githubusercontent.com/u/89772740?v=4 license: BSD-3-Clause repoEtag: '"dd373e1e929d94e3d9b4a43286f9a7a0ca38ccbfcec736f1b2a90ed3fcd564c1"' repoLastModified: Sat, 17 Jun 2023 23:58:13 GMT foundInMaster: true category: Parsers id: 20d5f81e29cc0e716934c1a7c7bcd728 - source: openapi3 tags repository: https://github.com/namsor/namsor-golang-sdk2 v3: true repositoryMetadata: base64Readme: >- IyBHbyBBUEkgY2xpZW50IGZvciBuYW1zb3JhcGkKCk5hbVNvciBBUEkgdjIgOiBlbnBvaW50cyB0byBwcm9jZXNzIHBlcnNvbmFsIG5hbWVzIChnZW5kZXIsIGN1bHR1cmFsIG9yaWdpbiBvciBldGhuaWNpdHkpIGluIGFsbCBhbHBoYWJldHMgb3IgbGFuZ3VhZ2VzLiBCeSBkZWZhdWx0LCBlbnBvaW50cyB1c2UgMSB1bml0IHBlciBuYW1lIChleC4gR2VuZGVyKSwgYnV0IEV0aG5pY2l0eSBjbGFzc2lmaWNhdGlvbiB1c2VzIDEwIHRvIDIwIHVuaXRzIHBlciBuYW1lIGRlcGVuZGluZyBvbiB0YXhvbm9teS4gVXNlIEdFVCBtZXRob2RzIGZvciBzbWFsbCB0ZXN0cywgYnV0IHByZWZlciBQT1NUIG1ldGhvZHMgZm9yIGhpZ2hlciB0aHJvdWdocHV0IChiYXRjaCBwcm9jZXNzaW5nIG9mIHVwIHRvIDEwMCBuYW1lcyBhdCBhIHRpbWUpLiBOZWVkIHNvbWV0aGluZyB5b3UgY2FuJ3QgZmluZCBoZXJlPyBXZSBoYXZlIG1hbnkgbW9yZSBmZWF0dXJlcyBjb21pbmcgc29vbi4gTGV0IHVzIGtub3csIHdlJ2xsIGRvIG91ciBiZXN0IHRvIGFkZCBpdCEgCgojIyBPdmVydmlldwpUaGlzIEFQSSBjbGllbnQgd2FzIGdlbmVyYXRlZCBieSB0aGUgW09wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpIHByb2plY3QuICBCeSB1c2luZyB0aGUgW09wZW5BUEktc3BlY10oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgZnJvbSBhIHJlbW90ZSBzZXJ2ZXIsIHlvdSBjYW4gZWFzaWx5IGdlbmVyYXRlIGFuIEFQSSBjbGllbnQuCgotIEFQSSB2ZXJzaW9uOiAyLjAuMTUKLSBQYWNrYWdlIHZlcnNpb246IDIuMC4xNQotIEJ1aWxkIHBhY2thZ2U6IG9yZy5vcGVuYXBpdG9vbHMuY29kZWdlbi5sYW5ndWFnZXMuR29DbGllbnRDb2RlZ2VuCkZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlzaXQgW2h0dHA6Ly93d3cubmFtc29yLmNvbS9dKGh0dHA6Ly93d3cubmFtc29yLmNvbS8pCgojIyBJbnN0YWxsYXRpb24KCkluc3RhbGwgdGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXM6CmBgYApnbyBnZXQgZ2l0aHViLmNvbS9zdHJldGNoci90ZXN0aWZ5L2Fzc2VydApnbyBnZXQgZ29sYW5nLm9yZy94L29hdXRoMgpnbyBnZXQgZ29sYW5nLm9yZy94L25ldC9jb250ZXh0CmdvIGdldCBnaXRodWIuY29tL2FudGloYXgvb3B0aW9uYWwKYGBgCgpQdXQgdGhlIHBhY2thZ2UgdW5kZXIgeW91ciBwcm9qZWN0IGZvbGRlciBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgaW4gaW1wb3J0OgpgYGBnb2xhbmcKaW1wb3J0ICIuL25hbXNvcmFwaSIKYGBgCgojIyBEb2N1bWVudGF0aW9uIGZvciBBUEkgRW5kcG9pbnRzCgpBbGwgVVJJcyBhcmUgcmVsYXRpdmUgdG8gKmh0dHBzOi8vdjIubmFtc29yLmNvbS9OYW1Tb3JBUEl2MioKCkNsYXNzIHwgTWV0aG9kIHwgSFRUUCByZXF1ZXN0IHwgRGVzY3JpcHRpb24KLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tCipBZG1pbkFwaSogfCBbKipBbm9ueW1pemUqKl0oZG9jcy9BZG1pbkFwaS5tZCNhbm9ueW1pemUpIHwgKipHZXQqKiAvYXBpMi9qc29uL2Fub255bWl6ZS97c291cmNlfS97YW5vbnltaXplZH0gfCBBY3RpdmF0ZS9kZWFjdGl2YXRlIGFub255bWl6YXRpb24gZm9yIGEgc291cmNlLgoqQWRtaW5BcGkqIHwgWyoqQXBpU3RhdHVzKipdKGRvY3MvQWRtaW5BcGkubWQjYXBpc3RhdHVzKSB8ICoqR2V0KiogL2FwaTIvanNvbi9hcGlTdGF0dXMgfCBQcmludHMgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBjbGFzc2lmaWVycy4gQSBjbGFzc2lmaWVyIG5hbWUgaW4gYXBpU3RhdHVzIGNvcnJlc3BvbmRzIHRvIGEgc2VydmljZSBuYW1lIGluIGFwaVNlcnZpY2VzLgoqQWRtaW5BcGkqIHwgWyoqQXBpVXNhZ2UqKl0oZG9jcy9BZG1pbkFwaS5tZCNhcGl1c2FnZSkgfCAqKkdldCoqIC9hcGkyL2pzb24vYXBpVXNhZ2UgfCBQcmludCBjdXJyZW50IEFQSSB1c2FnZS4KKkFkbWluQXBpKiB8IFsqKkFwaVVzYWdlSGlzdG9yeSoqXShkb2NzL0FkbWluQXBpLm1kI2FwaXVzYWdlaGlzdG9yeSkgfCAqKkdldCoqIC9hcGkyL2pzb24vYXBpVXNhZ2VIaXN0b3J5IHwgUHJpbnQgaGlzdG9yaWNhbCBBUEkgdXNhZ2UuCipBZG1pbkFwaSogfCBbKipBcGlVc2FnZUhpc3RvcnlBZ2dyZWdhdGUqKl0oZG9jcy9BZG1pbkFwaS5tZCNhcGl1c2FnZWhpc3RvcnlhZ2dyZWdhdGUpIHwgKipHZXQqKiAvYXBpMi9qc29uL2FwaVVzYWdlSGlzdG9yeUFnZ3JlZ2F0ZSB8IFByaW50IGhpc3RvcmljYWwgQVBJIHVzYWdlIChpbiBhbiBhZ2dyZWdhdGVkIHZpZXcsIGJ5IHNlcnZpY2UsIGJ5IGRheS9ob3VyL21pbikuCipBZG1pbkFwaSogfCBbKipBdmFpbGFibGVTZXJ2aWNlcyoqXShkb2NzL0FkbWluQXBpLm1kI2F2YWlsYWJsZXNlcnZpY2VzKSB8ICoqR2V0KiogL2FwaTIvanNvbi9hcGlTZXJ2aWNlcyB8IExpc3Qgb2YgY2xhc3NpZmljYXRpb24gc2VydmljZXMgYW5kIHVzYWdlIGNvc3QgaW4gVW5pdHMgcGVyIGNsYXNzaWZpY2F0aW9uIChkZWZhdWx0IGlzIDEmI3gzRDtPTkUgVW5pdCkuIFNvbWUgQVBJIGVuZHBvaW50cyAoZXguIENvcnJpZG9yKSBjb21iaW5lIG11bHRpcGxlIGNsYXNzaWZpZXJzLgoqQWRtaW5BcGkqIHwgWyoqRGlzYWJsZSoqXShkb2NzL0FkbWluQXBpLm1kI2Rpc2FibGUpIHwgKipHZXQqKiAvYXBpMi9qc29uL2Rpc2FibGUve3NvdXJjZX0ve2Rpc2FibGVkfSB8IEFjdGl2YXRlL2RlYWN0aXZhdGUgYW4gQVBJIEtleS4KKkFkbWluQXBpKiB8IFsqKkxlYXJuYWJsZSoqXShkb2NzL0FkbWluQXBpLm1kI2xlYXJuYWJsZSkgfCAqKkdldCoqIC9hcGkyL2pzb24vbGVhcm5hYmxlL3tzb3VyY2V9L3tsZWFybmFibGV9IHwgQWN0aXZhdGUvZGVhY3RpdmF0ZSBsZWFybmluZyBmcm9tIGEgc291cmNlLgoqQWRtaW5BcGkqIHwgWyoqU29mdHdhcmVWZXJzaW9uKipdKGRvY3MvQWRtaW5BcGkubWQjc29mdHdhcmV2ZXJzaW9uKSB8ICoqR2V0KiogL2FwaTIvanNvbi9zb2Z0d2FyZVZlcnNpb24gfCBHZXQgdGhlIGN1cnJlbnQgc29mdHdhcmUgdmVyc2lvbgoqQWRtaW5BcGkqIHwgWyoqVGF4b25vbXlDbGFzc2VzKipdKGRvY3MvQWRtaW5BcGkubWQjdGF4b25vbXljbGFzc2VzKSB8ICoqR2V0KiogL2FwaTIvanNvbi90YXhvbm9teUNsYXNzZXMve2NsYXNzaWZpZXJOYW1lfSB8IFByaW50IHRoZSB0YXhvbm9teSBjbGFzc2VzIHZhbGlkIGZvciB0aGUgZ2l2ZW4gY2xhc3NpZmllci4KKkNoaW5lc2VBcGkqIHwgWyoqQ2hpbmVzZU5hbWVDYW5kaWRhdGVzKipdKGRvY3MvQ2hpbmVzZUFwaS5tZCNjaGluZXNlbmFtZWNhbmRpZGF0ZXMpIHwgKipHZXQqKiAvYXBpMi9qc29uL2NoaW5lc2VOYW1lQ2FuZGlkYXRlcy97Y2hpbmVzZVN1cm5hbWVMYXRpbn0ve2NoaW5lc2VHaXZlbk5hbWVMYXRpbn0gfCBJZGVudGlmeSBDaGluZXNlIG5hbWUgY2FuZGlkYXRlcywgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIGV4LiBXYW5nIFhpYW9taW5nCipDaGluZXNlQXBpKiB8IFsqKkNoaW5lc2VOYW1lQ2FuZGlkYXRlc0JhdGNoKipdKGRvY3MvQ2hpbmVzZUFwaS5tZCNjaGluZXNlbmFtZWNhbmRpZGF0ZXNiYXRjaCkgfCAqKlBvc3QqKiAvYXBpMi9qc29uL2NoaW5lc2VOYW1lQ2FuZGlkYXRlc0JhdGNoIHwgSWRlbnRpZnkgQ2hpbmVzZSBuYW1lIGNhbmRpZGF0ZXMsIGJhc2VkIG9uIHRoZSByb21hbml6ZWQgbmFtZSAoZmlyc3ROYW1lICYjeDNEOyBjaGluZXNlR2l2ZW5OYW1lOyBsYXN0TmFtZSYjeDNEO2NoaW5lc2VTdXJuYW1lKSwgZXguIFdhbmcgWGlhb21pbmcKKkNoaW5lc2VBcGkqIHwgWyoqQ2hpbmVzZU5hbWVDYW5kaWRhdGVzR2VuZGVyQmF0Y2gqKl0oZG9jcy9DaGluZXNlQXBpLm1kI2NoaW5lc2VuYW1lY2FuZGlkYXRlc2dlbmRlcmJhdGNoKSB8ICoqUG9zdCoqIC9hcGkyL2pzb24vY2hpbmVzZU5hbWVDYW5kaWRhdGVzR2VuZGVyQmF0Y2ggfCBJZGVudGlmeSBDaGluZXNlIG5hbWUgY2FuZGlkYXRlcywgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIChmaXJzdE5hbWUgJiN4M0Q7IGNoaW5lc2VHaXZlbk5hbWU7IGxhc3ROYW1lJiN4M0Q7Y2hpbmVzZVN1cm5hbWUpIGV4LiBXYW5nIFhpYW9taW5nLgoqQ2hpbmVzZUFwaSogfCBbKipDaGluZXNlTmFtZUdlbmRlckNhbmRpZGF0ZXMqKl0oZG9jcy9DaGluZXNlQXBpLm1kI2NoaW5lc2VuYW1lZ2VuZGVyY2FuZGlkYXRlcykgfCAqKkdldCoqIC9hcGkyL2pzb24vY2hpbmVzZU5hbWVHZW5kZXJDYW5kaWRhdGVzL3tjaGluZXNlU3VybmFtZUxhdGlufS97Y2hpbmVzZUdpdmVuTmFtZUxhdGlufS97a25vd25HZW5kZXJ9IHwgSWRlbnRpZnkgQ2hpbmVzZSBuYW1lIGNhbmRpZGF0ZXMsIGJhc2VkIG9uIHRoZSByb21hbml6ZWQgbmFtZSBleC4gV2FuZyBYaWFvbWluZyAtIGhhdmluZyBhIGtub3duIGdlbmRlciAoJiMzOTttYWxlJiMzOTsgb3IgJiMzOTtmZW1hbGUmIzM5OykKKkNoaW5lc2VBcGkqIHwgWyoqQ2hpbmVzZU5hbWVNYXRjaCoqXShkb2NzL0NoaW5lc2VBcGkubWQjY2hpbmVzZW5hbWVtYXRjaCkgfCAqKkdldCoqIC9hcGkyL2pzb24vY2hpbmVzZU5hbWVNYXRjaC97Y2hpbmVzZVN1cm5hbWVMYXRpbn0ve2NoaW5lc2VHaXZlbk5hbWVMYXRpbn0ve2NoaW5lc2VOYW1lfSB8IFJldHVybiBhIHNjb3JlIGZvciBtYXRjaGluZyBDaGluZXNlIG5hbWUgZXguIOeOi+aZk+aYjiB3aXRoIGEgcm9tYW5pemVkIG5hbWUgZXguIFdhbmcgWGlhb21pbmcKKkNoaW5lc2VBcGkqIHwgWyoqQ2hpbmVzZU5hbWVNYXRjaEJhdGNoKipdKGRvY3MvQ2hpbmVzZUFwaS5tZCNjaGluZXNlbmFtZW1hdGNoYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9jaGluZXNlTmFtZU1hdGNoQmF0Y2ggfCBJZGVudGlmeSBDaGluZXNlIG5hbWUgY2FuZGlkYXRlcywgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIChmaXJzdE5hbWUgJiN4M0Q7IGNoaW5lc2VHaXZlbk5hbWU7IGxhc3ROYW1lJiN4M0Q7Y2hpbmVzZVN1cm5hbWUpLCBleC4gV2FuZyBYaWFvbWluZwoqQ2hpbmVzZUFwaSogfCBbKipHZW5kZXJDaGluZXNlTmFtZSoqXShkb2NzL0NoaW5lc2VBcGkubWQjZ2VuZGVyY2hpbmVzZW5hbWUpIHwgKipHZXQqKiAvYXBpMi9qc29uL2dlbmRlckNoaW5lc2VOYW1lL3tjaGluZXNlTmFtZX0gfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiBhIENoaW5lc2UgZnVsbCBuYW1lIGV4LiDnjovmmZPmmI4KKkNoaW5lc2VBcGkqIHwgWyoqR2VuZGVyQ2hpbmVzZU5hbWVCYXRjaCoqXShkb2NzL0NoaW5lc2VBcGkubWQjZ2VuZGVyY2hpbmVzZW5hbWViYXRjaCkgfCAqKlBvc3QqKiAvYXBpMi9qc29uL2dlbmRlckNoaW5lc2VOYW1lQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiB1cCB0byAxMDAgZnVsbCBuYW1lcyBleC4g546L5pmT5piOCipDaGluZXNlQXBpKiB8IFsqKkdlbmRlckNoaW5lc2VOYW1lUGlueWluKipdKGRvY3MvQ2hpbmVzZUFwaS5tZCNnZW5kZXJjaGluZXNlbmFtZXBpbnlpbikgfCAqKkdldCoqIC9hcGkyL2pzb24vZ2VuZGVyQ2hpbmVzZU5hbWVQaW55aW4ve2NoaW5lc2VTdXJuYW1lTGF0aW59L3tjaGluZXNlR2l2ZW5OYW1lTGF0aW59IHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBDaGluZXNlIG5hbWUgaW4gTEFUSU4gKFBpbnlpbikuCipDaGluZXNlQXBpKiB8IFsqKkdlbmRlckNoaW5lc2VOYW1lUGlueWluQmF0Y2gqKl0oZG9jcy9DaGluZXNlQXBpLm1kI2dlbmRlcmNoaW5lc2VuYW1lcGlueWluYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9nZW5kZXJDaGluZXNlTmFtZVBpbnlpbkJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgdXAgdG8gMTAwIENoaW5lc2UgbmFtZXMgaW4gTEFUSU4gKFBpbnlpbikuCipDaGluZXNlQXBpKiB8IFsqKlBhcnNlQ2hpbmVzZU5hbWUqKl0oZG9jcy9DaGluZXNlQXBpLm1kI3BhcnNlY2hpbmVzZW5hbWUpIHwgKipHZXQqKiAvYXBpMi9qc29uL3BhcnNlQ2hpbmVzZU5hbWUve2NoaW5lc2VOYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiDnjovmmZPmmI4gLSZndDsg546LKHN1cm5hbWUpIOaZk+aYjihnaXZlbiBuYW1lKQoqQ2hpbmVzZUFwaSogfCBbKipQYXJzZUNoaW5lc2VOYW1lQmF0Y2gqKl0oZG9jcy9DaGluZXNlQXBpLm1kI3BhcnNlY2hpbmVzZW5hbWViYXRjaCkgfCAqKlBvc3QqKiAvYXBpMi9qc29uL3BhcnNlQ2hpbmVzZU5hbWVCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiDnjovmmZPmmI4gLSZndDsg546LKHN1cm5hbWUpIOaZk+aYjihnaXZlbiBuYW1lKS4KKkNoaW5lc2VBcGkqIHwgWyoqUGlueWluQ2hpbmVzZU5hbWUqKl0oZG9jcy9DaGluZXNlQXBpLm1kI3BpbnlpbmNoaW5lc2VuYW1lKSB8ICoqR2V0KiogL2FwaTIvanNvbi9waW55aW5DaGluZXNlTmFtZS97Y2hpbmVzZU5hbWV9IHwgUm9tYW5pemUgdGhlIENoaW5lc2UgbmFtZSB0byBQaW55aW4sIGV4LiDnjovmmZPmmI4gLSZndDsgV2FuZyAoc3VybmFtZSkgWGlhb21pbmcgKGdpdmVuIG5hbWUpCipDaGluZXNlQXBpKiB8IFsqKlBpbnlpbkNoaW5lc2VOYW1lQmF0Y2gqKl0oZG9jcy9DaGluZXNlQXBpLm1kI3BpbnlpbmNoaW5lc2VuYW1lYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9waW55aW5DaGluZXNlTmFtZUJhdGNoIHwgUm9tYW5pemUgYSBsaXN0IG9mIENoaW5lc2UgbmFtZSB0byBQaW55aW4sIGV4LiDnjovmmZPmmI4gLSZndDsgV2FuZyAoc3VybmFtZSkgWGlhb21pbmcgKGdpdmVuIG5hbWUpLgoqR2VuZXJhbEFwaSogfCBbKipOYW1lVHlwZSoqXShkb2NzL0dlbmVyYWxBcGkubWQjbmFtZXR5cGUpIHwgKipHZXQqKiAvYXBpMi9qc29uL25hbWVUeXBlL3twcm9wZXJOb3VufSB8IEluZmVyIHRoZSBsaWtlbHkgdHlwZSBvZiBhIHByb3BlciBub3VuIChwZXJzb25hbCBuYW1lLCBicmFuZCBuYW1lLCBwbGFjZSBuYW1lIGV0Yy4pCipHZW5lcmFsQXBpKiB8IFsqKk5hbWVUeXBlQmF0Y2gqKl0oZG9jcy9HZW5lcmFsQXBpLm1kI25hbWV0eXBlYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9uYW1lVHlwZUJhdGNoIHwgSW5mZXIgdGhlIGxpa2VseSBjb21tb24gdHlwZSBvZiB1cCB0byAxMDAgcHJvcGVyIG5vdW5zIChwZXJzb25hbCBuYW1lLCBicmFuZCBuYW1lLCBwbGFjZSBuYW1lIGV0Yy4pCipHZW5lcmFsQXBpKiB8IFsqKk5hbWVUeXBlR2VvKipdKGRvY3MvR2VuZXJhbEFwaS5tZCNuYW1ldHlwZWdlbykgfCAqKkdldCoqIC9hcGkyL2pzb24vbmFtZVR5cGVHZW8ve3Byb3Blck5vdW59L3tjb3VudHJ5SXNvMn0gfCBJbmZlciB0aGUgbGlrZWx5IHR5cGUgb2YgYSBwcm9wZXIgbm91biAocGVyc29uYWwgbmFtZSwgYnJhbmQgbmFtZSwgcGxhY2UgbmFtZSBldGMuKQoqR2VuZXJhbEFwaSogfCBbKipOYW1lVHlwZUdlb0JhdGNoKipdKGRvY3MvR2VuZXJhbEFwaS5tZCNuYW1ldHlwZWdlb2JhdGNoKSB8ICoqUG9zdCoqIC9hcGkyL2pzb24vbmFtZVR5cGVHZW9CYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgY29tbW9uIHR5cGUgb2YgdXAgdG8gMTAwIHByb3BlciBub3VucyAocGVyc29uYWwgbmFtZSwgYnJhbmQgbmFtZSwgcGxhY2UgbmFtZSBldGMuKQoqSmFwYW5lc2VBcGkqIHwgWyoqR2VuZGVySmFwYW5lc2VOYW1lRnVsbCoqXShkb2NzL0phcGFuZXNlQXBpLm1kI2dlbmRlcmphcGFuZXNlbmFtZWZ1bGwpIHwgKipHZXQqKiAvYXBpMi9qc29uL2dlbmRlckphcGFuZXNlTmFtZUZ1bGwve2phcGFuZXNlTmFtZX0gfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiBhIEphcGFuZXNlIGZ1bGwgbmFtZSBleC4g546L5pmT5piOCipKYXBhbmVzZUFwaSogfCBbKipHZW5kZXJKYXBhbmVzZU5hbWVGdWxsQmF0Y2gqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNnZW5kZXJqYXBhbmVzZW5hbWVmdWxsYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9nZW5kZXJKYXBhbmVzZU5hbWVGdWxsQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiB1cCB0byAxMDAgZnVsbCBuYW1lcwoqSmFwYW5lc2VBcGkqIHwgWyoqR2VuZGVySmFwYW5lc2VOYW1lUGlueWluKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjZ2VuZGVyamFwYW5lc2VuYW1lcGlueWluKSB8ICoqR2V0KiogL2FwaTIvanNvbi9nZW5kZXJKYXBhbmVzZU5hbWUve2phcGFuZXNlU3VybmFtZX0ve2phcGFuZXNlR2l2ZW5OYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEgSmFwYW5lc2UgbmFtZSBpbiBMQVRJTiAoUGlueWluKS4KKkphcGFuZXNlQXBpKiB8IFsqKkdlbmRlckphcGFuZXNlTmFtZVBpbnlpbkJhdGNoKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjZ2VuZGVyamFwYW5lc2VuYW1lcGlueWluYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9nZW5kZXJKYXBhbmVzZU5hbWVCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIHVwIHRvIDEwMCBKYXBhbmVzZSBuYW1lcyBpbiBMQVRJTiAoUGlueWluKS4KKkphcGFuZXNlQXBpKiB8IFsqKkphcGFuZXNlTmFtZUdlbmRlckthbmppQ2FuZGlkYXRlc0JhdGNoKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjamFwYW5lc2VuYW1lZ2VuZGVya2FuamljYW5kaWRhdGVzYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVHZW5kZXJLYW5qaUNhbmRpZGF0ZXNCYXRjaCB8IElkZW50aWZ5IGphcGFuZXNlIG5hbWUgY2FuZGlkYXRlcyBpbiBLQU5KSSwgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIChmaXJzdE5hbWUgJiN4M0Q7IGphcGFuZXNlR2l2ZW5OYW1lOyBsYXN0TmFtZSYjeDNEO2phcGFuZXNlU3VybmFtZSkgd2l0aCBLTk9XTiBnZW5kZXIsIGV4LiBZYW1hbW90byBTYW5hZQoqSmFwYW5lc2VBcGkqIHwgWyoqSmFwYW5lc2VOYW1lS2FuamlDYW5kaWRhdGVzKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjamFwYW5lc2VuYW1la2FuamljYW5kaWRhdGVzKSB8ICoqR2V0KiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVLYW5qaUNhbmRpZGF0ZXMve2phcGFuZXNlU3VybmFtZUxhdGlufS97amFwYW5lc2VHaXZlbk5hbWVMYXRpbn0ve2tub3duR2VuZGVyfSB8IElkZW50aWZ5IGphcGFuZXNlIG5hbWUgY2FuZGlkYXRlcyBpbiBLQU5KSSwgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIGV4LiBZYW1hbW90byBTYW5hZSAtIGFuZCBhIGtub3duIGdlbmRlci4KKkphcGFuZXNlQXBpKiB8IFsqKkphcGFuZXNlTmFtZUthbmppQ2FuZGlkYXRlczEqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNqYXBhbmVzZW5hbWVrYW5qaWNhbmRpZGF0ZXMxKSB8ICoqR2V0KiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVLYW5qaUNhbmRpZGF0ZXMve2phcGFuZXNlU3VybmFtZUxhdGlufS97amFwYW5lc2VHaXZlbk5hbWVMYXRpbn0gfCBJZGVudGlmeSBqYXBhbmVzZSBuYW1lIGNhbmRpZGF0ZXMgaW4gS0FOSkksIGJhc2VkIG9uIHRoZSByb21hbml6ZWQgbmFtZSBleC4gWWFtYW1vdG8gU2FuYWUKKkphcGFuZXNlQXBpKiB8IFsqKkphcGFuZXNlTmFtZUthbmppQ2FuZGlkYXRlc0JhdGNoKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjamFwYW5lc2VuYW1la2FuamljYW5kaWRhdGVzYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVLYW5qaUNhbmRpZGF0ZXNCYXRjaCB8IElkZW50aWZ5IGphcGFuZXNlIG5hbWUgY2FuZGlkYXRlcyBpbiBLQU5KSSwgYmFzZWQgb24gdGhlIHJvbWFuaXplZCBuYW1lIChmaXJzdE5hbWUgJiN4M0Q7IGphcGFuZXNlR2l2ZW5OYW1lOyBsYXN0TmFtZSYjeDNEO2phcGFuZXNlU3VybmFtZSksIGV4LiBZYW1hbW90byBTYW5hZQoqSmFwYW5lc2VBcGkqIHwgWyoqSmFwYW5lc2VOYW1lTGF0aW5DYW5kaWRhdGVzKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjamFwYW5lc2VuYW1lbGF0aW5jYW5kaWRhdGVzKSB8ICoqR2V0KiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVMYXRpbkNhbmRpZGF0ZXMve2phcGFuZXNlU3VybmFtZUthbmppfS97amFwYW5lc2VHaXZlbk5hbWVLYW5qaX0gfCBSb21hbml6ZSBqYXBhbmVzZSBuYW1lLCBiYXNlZCBvbiB0aGUgbmFtZSBpbiBLYW5qaS4KKkphcGFuZXNlQXBpKiB8IFsqKkphcGFuZXNlTmFtZUxhdGluQ2FuZGlkYXRlc0JhdGNoKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjamFwYW5lc2VuYW1lbGF0aW5jYW5kaWRhdGVzYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9qYXBhbmVzZU5hbWVMYXRpbkNhbmRpZGF0ZXNCYXRjaCB8IFJvbWFuaXplIGphcGFuZXNlIG5hbWVzLCBiYXNlZCBvbiB0aGUgbmFtZSBpbiBLQU5KSQoqSmFwYW5lc2VBcGkqIHwgWyoqSmFwYW5lc2VOYW1lTWF0Y2gqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNqYXBhbmVzZW5hbWVtYXRjaCkgfCAqKkdldCoqIC9hcGkyL2pzb24vamFwYW5lc2VOYW1lTWF0Y2gve2phcGFuZXNlU3VybmFtZUxhdGlufS97amFwYW5lc2VHaXZlbk5hbWVMYXRpbn0ve2phcGFuZXNlTmFtZX0gfCBSZXR1cm4gYSBzY29yZSBmb3IgbWF0Y2hpbmcgSmFwYW5lc2UgbmFtZSBpbiBLQU5KSSBleC4g5bGx5pysIOaXqeiLlyB3aXRoIGEgcm9tYW5pemVkIG5hbWUgZXguIFlhbWFtb3RvIFNhbmFlCipKYXBhbmVzZUFwaSogfCBbKipKYXBhbmVzZU5hbWVNYXRjaEJhdGNoKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjamFwYW5lc2VuYW1lbWF0Y2hiYXRjaCkgfCAqKlBvc3QqKiAvYXBpMi9qc29uL2phcGFuZXNlTmFtZU1hdGNoQmF0Y2ggfCBSZXR1cm4gYSBzY29yZSBmb3IgbWF0Y2hpbmcgYSBsaXN0IG9mIEphcGFuZXNlIG5hbWVzIGluIEtBTkpJIGV4LiDlsbHmnKwg5pep6IuXIHdpdGggcm9tYW5pemVkIG5hbWVzIGV4LiBZYW1hbW90byBTYW5hZQoqSmFwYW5lc2VBcGkqIHwgWyoqSmFwYW5lc2VOYW1lTWF0Y2hGZWVkYmFja0xvb3AqKl0oZG9jcy9KYXBhbmVzZUFwaS5tZCNqYXBhbmVzZW5hbWVtYXRjaGZlZWRiYWNrbG9vcCkgfCAqKkdldCoqIC9hcGkyL2pzb24vamFwYW5lc2VOYW1lTWF0Y2hGZWVkYmFja0xvb3Ave2phcGFuZXNlU3VybmFtZUxhdGlufS97amFwYW5lc2VHaXZlbk5hbWVMYXRpbn0ve2phcGFuZXNlTmFtZX0gfCBbQ1JFRElUUyAxIFVOSVRdIEZlZWRiYWNrIGxvb3AgdG8gYmV0dGVyIHBlcmZvcm0gbWF0Y2hpbmcgSmFwYW5lc2UgbmFtZSBpbiBLQU5KSSBleC4g5bGx5pysIOaXqeiLlyB3aXRoIGEgcm9tYW5pemVkIG5hbWUgZXguIFlhbWFtb3RvIFNhbmFlCipKYXBhbmVzZUFwaSogfCBbKipQYXJzZUphcGFuZXNlTmFtZSoqXShkb2NzL0phcGFuZXNlQXBpLm1kI3BhcnNlamFwYW5lc2VuYW1lKSB8ICoqR2V0KiogL2FwaTIvanNvbi9wYXJzZUphcGFuZXNlTmFtZS97amFwYW5lc2VOYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiDlsbHmnKwg5pep6IuXIG9yIFlhbWFtb3RvIFNhbmFlCipKYXBhbmVzZUFwaSogfCBbKipQYXJzZUphcGFuZXNlTmFtZUJhdGNoKipdKGRvY3MvSmFwYW5lc2VBcGkubWQjcGFyc2VqYXBhbmVzZW5hbWViYXRjaCkgfCAqKlBvc3QqKiAvYXBpMi9qc29uL3BhcnNlSmFwYW5lc2VOYW1lQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGZpcnN0L2xhc3QgbmFtZSBzdHJ1Y3R1cmUgb2YgYSBuYW1lLCBleC4g5bGx5pysIOaXqeiLlyBvciBZYW1hbW90byBTYW5hZSAKKlBlcnNvbmFsQXBpKiB8IFsqKkNvcnJpZG9yKipdKGRvY3MvUGVyc29uYWxBcGkubWQjY29ycmlkb3IpIHwgKipHZXQqKiAvYXBpMi9qc29uL2NvcnJpZG9yL3tjb3VudHJ5SXNvMkZyb219L3tmaXJzdE5hbWVGcm9tfS97bGFzdE5hbWVGcm9tfS97Y291bnRyeUlzbzJUb30ve2ZpcnN0TmFtZVRvfS97bGFzdE5hbWVUb30gfCBbVVNFUyAyMCBVTklUUyBQRVIgTkFNRSBDT1VQTEVdIEluZmVyIHNldmVyYWwgY2xhc3NpZmljYXRpb25zIGZvciBhIGNyb3NzIGJvcmRlciBpbnRlcmFjdGlvbiBiZXR3ZWVuIG5hbWVzIChleC4gcmVtaXQsIHRyYXZlbCwgaW50bCBjb20pCipQZXJzb25hbEFwaSogfCBbKipDb3JyaWRvckJhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjY29ycmlkb3JiYXRjaCkgfCAqKlBvc3QqKiAvYXBpMi9qc29uL2NvcnJpZG9yQmF0Y2ggfCBbVVNFUyAyMCBVTklUUyBQRVIgTkFNRSBQQUlSXSBJbmZlciBzZXZlcmFsIGNsYXNzaWZpY2F0aW9ucyBmb3IgdXAgdG8gMTAwIGNyb3NzIGJvcmRlciBpbnRlcmFjdGlvbiBiZXR3ZWVuIG5hbWVzIChleC4gcmVtaXQsIHRyYXZlbCwgaW50bCBjb20pCipQZXJzb25hbEFwaSogfCBbKipDb3VudHJ5KipdKGRvY3MvUGVyc29uYWxBcGkubWQjY291bnRyeSkgfCAqKkdldCoqIC9hcGkyL2pzb24vY291bnRyeS97cGVyc29uYWxOYW1lRnVsbH0gfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBjb3VudHJ5IG9mIHJlc2lkZW5jZSBvZiBhIHBlcnNvbmFsIGZ1bGwgbmFtZSwgb3Igb25lIHN1cm5hbWUuIEFzc3VtZXMgbmFtZXMgYXMgdGhleSBhcmUgaW4gdGhlIGNvdW50cnkgb2YgcmVzaWRlbmNlIE9SIHRoZSBjb3VudHJ5IG9mIG9yaWdpbi4KKlBlcnNvbmFsQXBpKiB8IFsqKkNvdW50cnlCYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2NvdW50cnliYXRjaCkgfCAqKlBvc3QqKiAvYXBpMi9qc29uL2NvdW50cnlCYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgb2YgcmVzaWRlbmNlIG9mIHVwIHRvIDEwMCBwZXJzb25hbCBmdWxsIG5hbWVzLCBvciBzdXJuYW1lcy4gQXNzdW1lcyBuYW1lcyBhcyB0aGV5IGFyZSBpbiB0aGUgY291bnRyeSBvZiByZXNpZGVuY2UgT1IgdGhlIGNvdW50cnkgb2Ygb3JpZ2luLgoqUGVyc29uYWxBcGkqIHwgWyoqRGlhc3BvcmEqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNkaWFzcG9yYSkgfCAqKkdldCoqIC9hcGkyL2pzb24vZGlhc3BvcmEve2NvdW50cnlJc28yfS97Zmlyc3ROYW1lfS97bGFzdE5hbWV9IHwgW1VTRVMgMjAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgZXRobmljaXR5L2RpYXNwb3JhIG9mIGEgcGVyc29uYWwgbmFtZSwgZ2l2ZW4gYSBjb3VudHJ5IG9mIHJlc2lkZW5jZSBJU08yIGNvZGUgKGV4LiBVUywgQ0EsIEFVLCBOWiBldGMuKQoqUGVyc29uYWxBcGkqIHwgWyoqRGlhc3BvcmFCYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2RpYXNwb3JhYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9kaWFzcG9yYUJhdGNoIHwgW1VTRVMgMjAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgZXRobmljaXR5L2RpYXNwb3JhIG9mIHVwIHRvIDEwMCBwZXJzb25hbCBuYW1lcywgZ2l2ZW4gYSBjb3VudHJ5IG9mIHJlc2lkZW5jZSBJU08yIGNvZGUgKGV4LiBVUywgQ0EsIEFVLCBOWiBldGMuKQoqUGVyc29uYWxBcGkqIHwgWyoqR2VuZGVyKipdKGRvY3MvUGVyc29uYWxBcGkubWQjZ2VuZGVyKSB8ICoqR2V0KiogL2FwaTIvanNvbi9nZW5kZXIve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEgbmFtZS4KKlBlcnNvbmFsQXBpKiB8IFsqKkdlbmRlckJhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjZ2VuZGVyYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9nZW5kZXJCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIHVwIHRvIDEwMCBuYW1lcywgZGV0ZWN0aW5nIGF1dG9tYXRpY2FsbHkgdGhlIGN1bHR1cmFsIGNvbnRleHQuCipQZXJzb25hbEFwaSogfCBbKipHZW5kZXJGdWxsKipdKGRvY3MvUGVyc29uYWxBcGkubWQjZ2VuZGVyZnVsbCkgfCAqKkdldCoqIC9hcGkyL2pzb24vZ2VuZGVyRnVsbC97ZnVsbE5hbWV9IHwgSW5mZXIgdGhlIGxpa2VseSBnZW5kZXIgb2YgYSBmdWxsIG5hbWUsIGV4LiBKb2huIEguIFNtaXRoCipQZXJzb25hbEFwaSogfCBbKipHZW5kZXJGdWxsQmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNnZW5kZXJmdWxsYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9nZW5kZXJGdWxsQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiB1cCB0byAxMDAgZnVsbCBuYW1lcywgZGV0ZWN0aW5nIGF1dG9tYXRpY2FsbHkgdGhlIGN1bHR1cmFsIGNvbnRleHQuCipQZXJzb25hbEFwaSogfCBbKipHZW5kZXJGdWxsR2VvKipdKGRvY3MvUGVyc29uYWxBcGkubWQjZ2VuZGVyZnVsbGdlbykgfCAqKkdldCoqIC9hcGkyL2pzb24vZ2VuZGVyRnVsbEdlby97ZnVsbE5hbWV9L3tjb3VudHJ5SXNvMn0gfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiBhIGZ1bGwgbmFtZSwgZ2l2ZW4gYSBsb2NhbCBjb250ZXh0IChJU08yIGNvdW50cnkgY29kZSkuCipQZXJzb25hbEFwaSogfCBbKipHZW5kZXJGdWxsR2VvQmF0Y2gqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNnZW5kZXJmdWxsZ2VvYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9nZW5kZXJGdWxsR2VvQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiB1cCB0byAxMDAgZnVsbCBuYW1lcywgd2l0aCBhIGdpdmVuIGN1bHR1cmFsIGNvbnRleHQgKGNvdW50cnkgSVNPMiBjb2RlKS4KKlBlcnNvbmFsQXBpKiB8IFsqKkdlbmRlckdlbyoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2dlbmRlcmdlbykgfCAqKkdldCoqIC9hcGkyL2pzb24vZ2VuZGVyR2VvL3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0ve2NvdW50cnlJc28yfSB8IEluZmVyIHRoZSBsaWtlbHkgZ2VuZGVyIG9mIGEgbmFtZSwgZ2l2ZW4gYSBsb2NhbCBjb250ZXh0IChJU08yIGNvdW50cnkgY29kZSkuCipQZXJzb25hbEFwaSogfCBbKipHZW5kZXJHZW9CYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI2dlbmRlcmdlb2JhdGNoKSB8ICoqUG9zdCoqIC9hcGkyL2pzb24vZ2VuZGVyR2VvQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGdlbmRlciBvZiB1cCB0byAxMDAgbmFtZXMsIGVhY2ggZ2l2ZW4gYSBsb2NhbCBjb250ZXh0IChJU08yIGNvdW50cnkgY29kZSkuCipQZXJzb25hbEFwaSogfCBbKipPcmlnaW4qKl0oZG9jcy9QZXJzb25hbEFwaS5tZCNvcmlnaW4pIHwgKipHZXQqKiAvYXBpMi9qc29uL29yaWdpbi97Zmlyc3ROYW1lfS97bGFzdE5hbWV9IHwgW1VTRVMgMTAgVU5JVFMgUEVSIE5BTUVdIEluZmVyIHRoZSBsaWtlbHkgY291bnRyeSBvZiBvcmlnaW4gb2YgYSBwZXJzb25hbCBuYW1lLiBBc3N1bWVzIG5hbWVzIGFzIHRoZXkgYXJlIGluIHRoZSBjb3VudHJ5IG9mIG9yaWdpbi4gRm9yIFVTLCBDQSwgQVUsIE5aIGFuZCBvdGhlciBtZWx0aW5nLXBvdHMgOiB1c2UgJiMzOTtkaWFzcG9yYSYjMzk7IGluc3RlYWQuCipQZXJzb25hbEFwaSogfCBbKipPcmlnaW5CYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI29yaWdpbmJhdGNoKSB8ICoqUG9zdCoqIC9hcGkyL2pzb24vb3JpZ2luQmF0Y2ggfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBjb3VudHJ5IG9mIG9yaWdpbiBvZiB1cCB0byAxMDAgbmFtZXMsIGRldGVjdGluZyBhdXRvbWF0aWNhbGx5IHRoZSBjdWx0dXJhbCBjb250ZXh0LgoqUGVyc29uYWxBcGkqIHwgWyoqUGFyc2VOYW1lKipdKGRvY3MvUGVyc29uYWxBcGkubWQjcGFyc2VuYW1lKSB8ICoqR2V0KiogL2FwaTIvanNvbi9wYXJzZU5hbWUve25hbWVGdWxsfSB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiBKb2huIFNtaXRoIG9yIFNNSVRILCBKb2huIG9yIFNNSVRIOyBKb2huLiAKKlBlcnNvbmFsQXBpKiB8IFsqKlBhcnNlTmFtZUJhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjcGFyc2VuYW1lYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9wYXJzZU5hbWVCYXRjaCB8IEluZmVyIHRoZSBsaWtlbHkgZmlyc3QvbGFzdCBuYW1lIHN0cnVjdHVyZSBvZiBhIG5hbWUsIGV4LiBKb2huIFNtaXRoIG9yIFNNSVRILCBKb2huIG9yIFNNSVRIOyBKb2huLgoqUGVyc29uYWxBcGkqIHwgWyoqUGFyc2VOYW1lR2VvKipdKGRvY3MvUGVyc29uYWxBcGkubWQjcGFyc2VuYW1lZ2VvKSB8ICoqR2V0KiogL2FwaTIvanNvbi9wYXJzZU5hbWUve25hbWVGdWxsfS97Y291bnRyeUlzbzJ9IHwgSW5mZXIgdGhlIGxpa2VseSBmaXJzdC9sYXN0IG5hbWUgc3RydWN0dXJlIG9mIGEgbmFtZSwgZXguIEpvaG4gU21pdGggb3IgU01JVEgsIEpvaG4gb3IgU01JVEg7IEpvaG4uIEZvciBiZXR0ZXIgYWNjdXJhY3ksIHByb3ZpZGUgYSBnZW9ncmFwaGljIGNvbnRleHQuCipQZXJzb25hbEFwaSogfCBbKipQYXJzZU5hbWVHZW9CYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI3BhcnNlbmFtZWdlb2JhdGNoKSB8ICoqUG9zdCoqIC9hcGkyL2pzb24vcGFyc2VOYW1lR2VvQmF0Y2ggfCBJbmZlciB0aGUgbGlrZWx5IGZpcnN0L2xhc3QgbmFtZSBzdHJ1Y3R1cmUgb2YgYSBuYW1lLCBleC4gSm9obiBTbWl0aCBvciBTTUlUSCwgSm9obiBvciBTTUlUSDsgSm9obi4gR2l2aW5nIGEgbG9jYWwgY29udGV4dCBpbXByb3ZlcyBwcmVjaXNpb24uIAoqUGVyc29uYWxBcGkqIHwgWyoqVXNSYWNlRXRobmljaXR5KipdKGRvY3MvUGVyc29uYWxBcGkubWQjdXNyYWNlZXRobmljaXR5KSB8ICoqR2V0KiogL2FwaTIvanNvbi91c1JhY2VFdGhuaWNpdHkve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfSB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciBhIFVTIHJlc2lkZW50JiMzOTtzIGxpa2VseSByYWNlL2V0aG5pY2l0eSBhY2NvcmRpbmcgdG8gVVMgQ2Vuc3VzIHRheG9ub215IFdfTkwgKHdoaXRlLCBub24gbGF0aW5vKSwgSEwgKGhpc3Bhbm8gbGF0aW5vKSwgIEEgKGFzaWFuLCBub24gbGF0aW5vKSwgQl9OTCAoYmxhY2ssIG5vbiBsYXRpbm8pLiBPcHRpb25hbGx5IGFkZCBoZWFkZXIgWC1PUFRJT04tVVNSQUNFRVRITklDSVRZLVRBWE9OT01ZOiBVU1JBQ0VFVEhOSUNJVFktNkNMQVNTRVMgZm9yIHR3byBhZGRpdGlvbmFsIGNsYXNzZXMsIEFJX0FOIChBbWVyaWNhbiBJbmRpYW4gb3IgQWxhc2thbiBOYXRpdmUpIGFuZCBQSSAoUGFjaWZpYyBJc2xhbmRlcikuCipQZXJzb25hbEFwaSogfCBbKipVc1JhY2VFdGhuaWNpdHlCYXRjaCoqXShkb2NzL1BlcnNvbmFsQXBpLm1kI3VzcmFjZWV0aG5pY2l0eWJhdGNoKSB8ICoqUG9zdCoqIC9hcGkyL2pzb24vdXNSYWNlRXRobmljaXR5QmF0Y2ggfCBbVVNFUyAxMCBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdXAtdG8gMTAwIFVTIHJlc2lkZW50JiMzOTtzIGxpa2VseSByYWNlL2V0aG5pY2l0eSBhY2NvcmRpbmcgdG8gVVMgQ2Vuc3VzIHRheG9ub215LiBPdXRwdXQgaXMgV19OTCAod2hpdGUsIG5vbiBsYXRpbm8pLCBITCAoaGlzcGFubyBsYXRpbm8pLCAgQSAoYXNpYW4sIG5vbiBsYXRpbm8pLCBCX05MIChibGFjaywgbm9uIGxhdGlubykuIE9wdGlvbmFsbHkgYWRkIGhlYWRlciBYLU9QVElPTi1VU1JBQ0VFVEhOSUNJVFktVEFYT05PTVk6IFVTUkFDRUVUSE5JQ0lUWS02Q0xBU1NFUyBmb3IgdHdvIGFkZGl0aW9uYWwgY2xhc3NlcywgQUlfQU4gKEFtZXJpY2FuIEluZGlhbiBvciBBbGFza2FuIE5hdGl2ZSkgYW5kIFBJIChQYWNpZmljIElzbGFuZGVyKS4KKlBlcnNvbmFsQXBpKiB8IFsqKlVzUmFjZUV0aG5pY2l0eVpJUDUqKl0oZG9jcy9QZXJzb25hbEFwaS5tZCN1c3JhY2VldGhuaWNpdHl6aXA1KSB8ICoqR2V0KiogL2FwaTIvanNvbi91c1JhY2VFdGhuaWNpdHlaSVA1L3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0ve3ppcDVDb2RlfSB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciBhIFVTIHJlc2lkZW50JiMzOTtzIGxpa2VseSByYWNlL2V0aG5pY2l0eSBhY2NvcmRpbmcgdG8gVVMgQ2Vuc3VzIHRheG9ub215LCB1c2luZyAob3B0aW9uYWwpIFpJUDUgY29kZSBpbmZvLiBPdXRwdXQgaXMgV19OTCAod2hpdGUsIG5vbiBsYXRpbm8pLCBITCAoaGlzcGFubyBsYXRpbm8pLCAgQSAoYXNpYW4sIG5vbiBsYXRpbm8pLCBCX05MIChibGFjaywgbm9uIGxhdGlubykuIE9wdGlvbmFsbHkgYWRkIGhlYWRlciBYLU9QVElPTi1VU1JBQ0VFVEhOSUNJVFktVEFYT05PTVk6IFVTUkFDRUVUSE5JQ0lUWS02Q0xBU1NFUyBmb3IgdHdvIGFkZGl0aW9uYWwgY2xhc3NlcywgQUlfQU4gKEFtZXJpY2FuIEluZGlhbiBvciBBbGFza2FuIE5hdGl2ZSkgYW5kIFBJIChQYWNpZmljIElzbGFuZGVyKS4KKlBlcnNvbmFsQXBpKiB8IFsqKlVzWmlwUmFjZUV0aG5pY2l0eUJhdGNoKipdKGRvY3MvUGVyc29uYWxBcGkubWQjdXN6aXByYWNlZXRobmljaXR5YmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi91c1ppcFJhY2VFdGhuaWNpdHlCYXRjaCB8IFtVU0VTIDEwIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB1cC10byAxMDAgVVMgcmVzaWRlbnQmIzM5O3MgbGlrZWx5IHJhY2UvZXRobmljaXR5IGFjY29yZGluZyB0byBVUyBDZW5zdXMgdGF4b25vbXksIHdpdGggKG9wdGlvbmFsKSBaSVAgY29kZS4gT3V0cHV0IGlzIFdfTkwgKHdoaXRlLCBub24gbGF0aW5vKSwgSEwgKGhpc3Bhbm8gbGF0aW5vKSwgIEEgKGFzaWFuLCBub24gbGF0aW5vKSwgQl9OTCAoYmxhY2ssIG5vbiBsYXRpbm8pLiBPcHRpb25hbGx5IGFkZCBoZWFkZXIgWC1PUFRJT04tVVNSQUNFRVRITklDSVRZLVRBWE9OT01ZOiBVU1JBQ0VFVEhOSUNJVFktNkNMQVNTRVMgZm9yIHR3byBhZGRpdGlvbmFsIGNsYXNzZXMsIEFJX0FOIChBbWVyaWNhbiBJbmRpYW4gb3IgQWxhc2thbiBOYXRpdmUpIGFuZCBQSSAoUGFjaWZpYyBJc2xhbmRlcikuCipTb2NpYWxBcGkqIHwgWyoqUGhvbmVDb2RlKipdKGRvY3MvU29jaWFsQXBpLm1kI3Bob25lY29kZSkgfCAqKkdldCoqIC9hcGkyL2pzb24vcGhvbmVDb2RlL3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0ve3Bob25lTnVtYmVyfSB8IFtVU0VTIDExIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgYW5kIHBob25lIHByZWZpeCwgZ2l2ZW4gYSBwZXJzb25hbCBuYW1lIGFuZCBmb3JtYXR0ZWQgLyB1bmZvcm1hdHRlZCBwaG9uZSBudW1iZXIuCipTb2NpYWxBcGkqIHwgWyoqUGhvbmVDb2RlQmF0Y2gqKl0oZG9jcy9Tb2NpYWxBcGkubWQjcGhvbmVjb2RlYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9waG9uZUNvZGVCYXRjaCB8IFtVU0VTIDExIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgYW5kIHBob25lIHByZWZpeCwgb2YgdXAgdG8gMTAwIHBlcnNvbmFsIG5hbWVzLCBkZXRlY3RpbmcgYXV0b21hdGljYWxseSB0aGUgbG9jYWwgY29udGV4dCBnaXZlbiBhIG5hbWUgYW5kIGZvcm1hdHRlZCAvIHVuZm9ybWF0dGVkIHBob25lIG51bWJlci4KKlNvY2lhbEFwaSogfCBbKipQaG9uZUNvZGVHZW8qKl0oZG9jcy9Tb2NpYWxBcGkubWQjcGhvbmVjb2RlZ2VvKSB8ICoqR2V0KiogL2FwaTIvanNvbi9waG9uZUNvZGVHZW8ve2ZpcnN0TmFtZX0ve2xhc3ROYW1lfS97cGhvbmVOdW1iZXJ9L3tjb3VudHJ5SXNvMn0gfCBbVVNFUyAxMSBVTklUUyBQRVIgTkFNRV0gSW5mZXIgdGhlIGxpa2VseSBwaG9uZSBwcmVmaXgsIGdpdmVuIGEgcGVyc29uYWwgbmFtZSBhbmQgZm9ybWF0dGVkIC8gdW5mb3JtYXR0ZWQgcGhvbmUgbnVtYmVyLCB3aXRoIGEgbG9jYWwgY29udGV4dCAoSVNPMiBjb3VudHJ5IG9mIHJlc2lkZW5jZSkuCipTb2NpYWxBcGkqIHwgWyoqUGhvbmVDb2RlR2VvQmF0Y2gqKl0oZG9jcy9Tb2NpYWxBcGkubWQjcGhvbmVjb2RlZ2VvYmF0Y2gpIHwgKipQb3N0KiogL2FwaTIvanNvbi9waG9uZUNvZGVHZW9CYXRjaCB8IFtVU0VTIDExIFVOSVRTIFBFUiBOQU1FXSBJbmZlciB0aGUgbGlrZWx5IGNvdW50cnkgYW5kIHBob25lIHByZWZpeCwgb2YgdXAgdG8gMTAwIHBlcnNvbmFsIG5hbWVzLCB3aXRoIGEgbG9jYWwgY29udGV4dCAoSVNPMiBjb3VudHJ5IG9mIHJlc2lkZW5jZSkuCipTb2NpYWxBcGkqIHwgWyoqUGhvbmVDb2RlR2VvRmVlZGJhY2tMb29wKipdKGRvY3MvU29jaWFsQXBpLm1kI3Bob25lY29kZWdlb2ZlZWRiYWNrbG9vcCkgfCAqKkdldCoqIC9hcGkyL2pzb24vcGhvbmVDb2RlR2VvRmVlZGJhY2tMb29wL3tmaXJzdE5hbWV9L3tsYXN0TmFtZX0ve3Bob25lTnVtYmVyfS97cGhvbmVOdW1iZXJFMTY0fS97Y291bnRyeUlzbzJ9IHwgW0NSRURJVFMgMSBVTklUXSBGZWVkYmFjayBsb29wIHRvIGJldHRlciBpbmZlciB0aGUgbGlrZWx5IHBob25lIHByZWZpeCwgZ2l2ZW4gYSBwZXJzb25hbCBuYW1lIGFuZCBmb3JtYXR0ZWQgLyB1bmZvcm1hdHRlZCBwaG9uZSBudW1iZXIsIHdpdGggYSBsb2NhbCBjb250ZXh0IChJU08yIGNvdW50cnkgb2YgcmVzaWRlbmNlKS4KCgojIyBEb2N1bWVudGF0aW9uIEZvciBNb2RlbHMKCiAtIFtBcGlCaWxsaW5nUGVyaW9kVXNhZ2VPdXRdKGRvY3MvQXBpQmlsbGluZ1BlcmlvZFVzYWdlT3V0Lm1kKQogLSBbQXBpQ2xhc3NpZmllck91dF0oZG9jcy9BcGlDbGFzc2lmaWVyT3V0Lm1kKQogLSBbQXBpQ2xhc3NpZmllclRheG9ub215T3V0XShkb2NzL0FwaUNsYXNzaWZpZXJUYXhvbm9teU91dC5tZCkKIC0gW0FwaUNsYXNzaWZpZXJzU3RhdHVzT3V0XShkb2NzL0FwaUNsYXNzaWZpZXJzU3RhdHVzT3V0Lm1kKQogLSBbQXBpQ291bnRlclYyT3V0XShkb2NzL0FwaUNvdW50ZXJWMk91dC5tZCkKIC0gW0FwaUtleU91dF0oZG9jcy9BcGlLZXlPdXQubWQpCiAtIFtBcGlQZXJpb2RVc2FnZU91dF0oZG9jcy9BcGlQZXJpb2RVc2FnZU91dC5tZCkKIC0gW0FwaVBsYW5TdWJzY3JpcHRpb25PdXRdKGRvY3MvQXBpUGxhblN1YnNjcmlwdGlvbk91dC5tZCkKIC0gW0FwaVNlcnZpY2VPdXRdKGRvY3MvQXBpU2VydmljZU91dC5tZCkKIC0gW0FwaVNlcnZpY2VzT3V0XShkb2NzL0FwaVNlcnZpY2VzT3V0Lm1kKQogLSBbQXBpVXNhZ2VBZ2dyZWdhdGVkT3V0XShkb2NzL0FwaVVzYWdlQWdncmVnYXRlZE91dC5tZCkKIC0gW0FwaVVzYWdlSGlzdG9yeU91dF0oZG9jcy9BcGlVc2FnZUhpc3RvcnlPdXQubWQpCiAtIFtCYXRjaENvcnJpZG9ySW5dKGRvY3MvQmF0Y2hDb3JyaWRvckluLm1kKQogLSBbQmF0Y2hDb3JyaWRvck91dF0oZG9jcy9CYXRjaENvcnJpZG9yT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lRGlhc3BvcmFlZE91dF0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVEaWFzcG9yYWVkT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lR2VuZGVySW5dKGRvY3MvQmF0Y2hGaXJzdExhc3ROYW1lR2VuZGVySW4ubWQpCiAtIFtCYXRjaEZpcnN0TGFzdE5hbWVHZW5kZXJlZE91dF0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVHZW5kZXJlZE91dC5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZUdlb0luXShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZUdlb0luLm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lR2VvWmlwcGVkSW5dKGRvY3MvQmF0Y2hGaXJzdExhc3ROYW1lR2VvWmlwcGVkSW4ubWQpCiAtIFtCYXRjaEZpcnN0TGFzdE5hbWVJbl0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVJbi5tZCkKIC0gW0JhdGNoRmlyc3RMYXN0TmFtZU9yaWdpbmVkT3V0XShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZU9yaWdpbmVkT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lUGhvbmVDb2RlZE91dF0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVQaG9uZUNvZGVkT3V0Lm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lUGhvbmVOdW1iZXJHZW9Jbl0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckdlb0luLm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lUGhvbmVOdW1iZXJJbl0oZG9jcy9CYXRjaEZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckluLm1kKQogLSBbQmF0Y2hGaXJzdExhc3ROYW1lVXNSYWNlRXRobmljaXR5T3V0XShkb2NzL0JhdGNoRmlyc3RMYXN0TmFtZVVzUmFjZUV0aG5pY2l0eU91dC5tZCkKIC0gW0JhdGNoTWF0Y2hQZXJzb25hbEZpcnN0TGFzdE5hbWVJbl0oZG9jcy9CYXRjaE1hdGNoUGVyc29uYWxGaXJzdExhc3ROYW1lSW4ubWQpCiAtIFtCYXRjaE5hbWVHZW9Jbl0oZG9jcy9CYXRjaE5hbWVHZW9Jbi5tZCkKIC0gW0JhdGNoTmFtZUluXShkb2NzL0JhdGNoTmFtZUluLm1kKQogLSBbQmF0Y2hOYW1lTWF0Y2hDYW5kaWRhdGVzT3V0XShkb2NzL0JhdGNoTmFtZU1hdGNoQ2FuZGlkYXRlc091dC5tZCkKIC0gW0JhdGNoTmFtZU1hdGNoZWRPdXRdKGRvY3MvQmF0Y2hOYW1lTWF0Y2hlZE91dC5tZCkKIC0gW0JhdGNoUGVyc29uYWxOYW1lR2VuZGVyZWRPdXRdKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVHZW5kZXJlZE91dC5tZCkKIC0gW0JhdGNoUGVyc29uYWxOYW1lR2VvSW5dKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVHZW9Jbi5tZCkKIC0gW0JhdGNoUGVyc29uYWxOYW1lR2VvT3V0XShkb2NzL0JhdGNoUGVyc29uYWxOYW1lR2VvT3V0Lm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVJbl0oZG9jcy9CYXRjaFBlcnNvbmFsTmFtZUluLm1kKQogLSBbQmF0Y2hQZXJzb25hbE5hbWVQYXJzZWRPdXRdKGRvY3MvQmF0Y2hQZXJzb25hbE5hbWVQYXJzZWRPdXQubWQpCiAtIFtCYXRjaFByb3Blck5vdW5DYXRlZ29yaXplZE91dF0oZG9jcy9CYXRjaFByb3Blck5vdW5DYXRlZ29yaXplZE91dC5tZCkKIC0gW0NvcnJpZG9ySW5dKGRvY3MvQ29ycmlkb3JJbi5tZCkKIC0gW0NvcnJpZG9yT3V0XShkb2NzL0NvcnJpZG9yT3V0Lm1kKQogLSBbRmVlZGJhY2tMb29wT3V0XShkb2NzL0ZlZWRiYWNrTG9vcE91dC5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVEaWFzcG9yYWVkT3V0XShkb2NzL0ZpcnN0TGFzdE5hbWVEaWFzcG9yYWVkT3V0Lm1kKQogLSBbRmlyc3RMYXN0TmFtZUdlbmRlckluXShkb2NzL0ZpcnN0TGFzdE5hbWVHZW5kZXJJbi5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVHZW5kZXJlZE91dF0oZG9jcy9GaXJzdExhc3ROYW1lR2VuZGVyZWRPdXQubWQpCiAtIFtGaXJzdExhc3ROYW1lR2VvSW5dKGRvY3MvRmlyc3RMYXN0TmFtZUdlb0luLm1kKQogLSBbRmlyc3RMYXN0TmFtZUdlb1ppcHBlZEluXShkb2NzL0ZpcnN0TGFzdE5hbWVHZW9aaXBwZWRJbi5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVJbl0oZG9jcy9GaXJzdExhc3ROYW1lSW4ubWQpCiAtIFtGaXJzdExhc3ROYW1lT3JpZ2luZWRPdXRdKGRvY3MvRmlyc3RMYXN0TmFtZU9yaWdpbmVkT3V0Lm1kKQogLSBbRmlyc3RMYXN0TmFtZU91dF0oZG9jcy9GaXJzdExhc3ROYW1lT3V0Lm1kKQogLSBbRmlyc3RMYXN0TmFtZVBob25lQ29kZWRPdXRdKGRvY3MvRmlyc3RMYXN0TmFtZVBob25lQ29kZWRPdXQubWQpCiAtIFtGaXJzdExhc3ROYW1lUGhvbmVOdW1iZXJHZW9Jbl0oZG9jcy9GaXJzdExhc3ROYW1lUGhvbmVOdW1iZXJHZW9Jbi5tZCkKIC0gW0ZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckluXShkb2NzL0ZpcnN0TGFzdE5hbWVQaG9uZU51bWJlckluLm1kKQogLSBbRmlyc3RMYXN0TmFtZVVzUmFjZUV0aG5pY2l0eU91dF0oZG9jcy9GaXJzdExhc3ROYW1lVXNSYWNlRXRobmljaXR5T3V0Lm1kKQogLSBbTWF0Y2hQZXJzb25hbEZpcnN0TGFzdE5hbWVJbl0oZG9jcy9NYXRjaFBlcnNvbmFsRmlyc3RMYXN0TmFtZUluLm1kKQogLSBbTmFtZUdlb0luXShkb2NzL05hbWVHZW9Jbi5tZCkKIC0gW05hbWVJbl0oZG9jcy9OYW1lSW4ubWQpCiAtIFtOYW1lTWF0Y2hDYW5kaWRhdGVPdXRdKGRvY3MvTmFtZU1hdGNoQ2FuZGlkYXRlT3V0Lm1kKQogLSBbTmFtZU1hdGNoQ2FuZGlkYXRlc091dF0oZG9jcy9OYW1lTWF0Y2hDYW5kaWRhdGVzT3V0Lm1kKQogLSBbTmFtZU1hdGNoZWRPdXRdKGRvY3MvTmFtZU1hdGNoZWRPdXQubWQpCiAtIFtQZXJzb25hbE5hbWVHZW5kZXJlZE91dF0oZG9jcy9QZXJzb25hbE5hbWVHZW5kZXJlZE91dC5tZCkKIC0gW1BlcnNvbmFsTmFtZUdlb0luXShkb2NzL1BlcnNvbmFsTmFtZUdlb0luLm1kKQogLSBbUGVyc29uYWxOYW1lR2VvT3V0XShkb2NzL1BlcnNvbmFsTmFtZUdlb091dC5tZCkKIC0gW1BlcnNvbmFsTmFtZUluXShkb2NzL1BlcnNvbmFsTmFtZUluLm1kKQogLSBbUGVyc29uYWxOYW1lUGFyc2VkT3V0XShkb2NzL1BlcnNvbmFsTmFtZVBhcnNlZE91dC5tZCkKIC0gW1Byb3Blck5vdW5DYXRlZ29yaXplZE91dF0oZG9jcy9Qcm9wZXJOb3VuQ2F0ZWdvcml6ZWRPdXQubWQpCiAtIFtTb2Z0d2FyZVZlcnNpb25PdXRdKGRvY3MvU29mdHdhcmVWZXJzaW9uT3V0Lm1kKQoKCiMjIERvY3VtZW50YXRpb24gRm9yIEF1dGhvcml6YXRpb24KCiMjIGFwaV9rZXkKLSAqKlR5cGUqKjogQVBJIGtleSAKCkV4YW1wbGUKYGBgZ29sYW5nCmF1dGggOj0gY29udGV4dC5XaXRoVmFsdWUoY29udGV4dC5CYWNrZ3JvdW5kKCksIHN3LkNvbnRleHRBUElLZXksIHN3LkFQSUtleXsKCUtleTogIkFQSUtFWSIsCglQcmVmaXg6ICJCZWFyZXIiLCAvLyBPbWl0IGlmIG5vdCBuZWNlc3NhcnkuCn0pCnIsIGVyciA6PSBjbGllbnQuU2VydmljZS5PcGVyYXRpb24oYXV0aCwgYXJncykKYGBgCgojIyBBdXRob3IKCmNvbnRhY3RAbmFtc29yLmNvbQoK readmeEtag: '"bda79e140b0503daa709e3849df196883b6432b2"' readmeLastModified: Sat, 17 Jul 2021 16:37:57 GMT repositoryId: 311337702 description: >- NamSor API v2 GO golang SDK - classify personal names accurately by gender, country of origin, or ethnicity. created: '2020-11-09T12:52:55Z' updated: '2021-07-17T16:38:17Z' language: Go archived: false stars: 1 watchers: 1 forks: 0 owner: namsor logo: https://avatars.githubusercontent.com/u/6951565?v=4 license: AGPL-3.0 repoEtag: '"752eff8861be26c6fdaa3c00b6f8f940ab8fb7365d4e2a2d124758e35f00eede"' repoLastModified: Sat, 17 Jul 2021 16:38:17 GMT foundInMaster: true category: Description Validators id: 82acbfdc33ea8424ebd5e94a6da14642 - source: openapi3 tags repository: https://github.com/nzlouislu/games-api v3: true id: e3828269cbfbbdda24ebad9ce4fc8b01 repositoryMetadata: base64Readme: >- IyBHYW1lcyBBUEkgU2VydmljZQpBbiBBUEkgc2VydmljZSBmb3IgZmluZGluZyBhbGwgZ2FtZXMsIGNyZWF0aW5nLCByZXRyaWV2aW5nLCB1cGRhdGluZywgYW5kIGRlbGV0aW5nIEdhbWVzIGFuZCBwbGF0Zm9ybXMuCgotR2FtZXMgQVBJIFVSTCA6IGh0dHBzOi8vZ2FtZXNhcGkubnpsb3Vpcy5jb20vZG9jLmh0bWwKCi1Mb2NhbCBTd2FnZ2VyIFVJIFVSTCA6IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4Ny9kb2MuaHRtbAoKVXNlIG9mIHRlY2hub2xvZ3k6IFNwcmluZ2Jvb3QyLjMgKyBTcHJpbmdkb2Mtb3BlbmFwaSAzICsgSlBBICsgSDIgKyBKdW5pdDQKCiIjIGdhbWVzLWFwaSIgCgohW10oc3JjL21haW4vcmVzb3VyY2VzL0dhbWVzLmpwZyk= readmeEtag: '"22611c4d40d9189170d6fd282b97dc9c96ceca90"' readmeLastModified: Tue, 25 Apr 2023 08:00:55 GMT repositoryId: 629405490 description: Games API Service created: '2023-04-18T08:46:31Z' updated: '2023-04-25T07:45:59Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: NZLouislu logo: https://avatars.githubusercontent.com/u/72653348?v=4 repoEtag: '"82dfc48157b244d11fc3e105b1d420009c30a268a2441e22f7f2d790d0e78eaf"' repoLastModified: Tue, 25 Apr 2023 07:45:59 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/ailouislu/games-api - source: openapi3 tags repository: https://github.com/voto-vote/api-specification v3: true id: f1bb93898f6a8a4211765e5b6fd62aaf repositoryMetadata: base64Readme: >- IyBWT1RPIEFQSSBTcGVjaWZpY2F0aW9uCgohW01JVF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ibHVlLnN2ZykKWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS92b3RvLXZvdGUvYXBpLXNwZWNpZmljYXRpb24vYWN0aW9ucy93b3JrZmxvd3MvcmVkb2MtZ2gtcGFnZXMueWFtbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vdm90by12b3RlL2FwaS1zcGVjaWZpY2F0aW9uL2FjdGlvbnMvd29ya2Zsb3dzL3JlZG9jLWdoLXBhZ2VzLnlhbWwpClshW0dpdGh1YiBQYWdlc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby93ZWJzaXRlLXVwLWRvd24tZ3JlZW4tcmVkL2h0dHAvc2hpZWxkcy5pby5zdmcpXShodHRwczovL3ZvdG8tdm90ZS5naXRodWIuaW8vYXBpLXNwZWNpZmljYXRpb24vKQoKVGhpcyBwcm9qZWN0IGNvbnRhaW5zIHRoZSBzcGVjaWZpY2F0aW9uIG9mIHRoZSBWT1RPIEFQSS4gVGhlIHNjaGVtYSBpcyBiYXNlZCBvbiB0aGUgW09wZW5BUEkgU3BlY2lmaWNhdGlvbiB2My4xXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikuCgojIyBJbnRyb2R1Y3Rpb24KCldlIHNhdyB0aGUgbmVlZCB0byBjcmVhdGUgYSBzdGFuZGFyZCBzZXQgb2YgaW5mb3JtYXRpb24gZm9yIHZvdGUgYWR2aWNlIGFwcGxpY2F0aW9ucy4gVGhlcmVmb3JlLCB3ZSBjYW1lIHVwIHdpdGggdGhlIGlkZWEgb2YgZGVmaW5pbmcgYSBzdGFuZGFyZCBBUEkgd2hpbGUgZnVsbGZpbGxpbmcgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmb3JtYXQuIFRoaXMgYWxsb3dzIGVhc3kgYWRvcHRpb24gd2l0aCBnZW5lcmF0ZWQgY2xpZW50IGFuZCBzZXJ2ZXIgc3R1YnMuCgojIyBVc2FnZQoKWW91IGFyZSBmcmVlIHRvIHVzZSB0aGUgc3BlY2lmaWNhdGlvbiB0byBnZW5lcmF0ZSBhIGNsaWVudCwgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGFjY2Vzc2luZyB0aGUgQVBJLiBXZSBoaWdobHkgcmVjb21tZW5kIHVzaW5nIHRoZSBhcGktZ2VuZXJhdG9yLCB3aGljaCBpcyBjYWJhYmxlIG9mIGdlbmVyYXRpbmcgZnVsbHkgdXNhYmxlIGNsaWVudHMgaW4gYWxtb3N0IGV2ZXJ5IHByb2dyYW1taW5nIGxhbmd1YWdlLgoKIyMjIERvY2tlciB1c2FnZQoKR28gaW50byBgb3BlbmFwaWAgZGlyZWN0b3J5IGFuZCBzaW1wbHkgYnVpbGQgYW5kIHJ1biBvdXIgZG9ja2VyIGltYWdlOgoKYGBgc2gKZG9ja2VyIGJ1aWxkIC10IG9wZW4tYXBpLWdlbmVyYXRvcjpsYXRlc3QgLiAmJiBkb2NrZXIgcnVuIC12ICR7UFdEfS86L2FwcC8gLWUgTEFOR1VBR0U9Z28gb3Blbi1hcGktZ2VuZXJhdG9yCmBgYAoKWW91IGNhbiBzcGVjaWZ5IHRoZSBMQU5HVUFHRSBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlIHVzaW5nIHRoZSBgTEFOR1VBR0VgIGVudmlyb25tZW50IHZhcmlhYmxlLiBDaGVjayBvdXQgdGhlIGxpc3QgZnJvbSBbaGVyZV0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2RvY3MvZ2VuZXJhdG9ycy8pLiBBZnRlciBydW5uaW5nLCB5b3Ugd2lsbCBmaW5kIHRoZSBgb3V0cHV0YCBmb2xkZXIsIHdoZXJlIG9uZSBtZXJnZWQgc3BlY2lmaWNhdGlvbiBmaWxlIGFuZCB0aGUgZ2VuZXJhdGVkIGNvZGUgc3RheXMuCgojIyMgTWFudWFsIHVzYWdlCgpJZiB5b3Ugd2FudCB0byBydW4gZXZlcnl0aGluZyBtYW51YWxseSwgZ28gdG8gYG9wZW5hcGlgIGZvbGRlciBhbmQgcnVuOgoKYGBgc2gKIyBJbnN0YWxsIHJlZG9jbHkgb3BlbmFwaS1jbGk6Cm5wbSBpbnN0YWxsIEByZWRvY2x5L29wZW5hcGktY2xpIC1nCiMgSW5zdGFsbCBvcGVuYXBpLWdlbmVyYXRvcjoKYnJldyBpbnN0YWxsIG9wZW5hcGktZ2VuZXJhdG9yCiMgUnVuIExpbnRlcjoKbnB4IEByZWRvY2x5L29wZW5hcGktY2xpIGxpbnQgc3BlY2lmaWNhdGlvbi55YW1sCiMgTWVyZ2UgZmlsZXM6Cm5weCBAcmVkb2NseS9vcGVuYXBpLWNsaSBidW5kbGUgc3BlY2lmaWNhdGlvbi55YW1sIC1vIC4vb3V0cHV0L3NwZWMtbWVyZ2VkLnlhbWwKIyBSdW4gb3BlbmFwaSBnZW5lcmF0b3I6Cm9wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZSAtaSAuL3NwZWMtbWVyZ2VkLnlhbWwgLWcgJExBTkdVQUdFIC1vIC4vZ2VuZXJhdGVkLwpgYGAKCkZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlzaXQ6IFtodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKQo= readmeEtag: '"3b71e6c50dee056bfafc2888158531af9f7485aa"' readmeLastModified: Mon, 04 Mar 2024 06:37:11 GMT repositoryId: 413306506 description: 'VOTO API specified in OpenAPI Specification yml. ' created: '2021-10-04T06:52:07Z' updated: '2025-03-03T08:46:38Z' language: Shell archived: false stars: 1 watchers: 2 forks: 0 owner: voto-vote logo: https://avatars.githubusercontent.com/u/63105374?v=4 license: MIT repoEtag: '"83cedc685f0df48fdf541aefe2ed9d4b7a6d8b208ab37dd44e225af9567029e5"' repoLastModified: Mon, 03 Mar 2025 08:46:38 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/robbot-discord/robbot-api v3: true repositoryMetadata: base64Readme: >- Um9iQm90IEFQSQo9PT0KClRoZSBPcGVuQVBJIHYzIFNjaGVtYSBkZWZpbml0aW9uIHVzZWQgYmVoaW5kIHRoZSBzY2VuZXMgaW4gUm9iQm90CgojIFJlcXVpcmVtZW50cwpbIVtGT1NTQSBTdGF0dXNdKGh0dHBzOi8vYXBwLmZvc3NhLmlvL2FwaS9wcm9qZWN0cy9naXQlMkJnaXRodWIuY29tJTJGcm9iYm90LWRpc2NvcmQlMkZSb2JCb3QtQVBJLnN2Zz90eXBlPXNoaWVsZCldKGh0dHBzOi8vYXBwLmZvc3NhLmlvL3Byb2plY3RzL2dpdCUyQmdpdGh1Yi5jb20lMkZyb2Jib3QtZGlzY29yZCUyRlJvYkJvdC1BUEk/cmVmPWJhZGdlX3NoaWVsZCkKCiogW1N0b3BsaWdodCBTdHVkaW9dKGh0dHBzOi8vc3RvcGxpZ2h0LmlvL3N0dWRpby8pCiogW05vZGUuanMgMTArXShodHRwczovL25vZGVqcy5vcmcvZW4vKQoKIyBHZXR0aW5nIFN0YXJ0ZWQKMS4gUnVuIHRoZSBmb2xsb3dpbmcgdG8gc2V0dXAgR2l0IGhvb2tzIGFuZCBpbnN0YWxsIGRlcGVuZGVuY2llcyByZXF1aXJlZCBmb3IgdXRpbGl0eSBzY3JpcHRzOgpgYGBzaGVsbCBzY3JpcHQKbnBtIGluc3RhbGwKYGBgCjEuIE9wZW4gdGhpcyByZXBvc2l0b3J5IGluIFN0b3BsaWdodCBTdHVkaW8gYW5kIHN0YXJ0IGVkaXRpbmcKCiMjIExpbnRpbmcKYGBgc2hlbGwgc2NyaXB0Cm5wbSBydW4gbGludApgYGAKCiMjIExpY2Vuc2UKWyFbRk9TU0EgU3RhdHVzXShodHRwczovL2FwcC5mb3NzYS5pby9hcGkvcHJvamVjdHMvZ2l0JTJCZ2l0aHViLmNvbSUyRnJvYmJvdC1kaXNjb3JkJTJGUm9iQm90LUFQSS5zdmc/dHlwZT1sYXJnZSldKGh0dHBzOi8vYXBwLmZvc3NhLmlvL3Byb2plY3RzL2dpdCUyQmdpdGh1Yi5jb20lMkZyb2Jib3QtZGlzY29yZCUyRlJvYkJvdC1BUEk/cmVmPWJhZGdlX2xhcmdlKQ== readmeEtag: '"8eb02f72bac3d65a6f4081efe26dd9216c2e8781"' readmeLastModified: Mon, 21 Sep 2020 06:37:25 GMT repositoryId: 217418543 description: The OpenAPI v3 Schema definition used behind the scenes in RobBot created: '2019-10-25T00:27:52Z' updated: '2024-06-04T23:52:14Z' language: null archived: false stars: 1 watchers: 0 forks: 1 owner: robbot-discord logo: https://avatars.githubusercontent.com/u/46425294?v=4 license: MIT repoEtag: '"71a8f4471fdbc26f2dbf512e4c1d56ddd5ceb81a551e27f4c698d6c2f8042e5b"' repoLastModified: Tue, 04 Jun 2024 23:52:14 GMT foundInMaster: true category: Server id: 975cd4c8a22463c3d61d7d414b3322c1 - source: openapi3 tags repository: https://github.com/farhadrezvani/http-generator v3: true id: e6df472abbe7ba67700b466005f08cba repositoryMetadata: base64Readme: >- IyBodHRwLWdlbmVyYXRvcgoKR2VuZXJhdGUgYC5odHRwYCBmaWxlcyBmcm9tIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMKCiMjIEZlYXR1cmVzCgotIEdlbmVyYXRlIEhUVFAgZmlsZShzKSBlaXRoZXIgYXMKCiAgLSBBIHNpbmdsZSBmaWxlIGNvbnRhaW5pbmcgYWxsIHJlcXVlc3RzCiAgLSBBIGZpbGUgcGVyIHJlcXVlc3QKCi0gU3VwcG9ydHMgT3BlbkFQSSB2MiBhbmQgdjMKCiAgLSBKU09OIGFuZCBZQU1MIGZvcm1hdHMKICAtIFNjaGVtYSBWYWxpZGF0aW9uCgotIEluY2x1ZGUgYXV0aG9yaXphdGlvbiBoZWFkZXJzCi0gSW5jbHVkZSBzdW1tYXJpZXMgYW5kIGRlc2NyaXB0aW9ucwotIFZhcmlhYmxlcyBmb3Igcm91dGUgcGFyYW1ldGVycwotIFNwZWNpZnkgYmFzZS11cmwgZm9yIGNvbnZlbmllbnQgZW52aXJvbm1lbnQgc3dpdGNoaW5nCgojIyBJbnN0YWxsYXRpb24KCkluc3RhbGwgaW4geW91ciBwcm9qZWN0IGZvbGRlcjoKCmBgYGJhc2gKbnBtIGkgaHR0cC1nZW5lcmF0b3IgLUQKIyBVc2luZyB5YXJuCnlhcm4gYWRkIGh0dHAtZ2VuZXJhdG9yIC0tZGV2CiMgVXNpbmcgcG5wbQpwbnBtIGFkZCBodHRwLWdlbmVyYXRvciAtRApgYGAKCiMjIFVzYWdlCgpSdW4gaHR0cC1nZW5lcmF0b3Igd2l0aCB0aGUgYXBwcm9wcmlhdGUgb3B0aW9uczoKCmBgYGJhc2gKVXNhZ2U6IGh0dHAtZ2VuZXJhdG9yIFtvcHRpb25zXQoKR2VuZXJhdGUgLmh0dHAgZmlsZXMgZnJvbSBPcGVuQVBJIHNwZWNpZmljYXRpb25zCgpPcHRpb25zOgogIC1pLCAtLWlucHV0IDxpbnB1dD4gICAgICAgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBmaWxlIG9yIFVSTAogIC1vLCAtLW91dHB1dCA8b3V0cHV0PiAgICAgT3V0cHV0IGRpcmVjdG9yeSBvciBIVFRQIGZpbGUKICAtYiwgLS1iYXNlLXVybCA8YmFzZVVybD4gIEJhc2UgVVJMIG9mIHRoZSBBUEkKICAtdCwgLS10b2tlbiA8dG9rZW4+ICAgICAgIEF1dGhvcml6YXRpb24gdG9rZW4KICAtcywgLS1za2lwLXZhbGlkYXRpb24gICAgIFNraXAgdmFsaWRhdGlvbiBvZiBPcGVuQVBJIFNwZWNpZmljYXRpb24gKGRlZmF1bHQ6IGZhbHNlKQogIC12LCAtLXZlcnNpb24gICAgICAgICAgICAgRGlzcGxheSB2ZXJzaW9uIG51bWJlcgogIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIG1lc3NhZ2UKYGBgCgojIyBDb25maWd1cmF0aW9uIEZpbGUKCllvdSBjYW4gYWxzbyB1c2UgYGh0dHAtZ2VuZXJhdG9yYCB1c2luZyBmaWxlIGNvbmZpZ3VyYXRpb25zIG9yIGluIGEgcHJvcGVydHkgaW5zaWRlIHlvdXIgcGFja2FnZS5qc29uLCBhbmQgeW91IGNhbiBldmVuIHVzZSBUeXBlU2NyaXB0IGFuZCBoYXZlIHR5cGUtc2FmZXR5IHdoaWxlIHlvdSBhcmUgdXNpbmcgaXQuCgpZb3UgY2FuIHVzZSBhbnkgb2YgdGhlc2UgZmlsZXM6CgotIGBodHRwZ2VuLmNvbmZpZy50c2AKLSBgaHR0cGdlbi5jb25maWcuanNgCi0gYGh0dHBnZW4uY29uZmlnLmNqc2AKLSBgaHR0cGdlbmAgcHJvcGVydHkgaW4geW91ciBgcGFja2FnZS5qc29uYAoKQmFzaWMgQ29uZmlndXJhdGlvbjoKCmBgYGpzCmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gImh0dHAtZ2VuZXJhdG9yIjsKCmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyh7CiAgaW5wdXQ6ICJzY2hlbWEuanNvbiIsCiAgb3V0cHV0OiAib3V0cHV0Lmh0dHAiLAogIGJhc2VVcmw6ICJodHRwczovL2V4YW1wbGUuY29tIiwKICBza2lwVmFsaWRhdGlvbjogZmFsc2UsCiAgdG9rZW46ICJCZWFyZXIgVG9rZW4iLAp9KTsKYGBgCgojIyBDb250cmlidXRpbmcKCkNvbnRyaWJ1dGlvbnMgYXJlIHdlbGNvbWUhIFBsZWFzZSBzdWJtaXQgaXNzdWVzIG9yIHB1bGwgcmVxdWVzdHMuCgojIyBMaWNlbnNlCgpMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgW0xJQ0VOU0VdKExJQ0VOU0UpIGZpbGUgZm9yIGRldGFpbHMuCg== readmeEtag: '"09664103a1687a0b58b549a1dba9d2f85d49e080"' readmeLastModified: Sat, 13 Jul 2024 12:01:59 GMT repositoryId: 815814066 description: Generate .http files from OpenAPI specifications created: '2024-06-16T08:38:48Z' updated: '2025-12-15T23:54:51Z' language: TypeScript archived: false stars: 2 watchers: 1 forks: 0 owner: farhadrezvani logo: https://avatars.githubusercontent.com/u/10855997?v=4 license: MIT repoEtag: '"9e5a3bc79780d5a840062b9b30442d3fdd961ab2cd796c2abfc97a5ae7a15c1c"' repoLastModified: Mon, 15 Dec 2025 23:54:51 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/nagybalint001/swagger-codegen v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIGNvZGVnZW4KU3dhZ2dlci9PcGVuQXBpIGJhc2VkIEFuZ3VsYXIgY2xpZW50IGdlbmVyYXRpb24gc2FtcGxlcwoKQ29kZSBnZW5lcmF0b3I6IFtOU3dhZyBnZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcpCgpOU3dhZyBjb25maWcgZ2VuZXJhdG9yOiBbTlN3YWcgU3R1ZGlvXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pCgojIyAuTkVUL01TQnVpbGQgYmFzZWQgc2FtcGxlcwoKVGhlIEFuZ3VsYXIgY2xpZW50IGlzIGdlbmVyYXRlZCBkdXJpbmcgdGhlIGJ1aWxkIG9mIHRoZSBkb3RuZXQgcHJvamVjdCAoZnJvbSB0aGUgY29udHJvbGxlcnMsIG5vdCBmcm9tIGEgc3dhZ2dlci5qc29uKS4KClJlc3RmdWwgQVBJIFtzYW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9uYWd5YmFsaW50MDAxL3N3YWdnZXItY29kZWdlbi90cmVlL21hc3Rlci9SZXN0ZnVsKQoKUlBDIHN0eWxlIEFQSSBbc2FtcGxlXShodHRwczovL2dpdGh1Yi5jb20vbmFneWJhbGludDAwMS9zd2FnZ2VyLWNvZGVnZW4vdHJlZS9tYXN0ZXIvUnBjKQoKIyMgTlBNIGJhc2VkIHNhbXBsZQoKVG8gZ2VuZXJhdGUgdGhlIEFuZ3VsYXIgY2xpZW50IHlvdSBzaG91bGQgcnVuIHRoZSBgbnBtIHJ1biBzd2FnZ2VyYCBjb21tYW5kLgoKUlBDIHN0eWxlIEFQSSBbc2FtcGxlXShodHRwczovL2dpdGh1Yi5jb20vbmFneWJhbGludDAwMS9zd2FnZ2VyLWNvZGVnZW4vdHJlZS9tYXN0ZXIvTnBtKQo= readmeEtag: '"f8fb08f8bbb75a784323a3b8b04617015faa30c9"' readmeLastModified: Tue, 16 Jul 2019 17:36:11 GMT repositoryId: 194234991 description: Swagger/OpenApi based Angular client generation samples created: '2019-06-28T08:14:57Z' updated: '2020-03-18T20:57:44Z' language: TypeScript archived: false stars: 1 watchers: 0 forks: 0 owner: nagybalint001 logo: https://avatars.githubusercontent.com/u/17621599?v=4 repoEtag: '"08e16ee6af23032d340875c54178d4a11abbb571423a2082385d935c97a7d6ba"' repoLastModified: Wed, 18 Mar 2020 20:57:44 GMT foundInMaster: true category: SDK id: 6fdb051d7940b2439e25ed564d1349b8 - source: openapi3 tags repository: https://github.com/albankora/decho v3: true repositoryMetadata: base64Readme: >- IyBERUNITwoKIyMgR29hbApUaGUgZ29hbCBpcyB0byBhY2NlbGVyYXRlIHRoZSBwcm9jZXNzIG9mIGJvb3RzdHJhcHBpbmcgYW4gUmVzdGZ1bGwgQVBJIGJhc2UgZ29sYW5nIGFwcGxpY2F0aW9uCgojIyBIb3cKRG9ja2VyIGlzIHVzZWQgdG8gYWNjZWxlcmF0ZSBsb2NhbCBzZXR1cCBmb3IgW0VjaG8gZnJhbWV3b3JrXShodHRwczovL2dpdGh1Yi5jb20vbGFic3RhY2svZWNobykgYW5kIGFsc28geW91IGNhbiBnZW5lcmF0ZSBhIGBzY3JhdGNoYCBpbWFnZSB3aXRoIGEgbWluaW11bSBmb290cHJpbnQgdGhhdCBjYW4gYmUgdXNlZCBpbiBwcm9kdWN0aW9uLgoKIyMgU2V0dXAgbG9jYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzCmBgYGJhc2gKY3AgLmVudi5leGFtcGxlIC5lbnYKYGBgCgojIyBUaGUgY29tbWFuZCBzY3JpcHQKYGBgYmFzaAouL2FwcCB7Y21kfQpgYGAKCiMjIEJ1aWxkIGxvY2FsIGRldgpgYGBiYXNoCiMgYnVpbGQgbG9jYWwgZG9ja2VyIGNvbnRhaW5lciBhbmQgZG93bmxvYWQgcmVxdWlyZWQgbGlicwouL2FwcCBidWlsZApgYGAKCiMjIFJ1biBsb2NhbCBkZXYKYGBgYmFzaAojIHJ1biBsb2NhbCBkb2NrZXIgY29udGFpbmVyCi4vYXBwIHJ1bgpgYGAKCiMjIERldiBzZXJ2ZXIgVVJMCmBodHRwOi8vMTI3LjAuMC4xOjMwMDBgCgojIyBQcm9kdWN0aW9uIGRvY2tlciBpbWFnZQpgYGBiYXNoCiMgY3JlYXRlcyBhIGRvY2tlciBwcm9kdWN0aW9uIGltYWdlCi4vYXBwIHByZApgYGAKCiMjIEZ1bGwgbGlzdCBvZiBjb21tYW5kczoKYGBgYmFzaApDb21tYW5kczoKCiBidWlsZCAgICAgICAgIEJ1aWxkIGxvY2FsIGRvY2tlciBjb250YWluZXIgYW5kIGRvd25sb2FkIHJlcXVpcmVkIGxpYnMKIHJ1biAgICAgICAgICAgUnVuIGxvY2FsIGRvY2tlciBjb250YWluZXIKIHN0b3AgICAgICAgICAgU3RvcCB5b3VyIGxvY2FsIGRvY2tlciBjb250YWluZXIKIHJlbW92ZSAgICAgICAgUmVtb3ZlIGxvY2FsIGNvbnRhaW5lcnMgYW5kIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byB0aGVtCiB0ZXN0ICAgICAgICAgIFJ1biB1bml0IHRlc3RzCiBjb3ZlciAgICAgICAgIFJ1biB1bml0IHRlc3RzIGFuZCBnZW5lcmF0ZSBjb3ZlcmFnZSBmaWxlCiBmbXQgICAgICAgICAgIEZvcm1hdCB0aGUgY29kZSB3aXRoIGdvIHN0YW5kYXJkcwogdmV0ICAgICAgICAgICBDaGVjayBhbmQgcmVwb3J0IGxpa2VseSBtaXN0YWtlcyBpbiBwYWNrYWdlcwogbW9kIFtDT01NQU5EXSBDb21tYW5kcyBmb3IgZ28gbW9kdWxlIG1haW50ZW5hbmNlCiBiYXNoICAgICAgICAgIEVudGVyIGRvY2tlcnMgYmFzaCBpbnRlcmZhY2UKIHByZCAgICAgICAgICAgQnVpbGQgc2NyYXRjaCBwcm9kdWN0aW9uIGltYWdlCiBycHJkICAgICAgICAgIFJ1biBwcm9kdWN0aW9uIGltYWdlCiBjb2RlZ2VuICAgICAgIEdlbmVyYXRlIGNvZGUgZnJvbSB0aGUgb3BlbiBhcGkgZG9jdW1lbnRhdGlvbgpgYGAKCiMjIFJlLXJ1biBvbiB0aGUgZmx5ClRoZSBhcHAgdXNlcyBbUmVmbGV4XShodHRwczovL2dpdGh1Yi5jb20vY2VzcGFyZS9yZWZsZXgpIGZvciByZS1ydW5uaW5nIHlvdXIgYXBwIHdoZW4geW91IGNoYW5nZSB5b3VyIGNvZGUKCiMjIFByb2plY3QgTGF5b3V0ClRoZSBhcHAgZm9sbG93cyB0aGUgW1N0YW5kYXJkIEdvIFByb2plY3QgTGF5b3V0XShodHRwczovL2dpdGh1Yi5jb20vZ29sYW5nLXN0YW5kYXJkcy9wcm9qZWN0LWxheW91dCkgc28gdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgaW5jbHVkZXMgZm9sZGVycyBsaWtlIGBjbWRgLCBgaW50ZXJuYWxgLCBgcGtnYCBhbmQgYGJ1aWxkYC4gU3RhbmRhcmQgR28gUHJvamVjdCBMYXlvdXQgaXMgYW4gZW1lcmdpbmcgcHJvamVjdCBsYXlvdXQgYmFzZSBvbiB0aGUgR28gZWNvc3lzdGVtLgoKIyMgQVBJLUZpcnN0IGFwcHJvYWNoCkVkaXQgZmlsZSBgYXBpZG9jLnlhbWxgIGFuZCBnZW5lcmF0ZSBjb2RlIHVzaW5nIFtPQVBJLUNvZGVnZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9kZWVwbWFwL29hcGktY29kZWdlbikKYGBgYmFzaAojIGdlbmVyYXRlIGNvZGUgZnJvbSBvcGVuIGFwaSB5YW1sIGZpbGUKLi9hcHAgY29kZWdlbgpgYGAKVGhlIGBjb2RlZ2VuYCBjb21tYW5kIHJlYWRzIGBhcGlkb2MueWFtbGAgYW5kIGdlbmVyYXRlcyB0d28gZmlsZXMgYHNlcnZlci5nb2AgYW5kIGB0eXBlcy5nb2AgdW5kZXIgYGludGVybmFsL2NvZGVnZW5gLiBgdHlwZXMuZ29gIGhhcyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGRlZmZpbmVkIG9uIGBhcGlkb2MueWFtbGAgYW5kIHRoZSBgc2VydmVyLmdvYCBmaWxlIGhhcyB0aGUgc2VydmVyIHNpZGUgc2V0dXAgZm9yIHRoZSBBUEku readmeEtag: '"342d3ec71d088a7ce98c0dfa398f1cc3318afa8c"' readmeLastModified: Sat, 28 Mar 2020 22:32:43 GMT repositoryId: 245699994 description: 'DECHO - Docker setup for Echo framework ' created: '2020-03-07T20:22:05Z' updated: '2020-03-28T22:33:48Z' language: Go archived: false stars: 1 watchers: 1 forks: 0 owner: albankora logo: https://avatars.githubusercontent.com/u/771020?v=4 license: MIT repoEtag: '"8ca54cab9a8bb6faafc52674300cea911c33e13906bfaef139a5a8429774855d"' repoLastModified: Sat, 28 Mar 2020 22:33:48 GMT foundInMaster: true category: - Code Generators - Server Implementations id: ac3aa95db2d6a2402543e229a8914f75 - source: openapi3 tags repository: https://github.com/iamfrench/efrei-m2-st2dccc v3: true repositoryMetadata: base64Readme: >- IyBTVDJEQ0NDCkNsb3VkIEludGVncmF0aW9uIChNMiwgTTItQVBQLUxTSSwgTTItQVBQLVJJLCBNMi1QUk8gLSAyMDIxUzkpCgojIyBPdmVydmlldwpUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgdGhlIGZpbmFsIHByb2plY3QgKHRoYXQgaW5jbHVkZXMgbGFicyAxIHRvIDMpLgoKSW5zdHJ1Y3Rpb25zIGFyZSBhdmFpbGFibGUgaW4gYC5wZGZgIGZpbGVzIGF0IHRoZSByb290IG9mIHRoZSBkaXJlY3RvcnkuCgohW0FwcGxpY2F0aW9uIERpYWdyYW1dKC4vYXJ0ZWZhY3RzL2FwcC1kaWFncmFtLnBuZykKCiMjIFByZXJlcXVpc2l0ZQpUaGlzIHByb2plY3QgcnVucyBvbiBkb2NrZXIuCgpZb3UgY2FuIGNoZWNrIGlmIGRvY2tlciBpcyBwcm9wZXJseSBpbnN0YWxsZWQgYW5kIHJ1bm5pbmcgYnkgdHlwaW5nIGludG8gYSB0ZXJtaW5hbCBhIHNpbXBsZSBkb2NrZXIgY29tbWFuZCBzdWNoIGFzIGBkb2NrZXIgcHNgOgoKIVtUZXN0IGlmIGRvY2tlciBpcyBydW5uaW5nIHVzaW5nIGRvY2tlciBwcyBjb21tYW5kXSguL2FydGVmYWN0cy90ZXJtaW5hbC10ZXN0LWlmLWRvY2tlci1pcy1ydW5uaW5nLWRvY2tlci1wcy5naWYpCgojIyBJbnN0YWxsYXRpb24KQ2xvbmUgdGhpcyByZXBvc2l0b3J5ICh5b3UgY2FuIHVzZSBHaXQsIG9yIHVzZSB0aGUgR1VJIGNsaWVudCBHaXRIdWIgRGVza3RvcCkKCkFuZCB0aGF0J3MgaXQgIQoKIyMgUnVuCk5vdyB5b3UgY2FuIHJ1biB0aGUgcHJvamVjdC4gVG8gZG8gc28sIHlvdSB3aWxsIGhhdmUgdG8gb3BlbiBhIHRlcm1pbmFsIGFuZCBleGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCA6CgoqT3B0aW9ubmFsKiBZb3UgY2FuIGRvd25sb2FkIHByZS1idWlsdCBpbWFnZXMgZnJvbSB0aGUgR2l0SHViIENvbnRhaW5lciBSZWdpc3RyeSB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGBiYXNoCmRvY2tlciBwdWxsIGdoY3IuaW8vaWFtZnJlbmNoL2VmcmVpLW0yLXN0MmRjY2NfbW92aWUKZG9ja2VyIHB1bGwgZ2hjci5pby9pYW1mcmVuY2gvZWZyZWktbTItc3QyZGNjY19hY3RvcgpgYGAKClRoZW4geW91IGNhbiBzdGFydCB0aGUgYXBwbGljYXRpb24gdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgYmFzaApkb2NrZXItY29tcG9zZSB1cCAtZApgYGAKCj4gSGludDogVG8gc3BlZWQgdXAgdGhlIGJ1aWxkIHByb2Nlc3MsIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYGJhc2gKZG9ja2VyLWNvbXBvc2UgYnVpbGQgLS1wYXJhbGxlbApgYGAKClRoaXMgY29tbWFuZCB3aWxsIHJlYWQgdGhlIFtgZG9ja2VyLWNvbXBvc2UueW1sYF0oLi9kb2NrZXItY29tcG9zZS55bWwpIGZpbGUgYW5kIGRlcGxveSB0aGUgYXBwbGljYXRpb24gb24geW91ciBsb2NhbCBjb21wdXRlci4KCiFbRGVwbG95IHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nIHVzaW5nIGRvY2tlci1jb21wb3NlIHVwIGNvbW1hbmRzXSguL2FydGVmYWN0cy90ZXJtaW5hbC1kZXBsb3ktdGhlLWFwcGxpY2F0aW9uLWRvY2tlci1jb21wb3NlLXVwLmdpZikKCllvdSBjYW4gY2hlY2sgaWYgdGhlIGNvbnRhaW5lcnMgYXJlIHJ1bm5pbmcgdXNpbmcgdGhpcyBjb21tYW5kOgoKYGBgYmFzaApkb2NrZXItY29tcG9zZSBwcwpgYGAKCiFbQ2hlY2sgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmcgdXNpbmcgZG9ja2VyLWNvbXBvc2UgcHMgY29tbWFuZHNdKC4vYXJ0ZWZhY3RzL3Rlcm1pbmFsLWNoZWNrLWlmLXRoZS1hcHBsaWNhdGlvbi1pcy1ydW5uaW5nLXVzaW5nLWRvY2tlci1jb21wb3NlLXBzLnBuZykKCiMjIFRlc3RzCk5vdyB0aGF0IHlvdSBoYXZlIGluc3RhbGxlZCwgYW5kIHJ1biB0aGUgYXBwbGljYXRpb24sIGl0J3MgdGltZSB0byBwbGF5IHdpdGggdGhlIHByb2plY3QhCgpPcGVuIHlvdSB3ZWIgYnJvd3NlciB0byBbYGh0dHA6Ly9sb2NhbGhvc3RgXShodHRwOi8vbG9jYWxob3N0KQoKVGhlIGludGVyZmFjZSB0aGF0IGlzIGRpc3BsYXllZCBpcyB0aGUgZGVmYXVsdCBTd2FnZ2VyIFVJIHdlYiBDbGllbnQuIFRoaXMgd2ViIGNsaWVudCBoYXMgYmVlbiBmZWQgd2l0aCBhIGRlZmluaXRpb24gZmlsZSAoW2Bzd2FnZ2VyLnlhbWxgXSguL3N3YWdnZXIueWFtbCkpIHRoYXQgZGVzY3JpYmUgb3VyIEFQSXMuCgohW09wZW4gdGhlIFN3YWdnZXIgVUkgd2ViIGNsaWVudCB1c2luZyBhIGJhc2ljIHdlYiBicm93c2VyXSguL2FydGVmYWN0cy9jaHJvbWUtb3Blbi1zd2FnZ2VyLXdlYi1jbGllbnQucG5nKQoKIyMjIEF2YWlsYWJsZSBlbmRwb2ludHMgYW5kIG1ldGhvZHMKQmVjYXVzZSB3ZSBoYXZlIHR3byBzZXJ2aWNlcyBydW5uaW5nIHdlIGhhdmUgY2hvc2VuIHRvIGV4cG9zZSB0aGVtIHRvIHR3byBkaWZmZXJlbnQgcG9ydHMgYXMgZGlzcGxheWVkIGluIHRoZSBzb2x1dGlvbiBkaWFncmFtLgpUaGUgcG9ydCBgODFgIGlzIHVzZWQgYnkgdGhlIGFjdG9yIHNlcnZpY2UgYW5kIHRoZSBwb3J0IGA4MmAgaXMgdXNlZCBieSB0aGUgbW92aWUgc2VydmljZS4KCkluIG9yZGVyIHRvIHVzZSB0aG9zZSBlbmRwb2ludHMgb24gZGlmZmVyZW50IHBvcnRzIGluIFN3YWdnZXIgVUkgd2UgaGF2ZSBvdmVyd3JpdHRlbiB0aGUgZGVmYXVsdCBob3N0IChsaW5lcyBgNGAgYW5kIGA5YCkgaW4gdGhlIFtgZG9ja2VyLWNvbXBvc2UueW1sYF0oLi9kb2NrZXItY29tcG9zZS55bWwpIGZpbGU6CgohW092ZXJyaWRlIHRoZSBkZWZhdWx0IHNlcnZlcl0oLi9hcnRlZmFjdHMvc3dhZ2dlci15YW1sLWN1c3RvbS1zZXJ2ZXJzLnBuZykKCiMjIyMgQWN0b3IgU2VydmljZSAob24gcG9ydCA4MSkKCiMjIyMjIGBHRVRgIGZpbkFsbAo+IFJldHVybiBhbGwgbW92aWVzIHN0b3JlZCBpbiB0aGUgbW92aWUgc2VydmljZSB3aXRoIGFjdG9ycwoKIyMjIyMgYEdFVGAgZmluZE9uZS9ge21vdmllSWR9YAo+IFJldHVybiBhIG1vdmllIGZyb20gdGhlIG1vdmllIHNlcnZpY2UsIHdpdGggYWN0b3JzIGJ5IGBtb3ZpZUlkYAoKCiMjIyMgTW92aWUgU2VydmljZSAob24gcG9ydCA4MikKCiMjIyMjIGBHRVRgIG1vdmllcwo+IFJldHVybiBhbGwgbW92aWVzCgojIyMjIyBgUE9TVGAgbW92aWVzCj4gQWRkIGEgbmV3IG1vdmllIHRvIHRoZSBtb3ZpZSBzZXJ2aWNlCgojIyMjIyBgR0VUYCBtb3ZpZXMvYHttb3ZpZUlkfWAKPiBSZXR1cm4gYSBzaW5nbGUgbW92aWUgYnkgYG1vdmllSWRgIAoKIyMjIyMgYFBVVGAgbW92aWVzL2B7bW92aWVJZH1gCj4gRWRpdCBhIG1vdmllIGJ5IGBtb3ZpZUlkYCAKCiMjIyMjIGBERUxFVEVgIG1vdmllcy9ge21vdmllSWR9YAo+IERlbGV0ZSBhIG1vdmllIGJ5IGBtb3ZpZUlkYCAKCiMjIyBUZXN0IHRoZSBjaXJjdWl0IGJyZWFrZXIKVGhlIGNpcmN1aXQgYnJlYWtlciBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgYWN0b3Igc2VydmljZS4gSXQgaXMgdXNlZCB3aGVuIHRoaXMgc2VydmljZSBjYWxsIHRoZSBtb3ZpZSBzZXJ2aWNlLgoKIyMjIyBTZXJ2aWNlIGlzIHVuYXZhaWxhYmxlIChubyByZXNwb25zZSkKSWYgdGhlIHJlcXVlc3RlZCBzZXJ2aWNlIGlzIHVuYXZhaWxhYmxlIGEgZmFsbGJhY2sgbWV0aG9kIGlzIGltcGxlbWVudGVkIHRvIHByZXZlbnQgYSBjYXNjYWRlIGZhaWx1cmUuCgpUbyBjcmVhdGUgYSBmYWlsdXJlLCB5b3UganVzdCBuZWVkIHRvIGtpbGwgdGhlIGNvbnRhaW5lciBydW5uaW5nIHRoZSBtb3ZpZSBzZXJ2aWNlLiBUbyBkbyBzbywgd2Ugd2lsbCB1c2UgdGhlIERvY2tlciBEZXNrdG9wIERhc2hib2FyZCwgYSBHVUkgZm9yIERvY2tlcjoKCiFbU3RvcCB0aGUgY29udGFpbmVyIHJlc3BvbnNpYmxlIGZvciBydW5uaW5nIHRoZSBtb3ZpZSBzZXJ2aWNlXSguL2FydGVmYWN0cy9kb2NrZXItZGVza3RvcC1kYXNoYm9hcmQtc3RvcC1tb3ZpZS1jb250YWluZXIucG5nKQoKTm93IHRoYXQgdGhlIGNvbnRhaW5lciBpcyBkb3duLCB3ZSBjYW4gdGVzdCBpZiB0aGUgY2lyY3VpdCBicmVha2VyIGlzIHdvcmtpbmcgYnkgZXhlY3V0aW5nIGEgUkVTVCByZXF1ZXN0IHRvIHRoZSBhY3RvciBzZXJ2aWNlLgoKVG8gZG8gc28sIHdlIHdpbGwgdXNlIHRoZSBTd2FnZ2VyIFVJOgoKIVtNYWtpbmcgYSBSRVNUIHJlcXVlc3Qgd2hlbiB0aGUgbW92aWUgc2VydmljZSBpcyBkb3duXSguL2FydGVmYWN0cy9jaHJvbWUtc3dhZ2dlci11aS1tb3ZpZS1zZXJ2aWNlLWRvd24tcmVxdWVzdC5wbmcpCgpBbmQgaGVyZSBpcyB0aGUgcmVzcG9uc2U6CgohW1JFU1QgcmVzcG9uc2UgZnJvbSB0aGUgYWN0b3Igc2VydmljZSB3aGVuIHRoZSBtb3ZpZSBzZXJ2aWNlIGlzIGRvd25dKC4vYXJ0ZWZhY3RzL2Nocm9tZS1zd2FnZ2VyLXVpLW1vdmllLXNlcnZpY2UtZG93bi1yZXNwb25zZS5wbmcpCgpBcyBleHBlY3RlZCwgdGhlIG1vdmllIHNlcnZpY2UgaXMgdW5hdmFpbGFibGUsIHRoZXJlZm9yZSB0aGUgZmFsbGJhY2sgbWV0aG9kIGhhdmUgYmVlbiBjYWxsZWQgYW5kIHRoZSByZXNwb25zZSBtb2RpZmllZCBhY2NvcmRpbmdseS4KCkhlcmUgaXMgdGhlIGNvZGUgcmVzcG9uc2libGUgZm9yIHRoYXQgKGluIHRoZSBhY3RvciBzZXJ2aWNlKToKCiFbUkVTVCBDbGllbnQgb2YgdGhlIGFjdG9yIHNlcnZpY2UgZW1iZWRkZWQgaW50byBhIGNpcmN1aXQgYnJlYWtlcl0oLi9hcnRlZmFjdHMvYWN0b3Itc2VydmljZS1yZXN0LWNsaWVudC13aXRoLWZhbGxiYWNrLnBuZykKCgojIyMjIFNlcnZpY2UgaXMgc2xvdyBvciBkZWdyYWRlZCAodGltZWxpbWl0KSAKSWYgYSByZXF1ZXN0IGlzIHRha2luZyB0b28gbXVjaCB0aW1lLCBhIGZhbGxiYWNrIG1ldGhvZCBpcyB0YWtpbmcgY2FyZSBvZiBwcm92aWRpbmcgYSByZXNwb25zZSB0byBlbnN1cmUgYSBjb250aW51aXR5IG9mIHNlcnZpY2UuCgpUbyBzaW11bGF0ZSB0aGlzIGRlbGF5LCB3ZSBoYXZlIGltcGxlbWVudGVkIGFuIGFyZ3VtZW50IChwYXNzZWQgYXMgYSBxdWVyeSBwYXJhbWV0ZXIpIGZvciB0aGUgYEdFVCB7bW92aWUtc2VydmljZX0vbW92aWVzL3tpZH1gIHJvdXRlIGluIHRoZSBtb3ZpZSBzZXJ2aWNlOgoKIVtEZWxheSBhZGRlZCB0byB0aGUgcXVlcnkgaW4gdGhlIE1vdmllIFNlcnZpY2UgdXNpbmcgYSBwYXVzZSBzdGF0ZW1lbnRdKC4vYXJ0ZWZhY3RzL21vdmllLXNlcnZpY2UtZGVsYXkucG5nKQoKQW5kIHRoYW5rcyB0byB0aGUgU3dhZ2dlciBVSSB3ZSBjYW4gdGVzdCB0aGlzOgoKIVtTd2FnZ2VyIFVJIHF1ZXJ5IHRoYXQgaW5kdWNlIGEgZGVsYXkgb2YgNjAwbXNdKC4vYXJ0ZWZhY3RzL2Nocm9tZS1zd2FnZ2VyLXVpLWRlbGF5LXF1ZXJ5LnBuZykKClRoaXMgcHJvZHVjZXMgdGhlIGZvbGxvd2luZyByZXNwb25zZToKCiFbU3dhZ2dlciBVSSByZXNwb25zZSBhZnRlciBhIHF1ZXJ5IGluZHVjaW5nIGEgZGVsYXkgb2YgNjAwbXNdKC4vYXJ0ZWZhY3RzL2Nocm9tZS1zd2FnZ2VyLXVpLWRlbGF5LXJlc3BvbnNlLnBuZykKCkFzIGV4cGVjdGVkLCBhIGZhbGxiYWNrIG1ldGhvZCBoYXMgYmVlbiB0cmlnZ2VyZWQuCgpIZXJlIGlzIHRoZSBjb2RlIHJlc3BvbnNpYmxlIGZvciB0aGF0IChpbiB0aGUgYWN0b3Igc2VydmljZSk6CgohW1JFU1QgQ2xpZW50IG9mIHRoZSBhY3RvciBzZXJ2aWNlIGVtYmVkZGVkIGludG8gYSBjaXJjdWl0IGJyZWFrZXJdKC4vYXJ0ZWZhY3RzL2FjdG9yLXNlcnZpY2UtcmVzdC1jbGllbnQtd2l0aC1mYWxsYmFjay5wbmcpCgpUaGUgdGltZSBsaW1pdCBoYXMgYmVlbiBzZXQgaW4gdGhlIGNpcmN1aXQgYnJlYWtlciBjb25maWc6CgohW0NpcmN1aXQgYnJlYWtlciBjb25maWcgZmlsZV0oLi9hcnRlZmFjdHMvYWN0b3Itc2VydmljZS1jaXJjdWl0LWJyZWFrZXItY29uZmlnLnBuZykKCiMjIENsZWFuIHVwCk5vdyB0aGF0IHlvdSBoYXZlIGZpbmlzaGVkIHBsYXlpbmcgd2l0aCB0aGUgYXBwbGljYXRpb24uIEl0J3MgdGltZSB0byBjbGVhbiB0aGUgcHJvamVjdC4KClRvIGRvIHNvLCBvcGVuIGEgdGVybWluYWwgYW5kIHR5cGUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgYmFzaApkb2NrZXItY29tcG9zZSBkb3duIC12CmBgYAoKVGhpcyBjb21tYW5kIHdpbGwgc3RvcCBhbmQgcmVtb3ZlIGNvbnRhaW5lcnMgYW5kIG5ldHdvcmtzIGZyb20geW91ciBjb21wdXRlciBhc3NpZ25lZCB0byBvdXIgcHJvamVjdC4KCiFbQ2xlYW5pbmcgdGhlIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBkb2NrZXItY29tcG9zZSBkb3duIGNvbW1hbmRdKC4vYXJ0ZWZhY3RzL3Rlcm1pbmFsLXJldGlyZS1hcHBsaWNhdGlvbi11c2luZy1kb2NrZXItY29tcG9zZS1kb3duLnBuZykK readmeEtag: '"d054fe66dbbf4eb50bb3c38e2914af17d53696a5"' readmeLastModified: Wed, 27 Jan 2021 00:33:46 GMT repositoryId: 323942348 description: Cloud Integration (M2, M2-APP-LSI, M2-APP-RI, M2-PRO - 2021S9) created: '2020-12-23T15:50:46Z' updated: '2021-01-27T00:33:55Z' language: Java archived: false stars: 1 watchers: 1 forks: 1 owner: IAmFrench logo: https://avatars.githubusercontent.com/u/10818450?v=4 repoEtag: '"af5a601dc0f873ee481e21cc69a8d16462db6673beee2fcc9e8e0130376e61d7"' repoLastModified: Wed, 27 Jan 2021 00:33:55 GMT foundInMaster: true category: Server Implementations id: 231ebfcfa88388aaeea1401e51d85d85 - source: openapi3 tags repository: https://github.com/theairblow/mojang-api v3: true repositoryMetadata: base64Readme: IyBNb2phbmcgQVBJIGRvY3VtZW50YXRpb24KTm90aGluZyB0byBzZWUgaGVyZQo= readmeEtag: '"960c922f43686516641ab631b98ed53ab83a211e"' readmeLastModified: Wed, 01 Mar 2023 12:31:15 GMT repositoryId: 479952503 description: Mojang API documented with Swagger created: '2022-04-10T08:06:58Z' updated: '2023-01-03T13:13:05Z' language: HTML archived: false stars: 1 watchers: 1 forks: 0 owner: TheAirBlow logo: https://avatars.githubusercontent.com/u/68467762?v=4 repoEtag: '"9e34cfa5de3c494c7c3436c4e56980eb423779d630ef9b726893a0aa554b6607"' repoLastModified: Tue, 03 Jan 2023 13:13:05 GMT foundInMaster: true category: - Documentation - Parsers id: 59a847459f9074c871e1306d704a6a13 - source: openapi3 tags repository: >- https://github.com/sandeepbegudem/springboot-jwt-authorization-junit5-mockito v3: true id: 1720dd9011e9ff1060630ab8942bdc2a repositoryMetadata: base64Readme: >- CiMgc3ByaW5nYm9vdC1qd3QgYXV0aG9yaXphdGlvbi1qdW5pdDUtbW9ja2l0bwoKIyMgUHJvamVjdCBEZXRhaWxzOgoKIyMjIyBKYXZhIDE3CiMjIyMgU3ByaW5nIEJvb3QgMy4xLjAsCiMjIyMgU3ByaW5nIERhdGEgSnBhCiMjIyMgTXlzcWwKIyMjIyBTcHJpbmcgU3RhcnRlciBTZWN1cml0eQojIyMjIEpzb24gV2ViIFRva2VuIChKV1QpCiMjIyMgTG9tYm9rCiMjIyMgc3ByaW5nZG9jLW9wZW5hcGktc3RhcnRlci13ZWJtdmMtdWkKIyMjIyBKdW5pdDUKIyMjIyBNb2NraXRvCiMjIyMgSmFjb2NvCiMjIyMgRGV2dG9vbHMKIyMjIyBTdGFydGVyIFdlYgoK readmeEtag: '"62e86dc73a70d1665ca108222c80e33fb4aa0c1a"' readmeLastModified: Thu, 22 Feb 2024 05:43:37 GMT repositoryId: 747440555 description: >- This application is built using Spring Boot, Java17, Spring Security using JWT authentication, MySQL, Spring Data Jpa, maven, Junit5 and mockito framework. created: '2024-01-23T23:40:17Z' updated: '2024-02-22T06:22:23Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: sandeepbegudem logo: https://avatars.githubusercontent.com/u/124546985?v=4 repoEtag: '"e2d790cac87bf2f1e91f807d9b624f28dd1e0c0c8f352c2ef4683ffbeeb2a582"' repoLastModified: Thu, 22 Feb 2024 06:22:23 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/goldenglorys/eden-api v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CjxhIGhyZWY9Imh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9sYXJhdmVsL2ZyYW1ld29yayI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L2wvbGFyYXZlbC9mcmFtZXdvcmsiIGFsdD0iTGljZW5zZSI+PC9hPgo8L3A+CgojIyBFZGVuIFdvcmsgU2FtcGxlCgpXZWxjb21lIHRvIHRoZSBHYXJkZW4gb2YgRWRlbiEKClRoaXMgd29yayBzYW1wbGUgaXMgYSBzaW1wbGUgQVBJIHdpdGggdmFyaW91cyBjb25zdW1hYmxlIGVuZHBvaW50cyB3aGljaCBhcmUgYXZhaWxhYmxlIHRocm91Z2ggdGhlIEFQSSBkb2N1bWVudGF0aW9uIHBhZ2UuCgpUaGUgQVBJIHNpbXBseSBoYXMgYnV0IG5vdCBsaW1pdGVkIHRvOgoKLSBBdXRvbWF0ZWQgVGVzdGluZy4KLSBBUEkgY2FjaGluZyBmb3IgdXAgdG8gMyBtaW51dGVzIG9uIGFueSBnZXQgcmVxdWVzdHMuCi0gRW1iZWRlZCAmJiBpbnRlcmFjdGl2ZSBBUEkgZG9jdW1lbnRhdGlvbi4gCi0gU2ltcGxpY2l0eSBieSBkZXNpZ24gaW4gaXQncyBvd24gbWluaW1hbCBsZXZlbC4KCiMjIEdldHRpbmcgU3RhcnRlZAotLS0tLS0tLS0tLS0tLS0KCiMjIyMgVmlhIENsb25pbmcgVGhlIFJlcG9zaXRvcnk6CgpbUEhQXShodHRwczovL3BocC5uZXQpIDguMCsgYW5kIFtDb21wb3Nlcl0oaHR0cHM6Ly9nZXRjb21wb3Nlci5vcmcpIHBsdXMgYSBkYXRhYnNlIChNeVNRTCBvciBQb3N0Z3Jlc1NRTCkgYXJlIHJlcXVpcmVkLgoKYGBgYmFzaAojIEdldCB0aGUgcHJvamVjdApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2dvbGRlbmdsb3J5cy9lZGVuLXdvcmstc2FtcGxlLmdpdAoKIyBDaGFuZ2UgZGlyZWN0b3J5CmNkIGVkZW4td29yay1zYW1wbGUKCiMgSW5zdGFsbCBDb21wb3NlciBkZXBlbmRlbmNpZXMKY29tcG9zZXIgaW5zdGFsbCBvciBjb21wb3NlciB1cGRhdGUKCiMgQ29weSAuZW52LmV4YW1wbGUgdG8gLmVudgpjcCAuZW52LmV4YW1wbGUgLmVudgoKIyBDcmVhdGUgYSBkYXRhYmFzZSAod2l0aCBteXNxbCBvciBwb3N0Z3Jlc3FsKQojIEFuZCB1cGRhdGUgLmVudiBmaWxlIHdpdGggZGF0YWJhc2UgY3JlZGVudGlhbHMKIyBEQl9DT05ORUNUSU9OPW15c3FsIE9SIHBnc3FsCiMgREJfSE9TVD0xMjcuMC4wLjEKIyBEQl9EQVRBQkFTRT1lZGVuCiMgREJfVVNFUk5BTUU9IyMjIwojIERCX1BBU1NXT1JEPSMjIyMKCiMgUnVuIHRoZSBkYXRhYmFzZSBtaWdyYXRpb24gYW5kIHRoZSBpbml0aWFsIHNlZWRpbmcgZGF0YSB1c2luZwpwaHAgYXJ0aXNhbiBtaWdyYXRlIC0tc2VlZAoKIyBHZW5lcmF0ZSBhcHBsaWNhdGlvbiBzZWN1cmUga2V5IChpbiAuZW52IGZpbGUpCnBocCBhcnRpc2FuIGtleTpnZW5lcmF0ZQoKIyBSdW4gdGhlIGFwcGxpY2F0aW9uIHVzaW5nCnBocCBhcnRpc2FuIHNlcnZlCmBgYAoKIyMgUnVuIFRlc3RzCgpUbyBydW4gdGhlIGF1dG9tYXRlZCB0ZXN0cywgaXNzdWUgdGhlIGNvbW1hbmQ6CgogICAgcGhwIGFydGlzYW4gdGVzdAoKVGhlIHRlc3QgZG9zZW4ndCBnZW5lcmF0ZSB0aGUgY292ZXJhZ2Ugc3RhdGlzdGljcywgZmVlbCBmcmVlIGFkZGluZyB0aGF0LgoKIyMgTGl2ZSBVUkxzCgotIFtBUEkgVVJMXShodHRwczovL2VkZW4tc2FtcGxlLWFwaS5oZXJva3VhcHAuY29tL2FwaS92MSk6IEhpdHMgdGhlIEFQSSBob21lL3dlbGNvbWUgZW5kcG9pbnQuCi0gW0FQSSBEb2N1bWVudGF0aW9uXShodHRwczovL2VkZW4tc2FtcGxlLWFwaS5oZXJva3VhcHAuY29tL2FwaS9kb2N1bWVudGF0aW9uKTogTGFuZHMgb24gdGhlIGVtYmVkZWQvaW50ZXJhdGljZSBBUEkgZG9jdW1lbnRhaW9uLgoKIyMgTGljZW5zZQoKVGhlIGNvZGUgaXMgb3Blbi1zb3VyY2VkLCBsaWNlbnNlZCB1bmRlciB0aGUgW01JVCBsaWNlbnNlXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuCgogPGgyIGFsaWduPSJjZW50ZXIiPk1hZGUgcG9zc2libGUgYnkgPGI+UEhQPC9iPjxhIGhyZWY9Imh0dHBzOi8vbGFyYXZlbC5jb20iIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2xhcmF2ZWwvYXJ0L21hc3Rlci9sb2dvLWxvY2t1cC81JTIwU1ZHLzIlMjBDTVlLLzElMjBGdWxsJTIwQ29sb3IvbGFyYXZlbC1sb2dvbG9ja3VwLWNteWstcmVkLnN2ZyIgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1MCI+PC9hPldpdGgg4p2k77iPPC9oMj4KCiBIYXBweSBDb2RpbmchIQ== readmeEtag: '"a162ffa3b31d7e6c1e2445f4e18ea82eedf76bb3"' readmeLastModified: Tue, 01 Mar 2022 21:18:17 GMT repositoryId: 463852136 description: A new day, another opportunity to be a step closer to "Paradise"! created: '2022-02-26T12:53:12Z' updated: '2024-03-31T19:52:44Z' language: PHP archived: false stars: 1 watchers: 1 forks: 0 owner: goldenglorys logo: https://avatars.githubusercontent.com/u/32324941?v=4 repoEtag: '"985e8a8cebd05f1e0f97f4c0f5d5396b3cb458e6c7af27740dcb724dfa4c734e"' repoLastModified: Sun, 31 Mar 2024 19:52:44 GMT foundInMaster: true category: - Testing - Server Implementations id: 63e8352e8255e8dae0c55b639d4a1fff oldLocations: - https://github.com/cloneofglory/eden-api - source: openapi3 tags repository: https://github.com/kaliszando/bs-api-specification v3: true id: b05e8787eea4278f92d72a0301793ae4 repositoryMetadata: base64Readme: >- PCEtLSBQUk9KRUNUIExPR08gLS0+CjxkaXYgYWxpZ249ImNlbnRlciI+CjxoMz48aW1nIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL0thbGlzemFuZG8vYnMtd2ViLWNsaWVudC9ibG9iL21haW4vc3JjL2Fzc2V0cy9pbWcvZmF2aWNvbi0xNngxNi5wbmciIGFsdD0iTG9nbyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij4gQnVnU3RhbGtlciBBUEk8L2gzPgo8L2Rpdj4KCkJ1Z1N0YWxrZXIgcHJvamVjdHM6CiogW2JzLWJ1c2luZXNzXShodHRwczovL2dpdGh1Yi5jb20vS2FsaXN6YW5kby9icy1idXNpbmVzcykgYmFja2VuZAoqIFticy13ZWItY2xpZW50XShodHRwczovL2dpdGh1Yi5jb20vS2FsaXN6YW5kby9icy13ZWItY2xpZW50KSBmcm9udGVuZAoqIFticy1hcGktc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL0thbGlzemFuZG8vYnMtYXBpLXNwZWNpZmljYXRpb24pIEFQSSBzcGVjaWZpY2F0aW9uIGFuZCBnZW5lcmF0aW9uIHRvb2wKCjwhLS0gQUJPVVQgVEhFIFBST0pFQ1QgLS0+CiMjIEFib3V0IFRoZSBQcm9qZWN0CgpUaGUgQVBJIHNwZWNpZmljYXRpb24gcHJvamVjdCBzZXJ2ZXMgYXMgdGhlIGJhY2tib25lIGZvciBib3RoIGZyb250ZW5kIGFuZCBiYWNrZW5kIGRldmVsb3BtZW50IGluIHRoZSBCdWdTdGFsa2VyIGFwcGxpY2F0aW9uLgpJdCBkZWZpbmVzIHRoZSBBUEkgZW5kcG9pbnRzIGFuZCBkYXRhIG1vZGVscywgcmVxdWlyZWQgZm9yIHNlYW1sZXNzIGNvbW11bmljYXRpb24gYmV0d2VlbiAKdGhlIGZyb250ZW5kIGFuZCBiYWNrZW5kIGFwcGxpY2F0aW9ucy4KCkluIGVzc2VuY2UsIHRoZSBBUEkgU3BlY2lmaWNhdGlvbiBwcm9qZWN0IG5vdCBvbmx5IGRvY3VtZW50cyB0aGUgZW5kcG9pbnRzIGJ1dCBhbHNvIHByb3ZpZGVzIGEgbWVjaGFuaXNtIAp0byBnZW5lcmF0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNwZWNpZmllZCBlbmRwb2ludHMsCmVuaGFuY2luZyBwcm9kdWN0aXZpdHkgYW5kIG1haW50YWluYWJpbGl0eSBvZiB0aGUgQnVnU3RhbGtlciBhcHBsaWNhdGlvbi4KCiMjIyBCdWlsdCBXaXRoCgotIFN3YWdnZXIgKyBPcGVuQVBJIDMKLSBbbmctb3BlbmFwaS1nZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9jeWNsb3Nwcm9qZWN0L25nLW9wZW5hcGktZ2VuKQoKPCEtLSBHRVRUSU5HIFNUQVJURUQgLS0+CiMjIEdldHRpbmcgU3RhcnRlZAoKSW4gb3JkZXIgdG8gZ2VuZXJhdGUgd2ViIHNlcnZpY2VzIGFuZCBtb2RlbHMgeW91IG5lZWQgdG8gaW5zdGFsbCBbbmctb3BlbmFwaS1nZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9jeWNsb3Nwcm9qZWN0L25nLW9wZW5hcGktZ2VuKS4KCiMjIyBQcmVyZXF1aXNpdGVzCgotIEphdmEgMTcKLSBNYXZlbgotIE5vZGUuanMKLSBucG0KLSBbbmctb3BlbmFwaS1nZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9jeWNsb3Nwcm9qZWN0L25nLW9wZW5hcGktZ2VuKQotIHB5dGhvbioKCiMjIyBNYXZlbiBwcm9maWxlcwoKLSBgYXBpLXRlbXBsYXRlLWJ1bmRsZXJgIHJ1bnMgYGFwaS1idW5kbGVyLnB5YCBiZWZvcmUgaW5zdGFsbCBwaGFzZS4gCkJ1bmRsZXIgbWVyZ2VzIGFsbCB5YW1sIG1vZGVscyBmcm9tIGBzcmMvbWFpbi9zY2hlbWFzYCBhbmQgZW5kcG9pbnRzIGZyb20gYHNyYy9tYWluL3NjaGVtYXNgCmludG8gc2luZ2xlIGBvcGVuYXBpLnlhbWxgIGZpbGUuCi0gYGJhY2tlbmQtY29kZS1nZW5gIGVuYWJsZXMgSmF2YSBqYXIgZmlsZSBnZW5lcmF0aW9uLgotIGB3ZWItY29kZS1nZW5gIHJ1bnMgYWZ0ZXIgaW5zdGFsbCBwaGFzZS4gCkl0IGdlbmVyYXRlcyBmcm9udGVuZCBtb2RlbHMgYW5kIGVuZHBvaW50IGltcGxlbWVudGF0aW9ucy4KCgojIyMgSW5zdGFsbGF0aW9uCgoxLiBDbG9uZSB0aGUgcmVwbwogICBgYGBzaAogICBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL0thbGlzemFuZG8vYnMtYXBpLXNwZWNpZmljYXRpb24uZ2l0CiAgIGBgYAoyLiBTZXQgb3V0cHV0IGRpcmVjdG9yeSBmb3IgZnJvbnRlZCBwcm9qZWN0IGluIGBwYWNrYWdlLmpzb25gCiAgIGBgYHNoCiAgICJnZW4td2ViIjogIm5nLW9wZW5hcGktZ2VuIC0tb3V0cHV0IC4uL2JzLXdlYi1jbGllbnQvc3JjL2FwcC9hcGkiCiAgIGBgYAozLiBCdWlsZCBBUEkgcHJvamVjdC4gCiAgIGBgYHNoCiAgIG12biBjbGVhbiBpbnN0YWxsCiAgIGBgYAoKCjwhLS0gQ09OVEFDVCAtLT4KIyMgQ29udGFjdAoKQWRhbSBLYWxpc3oga2FsaXN6YWRhbTk5K2RldkBnbWFpbC5jb20KCkxpbmtlZEluIFtAYWRhbS1rYWxpc3pdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9hZGFtLWthbGlzei8pCgpPdGhlciBsaW5rcyBbbGlua3RyLmVlL2thbGlzemFuZG9dKGh0dHBzOi8vbGlua3RyLmVlL2thbGlzemFuZG8pCgo8cCBhbGlnbj0icmlnaHQiPig8YSBocmVmPSIjLWJ1Z3N0YWxrZXItYXBpIj5iYWNrIHRvIHRvcDwvYT4pPC9wPgo= readmeEtag: '"bc9b6ef8e650e93884cc5149a86b8ee5a2901ab2"' readmeLastModified: Fri, 01 Nov 2024 17:21:36 GMT repositoryId: 492590343 description: >- [BugStalker] OpenAPI 3 specification and generation tool for bs-business and bs-web-client projects created: '2022-05-15T19:59:13Z' updated: '2026-01-24T20:07:06Z' language: YAML archived: false stars: 1 watchers: 1 forks: 0 owner: Kaliszando logo: https://avatars.githubusercontent.com/u/45283134?v=4 repoEtag: '"af260f6637cc034c2c74dd2385dddf52345f8ff464291b3cab48e02bb6961d9a"' repoLastModified: Sat, 24 Jan 2026 20:07:06 GMT foundInMaster: true category: Server Implementations - source: openapi3 tags repository: https://github.com/bbakla/openapi3-with-go v3: true id: dfea0397e3610cd874405cefdbe21ca0 repositoryMetadata: base64Readme: >- VGhpcyBpcyB0aGUgcmVwbyB0aGF0IEkgY3JlYXRlZCBmb3IgdGhpcyBbYXJ0aWNsZV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BiYmFrbGEvb3Blbi1hcGktd2l0aC1nby1kNzVlYjNhZmFjMTkpLiBJdCBkZW1vbnN0cmF0ZXMgaG93IHRvIGdlbmVyYXRlIGJvaWxlcnBsYXRlIGNvZGUgaW4gR28gdXNpbmcgb3Blbi1hcGkgMy4K readmeEtag: '"897118d45c90ff19c0b2a490939ef521b425e58a"' readmeLastModified: Thu, 04 Jul 2024 20:19:26 GMT repositoryId: 809398146 description: open-api code generation in go created: '2024-06-02T15:23:03Z' updated: '2025-01-13T04:39:52Z' language: Go archived: false stars: 1 watchers: 1 forks: 1 owner: bbakla logo: https://avatars.githubusercontent.com/u/7812609?v=4 repoEtag: '"dea15ac03033ae45ff2a4858f7928d2128de8805f66c5c43d79aab8edad81c6d"' repoLastModified: Mon, 13 Jan 2025 04:39:52 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/flexbase-eng/openapi-generator v3: true id: b508ca585e247699e3128b803debe3a2 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWdlbmVyYXRvcgoKWyFbQ292ZXJhZ2VdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWZsZXhiYXNlLWVuZ19vcGVuYXBpLWdlbmVyYXRvciZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1mbGV4YmFzZS1lbmdfb3BlbmFwaS1nZW5lcmF0b3IpClshW1F1YWxpdHkgR2F0ZSBTdGF0dXNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWZsZXhiYXNlLWVuZ19vcGVuYXBpLWdlbmVyYXRvciZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9ZmxleGJhc2UtZW5nX29wZW5hcGktZ2VuZXJhdG9yKQoKW09wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pIGNvZGUgZ2VuZXJhdG9yLgoKIyMgR2V0dGluZyBzdGFydGVkCgpgYGAKeWFybiBhZGQgQGZsZXhiYXNlL29wZW5hcGktZ2VuZXJhdG9yIC0tZGV2CmBgYAoKb3IKCmBgYApucG0gaSBAZmxleGJhc2Uvb3BlbmFwaS1nZW5lcmF0b3IgLUQKYGBgCgojIyBVc2FnZQoKYGBgCm9wZW5hcGktZ2VuZXJhdG9yIC1pIDxvcGVuYXBpc3BlYz4ueWFtbCAtbyAuIC10IDx0ZW1wbGF0ZT4uaGJzCmBgYAoKfCBPcHRpb24gICAgICAgICAgICAgICAgICAgfCBBcmd1bWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgYC0taW5jbHVkZWAgICAgICAgICAgICAgIHwgW2dsb2JdKDxodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9iXyhwcm9ncmFtbWluZyk+KSB8IFNwZWNpZmllcyB0aGUgZ2xvYiBwYXR0ZXJuIGZvciBmaWxlcyB0byBwYXJzZSAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgLS1zaGFyZWRUZW1wbGF0ZXNgICAgICAgfCBbZ2xvYl0oPGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb2JfKHByb2dyYW1taW5nKT4pIHwgU3BlY2lmaWVzIHRoZSBnbG9iIHBhdHRlcm4gZm9yIHNoYXJlZCB0ZW1wbGF0ZXMgICAgICAgICAgICAgICAgICAgICAgfAp8IGAtLWNvbmZpZ2AgICAgICAgICAgICAgICB8IGZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB0byB1c2UuIERlZmF1bHRzIHRvIGAub3BlbmFwaWdlbmVyYXRvci5qc29uYCB8CnwgYC0tbm8tcHJldHRpZXJgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERpc2FibGUgcHJldHRpZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgLS1uby1za2lwZW1wdHlgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR2VuZXJhdGUgZW1wdHkgZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGAtLW5vLXRhZ3NgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEaXNhYmxlIG9yZ2FuaXphdGlvbiBieSB0YWdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYC1kYCBvciBgLS1kZWJ1ZyBbcGF0aF1gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE91dHB1dCB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCiMjIENvbmZpZ3VyYXRpb24KCkV4YW1wbGUgY29uZmlndXJhdGlvbgoKYGBganNvbgp7CiAgImluY2x1ZGUiOiBbIi4vdGVzdHMvZGF0YS8qLnlhbWwiXSwKICAic2hhcmVkVGVtcGxhdGVzIjogWyIuL3RlbXBsYXRlcy9zZXJ2ZXIvKi5oYnMiXSwKICAiZ2VuZXJhdGUiOiB7CiAgICAicm91dGVyLnRzIjogewogICAgICAidGFyZ2V0IjogIi4vb3V0cHV0L3thcGl9L3JvdXRlci50cyIsCiAgICAgICJ0ZW1wbGF0ZSI6ICIuL3RlbXBsYXRlcy9zZXJ2ZXIvcm91dGVyLmhicyIKICAgIH0sCiAgICAiaW5kZXgiOiB7CiAgICAgICJ0YXJnZXQiOiAiLi9vdXRwdXQve2FwaX0ve25hbWV9L2dlbmVyYXRlZC97bmFtZX0udHMiLAogICAgICAidGVtcGxhdGUiOiAiLi90ZW1wbGF0ZXMvc2VydmVyL2luZGV4LmhicyIKICAgIH0sCiAgICAicm91dGVzIjogewogICAgICAidGFyZ2V0IjogIi4vb3V0cHV0L3thcGl9L3tuYW1lfS9nZW5lcmF0ZWQve25hbWV9LnJvdXRlcy50cyIsCiAgICAgICJ0ZW1wbGF0ZSI6ICIuL3RlbXBsYXRlcy9zZXJ2ZXIvcm91dGVzLmhicyIKICAgIH0sCiAgICAibW9kZWxzIjogewogICAgICAidGFyZ2V0IjogIi4vb3V0cHV0L3thcGl9L3tuYW1lfS9nZW5lcmF0ZWQve25hbWV9Lm1vZGVscy50cyIsCiAgICAgICJ0ZW1wbGF0ZSI6ICIuL3RlbXBsYXRlcy9zZXJ2ZXIvbW9kZWxzLmhicyIKICAgIH0sCiAgICAidmFsaWRhdGlvbnMiOiB7CiAgICAgICJ0YXJnZXQiOiAiLi9vdXRwdXQve2FwaX0ve25hbWV9L2dlbmVyYXRlZC97bmFtZX0udmFsaWRhdGlvbnMudHMiLAogICAgICAidGVtcGxhdGUiOiAiLi90ZW1wbGF0ZXMvc2VydmVyL3ZhbGlkYXRpb25zLmhicyIKICAgIH0KICB9LAogICJwcmV0dGllciI6IHRydWUsCiAgInRhZ3MiOiB0cnVlLAogICJkZWJ1Z1BhdGgiOiAiLi9vdXRwdXQvZGVidWcve2FwaX0vIgp9CmBgYAoKIyMgVGVtcGxhdGVzCgpCZWxvdyBhcmUgc29tZSBleGFtcGxlIFtoYW5kbGViYXJzXShodHRwczovL2hhbmRsZWJhcnNqcy5jb20vKSB0ZW1wbGF0ZXMgdG8gZ2VuZXJhdGUgYSB0eXBlc2NyaXB0IG91dHB1dCBmaWxlCgojIyMgYG1vZGVscy5oYnNgIHRlbXBsYXRlCgpodHRwczovL2dpdGh1Yi5jb20vZmxleGJhc2UtZW5nL29wZW5hcGktZ2VuZXJhdG9yL2Jsb2IvbWFpbi90ZW1wbGF0ZXMvc2VydmVyL21vZGVscy5oYnMKCiMjIyBgbW9kZWwuZGVjbGFyYXRpb24uaGJzYCBwYXJ0aWFsIHRlbXBsYXRlCgpodHRwczovL2dpdGh1Yi5jb20vZmxleGJhc2UtZW5nL29wZW5hcGktZ2VuZXJhdG9yL2Jsb2IvbWFpbi90ZW1wbGF0ZXMvc2VydmVyL21vZGVsLmRlY2xhcmF0aW9uLmhicwoKIyMjIGBtb2RlbC5leHByZXNzaW9uLmhic2AgcGFydGlhbCB0ZW1wbGF0ZQoKaHR0cHM6Ly9naXRodWIuY29tL2ZsZXhiYXNlLWVuZy9vcGVuYXBpLWdlbmVyYXRvci9ibG9iL21haW4vdGVtcGxhdGVzL3NlcnZlci9tb2RlbC5leHByZXNzaW9uLmhicwoKIyMgRXhhbXBsZQoKR2VuZXJhdGluZyB0aGUgcGV0c3RvcmUgb3BlbmFwaSBzcGVjIGJ5IHJ1bm5pbmcgdGhlIGZvbGxvd2luZzoKCmBgYApvcGVuYXBpLWdlbmVyYXRvcgpgYGAKCm9yCgpgYGAKeWFybiBzdGFydApgYGAKCndpbGwgZ2VuZXJhdGUgY29kZSB1bmRlciBgLi9vdXRwdXQvc3dhZ2dlci1wZXRzdG9yZS1vcGVuYXBpLTMtMC9gCgojIyMgT3V0cHV0IGB7b3V0cHV0fS9wZXQvZ2VuZXJhdGVkL3BldC5yb3V0ZXMudHNgCgpgYGB0cwovKiBlc2xpbnQtZGlzYWJsZSAqLwovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIEZpbGUgYXV0by1nZW5lcmF0ZWQKCiBAc3VtbWFyeSBwZXQKIEBkZXNjcmlwdGlvbiBFdmVyeXRoaW5nIGFib3V0IHlvdXIgUGV0cwogQHZlcnNpb24gMS4wLjE3Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKaW1wb3J0ICogYXMgbWlkZGxld2FyZSBmcm9tICdAbWlkZGxld2FyZS9pbmRleC5qcyc7CmltcG9ydCAqIGFzIHV0aWxpdGllcyBmcm9tICdAc2hhcmVkL3V0aWxpdGllcy9vcGVuYXBpLnV0aWxpdGllcy5qcyc7CmltcG9ydCAqIGFzIG1vZGVscyBmcm9tICcuL3BldC5tb2RlbHMuanMnOwppbXBvcnQgKiBhcyB2YWxpZGF0b3JzIGZyb20gJy4vcGV0LnZhbGlkYXRpb25zLmpzJzsKaW1wb3J0ICogYXMgaGFuZGxlcnMgZnJvbSAnQG1vZHVsZXMvc3dhZ2dlci1wZXRzdG9yZS1vcGVuYXBpLTMtMC9yb3V0ZXMvcGV0L3BldC5oYW5kbGVycy5qcyc7CmltcG9ydCB7IFN3YWdnZXJfUGV0c3RvcmVfT3BlbkFQSV8zXzBSb3V0ZXIgfSBmcm9tICdAbW9kdWxlcy9zd2FnZ2VyLXBldHN0b3JlLW9wZW5hcGktMy0wL3JvdXRlcy9yb3V0ZXIuanMnOwoKLyoqCiAqIEBzdW1tYXJ5IFVwZGF0ZSBhbiBleGlzdGluZyBwZXQKICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBhbiBleGlzdGluZyBwZXQgYnkgSWQKICogQHJlbWFya3MgcmVxdWlyZWQgc2NvcGVzOiBbXQogKi8KU3dhZ2dlcl9QZXRzdG9yZV9PcGVuQVBJXzNfMFJvdXRlci5wdXQ8b2JqZWN0LCBvYmplY3QsIG1vZGVscy5QZXRNb2RlbCB8IG1vZGVscy5QZXRNb2RlbCB8IG1vZGVscy5QZXRNb2RlbD4oCiAgJy9wZXQnLAogIG1pZGRsZXdhcmUucm91dGVyQXV0aE1pZGRsZXdhcmUoW10pLAogIG1pZGRsZXdhcmUuYm9keVBhcnNlck1pZGRsZXdhcmUoWydhcHBsaWNhdGlvbi9qc29uJywgJ2FwcGxpY2F0aW9uL3htbCcsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXSksCiAgYXN5bmMgKGN0eCwgbmV4dCkgPT4gewogICAgbGV0IGJvZHk7CiAgICBpZiAoY3R4LnJlcXVlc3QudHlwZSA9PT0gJ2FwcGxpY2F0aW9uL2pzb24nKSB7CiAgICAgIGJvZHkgPSB1dGlsaXRpZXMuaGFuZGxlVmFsaWRhdGlvbjxtb2RlbHMuUGV0TW9kZWw+KGN0eC5ib2R5LCB2YWxpZGF0b3JzLlBldE1vZGVsVmFsaWRhdG9yLCB1dGlsaXRpZXMuaGFuZGxlUmVxdWVzdFZhbGlkYXRvckVycm9ycyk7CiAgICB9IGVsc2UgaWYgKGN0eC5yZXF1ZXN0LnR5cGUgPT09ICdhcHBsaWNhdGlvbi94bWwnKSB7CiAgICAgIGJvZHkgPSB1dGlsaXRpZXMuaGFuZGxlVmFsaWRhdGlvbjxtb2RlbHMuUGV0TW9kZWw+KGN0eC5ib2R5LCB2YWxpZGF0b3JzLlBldE1vZGVsVmFsaWRhdG9yLCB1dGlsaXRpZXMuaGFuZGxlUmVxdWVzdFZhbGlkYXRvckVycm9ycyk7CiAgICB9IGVsc2UgewogICAgICBib2R5ID0gdXRpbGl0aWVzLmhhbmRsZVZhbGlkYXRpb248bW9kZWxzLlBldE1vZGVsPihjdHguYm9keSwgdmFsaWRhdG9ycy5QZXRNb2RlbFZhbGlkYXRvciwgdXRpbGl0aWVzLmhhbmRsZVJlcXVlc3RWYWxpZGF0b3JFcnJvcnMpOwogICAgfQogICAgY29uc3QgcmVzcG9uc2U6IG1vZGVscy51cGRhdGVQZXRSZXNwb25zZSA9IGF3YWl0IGhhbmRsZXJzLnVwZGF0ZVBldChjdHgsIGJvZHkpOwoKICAgIHV0aWxpdGllcy5zZXJpYWxpemVSZXNwb25zZShjdHgsIHJlc3BvbnNlLCBbJ2FwcGxpY2F0aW9uL3htbCcsICdhcHBsaWNhdGlvbi9qc29uJ10pOwoKICAgIGF3YWl0IG5leHQoKTsKICB9LAopOwoKLyoqCiAqIEBzdW1tYXJ5IEFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlCiAqIEBkZXNjcmlwdGlvbiBBZGQgYSBuZXcgcGV0IHRvIHRoZSBzdG9yZQogKiBAcmVtYXJrcyByZXF1aXJlZCBzY29wZXM6IFtdCiAqLwpTd2FnZ2VyX1BldHN0b3JlX09wZW5BUElfM18wUm91dGVyLnBvc3Q8b2JqZWN0LCBvYmplY3QsIG1vZGVscy5QZXRNb2RlbCB8IG1vZGVscy5QZXRNb2RlbCB8IG1vZGVscy5QZXRNb2RlbD4oCiAgJy9wZXQnLAogIG1pZGRsZXdhcmUucm91dGVyQXV0aE1pZGRsZXdhcmUoW10pLAogIG1pZGRsZXdhcmUuYm9keVBhcnNlck1pZGRsZXdhcmUoWydhcHBsaWNhdGlvbi9qc29uJywgJ2FwcGxpY2F0aW9uL3htbCcsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXSksCiAgYXN5bmMgKGN0eCwgbmV4dCkgPT4gewogICAgbGV0IGJvZHk7CiAgICBpZiAoY3R4LnJlcXVlc3QudHlwZSA9PT0gJ2FwcGxpY2F0aW9uL2pzb24nKSB7CiAgICAgIGJvZHkgPSB1dGlsaXRpZXMuaGFuZGxlVmFsaWRhdGlvbjxtb2RlbHMuUGV0TW9kZWw+KGN0eC5ib2R5LCB2YWxpZGF0b3JzLlBldE1vZGVsVmFsaWRhdG9yLCB1dGlsaXRpZXMuaGFuZGxlUmVxdWVzdFZhbGlkYXRvckVycm9ycyk7CiAgICB9IGVsc2UgaWYgKGN0eC5yZXF1ZXN0LnR5cGUgPT09ICdhcHBsaWNhdGlvbi94bWwnKSB7CiAgICAgIGJvZHkgPSB1dGlsaXRpZXMuaGFuZGxlVmFsaWRhdGlvbjxtb2RlbHMuUGV0TW9kZWw+KGN0eC5ib2R5LCB2YWxpZGF0b3JzLlBldE1vZGVsVmFsaWRhdG9yLCB1dGlsaXRpZXMuaGFuZGxlUmVxdWVzdFZhbGlkYXRvckVycm9ycyk7CiAgICB9IGVsc2UgewogICAgICBib2R5ID0gdXRpbGl0aWVzLmhhbmRsZVZhbGlkYXRpb248bW9kZWxzLlBldE1vZGVsPihjdHguYm9keSwgdmFsaWRhdG9ycy5QZXRNb2RlbFZhbGlkYXRvciwgdXRpbGl0aWVzLmhhbmRsZVJlcXVlc3RWYWxpZGF0b3JFcnJvcnMpOwogICAgfQogICAgY29uc3QgcmVzcG9uc2U6IG1vZGVscy5hZGRQZXRSZXNwb25zZSA9IGF3YWl0IGhhbmRsZXJzLmFkZFBldChjdHgsIGJvZHkpOwoKICAgIHV0aWxpdGllcy5zZXJpYWxpemVSZXNwb25zZShjdHgsIHJlc3BvbnNlLCBbJ2FwcGxpY2F0aW9uL3htbCcsICdhcHBsaWNhdGlvbi9qc29uJ10pOwoKICAgIGF3YWl0IG5leHQoKTsKICB9LAopOwoKLyoqCiAqIEBzdW1tYXJ5IEZpbmQgcGV0IGJ5IElECiAqIEBkZXNjcmlwdGlvbiBSZXR1cm5zIGEgc2luZ2xlIHBldAogKiBAcmVtYXJrcyByZXF1aXJlZCBzY29wZXM6IFtdCiAqLwpTd2FnZ2VyX1BldHN0b3JlX09wZW5BUElfM18wUm91dGVyLmdldDxvYmplY3QsIG9iamVjdD4oCiAgJy9wZXQvOnBldElkJywKICBtaWRkbGV3YXJlLnJvdXRlckF1dGhNaWRkbGV3YXJlKFtdKSwKICBtaWRkbGV3YXJlLmJvZHlQYXJzZXJNaWRkbGV3YXJlKFtdKSwKICBhc3luYyAoY3R4LCBuZXh0KSA9PiB7CiAgICBjb25zdCBwYXJhbXMgPSB1dGlsaXRpZXMuaGFuZGxlVmFsaWRhdGlvbjxtb2RlbHMuZ2V0UGV0QnlJZFBhdGhQYXJhbWV0ZXI+KAogICAgICBjdHgucGFyYW1zLAogICAgICB2YWxpZGF0b3JzLmdldFBldEJ5SWRQYXRoUGFyYW1ldGVyVmFsaWRhdG9yLAogICAgICB1dGlsaXRpZXMuaGFuZGxlUmVxdWVzdFZhbGlkYXRvckVycm9ycywKICAgICk7CgogICAgY29uc3QgcmVzcG9uc2U6IG1vZGVscy5nZXRQZXRCeUlkUmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVycy5nZXRQZXRCeUlkKGN0eCwgcGFyYW1zKTsKCiAgICB1dGlsaXRpZXMuc2VyaWFsaXplUmVzcG9uc2UoY3R4LCByZXNwb25zZSwgWydhcHBsaWNhdGlvbi94bWwnLCAnYXBwbGljYXRpb24vanNvbiddKTsKCiAgICBhd2FpdCBuZXh0KCk7CiAgfSwKKTsKCi8qKgogKiBAc3VtbWFyeSBVcGRhdGVzIGEgcGV0IGluIHRoZSBzdG9yZSB3aXRoIGZvcm0gZGF0YQogKiBAcmVtYXJrcyByZXF1aXJlZCBzY29wZXM6IFtdCiAqLwpTd2FnZ2VyX1BldHN0b3JlX09wZW5BUElfM18wUm91dGVyLnBvc3Q8b2JqZWN0LCBvYmplY3Q+KAogICcvcGV0LzpwZXRJZCcsCiAgbWlkZGxld2FyZS5yb3V0ZXJBdXRoTWlkZGxld2FyZShbXSksCiAgbWlkZGxld2FyZS5ib2R5UGFyc2VyTWlkZGxld2FyZShbXSksCiAgYXN5bmMgKGN0eCwgbmV4dCkgPT4gewogICAgY29uc3QgcGFyYW1zID0gdXRpbGl0aWVzLmhhbmRsZVZhbGlkYXRpb248bW9kZWxzLnVwZGF0ZVBldFdpdGhGb3JtUGF0aFBhcmFtZXRlcj4oCiAgICAgIGN0eC5wYXJhbXMsCiAgICAgIHZhbGlkYXRvcnMudXBkYXRlUGV0V2l0aEZvcm1QYXRoUGFyYW1ldGVyVmFsaWRhdG9yLAogICAgICB1dGlsaXRpZXMuaGFuZGxlUmVxdWVzdFZhbGlkYXRvckVycm9ycywKICAgICk7CgogICAgY29uc3QgcXVlcnkgPSB1dGlsaXRpZXMuaGFuZGxlVmFsaWRhdGlvbjxtb2RlbHMudXBkYXRlUGV0V2l0aEZvcm1RdWVyeVBhcmFtZXRlcj4oCiAgICAgIGN0eC5yZXF1ZXN0LnF1ZXJ5LAogICAgICB2YWxpZGF0b3JzLnVwZGF0ZVBldFdpdGhGb3JtUXVlcnlQYXJhbWV0ZXJWYWxpZGF0b3IsCiAgICAgIHV0aWxpdGllcy5oYW5kbGVSZXF1ZXN0VmFsaWRhdG9yRXJyb3JzLAogICAgKTsKCiAgICBjb25zdCByZXNwb25zZTogbW9kZWxzLnVwZGF0ZVBldFdpdGhGb3JtUmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVycy51cGRhdGVQZXRXaXRoRm9ybShjdHgsIHBhcmFtcywgcXVlcnkpOwoKICAgIHV0aWxpdGllcy5zZXJpYWxpemVSZXNwb25zZShjdHgsIHJlc3BvbnNlLCBbXSk7CgogICAgYXdhaXQgbmV4dCgpOwogIH0sCik7CgovKioKICogQHN1bW1hcnkgRGVsZXRlcyBhIHBldAogKiBAcmVtYXJrcyByZXF1aXJlZCBzY29wZXM6IFtdCiAqLwpTd2FnZ2VyX1BldHN0b3JlX09wZW5BUElfM18wUm91dGVyLmRlbGV0ZTxvYmplY3QsIG9iamVjdD4oCiAgJy9wZXQvOnBldElkJywKICBtaWRkbGV3YXJlLnJvdXRlckF1dGhNaWRkbGV3YXJlKFtdKSwKICBtaWRkbGV3YXJlLmJvZHlQYXJzZXJNaWRkbGV3YXJlKFtdKSwKICBhc3luYyAoY3R4LCBuZXh0KSA9PiB7CiAgICBjb25zdCBwYXJhbXMgPSB1dGlsaXRpZXMuaGFuZGxlVmFsaWRhdGlvbjxtb2RlbHMuZGVsZXRlUGV0UGF0aFBhcmFtZXRlcj4oCiAgICAgIGN0eC5wYXJhbXMsCiAgICAgIHZhbGlkYXRvcnMuZGVsZXRlUGV0UGF0aFBhcmFtZXRlclZhbGlkYXRvciwKICAgICAgdXRpbGl0aWVzLmhhbmRsZVJlcXVlc3RWYWxpZGF0b3JFcnJvcnMsCiAgICApOwoKICAgIGNvbnN0IGhlYWRlcnMgPSB1dGlsaXRpZXMuaGFuZGxlVmFsaWRhdGlvbjxtb2RlbHMuZGVsZXRlUGV0SGVhZGVyUGFyYW1ldGVyPigKICAgICAgY3R4LnJlcXVlc3QuaGVhZGVycywKICAgICAgdmFsaWRhdG9ycy5kZWxldGVQZXRIZWFkZXJQYXJhbWV0ZXJWYWxpZGF0b3IsCiAgICAgIHV0aWxpdGllcy5oYW5kbGVSZXF1ZXN0VmFsaWRhdG9yRXJyb3JzLAogICAgKTsKICAgIGNvbnN0IHJlc3BvbnNlOiBtb2RlbHMuZGVsZXRlUGV0UmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVycy5kZWxldGVQZXQoY3R4LCBwYXJhbXMsIGhlYWRlcnMpOwoKICAgIHV0aWxpdGllcy5zZXJpYWxpemVSZXNwb25zZShjdHgsIHJlc3BvbnNlLCBbXSk7CgogICAgYXdhaXQgbmV4dCgpOwogIH0sCik7CgovKioKICogQHN1bW1hcnkgdXBsb2FkcyBhbiBpbWFnZQogKiBAcmVtYXJrcyByZXF1aXJlZCBzY29wZXM6IFtdCiAqLwpTd2FnZ2VyX1BldHN0b3JlX09wZW5BUElfM18wUm91dGVyLnBvc3Q8b2JqZWN0LCBvYmplY3QsIG1vZGVscy51cGxvYWRGaWxlUmVxdWVzdE9iamVjdD4oCiAgJy9wZXQvOnBldElkL3VwbG9hZEltYWdlJywKICBtaWRkbGV3YXJlLnJvdXRlckF1dGhNaWRkbGV3YXJlKFtdKSwKICBtaWRkbGV3YXJlLmJvZHlQYXJzZXJNaWRkbGV3YXJlKFsnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ10pLAogIGFzeW5jIChjdHgsIG5leHQpID0+IHsKICAgIGNvbnN0IGJvZHkgPSB1dGlsaXRpZXMuaGFuZGxlVmFsaWRhdGlvbjxtb2RlbHMudXBsb2FkRmlsZVJlcXVlc3RPYmplY3Q+KAogICAgICBjdHguYm9keSwKICAgICAgdmFsaWRhdG9ycy51cGxvYWRGaWxlUmVxdWVzdE9iamVjdFZhbGlkYXRvciwKICAgICAgdXRpbGl0aWVzLmhhbmRsZVJlcXVlc3RWYWxpZGF0b3JFcnJvcnMsCiAgICApOwoKICAgIGNvbnN0IHBhcmFtcyA9IHV0aWxpdGllcy5oYW5kbGVWYWxpZGF0aW9uPG1vZGVscy51cGxvYWRGaWxlUGF0aFBhcmFtZXRlcj4oCiAgICAgIGN0eC5wYXJhbXMsCiAgICAgIHZhbGlkYXRvcnMudXBsb2FkRmlsZVBhdGhQYXJhbWV0ZXJWYWxpZGF0b3IsCiAgICAgIHV0aWxpdGllcy5oYW5kbGVSZXF1ZXN0VmFsaWRhdG9yRXJyb3JzLAogICAgKTsKCiAgICBjb25zdCBxdWVyeSA9IHV0aWxpdGllcy5oYW5kbGVWYWxpZGF0aW9uPG1vZGVscy51cGxvYWRGaWxlUXVlcnlQYXJhbWV0ZXI+KAogICAgICBjdHgucmVxdWVzdC5xdWVyeSwKICAgICAgdmFsaWRhdG9ycy51cGxvYWRGaWxlUXVlcnlQYXJhbWV0ZXJWYWxpZGF0b3IsCiAgICAgIHV0aWxpdGllcy5oYW5kbGVSZXF1ZXN0VmFsaWRhdG9yRXJyb3JzLAogICAgKTsKCiAgICBjb25zdCByZXNwb25zZTogbW9kZWxzLnVwbG9hZEZpbGVSZXNwb25zZSA9IGF3YWl0IGhhbmRsZXJzLnVwbG9hZEZpbGUoY3R4LCBib2R5LCBwYXJhbXMsIHF1ZXJ5KTsKCiAgICB1dGlsaXRpZXMuc2VyaWFsaXplUmVzcG9uc2UoY3R4LCByZXNwb25zZSwgWydhcHBsaWNhdGlvbi9qc29uJ10pOwoKICAgIGF3YWl0IG5leHQoKTsKICB9LAopOwoKLyoqCiAqIEBzdW1tYXJ5IEZpbmRzIFBldHMgYnkgc3RhdHVzCiAqIEBkZXNjcmlwdGlvbiBNdWx0aXBsZSBzdGF0dXMgdmFsdWVzIGNhbiBiZSBwcm92aWRlZCB3aXRoIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmdzCiAqIEByZW1hcmtzIHJlcXVpcmVkIHNjb3BlczogW10KICovClN3YWdnZXJfUGV0c3RvcmVfT3BlbkFQSV8zXzBSb3V0ZXIuZ2V0PG9iamVjdCwgb2JqZWN0PigKICAnL3BldC9maW5kQnlTdGF0dXMnLAogIG1pZGRsZXdhcmUucm91dGVyQXV0aE1pZGRsZXdhcmUoW10pLAogIG1pZGRsZXdhcmUuYm9keVBhcnNlck1pZGRsZXdhcmUoW10pLAogIGFzeW5jIChjdHgsIG5leHQpID0+IHsKICAgIGNvbnN0IHF1ZXJ5ID0gdXRpbGl0aWVzLmhhbmRsZVZhbGlkYXRpb248bW9kZWxzLmZpbmRQZXRzQnlTdGF0dXNRdWVyeVBhcmFtZXRlcj4oCiAgICAgIGN0eC5yZXF1ZXN0LnF1ZXJ5LAogICAgICB2YWxpZGF0b3JzLmZpbmRQZXRzQnlTdGF0dXNRdWVyeVBhcmFtZXRlclZhbGlkYXRvciwKICAgICAgdXRpbGl0aWVzLmhhbmRsZVJlcXVlc3RWYWxpZGF0b3JFcnJvcnMsCiAgICApOwoKICAgIGNvbnN0IHJlc3BvbnNlOiBtb2RlbHMuZmluZFBldHNCeVN0YXR1c1Jlc3BvbnNlID0gYXdhaXQgaGFuZGxlcnMuZmluZFBldHNCeVN0YXR1cyhjdHgsIHF1ZXJ5KTsKCiAgICB1dGlsaXRpZXMuc2VyaWFsaXplUmVzcG9uc2UoY3R4LCByZXNwb25zZSwgWydhcHBsaWNhdGlvbi94bWwnLCAnYXBwbGljYXRpb24vanNvbiddKTsKCiAgICBhd2FpdCBuZXh0KCk7CiAgfSwKKTsKCi8qKgogKiBAc3VtbWFyeSBGaW5kcyBQZXRzIGJ5IHRhZ3MKICogQGRlc2NyaXB0aW9uIE11bHRpcGxlIHRhZ3MgY2FuIGJlIHByb3ZpZGVkIHdpdGggY29tbWEgc2VwYXJhdGVkIHN0cmluZ3MuIFVzZSB0YWcxLCB0YWcyLCB0YWczIGZvciB0ZXN0aW5nLgogKiBAcmVtYXJrcyByZXF1aXJlZCBzY29wZXM6IFtdCiAqLwpTd2FnZ2VyX1BldHN0b3JlX09wZW5BUElfM18wUm91dGVyLmdldDxvYmplY3QsIG9iamVjdD4oCiAgJy9wZXQvZmluZEJ5VGFncycsCiAgbWlkZGxld2FyZS5yb3V0ZXJBdXRoTWlkZGxld2FyZShbXSksCiAgbWlkZGxld2FyZS5ib2R5UGFyc2VyTWlkZGxld2FyZShbXSksCiAgYXN5bmMgKGN0eCwgbmV4dCkgPT4gewogICAgY29uc3QgcXVlcnkgPSB1dGlsaXRpZXMuaGFuZGxlVmFsaWRhdGlvbjxtb2RlbHMuZmluZFBldHNCeVRhZ3NRdWVyeVBhcmFtZXRlcj4oCiAgICAgIGN0eC5yZXF1ZXN0LnF1ZXJ5LAogICAgICB2YWxpZGF0b3JzLmZpbmRQZXRzQnlUYWdzUXVlcnlQYXJhbWV0ZXJWYWxpZGF0b3IsCiAgICAgIHV0aWxpdGllcy5oYW5kbGVSZXF1ZXN0VmFsaWRhdG9yRXJyb3JzLAogICAgKTsKCiAgICBjb25zdCByZXNwb25zZTogbW9kZWxzLmZpbmRQZXRzQnlUYWdzUmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVycy5maW5kUGV0c0J5VGFncyhjdHgsIHF1ZXJ5KTsKCiAgICB1dGlsaXRpZXMuc2VyaWFsaXplUmVzcG9uc2UoY3R4LCByZXNwb25zZSwgWydhcHBsaWNhdGlvbi94bWwnLCAnYXBwbGljYXRpb24vanNvbiddKTsKCiAgICBhd2FpdCBuZXh0KCk7CiAgfSwKKTsKYGBgCg== readmeEtag: '"e2d78fb1e6df34c6804e4a820354d0e5852d884e"' readmeLastModified: Fri, 19 Jul 2024 18:23:14 GMT repositoryId: 564335104 description: OpenAPI v3 code generator created: '2022-11-10T13:53:10Z' updated: '2025-09-04T17:09:27Z' language: TypeScript archived: false stars: 1 watchers: 9 forks: 0 owner: flexbase-eng logo: https://avatars.githubusercontent.com/u/68292078?v=4 license: MIT repoEtag: '"2a6f511bd11204d3d63c0bb978165278cb65d0755806143130feb60552803e53"' repoLastModified: Thu, 04 Sep 2025 17:09:27 GMT category: Parsers foundInMaster: true - source: - openapi3 tags - openapi31 tags repository: https://github.com/gcatanese/openapi-native-mock-server v3: true v3_1: true id: 1fe45e2e9d9a8f115bd2328a671d4c7a repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIE5hdGl2ZSBNb2NrIFNlcnZlcgoKTGlnaHR3ZWlnaHQgbW9jayBzZXJ2ZXIgY3JlYXRlZCBmcm9tIGFuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4gCgpXaHkgKipuYXRpdmUqKj8gQmVjYXVzZSB0aGUgcmVxdWVzdC1yZXNwb25zZSBpbnRlcmFjdGlvbnMgYXJlIGRlZmluZWQgd2l0aGluIHRoZSBPcGVuQVBJIGZpbGUsIHdpdGhvdXQKdGhlIG5lZWQgZm9yIGFuIGFkZGl0aW9uYWwgYXBwbGljYXRpb24gb3Igc3RvcmFnZSAoYW5kIHRoZXJlZm9yZSBjb21wbGV4aXR5KS4gTm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLgoKVGhlIHJlcXVlc3QtcmVzcG9uc2UgaW50ZXJhY3Rpb25zIChha2EgdGhlIGNvbnRyYWN0cykgYXJlIGRlZmluZWQgYnkgcGFyc2luZyB0aGUgT3BlbkFQSSBleGFtcGxlcywgc2VlIFttYXBwaW5nIHN0cmF0ZWdpZXNdKCNob3ctaXQtd29ya3MpLgpBIGZhbGxiYWNrIHJlc3BvbnNlIGlzIGdlbmVyYXRlZCB0byBlbnN1cmUgZXZlcnkgcmVxdWVzdCByZWNlaXZlcyBhbHdheXMgYSByZXNwb25zZS4KCkl0IGlzOgoqICoqbGlnaHR3ZWlnaHQqKjogaXQgcnVucyBpbiBhIHNpbmdsZSAoc21hbGwpIGNvbnRhaW5lcgoqICoqZmFzdCoqOiBpdCBjcmVhdGVzIGJlaGluZCB0aGUgc2NlbmVzIGEgR28gc2VydmljZSB3aXRoIGEgbWluaW1hbCBmb290cHJpbnQKKiAqKnNpbXBsZSoqOiBpdCBkaXNwbGF5cyB0aGUgbW9jayBleHBlY3RhdGlvbnMgb24gdGhlIGluZGV4IHBhZ2UuIEluc3BlY3QgdGhlIEpTT04gcGF5bG9hZCBvZiBhbGwgbW9ja2VkIHJlc3BvbnNlcy4KCiMjIFVzZSBjYXNlcwoKSXQgY2FuIGJlIHVzZWQgaW4gZGlmZmVyZW50IHNjZW5hcmlvczoKKiB5b3UgYXJlIGRldmVsb3BpbmcgYW4gQVBJIFNESyBhbmQgbmVlZCB0byBpbXBsZW1lbnQgc29saWQgaW50ZWdyYXRpb24gdGVzdGluZzogdHJ5IGl0IG91dCB3aXRoIFtUZXN0Q29udGFpbmVyc10oaHR0cHM6Ly9naXRodWIuY29tL2djYXRhbmVzZS9vcGVuYXBpLXRlc3Rjb250YWluZXJzKS4KKiB5b3UgYXJlIGJ1aWxkaW5nIEFQSXMgYW5kIHdhbnQgdG8gaGVscCB5b3VyIEFQSSBjb25zdW1lcnMgZHVyaW5nIHRoZSBpbnRlZ3JhdGlvbjogbWFrZSBhIG1vY2sgc2VydmVyICh0aGF0IGltcGxlbWVudHMgdGhlIEFQSSBjb250cmFjdCkgcmVhZGlseSBhdmFpbGFibGUuCiogeW91IGFyZSBkZXZlbG9waW5nIGFuIGFwcGxpY2F0aW9uIHRoYXQgdXNlcyBhIHRoaXJkLXBhcnR5IEFQSSBkZXBlbmRlbmN5OiBtb2NrIHRoZSBBUEkgdG8gbWFrZSB5b3VyIGRldmVsb3BtZW50IGZhc3RlciBhbmQgbW9yZSBlZmZpY2llbnQuCgojIyBVc2FnZQoKIyMjIEJ1aWxkIGFuZCBydW4gd2l0aCBEb2NrZXIKCkJ1aWxkIHRoZSBtb2NrIHNlcnZlciBmcm9tIHlvdXIgT3BlbkFQSSBmaWxlOgpgYGBkb2NrZXIKZG9ja2VyIGJ1aWxkIC0tYnVpbGQtYXJnIG9wZW5hcGlmaWxlPS9wYXRoL29wZW5hcGlGaWxlLnlhbWwgLXQgb3BlbmFwaS1uYXRpdmUtbW9jay1zZXJ2ZXIgLgpgYGAKClJ1biB0aGUgY29udGFpbmVyOgpgYGBkb2NrZXIKZG9ja2VyIHJ1biAtLXJtIC1kIC1wIDgwODA6ODA4MCAtLW5hbWUgb3BlbmFwaS1uYXRpdmUtbW9jay1zZXJ2ZXIgb3BlbmFwaS1uYXRpdmUtbW9jay1zZXJ2ZXIKYGBgCgpQb2ludCB5b3VyIEFQSSByZXF1ZXN0cyB0byB0aGUgbW9jayBzZXJ2ZXI6CmBgYHNoZWxsCmN1cmwgLVggUE9TVCAtSCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIiBcCiAtZCAneyJuYW1lIjoiYWJjIiwiY291bnRyeSI6ImFiYyJ9JyBcCiAgIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC97eW91cl9hcGlfZW5kcG9pbnR9CmBgYAoKIyMjIEJ1aWxkIGFuZCBydW4gZnJvbSBzb3VyY2UKCkJ1aWxkIHRoZSBtb2NrIHNlcnZlciAoKipOb3RlKio6IHJlcXVpcmVzIEphdmEgMTEpCmBgYHNoZWxsCm12biBwYWNrYWdlCmBgYAoKR2VuZXJhdGUgdGhlIG1vY2sgc2VydmVyIHBhc3NpbmcgdGhlIHBhdGggb2YgdGhlIE9wZW5BUEkgZmlsZSAoaS5lLiBgLWkgb3BlbmFwaS90bXAvb3BlbmFwaS55YW1sYCkgYW5kIHRoZQpmb2xkZXIgdGhhdCB3aWxsIGNvbnRhaW4gdGhlIG1vY2sgc2VydmVyIHNvdXJjZSBjb2RlIChpLmUuIGAtbyBvcGVuYXBpL3RtcC9nby1zZXJ2ZXJgKToKYGBgc2hlbGwKamF2YSAtY3AgdGFyZ2V0L29wZW5hcGktbmF0aXZlLW1vY2stc2VydmVyLmphcjpvcGVuYXBpL2NsaS9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIFwKIG9yZy5vcGVuYXBpdG9vbHMuY29kZWdlbi5PcGVuQVBJR2VuZXJhdG9yIGdlbmVyYXRlIC1nIGNvbS50d2Vlc2t5LmNsb3VkdG9vbHMuY29kZWdlbi5OYXRpdmVNb2NrU2VydmVyQ29kZWdlbiBcCiAgLWkgb3BlbmFwaS90bXAvb3BlbmFwaS55YW1sIC1vIG9wZW5hcGkvdG1wL2dvLXNlcnZlcgpgYGAKClJ1biB0aGUgbW9jayBzZXJ2ZXIgKCoqTm90ZSoqOiByZXF1aXJlcyBHbyAxLjE5KToKCmBgYHNoZWxsCmNkIG9wZW5hcGkvdG1wL2dvLXNlcnZlcgpnbyBtb2QgdGlkeQpnbyBydW4gLgpgYGAKClBvaW50IHlvdXIgQVBJIHJlcXVlc3RzIHRvIHRoZSBtb2NrIHNlcnZlcjoKYGBgc2hlbGwKY3VybCAtWCBQT1NUIC1IICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKIC1kICd7Im5hbWUiOiJhYmMiLCJjb3VudHJ5IjoiYWJjIn0nIFwKICAgaHR0cDovL2xvY2FsaG9zdDo4MDgwL3t5b3VyX2FwaV9lbmRwb2ludH0KYGBgCgojIyMgTW9jayBzZXJ2ZXIgYnJvd3NlcgoKQWNjZXNzIHRoZSBpbmRleCBwYWdlIHRvIHZpZXcgdGhlIE9wZW5BUEkgZmlsZSAod2hpY2ggdGhlIG1vY2sgc2VydmVyIGhhcyBiZWVuIGNyZWF0ZWQgZnJvbSkgCmFuZCB0aGUgbW9jayBleHBlY3RhdGlvbnM6CmBgYHNoZWxsCmN1cmwgaHR0cDovL2xvY2FsaG9zdDo4MDgwL2luZGV4LwpgYGAKVGhlIGBpbmRleGAgcGFnZSBwcm92aWRlcyBhIHZpZXcgb2YgdGhlIGNvbnRyYWN0IGludGVyYWN0aW9ucywgbWFraW5nIGNsZWFyIHRoZSBleHBlY3RhdGlvbnMuCkNoZWNrIGl0IG91dC4KCiFbTW9jayBzZXJ2ZXIgYnJvd3Nlcl0obW9jay1zZXJ2ZXIucG5nKQoKCiMjIEhvdyBpdCB3b3JrcwoKVGhlIG1vZHVsZSB1c2VzIHRoZSBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpIHRvIGdlbmVyYXRlIGEgbGlnaHR3ZWlnaHQgCm1vY2sgc2VydmVyIGJhc2VkIG9uIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24uIFRoZSByZXF1ZXN0IGFuZCByZXNwb25zZSBleGFtcGxlcyBhcmUgZm91bmQgYW5kIG1hdGNoZWQgdG8gZGVmaW5lIHRoZSAKaW50ZXJhY3Rpb25zIChjb250cmFjdCkgYmV0d2VlbiB0aGUgY29uc3VtZXIgYW5kIHRoZSBwcm9kdWNlciBvZiB0aGUgQVBJLiAgCgpUaGUgZm9sbG93aW5nIHN0cmF0ZWdpZXMgYXJlIGFwcGxpZWQgKGluIG9yZGVyKSB0byBtYXRjaCByZXF1ZXN0cyB3aXRoIHJlc3BvbnNlczoKKiAqKm1hdGNoIGJ5IENvbnRyYWN0IHRhZyoqOiBkbyB0aGUgZXhhbXBsZXMgdXNlIHRoZSB2ZW5kb3IgZXh0ZW5zaW9uIGB4LWNvbnRyYWN0LWlkYD8gSW4gdGhpcyBjYXNlLCBtYXRjaCBhIHJlcXVlc3Qgd2l0aCBhIHJlc3BvbnNlIGV4YW1wbGUgdGhhdCBoYXMgdGhlIHNhbWUgdmFsdWUKKiAqKm1hdGNoIGJ5IFJlZiBuYW1lKio6IG1hdGNoIGAkcmVmYCByZXF1ZXN0IGV4YW1wbGUgd2l0aCBhIGNvcnJlc3BvbmRpbmcgYCRyZWZgIHJlc3BvbnNlIGV4YW1wbGUsIGZvciBleGFtcGxlIApgY3JlYXRlLXVzZXJzLWV4YW1wbGVgIHdvdWxkIG1hdGNoIGBjcmVhdGUtdXNlcnMtZXhhbXBsZS0yMDBgIHRvIGRlZmluZSBhIHN1Y2Nlc3NmdWwgYDIwMGAgc2NlbmFyaW8KKiAqKm1hdGNoIGJ5IEV4YW1wbGUgbmFtZSoqOiBmaW5kIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGV4YW1wbGVzIHRoYXQgaGF2ZSB0aGUgc2FtZSBuYW1lCiogKipnZW5lcmF0ZSBmcm9tIFNjaGVtYSoqOiBmYWxsYmFjayBzdHJhdGVneSAod2hlbiBubyBtYXRjaGluZyBpcyBmb3VuZCk6IGdlbmVyYXRlIHRoZSByZXNwb25zZSBmcm9tIHRoZSBTY2hlbWEgYW5kCmVuc3VyZSBldmVyeSByZXF1ZXN0IGhhcyBhdCBsZWFzdCBhIHJlc3BvbnNlLgoKCiMjIFJlZmVyZW5jZXMKCkNoZWNrIG91dCB0aGUgW0NvbnRyYWN0IFRlc3Rpbmcgd2l0aCBPcGVuQVBJXShodHRwczovL2JlcHBlY2F0YW5lc2UuaGFzaG5vZGUuZGV2L2NvbnRyYWN0LXRlc3Rpbmctd2l0aC1vcGVuYXBpKSB0byB1bmRlcnN0YW5kIGNoYWxsZW5nZXMgYW5kIG9wcG9ydHVuaXRpZXMgb2YgQ29udHJhY3QgVGVzdGluZyB3aXRoIHRoZSBPcGVuQVBJIHN0YW5kYXJkLgoK readmeEtag: '"3b26303f7de7b5d16b3a80424eb517cbb516d402"' readmeLastModified: Wed, 04 Dec 2024 19:48:37 GMT repositoryId: 710680390 description: >- Generate mock responses based on your OpenAPI specification. No dependencies. Lightweight, fast, simple. created: '2023-10-27T07:58:04Z' updated: '2025-03-30T13:40:36Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: gcatanese logo: https://avatars.githubusercontent.com/u/1771700?v=4 license: Apache-2.0 repoEtag: '"3a982c3267251ac10edc100f8a64f4f20c69a24cf454e8167c320f4f4fad861a"' repoLastModified: Sun, 30 Mar 2025 13:40:36 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/uttesh/exude-api v3: true repositoryMetadata: base64Readme: >- IyA8aW1nIHNyYz0iaHR0cDovL3V0dGVzaC5jb20vZXh1ZGUtYXBpL2ltZy9sb2dvLnBuZyIgYWx0PSJkcmF3aW5nIiB3aWR0aD0iODAiLz4gIEV4dWRlLUFQSSA8c3VwIHN0eWxlPSJjb2xvcjpyZWQiPmJldGE8L3N1cD4KCkV4dWRlIEFQSSBpcyBhbiBPcGVuIFNvdXJjZSBwcm9qZWN0LCBJdCBpcyB1c2VkIGZvciB0aGUgcHJpbWFyeSB3YXlzIGZvciBmaWx0ZXJpbmcgdGhlIHN0b3BwaW5nLCBzdGVtbWluZyB3b3JkcyBmcm9tIHRoZSB0ZXh0IGRhdGEuIFRoaXMgQVBJIGlzIGluIGEgdmVyeSBiYXNpYyBsZXZlbCBvZiBkZXZlbG9wbWVudCBuZWVkIHRvIHdvcmsgb24gZm9yIGxhdGVyIGNoYW5nZXMuCgpFeHVkZSBBUEkgdXNlcyB0aGUgaW4taG91c2UgRXh1ZGUgbGlicmFyeSBmb3IgdGhlIGZpbHRlcmluZyBvZiB0aGUgZGF0YSBFeHVkZS1saWJyYXJ5IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS91dHRlc2gvZXh1ZGUiIHRhcmdldD0iX2JsYW5rIj5SZXBvc2l0b3J5PC9hPgoKRGVtbzogaHR0cHM6Ly9leHVkZS5oZXJva3VhcHAuY29tLyAoaXRzIHRoZSBzYW1wbGUgc2VydmVyKQojIyBGZWF0dXJlcwoKKiBGaWx0ZXIgc3RvcHBpbmcgd29yZHMgZnJvbSBnaXZlbiB0ZXh0L2ZpbGUvbGluay4KKiBGaWx0ZXIgc3RlbW1pbmcgd29yZHMgZnJvbSBnaXZlbiB0ZXh0L2ZpbGUvbGluay4KKiBHZXQgc3dlYXIgd29yZHMgZnJvbSBnaXZlbiB0ZXh0L2ZpbGUvbGluawoKIyMgT3BlbkFQSS1VUkwKCk9wZW4gQVBJIEpTT046IGh0dHA6Ly91dHRlc2guY29tL2V4dWRlLWFwaS9leHVkZS1zZXJ2aWNlLW9wZW4tYXBpLmpzb24KCk9wZW4gQVBJIFlNTDogaHR0cDovL3V0dGVzaC5jb20vZXh1ZGUtYXBpL2V4dWRlLXNlcnZpY2Utb3Blbi1hcGkueW1sCgpIZXJ1a28gU3BlYyBVUkwgOiBodHRwczovL2V4dWRlLWFwaS5oZXJva3VhcHAuY29tL3N3YWdnZXItdWkvaW5kZXguaHRtbD91cmw9L3YzL2FwaS1kb2NzCgojIyBIb3cgdG8gVXNlCgpFaXRoZXIgdXNlIHRoZSBIZXJ1a28gdXJsIG9yIGRlcGxveSBsb2NhbGx5IGJ5IHVzaW5nIHRoZSBkb2NrZXIgdG8gaGl0IHRoZSBBUEksIGZvciBtb3JlIHRlY2huaWNhbCBkZXRhaWxzIG9uIHRoZQpBUEkgc2VlIGV4dWRlLWFwaSBkb2M6IDxhIGhyZWY9Imh0dHA6Ly91dHRlc2guY29tL2V4dWRlLWFwaS9hcGktZXhwbG9yZXIvIiB0YXJnZXQ9Il9ibGFuayI+IERvY3VtZW50YXRpb24gPC9hPgoKUG9zdG1hbiBleGVjdXRpb24gc2FtcGxlOgoKPGZpZ3VyZSBjbGFzcz0idmlkZW9fY29udGFpbmVyIj4KICA8dmlkZW8gY29udHJvbHM9InRydWUiIGFsbG93ZnVsbHNjcmVlbj0idHJ1ZSIgcG9zdGVyPSJodHRwOi8vdXR0ZXNoLmNvbS9leHVkZS1hcGkvaW1nL2xvZ28ucG5nIj4KICAgIDxzb3VyY2Ugc3JjPSJodHRwOi8vdXR0ZXNoLmNvbS9leHVkZS1hcGkvZXh1ZGUtYXBpLXBvc3RtYW4tc2FtcGxlLXZpZW8ud2VibSIgdHlwZT0idmlkZW8vd2VibSI+CiAgPC92aWRlbz4KPC9maWd1cmU+CgoK readmeEtag: '"dcf27cffedaeb14e7ca00d85a95a502d18a3a7fb"' readmeLastModified: Tue, 10 Mar 2020 18:20:35 GMT repositoryId: 245419070 description: >- Exude API provide the service to filter the stopping,swear words on the provided file,data and link and it uses the in house exude jar to filter the data created: '2020-03-06T12:52:40Z' updated: '2020-06-21T04:43:16Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: uttesh logo: https://avatars.githubusercontent.com/u/2218611?v=4 license: Apache-2.0 repoEtag: '"a61513a030c8bb63ae55fbe2719ac4a7ffa8acdb5a108b38e3c3cc455d2df7ac"' repoLastModified: Sun, 21 Jun 2020 04:43:16 GMT foundInMaster: true category: Testing id: 48c791c3f16d34ec574327043da3d1ad - source: openapi3 tags repository: https://github.com/osevohe/oc-p7-api_rest v3: true repositoryMetadata: base64Readme: >- IyBCaWxlTW8gQVBJCgpPcGVuQ2xhc3NSb29tcyA3dGggUHJvamVjdApCdWlsZCBhbiBBUEkgUkVTVCB3aXRoIFN5bWZvbnkKClshW1NvbmFyQ2xvdWRdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9pbWFnZXMvcHJvamVjdF9iYWRnZXMvc29uYXJjbG91ZC13aGl0ZS5zdmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPU9TRXZvaGVfT0MtUDctQVBJX1JFU1QpCgpbIVtNYWludGFpbmFiaWxpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1PU0V2b2hlX09DLVA3LUFQSV9SRVNUJm1ldHJpYz1zcWFsZV9yYXRpbmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPU9TRXZvaGVfT0MtUDctQVBJX1JFU1QpClshW1F1YWxpdHkgR2F0ZSBTdGF0dXNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PU9TRXZvaGVfT0MtUDctQVBJX1JFU1QmbWV0cmljPWFsZXJ0X3N0YXR1cyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9T1NFdm9oZV9PQy1QNy1BUElfUkVTVCkKWyFbU2VjdXJpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1PU0V2b2hlX09DLVA3LUFQSV9SRVNUJm1ldHJpYz1zZWN1cml0eV9yYXRpbmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPU9TRXZvaGVfT0MtUDctQVBJX1JFU1QpClshW0J1Z3NdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PU9TRXZvaGVfT0MtUDctQVBJX1JFU1QmbWV0cmljPWJ1Z3MpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPU9TRXZvaGVfT0MtUDctQVBJX1JFU1QpClshW0NvZGUgU21lbGxzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1PU0V2b2hlX09DLVA3LUFQSV9SRVNUJm1ldHJpYz1jb2RlX3NtZWxscyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9T1NFdm9oZV9PQy1QNy1BUElfUkVTVCkKWyFbRHVwbGljYXRlZCBMaW5lcyAoJSldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PU9TRXZvaGVfT0MtUDctQVBJX1JFU1QmbWV0cmljPWR1cGxpY2F0ZWRfbGluZXNfZGVuc2l0eSldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9T1NFdm9oZV9PQy1QNy1BUElfUkVTVCkKCkNvZGUgQ2xpbWF0ZSAgClshW01haW50YWluYWJpbGl0eV0oaHR0cHM6Ly9hcGkuY29kZWNsaW1hdGUuY29tL3YxL2JhZGdlcy8zYzEwZWE4NmZmN2JhOTRiZjAxMy9tYWludGFpbmFiaWxpdHkpXShodHRwczovL2NvZGVjbGltYXRlLmNvbS9naXRodWIvT1NFdm9oZS9PQy1QNy1BUElfUkVTVC9tYWludGFpbmFiaWxpdHkpCgojIyBQcmVyZXF1aXNpdGUKKiBBIFdlYiBTZXJ2ZXIgKEFwYWNoZSwgTmdpbnguLi4pCiogUGhQIDcuMwoqIENvbXBvc2VyCiogQSBkYXRhYmFzZSBlbmdpbmUgKE1hcmlhREIsIE15U3FsLCBQb3N0Z3JlU1FMLi4uKQoqIFtPcGVuU1NMIGNvbW1hbmQgbGluZSB0b29sXShodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL21hbjEuMC4yL21hbjEvb3BlbnNzbC5odG1sKSBvciBhbHJlYWR5IGdlbmVyYXRlZCBTU0ggS2V5cwoKIyMgSW5zdGFsbGF0aW9uCiogQ2xvbmUgb3IgZG93bmxvYWQgdGhlIHByb2plY3QKKiBHbyB0byBwcm9qZWN0IGZvbGRlciBpbiBhIHRlcm1pbmFsCiogVHlwZSBgY29tcG9zZXIgaW5zdGFsbGAKKiBDb25maWd1cmUgYSBuZXcgaG9zdCBpbiB5b3VyIHdlYiBzZXJ2ZXIgd2l0aCBgcHVibGljL2AgZm9sZGVyIGFzIERvY3VtZW50Um9vdAoKIyMjIERhdGFiYXNlIHNldHVwCiogQ29weSBgLmVudmAgdG8gYC5lbnYubG9jYWxgIGFuZCBlZGl0IGRhdGFiYXNlIHBhcmFtZXRlcnMKKiBJbml0aWFsaXplIHRoZSBkYXRhYmFzZSA6IAogICogYHBocCBiaW4vY29uc29sZSBkb2N0cmluZTpkYXRhYmFzZTpjcmVhdGVgCiAgKiBgcGhwIGJpbi9jb25zb2xlIG1ha2U6bWlncmF0aW9uYAogICogYHBocCBiaW4vY29uc29sZSBkb2N0cmluZTptaWdyYXRpb25zOm1pZ3JhdGVgCiAgCiMjIyBKV1QgQXV0aGVudGljYXRpb24gU2V0dXAKKiBHZW5lcmF0ZSBwcml2YXRlIGtleSA6YG9wZW5zc2wgZ2VucnNhIC1vdXQgcHJpdmF0ZS5wZW0gLWFlczI1NiA0MDk2YAoqIEdlbmVyYXRlIHB1YmxpYyBrZXkgOiBgb3BlbnNzbCByc2EgLXB1Ym91dCAtaW4gcHJpdmF0ZS5wZW0gLW91dCBwdWJsaWMucGVtYAoqIG1vdmUgU1NIIGtleXMgKGBwcml2YXRlLnBlbWAgYW5kIGBwdWJsaWMucGVtYCkgdG8gYGNvbmZpZy9qd3QvYAoqIHNldCBwYXNzcGhyYXNlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGtleXMgaW4geW91ciBlbnYubG9jYWwgZmlsZSAoYEpXVF9QQVNTUEhSQVNFYCkKCiMjIyBJbml0aWFsIGRhdGFiYXNlIGRhdGEKKiBUbyBzdGFydCB3aXRoIG5vIGRhdGEgOiBgcGhwIGJpbi9jb25zb2xlIGRvY3RyaW5lOmZpeHR1cmVzOmxvYWQgLS1ncm91cD1zdGFydGluZ191c2Vyc2AKKiBUbyBzdGFydCB3aXRoIHNhbXBsZXMgZGF0YSA6IGBwaHAgYmluL2NvbnNvbGUgZG9jdHJpbmU6Zml4dHVyZXM6bG9hZGAKCiMjIFNlY3VyZSB5b3VyIHNpdGUKIyMjIEFkbWluIGFjY2VzcwpCeSBkZWZhdWx0LCB5b3UgY2FuIHJldHJpZXZlIGFuIGFkbWluIHRva2VuIDogIApKU09OIDogYHsidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoic3VwZXJQYXNzd29yZDM0ISJ9YCAgIApVUkwgOiAgYC9hcGkvbG9naW5fY2hlY2tgICAgCk1FVEhPRCA6ICBgUE9TVGAKCiMjIyMgT3RoZXIgdXNlcnMKU2FtcGxlcyBkYXRhIGNvbWUgd2l0aCAxIGFkZGl0aW9uYWwgdXNlcnMgOiAgCkpTT04gOiBgeyJ1c2VybmFtZSI6InVzZXIxIiwicGFzc3dvcmQiOiJQYXNzV29yZDAxISJ9YCAgIApVUkwgOiAgYC9hcGkvbG9naW5fY2hlY2tgICAgCk1FVEhPRCA6ICBgUE9TVGAKCiMjIERvY3VtZW50YXRpb24KT25jZSBwcm9qZWN0IGlzIGluc3RhbGxlZCB5b3UgY2FuIGZpbmQgZG9jdW1lbnRhdGlvbiA6IApIVE1MIERvYyA6IChpbiBhIGJyb3dzZXIpIDogYC9hcGkvZG9jYApKc29uIERvYyAoT3BlbkFQSSAzLjApIDogYC9hcGkvZG9jLmpzb25gCkEgUGRmIHZlcnNpb24gY2FuIGJlIGZvdW5kIGluIGAvZG9jYCBkaXJlY3Rvcnk= readmeEtag: '"017bcb80e9da3608d05a9552bc25832524ffc048"' readmeLastModified: Fri, 18 Dec 2020 21:29:18 GMT repositoryId: 313562762 description: OpenClassRooms 7th Project. Build an API REST with Symfony created: '2020-11-17T09:03:19Z' updated: '2020-12-18T21:29:46Z' language: PHP archived: false stars: 1 watchers: 1 forks: 0 owner: OSEvohe logo: https://avatars.githubusercontent.com/u/13046894?v=4 repoEtag: '"59067b649bcb80255ea60e98cb0da175d331be5e7f02f266e2fc9764d0a54126"' repoLastModified: Fri, 18 Dec 2020 21:29:46 GMT foundInMaster: true category: Server id: 9845cdf339b0c28f4c61b07e0a5ab024 - source: openapi3 tags repository: https://github.com/boro23-wq/case-manager-api-design v3: true id: 93247bee3a374b56229352c0f3ad044e repositoryMetadata: base64Readme: >- CiMgQ2FzZSBNYW5hZ2VycyBBUEkgQ29sbGVjdGlvbgoKVGhlIEFQSSByZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgY2FzZSBtYW5hZ2VycyBhbmQgdGhlaXIgY2FzZXMuCgpDb250YWN0IFN1cHBvcnQ6CiAtICoqTmFtZSoqOiBTaW50dSBCb3JvCiAtICoqRW1haWwqKjogc2IzOTRAbmppdC5lZHUKCjwhLS0tIElmIHdlIGhhdmUgb25seSBvbmUgZ3JvdXAvY29sbGVjdGlvbiwgdGhlbiBubyBuZWVkIGZvciB0aGUgInVuZ3JvdXBlZCIgaGVhZGluZyAtLT4KCgojIyBWYXJpYWJsZXMKCnwgS2V5IHwgVmFsdWUgfCBUeXBlIHwKfCAtLS0gfCAtLS0tLS18LS0tLS0tLS0tLS0tLXwKfCBiYXNlVXJsIChkZXYpIHwgaHR0cDovL2xvY2FsaG9zdDozMDAwIHwgc3RyaW5nIHwKfCBiYXNlVXJsIChwcm9kL21vY2spIHwgaHR0cHM6Ly8wMWQ5YjVhNS1lZWFjLTRkMGEtODJmMi1iNzY2NjE3OWViYmIubW9jay5wc3Rtbi5pbyB8IHN0cmluZyB8CgoKCiMjIEVuZHBvaW50cwoKKiBbY2FzZW1hbmFnZXJzXSgjY2FzZW1hbmFnZXJzKQogICAgMS4gW3tpZH1dKCMxLWlkKQogICAgMS4gW0NyZWF0ZSBhIGNhc2UgbWFuYWdlci5dKCMyLWNyZWF0ZS1hLWNhc2UtbWFuYWdlcikKICAgICAgICAqIFtTdWNjZXNzZnVsbHkgY3JlYXRlZCBjYXNlIG1hbmFnZXIuXSgjaS1leGFtcGxlLXJlcXVlc3Qtc3VjY2Vzc2Z1bGx5LWNyZWF0ZWQtY2FzZS1tYW5hZ2VyKQogICAgICAgICogW0ludmFsaWQgcmVxdWVzdC4gUGxlYXNlIGZpbGwgdGhlIHJlcXVpcmVkIGlucHV0L2lucHV0cy5dKCNpaS1leGFtcGxlLXJlcXVlc3QtaW52YWxpZC1yZXF1ZXN0LXBsZWFzZS1maWxsLXRoZS1yZXF1aXJlZC1pbnB1dGlucHV0cykKICAgICAgICAqIFtCYWQgcmVxdWVzdC4gQ2FuJ3QgZmluZCB0aGUgcmVxdWVzdGVkIHJlc291cmNlLl0oI2lpaS1leGFtcGxlLXJlcXVlc3QtYmFkLXJlcXVlc3QtY2FudC1maW5kLXRoZS1yZXF1ZXN0ZWQtcmVzb3VyY2UpCiAgICAgICAgKiBbSW50ZXJuYWwgc2VydmVyIGVycm9yLiBDYW4ndCBmdWxmaWxsIHRoZSByZXF1ZXN0Ll0oI2l2LWV4YW1wbGUtcmVxdWVzdC1pbnRlcm5hbC1zZXJ2ZXItZXJyb3ItY2FudC1mdWxmaWxsLXRoZS1yZXF1ZXN0KQogICAgMS4gW0ZpbmQgYWxsIGNhc2UgbWFuYWdlcnMuXSgjMy1maW5kLWFsbC1jYXNlLW1hbmFnZXJzKQogICAgICAgICogW1N1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgYWxsIHRoZSBjYXNlIG1hbmFnZXJzLl0oI2ktZXhhbXBsZS1yZXF1ZXN0LXN1Y2Nlc3NmdWxseS1yZXRyaWV2ZWQtYWxsLXRoZS1jYXNlLW1hbmFnZXJzKQogICAgICAgICogW0ludmFsaWQgcmVxdWVzdC4gUGxlYXNlIGZpbGwgdGhlIHJlcXVpcmVkIGlucHV0L2lucHV0cy5dKCNpaS1leGFtcGxlLXJlcXVlc3QtaW52YWxpZC1yZXF1ZXN0LXBsZWFzZS1maWxsLXRoZS1yZXF1aXJlZC1pbnB1dGlucHV0cy0xKQogICAgICAgICogW0JhZCByZXF1ZXN0LiBDYW4ndCBmaW5kIHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2UuXSgjaWlpLWV4YW1wbGUtcmVxdWVzdC1iYWQtcmVxdWVzdC1jYW50LWZpbmQtdGhlLXJlcXVlc3RlZC1yZXNvdXJjZS0xKQogICAgICAgICogW0ludGVybmFsIHNlcnZlciBlcnJvci4gQ2FuJ3QgZnVsZmlsbCB0aGUgcmVxdWVzdC5dKCNpdi1leGFtcGxlLXJlcXVlc3QtaW50ZXJuYWwtc2VydmVyLWVycm9yLWNhbnQtZnVsZmlsbC10aGUtcmVxdWVzdC0xKQoqIFtjYXNlc10oI2Nhc2VzKQogICAgMS4gW3tjYXNlSWR9XSgjMS1jYXNlaWQpCiAgICAxLiBbQ3JlYXRlIGEgY2FzZS5dKCMyLWNyZWF0ZS1hLWNhc2UpCiAgICAgICAgKiBbU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgY2FzZS5dKCNpLWV4YW1wbGUtcmVxdWVzdC1zdWNjZXNzZnVsbHktY3JlYXRlZC1jYXNlKQogICAgICAgICogW0ludmFsaWQgcmVxdWVzdC4gUGxlYXNlIGZpbGwgdGhlIHJlcXVpcmVkIGlucHV0L2lucHV0cy5dKCNpaS1leGFtcGxlLXJlcXVlc3QtaW52YWxpZC1yZXF1ZXN0LXBsZWFzZS1maWxsLXRoZS1yZXF1aXJlZC1pbnB1dGlucHV0cy0yKQogICAgICAgICogW0JhZCByZXF1ZXN0LiBDYW4ndCBmaW5kIHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2UuXSgjaWlpLWV4YW1wbGUtcmVxdWVzdC1iYWQtcmVxdWVzdC1jYW50LWZpbmQtdGhlLXJlcXVlc3RlZC1yZXNvdXJjZS0yKQogICAgICAgICogW0ludGVybmFsIHNlcnZlciBlcnJvci4gQ2FuJ3QgZnVsZmlsbCB0aGUgcmVxdWVzdC5dKCNpdi1leGFtcGxlLXJlcXVlc3QtaW50ZXJuYWwtc2VydmVyLWVycm9yLWNhbnQtZnVsZmlsbC10aGUtcmVxdWVzdC0yKQogICAgMS4gW0ZpbmQgYWxsIGNhc2VzLl0oIzMtZmluZC1hbGwtY2FzZXMpCiAgICAgICAgKiBbU3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCBhbGwgdGhlIGNhc2VzLl0oI2ktZXhhbXBsZS1yZXF1ZXN0LXN1Y2Nlc3NmdWxseS1yZXRyaWV2ZWQtYWxsLXRoZS1jYXNlcykKICAgICAgICAqIFtJbnZhbGlkIHJlcXVlc3QuIFBsZWFzZSBmaWxsIHRoZSByZXF1aXJlZCBpbnB1dC9pbnB1dHMuXSgjaWktZXhhbXBsZS1yZXF1ZXN0LWludmFsaWQtcmVxdWVzdC1wbGVhc2UtZmlsbC10aGUtcmVxdWlyZWQtaW5wdXRpbnB1dHMtMykKICAgICAgICAqIFtCYWQgcmVxdWVzdC4gQ2FuJ3QgZmluZCB0aGUgcmVxdWVzdGVkIHJlc291cmNlLl0oI2lpaS1leGFtcGxlLXJlcXVlc3QtYmFkLXJlcXVlc3QtY2FudC1maW5kLXRoZS1yZXF1ZXN0ZWQtcmVzb3VyY2UtMykKICAgICAgICAqIFtJbnRlcm5hbCBzZXJ2ZXIgZXJyb3IuIENhbid0IGZ1bGZpbGwgdGhlIHJlcXVlc3QuXSgjaXYtZXhhbXBsZS1yZXF1ZXN0LWludGVybmFsLXNlcnZlci1lcnJvci1jYW50LWZ1bGZpbGwtdGhlLXJlcXVlc3QtMykKCi0tLS0tLS0tCgoKCiMjIGNhc2VtYW5hZ2VycwoKCgojIyMgMS4ge2lkfQoKCgoqKipFbmRwb2ludDoqKioKCmBgYGJhc2gKTWV0aG9kOiAKVHlwZTogClVSTDogCmBgYAoKCgojIyMgMi4gQ3JlYXRlIGEgY2FzZSBtYW5hZ2VyLgoKCkNyZWF0ZSBhIG5ldyBjYXNlIG1hbmFnZXIgdXNpbmcgdGhlIGlucHV0IHByb3ZpZGVkIGFuZCBhZGQgaXQgdG8gdGhlIHN5c3RlbS4KCgoqKipFbmRwb2ludDoqKioKCmBgYGJhc2gKTWV0aG9kOiBQT1NUClR5cGU6IFJBVwpVUkw6IHt7YmFzZVVybH19L2Nhc2VtYW5hZ2VycwpgYGAKCgoqKipIZWFkZXJzOioqKgoKfCBLZXkgfCBWYWx1ZSB8IERlc2NyaXB0aW9uIHwKfCAtLS0gfCAtLS0tLS18LS0tLS0tLS0tLS0tLXwKfCBDb250ZW50LVR5cGUgfCBhcHBsaWNhdGlvbi9qc29uIHwgIHwKfCBBY2NlcHQgfCBhcHBsaWNhdGlvbi9qc29uIHwgIHwKCgoKKioqQm9keToqKioKCmBgYGpzICAgICAgICAKewogICJ1c2VybmFtZSI6ICJqb2huZG9lIiwKICAiZmlyc3ROYW1lIjogIkpvaG4iLAogICJsYXN0TmFtZSI6ICJEb2UiLAogICJlbWFpbCI6ICJqb2huZG9lQGNtLmlvIiwKICAicGhvbmUiOiA4NjIzODE3NjY1Cn0KYGBgCgoKCioqKk1vcmUgZXhhbXBsZSBSZXF1ZXN0cy9SZXNwb25zZXM6KioqCgoKIyMjIyBJLiBFeGFtcGxlIFJlcXVlc3Q6IFN1Y2Nlc3NmdWxseSBjcmVhdGVkIGNhc2UgbWFuYWdlci4KCgoKKioqQm9keToqKioKCmBgYGpzICAgICAgICAKewogICJ1c2VybmFtZSI6ICJqb2huZG9lIiwKICAiZmlyc3ROYW1lIjogIkpvaG4iLAogICJsYXN0TmFtZSI6ICJEb2UiLAogICJlbWFpbCI6ICJqb2huZG9lQGNtLmlvIiwKICAicGhvbmUiOiA4NjIzODE3NjY1Cn0KYGBgCgoKCiMjIyMgSS4gRXhhbXBsZSBSZXNwb25zZTogU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgY2FzZSBtYW5hZ2VyLgpgYGBqcwp7CiAgInVzZXJuYW1lIjogImpvaG5kb2UiLAogICJmaXJzdE5hbWUiOiAiSm9obiIsCiAgImxhc3ROYW1lIjogIkRvZSIsCiAgImVtYWlsIjogImpvaG5kb2VAY20uaW8iLAogICJwaG9uZSI6IDg2MjM4MTc2NjUsCiAgImNhc2VNYW5hZ2VySWQiOiAiMzc4Y2RkZGMtMzFhZi00ODFjLTkwMDAtMmFiNGVhYmVlYmFmIiwKICAiY3JlYXRlZEF0IjogIjIwMjEtMDEtMzBUMDg6MzA6MDBaIiwKICAibW9kaWZpZWRBdCI6ICIyMDIxLTAxLTMxVDA4OjMwOjAwWiIKfQpgYGAKCgoqKipTdGF0dXMgQ29kZToqKiogMjAxCgo8YnI+CgoKCiMjIyMgSUkuIEV4YW1wbGUgUmVxdWVzdDogSW52YWxpZCByZXF1ZXN0LiBQbGVhc2UgZmlsbCB0aGUgcmVxdWlyZWQgaW5wdXQvaW5wdXRzLgoKCgoqKipCb2R5OioqKgoKYGBganMgICAgICAgIAp7Ci8vICAgInVzZXJuYW1lIjogImpvaG5kb2UiLAogICJmaXJzdE5hbWUiOiAiSm9obiIsCiAgImxhc3ROYW1lIjogIkRvZSIsCiAgImVtYWlsIjogImpvaG5kb2VAY20uaW8iLAogICJwaG9uZSI6IDg2MjM4MTc2NjUKfQpgYGAKCgoKIyMjIyBJSS4gRXhhbXBsZSBSZXNwb25zZTogSW52YWxpZCByZXF1ZXN0LiBQbGVhc2UgZmlsbCB0aGUgcmVxdWlyZWQgaW5wdXQvaW5wdXRzLgpgYGBqcwp7CiAgInN0YXR1c0NvZGUiOiA0MDAsCiAgImRlc2NyaXB0aW9uIjogIkludmFsaWQgcmVxdWVzdC4gUGxlYXNlIGZpbGwgdGhlIHJlcXVpcmVkIGlucHV0L2lucHV0cy4iCn0KYGBgCgoKKioqU3RhdHVzIENvZGU6KioqIDQwMAoKPGJyPgoKCgojIyMjIElJSS4gRXhhbXBsZSBSZXF1ZXN0OiBCYWQgcmVxdWVzdC4gQ2FuJ3QgZmluZCB0aGUgcmVxdWVzdGVkIHJlc291cmNlLgoKCgoqKipCb2R5OioqKgoKYGBganMgICAgICAgIAp7CiAgInVzZXJuYW1lIjogImpvaG5kb2UiLAovLyAgICJmaXJzdE5hbWUiOiAiSm9obiIsCiAgImxhc3ROYW1lIjogIkRvZSIsCiAgImVtYWlsIjogImpvaG5kb2VAY20uaW8iLAogICJwaG9uZSI6IDg2MjM4MTc2NjUKfQpgYGAKCgoKIyMjIyBJSUkuIEV4YW1wbGUgUmVzcG9uc2U6IEJhZCByZXF1ZXN0LiBDYW4ndCBmaW5kIHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2UuCmBgYGpzCnsKICAic3RhdHVzQ29kZSI6IDQwNCwKICAiZGVzY3JpcHRpb24iOiAiQmFkIHJlcXVlc3QuIENhbid0IGZpbmQgdGhlIHJlcXVlc3RlZCByZXNvdXJjZS4iCn0KYGBgCgoKKioqU3RhdHVzIENvZGU6KioqIDQwNAoKPGJyPgoKCgojIyMjIElWLiBFeGFtcGxlIFJlcXVlc3Q6IEludGVybmFsIHNlcnZlciBlcnJvci4gQ2FuJ3QgZnVsZmlsbCB0aGUgcmVxdWVzdC4KCgoKKioqQm9keToqKioKCmBgYGpzICAgICAgICAKLy8gewovLyAgICJ1c2VybmFtZSI6ICJqb2huZG9lIiwKLy8gICAiZmlyc3ROYW1lIjogIkpvaG4iLAovLyAgICJsYXN0TmFtZSI6ICJEb2UiLAovLyAgICJlbWFpbCI6ICJqb2huZG9lQGNtLmlvIiwKLy8gICAicGhvbmUiOiA4NjIzODE3NjY1Ci8vIH0KYGBgCgoKCiMjIyMgSVYuIEV4YW1wbGUgUmVzcG9uc2U6IEludGVybmFsIHNlcnZlciBlcnJvci4gQ2FuJ3QgZnVsZmlsbCB0aGUgcmVxdWVzdC4KYGBganMKewogICJzdGF0dXNDb2RlIjogNTAwLAogICJkZXNjcmlwdGlvbiI6ICJJbnRlcm5hbCBzZXJ2ZXIgZXJyb3IuIENhbid0IGZ1bGZpbGwgdGhlIHJlcXVlc3QuIgp9CmBgYAoKCioqKlN0YXR1cyBDb2RlOioqKiA1MDAKCjxicj4KCgoKIyMjIDMuIEZpbmQgYWxsIGNhc2UgbWFuYWdlcnMuCgoKR2V0IGFsbCB0aGUgY2FzZSBtYW5hZ2VycyBhbmQgdGhlaXIgY2FzZXMgcmVjb3JkZWQgaW4gdGhlIHN5c3RlbS4KCgoqKipFbmRwb2ludDoqKioKCmBgYGJhc2gKTWV0aG9kOiBHRVQKVHlwZTogClVSTDoge3tiYXNlVXJsfX0vY2FzZW1hbmFnZXJzCmBgYAoKCioqKkhlYWRlcnM6KioqCgp8IEtleSB8IFZhbHVlIHwgRGVzY3JpcHRpb24gfAp8IC0tLSB8IC0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8IEFjY2VwdCB8IGFwcGxpY2F0aW9uL2pzb24gfCAgfAoKCgoqKipNb3JlIGV4YW1wbGUgUmVxdWVzdHMvUmVzcG9uc2VzOioqKgoKCiMjIyMgSS4gRXhhbXBsZSBSZXF1ZXN0OiBTdWNjZXNzZnVsbHkgcmV0cmlldmVkIGFsbCB0aGUgY2FzZSBtYW5hZ2Vycy4KCgoKKioqQm9keTogTm9uZSoqKgoKCgojIyMjIEkuIEV4YW1wbGUgUmVzcG9uc2U6IFN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgYWxsIHRoZSBjYXNlIG1hbmFnZXJzLgpgYGBqcwpbCiAgewogICAgInVzZXJuYW1lIjogImpvaG5kb2UiLAogICAgImZpcnN0TmFtZSI6ICJKb2huIiwKICAgICJsYXN0TmFtZSI6ICJEb2UiLAogICAgImVtYWlsIjogImpvaG5kb2VAY20uaW8iLAogICAgInBob25lIjogODYyMzgxNzY2NSwKICAgICJjYXNlTWFuYWdlcklkIjogIjM3OGNkZGRjLTMxYWYtNDgxYy05MDAwLTJhYjRlYWJlZWJhZiIsCiAgICAiY3JlYXRlZEF0IjogIjIwMjEtMDEtMzBUMDg6MzA6MDBaIiwKICAgICJtb2RpZmllZEF0IjogIjIwMjEtMDEtMzFUMDg6MzA6MDBaIiwKICAgICJjYXNlcyI6IFsKICAgICAgewogICAgICAgICJzdGF0dXMiOiAiQWN0aXZlIiwKICAgICAgICAiY2F0ZWdvcnkiOiAiRXllIiwKICAgICAgICAic2V2ZXJpdHkiOiAiMC1Dcml0aWNhbCBJbXBhY3QiLAogICAgICAgICJzdWJqZWN0IjogIk9wZXJhdGlvbiBmb2xsb3ctdXAiLAogICAgICAgICJwYXRpZW50RGV0YWlsIjogewogICAgICAgICAgImZpcnN0TmFtZSI6ICJNYXR0IiwKICAgICAgICAgICJsYXN0TmFtZSI6ICJUdXJuZXIiLAogICAgICAgICAgInVzZXJOYW1lIjogIm1hdHR0dXJuZXIxMCIsCiAgICAgICAgICAicGhvbmUiOiA5NDUyODc3NjYyLAogICAgICAgICAgImVtYWlsIjogIm1hdHR0dXJuZXJAZ21haWwuY29tIiwKICAgICAgICAgICJpZCI6ICI0NjAwNWE4Mi1hNjEyLTRkYzEtOTI3OS03MjE1ZGY2ODk1Y2QiCiAgICAgICAgfSwKICAgICAgICAic29sdXRpb24iOiB7CiAgICAgICAgICAic29sdXRpb25TdWJqZWN0IjogIk9wZXJhdGUgZXllIGRpc2Vhc2UuIiwKICAgICAgICAgICJpbnZlc3RpZ2F0aW9uIjogIkRpc2Vhc2VzIG9uIHRoZSBsZWZ0IGV5ZSBhbmQgYWJub3JtYWwgZXllIGRldmVsb3BtZW50IGFuZCBmdW5jdGlvbi4iLAogICAgICAgICAgInJlc29sdXRpb24iOiAiU3VjY2Vzc2Z1bGx5IG9wZXJhdGUgb24gZGlzZWFzZSBvbiB0aGUgbGVmdCBleWUgYW5kIG5vcm1hbCBleWUgZGV2ZWxvcG1lbnQgYW5kIGZ1bmN0aW9uLiIKICAgICAgICB9LAogICAgICAgICJjYXNlSWQiOiAiMzYwMDVhODItYTYxMi00ZGMxLTkyNzktNzIxNWRmNjg5NWNkIiwKICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjEtMDMtMzBUMDg6MzA6MDBaIiwKICAgICAgICAibW9kaWZpZWRBdCI6ICIyMDIxLTA0LTI4VDA4OjMwOjAwWiIsCiAgICAgICAgImFzc2lnbmVkVG8iOiB7CiAgICAgICAgICAiZmlyc3ROYW1lIjogIkthdGhlcmluZSIsCiAgICAgICAgICAibGFzdE5hbWUiOiAiTWFyc2hhbGwiLAogICAgICAgICAgInBob25lIjogODQ1Mjg3NzY2NSwKICAgICAgICAgICJlbWFpbCI6ICJrYXRobWFyc2hhbGxAaG0uaW8iLAogICAgICAgICAgImlkIjogIjI2MDA1YTgyLWE2MTItNGRjMS05Mjc5LTcyMTVkZjY4OTVjZCIsCiAgICAgICAgICAiYXNzaWduZWRPbiI6ICIyMDIxLTAzLTMwVDA4OjMwOjAwWiIsCiAgICAgICAgICAicHJvZmVzc2lvbiI6ICJPcGh0aGFsbW9sb2dpc3RzIgogICAgICAgIH0sCiAgICAgICAgIm1pbGVzdG9uZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJIb21lIHRoZXJhcHkgZm9yIGxlZnQgZXllIGJlZm9yZSBzdXJnZXJ5LiIsCiAgICAgICAgICAgICJpZCI6ICIzMDAyNzgxMS0xZGRiLTQxMzUtYmI5NC0zYTY4YWFlMTQ5MWMiLAogICAgICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTI6MjMuOTI2WiIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJIb21lIHRoZXJhcHkgZm9yIGxlZnQgZXllIGJlZm9yZSBzdXJnZXJ5LiIsCiAgICAgICAgICAgICJpZCI6ICIzMDAyNzgxMS0xZGRiLTQxMzUtYmI5NC0zYTY4YWFlMTQ5MWMiLAogICAgICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTI6MjMuOTI2WiIKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhY3Rpdml0aWVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVXBsb2FkZWQgWC1SYXkgcmVwb3J0LiIsCiAgICAgICAgICAgICJpZCI6ICJhN2EzMjU3OS1kN2MzLTQ1ZWYtOGI1Zi04ZWFjOTk2ZGI1OTkiLAogICAgICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTQ6MjcuNTE2WiIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVcGxvYWRlZCBYLVJheSByZXBvcnQuIiwKICAgICAgICAgICAgImlkIjogImE3YTMyNTc5LWQ3YzMtNDVlZi04YjVmLThlYWM5OTZkYjU5OSIsCiAgICAgICAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxNDoyNy41MTZaIgogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgIm5vdGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiY29tbWVudCI6ICJDbGllbnQgaXMgYXQgcmlzayBvZiBiZWluZyBub24tYWRoZXJlbnQgdG8gbWVkaWNhdGlvbnMgYW5kIG90aGVyIGFwcG9pbnRtZW50cy4gQ2xpZW50IG5lZWRzIHJlbWluZGVycyB0byBhc3Npc3Qgd2l0aCBrZWVwaW5nIGFwcG9pbnRtZW50cy4iLAogICAgICAgICAgICAiaWQiOiAibjdhNDI1NzktZDdjMy00NWVmLThiNWYtOGVhYzk5NmRiNTk5IiwKICAgICAgICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjE0OjI3LjUxNloiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiY29tbWVudCI6ICJDbGllbnQgaXMgYXQgcmlzayBvZiBiZWluZyBub24tYWRoZXJlbnQgdG8gbWVkaWNhdGlvbnMgYW5kIG90aGVyIGFwcG9pbnRtZW50cy4gQ2xpZW50IG5lZWRzIHJlbWluZGVycyB0byBhc3Npc3Qgd2l0aCBrZWVwaW5nIGFwcG9pbnRtZW50cy4iLAogICAgICAgICAgICAiaWQiOiAibjdhNDI1NzktZDdjMy00NWVmLThiNWYtOGVhYzk5NmRiNTk5IiwKICAgICAgICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjE0OjI3LjUxNloiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInN0YXR1cyI6ICJBY3RpdmUiLAogICAgICAgICJjYXRlZ29yeSI6ICJFeWUiLAogICAgICAgICJzZXZlcml0eSI6ICIwLUNyaXRpY2FsIEltcGFjdCIsCiAgICAgICAgInN1YmplY3QiOiAiT3BlcmF0aW9uIGZvbGxvdy11cCIsCiAgICAgICAgInBhdGllbnREZXRhaWwiOiB7CiAgICAgICAgICAiZmlyc3ROYW1lIjogIk1hdHQiLAogICAgICAgICAgImxhc3ROYW1lIjogIlR1cm5lciIsCiAgICAgICAgICAidXNlck5hbWUiOiAibWF0dHR1cm5lcjEwIiwKICAgICAgICAgICJwaG9uZSI6IDk0NTI4Nzc2NjIsCiAgICAgICAgICAiZW1haWwiOiAibWF0dHR1cm5lckBnbWFpbC5jb20iLAogICAgICAgICAgImlkIjogIjQ2MDA1YTgyLWE2MTItNGRjMS05Mjc5LTcyMTVkZjY4OTVjZCIKICAgICAgICB9LAogICAgICAgICJzb2x1dGlvbiI6IHsKICAgICAgICAgICJzb2x1dGlvblN1YmplY3QiOiAiT3BlcmF0ZSBleWUgZGlzZWFzZS4iLAogICAgICAgICAgImludmVzdGlnYXRpb24iOiAiRGlzZWFzZXMgb24gdGhlIGxlZnQgZXllIGFuZCBhYm5vcm1hbCBleWUgZGV2ZWxvcG1lbnQgYW5kIGZ1bmN0aW9uLiIsCiAgICAgICAgICAicmVzb2x1dGlvbiI6ICJTdWNjZXNzZnVsbHkgb3BlcmF0ZSBvbiBkaXNlYXNlIG9uIHRoZSBsZWZ0IGV5ZSBhbmQgbm9ybWFsIGV5ZSBkZXZlbG9wbWVudCBhbmQgZnVuY3Rpb24uIgogICAgICAgIH0sCiAgICAgICAgImNhc2VJZCI6ICIzNjAwNWE4Mi1hNjEyLTRkYzEtOTI3OS03MjE1ZGY2ODk1Y2QiLAogICAgICAgICJjcmVhdGVkQXQiOiAiMjAyMS0wMy0zMFQwODozMDowMFoiLAogICAgICAgICJtb2RpZmllZEF0IjogIjIwMjEtMDQtMjhUMDg6MzA6MDBaIiwKICAgICAgICAiYXNzaWduZWRUbyI6IHsKICAgICAgICAgICJmaXJzdE5hbWUiOiAiS2F0aGVyaW5lIiwKICAgICAgICAgICJsYXN0TmFtZSI6ICJNYXJzaGFsbCIsCiAgICAgICAgICAicGhvbmUiOiA4NDUyODc3NjY1LAogICAgICAgICAgImVtYWlsIjogImthdGhtYXJzaGFsbEBobS5pbyIsCiAgICAgICAgICAiaWQiOiAiMjYwMDVhODItYTYxMi00ZGMxLTkyNzktNzIxNWRmNjg5NWNkIiwKICAgICAgICAgICJhc3NpZ25lZE9uIjogIjIwMjEtMDMtMzBUMDg6MzA6MDBaIiwKICAgICAgICAgICJwcm9mZXNzaW9uIjogIk9waHRoYWxtb2xvZ2lzdHMiCiAgICAgICAgfSwKICAgICAgICAibWlsZXN0b25lcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkhvbWUgdGhlcmFweSBmb3IgbGVmdCBleWUgYmVmb3JlIHN1cmdlcnkuIiwKICAgICAgICAgICAgImlkIjogIjMwMDI3ODExLTFkZGItNDEzNS1iYjk0LTNhNjhhYWUxNDkxYyIsCiAgICAgICAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxMjoyMy45MjZaIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkhvbWUgdGhlcmFweSBmb3IgbGVmdCBleWUgYmVmb3JlIHN1cmdlcnkuIiwKICAgICAgICAgICAgImlkIjogIjMwMDI3ODExLTFkZGItNDEzNS1iYjk0LTNhNjhhYWUxNDkxYyIsCiAgICAgICAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxMjoyMy45MjZaIgogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImFjdGl2aXRpZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVcGxvYWRlZCBYLVJheSByZXBvcnQuIiwKICAgICAgICAgICAgImlkIjogImE3YTMyNTc5LWQ3YzMtNDVlZi04YjVmLThlYWM5OTZkYjU5OSIsCiAgICAgICAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxNDoyNy41MTZaIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVwbG9hZGVkIFgtUmF5IHJlcG9ydC4iLAogICAgICAgICAgICAiaWQiOiAiYTdhMzI1NzktZDdjMy00NWVmLThiNWYtOGVhYzk5NmRiNTk5IiwKICAgICAgICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjE0OjI3LjUxNloiCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAibm90ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJjb21tZW50IjogIkNsaWVudCBpcyBhdCByaXNrIG9mIGJlaW5nIG5vbi1hZGhlcmVudCB0byBtZWRpY2F0aW9ucyBhbmQgb3RoZXIgYXBwb2ludG1lbnRzLiBDbGllbnQgbmVlZHMgcmVtaW5kZXJzIHRvIGFzc2lzdCB3aXRoIGtlZXBpbmcgYXBwb2ludG1lbnRzLiIsCiAgICAgICAgICAgICJpZCI6ICJuN2E0MjU3OS1kN2MzLTQ1ZWYtOGI1Zi04ZWFjOTk2ZGI1OTkiLAogICAgICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTQ6MjcuNTE2WiIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJjb21tZW50IjogIkNsaWVudCBpcyBhdCByaXNrIG9mIGJlaW5nIG5vbi1hZGhlcmVudCB0byBtZWRpY2F0aW9ucyBhbmQgb3RoZXIgYXBwb2ludG1lbnRzLiBDbGllbnQgbmVlZHMgcmVtaW5kZXJzIHRvIGFzc2lzdCB3aXRoIGtlZXBpbmcgYXBwb2ludG1lbnRzLiIsCiAgICAgICAgICAgICJpZCI6ICJuN2E0MjU3OS1kN2MzLTQ1ZWYtOGI1Zi04ZWFjOTk2ZGI1OTkiLAogICAgICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTQ6MjcuNTE2WiIKICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0KICAgIF0KICB9LAogIHsKICAgICJ1c2VybmFtZSI6ICJqb2huZG9lIiwKICAgICJmaXJzdE5hbWUiOiAiSm9obiIsCiAgICAibGFzdE5hbWUiOiAiRG9lIiwKICAgICJlbWFpbCI6ICJqb2huZG9lQGNtLmlvIiwKICAgICJwaG9uZSI6IDg2MjM4MTc2NjUsCiAgICAiY2FzZU1hbmFnZXJJZCI6ICIzNzhjZGRkYy0zMWFmLTQ4MWMtOTAwMC0yYWI0ZWFiZWViYWYiLAogICAgImNyZWF0ZWRBdCI6ICIyMDIxLTAxLTMwVDA4OjMwOjAwWiIsCiAgICAibW9kaWZpZWRBdCI6ICIyMDIxLTAxLTMxVDA4OjMwOjAwWiIsCiAgICAiY2FzZXMiOiBbCiAgICAgIHsKICAgICAgICAic3RhdHVzIjogIkFjdGl2ZSIsCiAgICAgICAgImNhdGVnb3J5IjogIkV5ZSIsCiAgICAgICAgInNldmVyaXR5IjogIjAtQ3JpdGljYWwgSW1wYWN0IiwKICAgICAgICAic3ViamVjdCI6ICJPcGVyYXRpb24gZm9sbG93LXVwIiwKICAgICAgICAicGF0aWVudERldGFpbCI6IHsKICAgICAgICAgICJmaXJzdE5hbWUiOiAiTWF0dCIsCiAgICAgICAgICAibGFzdE5hbWUiOiAiVHVybmVyIiwKICAgICAgICAgICJ1c2VyTmFtZSI6ICJtYXR0dHVybmVyMTAiLAogICAgICAgICAgInBob25lIjogOTQ1Mjg3NzY2MiwKICAgICAgICAgICJlbWFpbCI6ICJtYXR0dHVybmVyQGdtYWlsLmNvbSIsCiAgICAgICAgICAiaWQiOiAiNDYwMDVhODItYTYxMi00ZGMxLTkyNzktNzIxNWRmNjg5NWNkIgogICAgICAgIH0sCiAgICAgICAgInNvbHV0aW9uIjogewogICAgICAgICAgInNvbHV0aW9uU3ViamVjdCI6ICJPcGVyYXRlIGV5ZSBkaXNlYXNlLiIsCiAgICAgICAgICAiaW52ZXN0aWdhdGlvbiI6ICJEaXNlYXNlcyBvbiB0aGUgbGVmdCBleWUgYW5kIGFibm9ybWFsIGV5ZSBkZXZlbG9wbWVudCBhbmQgZnVuY3Rpb24uIiwKICAgICAgICAgICJyZXNvbHV0aW9uIjogIlN1Y2Nlc3NmdWxseSBvcGVyYXRlIG9uIGRpc2Vhc2Ugb24gdGhlIGxlZnQgZXllIGFuZCBub3JtYWwgZXllIGRldmVsb3BtZW50IGFuZCBmdW5jdGlvbi4iCiAgICAgICAgfSwKICAgICAgICAiY2FzZUlkIjogIjM2MDA1YTgyLWE2MTItNGRjMS05Mjc5LTcyMTVkZjY4OTVjZCIsCiAgICAgICAgImNyZWF0ZWRBdCI6ICIyMDIxLTAzLTMwVDA4OjMwOjAwWiIsCiAgICAgICAgIm1vZGlmaWVkQXQiOiAiMjAyMS0wNC0yOFQwODozMDowMFoiLAogICAgICAgICJhc3NpZ25lZFRvIjogewogICAgICAgICAgImZpcnN0TmFtZSI6ICJLYXRoZXJpbmUiLAogICAgICAgICAgImxhc3ROYW1lIjogIk1hcnNoYWxsIiwKICAgICAgICAgICJwaG9uZSI6IDg0NTI4Nzc2NjUsCiAgICAgICAgICAiZW1haWwiOiAia2F0aG1hcnNoYWxsQGhtLmlvIiwKICAgICAgICAgICJpZCI6ICIyNjAwNWE4Mi1hNjEyLTRkYzEtOTI3OS03MjE1ZGY2ODk1Y2QiLAogICAgICAgICAgImFzc2lnbmVkT24iOiAiMjAyMS0wMy0zMFQwODozMDowMFoiLAogICAgICAgICAgInByb2Zlc3Npb24iOiAiT3BodGhhbG1vbG9naXN0cyIKICAgICAgICB9LAogICAgICAgICJtaWxlc3RvbmVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSG9tZSB0aGVyYXB5IGZvciBsZWZ0IGV5ZSBiZWZvcmUgc3VyZ2VyeS4iLAogICAgICAgICAgICAiaWQiOiAiMzAwMjc4MTEtMWRkYi00MTM1LWJiOTQtM2E2OGFhZTE0OTFjIiwKICAgICAgICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjEyOjIzLjkyNloiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSG9tZSB0aGVyYXB5IGZvciBsZWZ0IGV5ZSBiZWZvcmUgc3VyZ2VyeS4iLAogICAgICAgICAgICAiaWQiOiAiMzAwMjc4MTEtMWRkYi00MTM1LWJiOTQtM2E2OGFhZTE0OTFjIiwKICAgICAgICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjEyOjIzLjkyNloiCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiYWN0aXZpdGllcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVwbG9hZGVkIFgtUmF5IHJlcG9ydC4iLAogICAgICAgICAgICAiaWQiOiAiYTdhMzI1NzktZDdjMy00NWVmLThiNWYtOGVhYzk5NmRiNTk5IiwKICAgICAgICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjE0OjI3LjUxNloiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVXBsb2FkZWQgWC1SYXkgcmVwb3J0LiIsCiAgICAgICAgICAgICJpZCI6ICJhN2EzMjU3OS1kN2MzLTQ1ZWYtOGI1Zi04ZWFjOTk2ZGI1OTkiLAogICAgICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTQ6MjcuNTE2WiIKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJub3RlcyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImNvbW1lbnQiOiAiQ2xpZW50IGlzIGF0IHJpc2sgb2YgYmVpbmcgbm9uLWFkaGVyZW50IHRvIG1lZGljYXRpb25zIGFuZCBvdGhlciBhcHBvaW50bWVudHMuIENsaWVudCBuZWVkcyByZW1pbmRlcnMgdG8gYXNzaXN0IHdpdGgga2VlcGluZyBhcHBvaW50bWVudHMuIiwKICAgICAgICAgICAgImlkIjogIm43YTQyNTc5LWQ3YzMtNDVlZi04YjVmLThlYWM5OTZkYjU5OSIsCiAgICAgICAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxNDoyNy41MTZaIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImNvbW1lbnQiOiAiQ2xpZW50IGlzIGF0IHJpc2sgb2YgYmVpbmcgbm9uLWFkaGVyZW50IHRvIG1lZGljYXRpb25zIGFuZCBvdGhlciBhcHBvaW50bWVudHMuIENsaWVudCBuZWVkcyByZW1pbmRlcnMgdG8gYXNzaXN0IHdpdGgga2VlcGluZyBhcHBvaW50bWVudHMuIiwKICAgICAgICAgICAgImlkIjogIm43YTQyNTc5LWQ3YzMtNDVlZi04YjVmLThlYWM5OTZkYjU5OSIsCiAgICAgICAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxNDoyNy41MTZaIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgICJzdGF0dXMiOiAiQWN0aXZlIiwKICAgICAgICAiY2F0ZWdvcnkiOiAiRXllIiwKICAgICAgICAic2V2ZXJpdHkiOiAiMC1Dcml0aWNhbCBJbXBhY3QiLAogICAgICAgICJzdWJqZWN0IjogIk9wZXJhdGlvbiBmb2xsb3ctdXAiLAogICAgICAgICJwYXRpZW50RGV0YWlsIjogewogICAgICAgICAgImZpcnN0TmFtZSI6ICJNYXR0IiwKICAgICAgICAgICJsYXN0TmFtZSI6ICJUdXJuZXIiLAogICAgICAgICAgInVzZXJOYW1lIjogIm1hdHR0dXJuZXIxMCIsCiAgICAgICAgICAicGhvbmUiOiA5NDUyODc3NjYyLAogICAgICAgICAgImVtYWlsIjogIm1hdHR0dXJuZXJAZ21haWwuY29tIiwKICAgICAgICAgICJpZCI6ICI0NjAwNWE4Mi1hNjEyLTRkYzEtOTI3OS03MjE1ZGY2ODk1Y2QiCiAgICAgICAgfSwKICAgICAgICAic29sdXRpb24iOiB7CiAgICAgICAgICAic29sdXRpb25TdWJqZWN0IjogIk9wZXJhdGUgZXllIGRpc2Vhc2UuIiwKICAgICAgICAgICJpbnZlc3RpZ2F0aW9uIjogIkRpc2Vhc2VzIG9uIHRoZSBsZWZ0IGV5ZSBhbmQgYWJub3JtYWwgZXllIGRldmVsb3BtZW50IGFuZCBmdW5jdGlvbi4iLAogICAgICAgICAgInJlc29sdXRpb24iOiAiU3VjY2Vzc2Z1bGx5IG9wZXJhdGUgb24gZGlzZWFzZSBvbiB0aGUgbGVmdCBleWUgYW5kIG5vcm1hbCBleWUgZGV2ZWxvcG1lbnQgYW5kIGZ1bmN0aW9uLiIKICAgICAgICB9LAogICAgICAgICJjYXNlSWQiOiAiMzYwMDVhODItYTYxMi00ZGMxLTkyNzktNzIxNWRmNjg5NWNkIiwKICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjEtMDMtMzBUMDg6MzA6MDBaIiwKICAgICAgICAibW9kaWZpZWRBdCI6ICIyMDIxLTA0LTI4VDA4OjMwOjAwWiIsCiAgICAgICAgImFzc2lnbmVkVG8iOiB7CiAgICAgICAgICAiZmlyc3ROYW1lIjogIkthdGhlcmluZSIsCiAgICAgICAgICAibGFzdE5hbWUiOiAiTWFyc2hhbGwiLAogICAgICAgICAgInBob25lIjogODQ1Mjg3NzY2NSwKICAgICAgICAgICJlbWFpbCI6ICJrYXRobWFyc2hhbGxAaG0uaW8iLAogICAgICAgICAgImlkIjogIjI2MDA1YTgyLWE2MTItNGRjMS05Mjc5LTcyMTVkZjY4OTVjZCIsCiAgICAgICAgICAiYXNzaWduZWRPbiI6ICIyMDIxLTAzLTMwVDA4OjMwOjAwWiIsCiAgICAgICAgICAicHJvZmVzc2lvbiI6ICJPcGh0aGFsbW9sb2dpc3RzIgogICAgICAgIH0sCiAgICAgICAgIm1pbGVzdG9uZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJIb21lIHRoZXJhcHkgZm9yIGxlZnQgZXllIGJlZm9yZSBzdXJnZXJ5LiIsCiAgICAgICAgICAgICJpZCI6ICIzMDAyNzgxMS0xZGRiLTQxMzUtYmI5NC0zYTY4YWFlMTQ5MWMiLAogICAgICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTI6MjMuOTI2WiIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJIb21lIHRoZXJhcHkgZm9yIGxlZnQgZXllIGJlZm9yZSBzdXJnZXJ5LiIsCiAgICAgICAgICAgICJpZCI6ICIzMDAyNzgxMS0xZGRiLTQxMzUtYmI5NC0zYTY4YWFlMTQ5MWMiLAogICAgICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTI6MjMuOTI2WiIKICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJhY3Rpdml0aWVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVXBsb2FkZWQgWC1SYXkgcmVwb3J0LiIsCiAgICAgICAgICAgICJpZCI6ICJhN2EzMjU3OS1kN2MzLTQ1ZWYtOGI1Zi04ZWFjOTk2ZGI1OTkiLAogICAgICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTQ6MjcuNTE2WiIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVcGxvYWRlZCBYLVJheSByZXBvcnQuIiwKICAgICAgICAgICAgImlkIjogImE3YTMyNTc5LWQ3YzMtNDVlZi04YjVmLThlYWM5OTZkYjU5OSIsCiAgICAgICAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxNDoyNy41MTZaIgogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgIm5vdGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAiY29tbWVudCI6ICJDbGllbnQgaXMgYXQgcmlzayBvZiBiZWluZyBub24tYWRoZXJlbnQgdG8gbWVkaWNhdGlvbnMgYW5kIG90aGVyIGFwcG9pbnRtZW50cy4gQ2xpZW50IG5lZWRzIHJlbWluZGVycyB0byBhc3Npc3Qgd2l0aCBrZWVwaW5nIGFwcG9pbnRtZW50cy4iLAogICAgICAgICAgICAiaWQiOiAibjdhNDI1NzktZDdjMy00NWVmLThiNWYtOGVhYzk5NmRiNTk5IiwKICAgICAgICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjE0OjI3LjUxNloiCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAiY29tbWVudCI6ICJDbGllbnQgaXMgYXQgcmlzayBvZiBiZWluZyBub24tYWRoZXJlbnQgdG8gbWVkaWNhdGlvbnMgYW5kIG90aGVyIGFwcG9pbnRtZW50cy4gQ2xpZW50IG5lZWRzIHJlbWluZGVycyB0byBhc3Npc3Qgd2l0aCBrZWVwaW5nIGFwcG9pbnRtZW50cy4iLAogICAgICAgICAgICAiaWQiOiAibjdhNDI1NzktZDdjMy00NWVmLThiNWYtOGVhYzk5NmRiNTk5IiwKICAgICAgICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjE0OjI3LjUxNloiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9CiAgICBdCiAgfQpdCmBgYAoKCioqKlN0YXR1cyBDb2RlOioqKiAyMDAKCjxicj4KCgoKIyMjIyBJSS4gRXhhbXBsZSBSZXF1ZXN0OiBJbnZhbGlkIHJlcXVlc3QuIFBsZWFzZSBmaWxsIHRoZSByZXF1aXJlZCBpbnB1dC9pbnB1dHMuCgoKCioqKlF1ZXJ5OioqKgoKfCBLZXkgfCBWYWx1ZSB8IERlc2NyaXB0aW9uIHwKfCAtLS0gfCAtLS0tLS18LS0tLS0tLS0tLS0tLXwKfCBwYWdlIHwgMSB8ICB8CnwgcGVyUGFnZSB8IDEwIHwgIHwKCgoKKioqQm9keTogTm9uZSoqKgoKCgojIyMjIElJLiBFeGFtcGxlIFJlc3BvbnNlOiBJbnZhbGlkIHJlcXVlc3QuIFBsZWFzZSBmaWxsIHRoZSByZXF1aXJlZCBpbnB1dC9pbnB1dHMuCmBgYGpzCnsKICAic3RhdHVzQ29kZSI6IDQwMCwKICAiZGVzY3JpcHRpb24iOiAiSW52YWxpZCByZXF1ZXN0LiBQbGVhc2UgZmlsbCB0aGUgcmVxdWlyZWQgaW5wdXQvaW5wdXRzLiIKfQpgYGAKCgoqKipTdGF0dXMgQ29kZToqKiogNDAwCgo8YnI+CgoKCiMjIyMgSUlJLiBFeGFtcGxlIFJlcXVlc3Q6IEJhZCByZXF1ZXN0LiBDYW4ndCBmaW5kIHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2UuCgoKCioqKlF1ZXJ5OioqKgoKfCBLZXkgfCBWYWx1ZSB8IERlc2NyaXB0aW9uIHwKfCAtLS0gfCAtLS0tLS18LS0tLS0tLS0tLS0tLXwKfCBwYWdlIHwgMSB8ICB8CnwgcGVyUGFnZSB8IDEwIHwgIHwKCgoKKioqQm9keTogTm9uZSoqKgoKCgojIyMjIElJSS4gRXhhbXBsZSBSZXNwb25zZTogQmFkIHJlcXVlc3QuIENhbid0IGZpbmQgdGhlIHJlcXVlc3RlZCByZXNvdXJjZS4KYGBganMKewogICJzdGF0dXNDb2RlIjogNDA0LAogICJkZXNjcmlwdGlvbiI6ICJCYWQgcmVxdWVzdC4gQ2FuJ3QgZmluZCB0aGUgcmVxdWVzdGVkIHJlc291cmNlLiIKfQpgYGAKCgoqKipTdGF0dXMgQ29kZToqKiogNDA0Cgo8YnI+CgoKCiMjIyMgSVYuIEV4YW1wbGUgUmVxdWVzdDogSW50ZXJuYWwgc2VydmVyIGVycm9yLiBDYW4ndCBmdWxmaWxsIHRoZSByZXF1ZXN0LgoKCgoqKipRdWVyeToqKioKCnwgS2V5IHwgVmFsdWUgfCBEZXNjcmlwdGlvbiB8CnwgLS0tIHwgLS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgcGFnZSB8IDEgfCAgfAp8IHBlclBhZ2UgfCAxMCB8ICB8CgoKCioqKkJvZHk6IE5vbmUqKioKCgoKIyMjIyBJVi4gRXhhbXBsZSBSZXNwb25zZTogSW50ZXJuYWwgc2VydmVyIGVycm9yLiBDYW4ndCBmdWxmaWxsIHRoZSByZXF1ZXN0LgpgYGBqcwp7CiAgInN0YXR1c0NvZGUiOiA1MDAsCiAgImRlc2NyaXB0aW9uIjogIkludGVybmFsIHNlcnZlciBlcnJvci4gQ2FuJ3QgZnVsZmlsbCB0aGUgcmVxdWVzdC4iCn0KYGBgCgoKKioqU3RhdHVzIENvZGU6KioqIDUwMAoKPGJyPgoKCgojIyBjYXNlcwoKCgojIyMgMS4ge2Nhc2VJZH0KCgoKKioqRW5kcG9pbnQ6KioqCgpgYGBiYXNoCk1ldGhvZDogClR5cGU6IApVUkw6IApgYGAKCgoKIyMjIDIuIENyZWF0ZSBhIGNhc2UuCgoKQ3JlYXRlIGEgbmV3IGNhc2UgdXNpbmcgdGhlIGlucHV0IHByb3ZpZGVkIGFuZCBhZGQgaXQgdG8gdGhlIHN5c3RlbS4KCgoqKipFbmRwb2ludDoqKioKCmBgYGJhc2gKTWV0aG9kOiBQT1NUClR5cGU6IFJBVwpVUkw6IHt7YmFzZVVybH19L2Nhc2VzCmBgYAoKCioqKkhlYWRlcnM6KioqCgp8IEtleSB8IFZhbHVlIHwgRGVzY3JpcHRpb24gfAp8IC0tLSB8IC0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8IENvbnRlbnQtVHlwZSB8IGFwcGxpY2F0aW9uL2pzb24gfCAgfAp8IEFjY2VwdCB8IGFwcGxpY2F0aW9uL2pzb24gfCAgfAoKCgoqKipCb2R5OioqKgoKYGBganMgICAgICAgIAp7CiAgInN0YXR1cyI6ICJBY3RpdmUiLAogICJjYXRlZ29yeSI6ICJFeWUiLAogICJzZXZlcml0eSI6ICIwLUNyaXRpY2FsIEltcGFjdCIsCiAgInN1YmplY3QiOiAiT3BlcmF0aW9uIGZvbGxvdy11cCIsCiAgInBhdGllbnREZXRhaWwiOiB7CiAgICAiZmlyc3ROYW1lIjogIk1hdHQiLAogICAgImxhc3ROYW1lIjogIlR1cm5lciIsCiAgICAidXNlck5hbWUiOiAibWF0dHR1cm5lcjEwIiwKICAgICJwaG9uZSI6IDk0NTI4Nzc2NjIsCiAgICAiZW1haWwiOiAibWF0dHR1cm5lckBnbWFpbC5jb20iLAogICAgImlkIjogIjQ2MDA1YTgyLWE2MTItNGRjMS05Mjc5LTcyMTVkZjY4OTVjZCIKICB9LAogICJzb2x1dGlvbiI6IHsKICAgICJzb2x1dGlvblN1YmplY3QiOiAiT3BlcmF0ZSBleWUgZGlzZWFzZS4iLAogICAgImludmVzdGlnYXRpb24iOiAiRGlzZWFzZXMgb24gdGhlIGxlZnQgZXllIGFuZCBhYm5vcm1hbCBleWUgZGV2ZWxvcG1lbnQgYW5kIGZ1bmN0aW9uLiIsCiAgICAicmVzb2x1dGlvbiI6ICJTdWNjZXNzZnVsbHkgb3BlcmF0ZSBvbiBkaXNlYXNlIG9uIHRoZSBsZWZ0IGV5ZSBhbmQgbm9ybWFsIGV5ZSBkZXZlbG9wbWVudCBhbmQgZnVuY3Rpb24uIgogIH0sCiAgImNhc2VJZCI6ICIzNjAwNWE4Mi1hNjEyLTRkYzEtOTI3OS03MjE1ZGY2ODk1Y2QiLAogICJjcmVhdGVkQXQiOiAiMjAyMS0wMy0zMFQwODozMDowMFoiLAogICJtb2RpZmllZEF0IjogIjIwMjEtMDQtMjhUMDg6MzA6MDBaIiwKICAiYXNzaWduZWRUbyI6IHsKICAgICJmaXJzdE5hbWUiOiAiS2F0aGVyaW5lIiwKICAgICJsYXN0TmFtZSI6ICJNYXJzaGFsbCIsCiAgICAicGhvbmUiOiA4NDUyODc3NjY1LAogICAgImVtYWlsIjogImthdGhtYXJzaGFsbEBobS5pbyIsCiAgICAiaWQiOiAiMjYwMDVhODItYTYxMi00ZGMxLTkyNzktNzIxNWRmNjg5NWNkIiwKICAgICJhc3NpZ25lZE9uIjogIjIwMjEtMDMtMzBUMDg6MzA6MDBaIiwKICAgICJwcm9mZXNzaW9uIjogIk9waHRoYWxtb2xvZ2lzdHMiCiAgfSwKICAibWlsZXN0b25lcyI6IFsKICAgIHsKICAgICAgImRlc2NyaXB0aW9uIjogIkhvbWUgdGhlcmFweSBmb3IgbGVmdCBleWUgYmVmb3JlIHN1cmdlcnkuIiwKICAgICAgImlkIjogIjMwMDI3ODExLTFkZGItNDEzNS1iYjk0LTNhNjhhYWUxNDkxYyIsCiAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxMjoyMy45MjZaIgogICAgfSwKICAgIHsKICAgICAgImRlc2NyaXB0aW9uIjogIkhvbWUgdGhlcmFweSBmb3IgbGVmdCBleWUgYmVmb3JlIHN1cmdlcnkuIiwKICAgICAgImlkIjogIjMwMDI3ODExLTFkZGItNDEzNS1iYjk0LTNhNjhhYWUxNDkxYyIsCiAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxMjoyMy45MjZaIgogICAgfQogIF0sCiAgImFjdGl2aXRpZXMiOiBbCiAgICB7CiAgICAgICJkZXNjcmlwdGlvbiI6ICJVcGxvYWRlZCBYLVJheSByZXBvcnQuIiwKICAgICAgImlkIjogImE3YTMyNTc5LWQ3YzMtNDVlZi04YjVmLThlYWM5OTZkYjU5OSIsCiAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxNDoyNy41MTZaIgogICAgfSwKICAgIHsKICAgICAgImRlc2NyaXB0aW9uIjogIlVwbG9hZGVkIFgtUmF5IHJlcG9ydC4iLAogICAgICAiaWQiOiAiYTdhMzI1NzktZDdjMy00NWVmLThiNWYtOGVhYzk5NmRiNTk5IiwKICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjE0OjI3LjUxNloiCiAgICB9CiAgXSwKICAibm90ZXMiOiBbCiAgICB7CiAgICAgICJjb21tZW50IjogIkNsaWVudCBpcyBhdCByaXNrIG9mIGJlaW5nIG5vbi1hZGhlcmVudCB0byBtZWRpY2F0aW9ucyBhbmQgb3RoZXIgYXBwb2ludG1lbnRzLiBDbGllbnQgbmVlZHMgcmVtaW5kZXJzIHRvIGFzc2lzdCB3aXRoIGtlZXBpbmcgYXBwb2ludG1lbnRzLiIsCiAgICAgICJpZCI6ICJuN2E0MjU3OS1kN2MzLTQ1ZWYtOGI1Zi04ZWFjOTk2ZGI1OTkiLAogICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTQ6MjcuNTE2WiIKICAgIH0sCiAgICB7CiAgICAgICJjb21tZW50IjogIkNsaWVudCBpcyBhdCByaXNrIG9mIGJlaW5nIG5vbi1hZGhlcmVudCB0byBtZWRpY2F0aW9ucyBhbmQgb3RoZXIgYXBwb2ludG1lbnRzLiBDbGllbnQgbmVlZHMgcmVtaW5kZXJzIHRvIGFzc2lzdCB3aXRoIGtlZXBpbmcgYXBwb2ludG1lbnRzLiIsCiAgICAgICJpZCI6ICJuN2E0MjU3OS1kN2MzLTQ1ZWYtOGI1Zi04ZWFjOTk2ZGI1OTkiLAogICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTQ6MjcuNTE2WiIKICAgIH0KICBdCn0KYGBgCgoKCioqKk1vcmUgZXhhbXBsZSBSZXF1ZXN0cy9SZXNwb25zZXM6KioqCgoKIyMjIyBJLiBFeGFtcGxlIFJlcXVlc3Q6IFN1Y2Nlc3NmdWxseSBjcmVhdGVkIGNhc2UuCgoKCioqKkJvZHk6KioqCgpgYGBqcyAgICAgICAgCnsKICAic3RhdHVzIjogIkFjdGl2ZSIsCiAgImNhdGVnb3J5IjogIkV5ZSIsCiAgInNldmVyaXR5IjogIjAtQ3JpdGljYWwgSW1wYWN0IiwKICAic3ViamVjdCI6ICJPcGVyYXRpb24gZm9sbG93LXVwIiwKICAicGF0aWVudERldGFpbCI6IHsKICAgICJmaXJzdE5hbWUiOiAiTWF0dCIsCiAgICAibGFzdE5hbWUiOiAiVHVybmVyIiwKICAgICJ1c2VyTmFtZSI6ICJtYXR0dHVybmVyMTAiLAogICAgInBob25lIjogOTQ1Mjg3NzY2MiwKICAgICJlbWFpbCI6ICJtYXR0dHVybmVyQGdtYWlsLmNvbSIsCiAgICAiaWQiOiAiNDYwMDVhODItYTYxMi00ZGMxLTkyNzktNzIxNWRmNjg5NWNkIgogIH0sCiAgInNvbHV0aW9uIjogewogICAgInNvbHV0aW9uU3ViamVjdCI6ICJPcGVyYXRlIGV5ZSBkaXNlYXNlLiIsCiAgICAiaW52ZXN0aWdhdGlvbiI6ICJEaXNlYXNlcyBvbiB0aGUgbGVmdCBleWUgYW5kIGFibm9ybWFsIGV5ZSBkZXZlbG9wbWVudCBhbmQgZnVuY3Rpb24uIiwKICAgICJyZXNvbHV0aW9uIjogIlN1Y2Nlc3NmdWxseSBvcGVyYXRlIG9uIGRpc2Vhc2Ugb24gdGhlIGxlZnQgZXllIGFuZCBub3JtYWwgZXllIGRldmVsb3BtZW50IGFuZCBmdW5jdGlvbi4iCiAgfSwKICAiY2FzZUlkIjogIjM2MDA1YTgyLWE2MTItNGRjMS05Mjc5LTcyMTVkZjY4OTVjZCIsCiAgImNyZWF0ZWRBdCI6ICIyMDIxLTAzLTMwVDA4OjMwOjAwWiIsCiAgIm1vZGlmaWVkQXQiOiAiMjAyMS0wNC0yOFQwODozMDowMFoiLAogICJhc3NpZ25lZFRvIjogewogICAgImZpcnN0TmFtZSI6ICJLYXRoZXJpbmUiLAogICAgImxhc3ROYW1lIjogIk1hcnNoYWxsIiwKICAgICJwaG9uZSI6IDg0NTI4Nzc2NjUsCiAgICAiZW1haWwiOiAia2F0aG1hcnNoYWxsQGhtLmlvIiwKICAgICJpZCI6ICIyNjAwNWE4Mi1hNjEyLTRkYzEtOTI3OS03MjE1ZGY2ODk1Y2QiLAogICAgImFzc2lnbmVkT24iOiAiMjAyMS0wMy0zMFQwODozMDowMFoiLAogICAgInByb2Zlc3Npb24iOiAiT3BodGhhbG1vbG9naXN0cyIKICB9LAogICJtaWxlc3RvbmVzIjogWwogICAgewogICAgICAiZGVzY3JpcHRpb24iOiAiSG9tZSB0aGVyYXB5IGZvciBsZWZ0IGV5ZSBiZWZvcmUgc3VyZ2VyeS4iLAogICAgICAiaWQiOiAiMzAwMjc4MTEtMWRkYi00MTM1LWJiOTQtM2E2OGFhZTE0OTFjIiwKICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjEyOjIzLjkyNloiCiAgICB9LAogICAgewogICAgICAiZGVzY3JpcHRpb24iOiAiSG9tZSB0aGVyYXB5IGZvciBsZWZ0IGV5ZSBiZWZvcmUgc3VyZ2VyeS4iLAogICAgICAiaWQiOiAiMzAwMjc4MTEtMWRkYi00MTM1LWJiOTQtM2E2OGFhZTE0OTFjIiwKICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjEyOjIzLjkyNloiCiAgICB9CiAgXSwKICAiYWN0aXZpdGllcyI6IFsKICAgIHsKICAgICAgImRlc2NyaXB0aW9uIjogIlVwbG9hZGVkIFgtUmF5IHJlcG9ydC4iLAogICAgICAiaWQiOiAiYTdhMzI1NzktZDdjMy00NWVmLThiNWYtOGVhYzk5NmRiNTk5IiwKICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjE0OjI3LjUxNloiCiAgICB9LAogICAgewogICAgICAiZGVzY3JpcHRpb24iOiAiVXBsb2FkZWQgWC1SYXkgcmVwb3J0LiIsCiAgICAgICJpZCI6ICJhN2EzMjU3OS1kN2MzLTQ1ZWYtOGI1Zi04ZWFjOTk2ZGI1OTkiLAogICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTQ6MjcuNTE2WiIKICAgIH0KICBdLAogICJub3RlcyI6IFsKICAgIHsKICAgICAgImNvbW1lbnQiOiAiQ2xpZW50IGlzIGF0IHJpc2sgb2YgYmVpbmcgbm9uLWFkaGVyZW50IHRvIG1lZGljYXRpb25zIGFuZCBvdGhlciBhcHBvaW50bWVudHMuIENsaWVudCBuZWVkcyByZW1pbmRlcnMgdG8gYXNzaXN0IHdpdGgga2VlcGluZyBhcHBvaW50bWVudHMuIiwKICAgICAgImlkIjogIm43YTQyNTc5LWQ3YzMtNDVlZi04YjVmLThlYWM5OTZkYjU5OSIsCiAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxNDoyNy41MTZaIgogICAgfSwKICAgIHsKICAgICAgImNvbW1lbnQiOiAiQ2xpZW50IGlzIGF0IHJpc2sgb2YgYmVpbmcgbm9uLWFkaGVyZW50IHRvIG1lZGljYXRpb25zIGFuZCBvdGhlciBhcHBvaW50bWVudHMuIENsaWVudCBuZWVkcyByZW1pbmRlcnMgdG8gYXNzaXN0IHdpdGgga2VlcGluZyBhcHBvaW50bWVudHMuIiwKICAgICAgImlkIjogIm43YTQyNTc5LWQ3YzMtNDVlZi04YjVmLThlYWM5OTZkYjU5OSIsCiAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxNDoyNy41MTZaIgogICAgfQogIF0KfQpgYGAKCgoKIyMjIyBJLiBFeGFtcGxlIFJlc3BvbnNlOiBTdWNjZXNzZnVsbHkgY3JlYXRlZCBjYXNlLgpgYGBqcwp7CiAgInN0YXR1cyI6ICJBY3RpdmUiLAogICJjYXRlZ29yeSI6ICJFeWUiLAogICJzZXZlcml0eSI6ICIwLUNyaXRpY2FsIEltcGFjdCIsCiAgInN1YmplY3QiOiAiT3BlcmF0aW9uIGZvbGxvdy11cCIsCiAgInBhdGllbnREZXRhaWwiOiB7CiAgICAiZmlyc3ROYW1lIjogIk1hdHQiLAogICAgImxhc3ROYW1lIjogIlR1cm5lciIsCiAgICAidXNlck5hbWUiOiAibWF0dHR1cm5lcjEwIiwKICAgICJwaG9uZSI6IDk0NTI4Nzc2NjIsCiAgICAiZW1haWwiOiAibWF0dHR1cm5lckBnbWFpbC5jb20iLAogICAgImlkIjogIjQ2MDA1YTgyLWE2MTItNGRjMS05Mjc5LTcyMTVkZjY4OTVjZCIKICB9LAogICJzb2x1dGlvbiI6IHsKICAgICJzb2x1dGlvblN1YmplY3QiOiAiT3BlcmF0ZSBleWUgZGlzZWFzZS4iLAogICAgImludmVzdGlnYXRpb24iOiAiRGlzZWFzZXMgb24gdGhlIGxlZnQgZXllIGFuZCBhYm5vcm1hbCBleWUgZGV2ZWxvcG1lbnQgYW5kIGZ1bmN0aW9uLiIsCiAgICAicmVzb2x1dGlvbiI6ICJTdWNjZXNzZnVsbHkgb3BlcmF0ZSBvbiBkaXNlYXNlIG9uIHRoZSBsZWZ0IGV5ZSBhbmQgbm9ybWFsIGV5ZSBkZXZlbG9wbWVudCBhbmQgZnVuY3Rpb24uIgogIH0sCiAgImNhc2VJZCI6ICIzNjAwNWE4Mi1hNjEyLTRkYzEtOTI3OS03MjE1ZGY2ODk1Y2QiLAogICJjcmVhdGVkQXQiOiAiMjAyMS0wMy0zMFQwODozMDowMFoiLAogICJtb2RpZmllZEF0IjogIjIwMjEtMDQtMjhUMDg6MzA6MDBaIgp9CmBgYAoKCioqKlN0YXR1cyBDb2RlOioqKiAyMDEKCjxicj4KCgoKIyMjIyBJSS4gRXhhbXBsZSBSZXF1ZXN0OiBJbnZhbGlkIHJlcXVlc3QuIFBsZWFzZSBmaWxsIHRoZSByZXF1aXJlZCBpbnB1dC9pbnB1dHMuCgoKCioqKkJvZHk6IE5vbmUqKioKCgoKIyMjIyBJSS4gRXhhbXBsZSBSZXNwb25zZTogSW52YWxpZCByZXF1ZXN0LiBQbGVhc2UgZmlsbCB0aGUgcmVxdWlyZWQgaW5wdXQvaW5wdXRzLgpgYGBqcwp7CiAgInN0YXR1c0NvZGUiOiA0MDAsCiAgImRlc2NyaXB0aW9uIjogIkludmFsaWQgcmVxdWVzdC4gUGxlYXNlIGZpbGwgdGhlIHJlcXVpcmVkIGlucHV0L2lucHV0cy4iCn0KYGBgCgoKKioqU3RhdHVzIENvZGU6KioqIDQwMAoKPGJyPgoKCgojIyMjIElJSS4gRXhhbXBsZSBSZXF1ZXN0OiBCYWQgcmVxdWVzdC4gQ2FuJ3QgZmluZCB0aGUgcmVxdWVzdGVkIHJlc291cmNlLgoKCgoqKipCb2R5OiBOb25lKioqCgoKCiMjIyMgSUlJLiBFeGFtcGxlIFJlc3BvbnNlOiBCYWQgcmVxdWVzdC4gQ2FuJ3QgZmluZCB0aGUgcmVxdWVzdGVkIHJlc291cmNlLgpgYGBqcwp7CiAgInN0YXR1c0NvZGUiOiA0MDQsCiAgImRlc2NyaXB0aW9uIjogIkJhZCByZXF1ZXN0LiBDYW4ndCBmaW5kIHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2UuIgp9CmBgYAoKCioqKlN0YXR1cyBDb2RlOioqKiA0MDQKCjxicj4KCgoKIyMjIyBJVi4gRXhhbXBsZSBSZXF1ZXN0OiBJbnRlcm5hbCBzZXJ2ZXIgZXJyb3IuIENhbid0IGZ1bGZpbGwgdGhlIHJlcXVlc3QuCgoKCioqKkJvZHk6IE5vbmUqKioKCgoKIyMjIyBJVi4gRXhhbXBsZSBSZXNwb25zZTogSW50ZXJuYWwgc2VydmVyIGVycm9yLiBDYW4ndCBmdWxmaWxsIHRoZSByZXF1ZXN0LgpgYGBqcwp7CiAgInN0YXR1c0NvZGUiOiA1MDAsCiAgImRlc2NyaXB0aW9uIjogIkludGVybmFsIHNlcnZlciBlcnJvci4gQ2FuJ3QgZnVsZmlsbCB0aGUgcmVxdWVzdC4iCn0KYGBgCgoKKioqU3RhdHVzIENvZGU6KioqIDUwMAoKPGJyPgoKCgojIyMgMy4gRmluZCBhbGwgY2FzZXMuCgoKR2V0IGFsbCB0aGUgY2FzZXMgcmVjb3JkZWQgaW4gdGhlIHN5c3RlbS4KCgoqKipFbmRwb2ludDoqKioKCmBgYGJhc2gKTWV0aG9kOiBHRVQKVHlwZTogClVSTDoge3tiYXNlVXJsfX0vY2FzZXMKYGBgCgoKKioqSGVhZGVyczoqKioKCnwgS2V5IHwgVmFsdWUgfCBEZXNjcmlwdGlvbiB8CnwgLS0tIHwgLS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgQWNjZXB0IHwgYXBwbGljYXRpb24vanNvbiB8ICB8CgoKCioqKk1vcmUgZXhhbXBsZSBSZXF1ZXN0cy9SZXNwb25zZXM6KioqCgoKIyMjIyBJLiBFeGFtcGxlIFJlcXVlc3Q6IFN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgYWxsIHRoZSBjYXNlcy4KCgoKKioqQm9keTogTm9uZSoqKgoKCgojIyMjIEkuIEV4YW1wbGUgUmVzcG9uc2U6IFN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgYWxsIHRoZSBjYXNlcy4KYGBganMKWwogIHsKICAgICJzdGF0dXMiOiAiQWN0aXZlIiwKICAgICJjYXRlZ29yeSI6ICJFeWUiLAogICAgInNldmVyaXR5IjogIjAtQ3JpdGljYWwgSW1wYWN0IiwKICAgICJzdWJqZWN0IjogIk9wZXJhdGlvbiBmb2xsb3ctdXAiLAogICAgInBhdGllbnREZXRhaWwiOiB7CiAgICAgICJmaXJzdE5hbWUiOiAiTWF0dCIsCiAgICAgICJsYXN0TmFtZSI6ICJUdXJuZXIiLAogICAgICAidXNlck5hbWUiOiAibWF0dHR1cm5lcjEwIiwKICAgICAgInBob25lIjogOTQ1Mjg3NzY2MiwKICAgICAgImVtYWlsIjogIm1hdHR0dXJuZXJAZ21haWwuY29tIiwKICAgICAgImlkIjogIjQ2MDA1YTgyLWE2MTItNGRjMS05Mjc5LTcyMTVkZjY4OTVjZCIKICAgIH0sCiAgICAic29sdXRpb24iOiB7CiAgICAgICJzb2x1dGlvblN1YmplY3QiOiAiT3BlcmF0ZSBleWUgZGlzZWFzZS4iLAogICAgICAiaW52ZXN0aWdhdGlvbiI6ICJEaXNlYXNlcyBvbiB0aGUgbGVmdCBleWUgYW5kIGFibm9ybWFsIGV5ZSBkZXZlbG9wbWVudCBhbmQgZnVuY3Rpb24uIiwKICAgICAgInJlc29sdXRpb24iOiAiU3VjY2Vzc2Z1bGx5IG9wZXJhdGUgb24gZGlzZWFzZSBvbiB0aGUgbGVmdCBleWUgYW5kIG5vcm1hbCBleWUgZGV2ZWxvcG1lbnQgYW5kIGZ1bmN0aW9uLiIKICAgIH0sCiAgICAiY2FzZUlkIjogIjM2MDA1YTgyLWE2MTItNGRjMS05Mjc5LTcyMTVkZjY4OTVjZCIsCiAgICAiY3JlYXRlZEF0IjogIjIwMjEtMDMtMzBUMDg6MzA6MDBaIiwKICAgICJtb2RpZmllZEF0IjogIjIwMjEtMDQtMjhUMDg6MzA6MDBaIiwKICAgICJhc3NpZ25lZFRvIjogewogICAgICAiZmlyc3ROYW1lIjogIkthdGhlcmluZSIsCiAgICAgICJsYXN0TmFtZSI6ICJNYXJzaGFsbCIsCiAgICAgICJwaG9uZSI6IDg0NTI4Nzc2NjUsCiAgICAgICJlbWFpbCI6ICJrYXRobWFyc2hhbGxAaG0uaW8iLAogICAgICAiaWQiOiAiMjYwMDVhODItYTYxMi00ZGMxLTkyNzktNzIxNWRmNjg5NWNkIiwKICAgICAgImFzc2lnbmVkT24iOiAiMjAyMS0wMy0zMFQwODozMDowMFoiLAogICAgICAicHJvZmVzc2lvbiI6ICJPcGh0aGFsbW9sb2dpc3RzIgogICAgfSwKICAgICJtaWxlc3RvbmVzIjogWwogICAgICB7CiAgICAgICAgImRlc2NyaXB0aW9uIjogIkhvbWUgdGhlcmFweSBmb3IgbGVmdCBleWUgYmVmb3JlIHN1cmdlcnkuIiwKICAgICAgICAiaWQiOiAiMzAwMjc4MTEtMWRkYi00MTM1LWJiOTQtM2E2OGFhZTE0OTFjIiwKICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTI6MjMuOTI2WiIKICAgICAgfSwKICAgICAgewogICAgICAgICJkZXNjcmlwdGlvbiI6ICJIb21lIHRoZXJhcHkgZm9yIGxlZnQgZXllIGJlZm9yZSBzdXJnZXJ5LiIsCiAgICAgICAgImlkIjogIjMwMDI3ODExLTFkZGItNDEzNS1iYjk0LTNhNjhhYWUxNDkxYyIsCiAgICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjEyOjIzLjkyNloiCiAgICAgIH0KICAgIF0sCiAgICAiYWN0aXZpdGllcyI6IFsKICAgICAgewogICAgICAgICJkZXNjcmlwdGlvbiI6ICJVcGxvYWRlZCBYLVJheSByZXBvcnQuIiwKICAgICAgICAiaWQiOiAiYTdhMzI1NzktZDdjMy00NWVmLThiNWYtOGVhYzk5NmRiNTk5IiwKICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTQ6MjcuNTE2WiIKICAgICAgfSwKICAgICAgewogICAgICAgICJkZXNjcmlwdGlvbiI6ICJVcGxvYWRlZCBYLVJheSByZXBvcnQuIiwKICAgICAgICAiaWQiOiAiYTdhMzI1NzktZDdjMy00NWVmLThiNWYtOGVhYzk5NmRiNTk5IiwKICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTQ6MjcuNTE2WiIKICAgICAgfQogICAgXSwKICAgICJub3RlcyI6IFsKICAgICAgewogICAgICAgICJjb21tZW50IjogIkNsaWVudCBpcyBhdCByaXNrIG9mIGJlaW5nIG5vbi1hZGhlcmVudCB0byBtZWRpY2F0aW9ucyBhbmQgb3RoZXIgYXBwb2ludG1lbnRzLiBDbGllbnQgbmVlZHMgcmVtaW5kZXJzIHRvIGFzc2lzdCB3aXRoIGtlZXBpbmcgYXBwb2ludG1lbnRzLiIsCiAgICAgICAgImlkIjogIm43YTQyNTc5LWQ3YzMtNDVlZi04YjVmLThlYWM5OTZkYjU5OSIsCiAgICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjE0OjI3LjUxNloiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiY29tbWVudCI6ICJDbGllbnQgaXMgYXQgcmlzayBvZiBiZWluZyBub24tYWRoZXJlbnQgdG8gbWVkaWNhdGlvbnMgYW5kIG90aGVyIGFwcG9pbnRtZW50cy4gQ2xpZW50IG5lZWRzIHJlbWluZGVycyB0byBhc3Npc3Qgd2l0aCBrZWVwaW5nIGFwcG9pbnRtZW50cy4iLAogICAgICAgICJpZCI6ICJuN2E0MjU3OS1kN2MzLTQ1ZWYtOGI1Zi04ZWFjOTk2ZGI1OTkiLAogICAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxNDoyNy41MTZaIgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAic3RhdHVzIjogIkFjdGl2ZSIsCiAgICAiY2F0ZWdvcnkiOiAiRXllIiwKICAgICJzZXZlcml0eSI6ICIwLUNyaXRpY2FsIEltcGFjdCIsCiAgICAic3ViamVjdCI6ICJPcGVyYXRpb24gZm9sbG93LXVwIiwKICAgICJwYXRpZW50RGV0YWlsIjogewogICAgICAiZmlyc3ROYW1lIjogIk1hdHQiLAogICAgICAibGFzdE5hbWUiOiAiVHVybmVyIiwKICAgICAgInVzZXJOYW1lIjogIm1hdHR0dXJuZXIxMCIsCiAgICAgICJwaG9uZSI6IDk0NTI4Nzc2NjIsCiAgICAgICJlbWFpbCI6ICJtYXR0dHVybmVyQGdtYWlsLmNvbSIsCiAgICAgICJpZCI6ICI0NjAwNWE4Mi1hNjEyLTRkYzEtOTI3OS03MjE1ZGY2ODk1Y2QiCiAgICB9LAogICAgInNvbHV0aW9uIjogewogICAgICAic29sdXRpb25TdWJqZWN0IjogIk9wZXJhdGUgZXllIGRpc2Vhc2UuIiwKICAgICAgImludmVzdGlnYXRpb24iOiAiRGlzZWFzZXMgb24gdGhlIGxlZnQgZXllIGFuZCBhYm5vcm1hbCBleWUgZGV2ZWxvcG1lbnQgYW5kIGZ1bmN0aW9uLiIsCiAgICAgICJyZXNvbHV0aW9uIjogIlN1Y2Nlc3NmdWxseSBvcGVyYXRlIG9uIGRpc2Vhc2Ugb24gdGhlIGxlZnQgZXllIGFuZCBub3JtYWwgZXllIGRldmVsb3BtZW50IGFuZCBmdW5jdGlvbi4iCiAgICB9LAogICAgImNhc2VJZCI6ICIzNjAwNWE4Mi1hNjEyLTRkYzEtOTI3OS03MjE1ZGY2ODk1Y2QiLAogICAgImNyZWF0ZWRBdCI6ICIyMDIxLTAzLTMwVDA4OjMwOjAwWiIsCiAgICAibW9kaWZpZWRBdCI6ICIyMDIxLTA0LTI4VDA4OjMwOjAwWiIsCiAgICAiYXNzaWduZWRUbyI6IHsKICAgICAgImZpcnN0TmFtZSI6ICJLYXRoZXJpbmUiLAogICAgICAibGFzdE5hbWUiOiAiTWFyc2hhbGwiLAogICAgICAicGhvbmUiOiA4NDUyODc3NjY1LAogICAgICAiZW1haWwiOiAia2F0aG1hcnNoYWxsQGhtLmlvIiwKICAgICAgImlkIjogIjI2MDA1YTgyLWE2MTItNGRjMS05Mjc5LTcyMTVkZjY4OTVjZCIsCiAgICAgICJhc3NpZ25lZE9uIjogIjIwMjEtMDMtMzBUMDg6MzA6MDBaIiwKICAgICAgInByb2Zlc3Npb24iOiAiT3BodGhhbG1vbG9naXN0cyIKICAgIH0sCiAgICAibWlsZXN0b25lcyI6IFsKICAgICAgewogICAgICAgICJkZXNjcmlwdGlvbiI6ICJIb21lIHRoZXJhcHkgZm9yIGxlZnQgZXllIGJlZm9yZSBzdXJnZXJ5LiIsCiAgICAgICAgImlkIjogIjMwMDI3ODExLTFkZGItNDEzNS1iYjk0LTNhNjhhYWUxNDkxYyIsCiAgICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjEyOjIzLjkyNloiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiZGVzY3JpcHRpb24iOiAiSG9tZSB0aGVyYXB5IGZvciBsZWZ0IGV5ZSBiZWZvcmUgc3VyZ2VyeS4iLAogICAgICAgICJpZCI6ICIzMDAyNzgxMS0xZGRiLTQxMzUtYmI5NC0zYTY4YWFlMTQ5MWMiLAogICAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxMjoyMy45MjZaIgogICAgICB9CiAgICBdLAogICAgImFjdGl2aXRpZXMiOiBbCiAgICAgIHsKICAgICAgICAiZGVzY3JpcHRpb24iOiAiVXBsb2FkZWQgWC1SYXkgcmVwb3J0LiIsCiAgICAgICAgImlkIjogImE3YTMyNTc5LWQ3YzMtNDVlZi04YjVmLThlYWM5OTZkYjU5OSIsCiAgICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjE0OjI3LjUxNloiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiZGVzY3JpcHRpb24iOiAiVXBsb2FkZWQgWC1SYXkgcmVwb3J0LiIsCiAgICAgICAgImlkIjogImE3YTMyNTc5LWQ3YzMtNDVlZi04YjVmLThlYWM5OTZkYjU5OSIsCiAgICAgICAgImNyZWF0ZWRBdCI6ICIyMDIyLTEwLTIxVDAxOjE0OjI3LjUxNloiCiAgICAgIH0KICAgIF0sCiAgICAibm90ZXMiOiBbCiAgICAgIHsKICAgICAgICAiY29tbWVudCI6ICJDbGllbnQgaXMgYXQgcmlzayBvZiBiZWluZyBub24tYWRoZXJlbnQgdG8gbWVkaWNhdGlvbnMgYW5kIG90aGVyIGFwcG9pbnRtZW50cy4gQ2xpZW50IG5lZWRzIHJlbWluZGVycyB0byBhc3Npc3Qgd2l0aCBrZWVwaW5nIGFwcG9pbnRtZW50cy4iLAogICAgICAgICJpZCI6ICJuN2E0MjU3OS1kN2MzLTQ1ZWYtOGI1Zi04ZWFjOTk2ZGI1OTkiLAogICAgICAgICJjcmVhdGVkQXQiOiAiMjAyMi0xMC0yMVQwMToxNDoyNy41MTZaIgogICAgICB9LAogICAgICB7CiAgICAgICAgImNvbW1lbnQiOiAiQ2xpZW50IGlzIGF0IHJpc2sgb2YgYmVpbmcgbm9uLWFkaGVyZW50IHRvIG1lZGljYXRpb25zIGFuZCBvdGhlciBhcHBvaW50bWVudHMuIENsaWVudCBuZWVkcyByZW1pbmRlcnMgdG8gYXNzaXN0IHdpdGgga2VlcGluZyBhcHBvaW50bWVudHMuIiwKICAgICAgICAiaWQiOiAibjdhNDI1NzktZDdjMy00NWVmLThiNWYtOGVhYzk5NmRiNTk5IiwKICAgICAgICAiY3JlYXRlZEF0IjogIjIwMjItMTAtMjFUMDE6MTQ6MjcuNTE2WiIKICAgICAgfQogICAgXQogIH0KXQpgYGAKCgoqKipTdGF0dXMgQ29kZToqKiogMjAwCgo8YnI+CgoKCiMjIyMgSUkuIEV4YW1wbGUgUmVxdWVzdDogSW52YWxpZCByZXF1ZXN0LiBQbGVhc2UgZmlsbCB0aGUgcmVxdWlyZWQgaW5wdXQvaW5wdXRzLgoKCgoqKipRdWVyeToqKioKCnwgS2V5IHwgVmFsdWUgfCBEZXNjcmlwdGlvbiB8CnwgLS0tIHwgLS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgcGFnZSB8IDEgfCAgfAp8IHBlclBhZ2UgfCAxMCB8ICB8CgoKCioqKkJvZHk6IE5vbmUqKioKCgoKIyMjIyBJSS4gRXhhbXBsZSBSZXNwb25zZTogSW52YWxpZCByZXF1ZXN0LiBQbGVhc2UgZmlsbCB0aGUgcmVxdWlyZWQgaW5wdXQvaW5wdXRzLgpgYGBqcwp7CiAgInN0YXR1c0NvZGUiOiA0MDAsCiAgImRlc2NyaXB0aW9uIjogIkludmFsaWQgcmVxdWVzdC4gUGxlYXNlIGZpbGwgdGhlIHJlcXVpcmVkIGlucHV0L2lucHV0cy4iCn0KYGBgCgoKKioqU3RhdHVzIENvZGU6KioqIDQwMAoKPGJyPgoKCgojIyMjIElJSS4gRXhhbXBsZSBSZXF1ZXN0OiBCYWQgcmVxdWVzdC4gQ2FuJ3QgZmluZCB0aGUgcmVxdWVzdGVkIHJlc291cmNlLgoKCgoqKipRdWVyeToqKioKCnwgS2V5IHwgVmFsdWUgfCBEZXNjcmlwdGlvbiB8CnwgLS0tIHwgLS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgcGFnZSB8IDEgfCAgfAp8IHBlclBhZ2UgfCAxMCB8ICB8CgoKCioqKkJvZHk6IE5vbmUqKioKCgoKIyMjIyBJSUkuIEV4YW1wbGUgUmVzcG9uc2U6IEJhZCByZXF1ZXN0LiBDYW4ndCBmaW5kIHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2UuCmBgYGpzCnsKICAic3RhdHVzQ29kZSI6IDQwNCwKICAiZGVzY3JpcHRpb24iOiAiQmFkIHJlcXVlc3QuIENhbid0IGZpbmQgdGhlIHJlcXVlc3RlZCByZXNvdXJjZS4iCn0KYGBgCgoKKioqU3RhdHVzIENvZGU6KioqIDQwNAoKPGJyPgoKCgojIyMjIElWLiBFeGFtcGxlIFJlcXVlc3Q6IEludGVybmFsIHNlcnZlciBlcnJvci4gQ2FuJ3QgZnVsZmlsbCB0aGUgcmVxdWVzdC4KCgoKKioqUXVlcnk6KioqCgp8IEtleSB8IFZhbHVlIHwgRGVzY3JpcHRpb24gfAp8IC0tLSB8IC0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8IHBhZ2UgfCAxIHwgIHwKfCBwZXJQYWdlIHwgMTAgfCAgfAoKCgoqKipCb2R5OiBOb25lKioqCgoKCiMjIyMgSVYuIEV4YW1wbGUgUmVzcG9uc2U6IEludGVybmFsIHNlcnZlciBlcnJvci4gQ2FuJ3QgZnVsZmlsbCB0aGUgcmVxdWVzdC4KYGBganMKewogICJzdGF0dXNDb2RlIjogNTAwLAogICJkZXNjcmlwdGlvbiI6ICJJbnRlcm5hbCBzZXJ2ZXIgZXJyb3IuIENhbid0IGZ1bGZpbGwgdGhlIHJlcXVlc3QuIgp9CmBgYAoKCioqKlN0YXR1cyBDb2RlOioqKiA1MDAKCjxicj4KCgoKLS0tCltCYWNrIHRvIHRvcF0oI2Nhc2UtbWFuYWdlcnMtYXBpLWNvbGxlY3Rpb24pCgo+R2VuZXJhdGVkIGF0IDIwMjItMTAtMzAgMjE6MTg6MjcgYnkgW2RvY2dlbl0oaHR0cHM6Ly9naXRodWIuY29tL3RoZWRldnNhZGRhbS9kb2NnZW4pCg== readmeEtag: '"f5c075ab712ab0be7c3dc60c331f5eaec3f074a6"' readmeLastModified: Mon, 31 Oct 2022 02:20:31 GMT repositoryId: 554357697 description: >- This is the design of a REST API in Postman that performs operation on case managers, cases, and related case notes, which is a part of the project CS 673 - Care Management and Co-ordination. created: '2022-10-19T17:19:00Z' updated: '2022-10-31T18:47:57Z' language: null archived: false stars: 1 watchers: 1 forks: 1 owner: Boro23-wq logo: https://avatars.githubusercontent.com/u/62204944?v=4 license: MIT repoEtag: '"87273b4b83db4ccbb1d5e47d49069c99799364dc59266c034a0f96c49a8f72dd"' repoLastModified: Mon, 31 Oct 2022 18:47:57 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/tdatit/tda-store-restful-api v3: true id: 2871f22095748321dac0e9d7f7cb5e80 repositoryMetadata: base64Readme: >- IyB0ZGEtc3RvcmUtcmVzdGZ1bC1hcGkKVERBIFdlYiBpcyBhbiBlLWNvbW1lcmNlIHdlYnNpdGUgYnVpbHQgb24gdGhlIFJFU1QgQVBJIGFyY2hpdGVjdHVyZSB1c2VkIGZvciByZWxhdGVkIFREQSBlLWNvbW1lcmNlIGFwcGxpY2F0aW9ucyBzdWNoIGFzIG1vYmlsZSBhbmQgd2ViIAojCjxoMj5UZWNoPC9oMj4KPHVsPiAKICA8bGk+SmF2YSAxMTwvbGk+CiAgPGxpPk15U1FMIC8gUG9zdGdyZVNRTDwvbGk+CiAgPGxpPlNwcmluZyBCb290PC9saT4KICA8bGk+U3ByaW5nIFdlYjwvbGk+CiAgPGxpPlNwcmluZyBTZWN1cml0eTwvbGk+CiAgPGxpPlNwcmluZyBEYXRhPC9saT4KICA8bGk+U3ByaW5nIEFPUDwvbGk+CiAgPGxpPlZhbGlkYXRvcjwvbGk+CiAgPGxpPkNsb3VkaW5hcnk8L2xpPgogIDxsaT5SYWJiaXRNUTwvbGk+CjwvdWw+CgoKIVtlcmRdKGh0dHBzOi8vZ2l0aHViLmNvbS90ZGF0SVQvdGRhLXN0b3JlLXJlc3RmdWwtYXBpL2Fzc2V0cy84NTAxODA2Mi9mZGY3YzhkZS01ODgzLTRlMzktYTdlNS1lOGE1NGU2NGM0NzQpCgoKPGg0PkRldmVsb3BtZW50IGJ5IFRyYW4gVGllbiBEYXQ8L2g0Pgo= readmeEtag: '"d1e6b2de5680aea1375d7c068f53bb11379d6e64"' readmeLastModified: Sat, 10 Jun 2023 09:21:12 GMT repositoryId: 619189905 description: Backend for mobile app (TDA Laptop) created: '2023-03-26T14:35:14Z' updated: '2024-01-15T11:21:35Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: tdatIT logo: https://avatars.githubusercontent.com/u/85018062?v=4 repoEtag: '"4507183a05745bc0e2ef01291b1276b425a8f3a1f370b2c27148b0d7d8eac37a"' repoLastModified: Mon, 15 Jan 2024 11:21:35 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/elomagic/yacog4openapi v3: true id: b068e391411b136805dc8897fb4e93f0 repositoryMetadata: base64Readme: >- IyBZYXN0IEFub3RoZXIgQ29kZSBHZW5lcmF0b3IgVG9vbCA0IE9wZW5BUEkKCkN1cnJlbnRseSwgcHJvdG90eXBlIHN0YXR1cwoKLS0tCgpbIVtHaXRIdWIgdGFnXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi90YWcvZWxvbWFnaWMveWFjb2c0b3BlbmFwaS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vZWxvbWFnaWMveWFjb2c0b3BlbmFwaS90YWdzLykKWyFbR2l0SHViIGlzc3Vlc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvaXNzdWVzLXJhdy9lbG9tYWdpYy95YWNvZzRvcGVuYXBpKV0oaHR0cHM6Ly9naXRodWIuY29tL2Vsb21hZ2ljL3lhY29nNG9wZW5hcGkvaXNzdWVzKQpbIVtBcGFjaGUgMi4wIGxpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQXBhY2hlLTIuMC1ibHVlLnN2ZyldKGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC1zdGFuZGFsb25lLmh0bWwpClshW21hZGUtd2l0aC1taWNyb3B5dGhvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9NYWRlJTIwd2l0aC1QeXRob24tMWY0MjVmLnN2ZyldKGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcpClshW01haW50ZW5hbmNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL01haW50YWluZWQlM0YteWVzLWdyZWVuLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9lbG9tYWdpYy95YWNvZzRvcGVuYXBpL2dyYXBocy9jb21taXQtYWN0aXZpdHkpClshW0J1eW1lYWNvZmZlZV0oaHR0cHM6Ly9iYWRnZW4ubmV0L2JhZGdlL2ljb24vYnV5bWVhY29mZmVlP2ljb249YnV5bWVhY29mZmVlJmxhYmVsKV0oaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9lbG9tYWdpYykKCiMjIFRhYmxlIG9mIENvbnRlbnRzCgotIFtXaGF0IGFib3V0P10oI3doYXQtYWJvdXQ/KQotIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCi0gW0NvbmZpZ3VyYXRpb25dKCNjb25maWd1cmF0aW9uKQotIFtVc2luZ10oI3VzaW5nKQotIFtDb250cmlidXRpb25dKCNjb250cmlidXRpb24pCgojIFdoYXQgQWJvdXQ/CgpUaGlzIHByb2plY3QgaXMgY3VycmVudGx5IGEgc21hbGwgcHJvdG90eXBlIHByb2plY3QgaG93IHRvIHJlYWQgYW4gT3BlbiBBUEkgZmlsZSBhbmQgdXNlIGEgdGVtcGxhdGUgZW5naW5lIGluIFB5dGhvbi4gCgojIEluc3RhbGxhdGlvbgoKQWxsIHJlcXVpcmVkIFB5dGhvbiBkZXBlbmRlbmNpZXMgYXJlIGRlY2xhcmVkIGluIHRoZSAqcmVxdWlyZW1lbnQudHh0KiBmaWxlIGFuZCBtdXN0IGJlIGluc3RhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgCmNvbW1hbmQgYnkgdXNpbmcgdGhlIFB5dGhvbiBwYWNrYWdlIG1hbmFnZXIgKlBpcCo6IAoKYGBgc2hlbGwKcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dApgYGAKCiMgQ29uZmlndXJhdGlvbgoKYGBganNvbjUKewogICAgImlucHV0IjogewogICAgICAgIC8vIERlZmF1bHQgT3BlbkFQSSBkZWZpbml0aW9uIGZpbGUKICAgICAgICAic291cmNlIjogIi4uL3Rlc3Qvb3BlbmFwaS5qc29uIgogICAgfSwgICAgCiAgICAvLyBUZW1wbGF0ZSB0byB1c2UKICAgICJ0ZW1wbGF0ZSI6ICJyZXNvdXJjZXMvZGVscGhpLXVuaXQuamluamEyIiwKICAgIC8vIEZpbGUgZ2VuZXJhdGVkIG91dHB1dAogICAgIm91dHB1dCI6ICIuLi9vdXQvdVJlc3RTZXJ2aWNlQ2xpZW50LnBhcyIsCiAgICAvLyBPcGVuIEFQSSBkYXRhdHlwZSBtYXBwaW5ncwogICAgImRhdGF0eXBlLW1hcCI6IHsKICAgICAgICAibnVtYmVyLGZsb2F0IjogICJTaW5nbGUiLAogICAgICAgICJudW1iZXIsZG91YmxlIjogIkRvdWJsZSIsCiAgICAgICAgIm51bWJlciwiOiAiU2luZ2xlIiwKCiAgICAgICAgImludGVnZXIsaW4zMiI6ICJJbnRlZ2VyIiwKICAgICAgICAiaW50ZWdlcixpbnQ2NCI6ICJJbnQ2NCIsCiAgICAgICAgImludGVnZXIsIjogIkludGVnZXIiLAoKICAgICAgICAic3RyaW5nLGJ5dGUiOiAiU3RyaW5nIiwKICAgICAgICAic3RyaW5nLGJpbmFyeSI6ICJTdHJpbmciLAogICAgICAgICJzdHJpbmcsIjogIlN0cmluZyIsCgogICAgICAgICJzdHJpbmcsZGF0ZSI6ICJURGF0ZSIsCiAgICAgICAgInN0cmluZyxkYXRlLXRpbWUiOiAiVERhdGVUaW1lIiwKCiAgICAgICAgInN0cmluZyx1dWlkIjogIlN0cmluZyIsCgogICAgICAgICJib29sZWFuLCI6ICJCb29sZWFuIgogICAgfQp9CmBgYAoKdGJjCgojIFVzaW5nCgojIyBDcmVhdGluZyBvdXRwdXQKCiMjIyBFeGFtcGxlCgpgYGBzaGVsbApzcmMvZ2VuY2xpZW50LnB5IC0tc291cmNlPXRlc3Qvb3BlbmFwaS5qc29uIC0tdGVtcGxhdGU9dGVzdC9kZWxwaGktdGVzdC1leGFtcGxlLmppbmphMiAtLW91dHB1dD10ZXN0LW91dHB1dC9kZWxwaGktdW5pdC5wYXMKYGBgCgojIyBTdXBwb3J0ZWQgcGFyYW1ldGVycwoKVG8gZ2V0IGFuIG92ZXJ2aWV3IG9mIHRoZSBzdXBwb3J0ZWQgcGFyYW1ldGVycywgZW50ZXIgdGhlIGZvbGxvd2luZyBjb21tYW5kIGluIHlvdXIgc2hlbGw6CgpgYGBzaGVsbApzcmMvZ2VuY2xpZW50LnB5IC0taGVscApgYGAKCnRiYwoKIyBDb250cmlidXRpb24KCnRiZA== readmeEtag: '"5449f612c93d25e8231a6291b08989be6f8dddd6"' readmeLastModified: Mon, 15 Aug 2022 09:30:44 GMT repositoryId: 523364744 description: Yast Another Code Generator Tool 4 Open API created: '2022-08-10T13:57:05Z' updated: '2024-01-19T10:28:57Z' language: Python archived: false stars: 1 watchers: 1 forks: 0 owner: elomagic logo: https://avatars.githubusercontent.com/u/2555557?v=4 license: Apache-2.0 repoEtag: '"47cd76afcee8cea6c6a77f35c2fa41c87fb011a48fe8691a32584fcebd2addc8"' repoLastModified: Fri, 19 Jan 2024 10:28:57 GMT category: Server Implementations foundInMaster: true - source: - openapi3 tags - openapi31 tags repository: https://github.com/bump-sh-examples/rails-code-first v3: true v3_1: true id: e9bd7b3601526c75c4e63226d8d34a13 repositoryMetadata: base64Readme: >- IyBSYWlscyBIZWxsbyBPcGVuQVBJCgpBIHF1aWNrICJIZWxsbyBXb3JsZCIgYnV0IGZvciBnZW5lcmF0aW5nIE9wZW5BUEksIHVzaW5nIHRoZSBSdWJ5IG9uIFJhaWxzIGV4dGVuc2lvbiBbUlN3YWddKGh0dHBzOi8vZ2l0aHViLmNvbS9yc3dhZy9yc3dhZy8pLgoKVGhpcyByZXBvc2l0b3J5IHdhcyBidWlsdCBhcyBzYW1wbGUgY29kZSBmb3IgdGhlIEJ1bXAuc2ggZ3VpZGUgb24gW0dlbmVyYXRpbmcgT3BlbkFQSSBkb2NzIGZvciBSdWJ5IG9uIFJhaWxzIHdpdGggUlN3YWddKGh0dHBzOi8vZG9jcy5idW1wLnNoL2d1aWRlcy9vcGVuYXBpL2NvZGUtZmlyc3QtcmFpbHMvKS4KCiMjIFVzYWdlCgpDbG9uZSB0aGUgcmVwb3NpdG9yeSBkb3duIHRvIGdpdmUgaXQgYSB0cnkuCgpgYGAKIyBTZXQgZXZlcnl0aGluZyB1cAokIGJ1bmRsZSBpbnN0YWxsCgojIEV4cG9ydCB0aGUgT3BlbkFQSQokIHJha2UgcnN3YWcKCiMgVGFrZSBhIGxvb2sgYXQgdGhlIGdlbmVyYXRlZCBPcGVuQVBJCmNhdCBzd2FnZ2VyL2FwaS9zd2FnZ2VyLnlhbWwKYGBgCgpQcmV2aWV3IHRoZSBBUEkgcmVmZXJlbmNlIGRvY3MgW29uIEJ1bXAuc2hdKGh0dHBzOi8vYnVtcC5zaC9idW1wLWV4YW1wbGVzL2h1Yi9jb2RlLXNhbXBsZXMvZG9jL3JhaWxzLWhlbGxvLW9wZW5hcGkpLgoKIyMgTGljZW5zZQoKVGhlIGNvbnRlbnRzIG9mIHRoaXMgcmVwb3NpdG9yeSBhcmUgbGljZW5zZWQgdW5kZXIgW0NDIEJZLU5DLVNBCiAgNC4wXSguL0xJQ0VOU0VfQ0MtQlktTkMtU0EtNC4wKS4K readmeEtag: '"2694988af4c3e6185be844cb4987decfa1b13f15"' readmeLastModified: Mon, 11 Mar 2024 16:05:51 GMT repositoryId: 737069913 description: Add OpenAPI powered documentation to your Rails API with RSwag. created: '2023-12-29T18:09:14Z' updated: '2024-02-27T16:17:23Z' language: Ruby archived: false stars: 1 watchers: 1 forks: 1 owner: bump-sh-examples logo: https://avatars.githubusercontent.com/u/157144805?v=4 license: NOASSERTION repoEtag: '"1fc2330cb1d209b387dd5dd8356bc2c642200d43d639ad830bfe81eab1f682fc"' repoLastModified: Tue, 27 Feb 2024 16:17:23 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/rakesh5777/oxytrack-turbo v3: true id: ab8d2cd37cb51948ff57c08e473c2da3 repositoryMetadata: base64Readme: >- IyBPeHlUcmFjayBUdXJibyBQcm9qZWN0CgpXZWxjb21lIHRvIHRoZSBPeHlUcmFjayBUdXJibyBwcm9qZWN0ISBUaGlzIG1vbm9yZXBvIGlzIGJ1aWx0IHdpdGggVHVyYm8gUmVwbywgdXRpbGl6aW5nIGEgcm9idXN0IHN0YWNrIHRoYXQgaW5jbHVkZXMgUHJpc21hLCBQb3N0Z3JlcywgRXhwcmVzcywgTm9kZS5qcywgUmVhY3QsIGFuZCBUeXBlU2NyaXB0IGFjcm9zcyBib3RoIHRoZSBmcm9udGVuZCBhbmQgYmFja2VuZCwgZW5zdXJpbmcgYSBzdHJvbmdseSB0eXBlZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KCiMjIEZlYXR1cmVzCgotICoqTW9ub3JlcG8gU3RydWN0dXJlKio6IE9yZ2FuaXplZCBpbnRvIGBhcHBzL2AgZm9yIGZyb250ZW5kL2JhY2tlbmQgYXBwbGljYXRpb25zIGFuZCBgcGFja2FnZXMvYCBmb3Igc2hhcmVkIGxvZ2ljIG9yIGNvbXBvbmVudHMuCi0gKipPcGVuQVBJIFNwZWNpZmljYXRpb24qKjogVXRpbGl6ZXMgT3BlbkFQSSBzcGVjIGFzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIEFQSSBkZXNpZ24sIHdpdGggYXV0by1nZW5lcmF0ZWQgVHlwZVNjcmlwdCBjbGllbnRzIHVzaW5nIGBvcGVuYXBpLXR5cGVzY3JpcHRgIGFuZCBgb3BlbmFwaS10eXBlc2NyaXB0LWF4aW9zYC4KLSAqKlN0cm9uZyBUeXBpbmcqKjogQm90aCBmcm9udGVuZCBhbmQgYmFja2VuZCBhcmUgZnVsbHkgdHlwZWQsIGVuaGFuY2luZyBkZXZlbG9wbWVudCBleHBlcmllbmNlIGFuZCBjb2RlIHF1YWxpdHkuCi0gKipEYXRhYmFzZSBGbGV4aWJpbGl0eSoqOiBTdXBwb3J0cyBsb2NhbCBQb3N0Z3JlcyBzZXR1cHMgYXMgd2VsbCBhcyBEb2NrZXItYmFzZWQgZW52aXJvbm1lbnRzIGZvciBlYXNlIG9mIGRldmVsb3BtZW50LgotICoqRGV2ZWxvcG1lbnQgV29ya2Zsb3cqKjogSW50ZWdyYXRlcyB0b29scyBsaWtlIFByZXR0aWVyLCBFU0xpbnQsIEh1c2t5LCBhbmQgbGludC1zdGFnZWQgZm9yIGNvZGUgZm9ybWF0dGluZyBhbmQgbGludGluZywgZW5zdXJpbmcgY29kZSBjb25zaXN0ZW5jeSBhbmQgcXVhbGl0eS4KCiMjIEdldHRpbmcgU3RhcnRlZAoKIyMjIFByZXJlcXVpc2l0ZXMKCi0gTm9kZS5qcyAodjE4IG9yIGhpZ2hlcikKLSBwbnBtICh2OC45LjApCi0gRG9ja2VyIChmb3IgcnVubmluZyBQb3N0Z3JlcyBpbiBhIGNvbnRhaW5lcikKCiMjIyBTZXR1cCBJbnN0cnVjdGlvbnMKCjEuICoqQ2xvbmUgdGhlIFJlcG9zaXRvcnkqKgoKICAgU3RhcnQgYnkgY2xvbmluZyB0aGlzIHJlcG9zaXRvcnkgdG8geW91ciBsb2NhbCBtYWNoaW5lLgoKMi4gKipFbnZpcm9ubWVudCBTZXR1cCoqCgogICBSZW5hbWUgYC5leGFtcGxlLmVudmAgdG8gYC5lbnZgIGluIGJvdGggYGFwcHMvYmFja2VuZGAgYW5kIGBwYWNrYWdlcy9kYXRhYmFzZWAuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgY29uZmlndXJpbmcgeW91ciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgY29ycmVjdGx5LgoKMy4gKipEYXRhYmFzZSBDb25maWd1cmF0aW9uKioKCiAgIEVuc3VyZSB5b3UgaGF2ZSBhIHJ1bm5pbmcgUG9zdGdyZXMgZGF0YWJhc2UuIFlvdSBjYW4gdXNlIERvY2tlciBhcyBtZW50aW9uZWQgaW4gdGhlIHNjcmlwdHMgc2VjdGlvbiBvciBzZXQgdXAgYSBsb2NhbCBpbnN0YW5jZS4KCjQuICoqSW5zdGFsbCBEZXBlbmRlbmNpZXMqKgoKICAgUnVuIGBwbnBtIGluc3RhbGxgIHRvIGluc3RhbGwgYWxsIHJlcXVpcmVkIGRlcGVuZGVuY2llcyBhY3Jvc3MgdGhlIG1vbm9yZXBvLgoKNS4gKipTdGFydCBEZXZlbG9wbWVudCBTZXJ2ZXIqKgoKICAgVG8gc3RhcnQgdGhlIGRldmVsb3BtZW50IHNlcnZlciwgcnVuIGB0dXJibyBydW4gZGV2YC4KCiMjIFVzZWZ1bCBTY3JpcHRzCgpEZWZpbmVkIHdpdGhpbiB0aGUgYHR1cmJvLmpzb25gIHBpcGVsaW5lLCB0aGVzZSBjb21tYW5kcyBhcmUga2V5IHRvIHRoZSBwcm9qZWN0J3MgZGV2ZWxvcG1lbnQgYW5kIGRlcGxveW1lbnQgcHJvY2Vzc2VzOgoKLSAqKlByaXNtYSBDb21tYW5kcyoqOgoKICAtIGB0dXJibyBydW4gZGI6Z2VuZXJhdGVgOiBHZW5lcmF0ZXMgUHJpc21hIGNsaWVudCBhcnRpZmFjdHMsIGVzc2VudGlhbCBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB5b3VyIGRhdGFiYXNlIGluIGEgdHlwZS1zYWZlIG1hbm5lci4KICAtIGB0dXJibyBydW4gZGI6cHVzaGA6IFVwZGF0ZXMgdGhlIGRhdGFiYXNlIHNjaGVtYSBkdXJpbmcgZGV2ZWxvcG1lbnQgd2l0aG91dCBhcHBseWluZyBtaWdyYXRpb25zLCB1c2VmdWwgZm9yIHF1aWNrIGl0ZXJhdGlvbnMuCiAgLSBgdHVyYm8gcnVuIGRiOm1pZ3JhdGVgOiBBcHBsaWVzIGRhdGFiYXNlIG1pZ3JhdGlvbnMsIGVuc3VyaW5nIHlvdXIgZGF0YWJhc2Ugc2NoZW1hIG1hdGNoZXMgeW91ciBQcmlzbWEgc2NoZW1hLgoKLSAqKkFQSSBDb250cmFjdCBhbmQgQ2xpZW50IEdlbmVyYXRpb24qKjoKCiAgLSBgdHVyYm8gcnVuIGJ1aWxkLWFwaS1jb250cmFjdGA6IEJ1bmRsZXMgdGhlIE9wZW5BUEkgc3BlYyBhbmQgZ2VuZXJhdGVzIFR5cGVTY3JpcHQgQXhpb3MgY2xpZW50cywgZW5zdXJpbmcgZnJvbnRlbmQgYW5kIGJhY2tlbmQgY29tbXVuaWNhdGUgb3ZlciBhIHN0cm9uZ2x5IHR5cGVkIEFQSS4KCi0gKipUdXJibyBDb21tYW5kcyoqOgogIC0gYHR1cmJvIHJ1biBidWlsZGA6IENvbXBpbGVzIHRoZSBwcm9qZWN0IGZvciBwcm9kdWN0aW9uLCBlbnN1cmluZyBhbGwgZGVwZW5kZW5jaWVzIGxpa2UgUHJpc21hIGNsaWVudCBhbmQgQVBJIGNvbnRyYWN0cyBhcmUgZ2VuZXJhdGVkIGFuZCB1cC10by1kYXRlLgogIC0gYHR1cmJvIHJ1biBkZXZgOiBTdGFydHMgdGhlIGRldmVsb3BtZW50IHNlcnZlciwgd2F0Y2hpbmcgZm9yIGNoYW5nZXMgaW4geW91ciBzb3VyY2UgY29kZSBhbmQgYXV0b21hdGljYWxseSByZWNvbXBpbGluZy4KCiMjIFByb2plY3QgU3RydWN0dXJlCgotIGBhcHBzLypgOiBDb250YWlucyB0aGUgZnJvbnRlbmQgYW5kIGJhY2tlbmQgYXBwbGljYXRpb25zLgotIGBwYWNrYWdlcy8qYDogSW5jbHVkZXMgc2hhcmVkIGxpYnJhcmllcywgY29uZmlndXJhdGlvbnMsIGFuZCB1dGlsaXR5IGZ1bmN0aW9ucy4KCiMjIEFkZGl0aW9uYWwgUmVzb3VyY2VzCgotIFtUdXJibyBSZXBvIERvY3VtZW50YXRpb25dKGh0dHBzOi8vdHVyYm9yZXBvLm9yZy9kb2NzKQotIFtQcmlzbWEgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cucHJpc21hLmlvL2RvY3MvKQotIFtPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykKLSBbVHlwZVNjcmlwdF0oaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvKQotIFtQb3N0Z3JlcyBEb2NrZXIgU2V0dXBdKGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL3NhbXBsZXMvcG9zdGdyZXNxbF9zZXJ2aWNlLykKCiMjIENvbnRyaWJ1dGluZwoKQ29udHJpYnV0aW9ucyBhcmUgd2VsY29tZSEgUGxlYXNlIGZvbGxvdyB0aGUgZXN0YWJsaXNoZWQgY29kaW5nIGNvbnZlbnRpb25zIGFuZCBwdWxsIHJlcXVlc3QgcHJvY2Vzcy4KCi0tLQoKVGhhbmsgeW91IGZvciBjaG9vc2luZyBPeHlUcmFjayBUdXJibyBSZXBvIGZvciB5b3VyIGRldmVsb3BtZW50IG5lZWRzLiBIYXBweSBjb2RpbmchCg== readmeEtag: '"02a9c426d98b5c99dec855d7b8b34c296f9e2ef7"' readmeLastModified: Sat, 20 Apr 2024 13:46:30 GMT repositoryId: 760678504 description: >- A robust full stack application that includes Prisma, Postgres, Express, Node.js, React, and TypeScript across both the frontend and backend, ensuring a strongly typed development environment. created: '2024-02-20T18:26:55Z' updated: '2024-04-20T13:47:13Z' language: TypeScript archived: false stars: 1 watchers: 1 forks: 0 owner: Rakesh5777 logo: https://avatars.githubusercontent.com/u/81339756?v=4 repoEtag: '"529310cfa8753b517d116022538eab5005d5cb104c42af7cdcd820b8e9a84bb9"' repoLastModified: Sat, 20 Apr 2024 13:47:13 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/jumaevkova/openapi2postman v3: true id: a435703b9a6189963a308531a67538c0 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpMnBvc3RtYW4gYWN0aW9uCgpHaXRIdWIgYWN0aW9uIHRvIHB1c2ggb3BlbmFwaSAoT3BlbkFQSSAzLjAsIDMuMSBhbmQgU3dhZ2dlciAyLjApIGZpbGUgdG8gUG9zdG1hbiBkaXJlY3RseSBmcm9tIHlvdXIgd29ya2Zsb3cKCiMjIFVzYWdlCgpBZGQgdGhlIG9wZW5hcGkycG9zdG1hbiBhY3Rpb24gYW5kIHNldCB0aGUgcmVxdWlyZWQgaW5wdXRzCgoqIGBhcGkta2V5YDogeW91ciBQb3N0bWFuIEFQSSBrZXkKKiBgd29ya3NwYWNlLWlkYDogeW91ciBQb3N0bWFuIHdvcmtzcGFjZSBpZAoqIGBjb2xsZWN0aW9uLWlkYDogeW91ciBQb3N0bWFuIGNvbGxlY3Rpb24gaWQKKiBgZmlsZWA6IHlvdXIgb3BlbmFwaSBqc29uIGZpbGUKCiMjIyBGaWxlIGZvcm1hdHMgYXZhaWxhYmxlCgpgLmpzb25gICAgCmAueWFtbGAgICAKYC55bWxgCgojIyMgVXBkYXRlIGV4aXN0aW5nIGNvbGxlY3Rpb24KClVwZGF0ZSBleGlzdGluZyBQb3N0bWFuIGNvbGxlY3Rpb24KCmBgYHlhbWwKICAgIC0gbmFtZTogIlVwZGF0ZSBQb3N0bWFuIENvbGxlY3Rpb24iCiAgICAgIHVzZXM6IGp1bWFldmtvdmEwNC9vcGVuYXBpMnBvc3RtYW5AbWFpbgogICAgICB3aXRoOgogICAgICAgIGFwaS1rZXk6ICR7eyBzZWNyZXRzLlBPU1RNQU5fQVBJX0tFWSB9fQogICAgICAgIHdvcmtzcGFjZS1pZDogJHt7IHNlY3JldHMuUE9TVE1BTl9XT1JLU1BBQ0VfSUQgfX0KICAgICAgICBjb2xsZWN0aW9uLWlkOiAke3sgc2VjcmV0cy5QT1NUTUFOX0NPTExFQ1RJT05fSUQgfX0KICAgICAgICBmaWxlOiAuL2RvY3Mvc3dhZ2dlci5qc29uCmBgYAoKIyMjIEV4YW1wbGUgd29ya2Zsb3cgZmlsZQoKVXBkYXRlIFBvc3RtYW4gY29sbGVjdGlvbnMgb24gYHB1c2hgCgpgYGB5YW1sCm5hbWU6ICJVcGRhdGUgUG9zdG1hbiBjb2xsZWN0aW9uIgoKb246CiAgcHVzaDoKICAgIGJyYW5jaGVzOiBbICJtYWluIiBdCgpqb2JzOgogIHN5bmMtZG9jdW1lbnRhdGlvbi13aXRoLXBvc3RtYW46CiAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CiAgICBzdGVwczoKICAgICAgLSBuYW1lOiAiQ2hlY2tvdXQgcmVwb3NpdG9yeSIKICAgICAgICB1c2VzOiBhY3Rpb25zL2NoZWNrb3V0QHYzCgogICAgICAtIG5hbWU6ICJVcGRhdGUgUG9zdG1hbiBDb2xsZWN0aW9uIgogICAgICAgIHVzZXM6IGp1bWFldmtvdmEwNC9vcGVuYXBpMnBvc3RtYW5AbWFpbgogICAgICAgIHdpdGg6CiAgICAgICAgICBhcGkta2V5OiAke3sgc2VjcmV0cy5QT1NUTUFOX0FQSV9LRVkgfX0KICAgICAgICAgIHdvcmtzcGFjZS1pZDogJHt7IHNlY3JldHMuUE9TVE1BTl9XT1JLU1BBQ0VfSUQgfX0KICAgICAgICAgIGNvbGxlY3Rpb24taWQ6ICR7eyBzZWNyZXRzLlBPU1RNQU5fQ09MTEVDVElPTl9JRCB9fQogICAgICAgICAgZmlsZTogLi9kb2NzL3N3YWdnZXIuanNvbgpgYGA= readmeEtag: '"3605027ed82f649140af3e5883f62f5b49823954"' readmeLastModified: Wed, 19 Jun 2024 02:46:33 GMT repositoryId: 712975783 description: Update Postman collection from openapi file created: '2023-11-01T15:33:20Z' updated: '2025-07-31T12:54:39Z' language: Go archived: false stars: 1 watchers: 1 forks: 0 owner: jumaevkova logo: https://avatars.githubusercontent.com/u/68679772?v=4 repoEtag: '"b783cad0b895dbfa52d0b837995d1cbfb87d8b13565a116af2e4b3f959e08a79"' repoLastModified: Thu, 31 Jul 2025 12:54:39 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/jumaevkova04/openapi2postman - source: openapi3 tags repository: https://github.com/edo1z/rust-axum-seaorm-sample v3: true id: 2129199cc4f3c61ca889912962cd6c67 repositoryMetadata: base64Readme: >- IyBydXN0LWF4dW0tc2Vhb3JtLXNhbXBsZQojIyBMb2NhbCBTZXR1cAoKYGBgCj4gY2QgbG9jYWwKPiBkb2NrZXItY29tcG9zZSB1cApgYGAKCi0gQVBJOiBodHRwOi8vbG9jYWxob3N0OjgwODUKLSBTd2FnZ2VyOiBodHRwOi8vbG9jYWxob3N0OjgwMDEK readmeEtag: '"363caea125308295e1deae7d4427c6478ad176e1"' readmeLastModified: Tue, 05 Jul 2022 16:15:43 GMT repositoryId: 504863913 description: Rust Axum+SeaORM Sample created: '2022-06-18T14:21:30Z' updated: '2025-09-26T07:13:02Z' language: Rust archived: false stars: 2 watchers: 1 forks: 0 owner: edo1z logo: https://avatars.githubusercontent.com/u/89882017?v=4 repoEtag: '"8785ee2c786e252a4e727283e8de687401ba849ce0bc4f594148940c37340cd5"' repoLastModified: Fri, 26 Sep 2025 07:13:02 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/net3i/rust-axum-seaorm-sample - source: openapi3 tags repository: https://github.com/nautilustube/swagger2doc v3: true id: 8bb453efb5a2da797fe14a6777929939 repositoryMetadata: base64Readme: >- IyBDb252ZXJ0IFN3YWdnZXIgSlNPTiB0byBNYXJrRG93biwgSHRtbCBBbmQgTVMgV29yZCBEb2N1bWVudCguZG9jeCkKQ29udmVydHMgU3dhZ2dlciBKU09OIGZpbGUgdG8gTWFya0Rvd24sIE1hcmtEb3duIEh0bWwsIE1TIFdvcmQgRG9jdW1lbnQgCgojIyBVc2FnZQoKIyMjIDEuIGZvciBSZWJ1aWxkIHRoZSBleGUKU3dhZ2dlcjJEb2MuZXhlIHdpbGwgYmUgY3JlYXRlZCBpbiAgL3B1Ymxpc2ggZm9sZGVyCgpgYGBQb3dlclNoZWxsCmV4ZWN1dGUgdGhlIGNvbXBpbGUucHMxIGF0IHRoZSBwYXRoCmBgYAojIyMgMi4gY3JlYXRlIGFwaSBmaWxlcwphZGQgeW91ciBzd2FnZ2VyLmpzb24gZmlsZSBpbiAvcHVibGlzaC9SZXNvdXJjZSBmb2xkZXIgYW5kIGV4ZWN1dGUgU3dhZ2dlcjJEb2MuZXhlCgpzd2FnZ2VyLmRvY3jCoUJzd2FnZ2VyLmh0bWzCoUJzd2FnZ2VyLm1kIHdpbGwgYmUgY3JlYXRlZCBpbiBzYW1lIGZvbGRlcgoKIyMjIDMuIHlvdXIgYXBpIHNwZWMgZmlsZSBleGFtcGxlCgpbbWRdKHB1Ymxpc2gvUmVzb3VyY2VzL091dHB1dC9zd2FnZ2VyLm1kKQpbaHRtbF0ocHVibGlzaC9SZXNvdXJjZXMvT3V0cHV0L3N3YWdnZXIuaHRtbCkKW2RvY3hdKHB1Ymxpc2gvUmVzb3VyY2VzL091dHB1dC9zd2FnZ2VyLmRvY3gpCg== readmeEtag: '"a219a168909fff8d6604f682387d87713a70a1a4"' readmeLastModified: Sun, 22 Sep 2024 11:47:21 GMT repositoryId: 835916567 description: Convert Swagger JSON to MarkDown, Html And MS Word Document(.docx) created: '2024-07-30T19:28:54Z' updated: '2026-01-23T10:09:16Z' language: C# archived: false stars: 3 watchers: 1 forks: 0 owner: nautilustube logo: https://avatars.githubusercontent.com/u/101971417?v=4 repoEtag: '"588cf52f257f3e314592845acb606661ac293bc937becc86ce9b4026a68214a8"' repoLastModified: Fri, 23 Jan 2026 10:09:16 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/sinoroc/rapids v3: true repositoryMetadata: base64Readme: >- Li4KCgouLiBjb250ZW50czo6CgouLiBzZWN0bnVtOjoKCgpJbnRyb2R1Y3Rpb24KPT09PT09PT09PT09CgoqKlJFU1QgQVBJcyBkb2N1bWVudGVkIGFuZCBzZW5zaWJsZSoqCgpCdWlsZCBhdXRvbWF0aWNhbGx5IGRvY3VtZW50ZWQgUkVTVCBBUElzIHdpdGggdGhlIGBQeXJhbWlkIGZyYW1ld29ya2BfLgoKVGhpcyBsaWJyYXJ5IGlzIGF2YWlsYWJsZSBvbiB0aGUgUHl0aG9uIHBhY2thZ2UgaW5kZXggdW5kZXIgdGhlIHByb2plY3QgbmFtZQpgYHJhcGlkc2BgOgoKKiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3JhcGlkcwoKKiBodHRwczovL3B5cGkub3JnL3Byb2plY3QvcmFwaWRzLwoKClVzYWdlCj09PT09CgouLiBjb2RlOjogcHl0aG9uCgogICAgQHJhcGlkcy5kZWNvcmF0b3JzLnJlc291cmNlKCcnLCBOb25lKQogICAgY2xhc3MgUm9vdChyYXBpZHMucmVzb3VyY2VzLkJhc2UpOgogICAgICAgIHBhc3MKCgogICAgQHB5cmFtaWQudmlldy52aWV3X2NvbmZpZyhjb250ZXh0PVJvb3QsIHJhcGlkcz0nJykKICAgIGRlZiByb290X3ZpZXcocmVzb3VyY2UsIHJlcXVlc3QpOgogICAgICAgIHJldHVybiBweXJhbWlkLmh0dHBleGNlcHRpb25zLkhUVFBOb3RGb3VuZCgpCgoKICAgIEByYXBpZHMuZGVjb3JhdG9ycy5yZXNvdXJjZSgnZm9vJywgUm9vdCkKICAgIGNsYXNzIEZvbyhyYXBpZHMucmVzb3VyY2VzLkJhc2UpOgogICAgICAgIHBhc3MKCgogICAgQHB5cmFtaWQudmlldy52aWV3X2RlZmF1bHRzKGNvbnRleHQ9Rm9vLCByYXBpZHM9JycpCiAgICBjbGFzcyBGb29WaWV3OgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXNvdXJjZSwgcmVxdWVzdCk6CiAgICAgICAgICAgIHBhc3MKCiAgICAgICAgQHB5cmFtaWQudmlldy52aWV3X2NvbmZpZyhyZXF1ZXN0X21ldGhvZD0nR0VUJykKICAgICAgICBkZWYgX2dldF92aWV3KHNlbGYpOgogICAgICAgICAgICByZXR1cm4gcHlyYW1pZC5odHRwZXhjZXB0aW9ucy5IVFRQT2soKQoKICAgICAgICBAcHlyYW1pZC52aWV3LnZpZXdfY29uZmlnKHJlcXVlc3RfbWV0aG9kPSdQT1NUJykKICAgICAgICBkZWYgX3Bvc3RfdmlldyhzZWxmKToKICAgICAgICAgICAgcmV0dXJuIHB5cmFtaWQuaHR0cGV4Y2VwdGlvbnMuSFRUUENyZWF0ZWQoKQoKCkhhY2tpbmcKPT09PT09PQoKVGhpcyBwcm9qZWN0IG1ha2VzIGV4dGVuc2l2ZSB1c2Ugb2YgYHRveGBfLCBgcHl0ZXN0YF8sIGFuZCBgR05VIE1ha2VgXy4KCgpEZXZlbG9wbWVudCBlbnZpcm9ubWVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVXNlIGZvbGxvd2luZyBjb21tYW5kIHRvIGNyZWF0ZSBhIFB5dGhvbiB2aXJ0dWFsIGVudmlyb25tZW50IHdpdGggYWxsCm5lY2Vzc2FyeSBkZXBlbmRlbmNpZXM6OgoKICAgIHRveCAtLXJlY3JlYXRlIC1lIGRldmVsb3AKClRoaXMgY3JlYXRlcyBhIFB5dGhvbiB2aXJ0dWFsIGVudmlyb25tZW50IGluIHRoZSBgYC50b3gvZGV2ZWxvcGBgIGRpcmVjdG9yeS4gSXQKY2FuIGJlIGFjdGl2YXRlZCB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDo6CgogICAgLiAudG94L2RldmVsb3AvYmluL2FjdGl2YXRlCgoKUnVuIHRlc3Qgc3VpdGUKLS0tLS0tLS0tLS0tLS0KCkluIGEgUHl0aG9uIHZpcnR1YWwgZW52aXJvbm1lbnQgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDo6CgogICAgbWFrZSByZXZpZXcKCk91dHNpZGUgb2YgYSBQeXRob24gdmlydHVhbCBlbnZpcm9ubWVudCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOjoKCiAgICB0b3ggLS1yZWNyZWF0ZQoKCkJ1aWxkIGFuZCBwYWNrYWdlCi0tLS0tLS0tLS0tLS0tLS0tCgpJbiBhIFB5dGhvbiB2aXJ0dWFsIGVudmlyb25tZW50IHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6OgoKICAgIG1ha2UgcGFja2FnZQoKT3V0c2lkZSBvZiBhIFB5dGhvbiB2aXJ0dWFsIGVudmlyb25tZW50IHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6OgoKICAgIHRveCAtLXJlY3JlYXRlIC1lIHBhY2thZ2UKCgouLiBMaW5rcwoKLi4gX2BHTlUgTWFrZWA6IGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbWFrZS8KLi4gX2BQeXJhbWlkIGZyYW1ld29ya2A6IGh0dHBzOi8vdHJ5cHlyYW1pZC5jb20vCi4uIF9gcHl0ZXN0YDogaHR0cDovL3B5dGVzdC5vcmcvCi4uIF9gdG94YDogaHR0cHM6Ly90b3gucmVhZHRoZWRvY3MuaW8vCgoKLi4gRU9GCg== readmeEtag: '"ed92292f4de45d389528ff53f8694ca541b1ec25"' readmeLastModified: Sun, 14 Apr 2019 15:06:49 GMT repositoryId: 108432117 description: REST APIs documented and sensible created: '2017-10-26T15:44:17Z' updated: '2024-12-11T12:38:46Z' language: Python archived: false stars: 1 watchers: 1 forks: 3 owner: sinoroc logo: https://avatars.githubusercontent.com/u/5529267?v=4 license: Apache-2.0 repoEtag: '"9bbd8d04b745d3fc0f8a3a30549f3a3798d7be12fdcf40db361b0ec477459d4c"' repoLastModified: Wed, 11 Dec 2024 12:38:46 GMT foundInMaster: true category: Server Implementations id: fa2497dec16a48c00bff1a36601fec89 - source: openapi3 tags repository: https://github.com/blueconic/openapi v3: true id: 1bdf662814e8d18010a84f46df9f5114 repositoryMetadata: base64Readme: >- IyBCbHVlQ29uaWMgT3BlbkFQSSBTcGVjaWZpY2F0aW9uClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgQmx1ZUNvbmljIFJFU1QgQVBJIHYyLgogCiAjIFVzaW5nIHRoZSBsYXRlc3QgcHVibGlzaGVkIE9wZW5BUEkgc3BlY2lmaWNhdGlvbgogKiBPcGVuIGh0dHBzOi8vcmVzdC5hcGlkb2MuYmx1ZWNvbmljLmNvbQogCiAjIFVzaW5nIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gb2YgYSBnaXZlbiBCbHVlQ29uaWMgdGVuYW50CiAqIE9wZW4gaHR0cHM6Ly9yZXN0LmFwaWRvYy5ibHVlY29uaWMuY29tLz9ob3N0bmFtZT1teXRlbmFudG5hbWUuYmx1ZWNvbmljLm5ldAogKiBPciBvcGVuIGh0dHBzOi8vbXl0ZW5hbnRuYW1lLmJsdWVjb25pYy5uZXQvb3BlbmFwaQogCiAjIFJ1bm5pbmcgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBvbiBhIGxvY2FsIG1hY2hpbmUKICogQ2xvbmUgdGhlIHJlcG9zaXRvcnkgYW5kIGBjZGAgdG8gdGhlIHJlcG9zaXRvcnkgbG9jYXRpb24KICogUnVuIGBucHggaHR0cC1zZXJ2ZXJgCiAqIE9wZW4gYGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MD9ob3N0bmFtZT1sb2NhbGhvc3RgCiAqIENPUlMgY29uZmlndXJhdGlvbiBvZiBCbHVlQ29uaWMgbmVlZHMgdG8gYmUgYWRqdXN0ZWQgdG8gdGhlIHRoZSBsb2NhbGhvc3Qgb3JpZ2luIChgaHR0cDovL2xvY2FsaG9zdDo4MDgwYCBieSBkZWZhdWx0KQogCiAjIFNwZWNpZnlpbmcgQkMgdmVyc2lvbgogVGhlIGB2ZXJzaW9uYCBxdWVyeXN0cmluZyBwYXJhbWV0ZXIgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHNwZWNpZmljIEJsdWVDb25pYyB2ZXJzaW9uLiBOb3RlIHRoYXQgcGFyYW1ldGVyIGlzIGV4Y2x1c2l2ZSB3aXRoIHRoZSBgaG9zdG5hbWVgIHBhcmFtZXRlciwgd2hpY2ggd2lsbCBhbHdheXMgbG9hZCB0aGUgdmVyc2lvbiBzcGVjaWZpZWQgYnkgdGhlIHRlbmFudCBiZWluZyBjb25uZWN0ZWQgdG8uCiAKICogaHR0cHM6Ly9yZXN0LmFwaWRvYy5ibHVlY29uaWMuY29tLz92ZXJzaW9uPTg5IG9yIGh0dHBzOi8vcmVzdC5hcGlkb2MuYmx1ZWNvbmljLmNvbS8/dmVyc2lvbj1yODkgd2lsbCBsb2FkIHZlcnNpb24gODkKICogaHR0cHM6Ly9yZXN0LmFwaWRvYy5ibHVlY29uaWMuY29tLz92ZXJzaW9uPTkxIG9yIGh0dHBzOi8vcmVzdC5hcGlkb2MuYmx1ZWNvbmljLmNvbS8/dmVyc2lvbj1yOTEgd2lsbCBsb2FkIHZlcnNpb24gOTEKICogaHR0cHM6Ly9yZXN0LmFwaWRvYy5ibHVlY29uaWMuY29tLz92ZXJzaW9uPWN1cnJlbnQgd2lsbCBsb2FkIGxhdGVzdCB2ZXJzaW9uIHB1Ymxpc2hlZC4gQmVoYXZlcyB0aGUgc2FtZSBhcyBub3Qgc3BlY2lmeWluZyBhIHZlcnNpb24gYXQgYWxsLgogCg== readmeEtag: '"f8ee2eaa1a945ac1de3fa1f462a49d346d0fdd5d"' readmeLastModified: Fri, 28 Jun 2024 07:49:45 GMT repositoryId: 595013499 description: 'BlueConic REST API v2 ' created: '2023-01-30T08:01:31Z' updated: '2026-01-30T14:06:48Z' language: JavaScript archived: false stars: 1 watchers: 7 forks: 0 owner: blueconic logo: https://avatars.githubusercontent.com/u/5948030?v=4 license: NOASSERTION repoEtag: '"42e8c03c48c1445377a04de7dce047e8d5e78b193094413657df260e7d9276c1"' repoLastModified: Fri, 30 Jan 2026 14:06:48 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/lordent/oad v3: true repositoryMetadata: base64Readme: >- IyBQeXRob24gbGlicmFyeSBmb3IgZ2VuZXJhdGUgdmFsaWQgT3BlbkFQSSB2MyBzcGVjaWZpY2F0aW9uCgpbCiFbdHJhdmlzXShodHRwczovL2FwaS50cmF2aXMtY2kub3JnL2xvcmRlbnQvb2FkLnN2Zz9icmFuY2g9bWFzdGVyKQpdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9sb3JkZW50L29hZCkKClJlYWQgT3BlbkFQSSBzcGVjaWZpY2F0aW9uOgotIFtzd2FnZ2VyXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pCi0gW2dpdGh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQpCgpVc2FnZSBleGFtcGxlOgoKYGBgcHl0aG9uCmltcG9ydCBhc3luY2lvCmZyb20gb2FkIGltcG9ydCBvcGVuYXBpLCBPcGVuQVBJRG9jCgoKaW5mbyA9IHsKICAgICd0aXRsZSc6ICdUZXN0JywKICAgICdkZXNjcmlwdGlvbic6ICdUZXN0IGFwaSBkZXNjcmlwdGlvbicsCiAgICAndGVybXNPZlNlcnZpY2UnOiAnVGVzdCB0ZXJtcycsCiAgICAnY29udGFjdCc6IHsKICAgICAgICAnbmFtZSc6ICdUZXN0ZXInLAogICAgICAgICd1cmwnOiAnaHR0cDovL2V4YW1wbGUuY29tJywKICAgICAgICAnZW1haWwnOiAndGVzdEBleGFtcGxlLmNvbScKICAgIH0sCiAgICAnbGljZW5zZSc6IHsKICAgICAgICAnbmFtZSc6ICdBcGFjaGUgMi4wJywKICAgICAgICAndXJsJzogJ2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMC5odG1sJwogICAgfSwKICAgICd2ZXJzaW9uJzogJzEuMCcKfQoKZXJyb3Jfc2NoZW1hID0gewogICAgJ3R5cGUnOiAnb2JqZWN0JywKICAgICdwcm9wZXJ0aWVzJzogewogICAgICAgICd0eXBlJzogeyd0eXBlJzogJ3N0cmluZyd9LAogICAgICAgICdtZXNzYWdlJzogeyd0eXBlJzogJ3N0cmluZyd9LAogICAgICAgICdlcnJvcnMnOiB7J3R5cGUnOiAnb2JqZWN0J30KICAgIH0sCn0KCmVycm9yX3Jlc3BvbnNlID0gewogICAgJ2Rlc2NyaXB0aW9uJzogJ0Vycm9yIHJlc3BvbnNlJywKICAgICdjb250ZW50JzogewogICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogewogICAgICAgICAgICAnc2NoZW1hJzogewogICAgICAgICAgICAgICAgJyRyZWYnOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvRXJyb3InCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCkBvcGVuYXBpLmRvYyh7CiAgICAnc3VtbWFyeSc6ICdUZXN0IHN1bW1hcnkgdGV4dCcsCiAgICAnZGVzY3JpcHRpb24nOiAnVGVzdCBkZXNjcmlwdGlvbicsCiAgICAndGFncyc6IFsndGVzdCddLAogICAgJ3BhcmFtZXRlcnMnOiBbewogICAgICAgICckcmVmJzogJyMvY29tcG9uZW50cy9wYXJhbWV0ZXJzL1Rlc3RQYXJhbWV0ZXInCiAgICB9XSwKfSkKQG9wZW5hcGkucmVxdWVzdCh7CiAgICAnZGVzY3JpcHRpb24nOiAnVGVzdCBkZXNjcmlwdGlvbicsCn0sIGNvbnRlbnRfZG9jdW1lbnRhdGlvbj17CiAgICAnZXhhbXBsZSc6IHsKICAgICAgICAnaWQnOiAnNCcsCiAgICB9LAp9LCBzY2hlbWE9ewogICAgJ3R5cGUnOiAnb2JqZWN0JywKICAgICdwcm9wZXJ0aWVzJzogewogICAgICAgICdpZCc6IHsKICAgICAgICAgICAgJ3R5cGUnOiAnaW50ZWdlcicsCiAgICAgICAgICAgICdmb3JtYXQnOiAnaW50NjQnLAogICAgICAgICAgICAnZXhhbXBsZSc6ICc0JywKICAgICAgICB9LAogICAgfSwKfSkKQG9wZW5hcGkucmVzcG9uc2UoKQpAb3BlbmFwaS5yZXNwb25zZSgKICAgIHN0YXR1cz00MDAsIHNjaGVtYT17JyRyZWYnOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvRXJyb3InfSkKYXN5bmMgZGVmIHRlc3RfaGFuZGxlcigqYXJncywgKiprd2FyZ3MpOgogICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwKQogICAgcmV0dXJuICdPayEnLCBhcmdzLCBrd2FyZ3MKCgpkb2MgPSAoCiAgICBPcGVuQVBJRG9jKHsKICAgICAgICAnaW5mbyc6IGluZm8sCiAgICB9KQogICAgLmFkZF9wYXJhbWV0ZXIoJ1Rlc3RQYXJhbWV0ZXInKQogICAgLmFkZF90YWcoJ3Rlc3QnLCB7J2Rlc2NyaXB0aW9uJzogJ1Rlc3QgdGFnIGRlc2NyaXB0aW9uJ30pCiAgICAuYWRkX3BhdGgoCiAgICAgICAgJy90ZXN0L3tUZXN0UGFyYW1ldGVyfScsICdwb3N0JywKICAgICAgICB0ZXN0X2hhbmRsZXIuX19vcGVuYXBpX18uZG9jdW1lbnRhdGlvbikKICAgIC5hZGRfc2NoZW1hKCdFcnJvcicsIGVycm9yX3NjaGVtYSkKICAgIC5hZGRfcmVzcG9uc2UoJ0Vycm9yJywgZXJyb3JfcmVzcG9uc2UpCiAgICAuYWRkX3NlY3VyaXR5KCdBcGlLZXknLCAnYXBpS2V5JywgewogICAgICAgICdpbic6ICdoZWFkZXInLAogICAgICAgICduYW1lJzogJ1gtQVBJLUtleScsCiAgICB9KQogICAgLnRvX2RpY3QoKQopCmBgYAo= readmeEtag: '"264bf431e976e1dfadca356518ef3d1d27401cd9"' readmeLastModified: Sun, 08 Apr 2018 10:33:42 GMT repositoryId: 128617517 description: Python library for generate valid OpenAPI v3 specification created: '2018-04-08T08:21:11Z' updated: '2019-02-15T19:24:30Z' language: Python archived: false stars: 1 watchers: 1 forks: 0 owner: lordent logo: https://avatars.githubusercontent.com/u/2070895?v=4 license: Apache-2.0 repoEtag: '"45a2f0be596fbbcf86f05810fdfe6f427f92573b0de5af591301dc5a41d1c53f"' repoLastModified: Fri, 15 Feb 2019 19:24:30 GMT foundInMaster: true category: Parsers id: f2ed564d12c5e6d231dcce7953cd3d75 - source: openapi3 tags repository: https://github.com/ndexbio/openapi-specification v3: true repositoryMetadata: base64Readme: >- CiMgT3BlbkFQSS1TcGVjaWZpY2F0aW9uClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyBhIGRpZ2VzdCBvZiBPcGVuQVBJIHNwZWNpZmljYXRpb24gZG9jdW1lbnRzIGZvciB0aGUgKipOKipldHdvcmsgKipEKiphdGEgKipFeCoqY2hhbmdlIAoqKihOREV4KSBSRVNUIEFQSSoqIHVzZWQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgW05ERXggUHJvamVjdF0oaHR0cDovL3d3dy5ob21lLm5kZXhiaW8ub3JnL2luZGV4LykgcHVibGljCnNlcnZlciBhbmQgcmVsYXRlZCBOREV4IHByaXZhdGUgc2VydmVycy4gVGhlIE5ERXggUHJvamVjdCBwcm92aWRlcyBhbiBvcGVuLXNvdXJjZSBmcmFtZXdvcmsgYW5kIG9ubGluZSBkYXRhYmFzZSAKY29tbW9ucyB3aGVyZSBzY2llbnRpc3RzIGNhbiB1cGxvYWQsIHNoYXJlLCBhbmQgcHVibGljbHkgZGlzdHJpYnV0ZSBiaW9sb2dpY2FsIG5ldHdvcmtzCiAqKFByYXR0IGV0IGFsLiwgMjAxNSwgQ2VsbCBTeXN0ZW1zIDEsIDMwMi0zMDUsIE9jdG9iZXIgMjgsIDIwMTUgwqkyMDE1IEVsc2V2aWVyIEluYy4KICBbU2NpZW5jZURpcmVjdF0oaHR0cDovL3d3dy5zY2llbmNlZGlyZWN0LmNvbS9zY2llbmNlL2FydGljbGUvcGlpL1MyNDA1NDcxMjE1MDAxNDc3KSkqLgoKT3BlbkFQSSBpcyBhbiBvcGVuLCBwb3J0YWJsZSBhbmQgdmVuZG9yIG5ldXRyYWwgQVBJIGRlc2NyaXB0aW9uIHN0YW5kYXJkLCBhbmQgaXMgZGVmaW5lZCBieSB0aGUgTGludXggCkZvdW5kYXRpb24gW09wZW5BUEkgSW5pdGlhdGl2ZSAoT0FJKV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgZ292ZXJuaW5nIGJvZHkuIEl0IGlzIGVtcGxveWVkIHdvcmxkd2lkZSBieSAKY29kZSBnZW5lcmF0aW9uLCB0ZXN0aW5nIGFuZCBkb2N1bWVudCBjcmVhdGlvbiB0b29scywgbWFueSBvZiB3aGljaCBhcmUgbGlzdGVkIAogW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL0lNUExFTUVOVEFUSU9OUy5tZCkuCiAKVGhlIE9wZW5BUEkgZG9jdW1lbnRzIGNvbnRhaW5lZCBpbiB0aGlzIHJlcG9zaXRvcnkgYXJlIHNwZWNpZmljYWxseSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIApbbmRleHRvb2xzL29wZW5hcGktcmVhZGVyXShodHRwczovL2dpdGh1Yi5jb20vbmRleHRvb2xzL29wZW5hcGktcmVhZGVyKSBhcHBsaWNhdGlvbiwgc28gdGhhdCBOREV4IGRldmVsb3BlcnMgCmNhbiBpbnRlcmFjdGl2ZWx5IHZpZXcgYW5kICAidHJ5IG91dCIgTkRFeCBBUEkgcmVxdWVzdHMsIHRodXMgcHJvdmlkaW5nIHRoZW0gd2l0aCBhIGxvdy1sZXZlbCBBUEkgCmFuZCBkZWJ1Z2dpbmcgZW52aXJvbm1lbnQgYXMgdGhleSBjcmVhdGUgbGFuZ3VhZ2Utc3BlY2lmaWMgc29mdHdhcmUgYXBwbGljYXRpb25zIGFuZCBwcm9ncmFtIGxpYnJhcmllcy4KCkV4Y2VwdCBmb3IgdGhlc2UgZGVyaXZhdGl2ZSBPcGVuQVBJIGRvY3VtZW50cywgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIE5ERXggQVBJLCBzb3VyY2VzIGFuZCBkb2N1bWVudGF0aW9uIAphcmUgY29weXJpZ2h0ZWQ6ICrCqSAyMDEzLTIwMjAsIFRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIFRoZSBDeXRvc2NhcGUgQ29uc29ydGl1bS4KQWxsIHJpZ2h0cyByZXNlcnZlZC4qICBQbGVhc2UgYWJpZGUgd2l0aCB0aGVpcgpbVGVybXMgb2YgVXNlLCBMaWNlbnNpbmcgYW5kIFNvdXJjZXNdKGh0dHA6Ly93d3cuaG9tZS5uZGV4YmlvLm9yZy9kaXNjbGFpbWVyLWxpY2Vuc2UvKS4KTGlrZXdpc2UsIHRoZSBbU3dhZ2dlci1VSV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkpIGRvY3VtZW50IHJlYWRlciB0aGF0IGRpc3BsYXlzIHRoaXMgT3BlbkFQSSAKZG9jdW1lbnQgaXMgY29weXJpZ2h0ZWQgYnkgKlNtYXJ0YmVhciBTb2Z0d2FyZSouIEl0cyBvcGVuLXNvdXJjZSBzb2Z0d2FyZSBsaWNlbnNlIGlzIGZvdW5kIApbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvYmxvYi9tYXN0ZXIvTElDRU5TRSkuCgpUaGUgY3VycmVudGx5IHN1cHBvcnRlZCBSRVNUIEFQSSBhbmQgc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uIAppcyBmb3VuZCBhdCB0aGUgW05ERXggUHJvamVjdCB3ZWJzaXRlXShodHRwOi8vd3d3LmhvbWUubmRleGJpby5vcmcvaW5kZXgvKS4K readmeEtag: '"03e0423075a14aefecc08c229b22258c02f41532"' readmeLastModified: Thu, 17 Dec 2020 19:16:38 GMT repositoryId: 117026992 description: >- OpenAPI specification for the ndexbio.org rest server api and used by ndextools/openapi-reader. This repository is created by Mike Fidel and transferred to NDEx project in March 2018. created: '2018-01-11T00:10:49Z' updated: '2020-12-17T19:16:41Z' language: null archived: false stars: 1 watchers: 7 forks: 1 owner: ndexbio logo: https://avatars.githubusercontent.com/u/8965609?v=4 license: MIT repoEtag: '"4a6fc65b3fa22d96c910b08da9456b8fef5bc4aa72c2c6222361e77030dab00e"' repoLastModified: Thu, 17 Dec 2020 19:16:41 GMT foundInMaster: true category: Parsers id: 3b65be6a3615646d98a00c8f8617901a - source: openapi3 tags repository: https://github.com/mariotoffia/openapi-senml v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIDMuMCBTZW5NTCBTcGVjaWZpY2F0aW9uCkEgT3BlbiBBUEkgMy54IHNwZWNpZmljYXRpb24gKHN3YWdnZXIgbmV4dCBnZW4pIGZvciBTZW5NTCAoU2Vuc29yIE1lYXN1cmVtZW50IExpc3QpIGZvciBzZW5zb3IgKElvVCkgY29tbXVuaWNhdGlvbiBhbmQgYWN0dWF0aW9uIChodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjODQyOCkuCgojIyBHb2FsClRoaXMgc3BlY2lmaWNhdGlvbiBzdHJpdmVzIHRvIGVuY2Fwc3VsYXRlIHRoZSBbU2VuTUxdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4NDI4KSBmdW5jdGlvbmFsaXR5IHVzaW5nIGEgcGxhaW4gT3BlbkFQSSAzLnggc3BlY2lmaWNhdGlvbiBhbmQgYSBzYW1wbGUgaW1wbGVtZW50YXRpb24gaW4gQyMsIEtvdGxpbiwgQywgYW5kIEphdmFzY3JpcHQgYm90aCBvbiBzZXJ2ZXIgYW5kIGNsaWVudCBzaWRlLgo= readmeEtag: '"e5a309984cfe63cfc070d4327c0b95bb8cb527f9"' readmeLastModified: Mon, 08 Jul 2019 10:38:55 GMT repositoryId: 195179871 description: >- A Open API 3.x specification (swagger next gen) for SenML (Sensor Measurement List) for sensor (IoT) communication and actuation (https://tools.ietf.org/html/rfc8428) created: '2019-07-04T06:14:19Z' updated: '2022-09-12T00:22:21Z' language: null archived: false stars: 1 watchers: 0 forks: 0 owner: mariotoffia logo: https://avatars.githubusercontent.com/u/1716527?v=4 license: Apache-2.0 repoEtag: '"959f46234eb1c37a7224116750c2032f4fb375a061038983b57421de47d00d22"' repoLastModified: Mon, 12 Sep 2022 00:22:21 GMT foundInMaster: true category: Parsers id: 0f79e8030eec5efa7008eb163f8e07a9 - source: openapi3 tags repository: https://github.com/reschoene/taskplanneraws v3: true id: 833dc8c7d444e61f954edb8555cfe7f1 repositoryMetadata: base64Readme: >- IyBUYXNrUGxhbm5lciBmb3IgQVdTCkEgc2ltcGxlIHRhc2sgcGxhbm5lciBBUEkgZm9yIGxpc3RpbmcgdGFza3MgZ3JvdXBlZCBieSBsaXN0cyBhbmQgbWFuYWdpbmcgdGhlbQoKIyMgU3RhY2sKLSBLb3RsaW4sIEphdmEgd2l0aCBHcmFhbFZNIChmb3IgbmF0aXZlIGNvbXBpbGF0aW9uKQotIFF1YXJrdXMsIHRoZSBTdXBlcnNvbmljIFN1YmF0b21pYyBKYXZhIEZyYW1ld29yay4KLSBUZXN0Q29udGFpbmVycywgUkVTVEVhc3ksIFJFU1RBc3N1cmVkCi0gQVdTIExhbWJkYSwgQVdTIEFQSSBHYXRld2F5LCBBV1MgRHluYW1vZGIKLSBBV1MgU0FNIENMSSAoZm9yIGxvY2FsIHRlc3RpbmcgYW5kIEFXUyBEZXBsb3kpOiBTQU0gPSBTZXJ2ZXJsZXNzIEFwcGxpY2F0aW9uIE1vZGVsCgojIyBQcm9qZWN0IHN0YXR1cyAtIFNvbmFyIGFuYWx5c2lzClshW1F1YWxpdHkgZ2F0ZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9xdWFsaXR5X2dhdGU/cHJvamVjdD1yZXNjaG9lbmVfdGFza3BsYW5uZXJhd3MpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1yZXNjaG9lbmVfdGFza3BsYW5uZXJhd3MpCgpbIVtTZWN1cml0eSBSYXRpbmddKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PXJlc2Nob2VuZV90YXNrcGxhbm5lcmF3cyZtZXRyaWM9c2VjdXJpdHlfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9cmVzY2hvZW5lX3Rhc2twbGFubmVyYXdzKQoKWyFbQ29kZSBTbWVsbHNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PXJlc2Nob2VuZV90YXNrcGxhbm5lcmF3cyZtZXRyaWM9Y29kZV9zbWVsbHMpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1yZXNjaG9lbmVfdGFza3BsYW5uZXJhd3MpCgpbIVtCdWdzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1yZXNjaG9lbmVfdGFza3BsYW5uZXJhd3MmbWV0cmljPWJ1Z3MpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1yZXNjaG9lbmVfdGFza3BsYW5uZXJhd3MpCgpbIVtWdWxuZXJhYmlsaXRpZXNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PXJlc2Nob2VuZV90YXNrcGxhbm5lcmF3cyZtZXRyaWM9dnVsbmVyYWJpbGl0aWVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9cmVzY2hvZW5lX3Rhc2twbGFubmVyYXdzKQoKWyFbQ292ZXJhZ2VdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PXJlc2Nob2VuZV90YXNrcGxhbm5lcmF3cyZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1yZXNjaG9lbmVfdGFza3BsYW5uZXJhd3MpCgojIyBCdWlsZCBhbmQgRGVwbG95IApUaGVyZSBhcmUgdHdvIGRlcGxveSBvcHRpb25zIGF2YWlsYWJsZTogSlZNIGFuZCBuYXRpdmUgZXhlY3V0YWJsZXMuIEJlbGxvdyBhcmUgdGhlIGluc3RydWN0aW9ucyBmb3IgZWFjaCBvbmUKCiMjIyBPcHRpb24gMSAtIEJ1aWxkaW5nIGFuZCBkZXBsb3lpbmcgbmF0aXZlIGV4ZWN1dGFibGUKCiMjIyMgQ3JlYXRpbmcgYSBuYXRpdmUgZXhlY3V0YWJsZQpZb3UgY2FuIGNyZWF0ZSBhIG5hdGl2ZSBleGVjdXRhYmxlIHVzaW5nOgpgYGBzaGVsbCBzY3JpcHQKLi9ncmFkbGV3IGJ1aWxkIC1EcXVhcmt1cy5wYWNrYWdlLnR5cGU9bmF0aXZlCmBgYAoKT3IsIGlmIHlvdSBkb24ndCBoYXZlIEdyYWFsVk0gaW5zdGFsbGVkLCB5b3UgY2FuIHJ1biB0aGUgbmF0aXZlIGV4ZWN1dGFibGUgYnVpbGQgaW4gYSBjb250YWluZXIgdXNpbmc6CmBgYHNoZWxsIHNjcmlwdAouL2dyYWRsZXcgYnVpbGQgLURxdWFya3VzLnBhY2thZ2UudHlwZT1uYXRpdmUgLURxdWFya3VzLm5hdGl2ZS5jb250YWluZXItYnVpbGQ9dHJ1ZQpgYGAKCiMjIyMgRGVwbG95aW5nIGEgbmF0aXZlIGV4ZWN1dGFibGUKIC0gWW91IGNhbiB0aGVuIHRlc3QgdGhlIGV4ZWN1dGFibGUgbG9jYWxseSB3aXRoIHNhbSBsb2NhbApgc2FtIGxvY2FsIHN0YXJ0LWFwaSAtLXRlbXBsYXRlIGJ1aWxkL3NhbS5uYXRpdmUueWFtbGAKCiAtIFRvIGRlcGxveSB0byBBV1MgTGFtYmRhOgpgc2FtIGRlcGxveSAtdCBidWlsZC9zYW0ubmF0aXZlLnlhbWwgLWdgCgojIyMgT3B0aW9uIDIgLSBCdWlsZGluZyBhbmQgZGVwbG95aW5nIEpWTSBleGVjdXRhYmxlCgojIyMjIENyZWF0aW5nIGEgSlZNIGV4ZWN1dGFibGUKWW91IGNhbiBjcmVhdGUgYSBuYXRpdmUgZXhlY3V0YWJsZSB1c2luZzoKYGBgc2hlbGwgc2NyaXB0Ci4vZ3JhZGxldyBidWlsZApgYGAKCiMjIyMgRGVwbG95aW5nIGEgSlZNIGV4ZWN1dGFibGUKLSBZb3UgY2FuIHRoZW4gdGVzdCB0aGUgZXhlY3V0YWJsZSBsb2NhbGx5IHdpdGggc2FtIGxvY2FsCiAgYHNhbSBsb2NhbCBzdGFydC1hcGkgLS10ZW1wbGF0ZSBidWlsZC9zYW0uanZtLnlhbWxgCgotIFRvIGRlcGxveSB0byBBV1MgTGFtYmRhOgogIGBzYW0gZGVwbG95IC10IGJ1aWxkL3NhbS5qdm0ueWFtbCAtZ2AKCgojIyMgRGVwbG95IGVycm9yIHRpcHMKSWYgeW91IGdldCBhbiBlcnJvciBzaW1pbGFyIHRvIHRoaXMgb25lOiAiQW4gZXJyb3Igb2NjdXJyZWQgKFNpZ25hdHVyZURvZXNOb3RNYXRjaCkgd2hlbiBjYWxsaW5nIHRoZSBDcmVhdGVDaGFuZ2VTZXQgb3BlcmF0aW9uOiBTaWduYXR1cmUgZXhwaXJlZDogMjAyMjA2MTlUMTkzMTE5WiBpcyBub3cgZWFybGllciB0aGFuIDIwMjIwNjE5VDE5MzYwNFogKDIwMjIwNjE5VDE5NDEwNFogLSA1IG1pbi4pIgpydW4gZm9sbG93aW5nIGNvbW1hbmQgdG8gc3luYyB5b3VyIFBDIGRhdGUgYW5kIHRpbWU6IApgYGBzaGVsbCBzY3JpcHQKc3VkbyBkYXRlIC1zICIkKHdnZXQgLXFTTy0gLS1tYXgtcmVkaXJlY3Q9MCBnb29nbGUuY29tIDI+JjEgfCBncmVwIERhdGU6IHwgY3V0IC1kJyAnIC1mNS04KVoiCmBgYAoKCiMjIFJ1bm5pbmcgdGhlIGFwcGxpY2F0aW9uIGluIGRldiBtb2RlCkFzIHRoaXMgaXMgYSBxdWFya3VzIGFwcGxpY2F0aW9uLCB5b3UgY2FuIHJ1biBpdCB1c2luZyBpdHMgZGV2ZWxvcGVyIG1vZGUgdGhhdCBlbmFibGVzIGxpdmUgY29kaW5nIHVzaW5nOgpgYGBzaGVsbCBzY3JpcHQKLi9ncmFkbGV3IHF1YXJrdXNEZXYKYGBgCgpvciBpbiBkZWJ1ZyBtb2RlCmBgYHNoZWxsIHNjcmlwdAouL2dyYWRsZXcgcXVhcmt1c0RldiAtLWRlYnVnCmBgYAoKIyMgUnVubmluZyBkeW5hbW9EYiBsb2NhbGx5IGluIGRldiBtb2RlCmBgYHNoZWxsIHNjcmlwdApkb2NrZXIgcnVuIC0tcHVibGlzaCA4MDAwOjgwMDAgYW1hem9uL2R5bmFtb2RiLWxvY2FsOjEuMTEuNDc3IC1qYXIgRHluYW1vREJMb2NhbC5qYXIgLWluTWVtb3J5IC1zaGFyZWREYgpgYGAKVGhpcyBzdGFydHMgYSBEeW5hbW9EQiBpbnN0YW5jZSB0aGF0IGlzIGFjY2Vzc2libGUgb24gcG9ydCA4MDAwLiBZb3UgY2FuIGNoZWNrIGl04oCZcyBydW5uaW5nIGJ5IGFjY2Vzc2luZyB0aGUgd2ViIHNoZWxsIG9uIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zaGVsbC4KT3BlbiAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NoZWxsIiBpbiB5b3VyIGJyb3dzZXIuCgpDb3B5IGFuZCBwYXN0ZSB0aGUgZm9sbG93aW5nIGNvZGUgdG8gdGhlIHNoZWxsIGFuZCBydW4gaXQ6CgpgYGBzaGVsbCBzY3JpcHQgCnZhciBwYXJhbXMgPSB7ClRhYmxlTmFtZTogJ1Rhc2tMaXN0cycsCktleVNjaGVtYTogW3sgQXR0cmlidXRlTmFtZTogJ2lkJywgS2V5VHlwZTogJ0hBU0gnIH1dLApBdHRyaWJ1dGVEZWZpbml0aW9uczogW3sgIEF0dHJpYnV0ZU5hbWU6ICdpZCcsIEF0dHJpYnV0ZVR5cGU6ICdTJywgfV0sClByb3Zpc2lvbmVkVGhyb3VnaHB1dDogeyBSZWFkQ2FwYWNpdHlVbml0czogMSwgV3JpdGVDYXBhY2l0eVVuaXRzOiAxLCB9Cn07CgpkeW5hbW9kYi5jcmVhdGVUYWJsZShwYXJhbXMsIGZ1bmN0aW9uKGVyciwgZGF0YSkgewppZiAoZXJyKSBwcEpzb24oZXJyKTsKZWxzZSBwcEpzb24oZGF0YSk7Cgp9KTsKCnBhcmFtcyA9IHsKVGFibGVOYW1lOiAnVGFza3MnLApLZXlTY2hlbWE6IFt7IEF0dHJpYnV0ZU5hbWU6ICdpZCcsIEtleVR5cGU6ICdIQVNIJyB9XSwKQXR0cmlidXRlRGVmaW5pdGlvbnM6IFt7ICBBdHRyaWJ1dGVOYW1lOiAnaWQnLCBBdHRyaWJ1dGVUeXBlOiAnUycsIH1dLApQcm92aXNpb25lZFRocm91Z2hwdXQ6IHsgUmVhZENhcGFjaXR5VW5pdHM6IDEsIFdyaXRlQ2FwYWNpdHlVbml0czogMSwgfQp9OwoKZHluYW1vZGIuY3JlYXRlVGFibGUocGFyYW1zLCBmdW5jdGlvbihlcnIsIGRhdGEpIHsKaWYgKGVycikgcHBKc29uKGVycik7CmVsc2UgcHBKc29uKGRhdGEpOwoKfSk7CgpwYXJhbXMgPSB7ClRhYmxlTmFtZTogJ1F1b3RhdGlvbnMnLApLZXlTY2hlbWE6IFt7IEF0dHJpYnV0ZU5hbWU6ICdpZCcsIEtleVR5cGU6ICdIQVNIJyB9XSwKQXR0cmlidXRlRGVmaW5pdGlvbnM6IFt7ICBBdHRyaWJ1dGVOYW1lOiAnaWQnLCBBdHRyaWJ1dGVUeXBlOiAnUycsIH1dLApQcm92aXNpb25lZFRocm91Z2hwdXQ6IHsgUmVhZENhcGFjaXR5VW5pdHM6IDEsIFdyaXRlQ2FwYWNpdHlVbml0czogMSwgfQp9OwoKZHluYW1vZGIuY3JlYXRlVGFibGUocGFyYW1zLCBmdW5jdGlvbihlcnIsIGRhdGEpIHsKaWYgKGVycikgcHBKc29uKGVycik7CmVsc2UgcHBKc29uKGRhdGEpOwoKfSk7CmBgYAoKIyMgYWNjZXNzaW5nIHN3YWdnZXIgVUkKaHR0cDovL2xvY2FsaG9zdDo4MDgwL3Evc3dhZ2dlci11aQoKIyMgYWNjZXNzaW5nIE9wZW5BUEkgZGVmaW5pdGlvbgpodHRwOi8vbG9jYWxob3N0OjgwODAvcS9vcGVuYXBpCgojIyBjcmVhdGluZyBkeW5hbW9kYiB0YWJsZSBvbiB5b3VyIGF3czoKYGBgc2hlbGwgc2NyaXB0IAphd3MgZHluYW1vZGIgY3JlYXRlLXRhYmxlIC0tdGFibGUtbmFtZSBUYXNrTGlzdHMgXAotLWF0dHJpYnV0ZS1kZWZpbml0aW9ucyBBdHRyaWJ1dGVOYW1lPWlkLEF0dHJpYnV0ZVR5cGU9UyBcCi0ta2V5LXNjaGVtYSBBdHRyaWJ1dGVOYW1lPWlkLEtleVR5cGU9SEFTSCBcCi0tcHJvdmlzaW9uZWQtdGhyb3VnaHB1dCBSZWFkQ2FwYWNpdHlVbml0cz0xLFdyaXRlQ2FwYWNpdHlVbml0cz0xCmBgYAoKYGBgc2hlbGwgc2NyaXB0IAphd3MgZHluYW1vZGIgY3JlYXRlLXRhYmxlIC0tdGFibGUtbmFtZSBUYXNrcyBcCi0tYXR0cmlidXRlLWRlZmluaXRpb25zIEF0dHJpYnV0ZU5hbWU9aWQsQXR0cmlidXRlVHlwZT1TIFwKLS1rZXktc2NoZW1hIEF0dHJpYnV0ZU5hbWU9aWQsS2V5VHlwZT1IQVNIIFwKLS1wcm92aXNpb25lZC10aHJvdWdocHV0IFJlYWRDYXBhY2l0eVVuaXRzPTEsV3JpdGVDYXBhY2l0eVVuaXRzPTEKYGBgCgpgYGBzaGVsbCBzY3JpcHQgCmF3cyBkeW5hbW9kYiBjcmVhdGUtdGFibGUgLS10YWJsZS1uYW1lIFF1b3RhdGlvbnMgXAotLWF0dHJpYnV0ZS1kZWZpbml0aW9ucyBBdHRyaWJ1dGVOYW1lPWlkLEF0dHJpYnV0ZVR5cGU9UyBcCi0ta2V5LXNjaGVtYSBBdHRyaWJ1dGVOYW1lPWlkLEtleVR5cGU9SEFTSCBcCi0tcHJvdmlzaW9uZWQtdGhyb3VnaHB1dCBSZWFkQ2FwYWNpdHlVbml0cz0xLFdyaXRlQ2FwYWNpdHlVbml0cz0xCmBgYAoKIyMjIFNvbmFyQ2xvdWQgSW50ZWdyYXRpb246CkNoYW5nZSBzb25hcnF1YmUgcHJvcGVydGllcyBvbiBidWlsZC5ncmFkbGUgZmlsZSB0byB5b3VyIFNvbmFyQ2xvdWQgY29uZmlncwoKIyMjIyBUbyBnZW5lcmF0ZSBKYUNvQ28gY292ZXJhZ2UgcmVwb3J0cywgcnVuOgpgYGBzaGVsbCBzY3JpcHQKLi9ncmFkbGV3IHRlc3QKYGBgCgojIyMjIFRvIHVwbG9hZCBjb3ZlcmFnZSBkYXRhIHRvIFNvbmFyQ2xvdWQ6CmBgYHNoZWxsIHNjcmlwdCAKZXhwb3J0IFNPTkFSX1RPS0VOPVlPVVJfU09OQVJfS0VZCmBgYAoKYGBgc2hlbGwgc2NyaXB0IAouL2dyYWRsZXcgc29uYXJxdWJlCmBgYAo= readmeEtag: '"77e365d6105adc00337f536b2220f6d77f10bdf2"' readmeLastModified: Sun, 31 Jul 2022 22:08:12 GMT repositoryId: 505209983 description: >- A simple task planner API for listing tasks grouped by lists and managing them. created: '2022-06-19T20:15:01Z' updated: '2022-07-04T20:02:39Z' language: Kotlin archived: false stars: 1 watchers: 1 forks: 0 owner: reschoene logo: https://avatars.githubusercontent.com/u/32646475?v=4 license: MIT repoEtag: '"9868d3e41096918abf71baebbb6d8022c4ac1cfe37542ac42659a4f8e27c4e09"' repoLastModified: Mon, 04 Jul 2022 20:02:39 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/shocklateboy92/erabikata v3: true repositoryMetadata: base64Readme: >- IyBFcmFiaWthdGEgKOmBuOOBs+aWuSkKClRoaXMgaXMgYSBwcm9ncmFtIEkgd3JvdGUgdG8gaGVscCB0ZWFjaCBteXNlbGYgSmFwYW5lc2UgdGhyb3VnaCBhbmltZS5cCldpdGggaXQsIEkgd2VudCBmcm9tICJub3Qga25vd2luZyBhIHNpbmdsZSB3b3JkIG9mIEphcGFuZXNlIiB0byAiYWJsZSB0byBnbyBiYWNrcGFja2luZyB0aHJvdWdoIEphcGFuIiBpbiBfYWJvdXQgOSBtb250aHNfIQoKIVtTY3JlZW5zaG90IDEsIGRlc2t0b3AgbGF5b3V0XSguL3NjcmVlbnNob3QxLnBuZykKCkl0IHN0YXJ0ZWQgYXMgYSBxdWljayBiYXNoIHNjcmlwdCB0byBncmVwIHRoZSBzdWJ0aXRsZSBmaWxlcyBvZiB2YXJpb3VzIGFuaW1lIGZvciBleGFtcGxlcyBvZiB3b3JkcyBJIGhhZCB0byBsZWFybi4gQnV0IG92ZXIgdGltZQo= readmeEtag: '"a290a7d6878d045c974611269a61c8476c0ca393"' readmeLastModified: Tue, 16 Aug 2022 05:37:07 GMT repositoryId: 316345095 description: >- This is a program I wrote to help teach myself Japanese through anime. With it, I went from "not knowing a single word of Japanese" to "able to go backpacking through Japan" in about 9 months! created: '2020-11-26T22:01:38Z' updated: '2023-11-28T20:56:53Z' language: TypeScript archived: true stars: 1 watchers: 2 forks: 0 owner: shocklateboy92 logo: https://avatars.githubusercontent.com/u/856493?v=4 repoEtag: '"a348892dbda0cd3fbbdbede5b8838b5d6acc45f906c309c133ca66ab61000c9b"' repoLastModified: Tue, 28 Nov 2023 20:56:53 GMT foundInMaster: true id: 5093523d516b0eda1560ca8fb9daeef0 category: Server Implementations - source: openapi3 tags repository: https://github.com/1bitrs/cibo v3: true repositoryMetadata: base64Readme: >- IyMgQ2libwohW1B5dGhvbiBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3B5dGhvbi12My43LjUtYnJpZ2h0Z3JlZW4pCiFbU3lzdGVtIFBsYXRmb3JtXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3BsYXRmb3JtLXVidW50dS1icmlnaHRncmVlbi5zdmcpCiFbVHJhdmlzIENJXShodHRwczovL2FwcC50cmF2aXMtY2kuY29tL3lhbmdmYW45NzAyL2NpYm8uc3ZnP2JyYW5jaD1tYXN0ZXImc3RhdHVzPXVua25vd24pCiFbQ292ZXJhZ2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY29kZWNvdi9jL2dpdGh1Yi95YW5nZmFuOTcwMi9jaWJvKQpbIVtDb2RlIHN0eWxlOiBibGFja10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlJTIwc3R5bGUtYmxhY2stMDAwMDAwLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9wc2YvYmxhY2spCiFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS95YW5nZmFuOTcwMi9jaWJvKQohW1JlcG8gU2l6ZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvcmVwby1zaXplL3lhbmdmYW45NzAyL2NpYm8pCgoKIyMgSW5zdGFsbGluZwpgYGBzaGVsbApweXRob24gc2V0dXAucHkgaW5zdGFsbApgYGAKCiMjIEEgU2ltcGxlIEV4YW1wbGUKYGBgcHl0aG9uCmZyb20gY2libyBpbXBvcnQgSGFuZGxlciwgU2ltcGxlQ29udGV4dCwgQmx1ZXByaW50LCBCYXNlQXBpUXVlcnksIEJhc2VBcGlCb2R5CgphcGkgPSBCbHVlcHJpbnQoImFwaSIpCgpAYXBpLnBvc3QoIi9lY2hvIikKY2xhc3MgRWNob0hhbmRsZXIoSGFuZGxlcik6CgogICAgZGVjb3JhdG9ycyA9IFt0b2tlbl9hdXRoXQoKICAgIGNsYXNzIFF1ZXJ5KEJhc2VBcGlRdWVyeSk6CiAgICAgICAgYTogc3RyCiAgICAgICAgYjogT3B0aW9uYWxbTGlzdFtpbnRdXQogICAgICAgIGM6IE9wdGlvbmFsW0RpY3Rbc3RyLCBpbnRdXQoKICAgIGNsYXNzIEJvZHkoQmFzZUFwaUJvZHkpOgogICAgICAgIGQ6IFNldFtpbnRdCiAgICAgICAgZTogVHVwbGVbRGljdFtpbnQsIExpc3RdLCBEaWN0W2ludCwgTGlzdF1dCgogICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0OiBTaW1wbGVDb250ZXh0LCBxdWVyeTogUXVlcnksIGJvZHk6IEJvZHkpOgogICAgICAgICIiImVjaG8gdGhlIHJlY2V2aWVkIHBhcmFtcyIiIgogICAgICAgIHJldHVybiBjb250ZXh0LnN1Y2Nlc3MoCiAgICAgICAgICAgIGRhdGE9ZiJhOiB7cXVlcnkuYX0sIGI6IHtxdWVyeS5ifSwgYzoge3F1ZXJ5LmN9LCBkOiB7Ym9keS5kfSwgZToge2JvZHkuZX0iCiAgICAgICAgKQoKYGBgClVzZSBhIGN1c3RvbSBtb2RlbCBhbmQgdmFsaWRhdGUgZnVuY3Rpb24KYGBgcHl0aG9uCkBhcGkucG9zdCgiL3VzZXIiKQpjbGFzcyBVc2VySGFuZGxlcihIYW5kbGVyKToKICAgIGNsYXNzIEJvZHkoQmFzZUFwaUJvZHkpOgogICAgICAgIGNsYXNzIFVzZXIoQmFzZU1vZGVsKToKICAgICAgICAgICAgbmFtZTogc3RyID0gRmllbGQoZGVzY3JpcHRpb249IuWnk+WQjSIpCiAgICAgICAgICAgIGVtYWlsczogT3B0aW9uYWxbTGlzdFtzdHJdXSA9IEZpZWxkKGRlc2NyaXB0aW9uPSLpgq7nrrEiKQoKICAgICAgICAgICAgQGNsYXNzbWV0aG9kCiAgICAgICAgICAgIGRlZiB2YWxpZGF0ZShjbHMsIHZhbHVlOiBBbnkpOgogICAgICAgICAgICAgICAgb2JqID0gY2xzKCoqdmFsdWUpCiAgICAgICAgICAgICAgICBpZiBvYmouZW1haWxzOgogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhbGwoCiAgICAgICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlLm1hdGNoKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiXlswLTlhLXpBLVpfXXswLDE5fUBbMC05YS16QS1aXXsxLDEzfVwuW2NvbSxjbixuZXRdezEsM30kIiwgZW1haWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlbWFpbCBpbiBvYmouZW1haWxzCiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICApOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJlbWFpbCBpcyBub3QgdmFsaWQiKQogICAgICAgICAgICAgICAgcmV0dXJuIG9iagoKICAgICAgICB1c2VyOiBVc2VyCiAgICAgICAgaW52aXRlcjogc3RyCgogICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0OiBTaW1wbGVDb250ZXh0LCBib2R5OiBCb2R5KToKICAgICAgICAiIiJjdXN0b20gbW9kZWwgYW5kIHZhbGlkYXRlIiIiCiAgICAgICAgcmV0dXJuIGNvbnRleHQuc3VjY2Vzcyh1c2VyPWJvZHkudXNlciwgaW52aXRlcj1ib2R5Lmludml0ZXIpCmBgYAoKIyMgRGV2CnB1bGwgYHN0dWJzYCBmaWxlcwpgYGBzaGVsbApnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgLS1yZWN1cnNpdmUKYGBgCgojIyBEb2NzCltodHRwOi8vMTI3LjAuMC4xOjUwMDAvZG9jc10oaHR0cDovLzEyNy4wLjAuMTo1MDAwL2RvY3MpCgojIyBDb250cmlidXRpbmcgR3VpZGUKIyMjIEZpcnN0IHRpbWUgc2V0dXAKQ3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBhbmQgaW5zdGFsbCByZXF1aXJlbWVudHM6CmBgYGJhc2gKJCBweXRob24zIC1tIHZlbnYgZW52CiQgc291cmNlIGVudi9iaW4vYWN0aXZhdGUKJCBweXRob24gLW0gcGlwIGluc3RhbGwgLS11cGdyYWRlIHBpcCBzZXR1cHRvb2xzCiQgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzL2Rldi50eHQKJCBwaXAgaW5zdGFsbCAtZSAuCiQgcHJlLWNvbW1pdCBpbnN0YWxsCmBgYAo= readmeEtag: '"df307d04a11da549db3a7ae3a4c0dadcb9e16f8f"' readmeLastModified: Tue, 17 May 2022 03:19:28 GMT repositoryId: 359301009 description: A web framework that is composed of flask, pydantic, and openapi 3. created: '2021-04-19T02:07:52Z' updated: '2023-09-12T09:44:57Z' language: Python archived: true stars: 1 watchers: 1 forks: 0 owner: 1bitrs logo: https://avatars.githubusercontent.com/u/41955644?v=4 license: MIT repoEtag: '"48386a3794a9c0099180ce0fceb3b3f94552160fd7cc5a942e9400052704a60a"' repoLastModified: Tue, 12 Sep 2023 09:44:57 GMT foundInMaster: true category: Data Validators id: c790c04a41fae48236e11b8fbfa78f46 oldLocations: - https://github.com/whitewindss/cibo - source: - openapi3 tags - openapi31 tags repository: https://github.com/sv-tools/roas v3_1: true id: 6cefed15ccc85977666e11bdf863d37b repositoryMetadata: base64Readme: >- IyByb2FzCgpSdXN0IE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAodjIuMCwgdjMuMC5YIGFuZCB2My4xLlgpCgpbIVtjcmF0ZXMuaW9dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY3JhdGVzL3Yvcm9hcy5zdmcpXShodHRwczovL2NyYXRlcy5pby9jcmF0ZXMvcm9hcykKWyFbZG9jcy5yc10oaHR0cHM6Ly9kb2NzLnJzL3JvYXMvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9kb2NzLnJzL3JvYXMpCgpQYXJzaW5nIGFuZCBnZW5lcmF0aW5nIE9wZW5BUEkgU3BlY2lmaWNhdGlvbjoKCiogW3hdIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiB2Mi4wICgqKnYyKio6IG9sZCBzcGVjaWZpY2F0aW9uLCBkaXNhYmxlZCBieSBkZWZhdWx0KQoqIFt4XSBPcGVuQVBJIFNwZWNpZmljYXRpb24gdjMuMC54ICgqKnYzXzAqKjogZGVmYXVsdCBmZWF0dXJlKQoqIFt4XSBPcGVuQVBJIFNwZWNpZmljYXRpb24gdjMuMS54ICgqKnYzXzEqKjo7IGV4cGVyaW1lbnRhbCBhbmQgZGlzYWJsZWQgYnkgZGVmYXVsdCkKCj4gWyFDQVVUSU9OXQo+IFRoZSBwcm9qZWN0IGlzIGluIGVhcmx5IGRldmVsb3BtZW50IHN0YWdlLCBzbyB0aGUgQVBJIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KPiBDb25zaWRlciBhbnkgMC54LnggdmVyc2lvbiBhcyB1bnN0YWJsZSBhbmQgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzLgoKIyMgVXNhZ2UKClRvIHVzZSBgcm9hc2AsIGFkZCBpdCB0byB5b3VyIGBDYXJnby50b21sYDoKCmBgYHNoZWxsCmNhcmdvIGFkZCByb2FzCmBgYAoKb3IgbWFudWFsbHkgYWRkIHRoZSBmb2xsb3dpbmcgbGluZXM6CgpgYGB0b21sCltkZXBlbmRlbmNpZXNdCnJvYXMgPSAiMC40IiAgCmBgYAoKIyMgRXhhbXBsZXMKCmBgYHJ1c3QKdXNlIHJvYXM6OnYzXzE6OnNwZWM6OlNwZWM7CnVzZSByb2FzOjp2YWxpZGF0aW9uOjp7T3B0aW9ucywgVmFsaWRhdGV9OwoKLi4uCgpsZXQgc3BlYyA9IHNlcmRlX2pzb246OmZyb21fc3RyOjo8U3BlYz4ocmF3X2pzb24pLnVud3JhcCgpOwpzcGVjLnZhbGlkYXRlKE9wdGlvbnM6Oklnbm9yZU1pc3NpbmdUYWdzIHwgT3B0aW9uczo6SWdub3JlRXh0ZXJuYWxSZWZlcmVuY2VzKS51bndyYXAoKTsKCi4uLgoKYGBgCg== readmeEtag: '"988182e1a1d2f034d6af467183229ea4d11d85f7"' readmeLastModified: Sat, 05 Jul 2025 03:51:07 GMT repositoryId: 699556146 description: Rust OpenAPI Specification (v2, v3.0, v3.1) created: '2023-10-02T21:40:47Z' updated: '2025-10-27T20:33:22Z' language: Rust archived: false stars: 3 watchers: 1 forks: 1 owner: sv-tools logo: https://avatars.githubusercontent.com/u/59230487?v=4 license: Apache-2.0 repoEtag: '"746089129002482b932bcdda9150da9e56e08694a881175c51a7358cc949e0a2"' repoLastModified: Mon, 27 Oct 2025 20:33:22 GMT category: Parsers foundInMaster: true v3: true - source: openapi3 tags repository: https://github.com/romabilka/lets-go-chat v3: true id: cc00b439672c4bf3161d2400cf7951cc repositoryMetadata: base64Readme: >- IyBsZXRzLWdvLWNoYXQKCiMjIEhvdyB0byBydW4KMS4gQ2xvbmUgdGhlIHByb2plY3QKMi4gYGBgZ28gcnVuIGNtZC9sZXRzLWdvLWNoYXQvbWFpbi5nb2BgYAoKIyMgVG8gdHJ5IGdvIHRvIHRoZSBsaW5rCmh0dHA6Ly9sb2NhbGhvc3QvYXBpLwoKIyMgTGljZW5zZQpbTUlUIGxpY2Vuc2VdKExJQ0VOU0UubWQpLg== readmeEtag: '"7fc18cd6adc78355bc706fa16ad2780010f777be"' readmeLastModified: Tue, 15 Mar 2022 15:10:40 GMT repositoryId: 421817498 description: null created: '2021-10-27T12:53:20Z' updated: '2024-06-19T21:42:30Z' language: Go archived: false stars: 1 watchers: 1 forks: 0 owner: RomaBilka logo: https://avatars.githubusercontent.com/u/28790784?v=4 license: NOASSERTION repoEtag: '"bf7157e23eb3a67d735cbebcbfdc8c98e8c369fe1fdfb290ea2b7e6476d6b073"' repoLastModified: Wed, 19 Jun 2024 21:42:30 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/howmarketing/employee-maintenance-fullstack-sample-app v3: true id: 60f335779c80fc47c5bb01c79e52bc10 repositoryMetadata: base64Readme: >- IyMgU2ltcGxlIEVtcGxveWVlIE1haW50ZW5hbmNlIFdlYiBBcHBsaWNhdGlvbgoKIyMjIFNjcmVlbnNob3RzCgohW1NjcmVlbnNob3RdKC4vcHVibGljL2hvbWUucG5nKQoKIVtTY3JlZW5zaG90XSguL3B1YmxpYy9lbXBsb3llZS1wYWdlLnBuZykKCiMjIyBPdmVydmlldwoKVGhlIFNpbXBsZSBFbXBsb3llZSBNYWludGVuYW5jZSB3ZWIgYXBwbGljYXRpb24gaXMgZGVzaWduZWQgdG8gc3RyZWFtbGluZSB0aGUgbWFuYWdlbWVudCBvZiBlbXBsb3llZSByZWNvcmRzIGFuZCBkZXBhcnRtZW50IGFzc2lnbm1lbnRzIHdpdGhpbiBhbiBvcmdhbml6YXRpb24uIFRoaXMgZnVsbC1zdGFjayBhcHBsaWNhdGlvbiBwcm92aWRlcyBlc3NlbnRpYWwgQ1JVRCBvcGVyYXRpb25zIGZvciBlbXBsb3llZXMgYW5kIGRlcGFydG1lbnRzLCBhbG9uZ3NpZGUgYSB1c2VyLWZyaWVuZGx5IGludGVyZmFjZSB0byB2aWV3IGFuZCBtYW5hZ2UgZW1wbG95ZWUgaW5mb3JtYXRpb24uCgojIyMgRmVhdHVyZXMKCjEuICoqRGF0YWJhc2UgTWFuYWdlbWVudDoqKgogICAtIEEgcm9idXN0IGRhdGFiYXNlIHNjaGVtYSBkZXNpZ25lZCB1c2luZyBQcmlzbWEgT1JNIHRvIHN0b3JlIGFuZCBtYW5hZ2UgZW1wbG95ZWUgYW5kIGRlcGFydG1lbnQgZGF0YS4KICAgLSBUYWJsZXMgaW5jbHVkZSBFbXBsb3llZXMsIERlcGFydG1lbnRzLCBhbmQgRW1wbG95ZWUgRGVwYXJ0bWVudCBIaXN0b3J5IHRvIHRyYWNrIGNoYW5nZXMgb3ZlciB0aW1lLgoKMi4gKipXZWIgU2VydmljZSBFbmRwb2ludHM6KioKICAgLSAqKkVtcGxveWVlIEVuZHBvaW50czoqKgogICAgIC0gYEdldEFsbEVtcGxveWVlc2A6IFJldHJpZXZlIGEgbGlzdCBvZiBhbGwgZW1wbG95ZWVzLgogICAgIC0gYEdldEVtcGxveWVlQnlJZGA6IEZldGNoIGRldGFpbGVkIGluZm9ybWF0aW9uIGZvciBhIHNwZWNpZmljIGVtcGxveWVlLgogICAgIC0gYFVwZGF0ZUVtcGxveWVlYDogTW9kaWZ5IHRoZSBkZXRhaWxzIG9mIGFuIGV4aXN0aW5nIGVtcGxveWVlLgogICAgIC0gYERlbGV0ZUVtcGxveWVlYDogUmVtb3ZlIGFuIGVtcGxveWVlIGZyb20gdGhlIHN5c3RlbS4KICAgLSAqKkRlcGFydG1lbnQgRW5kcG9pbnRzOioqCiAgICAgLSBgR2V0QWxsRGVwYXJ0bWVudHNgOiBSZXRyaWV2ZSBhIGxpc3Qgb2YgYWxsIGRlcGFydG1lbnRzLgoKMy4gKipFbXBsb3llZSBMaXN0IFBhZ2U6KioKICAgLSBBIHdlYiBwYWdlIHRoYXQgZGlzcGxheXMgYSBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgZW1wbG95ZWVzLCBpbmNsdWRpbmcgdGhlaXIgbmFtZXMsIGRlcGFydG1lbnRzLCBoaXJlIGRhdGVzLCBhbmQgYXZhdGFycy4KICAgLSBIaXJlIGRhdGVzIGFyZSBkaXNwbGF5ZWQgaW4gYSB1c2VyLWZyaWVuZGx5IGZvcm1hdCwgaW5kaWNhdGluZyB0aGUgZHVyYXRpb24gb2YgZW1wbG95bWVudC4KICAgLSBJbmNsdWRlcyBhICJWaWV3IERldGFpbHMiIGJ1dHRvbiBmb3IgZWFjaCBlbXBsb3llZSB0byBhY2Nlc3MgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbi4KCiMjIyBUZWNobmljYWwgRGV0YWlscwoKMS4gKipQcmlzbWEgU2NoZW1hIERlZmluaXRpb246KioKICAgVGhlIFByaXNtYSBzY2hlbWEgaGFzIGJlZW4gdXBkYXRlZCB0byBpbmNsdWRlIHRocmVlIG1haW4gbW9kZWxzOiBEZXBhcnRtZW50LCBFbXBsb3llZSwgYW5kIEVtcGxveWVlRGVwYXJ0bWVudEhpc3RvcnkuIEhlcmUncyBhIGJyaWVmIG92ZXJ2aWV3OgoKICAgYGBgcHJpc21hOnNjaGVtYS5wcmlzbWEKCS8vIFRoaXMgaXMgeW91ciBQcmlzbWEgc2NoZW1hIGZpbGUsCgkvLyBsZWFybiBtb3JlIGFib3V0IGl0IGluIHRoZSBkb2NzOiBodHRwczovL3ByaXMubHkvZC9wcmlzbWEtc2NoZW1hCgoJLy8gRGVmaW5lIHRoZSBQcmlzbWEgY2xpZW50IGdlbmVyYXRvcgoJZ2VuZXJhdG9yIGNsaWVudCB7CgkJcHJvdmlkZXIgPSAicHJpc21hLWNsaWVudC1qcyIKCX0KCgkvLyBEZWZpbmUgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24KCWRhdGFzb3VyY2UgZGIgewoJCXByb3ZpZGVyICA9ICJwb3N0Z3Jlc3FsIgoJCXVybCAgICAgICA9IGVudigiUE9TVEdSRVNfUFJJU01BX1VSTCIpIC8vIHVzZXMgY29ubmVjdGlvbiBwb29saW5nCgkJZGlyZWN0VXJsID0gZW52KCJQT1NUR1JFU19VUkxfTk9OX1BPT0xJTkciKSAvLyB1c2VzIGEgZGlyZWN0IGNvbm5lY3Rpb24KCX0KCgkvLyBDb21tYW5kIHRvIHJ1biBtaWdyYXRpb25zOiBucHggcHJpc21hIG1pZ3JhdGUgZGV2CgoJLy8gRGVwYXJ0bWVudCBtb2RlbAoJbW9kZWwgRGVwYXJ0bWVudCB7CgkJaWQgICAgICAgICAgICAgICAgICAgICAgICBJbnQgICAgICAgICAgICAgICAgICAgICAgICAgQGlkIEBkZWZhdWx0KGF1dG9pbmNyZW1lbnQoKSkKCQlrZXkgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyAgICAgICAgICAgICAgICAgICAgICBAdW5pcXVlCgkJbGFiZWwgICAgICAgICAgICAgICAgICAgICBTdHJpbmcKCQlFbXBsb3llZSAgICAgICAgICAgICAgICAgIEVtcGxveWVlW10KCQlFbXBsb3llZURlcGFydG1lbnRIaXN0b3J5IEVtcGxveWVlRGVwYXJ0bWVudEhpc3RvcnlbXQoJCWNyZWF0ZWRBdCAgICAgICAgICAgICAgICAgRGF0ZVRpbWUgICAgICAgICAgICAgICAgICAgIEBkZWZhdWx0KG5vdygpKSBAbWFwKCJjcmVhdGVkX2F0IikKCQl1cGRhdGVkQXQgICAgICAgICAgICAgICAgIERhdGVUaW1lICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdChub3coKSkgQHVwZGF0ZWRBdCBAbWFwKCJ1cGRhdGVkX2F0IikKCgkJQEBtYXAoImRlcGFydG1lbnRzIikKCX0KCgkvLyBFbXBsb3llZSBtb2RlbAoJbW9kZWwgRW1wbG95ZWUgewoJCWlkICAgICAgICAgICAgICAgICAgICAgICAgSW50ICAgICAgICAgICAgICAgICAgICAgICAgIEBpZCBAZGVmYXVsdChhdXRvaW5jcmVtZW50KCkpCgkJcHVibGljSWQgICAgICAgICAgICAgICAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgQHVuaXF1ZSBAZGVmYXVsdCh1dWlkKCkpIEBtYXAoInB1YmxpY19pZCIpCgkJZmlyc3ROYW1lICAgICAgICAgICAgICAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgQG1hcCgiZmlyc3RfbmFtZSIpCgkJbGFzdE5hbWUgICAgICAgICAgICAgICAgICBTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgQG1hcCgibGFzdF9uYW1lIikKCQloaXJlRGF0ZSAgICAgICAgICAgICAgICAgIERhdGVUaW1lPyAgICAgICAgICAgICAgICAgICBAZGVmYXVsdChub3coKSkgQG1hcCgiaGlyZV9kYXRlIikKCQlpc0FjdGl2ZSAgICAgICAgICAgICAgICAgIEJvb2xlYW4gICAgICAgICAgICAgICAgICAgICBAbWFwKCJpc19hY3RpdmUiKQoJCWRlcGFydG1lbnQgICAgICAgICAgICAgICAgRGVwYXJ0bWVudD8gICAgICAgICAgICAgICAgIEByZWxhdGlvbihmaWVsZHM6IFtkZXBhcnRtZW50S2V5XSwgcmVmZXJlbmNlczogW2tleV0pCgkJZGVwYXJ0bWVudEtleSAgICAgICAgICAgICBTdHJpbmc/ICAgICAgICAgICAgICAgICAgICAgQG1hcCgiZGVwYXJ0bWVudF9rZXkiKQoJCXBob25lICAgICAgICAgICAgICAgICAgICAgU3RyaW5nCgkJYWRkcmVzcyAgICAgICAgICAgICAgICAgICBTdHJpbmcKCQlFbXBsb3llZURlcGFydG1lbnRIaXN0b3J5IEVtcGxveWVlRGVwYXJ0bWVudEhpc3RvcnlbXQoJCWNyZWF0ZWRBdCAgICAgICAgICAgICAgICAgRGF0ZVRpbWUgICAgICAgICAgICAgICAgICAgIEBkZWZhdWx0KG5vdygpKSBAbWFwKCJjcmVhdGVkX2F0IikKCQl1cGRhdGVkQXQgICAgICAgICAgICAgICAgIERhdGVUaW1lICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdChub3coKSkgQHVwZGF0ZWRBdCBAbWFwKCJ1cGRhdGVkX2F0IikKCgkJQEBtYXAoImVtcGxveWVlcyIpCgl9CgoJLy8gRW1wbG95ZWVEZXBhcnRtZW50SGlzdG9yeSBtb2RlbAoJbW9kZWwgRW1wbG95ZWVEZXBhcnRtZW50SGlzdG9yeSB7CgkJaWQgICAgICAgICAgICAgIEludCAgICAgICAgQGlkIEBkZWZhdWx0KGF1dG9pbmNyZW1lbnQoKSkKCQllbXBsb3llZSAgICAgICAgRW1wbG95ZWUgICBAcmVsYXRpb24oZmllbGRzOiBbZW1wbG95ZWVJZF0sIHJlZmVyZW5jZXM6IFtpZF0pCgkJZW1wbG95ZWVJZCAgICAgIEludCAgICAgICAgQG1hcCgiZW1wbG95ZWVfaWQiKQoJCWRlcGFydG1lbnQgICAgICBEZXBhcnRtZW50IEByZWxhdGlvbihmaWVsZHM6IFtkZXBhcnRtZW50S2V5XSwgcmVmZXJlbmNlczogW2tleV0pCgkJZGVwYXJ0bWVudEtleSAgIFN0cmluZyAgICAgQG1hcCgiZGVwYXJ0bWVudF9rZXkiKQoJCWRlcGFydG1lbnRMYWJlbCBTdHJpbmcgICAgIEBkZWZhdWx0KCIiKSBAbWFwKCJkZXBhcnRtZW50X2xhYmVsIikKCQljcmVhdGVkQXQgICAgICAgRGF0ZVRpbWUgICBAZGVmYXVsdChub3coKSkgQG1hcCgiY3JlYXRlZF9hdCIpCgkJdXBkYXRlZEF0ICAgICAgIERhdGVUaW1lICAgQGRlZmF1bHQobm93KCkpIEB1cGRhdGVkQXQgQG1hcCgidXBkYXRlZF9hdCIpCgoJCUBAbWFwKCJlbXBsb3llZV9kZXBhcnRtZW50X2hpc3RvcnkiKQoJfQogICBgYGAKCiAgIC0gKipEZXBhcnRtZW50IE1vZGVsOioqIENvbnRhaW5zIGZpZWxkcyBmb3IgZGVwYXJ0bWVudCBJRCwgdW5pcXVlIGtleSwgbGFiZWwsIGFuZCB0aW1lc3RhbXBzLiBJdCByZWxhdGVzIHRvIG11bHRpcGxlIGVtcGxveWVlcyBhbmQgZGVwYXJ0bWVudCBoaXN0b3J5IHJlY29yZHMuCiAgIC0gKipFbXBsb3llZSBNb2RlbDoqKiBJbmNsdWRlcyBmaWVsZHMgZm9yIGVtcGxveWVlIElELCB1bmlxdWUgcHVibGljIElELCBmaXJzdCBhbmQgbGFzdCBuYW1lcywgaGlyZSBkYXRlLCBkZXBhcnRtZW50IGFzc29jaWF0aW9uLCBwaG9uZSwgYWRkcmVzcywgYW5kIHRpbWVzdGFtcHMuCiAgIC0gKipFbXBsb3llZSBEZXBhcnRtZW50IEhpc3RvcnkgTW9kZWw6KiogVHJhY2tzIHRoZSBoaXN0b3J5IG9mIGVtcGxveWVlcycgZGVwYXJ0bWVudCBhc3NpZ25tZW50cywgd2l0aCBmaWVsZHMgZm9yIGVtcGxveWVlIElELCBkZXBhcnRtZW50IGtleSwgZGVwYXJ0bWVudCBsYWJlbCwgYW5kIHRpbWVzdGFtcHMuCgoyLiAqKlJlcG9zaXRvcnkgUGF0dGVybiBJbXBsZW1lbnRhdGlvbjoqKgogICBXZSd2ZSBpbXBsZW1lbnRlZCB0aGUgcmVwb3NpdG9yeSBwYXR0ZXJuIHRvIGFic3RyYWN0IGRhdGFiYXNlIG9wZXJhdGlvbnMuIEhlcmUncyBhbiBleGFtcGxlIG9mIHRoZSBFbXBsb3llZVJlcG9zaXRvcnk6CgogICBgYGB0eXBlc2NyaXB0OnNyYy9yZXBvc2l0b3JpZXMvZW1wbG95ZWVSZXBvc2l0b3J5LnRzCglpbXBvcnQgeyBQcmlzbWFDbGllbnQgfSBmcm9tICJAcHJpc21hL2NsaWVudCI7CglpbXBvcnQgeyBDcmVhdGVFbXBsb3llZURUTywgRW1wbG95ZWVEVE8gfSBmcm9tICdAL2R0b3MvZW1wbG95ZWVEVE8nOwoKCWV4cG9ydCBjbGFzcyBFbXBsb3llZVJlcG9zaXRvcnkgewoJCWNvbnN0cnVjdG9yKHByaXZhdGUgcHJpc21hOiBQcmlzbWFDbGllbnQpIHsgfQoKCQlhc3luYyBjcmVhdGVFbXBsb3llZShkYXRhOiBDcmVhdGVFbXBsb3llZURUTyk6IFByb21pc2U8RW1wbG95ZWVEVE8+IHsKCQkJY29uc3QgY3JlYXRlZEVtcGxveWVlID0gYXdhaXQgdGhpcy5wcmlzbWEuZW1wbG95ZWUuY3JlYXRlKHsKCQkJCWRhdGEsCgkJCQlpbmNsdWRlOiB7CgkJCQkJZGVwYXJ0bWVudDogdHJ1ZSwKCQkJCQlFbXBsb3llZURlcGFydG1lbnRIaXN0b3J5OiB0cnVlCgkJCQl9CgkJCX0pOwoJCQlpZiAoZGF0YS5kZXBhcnRtZW50S2V5KSB7CgkJCQlhd2FpdCB0aGlzLnByaXNtYS5lbXBsb3llZURlcGFydG1lbnRIaXN0b3J5LmNyZWF0ZSh7CgkJCQkJZGF0YTogewoJCQkJCQllbXBsb3llZUlkOiBjcmVhdGVkRW1wbG95ZWUuaWQsCgkJCQkJCWRlcGFydG1lbnRLZXk6IGRhdGEuZGVwYXJ0bWVudEtleSwKCQkJCQkJZGVwYXJ0bWVudExhYmVsOiBjcmVhdGVkRW1wbG95ZWUuZGVwYXJ0bWVudD8ubGFiZWwgfHwgIiIsCgkJCQkJfQoJCQkJfSk7CgkJCX0KCQkJcmV0dXJuIGNyZWF0ZWRFbXBsb3llZSBhcyBFbXBsb3llZURUTzsKCQl9Cgl9CgogICBgYGAKCiAgIFRoaXMgcmVwb3NpdG9yeSBjZW50cmFsaXplcyBkYXRhYmFzZSBvcGVyYXRpb25zIHJlbGF0ZWQgdG8gZW1wbG95ZWVzLCBpbXByb3ZpbmcgY29kZSBvcmdhbml6YXRpb24gYW5kIG1haW50YWluYWJpbGl0eS4KCjMuICoqQVBJIFJvdXRlcyBSZWZhY3RvcmluZzoqKgogICBBUEkgcm91dGVzIGhhdmUgYmVlbiByZWZhY3RvcmVkIHRvIHVzZSB0aGUgbmV3IHJlcG9zaXRvcnkgcGF0dGVybiBhbmQgRFRPcy4gRm9yIGV4YW1wbGUsIHRoZSBlbXBsb3llZSBjcmVhdGlvbiByb3V0ZSBub3cgbG9va3MgbGlrZSB0aGlzOgoKICAgYGBgdHlwZXNjcmlwdDpzcmMvYXBwL2FwaS9lbXBsb3llZS9yb3V0ZS50cwoJaW1wb3J0IHsgTmV4dFJlcXVlc3QgfSBmcm9tICJuZXh0L3NlcnZlciI7CglpbXBvcnQgeyBQcmlzbWFDbGllbnQgfSBmcm9tICJAcHJpc21hL2NsaWVudCI7CglpbXBvcnQgeyB6IH0gZnJvbSAnem9kJzsKCWltcG9ydCB7IEVtcGxveWVlUmVwb3NpdG9yeSB9IGZyb20gJ0AvcmVwb3NpdG9yaWVzL2VtcGxveWVlUmVwb3NpdG9yeSc7CglpbXBvcnQgeyBDcmVhdGVFbXBsb3llZURUTyB9IGZyb20gJ0AvZHRvcy9lbXBsb3llZURUTyc7CglpbXBvcnQgeyBFbXBsb3llZVJlc3BvbnNlRFRPIH0gZnJvbSAnQC9kdG9zL3Jlc3BvbnNlRFRPJzsKCWltcG9ydCB7IGNyZWF0ZUVtcGxveWVlU2NoZW1hIH0gZnJvbSAnQC9zY2hlbWFzL2VtcGxveWVlU2NoZW1hJzsKCWltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ0AvdXRpbHMvbG9nZ2VyJzsKCglleHBvcnQgY29uc3QgZHluYW1pYyA9ICJmb3JjZS1keW5hbWljIjsKCgkvLyBTaW5nbGV0b24gcGF0dGVybiBmb3IgUHJpc21hQ2xpZW50IHRvIGF2b2lkIG11bHRpcGxlIGluc3RhbmNlcwoJY29uc3QgcHJpc21hID0gbmV3IFByaXNtYUNsaWVudCgpOwoJY29uc3QgZW1wbG95ZWVSZXBvc2l0b3J5ID0gbmV3IEVtcGxveWVlUmVwb3NpdG9yeShwcmlzbWEpOwoKCWV4cG9ydCB0eXBlIElDcmVhdGVSZXNwb25zZVByb3BlcnRpZXMgPSBFbXBsb3llZVJlc3BvbnNlRFRPICYgeyBzdGF0dXM6IG51bWJlciwgc3RhdHVzVGV4dDogc3RyaW5nIH07CgoJY29uc3QgY3JlYXRlUmVzcG9uc2UgPSAoewoJCXN1Y2Nlc3MgPSBmYWxzZSwKCQltZXNzYWdlID0gIiIsCgkJZGF0YSA9IHt9IGFzIEVtcGxveWVlUmVzcG9uc2VEVE9bImRhdGEiXSwKCQlzdGF0dXMgPSAyMDAsCgkJc3RhdHVzVGV4dCA9ICJPSyIKCX06IElDcmVhdGVSZXNwb25zZVByb3BlcnRpZXMpOiBSZXNwb25zZSA9PiB7CgkJY29uc3QgcmVzcG9uc2VPYmplY3Q6IEVtcGxveWVlUmVzcG9uc2VEVE8gPSB7IHN1Y2Nlc3MsIG1lc3NhZ2UsIGRhdGEgfTsKCQlyZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlT2JqZWN0KSwgewoJCQlzdGF0dXMsCgkJCWhlYWRlcnM6IHsKCQkJCSJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIsCgkJCQkiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIjogIioiLCAvLyBDb25zaWRlciByZXN0cmljdGluZyB0aGlzIGZvciBzZWN1cml0eQoJCQl9LAoJCQlzdGF0dXNUZXh0LAoJCX0pOwoJfTsKCglleHBvcnQgYXN5bmMgZnVuY3Rpb24gUE9TVChyZXF1ZXN0OiBOZXh0UmVxdWVzdCkgewoJCXRyeSB7CgkJCWNvbnN0IGJvZHk6IENyZWF0ZUVtcGxveWVlRFRPID0gYXdhaXQgcmVxdWVzdC5qc29uKCk7CgkJCWNvbnN0IHZhbGlkYXRlZERhdGEgPSBjcmVhdGVFbXBsb3llZVNjaGVtYS5wYXJzZShib2R5KTsKCQkJY29uc3QgY3JlYXRlZEVtcGxveWVlID0gYXdhaXQgZW1wbG95ZWVSZXBvc2l0b3J5LmNyZWF0ZUVtcGxveWVlKHZhbGlkYXRlZERhdGEpOwoJCQlsb2dnZXIuaW5mbyhgRW1wbG95ZWUgY3JlYXRlZDogJHtjcmVhdGVkRW1wbG95ZWUuaWR9YCk7CgkJCXJldHVybiBjcmVhdGVSZXNwb25zZSh7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2U6ICJTdWNjZXNzIiwgZGF0YTogY3JlYXRlZEVtcGxveWVlLCBzdGF0dXM6IDIwMSwgc3RhdHVzVGV4dDogIkNSRUFURUQiIH0pOwoJCX0gY2F0Y2ggKGU6IGFueSkgewoJCQljb25zdCBlcnJvclJlc3BvbnNlID0gewoJCQkJc3VjY2VzczogZmFsc2UsCgkJCQltZXNzYWdlOiBlPy5tZXNzYWdlIHx8ICJTb21ldGhpbmcgd2VudCB3cm9uZyIsCgkJCQlzdGF0dXM6IDUwMCwKCQkJCXN0YXR1c1RleHQ6ICJJbnRlcm5hbCBTZXJ2ZXIgRXJyb3IiLAoJCQl9IGFzIElDcmVhdGVSZXNwb25zZVByb3BlcnRpZXM7CgkJCWlmIChlIGluc3RhbmNlb2Ygei5ab2RFcnJvcikgewoJCQkJZXJyb3JSZXNwb25zZS5tZXNzYWdlID0gZS5lcnJvcnMubWFwKGVyciA9PiBgJHtlcnIucGF0aH06ICR7ZXJyLm1lc3NhZ2V9YCkuam9pbignLCAnKTsKCQkJCWVycm9yUmVzcG9uc2Uuc3RhdHVzID0gNDAwOwoJCQkJZXJyb3JSZXNwb25zZS5zdGF0dXNUZXh0ID0gIkJhZCBSZXF1ZXN0IjsKCQkJCWxvZ2dlci5lcnJvcihgRXJyb3IgY3JlYXRpbmcgZW1wbG95ZWU6ICR7ZXJyb3JSZXNwb25zZS5tZXNzYWdlfWApOwoJCQkJcmV0dXJuIGNyZWF0ZVJlc3BvbnNlKGVycm9yUmVzcG9uc2UpOwoJCQl9CgkJCWxvZ2dlci5lcnJvcihgRXJyb3IgY3JlYXRpbmcgZW1wbG95ZWU6ICR7ZXJyb3JSZXNwb25zZS5tZXNzYWdlfWApOwoJCQlyZXR1cm4gY3JlYXRlUmVzcG9uc2UoZXJyb3JSZXNwb25zZSk7CgkJfQoJfQoKICAgYGBgCgogICBUaGlzIHJlZmFjdG9yaW5nIGVuaGFuY2VzIGVycm9yIGhhbmRsaW5nIGFuZCBpbXBsZW1lbnRzIGxvZ2dpbmcgaW4gQVBJIHJvdXRlcy4KCiMjIyBVc2FnZQoKMS4gKipQcmlzbWEgU2NoZW1hIERlZmluaXRpb246KioKICAgLSAqKkRlcGFydG1lbnQgTW9kZWw6KiogQ29udGFpbnMgZmllbGRzIGZvciBkZXBhcnRtZW50IElELCB1bmlxdWUga2V5LCBsYWJlbCwgYW5kIHRpbWVzdGFtcHMuIEl0IHJlbGF0ZXMgdG8gbXVsdGlwbGUgZW1wbG95ZWVzIGFuZCBkZXBhcnRtZW50IGhpc3RvcnkgcmVjb3Jkcy4KICAgLSAqKkVtcGxveWVlIE1vZGVsOioqIEluY2x1ZGVzIGZpZWxkcyBmb3IgZW1wbG95ZWUgSUQsIHVuaXF1ZSBwdWJsaWMgSUQsIGZpcnN0IGFuZCBsYXN0IG5hbWVzLCBoaXJlIGRhdGUsIGRlcGFydG1lbnQgYXNzb2NpYXRpb24sIHBob25lLCBhZGRyZXNzLCBhbmQgdGltZXN0YW1wcy4KICAgLSAqKkVtcGxveWVlIERlcGFydG1lbnQgSGlzdG9yeSBNb2RlbDoqKiBUcmFja3MgdGhlIGhpc3Rvcnkgb2YgZW1wbG95ZWVzJyBkZXBhcnRtZW50IGFzc2lnbm1lbnRzLCB3aXRoIGZpZWxkcyBmb3IgZW1wbG95ZWUgSUQsIGRlcGFydG1lbnQga2V5LCBkZXBhcnRtZW50IGxhYmVsLCBhbmQgdGltZXN0YW1wcy4KCjIuICoqVGVjaG5vbG9naWVzIFVzZWQ6KioKICAgLSAqKkJhY2tlbmQ6KiogTm9kZS5qcywgd2l0aCBzZXJ2ZXItc2lkZSBmb3IgYmFja2VuZCBSRVNUZnVsIEFQSXMuCiAgIC0gKipGcm9udGVuZDoqKiBOZXh0LmpzQDE0IHdpdGggUmVhY3QuanNAMTkgaW1wbGVtZW50ZWQgdGhlIHNlcnZlciBhY3Rpb25zLgogICAtICoqRGF0YWJhc2U6KiogUHJpc21hIE9STSB3aXRoIFNRTGl0ZSBmb3IgZGV2ZWxvcG1lbnQgZGF0YWJhc2UgZW52aXJvbm1lbnQuCiAgIC0gKipPdGhlciBUb29sczoqKiBHaXQgZm9yIHZlcnNpb24gY29udHJvbCwgR2l0SHViIGZvciByZXBvc2l0b3J5IGhvc3RpbmcsIHZlcmNlbCBmb3IgZGVwbG95bWVudHMuCgozLiAqKkluc3RydWN0aW9uczo6KioKICAgLSAqKkRhdGFiYXNlIFNldHVwOioqIENyZWF0ZSB0aGUgbmVjZXNzYXJ5IHRhYmxlcyBhbmQgcmVsYXRpb25zaGlwcyB1c2luZyBQcmlzbWEgbWlncmF0aW9ucy4KICAgLSAqKkFQSSBEZXZlbG9wbWVudDoqKiBJbXBsZW1lbnQgdGhlIHJlcXVpcmVkIGVuZHBvaW50cyB0byBpbnRlcmFjdCB3aXRoIHRoZSBlbXBsb3llZSBhbmQgZGVwYXJ0bWVudCBkYXRhLgogICAtICoqVUkgSW1wbGVtZW50YXRpb246KiogRGV2ZWxvcCB0aGUgRW1wbG95ZWUgTGlzdCBwYWdlIHRvIGRpc3BsYXkgYW5kIG1hbmFnZSBlbXBsb3llZSByZWNvcmRzIGVmZmVjdGl2ZWx5LgoKNC4gKipEZWxpdmVyYWJsZXM6KioKICAgLSAqKkFQSSBEZXZlbG9wbWVudDoqKiBUaGUgcmVxdWlyZWQgZW5kcG9pbnRzIGhhdmUgYmVlbiBpbXBsZW1lbnRlZCB1c2luZyB0aGUgcmVwb3NpdG9yeSBwYXR0ZXJuIGFuZCBEVE9zLiBFeGFtcGxlcyBpbmNsdWRlOgogICAgIC0gQ3JlYXRlRW1wbG95ZWUKICAgICAtIFVwZGF0ZUVtcGxveWVlCiAgICAgLSBVcGRhdGVFbXBsb3llZURlcGFydG1lbnQKICAgICAtIEdldEFsbEVtcGxveWVlcwogICAgIC0gR2V0RW1wbG95ZWVCeUlkCiAgICAgLSBEZWxldGVFbXBsb3llZQogICAgIC0gR2V0QWxsRGVwYXJ0bWVudHMKICAgLSAqKlVJIEltcGxlbWVudGF0aW9uOioqIAogICAgIFRoZSBFbXBsb3llZSBMaXN0IHBhZ2UgaGFzIGJlZW4gZGV2ZWxvcGVkIHRvIGRpc3BsYXkgYW5kIG1hbmFnZSBlbXBsb3llZSByZWNvcmRzIGVmZmVjdGl2ZWx5LCBpbmNsdWRpbmcgZmVhdHVyZXMgbGlrZSB2aWV3aW5nIGVtcGxveWVlIGRldGFpbHMgYW5kIHVwZGF0aW5nIGRlcGFydG1lbnQgYXNzaWdubWVudHMuCgo+IFRoZSBTaW1wbGUgRW1wbG95ZWUgTWFpbnRlbmFuY2Ugd2ViIGFwcGxpY2F0aW9uIG5vdyBpbmNvcnBvcmF0ZXMgdGhlIHJlcG9zaXRvcnkgcGF0dGVybiwgRFRPcywgYW5kIGltcHJvdmVkIGVycm9yIGhhbmRsaW5nLCByZXN1bHRpbmcgaW4gYSBtb3JlIG1haW50YWluYWJsZSBhbmQgcm9idXN0IHNvbHV0aW9uIGZvciBtYW5hZ2luZyBlbXBsb3llZSByZWNvcmRzIGFuZCBkZXBhcnRtZW50YWwgYXNzaWdubWVudHMuCj4KCiMjIyBDb25jbHVzaW9uCgpUaGUgU2ltcGxlIEVtcGxveWVlIE1haW50ZW5hbmNlIHdlYiBhcHBsaWNhdGlvbiBpcyBhIGNvbXByZWhlbnNpdmUgc29sdXRpb24gZm9yIG1hbmFnaW5nIGVtcGxveWVlIHJlY29yZHMgYW5kIGRlcGFydG1lbnRhbCBhc3NpZ25tZW50cywgcHJvdmlkaW5nIGFuIGludHVpdGl2ZSBpbnRlcmZhY2UgYW5kIHJvYnVzdCBiYWNrZW5kIHRvIGVuc3VyZSBlZmZpY2llbnQgZGF0YSBoYW5kbGluZyBhbmQgcmV0cmlldmFsLgoKLS0tCgojIyBTVEFSVElORyBQT0lOVAoKYGBgYmFzaApucG0gaSAtLWZvcmNlCm5wbSBpIC0tbGVnYWN5LXBlZXItZGVwcwoKbnBtIGkgLUQgamVzdCBAdHlwZXMvamVzdCBAdGVzdGluZy1saWJyYXJ5L2plc3QtZG9tIHRzLWplc3QgQHRlc3RpbmctbGlicmFyeS91c2VyLWV2ZW50IGplc3QtZW52aXJvbm1lbnQtanNkb20gQHRlc3RpbmctbGlicmFyeS9yZWFjdCAtLWZvcmNlCgpucHggcHJpc21hIGdlbmVyYXRlCm5wbSBydW4gYnVpbGQKbnBtIHJ1biB0ZXN0Cm5wbSBydW4gc3RhcnQKYGBgCgojIyBBU1NFU1NNRU5UIFJFQURNRQoKQSBzaW1wbGUgd2ViIGFwcGxpY2F0aW9uIGZvciBtYW5hZ2luZyBlbXBsb3llZSByZWNvcmRzLCBidWlsdCBhcyBhIGZ1bGxzdGFjayBhc3Nlc3NtZW50IHRvIGRlbW9uc3RyYXRlIHByb2ZpY2llbmN5IGluIHNvZnR3YXJlIGFyY2hpdGVjdHVyZSwgY29kZSBxdWFsaXR5LCBkZXNpZ24gcGF0dGVybnMsIGFuZCBiZXN0IHByYWN0aWNlcy4KCiMjIyBGdWxsc3RhY2sgQXNzZXNzbWVudCDigJMgQ2FuZGlkYXRlIEluc3RydWN0aW9ucwoKKipFeHBlY3RhdGlvbnMqKgotIERlbW9uc3RyYXRlIGEgc29saWQgYW5kIHJvYnVzdCBhcmNoaXRlY3R1cmUuCi0gSGlnaGx5IG1haW50YWluYWJsZSBhbmQgbGVnaWJsZSBjb2RlLgotIFVzZSBhbmQga25vd2xlZGdlIG9mIGRlc2lnbiBwYXR0ZXJucy4KLSBGb2xsb3cgc29mdHdhcmUgZGV2ZWxvcG1lbnQgYmVzdCBwcmFjdGljZXMuCi0gRWZmZWN0aXZlIGFuZCBjb25zaXN0ZW50IG5hbWluZyBjb252ZW50aW9ucy4KLSBDb2RlIGNyYWZ0ZWQgd2l0aCBtb2Rlcm4gZGV2ZWxvcG1lbnQgbWV0aG9kb2xvZ2llcy4KLSBJZiB5b3UgY2hvb3NlIHRvIHNpbXBsaWZ5IHlvdXIgY29kZSBpbiB0aGUgbmFtZSBvZiBzcGVlZCAoaS5lLiAicHJvdG90eXBlIiBzdHlsZSBkZXZlbG9wbWVudCkgYmUgYWJsZSB0byBleHBsYWluIHRoZSBzaG9ydGN1dHMgeW91IHRvb2sgYW5kIHdoeS4KLSBTbWFydCBVSSBwYXR0ZXJucyBhcmUgbm90IGFsbG93ZWQuCi0gQ29kZSBzbmlwcGV0cyBmcm9tIG9sZCBwcm9qZWN0cyBhbmQvb3Igb3BlbmluZyBhbnkgb2xkIHByb2plY3RzIGFyZSBzdHJpY3RseSBmb3JiaWRkZW4uCi0gUHJpb3JpdGl6ZSBnb29kIGNvZGUgZGVzaWduIGFuZCBhcmNoaXRlY3R1cmUgb3ZlciBkZXZlbG9wbWVudCBzcGVlZC4KLSBSZWFkIHRoZSBpbnN0cnVjdGlvbnMgY2FyZWZ1bGx5IGFzIG9ubHkgY29tcGxldGUgYW5kIHdvcmtpbmcgc29sdXRpb25zIHdpbGwgYmUgcmV2aWV3ZWQuCi0gWW91ciBjb2RlIHNob3VsZCBjb21waWxlIGFuZCBydW4gd2l0aCB1cyBkb2luZyBhIHNpbXBsZSBwYWNrYWdlIHJlc3RvcmUgYW5kIG5vdGhpbmcgbW9yZS4KCioqU3VibWl0dGluZyB5b3VyIGNvZGUqKgotIEdvIHRvIFtjb21wYW55LXJlcG8tbWFuYWdlbWVudF0oaHR0cHM6Ly9naXQuY29tcGFueS1yZXBvLW1hbmFnZW1lbnQuY29tKSBhbmQgcmVnaXN0ZXIgb3IgbG9naW4gaWYgeW91IGFscmVhZHkgaGF2ZSBhbiBhY2NvdW50LgotIENyZWF0ZSBhIHJlcG9zaXRvcnkgdG8gd29yayBvbiBhbmQgZG8gY29uc3RhbnQgY29tbWl0cyBhcyB5b3Ugd291bGQgbm9ybWFsbHkgZG8uCi0gWW91IGhhdmUgbm8gdGltZSBsaW1pdCB0byBjb21wbGV0ZSB0aGUgYXNzZXNzbWVudC4KLSBPbmNlIHlvdSBhcmUgcmVhZHksIGFkZCBhIGJyaWVmIGV4cGxhbmF0aW9uIG9mIHlvdXIgc29sdXRpb24gYW5kIGFyY2hpdGVjdHVyZSB0byB0aGUgUkVBRE1FIGZpbGUgYW5kIHNoYXJlIHlvdXIgZ2l0IHJlcG9zaXRvcnkgVVJMIHdpdGggeW91ciByZWNydWl0ZXIuCgojIyMgU2ltcGxlIEVtcGxveWVlIE1haW50ZW5hbmNlIHdlYiBhcHAKCioqRmlyc3QgVGFzayAoRGF0YWJhc2UpOioqCkNyZWF0ZSBhIGRhdGFiYXNlIHRvIHN0b3JlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246CjEuIEZpcnN0IE5hbWUKMi4gTGFzdCBOYW1lCjMuIEhpcmUgRGF0ZQo0LiBEZXBhcnRtZW50CjUuIFBob25lCjYuIEFkZHJlc3MKCkNyZWF0ZSBhbGwgbmVlZGVkIHRhYmxlcyBhbmQgcmVsYXRpb25zaGlwcy4KCioqU2Vjb25kIFRhc2sgKFByb2dyYW1taW5nIEV4ZXJjaXNlKToqKgpDcmVhdGUgYSBXZWIgU2VydmljZSB0aGF0IGV4cG9zZXMgdGhlIGZvbGxvd2luZyBlbmRwb2ludHM6CjEuICoqRm9yIEVtcGxveWVlIEVudGl0eToqKgogICAtIFNob3VsZCBpbmNsdWRlIHRoZSBlbXBsb3llZSBkZXBhcnRtZW50IGluIHRleHQgZm9ybS4KICAgLSBHZXRBbGxFbXBsb3llZXMKICAgLSBHZXRFbXBsb3llZUJ5SWQKICAgLSBVcGRhdGVFbXBsb3llZQogICAtIERlbGV0ZUVtcGxveWVlCiAgIAoyLiAqKkZvciBEZXBhcnRtZW50IEVudGl0eToqKgogICAtIEdldEFsbERlcGFydG1lbnRzCgoqKlRoaXJkIFRhc2sgKEVtcGxveWVlIExpc3QgcGFnZSk6KioKQ3JlYXRlIGEgbmV3IHBhZ2UgdG8gc2hvdyBhIGxpc3Qgb2YgZW1wbG95ZWVzLiBZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIG1vY2t1cCBhcyByZWZlcmVuY2Ugb3IgY3JlYXRlIHlvdXIgb3duIGRlc2lnbiBpZiB5b3UgcHJlZmVyLgoKVGhpcyBwYWdlIHNob3VsZCBzaG93IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246Ci0gRW1wbG95ZWUgTmFtZSwgRGVwYXJ0bWVudCwgSGlyZSBEYXRlLCBFbXBsb3llZSBBdmF0YXIKLSBJdCBzaG91bGQgZGlzcGxheSB0aGUgZGF0ZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDogTWF5IDIsIDIwMjEgKDJ5IOKAkyAxbSDigJMgNGQpCiAgLSBUaGUgZGF0ZSBpbiBwYXJlbnRoZXNpcyBkZXRlcm1pbmVzIGhvdyBsb25nIHRoYXQgZW1wbG95ZWUgaGFzIGJlZW4gaW4gdGhlIGNvbXBhbnkuCi0gQSAiVmlldyBEZXRhaWxzIiBidXR0b24gdGhhdCB3aWxsIHRha2UgdGhlIHVzZXIgdG8gdGhlIGZvbGxvd2luZyBwYWdlLgoKCiMjIE1vZGVsaW5nIHRoZSBEYXRhYmFzZSB3aXRoIFByaXNtYQoKVG8gbW9kZWwgdGhlIGRhdGFiYXNlIHVzaW5nIFByaXNtYSBmb3IgdGhlIHJlcXVpcmVtZW50cyB5b3UndmUgb3V0bGluZWQsIHdlIG5lZWQgdG8gZGVmaW5lIHRoZSBzY2hlbWEgdGhhdCBpbmNsdWRlcyB0YWJsZXMgZm9yIGBFbXBsb3llZWAgYW5kIGBEZXBhcnRtZW50YCwgYW5kIGVzdGFibGlzaCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZW0uIEhlcmXigJlzIGhvdyB5b3UgY2FuIG1vZGVsIGl0OgoKIyMjIFByaXNtYSBTY2hlbWEgRGVmaW5pdGlvbgoKQ3JlYXRlIGEgbmV3IFByaXNtYSBzY2hlbWEgZmlsZSAodHlwaWNhbGx5IG5hbWVkIGBzY2hlbWEucHJpc21hYCkgYW5kIGRlZmluZSB0aGUgc2NoZW1hIGFzIGZvbGxvd3M6CgpgYGBwcmlzbWEKLy8gVGhpcyBpcyB5b3VyIFByaXNtYSBzY2hlbWEgZmlsZSwKLy8gbGVhcm4gbW9yZSBhYm91dCBpdCBpbiB0aGUgZG9jczogaHR0cHM6Ly9wcmlzLmx5L2QvcHJpc21hLXNjaGVtYQoKZ2VuZXJhdG9yIGNsaWVudCB7Cn0KCmRhdGFzb3VyY2UgZGIgewp9CgovLyBucHggcHJpc21hIG1pZ3JhdGUgZGV2Cgptb2RlbCBEZXBhcnRtZW50IHsKfQoKbW9kZWwgRW1wbG95ZWUgewp9Cgptb2RlbCBFbXBsb3llZURlcGFydG1lbnRIaXN0b3J5IHsKfQoKYGBgClRoZSBwcm92aWRlZCBzY2hlbWEgZGVmaW5lcyB0aHJlZSBtb2RlbHM6IGBEZXBhcnRtZW50YCwgYEVtcGxveWVlYCwgYW5kIGBFbXBsb3llZURlcGFydG1lbnRIaXN0b3J5YC4gSGVyZSdzIGFuIGV4cGxhbmF0aW9uIG9mIGVhY2ggbW9kZWw6CgoxLiAqKkRlcGFydG1lbnQqKjoKICAgLSBUaGlzIG1vZGVsIHJlcHJlc2VudHMgYSBkZXBhcnRtZW50IHdpdGhpbiBhbiBvcmdhbml6YXRpb24uCiAgIC0gSXQgaGFzIGZpZWxkcyBzdWNoIGFzIGBpZGAgKGF1dG8taW5jcmVtZW50aW5nIHByaW1hcnkga2V5KSwgYGtleWAgKHVuaXF1ZSBzdHJpbmcgaWRlbnRpZmllciksIGBsYWJlbGAgKGRlcGFydG1lbnQgbmFtZSksIGFuZCB0aW1lc3RhbXBzIGZvciBgY3JlYXRlZEF0YCBhbmQgYHVwZGF0ZWRBdGAuCiAgIC0gSXQgaGFzIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwIHdpdGggdGhlIGBFbXBsb3llZWAgbW9kZWwsIG1lYW5pbmcgdGhhdCBhIGRlcGFydG1lbnQgY2FuIGhhdmUgbXVsdGlwbGUgZW1wbG95ZWVzLgogICAtIEl0IGFsc28gaGFzIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwIHdpdGggdGhlIGBFbXBsb3llZURlcGFydG1lbnRIaXN0b3J5YCBtb2RlbCwgd2hpY2ggdHJhY2tzIHRoZSBoaXN0b3J5IG9mIGVtcGxveWVlcycgZGVwYXJ0bWVudCBhc3NpZ25tZW50cy4KCjIuICoqRW1wbG95ZWUqKjoKICAgLSBUaGlzIG1vZGVsIHJlcHJlc2VudHMgYW4gZW1wbG95ZWUgd2l0aGluIHRoZSBvcmdhbml6YXRpb24uCiAgIC0gSXQgaGFzIGZpZWxkcyBzdWNoIGFzIGBpZGAgKGF1dG8taW5jcmVtZW50aW5nIHByaW1hcnkga2V5KSwgYHB1YmxpY0lkYCAodW5pcXVlIHN0cmluZyBpZGVudGlmaWVyKSwgYGZpcnN0TmFtZWAsIGBsYXN0TmFtZWAsIGBoaXJlRGF0ZWAsIGBpc0FjdGl2ZWAgKGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgZW1wbG95ZWUgaXMgY3VycmVudGx5IGFjdGl2ZSksIGBkZXBhcnRtZW50S2V5YCAoZm9yZWlnbiBrZXkgcmVmZXJlbmNpbmcgdGhlIGBrZXlgIGZpZWxkIGluIHRoZSBgRGVwYXJ0bWVudGAgbW9kZWwpLCBgcGhvbmVgLCBgYWRkcmVzc2AsIGFuZCB0aW1lc3RhbXBzIGZvciBgY3JlYXRlZEF0YCBhbmQgYHVwZGF0ZWRBdGAuCiAgIC0gSXQgaGFzIGEgbWFueS10by1vbmUgcmVsYXRpb25zaGlwIHdpdGggdGhlIGBEZXBhcnRtZW50YCBtb2RlbCwgbWVhbmluZyB0aGF0IGFuIGVtcGxveWVlIGNhbiBiZWxvbmcgdG8gb25lIGRlcGFydG1lbnQuCiAgIC0gSXQgaGFzIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwIHdpdGggdGhlIGBFbXBsb3llZURlcGFydG1lbnRIaXN0b3J5YCBtb2RlbCwgd2hpY2ggdHJhY2tzIHRoZSBoaXN0b3J5IG9mIHRoZSBlbXBsb3llZSdzIGRlcGFydG1lbnQgYXNzaWdubWVudHMuCgozLiAqKkVtcGxveWVlRGVwYXJ0bWVudEhpc3RvcnkqKjoKICAgLSBUaGlzIG1vZGVsIGtlZXBzIHRyYWNrIG9mIHRoZSBoaXN0b3J5IG9mIGVtcGxveWVlcycgZGVwYXJ0bWVudCBhc3NpZ25tZW50cy4KICAgLSBJdCBoYXMgZmllbGRzIHN1Y2ggYXMgYGlkYCAoYXV0by1pbmNyZW1lbnRpbmcgcHJpbWFyeSBrZXkpLCBgZW1wbG95ZWVJZGAgKGZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIHRoZSBgaWRgIGZpZWxkIGluIHRoZSBgRW1wbG95ZWVgIG1vZGVsKSwgYGRlcGFydG1lbnRLZXlgIChmb3JlaWduIGtleSByZWZlcmVuY2luZyB0aGUgYGtleWAgZmllbGQgaW4gdGhlIGBEZXBhcnRtZW50YCBtb2RlbCksIGBkZXBhcnRtZW50TGFiZWxgICh0aGUgbGFiZWwgb3IgbmFtZSBvZiB0aGUgZGVwYXJ0bWVudCBhdCB0aGUgdGltZSBvZiBhc3NpZ25tZW50KSwgYW5kIHRpbWVzdGFtcHMgZm9yIGBjcmVhdGVkQXRgIGFuZCBgdXBkYXRlZEF0YC4KICAgLSBJdCBoYXMgYSBtYW55LXRvLW9uZSByZWxhdGlvbnNoaXAgd2l0aCBib3RoIHRoZSBgRW1wbG95ZWVgIGFuZCBgRGVwYXJ0bWVudGAgbW9kZWxzLCBhbGxvd2luZyBpdCB0byBhc3NvY2lhdGUgYW4gZW1wbG95ZWUgd2l0aCBhIGRlcGFydG1lbnQgYXQgYSBzcGVjaWZpYyBwb2ludCBpbiB0aW1lLgoKVGhpcyBzY2hlbWEgYWxsb3dzIHlvdSB0byBzdG9yZSBhbmQgbWFuYWdlIGluZm9ybWF0aW9uIGFib3V0IGRlcGFydG1lbnRzLCBlbXBsb3llZXMsIGFuZCB0aGUgaGlzdG9yeSBvZiBlbXBsb3llZXMnIGRlcGFydG1lbnQgYXNzaWdubWVudHMgd2l0aGluIHlvdXIgYXBwbGljYXRpb24uIFRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIG1vZGVscyBlbmFibGUgeW91IHRvIHF1ZXJ5IGFuZCByZXRyaWV2ZSBkYXRhIGVmZmljaWVudGx5LCBzdWNoIGFzIHJldHJpZXZpbmcgYWxsIGVtcGxveWVlcyBiZWxvbmdpbmcgdG8gYSBzcGVjaWZpYyBkZXBhcnRtZW50IG9yIHJldHJpZXZpbmcgdGhlIGRlcGFydG1lbnQgaGlzdG9yeSBmb3IgYSBwYXJ0aWN1bGFyIGVtcGxveWVlLgoKCiMjIyBEYXRhYmFzZSBTZXR1cAoKQWZ0ZXIgZGVmaW5pbmcgdGhlIHNjaGVtYSwgeW91IHdvdWxkIHR5cGljYWxseSBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBnZW5lcmF0ZSBtaWdyYXRpb25zIGFuZCBhcHBseSB0aGVtIHRvIHlvdXIgZGF0YWJhc2U6CgpgYGBiYXNoCm5weCBwcmlzbWEgbWlncmF0ZSBkZXYKbnB4IHByaXNtYSBtaWdyYXRlIGRldiAtLW5hbWUgaW5pdAoKbnB4IHByaXNtYSBtaWdyYXRlIHVwIC0tZXhwZXJpbWVudGFsCmBgYAoKPiBUaGVzZSBjb21tYW5kcyB3aWxsIGNyZWF0ZSBhbmQgYXBwbHkgbWlncmF0aW9ucyB0byB5b3VyIGRhdGFiYXNlIGJhc2VkIG9uIHRoZSBzY2hlbWEgeW91J3ZlIGRlZmluZWQuCj4K readmeEtag: '"2d505bc56c1f57828ca645e415abf39a8e83632c"' readmeLastModified: Sun, 18 Aug 2024 05:19:12 GMT repositoryId: 838831998 description: >- The Simple Employee Maintenance web application is designed to streamline the management of employee records and department assignments within an organization. This full-stack application provides essential CRUD operations for employees and departments, alongside a user-friendly interface to view and manage employee information. created: '2024-08-06T12:35:26Z' updated: '2024-08-18T05:19:15Z' language: TypeScript archived: false stars: 1 watchers: 1 forks: 0 owner: howmarketing logo: https://avatars.githubusercontent.com/u/72627426?v=4 license: MIT repoEtag: '"b5cf32b77e657a7bbecc8d375f2e2aa68843f6e3a5bdfc3fc6fc50ccbbd75b4f"' repoLastModified: Sun, 18 Aug 2024 05:19:15 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/brisinger/openapi v3: true id: 7f58a1495b387662d0e44b3d24f4ce00 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNwZWNzIHdpdGggU3dhZ2dlciBUb29scwoKIyMgUHJlLXJlcXVpc2l0ZXMKCi0gQmFzaWMga25vd2xlZGdlIG9uIEFQSXMKLSBJbnRlcmVzdCB0byBsZWFybiBhbmQgZXhwbG9yZSBhYm91dCBPcGVuQVBJICYgU3dhZ2dlciB0b29scwoKIyBJbXBvcnRhbnQgTGlua3MKCi0gT3BlbiBBUEkgV2Vic2l0ZSAtIGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZwotIFN3YWdnZXIgV2Vic2l0ZSAtIGh0dHBzOi8vc3dhZ2dlci5pbwotIFN3YWdnZXIgRWRpdG9yIC0gaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pbwotIFN3YWdnZXJIdWIgRXhwbG9yZSAtIGh0dHBzOi8vZXhwbG9yZS5zd2FnZ2VyaHViLmNvbS8KLSBPcGVuQVBJIE1hcCAtIGh0dHBzOi8vb3BlbmFwaS1tYXAuYXBpaGFuZHltYW4uaW8vCi0gT3BlbkFQSSAmIFNwcmluZ0Jvb3QgbGlicmFyeSAtIGh0dHBzOi8vc3ByaW5nZG9jLm9yZwotIExpc3Qgb2YgT3BlbkFQSSB0b29scyAtIGh0dHBzOi8vb3BlbmFwaS50b29scy8KLSBQcmlzbSBNb2NrIHNlcnZlciAtIGh0dHBzOi8vc3RvcGxpZ2h0LmlvL29wZW4tc291cmNlL3ByaXNtCi0gU1dBUEkgVGhlIFN0YXIgV2FycyBBUEkgLSBodHRwczovL3N3YXBpLmRldi8KLSBSRVFSRVMgTW9jayBBUElzIC0gaHR0cHM6Ly9yZXFyZXMuaW4= readmeEtag: '"1b581e0ce6d20e6f56a11eba5425139db31a4330"' readmeLastModified: Wed, 21 Aug 2024 05:39:51 GMT repositoryId: 840953515 description: OpenAPI Specs with Swagger Tools created: '2024-08-11T07:44:04Z' updated: '2024-08-21T05:40:29Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: Brisinger logo: https://avatars.githubusercontent.com/u/17980335?v=4 license: Apache-2.0 repoEtag: '"99d7a5a0153a8b8988a44b0235b5efee0b3da4bcc907dc67d2b6aa1d6416c85a"' repoLastModified: Wed, 21 Aug 2024 05:40:29 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/deepakbhalla/springboot-jasypt-encryption-decryption v3: true id: 05121fe4ec0861b0701ed9dabde1661d repositoryMetadata: base64Readme: >- IyBzcHJpbmdib290LWphc3lwdC1lbmNyeXB0aW9uLWRlY3J5cHRpb24NCiANCkFwcGxpY2F0aW9uIHRvIGRlbW9uc3RyYXRlIHRoZSB1c2Ugb2YNCkphc3lwdCB0byBlbmNyeXB0IGFuZCBkZWNyeXB0IGFuZCBzZW5zaXRpdmUgdmFsdWUgaW4gdGhlIGFwcGxpY2F0aW9uLg0KDQojIyMgV2hhdCBpcyBKYXN5cHQNCg0KSmFzeXB0IHN0YW5kcyBmb3IgJ0phdmEgU2ltcGxpZmllZCBFbmNyeXB0aW9uJw0KDQpKYXN5cHQgaXMgYSBqYXZhIGxpYnJhcnkgd2hpY2ggYWxsb3dzIHRoZSBkZXZlbG9wZXIgdG8gYWRkIGJhc2ljIGVuY3J5cHRpb24gY2FwYWJpbGl0aWVzIHRvIGhpcy9oZXIgcHJvamVjdHMgd2l0aCANCm1pbmltdW0gZWZmb3J0LCBhbmQgd2l0aG91dCB0aGUgbmVlZCBvZiBoYXZpbmcgZGVlcCBrbm93bGVkZ2Ugb24gaG93IGNyeXB0b2dyYXBoeSB3b3Jrcy4NCg0KIyMjIFNwcmluZyBCb290IEphc3lwdCBEZXBlbmRlbmN5DQoNCiFbaW1nLnBuZ10oc2NyZWVuc2hvdHMvamFzeXB0X212bl9kZXBlbmRlbmN5LnBuZykNCg0KIyMjIEphc3lwdCBTZWNyZXQgUGFzc3dvcmQNCg0KUHJvdmlkZWQgYXMgVk0gYXJndW1lbnQ6IC1EamFzeXB0LmVuY3J5cHRvci5wYXNzd29yZD1teXBhc3N3b3JkDQoNCiFbamFzeXB0X3Bhc3N3b3JkX3ZtX2FyZ3VtZW50LnBuZ10oc2NyZWVuc2hvdHMlMkZqYXN5cHRfcGFzc3dvcmRfdm1fYXJndW1lbnQucG5nKQ0KDQojIyMgT3BlbkFQSSBTcGVjaWZpY2F0aW9uDQoNCk9wZW5BUEkgc3dhZ2dlciBzaG93cyB0aGUgQVBJIHdoaWNoIHVzZXMgSmFzeXB0IHRvIGVuY3J5cHQgYW5kIGRlY3J5cHQgdGhlIGlucHV0IHByb3ZpZGVkIGJ5IHVzZXIuDQoNCmh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9teS1hcHBsaWNhdGlvbi9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwNCg0KIVtvcGVuX2FwaV9zd2FnZ2VyLnBuZ10oc2NyZWVuc2hvdHMlMkZvcGVuX2FwaV9zd2FnZ2VyLnBuZykNCg0KIyMjIEVuY3J5cHQgdXNpbmcgSmFzeXB0IGZyb20gQ29tbWFuZCBQcm9tcHQNCg0KLSBDb21tYW5kOg0KYGBgDQpqYXZhIC1jcCBqYXN5cHQtMS45LjMuamFyIG9yZy5qYXN5cHQuaW50Zi5jbGkuSmFzeXB0UEJFU3RyaW5nRW5jcnlwdGlvbkNMSSBpbnB1dD0iRGVlcGFrIiBwYXNzd29yZD0iaGVsbG8iIGFsZ29yaXRobT1QQkVXaXRoTUQ1QW5kREVTDQpgYGANCg0KIVtqYXN5cHRfZW5jcnlwdF9jb21tYW5kX2xpbmUucG5nXShzY3JlZW5zaG90cyUyRmphc3lwdF9lbmNyeXB0X2NvbW1hbmRfbGluZS5wbmcpDQoNCiMjIyBEZWNyeXB0IHVzaW5nIEphc3lwdCBmcm9tIENvbW1hbmQgUHJvbXB0DQoNCi0gQ29tbWFuZDoNCmBgYA0KamF2YSAtY3AgamFzeXB0LTEuOS4zLmphciBvcmcuamFzeXB0LmludGYuY2xpLkphc3lwdFBCRVN0cmluZ0RlY3J5cHRpb25DTEkgaW5wdXQ9Ikk0cEp3WDhFaXRFNlBPMWZMb3VMTXc9PSIgcGFzc3dvcmQ9ImhlbGxvIiBhbGdvcml0aG09UEJFV2l0aE1ENUFuZERFUw0KYGBgDQoNCiFbamFzeXB0X2RlY3J5cHRfY29tbWFuZF9saW5lLnBuZ10oc2NyZWVuc2hvdHMlMkZqYXN5cHRfZGVjcnlwdF9jb21tYW5kX2xpbmUucG5nKQ0KDQpSZWZlcmVuY2VzOg0KDQpodHRwOi8vd3d3Lmphc3lwdC5vcmcvDQoNCg== readmeEtag: '"cd33b1b6b4fc89b2c18024f79aa3ae32fccf363b"' readmeLastModified: Thu, 26 Oct 2023 14:57:00 GMT repositoryId: 710199246 description: >- Application to demonstrate the use of Jasypt to encrypt and decrypt and sensitive value in the application. created: '2023-10-26T08:11:19Z' updated: '2024-10-29T21:41:50Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: deepakbhalla logo: https://avatars.githubusercontent.com/u/6603640?v=4 repoEtag: '"b0dad3f45d9446aca31e1d8908370beb34173556c6db868343363d955f25bdac"' repoLastModified: Tue, 29 Oct 2024 21:41:50 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/otaviotscha/nodejs-api-boilerplate v3: true repositoryMetadata: base64Readme: >- IyBOb2RlSlMgQVBJIEJvaWxlcnBsYXRlCgojIyBSZXF1aXJlbWVudHMKClRvIHJ1biB0aGlzIHByb2plY3QgeW91IHdpbGwgbmVlZDoKCjEuIFtOb2RlSlNdKGh0dHBzOi8vbm9kZWpzLm9yZy9lbi9kb3dubG9hZC8pCjIuIFtZYXJuXShodHRwczovL2NsYXNzaWMueWFybnBrZy5jb20vbGFuZy9lbi9kb2NzL2luc3RhbGwpCgojIyBFbnZpcm9ubWVudAoKLSBgLmVudmAgZmlsZSBpcyByZWFkIHdoZW4gaW4gcHJvZHVjdGlvbi4KLSBgLmVudi5kZXZgIGZpbGUgaXMgcmVhZCB3aGVuIGNhbGxpbmcgYHlhcm4gZGV2YCAoZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQpLgotIGAuZW52LnRlc3RgIGZpbGUgaXMgcmVhZCB3aGVuIGNhbGxpbmcgYHlhcm4gdGVzdGAgKHRlc3QgZW52aXJvbm1lbnQpLgoKWW91IGNhbiB1c2UgYC5lbnYuc2FtcGxlYCB0byBrbm93IGhvdyB0byBjb25maWd1cmUgdGhlIGAuZW52YCB0byB5b3VyIG5lZWRzLgoKYC5lbnYuc2FtcGxlYCBhbHNvIGNvbnRhaW5zIHRoZSBlbnZpcm9ubWVudCBkZWZhdWx0cy4KCiMjIFNjcmlwdHMKCi0gYHlhcm4gcHJpc21hIG1pZ3JhdGUgZGV2YCB0byBnZW5lcmF0ZS9zeW5jIGRhdGFiYXNlIGFjY29yZGluZ2x5IHRvIG1pZ3JhdGlvbnMgKG9yIGdlbmVyYXRlIG1pZ3JhdGlvbiBpZiBgc2NoZW1hLnByaXNtYWAgd2FzIG1vZGlmaWVkKS4KLSBgeWFybiBkZXZgIHRvIHJ1biBhcHAgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi0gYHlhcm4gdGVzdGAgdG8gcnVuIHRlc3RzLgotIGB5YXJuIHByb2RgIHRvIGJ1aWxkIFR5cGVTY3JpcHQgdG8gSmF2YVNjcmlwdCB0aGVuIHJ1biBhcHAgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudCBzaW11bGF0aW9uLgoKIyMgQVBJIERvY3VtZW50YXRpb24KCi0gYGh0dHA6Ly97aG9zdH06e3BvcnR9L2RvY3NgIGRlZmF1bHQ6IDxodHRwOi8vbG9jYWxob3N0OjQwMDAvZG9jcz4KCiMjIE1haW4gcGFja2FnZXMKCi0gW1R5cGVTY3JpcHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdCkKLSBIVFRQIFNlcnZlcjogW3JvdXRpbmctY29udHJvbGxlcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS90eXBlc3RhY2svcm91dGluZy1jb250cm9sbGVycykgYW5kIFtleHByZXNzXShodHRwczovL2dpdGh1Yi5jb20vZXhwcmVzc2pzL2V4cHJlc3MpCi0gRGF0YWJhc2U6IFtwcmlzbWFdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcmlzbWEvcHJpc21hKQotIFJlcXVlc3RzIHZhbGlkYXRpb25zOiBbY2xhc3MtdmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vdHlwZXN0YWNrL2NsYXNzLXZhbGlkYXRvcikKLSBBUEkgZG9jdW1lbnRhdGlvbjogW3N3YWdnZXItdWktZXhwcmVzc10oaHR0cHM6Ly9naXRodWIuY29tL3Njb3R0aWUxOTg0L3N3YWdnZXItdWktZXhwcmVzcykKLSBUZXN0czogW2plc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9qZXN0KQotIExvZ3M6IFt3aW5zdG9uXShodHRwczovL2dpdGh1Yi5jb20vd2luc3RvbmpzL3dpbnN0b24pCg== readmeEtag: '"100a24355fee76c1cf762e5dcc8d4bff55c8f789"' readmeLastModified: Tue, 14 Dec 2021 14:44:10 GMT repositoryId: 438273922 description: null created: '2021-12-14T14:00:10Z' updated: '2024-10-31T10:59:25Z' language: TypeScript archived: true stars: 1 watchers: 2 forks: 0 owner: otaviotscha logo: https://avatars.githubusercontent.com/u/15371120?v=4 license: MIT repoEtag: '"2bf38bf111ff90e7f38af02357647521bed4185cb30917fa09b02912c58a0ced"' repoLastModified: Thu, 31 Oct 2024 10:59:25 GMT foundInMaster: true category: - Server - Server Implementations id: 109c0b426faa2b9f363ed379578bc857 - source: openapi3 tags repository: https://github.com/open-banking/standingorders v3: true repositoryMetadata: base64Readme: >- IyBzdGFuZGluZ09yZGVycwpPcGVuIEJhbmtpbmcgU3RhbmRpbmcgT3JkZXJzIEFQSSBidWlsdCBvbiB0b3Agb2YgbGlnaHQtNGoK readmeEtag: '"63ad7a532c05ffd67964bdc9bb5be93facca67cf"' readmeLastModified: Thu, 25 Jul 2024 20:09:50 GMT repositoryId: 235862750 description: Open Banking Standing Orders API built on top of light-4j created: '2020-01-23T18:48:43Z' updated: '2026-02-03T01:08:51Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 repoEtag: '"e90934d76d299e2b446c2cd258ef68807450ed7877e678dde9aab0003ae23f84"' repoLastModified: Tue, 03 Feb 2026 01:08:51 GMT foundInMaster: true category: Server id: 179c04aca24503cf8be7f31c1cd155be - source: openapi3 tags repository: https://github.com/expediagroup/spec-transformer v3: true id: 33e7adea5a5bffe320e564ae655045c1 repositoryMetadata: base64Readme: >- IyBTcGVjIFRyYW5zZm9ybWVyCgpUaGUgQVBJIFNwZWMgVHJhbnNmb3JtZXIgTGlicmFyeQoKIyMgSW5zdGFsbGF0aW9uCgpgYGBiYXNoCm5wbSBpbnN0YWxsIEBleHBlZGlhZ3JvdXAvc3BlYy10cmFuc2Zvcm1lcgpgYGAKCiMjIFVzYWdlCgpQaWNrIG9uZSBvZiB0aGUgZm9sbG93aW5nIHdheXMgdG8gdXNlIHRoZSBsaWJyYXJ5OgoKIyMjIDEuIFVzZSBzcGVjLXRyYW5zZm9ybWVyIGFzIGEgbGlicmFyeQoKRXhhbXBsZToKCmBgYHR5cGVzY3JpcHQKaW1wb3J0IHsgSGVhZGVyUmVtb3ZhbFRyYW5zZm9ybWVyLCBUcmFuc2Zvcm1lckNoYWluLCBZYW1sUmVhZGVyLCBZYW1sV3JpdGVyIH0gZnJvbSAnQHNwZWMtdHJhbnNmb3JtZXInOwoKY29uc3Qgb3BlbmFwaXNwZWNzID0gJy4uLic7IC8vIE9wZW5BUEkgc3BlY3MgaW4gSlNPTiBvciBZQU1MIGZvcm1hdAoKY29uc3QgdHJhbnNmb3JtZXJzID0gbmV3IFRyYW5zZm9ybWVyQ2hhaW4oWwogIG5ldyBIZWFkZXJSZW1vdmFsVHJhbnNmb3JtZXIoKSAvLyBBZGQgbW9yZSB0cmFuc2Zvcm1lcnMgaGVyZQpdKTsKCmNvbnN0IHRyYW5zZm9ybWVkU3BlY3MgPSB0cmFuc2Zvcm1lcnMudHJhbnNmb3JtKG9wZW5hcGlzcGVjcywgWWFtbFJlYWRlciwgWWFtbFdyaXRlcik7Cgpjb25zb2xlLmxvZyh0cmFuc2Zvcm1lZFNwZWNzKTsKYGBgCgojIyMgMi4gVXNlIHNwZWMtdHJhbnNmb3JtZXIgYXMgYSBDTEkKCmBgYGJhc2gKbnB4IC1wIEBleHBlZGlhZ3JvdXAvc3BlYy10cmFuc2Zvcm1lciBjbGkgLS1oZWxwICAjIFNob3cgaGVscCwgYW5kIGxpc3QgYWxsIGF2YWlsYWJsZSBjb21tYW5kcy4KYGBgCgpFeGFtcGxlOgoKYGBgYmFzaApucHggLXAgQGV4cGVkaWFncm91cC9zcGVjLXRyYW5zZm9ybWVyIGNsaSAtLWlucHV0IHNwZWNzLnlhbWwgLS1vdXRwdXQgb3V0LnlhbWwgLS1oZWFkZXJzICAjIFJlYWQgc3BlY3MgZnJvbSBzcGVjcy55YW1sLCByZW1vdmUgaGVhZGVycywgYW5kIHdyaXRlIHRvIG91dC55YW1sCmBgYAoKIyMjIDMuIEJ1aWxkIGFuZCBydW4gc3BlYy10cmFuc2Zvcm1lciBsb2NhbGx5CgpgYGBiYXNoCm5wbSBpbnN0YWxsCm5wbSBydW4gYnVpbGQKYGBgCgojIyMgVGVzdAoKYGBgYmFzaApucG0gdGVzdApgYGAKCi0tLQoKIyMgRGV2ZWxvcG1lbnQgVGVhbQotIFtNb2hhbW1hZCBOb29yIEFidSBLaGxlaWZdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2hub29yOTQpCi0gW09zYW1hIFNhbG1hbl0oaHR0cHM6Ly9naXRodWIuY29tL29zYW1hLXNhbG1hbjk5KQoK readmeEtag: '"b96799fa76e57d9b9d617ce95137c0dc0f122bf4"' readmeLastModified: Mon, 12 Aug 2024 10:21:45 GMT repositoryId: 651020076 description: The API Spec Transformer Library created: '2023-06-08T10:09:10Z' updated: '2025-09-18T15:14:52Z' language: TypeScript archived: false stars: 1 watchers: 2 forks: 0 owner: ExpediaGroup logo: https://avatars.githubusercontent.com/u/38541875?v=4 license: Apache-2.0 repoEtag: '"e25d0070d6f658b4f80db97db0d9b68fdb3cf7af257fe3f320e840cc02394973"' repoLastModified: Thu, 18 Sep 2025 15:14:52 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/sensiblewood/swaggerui-webpack-boilerplate v3: true repositoryMetadata: base64Readme: >- T3ZlcnZpZXcKPT09CgpUaGlzIGlzIGJvaWxlcnBsYXRlIHByb2plY3QgZm9yIHJ1bm5pbmcgU3dhZ2dlciBVSSB3aXRoIFdlYnBhY2suIEl0IGV4aXN0cyBiZWNhdXNlOgoKKiBJIHdhbnRlZCBhbiBlYXN5IHdheSBvZiBzbGFtbWluZyBtdWx0aXBsZSBBUEkgc3BlY2lmaWNhdGlvbnMgaW50byBhIFN3YWdnZXIgVUktYmFzZWQgcHJvamVjdCBhbmQgcnVubmluZyBpdCBsb2NhbGx5LgoqIEkgZGlkbid0IHdhbnRlZCB0byBtYW51YWxseSBjaGFuZ2UgdGhlIEphdmFzY3JpcHQgZXZlcnkgdGltZSBJIGFkZGVkIGFuIEFQSSBzcGVjaWZpY2F0aW9uLgoqIFVzaW5nIE5QTS9XZWJwYWNrIG1lYW5zIG15IGRlcGVuZGVuY2llcyBjYW4gYmUga2VwdCB1cC10by1kYXRlIGVhc2lseS4KClN1cmUgdGhlcmUncyBvdGhlciB3YXlzIG9mIGRvaW5nIHRoaXMsIGJ1dCBzdGlsbC4uLgoKflRoZXJlJ3MgYWxzbyBhIFJlZG9jIHBhZ2UgLSBhbHRob3VnaCB0aGlzIGlzIENETi1iYXNlZCBhcyBJIGFtIGxhenkufiBJIHJlbW92ZWQgdGhlIFJlZG9jIHZlcnNpb24gZm9yIHRoZSB0aW1lIGJlaW5nLgoKVXNhZ2UKPT09CgpUbyB1c2UgdGhpcyBwcm9qZWN0IGNsb25lIGFuZCBjZCBpbnRvIGl0IHRoZW46CgpgYGBiYXNoCm5wbSBpCmNwIFt5b3VyIFN3YWdnZXIvT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBhcyBZQU1MXSBzcmMvc3BlY3MKbnBtIHJ1biBkZXYKYGBgCgo6dGh1bWJzdXA6CgpJbXByb3ZlbWVudHMKPT09CgoqIFsgXSBQYXJhbWV0ZXJpc2UgQVBJIHNwZWNpZmljYXRpb24gZG9jdW1lbnQgbmFtZS4KKiBbIF0gUmVmYWN0b3IgYHNjcmlwdHMvcmV3cml0ZS11cmxzLmpzYCBhcyBhIFdlYnBhY2sgcGx1Z2luLgoK readmeEtag: '"507aa0c5f03cd0c62a0bfc8ae13d98dda0e01e12"' readmeLastModified: Tue, 16 Oct 2018 11:51:37 GMT repositoryId: 151232364 description: >- Boilerplate for spinning up local Swagger UI server, orchestrated through Webpack created: '2018-10-02T09:41:56Z' updated: '2021-02-15T13:50:01Z' language: JavaScript archived: false stars: 1 watchers: 0 forks: 1 owner: SensibleWood logo: https://avatars.githubusercontent.com/u/2420069?v=4 repoEtag: '"44cb7d75779a973eb4b693bd4b7fb62e0fa91f6185328f05b002c0e7e3dfbee5"' repoLastModified: Mon, 15 Feb 2021 13:50:01 GMT foundInMaster: true category: - Server - Server Implementations id: 3d8bdcdeba005c2ba64cd69ec363f143 - source: openapi3 tags repository: https://github.com/tdbrian/react-openapi-hooks-gen v3: true repositoryMetadata: base64Readme: >- IyMgcmVhY3Qtb3BlbmFwaS1ob29rcy1nZW46IEFuIE9wZW5BUEkgMyBjb2RlIGdlbmVyYXRvciBmb3IgUmVhY3QgdXNpbmcgaG9va3MsIHJlZHV4LCBhbmQgdHlwZXNjcmlwdAoKIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS90ZGJyaWFuL3JlYWN0LW9wZW5hcGktaG9va3MtZ2VuL3dvcmtmbG93cy9idWlsZC9iYWRnZS5zdmcpCiFbdGVzdF0oaHR0cHM6Ly9naXRodWIuY29tL3RkYnJpYW4vcmVhY3Qtb3BlbmFwaS1ob29rcy1nZW4vd29ya2Zsb3dzL3Rlc3QvYmFkZ2Uuc3ZnKQoKVGhpcyBwcm9qZWN0IGlzIGEgTlBNIG1vZHVsZSB0aGF0IGdlbmVyYXRlcyBtb2RlbCBpbnRlcmZhY2VzLCByZWR1eCBhY3Rpb25zIGFuZCByZWR1Y2VycywgYW5kIGhvb2tzIGZyb20gYW4gW09wZW5BcGkgM10oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgW3NwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKS4KVGhlIGdlbmVyYXRlZCBjbGFzc2VzIGZvbGxvdyB0aGUgcHJpbmNpcGxlcyBvZiBbUmVhY3RdKGh0dHBzOi8vcmVhY3Rqcy5vcmcvKS4KVGhlIGdlbmVyYXRlZCBjb2RlIGlzIGNvbXBhdGlibGUgd2l0aCBSZWFjdCB2MTYuMTMuMS4KCiMjIEhpZ2hsaWdodHMKCi0gSXQgc2hvdWxkIGJlIGVhc3kgdG8gdXNlIGFuZCB0byBpbnRlZ3JhdGUgd2l0aCBDcmVhdGUgUmVhY3QgQXBwIENMSTsKLSBJdCBzaG91bGQgc3VwcG9ydCBgT3BlbkFQSWAgc3BlY2lmaWNhdGlvbnMgaW4gYm90aCBgSlNPTmAgYW5kIGBZQU1MYCBmb3JtYXRzOwotIGBPcGVuQVBJYCBzdXBwb3J0cyBjb21iaW5hdGlvbnMgb2YgcmVxdWVzdCBib2R5IGFuZCByZXNwb25zZSBjb250ZW50IHR5cGVzLgogIEZvciBlYWNoIGNvbWJpbmF0aW9uLCBhIGRpc3RpbmN0IG1ldGhvZCBpcyBnZW5lcmF0ZWQ7Ci0gSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBzdWJzZXQgb2YgcmVkdWNlcnMgdG8gZ2VuZXJhdGUuCiAgT25seSB0aGUgbW9kZWxzIGFjdHVhbGx5IHVzZWQgYnkgdGhhdCBzdWJzZXQgc2hvdWxkIGJlIGdlbmVyYXRlZDsKLSBJdCBzaG91bGQgYmUgZWFzeSB0byBzcGVjaWZ5IGEgcm9vdCBVUkwgZm9yIHRoZSB3ZWIgc2VydmljZSBlbmRwb2ludHM7Ci0gR2VuZXJhdGVkIGZpbGVzIHNob3VsZCBjb21waWxlIHVzaW5nIHN0cmljdCBgVHlwZVNjcmlwdGAgY29tcGlsZXIgZmxhZ3MsIHN1Y2ggYXMgYG5vVW51c2VkTG9jYWxzYCBhbmQgYG5vVW51c2VkUGFyYW1ldGVyc2AuCi0gSXQgc2hvdWxkIHVzZSB0aGUgc3RhbmRhcmQgZmV0Y2ggYXBpCi0gSXQgc2hvdWxkIHVzZSByZWR1eCB0byBlYXNpbHkgYWxsb3cgZGV2cyB0byBzZWUgY3VycmVudCBzdGF0ZSBhbmQgYWN0aW9ucyBiZWluZyBmaXJlZAotIEl0IHNob3VsZCBleHBvc2UgZnVuY3Rpb25hbGl0eSB0byB2aWV3cyB0aHJvdWdoIGN1c3RvbSBob29rcwoKIyMgTGltaXRhdGlvbnMKCi0gT25seSBzdGFuZGFyZCBPcGVuQVBJIDMgZGVzY3JpcHRpb25zIHdpbGwgYmUgZ2VuZXJhdGVkLiBgcmVhY3Qtb3BlbmFwaS1ob29rcy1nZW5gIGFsbG93cyBzZXZlcmFsIGV4dGVuc2lvbnMsIHNwZWNpYWxseSB0eXBlcyBmcm9tIEpTT04gc2NoZW1hLCBidXQgdGhleSBhcmUgb3V0IG9mIHNjb3BlIGZvciBgcmVhY3Qtb3BlbmFwaS1ob29rcy1nZW5gLiBUaGVyZSBpcywgaG93ZXZlciwgc3VwcG9ydCBmb3IgYSBmZXcgW3ZlbmRvciBleHRlbnNpb25zXSgjU3VwcG9ydGVkX3ZlbmRvcl9leHRlbnNpb25zKTsKLSBTZXJ2ZXJzIHBlciBvcGVyYXRpb24gYXJlIG5vdCBzdXBwb3J0ZWQ7Ci0gT25seSB0aGUgZmlyc3Qgc2VydmVyIGlzIHVzZWQgYXMgYSBkZWZhdWx0IHJvb3QgVVJMIGluIHRoZSBjb25maWd1cmF0aW9uOwotIE5vIGRhdGEgdHJhbnNmb3JtYXRpb24gaXMgZXZlciBwZXJmb3JtZWQgYmVmb3JlIHNlbmRpbmcgLyBhZnRlciByZXR1cm5pbmcgZGF0YS4KICBUaGlzIG1lYW5zIHRoYXQgYSBwcm9wZXJ0eSBvZiB0eXBlIGBzdHJpbmdgIGFuZCBmb3JtYXQgYGRhdGUtdGltZWAgd2lsbCBhbHdheXMgYmUgZ2VuZXJhdGVkIGFzIGBzdHJpbmdgLCBub3QgYERhdGVgLgogIE90aGVyd2lzZSBldmVyeSBBUEkgY2FsbCB3b3VsZCBuZWVkIHRvIGhhdmUgYSBwcm9jZXNzaW5nIHRoYXQgd291bGQgdHJhdmVyc2UgdGhlIHJldHVybmVkIG9iamVjdCBncmFwaCBiZWZvcmUgc2VuZGluZyB0aGUgcmVxdWVzdAogIHRvIHJlcGxhY2UgYWxsIGRhdGUgcHJvcGVydGllcyBieSBgRGF0ZWAuIFRoZSBzYW1lIGFwcGxpZXMgdG8gc2VudCByZXF1ZXN0cy4gU3VjaCBvcGVyYXRpb25zIGFyZSBvdXQgb2Ygc2NvcGUgZm9yIGByZWFjdC1vcGVuYXBpLWhvb2tzLWdlbmA7CgojIyBJbnN0YWxsaW5nIGFuZCBydW5uaW5nCgpZb3UgbWF5IHdhbnQgdG8gaW5zdGFsbCBgcmVhY3Qtb3BlbmFwaS1ob29rcy1nZW5gIGdsb2JhbGx5IG9yIGp1c3Qgb24geW91ciBwcm9qZWN0LiBIZXJlIGlzIGFuIGV4YW1wbGUgZm9yIGEgZ2xvYmFsIHNldHVwOgoKYGBgYmFzaAokIG5wbSBpbnN0YWxsIC1nIHJlYWN0LW9wZW5hcGktaG9va3MtZ2VuCiQgcmVhY3Qtb3BlbmFwaS1ob29rcy1nZW4gLS1pbnB1dCBteS1hcGkueWFtbCAtLW91dHB1dCBteS1hcHAvc3JjL2FwaQpgYGAKClRoaXMgd2lsbCBleHBlY3QgdGhlIGZpbGUgYG15LWFwaS55YW1sYCB0byBiZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnksIGFuZCB3aWxsIGdlbmVyYXRlIHRoZSBmaWxlcyBvbiBgbXktYXBwL3NyYy9hcGlgLgoKIyMgQ29uZmlndXJhdGlvbiBmaWxlIGFuZCBDTEkgYXJndW1lbnRzCgpJZiB0aGUgZmlsZSBgcmVhY3Qtb3BlbmFwaS1ob29rcy1nZW4uanNvbmAgZXhpc3RzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgaXQgd2lsbCBiZSByZWFkLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHJ1biBgcmVhY3Qtb3BlbmFwaS1ob29rcy1nZW4gLS1jb25maWcgbXktY29uZmlnLmpzb25gIChjb3VsZCBhbHNvIGJlIGAtY2ApIHRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbiBmaWxlLCBvciBldmVuIHNwZWNpZnkgdGhlIGlucHV0IC8gb3V0cHV0IGFzIGByZWFjdC1vcGVuYXBpLWhvb2tzLWdlbiAtaSBpbnB1dC55YW1sYCBvciBgcmVhY3Qtb3BlbmFwaS1ob29rcy1nZW4gLWkgaW5wdXQueWFtbCAtbyAvdG1wL2dlbmVyYXRpb25gLgpUaGUgb25seSByZXF1aXJlZCBjb25maWd1cmF0aW9uIHByb3BlcnR5IGlzIGBpbnB1dGAsIHdoaWNoIHNwZWNpZmllZCB0aGUgYE9wZW5BUElgIHNwZWNpZmljYXRpb24gZmlsZS4gVGhlIGRlZmF1bHQgYG91dHB1dGAgaXMgYHNyYy9hcGlgLgoKRm9yIGEgbGlzdCB3aXRoIGFsbCBwb3NzaWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNlZSB0aGUgW0pTT04gc2NoZW1hIGZpbGVdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90ZGJyaWFuL3JlYWN0LW9wZW5hcGktaG9va3MtZ2VuL21hc3Rlci9yZWFjdC1vcGVuYXBpLWhvb2tzLWdlbi1zY2hlbWEuanNvbikuCllvdSBjYW4gYWxzbyBydW4gYHJlYWN0LW9wZW5hcGktaG9va3MtZ2VuIC0taGVscGAgdG8gc2VlIGFsbCBhdmFpbGFibGUgb3B0aW9ucy4KRWFjaCBvcHRpb24gaW4gdGhlIEpTT04gc2NoZW1hIGNhbiBiZSBwYXNzZWQgaW4gYXMgYSBDTEkgYXJndW1lbnQsIGJvdGggaW4gY2FtZWwgY2FzZSwgbGlrZSBgLS1pbmNsdWRlVGFncyB0YWcxLHRhZzIsdGFnM2AsIG9yIGluIGtlYmFiIGNhc2UsIGxpa2UgYC0tZXhjbHVkZS10YWdzIHRhZzEsdGFnMix0YWczYC4KCkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIGNvbmZpZ3VyYXRpb24gZmlsZToKCmBgYGpzb24KewogICIkc2NoZW1hIjogIm5vZGVfbW9kdWxlcy9yZWFjdC1vcGVuYXBpLWhvb2tzLWdlbi9yZWFjdC1vcGVuYXBpLWhvb2tzLWdlbi1zY2hlbWEuanNvbiIsCiAgImlucHV0IjogIm15LWZpbGUuanNvbiIsCiAgIm91dHB1dCI6ICJvdXQvcGVyc29uLXBsYWNlIiwKICAiaWdub3JlVW51c2VkTW9kZWxzIjogZmFsc2UKfQpgYGAKCiMjIFNwZWNpZnlpbmcgdGhlIHJvb3QgVVJMIC8gd2ViIHNlcnZpY2UgZW5kcG9pbnQKClRCRAoKIyMgUGFzc2luZyByZXF1ZXN0IGhlYWRlcnMgLyBjdXN0b21pemluZyB0aGUgcmVxdWVzdAoKVEJECgojIyBTdXBwb3J0ZWQgdmVuZG9yIGV4dGVuc2lvbnMKCkJlc2lkZXMgdGhlIE9wZW5BUEkgMyBzcGVjaWZpY2F0aW9uLCB0aGUgZm9sbG93aW5nIHZlbmRvciBleHRlbnNpb25zIGFyZSBzdXBwb3J0ZWQ6CgotIGB4LW9wZXJhdGlvbi1uYW1lYDogRGVmaW5lZCBpbiBbTG9vcEJhY2tdKGh0dHBzOi8vbG9vcGJhY2suaW8vZG9jL2VuL2xiNC9EZWNvcmF0b3JzX29wZW5hcGkuaHRtbCksIHRoaXMgZXh0ZW5zaW9uIGNhbiBiZSB1c2VkIGluIG9wZXJhdGlvbnMgdG8gc3BlY2lmeSB0aGUgYWN0dWFsIG1ldGhvZCBuYW1lLiBUaGUgYG9wZXJhdGlvbklkYCBpcyByZXF1aXJlZCB0byBiZSB1bmlxdWUgYW1vbmcgYWxsIHRhZ3MsIGJ1dCB3aXRoIHRoaXMgZXh0ZW5zaW9uLCBhIHNob3J0ZXIgbWV0aG9kIG5hbWUgY2FuIGJlIHVzZWQgcGVyIHRhZyAoc2VydmljZSkuIEV4YW1wbGU6CgpgYGB5YW1sCnBhdGhzOgogIC91c2VyczoKICAgIGdldDoKICAgICAgdGFnczoKICAgICAgICAtIFVzZXJzCiAgICAgIG9wZXJhdGlvbklkOiBsaXN0VXNlcnMKICAgICAgeC1vcGVyYXRpb24tbmFtZTogbGlzdAogICAgICAjIC4uLgogIC9wbGFjZXM6CiAgICBnZXQ6CiAgICAgIHRhZ3M6CiAgICAgICAgLSBQbGFjZXMKICAgICAgb3BlcmF0aW9uSWQ6IGxpc3RQbGFjZXMKICAgICAgeC1vcGVyYXRpb24tbmFtZTogbGlzdAogICAgICAjIC4uLgpgYGAKCi0gYHgtZW51bU5hbWVzYDogR2VuZXJhdGVkIGJ5IFtOU3dhZ10oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZyksIHRoaXMgZXh0ZW5zaW9uIGFsbG93cyBzY2hlbWFzIHdoaWNoIGFyZSBlbnVtZXJhdGlvbnMgdG8gY3VzdG9taXplIHRoZSBlbnVtIG5hbWVzLiBJdCBtdXN0IGJlIGFuIGFycmF5IHdpdGggdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBhY3R1YWwgZW51bSB2YWx1ZXMuIEV4YW1wbGU6CgpgYGB5YW1sCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIEh0dHBTdGF0dXNDb2RlOgogICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgIGVudW06CiAgICAgICAgLSAyMDAKICAgICAgICAtIDQwNAogICAgICAgIC0gNTAwCiAgICAgIHgtZW51bU5hbWVzOgogICAgICAgIC0gT0sKICAgICAgICAtIE5PVF9GT1VORAogICAgICAgIC0gSU5URVJOQUxfU0VSVkVSX0VSUk9SCmBgYAoKIyMgRGV2ZWxvcGluZyBhbmQgY29udHJpYnV0aW5nCgpUaGUgZ2VuZXJhdG9yIGl0c2VsZiBpcyB3cml0dGVuIGluIFR5cGVTY3JpcHQuIFdoZW4gYnVpbGRpbmcsIHRoZSBjb2RlIGlzIHRyYW5zcGlsZWQgdG8gSmF2YVNjcmlwdCBpbiB0aGUgYGRpc3RgIGZvbGRlci4gQW5kIHRoZSBgZGlzdGAgZm9sZGVyIGlzIHRoZSBvbmUgdGhhdCBnZXRzIHB1Ymxpc2hlZCB0byBOUE0uIEV2ZW4gdG8gcHJldmVudCBwdWJsaXNoaW5nIGZyb20gdGhlIHdyb25nIHBhdGgsIHRoZSBgcGFja2FnZS5qc29uYCBmaWxlIGhhcyBgInByaXZhdGUiOiB0cnVlYCwgd2hpY2ggZ2V0cyByZXBsYWNlZCBieSBgZmFsc2VgIGluIHRoZSBidWlsZCBwcm9jZXNzLgoKT24gdGhlIG90aGVyIGhhbmQsIGZvciBkZXZlbG9waW5nIC8gcnVubmluZyB0ZXN0cywgYGphc21pbmUtdHNgIGlzIHVzZWQsIHNvIHRoZSB0ZXN0cyBydW4gZGlyZWN0bHkgZnJvbSBUeXBlU2NyaXB0LiBUaGVyZSdzIGV2ZW4gYSBjb21taXR0ZWQgVmlzdWFsU3R1ZGlvIENvZGUgZGVidWcgY29uZmlndXJhdGlvbiBmb3IgdGVzdHMuCgpBZnRlciBkZXZlbG9waW5nIHRoZSBjaGFuZ2VzLCB0byBgbGlua2AgdGhlIG1vZHVsZSBhbmQgdGVzdCBpdCB3aXRoIG90aGVyIG5vZGUgcHJvamVjdHMsIHJ1biB0aGUgZm9sbG93aW5nOgoKYGBgYmFzaApucG0gcnVuIGJ1aWxkCmNkIGRpc3QKbnBtIGxpbmsKYGBgCgpBdCB0aGF0IHBvaW50LCB0aGUgZ2xvYmFsbHkgYXZhaWxhYmxlIHJlYWN0LW9wZW5hcGktaG9va3MtZ2VuIHdpbGwgYmUgdGhlIG9uZSBjb21waWxlZCB0byB0aGUgYGRpc3RgIGZvbGRlci4K readmeEtag: '"f47549a41abff4d4e6f75ff06aa12a1a2ac879fa"' readmeLastModified: Thu, 18 Jun 2020 03:26:33 GMT repositoryId: 273115846 description: An OpenAPI 3 codegen for React Hooks using Typescript created: '2020-06-18T01:42:52Z' updated: '2020-09-20T23:35:07Z' language: TypeScript archived: false stars: 1 watchers: 1 forks: 0 owner: tdbrian logo: https://avatars.githubusercontent.com/u/1131354?v=4 license: MIT repoEtag: '"3a5d0d8cdf880cd7c86b57886b8b709a56934ec236ae36a78ba5b3548b3eecfd"' repoLastModified: Sun, 20 Sep 2020 23:35:07 GMT foundInMaster: true category: - Testing - Parsers id: ae6d3cb6d80559b99967f4f833af10af - source: openapi3 tags repository: https://github.com/weaponsforge/apidocs-swagger-ui v3: true id: ca0080f7abdd181cfa141adbbb44becd repositoryMetadata: base64Readme: >- IyMgYXBpZG9jcy1zd2FnZ2VyLXVpCgoqKmFwaWRvY3Mtc3dhZ2dlci11aSoqIGZlYXR1cmVzIGEgc2ltcGxlIFRvZG8gbm90ZXMtdGFraW5nIENSVVAgQVBJIGJvcnJvd2VkIGZyb20gW2B0b2RvLW5leHRgXShodHRwczovL2dpdGh1Yi5jb20vd2VhcG9uc2ZvcmdlL3RvZG8tbmV4dCkncyBzZXJ2ZXIuCgpUaGlzIHJlcG9zaXRvcnkgYWltcyB0byB0ZXN0IHVzaW5nIFtzd2FnZ2VyLXVpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aSkgZm9yIGNyZWF0aW5nIG1vZGVybiwgcmVzcG9uc2l2ZSBhbmQgaW50ZXJhY3RpdmUgUkVTVCBBUEkgZG9jdW1lbnRhdGlvbnMgYW5kIHRvIGZhbWlsaWFyaXplIG9uZXNlbGYgd2l0aCB0aGUgW09wZW5BUEldKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCkgc3BlY2lmaWNhdGlvbnMsIHYzLjEuMCBhcyBvZiB0aGlzIHdyaXRpbmcuCgohW3NjcmVlbnNob3RdKC9hc3NldHMvdGh1bWJuYWlsLnBuZykKCiMjIFJlcXVpcmVtZW50cwoKVGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXMgYXJlIHVzZWQgZm9yIHRoaXMgcHJvamVjdCdzIGxvY2FsaG9zdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4gRmVlbCBmcmVlIHRvIHVzZSBvdGhlciBkZXBlbmRlbmN5IHZlcnNpb25zIGFzIG5lZWRlZC4KCjEuIFdpbmRvd3MgMTAgT1MKMi4gbnZtIGZvciBXaW5kb3dzIHYxLjEuOQozLiBOb2RlSlMgMTYuMTQuMiBpbnN0YWxsZWQgdXNpbmcgbnZtCiAgIC0gbm9kZSB2MTYuMTQuMgogICAtIG5wbSB2OC41LjAKNC4gTW9uZ29EQiBDb21tdW5pdHkgRWRpdGlvbiAoZm9yIFdpbmRvd3MpCiAgIC0gdmVyc2lvbiA0LjQuMAogICAtIGFyY2hpdGVjdHVyZTogeDg2XzY0CgojIyMgQ29yZSBMaWJyYXJpZXMgYW5kIEZyYW1ld29ya3MKCjEuIHN3YWdnZXItdWkgdjQuMTQuMAoyLiB3ZWJwYWNrIHY1Ljc0LjAKMy4gd2VicGFjay1jbGkgdjQuMTAuMAo0LiBtb25nb29zZSB2Ni41LjIKCiMjIEluc3RhbGxhdGlvbgoKMS4gQ2xvbmUgdGhpcyByZXBvc2l0b3J5Ljxicj4KYGh0dHBzOi8vZ2l0aHViLmNvbS93ZWFwb25zZm9yZ2UvdG9kby1uZXh0LmdpdGAKCjIuIEluc3RhbGwgdGhlIGJhY2tlbmQgc2VydmVyIGRlcGVuZGVuY2llcy48YnI+CmBucG0gaW5zdGFsbGAKCjMuIEluc3RhbGwgdGhlICoqZG9jcyoqIGRlcGVuZGVuY2llcy48YnI+CmBucG0gcnVuIGRvY3M6aW5zdGFsbGAKCjQuIFNldCB1cCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBDcmVhdGUgYSBgLmVudiBgZmlsZSBpbnNpZGUgdGhlIHJvb3QgcHJvamVjdCBkaXJlY3Rvcnkgd2l0aCByZWZlcmVuY2UgdG8gdGhlIGAuZW52LmV4YW1wbGVgIGZpbGUuPGJyPgoKICAgfCBWYXJpYWJsZSBOYW1lICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAogICB8IE1PTkdPX1VSSSAgICAgICAgICAgICB8IE1vbmdvREIgY29ubmVjdGlvbiBzdHJpbmcuPGJyPkRlZmF1bHQgdmFsdWUgdXNlcyB0aGUgbG9jYWxob3N0IE1vbmdvREIgY29ubmVjdGlvbiBzdHJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgfCBBTExPV0VEX09SSUdJTlMgICAgICAgfCBJUC9kb21haW4gb3JpZ2lucyBpbiBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSBBUEkgaWYgYEFMTE9XX0NPUlM9MWAuPGJyPiBJbmNsdWRlIGBodHRwOi8vbG9jYWxob3N0OjgwODBgIGJ5IGRlZmF1bHQgdG8gYWxsb3cgQ09SUyBhY2Nlc3MgdG8gdGhlIHN3YWdnZXItdWkgZG9jdW1lbnRhdGlvbiBhcHAgaW4gdGhlICoqL2RvY3MqKiBkaXJlY3RvcnkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgIHwgQUxMT1dfQ09SUyAgICAgICAgICAgIHwgQWxsb3cgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgKENPUlMpIG9uIHRoZSBBUEkgZW5kcG9pbnRzLjxicj48YnI+RGVmYXVsdCB2YWx1ZSBpcyBgMWAsIGFsbG93aW5nIGFjY2VzcyB0byBkb21haW5zIGxpc3RlZCBpbiBgQUxMT1dFRF9PUklHSU5TYC48YnI+IFNldHRpbmcgdG8gYDBgIHdpbGwgYmxvY2sgQUpBWCBBUEkgcmVxdWVzdHMgZnJvbSBjbGllbnQgd2Vic2l0ZXMgaG9zdGVkIG9uIG90aGVyIGRvbWFpbnMsIGJ1dCB3aWxsIGFsbG93IHJlcXVlc3RzIGZyb20gUG9zdG1hbiBhbmQgb3RoZXIgdGVzdGluZyB0b29scy4gfAogICB8IEFQSV9XSU5ET1dfTVNfTUlOVVRFUyB8IFRpbWUgaW4gYG1pbnV0ZXNgIHdoZXJlIGBBUElfUkFURV9MSU1JVGAgdGltZXMgb2Ygc3VjY2Vzc2l2ZSBjYWxscyBmcm9tIGFuIElQIGFyZSBhbGxvd2VkIG9uIHRoZSBzZXJ2ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgfCBBUElfUkFURV9MSU1JVCAgICAgICAgfCBJdCdzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhbGxvd2VkIEFQSSByZXF1ZXN0cyBvbiB0aGUgc2VydmVyIHBlciBgQVBJX1dJTkRPV19NU19NSU5VVEVTYC4gPGJyPlVzZXJzIHdpbGwgcmVjZWl2ZSBhIGA0MjkgLSBUb28gbWFueSByZXF1ZXN0c2Agc2VydmVyIGVycm9yIGFmdGVyIGhpdHRpbmcgdGhlIGxpbWl0Ljxicj5UaGUgbGltaXQgd2lsbCByZXNldCBhZnRlciBBUElfV0lORE9XX01TX01JTlVURVMgbWludXRlcywgYWZ0ZXIgd2hpY2ggdXNlcnMgY2FuIHJlc3VtZSBtYWtpbmcgQVBJIHJlcXVlc3RzLiAgICAgICAgICAgICAgICB8CgojIyBVc2FnZQoKMS4gUnVuIHRoZSBzZXJ2ZXIuPGJyPgpgbnBtIHN0YXJ0YAoKMS4gUnVuIHRoZSBkb2NzIGFwaSBvbiBkZXZlbG9wbWVudCBtb2RlLjxicj4KYG5wbSBydW4gZG9jczpkZXZgCgojIyBBdmFpbGFibGUgU2NyaXB0cwoKIyMjIGBucG0gc3RhcnRgCgpSdW4gdGhlIGV4cHJlc3Mgc2VydmVyIGZvciBwcm9kdWN0aW9uIG1vZGUuCgojIyMgYG5wbSBydW4gZGV2YAoKUnVuIHRoZSBzZXJ2ZXIgZm9yIGRldmVsb3BtZW50IG1vZGUgdXNpbmcgW25vZGVtb25dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL25vZGVtb24pLgoKIyMjIGBucG0gcnVuIGxpbnRgCgpMaW50IHRoZSBzZXJ2ZXIgSmF2YVNjcmlwdCBzb3VyY2UgY29kZXMuCgojIyMgYG5wbSBydW4gbGludDpmaXhgCgpGaXggdGhlIEphdmFTY3JpcHQgbGludCBlcnJvcnMuCgojIyMgYG5wbSBydW4gZG9jczppbnN0YWxsYAoKSW5zdGFsbHMgdGhlIChzd2FnZ2VyLXVpICsgd2VicGFjaykgZGVwZW5kZW5jaWVzIG9uIHRoZSAqKi9kb2NzKiogZGlyZWN0b3J5LgoKIyMjIGBucG0gcnVuIGRvY3M6ZGV2YAoKUnVucyB0aGUgKHN3YWdnZXItdWkgKyB3ZWJwYWNrKSBhcHAgaW4gZGV2ZWxvcG1lbnQgbW9kZS4KCiMjIyBgbnBtIHJ1biBkb2NzOmJ1aWxkYAoKQnVpbGRzIGFuZCBidW5kbGVzIHRoZSAoc3dhZ2dlci11aSArIHdlYnBhY2spIGFwcCBpbiB0aGUgKiovZG9jcyoqIGRpcmVjdG9yeSBmb3IgcHJvZHVjdGlvbiBtb2RlIHRvIHRoZSBgL2RvY3MvZGlzdGAgZGlyZWN0b3J5LgoKRml4IEphdmFTY3JpcHQgbGludCBlcnJvcnMuCgpAd2VhcG9uc2ZvcmdlPGJyPgoyMDIyMDgyMQo= readmeEtag: '"341743a18d945d64424aa1b64e75c7ca483c30ae"' readmeLastModified: Thu, 25 Aug 2022 03:32:30 GMT repositoryId: 527131359 description: Testing using swagger ui for api documentation created: '2022-08-21T07:04:33Z' updated: '2025-03-05T21:34:39Z' language: JavaScript archived: false stars: 2 watchers: 1 forks: 0 owner: weaponsforge logo: https://avatars.githubusercontent.com/u/56998001?v=4 repoEtag: '"807cc25b876593be45bfdc6a201cfa5361f506947c8a1dfbc00c22d8167c1fe1"' repoLastModified: Wed, 05 Mar 2025 21:34:39 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/anshulsharma1610/trendr-news_summarization v3: true id: 5eef97e04c181100276e394f5a472198 repositoryMetadata: base64Readme: >- IyMgVHJlbmRyIC0gU3RheSBhaGVhZCBvZiB0aGUgbmV3cyANCg0KDQpQUkVTRU5UQVRJT04gVklERU8gTElOSzogaHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2ZpbGUvZC8xQ3JpVk53WFE5anYxbDRoR0Q4dXl0dFNQOWd5MWtSTVIvdmlldz91c3A9c2hhcmluZw0KDQogIyMjIFByb2plY3QgRGVzY3JpcHRpb246IFRyZW5kcg0KDQpUaGlzIHByb2plY3QgaXMgYSBuZXdzIGFwcGxpY2F0aW9uIHRoYXQgYWxsb3dzIHVzZXJzIHRvIGNyZWF0ZSBhbiBhY2NvdW50IGFuZCBsb2cgaW4gd2l0aCBhIHVuaXF1ZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQuIFVzZXJzIGNhbiB0aGVuIHNldCBhbmQgY2hhbmdlIHRoZWlyIHByZWZlcmVuY2VzIGZvciBuZXdzIGNhdGVnb3JpZXMgYW5kIHNvdXJjZXMuDQpUaGUgbmV3cyBmZWVkIGRpc3BsYXlzIG5ld3Mgc3VtbWFyaWVzIGJhc2VkIG9uIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZXMuIEFkZGl0aW9uYWxseSwgdGhlIGFwcGxpY2F0aW9uIHNob3dzIHRvcCB0d2VldHMgYmFzZWQgb24gdGhlIHVzZXIncyBuZXdzIHByZWZlcmVuY2UgYW5kIHRvcCBuZXdzIGhlYWRsaW5lcyBpbiB0aGUgdHJlbmRpbmcgc2VjdGlvbiBpcnJlc3BlY3RpdmUgb2YgdGhlaXIgcHJlZmVyZW5jZXMuDQpVc2VycyBjYW4gbGlrZSwgY29tbWVudCwgYW5kIHNoYXJlIG5ld3MgYXJ0aWNsZXMgYW5kIGFsc28gc2F2ZS9ib29rbWFyayBhcnRpY2xlcyBmb3IgbGF0ZXIgcmVhZGluZy4gVGhlIGFwcGxpY2F0aW9uIGFsc28gYWxsb3dzIHVzZXJzIHRvIHNlYXJjaCBmb3IgbmV3cyBhcnRpY2xlcyBieSBrZXl3b3JkcyBhbmQgY2F0ZWdvcmllcyBhbmQgdHJhbnNsYXRlIGFydGljbGVzIGludG8gb3RoZXIgbGFuZ3VhZ2VzLg0KSW4gdGVybXMgb2Ygc3Vic2NyaXB0aW9uIG1hbmFnZW1lbnQsIHVzZXJzIGNhbiBlbnJvbGwgYW5kIG1hbmFnZSB0aGVpciBhcHAgc3Vic2NyaXB0aW9uLiBQYWlkIHN1YnNjcmliZXJzIGNhbiBiZSB2aWV3ZWQgYnkgdGhlIGFkbWluLg0KVGhlIGFkbWluIGZlYXR1cmVzIGluY2x1ZGUgdGhlIGFiaWxpdHkgdG8gYWRkIG5ld3MgYXJ0aWNsZXMgdG8gdGhlIHdlYnNpdGUsIG1hbmFnZSB1c2VycywgdmlldyBhbmFseXRpY3MgZGFzaGJvYXJkLCBhbmQgYWRkIG90aGVyIGFkbWlucy4gTW9kZXJhdGlvbiBmZWF0dXJlcyBpbmNsdWRlIHRoZSBhYmlsaXR5IGZvciBtb2RlcmF0b3JzIHRvIGRlbGV0ZSBjb21tZW50cyBhbmQgYmxvY2sgdXNlcnMuDQpUaGUgYW5hbHl0aWNzIGRhc2hib2FyZCBwcm92aWRlcyBpbnNpZ2h0cyBvbiB3ZWJzaXRlIHRyYWZmaWMgYW5kIHVzZXIgYmVoYXZpb3IsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG1ha2UgZGF0YS1kcml2ZW4gZGVjaXNpb25zLg0KVGhpcyBuZXdzIGFwcGxpY2F0aW9uIHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSBuZXdzIGV4cGVyaWVuY2UgZm9yIHVzZXJzIHdoaWxlIG9mZmVyaW5nIHBvd2VyZnVsIG1hbmFnZW1lbnQgdG9vbHMgZm9yIHRoZSBhZG1pbi4NCg0KDQogDQogIyMjIE9iamVjdCBNb2RlbCBEaWFncmFtDQoNCg0KDQoNCiFbVHJlbmRlciBkcmF3aW9dKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQyNjY4OTc5LzIyNjk5MTQyNi05MDZlZTA5Yi01NDNlLTRhYTgtYTg0Yi1kODM4Y2NjM2Q1YTIucG5nKQ0KDQoNCiMjIyBFeHRlcm5hbCBBUElzDQoNCmh0dHBzOi8vbmV3c2RhdGEuaW8vICA8YnI+DQpodHRwczovL3BsYXRmb3JtLm9wZW5haS5jb20vIDxicj4NCmh0dHBzOi8vc3RyaXBlLmNvbS9kb2NzL3BheW1lbnRzIDxicj4NCmh0dHBzOi8vcmF6b3JwYXkuY29tL2RvY3MvI2hvbWUtcGF5bWVudHMNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIyMjIEluc3RydWN0aW9ucyB0byB1c2UgdGhlIHJlcG8NCg0KLSBZb3UgY2FuIGNsb25lIHRoZSByZXBvIGJ5IHVzaW5nIEhUVFA6IA0KDQpodHRwczovL2dpdGh1Yi5jb20vbmV1LW1pcy1pbmZvLTYxNTAtc3ByaW5nLTIwMjMvZmluYWwtcHJvamVjdC1ncm91cC13ZWJfd2VhdmVycy5naXQNCg0KT1Igc2V0IHVwIHRoZSBTU0ggS2V5IHVzaW5nOiANCg0KZ2l0QGdpdGh1Yi5jb206bmV1LW1pcy1pbmZvLTYxNTAtc3ByaW5nLTIwMjMvZmluYWwtcHJvamVjdC1ncm91cC13ZWJfd2VhdmVycy5naXQNCg0KQ29tbWFuZHMgdG8gdXNlOiANCg0KZ2l0IGNsb25lIGA8dXNlIEhUVFAgTGluayBvciBTU0ggTGluaz5gDQoNCiMjIyMgVG8gcnVuIFN0cmlwZSBXZWJob29rIHRocm91Z2h0IFN0cmlwZSBDTEkgb24gbG9jYWw6IHN0cmlwZSBsaXN0ZW4gLS1mb3J3YXJkLXRvIGxvY2FsaG9zdDo0MjQyL3dlYmhvb2sgDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCg== readmeEtag: '"1f9803fc2dc0be72c0ec0e7ebc32518d38045c94"' readmeLastModified: Tue, 23 Sep 2025 19:12:07 GMT repositoryId: 638790054 description: >- News application that provides users with a concise summary of the latest news in short form. Users can view news for free, & for unlimited articles, they can purchase a subscription. It has both an admin panel & user panel, allowing administrators to manage and update news content, and users to customize news preferences and track subscriptions. created: '2023-05-10T05:40:52Z' updated: '2025-09-23T19:13:00Z' language: JavaScript archived: false stars: 1 watchers: 1 forks: 0 owner: anshulsharma1610 logo: https://avatars.githubusercontent.com/u/114267698?v=4 repoEtag: '"c6e61a3d63064e9a267acb6ea49ff7ffd74cb9e4f982ec334651cdeea39b1e25"' repoLastModified: Tue, 23 Sep 2025 19:13:00 GMT category: - Testing - Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/didifive/peoplehub v3: true id: 2c68bc982c9ec4a2c8ad771526ffcb10 repositoryMetadata: base64Readme: >- IVtSZXBvc2l0b3J5IGxhbmd1YWdlIGNvdW50XShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9sYW5ndWFnZXMvY291bnQvZGlkaWZpdmUvcGVvcGxlaHViKQohW1JlcG9zaXRvcnkgY29kZSBzaXplXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9sYW5ndWFnZXMvY29kZS1zaXplL2RpZGlmaXZlL3Blb3BsZWh1YikKWyFbR2l0SHViIGxhc3QgY29tbWl0XShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9sYXN0LWNvbW1pdC9kaWRpZml2ZS9wZW9wbGVodWI/Y29sb3I9Ymx1ZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9kaWRpZml2ZS9wZW9wbGVodWIvY29tbWl0cy9tYXN0ZXIpCgohW2NvdmVyYWdlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NvdmVyYWdlLTEwMCUyNS1ncmVlbikKWyFbTWFkZSBieSBEaWRpXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL21hZGUlMjBieS1EaWRpLWdyZWVuKV0oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2x1aXMtY2FybG9zLXphbmNhbmVsYS8pCgohW1JlcG9zaXRvcnkgbGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9kaWRpZml2ZS9wZW9wbGVodWIpCgpbIVtJbnRlbGxpSiBJREVBXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0ludGVsbGlKSURFQS0wMDAwMDAuc3ZnP2xvZ289aW50ZWxsaWotaWRlYSZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL3d3dy5qZXRicmFpbnMuY29tL2lkZWEvKQoKIVt0ZWNobm9sb2d5IEphdmFdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vc3RhdGljL3YxP2NvbG9yPXJlZCZsYWJlbD1UZWNobm9sb2d5Jm1lc3NhZ2U9SmF2YSZzdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDMEFBQUF0Q0FZQUFBQTZHdUthQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFaUlNVUkJWSGphWXZ6Ly96OER6UUVqb3ppUW5BTEVDUXovLzMrbDFEaUFBR0ppb0EvNEJzU3VRQnhBRGNNQUFvaGVqZ2Jad3dQRUh0UXdEQ0NBNk9Wb0pTQm1CbUoxWUZKaHB0UXdnQUNpbDZQZG9UUWIxUEVVQVlBQVlxSlRKc3lBOGw0QThXOUtqUVFJSUNZYU81Z2ZTTTRHWW5tb3lHRUdLaFJYQUFFRU5vTW1tSUhCQkloUEFmRi9LSDRDeERMVU1Cc2dnR2psNEJRZ2Zvdms0TDlBSEVBdDh3RUNpTnFPRlFiaUpVaU9oZUVzSkRYc1VFOWxrV3NQUUFCUjA4RWFRSHdDemJIZmdUZ1Z6YkdYb05pQlhMc0FBb2hhRHBZSDRwdG9EbjRCeE81UWVRY2dQZ1lWM3czRW9wVFlCeEJBMUhBd0R4QWZSWFB3QlNEV2djcDNBL0VmcVBoVUlHYWwxRTZBQUtLR295dlJITHdQaUNYQWptTmdXSWNrM2d2RWpOU0lXWUFBb3RUQmdrRDhHTWxoeDRHWUh5bzNHVWw4RXpVelBFQUFVZXBvTDdSaURaYUdUWUg0TjFUOEt4QnJVdFBSQUFGRWFZM0lqOFQrQzhUUG9XeExJR2FCc3I4RDhVTnFWclFBQVVTcG8yOEI4VDhvRytSSVNTajdDNUlhSVNDT3BxYWpBUUtJVWtkZmhtSndTd09JTmFEc0M5Q1FoNG5YQTlzaDB0UnlORUFBTVZIWWNQa0ZiUkRCZ0FXVXZnakU1NURFUVE0dXBwYWpBUUtJR2tVZUZ4QWZnV2E2NTBBc0FCVVBSaXNLWHdPeENEVXlJa0FBVWF0RzFBYmlWMURISlNDSnowWXJYZlNwWVI5QUFGR3o3ZUVFeEorQitBeThFbUZnNEFUaWMxQkh2NkcwK29aaGdBQmlvbUk2Mndja0k0RllGWWk5b0dLZzR1NEJWTVZzSVA4MWpzNkNGQkE3QWJFYk1Sa1dJSUFZaWU1SU1ESnlBMGx0SU5hRTlrUmtvZjI5TTBESFRFTlNad1VrMllGaSs2RjY3a083V2JaQXNZOVl1bUs5UUJ3QzFnTUJyNEM0REtoMklTNm5BQVFRTWRIT0NNU0pRSHdEcVpZRFpiaFpRQndKeElwNDlQb0E4UUZ3T3h0Vm5BbUl4YUU0R29qTGtETHpmNmc5cHJqTUJRZ2d3aUhOeUFnSzBVZG9BeThUZ0hndkVMK0JkbFJCaHZ5QjBzelFpb1lOUEdRQTRYK0RWanhTUUt3SWphMFBRQndGZE1WTHFEMGdQZTFBWEFLMVp5NVFMZ1dia3dBQ2lKaVE1Z2JpN1ZoNkl5RDhENGgvQWZFUElQNEd4YUNHLzA5b2MvUVBGajB2Z2JnTGlLV3cyR1VJTFdWQTZwN2hjaE5BQUxFUWtjRytBa01oQ01pS0JlSkFJRFlGWWs1b0NJTFNJU3NlM1grZ3NYRUppSThBOFNFZ1BnazA4d3NPOWQ1SUZkNGxYSVlDQkJBanlUMTZ5TENBRzlRRHg0SDRKelFwTUVJZCtSUGE5bmdMeE0vQVNZdVlRVWRHUmhjZ3VRYmFDQU1sT1JlZ3ZrUFlsQUlFRURubGNRVVFQNFUyOW5rSXFHVUdZamtnOWdUaUdpQmVCTVMrV05RNUEvRUhhTElBSmJFWWZPWUNCQkJwSWMzSXlBRWtid0t4SERRMFFKbm9LUkMvQStJZjBFWVNLTWx4QWJFZ05QT0pBREVIbWttZ0RGY05jUUZqQm5RWUdKVGNkZ0p4SzFEOE1ENW5BQVFRT1NGdEI4UjdvQm51UDVINEo3U0hzeHZhb3dFVmxTeEEzQTZ0L2xmQU94QkVZSUFBWWlSN2xJcVJVUkxhcW9OVk5rTFFVUDRKTGM1ZXd0TTBBOE05SUg0TXRQRWJrbjVRaGpPQ3B2bFhwRmdORUVEa09acVJrUmZhc05jQzRoYWlMR1ZrWklNMlpTa0dBQUhFUXFhK09xUkt3QURvb0NQZ2tJU1VHTitoYVpzWG12WlZvTlUvcUgweENValBRZ2x4TWdCQUFKSGJvbXNsSVQyajQvTkFMRTFKS3c4Z2dGaUlLSk5Wb1JoVW5ZTWFRQWVCdUFOYU5VZEFRNUtEUU5qOGhqYWFUZ0R4SGlEK2lNTStOV2dhLzRIUE1JQUF3cDZtR1JsQjBWb0x4SjdRb2d2VW05NFA3VWJ0QlJwNkY2cU9IZHFXVUlXMkswQ1prUSthN0VBV3Y0ZG14dHZnVHZELy81L3hCQkRJbmgzZ0N1Yi8vMjU4amdZSUlGelJmeEFwT3QrQ1J6aEJMVExxZFJpNHdLMURZTTBLeEVWQXZBemFIUVBaRnc1dkNlTFFEeEJBdUVLNkFkeURSZ1Zmb1pudEpyUVlldzZ0VkQ1RGs4cFBhRFgrRDZtVnh3SE5rUHpRU2tZS21qbGhNWU04LzNJQWlOdkFiUk5RQlFOc3BBRmR1QTFiUUFNRUVMN1FDSVZXSXA4b3lIVDRLcHRiUUx3QWlHT0JXQjNjRldOZ1NBTGl1OUJtQXM1WkE0QUFJcVk5clFDdFFKU1Eyc1JjU0NISkFtMlpNVUViVGIrZ0dlODNOQVpBbWU0VE5IMkRLaHhRbCtzSnRGRWxBRFhiRVlqOW9MRnhEVndIL1A5L0FaZVRBQUtJMUxhSE1KQ2NCSTF5VnFpRC8wQXozUzlvK2Z3YnFVTUF3MHhRRDRJeXFSaDBIRVFLYmR3Rk5FNnlERnFPZjhibkRJQUFJdFhSckZETGxLRkZuU0xVQWFDK25pZzA3ZkpDMjl1czBEVDdEK3FScjlBUWZ3dk5EMCtoL1VkUVNYUVZYTlgvLy8rWEdHY0FCQmdBSWt1M2c0cDlaVjhBQUFBQVNVVk9SSzVDWUlJPSkKIVt0ZWNobm9sb2d5IFNwcmluZ10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9zdGF0aWMvdjE/Y29sb3I9NkRCMzNGJmxhYmVsPVRlY2hub2xvZ3kmbWVzc2FnZT1TcHJpbmcmc3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPXNwcmluZykKCiMgQVBJIFBlb3BsZSBIdWIg8J+RqfCfkagKCkFQSSBSRVNUZnVsIGNvbnN0cnXDrWRhIGNvbSBKYXZhIDIxIGUgU3ByaW5nIEJvb3QgMy4yLjQuCgotLS0KCiMjIPCfjq8gT2JqZXRpdm8gCkEgQVBJIGRlc2Vudm9sdmlkYSBkZXZlIHBlcm1pdGlyOgotIENyaWFyLCBlZGl0YXIgZSBjb25zdWx0YXIgdW1hIG91IG1haXMgcGVzc29hczsKLSBDcmlhciwgZWRpdGFyIGUgY29uc3VsdGFyIHVtIG91IG1haXMgZW5kZXJlw6dvcyBkZSB1bWEgcGVzc29hOyBlCi0gUG9kZXIgaW5kaWNhciBxdWFsIGVuZGVyZcOnbyBzZXLDoSBjb25zaWRlcmFkbyBvIHByaW5jaXBhbCBkZSB1bWEgcGVzc29hLgoKVW1hIHBlc3NvYSBkZXZlIHBvc3N1aXIgb3Mgc2VndWludGVzIGRhZG9zOgotIE5vbWUgY29tcGxldG8KLSBEYXRhIGRlIG5hc2NpbWVudG8KLSBFbmRlcmXDp29zOgogIC0gTG9ncmFkb3VybwogIC0gQ0VQCiAgLSBOw7ptZXJvCiAgLSBDaWRhZGUKICAtIEVzdGFkbwoKT3V0cm9zIHBvbnRvcyBjb25zaWRlcmFkb3M6IAotIEF0aW5naXIgbyBtw6F4aW1vIGRlIGNvYmVydHVyYSBkbyBjw7NkaWdvLgotIENvbnN0cnVpciBBUEkgbm8gZm9ybWF0byBSRVNULgotIEJvYXMgcHLDoXRpY2FzIGRlIHByb2dyYW1hw6fDo28KCiMjIPCflKcgUHJpbmNpcGFpcyB0ZWNub2xvZ2lhcyB1dGlsaXphZGFzCi0gKipKYXZhIDIxKio6IFZlcnPDo28gTFRTIG1haXMgcmVjZW50ZSBkbyBKYXZhIHBhcmEgdGlyYXIgdmFudGFnZW0gZGFzIMO6bHRpbWFzIGlub3Zhw6fDtWVzIHF1ZSBlc3NhIGxpbmd1YWdlbSByb2J1c3RhIGUgYW1wbGFtZW50ZSB1dGlsaXphZGEgb2ZlcmVjZTsKLSAqKlNwcmluZyBCb290IDMqKjogVmVyc8OjbyBkbyBTcHJpbmcgQm9vdCwgcXVlIG1heGltaXphIGEgcHJvZHV0aXZpZGFkZSBkbyBkZXNlbnZvbHZlZG9yIHBvciBtZWlvIGRlIHN1YSBwb2Rlcm9zYSBwcmVtaXNzYSBkZSBhdXRvY29uZmlndXJhw6fDo287Ci0gKipTcHJpbmcgRGF0YSBKUEEqKjogRmVycmFtZW50YSBwb2RlIHNpbXBsaWZpY2FyIGEgY2FtYWRhIGRlIGFjZXNzbyBhb3MgZGFkb3MsIGZhY2lsaXRhbmRvIGEgaW50ZWdyYcOnw6NvIGNvbSBiYW5jb3MgZGUgZGFkb3MgU1FMOwotICoqRmx5V2F5Kio6IEZlcnJhbWVudGEgcXVlIHBlcm1pdGUgdmVyc2lvbmFyIGUgbWlncmFyIHNldSBiYW5jbyBkZSBkYWRvcyBjb20gc2NyaXB0cyBTUUwgc2ltcGxlcyBvdSBKYXZhOwoKLS0tCgojIyDwn5SjIERpYWdyYW1hIGRlIENsYXNzZXMgCgpEaWFncmFtYSBkZSBjbGFzc2VzIG5hIHNpbnRheGUgW01lcm1haWRdLgoKYGBgbWVybWFpZApjbGFzc0RpYWdyYW0KICAgIGNsYXNzIEJhc2ljRW50aXR5IHsKICAgICAgICA8PEFic3RyYWN0Pj4KICAgICAgICAtIFN0cmluZyBpZAogICAgfQoKICAgIGNsYXNzIFBlcnNvbiB7CiAgICAgICAgLSBTdHJpbmcgbmFtZQogICAgICAgIC0gTG9jYWxEYXRlIGJpcnRoRGF0ZQogICAgICAgIC0gTGlzdH5BZGRyZXNzfiBhZHJlc3NlcwogICAgICAgICsgT3B0aW9uYWx+QWRkcmVzc34gZ2V0TWFpbkFkZHJlc3MoKQogICAgfQoKICAgIGNsYXNzIEFkZHJlc3MgewogICAgICAgIC0gU3RyaW5nIHB1YmxpY1BsYWNlCiAgICAgICAgLSBJbnRlZ2VyIG51bWJlcgogICAgICAgIC0gU3RyaW5nIGNpdHkKICAgICAgICAtIFN0cmluZyB6aXBDb2RlCiAgICAgICAgLSBTdGF0ZSBzdGF0ZQogICAgICAgIC0gQWRkcmVzc1R5cGUgYWRkcmVzc1R5cGUKICAgICAgICAtIGJvb2xlYW4gbWFpbgogICAgfQoKICAgIGNsYXNzIEFkZHJlc3NUeXBlIHsKICAgICAgICA8PEVudW1lcmF0aW9uPj4KICAgICAgICBDT01NRVJDSUFMKCJDb21lcmNpYWwiKQogICAgICAgIEhPTUUoIlJlc2lkZW5jaWFsIikKICAgICAgICBNQUlMSU5HKCJDb3JyZXNwb25kw6puY2lhIikKICAgIH0KCiAgICBCYXNpY0VudGl0eSA8LS0gUGVyc29uCiAgICBCYXNpY0VudGl0eSA8LS0gQWRkcmVzcwogICAgUGVyc29uICIxIiAqLS0gIjAuLm4iIEFkZHJlc3MKICAgIEFkZHJlc3MgLS0+IEFkZHJlc3NUeXBlCmBgYCAKCi0tLQoKIyMg8J+TtyBQcmludHMgZG8gUHJvamV0bwoKQmFubmVyIGRvIFNwcmluZyBwZXJzb25hbGl6YWRvICAKIVtTcHJpbmcgQmFubmVyXShkb2NzL2Jhbm5lci5QTkc/cmF3PXRydWUgIlNwcmluZyBCYW5uZXIiKSAgCgoqKkNvdmVyYWdlIGNvbSAxMDAlKiogLSByZWxhdMOzcmlvIGdlcmFkbyBwZWxvIHBsdWdpbiBkbyBKYWNvY28gIAohW0phY29jbyBSZXBvcnRdKGRvY3MvamFjb2NvMTAwLlBORz9yYXc9dHJ1ZSAiSmFjb2NvIFJlcG9ydCIpICAKClN3YWdnZXIgZG9jdW1lbnRhbmRvIGVuZHBvaW50cyAgCiFbU3dhZ2dlcl0oZG9jcy9zd2FnZ2VyLlBORz9yYXc9dHJ1ZSAiU3dhZ2dlciIpICAKCi0tLQoKIyMg4pyU77iPIFRlc3RlcwoKT3MgdGVzdGVzIGZvcmFtIGZlaXRvcyB1dGlsaXphbmRvIEpVbml0IDUsIE1vY2tpdG8gZSBNb2NrTVZDIGNvbSBIYW1jcmVzdC4KCi0gUGFyYSBleGVjdXRhciBvcyB0ZXN0ZXMgcG9kZSBleGVjdXRhciBzdWEgSURFIG91Ci0gVXRpbGl6YW5kbyBvIHRlcm1pbmFsIChQb3dlclNoZWxsLCBCYXNoIG91IHNpbWlsaWFyKSwgYmFzdGEgZXhlY3V0YXIgbmEgcGFzdGEgZG8gcHJvamV0byBvIGNvbWFuZG8gYWJhaXhvOgoKICAgIGBgYHNoZWxsCiAgICAuL212bncgY2xlYW4gdGVzdAogICAgYGBgCgpfQXDDs3MgbyB0ZXN0ZSBmaW5hbGl6YWRvIGNvbSBzdWNlc3NvLCDDqSBwb3Nzw612ZWwgdmVyaWZpY2FyIHJlbGF0w7NyaW8gZGUgY292ZXJhZ2UgZW06IHRhcmdldC9zaXRlL2phY29jby9pbmRleC5odG1sXwoKIyMg4pqZIEV4ZWN1dGFuZG8gbyBwcm9qZXRvIGxvY2FsbWVudGUKCkFudGVzIGRlIG1haXMgbmFkYSwgw6kgcHJlY2lzbyBQb3NzdWlyIG5vIG3DrW5pbW8gSkRLIDIxIExUUyBpbnN0YWxhZG8gbmEgbcOhcXVpbmEgZW0gcXVlIGlyw6EgZXhlY3V0YXIuCkEgZXhlY3XDp8OjbyBkbyBwcm9qZXRvIHBvZGUgc2VyIGZlaXRhIHV0aWxpemFuZG8gcmVjdXJzbyBkZSBzdWEgSURFIG91IGNvbSBjb21hbmRvIChkZW1vbnN0cmFkbyBubyBwcsOzeGltbyBpdGVtKS4KCiMjIyDimqEgRXhlY3V0YW5kbyBjb20gcGVyZmlsIERFVgoKYGBgYmFzaAouL212bncgc3ByaW5nLWJvb3Q6cnVuIC1Ec3ByaW5nX3Byb2ZpbGVzX2FjdGl2ZT1kZXYKYGBgCgojIyMg8J+TmiBPcGVuQXBpIC8gU3dhZ2dlcgoKU3dhZ2dlciBPcGVuQVBJIHYzLjEsIGxpbmsgcGFyYSBhY2Vzc2FyIGEgcMOhZ2luYSBkbyBTd2FnZ2VyIGV4ZWN1dGFuZG8gbyBwcm9qZXRvIGxvY2FsbWVudGU6IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwKCiMjIyDwn5GqIFBvcHVsYXRlCgpQYXJhIHBvcHVsYXIgZGFkb3MgYXV0b21hdGljYW1lbnRlIGZvaSBjcmlhZGEgYSBtaWdyYXRpb24gZG8gRmx5V2F5IGBWM19fUG9wdWxhdGUuc3FsYC4KCi0tLQoKIyMg4piB77iPIERlcGxveSBuYSBOdXZlbQoKRXNzZSBwcm9qZXRvIGZvaSBpbXBsYW50YWRvIG5vIFtSYWlsd2F5XSBxdWUgZmF6IGludGVncmHDp8OjbyBjb20gbyByZXBvc2l0w7NyaW8gZG8gR2l0SHViLgpVUkwgZG8gU3dhZ2dlciBuYSBudXZlbTogaHR0cHM6Ly9wZW9wbGVodWItcHJvZHVjdGlvbi51cC5yYWlsd2F5LmFwcC9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwKCi0tLQoK8J+TiyBRdWFscXVlciBkw7p2aWRhLCBzdWdlc3TDo28gb3UgY3LDrXRpY2Egw6kgc8OzIGVudHJhciBlbSBjb250YXRvIG91IGFicmlyIHVtYSBJc3N1ZSAoaHR0cHM6Ly9naXRodWIuY29tL2RpZGlmaXZlKS4gIArwn5KaIEZlaXRvIGNvbSBtdWl0YSBkZWRpY2HDp8Ojby4gI0Vuam95VGhpcwoKW01lcm1haWRdOiBodHRwczovL21lcm1haWQuanMub3JnLwpbUmFpbHdheV06IGh0dHBzOi8vcmFpbHdheS5hcHAvCg== readmeEtag: '"1e11af5686bb0b18a852e63610847b9192e7da84"' readmeLastModified: Thu, 11 Apr 2024 12:10:52 GMT repositoryId: 784670275 description: 'PeopleHub: Registration of people and addresses API' created: '2024-04-10T10:11:53Z' updated: '2024-04-15T16:34:35Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: didifive logo: https://avatars.githubusercontent.com/u/78564001?v=4 license: Apache-2.0 repoEtag: '"77485af9f51f518b5f13f54cf32c33233676cdf94499ae69f6d8fd9c95208390"' repoLastModified: Mon, 15 Apr 2024 16:34:35 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/aminya/auth0-openapi v3: true id: 60f931a08da3cd657c9bc563625ec5f0 repositoryMetadata: base64Readme: >- IyBBdXRoMCBBdXRoZW50aWNhdGlvbiBBUEkKClRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gZm9yIHRoZSBBdXRoMCBBdXRoZW50aWNhdGlvbiBBUEkuCgojIyBPcGVuQVBJIFNwZWNpZmljYXRpb24KCkluIHRoaXMgcmVwb3NpdG9yeSwgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiB0aGF0IGRlc2NyaWJlcyB0aGUgQXV0aDAgQXV0aGVudGljYXRpb24gQVBJIGlzIHByb3ZpZGVkLgoKVGhlIEF1dGgwIEF1dGhlbnRpY2F0aW9uIEFQSSBlbmFibGVzIHlvdSB0byBtYW5hZ2UgYWxsIGFzcGVjdHMgb2YgdXNlciBpZGVudGl0eSB3aGVuIHlvdSB1c2UgQXV0aDAuIEl0IG9mZmVycyBlbmRwb2ludHMgc28geW91ciB1c2VycyBjYW4gbG9nIGluLCBzaWduIHVwLCBsb2cgb3V0LCBhY2Nlc3MgQVBJcywgYW5kIG1vcmUuIFRoZSBBUEkgc3VwcG9ydHMgdmFyaW91cyBpZGVudGl0eSBwcm90b2NvbHMsIGxpa2UgT3BlbklEIENvbm5lY3QsIE9BdXRoIDIuMCwgYW5kIFNBTUwuCgpUaGlzIHNwZWNpZmljYXRpb24gY2FuIGJlIHVzZWQgZm9yIHZhcmlvdXMgcHVycG9zZXMsIHN1Y2ggYXM6CgotIEdlbmVyYXRlIGNsaWVudCBsaWJyYXJpZXMgaW4gbWFueSBsYW5ndWFnZXMgKHZpYSBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC8pKS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIHRoYXQgYXJlIG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBBdXRoMC4KCi0gR2VuZXJhdGUgc2VydmVyIHN0dWJzIGluIG1hbnkgbGFuZ3VhZ2VzICh2aWEgW09wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvKSkKCi0gR2VuZXJhdGUgaW50ZXJhY3RpdmUgZG9jdW1lbnRhdGlvbiAodmlhIFtTd2FnZ2VyIFVJXShodHRwczovL3N3YWdnZXIuaW8vdG9vbHMvc3dhZ2dlci11aS8pLCBbUmFwaURvY10oaHR0cHM6Ly9yYXBpZG9jd2ViLmNvbS8pLCBbUmVkb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jKSkKCiMjIENvbnRyaWJ1dGluZwoKVGhpcyBzcGVjaWZpY2F0aW9uIGlzIHdyaXR0ZW4gYmFzZWQgb24gdGhlIFtBdXRoMCBBUEldKGh0dHBzOi8vYXV0aDAuY29tL2RvY3MvYXBpKSBkb2N1bWVudGF0aW9uLiBQbGVhc2UgY29udHJpYnV0ZSB0byBpbXByb3ZpbmcgdGhpcyBzcGVjaWZpY2F0aW9uIGJ5IG9wZW5pbmcgcHVsbCByZXF1ZXN0cy4KCllvdSBjYW4gc3BvbnNvciBteSB3b3JrIGhlcmU6CgpodHRwczovL2dpdGh1Yi5jb20vc3BvbnNvcnMvYW1pbnlhCg== readmeEtag: '"d7cf69511301b21e03ee3782bc3f4c3815b22eea"' readmeLastModified: Fri, 26 Apr 2024 04:54:31 GMT repositoryId: 789388710 description: Auth0 OpenAPI specification created: '2024-04-20T12:07:57Z' updated: '2025-05-05T03:19:10Z' language: null archived: false stars: 1 watchers: 1 forks: 0 owner: aminya logo: https://avatars.githubusercontent.com/u/16418197?v=4 license: Apache-2.0 repoEtag: '"7e16cc8923e58d90f8d005d6225637abc16dde9712c5bb04163a746acc6168e6"' repoLastModified: Mon, 05 May 2025 03:19:10 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/mwczapski/swagger_editor_3_docker_container v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyX0VkaXRvcl8zX0RvY2tlcl9Db250YWluZXIKClRoZSBpbnRlbnQgb2YgdGhpcyByZXBvc2l0b3J5IGlzIHRvIGhvc3QgcmVzb3VyY2VzIHRoYXQgcHJvdmlkZSB0aGUgbWVhbnMgdG8gY3JlYXRlIGEgc2VsZi1jb250YWluZWQgRG9ja2VyIGNvbnRhaW5lciBmb3IgQVBJLUZpcnN0IGRldmVsb3BtZW50IHVzaW5nIHRoZSBsYXRlc3QgU3dhZ2dlciBFZGl0b3IgKDMueCkgYW5kIE9wZW5BUEkgKDIgb3IgMykuCgpUaGUgZm9sbG93aW5nIHJlc291cmNlcyBhcmUgYXZhaWxhYmxlIGluIHRoaXMgcmVwb3NpdG9yeToKCjEuIFtTdGVwcyB0byBjcmVhdGUgdGhlIHJlYWR5LXRvLWdvIFN3YWdnZXIgRWRpdG9yIDMuMCBEb2NrZXIgSW1hZ2UgYW5kIGEgcmVhZHktdG8tZ28gU3dhZ2dlciBFZGl0b3IgMy4wIERvY2tlciBDb250YWluZXJdKFN3YWdnZXJfRWRpdG9yX0RvY2tlcl9Db250YWluZXJfZm9yX0FQSS1GaXJzdF9EZXZlbG9wbWVudC5tZCkKMi4gW1N0YXJ0IERvY2tlciBDb250YWluZXIgYW5kIHdvcmsgd2l0aCB0aGUgU3dhZ2dlciBFZGl0b3Igc2VydmVkIGZyb20gdGhlIGNvbnRhaW5lcl0oSG93X1RvX1VzZV9Td2FnZ2VyX0VkaXRvcl9Eb2NrZXJfSW1hZ2UubWQpCjMuIFtTZXQgdXAgU3dhZ2dlciBFZGl0b3Igb24gV2luZG93cyAxMCB3aXRoIG5vIERvY2tlciBvciBXaW5kb3dzIFN1YnN5c3RlbSBmb3IgTGludXggZGVwZW5kZW5jaWVzXShzd2FnZ2VyX2VkaXRvcl9sb2NhbC5tZCkKClRoZSBEb2NrZXIgSW1hZ2UgY3JlYXRlZCBpbiAoMSkgYW5kIHVzZWQgaW4gKDIpIGlzIGF2YWlsYWJsZSBhdCBbbXdjemFwc2tpL3N3YWdnZXItZWRpdG9yOjEuMC4wXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvbXdjemFwc2tpL3N3YWdnZXJfZWRpdG9yKSBvbiBEb2NrZXIgSHViLgo= readmeEtag: '"49ef209172c2bf86f70df7d8f3082e2102499edd"' readmeLastModified: Sat, 01 Aug 2020 07:59:21 GMT repositoryId: 277014482 description: >- The intent of this repository is to host resources that provide the means to create a self-contained Docker container for API-First development using latest Swagger Editor (3.x) and OpenAPI (2 or 3). created: '2020-07-04T01:06:47Z' updated: '2024-06-04T23:42:23Z' language: Dockerfile archived: false stars: 1 watchers: 1 forks: 0 owner: mwczapski logo: https://avatars.githubusercontent.com/u/57377978?v=4 license: MIT repoEtag: '"1f7337cf54b3a12640bf9f1db6eb4dee3d8e23e693b4a5a789b952c86ff4c1b8"' repoLastModified: Tue, 04 Jun 2024 23:42:23 GMT foundInMaster: true category: - Code Generators - Server Implementations id: c9649f9445377cd8e5eafe406ec84cc5 - source: openapi3 tags repository: https://github.com/codeasashu/oas.nvim v3: true id: 50e06ec9dcbadc2a1f5737d4f78619a9 repositoryMetadata: base64Readme: >- IyMgT3BlbiBBUEkgZm9yIG5lb3ZpbQoKVGhpcyBwbHVnaW4gcHJvdmlkZXMgc3VwcG9ydCBmb3Igb3BlbmFwaSwgc3VjaCBhczoKCi0gW3hdIFByZXZpZXdzICh2aWEgUmVkb2MpIAotIFsgXSBUcmVlIG5hdmlnYXRvciBpbiBuZW92aW0KCiMjIyBJbnN0YWxsYXRpb24KCjEuIEluc3RhbGwgcmVkb2NseSBjbGk6CiAgICBgYGBzaCAKICAgIG5wbSBpbnN0YWxsIC1nIEByZWRvY2x5L2NsaQogICAgYGBgCgoyLiBBZGQgdGhlIGZvbGxvd2luZyBpbiBsYXp5LnZpbToKICAgIGBgYGx1YQogICAgeyAiY29kZWFzYXNodS9vYXMubnZpbSIgfQogICAgYGBgCgoKIyMjIFByZXZpZXcKCk9wZW4gcmV2aWV3IGJ5IG9wZW5pbmcgYW55IG9wZW5hcGkgZmlsZSBhbmQgY2FsbGluZyBjb21tYW5kIGA6T0FTUHJldmlld2AuIApUbyBzdG9wIHRoZSBwcmV2aWV3LCBzaW1wbHkgY2FsbCBjb21tYW5kOiBgOk9BU1ByZXZpZXdTdG9wYAo= readmeEtag: '"6bd899896c24b8c466ce33424439e40c76a89c97"' readmeLastModified: Fri, 07 Jun 2024 19:42:23 GMT repositoryId: 812023049 description: Openapi support in neovim created: '2024-06-07T19:40:34Z' updated: '2025-10-03T03:39:06Z' language: Lua archived: false stars: 2 watchers: 1 forks: 0 owner: codeasashu logo: https://avatars.githubusercontent.com/u/1492350?v=4 repoEtag: '"598d5d943acb1229d1bffc26216e8d2b829f42026c1780450fddcdea1f40fd40"' repoLastModified: Fri, 03 Oct 2025 03:39:06 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/ellizio/kiota.autogen v3: true id: 55ce9e3e33d8b88a9f0d10a826199a80 repositoryMetadata: base64Readme: >- IyA8cCBhbGlnbj0iY2VudGVyIj4gS2lvdGEuQXV0b2dlbiA8L3A+DQoNCjxwIGFsaWduPSJjZW50ZXIiPiBBIHNldCBvZiBsaWJyYXJpZXMgZm9yIGF1dG8tZ2VuZXJhdGluZyBBUEkgY2xpZW50cyB1c2luZyA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhIj5LaW90YTwvYT4gPC9wPg0KDQotLS0NCg0KIyMgTGlicmFyaWVzIGxpc3QNCg0KLSBbIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvZHQvS2lvdGEuQXV0b2dlbi5Td2FnZ2VyP2xvZ289bnVnZXQmY29sb3I9MDA3ZWRmKV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL0tpb3RhLkF1dG9nZW4uU3dhZ2dlci8pIFtLaW90YS5BdXRvZ2VuLlN3YWdnZXJdKHNyYy9LaW90YS5BdXRvZ2VuLlN3YWdnZXIpIGZvciBnZW5lcmF0aW5nIEFQSSBjbGllbnQgYmFzZWQgb24gW1N3YXNoYnVja2xlLkFzcE5ldENvcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21haW5kcml2ZW5kZXYvU3dhc2hidWNrbGUuQXNwTmV0Q29yZSkNCg0KIyMgQmFzaWMgVXNhZ2UNCg0KMS4gQWRkIGEgYENsYXNzIExpYnJhcnlgIHByb2plY3QgdG8gdGhlIHNvbHV0aW9uIHRoYXQgY29udGFpbnMgV2ViQXBpIHByb2plY3QNCjIuIEFkZCBXZWJBcGkgcHJvamVjdCByZWZlcmVuY2Ugd2l0aCBgRXhjbHVkZUFzc2V0cz0iQWxsImANCmBgYHhtbA0KPEl0ZW1Hcm91cD4NCiAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlxFeGFtcGxlU2VydmljZS5BcGlcRXhhbXBsZVNlcnZpY2UuQXBpLmNzcHJvaiIgRXhjbHVkZUFzc2V0cz0iQWxsIiAvPg0KPC9JdGVtR3JvdXA+DQpgYGANCjMuIEluc3RhbGwgYEtpb3RhLkF1dG9nZW4uU3dhZ2dlcmAgd2l0aCBgUHJpdmF0ZUFzc2V0cz0iQWxsImANCmBgYHhtbA0KPEl0ZW1Hcm91cD4NCiAgICA8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPSJLaW90YS5BdXRvZ2VuLlN3YWdnZXIiIFZlcnNpb249IjEuMTguMCIgUHJpdmF0ZUFzc2V0cz0iQWxsIiAvPg0KPC9JdGVtR3JvdXA+DQpgYGANCjQuIEluc3RhbGwgZm9sbG93aW5nIGBLaW90YWAgcGFja2FnZXMNCmBgYHhtbA0KPEl0ZW1Hcm91cD4NCiAgICA8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPSJNaWNyb3NvZnQuS2lvdGEuQWJzdHJhY3Rpb25zIiBWZXJzaW9uPSIxLjEyLjQiIC8+DQogICAgPFBhY2thZ2VSZWZlcmVuY2UgSW5jbHVkZT0iTWljcm9zb2Z0Lktpb3RhLkh0dHAuSHR0cENsaWVudExpYnJhcnkiIFZlcnNpb249IjEuMTIuNCIgLz4NCiAgICA8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPSJNaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5Gb3JtIiBWZXJzaW9uPSIxLjEyLjQiIC8+DQogICAgPFBhY2thZ2VSZWZlcmVuY2UgSW5jbHVkZT0iTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uSnNvbiIgVmVyc2lvbj0iMS4xMi40IiAvPg0KICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9Ik1pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLk11bHRpcGFydCIgVmVyc2lvbj0iMS4xMi40IiAvPg0KICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9Ik1pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLlRleHQiIFZlcnNpb249IjEuMTIuNCIgLz4NCjwvSXRlbUdyb3VwPg0KYGBgDQo1LiBDcmVhdGUgYSBgZ2Vuc2V0dGluZ3MuanNvbmAgZmlsZSB3aXRoIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlDQpgYGBqc29uYw0KWw0KICB7DQogICAgIm5hbWUiOiAiV2VhdGhlckNsaWVudCIsIC8vIEFQSSBjbGllbnQgbmFtZSB0byBiZSBnZW5lcmF0ZWQNCiAgICAibmFtZXNwYWNlIjogIldlYXRoZXIuQ2xpZW50IiwgLy8gQVBJIGNsaWVudCBuYW1lc3BhY2UNCiAgICAidmVyc2lvbiI6ICJ2MSIgLy8gV2ViQXBpIFN3YWdnZXIgZG9jdW1lbnQgdmVyc2lvbg0KICB9LA0KICB7DQogICAgIm5hbWUiOiAiV2VhdGhlckNsaWVudE5ldyIsDQogICAgIm5hbWVzcGFjZSI6ICJXZWF0aGVyLkNsaWVudC5OZXciLA0KICAgICJ2ZXJzaW9uIjogInYyIg0KICB9DQpdDQpgYGANCjYuIFNldCB1cCBgQ2xhc3MgbGlicmFyeWAgcHJvamVjdCB0byBidWlsZCBhcyBhIG51Z2V0IHBhY2thZ2UNCmBgYHhtbA0KPFByb3BlcnR5R3JvdXA+DQogICAgLi4uIG90aGVyIHByb3BlcnRpZXMNCg0KICAgIDxJc1BhY2thYmxlPnRydWU8L0lzUGFja2FibGU+DQogICAgPFBhY2thZ2VJZD5FeGFtcGxlU2VydmljZS5DbGllbnQ8L1BhY2thZ2VJZD4NCjwvUHJvcGVydHlHcm91cD4NCmBgYA0KNy4gUGFjayBgQ2xhc3MgbGlicmFyeWAgcHJvamVjdA0KOC4gRW5qb3kgdXNpbmcgQVBJIGNsaWVudA0KYGBgY3NoYXJwDQp1c2luZyBNaWNyb3NvZnQuS2lvdGEuQWJzdHJhY3Rpb25zLkF1dGhlbnRpY2F0aW9uOw0KdXNpbmcgTWljcm9zb2Z0Lktpb3RhLkh0dHAuSHR0cENsaWVudExpYnJhcnk7DQp1c2luZyBXZWF0aGVyLkNsaWVudDsNCg0KdXNpbmcgdmFyIGh0dHBDbGllbnQgPSBuZXcgSHR0cENsaWVudCgpOw0KaHR0cENsaWVudC5CYXNlQWRkcmVzcyA9IG5ldyBVcmkoImh0dHA6Ly95b3VyX3NlcnZpY2VfdXJsIik7DQoNCnZhciBwcm92aWRlciA9IG5ldyBBbm9ueW1vdXNBdXRoZW50aWNhdGlvblByb3ZpZGVyKCk7DQp1c2luZyB2YXIgYWRhcHRlciA9IG5ldyBIdHRwQ2xpZW50UmVxdWVzdEFkYXB0ZXIocHJvdmlkZXIsIGh0dHBDbGllbnQ6IGh0dHBDbGllbnQpOw0KdmFyIGNsaWVudCA9IG5ldyBXZWF0aGVyQ2xpZW50KGFkYXB0ZXIpOw0KDQp2YXIgZm9yZWNhc3RzID0gYXdhaXQgY2xpZW50LldlYXRoZXJmb3JlY2FzdC5HZXRBc3luYygpOw0KYGBgDQoNClNlZSBbZnVsbCBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vZWxsaXppby9LaW90YS5BdXRvZ2VuLUV4YW1wbGVzL3RyZWUvbWFzdGVyLzEuJTIwU3dhZ2dlcikNCg0KIyMgQWR2YW5jZWQgVXNhZ2UNCg0KWW91IGNhbiBwcm92aWRlIHlvdXIgb3duIGltcGxlbWVudGF0aW9ucyBvZiBgTWljcm9zb2Z0Lktpb3RhLkFic3RyYWN0aW9uc2AgZnJvbSB0aGUgYENsYXNzIGxpYnJhcnlgIHByb2plY3QgaWYgeW91IG5lZWRcDQpVc2FnZToNCmBgYGNzaGFycA0KdXNpbmcgTWljcm9zb2Z0Lktpb3RhLkFic3RyYWN0aW9ucy5BdXRoZW50aWNhdGlvbjsNCnVzaW5nIE1pY3Jvc29mdC5LaW90YS5IdHRwLkh0dHBDbGllbnRMaWJyYXJ5Ow0KdXNpbmcgV2VhdGhlci5DbGllbnQ7DQoNCnVzaW5nIHZhciBodHRwQ2xpZW50ID0gbmV3IEh0dHBDbGllbnQoKTsNCmh0dHBDbGllbnQuQmFzZUFkZHJlc3MgPSBuZXcgVXJpKCJodHRwOi8veW91cl9zZXJ2aWNlX3VybCIpOw0KDQp2YXIgcHJvdmlkZXIgPSBuZXcgQW5vbnltb3VzQXV0aGVudGljYXRpb25Qcm92aWRlcigpOw0KdXNpbmcgdmFyIGFkYXB0ZXIgPSBuZXcgSHR0cENsaWVudFJlcXVlc3RBZGFwdGVyKHByb3ZpZGVyLCBuZXcgV2VhdGhlclBhcnNlTm9kZUZhY3RvcnkoKSwgbmV3IFdlYXRoZXJTZXJpYWxpemF0aW9uV3JpdGVyRmFjdG9yeSgpLCBodHRwQ2xpZW50OiBodHRwQ2xpZW50KTsNCnZhciBjbGllbnQgPSBuZXcgV2VhdGhlckNsaWVudChhZGFwdGVyKTsNCg0KdmFyIGZvcmVjYXN0cyA9IGF3YWl0IGNsaWVudC5XZWF0aGVyZm9yZWNhc3QuR2V0QXN5bmMoKTsNCmBgYA0KDQpTZWUgW2Z1bGwgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2VsbGl6aW8vS2lvdGEuQXV0b2dlbi1FeGFtcGxlcy90cmVlL21hc3Rlci8yLiUyMEFkdmFuY2VkKQ0KDQojIyBNb3JlIEV4YW1wbGVzDQoNClNlZSBtb3JlIGV4YW1wbGVzIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vZWxsaXppby9LaW90YS5BdXRvZ2VuLUV4YW1wbGVzKQ0KDQojIyBBZGRpdGlvbmFsIFJlZmVyZW5jZXMNCg0KLSBbQ2hhbmdlbG9nXShDSEFOR0VMT0cubWQpDQotIFtLaW90YV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YSkNCi0gW1N3YXNoYnVja2xlLkFzcE5ldENvcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21haW5kcml2ZW5kZXYvU3dhc2hidWNrbGUuQXNwTmV0Q29yZSkNCg== readmeEtag: '"ce4f329d27d82655cc4c8ddae04da7d956f20067"' readmeLastModified: Tue, 24 Jun 2025 15:27:02 GMT repositoryId: 814793618 description: A set of libraries for auto-generating API clients using Kiota created: '2024-06-13T18:06:04Z' updated: '2025-06-24T15:27:06Z' language: C# archived: false stars: 1 watchers: 1 forks: 1 owner: ellizio logo: https://avatars.githubusercontent.com/u/48138666?v=4 license: MIT repoEtag: '"08c08c45abd3537616229b8d4ffb295bef1b7d2b1c1cb74c01105a8a7f3fd1c0"' repoLastModified: Tue, 24 Jun 2025 15:27:06 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/zero-to-prod/data-model-openapi30 v3: true id: 78fd9e63b8ce0aabb3f592921ea83c75 repositoryMetadata: base64Readme: >- IyBaZXJvdG9wcm9kXERhdGFNb2RlbE9wZW5hcGkzMAoKIVtdKC4vYXJ0L2xvZ28ucG5nKQoKWyFbUmVwb10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9naXRodWItZ3JheT9sb2dvPWdpdGh1YildKGh0dHBzOi8vZ2l0aHViLmNvbS96ZXJvLXRvLXByb2QvZGF0YS1tb2RlbC1vcGVuYXBpMzApClshW0dpdEh1YiBBY3Rpb25zIFdvcmtmbG93IFN0YXR1c10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvYWN0aW9ucy93b3JrZmxvdy9zdGF0dXMvemVyby10by1wcm9kL2RhdGEtbW9kZWwtb3BlbmFwaTMwL3Rlc3QueW1sP2xhYmVsPXRlc3QpXShodHRwczovL2dpdGh1Yi5jb20vemVyby10by1wcm9kL2RhdGEtbW9kZWwtb3BlbmFwaTMwL2FjdGlvbnMpClshW0dpdEh1YiBBY3Rpb25zIFdvcmtmbG93IFN0YXR1c10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvYWN0aW9ucy93b3JrZmxvdy9zdGF0dXMvemVyby10by1wcm9kL2RhdGEtbW9kZWwtb3BlbmFwaTMwL2JhY2t3YXJkc19jb21wYXRpYmlsaXR5LnltbD9sYWJlbD1iYWNrd2FyZHNfY29tcGF0aWJpbGl0eSldKGh0dHBzOi8vZ2l0aHViLmNvbS96ZXJvLXRvLXByb2QvZGF0YS1tb2RlbC1vcGVuYXBpMzAvYWN0aW9ucykKWyFbUGFja2FnaXN0IERvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9wYWNrYWdpc3QvZHQvemVyby10by1wcm9kL2RhdGEtbW9kZWwtb3BlbmFwaTMwP2NvbG9yPWJsdWUpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvemVyby10by1wcm9kL2RhdGEtbW9kZWwtb3BlbmFwaTMwL3N0YXRzKQpbIVtQYWNrYWdpc3QgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9wYWNrYWdpc3Qvdi96ZXJvLXRvLXByb2QvZGF0YS1tb2RlbC1vcGVuYXBpMzA/Y29sb3I9ZjI4ZDFhKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL3plcm8tdG8tcHJvZC9kYXRhLW1vZGVsLW9wZW5hcGkzMCkKWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9wYWNrYWdpc3QvbC96ZXJvLXRvLXByb2QvZGF0YS1tb2RlbC1vcGVuYXBpMzA/Y29sb3I9cmVkKV0oaHR0cHM6Ly9naXRodWIuY29tL3plcm8tdG8tcHJvZC9kYXRhLW1vZGVsLW9wZW5hcGkzMC9ibG9iL21haW4vTElDRU5TRS5tZCkKWyFbd2FrYXRpbWVdKGh0dHBzOi8vd2FrYXRpbWUuY29tL2JhZGdlL2dpdGh1Yi96ZXJvLXRvLXByb2QvZGF0YS1tb2RlbC1vcGVuYXBpMzAuc3ZnKV0oaHR0cHM6Ly93YWthdGltZS5jb20vYmFkZ2UvZ2l0aHViL3plcm8tdG8tcHJvZC9kYXRhLW1vZGVsLW9wZW5hcGkzMCkKWyFbSGl0cy1vZi1Db2RlXShodHRwczovL2hpdHNvZmNvZGUuY29tL2dpdGh1Yi96ZXJvLXRvLXByb2QvZGF0YS1tb2RlbC1vcGVuYXBpMzA/YnJhbmNoPW1haW4pXShodHRwczovL2hpdHNvZmNvZGUuY29tL2dpdGh1Yi96ZXJvLXRvLXByb2QvZGF0YS1tb2RlbC1vcGVuYXBpMzAvdmlldz9icmFuY2g9bWFpbikKCiMjIENvbnRlbnRzCgotIFtJbnRyb2R1Y3Rpb25dKCNpbnRyb2R1Y3Rpb24pCi0gW1JlcXVpcmVtZW50c10oI3JlcXVpcmVtZW50cykKLSBbSW5zdGFsbGF0aW9uXSgjaW5zdGFsbGF0aW9uKQotIFtEb2N1bWVudGF0aW9uIFB1Ymxpc2hpbmddKCNkb2N1bWVudGF0aW9uLXB1Ymxpc2hpbmcpCiAgICAtIFtBdXRvbWF0aWMgRG9jdW1lbnRhdGlvbiBQdWJsaXNoaW5nXSgjYXV0b21hdGljLWRvY3VtZW50YXRpb24tcHVibGlzaGluZykKLSBbVXNhZ2VdKCN1c2FnZSkKLSBbUHVibGlzaGluZyBEYXRhTW9kZWxzXSgjcHVibGlzaGluZy1kYXRhbW9kZWxzKQotIFtMb2NhbCBEZXZlbG9wbWVudF0oLi9MT0NBTF9ERVZFTE9QTUVOVC5tZCkKLSBbQ29udHJpYnV0aW5nXSgjY29udHJpYnV0aW5nKQoKIyMgSW50cm9kdWN0aW9uCgpEYXRhTW9kZWxzIGZvciBPcGVuQVBJIDMuMC4qIFtzcGVjaWZpY2F0aW9uXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCkuCgojIyBSZXF1aXJlbWVudHMKCi0gUEhQIDguMSBvciBoaWdoZXIuCgojIyBJbnN0YWxsYXRpb24KCkluc3RhbGwgYFplcm90b3Byb2RcRGF0YU1vZGVsT3BlbmFwaTMwYCB2aWEgW0NvbXBvc2VyXShodHRwczovL2dldGNvbXBvc2VyLm9yZy8pOgoKYGBgc2hlbGwKY29tcG9zZXIgcmVxdWlyZSB6ZXJvLXRvLXByb2QvZGF0YS1tb2RlbC1vcGVuYXBpMzAKYGBgCgpUaGlzIHdpbGwgYWRkIHRoZSBwYWNrYWdlIHRvIHlvdXIgcHJvamVjdCdzIGRlcGVuZGVuY2llcyBhbmQgY3JlYXRlIGFuIGF1dG9sb2FkZXIgZW50cnkgZm9yIGl0LgoKIyMgRG9jdW1lbnRhdGlvbiBQdWJsaXNoaW5nCgpZb3UgY2FuIHB1Ymxpc2ggdGhpcyBSRUFETUUgdG8geW91ciBsb2NhbCBkb2N1bWVudGF0aW9uIGRpcmVjdG9yeS4KClRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgcHJvdmlkaW5nIGRvY3VtZW50YXRpb24gZm9yIEFJIGFnZW50cy4KClRoaXMgY2FuIGJlIGRvbmUgdXNpbmcgdGhlIGluY2x1ZGVkIHNjcmlwdDoKCmBgYGJhc2gKIyBQdWJsaXNoIHRvIGRlZmF1bHQgbG9jYXRpb24gKC4vZG9jcy96ZXJvLXRvLXByb2QvZGF0YS1tb2RlbC1vcGVuYXBpMzApCnZlbmRvci9iaW4vZGF0YS1tb2RlbC1vcGVuYXBpMzAKCiMgUHVibGlzaCB0byBjdXN0b20gZGlyZWN0b3J5CnZlbmRvci9iaW4vZGF0YS1tb2RlbC1vcGVuYXBpMzAgL3BhdGgvdG8veW91ci9kb2NzCmBgYAoKIyMjIEF1dG9tYXRpYyBEb2N1bWVudGF0aW9uIFB1Ymxpc2hpbmcKCllvdSBjYW4gYXV0b21hdGljYWxseSBwdWJsaXNoIGRvY3VtZW50YXRpb24gYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8geW91ciBgY29tcG9zZXIuanNvbmA6CgpgYGBqc29uCnsKICAgICJzY3JpcHRzIjogewogICAgICAgICJwb3N0LWluc3RhbGwtY21kIjogWwogICAgICAgICAgICAiZGF0YS1tb2RlbC1vcGVuYXBpMzAiCiAgICAgICAgXSwKICAgICAgICAicG9zdC11cGRhdGUtY21kIjogWwogICAgICAgICAgICAiZGF0YS1tb2RlbC1vcGVuYXBpMzAiCiAgICAgICAgXQogICAgfQp9CmBgYAoKIyMgVXNhZ2UKCmBgYHBocAp1c2UgWmVyb3RvcHJvZFxEYXRhTW9kZWxPcGVuYXBpMzBcT3BlbkFwaTsKCiRPcGVuQXBpID0gT3BlbkFwaTo6ZnJvbShqc29uX2RlY29kZSgkanNvbiwgdHJ1ZSkpOwoKJE9wZW5BcGktPmNvbXBvbmVudHMtPnNjaGVtYXNbJ3BldCddLT5kZXNjcmlwdGlvbjsKYGBgCgojIyBQdWJsaXNoaW5nIERhdGFNb2RlbHMKCllvdSBjYW4gZGlyZWN0bHkgaW1wb3J0IHRoZXNlIGZpbGVzIGludG8geW91ciBwcm9qZWN0IGxpa2UgdGhpczoKCmBgYHNoZWxsCi4vdmVuZG9yL2Jpbi9kYXRhLW1vZGVsLW9wZW5hcGkzMCBhcHAvRGF0YU1vZGVsT3BlbmFwaTMwCmBgYAoKIyMgQWNjZXB0YW5jZSBUZXN0cwoKfCBUZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdGF0dXMgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgWzQuNy4yLjIgSW5mbyBPYmplY3QgRXhhbXBsZV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjaW5mby1vYmplY3QtZXhhbXBsZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBbNC43LjMuMiBDb250YWN0IE9iamVjdCBFeGFtcGxlXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNjb250YWN0LW9iamVjdC1leGFtcGxlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IFs0LjcuNC4yIExpY2Vuc2UgT2JqZWN0IEV4YW1wbGVdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI2xpY2Vuc2Utb2JqZWN0LWV4YW1wbGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgWzQuNy41LjIgU2VydmVyIE9iamVjdCBFeGFtcGxlXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNzZXJ2ZXItb2JqZWN0LWV4YW1wbGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBbNC43LjcuMiBDb21wb25lbnRzIE9iamVjdCBFeGFtcGxlXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNjb21wb25lbnRzLW9iamVjdC1leGFtcGxlKSAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IFs0LjcuOC4zIFBhdGhzIE9iamVjdCBFeGFtcGxlXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNwYXRocy1vYmplY3QtZXhhbXBsZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgWzQuNy45LjIgUGF0aCBJdGVtIE9iamVjdCBFeGFtcGxlXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNwYXRoLWl0ZW0tb2JqZWN0LWV4YW1wbGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBbNC43LjEwLjIgT3BlcmF0aW9uIE9iamVjdCBFeGFtcGxlXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNvcGVyYXRpb24tb2JqZWN0LWV4YW1wbGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IFs0LjcuMTEuMiBFeHRlcm5hbCBEb2N1bWVudGF0aW9uIE9iamVjdCBFeGFtcGxlXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNleHRlcm5hbC1kb2N1bWVudGF0aW9uLW9iamVjdC1leGFtcGxlKSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgWzQuNy4xMi41IFBhcmFtZXRlciBPYmplY3QgRXhhbXBsZXNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI3BhcmFtZXRlci1vYmplY3QtZXhhbXBsZXMpICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBbNC43LjEzLjIgUmVxdWVzdCBCb2R5IEV4YW1wbGVzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNyZXF1ZXN0LWJvZHktZXhhbXBsZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IFs0LjcuMTQuMiBNZWRpYSBUeXBlIEV4YW1wbGVzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNtZWRpYS10eXBlLWV4YW1wbGVzLTApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyBQcm9wZXJ0aWVzCgojIFs0LjAgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjc3BlY2lmaWNhdGlvbikKCiMjIFs0LjcgU2NoZW1hXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNzY2hlbWEtMCkKClRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgT3BlbkFQSSBEZXNjcmlwdGlvbiBmb3JtYXQKCiMjIyBbNC43LjEgT3BlbkFQSSBPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI29wZW5hcGktb2JqZWN0KQoKVGhpcyBpcyB0aGUgcm9vdCBvYmplY3Qgb2YgdGhlIE9wZW5BUEkgRGVzY3JpcHRpb24uCgojIyMjIFs0LjcuMS4xIEZpeGVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzKQoKfCBGaWVsZCBOYW1lICAgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBvcGVuYXBpICAgICAgfCBbYHN0cmluZ2BdKHNyYy9PcGVuQXBpLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBpbmZvICAgICAgICAgfCBbYEluZm8gT2JqZWN0YF0oc3JjL0luZm8ucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBzZXJ2ZXJzICAgICAgfCBbYFtTZXJ2ZXIgT2JqZWN0XWBdKHNyYy9TZXJ2ZXIucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBwYXRocyAgICAgICAgfCBbYFBhdGhzIE9iamVjdGBdKHNyYy9QYXRoSXRlbS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBjb21wb25lbnRzICAgfCBbYENvbXBvbmVudHMgT2JqZWN0YF0oc3JjL0NvbXBvbmVudHMucGhwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBzZWN1cml0eSAgICAgfCBbYFNlY3VyaXR5IFJlcXVpcmVtZW50IE9iamVjdGBdKHNyYy9PcGVuQXBpLnBocCkgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCB0YWdzICAgICAgICAgfCBbW2BUYWcgT2JqZWN0YF0oc3JjL1RhZy5waHApXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBleHRlcm5hbERvY3MgfCBbYEV4dGVybmFsIERvY3VtZW50YXRpb24gT2JqZWN0YF0oc3JjL0V4dGVybmFsRG9jdW1lbnRhdGlvbi5waHApIHwgOndoaXRlX2NoZWNrX21hcms6IHwKCiMjIyBbNC43LjIgSW5mbyBPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI2luZm8tb2JqZWN0KQoKVGhlIG9iamVjdCBwcm92aWRlcyBtZXRhZGF0YSBhYm91dCB0aGUgQVBJLgoKIyMjIyBbNC43LjIuMSBGaXhlZCBGaWVsZHNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI2ZpeGVkLWZpZWxkcy0wKQoKfCBGaWVsZCBOYW1lICAgICB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCB0aXRsZSAgICAgICAgICB8IFtgc3RyaW5nYF0oc3JjL0luZm8ucGhwKSAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBkZXNjcmlwdGlvbiAgICB8IFtgc3RyaW5nYF0oc3JjL0luZm8ucGhwKSAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCB0ZXJtc09mU2VydmljZSB8IFtgc3RyaW5nYF0oc3JjL0luZm8ucGhwKSAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBjb250YWN0ICAgICAgICB8IFtgQ29udGFjdCBPYmplY3RgXShzcmMvQ29udGFjdC5waHApIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBsaWNlbnNlICAgICAgICB8IFtgTGljZW5zZSBPYmplY3RgXShzcmMvTGljZW5zZS5waHApIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCB2ZXJzaW9uICAgICAgICB8IFtgc3RyaW5nYF0oc3JjL0luZm8ucGhwKSAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKCiMjIyBbNC43LjMgQ29udGFjdCBPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI2NvbnRhY3Qtb2JqZWN0KQoKQ29udGFjdCBpbmZvcm1hdGlvbiBmb3IgdGhlIGV4cG9zZWQgQVBJLgoKIyMjIyBbNC43LjMuMSBGaXhlZCBGaWVsZHNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI2ZpeGVkLWZpZWxkcy0xKQoKfCBGaWVsZCB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICB8IFN0YXR1cyAgICAgICAgICAgICB8CnwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IG5hbWUgIHwgW2BzdHJpbmdgXShzcmMvQ29udGFjdC5waHApIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCB1cmwgICB8IFtgc3RyaW5nYF0oc3JjL0NvbnRhY3QucGhwKSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgZW1haWwgfCBbYGVtYWlsYF0oc3JjL0NvbnRhY3QucGhwKSAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAoKIyMjIFs0LjcuNCBMaWNlbnNlIE9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjbGljZW5zZS1vYmplY3QpCgpMaWNlbnNlIGluZm9ybWF0aW9uIGZvciB0aGUgZXhwb3NlZCBBUEkuCgojIyMjIFs0LjcuNC4xIEZpeGVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLTIpCgp8IEZpZWxkIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgbmFtZSAgfCBbYHN0cmluZ2BdKHNyYy9MaWNlbnNlLnBocCkgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHVybCAgIHwgW2BzdHJpbmdgXShzcmMvTGljZW5zZS5waHApIHwgOndoaXRlX2NoZWNrX21hcms6IHwKCiMjIyBbNC43LjUgU2VydmVyIE9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjc2VydmVyLW9iamVjdCkKCkFuIG9iamVjdCByZXByZXNlbnRpbmcgYSBTZXJ2ZXIuCgojIyMjIFs0LjcuNS4xIEZpeGVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLTMpCgp8IEZpZWxkIE5hbWUgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdGF0dXMgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IHVybCAgICAgICAgIHwgW2BzdHJpbmdgXShzcmMvU2VydmVyLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGRlc2NyaXB0aW9uIHwgW2BzdHJpbmdgXShzcmMvU2VydmVyLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHZhcmlhYmxlcyAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL1NlcnZlci5waHApLCBbYFNlcnZlciBWYXJpYWJsZSBPYmplY3RgXShzcmMvU2VydmVyVmFyaWFibGUucGhwKV0gfCA6d2hpdGVfY2hlY2tfbWFyazogfAoKIyMjIFs0LjcuNiBTZXJ2ZXIgT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNzZXJ2ZXItdmFyaWFibGUtb2JqZWN0KQoKQW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIFNlcnZlciBWYXJpYWJsZSBmb3Igc2VydmVyIFVSTCB0ZW1wbGF0ZSBzdWJzdGl0dXRpb24uCgojIyMjIFs0LjcuNi4xIEZpeGVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLTQpCgp8IEZpZWxkIE5hbWUgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgZW51bSAgICAgICAgfCBbW2BzdHJpbmdgXV0oc3JjL1NlcnZlclZhcmlhYmxlLnBocCkgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGRlZmF1bHQgICAgIHwgW2BzdHJpbmdgXShzcmMvU2VydmVyVmFyaWFibGUucGhwKSAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBkZXNjcmlwdGlvbiB8IFtgc3RyaW5nYF0oc3JjL1NlcnZlclZhcmlhYmxlLnBocCkgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyMgWzQuNy43IENvbXBvbmVudHMgT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNjb21wb25lbnRzLW9iamVjdCkKCkhvbGRzIGEgc2V0IG9mIHJldXNhYmxlIG9iamVjdHMgZm9yIGRpZmZlcmVudCBhc3BlY3RzIG9mIHRoZSBPQVMuCgojIyMgWzQuNy43LjEgRml4ZWQgRmllbGRzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNmaXhlZC1maWVsZHMtNSkKCnwgRmllbGQgTmFtZSAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN0YXR1cyAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18Cnwgc2NoZW1hcyAgICAgICAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL0NvbXBvbmVudHMucGhwKSwgW2BTY2hlbWEgT2JqZWN0YF0oc3JjL1NjaGVtYS5waHApIFx8IFtgUmVmZXJlbmNlIE9iamVjdGBdKHNyYy9SZWZlcmVuY2UucGhwKV0gICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgcmVzcG9uc2VzICAgICAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL0NvbXBvbmVudHMucGhwKSwgW2BSZXNwb25zZSBPYmplY3RgXShzcmMvUmVzcG9uc2UucGhwKSBcfCBbYFJlZmVyZW5jZSBPYmplY3RgXShzcmMvUmVmZXJlbmNlLnBocCldICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgcGFyYW1ldGVycyAgICAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL0NvbXBvbmVudHMucGhwKSwgW2BQYXJhbWV0ZXIgT2JqZWN0YF0oc3JjL1BhcmFtZXRlci5waHApIFx8IFtgUmVmZXJlbmNlIE9iamVjdGBdKHNyYy9SZWZlcmVuY2UucGhwKV0gICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgZXhhbXBsZXMgICAgICAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL0NvbXBvbmVudHMucGhwKSwgW2BFeGFtcGxlIE9iamVjdGBdKHNyYy9FeGFtcGxlLnBocCkgXHwgW2BSZWZlcmVuY2UgT2JqZWN0YF0oc3JjL1JlZmVyZW5jZS5waHApXSAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgcmVxdWVzdEJvZGllcyAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL0NvbXBvbmVudHMucGhwKSwgW2BSZXF1ZXN0IEJvZHkgT2JqZWN0YF0oc3JjL1JlcXVlc3RCb2R5LnBocCkgXHwgW2BSZWZlcmVuY2UgT2JqZWN0YF0oc3JjL1JlZmVyZW5jZS5waHApXSAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgaGVhZGVycyAgICAgICAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL0NvbXBvbmVudHMucGhwKSwgW2BIZWFkZXIgT2JqZWN0YF0oc3JjL0hlYWRlci5waHApIFx8IFtgUmVmZXJlbmNlIE9iamVjdGBdKHNyYy9SZWZlcmVuY2UucGhwKV0gICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8Cnwgc2VjdXJpdHlTY2hlbWVzIHwgTWFwW1tgc3RyaW5nYF0oc3JjL0NvbXBvbmVudHMucGhwKSwgW2BTZWN1cml0eSBTY2hlbWUgT2JqZWN0YF0oc3JjL1NlY3VyaXR5U2NoZW1lLnBocCkgXHwgW2BSZWZlcmVuY2UgT2JqZWN0YF0oc3JjL1JlZmVyZW5jZS5waHApXSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgbGlua3MgICAgICAgICAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL0NvbXBvbmVudHMucGhwKSwgW2BMaW5rIE9iamVjdGBdKHNyYy9MaW5rLnBocCkgXHwgW2BSZWZlcmVuY2UgT2JqZWN0YF0oc3JjL1JlZmVyZW5jZS5waHApXSAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgY2FsbGJhY2tzICAgICAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL0NvbXBvbmVudHMucGhwKSwgW2BDYWxsYmFjayBPYmplY3RgXShzcmMvUGF0aEl0ZW0ucGhwKSBcfCBbYFJlZmVyZW5jZSBPYmplY3RgXShzcmMvUmVmZXJlbmNlLnBocCldICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyMgWzQuNy44IFBhdGhzIE9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjcGF0aHMtb2JqZWN0KQoKSG9sZHMgdGhlIHJlbGF0aXZlIHBhdGhzIHRvIHRoZSBpbmRpdmlkdWFsIGVuZHBvaW50cyBhbmQgdGhlaXIgb3BlcmF0aW9ucy4KCiMjIyMgWzQuNy44LjEgUGF0dGVybmVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjcGF0dGVybmVkLWZpZWxkcykKCnwgRmllbGQgTmFtZSB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN0YXR1cyAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgL3twYXRofSAgICB8IFtQYXRoIEl0ZW0gT2JqZWN0XShzcmMvUGF0aEl0ZW0ucGhwKSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyMgWzQuNy45IFBhdGggSXRlbSBPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI3BhdGgtaXRlbS1vYmplY3QpCgpEZXNjcmliZXMgdGhlIG9wZXJhdGlvbnMgYXZhaWxhYmxlIG9uIGEgc2luZ2xlIHBhdGguCgojIyMjIFs0LjcuOS4xIEZpeGVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLTYpCgp8IEZpZWxkIE5hbWUgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgJHJlZiAgICAgICAgfCBbYHN0cmluZ2BdKHNyYy9QYXRoSXRlbS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHN1bW1hcnkgICAgIHwgW2BzdHJpbmdgXShzcmMvUGF0aEl0ZW0ucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBkZXNjcmlwdGlvbiB8IFtgc3RyaW5nYF0oc3JjL1BhdGhJdGVtLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgZ2V0ICAgICAgICAgfCBbYE9wZXJhdGlvbiBPYmplY3RgXShzcmMvT3BlcmF0aW9uLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHB1dCAgICAgICAgIHwgW2BPcGVyYXRpb24gT2JqZWN0YF0oc3JjL09wZXJhdGlvbi5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBwb3N0ICAgICAgICB8IFtgT3BlcmF0aW9uIE9iamVjdGBdKHNyYy9PcGVyYXRpb24ucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgZGVsZXRlICAgICAgfCBbYE9wZXJhdGlvbiBPYmplY3RgXShzcmMvT3BlcmF0aW9uLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IG9wdGlvbnMgICAgIHwgW2BPcGVyYXRpb24gT2JqZWN0YF0oc3JjL09wZXJhdGlvbi5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBoZWFkICAgICAgICB8IFtgT3BlcmF0aW9uIE9iamVjdGBdKHNyYy9PcGVyYXRpb24ucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgcGF0Y2ggICAgICAgfCBbYE9wZXJhdGlvbiBPYmplY3RgXShzcmMvT3BlcmF0aW9uLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHRyYWNlICAgICAgIHwgW2BPcGVyYXRpb24gT2JqZWN0YF0oc3JjL09wZXJhdGlvbi5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBzZXJ2ZXJzICAgICB8IFtgU2VydmVyIE9iamVjdGBdKHNyYy9TZXJ2ZXIucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgcGFyYW1ldGVycyAgfCBbW2BQYXJhbWV0ZXIgT2JqZWN0YF0oc3JjL1BhcmFtZXRlci5waHApIFx8IFtgUmVmZXJlbmNlIE9iamVjdGBdKHNyYy9SZWZlcmVuY2UucGhwKV0gfCA6d2hpdGVfY2hlY2tfbWFyazogfAoKIyMjIFs0LjcuMTAgT3BlcmF0aW9uIE9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjb3BlcmF0aW9uLW9iamVjdCkKCkRlc2NyaWJlcyBhIHNpbmdsZSBBUEkgb3BlcmF0aW9uIG9uIGEgcGF0aC4KCiMjIyMgWzQuNy4xMC4xIEZpeGVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLTcpCgp8IEZpZWxkIE5hbWUgICB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgdGFncyAgICAgICAgIHwgW1tgc3RyaW5nYF1dKHNyYy9PcGVyYXRpb24ucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHN1bW1hcnkgICAgICB8IFtgc3RyaW5nYF0oc3JjL09wZXJhdGlvbi5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBkZXNjcmlwdGlvbiAgfCBbYHN0cmluZ2BdKHNyYy9PcGVyYXRpb24ucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgZXh0ZXJuYWxEb2NzIHwgW2BFeHRlcm5hbCBEb2N1bWVudGF0aW9uIE9iamVjdGBdKHNyYy9FeHRlcm5hbERvY3VtZW50YXRpb24ucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IG9wZXJhdGlvbklkICB8IFtgc3RyaW5nYF0oc3JjL09wZXJhdGlvbi5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBwYXJhbWV0ZXJzICAgfCBbW2BQYXJhbWV0ZXIgT2JqZWN0YF0oc3JjL1BhcmFtZXRlci5waHApIFx8IFtgUmVmZXJlbmNlIE9iamVjdGBdKHNyYy9SZWZlcmVuY2UucGhwKV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgcmVxdWVzdEJvZHkgIHwgW2BSZXF1ZXN0IEJvZHkgT2JqZWN0YF0oc3JjL1JlcXVlc3RCb2R5LnBocCkgXHwgW2BSZWZlcmVuY2UgT2JqZWN0YF0oc3JjL1JlZmVyZW5jZS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHJlc3BvbnNlcyAgICB8IFtgUmVzcG9uc2VzIE9iamVjdGBdKHNyYy9SZXNwb25zZS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBjYWxsYmFja3MgICAgfCBNYXBbW2BzdHJpbmdgXShzcmMvT3BlcmF0aW9uLnBocCksIFtgQ2FsbGJhY2sgT2JqZWN0YF0oc3JjL1BhdGhJdGVtLnBocCkgXHwgW2BSZWZlcmVuY2UgT2JqZWN0YF0oc3JjL1JlZmVyZW5jZS5waHApXSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgZGVwcmVjYXRlZCAgIHwgW2Bib29sZWFuYF0oc3JjL09wZXJhdGlvbi5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHNlY3VyaXR5ICAgICB8IFtgU2VjdXJpdHkgUmVxdWlyZW1lbnQgT2JqZWN0YF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBzZXJ2ZXJzICAgICAgfCBbW2BTZXJ2ZXIgT2JqZWN0YF1dKHNyYy9TZXJ2ZXIucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyMgWzQuNy4xMSBFeHRlcm5hbCBEb2N1bWVudGF0aW9uIE9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZXh0ZXJuYWwtZG9jdW1lbnRhdGlvbi1vYmplY3QpCgpBbGxvd3MgcmVmZXJlbmNpbmcgYW4gZXh0ZXJuYWwgcmVzb3VyY2UgZm9yIGV4dGVuZGVkIGRvY3VtZW50YXRpb24uCgojIyMjIFs0LjcuMTEuMSBGaXhlZCBGaWVsZHNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI2ZpeGVkLWZpZWxkcy04KQoKfCBGaWVsZCBOYW1lICB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBkZXNjcmlwdGlvbiB8IFtgc3RyaW5nYF0oc3JjL0V4dGVybmFsRG9jdW1lbnRhdGlvbi5waHApIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCB1cmwgICAgICAgICB8IFtgc3RyaW5nYF0oc3JjL0V4dGVybmFsRG9jdW1lbnRhdGlvbi5waHApIHwgOndoaXRlX2NoZWNrX21hcms6IHwKCiMjIyBbNC43LjEyIFBhcmFtZXRlciBPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI3BhcmFtZXRlci1vYmplY3QpCgpEZXNjcmliZXMgYSBzaW5nbGUgb3BlcmF0aW9uIHBhcmFtZXRlci4KCiMjIyMgWzQuNy4xMi4yIEZpeGVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLTkpCgpUaGUgcnVsZXMgZm9yIHNlcmlhbGl6YXRpb24gb2YgdGhlIHBhcmFtZXRlciBhcmUgc3BlY2lmaWVkIGluIG9uZSBvZiB0d28gd2F5cy4gUGFyYW1ldGVyIE9iamVjdHMgX01VU1RfIGluY2x1ZGUgZWl0aGVyIGEgYGNvbnRlbnRgIGZpZWxkIG9yIGEgYHNjaGVtYWAKZmllbGQsIGJ1dCBub3QgYm90aC4KCiMjIyMjIFs0LjcuMTIuMi4xIENvbW1vbiBGaXhlZCBGaWVsZHNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI2NvbW1vbi1maXhlZC1maWVsZHMpCgpUaGVzZSBmaWVsZHMgX01BWV8gYmUgdXNlZCB3aXRoIGVpdGhlciBgY29udGVudGAgb3IgYHNjaGVtYWAuCgp8IEZpZWxkIE5hbWUgICAgICB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgbmFtZSAgICAgICAgICAgIHwgW2BzdHJpbmdgXShzcmMvUGFyYW1ldGVyLnBocCkgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGluICAgICAgICAgICAgICB8IFtgc3RyaW5nYF0oc3JjL1BhcmFtZXRlci5waHApICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBkZXNjcmlwdGlvbiAgICAgfCBbYHN0cmluZ2BdKHNyYy9QYXJhbWV0ZXIucGhwKSAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgcmVxdWlyZWQgICAgICAgIHwgW2Bib29sZWFuYF0oc3JjL1BhcmFtZXRlci5waHApICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGRlcHJlY2F0ZWQgICAgICB8IFtgYm9vbGVhbmBdKHNyYy9QYXJhbWV0ZXIucGhwKSAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBhbGxvd0VtcHR5VmFsdWUgfCBbW2Bib29sZWFuYF1dKHNyYy9QYXJhbWV0ZXIucGhwKSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyMjIyBbNC43LjEyLjIuMiBGaXhlZCBGaWVsZHMgZm9yIHVzZSB3aXRoIGBzY2hlbWFgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNmaXhlZC1maWVsZHMtZm9yLXVzZS13aXRoLXNjaGVtYSkKCkZvciBzaW1wbGVyIHNjZW5hcmlvcywgYSBgc2NoZW1hYCBhbmQgYHN0eWxlYCBjYW4gZGVzY3JpYmUgdGhlIHN0cnVjdHVyZSBhbmQgc3ludGF4IG9mIHRoZSBwYXJhbWV0ZXIuCgp8IEZpZWxkIE5hbWUgICAgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18Cnwgc3R5bGUgICAgICAgICB8IFtgc3RyaW5nYF0oc3JjL1BhcmFtZXRlci5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGV4cGxvZGUgICAgICAgfCBbYGJvb2xlYW5gXShzcmMvUGFyYW1ldGVyLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBhbGxvd1Jlc2VydmVkIHwgW2Bib29sZWFuYF0oc3JjL1BhcmFtZXRlci5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8Cnwgc2NoZW1hICAgICAgICB8IFtgU2NoZW1hIE9iamVjdGBdKHNyYy9TY2hlbWEucGhwKSBcfCBbYFJlZmVyZW5jZSBPYmplY3RgXShzcmMvUmVmZXJlbmNlLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGV4YW1wbGUgICAgICAgfCBbQW55XShzcmMvU2NoZW1hLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBleGFtcGxlcyAgICAgIHwgTWFwWyBbYHN0cmluZ2BdKHNyYy9TY2hlbWEucGhwKSwgW2BFeGFtcGxlIE9iamVjdGBdKHNyYy9FeGFtcGxlLnBocCkgXHwgW2BSZWZlcmVuY2UgT2JqZWN0YF0oc3JjL1JlZmVyZW5jZS5waHApXSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyMjIyBbNC43LjEyLjIuMyBGaXhlZCBGaWVsZHMgZm9yIHVzZSB3aXRoIGBjb250ZW50YF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLWZvci11c2Utd2l0aC1jb250ZW50KQoKfCBGaWVsZCBOYW1lIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN0YXR1cyAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IGNvbnRlbnQgICAgfCBNYXBbW2BzdHJpbmdgXShzcmMvU2NoZW1hLnBocCksIFtgTWVkaWEgVHlwZSBPYmplY3RgXShzcmMvU2NoZW1hLnBocCldIHwgOndoaXRlX2NoZWNrX21hcms6IHwKCiMjIyBbNC43LjEzIFJlcXVlc3QgQm9keSBPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI3JlcXVlc3QtYm9keS1vYmplY3QpCgpEZXNjcmliZXMgYSBzaW5nbGUgcmVxdWVzdCBib2R5LgoKIyMjIyBbNC43LjEzLjEgRml4ZWQgRmllbGRzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNmaXhlZC1maWVsZHMtMTApCgp8IEZpZWxkIE5hbWUgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgZGVzY3JpcHRpb24gfCBbYHN0cmluZ2BdKHNyYy9SZXF1ZXN0Qm9keS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGNvbnRlbnQgICAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL1JlcXVlc3RCb2R5LnBocCksIFtgTWVkaWEgVHlwZSBPYmplY3RgXShzcmMvTWVkaWFUeXBlLnBocCldIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCByZXF1aXJlZCAgICB8IFtgYm9vbGVhbmBdKHNyYy9SZXF1ZXN0Qm9keS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyMgWzQuNy4xNCBNZWRpYSBUeXBlIE9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjbWVkaWEtdHlwZS1vYmplY3QpCgpFYWNoIE1lZGlhIFR5cGUgT2JqZWN0IHByb3ZpZGVzIHNjaGVtYSBhbmQgZXhhbXBsZXMgZm9yIHRoZSBtZWRpYSB0eXBlIGlkZW50aWZpZWQgYnkgaXRzIGtleS4KCiMjIyMgWzQuNy4xNC4xIEZpeGVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLTExKQoKfCBGaWVsZCBOYW1lIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBzY2hlbWEgICAgIHwgW2BTY2hlbWEgT2JqZWN0YF0oc3JjL1NjaGVtYS5waHApIFx8IFtgUmVmZXJlbmNlIE9iamVjdGBdKHNyYy9SZWZlcmVuY2UucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBleGFtcGxlICAgIHwgW0FueV0oc3JjL01lZGlhVHlwZS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBleGFtcGxlcyAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL01lZGlhVHlwZS5waHApLCBbYEV4YW1wbGUgT2JqZWN0YF0oc3JjL0V4YW1wbGUucGhwKSBcfCBbYFJlZmVyZW5jZSBPYmplY3RgXShzcmMvUmVmZXJlbmNlLnBocCldIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBlbmNvZGluZyAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL01lZGlhVHlwZS5waHApLCBbYEVuY29kaW5nIE9iamVjdGBdKHNyYy9FbmNvZGluZy5waHApXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKCiMjIyBbNC43LjE1IEVuY29kaW5nIE9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZW5jb2Rpbmctb2JqZWN0KQoKQSBzaW5nbGUgZW5jb2RpbmcgZGVmaW5pdGlvbiBhcHBsaWVkIHRvIGEgc2luZ2xlIHNjaGVtYSBwcm9wZXJ0eS4KCiMjIyMgWzQuNy4xNS4xIEZpeGVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLTEyKQoKIyMjIyMgWzQuNy4xNS4xLjEgQ29tbW9uIEZpeGVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjY29tbW9uLWZpeGVkLWZpZWxkcy0wKQoKVGhlc2UgZmllbGRzIF9NQVlfIGJlIHVzZWQgZWl0aGVyIHdpdGggb3Igd2l0aG91dCB0aGUgUkZDNjU3MC1zdHlsZSBzZXJpYWxpemF0aW9uIGZpZWxkcyBkZWZpbmVkIGluIHRoZSBuZXh0IHNlY3Rpb24gYmVsb3cuCgp8IEZpZWxkIE5hbWUgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgY29udGVudFR5cGUgfCBbYHN0cmluZ2BdKHNyYy9FbmNvZGluZy5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGhlYWRlcnMgICAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL0VuY29kaW5nLnBocCksIFtgSGVhZGVyIE9iamVjdGBdKHNyYy9IZWFkZXIucGhwKSBcfCBbYFJlZmVyZW5jZSBPYmplY3RgXShzcmMvUmVmZXJlbmNlLnBocCldIHwgOndoaXRlX2NoZWNrX21hcms6IHwKCiMjIyMjIFs0LjcuMTUuMS4yIEZpeGVkIEZpZWxkcyBmb3IgUkZDNjU3MC1zdHlsZSBTZXJpYWxpemF0aW9uXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNmaXhlZC1maWVsZHMtZm9yLXJmYzY1NzAtc3R5bGUtc2VyaWFsaXphdGlvbikKCnwgRmllbGQgTmFtZSAgICB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IHN0eWxlICAgICAgICAgfCBbYHN0cmluZ2BdKHNyYy9FbmNvZGluZy5waHApICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgZXhwbG9kZSAgICAgICB8IFtgYm9vbGVhbmBdKHNyYy9FbmNvZGluZy5waHApIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBhbGxvd1Jlc2VydmVkIHwgW2Bib29sZWFuYF0oc3JjL0VuY29kaW5nLnBocCkgfCA6d2hpdGVfY2hlY2tfbWFyazogfAoKIyMjIFs0LjcuMTYgUmVzcG9uc2VzIE9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjcmVzcG9uc2VzLW9iamVjdCkKCkEgY29udGFpbmVyIGZvciB0aGUgZXhwZWN0ZWQgcmVzcG9uc2VzIG9mIGFuIG9wZXJhdGlvbi4gVGhlIGNvbnRhaW5lciBtYXBzIGFuIEhUVFAgcmVzcG9uc2UgY29kZSB0byB0aGUgZXhwZWN0ZWQgcmVzcG9uc2UuCgojIyMjIFs0LjcuMTYuMSBGaXhlZCBGaWVsZHNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI2ZpeGVkLWZpZWxkcy0xMykKCnwgRmllbGQgTmFtZSB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IGRlZmF1bHQgICAgfCBbYFJlc3BvbnNlIE9iamVjdGBdKHNyYy9SZXNwb25zZS5waHApIFx8IFtgUmVmZXJlbmNlIE9iamVjdGBdKHNyYy9SZWZlcmVuY2UucGhwKSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyMjIFs0LjcuMTYuMiBQYXR0ZXJuZWQgRmllbGRzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNwYXR0ZXJuZWQtZmllbGRzLTApCgp8IEZpZWxkIE5hbWUgICAgICAgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN0YXR1cyAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBIVFRQIFN0YXR1cyBDb2RlIHwgW2BSZXNwb25zZSBPYmplY3RgXShzcmMvUmVzcG9uc2UucGhwKSBcfCBbYFJlZmVyZW5jZSBPYmplY3RgXShzcmMvUmVmZXJlbmNlLnBocCkgfCA6d2hpdGVfY2hlY2tfbWFyazogfAoKIyMjIFs0LjcuMTcgUmVzcG9uc2UgT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNyZXNwb25zZS1vYmplY3QpCgpEZXNjcmliZXMgYSBzaW5nbGUgcmVzcG9uc2UgZnJvbSBhbiBBUEkgb3BlcmF0aW9uLCBpbmNsdWRpbmcgZGVzaWduLXRpbWUsIHN0YXRpYyBsaW5rcyB0byBvcGVyYXRpb25zIGJhc2VkIG9uIHRoZSByZXNwb25zZS4KCiMjIyMgWzQuNy4xNy4xIEZpeGVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLTE0KQoKfCBGaWVsZCBOYW1lICB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBkZXNjcmlwdGlvbiB8IFtgc3RyaW5nYF0oc3JjL1Jlc3BvbnNlLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBoZWFkZXJzICAgICB8IE1hcFtbYHN0cmluZ2BdKHNyYy9SZXNwb25zZS5waHApLCBbSGVhZGVyIE9iamVjdF0oc3JjL0hlYWRlci5waHApIFx8IFtSZWZlcmVuY2UgT2JqZWN0XShzcmMvUmVmZXJlbmNlLnBocCldIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBjb250ZW50ICAgICB8IE1hcFtbYHN0cmluZ2BdKHNyYy9SZXNwb25zZS5waHApLCBbTWVkaWEgVHlwZSBPYmplY3RdKHNyYy9IZWFkZXIucGhwKV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBsaW5rcyAgICAgICB8IE1hcFtbYHN0cmluZ2BdKHNyYy9SZXNwb25zZS5waHApLCBbTGluayBPYmplY3RdKHNyYy9MaW5rLnBocCkgXHwgW1JlZmVyZW5jZSBPYmplY3RdKHNyYy9SZWZlcmVuY2UucGhwKV0gICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKCiMjIyBbNC43LjE5IEV4YW1wbGUgT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNleGFtcGxlLW9iamVjdCkKCkFuIG9iamVjdCBncm91cGluZyBhbiBpbnRlcm5hbCBvciBleHRlcm5hbCBleGFtcGxlIHZhbHVlIHdpdGggYmFzaWMgYHN1bW1hcnlgIGFuZCBgZGVzY3JpcHRpb25gIG1ldGFkYXRhLgoKIyMjIyBbNC43LjE5LjEgRml4ZWQgRmllbGRzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNmaXhlZC1maWVsZHMtMTUpCgp8IEZpZWxkIE5hbWUgICAgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgfCBTdGF0dXMgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IHN1bW1hcnkgICAgICAgfCBbYHN0cmluZ2BdKHNyYy9FeGFtcGxlLnBocCkgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGRlc2NyaXB0aW9uICAgfCBbYHN0cmluZ2BdKHNyYy9FeGFtcGxlLnBocCkgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHZhbHVlICAgICAgICAgfCBbQW55XShzcmMvRXhhbXBsZS5waHApICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGV4dGVybmFsVmFsdWUgfCBbYHN0cmluZ2BdKHNyYy9FeGFtcGxlLnBocCkgfCA6d2hpdGVfY2hlY2tfbWFyazogfAoKIyMjIFs0LjcuMjAgTGluayBPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI2xpbmstb2JqZWN0KQoKVGhlIExpbmsgT2JqZWN0IHJlcHJlc2VudHMgYSBwb3NzaWJsZSBkZXNpZ24tdGltZSBsaW5rIGZvciBhIHJlc3BvbnNlLgoKIyMjIyBbNC43LjIwLjEgRml4ZWQgRmllbGRzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNmaXhlZC1maWVsZHMtMTYpCgp8IEZpZWxkIE5hbWUgICB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdGF0dXMgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IG9wZXJhdGlvblJlZiB8IFtgc3RyaW5nYF0oc3JjL0xpbmsucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IG9wZXJhdGlvbklkICB8IFtgc3RyaW5nYF0oc3JjL0xpbmsucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHBhcmFtZXRlcnMgICB8IE1hcFtbYHN0cmluZ2BdKHNyYy9MaW5rLnBocCksIFtBbnldKHNyYy9MaW5rLnBocCkgXHwgW3tleHByZXNzaW9ufV0oc3JjL0xpbmsucGhwKV0gfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHJlcXVlc3RCb2R5ICB8IFtBbnldKHNyYy9MaW5rLnBocCkgXHwgW3tleHByZXNzaW9ufV0oc3JjL0xpbmsucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGRlc2NyaXB0aW9uICB8IFtgc3RyaW5nYF0oc3JjL0xpbmsucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHNlcnZlciAgICAgICB8IFtgU2VydmVyIE9iamVjdGBdKHNyYy9TZXJ2ZXIucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAoKIyMjIFs0LjcuMjEgSGVhZGVyIE9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjaGVhZGVyLW9iamVjdCkKCkRlc2NyaWJlcyBhIHNpbmdsZSBoZWFkZXIgZm9yIEhUVFAgcmVzcG9uc2VzIGFuZCBmb3IgaW5kaXZpZHVhbCBwYXJ0cyBpbiBtdWx0aXBhcnQgcmVwcmVzZW50YXRpb25zLgoKIyMjIyBbNC43LjIxLjEgRml4ZWQgRmllbGRzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNmaXhlZC1maWVsZHMtMTcpCgojIyMjIyBbNC43LjIxLjEuMSBDb21tb24gRml4ZWQgRmllbGRzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNjb21tb24tZml4ZWQtZmllbGRzLTEpCgpUaGVzZSBmaWVsZHMgX01BWV8gYmUgdXNlZCB3aXRoIGVpdGhlciBgY29udGVudGAgb3IgYHNjaGVtYWAuCgp8IEZpZWxkIE5hbWUgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgZGVzY3JpcHRpb24gfCBbYHN0cmluZ2BdKHNyYy9IZWFkZXIucGhwKSAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHJlcXVpcmVkICAgIHwgW2Bib29sZWFuYF0oc3JjL0hlYWRlci5waHApIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBkZXByZWNhdGVkICB8IFtgYm9vbGVhbmBdKHNyYy9IZWFkZXIucGhwKSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyMjIyMgWzQuNy4yMS4xLjIgRml4ZWQgRmllbGRzIGZvciB1c2Ugd2l0aCBgc2NoZW1hYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLWZvci11c2Utd2l0aC1zY2hlbWEtMCkKCkZvciBzaW1wbGVyIHNjZW5hcmlvcywgYSBzY2hlbWEgYW5kIHN0eWxlIGNhbiBkZXNjcmliZSB0aGUgc3RydWN0dXJlIGFuZCBzeW50YXggb2YgdGhlIGhlYWRlci4KCnwgRmllbGQgTmFtZSB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN0YXR1cyAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18Cnwgc3R5bGUgICAgICB8IFtgc3RyaW5nYF0oc3JjL0hlYWRlci5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgZXhwbG9kZSAgICB8IFtgYm9vbGVhbmBdKHNyYy9IZWFkZXIucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8Cnwgc2NoZW1hICAgICB8IFtgU2NoZW1hIE9iamVjdGBdKHNyYy9TY2hlbWEucGhwKSBcfCBbYFJlZmVyZW5jZSBPYmplY3RgXShzcmMvUmVmZXJlbmNlLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgZXhhbXBsZSAgICB8IFtBbnldKHNyYy9IZWFkZXIucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgZXhhbXBsZXMgICB8IE1hcFtbYHN0cmluZ2BdKHNyYy9IZWFkZXIucGhwKSwgW2BFeGFtcGxlIE9iamVjdGBdKHNyYy9FeGFtcGxlLnBocCkgXHwgW2BSZWZlcmVuY2UgT2JqZWN0YF0oc3JjL1JlZmVyZW5jZS5waHApXSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyMjIyBbNC43LjIxLjEuMyBGaXhlZCBGaWVsZHMgZm9yIHVzZSB3aXRoIGBjb250ZW50YF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLWZvci11c2Utd2l0aC1jb250ZW50LTApCgpGb3IgbW9yZSBjb21wbGV4IHNjZW5hcmlvcywgdGhlIGNvbnRlbnQgZmllbGQgY2FuIGRlZmluZSB0aGUgbWVkaWEgdHlwZSBhbmQgc2NoZW1hIG9mIHRoZSBoZWFkZXIsIGFzIHdlbGwgYXMgZ2l2ZSBleGFtcGxlcyBvZiBpdHMgdXNlLgoKfCBGaWVsZCBOYW1lIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN0YXR1cyAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IGNvbnRlbnQgICAgfCBNYXBbW2BzdHJpbmdgXShzcmMvSGVhZGVyLnBocCksIFtgTWVkaWEgVHlwZSBPYmplY3RgXShzcmMvTWVkaWFUeXBlLnBocCldIHwgOndoaXRlX2NoZWNrX21hcms6IHwKCiMjIyBbNC43LjIyIFRhZyBPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI3RhZy1vYmplY3QpCgpBZGRzIG1ldGFkYXRhIHRvIGEgc2luZ2xlIHRhZyB0aGF0IGlzIHVzZWQgYnkgdGhlIE9wZXJhdGlvbiBPYmplY3QuIEl0IGlzIG5vdCBtYW5kYXRvcnkgdG8gaGF2ZSBhIFRhZyBPYmplY3QgcGVyIHRhZyBkZWZpbmVkIGluIHRoZSBPcGVyYXRpb24gT2JqZWN0Cmluc3RhbmNlcy4KCiMjIyMgWzQuNy4yMi4xIEZpeGVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLTE4KQoKfCBGaWVsZCAgICAgICB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdGF0dXMgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgbmFtZSAgICAgICAgfCBbYHN0cmluZ2BdKHNyYy9UYWcucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBkZXNjcmlwdGlvbiB8IFtgc3RyaW5nYF0oc3JjL1RhZy5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGRlc2NyaXB0aW9uIHwgW2BFeHRlcm5hbCBEb2N1bWVudGF0aW9uIE9iamVjdGBdKHNyYy9FeHRlcm5hbERvY3VtZW50YXRpb24ucGhwKSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyMgWzQuNy4yMyBSZWZlcmVuY2UgT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNyZWZlcmVuY2Utb2JqZWN0KQoKQSBzaW1wbGUgb2JqZWN0IHRvIGFsbG93IHJlZmVyZW5jaW5nIG90aGVyIGNvbXBvbmVudHMgaW4gdGhlIE9wZW5BUEkgRGVzY3JpcHRpb24sIGludGVybmFsbHkgYW5kIGV4dGVybmFsbHkuCgojIyMjIFs0LjcuMjMuMSBGaXhlZCBGaWVsZHNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI2ZpeGVkLWZpZWxkcy0xOSkKCnwgRmllbGQgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN0YXR1cyAgICAgICAgICAgICB8CnwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgJHJlZiAgfCBbYHN0cmluZ2BdKHNyYy9SZWZlcmVuY2UucGhwKSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyMgWzQuNy4yNCBTY2hlbWEgT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNzY2hlbWEtb2JqZWN0KQoKVGhlIFNjaGVtYSBPYmplY3QgYWxsb3dzIHRoZSBkZWZpbml0aW9uIG9mIGlucHV0IGFuZCBvdXRwdXQgZGF0YSB0eXBlcy4KCiMjIyMgWzQuNy4yNC4xIEpTT04gU2NoZW1hIEtleXdvcmRzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNqc29uLXNjaGVtYS1rZXl3b3JkcykKCnwgRmllbGQgTmFtZSAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IHRpdGxlICAgICAgICAgICAgICAgIHwgW2BzdHJpbmdgXShzcmMvU2NoZW1hLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgbXVsdGlwbGVPZiAgICAgICAgICAgfCBbYG51bWJlcmBdKHNyYy9TY2hlbWEucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBtYXhpbXVtICAgICAgICAgICAgICB8IFtgbnVtYmVyYF0oc3JjL1NjaGVtYS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGV4Y2x1c2l2ZU1heGltdW0gICAgIHwgW2Bib29sZWFuYF0oc3JjL1NjaGVtYS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgbWluaW11bSAgICAgICAgICAgICAgfCBbYG51bWJlcmBdKHNyYy9TY2hlbWEucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBleGNsdXNpdmVNaW5pbXVtICAgICB8IFtgYm9vbGVhbmBdKHNyYy9TY2hlbWEucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IG1heExlbmd0aCAgICAgICAgICAgIHwgW2BpbnRlZ2VyYF0oc3JjL1NjaGVtYS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgbWluTGVuZ3RoICAgICAgICAgICAgfCBbYGludGVnZXJgXShzcmMvU2NoZW1hLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBwYXR0ZXJuICAgICAgICAgICAgICB8IFtgc3RyaW5nYF0oc3JjL1NjaGVtYS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IG1heEl0ZW1zICAgICAgICAgICAgIHwgW2BpbnRlZ2VyYF0oc3JjL1NjaGVtYS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgbWluSXRlbXMgICAgICAgICAgICAgfCBbYGludGVnZXJgXShzcmMvU2NoZW1hLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCB1bmlxdWVJdGVtcyAgICAgICAgICB8IFtgYm9vbGVhbmBdKHNyYy9TY2hlbWEucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IG1heFByb3BlcnRpZXMgICAgICAgIHwgW2BpbnRlZ2VyYF0oc3JjL1NjaGVtYS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgbWluUHJvcGVydGllcyAgICAgICAgfCBbYGludGVnZXJgXShzcmMvU2NoZW1hLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCByZXF1aXJlZCAgICAgICAgICAgICB8IFtgYXJyYXlgXShzcmMvU2NoZW1hLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGVudW0gICAgICAgICAgICAgICAgIHwgW2BhcnJheWBdKHNyYy9TY2hlbWEucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgdHlwZSAgICAgICAgICAgICAgICAgfCBbYHN0cmluZ2BdKHNyYy9TY2hlbWEucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBhbGxPZiAgICAgICAgICAgICAgICB8IFtgUmVmZXJlbmNlIE9iamVjdGBdKHNyYy9SZWZlcmVuY2UucGhwKSBcfCBbYFNjaGVtYSBPYmplY3RgXShzcmMvU2NoZW1hLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IG9uZU9mICAgICAgICAgICAgICAgIHwgW2BSZWZlcmVuY2UgT2JqZWN0YF0oc3JjL1JlZmVyZW5jZS5waHApIFx8IFtgU2NoZW1hIE9iamVjdGBdKHNyYy9TY2hlbWEucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgYW55T2YgICAgICAgICAgICAgICAgfCBbYFJlZmVyZW5jZSBPYmplY3RgXShzcmMvUmVmZXJlbmNlLnBocCkgXHwgW2BTY2hlbWEgT2JqZWN0YF0oc3JjL1NjaGVtYS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBub3QgICAgICAgICAgICAgICAgICB8IFtgUmVmZXJlbmNlIE9iamVjdGBdKHNyYy9SZWZlcmVuY2UucGhwKSBcfCBbYFNjaGVtYSBPYmplY3RgXShzcmMvU2NoZW1hLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGl0ZW1zICAgICAgICAgICAgICAgIHwgW2BSZWZlcmVuY2UgT2JqZWN0YF0oc3JjL1JlZmVyZW5jZS5waHApIFx8IFtgU2NoZW1hIE9iamVjdGBdKHNyYy9TY2hlbWEucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgcHJvcGVydGllcyAgICAgICAgICAgfCBbYFJlZmVyZW5jZSBPYmplY3RgXShzcmMvUmVmZXJlbmNlLnBocCkgXHwgW2BTY2hlbWEgT2JqZWN0YF0oc3JjL1NjaGVtYS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBhZGRpdGlvbmFsUHJvcGVydGllcyB8IFtgYm9vbGVhbmBdKHNyYy9SZWZlcmVuY2UucGhwKSBcfFtgUmVmZXJlbmNlIE9iamVjdGBdKHNyYy9SZWZlcmVuY2UucGhwKSBcfCBbYFNjaGVtYSBPYmplY3RgXShzcmMvU2NoZW1hLnBocCkgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGRlc2NyaXB0aW9uICAgICAgICAgIHwgW2BzdHJpbmdgXShzcmMvU2NoZW1hLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgZm9ybWF0ICAgICAgICAgICAgICAgfCBbYHN0cmluZ2BdKHNyYy9TY2hlbWEucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBmb3JtYXQgICAgICAgICAgICAgICB8IFtgQW55YF0oc3JjL1NjaGVtYS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAoKIyMjIyBbNC43LjI0LjIgRml4ZWQgRmllbGRzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNmaXhlZC1maWVsZHMtMjApCgp8IEZpZWxkIE5hbWUgICAgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgbnVsbGFibGUgICAgICB8IFtgYm9vbGVhbmBdKHNyYy9TY2hlbWEucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGRpc2NyaW1pbmF0b3IgfCBgRGlzY3JpbWluYXRvciBPYmplY3RgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCByZWFkT25seSAgICAgIHwgW2Bib29sZWFuYF0oc3JjL1NjaGVtYS5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8Cnwgd3JpdGVPbmx5ICAgICB8IFtgYm9vbGVhbmBdKHNyYy9TY2hlbWEucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHhtbCAgICAgICAgICAgfCBbYFhNTCBPYmplY3RgXShzcmMvWG1sLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBleHRlcm5hbERvY3MgIHwgW2BFeHRlcm5hbCBEb2N1bWVudGF0aW9uIE9iamVjdGBdKHNyYy9FeHRlcm5hbERvY3VtZW50YXRpb24ucGhwKSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgZXhhbXBsZSAgICAgICB8IFtBbnldKHNyYy9TY2hlbWEucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGRlcHJlY2F0ZWQgICAgfCBbYGJvb2xlYW5gXShzcmMvU2NoZW1hLnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKCiMjIyBbNC43LjI1IERpc2NyaW1pbmF0b3IgT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNkaXNjcmltaW5hdG9yLW9iamVjdCkKCldoZW4gcmVxdWVzdCBib2RpZXMgb3IgcmVzcG9uc2UgcGF5bG9hZHMgbWF5IGJlIG9uZSBvZiBhIG51bWJlciBvZiBkaWZmZXJlbnQgc2NoZW1hcywKYSBEaXNjcmltaW5hdG9yIE9iamVjdCBnaXZlcyBhIGhpbnQgYWJvdXQgdGhlIGV4cGVjdGVkIHNjaGVtYSBvZiB0aGUgZG9jdW1lbnQuCgojIyMjIFs0LjcuMjUuMSBGaXhlZCBGaWVsZHNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI2ZpeGVkLWZpZWxkcy0yMSkKCnwgRmllbGQgTmFtZSAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IHByb3BlcnR5TmFtZSB8IFtgc3RyaW5nYF0oc3JjL0Rpc2NyaW1pbmF0b3IucGhwKSAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgbWFwcGluZyAgICAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL0Rpc2NyaW1pbmF0b3IucGhwKSwgYHN0cmluZ2BdIHwgOndoaXRlX2NoZWNrX21hcms6IHwKCiMjIyBbNC43LjI2IFhNTCBPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI3htbC1vYmplY3QpCgpBIG1ldGFkYXRhIG9iamVjdCB0aGF0IGFsbG93cyBmb3IgbW9yZSBmaW5lLXR1bmVkIFhNTCBtb2RlbCBkZWZpbml0aW9ucy4KCiMjIyMgWzQuNy4yNi4xIEZpeGVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLTIyKQoKfCBGaWVsZCBOYW1lIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBuYW1lICAgICAgIHwgW2BzdHJpbmdgXShzcmMvWG1sLnBocCkgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBuYW1lc3BhY2UgIHwgW2BzdHJpbmdgXShzcmMvWG1sLnBocCkgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBwcmVmaXggICAgIHwgW2BzdHJpbmdgXShzcmMvWG1sLnBocCkgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBhdHRyaWJ1dGUgIHwgW2Bib29sZWFuYF0oc3JjL1htbC5waHApIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCB3cmFwcGVkICAgIHwgW2Bib29sZWFuYF0oc3JjL1htbC5waHApIHwgOndoaXRlX2NoZWNrX21hcms6IHwKCiMjIyBbNC43LjI3IFNlY3VyaXR5IFNjaGVtZSBPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI3NlY3VyaXR5LXNjaGVtZS1vYmplY3QtMCkKCkRlZmluZXMgYSBzZWN1cml0eSBzY2hlbWUgdGhhdCBjYW4gYmUgdXNlZCBieSB0aGUgb3BlcmF0aW9ucy4KCiMjIyMgWzQuNy4yNy4xIEZpeGVkIEZpZWxkc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjZml4ZWQtZmllbGRzLTIzKQoKfCBGaWVsZCBOYW1lICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN0YXR1cyAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IHR5cGUgICAgICAgICAgICAgfCBbYHN0cmluZ2BdKHNyYy9TZWN1cml0eVNjaGVtZS5waHApIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBkZXNjcmlwdGlvbiAgICAgIHwgW2BzdHJpbmdgXShzcmMvU2VjdXJpdHlTY2hlbWUucGhwKSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgbmFtZSAgICAgICAgICAgICB8IFtgc3RyaW5nYF0oc3JjL1NlY3VyaXR5U2NoZW1lLnBocCkgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGluICAgICAgICAgICAgICAgfCBbYHN0cmluZ2BdKHNyYy9TZWN1cml0eVNjaGVtZS5waHApIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBzY2hlbWUgICAgICAgICAgIHwgW2BzdHJpbmdgXShzcmMvU2VjdXJpdHlTY2hlbWUucGhwKSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgYmVhcmVyRm9ybWF0ICAgICB8IFtgc3RyaW5nYF0oc3JjL1NlY3VyaXR5U2NoZW1lLnBocCkgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGZsb3dzICAgICAgICAgICAgfCBbYHN0cmluZ2BdKHNyYy9PQXV0aEZsb3dzLnBocCkgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBvcGVuSWRDb25uZWN0VXJsIHwgW2BzdHJpbmdgXShzcmMvU2VjdXJpdHlTY2hlbWUucGhwKSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyMgWzQuNy4yOCBPQXV0aCBGbG93cyBPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI29hdXRoLWZsb3dzLW9iamVjdCkKCkFsbG93cyBjb25maWd1cmF0aW9uIG9mIHRoZSBzdXBwb3J0ZWQgT0F1dGggRmxvd3MuCgojIyMjIFs0LjcuMjguMSBGaXhlZCBGaWVsZHNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuNC5odG1sI2ZpeGVkLWZpZWxkcy0yNCkKCnwgRmllbGQgTmFtZSAgICAgICAgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3RhdHVzICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IGltcGxpY2l0ICAgICAgICAgIHwgW2BPQXV0aCBGbG93IE9iamVjdGBdKHNyYy9PQXV0aEZsb3cucGhwKSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgcGFzc3dvcmQgICAgICAgICAgfCBbYE9BdXRoIEZsb3cgT2JqZWN0YF0oc3JjL09BdXRoRmxvdy5waHApIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBjbGllbnRDcmVkZW50aWFscyB8IFtgT0F1dGggRmxvdyBPYmplY3RgXShzcmMvT0F1dGhGbG93LnBocCkgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IGF1dGhvcml6YXRpb25Db2RlIHwgW2BPQXV0aCBGbG93IE9iamVjdGBdKHNyYy9PQXV0aEZsb3cucGhwKSB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CgojIyMgWzQuNy4yOSBPQXV0aCBGbG93IE9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjc2VjdXJpdHktc2NoZW1lLW9iamVjdC0wKQoKRGVmaW5lcyBhIHNlY3VyaXR5IHNjaGVtZSB0aGF0IGNhbiBiZSB1c2VkIGJ5IHRoZSBvcGVyYXRpb25zLgoKIyMjIyBbNC43LjI5LjEgRml4ZWQgRmllbGRzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjQuaHRtbCNmaXhlZC1maWVsZHMtMjUpCgp8IEZpZWxkIE5hbWUgICAgICAgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN0YXR1cyAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBhdXRob3JpemF0aW9uVXJsIHwgW2BzdHJpbmdgXShzcmMvT0F1dGhGbG93LnBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IHRva2VuVXJsICAgICAgICAgfCBbYHN0cmluZ2BdKHNyYy9PQXV0aEZsb3cucGhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8CnwgcmVmcmVzaFVybCAgICAgICB8IFtgc3RyaW5nYF0oc3JjL09BdXRoRmxvdy5waHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwKfCBzY29wZXMgICAgICAgICAgIHwgTWFwW1tgc3RyaW5nYF0oc3JjL09BdXRoRmxvdy5waHApLCBbYHN0cmluZ2BdKHNyYy9PQXV0aEZsb3cucGhwKV0gfCA6d2hpdGVfY2hlY2tfbWFyazogfAoKIyMgQ29udHJpYnV0aW5nCgpDb250cmlidXRpb25zLCBpc3N1ZXMsIGFuZCBmZWF0dXJlIHJlcXVlc3RzIGFyZSB3ZWxjb21lIQpGZWVsIGZyZWUgdG8gY2hlY2sgdGhlIFtpc3N1ZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS96ZXJvLXRvLXByb2QvZGF0YS1tb2RlbC1vcGVuYXBpMzAvaXNzdWVzKSBwYWdlIGlmIHlvdSB3YW50IHRvIGNvbnRyaWJ1dGUuCgoxLiBGb3JrIHRoZSByZXBvc2l0b3J5LgoyLiBDcmVhdGUgYSBuZXcgYnJhbmNoIChgZ2l0IGNoZWNrb3V0IC1iIGZlYXR1cmUtYnJhbmNoYCkuCjMuIENvbW1pdCBjaGFuZ2VzIChgZ2l0IGNvbW1pdCAtbSAnQWRkIHNvbWUgZmVhdHVyZSdgKS4KNC4gUHVzaCB0byB0aGUgYnJhbmNoIChgZ2l0IHB1c2ggb3JpZ2luIGZlYXR1cmUtYnJhbmNoYCkuCjUuIENyZWF0ZSBhIG5ldyBQdWxsIFJlcXVlc3QuCg== readmeEtag: '"97699662f902c02ff4b96eaed4f1bfcb6d92b5fe"' readmeLastModified: Mon, 01 Sep 2025 22:45:13 GMT repositoryId: 885105129 description: DataModels for OpenAPI 3.0.* created: '2024-11-08T00:54:00Z' updated: '2026-01-18T20:15:51Z' language: PHP archived: false stars: 3 watchers: 1 forks: 0 owner: zero-to-prod logo: https://avatars.githubusercontent.com/u/61474950?v=4 license: MIT repoEtag: '"6ffa505038e9f1f44e050463b31957c46ce31cbc8f4a98a3b153ad78fb58d2c3"' repoLastModified: Sun, 18 Jan 2026 20:15:51 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/norbiox/audiolabapp v3: true repositoryMetadata: base64Readme: >- IyBBdWRpb0xhYkFwcApMYWJvcmF0b3JpdW0gZMW6d2nEmWtvd2UuCgpTZXJ3aXMgbGFiYXBwIHBvendhbGEgbmEgZ3JvbWFkemVuaWUgaSB6YXJ6xIVkemFuaWUgbmFncmFuaWFtaSBkxbp3acSZa293eW1pIHBvY2hvZHrEhWN5bWkgeiBla3NwZXJ5bWVudMOzdy4KCgojIyBDZWwKClByb2pla3QgdGVuIHBvd3N0YcWCIHcgcmFtYWNoIHByb2pla3R1IHN0dWRlbmNraWVnbyB6IHByemVkbWlvdHUgQXBsaWthY2plIEludGVybmV0b3dlLiBDZWxlbSBwcm9qZWt0dSBiecWCbyAob3Byw7NjeiB6YWxpY3plbmlhIHByemVkbWlvdHUgOykgKSB6ZG9ieWNpZSB3aWVkenkgaSBkb8Wbd2lhZGN6ZW5pYSB3IHByYWN5IHogcG9uacW8c3p5bWkgdGVjaG5vbG9naWFtaSBpIG5hcnrEmWR6aWFtaToKCiogcHl0aG9uICsgZmxhc2sKKiBSRVNUIEFQSQoqIE9wZW4gQVBJIDMgKFN3YWdnZXIpCiogZG9ja2VyCiogZG9ja2VyLWNvbXBvc2UKCgojIyBUZXN0eSBpIHVydWNob21pZW5pZSB3IMWbcm9kb3dpc2t1IGRld2Vsb3BlcnNraW0KCjEuIFNrbG9udWogdG8gcmVwb3p5dG9yaXVtCgoyLiBEb2RhaiDFm2NpZcW8a8SZIGZvbGRlcnUgYGBgbGFiYXBwYGBgIGRvIHptaWVubmVqIHN5c3RlbW93ZWogYGBgUFlUSE9OUEFUSGBgYAoKMy4gUG9iaWVyeiBpIHVydWNob20ga29udGVuZXIgTXlTUUwgcG9sZWNlbmllbQoKICAgICAgICBkb2NrZXIgcnVuIC0tbmFtZSBteXNxbCBcCiAgICAgICAgICAgIC1wIDMzMDY6MzMwNiBcCiAgICAgICAgICAgIC1lIE1ZU1FMX1JBTkRPTV9ST09UX1BBU1NXT1JEPXllcyBcCiAgICAgICAgICAgIC1lIE1ZU1FMX0RBVEFCQVNFPWxhYmFwcCBcCiAgICAgICAgICAgIC1lIE1ZU1FMX1VTRVI9bGFiYXBwIFwKICAgICAgICAgICAgLWUgTVlTUUxfUEFTU1dPUkQ9PHBhc3NwaHJhc2U+IFwKICAgICAgICAgICAgLWQgbXlzcWw6NS43Cgo0LiBVc3RhdyBvZHBvd2llZG5pbyB6bWllbm7EhSBEQVRBQkFTRV9VUkw6CgogICAgZXhwb3J0IERBVEFCQVNFX1VSTD1teXNxbDovL2xhYmFwcDo8cGFzc3BocmFzZT5APGRhdGFiYXNlX2FkZHJlc3M6cG9ydD4vbGFiYXBwCgo1LiBQcnplamTFuiBkbyBmb2xkZXJ1IGBgYGxhYmFwcGBgYCBpIHByemVwcm93YWTFuiB0ZXN0eSBhdXRvbWF0eWN6bmUgcG9sZWNlbmllbQoKICAgICAgICAuL3Rlc3Quc2gKCjYuIFpha3R1YWxpenVqIGJhesSZIGRhbnljaCB3eWtvbnVqxIVjIHBvbGVjZW5pYQoKICAgICAgICBmbGFzayBkYiB1cGdyYWRlCgo3LiBVcnVjaG9tIGFwbGlrYWNqxJkgcG9sZWNlbmllbQoKICAgICAgICBmbGFzayBydW4KClVXQUdBOiBhcGxpa2FjamEgZG9tecWbbG5pZSB1cnVjaG9taW9uYSB6b3N0YW5pZSB3IHRyeWJpZSAnZGV2ZWxvcG1lbnQnLCBhYnkgdXJ1Y2hvbWnEhyB3IHRyeWJpZSAncHJvZHVjdGlvbicgem1pZcWEIHdhcnRvxZtjaSB6bWllbm55Y2ggdyBwbGlrdSAuZmxhc2tlbnY6CgogICAgRkxBU0tfQVBQPSJhcHA6Y3JlYXRlX2FwcCgnYXBwLmNvbmZpZy5Qcm9kdWN0aW9uQ29uZmlnJykiCiAgICBGTEFTS19FTlY9InByb2R1Y3Rpb24iCgo4LiBBUEkgbW/FvG5hIHRlc3Rvd2HEhyBkb3dvbG55bSBuYXJ6xJlkemllbSwgbHViIHcgcHJ6ZWdsxIVkYXJrb3d5bSBla3NwbG9yYXRvcnplIFN3YWdnZXIgcG9kIGFkcmVzZW06CgogICAgICAgIGh0dHA6Ly9bdXJsX2FwbGlrYWNqaV0vMS4wL2xhYi91aQoKCiMjIFVydWNob21pZW5pZSBza29udGVuZXJ5em93YW5laiBhcGxpa2FjamkKCklzdG5pZWplIG1vxbxsaXdvxZvEhyB1cnVjaG9taWVuaWEgYXBsaWthY2ppIHcga29udGVuZXJ6ZSB6YSBwb21vY8SFIGRvY2tlci1jb21wb3NlLiBXIHR5bSBjZWx1IG5hbGXFvHkgbmFqcGllcncgemFwZXduacSHIG5hc3TEmXB1asSFY2Ugem1pZW5uZSDFm3JvZG93aXNrb3dlOgoKICAgIGV4cG9ydCBBUFBfUE9SVD0gXAogICAgICAgIERCX1JPT1RfUEFTU1dPUkQ9IFwKICAgICAgICBEQl9OQU1FPSBcCiAgICAgICAgREJfVVNFUj0gXAogICAgICAgIERCX1BBU1NXT1JEPSBcCiAgICAgICAgU0VDUkVUX0tFWT0gXAogICAgICAgIE1FRElBX0RJUj0KCkEgbmFzdMSZcG5pZSBixJlkxIVjIHcgZm9sZGVyemUgYGBgbGFiYXBwYGBgIHd5a29uYcSHIHBvbGVjZW5pZToKCiAgICBkb2NrZXItY29tcG9zZSB1cCAtZCAtLWJ1aWxkCg== readmeEtag: '"8970d9a3e2771ec54982de35e86e582d1d8f00e2"' readmeLastModified: Tue, 07 May 2019 07:10:21 GMT repositoryId: 153651596 description: AudioLabApp - laboratorium dźwiękowe created: '2018-10-18T16:06:10Z' updated: '2020-05-09T23:27:25Z' language: Python archived: false stars: 1 watchers: 0 forks: 0 owner: Norbiox logo: https://avatars.githubusercontent.com/u/22893882?v=4 repoEtag: '"df0bb7f70c373ce2201f0f3decf6f729f9569f96265a76a6317c032a897e4953"' repoLastModified: Sat, 09 May 2020 23:27:25 GMT foundInMaster: true category: Mock id: 15eae4b761323a3653c13f89c4b338b7 - source: openapi3 tags repository: https://github.com/rezsolt/symfony-api-platform-maker-bundle v3: true repositoryMetadata: base64Readme: >- IyBBcGlQbGF0Zm9ybU1ha2VyQnVuZGxlIGZvciBTeW1mb255IDQKUHJvdmlkZSBtYWtlIGNvbW1hbmQgZm9yIFN5bWZvbnkgQVBJIFBsYXRmb3JtIHdoYXQgc3VwcG9ydHMgT3BlbkFQSSAzLjAgc2NoZW1hIHNvdXJjZQo= readmeEtag: '"e0b79d1ab14ee7dad4a23ba59014c21c6b157c1f"' readmeLastModified: Sun, 11 Aug 2019 13:45:25 GMT repositoryId: 168426934 description: >- Provide make command for Symfony API Platform what supports OpenAPI 3.0 schema source created: '2019-01-30T22:42:51Z' updated: '2019-08-11T16:26:55Z' language: PHP archived: false stars: 1 watchers: 1 forks: 0 owner: rezsolt logo: https://avatars.githubusercontent.com/u/17837327?v=4 license: MIT repoEtag: '"bcd6c5fee3a346b12585b3127cd592eac208788a611161e4dac2347d53dac04a"' repoLastModified: Sun, 11 Aug 2019 16:26:55 GMT foundInMaster: true category: - Server - Parsers id: 6ad157fe1ad35f5927ca1e6047894a1a - source: openapi3 tags repository: https://github.com/linoaviii/simple-gpio-api v3: true repositoryMetadata: base64Readme: >- CiMgUmFzcGJlcnJ5UGkgc2ltcGxlIEdQSU8gQVBJCgpTaW1wbGUgV2ViIGFwaSB1c2VkIHRvIHJlYWQgYW5kIHdyaXRlIFJhc3BiZXJyeVBpIEdQSU8gc3RhdGVzLgpDaGFuZ2UgeW91ciBncGlvIHN0YXRlcyBieSBVUkwgKHVzZWZ1bGwgZm9yIGRvbW90aWMgcHJvamVjdCkKTm8gcHJvZ3JhbW1pbmcga25vd2xlZGdlIG5lZWRlZAoKVGhpcyBBUEkgaXMgY29tcG9zZWQgYnl0IGEgR1BJTyB3ZWIgdGVzdCA6CmBgYApodHRwOi8ve0lQX1JBU1BCRVJSWX0KYGBgCiFbd2ViIGFwaSBwcmV2aWV3XShpbWFnZXMvdGVzdC13ZWIuanBnKQoKQW5kIGFuIGFjY2VzIHRvIEdQSU8gYnkgYSBzaW1wbGUgVVJMOgoKIC0gUmVhZCBHUElPIChpbnB1dCBvciBvdXRwdXQpCmBgYApodHRwOi8ve0lQX1JBU1BCRVJSWX0vZ3Bpby97Z3Bpb19udW1iZXJ9CndpbGwgcmV0dXJuIDAgaWYgR1BJTyBpcyBEb3duLCAxIGlmIEdQSU8gaXMgdXAgKC0xIGlmIGVycm9yKQpgYGAKZXhhbXBsZSwgcmVhZCBHUElPIDEyIHN0YXRlIChHUElPIG51bWJlciBpcyBzZXQgaW4gQkNNIG1vZGUpCmBgYApodHRwOi8vMTkyLjE2OC4wLjEvZ3Bpby8xMgpgYGAKLSBXcml0ZSBHUElPIChvdXRwdXQpCmBgYApodHRwOi8ve0lQX1JBU1BCRVJSWX0vZ3Bpby97Z3Bpb19udW1iZXJ9L3tncGlvX3N0YXRlfQp3aWxsIHNldCB0aGUgZ3BpbyB3aXRoIHRoZSBzdGF0ZSBhbmQgcmV0dXJuIDAgaWYgR1BJTyBpcyBEb3duLCAxIGlmIEdQSU8gaXMgdXAgKC0xIGlmIGVycm9yKQpgYGAKZXhhbXBsZSwgc2V0IEdQSU8gMTIgdXAgKEdQSU8gbnVtYmVyIGlzIHNldCBpbiBCQ00gbW9kZSkKYGBgCmh0dHA6Ly8xOTIuMTY4LjAuMS9ncGlvLzEyLzEKYGBgCmV4YW1wbGUsIHNldCBHUElPIDEzIGRvd24gKEdQSU8gbnVtYmVyIGlzIHNldCBpbiBCQ00gbW9kZSkKYGBgCmh0dHA6Ly8xOTIuMTY4LjAuMS9ncGlvLzEzLzAKYGBgCgojIyBHZXR0aW5nIFN0YXJ0ZWQKClRoZXNlIGluc3RydWN0aW9ucyB3aWxsIGdldCB5b3UgYSBjb3B5IG9mIHRoZSBwcm9qZWN0IHVwIGFuZCBydW5uaW5nIG9uIHlvdXIgUmFzcGJlcnJ5UGkuCgojIyMgUHJlcmVxdWlzaXRlcwoKVG8gZmFjaWxpdGF0ZSBpbnN0YWxsYXRpb24sIGV2ZXJ5dGhpbmcgaXMgaW5jbHVkZSBpbiB0aGUgcHJvamVjdC4KWW91IGp1c3QgbmVlZCBhIHJhc3BiZXJyeSBQaSAoZXZlcnkgdmVyc2lvbnMgd29ya2luZykgd2l0aCBSYXNwYmlhbiBPUyBpbnN0YWxsZWQKVG8gaW5zdGFsbCBSYXNwYmlhbiwgc2VlIDogaHR0cHM6Ly93d3cucmFzcGJlcnJ5cGkub3JnL2Rvd25sb2Fkcy8KCgojIyMjIGEpIEF1dG9tYXRpYyBjb3B5ICh1c2luZyBnaXQpCgogLSBPcGVuIGEgdGVybWluYWwgOgogYGBgCiBDdHJsICsgQWx0ICsgVAogYGBgCiAtIENsb25lIHNpbXBsZS1ncGlvLWFwaSBwcm9qZWN0IGluIGhvbWUgZm9sZGVyICgvaG9tZS9waSk6CmBgYApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2xpbm9hdmlpaS9zaW1wbGUtZ3Bpby1hcGkgL2hvbWUvcGkvc2ltcGxlLWdwaW8tYXBpCmBgYAoKIyMjIyBiKSBtYW51YWwgY29weSAKSWYgZ2l0IGlzIG5vdCBpbnN0YWxsZWQgb3IgaWYgeW91IGRvbid0ICB3YW50IHRvIHVzZSBpdCwgeW91IGNhbiBjb3B5IHNpbXBsZS1ncGlvLWFwaSBmb2xkZXIgIG1hbnVhbGx5IGludG8geW91ciBob21lIGZvbGRlciAoL2hvbWUvcGkpCgoKIyMjIEluc3RhbGxpbmcKIC0gT3BlbiBhIHRlcm1pbmFsIDoKIGBgYAogQ3RybCArIEFsdCArIFQKIGBgYAogLSBSdW4gc2V0dXAgc2NyaXB0CmBgYApzdWRvIHNoIHNpbXBsZS1ncGlvLWFwaS9zZXR1cC5zaApgYGAKYW5kIGl0J3MgZG9uZQoKIyMgUnVubmluZwoKIC0gT3BlbiBhIHRlcm1pbmFsIDoKIGBgYAogQ3RybCArIEFsdCArIFQKIGBgYAogLSBSdW4gc3RhcnQgc2NyaXB0CmBgYApzaCBzaW1wbGUtZ3Bpby1hcGkvc3RhcnQuc2gKYGBgCiFbd2Vic2VydmljZSBzdGFydGVkIHByZXZpZXddKGltYWdlcy93ZWJzZXJ2aWNlLXN0YXJ0ZWQuanBnKQoKRG9uJ3QgY2xvc2UgdGhlIHRlcm1pbmFsIHRvIGtlZXAgQVBJIGFsaXZlLgoKQnkgZGVmYXVsdCwgZXZlcnkgR1BJTyBhcmUgc2V0IHRvIE9VVFBVVCwgaWYgeW91IHdhbnQgdG8gc2V0IHNvbWUgR1BJTyBhcyBJbnB1dCwgZWRpdCB0aGUgKipjb25maWcuSU5JKiogZmlsZSBpbiAqKnNpbXBsZS1ncGlvLWFwaSoqIGZvbGRlciAKbGlzdCBhbGwgR1BJTyBudW1iZXIgKGluIEJDTSBtb2RlKSB5b3Ugd2FudCBhcyBJbnB1dCBpbiAqKmdwaW9faW5wdXQqKiBsaW5lLCBzZXBhcmF0ZWQgYnkgc3BhY2UKZXhhbXBsZToKIGBgYApncGlvX2lucHV0ID0gMiAzIDQgMTcgCiBgYGAKUmVzdGFydCB0aGUgc2NyaXB0IHRvIGNoYW5nZSBHUElPIGZ1bmN0aW9ucwoKIyMgVXNpbmcKWW91IGNhbiB1c2UgdGhpcyBBUEkgZGlyZWN0bHkgYnkgeW91ciBicm93c2VyLgpBdmFpbGFibGUgY29tbWFuZHMgOgoKIC0gKipSZWFkIEdQSU8qKiA6IGh0dHA6Ly8qKntJUF9SQVNQQkVSUll9KiovZ3Bpby8qKntncGlvX251bWJlcn0qKgogLSAqKldyaXRlIEdQSU8qKiA6IGh0dHA6Ly8qKntJUF9SQVNQQkVSUll9KiovZ3Bpby8qKntncGlvX251bWJlcn0qKi8qKntncGlvX3N0YXRlfSoqCiAtICoqR1BJTyBUZXN0Kio6IGh0dHA6Ly8qKntJUF9SQVNQQkVSUll9KioKIC0gKipBUEkgZG9jdW1lbnRhdGlvbioqOiBodHRwOi8vKip7SVBfUkFTUEJFUlJZfSoqL2RvYwoKIyMgTGF1bmNoIGF0IHN0YXJ0dXAKSWYgeW91IHdhbnQgdG8gbGF1bmNoIGF1dG9tYXRpY2FsbHkgdGhlIHNjcmlwdCBhdCBSYXNwYmVycnlQaSBzdGFydHVwCiAtIE9wZW4gYSB0ZXJtaW5hbCA6CiBgYGAKIEN0cmwgKyBBbHQgKyBUCiBgYGAKIC0gbGF1bmNoIHRoZXNlcyBjb21tYW5kcyA6CiBgYGAKIHN1ZG8gY3AgL2hvbWUvcGkvc2ltcGxlLWdwaW8tYXBpL3NpbXBsZS1ncGlvLWFwaS5zZXJ2aWNlIC9ldGMvc3lzdGVtZC9zeXN0ZW0KIHN1ZG8gc3lzdGVtY3RsIGVuYWJsZSBzaW1wbGUtZ3Bpby1hcGkuc2VydmljZSAKIGBgYAogLSByZWJvb3QgeW91ciByYXNwYmVycnlQaSAodGhlIEFQSSB3aWxsIHJ1biB3aXRob3V0IHRlcm1pbmFsLiBZb3UgY2FuIHRlc3QgaXQgZGlyZWN0bHkgd2l0aCB5b3UgYnJvd3NlcikKCiMjIEJ1aWx0IFdpdGgKKiBbUHl0aG9uXShodHRwczovL3d3dy5weXRob24ub3JnLykgLSBQeXRob24gMwoqIFtTd2FnZ2VyXShodHRwczovL3N3YWdnZXIuaW8vKSAtIFdlYiBBcGkgZWRpdG9yIChvcGVuQXBpKQoKCiMjIFZlcnNpb25pbmcKCkkgdXNlIFtTZW1WZXJdKGh0dHA6Ly9zZW12ZXIub3JnLykgZm9yIHZlcnNpb25pbmcuIEZvciB0aGUgdmVyc2lvbnMgYXZhaWxhYmxlLCBzZWUgdGhlIFt0YWdzIG9uIHRoaXMgcmVwb3NpdG9yeV0oaHR0cHM6Ly9naXRodWIuY29tL3lvdXIvcHJvamVjdC90YWdzKS4gCgojIyBBdXRob3JzCgoqICoqRGF2aWQgQXVkcmFuKiogLSAqSW5pdGlhbCB3b3JrKiAtIFtXZWJzaXRlXShodHRwOi8vZGF2aWRhdWRyYW4uY29tKQoKCgo= readmeEtag: '"a1ac60a23c543e109738fd909c3bc6e272c733b9"' readmeLastModified: Wed, 20 May 2020 08:40:02 GMT repositoryId: 265502630 description: RaspberryPi GPIO api for domotic created: '2020-05-20T08:37:48Z' updated: '2020-05-20T09:05:00Z' language: HTML archived: false stars: 1 watchers: 1 forks: 0 owner: linoaviii logo: https://avatars.githubusercontent.com/u/65229993?v=4 repoEtag: '"9b1031290dc9ebc0935eb38e348a2743398e73c401f008e3fc3b38e4028ffe65"' repoLastModified: Wed, 20 May 2020 09:05:00 GMT foundInMaster: true category: Server Implementations id: d7d492cbec52532f64b0502276ccf9b5 - source: openapi3 tags repository: https://github.com/rtfpessoa/glugen v3: true repositoryMetadata: repositoryId: 237613358 description: glugen generates http clients for an OpenAPI v3 specification created: '2020-02-01T12:43:06Z' updated: '2023-03-09T04:30:44Z' language: JavaScript archived: true stars: 1 watchers: 1 forks: 1 owner: rtfpessoa logo: https://avatars.githubusercontent.com/u/902384?v=4 repoEtag: '"c9adac6e4f2beca4e5aa7ee6c271bd557b82980e783a39fec7ae6b2fe7e584c9"' repoLastModified: Thu, 09 Mar 2023 04:30:44 GMT foundInMaster: true id: f140b1da60e51d3ea90076aa7cbd7cb6 - source: openapi3 tags repository: https://github.com/javabypatel/guice-grizzly-jersey-openapi-swagger-example v3: true repositoryMetadata: base64Readme: >- IyBndWljZS1ncml6emx5LWplcnNleS1vcGVuYXBpLXN3YWdnZXItZXhhbXBsZQoKU2FtcGxlIHByb2plY3QgdG8gc2hvdyBkeW5hbWljIGdlbmVyYXRpb24gb2YgT3BlbkFQSSBTd2FnZ2VyIGRvY3VtZW50YXRpb24gaW4gcHJvamVjdCB1c2luZyBHdWljZSBhbmQgSmVyc2V5LiAgCmh0dHBzOi8vamF2YWJ5cGF0ZWwuYmxvZ3Nwb3QuY29tLzIwMjAvMTEvc3dhZ2dlci1vcGVuYXBpLXJlc3QtamF2YS1leGFtcGxlLXVzaW5nLWd1aWNlLWplcnNleS5odG1sCgojIyMgQnVpbGQgdGhlIGFwcGxpY2F0aW9uCm12biBjbGVhbiBpbnN0YWxsCgojIyMgUnVuIHRoZSBhcHBsaWNhdGlvbgpHbyB0byBgYEFwcC5qYXZhYGAgd2hpY2ggY29udGFpbnMgbWFpbiBtZXRob2QsIHJ1biBpdCBhcyBqYXZhIGFwcGxpY2F0aW9uLgoKIyMjIyBEZW1vIGFwcGxpY2F0aW9uIFVSTCAKaHR0cDovL2xvY2FsaG9zdDo4MDgwL09wZW5BUElFeGFtcGxlL2dyZWV0P25hbWU9SmF2YUJ5UGF0ZWwKCiMjIyMgRm9yIGdldHRpbmcgdGhlIE9wZW5BUEkgcmVzb3VyY2UgZGVzY3JpcHRpb24sCkluIGpzb24gZm9ybWF0OiBodHRwOi8vbG9jYWxob3N0OjgwODAvT3BlbkFQSUV4YW1wbGUvb3BlbmFwaS5qc29uIFwKSW4geWFtbCBmb3JtYXQ6IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9PcGVuQVBJRXhhbXBsZS9vcGVuYXBpLnlhbWwKCiMjIyBzYW1wbGUganNvbgpgYGAKewogICJvcGVuYXBpIiA6ICIzLjAuMSIsCiAgImluZm8iIDogewogICAgInRpdGxlIiA6ICJHdWljZSBHcml6emx5IEplcnNleSBPcGVuYXBpIFN3YWdnZXIgRXhhbXBsZSBBUEkiLAogICAgImRlc2NyaXB0aW9uIiA6ICJPcGVuQVBJIHN3YWdnZXIgY29uZmlndXJhdGlvbiBleGFtcGxlIGluIHNhbXBsZSBwcm9qZWN0IHRoYXQgdXNlcyBHdWljZSwgR3JpenpseSwgSmVyc2V5LiIsCiAgICAiY29udGFjdCIgOiB7CiAgICAgICJlbWFpbCIgOiAiamF5ZXNobWFoZXNocGF0ZWxAZ21haWwuY29tIgogICAgfSwKICAgICJsaWNlbnNlIiA6IHsKICAgICAgIm5hbWUiIDogIk1JVCBMaWNlbnNlIiwKICAgICAgInVybCIgOiAiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX0xpY2Vuc2UiCiAgICB9LAogICAgInZlcnNpb24iIDogIjEuMC4wIgogIH0sCiAgInNlcnZlcnMiIDogWyB7CiAgICAidXJsIiA6ICJodHRwOi8vbG9jYWxob3N0OjgwODAvT3BlbkFQSUV4YW1wbGUvIiwKICAgICJkZXNjcmlwdGlvbiIgOiAiR3VpY2UgR3JpenpseSBKZXJzZXkgT3BlbmFwaSBTd2FnZ2VyIEV4YW1wbGUgQVBJIHNlcnZlciIKICB9IF0sCiAgInBhdGhzIiA6IHsKICAgICIvZ3JlZXQiIDogewogICAgICAiZ2V0IiA6IHsKICAgICAgICAic3VtbWFyeSIgOiAiVGhpcyBpcyBhIHNhbXBsZSB0ZXN0IEFQSSB0byBncmVldCB1c2VyLiIsCiAgICAgICAgIm9wZXJhdGlvbklkIiA6ICJncmVldCIsCiAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7CiAgICAgICAgICAibmFtZSIgOiAibmFtZSIsCiAgICAgICAgICAiaW4iIDogInF1ZXJ5IiwKICAgICAgICAgICJzY2hlbWEiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0gXSwKICAgICAgICAicmVzcG9uc2VzIiA6IHsKICAgICAgICAgICIyMDAiIDogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIkdyZWV0ZWQgc3VjY2Vzc2Z1bGx5LiIsCiAgICAgICAgICAgICJjb250ZW50IiA6IHsKICAgICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiIgOiB7CiAgICAgICAgICAgICAgICAic2NoZW1hIiA6IHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogImFycmF5IiwKICAgICAgICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAgICAgICAiJHJlZiIgOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvR3JlZXRSZXNwb25zZSIKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICI0MDAiIDogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIkJhZCByZXF1ZXN0LiBSZXF1ZXN0IGlzIG5vdCB3ZWxsIGZvcm1lZC4iCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiY29tcG9uZW50cyIgOiB7CiAgICAic2NoZW1hcyIgOiB7CiAgICAgICJHcmVldFJlc3BvbnNlIiA6IHsKICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAibWVzc2FnZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9CmBgYAoKIyMjIHNhbXBsZSB5YW1sCgpgYGAKb3BlbmFwaTogMy4wLjEKaW5mbzoKICB0aXRsZTogR3VpY2UgR3JpenpseSBKZXJzZXkgT3BlbmFwaSBTd2FnZ2VyIEV4YW1wbGUgQVBJCiAgZGVzY3JpcHRpb246ICJPcGVuQVBJIHN3YWdnZXIgY29uZmlndXJhdGlvbiBleGFtcGxlIGluIHNhbXBsZSBwcm9qZWN0IHRoYXQgdXNlc1wKICAgIFwgR3VpY2UsIEdyaXp6bHksIEplcnNleS4iCiAgY29udGFjdDoKICAgIGVtYWlsOiBqYXllc2htYWhlc2hwYXRlbEBnbWFpbC5jb20KICBsaWNlbnNlOgogICAgbmFtZTogTUlUIExpY2Vuc2UKICAgIHVybDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX0xpY2Vuc2UKICB2ZXJzaW9uOiAxLjAuMApzZXJ2ZXJzOgotIHVybDogaHR0cDovL2xvY2FsaG9zdDo4MDgwL09wZW5BUElFeGFtcGxlLwogIGRlc2NyaXB0aW9uOiBHdWljZSBHcml6emx5IEplcnNleSBPcGVuYXBpIFN3YWdnZXIgRXhhbXBsZSBBUEkgc2VydmVyCnBhdGhzOgogIC9ncmVldDoKICAgIGdldDoKICAgICAgc3VtbWFyeTogVGhpcyBpcyBhIHNhbXBsZSB0ZXN0IEFQSSB0byBncmVldCB1c2VyLgogICAgICBvcGVyYXRpb25JZDogZ3JlZXQKICAgICAgcGFyYW1ldGVyczoKICAgICAgLSBuYW1lOiBuYW1lCiAgICAgICAgaW46IHF1ZXJ5CiAgICAgICAgc2NoZW1hOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAiMjAwIjoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBHcmVldGVkIHN1Y2Nlc3NmdWxseS4KICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogYXJyYXkKICAgICAgICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvR3JlZXRSZXNwb25zZScKICAgICAgICAiNDAwIjoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBCYWQgcmVxdWVzdC4gUmVxdWVzdCBpcyBub3Qgd2VsbCBmb3JtZWQuCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIEdyZWV0UmVzcG9uc2U6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIG1lc3NhZ2U6CiAgICAgICAgICB0eXBlOiBzdHJpbmcKCmBgYAo= readmeEtag: '"0e69208d84c0f484a16f5058fd2579972aeea3c6"' readmeLastModified: Mon, 09 Nov 2020 08:24:57 GMT repositoryId: 310980518 description: >- Sample project to demonstrate OpenAPI Swagger configuration in Guice grizzly jersey example. created: '2020-11-08T03:51:02Z' updated: '2022-10-18T06:42:02Z' language: Java archived: false stars: 1 watchers: 1 forks: 3 owner: javabypatel logo: https://avatars.githubusercontent.com/u/16166145?v=4 license: MIT repoEtag: '"9c1eab9dca7aa98e7914270aa7f859ff7d48b3d68b8acdcdd4fe5779e891cc50"' repoLastModified: Tue, 18 Oct 2022 06:42:02 GMT foundInMaster: true category: Parsers id: fe1945f9e09307f9cd13e15ee4ba8aab - source: openapi3 tags repository: https://github.com/nekofar/nobitex-api-openapi-specs v3: true repositoryMetadata: base64Readme: >- WyFbR2l0SHViIFZlcnNpb25dW2ljb24tcmVsZWFzZV1dW2xpbmstcmVsZWFzZV0KWyFbV29ya2Zsb3cgU3RhdHVzXVtpY29uLXdvcmtmbG93XV1bbGluay13b3JrZmxvd10KWyFbTGljZW5zZV1baWNvbi1saWNlbnNlXV1bbGluay1saWNlbnNlXQpbIVtUd2l0dGVyOiBuZWtvZmFyXVtpY29uLXR3aXR0ZXJdXVtsaW5rLXR3aXR0ZXJdCgojIE5vYml0ZXggT3BlbiBBUEkgU3BlY2lmaWNhdGlvbgoKPiBUaGlzIGlzIGFuIHVub2ZmaWNpYWwgT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiBmb3IgYE5vYml0ZXhgIGJhc2VkIG9uIHRoZSBbQVBJXShodHRwczovL2FwaWRvY3Mubm9iaXRleC5pcikgYW5kIFtQb3N0bWFuXShodHRwczovL2RvY3VtZW50ZXIuZ2V0cG9zdG1hbi5jb20vdmlldy81NzIyMTIyL1N6bWNheWp3P3ZlcnNpb249bGF0ZXN0KSBkb2N1bWVudGF0aW9uLgoKIyMgTGljZW5zZQoKVGhlIE1JVCBMaWNlbnNlIChNSVQpLiBQbGVhc2Ugc2VlIFtMaWNlbnNlIEZpbGVdKExJQ0VOU0UpIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKLS0tCltpY29uLXR3aXR0ZXJdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL3R3aXR0ZXIvZm9sbG93L25la29mYXIuc3ZnP3N0eWxlPWZsYXQKW2ljb24tcmVsZWFzZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3YvcmVsZWFzZS9uZWtvZmFyL25vYml0ZXgtYXBpLW9wZW5hcGktc3BlY3M/aW5jbHVkZV9wcmVyZWxlYXNlcwpbaWNvbi1saWNlbnNlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9uZWtvZmFyL25vYml0ZXgtYXBpLW9wZW5hcGktc3BlY3Muc3ZnCltpY29uLXdvcmtmbG93XTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvd29ya2Zsb3cvc3RhdHVzL25la29mYXIvbm9iaXRleC1hcGktb3BlbmFwaS1zcGVjcy9UZXN0cwoKW2xpbmstdHdpdHRlcl06IGh0dHBzOi8vdHdpdHRlci5jb20vbmVrb2ZhcgpbbGluay1yZWxlYXNlXTogaHR0cHM6Ly9naXRodWIuY29tL25la29mYXIvbm9iaXRleC1hcGktb3BlbmFwaS1zcGVjcy9yZWxlYXNlcwpbbGluay1saWNlbnNlXTogaHR0cHM6Ly9naXRodWIuY29tL25la29mYXIvbm9iaXRleC1hcGktb3BlbmFwaS1zcGVjcy9ibG9iL21hc3Rlci9MSUNFTlNFCltsaW5rLXdvcmtmbG93XTogaHR0cHM6Ly9naXRodWIuY29tL25la29mYXIvbm9iaXRleC1hcGktb3BlbmFwaS1zcGVjcy9hY3Rpb25zL3dvcmtmbG93cy90ZXN0cy55bWwKCg== readmeEtag: '"589e1fa523e1c05863ea4b6623ae2a142f80a60e"' readmeLastModified: Wed, 02 Mar 2022 18:33:08 GMT repositoryId: 409305298 description: Nobitex Open API Specification created: '2021-09-22T17:59:12Z' updated: '2023-03-17T12:44:30Z' language: null archived: true stars: 1 watchers: 1 forks: 0 owner: nekofar logo: https://avatars.githubusercontent.com/u/147401?v=4 license: MIT repoEtag: '"1931d4fe1bba2a1061ef8a0f25a2e84a25bb8f4e93ac63440afee4bddf6d4505"' repoLastModified: Fri, 17 Mar 2023 12:44:30 GMT foundInMaster: true category: SDK id: c5dbdb6639d1221cffb84e32986196a1 - source: openapi3 tags repository: https://github.com/gasparyanvazgen/math-cli-api-kit v3: true id: cb5edc4523bd77f232d9590e922fff1a repositoryMetadata: base64Readme: >- IyBNYXRoIENMSSBBUEkgS2l0CgpbIVtHaXRIdWIgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ibHVlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9nYXNwYXJ5YW52YXpnZW4vbWF0aC1jbGktYXBpLWtpdC9ibG9iL21hc3Rlci9MSUNFTlNFKQpbIVtHaXRIdWIgSXNzdWVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMvZ2FzcGFyeWFudmF6Z2VuL21hdGgtY2xpLWFwaS1raXQpXShodHRwczovL2dpdGh1Yi5jb20vZ2FzcGFyeWFudmF6Z2VuL21hdGgtY2xpLWFwaS1raXQvaXNzdWVzKQpbIVtHaXRIdWIgU3RhcnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL2dhc3BhcnlhbnZhemdlbi9tYXRoLWNsaS1hcGkta2l0KV0oaHR0cHM6Ly9naXRodWIuY29tL2dhc3BhcnlhbnZhemdlbi9tYXRoLWNsaS1hcGkta2l0L3N0YXJnYXplcnMpClshW0dpdEh1YiBGb3Jrc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvZm9ya3MvZ2FzcGFyeWFudmF6Z2VuL21hdGgtY2xpLWFwaS1raXQpXShodHRwczovL2dpdGh1Yi5jb20vZ2FzcGFyeWFudmF6Z2VuL21hdGgtY2xpLWFwaS1raXQvbmV0d29yaykKClRoZSBNYXRoIENMSSBBUEkgS2l0IGlzIGEgUHl0aG9uIHBhY2thZ2UgYW5kIGNvbW1hbmQtbGluZSB0b29sIGZvciBwZXJmb3JtaW5nIGFsZ2VicmFpYyBhbmQgZ2VvbWV0cmljIG9wZXJhdGlvbnMuIEl0IHByb3ZpZGVzIGEgc2V0IG9mIG1hdGhlbWF0aWNhbCBmdW5jdGlvbnMgYW5kIGV4cG9zZXMgdGhlbSB0aHJvdWdoIGJvdGggYSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIGFuZCBhIFJFU1RmdWwgQVBJLgoKIVtNYXRoIENMSSBBUEkgS2l0IFN3YWdnZXIgVUldKC4vaW1hZ2VzL3N3YWdnZXItc2NyZWVuc2hvdC5wbmcpCgojIyBUYWJsZSBvZiBDb250ZW50cwoKLSBbSW5zdGFsbGF0aW9uXSgjaW5zdGFsbGF0aW9uKQotIFtVc2FnZV0oI3VzYWdlKQotIFtBUEkgRG9jdW1lbnRhdGlvbl0oI2FwaS1kb2N1bWVudGF0aW9uKQotIFtDb250cmlidXRpbmddKCNjb250cmlidXRpbmcpCi0gW0xpY2Vuc2VdKCNsaWNlbnNlKQoKIyMgSW5zdGFsbGF0aW9uCgpUaGUgTWF0aCBDTEkgQVBJIEtpdCBjYW4gYmUgaW5zdGFsbGVkIGRpcmVjdGx5IGZyb20gR2l0SHViIHVzaW5nIGBwaXBgOgoKYGBgYmFzaApwaXAgaW5zdGFsbCBnaXQraHR0cHM6Ly9naXRodWIuY29tL2dhc3BhcnlhbnZhemdlbi9tYXRoLWNsaS1hcGkta2l0LmdpdApgYGAKCkVuc3VyZSB0aGF0IGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBjcmVhdGVkIGJlZm9yZSBpbnN0YWxsaW5nIHRvIG1hbmFnZSB5b3VyIHByb2plY3QncyBkZXBlbmRlbmNpZXMuCgojIyBVc2FnZQoKIyMjIENvbW1hbmQtTGluZSBJbnRlcmZhY2UKClRoZSBNYXRoIENMSSBBUEkgS2l0IG9mZmVycyBhIHJhbmdlIG9mIGFsZ2VicmFpYyBhbmQgZ2VvbWV0cmljIGNvbW1hbmRzIHZpYSB0aGUgY29tbWFuZC1saW5lIGludGVyZmFjZS4gT3BlcmF0aW9ucyBzdWNoIGFzIGFkZGl0aW9uLCBzdWJ0cmFjdGlvbiwgbXVsdGlwbGljYXRpb24sIGFuZCBtb3JlIGFyZSBzdXBwb3J0ZWQuCgpIZXJlIGFyZSBzb21lIGV4YW1wbGVzOgoKYGBgYmFzaApweXRob24gLW0gbWF0aF9jbGlfYXBpX2tpdC5jbGkgYWxnZWJyYSBzdW0gLXggNSAteSAzCnB5dGhvbiAtbSBtYXRoX2NsaV9hcGlfa2l0LmNsaSBnZW9tZXRyeSBzdXJmYWNlX29mX3NxdWFyZSAtYSA0CmBgYAoKQWRkaXRpb25hbCBkZXRhaWxzIG9uIHRoZSBhdmFpbGFibGUgY29tbWFuZHMgYW5kIHRoZWlyIHVzYWdlIGNhbiBiZSBmb3VuZCBieSBydW5uaW5nOgoKYGBgYmFzaApweXRob24gLW0gbWF0aF9jbGlfYXBpX2tpdC5jbGkgLS1oZWxwCmBgYAoKIyMjIEFQSQoKVGhlIE1hdGggQ0xJIEFQSSBLaXQgcHJvdmlkZXMgYSBSRVNUZnVsIEFQSSBmb3IgcHJvZ3JhbW1hdGljIGFjY2VzcyB0byBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucy4gVG8gcnVuIHRoZSBBUEkgc2VydmVyLCB1c2UgdGhlIGZvbGxvd2luZyBzY3JpcHQ6CgpgYGBweXRob24KIyBzZXJ2ZXIucHkKCmZyb20gbWF0aF9jbGlfYXBpX2tpdC5hcGkgaW1wb3J0IGNyZWF0ZV9hcHAKCmFwcCA9IGNyZWF0ZV9hcHAoX19uYW1lX18pCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgYXBwLnJ1bihob3N0PSJsb2NhbGhvc3QiLCBwb3J0PTgwMDApCmBgYAoKVGhlIHNlcnZlciBjYW4gYmUgc3RhcnRlZCB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYGJhc2gKc2FuaWMgc2VydmVyOmFwcApgYGAKCkFsdGVybmF0aXZlbHksIHRoZSBzZXJ2ZXIgY2FuIGJlIHJ1biB1c2luZyBwbGFpbiBQeXRob246CgpgYGBiYXNoCnB5dGhvbiBzZXJ2ZXIucHkKYGBgCgpUaGlzIGFjdGlvbiBsYXVuY2hlcyB0aGUgc2VydmVyLCBtYWtpbmcgaXQgYWNjZXNzaWJsZSBhdCBodHRwOi8vbG9jYWxob3N0OjgwMDAvLiBBUEkgZW5kcG9pbnRzIHByb3ZpZGVkIGJ5IHRoZSBNYXRoIENMSSBBUEkgS2l0IGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoaXMgc2VydmVyLiBJZiB0aGVyZSdzIGEgbmVlZCB0byBjaGFuZ2UgdGhlIHBvcnQgd2hlbiBydW5uaW5nIHRoZSBzZXJ2ZXIsIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYGJhc2gKc2FuaWMgc2VydmVyOmFwcCAtLXBvcnQ9ODAwNQpgYGAKCkhvd2V2ZXIsIHdoZW4gcnVubmluZyBpdCB1c2luZyBgcHl0aG9uIHNlcnZlci5weWAsIHRoZSBzZXJ2ZXIgb3BlcmF0ZXMgb24gcG9ydCA4MDA1LCBhcyBzcGVjaWZpZWQgaW4gdGhlIGNvZGUgZ2l2ZW4gaW4gYHNlcnZlci5weWA6CgpgYGBweXRob24KIyB0aGUgcmVzdCBvZiB0aGUgY29kZQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIGFwcC5ydW4oaG9zdD0ibG9jYWxob3N0IiwgcG9ydD04MDA1KQpgYGAKCllvdSBjYW4gYWNjZXNzIHRoZSBTd2FnZ2VyIFVJIGZvciB0aGUgQVBJIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwNS9zd2FnZ2VyLwoKIyMgQVBJIERvY3VtZW50YXRpb24KCkZvciBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIG9mIHRoZSBBUEkgZW5kcG9pbnRzLCBwbGVhc2UgY29uc3VsdCB0aGUgW29mZmljaWFsIE9wZW5BUEkgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL2dhc3BhcnlhbnZhemdlbi9tYXRoLWNsaS1hcGkta2l0L2Jsb2IvbWFzdGVyL0FQSV9ET0MubWQpLgoKIyMgQ29udHJpYnV0aW5nCgpDb250cmlidXRpb25zIHRvIHRoZSBNYXRoIENMSSBBUEkgS2l0IGFyZSB3ZWxjb21lLiBUbyBjb250cmlidXRlIG9yIHJlcG9ydCBhbiBpc3N1ZSwgcGxlYXNlIHJlZmVyIHRvIHRoZSBbY29udHJpYnV0aW5nIGd1aWRlbGluZXNdKENPTlRSSUJVVElORy5tZCkuCgojIyBMaWNlbnNlCgpUaGUgTWF0aCBDTEkgQVBJIEtpdCBpcyBhbiBvcGVuLXNvdXJjZSBwcm9qZWN0IHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gRm9yIG1vcmUgZGV0YWlscywgcGxlYXNlIHJldmlldyB0aGUgW0xJQ0VOU0VdKGh0dHBzOi8vZ2l0aHViLmNvbS9nYXNwYXJ5YW52YXpnZW4vbWF0aC1jbGktYXBpLWtpdC9ibG9iL21hc3Rlci9MSUNFTlNFKS4KCi0tLQoKRm9yIGlucXVpcmllcyBvciBhc3Npc3RhbmNlLCBwbGVhc2UgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdGhlIHByb2plY3Qgb3duZXIsIFZhemdlbiBHYXNwYXJ5YW4sIGF0IFtndmF6Z2VuQG91dGxvb2suY29tXShtYWlsdG86Z3ZhemdlbkBvdXRsb29rLmNvbSkuCgoqKlRoYW5rIHlvdSBmb3IgdXNpbmcgdGhlIE1hdGggQ0xJIEFQSSBLaXQhKioK readmeEtag: '"4649905cbf6377b9551ee8b10b93bb4edccbc2a1"' readmeLastModified: Sat, 21 Oct 2023 08:19:34 GMT repositoryId: 707896579 description: >- A versatile Python command-line interface and API for algebraic and geometric operations, streamlining math-related tasks for applications and developers. created: '2023-10-20T23:20:22Z' updated: '2024-01-27T16:41:04Z' language: Python archived: false stars: 1 watchers: 1 forks: 0 owner: gasparyanvazgen logo: https://avatars.githubusercontent.com/u/89462790?v=4 license: MIT repoEtag: '"be6313797f7712f207d3cb3982004e1eb2c74d58b658edac11ef4c8b00a9ebb4"' repoLastModified: Sat, 27 Jan 2024 16:41:04 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/riptl/nimiq-watch-docs v3: true id: a86198fc049b7191ad08b2ecf2d0e8ca repositoryMetadata: base64Readme: >- IyBOaW1pcS5XYXRjaCBPcGVuQVBJIFNwZWNpZmljYXRpb24KWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvdGVyb3JpZS9uaW1pcS13YXRjaC1kb2NzLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL3Rlcm9yaWUvbmltaXEtd2F0Y2gtZG9jcykKClthcGkubmltaXEud2F0Y2hdKGh0dHBzOi8vYXBpLm5pbWlxLndhdGNoLykgaXMgcG93ZXJpbmcgW3RoZSBibG9ja2NoYWluIGV4cGxvcmVyXShodHRwczovL25pbWlxLndhdGNoLykKb2YgdGhlIG5ldyBfX05pbWlxIGJsb2NrY2hhaW5fXyBwcm9qZWN0LgoKVG8gbGVhcm4gbW9yZSBhYm91dCB0aGUgTmltaXEgYmxvY2tjaGFpbiwKdmlzaXQgdGhlIFtob21lcGFnZV0oaHR0cHM6Ly9uaW1pcS5jb20pLApjaGVjayBvdXQgQG5pbWlxIG9uIFtUd2l0dGVyXShodHRwczovL3R3aXR0ZXIuY29tL25pbWlxKQpvciBbTWVkaXVtXShodHRwczovL21lZGl1bS5jb20vbmltaXEtbmV0d29yaykKYW5kIGpvaW4gdGhlIFtEaXNjb3JkXShodHRwczovL2Rpc2NvcmQuZ2cvY01IZW1nOCkKYW5kIFtUZWxlZ3JhbV0oaHR0cHM6Ly90Lm1lL2pvaW5jaGF0L0FBQUFBRUpXLW96RndvN0VyOWpwSHcpIGNoYW5uZWxzLgoKVG8gdXNlIHRoaXMgQVBJIGZvciB5b3VyIHByb2plY3QsIGNvbnRhY3QgX19AU29lcmVuIzg5OThfXyBpbiBOaW1pcSdzIERpc2NvcmQgb3Igd3JpdGUgdG8gaGVsbG9Ac29lcmVuc2Nod2VydC5kZQoKIyMgTGlua3MKCi0gW05pbWlxLldhdGNoXShodHRwczovL25pbWlxLndhdGNoKQotIFtOaW1pcS5XYXRjaCBGcm9udGVuZCBDb2RlXShodHRwczovL2dpdGh1Yi5jb20vc2lzb3UvbmltaXEtd2F0Y2gpCi0gW05pbWlxIENvcmUvSlNdKGh0dHBzOi8vZ2l0aHViLmNvbS9uaW1pcS1uZXR3b3JrL2NvcmUpCi0gW05pbWlxIENvcmUvUnVzdF0oaHR0cHM6Ly9naXRodWIuY29tL25pbWlxL2NvcmUtcnMpCi0gW2FwaS5uaW1pcS53YXRjaCBSZURvY10oaHR0cHM6Ly90ZXJvcmllLmdpdGh1Yi5pby9uaW1pcS13YXRjaC1kb2NzLykKLSBbU3dhZ2dlclVJXShodHRwczovL3Rlcm9yaWUuZ2l0aHViLmlvL25pbWlxLXdhdGNoLWRvY3Mvc3dhZ2dlci11aS8pCi0gT3BlbkFQSSBSYXcgRmlsZXM6IFtKU09OXShodHRwczovL3Rlcm9yaWUuZ2l0aHViLmlvL25pbWlxLXdhdGNoLWRvY3Mvb3BlbmFwaS5qc29uKSBbWUFNTF0oaHR0cHM6Ly90ZXJvcmllLmdpdGh1Yi5pby9uaW1pcS13YXRjaC1kb2NzL29wZW5hcGkueWFtbCkKCl9fVE9ETzpfXyBBZGQgQVBJIHRvIFtBUElzLmd1cnVdKGh0dHBzOi8vQVBJcy5ndXJ1KSBkaXJlY3RvcnkgdXNpbmcgW3RoaXMgZm9ybV0oaHR0cHM6Ly9hcGlzLmd1cnUvYWRkLWFwaS8pLgo= readmeEtag: '"2d4c6cc85508d10b2ab131ef997292f1c8c91eba"' readmeLastModified: Fri, 22 Feb 2019 02:02:34 GMT repositoryId: 171151671 description: Nimiq.Watch API Documentation created: '2019-02-17T17:38:13Z' updated: '2019-02-22T02:02:40Z' language: HTML archived: false stars: 1 watchers: 1 forks: 0 owner: riptl logo: https://avatars.githubusercontent.com/u/21371810?v=4 license: MIT repoEtag: '"a3a9c499d07f74e0525b981489c0a73ce80d269863638212c1d9ebfcd8bbd768"' repoLastModified: Fri, 22 Feb 2019 02:02:40 GMT category: SDK oldLocations: - https://github.com/terorie/nimiq-watch-docs foundInMaster: true - source: openapi3 tags repository: https://github.com/stariongroup/openapi v3: true id: 205120cda96c57ae4a0aa4bd246f507c repositoryMetadata: base64Readme: >- IyBSSEVBLk9wZW5BcGkKClRoZSBSSEVBLk9wZW5BcGkgbGlicmFyeSBpcyBhIG5haXZlIEpTT04gcmVhZGVyIGltcGxlbWVudGF0aW9uIG9mIHRoZSBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uIHYzLjEuMF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvbGF0ZXN0Lmh0bWwjdmVyc2lvbi0zLTEtMCkuIFRoZSBwdXJwb3NlIG9mIHRoaXMgbGlicmFyeSBpcyB0byBzdXBvcnQgY29kZS1nZW5lcmF0aW9uIGluIHRoZSAuTkVUIGVjb3N5c3RlbS4gVGhlIGxpYnJhcnkgd2lsbCBtb3N0IGxpa2VseSBiZSBkZXByZWNhdGVkIG9uY2UgdGhlIFttaWNyb3NvZnQvT3BlbkFQSS5ORVRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvT3BlbkFQSS5ORVQpIHN1cHBvcnRzIHZlcnNpb24gMy4xLiBTdXBwb3J0IGZvciB2ZXJzaW9uIDMuMSBpbiBfbWljcm9zb2Z0L09wZW5BUEkuTkVUXyBpcyBiZWluZyB0cmFja2VkIGluIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvT3BlbkFQSS5ORVQvaXNzdWVzLzc5NQoKWyFbUXVhbGl0eSBHYXRlIFN0YXR1c10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9UkhFQUdST1VQX09QRU5BUEkmbWV0cmljPWFsZXJ0X3N0YXR1cyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPVJIRUFHUk9VUF9PUEVOQVBJKQpbIVtDb2RlIFNtZWxsc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9UkhFQUdST1VQX09QRU5BUEkmbWV0cmljPWNvZGVfc21lbGxzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9UkhFQUdST1VQX09QRU5BUEkpClshW0NvdmVyYWdlXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1SSEVBR1JPVVBfT1BFTkFQSSZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1SSEVBR1JPVVBfT1BFTkFQSSkKWyFbRHVwbGljYXRlZCBMaW5lcyAoJSldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PVJIRUFHUk9VUF9PUEVOQVBJJm1ldHJpYz1kdXBsaWNhdGVkX2xpbmVzX2RlbnNpdHkpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1SSEVBR1JPVVBfT1BFTkFQSSkKWyFbTGluZXMgb2YgQ29kZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9UkhFQUdST1VQX09QRU5BUEkmbWV0cmljPW5jbG9jKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9UkhFQUdST1VQX09QRU5BUEkpClshW01haW50YWluYWJpbGl0eSBSYXRpbmddKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PVJIRUFHUk9VUF9PUEVOQVBJJm1ldHJpYz1zcWFsZV9yYXRpbmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1SSEVBR1JPVVBfT1BFTkFQSSkKWyFbUmVsaWFiaWxpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1SSEVBR1JPVVBfT1BFTkFQSSZtZXRyaWM9cmVsaWFiaWxpdHlfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9UkhFQUdST1VQX09QRU5BUEkpClshW1NlY3VyaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9UkhFQUdST1VQX09QRU5BUEkmbWV0cmljPXNlY3VyaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPVJIRUFHUk9VUF9PUEVOQVBJKQpbIVtUZWNobmljYWwgRGVidF0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9UkhFQUdST1VQX09QRU5BUEkmbWV0cmljPXNxYWxlX2luZGV4KV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9UkhFQUdST1VQX09QRU5BUEkpClshW1Z1bG5lcmFiaWxpdGllc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9UkhFQUdST1VQX09QRU5BUEkmbWV0cmljPXZ1bG5lcmFiaWxpdGllcyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPVJIRUFHUk9VUF9PUEVOQVBJKQoKIyMgSW5zdGFsbGF0aW9uCgpUaGUgcGFja2FnZSBpcyBhdmFpbGFibGUgb24gTnVnZXQgYXQ6Cgpwcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTnVnZXQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IC0tLS0tLS0tLS0tLQpbUkhFQS5PcGVuQXBpXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvUkhFQS5PcGVuQXBpKSAgIHwgWyFbTnVHZXQgQmFkZ2VdKGh0dHBzOi8vYnVpbGRzdGF0cy5pbmZvL251Z2V0L1JIRUEuT3BlbkFwaSldKGh0dHBzOi8vYnVpbGRzdGF0cy5pbmZvL251Z2V0L1JIRUEuT3BlbkFwaSkKCiMjIEJ1aWxkIFN0YXR1cwoKR2l0SHViIGFjdGlvbnMgYXJlIHVzZWQgdG8gYnVpbGQgYW5kIHRlc3QgdGhlIGxpYnJhcnkKCkJyYW5jaCAgICAgIHwgQnVpbGQgU3RhdHVzCi0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTWFzdGVyICAgICAgfCAhW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL1JIRUFHUk9VUC9PUEVOQVBJL2FjdGlvbnMvd29ya2Zsb3dzL0NvZGVRdWFsaXR5LnltbC9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcikKRGV2ZWxvcG1lbnQgfCAhW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL1JIRUFHUk9VUC9PUEVOQVBJL2FjdGlvbnMvd29ya2Zsb3dzL0NvZGVRdWFsaXR5LnltbC9iYWRnZS5zdmc/YnJhbmNoPWRldmVsb3BtZW50KQoKIyBMaWNlbnNlCgpUaGUgUkhFQS5PcGVuQXBpIGxpYnJhcnkgaXMgcHJvdmlkZWQgdG8gdGhlIGNvbW11bml0eSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgMi4wLgoKIyBDb250cmlidXRpb25zCgpDb250cmlidXRpb25zIHRvIHRoZSBjb2RlLWJhc2UgYXJlIHdlbGNvbWUuIEhvd2V2ZXIsIGJlZm9yZSB3ZSBjYW4gYWNjZXB0IHlvdXIgY29udHJpYnV0aW9ucyB3ZSBhc2sgYW55IGNvbnRyaWJ1dG9yIHRvIHNpZ24gdGhlIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50IChDTEEpIGFuZCBzZW5kIHRoaXMgZGlnaXRhbHkgc2lnbmVkIHRvIHMuZ2VyZW5lQHJoZWFncm91cC5jb20uIFlvdSBjYW4gZmluZCB0aGUgQ0xBJ3MgaW4gdGhlIENMQSBmb2xkZXIuCg== readmeEtag: '"7660bd5c63950998bd3d9cfc7e1f68f40c5f7610"' readmeLastModified: Sun, 30 Apr 2023 09:54:40 GMT repositoryId: 622194609 description: >- a naive openapi 3.1 json document reader to support convention & template based code generation created: '2023-04-01T12:02:34Z' updated: '2023-04-28T08:13:22Z' language: C# archived: false stars: 1 watchers: 2 forks: 0 owner: STARIONGROUP logo: https://avatars.githubusercontent.com/u/22165742?v=4 license: Apache-2.0 repoEtag: '"3da66e76089979c4b3ade19201a364fe2992e124e88fb465c1b7bd34aec493a0"' repoLastModified: Fri, 28 Apr 2023 08:13:22 GMT category: SDK foundInMaster: true oldLocations: - https://github.com/rheagroup/openapi - source: openapi3 tags repository: https://github.com/iapost/oaql2 v3: true id: b2cedb58c85c3974274b29d193441356 repositoryMetadata: base64Readme: >- T3BlbkFQSSBRdWVyeSBMYW5ndWFnZSAyIFNlcnZpY2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KT3BlbkFQSSBRdWVyeSBMYW5ndWFnZSAyIChPQVFMMikgaXMgYSBxdWVyeSBsYW5ndWFnZSBmb3IgT3BlbkFQSSBkb2N1bWVudHMuIE9wZW5BUEkgaXMgYSBzdGFuZGFyZCBmb3JtYXQgZm9yIHRoZSBkZXNjcmlwdGlvbiBvZiBSRVNUZnVsIHNlcnZpY2VzLCBiYXNlZCBvbiBKU09OLiBPQVFMMiBpcyBkZXNpZ25lZCB3aXRoIHN5bnRheCBzaW1pbGFyIHRvIFNRTCBhbmQgc3VwcG9ydHMgcXVlcnlpbmcgbW9zdCBvZiB0aGUgZmllbGRzIGluIGFuIE9wZW5BUEkgZG9jdW1lbnQsIGFzIHdlbGwgYXMgdGhlIHNlbWFudGljIGFubm90YXRpb25zIHByb3Bvc2VkIGZvciBPcGVuQVBJLiBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGEgd2ViIHNlcnZpY2UgY2FwYWJsZSBvZiBleGVjdXRpbmcgT0FRTDIgcXVlcmllcy4gVGhpcyBzZXJ2aWNlIHN0b3JlcyBtZXRhZGF0YSBmb3IgZWFjaCBPcGVuQVBJIGRlc2NyaXB0aW9uIGFuZCBleGVjdXRlcyB0aGUgcXVlcmllcyBvbiB0aGVtLiBJdCBidWlsZHMgaW5kZXhlcyB0byBzcGVlZCB1cCBxdWVyaWVzLCBjYW4gaGFuZGxlIGNvbXBvc2l0ZSBzY2hlbWEgb2JqZWN0cyBhbmQgdXNlcyByZWFzb25pbmcgdG8gc3VwcG9ydCBzZWFyY2hpbmcgaW4gYSBzZW1hbnRpYyBtb2RlbC4gVGhlIHdlYiBzZXJ2aWNlIGNvbnNpc3RzIG9mIGEgSmF2YSBzZXJ2ZXIgYW5kIGEgTW9uZ29EQiBkYXRhYmFzZSwgYm90aCBydW5uaW5nIGluc2lkZSBEb2NrZXIgY29udGFpbmVycy4KCiMjIEluc3RhbGxhdGlvbgpZb3UgbmVlZCB0byBoYXZlIERvY2tlciBhbmQgRG9ja2VyIENvbXBvc2UgaW5zdGFsbGVkLgoKRXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgaW5zaWRlIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdDoKCiAgICAkIGRvY2tlci1jb21wb3NlIHVwIC0tYnVpbGQKICAgIApPbmNlIHRoZSBzZXJ2ZXIgaXMgcmVhZHksIGl0IHdpbGwgb3V0cHV0IHRoZSBtZXNzYWdlICJTZXJ2ZXIgc3RhcnRlZCIuCgojIyBVc2FnZQpUaGUgc2VydmVyIGxpc3RlbnMgZm9yIEhUVFAgcmVxdWVzdHMgb24gcG9ydCA4MCBvZiB0aGUgaG9zdCBtYWNoaW5lLiBZb3UgY2FuIGNvbm5lY3QgdG8gaXQgd2l0aCBhbiBpbnRlcm5ldCBicm93c2VyIChlZy4gRmlyZWZveCkgZm9yIGEgZ3JhcGhpY2FsIHVzZXIgaW50ZXJmYWNlLiBBIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBlbmRwb2ludHMgaXMgc2hvd24gYmVsb3c6Cgp8IFBhdGggICAgICAgICAgICAgICAgfCBBY2NlcHRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJldHVybnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgLyAgICAgICAgICAgICAgICAgICB8IEdFVCBSZXF1ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSFRNTCBkb2N1bWVudCBwcm92aWRpbmcgYSBHVUkgZm9yIGluc2VydGluZyBvciByZXRyaWV2aW5nIE9wZW5BUEkgZGVzY3JpcHRpb25zIGFuZCBleGVjdXRpbmcgT0FRTDIgcXVlcmllcyAgICAgICAgICAgIHwKfCAvaW5zZXJ0RGVzY3JpcHRpb24gIHwgUE9TVCByZXF1ZXN0LjxiciAvPiBSZXF1ZXN0IGJvZHkgbXVzdCBiZSBhIHZhbGlkIE9wZW5BUEkgZGVzY3JpcHRpb24gJiAyMDQgY29kZSB3aXRoIG5vIHJlc3BvbnNlIGJvZHkgfCAyMDQgY29kZSB3aXRoIG5vIHJlc3BvbnNlIGJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgL3F1ZXJ5ICAgICAgICAgICAgICB8IFBPU1QgcmVxdWVzdC48YnIgLz4gUmVxdWVzdCBib2R5IG11c3QgYmUgYSB2YWxpZCBPQVFMMiBxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAwIGNvZGUgd2l0aCB0aGUgcmVzdWx0cyBvZiB0aGUgcXVlcnkgaW4gdGhlIHJlc3BvbnNlIGJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC9kZXNjcmlwdGlvbi9cPGlkXD4gfCBHRVQgcmVxdWVzdC48YnIgLz4gXDxpZFw+IG11c3QgYmUgMjQgY2hhcmFjdGVycyBsb25nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwMCBjb2RlIHdpdGggdGhlIHJlcXVlc3RlZCBPcGVuQVBJIGRlc2NyaXB0aW9uIGluIHRoZSByZXNwb25zZSBib2R5IG9yIDQwNCBjb2RlIGlmIHRoZXJlIGlzIG5vIE9wZW5BUEkgZGVzY3JpcHRpb24gd2l0aCB0aGF0IGlkIHwKCklmIHRoZSBzZXJ2ZXIgZW5jb3VudGVycyBhbiBlcnJvciwgaXQgd2lsbCByZXNwb25kIHdpdGggYSBzdGF0dXMgY29kZSBvZiA0MDAgYW5kIGFuIGVycm9yIG1lc3NhZ2UgaW4gdGhlIHJlc3BvbnNlIGJvZHkuIAoKIyMgRGF0YWJhc2Ugb2YgT3BlbkFQSSBkb2N1bWVudHMKRm9yIGNvbnZlbmllbmNlLCB0aGUgW2BkYXRhYmFzZWBdKGRhdGFiYXNlKSBkaXJlY3RvcnkgY29udGFpbnMgMTAwMDAgT3BlbkFQSSBkZXNjcmlwdGlvbnMsIHRha2VuIGZyb20gU3dhZ2dlcmh1YiwgaW4gY29tcHJlc3NlZCBmb3JtIChzcGxpdCBpbiB0d28gcGFydHMgZHVlIHRvIEdpdGh1YidzIGZpbGUgc2l6ZSByZXN0cmljdGlvbnMpLiBJdCBhbHNvIGNvbnRhaW5zIGEgYmFzaCBzY3JpcHQgdG8gYXV0b21hdGljYWxseSBzZW5kIHRoZXNlIGRvY3VtZW50cyB0byB0aGUgc2VydmljZS4gVG8gdXNlIHRoZSBzY3JpcHQsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kIGluc2lkZSBbYGRhdGFiYXNlYF0oZGF0YWJhc2UpOgoKICAgICQgLi9pbnNlcnQuc2ggPGhvc3RuYW1lPiAKClw8aG9zdG5hbWVcPiBzaG91bGQgYmUgdGhlIGFkZHJlc3Mgb2YgdGhlIHNlcnZpY2UuIE5vdGUgdGhhdCB5b3UgbmVlZCB0byBoYXZlIHRoZSAqY3VybCogcGFja2FnZSBpbnN0YWxsZWQuCgojIyBMaWNlbnNlCkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBHUEwtMy4wIExpY2Vuc2UuIFNlZSBbYExJQ0VOU0VgXShMSUNFTlNFKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiMjIE5vdGVzCi0gQ3VycmVudGx5LCBvbmx5IE9wZW5BUEkgZG9jdW1lbnRzIGNvbmZvcm1pbmcgdG8gT3BlbkFQSSBTcGVjaWZpY2F0aW9uIHYzLjEuMCBhcmUgc3VwcG9ydGVkCgojIyBSZWZlcmVuY2VzCi0gSS4gQXBvc3RvbGFraXMsIE4uIE1haW5hcyBhbmQgRS5HLk0uIFBldHJha2lzLCAiU2ltcGxlIHF1ZXJ5aW5nIHNlcnZpY2UgZm9yIE9wZW5BUEkgZGVzY3JpcHRpb25zIHdpdGggc2VtYW50aWMgZXh0ZW5zaW9ucyIsICpJbmZvcm1hdGlvbiBTeXN0ZW1zKiAxMTcgKDIwMjMpLCAxMDIyNDEsIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2L2ouaXMuMjAyMy4xMDIyNDEKLSBJLiBBcG9zdG9sYWtpcywgIlNpbXBsZSBxdWVyeWluZyBzZXJ2aWNlIGZvciBPcGVuQVBJIGRlc2NyaXB0aW9ucyB3aXRoIFNlbWFudGljIFdlYiBleHRlbnNpb25zIiwgRGlwbG9tYSB0aGVzaXMsIFNjaG9vbCBvZiBFbGVjdHJpY2FsIGFuZCBDb21wdXRlciBFbmdpbmVlcmluZywgVGVjaG5pY2FsIFVuaXZlcnNpdHkgb2YgQ3JldGUgKFRVQyksIENoYW5pYSwgQ3JldGUsIEdyZWVjZSAoTWF5IDIwMjIpLCBodHRwczovL2RpYXMubGlicmFyeS50dWMuZ3Ivdmlldy85MjEyMwo= readmeEtag: '"492b5bac3876a384296519419248821e975f477d"' readmeLastModified: Thu, 22 Jun 2023 08:01:17 GMT repositoryId: 480846077 description: A web service to easily query OpenAPI documents created: '2022-04-12T14:29:53Z' updated: '2024-10-12T18:37:35Z' language: Java archived: false stars: 1 watchers: 2 forks: 0 owner: iapost logo: https://avatars.githubusercontent.com/u/81591846?v=4 license: GPL-3.0 repoEtag: '"8ad0a17cae648f3f0836153721cabca5ac800267923a6570cbe1be2e31c2d77e"' repoLastModified: Sat, 12 Oct 2024 18:37:35 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/itsvigneshmurugan/authflow-go-react-jwt-openapi v3: true id: 5742ec0710e55c9b5ff9420276d8382b repositoryMetadata: base64Readme: >- IyBhdXRoZmxvdwoKUmVmZXIgdG8gW0xpbmtlZEluXShodHRwczovL3d3dy5saW5rZWRpbi5jb20vcHVsc2Uvand0LWF1dGhlbnRpY2F0aW9uLXVzaW5nLWdvbGFuZy1yZWFjdC12aWduZXNoLW11cnVnYW4tZWpqYmMpIGFydGljbGUgZm9yIGRvY3VtZW50YXRpb24uCg== readmeEtag: '"96e50c1cc298fda05ae21394ef199714bc7338ca"' readmeLastModified: Wed, 22 Nov 2023 09:20:03 GMT repositoryId: 704745342 description: Building authentication flow. created: '2023-10-14T01:12:52Z' updated: '2024-06-19T23:14:34Z' language: JavaScript archived: false stars: 1 watchers: 1 forks: 0 owner: ItsVigneshMurugan logo: https://avatars.githubusercontent.com/u/30820063?v=4 repoEtag: '"7d78f859922171587477b3de0529cfc0af0c157702428a9194f8f1b909e7b9f2"' repoLastModified: Wed, 19 Jun 2024 23:14:34 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/big-vi/authflow-go-react-jwt-openapi - source: openapi3 tags repository: https://github.com/adolligit/car-shop v3: true id: 1419b8b6544c12a49e08c6805202cf77 repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPkNhciBTaG9wPC9oMT4KCkNhciBTaG9wIMOpIHVtYSAqQVBJIFJlc3QqIHF1ZSBjb25zdWx0YSBvIGJhbmNvIGRlIGRhZG9zIG7Do28gcmVsYWNpb25hbCBNb25nb0RCIGF0cmF2w6lzIGRvICpPRE0qIE1vbmdvb3NlLgoKRXN0YSBBUEkgw6kgdW0gKkNSVUQqIGZlaXRvIGNvbSBvcyBwcmluY8OtcGlvcyBkYSAqUHJvZ3JhbWHDp8OjbyBPcmllbnRhZGEgw6EgT2JqZXRvcyAoUE9PKSogZSBzZXUgcHJvcMOzc2l0byDDqSBzaW11bGFyIG8gZ2VyZW5jaWFtZW50byBkZSB1bSBzaXN0ZW1hIGRlIHVtYSBjb25jZXNzaW9uw6FyaWEgZGUgdmXDrWN1bG9zLgoKRXN0ZSBwcm9qZXRvIGZvaSBkZXNlbnZvbHZpZG8gZW0gKipOb2RlLmpzICsgRXhwcmVzcy5qcyArIFR5cGVTY3JpcHQqKiwgdXRpbGl6YW5kbyAqKk1vbmdvb3NlLmpzKiogcGFyYSBjb211bmljYcOnw6NvIGNvbSBvIGJhbmNvIGRlIGRhZG9zICoqTW9uZ29EQioqLiBBbMOpbSBkaXNzbywgZm9yYW0gcmVhbGl6YWRvcyB0ZXN0ZXMgbmFzIGNhbWFkYXMgKk1vZGVsLCBDb250cm9sbGVyIGUgU2VydmljZSogY29tICoqTW9jaGEgKyBDaGFpICsgU2lub24qKi4KCiMjIENvbW8gZXUgZmHDp28gcGFyYSBleGVjdXRhciBlc3RlIHByb2pldG8/ClByaW1laXJvIGRlIHR1ZG8sIGNsb25lIG8gcHJvamV0byBuYSBzdWEgbcOhcXVpbmEgbG9jYWwgZSBlbnRyZSBuYSBwYXN0YSBkbyBwcm9qZXRvOgpgYGBiYXNoCmdpdCBjbG9uZSBnaXRAZ2l0aHViLmNvbTpBZG9sbGlnaXQvY2FyLXNob3AuZ2l0ICYmIGNkIC4vY2FyLXNob3AKYGBgCkRlcG9pcyBpbnN0YWxlIGFzIGRlcGVuZMOqbmNpYXM6CmBgYGJhc2gKbnBtIGluc3RhbGwKYGBgCiMjIyBJbnN0YWxhw6fDo28K8J+aqCBBcyB2ZXJzw7VlcyBkZXNjcml0YXMgbmFzIGluc3RhbGHDp8O1ZXMgc8OjbyAqKmZvcnRlbWVudGUgcmVjb21lbmRhZGFzKiouIE5vIGVudGFudG8sIGNhc28gcXVlaXJhIHRlbnRhciBlbSB1bWEgdmVyc8OjbyBkaWZlcmVudGUsIGNvbnNpZGVyZSBhIHBvc3PDrXZlbCBhcGFyacOnw6NvIGRlIGVycm9zIGR1cmFudGUgYSBleGVjdcOnw6NvIGRvIHByb2pldG8uCgpFc2NvbGhhIGFiYWl4byB1bSB0aXBvIGRlIGluc3RhbGHDp8OjbzoKPGRldGFpbHM+CiAgPHN1bW1hcnk+SW5zdGFsYXIgY29tIERvY2tlciDwn5CzPC9zdW1tYXJ5Pgo8L2JyPjxiPlJlcXVpc2l0b3M8L2I+CjwvYnI+Vm9jw6ogZGV2ZSBwb3NzdWlyIGFzIHNlZ3VpbnRlcyBmZXJyYW1lbnRhczoKPHVsPgogICAgPGxpPkRvY2tlcjogdjI0LjAuMjwvbGk+CiAgICA8bGk+RG9ja2VyIENvbXBvc2U6IHYyLjE5LjA8L2xpPgo8L3VsPgoKICDimqDvuI8gU2Ugdm9jw6ogZXN0aXZlciB1c2FuZG8gKipMaW51eCoqLCBkZXNhdGl2ZSBvICoqTW9uZ29EQioqIGxvY2FsbWVudGUgcGFyYSBldml0YXIgY29uZmxpdG9zIGRlIHBvcnRhOgogIGBgYGJhc2gKICBzeXN0ZW1jdGwgc3RvcCBtb25nb2QKICBgYGAKCjxocj4KCiAgMS4gQ3JpZSBlIGluaWNpZSBvcyBjb250w6ppbmVyczoKICBgYGBiYXNoCiAgZG9ja2VyIGNvbXBvc2UgdXAgLWQKICBgYGAKICAyLiBFbnRyZSBubyBjb250w6ppbmVyIGRhIGFwbGljYcOnw6NvOgogIGBgYGJhc2gKICBkb2NrZXIgZXhlYyAtaXQgY2FyX3Nob3AgYmFzaAogIGBgYAogIC0tLQo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KICA8c3VtbWFyeT5JbnN0YWxhciBsb2NhbG1lbnRlIPCfkrs8L3N1bW1hcnk+CjwvYnI+PGI+UmVxdWlzaXRvczwvYj4KPC9icj5Wb2PDqiBkZXZlIHBvc3N1aXIgYXMgc2VndWludGVzIGZlcnJhbWVudGFzOgo8dWw+CiAgICA8bGk+bnBtOiB2OS42Ljc8L2xpPgogICAgPGxpPk5vZGU6IHYyMC4zPC9saT4KICAgIDxsaT5Nb25nb0RCOiB2Ni4wPC9saT4KPC91bD4KClNlIHZvY8OqIHVzYSAqKkxpbnV4KiosIHZlcmlmaXF1ZSBzZSBvIHNlcnZpw6dvIGRvICoqTW9uZ29EQioqIGVzdGEgYXRpdm86IApgYGBiYXNoCnN5c3RlbWN0bCBzdGF0dXMgbW9uZ29kCmBgYApDYXNvIGVzdGVqYSBkZXNhdGl2YWRvLCBzdWJzdGl0dWEgKipzdGF0dXMqKiBwb3IgKipzdGFydCoqIG5vIGNvbWFuZG8gYWNpbWEuCjxocj4KCjEuIENyaWUgbyBhcnF1aXZvIDxiPi5lbnY8L2I+IG5hIHBhc3RhIHJhaXoKYGBgYmFzaAp0b3VjaCAuZW52CmBgYAoKMi4gQ29waWUgZSBjb2xlIGFzIGluZm9ybWHDp8O1ZXMgYSBzZWd1aXI6CgpgYGBiYXNoCiMgTW9uZ29EQgpNREJfVVJJPQpNREJfSE9TVD0xMjcuMC4wLjEKTURCX1BPUlQ9MjcwMTcKTURCX05BTUU9Q2FyU2hvcAoKIyBBUEkKQVBJX1BPUlQ9MzAwMQpgYGAKPiDwn5ej77iPKERpY2EpOiBWb2PDqiBwb2RlIGNvbmVjdGFyIGEgYXBsaWNhw6fDo28gY29tIHVtIGJhbmNvIHJlbW90bywgYWRpY2lvbmFkbyBhIFVSSSBkbyBiYW5jbyBlbSAqKk1EQl9VUkkqKi4KCjxocj4KPC9kZXRhaWxzPgoKIyMjIEV4ZWN1w6fDo28K4pqg77iPIE9zIGNvbWFuZG9zIGEgc2VndWlyIHBvZGVtIHNlciBleGVjdXRhZG9zIGRlbnRybyBkbyBDb250YWluZXIgb3UgbG9jYWxtZW50ZS4KCkluaWNpYXIgbyBwcm9qZXRvIGVtIG1vZG8gZGUgZGVzZW52b2x2aW1lbnRvIChjb20gKipub2RlbW9uKiopOgpgYGBiYXNoCm5wbSBydW4gZGV2CmBgYAoKRXhlY3V0YXIgYSBjb2JlcnR1cmEgZGUgdGVzdGVzOgpgYGBiYXNoCm5wbSBydW4gdGVzdDpkZXYKYGBgCgpFeGVjdXRhIG9zIHRlc3RlcyBlIGRlcG9pcyBjcmlhciBhIHBhc3RhICoqLi9jb3ZlcmFnZSoqIHF1ZSBjb250w6ltIHVtIHJlbGF0w7NyaW86CmBgYGJhc2gKbnBtIHJ1biB0ZXN0OmNvdmVyYWdlCmBgYAo+IPCfl6PvuI8oRGljYSk6IFV0aWxpemFuZG8gYSBleHRlbnPDo28gKipMaXZlIFNlcnZlcioqIG5vIFZpc3VhbCBTdHVkaW8gQ29kZSwgdm9jw6ogcG9kZXLDoSB2aXN1YWxpemFyIGEgcMOhZ2luYSBjb20gbyByZWxhdMOzcmlvIG5hdmVnYW5kbyBhdMOpIHBhc3RhIGNyaWFkYSBlIGFicmluZG8gbyBhcnF1aXZvICoqaW5kZXguaHRtbCoqIG5vIG5hdmVnYWRvci4KCkV4ZWN1dGFyIG8gKipFU0xpbnQqKiBwYXJhIHZlcmlmaWNhciBvcyBlcnJvcyBkbyBjw7NkaWdvIGVzdMOhdGljbzoKYGBgYmFzaApucG0gcnVuIGxpbnQKYGBgCgojIyBUZXN0YW5kbyBvIENSVUQKVm9jw6ogcG9kZSB1dGlsaXphciBxdWFscXVlciBDbGllbnQgQVBJIHBhcmEgdGVzdGFyIG8gQ2FyIFNob3AsIGNvbnR1ZG8sIGV1IGRpc3BvbmliaWxpemVpIGEgZG9jdW1lbnRhw6fDo28gY29tIE9wZW5BUEkgKFN3YWdnZXIpIHBhcmEgcXVlIHZvY8OqIHNhaWJhIHF1YWlzIHJvdGFzIGV4aXN0ZW0gZGVudHJvIGRvIHByb2pldG8gZSBjb21vIHRlc3RhLWxhcy4KCkRlc3RhIGZvcm1hLCBxdWFuZG8gYSBBUEkgZXN0aXZlciBlbSBleGVjdcOnw6NvLCB2b2PDqiBwb2RlcsOhIHZpc2l0YXIgaHR0cDovLzEyNy4wLjAuMTozMDAxL3YxL2RvY3MvIGUgdmlzdWFsaXphciBhIHDDoWdpbmEgZGEgZG9jdW1lbnRhw6fDo28gZSB0ZXN0YXIgYSBBUEkuCgo8aW1nIGFsaWduPSJjZW50ZXIiIGFsdD0iTm9kZUpzIiBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9BZG9sbGlnaXQvY2FyLXNob3AvbWFpbi9pbWcvc3MxLnBuZyI+Cgo+IPCfl6PvuI8oRGljYSk6IE8gYmFuY28gZGUgZGFkb3MgbsOjbyBlc3RhIHBvcHVsYWRvLiBQb3J0YW50byDDqSB1bWEgYm9hIGlkZWlhIGNvbWXDp2FyIGNhZGFzdHJhbmRvIG9zIGRhZG9zLgoKIyMgIExpbmd1YWdlbnMgZSBmZXJyYW1lbnRhczoKPGRpdj4KICAgIDxhIGhyZWY9Imh0dHBzOi8vbm9kZWpzLm9yZy9lbi8iPjxpbWcgYWxpZ249ImNlbnRlciIgYWx0PSJOb2RlSnMiIGhlaWdodD0iNDAiIHdpZHRoPSI1MCIgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvZGV2aWNvbnMvZGV2aWNvbi9pY29ucy9ub2RlanMvbm9kZWpzLW9yaWdpbmFsLnN2ZyI+PC9hPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9leHByZXNzanMuY29tL3B0LWJyLyI+PGltZyBhbGlnbj0iY2VudGVyIiBhbHQ9IkV4cHJlc3MiIGhlaWdodD0iNDAiIHdpZHRoPSI1MCIgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvZGV2aWNvbnMvZGV2aWNvbi9pY29ucy9leHByZXNzL2V4cHJlc3Mtb3JpZ2luYWwuc3ZnIj48L2E+CiAgICA8YSBocmVmPSJodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvIj48aW1nIGFsaWduPSJjZW50ZXIiIGFsdD0iVHlwZVNjcmlwdCIgaGVpZ2h0PSI0MCIgd2lkdGg9IjUwIiBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9kZXZpY29ucy9kZXZpY29uL2ljb25zL3R5cGVzY3JpcHQvdHlwZXNjcmlwdC1vcmlnaW5hbC5zdmciPjwvYT4KICAgIDxhIGhyZWY9Imh0dHBzOi8vbW9uZ29vc2Vqcy5jb20vIj48aW1nIGFsaWduPSJjZW50ZXIiIGFsdD0iTW9uZ29vc2UiIGhlaWdodD0iNDAiIHdpZHRoPSI1MCIgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzU1Mjk2NT9zPTI4MCZ2PTQiPjwvYT4KICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm1vbmdvZGIuY29tLyI+PGltZyBhbGlnbj0iY2VudGVyIiBhbHQ9Ik1vbmdvIiBoZWlnaHQ9IjQwIiB3aWR0aD0iNTAiIHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL2Rldmljb25zL2Rldmljb24vaWNvbnMvbW9uZ29kYi9tb25nb2RiLXBsYWluLXdvcmRtYXJrLnN2ZyI+PC9hPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9tb2NoYWpzLm9yZy8iPjxpbWcgYWxpZ249ImNlbnRlciIgYWx0PSJNb2NoYSIgaGVpZ2h0PSI0MCIgd2lkdGg9IjUwIiBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9kZXZpY29ucy9kZXZpY29uL2ljb25zL21vY2hhL21vY2hhLXBsYWluLnN2ZyI+PC9hPgogICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuY2hhaWpzLmNvbS8iPjxpbWcgYWxpZ249ImNlbnRlciIgYWx0PSJDaGFpIiBoZWlnaHQ9IjQwIiB3aWR0aD0iNTAiIHNyYz0iaHR0cHM6Ly9jZG4uaWNvbi1pY29ucy5jb20vaWNvbnMyLzI2OTkvUE5HLzUxMi9jaGFpanNfbG9nb19pY29uXzE2ODQzNS5wbmciPjwvYT4KICAgIDxhIGhyZWY9Imh0dHBzOi8vc2lub25qcy5vcmcvIj48aW1nIGFsaWduPSJjZW50ZXIiIGFsdD0iU2lub24iIGhlaWdodD0iNDAiIHdpZHRoPSI1MCIgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjU3MDI1Mz9zPTI4MCZ2PTQiPjwvYT4KPC9kaXY+Cg== readmeEtag: '"76e961ea961d1ba0bd6ca7c46448a4e63e80008c"' readmeLastModified: Wed, 29 Oct 2025 17:12:49 GMT repositoryId: 567522183 description: >- Car Shop é é uma API REST desenvolvida em TypeScript que utiliza o ODM Mongoose para consultar o banco de dados não relacional MongoDB. created: '2022-11-18T00:58:04Z' updated: '2025-10-29T17:13:36Z' language: TypeScript archived: false stars: 1 watchers: 1 forks: 0 owner: Adolligit logo: https://avatars.githubusercontent.com/u/50248803?v=4 repoEtag: '"72694c0e9098fa6bd72c1d0a6c229248c35e8eecbf96e0794a6746065abf0d33"' repoLastModified: Wed, 29 Oct 2025 17:13:36 GMT category: SDK foundInMaster: true - source: - openapi3 tags - openapi31 tags repository: https://github.com/saman-barakat/idlplayground v3: true v3_1: true id: f0df870103a1c6cdaed251b264223984 repositoryMetadata: base64Readme: >- IyMgSURMUGxheWdyb3VuZAoKSURMUGxheWdyb3VuZCBpcyBhbiBvbmxpbmUgYXBwbGljYXRpb24gZGV2ZWxvcGVkIHRvIGFsbG93IGVuZCB1c2VycyB0byBleHBsb3JlIHRoZSBjYXBhYmlsaXRpZXMgb2YgSURMLCBJREw0T0FTLCBhbmQgSURMUmVhc29uZXIgd2ViIEFQSS4gVGhlIFBsYXlncm91bmQgcHJvdmlkZXMgYW4gZWRpdG9yIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgSURMIGxhbmd1YWdlLgoKIyMjIE92ZXJ2aWV3CgpJRExQbGF5Z3JvdW5kIG9mZmVycyBhIHVzZXItZnJpZW5kbHkgaW50ZXJmYWNlIHRoYXQgaW5jbHVkZXMgYW4gSURMIGVkaXRvciBkZXZlbG9wZWQgdXNpbmcgWyoqWHRleHQqKl0oaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvWHRleHQvKSwgYSBwb3B1bGFyIGZyYW1ld29yayBmb3IgdGhlIGRldmVsb3BtZW50IG9mIHByb2dyYW1taW5nIGxhbmd1YWdlcyBhbmQgRFNMcy4gVGhlIGVkaXRvciBoaWdobGlnaHRzIHRoZSBJREwgc3ludGF4IGFuZCBwcm92aWRlcyByZWFsLXRpbWUgZXJyb3IgZGV0ZWN0aW9uIG9mIHRoZSBJREwgbGFuZ3VhZ2UuCgpUaGUgcGxheWdyb3VuZCBpcyBpbnRlZ3JhdGVkIHdpdGggdGhlIElETFJlYXNvbmVyIHdlYiBBUEksIGFsbG93aW5nIHVzZXJzIHRvIGFuYWx5emUgcHJlLWNvbmZpZ3VyZWQgQVBJIG9wZXJhdGlvbnMgd2l0aCBJREwgc3BlY2lmaWNhdGlvbnMgd2l0aG91dCB0aGUgbmVlZCB0byBpbnN0YWxsIGFkZGl0aW9uYWwgc29mdHdhcmUuIEFjY2VzcyB0aGUgYXBwbGljYXRpb24gaGVyZTogWyoqSURMUGxheWdyb3VuZCoqXShodHRwOi8vaWRsLnVzLmVzL3BsYXlncm91bmQvKQoKIyMjIEZlYXR1cmVzCgotICoqSURMIEVkaXRvcioqOiBTeW50YXggaGlnaGxpZ2h0aW5nIGFuZCByZWFsLXRpbWUgZXJyb3IgZGV0ZWN0aW9uLgotICoqSURMUmVhc29uZXIgd2ViIEFQSSBJbnRlZ3JhdGlvbioqOiBBbmFseXplIElETCBzcGVjaWZpY2F0aW9ucyB1c2luZyB0aGUgSURMUmVhc29uZXIgd2ViIEFQSS4KLSAqKlJlYWwtVGltZSBGZWVkYmFjayoqOiBJbW1lZGlhdGUgc3ludGF4IGVycm9yIGRldGVjdGlvbiBhbmQgYW5hbHlzaXMgcmVzdWx0cy4KLSAqKlVzZXItRnJpZW5kbHkgSW50ZXJmYWNlKio6IEVhc3ktdG8tdXNlIGludGVyZmFjZSBmb3IgZXhwbG9yaW5nIElETCBjYXBhYmlsaXRpZXMuCgojIyMgSG93IHRvIFVzZQoKVGhlIElETFBsYXlncm91bmQgcHJvdmlkZXMgYW4gaW50dWl0aXZlIGludGVyZmFjZSBmb3IgZWRpdGluZyBhbmQgZXZhbHVhdGluZyBJREwgc3BlY2lmaWNhdGlvbnMuIEZvbGxvdyB0aGVzZSBzdGVwcyB0byB1c2UgdGhlIGFwcGxpY2F0aW9uIGVmZmVjdGl2ZWx5OgoKMS4gKipTZWxlY3QgYSBTYW1wbGUgT0FTKio6IEZyb20gdGhlIGNvbWJvIGJveCwgY2hvb3NlIGEgcHJlZGVmaW5lZCBzYW1wbGUgT0FTLiBGb3IgdGhpcyBleGFtcGxlLCBzZWxlY3QgIlllbHAgQnVzaW5lc3MiLgoyLiAqKkNob29zZSBhbiBPcGVyYXRpb24qKjogU2VsZWN0IHRoZSBvcGVyYXRpb24geW91IHdhbnQgdG8gYW5hbHl6ZSwgc3VjaCBhcyAiR0VUIC8gWWVscCBCdXNpbmVzcyBTZWFyY2giLiBUaGUgZWRpdG9yIHdpbGwgYXV0b21hdGljYWxseSBpbXBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgSURMIHNwZWNpZmljYXRpb24uCjMuICoqRWRpdCB0aGUgSURMIFNwZWNpZmljYXRpb24qKjogVXNlIHRoZSBlZGl0b3IgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoZSBJREwgc3BlY2lmaWNhdGlvbi4gVGhlIGVkaXRvciBmZWF0dXJlcyBzeW50YXggaGlnaGxpZ2h0aW5nIGFuZCByZWFsLXRpbWUgZXJyb3IgZGV0ZWN0aW9uIHRvIGhlbHAgeW91IHF1aWNrbHkgaWRlbnRpZnkgYW5kIGNvcnJlY3QgYW55IGlzc3Vlcy4KNC4gKipBbmFseXplIHRoZSBTcGVjaWZpY2F0aW9uKio6IENsaWNrIHRoZSAiQW5hbHl6ZSIgYnV0dG9uIHRvIHNlbmQgdGhlIE9BUyBhbmQgdGhlIElETCBzcGVjaWZpY2F0aW9uIHRvIHRoZSBJRExSZWFzb25lciB3ZWIgQVBJIGZvciB2YWxpZGF0aW9uLgogICAgLSBJZiB0aGUgc3BlY2lmaWNhdGlvbiBpcyB2YWxpZCwgeW91IHdpbGwgcmVjZWl2ZSBhIHN1Y2Nlc3MgbWVzc2FnZS4KICAgIC0gSWYgdGhlIHNwZWNpZmljYXRpb24gaXMgaW52YWxpZCwgdGhlIHdlYiBBUEkgd2lsbCBwcm92aWRlIGFuIGV4cGxhbmF0aW9uIGRldGFpbGluZyB0aGUgaXNzdWVzLgogICAgICAKVG8gc2VlIGEgZGV0YWlsZWQgd2Fsa3Rocm91Z2ggb24gaG93IHRvIHVzZSBJRExQbGF5Z3JvdW5kLCBjaGVjayBvdXQgb3VyIFtZb3VUdWJlIHZpZGVvXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVMzM0MyTUE1Q21NKS4KCiMjIExpY2Vuc2UKClRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgW0dQTC0zLjAgTGljZW5zZV0oTElDRU5TRSkuIAoKIyMgQ29udGFjdAoKRm9yIG1vcmUgaW5mb3JtYXRpb24sIHZpc2l0IHRoZSBbSURMIHdlYnNpdGVdKGh0dHA6Ly9pZGwudXMuZXMvKS4K readmeEtag: '"cc52293327f7f3c34c4977c764f1957f318a1567"' readmeLastModified: Sun, 20 Oct 2024 16:43:14 GMT repositoryId: 577533163 description: >- IDLPlayground is an online application developed to allow end users to explore the capabilities of IDL, IDL4OAS, and IDLReasoner web API. The Playground provides an editor specifically designed for IDL language. created: '2022-12-13T00:17:53Z' updated: '2024-12-09T12:34:52Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: saman-barakat logo: https://avatars.githubusercontent.com/u/3259712?v=4 license: GPL-3.0 repoEtag: '"d92a3bfb072f24f6f2f52072a4135ae91a516171f8611e43d5298b9a4bdb2714"' repoLastModified: Mon, 09 Dec 2024 12:34:52 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/scarych/aom v3: true repositoryMetadata: base64Readme: >- IyBBT006IEFQSSBPdmVyIE1vZGVscwoKIVtUcmF2aXMgKC5jb20pXShodHRwczovL2ltZy5zaGllbGRzLmlvL3RyYXZpcy9jb20vc2NhcnljaC9hb20pCiFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kbS9hb20pCiFbTGlicmFyaWVzLmlvIGRlcGVuZGVuY3kgc3RhdHVzIGZvciBsYXRlc3QgcmVsZWFzZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9saWJyYXJpZXNpby9yZWxlYXNlL25wbS9hb20pCiFbR2l0SHViXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL3NjYXJ5Y2gvYW9tKQoKYGFvbWAgLSBpdCBpcyBtZXRhLWZyYW1ld29yayBtYWRlIG9mIHR5cGVzY3JpcHQtZGVjb3JhdG9ycywgd2hpY2ggYWxsb3dzIHRvIGZhc3QgYW5kIGNvbWZvcnRhYmxlCmNyZWF0ZSBzYWZlIGFwaS1zZXJ2aWNlcywgdXNpbmcgdGhlIHByaW5jaXBsZSBvZiBhY2N1bXVsYXRpb24gZGF0YSBsYXllcnMsIGVucmljaGVkIHdpdGggYWJzdHJhY3Rpb25zLgoKIyMgSW5zdGFsbGF0aW9uCgpgYGAKbnBtIGkgLXMgYW9tCmBgYAoKb3IKCmBgYAp5YXJuIGFkZCBhb20KYGBgCgojIyBHZXR0aW5nIHN0YXJ0ZWQKClRvIGNoZWNrIG91dCB0aGUgZG9jdW1lbnRhdGlvbiwgdmlzaXQgW2FvbS5qcy5vcmddKGh0dHA6Ly9hb20uanMub3JnKSAoYGVuYCBhbmQgYHJ1YCBhdmFpbGFibGUpCgojIyBDb25jZXB0CgpUaGUgbWFpbiBpZGVhIHNvdW5kcyBsaWtlOiAiZG9uJ3QgZHVwbGljYXRlIHRoZSBjb2RlLCBsaW5rIHRoZSBjb2RlIi4gYGFvbWAgYWxsb3dzIHRvIHVzZSBkYXRhCnByb2NjZXNzaW5nLCBtYWRlIHRvIGNvdmVyIG1vc3QgY2FzZXMgeW91IG5lZWQuIEF0IHRoZSBzYW1lIHRpbWUgYGFvbWAgZG8gbm90IGxpbWl0IHRoZSBkZXZlbG9wZXIKaW4gZnJhbWVzIG9mIHRoZSBvbmx5IGZyYW1ld29yaywgYnV0IGdpdmVzIHRoZSBhYmlsaXR5IHRvIHVzZSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgYW5kIHBhY2thZ2VzLgoKYGFvbWAgaXMgbm90IGEgInRoaW5nIGluIGl0c2VsZiAiLSBhIGZyYW1ld29yayB0aGF0IG9wZXJhdGVzIGV4Y2x1c2l2ZWx5IG9uIGl0cyBvd24gY29kZWJhc2UgYW5kIG9ubHkKd29ya3MgaW4gaXRzIG93biBlbnZpcm9ubWVudC4gSXRzIGltcG9ydGFudCBmZWF0dXJlIGlzIHRoZSBhYmlsaXR5IHRvIGNvbWJpbmUgd2l0aCB0aGUgImNsYXNzaWMiIGNvZGUKb24gYGtvYWAsIHdoaWNoIG1ha2VzIGl0IHVzZWZ1bCB3aGVuIG1pZ3JhdGluZyBmdW5jdGlvbmFsaXR5IGFscmVhZHkgZXhpc3RpbmcgcHJvamVjdHMuCgpgYW9tYCBkb2VzIG5vdCBydW4gY29kZSBpbiBhbiBpc29sYXRlZCBlbnZpcm9ubWVudCwgYnV0IGdlbmVyYXRlcyBzdHJ1Y3R1cmVzIHRoYXQgYXJlIGNvbXBhdGlibGUgd2l0aApwb3B1bGFyIGxpYnJhcmllczogYGtvYS1yb3V0ZXJgLCBga29hLXNlc3Npb25gIGFuZCBvdGhlcnMsIHdoaWNoIGFsbG93cywgaWYgbmVjZXNzYXJ5LAprZWVwIHRoZSBleGlzdGluZyBjb2RlLXN0YWNrLCBhbmQgY29tZm9ydGFibHkgZXh0ZW5kIGl0IGluIHRoZSBgYW9tYCArYHR5cGVzY3JpcHRgIG1ldGhvZG9sb2d5LgoKKipDb2RlIHNhbXBsZSoqCgpgYGB0cwpAQnJpZGdlKCIvYXV0aCIsIEF1dGgpCkBCcmlkZ2UoIi9zaG9wIiwgU2hvcCkKQEJyaWRnZSgiL2FjY291bnQiLCBBY2NvdW50KQpAQ29udHJvbGxlcigpCmNsYXNzIFJvb3QgewogIEBHZXQoKQogIHN0YXRpYyBJbmRleCgpIHsKICAgIHJldHVybiBtb2RlbHMuU2V0dGluZ3MuZmluZE9uZSh7IGVuYWJsZWQ6IHRydWUgfSk7CiAgfQp9CgovLyAuLi4KQENvbnRyb2xsZXIoKQpjbGFzcyBBdXRoIHsKICB1c2VyOiBtb2RlbHMuVXNlcnM7CiAgbG9naW46IG1vZGVscy5Vc2VyTG9naW5zOwogIHRva2VuOiBtb2RlbHMuQXV0aFRva2VuczsKCiAgQE1pZGRsZXdhcmUoKQogIHN0YXRpYyBhc3luYyBSZXF1aXJlZCgKICAgIEBIZWFkZXJzKCJhdXRob3JpemF0aW9uIikgdG9rZW4sCiAgICBAVGhpcygpIF90aGlzOiBBdXRoLAogICAgQE5leHQoKSBuZXh0LAogICAgQEVycigpIGVycgogICkgewogICAgY29uc3QgYXV0aFRva2VuID0gYXdhaXQgbW9kZWxzLkF1dGhUb2tlbnMuY2hlY2tUb2tlbih0b2tlbik7CiAgICBpZiAoYXV0aERhdGEpIHsKICAgICAgX3RoaXMudG9rZW4gPSBhdXRoVG9rZW47CiAgICAgIF90aGlzLnVzZXIgPSBhd2FpdCBtb2RlbHMuVXNlcnMuZmluZEJ5SWQoYXV0aFRva2VuLnVzZXJJZCk7CiAgICAgIF90aGlzLmxvZ2luID0gYXdhaXQgbW9kZWxzLlVzZXJMb2dpbnMuZmluZEJ5SWQoYXV0aFRva2VuLmxvZ2luSWQpOwogICAgICByZXR1cm4gbmV4dCgpOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIGVycigiYWNjZXNzIGRlbmllZCIsIDQwMyk7CiAgICB9CiAgfQoKICBAUG9zdCgpCiAgc3RhdGljIGFzeW5jIExvZ2luKEBCb2R5KCkgeyBsb2dpbiwgcGFzc3dvcmQgfSwgQEVycigpIGVycikgewogICAgY29uc3QgYXV0aExvZ2luID0gYXdhaXQgbW9kZWxzLlVzZXJMb2dpbnMuYXV0aExvZ2luKGxvZ2luLCBwYXNzd29yZCk7CiAgICBpZiAoY2hlY2tMb2dpbikgewogICAgICByZXR1cm4gbW9kZWxzLkF1dGhUb2tlbnMuZ2VuZXJhdGVUb2tlbihhdXRoTG9naW4pOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIGVycigid3JvbmcgbG9naW4iLCA0MDMpOwogICAgfQogIH0KfQoKLy8gLi4uCkBDb250cm9sbGVyKCkKY2xhc3MgU2hvcCB7CiAgQEdldCgpCiAgc3RhdGljIEluZGV4KEBRdWVyeSgpIHF1ZXJ5KSB7CiAgICByZXR1cm4gbW9kZWxzLlByb2R1Y3RzLmZpbmQoeyAuLi5xdWVyeSB9KTsKICB9CgogIEBHZXQoIi9jYXRlZ29yaWVzIikKICBzdGF0aWMgQ2F0ZWdvcmllcyhAUXVlcnkoKSBxdWVyeSkgewogICAgcmV0dXJuIG1vZGVscy5DYXRlZ29yaWVzLmZpbmQoeyAuLi5xdWVyeSB9KTsKICB9CgogIEBHZXQoIi9icmFuZHMiKQogIHN0YXRpYyBCcmFuZHMoQFF1ZXJ5KCkgcXVlcnkpIHsKICAgIHJldHVybiBtb2RlbHMuQnJhbmRzLmZpbmQoeyAuLi5xdWVyeSB9KTsKICB9CgogIEBQb3N0KCIvYWRkX3RvX2NhcnQiKQogIEBVc2UoQXV0aC5SZXF1aXJlZCkKICBzdGF0aWMgQWRkVG9DYXJ0KEBCb2R5KCkgeyBwcm9kdWN0SWQsIHF1YW50aXR5IH0sIEBTdGF0ZU1hcChBdXRoKSB7IHVzZXIgfTogQXV0aCkgewogICAgY29uc3QgYWRkVXNlckNhcnQgPSBhd2FpdCB1c2VyLmFkZFByb2R1Y3RUb0NhcnQocHJvZHVjdElkLCBxdWFudGl0eSk7CiAgICByZXR1cm4gdXNlci5nZXRQcm9kdWN0c0NhcnQoKTsKICB9Cn0KCi8vIC4uLgpAQ29udHJvbGxlcigpCkBVc2UoQXV0aC5SZXF1aXJlZCkKY2xhc3MgQWNjb3VudCB7CiAgQEdldCgpCiAgc3RhdGljIGFzeW5jIEluZGV4KEBTdGF0ZU1hcChBdXRoKSB7IHVzZXIsIGxvZ2luIH06IEF1dGgpIHsKICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IHVzZXIuZ2V0T3JkZXJzKCk7CiAgICByZXR1cm4geyB1c2VyLCBsb2dpbiwgb3JkZXJzIH07CiAgfQoKICBAUG9zdCgiL2xvZ291dCIpCiAgc3RhdGljIGFzeW5jIExvZ291dChAU3RhdGVNYXAoQXV0aCkgeyB0b2tlbiB9OiBBdXRoKSB7CiAgICBhd2FpdCB0b2tlbi5yZW1vdmUoKTsKICAgIHJldHVybiB7IG1lc3NhZ2U6ICJzdWNjZXNzIGxvZ291dCIgfTsKICB9Cn0KYGBgCgojIyBJc3N1ZXMKClVzZSBbR2l0aHViIGlzc3Vlc10oaHR0cHM6Ly9naXRodWIuY29tL3NjYXJ5Y2gvYW9tL2lzc3VlcykgdG8gYXNrIHlvdXIgcXVlc3Rpb24gb3IgcmVwb3J0IGFib3V0CnByb2JsZW0uCgojIyBDb250YWN0cwoKLSBBdXRob3I6IFtHcmlnb3J5IEtob2xzdGlubmlrb3ZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FyeWNoKQotIEVtYWlsOiBbbWFpbEBzY2FyeWNoLnJ1XShtYWlsdG86bWFpbEBzY2FyeWNoLnJ1KQoKIyMgTGljZW5zZQoKQU9NIGlzIFtNSVQgbGljZW5zZWRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FyeWNoL2FvbS9ibG9iL0hFQUQvTElDRU5TRSkuCgojIyBXYXJuaW5nCgpgYW9tYCBpcyBpbiBvcGVuIGJldGEgYW5kIHdpbGwgYmUgZXhwYW5kZWQgd2l0aCBuZXcgZmVhdHVyZXMuIEVycm9ycyBhcmUgbm90IGV4Y2x1ZGVkLCBhcyB3ZWxsCmFzIHJlcGxhY2VtZW50IGFuZCByZW5hbWluZyBvZiBhIG51bWJlciBvZiBmdW5jdGlvbnMgYW5kIGRlY29yYXRvcnMuCg== readmeEtag: '"69652f085b26e13d0fe4a66a88b67f9354f7beb5"' readmeLastModified: Mon, 12 Aug 2024 10:07:01 GMT repositoryId: 152123069 description: Lightweight and powerful, decorator based REST-API framework. created: '2018-10-08T17:57:15Z' updated: '2025-08-23T14:09:22Z' language: TypeScript archived: false stars: 1 watchers: 1 forks: 1 owner: scarych logo: https://avatars.githubusercontent.com/u/1063164?v=4 license: MIT repoEtag: '"8bf2a133fa941e01519bd1612c0ce8a6a209a942194d16158997fb74d8f06ccf"' repoLastModified: Sat, 23 Aug 2025 14:09:22 GMT foundInMaster: true category: Data Validators id: 64190460033d905d82ecec7ff3748dbe - source: openapi3 tags repository: https://github.com/fako1024/httpc v3: true repositoryMetadata: base64Readme: >- IyBBIHNpbXBsZSB3cmFwcGVyIGFyb3VuZCB0aGUgZGVmYXVsdCBHbyBodHRwIGNsaWVudCBvcHRpbWl6ZWQgZm9yIGVhc2Utb2YtdXNlCgpbIVtHaXRodWIgUmVsZWFzZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvcmVsZWFzZS9mYWtvMTAyNC9odHRwYy5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vZmFrbzEwMjQvaHR0cGMvcmVsZWFzZXMpClshW0dvRG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2Zha28xMDI0L2h0dHBjP3N0YXR1cy5zdmcpXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2Zha28xMDI0L2h0dHBjLykKWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL2Zha28xMDI0L2h0dHBjKV0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL2Zha28xMDI0L2h0dHBjKQpbIVtCdWlsZC9UZXN0IFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL2Zha28xMDI0L2h0dHBjL3dvcmtmbG93cy9Hby9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vZmFrbzEwMjQvaHR0cGMvYWN0aW9ucz9xdWVyeT13b3JrZmxvdyUzQUdvKQpbIVtDb2RlUUxdKGh0dHBzOi8vZ2l0aHViLmNvbS9mYWtvMTAyNC9odHRwYy9hY3Rpb25zL3dvcmtmbG93cy9jb2RlcWwtYW5hbHlzaXMueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9mYWtvMTAyNC9odHRwYy9hY3Rpb25zL3dvcmtmbG93cy9jb2RlcWwtYW5hbHlzaXMueW1sKQoKVGhpcyBwYWNrYWdlIHdyYXBzIHRoZSBHbyBzdGFuZGFyZCBodHRwIGNsaWVudCwgcHJvdmlkaW5nIGEgc2ltcGxpZmllZCBpbnRlcmFjdGlvbiBtb2RlbCB1c2luZyBtZXRob2QgY2hhaW5pbmcgYW5kIGFkZGl0aW9uYWwgY2FwYWJpbGl0aWVzIHN1Y2ggYXMgb3B0aW9uYWwgaW4tZmxvdyB2YWxpZGF0aW9uIGFnYWluc3QgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgoKIyMgRmVhdHVyZXMKLSBTaW1wbGUsIG1ldGhvZCBjaGFpbmluZyBiYXNlZCBpbnRlcmZhY2UgZm9yIEhUVFAgY2xpZW50IHJlcXVlc3RzCi0gU2ltdWxhdGlvbiBvZiByZXF1ZXN0IGRlbGF5cwotIFZhbGlkYXRpb24gb2YgcmVxdWVzdCArIHJlc3BvbnNlIGFnYWluc3QgT3BlbkFQSSBzcGVjaWZpY2F0aW9uCi0gQ3VzdG9taXphdGlvbiBvZiBIVFRQIGNsaWVudCB2aWEgZnVuY3Rpb25hbCBwYXJhbWV0ZXIKLSBCYWNrLU9mZi1SZXRyeSBjb25jZXB0IHRvIGF1dG9tYXRpY2FsbHkgcmV0cnkgcmVxdWVzdHMgaWYgcmVxdWlyZWQKCiMjIEluc3RhbGxhdGlvbgpgYGBiYXNoCmdvIGdldCAtdSBnaXRodWIuY29tL2Zha28xMDI0L2h0dHBjCmBgYAoKIyMgRXhhbXBsZXMKIyMjIyBQZXJmb3JtIHNpbXBsZSBIVFRQIEdFVCByZXF1ZXN0CmBgYGdvCmVyciA6PSBodHRwYy5OZXcoIkdFVCIsICJodHRwOi8vZXhhbXBsZS5vcmciKS5SdW4oKQppZiBlcnIgIT0gbmlsIHsKCWxvZy5GYXRhbGYoImVycm9yIHBlcmZvcm1pbmcgR0VUIHJlcXVlc3Q6ICVzIiwgZXJyKQp9CmBgYAoKIyMjIyBQZXJmb3JtIEhUVFAgR0VUIHJlcXVlc3QgYW5kIHBhcnNlIHRoZSByZXN1bHQgYXMgSlNPTiBpbnRvIGEgc3RydWN0CmBgYGdvCnZhciByZXMgPSBzdHJ1Y3QgewoJU3RhdHVzIGludAoJTWVzc2FnZSBzdHJpbmcKfXt9CmVyciA6PSBodHRwYy5OZXcoIkdFVCIsICJodHRwOi8vZXhhbXBsZS5vcmciKS4KCVBhcnNlSlNPTigmcmVzKS4KCVJ1bigpCmlmIGVyciAhPSBuaWwgewoJbG9nLkZhdGFsZigiZXJyb3IgcGVyZm9ybWluZyBHRVQgcmVxdWVzdDogJXMiLCBlcnIpCn0KYGBgCgojIyMjIFBlcmZvcm0gSFRUUFMgUE9TVCByZXF1ZXN0IHdpdGggYSBzaW1wbGUgYm9keSwgZGlzYWJsaW5nIGNlcnRpZmljYXRlIHZhbGlkYXRpb24gYW5kIGNvcHlpbmcgdGhlIHJlc3BvbnNlIHRvIGEgYnl0ZXMuQnVmZmVyCmBgYGdvCmJ1ZiA6PSBuZXcoYnl0ZXMuQnVmZmVyKQplcnIgOj0gaHR0cGMuTmV3KCJQT1NUIiwgImh0dHBzOi8vZXhhbXBsZS5vcmciKS4KCVNraXBDZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvbigpLgoJQm9keShbXWJ5dGV7MHgxLCAweDJ9KS4KCVBhcnNlRm4oaHR0cGMuQ29weShidWYpKS4KCVJ1bigpCgppZiBlcnIgIT0gbmlsIHsKICAgIGxvZy5GYXRhbGYoImVycm9yIHBlcmZvcm1pbmcgUE9TVCByZXF1ZXN0OiAlcyIsIGVycikKfQoKZm10LlByaW50bG4oYnVmLlN0cmluZygpKQpgYGAKCiMjIyMgUGVyZm9ybSBIVFRQUyBHRVQgcmVxdWVzdCAod2l0aCBxdWVyeSBwYXJhbWV0ZXJzICsgaGVhZGVycyArIGJhc2ljIGF1dGgpLCB2YWxpZGF0aW5nIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGFnYWluc3QgT3BlbkFQSXYzIHNwZWNpZmljYXRpb24KYGBgZ28Kb3BlbkFQSUZpbGVEYXRhLCBlcnIgOj0gb3MuUmVhZEZpbGUoIi90bXAvb3BlbmFwaS5qc29uIikKaWYgZXJyICE9IG5pbCB7Cglsb2cuRmF0YWxmKCJFcnJvciBvcGVuaW5nIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmaWxlOiAlcyIsIGVycikKfQoKZXJyID0gaHR0cGMuTmV3KCJHRVQiLCAiaHR0cHM6Ly9leGFtcGxlLm9yZyIpLgoJU2tpcENlcnRpZmljYXRlVmVyaWZpY2F0aW9uKCkuCglRdWVyeVBhcmFtcyhodHRwYy5QYXJhbXN7CgkJInBhcmFtIjogInRlc3QiLAoJfSkuCglIZWFkZXJzKGh0dHBjLlBhcmFtc3sKCQkiWC1IRUFERVItVEVTVCI6ICJ0ZXN0IiwKCX0pLgoJQXV0aEJhc2ljKCJ1c2VybmFtZSIsICJwYXNzd29yZCIpLgoJT3BlbkFQSVZhbGlkYXRpb25GaWxlRGF0YShvcGVuQVBJRmlsZURhdGEpLgoJUnVuKCkKCmlmIGVyciAhPSBuaWwgewoJbG9nLkZhdGFsZigiZXJyb3IgcGVyZm9ybWluZyBHRVQgcmVxdWVzdDogJXMiLCBlcnIpCn0KYGBgCg== readmeEtag: '"dda14c18e7b3b60355aacf3e4988a28a9f258d26"' readmeLastModified: Tue, 02 Jul 2024 15:02:30 GMT repositoryId: 208796894 description: >- A simple wrapper around the default Go http client optimized for ease-of-use created: '2019-09-16T12:42:06Z' updated: '2025-04-24T14:32:29Z' language: Go archived: false stars: 3 watchers: 4 forks: 2 owner: fako1024 logo: https://avatars.githubusercontent.com/u/10483969?v=4 license: Apache-2.0 repoEtag: '"797c78a1b5771e9ceb4200cde3e72b6f3e815020ef500ce48ad68819034cfdcd"' repoLastModified: Thu, 24 Apr 2025 14:32:29 GMT foundInMaster: true category: Data Validators id: 3c4d97378d5b6503a213aded8daac332 - source: openapi3 tags repository: https://github.com/andrewwgordon/ddd-northwind-api v3: true repositoryMetadata: base64Readme: >- IyBEb21haW4tRHJpdmVuIERlc2lnbiBDUVJTIE1pY3Jvc2VydmljZSBPcGVuQVBJIERlbW8KIyMgT3ZlcnZpZXcKVGhpcyBwcm9qZWN0IGlzIGFuIGV4YW1wbGUgW0RvbWFpbi1Ecml2ZW4gRGVzaWduXShodHRwczovL21hcnRpbmZvd2xlci5jb20vYmxpa2kvRG9tYWluRHJpdmVuRGVzaWduLmh0bWwpIFtNaWNyb3NlcnZpY2VdKGh0dHBzOi8vbWljcm9zZXJ2aWNlcy5pby9pbmRleC5odG1sKSBzdXBwb3J0aW5nIFtPcGVuQVBJXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKS4gVGhlIHB1cnBvc2Ugb2YgdGhlIHByb2plY3QgaXMgYW4gZWR1Y2F0aW9uICJ0b3kiIGFwcGxpY2F0aW9uIHRvIGFydGljdWxhdGUgREREIGFuZCBNaWNyb3NlcnZpY2UgYmVzdCBwcmFjdGljZXMuCgpUaGUgcHJvamVjdCBpcyBidWlsdCB1cG9uIHRoZSBbQ29ubmV4aW9uIE9wZW5BUEldKGh0dHBzOi8vY29ubmV4aW9uLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8pIGZyYW1ld29yaywgaXRzZWxmIGxldmVyYWdpbmcgW0ZsYXNrXShodHRwczovL2ZsYXNrLnBhbGxldHNwcm9qZWN0cy5jb20vZW4vMi4wLngvKS4gW1dhaXRyZXNzXShodHRwczovL2RvY3MucHlsb25zcHJvamVjdC5vcmcvcHJvamVjdHMvd2FpdHJlc3MvZW4vbGF0ZXN0LykgaXMgY29uZmlndXJlZCBhcyB0aGUgZGVmYXVsdCBbV1NHSV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2ViX1NlcnZlcl9HYXRld2F5X0ludGVyZmFjZSkgSFRUUCBTZXJ2ZXIgYW5kIGlzIHN1aXRhYmxlIGZvciBwcm9kdWN0aW9uIGRlcGxveW1lbnQuCiMjIFF1aWNrIFN0YXJ0CgojIyMgUHJlcXVpc2l0ZXMKUHl0aG9uID49IDMuNwojIyMgSW5zdGFsbApDbG9uZSB0aGlzIHJlcG8uCmBgYGJhc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmRyZXd3Z29yZG9uL2RkZC1ub3J0aHdpbmQtYXBpLmdpdApgYGAKQ3JlYXRlIGEgUHl0aG9uIHZpcnR1YWwgZW52aXJvbm1lbnQgYW5kIGFjdGl2YXRlIGl0LgpgYGBiYXNoCnB5dGhvbiAtbSB2ZW52IHZlbnYKLlx2ZW52XFNjcmlwdHNcYWN0aXZhdGUgKFdpbmRvd3MpCi4vdmVudi9iaW4vYWN0aXZhdGUgKExpbnV4KQpgYGAKSW5zdGFsbCBkZXBlbmRlbmNpZXMKYGBgYmFzaApweXRob24gLW0gcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dApgYGAKIyMjIERlcGxveSB0aGUgTm9ydGh3aW5kIFNRTGl0ZSBEYXRhYmFzZQpEb3dubG9hZCB0aGUgW1NRTGl0ZTMgTm9ydGh3aW5kIGRhdGFiYXNlXShodHRwczovL2dpdGh1Yi5jb20vanB3aGl0ZTMvbm9ydGh3aW5kLVNRTGl0ZTMvYmxvYi9tYXN0ZXIvTm9ydGh3aW5kX2xhcmdlLnNxbGl0ZS56aXApLCB1bnBhY2sgdGhlIGFyY2hpdmUgYW5kIGRlcGxveSB0byAuL25vcnRod2luZC9yZXNvdXJjZXMvZGF0YWJhc2UvTm9ydGh3aW5kLnNxbGl0ZS4KIyMjIENvbmZpZ3VyZSBMb2dnaW5nCk5vdGU6IFlvdSBhbHNvIG1heSBuZWVkIHRvIGNyZWF0ZSBhIC4vbG9nLyBkaXJlY3RvcnkgaW4gdGhlIHJvb3Qgb2YgdGhlIGFwcGxpY2F0aW9uIGRpcmVjdG9yeS4gTG9nZ2luZyBwYXRoIGNhbiBiZSBjb25maWd1cmVkIGluIC4vbm9ydGh3aW5kL3Jlc291cmNlcy9sb2dnaW5nLmNvbmYuCiMjIyBSdW4gdGhlIFRlc3QgU3VpdGUKYGBgYmFzaApweXRob24gLW0gcHl0ZXN0IC1zIC12CmBgYApOb3RlOiBUaGUgY3VycmVudCBlMmUgUkVTVCBBUEkgdGVzdCBzcGlucyB1cCBhIEZsYXNrIEFwcCBpbnN0YW5jZSBhcyBhIE9TIHN1YiBwcm9jZXNzLiBJdCBhdHRlbXB0cyB0byB0ZXJtaW5hdGUgaXQgb24gdGVzdCBjb21wbGV0aW9uLCBidXQgeW91IG1heSBuZWVkIHRvIGtpbGwgdGhlIHByb2Nlc3MuCiMjIyBTdGFydCB0aGUgU2VydmljZQpTdGFydCB0aGUgc2VydmljZQpgYGBiYXNoCnB5dGhvbiBhcHAucHkKYGBgCgoKTmF2aWdhdGUgdG8gdGhlIFN3YWdnZXIgVUkgdmlhIHlvdXIgYnJvd3NlcgpgYGBiYXNoCmh0dHA6Ly9sb2NhbGhvc3Q6ODA5OC92MS91aQpgYGAKTm90ZTogVGhlIGRlZmF1bHQgcG9ydCBmb3IgdGhlIEhUVFAgU2VydmVyIGlzIDgwOTguIFlvdSBjYW4gY2hhbmdlIHRoaXMgc2V0dGluZyBpbiB0aGUgbm9ydGh3aW5kLnByb3BlcnRpZXMgZmlsZSBpbiAuL25vcnRod2luZC9yZXNvdXJjZXMvLgoKQmFzaWMgYXV0aGVudGljYXRpb24gaXMgZW5hYmxlZCBhbmQgYSB1c2VybmFtZSAvIHBhc3N3b3JkIGhhcyB0byBiZSBzdXBwbGllZCBmb3IgYW55IFJFU1QgQVBJIHNlcnZpY2UgdG8gcmVzcG9uZC4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCB2ZXJpZnkgY3JlZGVudGlhbHMgYW5kIGNhbiBhY2NlcHQgYW55IHVzZXJuYW1lIGFuZCBwYXNzd29yZC4= readmeEtag: '"1c3e1bb741cf7b5c0638cf0e4776fd6e82bd58f6"' readmeLastModified: Sun, 12 Sep 2021 14:54:09 GMT repositoryId: 404850974 description: >- This project is an example Domain-Driven Design, Microservice supporting OpenAPI .The purpose of the project is an education "toy" application to articulate DDD and Microservice best practices. created: '2021-09-09T19:48:05Z' updated: '2023-07-03T11:22:44Z' language: Python archived: false stars: 1 watchers: 1 forks: 1 owner: andrewwgordon logo: https://avatars.githubusercontent.com/u/51337698?v=4 license: MIT repoEtag: '"570cfd69dbe8555c4633c5bf5bb8916823810354e66e36ac283e2d62b8740188"' repoLastModified: Mon, 03 Jul 2023 11:22:44 GMT foundInMaster: true category: Server Implementations id: ccb4b38a335394fa1fe0a6efc48b58e4 - source: openapi3 tags repository: https://github.com/jitunayak/sukuawali-backend v3: true repositoryMetadata: base64Readme: >- IyMgU3VrdWF3YWxpIGJhY2tlbmQgLVJFU1QgUG9pbnRzCgotICMjIyBTaG93IGFsbCBpdGVtcwoKYGBgaHR0cCByZXF1ZXN0CkdFVCBodHRwOi8vbG9jYWxob3N0OjgwODAvc3VrdWFzL2FsbApgYGAKCi0gIyMjIEFkZCBuZXcgaXRlbQoKYGBgaHR0cCByZXF1ZXN0ClBPU1QgaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N1a3Vhcy9hZGQKQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uCmBgYAoKYGBganNvbgp7CiAgIm5hbWUiOiAiV2hpdGUgbGVnIHByYXduIiwKICAiZGVzY3JpcHRpb24iOiAiU3VwZXIgZGVsaWNpb3VzIiwKICAicHJpY2UiOiA0OTAsCiAgImltYWdlVVJMIjogImh0dHBzOi8vZXhhbXBsZS5jb20vaW1hZ2UvMi9qcGciLAogICJxdWFudGl0eSI6IDEKfQpgYGAKCi0gIyMjIFVwZGF0ZSBleGlzdGluZyBpdGVtCgpgYGBodHRwIHJlcXVlc3QKUFVUIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9zdWt1YXMvdXBkYXRlCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpgYGAKCmBgYGpzb24KewogICJpZCI6IDEsCiAgIm5hbWUiOiAiVGlnZXIgZmlzaCBsYXJnZSIsCiAgImRlc2NyaXB0aW9uIjogIlN1cGVyIGRlbGljaW91cyIsCiAgInByaWNlIjogMjUwLAogICJpbWFnZVVSTCI6ICJodHRwczovL2V4YW1wbGUuY29tL2ltYWdlLzEvanBnIiwKICAicXVhbnRpdHkiOiAxCn0KYGBgCgotICMjIyBQbGFjZSBhIG5ldyBvcmRlcgoKYGBgaHR0cCByZXF1ZXN0ClBPU1QgaHR0cDovL2xvY2FsaG9zdDo4MDgwL29yZGVycy9hZGQKQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uCmBgYAoKYGBganNvbgp7CiAgImxvY2F0aW9uIjogIlBhdGlhIiwKICAiaXRlbXMiOiBbCiAgICB7CiAgICAgICJpZCI6IDEsCiAgICAgICJuYW1lIjogIldoaXRlIGxlZyBwcmF3biIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJTdXBlciBkZWxpY2lvdXMiLAogICAgICAicHJpY2UiOiA0OTAsCiAgICAgICJpbWFnZVVSTCI6ICJodHRwczovL2V4YW1wbGUuY29tL2ltYWdlLzIvanBnIiwKICAgICAgInF1YW50aXR5IjogMQogICAgfQogIF0sCiAgImRlbGl2ZXJ5Q2hhcmdlcyI6IDMwLAogICJ0b3RhbEFtb3VudCI6IDUwMAp9CmBgYAoKLSAjIyMgT3JkZXIgZGVsaXZlcmVkCgpgYGBodHRwIHJlcXVlc3QKUFVUIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9vcmRlcnMvZGVsaXZlcmVkL3tpZH0KYGBgCgotICMjIyBVc2VyIHJlZ2lzdHJhdGlvbgoKYGBgaHR0cCByZXF1ZXN0ClBVVCBodHRwOi8vbG9jYWxob3N0OjgwODAvdXNlcnMvcmVnaXN0ZXIKQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uCmBgYAoKYGBganNvbgp7CiAgInVzZXJuYW1lIjogInVsdHJhMiIsCiAgInBhc3N3b3JkIjogInVsdHJhMiIsCiAgImlzQWN0aXZlIjogdHJ1ZSwKICAicm9sZXMiOiBbCiAgICB7CiAgICAgICJyb2xlIjogIlVTRVIiCiAgICB9LAogICAgewogICAgICAicm9sZSI6ICJBRE1JTiIKICAgIH0KICBdCn0KCmBgYApgYGBodHRwIHJlcXVlc3QKREVMRVRFIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC91c2Vycy9kZWxldGUve3VzZXJfaWR9CmBgYAoKIyMjIyBPbmx5IEFETUlOIGNhbiBhZGQgbmV3IHVzZXJzICYmIERFTElWRVJZX0dVWSBjYW4gY29tcGxldGUgdGhlIGRlbGl2ZXJ5 readmeEtag: '"c1783a82446e8d6f3517b33b88c1a5824a9d3771"' readmeLastModified: Wed, 21 Jul 2021 16:21:50 GMT repositoryId: 385692879 description: null created: '2021-07-13T18:01:00Z' updated: '2021-07-21T16:21:53Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: jitunayak logo: https://avatars.githubusercontent.com/u/35754866?v=4 repoEtag: '"bf34e8a4c3489d9f5e8a7c24a62eb670283e9e5515b03aa74b12edec4a07d126"' repoLastModified: Wed, 21 Jul 2021 16:21:53 GMT foundInMaster: true category: Data Validators id: e347e71a8024aa0361c70e88a26d1a0f - source: openapi3 tags repository: https://github.com/marcelofilipov/filipov-food-api v3: true repositoryMetadata: base64Readme: >- IVtHaXRIdWJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvbWFyY2Vsb2ZpbGlwb3YvZmlsaXBvdi1mb29kLWFwaSkKIVtHaXRIdWIgcmVwbyBzaXplXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9yZXBvLXNpemUvbWFyY2Vsb2ZpbGlwb3YvZmlsaXBvdi1mb29kLWFwaSkKCiMgRmlsaXBvdiBGb29kIEFQSQoKQSAqKkZpbGlwb3YgRm9vZCBBUEkqKiDDqSB1bWEgYXBsaWNhw6fDo28gZGVzZW52b2x2aWRhIGVtIEphdmEgY29tIFNwcmluZyBCb290LCBjb21vIHBhcnRlIGRlIHVtIHByb2pldG8gZGUgZXN0dWRvIGUgcHJvdmEgZGUgY29uY2VpdG8gcGFyYSBjb25zdHJ1w6fDo28gZGUgQVBJcyBSRVNUZnVsIG5vIGRvbcOtbmlvIGRlIGdlcmVuY2lhbWVudG8gZGUgYWxpbWVudG9zLgoKIyMg8J+boCBUZWNub2xvZ2lhcyBVdGlsaXphZGFzCgotICoqSmF2YSoqCi0gKipTcHJpbmcgQm9vdCoqCi0gKipTcHJpbmcgRGF0YSBKUEEgKEhpYmVybmF0ZSkqKgotICoqU3ByaW5nIEZveCAoU3dhZ2dlci9PcGVuQVBJIDMpKioKLSAqKlJlc3QgQXNzdXJlZCoqCi0gKipGaXh0dXJlIEZhY3RvcnkqKgoKIyMg4pyFIEZ1bmNpb25hbGlkYWRlcwoKLSBFbmRwb2ludHMgUkVTVCBwYXJhIG9wZXJhw6fDtWVzIENSVUQgZGUgZW50aWRhZGVzIHJlbGFjaW9uYWRhcyDDoCBnZXN0w6NvIGRlIGFsaW1lbnRvcy4KLSBUZXN0ZXMgYXV0b21hdGl6YWRvcyAodW5pdMOhcmlvcyBlIGRlIGludGVncmHDp8OjbykuCi0gRG9jdW1lbnRhw6fDo28gZGEgQVBJIHZpYSBTd2FnZ2VyLgoKIyMg8J+agCBDb21vIEV4ZWN1dGFyCgojIyMgUHLDqS1yZXF1aXNpdG9zCgotIEpESyAxMSsKLSBNYXZlbgoKIyMjIFBhc3NvcwoKYGBgYmFzaAojIENsb25lIG8gcmVwb3NpdMOzcmlvCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vbWFyY2Vsb2ZpbGlwb3YvZmlsaXBvdi1mb29kLWFwaS5naXQKCiMgQWNlc3NlIG8gZGlyZXTDs3JpbyBkbyBwcm9qZXRvCmNkIGZpbGlwb3YtZm9vZC1hcGkKCiMgQ29tcGlsZSBlIGluc3RhbGUgYXMgZGVwZW5kw6puY2lhcwptdm4gY2xlYW4gaW5zdGFsbAoKIyBFeGVjdXRlIGEgYXBsaWNhw6fDo28KbXZuIHNwcmluZy1ib290OnJ1bgpgYGAKCkEgQVBJIGVzdGFyw6EgZGlzcG9uw612ZWwgZW06IGBodHRwOi8vbG9jYWxob3N0OjgwODBgCgojIyDwn5OEIERvY3VtZW50YcOnw6NvCgpBY2Vzc2UgYGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9zd2FnZ2VyLXVpLmh0bWxgIHBhcmEgdmlzdWFsaXphciBhIGRvY3VtZW50YcOnw6NvIGludGVyYXRpdmEgZ2VyYWRhIHBlbG8gU3dhZ2dlciAoU3ByaW5nIEZveCkuCgojIyDwn6eqIFRlc3RlcwoKTyBwcm9qZXRvIHBvc3N1aSB0ZXN0ZXMgZGUgaW50ZWdyYcOnw6NvIGNvbSBgUmVzdCBBc3N1cmVkYCBlIG9iamV0b3MgZGUgdGVzdGUgY3JpYWRvcyBjb20gYEZpeHR1cmUgRmFjdG9yeWAuCgojIyDwn5OdIExpY2Vuw6dhCgpFc3RlIHByb2pldG8gZXN0w6EgbGljZW5jaWFkbyBzb2IgYSBsaWNlbsOnYSBNSVQuCgojIyDwn5GkIEF1dG9yCgpEZXNlbnZvbHZpZG8gcG9yIFtNYXJjZWxvIEZpbGlwb3ZdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjZWxvZmlsaXBvdikKCg== readmeEtag: '"0a00724065c62a030d27eb1474b32947041d57c7"' readmeLastModified: Tue, 08 Apr 2025 22:32:05 GMT repositoryId: 221706322 description: ':hamburger: :fries: Food API - Java/SpringBoot | Training and PoC' created: '2019-11-14T13:39:17Z' updated: '2025-04-08T22:32:09Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: marcelofilipov logo: https://avatars.githubusercontent.com/u/42516768?v=4 license: MIT repoEtag: '"2fc25bf1f6af7365319bbc5e85d451a395f7e13600eb045c4bbf3ffbef607f26"' repoLastModified: Tue, 08 Apr 2025 22:32:09 GMT foundInMaster: true category: - Description Validators - SDK id: 8728365f77c1420470cdebd745aa6080 - source: openapi3 tags repository: https://github.com/zoeastra/file-path-api v3: true id: 3fd89fddc49f196bd5a6e31f23ad59cd repositoryMetadata: base64Readme: >- IyBmaWxlLXBhdGgtYXBpCgpUaGUgZmlsZS1wYXRoLWFwaSBSRVNUZnVsIEFQSSBjYW4gYmUgc3RhcnRlZCBieSBjYWxsaW5nIGAuXHJ1bi5wczFgIGluIGEgV2luZG93cyBQb3dlclNoZWxsIGVudmlyb25tZW50LCBvciBgYmFzaCBydW4uc2hgIGluIGEgTWFjL0xpbnV4IGVudmlyb25tZW50LiBUaGUgc2NyaXB0IHRha2VzIGFuIGFic29sdXRlIHBhdGggYXMgYW4gYXJndW1lbnQsIGJ1aWxkcyBhIGRvY2tlciBpbWFnZSwgYW5kIHBhc3NlcyB0aGUgcGF0aCAob3IgdGhlIGRlZmF1bHQgInRlc3RkaXIiIGluY2x1ZGVkIGluIHRoZSBwcm9qZWN0LCBpZiBubyBvdGhlciBwYXRoIGlzIHNwZWNpZmllZCkgYWxvbmcgdG8gZG9ja2VyIGNvbXBvc2UgdG8gdXNlIGFzIGEgYmluZCBtb3VudC4KClRoaXMgQVBJIGlzIGRvY3VtZW50ZWQgaW4gdGhlIFN3YWdnZXIvT3BlbkFQSSAzLjAuMyBmb3JtYXQsIGxvY2F0ZWQgaW4gdGhlIGBhcGlkb2NzLnltbGAgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3RvcnkuIFRoZSBZQU1MIGZpbGUgaGFzIGFsc28gYmVlbiBjb252ZXJ0ZWQgdG8gSlNPTiwgYW5kIHNlcnZlZCB1cCBhcyBhIFN3YWdnZXIgVUkgc3RhdGljIHdlYnBhZ2UsIHdoaWNoIGNhbiBiZSBmb3VuZCBhdCBbaHR0cDovL2xvY2FsaG9zdDo1MDAwL3N0YXRpYy9pbmRleC5odG1sXShodHRwOi8vbG9jYWxob3N0OjUwMDAvc3RhdGljL2luZGV4Lmh0bWwpIHdoZW4gdGhlIHdlYnNpdGUgaXMgcnVubmluZy4KClNvbWUgb2YgdGhlIHRlc3RzIGFyZSBraW5kIG9mIHdvbmt5LiBDb21wYXJpbmcgdGhlIHJlc3VsdHMgaXMgaGFyZCB3aGVuIHNvbWV0aW1lcyB0aGUgb3JkZXIgb2YgdGhlIHJlc3VsdCBjaGFuZ2VzLCBhcyB3ZWxsIGFzIGZvciBzb21lIHJlYXNvbiBpdCByZWZ1c2luZyB0byBwcm9wZXJseSBkbyBQT1NUcywgUFVUcywgYW5kIERFTEVURXMuIEFsbCBtZXRob2RzIHdvcmsgcGVyZmVjdGx5IGluIHBvc3RtYW4sIHNvIGl0IG11c3QgYmUgc29tZXRoaW5nIGluIHRoZSB0ZXN0cy4gSWYgSSB3ZXJlIHdpbGxpbmcgdG8gc3BlbmQgbW9yZSB0aW1lIG9uIHRoaXMsIEknZCBmaW5kIGEgbW9yZSByb2J1c3QvZWFzaWVyIHdheSBvZiB0ZXN0aW5nIEFQSSByZXN1bHRzLiAKClNpbmNlIGl0IG1heSBoZWxwLCBJIGRpZCBpbmNsdWRlIGFuIGV4cG9ydCBvZiBteSBwb3N0bWFuIHRlc3RzIGZvciB0aGlzIHByb2plY3QsIGBmaWxlLXBhdGgtYXBpLnBvc3RtYW5fY29sbGVjdGlvbi5qc29uYCwgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC4KCkkgcHJvYmFibHkgc3BlbnQgbG9uZ2VyIHRoYW4gSSBzaG91bGQgaGF2ZSBvbiB0aGlzLCBhYm91dCA4IGhvdXJzLCB0aG91Z2ggYSBmYWlyIGJpdCBvZiB0aGF0IHdhcyBkdWUgdG8gbXkgdW5mYW1pbGlhcml0eSB3aXRoIGNyZWF0aW5nIEFQSXMgaW4gRmxhc2ssIHNldmVyYWwgY29uZnVzaW5nIGJ1Z3MsIGFzIHdlbGwgYXMgYmVpbmcgYSBiaXQgKG9yIGEgbG90KSBvZiBhIHBlcmZlY3Rpb25pc3QuCg== readmeEtag: '"318b96349e9108d161f07cfa20a9b9bf30a85b14"' readmeLastModified: Mon, 03 Oct 2022 17:29:00 GMT repositoryId: 544972237 description: >- A little file manipulation API I made in Flask, dockerized, and documented in OpenAPI/Swagger. created: '2022-10-03T15:01:03Z' updated: '2022-10-03T15:10:59Z' language: Python archived: false stars: 1 watchers: 1 forks: 0 owner: ZoeAstra logo: https://avatars.githubusercontent.com/u/11560387?v=4 repoEtag: '"d0882b189616931408c19d968bc12b4a61041785276be41df0bd3d950c78683e"' repoLastModified: Mon, 03 Oct 2022 15:10:59 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/asera286/file-path-api - source: openapi3 tags repository: https://github.com/alexbugrimov/rented-apartment v3: true repositoryMetadata: base64Readme: >- IyMg0J/RgNC+0LXQutGCIC0gItCh0YrQtdC80L3QsNGPINC60LLQsNGA0YLQuNGA0LAiIC0gUkVTVCBBUEkgc2VydmljZQoK0J/RgNC+0LXQutGCINGB0L7RgdGC0L7QuNGCINC40LcgMi3RhSDQvNC+0LTRg9C70LXQuToKKiBmcm9udGVuZAoqIHJlc3QtYXBpCgrQodC+0LTQtdGA0LbQuNGCINC40L3RhNC+0YDQvNCw0YbQuNGOCiog0YLQsNGA0LjRhNGLINC30LAg0YPRgdC70YPQs9C4INC/0L4g0YHRh9C10YLRh9C40LrQsNC8OgogICAgKiDRjdC70LXQutGC0YDQvi3RjdC90LXRgNCz0LjRjgogICAgKiDRhdC+0LvQvtC00L3QsNGPINCy0L7QtNCwCiAgICAqINCz0L7RgNGP0YfQsNGPINCy0L7QtNCwCiAgICAqINCy0L7QtNC+0L7RgtCy0LXQtNC10L3QuNC1Ciog0LXQttC10LzQtdGB0Y/Rh9C90YvQtSDQv9C+0LrQsNC30LDQvdC40Y8g0YHRh9C10YLRh9C40LrQvtCyICsg0YHQutGA0LjQvdGLOgogICAgKiDRjdC70LXQutGC0YDQvi3RjdC90LXRgNCz0LjRjgogICAgKiDRhdC+0LvQvtC00L3QsNGPINCy0L7QtNCwCiAgICAqINCz0L7RgNGP0YfQsNGPINCy0L7QtNCwCiog0YHRg9C80LzRiyDQtNC70Y8g0YDQsNGB0YfQtdGC0LAg0LfQsCDQvNC10YHRj9GGCiAgICAqINGN0LvQtdC60YLRgNC+LdGN0L3QtdGA0LPQuNGOCiAgICAqINGF0L7Qu9C+0LTQvdCw0Y8g0LLQvtC00LAKICAgICog0LPQvtGA0Y/Rh9Cw0Y8g0LLQvtC00LAKICAgICog0L7QsdGJ0LDRjyDRgdGD0LzQvNCwINC30LAg0LzQtdGB0Y/RhgoqINCy0YvQs9GA0YPQt9C60LAg0LTQsNC90L3Ri9GFINCyIFBERi3QvtGC0YfQtdGCCg== readmeEtag: '"98f985a743cf8c3faa82b474ec2fc9480d2e76a9"' readmeLastModified: Mon, 12 Oct 2020 16:25:09 GMT repositoryId: 248840821 description: Съемная квартира created: '2020-03-20T19:56:47Z' updated: '2020-10-12T16:25:12Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: AlexBugrimov logo: https://avatars.githubusercontent.com/u/30559567?v=4 repoEtag: '"1add0589021da1e935ed6520ba84a92d07243cbaeeb248099242150c9eda190b"' repoLastModified: Mon, 12 Oct 2020 16:25:12 GMT foundInMaster: true category: DSL id: 4aecd85d2c2ac753e61e3b2ea4d58e2d - source: openapi3 tags repository: https://github.com/vbguard/restful-api-boilerplate v3: true repositoryMetadata: base64Readme: >- IyBSRVNUZnVsLUFQSS1ib2lsZXJwbGF0ZQrim5NUZW1wbGF0ZSBmb3IgZmFzdCBzdGFydCBvZiB3cml0aW5nIFJFU1RmdWwgQVBJIPCfmoAK readmeEtag: '"4ef7d7e4c02bd4bc94553e55a18af5adeab08bb7"' readmeLastModified: Fri, 25 Oct 2019 21:59:33 GMT repositoryId: 197930485 description: ⛓Template for fast start of writing RESTful API 🚀 created: '2019-07-20T12:57:55Z' updated: '2024-06-04T23:58:26Z' language: JavaScript archived: false stars: 1 watchers: 0 forks: 2 owner: vbguard logo: https://avatars.githubusercontent.com/u/3513401?v=4 license: Apache-2.0 repoEtag: '"393d5c4c88d2d33d416b49ce828fd12b842a9f7756d842ebcfdb8769897a8865"' repoLastModified: Tue, 04 Jun 2024 23:58:26 GMT foundInMaster: true category: - Server - Parsers - Server Implementations id: 36c9644a6987d511428b5ae00f48dcb4 - source: openapi3 tags repository: https://github.com/allixender/ogcapi-dggs-webdev-python v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIGdlbmVyYXRlZCBzZXJ2ZXIgZm9yIE9HQyBER0dTIEFQSSB0ZXN0aW5nDQoNCiMjIE92ZXJ2aWV3DQoNClRoaXMgc2VydmVyIHdhcyBnZW5lcmF0ZWQgYnkgdGhlIFtzd2FnZ2VyLWNvZGVnZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4pIHByb2plY3QuIEJ5IHVzaW5nIHRoZQ0KW09wZW5BUEktU3BlY10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS93aWtpKSBmcm9tIGEgcmVtb3RlIHNlcnZlciwgeW91IGNhbiBlYXNpbHkgZ2VuZXJhdGUgYSBzZXJ2ZXIgc3R1Yi4gIFRoaXMNCmlzIGFuIGV4YW1wbGUgb2YgYnVpbGRpbmcgYSBzd2FnZ2VyLWVuYWJsZWQgRmxhc2sgc2VydmVyLg0KDQpUaGlzIGV4YW1wbGUgdXNlcyB0aGUgW0Nvbm5leGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3phbGFuZG8vY29ubmV4aW9uKSBsaWJyYXJ5IG9uIHRvcCBvZiBGbGFzay4NCg0KVGhlIE9wZW5BUEkgdGFyZ2V0IGRlZmluaXRpb24gaXMgb2YgREdHUyBBUEkgMC4wLjYgb2YgdGhlIERHR1MgU1dHIFt3aXAtb2djX2FwaV9kZ2dzX3pvbmVfcXVlcnlfcHJvY2Vzc19zdHlsZV0oaHR0cHM6Ly9hcHAuc3dhZ2dlcmh1Yi5jb20vYXBpcy9nZW9maXp6eWRyaW5rL3dpcC1vZ2NfYXBpX2RnZ3Nfem9uZV9xdWVyeV9wcm9jZXNzX3N0eWxlLzAuMC42KQ0KDQpUaGUgbGF0ZXN0IGl0ZXJhdGlvbiBvZiB0aGF0IHNwZWMgaXMgYWN0dWFsbHkgW29nY19hcGlfZGdncywgdW5mb3J0dW5hdGVseSBhbHNvIDAuMC42XShodHRwczovL2FwcC5zd2FnZ2VyaHViLmNvbS9hcGlzL2dlb2Zpenp5ZHJpbmsvb2djX2FwaV9kZ2dzLzAuMC42KS4gVGhpcyByZXBvIGlzIG5vdCB5ZXQgaW1wbGVtZW50aW5nIHRoaXMuIEFzIHBhcnQgb2YgdGhlIFtPY3RvYmVyIDIwMjEgb2djYXBpLWNvZGUtc3ByaW50XShodHRwczovL2dpdGh1Yi5jb20vb3Blbmdlb3NwYXRpYWwvb2djYXBpLWNvZGUtc3ByaW50LTIwMjEtMTAvaXNzdWVzLzEpIEkvd2UgYXJlIGFpbWluZyB0byBzdXBwb3J0IHRoZSBuZXcgQVBJIFNQRUMuIFN0YXkgdHVuZWQgb3IgcHVsbCByZXF1ZXN0Lg0KDQojIyBSZXF1aXJlbWVudHMNClB5dGhvbiAzLjUuMisNCg0KIyMgVXNhZ2UNCg0KV2UgbmVlZCBhbiBlbnYgdmFyIG5hbWVkIFRBQkxFU19DT05GSUcNCnRoaXMgVEFCTEVTX0NPTkZJRyB2YXIgc2hvdWxkIGhvbGQgdGhlIHBhdGggdG8gYSBmaWxlIyBiYXNlZCBvbiB0aGUNCnRhYmxlcy50ZW1wbGF0ZS5jb25mIHdpY2ggaG9sZHMgdGhlIGFjY2VzcyBpbmZvIHRvIHRoZSBkYXRhYmFzZSBkZWZpbml0aW9uLg0KDQpUaGUgbW9zdCB1c2VmdWwgaXMgdGhlIGRlbW8gdGVzdC5zYiBTUWxpdGUgZGF0YWJhc2UuDQoNCmBgYA0KIyBmb3IgZXhhbXBsZQ0KZXhwb3J0IFRBQkxFU19DT05GSUc9JEhPTUUvdGFibGVzLmNvbmYNCg0KYGBgDQoNCg0KVG8gcnVuIHRoZSBzZXJ2ZXIsIHBsZWFzZSBleGVjdXRlIHRoZSBmb2xsb3dpbmcgZnJvbSB0aGUgcm9vdCBkaXJlY3Rvcnk6DQoNCmBgYA0KcGlwMyBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQNCg0KIyBjb25maWd1cmUgY2xpY2tob3VzZSBkYiBhY2Nlc3MNCmV4cG9ydCBUQUJMRVNfQ09ORklHPXRhYmxlcy50ZW1wbGF0ZS5jb25mDQoNCnB5dGhvbjMgLW0gZGdnc19hcGlfc2VydmVyDQoNCiMgb3IgZm9yIGRldiBhbmQgdGVzdGluZw0KIyBweXRob24gc2VydmVyLnB5DQpgYGANCg0KYW5kIG9wZW4geW91ciBicm93c2VyIHRvIGhlcmU6DQoNCmBgYA0KaHR0cDovL2xvY2FsaG9zdDo4MDgwL2RnZ3MtYXBpL3VpLw0KYGBgDQoNCllvdXIgU3dhZ2dlciBkZWZpbml0aW9uIGxpdmVzIGhlcmU6DQoNCmBgYA0KaHR0cDovL2xvY2FsaG9zdDo4MDgwL2RnZ3MtYXBpL29wZW5hcGkuanNvbg0KYGBgDQoNClRvIGxhdW5jaCB0aGUgaW50ZWdyYXRpb24gdGVzdHMsIHVzZSB0b3g6DQpgYGANCnN1ZG8gcGlwIGluc3RhbGwgdG94DQp0b3gNCmBgYA0KDQoqUmVtYXJrOiBJIGhhdmVuJ3QgaGFkIHRpbWUgdG8gdXBkYXRlIHRoZSB0ZXN0cywgcGxlYXNlIGZlZWwgZnJlZSB0byBkbyBzbyoNCg0KIyMgUnVubmluZyB3aXRoIERvY2tlcg0KDQpUbyBydW4gdGhlIHNlcnZlciBvbiBhIERvY2tlciBjb250YWluZXIsIHBsZWFzZSBleGVjdXRlIHRoZSBmb2xsb3dpbmcgZnJvbSB0aGUgcm9vdCBkaXJlY3Rvcnk6DQoNCmBgYGJhc2gNCiMgYnVpbGRpbmcgdGhlIGltYWdlDQpkb2NrZXIgYnVpbGQgLXQgZGdnc19hcGlfc2VydmVyIC4NCg0KIyBzdGFydGluZyB1cCBhIGNvbnRhaW5lcg0KZG9ja2VyIHJ1biAtcCA4MDgwOjgwODAgZGdnc19hcGlfc2VydmVyDQpgYGANCg0KQSByZWNlbnQgZGVtbyBpbnN0YW5jZSB3aXRoIHRoZSBzcWxpdGUzIHRlc3QuZGIgaXMgcnVubmluZyBhdDogaHR0cHM6Ly9kZ2dzLWFwaS1ib3plYTNjc3BhLWV3LmEucnVuLmFwcC9kZ2dzLWFwaS8NCg== readmeEtag: '"d9046e6455564ec248f9f4fe71a27b895b4a5bdc"' readmeLastModified: Tue, 02 Sep 2025 09:12:00 GMT repositoryId: 378910222 description: >- Testing Python code generated servers for ogcapi-discrete-global-grid-systems created: '2021-06-21T11:39:33Z' updated: '2025-09-02T09:12:59Z' language: Jupyter Notebook archived: true stars: 1 watchers: 1 forks: 0 owner: allixender logo: https://avatars.githubusercontent.com/u/4483885?v=4 repoEtag: '"2c589fffd407a555c5f5574d4ea2ba50c0f78316961fc70654a14b4c6ba98f76"' repoLastModified: Tue, 02 Sep 2025 09:12:59 GMT foundInMaster: true category: Server Implementations id: a69484dbdfba2f19352bbc6aa2284c34 - source: openapi3 tags repository: https://github.com/dabevlohn/rocketchat-roles v3: true id: e28802ede32b34f02a89bad6dbc94dd9 repositoryMetadata: base64Readme: >- IyBDcmVhdGUgY3VzdG9tIHZpZXdzIGZvciBSb2NrZXRDaGF0IGRhdGFiYXNlIGNvbGxlY3Rpb25zIChNb25nbykKCldlIHVzZSBSb2NrZXQgOikgd2ViIGZyYW1ld29yayB3cml0dGVuIGluIFJ1c3QKCk5vdyB3ZSBoYXZlIE9wZW5BUEkgZm9yIHJvbGVzICh0aGFua3MgdG8gYGp1aGFrdSAvIHV0b2lwYWApIGFuZCB3ZWIgaW50ZXJmYWNlIHVzaW5nIEhUTVggYW5kIFRlcmEgdGVtcGxhdGVzLgoKLS0tCgpgYGBzaGVsbApjdXJsIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC91c2Vycy8gfCBqcQpgYGAKCmBgYGpzb24KWwogIHsKICAgICJfaWQiOiAicm9ja2V0LmNhdCIsCiAgICAicm9sZXMiOiBbCiAgICAgICJib3QiCiAgICBdLAogICAgInN0YXR1cyI6ICJvbmxpbmUiLAogICAgInVzZXJuYW1lIjogInJvY2tldC5jYXQiLAogICAgImFjdGl2ZSI6IHRydWUKICB9LAogIHsKICAgICJfaWQiOiAiRzdSWEtYYTN3OXBNbjNSTXQiLAogICAgInJvbGVzIjogWwogICAgICAidXNlciIsCiAgICAgICJhZG1pbiIKICAgIF0sCiAgICAic3RhdHVzIjogIm9mZmxpbmUiLAogICAgInVzZXJuYW1lIjogImRwbCIsCiAgICAiYWN0aXZlIjogdHJ1ZQogIH0KXQpgYGAKCmBgYHNoZWxsCmN1cmwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Blcm1pc3Npb25zLyB8IGpxCmBgYAoKYGBganNvbgpbCiAgewogICAgIl9pZCI6ICJhY2Nlc3MtcGVybWlzc2lvbnMiLAogICAgInJvbGVzIjogWwogICAgICAiYWRtaW4iCiAgICBdCiAgfSwKICB7CiAgICAiX2lkIjogImFjY2Vzcy1tYXJrZXRwbGFjZSIsCiAgICAicm9sZXMiOiBbCiAgICAgICJhZG1pbiIsCiAgICAgICJ1c2VyIgogICAgXQogIH0sCiAgewogICAgIl9pZCI6ICJhY2Nlc3Mtc2V0dGluZy1wZXJtaXNzaW9ucyIsCiAgICAicm9sZXMiOiBbCiAgICAgICJhZG1pbiIKICAgIF0KICB9LAogIHsKICAgICJfaWQiOiAiYWRkLW9hdXRoLXNlcnZpY2UiLAogICAgInJvbGVzIjogWwogICAgICAiYWRtaW4iCiAgICBdCiAgfSwKICB7CiAgICAiX2lkIjogImFkZC11c2VyLXRvLWpvaW5lZC1yb29tIiwKICAgICJyb2xlcyI6IFsKICAgICAgImFkbWluIiwKICAgICAgIm93bmVyIiwKICAgICAgIm1vZGVyYXRvciIKICAgIF0KICB9LAogIHsKICAgICJfaWQiOiAiYWRkLXVzZXItdG8tYW55LWMtcm9vbSIsCiAgICAicm9sZXMiOiBbCiAgICAgICJhZG1pbiIKICAgIF0KICB9LAogIHsKICAgICJfaWQiOiAia2ljay11c2VyLWZyb20tYW55LWMtcm9vbSIsCiAgICAicm9sZXMiOiBbCiAgICAgICJhZG1pbiIKICAgIF0KICB9LAogIHsKICAgICJfaWQiOiAiYXBpLWJ5cGFzcy1yYXRlLWxpbWl0IiwKICAgICJyb2xlcyI6IFsKICAgICAgImFkbWluIiwKICAgICAgImJvdCIsCiAgICAgICJhcHAiCiAgICBdCiAgfSwKICB7CiAgICAiX2lkIjogImFyY2hpdmUtcm9vbSIsCiAgICAicm9sZXMiOiBbCiAgICAgICJhZG1pbiIsCiAgICAgICJvd25lciIKICAgIF0KICB9LAogIHsKICAgICJfaWQiOiAiYXNzaWduLWFkbWluLXJvbGUiLAogICAgInJvbGVzIjogWwogICAgICAiYWRtaW4iCiAgICBdCiAgfSwKICB7CiAgICAiX2lkIjogImFzc2lnbi1yb2xlcyIsCiAgICAicm9sZXMiOiBbCiAgICAgICJhZG1pbiIKICAgIF0KICB9LAogIHsKICAgICJfaWQiOiAiYmFuLXVzZXIiLAogICAgInJvbGVzIjogWwogICAgICAiYWRtaW4iLAogICAgICAib3duZXIiLAogICAgICAibW9kZXJhdG9yIgogICAgXQogIH0sCi4uLgpgYGAKCmBgYHNoZWxsCmN1cmwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3JvbGVzLyB8IGpxCmBgYAoKYGBganNvbgpbCiAgewogICAgIl9pZCI6ICJhZG1pbiIsCiAgICAic2NvcGUiOiAiVXNlcnMiLAogICAgIm5hbWUiOiAiYWRtaW4iCiAgfSwKICB7CiAgICAiX2lkIjogIm1vZGVyYXRvciIsCiAgICAic2NvcGUiOiAiU3Vic2NyaXB0aW9ucyIsCiAgICAibmFtZSI6ICJtb2RlcmF0b3IiCiAgfSwKICB7CiAgICAiX2lkIjogImxlYWRlciIsCiAgICAic2NvcGUiOiAiU3Vic2NyaXB0aW9ucyIsCiAgICAibmFtZSI6ICJsZWFkZXIiCiAgfSwKICB7CiAgICAiX2lkIjogIm93bmVyIiwKICAgICJzY29wZSI6ICJTdWJzY3JpcHRpb25zIiwKICAgICJuYW1lIjogIm93bmVyIgogIH0sCiAgewogICAgIl9pZCI6ICJ1c2VyIiwKICAgICJzY29wZSI6ICJVc2VycyIsCiAgICAibmFtZSI6ICJ1c2VyIgogIH0sCiAgewogICAgIl9pZCI6ICJib3QiLAogICAgInNjb3BlIjogIlVzZXJzIiwKICAgICJuYW1lIjogImJvdCIKICB9LAogIHsKICAgICJfaWQiOiAiYXBwIiwKICAgICJzY29wZSI6ICJVc2VycyIsCiAgICAibmFtZSI6ICJhcHAiCiAgfSwKICB7CiAgICAiX2lkIjogImd1ZXN0IiwKICAgICJzY29wZSI6ICJVc2VycyIsCiAgICAibmFtZSI6ICJndWVzdCIKICB9LAogIHsKICAgICJfaWQiOiAiYW5vbnltb3VzIiwKICAgICJzY29wZSI6ICJVc2VycyIsCiAgICAibmFtZSI6ICJhbm9ueW1vdXMiCiAgfSwKICB7CiAgICAiX2lkIjogImxpdmVjaGF0LWFnZW50IiwKICAgICJzY29wZSI6ICJVc2VycyIsCiAgICAibmFtZSI6ICJsaXZlY2hhdC1hZ2VudCIKICB9LAogIHsKICAgICJfaWQiOiAibGl2ZWNoYXQtbWFuYWdlciIsCiAgICAic2NvcGUiOiAiVXNlcnMiLAogICAgIm5hbWUiOiAibGl2ZWNoYXQtbWFuYWdlciIKICB9LAogIHsKICAgICJfaWQiOiAibGl2ZWNoYXQtbW9uaXRvciIsCiAgICAic2NvcGUiOiAiVXNlcnMiLAogICAgIm5hbWUiOiAibGl2ZWNoYXQtbW9uaXRvciIKICB9Cl0KYGBgCg== readmeEtag: '"a6a406a117a93b8707b897442409c08dc575ca58"' readmeLastModified: Sun, 22 Sep 2024 06:40:25 GMT repositoryId: 795627333 description: RocketChat roles and permissions research created: '2024-05-03T17:22:26Z' updated: '2024-11-18T10:19:47Z' language: Rust archived: false stars: 1 watchers: 1 forks: 0 owner: dabevlohn logo: https://avatars.githubusercontent.com/u/144282650?v=4 repoEtag: '"644e826d6d95695578e008cd6ad4555502312b22023c1f30f919126238bbc19e"' repoLastModified: Mon, 18 Nov 2024 10:19:47 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/traefik/hub v3: true id: 055ce36733aaa4fb20b0e349443e94ea repositoryMetadata: base64Readme: >- IyBUcmFlZmlrIEh1YgoKPGRpdiBhbGlnbj0iY2VudGVyIiBzdHlsZT0ibWFyZ2luOiAzMHB4OyI+CjxhIGhyZWY9Imh0dHBzOi8vaHViLnRyYWVmaWsuaW8vIj4KICA8aW1nIHNyYz0iaHR0cHM6Ly9kb2MudHJhZWZpay5pby90cmFlZmlrLWh1Yi9pbWcvdHJhZWZpay1odWItbG9nby5zdmciIHN0eWxlPSJ3aWR0aDoyNTBweDsiIGFsaWduPSJjZW50ZXIiIC8+CjwvYT4KPGJyIC8+CjxiciAvPgoKPGRpdiBhbGlnbj0iY2VudGVyIj4KICAgIDxhIGhyZWY9Imh0dHBzOi8vaHViLnRyYWVmaWsuaW8iPkxvZyBJbjwvYT4gfAogICAgPGEgaHJlZj0iaHR0cHM6Ly9kb2MudHJhZWZpay5pby90cmFlZmlrLWh1YiI+RG9jdW1lbnRhdGlvbjwvYT4KPC9kaXY+CjwvZGl2PgoKPGJyIC8+Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPjxzdHJvbmc+VHJhZWZpayBIdWI8L3N0cm9uZz4KCjxiciAvPgo8YnIgLz4KPC9kaXY+Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPldlbGNvbWUgdG8gdGhpcyByZXBvc2l0b3J5ITwvZGl2PgoKIyMgOmluZm9ybWF0aW9uX3NvdXJjZTogQWJvdXQKClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyBzb3VyY2UgY29kZSBzaG93aW5nIGhvdyB0byB1c2U6CgoxLiBUcmFlZmlrIEh1YiBBUEkgR2F0ZXdheQoyLiBUcmFlZmlrIEh1YiBBUEkgTWFuYWdlbWVudAoKCiMjIDphbGVtYmljOiBBUElzIHVzZWQgaW4gdGhpcyByZXBvc2l0b3J5CgpBbGwgQVBJcyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgYSB0aW55IEpTT04gc2VydmVyIGluIEdvOyB0aGUgc291cmNlIGNvZGUgaXMgW2hlcmVdKC4vc3JjL2FwaS1zZXJ2ZXIpLgoKVGhpcyBKU09OIHNlcnZlciBpcyB1c2VkIHRvIGRlcGxveSBKU09OIEFQSXMgdXNpbmcgYSBjb25maWdtYXAuCgpUaGUgS3ViZXJuZXRlcyBtYW5pZmVzdHMgKFlBTUwpIHRvIGRlcGxveSB0aG9zZSBhcHBzIGFyZSBbaGVyZV0oLi9zcmMvbWFuaWZlc3RzKS4KCiMjIDpjb25zdHJ1Y3Rpb25fd29ya2VyOiBXaGVyZSB0byBzdGFydCA/CgpUaGUgam91cm5leSBjYW4gc3RhcnQgW2hlcmVdKFdBTEtUSFJPVUdILm1kKSBmb3IgYSBxdWlja3N0YXJ0IHdpdGggYSBnbG9iYWwgb3ZlcnZpZXcKCiMjIPCfk5IgUmVwb3NpdG9yeSBTdHJ1Y3R1cmUKCmBgYHNoZWxsCi4K4pSc4pSA4pSAIGFwaS1nYXRld2F5ICAgICAgICAgICAgICAgICAgICAgICAjIFRyYWVmaWsgSHViIEFQSSBHYXRld2F5IHR1dG9yaWFscwrilILCoMKgIOKUnOKUgOKUgCAxLWdldHRpbmctc3RhcnRlZCAgIyBBUEkgR2F0ZXdheSBRdWljayBTdGFydCBHdWlkZQrilILCoMKgIOKUnOKUgOKUgCAyLWV4cG9zZQrilILCoMKgIOKUnOKUgOKUgCAzLXNlY3VyZS1hcHBsaWNhdGlvbnMK4pSc4pSA4pSAIGFwaS1tYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICAjIFRyYWVmaWsgSHViIEFQSSBNYW5hZ2VtZW50IHR1dG9yaWFscwrilILCoMKgIOKUnOKUgOKUgCAxLWdldHRpbmctc3RhcnRlZCAjIEFQSSBNYW5hZ2VtZW50IFF1aWNrIFN0YXJ0IEd1aWRlCuKUlOKUgOKUgCBzcmMKIMKgwqAg4pSc4pSA4pSAIGFwaS1zZXJ2ZXIgICAgICAgICAgICAgICAgICAgICMgQVBJIHNlcnZlciBzb3VyY2UgY29kZQogwqDCoCDilJTilIDilIAgbWFuaWZlc3RzICAgICAgICAgICAgICAgICAgICAgIyBZYW1sIHRvIGRlcGxveSBhbGwgYXBwcwpgYGAK readmeEtag: '"80c7e839feb1975f5c5097c7bb95b4d62d63ee01"' readmeLastModified: Thu, 18 Sep 2025 06:30:04 GMT repositoryId: 335312873 description: Traefik Hub Tutorials created: '2021-02-02T14:18:58Z' updated: '2025-09-18T06:30:09Z' language: Go archived: false stars: 4 watchers: 7 forks: 10 owner: traefik logo: https://avatars.githubusercontent.com/u/14280338?v=4 license: Apache-2.0 repoEtag: '"58becca9a409a228ecb7eb309cc4eb9847434502bf8ac84860e4a4ad50c03dea"' repoLastModified: Thu, 18 Sep 2025 06:30:09 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/justedlev/bridgewayhub v3: true id: af0bcffeb9100735d4b9e67241d85444 repositoryMetadata: base64Readme: >- PGRpdiBpZD0iaGVhZGVyIiBhbGlnbj0iY2VudGVyIj4KICAgIDxoMT5CcmlkZ2VXYXkgSHViPC9oMT4KICAgIDxoMz7wn6exIEFQSSBHYXRld2F5PC9oMz4KPC9kaXY+Cgo8ZGl2IGlkPSJiYWRnZXMiIGFsaWduPSJjZW50ZXIiPgoKWyFbbGFuZ3VhZ2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvSmF2YSUyMDE3LWU2ODkyZS5zdmc/bG9nbz1vcGVuamRrJmxvZ29Db2xvcj13aGl0ZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9qdXN0ZWRsZXYvYnJpZGdld2F5aHViKQpbIVtmcmFtZXdvcmtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU3ByaW5nJTIwQm9vdCUyMDMtNkRCMzNGLnN2Zz9sb2dvPXNwcmluZ2Jvb3QmbG9nb0NvbG9yPXdoaXRlKV0oaHR0cHM6Ly9kb2NzLnNwcmluZy5pby9zcHJpbmctYm9vdC9pbmRleC5odG1sKQpbIVtEb2NrZXIgSW1hZ2UgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvdi9qdXN0ZWRsZXYvYnJpZGdld2F5aHViP2xvZ289ZG9ja2VyJmxhYmVsPWJyaWRnZXdheWh1YildKGh0dHBzOi8vaHViLmRvY2tlci5jb20vcmVwb3NpdG9yeS9kb2NrZXIvanVzdGVkbGV2L2JyaWRnZXdheWh1YikKWyFbbGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9qdXN0ZWRsZXYvYnJpZGdld2F5aHViKV0oaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMC50eHQpClshW3N0YXJzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9zdGFycy9qdXN0ZWRsZXYvYnJpZGdld2F5aHViKV0oaHR0cHM6Ly9naXRodWIuY29tL2p1c3RlZGxldi9icmlkZ2V3YXlodWIvc3RhcikKWyFbaXNzdWVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9pc3N1ZXMvanVzdGVkbGV2L2JyaWRnZXdheWh1YildKGh0dHBzOi8vZ2l0aHViLmNvbS9qdXN0ZWRsZXYvYnJpZGdld2F5aHViL2lzc3VlcykKCjwvZGl2PgoKIyMg8J+TiyBBYm91dAoKX19CcmlkZ2VXYXkgSHViX18gZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBgQVBJIEdhdGV3YXlgIGJhc2VkIG9uIGBTcHJpbmcgQm9vdCAzYCwgYEtleWNsb2FrYCBhcyBhIHNlY3VyaXR5IGxheWVyCmFuZCBgRXVyZWthIENsaWVudGAgYXMgc2VydmljZSByZWdpc3RyeSwgaW4gbWljcm9zZXJ2aWNlIGFyY2hpdGVjdHVyZSwgZGV0YWlsZWQgY29uZmlndXJhdGlvbiB3aWxsIGRlcGVuZCBkaXJlY3RseSBvbgphZGRpdGlvbmFsIGJ1c2luZXNzIHJlcXVpcmVtZW50cyBhbmQgaXMgYXBwbGllZCBpbiB0aGUgYXBwbGljYXRpb24KcHJvcGVydGllcy4gW0ZvciBtb3JlIGRldGFpbHNdKGh0dHBzOi8vZG9jcy5zcHJpbmcuaW8vc3ByaW5nLWNsb3VkLWdhdGV3YXkvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS9odG1sLykKCiMjIPCfp74gUmVmZXJlbmNlcwoKLSBbRXh0ZXJuYWxpemVkIENvbmZpZ3VyYXRpb25dKGh0dHBzOi8vZG9jcy5zcHJpbmcuaW8vc3ByaW5nLWJvb3QvcmVmZXJlbmNlL2ZlYXR1cmVzL2V4dGVybmFsLWNvbmZpZy5odG1sI2ZlYXR1cmVzLmV4dGVybmFsLWNvbmZpZy50eXBlc2FmZS1jb25maWd1cmF0aW9uLXByb3BlcnRpZXMucmVsYXhlZC1iaW5kaW5nLmVudmlyb25tZW50LXZhcmlhYmxlcykKLSBbRG9ja2VyIENMSV0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vcmVmZXJlbmNlL2NsaS9kb2NrZXIvY29tcG9zZS8pCi0gW0tleWNsb2FrIG9uIERvY2tlcl0oaHR0cHM6Ly93d3cua2V5Y2xvYWsub3JnL2dldHRpbmctc3RhcnRlZC9nZXR0aW5nLXN0YXJ0ZWQtZG9ja2VyKQotIFtQb3N0Z3JlcyBvbiBEb2NrZXJdKGh0dHBzOi8vaHViLmRvY2tlci5jb20vXy9wb3N0Z3JlcykKCiMjIOKaoO+4jyBSZXF1aXJlbWVudHMKCkJlZm9yZSBydW5uaW5nIHRoZSBhcHAgeW91IG5lZWQgdG8gY29uZmlndXJlIHRoZSBuZXh0IHNlcnZpY2VzIHRoYXQgZGVwZW5kcyBvbjoKCi0gS2V5Y2xvYWsgLSBzZWN1cml0eSBsYXllcgotIERCIGZvciBLZXljbG9hayBgb3B0aW9uYWxgCi0gRXVyZWthIFNlcnZlciwgbXkgW3NvbHV0aW9uXShodHRwczovL2dpdGh1Yi5jb20vSnVzdGVkbGV2L3NpbXBsZS1ldXJla2Etc2VydmVyKSBgb3B0aW9uYWxgCgojIyDilrbvuI8gUnVuCgojIyMgPGEgaHJlZj0iIyI+PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9KZXRCcmFpbnMvbG9nb3MvcmF3L3JlZnMvaGVhZHMvbWFzdGVyL3dlYi9pbnRlbGxpai1pZGVhL2ludGVsbGlqLWlkZWEuc3ZnIiB3aWR0aD0iMjAiLz48L2E+IEludGVsbGlqCgpUbyBydW4gdGhlIGFwcCB5b3UgY2FuIHVzZSBzaW1wbGUgcnVuIGNvbmZpZ3VyYXRpb24gKEludGVsbGlqIElERUEpLCB0aGF0IGJhc2VkIG9uIFsuZW52XSguZW52KQphbmQgW2p2bSBvcHRpb25zXSgudm1vcHRpb25zKQoKYGBgeG1sCjxjb21wb25lbnQgbmFtZT0iUHJvamVjdFJ1bkNvbmZpZ3VyYXRpb25NYW5hZ2VyIj4KICAgIDxjb25maWd1cmF0aW9uIGRlZmF1bHQ9ImZhbHNlIiBuYW1lPSJEZWZhdWx0IiB0eXBlPSJTcHJpbmdCb290QXBwbGljYXRpb25Db25maWd1cmF0aW9uVHlwZSIKICAgICAgICAgICAgICAgICAgIGZhY3RvcnlOYW1lPSJTcHJpbmcgQm9vdCI+CiAgICAgICAgPG9wdGlvbiBuYW1lPSJlbnZGaWxlUGF0aHMiPgogICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkLy5lbnYiLz4KICAgICAgICA8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIG5hbWU9IkZSQU1FX0RFQUNUSVZBVElPTl9VUERBVEVfUE9MSUNZIiB2YWx1ZT0iVXBkYXRlQ2xhc3Nlc0FuZFJlc291cmNlcyIvPgogICAgICAgIDxtb2R1bGUgbmFtZT0iYnJpZGdld2F5aHViIi8+CiAgICAgICAgPHNlbGVjdGVkT3B0aW9ucz4KICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJlbnZpcm9ubWVudFZhcmlhYmxlcyIvPgogICAgICAgIDwvc2VsZWN0ZWRPcHRpb25zPgogICAgICAgIDxvcHRpb24gbmFtZT0iU1BSSU5HX0JPT1RfTUFJTl9DTEFTUyIgdmFsdWU9ImlvLmdpdGh1Yi5qdXN0ZWRsZXYuYnJpZGdld2F5LkJyaWRnZVdheUh1YkFwcGxpY2F0aW9uIi8+CiAgICAgICAgPG9wdGlvbiBuYW1lPSJWTV9QQVJBTUVURVJTIiB2YWx1ZT0iQC52bW9wdGlvbnMiLz4KICAgICAgICA8bWV0aG9kIHY9IjIiPgogICAgICAgICAgICA8b3B0aW9uIG5hbWU9Ik1ha2UiIGVuYWJsZWQ9InRydWUiLz4KICAgICAgICA8L21ldGhvZD4KICAgIDwvY29uZmlndXJhdGlvbj4KPC9jb21wb25lbnQ+CmBgYAoKPiBbIVdBUk5JTkddCj4KPiBNYWtlIHN1cmUgdGhhdCB0aGUgbmV4dCBzZXJ2aWNlcyBhbHJlYWR5IHN0YXJ0ZWQKPiAKPiAtIFNlcnZpY2UgUmVnaXN0cnkgKGV1cmVrYSBzZXJ2ZXIpCj4gLSBLZXljbG9hayBzZXJ2ZXIKPiAtIFBvc3RncmVzIERCCgo+IFshTk9URV0KPgo+IFRoZSBTZXJ2aWNlIFJlZ2lzdHJ5IChEaXNjb3ZlcnkgU2VydmljZSkgY2FuIGJlIGRpc2FibGVkIGJ5IHVzaW5nIHRoZSBwcm9wZXJ0aWVzIGlmIG5lZWRlZAo+IAo+IGBgYHltbCAKPiBzcHJpbmc6Cj4gICBjbG91ZDoKPiAgICAgZGlzY292ZXJ5Ogo+ICAgICAgIGVuYWJsZWQ6IGZhbHNlCj4gZXVyZWthOgo+ICAgY2xpZW50Ogo+ICAgICBlbmFibGVkOiBmYWxzZQo+IGBgYAoKPiBbIVRJUF0KPgo+IFlvdSBjYW4gYWxzbyBkaXNhYmxlIGl0IGluIFsudm1vcHRpb25zXSgudm1vcHRpb25zKSwganVzdCBhZGRpbmcgdGhlIGVudnMKPiAKPiBgYGAKPiAtRHNwcmluZy5jbG91ZC5kaXNjb3ZlcnkuZW5hYmxlZD1mYWxzZQo+IC1EZXVyZWthLmNsaWVudC5lbmFibGVkPWZhbHNlCj4gYGBgCj4gCj4gT1IKPgo+IFlvdSBjYW4gYWRkIHRoZSBlbnYgcHJvcHMgdG8gdGhlIFsuZW52XSguZW52KQo+IAo+IGBgYAo+IFNQUklOR19DTE9VRF9ESVNDT1ZFUllfRU5BQkxFRD1mYWxzZQo+IEVVUkVLQV9DTElFTlRfRU5BQkxFRD1mYWxzZQo+IGBgYAoKIyMjIPCfkLMgRG9ja2VyCgpGaXJzdCBidWlsZCB5b3VyIGFtYXppbmcg8J+YgSBgZG9ja2VyIGNvbXBvc2VgIGZpbGUgYW5kIHRoZW4gcnVuIHVzaW5nIHRoZSBiZWxvdyBjbWQKCmBgYHNoZWxsCmRvY2tlciBjb21wb3NlIGJ1aWxkIC1kCmBgYAoKPiBbIVRJUF0KPiAKPiBJIGFscmVhZHkgcHJlcGFyZWQgc29tZSBpbWFnZSBvbiBb8J+QsyBkb2NrZXIgaHViXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3JlcG9zaXRvcnkvZG9ja2VyL2p1c3RlZGxldi9icmlkZ2V3YXlodWIpCgojIyMjIPCfk50gRG9ja2VyIGNvbXBvc2UKClNpbXBsZSBjb21tYW5kIHRvIHJ1biB0aGUgY29udGFpbmVyOgoKYGBgc2hlbGwKZG9ja2VyIGNvbXBvc2UgdXAgLWQgLS1idWlsZApgYGAKClRoZSBmdWxsIFtjb21wb3NlLnlhbWxdKGRvY2tlci9jb21wb3NlLnlhbWwpIHRoYXQgSSBwZXJzb25hbGx5IHVzZQoKYGBgeW1sCm5hbWU6IGp1c3RlZGxldi1tc3J2CnNlcnZpY2VzOgogICMgQVBJIEdhdGV3YXkKICBhcGktZ2F0ZXdheS5qdXN0ZWRsZXY6CiAgICB0dHk6IHRydWUKICAgIGVudl9maWxlOgogICAgICAtIC5lbnYKICAgIGNvbnRhaW5lcl9uYW1lOiBicmlkZ2V3YXlodWIKICAgIGltYWdlOiBqdXN0ZWRsZXYvYnJpZGdld2F5aHViOmxhdGVzdAogICAgYnVpbGQ6CiAgICAgIGNvbnRleHQ6IC4KICAgIHBvcnRzOgogICAgICAtICIke1NFUlZFUl9QT1JUfToke1NFUlZFUl9QT1JUfSIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OiBbICJDTUQiLCAiY3VybCIsICItayIsICItZiIsICJodHRwOi8vbG9jYWxob3N0OiR7U0VSVkVSX1BPUlR9L2FjdHVhdG9yL2hlYWx0aCIgXQogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiA1CiAgICAgIHN0YXJ0X3BlcmlvZDogMzBzCiAgICBkZXBlbmRzX29uOgogICAgICBhdXRoLXNlcnZlci5qdXN0ZWRsZXY6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX3N0YXJ0ZWQKICAgICAgc2VydmljZS1kaXNjb3ZlcnkuanVzdGVkbGV2OgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIGNvbmZpZy1zZXJ2ZXIuanVzdGVkbGV2OgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICB2b2x1bWVzOgogICAgICAtIC4vbG9nczoke0xPR0dJTkdfRklMRV9QQVRIfQogICAgZGVwbG95OgogICAgICByZXNvdXJjZXM6CiAgICAgICAgbGltaXRzOgogICAgICAgICAgY3B1czogIjIiCiAgICAgICAgICBtZW1vcnk6IDFHQgoKICAjIFNlcnZpY2UgZGlzY292ZXJ5CiAgc2VydmljZS1kaXNjb3ZlcnkuanVzdGVkbGV2OgogICAgdHR5OiB0cnVlCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWRVJfUE9SVD0ke1NFUlZFUl9QT1JUfQogICAgICAtIFNQUklOR19BUFBMSUNBVElPTl9OQU1FPXNlcnZpY2UtZGlzY292ZXJ5CiAgICAgIC0gU1BSSU5HX1NFQ1VSSVRZX1VTRVJfTkFNRT17ZXhhbXBsZX0KICAgICAgLSBTUFJJTkdfU0VDVVJJVFlfVVNFUl9QQVNTV09SRD17ZXhhbXBsZX0KICAgICAgLSBTUFJJTkdfU0VDVVJJVFlfVVNFUl9ST0xFUz17ZXhhbXBsZX0KICAgICAgLSBFVVJFS0FfSU5TVEFOQ0VfSE9TVE5BTUU9c2VydmljZS1kaXNjb3ZlcnkKICAgICAgLSBFVVJFS0FfQ0xJRU5UX1NFUlZJQ0VfVVJMX0RFRkFVTFRaT05FPWh0dHA6Ly97ZXhhbXBsZX06e2V4YW1wbGV9QHNlcnZpY2UtZGlzY292ZXJ5Lmp1c3RlZGxldi5jb206JHtTRVJWRVJfUE9SVH0vZXVyZWthLwogICAgICAtIExPR0dJTkdfRklMRV9QQVRIPS92YXIvbG9nCiAgICBjb250YWluZXJfbmFtZTogJHtTUlZSRUdfQVBQX05BTUV9CiAgICBpbWFnZToganVzdGVkbGV2L3NpbXBsZS1ldXJla2Etc2VydmVyOmxhdGVzdAogICAgcG9ydHM6CiAgICAgIC0gIiR7U0VSVkVSX1BPUlR9OiR7U0VSVkVSX1BPUlR9IgogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6IFsgIkNNRCIsICJjdXJsIiwgIi1rIiwgIi1mIiwgImh0dHA6Ly9sb2NhbGhvc3Q6JHtTRVJWRVJfUE9SVH0vYWN0dWF0b3IvaGVhbHRoIiBdCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDUKICAgICAgc3RhcnRfcGVyaW9kOiAxMHMKICAgIGRlcGVuZHNfb246CiAgICAgIGNvbmZpZy1zZXJ2ZXIuanVzdGVkbGV2OgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICB2b2x1bWVzOgogICAgICAtIC4vbG9ncy9zZXJ2aWNlLWRpc2NvdmVyeTovdmFyL2xvZwogICAgZGVwbG95OgogICAgICByZXNvdXJjZXM6CiAgICAgICAgbGltaXRzOgogICAgICAgICAgY3B1czogIjIiCiAgICAgICAgICBtZW1vcnk6IDFHQgoKICAjIFNTTyBzZXJ2aWNlIChrZXljbG9haykKICBzc286CiAgICBjb250YWluZXJfbmFtZToga2V5Y2xvYWsKICAgIGltYWdlOiBxdWF5LmlvL2tleWNsb2FrL2tleWNsb2FrOjI1LjAuNgogICAgY29tbWFuZDogWyAic3RhcnQtZGV2IiBdCiAgICBlbnZpcm9ubWVudDoKICAgICAgS0VZQ0xPQUtfQURNSU46ICJ7ZXhhbXBsZX0iCiAgICAgIEtFWUNMT0FLX0FETUlOX1BBU1NXT1JEOiAie2V4YW1wbGV9IgogICAgICBLQ19IRUFMVEhfRU5BQkxFRDogdHJ1ZQogICAgICBLQ19IT1NUTkFNRTogbG9jYWxob3N0CiAgICAgIEtDX0RCOiBwb3N0Z3JlcwogICAgICBLQ19EQl9VUkw6IGpkYmM6cG9zdGdyZXNxbDovL3Bvc3RncmVzOjU0MzIve2V4YW1wbGV9CiAgICAgIEtDX0RCX1VTRVJOQU1FOiAie2V4YW1wbGV9IgogICAgICBLQ19EQl9QQVNTV09SRDogIntleGFtcGxlfSIKICAgICAgS0NfREJfU0NIRU1BOiBrZXljbG9hawogICAgZGVwZW5kc19vbjoKICAgICAgLSBwb3N0Z3JlcwogICAgcG9ydHM6CiAgICAgIC0gIjkzMjE6ODA4MCIKCiAgIyBQb3N0Z3JlcyBEQgogIHBvc3RncmVzOgogICAgY29udGFpbmVyX25hbWU6IHBvc3RncmVzCiAgICBpbWFnZTogcG9zdGdyZXM6MTYuNC1hbHBpbmUKICAgIGVudmlyb25tZW50OgogICAgICBQT1NUR1JFU19EQjogIntleGFtcGxlfSIKICAgICAgUE9TVEdSRVNfVVNFUjogIntleGFtcGxlfSIKICAgICAgUE9TVEdSRVNfUEFTU1dPUkQ6ICJ7ZXhhbXBsZX0iCiAgICB2b2x1bWVzOgogICAgICAtIGRiLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhCiAgICAgIC0gLy5kYjovZG9ja2VyLWVudHJ5cG9pbnQtaW5pdGRiLmQKICAgIHBvcnRzOgogICAgICAtICI1NDMyOjU0MzIiCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDogWyAiQ01EIiwgInBnX2lzcmVhZHkiLCAiLVUiLCAiJHtQT1NUR1JFU19VU0VSfSIsICItZCIgXQogICAgICBpbnRlcnZhbDogMTVzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiA1CiAgICAgIHN0YXJ0X3BlcmlvZDogMTJzCiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZAogICAgZGVwbG95OgogICAgICByZXNvdXJjZXM6CiAgICAgICAgbGltaXRzOgogICAgICAgICAgY3B1czogIjEiCiAgICAgICAgICBtZW1vcnk6IDI1ME1CCgp2b2x1bWVzOgogIGRiLWRhdGE6CmBgYAo= readmeEtag: '"9833ff00a5c7aa644a9db84d35d785ca5118c2ce"' readmeLastModified: Sat, 18 Oct 2025 15:02:28 GMT repositoryId: 786112920 description: 🚧 API Gateway created: '2024-04-13T13:22:10Z' updated: '2025-12-28T19:44:38Z' language: Java archived: false stars: 3 watchers: 1 forks: 0 owner: justedlev logo: https://avatars.githubusercontent.com/u/59051661?v=4 license: Apache-2.0 repoEtag: '"44484441afbd9e0e818576097247cef4cb93141d56404ded4a075c0cb47d3bd3"' repoLastModified: Sun, 28 Dec 2025 19:44:38 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/owainlewis/openapi v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJCgpIYXNrZWxsIHR5cGVzIGZvciB3b3JraW5nIHdpdGggYW5kIG1hbmlwdWxhdGluZyBPcGVuQVBJIHNwZWNpZmljYXRpb24gZG9jdW1lbnRzLgo= readmeEtag: '"e6218aeac6d357cd500e5aa2d6ce15bd1664c856"' readmeLastModified: Sat, 02 Nov 2019 20:23:26 GMT repositoryId: 216896190 description: >- Parse, manipulate and construct OpenAPI specification documents using Haskell created: '2019-10-22T19:42:07Z' updated: '2023-09-08T17:59:22Z' language: Haskell archived: false stars: 1 watchers: 1 forks: 0 owner: owainlewis logo: https://avatars.githubusercontent.com/u/733944?v=4 license: BSD-3-Clause repoEtag: '"f218fb66861842fd7a7794c5f4765b2b80277356862a9ba26ccc25dc5b7ffce2"' repoLastModified: Fri, 08 Sep 2023 17:59:22 GMT foundInMaster: true category: Parsers id: 6fc09913925582445df2c5f3949bd738 - source: openapi3 tags repository: https://github.com/karthikairam/account-transaction-service v3: true id: 525b82762c7e108c88a0c9d3d3c42738 repositoryMetadata: base64Readme: >- IVtKYXZhIENJIHdpdGggTWF2ZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJ0aGlrYWlzZWx2YW4vYWNjb3VudC10cmFuc2FjdGlvbi1zZXJ2aWNlL3dvcmtmbG93cy9KYXZhJTIwQ0klMjB3aXRoJTIwTWF2ZW4vYmFkZ2Uuc3ZnKSAhW01hdmVuIFBhY2thZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJ0aGlrYWlzZWx2YW4vYWNjb3VudC10cmFuc2FjdGlvbi1zZXJ2aWNlL3dvcmtmbG93cy9NYXZlbiUyMFBhY2thZ2UvYmFkZ2Uuc3ZnKSAhW0RvY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL2thcnRoaWthaXNlbHZhbi9hY2NvdW50LXRyYW5zYWN0aW9uLXNlcnZpY2Uvd29ya2Zsb3dzL0RvY2tlci9iYWRnZS5zdmcpIAoKIyBNaWNyb3NlcnZpY2U6IGFjY291bnQtdHJhbnNhY3Rpb24tc2VydmljZQpUaGlzIGlzIGEgZGVtbyBtaWNyb3NlcnZpY2UgZm9yIHRoZSBhY2NvdW50IHRyYW5zYWN0aW9uIGFzIHBhcnQgb2YgbW9iaWxlIGNoYWxsZW5nZXJzIGJhbmtpbmcuCgojIyMgVGVjaCBzdGFjayB1c2VkOgoxLiBKYXZhIDExCjIuIFNwcmluZyBCb290IDIuNC4xCjMuIFNwcmluZyBSRVNUIEFQSSAoU3ByaW5nIFdlYikKNC4gTG9tYm9rIDEuMTguMTYKNS4gU3ByaW5nIERhdGEgSlBBICYgSDIgaW4tbWVtb3J5IGRhdGFiYXNlIChleHBvc2VkIHRoZSBjbGllbnQgZGFzaGJvYXJkIHRvIHNlZSB0aGUgcmVjb3JkcykKNi4gc3ByaW5nZG9jLW9wZW5hcGktdWkgLSBBdXRvIGdlbmVyYXRlZCBBUEkgZG9jdW1lbnRhdGlvbiB1c2luZyBPcGVuQVBJIDMuMCBhbmQgZXhwb3NlZCBTd2FnZ2VyIFVJIGZvciB0aGUgc2FtZSAoUmVmZXIgdGhlIGxpbmsgYXQgdGhlIGJvdHRvbSBvZiB0aGlzIHBhZ2UpCjcuIERvY2tlcml6ZWQgKERvY2tlcmZpbGUgaXMgaW5jbHVkZWQgYW5kIHVzZWQgdGhlIGxhdGVzdCBjb25jZXB0IGNhbGxlZCBtdWx0aS1sYXllcmVkIGltYWdlIGJ1aWxkaW5nIGZvciBvcHRpbWl6ZWQgYnVpbGQgdGltZSkKOC4gVEREIGFwcHJvYWNoIHVzaW5nIEpVbml0IDUsIE1vY2tpdG8sIGFuZCBTcHJpbmcgQm9vdCBUZXN0CjkuIEphQ29DbyBmb3IgY29kZSBjb3ZlcmFnZQoxMC4gU3ByaW5nIGJvb3Qgc3RhcnRlciB2YWxpZGF0aW9uIGZvciByZXF1ZXN0IHZhbGlkYXRpb24gIAoKLS0tCiMjIyBKYUNvQ28gY29kZSBjb3ZlcmFnZSBpczogYGBgIDEwMCAlIGBgYCAgCiFbSmFDb0NvX1JlcG9ydCBpbWcgbWlzc2luZ10oaHR0cHM6Ly9naXRodWIuY29tL2thcnRoaWthaXNlbHZhbi9hY2NvdW50LXRyYW5zYWN0aW9uLXNlcnZpY2UvYmxvYi9tYWluL2ltZy9KYUNvQ29fUmVwb3J0LmpwZz9yYXc9dHJ1ZSkgIAoKLS0tCiMjIyBTdGVwcyB0byBidWlsZCB0aGUgRG9ja2VyIEltYWdlOgojIyMjIyBTdGVwIDE6IEVudGVyIHRoZSBwcm9qZWN0IGRpcmVjdG9yeSwgCiAgICBjZCA8cHJvamVjdF9kaXJlY3Rvcnk+CgojIyMjIyBTdGVwIDI6IFRvIGNsZWFuIGFuZCBwYWNrYWdlIHRoZSBtaWNyby1zZXJ2aWNlIGxvY2FsbHkKICAgIG12biBjbGVhbiBwYWNrYWdlCiAKIyMjIyMgU3RlcCAzOiBCdWlsZCB0aGUgZG9ja2VyIGltYWdlIGFuZCBzdG9yZSBpdCBpbiBhIGxvY2FsIHJlcG9zaXRvcnkgKERvY2tlcmZpbGUgaXMgdGhlcmUgaW4gdGhlIHJvb3Qgb2YgdGhlIGRpcmVjdG9yeSBpdHNlbGYpCiAgICBkb2NrZXIgYnVpbGQgLiAtLXRhZyBhY2NvdW50LXRyYW5zYWN0aW9uLXNlcnZpY2UKCiMjIyMjIFN0ZXAgNDogUnVuIHRoZSBtaWNyby1zZXJ2aWNlIGFzIGEgY29udGFpbmVyIGluIHRoZSBkb2NrZXI6CiAgICBkb2NrZXIgcnVuIC1pdCAtcCA4MDgwOjgwODAgYWNjb3VudC10cmFuc2FjdGlvbi1zZXJ2aWNlOmxhdGVzdAoKTm90ZTogSSBoYXZlIHVzZWQgbXVsdGktbGF5ZXJlZCBhcHByb2FjaCBpbiBkb2NrZXIgYW5kIHNwcmluZy4KCi0tLQojIyMgT3BlbkFQSSAzLjAgRG9jdW1lbnRhdGlvbiBVUkw6IApodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS9pbmRleC5odG1sP2NvbmZpZ1VybD0vdjMvYXBpLWRvY3Mvc3dhZ2dlci1jb25maWcgIAohW0FQSV9Eb2N1bWVudGF0aW9uIGltZyBtaXNzaW5nXShodHRwczovL2dpdGh1Yi5jb20va2FydGhpa2Fpc2VsdmFuL2FjY291bnQtdHJhbnNhY3Rpb24tc2VydmljZS9ibG9iL21haW4vaW1nL0FQSV9Eb2N1bWVudGF0aW9uLmpwZz9yYXc9dHJ1ZSkKCk5vdGU6IEFsc28gW1Bvc3RtYW4gQ29sbGVjdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL2thcnRoaWthaXNlbHZhbi9hY2NvdW50LXRyYW5zYWN0aW9uLXNlcnZpY2UvYmxvYi9tYWluL2FjY291bnQtdHJhbnNhY3Rpb24tc2VydmljZS5wb3N0bWFuX2NvbGxlY3Rpb24uanNvbikgaGFzIGJlZW4gcHVzaGVkIGludG8gdGhlIHJlcG9zaXRvcnkgZm9yIHlvdXIgcmVmZXJlbmNlLgoKLS0tCiMjIyBJbi1NZW1vcnkgRGF0YWJhc2UgRGFzaGJvYXJkOgpodHRwOi8vbG9jYWxob3N0OjgwODAvaDItY29uc29sZS9sb2dpbi5qc3AgICAKIVtIMl9EQl9Db25zb2xlIGltZyBtaXNzaW5nXShodHRwczovL2dpdGh1Yi5jb20va2FydGhpa2Fpc2VsdmFuL2FjY291bnQtdHJhbnNhY3Rpb24tc2VydmljZS9ibG9iL21haW4vaW1nL0gyX0RCX0NvbnNvbGUuanBnP3Jhdz10cnVlKQoKTm90ZTogVXNlcm5hbWUgYW5kIFBhc3N3b3JkIGZvciB0aGUgaW4tbWVtb3J5IEgyIGRhdGFiYXNlIGNhbiBiZSBzZXQgZGlmZmVyZW50bHkgYnkgcGFzc2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbmFtZWx5IGBgYERCX1VTRVJgYGAgYW5kIGBgYERCX1BXRGBgYCBpZiByZXF1aXJlZCwgZWxzZSBIMiBkYiBwcm92aWRlZCBkZWZhdWx0IHVzZXJuYW1lIGFuZCBwYXNzd29yZCB3aWxsIGJlIHVzZWQuIEZvciBtb3JlIGRldGFpbHMgcGxlYXNlIHJlZmVyOiBbYXBwbGljYXRpb24ueW1sXShodHRwczovL2dpdGh1Yi5jb20va2FydGhpa2Fpc2VsdmFuL2FjY291bnQtdHJhbnNhY3Rpb24tc2VydmljZS9ibG9iL21haW4vc3JjL21haW4vcmVzb3VyY2VzL2FwcGxpY2F0aW9uLnltbCNMMykKCi0tLQo= readmeEtag: '"6da22f219b8186d10310c0796142308ed599e23b"' readmeLastModified: Wed, 09 Feb 2022 18:18:26 GMT repositoryId: 327923839 description: >- This is a demo micro-service for account transaction as part of mobile challengers banking. created: '2021-01-08T14:22:37Z' updated: '2022-10-05T11:11:04Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: karthikairam logo: https://avatars.githubusercontent.com/u/10527779?v=4 repoEtag: '"c97ab3cc2db0f824ec8a67a601e4ef2f322251c28779fc995cb7bcea62a46f1e"' repoLastModified: Wed, 05 Oct 2022 11:11:04 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/onmax/openapi-graph-core v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJLWdyYXBoLWNvcmUKCkEgVFMgbGlicmFyeSB0byBtYW5hZ2UgbGFyZ2UgQVBJIHByb2plY3RzIGRlZmluZWQgYnkgT3BlbkFQSXYzIHNwZWNpZmljYXRpb24uCgojIyBJbnN0YWxsYXRpb24KCkp1c3QgcnVuCgo+IG5wbSBpbnN0YWxsIG9wZW5hcGktZ3JhcGgtY29yZQoKYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KCiMjIENMSQoKVGhpcyBgUkVBRE1FLm1kYCBpcyBvbmx5IGZvciB0aGUgQVBJIG9mIHRoaXMgbGlicmFyeS4gWW91IGNhbiBjaGVjayB0aGUgY2xpIHRvIHJ1biBpdCBpbiB0aGUgY29uc29sZSBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL29ubWF4L29wZW5BUEktZ3JhcGgtY2xpKQoKIyMgQVBJCgpPcGVuQVBJLWdyYXBoIHByb3ZpZGUgdHdvIG1ham9yIGNsYXNzZXMgdGhhdCBhcmUgYWNjZXNpYmxlIGNhbGxlZDogW2BPcGVuQVBJR3JhcGhzYF0oI09wZW5BUElHcmFwaHMpIGFuZCBbYEFuYWx5emVyYF0oI0FuYWx5emVyKS4KCiMjIyBPcGVuQVBJR3JhcGhzCgpUaGlzIGNsYXNzIHdpbGwgY3JlYXRlIHRoZSBncmFwaHMgb2YgdGhlIEFQSXMuIFlvdSBjYW4gcHJvdmlkZSBhIHJvb3QgcGF0aCwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGxvb2sgZm9yIHRoZSBBUEkgc3BlY2lmaWNhdGlvbnMuIEZvciBleGFtcGxlLCBhIHZhbGlkIHJvb3QgcGF0aCBpZiB3ZSB1c2Ugb25lIG9mIHRoZSBleGFtcGxlcyB3b3VsZCBiZToKCmBgYGphdmFzY3JpcHQKY29uc3QgT3BlbkFQSUdyYWhDb3JlID0gcmVxdWlyZSgnb3BlbmFwaS1ncmFwaC1jb3JlJyk7CgooYXN5bmMgKCkgPT4gewogICAgY29uc3QgZ3JhcGhzID0gYXdhaXQgbmV3IE9wZW5BUElHcmFoQ29yZS5PcGVuQVBJR3JhcGhzKCcuL3Rlc3RzL3Jlc291cmNlcy9zb2NpYWwtbmV0d29yaycpLmJ1aWxkKCkKCiAgICAvKiBJdCB3aWxsIHJldHVybiAKICAgIAogICAgewogICAgICAgICJzb2NpYWwtbmV0d29yay55YW1sIjogeyBPbWl0dGluZyBncmFwaCAuLi4gfSwKICAgICAgICAiLi9wb3N0cy9wb3N0cy55YW1sIjogeyBPbWl0dGluZyBncmFwaCAuLi4gfSwKICAgICAgICAiLi91c2Vycy91c2Vycy55YW1sIjogeyBPbWl0dGluZyBncmFwaCAuLi4gfSwKICAgIH0KICAgICovCn0pKCk7CmBgYAoKIyMjIEFuYWx5emVyCgpJdCB3aWxsIGFuYWx5emUgdGhlIGdyYXBocyBjaGVja2luZyBkaWZmZXJlbnQgY29uZGl0aW9ucy4gWW91IGNhbiBpbml0aWF6bGllIGFzIGZvbGxvd3MgKHlvdSBuZWVkIHRvIGluaXRpYWxpemUgYE9wZW5BUElHcmFocHNgKToKCmBgYGphdmFzY3JpcHQKY29uc3QgT3BlbkFQSUdyYWhDb3JlID0gcmVxdWlyZSgnb3BlbmFwaS1ncmFwaC1jb3JlJyk7CgooYXN5bmMgKCkgPT4gewogICAgY29uc3QgZ3JhcGhzID0gYXdhaXQgbmV3IE9wZW5BUElHcmFoQ29yZS5PcGVuQVBJR3JhcGhzKCcuL3Rlc3RzL3Jlc291cmNlcy9zb2NpYWwtbmV0d29yaycpLmJ1aWxkKCkKICAgIGNvbnN0IGFuYWx5emVyID0gT3BlbkFQSUdyYWhDb3JlLkFuYWx5emVyKGdyYXBocykKfSkoKTsKYGBgCkZvciBub3csIHRoZXNlIGZ1bmN0aW9uIGhhdmUgYmVlbiBkZXZlbG9wZWQ6CgojIyMjIFVudXNlZCBzY2hlbWFzCgp8IEZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICB8IFJldHVybnMgIHwgCnwtLS18LS0tfC0tLXwKfCBnZXRVbnVzZWRTY2hlbWFzKCkgICAgICAgICAgICAgICAgfCBJdCB3aWxsIGNoZWNrIGFsbCB0aGUgc2NoZW1hcyBkZWNsYXJlZCBidXQgbm90IGJlaW5nIHVzZWQgaW4gdGhlIGNvbXBvbmVudHMuc2NoZW1hcyBjb250YWluZXIgIHwgW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9vbm1heC9vcGVuYXBpLWdyYXBoLXR5cGVzL2Jsb2IvbWFpbi9zcmMvbW9kZWwvQW5hbHl6ZXIudHMjTDYpICB8CnwgZ2V0RGVwcmVjYXRlZFNjaGVtYXNCZWluZ1VzZWQoKSAgIHwgSXQgd2lsbCBjaGVjayBhbGwgdGhlIGRlcHJlY2F0ZWQgc2NoZW1hcyBkZWNsYXJlZCBiZWluZyBpbiB1c2VkICB8IFtKU09OXShodHRwczovL2dpdGh1Yi5jb20vb25tYXgvb3BlbmFwaS1ncmFwaC10eXBlcy9ibG9iL21haW4vc3JjL21vZGVsL0FuYWx5emVyLnRzI0w3KSAgfAoK readmeEtag: '"e4974465255ad92f22ddc0e63e698f3197b48eab"' readmeLastModified: Fri, 11 Nov 2022 03:27:27 GMT repositoryId: 349407768 description: >- A TS library to manage large API projects defined by OpenAPIv3 specification. created: '2021-03-19T11:59:15Z' updated: '2022-11-11T03:27:33Z' language: TypeScript archived: false stars: 1 watchers: 0 forks: 0 owner: onmax logo: https://avatars.githubusercontent.com/u/22072217?v=4 license: MIT repoEtag: '"f932341ee7364db986b9b25c4c00821cd195e6ce04f355dc600087ef6737e8b3"' repoLastModified: Fri, 11 Nov 2022 03:27:33 GMT foundInMaster: true category: Parsers id: c162d187112cfc2cc016217575c122c3 - source: openapi3 tags repository: https://github.com/devolite/openapi-fetch-angular v3: true id: 0ce4e31b19ca7cbd393a19141db1ae88 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWZldGNoLWFuZ3VsYXIKClRoaXMgbGlicmFyeSBpcyBhbiBbb3BlbmFwaS1mZXRjaF0oaHR0cHM6Ly9naXRodWIuY29tL2Ryd3Bvdy9vcGVuYXBpLXR5cGVzY3JpcHQvdHJlZS9tYWluL3BhY2thZ2VzL29wZW5hcGktZmV0Y2gpIGNsb25lIHRoYXQgdXNlcyBbQW5ndWxhcidzIEhUVFBDbGllbnQgQVBJXShodHRwczovL2FuZ3VsYXIuaW8vYXBpL2NvbW1vbi9odHRwL0h0dHBDbGllbnQpLgpfVGhhbmtzLCBbQGRyd3Bvd10oaHR0cHM6Ly9naXRodWIuY29tL2Ryd3BvdykhXwoKPiBbIUNBVVRJT05dCj4gVGhpcyBsaWJyYXJ5IGlzIHN0aWxsIGluIGRldmVsb3BtZW50LiBQbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgeW91IGVuY291bnRlci4KCj4gWyFDQVVUSU9OXQo+IEN1cnJlbnRseSAqKm9ubHkqKiBzdXBwb3J0cyBKU09OIHJlcXVlc3RzIGFuZCByZXNwb25zZXMuCgojIyBVc2FnZQoKSW4gb3JkZXIgdG8gZ2V0IHN0YXJ0ZWQsIGdlbmVyYXRlIGEgc3BlY2lmaWNhdGlvbiBmaWxlIHVzaW5nIFtvcGVuYXBpLXR5cGVzY3JpcHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9kcndwb3cvb3BlbmFwaS10eXBlc2NyaXB0L3RyZWUvbWFpbi9wYWNrYWdlcy9vcGVuYXBpLXR5cGVzY3JpcHQpLgoKYGBgc2gKIyBMb2NhbCBzY2hlbWEuLi4KbnB4IG9wZW5hcGktdHlwZXNjcmlwdCAuL3BhdGgvdG8vbXkvc2NoZW1hLnlhbWwgLW8gLi9wYXRoL3RvL215L3NjaGVtICMgbnBtCnlhcm4gZGx4IG9wZW5hcGktdHlwZXNjcmlwdCAuL3BhdGgvdG8vbXkvc2NoZW1hLmQudHMgLW8gLi9wYXRoL3RvL215L3NjaGVtYS50cyAjIG9yIHlhcm4KcG5wbSBkbHggb3BlbmFwaS10eXBlc2NyaXB0IC4vcGF0aC90by9teS9zY2hlbWEuZC50cyAtbyAuL3BhdGgvdG8vbXkvc2NoZW1hLnRzICMgb3IgcG5wbQojIPCfmoAgLi9wYXRoL3RvL215L3NjaGVtYS55YW1sIC0+IC4vcGF0aC90by9teS9zY2hlbWEuZC50cyBbN21zXQoKIyBSZW1vdGUgc2NoZW1hLi4uCm5weCBvcGVuYXBpLXR5cGVzY3JpcHQgaHR0cHM6Ly9leGFtcGxlLmNvbS9zY2hlbWEueWFtbCAtbyAuL3BhdGgvdG8vbXkvc2NoZW1hICMgbnBtCnlhcm4gZGx4IG9wZW5hcGktdHlwZXNjcmlwdCBodHRwczovL2V4YW1wbGUuY29tL3NjaGVtYS5kLnRzIC1vIC4vcGF0aC90by9teS9zY2hlbWEudHMgIyBvciB5YXJuCnBucG0gZGx4IG9wZW5hcGktdHlwZXNjcmlwdCBodHRwczovL2V4YW1wbGUuY29tL3NjaGVtYS5kLnRzIC1vIC4vcGF0aC90by9teS9zY2hlbWEudHMgIyBvciBwbnBtCiMg8J+agCBodHRwczovL2V4YW1wbGUuY29tL3NjaGVtYS55YW1sIC0+IC4vcGF0aC90by9teS9zY2hlbWEuZC50cyBbN21zXQpgYGAKClRoZW4sIHV0aWxpemUgdGhlIGdlbmVyYXRlZCBzcGVjaWZpY2F0aW9uIGZpbGUgdG8gbWFrZSByZXF1ZXN0cy4gSW4gb3JkZXIgdG8gZG8gdGhpcywgY3JlYXRlIGEgc2VydmljZSBsaWtlIHNvOgoKYGBgdHMKQEluamVjdGFibGUoewogIHByb3ZpZGVkSW46ICJyb290IiwKfSkKZXhwb3J0IGNsYXNzIFRlc3RBUElTZXJ2aWNlIGV4dGVuZHMgT3BlbkFQSUNsaWVudFNlcnZpY2U8cGF0aHM+IHsKICBjb25zdHJ1Y3RvcihodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7CiAgICBzdXBlcihodHRwQ2xpZW50LCB7CiAgICAgIGJhc2VVcmw6ICIvYXBpIiwKICAgICAgLy8gLi4uIG9wdGlvbnMKICAgIH0pOwogIH0KfQpgYGAKCk5vdywgeW91IGNhbiB1c2UgdGhlIHNlcnZpY2UgdG8gbWFrZSByZXF1ZXN0cyB0aGF0IG1hdGNoIHRoZSBzcGVjaWZpY2F0aW9uOgoKYGBgdHMKY29uc3RydWN0b3IocHJpdmF0ZSBhcGk6IFRlc3RBUElTZXJ2aWNlKSB7fQoKY29uc3QgeyBkYXRhLCBlcnJvciAvKiwgcmVzcG9uc2UqLyB9ID0gYXdhaXQgdGhpcy5hcGkuZ2V0KCIvcGF0aC90by9lbmRwb2ludCIpOwpgYGAKCkZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIFtvcGVuYXBpLWZldGNoIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vb3BlbmFwaS10cy5wYWdlcy5kZXYvb3BlbmFwaS1mZXRjaC8pLgoKIyMgQ3JlZGl0cwoKQmlnIHRoYW5rcyB0byBbQGRyd3Bvd10oaHR0cHM6Ly9naXRodWIuY29tL2Ryd3BvdykgZm9yIGNyZWF0aW5nIHRoZSBvcmlnaW5hbCBvcGVuYXBpLWZldGNoIGFuZCBvcGVuYXBpLXR5cGVzY3JpcHQgbGlicmFyeSEK readmeEtag: '"841ec48899de291a8eb32c39c726927303d49367"' readmeLastModified: Thu, 28 Mar 2024 13:16:35 GMT repositoryId: 777763812 description: >- 💡 Fast, typesafe fetch client for your OpenAPI schema. Works with Angular HTTPClient API. created: '2024-03-26T13:17:17Z' updated: '2025-06-22T08:27:13Z' language: TypeScript archived: true stars: 2 watchers: 2 forks: 0 owner: devolite logo: https://avatars.githubusercontent.com/u/164477852?v=4 license: MIT repoEtag: '"2b651e504f1b34fba685d2655ef58b441245cf77c694d1a5d5a3fbc23c8c0ef7"' repoLastModified: Sun, 22 Jun 2025 08:27:13 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/wahyubudii/spring-boot-boilerplate v3: true id: 26beb171cac6a44beda841391499b157 repositoryMetadata: base64Readme: >- IyMgQVBJIERvY3VtZW50YXRpb24gZnJvbSBTd2FnZ2VyIGluIHlvdXIgbG9jYWwKT3BlbiBpbiBicm93c2VyIGBodHRwOi8vbG9jYWxob3N0OjxzZXJ2ZXItcG9ydD4vc3dhZ2dlci11aS9pbmRleC5odG1sYCA8YnI+CnNlcnZlciBwb3J0IHZhbHVlIGJ5IGRlZmF1bHQgaXM6IGA4MDgwYCwgYnV0IHlvdSBjYW4gYWRqdXN0IGluIHRoZSBgL2FwcGxpY2F0aW9uLnltbGAgZmlsZQoKIyMgRGVwZW5kZW5jeQrigJMgSWYgeW91IHdhbnQgdG8gdXNlIFBvc3RncmVTUUw6CmBgYHhtbAo8ZGVwZW5kZW5jeT4KICA8Z3JvdXBJZD5vcmcucG9zdGdyZXNxbDwvZ3JvdXBJZD4KICA8YXJ0aWZhY3RJZD5wb3N0Z3Jlc3FsPC9hcnRpZmFjdElkPgogIDxzY29wZT5ydW50aW1lPC9zY29wZT4KPC9kZXBlbmRlbmN5PgpgYGAK4oCTIG9yIE15U1FMOgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgPGdyb3VwSWQ+Y29tLm15c3FsPC9ncm91cElkPgogIDxhcnRpZmFjdElkPm15c3FsLWNvbm5lY3Rvci1qPC9hcnRpZmFjdElkPgogIDxzY29wZT5ydW50aW1lPC9zY29wZT4KPC9kZXBlbmRlbmN5PgpgYGAKIyMgQ29uZmlndXJlIFNwcmluZyBEYXRhc291cmNlLCBKUEEsIEFwcCBwcm9wZXJ0aWVzCk9wZW4gYHNyYy9tYWluL3Jlc291cmNlcy9hcHBsaWNhdGlvbi55bWxgCi0gRm9yIFBvc3RncmVTUUw6CmBgYApzcHJpbmc6CiAgZGF0YXNvdXJjZToKICAgIGRyaXZlci1jbGFzcy1uYW1lOiBvcmcucG9zdGdyZXNxbC5Ecml2ZXIKICAgIHVybDogamRiYzpwb3N0Z3Jlc3FsOi8vbG9jYWxob3N0OjU0MzIvZGJuYW1lCiAgICB1c2VybmFtZTogcm9vdAogICAgcGFzc3dvcmQ6IHJvb3QKICBqcGE6CiAgICBoaWJlcm5hdGU6CiAgICAgIGRkbC1hdXRvOiB1cGRhdGUgIyBIaWJlcm5hdGUgZGRsIGF1dG8gKGNyZWF0ZSwgY3JlYXRlLWRyb3AsIHZhbGlkYXRlLCB1cGRhdGUpCiAgICBzaG93LXNxbDogdHJ1ZQogICAgZGF0YWJhc2U6IHBvc3RncmVzcWwKICAgIGRhdGFiYXNlLXBsYXRmb3JtOiBvcmcuaGliZXJuYXRlLmRpYWxlY3QuUG9zdGdyZVNRTERpYWxlY3QKICBzZWN1cml0eToKICAgIGp3dDoKICAgICAgc2VjcmV0OiBqd3RTZWNyZXRLZXkKICAgICAgZXhwaXJhdGlvbjogODY0MDAwMDAgIyAyNCBob3VycwpgYGAKLSBGb3IgTXlTUUwKYGBgCnNwcmluZzoKICBkYXRhc291cmNlOgogICAgZHJpdmVyLWNsYXNzLW5hbWU6IGNvbS5teXNxbC5jai5qZGJjLkRyaXZlcgogICAgdXJsOiBqZGJjOm15c3FsOi8vbG9jYWxob3N0OjMzMDYvZGJuYW1lCiAgICB1c2VybmFtZTogcm9vdAogICAgcGFzc3dvcmQ6IHJvb3QKICBqcGE6CiAgICBoaWJlcm5hdGU6CiAgICAgIGRkbC1hdXRvOiB1cGRhdGUgIyBIaWJlcm5hdGUgZGRsIGF1dG8gKGNyZWF0ZSwgY3JlYXRlLWRyb3AsIHZhbGlkYXRlLCB1cGRhdGUpCiAgICBzaG93LXNxbDogdHJ1ZQogIHNlY3VyaXR5OgogICAgand0OgogICAgICBzZWNyZXQ6IGp3dFNlY3JldEtleQogICAgICBleHBpcmF0aW9uOiA4NjQwMDAwMCAjIDI0IGhvdXJzCmBgYAoKIyMgUnVuIGZvbGxvd2luZyBTUUwgaW5zZXJ0IHN0YXRlbWVudHMK4oCTIG11bHRpIGRhdGEKYGBgeG1sCklOU0VSVCBJTlRPIHJvbGVzIChpZCwgbmFtZSkgVkFMVUVTIAooZ2VuX3JhbmRvbV91dWlkKCksICdST0xFX0FETUlOJyksCihnZW5fcmFuZG9tX3V1aWQoKSwgJ1JPTEVfVVNFUicpLAooZ2VuX3JhbmRvbV91dWlkKCksICdST0xFX01PREVSQVRPUicpOwpgYGAKCuKAkyBzaW5nbGUgZGF0YQpgYGB4bWwKSU5TRVJUIElOVE8gcm9sZXMgKGlkLCBuYW1lKSBWQUxVRVMgCihnZW5fcmFuZG9tX3V1aWQoKSwgJ1JPTEVfTU9ERVJBVE9SJyk7CmBgYAoKRm9yIG1vcmUgZGV0YWlsLCBwbGVhc2UgdmlzaXQ6Cj4gW1NlY3VyZSBTcHJpbmcgQm9vdCB3aXRoIFNwcmluZyBTZWN1cml0eSAmIEpXVCBBdXRoZW50aWNhdGlvbl0oaHR0cHM6Ly9iZXprb2Rlci5jb20vc3ByaW5nLWJvb3Qtand0LWF1dGhlbnRpY2F0aW9uLykK readmeEtag: '"622f69b33734997e65696e2df50d4cb46965c838"' readmeLastModified: Sat, 01 Feb 2025 14:50:42 GMT repositoryId: 925269588 description: >- Spring Boot v3, Spring Security v6, JWT, Swagger, OpenAPI v3, Roles Based, JPA, Lombok, Validation, PostgreSQL created: '2025-01-31T15:01:24Z' updated: '2025-02-01T14:50:46Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: wahyubudii logo: https://avatars.githubusercontent.com/u/79882296?v=4 repoEtag: '"d26c82815d78ecd8e814dde48d2f91a0bb0ae80b2980a1d6d46829aa368db9da"' repoLastModified: Sat, 01 Feb 2025 14:50:46 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/nitesh232/rest-api_documentation_with_openapi_3 v3: true id: fdadc87cbad758bec90c823d63cf13f5 repositoryMetadata: base64Readme: >- IyBSRVNULUFQSV9Eb2N1bWVudGF0aW9uX3dpdGhfT3BlbkFQSV8zCgpUaGlzIHByb2plY3Qgc2hvd3MgdGhlIGRvY3VtZW50YXRpb24gb2YgUkVTVF9BUElzIGJ5IHVzaW5nIE9wZW5BcGlfMyBzcGVjaWZpY2F0aW9uLgoKRHVyaW5nIHRoaXMgcHJvamVjdCBJIGhhdmUgdXNlZCB0aGUgVGlja2V0IEJvb2tpbmcgUkVTVC1BUEkgd2hpY2ggSSBoYXZlIGNyZWF0ZWQgZWFybGllciB5b3UgY2FuIGZpbmQgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9OaXRlc2gyMzIvUkVTVC1BUElfRm9yX1RpY2tldF9Cb29raW5nKSAuCgoKUkVTVCBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCB0byBVUkwgOiBodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS9pbmRleC5odG1sCgoKQmVsb3cgSSBhbSBhdHRhY2hpbmcgaW1hZ2Ugb2YgZG9jdW1lbnRhdGlvbi4KCjxpbWcgc3JjPWh0dHBzOi8vZ2l0aHViLmNvbS9OaXRlc2gyMzIvUkVTVC1BUElfRG9jdW1lbnRhdGlvbl93aXRoX09wZW5BUElfMy9ibG9iL21haW4vc3dhZ2dlci5QTkcgd2lkdGg9IjEzMDAiID4KCgpCZWxvdyBpcyBhdHRhY2hlZCBpbWFnZSBmb3IgZW5kcG9pbnQgd2l0aCBQT1NUIG1ldGhvZC4KCgo8aW1nIHNyYz1odHRwczovL2dpdGh1Yi5jb20vTml0ZXNoMjMyL1JFU1QtQVBJX0RvY3VtZW50YXRpb25fd2l0aF9PcGVuQVBJXzMvYmxvYi9tYWluL3Bvc3QuUE5HIHdpZHRoPSIxMzAwIiA+Cg== readmeEtag: '"bbe624cac51cdc4c305f4f4de6b4cdcf1197b122"' readmeLastModified: Sun, 02 Jul 2023 08:56:42 GMT repositoryId: 661241530 description: >- This project shows the documentation of REST_APIs by using OpenApi_3 specification. created: '2023-07-02T08:26:09Z' updated: '2023-07-02T09:06:54Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: Nitesh232 logo: https://avatars.githubusercontent.com/u/92843270?v=4 repoEtag: '"08203481297cd1ec0204185fe8f8e4f5c9b4938e0599120962bf646dc1646402"' repoLastModified: Sun, 02 Jul 2023 09:06:54 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/ekoulemaneng/openapi-inputs-validator v3: true id: dfbd7e4a55a13df24b1ec2dc9f31970e repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIElucHV0cyBWYWxpZGF0b3IKQW4gdW5vcGluaW9uYXRlZCBUeXBlU2NyaXB0IGxpYnJhcnkgdGhhdCBwcm92aWRlcyBpbnB1dHMgZGF0YSB2YWxpZGF0b3JzIGluIGNvbXBsaWFuY2Ugd2l0aCBhIGdpdmVuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4gRm9yIDMuMS54IGFuZCAzLjAueCBPcGVuQVBJIHZlcnNpb25zLgoKIyMgSW5zdGFsbGF0aW9uCgpgYGAKbnBtIGluc3RhbGwgb3BlbmFwaS1pbnB1dHMtdmFsaWRhdG9yCmBgYApvciAKYGBgCnlhcm4gYWRkIG9wZW5hcGktaW5wdXRzLXZhbGlkYXRvcgpgYGAKCiMjIFVzYWdlCgpgYGB0eXBlc2NyaXB0CmltcG9ydCBzY2hlbWFSZXRyaWV2ZXIgZnJvbSAnb3BlbmFwaS1zY2hlbWEtcmV0cmlldmVyJwppbXBvcnQgeyBjb21waWxlLCB2YWxpZGF0ZSB9IGZyb20gJ29wZW5hcGktaW5wdXRzLXZhbGlkYXRvcicKCmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7CgogICAgLy8gU2V0dXAgYW4gb3BlbmFwaSBzcGVjaWZpY2F0aW9uCiAgICBjb25zdCBzY2hlbWEgPSBhd2FpdCBzY2hlbWFSZXRyaWV2ZXIoJy4vb3BlbmFwaS55YW1sJywgX19kaXJuYW1lKQoKICAgIC8vIEdlbmVyYXRlIHZhbGlkYXRvcnMgZnJvbSBhbiBvcGVuYXBpIHNwZWNpZmljYXRpb24KICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBhd2FpdCBjb21waWxlKHNjaGVtYSkKCiAgICAvLyBTZXQgcGFyYW1ldGVycwogICAgY29uc3QgcGF0aCA9ICcvdXNlcnMnCiAgICBjb25zdCBvcGVyYXRpb24gPSAnZ2V0JwogICAgY29uc3QgaW5wdXRzID0gewogICAgICAgIHBhdGg6IHsKICAgICAgICAgICAgLy8gLi4uLi4uLi4KICAgICAgICB9LAogICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgLy8gLi4uLi4uLgogICAgICAgIH0sCiAgICAgICAgY29va2llczogewogICAgICAgICAgICAvLyAuLi4uLi4uCiAgICAgICAgfSwKICAgICAgICBxdWVyeTogewogICAgICAgICAgICAvLyAuLi4uLi4uCiAgICAgICAgfSwKICAgICAgICBib2R5OiAvLyAuLi4uLi4KICAgIH0KCiAgICAvLyBWYWxpZGF0ZQogICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlKHBhdGgsIG9wZXJhdGlvbiwgaW5wdXRzLCB2YWxpZGF0b3JzKQoKICAgIGNvbnNvbGUubG9nKHZhbGlkYXRpb25SZXN1bHQpIC8vID0+IHsgdmFsaWQ6IGJvb2xlYW4sIGVycm9yczogbnVsbCB8IHN0cmluZyB8IHsuLi59IHwgdW5kZWZpbmVkIH0KCn0KYGBgCgojIyBMaWNlbnNlClRoaXMgcGFja2FnZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgW01JVCBMaWNlbnNlXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdCkuCgojIyBDb250YWN0CklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgaXNzdWVzLCBwbGVhc2UgY29udGFjdCB0aGUgcGFja2FnZSBtYWludGFpbmVyIGF0IGVrb3VsZW1hbmVuZ0BnbWFpbC5jb20u readmeEtag: '"3c897dd652961a605e77ecf982cf951221a054de"' readmeLastModified: Mon, 15 May 2023 17:25:55 GMT repositoryId: 633462766 description: >- TypeScript library providing inputs data validators in accordance with a given OpenAPI specification. For 3.1.x and 3.0.x OpenAPI versions. created: '2023-04-27T14:50:04Z' updated: '2023-05-11T12:30:16Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: ekoulemaneng logo: https://avatars.githubusercontent.com/u/12666431?v=4 license: MIT repoEtag: '"228ebb832c6fd9c05d2b9360fc1fe168221948cb102ed8d8f6c19e79407a0e48"' repoLastModified: Thu, 11 May 2023 12:30:16 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/refitter/generate-nupkg v3: true id: 8e8df31870ab1dad33f850d25cd99557 repositoryMetadata: base64Readme: >- IyBHZW5lcmF0ZS1OdXBrZwpHZW5lcmF0ZSBhIFJlZml0IGNsaWVudCBpbnRlcmZhY2UgYW5kIGNvbnRyYWN0cyBmcm9tIGFuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgZG9jdW1lbnQgdXNpbmcgW1JlZml0dGVyXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIpLgoKIyMgSW5wdXRzCgojIyMgYG9wZW5hcGktZmlsZWAKVGhlIHBhdGggdG8gdGhlIE9wZW5BUEkgZG9jdW1lbnQgKGJvdGggSlNPTiBhbmQgWUFNTCBhcmUgc3VwcG9ydGVkKS4gRGVmYXVsdHMgdG8gIm9wZW5hcGkuanNvbiIgKGkuZS4gYSBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBjYWxsZWQgb3BlbmFwaS5qc29uKS4gUGF0aHMgdGhhdCBkbyBub3Qgc3RhcnQgd2l0aCBgL2AgYXJlIGFzc3VtZWQgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHJvb3Qgb2YgdGhlIHJlcG9zaXRvcnkuCgojIyMgYG9wZW5hcGktdXJsYApUaGUgVVJMIHRvIGxvYWQgdGhlIE9wZW5BUEkgZG9jdW1lbnQgZnJvbS4gSWYgc2V0LCBgb3BlbmFwaS1maWxlYCB3aWxsIGJlIGlnbm9yZWQuCgojIyMgYG5hbWVzcGFjZWAKVGhlIGRlZmF1bHQgbmFtZXNwYWNlIHVzZWQgZm9yIHRoZSBnZW5lcmF0ZWQgdHlwZXMgKGRlZmF1bHQ6IGBHZW5lcmF0ZWRDb2RlYCkKCiMjIyBgdXNlLWFwaS1yZXNwb25zZWAKUmV0dXJuIGBUYXNrPElBcGlSZXNwb25zZTxUPj5gIGluc3RlYWQgb2YgYFRhc2s8VD5gCgojIyMgYGNhbmNlbGxhdGlvbi10b2tlbnNgClVzZSBjYW5jZWxsYXRpb24gdG9rZW5zCgojIyMgYG11bHRpcGxlLWludGVyZmFjZXNgCkdlbmVyYXRlIGEgUmVmaXQgaW50ZXJmYWNlIGZvciBlYWNoIGVuZHBvaW50LiBNYXkgYmUgb25lIG9mIGBCeUVuZHBvaW50YCwgYEJ5VGFnYAoKIyMjIGBjb21tYW5kLWFyZ3NgCkFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdGhyb3VnaCB0byB0aGUgW1JlZml0dGVyXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIpIENMSSB0b29sLgoKIyMjIGBwdWJsaXNoLWFydGlmYWN0c2AKUHVibGlzaCB0aGUgZ2VuZXJhdGVkIG51Z2V0IHBhY2thZ2UgYXMgYSBidWlsZCBhcnRpZmFjdAoKIyMjIGBvdXRwdXQtZmlsZW5hbWVgCk5vIG91dHB1dHMgYXJlIHJldHVybmVkLiBUaGUgZ2VuZXJhdGVkIGNsaWVudCBpcyBwbGFjZWQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCB1c2luZyB0aGUgYG91dHB1dC1maWxlbmFtZWAgKERlZmF1bHQ6ICoqYE91dHB1dC5jc2AqKikgdmFsdWUuIFRoZSBvdXRwdXQgZmlsZSBjb250YWlucyBib3RoIHRoZSBSZWZpdCBpbnRlcmZhY2UgYW5kIHRoZSBjb250cmFjdCB0eXBlcyB1c2VkIGJ5IHRoZSBBUEkKCiMjIyBgdmVyc2lvbmAKVGhlIHZlcnNpb24gbnVtYmVyIHVzZWQgZm9yIHRoZSBOdUdldCBwYWNrYWdlIChkZWZhdWx0OiBgMS4wLiR7eyBnaXRodWIucnVuX251bWJlciB9fWApCgojIyMgYHRhcmdldC1mcmFtZXdvcmtgClRoZSB0YXJnZXQgZnJhbWV3b3JrIHVzZWQgaW4gdGhlIGdlbmVyYXRlZCBDbGllbnQgU0RLIChkZWZhdWx0OiBgbmV0Ni4wYCkKCiMjIyBgcGFja2FnZS1pZGAKVGhlIHZhbHVlIHVzZWQgYXMgYDxQYWNrYWdlSWQ+YCBmb3IgcGFja2FnZSB0aGUgZ2VuZXJhdGVkIGNvZGUgaW50byBhIE51R2V0IHBhY2thZ2UKCiMjIyBgdGl0bGVgClRoZSB2YWx1ZSB1c2VkIGFzIGA8VGl0bGU+YCBmb3IgcGFja2FnZSB0aGUgZ2VuZXJhdGVkIGNvZGUgaW50byBhIE51R2V0IHBhY2thZ2UKCiMjIyBgcm9vdC1uYW1lc3BhY2VgClRoZSB2YWx1ZSB1c2VkIGFzIGA8Um9vdE5hbWVzcGFjZT5gIGZvciBwYWNrYWdlIHRoZSBnZW5lcmF0ZWQgY29kZSBpbnRvIC0gYSBOdUdldCBwYWNrYWdlCgojIyMgYGFzc2VtYmx5YApUaGUgdmFsdWUgdXNlZCBhcyBgPEFzc2VtYmx5TmFtZT5gIGZvciBwYWNrYWdlIHRoZSBnZW5lcmF0ZWQgY29kZSBpbnRvIGEgLSBOdUdldCBwYWNrYWdlCgojIyMgYGF1dGhvcnNgClRoZSB2YWx1ZSB1c2VkIGFzIGA8QXV0aG9ycz5gIGZvciBwYWNrYWdlIHRoZSBnZW5lcmF0ZWQgY29kZSBpbnRvIGEgTnVHZXQgLSBwYWNrYWdlCgojIyMgYGNvbXBhbnlgClRoZSB2YWx1ZSB1c2VkIGFzIGA8Q29tcGFueT5gIGZvciBwYWNrYWdlIHRoZSBnZW5lcmF0ZWQgY29kZSBpbnRvIGEgTnVHZXQgLSBwYWNrYWdlCgojIyMgYHByb2R1Y3RgClRoZSB2YWx1ZSB1c2VkIGFzIGA8UHJvZHVjdD5gIGZvciBwYWNrYWdlIHRoZSBnZW5lcmF0ZWQgY29kZSBpbnRvIGEgTnVHZXQgLSBwYWNrYWdlCgojIyMgYGRlc2NyaXB0aW9uYApUaGUgdmFsdWUgdXNlZCBhcyBgPERlc2NyaXB0aW9uPmAgZm9yIHBhY2thZ2UgdGhlIGdlbmVyYXRlZCBjb2RlIGludG8gYSAtIE51R2V0IHBhY2thZ2UKCiMjIyBgbGljZW5zZWAKVGhlIHZhbHVlIHVzZWQgYXMgYDxQYWNrYWdlTGljZW5zZUV4cHJlc3Npb24+YCBmb3IgcGFja2FnZSB0aGUgZ2VuZXJhdGVkIGNvZGUgLSBpbnRvIGEgTnVHZXQgcGFja2FnZQoKIyMjIGBwcm9qZWN0LXVybGAKVGhlIHZhbHVlIHVzZWQgYXMgYDxQYWNrYWdlUHJvamVjdFVybD5gIGFuZCBgPFJlcG9zaXRvcnlVcmw+YCBmb3IgcGFja2FnZSAtIHRoZSBnZW5lcmF0ZWQgY29kZSBpbnRvIGEgTnVHZXQgcGFja2FnZQoKIyMjIGByZXBvc2l0b3J5LXR5cGVgClRoZSB2YWx1ZSB1c2VkIGFzIGA8UmVwb3NpdG9yeVR5cGU+YCBmb3IgcGFja2FnZSB0aGUgZ2VuZXJhdGVkIGNvZGUgaW50byBhIE51R2V0IHBhY2thZ2UKCgojIEV4YW1wbGVzCgojIyMgVXNpbmcgYSBVUkwgYW5kIHByb2R1Y2luZyBhIENsaWVudCBTREsgTnVHZXQgcGFja2FnZQoKYGBgeWFtbApqb2JzOgogIHNtb2tlLXRlc3QtdXJsLXdpdGgtY2xpZW50LXNkazoKICAgIHJ1bnMtb246IHVidW50dS1sYXRlc3QKICAgIHN0ZXBzOgogICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjMKICAgICAgCiAgICAgICMgVXNlIHRoZSBhY3Rpb24gdG8gZ2VuZXJhdGUgYSBSZWZpdCBjbGllbnQgaW50ZXJmYWNlCiAgICAgICMgVGhpcyBwcm9kdWNlcyBhIE51R2V0IHBhY2thZ2UgYXMgYSBidWlsZCBhcnRpZmFjdAogICAgICAtIHVzZXM6IHJlZml0dGVyL2dlbmVyYXRlLW51cGtnQHYxCiAgICAgICAgbmFtZTogR2VuZXJhdGUgUmVmaXQgQ2xpZW50IFNESwogICAgICAgIHdpdGg6CiAgICAgICAgICBvcGVuYXBpLXVybDogaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uCiAgICAgICAgICBuYW1lc3BhY2U6IENocmlzdGlhbkhlbGxlLkV4YW1wbGVzLlBldHN0b3JlLnYzCiAgICAgICAgICBjbGllbnQtc2RrOiB0cnVlCiAgICAgICAgICB2ZXJzaW9uOiAzLjAuJHt7IGdpdGh1Yi5ydW5fbnVtYmVyIH19CiAgICAgICAgICBwYWNrYWdlLWlkOiBDaHJpc3RpYW5IZWxsZS5FeGFtcGxlcy5QZXRzdG9yZS52MwogICAgICAgICAgdGl0bGU6IENocmlzdGlhbkhlbGxlLkV4YW1wbGVzLlBldHN0b3JlLnYzCiAgICAgICAgICByb290LW5hbWVzcGFjZTogQ2hyaXN0aWFuSGVsbGUuRXhhbXBsZXMuUGV0c3RvcmUudjMKICAgICAgICAgIGFzc2VtYmx5OiBDaHJpc3RpYW5IZWxsZS5FeGFtcGxlcy5QZXRzdG9yZS52MwogICAgICAgICAgcHJvZHVjdDogQ2hyaXN0aWFuSGVsbGUuRXhhbXBsZXMuUGV0c3RvcmUudjMKICAgICAgICAgIGF1dGhvcnM6IENocmlzdGlhbiBSZXNtYSBIZWxsZQogICAgICAgICAgY29tcGFueTogQ2hyaXN0aWFuIFJlc21hIEhlbGxlCiAgICAgICAgICBkZXNjcmlwdGlvbjogRXhhbXBsZSBnZW5lcmF0ZWQgY29kZSB1c2luZyBSZWZpdHRlciBhbmQgdGhlIFN3YWdnZXIgUGV0c3RvcmUgdjMgZXhhbXBsZSBPcGVuQVBJIHNwZWNpZmljYXRpb25zCiAgICAgICAgICBwcm9qZWN0LXVybDogaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyCmBgYAo= readmeEtag: '"18958a595b0c2bf07721ee7267c591d3d7fa7224"' readmeLastModified: Tue, 08 Aug 2023 11:30:22 GMT repositoryId: 671892173 description: >- Generate NuGet package containing a Refit client interface and contracts from an OpenAPI specifications document using Refitter. created: '2023-07-28T11:37:10Z' updated: '2023-07-28T11:59:23Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: Refitter logo: https://avatars.githubusercontent.com/u/140486945?v=4 license: GPL-3.0 repoEtag: '"246b079f25682d27edd7f6ced60cc8a67ffaf901538a30dc4d2989ed6cce9d53"' repoLastModified: Fri, 28 Jul 2023 11:59:23 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/noplagiarism/openvk-openapi v3: true id: f7ace7da5bef860cd67f73660240e79f repositoryMetadata: base64Readme: >- IyBvcGVudmstb3BlbmFwaQpPcGVuLUFwaSBvZiBPcGVuVksuIFVzZSBbSW5zb21uaWFdKGh0dHBzOi8vaW5zb21uaWEucmVzdC8pIHRvIGltcG9ydCBpdAo= readmeEtag: '"059278c11c782edcd06cf91f76879100e9cbec07"' readmeLastModified: Tue, 31 Jan 2023 08:26:38 GMT repositoryId: 579141510 description: Open-Api of OpenVK. Use insomnia to use it created: '2022-12-16T19:10:06Z' updated: '2022-12-16T19:23:58Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: NoPlagiarism logo: https://avatars.githubusercontent.com/u/37241775?v=4 repoEtag: '"92c60d0b201d4c5c720f853df49d01eed3a46222586776277499b3cd3dc47f3b"' repoLastModified: Fri, 16 Dec 2022 19:23:58 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/christianhelle/refitter-action v3: true id: 896749e54ed5a10569450d472c645c45 repositoryMetadata: base64Readme: >- IyBSZWZpdHRlciBHaXRodWIgQWN0aW9uCkdlbmVyYXRlIGEgUmVmaXQgY2xpZW50IGludGVyZmFjZSBhbmQgY29udHJhY3RzIGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBkb2N1bWVudCB1c2luZyBbUmVmaXR0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikuCgojIyBJbnB1dHMKCiMjIyBgb3BlbmFwaS1maWxlYApUaGUgcGF0aCB0byB0aGUgT3BlbkFQSSBkb2N1bWVudCAoYm90aCBKU09OIGFuZCBZQU1MIGFyZSBzdXBwb3J0ZWQpLiBEZWZhdWx0cyB0byAib3BlbmFwaS5qc29uIiAoaS5lLiBhIGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGNhbGxlZCBvcGVuYXBpLmpzb24pLiBQYXRocyB0aGF0IGRvIG5vdCBzdGFydCB3aXRoIGAvYCBhcmUgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byB0aGUgcm9vdCBvZiB0aGUgcmVwb3NpdG9yeS4KCiMjIyBgb3BlbmFwaS11cmxgClRoZSBVUkwgdG8gbG9hZCB0aGUgT3BlbkFQSSBkb2N1bWVudCBmcm9tLiBJZiBzZXQsIGBvcGVuYXBpLWZpbGVgIHdpbGwgYmUgaWdub3JlZC4KCiMjIyBgbmFtZXNwYWNlYApUaGUgZGVmYXVsdCBuYW1lc3BhY2UgdXNlZCBmb3IgdGhlIGdlbmVyYXRlZCB0eXBlcyAoZGVmYXVsdDogYEdlbmVyYXRlZENvZGVgKQoKIyMjIGB1c2UtYXBpLXJlc3BvbnNlYApSZXR1cm4gYFRhc2s8SUFwaVJlc3BvbnNlPFQ+PmAgaW5zdGVhZCBvZiBgVGFzazxUPmAKCiMjIyBgY2FuY2VsbGF0aW9uLXRva2Vuc2AKVXNlIGNhbmNlbGxhdGlvbiB0b2tlbnMKCiMjIyBgY29tbWFuZC1hcmdzYApBZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIHRocm91Z2ggdG8gdGhlIFtSZWZpdHRlcl0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyKSBDTEkgdG9vbC4KCiMjIyBgcHVibGlzaC1hcnRpZmFjdHNgClNldHRpbmcgdGhpcyB3aWxsIHB1Ymxpc2ggdGhlIGdlbmVyYXRlZCBjb2RlIGFzIEMjIGZpbGVzIGFzIGJ1aWxkIGFydGlmYWN0cwoKIyMjIGBjbGllbnQtc2RrYApTZXR0aW5nIHRoaXMgd2lsbCBwYWNrYWdlIHRoZSBnZW5lcmF0ZWQgY29kZSBpbnRvIGEgTnVHZXQgcGFja2FnZSBhbmQgcHVibGlzaCB0aGlzIGFzIGEgYnVpbGQgYXJ0aWZhY3QuIFRoZSBmb2xsb3dpbmcgaW5wdXRzIGFyZSAqKipSZXF1aXJlZCoqKiB3aGVuIGBjbGllbnQtc2RrYCBpcyBlbmFibGVkCgotICMjIyBgY2xpZW50LXNkay12ZXJzaW9uYCAtIFRoZSB2ZXJzaW9uIG51bWJlciB1c2VkIGZvciB0aGUgTnVHZXQgcGFja2FnZSAoZGVmYXVsdDogYDEuMC4ke3sgZ2l0aHViLnJ1bl9udW1iZXIgfX1gKQotICMjIyBgY2xpZW50LXNkay10YXJnZXQtZnJhbWV3b3JrYCAtIFRoZSB0YXJnZXQgZnJhbWV3b3JrIHVzZWQgaW4gdGhlIGdlbmVyYXRlZCBDbGllbnQgU0RLIChkZWZhdWx0OiBgbmV0Ni4wYCkKLSAjIyMgYGNsaWVudC1zZGstcGFja2FnZS1pZGAgLSBUaGUgdmFsdWUgdXNlZCBhcyBgPFBhY2thZ2VJZD5gIGZvciBwYWNrYWdlIHRoZSBnZW5lcmF0ZWQgY29kZSBpbnRvIGEgTnVHZXQgcGFja2FnZQotICMjIyBgY2xpZW50LXNkay10aXRsZWAgLSBUaGUgdmFsdWUgdXNlZCBhcyBgPFRpdGxlPmAgZm9yIHBhY2thZ2UgdGhlIGdlbmVyYXRlZCBjb2RlIGludG8gYSBOdUdldCBwYWNrYWdlCi0gIyMjIGBjbGllbnQtc2RrLXJvb3QtbmFtZXNwYWNlYCAtIFRoZSB2YWx1ZSB1c2VkIGFzIGA8Um9vdE5hbWVzcGFjZT5gIGZvciBwYWNrYWdlIHRoZSBnZW5lcmF0ZWQgY29kZSBpbnRvIC0gYSBOdUdldCBwYWNrYWdlCi0gIyMjIGBjbGllbnQtc2RrLWFzc2VtYmx5YCAtIFRoZSB2YWx1ZSB1c2VkIGFzIGA8QXNzZW1ibHlOYW1lPmAgZm9yIHBhY2thZ2UgdGhlIGdlbmVyYXRlZCBjb2RlIGludG8gYSAtIE51R2V0IHBhY2thZ2UKLSAjIyMgYGNsaWVudC1zZGstYXV0aG9yc2AgLSBUaGUgdmFsdWUgdXNlZCBhcyBgPEF1dGhvcnM+YCBmb3IgcGFja2FnZSB0aGUgZ2VuZXJhdGVkIGNvZGUgaW50byBhIE51R2V0IC0gcGFja2FnZQotICMjIyBgY2xpZW50LXNkay1jb21wYW55YCAtIFRoZSB2YWx1ZSB1c2VkIGFzIGA8Q29tcGFueT5gIGZvciBwYWNrYWdlIHRoZSBnZW5lcmF0ZWQgY29kZSBpbnRvIGEgTnVHZXQgLSBwYWNrYWdlCi0gIyMjIGBjbGllbnQtc2RrLXByb2R1Y3RgIC0gVGhlIHZhbHVlIHVzZWQgYXMgYDxQcm9kdWN0PmAgZm9yIHBhY2thZ2UgdGhlIGdlbmVyYXRlZCBjb2RlIGludG8gYSBOdUdldCAtIHBhY2thZ2UKLSAjIyMgYGNsaWVudC1zZGstZGVzY3JpcHRpb25gIC0gVGhlIHZhbHVlIHVzZWQgYXMgYDxEZXNjcmlwdGlvbj5gIGZvciBwYWNrYWdlIHRoZSBnZW5lcmF0ZWQgY29kZSBpbnRvIGEgLSBOdUdldCBwYWNrYWdlCi0gIyMjIGBjbGllbnQtc2RrLWxpY2Vuc2VgIC0gVGhlIHZhbHVlIHVzZWQgYXMgYDxQYWNrYWdlTGljZW5zZUV4cHJlc3Npb24+YCBmb3IgcGFja2FnZSB0aGUgZ2VuZXJhdGVkIGNvZGUgLSBpbnRvIGEgTnVHZXQgcGFja2FnZQotICMjIyBgY2xpZW50LXNkay1wcm9qZWN0LXVybGAgLSBUaGUgdmFsdWUgdXNlZCBhcyBgPFBhY2thZ2VQcm9qZWN0VXJsPmAgYW5kIGA8UmVwb3NpdG9yeVVybD5gIGZvciBwYWNrYWdlIC0gdGhlIGdlbmVyYXRlZCBjb2RlIGludG8gYSBOdUdldCBwYWNrYWdlCi0gIyMjIGBjbGllbnQtc2RrLXJlcG9zaXRvcnktdHlwZWAgLSBUaGUgdmFsdWUgdXNlZCBhcyBgPFJlcG9zaXRvcnlUeXBlPmAgZm9yIHBhY2thZ2UgdGhlIGdlbmVyYXRlZCBjb2RlIGludG8gYSBOdUdldCBwYWNrYWdlCgojIyBPdXRwdXRzCk5vIG91dHB1dHMgYXJlIHJldHVybmVkLiBUaGUgZ2VuZXJhdGVkIGNsaWVudCBpcyBwbGFjZWQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCBjYWxsZWQgKipPdXRwdXQuY3MqKiB3aGljaCBjb250YWlucyBib3RoIHRoZSBSZWZpdCBpbnRlcmZhY2UgYW5kIHRoZSBjb250cmFjdCB0eXBlcyB1c2VkIGJ5IHRoZSBBUEkKCgojIEV4YW1wbGVzCgojIyMgVXNpbmcgYSBGaWxlIGZvciBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGRvY3VtZW50CgpgYGB5YW1sCmpvYnM6CiAgc21va2UtdGVzdC11cmw6CiAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CiAgICBzdGVwczoKICAgICAgLSB1c2VzOiBhY3Rpb25zL2NoZWNrb3V0QHYzCiAgICAgIAogICAgICAjIFVzZSB0aGUgYWN0aW9uIHRvIGdlbmVyYXRlIGEgUmVmaXQgY2xpZW50IGludGVyZmFjZQogICAgICAjIFRoaXMgcHJvZHVjZXMgYSBmaWxlIGNhbGxlZCBPdXRwdXQuY3MgYXMgYSBidWlsZCBhcnRpZmFjdAogICAgICAtIHVzZXM6IGNocmlzdGlhbmhlbGxlL3JlZml0dGVyLWFjdGlvbkBtYWluCiAgICAgICAgbmFtZTogR2VuZXJhdGUgUmVmaXQgQ2xpZW50CiAgICAgICAgd2l0aDogICAgICAgIAogICAgICAgICAgb3BlbmFwaS1maWxlOiBvcGVuYXBpLmpzb24KICAgICAgICAgIG5hbWVzcGFjZTogQ2hyaXN0aWFuSGVsbGUuRXhhbXBsZXMuUGV0c3RvcmUudjMKICAgICAgCiAgICAgICMgRG8gc29tZXRoaW5nIHdpdGggdGhlIGdlbmVyYXRlZCBjbGllbnQgKGxpa2UgaW5jbHVkZSBpdCBpbiBhbiBleGlzdGluZyBwcm9qZWN0KQogICAgICAtIHJ1bjogR2V0LUNvbnRlbnQgT3V0cHV0LmNzIHwgV3JpdGUtSG9zdAogICAgICAgIHNoZWxsOiBwd3NoCmBgYAoKIyMjIFVzaW5nIGEgVVJMIGFuZCBwcm9kdWNpbmcgYSBDbGllbnQgU0RLIE51R2V0IHBhY2thZ2UKCmBgYHlhbWwKam9iczoKICBzbW9rZS10ZXN0LXVybC13aXRoLWNsaWVudC1zZGs6CiAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CiAgICBzdGVwczoKICAgICAgLSB1c2VzOiBhY3Rpb25zL2NoZWNrb3V0QHYzCiAgICAgIAogICAgICAjIFVzZSB0aGUgYWN0aW9uIHRvIGdlbmVyYXRlIGEgUmVmaXQgY2xpZW50IGludGVyZmFjZQogICAgICAjIFRoaXMgcHJvZHVjZXMgYSBOdUdldCBwYWNrYWdlIGFzIGEgYnVpbGQgYXJ0aWZhY3QKICAgICAgLSB1c2VzOiBjaHJpc3RpYW5oZWxsZS9yZWZpdHRlci1hY3Rpb25AbWFpbgogICAgICAgIG5hbWU6IEdlbmVyYXRlIFJlZml0IENsaWVudCBTREsKICAgICAgICB3aXRoOgogICAgICAgICAgb3BlbmFwaS11cmw6IGh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzL29wZW5hcGkuanNvbgogICAgICAgICAgbmFtZXNwYWNlOiBDaHJpc3RpYW5IZWxsZS5FeGFtcGxlcy5QZXRzdG9yZS52MwogICAgICAgICAgY2xpZW50LXNkazogdHJ1ZQogICAgICAgICAgY2xpZW50LXNkay12ZXJzaW9uOiAzLjAuJHt7IGdpdGh1Yi5ydW5fbnVtYmVyIH19CiAgICAgICAgICBjbGllbnQtc2RrLXBhY2thZ2UtaWQ6IENocmlzdGlhbkhlbGxlLkV4YW1wbGVzLlBldHN0b3JlLnYzCiAgICAgICAgICBjbGllbnQtc2RrLXRpdGxlOiBDaHJpc3RpYW5IZWxsZS5FeGFtcGxlcy5QZXRzdG9yZS52MwogICAgICAgICAgY2xpZW50LXNkay1yb290LW5hbWVzcGFjZTogQ2hyaXN0aWFuSGVsbGUuRXhhbXBsZXMuUGV0c3RvcmUudjMKICAgICAgICAgIGNsaWVudC1zZGstYXNzZW1ibHk6IENocmlzdGlhbkhlbGxlLkV4YW1wbGVzLlBldHN0b3JlLnYzCiAgICAgICAgICBjbGllbnQtc2RrLXByb2R1Y3Q6IENocmlzdGlhbkhlbGxlLkV4YW1wbGVzLlBldHN0b3JlLnYzCiAgICAgICAgICBjbGllbnQtc2RrLWF1dGhvcnM6IENocmlzdGlhbiBSZXNtYSBIZWxsZQogICAgICAgICAgY2xpZW50LXNkay1jb21wYW55OiBDaHJpc3RpYW4gUmVzbWEgSGVsbGUKICAgICAgICAgIGNsaWVudC1zZGstZGVzY3JpcHRpb246IEV4YW1wbGUgZ2VuZXJhdGVkIGNvZGUgdXNpbmcgUmVmaXR0ZXIgYW5kIHRoZSBTd2FnZ2VyIFBldHN0b3JlIHYzIGV4YW1wbGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucwogICAgICAgICAgY2xpZW50LXNkay1wcm9qZWN0LXVybDogaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyLWFjdGlvbgpgYGA= readmeEtag: '"9494f135d029b64e34399b1799b5c43cc0b2c2ff"' readmeLastModified: Mon, 12 Jun 2023 21:49:28 GMT repositoryId: 640287071 description: Generate Refit API Client using Refitter created: '2023-05-13T15:34:09Z' updated: '2023-05-15T20:33:59Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: christianhelle logo: https://avatars.githubusercontent.com/u/710400?v=4 license: GPL-3.0 repoEtag: '"66a15ed5c38240c6a2b23b4eaa92e8aec61393e35e39bd696c0a6e64959d57fd"' repoLastModified: Mon, 15 May 2023 20:33:59 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/ekoulemaneng/openapi-security-retriever v3: true id: b19330aebed83b7c5d395eacf404f955 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNlY3VyaXR5IFJldHJpZXZlcgoKVHlwZXNjcmlwdCBwYWNrYWdlIHRvIHJldHJpZXZlIHNlY3VyaXR5IG1lY2hhbmlzbSBpbmZvcm1hdGlvbnMgZnJvbSBhbiBvcGVyYXRpb24gaW4gY29tcGxpYW5jZSB3aXRoIGFuIE9wZW5BcGkgc3BlY2lmaWNhdGlvbi4gRm9yIDMuMS54IGFuZCAzLjAueCBPcGVuQVBJIHZlcnNpb25zLgoKIyMgSW5zdGFsbGF0aW9uCmBgYHR5cGVzY3JpcHQKbnBtIGluc3RhbGwgb3BlbmFwaS1zZWN1cml0eS1yZXRyaWV2ZXIgCmBgYApvcgpgYGB0eXBlc2NyaXB0Cnlhcm4gYWRkIG9wZW5hcGktc2VjdXJpdHktcmV0cmlldmVyCmBgYAoKIyMgVXNhZ2UKYGBgdHlwZXNjcmlwdAppbXBvcnQgc2VjdXJpdHlSZXRyaWV2ZXIgZnJvbSAnb3BlbmFwaS1zZWN1cml0eS1yZXRyaWV2ZXInCmltcG9ydCBzY2hlbWFSZXRyaWV2ZXIgZnJvbSAnb3BlbmFwaS1zY2hlbWEtcmV0cmlldmVyJwoKbGV0IHNjaGVtYQoKY29uc3QgbWFpbiA9IGFzeW5jICgpID0+IHsKCiAgICAvKiBGaXJzdCwgYnkgc2NoZW1hUmV0cmlldmVyLCBnZXQsIGNoZWNrIGFuZCBwYXJzZSB0aGUgb3BlbmFwaSBzcGVjaWZpY2F0aW9uIHRoYXQgY2FuIGJlIGFuIG9iamVjdCBvciBhbiBmaWxlIHBhdGggc3RyaW5nLgogICAgICogSWYgdGhlIHNwZWNpZmljYXRpb24gaW5wdXQgaXMgYSBmaWxlIHBhdGggc3RyaW5nLCBhIHNlY29uZCBhcmd1bWVudCBzdGFuZGluZyBmb3IgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgaXMgbWFuZGF0b3J5LgogICAgICogV2UgcmVjb21tZW5kIHRvIHVzZSAnX19kaXJuYW1lJyBhcyBzZWNvbmQgYXJndW1lbnQuCiAgICAgKiBUaGUgZmlsZSBtdXN0IGJlIGVpdGhlciBhIGpzb24sIGEgeWFtbCBvciBhIHltbCBmaWxlLiAKICAgICAqIHNwZWNCdWlsZGVyIHJldHVybnMgYW4gb2JqZWN0IGluIGFjY29yZGFuY2Ugd2l0aCBPcGVuQVBJIHNjcGVjaWZpY2F0aW9uLgogICAgKi8KICAgIGNvbnN0IHNjaGVtYSA9IGF3YWl0IHNjaGVtYVJldHJpZXZlcignLi9vcGVuYXBpLnlhbWwnLCBfX2Rpcm5hbWUpCgogICAgLyoKICAgICAqIHNlY3VyaXR5UmV0cmlldmVyIHRha2VzIDMgbWFuZGF0b3J5IGFyZ3VtZW50czogYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIG9iamVjdCwgYSBzdHJpbmcgYXMgYSBzY2hlbWEgcGF0aCwgYW5kIGEgc3RyaW5nIGFzIGEgaHR0cCByZXF1ZXN0IG1ldGhvZC4KICAgICovCiAgICBjb25zdCBzZWN1cml0eSA9IHNlY3VyaXR5UmV0cmlldmVyKHNjaGVtYSwgJy9wcm9kdWN0cycsICdnZXQnKQoKICAgIGNvbnNvbGUubG9nKHNlY3VyaXR5KSAvLyA9PiB7IHNlY3VyZWQ6IHRydWUsIG9wdGlvbmFsOiBmYWxzZSwgc2VjdXJpdGllczogWyBKd3RPYXV0aDogeyB0eXBlOiAnaHR0cCcsIHNjaGVtZTogJ2JlYXJlcicsIHNjb3BlczogWydhZG1pbiddIH0gXSB9IHwgbnVsbCAKICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAnbnVsbCcgaWYgb3BlcmF0aW9uIGlzIG5vdCBmb3VuZCBpbiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uCn0KCm1haW4oKQpgYGAKCiMjIE91dHB1dCBzdHJ1Y3R1cmUKClRoZSBvdXRwdXQgb2YgdGhlIG1vZHVsZSwgb25jZSBjYWxsZWQsIGlzIGFuIG9iamVjdCB3aG9zZSB0aGUgc3RydWN0dXJlIGlzOgpgYGB0eXBlc2NyaXB0CnsKICAgIHNlY3VyZWQ6IGJvb2xlYW4sIC8vIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvcGVyYXRpb24gcmVxdWlyZXMgYXV0aGVudGljYXRpb24KICAgIG9wdGlvbmFsOiBib29sZWFuLCAvLyBpbmRpY2F0ZXMgd2hldGhlciBhdXRoZW50aWNhdGlvbiBpcyBvcHRpb25hbCBvciBtYW5kYXRvcnkKICAgIHNlY3VyaXRpZXM6IFtPYmplY3RdIC8vIGdpdmVzIGxpc3Qgb2Ygc2VjdXJpdHkgbWVjaGFuaXNtcwp9CmBgYApUaGUgYWJvdmUtbWVudGlvbmVkIE9iamVjdCBpcyBzdHJ1Y3R1cmVkIGFzIGZvbGxvd3M6CmBgYHR5cGVzY3JpcHQKewogICAge25hbWV9OiB7CiAgICAgICAgICAgICAgICB0eXBlOiAnYXBpS2V5JywKICAgICAgICAgICAgICAgIG5hbWU6IHN0cmluZywKICAgICAgICAgICAgICAgIGluOiBzdHJpbmcsCiAgICAgICAgICAgICAgICBzY29wZXM6IFtzdHJpbmddCiAgICAgICAgICAgIH0gfCB7CiAgICAgICAgICAgICAgICB0eXBlOiAnaHR0cCcsCiAgICAgICAgICAgICAgICBzY2hlbWU6IHN0cmluZywKICAgICAgICAgICAgICAgIGJlYXJlckZvcm1hdD86IHN0cmluZywKICAgICAgICAgICAgICAgIHNjb3BlczogW3N0cmluZ10KICAgICAgICAgICAgfSB8IHsKICAgICAgICAgICAgICAgIHR5cGU6ICdvYXV0aDInLAogICAgICAgICAgICAgICAgZmxvd3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGljaXQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXphdGlvblVybDogc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVXJsPzogc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZXM6IFtzdHJpbmddCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlblVybDogc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVXJsPzogc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZXM6IFtzdHJpbmddCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRDcmVkZW50aWFsczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlblVybDogc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVXJsPzogc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZXM6IFtzdHJpbmddCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBhdXRob3JpemF0aW9uQ29kZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3JpemF0aW9uVXJsOiBzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuVXJsOiBzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hVcmw/OiBzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlczogW3N0cmluZ10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2NvcGVzOiBbc3RyaW5nXQogICAgICAgICAgICB9IHwgewogICAgICAgICAgICAgICAgdHlwZTogJ29wZW5JZENvbm5lY3QnLAogICAgICAgICAgICAgICAgb3BlbklkQ29ubmVjdFVybDogc2VjdXJpdHlTY2hlbWUub3BlbklkQ29ubmVjdFVybCwKICAgICAgICAgICAgICAgIHNjb3BlczogW3N0cmluZ10KICAgICAgICAgICAgfQp9CmBgYAoKIyMgTGljZW5zZQpUaGlzIHBhY2thZ2UgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFtNSVQgTGljZW5zZV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQpLgoKIyMgQ29udGFjdApJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIGlzc3VlcywgcGxlYXNlIGNvbnRhY3QgdGhlIHBhY2thZ2UgbWFpbnRhaW5lciBhdCBla291bGVtYW5lbmdAZ21haWwuY29tLgo= readmeEtag: '"6b55383fbd5b3d8307eb75ca010458989956b94c"' readmeLastModified: Mon, 08 May 2023 15:25:58 GMT repositoryId: 637176290 description: >- Typescript package to retrieve security mechanism information from an operation in compliance with an OpenApi specification. For 3.1.x and 3.0.x OpenAPI versions. created: '2023-05-06T18:38:00Z' updated: '2023-05-12T04:02:56Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: ekoulemaneng logo: https://avatars.githubusercontent.com/u/12666431?v=4 license: MIT repoEtag: '"5b7ea14972274051e9e4d1a7294621c4a95e4763904ca8ca5ed105c6ea4d0652"' repoLastModified: Fri, 12 May 2023 04:02:56 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/mermade/openapi2js v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJMmpzCgpDb252ZXJ0IE9wZW5BcGkgKFN3YWdnZXIpIDIuMCAvIDMuMC54IEpTT04vWUFNTCBkZWZpbml0aW9uIHRvIHNpbXBsZSBKYXZhc2NyaXB0IEFQSSwgY29tcGxldGUgd2l0aCBKU0RPQywgc3VpdGFibGUgZm9yIHVzZSB3aXRoIHRoZSBPcGVuIE5pdHJvIFNESwoKIyMgVXNhZ2U6CgpgYGBqYXZhc2NyaXB0CiAgICB2YXIgb2EyanMgPSByZXF1aXJlKCdvcGVuYXBpMmpzJyk7CiAgICBvYTJqcy5vcGVuQVBJMmpzKGluRmlsZW5hbWUsb3V0RmlsZW5hbWUpOwpgYGAKCm9yCgpgYGBqYXZhc2NyaXB0CiAgICB2YXIgb2EyanMgPSByZXF1aXJlKCdvcGVuYXBpMmpzJyk7CiAgICB2YXIganNTdHIgPSBvYTJqcy5vcGVuQVBJMmpzKHN3YWdnZXJPYmplY3QpOwpgYGAKCg== readmeEtag: '"78076fdc01b5658a5434032d359652095c33b8cd"' readmeLastModified: Tue, 28 Apr 2020 14:33:31 GMT repositoryId: 61999590 description: Create simple JS SDK from OpenAPI (Swagger) 2.0/3.0.x json/yaml document created: '2016-06-26T17:09:25Z' updated: '2020-04-28T14:33:42Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: BSD-3-Clause repoEtag: '"b49ca74ff8294adccfde3da9d9a4f29def49b3d969e3c1f3e15adc47009f747a"' repoLastModified: Tue, 28 Apr 2020 14:33:42 GMT foundInMaster: true category: Parsers id: cc756d5b3fdee2221f89b92f3bb0a204 - source: openapi3 tags repository: https://github.com/arya-oss/swaggerui-addon v3: true repositoryMetadata: base64Readme: >- IyMgU3dhZ2dlciBVSSBGaXJlZm94IEFkZG9uCgpOb3QgcHVibGlzaGVkIHlldCB0byB0ZXN0IGluIGZpcmVmb3ggYnJvd3NlcgoKMS4gT3BlbiBGaXJlZm94IGFuZCBvcGVuIHRoaXMgbGluayBgYWJvdXQ6ZGVidWdnaW5nYC4KMi4gYExvYWQgVGVtcGVyb3J5IGFkZG9uYCBhbmQgc2VsZWN0IGBtYW5pZmVzdC5qc29uYCBmcm9tIGNvZGUgcmVwb3NpdG9yeS4KCiMjIyBPbiBPcGVyYSBvciBDaHJvbWUKMS4gb3BlbiBDaHJvbWUgb3IgT3BlcmEgYW5kIG9wZW4gdGhpcyBsaW5rIGBjaHJvbWU6Ly9leHRlbnNpb25zYAoyLiBgTG9hZCBVbnBhY2tlZCBFeHRlbnNpb25zYCBhbmQgc2VsZWN0IGB0aGlzIHJlcG9zaXRvcnkgZGlyYCBmcm9tIGNvZGUgcmVwby4K readmeEtag: '"502d80f581dee084d169388d0fa396d1eeefa46e"' readmeLastModified: Wed, 04 Apr 2018 06:45:52 GMT repositoryId: 127413705 description: Swagger UI addons to browse OpenAPI spec APIs created: '2018-03-30T10:09:45Z' updated: '2018-04-04T06:45:54Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: arya-oss logo: https://avatars.githubusercontent.com/u/8657040?v=4 license: MIT repoEtag: '"ffea0ed3a197cd6ae4e22ded5d5ca75e61172012c4042043d5f10997f289372c"' repoLastModified: Wed, 04 Apr 2018 06:45:54 GMT foundInMaster: true category: Documentation id: 1b0b9179f7b33d4642a34006cdbd6439 - source: openapi3 tags repository: https://github.com/encima/openape v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBFClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kuY29tL2VuY2ltYS9vcGVuYXBlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kuY29tL2VuY2ltYS9vcGVuYXBlKQpbIVtHbyBSZXBvcnQgQ2FyZF0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL2JhZGdlL2dpdGh1Yi5jb20vZW5jaW1hL29wZW5hcGUpXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vZW5jaW1hL29wZW5hcGUpClshW0dvRG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2VuY2ltYS9vcGVuYXBlP3N0YXR1cy5zdmcpXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2VuY2ltYS9vcGVuYXBlKQoKT3BlbkFQRSBpcyBkZXNpZ25lZCB0byBiZSBhIHNlcnZlciBleHRlbnNpb24gb2YgdGhlIGBPcGVuQVBJYCBzcGVjaWZpY2F0aW9uLCByZWFkaW5nIGluIGEgYFN3YWdnZXJgIGZpbGUgYW5kIGEgY29uZmlnIGFuZCBPcGVuQVBFIHdpbGwgZG8gYWxsIHRoZSBgY29kZSBtb25rZXlgIHN0dWZmIGZvciB5b3U6IGJ1aWxkaW5nIHRoZSByb3V0ZXMsIGFkZGluZyB0aGUgbW9kZWxzIHRvIGEgZGF0YWJhc2UsIHZhbGlkYXRpb24gZXRjLgoKTXVjaCBvZiB3ZWIgZGV2ZWxvcG1lbnQgY29uc2lzdHMgb2YgY3JlYXRpbmcgYW5kIG1haW50YWluaW5nIGFuIEFQSSB0aGF0IGlzIG1hcmdpbmFsbHkgZGlmZmVyZW50IGZyb20gdGhlIGxhc3Qgb25lPyBgU3dhZ2dlcmAgYW5kIGBPcGVuQVBJYCBoYXMgbWFkZSB0aGlzIG11Y2ggZWFzaWVyIHdpdGggY29kZSBnZW5lcmF0aW9uIHRvb2xzIGFuZCBmcmFtZXdvcmtzIHN1Y2ggYXMgYExvb3BiYWNrYC4gQWxtb3N0IGFsbCBtb2RlbHMgY3JlYXRlZCByZXF1aXJlIHRoZSBiYXNpYyBIVFRQIHZlcmJzIGFuZCBzdXBwb3J0ZWQgYWN0aW9ucyAoYFBVVGAsIGBERUxFVEVgIGV0YykgYnV0IG1vc3QgZXhpc3RpbmcgdG9vbHMgb25seSBnZW5lcmF0ZSBtZXRob2Qgc3R1YnMgc3RpbGwgcmVxdWlyaW5nIGFkZGl0aW9uIGNvZGUgZnJvbSBkZXZlbG9wZXJzIHRoaXMgYWltcyB0byBzb2x2ZSB0aGF0LgoKLS0tCgojIyBDb250cmlidXRpbmcKClBScyBhcmUgd2VsY29tZSwgdGhpcyBpcyBhIHN1cGVyIGVhcmx5IHZlcnNpb24gYW5kIGlzIGZhciBmcm9tIHBlcmZlY3QuCgpJZiB5b3UgYXJlIGEgYmVnaW5uZXIsIGNoZWNrIG91dCB0aGUgW2xhYmVsbGVkIG9wZW4gaXNzdWVzXShodHRwczovL2dpdGh1Yi5jb20vZW5jaW1hL29wZW5hcGUvaXNzdWVzP3E9aXMlM0Fpc3N1ZStpcyUzQW9wZW4rbGFiZWwlM0ElMjJnb29kK2ZpcnN0K2lzc3VlJTIyKS4KCi0tLQoKIyMgUmVxdWlyZW1lbnRzCgoqIFBvc3RncmVzIChyZW1vdGUgb3IgbG9jYWwpCiogR28KKiBBIGNvbmZpZyBmaWxlIChleGFtcGxlIGNhbiBiZSBmb3VuZCBpbiB0aGUgYGNvbmZpZ2AgZm9sZGVyCgojIyBHRVQgU1RBUlRFRAoKMS4gYGdvIGdldCBnaXRodWIuY29tL2VuY2ltYS9vcGVuYXBlYAoyLiBgYGAKICAgIHBhY2thZ2UgbWFpbgoKICAgIGltcG9ydCAoCiAgICAgICAgImdpdGh1Yi5jb20vZW5jaW1hL29wZW5hcGUiCiAgICApCgogICAgZnVuYyBtYWluKCkgewogICAgICAgIG9wZW5hcGUuTmV3U2VydmVyKCJQQVRIL1RPL0NPTkZJRyIpCiAgICB9CiAgICBgYGAK readmeEtag: '"94b4fe835195b361031bdcb2c21946d996ada7c0"' readmeLastModified: Tue, 30 Oct 2018 10:19:44 GMT repositoryId: 140843698 description: >- Go get rid of your code monkey duties. Generate servers using only an OpenAPI spec created: '2018-07-13T12:20:39Z' updated: '2023-07-25T14:18:31Z' language: Go archived: false stars: 0 watchers: 0 forks: 1 owner: encima logo: https://avatars.githubusercontent.com/u/517923?v=4 license: GPL-3.0 repoEtag: '"9c2e9f98a93445d5566ee034f065087958195b18fd5c698dc3a46859caa7683f"' repoLastModified: Tue, 25 Jul 2023 14:18:31 GMT foundInMaster: true category: Parsers id: 0b24bbe6a0313b94cd166918598a6cb4 - source: openapi3 tags repository: https://github.com/quetz-al/quetzal-openapi-client v3: true repositoryMetadata: base64Readme: >- IyBxdWV0emFsLW9wZW5hcGktY2xpZW50ClF1ZXR6YWw6IGFuIEFQSSB0byBtYW5hZ2UgZGF0YSBmaWxlcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBtZXRhZGF0YS4KClRoaXMgUHl0aG9uIHBhY2thZ2UgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhlIFtPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKSBwcm9qZWN0OgoKLSBBUEkgdmVyc2lvbjogMC41LjAKLSBQYWNrYWdlIHZlcnNpb246IDAuNS4wCi0gQnVpbGQgcGFja2FnZTogb3JnLm9wZW5hcGl0b29scy5jb2RlZ2VuLmxhbmd1YWdlcy5QeXRob25DbGllbnRDb2RlZ2VuCkZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlzaXQgW2h0dHBzOi8vcXVldHouYWxdKGh0dHBzOi8vcXVldHouYWwpCgojIyBSZXF1aXJlbWVudHMuCgpQeXRob24gMi43IGFuZCAzLjQrCgojIyBJbnN0YWxsYXRpb24gJiBVc2FnZQojIyMgcGlwIGluc3RhbGwKCllvdSBjYW4gaW5zdGFsbCBkaXJlY3RseSB3aXRoIGBgcGlwYGA6CgpgYGBzaApwaXAgaW5zdGFsbCBxdWV0emFsLW9wZW5hcGktY2xpZW50CmBgYAoKVGhlbiBpbXBvcnQgdGhlIHBhY2thZ2U6CmBgYHB5dGhvbgppbXBvcnQgcXVldHphbC5vcGVuYXBpX2NsaWVudCAKYGBgCgojIyBHZXR0aW5nIFN0YXJ0ZWQKClBsZWFzZSBmb2xsb3cgdGhlIFtpbnN0YWxsYXRpb24gcHJvY2VkdXJlXSgjaW5zdGFsbGF0aW9uLS11c2FnZSkgYW5kIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmc6CgpgYGBweXRob24KaW1wb3J0IHF1ZXR6YWwub3BlbmFwaV9jbGllbnQKZnJvbSBxdWV0emFsLm9wZW5hcGlfY2xpZW50LnJlc3QgaW1wb3J0IEFwaUV4Y2VwdGlvbgpmcm9tIHBwcmludCBpbXBvcnQgcHByaW50Cgpjb25maWd1cmF0aW9uID0gcXVldHphbC5vcGVuYXBpX2NsaWVudC5Db25maWd1cmF0aW9uKCkKIyBDb25maWd1cmUgSFRUUCBiYXNpYyBhdXRob3JpemF0aW9uOiBiYXNpYwpjb25maWd1cmF0aW9uLnVzZXJuYW1lID0gJ1lPVVJfVVNFUk5BTUUnCmNvbmZpZ3VyYXRpb24ucGFzc3dvcmQgPSAnWU9VUl9QQVNTV09SRCcKCiMgY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBBUEkgY2xhc3MKYXBpX2luc3RhbmNlID0gcXVldHphbC5vcGVuYXBpX2NsaWVudC5BdXRoZW50aWNhdGlvbkFwaShxdWV0emFsLm9wZW5hcGlfY2xpZW50LkFwaUNsaWVudChjb25maWd1cmF0aW9uKSkKCnRyeToKICAgICMgTG9naW4uCiAgICBhcGlfcmVzcG9uc2UgPSBhcGlfaW5zdGFuY2UuYXV0aF9nZXRfdG9rZW4oKQogICAgcHByaW50KGFwaV9yZXNwb25zZSkKZXhjZXB0IEFwaUV4Y2VwdGlvbiBhcyBlOgogICAgcHJpbnQoIkV4Y2VwdGlvbiB3aGVuIGNhbGxpbmcgQXV0aGVudGljYXRpb25BcGktPmF1dGhfZ2V0X3Rva2VuOiAlc1xuIiAlIGUpCgpgYGAKCiMjIERvY3VtZW50YXRpb24gZm9yIEFQSSBFbmRwb2ludHMKCkFsbCBVUklzIGFyZSByZWxhdGl2ZSB0byAqaHR0cHM6Ly9hcGkucXVldHouYWwvYXBpL3YxKgoKQ2xhc3MgfCBNZXRob2QgfCBIVFRQIHJlcXVlc3QgfCBEZXNjcmlwdGlvbgotLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0KKkF1dGhlbnRpY2F0aW9uQXBpKiB8IFsqKmF1dGhfZ2V0X3Rva2VuKipdKGRvY3MvQXV0aGVudGljYXRpb25BcGkubWQjYXV0aF9nZXRfdG9rZW4pIHwgKipQT1NUKiogL2F1dGgvdG9rZW4gfCBMb2dpbi4KKkF1dGhlbnRpY2F0aW9uQXBpKiB8IFsqKmF1dGhfbG9nb3V0KipdKGRvY3MvQXV0aGVudGljYXRpb25BcGkubWQjYXV0aF9sb2dvdXQpIHwgKipQT1NUKiogL2F1dGgvbG9nb3V0IHwgTG9nb3V0LgoqRGF0YUFwaSogfCBbKipwdWJsaWNfZmlsZV9kZXRhaWxzKipdKGRvY3MvRGF0YUFwaS5tZCNwdWJsaWNfZmlsZV9kZXRhaWxzKSB8ICoqR0VUKiogL2RhdGEvZmlsZXMve3V1aWR9IHwgRmV0Y2ggcHVibGljIGZpbGUuCipEYXRhQXBpKiB8IFsqKnB1YmxpY19maWxlX2ZldGNoKipdKGRvY3MvRGF0YUFwaS5tZCNwdWJsaWNfZmlsZV9mZXRjaCkgfCAqKkdFVCoqIC9kYXRhL2ZpbGVzLyB8IExpc3QgcHVibGljIGZpbGVzLgoqRGF0YUFwaSogfCBbKipwdWJsaWNfcXVlcnlfY3JlYXRlKipdKGRvY3MvRGF0YUFwaS5tZCNwdWJsaWNfcXVlcnlfY3JlYXRlKSB8ICoqUE9TVCoqIC9kYXRhL3F1ZXJpZXMvIHwgUHJlcGFyZSBhIHF1ZXJ5LgoqRGF0YUFwaSogfCBbKipwdWJsaWNfcXVlcnlfZGV0YWlscyoqXShkb2NzL0RhdGFBcGkubWQjcHVibGljX3F1ZXJ5X2RldGFpbHMpIHwgKipHRVQqKiAvZGF0YS9xdWVyaWVzL3txaWR9IHwgUXVlcnkgZGV0YWlscy4KKkRhdGFBcGkqIHwgWyoqcHVibGljX3F1ZXJ5X2ZldGNoKipdKGRvY3MvRGF0YUFwaS5tZCNwdWJsaWNfcXVlcnlfZmV0Y2gpIHwgKipHRVQqKiAvZGF0YS9xdWVyaWVzLyB8IExpc3QgcHVibGljIHF1ZXJpZXMuCipEYXRhQXBpKiB8IFsqKndvcmtzcGFjZV9jb21taXQqKl0oZG9jcy9EYXRhQXBpLm1kI3dvcmtzcGFjZV9jb21taXQpIHwgKipQVVQqKiAvZGF0YS93b3Jrc3BhY2VzL3t3aWR9L2NvbW1pdCB8IENvbW1pdCB3b3Jrc3BhY2UuCipEYXRhQXBpKiB8IFsqKndvcmtzcGFjZV9jcmVhdGUqKl0oZG9jcy9EYXRhQXBpLm1kI3dvcmtzcGFjZV9jcmVhdGUpIHwgKipQT1NUKiogL2RhdGEvd29ya3NwYWNlcy8gfCBDcmVhdGUgd29ya3NwYWNlLgoqRGF0YUFwaSogfCBbKip3b3Jrc3BhY2VfZGVsZXRlKipdKGRvY3MvRGF0YUFwaS5tZCN3b3Jrc3BhY2VfZGVsZXRlKSB8ICoqREVMRVRFKiogL2RhdGEvd29ya3NwYWNlcy97d2lkfSB8IERlbGV0ZSB3b3Jrc3BhY2UuCipEYXRhQXBpKiB8IFsqKndvcmtzcGFjZV9kZXRhaWxzKipdKGRvY3MvRGF0YUFwaS5tZCN3b3Jrc3BhY2VfZGV0YWlscykgfCAqKkdFVCoqIC9kYXRhL3dvcmtzcGFjZXMve3dpZH0gfCBXb3Jrc3BhY2UgZGV0YWlscy4KKkRhdGFBcGkqIHwgWyoqd29ya3NwYWNlX2ZldGNoKipdKGRvY3MvRGF0YUFwaS5tZCN3b3Jrc3BhY2VfZmV0Y2gpIHwgKipHRVQqKiAvZGF0YS93b3Jrc3BhY2VzLyB8IExpc3Qgd29ya3NwYWNlcy4KKkRhdGFBcGkqIHwgWyoqd29ya3NwYWNlX2ZpbGVfY3JlYXRlKipdKGRvY3MvRGF0YUFwaS5tZCN3b3Jrc3BhY2VfZmlsZV9jcmVhdGUpIHwgKipQT1NUKiogL2RhdGEvd29ya3NwYWNlcy97d2lkfS9maWxlcy8gfCBVcGxvYWQgZmlsZS4KKkRhdGFBcGkqIHwgWyoqd29ya3NwYWNlX2ZpbGVfZGVsZXRlKipdKGRvY3MvRGF0YUFwaS5tZCN3b3Jrc3BhY2VfZmlsZV9kZWxldGUpIHwgKipERUxFVEUqKiAvZGF0YS93b3Jrc3BhY2VzL3t3aWR9L2ZpbGVzL3t1dWlkfSB8IERlbGV0ZSBhIGZpbGUuCipEYXRhQXBpKiB8IFsqKndvcmtzcGFjZV9maWxlX2RldGFpbHMqKl0oZG9jcy9EYXRhQXBpLm1kI3dvcmtzcGFjZV9maWxlX2RldGFpbHMpIHwgKipHRVQqKiAvZGF0YS93b3Jrc3BhY2VzL3t3aWR9L2ZpbGVzL3t1dWlkfSB8IEZldGNoIGZpbGUuCipEYXRhQXBpKiB8IFsqKndvcmtzcGFjZV9maWxlX2ZldGNoKipdKGRvY3MvRGF0YUFwaS5tZCN3b3Jrc3BhY2VfZmlsZV9mZXRjaCkgfCAqKkdFVCoqIC9kYXRhL3dvcmtzcGFjZXMve3dpZH0vZmlsZXMvIHwgTGlzdCBmaWxlcy4KKkRhdGFBcGkqIHwgWyoqd29ya3NwYWNlX2ZpbGVfc2V0X21ldGFkYXRhKipdKGRvY3MvRGF0YUFwaS5tZCN3b3Jrc3BhY2VfZmlsZV9zZXRfbWV0YWRhdGEpIHwgKipQVVQqKiAvZGF0YS93b3Jrc3BhY2VzL3t3aWR9L2ZpbGVzL3t1dWlkfSB8IFJld3JpdGUgbWV0YWRhdGEuCipEYXRhQXBpKiB8IFsqKndvcmtzcGFjZV9maWxlX3VwZGF0ZV9tZXRhZGF0YSoqXShkb2NzL0RhdGFBcGkubWQjd29ya3NwYWNlX2ZpbGVfdXBkYXRlX21ldGFkYXRhKSB8ICoqUEFUQ0gqKiAvZGF0YS93b3Jrc3BhY2VzL3t3aWR9L2ZpbGVzL3t1dWlkfSB8IE1vZGlmeSBtZXRhZGF0YS4KKkRhdGFBcGkqIHwgWyoqd29ya3NwYWNlX3F1ZXJ5X2NyZWF0ZSoqXShkb2NzL0RhdGFBcGkubWQjd29ya3NwYWNlX3F1ZXJ5X2NyZWF0ZSkgfCAqKlBPU1QqKiAvZGF0YS93b3Jrc3BhY2VzL3t3aWR9L3F1ZXJpZXMvIHwgUHJlcGFyZSBhIHF1ZXJ5LgoqRGF0YUFwaSogfCBbKip3b3Jrc3BhY2VfcXVlcnlfZGV0YWlscyoqXShkb2NzL0RhdGFBcGkubWQjd29ya3NwYWNlX3F1ZXJ5X2RldGFpbHMpIHwgKipHRVQqKiAvZGF0YS93b3Jrc3BhY2VzL3t3aWR9L3F1ZXJpZXMve3FpZH0gfCBRdWVyeSBkZXRhaWxzLgoqRGF0YUFwaSogfCBbKip3b3Jrc3BhY2VfcXVlcnlfZmV0Y2gqKl0oZG9jcy9EYXRhQXBpLm1kI3dvcmtzcGFjZV9xdWVyeV9mZXRjaCkgfCAqKkdFVCoqIC9kYXRhL3dvcmtzcGFjZXMve3dpZH0vcXVlcmllcy8gfCBMaXN0IHF1ZXJpZXMuCipEYXRhQXBpKiB8IFsqKndvcmtzcGFjZV9zY2FuKipdKGRvY3MvRGF0YUFwaS5tZCN3b3Jrc3BhY2Vfc2NhbikgfCAqKlBVVCoqIC9kYXRhL3dvcmtzcGFjZXMve3dpZH0vc2NhbiB8IFVwZGF0ZSB2aWV3cy4KKlB1YmxpY0FwaSogfCBbKipwdWJsaWNfZmlsZV9kZXRhaWxzKipdKGRvY3MvUHVibGljQXBpLm1kI3B1YmxpY19maWxlX2RldGFpbHMpIHwgKipHRVQqKiAvZGF0YS9maWxlcy97dXVpZH0gfCBGZXRjaCBwdWJsaWMgZmlsZS4KKlB1YmxpY0FwaSogfCBbKipwdWJsaWNfZmlsZV9mZXRjaCoqXShkb2NzL1B1YmxpY0FwaS5tZCNwdWJsaWNfZmlsZV9mZXRjaCkgfCAqKkdFVCoqIC9kYXRhL2ZpbGVzLyB8IExpc3QgcHVibGljIGZpbGVzLgoqUHVibGljQXBpKiB8IFsqKnB1YmxpY19xdWVyeV9jcmVhdGUqKl0oZG9jcy9QdWJsaWNBcGkubWQjcHVibGljX3F1ZXJ5X2NyZWF0ZSkgfCAqKlBPU1QqKiAvZGF0YS9xdWVyaWVzLyB8IFByZXBhcmUgYSBxdWVyeS4KKlB1YmxpY0FwaSogfCBbKipwdWJsaWNfcXVlcnlfZmV0Y2gqKl0oZG9jcy9QdWJsaWNBcGkubWQjcHVibGljX3F1ZXJ5X2ZldGNoKSB8ICoqR0VUKiogL2RhdGEvcXVlcmllcy8gfCBMaXN0IHB1YmxpYyBxdWVyaWVzLgoqUHVibGljQXBpKiB8IFsqKndvcmtzcGFjZV9jcmVhdGUqKl0oZG9jcy9QdWJsaWNBcGkubWQjd29ya3NwYWNlX2NyZWF0ZSkgfCAqKlBPU1QqKiAvZGF0YS93b3Jrc3BhY2VzLyB8IENyZWF0ZSB3b3Jrc3BhY2UuCipQdWJsaWNBcGkqIHwgWyoqd29ya3NwYWNlX2ZldGNoKipdKGRvY3MvUHVibGljQXBpLm1kI3dvcmtzcGFjZV9mZXRjaCkgfCAqKkdFVCoqIC9kYXRhL3dvcmtzcGFjZXMvIHwgTGlzdCB3b3Jrc3BhY2VzLgoqUXVlcnlBcGkqIHwgWyoqcHVibGljX3F1ZXJ5X2NyZWF0ZSoqXShkb2NzL1F1ZXJ5QXBpLm1kI3B1YmxpY19xdWVyeV9jcmVhdGUpIHwgKipQT1NUKiogL2RhdGEvcXVlcmllcy8gfCBQcmVwYXJlIGEgcXVlcnkuCipRdWVyeUFwaSogfCBbKipwdWJsaWNfcXVlcnlfZGV0YWlscyoqXShkb2NzL1F1ZXJ5QXBpLm1kI3B1YmxpY19xdWVyeV9kZXRhaWxzKSB8ICoqR0VUKiogL2RhdGEvcXVlcmllcy97cWlkfSB8IFF1ZXJ5IGRldGFpbHMuCipRdWVyeUFwaSogfCBbKipwdWJsaWNfcXVlcnlfZmV0Y2gqKl0oZG9jcy9RdWVyeUFwaS5tZCNwdWJsaWNfcXVlcnlfZmV0Y2gpIHwgKipHRVQqKiAvZGF0YS9xdWVyaWVzLyB8IExpc3QgcHVibGljIHF1ZXJpZXMuCipRdWVyeUFwaSogfCBbKip3b3Jrc3BhY2VfcXVlcnlfY3JlYXRlKipdKGRvY3MvUXVlcnlBcGkubWQjd29ya3NwYWNlX3F1ZXJ5X2NyZWF0ZSkgfCAqKlBPU1QqKiAvZGF0YS93b3Jrc3BhY2VzL3t3aWR9L3F1ZXJpZXMvIHwgUHJlcGFyZSBhIHF1ZXJ5LgoqUXVlcnlBcGkqIHwgWyoqd29ya3NwYWNlX3F1ZXJ5X2RldGFpbHMqKl0oZG9jcy9RdWVyeUFwaS5tZCN3b3Jrc3BhY2VfcXVlcnlfZGV0YWlscykgfCAqKkdFVCoqIC9kYXRhL3dvcmtzcGFjZXMve3dpZH0vcXVlcmllcy97cWlkfSB8IFF1ZXJ5IGRldGFpbHMuCipRdWVyeUFwaSogfCBbKip3b3Jrc3BhY2VfcXVlcnlfZmV0Y2gqKl0oZG9jcy9RdWVyeUFwaS5tZCN3b3Jrc3BhY2VfcXVlcnlfZmV0Y2gpIHwgKipHRVQqKiAvZGF0YS93b3Jrc3BhY2VzL3t3aWR9L3F1ZXJpZXMvIHwgTGlzdCBxdWVyaWVzLgoqV29ya3NwYWNlQXBpKiB8IFsqKnB1YmxpY19xdWVyeV9kZXRhaWxzKipdKGRvY3MvV29ya3NwYWNlQXBpLm1kI3B1YmxpY19xdWVyeV9kZXRhaWxzKSB8ICoqR0VUKiogL2RhdGEvcXVlcmllcy97cWlkfSB8IFF1ZXJ5IGRldGFpbHMuCipXb3Jrc3BhY2VBcGkqIHwgWyoqd29ya3NwYWNlX2NvbW1pdCoqXShkb2NzL1dvcmtzcGFjZUFwaS5tZCN3b3Jrc3BhY2VfY29tbWl0KSB8ICoqUFVUKiogL2RhdGEvd29ya3NwYWNlcy97d2lkfS9jb21taXQgfCBDb21taXQgd29ya3NwYWNlLgoqV29ya3NwYWNlQXBpKiB8IFsqKndvcmtzcGFjZV9kZXRhaWxzKipdKGRvY3MvV29ya3NwYWNlQXBpLm1kI3dvcmtzcGFjZV9kZXRhaWxzKSB8ICoqR0VUKiogL2RhdGEvd29ya3NwYWNlcy97d2lkfSB8IFdvcmtzcGFjZSBkZXRhaWxzLgoqV29ya3NwYWNlQXBpKiB8IFsqKndvcmtzcGFjZV9mZXRjaCoqXShkb2NzL1dvcmtzcGFjZUFwaS5tZCN3b3Jrc3BhY2VfZmV0Y2gpIHwgKipHRVQqKiAvZGF0YS93b3Jrc3BhY2VzLyB8IExpc3Qgd29ya3NwYWNlcy4KKldvcmtzcGFjZUFwaSogfCBbKip3b3Jrc3BhY2VfZmlsZV9jcmVhdGUqKl0oZG9jcy9Xb3Jrc3BhY2VBcGkubWQjd29ya3NwYWNlX2ZpbGVfY3JlYXRlKSB8ICoqUE9TVCoqIC9kYXRhL3dvcmtzcGFjZXMve3dpZH0vZmlsZXMvIHwgVXBsb2FkIGZpbGUuCipXb3Jrc3BhY2VBcGkqIHwgWyoqd29ya3NwYWNlX2ZpbGVfZGVsZXRlKipdKGRvY3MvV29ya3NwYWNlQXBpLm1kI3dvcmtzcGFjZV9maWxlX2RlbGV0ZSkgfCAqKkRFTEVURSoqIC9kYXRhL3dvcmtzcGFjZXMve3dpZH0vZmlsZXMve3V1aWR9IHwgRGVsZXRlIGEgZmlsZS4KKldvcmtzcGFjZUFwaSogfCBbKip3b3Jrc3BhY2VfZmlsZV9kZXRhaWxzKipdKGRvY3MvV29ya3NwYWNlQXBpLm1kI3dvcmtzcGFjZV9maWxlX2RldGFpbHMpIHwgKipHRVQqKiAvZGF0YS93b3Jrc3BhY2VzL3t3aWR9L2ZpbGVzL3t1dWlkfSB8IEZldGNoIGZpbGUuCipXb3Jrc3BhY2VBcGkqIHwgWyoqd29ya3NwYWNlX2ZpbGVfZmV0Y2gqKl0oZG9jcy9Xb3Jrc3BhY2VBcGkubWQjd29ya3NwYWNlX2ZpbGVfZmV0Y2gpIHwgKipHRVQqKiAvZGF0YS93b3Jrc3BhY2VzL3t3aWR9L2ZpbGVzLyB8IExpc3QgZmlsZXMuCipXb3Jrc3BhY2VBcGkqIHwgWyoqd29ya3NwYWNlX2ZpbGVfc2V0X21ldGFkYXRhKipdKGRvY3MvV29ya3NwYWNlQXBpLm1kI3dvcmtzcGFjZV9maWxlX3NldF9tZXRhZGF0YSkgfCAqKlBVVCoqIC9kYXRhL3dvcmtzcGFjZXMve3dpZH0vZmlsZXMve3V1aWR9IHwgUmV3cml0ZSBtZXRhZGF0YS4KKldvcmtzcGFjZUFwaSogfCBbKip3b3Jrc3BhY2VfZmlsZV91cGRhdGVfbWV0YWRhdGEqKl0oZG9jcy9Xb3Jrc3BhY2VBcGkubWQjd29ya3NwYWNlX2ZpbGVfdXBkYXRlX21ldGFkYXRhKSB8ICoqUEFUQ0gqKiAvZGF0YS93b3Jrc3BhY2VzL3t3aWR9L2ZpbGVzL3t1dWlkfSB8IE1vZGlmeSBtZXRhZGF0YS4KKldvcmtzcGFjZUFwaSogfCBbKip3b3Jrc3BhY2VfcXVlcnlfY3JlYXRlKipdKGRvY3MvV29ya3NwYWNlQXBpLm1kI3dvcmtzcGFjZV9xdWVyeV9jcmVhdGUpIHwgKipQT1NUKiogL2RhdGEvd29ya3NwYWNlcy97d2lkfS9xdWVyaWVzLyB8IFByZXBhcmUgYSBxdWVyeS4KKldvcmtzcGFjZUFwaSogfCBbKip3b3Jrc3BhY2VfcXVlcnlfZGV0YWlscyoqXShkb2NzL1dvcmtzcGFjZUFwaS5tZCN3b3Jrc3BhY2VfcXVlcnlfZGV0YWlscykgfCAqKkdFVCoqIC9kYXRhL3dvcmtzcGFjZXMve3dpZH0vcXVlcmllcy97cWlkfSB8IFF1ZXJ5IGRldGFpbHMuCipXb3Jrc3BhY2VBcGkqIHwgWyoqd29ya3NwYWNlX3F1ZXJ5X2ZldGNoKipdKGRvY3MvV29ya3NwYWNlQXBpLm1kI3dvcmtzcGFjZV9xdWVyeV9mZXRjaCkgfCAqKkdFVCoqIC9kYXRhL3dvcmtzcGFjZXMve3dpZH0vcXVlcmllcy8gfCBMaXN0IHF1ZXJpZXMuCipXb3Jrc3BhY2VBcGkqIHwgWyoqd29ya3NwYWNlX3NjYW4qKl0oZG9jcy9Xb3Jrc3BhY2VBcGkubWQjd29ya3NwYWNlX3NjYW4pIHwgKipQVVQqKiAvZGF0YS93b3Jrc3BhY2VzL3t3aWR9L3NjYW4gfCBVcGRhdGUgdmlld3MuCgoKIyMgRG9jdW1lbnRhdGlvbiBGb3IgTW9kZWxzCgogLSBbQmFzZU1ldGFkYXRhXShkb2NzL0Jhc2VNZXRhZGF0YS5tZCkKIC0gW0Vycm9yXShkb2NzL0Vycm9yLm1kKQogLSBbRmlsZUNvbnRlbnRzXShkb2NzL0ZpbGVDb250ZW50cy5tZCkKIC0gW01ldGFkYXRhQnlGYW1pbHldKGRvY3MvTWV0YWRhdGFCeUZhbWlseS5tZCkKIC0gW1BhZ2luYXRlZEZpbGVzXShkb2NzL1BhZ2luYXRlZEZpbGVzLm1kKQogLSBbUGFnaW5hdGVkUXVlcmllc10oZG9jcy9QYWdpbmF0ZWRRdWVyaWVzLm1kKQogLSBbUGFnaW5hdGVkV29ya3NwYWNlc10oZG9jcy9QYWdpbmF0ZWRXb3Jrc3BhY2VzLm1kKQogLSBbUGFnaW5hdGlvbkVudmVsb3BlXShkb2NzL1BhZ2luYXRpb25FbnZlbG9wZS5tZCkKIC0gW1F1ZXJ5XShkb2NzL1F1ZXJ5Lm1kKQogLSBbUXVlcnlOb1Jlc3VsdHNdKGRvY3MvUXVlcnlOb1Jlc3VsdHMubWQpCiAtIFtUb2tlbl0oZG9jcy9Ub2tlbi5tZCkKIC0gW1dvcmtzcGFjZV0oZG9jcy9Xb3Jrc3BhY2UubWQpCgoKIyMgRG9jdW1lbnRhdGlvbiBGb3IgQXV0aG9yaXphdGlvbgoKCiMjIGFwaUtleQoKLSAqKlR5cGUqKjogQVBJIGtleQotICoqQVBJIGtleSBwYXJhbWV0ZXIgbmFtZSoqOiBYLUFQSS1LRVkKLSAqKkxvY2F0aW9uKio6IEhUVFAgaGVhZGVyCgoKIyMgYmFzaWMKCi0gKipUeXBlKio6IEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb24KCgojIyBiZWFyZXIKCi0gKipUeXBlKio6IEJlYXJlciBhdXRoZW50aWNhdGlvbgoKCiMjIEF1dGhvcgoKc3VwcG9ydEBxdWV0ei5hbAoKCg== readmeEtag: '"a307d4ef7f078d19d06e81ef5fa413627c835ccd"' readmeLastModified: Thu, 17 Oct 2019 12:49:40 GMT repositoryId: 172245557 description: Autogenerated Python client for the Quetzal API created: '2019-02-23T17:55:11Z' updated: '2019-10-17T12:50:29Z' language: Python archived: false stars: 0 watchers: 0 forks: 1 owner: quetz-al logo: https://avatars.githubusercontent.com/u/47522179?v=4 license: BSD-3-Clause repoEtag: '"0aea99815a11efc69b3baa3c23d7087842014d786c4dec6966af479ac0118942"' repoLastModified: Thu, 17 Oct 2019 12:50:29 GMT foundInMaster: true category: Description Validators id: 5fbdc491c2818ac4f76e96167dc5fde6 - source: openapi3 tags repository: https://github.com/ucl/isenseflu-openapi v3: true repositoryMetadata: base64Readme: >- IyBpc2Vuc2VmbHUtb3BlbmFwaQoKT3BlbkFQSSBEZWZpbml0aW9ucyBmb3IgaS1zZW5zZSBmbHUgQVBJCgpTcGVjaWZpY2F0aW9uOiBodHRwOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMgoKIyMgVmFsaWRhdGlvbgoKVXNlIHRoZSBbT3BlbiBBUEkgRW5mb3JjZXIgQ0xJXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vcGVuYXBpLWVuZm9yY2VyLWNsaS8pIHRvb2wgZm9yIHZhbGlkYXRpb24uIEluc3RhbGwgd2l0aCBgbnBtYDoKCmBgYApucG0gaW5zdGFsbCAtZyBvcGVuYXBpLWVuZm9yY2VyLWNsaQpgYGAKClZhbGlkYXRlIHRoZSBkZWZpbml0aW9ucyBmaWxlOgoKYGBgCm9wZW5hcGktZW5mb3JjZXIgdmFsaWRhdGUgb3BlbmFwaS55YW1sCmBgYAoKIyMgQ29weXJpZ2h0CgomY29weTsgMjAxOSBVQ0wgKFtodHRwczovL3d3dy51Y2wuYWMudWtdKGh0dHBzOi8vd3d3LnVjbC5hYy51aykpLgoKIyMgTGljZW5zZQoKWyFbTGljZW5zZTogR1BMIHYzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtR1BMdjMtYmx1ZS5zdmcpXShodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjApCgpHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSAgClZlcnNpb24gMywgMjkgSnVuZSAyMDA3CgpUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCk1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K readmeEtag: '"3eaebec6e4b740e9d144d1fa175af428132da576"' readmeLastModified: Thu, 06 Jun 2019 15:43:49 GMT repositoryId: 190232496 description: OpenAPI Definitions for i-sense flu API created: '2019-06-04T15:42:42Z' updated: '2019-06-06T15:43:57Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: UCL logo: https://avatars.githubusercontent.com/u/2951150?v=4 license: GPL-3.0 repoEtag: '"689b59041519b9b2b1d6aafbe7573c216c7af8ae362e6f0321f5bd99ce3768d6"' repoLastModified: Thu, 06 Jun 2019 15:43:57 GMT foundInMaster: true category: - Server - Parsers id: d293478945a898b421f0b65793024fbe - source: openapi3 tags repository: https://github.com/serialberry/openapispec v3: true repositoryMetadata: base64Readme: >- IyBHb2xhbmcgc3RydWN0cyBmb3IgT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiB2MwoKVGhlcmUgYXJlIG1hbnkgb3BlbnNvdXJjZSBnb2xhbmcgcGFja2FnZXMgaW1wbGVtZW50IE9wZW4gQVBJIHYzIHRvb2xpbmcgZm9yIHZhbGlkYXRpb24sIG1hcnNoYWwsIGFuZCB1bm1hcnNoYWwgZnVuY3Rpb25zLgoKTW9zdCBvZiB0aG9zZSBwcm9qZWN0cyBhZGRyZXNzIHNwZWNpZmljIHByb2JsZW0sIG9yIGltcGxlbWVudCBmdW5jdGlvbmFsaXR5IGFyb3VuZCB0b29saW5nIHN1cHBvcnQsIHRoZXJlZm9yZSB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBibG9hdGVkIHdpdGggc3BlY2lmaWMgbWV0aG9kIGltcGxlbWVudGF0aW9ucy4KCkFpbSBvZiB0aGlzIHJlcG9zaXRvcnkgdG8gbWFpbnRhaW4gZ29sYW5nIGRhdGEgc3RydWN0dXJlIGZvciBPcGVuIEFQSSBzcGVjaWZpY2F0aW9uIHZlcnNpb24gMy54IHdpdGhvdXQgc3BlY2lmaWMgdG9vbGluZyBmdW5jdGlvbnMuCgpQYXJzaW5nLCB2YWxpZGF0aW9uLCBhbmQgaW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGFyZSB1cHRvIHRoZSByZWZlcmVuY2UgcHJvamVjdC4KCkhvd2V2ZXIsIHBsZWFzZSBub3RlIGF0IHRoZSBtb21lbnQgdGhpcyBpcyBhbiBleHBlcmltZW50YWwgcmVwb3NpdG9yeS4KCiMjIFByb2plY3Qgc3R1Y3R1cmUKClByb2plY3Qgc3RydWN0dXJlIGlzIGJhc2VkIG9uIFtnb2xhbmctc3RhbmRhcmRzXShodHRwczovL2dpdGh1Yi5jb20vZ29sYW5nLXN0YW5kYXJkcy9wcm9qZWN0LWxheW91dCkgcmVmZXJlbmNlIGRvY3MuCgojIyMgW3BrZ10oaHR0cHM6Ly9naXRodWIuY29tL01haGlmZXJuYW5kby9vcGVuYXBpc3BlYy90cmVlL21hc3Rlci9wa2cpCgpQcm92aWRlcyBkYXRhIHN0cnVjdHVyZXMgZm9yIFtPcGVuIEFQSSBzcGVjaWZpY2F0aW9uIHZlcnNpb24gMy4wLjNdKGh0dHA6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zKQ== readmeEtag: '"5d5c7832c291597aa140438fb778534906f13778"' readmeLastModified: Sat, 27 Jun 2020 19:35:17 GMT repositoryId: 266426426 description: Open API 3.0 spec Golang package created: '2020-05-23T21:59:30Z' updated: '2020-06-27T19:35:26Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: serialberry logo: https://avatars.githubusercontent.com/u/49234321?v=4 repoEtag: '"ab49624ba5153f761328677bb04634f69f10c11bc5ad0e3626e281a0a509fd4a"' repoLastModified: Sat, 27 Jun 2020 19:35:26 GMT foundInMaster: true category: Parsers id: d4476af9dc7e5b842f16249529c19e64 - source: openapi3 tags repository: https://github.com/b1a9id/open-api-sample v3: true repositoryMetadata: base64Readme: >- IyBTYW1wbGUgZm9yIHNwcmluZ2RvYy1vcGVuYXBpCjxhIGhyZWY9Imh0dHBzOi8vdHJhY2tnaXQuY29tIj4KPGltZyBzcmM9Imh0dHBzOi8vc2Z5LmN4L3UveGRmIiBhbHQ9InRyYWNrZ2l0LXZpZXdzIiAvPgo8L2E+CgojIyBUcnkgaXQKUnVuIEFwcApgYGAKJCAuL2dyYWRsZXcgY2xlYW4gYm9vdFJ1bgpgYGAKClBhdGhzCmBgYApHRVQgaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaS92My9hcGktZG9jcy8KICBPcGVuQVBJIGRvY3VtZW50YXRpb24gaW4gSlNPTiBmb3JtYXQKICAKR0VUIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvdjMvYXBpLWRvY3MueWFtbAogIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBpbiBZQU1MIGZvcm1hdAogIApHRVQgaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaS9zd2FnZ2VyLXVpLmh0bWwKICBTd2FnZ2VyIFVJIEhUTUwgZG9jdW1lbnRhdGlvbgpgYGAK readmeEtag: '"4548b91fd02b699b03a721461db516f22a47d4ed"' readmeLastModified: Sun, 25 Oct 2020 07:58:27 GMT repositoryId: 295139675 description: Sample for springdoc-openapi created: '2020-09-13T11:45:33Z' updated: '2020-10-25T07:58:30Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: b1a9id logo: https://avatars.githubusercontent.com/u/19252181?v=4 repoEtag: '"b89a5e302e52e44db7b129a49ecfdca7a246b8b84cd40619ed4349e75d7da4c9"' repoLastModified: Sun, 25 Oct 2020 07:58:30 GMT foundInMaster: true category: - Low-level Tooling - Server Implementations id: 2d23b950c126fb81e9b8209e48e86ec6 - source: openapi3 tags repository: https://github.com/banedd/api-template v3: true repositoryMetadata: base64Readme: >- IyBFeHByZXNzIEFQSSBUZW1wbGF0ZQoKVGhpcyBpcyBhIHNpbXBsZSBFeHByZXNzIEFQSSB0ZW1wbGF0ZSB0byB1c2UgZm9yIEFQSSBkZXZlbG9wbWVudC4gRmVhdHVyZXM6CgotIENvbnRhaW5lcml6ZWQgZm9yIHVzZSB3aXRoIERvY2tlcgotIE5vZGVtb24gZm9yIGRldmVsb3BtZW50IHRvIGFsbG93IGVhc3kgcmVsb2FkaW5nIG9uIGNoYW5nZQotIEluY2x1ZGVzIFN3YWdnZXIgVUkgYW5kIEpTT05kb2MgYXV0b2dlbmVyYXRpb24KLSBMb2dnaW5nIHNlcnZpY2UgdG8gYSByb2xsaW5nIGZpbGUKLSBSZXF1ZXN0IGxvZ3MKLSBDb25zb2xlIGxvZ2dpbmcgZm9yIGRldmVsb3BtZW50IG1vZGUKLSBTUUxpdGUgYXMgdGhlIGRhdGFiYXNlIGZvciB0aGUgZXhhbXBsZSwgY2FuIGJlIGNoYW5nZWQgdG8gZGlmZmVyZW50IGRhdGEgc291cmNlIGFzIGRlc2lyZWQKLSBWUyBDb2RlIGRlYnVnZ2luZyBjb25maWd1cmF0aW9uCgojIEJ1aWxkaW5nIGFuZCBydW5uaW5nIHRoZSBwcm9qZWN0CgotIFJ1biBgbnBtIGluc3RhbGxgIHRvIGluc3RhbGwgYWxsIHRoZSBwcm9qZWN0IGRlcGVuZGVuY2llcwotIFJ1biBgc3RhcnQuc2hgIHRvIHJ1biB0aGUgcHJvamVjdCBsb2NhbGx5CgpOT1RFOiBUbyBlbmFibGUgU3dhZ2dlciBVSSBzZXQgKipOT0RFX0VOVioqIHRvICoqZGV2ZWxvcG1lbnQqKgo= readmeEtag: '"8226bbe5eb4fba9669a52202e8894e5b1d89826f"' readmeLastModified: Tue, 31 Mar 2020 14:50:13 GMT repositoryId: 240870348 description: Express API Template created: '2020-02-16T10:16:17Z' updated: '2020-03-31T14:50:22Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: baneDD logo: https://avatars.githubusercontent.com/u/661366?v=4 repoEtag: '"bb87c1ff1a1b0f72cf864657e976e3a41f8f15ea4548ef4c263dc18b4095221b"' repoLastModified: Tue, 31 Mar 2020 14:50:22 GMT foundInMaster: true category: Server Implementations id: a406abd521e3706405bf7f0d846b56da - source: openapi3 tags repository: https://github.com/amitvsavant/jinja-template-2-open-api v3: true repositoryMetadata: base64Readme: >- IyBKaW5qYSBUZW1wbGF0ZSB0byBPcGVuIEFQSSAzLjAgWUFNTApUaGlzIHJlcG9zaXRvcnkgcHJvdmlkZXMgc2FtcGxlIFB5dGhvbiAzLjcgY29kZSB0byBnZW5lcmF0ZSBPcGVuIEFQSSAzLjAgc3BlY2lmaWNhdGlvbiBZQU1MIGZpbGVzIHVzaW5nIEppbmphMiB0ZW1wbGF0ZS4gSXQgc2hvd3MgaG93IHRvIGdlbmVyYXRlIG11bHRpcGxlIHNpbWlsYXIgQVBJIHNwZWNpZmljYXRpb25zIGZyb20gYnkgYXBwbHlpbmcgZGF0YSBpbiBKc29uIGZvcm1hdCB0byBhIEppbmphMiB0ZW1wbGF0ZSBvZiBhbiBPcGVuIEFQSSBzcGVjaWZpY2F0aW9uIGZpbGUuIFRoZSBjb2RlIGdlbmVyYXRlcyBBUEkgc3BlY2lmaWNhdGlvbnMgZm9yIHNpbXBsZSBQZXQgU3RvcmUgYW5kIEJvb2sgU3RvcmUgQVBJcyB1c2luZyBhIGdlbmVyaWMgU3RvcmUgdGVtcGxhdGUgZmlsZS4KCiMjIFN0cnVjdHVyZSBvZiB0aGUgcHJvamVjdAoKIyMjIGRhdGEgZm9sZGVyCgoqKmRhdGEuanNvbjoqKiAgVGhlIEpzb24gZmlsZSBjb250YWluaW5nIHRoZSBkYXRhIG9mIG11bHRpcGxlIEFQSSBzcGVjaWZpY2F0aW9ucyB0byBiZSBnZW5lcmF0ZWQuCgojIyMgdGVtcGxhdGVzIGZvbGRlcgoqKnN0b3JlLXRlbXBsYXRlLnlhbWw6KiogR2VuZXJpYyB0ZW1wbGF0ZSBmaWxlIG9mIGEgU3RvcmUgQVBJLgoKIyMjIGdlbmVyYXRlZC1zcGVjIGZvbGRlcgpUaGUgZGVzdGluYXRpb24gZm9sZGVyIHdoZXJlIHRoZSBmaW5hbCBzcGVjaWZpY2F0aW9uIGZpbGVzIHdpbGwgYmUgY3JlYXRlZCBhZnRlciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLgoqKnN0b3JlLXRlbXBsYXRlLnlhbWw6KiogR2VuZXJpYyB0ZW1wbGF0ZSBmaWxlIG9mIGEgU3RvcmUgQVBJLgoKIyMgTGljZW5zZQotIFRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIHByb2plY3QgaXMgcHVibGlzaGVkIHVuZGVyIFtNSVQgTGljZW5zZV0oaHR0cHM6Ly9naXRodWIuY29tL2FtaXR2c2F2YW50L2ppbmphLXRlbXBsYXRlLTItb3Blbi1hcGkvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZCku readmeEtag: '"bf594ca21dffe3f58f07b4b03466a31d7542c6c3"' readmeLastModified: Wed, 30 Dec 2020 20:39:11 GMT repositoryId: 325632221 description: Jinja Template to Open API 3.0 YAML created: '2020-12-30T19:31:30Z' updated: '2020-12-30T20:41:32Z' language: Python archived: false stars: 0 watchers: 1 forks: 1 owner: amitvsavant logo: https://avatars.githubusercontent.com/u/30230131?v=4 license: MIT repoEtag: '"bc9181c957a3e6a35553560ceed0ebbbe45e0ee3d1efcee2bc8d9e77f2fd9688"' repoLastModified: Wed, 30 Dec 2020 20:41:32 GMT foundInMaster: true category: - Testing - Parsers id: 4b5cc797d55cc42f1877fa0657359f84 - source: openapi3 tags repository: https://github.com/claudiocifuentesalonso/spring-cloud-service-discovery v3: true repositoryMetadata: base64Readme: >- IyBzcHJpbmctY2xvdWQtc2VydmljZS1kaXNjb3ZlcnkKSW4gdGhpcyByZXBvc2l0b3J5IHdlIGhhdmUgdGhyZWUgbWljcm9zZXJ2aWNlcyB0byBpbXBsZW1lbnQgc2VydmljZSBkaXNjb3ZlcnkgdXNpbmcgc3ByaW5nIGNsb3VkLgoKIyMgVXNhZ2UKClR3byBvcHRpb25zIHRvIHJ1biB0aGUgYXBwbGljYXRpb25zOgoxLiBFeGVjdXRlIGVhY2ggYXBwbGljYXRpb24gc2VwYXJldGx5IGluIG9yZGVyIChldXJla2Etc2VydmVyLCBvcGVuLWFwaS1zcHJpbmdkb2MgYW5kIG9wZW4tYXBpLWNsaWVudCkgdXNpbmc6CgpgYGBiYXNoCm12biBzcHJpbmctYm9vdDpydW4KYGBgCgoyLiBCdWlsZCBkb2NrZXIgaW1hZ2VzIChEb2NrZXJmaWxlIHByZXNlbnQgZm9yIGVhY2ggYXBwbGljYXRpb24pIGFuZCBleGVjdXRlIHRoZSBhcHBsaWNhdGlvbnMgdXNpbmcgZG9ja2VyIGNvbXBvc2UgKGBgYGRvY2tlci1jb21wb3NlLXltbGBgYCBmaWxlKToKYGBgCmRvY2tlci1jb21wb3NlIHVwCmBgYAo= readmeEtag: '"fba2f44b0689de19be3bc8bbbf38fd459cd0d9b6"' readmeLastModified: Mon, 01 Feb 2021 01:29:43 GMT repositoryId: 333291815 description: >- In this repository we have three microservices to implement service discovery using spring cloud. created: '2021-01-27T03:28:13Z' updated: '2021-02-01T01:36:08Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: ClaudioCifuentesAlonso logo: https://avatars.githubusercontent.com/u/31392117?v=4 repoEtag: '"672e58c4df42627f381b5e9c596625543a9d756c7539074fb5ff636cc8f0e0fa"' repoLastModified: Mon, 01 Feb 2021 01:36:08 GMT foundInMaster: true category: - Server - Server Implementations id: f59f91b9c34d83fff8f1dd6fc14a1d11 - source: openapi3 tags repository: https://github.com/tanqidong1992/code-doc-tool v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJ5paH5qGj5bel5YW3Cui/meaYr+S4gOS4quWIhuaekFNwcmluZ+mhueebruS4reeahEphdmHmupDku6PnoIEo5rOo6YeKKeS7peWPimNsYXNz5paH5Lu255Sf5oiQT3BlbkFQSeaOpeWPo+aWh+aho+eahOW3peWFty4KIyMg5Yqf6IO954m55oCnCi0g5o+Q5L6b6ZuG5Lit5byP55qE5o6l5Y+j5paH5qGj566h55CG5bel5YW3KOmbhuaIkFN3YWdnZXItVUnvvIxTd2FnZ2VyLUVkaXRvcinjgIIKLSDliIbmnpDms6jph4rnlJ/miJBPcGVuQVBJ5o6l5Y+j5paH5qGj77yM5peg6ZyAU3dhZ2dlcuazqOino+OAggotIOaUr+aMgeWIhuaekE1hdmVu5aSW6YOo5rqQ5Luj56CBSmFy5paH5Lu244CCCi0g5o+Q5L6bTWF2ZW7mj5Lku7bnlKjkuo7pobnnm67pm4bmiJDjgIIKLSDmlK/mjIHnlJ/miJBNYXJrZG93buaWh+aho+OAggotIOaUr+aMgU9wZW5BUEnmoKHpqozjgIIKIyMg5L2/55SoCiMjIyDpg6jnvbLmjqXlj6PmlofmoaPnrqHnkIblt6XlhbcKMS4g57yW6K+R5oiQZG9ja2Vy6ZWc5YOPCiAgIGBgYHNoZWxsCiAgIGNkIG9wZW5hcGktdWkKICAgbXZuIGNvbXBpbGUgamliOmJ1aWxkVGFyCiAgIGBgYAoyLiDlr7zlhaVkb2NrZXLplZzlg48KICAgYGBgc2hlbGwKICAgZG9ja2VyIGltYWdlIGxvYWQgLWkgdGFyZ2V0L2ppYi1pbWFnZS50YXIgCiAgIGBgYAozLiDphY3nva7ov5DooYwKICAgYGBgc2hlbGwKICAgZG9ja2VyIHJ1biAtLXJtIC10aSAtZSBTWVNURU1fTkFNRT0iWFhY57O757uf5o6l5Y+j5paH5qGjIiAtcCA4MDgwOjgwL3RjcCBobnZtbnMvb3BlbmFwaS11aTowLjAuMgogICBgYGAKICAgZG9ja2VyLWNvbXBvc2Xlj4LogIMKICAgYGBgeW1sCiAgIHZlcnNpb246ICIyLjQiCiAgIHNlcnZpY2VzOgogICAgIHRlc3Q6CiAgICAgIGltYWdlOiBobnZtbnMvb3BlbmFwaS11aTowLjAuMgogICAgICByZXN0YXJ0OiBhbHdheXMKICAgICAgcG9ydHM6CiAgICAgICAgLSA5MDAwOjgwL3RjcAogICAgICB2b2x1bWVzOgogICAgICAgIC0gL2RhdGEvYXBwL2FwaWRvYy90ZXN0L2RhdGE6L2RhdGEKICAgICAgICAtIC9kYXRhL2FwcC9hcGlkb2MvdGVzdC9oaXN0b3J5Oi9oaXN0b3J5CiAgICAgIG1lbV9saW1pdDogIjEwMjRNIgogICAgICBlbnZpcm9ubWVudDoKICAgICAgICBTWVNURU1fTkFNRTogIlhYWOezu+e7n+aOpeWPo+aWh+ahoyIKICAgYGBgCjQuIOaJk+W8gOa1j+iniOWZqOiuv+mXruS4u+mhte+8mmh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9kb2MvCiMjIyDpobnnm67pm4bmiJBNYXZlbuaPkuS7tgoxLiDliqDlhaXmj5Lku7blnZDmoIcKICAgYGBgeG1sCiAgICAgICAgICAgIDxwbHVnaW4+CiAgICAgICAgICAgICAgICA8Z3JvdXBJZD5jb20uaG5nZC50b29sPC9ncm91cElkPgogICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29kZWdlbi1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICAgICA8dmVyc2lvbj4yLjYuMC1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gY29udHJvbGxlcuexu+aJgOWcqOWMheWQjeensCAtLT4KICAgICAgICAgICAgICAgICAgICA8cGFja2FnZUZpbHRlcj5jb20uaG5nZC53ZWIuY29udHJvbGxlcjwvcGFja2FnZUZpbHRlcj4KICAgICAgICAgICAgICAgICAgICA8IS0tIOmFjee9rueUn+aIkG9wZW5hcGnmlofmoaPnmoTln7rnoYDkv6Hmga/phY3nva7mlofku7bmiYDlnKjkvY3nva4gCiAgICAgICAgICAgICAgICAgICAgPGNvbmZGaWxlUGF0aD4ke3Byb2plY3QuYmFzZWRpcn0vYnVpbGQtY29uZmlnL29wZW5hcGkuanNvbjwvY29uZkZpbGVQYXRoPiAtLT4KICAgICAgICAgICAgICAgICAgICA8IS0tT3BlbkFQSSBVSSDmnI3liqHlnLDlnYAs6YWN572u5ZCO5o6l5Y+j5paH5qGj5bCG6Ieq5Yqo5LiK5Lyg5Yiw6K+l5pyN5YqhIC0tPgogICAgICAgICAgICAgICAgICAgIDxvcGVuQVBJVUlTZXJ2ZXI+bG9jYWxob3N0OjgwODA8L29wZW5BUElVSVNlcnZlcj4KICAgICAgICAgICAgICAgICAgICA8IS0tIOa6kOeggeWIhuaekOaOkumZpOi3r+W+hCAtLT4KICAgICAgICAgICAgICAgICAgICA8ZXhjbHVkZXM+KiovY29tL2huZ2QvbW9kZWwvKkV4YW1wbGUuamF2YSwqKi9jb20vaG5nZC9kYW8vKi5qYXZhPC9leGNsdWRlcz4KICAgICAgICAgICAgICAgICAgICA8IS0tIOa6kOeggeWIhuaekOWMheWQq+i3r+W+hCAtLT4KICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZXM+KiovY29tL2huZ2QvKiovKi5qYXZhLGNvbS9obmdkLyoqLyouamF2YTwvaW5jbHVkZXM+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBvcGVuYXBp5o6l5Y+j5Z+656GA5Zyw5Z2AIC0tPgogICAgICAgICAgICAgICAgICAgIDxvcGVuQVBJU2VydmVyVVJMPmh0dHBzOi8vbG9jYWxob3N0OjgwODAvYXBpPC9vcGVuQVBJU2VydmVyVVJMPgogICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgogICAgICAgICAgICA8L3BsdWdpbj4KICAgYGBgCjIuIOeUn+aIkOaOpeWPo+aWh+aho+W5tuS4iuS8oOWIsOaOpeWPo+aWh+aho+euoeeQhuW3peWFtwogICBgYGBzaGVsbAogICBtdm4gY29tcGlsZSBjb2RlZ2VuOm9wZW5hcGkKICAgYGBgCjMuIOWcqOebruW9lSR7YmFzZWRpcn0vdGFyZ2V0L29wZW5hcGnkuIvlj6/ku6XnnIvliLDovpPlh7rnmoRvcGVuYXBpIGpzb27mlofmoaM= readmeEtag: '"ad59ba1e8e950dd586f32b82e279657f9b4ab208"' readmeLastModified: Tue, 28 Sep 2021 06:36:33 GMT repositoryId: 367232700 description: 这是一个分析Spring项目中的Java源代码(注释)以及class文件生成OpenAPI接口文档的工具. created: '2021-05-14T02:54:23Z' updated: '2021-09-28T06:36:51Z' language: Java archived: false stars: 0 watchers: 2 forks: 0 owner: tanqidong1992 logo: https://avatars.githubusercontent.com/u/9072280?v=4 repoEtag: '"eec6edcca6d6ae5998a17bc106829464f6706ef509e69cc46e3e440bc26441a0"' repoLastModified: Tue, 28 Sep 2021 06:36:51 GMT foundInMaster: true category: Code Generators id: 8a2230e05d970d422958625db817d08c - source: openapi3 tags repository: https://github.com/sylvain12/mven-project v3: true repositoryMetadata: base64Readme: >- IyBNVkVOIChNb25nb0RCLCBWdWUuSlMsIEV4cHJlc3MsIE5vZGUuSlMpIFBST0pFQ1QKCnRoZSBwcm9qZWN0IGltcGxlbWVudCBDUlVEIG9wZXJhdGlvbnMgb24gY2xpZW50cyBhbmQgcHJvdmlkZXJzLgoKLS0tCiMjIDEuIFJlcXVpcmVtZW50cwoKRm9yIGRldmVsb3BtZW50LCB5b3Ugd2lsbCBvbmx5IG5lZWQgYE5vZGUuanNgIGFuZCBhIG5vZGUgZ2xvYmFsIHBhY2thZ2UsIGBucG1gLCBgZ2l0YCwgYG1vbmdvZGJgIChGb3IgZGF0YWJhc2UpIGluc3RhbGxlZCBpbiB5b3VyIGVudmlyb25tZW50LgoKIyMjIGBOb2RlLmpzIC8gbnBtYAotICMjIyMgTm9kZSBpbnN0YWxsYXRpb24gb24gV2luZG93cwoKICBKdXN0IGdvIG9uIFtvZmZpY2lhbCBOb2RlLmpzIHdlYnNpdGVdKGh0dHBzOi8vbm9kZWpzLm9yZy8pIGFuZCBkb3dubG9hZCB0aGUgaW5zdGFsbGVyLgoKLSAjIyMjIE5vZGUgaW5zdGFsbGF0aW9uIG9uIExpbnV4IChVYnVudHUpCgogIFlvdSBjYW4gaW5zdGFsbCBub2RlanMgYW5kIG5wbSBlYXNpbHkgd2l0aCBhcHQgaW5zdGFsbCwganVzdCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kcy4KCiAgICAgICQgc3VkbyBhcHQgdXBkYXRlCiAgICAgICQgc3VkbyBhcHQgaW5zdGFsbCBub2RlanMKICAgICAgJCBzdWRvIGFwdCBpbnN0YWxsIG5wbQoKLSAjIyMjIE90aGVyIE9wZXJhdGluZyBTeXN0ZW1zCiAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGluc3RhbGxhdGlvbiBvbiB0aGUgW29mZmljaWFsIE5vZGUuanMgd2Vic2l0ZV0oaHR0cHM6Ly9ub2RlanMub3JnLykgYW5kIHRoZSBbb2ZmaWNpYWwgTlBNIHdlYnNpdGVdKGh0dHBzOi8vbnBtanMub3JnLykuCgpJZiB0aGUgaW5zdGFsbGF0aW9uIHdhcyBzdWNjZXNzZnVsLCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZC4KCiAgICAkIG5vZGUgLS12ZXJzaW9uCiAgICB2OC4xMS4zCgogICAgJCBucG0gLS12ZXJzaW9uCiAgICA2LjEuMAoKSWYgeW91IG5lZWQgdG8gdXBkYXRlIGBucG1gLCB5b3UgY2FuIG1ha2UgaXQgdXNpbmcgYG5wbWAhIENvb2wgcmlnaHQ/IEFmdGVyIHJ1bm5pbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kLCBqdXN0IG9wZW4gYWdhaW4gdGhlIGNvbW1hbmQgbGluZSBhbmQgYmUgaGFwcHkuCgogICAgJCBucG0gaW5zdGFsbCBucG0gLWcKCiMjIyBgR2l0YAotICMjIyMgR2l0IGluc3RhbGxhdGlvbiBvbiBXaW5kb3dzClZpc2l0OiB0aGlzIHNpdGUgaHR0cHM6Ly9naXQtc2NtLmNvbS8gYW5kIGRvd25sb2FkIGV4ZWN1dGFibGUgZmlsZSBhbmQgcnVuIGl0CgotICMjIyMgR2l0IGluc3RhbGxhdGlvbiBvbiBMaW51eChVYnVudHUpCgogICAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCBnaXQKCkFmdGVyIHlvdSBjYW4gcnVuIHRoaXMgY29tbWFuZCB0byBjaGVjawoKICAgICAgJCBnaXQgLS12ZXJzaW9uCiAgICAgIGdpdCB2ZXJzaW9uIDIuMjUuMQoKIyMjIGBNb25nb0RCYAoKVmlzaXQgdGhpcyBsaW5rIGFuZCBmb2xsb3cgdGhlIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgZm9yIHlvdXIgT1MKCj0+IFtVYnVudHUgaW5zdGFsbGF0aW9uIGxpbmtdKGh0dHBzOi8vZG9jcy5tb25nb2RiLmNvbS9tYW51YWwvdHV0b3JpYWwvaW5zdGFsbC1tb25nb2RiLW9uLXVidW50dS8pCgo9PiBbV2luZG93cyBpbnN0YWxsYXRpb24gbGlua10oaHR0cHM6Ly9kb2NzLm1vbmdvZGIuY29tL21hbnVhbC90dXRvcmlhbC9pbnN0YWxsLW1vbmdvZGItb24td2luZG93cy8pCgo9PiBbbWFjT1MgaW5zdGFsbGF0aW9uIGxpbmtdKGh0dHBzOi8vZG9jcy5tb25nb2RiLmNvbS9tYW51YWwvdHV0b3JpYWwvaW5zdGFsbC1tb25nb2RiLW9uLW9zLXgtdGFyYmFsbC8pCgpBZnRlciBtb25nb0RCIGluc3RhbGxpbmcgcnVuCgogICAgJCBtb25nbyAtLXZlcnNpb24KCiAgICAgIEJ1aWxkIEluZm86IHsKICAgICAgInZlcnNpb24iOiAiNC40LjQiLAogICAgICAiZ2l0VmVyc2lvbiI6ICI4ZGIzMGE2M2RiMWE5ZDg0YmRjYWQwYzgzMzY5NjIzZjcwOGUwMzk3IiwKICAgICAgIm1vZHVsZXMiOiBbXSwKICAgICAgImFsbG9jYXRvciI6ICJzeXN0ZW0iLAogICAgICAiZW52aXJvbm1lbnQiOiB7CiAgICAgICAgICAiZGlzdGFyY2giOiAieDg2XzY0IiwKICAgICAgICAgICJ0YXJnZXRfYXJjaCI6ICJ4ODZfNjQiCiAgICAgIH0KCkNvbm5lY3QgdG8gbW9uZ29EQiBzaGVsbAoKICAgICQgbW9uZ28KICAgID4gc2hvdyBkYnMKCiAgICBhZG1pbiAgICAgICAgIDAuMDAwR0IKICAgIGNsaWVudC1hcHAgICAgMC4wMDBHQgogICAgY29uZmlnICAgICAgICAwLjAwMEdCCiAgICBsb2NhbCAgICAgICAgIDAuMDAwR0IKCi0tLQojIyAyLiBJbnN0YWxsIHByb2plY3QKCgpDbG9uZSB0aGUgcHJvamVjdCBjb2RlIG9uIHlvdXIgbWFjaGluZQoKICAgICQgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9zeWx2YWluMTIvbXZlbi1wcm9qZWN0CiAgICAkIGNkIG12ZW4tcHJvamVjdAogICAgJCBscwogICAgUmVhZG1lLm1kICAgY2xpZW50ICAgY29uZmlnLmV4YW1wbGUuZW52IG1vZGVscyAgIHBhY2thZ2UtbG9jay5qc29uICByb3V0ZXMgICAgIHV0aWxzIGFwcC5qcyAgICBjb25maWcuZW52ICAgIGNvbnRyb2xsZXJzICAgcGFja2FnZS5qc29uICBzZXJ2ZXIuanMKCiMjIDMuIENvbmZpZ3VyYXRvbgogIyMjIGBOb2RlIENvbmZpZ3VyYXRpb25gCiBBdCB0aGUgcm9vdCBvZiB0aGUgcHJvamVjdCBydW4gOgoKICAgICQgbnBtIGluc3RhbGwKICMjIyBgQ2xpZW50IHNpZGUgKFZ1ZS5KUykgQ29uZmlndXJhdGlvbmAKICAgICQgY2QgY2xpZW50CiAgICAkIG5wbSBpbnN0YWxsCgogIyMjIGBEYXRhYmFzZSBDb25maWd1cmF0aW9uYApDb25uZWN0IHRvIG1vbmdvREIgYW5kIGNyZWF0ZSBhIGRhdGFiYXNlCgogICAgJCBtb25nbwogICAgPiB1c2UgPGRhdGFiYXNlX25hbWU+CiAgICBzd2l0Y2hlZCB0byBkYiA8ZGF0YWJhc2VfbmFtZT4KICAgID4gcXVpdCgpCiAgICAkIAogICAgCiMjIyBgRW52aXJvbm1lbnQgdmFyaWFibGVzIGNvbmZpZ3VyYXRpb25gCm1vdmUgdGhlIGBjb25maWcuZXhhbXBsZS5lbnZgIHRvIGBjb25maWcuZW52YApNYWtlIHN1cmUgdG8gaW4gdGhlIHJvb3Qgb2YgdGhlIHByb2plY3QKCiAgICAkIG12IGNvbmZpZy5leGFtcGxlLmVudiBjb25maWcuZW52CgpvcGVuIHRoZSBgY29uZmlnLmVudmAgZmlsZSBhbmQgc2V0IHZhcmlhYmxlIGVudmlyb25tZW50CgpSZXBsYWNlIGFsbCB0aGUgdmFyaWFibGUgYmV0d2VlbiB3aXRoIHRoZWlyIGNvcnJlc3BvbmRpbmcgdmFsdWUKCiAgICBQT1JUPTxOT0RFX1NFUlZFUl9QT1JUPgogICAgREFUQUJBU0VfTE9DQUw9bW9uZ29kYjovL2xvY2FsaG9zdDo8TU9OR09EQl9QT1JUPi88REFUQUJBU0VfTkFNRT4KICAgIERBVEFCQVNFX1BST0Q9PFBST0RVQ1RJT05fREFUQUJBU0VfVVJJPgogICAgTk9ERV9FTlY9ZGV2ZWxvcG1lbnQKTkI6IGZvciBkZXBsb3ltZW50IHdlIHVzZSBgcHJvZHVjdGlvbmAKCkFmdGVyIHZhcmlhYmxlcyBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uLCBzZXQgYE5PREVfUE9SVGAgb24gdnVlLmpzIGNvbmZpZyB0byBwcm94eSBub2RlLmpzIHNlcnZlciBBUEkuIE1ha2Ugc3VyZSB0byBiZSBvbiBjbGllbnQgZm9sZGVyLCBhbmQgb3BlbiBgdnVlLmNvbmZpZy5qc2AgZmlsZS4KCiAgICAkIG5hbm8gdnVlLmNvbmZpZy5qcwoKICAgIHByb3h5OiB7CiAgICAgICcvYXBpL3YxJzogewogICAgICAgIHRhcmdldDogYGh0dHA6Ly9sb2NhbGhvc3Q6PE5PREVfUE9SVD5gCiAgICAgIH0KICAgIH0KRG9uJ3QgZm9yZ2V0IHRvIHNhdmUgdGhlIGZpbGUuCgojIyA0LiBSdW5uaW5nIHRoZSBwcm9qZWN0CgojIyMgYGRldmVsb3BtZW50YAogICAgJCBucG0gcnVuIGRldgoKICBgTE9DQUxfU0VSVkVSYCA6IGBsb2NhbGhvc3Q6Tk9ERV9QT1JUYAoKICBgQVBJX1JPVVRFYCA6IGBsb2NhbGhvc3Q6Tk9ERV9QT1JUL2FwaS1kb2NzYAoKICBgQ0xJRU5UX0FQUGAgOiBgbG9jYWxob3N0OjgwMDBgCiAgCgojIyAtIFBST0pFQ1QgQVBJIApWaXNpdCB0aGlzIGFkZHJlc3Mgb24geW91ciB3ZWIgYnJvd3NlciBmb3IgcHJvamVjdCBBUEkgZG9jdW1lbnRhdGlvbiB3aXRoIFtzd2FnZ2VyXShodHRwczovL3N3YWdnZXIuaW8vKSBhbmQgW29wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pCgoKIyBgbG9jYWxob3N0OjxOT0RFX1BPUlQ+L2FwaS1kb2NzYAoKPCEtLSAjIyMgYHByb2R1Y3Rpb25gCiAgICAkIG5wbSBydW4gcHJvZCAtLT4KCgojIyA1LiBUZXN0aW5nCkNvbWluZyBzb29uLi4uIQ== readmeEtag: '"ec76da3d87edfb7e7f608e5bc7d5db08534a2dbe"' readmeLastModified: Fri, 23 Apr 2021 00:58:55 GMT repositoryId: 358070233 description: MVEN STACK project (Mongodb, Vue.JS, Express, Node.JS) created: '2021-04-14T23:35:46Z' updated: '2025-10-15T17:12:01Z' language: Vue archived: false stars: 1 watchers: 1 forks: 0 owner: sylvain12 logo: https://avatars.githubusercontent.com/u/26870715?v=4 repoEtag: '"1a985a0b583ae8447c78e84e23d32570d897ed16628648339a7acfd0462676a8"' repoLastModified: Wed, 15 Oct 2025 17:12:01 GMT foundInMaster: true category: - Server - Server Implementations id: 5e44a9a1f0e2d5629b2e6650fc04a96f - source: openapi3 tags repository: https://github.com/mizyind/saunter v3: true repositoryMetadata: base64Readme: >- IyBzYXVudGVyCgpbIVtHb10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvZ28tbW9kL2dvLXZlcnNpb24vbWl6eWluZC9zYXVudGVyP3N0eWxlPWZvci10aGUtYmFkZ2UmbGFiZWw9JmNvbG9yPTAwYWRkOCZsb2dvPWdvJmxvZ29Db2xvcj1mZmYpXShodHRwczovL2dvbGFuZy5vcmcpCgpTYXVudGVyIGlzIGFuIG9waW5pb25hdGVkIFN3YWdnZXIgMy4wIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZvciBHbydzIEdpbiBmcmFtZXdvcmsuCgojIyBBdXRob3IKCm1pWnlpbmQgPG1penlpbmRAZ21haWwuY29tPgoKIyMgTElDRU5TRQoKTGljZW5zZWQgdW5kZXIgdGhlIFtNSVRdKExJQ0VOU0UpIExpY2Vuc2UuCg== readmeEtag: '"cae269dbf1d7470871d1cc5d275ed23744c72b13"' readmeLastModified: Thu, 21 Jan 2021 11:10:25 GMT repositoryId: 312517706 description: >- Saunter is an opinionated Swagger 3.0 documentation generator for Go's Gin framework. created: '2020-11-13T08:32:58Z' updated: '2023-01-28T05:33:54Z' language: Go archived: true stars: 0 watchers: 1 forks: 0 owner: miZyind logo: https://avatars.githubusercontent.com/u/21041375?v=4 license: MIT repoEtag: '"b90e5a4ff88859db8a783311a5abb7ccfdbc8c45802e8f11fff8c77c50f47b75"' repoLastModified: Sat, 28 Jan 2023 05:33:54 GMT foundInMaster: true category: - Data Validators - Server Implementations id: d3ff2966a56845108bcd9932be1376d3 - source: openapi3 tags repository: https://github.com/jeanpierm/rest-api-spring-jpa v3: true repositoryMetadata: base64Readme: >- IyBSRVNUZnVsIEFQSSBTcHJpbmcgQm9vdA0KDQohW1NwcmluZyBCb290ICsgSlBBXShodHRwczovL21pcm8ubWVkaXVtLmNvbS9tYXgvMTMzMi8wKmllR3RGZVRBd3FwMGl6azAucG5nKQ0KDQojIyBUZWNobm9sb2dpZXMgdXNlZA0KDQotIEphdmEgMTENCi0gU3ByaW5nIEJvb3QgKFNwcmluZyBXZWIpDQotIFNwcmluZyBTZWN1cml0eSAoc3RhdGVsZXNzIHdpdGggSldUIGFuZCByb2xlcykNCi0gSlBBIChoaWJlcm5hdGUpDQotIEphdmF4IFZhbGlkYXRpb25zIHRvIHZhbGlkYXRlIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBlbnRpdGllcyBpbiB0aGUgcmVxdWVzdHMuDQotIFBvc3RncmVTUUwgMTQgKyBwZ0FkbWluICh3aXRoIGRvY2tlcikNCi0gT3BlbkFQSSAzIFtzcHJpbmdkb2NdKGh0dHBzOi8vc3ByaW5nZG9jLm9yZy8pDQotIE1vZGVsTWFwcGVyIChmb3IgbWFwcGluZyBkdG9zIHRvIGpwYSBlbnRpdGllcyBlYXNpbHkpDQoNCiMjIFJ1biBQb3N0Z3JlU1FMICsgcGdBZG1pbiB3aXRoIERvY2tlcg0KDQpgYGBiYXNoDQojIHVwIGNvbnRhaW5lcnMNCiQgZG9ja2VyLWNvbXBvc2UgdXAgLWQgcG9zdGdyZXMgcGdhZG1pbg0KDQojIGRvd24gY29udGFpbmVycw0KJCBkb2NrZXItY29tcG9zZSBkb3duDQpgYGANCg0KIyMgTWljcm9zZXJ2aWNlIChEb2NrZXJpemF0aW9uKQ0KDQpgYGBiYXNoDQpkb2NrZXIgYnVpbGQgLXQgamVhbnAwL3Jlc3QtYXBpLXNwcmluZy1ib290IC4NCmBgYA0KDQpSdW4gYSAqKnBvc3RncmVzKiosICoqcGdhZG1pbioqIGFuZCAqKnNwcmluZy1hcHAqKiBpbWFnZXMgd2l0aCBkb2NrZXItY29tcG9zZS4gVGhlICoqc3ByaW5nLWFwcCoqIGltYWdlIGlzIGJ1aWx0IGF1dG9tYXRpY2FsbHkgaWYgaXQgZG9lc24ndCBleGlzdC4NCg0KYGBgYmFzaA0KIyB1cCBjb250YWluZXJzDQokIGRvY2tlci1jb21wb3NlIHVwIC1kDQoNCiMgZG93biBjb250YWluZXJzDQokIGRvY2tlci1jb21wb3NlIGRvd24NCg0KIyB2aWV3IGxvZ3MNCiQgZG9ja2VyLWNvbXBvc2UgbG9ncyAtZg0KYGBgDQoNCiMjIENhcHR1cmVzDQoNCiMjIyBBcHBsaWNhdGlvbiBydW5uaW5nIHdpdGggRG9ja2VyIHZpYSBkb2NrZXItY29tcG9zZQ0KDQohW0FwcGxpY2F0aW9uIHJ1bm5pbmcgd2l0aCBEb2NrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9qZWFucGllcm0vcmVzdC1hcGktc3ByaW5nLWJvb3QvYmxvYi9tYWluL2NhcHR1cmVzLzkucG5nP3Jhdz10cnVlKQ0KDQojIyMgU3dhZ2dlciBVSQ0KDQohW1N3YWdnZXIgVUldKGh0dHBzOi8vZ2l0aHViLmNvbS9qZWFucGllcm0vcmVzdC1hcGktc3ByaW5nLWJvb3QvYmxvYi9tYWluL2NhcHR1cmVzLzEucG5nP3Jhdz10cnVlKQ0KDQojIyMgU2NoZW1hcyBieSBPcGVuQVBJIDMNCg0KIVtTY2hlbWFzIGJ5IE9wZW5BUEkgM10oaHR0cHM6Ly9naXRodWIuY29tL2plYW5waWVybS9yZXN0LWFwaS1zcHJpbmctYm9vdC9ibG9iL21haW4vY2FwdHVyZXMvMi5wbmc/cmF3PXRydWUpDQoNCiMjIyBTdWNjZXNzIGxvZ2luDQoNCiFbU3VjY2VzcyBsb2dpbl0oaHR0cHM6Ly9naXRodWIuY29tL2plYW5waWVybS9yZXN0LWFwaS1zcHJpbmctYm9vdC9ibG9iL21haW4vY2FwdHVyZXMvMy5wbmc/cmF3PXRydWUpDQoNCiMjIyBGYWlsIGxvZ2luDQoNCiFbRmFpbCBsb2dpbl0oaHR0cHM6Ly9naXRodWIuY29tL2plYW5waWVybS9yZXN0LWFwaS1zcHJpbmctYm9vdC9ibG9iL21haW4vY2FwdHVyZXMvNC5wbmc/cmF3PXRydWUpDQoNCiMjIyBHRVQgd2l0aCB0b2tlbiBleHBpcmVkDQoNCiFbR0VUIHdpdGggdG9rZW4gZXhwaXJlZF0oaHR0cHM6Ly9naXRodWIuY29tL2plYW5waWVybS9yZXN0LWFwaS1zcHJpbmctYm9vdC9ibG9iL21haW4vY2FwdHVyZXMvNS5wbmc/cmF3PXRydWUpDQoNCiMjIyBHRVQgd2l0aG91dCB0b2tlbg0KDQohW0dFVCB3aXRob3V0IHRva2VuXShodHRwczovL2dpdGh1Yi5jb20vamVhbnBpZXJtL3Jlc3QtYXBpLXNwcmluZy1ib290L2Jsb2IvbWFpbi9jYXB0dXJlcy82LnBuZz9yYXc9dHJ1ZSkNCg0KIyMjIEdFVCB3aXRoIHZhbGlkIHRva2VuDQoNCiFbR0VUIHdpdGggdmFsaWQgdG9rZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9qZWFucGllcm0vcmVzdC1hcGktc3ByaW5nLWJvb3QvYmxvYi9tYWluL2NhcHR1cmVzLzcucG5nP3Jhdz10cnVlKQ0KDQojIyMgUmVmcmVzaCB0b2tlbg0KDQohW1JlZnJlc2ggdG9rZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9qZWFucGllcm0vcmVzdC1hcGktc3ByaW5nLWJvb3QvYmxvYi9tYWluL2NhcHR1cmVzLzgucG5nP3Jhdz10cnVlKQ0K readmeEtag: '"4e3ce46becc95584e38a710017c9203c9a43dc08"' readmeLastModified: Tue, 09 Aug 2022 02:22:10 GMT repositoryId: 410396224 description: >- RESTful API with JWT & Swagger. Built with Spring Boot, JPA, Spring Security, PostgreSQL and dockerized. created: '2021-09-25T22:37:44Z' updated: '2021-12-09T01:48:04Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: jeanpierm logo: https://avatars.githubusercontent.com/u/67121413?v=4 repoEtag: '"c4be7232dc6c35db14eb3b63b6864b4ff64cc7e6bafc945a7113ba28a95ef5e4"' repoLastModified: Thu, 09 Dec 2021 01:48:04 GMT foundInMaster: true category: - Low-level Tooling - Server Implementations id: f1f18180bc7393a0e6a8d5ee9b252979 - source: openapi3 tags repository: https://github.com/maxstanley/xeffect_backend v3: true repositoryMetadata: base64Readme: IyB4ZWZmZWN0X2JhY2tlbmQKQmFja2VuZCBmb3IgdGhlIFhFZmZlY3QK readmeEtag: '"9d62e1d641c85cbfd5138de1b2c765d26f3bc9df"' readmeLastModified: Wed, 29 Dec 2021 21:48:04 GMT repositoryId: 441542078 description: Backend for the XEffect created: '2021-12-24T19:34:43Z' updated: '2021-12-29T21:48:08Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: maxstanley logo: https://avatars.githubusercontent.com/u/66874003?v=4 license: MIT repoEtag: '"ee852bd1c3b549d239355da15533c92c4ac09110a2083064f27b5d319d4d4694"' repoLastModified: Wed, 29 Dec 2021 21:48:08 GMT foundInMaster: true category: - Server - Server Implementations id: c3aaf516fc90134a965d89b84d0b7c61 - source: openapi3 tags repository: https://github.com/raghav2211/bug-tracker v3: true id: 6c75b861ec7154f50bdd7f1654ac41a2 repositoryMetadata: base64Readme: >- IyBidWctdHJhY2tlcgpodHRwOi8vbG9jYWxob3N0OjgwODAvd2ViamFycy9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwjLwo= readmeEtag: '"dec33c4cb803cd3e538999e841474f6913327102"' readmeLastModified: Sun, 22 Jan 2023 10:50:40 GMT repositoryId: 564781575 description: null created: '2022-11-11T13:38:12Z' updated: '2022-12-19T14:05:14Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: Raghav2211 logo: https://avatars.githubusercontent.com/u/7526431?v=4 repoEtag: '"6bc3d5c6429d8b70d9108f56932c6a83eecaa6635ab050299ba52cdcbaea2e7c"' repoLastModified: Mon, 19 Dec 2022 14:05:14 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/hailiangxie/myopenapi_codegen_resourceserver_proj v3: true id: a1222678295875fc2f572b4810f1ce63 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIENvZGUgR2VuZXJhdGlvbiBhbmQgT0F1dGgyIFJlc291cmNlIFNlcnZlcgpUaGlzIGlzIGEgZGVtbyBhcHBsaWNhdGlvbiB0byBnZW5lcmF0ZSB0aGUgUkVTVCBBUElzIHdpdGggT3BlbkFQSSBhbmQgcHJvdGVjdCB0aGVtIHdpdGggT0F1dGgyIFJlb3VzcmNlIFNlcnZlci4gSW4gdGhpcyBkZW1vIGFwcGxpY2F0aW9uLCB3ZSBnZW5lcmF0ZSB0aGUgY3VzdG9tZXIgQVBJcyBhbmQgaW1wbGVtZW50IHRoZW0uIEFmdGVyIHRoYXQgd2UgcHJvdGVjdCB0aG9zZSBBUElzIGJ5IGNvbmZpZ3VyaW5nIHRoZSBPQXV0aDIgUmVzb3VyY2UgU2VydmVyLiBUbyBhY2Nlc3MgdGhvc2UgQVBJcywgd2UgaGF2ZSB0byBwcml2ZWQgdGhlIHNpZ25lZCBKV1QgYWNjZXNzIHRva2VuIHdoaWNoIGhhZCBiZWVuIGlzc3VlZCBieSB0aGUgQXV0aG9yaXphdGlvbiBTZXJ2ZXIuCjwvYnI+CjwvYnI+ClBsZWFzZSByZWFkIHRoZSBkb2N1bWVudHMgdG8gZmluZCBtb3JlIGRldGFpbHMgYWJvdXQgW09wZW5BUEkgU3BlY2ZpY2lhdGlvbl0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vKSBhbmQgW09BdXRoMi4wXShodHRwczovL29hdXRoLm5ldC8yLykuCjwvYnI+CjwvYnI+ClByZXJlcXVpc2l0ZXM6IFtKYXZhOCBvciBhYm92ZV0oaHR0cHM6Ly9vcGVuamRrLm9yZy8pCiMjIEdldHRpbmcgU3RhcnRlZApUbyBpbnN0YWxsIHRoaXMgZGVtbyBhcHBsaWNhdGlvbiwgcGxlYXNlIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgaW4gYSB0ZXJtaW5hbCB3aW5kb3c6CmBgYGNtZApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2hhaWxpYW5neGllL215b3BlbmFwaV9jb2RlZ2VuX3Jlc291cmNlc2VydmVyX3Byb2ouZ2l0CmNkIG15b3BlbmFwaV9jb2RlZ2VuX3Jlc291cmNlc2VydmVyX3Byb2oKYGBgCiMjIEdlbmVyYXRpbmcgQVBJcwpUbyBnZW5lcmF0ZSBBUElzLCBmaXJzdCB3ZSBuZWVkIHRvIGNyZWF0ZSBhbiBBUEkgU3BlYyBmaWxlIGNhbGxlZCBgYXBpLnlhbWxgIGFuZCBwdXQgaXQgdG8gYHNyYy9tYWluL3Jlb3VzcmNlcy9hcGlgOgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4yCmluZm86CiAgdGl0bGU6IEN1c3RvbWVyIC0gT3BlbkFQSSAzLjAKICBkZXNjcmlwdGlvbjogfC0KICAgIFRoaXMgaXMgYSBzYW1wbGUgQ3VzdG9tZXIgU2VydmVyIGJhc2VkIG9uIHRoZSBPcGVuQVBJIDMuMCBzcGVjaWZpY2F0aW9uLiAgWW91IGNhbiBmaW5kIG91dCBtb3JlIGFib3V0CiAgICBTd2FnZ2VyIGF0IFtodHRwOi8vc3dhZ2dlci5pb10oaHR0cDovL3N3YWdnZXIuaW8pLgoKICB2ZXJzaW9uOiAxLjAuMApleHRlcm5hbERvY3M6CiAgZGVzY3JpcHRpb246IEZpbmQgb3V0IG1vcmUgYWJvdXQgU3dhZ2dlcgogIHVybDogaHR0cDovL3N3YWdnZXIuaW8Kc2VydmVyczoKICAtIHVybDogL2FwaS92Mwp0YWdzOgogIC0gbmFtZTogY3VzdG9tZXIKICAgIGRlc2NyaXB0aW9uOiBFdmVyeXRoaW5nIGFib3V0IHRoZSBjdXN0b21lcnMKICAgIGV4dGVybmFsRG9jczoKICAgICAgZGVzY3JpcHRpb246IEZpbmQgb3V0IG1vcmUKICAgICAgdXJsOiBodHRwOi8vc3dhZ2dlci5pbwpgYGAKU2Vjb25kIHdlIG5lZWQgdG8gY29uZmlndXJlIHRoZSBBUEkgcGFja2FnZSBpbiB0aGUgcHJvamVjdCBgcG9tYCBmaWxlOgpgYGB4bWwKPHBsdWdpbj4KICAgIAkJCTxncm91cElkPm9yZy5vcGVuYXBpdG9vbHM8L2dyb3VwSWQ+CiAgICAJCQk8YXJ0aWZhY3RJZD5vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICAJCQk8dmVyc2lvbj40LjIuMjwvdmVyc2lvbj4KICAgIAkJCTxleGVjdXRpb25zPgogICAgICAgIAkJCTxleGVjdXRpb24+CiAgICAgICAgICAgIAkJCTxnb2Fscz4KICAgICAgICAgICAgICAgIAkJCTxnb2FsPmdlbmVyYXRlPC9nb2FsPgogICAgICAgICAgICAJCQk8L2dvYWxzPgogICAgICAgICAgICAJCQk8Y29uZmlndXJhdGlvbj4KICAgICAgICAgICAgICAgIAkJCTxpbnB1dFNwZWM+JHthcGkuc3BlYy5maWxlfTwvaW5wdXRTcGVjPgogICAgICAgICAgICAgICAgCQkJPG91dHB1dD4ke3Byb2plY3QuYnVpbGQuZGlyZWN0b3J5fS9nZW5lcmF0ZWQvb3Blbi1hcGk8L291dHB1dD4KICAgICAgICAgICAgICAgIAkJCTxnZW5lcmF0b3JOYW1lPnNwcmluZzwvZ2VuZXJhdG9yTmFtZT4KICAgICAgICAgICAgICAgIAkJCTxhcGlQYWNrYWdlPnhpZS5oYWlsaWFuZy5yZXNvdXJjZXNlcnZlci5hcGk8L2FwaVBhY2thZ2U+CiAgICAgICAgICAgICAgICAJCQk8bW9kZWxQYWNrYWdlPnhpZS5oYWlsaWFuZy5yZXNvdXJjZXNlcnZlci5tb2RlbDwvbW9kZWxQYWNrYWdlPgogICAgICAgICAgICAgICAgCQkJPGludm9rZXJQYWNrYWdlPnhpZS5oYWlsaWFuZy5yZXNvdXJjZXNlcnZlci5oYW5kbGVyPC9pbnZva2VyUGFja2FnZT4KICAgICAgICAgICAgICAgIAkJCTxtb2RlbE5hbWVTdWZmaXg+SnNvbjwvbW9kZWxOYW1lU3VmZml4PgogICAgICAgICAgICAgICAgCQkJPGNvbmZpZ09wdGlvbnM+CiAgICAgICAgICAgICAgICAgICAgCQkJPGRlbGVnYXRlUGF0dGVybj50cnVlPC9kZWxlZ2F0ZVBhdHRlcm4+CiAgICAgICAgICAgICAgICAJCQk8L2NvbmZpZ09wdGlvbnM+CiAgICAgICAgICAgIAkJCTwvY29uZmlndXJhdGlvbj4KICAgICAgICAJCQk8L2V4ZWN1dGlvbj4KICAgIAkJCTwvZXhlY3V0aW9ucz4KCQkJPC9wbHVnaW4+CmBgYApBbmQgZmluYWxseSB3ZSBjYW4gcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBpbiBhIHRlcm1pbmFsIHdpbmRvdzoKYGBgY21kCmNkIG15b3BlbmFwaV9jb2RlZ2VuX3Jlc291cmNlc2VydmVyX3Byb2oKLi9tdm53IGluc3RhbGwKYGBgClRoZSBjdXN0b21lciBBUElzIHNob3VsZCBiZSBnZW5lcmF0ZWQuCiMjIEltcGxlbWVudGluZyBBUElzClRvIGltcGxlbWVudCB0aGUgZ2VuZXJhdGVkIFJFU1QgQVBJcywgd2UgbmVlZCB0byBpbXBsZW1lbnQgdGhlIGdlbmVyYXRlZCBkZWxlZ2F0ZSBpbnRlcmZhY2UgYEN1c3RvbWVyQXBpRGVsZWdhdGVgOgpgYGBqYXZhCkBDb21wb25lbnQKcHVibGljIGNsYXNzIEN1c3RvbWVyQXBpRGVsZWdhdGVJbXBsIGltcGxlbWVudHMgQ3VzdG9tZXJBcGlEZWxlZ2F0ZSB7CiAgLy8gaW1wbGVtZW50IHRoZSBtZXRob2RzIGRlY2xhcmVkIGluIEN1c3RvbWVyQXBpRGVsZWdhdGUKfQpgYGAKIyMgUHJvdGVjdGluZyBBUElzClRvIHByb3RlY3QgdGhlIGdlbmVyYXRlZCBSRVNUIEFQSXMsIHdlIG5lZWQgdG8gY29uZmlndXJlIHRoZSBPQXV0aDIgUmVzb3VyY2UgU2VydmVyIGluIHRoZSBwcm9qZWN0Ogo8L2JyPgpGaXJzdCB3ZSBhZGQgdGhlIE9BdXRoMiBhbmQgUmVvdXNyY2UgU2VydmVyIGRlcGVuZGVuY2llcyB0byB0aGUgcG9yamVjdCBgcG9tYC4KYGBgeG1sCjxkZXBlbmRlbmN5PgogICAJCQk8Z3JvdXBJZD5vcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3Q8L2dyb3VwSWQ+CiAgIAkJCTxhcnRpZmFjdElkPnNwcmluZy1ib290LXN0YXJ0ZXItb2F1dGgyLXJlc291cmNlLXNlcnZlcjwvYXJ0aWZhY3RJZD4KCQk8L2RlcGVuZGVuY3k+CgkJPGRlcGVuZGVuY3k+CiAgIAkJCTxncm91cElkPm9yZy5zcHJpbmdmcmFtZXdvcmsuY2xvdWQ8L2dyb3VwSWQ+CiAgIAkJCTxhcnRpZmFjdElkPnNwcmluZy1jbG91ZC1zdGFydGVyLW9hdXRoMjwvYXJ0aWZhY3RJZD4KICAgCQkJPHZlcnNpb24+Mi4yLjUuUkVMRUFTRTwvdmVyc2lvbj4KCQk8L2RlcGVuZGVuY3k+CmBgYApTZWNvbmQgd2UgYWRkIHRoZSBgUmVzb3VyY2VTZXJ2ZXJDb25maWdgIGNsYXNzIHRvIGVuYWJsZSBSZXNvdXJjZSBTZXJ2ZXIgZnVuY3Rpb25hbGl0eS4KYGBgamF2YQpAQ29uZmlndXJhdGlvbgpARW5hYmxlUmVzb3VyY2VTZXJ2ZXIKcHVibGljIGNsYXNzIFJlc291cmNlU2VydmVyQ29uZmlnIGV4dGVuZHMgUmVzb3VyY2VTZXJ2ZXJDb25maWd1cmVyQWRhcHRlciB7Cn0KYGBgCkFuZCB0aGlyZCB3ZSBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgY3J5cHRvZ3JhcGhpYyBwdWJsaWMga2V5IGluIGBzcmMvbWFpbi9yZXNvdXJjZXMvYXBwbGljYXRpb24ueW1sYC4KPC9icj4KVGhlIHB1YmxpYyBrZXkgd2FzIGdlbmVyYXRlZCBieSBjYWxsaW5nIHRoZSBlbmRwb2ludCBgL29hdXRoL3Rva2VuX2tleWAgZnJvbSB0aGUgW0F1dGhyb2l6YXRpb24gU2VydmVyXShodHRwczovL2dpdGh1Yi5jb20vaGFpbGlhbmd4aWUvbXlvYXV0aDJhdXRob3JpemF0aW9uX3Byb2opLgpgYGB5bWwKand0a2V5OiAKICBwdWJsaWNLZXk6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuLi4uXG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0iCmBgYApUaGUgUmVzb3VyY2UgU2VydmVyIHByb3RlY3RzIHRoZSBBUElzIGJ5IHZhbGlkYXRpbmcgdGhhdCBpZiB0aGUgY2xpZW50IGhhcyBhIHZhbGlkIEpXVCBhY2Nlc3MgdG9rZW4uCiMjIFJ1biB0aGUgQXBwbGljYXRpb24KVG8gcnVuIHRoaXMgZGVtbyBhcHBsaWNhdGlvbiwgcGxlYXNlIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgaW4gYSB0ZXJtaW5hbCB3aW5kb3c6CmBgYGNtZApjZCBteW9wZW5hcGlfY29kZWdlbl9yZXNvdXJjZXNlcnZlcl9wcm9qCi4vbXZudyBzcHJpbmctYm9vdDpydW4KYGBgCkFmdGVyIGV2ZXJ5dGhpbmcgc3RhcnRzLCB3ZSBzaG91bGQgYmUgYWJsZSB0byB0ZXN0IHRoZSBBcHBsaWNhdGlvbi4KIyMgVGVzdApOb3cgd2Ugc2hvdWxiZSBiZSBhYmxlIHRvIHRlc3QgdGhlIGN1c3RvbWVyIFJFU1QgQVBJcy4gVG8gdmlldyB0aGUgQVBJIGRvY3MgYW5kIHRlc3QgdGhlIEFQSXMgd2UgY2FuIG9wZW4gdGhlIHN3YWdnZXItdWkgYnkgYWNjZXNzaW5nIHRoZSB1cmwgYGh0dHA6Ly9sb2NhbGhvc3Q6ODA5MS9zd2FnZ2VyLXVpLmh0bWxgIGluIHRoZSB3ZWIgYnJvd3Nlci4gQW5kIGFsc28gd2UgY2FuIHRlc3QgdGhlIEFQSXMgd2l0aCBvdGhlciB0b29scyAoZS5nLiwgYGN1cmxgLCBgcG9zdG1hbmApLiBGb3IgZXhhbXBsZSwgd2UgdGVzdCB0aGUgQVBJIGAvYXBpL3YzL2N1c3RvbWVyYCB0byBhZGQgYSBuZXcgY3VzdG9tZXIuCi0gQWNjZXNzIHRoZSBBUEkgYGh0dHA6Ly9sb2NhbGhvc3Q6ODA5MS9hcGkvdjMvY3VzdG9tZXJgIHdpdGhvdXQgYSB0b2tlbjoKYGBgClJlcXVlc3QgTWV0aG9kOiBQb3N0CkFjY2VwdDogYXBwbGljYXRpb24vanNvbgpDb250ZW50VHlwZTogYXBwbGljYXRpb24vanNvbgpDb250ZW50OiBUaGUgbmV3IGN1c3RvbWVyIGpzb24gc3RyaW5nCkV4cGVjdDogSXQgc2hvdWxkIHJldHVybiBzdGF0dXMgNDAxIFVuYXV0aG9yaXplZApgYGAKLSBBY2Nlc3MgdGhlIEFQSSBgaHR0cDovL2xvY2FsaG9zdDo4MDkxL2FwaS92My9jdXN0b21lcmAgd2l0aG91dCBhbiBpbnZhbGlkIHRva2VuOgpgYGAKUmVxdWVzdCBNZXRob2Q6IFBvc3QKSGVhZGVyOiBBdXRob3JpemF0aW9uOiBCZWFyZXIgaXRpc2FuaW52YWxpZHRva2VuCkFjY2VwdDogYXBwbGljYXRpb24vanNvbgpDb250ZW50VHlwZTogYXBwbGljYXRpb24vanNvbgpDb250ZW50OiBUaGUgbmV3IGN1c3RvbWVyIGpzb24gc3RyaW5nCkV4cGVjdDogSXQgc2hvdWxkIHJldHVybiBzdGF0dXMgNDAxIFVuYXV0aG9yaXplZApgYGAKLSBBY2Nlc3MgdGhlIEFQSSBgaHR0cDovL2xvY2FsaG9zdDo4MDkxL2FwaS92My9jdXN0b21lcmAgd2l0aCBhIHZhbGlkIHRva2VuIChieSBjYWxsaW5nIHRoZSBlbmRwb2ludCBgL29hdXRoL3Rva2VuYCBmcm9tIHRoZSBbQXV0aG9yaXphdGlvbiBTZXJ2ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9oYWlsaWFuZ3hpZS9teW9hdXRoMmF1dGhvcml6YXRpb25fcHJvaikpOgpgYGAKUmVxdWVzdCBNZXRob2Q6IFBvc3QKSGVhZGVyOiBBdXRob3JpemF0aW9uOiBCZWFyZXIgPFZhbGlkIHRva2VuPgpBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24KQ29udGVudFR5cGU6IGFwcGxpY2F0aW9uL2pzb24KQ29udGVudDogVGhlIG5ldyBjdXN0b21lciBqc29uIHN0cmluZwpFeHBlY3Q6IEl0IHNob3VsZCByZXR1cm4gc3RhdHVzIDIwMCBhbmQgdGhlIG5ldyBjdXN0b21lciBjcmVhdGVkCmBgYAojIyBTZWUgQWxzbwpUaGUgZm9sbG93aW5nIGd1aWRlcyBtYXkgYWxzbyBiZSBoZWxwZnVsOgotIFtTd2FnZ2VyIFVJXShodHRwczovL3N3YWdnZXIuaW8vdG9vbHMvc3dhZ2dlci11aS8pCi0gW0pTT04gV2ViIFRva2Vuc10oaHR0cHM6Ly9qd3QuaW8vKQo= readmeEtag: '"7fa28cbe4dc55de21ba18d5d8e7b0fbf40b2ab37"' readmeLastModified: Sat, 01 Oct 2022 15:51:28 GMT repositoryId: 542639581 description: >- This is a demo application to generate and implement REST APIs with OpenAPI and protect them with Oauth2.0 Resource Server created: '2022-09-28T14:42:25Z' updated: '2022-09-29T04:07:27Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: hailiangxie logo: https://avatars.githubusercontent.com/u/113340734?v=4 repoEtag: '"e60c650ac91af4c4916eb07923d8cc9ec43b9ce4063d3104ed1cd8239478de0e"' repoLastModified: Thu, 29 Sep 2022 04:07:27 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/nickfallon/catalyst v3: true id: a05953d17866a75dbaf494b9c80c8b03 repositoryMetadata: base64Readme: >- IyAhW0NhdGFseXN0XShsb2dvLnN2ZykgQ2F0YWx5c3QKCkFuIE9wZW5BUEktY29tcGF0aWJsZSBSRVNUIEFQSSBnZW5lcmF0b3IgZm9yIG5vZGUvcG9zdGdyZXMKCiMjIFdoYXQgaXQgZG9lcwoKV2hlbiBwcm92aWRlZCB3aXRoIGEgUG9zdGdyZXMgZGF0YWJhc2UsIENhdGFseXN0IGRvZXMgdGhlIGZvbGxvd2luZzoKCi0gQ3JlYXRlcyBhbiBPcGVuQVBJMyBzcGVjaWZpY2F0aW9uIGZyb20gdGhlIHRhYmxlcyBhbmQga2V5cyBhbmQgc2F2ZXMgdGhlIHJlc3VsdCB0byBgb3BlbmFwaS4zLjAuMC5qc29uYCBpbiB0aGUgcm9vdCBmb2xkZXIuCgotIENyZWF0ZXMgYSBSRVNUIEFQSSB0aGF0IGNvbnN1bWVzIHRoZSBPcGVuQVBJIHNwZWMgYW5kIHB1dHMgdGhlIGF1dG9nZW5lcmF0ZWQgY29kZSBpbiB0aGUgYC9hcGlgIGZvbGRlci4gQWxsIEFQSSBlbmRwb2ludHMgYXJlIHByZWNlZGVkIHdpdGggdGhlIGNvbW1vbiBwYXRoIGAvYXBpL3YxL2AuCgotIENyZWF0ZXMgaW50ZXJhY3RpdmUgU3dhZ2dlciBkb2NzIGF0IGAvYXBpL3YxL2FwaS1kb2NzYC4KCiMjIFNldHRpbmcgdXAKIyMjIEdlbmVyYXRpbmcgY2VydGlmaWNhdGVzCgpUaGlzIHN0ZXAgZ2VuZXJhdGVzIHR3byBmaWxlcywgYGxvY2FsaG9zdC5wZW1gIGFuZCBgbG9jYWxob3N0LWtleS5wZW1gIGluIHRoZSBmb2xkZXIgYGNlcnRzYC4KVGhpcyBtYWtlcyB0aGUgbG9jYWwgd2ViIGFwcCB3b3JrIG92ZXIgSFRUUFMKCkNyZWF0ZSBhIGZvbGRlciBjYWxsZWQgYGNlcnRzYCBpbiB0aGUgbWFpbiBkaXJlY3RvcnkgYW5kIG1vdmUgdG8gaXQ6CgpgJCBta2RpciBjZXJ0c2AKCmAkIGNkIGNlcnRzYAoKSW5zdGFsbCB0aGUgYG1rY2VydGAgcGFja2FnZToKCmAkIGJyZXcgaW5zdGFsbCBta2NlcnRgCgpgJCBta2NlcnQgLWluc3RhbGxgCgpHZW5lcmF0ZSB0aGUga2V5IGZpbGVzOgoKYCQgbWtjZXJ0IGxvY2FsaG9zdGAKCgojIyMgVXBkYXRlIC5lbnYgZmlsZQoKUmVuYW1lIGAuZW52LmV4YW1wbGVgIHRvIGAuZW52YCBhbmQgc2V0IHRoZSBwb3N0Z3JlcyBjb25uZWN0aW9uIGluZm8uCgojIyBIb3cgdG8gcnVuCgpVc2U6IAoKYG5wbSBydW4gZGV2YAoKIyMjIEdlbmVyYXRpbmcgdGhlIEFQSSAKCipXaGVuIHJ1bm5pbmcgZm9yIHRoZSBmaXJzdCB0aW1lOioKCkluIGEgYnJvd3NlciwgZ28gdG8gW2h0dHBzOi8vbG9jYWxob3N0OjkwMDAvYXBpL2dlbmVyYXRvci9idWlsZF0oaHR0cHM6Ly9sb2NhbGhvc3Q6OTAwMC9hcGkvZ2VuZXJhdG9yL2J1aWxkKQoKVGhlIGdlbmVyYXRvciBjb25uZWN0cyB0byBhIHBvc3RncmVzIGRhdGFiYXNlIHVzaW5nIHRoZSBjcmVkZW50aWFscyBpbiBgLmVudmAgZmlsZS4KSXQgdGhlbiBjcmVhdGVzIGEgZmlsZSBgb3BlbmFwaS4zLjAuMC5qc29uYCBhbmQgd3JpdGVzIGNvZGUgdG8gdGhlIGAvYXBpYCBmb2xkZXIgdG8gcGVyZm9ybSBTUUwgcXVlcmllcy4KClJlLXJ1bm5pbmcgYC9hcGkvZ2VuZXJhdG9yL2J1aWxkYCB3aWxsIG92ZXJ3cml0ZSB0aGUgZmlsZXMgY3JlYXRlZCBpbiBgL2FwaWAgYW5kIHRoZSBgb3BlbmFwaS4zLjAuMC5qc29uYCBmaWxlLgoKKk5vdGU6KiBEb24ndCB1c2Ugbm9kZW1vbiB3aGVuIGdlbmVyYXRpbmcgdGhlIEFQSSwgc2luY2UgZHluYW1pYyBjaGFuZ2VzIHRvIHRoZSBzb3VyY2UgdHJpZ2dlciBhIHJlc3RhcnQgd2hpY2ggc3RvcHMgdGhlIGdlbmVyYXRvci4KCgojIyMgVXNpbmcgdGhlIEFQSSAKClJlLXN0YXJ0IHRoZSBhcHAuIEV4cHJlc3Mgcm91dGVzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZCB0byB0aGUgZ2VuZXJhdGVkIGAvYXBpYCBmb2xkZXIgY29kZS4KCkluIGEgYnJvd3NlciwgZ28gdG8gIFtodHRwczovL2xvY2FsaG9zdDo5MDAwL2FwaS92MS9hcGktZG9jc10oaHR0cHM6Ly9sb2NhbGhvc3Q6OTAwMC9hcGkvdjEvYXBpLWRvY3MpIHRvIHNlZSBpbnRlcmFjdGl2ZSBBUEkgZG9jcy4KCipOb3RlOiogWW91IG11c3QgcHJvdmlkZSBhbiBBdXRob3JpemF0aW9uIEJlYXJlciBoZWFkZXIgdG8gcGVyZm9ybSBjYWxscy4gKHNlZSBbU2VjdXJpdHkgYW5kIHJlc3RyaWN0aW9uIG9mIGRhdGEgYWNjZXNzXSgjc2VjdXJpdHktYW5kLXJlc3RyaWN0aW9uLW9mLWRhdGEtYWNjZXNzKSBmb3IgZGV0YWlscykuCgoKIyMgRmVhdHVyZXMKCkRhdGEgdHlwZXMgYXJlIHZhbGlkYXRlZCBhbmQgZW5mb3JjZWQgYnkgdGhlIEFQSS4KCkJlYXJlciB0b2tlbiBhdXRob3JpemF0aW9uIGlzIGVuZm9yY2VkIGZvciBhbGwgQVBJIGNhbGxzLgoKYEdFVGAgZW5kcG9pbnRzIGFyZSBhdmFpbGFibGUgZm9yIGFsbCB0YWJsZXMsIGVnLiBgL2ludm9pY2VgCgpgR0VUIGJ5IHV1aWRgIGVuZHBvaW50cyBhcmUgZ2VuZXJhdGVkIGZvciBhbGwgdGFibGVzIHdoaWNoIGhhdmUgYSBgdXVpZGAgY29sdW1uLiAKCmBHRVQgYnkgaWRgIGVuZHBvaW50cyBhcmUgZ2VuZXJhdGVkIGZvciBhbGwgdGFibGVzIHdoaWNoIGhhdmUgYSBgaWRgIGNvbHVtbiBidXQgbm8gYHV1aWRgIGNvbHVtbi4KCmBQT1NUYCAoY3JlYXRlKSBlbmRwb2ludHMgYXJlIGF2YWlsYWJsZSBmb3IgYWxsIHRhYmxlcy4KCmBQVVRgICh1cGRhdGUpIGVuZHBvaW50cyBhcmUgYXZhaWxhYmxlIGZvciB0YWJsZXMgd2l0aCBhIGB1dWlkYCBmaWVsZC4KCmBHZXQgY2hpbGQgY29sbGVjdGlvbnNgIEZvcmVpZ24ga2V5cyBhcmUgdXNlZCB0byBjcmVhdGUgQVBJIHBhdGhzIGluIHRoZSBmb3JtIGAvcGFyZW50L3twYXJlbnRfdXVpZH0vY2hpbGRgLgoKYEVudW1zYCBhcmUgY3JlYXRlZCBpbiBgYXBpL2VudW1zL2AgZm9yIGFsbCB0YWJsZXMgd2l0aCBuYW1lcyBlbmRpbmcgaW4gYF9zdGF0dXNgIG9yIGBfdHlwZWAuCgojIyMgUGFnaW5nIGFuZCBmaWx0ZXJpbmcKCkdFVCBlbmRwb2ludHMgd2hpY2ggdGFrZSBubyBwYXJhbWV0ZXJzIChzby1jYWxsZWQgJ2dldCBhbGwnIGVuZHBvaW50cykgZWcuIGAvaW52b2ljZWAgcHJvdmlkZSBvcHRpb25hbCBwYWdpbmcgYW5kIGZpbHRlcmluZyBxdWVyeXN0cmluZyBwYXJhbWV0ZXJzLCBhcyBmb2xsb3dzOgoKLSBwYWdlc2l6ZSAoaW50ZWdlciwgb3B0aW9uYWwpIDogVGhlIG51bWJlciBvZiByb3dzIHRvIGJlIHJldHVybmVkLiBEZWZhdWx0IGlzIDEwLiBNYXhpbXVtIGlzIDEwMC4KCi0gcGFnZSAoaW50ZWdlciwgb3B0aW9uYWwpIDogVGhlIHBhZ2UgdG8gYmUgcmV0dXJuZWQuIERlZmF1bHQgaXMgMC4gSWYgYSBub24temVybyBwYWdlIGlzIHNwZWNpZmllZCwgKHBhZ2VzaXplICogcGFnZSkgcm93cyBhcmUgc2tpcHBlZCB3aGVuIHBlcmZvcm1pbmcgdGhlIHF1ZXJ5LgoKLSBmaWx0ZXIgKHN0cmluZywgb3B0aW9uYWwpIDogVXNlZCBmb3Igc2VhcmNoaW5nIGZvciBzcGVjaWZpYyBkYXRhLiBJZiBzcGVjaWZpZWQsIG9ubHkgcm93cyB3aGljaCBjb250YWluIHRoZSBmaWx0ZXIgc3RyaW5nIGluIGFueSBvZiB0aGUgYHRleHRgIGNvbHVtbnMgYXJlIHJldHVybmVkLiBJZiBubyBkYXRhIGNhbiBiZSBmb3VuZCwgYW4gZW1wdHkgYXJyYXkgaXMgcmV0dXJuZWQuCgoKCiMjIEFzc3VtcHRpb25zL29waW5pb25zCgotIHRhYmxlcyBhcmUgYXNzdW1lZCB0byBoYXZlIGFuIGBpZGAgZmllbGQgb2YgdHlwZSBzZXJpYWwgKHByaW1hcnkga2V5KSwgCmFuZCBvcHRpb25hbGx5IGEgYHV1aWRgIGZpZWxkLCB3aGljaCBzaG91bGQgYmUgYE5PVCBOVUxMYC4KCi0gdGFibGUgbmFtZXMgZW5kaW5nIGluIGBfc3RhdHVzYCBvciBgX3R5cGVgIGFyZSBhc3N1bWVkIHRvIGhhdmUgYW4gYGlkYCBmaWVsZCBhbmQgYSBkZXNjcmlwdGlvbiBjb2x1bW4gd2hpY2ggYXJlIGl0ZXJhdGVkIGluIGFuIGF1dG9nZW5lcmF0ZWQgZmlsZSBhdCBgYXBpL2VudW1zL2luZGV4LmpzYCBzbyB0aGV5IGNhbiBiZSB1c2VkIGluIGNvZGUgdG8gcmVmZXIgdG8gc3RhdHVzIG9yIHR5cGUgdmFsdWVzLgoKLSBgUFVUYCAodXBkYXRlKSBBUEkgY2FsbHMgYXJlIG5vdCBhdmFpbGFibGUgZm9yIHRhYmxlcyB3aXRob3V0IGEgYHV1aWRgIGZpZWxkIChlZy4gc3RhdHVzIHRhYmxlcykuCgotIGlmIGEgYHdoaXRlbGlzdC5qc29uYCBmaWxlIGlzIGluY2x1ZGVkIGluIHRoZSBgL2FwcGAgZm9sZGVyLCBpdCB3aWxsIGNhdXNlIHRoZSBnZW5lcmF0b3IgdG8gaW5jbHVkZQpvbmx5IHRob3NlIHRhYmxlcyBsaXN0ZWQgaW5zaWRlLiBFeGFtcGxlIGZvcm1hdDoKCmBgYApbCiAgICB7CiAgICAgICAgInRhYmxlIjogImludm9pY2UiCiAgICB9LAogICAgewogICAgICAgICJ0YWJsZSI6ICJpbnZvaWNlX3N0YXR1cyIKICAgIH0sCiAgICB7CiAgICAgICAgInRhYmxlIjogInByb2R1Y3QiCiAgICB9Cl0KYGBgCgojIyMgU2VjdXJpdHkgYW5kIHJlc3RyaWN0aW9uIG9mIGRhdGEgYWNjZXNzCgpBbiBhc3N1bXB0aW9uIGlzIG1hZGUgdGhhdCBhIGB1c2VyYCB0YWJsZSBleGlzdHMgY29udGFpbmluZyBhIHJvdyBmb3IgZWFjaCB1c2VyLCBhbmQgdGhhdCBhIGBiZWFyZXJfdG9rZW5gIGNvbHVtbiBpcyBwcmVzZW50IG9uIHRoYXQgdGFibGUgd2hpY2ggaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgQVBJIGNhbGxlciBieSBtYXRjaGluZyBpdCB3aXRoIHRoZSBwcm92aWRlZCBhdXRob3JpemF0aW9uIGhlYWRlci4gVGhpcyBtZWFucyB0aGF0IHRoZSBBUEkgY2FuIGFsd2F5cyBpZGVudGlmeSB0aGUgdXNlciBwZXJmb3JtaW5nIHRoZSBjYWxsLiBUaGUgYHVzZXJgIHRhYmxlIG5hbWUgY2FuIGJlIGNoYW5nZWQgaW4gdGhlIGAuZW52YCB2YXJpYWJsZSBgSk9JTl9VU0VSX1RBQkxFYC4KCldoZW4gcXVlcnlpbmcgYW55IGVudGl0eSwgdGhlIFNRTCBxdWVyeSB3aWxsIGFsd2F5cyBqb2luIHRvIHRoZSBgdXNlcmAgdGFibGUsIGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LCBpZiBpdCdzIHBvc3NpYmxlIHRvIGRvIHNvLiBUaGUgQVBJIGNvZGUgZ2VuZXJhdG9yIGRpc2NvdmVycyB3aGljaCB0YWJsZXMgYXJlIG5lZWRlZCB0byBqb2luIGluIG9yZGVyIHRvIHJlYWNoIHRoZSBgdXNlcmAgdGFibGUgdXNpbmcgYHJlY3Vyc2Vfam9pbl9jaGFpbigpYCBpbiBbZ2VuZXJhdG9yLmpzXShodHRwczovL2dpdGh1Yi5jb20vbmlja2ZhbGxvbi9jYXRhbHlzdC9ibG9iL21haW4vYXBwL2dlbmVyYXRvci5qcykuIFRoaXMgbWVhbnMgdGhhdCBmb3IgZGF0YWJhc2VzIHdoZXJlIG11bHRpcGxlIGRvbWFpbnMsIG9yZ2FuaXNhdGlvbnMsIGNvbXBhbmllcywgYWNjb3VudHMgb3Igb3RoZXIga2luZHMgb2Ygc2lsbyBleGlzdCwgcmVndWxhciB1c2VycyB3aWxsIG9ubHkgYmUgYWJsZSB0byByZXRyaWV2ZSB0aGUgZGF0YSBpbiB0aGVpciBvd24gc2lsby4KCgojIyMgQnVncy90by1kbwoKLSBgdXNlcmAgdGFibGUgKG9yIGAuZW52LkpPSU5fVVNFUl9UQUJMRWAgZXF1aXZhbGVudCkgY2FuIGJlIG9wZW5seSBxdWVyaWVkLiByZXN0cmljdCB0byBhZG1pbiBvbmx5IG9yIGFkZCBlbnZpcm9ubWVudCB2YXJpYWJsZS9saXN0IG9mIHJlc3RyaWN0ZWQgdGFibGVzLgoKLSBNYWtlIHN1cmUgeW91ciBmb3JlaWduIGtleXMgaGF2ZSB1bmlxdWUgbmFtZXMsIG90aGVyd2lzZSBlbmRwb2ludHMgYmV0d2VlbiB0YWJsZXMgdGhhdCBkb24ndCBoYXZlIHJlbGF0aW9uc2hpcHMgd2lsbCBiZSBnZW5lcmF0ZWQu readmeEtag: '"147cc7b326ce422b783ee484f258cbef0b570844"' readmeLastModified: Sun, 16 Jun 2024 00:46:26 GMT repositoryId: 675363467 description: >- Catalyst auto-generates an OpenAPI specification, a REST API that consumes it, and interactive Swagger docs from any provided Postgres database. created: '2023-08-06T17:05:01Z' updated: '2024-06-16T00:46:30Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: nickfallon logo: https://avatars.githubusercontent.com/u/15161343?v=4 repoEtag: '"223c076ecb89ac58f2da773e5db95a86b4dfdc7e514c8c63f8b66e695e397867"' repoLastModified: Sun, 16 Jun 2024 00:46:30 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/edmartt/django-task-backend v3: true id: f3e05424d2465ec5e28b82c267a8bf36 repositoryMetadata: base64Readme: >- IyBEamFuZ28gVGFzayBCYWNrZW5kCgpEamFuZ28gVGFzayBCYWNrZW5kIGlzIGEgc21hbGwgcHJvamVjdCBmb3Igc3RvcmluZyBkYWlseSB0YXNrcy4gSSB3YXMgbWFpbmx5IGludGVyZXN0ZWQgaW4gdGVzdGluZyB0aGUgcG93ZXIgb2YgRGphbmdvIHdpdGhvdXQgdXNpbmcgYW55IGV4dGVuc2lvbiB0byBtYWtlIGEgcmVzdGZ1bCBiYWNrZW5kIHNlcnZpY2UuCgojIyMgRmVhdHVyZXMKCi0gUmVnaXN0ZXIgZW5kcG9pbnQgZm9yIG5ldyB1c2VycwotIExvZ2luIGVuZHBvaW50IGZvciBleGlzdGFudCB1c2VycwotIEFmdGVyIGxvZ2dpbmcgaW4sIHRoZSByZXNwb25zZSBpcyBhIEpXVCB0byBiZSBhYmxlIHRvIGNyZWF0ZSBuZXcgdGFza3Mgb3IgY2hlY2sgZXhpc3Rpbmcgb25lcwotIEVhY2ggdXNlciBoYXMgdW5pcXVlIHRhc2tzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGJ5IHRoZSBvd25lciBvZiB0aGUgdGFza3MKCiMjIFJlcXVpcmVtZW50cwoKLSBQeXRob24gMy4xMSsKLSBTUUxpdGUKLSBodHRwIGNsaWVudDogUE9TVE1BTiwgSW5zb21uaWEsIGNVUkwKCiMjIyBSdW5uaW5nIExvY2FsbHkKCmBgYApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL0VkbWFydHQvZGphbmdvLXRhc2stYmFja2VuZC5naXQKYGBgCgpvciBzc2ggaW5zdGVhZDoKCmBgYApnaXQgY2xvbmUgZ2l0QGdpdGh1Yi5jb206RWRtYXJ0dC9kamFuZ28tdGFzay1iYWNrZW5kLmdpdApgYGAKCmJyb3dzZSBpbnRvIHByb2plY3QgZGlyZWN0b3J5OgoKYGBgCmNkIGRqYW5nby10YXNrLWJhY2tlbmQvCmBgYAoKY3JlYXRlIHZpcnR1YWwgZW52aXJvbm1lbnQKCmBgYApweXRob24gLW0gdmVudiBlbnYKYGBgCmFjdGl2YXRlIHZpcnR1YWwgZW52aXJvbm1lbnQKCmBgYAouIGVudi9iaW4vYWN0aXZhdGUgCmBgYAppbnN0YWxsIGRlcGVuZGVuY2llcwoKYGBgCnBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKYGBgCgpzZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvbGxvd2luZyB0aGUgWy5lbnZyYy5leGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vRWRtYXJ0dC9kamFuZ28tdGFzay1iYWNrZW5kL2Jsb2IvbWFpbi8uZW52cmMuZXhhbXBsZSkgZmlsZSBhbmQgcnVuCgphcHBseSBtaWdyYXRpb25zCmBgYApweXRob24gbWFuYWdlLnB5IG1pZ3JhdGUKYGBgCgpydW4KCmBgYApweXRob24gbWFuYWdlLnB5IHJ1bnNlcnZlcgpgYGAKCgojIyMjIE5vdGUKCmFwaSBkb2N1bWVudGF0aW9uIGluOiBgL2FwaS92MS9zd2FnZ2VyYAo= readmeEtag: '"ca701ef7a1f0029300a934c7acd1e42bed8398d9"' readmeLastModified: Sat, 03 Aug 2024 19:31:41 GMT repositoryId: 738866392 description: Django Task Backend is a small project for storing daily tasks created: '2024-01-04T08:20:55Z' updated: '2024-08-03T19:31:45Z' language: Python archived: false stars: 0 watchers: 1 forks: 0 owner: Edmartt logo: https://avatars.githubusercontent.com/u/47486245?v=4 repoEtag: '"df3745e9f4e11de494372044da9114c114e1d644772ddbfe5422251046cba2be"' repoLastModified: Sat, 03 Aug 2024 19:31:45 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/open-banking/products v3: true repositoryMetadata: base64Readme: >- IyBwcm9kdWN0cwpPcGVuIEJhbmtpbmcgUHJvZHVjdHMgQVBJIGJ1aWx0IG9uIHRvcCBvZiBsaWdodC00ago= readmeEtag: '"c2fc536f7babe6a3ca208d30901d2c731eb423cc"' readmeLastModified: Thu, 25 Jul 2024 20:09:52 GMT repositoryId: 235865331 description: Open Banking Products API built on top of light-4j created: '2020-01-23T19:02:29Z' updated: '2026-02-03T01:08:49Z' language: Java archived: false stars: 0 watchers: 1 forks: 1 owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 repoEtag: '"7e43b04f691c6472a39893c01e6bc508f29626e9d9a39d4e04863ae5ca3f05c5"' repoLastModified: Tue, 03 Feb 2026 01:08:49 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: 38262f9c9ca5153fa80b425418311ff0 - source: openapi3 tags repository: https://github.com/flum1025/sql-enum-generator v3: true id: ddb46cb2ffe07f0d6c8ad7c0b45fc64c repositoryMetadata: base64Readme: >- IyBzcWwtZW51bS1nZW5lcmF0b3IKCnNxbC1lbnVtLWdlbmVyYXRvciBpcyBhIHRvb2wgdGhhdCBjb252ZXJ0cyBTUUwgSU5TRVJUIHN0YXRlbWVudHMgZm9yIG1hc3RlciBkYXRhIGludG8gT3BlbkFQSSBzY2hlbWFzLiBUaGlzIGFwcGxpY2F0aW9uIGVuYWJsZXMgZGV2ZWxvcGVycyB0byBlYXNpbHkgZ2VuZXJhdGUgZW51bSByZXByZXNlbnRhdGlvbnMgb2YgZGF0YWJhc2UgbWFzdGVyIGRhdGEgdXNpbmcgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucywgc3RyZWFtbGluaW5nIHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzIGFuZCBlbnN1cmluZyBjb25zaXN0ZW5jeSBiZXR3ZWVuIHRoZSBkYXRhYmFzZSBhbmQgYXBwbGljYXRpb24gY29kZS4KCkN1cnJlbnRseSBvbmx5IHBvc3RncmVzcWwgaXMgc3VwcG9ydGVkLgoKIyMgRmVhdHVyZXMKCi0gUGFyc2VzIFNRTCBJTlNFUlQgc3RhdGVtZW50cyBhbmQgZ2VuZXJhdGVzIGNvcnJlc3BvbmRpbmcgT3BlbkFQSSBzY2hlbWFzCi0gR2VuZXJhdGVkIE9wZW5BUEkgc2NoZW1hcyBjYW4gYmUgdXRpbGl6ZWQgd2l0aCBvdGhlciB0b29scyBmb3IgdHlwZSBnZW5lcmF0aW9uCgojIyBRdWljayBTdGFydAoKMS4gKipDcmVhdGUgYSBjb25maWd1cmF0aW9uIGZpbGUqKiBuYW1lZCBgc3FsZW51bWdlbi55bWxgIHdpdGggdGhlIGZvbGxvd2luZyBjb250ZW50OgoKYGBgeWFtbAp2ZXJzaW9uOiAiMSIKdGFibGVzOgogIC0gbmFtZTogcHJvZHVjdHMKICAgIGtleTogbmFtZQogICAgdmFsdWU6IGlkCmBgYAoKMi4gKipSdW4gdGhlIGFwcGxpY2F0aW9uKiogdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgc2gKJCBnbyBydW4gZ2l0aHViLmNvbS9mbHVtMTAyNS9zcWwtZW51bS1nZW5lcmF0b3IgZ2VuZXJhdGUgLS1zb3VyY2UtcGF0aCAuL2V4YW1wbGUvbWFzdGVyLnNxbCAtLW91dHB1dC1wYXRoIC4vZXhhbXBsZS9vcGVuYXBpLmdlbmVyYXRlZC5qc29uIC0tY29uZmlnIC4vZXhhbXBsZS9zcWxlbnVtZ2VuLnltbApgYGAKCjMuICoqVXRpbGl6ZSBsYW5ndWFnZS1zcGVjaWZpYyBnZW5lcmF0aW9uIHRvb2xzKiogdG8gY3JlYXRlIGVudW1zIGZyb20gdGhlIGdlbmVyYXRlZCBPcGVuQVBJIHNjaGVtYS4KCkZvciBhY3R1YWwgZ2VuZXJhdGlvbiBleGFtcGxlcywgcGxlYXNlIHJlZmVyIHRvIHRoZSBgZXhhbXBsZWAgZGlyZWN0b3J5IGluIHRoZSByZXBvc2l0b3J5LgoKIyMgTGFuZ3VhZ2UtU3BlY2lmaWMgVXNhZ2UgRXhhbXBsZXMKCiMjIyBHbwoKRm9yIEdvLCB5b3UgY2FuIHVzZSBbb2FwaS1jb2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbikgdG8gZ2VuZXJhdGUgY29kZSBmcm9tIHRoZSBPcGVuQVBJIHNjaGVtYS4gQ3JlYXRlIGEgY29uZmlndXJhdGlvbiBmaWxlIG5hbWVkIGBvYXBpLWNvZGVnZW4ueW1sYCB3aXRoIHRoZSBmb2xsb3dpbmcgY29udGVudDoKCmBgYHlhbWwKcGFja2FnZTogbWFpbgpvdXRwdXQ6IC4vb3BlbmFwaS5nZW5lcmF0ZWQuZ28KZ2VuZXJhdGU6CiAgbW9kZWxzOiB0cnVlCmNvbXBhdGliaWxpdHk6CiAgYWx3YXlzLXByZWZpeC1lbnVtLXZhbHVlczogdHJ1ZQpvdXRwdXQtb3B0aW9uczoKICBza2lwLXBydW5lOiB0cnVlCmBgYAoKVGhlbiwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBnZW5lcmF0ZSB0aGUgR28gY29kZToKCmBgYHNoCiQgZ28gcnVuIGdpdGh1Yi5jb20vb2FwaS1jb2RlZ2VuL29hcGktY29kZWdlbi92Mi9jbWQvb2FwaS1jb2RlZ2VuIC1jb25maWcgLi9leGFtcGxlL29hcGktY29kZWdlbi55bWwgLi9leGFtcGxlL29wZW5hcGkuZ2VuZXJhdGVkLmpzb24KYGBgCgojIyMgVHlwZVNjcmlwdAoKRm9yIFR5cGVTY3JpcHQsIHlvdSBjYW4gdXNlIFtvcGVuYXBpLXR5cGVzY3JpcHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpLXRzL29wZW5hcGktdHlwZXNjcmlwdCkgdG8gZ2VuZXJhdGUgVHlwZVNjcmlwdCBkZWZpbml0aW9ucy4gUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYHNoCiQgbnB4IG9wZW5hcGktdHlwZXNjcmlwdCAuL2V4YW1wbGUvb3BlbmFwaS5nZW5lcmF0ZWQuanNvbiAtbyAuL2V4YW1wbGUvb3BlbmFwaS5nZW5lcmF0ZWQuZC50cyAtLWVudW0KYGBgCgojIyBGdXR1cmUgUGxhbnMKCi0gWyBdIEFkZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIFNRTCBkaWFsZWN0cwoKIyMgTGljZW5zZQoKVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBgTElDRU5TRWAgZmlsZSBmb3IgZGV0YWlscy4K readmeEtag: '"69fc459a4b1f815edb785b5e9668b6261e210f0e"' readmeLastModified: Mon, 06 Jan 2025 16:44:25 GMT repositoryId: 909331079 description: >- sql-enum-generator is a tool that parses SQL INSERT statements from a file and automatically generates OpenAPI schema files. The generated OpenAPI schema can be used with existing tools to generate type definitions in various programming languages. created: '2024-12-28T11:35:54Z' updated: '2025-09-22T17:56:44Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: flum1025 logo: https://avatars.githubusercontent.com/u/9972700?v=4 license: MIT repoEtag: '"c88d0c403599ae6be0d0bdb03bb3c91a411e1445e60ad28fd458ba4988ceda60"' repoLastModified: Mon, 22 Sep 2025 17:56:44 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/avidee007/weather-app v3: true id: 8678290787f6dd7f0516e3a3e798a276 repositoryMetadata: base64Readme: >- IyBXZWF0aGVyIEFwcAoKIyMgSW50cm9kdWN0aW9uCgpUaGlzIGlzIGEgZnVsbHkgZnVuY3Rpb25hbCwgc2VjdXJlZCB3ZWF0aGVyIGFwcGxpY2F0aW9uIHRoYXQgdXNlcyBwdWJsaWNseQpleHBvc2VkIEFQSXMgdG8gZmV0Y2ggd2VhdGhlciBvZiB0aGUgdmFsaWQgVVNBIHBvc3RhbCBjb2RlLiBUaGlzIHdlYXRoZXIgc2VydmljZSB1c2VzCmEgc2VjdXJlIGFwaSBrZXkgZ2VuZXJhdGVkIGF0IFtXZWF0aGVyQVBJXShodHRwczovL3d3dy53ZWF0aGVyYXBpLmNvbS8pIHRvIGZldGNoIGN1cnJlbnQgd2VhdGhlciBkYXRhLgoKIyMjIEZ1bmN0aW9uYWwgRmVhdHVyZXM6CgoxLiBSZWdpc3RlciB0byBhcHBsaWNhdGlvbiB3aXRoIHVuaXF1ZSB1c2VybmFtZSBhbmQgc3Ryb25nIHBhc3N3b3JkLgoyLiBHZXQgYSB3ZWF0aGVyIHJlcG9ydCBvZiBhbnkgdmFsaWQgVVNBIHBvc3RhbC9aaXAgY29kZS4KMy4gR2V0IGhpc3Rvcnkgb2YgYWxsIHJlcXVlc3RlZCB3ZWF0aGVyIHJlcG9ydHMgZm9yIGFueSBnaXZlbiB1c2VyTmFtZS4KNC4gR2V0IGhpc3Rvcnkgb2YgYWxsIHJlcXVlc3RlZCB3ZWF0aGVyIHJlcG9ydHMgZm9yIGFueSBnaXZlbiBwb3N0YWwgY29kZS4KNS4gRGVhY3RpdmF0ZSBhbnkgZXhpc3RpbmcgdXNlci4KCiMjIyBOb24tRnVuY3Rpb25hbCBGZWF0dXJlczoKCjEuICoqU2VjdXJpdHk6KioKICAgICogU2lnbnVwIEFQSSBwcm9oaWJpdHMgZHVwbGljYXRlIHVzZXJuYW1lIGNyZWF0aW9uLgogICAgKiBTdHJvbmcgcGFzc3dvcmQgcG9saWN5IGlzIGVuZm9yY2VkLiBQYXNzd29yZCBtdXN0IGNvbnRhaW4gT25lIG51bWJlciwgT25lIHVwcGVyY2FzZSBsZXR0ZXJzLCBPbmUgbG93ZXJjYXNlCiAgICAgIGxldHRlcnMsIE9uZSBub24tYWxwaGEgbnVtZXJpYyBudW1iZXIgYW5kIG1pbmltdW0gOOKAkzE2IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLgogICAgKiBBbGwgZW5kcG9pbnRzIGFyZSBzZWN1cmVkIHdpdGggdXNlcm5hbWUvcGFzc3dvcmQgYXV0aGVudGljYXRpb24gZXhjZXB0IFNpZ251cCBBUEkgaXQgaXMgZm9yIHVzZXIgcmVnaXN0cmF0aW9uLgogICAgKiBSb2xlIGJhc2VzIGF1dGhvcml6YXRpb24gaXMgaW1wbGVtZW50ZWQgZm9yIGFsbCBzZWN1cmVkIGVuZHBvaW50cy4KICAgICogRGVhY3RpdmF0ZSBBUEkgaXMgb25seSBhY2Nlc3NpYmxlIGZvciAqKkFETUlOKiogdXNlci4gQWRtaW4gdXNlciBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQKICAgICAgb25jZSBhcHBsaWNhdGlvbiBydW5zIGZpcnN0IHRpbWUgdGhyb3VnaCBhIGxpcXVpYmFzZSBzY3JpcHQgdXNpbmcgZW5jcnlwdGVkIHZhbHVlcy4KICAgICogKipBRE1JTioqIGNyZWRlbnRpYWxzIHdpbGwgYmUgcHJvdmlkZWQgb24gcmVmZXJlbmNlLgogICAgKiBPdGhlciBBUElzIGFyZSBhc3Nlc3NhYmxlIGZvciBib3RoICoqVVNFUioqIGFuZCAqKkFETUlOKiogdXNlci4KCjIuICoqU2NhbGFiaWxpdHk6KioKICAgICogRG9ja2VyIGltYWdlcyBjYW4gYmUgY3JlYXRlZCB3aXRoIERvY2tlciBzdXBwb3J0LgogICAgKiBIb3Jpem9udGFsIHNjYWxpbmcgdXNpbmcgY29udGFpbmVyIG9yY2hlc3RyYXRpb24gdG9vbHMgbGlrZSBLdWJlcm5ldGVzLgogICAKMy4gKipIaWdoIEF2YWlsYWJpbGl0eToqKgogICAgKiBIaWdoIGF2YWlsYWJpbGl0eSB1c2luZyBjb250YWluZXIgb3JjaGVzdHJhdGlvbiB0b29scyBsaWtlIEt1YmVybmV0ZXMuCgojIyMgVGVjaCBTdGFjayBhbmQgRnJhbWV3b3JrczoKClRoaXMgbWljcm9zZXJ2aWNlIHdhcyBidWlsZCB1c2luZyBTcHJpbmcgQm9vdCB3aXRoIHRoZSBmb2xsb3dpbmcgZnJhbWV3b3JrczoKCiogKipKREsgMTc6KiogVXNlZCBhcyBKVk0gbGFuZ3VhZ2UuCiogKipTcHJpbmcgV2ViOioqIFVzZWQgZm9yIGJ1aWxkaW5nIFJFU1RGdWwgQVBJIGZvciB1c2VyIG1hbmFnZW1lbnQgYW5kIHdlYXRoZXIgb3BlcmF0aW9ucy4KKiAqKlNwcmluZyBEYXRhIEpQQToqKiBVc2VkIGZvciBkYXRhYmFzZSBhY2Nlc3MgYW5kIGRhdGFiYXNlIG9wZXJhdGlvbnMuCiogKipMaXF1aWJhc2U6KiogVXNlZCBmb3IgZGF0YWJhc2UgbWlncmF0aW9uLgoqICoqUG9zdGdyZXNTUUw6KiogQXMgUkRCTVMgdG8gc3RvcmUgdXNlciBhbmQgd2VhdGhlciBlbnRpdGllcy4KKiAqKlNwcmluZyBTZWN1cml0eToqKiBVc2VkIGZvciBzZWN1cmluZyBleHBvc2VkIFJFU1QgQVBJIGJ5IGltcGxlbWVudGluZyBhdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbi4KKiAqKlNwcmluZyBWYWxpZGF0aW9uOioqIFVzZWQgZm9yIGltcGxlbWVudCBiZWFuIHZhbGlkYXRpb24gZm9yIHVzZXIgaW5wdXRzLgoqICoqU3ByaW5nZG9jIE9wZW5BcGk6KiogVXNlZCB0byBpbXBsZW1lbnQgbGl2ZSBBUEkgZG9jdW1lbnRhdGlvbiB1c2luZyBTd2FnZ2VyLgoqICoqSlVuaXQgNToqKiBVc2VkIHRvIGltcGxlbWVudCB1bml0IHRlc3QgY2FzZXMuCiogKipNb2NraXRvOioqIFVzZWQgZm9yIG1vY2tpbmcgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIGluIHVuaXQgdGVzdCBjYXNlcy4KKiAqKlNwcmluZ0Jvb3RUZXN0OioqIFVzZWQgZm9yIGNvbXBsZXRlIGludGVncmF0aW9uIHRlc3RpbmcuCgojIyMgSG93IHRvIHJ1biB0aGUgcHJvamVjdAoKKipOT1RFOioqIFdlYXRoZXJBcGkgYXBpIGtleSBuZWVkcyB0byBiZSBjb25maWd1cmVkIHRvIGFwcGxpY2F0aW9uLnlhbWwgZmlsZSB0byBmZXRjaCBkYXRhIGZyb20gcHVibGljIHdlYXRoZXIgYXBpLgpDb21wbGV0ZSBzdGVwcyBhcmUgbWVudGlvbmVkIGluIFtIb3ctdG8tcnVuLWd1aWRlXShkb2NzL0hvdy10by1SdW4ubWQpLgpQbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgZG9jdW1lbnRlZCBpbiBbSG93LXRvLXJ1bi1ndWlkZV0oZG9jcy9Ib3ctdG8tUnVuLm1kKS4KCiMjIyBTd2FnZ2VyIGZvciBBUEkgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdGluZwoKT25jZSBhcHBsaWNhdGlvbiBpcyBzdGFydGVkIHdpdGggYW55IG9mIHRoZSBjaG9zZW4gbWV0aG9kcyBmcm9tIHRoZSBhYm92ZSBzdGVwLgpbQ2xpY2sgaGVyZSB0byBvcGVuIFN3YWdnZXIgVUkuXShodHRwOi8vbG9jYWxob3N0OjgwODAvd2VhdGhlci1hcHAvc3dhZ2dlci11aS9pbmRleC5odG1sIy8pClRoaXMgd2lsbCBvcGVuIHN3YWdnZXIgVUkgd2hpY2ggY2FuIGJlIHVzZWQgdG8gdGVzdCB0aGUgQVBJUy4KCkRldGFpbGVkIHN0ZXBzIGZvciBhdXRoZW50aWNhdGlvbiBhbmQgdGVzdGluZyB0aGUgQVBJIGFyZSBtZW50aW9uZWQgaW4gW1J1bmJvb2tdKGRvY3MvU3RlcHMtdG8tdGVzdC1hcGkubWQpLgoKVGhlIEFwcGxpY2F0aW9uIGNvdmVycyBhbGwgbmVnYXRpdmUgYW5kIGVkZ2UgY2FzZXMgb2YgYXV0aGVudGljYXRpb24sIGF1dGhvcml6YXRpb24gYW5kIGFwaSBmdW5jdGlvbmFsaXRpZXMgYXMgcGVyIG15CnRlc3RpbmcuIEkgYW0gb3BlbiB0byBmdXJ0aGVyIGZlZWRiYWNrIGFuZCBpc3N1ZXMsIGlmIGFueS4= readmeEtag: '"9d8a46491c4ba80cfd053f62edb62363968027bf"' readmeLastModified: Wed, 18 Dec 2024 12:51:59 GMT repositoryId: 904673748 description: >- This is a fully functional, secured weather application that uses publicly exposed APIs to fetch weather of the valid USA postal code. created: '2024-12-17T10:41:14Z' updated: '2025-01-28T13:25:41Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: avidee007 logo: https://avatars.githubusercontent.com/u/31031315?v=4 repoEtag: '"11a69edf132ba28ae06d1f709f42dc00cc0ed18c58844f7cb2aff5df86171d02"' repoLastModified: Tue, 28 Jan 2025 13:25:41 GMT category: Server Implementations foundInMaster: true - source: openapi31 tags repository: https://github.com/juhaku/utoipa v3: true repositoryMetadata: base64Readme: >- IyB1dG9pcGEgLSBBdXRvLWdlbmVyYXRlZCBPcGVuQVBJIGRvY3VtZW50YXRpb24KClshW1V0b2lwYSBidWlsZF0oaHR0cHM6Ly9naXRodWIuY29tL2p1aGFrdS91dG9pcGEvYWN0aW9ucy93b3JrZmxvd3MvYnVpbGQueWFtbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vanVoYWt1L3V0b2lwYS9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55YW1sKQpbIVtjcmF0ZXMuaW9dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY3JhdGVzL3YvdXRvaXBhLnN2Zz9sYWJlbD1jcmF0ZXMuaW8mY29sb3I9b3JhbmdlJmxvZ289cnVzdCldKGh0dHBzOi8vY3JhdGVzLmlvL2NyYXRlcy91dG9pcGEpClshW2RvY3MucnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vc3RhdGljL3YxP2xhYmVsPWRvY3MucnMmbWVzc2FnZT11dG9pcGEmY29sb3I9Ymx1ZSZsb2dvPWRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QnliMnhsUFNKcGJXY2lJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdkbWxsZDBKdmVEMGlNQ0F3SURVeE1pQTFNVElpUGp4d1lYUm9JR1pwYkd3OUlpTm1OV1kxWmpVaUlHUTlJazAwT0RndU5pQXlOVEF1TWt3ek9USWdNakUwVmpFd05TNDFZekF0TVRVdE9TNHpMVEk0TGpRdE1qTXVOQzB6TXk0M2JDMHhNREF0TXpjdU5XTXRPQzR4TFRNdU1TMHhOeTR4TFRNdU1TMHlOUzR6SURCc0xURXdNQ0F6Tnk0MVl5MHhOQzR4SURVdU15MHlNeTQwSURFNExqY3RNak11TkNBek15NDNWakl4Tkd3dE9UWXVOaUF6Tmk0eVF6a3VNeUF5TlRVdU5TQXdJREkyT0M0NUlEQWdNamd6TGpsV016azBZekFnTVRNdU5pQTNMamNnTWpZdU1TQXhPUzQ1SURNeUxqSnNNVEF3SURVd1l6RXdMakVnTlM0eElESXlMakVnTlM0eElETXlMaklnTUd3eE1ETXVPUzAxTWlBeE1ETXVPU0ExTW1NeE1DNHhJRFV1TVNBeU1pNHhJRFV1TVNBek1pNHlJREJzTVRBd0xUVXdZekV5TGpJdE5pNHhJREU1TGprdE1UZ3VOaUF4T1M0NUxUTXlMakpXTWpnekxqbGpNQzB4TlMwNUxqTXRNamd1TkMweU15NDBMVE16TGpkNlRUTTFPQ0F5TVRRdU9Hd3RPRFVnTXpFdU9YWXROamd1TW13NE5TMHpOM1kzTXk0emVrMHhOVFFnTVRBMExqRnNNVEF5TFRNNExqSWdNVEF5SURNNExqSjJMalpzTFRFd01pQTBNUzQwTFRFd01pMDBNUzQwZGkwdU5ucHRPRFFnTWpreExqRnNMVGcxSURReUxqVjJMVGM1TGpGc09EVXRNemd1T0hZM05TNDBlbTB3TFRFeE1td3RNVEF5SURReExqUXRNVEF5TFRReExqUjJMUzQyYkRFd01pMHpPQzR5SURFd01pQXpPQzR5ZGk0MmVtMHlOREFnTVRFeWJDMDROU0EwTWk0MWRpMDNPUzR4YkRnMUxUTTRMamgyTnpVdU5IcHRNQzB4TVRKc0xURXdNaUEwTVM0MExURXdNaTAwTVM0MGRpMHVObXd4TURJdE16Z3VNaUF4TURJZ016Z3VNbll1Tm5vaVBqd3ZjR0YwYUQ0OEwzTjJaejRLKV0oaHR0cHM6Ly9kb2NzLnJzL3V0b2lwYS9sYXRlc3QvdXRvaXBhLykKIVtNU1JWXShodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YXRpYy92MT9sYWJlbD1NU1JWJm1lc3NhZ2U9MS43NSZjb2xvcj1vcmFuZ2UmbG9nbz1ydXN0KQoKUHJvbm91bmNlZCAqKl8vdTrLiHRvyoo6aS5wyZEvXyoqIG9yICoqXy91OsuIdG/KisuMYcmqLnBpy4hlyaovXyoqIHdoYXRldmVyIHdvcmtzIGJldHRlciBmb3IgeW91LgoKV2FudCB0byBoYXZlIHlvdXIgQVBJIGRvY3VtZW50ZWQgd2l0aCBPcGVuQVBJPyBCdXQgZG9uJ3Qgd2FudCB0byBiZSBib3RoZXJlZAp3aXRoIG1hbnVhbCBZQU1MIG9yIEpTT04gdHdlYWtpbmc/IFdvdWxkIGxpa2UgaXQgdG8gYmUgc28gZWFzeSB0aGF0IGl0IHdvdWxkIGFsbW9zdApiZSB1dG9waWM/IERvbid0IHdvcnJ5OiB1dG9pcGEgaXMgaGVyZSB0byBmaWxsIHRoaXMgZ2FwLiBJdCBhaW1zIHRvIGRvLCBpZiBub3QgYWxsLCB0aGVuCm1vc3Qgb2YgdGhlIGhlYXZ5IGxpZnRpbmcgZm9yIHlvdSwgZW5hYmxpbmcgeW91IHRvIGZvY3VzIG9uIHdyaXRpbmcgdGhlIGFjdHVhbCBBUEkgbG9naWMgaW5zdGVhZCBvZgpkb2N1bWVudGF0aW9uLiBJdCBhaW1zIHRvIGJlIF9taW5pbWFsXywgX3NpbXBsZV8gYW5kIF9mYXN0Xy4gSXQgdXNlcyBzaW1wbGUgYHByb2NgIG1hY3JvcyB3aGljaAp5b3UgY2FuIHVzZSB0byBhbm5vdGF0ZSB5b3VyIGNvZGUgdG8gaGF2ZSBpdGVtcyBkb2N1bWVudGVkLgoKVGhlIGB1dG9pcGFgIGNyYXRlIHByb3ZpZGVzIGF1dG8tZ2VuZXJhdGVkIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBmb3IgUnVzdCBSRVNUIEFQSXMuIEl0IHRyZWF0cwpjb2RlLWZpcnN0IGFwcHJvYWNoIGFzIGEgZmlyc3QgY2xhc3MgY2l0aXplbiBhbmQgc2ltcGxpZmllcyBBUEkgZG9jdW1lbnRhdGlvbiBieSBwcm92aWRpbmcKc2ltcGxlIG1hY3JvcyBmb3IgZ2VuZXJhdGluZyB0aGUgZG9jdW1lbnRhdGlvbiBmcm9tIHlvdXIgY29kZS4KCkl0IGFsc28gY29udGFpbnMgUnVzdCB0eXBlcyBvZiB0aGUgT3BlbkFQSSBzcGVjLCBhbGxvd2luZyB5b3UgdG8gd3JpdGUgdGhlIE9wZW5BUEkgc3BlYyBvbmx5IHVzaW5nClJ1c3QgaWYgYXV0byBnZW5lcmF0aW9uIGlzIG5vdCB5b3VyIGZsYXZvciBvciBkb2VzIG5vdCBmaXQgeW91ciBwdXJwb3NlLgoKTG9uZyB0ZXJtIGdvYWwgb2YgdGhlIGxpYnJhcnkgaXMgdG8gYmUgdGhlIHBsYWNlIHRvIGdvIHdoZW4gT3BlbkFQSSBkb2N1bWVudGF0aW9uIGlzIG5lZWRlZCBpbiBhbnkgUnVzdApjb2RlYmFzZS4KClV0b2lwYSBpcyBmcmFtZXdvcmstYWdub3N0aWMsIGFuZCBjb3VsZCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggYW55IHdlYiBmcmFtZXdvcmssIG9yIGV2ZW4gd2l0aG91dCBvbmUuIFdoaWxlCmJlaW5nIHBvcnRhYmxlIGFuZCBzdGFuZGFsb25lLCBvbmUgb2YgaXRzIGtleSBhc3BlY3RzIGlzIHNpbXBsZSBpbnRlZ3JhdGlvbiB3aXRoIHdlYiBmcmFtZXdvcmtzLgoKIyMgQ2hvb3NlIHlvdXIgZmxhdm9yIGFuZCBkb2N1bWVudCB5b3VyIEFQSSB3aXRoIGljZS1jb2xkIElQQQoKfEZsYXZvcnxTdXBwb3J0fAp8LS18LS18CnxbYWN0aXgtd2ViXShodHRwczovL2dpdGh1Yi5jb20vYWN0aXgvYWN0aXgtd2ViKXxQYXJzZSBwYXRoLCBwYXRoIHBhcmFtZXRlcnMgYW5kIHF1ZXJ5IHBhcmFtZXRlcnMsIHJlY29nbml6ZSByZXF1ZXN0IGJvZHkgYW5kIHJlc3BvbnNlIGJvZHksIFtgdXRvaXBhLWFjdGl4LXdlYmAgYmluZGluZ3NdKC4vdXRvaXBhLWFjdGl4LXdlYi9SRUFETUUubWQpLiBTZWUgbW9yZSBhdCBbZG9jc10oaHR0cHM6Ly9kb2NzLnJzL3V0b2lwYS9sYXRlc3QvdXRvaXBhL2F0dHIucGF0aC5odG1sI2FjdGl4X2V4dHJhcy1mZWF0dXJlLXN1cHBvcnQtZm9yLWFjdGl4LXdlYil8CnxbYXh1bV0oaHR0cHM6Ly9naXRodWIuY29tL3Rva2lvLXJzL2F4dW0pfFBhcnNlIHBhdGggYW5kIHF1ZXJ5IHBhcmFtZXRlcnMsIHJlY29nbml6ZSByZXF1ZXN0IGJvZHkgYW5kIHJlc3BvbnNlIGJvZHksIFtgdXRvaXBhLWF4dW1gIGJpbmRpbmdzXSguL3V0b2lwYS1heHVtL1JFQURNRS5tZCkuIFNlZSBtb3JlIGF0IFtkb2NzXShodHRwczovL2RvY3MucnMvdXRvaXBhL2xhdGVzdC91dG9pcGEvYXR0ci5wYXRoLmh0bWwjYXh1bV9leHRyYXMtZmVhdHVyZS1zdXBwb3J0LWZvci1heHVtKXwKfFtyb2NrZXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9TZXJnaW9CZW5pdGV6L1JvY2tldCl8IFBhcnNlIHBhdGgsIHBhdGggcGFyYW1ldGVycyBhbmQgcXVlcnkgcGFyYW1ldGVycywgcmVjb2duaXplIHJlcXVlc3QgYm9keSBhbmQgcmVzcG9uc2UgYm9keS4gU2VlIG1vcmUgYXQgW2RvY3NdKGh0dHBzOi8vZG9jcy5ycy91dG9pcGEvbGF0ZXN0L3V0b2lwYS9hdHRyLnBhdGguaHRtbCNyb2NrZXRfZXh0cmFzLWZlYXR1cmUtc3VwcG9ydC1mb3Itcm9ja2V0KXwKfE90aGVycyp8IFBsYWluIGB1dG9pcGFgIHdpdGhvdXQgZXh0cmEgZmxhdm9yLiBUaGlzIGdpdmVzIHlvdSBhbGwgdGhlIGJhc2ljIGJlbmVmaXRzIGxpc3RlZCBiZWxvdyBpbiAqKltGZWF0dXJlc10oI2ZlYXR1cmVzKSoqIHNlY3Rpb24gYnV0IHdpdGggbGl0dGxlIGxlc3MgYXV0b21hdGlvbi58Cgo+IE90aGVycyogPSBGb3IgZXhhbXBsZSBbd2FycF0oaHR0cHM6Ly9naXRodWIuY29tL3NlYW5tb25zdGFyL3dhcnApIGJ1dCBjb3VsZCBiZSBhbnl0aGluZy4KClJlZmVyIHRvIHRoZSBleGlzdGluZyBbZXhhbXBsZXNdKC4vZXhhbXBsZXMpIHRvIGZpbmQgb3V0IG1vcmUuCgojIyBGZWF0dXJlcwoKKiBPcGVuQVBJIDMuMQoqIFBsdWdnYWJsZSwgZWFzeSBzZXR1cCBhbmQgaW50ZWdyYXRpb24gd2l0aCBmcmFtZXdvcmtzLiAKKiBObyBibG9hdCwgZW5hYmxlIHdoYXQgeW91IG5lZWQuCiogU3VwcG9ydCBmb3IgZ2VuZXJpYyB0eXBlcwogICogKipOb3RlISoqPGJyPgogICAgVHVwbGVzLCBhcnJheXMgYW5kIHNsaWNlcyBjYW5ub3QgYmUgdXNlZCBhcyBnZW5lcmljIGFyZ3VtZW50cyBvbiB0eXBlcy4gVHlwZXMgaW1wbGVtZW50aW5nIGBUb1NjaGVtYWAgbWFudWFsbHkgc2hvdWxkIG5vdCBoYXZlIGdlbmVyaWMgYXJndW1lbnRzLCBhcwogICAgdGhleSBhcmUgbm90IGNvbXBvc2VhYmxlIGFuZCB3aWxsIHJlc3VsdCBjb21waWxlIGVycm9yLgoqIEF1dG9tYXRpYyBzY2hlbWEgY29sbGVjdGlvbiBmcm9tIHVzYWdlcyByZWN1cnNpdmVseS4gCiAgKiBSZXF1ZXN0IGJvZHkgZnJvbSBlaXRoZXIgaGFuZGxlciBmdW5jdGlvbiBhcmd1bWVudHMgKGlmIHN1cHBvcnRlZCBieSBmcmFtZXdvcmspIG9yIGZyb20gYHJlcXVlc3RfYm9keWAgYXR0cmlidXRlLgogICogUmVzcG9uc2UgYm9keSBmcm9tIHJlc3BvbnNlIGBib2R5YCBhdHRyaWJ1dGUgb3IgcmVzcG9uc2UgYGNvbnRlbnRgIGF0dHJpYnV0ZS4KKiBWYXJpb3VzIE9wZW5BUEkgdmlzdWFsaXphdGlvbiB0b29scyBzdXBwb3J0ZWQgb3V0IG9mIHRoZSBib3guCiogUnVzdCB0eXBlIGFsaWFzZXMgdmlhIFtgdXRvaXBhLWNvbmZpZ2BdKC4vdXRvaXBhLWNvbmZpZy9SRUFETUUubWQpLgoKIyMgV2hhdCdzIHVwIHdpdGggdGhlIHdvcmQgcGxheT8KClRoZSBuYW1lIGNvbWVzIGZyb20gdGhlIHdvcmRzIGB1dG9waWNgIGFuZCBgYXBpYCB3aGVyZSBgdXRvYCBhcmUgdGhlIGZpcnN0IHRocmVlIGxldHRlcnMgb2YgX3V0b3BpY18KYW5kIHRoZSBgaXBhYCBpcyBfYXBpXyByZXZlcnNlZC4gQWFhbmQuLi4gYGlwYWAgaXMgYWxzbyBhbiBhd2Vzb21lIHR5cGUgb2YgYmVlciA6YmVlcjouCgojIyBDcmF0ZSBGZWF0dXJlcwoKLSAqKmBtYWNyb3NgKiogRW5hYmxlIGB1dG9pcGEtZ2VuYCBtYWNyb3MuICoqVGhpcyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuKioKLSAqKmB5YW1sYCoqOiBFbmFibGVzICoqc2VyZGVfbm9yd2F5Kiogc2VyaWFsaXphdGlvbiBvZiBPcGVuQVBJIG9iamVjdHMuCi0gKipgYWN0aXhfZXh0cmFzYCoqOiBFbmhhbmNlcyBbYWN0aXgtd2ViXShodHRwczovL2dpdGh1Yi5jb20vYWN0aXgvYWN0aXgtd2ViLykgaW50ZWdyYXRpb24gd2l0aCBiZWluZyBhYmxlIHRvCiAgcGFyc2UgYHBhdGhgLCBgcGF0aGAgYW5kIGBxdWVyeWAgcGFyYW1ldGVycyBmcm9tIGFjdGl4IHdlYiBwYXRoIGF0dHJpYnV0ZSBtYWNyb3MuIFNlZQogIFtkb2NzXShodHRwczovL2RvY3MucnMvdXRvaXBhL2xhdGVzdC91dG9pcGEvYXR0ci5wYXRoLmh0bWwjYWN0aXhfZXh0cmFzLWZlYXR1cmUtc3VwcG9ydC1mb3ItYWN0aXgtd2ViKSBvciBbZXhhbXBsZXNdKC4vZXhhbXBsZXMpIGZvciBtb3JlIGRldGFpbHMuCi0gKipgcm9ja2V0X2V4dHJhc2AqKjogRW5oYW5jZXMgW3JvY2tldF0oaHR0cHM6Ly9naXRodWIuY29tL1Nlcmdpb0Jlbml0ZXovUm9ja2V0KSBmcmFtZXdvcmsgaW50ZWdyYXRpb24gd2l0aCBiZWluZwogIGFibGUgdG8gcGFyc2UgYHBhdGhgLCBgcGF0aGAgYW5kIGBxdWVyeWAgcGFyYW1ldGVycyBmcm9tIHJvY2tldCBwYXRoIGF0dHJpYnV0ZSBtYWNyb3MuIFNlZSBbZG9jc10oaHR0cHM6Ly9kb2NzLnJzL3V0b2lwYS9sYXRlc3QvdXRvaXBhL2F0dHIucGF0aC5odG1sI3JvY2tldF9leHRyYXMtZmVhdHVyZS1zdXBwb3J0LWZvci1yb2NrZXQpCiAgb3IgW2V4YW1wbGVzXSguL2V4YW1wbGVzKSBmb3IgbW9yZSBkZXRhaWxzLgotICoqYGF4dW1fZXh0cmFzYCoqOiBFbmhhbmNlcyBbYXh1bV0oaHR0cHM6Ly9naXRodWIuY29tL3Rva2lvLXJzL2F4dW0pIGZyYW1ld29yayBpbnRlZ3JhdGlvbiBhbGxvd2luZyB1c2VycyB0byB1c2UgYEludG9QYXJhbXNgIHdpdGhvdXQKICBkZWZpbmluZyB0aGUgYHBhcmFtZXRlcl9pbmAgYXR0cmlidXRlLiBTZWUgW2RvY3NdKGh0dHBzOi8vZG9jcy5ycy91dG9pcGEvbGF0ZXN0L3V0b2lwYS9hdHRyLnBhdGguaHRtbCNheHVtX2V4dHJhcy1mZWF0dXJlLXN1cHBvcnQtZm9yLWF4dW0pCiAgb3IgW2V4YW1wbGVzXSguL2V4YW1wbGVzKSBmb3IgbW9yZSBkZXRhaWxzLgotICoqYGRlYnVnYCoqOiBBZGQgZXh0cmEgdHJhaXRzIHN1Y2ggYXMgZGVidWcgdHJhaXRzIHRvIG9wZW5hcGkgZGVmaW5pdGlvbnMgYW5kIGVsc2V3aGVyZS4KLSAqKmBjaHJvbm9gKio6IEFkZCBzdXBwb3J0IGZvciBbY2hyb25vXShodHRwczovL2NyYXRlcy5pby9jcmF0ZXMvY2hyb25vKSBgRGF0ZVRpbWVgLCBgRGF0ZWAsIGBOYWl2ZURhdGVgLCBgTmFpdmVEYXRlVGltZWAsIGBOYWl2ZVRpbWVgIGFuZCBgRHVyYXRpb25gCiAgdHlwZXMuIEJ5IGRlZmF1bHQgdGhlc2UgdHlwZXMgYXJlIHBhcnNlZCB0byBgc3RyaW5nYCB0eXBlcyB3aXRoIGFkZGl0aW9uYWwgYGZvcm1hdGAgaW5mb3JtYXRpb24uCiAgYGZvcm1hdDogZGF0ZS10aW1lYCBmb3IgYERhdGVUaW1lYCBhbmQgYE5haXZlRGF0ZVRpbWVgIGFuZCBgZm9ybWF0OiBkYXRlYCBmb3IgYERhdGVgIGFuZCBgTmFpdmVEYXRlYCBhY2NvcmRpbmcKICBbUkZDMzMzOV0oaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzMzMzkjc2VjdGlvbi01LjYpIGFzIGBJU08tODYwMWAuIFRvCiAgb3ZlcnJpZGUgZGVmYXVsdCBgc3RyaW5nYCByZXByZXNlbnRhdGlvbiB1c2VycyBoYXZlIHRvIHVzZSBgdmFsdWVfdHlwZWAgYXR0cmlidXRlIHRvIG92ZXJyaWRlIHRoZSB0eXBlLgogIFNlZSBbZG9jc10oaHR0cHM6Ly9kb2NzLnJzL3V0b2lwYS9sYXRlc3QvdXRvaXBhL2Rlcml2ZS5Ub1NjaGVtYS5odG1sKSBmb3IgbW9yZSBkZXRhaWxzLgotICoqYHRpbWVgKio6IEFkZCBzdXBwb3J0IGZvciBbdGltZV0oaHR0cHM6Ly9jcmF0ZXMuaW8vY3JhdGVzL3RpbWUpIGBPZmZzZXREYXRlVGltZWAsIGBQcmltaXRpdmVEYXRlVGltZWAsIGBEYXRlYCwgYW5kIGBEdXJhdGlvbmAgdHlwZXMuCiAgQnkgZGVmYXVsdCB0aGVzZSB0eXBlcyBhcmUgcGFyc2VkIGFzIGBzdHJpbmdgLiBgT2Zmc2V0RGF0ZVRpbWVgIGFuZCBgUHJpbWl0aXZlRGF0ZVRpbWVgIHdpbGwgdXNlIGBkYXRlLXRpbWVgIGZvcm1hdC4gYERhdGVgIHdpbGwgdXNlCiAgYGRhdGVgIGZvcm1hdCBhbmQgYER1cmF0aW9uYCB3aWxsIG5vdCBoYXZlIGFueSBmb3JtYXQuIFRvIG92ZXJyaWRlIGRlZmF1bHQgYHN0cmluZ2AgcmVwcmVzZW50YXRpb24gdXNlcnMgaGF2ZSB0byB1c2UgYHZhbHVlX3R5cGVgIGF0dHJpYnV0ZQogIHRvIG92ZXJyaWRlIHRoZSB0eXBlLiBTZWUgW2RvY3NdKGh0dHBzOi8vZG9jcy5ycy91dG9pcGEvbGF0ZXN0L3V0b2lwYS9kZXJpdmUuVG9TY2hlbWEuaHRtbCkgZm9yIG1vcmUgZGV0YWlscy4KLSAqKmBqaWZmXzBfMmAqKiBBZGQgc3VwcG9ydCBmb3IgW2ppZmYgMC4yXShodHRwczovL2NyYXRlcy5pby9jcmF0ZXMvamlmZikgYFpvbmVkYCwgYW5kIGBjaXZpbDo6RGF0ZWAgdHlwZXMuCiAgQnkgZGVmYXVsdCB0aGVzZSB0eXBlcyBhcmUgcGFyc2VkIGFzIGBzdHJpbmdgLiBgWm9uZWRgIHdpbGwgdXNlIGBkYXRlLXRpbWVgIGZvcm1hdC4gYGNpdmlsOjpEYXRlYCB3aWxsIHVzZQogIGBkYXRlYCBmb3JtYXQuIFRvIG92ZXJyaWRlIGRlZmF1bHQgYHN0cmluZ2AgcmVwcmVzZW50YXRpb24gdXNlcnMgaGF2ZSB0byB1c2UgYHZhbHVlX3R5cGVgIGF0dHJpYnV0ZQogIHRvIG92ZXJyaWRlIHRoZSB0eXBlLiBTZWUgW2RvY3NdKGh0dHBzOi8vZG9jcy5ycy91dG9pcGEvbGF0ZXN0L3V0b2lwYS9kZXJpdmUuVG9TY2hlbWEuaHRtbCkgZm9yIG1vcmUgZGV0YWlscy4KLSAqKmBkZWNpbWFsYCoqOiBBZGQgc3VwcG9ydCBmb3IgW3J1c3RfZGVjaW1hbF0oaHR0cHM6Ly9jcmF0ZXMuaW8vY3JhdGVzL3J1c3RfZGVjaW1hbCkgYERlY2ltYWxgIHR5cGUuICoqQnkgZGVmYXVsdCoqCiAgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYFN0cmluZ2AuIElmIHlvdSB3aXNoIHRvIGNoYW5nZSB0aGUgZm9ybWF0IHlvdSBuZWVkIHRvIG92ZXJyaWRlIHRoZSB0eXBlLgogIFNlZSB0aGUgYHZhbHVlX3R5cGVgIGluIFtjb21wb25lbnQgZGVyaXZlIGRvY3NdKGh0dHBzOi8vZG9jcy5ycy91dG9pcGEvbGF0ZXN0L3V0b2lwYS9kZXJpdmUuVG9TY2hlbWEuaHRtbCkuCi0gKipgZGVjaW1hbF9mbG9hdGAqKjogQWRkIHN1cHBvcnQgZm9yIFtydXN0X2RlY2ltYWxdKGh0dHBzOi8vY3JhdGVzLmlvL2NyYXRlcy9ydXN0X2RlY2ltYWwpIGBEZWNpbWFsYCB0eXBlLiAqKkJ5IGRlZmF1bHQqKgogIGl0IGlzIGludGVycHJldGVkIGFzIGBOdW1iZXJgLiBUaGlzIGZlYXR1cmUgaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggKipkZWNpbWFsKiogYW5kIGFsbG93IHRvIGNoYW5nZSB0aGUgZGVmYXVsdCB0eXBlIHVzZWQgaW4geW91cgogIGRvY3VtZW50YXRpb24gZm9yIGBEZWNpbWFsYCBtdWNoIGxpa2UgYHNlcmRlX3dpdGhfZmxvYXRgIGZlYXR1cmUgZXhwb3NlZCBieSBydXN0X2RlY2ltYWwuCi0gKipgdXVpZGAqKjogQWRkIHN1cHBvcnQgZm9yIFt1dWlkXShodHRwczovL2dpdGh1Yi5jb20vdXVpZC1ycy91dWlkKS4gYFV1aWRgIHR5cGUgd2lsbCBiZSBwcmVzZW50ZWQgYXMgYFN0cmluZ2Agd2l0aAogIGZvcm1hdCBgdXVpZGAgaW4gT3BlbkFQSSBzcGVjLgotICoqYHVsaWRgKio6IEFkZCBzdXBwb3J0IGZvciBbdWxpZF0oaHR0cHM6Ly9naXRodWIuY29tL2R5bGFuaGFydC91bGlkLXJzKS4gYFVsaWRgIHR5cGUgd2lsbCBiZSBwcmVzZW50ZWQgYXMgYFN0cmluZ2Agd2l0aAogIGZvcm1hdCBgdWxpZGAgaW4gT3BlbkFQSSBzcGVjLgotICoqYHVybGAqKjogQWRkIHN1cHBvcnQgZm9yIFt1cmxdKGh0dHBzOi8vZ2l0aHViLmNvbS9zZXJ2by9ydXN0LXVybCkuIGBVcmxgIHR5cGUgd2lsbCBiZSBwcmVzZW50ZWQgYXMgYFN0cmluZ2Agd2l0aAogIGZvcm1hdCBgdXJpYCBpbiBPcGVuQVBJIHNwZWMuCi0gKipgc21hbGx2ZWNgKio6IEFkZCBzdXBwb3J0IGZvciBbc21hbGx2ZWNdKGh0dHBzOi8vY3JhdGVzLmlvL2NyYXRlcy9zbWFsbHZlYykuIGBTbWFsbFZlY2Agd2lsbCBiZSB0cmVhdGVkIGFzIGBWZWNgLgotICoqYG9wZW5hcGlfZXh0ZW5zaW9uc2AqKjogQWRkcyB0cmFpdHMgYW5kIGZ1bmN0aW9ucyB0aGF0IHByb3ZpZGUgZXh0cmEgY29udmVuaWVuY2UgZnVuY3Rpb25zLgogIFNlZSB0aGUgW2ByZXF1ZXN0X2JvZHlgIGRvY3NdKGh0dHBzOi8vZG9jcy5ycy91dG9pcGEvbGF0ZXN0L3V0b2lwYS9vcGVuYXBpL3JlcXVlc3RfYm9keSkgZm9yIGFuIGV4YW1wbGUuCi0gKipgcmVwcmAqKjogQWRkIHN1cHBvcnQgZm9yIFtyZXByX3NlcmRlXShodHRwczovL2dpdGh1Yi5jb20vZHRvbG5heS9zZXJkZS1yZXByKSdzIGByZXByKHUqKWAgYW5kIGByZXByKGkqKWAgYXR0cmlidXRlcyB0byB1bml0IHR5cGUgZW51bXMgZm9yCiAgQy1saWtlIGVudW0gcmVwcmVzZW50YXRpb24uIFNlZSBbZG9jc10oaHR0cHM6Ly9kb2NzLnJzL3V0b2lwYS9sYXRlc3QvdXRvaXBhL2Rlcml2ZS5Ub1NjaGVtYS5odG1sKSBmb3IgbW9yZSBkZXRhaWxzLgotICoqYHByZXNlcnZlX29yZGVyYCoqOiBQcmVzZXJ2ZSBvcmRlciBvZiBwcm9wZXJ0aWVzIHdoZW4gc2VyaWFsaXppbmcgdGhlIHNjaGVtYSBmb3IgYSBjb21wb25lbnQuCiAgV2hlbiBlbmFibGVkLCB0aGUgcHJvcGVydGllcyBhcmUgbGlzdGVkIGluIG9yZGVyIG9mIGZpZWxkcyBpbiB0aGUgY29ycmVzcG9uZGluZyBzdHJ1Y3QgZGVmaW5pdGlvbi4KICBXaGVuIGRpc2FibGVkLCB0aGUgcHJvcGVydGllcyBhcmUgbGlzdGVkIGluIGFscGhhYmV0aWNhbCBvcmRlci4KLSAqKmBwcmVzZXJ2ZV9wYXRoX29yZGVyYCoqOiBQcmVzZXJ2ZSBvcmRlciBvZiBPcGVuQVBJIFBhdGhzIGFjY29yZGluZyB0byBvcmRlciB0aGV5IGhhdmUgYmVlbgogIGludHJvZHVjZWQgdG8gdGhlIGAjW29wZW5hcGkocGF0aHMoLi4uKSldYCBtYWNybyBhdHRyaWJ1dGUuIElmIGRpc2FibGVkIHRoZSBwYXRocyB3aWxsIGJlCiAgb3JkZXJlZCBpbiBhbHBoYWJldGljYWwgb3JkZXIuICoqSG93ZXZlcioqIHRoZSBvcGVyYXRpb25zIG9yZGVyIHVuZGVyIHRoZSBwYXRoICoqd2lsbCoqIGJlIGFsd2F5cyBjb25zdGFudCBhY2NvcmRpbmcgdG8gW3NwZWNpZmljYXRpb25dKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL2xhdGVzdC5odG1sI2ZpeGVkLWZpZWxkcy02KQotICoqYGluZGV4bWFwYCoqOiBBZGQgc3VwcG9ydCBmb3IgW2luZGV4bWFwXShodHRwczovL2NyYXRlcy5pby9jcmF0ZXMvaW5kZXhtYXApLiBXaGVuIGVuYWJsZWQgYEluZGV4TWFwYCB3aWxsIGJlIHJlbmRlcmVkIGFzIGEgbWFwIHNpbWlsYXIgdG8KICBgQlRyZWVNYXBgIGFuZCBgSGFzaE1hcGAuCi0gKipgbm9uX3N0cmljdF9pbnRlZ2Vyc2AqKjogQWRkIHN1cHBvcnQgZm9yIG5vbi1zdGFuZGFyZCBpbnRlZ2VyIGZvcm1hdHMgYGludDhgLCBgaW50MTZgLCBgdWludDhgLCBgdWludDE2YCwgYHVpbnQzMmAsIGFuZCBgdWludDY0YC4KLSAqKmByY19zY2hlbWFgKio6IEFkZCBgVG9TY2hlbWFgIHN1cHBvcnQgZm9yIGBBcmM8VD5gIGFuZCBgUmM8VD5gIHR5cGVzLiAqKk5vdGUhKiogc2VyZGUgYHJjYCBmZWF0dXJlIGZsYWcgbXVzdCBiZSBlbmFibGVkIHNlcGFyYXRlbHkgdG8gYWxsb3cKICBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24gb2YgYEFyYzxUPmAgYW5kIGBSYzxUPmAgdHlwZXMuIFNlZSBtb3JlIGFib3V0IFtzZXJkZSBmZWF0dXJlIGZsYWdzXShodHRwczovL3NlcmRlLnJzL2ZlYXR1cmUtZmxhZ3MuaHRtbCkuCi0gKipgY29uZmlnYCoqIEVuYWJsZXMgW2B1dG9pcGEtY29uZmlnYF0oLi91dG9pcGEtY29uZmlnL1JFQURNRS5tZCkgZm9yIHRoZSBwcm9qZWN0IHdoaWNoIGFsbG93cyBkZWZpbmluZyBnbG9iYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgdXRvaXBhYC4KCiMjIyBEZWZhdWx0IExpYnJhcnkgU3VwcG9ydAoKKiBJbXBsaWNpdCBwYXJ0aWFsIHN1cHBvcnQgZm9yIGBzZXJkZWAgYXR0cmlidXRlcy4gU2VlIFtkb2NzXShodHRwczovL2RvY3MucnMvdXRvaXBhL2xhdGVzdC91dG9pcGEvZGVyaXZlLlRvU2NoZW1hLmh0bWwjcGFydGlhbC1zZXJkZS1hdHRyaWJ1dGVzLXN1cHBvcnQpIGZvciBtb3JlIGRldGFpbHMuCiogU3VwcG9ydCBmb3IgW2h0dHBdKGh0dHBzOi8vY3JhdGVzLmlvL2NyYXRlcy9odHRwKSBgU3RhdHVzQ29kZWAgaW4gcmVzcG9uc2VzLgoKIyMgSW5zdGFsbAoKQWRkIGRlcGVuZGVuY3kgZGVjbGFyYXRpb24gdG8gYENhcmdvLnRvbWxgLgoKYGBgdG9tbApbZGVwZW5kZW5jaWVzXQp1dG9pcGEgPSAiNSIKYGBgCgojIyBFeGFtcGxlcwoKX0NyZWF0ZSB0eXBlIHdpdGggYFRvU2NoZW1hYCBhbmQgdXNlIGl0IGluIGAjW3V0b2lwYTo6cGF0aCguLi4pXWAgdGhhdCBpcyByZWdpc3RlcmVkIHRvIHRoZSBgT3BlbkFwaWAuXwoKYGBgcnVzdAp1c2UgdXRvaXBhOjp7T3BlbkFwaSwgVG9TY2hlbWF9OwoKI1tkZXJpdmUoVG9TY2hlbWEpXQpzdHJ1Y3QgUGV0IHsKICAgaWQ6IHU2NCwKICAgbmFtZTogU3RyaW5nLAogICBhZ2U6IE9wdGlvbjxpMzI+LAp9Cgptb2QgcGV0X2FwaSB7CiAgICAvLy8gR2V0IHBldCBieSBpZAogICAgLy8vCiAgICAvLy8gR2V0IHBldCBmcm9tIGRhdGFiYXNlIGJ5IHBldCBpZAogICAgI1t1dG9pcGE6OnBhdGgoCiAgICAgICAgZ2V0LAogICAgICAgIHBhdGggPSAiL3BldHMve2lkfSIsCiAgICAgICAgcmVzcG9uc2VzKAogICAgICAgICAgICAoc3RhdHVzID0gMjAwLCBkZXNjcmlwdGlvbiA9ICJQZXQgZm91bmQgc3VjY2Vzc2Z1bGx5IiwgYm9keSA9IFBldCksCiAgICAgICAgICAgIChzdGF0dXMgPSBOT1RfRk9VTkQsIGRlc2NyaXB0aW9uID0gIlBldCB3YXMgbm90IGZvdW5kIikKICAgICAgICApLAogICAgICAgIHBhcmFtcygKICAgICAgICAgICAgKCJpZCIgPSB1NjQsIFBhdGgsIGRlc2NyaXB0aW9uID0gIlBldCBkYXRhYmFzZSBpZCB0byBnZXQgUGV0IGZvciIpLAogICAgICAgICkKICAgICldCiAgICBhc3luYyBmbiBnZXRfcGV0X2J5X2lkKHBldF9pZDogdTY0KSAtPiBSZXN1bHQ8UGV0LCBOb3RGb3VuZD4gewogICAgICAgIE9rKFBldCB7CiAgICAgICAgICAgIGlkOiBwZXRfaWQsCiAgICAgICAgICAgIGFnZTogTm9uZSwKICAgICAgICAgICAgbmFtZTogImxpZ2h0bmluZyIudG9fc3RyaW5nKCksCiAgICAgICAgfSkKICAgIH0KfQoKI1tkZXJpdmUoT3BlbkFwaSldCiNbb3BlbmFwaShwYXRocyhwZXRfYXBpOjpnZXRfcGV0X2J5X2lkKSldCnN0cnVjdCBBcGlEb2M7CgpwcmludGxuISgie30iLCBBcGlEb2M6Om9wZW5hcGkoKS50b19wcmV0dHlfanNvbigpLnVud3JhcCgpKTsKYGBgCgo8ZGV0YWlscz4KICAgIDxzdW1tYXJ5PjxpPjxiPkFib3ZlIGV4YW1wbGUgd2lsbCBwcm9kdWNlIGFuIE9wZW5BUEkgZG9jIGxpa2UgdGhpczo8L2I+PC9pPjwvc3VtbWFyeT4KCmBgYGpzb24KewogICJvcGVuYXBpIjogIjMuMS4wIiwKICAiaW5mbyI6IHsKICAgICJ0aXRsZSI6ICJhcHBsaWNhdGlvbiBuYW1lIGZyb20gQ2FyZ28udG9tbCIsCiAgICAiZGVzY3JpcHRpb24iOiAiZGVzY3JpcHRpb24gZnJvbSBDYXJnby50b21sIiwKICAgICJjb250YWN0IjogewogICAgICAibmFtZSI6ICJhdXRob3IgbmFtZSBmcm9tIENhcmdvLnRvbWwiLAogICAgICAiZW1haWwiOiAiYXV0aG9yIGVtYWlsIGZyb20gQ2FyZ28udG9tbCIKICAgIH0sCiAgICAibGljZW5zZSI6IHsKICAgICAgIm5hbWUiOiAibGljZW5zZSBmcm9tIENhcmdvLnRvbWwiCiAgICB9LAogICAgInZlcnNpb24iOiAidmVyc2lvbiBmcm9tIENhcmdvLnRvbWwiCiAgfSwKICAicGF0aHMiOiB7CiAgICAiL3BldHMve2lkfSI6IHsKICAgICAgImdldCI6IHsKICAgICAgICAidGFncyI6IFsKICAgICAgICAgICJwZXRfYXBpIgogICAgICAgIF0sCiAgICAgICAgInN1bW1hcnkiOiAiR2V0IHBldCBieSBpZCIsCiAgICAgICAgImRlc2NyaXB0aW9uIjogIkdldCBwZXQgZnJvbSBkYXRhYmFzZSBieSBwZXQgaWQiLAogICAgICAgICJvcGVyYXRpb25JZCI6ICJnZXRfcGV0X2J5X2lkIiwKICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiaWQiLAogICAgICAgICAgICAiaW4iOiAicGF0aCIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQZXQgZGF0YWJhc2UgaWQgdG8gZ2V0IFBldCBmb3IiLAogICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAogICAgICAgICAgICAgICJmb3JtYXQiOiAiaW50NjQiLAogICAgICAgICAgICAgICJtaW5pbXVtIjogMAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicmVzcG9uc2VzIjogewogICAgICAgICAgIjIwMCI6IHsKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBldCBmb3VuZCBzdWNjZXNzZnVsbHkiLAogICAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAgICIkcmVmIjogIiMvY29tcG9uZW50cy9zY2hlbWFzL1BldCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiNDA0IjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUGV0IHdhcyBub3QgZm91bmQiCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiY29tcG9uZW50cyI6IHsKICAgICJzY2hlbWFzIjogewogICAgICAiUGV0IjogewogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInJlcXVpcmVkIjogWwogICAgICAgICAgImlkIiwKICAgICAgICAgICJuYW1lIgogICAgICAgIF0sCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAiYWdlIjogewogICAgICAgICAgICAidHlwZSI6IFsKICAgICAgICAgICAgICAiaW50ZWdlciIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJmb3JtYXQiOiAiaW50MzIiCiAgICAgICAgICB9LAogICAgICAgICAgImlkIjogewogICAgICAgICAgICAidHlwZSI6ICJpbnRlZ2VyIiwKICAgICAgICAgICAgImZvcm1hdCI6ICJpbnQ2NCIsCiAgICAgICAgICAgICJtaW5pbXVtIjogMAogICAgICAgICAgfSwKICAgICAgICAgICJuYW1lIjogewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9CmBgYAoKPC9kZXRhaWxzPgoKIyMgTW9kaWZ5IE9wZW5BUEkgYXQgcnVudGltZQoKWW91IGNhbiBtb2RpZnkgZ2VuZXJhdGVkIE9wZW5BUEkgYXQgcnVudGltZSBlaXRoZXIgdmlhIGdlbmVyYXRlZCB0eXBlcyBkaXJlY3RseSBvciB1c2luZwpbTW9kaWZ5XShodHRwczovL2RvY3MucnMvdXRvaXBhL2xhdGVzdC91dG9pcGEvdHJhaXQuTW9kaWZ5Lmh0bWwpIHRyYWl0LgoKX01vZGlmeSBnZW5lcmF0ZWQgT3BlbkFQSSB2aWEgdHlwZXMgZGlyZWN0bHkuXwoKYGBgcnVzdAojW2Rlcml2ZShPcGVuQXBpKV0KI1tvcGVuYXBpKAogICAgaW5mbyhkZXNjcmlwdGlvbiA9ICJNeSBBcGkgZGVzY3JpcHRpb24iKSwKKV0Kc3RydWN0IEFwaURvYzsKCmxldCBtdXQgZG9jID0gQXBpRG9jOjpvcGVuYXBpKCk7CmRvYy5pbmZvLnRpdGxlID0gU3RyaW5nOjpmcm9tKCJNeSBBcGkiKTsKYGBgCgpfWW91IGNhbiBldmVuIGNvbnZlcnQgdGhlIGdlbmVyYXRlZCBbT3BlbkFwaV0oaHR0cHM6Ly9kb2NzLnJzL3V0b2lwYS9sYXRlc3QvdXRvaXBhL29wZW5hcGkvc3RydWN0Lk9wZW5BcGkuaHRtbCkgdG8gW09wZW5BcGlCdWlsZGVyXShodHRwczovL2RvY3MucnMvdXRvaXBhL2xhdGVzdC91dG9pcGEvb3BlbmFwaS9zdHJ1Y3QuT3BlbkFwaUJ1aWxkZXIuaHRtbCkuXwoKYGBgcnVzdApsZXQgYnVpbGRlcjogT3BlbkFwaUJ1aWxkZXIgPSBBcGlEb2M6Om9wZW5hcGkoKS5pbnRvKCk7CmBgYAoKU2VlIFtNb2RpZnldKGh0dHBzOi8vZG9jcy5ycy91dG9pcGEvbGF0ZXN0L3V0b2lwYS90cmFpdC5Nb2RpZnkuaHRtbCkgdHJhaXQgZm9yIGV4YW1wbGVzIG9uIGhvdyB0byBtb2RpZnkgZ2VuZXJhdGVkIE9wZW5BUEkgdmlhIGl0LgoKIyMgR28gYmV5b25kIHRoZSBzdXJmYWNlCgotIFNlZSBob3cgdG8gc2VydmUgT3BlbkFQSSBkb2MgdmlhIFN3YWdnZXIgVUkgY2hlY2sgW3V0b2lwYS1zd2FnZ2VyLXVpXShodHRwczovL2RvY3MucnMvdXRvaXBhLXN3YWdnZXItdWkvKSBjcmF0ZSBmb3IgbW9yZSBkZXRhaWxzLgotIEJyb3dzZSB0byBbZXhhbXBsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9qdWhha3UvdXRvaXBhL3RyZWUvbWFzdGVyL2V4YW1wbGVzKSBmb3IgbW9yZSBjb21wcmVoZW5zaXZlIGV4YW1wbGVzLgotIENoZWNrIFtJbnRvUmVzcG9uc2VzXShodHRwczovL2RvY3MucnMvdXRvaXBhL2xhdGVzdC91dG9pcGEvZGVyaXZlLkludG9SZXNwb25zZXMuaHRtbCkgYW5kIFtUb1Jlc3BvbnNlXShodHRwczovL2RvY3MucnMvdXRvaXBhL2xhdGVzdC91dG9pcGEvZGVyaXZlLlRvUmVzcG9uc2UuaHRtbCkgZm9yIGV4YW1wbGVzIG9uIGRlcml2aW5nIHJlc3BvbnNlcy4KLSBNb3JlIGFib3V0IE9wZW5BUEkgc2VjdXJpdHkgaW4gW3NlY3VyaXR5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5ycy91dG9pcGEvbGF0ZXN0L3V0b2lwYS9vcGVuYXBpL3NlY3VyaXR5L2luZGV4Lmh0bWwpLgotIER1bXAgZ2VuZXJhdGVkIEFQSSBkb2MgdG8gZmlsZSBhdCBidWlsZCB0aW1lLiBTZWUgW2lzc3VlIDIxNCBjb21tZW50XShodHRwczovL2dpdGh1Yi5jb20vanVoYWt1L3V0b2lwYS9pc3N1ZXMvMjE0I2lzc3VlY29tbWVudC0xMTc5NTg5MzczKS4KCiMjIEZBUQoKIyMjIFN3YWdnZXIgVUkgcmV0dXJucyA0MDQgTm90Rm91bmQgZnJvbSBidWlsdCBiaW5hcnkKClRoaXMgaXMgaGlnaGx5IHByb2JhYmx5IGR1ZSB0byBgUnVzdEVtYmVkYCBub3QgZW1iZWRkaW5nIHRoZSBTd2FnZ2VyIFVJIHRvIHRoZSBleGVjdXRhYmxlLiBUaGlzIGlzIG5hdHVyYWwgc2luY2UgdGhlIGBSdXN0RW1iZWRgCmxpYnJhcnkgKipkb2VzIG5vdCoqIGJ5IGRlZmF1bHQgZW1iZWQgZmlsZXMgb24gZGVidWcgYnVpbGRzLiBUbyBnZXQgYXJvdW5kIHRoaXMgeW91IGNhbiBkbyBvbmUgb2YgdGhlIGZvbGxvd2luZy4KCjEuIEJ1aWxkIHlvdXIgZXhlY3V0YWJsZSBpbiBgLS1yZWxlYXNlYCBtb2RlCjIuIG9yIGFkZCBgZGVidWctZW1iZWRgIGZlYXR1cmUgZmxhZyB0byB5b3VyIGBDYXJnby50b21sYCBmb3IgYHV0b2lwYS1zd2FnZ2VyLXVpYC4gVGhpcyB3aWxsIGVuYWJsZSB0aGUgYGRlYnVnLWVtZWJlZGAgZmVhdHVyZSBmbGFnIGZvcgogICBgUnVzdEVtYmVkYCBhcyB3ZWxsLiBSZWFkIG1vcmUgYWJvdXQgdGhpcyBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2p1aGFrdS91dG9pcGEvaXNzdWVzLzUyNyNpc3N1ZWNvbW1lbnQtMTQ3NDIxOTA5OCkgYW5kIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vanVoYWt1L3V0b2lwYS9pc3N1ZXMvMjY4KS4KCkZpbmQgYHV0b2lwYS1zd2FnZ2VyLXVpYCBbZmVhdHVyZSBmbGFncyBoZXJlXShodHRwczovL2dpdGh1Yi5jb20vanVoYWt1L3V0b2lwYS90cmVlL21hc3Rlci91dG9pcGEtc3dhZ2dlci11aSNjcmF0ZS1mZWF0dXJlcykuCgojIyMgSG93IHRvIGltcGxlbWVudCBgVG9TY2hlbWFgIGZvciBleHRlcm5hbCB0eXBlPwoKVGhlcmUgYXJlIGZldyB3YXlzIGFyb3VuZCB0aGlzIHRoYXQgYXJlIGVsYWJvcmF0ZWQgW2hlcmUgaW4gZGV0YWlsXShodHRwczovL2dpdGh1Yi5jb20vanVoYWt1L3V0b2lwYS9pc3N1ZXMvNzkwI2lzc3VlY29tbWVudC0xNzg3NzU0MTg1KS4KCiMjIyBBdXRvIGRpc2NvdmVyIGZvciBPcGVuQVBJIHNjaGVtYXMgYW5kIHBhdGhzPwoKQ3VycmVudGx5IHRoZXJlIGlzIG5vIGJ1aWxkIGluIHNvbHV0aW9uIHRvIGF1dG9tYXRpY2FsbHkgZGlzY292ZXIgdGhlIE9wZW5BUEkgdHlwZXMgYnV0IGZvciB5b3VyIGx1Y2sgdGhlcmUgaXMgYSBwcmV0dHkgbmVhdCBjcmF0ZSB0aGF0IApqdXN0IGRvZXMgdGhpcyBmb3IgeW91IGNhbGxlZCBbdXRvaXBhdXRvXShodHRwczovL2dpdGh1Yi5jb20vUHJvYmFibHlDbGVtL3V0b2lwYXV0bykuCgojIyBMaWNlbnNlCgpMaWNlbnNlZCB1bmRlciBlaXRoZXIgb2YgW0FwYWNoZSAyLjBdKExJQ0VOU0UtQVBBQ0hFKSBvciBbTUlUXShMSUNFTlNFLU1JVCkgbGljZW5zZSBhdCB5b3VyIG9wdGlvbi4KClVubGVzcyB5b3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsIGFueSBjb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGlzIGNyYXRlCmJ5IHlvdSwgc2hhbGwgYmUgZHVhbCBsaWNlbnNlZCwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25zLgo= readmeEtag: '"a359df34e8ca2d1d90949e4396c85325bab315dc"' readmeLastModified: Wed, 23 Apr 2025 19:35:18 GMT repositoryId: 412240914 description: >- Simple, Fast, Code first and Compile time generated OpenAPI documentation for Rust created: '2021-09-30T22:00:31Z' updated: '2026-02-05T20:08:23Z' language: Rust archived: false stars: 3637 watchers: 11 forks: 327 owner: juhaku logo: https://avatars.githubusercontent.com/u/26358664?v=4 license: Apache-2.0 repoEtag: '"b47a44e177a9b5d8189fb58bf680c6f0b2ccb8a5c63396482f0f5a38889cfc60"' repoLastModified: Thu, 05 Feb 2026 20:08:23 GMT foundInMaster: true category: Parsers id: 14269a89115b3be71493769fca4d995e v3_1: true - source: openapi31 tags repository: https://github.com/a-chacon/oas_rails v3_1: true id: 4f2556a5a26e04f5a4be6c77a48b61ac repositoryMetadata: base64Readme: >- IVtHZW0gVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9nZW0vdi9vYXNfcmFpbHM/Y29sb3I9RTk1NzNGKQohW0dpdEh1YiBMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL2EtY2hhY29uL29hc19yYWlscz9jb2xvcj1ibHVlKQohW0dpdEh1YiBBY3Rpb25zIFdvcmtmbG93IFN0YXR1c10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvYWN0aW9ucy93b3JrZmxvdy9zdGF0dXMvYS1jaGFjb24vb2FzX3JhaWxzLy5naXRodWIlMkZ3b3JrZmxvd3MlMkZydWJ5b25yYWlscy55bWwpCiFbR2VtIFRvdGFsIERvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9nZW0vZHQvb2FzX3JhaWxzKQohW1N0YXRpYyBCYWRnZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9SYWlscy0lM0UlM0Q3LjAuMC0lMjNFOTU3M0YpCiFbU3RhdGljIEJhZGdlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1J1YnktJTNFJTNEMy4xLjAtJTIzRTk1NzNGKQoKIyDwn5ODT3BlbiBBUEkgU3BlY2lmaWNhdGlvbiBGb3IgUmFpbHMKCk9hc1JhaWxzIGlzIGEgUmFpbHMgZW5naW5lIGZvciBnZW5lcmF0aW5nICoqYXV0b21hdGljIGludGVyYWN0aXZlIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgUmFpbHMgQVBJcyoqLiBJdCBnZW5lcmF0ZXMgYW4gKipPQVMgMy4xKiogZG9jdW1lbnQgYW5kIGRpc3BsYXlzIGl0IHVzaW5nICoqW1JhcGlEb2NdKGh0dHBzOi8vcmFwaWRvY3dlYi5jb20pKiouCgpJdCByZWxpZXMgb24gdGhlIFtPYXNDb3JlXShodHRwczovL2dpdGh1Yi5jb20vYS1jaGFjb24vb2FzX2NvcmUpIGdlbS4KCiMjIyDwn5qAIERlbW8gQXBwCgpFeHBsb3JlIHRoZSBpbnRlcmFjdGl2ZSBkb2N1bWVudGF0aW9uIGxpdmU6Cgrwn5SXICoqW09wZW4gRGVtbyBBcHBdKGh0dHBzOi8vcGFzby5mbHkuZGV2L2FwaS9kb2NzKSoqICAK8J+RpCAqKlVzZXJuYW1lKio6IGBvYXNyYWlsc2AgIArwn5SRICoqUGFzc3dvcmQqKjogYG9hc3JhaWxzYAoK8J+OrCBBIERlbW8gSW5zdGFsbGF0aW9uL1VzYWdlIFZpZGVvOgo8aHR0cHM6Ly92aW1lby5jb20vMTAxMzY4NzMzMj4K8J+OrAoKIVtTY3JlZW5zaG90XShodHRwczovL2EtY2hhY29uLmdpdGh1Yi5pby9vYXNfY29yZS9hc3NldHMvcmFpbHNfdGhlbWUucG5nKQoKIyMgUmVsYXRlZCBQcm9qZWN0cwoKLSAqKltBcGlQaWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9BcGlwaWUvYXBpcGllLXJhaWxzKSoqOiBEb2Vzbid0IHN1cHBvcnQgT0FTIDMuMSwgcmVxdWlyZXMgbGVhcm5pbmcgYSBEU0wsIGxhY2tzIGEgbmljZSBVSQotICoqW3N3YWdnZXJfeWFyZC1yYWlsc10oaHR0cHM6Ly9naXRodWIuY29tL2xpdmluZ3NvY2lhbC9zd2FnZ2VyX3lhcmQtcmFpbHMpKio6IFNlZW1zIGFiYW5kb25lZCwgYnV0IHNlcnZlcyBhcyBpbnNwaXJhdGlvbgotICoqW1Jzd2FnXShodHRwczovL2dpdGh1Yi5jb20vcnN3YWcvcnN3YWcpKio6IE5vdCBhdXRvbWF0aWMsIGRlcGVuZHMgb24gUlNwZWM7IE1hbnkgZGV2ZWxvcGVycyBub3cgdXNlIE1pbml0ZXN0IGFzIGl0J3MgdGhlIGRlZmF1bHQgdGVzdCBmcmFtZXdvcmsKLSAqKltncmFwZS1zd2FnZ2VyXShodHRwczovL2dpdGh1Yi5jb20vcnVieS1ncmFwZS9ncmFwZS1zd2FnZ2VyKSoqOiBSZXF1aXJlcyBHcmFwZQotICoqW3JzcGVjX2FwaV9kb2N1bWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vemlwbWFyay9yc3BlY19hcGlfZG9jdW1lbnRhdGlvbikqKjogUmVxdWlyZXMgUlNwZWMgYW5kIGEgY29tbWFuZCB0byBnZW5lcmF0ZSB0aGUgZG9jcwoKIyMgV2hhdCBTZXRzIE9hc1JhaWxzIEFwYXJ0PwoKLSAqKkR5bmFtaWMqKjogTm8gY29tbWFuZCByZXF1aXJlZCB0byBnZW5lcmF0ZSBkb2NzCi0gKipTaW1wbGUqKjogQ29tcGxlbWVudCBkZWZhdWx0IGRvY3VtZW50YXRpb24gd2l0aCBhIGZldyBjb21tZW50czsgbm8gbmVlZCB0byBsZWFybiBhIGNvbXBsZXggRFNMCi0gKipQdXJlIFJ1Ynkgb24gUmFpbHMgQVBJcyoqOiBObyBhZGRpdGlvbmFsIGZyYW1ld29ya3MgbmVlZGVkIChlLmcuLCBHcmFwZSwgUlNwZWMpCgojIyDwn5O977iPIE1vdGl2YXRpb24KCkFmdGVyIGV4cGVyaWVuY2luZyB0aGUgaW50ZXJhY3RpdmUgZG9jdW1lbnRhdGlvbiBpbiBQeXRob24ncyBmYXN0LWFwaSBmcmFtZXdvcmssIEkgc291Z2h0IHNpbWlsYXIgZnVuY3Rpb25hbGl0eSBpbiBSdWJ5IG9uIFJhaWxzLiBVbmFibGUgdG8gZmluZCBhIHN1aXRhYmxlIHNvbHV0aW9uLCBJIFthc2tlZCBvbiBTdGFjayBPdmVyZmxvd10oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzE5NDcwMTgvaXMtdGhlcmUtYS13YXktdG8tZ2VuZXJhdGUtYW4taW50ZXJhY3RpdmUtZG9jdW1lbnRhdGlvbi1mb3ItcmFpbHMtYXBpcykgeWVhcnMgYWdvLiBOb3csIHdpdGggc29tZSBmcmVlIHRpbWUgd2hpbGUgZnJlZWxhbmNpbmcgYXMgYW4gQVBJIGRldmVsb3BlciwgSSBkZWNpZGVkIHRvIGJ1aWxkIG15IG93biB0b29sLgoKKipOb3RlOiBUaGlzIGlzIG5vdCB5ZXQgYSBwcm9kdWN0aW9uLXJlYWR5IHNvbHV0aW9uLiBUaGUgY29kZSBtYXkgYmUgcm91Z2ggYW5kIGJlaGF2ZSB1bmV4cGVjdGVkbHksIGJ1dCBJIGFtIGFjdGl2ZWx5IHdvcmtpbmcgb24gaW1wcm92aW5nIGl0LiBJZiB5b3UgbGlrZSB0aGUgaWRlYSwgcGxlYXNlIGNvbnNpZGVyIGNvbnRyaWJ1dGluZyB0byBpdHMgZGV2ZWxvcG1lbnQuKioKClRoZSBnb2FsIGlzIHRvIG1pbmltaXplIHRoZSBlZmZvcnQgcmVxdWlyZWQgdG8gY3JlYXRlIGNvbXByZWhlbnNpdmUgZG9jdW1lbnRhdGlvbi4gQnkgZm9sbG93aW5nIFJFU1QgcHJpbmNpcGxlcyBpbiBSYWlscywgd2UgYmVsaWV2ZSB0aGlzIGlzIGFjaGlldmFibGUuIFlvdSBjYW4gZW5oYW5jZSB0aGUgZG9jdW1lbnRhdGlvbiB1c2luZyBbWWFyZF0oaHR0cHM6Ly95YXJkb2Mub3JnLykgdGFncy4KCiMjIERvY3VtZW50YXRpb24KCkZvciBzZWUgaG93IHRvIGluc3RhbGwsIGNvbmZpZ3VyZSBhbmQgdXNlIE9hc1JhaWxzIHBsZWFzZSByZWZlcmUgdG8gdGhlIFtPYXNDb3JlIE1EQm9va10oaHR0cHM6Ly9hLWNoYWNvbi5naXRodWIuaW8vb2FzX2NvcmUpCgojIyBDb250cmlidXRpbmcKCkNvbnRyaWJ1dGlvbnMgYXJlIHdoYXQgbWFrZSB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5IHN1Y2ggYW4gYW1hemluZyBwbGFjZSB0byBsZWFybiwgaW5zcGlyZSwgYW5kIGNyZWF0ZS4gQW55IGNvbnRyaWJ1dGlvbnMgeW91IG1ha2UgYXJlICoqZ3JlYXRseSBhcHByZWNpYXRlZCoqLiBJZiB5b3UgaGF2ZSBhIHN1Z2dlc3Rpb24gdGhhdCB3b3VsZCBtYWtlIHRoaXMgYmV0dGVyLCBwbGVhc2UgZm9yayB0aGUgcmVwbyBhbmQgY3JlYXRlIGEgcHVsbCByZXF1ZXN0LiBZb3UgY2FuIGFsc28gc2ltcGx5IG9wZW4gYW4gaXNzdWUgd2l0aCB0aGUgdGFnICJlbmhhbmNlbWVudCIuIERvbid0IGZvcmdldCB0byBnaXZlIHRoZSBwcm9qZWN0IGEgc3RhcuKtkCEgVGhhbmtzIGFnYWluIQoKSWYgeW91IHBsYW4gYSBiaWcgZmVhdHVyZSwgZmlyc3Qgb3BlbiBhbiBpc3N1ZSB0byBkaXNjdXNzIGl0IGJlZm9yZSBhbnkgZGV2ZWxvcG1lbnQuCgoxLiBGb3JrIHRoZSBQcm9qZWN0CjIuIENyZWF0ZSB5b3VyIEZlYXR1cmUgQnJhbmNoIChgZ2l0IGNoZWNrb3V0IC1iIGZlYXR1cmUvQW1hemluZ0ZlYXR1cmVgKQozLiBDb21taXQgeW91ciBDaGFuZ2VzIChgZ2l0IGNvbW1pdCAtbSAnQWRkIHNvbWUgQW1hemluZ0ZlYXR1cmUnYCkKNC4gUHVzaCB0byB0aGUgQnJhbmNoIChgZ2l0IHB1c2ggb3JpZ2luIGZlYXR1cmUvQW1hemluZ0ZlYXR1cmVgKQo1LiBPcGVuIGEgUHVsbCBSZXF1ZXN0CgojIyBMaWNlbnNlCgpPYXNSYWlscyBpcyByZWxlYXNlZCB1bmRlciB0aGUgW01JVCBMaWNlbnNlXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuCgojIyBTdGFyIEhpc3RvcnkKClshW1N0YXIgSGlzdG9yeSBDaGFydF0oaHR0cHM6Ly9hcGkuc3Rhci1oaXN0b3J5LmNvbS9zdmc/cmVwb3M9YS1jaGFjb24vb2FzX3JhaWxzJnR5cGU9RGF0ZSldKGh0dHBzOi8vd3d3LnN0YXItaGlzdG9yeS5jb20vI2EtY2hhY29uL29hc19yYWlscyZEYXRlKQo= readmeEtag: '"ce0cbc119580705c610b0d733188233b9b7d6e66"' readmeLastModified: Sat, 06 Sep 2025 19:17:15 GMT repositoryId: 831796203 description: Generate Automatic Interactive Documentation for Your Rails API created: '2024-07-21T16:44:36Z' updated: '2026-01-27T13:28:21Z' language: Ruby archived: false stars: 179 watchers: 4 forks: 22 owner: a-chacon logo: https://avatars.githubusercontent.com/u/39093711?v=4 license: MIT repoEtag: '"41bf9d43c7d0c5faa20c5a8be612cc427b9720adba4fee4f30b5d21a61da5c9d"' repoLastModified: Tue, 27 Jan 2026 13:28:21 GMT category: Parsers foundInMaster: true - source: openapi31 tags repository: https://github.com/bump-sh-examples/train-travel-api v3_1: true id: ae6b3dd61fddf7877ad70e617d1625ac repositoryMetadata: base64Readme: >- IyBUcmFpbiBUcmF2ZWwgQVBJCgpUaGlzIEFQSSBkb2VzIG5vdCBleGlzdCwgYnV0IGV4aXN0cyB0byBoZWxwIHBlb3BsZSBsZWFybiBPcGVuQVBJIGJ5IGRlc2NyaWJpbmcgYSByZWFsaXN0aWMgQVBJIGluIGEgcmVhbGlzdGljIHdheS4KCiMjIEJhY2tncm91bmQKClRoZSB3b3JsZCBvZiBPcGVuQVBJIGhhcyBiZWVuIHBsYWd1ZWQgYnkgIlRoZSBQZXQgU3RvcmUiLCBhbiBvbGQgQVBJIGRlc2NyaXB0aW9uIHVzZWQgYXMgYSBkZW1vIGluIGV2ZXJ5IHByb2plY3QgZXZlci4gSXQgZGVzY3JpYmVzIGEgUlBDLWVzcXVlIEFQSSB0aGF0J3MgbWFzY2VyYWRpbmcgYXMgUkVTVCwgYW5kIGRlc2NyaWJlcyBpdCBwb29ybHksIHVzaW5nIG9sZCBPcGVuQVBJIDIuMCB3aGljaCBoYXMgYmVlbiB1cGdyYWRlZCB0byBPcGVuQVBJIHYzLjAgd2l0aG91dCB0YWtpbmcgYWR2YW50YWdlIG9mIGFueSBvZiB0aGUgbmV3IGZlYXR1cmVzLgoKVGhpcyBleGFtcGxlIEFQSSBoYXMgYmVlbiB3cml0dGVuIGJ5IHNvbWVib2R5IHdobyB1c2VzIE9wZW5BUEkgZXZlcnkgZGF5LCBhbmQgaGFzIGRlc2NyaWJlZCAxMDBzIG9mIEFQSXMuIAoKIyMgR29hbHMKCkluc3RlYWQgb2Ygc2h5aW5nIGF3YXkgb2YgdG91Z2ggZGVjaXNpb25zLCB0aGlzIE9wZW5BUEkgZ2V0cyBzdHVjayBpbnRvIGFkdmFuY2VkIHRvcGljcyBsaWtlOgoKLSBIb3cgdG8gc3BsaXQgZmlsZXMgdXAgd2l0aCAkcmVmIHRvIGF2b2lkIHJlcGVhdGluZyBvdXJzZWx2ZXMuCi0gSG93IHRvIHJldXNlIHRoZSBzYW1lIG1vZGVsIGZvciByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zLgotIEhvdyB0byB3cmFwIGRhdGEgd2l0aCBhIHdyYXBwZXIgbGlrZSBgeyBkYXRhOiBbXSwgbGlua3M6IHt9IH1gLgoKVGhpcyBtaWdodCBub3QgYmUgdGhlIGVhc2llc3QgQVBJIGRlc2NyaXB0aW9uIHRvIHJlYWQgaW4gYSB0ZXh0IGVkaXRvciwgYnV0IGl0IGxvb2tzIHdvbmRlcmZ1bCB3aGVuIHB1dCB0aHJvdWdoIFtCdW1wLnNoXShodHRwczovL2J1bXAuc2gvKS4KCioqW1ByZXZpZXcgdGhpcyBPcGVuQVBJIG9uIEJ1bXAuc2hdKGh0dHBzOi8vYnVtcC5zaC9idW1wLWV4YW1wbGVzL2RvYy90cmFpbi10cmF2ZWwtYXBpLykqKgoKT3IgW2Rvd25sb2FkIGl0IHlvdXJzZWxmXShodHRwczovL2dpdGh1Yi5jb20vYnVtcC1zaC1leGFtcGxlcy90cmFpbi10cmF2ZWwtYXBpL2FyY2hpdmUvcmVmcy9oZWFkcy9tYWluLnppcCkgYW5kIGhhdmUgYSBwb2tlIGFyb3VuZC4KCiMjIExpY2Vuc2UKClRoZSBjb250ZW50cyBvZiB0aGlzIHJlcG9zaXRvcnkgYXJlIGxpY2Vuc2VkIHVuZGVyIFtDQyBCWS1OQy1TQQogIDQuMF0oLi9MSUNFTlNFX0NDLUJZLU5DLVNBLTQuMCku readmeEtag: '"386afc96834d98a63d55cbaa4803ce63553bb174"' readmeLastModified: Thu, 15 Aug 2024 14:18:03 GMT repositoryId: 751352638 description: >- Sample OpenAPI description to use for whatever you like, as a hopefully more modern and useful alternative to the Petstore. created: '2024-02-01T12:49:32Z' updated: '2025-12-08T10:29:42Z' language: JavaScript archived: false stars: 68 watchers: 6 forks: 10 owner: bump-sh-examples logo: https://avatars.githubusercontent.com/u/157144805?v=4 license: NOASSERTION repoEtag: '"65b467cdffb962f5b0828c0bfe37874ddc7d0e66e1661c41afdc81075b36d28d"' repoLastModified: Mon, 08 Dec 2025 10:29:42 GMT category: Server Implementations foundInMaster: true - source: openapi31 tags repository: https://github.com/x52dev/oas3-rs v3_1: true id: 652ad18d642d9b05bb22ef2bacf1d425 repositoryMetadata: base64Readme: >- IyBgb2FzM2AKCjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgoKWyFbY3JhdGVzLmlvXShodHRwczovL2ltZy5zaGllbGRzLmlvL2NyYXRlcy92L29hczM/bGFiZWw9bGF0ZXN0KV0oaHR0cHM6Ly9jcmF0ZXMuaW8vY3JhdGVzL29hczMpClshW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5ycy9vYXMzL2JhZGdlLnN2Zz92ZXJzaW9uPTAuMjAuMSldKGh0dHBzOi8vZG9jcy5ycy9vYXMzLzAuMjAuMSkKWyFbZGVwZW5kZW5jeSBzdGF0dXNdKGh0dHBzOi8vZGVwcy5ycy9jcmF0ZS9vYXMzLzAuMjAuMS9zdGF0dXMuc3ZnKV0oaHR0cHM6Ly9kZXBzLnJzL2NyYXRlL29hczMvMC4yMC4xKQohW01JVCBvciBBcGFjaGUgMi4wIGxpY2Vuc2VkXShodHRwczovL2ltZy5zaGllbGRzLmlvL2NyYXRlcy9sL29hczMuc3ZnKQo8YnIgLz4KWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS94NTJkZXYvb2FzMy1ycy9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3g1MmRldi9vYXMzLXJzL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbCkKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3g1MmRldi9vYXMzLXJzL2dyYXBoL2JhZGdlLnN2Zz90b2tlbj1PcFllNkk3ZGo1KV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3g1MmRldi9vYXMzLXJzKQohW1ZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY3JhdGVzL21zcnYvb2FzMy5zdmcpClshW0Rvd25sb2FkXShodHRwczovL2ltZy5zaGllbGRzLmlvL2NyYXRlcy9kL29hczMuc3ZnKV0oaHR0cHM6Ly9jcmF0ZXMuaW8vY3JhdGVzL29hczMpCgo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+Cgo8IS0tIGNhcmdvLXJkbWUgc3RhcnQgLS0+CgpTdHJ1Y3R1cmVzIGFuZCB0b29scyB0byBwYXJzZSwgbmF2aWdhdGUgYW5kIHZhbGlkYXRlIFtPcGVuQVBJIHYzLjEueF0gc3BlY2lmaWNhdGlvbnMuCgpOb3RlIHRoYXQgZHVlIHRvIHYzLjEueCBiZWluZyBhIGJyZWFraW5nIGNoYW5nZSBmcm9tIHYzLjAueCwgeW91IG1heSBoYXZlIHRyb3VibGUgY29ycmVjdGx5IHBhcnNpbmcKc3BlY3MgaW4gdGhlIG9sZGVyIGZvcm1hdC4KCiMjIEV4YW1wbGUKCmBgYHJ1c3QKbGV0IHlhbWwgPSBzdGQ6OmZzOjpyZWFkX3RvX3N0cmluZygicGF0aC90by9vcGVuYXBpLnltbCIpLnVud3JhcCgpOwoKbWF0Y2ggb2FzMzo6ZnJvbV95YW1sKHlhbWwpIHsKICBPayhzcGVjKSA9PiBwcmludGxuISgic3BlYzogezo/fSIsIHNwZWMpLAogIEVycihlcnIpID0+IHByaW50bG4hKCJlcnJvcjoge30iLCBlcnIpCn0KYGBgCgpbT3BlbkFQSSB2My4xLnhdOiBodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjEKCjwhLS0gY2FyZ28tcmRtZSBlbmQgLS0+Cg== readmeEtag: '"7ae6ce8fc8ed0bb7b77bfd24c6e82d48aeaf8f3e"' readmeLastModified: Sun, 16 Nov 2025 22:33:18 GMT repositoryId: 303455500 description: >- Structures and tools to parse, navigate and validate OpenAPI v3.1 specifications. created: '2020-10-12T16:49:47Z' updated: '2026-02-01T02:36:25Z' language: Rust archived: false stars: 69 watchers: 2 forks: 25 owner: x52dev logo: https://avatars.githubusercontent.com/u/140988044?v=4 license: MIT repoEtag: '"b565bb25ddb6c2f64136fcec7b520ffc9d14250b87608fdd4a32e6ddd594057b"' repoLastModified: Sun, 01 Feb 2026 02:36:25 GMT category: Parsers foundInMaster: true - source: openapi31 tags repository: https://github.com/andrewwalsh/at-your-service v3: false id: 4306c9c5ce54843afcd1be9822783721 repositoryMetadata: base64Readme: >- PCEtLSBJbXByb3ZlZCBjb21wYXRpYmlsaXR5IG9mIGJhY2sgdG8gdG9wIGxpbms6IFNlZTogaHR0cHM6Ly9naXRodWIuY29tL290aG5laWxkcmV3L0Jlc3QtUkVBRE1FLVRlbXBsYXRlL3B1bGwvNzMgLS0+Cgo8YSBuYW1lPSJyZWFkbWUtdG9wIj48L2E+CgpbIVtNSVQgTGljZW5zZV1bbGljZW5zZS1zaGllbGRdXVtsaWNlbnNlLXVybF0KPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYXQteW91ci1zZXJ2aWNlIj48aW1nIGFsdD0ibnBtIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvYXQteW91ci1zZXJ2aWNlP3N0eWxlPWZvci10aGUtYmFkZ2UiPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9hdHlvdXJzZXJ2aWNlLmF3YWxzaC5pby8iPjxpbWcgYWx0PSJucG0iIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9WaWV3JTIwLUxpdmUlMjBEZW1vLTQyMjY2Mj9zdHlsZT1mb3ItdGhlLWJhZGdlIj48L2E+Cgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQW5kcmV3V2Fsc2gvYXQteW91ci1zZXJ2aWNlL2FjdGlvbnMiPjxpbWcgYWx0PSJucG0iIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL0FuZHJld1dhbHNoL2F0LXlvdXItc2VydmljZS9hY3Rpb25zL3dvcmtmbG93cy9ub2RlLmpzLnltbC9iYWRnZS5zdmciPjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9jb2RlY2xpbWF0ZS5jb20vZ2l0aHViL0FuZHJld1dhbHNoL2F0LXlvdXItc2VydmljZS90ZXN0X2NvdmVyYWdlIj48aW1nIHNyYz0iaHR0cHM6Ly9hcGkuY29kZWNsaW1hdGUuY29tL3YxL2JhZGdlcy81NmZhMWY5OWRhNzUwOTczNWNlZS90ZXN0X2NvdmVyYWdlIiAvPjwvYT4KCjwhLS0gUFJPSkVDVCBMT0dPIC0tPgo8YnIgLz4KPGRpdiBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQW5kcmV3V2Fsc2gvYXQteW91ci1zZXJ2aWNlIj4KICAgIDxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQW5kcmV3V2Fsc2gvYXQteW91ci1zZXJ2aWNlL21haW4vcmVzb3VyY2VzL2xvZ28tZmxvb3IucG5nIiBhbHQ9IkxvZ28iPgogIDwvYT4KCiAgPGJyIC8+CiAgPGgyIGFsaWduPSJjZW50ZXIiPmF0LXlvdXItc2VydmljZTwvaDI+CiAgPGJyIC8+CgogIDxwIGFsaWduPSJjZW50ZXIiPgogICAgPGJsb2NrcXVvdGU+CiAgICAgICAgQSBkZXZlbG9wZXIgdG9vbCBmb3IgQVBJIG9ic2VydmFiaWxpdHkgb24gdGhlIGJyb3dzZXIuIEdlbmVyYXRlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgYW5kIGNvZGUgZnJvbSBuZXR3b3JrIHRyYWZmaWMKICAgICAgICA8YnIgLz4KICAgICAgICA8YnIgLz4KICAgICAgICBEZXNpZ25lZCBmb3IgZWFzZSBvZiB1c2UuIE5vIG5lZWQgdG8gaW50ZWdyYXRlIHdpdGggZXhpc3RpbmcgY29kZQogICAgICA8L2Jsb2NrcXVvdGU+CiAgICAgIDxiciAvPgogICAgICA8YnIgLz4KICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hdHlvdXJzZXJ2aWNlLmF3YWxzaC5pby8iPlZpZXcgdGhlIExpdmUgRGVtbzwvYT4KICAgICAgPGJyIC8+CiAgICAgIDxiciAvPgogICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQW5kcmV3V2Fsc2gvYXQteW91ci1zZXJ2aWNlL2lzc3VlcyI+UmVwb3J0IEJ1ZzwvYT4KICAgICAgwrcKICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYXQteW91ci1zZXJ2aWNlIj5WaWV3IG9uIG5wbTwvYT4KICA8L3A+CjwvZGl2PgoKPGJyIC8+CjxociAvPgo8YnIgLz4KCjwhLS0gVEFCTEUgT0YgQ09OVEVOVFMgLS0+Cgo8ZGV0YWlscyBvcGVuPgogIDxzdW1tYXJ5PlRhYmxlIG9mIENvbnRlbnRzPC9zdW1tYXJ5PgogIDxvbD4KICAgIDxsaT4KICAgICAgPGEgaHJlZj0iI2Fib3V0LXRoZS1wcm9qZWN0LWFuZC13aHkiPkFib3V0IHRoZSBQcm9qZWN0IGFuZCBXaHk8L2E+CiAgICA8L2xpPgogICAgPGxpPgogICAgICA8YSBocmVmPSIjZmVhdHVyZXMiPkZlYXR1cmVzPC9hPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgPGEgaHJlZj0iI2dldHRpbmctc3RhcnRlZCI+R2V0dGluZyBTdGFydGVkPC9hPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgPGEgaHJlZj0iI2hvdy1pdC13b3JrcyI+SG93IEl0IFdvcmtzPC9hPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgPGEgaHJlZj0iI2NvbnRyaWJ1dGluZyI+Q29udHJpYnV0aW5nPC9hPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgPGEgaHJlZj0iI2xpbWl0YXRpb25zIj5MaW1pdGF0aW9uczwvYT4KICAgIDwvbGk+CiAgICA8bGk+CiAgICAgIDxhIGhyZWY9IiNsaWNlbnNlIj5MaWNlbnNlPC9hPgogICAgPC9saT4KICA8L29sPgo8L2RldGFpbHM+Cgo8YnIgLz4KCjwhLS0gQUJPVVQgVEhFIFBST0pFQ1QgQU5EIFdIWSAtLT4KCiMjIEFib3V0IHRoZSBQcm9qZWN0IGFuZCBXaHkKCjxhIGhyZWY9Imh0dHBzOi8vYXR5b3Vyc2VydmljZS5hd2Fsc2guaW8vIj48aW1nIGFsdD0ibnBtIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvVmlldyUyMC1MaXZlJTIwRGVtby00MjI2NjIiPjwvYT4KCgpUaGlzIHRvb2wgaXMgZGVzaWduZWQgdG8gaGVscCB0YWNrbGUgcHJvYmxlbXMgdGhhdCBhcmlzZSBmcm9tIGEgbGFjayBvZiBhd2FyZW5lc3Mgb24gQVBJIGJlaGF2aW91ci4KCkl0IHJlY29yZHMgbmV0d29yayByZXF1ZXN0cyB1bmRlciB0aGUgaG9vZCB1c2luZyBhIHNlcnZpY2Ugd29ya2VyIHByb3h5LiBBcyB0aGUgdG9vbCBtYWtlcyBvYnNlcnZhdGlvbnMgb2YgbmV0d29yayB0cmFmZmljIG92ZXIgdGltZSwgaXQgbGVhcm5zIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHVuZGVybHlpbmcgQVBJLgoKPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3JlYWRtZS10b3AiPmJhY2sgdG8gdG9wPC9hPik8L3A+Cgo8IS0tIEZFQVRVUkVTIC0tPgoKIyMgRmVhdHVyZXMKCi0gKipTcGVjIGdlbioqOiBhdXRvZ2VuZXJhdGUgW09wZW5BUEkgMy4xXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvYmxvZy8yMDIxLzAyLzE4L29wZW5hcGktc3BlY2lmaWNhdGlvbi0zLTEtcmVsZWFzZWQpIHNwZWNpZmljYXRpb25zIGZyb20gbmV0d29yayB0cmFmZmljCi0gKipDb2RlIGdlbioqOiBbY29udmVydF0oaHR0cHM6Ly9naXRodWIuY29tL3F1aWNrdHlwZS9xdWlja3R5cGUpIG5ldHdvcmsgcmVzcG9uc2UgYm9kaWVzIGludG8gY29kZSBmb3IgMTArIGxhbmd1YWdlcyBpbmNsdWRpbmcgVHlwZVNjcmlwdCwgUHl0aG9uLCBhbmQgSlNPTiBTY2hlbWEKLSAqKkFQSSBPYnNlcnZhYmlsaXR5Kio6IGV4cGxvcmUgdGhlIG5ldHdvcmsgbGF5ZXIgd2l0aCBlbmhhbmNlZCB0b29saW5nCi0gKipFYXN5IGluc3RhbGxhdGlvbioqOiBkZXNpZ25lZCB0byBwbHVnIGluIGFuZCBnbyB3aXRoIGFuIGV4aXN0aW5nIGFwcGxpY2F0aW9uCgo8cCBhbGlnbj0icmlnaHQiPig8YSBocmVmPSIjcmVhZG1lLXRvcCI+YmFjayB0byB0b3A8L2E+KTwvcD4KCjwhLS0gR0VUVElORyBTVEFSVEVEIC0tPgoKIyMgR2V0dGluZyBTdGFydGVkCgpgYXQteW91ci1zZXJ2aWNlYCBmZWF0dXJlcyBhIENMSSB0b29sIHRoYXQgcGxhY2VzIGl0cyBzZXJ2aWNlIHdvcmtlciBmaWxlIGludG8gYSBkaXJlY3RvcnkuIFlvdSBsaWtlbHkgd2lzaCB0byBwbGFjZSB0aGlzIGluIGBwdWJsaWNgIG9yIGBzdGF0aWNgLiBTZWUgW21vcmUgaW5mb3JtYXRpb24gaGVyZV0oaHR0cHM6Ly9tc3dqcy5pby9kb2NzL2dldHRpbmctc3RhcnRlZC9pbnRlZ3JhdGUvYnJvd3NlciN3aGVyZS1pcy1teS1wdWJsaWMtZGlyZWN0b3J5KSBvbiBjb21tb24gbG9jYXRpb25zIGZvciBzdGF0aWMgZmlsZXMuCgpUaGUgc2VydmljZSB3b3JrZXIgbXVzdCBiZSBzZXJ2ZWQgZnJvbSB0aGUgcm9vdCBvZiB5b3VyIHNpdGUuIE9uY2UgdGhpcyBpcyBpbnN0YWxsZWQgcnVuIHRoZSBzdGFydCBzY3JpcHQgaW4geW91ciBhcHBsaWNhdGlvbiBjb2RlLgoKMS4gSW5zdGFsbCB0aGUgbnBtIHBhY2thZ2UKICAgYGBgc2gKICAgbnBtIGluc3RhbGwgLUQgYXQteW91ci1zZXJ2aWNlQGxhdGVzdAogICBgYGAKMi4gQWRkIHNlcnZpY2Ugd29ya2VyIHRvIHlvdXIgYHB1YmxpY2AsIGBzdGF0aWNgLCBvciBvdGhlcndpc2Ugcm9vdCBkaXJlY3RvcnkKICAgYGBgc2gKICAgbnB4IGF0LXlvdXItc2VydmljZUBsYXRlc3QgPGRpcmVjdG9yeT4KICAgYGBgCjMuIFJ1biB0aGUgc3RhcnQgc2NyaXB0IGluIHlvdXIgYXBwbGljYXRpb24KCiAgIGBgYHRzCiAgIGltcG9ydCB7IHN0YXJ0QXRZb3VyU2VydmljZSB9IGZyb20gImF0LXlvdXItc2VydmljZSI7CgogICBzdGFydEF0WW91clNlcnZpY2UoKTsKICAgYGBgCgo0LiBBIGJ1dHRvbiB0byBvcGVuIHRoZSBkcmF3ZXIgd2lsbCBiZSB2aXNpYmxlIG9uIHlvdXIgc2l0ZQo1LiBZb3UgY2FuIHZpZXcgY29waWVkIE9wZW5BUEkgMy4xIHNwZWNpZmljYXRpb25zIGluIFtlZGl0b3ItbmV4dC5zd2FnZ2VyLmlvXShodHRwczovL2VkaXRvci1uZXh0LnN3YWdnZXIuaW8vKS4gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywgeW91IG5lZWQgdG8gbWFudWFsbHkgY2hhbmdlIHRoZSB2ZXJzaW9uIGZyb20gYDMuMS4wYCB0byBgMy4wLjBgIGFmdGVyIHBhc3RpbmcgdGhlIHNwZWNpZmljYXRpb24uIFN1cHBvcnQgZm9yIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgc3BlY2lmY2F0aW9uIGlzIGFuIG9uZ29pbmcgcHJvY2VzcwoKPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3JlYWRtZS10b3AiPmJhY2sgdG8gdG9wPC9hPik8L3A+Cgo8IS0tIEhPVyBJVCBXT1JLUyAtLT4KCiMjIEhvdyBJdCBXb3JrcwoKTW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmF0aW9uYWxlLCBmdW5jdGlvbmFsaXR5LCBhbmQgYXJjaGl0ZWN0dXJlIG9mIHRoZSB0b29sIFtjYW4gYmUgZm91bmQgaGVyZV0oaHR0cHM6Ly9hd2Fsc2guaW8vcG9zdHMvZGV2ZWxvcGVyLXRvb2wtYXBpLWRpc2NvdmVyeS1vYnNlcnZhYmlsaXR5LWZyb250ZW5kLykuCgo8cCBhbGlnbj0icmlnaHQiPig8YSBocmVmPSIjcmVhZG1lLXRvcCI+YmFjayB0byB0b3A8L2E+KTwvcD4KCjwhLS0gQ09OVFJJQlVUSU5HIC0tPgoKIyMgQ29udHJpYnV0aW5nCgpBIGRldmVsb3BtZW50IGVudmlyb25tZW50IGV4aXN0cyBpbiBgZGVtb2AsIHdoaWNoIHdoZW4gYnVpbHQgaXMgdGhlIGxhbmRpbmcgcGFnZSBmb3IgdGhlIGxpYnJhcnkuCgpJZiB5b3UgaGF2ZSBhIHN1Z2dlc3Rpb24gdGhhdCB3b3VsZCBtYWtlIHRoaXMgYmV0dGVyLCBwbGVhc2UgZm9yayB0aGUgcmVwbyBhbmQgY3JlYXRlIGEgcHVsbCByZXF1ZXN0LgoKPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3JlYWRtZS10b3AiPmJhY2sgdG8gdG9wPC9hPik8L3A+Cgo8IS0tIExJTUlUQVRJT05TIC0tPgoKIyMgTGltaXRhdGlvbnMKClRoZSBsaWJyYXJ5IGNyZWF0ZXMgc3BlY2lmaWNhdGlvbnMgdGhhdCBhcmUgb25seSBhcyBhY2N1cmF0ZSBhcyB0aGUgdW5kZXJseWluZyBvYnNlcnZhdGlvbnMuIElmIHlvdXIgYXBwbGljYXRpb24gcmVsaWVzIG9uIGEgcmVzcG9uc2UgYm9keSB0aGF0IGhhcyBub3QgYmVlbiBvYnNlcnZlZCwgdGhlbiB0eXBlIGluZm9ybWF0aW9uIGZvciBpdCB3aWxsIG5vdCBiZSBhdmFpbGFibGUuCgpPdmVyYWxsIHRoZSBpbnRlbnQgaXMgdG8gcHJvZHVjZSBhICpiZXN0IGd1ZXNzKiB0aGF0IHJldmVhbHMgQVBJIGJlaGF2aW91ci4gVGhpcyB3aWxsIG5ldmVyIGJlIGEgcmVwbGFjZW1lbnQgZm9yIHByb3BlciBkb2N1bWVudGF0aW9uLgoKPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3JlYWRtZS10b3AiPmJhY2sgdG8gdG9wPC9hPik8L3A+Cgo8IS0tIExJQ0VOU0UgLS0+CgojIyBMaWNlbnNlCgpEaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBgTElDRU5TRWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgo8cCBhbGlnbj0icmlnaHQiPig8YSBocmVmPSIjcmVhZG1lLXRvcCI+YmFjayB0byB0b3A8L2E+KTwvcD4KCjwhLS0gTUFSS0RPV04gTElOS1MgJiBJTUFHRVMgLS0+CjwhLS0gaHR0cHM6Ly93d3cubWFya2Rvd25ndWlkZS5vcmcvYmFzaWMtc3ludGF4LyNyZWZlcmVuY2Utc3R5bGUtbGlua3MgLS0+CgpbY29udHJpYnV0b3JzLXNoaWVsZF06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2NvbnRyaWJ1dG9ycy9BbmRyZXdXYWxzaC9hdC15b3VyLXNlcnZpY2Uuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UKW2NvbnRyaWJ1dG9ycy11cmxdOiBodHRwczovL2dpdGh1Yi5jb20vQW5kcmV3V2Fsc2gvYXQteW91ci1zZXJ2aWNlL2dyYXBocy9jb250cmlidXRvcnMKW2ZvcmtzLXNoaWVsZF06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2ZvcmtzL0FuZHJld1dhbHNoL2F0LXlvdXItc2VydmljZS5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZQpbZm9ya3MtdXJsXTogaHR0cHM6Ly9naXRodWIuY29tL0FuZHJld1dhbHNoL2F0LXlvdXItc2VydmljZS9uZXR3b3JrL21lbWJlcnMKW3N0YXJzLXNoaWVsZF06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL0FuZHJld1dhbHNoL2F0LXlvdXItc2VydmljZS5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZQpbc3RhcnMtdXJsXTogaHR0cHM6Ly9naXRodWIuY29tL0FuZHJld1dhbHNoL2F0LXlvdXItc2VydmljZS9zdGFyZ2F6ZXJzCltpc3N1ZXMtc2hpZWxkXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvaXNzdWVzL0FuZHJld1dhbHNoL2F0LXlvdXItc2VydmljZS5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZQpbaXNzdWVzLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9BbmRyZXdXYWxzaC9hdC15b3VyLXNlcnZpY2UvaXNzdWVzCltsaWNlbnNlLXNoaWVsZF06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvQW5kcmV3V2Fsc2gvYXQteW91ci1zZXJ2aWNlLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlCltsaWNlbnNlLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9BbmRyZXdXYWxzaC9hdC15b3VyLXNlcnZpY2UvYmxvYi9tYXN0ZXIvTElDRU5TRQo= readmeEtag: '"e0f697045f0006be4901211e12c6cc19aec0a0fe"' readmeLastModified: Wed, 19 Mar 2025 04:24:39 GMT repositoryId: 564572432 description: >- Generate OpenAPI 3.1 specifications from network requests in browser environments created: '2022-11-11T02:02:37Z' updated: '2025-10-06T09:16:31Z' language: TypeScript archived: true stars: 17 watchers: 1 forks: 3 owner: AndrewWalsh logo: https://avatars.githubusercontent.com/u/15863952?v=4 license: MIT repoEtag: '"b534bc75c317d4b6310622a931a87a166280df7be56c29a0fc50165a49aa8d8e"' repoLastModified: Mon, 06 Oct 2025 09:16:31 GMT foundInMaster: true v3_1: true name: at-your-service link: https://atyourservice.awalsh.io/ language: TypeScript source_description: > A developer tool for API observability on the browser. Generate OpenAPI specifications and code from network traffic v2: false category: Server Implementations - source: openapi31 tags repository: https://github.com/up9inc/oas-diff v3_1: true repositoryMetadata: base64Readme: >- WyFbYWNjZXB0YW5jZSB0ZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL3VwOWluYy9vYXMtZGlmZi9hY3Rpb25zL3dvcmtmbG93cy9hY2NlcHRhbmNlX3Rlc3RzLnltbC9iYWRnZS5zdmc/YnJhbmNoPWRldmVsb3ApXShodHRwczovL2dpdGh1Yi5jb20vdXA5aW5jL29hcy1kaWZmL2FjdGlvbnMvd29ya2Zsb3dzL2FjY2VwdGFuY2VfdGVzdHMueW1sKQojIE9BUy1ESUZGIApPQVMgMy4xIFZhbGlkYXRpb24gYW5kIERpZmYgVG9vbAoKIyMgRGVwZW5kZW5jaWVzCi0gR2l0Ci0gTWFrZQotIEdvIDEuMTgrCgojIyBCdWlsZAotIEJ1aWxkCiAgICBgYGBgCiAgICBtYWtlIGJ1aWxkCiAgICBgYGBgCi0gUnVuCiAgICBgYGBgCiAgICAuL2J1aWxkL29hc2RpZmYgLS12ZXJzaW9uCiAgICBgYGBgCiMjIE9wdGlvbnMKLSBWYWxpZGF0ZQogICAgYGBgYAogICAgLS1iYXNlLWZpbGUgdmFsdWUsIC0tZjEgdmFsdWUgICAgcGF0aCBvZiB0aGUgYmFzZSBPQVMgMy4xIGZpbGUKICAgIC0taGVscCwgLWggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3cgaGVscCAoZGVmYXVsdDogZmFsc2UpCiAgIGBgYGAKLSBEaWZmCiAgICBgYGBgCiAgICAtLWJhc2UtZmlsZSB2YWx1ZSwgLS1mMSB2YWx1ZSAgICBwYXRoIG9mIHRoZSBiYXNlIE9BUyAzLjEgZmlsZQogICAgLS1zZWNvbmQtZmlsZSB2YWx1ZSwgLS1mMiB2YWx1ZSAgcGF0aCBvZiB0aGUgc2Vjb25kIE9BUyAzLjEgZmlsZQogICAgLS10eXBlLWZpbHRlciB2YWx1ZSwgLS10ZiB2YWx1ZSAgY2hhbmdlbG9nIFR5cGUgZmlsdGVyIChjcmVhdGUvdXBkYXRlL2RlbGV0ZSkKICAgIC0tb3V0cHV0LWh0bWwsIC0tb2ggICAgICAgICAgICAgIHNhdmUgYW4gaHRtbCByZXBvcnQgKGRlZmF1bHQ6IGZhbHNlKQogICAgLS1vdXRwdXQtZW5kcG9pbnQsIC0tb2UgICAgICAgICAgZW5kcG9pbnQgYmFzZWQgY2hhbmdlbG9nIG91dHB1dCAoZGVmYXVsdDogZmFsc2UpCiAgICAtLWxvb3NlLCAtbCAgICAgICAgICAgICAgICAgICAgICBsb29zZWx5IGRpZmYsIGlnbm9yZXMgZ2xvYmFsIGNhc2Ugc2Vuc2l0aXZpdHkgZm9yIHN0cmluZ3MgY29tcGFyaXNvbnMgYW5kIGlnbm9yZSBoZWFkZXJzIHRoYXQgc3RhcnQgd2l0aCAneC0nIGFuZCAndXNlci1hZ2VudCcgKGRlZmF1bHQ6IGZhbHNlKQogICAgLS1pbmNsdWRlLWZpbGUtcGF0aCwgLS1pZnAgICAgICAgd2hldGhlciBvciBub3QgdG8gaW5jbHVkZSB0aGUgZnVsbCBmaWxlIHBhdGggZnJvbSB0aGUgZGlmZiBjaGFuZ2Vsb2cgKGRlZmF1bHQ6IGZhbHNlKQogICAgLS1pZ25vcmUtZGVzY3JpcHRpb25zLCAtLWlkICAgICAgd2hldGhlciBvciBub3QgdG8gaWdub3JlIGRlc2NyaXB0aW9ucyB3aGVuIHBlcmZvcm1pbmcgdGhlIGRpZmYgKGRlZmF1bHQ6IGZhbHNlKQogICAgLS1pZ25vcmUtZXhhbXBsZXMsIC0taWUgICAgICAgICAgd2hldGhlciBvciBub3QgdG8gaWdub3JlIGV4YW1wbGVzIHdoZW4gcGVyZm9ybWluZyB0aGUgZGlmZiAoZGVmYXVsdDogZmFsc2UpCiAgICAtLWhlbHAsIC1oICAgICAgICAgICAgICAgICAgICAgICBzaG93IGhlbHAgKGRlZmF1bHQ6IGZhbHNlKQogICAgYGBgYAojIyBFeGFtcGxlcwotIFZlcnNpb24KICAgIGBgYGAKICAgIC4vYnVpbGQvb2FzZGlmZiAtdgogICAgYGBgYAotIEF2YWlsYWJsZSBDb21tYW5kcwogICAgYGBgYAogICAgLi9idWlsZC9vYXNkaWZmCiAgICBgYGBgCi0gVmFsaWRhdGUKICAgIGBgYGAKICAgIC4vYnVpbGQvb2FzZGlmZiB2YWxpZGF0ZSAtLWJhc2UtZmlsZSBleGFtcGxlcy9pbnZhbGlkLmpzb24KICAgIC4vYnVpbGQvb2FzZGlmZiB2YWxpZGF0ZSAtLWYxIGV4YW1wbGVzL2ludmFsaWQuanNvbgogICAgYGBgYAotIERpZmYKICAgIGBgYGAKICAgIC4vYnVpbGQvb2FzZGlmZiBkaWZmIC0tYmFzZS1maWxlIGV4YW1wbGVzL3NpbXBsZS5qc29uIC0tc2Vjb25kLWZpbGUgZXhhbXBsZXMvc2ltcGxlMi5qc29uCiAgICAuL2J1aWxkL29hc2RpZmYgZGlmZiAtLWJhc2UtZmlsZSBleGFtcGxlcy9zaW1wbGUuanNvbiAtLXNlY29uZC1maWxlIGV4YW1wbGVzL3NpbXBsZTIuanNvbiAtLWxvb3NlCiAgICAuL2J1aWxkL29hc2RpZmYgZGlmZiAtLWYxIGV4YW1wbGVzL3NpbXBsZS5qc29uIC0tZjIgZXhhbXBsZXMvc2ltcGxlMi5qc29uIC0tdHlwZS1maWx0ZXIgY3JlYXRlCiAgICAuL2J1aWxkL29hc2RpZmYgZGlmZiAtLWYxIGV4YW1wbGVzL3NpbXBsZS5qc29uIC0tZjIgZXhhbXBsZXMvc2ltcGxlMi5qc29uIC0tdHlwZS1maWx0ZXIgdXBkYXRlCiAgICAuL2J1aWxkL29hc2RpZmYgZGlmZiAtLWYxIGV4YW1wbGVzL3NpbXBsZS5qc29uIC0tZjIgZXhhbXBsZXMvc2ltcGxlMi5qc29uIC0tdHlwZS1maWx0ZXIgZGVsZXRlCiAgICAuL2J1aWxkL29hc2RpZmYgZGlmZiAtLWYxIGV4YW1wbGVzL3NpbXBsZS5qc29uIC0tZjIgZXhhbXBsZXMvc2ltcGxlMi5qc29uIC0taWdub3JlLWRlc2NyaXB0aW9ucwogICAgLi9idWlsZC9vYXNkaWZmIGRpZmYgLS1mMSBleGFtcGxlcy9zaW1wbGUuanNvbiAtLWYyIGV4YW1wbGVzL3NpbXBsZTIuanNvbiAtLWlnbm9yZS1leGFtcGxlcwogICAgLi9idWlsZC9vYXNkaWZmIGRpZmYgLS1mMSBleGFtcGxlcy9zaW1wbGUuanNvbiAtLWYyIGV4YW1wbGVzL3NpbXBsZTIuanNvbiAtLWxvb3NlIC0taWdub3JlLWRlc2NyaXB0aW9ucyAtLWlnbm9yZS1leGFtcGxlcwogICAgLi9idWlsZC9vYXNkaWZmIGRpZmYgLS1mMSBleGFtcGxlcy9zaW1wbGUuanNvbiAtLWYyIGV4YW1wbGVzL3NpbXBsZTIuanNvbiAtLW91dHB1dC1odG1sCiAgICAuL2J1aWxkL29hc2RpZmYgZGlmZiAtLWYxIGV4YW1wbGVzL3NpbXBsZS5qc29uIC0tZjIgZXhhbXBsZXMvc2ltcGxlMi5qc29uIC0tb3V0cHV0LWVuZHBvaW50CiAgICAuL2J1aWxkL29hc2RpZmYgZGlmZiAtLWYxIGV4YW1wbGVzL3NpbXBsZS5qc29uIC0tZjIgZXhhbXBsZXMvc2ltcGxlMi5qc29uIC0tb3V0cHV0LWVuZHBvaW50IC0tb3V0cHV0LWh0bWwgLS10eXBlLWZpbHRlciB1cGRhdGUKICAgIGBgYGAKCiMjIEFycmF5IElkZW50aWZpZXJzCiBBcnJheSBpZGVudGlmaWVycyBhcmUgdXNlZCBvbmx5IGZvciBhcnJheXMgdG8gY29tcGFyZSBhcnJheXMgYnkgYSBtYXRjaGluZyBpZGVudGlmaWVyIGFuZCBub3QgYmFzZWQgb24gb3JkZXIuIElmIGFuIGlkZW50aWZpYWJsZSBlbGVtZW50IGlzIGZvdW5kIGluIGJvdGggdGhlIGZyb20gYW5kIHRvIHN0cnVjdHVyZXMsIHRoZXkgd2lsbCBiZSBkaXJlY3RseSBjb21wYXJlZAoKLSBTZXJ2ZXJzCiAgICBgYGBgCiAgICBVUkwgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgYGpzb246InVybCxvbWl0ZW1wdHkiIGRpZmY6InVybCxpZGVudGlmaWVyImAKICAgIGBgYGAKLSBUYWdzCiAgICBgYGBgCiAgICBOYW1lICAgICAgICAgc3RyaW5nICAgICAgICBganNvbjoibmFtZSxvbWl0ZW1wdHkiIGRpZmY6Im5hbWUsaWRlbnRpZmllciJgCiAgICBgYGBgCi0gUGFyYW1ldGVycwogICAgYGBgYAogICAgTmFtZSAgICAgICAgIHN0cmluZyAgICAgICAgYGpzb246Im5hbWUsb21pdGVtcHR5IiBkaWZmOiJuYW1lLGlkZW50aWZpZXIiYAogICAgYGBgYAoKIyMgQ2hhbmdlbG9nIFJ1bGVzCi0gQXJyYXlzCiAgICBgYGBgCiAgICBDUkVBVEUvREVMRVRFIC0+IEFsd2F5cyB0aGUgZW50aXJlIGVsZW1lbnQKICAgIFVQREFURSAtPiBPbmx5IHRoZSBwcm9wZXJ0eSwgZXhjZXB0aW9uIGlmIHRoZSBwcm9wZXJ0eSBpcyB0aGUgaWRlbnRpZmllcgogICAgYGBgYAoKIyMgTGltaXRhdGlvbnMKLSBgb3BlbmFwaWAgZmllbGQgaXMgbm90IGEgcGFydCBvZiB0aGUgY2hhbmdlbG9nLCB3ZSBvbmx5IHN1cHBvcnQgT0FTIHZlcnNpb24gMy4xLCBzbyBhbnkgY2hhbmdlcyB3aWxsIGNhdXNlIGEgdmFsaWRhdGlvbiBmYWlsdXJlCi0gYGpzb25TY2hlbWFEaWFsZWN0YCBmaWVsZCBpcyBub3QgYSBwYXJ0IG9mIHRoZSBjaGFuZ2Vsb2csIHdlIG9ubHkgc3VwcG9ydCBPQVMgdmVyc2lvbiAzLjEgYW5kIGl0IHVzZXMgYEpTT04gU2NoZW1hIFZhbGlkYXRpb24gRHJhZnQgMjAyMC0xMmAKLSBgU3BlY2lmaWNhdGlvbiBFeHRlbnNpb25zYCBhcmUgbm90IHN1cHBvcnRlZCAoVE9ETykKLSBgcGFyYW1ldGVyc2AgYXJyYXkgb2YgYFJlZmVyZW5jZSBPYmplY3RgIGFyZSBub3Qgc3VwcG9ydGVkIChUT0RPKQ== readmeEtag: '"bbde2a9d823fdc2d4e23883c3402ef9d76eb4542"' readmeLastModified: Sun, 12 Jun 2022 12:25:54 GMT repositoryId: 457402945 description: OAS 3.1 Validation and Diff CLI Tool created: '2022-02-09T14:54:00Z' updated: '2024-10-16T17:36:40Z' language: Go archived: false stars: 10 watchers: 3 forks: 0 owner: up9inc logo: https://avatars.githubusercontent.com/u/51116998?v=4 repoEtag: '"75be76dcf31a261f1accd5aa3ae1c227fc0970eff7c60300bef5caff3c70eb01"' repoLastModified: Wed, 16 Oct 2024 17:36:40 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: d626b1c63ecbfe1be8f891819fb740bf - source: openapi31 tags repository: https://github.com/ghostrider-05/patreon-api-spec v3_1: true id: ec6b22685d3f6b8b1bc770ed5c4f8eaf repositoryMetadata: base64Readme: >- IyBQYXRyZW9uIE9wZW5BUEkKClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyBhIHByZXZpZXcgb2YgdGhlIFtPcGVuQVBJIDMuMSBzcGVjaWZpY2F0aW9uXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21haW4vdmVyc2lvbnMvMy4xLjAubWQpIGZvciBbUGF0cmVvbnMncyBBUEldKGh0dHBzOi8vZG9jcy5wYXRyZW9uLmNvbS8pLiBDdXJyZW50bHksIHRoZSBzcGVjIGlzIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgQVBJIHZlcnNpb24gW3YyXShodHRwczovL2RvY3MucGF0cmVvbi5jb20vI2FwaXYyLW9hdXRoKS4KCj4gWyFXQVJOSU5HXQo+IFRoaXMgcmVwb3NpdG9yeSBpcyBub3QgY3JlYXRlZCwgbWFpbnRhaW5lZCBvciBhc3NvY2lhdGVkIGluIGFueSB3YXkgd2l0aCBQYXRyZW9uLiBCb3RoIHNwZWNpZmljYXRpb25zIGFyZSBtYWRlIGZyb20gdGhlIHB1YmxpYyBkb2N1bWVudGVkIEFQSSBhbmQgYXJlIHN1YmplY3QgdG8gYnJlYWtpbmcgY2hhbmdlcyB3aXRob3V0IG5vdGljZSBpZiBQYXRyZW9uIHVwZGF0ZXMgdGhlIHB1YmxpYyBBUEkuCgojIyBVc2FnZQoKIyMjIFNwZWMgRmlsZXMKClR3byB2ZXJzaW9ucyBvZiB0aGUgc3BlYyBhcmUgaW5jbHVkZWTigJR0aGUgc3RhbmRhcmQgc3BlYyBhbmQgdGhlIHByZXZpZXcgc3BlYzoKCi0gW2BvcGVuYXBpLmpzb25gXShzcGVjcy9vcGVuYXBpLmpzb24pIGlzIHRoZSBzdGFuZGFyZCBzcGVjIHRoYXQgY29udGFpbnMgdGhlIGRvY3VtZW50ZWQsIHB1YmxpYyBBUEkuCi0gW2BvcGVuYXBpX3ByZXZpZXcuanNvbmBdKHNwZWNzL29wZW5hcGlfcHJldmlldy5qc29uKSBpcyB0aGUgcHJldmlldyBzcGVjIHdoaWNoIGNvbnRhaW5zIHVuc3RhYmxlIGFuZC9vciB1bmRvY3VtZW50ZWQgQVBJIGZlYXR1cmVzLiAqKlRoaXMgc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIHN0YWJsZSoqIG9yIHVzZWQgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMuCgojIyMgRG9jdW1lbnRhdGlvbgoKVG8gdmlldyBib3RoIHRoZSBzdGFibGUgYW5kIGV4cGVyaW1lbnRhbCBzcGVjaWZpY2F0aW9ucywgc2VlIHRoZSBbQVBJIHJlZmVyZW5jZV0oaHR0cHM6Ly9wYXRyZW9uLmFwaWRvY3VtZW50YXRpb24uY29tL3YyLXN0YWJsZS9yZWZlcmVuY2UpLgoKVG8gdXNlIHRoZSBQYXRyZW9uIEFQSSB3aXRoIGEgbGlicmFyeSwgZ28gdG8gdGhlIFtkb2N1bWVudGF0aW9uIG9mIGBwYXRyZW9uLWFwaS50c2BdKGh0dHBzOi8vcGF0cmVvbi1hcGkucGFnZXMuZGV2LykuCgo8IS0tIFRPRE86IC0tPgo8IS0tICMjIyBJbnRlZ3JhdGluZyB3aXRoIFBvc3RtYW4gLS0+CgojIyBDb250cmlidXRpbmcKCk9wZW5BUEkgc3BlYyBjb250ZW50cyBhcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhlIFtgcGF0cmVvbi1hcGkudHNgXShodHRwczovL2dpdGh1Yi5jb20vZ2hvc3RyaWRlci0wNS9wYXRyZW9uLWFwaS50cykgbGlicmFyeS4KCkZvciBidWcgZml4ZXMgb3IgaW1wcm92ZW1lbnRzIGZvciB0aGUgT3BlbkFQSSBzcGVjLCB5b3UgY2FuIFtvcGVuIGFuIGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20vZ2hvc3RyaWRlci0wNS9wYXRyZW9uLWFwaS1zcGVjL2lzc3VlcykuCgojIyBLbm93biBpc3N1ZXMKClRPRE86IGFkZCBrbm93biBpc3N1ZXMKCiMjIExpY2Vuc2UKCltNSVRdKGh0dHBzOi8vZ2l0aHViLmNvbS9naG9zdHJpZGVyLTA1L3BhdHJlb24tYXBpLnRzL2Jsb2IvbWFpbi9MSUNFTlNFKQo= readmeEtag: '"4452d74f62c1ff92a9d57f0e571c5c73e770f252"' readmeLastModified: Mon, 09 Dec 2024 14:29:47 GMT repositoryId: 879807162 description: OpenAPI specification for Patreon API created: '2024-10-28T15:24:59Z' updated: '2026-01-14T19:45:32Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: ghostrider-05 logo: https://avatars.githubusercontent.com/u/52837878?v=4 repoEtag: '"cf4082765c2e0af917fa57efa092bbffeb7f2f052c9868ba60e9368ff4a531be"' repoLastModified: Wed, 14 Jan 2026 19:45:32 GMT category: Parsers foundInMaster: true - source: openapi31 tags repository: https://github.com/cedric05/swagger2har v3_1: true id: e5a20892c281663f25c6b50cecd202f7 repositoryMetadata: base64Readme: IyBzd2FnZ2VyMmhhcg== readmeEtag: '"52a2b7aaa2a0ec9d7ff8a336fca1b7ee6edcfccc"' readmeLastModified: Tue, 16 Jul 2024 13:44:05 GMT repositoryId: 829025450 description: null created: '2024-07-15T15:49:19Z' updated: '2024-07-16T13:44:15Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: cedric05 logo: https://avatars.githubusercontent.com/u/11557066?v=4 repoEtag: '"6d41fa9ca7c8b263993b17338a18dd33d0668fdb7d7e3af1d382e5a3d4ddd869"' repoLastModified: Tue, 16 Jul 2024 13:44:15 GMT category: Server Implementations foundInMaster: true - source: openapi31 tags repository: https://github.com/maks11060/openapi v3_1: true id: 05f95a2311cf6fd43cebf9e24ba9e4b6 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIHNjaGVtYXMKClVub2ZmaWNpYWwgT3BlbkFQSSBzY2hlbWFzIGZvciBzb21lIHB1YmxpYyBBUElzCgotIFtEYW5ib29ydV0oI2RhbmJvb3J1KQotIFtNb2Vib29ydV0oI21vZWJvb3J1KQotIFtTaGlraW1vcmldKCNzaGlraW1vcmkpCgo+IFshTk9URV0KPgo+IC0gKipPcGVuQVBJIDMuMSoqCj4gLSBDb2RlIGV4YW1wbGVzIFtgL2V4YW1wbGVgXShleGFtcGxlKQo+IC0gU2NoZW1hcyBkZWZpbml0aW9ucyBpbiBbem9kXShodHRwczovL3pvZC5kZXYvKQo+IC0gT3BlbkFQSSBCdWlsZGVyIFtganNyOkBtYWtzMTEwNjAvb3BlbmFwaWBdKGh0dHBzOi8vanNyLmlvL0BtYWtzMTEwNjAvb3BlbmFwaSkKCiMjIERhbmJvb3J1CgotIFtEYW5ib29ydV0oaHR0cHM6Ly9kYW5ib29ydS5kb25tYWkudXMvKQogIC0gW0FwaSBXaWtpXShodHRwczovL2RhbmJvb3J1LmRvbm1haS51cy93aWtpX3BhZ2VzL2hlbHA6YXBpKQogIC0gW1NlYXJjaCBDaGVhdHNoZWV0XShodHRwczovL2RhbmJvb3J1LmRvbm1haS51cy93aWtpX3BhZ2VzL2hlbHAlM0FjaGVhdHNoZWV0KQogIC0gW0RhbmJvb3J1IEhlbHAgVGFibGUgb2YgQ29udGVudHNdKGh0dHBzOi8vZGFuYm9vcnUuZG9ubWFpLnVzL3dpa2lfcGFnZXMvaGVscDp0b2MjZHRleHQtZGV2ZWxvcGVyX2d1aWRlKQotIFtDb2RlIGV4YW1wbGVdKC4vZXhhbXBsZS9kYW5ib29ydS50cykKLSBbUmVkb2NdW2RhbmJvb3J1LnJlZG9jXQotIFtTd2FnZ2VyIEVkaXRvcl1bZGFuYm9vcnUuc3dhZ2dlcl0KCiMjIyBUeXBlc2NyaXB0IGNsaWVudCB3aXRoIFtvcGVuYXBpLWZldGNoXShodHRwczovL29wZW5hcGktdHMuZGV2L29wZW5hcGktZmV0Y2gvKQoKIyMjIyAxLiBHZW5lcmF0aW5nIHR5cGVzIGZyb20gT3BlbkFQSSBzY2hlbWEKCmBgYHBzCmRlbm8gcnVuIC1BIG5wbTpvcGVuYXBpLXR5cGVzY3JpcHQgXAogIGh0dHBzOi8vZ2l0aHViLmNvbS9NQUtTMTEwNjAvb3BlbmFwaS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvZGFuYm9vcnUub3BlbmFwaS55YW1sIFwKICAtbyAuL2RhbmJvb3J1Lm9hcy50cwpgYGAKCmBgYHBzCm5weCBvcGVuYXBpLXR5cGVzY3JpcHQgXAogIGh0dHBzOi8vZ2l0aHViLmNvbS9NQUtTMTEwNjAvb3BlbmFwaS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvZGFuYm9vcnUub3BlbmFwaS55YW1sIFwKICAtbyAuL2RhbmJvb3J1Lm9hcy50cwpgYGAKCiMjIyMgMi4gQ3JlYXRlIG9wZW5hcGktZmV0Y2ggY2xpZW50CgpgYGB0cwovLyBkYW5ib29ydS50cwppbXBvcnQgY3JlYXRlQ2xpZW50IGZyb20gJ29wZW5hcGktZmV0Y2gnCmltcG9ydCB0eXBlIHtjb21wb25lbnRzLCBwYXRoc30gZnJvbSAnLi9kYW5ib29ydS5vYXMudHMnCgpleHBvcnQgdHlwZSBEYW5ib29ydSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXQoKLy8gQWxtb3N0IGFsbCBHRVQgcmVxdWVzdHMgZG8gbm90IHJlcXVpcmUgYXV0aG9yaXphdGlvbi4KLy8gVG8gdXNlICdzYXZlZCBzZWFyY2hlcycsIHlvdSBuZWVkIGFuIEFwaUtleS4KLy8gUmVnaXN0ZXIgYXBpIGtleTogaHR0cHM6Ly9kYW5ib29ydS5kb25tYWkudXMvcHJvZmlsZSA9PiBBUEkgS2V5Ci8vIGNvbnN0IGxvZ2luID0gJycKLy8gY29uc3QgYXBpS2V5ID0gJycKLy8gY29uc3QgYXV0aG9yaXphdGlvbiA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShgJHtsb2dpbn06JHthcGlLZXl9YCkudG9CYXNlNjQoKQoKZXhwb3J0IGNvbnN0IGRhbmJvb3J1QXBpID0gY3JlYXRlQ2xpZW50PHBhdGhzPih7CiAgYmFzZVVybDogJ2h0dHBzOi8vZGFuYm9vcnUuZG9ubWFpLnVzJywKICAvLyBoZWFkZXJzOiB7YXV0aG9yaXphdGlvbn0sCiAgcXVlcnlTZXJpYWxpemVyLAp9KQoKLy8gZGVlcCBzZXJpYWxpemVyIC8ge3NlYXJjaDoge2lkOiBbMSwyXX19ID0+ID9zZWFyY2hbaWRdPTEsMgpmdW5jdGlvbiBxdWVyeVNlcmlhbGl6ZXIoCiAgb2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwKICBwYXJhbXM6IFVSTFNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKSwKICBwcmVmaXggPSAnJywKKTogc3RyaW5nIHsKICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7CiAgICBjb25zdCBlbmNvZGVkS2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KGtleSkKICAgIGNvbnN0IHBhcmFtS2V5ID0gcHJlZml4ID8gYCR7cHJlZml4fVske2VuY29kZWRLZXl9XWAgOiBlbmNvZGVkS2V5CiAgICBpZiAodmFsdWUgPT0gbnVsbCkgY29udGludWUKICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgewogICAgICBpZiAodmFsdWUubGVuZ3RoID09PSAwKSBjb250aW51ZQogICAgICBwYXJhbXMuYXBwZW5kKHBhcmFtS2V5LCB2YWx1ZS5tYXAoU3RyaW5nKS5qb2luKCcsJykpCiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHsKICAgICAgcXVlcnlTZXJpYWxpemVyKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwYXJhbXMsIHBhcmFtS2V5KQogICAgfSBlbHNlIHsKICAgICAgcGFyYW1zLmFwcGVuZChwYXJhbUtleSwgU3RyaW5nKHZhbHVlKSkKICAgIH0KICB9CgogIHJldHVybiBwYXJhbXMudG9TdHJpbmcoKQp9CmBgYAoKIyMgTW9lYm9vcnUKCi0gW1JlZG9jXVttb2Vib29ydS5yZWRvY10KLSBbU3dhZ2dlciBFZGl0b3JdW21vZWJvb3J1LnN3YWdnZXJdCgojIyMjIEEgZ3JvdXAgb2Ygc2VydmljZXMgYmFzZWQgb24gW21vZWJvb3J1XShodHRwczovL2dpdGh1Yi5jb20vbW9lYm9vcnUvbW9lYm9vcnUpCgotIFt5YW5kZS5yZV0oaHR0cHM6Ly95YW5kZS5yZSkKICAtIFtBcGkgZG9jXShodHRwczovL3lhbmRlLnJlL2hlbHAvYXBpKQotIFtrb25hY2hhbi5jb21dKGh0dHBzOi8va29uYWNoYW4uY29tKSB8IFtrb25hY2hhbi5uZXRdKGh0dHBzOi8va29uYWNoYW4ubmV0KQoKIyMjIFR5cGVzY3JpcHQgY2xpZW50IHdpdGggW29wZW5hcGktZmV0Y2hdKGh0dHBzOi8vb3BlbmFwaS10cy5kZXYvb3BlbmFwaS1mZXRjaC8pCgojIyMjIDEuIEdlbmVyYXRpbmcgdHlwZXMgZnJvbSBPcGVuQVBJIHNjaGVtYQoKYGBgcHMKZGVubyBydW4gLUEgbnBtOm9wZW5hcGktdHlwZXNjcmlwdCBcCiAgaHR0cHM6Ly9naXRodWIuY29tL01BS1MxMTA2MC9vcGVuYXBpL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC9tb2Vib29ydS5vcGVuYXBpLnlhbWwgXAogIC1vIC4vbW9lYm9vcnUub2FzLnRzCmBgYAoKYGBgcHMKbnB4IG9wZW5hcGktdHlwZXNjcmlwdCBcCiAgaHR0cHM6Ly9naXRodWIuY29tL01BS1MxMTA2MC9vcGVuYXBpL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC9tb2Vib29ydS5vcGVuYXBpLnlhbWwgXAogIC1vIC4vbW9lYm9vcnUub2FzLnRzCmBgYAoKIyMjIyAyLiBDcmVhdGUgb3BlbmFwaS1mZXRjaCBjbGllbnQKCmBgYHRzCi8vIG1vZWJvb3J1LnRzCmltcG9ydCBjcmVhdGVDbGllbnQgZnJvbSAnb3BlbmFwaS1mZXRjaCcKaW1wb3J0IHR5cGUge2NvbXBvbmVudHMsIHBhdGhzfSBmcm9tICcuL21vZWJvb3J1Lm9hcy50cycKCmV4cG9ydCB0eXBlIE1vZWJvb3J1ID0gY29tcG9uZW50c1snc2NoZW1hcyddCgpleHBvcnQgY29uc3QgbW9lYm9vcnVBcGkgPSBjcmVhdGVDbGllbnQ8cGF0aHM+KHsKICBiYXNlVXJsOiAnaHR0cHM6Ly95YW5kZS5yZScsCiAgLy8gYmFzZVVybDogJ2h0dHBzOi8va29uYWNoYW4uY29tJywKICAvLyBiYXNlVXJsOiAnaHR0cHM6Ly9rb25hY2hhbi5uZXQnLAp9KQoKLy8gaGFuZGxlICcvcG9zdC5qc29uP2FwaV92ZXJzaW9uPTInCmFwaS51c2UoeyAvLyBtZXJnZSB0d28gcXVlcnkgcGFyYW1ldGVycyAnP3Zlcj0yP3RhZ3M9aWQ6MScgPT4gJz92ZXI9MiZ0YWdzPWlkOjEnCiAgb25SZXF1ZXN0KHtyZXF1ZXN0fSkgewogICAgY29uc3QgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCkKICAgIGlmICh1cmwuc2VhcmNoLnNsaWNlKDEpLmluY2x1ZGVzKCc/JykpIHsKICAgICAgdXJsLnNlYXJjaCA9IHVybC5zZWFyY2guc2xpY2UoMSkucmVwbGFjZSgnPycsICcmJykKICAgIH0KICAgIHJldHVybiBuZXcgUmVxdWVzdCh1cmwsIHJlcXVlc3QpCiAgfSwKfSkKYGBgCgojIyBTaGlraW1vcmkKCi0gW1NoaWtpbW9yaV0oaHR0cHM6Ly9zaGlraW1vcmkub25lLykKICAtIFtEZXZlbG9wZXIgQVBJXShodHRwczovL3NoaWtpbW9yaS5vbmUvYXBpL2RvYykKLSBbQ29kZSBleGFtcGxlXSguL2V4YW1wbGUvc2hpa2ltb3JpLnRzKQotIFtSZWRvY11bc2hpa2ltb3JpLnJlZG9jXQotIFtTd2FnZ2VyIEVkaXRvcl1bc2hpa2ltb3JpLnN3YWdnZXJdCgojIyMgVHlwZXNjcmlwdCBjbGllbnQgd2l0aCBbb3BlbmFwaS1mZXRjaF0oaHR0cHM6Ly9vcGVuYXBpLXRzLmRldi9vcGVuYXBpLWZldGNoLykKCiMjIyMgMS4gR2VuZXJhdGluZyB0eXBlcyBmcm9tIE9wZW5BUEkgc2NoZW1hCgpgYGBwcwpkZW5vIHJ1biAtQSBucG06b3BlbmFwaS10eXBlc2NyaXB0IFwKICBodHRwczovL2dpdGh1Yi5jb20vTUFLUzExMDYwL29wZW5hcGkvcmVsZWFzZXMvbGF0ZXN0L2Rvd25sb2FkL3NoaWtpbW9yaS5vcGVuYXBpLnlhbWwgXAogIC1vIC4vc2hpa2ltb3JpLm9hcy50cwpgYGAKCmBgYHBzCm5weCBvcGVuYXBpLXR5cGVzY3JpcHQgXAogIGh0dHBzOi8vZ2l0aHViLmNvbS9NQUtTMTEwNjAvb3BlbmFwaS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvc2hpa2ltb3JpLm9wZW5hcGkueWFtbCBcCiAgLW8gLi9zaGlraW1vcmkub2FzLnRzCmBgYAoKMi4gQ3JlYXRlIG9wZW5hcGktZmV0Y2ggY2xpZW50CgpgYGB0cwovLyBzaGlraW1vcmkudHMKaW1wb3J0IGNyZWF0ZUNsaWVudCBmcm9tICdvcGVuYXBpLWZldGNoJwppbXBvcnQgdHlwZSB7Y29tcG9uZW50cywgcGF0aHN9IGZyb20gJy4vc2hpa2ltb3JpLm9hcy50cycKCmV4cG9ydCB0eXBlIFNoaWtpbW9yaSA9IGNvbXBvbmVudHNbJ3NjaGVtYXMnXQoKLy8gUmVxdWlyZW1lbnRzCi8vIEFkZCB5b3VyIE9hdXRoMiBBcHBsaWNhdGlvbiBuYW1lIHRvIFVzZXItQWdlbnQgcmVxdWVzdHMgaGVhZGVyLgovLyBEb27igJl0IG1pbWljIGEgYnJvd3Nlci4KLy8gWW91ciBJUCBhZGRyZXNzIG1heSBiZSBiYW5uZWQgaWYgeW91IHVzZSBBUEkgd2l0aG91dCBwcm9wZXJseSBzZXQgVXNlci1BZ2VudCBoZWFkZXIuCmNvbnN0IHNoaWtpbW9yaVVzZXJBZ2VudCA9ICd5b3VyLW9hdXRoMi1hcHAtbmFtZScKCmV4cG9ydCBjb25zdCBzaGlraW1vcmlBcGkgPSBjcmVhdGVDbGllbnQ8cGF0aHM+KHsKICBiYXNlVXJsOiAnaHR0cHM6Ly9zaGlraW1vcmkub25lJywKICAvLyBoZWFkZXJzOiB7J3VzZXItYWdlbnQnOiBzaGlraW1vcmlVc2VyQWdlbnR9LAogIHF1ZXJ5U2VyaWFsaXplcjogewogICAgYXJyYXk6IHtleHBsb2RlOiBmYWxzZSwgc3R5bGU6ICdmb3JtJ30sCiAgfSwKfSkKYGBgCgpbZGFuYm9vcnUucmVkb2NdOiBodHRwczovL3JlZG9jbHkuZ2l0aHViLmlvL3JlZG9jLz91cmw9aHR0cHM6Ly9naXRodWIuY29tL01BS1MxMTA2MC9vcGVuYXBpL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC9kYW5ib29ydS5vcGVuYXBpLnlhbWwKW2RhbmJvb3J1LnN3YWdnZXJdOiBodHRwczovL2VkaXRvci5zd2FnZ2VyLmlvLz91cmw9aHR0cHM6Ly9uby1jb3JzLmRlbm8uZGV2L2h0dHBzOi8vZ2l0aHViLmNvbS9NQUtTMTEwNjAvb3BlbmFwaS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvZGFuYm9vcnUub3BlbmFwaS55YW1sClttb2Vib29ydS5yZWRvY106IGh0dHBzOi8vcmVkb2NseS5naXRodWIuaW8vcmVkb2MvP3VybD1odHRwczovL2dpdGh1Yi5jb20vTUFLUzExMDYwL29wZW5hcGkvcmVsZWFzZXMvbGF0ZXN0L2Rvd25sb2FkL21vZWJvb3J1Lm9wZW5hcGkueWFtbApbbW9lYm9vcnUuc3dhZ2dlcl06IGh0dHBzOi8vZWRpdG9yLnN3YWdnZXIuaW8vP3VybD1odHRwczovL25vLWNvcnMuZGVuby5kZXYvaHR0cHM6Ly9naXRodWIuY29tL01BS1MxMTA2MC9vcGVuYXBpL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC9tb2Vib29ydS5vcGVuYXBpLnlhbWwKW3NoaWtpbW9yaS5yZWRvY106IGh0dHBzOi8vcmVkb2NseS5naXRodWIuaW8vcmVkb2MvP3VybD1odHRwczovL2dpdGh1Yi5jb20vTUFLUzExMDYwL29wZW5hcGkvcmVsZWFzZXMvbGF0ZXN0L2Rvd25sb2FkL3NoaWtpbW9yaS5vcGVuYXBpLnlhbWwKW3NoaWtpbW9yaS5zd2FnZ2VyXTogaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pby8/dXJsPWh0dHBzOi8vbm8tY29ycy5kZW5vLmRldi9odHRwczovL2dpdGh1Yi5jb20vTUFLUzExMDYwL29wZW5hcGkvcmVsZWFzZXMvbGF0ZXN0L2Rvd25sb2FkL3NoaWtpbW9yaS5vcGVuYXBpLnlhbWwKCiMjIEJ1aWxkCgo+IFshTk9URV0KPiAqKlByb2plY3Qgc3RydWN0dXJlKioKPgo+IC0gYHNyYy97c2VydmljZX0vYAo+ICAgLSBgbW9kLnRzYCAtIEVudHJ5IHBvaW50Cj4gICAtIGBvcGVuYXBpLnRzYCAtIENvbmZpZwo+ICAgLSBgc2NoZW1hLnRzYCAtIERhdGEgbW9kZWxzCgojIyMgUHJlcmVxdWlzaXRlcwoKIyMjIyBJbnN0YWxsIFtEZW5vXShodHRwczovL2dpdGh1Yi5jb20vZGVub2xhbmQvZGVuby8/dGFiPXJlYWRtZS1vdi1maWxlI2luc3RhbGxhdGlvbikKCj4gSW5zdGFsbCBkZXBlbmRlbmNpZXMKCmBgYHBzCmRlbm8gcnVuIGluaXQKYGBgCgojIyMjIENoZWNrIGZvcm1hdHRpbmcgYW5kIGJ1aWxkCgpgYGBwcwpkZW5vIHJ1biBvawpgYGAKCiMjIyMgQnVpbGQgT3BlbkFQSSBTY2hlbWFzCgpgYGBwcwpkZW5vIHJ1biBidWlsZApgYGAKCiMjIyMgQnVpbGQgY2xpZW50IHR5cGVzIGluIFtleGFtcGxlXSguL2V4YW1wbGUvKQoKYGBgcHMKZGVubyBydW4gYnVpbGQ6Y2xpZW50CmBgYAo= readmeEtag: '"4f958d46ea41c665f2a848a247c0beeca597a8ce"' readmeLastModified: Mon, 26 Jan 2026 15:13:18 GMT repositoryId: 890460198 description: OpenAPI schema for Danbooru, Moebooru, Shikimori created: '2024-11-18T15:52:52Z' updated: '2026-01-26T15:17:00Z' language: TypeScript archived: false stars: 1 watchers: 0 forks: 0 owner: MAKS11060 logo: https://avatars.githubusercontent.com/u/31521952?v=4 license: MIT repoEtag: '"f4094a9a436f329b67c308b6a5f003a63d3dbfbcafc480ad5126eacf116a4e7d"' repoLastModified: Mon, 26 Jan 2026 15:17:00 GMT category: Parsers foundInMaster: true - source: https://openapi.tools/ name: OpenApiSpecGeneratorPlugin category: - Auto Generators - Server Implementations language: C# link: >- https://learn.microsoft.com/en-us/microsoft-cloud/dev/dev-proxy/technical-reference/openapispecgeneratorplugin repository: https://github.com/dotnet/dev-proxy source_description: >- Built-in plugin for open-source DevProxy that automatically generates OpenAPI 3.0 Spec from captured network requests v3: true id: 9c3752b2072de3b2a3862b6499e1236c repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPiAKICA8aW1nIGFsdD0iRGV2IFByb3h5IiBzcmM9Ii4vbWVkaWEvaWNvbi5wbmciIHdpZHRoPSIxMjUiIC8+CiAgPHA+RGV2IFByb3h5PC9wPiAgCjwvaDE+Cgo8aDQgYWxpZ249ImNlbnRlciI+CiAgVGVzdCB0aGUgdW50ZXN0YWJsZQo8L2g0PgoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9ic2t5LmFwcC9wcm9maWxlL2RldnByb3h5LmJza3kuc29jaWFsIj4KICAgIDxpbWcgYWx0PSJCbHVlc2t5IiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvYmx1ZXNreS0lNDBkZXZwcm94eS5ic2t5LnNvY2lhbCVFMiU4MCVBQy1ibHVlP3N0eWxlPXNvY2lhbCZsb2dvPWJsdWVza3kmbGluaz1odHRwcyUzQSUyRiUyRmJza3kuYXBwJTJGcHJvZmlsZSUyRmRldnByb3h5LmJza3kuc29jaWFsIiAvPgogIDwvYT4KICA8YnIgLz4KICAgPGEgaHJlZj0iaHR0cHM6Ly95b3V0dWJlLmNvbS9AZGV2cHJveHkiPgogICAgPGltZyBhbHQ9IllvdVR1YmUiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS95b3VUdWJlLSU0MGRldnByb3h5JUUyJTgwJUFDLXJlZD9zdHlsZT1zb2NpYWwmbG9nbz15b3V0dWJlJmxpbms9aHR0cHMlM0ElMkYlMkZ5b3V0dWJlLmNvbSUyRiU0MGRldnByb3h5IiAvPgogIDwvYT4KICA8YnIgLz4KICA8YSBocmVmPSJodHRwczovL2FrYS5tcy9kZXZwcm94eSI+CiAgICBEb2N1bWVudGF0aW9uCiAgPC9hPgo8L3A+CgojIFdoYXQgaXMgRGV2IFByb3h5PwoKRGV2IFByb3h5IGlzIGFuIEFQSSBzaW11bGF0b3IgdGhhdCBoZWxwcyB5b3UgZWZmb3J0bGVzc2x5IHRlc3QgeW91ciBhcHAgYmV5b25kIHRoZSBoYXBweSBwYXRoLiBEZXYgUHJveHkgaXMgYSBjb21tYW5kLWxpbmUgdG9vbCB0aGF0IHdvcmtzIG9uIGFueSBwbGF0Zm9ybS4gQmVjYXVzZSBpdCBpbnRlcmNlcHRzIG5ldHdvcmsgcmVxdWVzdHMsIGl0IHdvcmtzIHdpdGggYW55IHR5cGUgb2YgYXBwIGFuZCB0ZWNoIHN0YWNrLgoKRGV2IFByb3h5IGlzICoqb3BlbiBzb3VyY2UqKiBhbmQgKipmcmVlIHRvIHVzZSoqLgoKIVtEZXYgUHJveHldKC4vbWVkaWEvYmFubmVyLnBuZykKCllvdSB0ZXN0IHlvdXIgYXBwIHRvIG1ha2Ugc3VyZSBpdCB3b3JrcyBhcyBpbnRlbmRlZC4gQnV0IHdoYXQgaWYgdGhlIEFQSXMgeW91IHVzZSBmYWlsPyBXaWxsIHlvdXIgYXBwIGxvc2UgeW91ciBjdXN0b21lcidzIGRhdGE/IEhvdyBkbyB5b3UgdGVzdCBmb3IgdGhpcz8gU2ltdWxhdGluZyBBUEkgZmFpbHVyZXMgaXMgaGFyZC4gWW91IGVuZCB1cCB3cml0aW5nIGNvZGUgdGhhdCB5b3Ugd29uJ3QgYmUgc2hpcHBpbmcgb3Igd29yc2U6IG5vdCB0ZXN0aW5nIGF0IGFsbC4gVGhhdCdzIHdoeSB3ZSBidWlsdCBEZXYgUHJveHksIHRvIHNpbXVsYXRlIEFQSSBlcnJvcnMgc28gdGhhdCB5b3UgY2FuIGVhc2lseSB0ZXN0IHlvdXIgYXBwIHdpdGhvdXQgY2hhbmdpbmcgeW91ciBjb2RlLgoKV2l0aCBEZXYgUHJveHkgeW91OgoKLSAqKlNlZSBob3cgeW91ciBhcHAgcmVzcG9uZHMgdG8gQVBJIGVycm9ycyoqLCB3aXRob3V0IGNoYW5naW5nIHlvdXIgYXBw4oCZcyBjb2RlLCBzbyB0aGF0IHlvdSBjYW4gKipidWlsZCBtb3JlIHJvYnVzdCBhcHBzIGFuZCBkb24ndCBsb3NlIGN1c3RvbWVycycgZGF0YSoqLgotICoqVmVyaWZ5IGhvdyB5b3VyIGFwcCBoYW5kbGVzIEFQSSByYXRlIGxpbWl0cyoqLCBzbyB0aGF0IHlvdSBjYW4gYXZvaWQgZ2V0dGluZyB0aHJvdHRsZWQgYW5kICoqaW1wcm92ZSB0aGUgdXNlciBleHBlcmllbmNlIGZvciB5b3VyIGN1c3RvbWVycyoqLgotICoqU2VlIGhvdyB5b3VyIGFwcCBoYW5kbGVzIHNsb3cgQVBJcyoqLCBzbyB0aGF0IHlvdSBjYW4gaW1wbGVtZW50IHRoZSBuZWNlc3NhcnkgYWZmb3JkYW5jZXMsIGFuZCAqKm1ha2UgeW91ciBhcHAgbW9yZSB1c2VyLWZyaWVuZGx5KiouCi0gKipRdWlja2x5IHN0YW5kLXVwIG1vY2sgQVBJcyoqIHdpdGhvdXQgd3JpdGluZyBhIGxpbmUgb2YgY29kZSwgc28gdGhhdCB5b3UgY2FuICoqZm9jdXMgb24gYnVpbGRpbmcgeW91ciBhcHAgaW5zdGVhZCBvZiB3cml0aW5nIGNvZGUgeW91IHdvbid0IGJlIHNoaXBwaW5nKiouCi0gSW1wcm92ZSB5b3VyIGFwcCB3aXRoIGNvbnRleHR1YWwgZ3VpZGFuY2Ugb24gaG93IHlvdSB1c2UgQVBJcywgdG8gKiptYWtlIHlvdXIgYXBwIGV2ZW4gYmV0dGVyKiouCgojIyBHZXQgc3RhcnRlZAoKVG8gZ2V0IHN0YXJ0ZWQgd2l0aCBEZXYgUHJveHksIGZvbGxvdyBvdXIgW3R1dG9yaWFsXShodHRwczovL2FrYS5tcy9kZXZwcm94eS9zdGFydCkgdG8gaW5zdGFsbCBhbmQgcnVuIERldiBQcm94eSBmb3IgdGhlIGZpcnN0IHRpbWUuCgpbIVtHZXR0aW5nIHN0YXJ0ZWQgd2l0aCBEZXYgUHJveHldKGh0dHBzOi8vaW1nLnlvdXR1YmUuY29tL3ZpL0hWVEpsR1N4aGN3LzAuanBnKV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1IVlRKbEdTeGhjdykKCiMjIC5ORVQgRm91bmRhdGlvbgoKVGhpcyBwcm9qZWN0IGlzIHN1cHBvcnRlZCBieSB0aGUgWy5ORVQgRm91bmRhdGlvbl0oaHR0cHM6Ly9kb3RuZXRmb3VuZGF0aW9uLm9yZykuCg== readmeEtag: '"664d7cfda4d5585a33b54cb38cfcd6ca0a3b5cbd"' readmeLastModified: Fri, 16 Jan 2026 09:43:21 GMT repositoryId: 534755927 description: Simulate API failures, throttling, and chaos — all from your command line. created: '2022-09-09T18:11:29Z' updated: '2026-02-06T01:54:43Z' language: C# archived: false stars: 763 watchers: 14 forks: 79 owner: dotnet logo: https://avatars.githubusercontent.com/u/9141961?v=4 license: MIT repoEtag: '"d4f0b39da97f42606401eefe07b59c1c84aaf2ac4d949f25e6c16bedad959f03"' repoLastModified: Fri, 06 Feb 2026 01:54:43 GMT foundInMaster: true oldLocations: - https://github.com/microsoft/dev-proxy - source: openapi3 tags repository: https://github.com/vincenzo-racca/spring-boot-openapi v3: true repositoryMetadata: repositoryId: 291784837 description: >- Java project with Spring Boot 2, Swagger 3 with the OpenAPI specification and a self-generated client. created: '2020-08-31T17:48:07Z' updated: '2021-04-10T15:59:33Z' language: Java archived: false stars: 0 watchers: 1 forks: 2 owner: vincenzo-racca logo: https://avatars.githubusercontent.com/u/69170382?v=4 repoEtag: '"2174212c21000ca16011389c751af56ad8f6a3aed37996fdfeca9b8e656e7851"' repoLastModified: Sat, 10 Apr 2021 15:59:33 GMT foundInMaster: true id: 069b27ff6187547339fe168ff01e3981 - source: openapi3 tags repository: https://github.com/agranya99/product-management-system v3: true repositoryMetadata: base64Readme: >- IyBQcm9kdWN0IE1hbmFnZW1lbnQgU3lzdGVtCgpBIHNjYWxhYmxlIFJFU1QgQVBJIGRldmVsb3BlZCBpbiBOb2RlLkpzIHRvIGZhY2lsaXRhdGUgQ1JVRCBhbmQgdXRpbGl0eSBvcGVyYXRpb25zIG9uIHByb2R1Y3RzLCBjYXRlZ29yaWVzLCBwcm92aWRlcnMgKEJ1c2luZXNzIFBhcnRuZXJzKS4KClRoZSBzeXN0ZW0gZGVzaWduIGlzIHN1Y2ggdGhhdCBpdCBzdXBwb3J0cyBhbGwga2luZHMgb2YgUHJvZHVjdHMgKGZyb20gc3RhdGlvbmVyeSBpdGVtcyB0byBvbmxpbmUgTU9PQ3MpLCB3aXRoIHRoZSB1c2Ugb2YgbmVzdGVkIGBhdHRyaWJ1dGVzYCBvYmplY3QgdGhhdCBzdXBwb3J0cyBzZWFyY2hpbmcgdG9vLiBFYWNoIHByb2R1Y3QgY2FuIGhhdmUgaXRzIG93biBhdHRyaWJ1dGVzLiBUaGUgbW9kZWwgcHJvdmlkZXMgZ2VuZXJhbGl6YXRpb24gYW5kIHNwZWNpZmljYXRpb24gYXMgdGhlIGNhdGVnb3JpZXMgc3VwcG9ydCBzdWItY2F0ZWdvcmllcyBhbmQgc28gb24uIAoKQXV0aG9yaXphdGlvbiBpcyBwZXJmb3JtZWQgdmlhICoqT0F1dGggMi4wIChDbGllbnQgQ3JlZGVudGlhbHMgRmxvdykqKiBhbmQgUmVxdWVzdCBWYWxpZGF0aW9uIGlzIHBlcmZvcm1lZCB1c2luZyAqKkhhcGkvSk9JKiouIFRoZSBBUEkgdXNlcyBNb25nb0RCIGFzIGJhY2stZW5kIGRhdGFiYXNlIHdpdGggKipNb25nb29zZSoqIGZyYW1ld29yayBmb3IgZGF0YSBtb2RlbGxpbmcsIHF1ZXJ5aW5nIGFuZCB2YWxpZGF0aW9uLiAKCioqT3BlbkFQSSAzLjAgU3BlY2lmaWNhdGlvbioqIGlzIHdyaXR0ZW4gZm9yIHRoZSBBUEkuIDxodHRwczovL2FwcC5zd2FnZ2VyaHViLmNvbS9hcGlzL2FncmFueWE5OS9Qcm9kdWN0LU1hbmFnZW1lbnQtU3lzdGVtLzEuMC4wPgoKIyMgU29mdHdhcmVzIGFuZCBGcmFtZXdvcmtzCi0gT3BlbkFQSSAzLjAgU3BlY2lmaWNhdGlvbgotIGV4cHJlc3MuanMKLSBPQXV0aCAyLjAgKE9rdGEgQXV0aG9yaXphdGlvbiBTZXJ2ZXIpCi0gSk9JIAotIE1vbmdvb3NlCi0gTW9uZ29EQiBBdGxhcwoKIyMgSG93IHRvIFJ1bgoKIyMjIEluc3RhbGxhdGlvbgoKLSBDbG9uZSB0aGlzIEdpdEh1YiByZXBvIHRvICdkaXInCi0gTmF2aWdhdGUgdG8gJ2RpcicKLSBSdW4gYG5wbSBpbnN0YWxsYCB0byBpbnN0YWxsIHRoZSBkZXBlbmRlbmNpZXMKLSBSdW4gYG5vZGVtb24gLlxzZXJ2ZXIuanNgIG9yIGBub2RlIC5cc2VydmVyLmpzYCB0byBzdGFydCBhIHNlcnZlciBpbnN0YW5jZSBvZiB0aGUgcHJvamVjdAoKIyMjIEF1dGhvcml6YXRpb24KCi0gQ3JlYXRlIGEgUE9TVCBSZXF1ZXN0IHRvIGB7IElTU1VFUiB9L3YxL3Rva2VuYCA9PSA8aHR0cHM6Ly9kZXYtOTQxNTcxLm9rdGEuY29tL29hdXRoMi9hdXM0NnB5bnQwTUlOV0hobTR4Ni92MS90b2tlbj4gIHdpdGgKICAtIFBhc3MgYEJhc2ljYCBBdXRob3JpemF0aW9uIEhlYWRlcjogYHsgY2xpZW50SUQgfWAgYW5kIGB7IGNsaWVudFNlY3JldCB9YCBmcm9tIC5lbnYKICAtIFBhc3MgUGFyYW1ldGVyczogYHNjb3BlYCBmcm9tIC5lbnYgYW5kIGBncmFudF90eXBlID0gY2xpZW50X2NyZWRlbnRpYWxzYAogICFbUG9zdG1hbiBBdXRoIEltYWdlXShodHRwczovL2dpdGh1Yi5jb20vYWdyYW55YTk5L1Byb2R1Y3QtTWFuYWdlbWVudC1TeXN0ZW0vYmxvYi9tYXN0ZXIvc2NyZWVuc2hvdHMvZ2V0QWNjZXNzVG9rZW4ucG5nICJQb3N0bWFuIEV4YW1wbGUiKQogIAotIElmIGNyZWRlbnRpYWxzIGFyZSB2YWxpZCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVjZWl2ZSBiYWNrIGEgcmVzcG9uc2Ugd2l0aCBgQmVhcmVyYCB0b2tlbiAoYXJvdW5kIDgwMCBjaGFyYWN0ZXJzKQogIC0gYGBgCiAgICB7CiAgICAiYWNjZXNzX3Rva2VuIjogImV5SmhiR1suLi5dMUxRIiwKICAgICJ0b2tlbl90eXBlIjogIkJlYXJlciIsCiAgICAiZXhwaXJlc19pbiI6IDg2NDAwLAogICAgInNjb3BlIjogInBtcyIKICAgIH0KICAgIGBgYAogICAgCi0gUGFzcyB0aGlzIGBCZWFyZXJgIHRva2VuIGFzIFJlcXVlc3QgSGVhZGVyIG9mIHlvdXIgcmVxdWVzdHMgdG8gdGhlIFJFU1QgQVBJCiAgCgojIyBGZWF0dXJlcyBhbmQgTml0dHkgR3JpdHRpZXMKCiMjIyBPcGVuQVBJIDMuMCBTcGVjaWZpY2F0aW9uCkRldGFpbGVkIEFQSSBEZXNjcmlwdGlvbiAtIGF2YWlsYWJsZSBlbmRwb2ludHMgYW5kIHBvc3NpYmxlIG9wZXJhdGlvbnMgb24gdGhlIGVuZHBvaW50cyB3aXRoIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGRldGFpbHMuCgpUaGUgc3BlY2lmaWNhdGlvbiBpcyBidWlsdCB1c2luZyByZS11c2FibGUgYHNjaGVtYXNgLCBgcGFyYW1ldGVyc2AsIGByZXF1ZXN0Qm9kaWVzYCBhbmQgYHJlc3BvbnNlc2AgYW5kIGluY2x1ZGVzIGBzZWN1cml0eVNjaGVtZXNgIGZvciBPQXV0aDIuMC4KCkNoZWNrb3V0IDxodHRwczovL2FwcC5zd2FnZ2VyaHViLmNvbS9hcGlzL2FncmFueWE5OS9Qcm9kdWN0LU1hbmFnZW1lbnQtU3lzdGVtLzEuMC4wPiBvciBvcGVuYXBpLXNwZWMueWFtbAoKIyMjIEdlbmVyYWxpemF0aW9uIGFuZCBTcGVjaWZpY2F0aW9uIChzY2FsYWJpbGl0eSEpCgpUaGUgUHJvZHVjdHMgZmVhdHVyZSBgYXR0cmlidXRlc2Agb2JqZWN0IHdoaWNoIGNhbiBjb250YWluIGFueSBudW1iZXIgb2YgYXR0cmlidXRlcyB3aXRoIG11bHRpcGxlIHZhbHVlcwoKTGlrZToKYGBgCmF0dHJpYnV0ZXM6IHsgImNvbG9ycyI6IFsid2hpdGUiLCAiYmxhY2siXSwgInNpemVzIjogWyIxM2luIiwgIjE1aW4iXSAuLi4gfQpgYGAKClRoZSBDYXRlZ29yaWVzIGZlYXR1cmUgYHBhcmVudENhdGVnb3J5SURgIHdoaWNoIGFsbG93cyBicmFuY2hpbmcgb2YgY2F0ZWdvcmllcyBpbnRvIG1vcmUgc3BlY2lmaWMgb25lcywgbGlrZSBwZXJpcGhlcmFscyBpcyBhIHN1Yi1jYXRlZ29yeSBvZiBjb21wdXRlcnMgYWdhaW4gaXMgYSBzdWItY2F0ZWdvcnkgb2YgZWxlY3Ryb25pY3MuCgojIyMgcVRhZ3MgLSBUYWdzIGFzc29jaWF0ZWQgd2l0aCBhIHByb2R1Y3QKCmBxVGFnc2AgaGVscCB3aXRoIHNlYXJjaGluZyBhbmQgZmluZGluZyBzaW1pbGFyIHByb2R1Y3RzLiBUaGVzZSBhcmUgYW4gYXJyYXkgb2Ygc3RyaW5ncyB3aXRoIHRlcm1zIGxvb3NlbHkgYXNzb2NpYXRlZCB3aXRoIGEgcHJvZHVjdC4KCkxpa2U6CmBgYAogICAgewogICAgICAgICJxVGFncyI6IFsibGFwdG9wIiwgImdhbWluZyIsICJzdHVkZW50IiwgImNyZWF0b3IiXSwKICAgICAgICAiaW1hZ2VVUkxzIjogWyJEOi9ibGFkZS9pbWFnZTAwMS5wbmciXSwKICAgICAgICAicHJvdmlkZXJJRCI6IDEsCiAgICAgICAgInN0YXR1cyI6ICJhdmFpbGFibGUiLAogICAgICAgICJza3UiOiAiMTIzYWJjNDUiLAogICAgICAgICJuYW1lIjogIkJsYWRlIFN0ZWFsdGgiLAogICAgICAgICJjYXRlZ29yeUlEIjogMSwKICAgICAgICAiYXR0cmlidXRlcyI6IHsgImNvbG9ycyI6IFsid2hpdGUiLCAiYmxhY2siLCAic2lsdmVyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICJzaXplcyI6IFsiMTNpbiIsICIxNWluIl0gfSwKICAgICAgICAicHJpY2UiOiAxMTU5OTksCiAgICAgICAgImxhdW5jaERhdGUiOiAiMjAyMC0wMy0xNVQwMDowMDowMC4wMDBaIiwKICAgICAgICAic3RvY2siOiAzNTAwCiAgICB9CmBgYAoKIyMjIEZldGNoaW5nLCBTZWFyY2hpbmcgYW5kIFBhZ2luYXRpb24KYGxpbWl0YCBhbmQgYG9mZnNldGAgcGFyYW1ldGVycyBjYW4gYmUgcGFzc2VkIGFzIHF1ZXJ5IHN0cmluZyB0byBzZXQgYSBsaW1pdCBvbiBudW1iZXIgb2YgcmVjb3JkcyB0byBmZXRjaCBhdCBvbmNlIHdoaWxlIGJlaW5nIGFibGUgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgd2hvbGUgc2V0LiBUaGlzIGhlbHBzIHdpdGggKipzY2FsYWJpbGl0eSoqLiAKCkxpa2U6Ci0gYGxvY2FsaG9zdDozMDAwL3Byb2R1Y3RzP29mZnNldD0wJmxpbWl0PTI1YCwKLSBgbG9jYWxob3N0OjMwMDAvY2F0ZWdvcmllcz9vZmZzZXQ9MSZsaW1pdD0xMGAsCi0gYGxvY2FsaG9zdDozMDAwL3Byb3ZpZGVycz9saW1pdD0xMGAKCioqR0VUIC9wcm9kdWN0cyoqCkZldGNoIGEgbGlzdCBvZiBQcm9kdWN0cyB2aWEgKipxdWVyaWVzKioKCkxpa2U6Ci0gYGxvY2FsaG9zdDozMDAwL3Byb2R1Y3RzP25hbWU9QmxhZGUgU3RlYWx0aGAsCi0gYGxvY2FsaG9zdDozMDAwL3Byb2R1Y3RzP3Byb3ZpZGVyPVJhemVyYCwKLSBgbG9jYWxob3N0OjMwMDAvcHJvZHVjdHM/cVRhZ3M9bWFya2VyJmF0dHJpYnV0ZXNbY29sb3JzXT1ibGFja2AKCioqR0VUIC9jYXRlZ29yaWVzKioKRmV0Y2ggTGlzdCBvZiBDYXRlZ29yeSBvYmplY3RzIHVzaW5nICoqcXVlcmllcyoqCgpMaWtlOgotIGBsb2NhbGhvc3Q6MzAwMC9jYXRlZ29yaWVzP25hbWU9UGVyaXBoZXJhbHNgCgoqKkdFVCAvcHJvdmlkZXJzKioKRmV0Y2ggYSBsaXN0IG9mIFByb3ZpZGVycyAoUGFydG5lciBCdXNpbmVzc2VzKSB2aWEgKipxdWVyaWVzKioKCkxpa2U6Ci0gYGxvY2FsaG9zdDozMDAwL3Byb3ZpZGVycz9uYW1lPVJhemVyYAoKfCAhW3NlYXJjaFByb2R1Y3RzQnlxVGFnc0FuZEF0dHJpYnV0ZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9hZ3JhbnlhOTkvUHJvZHVjdC1NYW5hZ2VtZW50LVN5c3RlbS9ibG9iL21hc3Rlci9zY3JlZW5zaG90cy9zZWFyY2hQcm9kdWN0c0J5cVRhZ3NBbmRBdHRyaWJ1dGVzLlBORyAic2VhcmNoUHJvZHVjdHNCeXFUYWdzQW5kQXR0cmlidXRlcyIpIHwgIVtzZWFyY2hDYXRlZ29yaWVzQnlOYW1lXShodHRwczovL2dpdGh1Yi5jb20vYWdyYW55YTk5L1Byb2R1Y3QtTWFuYWdlbWVudC1TeXN0ZW0vYmxvYi9tYXN0ZXIvc2NyZWVuc2hvdHMvc2VhcmNoQ2F0ZWdvcmllc0J5TmFtZS5QTkcgInNlYXJjaENhdGVnb3JpZXNCeU5hbWUiKSB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8ICFbcGFnaW5hdGVQcm9kdWN0c10oaHR0cHM6Ly9naXRodWIuY29tL2FncmFueWE5OS9Qcm9kdWN0LU1hbmFnZW1lbnQtU3lzdGVtL2Jsb2IvbWFzdGVyL3NjcmVlbnNob3RzL3BhZ2luYXRlUHJvZHVjdHMuUE5HICJwYWdpbmF0ZVByb2R1Y3RzIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAhW2dldFNpbWlsYXJQcm9kdWN0c10oaHR0cHM6Ly9naXRodWIuY29tL2FncmFueWE5OS9Qcm9kdWN0LU1hbmFnZW1lbnQtU3lzdGVtL2Jsb2IvbWFzdGVyL3NjcmVlbnNob3RzL2dldFNpbWlsYXJQcm9kdWN0cy5QTkcgImdldFNpbWlsYXJQcm9kdWN0cyIpICAgICAgICAgICAgIHwKCgoKfCBNZXRob2QgfCBFbmRwb2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgR0VUICAgIHwgL3Byb2R1Y3RzL3tza3V9ICAgICAgICAgICAgICAgICAgICAgICAgfCBHZXQgdGhlIGRldGFpbHMgb2YgYSBwcm9kdWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBHRVQgICAgfCAvY2F0ZWdvcmllcy97Y2F0ZWdvcnlJRH0gICAgICAgICAgICAgICB8IEdldCB0aGUgZGV0YWlscyBvZiBhIGNhdGVnb3J5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEdFVCAgICB8IC9jYXRlZ29yaWVzL3tjYXRlZ29yeUlEfS9zdWJDYXRlZ29yaWVzIHwgR2V0IHN1YiBjYXRlZ29yaWVzIG9mIGEgY2F0ZWdvcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgR0VUICAgIHwgL2NhdGVnb3JpZXMve2NhdGVnb3J5SUR9L3Byb2R1Y3RzICAgICAgfCBHZXQgYWxsIHByb2R1Y3RzIGluIGEgY2F0ZWdvcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBHRVQgICAgfCAvcHJvZHVjdHMve3NrdX0vc2ltaWxhciAgICAgICAgICAgIHwgR2V0IHNpbWlsYXIgcHJvZHVjdHMgdG8gYSBwYXJ0aWN1bGFyIHByb2R1Y3QgKEJhc2VkIG9uIFF1ZXJ5IFRhZ3MgLSAgcVRhZ3MgYXR0cmlidXRlKSB8CnwgR0VUICAgIHwgL3Byb3ZpZGVycy97cHJvdmlkZXJJRH0gICAgICAgICAgICAgICAgfCBHZXQgdGhlIGRldGFpbHMgb2YgYSBQcm92aWRlciAoUGFydG5lciBCdXNpbmVzcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCgojIyMgUmVjb3JkcyBNYW5pcHVsYXRpb24KTW9uZ29EQiBkYXRhYmFzZSBpcyB1c2VkIGZvciBzdG9yaW5nIHJlY29yZHMuICoqTW9uZ29vc2UqKiBpcyB1c2VkICB0byBtb2RlbCB0aGUgZGF0YS4gSXQgaW5jbHVkZXMgYnVpbHQtaW4gdHlwZSBjYXN0aW5nLCB2YWxpZGF0aW9uLCBxdWVyeSBidWlsZGluZy4gUmVmZXIgT3BlbkFQSSBTcGVjIGZvciByZXF1ZXN0IGJvZGllcyBhbmQgcGFyYW1ldGVycy4KCioqUmVzcG9uc2VzIGFyZSBjb25zaXN0ZW50KioKClBPU1QKLSBgMjAwYCB3aXRoIHsgYHNrdWAsIGBzdGF0dXNgLCBgbWVzc2FnZWAgfSBmb3Igc3VjY2Vzc2Z1bCBvcGVyYXRpb24KLSBgNDAwYCB3aXRoIHsgYHN0YXR1c2AsIGBtZXNzYWdlYCB9IGZvciBJbnZhbGlkIFJlcXVlc3QgLyBEdXBsaWNhdGUgS2V5IEVycm9yCgpQVVQKLSBgMjAwYCB3aXRoIHVwZGF0ZWQgYHByb2R1Y3RgLCBgY2F0ZWdvcnlgIG9yIGBwcm92aWRlcmAgb2JqZWN0IGZvciBzdWNjZXNzZnVsIG9wZXJhdGlvbgotIGA0MDRgIGZvciBOb3QgRm91bmQgRXJyb3Igb24gdGhlIHJlc291cmNlIHRvIGJlIHVwZGF0ZWQKLSBgNDAwYCB3aXRoIHsgYHN0YXR1c2AsIGBtZXNzYWdlYCB9IGZvciBJbnZhbGlkIFJlcXVlc3QKCkRFTEVURQotIGAyMDBgIHdpdGggeyBgc2t1YCwgYHN0YXR1c2AsIGBtZXNzYWdlYCB9IGZvciBzdWNjZXNzZnVsIG9wZXJhdGlvbgotIGA0MDRgIGZvciBOb3QgRm91bmQgRXJyb3Igb24gdGhlIHJlc291cmNlIHRvIGJlIHVwZGF0ZWQKLSBgNDAwYCB3aXRoIHsgYHN0YXR1c2AsIGBtZXNzYWdlYCB9IGZvciBJbnZhbGlkIFJlcXVlc3QKClZhbGlkYXRpb24gRXJyb3JzCi0gYDQwMGAgcmVzcG9uc2Ugd2l0aCB7IGBzdGF0dXNgLCBgbWVzc2FnZWAgfSBkZXNjcmliaW5nIHdoYXQgY2F1c2VkIHRoZSB2YWxpZGF0aW9uIHRvIGZhaWwKCkludGVybmFsIFNlcnZlciBFcnJvcnMKLSBgNTAwYCByZXNwb25zZSB3aXRoIHsgYHN0YXR1c2AsIGBtZXNzYWdlYCB9LCBubyBkZXNjcmlwdGlvbiBvZiBlcnJvcgoKfCAhW2NyZWF0ZVByb2R1Y3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9hZ3JhbnlhOTkvUHJvZHVjdC1NYW5hZ2VtZW50LVN5c3RlbS9ibG9iL21hc3Rlci9zY3JlZW5zaG90cy9jcmVhdGVQcm9kdWN0LlBORyAiY3JlYXRlUHJvZHVjdCIpIHwgIVtjcmVhdGVDYXRlZ29yeV0oaHR0cHM6Ly9naXRodWIuY29tL2FncmFueWE5OS9Qcm9kdWN0LU1hbmFnZW1lbnQtU3lzdGVtL2Jsb2IvbWFzdGVyL3NjcmVlbnNob3RzL2NyZWF0ZUNhdGVnb3J5LlBORyAiY3JlYXRlQ2F0ZWdvcnkiKSB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAoKCnwgTWV0aG9kIHwgRW5kcG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IFBPU1QgICB8IC9wcm9kdWN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWRkIGEgbmV3IHByb2R1Y3QgdmlhIEpTT04gcmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUFVUICAgIHwgL3Byb2R1Y3RzL3tza3V9ICAgICAgICAgICAgICAgICAgICAgICAgfCBVcGRhdGUgYW4gZXhpc3RpbmcgcHJvZHVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBERUxFVEUgfCAvcHJvZHVjdHMve3NrdX0gICAgICAgICAgICAgICAgICAgICAgICB8IERlbGV0ZSBhbiBleGlzdGluZyBwcm9kdWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFBPU1QgICB8IC9jYXRlZ29yaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWRkIGEgbmV3IGNhdGVnb3J5IHZpYSBKU09OIHJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUFVUICAgIHwgL2NhdGVnb3JpZXMve2NhdGVnb3J5SUR9ICAgICAgICAgICAgICAgfCBVcGRhdGUgYW4gZXhpc3RpbmcgY2F0ZWdvcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBERUxFVEUgfCAvY2F0ZWdvcmllcy97Y2F0ZWdvcnlJRH0gICAgICAgICAgICAgICB8IERlbGV0ZSBhbiBleGlzdGluZyBjYXRlZ29yeSBhbmQgYWxsIGl0cyBzdWJjYXRlZ29yaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFBPU1QgICB8IC9wcm92aWRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWRkIGEgbmV3IFByb3ZpZGVyIChQYXJ0bmVyIEJ1c2luZXNzKSB2aWEgSlNPTiByZXF1ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFBVVCAgICB8IC9wcm92aWRlcnMve3Byb3ZpZGVySUR9ICAgICAgICAgICAgICAgIHwgVXBkYXRlIGFuIGV4aXN0aW5nIFByb3ZpZGVyIChQYXJ0bmVyIEJ1c2luZXNzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgREVMRVRFIHwgL3Byb3ZpZGVycy97cHJvdmlkZXJJRH0gICAgICAgICAgICAgICAgfCBEZWxldGUgYW4gZXhpc3RpbmcgUHJvdmlkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCiMjIyBBdXRob3JpemF0aW9uIAoqKk9BdXRoIDIuMCBDbGllbnQgQ3JlZGVudGlhbHMgR3JhbnQqKiBpcyBpbXBsZW1lbnRlZCB1c2luZyBPa3RhIEF1dGhvcml6YXRpb24gc2VydmVyLiBJdCBoZWxwcyB3aXRoIGdyYW50aW5nIGxpbWl0ZWQgYWNjZXNzIHdpdGhvdXQgdXNlciBjcmVkZW50aWFscywgc2V0IHJhdGUgbGltaXRzLCBldGMuCgpUaGUgY2xpZW50IChkYWVtb24pIG5lZWRzIHRvIGZldGNoIGEgdmFsaWQgYHRva2VuYCBmcm9tIHRoZSBva3RhIGF1dGhvcml6YXRpb24gc2VydmVyIGJ5IHNlbmRpbmcgYSByZXF1ZXN0IHdpdGggYGNsaWVudElEYCwgYGNsaWVudFNlY3JldGAsIGFuZCBgc2NvcGVgLgoKVGhlIHJlY2VpdmVkIHRva2VuICh3aG9zZSB2YWxpZGl0eSBjYW4gYmUgc2V0IGluIHRoZSBhdXRob3JpemF0aW9uIHNlcnZlciwgbWF4ID0gMSBkYXkpIGlzIHRoZW4gcGFzc2VkIGFzIGhlYWRlciAoYGJlYXJlcmApIHRvIHRoZSBBUEkgc2VydmVyIHdpdGggZWFjaCByZXF1ZXN0LgoKIyMjIFJlcXVlc3QgVmFsaWRhdGlvbgoqKkhhcGkvSk9JKiogaXMgdXNlZCB0byBwZXJmb3JtIHNjaGVtYS1iYXNlZCByZXF1ZXN0IHZhbGlkYXRpb24uIEl0IGhlbHBzIGVuZm9yY2Ugc3RhbmRhcmRzIGFuZCBwcmV2ZW50IHVuZXhwZWN0ZWQgZXJyb3JzLgoKQ2hlY2tvdXQ6IDxodHRwczovL2dpdGh1Yi5jb20vYWdyYW55YTk5L1Byb2R1Y3QtTWFuYWdlbWVudC1TeXN0ZW0vdHJlZS9tYXN0ZXIvc2NyZWVuc2hvdHMvZXJyb3JzPgoKCiMjIE1pc2NlbGxhbmVvdXMKCioqR0VUIC8qKgpGZXRjaCBhIGxpc3Qgb2YgYWxsIHZhbGlkIGVuZHBvaW50cwoKYEdFVGAgYFBPU1RgIGBQVVRgIGBERUxFVEVgIC8qIApJbnZhbGlkIFVSTCBoYW5kbGVkLiBMaXN0IG9mIHZhbGlkIGVuZHBvaW50cyByZXR1cm5lZC4K readmeEtag: '"dfbb8d3c1b36efc2371231e499d6d306015222bc"' readmeLastModified: Fri, 20 Mar 2020 17:32:16 GMT repositoryId: 248045592 description: >- A scalable REST API developed in Node.Js to facilitate CRUD and utility operations on products, categories, providers (Business Partners). OpenAPI 3.0 Specification: created: '2020-03-17T18:34:43Z' updated: '2020-03-20T17:32:19Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: agranya99 logo: https://avatars.githubusercontent.com/u/35340618?v=4 repoEtag: '"17ccc307769da15dc16f7aa139be2b147465a5fbc35eca4e1954a8485c0f3ea6"' repoLastModified: Fri, 20 Mar 2020 17:32:19 GMT foundInMaster: true category: Server Implementations id: 95b027c6e559274844c25f5bbc89a71d - source: openapi3 tags repository: https://github.com/mwczapski/swagger_codegen_3_docker_container v3: true repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyX0NvZGVnZW5fMy4wX0RvY2tlcl9Db250YWluZXIKClRoZSBpbnRlbnQgb2YgdGhpcyByZXBvc2l0b3J5IGlzIHRvIGhvc3QgcmVzb3VyY2VzIHRoYXQgcHJvdmlkZSB0aGUgbWVhbnMgdG8gY3JlYXRlIGEgc2VsZi1jb250YWluZWQgRG9ja2VyIGNvbnRhaW5lciBmb3IgQVBJLUZpcnN0IGRldmVsb3BtZW50IHVzaW5nIHRoZSBsYXRlc3QgU3dhZ2dlciBDb2RlZ2VuICgzLngpIGFuZCBPcGVuQVBJICgyIG9yIDMpLgoKVGhlIGZvbGxvd2luZyByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZSBpbiB0aGlzIHJlcG9zaXRvcnk6CgoxLiBbQ3JlYXRlIERvY2tlciBJbWFnZV0oU3dhZ2dlcl9Db2RlZ2VuX0RvY2tlcl9Db250YWluZXJfZm9yX0FQSS1GaXJzdF9EZXZlbG9wbWVudC5tZCkgLSBTdGVwcyB0byBjcmVhdGUgdGhlIHJlYWR5LXRvLWdvIFN3YWdnZXIgQ29kZWdlbiBEb2NrZXIgQ29udGFpbmVyLgoyLiBbVXNlIFN3YWdnZXIgQ29kZWdlbiBEb2NrZXIgQ29udGFpbmVyXShIb3dfVG9fVXNlX1N3YWdnZXJfQ29kZWdlbl9Eb2NrZXJfSW1hZ2UubWQpIC0gQ3JlYXRlIGFuZCB1c2UgdGhlIGNvbnRhaW5lcgozLiBbQ3JlYXRlIFN3YWdnZXIgQ29kZWdlbiBFbnZpcm9ubWVudCBpbiBBbHBpbmUgV1NMXShjcmVhdGVfc3dhZ2dlcl9jb2RlZ2VuX2luX3dzbF9hbHBpbmUubWQpIC0gQ3JlYXRlIFN3YWdnZXIgQ29kZWdlbiBlbnZpcm9ubWVudCBpbiBXaW5kb3dzIFdTTDIgdXNpbmcgQWxwaW5lIExpbnV4IGRpc3RyaWJ1dGlvbgoKVGhlIERvY2tlciBJbWFnZSBjcmVhdGVkIGluICgxKSBhbmQgdXNlZCBpbiAoMikgaXMgYXZhaWxhYmxlIGF0IFttd2N6YXBza2kvc3dhZ2dlci1jb2RlZ2VuOjEuMC4wXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvbXdjemFwc2tpL3N3YWdnZXJfY29kZWdlbikgb24gRG9ja2VyIEh1Yi4K readmeEtag: '"1e40b981af605d7a572789fff5a2c7f516a4215b"' readmeLastModified: Sun, 09 Aug 2020 03:27:08 GMT repositoryId: 278782925 description: >- The intent of this repository is to host resources that provide the means to create a self-contained Docker container for API-First development using the latest Swagger Codegen (3.x) and OpenAPI (2 or 3). created: '2020-07-11T03:50:21Z' updated: '2020-08-09T03:28:59Z' language: Shell archived: false stars: 0 watchers: 1 forks: 0 owner: mwczapski logo: https://avatars.githubusercontent.com/u/57377978?v=4 license: MIT repoEtag: '"4cd815081cae4b87a75044435b001b6d606f0c71e4b1e9d767d449a5d9303f32"' repoLastModified: Sun, 09 Aug 2020 03:28:59 GMT foundInMaster: true category: - Code Generators - Server Implementations id: 353287ebae45b064ba880934bb30c6f9 - source: openapi3 tags repository: https://github.com/zit0un/geojson-oas3 v3: true repositoryMetadata: base64Readme: >- IyBHZW9KU09OLU9BUzMKKkdlb0pTT04gZGVmaW5pdGlvbiB3aXRoIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiB2My4wKgoKVGhpcyBkb2N1bWVudCBkZWZpbmVzIHRoZSBHZW9KU09OIGZvcm1hdCBhcyBhbiBPcGVuQVBJIHYzLgpJdCBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yICdGZWF0dXJlJyBvYmplY3QgYW5kICdGZWF0dXJlQ29sbGVjdGlvbicKb2JqZWN0cywgYXMgd2VsbCBhcyB0aGUgZGVmaW5pdGlvbnMgZm9yIGFsbCAnR2VvbWV0cnknIG9iamVjdHMuCkl0IGNvbmZvcm1zIHdpdGggdGhlICdSRkMtNzk0Nicgc3RhbmRhcmQgZnJvbSBJRVRGIChBdWd1c3QgMjAxNiB2ZXJzaW9uKQo8YnIvPmh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3OTQ2CgpLdWRvcyB0byBAYnViYm9ibmUgYW5kIEBpZGt3IHdob3NlIGNvZGUgaGVscGVkIG1lIG5vdCBzdGFydCBmcm9tIHNjcmF0Y2gKPGJyLz5odHRwczovL2dpc3QuZ2l0aHViLmNvbS9idWJib2JuZS9mZTVmMmRiNjVhY2YwMzliZTZhOWZkOTJmYzljNzIzMwo= readmeEtag: '"0673d964ed14f3c99e3e4e9c2192999e1543205b"' readmeLastModified: Wed, 30 Jun 2021 07:19:40 GMT repositoryId: 327877838 description: OAS3 definitions for GeoJSON created: '2021-01-08T11:00:03Z' updated: '2021-06-30T07:21:11Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: zit0un logo: https://avatars.githubusercontent.com/u/23296627?v=4 license: MIT repoEtag: '"6deb67c9e7d9c41fc8b05f198b29924bc431ddec2da876ad1c0f94bcddfa50bb"' repoLastModified: Wed, 30 Jun 2021 07:21:11 GMT foundInMaster: true category: Parsers id: 97e3320b6415a877c8152e14611b7933 - source: openapi3 tags repository: https://github.com/spider101/imagegram v3: true repositoryMetadata: base64Readme: >- IyBJbWFnZWdyYW0KCiMjIE92ZXJ2aWV3CgpUaGlzIGlzIGEgc2ltcGxlIGFwcGxpY2F0aW9uIGV4cG9zaW5nIGEgUkVTVCBBUEkgdG8gbWFuYWdlIHBvc3RzIG1hZGUgYnkgdXNlcnMgd2hpY2ggaW5jbHVkZSBpbWFnZXMgYW5kIGNvbW1lbnRzLiBUaGUgdXNlcnMgY2FuIGNyZWF0ZSB0aGVpciBvd24gYWNjb3VudCwgY3JlYXRlIG5ldyBwb3N0cyBmcm9tIHRoZWlyIGFjY291bnQgYW5kIGV2ZW4gYWRkIGNvbW1lbnRzIG9uIHZhcmlvdXMgcG9zdHMsIGluY2x1ZGluZyB0aGVpciBvd24uIEVhY2ggcG9zdCBjb25zaXN0cyBvZiBhIGNhcHRpb24gYW5kIGFuIGltYWdlIGFuZCB0aGUgdXNlciBjYW4gYWNjZXNzIGFsbCB0aGUgcG9zdHMgaW4gdGhlIGFwcGxpY2F0aW9uIHZpYSBhIHNpbmdsZSBlbmRwb2ludC4gRmluYWxseSwgdG8gc2FmZWd1YXJkIHRoZSB1c2VyJ3MgcHJpdmFjeSwgdGhleSBhcmUgYWxzbyBnaXZlbiB0aGUgY2FwYWJpbGl0eSBvZiBkZWFjdGl2YXRpbmcgdGhlaXIgYWNjb3VudCB3aGljaCBhbHNvIGRlbGV0ZXMgYWxsIGRhdGEgKHBvc3RzIGFuZCBjb21tZW50cykgYXNzb2NpYXRlZCB3aXRoIHRoZWlyIGFjY291bnQuCgojIyBQcmVyZXF1aXNpdGVzCgpZb3UgbXVzdCBoYXZlIERvY2tlciBpbnN0YWxsZWQgb24geW91ciBjb21wdXRlci4gWW91IGNhbiBmb2xsb3cgdGhlc2UgW2luc3RydWN0aW9uc10oaHR0cHM6Ly93d3cuZG9ja2VyLmNvbS9wcm9kdWN0cy9kb2NrZXItZGVza3RvcCkgdG8gaGF2ZSBpdCBxdWlja2x5IGluc3RhbGxlZC4gWW91IG11c3QgYWxzbyBoYXZlIGEgYC5lbnZgIGNyZWF0ZWQgYXQgdGhlIHJvb3Qgb2YgdGhlIHJlcG9zaXRvcnkuIFlvdSBjYW4gcmVmZXIgdG8gdGhlIGAuZW52YCBbZXhhbXBsZSBmaWxlXSguZW52LmV4YW1wbGUpIGZvciB0aGUgdmFyaWFibGVzIHlvdSBuZWVkIHRvIGluY2x1ZGUuCgojIyBHZXR0aW5nIFN0YXJ0ZWQKCk9uY2UgeW91IGhhdmUgRG9ja2VyIHNldHVwLiBSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kcyBvbiB5b3VyIHRlcm1pbmFsIHRvIHNwaW4gdXAgdGhlIGNvbnRhaW5lcnMgdGhhdCB3aWxsIGNvbXBvc2UgdGhlIGFwcGxpY2F0aW9uLgoKYGBgc2hlbGwKZG9ja2VyLWNvbXBvc2UgYnVpbGQKZG9ja2VyLWNvbXBvc2UgdXAKYGBgCgpUbyB2ZXJpZnkgdGhlIGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmcsIHlvdSBjYW4gaGl0IHRoZSBmb2xsb3dpbmcgZW5kcG9pbnQgdG8gcGVyZm9ybSBhIGBoZWFsdGNoZWNrYDoKCmBgYHNoZWxsCmN1cmwgLS1sb2NhdGlvbiAtLXJlcXVlc3QgR0VUICdsb2NhbGhvc3Q6MzAwMS9oZWFsdGhjaGVjaycKYGBgCgpUaGVyZWFmdGVyLCB5b3UgY2FuIGludGVyYWN0IHdpdGggdGhlIGFwcGxpY2F0aW9uIG9uIHRoZSBmb2xsb3dpbmcgZW5kcG9pbnRzOgoKKiBQT1NUIGAvYWNjb3VudHNgIHRvIGNyZWF0ZSBuZXcgYWNjb3VudHMKKiBERUxFVEUgYC9hY2NvdW50cy86YWNjb3VudElkYCB0byBkZWxldGUgYW4gYWNjb3VudCBhbmQgYWxsIHBvc3QgYW5kIGNvbW1lbnQgZGF0YSBhc3NvY2lhdGVkIHdpdGggaXQKKiBQT1NUIGAvcG9zdHNgIHRvIGNyZWF0ZSBuZXcgcG9zdHMKKiBHRVQgYC9wb3N0c2AgdG8gZmV0Y2ggYWxsIHBvc3RzIGluIHRoZSBhcHBsaWNhdGlvbgoqIFBPU1QgYC9jb21tZW50c2AgdG8gYWRkIG5ldyBjb21tZW50cyBvbiBwb3N0cwoKWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGJ1aWxkIHRoZSByZXNwZWN0aXZlIGNVUkwgY2FsbHMgYnkgZm9sbG93aW5nIHRoZSBPcGVuQVBJIHNwZWMgZm91bmQgW2hlcmVdKHNyYy9hcGkvb3BlbmFwaS55YW1sKQoKVG8gc3RvcCB0aGUgYXBwbGljYXRpb24sIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gc3RvcCB0aGUgcnVubmluZyBjb250YWluZXJzIGFuZCByZW1vdmUgdGhlbS4KCmBgYHNoZWxsCmRvY2tlci1jb21wb3NlIHN0b3AKYGBg readmeEtag: '"85e0652d8eaade5d29b17255f716763f730c6368"' readmeLastModified: Thu, 18 Nov 2021 15:06:54 GMT repositoryId: 412525316 description: >- A simple application exposing a REST API to manage posts made by users which include images and comments. created: '2021-10-01T15:42:06Z' updated: '2021-11-18T15:07:07Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: Spider101 logo: https://avatars.githubusercontent.com/u/6288118?v=4 repoEtag: '"0687da0b7a3cf69d2a8745843617e26e351b6a48df159bf08dcd569483f67d91"' repoLastModified: Thu, 18 Nov 2021 15:07:07 GMT foundInMaster: true category: Server Implementations id: be2ee1b145265eeb87a69c0a430c8acd - source: openapi3 tags repository: https://github.com/alxael/product-api v3: true id: 616741f2748aee446ee398254bb6e602 repositoryMetadata: base64Readme: >- IyBQcm9kdWN0IEFQSQoKVGhpcyBwcm9qZWN0IGlzIGEgUkVTVGZ1bCBBUEkgZGVzaWduZWQgZm9yIHRoZSBtYW5hZ2VtZW50IG9mIGFuIG9ubGluZSBzaG9wLgoKIyMgVGVjaG5vbG9naWVzIHVzZWQKClRoZSBwcm9qZWN0IHVzZXMgdGhlIGZvbGxvd2luZyB0ZWNobm9sb2dpZXMgdG8gd29yazoKCi0gW05vZGVKU10oaHR0cHM6Ly9ub2RlanMub3JnL2VuLykKLSBbRXhwcmVzc10oaHR0cHM6Ly9leHByZXNzanMuY29tLykKLSBbTW9uZ29EQl0oaHR0cHM6Ly93d3cubW9uZ29kYi5jb20vKQotIFtTd2FnZ2VyXShodHRwczovL3N3YWdnZXIuaW8vdG9vbHMvc3dhZ2dlci1jb2RlZ2VuLykKLSBbQXp1cmUgRGV2T3BzXShodHRwczovL2F6dXJlLm1pY3Jvc29mdC5jb20vZW4tdXMvc2VydmljZXMvZGV2b3BzLykKCiMjIEZlYXR1cmVzCgpBdCB0aGUgbW9tZW50LCB0aGUgQVBJIGhhcyBlbmRwb2ludHMgZm9yIHByb2R1Y3RzLCB1c2VycyBhbmQgdXNlciByb2xlcy4gVGhlIEFQSSB1c2VzIEpXVCB0byBzaWduIGNsYWltcyBzZWN1cmVseS4KCk5vZGVKUyBpcyB1c2VkIHRvIHJ1biB0aGUgd2hvbGUgYXBwbGljYXRpb24uIEV4cHJlc3MgaXMgdXNlZCB0byBwcm92aWRlIHNlcnZlci1zaWRlIGxvZ2ljIGZvciB0aGUgd2ViIGFwcGxpY2F0aW9uLiBNb25nb0RCIGlzIHVzZWQgdG8gaGFuZGxlIHRoZSBzdG9yYWdlIGFuZCBtYW5hZ2VtZW50IG9mIHRoZSBkYXRhLiBTd2FnZ2VyIGlzIHVzZWQgdG8gZG9jdW1lbnQgYW5kIGludGVyYWN0IG1hbnVhbGx5IHdpdGggdGhlIEFQSS4gQXp1cmUgRGV2T3BzIGlzIHVzZWQgd2l0aCBhZ2lsZSBtZXRob2RvbG9naWVzIHRvIGVuc3VyZSBhIHNtb290aCBkZXZlbG9wbWVudCBwcm9jZXNzLgoKIyMgSW5zdGFsbGF0aW9uCgojIyMgU3RlcCAxCgpUaGUgQVBJIHJlcXVpcmVzIFtOb2RlSlNdKGh0dHBzOi8vbm9kZWpzLm9yZy9lbi8pIHZlcnNpb24gMTQgb3IgbmV3ZXIgdG8gd29yayBhbmQgW01vbmdvREJdKGh0dHBzOi8vd3d3Lm1vbmdvZGIuY29tLykuIEVuc3VyZSB0aGVzZSB0ZWNob25sb2dpZXMgYXJlIGluc3RhbGxlZC4KCiMjIyBTdGVwIDIKCkNsb25lIHRoZSByZXBvc2l0b3J5LgoKYGBgY29uc29sZQpnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2FseGFlbC9ib2lsZXJwbGF0ZS1iYWNrZW5kLmdpdApgYGAKCiMjIyBTdGVwIDMKCkVudGVyIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIHJlcG9zaXRvcnkgd2FzIGNsb25lZC4gSW5zdGFsbCB0aGUgcGFja2FnZXMgd2l0aCBgYGBucG0gaW5zdGFsbGBgYC4gVGhlbiwgYWRkIGEgYGBgLmVudmBgYCBmaWxlIGJ5IHJ1bm5pbmcgdGhlIGBgYHRvdWNoIC5lbnZgYGAgY29tbWFuZC4gVGhpcyBmaWxlIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOgoKYGBgZG9zaW5pCk5PREVfRU5WPWRldmVsb3BtZW50ClBPUlQ9NDAwMApEQl9MSU5LPW1vbmdvZGI6Ly9sb2NhbGhvc3Q6MjcwMTcvbXlhcHAKVE9LRU5fS0VZPSpyYW5kb20gdGV4dCoKU0lHTlVQX1JPTEU9Y2xpZW50CmBgYAoKIyMjIFN0ZXAgNAoKT3BlbiBhIHRlcm1pbmFsIHdpbmRvdyBhbmQgc3RhcnQgdGhlIE1vbmdvREIgc2VydmVyIGJ5IHJ1bm5pbmcgdGhlIGBgYG1vbmdvZGBgYCBjb21tYW5kLiBJbiBhIHNlcGFyYXRlIHRlcm1pbmFsIHdpbmRvdywgb3BlbiB0aGUgTW9uZ28gQ0xJIGJ5IHJ1bm5pbmcgdGhlIGBgYG1vbmdvYGBgIGNvbW1hbmQuIFRoZW4gcnVuIHRoZSBgYGBzaG93IGRic2BgYCBjb21tYW5kIHRvIHZpZXcgYWxsIGRhdGFiYXNlcy4gTm93LCBydW4gdGhlIGBgYHVzZSBteWFwcGBgYCBjb21tYW5kLgoKIyMjIFN0ZXAgNQoKTm93IHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGBqYXZhc2NyaXB0CmRiLnVzZXJyb2xlcy5pbnNlcnQoCiAgWwogICAge3VzZXJSb2xlOiAiY2xpZW50In0sCiAgICB7dXNlclJvbGU6ICJtb2RlcmF0b3IifSwKICAgIHt1c2VyUm9sZTogImFkbWluaXN0cmF0b3IifQogIF0KKQpgYGAKClRoaXMgd2lsbCBjcmVhdGUgdGhlIHVzZXIgcm9sZXMsIHdoaWNoIHVwb24gcnVubmluZyB0aGUgYGBgZGIudXNlcnJvbGVzLmZpbmQoKS5wcmV0dHkoKWBgYCBjb21tYW5kIHNob3VsZCBsb29rIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZzoKCmBgYGpzb24KeyAKICAgICJfaWQiIDogT2JqZWN0SWQoIjYxNTZiZTA0NTZjMDhlY2NkNjI5YzZmOCIpLAogICAgInVzZXJSb2xlIiA6ICJjbGllbnQiCiAgICB9CnsKICAgICJfaWQiIDogT2JqZWN0SWQoIjYxNTZiZTA0NTZjMDhlY2NkNjI5YzZmOSIpLAogICAgInVzZXJSb2xlIiA6ICJtb2RlcmF0b3IiIAp9CnsKICAgICJfaWQiIDogT2JqZWN0SWQoIjYxNTZiZTA0NTZjMDhlY2NkNjI5YzZmYSIpLAogICAgInVzZXJSb2xlIiA6ICJhZG1pbmlzdHJhdG9yIgp9CmBgYAoKIyMjIFN0ZXAgNgoKTm93LCBpbiB0aGUgYXBwbGljYXRpb24gZmlsZXMsIG1vZGlmeSB0aGUgYGBgU0lHTlVQX1JPTEVgYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYGBgYWRtaW5pc3RyYXRvcmBgYCBvciBgYGBtb2RlcmF0b3JgYGAgYW5kIGNyZWF0ZSBhbiBhY2NvdW50IHdpdGggdGhvc2UgcGVybWlzc2lvbnMuIE1ha2Ugc3VyZSB0byBjaGFuZ2UgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGJhY2sgdG8gYGBgY2xpZW50YGBgIGFmdGVyIGZpbmlzaGluZyB0aGlzIGluaXRpYWwgcHJvY2Vzcy4KCiMjIyBTdGVwIDcKClNpZ24gaW4gaW50byBhbiBhZG1pbmlzdHJhdG9yIGFjY291bnQgdG8gdXNlIHRoZSB3aG9sZSBhcHBsaWNhdGlvbi4gVXNlIHRoZSBgYGBQT1NUIC91c2VyL2xvZ2luYGBgIGVuZHBvaW50IHRvIGxvZyBpbi4gQWZ0ZXIgbG9naW4sIHlvdSB3aWxsIGJlIGdyYW50ZWQgYSBKV1QgdG9rZW4uIENvcHkgc2FpZCB0b2tlbiBpbnRvIHRoZSB3aW5kb3cgdGhhdCBwb3BzIHVwIHdoZW4geW91IHByZXNzIHRoZSBgYGBBdXRob3JpemVgYGAgYnV0dG9uLCBpbiB0aGUgcmlnaHQgaGFuZCBzaWRlLiBLZWVwIHRoaXMgdG9rZW4gc2F2ZWQgc29tZXdoZXJlIGFuZCB1cGRhdGUgaXQgZXZlcnkgdGltZSB5b3UgbG9nIGluLCBhcyB5b3Ugd2lsbCBuZWVkIGl0IHRvIHVzZSBtb3N0IG9mIHRoZSBlbmRwb2ludHMgb2YgdGhlIEFQSS4KCkNvbmdyYXR1bGF0aW9ucyEgWW91IGFyZSBub3cgYWxsIHNldCB1cCB0byB1c2UgdGhlIEFQSS4KCiMjIExpY2Vuc2UKClRoZSBwcm9qZWN0IGlzIGN1cnJlbnRseSB1c2luZyB0aGUgW01JVF0oaHR0cHM6Ly9jaG9vc2VhbGljZW5zZS5jb20vbGljZW5zZXMvbWl0LykgbGljZW5zZS4K readmeEtag: '"e47e3ec3de120c4d12352f90ccdce8d57898f5b3"' readmeLastModified: Sun, 15 Oct 2023 14:15:50 GMT repositoryId: 410784269 description: Product management API. created: '2021-09-27T07:28:57Z' updated: '2023-10-15T14:17:20Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: alxael logo: https://avatars.githubusercontent.com/u/78294861?v=4 license: MIT repoEtag: '"16feb3fe9ca93cde2188cd2bc96adc76c9412ad0c6db529a08a4d1e9c248e531"' repoLastModified: Sun, 15 Oct 2023 14:17:20 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/cant-code/parking-app-backend v3: true repositoryMetadata: base64Readme: >- IyBHZXR0aW5nIFN0YXJ0ZWQKCiMjIyBSZXF1aXJlbWVudHMKKiBKYXZhIDExIChNaW4gdmVyc2lvbiA4LCBjaGFuZ2UgdGhlIEphdmEgdmVyc2lvbiBpbiB0aGUgcG9tLnhtbCBmaWxlIGFjY29yZGluZ2x5KQoqIFJlbGF0aW9uYWwgREIgLSBQb3N0Z3JlU1FMCiogSUFNIC0gS2V5Y2xvYWsKCiMjIyBFbnZpcm9ubWVudCBWYXJpYWJsZXMKUmVxdWlyZWQgRW52aXJvbm1lbnQgVmFyaWFibGVzOgoKKiBEQl9BRERSIC0gUHJvdmlkZSB0aGUgY29tcGxldGUgSkRCQyBVUkkgZm9yIHRoZSBEQi4KKiBLRVlDTE9BS19TRVJWRVIgLSBUaGUgVVJJIHRvIHRoZSBhdXRoIGVuZHBvaW50IG9mIHRoZSBLZXljbG9hayBTZXJ2ZXIuCiogS0VZQ0xPQUtfU0VDUkVUIC0gVGhlIGtleWNsb2FrIGNsaWVudCBTZWNyZXQKCk9wdGlvbmFsIEVudmlyb25tZW50IFZhcmlhYmxlczoKCiogREJfVVNFUiAtIERCIHVzZXIgdXNlcm5hbWUuIChEZWZhdWx0IC0gcG9zdGdyZXMpCiogREJfUEFTUyAtIERCIHVzZXIgcGFzc3dvcmQuIChEZWZhdWx0IC0gbXlzZWNyZXRwYXNzd29yZCkKKiBLRVlDTE9BS19SRUFMTSAtIFRoZSBrZXljbG9hayByZWFsbSBmb3IgdGhlIGFwcGxpY2F0aW9uLiAoRGVmYXVsdCAtIGVjb21tZXJjZSkKKiBLRVlDTE9BS19SRVNPVVJDRSAtIFRoZSBjbGllbnQgY3JlYXRlZCBmb3IgdGhlIGFwcGxpY2F0aW9uLiAoRGVmYXVsdCAtIGxvZ2luLWFwcCkKCiMjIyBTdGVwcyB0byBydW4KMS4gQ2xvbmUgdGhlIHJlcG8gb3IgZG93bmxvYWQgdGhlIHNvdXJjZQoyLiBVc2UgYG12biBzcHJpbmctYm9vdDpydW5gCiAgICBvcgogICBgbXZudyBzcHJpbmctYm9vdDpydW5gCiAgICBmcm9tIHRoZSBiYXNlIGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdCB0byBydW4gdGhlIHByb2plY3QKICAgCiMjIyBTdGVwcyB0byBkZXBsb3kKVXNpbmcgRG9ja2VyOgoxLiBCdWlsZCB0aGUgcHJvamVjdCB1c2luZyBgbXZuIHBhY2thZ2VgIG9yIGBtdm53IHBhY2thZ2VgCjIuIEJ1aWxkIGEgZG9ja2VyIGltYWdlIHVzaW5nOgpgYGAKZG9ja2VyIGJ1aWxkIC10IDxpbWFnZS1uYW1lPjo8dGFnPiAuCmBgYAozLiBSdW4gdGhlIGltYWdlIHVzaW5nOgpgYGAKZG9ja2VyIHJ1biAtcCA4MDgwOjgwODAgLWUgREJfQUREUj08dmFsdWU+IC1lIEtFWUNMT0FLX1NFUlZFUj08dmFsdWU+IC1lIEtFWUNMT0FLX1NFQ1JFVD08dmFsdWU+IC1kIDxpbWFnZS1uYW1lPjo8dGFnPgpgYGAKCkRlcGxveSBqYXIgZmlsZToKMS4gQnVpbGQgdGhlIHByb2plY3QgdXNpbmcgYG12biBwYWNrYWdlYCBvciBgbXZudyBwYWNrYWdlYAoyLiBDb3B5IHRoZSAuamFyIGdlbmVyYXRlZCBmcm9tIHRoZSAvdGFyZ2V0IGZvbGRlciB0byB5b3VyIGRlc2lyZWQgbG9jYXRpb24uCjMuIFJ1biB0aGUgcHJvZ3JhbSB1c2luZyBgamF2YSAtamFyIDxmaWxlbmFtZT4uamFyYAo= readmeEtag: '"cdb4f5ffd4c34ad4e91b0c85c4cd6dc772b28878"' readmeLastModified: Sat, 26 Aug 2023 12:41:27 GMT repositoryId: 449337717 description: null created: '2022-01-18T15:22:52Z' updated: '2022-01-23T11:37:25Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: cant-code logo: https://avatars.githubusercontent.com/u/38918278?v=4 repoEtag: '"70545c3df3e92e22dfb9a6c3d77521ad7c357e6adcadeb32dea8af424b3a3508"' repoLastModified: Sun, 23 Jan 2022 11:37:25 GMT foundInMaster: true category: Server Implementations id: 4dae94b5dd42661aa1c4c79ef6282ff0 - source: openapi3 tags repository: >- https://github.com/marinimau/public_administration_blockchain_certified_document_sharing v3: true repositoryMetadata: base64Readme: >- WyFbTGljZW5zZTogQ0MwLTEuMF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUNDMCUyMDEuMC1saWdodGdyZXkuc3ZnKV0oaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLykKCiMgUHVibGljIEFkbWluaXN0cmF0aW9uIEJsb2NrY2hhaW4gQ2VydGlmaWVkIERvY3VtZW50IFNoYXJpbmcKCkEgZEFwcCB0byBkaXN0cmlidXRlIGJsb2NrY2hhaW4gY2VydGlmaWVkIGRvY3VtZW50cyBmcm9tIFBBcyB0byBjaXRpemVucy4gQWxsIHRoZSBmZWF0dXJlcyBhcmUgYWNjZXNzaWJsZSB2aWEgUkVTVCBhcGkuCgpDaXRpemVuIHJlbGF0ZWQgZmVhdHVyZXMgYXJlIGFjY2Vzc2libGUgYWxzbyB2aWEgZnJvbnRlbmQuCgojIyBHZXR0aW5nIFN0YXJ0ZWQKCmBgYGJhc2gKJCBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL21hcmluaW1hdS9wdWJsaWNfYWRtaW5pc3RyYXRpb25fYmxvY2tjaGFpbl9jZXJ0aWZpZWRfZG9jdW1lbnRfc2hhcmluZy5naXQKJCBjZCBwdWJsaWNfYWRtaW5pc3RyYXRpb25fYmxvY2tjaGFpbl9jZXJ0aWZpZWRfZG9jdW1lbnRfc2hhcmluZwokIHB5dGhvbjMgLW0gdmVudiB2ZW52CiQgc291cmNlIHZlbnYvYmluL2FjdGl2YXRlCiQgcGlwMyBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKJCBweXRob24zIG1hbmFnZS5weSBtYWtlbWlncmF0aW9ucyB1c2VyCiQgcHl0aG9uMyBtYW5hZ2UucHkgbWFrZW1pZ3JhdGlvbnMgZG9jdW1lbnQKJCBweXRob24zIG1hbmFnZS5weSBtYWtlbWlncmF0aW9ucyB0cmFuc2FjdGlvbgokIHB5dGhvbjMgbWFuYWdlLnB5IG1pZ3JhdGUKJCBweXRob24zIG1hbmFnZS5weSBydW5zZXJ2ZXIKYGBgCgpOb3RlIHRoYXQgeW91IHdpbGwgbmVlZCB0byBjcmVhdGUgYSBzdXBlciB1c2VyICh1c2luZyAiY3JlYXRlc3VwZXJ1c2VyIiBjb21tYW5kKSBhbmQgdGhlbiB5b3Ugd2lsbCBuZWVkIHRvIGNyZWF0ZSBQQSwgb3BlcmF0b3IsIGFuZCBjaXRpemVuIHVzaW5nIHRoZSBhZG1pbiBpbnRlcmZhY2UgIGF0IGBgYGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9hZG1pbi9gYGAuCgpJTVBPUlRBTlQ6IHVzZSB2YWxpZCBFdGhlcnVtIGNyZWRlbnRpYWwgZm9yIHRoZSBvcGVyYXRvciwgYW5kIGVuc3VyZSB0aGF0IGhlIGFzIHNvbWUgRXRoZXIgaW4gaGlzIGJhbGFuY2UgKGRlZmF1bHQgdGVzdG5ldCBpcyBSaW5rZWJ5LCB5b3UgY2FuIGNoYW5nZSBpdCBpbiBzZXR0aW5ncykKCiMjIFRlc3QgdGhlIHByb2plY3QKCmBgYGJhc2gKJCBweXRob24zIG1hbmFnZS5weSB0ZXN0CmBgYAoKCiMjIEZlYXR1cmVzCgoqIENpdGl6ZW5zIGFuZCBQQSBvcGVyYXRvcnMgbWFuYWdlbWVudAoqIERvY3VtZW50IGNyZWF0aW9uIGFuZCB1cGRhdGUgKGJ5IHZlcnNpb24gY3JlYXRpb24pCiogUHVibGljIGFuZCBwcml2YXRlIGRvY3VtZW50czogaWYgYSBkb2N1bWVudCBpcyBwcml2YXRlIGNpdGl6ZW4gbXVzdCBoYXZlIHJlYWQgcGVybWlzc2lvbgoqIERvY3VtZW50IHZlcnNpb24gaW5oZXJpdHMgcGVybWlzc2lvbnMgZnJvbSBkb2N1bWVudAoqIFBhIG1hbmFnZW1lbnQ6IGFuIG9wZXJhdG9yIGNhbiB1cGRhdGUgKGNyZWF0ZSB2ZXJzaW9ucykgb25seSBmb3IgZG9jdW1lbnRzIG93bmVkIGJ5IGhpcyBQQSwgYW4gb3BlcmF0b3IgY2FuIHZpZXcgb25seSBwdWJsaWMgZG9jdW1lbnRzIG9yIHByaXZhdGUgZG9jdW1lbnRzIChpZiB0aGV5IGFyZSBvd25lZCBieSBoaXMgUEEpCiogQXV0b21hdGljIGRvY3VtZW50IFNDIGFuZCBkb2N1bWVudCB2ZXJzaW9uICh0cmFuc2FjdGlvbiBpbiB0aGUgZG9jdW1lbnQgU0MpIGRlcGxveQoqIEF1dG9tYXRpYyBmaW5nZXJwcmludCB2YWxpZGF0aW9uIGluIGRvd25sb2FkIHBoYXNlLgoqIFNDIG9wZXJhdG9yIGF1dGhlbnRpY2F0aW9uIGJhc2VkIG9uIHdoaXRlbGlzdAoqIENpdGl6ZW4gY2FuIGFkZCB0byBmYXZvcml0ZXMgZG9jdW1lbnRzCgoKIyMgT3BlbkFwaSBkb2N1bWVudGF0aW9uCgpUaGUgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgYXQgYGBgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2RvY3VtZW50YXRpb24vYGBgLgoKTm90ZSB0aGF0IG9ubHkgZW5kcG9pbnRzIGFjY2Vzc2libGUgd2l0aCBjdXJyZW50IGF1dGhvcml6YXRpb24gYXJlIHNob3duOgoqIGlmIHlvdSBhcmUgdW5hdXRob3JpemVkIHlvdSBzZWUgb25seSBwdWJsaWMgZW5kcG9pbnRzCiogaWYgeW91IGFyZSBhdXRob3JpemVkIGFzIGNpdGl6ZW4geW91IHNlZSBwdWJsaWMgKyBjaXRpemVuIGVuZHBvaW50cwoqIGlmIHlvdSBhcmUgYXV0aG9yaXplZCBhcyBwYSBvcGVyYXRvciB5b3Ugc2VlIHB1YmxpYyArIG9wZXJhdG9yIGVuZHBvaW50cwoKIyMgQXV0aG9yCgoqIFtNYXVybyBNYXJpbmldKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJpbmltYXUpCg== readmeEtag: '"1dee51232b6b7eb25a1c85828f2a0e9f91f1b25e"' readmeLastModified: Tue, 03 Aug 2021 15:08:03 GMT repositoryId: 378353674 description: >- A dApp to distribute blockchain certified documents from PAs to citizens. All the features are accessible via REST api. created: '2021-06-19T07:39:48Z' updated: '2021-08-03T15:08:07Z' language: HTML archived: false stars: 0 watchers: 1 forks: 0 owner: marinimau logo: https://avatars.githubusercontent.com/u/37106877?v=4 license: NOASSERTION repoEtag: '"1178f4453d5a864f9081d58492598046834d74adcf5f085b7a4cf208a395eb4c"' repoLastModified: Tue, 03 Aug 2021 15:08:07 GMT foundInMaster: true category: - Parsers - Server Implementations id: e4e2b5afe9011c1dd92de5fc3f9843ac - source: openapi3 tags repository: https://github.com/phuntime/aws-lambda-openapi v3: true repositoryMetadata: base64Readme: >- IyBhd3MtbGFtYmRhLW9wZW5hcGkKQWxsIEFXUyBMYW1iZGEgT3BlbkFQSSBmaWxlcyBjb21iaW5lZC4gCgoKU3dhZ2dlciBVSTogaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pby8/dXJsPWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9waHVudGltZS9hd3MtbGFtYmRhLW9wZW5hcGkvbWFpbi9vcGVuYXBpLnlhbWwKCiMjIFNvdXJjZXM6Ci0gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvcnVudGltZXMtYXBpLmh0bWwKLSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy9ydW50aW1lcy1leHRlbnNpb25zLWFwaS5odG1sCi0gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvcnVudGltZXMtbG9ncy1hcGkuaHRtbAoKIyMgTGljZW5zZQoKaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzQuMC8K readmeEtag: '"35248c14072202ae8e76ba1d2343156afb65d01e"' readmeLastModified: Mon, 09 Aug 2021 22:54:08 GMT repositoryId: 394451824 description: All AWS Lambda OpenAPI files combined created: '2021-08-09T22:06:34Z' updated: '2021-08-09T22:54:11Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: phuntime logo: https://avatars.githubusercontent.com/u/66830795?v=4 repoEtag: '"855f6a34d843270493c9bf33b84f75077dd106e7384f20f90d3ae4d8aa372879"' repoLastModified: Mon, 09 Aug 2021 22:54:11 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: 93e78feb1ebe295e4ee84b1f0a83d009 - source: openapi3 tags repository: https://github.com/rosario-fiorella/vuejs-calendar v3: true repositoryMetadata: base64Readme: >- IyB2dWVqcy1jYWxlbmRhcgoKIyMgUHJvamVjdCBzZXR1cApgYGAKbnBtIGluc3RhbGwKYGBgCnVzZSBub2RlanMgdmVyc2lvbiAxNiBMVFMKCiMjIyBDb21waWxlcyBhbmQgaG90LXJlbG9hZHMgZm9yIGRldmVsb3BtZW50CmBgYApucG0gcnVuIHNlcnZlCmBgYAoKIyMjIENvbXBpbGVzIGFuZCBtaW5pZmllcyBmb3IgcHJvZHVjdGlvbgpgYGAKbnBtIHJ1biBidWlsZApgYGAKCiMjIyBMaW50cyBhbmQgZml4ZXMgZmlsZXMKYGBgCm5wbSBydW4gbGludApgYGAKCiMjIyBDdXN0b21pemUgY29uZmlndXJhdGlvbgpTZWUgW0NvbmZpZ3VyYXRpb24gUmVmZXJlbmNlXShodHRwczovL2NsaS52dWVqcy5vcmcvY29uZmlnLykuCgojIyBBUEkgU2VydmljZXMKIyMjIE1vY2sgQVBJIHJlcXVlc3QvcmVzcG9uc2UgbW9kZWwKVGhlIGRlZmF1bHQgc2V0dGluZ3MgdXNlIGEgc2ltdWxhdGVkIGFwaSByZXNwb25zZSB0ZW1wbGF0ZSwgaWYgeW91IHdhbnQgdG8gdXNlIGEgcmVhbCBBUEkgcmVxdWVzdC9yZXNwb25zZSB5b3UgbmVlZCB0byBlZGl0IHRoZSAiLmVudiIgZmlsZSBhbmQgZW50ZXIgdGhlIGFwaSBVUkwgd2hpY2ggaW1wbGVtZW50cyB0aGUgZGF0YSBtb2RlbCBzdWdnZXN0ZWQgYnkgdGhlIGZpbGUgW29wZWFuYXBpM10oZG9jL29wZW5hcGkuMy4wLjIueW1sKS4gCj4gVGhpcyBwcm9qZWN0IGRvZXMgbm90IGltcGxlbWVudCBzZXJ2ZXIgc2lkZSBiYWNrZW5kIGFwaSBzZXJ2aWNlcyAKCiMjIyBFbnZpcm9ubWVudApWVUVfQVBQX05PREVfRU5WOiBzZWUgInNyYy9jb21tb24vZW51bS5qcyIsIHVzZSAiZGVtbyIgdG8gdXNlIG1vY2sgYXBpCgpWVUVfQVBQX1RJVExFPWBgYHN0cmluZ2BgYAoKVlVFX0FQUF9BUElfQkFTRV9VUkw9YGBgdXJsYGBgIChleGFtcGxlOiBodHRwOi8vbG9jYWxob3N0L2FwaS8pCgpWVUVfQVBQX0FQSV9CT09LSU5HPWBgYHN0cmluZ2BgYCAoZXhhbXBsZTogYm9va2luZykKClZVRV9BUFBfQVBJX0NPTlRFTlRTPWBgYHN0cmluZ2BgYCAoZXhhbXBsZTogY29udGVudHMpCgpWVUVfQVBQX0FQSV9EQVRBPWBgYHN0cmluZ2BgYCAoZXhhbXBsZTogYXBwKQoKVlVFX0FQUF9BUElfRU5USVRJRVM9YGBgc3RyaW5nYGBgIChleGFtcGxlOiBlbnRpdGllcykKClZVRV9BUFBfTElOS19QUklWQUNZX1RFUk09YGBgdXJsYGBgCgpWVUVfQVBQX0xJTktfUFJJVkFDWV9DT05ESVRJT049YGBgdXJsYGBgCgpWVUVfQVBQX0xJTktfUFJJVkFDWV9QT0xJQ1k9YGBgdXJsYGBgCgpWVUVfQVBQX0FQSV9QRVJfUEFHRT1gYGBudW1iZXJgYGAKClZVRV9BUFBfQVBJX0tFWT1gYGBzdHJpbmdgYGAKCiMjIEljb25zClttZGldKGh0dHBzOi8vcGljdG9ncmFtbWVycy5naXRodWIuaW8vQG1kaS9mb250LzUuNC41NS8pCgpbbWF0ZXJpYWwtZGVzaWduLWljb25zLWljb25mb250XShodHRwczovL2pvc3NlZi5naXRodWIuaW8vbWF0ZXJpYWwtZGVzaWduLWljb25zLWljb25mb250LykKCiMjIFBvc3QgYnVpbGQKW2NsaS52dWVqcy5vcmddKGh0dHBzOi8vY2xpLnZ1ZWpzLm9yZy9ndWlkZS9kZXBsb3ltZW50Lmh0bWwpCgojIyBDSEFOR0UgVEhFTUUgQ09MT1IKRWRpdCBmaWxlIFtjb2xvcnNdKHNyYy9jb21tb24vY29sb3JzLmpzKQoKIyMgREVNTyBURU1QTEFURQohWzEtaG9tZS1kaWFsb2ddKGRvYy9kZW1vLzEtaG9tZS1kaWFsb2cucG5nKQohWzItaG9tZV0oZG9jL2RlbW8vMi1ob21lLnBuZykKIVszLWhvbWUtc2VsZWN0ZWRdKGRvYy9kZW1vLzMtaG9tZS1zZWxlY3RlZC5wbmcpCiFbNC1ob21lLWJvb2tpbmddKGRvYy9kZW1vLzQtaG9tZS1ib29raW5nLnBuZykK readmeEtag: '"e7fb76e1fb46db26b1b7d0e85bf979a501e2742b"' readmeLastModified: Wed, 09 Aug 2023 11:03:08 GMT repositoryId: 400177668 description: >- Front-end booking system template built with VueJs and VuetifyJs - Single Page Application (SPA), dummy data used to simulate API response. created: '2021-08-26T13:24:32Z' updated: '2025-11-07T05:29:02Z' language: Vue archived: false stars: 0 watchers: 1 forks: 1 owner: rosario-fiorella logo: https://avatars.githubusercontent.com/u/41728059?v=4 license: MIT repoEtag: '"1a5d2cc889676b6abe8a18cdcc6723e8080d186f1bdf8fd72d24e64f92a2d546"' repoLastModified: Fri, 07 Nov 2025 05:29:02 GMT foundInMaster: true category: Testing id: e5071ac76f7c1501aeddbdd50c3cc6d1 oldLocations: - https://github.com/rosario-fiorella/calendar-fe - source: openapi3 tags repository: https://github.com/devalurum/messenger-system v3: true id: eddf19a5eabf7da6555b7ecd8143127d repositoryMetadata: base64Readme: >- IyBNZXNzZW5nZXIgUkVTVGZ1bCBBUEkKCtCh0LXRgNCy0LXRgNC90LDRjyDRh9Cw0YHRgtGMINC00LjQv9C70L7QvNC90L7QuSDRgNCw0LHQvtGC0Ysg0L/QviDRgtC10LzQtSAKItCg0LDQt9GA0LDQsdC+0YLQutCwINGB0L/RgNCw0LLQvtGH0L3Qvi3QutC+0LzQvNGD0L3QuNC60LDRhtC40L7QvdC90L7QuSDRgdC40YHRgtC10LzRiyDQtNC70Y8g0L/QsNGG0LjQtdC90YLQvtCyINGB0YLQsNGG0LjQvtC90LDRgNCwLiIKCiMjIyDQodGC0Y3QuiDRgtC10YXQvdC+0LvQvtCz0LjQuQotIEphdmEgMTEKLSBTcHJpbmcgQm9vdAotIFNwcmluZyBTZWN1cml0eSAoSldUKQotIFNwcmluZyBEYXRhIEpQQQotIFNwcmluZyBXZWIKLSBTd2FnZ2VyIChPcGVuQVBJIDMuMCkKLSBQb3N0Z3Jlc3FsICgrUG9zdEdpcykKLSBEb2NrZXIKLSBNYXBTdHJ1Y3QKLSBMb21ib2sKLSBHcmFkbGUKCjwhLS0KIyMg0KHQsdC+0YDQutCwINC/0YDQuNC70L7QttC10L3QuNGPCmBgYHNoZWxsIHNjcmlwdAojINCh0LrQu9C+0L3QuNGA0L7QstCw0YLRjCDQv9GA0L7QtdC60YIg0Log0YHQtdCx0LUKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9kZXZhbHVydW0vbWVzc2VuZ2VyLXN5c3RlbS5naXQKCiMg0L/QvtC00L3Rj9GC0Ywg0LrQvtC90YLQtdC50L3QtdGAIGMgUG9zdGdyZXNxbCgrUG9zdGdpcykg0LggUGdBZG1pbiAKZG9ja2VyLWNvbXBvc2UgdXAgLWQKCiMg0LfQsNCz0YDRg9C20LDQtdGCIGdyYWRsZSB3cmFwcGVyCmdyYWRsZXcgd3JhcHBlcgoKIyDRgdCx0L7RgNC60LAg0L/RgNC+0LXQutGC0LAKZ3JhZGxldyBjbGVhbiBidWlsZCAKCiMg0LfQsNC/0YPRgdC6IFNwcmluZyDRgdC10YDQstC40YHQsApqYXZhIC1qYXIgYnVpbGQvbGlicy9tZXNzZW5nZXItc3lzdGVtLmphciAKYGBgCi0tPgojIyBEZXBsb3ltZW50CtCf0YDQuNC70L7QttC10L3QuNC1INC30LDQtNC10L/Qu9C+0LXQvdC+INC90LAgW2hlcm9rdV0oaHR0cHM6Ly9tZXNzZW5nZXItcmVzdGZ1bC5oZXJva3VhcHAuY29tL21lc3Nlbmdlci1zeXN0ZW0vc3dhZ2dlci11aS9pbmRleC5odG1sCikg0L/QviDQsNC00YDQtdGB0YM6CgpodHRwczovL21lc3Nlbmdlci1yZXN0ZnVsLmhlcm9rdWFwcC5jb20vbWVzc2VuZ2VyLXN5c3RlbS9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwKIyMg0KHQsdC+0YDQutCwINC/0YDQuNC70L7QttC10L3QuNGPCmBgYHNoZWxsIHNjcmlwdAojINCh0LrQu9C+0L3QuNGA0L7QstCw0YLRjCDQv9GA0L7QtdC60YIsINC70LjQsdC+INC/0YDQvtGB0YLQviDRgdC60LDRh9Cw0YLRjCDRhNCw0LnQuyAiZG9ja2VyLWNvbXBvc2UueW1sIgpnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2RldmFsdXJ1bS9tZXNzZW5nZXItc3lzdGVtLmdpdAoKIyDQv9C+0LTQvdGP0YLRjCDQutC+0L3RgtC10LnQvdC10YDRiyBjIFBvc3RncmVTUUwoK1Bvc3RnaXMpINC4IFNwcmluZyBCb290IApkb2NrZXItY29tcG9zZSB1cCAtZApgYGAK0J7RgtC60YDRi9GC0Ywg0LIg0LHRgNCw0YPQt9C10YDQtSBTd2FnZ2VyOiBodHRwOi8vbG9jYWxob3N0OjgwODAvbWVzc2FuZ2VyLXN5c3RlbS9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwKCiMjIE9wZW5BUEkg0L7Qv9C40YHQsNC90LjQtQoxLiDQntGC0LrRgNC+0LnRgtC1INCw0LTRgNC10YEg0LIg0LHRgNCw0YPQt9C10YDQtSBodHRwOi8vbG9jYWxob3N0OjgwODAvbWVzc2FuZ2VyLXN5c3RlbS9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwKMi4g0JLRi9C/0L7Qu9C90LjRgtC1INGA0LXQs9C40YHRgtGA0LDRhtC40Y4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9tZXNzZW5nZXItc3lzdGVtL3N3YWdnZXItdWkvaW5kZXguaHRtbCMvQXV0aGVudGljYXRpb24vcmVnaXN0ZXIKMy4g0KHQutC+0L/QuNGA0YPQudGC0LUg0YLQvtC60LXQvSDQuCDQsNCy0YLQvtGA0LjQt9C40YDRg9C10YLQtdGB0Ywg0LIgU3dhZ2dlciBVSS4g0J/QvtGB0LvQtSDRh9C10LPQviAqKnRva2VuKiog0LHRg9C00LXRgiDQstGB0YLQsNCy0LvQtdC9INCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4INCyINC30LDQv9GA0L7RgdGLLgo0LiBwZ0FkbWluIChHVUkg0LTQu9GPIHBvc3RncmVzcWwpIGh0dHA6Ly9sb2NhbGhvc3Q6NTA1MAogICAxLiBsb2dpbjogYWRtaW5AYWRtaW4uY29tCiAgIDIuIHBhc3N3b3JkOiBhZG1pbgogICAgICAxLiBob3N0OiBob3N0LmRvY2tlci5pbnRlcm5hbCAo0YDQtdCz0LjRgdGC0YDQsNGG0LjRjyDQsdCw0LfRiyDQtNCw0L3QvdGL0YUpCiog0J/QvtC70Y8gdGltZSwgaWQsIHNlbmRlciDQv9GA0LggcG9zdC9wYXRjaCDQt9Cw0L/RgNC+0YHQsNGFINC6INGB0YPRidC90L7RgdGC0Y/QvCDQuNCz0L3QvtGA0LjRgNGD0Y7RgtGB0Y8sINGCLtC6INCz0LXQvdC10YDQuNGA0YPRjtGC0YHRjyDQvdCwINGB0YLQvtGA0L7QvdC1INGB0LXRgNCy0LXRgNCwLgoqINCk0L7RgNC80LDRgiDQstGA0LXQvNC10L3QuCDQsiBPcGVuQVBJINCz0LXQvdC10YDQuNGA0YPRjtGC0YHRjyDQvdC10L/RgNCw0LLQuNC70YzQvdC+ICjQv9C+0LrQsCDQvdC1INC/0L7QvdGP0YLQvdC+INC60LDQuiDQv9C+0LzQtdC90Y/RgtGMINC/0LDRgtGC0LXRgNC9KSwg0L/QvtGN0YLQvtC80YMg0L/QvtC70Y8gdGltZSDQu9GD0YfRiNC1INGD0LTQsNC70Y/RgtGMINC/0YDQuCDQvtGC0L/RgNCw0LLQutC1INC30LDQv9GA0L7RgdC+0LIuCiMjIyBUb2RvOgotINCg0LDQt9C+0LHRgNCw0YLRjNGB0Y8sINC/0L7Rh9C10LzRgyDQvdC1INGA0LDQsdC+0YLQsNC10YIg0LDQvdC90L7RgtCw0YbQuNGPIFJvbGVzQWxsb3dlZCDQsiDQutC+0L3RgtGA0L7Qu9C70LXRgNCw0YUuCi0g0J3QsNC/0LjRgdCw0YLRjCDRgtC10YHRgtGLLiDQn9C+0L/RgNC+0LHQvtCy0LDRgtGMIFRlc3Rjb250YWluZXJzINC70LjQsdC+IEgyR2lzINC00LvRjyDRgtC10YHRgtC40YDQvtCy0LDQvdC40Y8g0YDQtdC/0L7Qt9C40YLQvtGA0LjQtdCyLgotINCg0LDQt9C00LXQu9C40YLRjCBEVE8g0L3QsCBSZXF1ZXN0cyDQuCBSZXNwb25zZXMgKNCS0L7Qt9C80L7QttC90L4pLCDQtNC70Y8g0YPQtNCw0LvQtdC90LjRjyDQvdC10LLQsNC70LjQtNC90YvRhSDQv9C+0LvQtdC5INC/0YDQuCDQt9Cw0L/RgNC+0YHQsNGFLgotINCg0LDQt9C+0LHRgNCw0YLRjNGB0Y8g0L/QvtC00YDQvtCx0L3QtdC1INGBINC80LDQv9C/0LjQvdCz0L7QvCBEVE8g0YfQtdGA0LXQtyBNYXBTdHJ1Y3QrTG9tYm9rLgotINCg0LXRhNCw0LrRgtC+0YDQuNC90LMuCg== readmeEtag: '"920eff866933bb7d04bf03c6e367e9f25bb3fbad"' readmeLastModified: Sun, 19 Jun 2022 06:53:31 GMT repositoryId: 489871474 description: RESTful API для функционирования чата. created: '2022-05-08T07:05:35Z' updated: '2022-05-17T03:29:58Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: devalurum logo: https://avatars.githubusercontent.com/u/33903810?v=4 repoEtag: '"b0d1dc383f2dd1b72c6c815f38c1e7dfbcea623f2b4ebde9937e487a2550e3cf"' repoLastModified: Tue, 17 May 2022 03:29:58 GMT category: Low-level Tooling foundInMaster: true - source: openapi3 tags repository: https://github.com/borjatur/money-master-api v3: true id: 468f50c95f456880d3c26b72d0a577b8 repositoryMetadata: base64Readme: >- IyBtb25leS1tYXN0ZXItYXBpCgpCYWNrZW5kIHNlcnZpY2UgZm9yIE1vbmV5IE1hc3RlciwgYSBzaWRlIHByb2plY3QgY3JlYXRlZCBieSBtZSAoYm9yamEudHVyQGdtYWlsKSBmb3IgbGVhcm5pbmcgcHVycG9zZXMuIEJ1aWx0IGZvbGxvd2luZyAiQ2xlYW4gQXJjaGl0ZWN0dXJlIiBwcmluY2lwbGVzIGRlc2NyaWJlZCBieSBSb2JlcnQgQy4gTWFydGluIChha2EgVW5jbGUgQm9iKSwgaWYgeW91IHdhbnQgdG8ga25vdyBtb3JlIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYm9yamF0dXIvY2xlYW4tYXJjaGl0ZWN0dXJlLWZhc3RpZnktbW9uZ29kYiBhbmQgaHR0cHM6Ly9ib3JqYXR1ci5jb20vMjAyMy8wMy8wNy95ZXQtYW5vdGhlci12aXNpb24tb2YtY2xlYW4tYXJjaGl0ZWN0dXJlLyB0aGF0IHdhcyB1c2VkIGFzIGJhc2UgdGVtcGxhdGUgZm9yIGJ1aWxkaW5nIHRoaXMgcHJvamVjdC4KCiMjIFdoYXQgY2FuIHlvdSBmaW5kIGluIHRoaXMgcHJvamVjdD8KCi0gW3hdICJDbGVhbiBBcmNoaXRlY3R1cmUiIHByaW5jaXBsZXMgaW4gcHJhY3RpY2UKLSBbeF0gQnVpbHQgaW4gVHlwZXNjcmlwdAotIFt4XSBCbGF6aW5nIGZhc3QgTm9kZS5qcyBmcmFtZXdvcmssIEZhc3RpZnkKLSBbeF0gRmFuY3kgYXV0byBnZW5lcmF0ZWQgZG9jcyB1c2luZyBPcGVuQVBJIHNwZWNpZmljYXRpb24gdjMKLSBbeF0gTW9uZ29EQiB3aXRoIE1vbmdvb3NlCi0gW3hdIENvbmZpZ3VyZWQgd2l0aCBFc2xpbnQgYW5kIEplc3Qgb3V0IHRoZSBib3gKLSBbeF0gRWFzeSB0byByZWFzb24gYWJvdXQgZm9sZGVyIHN0cnVjdHVyZQotIFsgXSBUZXN0aW5nIChXSVApCi0gWyBdIEF1dGhlbnRpY2F0aW9uL0F1dGhvcml6YXRpb24gKFdJUCkKCiMjIExpdmUgRGVtbwpWaXNpdCBodHRwczovL21vbmV5LW1hc3Rlci1hcGkuYm9yamF0dXIuY2xvdWQvZG9jcyBmb3IgYSBsaXZlIGRlbW8gb2YgdGhpcyBwcm9qZWN0LCB5b3UgY2FuIGFsc28gZmluZCB0aGUgZnJvbnRlbmQgYXBwbGljYXRpb24gYXZhaWxhYmxlIGF0IGh0dHBzOi8vbW9uZXktbWFzdGVyLmJvcmphdHVyLmNsb3VkIGFzIGEgY29uc3VtZXIgb2YgdGhpcyBBUEkKCkRlbW8gc2VydmljZXMgYXJlIHJ1bm5pbmcgb24gbXkgb3duIHBlcnNvbmFsIGt1YmVybmV0ZXMgY2x1c3RlciBkZXBsb3llZCBpbjoKClshW0RpZ2l0YWxPY2VhbiBSZWZlcnJhbCBCYWRnZV0oaHR0cHM6Ly93ZWItcGxhdGZvcm1zLnNmbzIuZGlnaXRhbG9jZWFuc3BhY2VzLmNvbS9XV1cvQmFkZ2UlMjAyLnN2ZyldKGh0dHBzOi8vd3d3LmRpZ2l0YWxvY2Vhbi5jb20vP3JlZmNvZGU9ZTNhMjdkZWVhMmFjJnV0bV9jYW1wYWlnbj1SZWZlcnJhbF9JbnZpdGUmdXRtX21lZGl1bT1SZWZlcnJhbF9Qcm9ncmFtJnV0bV9zb3VyY2U9YmFkZ2UpCgpUaGVyZSBpcyBzb21lIGRlbW8gZGF0YSBhdmFpbGFibGUgdGhhdCB3aWxsIGJlIHJlc3RvcmVkIGluIGEgc2NoZWR1bGVkIGJhc2UuCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCiogZG9ja2VyLWNvbXBvc2UgdXAgLS1mb3JjZS1yZWNyZWF0ZSAtLWJ1aWxkCgpPciBhbHRlcm5hdGl2ZWx5IGEgbW9uZ29kYiBpbnN0YW5jZSBydW5uaW5nIHNvbWV3aGVyZSwgdXBkYXRlIHRoZSBjb25uZWN0aW9uIHVybCBhY2NvcmRpbmdseSBhbmQ6CgoqIG5wbSBpbnN0YWxsCiogbnBtIHJ1biBidWlsZCAmJiBucG0gc3RhcnQKKiB2aXNpdCBodHRwOi8vbG9jYWxob3N0OjUwNTAvZG9jcyBhbmQgZW5qb3kh readmeEtag: '"e7e16cb40572a8d84eb032e0fbec49c3bb86878c"' readmeLastModified: Thu, 16 Nov 2023 17:59:57 GMT repositoryId: 613068520 description: >- rest api following clean architecture principles for Money Master, side project by Borja Tur created: '2023-03-12T19:40:13Z' updated: '2023-04-25T17:00:19Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: borjatur logo: https://avatars.githubusercontent.com/u/15380585?v=4 repoEtag: '"8b70ea42234b889f426aa335b542b245bc9b9d157c3ddc3e130b25307347e4cb"' repoLastModified: Tue, 25 Apr 2023 17:00:19 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/thenriquedb/todo-list-with-spring v3: true id: 95e8cced8900d0116e77c182daa46c25 repositoryMetadata: base64Readme: >- IVtpbWcucG5nXShoZWFkZXIucG5nKQoKIyBUb2RvIExpc3QgUkVTVCBBUEkKIVtKYXZhXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2phdmEtJTIzRUQ4QjAwLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289b3BlbmpkayZsb2dvQ29sb3I9d2hpdGUpIVtTcHJpbmddKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvc3ByaW5nLSUyMzZEQjMzRi5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPXNwcmluZyZsb2dvQ29sb3I9d2hpdGUpIVtTd2FnZ2VyXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlLy1Td2FnZ2VyLSUyM0Nsb2p1cmU/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPXN3YWdnZXImbG9nb0NvbG9yPXdoaXRlKSFbUmVuZGVyXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1JlbmRlci0lNDZFM0I3LnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289cmVuZGVyJmxvZ29Db2xvcj13aGl0ZSkKCkVzdGUgcHJvamV0byBmb2kgZGVzZW52b2x2aWRvIGNvbW8gcGFydGUgZG8gY3Vyc28gZ3JhdHVpdG8gZGUgSmF2YSBvZmVyZWNpZG8gcGVsYSBSb2NrZXRzZWF0LiBUcmF0YS1zZSBkZSB1bWEgQVBJIFJlc3QgcGFyYSBnZXJlbmNpYW1lbnRvIGRlIGxpc3RhIGRlIHRhcmVmYXMsIGNvbnN0cnXDrWRhIGVtIEphdmEgY29tIG8gZnJhbWV3b3JrIFNwcmluZyBCb290LgoKCiMjIENhcmFjdGVyw61zdGljYXMgZG8gUHJvamV0bwotICoqU2VwYXJhw6fDo28gZGUgUmVzcG9uc2FiaWxpZGFkZXMqKjogSW1wbGVtZW50YW1vcyB1bWEgZXN0cnV0dXJhIGRlIGPDs2RpZ28gcXVlIHNlZ3VlIGFzIGJvYXMgcHLDoXRpY2FzIGRlIHNlcGFyYcOnw6NvIGRlIHJlc3BvbnNhYmlsaWRhZGVzIGVudHJlIGNvbnRyb2xsZXJzIGUgcmVwb3NpdMOzcmlvcy4gSXNzbyB0b3JuYSBvIGPDs2RpZ28gbWFpcyBvcmdhbml6YWRvIGUgZGUgZsOhY2lsIG1hbnV0ZW7Dp8Ojby4KLSAqKkZpbHRybyBwYXJhIEF1dGVudGljYcOnw6NvIGUgVmFsaWRhw6fDo28qKjogQ3JpYW1vcyB1bSBmaWx0cm8gcGFyYSBhIHJvdGEgYC90YXNrc2AgcXVlIGdhcmFudGUgYSBhdXRlbnRpY2HDp8OjbyBkbyB1c3XDoXJpbyBlIHZhbGlkYSBhcyBzb2xpY2l0YcOnw7Vlcy4gSXNzbyBhdW1lbnRhIGEgc2VndXJhbsOnYSBlIGEgaW50ZWdyaWRhZGUgZG9zIGRhZG9zLgotICoqRXJyb3IgSGFuZGxlcioqOiBEZXNlbnZvbHZlbW9zIHVtIG1lY2FuaXNtbyBkZSB0cmF0YW1lbnRvIGRlIGVycm9zIHBhcmEgZm9ybmVjZXIgcmVzcG9zdGFzIGNsYXJhcyBlIGFkZXF1YWRhcyBlbSBjYXNvIGRlIHByb2JsZW1hcyBkdXJhbnRlIGFzIHNvbGljaXRhw6fDtWVzLgoKIyMjIFJlcXVpc2l0b3MKLSAqKkphdmEgPj0gMTcqKjsKLSAqKk1hdmVuKio7Ci0gKipSZXN0IGNsaWVudCoqOwoKIyMjIERlcGVkw6puY2lhcwotICoqU3ByaW5nIEpQQSoqOwotICoqTG9tYm9rKio7Ci0gKipCQ3J5cHQqKjsKLSAqKkgyIERhdGFiYXNlKio7CgojIyBBUEkKCiMjIyBQT1NUIGBgL3VzZXJzYGAKCioqUmVxdWVzdCBib2R5KioKYGBganNvbgogIHsKICAgICAgICAibmFtZSI6IHN0cmluZywKICAgICAgICAidXNlcm5hbWUiOiBzdHJpbmcsCiAgICAgICAgInBhc3N3b3JkIjogc3RyaW5nCiAgfQpgYGAKCioqUmVzcG9uc2UqKgpgYGBqc29uCiAgICB7CiAgICAgICAgImlkIjogVVVJRCwKICAgICAgICAidXNlcm5hbWUiOiBzdHJpbmcsCiAgICAgICAgIm5hbWUiOiBzdHJpbmcsCiAgICAgICAgImNyZWF0ZWRBdCI6IFlZWVktTU0tRERUaGg6bW06c3MKICAgIH0KYGBgCgojIyMgUE9TVCBgYC90YXNrc2BgCgoqKkhlYWRlcioqCmBgYApBdXRob3JpemF0aW9uOiBCYXNpYyBCYXNlNjQgKHVzZXJuYW1lOnBhc3N3b3JkKQpgYGAKCioqUmVxdWVzdCoqCgpgYGBqc29uCiAgewogICAgICAidGl0bGUiOiBzdHJpbmcsCiAgICAgICJkZXNjcmlwdGlvbiI6IHN0cmluZywKICAgICAgInByaW9yaXR5IjogMCB8IDEgfCAyIHwgMyB8IDQsCiAgICAgICJzdGFydEF0IjogWVlZWS1NTS1ERFRoaDptbTpzcywKICAgICAgImVuZEF0IjogWVlZWS1NTS1ERFRoaDptbTpzcwogIH0KCmBgYCAKKipSZXNwb25zZSoqCgpgYGBqc29uCiAgewogICAgICAgICJpZCI6IFVVSUQsCiAgICAgICAgInRpdGxlIjogc3RyaW5nLAogICAgICAgICJkZXNjcmlwdGlvbiI6IHN0cmluZywKICAgICAgICAicHJpb3JpdHkiOiAwIHwgMSB8IDIgfCAzIHwgNCwKICAgICAgICAic3RhcnRBdCI6IFlZWVktTU0tRERUaGg6bW06c3MsCiAgICAgICAgImVuZEF0IjogWVlZWS1NTS1ERFRoaDptbTpzcywKICAgICAgICAiY3JlYXRlZEF0IjogWVlZWS1NTS1ERFRoaDptbTpzcywKICAgICAgICAidXNlcklkIjogVVVJRAogIH0KYGBgCgojIyMgUE9TVCBgYC90YXNrc2BgCgoqKkhlYWRlcioqCmBgYApBdXRob3JpemF0aW9uOiBCYXNpYyBCYXNlNjQgKHVzZXJuYW1lOnBhc3N3b3JkKQpgYGAKKipSZXNwb25zZSoqCgpgYGBqc29uCiAgewogICAgICAgICJpZCI6IFVVSUQsCiAgICAgICAgInRpdGxlIjogc3RyaW5nLAogICAgICAgICJkZXNjcmlwdGlvbiI6IHN0cmluZywKICAgICAgICAicHJpb3JpdHkiOiAwIHwgMSB8IDIgfCAzIHwgNCwKICAgICAgICAic3RhcnRBdCI6IFlZWVktTU0tRERUaGg6bW06c3MsCiAgICAgICAgImVuZEF0IjogWVlZWS1NTS1ERFRoaDptbTpzcywKICAgICAgICAiY3JlYXRlZEF0IjogWVlZWS1NTS1ERFRoaDptbTpzcywKICAgICAgICAidXNlcklkIjogVVVJRAogIH1bXQpgYGAKCiMjIyBQVVQgYGAvdGFza3Mve2lkfWBgCgoqKkhlYWRlcioqCmBgYApBdXRob3JpemF0aW9uOiBCYXNpYyBCYXNlNjQgKHVzZXJuYW1lOnBhc3N3b3JkKQpgYGAKCgoqKlJlc3BvbnNlKioKCmBgYGpzb24KICB7CiAgICAgICAgImlkIjogVVVJRCwKICAgICAgICAidGl0bGUiOiBzdHJpbmcsCiAgICAgICAgImRlc2NyaXB0aW9uIjogc3RyaW5nLAogICAgICAgICJwcmlvcml0eSI6IDAgfCAxIHwgMiB8IDMgfCA0LAogICAgICAgICJzdGFydEF0IjogWVlZWS1NTS1ERFRoaDptbTpzcywKICAgICAgICAiZW5kQXQiOiBZWVlZLU1NLUREVGhoOm1tOnNzCiAgfQpgYGAKKipSZXNwb25zZSoqCgpgYGBqc29uCiAgewogICAgICAgICJpZCI6IFVVSUQsCiAgICAgICAgInRpdGxlIjogc3RyaW5nLAogICAgICAgICJkZXNjcmlwdGlvbiI6IHN0cmluZywKICAgICAgICAicHJpb3JpdHkiOiAwIHwgMSB8IDIgfCAzIHwgNCwKICAgICAgICAic3RhcnRBdCI6IFlZWVktTU0tRERUaGg6bW06c3MsCiAgICAgICAgImVuZEF0IjogWVlZWS1NTS1ERFRoaDptbTpzcywKICAgICAgICAiY3JlYXRlZEF0IjogWVlZWS1NTS1ERFRoaDptbTpzcywKICAgICAgICAidXNlcklkIjogVVVJRAogIH0KYGBgCgojIyBNZWxob3JpYXMKLSBbWF0gQWRpY2lvbmFyIGVuZHBvaW50IHBhcmEgZXhjbHVpciB0YXJlZmE7Ci0gW1hdIERvY3VtZW50YXIgYSBBUEkgdXRpbGl6YW5kbyBTd2FnZ2VyOwotIFsgXSBBZGljaW9uYXIgdGVzdGVzIHBhcmEgY2FkYSBlbmRwb2ludDsKLSBbIF0gU3Vic3RpdHVpciBvIEgyIHBhcmEgbyBQb3N0Z3Jlc3M7Ci0gWyBdIE1lbGhvcmFyIG8gcHJvY2Vzc28gZGUgYXV0ZW50aWNhw6fDo28uCg== readmeEtag: '"d689f7ab5f5361cc9cea81f1fd44969c3c6e4bf9"' readmeLastModified: Wed, 25 Oct 2023 22:00:18 GMT repositoryId: 702747708 description: ' API Rest para gerenciamento de lista de tarefas, construída em Java com o framework Spring Boot.' created: '2023-10-09T23:55:51Z' updated: '2023-10-18T02:35:18Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: thenriquedb logo: https://avatars.githubusercontent.com/u/39653866?v=4 repoEtag: '"d2c6469ced9d47f62809464e80f6be86b19a93363126207a0d97d69bf7ce8bc7"' repoLastModified: Wed, 18 Oct 2023 02:35:18 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/alfuraydio/openapiparser v3: true id: dd50bbb80a9e29c7c6c386a05faeab08 repositoryMetadata: base64Readme: >- IyBTaW1wbGUgamF2YSBPcGVuQVBJIDIgYW5kIE9wZW5BUEkgMyBQYXJzZXIKc2ltcGxlIGphdmEgcGFyc2VyIGZvciBPcHJuQVBJIDIuCg== readmeEtag: '"6568ff70e6f875bd68dfc67105e931a985e0bba0"' readmeLastModified: Sat, 08 Jun 2024 16:51:11 GMT repositoryId: 809965626 description: Simple Java OpenAPI Parser created: '2024-06-03T19:43:12Z' updated: '2024-06-08T16:51:50Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: AlfuraydiO logo: https://avatars.githubusercontent.com/u/13061733?v=4 repoEtag: '"b671d2578c860a2fcb385986db973347acd1d21087998b742658921c875aa55b"' repoLastModified: Sat, 08 Jun 2024 16:51:50 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/omar122/openapiparser - source: openapi3 tags repository: https://github.com/rebecabl/iagenerativa-pipeline-etlpython v3: true id: 0d59d04f3e10ecfd7831c52b9c92cac7 repositoryMetadata: base64Readme: >- CiMgRGVzY3JpcHRpb246CgpUaGlzIFB5dGhvbiBzY3JpcHQgdXRpbGl6ZXMgdGhlIFBhbmRhcyBsaWJyYXJ5IHRvIGNyZWF0ZSBhIHNhbXBsZSBEYXRhRnJhbWUgcmVwcmVzZW50aW5nIHVzZXIgZGF0YSwgaW5jbHVkaW5nIFVzZXJJRCwgTmFtZSwgQWdlLCBFbWFpbCwgYW5kIFRlbGVwaG9uZS4gVGhlIHNjcmlwdCB0aGVuIHJldHJpZXZlcyBhZGRpdGlvbmFsIHVzZXIgaW5mb3JtYXRpb24gZnJvbSBhIGh5cG90aGV0aWNhbCBBUEkgZW5kcG9pbnQgdXNpbmcgdGhlIHJlcXVlc3RzIGxpYnJhcnkuIFRoZSBvYnRhaW5lZCB1c2VyIGRhdGEgaXMgcHJvY2Vzc2VkIHRocm91Z2ggT3BlbkFJJ3MgR1BULTMgZW5naW5lIHRvIGdlbmVyYXRlIHBlcnNvbmFsaXplZCBtYXJrZXRpbmcgbWVzc2FnZXMgZW5jb3VyYWdpbmcgZmluYW5jaWFsIGludmVzdG1lbnQuIFRoZSBtZXNzYWdlcyBhcmUgdGFpbG9yZWQgdG8gZWFjaCB1c2VyLCBpbmNvcnBvcmF0aW5nIHRoZWlyIG5hbWVzIGluIGEgcG9zaXRpdmUgaW52ZXN0bWVudC1mb2N1c2VkIHByb21wdC4KClRoZSBzY3JpcHQgY29uY2x1ZGVzIGJ5IHVwZGF0aW5nIHVzZXIgcHJvZmlsZXMgb24gdGhlIHNhbWUgaHlwb3RoZXRpY2FsIEFQSSB3aXRoIHRoZSBnZW5lcmF0ZWQgbWFya2V0aW5nIG1lc3NhZ2VzLCBpbmRpY2F0aW5nIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBmb3IgZWFjaCB1c2VyLiBUaGUgaW50ZWdyYXRpb24gb2YgUGFuZGFzLCByZXF1ZXN0cywgYW5kIE9wZW5BSSBzaG93Y2FzZXMgYSB2ZXJzYXRpbGUgYXBwcm9hY2ggZm9yIGRhdGEgbWFuaXB1bGF0aW9uLCBleHRlcm5hbCBBUEkgaW50ZXJhY3Rpb24sIGFuZCBBSS1wb3dlcmVkIGNvbnRlbnQgZ2VuZXJhdGlvbiBpbiB0aGUgY29udGV4dCBvZiBwZXJzb25hbGl6ZWQgZmluYW5jaWFsIG1lc3NhZ2luZy4K readmeEtag: '"c83e2760e49d6d4998e3f46be0c4eaa94dae91a9"' readmeLastModified: Sun, 21 Jan 2024 18:45:53 GMT repositoryId: 694912783 description: >- Python Project uses Pandas, Requests and GPT-3 to create personalized marketing messages encouraging investments. Messages are integrated into user profiles in a dummy API. created: '2023-09-22T00:31:11Z' updated: '2024-01-21T18:50:07Z' language: Jupyter Notebook archived: false stars: 0 watchers: 1 forks: 0 owner: Rebecabl logo: https://avatars.githubusercontent.com/u/107273033?v=4 repoEtag: '"c685ac874a43307320e39ac24ba3a34079aa6fae475a396e2460df7792e3991b"' repoLastModified: Sun, 21 Jan 2024 18:50:07 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/mcpride/widdershins-templates-asciidoc v3: true id: cd2d1a7ae3adbcc895d7b0abcaf86aa1 repositoryMetadata: base64Readme: >- IyBDb252ZXJ0IE9wZW5BUEkgMyBkZWZpbml0aW9ucyB0byBBU0NJSURPQyBkb2N1bWVudGF0aW9uIHdpdGggd2lkZGVyc2hpbnMKCiMjIEluZm9ybWF0aW9uCgpUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgdGhlIFt3aWRkZXJzaGluc10oaHR0cHM6Ly9naXRodWIuY29tL01lcm1hZGUvd2lkZGVyc2hpbnMvKSBbb3BlbmFwaTMgdGVtcGxhdGVzXShodHRwczovL2dpdGh1Yi5jb20vTWVybWFkZS93aWRkZXJzaGlucy90cmVlL21haW4vdGVtcGxhdGVzL29wZW5hcGkzKSBvZiB2ZXJzaW9uIDQuMDEgLSBtb2RpZmllZCwgdG8gcHJvZHVjZSBhIHZhbGlkIHNpbmdsZSBbQVNDSUlET0NdKGh0dHBzOi8vYXNjaWlkb2Mub3JnLykgZG9jdW1lbnQsIHdoaWNoIGNhbiBiZSBpbmNsdWRlZCBpbnRvIG90aGVyIGRvY3MgYW5kIGNvbnZlcnRlZCB0byBkaXZlcnNlIHRhcmdldCBmb3JtYXRzLiAKClVuZm9ydHVuYXRlbHkgdGhlIGNvbnZlcnNpb24gcmF0ZSBpcyBub3QgMTAwJSEgRm9yIGV4YW1wbGUgbWFya2Rvd24gaW4gZGVzY3JpcHRpb25zIHdpbGwgbm90IGJlIHByb3Blcmx5IGNvbnZlcnRlZCwgYnV0IGl0IGhlbHBzIG1lIGFuZCBteSB0ZWFtIHRvIHByb2R1Y2UgdmFsaWQgaHVtYW4gcmVhZGFibGUgaW50ZXJmYWNlIGRvY3VtZW50YXRpb24uCgpUaGVyZSBpcyBhIHBldHN0b3JlIDMgZXhhbXBsZSBpbmNsdWRlZCB0byBjaGVjayB0aGUgcmVzdWx0cy4KCkZlZWwgZnJlZSB0byB1c2UgaXQgLi4uIGJ1dCB3aXRob3V0IGd1YXJhbnRlZXMgOy0p readmeEtag: '"96699182b8b81d3ca21ae4f7d2ef573a38c2ac0e"' readmeLastModified: Tue, 14 May 2024 07:27:44 GMT repositoryId: 800360164 description: Widdershins templates for AsciiDoc created: '2024-05-14T07:25:27Z' updated: '2024-05-14T07:32:32Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: mcpride logo: https://avatars.githubusercontent.com/u/1053528?v=4 license: MIT repoEtag: '"e9ce0f510443de1e9fc3022e63475c5aa282226fe2eb31caf049995e1c69118a"' repoLastModified: Tue, 14 May 2024 07:32:32 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/mcpikon/cinemarustback v3: true id: 35dfae36d7a4349b51973290867a72f6 repositoryMetadata: base64Readme: >- IyBDaW5lbWFSdXN0QmFjawoKWyFbUnVzdF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS8yMDIxLWJsYWNrP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1ydXN0JmxvZ29Db2xvcj13aGl0ZSZsYWJlbD1SdXN0JmxhYmVsQ29sb3I9YmxhY2smY29sb3I9d2hpdGUpXShodHRwczovL3d3dy5ydXN0LWxhbmcub3JnL2VzKSAmbmJzcDsKWyFbQWN0aXggV2ViXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlLzQuOC4wKy1ibGFjaz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289YWN0aXgmbG9nb0NvbG9yPXdoaXRlJmxhYmVsPUFjdGl4JTIwV2ViJmxhYmVsQ29sb3I9YmxhY2smY29sb3I9d2hpdGUpXShodHRwczovL2FjdGl4LnJzLykgJm5ic3A7ClshW01vbmdvREJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTW9uZ29EQi02LjArLTAwNjg0QT9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289bW9uZ29kYiZsb2dvQ29sb3I9d2hpdGUmbGFiZWxDb2xvcj0xMDEwMTApXShodHRwczovL3d3dy5tb25nb2RiLmNvbSkgJm5ic3A7ClshW1N3YWdnZXJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU3dhZ2dlci1PQVMzLSUyMzg1RUEyRD9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289c3dhZ2dlciZsb2dvQ29sb3I9JTIzRkZGRkZGJmxhYmVsQ29sb3I9JTIzMDAwMDAwKV0oaHR0cHM6Ly9zd2FnZ2VyLmlvLykgJm5ic3A7ClshW1JlZG9jXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1JlZG9jLU9BUzMtZ3JheT9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289c3dhZ2dlciZsb2dvQ29sb3I9JTIzRkZGRkZGJmxhYmVsQ29sb3I9JTIzMDAwMDAwKV0oaHR0cHM6Ly9yZWRvY2x5LmNvbS8pICZuYnNwOwpbIVtTY2FsYXJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU2NhbGFyLU9BUzMtYmx1ZT9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289c3dhZ2dlciZsb2dvQ29sb3I9JTIzRkZGRkZGJmxhYmVsQ29sb3I9JTIzMDAwMDAwKV0oaHR0cHM6Ly9zY2FsYXIuY29tLykKCiMjIPCfmYvigI3imYLvuI8gQXV0b3IKCiogW0phdmllciBQaWPDs25dKGh0dHBzOi8vZ2l0aHViLmNvbS9NQ1Bpa29uKQoKIyMg4pyoIERlc2NyaXBjacOzbgoKQVBJIFJFU1QgZGUgcGVsw61jdWxhcywgc2VyaWVzIHkgcmVzZcOxYXMgZGUgbGFzIG1pc21hcy4KCj4gWyFOT1RFXQo+IEVzdGUgcHJveWVjdG8gdXRpbGl6YSBbU3dhZ2dlciBVSV0oaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaS9zd2FnZ2VyLXVpLyksIFtSZWRvY10oaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaS9yZWRvYykgeSBbU2NhbGFyXShodHRwOi8vbG9jYWxob3N0OjgwODAvYXBpL3NjYWxhcikgcGFyYSBsYSBkb2N1bWVudGFjacOzbi4KCiMjIPCfkqEgQ8OzbW8gZnVuY2lvbmEKCkVzdGUgcHJveWVjdG8gcmVhbGl6YSB1biBDUlVEIChDcmVhciwgT2J0ZW5lciwgTW9kaWZpY2FyIHkgRWxpbWluYXIpIGRlIFBlbMOtY3VsYXMsIFNlcmllcyB5IHN1cyBSZXNlw7Fhcy4gRGlzcG9uZW4gZGUgZW50aWRhZGVzLCBEVE9zLCByZXBvc2l0b3Jpb3MsIHNlcnZpY2lvcyBlIGltcGxlbWVudGFjaW9uZXMgZGUgbG9zIG1pc21vcy4KCiMjIPCfm6AgVGVjbm9sb2fDrWFzCgoqIFJ1c3QgKDIwMjEgRWRpdGlvbikKKiBBY3RpeCBXZWIgNC44LjAKKiBfKipEZXBlbmRlbmNpYXMgKENyYXRlcyk6KipfCiAgICAqIGFzeW5jLXRyYWl0ICgwLjEuODApCiAgICAqIGNocm9ubyAoMC40LjM4KQogICAgKiBkZXJpdmVfbW9yZSAoMC45OS4xOCkKICAgICogZG90ZW52ICgwLjE1LjApCiAgICAqIGVudl9sb2dnZXIgKDAuMTEuMykKICAgICogZnV0dXJlcy11dGlsICgwLjMuMzApCiAgICAqIGxhenlfc3RhdGljICgxLjUuMCkKICAgICogbG9nICgwLjQuMjEpCiAgICAqIG1vbmdvZGIgKDIuOC4yKQogICAgKiByZWdleCAoMS4xMC41KQogICAgKiBzZXJkZSAoMS4wLjIwMykKICAgICogc2VyZGVfanNvbiAoMS4wLjExOCkKICAgICogdXRvaXBhICg0LjIuMykKICAgICogdXRvaXBhLXJlZG9jICg0LjAuMCkKICAgICogdXRvaXBhLXNjYWxhciAoMC4xLjApCiAgICAqIHV0b2lwYS1zd2FnZ2VyLXVpICg3LjEuMCkKICAgICogdmFsaWRhdG9yICgwLjE4LjEpCiAgICAqIG1vY2thbGwgKDAuMTIuMSkKCiMjIPCfk4QgTGljZW5jaWEKCkVzdGUgcHJveWVjdG8gZXMgZGUgY8OzZGlnbyBhYmllcnRvIHkgZXN0w6EgZGlzcG9uaWJsZSBiYWpvIGxhIFtMaWNlbmNpYSAyLjAgZGUgQXBhY2hlXShMSUNFTlNFKS4K readmeEtag: '"78f236f109c92b69da7a6fa893d603ecc15d1719"' readmeLastModified: Fri, 19 Jul 2024 13:15:31 GMT repositoryId: 810446094 description: >- REST API related to movies, series and its reviews created with Rust and Actix Web. created: '2024-06-04T18:00:24Z' updated: '2024-07-19T13:15:39Z' language: Rust archived: false stars: 0 watchers: 1 forks: 0 owner: MCPikon logo: https://avatars.githubusercontent.com/u/82212139?v=4 license: Apache-2.0 repoEtag: '"8eaacaf341316ef605b3a3265b54da23e7e47ceaefb4992f54c328c376121e2c"' repoLastModified: Fri, 19 Jul 2024 13:15:39 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/productdock/build-apis-made-easy v3: true id: 7a05367e8ece888a40c50a1d22c84fb3 repositoryMetadata: base64Readme: >- IyBCdWlsZGluZyBhcGlzIG1hZGUgZWFzeQoKIyMgUHJlcmVxdWlzaXRlcwoKLSBUeXBlc3BlYzogYG5wbSBpbnN0YWxsIC1nIEB0eXBlc3BlYy9jb21waWxlcmAKLSBvYXBpLWNvZGVnZW46IGBnbyBpbnN0YWxsIGdpdGh1Yi5jb20vZGVlcG1hcC9vYXBpLWNvZGVnZW4vdjIvY21kL29hcGktY29kZWdlbkBsYXRlc3RgCi0gUG9zdG1hbgoKIyMgUnVuIGV4YW1wbGVzCgpBZnRlciBjbG9uaW5nIHRoaXMgcmVwb3NpdG9yeSwgY2hlY2sgTWFrZWZpbGUgZmlyc3QuIAoKQ2hvb3NlIHNlcnZlciBleGFtcGxlOgoKLSBSdW4gZ29sYW5nIGFwaSAocG9ydCA4MDg0KTogYG1ha2UgcnVuLWdvYAoKLSBSdW4gc3ByaW5nIGJvb3QgYXBpIChwb3J0IDgwODQpOiBgbWFrZSBydW4tanZtYAoKSW1wb3J0IGBldmVudHMtcG9zdG1hbi1jb2xsZWN0aW9uLmpzb25gIHRvIHBvc3RtYW4gdG8gdGVzdCB0aGUgQVBJLg== readmeEtag: '"62ec12ee863507c9778be2e3305ae52db2164600"' readmeLastModified: Tue, 06 Aug 2024 12:16:09 GMT repositoryId: 815105500 description: >- Building APIs Made Easy: From Specification to Code Generation and Testing blog post created: '2024-06-14T11:12:07Z' updated: '2025-08-12T08:22:32Z' language: Java archived: false stars: 0 watchers: 2 forks: 0 owner: ProductDock logo: https://avatars.githubusercontent.com/u/86293668?v=4 license: Apache-2.0 repoEtag: '"af049a23a34935578c9f3926d954f8997c3056dec270f176259cf6b1b1003048"' repoLastModified: Tue, 12 Aug 2025 08:22:32 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/millroy094/task-processor v3: true id: d69c98803676a357eb22ced10ce2e30e repositoryMetadata: base64Readme: >- IyBUYXNrIFByb2Nlc3NvciBBcHBsaWNhdGlvbgoKVGhpcyBpcyBhIHRhc2sgcHJvY2Vzc29yIGFwcGxpY2F0aW9uIHRoYXQgY29uc3VtZXMgdGFza3MgZnJvbSBhIFJhYmJpdE1RIG1lc3NhZ2UgcXVldWUsIHByb2Nlc3NlcyB0aGVtLCBhbmQgc3RvcmVzIHRoZSByZXN1bHRzIGluIE1vbmdvREIuIFRoZSB0YXNrcyBjYW4gYmUgb2YgdmFyaW91cyB0eXBlcywgc3VjaCBhcyBoZWFsdGggY2hlY2tzIG9yIGVtYWlsIHByb2Nlc3NpbmcuIFRoZSBhcHBsaWNhdGlvbiB0cmFja3MgdGhlIHN0YXR1cyBvZiBlYWNoIHRhc2ssIGluY2x1ZGluZyByZXRyaWVzLCBmYWlsdXJlcywgYW5kIHRpbWVzdGFtcHMuCgojIyBGZWF0dXJlcwoKLSAqKlRhc2sgUXVldWUgUHJvY2Vzc2luZyoqOiBDb25zdW1lcyB0YXNrcyBmcm9tIGEgUmFiYml0TVEgcXVldWUuCi0gKipUYXNrIFR5cGVzKio6IFN1cHBvcnRzIGRpZmZlcmVudCB0eXBlcyBvZiB0YXNrcyBsaWtlIGhlYWx0aCBjaGVja3MgYW5kIGVtYWlsIHByb2Nlc3NpbmcuCi0gKipUYXNrIFN0YXR1cyBUcmFja2luZyoqOiBVcGRhdGVzIHRhc2sgc3RhdHVzIChlLmcuLCBpbi1wcm9ncmVzcywgY29tcGxldGVkLCBmYWlsZWQpIGFuZCBzdG9yZXMgcmVzdWx0cyBpbiBNb25nb0RCLgotICoqUmV0cnkgTG9naWMqKjogUmV0cmllcyB0YXNrIGV4ZWN1dGlvbiB1cCB0byBhIGNvbmZpZ3VyYWJsZSBudW1iZXIgb2YgcmV0cmllcy4KLSAqKkdyYWNlZnVsIFNodXRkb3duKio6IEhhbmRsZXMgc3lzdGVtIHNodXRkb3duIGdyYWNlZnVsbHkgYnkgc3RvcHBpbmcgdGhlIHdvcmtlcnMgYW5kIGNsZWFuaW5nIHVwIHJlc291cmNlcy4KLSAqKlRhc2sgUmVzdWx0IFN0b3JhZ2UqKjogU3RvcmVzIHRhc2sgcmVzdWx0cywgaW5jbHVkaW5nIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBzdGF0dXMsIG1lc3NhZ2VzLCBhbmQgdGltZXN0YW1wcyBpbiBNb25nb0RCLgoKIyMgQXJjaGl0ZWN0dXJlCgotICoqUmFiYml0TVEqKjogVXNlZCBhcyB0aGUgbWVzc2FnZSBicm9rZXIgdG8gcXVldWUgdGFza3MgZm9yIHByb2Nlc3NpbmcuCi0gKipNb25nb0RCKio6IFVzZWQgYXMgdGhlIGRhdGFiYXNlIHRvIHN0b3JlIHRhc2sgc3RhdHVzIGFuZCByZXN1bHRzLgotICoqR28qKjogVGhlIGFwcGxpY2F0aW9uIGlzIHdyaXR0ZW4gaW4gR28sIHV0aWxpemluZyB0aGUgYHN0cmVhZHdheS9hbXFwYCBsaWJyYXJ5IHRvIGludGVyZmFjZSB3aXRoIFJhYmJpdE1RIGFuZCB0aGUgYG1vbmdvLWRyaXZlcmAgZm9yIE1vbmdvREIgb3BlcmF0aW9ucy4KCiMjIFJlcXVpcmVtZW50cwoKLSBEb2NrZXIgYW5kIERvY2tlciBDb21wb3NlIChmb3IgcnVubmluZyBSYWJiaXRNUSwgTW9uZ29EQiwgYW5kIHRoZSBhcHAgdG9nZXRoZXIpCi0gR28gMS4xOCsgZm9yIHJ1bm5pbmcgdGhlIGFwcGxpY2F0aW9uIGxvY2FsbHkKLSBNb25nb0RCIHJ1bm5pbmcgKGVpdGhlciBsb2NhbGx5IG9yIHZpYSBEb2NrZXIpCi0gUmFiYml0TVEgcnVubmluZyAoZWl0aGVyIGxvY2FsbHkgb3IgdmlhIERvY2tlcikKCiMjIEVudmlyb25tZW50IFZhcmlhYmxlcwoKVGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGZ1bmN0aW9uIHByb3Blcmx5OgoKLSBgUkFCQklUTVFfVVJMYDogVVJMIGZvciBSYWJiaXRNUSBjb25uZWN0aW9uIChkZWZhdWx0OiBgYW1xcDovL2d1ZXN0Omd1ZXN0QHJhYmJpdG1xOjU2NzIvYCkuCi0gYE1PTkdPREJfVVJMYDogTW9uZ29EQiBjb25uZWN0aW9uIFVSTCAoZGVmYXVsdDogYG1vbmdvZGI6Ly9tb25nb2RiOjI3MDE3L2ApLgotIGBNQVhfUkVUUklFU2A6IE1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMgZm9yIGEgZmFpbGVkIHRhc2sgKGRlZmF1bHQ6IGAzYCkuCi0gYEFQSV9QT1JUYDogVGhlIHBvcnQgdGhlIHByb2R1Y2VyIHdpbGwgcmVjZWl2ZSB0YXNrIHJlcXVlc3Qgb24gKGRlZmF1bHQ6IGA4MDgwYCkuCgojIyBJbnN0YWxsYXRpb24KCiMjIyAxLiBDbG9uZSB0aGUgUmVwb3NpdG9yeQoKYGBgYmFzaApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL21pbGxyb3kwOTQvdGFzay1wcm9jZXNzb3IuZ2l0CmNkIHRhc2stcHJvY2Vzc29yCg== readmeEtag: '"d5e558363660d1c7bf9a0c236714a6565c44a88f"' readmeLastModified: Wed, 04 Dec 2024 15:00:22 GMT repositoryId: 892571166 description: null created: '2024-11-22T11:14:53Z' updated: '2024-12-04T18:50:21Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: Millroy094 logo: https://avatars.githubusercontent.com/u/58091953?v=4 repoEtag: '"c56184c41f2990d582931af328e2c7bc5f0cd806af7d136d395c78d5643d0a8f"' repoLastModified: Wed, 04 Dec 2024 18:50:21 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/markjivko/rest-object-tree v3: true id: 364b0c5b54d32febc564dcc5faf89473 repositoryMetadata: base64Readme: >- IyBSRVNUIE9iamVjdCBUcmVlIEdlbmVyYXRvcgoKPHAgYWxpZ249ImNlbnRlciI+CiAgICA8YSBocmVmPSJodHRwczovL2FwcC5zd2FnZ2VyaHViLmNvbS9hcGlzL21hcmtqaXZrby9iYm94LzAuMC4xIj4KICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9yZXBvc2l0b3J5LWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNTE1MDYxMDgzLzEyZGZiYmUwLWE4ZGItNDQxMy05MzJmLWNmM2ExNzFiMTA3NCIvPgogICAgPC9hPgo8L3A+CgojIyAxLiBVc2FnZQoKIyMjIDEuMS4gR2VuZXJhdGUKClByZXBhcmUgdGhlIG5ldyBgb3BlbmFwaS55YW1sYCBzcGVjaWZpY2F0aW9uIGFuZCBnZW5lcmF0ZSB0aGUgUkVTVCBBUEkgc2VydmVyIHNvdXJjZSBjb2RlLgoKYGBgCm5wbSBydW4gZ2VuZXJhdGUKYGBgCgpZb3UgY2FuIGVhc2lseSBkZWZpbmUgb2JqZWN0cyBhbmQgdHJlZSBicmFuY2hlcyBpbiBgY29uZmlnL2NvbmZpZy55YW1sYC4KCkNob29zZSBvbmUgb2YgdGhlIHByZWRlZmluZWQgZ2VuZXJhdG9ycyBvciBjcmVhdGUgYSBuZXcgb25lIGluIGBzcmMvZ2VuZXJhdG9yLyouanNgLgoKVGhpcyBwcm9qZWN0IHVzZXMgYC5tdXN0YWNoZWAgZmlsZXMgYXMgdGVtcGxhdGVzLgoKIyMjIDEuMi4gU2VydmUKCkxhdW5jaCB0aGUgUkVTVCBBUEkgYW5kIGl0cyBPcGVuQVBJIHYzIGRvY3VtZW50YXRpb246CgpgYGAKbnBtIHJ1biBzZXJ2ZQpgYGAKCiMjIDIuIENvbXBvbmVudHMKCiMjIyAyLjEuIE9iamVjdHMKCvCfk5ogVGVtcGxhdGUge2JlY29tZXN9IERyYWZ0IHtwdWJsaXNoZWQgb24tY2hhaW4gdG99IE9iamVjdC4KCllvdSBjYW5ub3QgKipjcmVhdGUqKiBvYmplY3RzIG9yIG9iamVjdCBkcmFmdHMgZGlyZWN0bHkuICAKCjEuICBgUFVUIC9vYmplY3QveC90ZW1wbGF0ZS97dGVtcGxhdGVJZH0ve29iamVjdElkfS9gIHRvIGNyZWF0ZSBhIERyYWZ0IGluc2lkZSBPYmplY3QgKGFkZGVkIGlmIG1pc3NpbmcpCgpZb3UgY2Fubm90ICoqdXBkYXRlKiogb2JqZWN0cyBvciBvYmplY3QgdmVyc2lvbnMgZGlyZWN0bHkuICAKCjEuICBgUFVUIC9vYmplY3QveC97b2JqZWN0SWR9L2RyYWZ0L3tkcmFmdElkfS9gIHRvIHB1Ymxpc2ggRHJhZnQgdG8gT2JqZWN0IChhcHBlbmQgdG8gdmVyc2lvbiBjaGFpbikKMi4gIGBQVVQgL29iamVjdC94L3tvYmplY3RJZH0vdmVyc2lvbi97dmVyc2lvbn0vYCB0byByZXZlcnQgT2JqZWN0IHRvIHZlcnNpb24gKHRyaW0gdmVyc2lvbiBjaGFpbikKCkRyYWZ0cyBhcmUgZGlzY2FyZGVkIGFmdGVyIHB1Ymxpc2hpbmcuICAKU2NoZW1hcyBjYW4gb25seSBiZSBjcmVhdGVkIGFuZCBtb2RpZmllZCBpbiBUZW1wbGF0ZXMuCgp8ICAgICAgICAgIHwgVGVtcGxhdGUgICB8IERyYWZ0ICAgICAgIHwgT2JqZWN0ICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IERhdGEgICAgIHwgRWRpdGFibGUgICB8IEVkaXRhYmxlICAgIHwgUmVhZC1vbmx5ICh2ZXJzaW9uaXplZCkgfAp8IFNjaGVtYSAgIHwgRWRpdGFibGUgICB8IFJlYWQtb25seSAgIHwgUmVhZC1vbmx5ICh2ZXJzaW9uaXplZCkgfAoKRGF0YSBtaWdyYXRpb24gaXMgdGhlIHNhbWUgYXMgdXNlciBpbnB1dCBzbyBpdCBtdXN0IGJlIGhhbmRsZWQgYXQgdGhlIGFwcGxpY2F0aW9uIGxldmVsLCBub3QgYXQgdGhlIEFQSSBsZXZlbDogIAoKMS4gIGBQT1NUIHwgR0VUIC9vYmplY3QveC90ZW1wbGF0ZS97dGVtcGxhdGVJZH0vYCAtIChvbmNlKSBQcmVwYXJlIG5ldyBzY2hlbWEgYW5kIGRlZmF1bHQgZGF0YQoyLiAgYEdFVCAvb2JqZWN0L3gve29iamVjdElkfS9gIC0gRmV0Y2ggY3VycmVudCBvYmplY3QgZGF0YSwgc2NoZW1hIGFuZCBzY2hlbWEgSUQKMy4gIEluc2lkZSBhcHBsaWNhdGlvbiAtIG1pZ3JhdGUgZGF0YSB1c2luZyAjMSBhbmQgIzIKNC4gIGBQVVQgL29iamVjdC94L3RlbXBsYXRlL3t0ZW1wbGF0ZUlkfS97b2JqZWN0SWR9L2Agd2l0aCAqKnB1Ymxpc2g9dHJ1ZSoqIC0gVXBkYXRlIE9iamVjdCB3aXRoIG5ldyBkYXRhICYgc2NoZW1hCgpBcHBsaWNhdGlvbnMgc2hvdWxkIGRpc3BsYXkgYW55IHNjaGVtYS4gIApEYXRhIG1pZ3JhdGlvbiBzaG91bGQgYmUgcGVyZm9ybWVkIG9uIHVzZXIgcmVxdWVzdC4KCiMjIyAyLjIuIFRyZWVzCgoqKlRyZWVzKiogZGVmaW5lIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBPYmplY3RzLiAgCgpDb25maWd1cmUgdGhlIGJyYW5jaCBzdHJ1Y3R1cmUgdXNpbmcgY2FyZGluYWxpdHkuIFVzZSBleGNsYW1hdGlvbiBtYXJrIChgIWApIGZvciAxOgoKMS4gICoqbWFueS10by1tYW55KiogRXhhbXBsZTogYC90cmVlL3RlYW0vdXNlcmAKMi4gICoqb25lLXRvLW1hbnkqKiBFeGFtcGxlOiBgL3RyZWUvb3JnYW5pemF0aW9uIS90ZWFtYAozLiAgKiptYW55LXRvLW9uZSoqIEV4YW1wbGU6IGAvdHJlZS91c2VyLyFsZXZlbGAKNC4gICoqb25lLXRvLW9uZSoqIEV4YW1wbGU6IGAvdHJlZS91c2VyIS8hbG9nb2AKCioqTm90ZSoqOiB0aGUgZXhjbGFtYXRpb24gbWFyayBzeW50YXggaXMgb25seSB1c2VkIGluc2lkZSB0aGUgYGNvbmZpZy55YW1sYCBmaWxlIHRvIGRlZmluZSBjYXJkaW5hbGl0eSEgCkZpbmFsIFJFU1QgQVBJIGVuZHBvaW50cyB1c2Ugb25seSB0aGUgcHJlLWRlZmluZWQgb2JqZWN0IG5hbWVzLCBpLmUuIGAvdHJlZS91c2VyL2xvZ29gIGluc3RlYWQgb2YgYC90cmVlL3VzZXIhLyFsb2dvYC4KCiMjIDMuIFNhbXBsZSBvdXRwdXQKCltUaGlzIE9wZW5BUEkgdjMgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9hcHAuc3dhZ2dlcmh1Yi5jb20vYXBpcy9tYXJraml2a28vYmJveC8wLjAuMSkgaXMgZ2VuZXJhdGVkIGJ5IApkZWZhdWx0IHdoZW4gZmlyc3QgZXhlY3V0aW5nIGBucG0gcnVuIGdlbmVyYXRlYC4K readmeEtag: '"c4fa00c20e727b562f452573a52481926d576109"' readmeLastModified: Thu, 03 Oct 2024 13:57:58 GMT repositoryId: 515061083 description: OpenAPI v3 generator for a simple REST API with Objects placed on a Tree created: '2022-07-18T06:28:45Z' updated: '2024-10-03T13:58:02Z' language: Mustache archived: false stars: 0 watchers: 1 forks: 0 owner: markjivko logo: https://avatars.githubusercontent.com/u/50949149?v=4 license: Apache-2.0 repoEtag: '"edd19fd83729e4d1d27627d344bf0400a559993a460b805f0a2b04d2dedbda01"' repoLastModified: Thu, 03 Oct 2024 13:58:02 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/tinello/jetty-embedded-openapi v3: true id: d10022293be2418556ad039c2a7af748 repositoryMetadata: base64Readme: >- IyBKZXR0eS1FbWJlZGRlZC1PcGVuQXBpCkFQSSBSZXN0IHdpdGggRWNsaXBzZSBKZXR0eSwgT3BlbiBBcGkgVmFsaWRhdGUuIAoKCiMjIFJlcXVpcmVtZW50cyA8YSBuYW1lPSJSZXF1aXJlbWVudHMiPjwvYT4KIyMjIFNvZnR3YXJlOiA8YSBuYW1lPSJTb2Z0d2FyZSI+PC9hPgotIE9wZW5KREsgMjAgd2l0aCBPcGVuSjkgLT4gaHR0cHM6Ly9kZXZlbG9wZXIuaWJtLmNvbS9sYW5ndWFnZXMvamF2YS9zZW1lcnUtcnVudGltZXMvZG93bmxvYWRzLwotIERvY2tlciA0LjI4LjAgLT4gaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZGVza3RvcC9pbnN0YWxsL3VidW50dS8KCiMjIyBDb25maWd1cmUgSkRLIFZTQ29kZTogPGEgbmFtZT0iQ29uZmlndXJlSkRLdnNjb2RlIj48L2E+CgpDaGFuZ2UgLy52c2NvZGUvbGF1bmNoLmpzb24gZm9yIHlvdXIgSmF2YSBIb21lCgojIyMgQ29uZmlndXJlIEpESyBHcmFkbGU6IDxhIG5hbWU9IkNvbmZpZ3VyZUpES2dyYWRsZSI+PC9hPgoKQ2hhbmdlIGdyYWRsZS5wcm9wZXJ0aWVzIGZvciB5b3VyIEphdmEgSG9tZQoKIyMjIEVudmlyb25tZW50IHZhcmlhYmxlczogPGEgbmFtZT0iRW52aXJvbm1lbnRWYXJpYWJsZXMiPjwvYT4KLSBEQl9VUkw9bG9jYWxob3N0OjU0MzIvcG9zdGdyZXMKLSBEQl9VU0VSPXBvc3RncmVzCi0gREJfUEFTUz1teXNlY3JldHBhc3N3b3JkCgojIyMgU3RhcnQgUG9zdGdyZVNRTCA8YSBuYW1lPSJTdGFydFBvc3RncmVTUUwiPjwvYT4KYGBgYmFzaApkb2NrZXIgcnVuIC0tbmFtZSBqZXR0eS1vcGVuYXBpLXBvc3RncmVzIC1wIDU0MzI6NTQzMiAtZSBQT1NUR1JFU19QQVNTV09SRD1teXNlY3JldHBhc3N3b3JkIC1kIHBvc3RncmVzOjE2LjMtYWxwaW5lMy4xOApgYGAKCgojIyMgU3RhcnQgYXBwbGljYXRpb24gPGEgbmFtZT0iU3RhcnRBcHBsaWNhdGlvbiI+PC9hPgpgYGBiYXNoCkRCX1VSTD0ibG9jYWxob3N0OjU0MzIvcG9zdGdyZXMiIERCX1VTRVI9cG9zdGdyZXMgREJfUEFTUz1teXNlY3JldHBhc3N3b3JkIC4vZ3JhZGxldyBydW4KYGBgCgojIyBEZXZlbG9wbWVudCA8YSBuYW1lPSJkZXZlbG9wbWVudCI+PC9hPgojIyMgVmlzdWFsIFN0dWRpbyBDb2RlIEV4dGVuc2lvbnM6IDxhIG5hbWU9InZzY29kZS1leHRlbnNpb25zIj48L2E+CiMjIyMgRXh0ZW5zaW9uIFBhY2sgZm9yIEphdmEKCkluc3RhbGwgIkV4dGVuc2lvbiBQYWNrIGZvciBKYXZhIiBmcm9tIE1pY3Jvc29mdDogaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPXZzY2phdmEudnNjb2RlLWphdmEtcGFjawoKIyMjIyBHcmFkbGUgRXh0ZW5zaW9uIFBhY2sKCkluc3RhbGwgIkdyYWRsZSBFeHRlbnNpb24gUGFjayIgZnJvbSBSaWNoYXJkIFdpbGxpcyBodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9cmljaGFyZHdpbGxpcy52c2NvZGUtZ3JhZGxlLWV4dGVuc2lvbi1wYWNrCgoKIyMgRW5kcG9pbnRzCgp8IE5hbWUgICAgICAgICAgICAgICAgIHwgRW5kcG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IFNlcnZpY2UgSW5mbyAgICAgICAgIHwgaHR0cDovL2xvY2FsaG9zdDo4MDgwLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo= readmeEtag: '"53a5a6c822827f5767726b806ed18d85e9f1f568"' readmeLastModified: Thu, 25 Jul 2024 22:38:04 GMT repositoryId: 833280887 description: 'API Rest with Eclipse Jetty, Open Api Validate. ' created: '2024-07-24T18:00:50Z' updated: '2025-12-22T22:41:28Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: tinello logo: https://avatars.githubusercontent.com/u/38929644?v=4 license: Unlicense repoEtag: '"f40bbef934a218fb9f4440fe118d0d398e6b5d6a000af679c5e0f4876c11cb48"' repoLastModified: Mon, 22 Dec 2025 22:41:28 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/hackolade/eventbridge v3: true repositoryMetadata: base64Readme: >- IyBBV1MgRXZlbnRCcmlkZ2UgU2NoZW1hIFJlZ2lzdHJ5CgpQbHVnaW4gdG8gZW5hYmxlIEV2ZW50QnJpZGdlIFNjaGVtYSBSZWdpc3RyeSBhcyBhIHRhcmdldCBpbiBbSGFja29sYWRlXShodHRwczovL2hhY2tvbGFkZS5jb20pIGRhdGEgbW9kZWxpbmcuICBSZXF1aXJlcyBwcmlvciBkb3dubG9hZCBvZiB0aGUgSGFja29sYWRlIGFwcGxpY2F0aW9uIGZyb20gb3VyIFtkb3dubG9hZCBwYWdlXShodHRwczovL2hhY2tvbGFkZS5jb20vZG93bmxvYWQuaHRtbCkKClRoaXMgcGx1Z2luIGlzIGZvciBPcGVuQVBJIDMgc2NoZW1hcyBzdG9yZWQgaW4gdGhlIFNjaGVtYSBSZWdpc3RyeSBvZiBBV1MgRXZlbnRCcmlkZ2UuICAKCkhhY2tvbGFkZSBleHBvc2VzIGl0cyBjb3JlIGRhdGEgbW9kZWxpbmcgZW5naW5lIHRocm91Z2ggYSBwbHVnaW4gYXJjaGl0ZWN0dXJlLiAgRWFjaCBwbHVnaW4gYXBwbGllcyB0aGUgSGFja29sYWRlIGRhdGEgbW9kZWxpbmcgY2FwYWJpbGl0aWVzIHRvIGEgc3BlY2lmaWMgdGFyZ2V0IHRlY2hub2xvZ3ksIHdoZXRoZXIgZm9yIGRhdGEtYXQtcmVzdCAoZGF0YWJhc2VzKSBvciBkYXRhLWluLW1vdGlvbiAoY29tbXVuaWNhdGlvbnMuKSAgRWFjaCBwbHVnaW4gbWF0Y2hlcyB0aGUgc3BlY2lmaWMgYXNwZWN0cyBvZiB0aGUgdGFyZ2V0IGluIHRlcm1zIG9mIHRlcm1pbm9sb2d5LCBzdG9yYWdlIG1vZGVsLCBkYXRhIHR5cGVzLCBhbmQgY29tbXVuaWNhdGlvbiBwcm90b2NvbC4KClRvIGVuYWJsZSBkYXRhIG1vZGVsaW5nIGNhcGFiaWxpdGllcyBmb3IgYSB0YXJnZXQsIHlvdSBtdXN0IGZpcnN0IGRvd25sb2FkIGFuZCBpbnN0YWxsIHRoZSBwbHVnaW4sIGZvbGxvd2luZyB0aGVzZSBbaW5zdHJ1Y3Rpb25zXShodHRwczovL2hhY2tvbGFkZS5jb20vaGVscC9Eb3dubG9hZGFkZGl0aW9uYWxEQnRhcmdldHBsdWdpbi5odG1sICJQbHVnaW4gZG93bmxvYWQgaW5zdHJ1Y3Rpb25zIikuCgpQbHVnaW5zIGNhbiBiZSBjdXN0b21pemVkIGJ5IGZvbGxvd2luZyB0aGVzZSBbaW5zdHJ1Y3Rpb25zXShodHRwczovL2hhY2tvbGFkZS5jb20vaGVscC9Vc2VyZGVmaW5lZGN1c3RvbXByb3BlcnRpZXMuaHRtbCAiUGx1Z2luIGN1c3RvbWl6YXRpb24gaW5zdHJ1Y3Rpb25zIikuCg== readmeEtag: '"abfe7ebc8c4b41dc8cea01b071ca978632b79e91"' readmeLastModified: Fri, 09 Aug 2024 17:24:32 GMT repositoryId: 271966005 description: >- Hackolade(https://hackolade.com) plugin for AWS EventBridge Schema Registry created: '2020-06-13T07:58:44Z' updated: '2026-02-04T17:25:05Z' language: JavaScript archived: false stars: 0 watchers: 3 forks: 8 owner: hackolade logo: https://avatars.githubusercontent.com/u/20265734?v=4 license: NOASSERTION repoEtag: '"03a2e9c034a478030046b830971d7fa02e7ef45997c3f31fce5303508ee785b4"' repoLastModified: Wed, 04 Feb 2026 17:25:05 GMT foundInMaster: true category: - Server - Server Implementations id: a0a295c1b32b9cbaeb72282a09c7dcf2 - source: openapi3 tags repository: https://github.com/jayson-fong/khaopiak v3: true id: 78e4ffe126bc0aba2efc320a61599077 repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICAgPGgxPvCfjZwgS2hhb3BpYWs8L2gxPgo8L2Rpdj4KCkFuIGFjY291bnQtbGVzcyBhbmQgZW5kLXRvLWVuZCBlbmNyeXB0ZWQgc3RvcmFnZSBzeXN0ZW0gbGV2ZXJhZ2luZyBDbG91ZGZsYXJlIFdvcmtlcnMgd2l0aCBPcGVuQVBJIDMuMQp1c2luZyBbY2hhbmZhbmFdKGh0dHBzOi8vZ2l0aHViLmNvbS9jbG91ZGZsYXJlL2NoYW5mYW5hKSBhbmQgW0hvbm9dKGh0dHBzOi8vZ2l0aHViLmNvbS9ob25vanMvaG9ubykuCgo+IFshV0FSTklOR10gIAo+IEtoYW9waWFrIGlzIHN0aWxsIHVuZGVyZ29pbmcgaGVhdnksIGFjdGl2ZSBkZXZlbG9wbWVudCBhbmQgaXMgY3VycmVudGx5IG5vdCBpbiBhIHN0YWJsZSBzdGF0ZS4gSXQgc2hvdWxkICoqbm90KiogYmUKPiB1c2VkIGluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCBhdCB0aGlzIHRpbWUuCgo8aHIgLz4KCjxkaXYgYWxpZ249ImNlbnRlciI+Cgpb8J+SvCBQdXJwb3NlXSgjcHVycG9zZSkgfCBb8J+qgCBGZWF0dXJlc10oI2ZlYXR1cmVzKSB8IFvwn5uh77iPIFNlY3VyaXR5XSgjc2VjdXJpdHktY29uc2lkZXJhdGlvbnMpIHwgW/Cfj4EgR2V0IHN0YXJ0ZWRdKCNnZXQtc3RhcnRlZCkgfCBb8J+muiBDb250cmlidXRpbmddKCNjb250cmlidXRpbmcpCgo8L2Rpdj4KCjxociAvPgoKIyMgUHVycG9zZQoKS2hhb3BpYWsgaXMgYSB0ZW1wb3JhcnksIGludGVybWVkaWFyeSBmaWxlIHN0b3JhZ2Ugc3lzdGVtIGZvciB0cmFuc2ZlcnJpbmcgYmV0d2VlbiB0d28gZGV2aWNlcy4gSXQgd2FzIGRlc2lnbmVkCnByaW1hcmlseSB3aXRoIHByaW50aW5nIGF0IGhvdGVsIGJ1c2luZXNzIGNlbnRlcnMgaW4gbWluZCwgYnV0IGNhbiBjb3ZlciBhIHJhbmdlIG9mIHVzZSBjYXNlcyBmcm9tIGZpbGUgdHJhbnNmZXJzLAp2aWV3ZXJzaGlwIHZlcmlmaWNhdGlvbiwgYW5kIHNoYXJpbmcgc2VjcmV0cy4KCjxkZXRhaWxzIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiA4cHg7IG1hcmdpbi10b3A6IDRweDsiPgo8c3VtbWFyeT7wn5ao77iPIFVzZSBDYXNlOiBQcmludGluZyBhdCBob3RlbCBidXNpbmVzcyBjZW50ZXJzPC9zdW1tYXJ5PgoKSG90ZWwgYnVzaW5lc3MgY2VudGVycyBvZnRlbiByZXN0cmljdCBwcmludGluZyB0byBkZWRpY2F0ZWQsIHNoYXJlZCBkZXNrdG9wcywgcmVzdWx0aW5nIGluIHR3byBtYWluIG9wdGlvbnMgZm9yIHByaW50aW5nCmZyb20gYSBwZXJzb25hbCBkZXZpY2U6Cgo8dWw+CiAgIDxsaT5Db25uZWN0IHBlcnNvbmFsIGhhcmR3YXJlIChleC4gVVNCIHRodW1iIGRyaXZlcykgdG8gc2hhcmVkIGVxdWlwbWVudDwvbGk+CiAgIDxsaT5VcGxvYWQgZmlsZXMgdG8gYSB3ZWItYmFzZWQgaW50ZXJtZWRpYXJ5IGZvciBkb3dubG9hZDwvbGk+CjwvdWw+Cgo8aDM+UGVyc29uYWwgaGFyZHdhcmU8L2gzPgoKQ29ubmVjdGluZyBwZXJzb25hbCBoYXJkd2FyZSBtYXkgbm90IGFsd2F5cyBiZSBhbiBvcHRpb24sIHdoZXRoZXIgZHVlIHRvIHBvcnQgcmVzdHJpY3Rpb25zIChzdWNoIGFzIHNvZnR3YXJlCnJlc3RyaWN0aW9ucyBhbmQgdGhlIGxhY2sgb2YgYSBwaHlzaWNhbCBwb3J0KSBvciB0aGUgbGFjayBvZiBhIHBoeXNpY2FsIG1lZGl1bSAoaS5lLiBjYWJsaW5nIG9yIGRyaXZlcykuIFNoYXJlZCBkZXZpY2VzCm1heSBhbHNvIGhhcmJvciBtYWx3YXJlLCBzdGVhbGluZyBmaWxlcyBhbmQgcG90ZW50aWFsbHkgaW5mZWN0aW5nIGNvbm5lY3RlZCBkZXZpY2VzLgoKPGgzPldlYi1iYXNlZCBwb3J0YWxzPC9oMz4KCkxvZ2dpbmcgaW50byB3ZWItYmFzZWQgcG9ydGFscyBzdWNoIGFzIEdvb2dsZSBEcml2ZSwgQm94LCBTaGFyZVBvaW50LCBQcm90b24gRHJpdmUsIGFuZCBEcm9wYm94IHJlcXVpcmVzIGlucHV0dGluZwpwZXJzb25hbCBsb2dpbiBjcmVkZW50aWFscyBhbmQgZ3JhbnRzIGV4Y2Vzc2l2ZSBhY2Nlc3MgdG8gZmlsZXMgYWxvbmdzaWRlIGFkZGl0aW9uYWwgc2VydmljZXMsIHN1Y2ggYXMgZW1haWwuIFdoZW4KcGFzc3dvcmRzIGFyZSBzaGFyZWQsIHN0b2xlbiBjcmVkZW50aWFscyBtYXkgbGVhZCB0byBmdXJ0aGVyIGNvbXByb21pc2UsIHN1Y2ggYXMgZW5hYmxpbmcgbG9nb24gdG8gZmluYW5jaWFsIGFjY291bnRzLgoKV2hpbGUgdGhlc2Ugd2ViLWJhc2VkIHNlcnZpY2VzIG9mdGVuIHByb3ZpZGUgc2hhcmVhYmxlIGxpbmtzLCB0aGV5IGFyZSBvZnRlbiB0b28gbG9uZyBvciBjb21wbGljYXRlZCB0byB0eXBlLCBzdWNoIGFzCnRoaXMgR29vZ2xlIERyaXZlIHNoYXJlIGxpbms6Cgo8cHJlPmh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvdDl0ckI4bEtvYUJfa0lSazZGZUZsdHFtMVRHZHNDcEtvbEhHd2NwVktYUEU8L3ByZT4KCldoZW4gZW5kLXVzZXJzIGluY29ycmVjdGx5IHR5cGUgYSBjaGFyYWN0ZXIgb2YgdGhlc2UgVVJMcywgaXQgaXMgb2Z0ZW4gZGlmZmljdWx0IHRvIGlkZW50aWZ5IHRoZSBzb3VyY2Ugb2YgZXJyb3IuIFRvCm1pdGlnYXRlIHRoaXMgaXNzdWUsIGEgbGluayBzaG9ydGVuZXIgY2FuIGJlIHVzZWQ7IGhvd2V2ZXIsIGl0IGluY3JlYXNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgcmFuZG9tbHkgc3R1bWJsaW5nIHVwb24KdGhlIGRvY3VtZW50LCBpbnZvbHZlcyBhbiBhZGRpdGlvbmFsIHBhcnR5LCBhbmQgbWF5IGJlIHByZWRpY3RhYmxlLgoKU2hhcmVhYmxlIGxpbmtzIG9mdGVuIGRvIG5vdCBleHBpcmUsIGFsbG93aW5nIGEgdGhyZWF0IGFjdG9yIHRvIHJlZ2FpbiBhY2Nlc3MgYWZ0ZXIgdGhlIGluaXRpYWwgZG93bmxvYWQsIHN1Y2ggYXMKdGhyb3VnaCBicm93c2VyIGhpc3RvcnkuCgo8aDM+SG93IEtoYW9waWFrIGhlbHBzPC9oMz4KCktoYW9waWFrIGFsbGV2aWF0ZXMgdGhlc2UgaXNzdWVzIHRocm91Z2ggZW5hYmxpbmcgdGhlIHNlYW1sZXNzIGVuZC10by1lbmQgZW5jcnlwdGlvbiBvZiBkb2N1bWVudHMgYWNjZXNzZWQgdGhyb3VnaAplYXNpbHktdHlwZWQsIG9uZS10aW1lLXVzZSBCSVAzOSBtbmVtb25pY3MsIHN1Y2ggYXM6Cgo8cHJlPm9yY2hhcmQgaG9tZSBwaWN0dXJlIG1vdmllIG9ubHkgd2hhdCBiZWxpZXZlIG9uaW9uIHBoeXNpY2FsIGRlZnkgaG9sZSBhbW9uZyBjbGltYiBicmFuZCBtaWxsaW9uIGVkZ2UgYW5jaG9yIHVwZ3JhZGUgc2FuZCBhd2FrZSBsb29wIGxheWVyIHBhbnRoZXIgc29kYTwvcHJlPgoKVGhpcyBtZWFucyB0aGF0IGVuZC11c2VycyBuZWVkIG5vdCByZWZlcmVuY2UgYSByYW5kb20gY2hhcmFjdGVyLWJ5LWNoYXJhY3RlciBzdHJpbmcsIGJ1dCBrbm93biB3b3JkcyB0aGV5IGNhbiBxdWlja2x5CnR5cGUgYW5kIHJlbWVtYmVyIHRoZSBzcGVsbGluZyBvZi4gQXMgYWxsIHdvcmRzIGNhbiBiZSBpZGVudGlmaWVkIHVzaW5nIHRoZWlyIGZpcnN0IHRocmVlIGxldHRlcnMsIEtoYW9waWFrIGNhbgphdXRvbWF0aWNhbGx5IGNvcnJlY3QgdHlwb3MuCgpEdXJpbmcgdGhpcyBwcm9jZXNzLCBoYXJkd2FyZSBtYW5pcHVsYXRpb24gaXMgbm90IHJlcXVpcmVkLCB1c2VycyBkbyBub3QgbmVlZCB0byBlbnRlciBsb2dvbiBjcmVkZW50aWFscyBiZXNpZGVzIGEKdW5pcXVlLCBleHBpcmluZyBtbmVtb25pYywgYW5kIG1uZW1vbmljcyBjYW5ub3QgYmUgcmV1c2VkIHRvIGRvd25sb2FkIHRoZSBzYW1lIHVwbG9hZC4KCjwvZGV0YWlscz4KCjxkZXRhaWxzIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiA4cHg7IG1hcmdpbi10b3A6IDRweDsiPgo8c3VtbWFyeT7wn6SdIFVzZSBDYXNlOiBTZWNyZXRzIGRpc3RyaWJ1dGlvbjwvc3VtbWFyeT4KCktoYW9waWFrIGNhbiBiZSB1c2VkIHRvIHNoYXJlIHNlY3JldHMgaW4gYW4gZW52aXJvbm1lbnQgd2hlcmUgY29tbXVuaWNhdGlvbnMgaW50ZWdyaXR5IGlzIGd1YXJhbnRlZWQ7IGhvd2V2ZXIsCmNvbmZpZGVudGlhbGl0eSBpcyBzdXNjZXB0aWJsZSB0byBjb21wcm9taXNlLCBzdWNoIGFzIGNvbW11bmljYXRpbmcgdm9jYWxseSBpbiBhbiBvcGVuIG9mZmljZSwgb24gdGhlIGNvbmRpdGlvbiB0aGF0IHRoZQpzZWNyZXQgaXMgbm90IG9mIHZhbHVlIGltbWVkaWF0ZSB2YWx1ZS4KClRoaXMgbGV2ZXJhZ2VzIEtoYW9waWFrJ3MgZXhwaXJpbmcgbW5lbW9uaWNzLCB0aHVzIGlmIHRoZSBpbnRlbmRlZCByZWNlaXZlciBzdWNjZXNzZnVsbHkgZG93bmxvYWRzIGZyb20gdGhlIEtoYW9waWFrCnNlcnZlciwgaXQgY2FuIGJlIGFzc3VtZWQgdGhhdCBvbmx5IHRoZXkgaGF2ZSBpdC4gVGhlIHJlY2VpdmVyIGNhbiB0aGVuIGNvbW11bmljYXRlIGJhY2sgdG8gdGhlIHNlbmRlciB0byBjb25maXJtCnJlY2VpcHQgYW5kIHVzZSB0aGUgc2VjcmV0LgoKSWYgdGhlIHNlY3JldCBmb3IgdHJhbnNtaXNzaW9uIGlzIG9mIGltbWVkaWF0ZSB2YWx1ZSwgdHdvIEtoYW9waWFrIHVwbG9hZHMgY2FuIGJlIHVzZWQgZm9yIHNlY3VyZSB0cmFuc21pc3Npb24uIEZpcnN0LAp0cmFuc21pdHRpbmcgYSBzZWNyZXQgb2Ygbm8gaW1tZWRpYXRlIHZhbHVlOiB0aGUgY2xpZW50LXNpZGUgbW5lbW9uaWMgZm9yIGFuIGludGVuZGVkIHVwY29taW5nIHRyYW5zbWlzc2lvbi4gSWYgcmVjZWlwdAppcyBjb25maXJtZWQgYnkgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgdGhhdCBjbGllbnQtc2lkZSBtbmVtb25pYyBjYW4gdGhlbiBiZSB1c2VkIHRvIGVuY3J5cHQgdGhlIGFjdHVhbCBzZWNyZXQKY2xpZW50LXNpZGUgZm9yIHVwbG9hZCB0byBLaGFvcGlhay4KCjwvZGV0YWlscz4KCjxkZXRhaWxzIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiA4cHg7IG1hcmdpbi10b3A6IDRweDsiPgo8c3VtbWFyeT7inIUgVXNlIENhc2U6IENvbmZpcm1lZCBmaWxlIGFjY2Vzczwvc3VtbWFyeT4KCkV4cGlyaW5nIG1uZW1vbmljcyBlbmFibGVzIGNvbmZpcm1lZCBmaWxlIGFjY2VzcyB0aHJvdWdoIHVzaW5nIHRoZSBLaGFvcGlhayBzZXJ2ZXIncyBmaWxlIGV4aXN0YW5jZSBjaGVja2luZy4gSWYKS2hhb3BpYWsgcmVwb3J0cyB0aGF0IGEgZmlsZSBleGlzdHMsIGl0IGhhcyBub3QgeWV0IGJlZW4gZG93bmxvYWRlZC4gSWYgaXQgcmVwb3J0cyB0aGF0IGEgZmlsZSBkb2VzIG5vdCBleGlzdCwgaXQKaW1wbGllcyB0aGF0IHRoZSBmaWxlIGhhcyBhbHJlYWR5IGJlZW4gZG93bmxvYWRlZCBvciB0aGUgZmlsZSBleHBpcmVkLgoKPC9kZXRhaWxzPgoKIyMgRmVhdHVyZXMKCiMjIyBGb3IgZW5kLXVzZXJzCgo8ZGV0YWlscyBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQ7IGJvcmRlci1yYWRpdXM6IDhweDsgcGFkZGluZzogOHB4OyBtYXJnaW4tdG9wOiA0cHg7Ij4KPHN1bW1hcnk+8J+UkiBFbmQtdG8tZW5kIGVuY3J5cHRpb248L3N1bW1hcnk+CgpBIHBvcnRpb24gb2YgdGhlIG1uZW1vbmljIGlzIG5ldmVyIHRyYW5zbWl0dGVkIG92ZXIgdGhlIGludGVybmV0IGFuZCBpcyB1c2VkIHRvIGVuY3J5cHQgdGhlIGZpbGUgYmVmb3JlIHVwbG9hZGluZywKYWxsb3dpbmcgZW5kLXRvLWVuZCBlbmNyeXB0aW9uLiBBcyBhIHJlc3VsdCwgY29uZmlkZW50aWFsaXR5IG9mIHRoZSBvcmlnaW5hbCBmaWxlIGlzIHByb3RlY3RlZCBhcyBpdCBpcyBuZXZlciBtYWRlCmF2YWlsYWJsZSB0byBpbnRlcm1lZGlhcmllcy4KCkZvciBhbGwgcHVycG9zZXMgb2YgZW5jcnlwdGlvbiBhdCByZXN0LCBLaGFvcGlhayB1c2VzIHRoZSBBZHZhbmNlZCBFbmNyeXB0aW9uIFN0YW5kYXJkIChBRVMpLCB3aXRoIGFsbCBjbGllbnRzCnN1cHBvcnRpbmcgW0NpcGhlciBCbG9jayBDaGFpbmluZyAoQ0JDKV0oaHR0cHM6Ly9jc3JjLm5pc3QuZ292L3B1YnMvc3AvODAwLzM4L2EvZmluYWwpIGFuZApyZWNvbW1lbmRpbmcgW0dhbG9pcy9Db3VudGVyIE1vZGUgKEdDTSldKGh0dHBzOi8vY3NyYy5uaXN0Lmdvdi9wdWJzL3NwLzgwMC8zOC9kL2ZpbmFsKSB3aGVuIHBvc3NpYmxlLgoKPC9kZXRhaWxzPgoKPGRldGFpbHMgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkOyBib3JkZXItcmFkaXVzOiA4cHg7IHBhZGRpbmc6IDhweDsgbWFyZ2luLXRvcDogNHB4OyI+CjxzdW1tYXJ5PuKMmyBFeHBpcmluZyBmaWxlczwvc3VtbWFyeT4KCkJ5IGRlZmF1bHQsIGFsbCBmaWxlcyB1cGxvYWRlZCB0byBLaGFvcGlhayBldmVudHVhbGx5IGV4cGlyZS4gSWYgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGFuIGV4cGlyZWQgZmlsZSB3aGljaCBoYXMgbm90CmJlZW4gZGVsZXRlZCBmcm9tIHRoZSBLaGFvcGlhayBzZXJ2ZXIsIGl0IHdpbGwgYmUgaW1tZWRpYXRlbHkgZGVsZXRlZCBhbmQgYSByZXNwb25zZSB3aWxsIGJlIHJldHVybmVkIGFzIGlmIHRoZSBmaWxlIGRpZApub3QgZXhpc3QuCgpOb3RlOiBJdCBpcyBwb3NzaWJsZSBmb3IgYSBjbGllbnQgdG8gYXNzdW1lIHRoYXQgYSBmaWxlIGV4aXN0ZWQgYmFzZWQgb24gdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyB0aW1lIHJlcXVpcmVkIHRvCmNoZWNrIHdoZXRoZXIgdGhlIGZpbGUgZXhwaXJlZC4KCjwvZGV0YWlscz4KCjxkZXRhaWxzIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiA4cHg7IG1hcmdpbi10b3A6IDRweDsiPgo8c3VtbWFyeT7wn5eE77iPIFByb3RlY3RlZCBmaWxlIG1ldGFkYXRhPC9zdW1tYXJ5PgoKRmlsZSBuYW1lcyBhbmQgY29udGVudCB0eXBlcyBhcmUgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgcGF5bG9hZCBmb3IgZW5jcnlwdGlvbiBhdCBib3RoIHRoZSBjbGllbnQgYW5kIHNlcnZlciBzaWRlcy4gQXMKYSByZXN1bHQsIGF0IHJlc3QsIGZpbGUgY29udGVudCBjYW5ub3QgYmUgZWFzaWx5IGluZmVycmVkLgoKPC9kZXRhaWxzPgoKPGRldGFpbHMgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkOyBib3JkZXItcmFkaXVzOiA4cHg7IHBhZGRpbmc6IDhweDsgbWFyZ2luLXRvcDogNHB4OyI+CjxzdW1tYXJ5PvCfk48gQ29uZmlndXJlIG1uZW1vbmljIGxlbmd0aHM8L3N1bW1hcnk+CgpNbmVtb25pY3MgY2FuIHJhbmdlIGZyb20gMjQgdG8gNDggd29yZHMgd2hlcmUgZW5kLXVzZXJzIGNhbiBzcGVjaWZ5IHRoZSBhbW91bnQgb2Ygd29yZHMgZm9yIHRoZSBjbGllbnQgYW5kIHNlcnZlcgppbmRlcGVuZGVudGx5LiBBcyBhIHJlc3VsdCwgdXNlcnMgY2FuIGNob29zZSB0byBpbmNyZWFzZSBlbmNyeXB0aW9uIGtleSBsZW5ndGhzIGZvciBtb3JlIHNlbnNpdGl2ZSBmaWxlcyBmb3IgaW5jcmVhc2VkCmFzc3VyYW5jZSB0aGF0IGRhdGEgY29uZmlkZW50aWFsaXR5IGlzIHByb3RlY3RlZC4KCjwvZGV0YWlscz4KCjxkZXRhaWxzIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiA4cHg7IG1hcmdpbi10b3A6IDRweDsiPgo8c3VtbWFyeT7wn5i14oCN8J+SqyBGaWxlIG9ic2N1cml0eTwvc3VtbWFyeT4KCkVuZC11c2VycyBjYW4gc3BlY2lmeSBhIG51bWJlciBvZiByYW5kb21pemVkIHBhZGRpbmcgYnl0ZXMgZm9yIGFwcGVuZGluZyB0byB0aGVpciBkYXRhIGF0IGJvdGggdGhlIGNsaWVudCBhbmQgc2VydmVyCmxldmVscywgYWx0ZXJpbmcgZmlsZSBzaXplcyBhbmQgaGVscGluZyBvYnNjdXJlIHRoZSBpZGVudGl0eSBvZiB0aGUgb3JpZ2luYWwgZmlsZSB0aGF0IHdhcyB1cGxvYWRlZC4gQXMgYSByZXN1bHQsIHRoZQpjb250ZW50IGNsaWVudHMgdXBsb2FkIHRvIHRoZSBLaGFvcGlhayBzZXJ2ZXIgaXMgYWx3YXlzIG1vcmUgdGhhbiBvciBlcXVhbCB0byB0aGUgYW1vdW50IGJ5dGVzIG9mIHRoZSBvcmlnaW5hbCBmaWxlLCBhbmQKdGhlIGFtb3VudCBvZiBieXRlcyB0aGUgZG93bmxvYWQgY2xpZW50IHJlY2VpdmVzIGlzIGFsd2F5cyBtb3JlIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFtb3VudCBvZiBieXRlcyB0aGF0IHdhcyB1cGxvYWRlZCwKbWFraW5nIGl0IGRpZmZpY3VsdCB0byBpZGVudGlmeSB0aGUgb3JpZ2luYWwgZmlsZSAoYW5kIHRoZXJlYnkgYXNzdW1lIHRoZSBvcmlnaW5hbCBmaWxlJ3MgY29udGVudHMpIGJhc2VkIG9uIHN0cmljdGx5CmZpbGUgc2l6ZS4KCjwvZGV0YWlscz4KCiMjIyBGb3IgYWRtaW5pc3RyYXRvcnMKCjxkZXRhaWxzIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiA4cHg7IG1hcmdpbi10b3A6IDRweDsiPgo8c3VtbWFyeT7wn5SRIFJlc3RyaWN0IGFjY2VzcyB3aXRoIENsb3VkZmxhcmUgQWNjZXNzPC9zdW1tYXJ5PgoKQ2xvdWRmbGFyZSBaZXJvIFRydXN0IGN1c3RvbWVycyBjYW4gb3B0aW9uYWxseSByZXF1aXJlIGF1dGhlbnRpY2F0aW9uIHRocm91Z2ggQ2xvdWRmbGFyZSBBY2Nlc3MgYXMgYSBzZWxmLWhvc3RlZAphcHBsaWNhdGlvbi4gS2hhb3BpYWsgd2lsbCBjaGVjayBmb3IgYSBgY2YtYWNjZXNzLWF1dGhlbnRpY2F0ZWQtdXNlci1lbWFpbGAgaGVhZGVyIGNvbnRhaW5pbmcgYSB2YWxpZCBlbWFpbC4gQ2xvdWRmbGFyZQpwcmV2ZW50cyBpbXBlcnNvbmF0aW5nIHRocm91Z2ggc3RyaXBwaW5nIHRoZSBoZWFkZXIgZnJvbSBjbGllbnQgcmVxdWVzdHMuCgo8L2RldGFpbHM+Cgo8ZGV0YWlscyBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQ7IGJvcmRlci1yYWRpdXM6IDhweDsgcGFkZGluZzogOHB4OyBtYXJnaW4tdG9wOiA0cHg7Ij4KPHN1bW1hcnk+4piB77iPIFNlcnZlcmxlc3MgZGVwbG95bWVudDwvc3VtbWFyeT4KCktoYW9waWFrIGlzIGRlc2lnbmVkIGZvciBkZXBsb3ltZW50IG9uIFtDbG91ZGZsYXJlIFdvcmtlcnNdKGh0dHBzOi8vd29ya2Vycy5jbG91ZGZsYXJlLmNvbS8pLApsZXZlcmFnaW5nIFtDbG91ZGZsYXJlIFIyXShodHRwczovL2RldmVsb3BlcnMuY2xvdWRmbGFyZS5jb20vcjIvKSBmb3IgZmlsZSBzdG9yYWdlCmFuZCBbQ2xvdWRmbGFyZSBRdWV1ZXNdKGh0dHBzOi8vZGV2ZWxvcGVycy5jbG91ZGZsYXJlLmNvbS9xdWV1ZXMvKSBmb3IgZmlsZSBleHBpcnksIGFsbG93aW5nIGRlcGxveW1lbnQgYW5kIGF1dG9tYXRlZApzY2FsaW5nIHdpdGhvdXQgaGF2aW5nIHRvIG1haW50YWluIHNlcnZlcnMuCgo8L2RldGFpbHM+Cgo8ZGV0YWlscyBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQ7IGJvcmRlci1yYWRpdXM6IDhweDsgcGFkZGluZzogOHB4OyBtYXJnaW4tdG9wOiA0cHg7Ij4KPHN1bW1hcnk+8J+SsCBEZXBsb3kgZm9yIGZyZWU8L3N1bW1hcnk+CgpGb3Igc21hbGwtc2NhbGUgdXNlcnMsIEtoYW9waWFrIGNhbiBiZSBkZXBsb3llZCBvbiBbQ2xvdWRmbGFyZSBXb3JrZXJzXShodHRwczovL3dvcmtlcnMuY2xvdWRmbGFyZS5jb20vKSdzIGZyZWUgdGllcjsKaG93ZXZlciwgcmVxdWlyZXMgZGlzYWJsaW5nIEtoYW9waWFrJ3MgYXV0b21hdGVkIGV4cGlyeS1iYXNlZCBkZWxldGlvbiBzeXN0ZW0gYXMgaXQKdXNlcyBbQ2xvdWRmbGFyZSBRdWV1ZXNdKGh0dHBzOi8vZGV2ZWxvcGVycy5jbG91ZGZsYXJlLmNvbS9xdWV1ZXMvKSwgYSBXb3JrZXJzIFBhaWQgZmVhdHVyZS4gSG93ZXZlciwgYXV0b21hdGVkIGZpbGUKZGVsZXRpb24gY2FuIHN0aWxsIGJlIGFjY29tcGxpc2hlZCB0aHJvdWdoCnVzaW5nIFtDbG91ZGZsYXJlIFIyJ3Mgb2JqZWN0IGxpZmVjeWNsZSBydWxlc10oaHR0cHM6Ly9kZXZlbG9wZXJzLmNsb3VkZmxhcmUuY29tL3IyL2J1Y2tldHMvb2JqZWN0LWxpZmVjeWNsZXMvKSBhbmQKZXhwaXJlZCBmaWxlcyB3aWxsIHJlbWFpbiBpbmFjY2Vzc2libGUgdG8gY2xpZW50cy4KCjwvZGV0YWlscz4KCiMjIyBGb3IgYWxsCgo8ZGV0YWlscyBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQ7IGJvcmRlci1yYWRpdXM6IDhweDsgcGFkZGluZzogOHB4OyBtYXJnaW4tdG9wOiA0cHg7Ij4KPHN1bW1hcnk+8J+TliBPcGVuIHNvdXJjZTwvc3VtbWFyeT4KClVubGlrZSBjb21tZXJjaWFsbHkgYXZhaWxhYmxlIHByb2R1Y3RzLCBLaGFvcGlhayBpcyBvcGVuIHNvdXJjZS4gT3JnYW5pemF0aW9ucyBhbmQgZW5kLXVzZXJzIG5lZWQgbm90IGdvIHNvbGVseSBiYXNlZCBvbgpwcm9kdWN0IGNsYWltcywgYnV0IHZlcmlmeSB0aGVtIHRocm91Z2ggYW5hbHl6aW5nIGJvdGggY29kZSBhbmQgaW5mcmFzdHJ1Y3R1cmUgZGVzaWduLiBJZiBhIHByb3ZpZGVyIGhvc3RpbmcgYSBLaGFvcGlhawpzZXJ2ZXIgY2Fubm90IGJlIHRydXN0ZWQsIGEgcHJpdmF0ZSBpbnN0YW5jZSBjYW4gcXVpY2tseSBiZSBkZXBsb3llZC4KCjwvZGV0YWlscz4KCiMjIFNlY3VyaXR5IGNvbnNpZGVyYXRpb25zCgo8ZGV0YWlscyBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQ7IGJvcmRlci1yYWRpdXM6IDhweDsgcGFkZGluZzogOHB4OyBtYXJnaW4tdG9wOiA0cHg7Ij4KPHN1bW1hcnk+8J+UkCBDcnlwdG9ncmFwaGljIHN0cmVuZ3RoIG9mIGVuY3J5cHRpb24gYWxnb3JpdGhtczwvc3VtbWFyeT4KCktoYW9waWFrIHN1cHBvcnRzIEFFUy1DQkMgYW5kIEFFUy1HQ00gYXMgdGhleSBhcmUgYXZhaWxhYmxlIHRocm91Z2gKdGhlIFtTdWJ0bGVDcnlwdG8gaW50ZXJmYWNlIG9mIHRoZSBXZWIgQ3J5cHRvIEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1N1YnRsZUNyeXB0byk6Cgo8dWw+CiAgIDxsaT48c3Ryb25nPlJTQS1PQUVQPC9zdHJvbmc+IGlzIHN1cHBvcnRlZCBhbmQgcmVxdWlyZWQgd2hlbiBlbmNyeXB0aW5nIHBheWxvYWRzIHRvIHRoZSBzZXJ2ZXIgb3IgcmVxdWVzdGluZyBhbiBlbmNyeXB0ZWQgcmVzcG9uc2UuIEl0IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGF0LXJlc3Qgc3RvcmFnZSBhcyBpdCBpcyBhIHB1YmxpYy1rZXkgZW5jcnlwdGlvbiBzeXN0ZW0sIHdoZXJlIGN1cnJlbnQgZ3VpZGVsaW5lcyByZWNvbW1lbmQgYSBtaW5pbXVtIG9mIDIwNDgga2V5IGJpdHMuIFRvIG1lZXQgdGhpcywgMTkyKyBCSVAzOSB3b3JkcyB3b3VsZCBiZSByZXF1aXJlZCwgd2hpY2ggaXMgdW5yZWFzb25hYmxlIGZvciBhbiBlbmQtdXNlci4gV2hpbGUgY2xpZW50IGRldmVsb3BlcnMgbWF5IHVzZSBpdCBmb3IgY2xpZW50LXNpZGUgZW5jcnlwdGlvbiwgc2VydmVyLXNpZGUgbW5lbW9uaWMtYmFzZWQgZW5jcnlwdGlvbi9kZWNyeXB0aW9uIHdpdGggUlNBLU9BRVAgd2lsbCBub3QgYmUgb2ZmZXJlZC48L2xpPgogICA8bGk+PHN0cm9uZz5BRVMtQ1RSPC9zdHJvbmc+IGlzIG5vdCBzdXBwb3J0ZWQgYXMgaXQgaXMgbWFsbGVhYmxlLCBwb3RlbnRpYWxseSBhbGxvd2luZyB0aGUgbWVhbmluZyBvZiB0aGUgY2lwaGVydGV4dCB0byBiZSBjaGFuZ2VkLjwvbGk+CiAgIDxsaT48c3Ryb25nPkFFUy1DQkM8L3N0cm9uZz4gaXMgc3VwcG9ydGVkIGFzIGEgY2xpZW50LXNpZGUgZW5jcnlwdGlvbiBhbGdvcml0aG0uIFdoaWxlIEtoYW9waWFrIGlzIGdlbmVyYWxseSBub3QgaXRzZWxmIHZ1bG5lcmFibGUgdG8gYSBwYWRkaW5nIG9yYWNsZSBhdHRhY2ssIGNsaWVudCBkZXZlbG9wZXJzIHNob3VsZCBiZSBhd2FyZSBvZiB0aGUgYWxnb3JpdGhtJ3MgdnVsbmVyYWJpbGl0eS48L2xpPgogICA8bGk+PHN0cm9uZz5BRVMtR0NNPC9zdHJvbmc+IGlzIHN1cHBvcnRlZCBhcyBib3RoIGEgY2xpZW50IGFuZCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGFsZ29yaXRobS4gQUVTLUdDTSBwcm92aWRlcyBhdXRoZW50aWNhdGVkIGVuY3J5cHRpb24gd2hpY2ggaGVscHMgYXV0aGVudGljYXRlIHRoZSBjaXBoZXJ0ZXh0LiBBZGRpdGlvbmFsIGRlc2lnbiBjb25zaWRlcmF0aW9ucyBhcmUgbmVjZXNzYXJ5IHdoZW4gaXQgaXMgcG9zc2libGUgZm9yIGEga2V5IGFuZCBpbml0aWFsaXphdGlvbiB2ZWN0b3IgKElWKSBtYXkgcG90ZW50aWFsbHkgYmUgcmV1c2VkOyBob3dldmVyLCBLaGFvcGlhayBnZW5lcmF0ZXMgYSByYW5kb20ga2V5IGFuZCBJViBmb3IgZWFjaCB1cGxvYWQuPC9saT4KPC91bD4KClRoZSBPcGVuU1NMIGVuYyBwcm9ncmFtIGRvZXMgbm90IHN1cHBvcnQgYXV0aGVudGljYXRlZCBlbmNyeXB0aW9uIG1vZGVzLiBBcyBhIHJlc3VsdCwgc29tZSBjbGllbnRzIG1heSB1c2UgQUVTLUNCQwppbnN0ZWFkLCBzdWNoIGFzIHVwbG9hZGluZyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCgo8L2RldGFpbHM+Cgo8ZGV0YWlscyBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQ7IGJvcmRlci1yYWRpdXM6IDhweDsgcGFkZGluZzogOHB4OyBtYXJnaW4tdG9wOiA0cHg7Ij4KPHN1bW1hcnk+8J+SpSBTZXJ2ZXItc2lkZSBjb2xsaXNpb25zPC9zdW1tYXJ5PgoKS2hhb3BpYWsgZG9lcyBub3QgZ2VuZXJhdGUgZ3VhcmFudGVlZCB1bmlxdWUgbW5lbW9uaWNzLiBBcyBhIHJlc3VsdCwgaXQgaXMgdGhlb3JldGljYWxseSBwb3NzaWJsZSBmb3IgYSBjb2xsaXNpb24gdG8Kb2NjdXIsIHdoaWNoIG1heSBlbmFibGUgYWNjaWRlbnRhbCBmaWxlIG92ZXJ3cml0aW5nIG9yIGRvd25sb2FkaW5nIG9mIGFuIGFsdGVybmF0ZSBmaWxlLiBIb3dldmVyLCB0aGlzIGNhc2UgaXMgZXh0cmVtZWx5CmltcHJvYmFibGUuIENsaWVudC1zaWRlIGVuY3J5cHRpb24gaGVscHMgcHJvdGVjdCBkYXRhIGNvbmZpZGVudGlhbGl0eSBldmVuIGluIHRoZSBwcmVzZW5jZSBvZiBhIHNlcnZlci1zaWRlIGZhaWx1cmUuCldoaWxlIGl0IGlzIHBvc3NpYmxlIGZvciBhbm90aGVyIGNvbGxpc2lvbiwgZW5hYmxpbmcgZGVjcnlwdGlvbiBvZiB0aGUgZmlsZSwgdGhpcyBpcyBpbXByb2JhYmxlLgoKPC9kZXRhaWxzPgoKPGRldGFpbHMgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkOyBib3JkZXItcmFkaXVzOiA4cHg7IHBhZGRpbmc6IDhweDsgbWFyZ2luLXRvcDogNHB4OyI+CjxzdW1tYXJ5PvCfprkgTW5lbW9uaWMgdGhlZnQ8L3N1bW1hcnk+CgpUbyBjb252ZW5pZW50bHkgdXNlIEtoYW9waWFrLCB0aGUgc2FtZSBwb3J0YWwgc2hvdWxkIGJvdGggYWNjZXB0IGEgc2VydmVyIG1uZW1vbmljIGFuZCBhIGNsaWVudCBtbmVtb25pYy4gSG93ZXZlciwgdGhlCmNsaWVudCBtbmVtb25pYyBjb3VsZCBhY2NpZGVudGFsbHkgYmUgc2VudCB0byB0aGUgc2VydmVyIGlmIGVudGVyZWQgaW5jb3JyZWN0bHksIGNvbXByb21pc2luZyBlbmQtdG8tZW5kIGVuY3J5cHRpb24uIEEKcG9ydGFsIG1heSBhbHNvIGJlIG1hbGljaW91c2x5IGRlc2lnbmVkIHRvIGV4cGxpY2l0bHkgY2FwdHVyZSBjbGllbnQgbW5lbW9uaWNzLgoKVG8gYXZvaWQgbW5lbW9uaWMgdGhlZnQsIGFuIGVuZC11c2VyIHNob3VsZCBoYXZlIGEgbWVhbnMgb2YgdmVyaWZ5aW5nIHRoZSBwb3J0YWwncyBsZWdpdGltYWN5IChzdWNoIGFzIHRocm91Z2ggVExTCmNlcnRpZmljYXRlcykuIEZ1cnRoZXIsIHRoZSBwb3J0YWwgc2hvdWxkIGhhdmUgYSBjbGVhciBtZWFucyBvZiBkaXN0aW5ndWlzaGluZyB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIgbW5lbW9uaWNzLCBzdWNoIGFzCnVzaW5nIGhhbGYgb2YgYSBjb21iaW5lZCBtbmVtb25pYyBmb3IgZWFjaCwgb3IgdXNpbmcgYSBkaXN0aW5jdCB3b3JkbGlzdCBmb3IgdGhlIGNsaWVudCBhbmQgc2VydmVyLgoKPC9kZXRhaWxzPgoKPGRldGFpbHMgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkOyBib3JkZXItcmFkaXVzOiA4cHg7IHBhZGRpbmc6IDhweDsgbWFyZ2luLXRvcDogNHB4OyI+CjxzdW1tYXJ5PvCfp64gVXNlci1zcGVjaWZpZWQgZW50cm9weSBsZW5ndGg8L3N1bW1hcnk+CgpXaGVuIGEgdXNlciBzcGVjaWZpZXMgYW4gZW50cm9weSBsZW5ndGggb2YgMTYwIG9yIDIyNCwgS2hhb3BpYWsgcGFkcyB0aGUgZW50cm9weSB0byBiZWNvbWUgMTkyIG9yIDI1NiBiaXRzLApyZXNwZWN0aXZlbHksIGFzIEFFUyBvbmx5IHN1cHBvcnRzIDEyOCwgMTkyLCBhbmQgMjU2LWJpdCBrZXlzLiBBcyBhIHJlc3VsdCwgd2hpbGUgYSBsb25nZXItYml0IGFsZ29yaXRobSBpcyB1c2VkIGZvcgplbmNyeXB0aW9uLCBpdCBkb2VzIG5vdCBpbmhlcmVudGx5IGluY3JlYXNlIHRoZSBsZXZlbCBvZiBzZWN1cml0eSBhc3N1cmFuY2UgYXMgdGhlIHBhZGRpbmcgaXMgcHJlZGljdGFibGUuCgo8L2RldGFpbHM+Cgo8ZGV0YWlscyBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQ7IGJvcmRlci1yYWRpdXM6IDhweDsgcGFkZGluZzogOHB4OyBtYXJnaW4tdG9wOiA0cHg7Ij4KPHN1bW1hcnk+8J+UjiBTdG9yZWQgaGFzaCBvZiBlbnRyb3B5PC9zdW1tYXJ5PgoKVG8gbG9jYXRlIHRoZSBmaWxlIGluIFtDbG91ZGZsYXJlIFIyXShodHRwczovL2RldmVsb3BlcnMuY2xvdWRmbGFyZS5jb20vcjIvKSwgdGhlIHNlcnZlciBnZW5lcmF0ZXMgYSBITUFDLVNIQTI1NiBvZiB0aGUKZW50cm9weSB1c2VkIGZvciBtbmVtb25pYyBnZW5lcmF0aW9uLiBBcyBhIHJlc3VsdCwgdGhlIGhhc2ggYWN0cyBhcyBhIGhldXJpc3RpYyBmb3IgZGV0ZXJtaW5pbmcgdGhlIG9yaWdpbmFsIGVudHJvcHksCmFuZCB0aGVyZWJ5IHRoZSBkZWNyeXB0aW9uIGtleSBmb3Igc2VydmVyLXNpZGUgZW5jcnlwdGlvbjsgaG93ZXZlciwgdGhpcyBpcyBpbXByYWN0aWNhbCBkdWUgdG8gdGhlIHNoZWVyIG51bWJlciBvZgpwb3NzaWJsZSBjb21iaW5hdGlvbnMuIFRoaXMgcmlzayBpcyBmdXJ0aGVyIG1pdGlnYXRlZCB0aHJvdWdoIGxldmVyYWdpbmcgYW4gSE1BQyB3aXRoIGEgc2VjcmV0IGtleSBmb3IgdGhlIHNlcnZlci4gQXMgYQpyZXN1bHQsIGV2ZW4gaWYgZW50cm9weSBnZW5lcmF0ZWQgYmV0d2VlbiB0d28gZGlmZmVyZW50IEtoYW9waWFrIHNlcnZlcnMgYXJlIGlkZW50aWNhbCwgdGhlIGFzc29jaWF0ZWQgb2JqZWN0IGtleSB3b3VsZApkaWZmZXIgZ2l2ZW4gYSBkaWZmZXJlbnQgc2VjcmV0IGtleS4KCjwvZGV0YWlscz4KCjxkZXRhaWxzIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiA4cHg7IG1hcmdpbi10b3A6IDRweDsiPgo8c3VtbWFyeT7wn5ug77iPIFRhbXBlcmluZyBvZiBzZXJ2ZXIgY29kZTwvc3VtbWFyeT4KCkluIHRoZSBldmVudCB0aGF0IHRoZSBDbG91ZGZsYXJlIFdvcmtlciBpcyBjb21wcm9taXNlZCBhbmQgbWFsaWNpb3VzbHkgYWx0ZXJlZCwgaXQgaXMgcG9zc2libGUgZm9yIGEgdGhyZWF0IGFjdG9yIHRvCmJ5cGFzcyBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGFuZCBlYXNpbHkgYXNzb2NpYXRlIGZpbGUgdXBsb2FkIGFuZCBkb3dubG9hZCBjbGllbnRzLCBwcmVzZW50aW5nIGFuIGVsZXZhdGVkIHNlY3VyaXR5CnJpc2suIFRoaXMgaXMgbWl0aWdhdGVkIHRocm91Z2ggdGhlIEtoYW9waWFrIGNsaWVudCBuYXRpdmVseSBub3QgdHJ1c3RpbmcgdGhlIHNlcnZlciBhbmQgZW5jcnlwdGluZyB0aGUgZmlsZSBsb2NhbGx5LAppbmNsdXNpdmUgb2YgZmlsZSBtZXRhZGF0YSwgZW5hYmxpbmcgZW5kLXRvLWVuZCBlbmNyeXB0aW9uIHN1Y2ggdGhhdCBldmVuIGluIHRoZSBldmVudCBvZiBhIHNlcnZlciBjb21wcm9taXNlLCBlbmQtdXNlcgpjb250ZW50IHJlbWFpbnMgcHJvdGVjdGVkLiBGdXJ0aGVyLCBlbmQtdXNlcnMgbWF5IGVsZWN0IGZvciB0aGVpciBjbGllbnQgdG8gaW5zZXJ0IHJhbmRvbWl6ZWQgcGFkZGluZyBpbnRvIHRoZSBwbGFpbnRleHQKcHJpb3IgdG8gZW5jcnlwdGluZyBsb2NhbGx5LCBvYmZ1c2NhdGluZyB0aGUgcGF5bG9hZCdzIHRydWUgc2l6ZSBhbmQgdGhlcmVieSBoZWxwaW5nIG9ic2N1cmUgdGhlIG9yaWdpbmFsbHkgdXBsb2FkZWQKZmlsZS4KCjwvZGV0YWlscz4KCjxkZXRhaWxzIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiA4cHg7IG1hcmdpbi10b3A6IDRweDsiPgo8c3VtbWFyeT7wn5OL77iPIFVuYXV0aG9yaXplZCBhY2Nlc3MgdG8gc2VydmVyLXNpZGUgc3RvcmFnZTwvc3VtbWFyeT4KCklmIGEgdGhyZWF0IGFjdG9yIG9idGFpbnMgYWNjZXNzIHRvIGZpbGVzIGluIFtDbG91ZGZsYXJlIFIyXShodHRwczovL2RldmVsb3BlcnMuY2xvdWRmbGFyZS5jb20vcjIvKSwgdGhleSB3b3VsZCBoYXZlCmFjY2VzcyB0byBmaWxlcyBlbmNyeXB0ZWQgdXNpbmcgQUVTLUNCQywgd2hlcmUgdGhlIHBsYWludGV4dCBtYXkgYmUgcGFkZGVkLCBhbmQgaXRzZWxmIGEgcGFkZGVkIGNpcGhlcnRleHQgZ2VuZXJhdGVkIGJ5CnRoZSBjbGllbnQsIHdoaWNoIGlzIG5vdCBvZiBpbW1lZGlhdGUgdmFsdWUgd2l0aG91dCBzdWJzdGFudGlhbCBjb21wdXRpbmcgcmVzb3VyY2VzIGFuZCBpcyBnZW5lcmFsbHkgaW5mZWFzaWJsZS4gVGhyb3VnaAp1c2luZyBhIHB1YmxpY2x5IGFjY2Vzc2libGUgc2VydmVyLCBhZGRpdGlvbmFsIG9ic2N1cml0eSBpcyBwcm92aWRlZCB0aHJvdWdoIG1peGluZyBmaWxlcyBiZXR3ZWVuIGVuZCB1c2VycywgbWFraW5nIGl0CnN1Y2ggdGhhdCB0aHJlYXQgYWN0b3JzIGNhbm5vdCBlYXNpbHkgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGNpcGhlcnRleHRzIHdpdGggdmFsdWFibGUgcGxhaW50ZXh0cy4KCklmIGEgdGhyZWF0IGFjdG9yIGxhY2tzIHRoZSBhYmlsaXR5IHRvIGxpc3QgZmlsZXMgYW5kIG9ubHkgaGFzIHRoZSBhYmlsaXR5IHRvIGRvd25sb2FkIGdpdmVuIGFuIG9iamVjdCBrZXksIHRoZXkgd291bGQKbmVlZCBhIEhNQUMtU0hBMjU2IGhhc2gsIGFuZCBpdCBpcyBnZW5lcmFsbHkgaW5mZWFzaWJsZSB0byBicnV0ZS1mb3JjZSBjaGVja2luZyBoYXNoZXMgZHVlIHRvIHRoZSBzaGVlciBudW1iZXIgb2YKcG9zc2liaWxpdGllcy4gVG8gZ2VuZXJhdGUgYSB2YWxpZCBITUFDLVNIQTI1NiBjb3JyZXNwb25kaW5nIGFuIG9iamVjdCdzIGtleSwgYSB0aHJlYXQgYWN0b3Igd291bGQgcmVxdWlyZSBib3RoIHRoZQpzZXJ2ZXIncyBzZWNyZXQgYW5kIHRoZSBlbnRyb3B5IHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHNlcnZlci1zaWRlIG1uZW1vbmljLiBHaXZlbiBhIHRocmVhdCBhY3RvciBoYXMgdGhpcyBpbmZvcm1hdGlvbiwgaXQKd291bGQgYmUgZWFzaWVyIHRvIHF1ZXJ5IHRoZSBLaGFvcGlhayBBUEkgcmF0aGVyIHRoYW4gW0Nsb3VkZmxhcmUgUjJdKGh0dHBzOi8vZGV2ZWxvcGVycy5jbG91ZGZsYXJlLmNvbS9yMi8pLgoKPC9kZXRhaWxzPgoKPGRldGFpbHMgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkOyBib3JkZXItcmFkaXVzOiA4cHg7IHBhZGRpbmc6IDhweDsgbWFyZ2luLXRvcDogNHB4OyI+CjxzdW1tYXJ5PvCfpqAgQWx0ZXJhdGlvbiBvZiBjbGllbnQgY29kZTwvc3VtbWFyeT4KCkFzIHdpdGggYWxsIGVuZC10by1lbmQgZW5jcnlwdGVkIHNvbHV0aW9ucywgdGhlIGludGVncml0eSBvZiB0aGUgY2xpZW50IGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIHNlY3VyZSBjb21tdW5pY2F0aW9ucy4gQQptYWxpY2lvdXNseSBhbHRlcmVkIGNsaWVudCBtYXkgc2VuZCB1bmVuY3J5cHRlZCBkYXRhIHRvIGEgdGhpcmQgcGFydHksIGdlbmVyYXRlIGNyeXB0b2dyYXBoaWNhbGx5IGluc2VjdXJlIGVudHJvcHksIG9yCnJlY29yZCBtbmVtb25pY3Mgd2l0aG91dCBlbmQtdXNlciBrbm93bGVkZ2UuCgpUaGUgbmF0aXZlLCB3ZWItYmFzZWQgY2xpZW50IEtoYW9waWFrIHNoaXBzIHdpdGggd29ya3MgdG8gbWl0aWdhdGUgdGhlc2UgdGhyZWF0cyB0aHJvdWdoIHJlY29tbWVuZGluZyB0aGF0IGJyb3dzZXJzCnZlcmlmeWluZyBzY3JpcHQgYW5kIHN0eWxlc2hlZXQgaW50ZWdyaXR5LCByZWplY3RpbmcgY2VydGFpbiBhdHRyaWJ1dGVzIChzdWNoIGFzIGluLWxpbmUgc2NyaXB0cyBhbmQgc3R5bGVzKSwgdXBncmFkZQpyZXF1ZXN0cyB0byBzZWN1cmUgSFRUUCB3aGVuIHBvc3NpYmxlLCBhbmQgcmVseWluZyBvbiBubyB0aGlyZCBwYXJ0eSBhc3NldHMuCgpBZGRpdGlvbmFsIG1pdGlnYXRpb25zIGFyZSBkZXBsb3ltZW50LXNwZWNpZmljLCBzdWNoIGFzIGVuYWJsaW5nCnRoZSBbRG9tYWluIE5hbWUgU3lzdGVtIFNlY3VyaXR5IEV4dGVuc2lvbnMgKEROU1NFQyldKGh0dHBzOi8vd3d3LmljYW5uLm9yZy9yZXNvdXJjZXMvcGFnZXMvZG5zc2VjLXdoYXQtaXMtaXQtd2h5LWltcG9ydGFudC0yMDE5LTAzLTA1LWVuKQphbmQgY29uZmlndXJpbmcgW2NlcnRhaW4gcmVzcG9uc2UgaGVhZGVyc10oI3JlY29tbWVuZGVkLWhlYWRlcnMpLgoKRGVzcGl0ZSB0aGVzZSBtaXRpZ2F0aW9ucywgdGhlIHNlY3VyaXR5IG9mIHVwbG9hZCBhbmQgZG93bmxvYWQgZGV2aWNlcyBhbG9uZ3NpZGUgdGhlIGNsaWVudCdzIGludGVncml0eSByZW1haW5zIHRoZQpwcmltYXJ5IGNvbmNlcm4gdG8gdGhlIHVzYWdlIG9mIEtoYW9waWFrLiBNYWxpY2lvdXMgYnJvd3NlciBleHRlbnNpb25zIChvciB0aGUgYnJvd3NlciBpdHNlbGYpIG1heSBhbHRlciB0aGUgbmF0aXZlCmNsaWVudCdzIGZ1bmN0aW9ucy4gRnVydGhlciwgZGV2aWNlcyBtYXkgdHJ1c3QgdW50cnVzdHdvcnRoeSBjZXJ0aWZpY2F0ZXMsIGNvbXByb21pc2luZyB0aGUgY29uZmlkZW50aWFsaXR5IGFuZAppbnRlZ3JpdHkgYmVuZWZpdHMKW1RyYW5zcG9ydCBMYXllciBTZWN1cml0eSAoVExTKV0oaHR0cHM6Ly93d3cuY2xvdWRmbGFyZS5jb20vbGVhcm5pbmcvc3NsL3RyYW5zcG9ydC1sYXllci1zZWN1cml0eS10bHMvKQplbmNyeXB0aW9uIHByb3ZpZGVzLgoKVGhlIG5hdGl2ZSBLaGFvcGlhayBjbGllbnQgd29ya3MgdG8gY29tYmF0IHRoZSByaXNrIG9mIGNvbXByb21pc2VkIGRvd25sb2FkIGRldmljZXMgdGhyb3VnaCByZW5kZXJpbmcgY2VydGFpbiBjb250ZW50CnR5cGVzLCBzdWNoIGFzIFBERiBmaWxlcywgaW4gYnJvd3NlciB3aGVuIHBvc3NpYmxlIGluc3RlYWQgb2YgZm9yY2luZyB0aGUgY2xpZW50IHRvIGRvd25sb2FkIHRoZW0sIHdoaWNoIGNhbiBoZWxwCnByZXZlbnQgdGhyZWF0IGFjdG9ycyBmcm9tIGFjcXVpcmluZyBkb3dubG9hZGVkIGZpbGVzLgoKPC9kZXRhaWxzPgoKPGRldGFpbHMgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkOyBib3JkZXItcmFkaXVzOiA4cHg7IHBhZGRpbmc6IDhweDsgbWFyZ2luLXRvcDogNHB4OyI+CjxzdW1tYXJ5PvCfjI4gRGVwZW5kZW5jeSBvbiB0aGlyZC1wYXJ0eSBETlMgcmVzb2x2ZXJzPC9zdW1tYXJ5PgoKVGhlIG5hdGl2ZSBLaGFvcGlhayBjbGllbnQgcmVsaWVzIG9uIGEgW0RvbWFpbiBOYW1lIFN5c3RlbSAoRE5TKV0oaHR0cHM6Ly93d3cuY2xvdWRmbGFyZS5jb20vbGVhcm5pbmcvZG5zL3doYXQtaXMtZG5zLykKcXVlcnkgdG8gcmV0cmlldmUgYSBwdWJsaWMga2V5IGZvciB0aGUgS2hhb3BpYWsgc2VydmVyLCBzdG9yZWQgaW4gdGV4dCBmb3JtYXQuIFRoZSB3ZWItYmFzZWQgY2xpZW50IHJldHJpZXZlcyBETlMKcmVjb3JkcyB0aHJvdWdoIGVtcGxveWluZyBhIFtETlMgb3ZlciBIVFRQUyAoRG9IKV0oaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM4NDg0KSBzZXJ2ZXI7IGhvd2V2ZXIsIHRoaXMKYWRkcyBhIHBhcnR5IG5vdyBjYXBhYmxlIG9mIGlkZW50aWZ5aW5nIHRoZSBmYWN0IHRoYXQgYSBjbGllbnQgaXMgdXNpbmcgYSBLaGFvcGlhayBzZXJ2ZXIgd2l0aCBQS0kgYW5kIHBvdGVudGlhbGx5IGhhdmUKdGhlIGFiaWxpdHkgdG8gYWx0ZXIgdGhlIGtleS4KClRoZSBuYXRpdmUgS2hhb3BpYWsgY2xpZW50IG1pdGlnYXRlcyB0aGlzIHJpc2sgdGhyb3VnaCBnZW5lcmF0aW5nIGEgQklQMzkgbW5lbW9uaWMgb2YgdGhlIHB1YmxpYyBrZXkncyBoYXNoLCBtYWtpbmcgaXQKZWFzaWVyIGZvciBlbmQtdXNlcnMgdG8gdmlzdWFsbHkgdmVyaWZ5IGl0IGlzIGNvcnJlY3QuIEZ1cnRoZXIsIGVuZC11c2VycyBtYXkgZWxlY3QgdG8gdXNlIG11bHRpcGxlIEROUyByZXNvbHZlcnMgZm9yCmNyb3NzLXJlZmVyZW5jZSBwdXJwb3NlcyBhbmQgaW1wcm92ZSBjb25maWRlbmNlIGluIHRoZSBwdWJsaWMga2V5J3MgY29ycmVjdG5lc3MuCgpBcyB0aGUgcHVibGljIGtleSBpcyBvbmx5IHVzZWQgZm9yIFBLSSBlbmNyeXB0aW9uIHRvIHRoZSBLaGFvcGlhayBzZXJ2ZXIsIHRoZSBjbGllbnQgcmVtYWlucyBkZXBlbmRlbnQgb24gdGhlIEROUyBzZXJ2ZXIKY29uZmlndXJlZCBmb3IgdGhlaXIgYnJvd3NlciBvciBkZXZpY2UgdG8gZGV0ZXJtaW5lIHRoZSBpbnRlcm5ldCBsb2NhdGlvbiBvZiB0aGUgS2hhb3BpYWsgc2VydmVyLCBtYWtpbmcgaXQgc3VjaCB0aGF0CmFsdGVyYXRpb24gb2YgdGhlIHB1YmxpYyBrZXkgZG9lcyBub3QgaW5oZXJlbnRseSBsZWFkIHRvIGNvbXByb21pc2VzIGluIGRhdGEgY29uZmlkZW50aWFsaXR5IG5vciBpbnRlZ3JpdHkuIFRoaXMgaXMKZnVydGhlciByZWluZm9yY2VkIGJ5IEtoYW9waWFrJ3MgY2xpZW50LXNpZGUgbW5lbW9uaWNzLCBwcm92aWRpbmcgZW5kLXRvLWVuZCBlbmNyeXB0aW9uIGV2ZW4gd2l0aG91dCBsZXZlcmFnaW5nIFBLSS4KCjwvZGV0YWlscz4KCiMjIEdldCBzdGFydGVkCgpUbyBpbml0aWFsbHkgZGVwbG95IEtoYW9waWFrOgoKMS4gU2lnbiB1cCBmb3IgW0Nsb3VkZmxhcmUgV29ya2Vyc10oaHR0cHM6Ly93b3JrZXJzLmRldikuIFRoZSBmcmVlIHRpZXIgaXMgbW9yZSB0aGFuIGVub3VnaCBmb3IgbW9zdCB1c2UgY2FzZXMuCjIuIENsb25lIHRoaXMgcHJvamVjdCBhbmQgaW5zdGFsbCBkZXBlbmRlbmNpZXMgd2l0aCBgbnBtIGluc3RhbGxgCjMuIFJ1biBgbnB4IHdyYW5nbGVyIGxvZ2luYCB0byBsb2dpbiB0byB5b3VyIENsb3VkZmxhcmUgYWNjb3VudCBpbiB3cmFuZ2xlcgo0LiBSdW4gYG5weCB3cmFuZ2xlciByMiBidWNrZXQgY3JlYXRlIGtoYW9waWFrYCB0byBjcmVhdGUgYSBDbG91ZGZsYXJlIFIyIGJ1Y2tldAo1LiBSdW4gYG5weCB3cmFuZ2xlciBxdWV1ZXMgY3JlYXRlIGtoYW9waWFrYCB0byBjcmVhdGUgYSBDbG91ZGZsYXJlIFF1ZXVlcyBxdWV1ZSA2CiAgICAtIEZvciBmcmVlIHRpZXIgdXNlcnMsIGRpc2FibGUgcXVldWVzIGluIGB3cmFuZ2xlci50b21sYAo2LiBPcHRpb25hbGx5LCBzZXQgYSBDbG91ZGZsYXJlIFIyIGxpZmVjeWNsZSBydWxlIHRvIGF1dG9tYXRpY2FsbHkgZGVsZXRlIGZpbGVzIG92ZXIKICAgdGltZTogYG5weCB3cmFuZ2xlciByMiBidWNrZXQgbGlmZWN5Y2xlIGFkZCBraGFvcGlhayAtLWV4cGlyZS1kYXlzIDUwYAo3LiBSdW4gYG9wZW5zc2wgcmFuZCAtaGV4IDggfCBucHggd3JhbmdsZXIgc2VjcmV0IHB1dCBPQkpFQ1RfS0VZX1NFQ1JFVGAgdG8gZ2VuZXJhdGUgYW5kIHNldCBhIHJhbmRvbSBvYmplY3Qga2V5IGhtYWMKICAgc2VjcmV0CjguIFJ1biBgbnB4IHdyYW5nbGVyIHNlY3JldCBwdXQgUFJJVkFURV9LRVlfSEVYYCBhbmQgc2V0IGEgcHJpdmF0ZSBrZXkgaGV4IHZhbHVlCjkuIFJ1biBgbnB4IHdyYW5nbGVyIHNlY3JldCBwdXQgUFVCTElDX0tFWV9IRVhgIGFuZCBzZXQgYSBwdWJsaWMga2V5IGhleCB2YWx1ZQoxMC4gUnVuIGBucHggd3JhbmdsZXIgZGVwbG95YCB0byBwdWJsaXNoIHRoZSBBUEkgdG8gQ2xvdWRmbGFyZSBXb3JrZXJzCgpUbyBkZXBsb3kgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIEtoYW9waWFrOgoKMS4gUnVuIGBucHggd3JhbmdsZXIgZGVwbG95YCB0byBwdWJsaXNoIHRoZSBBUEkgdG8gQ2xvdWRmbGFyZSBXb3JrZXJzCgojIyMgUmVjb21tZW5kZWQgaGVhZGVycwoKPiBbIUlNUE9SVEFOVF0gIAo+IFRvIHByZXZlbnQgYWNjZXNzIGlzc3VlcywgaW5jbHVkaW5nIGZvciBvdGhlciBhcHBsaWNhdGlvbnMgdXNpbmcgdGhlIHNhbWUgZG9tYWluLCByZXZpZXcgaGVhZGVycyBiZWZvcmUgc2V0dGluZyB0aGVtLgo+IFlvdSBtYXkgY29uc2lkZXIgc2V0dGluZyB0aGVtIHVzaW5nIFRoaXMgbWF5IGJlIGRvbmUKPiB0aHJvdWdoIFtUcmFuc2Zvcm0gUnVsZXNdKGh0dHBzOi8vZGV2ZWxvcGVycy5jbG91ZGZsYXJlLmNvbS9ydWxlcy90cmFuc2Zvcm0vcmVzcG9uc2UtaGVhZGVyLW1vZGlmaWNhdGlvbi8pLiBGb3IKPiBpbnN0YW5jZSwgcHVibGljIGluc3RhbGxhdGlvbnMgbWF5IGNvbnNpZGVyIGFsdGVyaW5nIGBDbGVhci1TaXRlLURhdGFgIHRvIHJlZHVjZSBpbmJvdW5kIHJlcXVlc3RzLiBUaGlzIGV4YW1wbGUgd2lsbAo+IGJlIGFsdGVyZWQgYXQgYSBsYXRlciBkYXRlIHdoZW4gc2VydmljZSB3b3JrZXJzIGFyZSBzdXBwb3J0ZWQuCgo+IFshVElQXQo+IFdoZW4gdXNpbmcgW1RyYW5zZm9ybSBSdWxlc10oaHR0cHM6Ly9kZXZlbG9wZXJzLmNsb3VkZmxhcmUuY29tL3J1bGVzL3RyYW5zZm9ybS9yZXNwb25zZS1oZWFkZXItbW9kaWZpY2F0aW9uLykgdG8gc2V0Cj4gdGhlIGBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW5gIGhlYWRlciBmb3IgbXVsdGlwbGUgc2l0ZXMsIGNvbnNpZGVyIG1ha2luZyBpdAo+IGR5bmFtaWNhbGx5LXZhbHVlZDogYGNvbmNhdCgiaHR0cHM6Ly8iLCBodHRwLmhvc3QpYAoKYGBgCkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjogPG9yaWdpbj4KQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUKQ2xlYXItU2l0ZS1EYXRhOiAiKiIKQ29udGVudC1TZWN1cml0eS1Qb2xpY3k6IGRlZmF1bHQtc3JjICdub25lJzsgYmFzZS11cmkgJ25vbmUnOyBzY3JpcHQtc3JjICdzZWxmJzsgZm9ybS1hY3Rpb24gJ3NlbGYnOyBzY3JpcHQtc3JjLWF0dHIgJ25vbmUnOyBjb25uZWN0LXNyYyAnc2VsZic7IHN0eWxlLXNyYy1lbGVtICdzZWxmJzsgc3R5bGUtc3JjICdzZWxmJzsgc3R5bGUtc3JjLWF0dHIgJ25vbmUnOyBmcmFtZS1hbmNlc3RvcnMgJ25vbmUnOyB1cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzCkNyb3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3k6IHJlcXVpcmUtY29ycApDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeTogc2FtZS1vcmlnaW4KQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeTogc2FtZS1zaXRlClBlcm1pc3Npb25zLVBvbGljeTogbWljcm9waG9uZT0oKSwgY2FtZXJhPSgpLCBnZW9sb2NhdGlvbj0oKQpSZWZlcnJlci1Qb2xpY3k6IG5vLXJlZmVycmVyClN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHk6IG1heC1hZ2U9NjMwNzIwMDA7IGluY2x1ZGVTdWJEb21haW5zOyBwcmVsb2FkClZhcnk6IE9yaWdpbgpYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBub3NuaWZmCmBgYAoKIyMjIEV4YW1wbGVzCgojIyMjIEtoYW9waWFrIHNlcnZlciBjVVJMIGV4YW1wbGVzCgo+IFshV0FSTklOR10gIAo+IEVuZHBvaW50cyB0aGF0IHJlcXVpcmUgc2VuZGluZyBhIG1uZW1vbmljIHRvIHRoZSBzZXJ2ZXIgc2hvdWxkICoqb25seSoqIHNlbmQgc2VydmVyLWdlbmVyYXRlZCBtbmVtb25pY3MsIGFuZCBub3Qgb25lcwo+IGdlbmVyYXRlZCBsb2NhbGx5LCB3aGljaCBjYW4gY29tcHJvbWlzZSBlbmQtdG8tZW5kIGVuY3J5cHRpb24uIEFsbCBleGFtcGxlcyBkbyBub3QgdXNlIHRoZSBLaGFvcGlhayBzZXJ2ZXIncyBQS0kKPiBlbmNyeXB0aW9uLCB3aGljaCBtYXkgbGVhZCB0byBpbnRlcm5hbCBkYXRhIGxlYWthZ2UgaWYgeW91ciBkZXZpY2UgdHJ1c3RzIGFuIHVudHJ1c3R3b3J0aHkgcm9vdCBjZXJ0aWZpY2F0ZS4KCiMjIyMjIFVwbG9hZGluZyBmaWxlcwoKPiBbIUlNUE9SVEFOVF0gIAo+IFRoaXMgZXhhbXBsZSBkb2VzIG5vdCBsZXZlcmFnZSBjbGllbnQtc2lkZSBlbmNyeXB0aW9uLiBFbmNyeXB0IHNlbnNpdGl2ZSBmaWxlcyBiZWZvcmUgdHJhbnNtaXR0aW5nIHRoZW0gdXNpbmcgdGhpcwo+IGNvbW1hbmQuCgpSZXF1ZXN0OgoKYGBgc2hlbGwKY3VybCAtWCAnUE9TVCcgXAogICdodHRwczovL2toYW9waWFrL2FwaS9maWxlL3VwbG9hZCcgXAogIC1IICdhY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24nIFwKICAtSCAnQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvZm9ybS1kYXRhJyBcCiAgLUYgJ2ZpbGU9QC9ob21lL3VzZXJuYW1lL0Rlc2t0b3AvZmlsZS5wZGYnIFwKICAtRiAnZW50cm9weT0xMjgnIFwKICAtRiAnZXhwaXJ5PTQzMjAwJyBcCiAgLUYgJ3BhZGRpbmc9MTAyNCcKYGBgCgpSZXNwb25zZToKCmBgYGpzb24KewoJInN1Y2Nlc3MiOiB0cnVlLAoJIm1uZW1vbmljIjogImJhZGdlIGtuaWZlIHRyaW0gZ2xpbXBzZSBzb2x1dGlvbiBjaGFvcyBuYXN0eSB0aGF0IHF1YXJ0ZXIgYW5nbGUgbWFyaW5lIHNuaWZmIgp9CmBgYAoKIyMjIyMgRG93bmxvYWRpbmcgZmlsZXMKCj4gWyFOT1RFXSAgCj4gSWYgdGhlIGZpbGUgd2FzIGVuY3J5cHRlZCBjbGllbnQtc2lkZSBiZWZvcmUgdXBsb2FkaW5nLCB0aGlzIGNvbW1hbmQgd2lsbCBub3QgZnVsbHkgZGVjcnlwdCBpdC4KClJlcXVlc3Q6CgpgYGBzaGVsbApjdXJsIC1YICdQT1NUJyBcCiAgJ2h0dHBzOi8va2hhb3BpYWsvYXBpL2ZpbGUvZG93bmxvYWQ/bm9SZW5kZXI9ZmFsc2UnIFwKICAtSCAnYWNjZXB0OiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIFwKICAtSCAnQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvZm9ybS1kYXRhJyBcCiAgLUYgJ21uZW1vbmljPWJhZGdlIGtuaWZlIHRyaW0gZ2xpbXBzZSBzb2x1dGlvbiBjaGFvcyBuYXN0eSB0aGF0IHF1YXJ0ZXIgYW5nbGUgbWFyaW5lIHNuaWZmJyBcCiAgLS1vdXRwdXQgIi9ob21lL3VzZXJuYW1lL0Rlc2t0b3AvZmlsZS5wZGYiCmBgYAoKIyMjIyMgQ2hlY2tpbmcgaWYgZmlsZXMgZXhpc3QKClJlcXVlc3Q6CgpgYGBzaGVsbApjdXJsIC1YICdQT1NUJyBcCiAgJ2h0dHBzOi8va2hhb3BpYWsvYXBpL2ZpbGUvZXhpc3RzJyBcCiAgLUggJ2FjY2VwdDogYXBwbGljYXRpb24vanNvbicgXAogIC1IICdDb250ZW50LVR5cGU6IG11bHRpcGFydC9mb3JtLWRhdGEnIFwKICAtRiAnbW5lbW9uaWM9YmFkZ2Uga25pZmUgdHJpbSBnbGltcHNlIHNvbHV0aW9uIGNoYW9zIG5hc3R5IHRoYXQgcXVhcnRlciBhbmdsZSBtYXJpbmUgc25pZmYnCmBgYAoKUmVzcG9uc2U6CgpgYGBqc29uCnsKCSJzdWNjZXNzIjogdHJ1ZSwKCSJleGlzdHMiOiB0cnVlCn0KYGBgCgojIyMjIyBEZWxldGluZyBhIGZpbGUKClJlcXVlc3Q6CgpgYGBzaGVsbApjdXJsIC1YICdQT1NUJyBcCiAgJ2h0dHBzOi8va2hhb3BpYWsvYXBpL2ZpbGUvZGVsZXRlJyBcCiAgLUggJ2FjY2VwdDogYXBwbGljYXRpb24vanNvbicgXAogIC1IICdDb250ZW50LVR5cGU6IG11bHRpcGFydC9mb3JtLWRhdGEnIFwKICAtRiAnbW5lbW9uaWM9YmFkZ2Uga25pZmUgdHJpbSBnbGltcHNlIHNvbHV0aW9uIGNoYW9zIG5hc3R5IHRoYXQgcXVhcnRlciBhbmdsZSBtYXJpbmUgc25pZmYnCmBgYAoKUmVzcG9uc2U6CgpgYGBqc29uCnsKCSJzdWNjZXNzIjogdHJ1ZQp9CmBgYAoKIyMgQ29udHJpYnV0aW5nCgojIyMgRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQKCj4gWyFOT1RFXSAgCj4gS2hhb3BpYWsgaXMgaW4gYWN0aXZlLCBoZWF2eSBkZXZlbG9wbWVudC4gVGhpcyBndWlkZSB3aWxsIGJlIHVwZGF0ZWQgYXQgYSBsYXRlciB0aW1lIHdoZW4gdGhlIHByb2plY3QgYmVjb21lcyBtb3JlCj4gc3RhYmxlLgoKMS4gUnVuIGBucHggd3JhbmdsZXIgZGV2YCB0byBzdGFydCBhIGxvY2FsIGluc3RhbmNlIG9mIHRoZSBBUEkuCjIuIE9wZW4gYGh0dHA6Ly9sb2NhbGhvc3Q6ODc4Ny9hcGlgIGluIHlvdXIgYnJvd3NlciB0byBzZWUgdGhlIFN3YWdnZXIgaW50ZXJmYWNlIHdoZXJlIHlvdSBjYW4gdHJ5IHRoZSBlbmRwb2ludHMuCjMuIENoYW5nZXMgbWFkZSBpbiB0aGUgYHNyYy9gIGZvbGRlciB3aWxsIGF1dG9tYXRpY2FsbHkgdHJpZ2dlciB0aGUgc2VydmVyIHRvIHJlbG9hZCwgeW91IG9ubHkgbmVlZCB0byByZWZyZXNoIHRoZQogICBTd2FnZ2VyIGludGVyZmFjZS4KCiMjIyBUbyBkbwoKLSBbIF0gUE9TSVgtYmFzZWQgdXBsb2FkL2Rvd25sb2FkIHNjcmlwdAotIFsgXSBXZWIgcG9ydGFsCi0gWyBdIEVuY3J5cHQtdGhlbi1NQUMgQ0JDIGNsaWVudC1zaWRlCg== readmeEtag: '"8e4ceddfecc5f6e42c270fec472135a60b4d9efe"' readmeLastModified: Sat, 11 Jan 2025 19:28:59 GMT repositoryId: 910366977 description: >- An end-to-end encrypted, account-less, and serverless file transfer system. created: '2024-12-31T05:02:01Z' updated: '2025-01-11T19:29:06Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: Jayson-Fong logo: https://avatars.githubusercontent.com/u/32722526?v=4 license: MIT repoEtag: '"241f9396535733805d1e55ad8bcba67f39391362251d8b49081c4a78f005afb6"' repoLastModified: Sat, 11 Jan 2025 19:29:06 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/lordent/openapi-doc v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWRvYwpPcGVuQVBJIHYzIGRvYyBkZWNvcmF0b3JzIGZvciBhc3luYyBzYW5pYyB3ZWJmcmFtZWZvcmsK readmeEtag: '"f3c1d56ecc056bff36106ef7a17268fda52a5c5a"' readmeLastModified: Thu, 29 Mar 2018 14:50:33 GMT repositoryId: 118631521 description: OpenAPI v3 doc decorators created: '2018-01-23T15:44:55Z' updated: '2018-03-29T14:50:45Z' language: Python archived: false stars: 0 watchers: 1 forks: 0 owner: lordent logo: https://avatars.githubusercontent.com/u/2070895?v=4 license: MIT repoEtag: '"b25338d94e593bf8706b66723995b8eb903a00c5d2165a9701c603dd5d691ebf"' repoLastModified: Thu, 29 Mar 2018 14:50:45 GMT foundInMaster: true category: - Server - Parsers id: 58b6dd27f3974aae0e40f151d315bd7a - source: openapi3 tags repository: https://github.com/magnayn/belvedere v3: true repositoryMetadata: base64Readme: >- IyBCZWx2ZWRlcmUKCj4gQSBidWlsZGluZywgb3IgYXJjaGl0ZWN0dXJhbCBmZWF0dXJlIG9mIGEgYnVpbGRpbmcsIGRlc2lnbmVkIGFuZCBzaXR1YXRlZCB0byBsb29rIG91dCB1cG9uIGEgcGxlYXNpbmcgc2NlbmUuCgojIyBXcml0ZSBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGEgYmV0dGVyIHdheQoKKiogUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGlzLCB2ZXJ5IG11Y2gsIGEgd29yayBpbiBwcm9ncmVzcyBhbmQgbm90IGEgZmluaXNoZWQgYXJ0aWNsZSEgKioKCiMjIERvY3VtZW50YXRpb24KW0luZGV4XShkb2NzL1JFQURNRS5tZCkKCgojIyMgT3BlbkFQSQoKT3BlbkFQSSBpcyBhbiBleHRyZW1lbHkgdXNlZnVsIHdheSB0byBkb2N1bWVudCB0aGUgX3NwZWNpZmljYXRpb25fIGZvciBhbiBBUEkgLSBwYXJ0aWN1bGFybHkgYmVjYXVzZSBpdCBjcmVhdGVzIGFuIGltcGxlbWVudGF0aW9uLW5ldXRyYWwgYXJ0aWZhY3QgdGhhdCBkb2N1bWVudHMgYm90aCB0aGUgY2FsbHMgYW5kIHBhcmFtZXRlcnMsIGJ1dCBhbHNvIGV4YW1wbGVzIGFuZCB1c2VmdWwgZG9jdW1lbnRhdGlvbi4KClRoZXJlIGFyZSBtYXkgZ3JlYXQgZ2VuZXJhdG9ycyAtIGRvaW5nIHRoZSB3b3JrIG9mIGltcGxlbWVudGluZyB0byBzcGVjIGluIGEgcmVsaWFibGUgd2F5LCBhbmQgZG9jdW1lbnRhdGlvbiAvIGV4cGxvcmF0aW9uIHRvb2xzLCB0aGF0IGFsbG93IHlvdSB0byBjb21tdW5pY2F0ZSB5b3VyIEFQSSB0byBhIHdpZGVyIGF1ZGllbmNlLgoKKkhvd2V2ZXIqIC0gYXMgYW4gX2F1dGhvcmluZ18gc29sdXRpb24gaXQgbGVhdmVzIG11Y2ggdG8gYmUgZGVzaXJlZC4gCgotIFRoZSB0d28gbmF0aXZlIGZvcm1hdHMgLSBKU09OIGFuZCBZQU1MIC0gYXJlIGhhcmQgdG8gd29yayB3aXRoLgoKWW91IGVuZCB1cCBlaXRoZXIgcGxheWluZyAnaHVudCB0aGUgY3VybHkgYnJhY2Ugb3IgbWlzc2luZyBxdW90ZScgb3IgZXJyb3JzIGluIGdldHRpbmcgdGhlIGluZGVudGF0aW9uIHdyb25nIGluIFlBTUwuCgotIFRoZSBuYXRpdmUgZm9ybWF0cyBhcmUgdmVyeSB2ZXJib3NlCgpUaGlzIGlzIGluZXZpdGFibGUgZ2l2ZW4gdGhhdCB0aGV5IGFyZSBsaWdodHdlaWdodCBzZXJpYWxpemF0aW9ucyB0byBhbiB1bmRlcmx5aW5nIGRhdGEgbW9kZWwuIEJ1dCwgcGFydGljdWxhcmx5IGZvciBkYXRhIHN0cnVjdHVyZXMsIGl0IGZlZWxzIGxpa2UgYSBsb3Qgb2YgbGluZXMgYXJlIHJlcXVpcmVkIHRvIHNwZWNpZnkgZXZlbiB2ZXJ5IHNpbXBsZSBEVE9zLgoKLSB2ZXJ5IGhhcmQgdG8gYnJlYWsgYXBhcnQgQVBJcyBpbnRvIG11bHRpcGxlIGZpbGVzIGFuZC9vciByZS11c2UgZXhpc3RpbmcgY29tcG9uZW50cy4gCgpUaGVyZSBhcmUgc29tZSB3YXlzIG9mIHJlZmVyZW5jaW5nIGl0ZW1zIHRocm91Z2ggWUFNTCBmaWxlIHJlZmVyZW5jZXMsIGJ1dCB0aGlzIGlzIGxpbWl0ZWQgKHBsYWNlcyB3aGVyZSBhICRyZWYgaXMgYWxsb3dlZCkuIEV2ZW4gd2hlbiBub3QgbmVlZGluZyByZS11c2UsIGl0IHdvdW9sZCBiZSBuaWNlIHRvIGJlIGFibGUgdG8gc3BsaXQgdXAgbGFyZ2UgQVBJcyBpbnRvIHNlcGFyYXRlIHNlY3Rpb25zLgoKLSBzdWZmZXJzIGZyb20gYSBsb3Qgb2YgJ0RSWScgLSBkb24ndCByZXBlYXQgeW91cnNlbGYuIAoKRS5nOiBJZiBhbiBBUEkgaGFzIGEgc3RhbmRhcmQgcmVzcG9uc2UgdG8gYSByZXF1ZXN0IHdoaWNoIGlzICc0MDQnLCB0aGVuIHRoaXMgbWF5IGJlIHJlcGVhdGVkIG1hbnkgdGltZXMgb3ZlciAod2hpY2ggbWFrZXMgaXQgaGFyZGVyIHRvIG1ha2UgZ2xvYmFsIGNoYW5nZXMpLgoKLSBoYXJkIGlmIHlvdSB3YW50IG11bHRpcGxlIHZhcmlhbnRzCgpFLmc6IERlcGxveWluZyBpbnRvIGEgZnJvbnQtZW5kIGdhdGV3YXkgKGUuZyBBV1MgQVBJIEdhdGV3YXkpIG1heSByZXF1aXJlIGFkZGl0aW9uYWwgZXh0ZW5zaW9uIHZhbHVlcyBpbiB0aGUgT3BlbkFQSSBkZWZpbml0aW9uLiBJZGVhbGx5IHdlJ2QgbGlrZSB0byBhdXRob3IgdGhlc2UgaW4gb25lIHBsYWNlLCBidXQgd2UgZG9uJ3QgcGFydGljdWxhcmx5IHdhbnQgdGhlc2UgdG8gYmUgYSBwYXJ0IG9mIHRoZSBBUEkgZGVmaW5pdGlvbiB3ZSBnaXZlIHRvIHRoZSBwdWJsaWMuIEFsc28sIHdlIG1heSB3aXNoIHRvIGhhdmUgJ3B1YmxpYycgYW5kICdwcml2YXRlJyBtZXRob2RzIHdpdGhpbiB0aGUgc2FtZSBBUEkgLSBhdXRob3JlZCBpbiB0aGUgc2FtZSBwbGFjZSwgYnV0IHB1Ymxpc2hlZCBhcyB0d28gc2VwYXJhdGUgdmFyaWFudHMuCgojIyMgT25lIGFsdGVybmF0aXZlCgpPbmUgYWx0ZXJuYXRpdmUgd291bGQgYmUgdG8gZGVzaWduIHRoZSBBUEkgaW4gYSBzcGVjaWZpYyBsYW5ndWFnZSAoc2F5LCBKYXZhKSwgdGhlbiB1c2UgdGhlIHRvb2xpbmcgKHdoaWNoIGV4aXN0cyBhbHJlYWR5KSB0byBhdXRvLWRvY3VtZW50ICJ3aGF0IGl0IHNlZXMiLgoKVGhpcyBtYXkgaGF2ZSBpdCdzIHVzZXMgLSBhbmQgaW5kZWVkIHRoaXMgdG9vbCBtYXkgYmUgZXh0ZW5kZWQgdG8gYWxsb3cgZGVmaW5pdGlvbnMgaW4gbXVsdGlwbGUgZm9ybWF0cyAtIGJ1dCwgaWYgeW91IGxvb2sgYXQgdGhlIGNvZGUgZ2VuZXJhdGVkIGZvciwgc2F5LCBKYXZhIC0gaXQgaXMgdmVyeSBhbm5vdGF0aW9uLWhlYXZ5LCBhbmQgaXRzZWxmIG5vdCBuZWNjZXNhcmlseSBhIHBsZWFzYW50IHdheSB0byBfYXV0aG9yXyBzcGVjaWZpY2F0aW9uLgoKIyMgQmVsdmVkZXJlCgpCZWx2ZWRlcmUgbGV2ZXJhZ2VzIGdyb292eSB0byBkZWZpbmUgYSBEU0wgKERvbWFpbiBTcGVjaWZpYyBMYW5ndWFnZSkgZm9yIHNwZWNpZnlpbmcgT3BlbkFQSSBzdHJ1Y3R1cmVzLiBUaHVzLCB0aGUgaW5wdXQgaXMgJ0JlbHZlZGVyZSBEU0wnLCBhbmQgdGhlIG91dHB1dCBpcyAnT3BlbkFQSSBZQU1MJy4gCgpTaW5jZSBpdCBpcyBidWlsdCBhcyBhIERTTCwgdGhpcyBlbmFibGVzIGxhbmd1YWdlIGZlYXR1cmVzIHRvIHNpbXBsaWZ5IEFQSSBzcGVjaWZpY2F0aW9ucywgYW5kIGV2ZW4gYWRkIG1ldGFwcm9ncmFtbWluZyBpbiBtb3JlIGNvbXBsZXggc2NlbmFyaW9zLgoKVGhlIERTTCBpcyBkaXJlY3RseSBtYXBwZWQgdG8gdGhlIHVuZGVybHlpbmcgT3BlbkFQSSBtb2RlbCAtIHNvIGl0IHNob3VsZCBiZSB2ZXJ5IGZhbWlsaWFyIHRvIGV4aXN0aW5nIGF1dGhvcnMuIFRoZXJlIHdpbGwgYWxzbyBiZSBjb252ZXJ0ZXJzIHRvIGFjY2VwdCBPcGVuQVBJIEFQSSBkZWZpbml0aW9ucyBhbmQgY29udmVydCB0aGVzZSB0byB0aGUgRFNMIGF1dGhvcmluZyBmb3JtYXQuCgojIyMgRXhhbXBsZXMKClRoaXMgWUFNTDoKYGBgeWFtbAppbmZvOgogIHZlcnNpb246IDEuMC4wCiAgdGl0bGU6IFN3YWdnZXIgUGV0c3RvcmUKICBsaWNlbnNlOgogICAgbmFtZTogTUlUCmBgYAogICAgCmlzIGVxdWl2YWxlbnQgdG8gdGhpcyBEU0wKCmBgYGdyb292eQppbmZvIHsgICAgICAgIAogICAgICAgIHRpdGxlICJTd2FnZ2VyIFBldHN0b3JlIgogICAgICAgIHZlcnNpb24gIjEuMC4wIgogICAgICAgIGxpY2Vuc2UgewogICAgICAgICAgICBuYW1lICJNSVQiCiAgICAgICAgfQogICAgfQpgYGAgICAgCiAgICAKIyMgRGVmaW5pbmcgYSBwYXRoOgoKYGBgZ3Jvb3Z5CgpwYXRoKCIvcGV0cy97aWR9IikgewogICAgICAgCiAgICAgICAgb3BlcmF0aW9uKE9wZXJhdGlvblR5cGUuR0VULCAnZ2V0UGV0JykgewogICAgICAgICAgICByZXNwb25zZSgnMjAwJykgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBldCBzdWNjZXNzZnVsbHkgZm91bmQiCiAgICAgICAgICAgICAgICBjb250ZW50KCdhcHBsaWNhdGlvbi9qc29uJykgewogICAgICAgICAgICAgICAgICAgIHNjaGVtYSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlZiBzY2hlbWE6ICdQZXQnCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogIC8qIC4uIG1vcmUgQVBJcyAuLiAqLwp9CmBgYAoKIyMgQXZvaWRpbmcgRFJZCgpZb3UgY2FuIGRlZmluZSBmdW5jdGlvbnMsIHRoZW4gZXZhbHVhdGUgdGhlbSBpbiBldmVyeSBkZWNsYXJlZCBvcGVyYXRpb24gdG8gYXZvaWQgcmVwZWF0ZWQgc3BlY2lmaWNhdGlvbi4gRS5nOgoKYGBgZ3Jvb3Z5CnBhdGgoIi9wZXRzL3tpZH0iKSB7CgogICAgICAgIGNvbW1vbl9wYXJhbWV0ZXJzID0gewogICAgICAgICAgICB0YWdzICJQZXRzIgoKICAgICAgICAgICAgcGFyYW1ldGVyKGlkOiBTdHJpbmcsIGluOiAncGF0aCcpIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgSUQgb2YgdGhlIHBldCIKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmVzcG9uc2UoJzQwNCcpIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgcGV0IHdhcyBub3QgZm91bmQiCiAgICAgICAgICAgIH0KCgogICAgICAgIH0KCiAgICAgICAgb3BlcmF0aW9uKE9wZXJhdGlvblR5cGUuR0VULCAnZ2V0UGV0JykgewogICAgICAgICAgICBldmFsdWF0ZSBjb21tb25fcGFyYW1ldGVyczsgLy8gPC0tIEluY2x1ZGUgZXZlcnl0aGluZyBhYm92ZQoKICAgICAgICAgICAgcmVzcG9uc2UoJzIwMCcpIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQZXQgc3VjY2Vzc2Z1bGx5IGZvdW5kIgogICAgICAgICAgICAgICAgY29udGVudCgnYXBwbGljYXRpb24vanNvbicpIHsKICAgICAgICAgICAgICAgICAgICBzY2hlbWEgewogICAgICAgICAgICAgICAgICAgICAgICByZWYgc2NoZW1hOiAnUGV0JwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gICAKfQpgYGAKCiMjIEluY2x1ZGluZyBmaWxlcwoKRmlsZXMgY2FuIGJlIGluY2x1ZGVkIHRocm91Z2ggdGhlaXIgcmVsYXRpdmUgcGF0aDoKCmBgYGdyb292eQogICBjb21wb25lbnRzIHsKICAgICAgICBpbmNsdWRlICdzY2hlbWEvY29tbW9uL0FzeW5jUmVzcG9uc2Uuc2NoZW1hJyAvLyBJbmNsdWRlZCBmaWxlCiAgICAgICAgCiAgICAgICAgLy8gT3Igc3BlY2lmeSBkaXJlY3RseSBoZXJlCiAgICAgICAgc2NoZW1hKCdUaGluZycpIHsKICAgICAgICAgICAgcmVxdWlyZWQgc2NoZW1hIChpZDpTdHJpbmcpIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGlmaWVyIGZvciB0aGlzIHRoaW5nIgogICAgICAgICAgICB9CgogICAgICAgICAgICBzY2hlbWEoJ3JlYXNvbic6U3RyaW5nKSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUmVhc29uIGZvciB0aGUgcmVxdWVzdCIKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc2NoZW1hKCdyZXF1aXJlbWVudHMnKSB7CiAgICAgICAgICAgICAgICBzY2hlbWEobmFtZTpTdHJpbmcpCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICB9CmBgYCAgIAoKIyMjIFF1aWNrc3RhcnQ6CgoKIyMjIyBVc2UgdGhyb3VnaCBkb2NrZXIKCiogQ29udmVydGluZyBhIHNpbmdsZSwgaXNvbGF0ZWQgZmlsZSAobm90IHN1aXRhYmxlIGlmIHlvdSB1c2UgaW5jbHVkZXMpCgpgYGBiYXNoIApkb2NrZXIgcnVuIC1pIG1hZ25heW4vYmVsdmVkZXJlIGNvbnZlcnQgLSA8ICB+L215ZmlsZS5hcGkgID4gfi9teWZpbGUueWFtbApgYGAKCiogQ29udmVydGluZyBhIGZpbGUKCmBgYGJhc2gKZG9ja2VyIHJ1biAtdiB+L2FwaTovYXBpIC1pIG1hZ25heW4vYmVsdmVkZXJlIGNvbnZlcnQgLWYgL2FwaS9jcnVkMS5hcGkgPiB+L2FwaS9jcnVkMS55YW1sCmBgYAoK readmeEtag: '"a94e4fab266465b754d41e2020bed730dff92543"' readmeLastModified: Fri, 21 Feb 2020 11:35:05 GMT repositoryId: 202089566 description: Write OpenAPI specifications an easier way created: '2019-08-13T07:31:50Z' updated: '2020-02-21T11:35:18Z' language: Groovy archived: false stars: 0 watchers: 1 forks: 1 owner: magnayn logo: https://avatars.githubusercontent.com/u/53653?v=4 license: Apache-2.0 repoEtag: '"46ad213dbac56ecda51e5187b6e65e1e5b214a25ea2e650addf292e199681f27"' repoLastModified: Fri, 21 Feb 2020 11:35:18 GMT foundInMaster: true category: Parsers id: 01f3b0bfcfe34c56388b7931774c15a3 - source: openapi3 tags repository: https://github.com/britishgas-engineering/openapi3-joiner v3: true repositoryMetadata: base64Readme: >- IyBPcGVuIEFQSSAzIGpvaW5lcgpOb2RlIHNjcmlwdCB0byBtZXJnZSBtdWx0aXBsZSBPcGVuIEFQSSAzIHNwZWNpZmljYXRpb25zIGludG8gc2luZ2xlIHNwZWNpZmljYXRpb24KCkluIGEgbWljcm9zZXJ2aWNlIGFyY2hpdGVjdHVyZSwgZWFjaCBtaWNyb3NlcnZpY2UgaGFzIGl0cyBvd24gQVBJIGRvY3VtZW50YXRpb24uCk9mdGVuIHRoZSBhcGlzIGFyZSBleHBvc2VkIGJlaGluZCBhbiBBUEkgZ2F0ZXdheSB0byBnaXZlIHNpbmdsZSBpbnRlcmZhY2UgdG8gdGhlIGNsaWVudHMuClRoYXQgY3JlYXRlcyBhIG5lZWQgdG8gaGF2ZSBhIHNpZ2xlIEFQSSBzcGVjaWZpY2F0aW9uLgoKVGhpcyBzY3JpcHQgaXMgYSB0b29sIHRvIG1lcmdlIG11bHRpcGxlIE9wZW4gQVBJIDMgc3BlY2lmaWNhdGlvbnMgKGpzb24gb3IgeWFtbCkgCmludG8gYSBzaW5nbGUgc3BlY2lmaWNhdGlvbgoKIyBIb3cgdG8gcnVuPwpgbnBtIGluc3RhbGxgCgpgbm9kZSBpbnZva2UuanNgCihQbGVhc2UgcmVmZXIgW2ludm9rZS5qc10oLi9pbnZva2UuanMpIGZvciBtb3JlIGRldGFpbHMpCgo= readmeEtag: '"bee7a1f0b50224fa98824fe5cdc94275b5a2d7ec"' readmeLastModified: Fri, 15 Feb 2019 15:19:00 GMT repositoryId: 170882510 description: >- Node script to merge multiple Open API 3 specifications into single specification created: '2019-02-15T15:03:48Z' updated: '2019-11-08T11:17:52Z' language: JavaScript archived: false stars: 0 watchers: 3 forks: 0 owner: britishgas-engineering logo: https://avatars.githubusercontent.com/u/23475527?v=4 license: MIT repoEtag: '"4066a4befd415b976eba288fdec629ca2b79e3a2a48445c7656f54e5d644007b"' repoLastModified: Fri, 08 Nov 2019 11:17:52 GMT foundInMaster: true category: - Documentation - Parsers - Server Implementations id: 902a9f21d76febce5d2241c568a39909 - source: openapi3 tags repository: https://github.com/zemanlx/openapi-spec-validator v3: true repositoryMetadata: base64Readme: >- IyBEb2NrZXIgaW1hZ2UgZm9yIG9wZWFuYXBpLXNwZWMtdmFsaWRhdG9yCgpJbWFnZXMgYXJlIGJhc2VkIG9uIFB5dGhvbiBvbiBBbHBpbmUgYW5kIGNvbnRhaW5zIG9ubHkgYWRkZWQgW29wZW5hcGktc3BlYy12YWxpZGF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9wMWMydS9vcGVuYXBpLXNwZWMtdmFsaWRhdG9yKS4KClRhZ3MgYXJlIGNvcHlpbmcgdmFsaWRhdG9yIHZlcnNpb24uCgojIyBVc2FnZQoKTGV0cyBzYXkgdGhhdCB5b3VyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBpcyBpbiB5b3VyIGN1cnJlbnQgZm9sZGVyIGluIGZvbGRlciBgc3BlY2AgaW4gZmlsZSBgb3BlbmFwaS55YW1sYC4gVG8gdmFsaWRhdGUgaXQgcnVuCgpgYGBiYXNoCmRvY2tlciBydW4gXAogIC0tcm0gXAogIC0tdm9sdW1lICR7UFdEfS9zcGVjOi9zcGVjIFwKICB6ZW1hbmx4L29wZW5hcGktc3BlYy12YWxpZGF0b3I6MC4yLjAgXAogIC9zcGVjL29wZW5hcGkueWFtbApgYGAK readmeEtag: '"01c77261c4619ab000864863fc22b4e89c22c75b"' readmeLastModified: Fri, 18 May 2018 12:55:41 GMT repositoryId: 133953552 description: Docker image for opeanapi-spec-validator created: '2018-05-18T12:48:32Z' updated: '2018-05-18T14:14:49Z' language: Shell archived: false stars: 0 watchers: 1 forks: 0 owner: zemanlx logo: https://avatars.githubusercontent.com/u/18702153?v=4 license: MIT repoEtag: '"e7d7a147665853b3ad002f9767bfeba80675e2ff3a1c9dcc48e4a26d6379f20b"' repoLastModified: Fri, 18 May 2018 14:14:49 GMT foundInMaster: true category: - Description Validators - Parsers id: 9457be94322926df039e28ee1f8dfa63 - source: openapi3 tags repository: https://github.com/shaswatsaxena/task-management v3: true repositoryMetadata: base64Readme: >- IyMgRGVzY3JpcHRpb24KClRhc2sgTWFuYWdlbWVudCBBUEkuCgojIyBJbnN0YWxsYXRpb24KCmBgYGJhc2gKJCBucG0gaW5zdGFsbApgYGAKCi0gUmVxdWlyZXMgUG9zdGdyZVNRTCBpbnN0YW5jZSBydW5uaW5nCi0gUHJvdmlkZSB2YWx1ZXMgdG8gYWxsIHNhbXBsZS5lbnYgdmFyaWFibGVzCi0gUmVuYW1lIHNhbXBsZS5lbnYgdG8gLmVudgoKIyMgUnVubmluZyB0aGUgYXBwCgpgYGBiYXNoCiMgZGV2ZWxvcG1lbnQKJCBucG0gcnVuIHN0YXJ0CgojIHdhdGNoIG1vZGUKJCBucG0gcnVuIHN0YXJ0OmRldgoKIyBwcm9kdWN0aW9uIG1vZGUKJCBucG0gcnVuIHN0YXJ0OnByb2QKYGBgCgojIyBUZXN0CgpDcmVhdGUgYSBkYXRhYmFzZSBuYW1lZCAiZTJlX3Rlc3QiIHRvIGJlIHVzZWQgZm9yIHRlc3RpbmcuCgpgYGBiYXNoCiMgZW5kIHRvIGVuZCB0ZXN0cwokIG5wbSBydW4gdGVzdApgYGAKCi0gQXV0aG9yIC0gU2hhc3dhdCBTYXhlbmEK readmeEtag: '"852e77d5c4fd229bb6e650486e50919dc3503886"' readmeLastModified: Thu, 04 Feb 2021 16:25:01 GMT repositoryId: 266953057 description: 'Task Management API ' created: '2020-05-26T05:32:20Z' updated: '2021-04-10T14:14:21Z' language: TypeScript archived: false stars: 0 watchers: 0 forks: 0 owner: shaswatsaxena logo: https://avatars.githubusercontent.com/u/12628996?v=4 repoEtag: '"69107ebc576427e2fa67963540ab771a4d09bb1657836c05c6732868d707193a"' repoLastModified: Sat, 10 Apr 2021 14:14:21 GMT foundInMaster: true category: - Converters - Server Implementations id: 01c6c5eceb2b5bf710c27e0da567911f - source: openapi3 tags repository: https://github.com/eoinkane/penny-calc-backend v3: true repositoryMetadata: base64Readme: >- IyBfX1Blbm55LUNhbGMgQmFja2VuZF9fCgpUaGlzIHByb2plY3QgaGVscHMgYSB1c2VyIGNvbXBsZXRlIHRoZSAxcCBzYXZpbmcgY2hhbGxlbmdlczoKCiogVGhlIDFwIFNhdmluZ3MgQ2hhbGxlbmdlClsqbW9yZSBpbmZvKl0oaHR0cHM6Ly9tb256by5jb20vYmxvZy8xcC1zYXZpbmdzLWNoYWxsZW5nZS0yMDIwICdsaW5rJykgIAoqIFRoZSBSZXZlcnNlIDFwIFNhdmluZ3MgQ2hhbGxlbmdlClsqbW9yZSBpbmZvKl0oaHR0cHM6Ly9tb256by5jb20vYmxvZy8yMDE5LzA2LzA0L3JldmVyc2UtMXAtc2F2aW5ncy1jaGFsbGVuZ2UtbW9uem8gJ2xpbmsnKQoKX19UaGlzIHByb2plY3QgaGFzIDIgc2VjdGlvbnM6X18gIAoKKiBfX0JhY2tlbmQgQ29kZV9fCiogX19JbmZyYXN0cnVjdHVyZSBhcyBDb2RlIChDREspX18KCiMjIF9fQmFja2VuZCBDb2RlX18KClRoZSBsb2dpYyBjb2RlIGlzIHdyaXR0ZW4gaW4gcHl0aG9uIGFuZCBzdG9yZWQgaW4gYC4vYXBwYAoKIyMjIF9fTGlzdCBvZiBTY3JpcHRzX18KCiogX19gYW1vdW50L3VudGlsL25leHRfcGF5ZGF5YF9fCgogICAgVGhpcyBsYW1iZGEgY2FsY3VsYXRlcyBob3cgbWFueSBkYXlzIHRpbGwgbmV4dCBwYXlkYXkgdGhlbiByZXR1cm5zIHRoZSBhbW91bnQgdGhhdCBuZWVkcyB0byBiZSBzYXZlZCBiZXR3ZWVuIG5vdyBhbmQgdGhlbiAgCiAgICBUaGlzIGludm9sdmVzIG11bHRpcGx5aW5nIHRoZSBudW1iZXIgZGF5cyBieSB0aGUgZGFpbHkgc2F2aW5nIGFtb3VudCAoMy42NikgIAogICAgVGhlIGZpbGUgaXMgYGFwcC9zcmMvYW1vdW50L3VudGlsL25leHRfcGF5ZGF5L2FwcC5weWAgIAogICAgVGhlIGVudHJ5cG9pbnQgaXMgYGxhbWJkYV9oYW5kbGVyYAoKIyMgX19JbmZyYXN0cnVjdHVyZSBhcyBDb2RlIChDREspX18KClRoZSBDREsgaXMgd3JpdHRlbiBpbiBUeXBlU2NyaXB0ICAKClRoaXMgcHJvamVjdCBoYXMgYmVlbiBidWlsdCB1c2luZyBBV1MgQ0RLIHZlcnNpb24gX18xLjYxLjFfXyAgClRoZSBjZGsgY2xpIHRvb2wgcmVxdWlyZXMgYXdzIGNyZWRlbnRpYWxzLiAgCkkgdXNlIGFuIEFXUyBlZHVjYXRlIGFjY291bnQgW21vcmUgaW5mb10oaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9lZHVjYXRpb24vYXdzZWR1Y2F0ZS9zdHVkZW50cy8gJ2xpbmsnKSAgCkJ1dCBhbnkgYWNjb3VudCB0aGF0IGhhcyB0aGVzZSBjcmVkZW50aWFsczogKmF3c19hY2Nlc3Nfa2V5X2lkKjsgKmF3c19zZWNyZXRfYWNjZXNzX2tleSo7ICphd3Nfc2Vzc2lvbl90b2tlbio7IHdpbGwgZG8KCklmIHlvdSBoYXZlIG5vdCB1c2VkIENESyBpbiB5b3VyIEFXUyBhY2NvdW50IGJlZm9yZSBwbGVhc2UgcnVuIGBjZGsgYm9vdHN0cmFwYCBiZWZvcmUgc3RhcnRpbmcKCiMjIyBfX0NvbXBvbmVudHNfXwoKVGhlIENESyBpbmNsdWRlcyAyIGNvbXBvbmVudHMKCiogX19BUEkgR2F0ZXdheV9fCiogX19MYW1iZGEgRnVuY3Rpb25fXwoKIyMjIF9fTGFtYmRhIEZ1bmN0aW9uX18KClRoZSBTZXJ2ZXJsZXNzIGZ1bmN0aW9uIGFsbG93cyB1cyB0byBjYWxsIG91ciBTY3JpcHRzCgojIyMjIF9fTGlzdCBvZiBMYW1iZGFzX18gIAoKKiBfX2BwZW5ueS1jYWxjLWFtb3VudC11bnRpbC1uZXh0LXBheWRheS1sYW1iZGFgX18gIAogICAgVGhpcyBsYW1iZGEgcnVucyB0aGUgYGFtb3VudC91bnRpbC9uZXh0X3BheWRheWAgc2NyaXB0ICAKCiMjIyBfX0FQSSBHYXRld2F5X18KClRoZSBBUEkgR2F0ZXdheSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGJhY2tlbmQgdGhyb3VnaCBSZXN0IEFQSSBjYWxscy4gIAoKIyMjIyBfX0VuZHBvaW50c19fCgoqIF9fYC9hbW91bnQvdW50aWwvbmV4dC1wYXlkYXlgX18KICAgIFRoaXMgZW5kcG9pbnQgaXMgYSBHRVQgbWV0aG9kIGVuZHBvaW50ICAKICAgIFVzaW5nIGFuIEFXU19QUk9YWSBsYW1kYmEgaW50ZWdyYXRpb24gIAogICAgVGhpcyBlbmRwb2ludCBsaW5rcyB1cCB0byB0aGUgbGFtYmRhIG5hbWVkIGBwZW5ueS1jYWxjLWFtb3VudC11bnRpbC1uZXh0LXBheWRheS1sYW1iZGFgCgojIyBfX0NvbWFuZHNfXwoKSXQgaXMgcmVjY29tbWVuZGVkIHRvIGluc3RhbGwgdGhlIHBhY2thZ2VzIHJlcXVpcmVkICAKKnJ1biB0aGVzZSBjb21tYW5kcyB0byBnZXQgc3RhcnRlZCogIAoKKiBgUElQRU5WX1ZFTlZfSU5fUFJPSkVDVD0xIHBpcGVudiBpbnN0YWxsIC0tZGV2YCAgCiogYFBJUEVOVl9WRU5WX0lOX1BST0pFQ1Q9MSBwaXBlbnYgaW5zdGFsbGAgIAoqIGBucG0gaW5zdGFsbGAKKiBgZXhwb3J0ICQoY2F0IC5lbnYgfCB4YXJncylgCgpFdmVyeSB0aW1lIHlvdSBjaGFuZ2UgdmFsdWVzIGluIGAvLmVudmAgcnVuIGBleHBvcnQgJChjYXQgLmVudiB8IHhhcmdzKWAKCkEgbnVtYmVyIG9mIHRoZSBjb21tYW5kcyByZWx5IG9uIHRoZSBjZGsgY2xpIGFuZCBzbyBwbGVhc2UgaGF2ZSBhIHZhbGlkIHNlc3Npb24vdG9rZW4gZnJvbSBBV1MKCiMjIyBfX0xpc3Qgb2YgQ29tYW5kc19fCgoqIF9fYG5wbSBydW4gYnVpbGRgX18KICAgIFJ1bnMgdGhlIGZvbGxvd2luZyBjb21tYW5kcwoKICAqIGBidWlsZC1weXRob25gCiAgKiBgYnVpbGQtY2RrYAoKKiBfX2BucG0gcnVuIGJ1aWxkLXB5dGhvbmBfXyAgCiAgICBUaGlzIGNvbW1hbmQgYnVpbGRzIHRoZSBweXRob24gY29kZSB3aXRoIHRoZSBwYWNrYWdlcyBpbnN0YWxsZWQgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5CiogX19gbnBtIHJ1biBidWlsZC1jZGtgX18gIAogICAgUnVucyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzCgogICogYGNsZWFuLWNka2AKICAqIGBjZGstc3ludGhgCgoqIF9fYG5wbSBydW4gY2RrLXN5bnRoYF9fICAKICAgIFRoaXMgY29tbWFuZCBidWlsZHMgYSBjbG91ZGZvcm1hdGlvbiB0ZW1wbGF0ZSBmcm9tIHRoZSBDREsgc3RhY2sgIAogICAgKlByZXF1aXNpdGU6IGBidWlsZC1weXRob25gKgoqIF9fYG5wbSBydW4gY2RrLWRpZmZgX18gIAogICAgVGhpcyBjb21tYW5kIHNob3dzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGxhdGVzdCB0ZW1wbGF0ZSBhbmQgdGhlIHByZXZpb3VzIG9uZQoqIF9fYG5wbSBydW4gZGVwbG95YF9fICAKICAgIFRoaXMgY29tbWFuZCBkZXBsb3lzIHRoZSBjbG91ZGZvcm1hdGlvbiBzdGFjayAgCiAgICAqUHJlcXVpc2l0ZTogYGNrZC1zeW50aGAqCiogX19gbnBtIHJ1biBkZXBsb3ktY2lgX18gIAogICAgRm9sbG93cyB0aGUgc2FtZSBiZWhhdmlvdXIgYXMgYGNkay1kZXBsb3lgIGJ1dCBkb2VzIG5vdCBhc2sgZm9yIGNvbmZpcm1hdGlvbiAgCiAgICAqUHJlcXVpc2l0ZTogYGNrZC1zeW50aGAqCiogX19gbnBtIHJ1biB0ZXN0LWNka2BfXyAgCiAgICBUZXN0cyB0aGUgQ0RLIHN0YWNrCiAgICAqUmVmZXIgdG8gdGhlIFRlc3RpbmcgU2VjdGlvbioKKiBfX2BucG0gcnVuIHRlc3QtcHl0aG9uYF9fICAKICAgIFRlc3RzIHRoZSBQeXRob24gc2NyaXB0cwogICAgKlJlZmVyIHRvIHRoZSBUZXN0aW5nIFNlY3Rpb24qCiogX19gbnBtIHJ1biB0c2NgX18gIAogICAgUnVucyB0aGUgdHlwZXNjcmlwdCBjb21wbGllcgoqIF9fYG5wbSBydW4gY2xlYW5gX18gIAogICAgUnVucyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzCgogICogYGNsZWFuLXRlc3RzYAogICogYGNsZWFuLWJ1aWxkYAogICogYGNsZWFuLWNka2AKCiogX19gbnBtIHJ1biBjbGVhbi10ZXN0c2BfXyAgCiAgICBSZW1vdmVzIHRlbXBvcmFyeSB0ZXN0IGZpbGVzCiogX19gbnBtIHJ1biBjbGVhbi1idWlsZGBfXyAgCiAgICBSZW1vdmVzIHRlbXBvcmFyeSBidWlsZCBmaWxlcwoqIF9fYG5wbSBydW4gY2xlYW4tY2RrYF9fICAKICAgIFJlbW92ZXMgdGVtcG9yYXJ5IGNkayBmaWxlcwoqIF9fYG5wbSBydW4gcnVuLWxhbWJkYS1sb2NhbGBfXyAgCiAgICBSdW5zIHRoZSBsYW1iZGEgbG9jYWxseQoKIyMgX19UZXN0aW5nX18KClRoZXJlIGFyZSB0ZXN0cyBmb3IgYm90aCB0aGUgY2RrIHN0YWNrIGFuZCBiYWNrZW5kIGNvZGUgIAoKKiBfX0NESyB0ZXN0c19fCiAgICBfX2BucG0gcnVuIHRlc3QtY2RrYF9fCiAgICBXcml0dGVuIGluIFR5cGVTY3JpcHQgYW5kIHVzaW5nIGplc3QgYXMgdGhlIHRlc3QgcnVubmVyCiogX19QeXRob24gdGVzdHNfXwogICAgX19gbnBtIHJ1biB0ZXN0LXB5dGhvbmBfXwogICAgV3JpdHRlbiBpbiBweXRob24gYW5kIHVzaW5nIHB5dGVzdCBhcyB0aGUgdGVzdCBydW5uZXIKCgojIyBXZWxjb21lIHRvIHlvdXIgQ0RLIFR5cGVTY3JpcHQgcHJvamVjdAoKVGhpcyBpcyBhIGJsYW5rIHByb2plY3QgZm9yIFR5cGVTY3JpcHQgZGV2ZWxvcG1lbnQgd2l0aCBDREsuCgpUaGUgYGNkay5qc29uYCBmaWxlIHRlbGxzIHRoZSBDREsgVG9vbGtpdCBob3cgdG8gZXhlY3V0ZSB5b3VyIGFwcC4KCiMjIFVzZWZ1bCBjb21tYW5kcwoKKiBgbnBtIHJ1biBidWlsZGAgICBjb21waWxlIHR5cGVzY3JpcHQgdG8ganMKKiBgbnBtIHJ1biB3YXRjaGAgICB3YXRjaCBmb3IgY2hhbmdlcyBhbmQgY29tcGlsZQoqIGBucG0gcnVuIHRlc3RgICAgIHBlcmZvcm0gdGhlIGplc3QgdW5pdCB0ZXN0cwoqIGBjZGsgZGVwbG95YCAgICAgIGRlcGxveSB0aGlzIHN0YWNrIHRvIHlvdXIgZGVmYXVsdCBBV1MgYWNjb3VudC9yZWdpb24KKiBgY2RrIGRpZmZgICAgICAgICBjb21wYXJlIGRlcGxveWVkIHN0YWNrIHdpdGggY3VycmVudCBzdGF0ZQoqIGBjZGsgc3ludGhgICAgICAgIGVtaXRzIHRoZSBzeW50aGVzaXplZCBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZQo= readmeEtag: '"8797870617f94a1a8ebbd2ed544618d2d823e952"' readmeLastModified: Fri, 04 Sep 2020 14:44:27 GMT repositoryId: 292794834 description: 'This project helps a user complete the 1p saving challenges:' created: '2020-09-04T08:33:56Z' updated: '2020-09-04T14:44:51Z' language: Python archived: false stars: 0 watchers: 1 forks: 0 owner: eoinkane logo: https://avatars.githubusercontent.com/u/10391408?v=4 repoEtag: '"6128219ccc8782099b3e06193c51aad5180b99dfd8838d2202306a8f73bb453a"' repoLastModified: Fri, 04 Sep 2020 14:44:51 GMT foundInMaster: true category: Server Implementations id: c22999086a3109365e79e2907ee01912 - source: openapi3 tags repository: https://github.com/nielsbergsma/haskell-api-prototype v3: true repositoryMetadata: base64Readme: >- IyBIYXNrZWxsIEFQSSBwcm90b3R5cGUKCiMjIFdoYXQgaXMgdGhpcz8KVGhpcyBpcyBteSByZXNlYXJjaCBpbnRvIHRoZSB3b3JsZCBvZiBIYXNrZWxsLiBTcGVjaWNpZmljbHkgaG93IHRvIGJ1aWxkIG1vZGVybiBhcHBsaWNhdGlvbnMgKGFyY2hpdGVjdHVyZXMpIHdpdGggSGFza2VsbCwgZnVuY3Rpb25hbCBzdHlsZS4gVG9waWNzIHdpbGwgaW5jbHVkZSwgYnV0IG5vdCBsaW1pdGVkIHRvOgotIHJlc3RmdWwgQVBJCi0gZG9tYWluIGRyaXZlbiBkZXNpZ24KLSBDUVJTIC8gZXZlbnQgc291cmNpbmcKLSBzcGVjaWZpY2F0aW9uIGJ5IGV4YW1wbGUKLSBhbmQgc28gb24gLi4uCgpUaGlzIHJlcG9zaXRvcnkgaXMgKGN1cnJlbnRseSkgbWVyZWx5IGEgcmVjb3JkaW5nIG9mIG15IHByb2dyZXNzLgoKIyMgV2hhdCdzIGRvbmU/IGFuZCB3aGF0J3MgbmV4dD8KLSBbeF0gbGlnaHR3ZWlnaHQgYWJzdHJhY3Rpb24gb24gdG9wIG9mIFdBSSwgYXMgYSBtaWNybyBSZXN0ZnVsIGxpYnJhcnkKLSBbeF0gYXV0by1nZW5lcmF0ZSBBUEkgYmFzZWQgb3AgT3BlbkFQSSB2MyBzcGVjCi0gW3hdIHZhbGlkYXRlIHVybCArIHF1ZXJ5IHBhcmFtZXRlcnMKLSBbeF0gdmFsaWRhdGUganNvbiBib2R5LCBiYXNlZCBvbiBPcGVuQVBJIHYzIHNwZWMKLSBbeF0gdHJhbnNmb3JtIGJvZHkgdG8gdHJhbnNmZXIgb2JqZWN0cyAoZm9yIGJvdGggcHJvZHVjdCBhbmQgc3VtIHR5cGVzKQotIFt4XSBjb21wcmVoZW5zaXZlIHZhbGlkYXRpb24gRFNMIChqc29uIGJvZHksIHVybCArIHF1ZXJ5IHBhcmFtZXRlcnMpCi0gW3hdIHN0cm9uZyB0eXBlZCBlcnJvciBtZXNzYWdlcyAoaHVtYW4gKyBtYWNoaW5lIGludGVycHJldGFibGUpLCBpbmNsdWRlcyBKU09OIHBhdGggZm9yIFJlcXVlc3QgQm9keSBlcnJvciBtZXNzYWdlcwotIFt4XSBKV1QgYXV0aG9yaXphdGlvbiAvIGF1dGhlbnRpY2F0aW9uLCByb2xlIGJhc2VkIHdpdGggSldLIHZhbGlkYXRpb24KLSBbIF0gImF1dG8gd2lyZSIgdHJhbnNmZXIgb2JqZWN0cyB0byBjb21tYW5kcwotIFsgXSBjb21tYW5kIGhhbmRsZXJzLCBzYWdhcywgcHJvY2VzcyBtYW5hZ2VycwotIFsgXSBhZ2dyZWdhdGVzLCBzdGF0ZSwgcGVyc2lzdGVuY2UKLSBbIF0gZXZlbnQsIGV2ZW50IGhhbmRsZXJzCi0gWyBdIC4uLiBtb3JlIHRvIGNvbWUKCiMjIFVzZSBvciBpbXByb3ZlPwpTdXJlLCBqdXN0IHNob290IG1lIGEgbWVzc2FnZS4= readmeEtag: '"68d393938c8d8f6c4815c954c6655f92bf103441"' readmeLastModified: Sun, 12 Apr 2020 18:10:37 GMT repositoryId: 255094421 description: haskell rest api prototype created: '2020-04-12T14:00:16Z' updated: '2020-04-12T18:10:45Z' language: Haskell archived: false stars: 0 watchers: 1 forks: 0 owner: nielsbergsma logo: https://avatars.githubusercontent.com/u/1736958?v=4 repoEtag: '"d78c7fb19b641a2cab763e8625bff2900087329e7b0cb43f2110bf2b7094dfbd"' repoLastModified: Sun, 12 Apr 2020 18:10:45 GMT foundInMaster: true category: - Parsers - Server Implementations id: 7755d8920695da9bde7e7b085bd2f691 - source: openapi3 tags repository: https://github.com/hcloward/casc-bundle-management v3: true repositoryMetadata: repositoryId: 303161948 description: >- This repository includes an OpenAPI file I created using Stoplight, while completing Tom Johson's API documentation course. created: '2020-10-11T16:19:18Z' updated: '2020-10-23T16:27:40Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: HCloward logo: https://avatars.githubusercontent.com/u/17242298?v=4 repoEtag: '"b6ccaf4686556cf438cfc8853753227854d21885f37b17ff1bca7fd4168badbe"' repoLastModified: Fri, 23 Oct 2020 16:27:40 GMT foundInMaster: true id: 61ea4572af4f152e072a62c8539d9795 - source: openapi3 tags repository: https://github.com/hoangnx30/sample-express-with-swagger v3: true repositoryMetadata: base64Readme: >- KipBIGV4YW1wbGUgYWJvdXQgdXNpbmcgc3dhZ2dlci11aSBpbiBub2RlanMgdG8gdGVzdCBhcGkqKgo= readmeEtag: '"b6c28f8d1dcfcc41f123b7c7b15d940efea6107d"' readmeLastModified: Sun, 08 Nov 2020 10:50:14 GMT repositoryId: 311039169 description: Example about express mongodb swagger created: '2020-11-08T10:41:16Z' updated: '2020-11-08T10:50:24Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: hoangnx30 logo: https://avatars.githubusercontent.com/u/43129138?v=4 repoEtag: '"5ee03264184bad13a0780f2ca745ecd646f94954ea6b1138df653bb86d78aa6b"' repoLastModified: Sun, 08 Nov 2020 10:50:24 GMT foundInMaster: true category: - Low-level Tooling - Parsers - Server Implementations id: dbbd8e27197f94d32201d8b6795a5100 - source: openapi3 tags repository: https://github.com/semestry/oas3-lint v3: true repositoryMetadata: base64Readme: >- IyBvYXMzLWxpbnQKR2l0SHViIEFjdGlvbiBmb3IgbGludGluZyBPcGVuQVBJIFNwZWNpZmljYXRpb24gMyBmaWxlcyB1c2luZyBbU3BlY3RyYWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9wbGlnaHRpby9zcGVjdHJhbCkuCgojIyBVc2FnZQpgYGB5YW1sCmpvYnM6CiAgbGludDoKICAgIG5hbWU6IExpbnQKICAgIHJ1bnMtb246IHVidW50dS1sYXRlc3QKCiAgICBzdGVwczoKICAgICAgLSBuYW1lOiBDaGVja291dAogICAgICAgIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKCiAgICAgIC0gdXNlczogZXZlb2gvb2FzMy1saW50QHYxCiAgICAgICAgd2l0aDoKICAgICAgICAgIHNwZWM6IHBhdGgvdG8vc3BlYy55YW1sCiAgICAgICAgICB0b2tlbjogJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19CmBgYAoKIyMjIE9wdGlvbnMKCiMjIyMgc3BlYyAocmVxdWlyZWQpClRoZSBwYXRoIHRvIHRoZSBzcGVjaWZpY2F0aW9uIGZpbGUgKE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAzLCBZQU1MKSB0aGF0IHNob3VsZCBiZSBsaW50ZWQuCgoqRXhhbXBsZToqCmBgYHlhbWwKd2l0aDoKICBzcGVjOiBwYXRoL3RvL3NwZWMueWFtbApgYGAKCiMjIyMgdG9rZW4gKHJlcXVpcmVkKQpUaGUgR2l0SHViIHRva2VuIHRoYXQgaXMgdXNlZCB0byBjcmVhdGUgdGhlIENoZWNrIFJ1biB1c2luZyB0aGUgR2l0SHViIENoZWNrcyBBUEkuClNob3VsZCBiZSBzZXQgdG8gdGhlIGBHSVRIVUJfVE9LRU5gIHNlY3JldCB0aGF0IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSB0aGUgR2l0SHViIEFjdGlvbnMgcnVubmVyLgogICAgICAgICAgCipFeGFtcGxlOioKYGBgeWFtbAp3aXRoOgogIHRva2VuOiAke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0KYGBgCgojIyMjIHJ1bGVzZXQKUGF0aCB0byB0aGUgcnVsZXNldCBmaWxlLgoKKkV4YW1wbGU6KgpgYGB5YW1sCndpdGg6CiAgcnVsZXNldDogcGF0aC90by8uc3BlY3RyYWwueWFtbApgYGAK readmeEtag: '"5bff17f2d76c1d82c3a5850d19327ea036ed6a44"' readmeLastModified: Sun, 01 Jan 2023 12:26:01 GMT repositoryId: 323617929 description: GitHub Action for linting OpenAPI Specification 3 files created: '2020-12-22T12:20:30Z' updated: '2023-01-05T13:18:32Z' language: JavaScript archived: true stars: 0 watchers: 3 forks: 0 owner: semestry logo: https://avatars.githubusercontent.com/u/1628298?v=4 repoEtag: '"aaef3701fbd5c3b04258e09e124c39b12a741efca800f3ef1a11764978dd7d02"' repoLastModified: Thu, 05 Jan 2023 13:18:32 GMT foundInMaster: true category: - Description Validators - Parsers id: 0c3ba285fd8078e1381b58fcabe3b0b0 - source: openapi3 tags repository: https://github.com/zeet-co/go-artifacthub v3: true repositoryMetadata: base64Readme: >- IyBnby1hcnRpZmFjdGh1YgoKQXV0byBnZW5lcmF0ZWQgdXNpbmcgaHR0cHM6Ly9naXRodWIuY29tL2RlZXBtYXAvb2FwaS1jb2RlZ2VuIGZyb20gaHR0cHM6Ly9hcnRpZmFjdGh1Yi5pby9kb2NzL2FwaS8KCiMjIFVzYWdlCgpgYGAKY2xpZW50LCBlcnIgOj0gYXJ0aWZhY3RodWIuTmV3Q2xpZW50V2l0aFJlc3BvbnNlcygiaHR0cHM6Ly9hcnRpZmFjdGh1Yi5pby9hcGkvdjEiLCBhcnRpZmFjdGh1Yi5XaXRoUmVxdWVzdEVkaXRvckZuKGZ1bmMoY3R4IGNvbnRleHQuQ29udGV4dCwgcmVxICpodHRwLlJlcXVlc3QpIGVycm9yIHsKICByZXEuSGVhZGVyLlNldCgiWC1BUEktS0VZLUlEIiwgIktFWV9JRCIpCiAgcmVxLkhlYWRlci5TZXQoIlgtQVBJLUtFWS1TRUNSRVQiLCAiS0VZX1NFQ1JFVCIpCiAgcmV0dXJuIG5pbAp9KSkKaWYgZXJyICE9IG5pbCB7CiAgcmV0dXJuIG5pbCwgZXJyCn0KCnJlc3AsIGVyciA6PSBjbGllbnQuR2V0SGVsbVBhY2thZ2VEZXRhaWxzV2l0aFJlc3BvbnNlKGN0eCwgInJlcG8iLCAicGFja2FnZSIpCmlmIGVyciAhPSBuaWwgewogIHJldHVybiBuaWwsIGVycgp9CmBgYAo= readmeEtag: '"300551ecf0f8255bb007cf0bc91d1746f91829a9"' readmeLastModified: Wed, 22 Sep 2021 19:13:21 GMT repositoryId: 409325296 description: artifacthub go client created: '2021-09-22T19:07:41Z' updated: '2021-09-22T19:16:05Z' language: Makefile archived: false stars: 0 watchers: 2 forks: 0 owner: zeet-co logo: https://avatars.githubusercontent.com/u/74479726?v=4 license: MIT repoEtag: '"724381780123193012199fe35db8e7582470b45f101e1ddc311da83c935450cd"' repoLastModified: Wed, 22 Sep 2021 19:16:05 GMT foundInMaster: true category: Data Validators id: 19d546adc3b9f0775d5d82791295eba2 - source: openapi3 tags repository: https://github.com/romabilka/generate-openapi-go-server v3: true repositoryMetadata: base64Readme: >- IyBHZW5lcmF0ZSBPcGVuYXBpIEdPIFNlcnZlcgoKIyNFeGFtcGxlIEdPIFNlcnZlciAoZ2VuZXJhdGUgYnkgT3BlbmFwaSkKCiMjIExpY2Vuc2UKW01JVCBsaWNlbnNlXShMSUNFTlNFLm1kKS4= readmeEtag: '"baa4ade4d4aed6af409ccf9cbc211f6fb2a27f42"' readmeLastModified: Thu, 03 Mar 2022 08:14:13 GMT repositoryId: 443337799 description: null created: '2021-12-31T12:11:33Z' updated: '2022-03-03T10:02:45Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: RomaBilka logo: https://avatars.githubusercontent.com/u/28790784?v=4 license: NOASSERTION repoEtag: '"7d9eef820c4c4cbbe287bc44c479e66c5d1704dcc7ac3636be0c19d0e844dd27"' repoLastModified: Thu, 03 Mar 2022 10:02:45 GMT foundInMaster: true category: Parsers id: cad28d84ec361611943bc98615e109d5 - source: openapi3 tags repository: https://github.com/himenon/datadog-typescript-openapi v3: true repositoryMetadata: base64Readme: >- IyBAaGltZW5vbi9kYXRhZG9nLXR5cGVzY3JpcHQtb3BlbmFwaQoKYGBgYmFzaAojIHlhcm4KeWFybiBhZGQgLUQgQGhpbWVub24vZGF0YWRvZy10eXBlc2NyaXB0LW9wZW5hcGkKCiMgcG5wbQpwbnBtIGFkZCAtRCBAaGltZW5vbi9kYXRhZG9nLXR5cGVzY3JpcHQtb3BlbmFwaQpgYGAKCiMjIFVzYWdlCgpgYGB0cwppbXBvcnQgeyBDbGllbnQgfSBmcm9tICJAaGltZW5vbi9kYXRhZG9nLXR5cGVzY3JpcHQtb3BlbmFwaS92MS4wLjAtYmV0YS45IjsKYGBgCgojIyBCdWlsZAoKYGBgdHMKcG5wbSBidWlsZApgYGAKCiMjIE9wZW5BUEkgU291cmNlIGZvciBEYXRhRG9nCgotIDxodHRwczovL2dpdGh1Yi5jb20vRGF0YURvZy9kYXRhZG9nLWFwaS1jbGllbnQtdHlwZXNjcmlwdC90cmVlL21hc3Rlci8uZ2VuZXJhdG9yL3NjaGVtYXMvdjI+CgojIyBPcGVuQVBJIFR5cGVTY3JpcHQgQ29kZSBHZW5lcmF0b3IKCi0gW0BoaW1lbm9uL29wZW5hcGktdHlwZXNjcmlwdC1jb2RlLWdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL0hpbWVub24vb3BlbmFwaS10eXBlc2NyaXB0LWNvZGUtZ2VuZXJhdG9yKQoKWW91IGNhbiBhbHNvIGp1c3QgdXNlIHRoZSB0eXBlIGRlZmluaXRpb24KCiMjIFVzZSBBbm90aGVyIFZlcnNpb24KCkVkaXQgW2NvbmZpZy50c10oLi9zY3JpcHRzL2NvbmZpZy50cykKCiMjIExJQ0VOQ0UKCltASGltZW5vbi9kYXRhZG9nLXR5cGVzY3JpcHQtb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL0hpbWVub24vZGF0YWRvZy10eXBlc2NyaXB0LW9wZW5hcGkp44O7TUlUCg== readmeEtag: '"6721b07de5708a13bbab6aac30497c66f7eb5787"' readmeLastModified: Tue, 22 Mar 2022 12:12:29 GMT repositoryId: 472745541 description: Implementation of TypeScript generated from DataDog OpenAPI created: '2022-03-22T11:53:49Z' updated: '2022-03-22T12:13:27Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: Himenon logo: https://avatars.githubusercontent.com/u/6715229?v=4 license: MIT repoEtag: '"fb5608681f7ebd0d0a47af42c3ed076d46cd7262bf6a5e8a1bb0f9bbe47de646"' repoLastModified: Tue, 22 Mar 2022 12:13:27 GMT foundInMaster: true category: SDK id: 62bcee4c699acc36654248a08ffb9e05 - source: openapi3 tags repository: https://github.com/jinxapi/querylizer v3: true repositoryMetadata: base64Readme: >- IyBxdWVyeWxpemVyCgpSdXN0IHNlcmRlIGxpYnJhcnkgZm9yIE9wZW5BUEkgdjMgcGFyYW1ldGVyIHN0eWxlcy4KClVzZSBgc2VyZGVgIHRvIHByb3ZpZGUgdGhlIGRpZmZlcmVudCBzdHlsZXMgc3VwcG9ydGVkIGluIE9wZW5BUEkgcGFyYW1ldGVycy4KCk9wZW5BUEkgcHJvdmlkZXMgbXVsdGlwbGUgc3R5bGVzIGZvciBvcGVyYXRpb24gcGFyYW1ldGVycy4gIGBxdWVyeWxpemVyYApwcm92aWRlcyBhIHNlcmRlIFNlcmlhbGl6ZXIgZm9yIGVhY2ggc3R5bGUuCgpDdXJyZW50bHkgc3VwcG9ydGVkIHN0eWxlcyBhcmU6Ci0gYGRlZXBPYmplY3RgCi0gYGZvcm1gCi0gYHNpbXBsZWAKClRoZXJlIGlzIGFsc28gYSBgZGVlcGZvcm1gIHN0eWxlIHRoYXQgaXMgdXNlZnVsIGZvciBPcGVuQVBJIHJlcXVlc3QgYm9kaWVzIHRoYXQgbWl4IGBmb3JtYCBhbmQgYGRlZXBPYmplY3RgIHN0eWxlcy4K readmeEtag: '"2a7c64b6cff9f61565c49f694f25d66409a442b4"' readmeLastModified: Fri, 25 Mar 2022 12:41:27 GMT repositoryId: 464859030 description: Rust serde serializers for OpenAPI parameter styles created: '2022-03-01T11:06:26Z' updated: '2025-08-25T17:03:55Z' language: Rust archived: false stars: 0 watchers: 1 forks: 0 owner: jinxapi logo: https://avatars.githubusercontent.com/u/100527532?v=4 license: Apache-2.0 repoEtag: '"b708e87ddb768209a856c72e512e57ac989dfe54b044e5ab98e1e82f9bb3dfec"' repoLastModified: Mon, 25 Aug 2025 17:03:55 GMT foundInMaster: true category: - Server - Parsers id: c9bc1750dce1973ff6b28823453ffbe1 - source: openapi3 tags repository: >- https://github.com/jorgealfonsogarcia/uan-spec-sweng-architecture-2-lab-01-layered v3: true id: cd5729218b4c6502196132907ce427f3 repositoryMetadata: base64Readme: >- IyB1YW4tc3BlYy1zd2VuZy1hcmNoaXRlY3R1cmUtMi1sYWItMDEtbGF5ZXJlZAoKIyMgRVMg8J+HqvCfh7gKCiMjIyBDb250ZXh0bwoKUHJveWVjdG8gcmVhbGl6YWRvIHBhcmEgbGEgVW5pdmVyc2lkYWQgQW50b25pbyBOYXJpw7FvLCBFc3BlY2lhbGl6YWNpw7NuIGVuIEluZ2VuaWVyw61hIGRlIFNvZnR3YXJlLCBBcnF1aXRlY3R1cmEgZGUKU29mdHdhcmUgSUksIGNvcnJlc3BvbmRpZW50ZSBhbCBMYWJvcmF0b3JpbyBOby4xIGFjZXJjYSBkZSBBcnF1aXRlY3R1cmEgZGUgQ2FwYXMgeSBlbCBwYXRyw7NuIEJ1c2luZXNzIERlbGVnYXRlLgoKIyMjIEF1dG9yZXMKCiogSm9yZ2UgR2FyY8OtYQoqIERpZWdvIFBvdmVkYQoKIyMjIExpY2VuY2lhCgpbR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0VdKExJQ0VOU0UubWQpCgojIyMgUmVxdWlzaXRvcwoKKiBKYXZhIDE3LCBkaXNwb25pYmxlIGVuIGh0dHBzOi8vYWRvcHRpdW0ubmV0L2VzL3RlbXVyaW4vcmVsZWFzZXMgCiogQXBhY2hlIE1hdmVuIDMsIGRpc3BvbmlibGUgZW4gaHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnL2Rvd25sb2FkLmh0bWwgCiogVGVuZXIgbG9jYWxtZW50ZSBkaXNwb25pYmxlIGVsIHB1ZXJ0byA4MDgwCgojIyMgQ29uc3RydWNjacOzbgoKKiBFamVjdXRhciBlbiBsYSBjb25zb2xhIGRlbCBzaXN0ZW1hIGxhIHNpZ3VpZW50ZSBpbnN0cnVjY2nDs246CgpgYGBzaGVsbAptdm4gY2xlYW4gY29tcGlsZSBwYWNrYWdlIApgYGAKCiogRWwgYXJjaGl2byBKQVIgbG8gZW5jb250cmFyw6EgZW4gbGEgY2FycGV0YSBgdGFyZ2V0YC4KCiMjIyBFamVjdWNpw7NuCgoqIEVqZWN1dGFyIGVuIGxhIGNvbnNvbGEgZGVsIHNpc3RlbWEgbGEgc2lndWllbnRlIGluc3RydWNjacOzbjoKCmBgYHNoZWxsCmphdmEgLWphciB1YW4tc3BlYy1zd2VuZy1hcmNoaXRlY3R1cmUtMi1sYWItMDEtbGF5ZXJlZC0xLjAuMC5qYXIgCmBgYAoKKiBJbmdyZXNlIGEgbGEgVVJMOiBodHRwOi8vbG9jYWxob3N0OjgwODAvbGFiLTAxLWxheWVyZWQvc3dhZ2dlci11aS9pbmRleC5odG1sCiogRW4gbGEgY29uc29sYSB3ZWIgZGUgT3BlbkFQSSBlbmN1ZW50cmEgbGFzIGRpZmVyZW50ZXMgYWNjaW9uZXMgZGlzcG9uaWJsZXMgcGFyYSBpbnRlcmFjdHVhciBjb24gbG9zIHNlcnZpY2lvcyBSRVNUIGRlCiAgbGEgYXBsaWNhY2nDs24uCiogVGFtYmnDqW4gcHVlZGUgaW50ZXJhY3R1YXIgY29uIGxhIGFwbGljYWNpw7NuIG1lZGlhbnRlIHVuIGNsaWVudGUgSFRUUCAoZWouIFBvc3RtYW4pIGluZGljYW5kbyBjb21vIFVSTAogIGJhc2UgaHR0cDovL2xvY2FsaG9zdDo4MDgwL2xhYi0wMS1sYXllcmVkLwoqIFBhcmEgaW50ZXJhY3R1YXIgY29uIGxhIGJhc2UgZGUgZGF0b3MsIGluZ3Jlc2UgYSBsYSBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDgwL2xhYi0wMS1sYXllcmVkL2gyLWNvbnNvbGUgLiBMb3MgZGF0b3MgZGUKICBhY2Nlc28gc29uIGxvcyBzaWd1aWVudGVzOgoKfCBDYW1wbyAgICB8IFZhbG9yIHwKfC0tLS0tLS0tLS18LS0tLS0tLXwKfCAqKkNvbnRyb2xhZG9yKiogIHwgb3JnLmgyLkRyaXZlciB8CnwgKipVUkwgSkRCQyoqIHwgamRiYzpoMjptZW06bGFiLTAxLWxheWVyZWQgIHwKfCAqKk5vbWJyZSBkZSB1c3VhcmlvKiogfCB1YW4gIHwKfCAqKkNvbnRyYXNlw7FhKiogfCBhcmNoaXRlY3R1cmUgIHwKCiMjIyBEaXNlw7FvCgojIyMjIERpYWdyYW1hIGRlIENsYXNlcwoKRWwgZGlhZ3JhbWEgcmVwcmVzZW50YSBlbCB1c28gZGVsIHBhdHLDs24gKkJ1c2luZXNzIERlbGVnYXRlKiBjb24gYmFzZSBlbiBlbCBwYXRyw7NuICpQcm94eSogcGFyYSBsYSBzZXBhcmFjacOzbiBkZSBsYSBjYXBhCmRlIG5lZ29jaW8uIExvcyBjb250cm9sYWRvcmVzIHkgZWwgYEluaXREYXRhTG9hZGVyYCDDum5pY2FtZW50ZSBpbnRlcmFjdMO6YW4gY29uIGxhIGNsYXNlIGBCdXNpbmVzc0RlbGVnYXRlYCBwYXJhIG9idGVuZXIKYWNjZXNvIGEgbGEgbMOzZ2ljYSBkZSBuZWdvY2lvLiBgQnVzaW5lc3NEZWxlZ2F0ZWAgYSBzdSB2ZXogdXRpbGl6YSBsYSBjbGFzZSBgQnVzaW5lc3NMb29rdXBgIHBhcmEgdGVuZXIgYWNjZXNvIGEgbGEgY2xhc2UKZGUgc2VydmljaW8gY29ycmVzcG9uZGllbnRlIGEgbGEgc29saWNpdHVkLgoKIVtEaWFncmFtYSBkZSBDbGFzZXNdKHVtbC9jbGFzc2VzL2NsYXNzZXMucG5nKQoKIyMjIyBEaWFncmFtYSBkZSBTZWN1ZW5jaWEKCkVsIGRpYWdyYW1hIHJlcHJlc2VudGEgbGEgc2VjdWVuY2lhIGNvcnJlc3BvbmRpZW50ZSBhIGxhIGLDunNxdWVkYSBkZSB0b2RvcyBsb3MgZW1wbGVhZG9zIHJlZ2lzdHJhZG9zIGVuIGxhIGJhc2UgZGUgZGF0b3MKZGUgbGEgYXBsaWNhY2nDs24sIHV0aWxpemFuZG8gbGEgY2xhc2UgYEJ1c2luZXNzRGVsZWdhdGVgIGNvbW8gw7puaWNvIHB1bnRvIGRlIGludGVyYWNjacOzbiBkZXNkZSBsb3MgY29udHJvbGFkb3JlcywgeSBjb21vCmVzdGUgaGFjZSB1c28gZGUgbGEgY2xhc2UgYEJ1c2luZXNzTG9va1VwYCBwYXJhIGVuY29udHJhciBlbCBzZXJ2aWNpbyBjb3JyZXNwb25kaWVudGUuCgohW0RpYWdyYW1hIGRlIFNlY3VlbmNpYV0odW1sL3NlcXVlbmNlL3NlcXVlbmNlLnBuZykKCiMjIyBSZWZlcmVuY2lhcwoKKiBNaXRyYSwgUy4gKDIwMTgpLiBMYXllcmVkIEFyY2hpdGVjdHVyZSBVcCBhbmQgUnVubmluZyBqdXN0IGluIDUgbWludXRlczo6IFNwcmluZyBCb290IFBhcnQgMSB8IE1ha2UgJiBLbm93IEphdmEuCiAgQmxvZ3Nwb3QuY29tLiBodHRwOi8vamF2YW9uZmx5LmJsb2dzcG90LmNvbS8yMDE4LzA5L2xheWVyZWQtYXJjaGl0ZWN0dXJlLXVwLWFuZC1ydW5uaW5nLmh0bWwKKiBNaXRyYSwgUy4gKDIwMTgsIE9jdG9iZXIgMTcpLiBCdWlsZGluZyBMYXllcmVkIEFyY2hpdGVjdHVyZSBpbiBKdXN0IDMgTWludXRlczogRmluYWwgUGFydC4gRHpvbmUuY29tOwogIERab25lLiBodHRwczovL2R6b25lLmNvbS9hcnRpY2xlcy9idWlsZGluZy1sYXllcmVkLWFyY2hpdGVjdHVyZS1qdXN0LWluLTMtbWludXRlcy1maS0xCiogQ29yZSBKMkVFIFBhdHRlcm5zIC0gQnVzaW5lc3MgRGVsZWdhdGUuICgyMDE4KS4KICBPcmFjbGUuY29tLiBodHRwczovL3d3dy5vcmFjbGUuY29tL2phdmEvdGVjaG5vbG9naWVzL2J1c2luZXNzLWRlbGVnYXRlLmh0bWwKKiBEZXNpZ24gUGF0dGVybnMgLSBCdXNpbmVzcyBEZWxlZ2F0ZSBQYXR0ZXJuLiAoMjAyMikuCiAgVHV0b3JpYWxzcG9pbnQuY29tLiBodHRwczovL3d3dy50dXRvcmlhbHNwb2ludC5jb20vZGVzaWduX3BhdHRlcm4vYnVzaW5lc3NfZGVsZWdhdGVfcGF0dGVybi5odG0KKiBiYWVsZHVuZy4gKDIwMTksIEFwcmlsIDE4KS4gU3ByaW5nIEJvb3QgV2l0aCBIMiBEYXRhYmFzZSB8IEJhZWxkdW5nLgogIEJhZWxkdW5nLiBodHRwczovL3d3dy5iYWVsZHVuZy5jb20vc3ByaW5nLWJvb3QtaDItZGF0YWJhc2UKKiBQcm94eS4gKDIwMTQpLiBSZWZhY3RvcmluZy5ndXJ1LiBodHRwczovL3JlZmFjdG9yaW5nLmd1cnUvZXMvZGVzaWduLXBhdHRlcm5zL3Byb3h5Cgo= readmeEtag: '"9227b0098a515d9d30428ab98b3f9d81029428a5"' readmeLastModified: Fri, 26 Aug 2022 03:15:34 GMT repositoryId: 528579446 description: >- Project for the Antonio Nariño University, Specialization in Software Engineering, Software Architecture II, corresponding to Laboratory No.1 about Layer Architecture and the Business Delegate pattern. created: '2022-08-24T20:12:48Z' updated: '2022-08-27T01:49:56Z' language: Java archived: false stars: 0 watchers: 2 forks: 0 owner: jorgealfonsogarcia logo: https://avatars.githubusercontent.com/u/3460617?v=4 license: GPL-3.0 repoEtag: '"722d6c655340883201c6de6f110bb781958a435e9380037781c52cf8479ce85a"' repoLastModified: Sat, 27 Aug 2022 01:49:56 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/calebtracey/rugby-data-api v3: true id: fbb953f9bdb8e6cc5c8e79501e8dc063 repositoryMetadata: base64Readme: >- IyBydWdieS1kYXRhLWFwaQoKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL0NhbGViVHJhY2V5L3J1Z2J5LWRhdGEtYXBpL2JyYW5jaC9tYWluL2dyYXBoL2JhZGdlLnN2Zz90b2tlbj03MTQ5SUlUWjgxKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL0NhbGViVHJhY2V5L3J1Z2J5LWRhdGEtYXBpKQoKIyMjIFtTd2FnZ2VyIERvY3NdKGh0dHBzOi8vY2FsZWJ0cmFjZXkuZ2l0aHViLmlvL3J1Z2J5LWRhdGEtYXBpL3N3YWdnZXItdWkvKQoKW3J1Z2J5LW1vZGVsc10oaHR0cHM6Ly9naXRodWIuY29tL0NhbGViVHJhY2V5L3J1Z2J5LW1vZGVscykgdXNlZCBmb3IgY29tbW9uIGRhdGEgdHlwZXMKCltjb25maWcteWFtbF0oaHR0cHM6Ly9naXRodWIuY29tL0NhbGViVHJhY2V5L2NvbmZpZy15YW1sKSB1c2VkIGZvciBlbnZpcm9ubWVudCBjb25maWdzIGFuZCBzZXJ2aWNlL2RiIGluaXRpYWxpemF0aW9uCgoqKkJhc2ljIHNldHVwKioKMS4gQ3JlYXRlIGEgbG9jYWwgUG9zdGdyZXMgZGF0YWJhc2UgYW5kIHVwZGF0ZSB0aGUgY29uZmlnLnlhbWwgZmlsZSB3aXRoIHRoZSBkZXRhaWxzCjIuIFVwZGF0ZSBnby5tb2QgYW5kIGZpbGUgaW1wb3J0cyB3aXRoIHlvdXIgcmVwbyBuYW1lCjMuIFJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHRvIHVwZGF0ZSBkZXBlbmRlbmNpZXM6CgogICBgZ28gZ2V0IC11IC4vLi4uYAoKICAgIGBnbyBtb2QgdGlkeWAKNC4gTWFrZSBhIHJ1biBjb25maWd1cmF0aW9uIGFzIHNlZW4gYmVsb3cgd2l0aCB5b3VyIHJlcG8gbmFtZToKCiFbUnVuIENvbmZpZ10oLi9pbWFnZXMvcnVuLWNvbmZpZy5wbmcpCgojIyMjIE5vdyB5b3UgY2FuIHN0YXJ0IHRoZSBBUEkgYW5kIGFjY2VzcyBodHRwOi8vbG9jYWxob3N0OjYwODAvc3dhZ2dlci11aS8gZm9yIHN3YWdnZXIgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdGluZwo= readmeEtag: '"1460d98dfafdca53aa89632802b7421350fa20e9"' readmeLastModified: Sun, 04 Dec 2022 18:45:32 GMT repositoryId: 569336302 description: Go API for accessing rugby stats created: '2022-11-22T15:42:10Z' updated: '2022-11-24T15:10:43Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: CalebTracey logo: https://avatars.githubusercontent.com/u/59851860?v=4 license: MIT repoEtag: '"771629e5692b7e64e1482f25a429ec6b45d6bb92510e91160fcf659ef3d148a0"' repoLastModified: Thu, 24 Nov 2022 15:10:43 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/honzabit/pactum-api-coverage v3: true id: dd33f534d3f7250729ac4ca3fc575c62 repositoryMetadata: base64Readme: >- IyBwYWN0dW0tYXBpLWNvdmVyYWdlCgohW1BsYXRmb3JtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25vZGUvdi9wYWN0dW0pCgpBUEkgY292ZXJhZ2UgcmVwb3J0ZXIgZm9yIFtQYWN0dW1dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3BhY3R1bSkgdGVzdHMuIEFjY2VwdHMgU3dhZ2dlci9PQVMgc3BlYyBkYXRhIGluIEpTT04gZm9ybWF0LgoKIyMgSW5zdGFsbGF0aW9uCgpgYGBzaGVsbApucG0gaW5zdGFsbCAtLXNhdmUtZGV2IHBhY3R1bSBwYWN0dW0tYXBpLWNvdmVyYWdlCmBgYAoKIyMgVXNhZ2UKCmBgYGphdmFzY3JpcHQKY29uc3QgcGFjdHVtID0gcmVxdWlyZSgncGFjdHVtJyk7CmNvbnN0IHBzYyA9IHJlcXVpcmUoJ3BhY3R1bS1hcGktY292ZXJhZ2UnKTsKY29uc3QgcmVwb3J0ZXIgPSBwYWN0dW0ucmVwb3J0ZXI7CgovLyBnbG9iYWwgYmVmb3JlIGJsb2NrCmJlZm9yZSgoKSA9PiB7CiAgcHNjLnNwZWNEYXRhID0gcmVxdWlyZSgiLi9zcGVjcy92MS9vYXMuanNvbiIpOwogIHJlcG9ydGVyLmFkZChwc2MpOwp9KTsKCi8vIGdsb2JhbCBhZnRlciBibG9jawphZnRlcigoKSA9PiB7CiAgcmV0dXJuIHJlcG9ydGVyLmVuZCgpOwp9KTsKYGBgCgojIyBSZXBvcnRlciBPcHRpb25zCgpgYGBqYXZhc2NyaXB0CmNvbnN0IHBzYyA9IHJlcXVpcmUoJ3BhY3R1bS1hcGktY292ZXJhZ2UnKTsKCi8vIG5hbWUgb2YgdGhlIHJlcG9ydCBmaWxlIC0gZGVmYXVsdHMgdG8gImFwaS1jb3YtcmVwb3J0Lmpzb24iCnBzYy5maWxlID0gJ3JlcG9ydC1uYW1lLmpzb24nOwoKLy8gZm9sZGVyIHBhdGggZm9yIHRoZSByZXBvcnQgZmlsZSAtIGRlZmF1bHRzIHRvICIuL3JlcG9ydHMiCnBzYy5wYXRoID0gJy4vcmVwb3J0cy1wYXRoJzsKCi8vIExvYWQgYSBsb2NhbCBKU09OIHNwZWMgZmlsZSAob3IgYSByZW1vdGUgb25lKQpwc2Muc3BlY0RhdGEgPSByZXF1aXJlKCIuL3NwZWNzL3YxL29hcy5qc29uIik7CgovLyBJZ25vcmUgc3BlY2lmaWMgcmVzcG9uc2UgY29kZXMKcHNjLmlnbm9yZVJlc3BvbnNlQ29kZXMgPSBbIDQyOSwgNTAwXQpgYGAKCiMjIyBSZXBvcnQgSnNvbiBPdXRwdXQgKGV4YW1wbGUpCmBgYGphdmFzY3JpcHQKewogICJiYXNlUGF0aCI6ICIvdjEiLAogICJjb3ZlcmFnZSI6IDAuNSwKICAiY292ZXJlZEFwaUNvdW50IjogNCwKICAibWlzc2VkQXBpQ291bnQiOiA0LAogICJ0b3RhbEFwaUNvdW50IjogOCwKICAiY292ZXJlZEFwaUxpc3QiOiBbCiAgICAiMjAwfGdldHwvdjEvaGVhbHRoIiwKICAgICIyMDB8Z2V0fC92MS9nZXRhbGxuaW5qYXMiLAogICAgIjIwMHxnZXR8L3YxL2dldG5pbmphcy97cmFua30iLAogICAgIjIwMHxnZXR8L3YxL2dldG5pbmphL3tyYW5rfS97bmFtZX0iCiAgXSwKICAibWlzc2VkQXBpTGlzdCI6IFsKICAgICIyMDB8cG9zdHwvdjEvaGVhbHRoIiwKICAgICIyMDB8Z2V0fC92MS9nZXRuaW5qYXMve2NsYW59L3tyYW5rfSIsCiAgICAiNDAwfGdldHwvdjEvZ2V0bmluamFzL3tjbGFufS97cmFua30iLAogICAgIjIwMHxnZXR8L3YxL2dldG5pbmphL3tuYW1lfSIKICBdCn0KYGBgCgojIyBOb3RlcwoKUmVhZCBtb3JlIGFib3V0IFBhY3R1bSBbaGVyZV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvcGFjdHVtKS4KCgpDb3BpZWQgZnJvbSBbcGFjdHVtLXN3YWdnZXItY292ZXJhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9wYWN0dW1qcy9wYWN0dW0tc3dhZ2dlci1jb3ZlcmFnZSkgYW5kIGFsdGVyZWQuCg== readmeEtag: '"17f4a8c494f7f7d0b33ba5d804ddd7bd55c85abe"' readmeLastModified: Thu, 26 Jan 2023 00:14:40 GMT repositoryId: 590919446 description: >- API Coverage Reporter for Pactum. Provides operation & response level coverage and supports JSON schemas for swagger/OAS specs. created: '2023-01-19T14:22:05Z' updated: '2023-01-25T19:42:47Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: honzabit logo: https://avatars.githubusercontent.com/u/65507986?v=4 license: MIT repoEtag: '"62f79cb58df0dc7d502e244f2e9639102f49bd1ea38c0680ebd3dfaad2d7914a"' repoLastModified: Wed, 25 Jan 2023 19:42:47 GMT category: Data Validators foundInMaster: true - source: openapi3 tags repository: https://github.com/guillermoleonpy/springboot-demo v3: true id: 91dbc7b2103912a7577b69224b9380aa repositoryMetadata: base64Readme: >- c3ByaW5nIGJvb3QgZGVtbyBhcHAKCmFjdHVhdG9yIHVybDogaHR0cDovL2xvY2FsaG9zdDo4MTgxL2FjdHVhdG9yOyB0byBjaGVjayB0aGUgYXBwbGljYXRpb24gc3RhdHVzIGFuZCBoZWFsdGgKIyMjClJhYmJpdCBNUSB0ZXN0CmNvbnNvbGU6IGh0dHA6Ly9sb2NhbGhvc3Q6MTU2NzIvIy9xdWV1ZXMKCgpTd2FnZ2VyCmh0dHA6Ly9sb2NhbGhvc3Q6ODE4MS9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwKCg== readmeEtag: '"cbd0e9e4adc1e25834624293f9cf146df17dd829"' readmeLastModified: Wed, 05 Apr 2023 00:03:41 GMT repositoryId: 622243393 description: >- springboot-demo rest api interaction with rabbit mq, apache kafka and jpa. Exemplifies asynchronous processing. End points documented using OpenAPI 3 specification created: '2023-04-01T14:43:51Z' updated: '2023-04-05T08:57:23Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: GuillermoLeonPy logo: https://avatars.githubusercontent.com/u/75272198?v=4 repoEtag: '"b6181393d6cf68d9811a760918090156b30e7a9cb3c9ef685f52740feac0fbf4"' repoLastModified: Wed, 05 Apr 2023 08:57:23 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/arldka/go-artifacthub v3: true id: 873de07499c4cced37621c9e193642f0 repositoryMetadata: base64Readme: >- IyBnby1hcnRpZmFjdGh1YgoKQXV0byBnZW5lcmF0ZWQgdXNpbmcgaHR0cHM6Ly9naXRodWIuY29tL2RlZXBtYXAvb2FwaS1jb2RlZ2VuIGZyb20gaHR0cHM6Ly9hcnRpZmFjdGh1Yi5pby9kb2NzL2FwaS8KCiMjIFVzYWdlCgpgYGAKY2xpZW50LCBlcnIgOj0gYXJ0aWZhY3RodWIuTmV3Q2xpZW50V2l0aFJlc3BvbnNlcygiaHR0cHM6Ly9hcnRpZmFjdGh1Yi5pby9hcGkvdjEiLCBhcnRpZmFjdGh1Yi5XaXRoUmVxdWVzdEVkaXRvckZuKGZ1bmMoY3R4IGNvbnRleHQuQ29udGV4dCwgcmVxICpodHRwLlJlcXVlc3QpIGVycm9yIHsKICByZXEuSGVhZGVyLlNldCgiWC1BUEktS0VZLUlEIiwgIktFWV9JRCIpCiAgcmVxLkhlYWRlci5TZXQoIlgtQVBJLUtFWS1TRUNSRVQiLCAiS0VZX1NFQ1JFVCIpCiAgcmV0dXJuIG5pbAp9KSkKaWYgZXJyICE9IG5pbCB7CiAgcmV0dXJuIG5pbCwgZXJyCn0KCnJlc3AsIGVyciA6PSBjbGllbnQuR2V0SGVsbVBhY2thZ2VEZXRhaWxzV2l0aFJlc3BvbnNlKGN0eCwgInJlcG8iLCAicGFja2FnZSIpCmlmIGVyciAhPSBuaWwgewogIHJldHVybiBuaWwsIGVycgp9CmBgYAo= readmeEtag: '"300551ecf0f8255bb007cf0bc91d1746f91829a9"' readmeLastModified: Sun, 06 Aug 2023 15:33:01 GMT repositoryId: 674820001 description: artifacthub go client created: '2023-08-04T21:44:40Z' updated: '2023-08-05T21:17:50Z' language: Makefile archived: false stars: 0 watchers: 0 forks: 0 owner: arldka logo: https://avatars.githubusercontent.com/u/43825600?v=4 license: MIT repoEtag: '"f6fd203ca54690c4d5004ab24de4c807c7800d7a0e2239f3d04c8599782255b1"' repoLastModified: Sat, 05 Aug 2023 21:17:50 GMT category: Data Validators foundInMaster: true - source: openapi3 tags repository: https://github.com/jalgos/gaard-api-docs v3: true repositoryMetadata: base64Readme: >- IyBHYWFyZCBBUEkgZG9jdW1lbnRhdGlvbgoKVGhlIEFQSSBkb2N1bWVudGF0aW9uIGlzIGJhc2VkIG9uIFtPcGVuQVBJIDMuMC4wXShodHRwczovL3N3YWdnZXIuaW8vKS4KCi0gQVBJIHNlcnZlcjogW2h0dHBzOi8vdmlzaW9uLmdhYXJkLmFpL3YxXShodHRwczovL3Zpc2lvbi5nYWFyZC5haS92MSkKLSBBUEkgZG9jdW1lbnRhdGlvbiB3ZWJzaXRlIFtodHRwczovL2RvY3MuZ2FhcmQuYWldKGh0dHBzOi8vZG9jcy5nYWFyZC5haSkKCiMjIFdvcmsgd2l0aCBBUEkKClRvIHdvcmsgd2l0aCBBUEkgeW91IG5lZWQgYEFQSV9LRVlgLiBQbGVhc2UgY29udGFjdCB1cyBjb250YWN0QGphbGdvcy5jb20gdG8gaGF2ZSBhY2Nlc3MuCgpUaGUgY2xhc3NpZmljYXRpb24gdXNlcyBgYW5hbHlzZV9pZGAgcGFyYW1ldGVyIHRoYXQgc2hvdWxkIGJlIGEgdW5pcXVlIG51bWJlciBmb3IgZWFjaCByZXF1ZXN0LiBZb3UgY2FuIHVzZSBhIGNvbnRpbnVvdXNseSBncm93aW5nIGNvdW50ZXIuCgojIyBVc2Ugc2NyaXB0cwoKQ2xhc3NpZmljYXRpb24gQVBJIGlzIGFzeW5jaHJvbm91cy4gVGhlIGdlbmVyYWwgZmxvdyBpcyB0byBzZW5kIHZpZGVvIHRvIGNsYXNzaWZpY2F0aW9uIGFuZCByZWNlaXZlIHRoZSByZXN1bHQgYnkgY2FsbGluZyBgL3Jlc3VsdGAgZW5kcG9pbnQgb3IgdXNpbmcgd2ViaG9vawoKQ2xvbmUgcmVwb3NpdG9yeQoKYGBgYmFzaApnaXQgY2xvbmUgZ2l0QGdpdGh1Yi5jb206amFsZ29zL2dhYXJkLWFwaS1kb2NzLmdpdApjZCBnYWFyZC1hcGktZG9jcwpgYGAKCkFkZCBgQVBJX0tFWWAgdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzCgpgYGBiYXNoCmV4cG9ydCBBUElfS0VZPSJZT1VSIEFQSSBLRVkiCmBgYAoKIyMjIFBvc3QgdmlkZW8KClVzYWdlCgpgYGBiYXNoCmJpbi9wb3N0LXZpZGVvIFt2aWRlb19wYXRoXSBbYW5hbHlzZV9pZF0gW21ldGFkYXRhX3BhdGhdCmBgYAoKRXhhbXBsZXMKCmBgYGJhc2gKYmluL3Bvc3QtdmlkZW8KYmluL3Bvc3QtdmlkZW8gYmluL3ZpZGVvLm1vdgpiaW4vcG9zdC12aWRlbyBiaW4vdmlkZW8ubW92IDEyNTQ0NDgKYmluL3Bvc3QtdmlkZW8gYmluL3ZpZGVvLm1vdiAxMjU0NDQ4IGJpbi9tZXRhZGF0YS5qc29uCmBgYAoKIyMjIEdldCByZXN1bHRzCgpVc2FnZQoKYGBgYmFzaApiaW4vZ2V0LXJlc3VsdCBhbmFseXNlX2lkCmBgYAoKRXhhbXBsZQoKYGBgYmFzaApiaW4vZ2V0LXJlc3VsdCAxMjU0NDQ4CmBgYAoKIyMjIEdldCBvcmlnaW5hbCB2aWRlbwoKVXNhZ2UKCmBgYGJhc2gKYmluL2dldC1vcmlnaW5hbC12aWRlbyBmaWxlbmFtZQpgYGAKCkV4YW1wbGUKCmBgYGJhc2gKYmluL2dldC1vcmlnaW5hbC12aWRlbyB2aWRlby5tb3YKYGBgCgojIyMgR2V0IEhpZ2hsaWdodGVkIHZpZGVvCgpVc2FnZQoKYGBgYmFzaApiaW4vZ2V0LWhpZ2hsaWdodGVkLXZpZGVvIGZpbGVuYW1lCmBgYAoKRXhhbXBsZQoKYGBgYmFzaApiaW4vZ2V0LWhpZ2hsaWdodGVkLXZpZGVvIHZpZGVvLm1vdgpgYGAKCiMjIExpY2Vuc2VzCgpBbiBleGFtcGxlIGBiaW4vdmlkZW8ubW92YCBpcyBhIHBhcnQgb2YgW1RoZSBWSVJBVCBWaWRlbyBEYXRhc2V0XShodHRwczovL3ZpcmF0ZGF0YS5vcmcvKQo= readmeEtag: '"14630be1d4fcaedba4c874ddbd30310bf1f58faf"' readmeLastModified: Fri, 06 Sep 2024 08:36:07 GMT repositoryId: 249956431 description: Ukpik API documentation created: '2020-03-25T11:08:38Z' updated: '2024-09-29T09:04:25Z' language: Shell archived: false stars: 0 watchers: 5 forks: 0 owner: jalgos logo: https://avatars.githubusercontent.com/u/8981259?v=4 license: MIT repoEtag: '"ec46c51abf0523b359211a5f54dbfaeadc2d778a43b61804258a63b14444dfdf"' repoLastModified: Sun, 29 Sep 2024 09:04:25 GMT foundInMaster: true category: - Documentation - Server Implementations id: f5a7d4cdc09b86e19a1e7bee7b694ae2 oldLocations: - https://github.com/jalgos/ukpik-api-docs - source: openapi3 tags repository: https://github.com/jayllyz/openapi-fastify-petstore v3: true id: 636893cb11fb040ae0d25aa7a39dd8a6 repositoryMetadata: base64Readme: >- IyMgVGVjaCBTdGFjawoKLSBOb2RlLmpzCi0gVHlwZVNjcmlwdAotIEZhc3RpZnkKLSBvcGVuQVBJIDMKLSBQcmlzbWEKLSBQb3N0Z3JlU1FMCi0gRG9ja2VyCgojIyBSdW4gbG9jYWxseQoKVG8gcnVuIHRoZXNlIGNvbW1hbmRzIHlvdSBuZWVkIHRvIGluc3RhbGwgOgpbdGFza10oaHR0cHM6Ly90YXNrZmlsZS5kZXYvIy9pbnN0YWxsYXRpb24pCgpgYGBiYXNoCiMgU3RhcnQgZG9ja2VyCnRhc2sgZG9ja2VyCgojIEluc3RhbGwgZGVwZW5kZW5jaWVzCnRhc2sgaW5zdGFsbAoKIyBJbml0IGRhdGFiYXNlCnRhc2sgcHJpc21hCgojIFN0YXJ0IHNlcnZlcgp0YXNrIGRldgpgYGAKCiMjIEFQSSBEb2N1bWVudGF0aW9uCgotIDxodHRwOi8vbG9jYWxob3N0OjMwMDAvZG9jPgo= readmeEtag: '"c72e7442bf6f8781d74dc8bbb22ba6411194745d"' readmeLastModified: Mon, 11 Dec 2023 08:32:10 GMT repositoryId: 648663642 description: openAPI & Fastify learning project created: '2023-06-02T13:53:42Z' updated: '2024-01-05T13:58:34Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: Jayllyz logo: https://avatars.githubusercontent.com/u/16305216?v=4 repoEtag: '"a971c1bd599fc6f189571f0a9af4a1ce044d10f6845e16c9e1833672c71265e3"' repoLastModified: Fri, 05 Jan 2024 13:58:34 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/karsei/spring-swagger-snippet v3: true id: 3aa12468a60813b680865beef054f91b repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIOyCrOyaqSDqtIDroKggc25pcHBldCDrqqjsnYwKCmh0dHBzOi8vc3ByaW5nZG9jLm9yZy8KCiMjIOyEpOyglQoK7J2Y7KG07ISxIOy2lOqwgAoKYGBgZ3Jvb3Z5Ci8vIGh0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vYXJ0aWZhY3Qvb3JnLnNwcmluZ2RvYy9zcHJpbmdkb2Mtb3BlbmFwaS11aQppbXBsZW1lbnRhdGlvbiBncm91cDogJ29yZy5zcHJpbmdkb2MnLCBuYW1lOiAnc3ByaW5nZG9jLW9wZW5hcGktdWknLCB2ZXJzaW9uOiAnMS42LjEyJwpgYGAKCiog6riw67O4IOqyveuhnDogaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YzL2FwaS1kb2NzLyAKICArIEpTT04g7Jy866GcIO2RnO2YhOuQmOyWtCDsnojsnYwKICArIGBhcHBsaWNhdGlvbi55bWxgIOyXkOyEnCBgc3ByaW5nZG9jLmFwaS1kb2NzLnBhdGhgIOyGjeyEseydhCDthrXtlbQg67OA6rK97ZWgIOyImCDsnojri6QuCiogVUkg6rK966GcOiBodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS5odG1sCiAgKyBgYXBwbGljYXRpb24ueW1sYCDsl5DshJwgYHNwcmluZ2RvYy5zd2FnZ2VyLXVpLnBhdGhgIOyGjeyEseydhCDthrXtlbQg67OA6rK97ZWgIOyImCDsnojri6QuCgoKCgo= readmeEtag: '"fa9bca56aca32530625aaa5edaf164b2e87f8a55"' readmeLastModified: Tue, 25 Oct 2022 11:27:19 GMT repositoryId: 539034967 description: Spring Swagger(springdoc) 사용 관련 snippet created: '2022-09-20T14:34:10Z' updated: '2024-01-06T03:46:39Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: Karsei logo: https://avatars.githubusercontent.com/u/10175382?v=4 repoEtag: '"1c24486d4e47b6a9eda29aeee8f4d9fc908ee65748fec6d9008e8c1b600cd9a2"' repoLastModified: Sat, 06 Jan 2024 03:46:39 GMT category: - Low-level Tooling - Server Implementations foundInMaster: true oldLocations: - https://github.com/karsei/spring-swagger-example - source: openapi3 tags repository: https://github.com/ryusuke410/spicy-input v3: true id: ae51cb1bed0966edbcf5af77b2dd939e repositoryMetadata: base64Readme: >- IyMgU3BpY3kgSW5wdXQgKFN3YWdnZXIgVUkgUGx1Z2luKQoKVGhlcmUgaXMgbm8gc3RyYWlnaHRmb3J3YXJkIG1ldGhvZCBpbiB0aGUgc3RhbmRhcmQgZmVhdHVyZXMgb2YgU3dhZ2dlciBVSSB0byBwcm9ncmFtbWF0aWNhbGx5IG1hbmlwdWxhdGUgdXNlciBpbnB1dHMgc3VjaCBhcyBxdWVyeSBwYXJhbWV0ZXJzIGFuZCByZXF1ZXN0IGJvZGllcy4gU3BpY3kgSW5wdXQgcHJvdmlkZXMgYSBjb25jaXNlIGludGVyZmFjZSBmb3IgcmV0cmlldmluZywgc2V0dGluZywgYW5kIHN1YnNjcmliaW5nIHRvIHRoZXNlIHVzZXIgaW5wdXRzLgoKRnVydGhlcm1vcmUsIHVzZXIgaW5wdXRzIGFyZSBjb21wbGV0ZWx5IGxvc3QgdXBvbiByZWxvYWRpbmcgU3dhZ2dlciBVSS4gRHVyaW5nIEFQSSBkZXZlbG9wbWVudCwgdGhlcmUgaXMgb2Z0ZW4gYSBkZXNpcmUgdG8gcmVtZW1iZXIgdGhlIGlucHV0dGVkIGNvbnRlbnQuIFNwaWN5IElucHV0IG1ha2VzIGl0IGVhc3kgdG8gcmV0YWluIHRoZXNlIHVzZXIgaW5wdXRzLiBTd2FnZ2VyIFVJIGludGVsbGlnZW50bHkgc2F2ZXMgdXNlciBpbnB1dHMgYmFzZWQgb24gZWFjaCBBUEkgaW50ZXJmYWNlLCBzbyBpdCB3b3JrcyB3ZWxsIGluIG1vc3QgY2FzZXMgZXZlbiBpbiB1c2UgY2FzZXMgd2hlcmUgbXVsdGlwbGUgc3BlY3MgYXJlIGR5bmFtaWNhbGx5IHN3YXBwZWQuIEZvciB0aGUgc2FtZSByZWFzb24sIGlmIHRoZSBkZXRhaWxzIG9mIHRoZSBpbnRlcmZhY2UsIHN1Y2ggYXMgdGhlIHR5cGUgb2YgaW5wdXQgdmFsdWVzLCBhcmUgY2hhbmdlZCwgdGhlIHVzZXIgaW5wdXRzIGFyZSBub3QgcmV0YWluZWQuCgojIyBCYXNpYyBVc2FnZQoKIyMjIFdpdGggbnBtCgpgYGBzaGVsbApucG0gaSBzcGljeS1pbnB1dApgYGAKClBhc3MgdGhpcyBwbHVnaW4gdG8gb3B0aW9ucy4KCmBgYGpzCmNvbnN0IHNwaWN5SW5wdXQgPSByZXF1aXJlKCdzcGljeS1pbnB1dCcpCgpTd2FnZ2VyVUkoewogIHBsdWdpbnM6IFsKICAgIHNwaWN5SW5wdXQuZ2V0UGx1Z2luKCkKICBdCn0pCmBgYAoKVHlwZVNjcmlwdDoKCmBgYHR5cGVzY3JpcHQKaW1wb3J0ICogYXMgc3BpY3lJbnB1dCBmcm9tICdzcGljeS1pbnB1dCc7CgpTd2FnZ2VyVUkoewogIHBsdWdpbnM6IFsKICAgIHNwaWN5SW5wdXQuZ2V0UGx1Z2luKCkKICBdCn0pCmBgYAoKIyMjIFdpdGggVU5QS0cKCmBgYGh0bWwKPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaHR0cHM6Ly91bnBrZy5jb20vc3dhZ2dlci11aS1kaXN0L3N3YWdnZXItdWkuY3NzIiAvPgoKPHNjcmlwdCBzcmM9Imh0dHBzOi8vdW5wa2cuY29tL3N3YWdnZXItdWktZGlzdC9zd2FnZ2VyLXVpLWJ1bmRsZS5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL3VucGtnLmNvbS9zcGljeS1pbnB1dCI+PC9zY3JpcHQ+Cgo8c2NyaXB0Pgp3aW5kb3cub25sb2FkID0gKCkgPT4gewogIFN3YWdnZXJVSUJ1bmRsZSh7CiAgICBwbHVnaW5zOiBbCiAgICAgIHNwaWN5SW5wdXQuZ2V0UGx1Z2luKCkKICAgIF0KICB9KQp9Cjwvc2NyaXB0PgpgYGAKCiMjIyBXaXRoIGpzRGVsaXZyCgpgYGBodG1sCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vc3dhZ2dlci11aS1kaXN0L3N3YWdnZXItdWkuY3NzIiAvPgoKPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vc3dhZ2dlci11aS1kaXN0L3N3YWdnZXItdWktYnVuZGxlLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vc3BpY3ktaW5wdXQiPjwvc2NyaXB0PgoKPHNjcmlwdD4Kd2luZG93Lm9ubG9hZCA9ICgpID0+IHsKICBTd2FnZ2VyVUlCdW5kbGUoewogICAgcGx1Z2luczogWwogICAgICBzcGljeUlucHV0LmdldFBsdWdpbigpCiAgICBdCiAgfSkKfQo8L3NjcmlwdD4KYGBgCgojIyBPcHRpb25zCgojIyMgcGVyc2lzdFVzZXJJbnB1dHMKCllvdSBjYW4gY2hvb3NlIHRvIGFjdGl2YXRlIHRoZSBtZW1vcnkgZnVuY3Rpb24gZm9yIHVzZXIgaW5wdXRzIGJ5IHNwZWNpZnlpbmcgb3B0aW9ucy4gSXQgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgKiBhcyBzcGljeUlucHV0IGZyb20gJ3NwaWN5LWlucHV0JzsKClN3YWdnZXJVSSh7CiAgcGx1Z2luczogWwogICAgLy8gRGlzYWJsZSB0aGUgbWVtb3J5IG9mIHVzZXIgaW5wdXRzLgogICAgc3BpY3lJbnB1dC5nZXRQbHVnaW4oeyBwZXJzaXN0VXNlcklucHV0czogZmFsc2UgfSkKICBdCn0pCmBgYAoKIyMjIHByZWZpeAoKQnkgc3BlY2lmeWluZyBhbiBpbnRlcm5hbCBwcmVmaXgsIFNwaWN5IElucHV0IGNhbiBzZXBhcmF0ZSBuYW1lc3BhY2VzIGZvciBzdG9yaW5nIHZhcmlvdXMgdHlwZXMgb2YgZGF0YS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYChkZWZhdWx0KWAuIFRoaXMgZmVhdHVyZSBpcyBvbmx5IG5lY2Vzc2FyeSB3aGVuIGRlcGxveWluZyB0aGUgc2FtZSBzcGVjIEFQSSBhY3Jvc3MgbXVsdGlwbGUgZW52aXJvbm1lbnRzIGFuZCB2aWV3aW5nIHRoZW0gaW5kaXZpZHVhbGx5IHRocm91Z2ggU3dhZ2dlciBVSSBhcnJhbmdlZCB1bmRlciB0aGUgc2FtZSBkb21haW4gZm9yIGVhY2ggZW52aXJvbm1lbnQuIE5vcm1hbGx5LCB0aGVyZSBpcyBubyBuZWVkIHRvIHNwZWNpZnkgdGhpcy4KCmBgYHR5cGVzY3JpcHQKaW1wb3J0ICogYXMgc3BpY3lJbnB1dCBmcm9tICdzcGljeS1pbnB1dCc7CgpTd2FnZ2VyVUkoewogIHBsdWdpbnM6IFsKICAgIHNwaWN5SW5wdXQuZ2V0UGx1Z2luKHsgcHJlZml4OiAibXktZW52IiB9KQogIF0KfSkKYGBgCgojIyBBUElzCgpZb3UgY2FuIG1hbmlwdWxhdGUgdXNlciBpbnB1dHMgdGhyb3VnaCB0aGUgc3lzdGVtLgoKYGBgdHlwZXNjcmlwdApjb25zdCBzeXN0ZW0gPSBTd2FnZ2VyVUkoewogIHBsdWdpbnM6IFsKICAgIHNwaWN5SW5wdXQuZ2V0UGx1Z2luKCkKICBdCn0pCmBgYAoKIyMjIEdldCB1c2VyIGlucHV0cwoKWW91IGNhbiBnZXQgYWxsIGN1cnJlbnQgdXNlciBpbnB1dHMuCgpgYGB0eXBlc2NyaXB0CmNvbnN0IHNwaWN5SW5wdXRTZWxlY3RvcnMgPSBzcGljeUlucHV0LnNlbGVjdG9ycyhzeXN0ZW0pOwpjb25zdCBpbnB1dHMgPSBzcGljeUlucHV0U2VsZWN0b3JzLmlucHV0cygpOwpjb25zb2xlLmxvZyhpbnB1dHMpOwpgYGAKCiMjIyBTZXQgdXNlciBpbnB1dHMKCllvdSBjYW4gc2V0IHVzZXIgaW5wdXRzIHByb2dyYW1hdGljYWxseS4KCmBgYHR5cGVzY3JpcHQKY29uc3Qgc3BpY3lJbnB1dEFjdGlvbnMgPSBzcGljeUlucHV0LmFjdGlvbnMoc3lzdGVtKTsKCi8vIFNldCBwYXJhbWV0ZXIKc3BpY3lJbnB1dEFjdGlvbnMuc2V0UGFyYW1ldGVycygiL2NhdC97aWR9IiwgImdldCIsIHsKICAicGF0aC5pZC5oYXNoLTEwNDg3MDU4ODUiOiB7CiAgICAidmFsdWUiOiAieHh4eHgiCiAgfSwKfSk7Ci8vIE90aGVyIGZ1bmN0aW9ucwpzcGljeUlucHV0QWN0aW9ucy5zZXRSZXF1ZXN0Qm9keVZhbHVlOwpzcGljeUlucHV0QWN0aW9ucy5zZXRSZXF1ZXN0Q29udGVudFR5cGU7CnNwaWN5SW5wdXRBY3Rpb25zLnNldFJlc3BvbnNlQ29udGVudFR5cGU7CmBgYAoKWW91IGNhbiBpbmZlciB3aGF0IHNwZWNpZmljIHZhbHVlcyB0byBzZXQgYmFzZWQgb24gdGhlIGN1cnJlbnQgaW5wdXQgdmFsdWVzLgoKIyMjIFN1YnNjcmlwdGlvbgoKWW91IGNhbiBzdWJzY3JpYmUgdG8gY2hhbmdlcyBpbiB1c2VyIGlucHV0cy4KCmBgYHR5cGVzY3JpcHQKY29uc3Qgc3BpY3lJbnB1dEZuID0gc3BpY3lJbnB1dC5mbihzeXN0ZW0pOwovLyBzdWJzY3JpYmUKY29uc3QgdW5zdWJzY3JpYmUgPSBzcGljeUlucHV0Rm4uc3Vic2NyaWJlKCgpID0+IHsKICBjb25zdCBzcGljeUlucHV0U2VsZWN0b3JzID0gc3BpY3lJbnB1dC5zZWxlY3RvcnMoc3lzdGVtKTsKICBjb25zdCBpbnB1dHMgPSBzcGljeUlucHV0U2VsZWN0b3JzLmlucHV0cygpOwogIGNvbnNvbGUubG9nKGlucHV0cyk7Cn0pOwovLyB1bnN1YnNjcmliZQp1bnN1YnNjcmliZSgpOwpgYGAKCiMjIyBJbXBvcnQKCllvdSBjYW4gaW1wb3J0IHNhdmVkIHVzZXIgaW5wdXRzLgoKYGBgdHlwZXNjcmlwdApjb25zdCBzcGljeUlucHV0U2VsZWN0b3JzID0gc3BpY3lJbnB1dC5zZWxlY3RvcnMoc3lzdGVtKTsKLy8gR2V0IGlucHV0cwpjb25zdCBpbnB1dHMgPSBzcGljeUlucHV0U2VsZWN0b3JzLmlucHV0cygpOwoKLy8gLi4uCgpjb25zdCBzcGljeUlucHV0Rm4gPSBzcGljeUlucHV0LmZuKHN5c3RlbSk7Ci8vIEltcG9ydCBpbnB1dHMKc3BpY3lJbnB1dEZuLmltcG9ydElucHV0cyhpbnB1dHMpOwpgYGAK readmeEtag: '"dc8f5de6d85e6edb6447f2f709d54b4f179f57ec"' readmeLastModified: Mon, 08 Jan 2024 11:04:43 GMT repositoryId: 739820154 description: >- Spicy Input provides a concise interface for retrieving, setting, and subscribing to these user inputs. created: '2024-01-06T16:39:11Z' updated: '2024-01-23T13:16:16Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: ryusuke410 logo: https://avatars.githubusercontent.com/u/23029273?v=4 repoEtag: '"eded01d783489750fb0cf9b1cac912536167c744fca5d4c1e969229fb0b977bc"' repoLastModified: Tue, 23 Jan 2024 13:16:16 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/dog-egg/django-openapi v3: true id: 723c6dbf9a8a25ea1e4a110ec80b6c42 repositoryMetadata: base64Readme: >- IyMjIERlcHJlY2F0ZWQKClRoZSBsYXRlc3QgY29kZSBoYXMgYmVlbiBtb3ZlZCBpbnRvIHRoaXMgcHJvamVjdCAoW2RqYW5nby1vYXNpc10oaHR0cHM6Ly9naXRodWIuY29tL0RvZy1FZ2cvZGphbmdvLW9hc2lzKSkuCg== readmeEtag: '"a2ff9b7055d11ec3f7c5fc46c1cfa6e878ad6603"' readmeLastModified: Tue, 12 Mar 2024 01:37:47 GMT repositoryId: 507220717 description: null created: '2022-06-25T05:18:36Z' updated: '2024-03-12T01:41:41Z' language: Python archived: true stars: 0 watchers: 1 forks: 0 owner: Dog-Egg logo: https://avatars.githubusercontent.com/u/34474847?v=4 license: MIT repoEtag: '"31fd9457910f17facb47a7995369fb4ef9719c0ecf1b4416199861a63dbc8bbc"' repoLastModified: Tue, 12 Mar 2024 01:41:41 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/faaizz/code_demos v3: true id: d7b43de508370ff60c841810e5859577 repositoryMetadata: base64Readme: >- IyBDb2RlIERlbW9zCkEgY2F0YWxvZyBvZiBkZW1vbnN0cmF0aW9uYWwgYXBwbGljYXRpb25zIGZvciBsZWFybmluZyBwdXJwb3Nlcy4KCi0gW0dvOiBTaW1wbGUgQm9va3MgQVBJXSguL2dvX2Jvb2tzX2FwaSkKLSBbR286IFNpbXBsZSBDaGF0IEFwcCBBUEldKC4vZ29fc2ltcGxlX2NoYXRfYXBwX2FwaSkKLSBbR286IFNpbXBsZSBXZWJzaXRlXSguL2dvX3NpbXBsZV93ZWJzaXRlKQo= readmeEtag: '"b8a4fb92e43fb259378e8288997ef1c5b8a0e135"' readmeLastModified: Thu, 28 Mar 2024 21:41:16 GMT repositoryId: 680496485 description: A catalog of demonstrational applications for learning purposes. created: '2023-08-19T12:39:49Z' updated: '2024-03-28T21:41:20Z' language: HTML archived: false stars: 0 watchers: 1 forks: 0 owner: Faaizz logo: https://avatars.githubusercontent.com/u/35711052?v=4 license: MIT repoEtag: '"8659ee29fd7666bda5246b27b38423b7956727e1a23cb03cdc6a8c5bbf0cc689"' repoLastModified: Thu, 28 Mar 2024 21:41:20 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/cdn77/patroni-openapi v3: true id: aa12a36dcec3c4ba970075cd2afb2722 repositoryMetadata: base64Readme: >- IyBQYXRyb25pIE9wZW5BUEkgdjMgc3BlYwoKW1BhdHJvbmkgQVBJIERvY3NdKGh0dHBzOi8vcGF0cm9uaS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvcmVzdF9hcGkuaHRtbCkgYW5kIGl0cyBbc291cmNlXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vemFsYW5kby9wYXRyb25pL21hc3Rlci9kb2NzL3Jlc3RfYXBpLnJzdCkK readmeEtag: '"c6b76ad790ea9f89c5fcf910affee7b390d993ee"' readmeLastModified: Fri, 26 Apr 2024 09:10:40 GMT repositoryId: 754571505 description: Patroni OpenApi v3 spec created: '2024-02-08T10:42:41Z' updated: '2024-04-26T09:10:48Z' language: null archived: false stars: 0 watchers: 2 forks: 0 owner: cdn77 logo: https://avatars.githubusercontent.com/u/7156390?v=4 repoEtag: '"10b5a1e38e61525977fe92abbc23992fff8b3646ca9677b853484abe25dfb47c"' repoLastModified: Fri, 26 Apr 2024 09:10:48 GMT foundInMaster: true category: Server Implementations - source: openapi3 tags repository: https://github.com/muneebhashone/typescript-backend-toolkit v3: true id: c1dfcc32aa8b5672a42fc929c043b0fc repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyBzcmM9ImxvZ28ucG5nIiB3aWR0aD0iMjAwcHgiIGFsaWduPSJjZW50ZXIiIGFsdD0iVHlwZVNjcmlwdCBCYWNrZW5kIFRvb2xraXQgbG9nbyIgLz4KICA8aDEgYWxpZ249ImNlbnRlciI+VHlwZVNjcmlwdCBCYWNrZW5kIFRvb2xraXQ8L2gxPgogIDxwIGFsaWduPSJjZW50ZXIiPgogICAgPGJyLz4KICAgIDxzdHJvbmc+RGV2ZWxvcGVy4oCRZmlyc3QgYmFja2VuZCB0b29sa2l0PC9zdHJvbmc+PGJyLz4KICAgIFNpbXBsZSBmb3IgYmVnaW5uZXJzLCBwcm9kdWN0aXZlIGZvciBleHBlcnRzIOKAlCBhbmQgc3RydWN0dXJlZCBzbyB0b29scyAoaW5jbHVkaW5nIEFJIGFnZW50cykgY2FuIGZvbGxvdyBpdCB3aXRob3V0IGd1ZXNzd29yay48YnIvPgogICAgUHJlZGljdGFibGUgYXJjaGl0ZWN0dXJlLiBUeXBl4oCRc2FmZSBwYXR0ZXJucy4gUGx1Z2lu4oCRYmFzZWQuIFByb2R1Y3Rpb27igJFyZWFkeS4KICA8L3A+CiAgPHAgYWxpZ249ImNlbnRlciI+CiAgICA8YSBocmVmPSIjcXVpY2stc3RhcnQiPlF1aWNrIFN0YXJ0PC9hPiDigKIKICAgIDxhIGhyZWY9IiNmZWF0dXJlcyI+RmVhdHVyZXM8L2E+IOKAogogICAgPGEgaHJlZj0iI2NsaSI+Q0xJPC9hPiDigKIKICAgIDxhIGhyZWY9IiNhcmNoaXRlY3R1cmUiPkFyY2hpdGVjdHVyZTwvYT4g4oCiCiAgICA8YSBocmVmPSJkb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4KICA8L3A+CjwvcD4KPGJyLz4KCiMjIFByZXJlcXVpc2l0ZXMKCkJlZm9yZSB5b3UgZ2V0IHN0YXJ0ZWQsIG1ha2Ugc3VyZSB5b3UgaGF2ZSB0aGUgZm9sbG93aW5nIGluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmU6CgotICoqRG9ja2VyICsgRG9ja2VyIENvbXBvc2UqKgotICoqUE5QTSoqCi0gKipOb2RlLmpzIDIwKyAoTFRTKSoqCgojIyBRdWljayBTdGFydAoKIyMjIFNjYWZmb2xkIGEgTmV3IFByb2plY3QKClVzZSB0aGUgQ0xJIHNjYWZmb2xkZXIgdG8gY3JlYXRlIGEgbmV3IHByb2plY3Qgd2l0aCBvbmx5IHRoZSBmZWF0dXJlcyB5b3UgbmVlZDoKCmBgYGJhc2gKIyBJbnRlcmFjdGl2ZSBtb2RlIChyZWNvbW1lbmRlZCkKbnB4IGNyZWF0ZS10YmstYXBwIG15LWJhY2tlbmQtYXBpCgojIE9yIHdpdGggYSBwcmVzZXQKbnB4IGNyZWF0ZS10YmstYXBwIG15LWFwaSAtLXByZXNldD1zdGFuZGFyZAoKIyBUaGVuIHN0YXJ0IGRldmVsb3BpbmcKY2QgbXktYXBpCnBucG0gZGV2CmBgYAoKU2VlIFtjcmVhdGUtdGJrLWFwcCBSRUFETUVdKHBhY2thZ2VzL2NyZWF0ZS10YmstYXBwL1JFQURNRS5tZCkgZm9yIGFsbCBvcHRpb25zIGFuZCBwcmVzZXRzLgoKKipWaXNpdCBgaHR0cDovL2xvY2FsaG9zdDozMDAwL2RvY3NgKiogZm9yIHlvdXIgYXV0by1nZW5lcmF0ZWQgQVBJIGRvY3VtZW50YXRpb24uCgojIyBGZWF0dXJlcwoKLSAqKkF1dG/igJFnZW5lcmF0ZWQgQWRtaW4gRGFzaGJvYXJkIChEamFuZ2/igJFzdHlsZSkqKiDigJQgTWFuYWdlIGRhdGEgYW5kIG9wcyBvdXQgb2YgdGhlIGJveC4KLSAqKkF1dG/igJFnZW5lcmF0ZWQgT3BlbkFQSSBkb2NzIChGYXN0QVBJ4oCRc3R5bGUpKiog4oCUIExpdmUgZG9jcyBhdCBgL2RvY3NgLCBhbHdheXMgaW4gc3luYy4KLSAqKlBsdWdpbuKAkWJhc2VkIHN5c3RlbSoqIOKAlCBBZGQgY2FwYWJpbGl0aWVzIChhdXRoLCByZWFsdGltZSwgYWRtaW4sIHF1ZXVlcykgYXMgcGx1Z2lucy4KLSAqKkZpcnN04oCRY2xhc3MgQ0xJIChBcnRpc2Fu4oCRbGlrZSkqKiDigJQgR2VuZXJhdGUgbW9kdWxlcywgcGx1Z2lucywgYW5kIHNlZWRlcnMgd2l0aCBjb25zaXN0ZW50LCB0eXBl4oCRc2FmZSBwYXR0ZXJucy4KLSAqKlByb2R1Y3Rpb27igJFyZWFkeSBzdGFjayoqIOKAlCBab2QgdmFsaWRhdGlvbiwgSldUIGF1dGgsIGZpbGUgdXBsb2FkcywgcXVldWVzLCBlbWFpbHMsIGFuZCBtb3JlLgoKIyMjIFdvcmtzIGdyZWF0IHdpdGggQUkgYWdlbnRzIChvcHRpb25hbCkKVGhlIHByb2plY3QgaXMgaW50ZW50aW9uYWxseSBzdHJ1Y3R1cmVkIHNvIGFsbW9zdCBhbnkgQUkgY29kaW5nIGFnZW50IGNhbiB3b3JrIHJlbGlhYmx5OiBwcmVkaWN0YWJsZSBmaWxlcywgY2xlYXIgc2NoZW1hcywgYW5kIGNvbnNpc3RlbnQgY29kZWdlbi4gVXNlIEFJIHRvb2xzIGlmIHlvdSBsaWtl4oCUb3IgaWdub3JlIHRoZW0gYW5kIGJ1aWxkIG5vcm1hbGx5LgoKIyMgQ0xJCgpUaGUgYHRia2AgY29tbWFuZOKAkWxpbmUgdG9vbCBpcyBwcm9kdWN0aXZpdHnigJFmb2N1c2VkLCBzaW1pbGFyIHRvIExhcmF2ZWzigJlzIEFydGlzYW4uIEl0IGhlbHBzIHlvdSBzY2FmZm9sZCBmZWF0dXJlcyBhbmQgcnVuIGNvbW1vbiB0YXNrcyBxdWlja2x5IGFuZCBjb25zaXN0ZW50bHkuCgpgYGBiYXNoCiMgU2NhZmZvbGQgZmVhdHVyZXMgZmFzdCAoQXJ0aXNhbuKAkWxpa2UpCnBucG0gdGJrIGc6bW9kdWxlIHVzZXIgLS1wYXRoIC9hcGkvdjEKcG5wbSB0YmsgZzpwbHVnaW4gYWRtaW4KcG5wbSB0Ymsgc2VlZAoKIyBEaXNjb3ZlciBjb21tYW5kcwpwbnBtIHRiayAtLWhlbHAKcG5wbSB0YmsgZzptb2R1bGUgLS1oZWxwCmBgYAoKIyMgQXJjaGl0ZWN0dXJlCgojIyMgQXQgYSBnbGFuY2UKYGBgCnNyYy8K4pSc4pSA4pSAIGFwcC8gICAgICAgICAgICMgQXBwbGljYXRpb24gc2V0dXAgYW5kIHBsdWdpbiByZWdpc3RyYXRpb24K4pSc4pSA4pSAIG1vZHVsZXMvICAgICAgICMgRG9tYWluIGxvZ2ljICh1c2VycywgcHJvZHVjdHMsIHBheW1lbnRzKQrilJzilIDilIAgcGx1Z2lucy8gICAgICAgIyBFeHRlbnNpYmxlIGZlYXR1cmVzIChhdXRoLCByZWFsdGltZSwgYWRtaW4pCuKUnOKUgOKUgCBsaWIvICAgICAgICAgICAjIEluZnJhc3RydWN0dXJlIGNsaWVudHMgKGRhdGFiYXNlLCBzdG9yYWdlLCBlbWFpbCkK4pSc4pSA4pSAIHV0aWxzLyAgICAgICAgICMgUHVyZSBmdW5jdGlvbnMgKEpXVCwgcGFzc3dvcmRzLCBwYWdpbmF0aW9uKQrilJzilIDilIAgY29uZmlnLyAgICAgICAgIyBUeXBlLXNhZmUgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbgrilJTilIDilIAgcm91dGVzLyAgICAgICAgIyBIVFRQIHdpcmluZyB3aXRoIE1hZ2ljUm91dGVyCmBgYAoKRWFjaCBmb2xkZXIgaGFzIG9uZSBqb2I6Ci0gYGFwcC9gIGJvb3RzIHRoZSBzZXJ2ZXIgYW5kIHdpcmVzIHBsdWdpbnMuCi0gYG1vZHVsZXMvYCBob2xkcyB5b3VyIGJ1c2luZXNzIGxvZ2ljIGFuZCBzY2hlbWFzLgotIGBwbHVnaW5zL2AgYWRkcyBmZWF0dXJlcyB3aXRob3V0IHRvdWNoaW5nIGNvcmUgY29kZS4KLSBgbGliL2AgY29ubmVjdHMgdG8gaW5mcmEgKERCLCBxdWV1ZXMsIGVtYWlsLCBzdG9yYWdlKS4KLSBgdXRpbHMvYCBjb250YWlucyBzbWFsbCwgcHVyZSBoZWxwZXJzLgotIGBjb25maWcvYCB2YWxpZGF0ZXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotIGByb3V0ZXMvYCBkZWNsYXJlcyBIVFRQIGVuZHBvaW50cy4KCkNvcmUgY2FwYWJpbGl0aWVzIGluY2x1ZGVkOgotICoqT3BlbkFQSSBkb2NzKiogYXQgYC9kb2NzYAotICoqQXV0aCoqIChHb29nbGUgU2lnbuKAkUluICsgSldUIHNlc3Npb25zKQotICoqVXNlcnMgJiBSb2xlcyoqIChDUlVELCBSQkFDKQotICoqRmlsZSBVcGxvYWRzKiogKFMzL1IyL0xvY2FsLCBtdWx0aXBhcnQpCi0gKipWYWxpZGF0aW9uKiogKFpvZCwgZW5k4oCRdG/igJFlbmQpCi0gKipRdWV1ZXMqKiAoQnVsbE1RICsgQnVsbEJvYXJkKQotICoqUmVhbHRpbWUqKiAoU29ja2V0LklPKQotICoqUmVhbHRpbWUgVGVzdGVyKiogKFVJIHRvIHNlbmQvcmVjZWl2ZSBldmVudHMgYW5kIGluc3BlY3QgY2hhbm5lbHMpCi0gKipBZG1pbiBQYW5lbCoqIChzZXBhcmF0ZSBhdXRoKQotICoqRW1haWxzKiogKHRyYW5zYWN0aW9uYWwgdGVtcGxhdGVzKQoKIyMgRG9jdW1lbnRhdGlvbgoKLSAqKltDTEkgQ29tbWFuZHNdKGRvY3MvZG9jcy9ndWlkZXMvY2xpLWNvbW1hbmRzKSoqCi0gKipbQ3JlYXRpbmcgTW9kdWxlc10oZG9jcy9kb2NzL2d1aWRlcy9jcmVhdGluZy1tb2R1bGVzKSoqICAKLSAqKltNYWdpY1JvdXRlcl0oZG9jcy9kb2NzL2d1aWRlcy9tYWdpYy1yb3V0ZXIpKioKLSAqKltFbnZpcm9ubWVudCBDb25maWddKGRvY3MvZG9jcy9ndWlkZXMvZW52aXJvbm1lbnQtY29uZmlnKSoqCi0gKipbVGVzdGluZyAmIERlYnVnZ2luZ10oZG9jcy9kb2NzL2d1aWRlcy90ZXN0aW5nLWRlYnVnZ2luZykqKgoKIyMgRGV2ZWxvcG1lbnQgQ29tbWFuZHMKCmBgYGJhc2gKIyBEZXZlbG9wbWVudApwbnBtIGRldiAgICAgICAgICAgICAgIyBTdGFydCB3aXRoIGhvdCByZWxvYWQKcG5wbSBidWlsZCAgICAgICAgICAgICMgQ29tcGlsZSB0byBkaXN0LwpwbnBtIHN0YXJ0ICAgICAgICAgICAgIyBSdW4gcHJvZHVjdGlvbiBidWlsZApwbnBtIHR5cGVjaGVjayAgICAgICAgIyBUeXBlIGNoZWNraW5nCnBucG0gbGludCAgICAgICAgICAgICAjIEVTTGludCArIFByZXR0aWVyCgojIENMSSBUb29scyAgCnBucG0gdGJrIGc6bW9kdWxlIDxuYW1lPiAgICMgR2VuZXJhdGUgY29tcGxldGUgbW9kdWxlCnBucG0gdGJrIGc6cGx1Z2luIDxuYW1lPiAgICMgR2VuZXJhdGUgcGx1Z2luCnBucG0gdGJrIHNlZWQgICAgICAgICAgICAgICMgUnVuIGRhdGFiYXNlIHNlZWRlcnMKcG5wbSB0YmsgZG9jczpvcGVuYXBpICAgICAgIyBHZW5lcmF0ZSBPcGVuQVBJIHNwZWMKcG5wbSB0YmsgZG9jczpzZGsgICAgICAgICAgIyBHZW5lcmF0ZSBUeXBlU2NyaXB0IFNESwoKIyBPdGhlciBUb29scwpwbnBtIGVtYWlsOmRldiAgICAgICAgIyBQcmV2aWV3IGVtYWlsIHRlbXBsYXRlcwpgYGAKCiMjIFByb2R1Y3Rpb24gRGVwbG95bWVudAoKYGBgYmFzaAojIEJ1aWxkIGZvciBwcm9kdWN0aW9uCnBucG0gYnVpbGQKCiMgU2V0IHByb2R1Y3Rpb24gZW52aXJvbm1lbnQKY3AgLmVudi5wcm9kdWN0aW9uIC5lbnYKCiMgU3RhcnQgcHJvZHVjdGlvbiBzZXJ2ZXIKcG5wbSBzdGFydDpwcm9kCmBgYAoKIyMgQ29udHJpYnV0aW5nCgoxLiBGb3JrIHRoZSByZXBvc2l0b3J5CjIuIENyZWF0ZSB5b3VyIGZlYXR1cmUgYnJhbmNoIChgZ2l0IGNoZWNrb3V0IC1iIGZlYXR1cmUvYW1hemluZy1mZWF0dXJlYCkKMy4gQ29tbWl0IHlvdXIgY2hhbmdlcyAoYGdpdCBjb21taXQgLW0gJ0FkZCBhbWF6aW5nIGZlYXR1cmUnYCkKNC4gUHVzaCB0byB0aGUgYnJhbmNoIChgZ2l0IHB1c2ggb3JpZ2luIGZlYXR1cmUvYW1hemluZy1mZWF0dXJlYCkKNS4gT3BlbiBhIFB1bGwgUmVxdWVzdAoKIyMgTGljZW5zZQoKVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAtIHNlZSB0aGUgW0xJQ0VOU0VdKExJQ0VOU0UpIGZpbGUgZm9yIGRldGFpbHMuCgotLS0KCioqQnVpbHQgdG8gbWFrZSBiYWNrZW5kIGRldmVsb3BtZW50IGVmZm9ydGxlc3MqKgo= readmeEtag: '"1310c87697e0a71b68d62b9aa76ac0ea7bb1353c"' readmeLastModified: Mon, 03 Nov 2025 23:59:50 GMT repositoryId: 840890740 description: >- Production-ready Express.js/TypeScript framework with auto-generated OpenAPI, Artisan-style CLI, plugin system, JWT/sessions, BullMQ, React Email, Socket.io, Django-style admin, multi-provider storage/cache/email, Zod validation created: '2024-08-11T02:19:59Z' updated: '2026-02-01T16:11:56Z' language: TypeScript archived: false stars: 319 watchers: 5 forks: 57 owner: muneebhashone logo: https://avatars.githubusercontent.com/u/88892379?v=4 license: MIT repoEtag: '"720956f3eb01f4721998d20003bae397439b035b377aaa7c48c3dec1a0a5f8b7"' repoLastModified: Sun, 01 Feb 2026 16:11:56 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/centeredge/centeredge.textpay v3: true repositoryMetadata: base64Readme: >- IyBDZW50ZXJFZGdlLlRleHRQYXkKCk5vdGU6IFRleHRQYXkgKGEuay5hLiBEYXNoTm93KSBpcyBub3cga25vd24gYXMgSHlmaW4uCgpPcGVuQVBJIDMuMCBzcGVjIGJhc2VkIG9uIFtIeWZpbiBkb2N1bWVudGF0aW9uXShodHRwczovL2NlbnRlcmVkZ2UuaHlmaW4uYXBwL2RvY3MvMi4wYy9pbnRyb2R1Y3Rpb24pLgo= readmeEtag: '"7f5feeb34d530e97cc3e8429d81d05d396f45946"' readmeLastModified: Mon, 20 Nov 2023 19:58:14 GMT repositoryId: 446992249 description: OpenAPI 3 specification and C# SDK for the TextPay API created: '2022-01-11T21:52:37Z' updated: '2025-08-06T12:24:00Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: CenterEdge logo: https://avatars.githubusercontent.com/u/7118733?v=4 repoEtag: '"a853031d1343868ee76450f8174b01fa1798308cd00d38ee1ceefbb949b284b6"' repoLastModified: Wed, 06 Aug 2025 12:24:00 GMT foundInMaster: true category: Server id: af095871df8bb9408585fb1b3445e4cb - source: openapi3 tags repository: https://github.com/renatosouzaan/renatosouza-back-end-mvp v3: true id: 308c1c7d283c0184b97ebf0f381185f6 repositoryMetadata: base64Readme: >- IyBETWFya2V0IFN0cnVjdHVyZQoKIVtEbWFya2V0IGRyYXdpb10oaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzg0NTM3NDE1LTY1ZjEtNDAyNC1iMDZkLTg3NjVjZjlmODY4MSkKCiMgQmFjay1FbmQgKEFQSSkgTVZQCgpUaGlzIEFQSSBpcyBhIEZsYXNrLWJhc2VkIFJFU1RmdWwgQVBJIGZvciBtYW5hZ2luZyBwcm9kdWN0cyBpbiBhIG1hcmtldCBkYXRhYmFzZS4gSXQgaW5jbHVkZXMgdXNlciBhdXRoZW50aWNhdGlvbiwgYWRtaW4gZnVuY3Rpb25hbGl0eSwgYW5kIENSVUQgb3BlcmF0aW9ucyBmb3IgcHJvZHVjdHMuIFRoZSBBUEkgaXMgZG9jdW1lbnRlZCB1c2luZyBPcGVuQVBJIDMgYW5kIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBhIHNlcGFyYXRlIGZyb250LWVuZCBhcHBsaWNhdGlvbi4KClRoZSBmcm9udC1lbmQgaGFzIGl0cyBvd24gcmVwb3NpdG9yeTsgdGhlIGxpbmsgaXMgcHJvdmlkZWQgYmVsb3cuCgpGcm9udC1lbmQgcmVwb3NpdG9yeTogW2h0dHBzOi8vZ2l0aHViLmNvbS9SZW5hdG9Tb3V6YUFOL1JlbmF0b1NvdXphL2Zyb250LWVuZC1tdnAtcmVhY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZW5hdG9Tb3V6YUFOL3JlbmF0b3NvdXphLWZyb250LWVuZC1tdnAtcmVhY3QpCgojIyBUYWJsZSBvZiBDb250ZW50cwoKLSAgIFtBYm91dF0oI2Fib3V0KQotICAgW0ZlYXR1cmVzXSgjZmVhdHVyZXMpCi0gICBbVGVjaG5vbG9neSBTdGFja10oI3RlY2hub2xvZ3ktc3RhY2spCi0gICBbU2V0dXBdKCNzZXR1cCkKICAgIC0gICBbUHJlcmVxdWlzaXRlc10oI3ByZXJlcXVpc2l0ZXMpCiAgICAtICAgW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKICAgIC0gICBbRXhwbGFuYXRpb25dKCNleHBsYW5hdGlvbikKICAgIC0gICBbRG9ja2VyXSgjZG9ja2VyKQotICAgW1J1bm5pbmcgdGhlIFNlcnZlciAoTG9jYWxseSldKCNydW5uaW5nLXRoZS1zZXJ2ZXIpCi0gICBbQVBJIERvY3VtZW50YXRpb25dKCNhcGktZG9jdW1lbnRhdGlvbikKLSAgIFtLZXkgQVBJIEVuZHBvaW50c10oI2tleS1hcGktZW5kcG9pbnRzKQogICAgLSAgIFtHZXQgYWxsIHByb2R1Y3RzXSgjZ2V0LWFsbC1wcm9kdWN0cykKICAgIC0gICBbQWRkIGEgcHJvZHVjdF0oI2FkZC1hLXByb2R1Y3QpCiAgICAtICAgW1VwZGF0ZSBhIHByb2R1Y3RdKCN1cGRhdGUtYS1wcm9kdWN0KQogICAgLSAgIFtEZWxldGUgYSBwcm9kdWN0XSgjZGVsZXRlLWEtcHJvZHVjdCkKICAgIC0gICBbU2V0IHVzZXIgYXMgYW4gYWRtaW5dKCNzZXQtdXNlci1hcy1hbi1hZG1pbikKICAgIC0gICBbTG9naW4gaW50byBhbiBhY2NvdW50XSgjbG9naW4taW50by1hbi1hY2NvdW50KQogICAgLSAgIFtMb2dvdXQgZnJvbSBhY2NvdW50XSgjbG9nb3V0LWZyb20tYWNjb3VudCkKICAgIC0gICBbR2V0IGFsbCB1c2Vyc10oI2dldC1hbGwtdXNlcnMpCi0gICBbUmVzcG9uc2VzXSgjcmVzcG9uc2VzKQotICAgW0F1dGhlbnRpY2F0aW9uXSgjYXV0aGVudGljYXRpb24pCi0gICBbQ29udHJpYnV0b3JzXSgjY29udHJpYnV0b3JzKQotICAgW0xpY2Vuc2VdKCNsaWNlbnNlKQoKIyMgQWJvdXQKClRoaXMgYmFjay1lbmQgQVBJIG1hbmFnZXMgbWFya2V0IHByb2R1Y3RzIGFuZCBzdXBwb3J0cyB1c2VyIGF1dGhlbnRpY2F0aW9uIHdpdGggQXV0aDAuIEl0J3MgYnVpbHQgd2l0aCBGbGFzayBhbmQgc3VwcG9ydHMgb3BlcmF0aW9ucyBsaWtlIGFkZGluZywgdXBkYXRpbmcsIGFuZCBkZWxldGluZyBwcm9kdWN0cy4gQWRtaW4gZnVuY3Rpb25hbGl0eSBpcyBhbHNvIGluY2x1ZGVkIGZvciBtYW5hZ2luZyB1c2Vycy4gSXQgd29ya3MgYWxvbmdzaWRlIGEgc2VwYXJhdGUgZnJvbnQtZW5kLCBsaW5rZWQgYWJvdmUuCgojIyBGZWF0dXJlcwoKLSAgIFVzZXIgYXV0aGVudGljYXRpb24gd2l0aCBBdXRoMAotICAgQWRtaW4gdXNlciBtYW5hZ2VtZW50Ci0gICBDUlVEIG9wZXJhdGlvbnMgZm9yIHByb2R1Y3RzCi0gICBVc2VyLXNwZWNpZmljIHByb2R1Y3QgbWFuYWdlbWVudAotICAgT3BlbkFQSSAzIGRvY3VtZW50YXRpb24KCiMjIFRlY2hub2xvZ3kgU3RhY2sKClRoaXMgYmFjay1lbmQgaXMgYnVpbHQgdXNpbmcgdGhlIGZvbGxvd2luZyB0ZWNobm9sb2dpZXM6CgotICAgKipGbGFzayoqOiBNaWNybyB3ZWIgZnJhbWV3b3JrIGZvciBQeXRob24uCi0gICAqKkZsYXNrLVNRTEFsY2hlbXkqKjogU1FMQWxjaGVteSBleHRlbnNpb24gZm9yIEZsYXNrLgotICAgKipGbGFzay1NaWdyYXRlKio6IERhdGFiYXNlIG1pZ3JhdGlvbnMgZm9yIEZsYXNrIGFwcGxpY2F0aW9ucy4KLSAgICoqRmxhc2stQ09SUyoqOiBDT1JTIHN1cHBvcnQgZm9yIEZsYXNrLgotICAgKipGbGFzay1PcGVuQVBJMyoqOiBPcGVuQVBJIDMgaW50ZWdyYXRpb24gZm9yIEFQSSBkb2N1bWVudGF0aW9uLgotICAgKipBdXRobGliKio6IE9BdXRoIGFuZCBPcGVuSUQgQ29ubmVjdCBsaWJyYXJ5IGZvciBQeXRob24uCi0gICAqKlNRTGl0ZSoqOiBMaWdodHdlaWdodCwgc2VydmVybGVzcyBkYXRhYmFzZSBlbmdpbmUuCi0gICAqKkRvY2tlcioqOiBQbGF0Zm9ybSBmb3IgZGV2ZWxvcGluZywgc2hpcHBpbmcsIGFuZCBydW5uaW5nIGFwcGxpY2F0aW9ucyBpbiBjb250YWluZXJzLgoKIyMgU2V0dXAKCiMjIyBQcmVyZXF1aXNpdGVzCgotICAgUHl0aG9uIDMueCBpbnN0YWxsZWQKLSAgIFBpcCBwYWNrYWdlIG1hbmFnZXIKLSAgIEF1dGgwIGFjY291bnQgYW5kIGFwcGxpY2F0aW9uIHNldHVwCgojIyMgSW5zdGFsbGF0aW9uCgpJdCdzIGhpZ2hseSByZWNvbW1lbmRlZCB0byB1c2UgYSB2aXJ0dWFsIGVudmlyb25tZW50LgoKMS4gQ2xvbmUgdGhlIHJlcG9zaXRvcnk6CgogICAgYGBgCiAgICBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL1JlbmF0b1NvdXphQU4vUmVuYXRvU291emEtYmFjay1lbmQtbXZwLmdpdAogICAgY2QgUmVuYXRvU291emEtYmFjay1lbmQtbXZwCiAgICBgYGAKCjIuIENyZWF0ZSBhIGAuZW52YCBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSB3aXRoIHRoZSBmb2xsb3dpbmcgY29udGVudDoKCiAgIGBgYAogICBBVVRIMF9ET01BSU49eW91cl9hdXRoMF9kb21haW4KICAgQVBJX0FVRElFTkNFPXlvdXJfYXBpX2F1ZGllbmNlCiAgIENMSUVOVF9JRD15b3VyX2NsaWVudF9pZAogICBDTElFTlRfU0VDUkVUPXlvdXJfY2xpZW50X3NlY3JldAogICBBUElfTUFOQUdFTUVOVF9DTElFTlRfSUQ9eW91ci1hdXRoMC1tYW5hZ2VtZW50LWNsaWVudC1pZAogICBBUElfTUFOQUdFTUVOVF9DTElFTlRfU0VDUkVUPXlvdXItYXV0aDAtbWFuYWdlbWVudC1jbGllbnQtc2VjcmV0CiAgIGBgYAoKMy4gIElmIHlvdSdyZSB1c2luZyBkb2NrZXIsIHRoZXJlJ3Mgbm8gbmVlZCB0byBkbyB0aGUgc3RlcHMgYmVsb3cgKDQgdG8gNykgYW5kIHlvdSBzaG91bGQgaW5zdGVhZCBmb2xsb3cgW0RvY2tlcl0oI2RvY2tlcikgaW5zdHJ1Y3Rpb25zCgo0LiBDcmVhdGUgdmlydHVhbCBlbnZpcm9ubWVudCAoT3B0aW9uYWwpOgoKICAgIGBgYAogICAgcHl0aG9uIC1tIHZlbnYgZW52CiAgICBgYGAKCjUuIEFjY2VzcyB2aXJ0dWFsIGVudmlyb25tZW50IChPcHRpb25hbCk6CgogICAgT24gUG93ZXJzaGVsbDoKCiAgICBgYGAKICAgIC5cZW52XFNjcmlwdHNcYWN0aXZhdGUKICAgIGBgYAoKICAgIE9uIGJhc2g6CgogICAgYGBgCiAgICBzb3VyY2UgXGVudlxTY3JpcHRzXGFjdGl2YXRlCiAgICBgYGAKCjYuIEluc3RhbGwgZGVwZW5kZW5jaWVzOgoKICAgIGBgYAogICAgcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dAogICAgYGBgCgo3LiBTZXQgdXAgdGhlIGRhdGFiYXNlOgogICAgYGBgCiAgICBmbGFzayBkYiBpbml0CiAgICBmbGFzayBkYiBtaWdyYXRlCiAgICBmbGFzayBkYiB1cGdyYWRlCiAgICBgYGAKCiMjIyBFeHBsYW5hdGlvbgoKVGhlc2UgY29tbWFuZHMgZW5zdXJlIHRoYXQgeW91ciBkYXRhYmFzZSBzY2hlbWEgaXMgc3luY2hyb25pemVkIHdpdGggeW91ciBtb2RlbHM6CgotICAgKipgZmxhc2sgZGIgaW5pdGAqKjogSW5pdGlhbGl6ZXMgYSBuZXcgbWlncmF0aW9uIHJlcG9zaXRvcnkgaW4geW91ciBwcm9qZWN0LgotICAgKipgZmxhc2sgZGIgbWlncmF0ZWAqKjogR2VuZXJhdGVzIGEgbWlncmF0aW9uIHNjcmlwdCB0byBhbGlnbiB0aGUgZGF0YWJhc2Ugc2NoZW1hIHdpdGggeW91ciBtb2RlbHMuCi0gICAqKmBmbGFzayBkYiB1cGdyYWRlYCoqOiBBcHBsaWVzIHRoZSBtaWdyYXRpb24gc2NyaXB0IHRvIHVwZGF0ZSB0aGUgZGF0YWJhc2Ugc2NoZW1hLgoKVGhlc2Ugc3RlcHMgYXJlIGNydWNpYWwgd2hlbmV2ZXIgeW91IG1ha2UgY2hhbmdlcyB0byB5b3VyIGRhdGFiYXNlIG1vZGVscyB0byBrZWVwIHRoZSBzY2hlbWEgdXAgdG8gZGF0ZS4KCiMjIyBEb2NrZXIKClRvIHJ1biB0aGUgYmFjay1lbmQgdGhyb3VnaCBEb2NrZXIsIGVuc3VyZSB5b3UgaGF2ZSBbRG9ja2VyXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvaW5zdGFsbC8pIGluc3RhbGxlZCBhbmQgcnVubmluZyBvbiB5b3VyIG1hY2hpbmUuCgpOYXZpZ2F0ZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIERvY2tlcmZpbGUgYW5kIHJlcXVpcmVtZW50cy50eHQgaW4geW91ciB0ZXJtaW5hbC4gRXhlY3V0ZSAqKmFzIGFkbWluaXN0cmF0b3IqKiB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gYnVpbGQgdGhlIERvY2tlciBpbWFnZToKCmBgYAokIGRvY2tlciBidWlsZCAtdCByZW5hdG9zb3V6YS1iYWNrLWVuZC1tdnAgLgpgYGAKCk9uY2UgdGhlIGltYWdlIGlzIGNyZWF0ZWQsIHRvIHJ1biB0aGUgY29udGFpbmVyLCAqKmV4ZWN1dGUgYXMgYW4gYWRtaW5pc3RyYXRvcioqIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYAokIGRvY2tlciBydW4gLXAgNTAwMDo1MDAwIHJlbmF0b3NvdXphLWJhY2stZW5kLW12cApgYGAKCk9uY2UgcnVubmluZywgdG8gYWNjZXNzIHRoZSBBUEksIG9wZW4gW2h0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9dKGh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC8pIGluIHlvdXIgYnJvd3Nlci4gSWYgeW91IGhhdmUgdGhlIGZyb250LWVuZCByZXBvc2l0b3J5IGRvd25sb2FkZWQsIHlvdSBjYW4gYWxzbyBydW4gaXQgbm93IGFuZCBnbyB0byBpdHMgYWRkcmVzcyAoaHR0cDovL2xvY2FsaG9zdDozMDAwLykgdG8gdGVzdCB0aGUgd2hvbGUgcHJvamVjdC4KCiMjIFJ1bm5pbmcgdGhlIFNlcnZlcgoKVG8gc3RhcnQgdGhlIEZsYXNrIHNlcnZlcjoKCmBgYApmbGFzayBydW4KYGBgCgpvcgoKYGBgCnB5dGhvbiBydW4ucHkKYGBgCgpUaGUgQVBJIHdpbGwgYmUgYWNjZXNzaWJsZSBhdCBgaHR0cDovL2xvY2FsaG9zdDo1MDAwYC4KCiMjIyBBUEkgRG9jdW1lbnRhdGlvbgoKT3BlbkFQSSAzIGlzIGludGVncmF0ZWQgZm9yIEFQSSBkb2N1bWVudGF0aW9uLiBBZnRlciBzdGFydGluZyB0aGUgc2VydmVyLCB2aXNpdCBodHRwOi8vbG9jYWxob3N0OjUwMDAvb3BlbmFwaSB0byBleHBsb3JlIHRoZSBBUEkgZW5kcG9pbnRzIGFuZCBpbnRlcmFjdCB3aXRoIHRoZW0uCgojIyBLZXkgQVBJIEVuZHBvaW50cwoKIyMjIEdldCBhbGwgcHJvZHVjdHMKCi0gICAqKkdFVCoqIGAvcHJvZHVjdHNgCiAgICAtICAgUmV0dXJucyBhIGxpc3Qgb2YgYWxsIHByb2R1Y3RzIGluIHRoZSBkYXRhYmFzZS4KCiMjIyBBZGQgYSBwcm9kdWN0CgotICAgKipQT1NUKiogYC9wcm9kdWN0cy9jcmVhdGVgCiAgICAtICAgQWRkcyBhIG5ldyBwcm9kdWN0IHRvIHRoZSBkYXRhYmFzZS4gUmVxdWlyZXMgSlNPTiBwYXlsb2FkIHdpdGggYG5hbWVgLCBgcHJpY2VgLCBhbmQgYHF1YW50aXR5YC4gKGF1dGhlbnRpY2F0ZWQpCgojIyMgVXBkYXRlIGEgcHJvZHVjdAoKLSAgICoqUFVUKiogYC9wcm9kdWN0cy88cHJvZHVjdF9pZD4vdXBkYXRlYAogICAgLSAgIFVwZ3JhZGVzIHRoZSBwcm9kdWN0IHdpdGggdGhlIHNwZWNpZmllZCBgcHJvZHVjdF9pZGAgZnJvbSB0aGUgZGF0YWJhc2UuIFJlcXVpcmVzIGEgSlNPTiBwYXlsb2FkIHdpdGggYW55IG9mIHRoZSBmb2xsb3dpbmcgZmllbGRzOiBkZXNjcmlwdGlvbiwgcHJpY2UsIG9yIHF1YW50aXR5LiAoYXV0aGVudGljYXRlZCkKCiMjIyBEZWxldGUgYSBwcm9kdWN0CgotICAgKipERUxFVEUqKiBgL3Byb2R1Y3RzLzxwcm9kdWN0X2lkPi9kZWxldGVgCiAgICAtICAgRGVsZXRlcyB0aGUgcHJvZHVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgYHByb2R1Y3RfaWRgIGZyb20gdGhlIGRhdGFiYXNlLiAoYXV0aGVudGljYXRlZCkKCiMjIyBTZXQgdXNlciBhcyBhbiBhZG1pbgotICAgKipQT1NUKiogYC9hZG1pbi9zZXRgCiAgICAtICAgQ2hhbmdlcyB0aGUgcHJpdmlsZWdlcyBvZiBhIHVzZXIgYnkgc2V0dGluZyBpdCBhcyBhbiBhZG1pbiAoYXV0aGVudGljYWRlZCkgKGFkbWluIG9ubHkpCgojIyMgTG9naW4gaW50byBhbiBhY2NvdW50Ci0gICAqKkdFVCoqIGAvbG9naW5gCiAgICAtICAgSW5pdGlhdGUgbG9naW4gcHJvY2VzcyBieSByZXF1ZXN0aW5nIGF1dGhlbnRpY2F0aW9uIHRocm91Z2ggQXV0aDAgQVBJCgojIyMgTG9nb3V0IGZyb20gYWNjb3VudAotICAgKipHRVQqKiBgL2xvZ291dGAKICAgIC0gICBMb2dzIG91dCB0aGUgY3VycmVudCBsb2dnZWQgdXNlciBieSByZXF1ZXN0aW5nIEF1dGgwIEFQSQoKIyMjIEdldCBhbGwgdXNlcnMKLSAgICoqR0VUKiogYC9hZG1pbi91c2Vyc2AKICAgIC0gICBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgdXNlciBpbiB0aGUgZGF0YWJhc2UuIChhdXRoZW50aWNhZGVkKSAoYWRtaW4gb25seSkKCiMjIFJlc3BvbnNlcwoKLSAgIFN1Y2Nlc3NmdWwgcmVzcG9uc2VzIGluY2x1ZGUgYXBwcm9wcmlhdGUgSFRUUCBzdGF0dXMgY29kZXMgYW5kIEpTT04gcGF5bG9hZHMuCi0gICBFcnJvciByZXNwb25zZXMgcHJvdmlkZSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2VzIGFuZCBzdGF0dXMgY29kZXMuCgojIyBBdXRoZW50aWNhdGlvbgoKVGhpcyBBUEkgdXNlcyBBdXRoMCBmb3IgYXV0aGVudGljYXRpb24uIFVzZXJzIG5lZWQgdG8gYXV0aGVudGljYXRlIHRocm91Z2ggdGhlIGAvbG9naW5gIGVuZHBvaW50LCB3aGljaCB3aWxsIHJlZGlyZWN0IHRvIEF1dGgwIGZvciBsb2dpbi4gQWZ0ZXIgc3VjY2Vzc2Z1bCBhdXRoZW50aWNhdGlvbiwgdXNlcnMgcmVjZWl2ZSBhIEpXVCB0b2tlbiB3aGljaCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIgZm9yIGF1dGhlbnRpY2F0ZWQgcmVxdWVzdHMuCgojIyBDb250cmlidXRvcnMKCi0gICBSZW5hdG8gU291emEgZGUgQWxtZWlkYSBOZXRvIDxyZW5hdG9zb3V6YS5hbkBnbWFpbC5jb20+CgojIyBMaWNlbnNlCgpUaGlzIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEN1c3RvbSBDb2RlIExpY2Vuc2UgQWdyZWVtZW50LiBTZWUgdGhlIFtMSUNFTlNFXSguL0xJQ0VOU0UpIGZpbGUgZm9yIG1vcmUgZGV0YWlscy4K readmeEtag: '"f57e959c0091dafcc5d54151f60e799f59037d35"' readmeLastModified: Tue, 10 Dec 2024 14:06:42 GMT repositoryId: 818426871 description: >- Back-end of the MVP developed for the Sprint: Advanced Back-end Development course at PUC-Rio. created: '2024-06-21T20:40:10Z' updated: '2024-12-13T12:27:26Z' language: Python archived: false stars: 0 watchers: 1 forks: 0 owner: RenatoSouzaAN logo: https://avatars.githubusercontent.com/u/85565491?v=4 license: NOASSERTION repoEtag: '"2b6be44b72b07ee5990db6b26a45f880feed44a3c4e66f0c5e9c11328e863e07"' repoLastModified: Fri, 13 Dec 2024 12:27:26 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/open-banking/offers v3: true repositoryMetadata: base64Readme: >- IyBvZmZlcnMKT3BlbiBCYW5raW5nIE9mZmVycyBBUEkgYnVpbHQgb24gdG9wIG9mIGxpZ2h0LTRqCg== readmeEtag: '"3dae9a104ad5caaf69e3ac2e18c1205dc6881761"' readmeLastModified: Thu, 25 Jul 2024 20:09:55 GMT repositoryId: 235865977 description: Open Banking Offers API built on top of light-4j created: '2020-01-23T19:06:03Z' updated: '2026-02-03T01:08:47Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 repoEtag: '"f16d946b721cbe5f1a19a35bd90bd6c868d4d6cde33beab5329c866f6619e9a3"' repoLastModified: Tue, 03 Feb 2026 01:08:47 GMT foundInMaster: true category: - Documentation - Server - Parsers id: 3d4a34accc0845683d2874d3aef8f9fa - source: https://openapi.tools/ name: Alphadoc category: - Documentation - Description Validators link: https://alphadoc.io language: SaaS source_description: >- Alphadoc is a full featured developer experience platform. API components with granular parameter control and diagrams generated from your OpenAPI. Not only the reference, but the entire set of tutorials and guides automatically updates when the underlying API updates. v2: true v3: true v3_1: true id: 0143b34d223b2f7897e29fce204e72d9 foundInMaster: true - source: openapi3 tags repository: https://github.com/swrlab/swrlab v3: true id: 75fd16ecc0ecd5ba9a0051b517b3bdaa repositoryMetadata: base64Readme: >- IyBTV1IgQXVkaW8gTGFiCgojIyBQcmluY2lwbGVzCgpMZWFybiBhYm91dCBvdXIgRW5naW5lZXJpbmcgYW5kIFByb2plY3QgUHJpbmNpcGxlcyBpbiBbUFJJTkNJUExFUy5tZF0oUFJJTkNJUExFUy5tZCkuCgojIyBNb3JlIGZyb20gdGhlIEF1ZGlvIExhYgoKLSBPdXIgTm9kZUpTIHRvb2xzOiBbYEBzd3JsYWIvbm9kZS11dGlsc2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd3JsYWIvbm9kZS11dGlscykgLyBvbiBbbnBtIGBAc3dybGFiL3V0aWxzYF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHN3cmxhYi91dGlscykKLSBQdWJsaWMgcmVwb3NpdG9yaWVzIG9uIEdpdEh1YjogW3N3cmxhYi9yZXBvc2l0b3JpZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdzL3N3cmxhYi9yZXBvc2l0b3JpZXM/cT0mdHlwZT1wdWJsaWMmbGFuZ3VhZ2U9JnNvcnQ9bmFtZSkKLSBQdWJsaWMgcGFja2FnZXMgb24gbnBtOiBbbnBtanMuY29tL29yZy9zd3JsYWJdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9vcmcvc3dybGFiKQoKIyMgUHVibGljIEtleQoKWW91IGNhbiBmaW5kIG91ciBwdWJsaWMga2V5IGZvciBgbGFiIFthdF0gc3dyLmRlYCBvbiBba2V5cy5vcGVucGdwLm9yZ10oaHR0cHM6Ly9rZXlzLm9wZW5wZ3Aub3JnL3NlYXJjaD9xPWxhYiU0MHN3ci5kZSkuCg== readmeEtag: '"34d717782e4b50612edcaabd42453ab3d4264abc"' readmeLastModified: Tue, 20 Aug 2024 11:29:35 GMT repositoryId: 208029195 description: 🤝 SWR Audio Lab created: '2019-09-12T10:52:47Z' updated: '2024-08-26T11:39:23Z' language: null archived: false stars: 6 watchers: 3 forks: 0 owner: swrlab logo: https://avatars.githubusercontent.com/u/55231245?v=4 repoEtag: '"1a772dd22f618ee2a15094f47012d5f119d077f3516b91323f121326b64b51ee"' repoLastModified: Mon, 26 Aug 2024 11:39:23 GMT category: - Low-level Tooling - Server Implementations foundInMaster: true oldLocations: - https://github.com/swrlab/swr-radiohub-docs - name: Bitstream API Analytics source: Tooling repository issues source_description: >- Bitstream is an API analytics platform designed to provide insights into API usage, performance, and security. It offers tools for monitoring and alerting, collaboration and intelligent features to automate API management.- Repository: https://github.com/bitstreamapis link: https://www.bitstreamapis.com v3_1: true v3: true v2: true sourceIssueMetadata: issueNumber: 158 author: hedleysmith createdAt: '2024-07-30T22:56:42Z' updatedAt: '2024-07-30T22:56:42Z' url: https://github.com/OAI/tools.openapis.org/issues/158 status: open id: b75cd921cb6a42d3f0e6456c2a9e6bd9 foundInMaster: true - source: https://openapi.tools/ name: orval category: - Code Generators - Mock language: - Typescript - React - Vue - Svelte - Angular source_description: >- orval is able to generate client with appropriate type-signatures (TypeScript) from any valid OpenAPI v3 or Swagger v2 specification, either in yaml or json formats. Generate, valid, cache and mock in your frontend applications all with your OpenAPI specification. 🍺 link: https://orval.dev repository: https://github.com/orval-labs/orval v2: true v3: true id: 72b4e3cc7ddcef07aadfe99a81245653 repositoryMetadata: base64Readme: >- WyFbbnBtIHZlcnNpb25dKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9qcy9vcnZhbC5zdmcpXShodHRwczovL2JhZGdlLmZ1cnkuaW8vanMvb3J2YWwpCiFbTlBNIERvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vb3J2YWw/Y29sb3I9cHVycGxlKQpbIVtMaWNlbnNlOiBNSVRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGljZW5zZS1NSVQteWVsbG93LnN2ZyldKGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKQpbIVt0ZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL29ydmFsLWxhYnMvb3J2YWwvYWN0aW9ucy93b3JrZmxvd3MvdGVzdHMueWFtbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vb3J2YWwtbGFicy9vcnZhbC9hY3Rpb25zL3dvcmtmbG93cy90ZXN0cy55YW1sKQpbIVtvcnZhbF0oaHR0cHM6Ly9zbnlrLmlvL2Fkdmlzb3IvbnBtLXBhY2thZ2Uvb3J2YWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9zbnlrLmlvL2Fkdmlzb3IvbnBtLXBhY2thZ2Uvb3J2YWwpClshW0d1cnViYXNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0d1cnViYXNlLUFzayUyME9ydmFsJTIwR3VydS0wMDZCRkYpXShodHRwczovL2d1cnViYXNlLmlvL2cvb3J2YWwpCgo8cCBhbGlnbj0iY2VudGVyIj4KICA8aW1nIHNyYz0iLi9sb2dvL29ydmFsLWxvZ28taG9yaXpvbnRhbC5zdmc/cmF3PXRydWUiIHdpZHRoPSI1MDAiIGhlaWdodD0iMTYwIiBhbHQ9Im9ydmFsIC0gUmVzdGZ1bGwgQ2xpZW50IEdlbmVyYXRvciIgLz4KPC9wPgo8aDEgYWxpZ249ImNlbnRlciI+CiAgR2VuZXJhdGUgVHlwZXNjcmlwdCBjbGllbnRzIGZyb20gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIQo8L2gxPgoKIyMjIENvZGUgR2VuZXJhdGlvbgoKYG9ydmFsYCBnZW5lcmF0ZXMgdHlwZS1zYWZlIEpTIGNsaWVudHMgKFR5cGVTY3JpcHQpIGZyb20gYW55IHZhbGlkIE9wZW5BUEkgdjMgb3IgU3dhZ2dlciB2MiBzcGVjaWZpY2F0aW9uLCBlaXRoZXIgaW4gYHlhbWxgIG9yIGBqc29uYCBmb3JtYXRzLgoKPiBbIUlNUE9SVEFOVF0KPiBWZXJzaW9uIFs4LjAuMCtdKGh0dHBzOi8vb3J2YWwuZGV2L2RvY3MvdmVyc2lvbnMvdjgpIGNvbWVzIHdpdGggYSBsb3Qgb2YgaW1wcm92ZW1lbnRzIGFuZCBjaGFuZ2VzIHBsZWFzZSBzZWUgdGhlIFtNaWdyYXRpb24gR3VpZGVdKGh0dHBzOi8vb3J2YWwuZGV2L2RvY3MvdmVyc2lvbnMvdjgpCgojIyMgU3VwcG9ydGVkIGNsaWVudHMKCmBnZW5lcmF0ZWAgbW9kZWxzLCByZXF1ZXN0cywgaG9va3MsIFttb2Nrc10oaHR0cHM6Ly9tc3dqcy5pby8pIGFuZCBtb3JlLCBmb3IgdGhlc2Ugc3VwcG9ydGVkIGNsaWVudHM6CgotIFtSZWFjdF0oaHR0cHM6Ly9yZWFjdC5kZXYvKQotIFtSZWFjdCBRdWVyeV0oaHR0cHM6Ly90YW5zdGFjay5jb20vcXVlcnkvbGF0ZXN0L2RvY3MvZnJhbWV3b3JrL3JlYWN0L292ZXJ2aWV3KQotIFtSZWFjdCB3aXRoIHN3cl0oaHR0cHM6Ly9zd3IudmVyY2VsLmFwcC8pCi0gW1Z1ZSBRdWVyeV0oaHR0cHM6Ly90YW5zdGFjay5jb20vcXVlcnkvbGF0ZXN0L2RvY3MvZnJhbWV3b3JrL3Z1ZS9vdmVydmlldykKLSBbU3ZlbHRlIFF1ZXJ5XShodHRwczovL3RhbnN0YWNrLmNvbS9xdWVyeS9sYXRlc3QvZG9jcy9mcmFtZXdvcmsvc3ZlbHRlL292ZXJ2aWV3KQotIFtTb2xpZCBRdWVyeV0oaHR0cHM6Ly90YW5zdGFjay5jb20vcXVlcnkvbGF0ZXN0L2RvY3MvZnJhbWV3b3JrL3NvbGlkL292ZXJ2aWV3KQotIFtTb2xpZFN0YXJ0XShodHRwczovL3N0YXJ0LnNvbGlkanMuY29tLykKLSBbQW5ndWxhcl0oaHR0cHM6Ly9hbmd1bGFyLmRldi8pCi0gW0FuZ3VsYXIgUXVlcnldKGh0dHBzOi8vdGFuc3RhY2suY29tL3F1ZXJ5L2xhdGVzdC9kb2NzL2ZyYW1ld29yay9hbmd1bGFyL292ZXJ2aWV3KQotIFtIb25vXShodHRwczovL2hvbm8uZGV2LykKLSBbem9kXShodHRwczovL3pvZC5kZXYvKQotIFtuYXRpdmUgZmV0Y2hdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9GZXRjaF9BUEkpCi0gW21jcF0oaHR0cHM6Ly9tb2RlbGNvbnRleHRwcm90b2NvbC5pby9pbnRyb2R1Y3Rpb24pCgojIyMgU2FtcGxlcwoKWW91IGNhbiBmaW5kIHNvbWUgc2FtcGxlcyBiZWxvdzoKCi0gW3JlYWN0IGFwcF0oaHR0cHM6Ly9naXRodWIuY29tL29ydmFsLWxhYnMvb3J2YWwvdHJlZS9tYXN0ZXIvc2FtcGxlcy9yZWFjdC1hcHApCi0gW3JlYWN0IHF1ZXJ5XShodHRwczovL2dpdGh1Yi5jb20vb3J2YWwtbGFicy9vcnZhbC90cmVlL21hc3Rlci9zYW1wbGVzL3JlYWN0LXF1ZXJ5KQotIFtzdmVsdGUgcXVlcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcnZhbC1sYWJzL29ydmFsL3RyZWUvbWFzdGVyL3NhbXBsZXMvc3ZlbHRlLXF1ZXJ5KQotIFt2dWUgcXVlcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcnZhbC1sYWJzL29ydmFsL3RyZWUvbWFzdGVyL3NhbXBsZXMvdnVlLXF1ZXJ5KQotIFtyZWFjdCBhcHAgd2l0aCBzd3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcnZhbC1sYWJzL29ydmFsL3RyZWUvbWFzdGVyL3NhbXBsZXMvcmVhY3QtYXBwLXdpdGgtc3dyKQotIFthbmd1bGFyIGFwcF0oaHR0cHM6Ly9naXRodWIuY29tL29ydmFsLWxhYnMvb3J2YWwvdHJlZS9tYXN0ZXIvc2FtcGxlcy9hbmd1bGFyLWFwcCkKLSBbYW5ndWxhciBxdWVyeV0oaHR0cHM6Ly9naXRodWIuY29tL29ydmFsLWxhYnMvb3J2YWwvdHJlZS9tYXN0ZXIvc2FtcGxlcy9hbmd1bGFyLXF1ZXJ5KQotIFtob25vXShodHRwczovL2dpdGh1Yi5jb20vb3J2YWwtbGFicy9vcnZhbC90cmVlL21hc3Rlci9zYW1wbGVzL2hvbm8pCi0gW25leHQgYXBwIHdpdGggZmV0Y2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcnZhbC1sYWJzL29ydmFsL3RyZWUvbWFzdGVyL3NhbXBsZXMvbmV4dC1hcHAtd2l0aC1mZXRjaCkKLSBbbWNwIHNlcnZlcl0oaHR0cHM6Ly9naXRodWIuY29tL29ydmFsLWxhYnMvb3J2YWwvdHJlZS9tYXN0ZXIvc2FtcGxlcy9tY3ApCgojIyMgUGxheWdyb3VuZAoKVHJ5IE9ydmFsIG91dCBmb3IgeW91cnNlbGYgdXNpbmcgb3VyIFtQbGF5Z3JvdW5kXShodHRwczovL29ydmFsLmRldi9wbGF5Z3JvdW5kKSBhcHBsaWNhdGlvbiEKCiMjIERldmVsb3BlcnMKClRoaXMgcHJvamVjdCB1c2VzIFtZYXJuXShodHRwczovL3lhcm5wa2cuY29tLykgZm9yIHBhY2thZ2UgbWFuYWdlbWVudCBhbmQgYnVpbGRpbmcuIEhlcmUgYXJlIHRoZSBrZXkgc2NyaXB0cyBhdmFpbGFibGUgZm9yIGRldmVsb3BtZW50OgoKIyMjIFByZXJlcXVpc2l0ZXMKCkJlZm9yZSB1c2luZyBZYXJuIHNjcmlwdHMsIGVuc3VyZSB5b3UgaGF2ZSBZYXJuIGluc3RhbGxlZC4gWW91IGNhbiBpbnN0YWxsIGl0IGdsb2JhbGx5IHVzaW5nIG5wbToKCmBgYGJhc2gKbnBtIGluc3RhbGwgLWcgeWFybgpgYGAKCkFsdGVybmF0aXZlbHksIHlvdSBjYW4gZW5hYmxlIENvcmVwYWNrICh3aGljaCBjb21lcyB3aXRoIE5vZGUuanMgMTYuMTArKSB0byBtYW5hZ2UgWWFybjoKCmBgYGJhc2gKY29yZXBhY2sgZW5hYmxlCmBgYAoKIyMjIEJ1aWxkIFNjcmlwdHMKCi0gKipgeWFybiBudWtlOmFsbGAqKiAtIENvbXBsZXRlbHkgY2xlYW4geW91ciB3b3Jrc3BhY2UgYnkgcmVtb3ZpbmcgYWxsIGJ1aWxkIGFydGlmYWN0cywgbm9kZV9tb2R1bGVzLCBhbmQgY2FjaGVkIGZpbGVzLiBVc2UgdGhpcyB3aGVuIHlvdSB3YW50IHRvIHN0YXJ0IGZyZXNoLgoKLSAqKmB5YXJuIGJ1aWxkYCoqIC0gQnVpbGQgdGhlIHByb2plY3QgYW5kIG1ha2UgY2hhbmdlcyBhdmFpbGFibGUgdG8gdGhlIHdvcmtzcGFjZS4gUnVuIHRoaXMgYWZ0ZXIgbWFraW5nIGNvZGUgY2hhbmdlcyB0byBjb21waWxlIFR5cGVTY3JpcHQgYW5kIHByZXBhcmUgdGhlIHByb2plY3QgZm9yIHVzZS4KCiMjIyBUZXN0IFNjcmlwdHMKCi0gKipgeWFybiB0ZXN0YCoqIC0gUnVuIHVuaXQgdGVzdHMgaW4gYWxsIHBhY2thZ2VzLgoKLSAqKmB5YXJuIHVwZGF0ZS1zYW1wbGVzYCoqIC0gR2VuZXJhdGUgc2FtcGxlIG91dHB1dHMgdXNpbmcgdGhlIG5ld2x5IGJ1aWx0IHZlcnNpb24gb2YgT3J2YWwuIFRoaXMgcmVnZW5lcmF0ZXMgdGhlIHNhbXBsZSBjb2RlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGJ1aWxkLgoKLSAqKmB5YXJuIHRlc3Q6c2FtcGxlc2AqKiAtIFJ1biB0ZXN0cyBpbiB0aGUgc2FtcGxlcyBkaXJlY3RvcnkgdXNpbmcgdGhlIG5ld2x5IGdlbmVyYXRlZCBvdXRwdXQgZnJvbSBgdXBkYXRlLXNhbXBsZXNgLgoKLSAqKmB5YXJuIHRlc3Q6Y2xpYCoqIC0gVGVzdCB0aGF0IHRoZSBnZW5lcmF0ZWQgb3V0cHV0IChub3Qgc2FtcGxlcykgaXMgdmFsaWQgVHlwZVNjcmlwdC4gVGhpcyB2YWxpZGF0ZXMgdGhlIFR5cGVTY3JpcHQgY29tcGlsYXRpb24gb2YgdGhlIGdlbmVyYXRlZCBjb2RlLgoKIyMjIERldmVsb3BtZW50IFdvcmtmbG93CgpBIHR5cGljYWwgZGV2ZWxvcG1lbnQgd29ya2Zsb3cgd291bGQgYmU6CgoxLiBNYWtlIHlvdXIgY29kZSBjaGFuZ2VzCjIuIFJ1biBgeWFybiBidWlsZGAgdG8gY29tcGlsZSB5b3VyIGNoYW5nZXMKMy4gUnVuIGB5YXJuIHRlc3RgIHRvIGVuc3VyZSB1bml0IHRlc3RzIHBhc3MKNC4gUnVuIGB5YXJuIHVwZGF0ZS1zYW1wbGVzYCB0byByZWdlbmVyYXRlIHNhbXBsZSBvdXRwdXRzCjUuIFJ1biBgeWFybiB0ZXN0OnNhbXBsZXNgIHRvIHZlcmlmeSBzYW1wbGVzIHdvcmsgY29ycmVjdGx5CjYuIFJ1biBgeWFybiB0ZXN0OmNsaWAgdG8gdmFsaWRhdGUgVHlwZVNjcmlwdCBjb21waWxhdGlvbgoKSWYgeW91IGVuY291bnRlciBpc3N1ZXMgb3Igd2FudCB0byBzdGFydCBjb21wbGV0ZWx5IGZyZXNoOgoKMS4gUnVuIGB5YXJuIG51a2U6YWxsYCB0byBjbGVhbiBldmVyeXRoaW5nCjIuIFJlaW5zdGFsbCBkZXBlbmRlbmNpZXMgYW5kIHJlYnVpbGQgZnJvbSBzY3JhdGNoCgojIyBTcG9uc29ycwoKVGhhbmsgeW91IHRvIGFsbCBvdXIgc3BvbnNvcnMhIPCfjbsKClN1cHBvcnQgb3J2YWwgZGV2ZWxvcG1lbnQgYnkgW09wZW4gQ29sbGVjdGl2ZV0oaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3J2YWwpIGFuZCB5b3VyIGxvZ28gd2lsbCBiZSBkaXNwbGF5ZWQgaGVyZSB3aXRoIGEgbGluayB0byB5b3VyIHdlYnNpdGUuCgo8YSBocmVmPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcnZhbCI+CiAgPGltZyBzcmM9Imh0dHBzOi8vb3J2YWwuZGV2L2ltYWdlcy9vcnZhbC1sb2dvLWhvcml6b250YWwuc3ZnP3Jhdz10cnVlIiB3aWR0aD0iMzAwIiBhbHQ9IkJlY29tZSBhIHNwb25zb3IiIC8+CjwvYT4KCiMjIEJhY2tlcnMKClRoYW5rIHlvdSB0byBhbGwgb3VyIGJhY2tlcnMhIPCfmY8KClN1cHBvcnQgdXMgd2l0aCBhIG9uZS10aW1lIGRvbmF0aW9uIGFuZCBoZWxwIHVzIGNvbnRpbnVlIG91ciBhY3Rpdml0aWVzIG9uIFtPcGVuIENvbGxlY3RpdmVdKGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL29ydmFsKS4KCjxhIGhyZWY9Imh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL29ydmFsIj4KICA8aW1nIHNyYz0iaHR0cHM6Ly9vcnZhbC5kZXYvaW1hZ2VzL2VtYmxlbS5zdmciIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgYWx0PSJCYWNrZXIiIC8+CjwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3J2YWwiPgogIDxpbWcgc3JjPSJodHRwczovL29ydmFsLmRldi9pbWFnZXMvZW1ibGVtLnN2ZyIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBhbHQ9IkJhY2tlciIgLz4KPC9hPgo8YSBocmVmPSJodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcnZhbCI+CiAgPGltZyBzcmM9Imh0dHBzOi8vb3J2YWwuZGV2L2ltYWdlcy9lbWJsZW0uc3ZnIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGFsdD0iQmFja2VyIiAvPgo8L2E+CgoqKk5vdGU6KiogQWZ0ZXIgYmVjb21pbmcgYSBzcG9uc29yIG9yIGJhY2tlciwgcGxlYXNlIGNvbnRhY3QgdXMgb24gW0Rpc2NvcmRdKGh0dHBzOi8vZGlzY29yZC5nZy82ZkMyc2pEVTd3KSB0byB1cGxvYWQgeW91ciBsb2dvLgoKIyMgU3RhciBIaXN0b3J5Cgo8YSBocmVmPSJodHRwczovL3N0YXItaGlzdG9yeS5jb20vI29ydmFsLWxhYnMvb3J2YWwmRGF0ZSI+CiAgPHBpY3R1cmU+CiAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vYXBpLnN0YXItaGlzdG9yeS5jb20vc3ZnP3JlcG9zPW9ydmFsLWxhYnMvb3J2YWwmdHlwZT1EYXRlJnRoZW1lPWRhcmsiIC8+CiAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KSIgc3Jjc2V0PSJodHRwczovL2FwaS5zdGFyLWhpc3RvcnkuY29tL3N2Zz9yZXBvcz1vcnZhbC1sYWJzL29ydmFsJnR5cGU9RGF0ZSIgLz4KICAgIDxpbWcgYWx0PSJTdGFyIEhpc3RvcnkgQ2hhcnQiIHNyYz0iaHR0cHM6Ly9hcGkuc3Rhci1oaXN0b3J5LmNvbS9zdmc/cmVwb3M9b3J2YWwtbGFicy9vcnZhbCZ0eXBlPURhdGUiIC8+CiAgPC9waWN0dXJlPgo8L2E+CgojIyMgQWxsIFRoYW5rcyBUbyBPdXIgQ29udHJpYnV0b3JzOgoKPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29ydmFsLWxhYnMvb3J2YWwvZ3JhcGhzL2NvbnRyaWJ1dG9ycyI+CiAgPGltZyBzcmM9Imh0dHBzOi8vY29udHJpYi5yb2Nrcy9pbWFnZT9yZXBvPWFueW1hbmlheC9vcnZhbCIgLz4KPC9hPgo= readmeEtag: '"6db5ee1ebbfef0101af3fd72a50cd59239e70df5"' readmeLastModified: Tue, 27 Jan 2026 16:35:49 GMT repositoryId: 238402553 description: >- orval is able to generate client with appropriate type-signatures (TypeScript) from any valid OpenAPI v3 or Swagger v2 specification, either in yaml or json formats. 🍺 created: '2020-02-05T08:31:50Z' updated: '2026-02-06T04:02:52Z' language: TypeScript archived: false stars: 5321 watchers: 13 forks: 545 owner: orval-labs logo: https://avatars.githubusercontent.com/u/176128704?v=4 license: MIT repoEtag: '"29fe826aa5e21e389497adef2cfe2afee223a6219a98fbdb14e1d0efc938776c"' repoLastModified: Fri, 06 Feb 2026 04:02:52 GMT foundInMaster: true oldLocations: - https://github.com/anymaniax/orval - source: openapi3 tags repository: https://github.com/domapic/domapic-base v3: true repositoryMetadata: base64Readme: >- IVtEb21hcGljIEJhc2VdW2RvbWFwaWMtYmFzZS1sb2dvLWltYWdlXQoKIyBEb21hcGljIEJhc2UKCkJhc2UgZm9yIERvbWFwaWMgTm9kZS5qcyBwYWNrYWdlcy4KClshW0J1aWxkIHN0YXR1c11bdHJhdmlzY2ktaW1hZ2VdXVt0cmF2aXNjaS11cmxdIDwhLS0gWyFbQ292ZXJhZ2UgU3RhdHVzXVtjb3ZlcmFsbHMtaW1hZ2VdXVtjb3ZlcmFsbHMtdXJsXSBbIVtRdWFsaXR5IEdhdGVdW3F1YWxpdHktZ2F0ZS1pbWFnZV1dW3F1YWxpdHktZ2F0ZS11cmxdIC0tPiBbIVtqcy1zdGFuZGFyZC1zdHlsZV1bc3RhbmRhcmQtaW1hZ2VdXVtzdGFuZGFyZC11cmxdCgpbIVtOUE0gZGVwZW5kZW5jaWVzXVtucG0tZGVwZW5kZW5jaWVzLWltYWdlXV1bbnBtLWRlcGVuZGVuY2llcy11cmxdIFshW0xhc3QgY29tbWl0XVtsYXN0LWNvbW1pdC1pbWFnZV1dW2xhc3QtY29tbWl0LXVybF0gPCEtLSBbIVtMYXN0IHJlbGVhc2VdW3JlbGVhc2UtaW1hZ2VdXVtyZWxlYXNlLXVybF0gLS0+CgpbIVtOUE0gZG93bmxvYWRzXVtucG0tZG93bmxvYWRzLWltYWdlXV1bbnBtLWRvd25sb2Fkcy11cmxdIFshW1dlYnNpdGVdW3dlYnNpdGUtaW1hZ2VdXVt3ZWJzaXRlLXVybF0gWyFbTGljZW5zZV1bbGljZW5zZS1pbWFnZV1dW2xpY2Vuc2UtdXJsXQoKLS0tCgojIyBUYWJsZSBvZiBDb250ZW50cwoKKiBbSW50cm9kdWN0aW9uXSgjaW50cm9kdWN0aW9uKQoqIFtRdWljayBTdGFydF0oI3F1aWNrLXN0YXJ0KQoqIFtPcHRpb25zXSgjb3B0aW9ucykKCSogW0dldCBjb25maWddKCNnZXQtY29uZmlnKQoJKiBbU2V0IGNvbmZpZ10oI3NldC1jb25maWcpCgkqIFtDdXN0b20gY29uZmlnXSgjY3VzdG9tLWNvbmZpZykKKiBbU2VydmVyXSgjc2VydmVyKQoqIFtBZGRpbmcgQVBJIHJlc291cmNlc10oI2FkZGluZy1hcGktcmVzb3VyY2VzKQoJKiBbT3BlbiBBUEkgZGVmaW5pdGlvbnNdKCNvcGVuLWFwaS1kZWZpbml0aW9ucykKCSogW09wZXJhdGlvbnNdKCNvcGVyYXRpb25zKQogICogW0N1c3RvbSBtaWRkbGV3YXJlc10oI2N1c3RvbS1taWRkbGV3YXJlcykKKiBbQ2xpZW50XSgjY2xpZW50KQoqIFtUcmFjZXNdKCN0cmFjZXMpCiogW0Vycm9yc10oI2Vycm9ycykKKiBbU3RvcmFnZV0oI3N0b3JhZ2UpCiogW1V0aWxzXSgjdXRpbHMpCiogW0luZm9dKCNpbmZvKQoqIFtBdXRoZW50aWNhdGlvbl0oI2F1dGhlbnRpY2F0aW9uKQoJKiBbQXBpIEtleV0oI2FwaS1rZXkpCgkqIFtKd3RdKCNqd3QpCgkqIFtBdXRob3JpemF0aW9uXSgjYXV0aG9yaXphdGlvbikKKiBbQ0xJXSgjY29tbWFuZC1saW5lLWludGVyZmFjZSkKCSogW0ltcGxlbWVudGF0aW9uXSgjaW1wbGVtZW50YXRpb24pCgkqIFtVc2FnZV0oI3VzYWdlKQoJKiBbQ3VzdG9tIG9wdGlvbnMgYW5kIGNvbW1hbmRzXSgjY3VzdG9tLW9wdGlvbnMtYW5kLWNvbW1hbmRzKQoqIFtUZXN0IHN1aXRlc10oI3Rlc3Qtc3VpdGVzKQoKLS0tCgojIyBJbnRyb2R1Y3Rpb24KClRoaXMgcGFja2FnZSBpcyB1c2VkIGFzIGEgYmFzZSBmb3IgW19fZG9tYXBpYy1jb250cm9sbGVyX19dW2RvbWFwaWMtY29udHJvbGxlci11cmxdIGFuZCBbX19kb21hcGljLXNlcnZpY2VfX11bZG9tYXBpYy1zZXJ2aWNlLXVybF0gcGFja2FnZXMuCgpNYXliZSB5b3XCtGxsIGJldHRlciB3YW50IHRvIHJlYWQgZG9jdW1lbnRhdGlvbiBhYm91dCB0aGF0IHBpZWNlcyBhbmQgbGVhcm4gaG93IHVzZSB0aGVtIGRpcmVjdGx5LCBiZWNhdXNlIHRoaXMgaXMgYW4gaW50ZXJuYWwgZGVwZW5kZW5jeS4gQW55d2F5LCBpZiB5b3UgdGhpbmsgaXQgY2FuIGJlIHVzZWZ1bCBmb3IgeW91IHNlcGFyYXRlbHkuLi4KCkl0IHByb3ZpZGVzOgoKKiBfX1NlcnZlcl9fIHdpdGggYW4gZXh0ZW5zaWJsZSBBUEk6CgkqIE9wdGlvbmFsIHNzbCBwcm90b2NvbCwganVzdCBwcm92aWRlIHNzbCBjZXJ0aWZpY2F0ZSBhbmQga2V5IHBhdGhzLgoJKiBPQVVUSC4gSnd0IGFuZC9vciBhcGlLZXkgY3VzdG9taXphYmxlIGF1dGhlbnRpY2F0aW9uIHRvIGFwaSByZXNvdXJjZXMgb2YgY2hvaWNlLgoJKiBBdXRoZW50aWNhdGlvbiBjYW4gYmUgZGlzYWJsZWQgaW4gYSByYW5nZSBvZiBJUHMgb2YgY2hvaWNlLCBvciBjb21wbGV0ZWx5LgoJKiBDdXN0b21pemFibGUgYXV0aG9yaXphdGlvbiBsZXZlbCBmb3IgZWFjaCBBUEkgcmVzb3VyY2UuCgkqIEFkZCBBUEkgcmVzb3VyY2VzIHVzaW5nIE9wZW5BcGkgMy4wIGRlZmluaXRpb25zLgoJKiBIdHRwIE9QVElPTlMgbWV0aG9kIGNyZWF0ZWQgZm9yIGVhY2ggQVBJIHJlc291cmNlLCBhdXRvIGRlc2NyaWJpbmcgaXQuCgkqIEF1dG9tYXRpYyBhcGkgcGFyYW1ldGVycyBhbmQgYm9keSB2YWxpZGF0aW9uIHVzaW5nIHRoZSBvcGVuYXBpIHNjaGVtYXMuCgkqIEFQSSBvcGVyYXRpb25zIGFzIFByb21pc2VzLgoJKiBBdXRvbWF0aWMgZXJyb3IgaGFuZGxpbmcgbWFwcGVkIHRvIEhUVFAgZXJyb3JzLgoJKiBPcGVuYXBpLmpzb24gYXV0byBnZW5lcmF0ZWQgYW5kIHNlcnZlZC4KCSogQnVpbHQtaW4gX1N3YWdnZXJfIHdlYiBpbnRlcmZhY2UuCiAgKiBBbGxvd3Mgc2VydmluZyBzdGF0aWNzIHVuZGVyIHBhdGhzIG9mIHlvdXIgY2hvaWNlLgoqIF9fQ2xpZW50X18gdG8gb3RoZXIgRG9tYXBpYyBzZXJ2aWNlczoKCSogQXV0b21hdGljIGF1dGhlbnRpY2F0aW9uIGlmIEFQSSByZXNvdXJjZSByZXF1aXJlcyBpdC4KCSogUmVxdWVzdHMgYXMgUHJvbWlzZXMuCiogX19Db25maWd1cmF0aW9uX18KCSogQnVpbHQtaW4gc2VydmljZSBjb21tYW5kIGxpbmUgb3B0aW9ucy4gKHBvcnQsIGhvc3QsIGV0Yy4uLikuCgkqIEZ1bGx5IGV4dGVuc2libGUgd2l0aCB5b3VyIG93biBvcHRpb25zLgoJKiBTdG9yYWJsZS4gTmV4dCBleGVjdXRpb25zIHdpbGwgcmVtZW1iZXIgb3B0aW9ucyBpZiBgLS1zYXZlQ29uZmlnYCBpcyBzcGVjaWZpZWQgaW4gb25lIGV4ZWN1dGlvbi4KKiBfX1RyYWNlc19fCgkqIFNpeCBkaWZmZXJlbnQgbG9nIGxldmVscy4KCSogQW5zaSBjb2xvcmVkLCBhdCB5b3VyIGNob2ljZS4KCSogRGFpbHkgZmlsZSwgbGFzdCB0ZW4gc3RvcmVkLgoqIF9fRXJyb3JzX18KCSogQ3VzdG9tIGVycm9ycyBmb3IgZWFzeSBlcnJvciBoYW5kbGluZy4KCSogTWFwcGluZyB0byBIVFRQIGVycm9ycy4KKiBfX1N0b3JhZ2VfXwoJKiBKYXZhc2NyaXB0IG9iamVjdHMgdG8gSlNPTiBhdCBmaWxlIHN5c3RlbSBhbmQgdmljZXZlcnNhLgoJKiBGaWxlIHN5c3RlbSBhY2Nlc3Mgc2NvcGVkIHRvIHVuaXF1ZSBzZXJ2aWNlIGluc3RhbmNlIGZvbGRlci4KKiBfX0NMSV9fLiBFYXN5IGltcGxlbWVudGFibGUgaW4geW91ciBvd24gcGFja2FnZSwgaXQgcHJvdmlkZXM6CgkqIElmIHRoZSBzZXJ2aWNlIGlzIHN0YXJ0ZWQgdXNpbmcgdGhlIENMSSwgdGhlIHByb2Nlc3Mgd2lsbCBiZSBleGVjdXRlZCBpbiBiYWNrZ3JvdW5kLCBhbmQgbWFuYWdlZCB1c2luZyBbX1BNMl9dW3BtMi11cmxdLgoJKiBNdWx0aS1pbnN0YW5jaWFibGUuIFN0YXJ0IG1hbnkgc2VydmljZXMgaW5zdGFuY2VzIHByb3ZpZGluZyBkaWZmZXJlbnQgbmFtZXMuCgkqIENMSSBjb21tYW5kcyB0byBzdG9wIG9yIGRpc3BsYXkgbG9ncy4KCSogRXh0ZW5zaWJsZSB3aXRoIHlvdXIgb3duIGNvbW1hbmRzLgoKLS0tCgojIyBRdWljayBzdGFydAoKYGBganMKLy8gc2VydmVyLmpzIGZpbGUKY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKQpjb25zdCBkb21hcGljID0gcmVxdWlyZSgnZG9tYXBpYy1iYXNlJykKCmRvbWFwaWMuU2VydmljZSh7CiAgcGFja2FnZVBhdGg6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUpLAogIHR5cGU6ICdtb2R1bGUnCn0pLnRoZW4oc2VydmljZSA9PiB7CiAgcmV0dXJuIHNlcnZpY2Uuc2VydmVyLnN0YXJ0KCkKfSkKYGBgCgoqIFRoZSBgcGFja2FnZVBhdGhgIG9wdGlvbiBtdXN0IGJlIHRoZSBwYXRoIHdoZXJlIHlvdXIgcGFja2FnZS5qc29uIGZpbGUgaXMsIGluIG9yZGVyIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoZSBgL2FwaS9hYm91dGAgYXBpIHJlc291cmNlIHRoYXQgY2FuIHByb3ZpZGUgdXNlZnVsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwYWNrYWdlIHRvIG90aGVyIGRvbWFwaWMgc2VydmljZXMuCiogVGhlIGB0eXBlYCBvcHRpb24gd2lsbCBiZSBleHBvc2VkIGluIHRoZSBgYXBpL2Fib3V0YCBhcGkgcmVzb3VyY2UgZGlyZWN0bHksIGluIG9yZGVyIHRvIGluZm9ybSBhYm91dCB0aGUgc2VydmljZSB0eXBlLgoKYGBgc2hlbGwKIyBTdGFydCBzZXJ2ZXIKbm9kZSAuL3NlcnZlci5qcwpgYGAKCkJyb3dzZSB0byBodHRwOi8vbG9jYWxob3N0OjMwMDAgdG8gb3BlbiBfU3dhZ2dlcl8gaW50ZXJmYWNlIGFuZCBpbnNwZWN0IEFQSS4KCltiYWNrIHRvIHRvcF0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKLS0tCgojIyBPcHRpb25zCgpgYGBzaGVsbAojIERpc3BsYXkgaGVscCB3aXRoIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGFsbCBvcHRpb25zCm5vZGUgLi9zZXJ2ZXIuanMgLS1oZWxwCmBgYAoKb3B0aW9uIHwgdHlwZSB8IGRlc2NyaXB0aW9uIHwgZGVmYXVsdAotLS0gfCAtLS0gfCAtLS0gfCAtLS0KYG5hbWVgIHwgU3RyaW5nIHwgU2VydmljZSBpbnN0YW5jZSBuYW1lLiBJZiBub3QgcmVjZWl2ZWQsIHRoZSBzZXJ2aWNlIG5hbWUgd2lsbCBiZSB0aGUgcGFja2FnZSBuYW1lIHwgLQpgcG9ydGAgfCBOdW1iZXIgfCBIdHRwIHBvcnQgdXNlZCB8IDMwMDAKYGhvc3ROYW1lYCB8IFN0cmluZyB8IEhvc3RuYW1lIGZvciB0aGUgc2VydmVyIHwgLQpgc3NsQ2VydGAgfCBTdHJpbmcgfCBQYXRoIHRvIGFuIHNzbCBjZXJ0aWZpY2F0ZSB8IC0KYHNzbEtleWAgfCBTdHJpbmcgfCBQYXRoIHRvIGFuIHNzbCBrZXkgfCAtIApgYXV0aERpc2FibGVkYCB8IEFycmF5IHwgQXJyYXkgb2YgSVBzIG9yIENJRFIgSVAgcmFuZ2VzIHdpdGggYXV0aGVudGljYXRpb24gZGlzYWJsZWQgfCBbJzEyNy4wLjAuMScsICc6OjEvMTI4J10KYGF1dGhgIHwgQm9vbGVhbiB8IElmIGZhbHNlLCB0aGUgYXV0aGVudGljYXRpb24gd2lsbCBiZSBkaXNhYmxlZCBmb3IgYWxsIGFwaSByZXNvdXJjZXMgYW5kIG9yaWdpbnMgfCB0cnVlCmBjb2xvcmAgfCBCb29sZWFuIHwgVXNlIEFOU0kgY29sb3JzIGluIHRyYWNlcyB8IHRydWUKYGxvZ0xldmVsYCB8IFN0cmluZyB8IFRyYWNpbmcgbGV2ZWwuIENob2ljZXMgYXJlICdsb2cnLCAndHJhY2UnLCAnZGVidWcnLCAnaW5mbycsICd3YXJuJyBhbmQgJ2Vycm9yJyB8IGluZm8KYHBhdGhgIHwgU3RyaW5nIHwgUGF0aCB0byBiZSB1c2VkIGFzIGhvbWUgcGF0aCwgaW5zdGVhZCBvZiB1c2VywrRzIGRlZmF1bHQgKC5kb21hcGljIGZvbGRlciB3aWxsIGJlIGNyZWF0ZWQgaW5zaWRlKSB8IH4KYHNhdmVDb25maWdgIHwgQm9vbGVhbiB8IFNhdmUgY3VycmVudCBvcHRpb25zIGZvciBuZXh0IGV4ZWN1dGlvbiAoZXhjZXB0IGBuYW1lYCBhbmQgYHBhdGhgKSB8IGZhbHNlCmByZWplY3RVbnRydXN0ZWRgIHwgQm9vbGVhbiB8IFJlamVjdCB1bnRydXN0ZWQgc3NsIGNlcnRpZmljYXRlcyB3aGVuIHVzaW5nIGJ1aWx0LWluIGNsaWVudCB0byBtYWtlIHJlcXVlc3RzIHRvIGFub3RoZXIgc2VydmljZXMgfCBmYWxzZQoKRXhhbXBsZSBvZiBzZXR0aW5nIG9wdGlvbnMgZnJvbSBjb21tYW5kIGxpbmU6CmBgYHNoZWxsCm5vZGUgLi9zZXJ2ZXIuanMgLS1uYW1lPWZvb05hbWUgLS1hdXRoRGlzYWJsZWQ9MTkyLjE2OC4xLjEgMTcyLjAuMC4xIC0tbG9nTGV2ZWw9ZGVidWcgLS1jb2xvcj1mYWxzZSAtLWF1dGg9dHJ1ZQpgYGAKCiMjIyBHZXQgY29uZmlnCgpPcHRpb25zIGRlZmluZWQgZnJvbSBjb21tYW5kIGxpbmUgYXJlIGF2YWlsYWJsZSBpbiB0aGUgYGNvbmZpZ2Agb2JqZWN0IG9mIHRoZSBzZXJ2aWNlLgoKYHNlcnZpY2UuY29uZmlnLmdldChba2V5XSlgCgpgYGBqcwpkb21hcGljLlNlcnZpY2UoewogIHBhY2thZ2VQYXRoOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lKQp9KS50aGVuKHNlcnZpY2UgPT4gewogIHJldHVybiBzZXJ2aWNlLmNvbmZpZy5nZXQoKQp9KS50aGVuKGNvbmZpZ3VyYXRpb24gPT4gewogIGNvbnNvbGUubG9nKGNvbmZpZ3VyYXRpb24pCn0pCmBgYAoKIyMjIFNldCBjb25maWcKCkl0IGlzIG5vdCByZWNvbW1lbmRlZCwgYnV0LCBpdCBpZiBoYXMgc2Vuc2UsIGBjb25maWdgIHByb3BlcnRpZXMgY2FuIGJlIG1vZGlmaWVkIHByb2dyYW1tYXRpY2FsbHkuIElmIHlvdSB3YW50IHRvIHN0b3JlIHNvbWUgZGF0YSwgeW91wrRsbCBiZXR0ZXIgd2FudCB0byByZWFkIGFib3V0IHRoZSBbc3RvcmFnZSBmZWF0dXJlXSgjc3RvcmFnZSkuIAoKYHNlcnZpY2UuY29uZmlnLnNldChrZXkgWywgdmFsdWVdKWAKCmBgYGpzCmRvbWFwaWMuU2VydmljZSh7CiAgcGFja2FnZVBhdGg6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUpCn0pLnRoZW4oc2VydmljZSA9PiB7CiAgcmV0dXJuIHNlcnZpY2UuY29uZmlnLnNldCgnZm9vS2V5JywgJ2Zvb1ZhbHVlJykKICAgIC50aGVuKHZhbHVlID0+IHsKICAgICAgY29uc29sZS5sb2codmFsdWUpCiAgICAgIC8vIGZvb1ZhbHVlCiAgICB9KQp9KQpgYGAKCiMjIyBDdXN0b20gY29uZmlnCgpZb3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGV5IHdpbGwgYmUgc2V0ZWFibGUgZnJvbSBjb21tYW5kIGxpbmUgZXhlY3V0aW9uLCBkaXNwbGF5ZWQgaW4gaGVscCBhbmQgdmFsaWRhdGVkIGFzIHRoZSByZXN0IG9mIG9wdGlvbnMuIFVzZSBgY3VzdG9tQ29uZmlnYCBwYXJhbWV0ZXIgdG8gZGVmaW5lIHRoZW0uCgpbX1lhcmdzX11beWFyZ3MtdXJsXSBpcyB1c2VkIGFzIHVuZGVybGF5ZXIgdG8gbWFuYWdlIG9wdGlvbnMsIHNvIHlvdSBjYW4gcmVhZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IGhvdyB0byBkZWZpbmUgdGhlbToKCmBgYGpzCi8vIFVzYWdlIG9mIGN1c3RvbUNvbmZpZyBwYXJhbWV0ZXIKZG9tYXBpYy5TZXJ2aWNlKHsKICBwYWNrYWdlUGF0aDogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSksCiAgY3VzdG9tQ29uZmlnOiB7CiAgICBmb29PcHRpb246IHsKICAgICAgdHlwZTogJ2Jvb2xlYW4nLAogICAgICBhbGlhczogWydmb28tb3B0aW9uJ10sCiAgICAgIGRlc2NyaWJlOiAnVGVzdGluZyBhIGN1c3RvbSBjb25maWd1cmF0aW9uIG9wdGlvbicsCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0KICB9Cn0pLnRoZW4oc2VydmljZSA9PiB7CiAgcmV0dXJuIHNlcnZpY2UuY29uZmlnLmdldCgpCn0pLnRoZW4oY29uZmlndXJhdGlvbiA9PiB7CiAgY29uc29sZS5sb2coY29uZmlndXJhdGlvbikKfSkKYGBgCmBgYHNoZWxsCm5vZGUgLi9zZXJ2ZXIuanMgLS1mb29PcHRpb249ZmFsc2UKYGBgCgpDdXN0b20gb3B0aW9ucyBkZWZpbmVkIGZvciBhIHNlcnZpY2Ugc2hvdWxkIGJlIGRlZmluZWQgaW4gQ0xJIGltcGxlbWVudGF0aW9uIHRvbywgdG8gbWFrZSB0aGVtIGF2YWlsYWJsZSBmcm9tIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UuIFJlYWQgdGhlIFtDTEkgY3VzdG9tIG9wdGlvbnMgYW5kIGNvbW1hbmRzXSgjY3VzdG9tLW9wdGlvbnMtYW5kLWNvbW1hbmRzKSBjaGFwdGVyIGZvciBmdXJ0aGVyIGluZm8uCgpEZWZhdWx0IG9wdGlvbnMgdmFsdWVzIChvciBzYXZlZCB2YWx1ZXMgaWYgdGhlIGAtLXNhdmVDb25maWdgIG9wdGlvbiBpcyB1c2VkKSBhcmUgc2F2ZWQgaW50byBhIGZpbGUgYXQgYH4vLmRvbWFwaWMvPHNlcnZpY2VOYW1lPi9jb25maWcvc2VydmljZS5qc29uYC4gVGhpcyBmaWxlIGNhbiBiZSBlZGl0ZWQgbWFudWFsbHksIGFuZCB0aGUgbmV3IHZhbHVlcyB3aWxsIGJlIGFwcGxpZWQgbmV4dCB0aW1lIHRoZSBzZXJ2aWNlIGlzIHN0YXJ0ZWQuCgpbYmFjayB0byB0b3BdKCN0YWJsZS1vZi1jb250ZW50cykKCi0tLQoKIyMgU2VydmVyCgpUaGUgYHNlcnZpY2Uuc2VydmVyYCBvYmplY3QgaGFzIG1ldGhvZHM6CgoqIGBzdGFydGAgLSBTdGFydHMgdGhlIHNlcnZlci4gUmV0dXJucyBhIHByb21pc2UsIHJlc29sdmVkIHdoZW4gdGhlIHNlcnZlciBpcyBydW5uaW5nLiBPbmNlIHRoZSBzZXJ2ZXIgaXMgc3RhcnRlZCwgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGFkZCBtb3JlIG9wZW4gYXBpIGRlZmluaXRpb25zLCBvcGVyYXRpb25zLCBvciBhdXRoZW50aWNhdGlvbiBpbXBsZW1lbnRhdGlvbnMuCiogYGluaXRgIC0gT25seSBpbml0aWFsaXplIHRoZSBzZXJ2ZXIsIGFkZGluZyBhbGwgaW50ZXJuYWwgbWlkZGxld2FyZXMgYW5kIHJvdXRlcnMsIGFuZCByZXR1cm5zIHRoZSBzZXJ2ZXIgaW5zdGFuY2UuIFRoaXMgYWxsb3dzIHlvdSB0byBhZGQgbW9yZSBjdXN0b20gbWlkZGxld2FyZXMsIHNvY2tldHMsIGV0Yy4gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCBqdXN0IGJlZm9yZSBjYWxsaW5nIHRvIHRoZSAic3RhcnQiIG1ldGhvZC4KKiBgZXh0ZW5kT3BlbkFwaWAgLSBBZGQgb3BlbiBhcGkgZGVmaW5pdGlvbnMgdG8gdGhlIHNlcnZlci4gUmVhZCB0aGUgW0FkZGluZyBBUEkgcmVzb3VyY2VzXSgjYWRkaW5nLWFwaS1yZXNvdXJjZXMpIGNoYXB0ZXIgZm9yIGZ1cnRoZXIgaW5mby4KKiBgYWRkT3BlcmF0aW9uc2AgLSBBZGQgb3BlcmF0aW9ucyByZWxhdGVkIHRvIGFwaSBwYXRocy4gUmVhZCBbQWRkaW5nIEFQSSByZXNvdXJjZXNdKCNhZGRpbmctYXBpLXJlc291cmNlcykpLgoqIGBhZGRBdXRoZW50aWNhdGlvbmAgLSBBZGQgYXV0aGVudGljYXRpb24gaW1wbGVtZW50YXRpb25zLiBSZWFkIFtBdXRoZW50aWNhdGlvbl0oI2F1dGhlbnRpY2F0aW9uKS4KKiBgYWRkQXV0aG9yaXphdGlvbmAgLSBBZGQgYXV0aG9yaXphdGlvbiByb2xlcy4gUmVhZCBbQXV0aGVudGljYXRpb25dKCNhdXRoZW50aWNhdGlvbikuCiogYGFkZE1pZGRsZXdhcmVgIC0gQWRkIGN1c3RvbSBtaWRkbGV3YXJlcyB0byBhcGkuIFJlYWQgW0N1c3RvbSBtaWRkbGV3YXJlc10oI2N1c3RvbS1taWRkbGV3YXJlcykuCiogYGFkZFN0YXRpY2AgLSBTZXJ2ZSBzdGF0aWNzLiBGaXJzdCBhcmd1bWVudCBkZWZpbmVzIHNlcnZlciBwYXRoLCBzZWNvbmQgYXJndW1lbnQgZGVmaW5lcyBmaWxlU3lzdGVtIHBhdGguIGBhZGRTdGF0aWMoIi9hc3NldHMiLCBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAiYXNzZXRzIikpYC4gU3RhdGljcyBhZGRlZCB3aXRoIHRoaXMgbWV0aG9kIHdpbGwgYmUgc2VydmVkIHVzaW5nIGd6aXAgY29tcHJlc3Npb24uCgpbYmFjayB0byB0b3BdKCN0YWJsZS1vZi1jb250ZW50cykKCi0tLQoKIyMgQWRkaW5nIEFQSSByZXNvdXJjZXMKCllvdSBjYW4gYWRkIHlvdXIgb3duIEFQSSByZXNvdXJjZXMuIFRoZXkgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBvcGVuYXBpLmpzb24gZGVmaW5pdGlvbiwgYW5kIHdpbGwgYmUgYXZhaWxhYmxlIHVuZGVyIHRoZSBgL2FwaWAgcGF0aCBvZiB0aGUgc2VydmVyLgoKYGBganMKLy8gc2VydmVyLmpzIGZpbGUKY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKQpjb25zdCBkb21hcGljID0gcmVxdWlyZSgnZG9tYXBpYy1iYXNlJykKCmNvbnN0IG15T3BlbkFwaSA9IHJlcXVpcmUoJy4vYXBpL215T3BlbkFwaS5qc29uJykKCmRvbWFwaWMuU2VydmljZSh7CiAgcGFja2FnZVBhdGg6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUpCn0pLnRoZW4oc2VydmljZSA9PiB7CiAgcmV0dXJuIFByb21pc2UuYWxsKFsKICAgIHNlcnZpY2Uuc2VydmVyLmV4dGVuZE9wZW5BcGkobXlPcGVuQXBpKSwKICAgIHNlcnZpY2Uuc2VydmVyLmFkZE9wZXJhdGlvbnMoewogICAgICBteUFwaU9wZXJhdGlvbjogewogICAgICAgIGhhbmRsZXI6IChwYXJhbXMsIGJvZHksIHJlcykgPT4gewogICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7CiAgICAgICAgICAgIGhlbGxvOiAnd29ybGQnCiAgICAgICAgICB9KQogICAgICAgIH0KICAgICAgfQogICAgfSkKICBdKS50aGVuKCgpID0+IHsKICAgIHJldHVybiBzZXJ2aWNlLnNlcnZlci5zdGFydCgpCiAgfSkKfSkKYGBgCgojIyMgT3BlbiBBUEkgZGVmaW5pdGlvbnMKCmBzZXJ2aWNlLnNlcnZlci5leHRlbmRPcGVuQXBpKG9wZW5BcGlEZWZpbml0aW9uKWAKCk9wZW5hcGkgMy4wIHNwZWMgaXMgdXNlZCB0byBkZWZpbmUgbmV3IEFQSSBwYXRocy4gUmVhZCBtb3JlIGFib3V0IGhvdyB0byBkZWZpbmUgcGF0aHMgaW4gW19Td2FnZ2VyXyBzcGVjaWZpY2F0aW9uIGRvY3NdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykuIFlvdSBjYW4gZXZlbiB1c2UgdGhlIFtfU3dhZ2dlcl8gZWRpdG9yXShodHRwczovL3N3YWdnZXIuaW8vc3dhZ2dlci1lZGl0b3IvKSB0byBkZWZpbmUgYW5kIGRlc2lnbiB5b3VyIEFQSSwgYW5kIGFmdGVyd2FyZHMsIGxvYWQgdGhlIHJlc3VsdGFudCAuanNvbiBmaWxlcyBpbiBfZG9tYXBpYyBiYXNlXy4KCllvdSBjYW4gYWRkIGFzIG1hbnkgb3BlbkFwaSBkZWZpbml0aW9ucyBhcyB5b3Ugd2FudCwgYW5kIGZvciBlYWNoIG9uZSB5b3UgY2FuIGRlZmluZSAiY29tcG9uZW50cyIsICJ0YWdzIiwgb3IgInBhdGhzIi4gVGhlIHJlc3VsdGFudCBgb3BlbmFwaS5qc29uYCB3aWxsIGJlIHRoZSByZXN1bHQgb2YgZXh0ZW5kaW5nIGFsbCBvZiB0aGVtLCBhZnRlciBhZGRpbmcgYWxsIG5lZWRlZCBiYXNlIHByb3BlcnRpZXMuCgpTZWUgaGVyZSBhbiBbb3BlbkFwaSBkZWZpbml0aW9uIGV4YW1wbGVdKGxpYi9hcGkvYWJvdXQvb3BlbmFwaS5qc29uKSwgd2hpY2ggaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGNyZWF0ZSB0aGUgYnVpbHQtaW4gYC9hYm91dGAgYXBpIHJlc291cmNlLgoKIyMjIE9wZXJhdGlvbnMKCmBzZXJ2aWNlLnNlcnZlci5hZGRPcGVyYXRpb25zKGFwaU9wZXJhdGlvbnNPYmplY3QpYAoKRWFjaCBvcGVuQXBpIHBhdGggc2hvdWxkIGNvbnRhaW4gYSBwcm9wZXJ0eSBjYWxsZWQgYG9wZXJhdGlvbklkYC4gVGhpcyB2YWx1ZSBkZWZpbmVzIHdoaWNoIG9wZXJhdGlvbiB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIGFwaSByZXNvdXJjZSBpcyByZXF1ZXN0ZWQuCgpVc2UgdGhlIGBhZGRPcGVyYXRpb25zYCBzZXJ2ZXIgbWV0aG9kIHRvIGFkZCB0aGUgb3BlcmF0aW9ucy4gVGhlIG9wZXJhdGlvbiBrZXkgc2hvdWxkIG1hdGNoIHdpdGggdGhlIG9wZW5BcGkgYG9wZXJhdGlvbklkYCBwcm9wZXJ0eS4KCkVhY2ggb3BlcmF0aW9uIGNhbiBoYXZlIHByb3BlcnRpZXM6CgoqIGBoYW5kbGVyYCAtIFRoZSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGUgYXBpIHJlc291cmNlIGlzIHJlcXVlc3RlZC4gTWFuZGF0b3J5LgoJKiBBcmd1bWVudHM6CgkJKiBwYXJhbXMgLSBSZXF1ZXN0IHBhcmFtZXRlcnMuIGBwYXJhbXMucGF0aGAgYW5kIGBwYXJhbXMucXVlcnlgLgoJCSogYm9keSAtIFJlcXVlc3QgYm9keQoJCSogcmVzIC0gQWxsb3dzIHRvIHNldCBjdXN0b20gaGVhZGVycyBhbmQgc3RhdHVzQ29kZSB0byByZXNwb25zZS4gRXhhbXBsZXM6IGByZXMuc3RhdHVzKDIwMSlgLCBgcmVzLmhlYWRlcignbG9jYXRpb24nLCAnL2FwaS9ib29rcy9uZXctYm9vaycpYAoJCSogdXNlckRhdGEgLSBJZiB1c2VyIGlzICJsb2dnZWQgaW4iLCBUaGUgdXNlckRhdGEgcmV0dXJuZWQgYnkgdGhlIGNvcnJlc3BvbmRhbnQgYXV0aGVudGljYXRpb24gbWV0aG9kIGB2ZXJpZnlgIGhhbmRsZXIgd2lsbCBiZSByZWNlaXZlZCBpbiB0aGlzIHByb3BlcnR5LgoJKiBSZXR1cm5zOgoJCSogQ2FuIHJldHVybiBhIFByb21pc2UuIElmIHJlamVjdGVkLCB0aGUgZXJyb3Igd2lsbCBiZSBtYXBwZWQgdG8gYSBjb3JyZXNwb25kYW50IGh0bWwgZXJyb3IuIElmIHJlc29sdmVkLCB0aGUgcmVzb2x2ZWQgdmFsdWUgd2lsbCBiZSByZXR1cm5lZCBhcyByZXNwb25zZSBib2R5LgoJCSogSWYgcmV0dXJucyBhIHZhbHVlLCB0aGUgdmFsdWUgd2lsbCBiZSByZXR1cm5lZCBhcyByZXNwb25zZSBib2R5LgoJCSogSWYgdGhyb3dzIGFuIGVycm9yLCB0aGUgZXJyb3Igd2lsbCBiZSBtYXBwZWQgdG8gYSBjb3JyZXNwb25kYW50IGh0bWwgZXJyb3IuCiogYHBhcnNlYCAtIFBhcnNlIHBhcmFtZXRlcnMgZnJvbSByZXF1ZXN0LgoJKiBJdCBtdXN0IGJlIGFuIG9iamVjdCwgd2l0aCBmaXJzdCBsZXZlbCBrZXlzIGFzIHJlcXVlc3Qgb2JqZWN0IHdoZXJlIHRoZSBwYXJhbWV0ZXIgd2lsbCBiZSBmb3VuZCwgYW5kIHNlY29uZCBsZXZlbCBrZXlzIGFzIHBhcmFtZXRlciBuYW1lIHRvIGJlIHBhcnNlZC4gVGhlIGBwYXJzZXJgIGZ1bmN0aW9uIHdpbGwgcmVjZWl2ZSB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhcmd1bWVudCwgYW5kIHNob3VsZCByZXR1cm4gdGhlIHBhcnNlZCB2YWx1ZS4KCSogVXNlZnVsLCBmb3IgZXhhbXBsZSwgdG8gY29udmVydCBudW1lcmljIHZhbHVlcyBmcm9tIHJlcXVlc3QgcGFyYW1zIG9yIHF1ZXJ5IHN0cmluZ3MsIHRoYXQgYXJlIHJlY2VpdmVkIGFzIHN0cmluZ3MsIHRvIHJlYWwgbnVtYmVycy4KKiBgYXV0aGAgLSBUaGlzIG1ldGhvZCB3aWxsIGJlIGV4ZWN1dGVkIHRvIGNoZWNrIGlmIHRoZSB1c2VyIGhhcyBlbm91Z2ggcGVybWlzc2lvbnMgdG8gcGVyZm9ybSBhbiBvcGVyYXRpb24uIENhbiBiZSBhIGZ1bmN0aW9uLCBvciBhIHN0cmluZyB0aGF0IGRlZmluZXMgd2hpY2ggYXV0aG9yaXphdGlvbiByb2xlIGZ1bmN0aW9uIGhhcyB0byBiZSBleGVjdXRlZC4gSWYgdGhpcyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhcGkgcmVzb3VyY2Ugd2lsbCBiZSBhdmFpbGFibGUgZm9yIGFsbCB1c2Vycy4gUmVhZCBbQXV0aGVudGljYXRpb25dKCNhdXRoZW50aWNhdGlvbikgZm9yIGZ1cnRoZXIgaW5mby4KCSogQXJndW1lbnRzOgoJCSogdXNlckRhdGEgLSBUaGUgZGVjb2RlZCBkYXRhIGFib3V0IHRoZSB1c2VyIHRoYXQgaXMgbWFraW5nIHRoZSByZXF1ZXN0LgoJCSogcGFyYW1zIC0gUmVxdWVzdCBwYXJhbWV0ZXJzLiBgcGFyYW1zLnBhdGhgIGFuZCBgcGFyYW1zLnF1ZXJ5YC4KCQkqIGJvZHkgLSBSZXF1ZXN0IGJvZHkKCSogUmV0dXJuczogCgkJKiBQcm9taXNlLnJlc29sdmUsIG9yIGB0cnVlYCB0byB2YWxpZGF0ZSB0aGUgdXNlci4KCQkqIEFueSBvdGhlciByZXR1cm5lZCB2YWx1ZSB3aWxsIHJlc3VsdCBpbiBhICJGb3JiaWRkZW4iIHJlc3BvbnNlLgoKYGBganMKc2VydmljZS5zZXJ2ZXIuYWRkT3BlcmF0aW9ucyh7CiAgbXlBcGlPcGVyYXRpb246IHsKICAgIGF1dGg6ICh1c2VyRGF0YSwgcGFyYW1zLCBib2R5KSA9PiB7CiAgICAgIGlmICh1c2VySXNBbGxvd2VkKHVzZXJEYXRhKSkgewogICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKQogICAgICB9CiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpCiAgICB9LAogICAgaGFuZGxlcjogKHBhcmFtcywgYm9keSwgcmVzLCB1c2VyRGF0YSkgPT4gewogICAgICByZXMuc3RhdHVzKDIwMSkKICAgICAgcmVzLmhlYWRlcignbG9jYXRpb24nLCAnL2FwaS9ib29rcy9uZXctYm9vaycpCiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoewogICAgICAgIGhlbGxvOiAnd29ybGQnCiAgICAgIH0pCiAgICB9LAogICAgcGFyc2U6IHsKICAgICAgcGFyYW1zOiB7CiAgICAgICAgaWQ6IChpZCkgPT4gewogICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGlkLCAxMCkKICAgICAgICB9CiAgICAgIH0sCiAgICAgIHF1ZXJ5OiB7CiAgICAgICAgcGFnZTogKHBhZ2UpID0+IHsKICAgICAgICAgIHJldHVybiBwYXJzZUludChwYWdlLCAxMCkKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9Cn0pCmBgYAoKIyMjIEN1c3RvbSBtaWRkbGV3YXJlcwoKYHNlcnZpY2Uuc2VydmVyLmFkZE1pZGRsZXdhcmUoZXhwcmVzc01pZGRsZXdhcmUpYAoKQ3VzdG9tIGV4cHJlc3MgbWlkZGxld2FyZXMgY2FuIGJlIGFkZGVkLiBXaWxsIGJlIGFkZGVkIGJlZm9yZSBhbGwgb3RoZXIgaW50ZXJuYWwgbWlkZGxld2FyZXMsIHN1Y2ggYXMgb3BlcmF0aW9uIGhhbmRsZXJzLgoKYGBganMKc2VydmljZS5zZXJ2ZXIuYWRkTWlkZGxld2FyZSgocmVxLCByZXMsIG5leHQpID0+IHsKICBjb25zb2xlLmxvZygnRXhlY3V0aW5nIG1pZGRsZXdhcmUgYmVmb3JlIG9wZXJhdGlvbicpCiAgbmV4dCgpCn0pCmBgYAoKCltiYWNrIHRvIHRvcF0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKLS0tCgojIyBDbGllbnQKCk1ha2UgcmVxdWVzdHMgdG8gb3RoZXIgX0RvbWFwaWNfIHNlcnZpY2VzLiBBdXRvbWF0aWMgYXV0aGVudGljYXRpb24gYW5kIGVycm9yIGhhbmRsaW5nIGlzIHByb3ZpZGVkLgoKYGBganMKZG9tYXBpYy5TZXJ2aWNlKCkudGhlbihzZXJ2aWNlID0+IHsKICBjb25zdCBjbGllbnQgPSBuZXcgc2VydmljZS5jbGllbnQuQ29ubmVjdGlvbignaHR0cDovL2xvY2FsaG9zdDozMDAwJykKICByZXR1cm4gY2xpZW50LmdldCgnL2Fib3V0JykudGhlbihyZXNwb25zZSA9PiB7CiAgICBjb25zb2xlLmxvZyhyZXNwb25zZSkKICB9KQp9KQpgYGAKCmBgYGpzCi8vIENsaWVudCB3aXRoIHR3byBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGV4YW1wbGUKZG9tYXBpYy5TZXJ2aWNlKCkudGhlbihzZXJ2aWNlID0+IHsKICBjb25zdCBjbGllbnQgPSBuZXcgc2VydmljZS5jbGllbnQuQ29ubmVjdGlvbignaHR0cDovL2xvY2FsaG9zdDozMDAwJyx7CiAgICBhcGlLZXk6ICd0aGlzSXNhRm9vQXBpS2V5JywKICAgIGp3dDogewogICAgICB1c2VyOiAnZm9vVXNlck5hbWUnLAogICAgICBwYXNzd29yZDogJ2Zvb1Bhc3N3b3JkJwogICAgfQogIH0pCiAgcmV0dXJuIGNsaWVudC5nZXQoJy9hYm91dCcpLnRoZW4ocmVzcG9uc2UgPT4gewogICAgY29uc29sZS5sb2cocmVzcG9uc2UpCiAgfSkKfSkKYGBgCgpbYmFjayB0byB0b3BdKCN0YWJsZS1vZi1jb250ZW50cykKCi0tLQoKIyMgVHJhY2VzCgpUaGVyZSBhcmUgc2l4IGRpZmZlcmVudCBsZXZlbHMgb2YgdHJhY2VzLiBEZXBlbmRpbmcgb2YgdGhlIGNob2ljZWQgbG9nIGxldmVsIHdoZW4gc3RhcnRlZCB0aGUgc2VydmljZSwgdGhlIHRyYWNlIHdpbGwgYmUgcHJpbnRlZCB0byB0aGUgY29uc29sZSBhbmQgd3JpdHRlbiB0byB0aGUgZGFpbHkgZmlsZSBvciBub3QuCgpBbGwgdHJhY2VzIGluIGEgZGF5IGFyZSBzYXZlZCB0byBhIGZpbGUsIGludG8gYH4vLmRvbWFwaWMvPHNlcnZpY2VOYW1lPi9sb2dzLzxzZXJ2aWNlTmFtZT4uPGRhdGU+LmxvZ2AuIFRyYWNlIGZpbGVzIG9sZGVyIHRoYW4gdGVuIGRheXMgYXJlIGF1dG9tYXRpY2FsbHkgZGVsZXRlZC4KCldoZW4gdGhlIHNlcnZpY2UgaXMgc3RhcnRlZCBhdCBiYWNrZ3JvdW5kIHVzaW5nIHRoZSBidWlsdC1pbiBDTEksIGxvZ3MgYXJlIGFsc28gc2F2ZWQgdG8gYSBmaWxlIGF0IGB+Ly5kb21hcGljLzxzZXJ2aWNlTmFtZT4vbG9ncy88c2VydmljZU5hbWU+LnBtMi5sb2dgLiBJdCBpcyByZWNvbW1lbmRlZCB0byBpbnN0YWxsIFtfUE0yIGxvZyByb3RhdGVfXShodHRwczovL2dpdGh1Yi5jb20va2V5bWV0cmljcy9wbTItbG9ncm90YXRlKSB0byBhdm9pZCB0aGlzIGZpbGUgZ3Jvd2luZyB0b28gbXVjaC4KClNvcnRlZCB0cmFjZXIgbGV2ZWxzIGFyZTogJ2xvZycsICd0cmFjZScsICdkZWJ1ZycsICdpbmZvJywgJ3dhcm4nIGFuZCAnZXJyb3InLgoKVHJhY2VyIHVzYWdlOgoKYGBganMKZG9tYXBpYy5TZXJ2aWNlKCkudGhlbihzZXJ2aWNlID0+IHsKICByZXR1cm4gc2VydmljZS50cmFjZXIuZGVidWcoJ3Rlc3RpbmcnKS50aGVuKCgpID0+IHsKICAgIHJldHVybiBzZXJ2aWNlLnRyYWNlci5sb2coJ3Rlc3RpbmcgbG9nJykKICB9KS50aGVuKCgpID0+IHsKICAgIHJldHVybiBzZXJ2aWNlLnRyYWNlci53YXJuKCdUaGlzIGlzIGEgd2FybmluZycsICdUaGlzIGlzIHBhcnQgb2YgdGhlIHNhbWUgd2FybmluZycpCiAgfSkudGhlbigoKSA9PiB7CiAgICByZXR1cm4gc2VydmljZS50cmFjZXIuZXJyb3IobmV3IEVycm9yKCdUaGlzIHdpbGwgcHJpbnQgdGhlIGVycm9yIHN0YWNrJykpCiAgfSkudGhlbigoKSA9PiB7CiAgICByZXR1cm4gc2VydmljZS50cmFjZXIuZXJyb3IoJ1ByaW50ZWQgd2l0aCBlcnJvciBzdHlsZSwgYnV0IG5vIHN0YWNrJykKICB9KQp9KQpgYGAKClRoZXJlIGlzIGFuIGV4dHJhIG1ldGhvZCBjYWxsZWQgYGdyb3VwYCwgdGhhdCBhbGxvd3MgdG8gaW52b3F1ZSBkaWZmZXJlbnQgbGV2ZWxzIG9mIHRyYWNlcnMgYXQgYSB0aW1lOgoKYGBganMKZG9tYXBpYy5TZXJ2aWNlKCkudGhlbihzZXJ2aWNlID0+IHsKICByZXR1cm4gc2VydmljZS50cmFjZXIuZ3JvdXAoWwogICAgewogICAgICBsb2c6ICdUaGlzIGlzIGEgbG9nJwogICAgfSwKICAgIHsKICAgICAgdHJhY2U6ICdUaGlzIGlzIGEgdHJhY2UnCiAgICB9LAogICAgewogICAgICB3YXJuOiAnVGhpcyBpcyBhIHdhcm4nCiAgICB9CiAgXSkKfSkKYGBgCgpbYmFjayB0byB0b3BdKCN0YWJsZS1vZi1jb250ZW50cykKCi0tLQoKIyMgRXJyb3JzCgpDdXN0b20gZXJyb3JzIGNvbnN0cnVjdG9ycyBhcmUgcHJvdmlkZWQgdGhyb3VnaCB0aGUgYHNlcnZpY2UuZXJyb3JzYCBvYmplY3QuCgpDdXN0b20gZXJyb3JzIHVzYWdlOgoKYGBganMKY29uc3QgUHJvbWlzZSA9IHJlcXVpcmUoJ2JsdWViaXJkJykKCmRvbWFwaWMuU2VydmljZSgpLnRoZW4oc2VydmljZSA9PiB7CiAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBzZXJ2aWNlLmVycm9ycy5CYWREYXRhKCdSZWNlaXZlZCBiYWQgZGF0YScpKQogICAgLmNhdGNoKHNlcnZpY2UuZXJyb3JzLkJhZERhdGEsICgpID0+IHsKICAgICAgY29uc29sZS5sb2coJ0JhZCBkYXRhIGVycm9yIGNhdWdodCcpCiAgICAgIHRocm93IG5ldyBzZXJ2aWNlLmVycm9ycy5CYWRJbXBsZW1lbnRhdGlvbigpCiAgICB9KQp9KQpgYGAKCkNvbnN1bHQgW2FsbCBhdmFpbGFibGUgZXJyb3IgY29uc3RydWN0b3JzXShsaWIvYmFzZXMvY29yZS9FcnJvcnMuanMpIGFuZCBpdHMgY29ycmVzcG9uZGVuY2VzIHdpdGggaHRtbCBlcnJvcnMuCgpJbiBhZGRpdGlvbiB0byBlcnJvciBjb25zdHJ1Y3RvcnMsIHRocmVlIG1ldGhvZHMgYXJlIHByb3ZpZGVkIGluIHRoZSBgZXJyb3JzYCBvYmplY3QuIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgaW50ZXJuYWxseSBieSBfZG9tYXBpYy1iYXNlXyBpbiBvcmRlciB0byBtYXAgdGhlIHJldHVybmVkIGVycm9ycyB0byBIVE1MIGVycm9ycyBhbmQgdmljZXZlcnNhOgoKKiBgaXNDb250cm9sbGVkYCAtIEFsbG93cyB0byBrbm93IGlmIGVycm9yIGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBhIGN1c3RvbSBlcnJvciBjb25zdHJ1Y3RvcgoJKiBgc2VydmljZS5lcnJvcnMuaXNDb250cm9sbGVkKGVycm9yKWAKCQpgYGBqcwpjb25zdCBlcnJvciA9IG5ldyBzZXJ2aWNlLmVycm9ycy5Db25mbGljdCgpCmNvbnNvbGUubG9nKHNlcnZpY2UuZXJyb3JzLmlzQ29udHJvbGxlZChlcnJvcikpCi8vIHRydWUKCmVycm9yID0gbmV3IEVycm9yKCkKY29uc29sZS5sb2coc2VydmljZS5lcnJvcnMuaXNDb250cm9sbGVkKGVycm9yKSkKLy8gZmFsc2UKYGBgCgoqIGBGcm9tQ29kZWAgLSBSZXR1cm5zIGFuIGVycm9yIGNyZWF0ZWQgd2l0aCB0aGUgY29uc3RydWN0b3IgY29ycmVzcG9uZGVudCB0byB0aGUgcHJvdmlkZWQgaHRtbCBlcnJvciBzdGF0dXMgY29kZToKCSogYHNlcnZpY2UuZXJyb3JzLkZyb21Db2RlKGNvZGUsIG1lc3NhZ2UgWywgc3RhY2tdIFssIGV4dHJhRGF0YV0pYAoJCmBgYGpzCnJldHVybiBQcm9taXNlLnJlamVjdChzZXJ2aWNlLmVycm9ycy5Gcm9tQ29kZSg0MDMsICdDdXN0b20gbWVzc2FnZScpKQogIC5jYXRjaChzZXJ2aWNlLmVycm9ycy5Gb3JiaWRkZW4sIGVycm9yID0+IHsKICAgIGNvbnNvbGUubG9nKCdGb3JiaWRkZW4gZXJyb3IgY2F1Z2h0JykKICAgIGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2UpCiAgICAvLyBDdXN0b20gbWVzc2FnZQogIH0pCmBgYAoKKiBgdG9IVE1MYCAtIFJldHVybnMgYSBbX0Jvb21pZmllZF9dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2Jvb20pIGVycm9yIGNvcnJlc3BvbmRlbnQgdG8gdGhlIHVzZWQgZXJyb3IgY29uc3RydWN0b3IuIEVhY2ggZXJyb3IgY29uc3RydWN0b3IgaXMgbWFwcGVkIHRvIGFuIHNwZWNpZmljIHN0YXR1cyBjb2RlLCByZWFkeSB0byBiZSByZXR1cm5lZCBieSB0aGUgQVBJOgoJKiBgc2VydmljZS5lcnJvcnMudG9IVE1MKGVycm9yKWAKCmBgYGpzCmNvbnN0IGVycm9yID0gc2VydmljZS5lcnJvcnMuRm9yYmlkZGVuKCkKY29uc29sZS5sb2coIHNlcnZpY2UuZXJyb3JzLnRvSFRNTChlcnJvcikub3V0cHV0LnBheWxvYWQuc3RhdHVzQ29kZSApCi8vIDQwMwpgYGAKCltiYWNrIHRvIHRvcF0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKLS0tCgojIyBTdG9yYWdlCgpTdG9yYWdlIG1ldGhvZHMgcmVhZCBhbmQgc2F2ZSBqc29uIGRhdGEgZnJvbSBhIGZpbGUgc3RvcmVkIGFzIGB+Ly5kb21hcGljLzxzZXJ2aWNlTmFtZT4vc3RvcmFnZS9zZXJ2aWNlLmpzb25gLgoKYGBganMKc2VydmljZS5zdG9yYWdlLnNldCgnZm9vUHJvcGVydHknLCB7dGVzdDogJ3Rlc3RpbmcnfSkKICAudGhlbigoKSA9PiB7CiAgICByZXR1cm4gc2VydmljZS5zdG9yYWdlLmdldCgnZm9vUHJvcGVydHknKQogIH0pCiAgLnRoZW4oZGF0YSA9PiB7CiAgICBjb25zb2xlLmxvZyhkYXRhKQogICAgLy8ge3Rlc3Q6ICd0ZXN0aW5nJ30KICAgIHJldHVybiBzZXJ2aWNlLnN0b3JhZ2UucmVtb3ZlKCdmb29Qcm9wZXJ0eScpCiAgfSkKYGBgCgpNZXRob2RzCgoqIGBnZXRgIC0gUmVhZCBkYXRhIGZyb20gc3RvcmFnZSBmaWxlLgoJKiBgc2VydmljZS5zdG9yYWdlLmdldChba2V5XSlgCgkqIEFyZ3VtZW50czoKCQkqIGtleSAtIE9wdGlvbmFsLCBrZXkgb2YgdGhlIG9iamVjdCB0byBnZXQuIElmIG5vIHByb3ZpZGVkLCBlbnRpcmUgZGF0YSBpcyByZXR1cm5lZC4KCSogUmV0dXJuczogCgkJKiBBIHByb21pc2UsIHJlc29sdmVkIHdpdGggdGhlIGNvcnJlc3BvbmRhbnQgZGF0YS4KKiBgc2V0YCAtIFNhdmUgZGF0YSBpbnRvIHRoZSBzdG9yYWdlIGZpbGUuCgkqIGBzZXJ2aWNlLnN0b3JhZ2Uuc2V0KFtrZXksXSB2YWx1ZSlgCgkqIEFyZ3VtZW50czoKCQkqIGtleSAtIE9wdGlvbmFsLiBLZXkgb2YgdGhlIG9iamVjdCB0byBzZXQuIElmIG5vIHByb3ZpZGVkLCBlbnRpcmUgZGF0YSBpcyBvdmVyd3JpdHRlbiBieSB0aGUgZ2l2ZW4gdmFsdWUuCgkJKiB2YWx1ZSAtIERhdGEgdG8gYmUgc2F2ZWQuCiogYHJlbW92ZWAgLSBSZW1vdmVzIGEgcHJvcGVydHkgZnJvbSB0aGUgc3RvcmVkIG9iamVjdC4KCSogYHNlcnZpY2Uuc3RvcmFnZS5yZW1vdmUoa2V5KWAKCSogQXJndW1lbnRzOgoJCSoga2V5IC0gS2V5IG9mIHRoZSBvYmplY3QgdG8gYmUgcmVtb3ZlZC4KKiBgZ2V0UGF0aGAgLSBHZXQgc3RvcmFnZSBmb2xkZXIuCgkqIFJldHVybnM6IAoJCSogQSBwcm9taXNlLCByZXNvbHZlZCB3aXRoIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBzdG9yYWdlIGZvbGRlci4KCltiYWNrIHRvIHRvcF0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKLS0tCgojIyBVdGlscwoKU2V0IG9mIHV0aWxpdGllczoKCiogYHRlbXBsYXRlc2AKCSogYGNvbXBpbGVgIC0gUmVjZWl2ZWQgYW4gb2JqZWN0IGNvbnRhaW5pbmcgYSBzZXQgb2YgYGtleTonc3RyaW5nJ2AsIHdpbGwgdXNlIFtfSGFuZGxlYmFyc19dKGh0dHA6Ly9oYW5kbGViYXJzanMuY29tLykgdG8gY29tcGlsZSBlYWNoIHN0cmluZywgYW5kIHJldHVybiBhbiBvYmplY3Qgd2l0aCBzYW1lIGtleXMsIGJ1dCBjb250YWluaW5nIHRoZSBjb21waWxlZCB0ZW1wbGF0ZXMuCgkqIGBjb21waWxlZGAgLSBTZXQgb2YgcHJlY29tcGlsZWQgdGVtcGxhdGVzLCB1c2VkIGludGVybmFsbHkuCmBgYGpzCmNvbnN0IHRlbXBsYXRlcyA9IHNlcnZpY2UudXRpbHMudGVtcGxhdGVzLmNvbXBpbGUoewogIG15VGVtcGxhdGUxOiAnVmFsdWUgaXM6IHt7dmFsdWV9fScKfSkKY29uc29sZS5sb2codGVtcGxhdGVzLm15VGVtcGxhdGUxKHsKICB2YWx1ZTogMTIzCn0pKQovLyBWYWx1ZSBpczogMTIzCmBgYAoqIGBjbGlgCgkqIGB1c2VkQ29tbWFuZGAgLSBVc2VkIGludGVybmFsbHkgYnkgQ0xJLiBSZXR1cm5zIHRoZSBjb21tYW5kIHVzZWQgdG8gc3RhcnQgdGhlIGN1cnJlbnQgcHJvY2Vzcy4KKiBgc2VydmljZXNgIC0gU2V0IG9mIHV0aWxpdGllcyB1c2VkIGludGVybmFsbHkgdG8gbm9ybWFsaXplIHNlcnZpY2VzIG5hbWVzLCBldGMuLgoKW2JhY2sgdG8gdG9wXSgjdGFibGUtb2YtY29udGVudHMpCgotLS0KCiMjIEluZm8KClN0YXRpYyBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFja2FnZSwgZnJvbSB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZS4KCiogYG5hbWVgIC0gTWFuZGF0b3J5LiBUaGUgYHBhY2thZ2UuanNvbmAgbXVzdCBjb250YWluIHRoaXMgcHJvcGVydHkuCiogYHR5cGVgIC0gQ2F0ZWdvcnkgb2YgdGhlIHNlcnZpY2UuIEl0IGlzIGRlZmluZWQgd2l0aCBhbiBhcmd1bWVudCB3aGVuIHNlcnZpY2UgaXMgY3JlYXRlZC4gUG9zc2libGUgdmFsdWVzIHdoZW4gdXNpbmcgRG9tYXBpYyBwYWNrYWdlcyBhcmUgYG1vZHVsZWAsIGBjb250cm9sbGVyYCBvciBgcGx1Z2luYC4KKiBgdmVyc2lvbmAgLSBNYW5kYXRvcnkuIFRoZSBgcGFja2FnZS5qc29uYCBtdXN0IGNvbnRhaW4gdGhpcyBwcm9wZXJ0eS4KKiBgZGVzY3JpcHRpb25gIC0gTWFuZGF0b3J5LiBUaGUgYHBhY2thZ2UuanNvbmAgbXVzdCBjb250YWluIHRoaXMgcHJvcGVydHkuCiogYGhvbWVwYWdlYAoqIGBhdXRob3JgCiogYGxpY2Vuc2VgCgpgYGBqcwpjb25zb2xlLmxvZyhzZXJ2aWNlLmluZm8pCmBgYAoKW2JhY2sgdG8gdG9wXSgjdGFibGUtb2YtY29udGVudHMpCgotLS0KCiMjIEF1dGhlbnRpY2F0aW9uCgpUaGUgc2VydmVyIHN1cHBvcnRzIHR3byB0eXBlcyBvZiBPQVVUSCBhdXRoZW50aWNhdGlvbiBtZXRob2RzLCB3aXRoIGJ1aWx0LWluIGFwaSAibG9naW4iIHVybHMgYW5kIHRva2VuIHZhbGlkYXRpb25zLgoKRWFjaCBhdXRoZW50aWNhdGlvbiBzdHJhdGVneSBuZWVkIHNvbWUgZGlmZmVyZW50IG1ldGhvZHMgdG8gYmUgcHJvdmlkZWQgaW4gb3JkZXIgdG8gYmUgYWN0aXZhdGVkLiBUaGlzIGV4dGVybmFsbHkgcHJvdmlkZWQgbWV0aG9kcyBoYXZlIHRoZSByZXNwb25zaWJpbGl0eSBvZiBjaGVja2luZyB0aGUgdXNlciBkYXRhLCBhbmQgdGhlbiBkZWxlZ2F0ZSB0aGUgcmVzdCBvZiB0aGUgZmxvdyBpbnRvIHRoZSBidWlsdC1pbiBzZWN1cml0eSBtb2R1bGVzLiBJbiB0aGUgY2FzZSBvZiBKc29uIFdlYiBUb2tlbiwgYXMgdGhlIHJlc3Qgb2YgdGhlIHByb2Nlc3MgaXMgInRva2VuLWJhc2VkIiwgdGhpcyBtZXRob2RzIHdpbGwgYmUgb25seSBpbnZvcXVlZCBhdCAibG9naW4iIG9yICJyZWZyZXNoIHRva2VuIiBwb2ludHMuCgpUbyByZXF1aXJlIGFuIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBpbiB5b3VyIEFQSSBvcGVyYXRpb25zLCB5b3UgbXVzdCBkZWZpbmUgdGhlIG9wZW5hcGkgYHNlY3VyaXR5YCBwcm9wZXJ0eSBpbiB0aGUgY29ycmVzcG9uZGFudCBBUEkgcGF0aDoKCmBgYGpzb24KInBhdGhzIjogewogICIvZm9vT3BlcmF0aW9uUGF0aCI6IHsKICAgICJwb3N0IjogewogICAgICAic2VjdXJpdHkiOiBbewogICAgICAgICJqd3QiOiBbXQogICAgICB9LCB7CiAgICAgICAgImFwaUtleSI6IFtdCiAgICAgIH1dCiAgICB9CiAgfQp9CmBgYAoKVXNlIHRoZSBzZXJ2ZXIgYGFkZEF1dGhlbnRpY2F0aW9uYCBtZXRob2QgdG8gZGVmaW5lIHlvdXIgYXV0aGVudGljYXRpb24gaW1wbGVtZW50YXRpb25zLiBUaGUgcGFyYW1ldGVyIG11c3QgYmUgYW4gb2JqZWN0IGNvbnRhaW5pbmcga2V5cyBgand0YCwgYGFwaUtleWAgYW5kL29yIGBkaXNhYmxlZGAsIHdoaWNoIHdpbGwgY29udGFpbiB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgZWFjaCBtZXRob2Q6Cgpgc2VydmljZS5zZXJ2ZXIuYWRkQXV0aGVudGljYXRpb24oYXV0aENvbmZpZ09iamVjdClgCgojIyMgQXBpIGtleQoKTXVzdCBjb250YWluIHByb3BlcnRpZXM6CgoqIGB2ZXJpZnlgLSBDaGVja3MgaWYgdGhlIHJlY2VpdmVkIGFwaSBrZXkgaXMgc3RpbGwgYWxsb3dlZCB0byBiZSB1c2VkLgoJKiBBcmd1bWVudHM6CgkJKiBhcGlLZXkgLSAgQXBpIGtleSByZWNlaXZlZCBpbiB0aGUgcmVxdWVzdCBoZWFkZXIuCgkqIFJldHVybnM6CgkJKiBQcm9taXNlLnJlc29sdmUodXNlckRhdGEpIC0+IEFsbG93ZWQsIHBhc3MgdGhlIHVzZXIgZGF0YSB0byBhdXRob3JpemF0aW9uIG1ldGhvZHMuCgkJKiBSZWplY3RlZCBwcm9taXNlIC0+IFVuYXV0aG9yaXplZC4KKiBgYXV0aGVudGljYXRlYCAtIEFQSSBvcGVyYXRpb24gZm9yIHJlcXVlc3RpbmcgYSBuZXcgYXBpIGtleS4gVGhpcyBhcGkgcG9pbnQgbmVlZHMgYXV0aGVudGljYXRpb24gYXMgd2VsbCwgc28sIGlmIHlvdXIgc3lzdGVtICBhdXRoZW50aWNhdGlvbiBpcyBvbmx5IGFwaSBrZXkgYmFzZWQsIHlvdSBoYXZlIHRvIGRlZmluZSBhbiBpbml0aWFsIGFwaSBrZXkgdGhhdCBjb3VsZCBiZSB1c2VkIHRvIHJlcXVlc3QgbW9yZSBpbiBjYXNlIGl0wrRzIG5lZWRlZC4gVGhpcyBtZXRob2Qgc3VwcG9ydHMgX0pzb24gV2ViIFRva2VuXyBhdXRoZW50aWNhdGlvbiBhcyB3ZWxsLCBpZiBpdCBpcyBpbXBsZW1lbnRlZC4KCSogYGF1dGhgIC0gQXV0aG9yaXphdGlvbiBtZXRob2QgZm9yIHRoZSBgL2FwaS9hdXRoL2FwaWtleWAgX1BPU1RfIGFwaSByZXNvdXJjZS4KCQkqIEFyZ3VtZW50czoKCQkJKiB1c2VyRGF0YSAtIFRoZSBkZWNvZGVkIGRhdGEgYWJvdXQgdGhlIHVzZXIgdGhhdCBpcyBtYWtpbmcgdGhlIHJlcXVlc3QuCgkJCSogcGFyYW1zIC0gUmVxdWVzdCBwYXJhbWV0ZXJzLiBgcGFyYW1zLnBhdGhgIGFuZCBgcGFyYW1zLnF1ZXJ5YC4KCQkJKiBib2R5IC0gUmVxdWVzdCBib2R5CgkqIGBoYW5kbGVyYCAtIE9wZXJhdGlvbiBoYW5kbGVyIGZvciB0aGUgYC9hcGkvYXV0aC9hcGlrZXlgIF9QT1NUXyBhcGkgcmVzb3VyY2UuCgkJKiBBcmd1bWVudHM6CgkJCSogcGFyYW1zIC0gUmVxdWVzdCBwYXJhbWV0ZXJzLiBgcGFyYW1zLnBhdGhgIGFuZCBgcGFyYW1zLnF1ZXJ5YC4KCQkJKiBib2R5IC0gUmVxdWVzdCBib2R5CgkJCSogcmVzIC0gQWxsb3dzIHRvIHNldCBjdXN0b20gaGVhZGVycyBhbmQgc3RhdHVzQ29kZSB0byByZXNwb25zZS4gRXhhbXBsZXM6IGByZXMuc3RhdHVzKDIwMSlgLCBgcmVzLmhlYWRlcignbG9jYXRpb24nLCAnL2FwaS9ib29rcy9uZXctYm9vaycpYAoJCQkqIHVzZXJEYXRhIC0gSWYgdXNlciBpcyAibG9nZWQiLCBoZXJlIHdpbGwgYmUgcmVjZWl2ZWQgdGhlIHVzZXJEYXRhIHJldHVybmVkIGJ5IHRoZSBjb3JyZXNwb25kYW50IGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBgdmVyaWZ5YCBoYW5kbGVyLgoJCSogU2hvdWxkIHJldHVybiBhIG5ldyBhcGkga2V5LgoqIGByZXZva2VgIC0gQVBJIG9wZXJhdGlvbiBmb3IgcmVtb3ZpbmcgYW4gYXBpIGtleS4gVGhpcyBhcGkgcmVzb3VyY2UgbmVlZHMgYXV0aGVudGljYXRpb24gYXMgd2VsbC4KCSogYGF1dGhgIC0gQXV0aG9yaXphdGlvbiBtZXRob2QgZm9yIHRoZSBgL2FwaS9hdXRoL2FwaWtleWAgX0RFTEVURV8gYXBpIHJlc291cmNlLgoJCSogQXJndW1lbnRzOgoJCQkqIHVzZXJEYXRhIC0gVGhlIGRlY29kZWQgZGF0YSBhYm91dCB0aGUgdXNlciB0aGF0IGlzIG1ha2luZyB0aGUgcmVxdWVzdC4KCQkJKiBwYXJhbXMgLSBSZXF1ZXN0IHBhcmFtZXRlcnMuIGBwYXJhbXMucGF0aGAgYW5kIGBwYXJhbXMucXVlcnlgLgoJCQkqIGJvZHkgLSBSZXF1ZXN0IGJvZHkKCSogYGhhbmRsZXJgIC0gT3BlcmF0aW9uIGhhbmRsZXIgZm9yIHRoZSBgL2FwaS9hdXRoL2FwaWtleWAgX0RFTEVURV8gYXBpIHJlc291cmNlLgoJCSogQXJndW1lbnRzOgoJCQkqIHBhcmFtcyAtIFJlcXVlc3QgcGFyYW1ldGVycy4gYHBhcmFtcy5wYXRoYCBhbmQgYHBhcmFtcy5xdWVyeWAuCgkJCSogYm9keSAtIFJlcXVlc3QgYm9keQoJCQkqIHJlcyAtIEFsbG93cyB0byBzZXQgY3VzdG9tIGhlYWRlcnMgYW5kIHN0YXR1c0NvZGUgdG8gcmVzcG9uc2UuIEV4YW1wbGVzOiBgcmVzLnN0YXR1cygyMDEpYCwgYHJlcy5oZWFkZXIoJ2xvY2F0aW9uJywgJy9hcGkvYm9va3MvbmV3LWJvb2snKWAKCQkJKiB1c2VyRGF0YSAtIElmIHVzZXIgaXMgImxvZ2VkIiwgaGVyZSB3aWxsIGJlIHJlY2VpdmVkIHRoZSB1c2VyRGF0YSByZXR1cm5lZCBieSB0aGUgY29ycmVzcG9uZGFudCBhdXRoZW50aWNhdGlvbiBtZXRob2QgYHZlcmlmeWAgaGFuZGxlci4KCQkqIEFueSByZXR1cm5lZCB2YWx1ZSB3aWxsIGJlIGlnbm9yZWQsIGFuZCBub3QgZXhwb3NlZCB0byB0aGUgYXBpIHJlc3BvbnNlLgoKSW1wbGVtZW50YXRpb24gZXhhbXBsZToKCmBgYGpzCnNlcnZpY2Uuc2VydmVyLmFkZEF1dGhlbnRpY2F0aW9uKHsKICBhcGlLZXk6IHsKICAgIHZlcmlmeTogYXBpS2V5ID0+IHsKICAgICAgLy8gQ2hlY2sgaWYgYXBpS2V5IGlzIGFsbG93ZWQsIGFuZCByZXR1cm4gY29ycmVzcG9uZGFudCB1c2VyIGRhdGEsIG9yIHJlamVjdC4KICAgICAgcmV0dXJuIGdldFVzZXJEYXRhRnJvbUFwaUtleShhcGlLZXkpCiAgICB9LAogICAgYXV0aGVudGljYXRlOiB7CiAgICAgIGF1dGg6ICh1c2VyRGF0YSwgcGFyYW1zLCBib2R5KSA9PiB7CiAgICAgICAgLy8gQ2hlY2sgaWYgdXNlciBpcyBhbGxvd2VkIHRvIGNyZWF0ZSBhIG5ldyBhcGkga2V5LCByZXNvbHZlIG9yIHJlamVjdAogICAgICAgIHJldHVybiBjaGVja1VzZXJQZXJtaXNzaW9uVG9NYW5hZ2VBcGlLZXlzKHVzZXJEYXRhKQogICAgICB9LAogICAgICBoYW5kbGVyOiAocGFyYW1zLCBib2R5LCByZXMsIHVzZXJEYXRhKSA9PiB7CiAgICAgICAgLy8gUmV0dXJucyBhIG5ldyBhcGkga2V5CiAgICAgICAgcmV0dXJuIGdldE5ld0FwaUtleSgpCiAgICAgIH0KICAgIH0sCiAgICByZXZva2U6IHsKICAgICAgYXV0aDogKHVzZXJEYXRhLCBwYXJhbXMsIGJvZHkpID0+IHsKICAgICAgICAvLyBDaGVjayBpZiB1c2VyIGlzIGFsbG93ZWQgdG8gcmVtb3ZlIGFuIGV4aXN0YW50IGFwaSBrZXksIHJlc29sdmUgb3IgcmVqZWN0CiAgICAgICAgcmV0dXJuIGNoZWNrVXNlclBlcm1pc3Npb25Ub01hbmFnZUFwaUtleXModXNlckRhdGEpCiAgICAgIH0sCiAgICAgIGhhbmRsZXI6IChwYXJhbXMsIGJvZHksIHJlcywgdXNlckRhdGEpID0+IHsKICAgICAgICAvLyBSZW1vdmUgZXhpc3RhbnQgYXBpIGtleQogICAgICAgIHJldHVybiByZW1vdmVBcGlLZXkoYm9keS5hcGlLZXkpCiAgICAgIH0KICAgIH0KICB9Cn0pCmBgYAoKIyMjIEpXVAoKUHJvcGVydGllczoKCiogYHNlY3JldGAgLSBPcHRpb25hbC4gU3RyaW5nIHVzZWQgdG8gZ2VuZXJhdGUgdG9rZW5zLiBJZiBub3QgcHJvdmlkZWQsIGEgcmFuZG9tIHNlY3JldCBpcyB1c2VkLgoqIGBleHBpcmVzSW5gIC0gTnVtYmVyLiBUaW1lIG9mIHRva2VucyBleHBpcmF0aW9uIHRpbWUgaW4gbWlsaXNlY29uZHMuIEJ5IGRlZmF1bHQsIDMwMCB3aWxsIGJlIHVzZWQgaWYgdGhpcyBvcHRpb24gaXMgbm90IHByb3ZpZGVkLiBJdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIGEgaGlnaCB2YWx1ZSBmb3IgdGhpcyBvcHRpb24uIFRva2VucyBzaG91bGQgZXhwaXJlIGluIHNob3J0IHRpbWUsIGFuZCB0aGVuLCByZWZyZXNoIHRva2VucyBzaG91bGQgYmUgdXNlZCB0byByZXF1ZXN0IGEgbmV3IHRva2VuIGFnYWluLgoqIGBhdXRoZW50aWNhdGVgIC0gQVBJIG9wZXJhdGlvbiBmb3IgcmVxdWVzdGluZyBhIG5ldyB0b2tlbi4gV2lsbCByZWNlaXZlIGB1c2VyYCBhbmQgYHBhc3N3b3JkYCwgb3IgYHJlZnJlc2hUb2tlbmAuIFlvdXIgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgdGhlIHVzZXIsIGFuZCB0aGVuIHJldHVybiB0aGUgY29ycmVzcG9uZGFudCBkYXRhIHRoYXQgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIF9Kc29uIFdlYiBUb2tlbl8uIEFmdGVyd2FyZHMsIHRoZSBBUEkgd2lsbCB1c2UgdGhhdCBkYXRhIGluIGVhY2ggcmVxdWVzdCB0byBhcHBseSB0aGUgY29ycmVzcG9uZGFudCBhdXRob3JpemF0aW9uIHBvbGljeSBmb3IgZWFjaCBhcGkgcmVzb3VyY2UuIF9SZWZyZXNoIFRva2VuXyBpcyB1c2VkIHRvIHJlbmV3IHRoZSB1c2VyIGNyZWRlbnRpYWxzIHdpdGhvdXQgcHJvdmlkaW5nIHRoZSB1c2VyIGRhdGEgYWdhaW4gd2hlbiB0aGUgdG9rZW4gZXhwaXJlcy4KCSogYGhhbmRsZXJgIC0gT3BlcmF0aW9uIGhhbmRsZXIgZm9yIHRoZSBgL2FwaS9hdXRoL2p3dGAgX1BPU1RfIGFwaSByZXNvdXJjZS4KCQkqIEFyZ3VtZW50czoKCQkJKiBwYXJhbXMgLSBSZXF1ZXN0IHBhcmFtZXRlcnMuIGBwYXJhbXMucGF0aGAgYW5kIGBwYXJhbXMucXVlcnlgLgoJCQkqIGJvZHkgLSBSZXF1ZXN0IGJvZHkKCQkJKiByZXMgLSBBbGxvd3MgdG8gc2V0IGN1c3RvbSBoZWFkZXJzIGFuZCBzdGF0dXNDb2RlIHRvIHJlc3BvbnNlLiBFeGFtcGxlczogYHJlcy5zdGF0dXMoMjAxKWAsIGByZXMuaGVhZGVyKCdsb2NhdGlvbicsICcvYXBpL2Jvb2tzL25ldy1ib29rJylgCgkJKiBTaG91bGQgcmV0dXJuIGFuIG9iamVjdCBjb250YWluaW5nIGB1c2VyRGF0YWAgKGFuIG9iamVjdCB3aXRoIGFsbCB1c2VyIGRhdGEgdGhhdCB3aWxsIGJlIHBhc3NlZCBhcyBhcmd1bWVudCB0byB0aGUgQVBJIHJlc291cmNlcyBhdXRob3JpemF0aW9uIGhhbmRsZXJzKSwgYW5kIGByZWZyZXNoVG9rZW5gIGlmIHRoZSByZXF1ZXN0IGhhcyBub3QgcmVjZWl2ZWQgaXQuCiogYHJldm9rZWAgLSBBUEkgb3BlcmF0aW9uIGZvciByZW1vdmluZyBhIHJlZnJlc2ggdG9rZW4uIFRoaXMgYXBpIHJlc291cmNlIG5lZWRzIGF1dGhlbnRpY2F0aW9uIGFzIHdlbGwsIGFuZCBpdCBvbmx5IHN1cHBvcnRzIHRoZSBgand0YCBhdXRoZW50aWNhdGlvbiBtZXRob2QuCgkqIGBhdXRoYCAtIEF1dGhvcml6YXRpb24gbWV0aG9kIGZvciB0aGUgYC9hcGkvYXV0aC9qd3RgIF9ERUxFVEVfIGFwaSByZXNvdXJjZS4KCQkqIEFyZ3VtZW50czoKCQkJKiB1c2VyRGF0YSAtIFRoZSBkZWNvZGVkIGRhdGEgYWJvdXQgdGhlIHVzZXIgdGhhdCBpcyBtYWtpbmcgdGhlIHJlcXVlc3QuCgkJCSogcGFyYW1zIC0gUmVxdWVzdCBwYXJhbWV0ZXJzLiBgcGFyYW1zLnBhdGhgIGFuZCBgcGFyYW1zLnF1ZXJ5YC4KCQkJKiBib2R5IC0gUmVxdWVzdCBib2R5CgkqIGBoYW5kbGVyYCAtIE9wZXJhdGlvbiBoYW5kbGVyIGZvciB0aGUgYC9hcGkvYXV0aC9qd3RgIF9ERUxFVEVfIGFwaSByZXNvdXJjZS4KCQkqIEFyZ3VtZW50czoKCQkJKiBwYXJhbXMgLSBSZXF1ZXN0IHBhcmFtZXRlcnMuIGBwYXJhbXMucGF0aGAgYW5kIGBwYXJhbXMucXVlcnlgLgoJCQkqIGJvZHkgLSBSZXF1ZXN0IGJvZHkKCQkJKiByZXMgLSBBbGxvd3MgdG8gc2V0IGN1c3RvbSBoZWFkZXJzIGFuZCBzdGF0dXNDb2RlIHRvIHJlc3BvbnNlLiBFeGFtcGxlczogYHJlcy5zdGF0dXMoMjAxKWAsIGByZXMuaGVhZGVyKCdsb2NhdGlvbicsICcvYXBpL2Jvb2tzL25ldy1ib29rJylgCgkJCSogdXNlckRhdGEgLSBJZiB1c2VyIGlzICJsb2dlZCIsIGhlcmUgd2lsbCBiZSByZWNlaXZlZCB0aGUgdXNlckRhdGEgcmV0dXJuZWQgYnkgdGhlIGNvcnJlc3BvbmRhbnQgYXV0aGVudGljYXRpb24gbWV0aG9kIGB2ZXJpZnlgIGhhbmRsZXIuCgkJKiBBbnkgcmV0dXJuZWQgdmFsdWUgd2lsbCBiZSBpZ25vcmVkLCBhbmQgbm90IGV4cG9zZWQgdG8gdGhlIGFwaSByZXNwb25zZS4KCkltcGxlbWVudGF0aW9uIGV4YW1wbGU6CgpgYGBqcwpzZXJ2aWNlLnNlcnZlci5hZGRBdXRoZW50aWNhdGlvbih7CiAgand0OiB7CiAgICBzZWNyZXQ6ICd0aGlzSXNOb3RhUmVhbFRva2VuU2VjcmV0UGxlYXNlUmVwbGFjZUl0JywKICAgIGV4cGlyZXNJbjogMTgwLAogICAgYXV0aGVudGljYXRlOiB7CiAgICAgIGhhbmRsZXI6IChwYXJhbXMsIGJvZHksIHJlcykgPT4gewogICAgICAgIC8vIENoZWNrIGlmIHVzZXIgaGFzIHJpZ2h0IGNyZWRlbnRpYWxzLCBvciByZWZyZXNoIHRva2VuLiBSZXR1cm5zIHVzZXIgZGF0YSAod2l0aCBuZXcgcmVmcmVzaCB0b2tlbiBpZiBub3QgcHJvdmlkZWQpCiAgICAgICAgaWYgKGJvZHkucmVmcmVzaFRva2VuKSB7CiAgICAgICAgICByZXR1cm4gZ2V0VXNlckRhdGFGcm9tUmVmcmVzaFRva2VuKGJvZHkucmVmcmVzaFRva2VuKQogICAgICAgIH0KICAgICAgICByZXR1cm4gY2hlY2tVc2VyRGF0YSh7CiAgICAgICAgICBuYW1lOiBib2R5LnVzZXIsCiAgICAgICAgICBwYXNzd29yZDogYm9keS5wYXNzd29yZAogICAgICAgIH0pLnRoZW4oKHVzZXJEYXRhKSA9PiB7CiAgICAgICAgICByZXR1cm4gY3JlYXRlTmV3UmVmcmVzaFRva2VuKHVzZXJEYXRhKQogICAgICAgICAgICAudGhlbigocmVmcmVzaFRva2VuKSA9PiB7CiAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7CiAgICAgICAgICAgICAgICB1c2VyRGF0YTogdXNlckRhdGEsCiAgICAgICAgICAgICAgICByZWZyZXNoVG9rZW46IHJlZnJlc2hUb2tlbgogICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pCiAgICAgICAgfSkKICAgICAgfQogICAgfSwKICAgIHJldm9rZTogewogICAgICBhdXRoOiAodXNlckRhdGEsIHBhcmFtcywgYm9keSkgPT4gewogICAgICAgIC8vIENoZWNrIGlmIHVzZXIgaXMgYWxsb3dlZCB0byByZW1vdmUgYW4gZXhpc3RhbnQgcmVmcmVzaCB0b2tlbgogICAgICAgIHJldHVybiBjaGVja1VzZXJQZXJtaXNzaW9uVG9NYW5hZ2VBcGlLZXlzKHVzZXJEYXRhKQogICAgICB9LAogICAgICBoYW5kbGVyOiAocGFyYW1zLCBib2R5LCByZXMsIHVzZXJEYXRhKSA9PiB7CiAgICAgICAgLy8gUmVtb3ZlIGV4aXN0YW50IHJlZnJlc2ggdG9rZW4KICAgICAgICByZXR1cm4gcmVtb3ZlUmVmcmVzaFRva2VuKGJvZHkucmVmcmVzaFRva2VuKQogICAgICB9CiAgICB9CiAgfQp9KQpgYGAKCiMjIyBEaXNhYmxlZAoKV2hlbiBhdXRoZW50aWNhdGlvbiBpcyBkaXNhYmxlZCBmb3IgYW4gc3BlY2lmaWMgb3JpZ2luIGJlY2F1c2Ugb2YgdGhlIGBhdXRoRGlzYWJsZWRgLCBvciBgYXV0aGAgb3B0aW9ucywgdGhlIGF1dGhvcml6YXRpb24gaGFuZGxlcnMgd2lsbCBub3QgYmUgZXhlY3V0ZWQuIEJ5IGRlZmF1bHQsIGFuIHVzZXIgd2l0aCB0aGUgZm9ybWF0IGB7dXNlcjogJ2Fub255bW91cyd9YCB3aWxsIGJlIHBhc3NlZCB0byBhY3Rpb24gaGFuZGxlcnMsIGJ1dCB5b3UgY2FuIGRlZmluZSB5b3VyIG93biAiZGlzYWJsZWQiIHN0cmF0ZWd5LCBhbmQgcmV0dXJuIGFuIHVzZXIgb2YgeW91ciBjb252ZW5pZW5jZSB0byBiZSBwYXNzZWQuCgpQcm9wZXJ0aWVzOgoKKiBgdmVyaWZ5YC0gRnVuY3Rpb24gdGhhdCBzaG91bGQgcmV0dXJuIHRoZSB1c2VyIHRvIGJlIHBhc3NlZCB0byBhY3Rpb24gaGFuZGxlcnMgd2hlbiBhdXRoZW50aWNhdGlvbiBpcyBkaXNhYmxlZCBmb3IgYW4gc3BlY2lmaWMgb3JpZ2luLgoKSW1wbGVtZW50YXRpb24gZXhhbXBsZToKCmBgYGpzCnNlcnZpY2Uuc2VydmVyLmFkZEF1dGhlbnRpY2F0aW9uKHsKICBkaXNhYmxlZDogewogICAgdmVyaWZ5OiAoKSA9PiBQcm9taXNlLnJlc29sdmUoewogICAgICBuYW1lOiAneW91ci1hdXRoLWRpc2FibGVkLXVzZXInLAogICAgICByb2xlOiAneW91ci1hbm9ueW1vdXMtcm9sZScKICAgIH0pCiAgfQp9KQpgYGAKCiMjIyBBdXRob3JpemF0aW9uCgpBYm91dCBhdXRob3JpemF0aW9uLCBlYWNoIG9wZXJhdGlvbiBkZWZpbmVkIGluIHRoZSBBUEkgY2FuIGhhdmUgaXRzIG93biBgYXV0aGAgbWV0aG9kLCB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgZGVjb2RlZCB1c2VyIGRhdGEgYXMgYXJndW1lbnQgZm9yIGVhY2ggcmVxdWVzdCwgYWxsb3dpbmcgdG8gcmVqZWN0IG9yIGFsbG93IGFuIHNwZWNpZmljIHJlcXVlc3QgYmFzZWQgb24geW91ciBvd24gc2VjdXJpdHkgcG9saWN5IGltcGxlbWVudGF0aW9uLgoKVGhlIGF1dGhvcml6YXRpb24gbWV0aG9kIGlzIGFnbm9zdGljIGluIHJlbGF0aW9uIHdpdGggdGhlIHVzZWQgYXV0aGVudGljYXRpb24gbWV0aG9kLCBiZWNhdXNlIGl0IG9ubHkgcmVjZWl2ZXMgdGhlIHVzZXIgZGF0YSwgbm8gbWF0dGVyIHRoZSBtZXRob2QgdXNlZCB0byBzdG9yZSBvciByZWNvdmVyIHRoaXMgZGF0YSBmcm9tIHRoZSByZXF1ZXN0LgoKUmVhZCBtb3JlIGFib3V0IGhvdyB0byBkZWZpbmUgYW5kIHVzZSB0aGUgYGF1dGhgIG1ldGhvZHMgaW4gdGhlIFtvcGVyYXRpb25zIGNoYXB0ZXJdKCNvcGVyYXRpb25zKS4KCkFuIG9wZXJhdGlvbiBgYXV0aGAgbWV0aG9kIGNhbiBiZSBkZWZpbmVkIGFzIGEgZnVuY3Rpb24sIG9yIGFzIGEgc3RyaW5nIHRoYXQgZGVmaW5lcyB3aGljaCAiYXV0aG9yaXphdGlvbiByb2xlIiBmdW5jdGlvbiBoYXMgdG8gYmUgZXhlY3V0ZWQuIFRoaXMgImF1dGhvcml6YXRpb24gcm9sZXMiIG11c3QgdG8gYmUgZGVmaW5lZCBpbiB0aGUgc2VydmVyLCB1c2luZyB0aGUgYGFkZEF1dGhvcml6YXRpb25gIG1ldGhvZDoKCmBzZXJ2aWNlLnNlcnZlci5hZGRBdXRob3JpemF0aW9uKHJvbGVOYW1lLCBhdXRoSGFuZGxlcilgCgpgYGBqcwpzZXJ2aWNlLnNlcnZlci5hZGRBdXRob3JpemF0aW9uKCdmb29Sb2xlTmFtZScsIHVzZXJEYXRhID0+IHsKICBpZiAocm9sZUlzQWxsb3dlZCh1c2VyRGF0YS5yb2xlKSkgewogICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpCiAgICAvLyBFeGVjdXRlIHRoZSBvcGVyYXRpb24gaGFuZGxlcgogIH0KICByZXR1cm4gZmFsc2UKICAvLyBGb3JiaWRkZW4gcmVzcG9uc2UKfSkudGhlbigoKSA9PiB7CiAgcmV0dXJuIHNlcnZpY2Uuc2VydmVyLmFkZE9wZXJhdGlvbnMoewogICAgZm9vT3BlcmF0aW9uOiB7CiAgICAgIGF1dGg6ICdmb29Sb2xlTmFtZScsCiAgICAgIGhhbmRsZXI6ICgpID0+IHsKICAgICAgICByZXR1cm4ge30KICAgICAgfQogICAgfQogIH0pCn0pCmBgYAoKW2JhY2sgdG8gdG9wXSgjdGFibGUtb2YtY29udGVudHMpCgotLS0KCiMjIENvbW1hbmQgTGluZSBJbnRlcmZhY2UKCkEgYnVpbHQtaW4gQ0xJIGlzIHByb3ZpZGVkLCBidXQgaXQgbmVlZHMgc29tZSBzdGVwcyBpbiB5b3VyIHBhY2thZ2UgaW4gb3JkZXIgdG8gZXhwb3NlIGl0LiBPbmNlIGl0IGlzIGltcGxlbWVudGVkLCBpdCBhbGxvd3MgdG8gc3RhcnQgdGhlIHNlcnZpY2UgaW4gYmFja2dyb3VuZCwgbWFuYWdlZCB1c2luZyBbX1BNMl9dW3BtMi11cmxdLiBJdCBhbHNvIHByb3ZpZGVzIGxvZ3MgZGlzcGxheWluZywgYW5kIGEgY29tbWFuZCB0byBzdG9wIHRoZSBzZXJ2aWNlLgpBbHNvIGFuIEFQSSBpcyBhdCB5b3VyIGRpc3Bvc2FsIGZvciBkZWZpbmluZyBuZXcgY29tbWFuZHMuCgojIyMgSW1wbGVtZW50YXRpb24KCkZvbGxvdyB0aGVzZSBzdGVwcyB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIENMSSBpbiB5b3VyIHBhY2thZ2U6CgoqIENyZWF0ZSBhIGAvYmluLzx5b3VyLWNsaS1uYW1lPmAgZmlsZSBpbiB5b3VyIHBhY2thZ2UuIFRoZSBuYW1lIG9mIHRoZSBmaWxlIHNob3VsZCBiZSBlcXVhbCB0byB0aGUgY29tbWFuZCBuYW1lIHRoYXQgeW91IHdhbnQgdG8gdXNlIGZvciB5b3VyIENMSS4gVGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIG11c3QgYmU6CgpgYGBzaGVsbAojIS91c3IvYmluL2VudiBub2RlCnJlcXVpcmUoJy4uL2NsaS9pbmRleCcpCmBgYAoKKiBBZGQgYSBgYmluYCBwcm9wZXJ0eSB0byB5b3VyIGBwYWNrYWdlLmpzb25gLCBhbmQgYWRkIGFuIG5wbSBzY3JpcHQgdG8gYWxsb3cgdXNpbmcgdGhlIENMSSB0aHJvdWdoIG5wbSBhbHRlcm5hdGl2ZWx5OgoKYGBganNvbgogICJiaW4iOiB7CiAgICAieW91ci1jbGktbmFtZSI6ICIuL2Jpbi95b3VyLWNsaS1uYW1lIgogIH0sCiAgInNjcmlwdHMiOiB7CiAgICAieW91ci1jbGktbmFtZSI6ICIuL2Jpbi95b3VyLWNsaS1uYW1lIgogIH0KYGBgCgoqIENyZWF0ZSBhIGAvY2xpL2luZGV4LmpzYCBmaWxlIGluIHlvdXIgcGFja2FnZS4gSXQgbXVzdCBjb250YWlucyB0aGUgQ0xJIGluaXRpYWxpemF0aW9uOgoKYGBganMKY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKQpjb25zdCBkb21hcGljID0gcmVxdWlyZSgnZG9tYXBpYy1iYXNlJykKCmRvbWFwaWMuY2xpKHsKICBzY3JpcHQ6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICdzZXJ2ZXIuanMnKQp9KQpgYGAKVGhlIGBzY3JpcHRgIHBhcmFtZXRlciBtdXN0IGJlIHRoZSBwYXRoIHRvIHRoZSBmaWxlIHdoZXJlIHlvdSBoYXZlIHlvdXIgc2VydmljZSBpbml0aWFsaXphdGlvbi4gVGhpcyB3aWxsIGJlIHRoZSBwcm9jZXNzIHRoYXQgd2lsbCBiZSBzdGFydGVkIGluIGJhY2tncm91bmQuCgojIyMgVXNhZ2UKCk9uY2UgeW91IGhhdmUgaW5zdGFsbGVkIGdsb2JhbGx5IHlvdXIgcGFja2FnZSwgeW91wrRsbCBoYXZlIHRoZSBDTEkgYXZhaWxhYmxlIGZyb20gY29tbWFuZCBsaW5lLiBJZiBub3QgaW5zdGFsbGVkIGdsb2JhbGx5LCBhbGwgYXZhaWxhYmxlIGNvbW1hbmRzIGNhbiBiZSBleGVjdXRlZCBhcyB3ZWxsIHVzaW5nIG5wbSBzY3JpcHRzLCBvciBleGVjdXRpbmcgZGlyZWN0bHkgdGhlIGAvYmluL3lvdXItY2xpLW5hbWVgIGZpbGUuIE5leHQsIHRoZSBgc3RhcnRgIGV4YW1wbGUgaW5jbHVkZSB0aGUgZGlmZmVyZW50IGludm9jYXRpb24gbWV0aG9kcyBleGFtcGxlcy4KCkRlZmF1bHQgYXZhaWxhYmxlIGNvbW1hbmRzIGFyZToKCiogYGhlbHBgCgpgYGBzaGVsbAp5b3VyLWNsaS1uYW1lIGhlbHAKIyBEaXNwbGF5cyBoZWxwCgp5b3VyLWNsaS1uYW1lIHN0YXJ0IC0taGVscAojIERpc3BsYXlzIGhlbHAgZm9yIHN0YXJ0IGNvbW1hbmQKYGBgCgoqIGBzdGFydGAgLSBTdGFydHMgdGhlIHNlcnZpY2UgcHJvY2VzcyBpbiBiYWNrZ3JvdW5kLiBBIGN1c3RvbSBuYW1lIGZvciB0aGUgcHJvY2VzcyBpbnN0YW5jZSBjYW4gYmUgcHJvdmlkZWQgYXMgZmlyc3QgYXJndW1lbnQsIG9yIHVzaW5nIHRoZSBgLS1uYW1lYCBvcHRpb24uCgpgYGBzaGVsbAovLyBnbG9iYWwgY2xpCnlvdXItY2xpLW5hbWUgc3RhcnQgZm9vTmFtZSAtLWxvZ0xldmVsPWRlYnVnCmBgYAoKYGBgc2hlbGwKLy8gbnBtIHNjcmlwdApucG0gcnVuIHlvdXItY2xpLW5hbWUgc3RhcnQgZm9vTmFtZSAtLSAtLWxvZ0xldmVsPWRlYnVnCmBgYAoKYGBgc2hlbGwKLy8gYmluIGV4ZWN1dGlvbgouL2Jpbi95b3VyLWNsaS1uYW1lIHN0YXJ0IGZvb05hbWUgLS1sb2dMZXZlbD1kZWJ1ZwpgYGAKCkFsbCBhdmFpbGFibGUgb3B0aW9ucyBmb3IgdGhlIGBzdGFydGAgY29tbWFuZCBhcmUgZGVzY3JpYmVkIGluIHRoZSBbb3B0aW9ucyBjaGFwdGVyXSgjb3B0aW9ucykgb2YgdGhpcyBkb2N1bWVudGF0aW9uLgoKKiBgc3RvcGAgLSBTdG9wcyBhIGJhY2tncm91bmQgc2VydmljZSBpbnN0YW5jZToKCmBgYHNoZWxsCnlvdXItY2xpLW5hbWUgc3RvcAoKIyMgSWYgbmFtZSB3YXMgcHJvdmlkZWQgd2hlbiBzdGFydGVkLCBpZiBtdXN0IGJlIHByb3ZpZGVkIHRvIHN0b3A6CnlvdXItY2xpLW5hbWUgc3RvcCBmb29OYW1lCmBgYAoKKiBgbG9nc2AgLSBEaXNwbGF5cyBsb2dzIG9mIGEgYmFja2dyb3VuZCBzZXJ2aWNlIGluc3RhbmNlOgoKYGBgc2hlbGwKeW91ci1jbGktbmFtZSBsb2dzCiMgRGlzcGxheXMgbG9ncwoKeW91ci1jbGktbmFtZSBsb2dzIC0tbGluZXM9MzAwCiMgRGlzcGxheXMgMzAwIGxhc3QgbGluZXMgb2YgbG9ncyAoMzAgYnkgZGVmYXVsdCwgaWYgb3B0aW9uIGlzIG5vdCBwcm92aWRlZCkKCiMjIElmIG5hbWUgd2FzIHByb3ZpZGVkIHdoZW4gc3RhcnRlZCwgaWYgbXVzdCBiZSBwcm92aWRlZCB0byBzdG9wOgp5b3VyLWNsaS1uYW1lIGxvZ3MgZm9vTmFtZSAtLWxpbmVzPTMwMApgYGAKCiMjIyBDdXN0b20gb3B0aW9ucyBhbmQgY29tbWFuZHMKCiogQ3VzdG9tIGNvbmZpZ3VyYXRpb24KCUEgYGN1c3RvbUNvbmZpZ2AgcHJvcGVydHkgY2FuIGJlIGRlZmluZWQgaW4gaW5pdGlhbGl6YXRpb24gb2JqZWN0IGluIG9yZGVyIHRvIGRlZmluZSB0aGUgY3VzdG9tIG9wdGlvbnMgb2YgeW91ciBzZXJ2aWNlOgoKYGBganMKY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKQpjb25zdCBkb21hcGljID0gcmVxdWlyZSgnZG9tYXBpYy1iYXNlJykKY29uc3QgY3VzdG9tQ29uZmlnID0gcmVxdWlyZSgnLi9jdXN0b21Db25maWcnKQoKZG9tYXBpYy5jbGkoewogIHNjcmlwdDogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJ3NlcnZlci5qcycpLAogIGN1c3RvbUNvbmZpZzogY3VzdG9tQ29uZmlnCn0pCmBgYAoKUmVhZCBtb3JlIGFib3V0IGhvdyB0byBkZWZpbmUgdGhlbSBpbiB0aGUgW0N1c3RvbSBvcHRpb25zIGNoYXB0ZXJdKCNjdXN0b20tY29uZmlnKQoKKiBDdXN0b20gY29tbWFuZHMKCUEgYGN1c3RvbUNvbW1hbmRzYCBwcm9wZXJ0eSBjYW4gYmUgZGVmaW5lZCBpbiBpbml0aWFsaXphdGlvbiBvYmplY3QgaW4gb3JkZXIgdG8gZXh0ZW5kIHRoZSBDTEkgZmVhdHVyZXMuIEl0IG11c3QgYmUgYW4gb2JqZWN0LCB3aG9zZSBrZXlzIHdpbGwgYmUgdGhlIG5hbWVzIG9mIHRoZSBjdXN0b20gY29tbWFuZHMuIEVhY2ggY29tbWFuZCBtdXN0IGhhdmUgcHJvcGVydGllczoKCgkqIGBwcm9jZXNzTmFtZWAgLSBfU3RyaW5nXy4gQSByZWZlcmVuY2UgbmFtZSBmb3IgdGhlIGNvcmUgaW4gb3JkZXIgdG8gc2F2ZSB0aGUgY29tbWFuZCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIGV0Yy4uLiBBcyBleGFtcGxlczogYHNlcnZpY2VgLCBgbG9nc2AsIGV0Yy4uLgoJKiBgZGVzY3JpYmVgIC0gRGVzY3JpcHRpb24gZm9yIHRoZSBjb21tYW5kLiBVc2VkIHdoZW4gZGlzcGxheWluZyBoZWxwLgoJKiBgY2xpYCAtIENvbW1hbmQgbmFtZSBhbmQgYXJndW1lbnRzIGV4cHJlc3Npb24uIFtfWWFyZ3NfXVt5YXJncy11cmxdIGlzIHVzZWQgYXMgdW5kZXJsYXllciB0byBtYW5hZ2UgY29tbWFuZHMsIHNvIHlvdSBjYW4gcmVhZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IGhvdyB0byBkZWZpbmUgdGhlbS4KCSogYG9wdGlvbnNgIC0gQXZhaWxhYmxlIG9wdGlvbnMgZm9yIHRoZSBjb21tYW5kLiBBbGwgY29tbWFuZHMgd2lsbCBpbmhlcml0IHRoZSBvcHRpb25zIGBuYW1lYCwgYGNvbG9yYCwgYGxvZ0xldmVsYCwgYHBhdGhgIGFuZCBgc2F2ZUNvbmZpZ2AuIFJlYWQgW19ZYXJnc19dW3lhcmdzLXVybF0gZG9jdW1lbnRhdGlvbiBmb3IgZnVydGhlciBpbmZvIGFib3V0IGRlZmluaW5nIHlvdXIgb3duIG9wdGlvbnMuCgkqIGBjb21tYW5kYCAtIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gY29tbWFuZCBpcyBpbnZvcXVlZC4KCQkqIEFyZ3VtZW50czoKCQkJKiBgY29uZmlnYCAtIEFuIG9iamVjdCBjb250YWluaW5nIGRlZmF1bHQgY29uZmlnLCBleHRlbmRlZCB3aXRoIHN0b3JlZCBjb25maWcgYW5kIGV4dGVuZGVkIHdpdGggZXhwbGljaXRseSBkZWZpbmVkIG9wdGlvbnMgaW4gdGhlIGNvbW1hbmQgZXhlY3V0aW9uLgoJCQkqIGBjbGlVdGlsc2AgLSBBIHNldCBvZiBtZXRob2RzOgoJCQkJKiBgdHJhY2VyYCAtIEEgYHRyYWNlcmAgb2JqZWN0LCBhcyBbZGVzY3JpYmVkIGhlcmVdKCN0cmFjZXMpLgoJCQkJKiBgZXJyb3JzYCAtIEFuIGBlcnJvcnNgIG9iamVjdCwgYXMgW2Rlc2NyaWJlZCBoZXJlXSgjZXJyb3JzKS4KCQkJCSogYGNvbmZpZ2AgLSBBIGBjb25maWdgIG9iamVjdCwgYXMgW2Rlc2NyaWJlZCBoZXJlXSgjZ2V0LWNvbmZpZykuCgkJCQkqIGB1dGlsc2AgLSBBbiBgdXRpbHNgIG9iamVjdCwgYXMgW2Rlc2NyaWJlZCBoZXJlXSgjdXRpbHMpLgoJCQkJKiBgcHJvY2Vzc2AgLSBBbiBvYmplY3QgdGhhdCBhbGxvd3MgdG8gbWFuYWdlIHRoZSByZWxhdGVkIGBzY3JpcHRgIHByb3BlcnR5IF9wbTJfIHByb2Nlc3MgaW5zdGFuY2UgcmVsYXRlZCB0byBwcm92aWRlZCBtYW5kYXRvcnkgb3B0aW9uIGAtLW5hbWVgLiBJdCBoYXMgbWV0aG9kczoKCQkJCQkqIGBzdGFydGAgLSBTdGFydHMgdGhlIHByb2Nlc3MuCgkJCQkJKiBgc3RvcGAgLSBTdG9wcyB0aGUgcHJvY2Vzcy4KCQkJCQkqIGBsb2dzYCAtIERpc3BsYXlzIG91dCBsb2dzIHdoaWxlIGFyZSBiZWluZyByZWNlaXZlZC4KCglFeGFtcGxlIG9mIGN1c3RvbSBjb21tYW5kIGRlZmluaXRpb246CgpgYGBqcwpjb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpCmNvbnN0IGRvbWFwaWMgPSByZXF1aXJlKCdkb21hcGljLWJhc2UnKQoKZG9tYXBpYy5jbGkoewogIHNjcmlwdDogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJ3NlcnZlci5qcycpLAogIGN1c3RvbUNvbW1hbmRzOiB7CiAgICByZXN0YXJ0OiB7CiAgICAgIHByb2Nlc3NOYW1lOiAnc3RvcEN1c3RvbScsCiAgICAgIGRlc2NyaWJlOiAnRXhhbXBsZSBvZiBhIGN1c3RvbSBjb21tYW5kJywKICAgICAgY2xpOiAnc3RvcEN1c3RvbSA8Zm9vT3B0aW9uMT4nLAogICAgICBvcHRpb25zOiB7CiAgICAgICAgZm9vT3B0aW9uMjogewogICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLAogICAgICAgICAgZGVzY3JpYmU6ICdGb28gb3B0aW9uIGZvciBjb21tYW5kIGV4YW1wbGUnLAogICAgICAgICAgZGVmYXVsdDogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgY29tbWFuZDogKGNvbmZpZywgY2xpVXRpbHMpID0+IHsKICAgICAgICByZXR1cm4gY2xpVXRpbHMudHJhY2VyLmluZm8oSlNPTi5zdHJpbmdpZnkoY29uZmlnKSkKICAgICAgICAgIC50aGVuKCgpID0+IHsKICAgICAgICAgICAgY2xpVXRpbHMucHJvY2Vzcy5zdG9wKCkKICAgICAgICAgIH0pCiAgICAgIH0KICAgIH0KICB9Cn0pCmBgYAoKRXhhbXBsZSBvZiBjdXN0b20gY29tbWFuZCB1c2FnZToKCmBgYHNoZWxsCnlvdXItY2xpLW5hbWUgc3RvcEN1c3RvbSB2YWx1ZTEgLS1mb29PcHRpb24yPWZhbHNlIC0tbmFtZT10ZXN0aW5nCiMgV2lsbCBkaXNwbGF5IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjdXN0b20gY29tbWFuZCwgYW5kIHRoZW4gc3RvcCB0aGUgcHJvY2VzcyBvZiBzY3JpcHQgInNlcnZlci5qcyIgd2l0aCBuYW1lICJ0ZXN0aW5nIgpgYGAKCltiYWNrIHRvIHRvcF0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKLS0tCgojIyBUZXN0IFN1aXRlcwoKVGhpcyBwYWNrYWdlIHVzZXMgW05hcnZhbF1bbmFydmFsLXVybF0gYXMgdGVzdCBzdWl0ZXMgcnVubmVyLgoKRGlmZmVyZW50IHRlc3Qgc3VpdGVzIGFyZSBpbmNsdWRlZCwgY2F0ZWdvcml6ZWQgaW4gInVuaXQiLCAiaW50ZWdyYXRpb24iLCBhbmQgImVuZC10by1lbmQiIHRlc3RzLiBGb3IgZnVydGhlciBkZXRhaWxzLCByZWFkIHRoZSBgLm5hcnZhbC55bWxgLCBhbmQsIGlmIG5lZWRlZCwgeW91IGNhbiBsZWFybiBtb3JlIGFib3V0IE5hcnZhbCBjb25maWd1cmF0aW9uIGF0IFtpdHMgb3duIGRvY3VtZW50YXRpb25dW25hcnZhbC11cmxdLgoKUnVuIHRlc3RzOgoKYGBgc2hlbGwKbnBtIHRlc3QKYGBgCgpbYmFjayB0byB0b3BdKCN0YWJsZS1vZi1jb250ZW50cykKCltkb21hcGljLWJhc2UtbG9nby1pbWFnZV06IGh0dHA6Ly9kb21hcGljLmNvbS9hc3NldHMvZG9tYXBpYy1sb2dvLnBuZwoKW2NvdmVyYWxscy1pbWFnZV06IGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi9kb21hcGljL2RvbWFwaWMtYmFzZS9iYWRnZS5zdmcKW2NvdmVyYWxscy11cmxdOiBodHRwczovL2NvdmVyYWxscy5pby9naXRodWIvZG9tYXBpYy9kb21hcGljLWJhc2UKW3RyYXZpc2NpLWltYWdlXTogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2RvbWFwaWMvZG9tYXBpYy1iYXNlLnN2Zz9icmFuY2g9bWFzdGVyClt0cmF2aXNjaS11cmxdOiBodHRwczovL3RyYXZpcy1jaS5vcmcvZG9tYXBpYy9kb21hcGljLWJhc2UKW2xhc3QtY29tbWl0LWltYWdlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGFzdC1jb21taXQvZG9tYXBpYy9kb21hcGljLWJhc2Uuc3ZnCltsYXN0LWNvbW1pdC11cmxdOiBodHRwczovL2dpdGh1Yi5jb20vZG9tYXBpYy9kb21hcGljLWJhc2UvY29tbWl0cwpbbGljZW5zZS1pbWFnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2wvZG9tYXBpYy1iYXNlLnN2ZwpbbGljZW5zZS11cmxdOiBodHRwczovL2dpdGh1Yi5jb20vZG9tYXBpYy9kb21hcGljLWJhc2UvYmxvYi9tYXN0ZXIvTElDRU5TRQpbbnBtLWRvd25sb2Fkcy1pbWFnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL2RvbWFwaWMtYmFzZS5zdmcKW25wbS1kb3dubG9hZHMtdXJsXTogaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZG9tYXBpYy1iYXNlCltucG0tZGVwZW5kZW5jaWVzLWltYWdlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kYXZpZC9kb21hcGljL2RvbWFwaWMtYmFzZS5zdmcKW25wbS1kZXBlbmRlbmNpZXMtdXJsXTogaHR0cHM6Ly9kYXZpZC1kbS5vcmcvZG9tYXBpYy9kb21hcGljLWJhc2UKW3F1YWxpdHktZ2F0ZS1pbWFnZV06IGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWRvbWFwaWMtYmFzZSZtZXRyaWM9YWxlcnRfc3RhdHVzCltxdWFsaXR5LWdhdGUtdXJsXTogaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1kb21hcGljLWJhc2UKW3JlbGVhc2UtaW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9yZWxlYXNlLWRhdGUvZG9tYXBpYy9kb21hcGljLWJhc2Uuc3ZnCltyZWxlYXNlLXVybF06IGh0dHBzOi8vZ2l0aHViLmNvbS9kb21hcGljL2RvbWFwaWMtYmFzZS9yZWxlYXNlcwpbc3RhbmRhcmQtaW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NvZGUlMjBzdHlsZS1zdGFuZGFyZC1icmlnaHRncmVlbi5zdmcKW3N0YW5kYXJkLXVybF06IGh0dHA6Ly9zdGFuZGFyZGpzLmNvbS8KClt3ZWJzaXRlLWltYWdlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby93ZWJzaXRlLXVwLWRvd24tZ3JlZW4tcmVkL2h0dHAvZG9tYXBpYy5jb20uc3ZnP2xhYmVsPWRvbWFwaWMuY29tClt3ZWJzaXRlLXVybF06IGh0dHA6Ly9kb21hcGljLmNvbS8KCltwbTItdXJsXTogaHR0cDovL3BtMi5rZXltZXRyaWNzLmlvLwpbeWFyZ3MtdXJsXTogaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UveWFyZ3MKW25hcnZhbC11cmxdOiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9uYXJ2YWwKW2RvbWFwaWMtY29udHJvbGxlci11cmxdOiBodHRwczovL25wbWpzLmNvbS9kb21hcGljLWNvbnRyb2xsZXIKW2RvbWFwaWMtc2VydmljZS11cmxdOiBodHRwczovL25wbWpzLmNvbS9kb21hcGljLXNlcnZpY2UK readmeEtag: '"f13e9614ca50c99137e109ba65ec4340bc85ed97"' readmeLastModified: Sat, 02 Mar 2019 11:30:57 GMT repositoryId: 121413231 description: Base for Domapic Node.js packages created: '2018-02-13T17:31:30Z' updated: '2019-05-26T09:26:31Z' language: JavaScript archived: false stars: 0 watchers: 0 forks: 0 owner: domapic logo: https://avatars.githubusercontent.com/u/36418970?v=4 license: MIT repoEtag: '"33c77f2c1f853880a39ba473e5d704390466fd9b9809d77ad5161e0ae74c3f30"' repoLastModified: Sun, 26 May 2019 09:26:31 GMT foundInMaster: true id: fbd71be97b54eacae0bec76ede6f9a40 - source: openapi3 tags repository: https://github.com/chunghha/lb-poc v3: true repositoryMetadata: base64Readme: >- IyBsYi1wb2MKClshW0xvb3BCYWNrXShodHRwczovL2dpdGh1Yi5jb20vc3Ryb25nbG9vcC9sb29wYmFjay1uZXh0L3Jhdy9tYXN0ZXIvZG9jcy9zaXRlL2ltZ3MvYnJhbmRpbmcvUG93ZXJlZC1ieS1Mb29wQmFjay1CYWRnZS0oYmx1ZSktQDJ4LnBuZyldKGh0dHA6Ly9sb29wYmFjay5pby8pCgohW29hc2dyYXBoXSguL29hc2dyYXBoLnBuZykK readmeEtag: '"136082fa6fe940a6ac5cd14b5207ed75ca3ba56f"' readmeLastModified: Mon, 30 Mar 2020 14:57:28 GMT repositoryId: 153759478 description: Loopback 4 POC created: '2018-10-19T09:33:11Z' updated: '2023-01-28T03:27:42Z' language: TypeScript archived: true stars: 0 watchers: 1 forks: 0 owner: chunghha logo: https://avatars.githubusercontent.com/u/24458075?v=4 repoEtag: '"74a1491a915d134b7088d0e5ea5952120b58973fc77275a13edc698f07fcc83a"' repoLastModified: Sat, 28 Jan 2023 03:27:42 GMT foundInMaster: true category: Server id: 0aeabccd199aadf54cfdb62290aed132 - source: openapi3 tags repository: https://github.com/bepopov/intelligent_agent v3: true repositoryMetadata: repositoryId: 185402874 description: An intelligent agent for course creating created: '2019-05-07T13:00:33Z' updated: '2019-05-07T13:04:19Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: bepopov logo: https://avatars.githubusercontent.com/u/20209992?v=4 repoEtag: '"63f696ee4f5e8aaacd9f763dc0b2c5882903bdd51e0e7aa80e64af3ec21954b8"' repoLastModified: Tue, 07 May 2019 13:04:19 GMT foundInMaster: true id: 2f9a60bc091a5b228cf32f7105aa82c4 - source: openapi3 tags repository: https://github.com/epiphone/express-openapi-typer v3: true repositoryMetadata: base64Readme: >- IyBleHByZXNzLW9wZW5hcGktdHlwZXIKIVtdKGh0dHBzOi8vZ2l0aHViLmNvbS9lcGlwaG9uZS9leHByZXNzLW9wZW5hcGktdHlwZXIvd29ya2Zsb3dzL0NJL2JhZGdlLnN2ZykgWyFbbnBtIHZlcnNpb25dKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9qcy9leHByZXNzLW9wZW5hcGktdHlwZXIuc3ZnKV0oaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL2V4cHJlc3Mtb3BlbmFwaS10eXBlcikKCiMjIENhdXRpb24hIEFscGhhLWxldmVsIHNvZnR3YXJlIGFoZWFkLiBVc2UgYXQgeW91ciBvd24gcGVyaWwKQ29kZS1nZW5lcmF0aW9uLWZyZWUgY29udmVyc2lvbiBvZiAqKk9wZW5BUEkgdjMuMSoqIHNjaGVtYSBpbnRvICoqdHlwZS1jaGVja2VkIEV4cHJlc3MgcmVxdWVzdCBoYW5kbGVycyoqLgoKRGVyaXZlIEV4cHJlc3MgaGFuZGxlciB0eXBlcyBmcm9tIGFuIE9wZW5BUEkgc2NoZW1hIHRvIGdldAotIHR5cGUgZXJyb3JzIHdoZW4gYSBoYW5kbGVyIGRvZXNuJ3QgbWF0Y2ggdGhlIHNjaGVtYSwgYW5kCi0gYXV0by1jb21wbGV0aW9uIG9uIGhhbmRsZXIgcGF0aCwgYHJlcS5wYXJhbWAsIGByZXEucXVlcnlgLCBgcmVxLmJvZHlgLCBgcmVzLnNlbmQoKWAsIGByZXMuanNvbigpYCBldGMuCgpOb3RlIHRoYXQgdGhlIGxpYnJhcnkgKipkb2VzIG5vdCBwZXJmb3JtIHJ1bnRpbWUgdmFsaWRhdGlvbioqIGFnYWluc3QgdGhlIE9wZW5BUEkgc2NoZW1hOiBhZGQgc29tZXRoaW5nIGxpa2UgaHR0cHM6Ly9naXRodWIuY29tL0hpbHp1L2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0ZSBmb3IgdGhhdCBwdXJwb3NlLgoKKipSZXF1aXJlcyBPcGVuQVBJIHYzLjEqKi4gVGhpcyBsaWJyYXJ5IHJlbGllcyBoZWF2aWx5IG9uIGV4aXN0aW5nIEpTT04gU2NoZW1hIHRvb2xpbmcgd2hlcmVhcyBlYXJsaWVyIE9wZW5BUEkgdmVyc2lvbnMgdXNlIHRoZSBbT3BlbkFQSSBTY2hlbWEgT2JqZWN0XShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMC5tZCNzY2hlbWFPYmplY3QpIGluc3RlYWQgb2YgcHVyZSBKU09OIFNjaGVtYS4gT3BlbkFQSSBgdjMuMWAgaXMgeWV0IHVucHVibGlzaGVkOyB0cmFjayBwcm9ncmVzcyBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vaXNzdWVzLzIwMjUpLiBSZWFkIG1vcmUgYWJvdXQgdGhlIE9wZW5BUEkvSlNPTiBTY2hlbWEgZGl2ZXJnZW5jZSBhdCBodHRwczovL2FwaXN5b3V3b250aGF0ZS5jb20vYmxvZy9vcGVuYXBpLWFuZC1qc29uLXNjaGVtYS1kaXZlcmdlbmNlLXBhcnQtMSBhbmQgaG93IGB2My4xYCBzb2x2ZXMgaXQgYXQgaHR0cHM6Ly9waGlsLnRlY2gvMjAxOS8wOS8wNy91cGRhdGUtb3BlbmFwaS1qc29uLXNjaGVtYS8uCgojIyBJbnN0YWxsCgpgeWFybiBhZGQgZXhwcmVzcy1vcGVuYXBpLXR5cGVyYAoKIyMgVXNhZ2UKCkZpcnN0IGRlZmluZSB5b3VyIE9wZW5BUEkgc2NoZW1hIGFzIGEgVHlwZVNjcmlwdCB0eXBlOgoKYGBgdHlwZXNjcmlwdAppbnRlcmZhY2UgUGV0U3RvcmVTY2hlbWEgewogIG9wZW5hcGk6ICczLjEuMCcKICBpbmZvOiB7IC4uLiB9CiAgcGF0aHM6IHsKICAgICcvcGV0cyc6IHsKICAgICAgICBnZXQ6IHsgLi4ufQogICAgfSwKICAgIC4uLgogIH0KfQpgYGAKClRoZW4gb3ZlcnJpZGUgeW91ciBFeHByZXNzIHJvdXRlcidzIHR5cGUgZnJvbQoKYGBgdHlwZXNjcmlwdApjb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpCmBgYAoKaW50byB0aGUgZm9sbG93aW5nOgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgeyBPcGVuQVBJUm91dGVyIH0gZnJvbSAnZXhwcmVzcy1vcGVuYXBpLXR5cGVyJwoKY29uc3Qgcm91dGVyID0gKGV4cHJlc3MuUm91dGVyKCkgYXMgdW5rbm93bikgYXMgT3BlbkFQSVJvdXRlcjxQZXRTdG9yZVNjaGVtYT4KYGBgCgpIYW5kbGVyIGZ1bmN0aW9ucyBpbiBgcm91dGVyYCBub3cgZ2V0IHR5cGUtY2hlY2tlZCBhcyBwZXIgYFBldFN0b3JlU2NoZW1hYCEgRm9yIGV4YW1wbGUgd2hlbiB1c2luZyBbdGhlIGZ1bGwgc2FtcGxlIFBldFN0b3JlIHNjaGVtYV0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvZXhhbXBsZXMvdjMuMC9wZXRzdG9yZS1leHBhbmRlZC55YW1sKSB3ZSBlbmQgdXAgd2l0aCB0aGUgZm9sbG93aW5nOgoKIVtVc2FnZSBzYW1wbGVdKC4vZG9jL3VzYWdlLmdpZikKCiMjIyBBY2Nlc3MgT3BlbkFQSSBzY2hlbWEgdHlwZSBmcm9tIGEgcnVudGltZSB2YWx1ZQoKSXQgY2FuIGJlIHVzZWZ1bCB0byBpbnN0YW50aWF0ZSB0aGUgT3BlbkFQSSBzY2hlbWEgYXMgYSBydW50aW1lIHZhbHVlIGluc3RlYWQgb2YganVzdCBkZWZpbmluZyBhIHR5cGUuIEZvciBleGFtcGxlIHdoZW4gc2VydmluZyB0aGUgc2NoZW1hIGFzIGRvY3VtZW50YXRpb24gb3IgaGFuZGxpbmcgdmFsaWRhdGlvbiB3ZSBuZWVkIHRvIGFjY2VzcyB0aGUgc2NoZW1hIGF0IHJ1bnRpbWUuIEluIGNhc2VzIGxpa2UgdGhlc2UgY29tYmluZSBgdHlwZW9mYCBhbmQgW2BhcyBjb25zdGBdKGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL3JlbGVhc2Utbm90ZXMvdHlwZXNjcmlwdC0zLTQuaHRtbCNjb25zdC1hc3NlcnRpb25zKSB0byBhY2Nlc3MgdGhlIHNjaGVtYSB2YWx1ZSdzIHR5cGU6CgpgYGB0eXBlc2NyaXB0CmNvbnN0IHBldFN0b3JlU2NoZW1hID0gewogIG9wZW5hcGk6ICczLjEuMCcsCiAgaW5mbzogeyAuLi4gfSwKICBwYXRoczogewogICAgJy9wZXRzJzogewogICAgICAgIGdldDogeyAuLi4gfQogICAgfSwKICAgIC4uLgogIH0KfSBhcyBjb25zdCAvLyA8LS0gaW1wb3J0YW50IQoKdHlwZSBQZXRTdG9yZVNjaGVtYSA9IHR5cGVvZiBwZXRTdG9yZVNjaGVtYQpgYGAKCiMjIyBBbGxvdyBhZGRpdGlvbmFsIHBhdGhzCgpCeSBkZWZhdWx0IGBPcGVuQVBJUm91dGVyYCBkb2Vzbid0IGFsbG93IGFueSBhZGRpdGlvbmFsIGhhbmRsZXJzIG5vdCBkZWZpbmVkIGluIHRoZSBPcGVuQVBJIHNjaGVtYS4gVG8gbG9vc2VuIHRoaXMgcmVzdHJpY3Rpb24geW91IGNhbiBleHBhbmQgdGhlIHR5cGUgYXMgZm9sbG93czoKCmBgYHR5cGVzY3JpcHQKaW1wb3J0ICogYXMgZXhwcmVzcyBmcm9tICdleHByZXNzJwoKY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKSBhcyBPcGVuQVBJUm91dGVyPFBldFN0b3JlU2NoZW1hPiAmIGV4cHJlc3MuUm91dGVyCmBgYAoKWW91IGNhbiBhbHNvIHNlbGVjdCBhIHN1YnNldCBvZiBgZXhwcmVzcy5Sb3V0ZXJgIHdpdGggW2BQaWNrYC9gT21pdGBdKGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL3V0aWxpdHktdHlwZXMuaHRtbCNwaWNrdGspIHdoZW4gYWxsb3dpbmcgYWRkaXRpb25hbCBtZXRob2RzIG9ubHkgZm9yIGEgc3BlY2lmaWMgSFRUUCBtZXRob2QsIGZvciBleGFtcGxlLgoKIyMgVE9ETwotIEFsbCB0aGUgbGltaXRhdGlvbnMgZnJvbSBbYGpzb24tc2NoZW1hLXR5cGUtbWFwcGVyYF0oaHR0cHM6Ly9naXRodWIuY29tL2VwaXBob25lL2pzb24tc2NoZW1hLXR5cGUtbWFwcGVyKSBhcHBseSBoZXJlIGFzIHdlbGwKLSBIYW5kbGUgcmVxdWVzdCBoZWFkZXIgcGFyYW1ldGVycz8KLSBBUEkgY2xpZW50IHR5cGUgY2hlY2tpbmcsIHVzaW5nIEF4aW9zPwotIEZpZ3VyZSBhIHdheSBvdXQgb2YgdGhlIHVuZm9ydHVuYXRlIGBhcyB1bmtub3duYCBjYXN0Ci0gU3VwcG9ydCBwYXRoLWJhc2VkIGAkcmVmYHMsIG5vdCBqdXN0IGAkaWRgLWJhc2VkIG9uZXMKICAtIHJlcXVpcmVzIHNvbWUgc29ydCBvZiBtYW51YWwgbWFwcGluZyBhcyB3ZSBjYW4ndCB0YWtlIGAiIy9jb21wb25lbnRzL3NjaGVtYXMvTmV3VXNlciJgIGFwYXJ0IGF0IHR5cGUtbGV2ZWwKCiMjIFJlbGF0ZWQgcHJvamVjdHMKLSBDaGVjayBvdXQgW3Jlc3R5cGVkXShodHRwczovL2dpdGh1Yi5jb20vcmF3cm1hYW4vcmVzdHlwZWQpIGFuZCBbcmVzdC50c10oaHR0cHM6Ly9naXRodWIuY29tL2htaWwvcmVzdC50cykgZm9yIGRpZmZlcmVudCBhcHByb2FjaGVzIHRvIHR5cGUtc2FmZSBSRVNUIEFQSXMK readmeEtag: '"d0b621a6479949518dfec26510268a2f56d41cd8"' readmeLastModified: Mon, 09 Dec 2019 14:29:43 GMT repositoryId: 222856268 description: >- Code-generation-free conversion of OpenAPI schema into typed Express request handlers created: '2019-11-20T05:15:33Z' updated: '2019-12-09T14:29:50Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: epiphone logo: https://avatars.githubusercontent.com/u/1923531?v=4 license: MIT repoEtag: '"e0cf4803743c5f8e23fd33564cf01eb63a5d07494c2161f60820a8066220f843"' repoLastModified: Mon, 09 Dec 2019 14:29:50 GMT foundInMaster: true category: Parsers id: 3dc9d32a30d29bdcebf1249a3ca227f9 - source: openapi3 tags repository: https://github.com/sudokuru/frontend v3: true id: 69e0ef6db084252188c93ab7716b9309 repositoryMetadata: base64Readme: >- IVtTdWRva3VydSBMb2dvXShodHRwczovL3N1ZG9rdXJ1LnMzLmFtYXpvbmF3cy5jb20vZ29sZExvZ29UZXh0LnBuZykKCiMgVGhlIE9mZmljaWFsIENyb3NzLVBsYXRmb3JtIEZyb250ZW5kIGZvciBvdXIgRnJlZSBPcGVuIFNvdXJjZSBTdWRva3UgUHJvamVjdAoKIyDwn5K7IFRyeSBvdXIgREVWIHNpdGUgYXQ6IGh0dHBzOi8vc3Vkb2t1cnUucGFnZXMuZGV2LwoKIyDirIfvuI8gRG93bmxvYWQgb3VyIGFscGhhIPCfk7FBbmRyb2lkLCDwn5CnTGludXgsIGFuZCDwn6qfV2luZG93cyBhcHAgYnVpbGRzIGF0OiBodHRwczovL3N1ZG9rdXJ1Lml0Y2guaW8vc3Vkb2t1cnUKClshW1BpcGVsaW5lXShodHRwczovL2dpdGh1Yi5jb20vU3Vkb0t1cnUvRnJvbnRlbmQvYWN0aW9ucy93b3JrZmxvd3MvcGlwZWxpbmUueW1sL2JhZGdlLnN2Zz9icmFuY2g9bWFpbildKGh0dHBzOi8vZ2l0aHViLmNvbS9TdWRvS3VydS9Gcm9udGVuZC9hY3Rpb25zL3dvcmtmbG93cy9waXBlbGluZS55bWwpClshW0NvdmVyYWxscyBDb3ZlcmFnZV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvZ2l0aHViL1N1ZG9LdXJ1L0Zyb250ZW5kL2JhZGdlLnN2Zz9icmFuY2g9bWFpbildKGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9TdWRvS3VydS9Gcm9udGVuZD9icmFuY2g9bWFpbikKWyFbQ29kZWNvdiBDb3ZlcmFnZV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL1N1ZG9LdXJ1L0Zyb250ZW5kL2dyYXBoL2JhZGdlLnN2Zz90b2tlbj1YUVNUS1BUQkZGKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL1N1ZG9LdXJ1L0Zyb250ZW5kKQpbIVtGT1NTQSBTdGF0dXNdKGh0dHBzOi8vYXBwLmZvc3NhLmNvbS9hcGkvcHJvamVjdHMvZ2l0JTJCZ2l0aHViLmNvbSUyRlN1ZG9LdXJ1JTJGRnJvbnRlbmQuc3ZnP3R5cGU9c2hpZWxkJmlzc3VlVHlwZT1saWNlbnNlKV0oaHR0cHM6Ly9hcHAuZm9zc2EuY29tL3Byb2plY3RzL2dpdCUyQmdpdGh1Yi5jb20lMkZTdWRvS3VydSUyRkZyb250ZW5kP3JlZj1iYWRnZV9zaGllbGQmaXNzdWVUeXBlPWxpY2Vuc2UpClshW0NvZGVGYWN0b3JdKGh0dHBzOi8vd3d3LmNvZGVmYWN0b3IuaW8vcmVwb3NpdG9yeS9naXRodWIvc3Vkb2t1cnUvZnJvbnRlbmQvYmFkZ2UpXShodHRwczovL3d3dy5jb2RlZmFjdG9yLmlvL3JlcG9zaXRvcnkvZ2l0aHViL3N1ZG9rdXJ1L2Zyb250ZW5kKQpbIVtDb2RhY3kgQmFkZ2VdKGh0dHBzOi8vYXBwLmNvZGFjeS5jb20vcHJvamVjdC9iYWRnZS9HcmFkZS8xMzQyZjg0MmExNGY0MGNjYTg1NmQ2ZTgxMjA0ZjhhYyldKGh0dHBzOi8vYXBwLmNvZGFjeS5jb20vZ2gvU3Vkb2t1cnUvRnJvbnRlbmQvZGFzaGJvYXJkP3V0bV9zb3VyY2U9Z2gmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY29udGVudD0mdXRtX2NhbXBhaWduPUJhZGdlX2dyYWRlKQpbIVtNYWludGFpbmFiaWxpdHldKGh0dHBzOi8vYXBpLmNvZGVjbGltYXRlLmNvbS92MS9iYWRnZXMvNGNkMWQxMDI3YjdiMjUzMmM2ODAvbWFpbnRhaW5hYmlsaXR5KV0oaHR0cHM6Ly9jb2RlY2xpbWF0ZS5jb20vZ2l0aHViL1N1ZG9rdXJ1L0Zyb250ZW5kL21haW50YWluYWJpbGl0eSkKCjwhLS0tIE5vdGU6IFRoZSBmb2xsb3dpbmcgdGV4dCBpcyBkdXBsaWNhdGVkIGluIHRoZSBBYm91dFVzUGFnZS50c3ggZmlsZSAtLT4KCiMjIFN1ZG9rdXJ1IGlzIGFuIG9wZW4tc291cmNlIHByb2plY3QgZm9jdXNlZCBvbiBkZXZlbG9waW5nIGEgd29ybGQtY2xhc3MsIGNyb3NzLXBsYXRmb3JtIFN1ZG9rdSBhcHAuIFdlIGFpbSB0byBwcm92aWRlIGEgZGVsaWdodGZ1bCB1c2VyIGV4cGVyaWVuY2Ugd2hpbGUgYWxzbyBjb250cmlidXRpbmcgdG8gdGhlIGNvbW11bml0eSBieSBidWlsZGluZyBhIGNvbGxlY3Rpb24gb2YgcmV1c2FibGUgc29mdHdhcmUgbW9kdWxlcy4gVGhlc2UgbW9kdWxlcyBhcmUgZGVzaWduZWQgdG8gYmUgZnJlZSwgd2VsbC1kb2N1bWVudGVkLCBtb2Rlcm4sIGFuZCBpbnRlcm9wZXJhYmxlLCBhbGxvd2luZyB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5IHRvIGVhc2lseSBpbmNvcnBvcmF0ZSB0aGVtIGludG8gdGhlaXIgb3duIFN1ZG9rdS1yZWxhdGVkIHByb2plY3RzLgoKIyMjIFRoaXMgZnJvbnRlbmQgbW9kdWxlIGlzIHRoZSBwcmltYXJ5IHVzZXIgaW50ZXJmYWNlIGZvciBTdWRva3VydSwgcHJvdmlkaW5nIGEgY3Jvc3MtcGxhdGZvcm0gU3Vkb2t1IGV4cGVyaWVuY2UgYnVpbHQgd2l0aCBSZWFjdCBOYXRpdmUgV2ViIGFuZCBUeXBlU2NyaXB0LiBJdCBvZmZlcnMgYSBjbGVhbiwgaW50dWl0aXZlIGRlc2lnbiB3aXRoIGZlYXR1cmVzIHN1Y2ggYXM6CgotIPCfjq4gUGxheSBTdWRva3UgYWNyb3NzIDkgZGlmZmVyZW50IGRpZmZpY3VsdHkgbGV2ZWxzIGdlbmVyYXRlZCBieSB0aGUgU3Vkb2t1cnUgQ2xlYXJpbmdob3VzZSBtb2R1bGUKLSDwn46TIExlYXJuIGhvdyB0byBwbGF5IFN1ZG9rdSB3aXRoIGxlc3NvbnMgZnJvbSB0aGUgYmFzaWNzIGFsbCB0aGUgd2F5IHRvIGFkdmFuY2VkIHN0cmF0ZWdpZXMKLSDwn5OKIFN0YXRpc3RpY3MgdG8gdHJhY2sgeW91ciBwcm9ncmVzcwotIOKame+4jyBTZW5zaWJsZSBkZWZhdWx0IHNldHRpbmdzIGZvciBjYXN1YWwgcGxheWVycyB3aXRoIG9wdGlvbnMgdG8gY3VzdG9taXplIHRoZSBwbGF5aW5nIGV4cGVyaWVuY2UgZm9yIHVzZXJzIHdpdGggZGlmZmVyZW50IHBsYXlzdHlsZXMKLSDwn5KhQ3VzdG9tIHN0cmF0ZWd5IGJhc2VkIGhpbnRzIGZyb20gdGhlIFN1ZG9rdXJ1IG5wbSBsaWJyYXJ5IG1vZHVsZQotIPCfk4UgX1VwY29taW5nXzogZHJpbGxzIHdoaWNoIGxldCB5b3UgcHJhY3RpY2UgaW5kaXZpZHVhbCBzdHJhdGVnaWVzIGFsc28gcG93ZXJlZCBieSB0aGUgU3Vkb2t1cnUgbnBtIGxpYnJhcnkgbW9kdWxlCgojIPCflqXvuI8gU3VwcG9ydGVkIFBsYXRmb3JtcwoKIyMgVGllciAxIFN1cHBvcnQKCiMjIyDwn5qiIFdlYgoKIyMgVGllciAyIFN1cHBvcnQKCiMjIyDimpLvuI8gQW5kcm9pZAoKIyMjIOKaku+4jyBXaW5kb3dzCgojIyMg4pqS77iPIExpbnV4CgojIyBQbGFubmVkIFN1cHBvcnQKCiMjIyDwn5OFIGlPUwoKIyMjIPCfk4UgTWFjT1MKCiMjIExlZ2VuZAoKIyMjIPCfmqIgVGllciAxIFN1cHBvcnQgLSBXZSBoYXZlIGZ1bGwgZW5kIHRvIGVuZCB0ZXN0IGNvdmVyYWdlIGZvciBhbGwgbmV3IGFuZCBleGlzdGluZyBmdW5jdGlvbmFsaXR5LiBXZSBkbyBtYW51YWwgdGVzdGluZyBvZiBuZXcgZmVhdHVyZXMgYmVmb3JlIGRlcGxveW1lbnQuCgojIyMg4pqS77iPIFRpZXIgMiBTdXBwb3J0IC0gV2UgaGF2ZSBwYXJ0aWFsIG9yIHplcm8gZW5kIHRvIGVuZCB0ZXN0IGNvdmVyYWdlIGZvciBuZXcgYW5kIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkuIFdlIG1heSBub3QgYWx3YXlzIGRvIG1hbnVhbCB0ZXN0aW5nIG9mIG5ldyBmZWF0dXJlcyBiZWZvcmUgZGVwbG95bWVudC4KCiMjIyDwn5OFIFBsYW5uZWQgU3VwcG9ydCAtIFdlIGRvIG5vdCBjdXJyZW50bHkgc3VwcG9ydCB0aGlzIHBsYXRmb3JtLCBidXQgd2UgcGxhbiBvbiBzdXBwb3J0aW5nIGluIHRoZSBmdXR1cmUuCgojIPCfm6DvuI8gTG9jYWwgZGV2ZWxvcG1lbnQKCiMjIOKame+4jyBHZW5lcmFsIFNldHVwOgoKMS4gR2l0IGNsb25lIHRoaXMgcmVwb3NpdG9yeQoyLiBJbnN0YWxsIE5vZGUuanMgYHYxOS41LjBgIG9yIGxhdGVyCjMuIEluc3RhbGwgbnBtIGA5LjMuMWAgb3IgbGF0ZXIKNC4gUnVuIGBucG0gaWAgaW4gdGhlIHJvb3QgZm9sZGVyCjUuIFtJbnN0YWxsIHByZS1jb21taXQgaG9va3NdKGh0dHBzOi8vcHJlLWNvbW1pdC5jb20vI2luc3RhbGwpCgo2LiBSdW4gYHByZS1jb21taXQgaW5zdGFsbGAgdG8gc2V0dXAgcHJlLWNvbW1pdCBob29rcy4gUHJlLWNvbW1pdCBob29rcyBjYW4gYmUgcnVuIG1hbnVhbGx5IHdpdGggYG5wbSBydW4gcHJlLWNvbW1pdGAsIGJ1dCB3aWxsIGFsd2F5cyBydW4gYmVmb3JlIGdpdCBjb21taXQgYW5kIGdpdCBwdXNoIGlmIHNldHVwIGNvcnJlY3RseS4KCiMjIPCfk7IgTW9iaWxlIFNldHVwIChub3QgbmVlZGVkIHRvIHJ1biB3ZWJzaXRlKToKCjEuIENvbnRhY3QgVGhvbWFzIHRvIGdldCBhZGRlZCB0byB0aGUgRXhwbyBvcmdhbml6YXRpb24gc28gdGhhdCB5b3UgY2FuIGxvZyBpbiB3aXRoIHlvdXIgb3duIGVtYWlsIGFuZCBwYXNzd29yZC4KMi4gRG93bmxvYWQgdGhlIGV4cG8gYXBwIG9uIHlvdXIgbW9iaWxlIGRldmljZS4KMy4gT24geW91ciBkZXZlbG9wbWVudCBkZXZpY2UsIGUuZy4sIGxhcHRvcCwgbG9naW4gYnkgcnVubmluZzogYGV4cG8gbG9naW5gIGFuZCBmaWxsIG91dCB0aGUgcGFyYW1ldGVycy4KCiMjIPCfj4PigI3imYLvuI8gUnVubmluZyB0aGUgQXBwbGljYXRpb24gTG9jYWxseQoKMS4gUnVuIGBucG0gcnVuIHN0YXJ0YCBmcm9tIHRoaXMgcmVwb3NpdG9yaWVzIHJvb3QgZm9sZGVyCjIuIEZvciBpT1MsIHNjYW4gdGhlIFFSIGNvZGUgd2l0aCB5b3VyIGNhbWVyYSBhcHAsIGZvciBBbmRyb2lkIHlvdSB3aWxsIG5lZWQgdG8gc2NhbiB0aGUgY29kZSBmcm9tIHdpdGhpbiB0aGUgRXhwbyBhcHAuCjMuIEZvciBXZWIsIGhpdCB0aGUgdyBrZXkgdG8gc3RhcnQgdXAgdGhlIHdlYnNpdGUgYXQgYGxvY2FsaG9zdDo4MDgxYAoKIyMg8J+nrSBOYXZpZ2F0aW5nIHRoZSBDb2RlYmFzZQoKPGRldGFpbHM+CjxzdW1tYXJ5PmFwcDwvc3VtbWFyeT4KCvCfk4Igc3Vkb2t1cnUvYXBwLyBpcyB0aGUgcGFyZW50IGZvbGRlciBmb3IgYWxsIHRoZSBhcHBsaWNhdGlvbiBjb2RlCgotIPCfk6EgQXBpLyBjb250YWlucyBjbGFzc2VzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGludGVyYWN0IHdpdGggTG9jYWxTdG9yYWdlIHN0YXRlIGRhdGEKCi0g8J+WvO+4jyDvuI9Db21wb25lbnRzLyBjb250YWlucyB0aGUgUmVhY3QgY29tcG9uZW50cyBkaXNwbGF5ZWQgb24gdGhlIHBhZ2VzCiAgLSBDb250YWlucyBmb2xkZXJzIHRvIHN0b3JlIGNvbXBvbmVudHMgZm9yIHZhcmlvdXMgcGFnZXMKICAtIER1ZSB0byBpdHMgc2l6ZSBhbmQgY29tcGxleGl0eSB3ZSdsbCBicmVhayBkb3duIFN1ZG9rdUJvYXJkIGRpcmVjdG9yeSBmdXJ0aGVyLgogICAgLSBJbiBhZGRpdGlvbiB0byB0aGUgU3Vkb2t1Qm9hcmQudHN4IGNvbXBvbmVudCwgU3Vkb2t1Qm9hcmQgY29udGFpbnMgYSBmb2xkZXIgb2Ygc3ViY29tcG9uZW50cyAvQ29tcG9uZW50cywgYSBmb2xkZXIgb2YgaGVscGVyIGZ1bmN0aW9ucyAvRnVuY3Rpb25zLCBhbmQgYSBzdWRva3UudHMgZmlsZSB3aXRoIGV2ZW4gbW9yZSBoZWxwZXIgZnVuY3Rpb25zLgotIOKam++4jyBDb250ZXh0cy8gY29udGFpbnMgdGhlIFJlYWN0IGNvbnRleHRzIGNvZGUKICAtIFRPRE86IGV4cGxhaW4gdGhpcyBmb2xkZXIgYmV0dGVyCi0g8J+UoiBEYXRhLyBjb250YWlucyBmaWxlcyBmaWxsZWQgd2l0aCBTdWRva3UgcHV6emxlcyB0byBzZXJ2ZSB0byB0aGUgdXNlcgotIPCflKggRnVuY3Rpb25zLyBjb250YWlucyBmaWxlcyBvZiBoZWxwZXIgZnVuY3Rpb25zCi0g8J+nrSBOYXZpZ2F0aW9uLyBjb250YWlucyBjb2RlIGZvciBEcmF3ZXIgbmF2aWdhdGlvbgotIPCfk4QgUGFnZXMvIGNvbnRhaW5zIHRoZSBhcHBsaWNhdGlvbnMgcGFnZXMKICAtIEFib3V0VXNQYWdlLnRzeCBsZXRzIHVzZXJzIGxlYXJuIG1vcmUgYWJvdXQgdGhlIFN1ZG9rdXJ1IHByb2plY3QKICAgIC0gPGltZyBzcmM9ImRvY3MvUGFnZVNjcmVlbnNob3RzL0Fib3V0VXMucG5nIiBhbHQ9IkFib3V0VXNQYWdlIFNjcmVlbnNob3QiIHdpZHRoPTQwMD4KICAtIENvbnRhY3RQYWdlLnRzeCBsZXRzIHVzZXJzIHByb3ZpZGUgdXMgd2l0aCBmZWVkYmFjayBmcm9tIGluc2lkZSB0aGUgYXBwCiAgICAtIDxpbWcgc3JjPSJkb2NzL1BhZ2VTY3JlZW5zaG90cy9Db250YWN0LnBuZyIgYWx0PSJDb250YWN0UGFnZSBTY3JlZW5zaG90IiB3aWR0aD00MDA+CiAgLSBEcmlsbEdhbWUudHN4IGlzIG5vdCBjdXJyZW50bHkgYXZhaWxhYmxlIHRvIHVzZXJzCiAgLSBEcmlsbFBhZ2UudHN4IGlzIG5vdCBjdXJyZW50bHkgYXZhaWxhYmxlIHRvIHVzZXJzCiAgLSBIb21lUGFnZS50c3ggaXMgdGhlIHVzZXJzIGVudHJ5IGludG8gdGhlIGFwcAogICAgLSA8aW1nIHNyYz0iZG9jcy9QYWdlU2NyZWVuc2hvdHMvSG9tZS5wbmciIGFsdD0iSG9tZVBhZ2UgU2NyZWVuc2hvdCIgd2lkdGg9NDAwPgogIC0gTGVhcm5QYWdlLnRzeCBsZXRzIHVzZXJzIHNlbGVjdCBsZXNzb25zIHRvIHN0YXJ0CiAgICAtIDxpbWcgc3JjPSJkb2NzL1BhZ2VTY3JlZW5zaG90cy9MZWFybi5wbmciIGFsdD0iTGVhcm5QYWdlIFNjcmVlbnNob3QiIHdpZHRoPTQwMD4KICAtIExlc3Nvbi50c3ggbGV0cyB1c2VycyBjb21wbGV0ZSBsZXNzb25zCiAgICAtIDxpbWcgc3JjPSJkb2NzL1BhZ2VTY3JlZW5zaG90cy9MZXNzb24ucG5nIiBhbHQ9Ikxlc3NvbiBTY3JlZW5zaG90IiB3aWR0aD00MDA+CiAgLSBQbGF5UGFnZS50c3ggbGV0cyB1c2VycyBzZWxlY3QgcHV6emxlIHRvIHBsYXkgYmFzZWQgb24gZGlmZmljdWx0eQogICAgLSA8aW1nIHNyYz0iZG9jcy9QYWdlU2NyZWVuc2hvdHMvUGxheS5wbmciIGFsdD0iUGxheSBTY3JlZW5zaG90IiB3aWR0aD00MDA+CiAgLSBQcm9maWxlUGFnZS50c3ggbGV0cyB1c2VycyBzZWxlY3QgcHJlZmVyZW5jZXMgZS5nLiB0aGVtZQogICAgLSA8aW1nIHNyYz0iZG9jcy9QYWdlU2NyZWVuc2hvdHMvUHJvZmlsZS5wbmciIGFsdD0iUHJvZmlsZSBTY3JlZW5zaG90IiB3aWR0aD00MDA+CiAgLSBSZWxlYXNlTm90ZXNQYWdlLnRzeCBsZXRzIHVzZXJzIHNlZSB3aGF0J3MgYWRkZWQgdG8gdGhlIGFwcCB3aXRoIGVhY2ggdmVyc2lvbiB1cGRhdGUKICAgIC0gPGltZyBzcmM9ImRvY3MvUGFnZVNjcmVlbnNob3RzL1JlbGVhc2VOb3Rlcy5wbmciIGFsdD0iUmVsZWFzZU5vdGVzIFNjcmVlbnNob3QiIHdpZHRoPTQwMD4KICAtIFN0YXRpc3RpY3NQYWdlLnRzeCBsZXRzIHVzZXJzIHNlZSB0aGVpciBTdWRva3UgcGxheWluZyBzdGF0aXN0aWNzCiAgICAtIDxpbWcgc3JjPSJkb2NzL1BhZ2VTY3JlZW5zaG90cy9TdGF0aXN0aWNzLnBuZyIgYWx0PSJTdGF0aXN0aWNzIFNjcmVlbnNob3QiIHdpZHRoPTQwMD4KICAtIFN1ZG9rdVBhZ2UudHN4IGxldHMgdXNlcnMgcGxheSBTdWRva3UhCiAgICAtIDxpbWcgc3JjPSJkb2NzL1BhZ2VTY3JlZW5zaG90cy9TdWRva3UucG5nIiBhbHQ9IlN1ZG9rdSBTY3JlZW5zaG90IiB3aWR0aD00MDA+Ci0g8J+OqCBTdHlsaW5nLyBjb250YWlucyBjb2RlIGZvciB0aGVtZSBhbmQgaGlnaGxpZ2h0aW5nIGNvbG9ycwogICAgLSBBbGwgYXBwbGljYXRpb24gY29sb3JzIGFyZSBkZWZpbmVkIGluIGBzdWRva3VydS9hcHAvU3R5bGluZy90aGVtZS50c2AKCjwvZGV0YWlscz4KCjxkZXRhaWxzPgo8c3VtbWFyeT5kb2NzPC9zdW1tYXJ5PgoK8J+TgiBkb2NzLyBpcyB0aGUgcGFyZW50IGZvbGRlciBmb3IgYWxsIHRoZSBkb2N1bWVudGF0aW9uCgotIPCfk6EgQmFja2VuZEFwaUNhbGxzLyBjb250YWlucyBkb2NzIHRvIGhlbHAgdW5kZXJzdGFuZCBob3cgdG8gbWFrZSBBUEkgY2FsbHMgdG8gU3Vkb2t1cnUgbnBtIGxpYnJhcnkKLSDwn5a877iPIENvbXBvbmVudHMvIGNvbnRhaW5zIHZhcmlvdXMgZG9jcyByZWxhdGVkIHRvIFN1ZG9rdSBsb2dpYywgdGVybWlub2xvZ3ksIGFuZCBoaWdobGlnaHRpbmcKLSDwn5OcIERlc2lnbkRlY2lzaW9ucy8gY29udGFpbnMgZG9jcyBleHBsYWluaW5nIHNvbWUgaGlzdG9yaWNhbCBkZXNpZ24gZGVjaXNpb25zIG1hZGUgaW4gdGhlIGFwcHMgZGV2ZWxvcG1lbnQKLSDwn5O4IFBhZ2VTY3JlZW5zaG90cy8gY29udGFpbnMgc2NyZWVuc2hvdHMgb2YgdGhlIGFwcHMgcGFnZXMgdXNlZCBhcyByZWZlcmVuY2UgaW4gdGhpcyBSRUFETUUKCjwvZGV0YWlscz4KCjxkZXRhaWxzPgo8c3VtbWFyeT5lMmUvd2ViPC9zdW1tYXJ5PgoKLSDwn5a877iPIGNvbXBvbmVudHMvIGNvbnRhaW5zIHRlc3RpbmcgY29tcG9uZW50cyB0byBoZWxwIGFzc2VydCB0aGluZ3MgYWJvdXQgY29tcG9uZW50cyBpbmNsdWRpbmcgdGhlIFN1ZG9rdUJvYXJkIGl0c2VsZgotIPCfk4QgcGFnZS8gY29udGFpbnMgdGVzdGluZyBjb21wb25lbnRzIHRvIGhlbHAgYXNzZXJ0IHRoaW5ncyBhYm91dCBwYWdlcwotIPCfjq0gc3BlY3MvIGNvbnRhaW5zIHRoZSBhY3R1YWwgUGxheXdyaWdodCBlMmUgdGVzdHMKLSDwn5SiIGRhdGEudHMgY29udGFpbnMgdGVzdCBTdWRva3UgZ2FtZSBvYmplY3RzCi0g8J+Pl++4jyBmaXh0dXJlLnRzIGNvbnRhaW5zIHRlc3QgZml4dHVyZXMgaW5jbHVkaW5nIHRvIGF1dG9tYXRpY2FsbHkgZ2V0IHRoaW5ncyBzZXR1cCBsaWtlIG5hdmlnYXRpbmcgdG8gYSBwYWdlIHRvIGJlIHRlc3RlZAoKPC9kZXRhaWxzPgoKIyMg8J+OrSBQbGF5d3JpZ2h0IEUyRSBUZXN0cwoKIyMjIOKame+4jyBTZXR1cAoKMi4gUnVuIGBucG0gcnVuIHBsYXl3cmlnaHQ6aW5pdGAgdG8gaW5zdGFsbCBwbGF5d3JpZ2h0IGRlcGVuZGVuY2llcwozLiBJbnNpZGUgb2YgZTJlL3dlYiBmb2xkZXIsIGNyZWF0ZSBhIGAuZW52YCBmaWxlIGluIGZvciBsb2NhbCBkZXZlbG9wbWVudCBiYXNlZCBvbiB2YWx1ZXMgaW4gYC5lbnYuZXhhbXBsZWAKCiMjIyDwn4+D4oCN4pmC77iPIFJ1bm5pbmcgdGhlIFRlc3RzCgotIOKaoO+4jyBNYWtlIHN1cmUgdGhhdCB0aGUgd2Vic2l0ZSBpcyBydW5uaW5nIGxvY2FsbHkgKG9yIGNoYW5nZSBiYXNlVVJMIHRvIG1hdGNoIHdoZXJlIHlvdSB3YW50IHRvIHRlc3QpCi0g8J+SuyBSdW4gYG5wbSBydW4gcGxheXdyaWdodDp1aWAgdG8gcnVuIHRlc3RzIHVzaW5nIHBsYXl3cmlnaHQgdWkKLSDijKjvuI8gUnVuIGBucG0gcnVuIHBsYXl3cmlnaHQ6dGVzdGAgdG8gcnVuIHRlc3RzIHVzaW5nIHBsYXl3cmlnaHQgY2xpCi0g8J+TiyBSdW4gYG5wbSBydW4gcGxheXdyaWdodDpyZXBvcnRgIHRvIHZpZXcgcGxheXdyaWdodCByZXBvcnQKCiMjIyDwn5SnIFNldHVwIHRvIHVzZSBhIFNpbmdsZSBQdXp6bGUgZm9yIERlYnVnZ2luZwoKLSBJbiB0aGUgYHN1ZG9rdXJ1L2FwcC9BcGkvUHV6emxlcy50c2AgZmlsZSwgdGhlIGBzdGFydEdhbWVgIGZ1bmN0aW9uIGNhbiBiZSBtb2RpZmllZCBzbyB0aGF0IG9ubHkgYSBzaW5nbGUgZ2FtZSBpcyB1c2VkLgotIFJlcGxhY2UgYHJldHVybkdhbWVPZkRpZmZpY3VsdHkoZGlmZmljdWx0eSlgIHdpdGggYHJldHVybkdhbWVPZkRpZmZpY3VsdHkoImRldiIpYCBhbmQgdGhlIGRldiBwdXp6bGUgd2lsbCBiZSByZXRyaWV2ZWQuCi0gVGhlIGByZXR1cm5HYW1lT2ZEaWZmaWN1bHR5YCBmdW5jdGlvbiBjYW4gYWxzbyBiZSBtb2RpZmllZCB0byByZXR1cm4gYSBkZXNpcmVkIHB1enpsZS4gQnkgZGVmYXVsdCwgaXQgcmV0dXJucyB0aGUgZmlyc3QgYG5vdmljZWAgcHV6emxlLgoKIyMg8J+boe+4j/CfkLYgUnVuIFNueWsgc2NhbnMKClRoZSBjb21tYW5kIHRvIHJ1biBhIFNueWsgT3BlbiBTb3VyY2Ugc2NhbiBpcyBgbnBtIHJ1biBzbnlrOm9wZW5zb3VyY2VgCgpUaGUgY29tbWFuZCB0byBydW4gYSBTbnlrIGNvZGUgc2NhbiBpcyBgbnBtIHJ1biBzbnlrOmNvZGVgCgpFeGlzdGluZyBpc3N1ZXMgaW4gdGhlIG1haW4gYnJhbmNoIGNhbiBiZSBbdmlld2VkIGhlcmVdKGh0dHBzOi8vYXBwLnNueWsuaW8vb3JnL3N1ZG9rdXJ1KQoKIyMg8J+TpiBBbmFseXppbmcgQnVuZGxlIHNpemUgd2l0aCBBdGxhcwoKVG8gc2VlIHRoZSBkZXYgYnVuZGxlIHNpemUsIHJ1biBgbnBtIHJ1biBzdGFydDphdGxhc2AKClRvIHNlZSB0aGUgcHJvZHVjdGlvbiBidW5kbGUgc2l6ZSwgcnVuIGBucG0gcnVuIHN0YXJ0OmF0bGFzOnByb2RgCgpOb3RlIC0gSSB3YXMgbm90IGFibGUgdG8gZ2V0IHRoZSBgLS1uby1kZXZgIGZsYWcgd29ya2luZyB3aXRoIGFuZHJvaWQsIGJ1dCBpdCB3b3JrcyBmb3Igd2ViIGFuZCBpb3MuCgpDb25uZWN0IHRvIGV4cG8gd2l0aCB0aGUgZGVzaXJlZCBkZXZpY2UgdG8gc2VlIHRoZSBidW5kbGUgc2l6ZSBhbmQgcGFja2FnZSByYXRpb3MuCgpZb3Ugd2lsbCBuZWVkIHRvIG5hdmlnYXRlIHRvIHRoZSBmb2xsb3dpbmcgdXJsOiBodHRwOi8vbG9jYWxob3N0OjgwODEvXF9leHBvL2F0bGFzCgpJdCBpcyBwb3NzaWJsZSB0byBzd2l0Y2ggYmV0d2VlbiBtdWx0aXBsZSBidW5kbGUgdHlwZXMgaW4gdGhlIGF0bGFzIFVJIGZvciBjb21wYXJpc29uLgoKaU9TIEV4YW1wbGU6ICAKIVthbHQgdGV4dF0oZG9jcy9pbWcvYXRsYXMtaW9zLnBuZykKCkFuZHJvaWQgRXhhbXBsZTogIAohW2FsdCB0ZXh0XShkb2NzL2ltZy9hdGxhcy1hbmRyb2lkLnBuZykKCldlYiBFeGFtcGxlOiAgCiFbYWx0IHRleHRdKGRvY3MvaW1nL2F0bGFzLXdlYi5wbmcpCgojIFRpcHMgZm9yIHVwZGF0aW5nIEV4cG8gdmVyc2lvbgoKMS4gUmVhZCB0aHJvdWdoIHRoZSBFeHBvIHJlbGVhc2UgYmxvZyBwb3N0LgoyLiBXaGVuIHVwZGF0aW5nIGRlcGVuZGVuY2llcywgZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5vIG5lc3RlZCBgbm9kZV9tb2R1bGVzYCBmb2xkZXJzIC0gdGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIGBub2RlX21vZHVsZWAgZm9sZGVyIGluc2lkZSBvZiByb290LiBUcnkgcnVubmluZyBjb21tYW5kcyBgbnBtIGRlZHVwZWAgYW5kIGBucG0gbGlzdCA8cGFja2FnZV9uYW1lPmAgdG8gaGVscCBkZWJ1ZyBpc3N1ZXMsIGFzIGEgbGlrZWx5IGNhdXNlIG9mIG11bHRpcGxlIGBub2RlX21vZHVsZXNgIGZvbGRlcnMgZ2VuZXJhdGluZyBpcyBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBwYWNrYWdlLiAKCiMg8J+bo++4jyBSb2FkbWFwCgojIyBHaXRodWIgUHJvamVjdCBLYW5iYW4gQm9hcmRzCgpXZSBvcmdhbml6ZSBvdXIgZnV0dXJlIHdvcmsgdXNpbmcgdGhlIFtGcm9udGVuZCBHaXRodWIgUHJvamVjdCBCb2FyZF0oaHR0cHM6Ly9naXRodWIuY29tL29yZ3MvU3Vkb2t1cnUvcHJvamVjdHMvNC92aWV3cy8xKSB3aGljaCB3ZSBjdXJyZW50bHkgaGF2ZSBkaXZpZGVkIGludG8gdGhlIGZvbGxvd2luZyBjb2x1bW5zLiBXZSBhbHNvIGFwcGx5IGxhYmVscyB3aGljaCBhcmUgW2RvY3VtZW50ZWQgaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL1N1ZG9rdXJ1L0Zyb250ZW5kL2xhYmVscykgYW5kIHdvcmsgdG93YXJkcyBtaWxlc3RvbmVzIFtsaXN0ZWQgaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL1N1ZG9rdXJ1L0Zyb250ZW5kL21pbGVzdG9uZXMpLgoKIyMjIPCfkqEgQmFja2xvZwoKVGhpcyBpcyB0aGUgZ2VuZXJhbCBidWNrZXQgZm9yIGV2ZXJ5dGhpbmcgdGhhdCB3ZSBhcmUgY29uc2lkZXJpbmcgZG9pbmcgc29tZWRheSBidXQgZG9lcyBub3QgZml0IGludG8gYW55IG9mIHRoZSBmb2xsb3dpbmcgYm9hcmRzLgoKIyMjIOKame+4jyBJbiBkZXZlbG9wbWVudAoKVGhpcyBpcyBmb3IgYWxsIHRoZSB0aWNrZXRzIHdlIGFyZSBjdXJyZW50bHkgd29ya2luZy4gUmVxdWlyZXMgYW4gYWNjZXB0YW5jZSBjcml0ZXJpYSB0byBiZSBhZGRlZCB0byB0aGUgZGVzY3JpcHRpb24gYXQgdGhpcyBzdGFnZS4KCiMjIyDwn5qiIFNoaXBwZWQKClRoaXMgaXMgZm9yIGFsbCB0aGUgY29vbCB0aGluZ3Mgd2UgaGF2ZSBhbHJlYWR5IGFjY29tcGxpc2hlZCEK readmeEtag: '"850d44c2ebbd2cf654bdb74f8618fa0ca0fe4e8a"' readmeLastModified: Fri, 07 Nov 2025 02:10:59 GMT repositoryId: 559579865 description: null created: '2022-10-30T14:59:36Z' updated: '2026-01-23T01:25:02Z' language: TypeScript archived: false stars: 3 watchers: 0 forks: 1 owner: Sudokuru logo: https://avatars.githubusercontent.com/u/114212382?v=4 license: AGPL-3.0 repoEtag: '"cbf3caccca4f77e2205020940b1bf544053b721a66496b8f5db54f37301160de"' repoLastModified: Fri, 23 Jan 2026 01:25:02 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/seandavi/cmgd_web v3: true repositoryMetadata: repositoryId: 296348041 description: Web portal and API for the Curated Metagenomics Data project created: '2020-09-17T14:16:44Z' updated: '2024-07-12T06:24:26Z' language: Python archived: false stars: 0 watchers: 2 forks: 0 owner: seandavi logo: https://avatars.githubusercontent.com/u/92435?v=4 repoEtag: '"90aebd6e3188392b7718c63e322d346f844e02f96f796d0234354739da1ba7fb"' repoLastModified: Fri, 12 Jul 2024 06:24:26 GMT foundInMaster: true id: fb4fed9b0a7ae53a122c03126af2f4d0 - source: openapi3 tags repository: https://github.com/aqib1/currencyconvertor v3: true repositoryMetadata: base64Readme: >- IyBDdXJyZW5jeUNvbnZlcnRvcgoKIyBUYXNrCkxldCdzIHdhbGsgdGhyb3VnaCB0aGlzIHRhc2s6IAoxLiBDcmVhdGUgYSBuZXcgSmF2YSAvIEtvdGxpbiBNaWNyby1TZXJ2aWNlIEFwcGxpY2F0aW9uLCB1dGlsaXppbmcgU3ByaW5nIEJvb3QuIAoyLiBTZXJ2ZSB0aGUgZm9sbG93aW5nIEFQSSBlbmRwb2ludHM6IAogICBPdXRwdXQgdGhlIGN1cnJlbnQgdGltZSAoYXMgdmFsaWQgSlNPTikgQ29udmVydCBjdXJyZW5jeSBpbnB1dHMgZW5kcG9pbnQ6ICAvYXBpL2N1cnJlbmN5L2NvbnZlcnQgCiAgIGlucHV0czoKICAgICAgICBhbW91bnQgKGluIHNvdXJjZS1jdXJyZW5jeSksIHNvdXJjZS1jdXJyZW5jeSwgdGFyZ2V0LWN1cnJlbmN5IAogICBvdXRwdXQ6IAogICAgICAgIGFtb3VudCBpbiB0YXJnZXQtY3VycmVuY3kgKGFzIHZhbGlkIEpTT04pIHlvdSBtYXkgdXNlIHN0YXRpYyBjb252ZXJzaW9uIGRhdGEgb3IgY29ubmVjdCB0byBhIHB1YmxpYyBjb252ZXJ0ZXIgKGUuZy4gaHR0cHM6Ly9jdXJyZW5jeWxheWVyLmNvbS9kb2N1bWVudGF0aW9uKSBWYWxpZGF0ZSBhIFZBVCBpbnB1dCBhbmQgcmV0dXJuIGlucHV0OiBwb3RlbnRpYWwgVkFUIG51bWJlciBvdXRwdXQ6IGNvdW50cnkgKGNvZGUpIGZvciBWQVQgbnVtYmVyIChhcyB2YWxpZCBKU09OKSB5b3UgbWF5IHVzZSBhIHN0YXRpYyBtYXBwaW5nIG9yIGNvbm5lY3QgdG8gYSBwdWJsaWMgYXBpIChlLmcuIGh0dHBzOi8vYXBpLmNsb3VkbWVyc2l2ZS5jb20vc3dhZ2dlci9pbmRleC5odG1sPyB1cmxzLnByaW1hcnlOYW1lPVZhbGlkYXRlJTIwQVBJKSAKMy4gQWRkIHVuaXQtdGVzdCBjb3ZlcmFnZSBhcyBhcHByb3ByaWF0ZS4gCjQuIEVuc3VyZSB0aGUgc2VydmljZSBjYW4gYmUgYnVpbHQsIHRlc3RlZCwgYW5kIHJ1bi4gVGhlIHNlcnZpY2Ugc2hvdWxkIHJ1biBvbiBwb3J0IDgwODEgCgpCT05VUzogCmluY29ycG9yYXRlIGFuIGVtYmVkZGVkIERCL2NhY2hpbmcgbGF5ZXIgZm9yIHlvdXIgQVBJIGVuZHBvaW50cyAKQk9OVVM6IApUaGUgc2VydmljZSBpbmNsdWRlcyBhdXRvZ2VuZXJhdGVkIHN3YWdnZXIgZG9jdW1lbnRhdGlvbi4gCgo1LiBBZGQgYSBSRUFETUUgdG86IGRlc2NyaWJlIHRoZSBhcHBsaWNhdGlvbiwgdGhlIHByZS1yZXF1aXNpdGVzLCBob3cgdG8gcnVuIGl0LCBhZGRpdGlvbmFsIG5vdGVzLCBldGMuIAo2LiBQYWNrYWdlIHRoZSBhcHAgYW5kIHNoYXJlIGEgZG93bmxvYWQgbGluayB0byB0aGUgc291cmNlLWNvZGUgb3IgcHJpdmF0ZSBHaXRIdWIgcmVwb3NpdG9yeS4gCgpXQVJOSU5HOiBETyBOT1QgSU5DTFVERSBUSEUgQlVJTEQvT1VUUFVULiBXZSBleHBlY3QgdG8gYmUgYWJsZSB0byBidWlsZCwgdGVzdCwgYW5kIHJ1biBpdCBvdXJzZWx2ZXMuIFBsZWFzZSBkbyBub3QgbWFrZSB0aGUgc291cmNlLWNvZGUgcHVibGljLiAKQk9OVVM6IGRvY2tlcml6ZSB5b3VyIGFwcGxpY2F0aW9uIChpLmUuIGluY2x1ZGUgYSBEb2NrZXLvrIFsZSwgZG9ja2VyLWNvbXBvc2UueW1sLCBhbmQgcmVsZXZhbnQgUkVBRE1FIGluc3RydWN0aW9ucykKCiMgU29sdXRpb24KRm9yIGltcGxlbWVudGF0aW9uIGFzIE1pY3JvLXNlcnZpY2UgYXJjaGl0ZWN0dXJlLCBTcHJpbmcgY2xvdWQgdGVjaG5vbG9neSBpcyB1c2VkLCBOZXRmbGl4IEV1cmVrYSBzZXJ2ZXIgaXMgdXNlZCBmb3Igc2VydmljZSByZWdpc3RyeS4gCkZvciB0aGUgc2FrZSBvZiB0aGlzIHRhc2ssIGEgc2luZ2xlIG1pY3JvLXNlcnZpY2UgYXMgdGhlIGV1cmVrYSBjbGllbnQgaXMgY3JlYXRlZCBhbG9uZyB3aXRoIGEgZXVyZWthIHNlcnZlci4KVGhlIGNvbXBsZXRlIGFwcGxpY2F0aW9uIGlzIGNyZWF0ZWQgdXNpbmcgdGhlIHRlc3QtZHJpdmVuIGFwcHJvYWNoLiBUaGF0J3MgaXMgdGhlIHJlYXNvbiBhcHBsaWNhdGlvbiBjb250YWlucyBhIGxhcmdlIG51bWJlciBvZiB0ZXN0IGNhc2VzLgpJbiBuZXRmbGl4LWNsaWVudCwgdHdvIGNvbnRyb2xsZXJzIGFyZSB3cml0dGVuLCB3aGljaCBkZXRhaWxzIG9uIGFic3RyYWN0aW9uIGxldmVsIGlzIGdpdmVuIGhlcmVpbmFmdGVyLiBBUEkgaXMgY29uZmlndXJlZCBvbiBwb3J0IDgwODEKIC0gQ3VycmVuY3lDb252ZXJ0ZXJDb250cm9sbGVyCiAtIFZBVENvbnRyb2xsZXIKIApDdXJyZW5jeUNvbnZlcnRlckNvbnRyb2xsZXIgaXMgYSByZXN0IGNvbnRyb2xsZXIgd2hpY2ggZnVydGhlciBjb25zaXN0cyBvZiB0d28gdHlwZXMgb2YgQVBJLCBrZWVwIGluIG1pbmQgdGhhdCBlYWNoIHJlc3QgQVBJIGlzIGNyZWF0ZWQgd2hpbGUga2VlcGluZyBpbiBtaW5kIG9mIHRoZSAybmQtZGVncmVlIG1hdHVyaXR5IGxldmVsIG9mICBSZXN0IEFQSSBsZXZlbCBkZWZpbmVkIGJ5IFJpY2hhcmRzb24sIEluIGZ1dHVyZSBjb21taXRzLCBBUEkgd2lsbCBiZSB1cGdyYWRlZCB0byAzcmQgZGVncmVlIHVzaW5nIEhBVEVPQVMuCgoxLSBBUEkgZG9jdW1lbnRhdGlvbnMgYW5kIGRldGFpbHMgYXJlIGNyZWF0ZWQgdXNpbmcgc3dhZ2dlciAzLjAsIGNvbW1vbiBvYmplY3RzIGFyZSB1c2luZyBjcmVhdGVkIGJ5IHN3YWdnZXIgMy4wLiBTd2FnZ2VyIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBwbGFjZWQgdW5kZXIgcmVzb3VyY2VzIHdpdGggdGhlIG5hbW1lIG9mIGFwaS55YW1sCgoyLSBMb2dnaW5nIGFsc28gaW1wbGVtZW50YXRlZCB3aXRoIHJvbGxpbmcgZmlsZSBwb2xpY3kuIGl0cyBjb25maWd1cmF0aW9uIGlzIGFsc28gYXZhaWxhYmxlIHVuZGVyIHJlc291cmNlIGZvbGRlci4KCjMtIEtlZXAgaW4gbWluZCB0aGF0IHlvdSBhcmUgbm90IGFibGUgdG8gcnVuIGFwcGxpY2F0aW9uIHVudGlsIHlvdSBkaWQgbm90IHN0YXJ0IHRoZSBldXJla2Egc2VydmVyLCBhcyB0aGUgY2xpZW50IG5lZWRzIHRvIHJlZ2lzdGVyIGl0c2VsZiB3aXRoIHRoZSBzZXJ2ZXIgKGNvbmZpZ3VyYXRpb24gcHJvdmlkZWQgaW4gdGhlIGFwcGxpY2F0aW9uKS4KCjQtIEZvciBjdXJyZW5jeSBjb252ZXJzaW9uIGFuZCB2YXQgdmFsaWRhdGlvbiB0d28gZGlmZmVyZW50IGZyZWUgQVBJIHVzZWQsIFRob3NlIEFQSSBhcmUgY29ubmVjdGVkIHVzaW5nIE5ldGZsaXgtRmVpZ24gZGVjbGFyYXRpdmUgSFRUUCBjbGllbnQgd2hpY2ggaXMgYWxzbyB0aGUgcGFydCBvZiBTcHJpbmcgY2xvdWQgdGVjaG5vbG9neS4KCjUtIEZvciBjYWNoZSBIMi1EYXRhYmFzZSB1c2VkIGFzIGluIG1lbW9yeSBkYXRhYmFzZS4gVG8gYXZvaWQgYW55IGRpcnR5IHJlYWRzL3dyaXRlLCBwaGFudG9tIHJlYWRzLCByZXBlYXRlZCByZWFkcywgSmF2YSBSZWFkV3JpdGVSZWVudGVyZW50TG9jayBpcyB1c2VkLgoKNi0gQ29udHJvbGxlciBhZHZpY2UgaXMgd3JpdHRlbiB0byBoYW5kbGUgZXhjZXB0aW9uIGFuZCBzZW5kIHJlc3BlY3RpdmUgcmVzcG9uc2UuCgo3LSBTcHJpbmcgQU9QIGlzIHVzZWQgdG8gbG9nZ2luZyBlYWNoIG1ldGhvZCBlbnRlcmVuY2UgYW5kIGV4aXQuCgo4LSBTcHJpbmcgc2NoZWR1bGVyIGlzIHdyaXR0ZXIgdG8gc2NoZWR1bGUgY2FjaGUgcmVmcmVzaGVyIHdpdGggYSBzcGVjaWZpYyB0aW1lIGludGVydmFsLgoKOS0gU3ByaW5nIGJvb3QgZG9ja2VyaXphdGlvbiBpcyBhZGRlZCB1c2luZyBzcG90aWZ5IG1hdmVuIHBsdWdpbiBmb3IgZG9ja2VyLCBieSBydW5uaW5nIGNvbW1hbmQgbXZuIHBhY2thZ2UgZG9ja2VyOmJ1aWxkLgpBZnRlciBjcmVhdGluZyBpbWFnZSB5b3UgY2FuIHNlZSBpbWFnZSBpbiB5b3VyIGRvY2tlciBieSBkb2NrZXIgaW1hZ2UgbHMuIE5vdyBsZXRzIGFkZCB0YWcgdG8gdGhhdCBpbWFnZSBieSBjb21tYW5kIGRvY2tlciB0YWcgaW1hZ2VfaWQgVEFHX05BTUUuIEFmdGVyIHRoYXQgeW91IGNhbiBwdXNoIGltYWdlIHRvIHlvdXIgZG9ja2VyIGh1YiBieSBkb2NrZXIgcHVzaCBUQUdfTkFNRQoKIyBEb2NrZXIgaW1hZ2UKQXBwbGljYXRpb24gaXMgY29tcGxldGVseSBkb2NrZXJpemUgYW5kIGltYWdlcyBhcmUgdXBsb2FkZWQgdG8gZG9ja2VyLWh1YiB3aXRoIHRoZSBuYW1lIGFxaWJidXR0MzA3OC9jY3ZhdGFwaSBmb3IgbWljcm8tc2VydmljZSBldXJla2EgY2xpZW50IGFuZCBhcWliYnV0dDMwNzgvY2N2YXRhcGlfZXVyZWthIGZvciBldXJrYSBzZXJ2ZXIKIAojIEN1cnJlbmN5IENvbnZlcnRlcgpDdXJyZW5jeSBDb252ZXJ0ZXIgQVBJIGNvbnNpc3RzIG9uIHR3byBBUEkncyAKLSAvYXBpL2N1cnJlbmN5L2NvbnZlcnQ/c291cmNlPVNPVVJDRV9DT1VOVFJZX0NPREUmdGFyZ2V0PVRBUkdFVF9DT1VOVFJZX0NPREUmYW1vdW50PUFNT1VOVF9OVU1CRVIKLSAvYXBpL2N1cnJlbmN5L2NvbnZlcnQvZGV0YWlscz9zb3VyY2U9U09VUkNFX0NPVU5UUllfQ09ERSZ0YXJnZXQ9VEFSR0VUX0NPVU5UUllfQ09ERSZhbW91bnQ9QU1PVU5UX05VTUJFUgoKRmlyc3QgQVBJIHdpbGwgZ29pbmcgdG8gcmV0dXJuIGNvbnZlcnRpb24gZGV0YWlsZXMgYXMgaXQgd2FzIGFza2VkIGluIHRhc2ssIHNlY29uZCBBUEkgcmV0dXJuIGRldGFpbHMgd2l0aCBzb21lIGFkZGl0aW9uYWwgaW5WQVRfSUQKIyBWQVRDb250cm9sbGVyClZBVENvbnRyb2xsZXIgYWxzbyBwcm92aWRlcyB0d28gQVBJJ3MgCi0gL2FwaS92YXQvdmFsaWRhdGU/dmF0PVZBVF9JRAotIC9hcGkvdmF0L3ZhbGlkYXRlL2RldGFpbHM/dmF0PVZBVF9JRAojIFRlc3RpbmcKRm9yIGVhY2ggY2xhc3MsIG1ldGhvZHMgdW5pdCB0ZXN0cyBhcmUgcHJvdmlkZWQuIEFzIGFwcGxpY2F0aW9uIGlzIGJ1aWxkIHVzaW5nIHJlZC1ncmVlbi1yZWZhY3RvciBzb3J0IG9mIHRlc3QgZHJpdmVuIGFwcHJvYWNoLCBzbyB0aGF0cyBhIHJlYXNvbiBpdCBoYXZlIGFsb3Qgb2YgdGVzdCBjYXNlcy4KSW50ZWdyYXRpb24gdGVzdCBmb3IgUmVzdCBBUEkgaXMgcHJvdmlkZWQgc2VwcmVhdGx5LgojIEFsbCBjdXJyZW5jaWVzIHN1cHBvcnRlZApQbGVhc2UgY2xpY2sgdGhlIHVybCB0byBzZWUgYWxsIGN1cnJlbmNpZXMgbGlzdApodHRwczovL2ZyZWUuY3VycmNvbnYuY29tL2FwaS92Ny9jb3VudHJpZXM/YXBpS2V5PTQ3NTRjOGZhOGMwZDhlMDhjNjU4Cg== readmeEtag: '"ddf9047507cbc3aff90980958bcdfe61d4ab89b9"' readmeLastModified: Thu, 26 Sep 2019 07:33:04 GMT repositoryId: 208506319 description: null created: '2019-09-14T21:31:22Z' updated: '2019-10-17T02:23:17Z' language: HTML archived: false stars: 0 watchers: 1 forks: 0 owner: aqib1 logo: https://avatars.githubusercontent.com/u/8742169?v=4 repoEtag: '"397d4edfc614a2fabe9ca637595a69a44404fff9adb0f27efa0eaaf4ba4eb6d2"' repoLastModified: Thu, 17 Oct 2019 02:23:17 GMT foundInMaster: true category: Server Implementations id: b21b7ab96e0c1b7078783685d6213fed - source: openapi3 tags repository: https://github.com/nicesi/openapi-ui-single-file v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFVJCgoqIFNpbmdsZSBmaWxlCiogVWx0cmEgbGlnaHQtd2VpZ2h0CgpDYW4gdXNlIGl0IGluIDMgZGlmZmVyZW50IHdheXMKCjEuIEdvIHRvIGh0dHBzOi8vbmljZXNpLmNvbS9vcGVuYXBpLXVpIGFuZCBlbnRlciBvcGVuYXBpKHN3YWdnZXIpIGZpbGUgdXJsCjIuIGh0dHBzOi8vbmljZXNpLmNvbS9vcGVuYXBpLXVpP3VybD1odHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uCjMuIEVkaXQgdXJsIGZpZWxkIGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNlc2kvb3BlbmFwaS11aS1zaW5nbGUtZmlsZS9ibG9iL21hc3Rlci9pbmRleC5odG1sI0wzOSAuL3N3YWdnZXIuanNvbiAoZmlsZXBhdGgpIE9SIGh0dHBzOi8veW91ci1vcGVuYXBpLWZpbGUuanNvbiAoVVJMKQo= readmeEtag: '"b0c9424a417ed1ff99789241acc650421daac773"' readmeLastModified: Mon, 05 Oct 2020 18:00:23 GMT repositoryId: 291342065 description: null created: '2020-08-29T20:13:23Z' updated: '2020-10-05T18:00:49Z' language: HTML archived: false stars: 0 watchers: 1 forks: 0 owner: nicesi logo: https://avatars.githubusercontent.com/u/13571949?v=4 license: MIT repoEtag: '"4c45d3fd6eb567f0e489de1bd0f8b43a157c624d379255abddfb497de53e0018"' repoLastModified: Mon, 05 Oct 2020 18:00:49 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: b790e4afd85397b8d62572064ce78d3a - source: openapi3 tags repository: https://github.com/david-rojo/pvp-manager v3: true repositoryMetadata: base64Readme: >- IyBQVlAgTWFuYWdlcgoKVGhpcyBpcyBhIEphdmEgOCBwcm9qZWN0IHRoYXQgZXhwb3NlcyBhIFJFU1QgQVBJIGRvY3VtZW50ZWQgd2l0aCBPcGVuQVBJLCBkZXZlbG9wZWQgd2l0aCBTcHJpbmdCb290IDIuMy4xIHVzaW5nIEgyIGRhdGFiYXNlIGZvciBwZXJzaXN0ZW5jeSB3aXRoIGFuIGluaXRpYWwgbG9hZCBvZiBkYXRhLiBJdCBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgW3NjZW5hcmlvXShkb2Mvc2NlbmFyaW8ubWQpLiAKCkl0IGhhcyBiZWVuIGRvbmUgZm9sbG93aW5nIHRoZSBNVkMgZGVzaWduIHBhdHRlcm4gYW5kIHVzaW5nIFtTcHJpbmcgVG9vbCBTdWl0ZSA0XShodHRwczovL3NwcmluZy5pby90b29scykKCiMjIEgyIGRhdGFiYXNlCgpGb3IgKipwcmltYXJ5IGtleSoqIG9mIHRoZSAqKlBSSUNFUyoqIHRhYmxlIGhhcyBiZWVuIGNob3NlbiB0aHJlZSBmaWVsZHM6IEJSQU5EX0lELCBQUk9EVUNUX0lEIGFuZCBQUklDRV9MSVNULiBUaGlzIGRlY2lzaW9uIGhhcyBiZWVuIGRvbmUgdGhpbmtpbmcgdGhhdCBjYW5ub3QgYmUgYSByb3cgaW4gdGhlIHRhYmxlIHRoYXQgaGFzIHRoZSBzYW1lIHZhbHVlcyBmb3IgdGhlc2UgZmllbGRzLgoKRGF0YSB0eXBlcyBmb3IgZWFjaCBmaWVsZDoKCnwgRklFTEQgICAgICB8IERBVEEgVFlQRSAgICB8CnwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18CnwgQlJBTkRfSUQgICB8IElOVEVHRVIgICAgICB8CnwgUFJJQ0VfTElTVCB8IElOVEVHRVIgICAgICB8CnwgUFJPRFVDVF9JRCB8IElOVEVHRVIgICAgICB8CnwgUFJJT1JJVFkgICB8IElOVEVHRVIgICAgICB8CnwgU1RBUlRfREFURSB8IFRJTUVTVEFNUCAgICB8CnwgRU5EX0RBVEUgICB8IFRJTUVTVEFNUCAgICB8CnwgUFJJQ0UgICAgICB8IERPVUJMRSAgICAgICB8CnwgQ1VSUiAgICAgICB8IFZBUkNIQVIoMjU1KSB8CgojIyBEZXBsb3ltZW50CgpPbmNlIHRoYXQgdGhlIHJlcG9zaXRvcnkgaGFzIGJlZW4gY2xvbmVkOgoKYGBgCiQgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZpZC1yb2pvL3B2cC1tYW5hZ2VyLmdpdApgYGAKCmltcG9ydCB0aGUgcHJvamVjdCBpbiB5b3VyIElERSBhbmQgdG8gZXhlY3V0ZSBpdCwgcmlnaHQgY2xpY2sgb2YgdGhlIG1vdXNlIGluICoqc3ByaW5nLWJvb3QtcHZwbWFuYWdlcioqIGZvbGRlciBpbiBQYWNrYWdlIEV4cGxvcmVyIHdpbmRvdyBhbmQgc2VsZWN0ICpSdW4gYXMgPiBTcHJpbmcgQm9vdCBBcHAqCgpUaGUgcHJvamVjdCBpcyBkZXBsb3llZCBhbmQgcmVhZHkgdG8gdmVyaWZ5IHRoYXQgaW1wbGVtZW50cyB0aGUgcmVxdWVzdGVkIHNjZW5hcmlvLiBZb3UgY2FuIGFjY2VzcyB0byBpdHMgZXhwb3NlZCBBUEkgaGVyZTogW2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9wdnAtbWFuYWdlci1hcGkuaHRtbF0oaHR0cDovL2xvY2FsaG9zdDo4MDgwL3B2cC1tYW5hZ2VyLWFwaS5odG1sKQoKIVtQVlAgTUFOQUdFUiBPUEVOIEFQSV0oZG9jL2ltZy9wdnAtbWFuYWdlci1vcGVuYXBpLnBuZykKClRvIHZlcmlmeSB0aGUgc2NlbmFyaW8sIHlvdSBjYW4gdGVzdCBpbiB0aGUgT3BlbkFQSSBVc2VyIEludGVyZmFjZSwgdGhlIGdldCBtZXRob2QgaW4gKipwdnAqKiBncm91cCB3cml0aW5nIG1hbnVhbGx5IGFsbCB0aGUgdmFsdWVzIG9yIHlvdSBjYW4gc2ltcGx5IGNsaWNrIGluIHRoZSBmb2xsb3dpbmcgbGlua3MgdGhhdCB1c2UgdGhlIHNhbWUgZGF0YSB0aGF0IGlzIHVzZWQgaW4gZWFjaCB0ZXN0OgoKKiAqKlRlc3QxKio6IGhhcyB0byByZXR1cm4gcHJpY2VMaXN0IDEKICAqIGlucHV0IGRhdGE6IGBgYGJyYW5kSWQgPSAxLCBwcm9kdWN0SWQ9MzU0NTUsIGRhdGU9MjAyMC0wNi0xNC0xMC4wMC4wMGBgYAogICogVVJMOiBbaHR0cDovL2xvY2FsaG9zdDo4MDgwL3B2cC1tYW5hZ2VyL3B2cC8xLzM1NDU1LzIwMjAtMDYtMTQtMTAuMDAuMDBdKGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9wdnAtbWFuYWdlci9wdnAvMS8zNTQ1NS8yMDIwLTA2LTE0LTEwLjAwLjAwKQogICogb3V0cHV0IGRhdGE6IAogIGBgYHsicHJpY2VMaXN0IjoxLCJicmFuZElkIjoxLCJwcm9kdWN0SWQiOjM1NDU1LCJzdGFydERhdGUiOiIyMDIwLTA2LTE0VDAwOjAwOjAwIiwiZW5kRGF0ZSI6IjIwMjAtMTItMzFUMjM6NTk6NTkiLCJwcmljZSI6MzUuNSwiY3VycmVuY3kiOiJFVVIifWBgYAoKKiAqKlRlc3QyKio6ICBoYXMgdG8gcmV0dXJuIHByaWNlTGlzdCAyCiAgKiBpbnB1dCBkYXRhOiBgYGBicmFuZElkID0gMSwgcHJvZHVjdElkPTM1NDU1LCBkYXRlPTIwMjAtMDYtMTQtMTYuMDAuMDBgYGAKICAqIFVSTDogW2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9wdnAtbWFuYWdlci9wdnAvMS8zNTQ1NS8yMDIwLTA2LTE0LTE2LjAwLjAwXShodHRwOi8vbG9jYWxob3N0OjgwODAvcHZwLW1hbmFnZXIvcHZwLzEvMzU0NTUvMjAyMC0wNi0xNC0xNi4wMC4wMCkKICAqIG91dHB1dCBkYXRhOiAKICBgYGB7InByaWNlTGlzdCI6MiwiYnJhbmRJZCI6MSwicHJvZHVjdElkIjozNTQ1NSwic3RhcnREYXRlIjoiMjAyMC0wNi0xNFQxNTowMDowMCIsImVuZERhdGUiOiIyMDIwLTA2LTE0VDE4OjMwOjAwIiwicHJpY2UiOjI1LjQ1LCJjdXJyZW5jeSI6IkVVUiJ9YGBgCiAgCiogKipUZXN0MyoqOiAgaGFzIHRvIHJldHVybiBwcmljZUxpc3QgMQogICogaW5wdXQgZGF0YTogYGBgYnJhbmRJZCA9IDEsIHByb2R1Y3RJZD0zNTQ1NSwgZGF0ZT0yMDIwLTA2LTE0LTIxLjAwLjAwYGBgCiAgKiBVUkw6IFtodHRwOi8vbG9jYWxob3N0OjgwODAvcHZwLW1hbmFnZXIvcHZwLzEvMzU0NTUvMjAyMC0wNi0xNC0yMS4wMC4wMF0oaHR0cDovL2xvY2FsaG9zdDo4MDgwL3B2cC1tYW5hZ2VyL3B2cC8xLzM1NDU1LzIwMjAtMDYtMTQtMjEuMDAuMDApCiAgKiBvdXRwdXQgZGF0YTogCiAgYGBgeyJwcmljZUxpc3QiOjEsImJyYW5kSWQiOjEsInByb2R1Y3RJZCI6MzU0NTUsInN0YXJ0RGF0ZSI6IjIwMjAtMDYtMTRUMDA6MDA6MDAiLCJlbmREYXRlIjoiMjAyMC0xMi0zMVQyMzo1OTo1OSIsInByaWNlIjozNS41LCJjdXJyZW5jeSI6IkVVUiJ9YGBgCiAgCiogKipUZXN0NCoqOiAgaGFzIHRvIHJldHVybiBwcmljZUxpc3QgMwogICogaW5wdXQgZGF0YTogYGBgYnJhbmRJZCA9IDEsIHByb2R1Y3RJZD0zNTQ1NSwgZGF0ZT0yMDIwLTA2LTE1LTEwLjAwLjAwYGBgCiAgKiBVUkw6IFtodHRwOi8vbG9jYWxob3N0OjgwODAvcHZwLW1hbmFnZXIvcHZwLzEvMzU0NTUvMjAyMC0wNi0xNS0xMC4wMC4wMF0oaHR0cDovL2xvY2FsaG9zdDo4MDgwL3B2cC1tYW5hZ2VyL3B2cC8xLzM1NDU1LzIwMjAtMDYtMTUtMTAuMDAuMDApCiAgKiBvdXRwdXQgZGF0YTogCiAgYGBgeyJwcmljZUxpc3QiOjMsImJyYW5kSWQiOjEsInByb2R1Y3RJZCI6MzU0NTUsInN0YXJ0RGF0ZSI6IjIwMjAtMDYtMTVUMDA6MDA6MDAiLCJlbmREYXRlIjoiMjAyMC0wNi0xNVQxMTowMDowMCIsInByaWNlIjozMC41LCJjdXJyZW5jeSI6IkVVUiJ9YGBgCiAgCiogKipUZXN0NSoqOiBoYXMgdG8gcmV0dXJuIHByaWNlTGlzdCA0CiAgKiBpbnB1dCBkYXRhOiBgYGBicmFuZElkID0gMSwgcHJvZHVjdElkPTM1NDU1LCBkYXRlPTIwMjAtMDYtMTYtMjEuMDAuMDBgYGAKICAqIFVSTDogW2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9wdnAtbWFuYWdlci9wdnAvMS8zNTQ1NS8yMDIwLTA2LTE2LTIxLjAwLjAwXShodHRwOi8vbG9jYWxob3N0OjgwODAvcHZwLW1hbmFnZXIvcHZwLzEvMzU0NTUvMjAyMC0wNi0xNi0yMS4wMC4wMCkKICAqIG91dHB1dCBkYXRhOiAKICBgYGB7InByaWNlTGlzdCI6NCwiYnJhbmRJZCI6MSwicHJvZHVjdElkIjozNTQ1NSwic3RhcnREYXRlIjoiMjAyMC0wNi0xNVQxNjowMDowMCIsImVuZERhdGUiOiIyMDIwLTEyLTMxVDIzOjU5OjU5IiwicHJpY2UiOjM4Ljk1LCJjdXJyZW5jeSI6IkVVUiJ9YGBgCgpJbXBsZW1lbnRhdGlvbiBvZiB0aGUgY29udHJvbGxlciBjYW4gYmUgZXhhbWluYXRlZCBpbiBbUHZwQXBpQ29udHJvbGxlcl0oc3ByaW5nLWJvb3QtcHZwbWFuYWdlci9zcmMvbWFpbi9qYXZhL2NvbS9wdnBtYW5hZ2VyL3NwcmluZ2Jvb3QvYXBwL2NvbnRyb2xsZXIvUHZwQXBpQ29udHJvbGxlci5qYXZhKSBjbGFzcwoKIyMjIEFkZGl0aW9uYWwgd29yawoKR29pbmcgYmV5b25kIHRoZSBzY29wZSBvZiB0aGUgc2NlbmFyaW8sIGEgZnVsbCBDUlVEIHNldCBvZiBvcGVyYXRpb25zIGhhcyBiZWVuIGltcGxlbWVudGVkIGZvciB0aGUgYXBwbGljYXRpb24gaW4gb3JkZXIgdG8gbWFuYWdlICoqUFJJQ0VTKiogdGFibGU6CgotIEFkZCBhIG5ldyBwcmljZS4KLSBVcGRhdGUgYW4gZXhpc3RpbmcgcHJpY2UuCi0gRGVsZXRlIGFuIGV4aXN0aW5nIHByaWNlIGJ5IElELgotIEdldCBhbGwgcHJpY2VzIGluIHRoZSB0YWJsZS4KCkltcGxlbWVudGlvbiBjYW4gYmUgZXhhbWluYXRlZCBpbiBbUHJpY2VBcGlDb250cm9sbGVyXShzcHJpbmctYm9vdC1wdnBtYW5hZ2VyL3NyYy9tYWluL2phdmEvY29tL3B2cG1hbmFnZXIvc3ByaW5nYm9vdC9hcHAvY29udHJvbGxlci9QcmljZUFwaUNvbnRyb2xsZXIuamF2YSkgY2xhc3MKCiMjIEFjY2VzcyB0byBoMiBjb25zb2xlCgpXaGVuIHRoZSBwcm9qZWN0IGlzIGRlcGxveWVkLCBhbHNvIGlzIGF2YWlsYWJsZSBoMiBjb25zb2xlOiBbaHR0cDovL2xvY2FsaG9zdDo4MDgwL2gyLWNvbnNvbGVdKGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9oMi1jb25zb2xlKSBpbiBvcmRlciB0byBjb25uZWN0IHRoZXJlIGFuZCB2ZXJpZnkgdGhhdCB0aGUgZGF0YWJhc2UgaW5pdGlhbGx5IGhhcyB0aGUgcmVxdWVzdGVkIGNvbnRlbnQuIAoKIVtIMiBDT05TT0xFXShkb2MvaW1nL2gyLWNvbnNvbGUtbG9naW4ucG5nKQoKVGhpcyBkYXRhIGNhbiBiZSB1c2VkIHRvIGxvZ2luOgpgYGAKRHJpdmVyIENsYXNzOglvcmcuaDIuRHJpdmVyCkpEQkMgVVJMOglqZGJjOmgyOm1lbTpwdnBtYW5hZ2VyZGI7REJfQ0xPU0VfT05fRVhJVD1GQUxTRQpVc2VyIE5hbWU6CXNhClBhc3N3b3JkOglwYXNzd29yZApgYGAKT25jZSB3ZSBhcmUgbG9nZ2VkLCB3ZSBjYW4gY2hlY2sgdGhlIGNvbnRlbnQgb2YgKipQUklDRVMqKiB0YWJsZSBleGVjdXRpbmcgdGhpcyBxdWVyeToKCmBgYApTRUxFQ1QgKiBGUk9NIFBSSUNFUyAKYGBgCgohW1BSSUNFUyBUQUJMRSBDT05URU5UXShkb2MvaW1nL2gyLXRhYmxlLWNvbnRlbnQucG5nKQoKIyMgRXhlY3V0aW5nIEpVbml0IHRlc3RzCgpUbyBydW4gdGhlIHJlcXVlc3RlZCB0ZXN0cyB3ZSBjYW4gZG8gaXQgZXhlY3V0aW5nIHRoaXMgY29tbWFuZCBmcm9tICoqc3ByaW5nLWJvb3QtcHZwbWFuYWdlcioqIGZvbGRlcjoKCmBgYAokIG12biB0ZXN0IApgYGAKPiAqKk5vdGU6KiogbXZuIGhhcyB0byBiZSBpbnN0YWxsZWQgaW4gb3JkZXIgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZAoKTmVhciBvZiB0aGUgZW5kIG9mIHRoZSBleGVjdXRpb24gbG9nLCB3ZSBjYW4gZmluZCB0aGlzIGxpbmU6CgpgYGAKW0lORk9dIFJlc3VsdHM6CltJTkZPXSAKW0lORk9dIFRlc3RzIHJ1bjogMTIsIEZhaWx1cmVzOiAwLCBFcnJvcnM6IDAsIFNraXBwZWQ6IDAKW0lORk9dIApgYGAKRGV0YWlsIG9mIGVhY2ggdGVzdCBjYW4gYmUgZm91bmQgcHJldmlvdXNseSBvZiB0aGlzIHRleHQgYWJvdmUuCgpGaXZlIHRlc3RzIGhhcyBiZWVuIHJlcXVlc3RlZCBpbiB0aGUgc2NlbmFyaW8sIHRlc3RpbmcgdGhlIHJlc3QgZW5kcG9pbnQsIGJ1dCB0aGUgcHJvamVjdCBjb250YWlucyBhbHNvIGFkZGl0aW9uYWwgdGVzdHMgdG8gY2hlY2sgdGhhdCBzZWxlY3Qgb3BlcmF0aW9ucyB0byBkYXRhYmFzZSB3b3JrcyBmaW5lLgoKSlVuaXRUZXN0cyBjbGFzc2VzOgoKKiBbUHZwQXBpQ29udHJvbGxlckludGVncmF0aW9uVGVzdHNdKHNwcmluZy1ib290LXB2cG1hbmFnZXIvc3JjL3Rlc3QvamF2YS9jb20vcHZwbWFuYWdlci9zcHJpbmdib290L2FwcC9QdnBBcGlDb250cm9sbGVySW50ZWdyYXRpb25UZXN0cy5qYXZhKTogCiAgICogdGVzdCB0aGUgcmVzdCBlbmRwb2ludC4gCiAgICogdXNpbmcgYGBgTW9ja012Y2BgYAogICAqICoqcmVxdWlyZWQqKiB0ZXN0cy4KCiogW0lQcmljZURhb1Rlc3RzXShzcHJpbmctYm9vdC1wdnBtYW5hZ2VyL3NyYy90ZXN0L2phdmEvY29tL3B2cG1hbmFnZXIvc3ByaW5nYm9vdC9hcHAvSVByaWNlRGFvVGVzdHMuamF2YSk6IAogICAqIHRlc3QgdGhlIHNlbGVjdCBvcGVyYXRpb25zIHRvIGRhdGFiYXNlLiAKICAgKiB1c2luZyBgYGBARGF0YUpwYVRlc3RgYGAKICAgKiAqKmFkZGl0aW9uYWwqKiB0ZXN0cwoK readmeEtag: '"158bc5f66afe1158aab583c50c4b6ab8d6ca5b9f"' readmeLastModified: Fri, 14 May 2021 23:47:29 GMT repositoryId: 274145786 description: >- Spring Boot project that exposes a REST API documented with OpenAPI, using H2 database for deployment and testing. created: '2020-06-22T13:32:52Z' updated: '2021-05-14T23:47:32Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: david-rojo logo: https://avatars.githubusercontent.com/u/24654236?v=4 license: MIT repoEtag: '"ce1b894d537ec692debd57130f27211594b7539989aac38eb2ccff889545210d"' repoLastModified: Fri, 14 May 2021 23:47:32 GMT foundInMaster: true category: Server Implementations id: 14028bea2f0274f45664e49ab5ab1f5b - source: openapi3 tags repository: https://github.com/aiveraiva/api-documents v3: true id: d8f6d3f5ec884958073766300cb69d0d repositoryMetadata: base64Readme: >- IyBpbSBsYXp5IHRvIGZpbmlzaCB0aGlzIGJ1dCBpIHdpbGwKCmBgYHlhbWwKdHlwZTogb2JqZWN0CnByb3BlcnRpZXM6CiAgaWQ6IAogICAgZGVzY3JpcHRpb246IFRoZSBjdXN0b21lciBpZGVudGlmaWVyIHN0cmluZwogICAgcmVhZE9ubHk6IHRydWUKICAgIGFsbE9mOgogICAgICAtICRyZWY6IC4vUmVzb3VyY2VJZC55YW1sCiAgd2Vic2l0ZUlkOgogICAgZGVzY3JpcHRpb246IFRoZSB3ZWJzaXRlJ3MgSUQKICAgIGFsbE9mOgogICAgICAtICRyZWY6IC4vUmVzb3VyY2VJZC55YW1sCiAgcGF5bWVudFRva2VuOgogICAgdHlwZTogc3RyaW5nCiAgICB3cml0ZU9ubHk6IHRydWUKICAgIGRlc2NyaXB0aW9uOiB8CiAgICAgIEEgd3JpdGUtb25seSBwYXltZW50IHRva2VuOyBpZiBzdXBwbGllZCwgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgaW50byBhCiAgICAgIHBheW1lbnQgaW5zdHJ1bWVudCBhbmQgYmUgc2V0IGFzIHRoZSBgZGVmYXVsdFBheW1lbnRJbnN0cnVtZW50YC4gVGhlCiAgICAgIHZhbHVlIG9mIHRoaXMgcHJvcGVydHkgd2lsbCBvdmVycmlkZSB0aGUgYGRlZmF1bHRQYXltZW50SW5zdHJ1bWVudGAKICAgICAgaW4gdGhlIGNhc2UgdGhhdCBib3RoIGFyZSBzdXBwbGllZC4gVGhlIHRva2VuIG1heSBvbmx5IGJlIHVzZWQgb25jZQogICAgICBiZWZvcmUgaXQgaXMgZXhwaXJlZC4KICBkZWZhdWx0UGF5bWVudEluc3RydW1lbnQ6CiAgICAkcmVmOiAuL1BheW1lbnRJbnN0cnVtZW50LnlhbWwKICBjcmVhdGVkVGltZToKICAgIGRlc2NyaXB0aW9uOiBUaGUgY3VzdG9tZXIgY3JlYXRlZCB0aW1lCiAgICBhbGxPZjoKICAgICAgLSAkcmVmOiAuL1NlcnZlclRpbWVzdGFtcC55YW1sCiAgdXBkYXRlZFRpbWU6CiAgICBkZXNjcmlwdGlvbjogVGhlIGN1c3RvbWVyIHVwZGF0ZWQgdGltZQogICAgYWxsT2Y6CiAgICAgIC0gJHJlZjogLi9TZXJ2ZXJUaW1lc3RhbXAueWFtbAogIHRhZ3M6CiAgICBkZXNjcmlwdGlvbjogQSBsaXN0IG9mIGN1c3RvbWVyJ3MgdGFncwogICAgcmVhZE9ubHk6IHRydWUKICAgIHR5cGU6IGFycmF5CiAgICBpdGVtczoKICAgICAgJHJlZjogLi9UYWdzL1RhZy55YW1sCiAgcmV2aXNpb246CiAgICBkZXNjcmlwdGlvbjogPgogICAgICBUaGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBjdXN0b21lciBkYXRhIGhhcyBiZWVuIG1vZGlmaWVkLgoKICAgICAgVGhlIHJldmlzaW9uIGlzIHVzZWZ1bCB3aGVuIGFuYWx5emluZyB3ZWJob29rIGRhdGEgdG8gZGV0ZXJtaW5lIGlmIHRoZQogICAgICBjaGFuZ2UgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBjdXJyZW50IHJlcHJlc2VudGF0aW9uLgogICAgdHlwZTogaW50ZWdlcgogICAgcmVhZE9ubHk6IHRydWUKICBfbGlua3M6CiAgICB0eXBlOiBhcnJheQogICAgZGVzY3JpcHRpb246IFRoZSBsaW5rcyByZWxhdGVkIHRvIHJlc291cmNlCiAgICByZWFkT25seTogdHJ1ZQogICAgbWluSXRlbXM6IDMKICAgIGl0ZW1zOgogICAgICBhbnlPZjoKICAgICAgICAtICRyZWY6IC4vTGlua3MvU2VsZkxpbmsueWFtbAogICAgICAgIC0gJHJlZjogLi9MaW5rcy9Ob3Rlc0xpbmsueWFtbAogICAgICAgIC0gJHJlZjogLi9MaW5rcy9EZWZhdWx0UGF5bWVudEluc3RydW1lbnRMaW5rLnlhbWwKICAgICAgICAtICRyZWY6IC4vTGlua3MvTGVhZFNvdXJjZUxpbmsueWFtbAogICAgICAgIC0gJHJlZjogLi9MaW5rcy9XZWJzaXRlTGluay55YW1sCiAgX2VtYmVkZGVkOgogICAgdHlwZTogYXJyYXkKICAgIGRlc2NyaXB0aW9uOiA+LQogICAgICBBbnkgZW1iZWRkZWQgb2JqZWN0cyBhdmFpbGFibGUgdGhhdCBhcmUgcmVxdWVzdGVkIGJ5IHRoZSBgZXhwYW5kYAogICAgICBxdWVyeXN0cmluZyBwYXJhbWV0ZXIuCiAgICByZWFkT25seTogdHJ1ZQogICAgbWluSXRlbXM6IDEKICAgIGl0ZW1zOgogICAgICBhbnlPZjoKICAgICAgICAtICRyZWY6IC4vRW1iZWRzL0xlYWRTb3VyY2VFbWJlZC55YW1sCgpgYGAKCmBgYHlhbWwKZ2V0OgogIHRhZ3M6CiAgICAtIEN1c3RvbWVycwogIHN1bW1hcnk6IFJldHJpZXZlIGEgbGlzdCBvZiBjdXN0b21lcnMKICBvcGVyYXRpb25JZDogR2V0Q3VzdG9tZXJDb2xsZWN0aW9uCiAgZGVzY3JpcHRpb246IHwKICAgIFlvdSBjYW4gaGF2ZSBhIG1hcmtkb3duIGRlc2NyaXB0aW9uIGhlcmUuCiAgcGFyYW1ldGVyczoKICAgIC0gJHJlZjogLi4vY29tcG9uZW50cy9wYXJhbWV0ZXJzL2NvbGxlY3Rpb25MaW1pdC55YW1sCiAgICAtICRyZWY6IC4uL2NvbXBvbmVudHMvcGFyYW1ldGVycy9jb2xsZWN0aW9uT2Zmc2V0LnlhbWwKICAgIC0gJHJlZjogLi4vY29tcG9uZW50cy9wYXJhbWV0ZXJzL2NvbGxlY3Rpb25GaWx0ZXIueWFtbAogICAgLSAkcmVmOiAuLi9jb21wb25lbnRzL3BhcmFtZXRlcnMvY29sbGVjdGlvblF1ZXJ5LnlhbWwKICAgIC0gJHJlZjogLi4vY29tcG9uZW50cy9wYXJhbWV0ZXJzL2NvbGxlY3Rpb25FeHBhbmQueWFtbAogICAgLSAkcmVmOiAuLi9jb21wb25lbnRzL3BhcmFtZXRlcnMvY29sbGVjdGlvbkZpZWxkcy55YW1sCiAgcmVzcG9uc2VzOgogICAgJzIwMCc6CiAgICAgIGRlc2NyaXB0aW9uOiBBIGxpc3Qgb2YgQ3VzdG9tZXJzIHdhcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5CiAgICAgIGhlYWRlcnM6CiAgICAgICAgUmF0ZS1MaW1pdC1MaW1pdDoKICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvaGVhZGVycy9SYXRlLUxpbWl0LUxpbWl0LnlhbWwKICAgICAgICBSYXRlLUxpbWl0LVJlbWFpbmluZzoKICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvaGVhZGVycy9SYXRlLUxpbWl0LVJlbWFpbmluZy55YW1sCiAgICAgICAgUmF0ZS1MaW1pdC1SZXNldDoKICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvaGVhZGVycy9SYXRlLUxpbWl0LVJlc2V0LnlhbWwKICAgICAgICBQYWdpbmF0aW9uLVRvdGFsOgogICAgICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9oZWFkZXJzL1BhZ2luYXRpb24tVG90YWwueWFtbAogICAgICAgIFBhZ2luYXRpb24tTGltaXQ6CiAgICAgICAgICAkcmVmOiAuLi9jb21wb25lbnRzL2hlYWRlcnMvUGFnaW5hdGlvbi1MaW1pdC55YW1sCiAgICAgICAgUGFnaW5hdGlvbi1PZmZzZXQ6CiAgICAgICAgICAkcmVmOiAuLi9jb21wb25lbnRzL2hlYWRlcnMvUGFnaW5hdGlvbi1PZmZzZXQueWFtbAogICAgICBjb250ZW50OgogICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvc2NoZW1hcy9DdXN0b21lci55YW1sCiAgICAgICAgdGV4dC9jc3Y6CiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvc2NoZW1hcy9DdXN0b21lci55YW1sCiAgICAnNDAxJzoKICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9yZXNwb25zZXMvQWNjZXNzRm9yYmlkZGVuLnlhbWwKICB4LWNvZGUtc2FtcGxlczoKICAgIC0gbGFuZzogUEhQCiAgICAgIHNvdXJjZToKICAgICAgICAkcmVmOiAuLi9jb2RlX3NhbXBsZXMvUEhQL2N1c3RvbWVycy9nZXQucGhwCnBvc3Q6CiAgdGFnczoKICAgIC0gQ3VzdG9tZXJzCiAgc3VtbWFyeTogQ3JlYXRlIGEgY3VzdG9tZXIgKHdpdGhvdXQgYW4gSUQpCiAgb3BlcmF0aW9uSWQ6IFBvc3RDdXN0b21lcgogIGRlc2NyaXB0aW9uOiBBbm90aGVyIG1hcmtkb3duIGRlc2NyaXB0aW9uIGhlcmUuCiAgcmVxdWVzdEJvZHk6CiAgICAkcmVmOiAuLi9jb21wb25lbnRzL3JlcXVlc3RCb2RpZXMvQ3VzdG9tZXIueWFtbAogIHJlc3BvbnNlczoKICAgICcyMDEnOgogICAgICAkcmVmOiAuLi9jb21wb25lbnRzL3Jlc3BvbnNlcy9DdXN0b21lci55YW1sCiAgICAnNDAxJzoKICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9yZXNwb25zZXMvQWNjZXNzRm9yYmlkZGVuLnlhbWwKICAgICc0MDknOgogICAgICAkcmVmOiAuLi9jb21wb25lbnRzL3Jlc3BvbnNlcy9Db25mbGljdC55YW1sCiAgICAnNDIyJzoKICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9yZXNwb25zZXMvSW52YWxpZERhdGFFcnJvci55YW1sCiAgeC1jb2RlLXNhbXBsZXM6CiAgICAtIGxhbmc6IFBIUAogICAgICBzb3VyY2U6CiAgICAgICAgJHJlZjogLi4vY29kZV9zYW1wbGVzL1BIUC9jdXN0b21lcnMvcG9zdC5waHAKYGBgCg== readmeEtag: '"c0a4150d348bc6e71584a55135f8b63c6c1b14ae"' readmeLastModified: Sun, 12 Nov 2023 06:57:19 GMT repositoryId: 704369516 description: The documentation for my api created: '2023-10-13T05:48:34Z' updated: '2024-12-10T11:59:50Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: AiverAiva logo: https://avatars.githubusercontent.com/u/43096905?v=4 license: MIT repoEtag: '"436d368dff34b9a8391be39c8eb4b148503000cb47803ea3f59b6df4adbb7be7"' repoLastModified: Tue, 10 Dec 2024 11:59:50 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/aiveraiva/documents - source: openapi3 tags repository: https://github.com/migoya2020/ecommerce-marketplace-api v3: true repositoryMetadata: base64Readme: >- IyBlY29tbWVyY2UtbWFya2V0cGxhY2UtYXBpCmVjb21tZXJjZSBBUEkgZGVzaWduLiBzdG9wbGlnaHQuaW8KCgojIHNjcmVlbnNob290CgohW2Rlc2lnbl0oZGVzaWduLnBuZykKZWNvbW1lcmNlIEFQSSBkZXNpZ24uCg== readmeEtag: '"98e1710fa6863d080593f518463bc4e005f03fa9"' readmeLastModified: Mon, 25 Nov 2019 07:28:51 GMT repositoryId: 217833221 description: ecommerce API design. stoplight.io created: '2019-10-27T09:39:04Z' updated: '2019-11-25T07:31:17Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: migoya2020 logo: https://avatars.githubusercontent.com/u/23479444?v=4 repoEtag: '"68f60c6a882d040fd60eaea18054ddf145e1ab9da1853bed945e25688f211bff"' repoLastModified: Mon, 25 Nov 2019 07:31:17 GMT foundInMaster: true category: - Documentation - Server Implementations id: 6e08ecdc8e0e5279b1e7510d40e29a51 - source: openapi3 tags repository: https://github.com/mrxz/javalin-openapi-apt v3: true repositoryMetadata: base64Readme: >- IyBqYXZhbGluLW9wZW5hcGktYXB0CkFubm90YXRpb24gcHJvY2Vzc2luZyB0byBnZW5lcmF0ZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gZnJvbSBzb3VyY2UgY29kZSB1c2luZyBbSmF2YWxpbl0oaHR0cHM6Ly9qYXZhbGluLmlvKS4KClRoaXMgYW5ub3RhdGlvbiBwcm9jZXNzb3IgdXNlcyBbSmF2YVBhcnNlcl0oaHR0cHM6Ly9naXRodWIuY29tL2phdmFwYXJzZXIvamF2YXBhcnNlcikgdG8gYW5hbHl6ZSB0aGUgd2F5IGEgcHJvamVjdCB1c2VzIEphdmFsaW4gYW5kIHRvIGdlbmVyYXRlIGEgY29ycmVzcG9uZGluZyBPcGVuQVBJIHYzIGRvY3VtZW50LgpJdCBjYW4gZGVyaXZlIHRoZSBwYXRocyAoaW5jbHVkaW5nIHBhdGggcGFyYW1ldGVycyksIHF1ZXJ5IHBhcmFtZXRlcnMsIHJlcXVlc3QgYm9keSBhbmQgdGhlIHJlc3BvbnNlIGJvZHkgKHdpdGggdGhlIGFwcHJvcGlhdGUgc2NoZW1hKS4KU29tZSBzaWduaWZpY2FudCBsaW1pdGF0aW9ucyBhcHBseSAoc2VlIExpbWl0YXRpb25zIHNlY3Rpb24gYmVsb3cpLiBUaGlzIHByb2plY3QgaXMgYSBwcm9vZiBvZiBjb25jZXB0LCBzbyB1c2FnZSBpbiBwcm9kdWN0aW9uIGlzIF9ub3RfIHJlY29tbWVuZGVkLgoKIyMgTGltaXRhdGlvbnMKKiBUaGUgcHJvY2Vzc29yIG9ubHkgd29ya3Mgd2l0aCBgamF2YWNgLgoqIFRoZSBgQXBpQnVpbGRlcmAgb2YgSmF2YWxpbiBtdXN0IGJlIHVzZWQgdG8gY29uc3RydWN0IHRoZSBwYXRocy4gT25seSBhIHNpbmdsZSBtZXRob2QgZm9yIHRoZSBmdWxsIHJvdXRpbmcgdHJlZSBpcyBzdXBwb3J0ZWQuCiogSGFuZGxlcnMgbXVzdCBiZSBwYXNzZWQgYXMgbWV0aG9kIHJlZmVyZW5jZXMgdG8gdGhlIGBBcGlCdWlsZGVyYCBtZXRob2RzLgoqIFBvbHltb3JwaGljIG1vZGVscyB3aWxsIG9ubHkgaGF2ZSB0aGVpciBiYXNlIGNsYXNzIGluIHRoZSByZXN1bHRpbmcgT3BlbkFQSSBkb2N1bWVudC4KKiBSZXF1aXJlZCBwcm9wZXJ0eSBvZiBwYXJhbWV0ZXJzIG9yIGZpZWxkcyBvbiBhIG1vZGVsIGFyZSBub3Qgc3VwcG9ydGVkLgoqIEhhbmRsZXJzIHRoYXQgY29uZGl0aW9uYWxseSByZXNwb25kIHdpdGggZGlmZmVyZW50IHR5cGVzIG9mIGJvZGllcyBvciByZXF1aXJlcyBkaWZmZXJlbnQgcGFyZW1ldGVycyBhcmVuJ3Qgc3VwcG9ydGVkLgoKVGhlIHByb2Nlc3NvciB0cmllcyB0byBncmFjZWZ1bGx5IGhhbmRsZSB1bnN1cHBvcnRlZCBjb25zdHJ1Y3Rpb25zIGJ5IHByb2R1Y2luZyBhIGRlc2NyaXB0aXZlIGVycm9yLgo= readmeEtag: '"7175c25bae3e489006cb92dfadaced8f7db704fc"' readmeLastModified: Sat, 23 Nov 2019 18:00:00 GMT repositoryId: 219295656 description: >- Annotation processing to generate OpenAPI specification from source code using Javalin created: '2019-11-03T12:13:49Z' updated: '2019-11-23T18:00:15Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: mrxz logo: https://avatars.githubusercontent.com/u/8823461?v=4 license: NOASSERTION repoEtag: '"c600d51287bff11dd3d0e72363faa8c5227bf392fdccb10a9dd4f1922489c07d"' repoLastModified: Sat, 23 Nov 2019 18:00:15 GMT foundInMaster: true category: Parsers id: fa727f7dd55a2b01c344fe34370ad87b - source: openapi3 tags repository: https://github.com/dkirrane/ibm-openapi-validator-docker v3: true repositoryMetadata: base64Readme: >- IyBpYm0tb3BlbmFwaS12YWxpZGF0b3IKCkRvY2tlciBJbWFnZSBmb3IgaHR0cHM6Ly9naXRodWIuY29tL0lCTS9vcGVuYXBpLXZhbGlkYXRvcgo= readmeEtag: '"24161c42814b30fde65f6cbcfe58125e82a6d91d"' readmeLastModified: Mon, 21 Oct 2019 14:43:40 GMT repositoryId: 216578889 description: Docker Image for https://github.com/IBM/openapi-validator created: '2019-10-21T13:45:19Z' updated: '2019-10-21T14:43:46Z' language: Dockerfile archived: false stars: 0 watchers: 1 forks: 2 owner: dkirrane logo: https://avatars.githubusercontent.com/u/1280116?v=4 license: Apache-2.0 repoEtag: '"ae7ad27c0876992a6b6047f271d755ce41835d7d92cfdef2336369a1ef97e0cc"' repoLastModified: Mon, 21 Oct 2019 14:43:46 GMT foundInMaster: true category: Description Validators id: 03eba9bbb724766e0c2b82ed9d1a9b71 - source: openapi3 tags repository: https://github.com/aqib1/subscription-api v3: true repositoryMetadata: base64Readme: >- IyBTdWJzY3JpcHRpb24gU2VydmljZQpUaGUgaW1wbGVtZW50YWNpb24gb2YgU3Vic2NyaXB0aW9uIFNlcnZpY2UgaGFzIGJlZW4gbWFkZSB1c2luZyBhIG1pY3Jvc2VydmljZSBhcHByb2FjaC4gVGhpcyBzZXZpY2UgaXMgbWFkZSBvZiAzIHNlcnZpY2VzLiBUaGUgbWFpbiBzZXZpY2UgaXMgdGhlIFN1YnNjcmlwdGlvbiBtaWNyb3NlcnZpY2Ugd2hpY2ggaXMgdGhlIG9ubHkgdGhhdCBpcyByZWFjaGFibGUgc2luY2UgYSBwdWJsaWMgbmV0d29yay4gVGhpcyBzZXZpY2UgaW50ZXJhY3Qgd2l0aCBvbmUgaW50ZXJuYWwgc2VydmljZSwgRW1haWwgbWljcm9zZXZpY2UsIGFuZCBhIGRhdGFiYXNlIHRvIGNyZWF0ZSBzdWJzY3JpcHRpb25zLiBJZiBhbGwgcHJvY2VzcyBpcyBjb3JyZWN0LCB0aGUgbmV3IHN1YnNjcmlwdGlvbiBpZGVudGlmaWVyIGlzIHJldHVybmVkLiBUaGUgRW1haWwgbWljcm9zZXZpY2UgYXJlIG5vdCByZWFjaGFibGUgaWYgeW91IHVzZSBkb2NrZXIgcHJvZmlsZS4gVGhlIERvY2tlci9hcHAueW1sIGlzIG1ha2UgZm9yIHRoZSBjb211bmljYXRpb24gYW1vbmcgdGhlIHJlc3Qgb2YgdGhlIHNlcnZpY2VzLCBFdXJla2EgU2VydmVyLiBJbiB0aGlzLCB0aGUgRW1haWwgTWljcm9zZXJ2aWNlIGlzIHJlZ2lzdGVyZWQgdG8gYmUgYWNjZXNzaWJsZSBieSB0aGUgU3Vic2NyaXB0aW9uIE1pY3Jvc2VydmljZS4KCkluIHRoaXMgZGV2ZWxvcG1lbnQgaGFzIGJlZW4gdXNlZCB0aGUgZm9sbG93aW5nIHRlY2hub2xvZ2llcyBhbmQgbGlicmFyaWVzOgoKLSBTcHJpbmcgQ2xvdWQKaXQgaGFzIGJlZW4gdXNlZCB0byBkZXZlbG9wIHRoZSBhcmNoaXRlY3R1cmUgb2YgbWljcm9zZXJ2aWNlcy4gSXQgbWFrZSBwb3NzaWJsZSB0aGUgZWFzeSBkZXZlbG9wbWVudCBvZiBhbiBFdXJla2EgU2VydmVyIGFuZCB0aGUgcmVnaXN0cmF0aW9uIG9mIGRpZmZlcmVudCBzZXJ2aWNlcyBvbiBpdC4gVXNlZCBOZXRmbGl4IGZlaWduIGZvciBkZWNsYXJhdGl2ZSBjb21taWNhdGlvbiB3aXRoIG1pY3Jvc2VydmljZXMuIE5ldGZsaXggcmliYm9uIGlzIHVzZWQgZm9yCmxvYWQgYmFsYW5jaW5nLiBOZXRmbGl4IGh5c3RyaXggaXMgdXNlZCBmb3IgY2lyY3VpdCBicmVha2VyLgoKLSBTcHJpbmcgQm9vdCAKaXQgbWFrZXMgaXQgZWFzeSB0byBjcmVhdGUgc3RhbmQtYWxvbmUgYXBwbGljYXRpb24sIHdoaWNoIGNhbiBiZSBleGVjdXRlZCBsaWtlIHdpdGhvdXQgbmVjZXNzaXR5IG9mIGEgYXBwbGljYXRpb24gd2ViIHNlcnZlciBsaWtlIHRvbWNhdC4KCi0gU3ByaW5nIERhdGEgSlBBCnRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIGJvaWxlcnBsYXRlIGNvZGUgcnF1aXJlZCB0byBpbXBsZW1lbnQgZGF0YSBhY2Nlc3MgZm9yIHZhcmlvdXMgcGVyc2lzdGVuY2Ugc3RvcmVzLiBJbiB0aGlzIGNhc2UsIGR1cmluZyB0aGUgZGV2ZWxvcG1lbnQgaGFzIGJlZW4gdXNlZCBIMiBkYXRhYmFzZS4KCi0gU3dhZ2dlcgp0byBkZXZlbG9wIHRoZSBBUEkgZG9jdW1lbnRhdGlvbnMgYW5kIHJlYWwgdGltZSBvYmplY3RzIG9mIGNvbW1vbiBvdmVyIG1pY3Jvc2VydmljZXMuCgotIEgyIGRhdGFiYXNlCml0IGlzIHRoZSBkYXRhYmFzZSB1c2VkIGluIHRoZSBkZXZlbG9wbWVudCBwcm9jY2Vzcy4KCi0gU3ByaW5nIEFPUAppcyB1c2VkIGZvciBsb2dnaW5nIG1ldGhvZCBpbm5lciBvdXRlciBzdGF0ZW1lbnRzCgotIEphdmFNYWlsIAppcyB1c2VkIHRvIHNlbmQgcmVhbCB0aW1lIGVtYWlscwoKLSBKdW5pdCAKaXMgdXNlZCB0byBkbyB1bml0IHRlc3RpbmcgYXMgYXBwbGljYXRpb24gaXMgYnVpbGQgdXNpbmcgdGVzdC1kcml2ZW4gYXBwcm9hY2ggCgotIE1vY2tpdG8gZnJhbWV3b3JrIAppcyB1c2VkIHRvIG1vY2sgb2JqZWN0cywgc2VydmljZXMgaW4gdW5pdCB0ZXN0aW5nCgotIE1hcFN0cnVjdAppcyB1c2VkIHRvIHBlcmZvcm0gaW50ZXItbWFwcGluZyBvZiBvYmplY3RzCgotIE9wZW4gUE9KTwppcyB1c2VkIHRvIHBlcmZvcm0gdW5pdCB0ZXN0aW5nIGFnYWluc3QgamF2YSBvYmplY3RzCgojIEJ1aWxkaW5nIGZvciBkZXZlbG9wbWVudApUbyBidWlsZCB0aGUgU3Vic2NyaXB0aW9uIFNlcnZpY2UgZm9yIGRldmVsb3BtZW50IHlvdSBtdXN0IGJ1aWxkIHRoZSBmb3VyIHNlcnZpY2VzLiBUbyBidWlsZCB0aGUgU3Vic2NyaXB0aW9uIE1pY3Jvc2VydmljZSB5b3UgbXVzdCBiZSBpbiB0aGUgU3Vic2NyaXB0aW9uTWljcm9zZXJ2aWNlIGZvbGRlciBhbmQgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCwKCm12biBjbGVhbiBwYWNrYWdlIC1QIGRldgpUaGUgcHJvY2Nlc3MgaXMgdGhlIHNhbWUgZm9yIHRoZSBvdGhlciBzZXJ2aWNlcy4KClJ1bm5pbmcgdGhlIFN1YnNjcmlwdGlvbiBTZXJ2aWNlIGZvciBkZXZlbG9tZW50Ckl0IGlzIG5lY2Nlc3NhcnkgcnVuIHRoZSBzZXJ2aWNlcyBmb2xsb3dpbmcgYW4gb3JkZXIsCgotIEV1cmVrYSBTZXJ2ZXIKCkl0IGlzIG5lY2Vzc2FyeSB3YWl0IHRvIEV1cmVrYSBTZXJ2ZXMgYXJlIGNvbXBsZXRseSBkZXBsb3llZCBiZWZvcmUgc3RhdGluZyB0byBydW4gdGhlIHJlc3Qgb2Ygc2VydmljZXMuCmphdmEgLWphciB0YXJnZXQvZXVyZWthLXNlcnZlci0wLjAuMS5qYXIKCi0gRW1haWwgTWljcm9zZXJ2aWNlCgpqYXZhIC1qYXIgdGFyZ2V0L2FkaWRhcy1lbWFpbC1hcGktMC4wLjEtU05BUFNIT1QuamFyCgotIFN1YnNjcmlwdGlvbiBNaWNyb3NlcnZpY2UKCmphdmEgLWphciB0YXJnZXQvYWRpZGFzLXN1YnNjcmlwdGlvbi1hcGktMC4wLjEtU05BUFNIT1QuamFyCgpVc2luZyBTdWJzY3JpcHRpb24gU2VydmljZSBpbiBkZXZlbG9wbWVudApJZiB5b3Ugd2FudCB0byBhY2Nlc3MgdG8gRXVyZWthIFNlcnZlciB0byBzZWUgdGhlIHJlZ2lzdHJlZCBzZXJ2aWNlcywgaHR0cDovL2xvY2FsaG9zdDo4NzYxIGluIHlvdXIgYnJvd3Nlci4KClRvIGFkZCBhIG5ldyBTdWJzY3JpcHRpb24sIGl0IGlzIG5lY2Vzc2FyeSB0byBtYWtlIGEgUE9TVCByZXF1ZXN0IHRvIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4My9zdWJzY3JpcHRpb24uIAoKIyBVc2luZyBEb2NrZXIKWW91IGNhbiBkb2NrZXJpY2UgdGhlIFN1YnNjcmlwdGlvbiBTZXJ2aWNlLiBUbyBhY2hpZXZlIHRoaXMsIGZpcnN0IGJ1aWxkIGEgZG9ja2VyIGltYWdlIG9mIGVhY2ggb2YgdGhlIHNlcnZpY2UgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQgaW4gdGhlIG1haW4gZm9sZGVyIG9mIGVhY2ggc2VydmljZS4KCm12biBjbGVhbiBwYWNrYWdlIC1QIGRvY2tlciBkb2NrZXI6YnVpbGQKQWZ0ZXIgZXhlY3V0aW5nIHRoZSBiZWxvdyBjb21tYW5kLCB5b3UgbXVzdCB0byBnbyB0byB0aGUgZG9ja2VyIGZvbGRlciwgYW5kIHJ1bjoKCmRvY2tlci1jb21wb3NlIC1mIGFwcC55bWwgdXAgLWQKVGhpcyBjb21tYW5kIHdpbGwgY3JlYXRlIGZvdXIgZG9ja2VyIGNvbnRhaW5lciBpbiB3aGljaCB0aGUgdGhyZWUgbWljcm9zZXJ2aWNlcyBhbmQgdGhlIEV1cmVrYSBTZXJ2ZXIgd2lsbCBiZSBleGVjdXRlZC4gSW4gYWRkaXRpb24sIGl0IHdpbGwgYmUgY3JlYXRlIGEgaW50ZXJuYWwgZG9ja2VyIG5ldHdvcmsgd2hpY2ggdG8gcG9zc2libGUgdGhlIGNvbW11bmljYXRpb24gYW1vbmcgYWxsIGNvaW50YWluZXJzLiBGaW5hbGx5LCBhbm90aGVyIGNvaW50YWluZXIgaXMgY3JlYXRlZCB3aGljaCBsaWUgdGhlIFBvc3RncmVTUUwuIE9ubHkgdGhlIHBvcnQgODA4MCBvZiB0aGUgY29udGFpbmVyIHdoZXJlIHdpbGwgYmUgZXhlY3V0ZWQgdGhlIFN1YnNjcmlwdGlvbiBNaWNyb3NlcnZpY2UgYW5kIHRoZSBzYW1lIHBvcnQgb2YgdGhlIEV1cmVrYSBTZXJ2ZXIgaGF2ZSBiZWVuIHB1Ymxpc2hlZCB0byBiZSByZWFjaGFibGUgc2luY2UgYSBleHRlcm5hbCBuZXR3b3JrLiBTbyBpdCBpcyBpbXBvc3NpYmxlIHRoYXQgdGhlIGRhdGFiYXNlLCB0aGUgRW1haWwgTWljcm9zZXJ2aWNlIGFuZCB0aGUgRXZlbnQgTWljcm9zZXJ2aWNlIHdhcyByZWFjaGFibGUgYnkgb3RoZXIgcHJvY2Nlc3MgdGhhdCBkbyBub3QgYmUgdGhlIFN1YmNyaXB0aW9uIE1pY3Jvc2VydmljZS4KClRvIGFjY2VzcyB0byBFdXJla2EgU2VydmVyIHRvIHNlZSB0aGUgcmVnaXN0cmVkIHNlcnZpY2VzLCBodHRwOi8vbG9jYWxob3N0OjgwODEKVG8gYWRkIGEgbmV3IFN1YnNjcmlwdGlvbiwgaXQgaXMgbmVjZXNzYXJ5IHRvIG1ha2UgYSBQT1NUIHJlcXVlc3QgdG8gaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N1YnNjcmlwdGlvbgoKIyBTd2FnZ2VyIERvY3VtZW50YXRpb24KU3dhZ2dlciBkb2N1bWVudGF0aW9uIGlzIGJ1aWxkIGFuZCBjb21taXRlZCBpbiBkb2N1bWVuYXRpb24gZm9sZGVyIHdoaWNoIGNvbnRhaW4gYWxsIGRldGFpbHMgYW5kIGVuZCBwb2ludHMgb2YgYWxsIG1pY3JvLXNlcnZpY2VzLgpJdCBpcyBidWlsZCB1c2luZyBzd2FnZ2VyLWh1Yi4K readmeEtag: '"15cad2ce98fe35576f7b45f301c30ddca2d226c3"' readmeLastModified: Thu, 13 Feb 2020 20:54:11 GMT repositoryId: 214656319 description: 'Micro-service API for Subscriptions and email ' created: '2019-10-12T13:58:31Z' updated: '2020-02-13T20:54:16Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: aqib1 logo: https://avatars.githubusercontent.com/u/8742169?v=4 repoEtag: '"4925407ec7a22ae162eb59f22825325741866d563c1ba5f455e517cc79eda7bc"' repoLastModified: Thu, 13 Feb 2020 20:54:16 GMT foundInMaster: true category: Server Implementations id: 1065ef5a8c3a7843dee99fca1e7c8381 - source: openapi3 tags repository: https://github.com/aqib1/idealotask v3: true repositoryMetadata: base64Readme: >- IyBJZGVhbG9UYXNrClRoZXNlIGFyZSB0aGUgZGV0YWlscyByZWdhcmRpbmcgdGFza3MuIEkgcGljayB0aGUgdGFzayAzIHdoaWNoIGlzIHRoZSBmb2xsb3dpbmcgYmVsb3cuIFRoZSBwcm9qZWN0IGlzIGNvbXBsZXRlbHkgZG9ja2VyaXplIHdpdGggYSBwdWJsaWMgaW1hZ2UgYXZhaWxhYmxlIG9uIGRvY2tlciBodWIgcGxlYXNlIHVzZSB0aGUgY29tbWFuZCA8Yj5kb2NrZXIgcHVsbCBhcWliYnV0dDMwNzgvdG95cm9ib3Q6aW1hZ2U8L2I+IHRvIHB1bGwgdGhlIGltYWdlLCBpZiB5b3UgbGlrZSB0byBydW4gaXQgZnJvbSBkb2NrZXIgc2hlbGwuCiMgVGFzayAzCgpDb2RlIHByb2JsZW0gZGV0YWlsczoKLSBUaGUgYXBwbGljYXRpb24gaXMgYSBzaW11bGF0aW9uIG9mIGEgdG95IHJvYm90IG1vdmluZyBvbiBhIHNxdWFyZSB0YWJsZXRvcCwgb2YKZGltZW5zaW9ucyA1IHggNSB1bml0cy4KLSBUaGVyZSBhcmUgbm8gb3RoZXIgb2JzdHJ1Y3Rpb25zIG9uIHRoZSB0YWJsZSBzdXJmYWNlLgotIFRoZSByb2JvdCBpcyBmcmVlIHRvIHJvYW0gYXJvdW5kIHRoZSBzdXJmYWNlIG9mIHRoZSB0YWJsZSwgYnV0IG11c3QgYmUgcHJldmVudGVkIGZyb20KZmFsbGluZyB0byBkZXN0cnVjdGlvbi4gQW55IG1vdmVtZW50IHRoYXQgd291bGQgcmVzdWx0IGluIHRoZSByb2JvdCBmYWxsaW5nIGZyb20gdGhlIHRhYmxlIG11c3QKYmUgcHJldmVudGVkLCBob3dldmVyIGZ1cnRoZXIgdmFsaWQgbW92ZW1lbnQgY29tbWFuZHMgbXVzdCBzdGlsbCBiZSBhbGxvd2VkLgpDcmVhdGUgYW4gYXBwbGljYXRpb24gdGhhdCBjYW4gcmVhZCBpbiBjb21tYW5kcyBvZiB0aGUgZm9sbG93aW5nIGZvcm06Ci0gUExBQ0UgWCxZLEYKLSBNT1ZFCi0gTEVGVAotIFJJR0hUCi0gUkVQT1JUClBMQUNFIHdpbGwgcHV0IHRoZSB0b3kgcm9ib3Qgb24gdGhlIHRhYmxlIGluIHBvc2l0aW9uIFgsWSBhbmQgZmFjaW5nIE5PUlRILApTT1VUSCwgRUFTVCBvciBXRVNULiBUaGUgb3JpZ2luICgwLDApIGNhbiBiZSBjb25zaWRlcmVkIHRvIGJlIHRoZSBTT1VUSCBXRVNUCm1vc3QgY29ybmVyLgpNT1ZFIHdpbGwgbW92ZSB0aGUgdG95IHJvYm90IG9uZSB1bml0IGZvcndhcmQgaW4gdGhlIGRpcmVjdGlvbiBpdCBpcyBjdXJyZW50bHkgZmFjaW5nLgpMRUZUIGFuZCBSSUdIVCB3aWxsIHJvdGF0ZSB0aGUgcm9ib3QgOTAgZGVncmVlcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdGlvbiB3aXRob3V0CmNoYW5naW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgcm9ib3QuClJFUE9SVCB3aWxsIGFubm91bmNlIHRoZSBYLFkgYW5kIEYgb2YgdGhlIHJvYm90LiAKQ29uc3RyYWludHM6Ci0gVGhlIGFwcGxpY2F0aW9uIG11c3QgYmUgYSBTcHJpbmctQm9vdC1BcHBsaWNhdGlvbgotIElucHV0IG11c3QgYmUgcmVhbGlzZWQgb3ZlciB0aGUgUkVTVC1BUEksIHRha2UgY2FyZSB3aGVuIGRlc2lnbmluZyB0aGUgUkVTVC1BUEkKLSBUaGUgcm9ib3QgdGhhdCBpcyBub3Qgb24gdGhlIHRhYmxlIGNhbiBjaG9vc2UgdGhlIGlnbm9yZSB0aGUgTU9WRSwgTEVGVCwgUklHSFQKYW5kIFJFUE9SVCBjb21tYW5kcy4KLSBUaGUgcm9ib3QgbXVzdCBub3QgZmFsbCBvZmYgdGhlIHRhYmxlIGR1cmluZyBtb3ZlbWVudC4gVGhpcyBhbHNvIGluY2x1ZGVzIHRoZSBpbml0aWFsCnBsYWNlbWVudCBvZiB0aGUgdG95IHJvYm90LgotIEFueSBtb3ZlIHRoYXQgd291bGQgY2F1c2UgdGhlIHJvYm90IHRvIGZhbGwgbXVzdCBiZSBpZ25vcmVkLgotIEl0IGlzIG5vdCByZXF1aXJlZCB0byBwcm92aWRlIGFueSBncmFwaGljYWwgb3V0cHV0IHNob3dpbmcgdGhlIG1vdmVtZW50IG9mIHRoZSB0b3kKcm9ib3QuIApEZWxpdmVyYWJsZXM6IAotIHRoZSB3aG9sZSBwcm9qZWN0LCBleGFtcGxlIHJlcXVlc3RzIHRvIHRlc3QgYSByb2JvdC1hcHBsaWNhdGlvbiBpbiBmb3JtIG9mIFBvc3RtYW5Db2xsZWN0aW9uIG9yIGluIGZvcm0gb2YgYSB0ZXh0IGZpbGUuCg== readmeEtag: '"57b6a5f60fbbeca3908f6e510e099b5d558ecb3d"' readmeLastModified: Wed, 11 Sep 2019 01:08:14 GMT repositoryId: 203261645 description: null created: '2019-08-19T22:55:03Z' updated: '2019-10-17T02:25:03Z' language: HTML archived: false stars: 0 watchers: 1 forks: 0 owner: aqib1 logo: https://avatars.githubusercontent.com/u/8742169?v=4 repoEtag: '"144f88de7338edaae5156b7b47f048108abf85df3920e9ae2f6a3120fef11f57"' repoLastModified: Thu, 17 Oct 2019 02:25:03 GMT foundInMaster: true category: Server Implementations id: 3dd9aa2756dfd980f28501062f14c68a - source: openapi3 tags repository: https://github.com/marcomicera/rns v3: true repositoryMetadata: base64Readme: >- IyBgcm5zYDogUm9hZCBOYXZpZ2F0aW9uIFNlcnZpY2VzCmBybnNgIGlzIGEgd2ViIHNlcnZpY2UgZGV2ZWxvcGVkIGFzIGFuIGFzc2lnbm1lbnQgZm9yIHRoZSBEaXN0cmlidXRlZCBQcm9ncmFtbWluZyBJSSBjb3Vyc2UgYXQgdGhlIFBvbHl0ZWNobmljIFVuaXZlcnNpdHkgb2YgVHVyaW4uCgojIyMjIFVzZWZ1bCBsaW5rcwotIFtDb3Vyc2Ugd2Vic2l0ZV0oaHR0cHM6Ly9wYWQucG9saXRvLml0OjgwODAvZW5naW5mcmFtZS9kcDIvZHAyLnhtbCkKICAtIFtBc3NpZ25tZW50cyBGQVFzXShodHRwczovL3BhZC5wb2xpdG8uaXQ6ODA4MC9lbmdpbmZyYW1lL2RwMi9kcDIueG1sP191cmk9Ly9kcDIvYXNzaWdubWVudF9mYXFzKQogIC0gW0V4YW1wbGVzXShodHRwczovL3BhZC5wb2xpdG8uaXQ6ODA4MC9lbmdpbmZyYW1lL2RwMi9kcDIueG1sP191cmk9Ly9kcDIvbWF0ZXJpYWwpCi0gW2BpdC5wb2xpdG8uZHAyLlJOU2AgcGFja2FnZV0oaHR0cHM6Ly9wYWQucG9saXRvLml0OjgwODAvZW5naW5mcmFtZS9kcDIvYXNzaWdubWVudHMvbGFiMS9kb2MvaW5kZXguaHRtbCkKLSBbU3dhZ2dlciBBUElzXShodHRwczovL2FwcC5zd2FnZ2VyaHViLmNvbS9hcGlzL21hcmNvbWljZXJhL1Juc1N5c3RlbS8yLjAtb2FzMykKICAtIFtPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYWJvdXQvKQotIFtMaXN0IG9mIEhUVFAgc3RhdHVzIGNvZGVzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX0hUVFBfc3RhdHVzX2NvZGVzKQotIFtQVVQgdnMuIFBPU1QgaW4gUkVTVF0oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNjMwNDUzL3B1dC12cy1wb3N0LWluLXJlc3QpCgojIyMjIFNvZnR3YXJlCi0gYG9wZW5qZGstOC1qZGtgCi0gW0FwYWNoZSBBbnQgMS45LjZdKGh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvYW50L2JpbmFyaWVzL2FwYWNoZS1hbnQtMS45LjYtYmluLnRhci5neikgCi0gW05lbzRKIDMuMi4zXShodHRwczovL25lbzRqLmNvbS9kb3dubG9hZC10aGFua3MvP2VkaXRpb249Y29tbXVuaXR5JnJlbGVhc2U9My4yLjMmZmxhdm91cj11bml4KQogIC0gW0Rpc2FibGUgYXV0aGVudGljYXRpb25dKGh0dHBzOi8vbmVvNGouY29tL2RvY3Mvb3BlcmF0aW9ucy1tYW51YWwvY3VycmVudC9hdXRoZW50aWNhdGlvbi1hdXRob3JpemF0aW9uL2VuYWJsZS8pCi0gW0FwYWNoZSBUb21jYXQgOC41LjIwXShodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RvbWNhdC90b21jYXQtOC92OC41LjIwL2Jpbi9hcGFjaGUtdG9tY2F0LTguNS4yMC50YXIuZ3opCiAgLSAqKkltcG9ydGFudCoqOiBzZXQgYHNoYXJlZC5sb2FkZXI9L29wdC9kcDIvc2hhcmVkL2xpYi8qLmphcmAgaW4gYHRvbWNhdF9kaXIvY29uZi9jYXRhbGluYS5wcm9wZXJ0aWVzYAo= readmeEtag: '"fb68e949435176fcf46001df4ed55eeb9519f0cf"' readmeLastModified: Sat, 11 Apr 2020 13:40:14 GMT repositoryId: 183401765 description: Road Navigation Services created: '2019-04-25T09:28:59Z' updated: '2023-01-28T15:05:33Z' language: Java archived: true stars: 0 watchers: 1 forks: 0 owner: marcomicera logo: https://avatars.githubusercontent.com/u/13918587?v=4 license: MIT repoEtag: '"d196600ffaa5e024ee073182aba3503f84a2e3055cae3ff547415cae3c3e988a"' repoLastModified: Sat, 28 Jan 2023 15:05:33 GMT foundInMaster: true category: Code Generators id: c697198760415f3a02305c92e624b53c - source: openapi3 tags repository: https://github.com/sumant86/node-rest-api v3: true repositoryMetadata: base64Readme: >- IyBOb2RlIFJFU1QgQVBJCgpBIGtpY2sgc3RhcnQgcHJvamVjdCBmb3IgaW1wbGVtZW50YXRpb24gb2YgUkVTVGZ1bCBBUEkgd2l0aCBOb2RlLmpzIHVzaW5nIEVTNi4KRmVhdHVyZXMgaW5jbHVkZToKCi0gICBVc2Ugb2YgdGhlIEhleGFnb25hbCBBcmNoaXRlY3R1cmUgdG8gYXJyYW5nZSB0aGUgYXBwbGljYXRpb24gaW50byBsb2dpY2FsCiAgICBsYXllcnMsIHdpdGggd2VsbC1kZWZpbmVkIHJlc3BvbnNpYmlsaXRpZXMuCi0gICBSRVNUZnVsIEFQSXMgYXJlIGltcGxlbWVudGVkIHVzaW5nIHRoZSBbRXhwcmVzc10oaHR0cDovL2V4cHJlc3Nqcy5jb20vKQogICAgZnJhbWV3b3JrLgotICAgUGVyc2lzdGVuY2UgaXMgaW1wbGVtZW50ZWQgdXNpbmcgYW4gaW4tbWVtb3J5IHJlcG9zaXRvcnkgbGF5ZXIuIFRoaXMgY2FuIGJlCiAgICBzdWJzdGl0dXRlZCB3aXRoIGFueSBwZXJzaXN0ZW5jZSB0ZWNobm9sb2d5IG9mIHlvdXIgY2hvaWNlLgotICAgTVNTUUwgJiBNeVNxbCBhZGFwdG9ycyBhcmUgcHJvdmlkZWQgZm9yIGZsZXhpYmxpdHkgdG8gY29ubmVjdCB3aXRoIGRhdGFiYXNlLgogICAgRGF0YWJhc2UgY3JlZGVudGlhbHMgbmVlZCB0byBiZSB1cGRhdGVkIHRvIGAuZW52YCBmaWxlCgojIyBEZXYgQnVpbGQKCmBgYGJhc2gKJCBucG0gaW5zdGFsbAokIG5wbSBzdGFydApgYGAKClRoZSBkZXYgYnVpbGQgc3RhcnRzIHRoZSBhcHBsaWNhdGlvbiBpbiB3YXRjaCBtb2RlLiBJZiB5b3UgbWFrZSBhbnkgY2hhbmdlcyB0bwp0aGUgc291cmNlIGZpbGVzLCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWNvbXBpbGUgYW5kIHJlc3RhcnQuCgpUbyB2ZXJpZnkgdGhhdCB0aGUgYXBwbGljYXRpb24gaXMgd29ya2luZyBjb3JyZWN0bHksIHBvaW50IHlvdXIgYnJvd3NlciB0bwpbaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaS9wcm9kdWN0cy8xXShodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpL3Byb2R1Y3RzLzEpIC0KeW91IHNob3VsZCBzZWUgYSByZXNwb25zZSB3aXRoIG9uZSBwcm9kdWN0IGluIEpTT04gZm9ybWF0LgoKWW91IGNhbiBzZWUgYSBPcGVuQVBJIChTd2FnZ2VyKSBkZWZpbml0aW9uIG9mIHRoZSBSRVNUIEFQSSBhdApbaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaS1kb2NzL10oaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaS1kb2NzLykuIFRoaXMKaW50ZXJmYWNlIGFsc28gYWxsb3dzIHlvdSB0byBpbnRlcmFjdCB3aXRoIHRoZSBBUEkuIFBvc3RtYW4gQ29sbGVjdGlvbiBwcm92aWRlZAp3aXRoIHRoaXMgcmVwb3NpdG9yeS4KClRvIGRlYnVnIHRoZSBhcHBsaWNhdGlvbiBpbiBDaHJvbWUsIHBvaW50IHRoZSBicm93c2VyIHRvIGNocm9tZTovL2luc3BlY3QgYW5kCmNsaWNrIG9uICJPcGVuIGRlZGljYXRlZCBEZXZUb29scyBmb3IgTm9kZSIuCgojIyBQcm9kdWN0aW9uIEJ1aWxkCgpgYGBiYXNoCiQgbnBtIHJ1biBwcmV0dGllcgokIG5wbSBydW4gYnVpbGQKJCBucG0gcnVuIHNlcnZlCmBgYAoKIyMgUHJldHRpZXIKCmBgYGJhc2gKJCBucG0gcnVuIHByZXR0aWVyCmBgYAoKIyMgRm9sZGVyIFN0cnVjdHVyZQoKYGBgCi9zcmMKICAgIC9yb3V0ZXMKICAgIC9zZXJ2aWNlcwogICAgL3JlcG9zaXRvcmllcwogICAgL2Nvbm5lY3RvcnMKICAgIC91dGlscwpgYGAKClRoZSBzb3VyY2UgZm9sZGVyIGNvbnRhaW5zIHN1Yi1mb2xkZXJzIHRoYXQgYXJyYW5nZSB0aGUgYXBwbGljYXRpb24gaW50byBsb2dpY2FsCmxheWVyczoKCi0gICBgcm91dGVzYDogVGhpcyBpcyB0aGUgYWRhcHRlciBsYXllciBvZiB0aGUgSGV4YWdvbmFsIEFyY2hpdGVjdHVyZS4gSXQgYWRhcHRzCiAgICB0aGUgSFRUUCB0cmFuc2Zvcm1zIHRoZSBIVFRQIHJlcXVlc3RzIGZyb20gdGhlIGV4dGVybmFsIHdvcmxkIHRvIHRoZSBzZXJ2aWNlCiAgICBsYXllciBhbmQgdHJhbnNmb3JtcyB0aGUgb2JqZWN0cyByZXR1cm5lZCBieSB0aGUgc2VydmljZSBsYXllciB0byBIVFRQCiAgICByZXNwb25zZXMuCgotICAgYHNlcnZpY2VzYDogVGhlIHNlcnZpY2UgbGF5ZXIgY29vcmRpbmF0ZXMgaGlnaC1sZXZlbCBhY3Rpdml0aWVzIHN1Y2ggYXMKICAgIGNyZWF0aW9uIG9mIGRvbWFpbiBvYmplY3RzIGFuZCBhc2tpbmcgdGhlbSB0byBwZXJmb3JtIHRhc2tzIHJlcXVlc3RlZCBieSB0aGUKICAgIGV4dGVybmFsIHdvcmxkLiBJdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVwb3NpdG9yeSBsYXllciB0byBzYXZlIGFuZCByZXN0b3JlCiAgICBvYmplY3RzLgoKLSAgIGByZXBvc2l0b3JpZXNgOiBUaGUgcmVwb3NpdG9yeSBsYXllciBpcyByZXNwb25zaWJsZSBmb3IgcGVyc2lzdGluZyBkb21haW4KICAgIG9iamVjdHMgYW5kIHBlcmZvcm1pbmcgQ1JVRCBvcGVyYXRpb25zIG9uIHRoZW0uIFRoaXMgdGVtcGxhdGUgdXNlcyBpbi1tZW1vcnkKICAgIHBlcnNpc3RlbmNlIGZvciBwcm9kdWN0cyAmIE15c3FsICYgTVNTcWwgY29ubmVjdG9yIHRvIGNvbm5lY3Qgd2l0aCBkYXRhYmFzZS4KCi0gICBgY29ubmVjdG9yc2A6IFRoZSBjb25uZWN0b3IgbGF5ZXIgYWxsb3dzIGFwcGxpY2F0aW9uIHRvIGNvbm5lY3Qgd2l0aAogICAgZGF0YWJhc2UgZm9yIGFsbCBxdWVyaWVzLiBDdXJyZW50bHkgY29ubmVjdG9ycyBhcmUgYXZhaWxhYmxlIGZvciBgTXlTcWxgICYKICAgIGBNc3NxbGAuIE15c3FsIGNvbm5lY3RvciBpcyB1c2luZyBgbXlzcWxgIGRyaXZlci4gTVNTcWwgY29ubmVjdG9yIGlzIHVzaW5nCiAgICBgbXNzcWxgICYgYHRlZGlvdXNgIGRyaXZlciwgaXQgaXMgdXBvbiB1c2VyIHRvIGNob29zZSB0aGUgZHJpdmVycyBiYXNlZCBvbgogICAgZmxleGlibGl0eS4KCi0gICBUaGUgYHV0aWxzYCBmb2xkZXIgY29udGFpbnMgdXNlZnVsIHV0aWxpdGllcyBhbmQgaGVscGVycy4K readmeEtag: '"57cf6e528c666d7f4c34a56fc4480cb1bbce580a"' readmeLastModified: Wed, 11 May 2022 08:12:07 GMT repositoryId: 268822901 description: >- A kick start project for implementation of RESTful API with Node.js using ES6. created: '2020-06-02T14:26:38Z' updated: '2022-02-06T09:00:11Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: sumant86 logo: https://avatars.githubusercontent.com/u/3600265?v=4 repoEtag: '"b4f0395e3e8e6bfe4e9b3ac04323fbacce71323aa786e6240a74a45d8bf2e045"' repoLastModified: Sun, 06 Feb 2022 09:00:11 GMT foundInMaster: true category: Server Implementations id: 1eae6eee2c342724345c837c65b692e2 - source: openapi3 tags repository: https://github.com/mtkhawaja/spring-boot-3-openapi-archetype v3: true id: a0cf3aea3870ae92510ec88f50ce5008 repositoryMetadata: base64Readme: >- IyBzcHJpbmctYm9vdC0zLW9wZW5hcGktYXJjaGV0eXBlCgpNYXZlbiBBcmNoZXR5cGUgZm9yIGdlbmVyYXRpbmcgYmFzaWMgSmF2YSAxNyBTcHJpbmcgQm9vdCAzIHByb2plY3RzIHdpdGggT3BlbkFQSSBzdXBwb3J0LgoKIyMgR2V0dGluZyBTdGFydGVkCgohW0phdmEgMTddKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvamF2YS0xNy1vcmFuZ2UpCgojIyMgQnVpbGQKCmBgYGJhc2gKIyEvdXNyL2Jpbi9lbnYgYmFzaAouL212bncgY2xlYW4gaW5zdGFsbApgYGAKCiMjIyBVc2FnZQoKYGBgYmFzaAojIS91c3IvYmluL2VudiBiYXNoCgptdm4gYXJjaGV0eXBlOmdlbmVyYXRlIFwKICAtRGFyY2hldHlwZUdyb3VwSWQ9ImNvbS5tdW5lZWJraGF3YWphIiBcCiAgLURhcmNoZXR5cGVBcnRpZmFjdElkPSJzcHJpbmctYm9vdC0zLW9wZW5hcGktYXJjaGV0eXBlIiBcCiAgLURhcmNoZXR5cGVWZXJzaW9uPSIxLjAuMCIgXAogIC1EZ3JvdXBJZD0iY29tLmV4YW1wbGUiIFwKICAtRGFydGlmYWN0SWQ9ImFwaSIgXAogIC1EcGFja2FnZT0iY29tLmV4YW1wbGUuYXBpIiBcCiAgLUR2ZXJzaW9uPSIwLjAuMS1TTkFQU0hPVCIgXAogIC1CCgpgYGAKCkFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIGRvY2tlciBhbmQgdm9sdW1lIGJpbmRpbmcgdG8gZ2VuZXJhdGUgdGhlIHByb2plY3Q6CgpgYGBiYXNoCiMhL3Vzci9iaW4vZW52IGJhc2gKCmRvY2tlciBidWlsZCAtdCBtdGtoYXdhamEvc3ByaW5nLWJvb3QtMy1vcGVuYXBpLWFyY2hldHlwZTpsYXRlc3QgLgpkb2NrZXIgcnVuIFwKICAtdiAuLzovb3B0L2FwcGxpY2F0aW9uL2dlbmVyYXRlZCBcCiAgLWUgR0VORVJBVEVEX0dST1VQX0lEPSJjb20uZXhhbXBsZSIgXAogIC1lIEdFTkVSQVRFRF9BUlRJRkFDVF9JRD0iYXBpIiBcCiAgLWUgR0VORVJBVEVEX1BBQ0tBR0U9ImNvbS5leGFtcGxlLmFwaSIgXAogIC1lIEdFTkVSQVRFRF9WRVJTSU9OPSIwLjAuMS1TTkFQU0hPVCIgXAogIG10a2hhd2FqYS9zcHJpbmctYm9vdC0zLW9wZW5hcGktYXJjaGV0eXBlOmxhdGVzdAoKYGBgCgpUaGlzIHdpbGwgZ2VuZXJhdGUgYSBwcm9qZWN0IHdpdGggdGhlIGZvbGxvd2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlOgoKYGBgYmFzaAojIS91c3IvYmluL2VudiBiYXNoCgp0cmVlIC1hIC4vYXBpCmBgYAoKYGBgcGxhaW50ZXh0Ci4vYXBpLwrilJzilIDilIAgLmdpdGlnbm9yZQrilJzilIDilIAgLm12bgrilIIgICDilJTilIDilIAgd3JhcHBlcgrilIIgICAgICAg4pSU4pSA4pSAIG1hdmVuLXdyYXBwZXIucHJvcGVydGllcwrilJzilIDilIAgRG9ja2VyZmlsZQrilJzilIDilIAgTElDRU5TRQrilJzilIDilIAgUkVBRE1FLm1kCuKUnOKUgOKUgCBkb2NrZXItY29tcG9zZS55YW1sCuKUnOKUgOKUgCBtdm53CuKUnOKUgOKUgCBtdm53LmNtZArilJzilIDilIAgcG9tLnhtbArilJTilIDilIAgc3JjCiAgICDilJzilIDilIAgbWFpbgogICAg4pSCICAg4pSc4pSA4pSAIGphdmEKICAgIOKUgiAgIOKUgiAgIOKUlOKUgOKUgCBjb20KICAgIOKUgiAgIOKUgiAgICAgICDilJTilIDilIAgZXhhbXBsZQogICAg4pSCICAg4pSCICAgICAgICAgICDilJTilIDilIAgYXBpCiAgICDilIIgICDilIIgICAgICAgICAgICAgICDilJzilIDilIAgQXBwbGljYXRpb24uamF2YQogICAg4pSCICAg4pSCICAgICAgICAgICAgICAg4pSU4pSA4pSAIEV4YW1wbGVDb250cm9sbGVyLmphdmEKICAgIOKUgiAgIOKUlOKUgOKUgCByZXNvdXJjZXMKICAgIOKUgiAgICAgICDilJzilIDilIAgYXBwbGljYXRpb24ueWFtbAogICAg4pSCICAgICAgIOKUnOKUgOKUgCBsb2diYWNrLnhtbAogICAg4pSCICAgICAgIOKUlOKUgOKUgCBzd2FnZ2VyLnlhbWwKICAgIOKUlOKUgOKUgCB0ZXN0CiAgICAgICAg4pSU4pSA4pSAIGphdmEKICAgICAgICAgICAg4pSU4pSA4pSAIGNvbQogICAgICAgICAgICAgICAg4pSU4pSA4pSAIGV4YW1wbGUKICAgICAgICAgICAgICAgICAgICDilJTilIDilIAgYXBpCiAgICAgICAgICAgICAgICAgICAgICAgIOKUnOKUgOKUgCBBcHBsaWNhdGlvblNtb2tlVGVzdC5qYXZhCiAgICAgICAgICAgICAgICAgICAgICAgIOKUlOKUgOKUgCBFeGFtcGxlQ29udHJvbGxlclRlc3QuamF2YQpgYGAKCiMjIExpY2Vuc2UKCltBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMF0oLi9MSUNFTlNFKQ== readmeEtag: '"a662790df6529dfde16e7703612ff5241c810ccc"' readmeLastModified: Wed, 14 Jun 2023 03:20:06 GMT repositoryId: 649925362 description: >- Maven Archetype for generating Spring Boot 3 projects with OpenAPI support. created: '2023-06-06T00:19:12Z' updated: '2024-03-11T10:37:33Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: mtkhawaja logo: https://avatars.githubusercontent.com/u/36654508?v=4 license: Apache-2.0 repoEtag: '"a79866567497b2468ca27fbabad557d707d12dd1b994eb0da332d45d67ce6f88"' repoLastModified: Mon, 11 Mar 2024 10:37:33 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/calebtracey/rugby-crawler-api v3: true id: 2fba72e912abd94c76e3860abaa6215b repositoryMetadata: base64Readme: >- IyBydWdieS1jcmF3bGVyLWFwaQoKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL0NhbGViVHJhY2V5L3J1Z2J5LWNyYXdsZXItYXBpL2JyYW5jaC9tYWluL2dyYXBoL2JhZGdlLnN2Zz90b2tlbj04S08xWVQzQ09NKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL0NhbGViVHJhY2V5L3J1Z2J5LWNyYXdsZXItYXBpKQoKIyMjIEdvIFJFU1QgQVBJIGZvciBzY3JhcGluZyBydWdieSBzdGF0cwojIyMgW1N3YWdnZXIgRG9jc10oaHR0cHM6Ly9jYWxlYnRyYWNleS5naXRodWIuaW8vcnVnYnktY3Jhd2xlci1hcGkvc3dhZ2dlci11aS8pCi0tLQoKW3J1Z2J5LW1vZGVsc10oaHR0cHM6Ly9naXRodWIuY29tL0NhbGViVHJhY2V5L3J1Z2J5LW1vZGVscykgdXNlZCBmb3IgY29tbW9uIGRhdGEgdHlwZXMKCltjb25maWcteWFtbF0oaHR0cHM6Ly9naXRodWIuY29tL0NhbGViVHJhY2V5L2NvbmZpZy15YW1sKSB1c2VkIGZvciBlbnZpcm9ubWVudCBjb25maWdzIGFuZCBzZXJ2aWNlL2RiIGluaXRpYWxpemF0aW9uCgoqKkJhc2ljIHNldHVwKioKMS4gQ3JlYXRlIGEgbG9jYWwgUG9zdGdyZXMgZGF0YWJhc2UgYW5kIHVwZGF0ZSB0aGUgY29uZmlnLnlhbWwgZmlsZSB3aXRoIHRoZSBkZXRhaWxzCjIuIFVwZGF0ZSBnby5tb2QgYW5kIGZpbGUgaW1wb3J0cyB3aXRoIHlvdXIgcmVwbyBuYW1lCjMuIFJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHRvIHVwZGF0ZSBkZXBlbmRlbmNpZXM6CgogICBgZ28gZ2V0IC11IC4vLi4uYAoKICAgIGBnbyBtb2QgdGlkeWAKNC4gTWFrZSBhIHJ1biBjb25maWd1cmF0aW9uIGFzIHNlZW4gYmVsb3cgd2l0aCB5b3VyIHJlcG8gbmFtZToKCiFbUnVuIENvbmZpZ10oLi9pbWFnZXMvcnVuLWNvbmZpZy5wbmcpCgojIyMjIE5vdyB5b3UgY2FuIHN0YXJ0IHRoZSBBUEkgYW5kIGFjY2VzcyBodHRwOi8vbG9jYWxob3N0OjYwODAvc3dhZ2dlci11aS8gZm9yIHN3YWdnZXIgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdGluZwo= readmeEtag: '"a537cddfbc77d2c961e0f8b1ab325ad877520676"' readmeLastModified: Fri, 09 Dec 2022 00:27:00 GMT repositoryId: 570243924 description: Go API for scraping and storing rugby stats created: '2022-11-24T17:17:01Z' updated: '2022-11-25T05:42:19Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: CalebTracey logo: https://avatars.githubusercontent.com/u/59851860?v=4 repoEtag: '"5342b71b43229be8de73cb014661085fb0195721c8b5bdc6d6f2200be212dcd0"' repoLastModified: Fri, 25 Nov 2022 05:42:19 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/mukul273/springboot-react v3: true repositoryMetadata: base64Readme: >- IyBzcHJpbmdib290LXJlYWN0ClNwcmluZyBib290IHdpdGggUmVhY3RKcyBmdWxsIHN0YWNrCgpUaGlzIHByb2plY3QgdXNlcyBTcHJpbmcgYm9vdCAyLjMuNiwgUmVhY3RKcywgTXlTcWwsIFNwcmluZyBEYXRhIEpQQSwgSmF2YSA4LCBsb21ib2sgZXRjLgoKVGhpcyBpcyBFbXBsb3llZSBhZGQsIFVwZGF0ZSwgZGVsZXRlIGFuZCByZWFkIChDUlVEKSBVc2UgY2FzZSBhcHBsaWNhdGlvbiAKClRoaXMgYXBwbGljYXRpb24gaGFzIGJlZW4gdXBkYXRlZCB3aXRoIE9wZW5BUEkgMy4wIHNwZWNpZmljYXRpb24gIApHbyB0byAqIFtMb2NhbEhvc3QgT3BlbkFQSV0oaHR0cDovL2xvY2FsaG9zdDo4MDgxL3YzL2FwaS1kb2NzKSAqKiBQbGVhc2UgY2hhbmdlIHlvdXIgcG9ydCAgICAKClRPIGNoYW5nZSB0aGUgQVBJIGRvYyBVUkwgYWJvdmUKUGxlYXNlIHJlZmVyIHRvIHRoZSBhcHBsaWNhdGlvbi5wcm9wZXJ0aWVzIGZpbGUKTG9vayBmb3Igc3ByaW5nZG9jLmFwaS1kb2NzLnBhdGggcGFyYW0gYW5kIGNvbmZpZ3VyZSB5b3VyIHZhbHVlCioqIFBsZWFzZSByZW1lbWJlciB0aGF0IG9uY2UgeW91IGN1c3RvbWl6ZSB0aGUgQVBJIHVybCB0aGVuIHRoZSBkZWZhdWx0IHYzL2FwaS1kb2NzIHdpbGwgIApub3Qgd29yay4KCioqIFBsZWFzZSBhcHBlbmQgLnlhbWwgdG8gdGhlIE9wZW5BUEkgdG8gZG93bmxvYWQgdGhlIEFQSSBzcGVjaWZpY2F0aW9uIGZpbGUsCgpTd2FnZ2VyIGRvY3VtZW50YXRpb24gaXMgc3RpbGwgYXZhaWxhYmxlCkdvIHRvICogW0xvY2FsSG9zdCBTd2FnZ2VyRG9jXShodHRwOi8vbG9jYWxob3N0OjgwODEvc3dhZ2dlci11aS5odG1sKSAqKiBQbGVhc2UgY2hhbmdlIHlvdXIgcG9ydCAKUGxlYXNlIHNwZWNpZnkgL2VtcGxveWVlLWFwaSBpbiB0aGUgZXhwbG9yZSBzZWFyY2gKCgo= readmeEtag: '"1a41b889454036a875abef2b8194c293915552ae"' readmeLastModified: Tue, 01 Dec 2020 16:23:42 GMT repositoryId: 315981861 description: Spring boot with ReactJs full stack created: '2020-11-25T15:35:50Z' updated: '2020-12-01T17:05:49Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: mukul273 logo: https://avatars.githubusercontent.com/u/5340977?v=4 repoEtag: '"d222ecd15ecee055aa652188d96676e3edd73174c95746037a5f0c1086dfef64"' repoLastModified: Tue, 01 Dec 2020 17:05:49 GMT foundInMaster: true category: - Low-level Tooling - Server Implementations id: 7e6beb62a5584cefa8c1563cd30bd3e9 - source: openapi3 tags repository: https://github.com/akscodebay/announcement-api v3: true repositoryMetadata: base64Readme: >- IyBhbm5vbm5jZW1lbnQtYXBpCkFubm91bmNlbWVudCBBUEkgZm9yIHN0b3JpbmcgYW5kIHJldHJpZXZpbmcgYW5ub3VuY2VtZW50cy4gRGVwbG95YWJsZSBvbiBBV1MuCg== readmeEtag: '"6e97fad2f453b945a07f178371fcd07bd01dbce5"' readmeLastModified: Thu, 10 Dec 2020 16:57:56 GMT repositoryId: 320334399 description: >- Announcement API for storing and retrieving announcements. Deployable on AWS. created: '2020-12-10T16:53:08Z' updated: '2020-12-10T17:00:13Z' language: Python archived: false stars: 0 watchers: 1 forks: 0 owner: akscodebay logo: https://avatars.githubusercontent.com/u/35652014?v=4 repoEtag: '"9367d647cca8aa17771422ca80ff2f38f39965ea83f06f3886d41e03c2599e6f"' repoLastModified: Thu, 10 Dec 2020 17:00:13 GMT foundInMaster: true category: - Server - Server Implementations id: d10619272f684cdb44d5b014ce5092dd - source: openapi3 tags repository: https://github.com/pexmor/demo-openapi3 v3: true repositoryMetadata: base64Readme: >- IyBkZW1vLW9wZW5hcGkzCgpDb25jZXB0dWFsIGRlbW8gb2Ygc2ltcGxlIG9wZW5hcGkzIHVzaW5nIGNvbm5leGlvbiBmb3IgcXVpY2sgcHJvdG90eXBpbmcuCgoqIFtBUEkgYXQgZ2xhbmNlXShodHRwczovL3BleG1vci5naXRodWIuaW8vZGVtby1vcGVuYXBpMy9lbGVtZW50cy5odG1sKQoqIFtHaXRodWIgcGFnZXNdKGh0dHBzOi8vcGV4bW9yLmdpdGh1Yi5pby9kZW1vLW9wZW5hcGkzLykKCiMjIEN1cmwgdGVzdHMKCl9fSlNPTl9fCgpgYGBiYXNoCmN1cmwgLVggJ1BPU1QnIFwKICAnaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YxL2pzb24vdXNlcl8wMDclNDBleGFtcGxlLmNvbScgXAogIC1IICdhY2NlcHQ6ICovKicgXAogIC1IICdYLUF1dGg6IGFiY2QnIFwKICAtSCAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJyBcCiAgLWQgJ3sKICAiZGF0YSI6ICJJeUV2WW1sdUwySmhjMmdLQ2taTVFWTkxYMFJGUWxWSFBURWdURTlIVEVWV1JVdzlSRVZDVlVjZ2NIbDBhRzl1TXlCaGNHbFRjbll1Y0hrSyIsCiAgImhhc2giOiAiY2U5NGE5ZTg1NWNkYWEwNGQ5NWRhMTkzNjExMjM2YjZhZGVjMTYyNTY4NjU2NjJhM2QyMTA1ODU4YjAwZmI0MiIsCiAgImhhc2hfdHlwZSI6ICJzaGEyNTYiLAogICJ2YXJzIjogewogICAgImluZnJhIjogIm9uZSIsCiAgICAiaXB2NCI6IFsKICAgICAgIjEuMi4zLjQvMzIiCiAgICBdLAogICAgInNzaF9wdWJfa2V5IjogWwogICAgICAic3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFCZ1FETC4uLj0geW91ci1pZCIsCiAgICAgICJzc2gtcnNhIEFBQUFCM056YUMxeWMyRUFBQUFEQVFBQkFBQUJnUURMLi4uPSB5b3VyLWlkMiIKICAgIF0KICB9Cn0nCmBgYAoKX19NdWx0aXBhcnQgZm9ybV9fCgpgYGBiYXNoCmN1cmwgLVggJ1BPU1QnIFwKICAnaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YxL211bHRpcGFydC91c2VyXzAwNyU0MGV4YW1wbGUuY29tJyBcCiAgLUggJ2FjY2VwdDogKi8qJyBcCiAgLUggJ1gtQXV0aDogYWJjZCcgXAogIC1IICdDb250ZW50LVR5cGU6IG11bHRpcGFydC9mb3JtLWRhdGEnIFwKICAtRiAnZGF0YT1ATElDRU5TRTt0eXBlPXRleHQvcGxhaW4nIFwKICAtRiAnaGFzaD1jZTk0YTllODU1Y2RhYTA0ZDk1ZGExOTM2MTEyMzZiNmFkZWMxNjI1Njg2NTY2MmEzZDIxMDU4NThiMDBmYjQyJyBcCiAgLUYgJ2hhc2hfdHlwZT1zaGEyNTYnIFwKICAtRiAndmFycz17CiAgImluZnJhIjogIm9uZSIsCiAgImlwdjQiOiBbCiAgICAiMS4yLjMuNC8zMiIKICBdLAogICJzc2hfcHViX2tleSI6IFsKICAgICJzc2gtcnNhIEFBQUFCM056YUMxeWMyRUFBQUFEQVFBQkFBQUJnUURMLi4uPSB5b3VyLWlkIiwKICAgICJzc2gtcnNhIEFBQUFCM056YUMxeWMyRUFBQUFEQVFBQkFBQUJnUURMLi4uPSB5b3VyLWlkMiIKICBdCn0nCmBgYAo= readmeEtag: '"0d3c55869a0f236707e216f4567b0f34e0c8f512"' readmeLastModified: Tue, 26 Oct 2021 08:51:16 GMT repositoryId: 421329326 description: Conceptual demo of simple openapi3 using connexion for quick prototyping. created: '2021-10-26T07:45:44Z' updated: '2021-10-26T08:51:22Z' language: Python archived: false stars: 0 watchers: 1 forks: 0 owner: PexMor logo: https://avatars.githubusercontent.com/u/9293161?v=4 license: MIT repoEtag: '"40f3c6e37e8d382ebc4b7ca36eb5b5b83af2698324663e50555e646f35c0c150"' repoLastModified: Tue, 26 Oct 2021 08:51:22 GMT foundInMaster: true category: Data Validators id: eabb62135bdb48adc356243dae621cd9 - source: openapi3 tags repository: https://github.com/txemac/intelistyle v3: true repositoryMetadata: base64Readme: >- IyBpbnRlbGlzdHlsZSB0YXNrOgpZb3VyIHRhc2sgaXMgdG8gYnVpbGQgYSAoc2luZ2xlIHBhZ2UpIHdlYnNpdGUgdGhhdCBJIGNhbiBzZWFyY2ggZm9yIGEgZ2FybWVudCAoZS5nLiBibGFjayBoYXQpIGFuZCBpdCBzaG91bGQgZGlzcGxheSB0aGUgZ2FybWVudHMgdGhhdCBtYXRjaCB0aGUgc2VhcmNoIGNyaXRlcmlhLgoKIyMgVGhlIHNvbHV0aW9uOgpUaGUgd2Vic2l0ZSBzaG91bGQgbG9hZCBnYXJtZW50cyBmcm9tIGEgTW9uZ29EQiBkYXRhYmFzZS4gWW91IGNhbiBsb2FkIGRhdGEgaW50byB5b3VyIGRhdGFiYXNlIGZyb20gdGhpcyBmaWxlOgoKaHR0cHM6Ly9zdHlsci1haS1lbmdpbmUtc3J2LWRhdGEuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vL3Nydi9kYXRhL25ld19zY3JhcGVzL3Nob3BzdHlsZS0xNjg5LW1lbi0xOC0wMy0yMDE5L2dhcm1lbnRfaXRlbXMuamwKCllvdSBoYXZlIHRoZSBmcmVlZG9tIHRvIHVzZSBhbnkgYnVpbGQgdG9vbGNoYWluIG9yIGhlbHBlciBsaWJyYXJpZXMgbmVjZXNzYXJ5LCBidXQgeW91IG11c3Qgc3RpY2sgdG8gb3VyIGNvcmUgdGVjaG5vbG9naWVzIG9mIFJlYWN0SlMgZm9yIHRoZSBmcm9udGVuZCBhbmQgTm9kZUpTIG9yIFB5dGhvbiBmb3IgdGhlIGJhY2tlbmQuCgpBcyBwYXJ0IG9mIHRoZSBkZWxpdmVyYWJsZSwgdGhlcmUgc2hvdWxkIGJlIGF1dG9tYXRlZCB0ZXN0cyBmb3IgYWxsIHRoZSBwb3NzaWJsZSB1c2UgY2FzZXMgb2YgdGhlIHRhc2suCgojIyBTdWNjZXNzIENyaXRlcmlhOgotIEFwcGxpY2F0aW9uIGFyY2hpdGVjdHVyZSBhbmQgZnJhbWV3b3JrIGJlc3QgcHJhY3RpY2VzIGZvciB0aGUgZnJhbWV3b3JrIGluIHVzZSBhcmUgZm9sbG93ZWQgYW5kIHVuZGVyc3Rvb2QuCi0gQ29kZSBpcyBmb3JtYXR0ZWQgd2VsbCBhbmQgZWFzeSB0byBmb2xsb3cuIFZhcmlhYmxlIGFuZCBmdW5jdGlvbiBuYW1lcyBtYWtlIHNlbnNlCi0gQXBwbGljYXRpb24gZ3JhY2VmdWxseSBoYW5kbGVzIGRhdGFiYXNlIGVycm9yIGNhc2VzIGFuZCBpcyByZXNpc3RhbnQgdG8gdW5leHBlY3RlZCBtZXNzYWdlcy4KLSBEYXRhYmFzZSBxdWVyaWVzIGFyZSBvcHRpbWlzZWQgZm9yIHBlcmZvcm1hbmNlCi0gVGVzdCBjb3ZlcmFnZSBvZiB0aGUgd2ViIHBhZ2UgaXMgc3VmZmljaWVudCBhbmQgdGhvdWdodCBoYXMgYmVlbiBwdXQgaW50byB3aGF0IGFyZWFzIG9mIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgYW5kCiAgc2hvdWxkbuKAmXQgYmUgdGVzdGVkLgoKIyMgQm9udXMgUG9pbnRzIChvcHRpb25hbCk6CgotIERlc2lnbiBhbiBpbmZyYXN0cnVjdHVyZSBhcmNoaXRlY3R1cmUgZGlhZ3JhbSB0aGF0IGNhbiBiZSB1c2VkIHRvIHNjYWxlIHRoZSB3ZWJzaXRlIHRvIHRob3VzYW5kcyBvZiBzZWFyY2hlcyBwZXIKICBzZWNvbmQKCiMjIFN1Ym1pc3Npb24gUmVxdWlyZW1lbnRzOgoKLSBTZW5kIGFuIGVtYWlsIHRvIHlvdXIgcmVjcnVpdGVyIHdpdGggYSBsaW5rIHRvIGEgcHVibGljIGdpdCByZXBvc2l0b3J5IChpbiBHaXRIdWIvQml0QnVja2V0L0dpdExhYiwgZXRjKSB3aXRoIHRoZQogIG5hbWUgW2ZpcnN0bmFtZV0tW3N1Ym1pc3Npb24gZGF0ZV0uCi0gUHJvdmlkZSBhIGxpbmsgdG8gYSBob3N0ZWQgdmVyc2lvbiBvZiB0aGUgcHJvamVjdAotIFlvdSB3aWxsIGJlIGFza2VkIHRvIHNjcmVlbiBzaGFyZSBhbmQgd2FsayB0aHJvdWdoIHRoaXMgYXBwICYgY29kZSBpbiB5b3VyIG5leHQgaW50ZXJ2aWV3LCBwbGVhc2UgaGF2ZSBpdCByZWFkeSB0byBiZQogIHJ1biBwcmlvciB0byB0aGUgaW50ZXJ2aWV3LgoKIyMgUnVuCgpTZXQgZW52aXJvbm1lbnQgdmFyaWFibGU6CgpgYGBzaGVsbCBzY3JpcHQKZXhwb3J0IE1PTkdPREJfVVJMPTxtb25nbyBkYiBVUkw+CmV4cG9ydCBNT05HT0RCX0RCX05BTUU9PG1vbmdvIGRiIGRhdGFiYXNlIG5hbWU+CmV4cG9ydCBNT05HT0RCX0NPTExFQ1RJT049Pm1vbmdvIGRiIGNvbGxlY3Rpb24+CmBgYAoKIyMjIFRlcm1pbmFsIHdpdGggdmlydHVhbCBlbnYKCklmIHlvdSB3YW50IHRvIHJ1biB0aGUgYXBwIGluIGEgdGVybWluYWwsIHdyaXRlOgoKYGBgc2hlbGwgc2NyaXB0CmNkIHNyYwp1dmljb3JuIG1haW46YXBwIC0tcmVsb2FkIC0td29ya2VycyAxIC0taG9zdCAwLjAuMC4wIC0tcG9ydCA4MDAwCmBgYAoKVGVzdDoKCmBgYHNoZWxsIHNjcmlwdApweXRlc3QgLXZ2dgpgYGAKCiMjIyBEb2NrZXIKClJ1bjoKCmBgYHNoZWxsIHNjcmlwdAptYWtlIHJ1bgpgYGAKClN0b3A6CgpgYGBzaGVsbCBzY3JpcHQKbWFrZSBzdG9wCmBgYAoKQ2hlY2sgdGhlIEFQSSB3aXRoIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oZWFsdGgKCiMjIERvY3VtZW50YXRpb24KCmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9kb2NzCg== readmeEtag: '"902d7b76650334d75ed4c6a4ac7e0dd7a7d05049"' readmeLastModified: Thu, 14 Jul 2022 09:09:38 GMT repositoryId: 423989830 description: FastAPI, mongoDB, docker, docker-compose, API created: '2021-11-02T20:30:18Z' updated: '2021-12-09T12:02:03Z' language: Python archived: false stars: 0 watchers: 1 forks: 0 owner: txemac logo: https://avatars.githubusercontent.com/u/10089585?v=4 license: GPL-3.0 repoEtag: '"e8f262e665424010f2635652280ce1ec1f3968f7bdfd2fcd33d278dbdc17e249"' repoLastModified: Thu, 09 Dec 2021 12:02:03 GMT foundInMaster: true category: Server Implementations id: 7cf19b0c1288631db49c5a9670fe1f64 - source: openapi3 tags repository: https://github.com/mdmuradhossain/modern-ecommerce v3: true repositoryMetadata: base64Readme: >- IyBNb2Rlcm4gRWNvbW1lcmNlCgojIyBNb2Rlcm4gRWNvbW1lcmNlIFdlYiBBcHBsaWNhdGlvbgotLS0KIyMjIFRlY2hub2xvZ3kgYW5kIFRvb2xzIFVzZWQKLSBbSkRLIDE1XShodHRwczovL3d3dy5vcmFjbGUuY29tL2phdmEvdGVjaG5vbG9naWVzL2phdmFzZS9qZGsxNS1hcmNoaXZlLWRvd25sb2Fkcy5odG1sKQotIFtTcHJpbmcgQm9vdCAtIDIuNS40XShodHRwczovL3NwcmluZy5pby9wcm9qZWN0cy9zcHJpbmctYm9vdCkKLSBbU3ByaW5nIEJvb3QgRGF0YSBKUEFdKGh0dHBzOi8vc3ByaW5nLmlvL3Byb2plY3RzL3NwcmluZy1kYXRhLWpwYSkKLSBbU3ByaW5nIFNlY3VyaXR5XShodHRwczovL3NwcmluZy5pby9wcm9qZWN0cy9zcHJpbmctc2VjdXJpdHkpCi0gW1RoeW1lbGVhZl0oaHR0cHM6Ly93d3cudGh5bWVsZWFmLm9yZy8pCi0gW0phdmEgTWFpbCBTZW5kZXJdKGh0dHBzOi8vZG9jcy5zcHJpbmcuaW8vc3ByaW5nLWZyYW1ld29yay9kb2NzL2N1cnJlbnQvamF2YWRvYy1hcGkvb3JnL3NwcmluZ2ZyYW1ld29yay9tYWlsL2phdmFtYWlsL0phdmFNYWlsU2VuZGVyLmh0bWwpCi0gW015U1FMIDhdKGh0dHBzOi8vd3d3Lm15c3FsLmNvbS8pCi0gW0xvbWJva10oaHR0cHM6Ly9wcm9qZWN0bG9tYm9rLm9yZy8pCi0gW01hcHN0cnVjdF0oaHR0cHM6Ly9tYXBzdHJ1Y3Qub3JnLykKLSBbSldUXShodHRwczovL2dpdGh1Yi5jb20vand0ay9qand0KQotIFtTdHJpcGVdKGh0dHBzOi8vc3RyaXBlLmNvbS9kb2NzKQotIFtGbHl3YXldKGh0dHBzOi8vZmx5d2F5ZGIub3JnLykKLSBbU3ByaW5nIEJvb3QgQ2FjaGVdKGh0dHBzOi8vc3ByaW5nLmlvL2d1aWRlcy9ncy9jYWNoaW5nLykgIAotIFtPcGVuQVBJIDNdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykKLS0tCiMjIyBJbnN0YWxsYXRpb24KLSBgbXZuIGNsZWFuIGluc3RhbGxgCi0gYG12biBzcHJpbmctYm9vdDpydW5gCi0tLQojIyMgRmVhdHVyZXMKLSBbeF0gU2lnbiBVcCBhbmQgU2lnbiBJbiBTeXN0ZW0gCi0gW3hdIEFkbWluIGFuZCBVc2VyIHN5c3RlbQotIFt4XSBBZGQgQWRtaW4gYW5kIFJvbGUgYW5kIFByaXZpbGVnZQotIFt4XSBNYW5hZ2UgUHJvZHVjdHMgZnJvbSBBZG1pbgotIFt4XSBNYW5hZ2UgQ2F0ZWdvcnkgZnJvbSBBZG1pbgotIFt4XSBNYW5hZ2UgU3ViQ2F0ZWdvcnkgZnJvbSBBZG1pbgotIFt4XSBNYW5hZ2UgQnJhbmQgZnJvbSBBZG1pbgotIFt4XSBNYW5hZ2UgT3JkZXJzCi0gW3hdIE1hbmFnZSBDYXJ0cwotIFt4XSBNYW5hZ2UgT3JkZXIgSXRlbQotIFt4XSBTdHJpcGUgUGF5bWVudCBTeXN0ZW0KCi0tLQoKIyMjIFN3YWdnZXIgVUkKIVtBUElzXShodHRwczovL2dpdGh1Yi5jb20vbWRtdXJhZGhvc3NhaW4vbW9kZXJuLWVjb21tZXJjZS9ibG9iL21haW4vc3JjL21haW4vcmVzb3VyY2VzL3N0YXRpYy9pbWFnZXMvc3dhZ2dlci11aS11cGRhdGUucG5nKQotLS0KIyMjIFBvc3RtYW4gQVBJIFRlc3RpbmcKIVtQb3N0bWFuIHRlc3RpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9tZG11cmFkaG9zc2Fpbi9tb2Rlcm4tZWNvbW1lcmNlL2Jsb2IvbWFpbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3RhdGljL2ltYWdlcy9hdXRocmVzcG9uc2UucG5nKQoKLS0tCiMjIyBDb250cmlidXRlCj4gVGhpcyBpcyBvcGVuIHNvdXJjZSBNb2Rlcm4gRWNvbW1lcmNlIHdlYiBhcHBsaWNhdGlvbiwgYW55IGtpbmQgY29udHJpYnV0aW9uIGlzIHdlbGNvbWUuIEkgZGlkbid0IHRlc3QgdGhlIGFwcGxpY2F0aW9uIHlldC4gQ29udHJpYnV0aW9uIG9mIHRlc3RpbmcgY2FuIGJlIGRvbmUgd2l0aCBKdW5pdCBhbmQgTW9ja2l0by4gVGhhbmsgeW91Lg== readmeEtag: '"379b6aeb43530f4868458b9dac091b8cb30da61c"' readmeLastModified: Tue, 21 Dec 2021 15:45:01 GMT repositoryId: 398491331 description: Modern E-commerce Web Application created: '2021-08-21T07:07:38Z' updated: '2023-02-17T08:31:51Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: mdmuradhossain logo: https://avatars.githubusercontent.com/u/20659502?v=4 repoEtag: '"7e82d95b79d87cea1dbf9348165e8a47cc09b8dc03e30b4d6eeddb249bb7cd47"' repoLastModified: Fri, 17 Feb 2023 08:31:51 GMT foundInMaster: true category: - Low-level Tooling - Server Implementations id: d448d1c32de34d2cdac394afc2b94c90 - source: openapi3 tags repository: https://github.com/umatare5/logbook-api-router-impl v3: true repositoryMetadata: base64Readme: >- IyBsb2dib29rLWFwaS1yb3V0ZXItaW1wbAoKKipETyBOT1QgRURJVCBUSElTIENPREUgTUFOVUFMTFkhKioKCmxvZ2Jvb2stYXBpLWZyYW1ld29yay1pbXBsIGlzIEdvIGltcGxlbWVudGF0aW9uIGZvciBbTG9nYm9vayBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS91bWF0YXJlNS9sb2dib29rLWFwaSkuCgpUaGUgY29kZSB3YXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdXNpbmcgW2xvZ2Jvb2stb3BlbmFwaS1zcmNdKGh0dHBzOi8vZ2l0aHViLmNvbS91bWF0YXJlNS9sb2dib29rLW9wZW5hcGktc3JjKS4KCiMjIFVzYWdlCgpgYGBzaApnbyBnZXQgZ2l0aHViLmNvbS91bWF0YXJlNS9sb2dib29rLWFwaS1yb3V0ZXItaW1wbApgYGAK readmeEtag: '"9f238625480e32825ba8316c2b7e296a8541dcb2"' readmeLastModified: Wed, 26 Jan 2022 17:19:41 GMT repositoryId: 449646146 description: Implementation for routes in my Logbook API created: '2022-01-19T10:29:45Z' updated: '2022-02-15T13:53:41Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: umatare5 logo: https://avatars.githubusercontent.com/u/72645163?v=4 repoEtag: '"d6fe8a2eaf9af3df3e63d0bc10ded6fe46075d37d11413f7c17dd750843588b8"' repoLastModified: Tue, 15 Feb 2022 13:53:41 GMT foundInMaster: true category: Code Generators id: 599d3436d37e07d48888ad50b21f2473 - source: https://openapi.tools/ name: EvoMaster category: Testing language: - Java - Kotlin repository: https://github.com/webfuzzing/evomaster source_description: >- A tool for automatically generating system-level test cases for RESTful APIs, using Evolutionary Algorithms and Dynamic Program Analysis. v2: true v3: true repositoryMetadata: base64Readme: >- IyBFdm9NYXN0ZXI6IEEgVG9vbCBGb3IgQXV0b21hdGljYWxseSBHZW5lcmF0aW5nIFN5c3RlbS1MZXZlbCBUZXN0IENhc2VzCgoKIVtdKGRvY3MvaW1nL2NhcmwtY2Vyc3RyYW5kLTEzNjgxMF9jb21wcmVzc2VkLmpwZyAgIlBob3RvIGJ5IENhcmwgQ2Vyc3RyYW5kIG9uIFVuc3BsYXNoIikKClshW01hdmVuIENlbnRyYWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tY2VudHJhbC92L29yZy5ldm9tYXN0ZXIvZXZvbWFzdGVyLWNsaWVudC1qYXZhLnN2Zz9sYWJlbD1NYXZlbiUyMENlbnRyYWwpXShodHRwczovL2NlbnRyYWwuc29uYXR5cGUuY29tL2FydGlmYWN0L29yZy5ldm9tYXN0ZXIvZXZvbWFzdGVyLWNsaWVudC1qYXZhKQpbIVtqYXZhZG9jXShodHRwczovL2phdmFkb2MuaW8vYmFkZ2UyL29yZy5ldm9tYXN0ZXIvZXZvbWFzdGVyLWNsaWVudC1qYXZhLWNvbnRyb2xsZXIvamF2YWRvYy5zdmcpXShodHRwczovL2phdmFkb2MuaW8vZG9jL29yZy5ldm9tYXN0ZXIvZXZvbWFzdGVyLWNsaWVudC1qYXZhLWNvbnRyb2xsZXIpCiFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJGdXp6aW5nL0V2b01hc3Rlci93b3JrZmxvd3MvQ0kvYmFkZ2Uuc3ZnKQpbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvV2ViRnV6emluZy9Fdm9NYXN0ZXIvYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvV2ViRnV6emluZy9Fdm9NYXN0ZXIpClshW0RPSV0oaHR0cHM6Ly96ZW5vZG8ub3JnL2JhZGdlL0RPSS8xMC41MjgxL3plbm9kby41MDUyMDM2LnN2ZyldKGh0dHBzOi8vZG9pLm9yZy8xMC41MjgxL3plbm9kby41MDUyMDM2KQpbIVtMaWNlbnNlOiBMR1BMIHYzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtTEdQTF92My1ibHVlLnN2ZyldKGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjApClshW0dpdGh1YiBBbGwgUmVsZWFzZXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2Rvd25sb2Fkcy9XZWJGdXp6aW5nL2V2b21hc3Rlci90b3RhbC5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vV2ViRnV6emluZy9Fdm9NYXN0ZXIvcmVsZWFzZXMpCgoKIyMjIFN1bW1hcnkKCl9Fdm9NYXN0ZXJfIChbd3d3LmV2b21hc3Rlci5vcmddKGh0dHA6Ly9ldm9tYXN0ZXIub3JnKSkgaXMgdGhlIGZpcnN0ICgyMDE2KSBvcGVuLXNvdXJjZSBBSS1kcml2ZW4gdG9vbAp0aGF0IGF1dG9tYXRpY2FsbHkgKmdlbmVyYXRlcyogc3lzdGVtLWxldmVsIHRlc3QgY2FzZXMKZm9yIHdlYi9lbnRlcnByaXNlIGFwcGxpY2F0aW9ucy4KVGhpcyBpcyByZWxhdGVkIHRvIFtGdXp6aW5nXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GdXp6aW5nKS4KSW4gcGFydGljdWxhciwgX0V2b01hc3Rlcl8gY2FuIGZ1enogQVBJcyBzdWNoIGFzIFJFU1QsIEdyYXBoUUwgYW5kIFJQQy4KTm90IG9ubHkgX0V2b01hc3Rlcl8gY2FuIGdlbmVyYXRlIGlucHV0cyB0aGF0IGZpbmQgcHJvZ3JhbSBjcmFzaGVzLCBidXQgYWxzbyBpdCBnZW5lcmF0ZXMgc21hbGwgZWZmZWN0aXZlIHRlc3Qgc3VpdGVzIChlLmcuLCBpbiBQeXRob24sIEphdmFTY3JpcHQgYW5kIEphdmEvS290bGluIEpVbml0IGZvcm1hdCkgdGhhdCBjYW4gYmUgdXNlZCBmb3IgX3JlZ3Jlc3Npb24gdGVzdGluZ18uCgpfRXZvTWFzdGVyXyBpcyBhbiBBSSBkcml2ZW4gdG9vbC4KSW4gcGFydGljdWxhciwgaW50ZXJuYWxseSBpdCB1c2VzIGFuIFtFdm9sdXRpb25hcnkgQWxnb3JpdGhtXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25hcnlfYWxnb3JpdGhtKQphbmQgW0R5bmFtaWMgUHJvZ3JhbSBBbmFseXNpc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRHluYW1pY19wcm9ncmFtX2FuYWx5c2lzKSAgdG8gYmUKYWJsZSB0byBnZW5lcmF0ZSBlZmZlY3RpdmUgdGVzdCBjYXNlcy4KVGhlIGFwcHJvYWNoIGlzIHRvICpldm9sdmUqIHRlc3QgY2FzZXMgZnJvbSBhbiBpbml0aWFsIHBvcHVsYXRpb24gb2YKcmFuZG9tIG9uZXMsIHRyeWluZyB0byBtYXhpbWl6ZSBtZWFzdXJlcyBsaWtlIGNvZGUgY292ZXJhZ2UgYW5kIGZhdWx0IGRldGVjdGlvbi4KX0V2b01hc3Rlcl8gdXNlcyBzZXZlcmFsIGtpbmRzIG9mIEFJIGhldXJpc3RpY3MgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBldmVuIGZ1cnRoZXIsCmJ1aWxkaW5nIG9uIGRlY2FkZXMgb2YgcmVzZWFyY2ggaW4gdGhlIGZpZWxkIG9mIFtTZWFyY2gtQmFzZWQgU29mdHdhcmUgVGVzdGluZ10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VhcmNoLWJhc2VkX3NvZnR3YXJlX2VuZ2luZWVyaW5nKS4KCgojIyMgMS1NaW51dGUgRXhhbXBsZSAKCk9uIGEgY29uc29sZSwgY29weSZwYXN0ZSB0aGUgZm9sbG93aW5nIChyZXF1aXJlcyBfRG9ja2VyXyBpbnN0YWxsZWQpLgpJdCB3aWxsIGZ1enogdGhlIFBldENsaW5pYyBleGFtcGxlIEFQSSBmcm9tIFN3YWdnZXIsIGZvciAzMCBzZWNvbmRzLCBhcyBzaG93biBpbiB0aGUgZm9sbG93aW5nIHZpZGVvLiAKCmBgYApkb2NrZXIgcnVuIC12ICIkKHB3ZCkvZ2VuZXJhdGVkX3Rlc3RzIjovZ2VuZXJhdGVkX3Rlc3RzIHdlYmZ1enppbmcvZXZvbWFzdGVyICAtLWJsYWNrQm94IHRydWUgLS1tYXhUaW1lIDMwcyAgLS1yYXRlUGVyTWludXRlIDYwIC0tYmJTd2FnZ2VyVXJsICBodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uCmBgYAoKCiFbXShkb2NzL2ltZy9ldm9tYXN0ZXJfZG9ja2VyX3VzZS5naWYpCgojIyMjIFVzaW5nIERvY2tlciBvbiBEaWZmZXJlbnQgU2hlbGxzCgpOb3RlIHRoYXQsIGRlcGVuZGluZyBvbiB3aGljaCBzaGVsbCBhbmQgb3BlcmF0aW5nIHN5c3RlbSB5b3UgYXJlIHVzaW5nLCB5b3UgbWlnaHQgbmVlZCBzbGlnaHRseSBkaWZmZXJlbnQgY29tbWFuZHMgd2hlbiBtb3VudGluZyBmb2xkZXJzIHdpdGggdGhlIGAtdmAgb3B0aW9uLiAgCgpGb3IgZXhhbXBsZSwgaWYgcnVuIGluIGEgTVNZUyBzaGVsbCBvbiBXaW5kb3dzIGxpa2UgX0dpdCBCYXNoXywgdGhlcmUgaXMgdGhlIG5lZWQgb2YgYW4gZXh0cmEgLyBiZWZvcmUgdGhlICQuCgpgYGAKZG9ja2VyIHJ1biAtdiAiLyQocHdkKS9nZW5lcmF0ZWRfdGVzdHMiOi9nZW5lcmF0ZWRfdGVzdHMgd2ViZnV6emluZy9ldm9tYXN0ZXIgIC0tYmxhY2tCb3ggdHJ1ZSAtLW1heFRpbWUgMzBzICAtLXJhdGVQZXJNaW51dGUgNjAgLS1iYlN3YWdnZXJVcmwgIGh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby92Mi9zd2FnZ2VyLmpzb24KYGBgCgpJZiB5b3UgYXJlIHJhdGhlciB1c2luZyBhIENvbW1hbmQgUHJvbXB0IChDbWQuZXhlKSB0ZXJtaW5hbCwgeW91IG5lZWQgdG8gdXNlIGAlQ0QlYCBpbnN0ZWFkIG9mIGAkKHB3ZClgIHRvIHJlZmVyIHRvIHRoZSBjdXJyZW50IGZvbGRlcjoKCmBgYApkb2NrZXIgcnVuIC12ICVDRCUvZ2VuZXJhdGVkX3Rlc3RzOi9nZW5lcmF0ZWRfdGVzdHMgd2ViZnV6emluZy9ldm9tYXN0ZXIgIC0tYmxhY2tCb3ggdHJ1ZSAtLW1heFRpbWUgMzBzICAtLXJhdGVQZXJNaW51dGUgNjAgLS1iYlN3YWdnZXJVcmwgIGh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby92Mi9zd2FnZ2VyLmpzb24KYGBgCgpPbiB0aGUgb3RoZXIgaGFuZCwgb24gYSBQb3dlclNoZWxsIHlvdSBuZWVkIGAke1BXRH1gOgoKYGBgCmRvY2tlciBydW4gLXYgJHtQV0R9L2dlbmVyYXRlZF90ZXN0czovZ2VuZXJhdGVkX3Rlc3RzIHdlYmZ1enppbmcvZXZvbWFzdGVyICAtLWJsYWNrQm94IHRydWUgLS1tYXhUaW1lIDMwcyAgLS1yYXRlUGVyTWludXRlIDYwIC0tYmJTd2FnZ2VyVXJsICBodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uCmBgYAoKIyMjIyBUcm91Ymxlc2hvb3RpbmcKCklmIHlvdSBlbmNvdW50ZXIgaXNzdWVzIHJ1bm5pbmcgdGhlIGNvbW1hbmQ6CgoqIEVuc3VyZSBEb2NrZXIgaXMgaW5zdGFsbGVkIGFuZCBydW5uaW5nLgoqIENoZWNrIHRoYXQgeW91IGhhdmUgdGhlIGNvcnJlY3QgcmlnaHRzL3Blcm1pc3Npb25zIHRvIG1vdW50IHRoZSBzcGVjaWZpZWQgdm9sdW1lLgoqIENvbnN1bHQgdGhlIERvY2tlciBkb2N1bWVudGF0aW9uIGZvciB5b3VyIHNoZWxsIGVudmlyb25tZW50IGZvciBzcGVjaWZpYyBzeW50YXggcmVxdWlyZW1lbnRzLgoKCiMjIyMgR2VuZXJhdGVkIE91dHB1dAoKT25jZSB0aGUgY29tbWFuZCBpcyBleGVjdXRlZCwgeW91IGNhbiBpbnNwZWN0IHRoZSBnZW5lcmF0ZWQgZmlsZXMgdW5kZXIgYGdlbmVyYXRlZF90ZXN0c2AgZm9sZGVyLiAKCk5vdGUsIHNpbmNlIHZlcnNpb24gNC4wLjAsIG5vdyBfRXZvTWFzdGVyXyBieSBkZWZhdWx0IGFsc28gY3JlYXRlcyBhbiBpbnRlcmFjdGl2ZSB3ZWIgcmVwb3J0LgoKIVtdKGRvY3MvaW1nL3JlcG9ydF9vdmVydmlldy5wbmcpCgohW10oZG9jcy9pbWcvcmVwb3J0X2VuZHBvaW50cy5wbmcpCgojIyMgS2V5IGZlYXR1cmVzCgoqIF9XZWIgQVBJc186IEF0IHRoZSBtb21lbnQsIF9Fdm9NYXN0ZXJfIGNhbiBnZW5lcmF0ZSB0ZXN0IGNhc2VzIGZvciBfX1JFU1RfXywgX19HcmFwaFFMX18gYW5kIF9fUlBDX18gKGUuZy4sIF9fZ1JQQ19fIGFuZCBfX1RocmlmdF9fKSBBUElzLgoKKiBfRnJlZV86IHRoaXMgaXMgYW4gb3Blbi1zb3VyY2UgcHJvamVjdCwgd2l0aCBmdW5kaW5nIGZyb20gcHVibGljIHJlc2VhcmNoIChlLmcuLCBwcm9mZXNzb3JzLCBwb3N0ZG9jcyBhbmQgUGhEIHN0dWRlbnRzKS4KICAgICAgICAgIFRoZXJlIGlzIG5vIG1vbmV0YXJ5IGNvc3QgaW52b2x2ZWQgaW4gdXNpbmcgdGhpcyB0b29sLCBvciBuZWVkIHRvIHVzZSBhbnkgcGFpZCBleHRlcm5hbCBzZXJ2aWNlcyAoZS5nLiwgZXh0ZXJuYWwgTExNIEFQSXMpLgogICAgICAgICAgSWYgeW91IGFyZSBhIHJlc2lkZW50IGluIEVVLCBOb3J3YXksIEFyZ2VudGluYSwgQ2hpbmEsIG9yIGFueSBhc3NvY2lhdGUgY291bnRyeSBpbnZvbHZlZCB3aXRoIEVSQywgdGhhbmtzIGZvciB5b3VyIHRheCBtb25leSBzdXBwb3J0aW5nIHRoaXMgcHJvamVjdC4gCgoqIF9Jbi1ob3VzZSwgbm8gdGVsZW1ldHJ5XzogY3VycmVudGx5IHRoZXJlIGlzIG5vIHRlbGVtZXRyeSBpbiB1c2UgaW4gX0V2b01hc3Rlcl8sIGFuZCBpdCBkb2VzIG5vdCByZXF1aXJlIHRvIGNvbm5lY3QgdG8gYW55IGV4dGVybmFsIHNlcnZpY2Ugb24gaW50ZXJuZXQsIGJlc2lkZXMgdGhlIHRlc3RlZCBhcHBsaWNhdGlvbi4gQUZBSUssIGl0IGNhbiBiZSBydW4gaW4taG91c2Ugd2l0aG91dCBhbnkgd29ycnkgb2YgbGVha2luZyBhbnkgSVAgdG8gZXh0ZXJuYWwgcGFydGllcyAoaWYgbm90LCBwbGVhc2Ugb3BlbiBhIG5ldyBpc3N1ZSB0byB0ZWxsIHVzIGhvdyB0aGF0IGNvdWxkIGhhcHBlbiwgYW5kIHdlIHdpbGwgdHJ5IHRvIGZpeCBpdCkuIAoKKiBfQmxhY2stQm94XyB0ZXN0aW5nIG1vZGU6IGNhbiBydW4gb24gYW55IEFQSSAocmVnYXJkbGVzcyBvZiBpdHMgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIGUuZy4sIFB5dGhvbiBhbmQgR28pLgogIEhvd2V2ZXIsIHJlc3VsdHMgZm9yIGJsYWNrLWJveCB0ZXN0aW5nIHdpbGwgYmUgd29yc2UgdGhhbiB3aGl0ZS1ib3ggdGVzdGluZyAoZS5nLiwgZHVlIHRvIGxhY2sgb2YgY29kZSBhbmFseXNpcykuCiAgRGVmYXVsdCB0ZXN0IGNhc2Ugb3V0cHV0IGlzIGluIFB5dGhvbiwgYnV0IG90aGVyIGZvcm1hdHMgYXJlIGF2YWlsYWJsZSBhcyB3ZWxsLiAKCiogX1doaXRlLUJveF8gdGVzdGluZyBtb2RlOiBjYW4gYmUgdXNlZCBmb3IgQVBJcyBjb21waWxlZCB0bwogIEpWTSAoZS5nLiwgSmF2YSBhbmQgS290bGluKS4gX0V2b01hc3Rlcl8gYW5hbHlzZXMgdGhlIGJ5dGVjb2RlIG9mIHRoZSB0ZXN0ZWQgYXBwbGljYXRpb25zLCBhbmQgdXNlcwogIHNldmVyYWwgaGV1cmlzdGljcyBzdWNoIGFzIF90ZXN0YWJpbGl0eSB0cmFuc2Zvcm1hdGlvbnNfIGFuZCBfdGFpbnQgYW5hbHlzaXNfIHRvIGJlIGFibGUgdG8gZ2VuZXJhdGUKICBtb3JlIGVmZmVjdGl2ZSB0ZXN0IGNhc2VzLiBXZSBzdXBwb3J0IEpESyBfXzhfXyBhbmQgdGhlIG1ham9yIExUUyB2ZXJzaW9ucyBhZnRlciB0aGF0IChjdXJyZW50bHkgSkRLIF9fMjFfXykuIE1pZ2h0IHdvcmsgb24gb3RoZXIgSlZNIHZlcnNpb25zLCBidXQgd2UgcHJvdmlkZSBfX05PX18gc3VwcG9ydCBmb3IgaXQuCiAgTm90ZTogdGhlcmUgd2FzIGluaXRpYWwgc3VwcG9ydCBmb3Igb3RoZXIgbGFuZ3VhZ2VzIGFzIHdlbGwsIGxpa2UgZm9yIGV4YW1wbGUgSmF2YVNjcmlwdC9UeXBlU2NyaXB0IGFuZCBDIywgYnV0IHRoZXkgd2VyZSBub3QgaW4gYSBzdGFibGUsIGZlYXR1cmUtY29tcGxldGUgc3RhdGUuIFRoZSBzdXBwb3J0IGZvciB0aG9zZSBsYW5ndWFnZXMgZm9yIHdoaXRlLWJveCB0ZXN0aW5nIGhhcyBiZWVuIGRyb3BwZWQsIGF0IGxlYXN0IGZvciB0aGUgdGltZSBiZWluZy4gCgoqIF9JbnN0YWxsYXRpb25fOiB3ZSBwcm92aWRlIGluc3RhbGxlcnMgZm9yIHRoZSBtYWluIG9wZXJhdGluZyBzeXN0ZW1zOiBfV2luZG93c18gKGAubXNpYCksCiAgX09TWF8gKGAuZG1nYCkgYW5kIF9MaW51eF8gKGAuZGViYCkuIFdlIGFsc28gcHJvdmlkZSBhbiB1YmVyLWZhdCBKQVIgZmlsZS4KICBUbyBkb3dubG9hZCB0aGVtLCBzZWUgdGhlIFtSZWxlYXNlIHBhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJGdXp6aW5nL0V2b01hc3Rlci9yZWxlYXNlcykuCiAgUmVsZWFzZSBub3RlcyBhcmUgcHJlc2VudCBpbiB0aGUgZmlsZSBbcmVsZWFzZV9ub3Rlcy5tZF0oaHR0cHM6Ly9naXRodWIuY29tL1dlYkZ1enppbmcvRXZvTWFzdGVyL2Jsb2IvbWFzdGVyL3JlbGVhc2Vfbm90ZXMubWQpLgogIElmIHlvdSBhcmUgdXNpbmcgdGhlIHViZXItZmF0IEpBUiwgaXQgc2hvdWxkIHdvcmsgd2l0aCBhbnkgbWFqb3IgTFRTIHZlcnNpb24gKGZyb20gSkRLIDggb24pLgogICBXaGVyZWFzIGZvciB0aGUgY2xpZW50IGxpYnJhcnksIG5lZWRlZCBmb3Igd2hpdGUtYm94IHRlc3RpbmcsIHdlIHdpbGwgc3VwcG9ydCBKREsgOCBsaWtlbHkgZm9yIGEgbG9uZywgbG9uZyB3aGlsZSwgYmUgd2FybmVkIHRoYXQgZnV0dXJlIHZlcnNpb25zIG9mIHRoZSBleGVjdXRhYmxlIEpBUiBtaWdodCBzdGFydCB0byByZXF1aXJlIGhpZ2hlciB2ZXJzaW9ucyBvZiB0aGUgSkRLIGluIGEgbm9uLXNvLWRpc3RhbnQgZnV0dXJlLgogICBJZiB0aGF0IGlzIGdvaW5nIHRvIGJlIGhpZ2hlciB0aGFuIHlvdXIgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBKVk0sIGlmIHlvdSBjYW5ub3QgdXBncmFkZSBvciBoYXZlIDIgZGlmZmVyZW50IEpES3Mgb24geW91ciBtYWNoaW5lLCB0aGVuIHlvdSBzaG91bGQgbm90IHVzZSB0aGUgdWJlci1qYXIgYnV0IHJhdGhlciBvbmUgb2YgdGhlIGluc3RhbGxlcnMuIAogICBXaGVuIHlvdSB1c2Ugb25lIG9mIHRoZSBpbnN0YWxsZXJzLCBrZWVwIGluIG1pbmQgdGhhdCBjdXJyZW50bHkgdGhleSBkbyBub3QgdXBkYXRlIHRoZSBgUEFUSGAgdmFyaWFibGUuIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBtYW51YWxseSwgW3NlZSBkb2N1bWVudGF0aW9uXShkb2NzL2Rvd25sb2FkLm1kKS4gCiAgIEFsc28ga2VlcCBpbiBtaW5kIHdlIGhhdmUgbm90IHBhaWQgdGhlIFtNaWNyb3NvZnQvQXBwbGUgVGF4XShkb2NzL2Rvd25sb2FkLm1kKS4gVGhpcyBtZWFucyB0aGF0IHlvdXIgb3BlcmF0aW5nIHN5c3RlbSBieSBkZWZhdWx0IHdpbGwgYmxvY2sgdGhlIGluc3RhbGxhdGlvbiwgc3RhdGluZyBpdCBjYW5ub3QgdmVyaWZ5IGl0IGlzIG5vdCBhIG1hbHdhcmUuIAogICBCdXQgdGhlIGJsb2NrIFtjYW4gYmUgYnlwYXNzZWRdKGRvY3MvZG93bmxvYWQubWQpLgoKKiBfRG9ja2VyXzogX0V2b01hc3Rlcl8gaXMgbm93IHJlbGVhc2VkIHZpYSBEb2NrZXIgYXMgd2VsbCwgdW5kZXIgW3dlYmZ1enppbmcvZXZvbWFzdGVyXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3Ivd2ViZnV6emluZy9ldm9tYXN0ZXIpIG9uIERvY2tlciBIdWIuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgX0V2b01hc3Rlcl8gdmlhIERvY2tlciwgW3NlZSBkb2N1bWVudGF0aW9uXShkb2NzL2RvY2tlci5tZCkuCgoqIF9HaXRIdWIgQWN0aW9uXzogaXQgaXMgcG9zc2libGUgdG8gcnVuIF9Fdm9NYXN0ZXJfIGluIEdpdEh1YiBBY3Rpb25zLCBhcyBwYXJ0IG9mIENvbnRpbnVvdXMgSW50ZWdyYXRpb24sIGJ5IHVzaW5nIHRoZSBbZm9sbG93aW5nIGN1c3RvbSBhY3Rpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJGdXp6aW5nL2V2b21hc3Rlci1hY3Rpb24pICh3aGljaCBpcyBpbiBhIGRpZmZlcmVudCBHaXRIdWIgcmVwb3NpdG9yeSkuCgoqIF9IYXJkd2FyZV86IGFsdGhvdWdoIHN0YXRlLW9mLXRoZS1hcnQgQUkgdGVjaG5pcXVlcyBhcmUgdXNlZCwgdGhlcmUgaXMgbm8gbWFqb3IgaGFyZHdhcmUgcmVxdWlyZW1lbnQgdG8gYmUgYWJsZSB0byBydW4gX0V2b01hc3Rlcl8uIEl0IHdpbGwgd29yayBldmVuIG9uIG9sZCBsYXB0b3BzLiBUaGUgbWFpbiBjb21wdXRhdGlvbmFsIGJvdHRsZW5lY2sgaXMgcnVubmluZyB0aGUgdGVzdGVkIGFwcGxpY2F0aW9ucywgYW5kIG1ha2luZyBuZXR3b3JrIGNhbGxzIHRvIHRoZW0uIAoKKiBfU3RhdGUtb2YtdGhlLWFydF86IGFuIFtpbmRlcGVuZGVudCBzdHVkeSAoMjAyMildKGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yMjA0LjA4MzQ4KSwgY29tcGFyaW5nIDEwIGZ1enplcnMgb24gMjAgUkVTVGZ1bCBBUElzLCBzaG93cyB0aGF0IF9Fdm9NYXN0ZXJfIGdpdmVzIHRoZSBiZXN0IHJlc3VsdHMuIEFub3RoZXIgW2luZGVwZW5kZW50IHN0dWR5ICgyMDI0KV0oaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzI0MTAuMTI1NDcpIGRvbmUgYnkgYSBkaWZmZXJlbnQgcmVzZWFyY2ggZ3JvdXAgY29uZmlybXMgdGhlc2UgcmVzdWx0cy4KCiogX1NjaGVtYV86IFJFU1QgQVBJcyBtdXN0IHByb3ZpZGUgYSBzY2hlbWEgaW4gW09wZW5BUEkvU3dhZ2dlcl0oaHR0cHM6Ly9zd2FnZ2VyLmlvKQogIGZvcm1hdCAoZWl0aGVyIF92Ml8gb3IgX3YzXykuCgoqIF9PdXRwdXRfOiB0aGUgdG9vbCBnZW5lcmF0ZXMgX0pVbml0XyAodmVyc2lvbiA0IG9yIDUpIHRlc3RzLCB3cml0dGVuIGluIGVpdGhlciBKYXZhIG9yIEtvdGxpbiwgYXMgd2VsbCBhcyB0ZXN0IHN1aXRlcyBpbiBQeXRob24gYW5kIEphdmFTY3JpcHQuIEZvciBhIGNvbXBsZXRlIGxpc3QsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIENMSSBwYXJhbWV0ZXIgWy0tb3V0cHV0Rm9ybWF0XShkb2NzL29wdGlvbnMubWQpLiAKICBTb21lIGV4YW1wbGVzIGFyZTogUFlUSE9OX1VOSVRURVNULCBLT1RMSU5fSlVOSVRfNSwgSkFWQV9KVU5JVF80IGFuZCBKU19KRVNULgogIE5vdGUgdGhhdCB0aGUgZ2VuZXJhdGVkIHRlc3RzIHJlbHkgb24gdGhpcmQtcGFydHkgbGlicmFyaWVzIChlLmcuLCB0byBtYWtlIEhUVFAgY2FsbHMpLiAKICBUaGVzZSB3aWxsIG5lZWQgdG8gYmUgc2V0dXAgaW4geW91ciBwcm9qZWN0cywgW3NlZSBkb2N1bWVudGF0aW9uXShkb2NzL2xpYnJhcnlfZGVwZW5kZW5jaWVzLm1kKS4KCiogX1dlYiBSZXBvcnRfOiBiZXNpZGVzIGdlbmVyYXRpbmcgZXhlY3V0YWJsZSB0ZXN0cyBpbiBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIGFuIGludGVyYWN0aXZlIF9pbmRleC5odG1sXyB3ZWIgcmVwb3J0IGlzIGNyZWF0ZWQgYXMgd2VsbCBieSBkZWZhdWx0LCB2aXN1YWxpemluZyBhbmQgc3VtbWFyaXppbmcgdGhlIHJlc3VsdHMgb2YgdGhlIGdlbmVyYXRlZCB0ZXN0cy4gCgoqIF9GYXVsdCBkZXRlY3Rpb25fOiBfRXZvTWFzdGVyXyBjYW4gZ2VuZXJhdGUgdGVzdHMgY2FzZXMgdGhhdCByZXZlYWwgZmF1bHRzL2J1Z3MgaW4gdGhlIHRlc3RlZCBhcHBsaWNhdGlvbnMuCiAgRGlmZmVyZW50IGhldXJpc3RpY3MgYXJlIGVtcGxveWVkLCBsaWtlIGNoZWNraW5nIGZvciA1MDAgc3RhdHVzIGNvZGVzLCBtaXNtYXRjaGVzIGZyb20gdGhlIEFQSSBzY2hlbWFzIGFuZCBhY2Nlc3MgcG9saWN5IHZpb2xhdGlvbnMuCgoqIF9TZWxmLWNvbnRhaW5lZCB0ZXN0c186IGZvciB3aGl0ZS1ib3ggdGVzdGluZywgdGhlIGdlbmVyYXRlZCB0ZXN0cyBkbyBzdGFydC9zdG9wIHRoZSBhcHBsaWNhdGlvbiwgYmluZGluZyB0byBhbiBlcGhlbWVyYWwgcG9ydC4KICBUaGlzIG1lYW5zIHRoYXQgdGhlIGdlbmVyYXRlZCB0ZXN0cyBjYW4gYmUgdXNlZCBmb3IgX3JlZ3Jlc3Npb24gdGVzdGluZ18gKGUuZy4sIGFkZGVkIHRvIHRoZSBHaXQgcmVwb3NpdG9yeQogIG9mIHRoZSBhcHBsaWNhdGlvbiwgYW5kIHJ1biB3aXRoIGFueSBidWlsZCB0b29sIHN1Y2ggYXMgTWF2ZW4gYW5kIEdyYWRsZSkuCiAgRm9yIGJsYWNrLWJveCB0ZXN0aW5nLCB5b3Ugd2lsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYXBwbGljYXRpb24gaXMgdXAgYW5kIHJ1bm5pbmcgYmVmb3JlIGV4ZWN1dGluZyB0aGUgdGVzdHMuIAoKKiBfRGF0YWJhc2UgaGFuZGxpbmdfOiBmb3Igd2hpdGUtYm94IHRlc3RpbmcsIF9Fdm9NYXN0ZXJfIGNhbiBpbnRlcmNlcHQgYW5kIGFuYWx5c2UgYWxsIGNvbW11bmljYXRpb25zIGRvbmUgd2l0aCBTUUwgYW5kIE1vbmdvREIgZGF0YWJhc2VzLCBhbmQgdXNlCiAgc3VjaCBpbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBoaWdoZXIgY29kZSBjb3ZlcmFnZSB0ZXN0IGNhc2VzLiBGdXJ0aGVybW9yZSwgaXQgY2FuIGdlbmVyYXRlIGRhdGEgZGlyZWN0bHkKICBpbnRvIHRoZSBkYXRhYmFzZXMsIGFuZCBoYXZlIHN1Y2ggaW5pdGlhbGl6YXRpb24gYXV0b21hdGljYWxseSBhZGRlZCBpbiB0aGUgZ2VuZXJhdGVkIHRlc3RzLgogIEF0IHRoZSBtb21lbnQsIF9Fdm9NYXN0ZXJfIHN1cHBvcnRzIF9Qb3N0Z3Jlc18sIF9NeVNRTF8sIF9IMl8gIGFuZCBNb25nb0RCICBkYXRhYmFzZXMuCgoqIF9BdXRoZW50aWNhdGlvbl86IHdlIHN1cHBvcnQgYXV0aCBiYXNlZCBvbiBhdXRoZW50aWNhdGlvbiBoZWFkZXJzIGFuZCBjb29raWVzLgogIEJlc2lkZXMgdXNpbmcgZml4ZWQgSFRUUCBoZWFkZXJzLCAKICBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGRlY2xhcmF0aXZlbHkgc3BlY2lmeSB3aGljaCBsb2dpbiBlbmRwb2ludCBzaG91bGQgYmUgdXNlZCB0byBkeW5hbWljYWxseSBvYnRhaW4gYXV0aGVudGljYXRpb24gaW5mbyAoZS5nLiwgYXV0aCB0b2tlbnMgb3IgY29va2llcykgZm9yIGVhY2ggdGVzdCBleGVjdXRpb24uIFtTZWUgZG9jdW1lbnRhdGlvbl0oZG9jcy9hdXRoLm1kKS4KCiMjIyBLbm93biBMaW1pdGF0aW9ucwoKKiBfRHJpdmVyXzogdG8gYmUgdXNlZCBmb3IgX3doaXRlLWJveF8gdGVzdGluZywgdXNlcnMgbmVlZCB0byB3cml0ZSBhIFtkcml2ZXIgbWFudWFsbHldKGRvY3Mvd3JpdGVfZHJpdmVyLm1kKS4KICBXZSByZWNvbW1lbmQgdG8gdHJ5IF9ibGFjay1ib3hfIG1vZGUgZmlyc3QgKHNob3VsZCBqdXN0IG5lZWQgYSBmZXcgbWludXRlcyB0byBnZXQgaXQgdXAgYW5kIHJ1bm5pbmcpIHRvIGdldAogIGFuIGlkZWEgb2Ygd2hhdCBfRXZvTWFzdGVyXyBjYW4gZG8gZm9yIHlvdS4KCiogX0pESyA5K186IHdoaXRlLWJveCB0ZXN0aW5nIHJlcXVpcmVzIGJ5dGVjb2RlIG1hbmlwdWxhdGlvbi4gCiAgICAgICAgICAgIEVhY2ggbmV3IHJlbGVhc2Ugb2YgdGhlIEpESyBtYWtlcyBkb2luZyB0aGlzIGhhcmRlciBhbmQgaGFyZGVyLiAKICAgICAgICAgICAgRGVhbGluZyB3aXRoIEpES3MgYWJvdmUgX184X18gaXMgZG9hYmxlLCBidXQgaXQgcmVxdWlyZXMgc29tZSBzZXR0aW5ncy4KICAgICAgICAgICAgW1NlZSBkb2N1bWVudGF0aW9uXShkb2NzL2pka3MubWQpLgoKKiBfRXhlY3V0aW9uIHRpbWVfOiB0byBnZXQgZ29vZCByZXN1bHRzLCB5b3UgbWlnaHQgbmVlZCB0byBydW4gdGhlIHNlYXJjaCBmb3Igc2V2ZXJhbCBob3Vycy4KICBXZSByZWNvbW1lbmQgdG8gZmlyc3QgdHJ5IHRoZSBzZWFyY2ggZm9yIDEwIG1pbnV0ZXMsIGp1c3QgdG8gZ2V0IGFuIGlkZWEgb2Ygd2hhdCB0eXBlIG9mIHRlc3RzIGNhbiBiZSBnZW5lcmF0ZWQuCiAgQnV0LCB0aGVuLCB5b3Ugc2hvdWxkIHJ1biBfRXZvTWFzdGVyXyBmb3Igc29tZXRoaW5nIGxpa2UgYmV0d2VlbiAxIGFuZCAyNCBob3VycyAodGhlIGxvbmdlciB0aGUgYmV0dGVyLCBidXQKICBpdCBpcyB1bmxpa2VseSB0byBnZXQgYmV0dGVyIHJlc3VsdHMgYWZ0ZXIgMjQgaG91cnMpLgoKKiBfUlBDIEFQSXNfOiBmb3IgdGhlIG1vbWVudCwgd2UgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgUlBDIHNjaGVtYSBkZWZpbml0aW9ucy4gRnV6emluZyBSUEMgQVBJcyByZXF1aXJlcyB0byB3cml0ZSBhIGRyaXZlciwgdXNpbmcgdGhlIGNsaWVudCBsaWJyYXJ5IG9mIHRoZSBBUEkgdG8gbWFrZSB0aGUgY2FsbHMuCgoqIF9FeHRlcm5hbCBzZXJ2aWNlc186IChlLmcuLCBvdGhlciBSRVNUZnVsIEFQSXMpIGN1cnJlbnRseSB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciB0aGVtIChlLmcuLCB0byBhdXRvbWF0aWNhbGx5IG1vY2sgdGhlbSkuCiAgSXQgaXMgd29yayBpbiBwcm9ncmVzcy4KCiogX0ZhaWxpbmcgdGVzdHNfOiB0aGUgdGVzdHMgZ2VuZXJhdGVkIGJ5IF9Fdm9NYXN0ZXJfIHNob3VsZCBhbGwgcGFzcywgYW5kIG5vdCBmYWlsLCBldmVuIHdoZW4gdGhleSBkZXRlY3QgYSBmYXVsdC4KICBJbiB0aG9zZSBjYXNlcywgY29tbWVudHMvdGVzdC1uYW1lcyB3b3VsZCBwb2ludCBvdXQgdGhhdCBhIHRlc3QgaXMgcmV2ZWFsaW5nIGEgcG9zc2libGUgZmF1bHQsIHdoaWxlIHN0aWxsIHBhc3NpbmcuCiAgSG93ZXZlciwgaW4gc29tZSBjYXNlcyB0aGUgZ2VuZXJhdGVkIHRlc3RzIG1pZ2h0IGZhaWwuIFRoaXMgaXMgZHVlIHRvIHRoZSBzbyBjYWxsZWQgX2ZsYWt5XyB0ZXN0cywgZS5nLiwgd2hlbgogIGEgdGVzdCBoYXMgYXNzZXJ0aW9ucyBiYXNlZCBvbiB0aGUgdGltZSBjbG9jayAoZS5nLiwgZGF0ZXMgYW5kIHRpbWVzdGFtcHMpLgogIFRoZXJlIGlzIG9uZ29pbmcgZWZmb3J0IHRvIGFkZHJlc3MgdGhpcyBwcm9ibGVtLCBidXQgaXQgaXMgc3RpbGwgbm90IGZ1bGx5IHNvbHZlZC4KCjwhLS0jIyMgVmlkZW9zLS0tPiAKPCEtLSAKPGRpdj5JY29ucyBtYWRlIGJ5IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZsYXRpY29uLmNvbS9hdXRob3JzL2ZyZWVwaWsiIHRpdGxlPSJGcmVlcGlrIj5GcmVlcGlrPC9hPiBmcm9tIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZsYXRpY29uLmNvbS8iIHRpdGxlPSJGbGF0aWNvbiI+d3d3LmZsYXRpY29uLmNvbTwvYT48L2Rpdj4gCi0tPgoKCiMjIyBVc2UgaW4gSW5kdXN0cnkKClNldmVyYWwgZW50ZXJwcmlzZXMgdXNlIF9Fdm9NYXN0ZXJfIHRvIGZ1enogdGhlaXIgV2ViIEFQSXMuCldlIGRvIGZldyBhY2FkZW1pYS1pbmR1c3RyeSBjb2xsYWJvcmF0aW9ucyAoW3NlZSBtb3JlIGluZm8gaGVyZV0oZG9jcy9jb250cmlidXRlLm1kKSksIHdoZXJlIHdlIGhlbHAgdGVzdCBlbmdpbmVlcnMgdG8gYXBwbHkgX0V2b01hc3Rlcl8gb24gdGhlaXIgc3lzdGVtcywgYXMgbG9uZyBhcyB3ZSBjYW4gdGhlbiByZXBvcnQgb24gc3VjaCBleHBlcmllbmNlLgpFeGFtcGxlcyBvZiBGb3J0dW5lIDUwMCBjb21wYW5pZXMgdXNpbmcgX0V2b01hc3Rlcl8gYXJlOgoKKiBbTWVpdHVhbl0oaHR0cHM6Ly93d3cubWVpdHVhbi5jb20pOiBzZWUgW1RPU0VNJzIzXShkb2NzL3B1YmxpY2F0aW9ucy8yMDIzX3Rvc2VtX3JwYy5wZGYpLCBbQVNFJzI0XShkb2NzL3B1YmxpY2F0aW9ucy8yMDI0X2FzZS5wZGYpLCBbU0NQJzI1XShkb2NzL3B1YmxpY2F0aW9ucy8yMDI1X3NjcC5wZGYpLgoKKiBbVm9sa3N3YWdlbl0oaHR0cHM6Ly93d3cudm9sa3N3YWdlbi5jb20pOiBzZWUgW0FVU0UnMjRdKGRvY3MvcHVibGljYXRpb25zLzIwMjRfYXVzZV92dy5wZGYpLCBbSUNTVCcyNV0oZG9jcy9wdWJsaWNhdGlvbnMvMjAyNV9pY3N0LnBkZikuCgoKIyMjIFZpZGVvcwoKIVtdKGRvY3MvaW1nL3ZpZGVvLXBsYXllci1mbGF0aWNvbi5wbmcpCgoqIEEgWzQ1LW1pbnV0ZSB0YWxrIGdpdmVuIGF0IFRlc3RDb24nMjVdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9dUtLUm8zTHJOaXcmbGlzdD1QTHFZaEdzUTlpU0VvWGFSbVc5V1FqalhKS18xTmJMbFo2JmluZGV4PTE1KSBvbiBGdXp6IFRlc3RpbmcgV2ViIEFQSXMgZ2l2ZXMgYW4gb3ZlcnZpZXcgb2Ygd2hhdCBjYW4gYmUgZXhwZWN0ZWQgZnJvbSB0aGlzIGtpbmQgb2YgZnV6emVycy4gCiBBIFtzaG9ydGVyIHZlcnNpb24gKDE2IG1pbnV0ZXMpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWlKZGhWekdlZGpNKSAKICB3YXMgZ2l2ZW4gYXQgTm9yZGljIEFQSXMgMjAyNSBQbGF0Zm9ybSBTdW1taXQuICAgCgoqIEEgW3Nob3J0IHZpZGVvXShodHRwczovL3lvdXR1LmJlLzNtWXhqZ25oTEVvKSAoNSBtaW51dGVzKQogIHNob3dzIHRoZSB1c2Ugb2YgX0V2b01hc3Rlcl8gb24gb25lIG9mIHRoZQogIGNhc2Ugc3R1ZGllcyBpbiBbRU1CXShodHRwczovL2dpdGh1Yi5jb20vV2ViRnV6emluZy9FTUIpLgoKKiBUaGlzIFsxMy1taW51dGUgdmlkZW9dKGh0dHBzOi8veW91dHUuYmUvT1J4Wm9ZdzdMbk0pCiAgc2hvd3MgaG93IHRvIHdyaXRlIGEgd2hpdGUtYm94IGRyaXZlciBmb3IgRXZvTWFzdGVyLCBmb3IgdGhlCiAgW3Jlc3QtYXBpLWV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJGdXp6aW5nL3Jlc3QtYXBpLWV4YW1wbGUpLgoKKiBIb3cgdG8gW0Rvd25sb2FkIGFuZCBJbnN0YWxsIEV2b01hc3RlciBvbiBXaW5kb3dzIDEwXShodHRwczovL3lvdXR1LmJlL3VoX1h6R3h3czlvKSwgdXNpbmcgaXRzIF8ubXNpXyBpbnN0YWxsZXIuCgoqIFtTaG9ydCBwcmVzZW50YXRpb25dKGh0dHBzOi8veW91dHUuYmUvaVFTQWxyci1QWm8pICg1IG1pbnV0ZXMpIGFib3V0IHZlcnNpb24gMi4wLjAuIAoKKiBbRGVtb25zdHJhdGlvbiBvZiBEb2NrZXIgYW5kIEdpdEh1YiBBY3Rpb25zIHN1cHBvcnRdKGh0dHBzOi8veW91dHUuYmUvbDF5YnM3U2p2Y0EpLgoKIyMjIEFsdGVybmF0aXZlcwoKSW4gdGhlIGxhc3QgZmV3IHllYXJzLCBzZXZlcmFsIGZldyB0b29scyBoYXZlIGJlZW4gcHJvcG9zZWQgaW4gdGhlIGFjYWRlbWljIGxpdGVyYXR1cmUgYW5kIGluIHRoZSBvcGVuLXNvdXJjZSBjb21tdW5pdHkuCllvdSBjYW4gcmVhZCBtb3JlIGRldGFpbHMgaW4gdGhpcyBbMjAyMyBzdXJ2ZXldKGRvY3MvcHVibGljYXRpb25zLzIwMjNfdG9zZW1fc3VydmV5LnBkZikgb24gUkVTVCBBUEkgdGVzdGluZy4KCkV4aXN0aW5nIG9wZW4tc291cmNlIHRvb2xzIGZvciBSRVNUIEFQSSBmdXp6aW5nLCB3aXRoIGF0IGxlYXN0IDEwMCBzdGFycyBvbiBHaXRIdWIsIGFyZSBmb3IgZXhhbXBsZSAoaW4gYWxwaGFiZXRpYyBvcmRlcik6CltDQVRTXShodHRwczovL2dpdGh1Yi5jb20vRW5kYXZhL2NhdHMpLApbRHJlZGRdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlhcnlpby9kcmVkZCksCltGdXp6LWxpZ2h0eWVhcl0oaHR0cHM6Ly9naXRodWIuY29tL1llbHAvZnV6ei1saWdodHllYXIpLApbUmVzVGVzdF0oaHR0cHM6Ly9naXRodWIuY29tL2lzYS1ncm91cC9SRVNUZXN0KSwKW1Jlc3RsZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvcmVzdGxlci1mdXp6ZXIpLApbU2NoZW1hdGhlc2lzXShodHRwczovL2dpdGh1Yi5jb20vc2NoZW1hdGhlc2lzL3NjaGVtYXRoZXNpcykKYW5kCltXdXBwaWVGdXp6XShodHRwczovL2dpdGh1Yi5jb20vVE5PLVMzL1d1cHBpZUZ1enopLgoKQXBhcnQgZnJvbSBXdXBwaWVGdXp6LCBhbGwgdGhlc2UgdG9vbHMgYXJlIF9ibGFjay1ib3hfLCBpLmUuLCB0aGV5IGRvIG5vdCBhbmFseXplIHRoZSBzb3VyY2UtY29kZSBvZiB0aGUgdGVzdGVkIEFQSXMgdG8gZ2VuZXJhdGUgbW9yZSBlZmZlY3RpdmUgdGVzdCBkYXRhLgpBcyB3ZSBhcmUgdGhlIGF1dGhvcnMgb2YgRXZvTWFzdGVyLCB3ZSBhcmUgdG9vIGJpYXNlZCB0byBjb21wYXJlIGl0IHByb3Blcmx5IHdpdGggdGhvc2Ugb3RoZXIgYmxhY2stYm94IHRvb2xzLgpIb3dldmVyLCBkaWZmZXJlbnQgaW5kZXBlbmRlbnQgc3R1ZGllcyAoZS5nLiwgaW4gWzIwMjJdKGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yMjA0LjA4MzQ4KSBhbmQgWzIwMjRdKGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yNDEwLjEyNTQ3KSkgc2hvd3MgdGhhdCBFdm9NYXN0ZXIgaXMgYW1vbmcgdGhlIGJlc3QgcGVyZm9ybWFudC4KRnVydGhlcm1vcmUsIGlmIHlvdXIgQVBJcyBhcmUgcnVubmluZyBvbiB0aGUgSlZNIChlLmcuLCB3cml0dGVuIGluIEphdmEgb3IgS290bGluKSwgdGhlbiBFdm9NYXN0ZXIgaGFzIGNsZWFybHkgYW4gYWR2YW50YWdlLCBhcyBpdCBzdXBwb3J0cyBfd2hpdGUtYm94XyB0ZXN0aW5nLiAKCjwhLS0tCiMjIyBIaXJpbmcKCkRlcGVuZGluZyBvbiB0aGUgeWVhciwgd2UgbWlnaHQgaGF2ZSBmdW5kaW5nIGZvciBfcG9zdGRvY18gYW5kIF9QaEQgc3R1ZGVudF8gcG9zaXRpb25zIHRvIHdvcmsgb24gdGhpcyBwcm9qZWN0IChpbiBPc2xvLCBOb3J3YXkpLgoKQ3VycmVudCBvcGVuIHBvc2l0aW9uczogbm9uZS4KPCAhLS0tCiogMjAyMzogUGhEIHN0dWRlbnQgcG9zaXRpb25zLiBObyBuZXcgY2FsbHMgc2NoZWR1bGVkIGZvciB0aGUgbW9tZW50LgoqIDIwMjM6IFBvc3Rkb2MgcG9zaXRpb25zLiBObyBuZXcgY2FsbHMgc2NoZWR1bGVkIGZvciB0aGUgbW9tZW50LgotLS0gPgoKRm9yIHF1ZXN0aW9ucyBvbiB0aGVzZSBwb3NpdGlvbnMsIHBsZWFzZSBjb250YWN0IFByb2YuIEFuZHJlYSBBcmN1cmkuCgo8ICEtLS0KRm9yIG1vcmUgZGV0YWlscyBvbiBjdXJyZW50IHZhY2FuY2llcywgc2VlIG91ciBncm91cCBwYWdlIGF0IFtBSVNFIExhYl0oaHR0cHM6Ly9XZWJGdXp6aW5nLmdpdGh1Yi5pby8pLgotLS0+CgoKCiMjIyBEb2N1bWVudGF0aW9uCgpJZiB5b3UgYXJlIHRyeWluZyB0byB1c2UgX0V2b01hc3Rlcl8sIGJ1dCB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoaXMgZG9jdW1lbnRhdGlvbiBhcmUgbm90IGVub3VnaCB0byBnZXQgeW91IHN0YXJ0ZWQsIG9yIHRoZXkgYXJlIHRvbyB1bmNsZWFyLCB0aGVuIGl0IG1lYW5zIGl0IGlzIGEgX2J1Z18gaW4gdGhlIGRvY3VtZW50YXRpb24sIHdoaWNoIHRoZW4gd291bGQgbmVlZCB0byBiZSBjbGFyaWZpZWQgYW5kIHVwZGF0ZWQuIEluIHN1Y2ggY2FzZXMsIHBsZWFzZSBjcmVhdGUgYSBuZXcgW2lzc3VlXShodHRwczovL2dpdGh1Yi5jb20vV2ViRnV6emluZy9Fdm9NYXN0ZXIvaXNzdWVzKS4KCkFsc28sIGZlZWwgZnJlZSB0byBzdGFydCBuZXcgZGlzY3Vzc2lvbiB0b3BpY3MgaW4gdGhlIFtEaXNjdXNzaW9ucyBmb3J1bV0oaHR0cHM6Ly9naXRodWIuY29tL1dlYkZ1enppbmcvRXZvTWFzdGVyL2Rpc2N1c3Npb25zKS4KSWYgeW91IGhhdmUgdGltZSwgcGxlYXNlIGNvbnNpZGVyIGFuc3dlcmluZyB0aGUgcG9sbHMgdGhlcmUuCgpJZiB5b3UgYXJlIHdvcmtpbmcgb24gYW4gb3Blbi1zb3VyY2UgQVBJLCB5b3UgY2FuIGRyb3AgdXMgYSBtZXNzYWdlIGlmIHlvdSBoYXZlIHByb2JsZW1zIHVzaW5nIEV2b01hc3RlciBvbiBpdC4gCk90aGVyd2lzZSwgaWYgeW91IGFyZSB3b3JraW5nIGluIGluZHVzdHJ5IG9uIGNsb3NlZC1zb3VyY2UgQVBJcywgd2UgaGF2ZSBvcHRpb25zIGZvciBhY2FkZW1pYS1pbmR1c3RyeSBjb2xsYWJvcmF0aW9ucyAoW3NlZSBtb3JlIGluZm8gaGVyZV0oZG9jcy9jb250cmlidXRlLm1kKSkuICAKCgoqIFtFeGFtcGxlIG9mIGdlbmVyYXRlZCB0ZXN0c10oZG9jcy9leGFtcGxlLm1kKQoqIFtEb3dubG9hZCBhbmQgSW5zdGFsbCBFdm9NYXN0ZXJdKGRvY3MvZG93bmxvYWQubWQpCiogW0J1aWxkIEV2b01hc3RlciBmcm9tIHNvdXJjZV0oZG9jcy9idWlsZC5tZCkKKiBbQ29tbWFuZC1MaW5lIEludGVyZmFjZSAoQ0xJKSBvcHRpb25zXShkb2NzL29wdGlvbnMubWQpCiogW09wZW5BcGkvU3dhZ2dlciBTY2hlbWFdKGRvY3Mvb3BlbmFwaS5tZCkKKiBbVXNpbmcgRXZvTWFzdGVyIGZvciBCbGFjay1Cb3ggVGVzdGluZyAoZWFzaWVyIHRvIHNldHVwLCBidXQgd29yc2UgcmVzdWx0cyldKGRvY3MvYmxhY2tib3gubWQpCiogW1VzaW5nIEV2b01hc3RlciBmb3IgV2hpdGUtQm94IFRlc3RpbmcgKGhhcmRlciB0byBzZXR1cCwgYnV0IGJldHRlciByZXN1bHRzKV0oZG9jcy93aGl0ZWJveC5tZCkKICAqIFtXcml0ZSBhbiBFdm9NYXN0ZXIgRHJpdmVyIGZvciBXaGl0ZS1Cb3ggVGVzdGluZ10oZG9jcy93cml0ZV9kcml2ZXIubWQpCiAgKiBbRGVhbGluZyB3aXRoIEpES3MgYWJvdmUgdmVyc2lvbiA4XShkb2NzL2pka3MubWQpCiogW0NvbmZpZ3VyaW5nIGF1dGhlbnRpY2F0aW9uXShkb2NzL2F1dGgubWQpICAKKiBbQ29uc29sZSBvdXRwdXRdKGRvY3MvY29uc29sZV9vdXRwdXQubWQpCiogW0xpYnJhcnkgZGVwZW5kZW5jaWVzIGZvciB0aGUgZ2VuZXJhdGVkIHRlc3RzXShkb2NzL2xpYnJhcnlfZGVwZW5kZW5jaWVzLm1kKQoqIFtIb3cgdG8gY29udHJpYnV0ZV0oZG9jcy9jb250cmlidXRlLm1kKQogICogW1RlY2huaWNhbCBub3RlcyBmb3IgZGV2ZWxvcGVycyBjb250cmlidXRpbmcgdG8gRXZvTWFzdGVyXShkb2NzL2Zvcl9kZXZlbG9wZXJzLm1kKQoqIFRyb3VibGVzaG9vdGluZwogICogW1dpbmRvd3MgYW5kIG5ldHdvcmtpbmddKGRvY3MvdHJvdWJsZXNob290aW5nL3dpbmRvd3MubWQpCiAgKiBbamF2YS5sYW5nLk91dE9mTWVtb3J5RXJyb3JdKGRvY3MvdHJvdWJsZXNob290aW5nL291dG9mbWVtb3J5Lm1kKQoqIE1vcmUgSW5mbwogICogW0FjYWRlbWljIHBhcGVycyByZWxhdGVkIHRvIEV2b01hc3Rlcl0oZG9jcy9wdWJsaWNhdGlvbnMubWQpCiAgKiBbU2xpZGVzIG9mIHByZXNlbnRhdGlvbnMvc2VtaW5hcnNdKGRvY3MvcHJlc2VudGF0aW9ucy5tZCkKICAqIFtSZXBsaWNhdGluZyBzdHVkaWVzXShkb2NzL3JlcGxpY2F0aW5nX3N0dWRpZXMubWQpCgoKCgoKCiMjIyBGdW5kaW5nCgpfRXZvTWFzdGVyXyBoYXMgYmVlbiBmdW5kZWQgYnk6CiogMjAyMC0yMDI2OiBhIDIgbWlsbGlvbiBFdXJvIGdyYW50IGJ5IHRoZSBFdXJvcGVhbiBSZXNlYXJjaCBDb3VuY2lsIChFUkMpLAogIGFzIHBhcnQgb2YgdGhlICpFUkMgQ29uc29saWRhdG9yKiBwcm9qZWN0CiAgPGk+VXNpbmcgRXZvbHV0aW9uYXJ5IEFsZ29yaXRobXMgdG8gVW5kZXJzdGFuZCBhbmQgU2VjdXJlIFdlYi9FbnRlcnByaXNlIFN5c3RlbXM8L2k+LgoqICAyMDE4LTIwMjE6IGEgNy44IG1pbGxpb24gTm9yd2VnaWFuIEtyb25lciBncmFudCAgYnkgdGhlIFJlc2VhcmNoIENvdW5jaWwgb2YgTm9yd2F5IChSQ04pLAogICBhcyBwYXJ0IG9mIHRoZSBGcmluYXRlayBwcm9qZWN0IDxpPkV2b2x1dGlvbmFyeSBFbnRlcnByaXNlIFRlc3Rpbmc8L2k+LgoKCjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vV2ViRnV6emluZy9Fdm9NYXN0ZXIvYmxvYi9tYXN0ZXIvZG9jcy9pbWcvTE9HT19FUkMtRkxBR19FVV8uanBnP3Jhdz10cnVlIiB3aWR0aD0iMjAwIiA+CgoKVGhpcyBwcm9qZWN0IGhhcyByZWNlaXZlZCBmdW5kaW5nIGZyb20gdGhlIEV1cm9wZWFuIFJlc2VhcmNoIENvdW5jaWwgKEVSQykgdW5kZXIgdGhlIEV1cm9wZWFuIFVuaW9u4oCZcyBIb3Jpem9uIDIwMjAgcmVzZWFyY2ggYW5kIGlubm92YXRpb24gcHJvZ3JhbW1lIChncmFudCBhZ3JlZW1lbnQgTm8gODY0OTcyKS4KCgojIyMgTGljZW5zZQpfRXZvTWFzdGVyXydzIHNvdXJjZSBjb2RlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBMR1BMICh2MykgbGljZW5zZS4KRm9yIGEgbGlzdCBvZiB0aGUgdXNlZCB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMsIHlvdSBjYW4gZGlyZWN0bHkgc2VlIHRoZSByb290IFtwb20ueG1sXSguL3BvbS54bWwpIGZpbGUuCkZvciBhIGxpc3Qgb2YgY29kZSBkaXJlY3RseSBpbXBvcnRlZCAoYW5kIHRoZW4gcG9zc2libHkgbW9kaWZpZWQvdXBkYXRlZCkgZnJvbQpvdGhlciBvcGVuLXNvdXJjZSBwcm9qZWN0cywgc2VlIFtoZXJlXSguL2RvY3MvcmV1c2VkX2NvZGUubWQpLgoKCjwhLS0KIyMjICFbXShodHRwczovL3d3dy55b3Vya2l0LmNvbS9pbWFnZXMveWtsb2dvLnBuZykKCllvdXJLaXQgc3VwcG9ydHMgb3BlbiBzb3VyY2UgcHJvamVjdHMgd2l0aCBpdHMgZnVsbC1mZWF0dXJlZCBKYXZhIFByb2ZpbGVyLgpZb3VyS2l0LCBMTEMgaXMgdGhlIGNyZWF0b3Igb2YKPGEgaHJlZj0iaHR0cHM6Ly93d3cueW91cmtpdC5jb20vamF2YS9wcm9maWxlci8iPllvdXJLaXQgSmF2YSBQcm9maWxlcjwvYT4KYW5kCjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXJraXQuY29tLy5uZXQvcHJvZmlsZXIvIj5Zb3VyS2l0IC5ORVQgUHJvZmlsZXI8L2E+LAppbm5vdmF0aXZlIGFuZCBpbnRlbGxpZ2VudCB0b29scyBmb3IgcHJvZmlsaW5nIEphdmEgYW5kIC5ORVQgYXBwbGljYXRpb25zLgotLT4KCg== readmeEtag: '"8f023e805a95729ba3a9cc127cdd9c9bd1fe80b9"' readmeLastModified: Thu, 29 Jan 2026 10:49:01 GMT repositoryId: 92385933 description: >- The first open-source AI-driven tool for automatically generating system-level test cases (also known as fuzzing) for web/enterprise 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: '2026-02-05T18:51:57Z' language: Kotlin archived: false stars: 667 watchers: 21 forks: 103 owner: WebFuzzing logo: https://avatars.githubusercontent.com/u/29148026?v=4 license: LGPL-3.0 repoEtag: '"945ec61f110536bc67c74528aac158f0429646d120ad31b8978324694b3a0822"' repoLastModified: Thu, 05 Feb 2026 18:51:57 GMT foundInMaster: true id: d1d3d85149c4a9437dbdbf157cf3d7c7 oldLocations: - https://github.com/emresearch/evomaster - source: openapi3 tags repository: https://github.com/tiblazy/escribo.inovation.teste_2 v3: true id: 86a37bb88c331b52e3d21038f42efc17 repositoryMetadata: repositoryId: 722276761 description: escribo.inovation database created: '2023-11-22T19:52:38Z' updated: '2024-06-12T06:32:19Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: tiblazy logo: https://avatars.githubusercontent.com/u/96823878?v=4 repoEtag: '"f00538c571b45408cdc41bfc6f90435d8087b49345edbec9903b1c5f7d8939da"' repoLastModified: Wed, 12 Jun 2024 06:32:19 GMT foundInMaster: true - source: openapi3 tags repository: https://github.com/nakajima97/letter-box-api v3: true repositoryMetadata: base64Readme: >- IyDjgqLjg5fjg6rmpoLopoEKCiMjIExldHRlciBCb3gg44Gr44Gk44GE44GmCgrpoaflrqLjgYzlvpPmpa3lk6Hjgavlr77jgZfjgabljL/lkI3jgafjg6Hjg4Pjgrvjg7zjgrjjgpLpgIHjgozjgovjgqLjg5fjg6rjgIIgIArjg6Hjg4Pjgrvjg7zjgrjjgpLjgoTjgorlj5bjgorjgZnjgovmqZ/og73jga/jgarjgYTjgYwgIArjg63jgrDjgqTjg7PkuI3opoHjgafoqrDjgavpgIHjgovjga7jgYvjgYxVUkzjgavlj43mmKDjgZXjgozjgovjgIIgIArjgZ3jga7jgZ/jgoHjgIFRUuOCs+ODvOODieOCkuiqreOBv+WPluOCi+OBoOOBkeOBp+ODoeODg+OCu+ODvOOCuOOCkuiqsOOBq+mAgeOCi+OBruOBi+aMh+WumuOBp+OBjeOCi+OAgiAgCgojIyBMZXR0ZXIgQm94IOOCkuani+aIkOOBmeOCi+imgee0oAoKTGV0dGVyIEJveCDjga/ku6XkuIs044Gk44Gu44Oq44Od44K444OI44Oq44Gn5qeL5oiQ44GV44KM44KLCgojIyMg5a6i5YG044OV44Ot44Oz44OI44Ko44Oz44OJCgrpoaflrqLjgYzjg6Hjg4Pjgrvjg7zjgrjjgpLkvJ3jgYjjgovpmpvjgavliKnnlKjjgZnjgovnlLvpnaIgIApodHRwczovL2dpdGh1Yi5jb20veXVkYWktbmFrYWppbWEvbGV0dGVyLWJveC1mcm9udGVuZC1jbGllbnQKCiMjIyDnrqHnkIbnlLvpnaLjg5Xjg63jg7Pjg4jjgqjjg7Pjg4kKCuW+k+alreWToeOBjOODoeODg+OCu+ODvOOCuOOCkueiuuiqjeOBmeOCi+OBn+OCgeOBrueUu+mdoiAgCmh0dHBzOi8vZ2l0aHViLmNvbS95dWRhaS1uYWthamltYS9sZXR0ZXItYm94LWZyb250ZW5kLW1hbmFnZW1lbnQvYmxvYi9tYWluL1JFQURNRS5tZAoKIyMjIOODkOODg+OCr+OCqOODs+ODiQoKTGV0dGVyIEJveCDjga7jg5Djg4Pjgq/jgqjjg7Pjg4kK44OV44Ot44Oz44OI44Ko44Oz44OJ44Gv5a6i5YG044O7566h55CG55S76Z2i44Go5YiG44GL44KM44KL44GM44CB44OQ44OD44Kv44Ko44Oz44OJ44GvIDEg44Gk44Gu44G/ICAKaHR0cHM6Ly9naXRodWIuY29tL3l1ZGFpLW5ha2FqaW1hL2xldHRlci1ib3gtYmFja2VuZAoKIyMjIEFQSSDku5Xmp5jmm7gK4oC75pys44Oq44Od44K444OI44OqICAKaHR0cHM6Ly9naXRodWIuY29tL3l1ZGFpLW5ha2FqaW1hL2xldHRlci1ib3gtYXBpCgojIOS9nOaIkOebrueahArlupflk6Hjgavlr77jgZfjgabmsJfou73jgavjg6Hjg4Pjgrvjg7zjgrjjgpLpgIHjgozjgovjgqLjg5fjg6rjgYzjgYLjgaPjgZ/jgokK5oSf6Kyd44Gu5rCX5oyB44Gh44Go44GL5Lyd44GI44KE44GZ44GE44KI44Gq44Go5oCd44Gj44Gf44Gf44KB44CCCgojIyMgQVBJIOS7leanmOabuArigLvmnKzjg6rjg53jgrjjg4jjg6oKCiMg5L2c5oiQ55uu55qECuW6l+WToeOBq+WvvuOBl+OBpuaEn+isneOCkuawl+i7veOBq+S8neOBiOOCi+aJi+auteOCkuaPkOS+m+OBmeOCi+OCouODl+ODquOCkumWi+eZuuOBl+OBn+OBhOOBqOaAneOBo+OBn+OBn+OCgQo= readmeEtag: '"51dbd667ab4953f28dcd9be7f070cd3667368c0a"' readmeLastModified: Wed, 22 Sep 2021 02:26:07 GMT repositoryId: 380894274 description: letter-boxで開発するAPIの仕様書 created: '2021-06-28T03:27:50Z' updated: '2023-06-12T11:21:48Z' language: null archived: true stars: 0 watchers: 1 forks: 0 owner: nakajima97 logo: https://avatars.githubusercontent.com/u/25247800?v=4 repoEtag: '"99dea8ead526222bd24be5921eec2c1ef0823ee9fae38c398a637c2be77d67e5"' repoLastModified: Mon, 12 Jun 2023 11:21:48 GMT foundInMaster: true category: Testing id: c40c4729753bf9c561b875f1151bcee8 oldLocations: - https://github.com/yudai-nakajima/letter-box-api - source: openapi3 tags repository: https://github.com/hikmatullahehsan/wefox-node-js-assessment v3: true repositoryMetadata: base64Readme: >- IyBXZWZveC1ub2RlLWpzLWFzc2Vzc21lbnQKQSBkZW1vIGFwcGxpY2F0aW9uIGRldmVsb3BlZCB3aXRoIE5vZGVKUwoKIyMgSG93IHRvIGluc3RhbGw/IApgYGBiYXNoCiQgbnBtIGluc3RhbGwgCmBgYAojIyBIb3cgdG8gcnVuPwpgYGBiYXNoCiQgbnBtIHN0YXJ0IApgYGAKCiMjIENyZWF0aW5nIGFuIC5lbnYgZmlsZSB3aXRoIHRoZXNlIHByb3BlcnRpZXMgYW5kIGluaXRpYWxpemUgdGhlaXIgdmFsdWVzIHJlbGF0ZWQgdG8geW91ciBlbnZpcm9ubWVudApgYGBqYXZhc2NyaXB0CkFQSV9QT1JUICAgICAgICAgICAgPSBudWxsCk1PTkdPX1VSSSAgICAgICAgICAgPSBudWxsClRPS0VOX0tFWSAgICAgICAgICAgPSBudWxsCk9QRU5fV0VBVEhFUl9BUElfSUQgPSBudWxsCmBgYAoKIyMgT3BlbkFQSSBTd2FnZ2VyIERvY3VtZW50YXRpb24gCmBgYGJhc2gKaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaS1kb2NzCmBgYAoKIyMgUmVxdWlyZW1lbnRzCiogTm9kZSB2MC4xMC4zMiBvciBhYm92ZQoqIEV4cHJlc3MgNCBvciBhYm92ZQoqIE1vbmdvREIKCiMjIFRlc3RpbmcKCiogYG5wbSBpbnN0YWxsYAoqIGBucG0gdGVzdAoKCiMjIERvY2tlciBJbWFnZSAKYGBgYmFzaApodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvaGVrbWF0MjEvd2Vmb3gtbm9kZS1hc3Nlc3NtZW50CmBgYAoKCgoKCgoK readmeEtag: '"4db7e322fe5d0d37f998cc7f30ee2b218c23dcc0"' readmeLastModified: Sun, 05 Sep 2021 18:41:43 GMT repositoryId: 403301474 description: A general and simple NodeJS application for a demo purpose created: '2021-09-05T12:22:16Z' updated: '2021-09-05T18:41:46Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: HikmatullahEhsan logo: https://avatars.githubusercontent.com/u/23573173?v=4 repoEtag: '"a9fbbf92440465d2293a3f21be4d75ce47d337f9bd009dd48fc56137fc34c2ee"' repoLastModified: Sun, 05 Sep 2021 18:41:46 GMT foundInMaster: true category: - Documentation - Server Implementations id: 6fa7281b9b0763b069ffb1bd05e51341 - source: openapi3 tags repository: https://github.com/bharathbhargavgb/short-url v3: true repositoryMetadata: base64Readme: >- IyBzaG9ydC11cmwKQSBzaW1wbGUgVVJMIHNob3J0ZW5lciBpbXBsZW1lbnRlZCBpbiBHbyB1c2luZyBBV1MgTGFtYmRhIGFuZCBEeW5hbW9EQi4KClshW0FjdGlvbiBzdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9iaGFyYXRoYmhhcmdhdmdiL3Nob3J0LXVybC93b3JrZmxvd3MvR28vYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2JoYXJhdGhiaGFyZ2F2Z2Ivc2hvcnQtdXJsL2FjdGlvbnMpCgojIyBPcGVuQVBJIDMuMCBzcGVjcwpodHRwczovL2FwcC5zd2FnZ2VyaHViLmNvbS9hcGlzLWRvY3MvcmVzdXJnZW5jZS9zaG9ydGVuLzEuMC4wCg== readmeEtag: '"85efb9dc81c0411a0b4b552231dea96091e5c18c"' readmeLastModified: Sun, 13 Jun 2021 16:27:53 GMT repositoryId: 363583561 description: URL shortener using Go | AWS created: '2021-05-02T06:33:28Z' updated: '2021-06-13T16:28:05Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: bharathbhargavgb logo: https://avatars.githubusercontent.com/u/6514305?v=4 repoEtag: '"9f7898a93dbab194145d2d8102a4131f70a0ef64b6b5b3f00c6eb19889038785"' repoLastModified: Sun, 13 Jun 2021 16:28:05 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: d480043fd92044205b6775531c1bc411 - source: openapi3 tags repository: https://github.com/ivolimmen/apidoc v3: true repositoryMetadata: base64Readme: >- IyBBcGlEb2MKCkkgd2FzIG1pc3NpbmcgYSBzaW1wbGUgdG9vbCB0aGF0IGNhbiBjb252ZXJ0IGFuIE9wZW5BUEkgMyBKU09OIGZpbGUgdG8gYSBuaWNlIGxvb2tpbmcgZG9jdW1lbnQuIFNpbmNlIEkgbGlrZSBBc2NpaURvYyBJIGRlY2lkZWQgdG8gb3V0cHV0IGl0IHRvIHRoYXQgZm9ybWF0LgoKIyMgRXhhbXBsZQoKSWYgeW91IGRvd25sb2FkIHRoZSBPcGVuQVBJIHBldHN0b3JlIGV4bWFwbGUgYW5kIGNvbnZlcnQgaXQgdG8gQXNjaWlEb2MgdXNpbmcgdGhpcyB0b29sIHlvdSBnZXQgdGhlIGZvbGxvd2luZzoKCiFbcGV0c3RvcmUgZXhhbXBsZV0oZG9jcy9leGFtcGxlLW91dHB1dC5wbmcgIlBldHN0b3JlIGV4YW1wbGUiKQoKIyMgUmVxdWlyZW1lbnRzCgpNaW5pbWFsIHJlcXVpcmVtZW50czoKCiogSmF2YSAxMSBvciBoaWdoZXIKKiBNYXZlbiAzLjguKiBvciBoaWdoZXIKCiMjIEJ1aWxkaW5nIHRoZSBhcHBsaWNhdGlvbgoKUnVuOgoKICAgIG12biBjbGVhbiBpbnN0YWxsCgpUaGlzIHdpbGwgY3JlYXRlIGFuIGV4ZWN1dGFibGUgSkFSIGluIGBhcHAvdGFyZ2V0L2FwaWRvYy1hcHAtMC4xLmphcmAKCiMjIFJ1bm5pbmcgdGhlIGFwcGxpY2F0aW9uCgpBZnRlciBjb21waWxpbmcgeW91IGNhbiBydW46CgogICAgamF2YSAtamFyIGFwcC90YXJnZXQvYXBpZG9jLWFwcC0wLjEuamFyCgojIyMgQ29udmVydCBtdWx0aXBsZSBBUEkgSlNPTiBmaWxlcwoKVGhlIGFwcGxpY2F0aW9uIGNhbiBjb252ZXJ0IG11bHRpcGxlIEpTT04gZmlsZXMgaW4gb25lIGdvIGJ5IHNwZWZpY3lpbmcgb25lIG91dHB1dCBhbmQgbXVsdGlwbGUgaW5wdXQgZmlsZXMuCgogICAgamF2YSAtamFyIGFwaWRvYy1hcHAtMC4xLmphciAtLW91dHB1dD1+L0Rvd25sb2FkcyBkYXRhL2V4YW1wbGUxLmpzb24gZGF0YS9leGFtcGxlMi5qc29uIGRhdGEvZXhhbXBsZTMuanNvbiBkYXRhL2V4YW1wbGU0Lmpzb24KClRoaXMgd2lsbCBjcmVhdGU6IGBleGFtcGwxLmFkb2NgLCBgZXhhbXBsMi5hZG9jYCwgYGV4YW1wbDMuYWRvY2AgYW5kIGBleGFtcGw0LmFkb2NgIGluIGB+L0Rvd25sb2Fkc2AKClRoZSBhcHBsaWNhdGlvbiBjYW4gYWxzbyB0YWtlIGluIFVSTCdzOgoKICAgIGphdmEgLWphciBhcGlkb2MtYXBwLTAuMS5qYXIgLS1vdXRwdXQ9fi9Eb3dubG9hZHMgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uCgpUaGlzIHdpbGwgY3JlYXRlIGBwZXRzdG9yZTMuYWRvY2AgYXMgZmlsZSBhcyBpdCB0YWtlcyB0aGUgaG9zdCBuYW1lIGFzIGZpbGUuCgpJZiB5b3UgbGlrZSB0byBjaGFuZ2UgdGhlIGZpbGUgbmFtZSB5b3UgY2FuIGRvIHRoZSBmb2xsb3dpbmc6CgogICAgamF2YSAtamFyIGFwaWRvYy1hcHAtMC4xLmphciAtLW91dHB1dD1+L0Rvd25sb2FkcyBodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92My9vcGVuYXBpLmpzb258b3V0cHV0Lmpzb24KClRoaXMgd2lsbCBjcmVhdGUgYG91dHB1dC5hZG9jYCBhcyBmaWxlLgoKVGhlc2UgYXJndW1lbnRzIGNhbiBiZSBjb21iaW5lZCBhcyB3ZWxsLgoKIyMgV2hhdCBkb2VzIHRoaXMgdG9vbCBjb252ZXJ0PwoKVGhlIGZvbGxvd2luZyBtb2RlbHMgZnJvbSBPcGVuQVBJIGFyZSBiZWluZyBjb252ZXJ0ZWQgdG8gQXNjaWlEb2M6CgoqIEluZm8KICAqIFRpdGxlCiAgKiBEZXNjcmlwdGlvbgogICogVmVyc2lvbgogICogQ29udGFjdCBpbmZvcm1hdGlvbgoqIFBhdGhzIChzb3J0ZWQhKQogICogUGVyIHBhdGggdGhlIG9wZXJhdGlvbnMgaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgb3JkZXI6CiAgICAqIGRlbGV0ZQogICAgKiBnZXQKICAgICogaGVhZAogICAgKiBvcHRpb25zCiAgICAqIHBhdGNoCiAgICAqIHBvc3QKICAgICogcHV0CiAgICAqIHRyYWNlCiogUGVyIG9wZXJhdGlvbjoKICAqIHRoZSBjdXJyZW50IHBhdGgKICAqIHRoZSBjYWxsIChtZXRob2QgYW5kIHBhdGgpCiAgKiBJZiB0aGUgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgKHdhcm5pbmcpCiAgKiBEZXNjcmlwdGlvbgogICogU3VtbWFyeQogICogUmVxdWVzdEJvZHkKICAgICogRGVzY3JpcHRpb24KICAgICogSWYgdGhlIGJvZHkgaXMgcmVxdWlyZWQKICAgICogU2hvd3Mgb2JqZWN0IHJlZmVyZW5jZXMgcGVyIG1lZGlhIHR5cGUKICAqIFBhcmFtZXRlcnMKICAgICogTGlzdHMgdHlwZSxuYW1lLGRlc2NyaXB0aW9uLHNjaGVtYSBhbmQgZGVmYXVsdAogICAgKiBBbHNvIGFkZHMgZXhhbXBsZXMgaW4gdGhlIGRlZmF1bHQgY29sdW1uCiAgKiBSZXNwb25zZXMKICAgICogU2hvd3Mgb2JqZWN0IHJlZmVyZW5jZXMgcGVyIG1lZGlhIHR5cGUKICAgICogQ3VycmVudGx5IGRvZXMgbm90IGxpc3QgYW5vbnltb3VzIHR5cGVzCgpUaGUgZm9sbG93aW5nIHN0dWZmIGlzIG5vdCAoeWV0PykgaGFuZGxlZDoKICAqIEV4dGVybmFsIGV4YW1wbGVzCiAgKiBIZWFkZXJzCiAgKiBTZWN1cml0eQogICogU2VydmVycwogICogVGFncw== readmeEtag: '"fe1ed7ca1ade0a6835fce2db966af39e34da3330"' readmeLastModified: Tue, 26 Oct 2021 15:21:25 GMT repositoryId: 419874172 description: Generate AsciiDoc using a OpenAPI 3.0 json file created: '2021-10-21T20:55:18Z' updated: '2023-09-14T08:55:44Z' language: Java archived: true stars: 0 watchers: 2 forks: 0 owner: IvoLimmen logo: https://avatars.githubusercontent.com/u/196375?v=4 repoEtag: '"5168081e7f2f4db9e95f0b530780480d6182ec0e5d80ccf60a9306a7c8dbab36"' repoLastModified: Thu, 14 Sep 2023 08:55:44 GMT foundInMaster: true category: Parsers id: 84079117079f066573106b694a50dd9b - source: openapi3 tags repository: https://github.com/umatare5/logbook-openapi-src v3: true repositoryMetadata: base64Readme: >- IyBsb2dib29rLW9wZW5hcGktc3JjCgpsb2dib29rLW9wZW5hcGktc3JjIGlzIGEgc291cmNlIGdlbmVyYXRlcyBsaWJyYXJpZXMgZm9yIFtMb2dib29rIEFQSV0oaHR0cHM6Ly9naXRodWIuY29tL3VtYXRhcmU1L2xvZ2Jvb2stYXBpKS4KClRoaXMgY29kZSBnZW5lcmF0ZXMgZm9sbG93aW5nIHR3byBtb2R1bGVzOwoKLSBbbG9nYm9vay1nb10oaHR0cHM6Ly9naXRodWIuY29tL3VtYXRhcmU1L2xvZ2Jvb2stZ28pCgogIEdvIENsaWVudCB0byB1c2UgTG9nYm9vayBBUEkuCgotIFtsb2dib29rLWFwaS1mcmFtZXdvcmstaW1wbF0oaHR0cHM6Ly9naXRodWIuY29tL3VtYXRhcmU1L2xvZ2Jvb2stYXBpLWZyYW1ld29yay1pbXBsKQoKICBJbXBsZW1lbnRhdGlvbiBmb3IgZnJhbWV3b3JrIGxheWVyIGluIExvZ2Jvb2sgQVBJLgoKIyMgRGV2ZWxvcG1lbnQKCiMjIyBTZXR1cAoKLSBJbnN0YWxsIGBzd2FnZ2VyLWNsaWAgZm9yIGJ1bmRsZSBkaXZpZGVkIE9wZW5BUEkgU3BlY2lmaWNhdGlvbnMuCgogIGBgYHNoCiAgbnBtIGluc3RhbGwKICBgYGAKCi0gSW5zdGFsbCBgb2FwaS1jb2RlZ2VuYCBmb3IgYnVpbGQgdGhlIGNsaWVudC4KCiAgYGBgc2gKICBnbyBpbnN0YWxsIGdpdGh1Yi5jb20vZGVlcG1hcC9vYXBpLWNvZGVnZW4vY21kL29hcGktY29kZWdlbkBsYXRlc3QKICBgYGAKCiMjIyBCdWlsZAoKYGBgc2gKbWFrZSBidWlsZApgYGAKCiMjIyBSZWxlYXNlCgpgYGBzaApnaXQgYnVtcAptYWtlIHJlbGVhc2UKYGBgCg== readmeEtag: '"afe21a21a6cae423c7612bfa5df62f99ddb28aa9"' readmeLastModified: Thu, 27 Jan 2022 11:41:41 GMT repositoryId: 449611422 description: Source of libraries to use Logbook API created: '2022-01-19T08:39:29Z' updated: '2022-02-15T13:53:10Z' language: Shell archived: false stars: 0 watchers: 1 forks: 0 owner: umatare5 logo: https://avatars.githubusercontent.com/u/72645163?v=4 repoEtag: '"7b869d90f4bd63c90bf217d047b9b5e7b6b74f15b7b949623fab5993a695aa66"' repoLastModified: Tue, 15 Feb 2022 13:53:10 GMT foundInMaster: true category: Code Generators id: 75906f5f428a76f4ed3ebdc42f111e54 - source: openapi3 tags repository: https://github.com/takeshi-kishima/map-experiment v3: true id: fc8c64bdcd6d624586eebbb056e26213 repositoryMetadata: base64Readme: >- IyBtYXAtZXhwZXJpbWVudAojIyMgRG9ja2Vy5YaF44Gn6ZaL55m644GZ44KL44Gq44KJCiogRG9ja2Vy55Kw5aKDCiogW1JlbW90ZSAtIENvbnRhaW5lcnNdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1tcy12c2NvZGUtcmVtb3RlLnJlbW90ZS1jb250YWluZXJzKQoK44KS5L2/44GE44G+44GZCgojIyMgW1JlbW90ZSAtIENvbnRhaW5lcnNdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1tcy12c2NvZGUtcmVtb3RlLnJlbW90ZS1jb250YWluZXJzKQpWU2NvZGXjga7mi6HlvLXmqZ/og73jgafjgZnjgIJGMSA+CmBgYApSZW1vdGUtQ29udGFpbmVyczogT3BlbiBGb2xkZXIgaW4gQ29udGFpbmVyLi4uCmBgYArjgafjgZPjga7jg5Xjgqnjg6vjg4DjgpLplovjgZHjgbDjgIFEb2NrZXLlhoXjgafplovnmbrnkrDlooPkvb/jgYjjgb7jgZnjgIIgIAoqIOOBk+OBruaLoeW8teapn+iDveOBruioreWumuODleOCoeOCpOODq+e+pOOBry5kZXZjb250YWluZXLjg5Xjgqnjg6vjg4DlhoXjgavlhaXjgaPjgabjgYrjgorjgb7jgZnjgIIgIAoqIOODl+ODreOCreOCt+eSsOWig+OBoOOBo+OBn+OBruOBp+OAgS5lbnbjgafoqK3lrprjgZfjgabjgb7jgZnjgIIgIAoqIOS9v+OBo+OBpuOBquOBhOOCk+OBp+OBmeOBjOOAgVBvc3RncmVz44KC56uL44Gh5LiK44GM44KK44G+44GZ4oCm77yI44GE44Gk44GL57mL44GS44Gm44KE44KK5Y+W44KK44GX44Gf44GE44Gq44Go6ICD44GI44Gm77yJCgojIyMgT3BlbkFQSSAoU3dhZ2dlcikKT3BlbkFQSeOBrkRvY2tlcuOCs+ODs+ODhuODiuOBjOeri+OBoeS4iuOBjOOBo+OBpuOBiuOCiuOBvuOBmQp8IOOCs+ODs+ODhuODinwg44Ob44K544OIOuODneODvOODiCB8CnwgLS0tLSB8IC0tLS0gfAp8IHN3YWdnZXItZWRpdG9yICAgICAgICAgICAgICAgICAgIHwgbG9jYWxob3N0OjgwMDEgfAp8IHN3YWdnZXItdWkgICAgICAgICAgICAgICAgICAgICAgIHwgbG9jYWxob3N0OjgwMDIgfAp8IHN0b3BsaWdodC9wcmlzbShBUEnjg6Ljg4Pjgq/jgrXjg7zjg5ApICB8IGxvY2FsaG9zdDo4MDAzIHwKCuOCs+ODnuODs+ODiQpgYGAKbnBtIHJ1biBvcGVuYXBpCmBgYArjgafjgIEvc3JjL2dlbmVyYXRlZC/phY3kuIvjgatBUElDbGllbnTjgafjgYLjgotUeXBlU2NyaXB044Gu44Kz44O844OJ44KS44KS55Sf5oiQ44GX44G+44GZ44CCCgrjgZnjgbnjgabjgIEvYXBpL29wZW5hcGkueW1s44KS5Y+C54Wn44GX44Gm44G+44GZCg== readmeEtag: '"58516d1fc2ffaffff87607556511980884f5e027"' readmeLastModified: Wed, 10 Aug 2022 02:33:20 GMT repositoryId: 501450034 description: ReactでGoogleMapの実験場。いろいろと付け足してみたい created: '2022-06-09T00:15:08Z' updated: '2022-06-29T00:34:11Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: takeshi-kishima logo: https://avatars.githubusercontent.com/u/63081424?v=4 repoEtag: '"21972407fd0906b81f21073a2d9abb3dc91ee81c872252ec9d6a9f304d46939d"' repoLastModified: Wed, 29 Jun 2022 00:34:11 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/sabo99/laravel-restfulapi v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9sYXJhdmVsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbGFyYXZlbC9hcnQvbWFzdGVyL2xvZ28tbG9ja3VwLzUlMjBTVkcvMiUyMENNWUsvMSUyMEZ1bGwlMjBDb2xvci9sYXJhdmVsLWxvZ29sb2NrdXAtY215ay1yZWQuc3ZnIiB3aWR0aD0iNDAwIj48L2E+PC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CjxhIGhyZWY9Imh0dHBzOi8vdHJhdmlzLWNpLm9yZy9sYXJhdmVsL2ZyYW1ld29yayI+PGltZyBzcmM9Imh0dHBzOi8vdHJhdmlzLWNpLm9yZy9sYXJhdmVsL2ZyYW1ld29yay5zdmciIGFsdD0iQnVpbGQgU3RhdHVzIj48L2E+CjxhIGhyZWY9Imh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9sYXJhdmVsL2ZyYW1ld29yayI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L2R0L2xhcmF2ZWwvZnJhbWV3b3JrIiBhbHQ9IlRvdGFsIERvd25sb2FkcyI+PC9hPgo8YSBocmVmPSJodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvbGFyYXZlbC9mcmFtZXdvcmsiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3BhY2thZ2lzdC92L2xhcmF2ZWwvZnJhbWV3b3JrIiBhbHQ9IkxhdGVzdCBTdGFibGUgVmVyc2lvbiI+PC9hPgo8YSBocmVmPSJodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvbGFyYXZlbC9mcmFtZXdvcmsiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3BhY2thZ2lzdC9sL2xhcmF2ZWwvZnJhbWV3b3JrIiBhbHQ9IkxpY2Vuc2UiPjwvYT4KPC9wPgoKPGJyPgoKIyMg8J+agCBBUEkgRG9jdW1lbnRhdGlvbgoKLSAgIFtWaWV3IERvY3VtZW50YXRpb25dKGh0dHBzOi8vYXBwLnN3YWdnZXJodWIuY29tL2FwaXMtZG9jcy9zYWJvOTkvTGFyYXZlbFJFU1RmdWxBUEkvMS4wIy8pCgo8YnI+CgojIyDwn5qAIFF1aWNrIHN0YXJ0IChDbG9uZSBQcm9qZWN0KQoKMS4gICoqRmlyc3QgQ2xvbmUgUHJvamVjdCoqCgogICAgQ2xvbmUgcHJvamVjdCB3aXRoIHRoaXMgbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fibzk5L2xhcmF2ZWwtcmVzdGZ1bGFwaS5naXQKCjIuICAqKkluc3RhbGwgRGVwZWRlbmNpZXMqKgoKICAgIFJlcXVpcmVkIGBjb21wb3NlcmAKCiAgICBgYGBzaGVsbAogICAgY29tcG9zZXIgaW5zdGFsbAogICAgYGBgCjMuICAqKkNvbmZpZyBFbnZpcm9ubWVudCoqCgogICAgQ29weSBgLmVudi5leGFtcGxlYCB0byBuZXcgZmlsZSBgLmVudmAKICAgIGBgYHNoZWxsCiAgICBjcCAuZW52LmV4YW1wbGUgLmVudgogICAgYGBgCgo0LiAgKipSZWFkeSB0byBsYXVuY2ggb24gbG9jYWwgc2VydmVyKioKCiAgICBgYGBzaGVsbAogICAgcGhwIGFydGlzYW4gc2VydmUKICAgIGBgYAoKICAgIFlvdXIgc2l0ZSBpcyBub3cgcnVubmluZyBhdCBodHRwOi8vMTI3LjAuMC4xOjgwMDAKCjUuICAqKkxlYXJuIG1vcmUqKgoKICAgIC0gICBbTGFyYXZlbCBEb2N1bWVudGF0aW9uXShodHRwczovL2xhcmF2ZWwuY29tL2RvY3MvOS54LykKCiMjIExpY2Vuc2UKClRoZSBMYXJhdmVsIGZyYW1ld29yayBpcyBvcGVuLXNvdXJjZWQgc29mdHdhcmUgbGljZW5zZWQgdW5kZXIgdGhlIFtNSVQgbGljZW5zZV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQpLgo= readmeEtag: '"51d210f64930913796715365723af111e729de94"' readmeLastModified: Thu, 05 May 2022 13:38:03 GMT repositoryId: 463057012 description: >- Backend Restful API with Framework Laravel 9 | API Documentation Link below created: '2022-02-24T07:54:51Z' updated: '2022-02-27T13:19:46Z' language: PHP archived: false stars: 0 watchers: 1 forks: 0 owner: sabo99 logo: https://avatars.githubusercontent.com/u/49272368?v=4 repoEtag: '"411a9f1649b26993e4699533b00d5217dea8eec29777460126d20b5398f56ebb"' repoLastModified: Sun, 27 Feb 2022 13:19:46 GMT foundInMaster: true category: - Testing - Server Implementations id: 5b2cfcb738d836f99e8d100b603771ba - source: openapi3 tags repository: https://github.com/dahang/uci_djs v3: true id: 0da9c939d7fb10d818215dd9bd77eb9e repositoryMetadata: base64Readme: >- IyBSQkMgVUNJIERvdyBKb25lcyBJbmRleCBkYXRhIHNldCB3aXRoIHNwcmluZy1ib290LTIgd2ViZmx1eAoKIyMgQnVpbGRpbmcgYXBwbGljYXRpb24KCiMjIyBQcmUtcmVxdWlzaXRlcwotIEpESyAxNysKLSBtYXZlbiAzCi0gZG9ja2VyIENMSQoKIyMgT3B0aW9uIDEgcnVuaW5nIGZyb20gbG9jYWwKCmBgYHNoCiAgICBjZCBiYWNrZW5kCiAgICBtdm4gY2xlYW4gcGFja2FnZQogICAgbXZuIHNwcmluZy1ib290OnJ1bgogICAgZ290byBodHRwOi8vbG9jYWxob3N0OjgwODAvd2ViamFycy9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwKYGBgCgojIyBPcHRpb24gMjogVXNpbmcgc2NyaXB0CgpgYGBzaAogICAgLi9iYWNrZW5kL2J1aWxkLnNoCiAgICAuL3N0YXJ0LnNoCgpgYGAKCgojIyBPcHRpb24gMzogQnVpbGRpbmcgRXhlY3V0YWJsZSBKQVIKVG8gY3JlYXRlIGFuIGBleGVjdXRhYmxlIGphcmAsIHNpbXBseSBydW46CgpgYGBzaAogbXZuIGNsZWFuIHBhY2thZ2UKYGBgCgojIyMjIFRvIGNyZWF0ZSBhIG5vbi1uYXRpdmUgZG9ja2VyIGltYWdlLCBzaW1wbHkgcnVuOgoKYGBgc2gKbXZuIGNsZWFuIHNwcmluZy1ib290OmJ1aWxkLWltYWdlCmBgYAoKIyMjIyBUbyBydW4gdGhlIGRlbW8gdXNpbmcgZG9ja2VyLCBpbnZva2UgdGhlIGZvbGxvd2luZzoKCmBgYHNoCmRvY2tlciBydW4gLS1ybSAtcCA4MDgwOjgwODAgZGpzOjEuMC4wLVNOQVBTSE9UCmBgYAo= readmeEtag: '"0040595c1c357acffccd43e8292b2faed633b02a"' readmeLastModified: Mon, 24 Oct 2022 11:46:02 GMT repositoryId: 556718039 description: DEMO for OpenAPI3 Spring boot 2.7.x Webflux. R2DBC created: '2022-10-24T11:37:14Z' updated: '2022-10-24T12:16:24Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: dahang logo: https://avatars.githubusercontent.com/u/1457798?v=4 license: MIT repoEtag: '"b3fea4d65806f71777fd96fba8b9d370bdad4f75a2dd2ccb7d36fa9cac50c075"' repoLastModified: Mon, 24 Oct 2022 12:16:24 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/veselovnd88/websocketroomproject v3: true id: b83f5b1f55deaae47e0ebad1f20d8484 repositoryMetadata: repositoryId: 613807194 description: >- Part of Harvex Project. My part is responsible for Room catalog, room settings, chat and events, and also controlling player settings between all users created: '2023-03-14T10:06:12Z' updated: '2023-07-10T13:42:44Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: Veselovnd88 logo: https://avatars.githubusercontent.com/u/63257041?v=4 repoEtag: '"7d382676edf687f9f03bed4e84181d224fa0b2b82534723691ed772911cce9d7"' repoLastModified: Mon, 10 Jul 2023 13:42:44 GMT foundInMaster: true - source: openapi3 tags repository: https://github.com/irealworlds/laravel-openapi v3: true id: d955812d6ad9842a4e1dba2cb659e942 repositoryMetadata: repositoryId: 673433766 description: OpenApi generation for Laravel applications. created: '2023-08-01T15:59:35Z' updated: '2023-08-08T13:45:40Z' language: PHP archived: false stars: 0 watchers: 1 forks: 0 owner: irealworlds logo: https://avatars.githubusercontent.com/u/28299559?v=4 license: MIT repoEtag: '"1d37e88d1ef2521a86dae327059f4fa3eea7fb188de6fc7f1ad99e545c0613fa"' repoLastModified: Tue, 08 Aug 2023 13:45:40 GMT foundInMaster: true - source: openapi3 tags repository: https://github.com/asis2016/amaharjande v3: true id: 514fac05bafc5ae153e267cfd3c2b487 repositoryMetadata: base64Readme: >- IyB3d3cuYW1haGFyamFuLmRlCgojIyBBIHNob3J0IG5vdGUgb24gQ2xvdWQgY29tcHV0aW5nCi0gW1JlYWQgdGhpcyBhcnRpY2xlXShjbG91ZC1jb25jZXB0cy9SRUFETUUubWQpCgojIyBPcmdhbml6ZSBtYXJrZG93biB3aXRoIFB5dGhvbgotIFN0ZXAtYnktc3RlcCBndWlkZSB0byBvcmdhbml6aW5nIHlvdXIgbWFya2Rvd24gZmlsZXMgYW5kIGNvbXBpbGluZyB0aGVtIGludG8gYSBzaW5nbGUgUkVBRE1FLm1kIHVzaW5nIFB5dGhvbi4gW1JlYWQgbW9yZV0ob3JnYW5pemUtbWFya2Rvd24td2l0aC1weXRob24vUkVBRE1FLm1kKQoKIyMgUmV2ZXJzZSBwcm94eQotIFRoaXMgcHJvamVjdCBkZW1vbnN0cmF0ZXMgcmV2ZXJzZSBwcm94eSB1c2luZyBEamFuZ28sIEZsYXNrIGFuZCBMaW51eC4gW1JlYWQgbW9yZV0ocmV2ZXJzZS1wcm94eS9SRUFETUUubWQpCgojIyBTZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSBzZXR1cCBvbiBuZ2lueAotIFRoaXMgYXJ0aWNsZSBzaG93cyB5b3UgaG93IHlvdSBjYW4gY3JlYXRlIGEgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgZm9yIG5naW54LiBbUmVhZCBtb3JlXShzZWxmLXNpZ25lZC1jZXJ0aWZpY2F0ZS1uZ2lueC9SRUFETUUubWQpCgojIyB3aGF0aXNteWlwCi0gVGhpcyBwcm9qZWN0IHNob3dzIHlvdSBob3cgeW91IGNhbiBidWlsZCB5b3VyIG93biBwdWJsaWMgSVAgYWRkcmVzcyB2aWV3ZXIgdXNpbmcgRmxhc2suIFtSZWFkIG1vcmVdKHdoYXRpc215aXAvUkVBRE1FLm1kKQ== readmeEtag: '"943e272826af771c8e7b238224481232cb3ab7b2"' readmeLastModified: Sat, 20 Jan 2024 06:35:50 GMT repositoryId: 451885030 description: >- This repository is a part of www.amaharjan.de blogging which provides tutorial on various topics. created: '2022-01-25T13:19:15Z' updated: '2025-12-28T09:39:27Z' language: Python archived: false stars: 0 watchers: 1 forks: 0 owner: asis2016 logo: https://avatars.githubusercontent.com/u/19593234?v=4 repoEtag: '"c61dad3448fd3bb10bb64b4e86352dc451f6a3b1197a2cae0661f2a073b6d43e"' repoLastModified: Sun, 28 Dec 2025 09:39:27 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/himenon/openapi-parameter-formatter v3: true repositoryMetadata: base64Readme: >- IyBAaGltZW5vbi9vcGVuYXBpLXBhcmFtZXRlci1mb3JtYXR0ZXIKCkEgbGlicmFyeSB0aGF0IHNlcmlhbGl6ZXMgT3BlbkFQSSBwYXJhbWV0ZXIgb2JqZWN0cy4KSXQgaXMgaW1wbGVtZW50ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgc3R5bGUgZGVmaW5pdGlvbi4KCi0gaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4xLjAubWQjc3R5bGUtZXhhbXBsZXMKCiMjIFVzYWdlCgpgYGB0cwppbXBvcnQgeyBQYXRoUGFyYW1ldGVyIH0gZnJvbSAiQGhpbWVub24vb3BlbmFwaS1wYXJhbWV0ZXItZm9ybWF0dGVyIjsKClBhdGhQYXJhbWV0ZXIuZ2VuZXJhdGUoImNvbG9yIiwgewogIHZhbHVlOiB7CiAgICBSOiAxMDAsCiAgICBHOiAyMDAsCiAgICBCOiAxNTAsCiAgfSwKICBzdHlsZTogImxhYmVsIiwKICBleHBsb2RlOiB0cnVlLAp9KTsKYGBgCgpgYGB0cwppbXBvcnQgeyBRdWVyeVBhcmFtZXRlciB9IGZyb20gIkBoaW1lbm9uL29wZW5hcGktcGFyYW1ldGVyLWZvcm1hdHRlciI7CgpRdWVyeVBhcmFtZXRlci5nZW5lcmF0ZSgiY29sb3IiLCB7CiAgdmFsdWU6IHsKICAgIFI6ICIjMTAwIiwKICAgIEc6ICIjMjAwIiwKICAgIEI6ICIjMTUwIiwKICB9LAogIHN0eWxlOiAiZm9ybSIsCiAgZXhwbG9kZTogdHJ1ZSwKfSk7CgovLyBSPSUyMzEwMCZHPSUyMzIwMCZCPSUyMzE1MApgYGAKCmBgYHRzCmltcG9ydCB7IFF1ZXJ5UGFyYW1ldGVyIH0gZnJvbSAiQGhpbWVub24vb3BlbmFwaS1wYXJhbWV0ZXItZm9ybWF0dGVyIjsKClF1ZXJ5UGFyYW1ldGVyLmdlbmVyYXRlKCJjb2xvciIsIHsKICB2YWx1ZTogWyIjYmx1ZSIsICIjYmxhY2siLCAiI2Jyb3duIl0sCiAgc3R5bGU6ICJzcGFjZURlbGltaXRlZCIsCiAgZXhwbG9kZTogZmFsc2UsCn0pOwoKLy8gY29sb3I9JTIzYmx1ZSUyMCUyM2JsYWNrJTIwJTIzYnJvd24KYGBgCgpgYGB0cwppbXBvcnQgeyBRdWVyeVBhcmFtZXRlciB9IGZyb20gIkBoaW1lbm9uL29wZW5hcGktcGFyYW1ldGVyLWZvcm1hdHRlciI7CgpRdWVyeVBhcmFtZXRlci5nZW5lcmF0ZSgiY29sb3IiLCB7CiAgdmFsdWU6IFsiI2JsdWUiLCAiI2JsYWNrIiwgIiNicm93biJdLAogIHN0eWxlOiAicGlwZURlbGltaXRlZCIsCiAgZXhwbG9kZTogZmFsc2UsCn0pOwoKLy8gY29sb3I9JTIzYmx1ZSU3QyUyM2JsYWNrJTdDJTIzYnJvd24KYGBgCgpgYGB0cwppbXBvcnQgeyBRdWVyeVBhcmFtZXRlciB9IGZyb20gIkBoaW1lbm9uL29wZW5hcGktcGFyYW1ldGVyLWZvcm1hdHRlciI7CgpRdWVyeVBhcmFtZXRlci5nZW5lcmF0ZSgiY29sb3IiLCB7CiAgdmFsdWU6IHsKICAgIFI6IDEwMCwKICAgIEc6IDIwMCwKICAgIEI6IDE1MCwKICB9LAogIHN0eWxlOiAiZGVlcE9iamVjdCIsCiAgZXhwbG9kZTogdHJ1ZSwKfSk7CgovLyBjb2xvciU1QlIlNUQ9MTAwJmNvbG9yJTVCRyU1RD0yMDAmY29sb3IlNUJCJTVEPTE1MApgYGAKCmBgYHRzCmltcG9ydCB7IEhlYWRlclBhcmFtZXRlciB9IGZyb20gIkBoaW1lbm9uL29wZW5hcGktcGFyYW1ldGVyLWZvcm1hdHRlciI7CgpIZWFkZXJQYXJhbWV0ZXIuZ2VuZXJhdGUoImNvbG9yIiwgewogIHZhbHVlOiBbImJsdWUiLCAiYmxhY2siLCAiYnJvd24iXSwKICBzdHlsZTogInNpbXBsZSIsCiAgZXhwbG9kZTogZmFsc2UsCn0pOwovLyAiYmx1ZSxibGFjayxicm93biIKYGBgCgpgYGB0cwppbXBvcnQgeyBDb29raWVQYXJhbWV0ZXIgfSBmcm9tICJAaGltZW5vbi9vcGVuYXBpLXBhcmFtZXRlci1mb3JtYXR0ZXIiOwoKQ29va2llUGFyYW1ldGVyLmdlbmVyYXRlKCJjb2xvciIsIHsKICB2YWx1ZTogWyJibHVlIiwgImJsYWNrIiwgImJyb3duIl0sCiAgc3R5bGU6ICJmb3JtIiwKICBleHBsb2RlOiBmYWxzZSwKfSk7Ci8vICJjb2xvcj1SLDEwMCxHLDIwMCxCLDE1MCIKYGBgCgojIyBMSUNFTkNFCgpbQGhpbWVub24vb3BlbmFwaS1wYXJhbWV0ZXItZm9ybWF0dGVyXShodHRwczovL2dpdGh1Yi5jb20vSGltZW5vbi9vcGVuYXBpLXBhcmFtZXRlci1mb3JtYXR0ZXIp44O7TUlUCg== readmeEtag: '"6e23c7b3fe5566ce18caf7e0402dc380297c0bb4"' readmeLastModified: Tue, 19 Mar 2024 12:15:25 GMT repositoryId: 328625019 description: OpenAPI Query and Path Parameter Formatter. created: '2021-01-11T10:19:36Z' updated: '2025-06-26T20:08:07Z' language: TypeScript archived: false stars: 1 watchers: 0 forks: 2 owner: Himenon logo: https://avatars.githubusercontent.com/u/6715229?v=4 license: MIT repoEtag: '"c8d39ee77abc30e171746332931fa73ab345ad8bf0d91450c6960de8b30350a7"' repoLastModified: Thu, 26 Jun 2025 20:08:07 GMT foundInMaster: true category: Data Validators id: 2db87929392a80657903864a4b385784 - source: openapi3 tags repository: https://github.com/laurosilveira/sify-flix-api v3: true id: 8e919ac798391627da92325cb87fa471 repositoryMetadata: base64Readme: >- IyBzaWZ5LWZsaXgtYXBpCgojIyBBYm91dCB0aGlzIHByb2plY3QKKiBbQWJvdXRdKCNhYm91dCkKKiBbQXJjaGl0ZWN0dXJlXSgjQXJjaGl0ZWN0dXJlKQoqIFtUZWNobm9sb2dpZXNdKCNUZWNobm9sb2dpZXMpCiogW1N3YWdnZXIgRG9jdW1lbnRhdGlvbl0oI1N3YWdnZXItZG9jdW1lbnRhdGlvbikKKiBbU2VjdXJpdHldKCNTZWN1cml0eSkKKiBbSG93IHRvIHJ1bl0oI2hvdy10by1ydW4pCiAgICAqIFtSdW4gd2l0aCBEb2NrZXJdKCNydW4td2l0aC1kb2NrZXItY29tcG9zZSkKICAgICogW1J1biB3aXRoIG12biBzcHJpbmctYm9vdDpydW5dKCNydW4td2l0aC1tdm4tc3ByaW5nLWJvb3QpCiogW2hvdyB0byBydW4gVGVzdF0oI3J1bi10ZXN0cykKKiBbQ29udHJpYnV0b3JzXSgjY29udHJpYnV0b3JzKQoKIyBBYm91dApUaGlzIGlzIGEgUmVzdCBBUEkgZGV2ZWxvcGVkIGJhc2VkIG9uIHRoZSByZXF1aXJlbWVudHMgZ2l2ZW4gZm9yIHRoZSBzZWxlY3Rpb24gcHJvY2VzcyBieSB0aGUgY29tcGFueSBXMk0uClRoaXMgQVBJIHdhcyBidWlsdCB3aXRoIEphdmEgMjEsIFNwcmluZyBCb290LCBIMiBEYXRhYmFzZSwgRmx5d2F5IE1pZ3JhdGlvbiwgU3ByaW5nIERvYyBPcGVuQVBJLCBEb2NrZXIgYW5kIERvY2tlci1jb21wb3NlLgoKIyBBcmNoaXRlY3R1cmUKVGhlIGFwcGxpY2F0aW9uIGlzIGJ1aWx0IGZvbGxvd2luZyB0aGUgKipNVkMqKiBkZXNpZ24gcGF0dGVybi4KRWFjaCBvZiB0aGUgY29tcG9uZW50cyB3aWxsIGJlIGRlc2NyaWJlZCBiZWxvdzoKKiAqKlZpZXcqKjogY29udGFpbnMgcmVzcG9uc2UgZnJvbSB0aGUgUmVzdCBjb250cm9sbGVyIHRoYXQgd2lsbCBiZSBzaG93biBpbiBKU09OIGZvcm1hdCB0byB0aGUgY2xpZW50LgoqICoqUmVzdCBDb250cm9sbGVyKio6IHJlc3BvbnNpYmxlIGZvciByZWNlaXZpbmcgY2FsbHMgYW5kIGRpcmVjdGluZyB0aGVtIHRvIHRoZSBjb3JyZWN0IHNlcnZpY2UuCiogKipTZXJ2aWNlKio6IGEgZGVzaWduIHBhdHRlcm4gbGF5ZXIgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgdGhlIHNlcnZpY2UgZnJvbSB0aGUgcmVwb3NpdG9yeSBsYXllci4KKiAqKlJlcG9zaXRvcnkqKjogdGhpcyBsYXllciBpcyByZXNwb25zaWJsZSBmb3IgY29ubmVjdGluZyB0byB0aGUgZGF0YWJhc2UgYW5kIGZvciBwZXJzaXN0aW5nLCByZXRyaWV2aW5nLCB1cGRhdGluZyBhbmQgZGVsZXRpbmcgZGF0YS4KCiMgVGVjaG5vbG9naWVzCi0gSmF2YSAyMQotIFNwcmluZyBCb290IDMuMi4yCi0gU3ByaW5nIFNlY3VyaXR5IC0gQmFzaWMgQXV0aGVudGljYXRpb24KLSBTcHJpbmcgT3BlbkFQSQotIEgyIERhdGFiYXNlCi0gRmx5d2F5IE1pZ3JhdGlvbgotIERvY2tlcgotIERvY2tlci1jb21wb3NlCi0gQXNzZXJ0SiwgTW9ja2l0bwoKIyBTd2FnZ2VyIERvY3VtZW50YXRpb24KClRoZSBkb2N1bWVudGF0aW9uIGlzIGdlbmVyYXRlZCBieSBTcHJpbmcgT3BlbmFwaS4gT25jZSB5b3UgaGF2ZSBzdGFydGVkIHRoZSBhcHBsaWNhdGlvbiB0aGUgdXJsOiBgYGBodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS5odG1sYGBgCgohW3NwYWNlLXNoaXAtcmVzY29udHJvbGxlci5wbmddKGRhdGEvc3BhY2Utc2hpcC1yZXN0Y29udHJvbGxlci5wbmcpCgojIFNlY3VyaXR5ClRoaXMgQVBJIGlzIHByb3RlY3RlZCB3aXRoIFNwcmluZyBTZWN1cml0eSB1c2luZyBiYXNpYyBhdXRob3JpemF0aW9uLgpUaGlzIEFQSSBpcyBjb25maWd1cmVkIHRvIG5vdCBzYXZlIHNlc3Npb25zLgpPbmNlIHlvdSBoYXZlIGFjY2Vzc2VkIFN3YWdnZXIsIHNpbXBseSBhdXRoZW50aWNhdGUgd2l0aCB5b3VyIHVzZXJuYW1lIGFuZCBwYXNzd29yZC4KTm90ZXM6IEJhc2ljIGF1dGhvcml6YXRpb24gbW9kZSBpcyAqKm5vdCByZWNvbW1lbmRlZCoqLCBhcyBpdCBpcyBub3QgdGhlIG1vc3Qgc2VjdXJlLgpXaGVuIHN0YXJ0aW5nIHRoZSBhcHBsaWNhdGlvbiwgYSB1c2VyIGBgYHVzZXI6IGFkbWluIHBhc3N3b3JkOjEyMzRgYGAgd2l0aCB0aGUgYWRtaW4gcm9sZSB3aWxsIGFscmVhZHkgYmUgYXZhaWxhYmxlLgoKIyBIb3cgdG8gUnVuClRoZXJlIHR3byBvcHRpb25zIHRvIHJ1biB0aGlzIGFwcGxpY2F0aW9uLCBydW4gYnkgZG9ja2VyLWNvbXBvc2Ugb3IgcnVuIGFzIHNwcmluZy1ib290LgoKIyMjIFJ1biB3aXRoIGRvY2tlci1jb21wb3NlCk1ha2Ugc3VyZSB5b3UgaGF2ZSAqKkRvY2tlcioqIGluc3RhbGxlZCBhbmQgZXhlY3V0ZSB0aGUgY29tbWFuZC4KCmBgYApkb2NrZXItY29tcG9zZSB1cApgYGAKIyMjIFJ1biB3aXRoIG12biBzcHJpbmctYm9vdApgYGBzaGVsbAptdm4gc3ByaW5nLWJvb3Q6cnVuCmBgYAoKIyBSdW4gdGVzdHMKClRoaXMgYXBwbGljYXRpb24gaGFzIHVuaXR5IHRlc3RzIGFuZCBpbnRlZ3JhdGlvbiB0ZXN0cywgb25jZSBpdCB1c2UgTWF2ZW4ganVzdCBydW46CgpgYGAKbXZuIHRlc3QKYGBgCgojIyBDb250cmlidXRvcnMKW0BMYXVyb1NpbHZlaXJhXShodHRwczovL2dpdGh1Yi5jb20vTGF1cm9TaWx2ZWlyYSkK readmeEtag: '"a58dff38848d87c48aaf24840a06ce946dbabded"' readmeLastModified: Mon, 24 Jun 2024 07:47:59 GMT repositoryId: 761306430 description: >- An API REST built with Spring boot, spring security about movies and series of spaceships created: '2024-02-21T16:14:56Z' updated: '2024-06-24T07:48:03Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: LauroSilveira logo: https://avatars.githubusercontent.com/u/10181673?v=4 repoEtag: '"ba8e138a0fe93fb8b5f67bfe54901c611eadb2224c0d9a5ff974a9d11a4f2a4a"' repoLastModified: Mon, 24 Jun 2024 07:48:03 GMT category: Server Implementations foundInMaster: true - source: https://openapi.tools/ name: Apitive Studio category: - Documentation - GUI Editors - Mock language: - Angular 7.0 - Java - Saas link: https://www.apitive.com source_description: > A platform for Digital Product Managers and API Consultants to design REST APIs with in-built mock and documentation. v2: true v3: true foundInMaster: true id: 2fa64050f1dc133ee8b33c58c25298bf - source: https://openapi.tools/ name: LucyBot api-spec-converter category: Converters language: Node.js link: https://www.npmjs.com/package/api-spec-converter repository: https://github.com/lucybot-inc/api-spec-converter source_description: Convert between API description formats such as OpenAPI and RAML. v2: true v3: true repositoryMetadata: base64Readme: >- IyBhcGktc3BlYy1jb252ZXJ0ZXIKPiBUaGlzIHByb2plY3QgaXMgbG9va2luZyBmb3IgYSBuZXcgbWFpbnRhaW5lciEgTGV0IHVzIGtub3cgaWYgeW91J3JlIGludGVyZXN0ZWQgaW4gdGFraW5nIGl0IG92ZXIuCgpbIVtTaGFyZSBvbiBUd2l0dGVyXVt0d2l0dGVyLWltYWdlXV1bdHdpdHRlci1saW5rXQoKWyFbQ2hhdCBvbiBnaXR0ZXJdW2dpdHRlci1pbWFnZV1dW2dpdHRlci1saW5rXQpbIVtOUE0gdmVyc2lvbl1bbnBtLWltYWdlXV1bbnBtLWxpbmtdClshW0J1aWxkIHN0YXR1c11bdHJhdmlzLWltYWdlXV1bdHJhdmlzLWxpbmtdCgpbIVtEZXBlbmRlbmN5IHN0YXR1c11bZGVwcy1pbWFnZV1dW2RlcHMtbGlua10KWyFbZGV2RGVwZW5kZW5jeSBzdGF0dXNdW2RldmRlcHMtaW1hZ2VdXVtkZXZkZXBzLWxpbmtdCgpDb252ZXJ0IGJldHdlZW4gQVBJIGRlc2NyaXB0aW9uIGZvcm1hdHMgc3VjaCBhcyBbU3dhZ2dlcl0oaHR0cDovL3N3YWdnZXIuaW8vKSBhbmQgW1JBTUxdKGh0dHA6Ly9yYW1sLm9yZy8pCgoqKkN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGNvbnZlcnNpb24gdG8gT3BlbkFQSShma2EgU3dhZ2dlcikgMi4wIGZvcm1hdCwgYW5kIGZyb20gT3BlbkFQSSAyLjAgdG8gT3BlbkFQSSAzLjAueCoqCgpZb3UgY2FuIGFsc28gdXNlIHRoZSBvbmxpbmUgdmVyc2lvbiBhdCBodHRwczovL2x1Y3lib3QtaW5jLmdpdGh1Yi5pby9hcGktc3BlYy1jb252ZXJ0ZXIvLgoKIyMgSW5zdGFsbGF0aW9uCgojIyMgQ29tbWFuZCBMaW5lCj4gUHJvYmxlbXM/IFNlZSBbaXNzdWUgIzEzMl0oaHR0cHM6Ly9naXRodWIuY29tL0x1Y3lCb3QtSW5jL2FwaS1zcGVjLWNvbnZlcnRlci9pc3N1ZXMvMTMyKQpgYGBiYXNoCm5wbSBpbnN0YWxsIC1nIGFwaS1zcGVjLWNvbnZlcnRlcgpgYGAKCiMjIyBOb2RlSlMvQnJvd3NlcgpgYGBiYXNoCm5wbSBpbnN0YWxsIC0tc2F2ZSBhcGktc3BlYy1jb252ZXJ0ZXIKYGBgCgojIyBVc2FnZQoKIyMjIENvbW1hbmQgTGluZQpgYGBiYXNoCiQgYXBpLXNwZWMtY29udmVydGVyIC1oCgogIFVzYWdlOiBhcGktc3BlYy1jb252ZXJ0ZXIgW29wdGlvbnNdIDxVUkx8ZmlsZW5hbWU+CgogIENvbnZlcnQgQVBJIGRlc2NyaXB0aW9ucyBiZXR3ZWVuIHBvcHVsYXIgZm9ybWF0cy4KCiAgU3VwcG9ydGVkIGZvcm1hdHM6CiAgICAqIHN3YWdnZXJfMQogICAgKiBzd2FnZ2VyXzIKICAgICogb3BlbmFwaV8zCiAgICAqIGFwaV9ibHVlcHJpbnQKICAgICogaW9fZG9jcwogICAgKiBnb29nbGUKICAgICogcmFtbAogICAgKiB3YWRsCgogIE9wdGlvbnM6CgogICAgLWgsIC0taGVscCAgICAgICAgICAgICAgb3V0cHV0IHVzYWdlIGluZm9ybWF0aW9uCiAgICAtViwgLS12ZXJzaW9uICAgICAgICAgICBvdXRwdXQgdGhlIHZlcnNpb24gbnVtYmVyCiAgICAtZiwgLS1mcm9tIDxmb3JtYXQ+ICAgICBTcGVjaWZpZXMgZm9ybWF0IHRvIGNvbnZlcnQKICAgIC10LCAtLXRvIDxmb3JtYXQ+ICAgICAgIFNwZWNpZmllcyBvdXRwdXQgZm9ybWF0CiAgICAtcywgLS1zeW50YXggW3N5bnRheF0gICBTcGVjaWZpZXMgb3V0cHV0IGRhdGEgc3ludGF4OiBqc29uIG9yIHlhbWwuIERlZmF1bHRzIHRvIGpzb24KICAgIC1vLCAtLW9yZGVyIFtzb3J0T3JkZXJdIFNwZWNpZmllcyB0b3AgZmllbGRzIG9yZGVyaW5nOiBvcGVuYXBpIG9yIGFscGhhLiBEZWZhdWx0cyB0byBvcGVuYXBpCiAgICAtYywgLS1jaGVjayAgICAgICAgICAgICBDaGVjayBpZiByZXN1bHQgaXMgdmFsaWQgc3BlYwogICAgLWQsIC0tZHVtbXkgICAgICAgICAgICAgRmlsbCBtaXNzaW5nIHJlcXVpcmVkIGZpZWxkcyB3aXRoIGR1bW15IGRhdGEKYGBgCgpFeGFtcGxlOgpgYGBiYXNoCiQgYXBpLXNwZWMtY29udmVydGVyIC0tZnJvbT1zd2FnZ2VyXzEgLS10bz1zd2FnZ2VyXzIgLS1zeW50YXg9eWFtbCAtLW9yZGVyPWFscGhhIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9MdWN5Qm90LUluYy9hcGktc3BlYy1jb252ZXJ0ZXIvbWFzdGVyL3Rlc3QvaW5wdXQvc3dhZ2dlcl8xL3BldHN0b3JlL3BldC5qc29uID4gc3dhZ2dlci5qc29uCmBgYAoKIyMjIE5vZGVKUwoKIyMjIE9wdGlvbnMKKiBgZnJvbWAgLSBzb3VyY2UgZm9ybWF0IChzZWUgZm9ybWF0cyBiZWxvdykKKiBgdG9gIC0gZGVzaXJlZCBmb3JtYXQgKHNlZSBmb3JtYXRzIGJlbG93KQoqIGBzb3VyY2VgIC0gRmlsZW5hbWUsIFVSTCwgb3IgSlMgb2JqZWN0IGZvciB0aGUgc291cmNlCiMjIyBTaW1wbGUgZXhhbXBsZToKYGBganMKdmFyIENvbnZlcnRlciA9IHJlcXVpcmUoJ2FwaS1zcGVjLWNvbnZlcnRlcicpOwoKQ29udmVydGVyLmNvbnZlcnQoewogIGZyb206ICdzd2FnZ2VyXzEnLAogIHRvOiAnc3dhZ2dlcl8yJywKICBzb3VyY2U6ICdodHRwczovL2FwaS5nZXR0eWltYWdlcy5jb20vc3dhZ2dlci9hcGktZG9jcycsCn0sIGZ1bmN0aW9uKGVyciwgY29udmVydGVkKSB7CiAgY29uc29sZS5sb2coY29udmVydGVkLnN0cmluZ2lmeSgpKTsKICAvLyBGb3IgeWFtbCBhbmQvb3IgT3BlbkFwaSBmaWVsZCBvcmRlciBvdXRwdXQgcmVwbGFjZSBhYm92ZSBsaW5lCiAgLy8gd2l0aCBhbiBvcHRpb25zIG9iamVjdCBsaWtlIGJlbG93CiAgLy8gICB2YXIgIG9wdGlvbnMgPSB7c3ludGF4OiAneWFtbCcsIG9yZGVyOiAnb3BlbmFwaSd9CiAgLy8gICBjb25zb2xlLmxvZyhjb252ZXJ0ZWQuc3RyaW5naWZ5KG9wdGlvbnMpKTsKfSkKYGBgCiMjIyBDYWxsYmFjayB2cyBQcm9taXNlcwpUaGlzIGxpYnJhcnkgaGFzIGZ1bGwgc3VwcG9ydCBmb3IgYm90aCBjYWxsYmFjayBhbmQgcHJvbWlzZXMuCkFsbCBhc3luYyBmdW5jdGlvbnMgcmV0dXJuIHByb21pc2VzIGJ1dCBhbHNvIHdpbGwgZXhlY3V0ZSBjYWxsYmFjayBpZiBwcm92aWRlZC4KCmBgYGpzCnZhciBDb252ZXJ0ZXIgPSByZXF1aXJlKCdhcGktc3BlYy1jb252ZXJ0ZXInKTsKCkNvbnZlcnRlci5jb252ZXJ0KHsKICBmcm9tOiAnc3dhZ2dlcl8xJywKICB0bzogJ3N3YWdnZXJfMicsCiAgc291cmNlOiAnaHR0cHM6Ly9hcGkuZ2V0dHlpbWFnZXMuY29tL3N3YWdnZXIvYXBpLWRvY3MnLAp9KQoudGhlbihmdW5jdGlvbihjb252ZXJ0ZWQpIHsKICBjb25zb2xlLmxvZyhjb252ZXJ0ZWQuc3RyaW5naWZ5KCkpOwp9KTsKYGBgCiMjIyBBZHZhbmNlZCBmZWF0dXJlczoKYGBganMKdmFyIENvbnZlcnRlciA9IHJlcXVpcmUoJ2FwaS1zcGVjLWNvbnZlcnRlcicpOwpDb252ZXJ0ZXIuY29udmVydCh7CiAgZnJvbTogJ3N3YWdnZXJfMScsCiAgdG86ICdzd2FnZ2VyXzInLAogIHNvdXJjZTogJ2h0dHBzOi8vYXBpLmdldHR5aW1hZ2VzLmNvbS9zd2FnZ2VyL2FwaS1kb2NzJywKfSkKICAudGhlbihmdW5jdGlvbihjb252ZXJ0ZWQpIHsKICAgIC8vIFtPcHRpb25hbF0gRmlsbCBtaXNzaW5nIGZpZWxkcyB3aXRoIGR1bW15IHZhbHVlcwogICAgY29udmVydGVkLmZpbGxNaXNzaW5nKCk7CgogICAgLy8gW09wdGlvbmFsXSBWYWxpZGF0ZSBjb252ZXJ0ZWQgc3BlYwogICAgcmV0dXJuIGNvbnZlcnRlZC52YWxpZGF0ZSgpCiAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKICAgICAgICBpZiAocmVzdWx0LmVycm9ycykKICAgICAgICAgIHJldHVybiBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9ycywgbnVsbCwgMikpOwogICAgICAgIGlmIChyZXN1bHQud2FybmluZ3MpCiAgICAgICAgICByZXR1cm4gY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeSh3YXJuaW5ncywgbnVsbCwgMikpOwoKICAgICAgICBmcy53cml0ZUZpbGVTeW5jKCdzd2FnZ2VyMi5qc29uJywgY29udmVydGVkLnN0cmluZ2lmeSgpKTsKICAgICAgfSk7CiAgfSk7CmBgYAoKIyMjIEJyb3dzZXIKYGBganMKPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9hcGktc3BlYy1jb252ZXJ0ZXIvZGlzdC9hcGktc3BlYy1jb252ZXJ0ZXIuanMiPjwvc2NyaXB0PgpBUElTcGVjQ29udmVydGVyLmNvbnZlcnQoLi4uKQpgYGAKCiMjIFN1cHBvcnRlZCBGb3JtYXRzCgoqIFtTd2FnZ2VyIDEueF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMS4yLm1kKSAoc3dhZ2dlcl8xKQoqIFtPcGVuQVBJKGZrYSBTd2FnZ2VyKSAyLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCkgKHN3YWdnZXJfMikKKiBbT3BlbkFQSSAzLjAueF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjAubWQpIChvcGVuYXBpXzMpCiogW0kvTyBEb2NzXShodHRwczovL2dpdGh1Yi5jb20vbWFzaGVyeS9pb2RvY3MpIChpb19kb2NzKQoqIFtBUEkgQmx1ZXByaW50XShodHRwczovL2dpdGh1Yi5jb20vYXBpYXJ5aW8vYXBpLWJsdWVwcmludC9ibG9iL21hc3Rlci9BUEklMjBCbHVlcHJpbnQlMjBTcGVjaWZpY2F0aW9uLm1kKSAoYXBpX2JsdWVwcmludCkKKiBbR29vZ2xlIEFQSSBEaXNjb3ZlcnldKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2Rpc2NvdmVyeS92MS9yZWZlcmVuY2UvYXBpcykgKGdvb2dsZSkKKiBbUkFNTF0oaHR0cDovL3JhbWwub3JnL3NwZWMuaHRtbCkgKHJhbWwpCiogW1dBRExdKGh0dHA6Ly93d3cudzMub3JnL1N1Ym1pc3Npb24vd2FkbC8pICh3YWRsKQoKCiMjIENvbnZlcnNpb24gVGFibGUKCnxmcm9tOiAgICAgICAgICAgICB8c3dhZ2dlcl8xfHN3YWdnZXJfMnxvcGVuYXBpXzN8aW9fZG9jc3xhcGlfYmx1ZXByaW50fGdvb2dsZXxyYW1sfHdhZGx8Ci0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS06fDotLS0tLS0tOnw6LS0tLS06fDotLS0tLTp8Oi0tLS0tLS0tLS0tOnw6LS0tLTp8Oi0tOnw6LS06fAp8dG8gc3dhZ2dlcl8xICAgICAgfCAgbi9hICAgIHwgICAgICAgICB8ICAgICAgIHwgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgfCAgICB8ICAgIHwKfHRvIHN3YWdnZXJfMiAgICAgIHwgOndoaXRlX2NoZWNrX21hcms6IHwgICAgbi9hICB8IDp3aGl0ZV9jaGVja19tYXJrOiAgfCA6d2hpdGVfY2hlY2tfbWFyazogfCA6d2hpdGVfY2hlY2tfbWFyazogfCA6d2hpdGVfY2hlY2tfbWFyazogfCA6d2hpdGVfY2hlY2tfbWFyazogfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8dG8gb3BlbmFwaV8zICAgICAgfCAgIDplaWdodF9zcG9rZWRfYXN0ZXJpc2s6ICAgICB8IDp3aGl0ZV9jaGVja19tYXJrOiB8ICBuL2EgIHwgICA6ZWlnaHRfc3Bva2VkX2FzdGVyaXNrOiAgfCA6ZWlnaHRfc3Bva2VkX2FzdGVyaXNrOiB8ICA6ZWlnaHRfc3Bva2VkX2FzdGVyaXNrOiAgIHwgOmVpZ2h0X3Nwb2tlZF9hc3RlcmlzazogIHwgOmVpZ2h0X3Nwb2tlZF9hc3RlcmlzazogIHwKfHRvIGlvX2RvY3MgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICB8ICBuL2EgIHwgICAgICAgICAgICAgfCAgICAgIHwgICAgfCAgICB8Cnx0byBhcGlfYmx1ZXByaW50ICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgfCAgICAgICB8ICAgIG4vYSAgICAgIHwgICAgICB8ICAgIHwgICAgfAp8dG8gZ29vZ2xlICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgIHwgICAgICAgfCAgICAgICAgICAgICB8ICBuL2EgfCAgICB8ICAgIHwKfHRvIHJhbWwgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgfCAgICAgIHwgbi9hfCAgICB8Cnx0byB3YWRsICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgfCAgICAgICB8ICAgICAgICAgICAgIHwgICAgICB8ICAgIHwgbi9hfAoKIyMjIyBLZXkKKiA6d2hpdGVfY2hlY2tfbWFyazogLSBkaXJlY3QgY29udmVyc2lvbgoqIDplaWdodF9zcG9rZWRfYXN0ZXJpc2s6IC0gY29udmVyc2lvbiB2aWEgc3dhZ2dlcl8yCgojIyBDb250cmlidXRpbmcKQ29udHJpYnV0aW9ucyBhcmUgd2VsY29tZSBhbmQgZW5jb3VyYWdlZC4KCiMjIyBUZXN0aW5nClBsZWFzZSBhZGQgYSB0ZXN0IGNhc2UgaWYgeW91J3JlIGFkZGluZyBmZWF0dXJlcyBvciBmaXhpbmcgYnVncy4gVG8gcnVuIHRoZSB0ZXN0czoKCmBgYGJhc2gKbnBtIHRlc3QKYGBgCgpJbiBjYXNlIHlvdSBuZWVkIHRvIG92ZXJyaWRlIHRoZSBleHBlY3RlZCBvdXRwdXRzLCBkdWUgdG8gYSBqdXN0aWZpZWQgYW5kIHZlcmlmaWVkIGNoYW5nZSwgcnVuIHRoaXM6CmBgYGJhc2gKV1JJVEVfR09MREVOPXRydWUgbnBtIHRlc3QKYGBgCiMjIyBSZWxlYXNlcwpgYGAKbnBtIHJ1biBicm93c2VyaWZ5CmdpdCBjb21taXQgLWEgLW0gIkJ1aWxkIGJyb3dzZXIgZGlzdHJpYnV0aW9uIgpucG0gdmVyc2lvbiBtaW5vciAjIG9yIG1ham9yL3BhdGNoCm5wbSBwdWJsaXNoCmdpdCBwdXNoIC0tZm9sbG93LXRhZ3MKYGBgCgpbdHdpdHRlci1pbWFnZV06IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdHdpdHRlci91cmwvaHR0cC9sdWN5Ym90LmdpdGh1Yi5pby9hcGktc3BlYy1jb252ZXJ0ZXIuc3ZnP3N0eWxlPXNvY2lhbApbdHdpdHRlci1saW5rXTogaHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQ/dGV4dD1Db252ZXJ0K2JldHdlZW4rQVBJK2Rlc2NyaXB0aW9uK2Zvcm1hdHMrc3VjaCthcytTd2FnZ2VyK2FuZCtSQU1MOiZ1cmw9aHR0cCUzQSUyRiUyRmx1Y3lib3QuZ2l0aHViLmlvJTJGYXBpLXNwZWMtY29udmVydGVyCltnaXR0ZXItaW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdHRlci9yb29tL2x1Y3lib3QvYXBpLXNwZWMtY29udmVydGVyLnN2ZwpbZ2l0dGVyLWxpbmtdOiBodHRwczovL2dpdHRlci5pbS9sdWN5Ym90L2FwaS1zcGVjLWNvbnZlcnRlcgpbbnBtLWltYWdlXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9hcGktc3BlYy1jb252ZXJ0ZXIuc3ZnCltucG0tbGlua106IGh0dHBzOi8vbnBtanMub3JnL3BhY2thZ2UvYXBpLXNwZWMtY29udmVydGVyClt0cmF2aXMtaW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL3RyYXZpcy9MdWN5Qm90LUluYy9hcGktc3BlYy1jb252ZXJ0ZXIuc3ZnClt0cmF2aXMtbGlua106IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9MdWN5Qm90LUluYy9hcGktc3BlYy1jb252ZXJ0ZXIKW2RlcHMtaW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2RhdmlkL2x1Y3lib3QvYXBpLXNwZWMtY29udmVydGVyLnN2ZwpbZGVwcy1saW5rXTogaHR0cHM6Ly9kYXZpZC1kbS5vcmcvbHVjeWJvdC9hcGktc3BlYy1jb252ZXJ0ZXIKW2RldmRlcHMtaW1hZ2VdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2RhdmlkL2Rldi9sdWN5Ym90L2FwaS1zcGVjLWNvbnZlcnRlci5zdmcKW2RldmRlcHMtbGlua106IGh0dHBzOi8vZGF2aWQtZG0ub3JnL2x1Y3lib3QvYXBpLXNwZWMtY29udmVydGVyI2luZm89ZGV2RGVwZW5kZW5jaWVzCg== readmeEtag: '"7dbd3b0e8b5ff05e10f04d7d2e337385db68efd6"' readmeLastModified: Wed, 08 Jun 2022 13:14:35 GMT repositoryId: 35116903 description: >- Convert API descriptions between popular formats such as OpenAPI(fka Swagger), RAML, API Blueprint, WADL, etc. created: '2015-05-05T18:30:05Z' updated: '2026-01-26T11:46:59Z' language: JavaScript archived: false stars: 1167 watchers: 22 forks: 189 owner: LucyBot-Inc logo: https://avatars.githubusercontent.com/u/26313641?v=4 license: MIT repoEtag: '"26e19a7f4b18451355c8dcf407f57be62bf165484c5ce7a8efd040e43aadb35a"' repoLastModified: Mon, 26 Jan 2026 11:46:59 GMT foundInMaster: true id: dccbe92257187d6d136bb4b5f304d6fe - source: https://openapi.tools/ name: LucyBot DocGen category: - Documentation - Server Implementations repository: https://github.com/lucybot-inc/documentation-starter link: https://lucybot.com/docgen language: JavaScript source_description: >- Generate a customizable website, with API documentation, console, and interactive workflows, from an OpenAPI spec v2: true v3: true repositoryMetadata: base64Readme: >- IyBMdWN5Qm90IFN0YXJ0ZXIgQVBJIENvbnNvbGUKVGhpcyBpcyB0aGUgZGVmYXVsdCBidWlsZCBmb3IgW0x1Y3lCb3QncyBBUEkgRG9jdW1lbnRhdGlvbl0oaHR0cDovL2x1Y3lib3QuY29tKS4KSXQgY2FuIGJlIHVzZWQgaW4gbm9uLWNvbW1lcmNpYWwgcHJvamVjdHMsIG9yIGZvciBkZW1vIHB1cnBvc2VzLgoKQ2hlY2sgb3V0IHRoZSBbUGV0IFN0b3JlIGRlbW9dKGh0dHA6Ly9kZW1vLmx1Y3lib3QuY29tKQoKQ29tbWVyY2lhbCBsaWNlbnNlcyBhbmQgYWRkaXRpb25hbCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIGF0IFtsdWN5Ym90LmNvbV0oaHR0cDovL2x1Y3lib3QuY29tKQoKIyMgVXNhZ2UKU2ltcGx5IGZvcmsgdGhpcyByZXBvc2l0b3J5IGFuZCByZXBsYWNlIGBvcGVuYXBpLmpzb25gIHdpdGggeW91cgpbT3BlbkFQSSBzcGVjaWZpY2F0aW9uXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKS4KCmBgYGJhc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9MdWN5Qm90LUluYy9kb2N1bWVudGF0aW9uLXN0YXJ0ZXIKY3AgL3BhdGgvdG8vbXkvb3BlbmFwaS5qc29uIGRvY3VtZW50YXRpb24tc3RhcnRlci9vcGVuYXBpLmpzb24KYGBgCgo+IEhhdmUgUkFNTCwgV0FETCwgQVBJIEJsdWVwcmludCwgb3IgSS9PIERvY3M/Cj4gQ2hlY2sgb3V0IFthcGktc3BlYy1jb252ZXJ0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9sdWN5Ym90L2FwaS1zcGVjLWNvbnZlcnRlcikKCiMjIFNlcnZpbmcKWW91IGNhbiBzZXJ2ZSB0aGUgd2Vic2l0ZSB3aXRoIGFueSBzdGF0aWMgSFRUUCBzZXJ2ZXIuCgplLmcuIHdpdGggW2h0dHAtc2VydmVyXShodHRwczovL2dpdGh1Yi5jb20vaW5kZXh6ZXJvL2h0dHAtc2VydmVyKQpgYGAKbnBtIGluc3RhbGwgLWcgaHR0cC1zZXJ2ZXIKaHR0cC1zZXJ2ZXIgLi9kb2N1bWVudGF0aW9uLXN0YXJ0ZXIKYGBgCgpvciB3aXRoIFBIUDoKYGBgCnBocCAtUyAwLjAuMC4wOjgwIC10IC4vZG9jdW1lbnRhdGlvbi1zdGFydGVyCmBgYAoKVGhlIGVhc2llc3Qgd2F5IHRvIHNlcnZlIHRoZSBkb2N1bWVudGF0aW9uIHB1YmxpY2x5IGlzIHdpdGggR2l0SHViIHBhZ2VzOgppbiB5b3VyIGZvcmssIHZpc2l0IHRoZSBTZXR0aW5ncyBwYWdlLCBhbmQgY2hvb3NlICJtYXN0ZXIgYnJhbmNoIiBhcyB0aGUgc291cmNlIGluIHRoZQpHaXRIdWIgUGFnZXMgc2VjdGlvbi4gWW91IGNhbiBhbHNvIHNldCBhIGN1c3RvbSBkb21haW4gdGhlcmUuCgpZb3UgY2FuIGFsc28gc2VydmUgdGhpcyBkaXJlY3Rvcnkgd2l0aCBBcGFjaGUsIE5vZGVKUyBFeHByZXNzLCBldGMuCgojIyBDdXN0b21pemF0aW9uCiMjIyBUaXRsZSBhbmQgRGVzY3JpcHRpb24KVGhlIEFQSSB0aXRsZSBhbmQgZGVzY3JpcHRpb24gYXJlIGNvbnRyb2xsZWQgYnkKdGhlIGBpbmZvYCBmaWVsZCBpbiBgb3BlbmFwaS5qc29uYC4gIFlvdSBjYW4gdXNlCltNYXJrZG93bl0oaHR0cHM6Ly9naXRodWIuY29tL2FkYW0tcC9tYXJrZG93bi1oZXJlL3dpa2kvTWFya2Rvd24tQ2hlYXRzaGVldCkKaW4gdGhlIGRlc2NyaXB0aW9uLgoKIyMjIFRoZW1lcwpZb3UgY2FuIHVzZSB5b3VyIG93biBCb290c3RyYXAgdGhlbWUgdG8gY3VzdG9taXplIGNvbG9ycywgZm9udHMsIHNpemVzLCBhbmQgbW9yZS4KSnVzdCByZXBsYWNlIGBkaXN0L2Jvb3RzdHJhcC5jc3NgIHdpdGggeW91ciBvd24gYm9vdHN0cmFwLmNzcwoKWW91IGNhbiBnZW5lcmF0ZSBhIGJvb3RzdHJhcC5jc3MgZmlsZSB1c2luZzoKKiBbU3RyYXBwaW5nIV0oaHR0cDovL2JvYmJ5LWJyZW5uYW4uZ2l0aHViLmlvL3N0cmFwcGluZykKKiBbQm9vdHN0cmFwIExpdmUgQ3VzdG9taXplcl0oaHR0cDovL2Jvb3RzdHJhcC1saXZlLWN1c3RvbWl6ZXIuY29tLykKCiMjIyBNb3JlClRoZSBmdWxsIGNvbW1lcmNpYWwgdmVyc2lvbiBvZmZlcnMgc2V2ZXJhbCBhZGRpdGlvbmFsIGZlYXR1cmVzOgoqIEFkZGl0aW9uYWwgTWFya2Rvd24vSFRNTCBzZWN0aW9ucwoqIEN1c3RvbSBuYXZiYXIgYW5kIGZvb3RlcgoqIEN1c3RvbSBob21lcGFnZQoqIEV2ZW50IHRyYWNraW5nCiogU0VPIChgPG1ldGE+YCBhbmQgYDx0aXRsZT5gIHRhZ3MsIGBzaXRlbWFwLnhtbGApCiogVXNlciBhdXRoZW50aWNhdGlvbgoqIEdhbGxlcmllcyBmb3IgbXVsdGlwbGUgQVBJcwoKRm9yIGEgZnVsbCBsaXN0IG9mIGZlYXR1cmVzIGF2YWlsYWJsZSBzZWUgW2x1Y3lib3QuY29tXShodHRwOi8vbHVjeWJvdC5jb20pCgojIyBMaWNlbnNlCltDcmVhdGl2ZSBDb21tb25zIDQuMCAtIE5vbi1jb21tZXJjaWFsXShodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktbmMvNC4wLykKCkZvciBhIGNvbW1lcmNpYWwgbGljZW5zZSwgW2NvbnRhY3QgdXNdKGh0dHA6Ly9sdWN5Ym90LmNvbS8jQ29udGFjdCkK readmeEtag: '"286e205f17131d81bf83f5514388a05e39e5a11c"' readmeLastModified: Fri, 14 Jul 2017 20:36:34 GMT repositoryId: 36742809 description: Interactive REST API Documentation created: '2015-06-02T15:30:49Z' updated: '2025-11-17T10:45:01Z' language: HTML archived: false stars: 175 watchers: 11 forks: 59 owner: LucyBot-Inc logo: https://avatars.githubusercontent.com/u/26313641?v=4 license: NOASSERTION repoEtag: '"3a00ca90377faf5f33050a02d1c1046782c79f9e00996353f6144846c99f721c"' repoLastModified: Mon, 17 Nov 2025 10:45:01 GMT foundInMaster: true id: 006c5eda16efc55f050049e1c4964881 - source: https://openapi.tools/ name: Senya Editor category: Text Editors language: Java link: https://senya.io source_description: > JetBrains IDE plugin to show Swagger UI as a preview, for visual feedback as you edit. v2: true v3: true foundInMaster: true id: 0c1c17e79f2ccf9a2140cd587e84a115 v3_1_link: >- https://youtrack.jetbrains.com/issue/IDEA-294782/Add-support-for-OpenAPI-31-in-OpenAPI-Specifications-plugin v3_1: true - source: https://openapi.tools/ name: Sandbox category: - Mock - Server language: - SaaS - Java link: https://getsandbox.com/ repository: https://github.com/getsandbox/sandbox source_description: >- SaaS, self-hosted, or CLI tool for turning OpenAPI (and other) descriptions into a mock server, where you can modify behaviour, simulate downtime, and any other nonsense you can think of thanks to a built-in code editor! v2: true v3: true repositoryMetadata: base64Readme: >- IyBTYW5kYm94IFJ1bnRpbWUgKHJlcGxhY2VkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzYW5kYm94L3dvcmtlcikK readmeEtag: '"20279c716c1a9c12c8c3c6f23c5a8402ce03c2af"' readmeLastModified: Sat, 23 May 2020 00:06:45 GMT repositoryId: 266231189 description: null created: '2020-05-23T00:06:26Z' updated: '2024-06-04T23:50:57Z' language: null archived: true stars: 6 watchers: 3 forks: 5 owner: getsandbox logo: https://avatars.githubusercontent.com/u/7564336?v=4 repoEtag: '"c960d57efcb5b582962d5507624fa37ab3d0de99c0eb46fb9734883df99797e0"' repoLastModified: Tue, 04 Jun 2024 23:50:57 GMT foundInMaster: true id: e3edf7a2bc59affaf60207c200c1d0fa - source: https://openapi.tools/ name: APIMatic CodeGen category: - Code Generators - SDK language: SaaS link: https://www.apimatic.io/code-generation-as-a-service source_description: >- Bring in your API description (OAI v2/v3, RAML, API Blueprint, WSDL, etc.) to generate fully functional SDKs in over 10 languages. v2: true v3: true v3_1: true id: b8e1a40af7908548779970a8aa9baba1 foundInMaster: true - source: https://openapi.tools/ name: Meta-API link: https://www.meta-api.io language: SaaS source_description: >- A SaaS platform to integrate APIs using OpenAPI documents, and manipulation of data with online code editor, and automating configuration, authentication, deployment and monitoring. v2: true v3: true v3_1: true foundInMaster: true id: af55f5fdf1f9faca3fd81d5b351523d9 - source: openapi3 tags repository: https://github.com/sergiorodenas/laravel-testdoc v3: true repositoryMetadata: base64Readme: >- IyDwn5KO8J+UkiBMYXJhdmVsIEZ1bmN0aW9uYWwgVGVzdHMgRG9jcyBHZW5lcmF0b3IKClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9zY3J1dGluaXplci1jaS5jb20vZy9Sb2RlbmFzdHlsZS9sYXJhdmVsLXRlc3Rkb2MvYmFkZ2VzL2J1aWxkLnBuZz9iPW1hc3RlcildKGh0dHBzOi8vc2NydXRpbml6ZXItY2kuY29tL2cvUm9kZW5hc3R5bGUvbGFyYXZlbC10ZXN0ZG9jL2J1aWxkLXN0YXR1cy9tYXN0ZXIpClshW0xhdGVzdCBWZXJzaW9uIG9uIFBhY2thZ2lzdF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9wYWNrYWdpc3Qvdi9yb2RlbmFzdHlsZS9sYXJhdmVsLXRlc3Rkb2Muc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL3JvZGVuYXN0eWxlL2xhcmF2ZWwtdGVzdGRvYykKWyFbUXVhbGl0eSBTY29yZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9zY3J1dGluaXplci9nL3JvZGVuYXN0eWxlL2xhcmF2ZWwtdGVzdGRvYy5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL3NjcnV0aW5pemVyLWNpLmNvbS9nL1JvZGVuYXN0eWxlL2xhcmF2ZWwtdGVzdGRvYy8/YnJhbmNoPW1hc3RlcikKWyFbQ29kZSBDb3ZlcmFnZV0oaHR0cHM6Ly9zY3J1dGluaXplci1jaS5jb20vZy9Sb2RlbmFzdHlsZS9sYXJhdmVsLXRlc3Rkb2MvYmFkZ2VzL2NvdmVyYWdlLnBuZz9iPW1hc3RlcildKGh0dHBzOi8vc2NydXRpbml6ZXItY2kuY29tL2cvUm9kZW5hc3R5bGUvbGFyYXZlbC10ZXN0ZG9jLz9icmFuY2g9bWFzdGVyKQpbIVtMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL3BhY2thZ2lzdC9sL1JvZGVuYXN0eWxlL2xhcmF2ZWwtdGVzdGRvYy5zdmcpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvUm9kZW5hc3R5bGUvbGFyYXZlbC10ZXN0ZG9jKQoKIyMgTGljZW5zZQpUaGlzIGxpYnJhcnkgaXMgcmVsZWFzZWQgdW5kZXIgW01JVF0oaHR0cDovL3d3dy50bGRybGVnYWwuY29tL2xpY2Vuc2UvbWl0LWxpY2Vuc2UpIGxpY2Vuc2Uu readmeEtag: '"a8914aed3e183ac97d50debbd8a6e39aca1f0441"' readmeLastModified: Thu, 14 Feb 2019 14:43:52 GMT repositoryId: 166667642 description: 💎🔒 Laravel Functional Tests Docs Generator created: '2019-01-20T13:59:16Z' updated: '2019-02-14T14:44:10Z' language: PHP archived: false stars: 0 watchers: 1 forks: 1 owner: sergiorodenas logo: https://avatars.githubusercontent.com/u/2689890?v=4 license: MIT repoEtag: '"b2838751c3444236cd8494498648c16c910cb4a4a0c44777e7b06b42de0e8835"' repoLastModified: Thu, 14 Feb 2019 14:44:10 GMT foundInMaster: true category: Testing id: 70c8bd1fe35383a5fb2454caa5d06703 - source: openapi3 tags repository: https://github.com/pauliorandall/go-qlueless-api v3: true repositoryMetadata: base64Readme: >- IyBHbyBRbHVlbGVzcyBBUEkKClwqXCpcKioqRGlzY29udGludWVkOiBhcmNoaXZlZCBmb3IgcmVmZXJlbmNlIG9ubHkuKipcKlwqXCoKCkEgR28gaW1wbGVtZW50YXRpb24gb2YgYSBzaW1wbGUgQVBJIHRvIHN0b3JlIGFuZCBhY2Nlc3MgS2FuYmFuIHJlbGF0ZWQgZW50aXRpZXMgYW5kIGV2ZW50cy4KCi0gVGhpcyBwcm9qZWN0IGlzIHVuZGVydGFrZW4gd2l0aCB0aGUgYXVkaWJsZSBhaWQgb2YgW0F2YW50YXNpYV0oaHR0cHM6Ly93d3cuYXZhbnRhc2lhLm5ldCkgYW5kIFtEcmVhbSBUaGVhdGVyXShodHRwOi8vZHJlYW10aGVhdGVyLm5ldCkKLSBUaGlzIFJFQURNRSB3YXMgc3RydWN0dXJlZCBvbiBhIHRlbXBsYXRlIGJ5IFtQdXJwbGVCb290aF0oaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vUHVycGxlQm9vdGgvMTA5MzExYmIwMzYxZjMyZDg3YTIpCgojIyBXaHkgaXMgdGhlIHByb2plY3QgY2FsbGVkICdRbHVlbGVzcyc/CgpJIGFwb2xvZ2lzZSwgaXQncyBhIHBvb3IgcGxheSBvbiB3b3JkcyBhdHRlbXB0aW5nIHRvIGNvbWJpbmU6CgoxLiBgQ2x1ZWxlc3NgOiBPbmUgb2YgdGhlIHByb2plY3RzIHB1cnBvc2VzIGlzIHRvIGxlYXJuIGFuZCBleHBlcmltZW50IHdpdGggdGVjaG5vbG9naWVzIHN1Y2ggYXMgR28sIFJlYWN0LCBhbmQgcHVibGljIHBpcGVsaW5lIHRvb2xzOyBJJ20gbW9kZXJhdGVseSBjbHVlbGVzcyBhYm91dCB0aGUgbGF0dGVyIHR3by4KMi4gYFF1ZXVlbGVzc2A6IEkgd2FudCB0byBleHBlcmltZW50IHdpdGggd2F5cyBvZiB2aXN1YWxpc2luZyBhbmQgZW1waGFzaXNpbmcgd29yayBpbiBwcm9ncmVzcyB0aGF0IGlzIG5vdCwgaW4gZmFjdCwgYmVpbmcgcHJvZ3Jlc3NlZCwgaS5lLiBoYWxmIGZpbmlzaGVkIHdvcmsgc2l0dGluZyBpbiBxdWV1ZXMgd2FpdGluZyBmb3Igc29tZW9uZSB0byBmaW5pc2ggdGhlbS4gT25jZSB2aXNpYmxlIGFuZCBiZWluZyBtZWFzdXJlZCBJIGNhbiBzdGFydCB0byBhbmFseXplIGl0LCBhbmQgZXhwZXJpbWVudCB3aXRoIHdheXMgb2YgcmVkdWNpbmcgYW5kIGF2b2lkaW5nIGl0IQoKIyMgR2V0dGluZyBTdGFydGVkCgojIyMgUHJlcmVxdWlzaXRlcwoKLSBHbzogW2h0dHBzOi8vZ29sYW5nLm9yZy9kbC9dCi0gR2l0OiBbaHR0cHM6Ly9naXQtc2NtLmNvbV0KLSBBbiBpbnRlcm5ldCBjb25uZWN0aW9uCi0gQSBkZWNlbnQgd2ViIGJyb3dzZXIKCiMjIyBSdW5uaW5nCgpOYXZpZ2F0ZSB0byBhIHN1aXRhYmxlIGRpcmVjdG9yeSwgb3BlbiBhIHRlcm1pbmFsLCBhbmQgY29weStwYXN0ZSB0aGUgZm9sbG93aW5nOgoKYGBgCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vUGF1bGlvUmFuZGFsbC9nby1xbHVlbGVzcy1hcGkuZ2l0CmNkIGdvLXFsdWVsZXNzLWFwaS9zY3JpcHRzCi4vYnVpbGQtdGVzdC1hcGktcnVuLmdvCmBgYAoKSW4gb3JkZXIsIHRoaXMgd2lsbDoKCjEuIENsb25lIHRoZSBzb3VyY2UgY29kZSByZXBvc2l0b3J5CjIuIE5hdmlnYXRlIHRvIHRoZSB1c2VyIGBzY3JpcHRzYCBkaXJlY3RvcnkKMy4gRXhlY3V0ZSBhIGJ1aWxkIG9mIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24KNC4gRXhlY3V0ZSBhIGJ1aWxkIG9mIHRoZSBhcHBsaWNhdGlvbgo1LiBFeGVjdXRlIHVuaXQgdGVzdHMgd2l0aGluIHRoZSBhcHBsaWNhdGlvbgo2LiBFeGVjdXRlIGJsYWNrIGJveCBBUEkgdGVzdHMgb24gdGhlIGFwcGxpY2F0aW9uCjcuIFN0YXJ0cyB0aGUgYXBwbGljYXRpb24KCiMjIyBSdW5uaW5nIHVuaXQgdGVzdHMKCk9wZW4gYSB0ZXJtaW5hbCBhdCB0aGUgcHJvamVjdCByb290OgoKYGBgCmNkIC9zY3JpcHRzCi4vYnVpbGQtdGVzdC5nbwpgYGAKCiMjIyBSdW5uaW5nIEFQSSB0ZXN0cwoKT3BlbiBhIHRlcm1pbmFsIGF0IHRoZSBwcm9qZWN0IHJvb3Q6CgpgYGAKY2QgL3NjcmlwdHMKLi9idWlsZC10ZXN0LWFwaS5nbwpgYGAKCiMjIyBEZXBsb3ltZW50IAoKPiBDb21pbmcgc29vbiEgU2VlICoqUnVubmluZyoqIGluIHRoZSBtZWFudGltZS4KCiMjIEJ1aWx0IFdpdGgKCi0gW09wZW5BUEldKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYWJvdXQvKQotIFtHb10oaHR0cHM6Ly9nb2xhbmcub3JnKQotIFt0ZXN0aWZ5XShodHRwczovL2dpdGh1Yi5jb20vc3RyZXRjaHIvdGVzdGlmeSkKLSBbbWFwc3RydWN0dXJlXShodHRwczovL2dpdGh1Yi5jb20vbWl0Y2hlbGxoL21hcHN0cnVjdHVyZSkKCiMjIENvbnRyaWJ1dGluZwoKPiBOb3QgYXBwbGljYWJsZS4KCiMjIFZlcnNpb25pbmcKClRoaXMgcHJvamVjdHMgQVBJIFtDSEFOR0VMT0ddKGh0dHBzOi8vZ2l0aHViLmNvbS9QYXVsaW9SYW5kYWxsL2dvLXFsdWVsZXNzLWFwaS9ibG9iL21hc3Rlci9hcGkvQ0hBTkdFTE9HLm1kKSBmb3JtYXQgaXMgYmFzZWQgb24gW0tlZXAgYSBDaGFuZ2Vsb2ddKGh0dHBzOi8va2VlcGFjaGFuZ2Vsb2cuY29tL2VuLzEuMC4wLyksIGFuZCB0aGUgQVBJIGFkaGVyZXMgdG8gW1NlbWFudGljIFZlcnNpb25pbmddKGh0dHBzOi8vc2VtdmVyLm9yZy9zcGVjL3YyLjAuMC5odG1sKS4KCiMjIEF1dGhvcnMKCi0gW01lXShodHRwczovL2dpdGh1Yi5jb20vUGF1bGlvUmFuZGFsbCkKCiMjIExpY2Vuc2UKClRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgW01JVCBMaWNlbnNlXShodHRwczovL2dpdGh1Yi5jb20vUGF1bGlvUmFuZGFsbC9nby1xbHVlbGVzcy1hcGkvYmxvYi9tYXN0ZXIvTElDRU5TRSkuCgojIyBBY2tub3dsZWRnbWVudHMKCi0gSW5mbHVlbmNlcwogIC0gJ1RoZSBHb2FsJyBieSBFbGl5aGFodSBNLiBHb2xkcmF0dAogIC0gQ29udGludW91cyBJbnRlZ3JhdGlvbgogIC0gQ29udGludW91cyBEZWxpdmVyeQo= readmeEtag: '"01258343092071f176e349ea063f7ac82371e8bb"' readmeLastModified: Thu, 23 Jan 2020 15:01:18 GMT repositoryId: 174692654 description: >- *Discontinued* Experimenting with ideas by building a simple Go web server exposing a TODO lists created: '2019-03-09T12:38:15Z' updated: '2023-01-28T16:01:15Z' language: Go archived: true stars: 0 watchers: 0 forks: 0 owner: PaulioRandall logo: https://avatars.githubusercontent.com/u/29413800?v=4 license: MIT repoEtag: '"d041cabdc8e8ff668b4667d24354333d75609dc53407631df034148760cfa49a"' repoLastModified: Sat, 28 Jan 2023 16:01:15 GMT foundInMaster: true category: - Code Generators - Server Implementations id: 62d045a14fd3d45cc95b98891af82e47 - source: openapi3 tags repository: https://github.com/senor-artemisio/tendershins v3: true repositoryMetadata: base64Readme: >- IyB0ZW5kZXJzaGlucwoKV3JhcHBlciBmb3Igc2hpbnMgZ2VuZXJhdG9yczoKCiogW1dpZGRlcnNoaW5zXShodHRwczovL2dpdGh1Yi5jb20vTWVybWFkZS93aWRkZXJzaGlucykKKiBbU2hpbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL3NoaW5zKQoKR2VuZXJhdGVzIEhUTUwgZG9jdW1lbnRhdGlvbiBmcm9tIE9wZW5BUEkgLyBTd2FnZ2VyIC8gQXN5bmNBUEkgLyBTZW1vYXNhIGRlZmluaXRpb24uCgojIyBUbyBpbnN0YWxsCgpDbG9uZSB0aGUgZ2l0IHJlcG9zaXRvcnksIG9yIHVzZSBucG0gaW5zdGFsbApgYGAKbnBtIGluc3RhbGwgdGVuZGVyc2hpbnMgLS1zYXZlCmBgYAoKIyMgVXNhZ2UKClRvIGdlbmVyYXRlIGRvY3VtZW50YXRpb24gY3JlYXRlIGEgc3BlY2lmaWNhdGlvbiBmaWxlIGluIHRoZSBzdXBwb3J0ZWQgZm9ybWF0IGFuZCBydW4gdGVuZGVyc2hpbnM6CgpgYGAKbnB4IHRlbmRlcnNoaW5zIDxzcGVjX2ZpbGU+IDx0YXJnZV9wYXRoPiBbbG9nb19wYXRoXQpgYGAKCkV4YW1wbGVzIG9mIHNwZWNpZmljYXRpb24gZmlsZXMgc2VlIGluIFtPcGVuQVBJIHJlcG9zaXRvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL3RyZWUvbWFzdGVyL2V4YW1wbGVzL3YzLjApLiAKCg== readmeEtag: '"58461ac1021e0eabc2af0083eb1619128be5ea89"' readmeLastModified: Thu, 25 Jul 2019 08:52:04 GMT repositoryId: 188308754 description: Wrapper for shins documentation generators created: '2019-05-23T21:24:25Z' updated: '2019-07-25T08:52:07Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: senor-artemisio logo: https://avatars.githubusercontent.com/u/1178789?v=4 license: MIT repoEtag: '"c8b7d1be07b9ade65bfbf5d267752948398105e17ea8838cf279aff24bfb5b5e"' repoLastModified: Thu, 25 Jul 2019 08:52:07 GMT foundInMaster: true category: - Documentation - Parsers id: 80bfcd36c0804b44af58f551da173a30 - source: openapi3 tags repository: https://github.com/sloopsight-com/sandbox v3: true repositoryMetadata: base64Readme: >- IyBUaGUgU2FuZGJveAojIyBBUEkgc2FuZGJveCB0byBzcGVlZCB1cCBpbnRlZ3JhdGlvbnMuCgpBUEkgU2FuZG94IHwgRW5hYmxlIHlvdSBjYW4gdG8gY3JlYXRlIEFQSSBzdHViIG9ubGluZSB3aXRoIG9wZW5hcGkgMy4wIHNwZWMuClN1cHBvcnRzIGxkYXAgYXV0aGVudGljYXRpb24uCkJ1aXQgb24gCgoKIyMgTW9kdWxlcwoKLSBCYWNrZW5kCi0gVUkKey5sbmtzLWxpc3R9CgojIyBUZWNobm9sb2d5IFN0YWNrCgotIFtWdWVKcyAqRnJvbnRlbmQgZnJhbWV3b3JrKl0oIykKLSBbU3ByaW5nYm9vdCAqRm9yIGJ1c2luZXNzIEFwaSpdKCMpCi0gW0NhbWVsIFNlcnZsZXQgKkZvciBzYW5kYm94IGFwaSByb3V0aW5nKl0oIykKLSBbTmFzaGhvcm4gKkZvciBBUEkgQnVzaW5lc3MgTG9naWMgRXhlY3V0aW9uKl0oIykKLSBbSFNRTC9NeXNxbCAqRm9yIGZvciBzdG9yaW5nIGRhdGEqXSgjKQotIFtTd2F5ZGIgKlRUTCBiYXNlZCBrZXktdmFsdWUgc3RvcmUqXShodHRwOi8vc3dheWRiLmlvLz9sYW5ndWFnZT1zY2FsYS8pCi0gW1N3YWdnZXIgRG9jdW1lbnRhdGlvbiAqVG8gZ2VuZXJhdGUgbW9ja2VkIGFwaSBkb2N1bWVudGF0aW9uKl0oaHR0cHM6Ly9naXRodWIuY29tL3NvbmdyZ2cvc3dhZ2dlcmRlbW8pCg== readmeEtag: '"914f1619dccb7147fd7956f11c92e55ee70976dd"' readmeLastModified: Wed, 07 Jul 2021 10:50:27 GMT repositoryId: 281899357 description: >- API Sandox | Enable you can to create API stub online with openapi 3.0 spec. created: '2020-07-23T08:46:24Z' updated: '2021-08-11T07:17:06Z' language: Vue archived: false stars: 0 watchers: 0 forks: 0 owner: sloopsight-com logo: https://avatars.githubusercontent.com/u/68685917?v=4 repoEtag: '"61d96fa18980975ae33674f186138b21880a52432a0a95addc43c430c396fe1c"' repoLastModified: Wed, 11 Aug 2021 07:17:06 GMT foundInMaster: true category: - Server - Server Implementations id: 57b7f4b92935a93a909854865e1cb20b - source: openapi3 tags repository: https://github.com/lucasavila00/beff v3: true id: c1cab811e9accd4842010fbcdbfc7bcc repositoryMetadata: base64Readme: >- IyDwn6qEIEJlZmYKCkJlZmYgaXMgYSBoaWdoLXBlcmZvcm1hbmNlIHZhbGlkYXRvciBnZW5lcmF0b3IgdGhhdCBjcmVhdGVzIGVmZmljaWVudCBydW50aW1lIHZhbGlkYXRvcnMgZnJvbSBUeXBlU2NyaXB0IHR5cGVzIHVzaW5nIGEgYmxhemluZy1mYXN0IGNvbXBpbGVyLgoKIyMgV2h5IENob29zZSBCZWZmPwoKLSAqKlR5cGVTY3JpcHQgRmlyc3QqKjogVW5saWtlIHpvZCwgaW8tdHMsIGFuZCBzaW1pbGFyIGxpYnJhcmllcywgQmVmZiBkb2Vzbid0IGFkZCBvdmVyaGVhZCB0byB0aGUgVHlwZVNjcmlwdCBjb21waWxlci4gRXhwZXJpZW5jZSBmYXN0ZXIgZWRpdG9yIHBlcmZvcm1hbmNlIGFuZCBxdWlja2VyIGNvbXBpbGUgdGltZXMuCi0gKipCbGF6aW5nbHkgRmFzdCoqOiBXcml0dGVuIGluIFJ1c3QgYW5kIGNvbXBpbGVkIHRvIFdlYkFzc2VtYmx5LCBCZWZmIGlzIGNyb3NzLXBsYXRmb3JtIGFuZCBsaWdodG5pbmctcXVpY2suIEl0IGNvbXBpbGVzIGEgaGVsbG8td29ybGQgcHJvamVjdCBpbiA1bXMgYW5kIGhhbmRsZXMgbGFyZ2UgcHJvamVjdHMgd2l0aCAyMDArIHR5cGVzIGluIGp1c3QgMjAwbXMuCi0gKipTZWFtbGVzc2x5IENvbXBhdGlibGUqKjogTGV2ZXJhZ2VzIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGZvciBwYXRoIHJlc29sdXRpb24uIElmIHlvdXIgZWRpdG9yIGNhbiByZXNvbHZlIHRoZSB0eXBlcywgQmVmZiBjYW4gdG9vLgotICoqT3B0aW1pemVkIE91dHB1dCoqOiBHZW5lcmF0ZXMgaGlnaGx5IGVmZmljaWVudCB2YWxpZGF0b3IgY29kZSB3aXRoIGV4dGVuc2l2ZSBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9ucy4KLSAqKkRldmVsb3BlciBGcmllbmRseSoqOiBQcm92aWRlcyBjbGVhciwgYWN0aW9uYWJsZSBlcnJvciBtZXNzYWdlcyBhdCBib3RoIGNvbXBpbGUgdGltZSBhbmQgcnVudGltZS4KLSAqKkZlYXR1cmUgQ29tcGxldGUqKjogU3VwcG9ydHMgYWR2YW5jZWQgVHlwZVNjcmlwdCBmZWF0dXJlcyBpbmNsdWRpbmcgcmVjdXJzaXZlIHR5cGVzLCBnZW5lcmljcywgbWFwcGVkIHR5cGVzLCBjb25kaXRpb25hbCB0eXBlcywgdXRpbGl0eSB0eXBlcyAoYE9taXRgLCBgRXhjbHVkZWAsIGBQYXJ0aWFsYCwgYFJlcXVpcmVkYCwgYFJlY29yZGApLCBhbmQgbW9yZS4gSWYgYSB0eXBlIGNhbiBiZSB2YWxpZGF0ZWQgYXQgcnVudGltZSwgQmVmZiB1bmRlcnN0YW5kcyBpdC4KCiMjIEdldHRpbmcgU3RhcnRlZAoKR2V0IHVwIGFuZCBydW5uaW5nIHdpdGggQmVmZiBpbiBqdXN0IGEgZmV3IHNpbXBsZSBzdGVwczoKCiMjIyAxLiBJbnN0YWxsCgpJbnN0YWxsIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBmcm9tIG5wbToKCmBgYHNoZWxsCm5wbSBpIEBiZWZmL2NsaSBAYmVmZi9jbGllbnQKYGBgCgojIyMgMi4gQ29uZmlndXJlCgpDcmVhdGUgYSBKU09OIGZpbGUgdG8gY29uZmlndXJlIEJlZmYuIFRoZSBmaWxlIGNhbiBoYXZlIGFueSBuYW1lLCBidXQgaXQncyBzdGFuZGFyZCBwcmFjdGljZSB0byBuYW1lIGl0IGBiZWZmLmpzb25gLgoKYGBganNvbgp7CiAgInBhcnNlciI6ICIuL3NyYy9wYXJzZXIudHMiLAogICJvdXRwdXREaXIiOiAiLi9zcmMvZ2VuZXJhdGVkIgp9CmBgYAoKIyMjIDMuIENyZWF0ZSB0aGUgcGFyc2VyIGZpbGUKCkNyZWF0ZSBhIFR5cGVTY3JpcHQgZmlsZSB0aGF0IGV4cG9ydHMgdGhlIHR5cGVzIHlvdSB3YW50IEJlZmYgdG8gZ2VuZXJhdGUgdmFsaWRhdG9ycyBmb3IuCgpCeSBjb252ZW50aW9uLCB0aGlzIGZpbGUgaXMgdHlwaWNhbGx5IG5hbWVkIGBwYXJzZXIudHNgOgoKYGBgdHMKaW1wb3J0IHBhcnNlIGZyb20gIi4vZ2VuZXJhdGVkL3BhcnNlciI7Cgp0eXBlIFVzZXIgPSB7CiAgbmFtZTogc3RyaW5nOwogIGFnZTogbnVtYmVyOwp9OwoKZXhwb3J0IGNvbnN0IFBhcnNlcnMgPSBwYXJzZS5idWlsZFBhcnNlcnM8ewogIFVzZXI6IFVzZXI7Cn0+KCk7CmBgYAoKIyMjIDQuIEdlbmVyYXRlIHRoZSB2YWxpZGF0b3JzCgpSdW4gdGhlIEJlZmYgQ0xJIHRvIGdlbmVyYXRlIHlvdXIgdmFsaWRhdG9yIGNvZGU6CgpgYGBzaGVsbApucHggYmVmZiAtcCBiZWZmLmpzb24KYGBgCgojIyMgNS4gVXNlIHRoZSB2YWxpZGF0b3JzCgpOb3cgeW91IGNhbiB1c2UgdGhlIGdlbmVyYXRlZCB2YWxpZGF0b3JzIGluIHlvdXIgYXBwbGljYXRpb246CgpgYGB0cwppbXBvcnQgeyBQYXJzZXJzIH0gZnJvbSAiLi9wYXJzZXIudHMiOwoKY29uc3QgdXNlcjEgPSBQYXJzZXJzLlVzZXIucGFyc2UoewogIG5hbWU6ICJKb2huIERvZSIsCiAgYWdlOiA0MiwKfSk7Cgpjb25zdCBtYXliZVVzZXIgPSBQYXJzZXJzLlVzZXIuc2FmZVBhcnNlKG51bGwpOwoKY29uc3QgaXNWYWxpZDogYm9vbGVhbiA9IFBhcnNlcnMuVXNlci52YWxpZGF0ZSh7CiAgbmFtZTogIkpvaG4gRG9lIiwKICBhZ2U6IDQyLAp9KTsKCmNvbnN0IGpzb25TY2hlbWEgPSBQYXJzZXJzLlVzZXIuc2NoZW1hKCk7CmBgYAoKIyMgQ0xJIE9wdGlvbnMKClRoZSBgYmVmZmAgYmluYXJ5IGNhbiBhbHNvIHJ1biBpbiB3YXRjaCBtb2RlLgoKYGBgc2hlbGwKJCBucHggYmVmZiAtaApVc2FnZTogYmVmZiBbb3B0aW9uc10KCkdlbmVyYXRlIHZhbGlkYXRvcnMgZnJvbSBUeXBlU2NyaXB0IHR5cGVzCgpPcHRpb25zOgogIC1wLCAtLXByb2plY3QgPHN0cmluZz4gIFBhdGggdG8gdGhlIHByb2plY3QgZmlsZQogIC12LCAtLXZlcmJvc2UgICAgICAgICAgIFByaW50IHZlcmJvc2Ugb3V0cHV0CiAgLXcsIC0td2F0Y2ggICAgICAgICAgICAgV2F0Y2ggZm9yIGZpbGUgY2hhbmdlcwogIC1oLCAtLWhlbHAgICAgICAgICAgICAgIGRpc3BsYXkgaGVscCBmb3IgY29tbWFuZApgYGAKCiMjIEFkdmFuY2VkIEZlYXR1cmVzCgojIyMgQ3VzdG9tIFN0cmluZyBGb3JtYXRzCgpCZWZmIGFsbG93cyB5b3UgdG8gZGVmaW5lIGN1c3RvbSBzdHJpbmcgdmFsaWRhdGlvbiBmb3JtYXRzLiBGaXJzdCwgY29uZmlndXJlIHlvdXIgYGJlZmYuanNvbmA6CgpgYGBqc29uCnsKICAicGFyc2VyIjogIi4vc3JjL3BhcnNlci50cyIsCiAgIm91dHB1dERpciI6ICIuL3NyYy9nZW5lcmF0ZWQiLAogICJzdHJpbmdGb3JtYXRzIjogWwogICAgewogICAgICAibmFtZSI6ICJWYWxpZEN1cnJlbmN5IgogICAgfQogIF0KfQpgYGAKClRoZW4gdXNlIHRoZSBgU3RyaW5nRm9ybWF0YCBoZWxwZXIgdG8gY3JlYXRlIGEgYnJhbmRlZCBUeXBlU2NyaXB0IHR5cGUgYW5kIGRlZmluZSB0aGUgcnVudGltZSB2YWxpZGF0b3I6CgpgYGB0cwppbXBvcnQgcGFyc2UgZnJvbSAiLi9nZW5lcmF0ZWQvcGFyc2VyIjsKaW1wb3J0IHsgU3RyaW5nRm9ybWF0IH0gZnJvbSAiQGJlZmYvY2xpZW50IjsKZXhwb3J0IHR5cGUgVmFsaWRDdXJyZW5jeSA9IFN0cmluZ0Zvcm1hdDwiVmFsaWRDdXJyZW5jeSI+OwoKZXhwb3J0IGNvbnN0IFBhcnNlcnMgPSBwYXJzZS5idWlsZFBhcnNlcnM8ewogIFZhbGlkQ3VycmVuY3k6IFZhbGlkQ3VycmVuY3k7Cn0+KHsKICBzdHJpbmdGb3JtYXRzOiB7CiAgICBWYWxpZEN1cnJlbmN5OiAoaW5wdXQ6IHN0cmluZykgPT4gewogICAgICBpZiAoVkFMSURfQ1VSUkVOQ0lFUy5pbmNsdWRlKGlucHV0KSkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0sCiAgfSwKfSk7CmBgYAoKIyMjIEN1c3RvbSBOdW1iZXIgRm9ybWF0cwoKU2ltaWxhcmx5LCB5b3UgY2FuIGRlZmluZSBjdXN0b20gbnVtYmVyIHZhbGlkYXRpb24gZm9ybWF0cy4gQ29uZmlndXJlIHlvdXIgYGJlZmYuanNvbmA6CgpgYGBqc29uCnsKICAicGFyc2VyIjogIi4vc3JjL3BhcnNlci50cyIsCiAgIm91dHB1dERpciI6ICIuL3NyYy9nZW5lcmF0ZWQiLAogICJudW1iZXJGb3JtYXRzIjogWwogICAgewogICAgICAibmFtZSI6ICJWYWxpZEN1cnJlbmN5IgogICAgfQogIF0KfQpgYGAKClRoZW4gdXNlIHRoZSBgTnVtYmVyRm9ybWF0YCBoZWxwZXIgdG8gY3JlYXRlIGEgYnJhbmRlZCBUeXBlU2NyaXB0IHR5cGUgYW5kIGRlZmluZSB0aGUgcnVudGltZSB2YWxpZGF0b3I6CgpgYGB0cwppbXBvcnQgcGFyc2UgZnJvbSAiLi9nZW5lcmF0ZWQvcGFyc2VyIjsKaW1wb3J0IHsgTnVtYmVyRm9ybWF0IH0gZnJvbSAiQGJlZmYvY2xpZW50IjsKZXhwb3J0IHR5cGUgTm9uTmVnYXRpdmVOdW1iZXIgPSBOdW1iZXJGb3JtYXQ8Ik5vbk5lZ2F0aXZlTnVtYmVyIj47CgpleHBvcnQgY29uc3QgUGFyc2VycyA9IHBhcnNlLmJ1aWxkUGFyc2Vyczx7CiAgTm9uTmVnYXRpdmVOdW1iZXI6IE5vbk5lZ2F0aXZlTnVtYmVyOwp9Pih7CiAgbnVtYmVyRm9ybWF0czogewogICAgTm9uTmVnYXRpdmVOdW1iZXI6IChpbnB1dDogbnVtYmVyKSA9PiB7CiAgICAgIHJldHVybiBpbnB1dCA+PSAwOwogICAgfSwKICB9LAp9KTsKYGBgCgojIyMgQWQtaG9jIFZhbGlkYXRvciBDcmVhdGlvbgoKQmVmZiBwcm92aWRlcyBhIHJ1bnRpbWUgdHlwZSBjcmVhdGlvbiBBUEkgc2ltaWxhciB0byBgem9kYCBhbmQgYGlvLXRzYCBmb3Igc2ltcGxlIHVzZSBjYXNlcy4KCioqTm90ZToqKiBUaGlzIEFQSSBpcyBpbnRlbnRpb25hbGx5IGxpbWl0ZWQgYW5kIHN1cHBvcnRzIG9ubHkgYmFzaWMgdHlwZXMgdG8gbWFpbnRhaW4gZmFzdCBlZGl0b3IgcGVyZm9ybWFuY2UuIEEgbW9yZSBjb21wcmVoZW5zaXZlIHJ1bnRpbWUgQVBJIHdvdWxkIGVzc2VudGlhbGx5IG1ha2UgQmVmZiBqdXN0IGFub3RoZXIgcmUtaW1wbGVtZW50YXRpb24gb2Ygem9kLCBkZWZlYXRpbmcgaXRzIGNvcmUgcHVycG9zZS4gRm9yIGNvbXBsZXggdHlwZXMsIHVzZSBCZWZmJ3MgcHJpbWFyeSBmZWF0dXJlIG9mIGNvbXBpbGluZyBUeXBlU2NyaXB0IHR5cGVzLgoKVmFsaWRhdG9ycyBjcmVhdGVkIHdpdGggdGhlIGFkLWhvYyBBUEkgaGF2ZSB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgY29tcGlsZWQgdmFsaWRhdG9yczoKCmBgYHRzCmltcG9ydCB7IGIgfSBmcm9tICJAYmVmZi9jbGllbnQiOwoKY29uc3QgQWRIb2NJdGVtID0gYi5PYmplY3QoewogIHN0cjogYi5TdHJpbmcoKSwKICBudW06IGIuTnVtYmVyKCksCiAgYm9vbDogYi5Cb29sZWFuKCksCiAgdW5kZWZpbmVkOiBiLlVuZGVmaW5lZCgpLAogIG51bGw6IGIuTnVsbCgpLAogIGFueTogYi5BbnkoKSwKICB1bmtub3duOiBiLlVua25vd24oKSwKfSk7Cgpjb25zdCBBZEhvY0xpc3QgPSBiLkFycmF5KEFkSG9jSXRlbSk7Cgpjb25zdCBscyA9IEFkSG9jTGlzdC5wYXJzZShbXSk7CmBgYAoKIyMjIFpvZCBDb21wYXRpYmlsaXR5CgpCZWZmIHByb3ZpZGVzIHNlYW1sZXNzIGludGVyb3BlcmFiaWxpdHkgd2l0aCBab2QuIENhbGwgYC56b2QoKWAgb24gYW55IEJlZmYgcGFyc2VyIHRvIGdldCBhIGNvbXBhdGlibGUgWm9kIHNjaGVtYS4KClRoaXMgbWFrZXMgaXQgZWFzeSB0byBncmFkdWFsbHkgbWlncmF0ZSBleGlzdGluZyBab2QtYmFzZWQgY29kZWJhc2VzOgoKYGBgdHMKaW1wb3J0IHsgUGFyc2VycyB9IGZyb20gIi4vcGFyc2VyLnRzIjsKaW1wb3J0IHsgeiB9IGZyb20gInpvZCI7Cgpjb25zdCB1c2VycyA9IHouYXJyYXkoUGFyc2Vycy5Vc2VyLnpvZCgpKS5wYXJzZSh7CiAgbmFtZTogIkpvaG4gRG9lIiwKICBhZ2U6IDQyLAp9KTsKYGBgCgojIyBDb250cmlidXRpbmcKClBsZWFzZSByZWFkIFtDT05UUklCVVRJTkcubWRdKC9DT05UUklCVVRJTkcubWQpCg== readmeEtag: '"8db14553f03f82b6e12974ea74d2d7dc017b1340"' readmeLastModified: Fri, 03 Oct 2025 00:29:36 GMT repositoryId: 683896092 description: >- Efficient validators from Typescript types generated by a blazing fast compiler created: '2023-08-28T02:32:08Z' updated: '2026-01-09T15:37:20Z' language: Rust archived: false stars: 6 watchers: 1 forks: 1 owner: lucasavila00 logo: https://avatars.githubusercontent.com/u/12750442?v=4 repoEtag: '"28ded80821b5e18986400e1eca0fc87dca9255776f4a91db5b5bb7e3a80fe209"' repoLastModified: Fri, 09 Jan 2026 15:37:20 GMT category: - Server Implementations - Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/modyuan/openapitomarkdown v3: true repositoryMetadata: base64Readme: >- IyBvcGVuYXBpVG9NYXJrZG93bgpjb252ZXJ0IG9wZW5BcGkzIGpzb24gZmlsZSB0byBtYXJrZG93biBmaWxlCgrmiopPcGVuQVBJM+eahGpzb27moLzlvI/vvIwg6L2s5o2i5Li6bWFya2Rvd27moLzlvI/vvIzmlrnkvr/pnZnmgIHlgqjlrZjjgIIKCuaehOaIkOaWueazleWPguiAg+S6hltzd2FnZ2VyLWJvb3RzdHJhcC11aV0oaHR0cHM6Ly9naXRodWIuY29tL3hpYW95bWluL3N3YWdnZXItYm9vdHN0cmFwLXVpKQoK readmeEtag: '"8255735b14cf295527465f2296b79918227f7116"' readmeLastModified: Sat, 11 Jul 2020 23:53:38 GMT repositoryId: 278960180 description: convert openApi3 json file to markdown file created: '2020-07-11T23:50:06Z' updated: '2020-07-11T23:55:19Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: modyuan logo: https://avatars.githubusercontent.com/u/18202493?v=4 license: MIT repoEtag: '"5ab932b016f6fe8a23c1202576a6a6d3d64593743e6eab34c5c83b8b98c79188"' repoLastModified: Sat, 11 Jul 2020 23:55:19 GMT foundInMaster: true category: - Documentation - Parsers id: 0c2f2d8d4ff22b3acb1bc1233560000a - source: openapi3 tags repository: https://github.com/hw0k-playground/openapi-codegen-example v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIENvZGVnZW4gZm9yIFR5cGVTY3JpcHQKCiMjIyBTZXR1cAoKMS4gQ2xvbmUgdGhpcyByZXBvCjIuIFJ1biBgeWFybmAKMy4gUnVuIGB5YXJuIGdlbmVyYXRlOm9wZW5hcGktdHlwZXNgCjQuIENoZWNrIGRpcmVjdG9yeSBgX19nZW5lcmF0ZWRfXy9gCg== readmeEtag: '"e49f9264ee329f9b636a9a0468d53d3932deb713"' readmeLastModified: Sun, 14 Mar 2021 17:35:03 GMT repositoryId: 347705066 description: OpenAPI Codegen for TypeScript created: '2021-03-14T17:28:09Z' updated: '2021-03-14T17:35:05Z' language: JavaScript archived: false stars: 0 watchers: 0 forks: 0 owner: hw0k-playground logo: https://avatars.githubusercontent.com/u/67791654?v=4 repoEtag: '"53e4912cadd3a17705bd0507e5a8b6797b2055322729861edb0845dd559ac962"' repoLastModified: Sun, 14 Mar 2021 17:35:05 GMT foundInMaster: true category: - Code Generators - Server Implementations id: b740e2ac3a4f0991e59f7e7e3387ff6f oldLocations: - https://github.com/hw0k-play/openapi-codegen-example - source: openapi3 tags repository: https://github.com/tumanina/reportingsystem v3: true repositoryMetadata: repositoryId: 311774106 description: null created: '2020-11-10T20:15:25Z' updated: '2021-03-07T13:22:56Z' language: C# archived: false stars: 0 watchers: 1 forks: 0 owner: tumanina logo: https://avatars.githubusercontent.com/u/17797666?v=4 repoEtag: '"e35abd9e84efa85c837697d3f8a66091fd911a7f136a2c920636ed90eaeced8f"' repoLastModified: Sun, 07 Mar 2021 13:22:56 GMT foundInMaster: true id: 70ffeb9c48f7540976ec44d120898b27 - source: openapi3 tags repository: https://github.com/mikuhuyo/sms-service v3: true id: 9471c9b57775e278d57d1cf4ac284039 repositoryMetadata: base64Readme: >- IyDnn63kv6HmnI3liqHkvb/nlKjmiYvlhowKClshW0dpdEh1YiBsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL21pa3VodXlvL3Ntcy1zZXJ2aWNlKV0oaHR0cHM6Ly9naXRodWIuY29tL21pa3VodXlvL3Ntcy1zZXJ2aWNlL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpClshW0dpdEh1YiBpc3N1ZXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy9taWt1aHV5by9zbXMtc2VydmljZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWt1aHV5by9zbXMtc2VydmljZS9pc3N1ZXMpClshW0dpdEh1YiBzdGFyc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvc3RhcnMvbWlrdWh1eW8vc21zLXNlcnZpY2UpXShodHRwczovL2dpdGh1Yi5jb20vbWlrdWh1eW8vc21zLXNlcnZpY2Uvc3RhcmdhemVycykKWyFbR2l0SHViIGZvcmtzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9mb3Jrcy9taWt1aHV5by9zbXMtc2VydmljZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWt1aHV5by9zbXMtc2VydmljZS9uZXR3b3JrKQohW0phdmEgdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9KZGstMTEteWVsbG93KQohW1NwcmluZ0Jvb3QgdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9TcHJpbmdCb290LTIuMy4xMi5SRUxFQVNFLWJyaWdodGdyZWVuKQoKIyMg5L+u5pS5cmVkaXPnm7jlhbPphY3nva4KCuWwhuS4i+mdomByZWRpc2Dnm7jlhbPphY3nva7kv67mlLnkuLrkvaDnmoRgcmVkaXNg55u45YWz6YWN572uOgoKYGBgeWFtbApzcHJpbmc6CiAgY2FjaGU6CiAgICB0eXBlOiBSRURJUwogIHJlZGlzOgogICAgaG9zdDogMTI3LjAuMC4xCiAgICBwYXNzd29yZDogeXVlbGltaW52Y0BvdXRsb29rLmNvbQogICAgcG9ydDogNjM3OQogICAgZGF0YWJhc2U6IDAKICAgIHRpbWVvdXQ6IDMwMDBtcwogICAgbGV0dHVjZToKICAgICAgcG9vbDoKICAgICAgICBtYXgtaWRsZTogOAogICAgICAgIG1pbi1pZGxlOiAxCiAgICAgICAgbWF4LWFjdGl2ZTogOAogICAgICAgIG1heC13YWl0OiAzMDAwMG1zCiAgICAgIHNodXRkb3duLXRpbWVvdXQ6IDEwMDAwbXMKYGBgCgojIyDkv67mlLnohb7orq/kupHnm7jlhbPphY3nva4KCuWwhmBhcHBsaWNhdGlvbi55bWxg5paH5Lu25Lit6IW+6K6v5LqR6YWN572u6YOo5YiG5L+u5pS55Li65L2g55qE6YWN572uOgoKYGBgeWFtbApzbXM6CiAgZGVmYXVsdEV4cGlyZTogMzAwCiAgcWNsb3VkOgogICAgIyB5b3VyIGFwcCBpZAogICAgYXBwSWQ6IDAwMDAwMAogICAgYXBwS2V5OiAneW91cl9hcHBfa2V5JwogICAgdGVtcGxhdGVJZDogJ3lvdXJfc21zX3RlbXBsYXRlJwogICAgc2lnbjogJ3lvdXJfdGVuY2VudF9jbG91ZF9zbXNfc2lnbicKICAgICMgdGVuY2VudCBzbXMgYXBpCiAgICB1cmw6ICdodHRwczovL3l1bi50aW0ucXEuY29tL3Y1L3Rsc3Ntc3N2ci9zZW5kc21zJwpgYGAKCiMjIOaOpeWPo+ivt+axggoKPiBodHRwOi8vMTI3LjAuMC4xOjUyMDAwL3N3YWdnZXItdWkuaHRtbAoKPiDojrflj5bpqozor4HnoIEgaHR0cDovLzEyNy4wLjAuMTo1MjAwMC9zbXMvdGVuY2VudC9nZW5lcmF0L3tlZmZlY3RpdmVUaW1lfQoK5Y+C5pWwYGVmZmVjdGl2ZVRpbWVgOiDov4fmnJ/ml7bpl7QsIOWNleS9jeenkiwg5b+F6YCJ6aG5Cgror7fmsYLkvZM6CgpgYGBqc29uCnsKICAibW9iaWxlIjogIjE1NzExMTExMTExIgp9CmBgYAoK6L+U5Zue5YC8OgoKYGBganNvbgp7CiAgImNvZGUiOiAwLAogICJtc2ciOiAic3VjY2VzcyIsCiAgInJlc3VsdCI6IHsKICAgICJrZXkiOiAidGVuY2VudDpzbXM6PyIKICB9Cn0KYGBgCgo+IOmqjOivgeeggeagoemqjCBodHRwOi8vMTI3LjAuMC4xOjUyMDAwL3Ntcy90ZW5jZW50L3ZlcmlmaWNhdGlvbi97a2V5fS97Y29kZX0KCuWPguaVsGBrZXlgOiDnlJ/miJDnmoTnrb7lkI0KCuWPguaVsGBjb2RlYDog55Sf5oiQ55qE6aqM6K+B56CBCgrov5Tlm57lgLw6CgpgYGBqc29uCnsKICAiY29kZSI6IDAsCiAgIm1zZyI6ICJzdWNjZXNzIiwKICAicmVzdWx0IjogdHJ1ZSAvLyB0cnVl6KGo56S65oiQ5YqfLCBmYWxzZeihqOekuuWksei0pQp9CmBgYAoKIyMg54m55Yir6bij6LCiCgojIyMg5YWz5rOo6ICFCgpbIVtTdGFyZ2F6ZXJzIHJlcG8gcm9zdGVyIGZvciBAbWlrdWh1eW8vc21zLXNlcnZpY2VdKGh0dHBzOi8vcmVwb3Jvc3Rlci5jb20vc3RhcnMvbWlrdWh1eW8vc21zLXNlcnZpY2UpXShodHRwczovL2dpdGh1Yi5jb20vbWlrdWh1eW8vc21zLXNlcnZpY2Uvc3RhcmdhemVycykKCiMjIyDmlLbol4/ogIUKClshW0ZvcmtlcnMgcmVwbyByb3N0ZXIgZm9yIEBtaWt1aHV5by9zbXMtc2VydmljZV0oaHR0cHM6Ly9yZXBvcm9zdGVyLmNvbS9mb3Jrcy9taWt1aHV5by9zbXMtc2VydmljZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWt1aHV5by9zbXMtc2VydmljZS9uZXR3b3JrL21lbWJlcnMpCgojIyDor7fov5nkuKpi5Zad5p2v5rC0PwoKIVtBbGlwYXldKC4vaW1hZ2UvYWxpcGF5cy5wbmcpCgotLS0KCiFbV2VDaGF0UGF5XSguL2ltYWdlL3dlY2hhdHMucG5nKQ== readmeEtag: '"18c610dbecd677759ff12d4083ffb15351cd0d98"' readmeLastModified: Mon, 27 Feb 2023 12:47:19 GMT repositoryId: 400815235 description: 单纯的短信服务, 目前仅仅集成了腾讯云短信(人在电信外包, 差点没了) created: '2021-08-28T14:39:39Z' updated: '2023-02-27T13:14:52Z' language: Java archived: false stars: 0 watchers: 1 forks: 1 owner: mikuhuyo logo: https://avatars.githubusercontent.com/u/42843191?v=4 repoEtag: '"05b07746fe3134ad60e45aade3d47390f2f264100e29a1d75909d0145a7b434e"' repoLastModified: Mon, 27 Feb 2023 13:14:52 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/aquanest/atmos-openapi-src v3: true repositoryMetadata: base64Readme: >- IyBhdG1vcy1vcGVuYXBpLXNyYwoKYXRtb3Mtb3BlbmFwaS1zcmMgaXMgYSBzb3VyY2UgZ2VuZXJhdGVzIGxpYnJhcmllcyBmb3IgW0FUTU9TIFBsYXRmb3JtIEFQSV0oaHR0cHM6Ly93d3cuYXRtb3MuYXBwLykuCgpUaGlzIGNvZGUgZ2VuZXJhdGVzIGZvbGxvd2luZyBtb2R1bGU7CgotIFthdG1vcy1nb10oaHR0cHM6Ly9naXRodWIuY29tL3VtYXRhcmU1L2F0bW9zLWdvKQoKICBHbyBDbGllbnQgdG8gdXNlIEFUTU9TIFBsYXRmb3JtIEFQSS4KCiMjIFByZXJlcXVpc2l0ZQoKLSBGUUROIG9mIEFUTU9TIFBsYXRmb3JtIEFQSQotIEFjY2Vzcy10b2tlbiB0byB1c2UgQVRNT1MgUGxhdGZvcm0gQVBJCgpCb3RoIHBhcmFtZXRlcnMgYXJlIGhpZGRlbiB5ZXQuIExldCdzIHdhaXQgZm9yIG9mZmljaWFsIHJlbGVhc2UuCgojIyBEZXZlbG9wbWVudAoKIyMjIFNldHVwCgotIEluc3RhbGwgYHN3YWdnZXItY2xpYCBmb3IgYnVuZGxlIGRpdmlkZWQgT3BlbkFQSSBTcGVjaWZpY2F0aW9ucy4KCiAgYGBgc2gKICBucG0gaW5zdGFsbAogIGBgYAoKLSBJbnN0YWxsIGBvYXBpLWNvZGVnZW5gIGZvciBidWlsZCB0aGUgY2xpZW50LgoKICBgYGBzaAogIGdvIGluc3RhbGwgZ2l0aHViLmNvbS9kZWVwbWFwL29hcGktY29kZWdlbi9jbWQvb2FwaS1jb2RlZ2VuQGxhdGVzdAogIGBgYAoKIyMjIEJ1aWxkCgpgYGBzaAptYWtlIGJ1aWxkCmBgYAoKIyMjIFJlbGVhc2UKCmBgYHNoCmdpdCBidW1wCm1ha2UgcmVsZWFzZQpgYGAK readmeEtag: '"dc535c242a98d9868eee28c456b5d3fefbc7f465"' readmeLastModified: Wed, 26 Jan 2022 12:55:55 GMT repositoryId: 446084686 description: Source of libraries to use ATMOS Platform API created: '2022-01-09T12:41:06Z' updated: '2025-08-03T07:03:33Z' language: Shell archived: false stars: 0 watchers: 1 forks: 0 owner: aquanest logo: https://avatars.githubusercontent.com/u/88537514?v=4 repoEtag: '"805d63566a075ac2ffffa747b00b15068018639e4c0af5dfaac5281ed579f7f6"' repoLastModified: Sun, 03 Aug 2025 07:03:33 GMT foundInMaster: true category: Code Generators id: 74cbb358315c83236a78360f50033aa7 oldLocations: - https://github.com/umatare5/atmos-openapi-src - source: openapi3 tags repository: https://github.com/nexys-system/openapi-to-idl v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIHRvIGludGVyZmFjZSBkZWZpbml0aW9uIGxhbmd1YWdlIChJREwpCgpbIVtUZXN0XShodHRwczovL2dpdGh1Yi5jb20vbmV4eXMtc3lzdGVtL29wZW5hcGktdG8taWRsL2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3QueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9uZXh5cy1zeXN0ZW0vb3BlbmFwaS10by1pZGwvYWN0aW9ucy93b3JrZmxvd3MvdGVzdC55bWwpClshW0RlcGxveV0oaHR0cHM6Ly9naXRodWIuY29tL25leHlzLXN5c3RlbS9vcGVuYXBpLXRvLWlkbC9hY3Rpb25zL3dvcmtmbG93cy9kZXBsb3kueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9uZXh5cy1zeXN0ZW0vb3BlbmFwaS10by1pZGwvYWN0aW9ucy93b3JrZmxvd3MvZGVwbG95LnltbCkKCkdlbmVyYXRlIGEgdHlwZXNjcmlwdCBmaWxlLiBkaXJlY3RseSBmcm9tIHRoZSBPcGVuQVBJIGRlZmluaXRpb24gZmlsZS4gVGhlIGdlbmVyYXRlZCBmaWxlIGNhbiBiZSBpbnRlZ3JhdGVkIGluIGEgcHJvamVjdCB0aHVzIG9mZmVyaW5nIGFuIGVhc3kgYW5kIHR5cGVzYWZlIHdheSB0byBpbnRlZ3JhdGUgd2l0aCBhbnkgQVBJLgoK readmeEtag: '"28f64c3a265f395ca2d3ab60212c10442e231324"' readmeLastModified: Fri, 04 Mar 2022 10:52:29 GMT repositoryId: 465714656 description: turn OpenAPI specs into an IDL created: '2022-03-03T12:43:50Z' updated: '2022-03-03T21:24:18Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: nexys-system logo: https://avatars.githubusercontent.com/u/71571169?v=4 license: MIT repoEtag: '"ff2c27cf3e0147486fa83e9d1253526daac2d37400355328888f567f439d47e5"' repoLastModified: Thu, 03 Mar 2022 21:24:18 GMT foundInMaster: true category: - Server - Testing id: 43a0f97b9da42fde1cd7e39dd518a21f - source: openapi3 tags repository: https://github.com/da0hn/bossabox-code-challenge v3: true id: 9d18581223a55a2c643b3c7f5d717e2d repositoryMetadata: base64Readme: >- IyBCb3NzYUJveCBjb2RlIGNoYWxsZW5nZQoKKiBJbXBsZW1lbnRhdGlvbiBvZiBWVVRUUiAoVmVyeSBVc2VmdWwgVG9vbHMgdG8gUmVtZW1iZXIpIHVzaW5nIHN0YWNrCiAgYEphdmEgMTdgLCBgU3ByaW5nIEJvb3QgMi43LjVgIGFuZCBgTmVvNGogR3JhcGggRGF0YWJhc2VgLgoKKiBBUEkgRG9jczogYHtiYXNlVXJsfS9hcGkvdnV0dHItc2VydmljZS92My9hcGktZG9jc2AKKiBTd2FnZ2VyIFVJOiBge2Jhc2VVcmx9L2FwaS92dXR0ci1zZXJ2aWNlL3N3YWdnZXItdWkvaW5kZXguaHRtbGAKKiBUbyBzdGFydCBkYXRhYmFzZSB1c2UgY29tbWFuZCBgZG9ja2VyLWNvbXBvc2UgdXAgLS1idWlsZGAgKF9gLS1idWlsZGAgaXMgcmVxdWlyZWRfKQoKCiogVGhlIHJlcXVpcmVtZW50cyBhcmUgZGVzY3JpYmUgaW4gW25vdGlvbl0oaHR0cHM6Ly93d3cubm90aW9uLnNvL0JhY2stZW5kLTBiMmM0NWYxYTAwZTRhODQ5ZWVmZTNiMWQ1N2YyM2M2KS4KCjxkZXRhaWxzPgogIDxzdW1tYXJ5PlJlZmVyZW5jZXM8L3N1bW1hcnk+CiAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5zcHJpbmcuaW8vc3ByaW5nLWRhdGEvbmVvNGovZG9jcy82LjMuNS9yZWZlcmVuY2UvaHRtbC8iPk5lbzRqIFNwcmluZyBEYXRhIHY2LjMuNS48L2E+PC9saT4KPC9kZXRhaWxzPgo= readmeEtag: '"4865ba45a121a691c156137ffa2c656ebf8bf603"' readmeLastModified: Mon, 29 May 2023 02:13:05 GMT repositoryId: 546942908 description: BossaBox code challenge implementation created: '2022-10-06T22:45:10Z' updated: '2023-05-09T17:23:02Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: da0hn logo: https://avatars.githubusercontent.com/u/40874826?v=4 repoEtag: '"fabdaa9fd5854023a9f0ff1ae6c94af0aeb34239f52c2a4e89deb498795d0d78"' repoLastModified: Tue, 09 May 2023 17:23:02 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/white1027/micro-service-workspace v3: true id: 7f52e71b35c7508746e16559cb6f53e4 repositoryMetadata: base64Readme: >- IyBNaWNyb1NlcnZpY2VXb3Jrc3BhY2UKCiMjIOWwiOahiOebrueahOiIh+iqquaYjgotIOS7peW+ruacjeWLmeeCuuS4u+eahOWwiOahiOaetuaniwotIOeUseaWvOS5i+WJjeeahOaetuaniyDmnIPlsIfmr4/lgIvlvq7mnI3li5npg73plovkuIDloIblsIjmoYjomZXnkIYg6YCg5oiQ566h55CG5LiK55qE5Zuw6ZujIOaJgOS7peW4jOacm+iDveWwh+WkmuWAi+W+ruacjeWLmeaUvuWcqOWQjOS4gOWAi+WwiOahiCDkvb/lhbbovIPlrrnmmJPnrqHnkIYKLSDlupXkuIvlpoLmnpzmnInpnIDopoEg5Y+v5Lul5pS555SoIGdpdCBzdWJtb2R1bGUg566h55CGCi0gKipnYXRld2F5Kiog5piv5YWl5Y+jIOmAmuW4uOWPquacg+acieS4gOWAiyAo5aaC5p6c5pyJ5LiN5ZCM55qE5pyN5YuZ5oOz6KaB5o6l57O757WxIOWPr+S7peiAg+aFruWPpuWklumWi+S4gOWAiyBnYXRld2F5KQotICoqbGliKiog5YWx55So5Ye95byP5bqrIOmAmuW4uOaUvuaJgOacieaooee1hOmDveacg+eUqOWIsOeahCAo5aaC5p6c5piv5L2/55SoIFNwcmluZyBKUEEg5LmL6aGe55qEIOmcgOimgeWPpuWkluWGjemWi+S4gOWAiyDlj6rntaYgbW9kdWxlcyDkvb/nlKgpCi0gKiptb2R1bGVzKiog5ZCE5YCL5b6u5pyN5YuZIOWPr+S7peS6kuebuOmAmuioigotICoqZGF0YWJhc2UqKiDpoJDoqIjmr4/lgIvlvq7mnI3li5npg73mnIPmnInoh6rlt7HnmoRkYXRhYmFzZQotIOacgOW+jOWwseaYryDpgJnpgorpg73mlL7miJHoh6rlt7Hoprrlvpflpb3nlKjnmoQg5omA5Lul5bCx5pW05ZCI5oiQ5LiA5YCL5bCI5qGIIOS4puWwh+S4gOS6m+W4uOeUqOeahOaSsOWvq+aWueazleaUvuWFpQoKIyMg5L2/55So55qEIExpYnJhcnkKCiMjIyBHYXRld2F5Ci0gKipTcHJpbmcgQWN0dWF0b3IqKiDnm6PmjqfnlKgKLSAqKlNwcmluZyBXZWJmbHV4KiogUmVhY3RpdmUgd2ViICjlmJfoqabkvb/nlKgpCi0gKipKZXR0eSoqIOaQremFjSBXZWJmbHV4Ci0gKipEdWJibyoqIOW+ruacjeWLmemAmuioiueUqCAgIAotICoqWm9va2VlcGVyKiog5b6u5pyN5YuZ6Ki75YaK55SoCi0gKipPcGVuQXBpICsgUmVkb2MqKgotICoqU2EtVG9rZW4qKiDnmbvlhaXpqZforYnnlKgKICAgCiMjIyBDb21tb25MaWJyYXJ5Ci0gKipMb21ib2sqKiDlpb3nlKjnmoQgZ2V0dGVyIHNldHRlciDlt6XlhbcKCiMjIyBNb2R1bGVzCi0gKipTcHJpbmcgQWN0dWF0b3IqKiDnm6PmjqfnlKgKLSAqKkR1YmJvKiog5b6u5pyN5YuZ6YCa6KiK55SoCi0gKipab29rZWVwZXIqKiDlvq7mnI3li5noqLvlhornlKgKLSAqKk15YmF0aXMqKiBEQueahE9STeW3peWFtwotICoqUG9zdGdyZXMqKiDnm67liY3lvJXnlKjnmoRKREJDCi0gKipGbHl3YXkqKiBEQueJiOaOp+W3peWFtwoKIyMg6ZaL55m85pa55rOVCjEuIOWVn+WLlSBab29rZWVwZXIKMi4g5ZWf5YuVIOWQhOW+ruacjeWLmQozLiDllZ/li5UgR2F0ZXdheSBQb3J0IOmgkOioreeCuiA4MDk5CjQuIOiHsyBsb2NhbGhvc3Q6ODA5OS9pbmRleC5odG1sIOWPr+S7peeci+WIsCBBcGkg5YiX6KGoCgojIyDkvb/nlKjms6jmhI/kuovpoIUKLSDlsIjmoYjlpKrlpJrlsI7oh7QgZ3JhZGxlIG9vbQotIE1vZGVsIOeahOmhnuWIpeWPr+S7peS9v+eUqCBSZWNvcmQg5oiWIEBEYXRhIOaIliBAQnVpbGRlciwgbXliYXRpcyBkdWJibyDpg73lj6/ku6Xop6PmnpAKLSBTYS1Ub2tlbiDlj6/ku6XmkK3phY0gZHViYm8g5L2/55SoCgojIyDlrpjmlrnmlofku7YKLSBNeWJhdGlzIFvli5XmhYtTUUxdKGh0dHBzOi8vbXliYXRpcy5vcmcvbXliYXRpcy0zL3poL2R5bmFtaWMtc3FsLmh0bWwpCi0gRHViYm8gW+WumOe2sl0oaHR0cHM6Ly9jbi5kdWJiby5hcGFjaGUub3JnL3poLWNuL292ZXJ2aWV3L2hvbWUvKQotIFJlZG9jIFtHaXRodWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWRvY2x5L3JlZG9jKQotIFpvb2tlZXBlciBbRG9ja2VyXShodHRwczovL2h1Yi5kb2NrZXIuY29tL18vem9va2VlcGVyKQotIFNhLVRva2VuIFvlrpjntrJdKGh0dHBzOi8vc2EtdG9rZW4uY2MvKQoKIyMjIOWll+S7tuS9v+eUqOazqOaEj+S6i+mghQotICoqRmx5d2F5Kiog55uu5YmN6Kit5a6a54K6IOWwiOahiOWVn+WLleWwseacg+iHquWLleabtOaWsOebruaomURCCgojIyDnt6jora/mjIfku6Tot5/nmbzooYwKCiMjIyDnt6jora/miJBKQVIKLSBgIGdyYWRsZSBidWlsZGAKCiMjIyMgSmFyIOS9jee9rgotIGdhdGV3YXkvY29yZS1nYXRld2F5L2J1aWxkL2xpYnMvY29yZS1nYXRld2F5OjAuMC4xLVNOQVBTSE9UCi0gbW9kdWxlcy9jb3JlLW1vZHVsZS9idWlsZC9saWJzL2NvcmUtbW9kdWxlOjAuMC4xLVNOQVBTSE9UCi0gbW9kdWxlcy91c2VyLW1vZHVsZS9idWlsZC9saWJzL3VzZXItbW9kdWxlOjAuMC4xLVNOQVBTSE9UCgoKIyMjIGdyYWFsdm0gTmF0aXZlCi0gYGdyYWRsZSA6Z2F0ZXdheTpjb3JlLWdhdGV3YXk6Ym9vdEJ1aWxkSW1hZ2UgOm1vZHVsZXM6Y29yZS1tb2R1bGU6Ym9vdEJ1aWxkSW1hZ2UgOm1vZHVsZXM6dXNlci1tb2R1bGU6Ym9vdEJ1aWxkSW1hZ2VgCm9yCi0gYGdyYWRsZSA6Z2F0ZXdheTpjb3JlLWdhdGV3YXk6Ym9vdEJ1aWxkSW1hZ2VgCi0gYGdyYWRsZSA6bW9kdWxlczpjb3JlLW1vZHVsZTpib290QnVpbGRJbWFnZWAKLSBgZ3JhZGxlIDptb2R1bGVzOnVzZXItbW9kdWxlOmJvb3RCdWlsZEltYWdlYAojIyMjIGltYWdlIOmgkOioreS9jee9rgotIGRvY2tlci5pby9saWJyYXJ5L2NvcmUtZ2F0ZXdheTowLjAuMS1TTkFQU0hPVAotIGRvY2tlci5pby9saWJyYXJ5L2NvcmUtbW9kdWxlOjAuMC4xLVNOQVBTSE9UCi0gZG9ja2VyLmlvL2xpYnJhcnkvdXNlci1tb2R1bGU6MC4wLjEtU05BUFNIT1QKCgojIyBUT0RPCi0gWyBdIG15YmF0aXMg5YiH5o+bIHNjaGVtYQotIFsgXSBkdWJibyBzZXJ2aWNlIG1lc2gKLSBbIF0gZHViYm8gYXBpIGRvY3MKLSBbIF0g5Zau5YWD5ris6KmmICjnm67liY0gZHViYm8g5pyD5aSx5pWXKQotIFsgXSBEb2NrZXIgQ29tcG9zZSDmjqXplovnmbw= readmeEtag: '"36a52bd464a7ef2a60a0831c677e1e4256614975"' readmeLastModified: Tue, 07 Nov 2023 04:12:56 GMT repositoryId: 710117294 description: 一個Workspace放多個微服務 created: '2023-10-26T03:51:50Z' updated: '2023-11-14T04:12:56Z' language: Java archived: false stars: 0 watchers: 1 forks: 1 owner: white1027 logo: https://avatars.githubusercontent.com/u/4639053?v=4 license: MIT repoEtag: '"d685e5b770c3eb2bf0a821a59c2281d1e27618472d6825304730e043fb548aec"' repoLastModified: Tue, 14 Nov 2023 04:12:56 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/gogvale/timbre_api v3: true id: 88f762db0b11e5b1426d7c6ca95975e7 repositoryMetadata: base64Readme: >- IyBUaW1icmUgQVBJCiFbUmFpbHMgQ0kgQmFkZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb2d2YWxlL3RpbWJyZV9hcGkvYWN0aW9ucy93b3JrZmxvd3MvcnVieW9ucmFpbHMueW1sL2JhZGdlLnN2ZykKCiMjIyBEZXBlbmRlbmNpZXM6CiogcnVieSAzLjEuMnAyMAoqIFJhaWxzIDcuMC40CiogUG9zdGdyZVNRTCAxNC41CgpUaGluZ3MgeW91IG1heSB3YW50IHRvIGNvdmVyOgoKIyMjICBEYXRhYmFzZSBjcmVhdGlvbiArIG1pZ3JhdGlvbnMKYGBgc2hlbGwKJCBiaW4vcmFpbHMgZGI6bWlncmF0ZTpyZXNldApgYGAKCiMjIyBSdW5uaW5nIHRlc3RzCmBgYHNoZWxsCiQgYmluL2J1bmRsZSByc3BlYyAoc3BlY3xwYXRoX3RvX2ZpbGU6bGluZSkKYGBgCiMjIyBEZXBsb3ltZW50IGluc3RydWN0aW9ucwooVE9ETykK readmeEtag: '"3b21dac9b1033bd0081128b4bf9e8d170fa74d3b"' readmeLastModified: Wed, 19 Oct 2022 01:10:17 GMT repositoryId: 551710663 description: >- Social app API where clients search and contact musicians for events (work in progress) created: '2022-10-14T23:59:18Z' updated: '2022-10-17T23:58:39Z' language: Ruby archived: false stars: 0 watchers: 1 forks: 0 owner: gogvale logo: https://avatars.githubusercontent.com/u/23729423?v=4 license: GPL-3.0 repoEtag: '"2e852a66935e290905e4765df323ac21bd61c4cb4edd785d3a1806a6fcbd7393"' repoLastModified: Mon, 17 Oct 2022 23:58:39 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/oltionzefi/nestjs-mailer-handlebars v3: true id: 9d609acb6d4b267d9806cffc4d70a11b repositoryMetadata: base64Readme: >- IyBOZXN0anMgTWFpbGVyIEhhbmRsZWJhcnMKCiMjIERlc2NyaXB0aW9uCgpQcm9qZWN0IHdoaWNoIGludGVncmF0ZXMgW25lc3Rqcy5jb21dKGh0dHBzOi8vbmVzdGpzLmNvbSksIFtuZXN0LW1vZHVsZXMvbWFpbGVyL10oaHR0cHM6Ly9uZXN0LW1vZHVsZXMuZ2l0aHViLmlvL21haWxlci8pIAphbmQgW2hhbmRsZWJhcnNdKGh0dHBzOi8vaGFuZGxlYmFyc2pzLmNvbSkKCiMjIFJ1bm5pbmcgdGhlIGFwcAoKVGhpcyBwcm9qZWN0IGlzIGJ1aWxkIHdpdGggRG9ja2VyIGFuZCBkb2NrZXIgY29tcG9zZSwgYW5kIHRvIHJ1biB0aGUgYXBwIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kLgoKYGBgYmFzaApkb2NrZXIgY29tcG9zZSB1cAoKIyBvcgoKZG9ja2VyIGNvbXBvc2UgdXAgLWQKYGBgCgpBZnRlciB0aGF0IG9wZW4gdGhlIE9wZW5BUEkgdXJsOiBgYGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGlgYAoKIVtvcGVuYXBpXSguL2ltYWdlcy9zY3JlZW5jYXB0dXJlLWxvY2FsaG9zdC1vcGVuYXBpLnBuZykKCndoZXJlIHlvdSBjYW4gc2VlIHRoZSBhcGkgd2hpY2ggdGhpcyBwcm9qZWN0IGNvbnRhaW5zLgoKSWYgeW91IG9wZW4gaW4gcGFyYWxsZWxsIGFsc28gdGhlIHVybCBmb3IgY2hlY2tpbmcgZW1haWxzOiBgYGh0dHA6Ly9sb2NhbGhvc3Q6MTA4MGBgLCB5b3Ugd2lsbCBzZWUgZW1wdHkgbGlzdDoKCiFbZW1wdHktZW1haWxdKC4vaW1hZ2VzL3NjcmVlbmNhcHR1cmUtbG9jYWxob3N0LTEwODAucG5nKQoKVG8gZG8gYSB0ZXN0LCBnbyBhZ2FpbiB0byBPcGVuQVBJIGFuZCB0cnkgdGhlIGVuZHBvaW50LCBpbW1lZGlhdGVseSB5b3Ugd2lsbCBzZWUgZW1haWwgaW4gdGhlIG1haWxkZXYsIGZvcm1hdHRlZCBhcyBiZWxvdzoKCiFbZW1haWxdKC4vaW1hZ2VzL3NjcmVlbmNhcHR1cmUtbG9jYWxob3N0LWVtYWlsLnBuZykKCiMjIFRlc3QKCmBgYGJhc2gKIyB1bml0IHRlc3RzCm5wbSBydW4gdGVzdApgYGAKCiMjIExpY2Vuc2UKCk5lc3QgaXMgW0JTRCAzLUNsYXVzZSBMaWNlbnNlXShMSUNFTlNFKS4K readmeEtag: '"f7159ed74a6640d17be2a6d29b0de37751983f99"' readmeLastModified: Fri, 16 Dec 2022 22:49:31 GMT repositoryId: 579196028 description: Demo project with nestjs, nest-modules/mailer and handlebars created: '2022-12-16T22:48:47Z' updated: '2022-12-17T17:24:10Z' language: Handlebars archived: false stars: 0 watchers: 1 forks: 0 owner: oltionzefi logo: https://avatars.githubusercontent.com/u/13889145?v=4 license: BSD-3-Clause repoEtag: '"1987c580eb2ad2e556e8a00ae4889beb4ba2735aa1f87add4d9aa43fc5886827"' repoLastModified: Sat, 17 Dec 2022 17:24:10 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/alexscigalszky/openapi.errorcodes.library v3: true id: f3519342b60a1396502e2c74f3798fb6 repositoryMetadata: base64Readme: >- IyBPcGVuQXBpLkVycm9yQ29kZXMuTGlicmFyeQoKVGhpcyBpcyBhIGxpYnJhcnkgdG8gc2hvdyBleGFtcGxlcyBvZiBlcnJvciBjb2RlcyBmcm9tIGEgY29uc3RhbnRzIGZpbGUgdG8gYSBkZWZpbmVkIHN0cnVjdHVyZQoKCiMjIEhvdyB0byB1c2UKKiBDcmVhdGUgYW4gYXR0cmlidXRlIGV4dGVuZGluZyDCtFJlc3BvbnNlQ29kZUZyb21Db25zdGFudHNEYXRhQXR0cmlidXRlwrQgdG8gc2F2ZSB5b3VyIGRhdGEuCkV4YW1wbGUKYGBgY3NoYXJwCltBdHRyaWJ1dGVVc2FnZShBdHRyaWJ1dGVUYXJnZXRzLkZpZWxkKV0KcHVibGljIGNsYXNzIENvZGVTdWJDb2RlRGVzY3JpcHRpb25MaW5rQXR0cmlidXRlIDogUmVzcG9uc2VDb2RlRnJvbUNvbnN0YW50c0RhdGFBdHRyaWJ1dGUKewogICAgcHVibGljIGludCBDb2RlOwogICAgcHVibGljIGludD8gU3ViQ29kZTsKICAgIHB1YmxpYyBzdHJpbmcgRGVzY3JpcHRpb247CiAgICBwdWJsaWMgc3RyaW5nIExpbms7CiAgICBwdWJsaWMgQ29kZVN1YkNvZGVEZXNjcmlwdGlvbkxpbmtBdHRyaWJ1dGUoaW50IGNvZGUsIHN0cmluZyBkZXNjcmlwdGlvbiwgc3RyaW5nIGxpbmspCiAgICB7CiAgICAgICAgQ29kZSA9IGNvZGU7CiAgICAgICAgU3ViQ29kZSA9IG51bGw7CiAgICAgICAgRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKICAgICAgICBMaW5rID0gbGluazsKICAgIH0KfQpgYGAKCiogQ3JlYXRlIGEgUmVzcG9uc2UgY2xhc3MKRXhhbXBsZQoKYGBgY3NoYXJwCnB1YmxpYyBjbGFzcyBDb2RlU3ViQ29kZVJlc3BvbnNlCnsKICAgIHB1YmxpYyBpbnQgQ29kZSB7IGdldDsgc2V0OyB9CiAgICBwdWJsaWMgaW50IFN1YkNvZGUgeyBnZXQ7IHNldDsgfQogICAgcHVibGljIHN0cmluZz8gRGVzY3JpcHRpb24geyBnZXQ7IHNldDsgfQogICAgcHVibGljIHN0cmluZz8gTGluayB7IGdldDsgc2V0OyB9Cn0KYGBgCgoqIENyZWF0ZSBhIG1hcHBpbmcgZnVuY3Rpb24KRXhhbXBsZQpgYGBjc2hhcnAKdmFyIE1hcEF0dHJpYnV0ZVRvUmVzcG9uc2UgPSAoQ29kZVN1YkNvZGVEZXNjcmlwdGlvbkxpbmtBdHRyaWJ1dGUgZGF0YSwgaW50IGNvbnN0YW50KSA9Pgp7CiAgICByZXR1cm4gbmV3IENvZGVTdWJDb2RlUmVzcG9uc2UoKQogICAgewogICAgICAgIENvZGUgPSBkYXRhLkNvZGUsCiAgICAgICAgU3ViQ29kZSA9IGNvbnN0YW50LAogICAgICAgIERlc2NyaXB0aW9uID0gZGF0YS5EZXNjcmlwdGlvbiwKICAgICAgICBMaW5rID0gZGF0YS5MaW5rCiAgICB9Owp9OwpgYGAKCiogQWRkIHRoZSBPcGVuQXBpIGZpbHRlciBpbiB5b3VyIHN0YXJ0dXAgcHJvamVjdApgYGBjc2hhcnAKYnVpbGRlci5TZXJ2aWNlcy5BZGRFbmRwb2ludHNBcGlFeHBsb3JlcigpOwpidWlsZGVyLlNlcnZpY2VzLkFkZFN3YWdnZXJHZW4oYyA9Pgp7CiAgICBjLlN3YWdnZXJEb2MoInYxIiwgbmV3KCkKICAgIHsKICAgICAgICBUaXRsZSA9IGJ1aWxkZXIuRW52aXJvbm1lbnQuQXBwbGljYXRpb25OYW1lLAogICAgICAgIFZlcnNpb24gPSAidjEiLAogICAgfSk7CiAgICAvLy8gYWRkIG5leHQgbGluZQogICAgYy5PcGVyYXRpb25GaWx0ZXI8UmVzcG9uc2VDb2RlRnJvbUNvbnN0YW50c09wZXJhdGlvbkZpbHRlcjxDb2RlU3ViQ29kZVJlc3BvbnNlLCBDb2RlU3ViQ29kZURlc2NyaXB0aW9uTGlua0F0dHJpYnV0ZT4+KE1hcEF0dHJpYnV0ZVRvUmVzcG9uc2UpOwp9KTsKYGBgCgoqIEFkZCBhdHRyaWJ1dG8gaW4geW91ciBlbmRwb2ludCBmdW5jdGlvbi4gCkl0IG5lZWRzIGEgc2VjdGlvbiBuYW1lIGFuZCB0aGUgY2xhc3Mgd2hlcmUgdGhlIGNvbnN0YW50IGNvZGVzIGFyZSBkZWZpbmVkCkV4YW1wbGUKYGBgY3NoYXJwCnZhciBIb21lRm4gPSAKICAgIC8vIGFkZCBuZXh0IGxpbmUKICAgIFtSZXNwb25zZUNvZGVGcm9tQ29uc3RhbnRzKCJMaXN0IG9mIGVycm9yIGNvZGVzIiwgdHlwZW9mKFJlc3BvbnNlU3ViQ29kZXMpKV0KKFtGcm9tQm9keV0gSW5wdXRSZXF1ZXN0IGlucHV0KSA9PiB7CgogICAgcmV0dXJuICJIZWxsbyB3b3JkIjsKfTsKYGBgCgojIyBFeGFtcGxlIG9mIGEgU3dhZ2dlciBVSQoKPGltZyBzcmM9InN3YWdnZXJ1aS5wbmciLz4KCiMjIEV4YW1wbGUgb2YgYSBPcGVuQXBpIGpzb24gZmlsZQoKYGBganNvbgp7CiAgIm9wZW5hcGkiOiAiMy4wLjEiLAogICJpbmZvIjogewogICAgInRpdGxlIjogIk9wZW5BcGkuRXJyb3JDb2Rlcy5MaWJyYXJ5LkNvbnNvbGUiLAogICAgInZlcnNpb24iOiAidjEiCiAgfSwKICAicGF0aHMiOiB7CiAgICAiLyI6IHsKICAgICAgInBvc3QiOiB7CiAgICAgICAgInRhZ3MiOiBbCiAgICAgICAgICAiT3BlbkFwaS5FcnJvckNvZGVzLkxpYnJhcnkuQ29uc29sZSIKICAgICAgICBdLAogICAgICAgICJyZXF1ZXN0Qm9keSI6IHsKICAgICAgICAgICJjb250ZW50IjogewogICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvSW5wdXRSZXF1ZXN0IgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUKICAgICAgICB9LAogICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAiMjAwIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VjY2VzcyIsCiAgICAgICAgICAgICJjb250ZW50IjogewogICAgICAgICAgICAgICJ0ZXh0L3BsYWluIjogewogICAgICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJMaXN0IG9mIGVycm9yIGNvZGVzIjogewogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiBudWxsLAogICAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAgICIkcmVmIjogIiMvY29tcG9uZW50cy9zY2hlbWFzL0NvZGVTdWJDb2RlUmVzcG9uc2UiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImV4YW1wbGVzIjogewogICAgICAgICAgICAgICAgICAiMTAzMSI6IHsKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAie1wiQ29kZVwiOjIwMCxcIlN1YkNvZGVcIjoxMDMxLFwiRGVzY3JpcHRpb25cIjpcIkl0ZW0gY3JlYXRlZCFcIixcIkxpbmtcIjpcImh0dHA6Ly90YmRcIn0iCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICIyNTMxIjogewogICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICJ7XCJDb2RlXCI6MjAwLFwiU3ViQ29kZVwiOjI1MzEsXCJEZXNjcmlwdGlvblwiOlwiSXRlbSB1cGRhdGVkIVwiLFwiTGlua1wiOlwiaHR0cDovL3RiZFwifSIKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIjkwNTQiOiB7CiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogIntcIkNvZGVcIjozMDAsXCJTdWJDb2RlXCI6OTA1NCxcIkRlc2NyaXB0aW9uXCI6XCJBIGZpZWxkIGlzIG1pc3NpbmdcIixcIkxpbmtcIjpcImh0dHA6Ly90YmRcIn0iCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJjb21wb25lbnRzIjogewogICAgInNjaGVtYXMiOiB7CiAgICAgICJDb2RlU3ViQ29kZVJlc3BvbnNlIjogewogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAiY29kZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsCiAgICAgICAgICAgICJmb3JtYXQiOiAiaW50MzIiCiAgICAgICAgICB9LAogICAgICAgICAgInN1YkNvZGUiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAogICAgICAgICAgICAiZm9ybWF0IjogImludDMyIgogICAgICAgICAgfSwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGxhYmxlIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJsaW5rIjogewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAibnVsbGFibGUiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiOiBmYWxzZQogICAgICB9LAogICAgICAiSW5wdXRSZXF1ZXN0IjogewogICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAibmFtZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGxhYmxlIjogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJjb3VudCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsCiAgICAgICAgICAgICJmb3JtYXQiOiAiaW50MzIiLAogICAgICAgICAgICAibnVsbGFibGUiOiB0cnVlCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiOiBmYWxzZQogICAgICB9CiAgICB9CiAgfQp9CmBgYAo= readmeEtag: '"900e0974216e9f31767a79adf8a4114a03197cf3"' readmeLastModified: Thu, 24 Aug 2023 16:05:56 GMT repositoryId: 682270973 description: >- This is a library to show examples of error codes from a constants file to a defined structure created: '2023-08-23T20:11:26Z' updated: '2023-08-24T16:08:26Z' language: C# archived: false stars: 0 watchers: 1 forks: 0 owner: AlexScigalszky logo: https://avatars.githubusercontent.com/u/20727215?v=4 license: Apache-2.0 repoEtag: '"25314a60a5db1458b0a5fe2fa879402a6a8db11f46998e453606543466715d5b"' repoLastModified: Thu, 24 Aug 2023 16:08:26 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/dashotv/tvdb v3: true id: ecf31ce50b97ac527c6c494b25182994 repositoryMetadata: base64Readme: >- IyBkYXNob3R2L3R2ZGIKCkdvbGFuZyBUVkRCIENsaWVudCAoQWxwaGEpCgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZHJvbmUuZGFzaG8ubmV0L2FwaS9iYWRnZXMvZGFzaG90di90dmRiL3N0YXR1cy5zdmc/cmVmPXJlZnMvaGVhZHMvbWFpbildKGh0dHBzOi8vZHJvbmUuZGFzaG8ubmV0L2Rhc2hvdHYvdHZkYikKWyFbR29Eb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vZGFzaG90di90dmRiP3N0YXR1cy5zdmcpXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2Rhc2hvdHYvdHZkYikKWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL2Rhc2hvdHYvdHZkYildKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9kYXNob3R2L3R2ZGIpCiFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ibHVlLnN2ZykKCiMjIEdlbmVyYXRlZCBDb2RlCgpUaGlzIHBhY2thZ2UgaXMgZ2VuZXJhdGVkIGZyb20gdGhlIFtUVkRCIE9wZW5BUEldKGh0dHBzOi8vYXBpLnRoZXR2ZGIuY29tL3N3YWdnZXIpIHNwZWNpZmljYXRpb24gdXNpbmcgdGhlIFtTcGVha2Vhc3ldKGh0dHBzOi8vc3BlYWtlYXN5YXBpLmRldikgY29kZSBnZW5lcmF0b3IuCgpUaGUgZ2VuZXJhdGVkIGNvZGUgaXMgaW4gdGhlIGBvcGVuYXBpYCBkaXJlY3RvcnksIGFuZCBJJ3ZlIHdyaXR0ZW4gc2NyaXB0cyB0byB3cmFwCml0IHdpdGggYSBtb3JlIGNvbnZlbmllbnQgaW50ZXJmYWNlLgoKU2VlIHRoZSBgR2VuZXJhdGlvbmAgc2VjdGlvbiBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCj4gWyFOT1RFXQo+IEkgaGF2ZSBuZWVkZWQgdG8gbWFrZSBhIGZldyB0d2Vha3MgdG8gdGhlIG9wZW5hcGkgc3BlYyB0byBnZXQgdGhpbmdzIHRvIHdvcmsgY29ycmVjdGx5IGluIGdvLgoKIyMgQWRkaXRpb25hbCBEb2N1bWVudGF0aW9uCgpUaGUgU3BlYWtlYXN5IGdlbmVyYXRvciBhbHNvIGdlbmVyYXRlcyBkb2N1bWVudGF0aW9uIGZvciB0aGUgQVBJLiBUaGlzIGlzIGF2YWlsYWJsZQppbiB0aGUgb3BlbmFwaSBkaXJlY3RvcnkncyBbUkVBRE1FLm1kXShvcGVuYXBpL1JFQURNRS5tZCkgYW5kIHRoZSBbZG9jc10ob3BlbmFwaS9kb2NzKSBkaXJlY3RvcnkuCgojIyBTdGF0dXMKClRoZSBjb2RlIGlzIGN1cnJlbnRseSBpbiBhbHBoYSwgYW5kIGlzIG5vdCByZWFkeSBmb3IgcHJvZHVjdGlvbiB1c2UuIEl0IGlzIGJlaW5nIHVzZWQKYnkgdGhlIERhc2hvVFYgcHJvamVjdCwgYnV0IGlzIG5vdCB5ZXQgc3RhYmxlLgoKIyMgVXNhZ2UKCkluc3RhbGwgdGhlIHBhY2thZ2Ugd2l0aDoKCmBgYGJhc2gKZ28gZ2V0IGdpdGh1Yi5jb20vZGFzaG90di90dmRiCmBgYAoKSW1wb3J0IHRoZSBwYWNrYWdlIHdpdGg6CgpgYGBnbwppbXBvcnQgImdpdGh1Yi5jb20vZGFzaG90di90dmRiIgpgYGAKCkNyZWF0ZSBhIG5ldyBjbGllbnQgd2l0aDoKCmBgYGdvCmNsaWVudCA6PSB0dmRiLk5ldyhhcGlrZXksIHRva2VuKQpgYGAKCklmIHlvdSBkb24ndCBhbHJlYWR5IGhhdmUgYSB0b2tlbiwgeW91IGNhbiBhdXRoZW50aWNhdGUgd2l0aCB5b3VyIGBhcGlrZXlgIHVzaW5nIHRoZSBgTG9naW5gIG1ldGhvZDoKCmBgYGdvCi8vIEF1dGhlbnRpY2F0ZSB3aXRoIHlvdXIgQVBJIGtleS4gVGhpcyB3aWxsIHJldHVybiBhIGNsaWVudCB3aXRoIHRoZQovLyB0b2tlbiBhbHJlYWR5IGNvbmZpZ3VyZWQuCmNsaWVudCwgZXJyIDo9IHR2ZGIuTG9naW4oYXBpa2V5KQppZiBlcnIgIT0gbmlsIHsKICAgIC8vIGhhbmRsZSBlcnJvcgp9CmNsaWVudC5Ub2tlbiAvLyB0aGUgdG9rZW4KYGBgCgo+IFshSU1QT1JUQU5UXQo+IFlvdSBzaG91bGQgc3RvcmUgdGhlIHRva2VuIHNvbWV3aGVyZSwgYnkgZGVmYXVsdCB0aGUgdG9rZW4gaXMgdmlhYmxlIGZvciAzMCBkYXlzLiBUVkRCIGRvZXNuJ3QgYXBwZWFyIHRvIGNhcmUgaWYgeW91IGF1dGggZXZlcnkgY2FsbCwgYnV0IGl0IGFkZHMgYSBsb3Qgb2Ygb3ZlcmhlYWQuCgpJZiB5b3UgYWxyZWFkeSBoYXZlIHRoZSB0b2tlbiwgeW91IGNhbiBjcmVhdGUgYSBjbGllbnQgd2l0aCB5b3VyIGBhcGlrZXlgIGFuZCBgdG9rZW5gOgoKYGBgZ28KY2xpZW50IDo9IHR2ZGIuTmV3KGFwaWtleSwgdG9rZW4pCmBgYAoKIyMgRGV2ZWxvcG1lbnQKCkNyZWF0ZSBhIGxvY2FsIGAuZW52YCBmaWxlIHdpdGggdGhlIGZvbGxvd2luZyBjb250ZW50OgoKYGBgCiMgLmVudgpUVkRCX0FQSV9VUkw9aHR0cHM6Ly9hcGk0LnRoZXR2ZGIuY29tL3Y0ClRWREJfQVBJX0tFWT15b3VyX2FwaV9rZXkKVFZEQl9BUElfVE9LRU49eW91cl9hcGlfdG9rZW4KYGBgCgpSdW4gdGhlIGZvbGxvd2luZyB0byBnZXQgdGhlIG1ha2UgdGFyZ2V0czoKCmBgYAo+IG1ha2UgaGVscAoKVXNhZ2U6CiAgbWFrZSA8dGFyZ2V0PgoKVGFyZ2V0czoKICBHZW5lcmFsOgogICAgZ2VuZXJhdGUgICAgICAgICAgICBHZW5lcmF0ZSBjb2RlIGZyb20gb3BlbmFwaS55bWwgc3BlYwogICAgY2xlYW4gICAgICAgICAgICAgICBSZW1vdmUgYnVpbGQgcmVsYXRlZCBmaWxlCiAgVGVzdDoKICAgIHRlc3QgICAgICAgICAgICAgICAgUnVuIHRoZSB0ZXN0cyBvZiB0aGUgcHJvamVjdAogICAgY292ZXJhZ2UgICAgICAgICAgICBSdW4gdGhlIHRlc3RzIG9mIHRoZSBwcm9qZWN0IGFuZCBleHBvcnQgdGhlIGNvdmVyYWdlCiAgTGludDoKICAgIGxpbnQgICAgICAgICAgICAgICAgUnVuIGFsbCBhdmFpbGFibGUgbGludGVycwogICAgbGludC1nbyAgICAgICAgICAgICBVc2UgZ29saW50Y2ktbGludCBvbiB5b3VyIHByb2plY3QKICBIZWxwOgogICAgaGVscCAgICAgICAgICAgICAgICBTaG93IHRoaXMgaGVscC4KCmBgYAoKIyMjIEdlbmVyYXRpb24KClRvIHVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGNvZGUsIGVuc3VyZSB5b3UgaGF2ZSB0aGUgZGVwZW5kZW5jaWVzIGluc3RhbGxlZDoKCi0gU3BlYWtlYXN5IENMSSAtIFNlZSBbU3BlYWtlYXN5XShodHRwczovL3NwZWFrZWFzeWFwaS5kZXYpIGZvciBtb3JlIGluZm9ybWF0aW9uLgotIFJ1YnkgLSBTZWUgW1J1YnldKGh0dHBzOi8vd3d3LnJ1YnktbGFuZy5vcmcvZW4vZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24vKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KClRoZW4gcnVuOgoKYGBgYmFzaAptYWtlIGdlbmVyYXRlCmBgYAoKVGhpcyB3aWxsIHJ1biB0aGUgYHNjcmlwdHMvZ2VuZXJhdGUuc2hgIHNjcmlwdCwgd2hpY2ggd2lsbDoKCi0gUnVuIHRoZSBzcGVha2Vhc3kgY2xpIGdlbmVyYXRvcgotIFJlYXJyYW5nZSB0aGUgZ2VuZXJhdGVkIGNvZGUKLSBSdW4gYSBydWJ5IHNjcmlwdCB0byBidWlsZCB0aGUgd3JhcHBlciBjbGllbnQgY29kZQoKIyMjIE5vdGVzCgpUaGVyZSBhcmUgc2V2ZXJhbCBvcGVyYXRpb25zIG9uIHRoZSBhcGkgdGhhdCBhcmUgZGlzYWJsZWQgKHRoaXMgaXMgaGFuZGxlZCBpbiB0aGUKcnVieSBzY3JpcHQpLiBUaGVzZSBhcmUgb3BlcmF0aW9ucyB0aGF0IHJlcXVpcmUgYWRkaXRpb25hbCBwcml2ZWxlZ2VzIChhY3Rpb25zIG9uCmJlaGFsZiBvZiB0aGUgdXNlcikgb3IgdGhhdCBkb24ndCB3b3JrIGNvcnJlY3RseS4gVGhlc2UgYXJlIGNvbmZpZ3VyZWQgYXMgYW4gYXJyYXkKaW4gdGhlIHJ1Ynkgc2NyaXB0Lgo= readmeEtag: '"5d37ac2e5ae85f82ecd3f3f8eb7a5289f66662ad"' readmeLastModified: Mon, 08 Jul 2024 23:12:52 GMT repositoryId: 707020724 description: DashoTV tvdb v4 client (alpha) created: '2023-10-19T04:16:17Z' updated: '2024-07-08T23:12:58Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: dashotv logo: https://avatars.githubusercontent.com/u/20273052?v=4 license: MIT repoEtag: '"d01e8d7111843b58a1c6a3ef3d828739eab8c9727f9ff467483a3dc7c306da81"' repoLastModified: Mon, 08 Jul 2024 23:12:58 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/sudokuru/useractivegames v3: true id: 207175dc82f84c4eeab9c89927311f5d repositoryMetadata: base64Readme: >- PiBbIUlNUE9SVEFOVF0gIAo+IFRoaXMgcmVwb3NpdG9yeSBpcyByZWFkLW9ubHkgLyBhcmNoaXZlZCBhbmQgd2lsbCBub3QgcmVjaWV2ZSB1cGRhdGVzLgoKIyBbVHlwZWRvYyBEb2N1bWVudGF0aW9uIFdlYnNpdGVdKGh0dHBzOi8vc3Vkb2t1cnUuZ2l0aHViLmlvL1VzZXJBY3RpdmVHYW1lcy8pPGJyPgoKCiMgRGV2ZWxvcGVyIFNldHVwCgoxLiBHZXQgdGhlIC5lbnYgZmlsZSBmcm9tIHRoZSBNU0IgYnVpbGRpbmcgbmV4dCB0byB0aGUgd2F0ZXIgZm91bnRhaW4uIAoyLiBJbnN0YWxsIERvY2tlciBvbiB5b3VyIG1hY2hpbmUuIFR1dG9yaWFsIGlzIGxpbmtlZCBiZWxvdzo8YnI+CiAgIFshW0RvY2tlciBUdXRvcmlhbF0oaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvMmV6TnFxYVNqcTgvMC5qcGcpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTJlek5xcWFTanE4KTxicj4KMi4gT25jZSBkb2NrZXIgaXMgaW5zdGFsbGVkLCB0aGUgTW9uZ28gaW1hZ2UgY2FuIGJlIHJ1biB3aXRoIHRoaXMgY29tbWFuZDo8YnI+Ck5vdGUgdXNlIGBgYHN1ZG9gYGAgb24gTGludXgvTWFjPGJyPgpgYGBjb25zb2xlCm5wbSBydW4gZG9ja2VyCmBgYAozLiBUaGUgYXBwIGNhbiB0aGVuIGJlIHJ1biB3aXRoIHRoZSBjb21tYW5kOjxicj4KYGBgY29uc29sZQpucG0gcnVuIHN0YXJ0CmBgYAo0LiBJbnRlZ3JhdGlvbiB0ZXN0cyBjYW4gYmUgcnVuIHdoZW4gdGhlIGFwcCBpcyBydW5uaW5nIHdpdGggdGhpcyBjb21tYW5kOjxicj4KYGBgY29uc29sZQpucG0gcnVuIHRlc3Q6aW50ZWdyYXRpb24KYGBgCg== readmeEtag: '"551645e2a891d8f25afe5c10c232d868e7f8455c"' readmeLastModified: Sun, 12 May 2024 16:01:44 GMT repositoryId: 606496910 description: null created: '2023-02-25T17:08:38Z' updated: '2024-05-12T16:03:12Z' language: TypeScript archived: true stars: 0 watchers: 0 forks: 0 owner: Sudokuru logo: https://avatars.githubusercontent.com/u/114212382?v=4 license: GPL-3.0 repoEtag: '"8147cb594e9e22906c62d6ffb951adbdc7020b7c60c5c09bb9b8dca21ccdc28d"' repoLastModified: Sun, 12 May 2024 16:03:12 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/majid-l/express-ecommerce-api v3: true id: 5b377bebb2f2eb1e1b487665beba3ecc repositoryMetadata: base64Readme: >- IyBFeHByZXNzLCBUeXBlU2NyaXB0LCBbUHJpc21hIE9STV0oaHR0cHM6Ly93d3cucHJpc21hLmlvLykgYW5kIE9wZW5BUEkgcHJvamVjdAoKVGhpcyBwcm9qZWN0IGZlYXR1cmVzIGEgKipbUkVTVGZ1bCBDUlVEIEFQSV0oaHR0cHM6Ly90YWxpcGh1cy52ZXJjZWwuYXBwL2FwaSkqKiB0aGF0IHByb2Nlc3NlcyBkYXRhIGZvciBhbiBlY29tbWVyY2UgYXBwbGljYXRpb24uCgojIyBLZXkgcHJvZHVjdCBmZWF0dXJlcwotIERlc2lnbmVkIGFuZCBmdWxseSBkb2N1bWVudGVkIHVzaW5nIFN3YWdnZXIgdG9vbHMgYW5kIE9wZW5BUEkgU3BlY2lmaWNhdGlvbi4gCiAgLSBGdWxsICoqW0FQSSBjb250cmFjdF0oLi9vcGVuYXBpLnlhbWwpKiogY2FuIGJlIGZvdW5kIFtoZXJlXSguL29wZW5hcGkueWFtbCkuCi0gUG93ZXJlZCBieSBWZXJjZWwncyBzZXJ2ZXJsZXNzIGZ1bmN0aW9ucywgaW5jbHVkaW5nIGEgUFNRTCBkYXRhYmFzZSBzZXJ2ZXIgZm9yIG1hbmFnaW5nIGFwcGxpY2F0aW9uIGRhdGEgKGNvbmZpZ3VyZWQgZm9yIFtzZXNzaW9uIHBlcnNpc3RlbmNlXSguL2F1dGgvc2Vzc2lvbi50cykpLgotIFtTZXNzaW9uIGFuZCBjb29raWUtYmFzZWQgYXV0aGVudGljYXRpb25dKC4vYXV0aC8pIGVuYWJsaW5nIHBlcnNpc3RlbnQgbG9naW5zLgotIFtNaWRkbGV3YXJlIGZ1bmN0aW9uc10oLi9taWRkbGV3YXJlKSBmb3IgZGF0YSB2YWxpZGF0aW9uIGFuZCB1c2VyIGF1dGhlbnRpY2F0aW9uLgogIC0gSW4tZGVwdGggZXJyb3IgaGFuZGxpbmcsIGNhc3RpbmcgYSB3aWRlIG5ldCBvdmVyIHBvdGVudGlhbCBlZGdlIGNhc2VzIGFuZCBzb3VyY2VzIG9mIGVycm9yLgotIFtEYXRhIG1vZGVsbGluZ10oLi9wcmlzbWEvc2NoZW1hLnByaXNtYSkgYW5kIFtkYXRhYmFzZSBtaWdyYXRpb25zXSguL3ByaXNtYS9taWdyYXRpb25zLzIwMjMwNzI4MTA1NDA4Xy9taWdyYXRpb24uc3FsKSB3aXRoIFByaXNtYSBPUk0uCi0gQ29tcHJlaGVuc2l2ZSBbaW50ZWdyYXRpb24gdGVzdGluZ10oLi9hcGlfdGVzdHMvKSwgYWNoaWV2aW5nICoqOTAlIHRlc3QgY292ZXJhZ2UqKiBhcyByZXBvcnRlZCBieSBJc3RhbmJ1bCdzICpueWMqIENMSS4KLSBQcm9ncmFtbWF0aWMgW2RhdGFiYXNlIHJlc2VlZGluZ10oL3ByaXNtYS9zZWVkLnRzKSB1c2luZyBbZHVtbXkgZGF0YV0oL3ByaXNtYS9kZXZfZGF0YS50cykuCgo8cCBmbG9hdD0ibGVmdCI+CiAgPGltZyBzcmM9Ii4vaW1hZ2VzL25vZGUuc3ZnIiB3aWR0aD0iNjAiIC8+CiAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CiAgPGltZyBzcmM9Ii4vaW1hZ2VzL3RzLnN2ZyIgd2lkdGg9IjYwIiAvPgogICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwogIDxpbWcgc3JjPSIuL2ltYWdlcy9wcmlzbWEuc3ZnIiB3aWR0aD0iMTQwIiAvPgogICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwogIDxpbWcgc3JjPSIuL2ltYWdlcy9wc3FsLnN2ZyIgd2lkdGg9IjYwIiAvPiAKICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKICA8aW1nIHNyYz0iLi9pbWFnZXMvbW9jaGEuc3ZnIiB3aWR0aD0iNjAiIC8+IAogICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwogIDxpbWcgc3JjPSIuL2ltYWdlcy9jaGFpLnN2ZyIgd2lkdGg9IjYwIiAvPgo8L3A+CgotLS0KIyMgRW5kcG9pbnRzCkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGF2YWlsYWJsZSBxdWVyeSBwYXJhbWV0ZXJzIGFuZCByZXF1ZXN0IGJvZHkgcmVxdWlyZW1lbnRzLCB2aXNpdCB0aGUgKipbQVBJIGJhc2UgdXJsXShodHRwczovL3RhbGlwaHVzLnZlcmNlbC5hcHAvYXBpKSoqLgoKTWFueSBvZiB0aGVzZSBlbmRwb2ludHMgcmVxdWlyZSBhdXRoZW50aWNhdGVkIGFjY2Vzcywgd2hpY2ggeW91IGNhbiBhY2NvbXBsaXNoIGJ5IGZpcnN0IHNpZ25pbmcgdXAgYW5kIHRoZW4gbG9nZ2luZyBpbi4KCmBgYGpzb24KLy8gMSkgU2VuZCBhIFBPU1QgcmVxdWVzdCB0byAvYXBpL3NpZ251cAp7CiAgInVzZXJuYW1lIjogLi4uLAogICJwYXNzd29yZCI6IC4uLiwKICAiZW1haWwiOiAuLi4gLAogICJuYW1lIjogLi4uCn0KCi8vIDIpIFNlbmQgYSBQT1NUIHJlcXVlc3QgdG8gL2FwaS9sb2dpbgp7CiAgInVzZXJuYW1lIjogLi4uIC8qIHlvdXIgdXNlcm5hbWUgZnJvbSBzdGVwIDEpICovLAogICJwYXNzd29yZCI6IC4uLiAvKiB5b3VyIHBhc3N3b3JkIGZyb20gc3RlcCAxKSAqLwp9CmBgYAoKfCBIVFRQIG1ldGhvZChzKSB8IFVSTAp8LS0tfC0tLXwKUE9TVCB8IC9hcGkvc2lnbnVwClBPU1QgfCAvYXBpL2xvZ2luClBPU1QgfCAvYXBpL2xvZ291dApHRVQgfCAvYXBpL3Byb2R1Y3RzCkdFVCB8IC9hcGkvcHJvZHVjdHMvYmVzdHNlbGxlcnMKR0VUIHwgL2FwaS9wcm9kdWN0cy86aWQKR0VUIHwgL2FwaS9wcm9kdWN0cy86aWQvcmV2aXdzCkdFVCwgUFVULCBERUxFVEUgfCAvYXBpL2N1c3RvbWVycy86aWQKR0VULCBQVVQgfCAvYXBpL2N1c3RvbWVycy86aWQvY2FydApHRVQsIFBVVCB8IC9hcGkvY3VzdG9tZXJzLzppZC93aXNobGlzdApHRVQsIFBPU1QgfCAvYXBpL2N1c3RvbWVycy86aWQvb3JkZXJzCkdFVCB8IC9hcGkvY3VzdG9tZXJzLzppZC9mYXZvcml0ZXMKR0VUIHwgL2FwaS9jdXN0b21lcnMvOmlkL29yZGVycy86b3JkZXJJZApHRVQgfCAvYXBpL2N1c3RvbWVycy86aWQvcmV2aWV3cwpQT1NUIHwgL2FwaS9jdXN0b21lcnMvOmlkL2FkZHJlc3NlcwpERUxFVEUgfCAvYXBpL2N1c3RvbWVycy86aWQvYWRkcmVzc2VzLzphZGRyZXNzSWQKR0VUIHwgL2FwaS9jYXRlZ29yaWVzCkdFVCB8IC9hcGkvc3VwcGxpZXJzCkdFVCwgUE9TVCB8IC9hcGkvcmV2aWV3cwpHRVQsIFBVVCwgREVMRVRFIHwgL2FwaS9yZXZpZXdzLzppZAoKLS0tCiMjIERhdGEgbW9kZWwKVGhpcyBpcyBhIHNpbXBsaWZpZWQgdmlldyBvZiB0aGUgZW50aXR5IHJlbGF0aW9uc2hpcHMgdGhhdCBleGlzdCB3aXRoaW4gdGhlIGRhdGFiYXNlLiBGb3IgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUsIGNvbnN1bHQgdGhlICoqW3NjaGVtYSBjb25maWd1cmF0aW9uXSgvcHJpc21hL3NjaGVtYS5wcmlzbWEpKiogYW5kICoqW21pZ3JhdGlvbl0oL3ByaXNtYS8vbWlncmF0aW9ucy8yMDIzMDcyODEwNTQwOF8vbWlncmF0aW9uLnNxbCkqKiBmaWxlcy4KCjxpbWcgc3JjPSIuL2ltYWdlcy9lcmQtZGFyay5zdmciIHdpZHRoPSI5MDAiIC8+IAoKLS0tCiMjIE1haW4gcHJvamVjdCBkZXBlbmRlbmNpZXMKfCBQYWNrYWdlIHwgUHVycG9zZQp8LS0tfC0tLXwKRXhwcmVzcyB8IFdlYiBBUEkgZnJhbWV3b3JrClByaXNtYSB8IE5vZGUuanMgJiBUeXBlU2NyaXB0IE9STQpTdXBlclRlc3QgfCBJbnRlZ3JhdGlvbiB0ZXN0aW5nCk1vY2hhIHwgVGVzdCBmcmFtZXdvcmsKQ2hhaSB8IEFzc2VydGlvbiBsaWJyYXJ5ClBhc3Nwb3J0LmpzIHwgQXV0aGVudGljYXRpb24gbWlkZGxld2FyZQpleHByZXNzLXNlc3Npb24gfCBTZXNzaW9uIG1pZGRsZXdhcmUKCi0tLQojIyBSdW5uaW5nIHRoZSBwcm9qZWN0IG9uIGxvY2FsaG9zdAo+IFRoaXMgcHJvamVjdCByZXF1aXJlcyBQU1FMIHRvIGJlIGluc3RhbGxlZCBsb2NhbGx5LgoKIyMjIFNldHVwIGluc3RydWN0aW9ucwoxKSBDbG9uZSBhbmQgZm9yayB0aGUgcmVwb3NpdG9yeSBhbmQgaW5zdGFsbCBhbGwgZGVwZW5kZW5jaWVzLgoyKSBDcmVhdGUgYSBsb2NhbCBlbXB0eSBQU1FMIGRhdGFiYXNlIGNhbGxlZCAqKmVjb21tZXJjZV9kYioqLgozKSBDcmVhdGUgYSAqKi5lbnYqKiBmaWxlIGluIHRoZSByb290IG9mIHRoZSByZXBvc2l0b3J5IHdpdGggNCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CmBgYApEQVRBQkFTRV9QUklTTUFfVVJMPXBvc3RncmVzcWw6Ly88VVNFUj46PHBhc3N3b3JkPkBsb2NhbGhvc3Q6NTQzMi9lY29tbWVyY2VfZGIKREFUQUJBU0VfVVJMX05PTl9QT09MSU5HPXBvc3RncmVzcWw6Ly88VVNFUj46PHBhc3N3b3JkPkBsb2NhbGhvc3Q6NTQzMi9lY29tbWVyY2VfZGIKU0VTU0lPTl9TRUNSRVQ9c2Vzc2lvbnNlY3JldApQT1JUPTMwMDAKYGBgCjQpIEZvciB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiBzdHJpbmdzLCBSZXBsYWNlIGBgYDxVU0VSPmBgYCB3aXRoIHRoZSBuYW1lIG9mIHlvdXIgbG9jYWwgZGF0YWJhc2UgdXNlciAoZS5nLiAqcG9zdGdyZXMqKSBhbmQgcmVwbGFjZSBgYGA8UEFTU1dPUkQ+YGBgIHdpdGggd2hhdGV2ZXIgcGFzc3dvcmQgeW91IHVzZWQgdG8gc2V0IHVwIHRoZSBsb2NhbCB1c2VyLgoKWW91IGNhbiBub3cgcnVuIHRoZSBzY3JpcHRzIGJlbG93IGFuZCBiZWdpbiB0byBleHBsb3JlIHRoZSBwcm9qZWN0LgoKIyMjIFJ1biB0aGUgRXhwcmVzcyBzZXJ2ZXIgaW4gZGV2ZWxvcG1lbnQgbW9kZS4KYGBgc2gKbnBtIHJ1biBkZXYKCiMgb3IKCm5wbSBydW4gc3RhcnQKYGBgCgojIyMgQ29tcGlsZSBhbmQgcnVuIE1vY2hhIHRlc3Qgc3VpdGUKYGBgc2gKbnBtIHJ1biB0ZXN0CmBgYAoKIyMjIFRlc3QgY292ZXJhZ2UgcmVwb3J0IApgYGBzaApucG0gcnVuIHRlc3Rjb3YKYGBgCgojIyMgVXBkYXRlIGRhdGFiYXNlIHNjaGVtYSAKVGhpcyBjb21tYW5kIHBlcmZvcm1zIDIgYWN0aW9uczogc3luY3MgdGhlIGRhdGFiYXNlIHNjaGVtYSB3aXRoIFByaXNtYSBzY2hlbWEgYW5kIHJlZ2VuZXJhdGVzIFByaXNtYSBDbGllbnQuCmBgYHNoCm5weCBwcmlzbWEgbWlncmF0ZSBkZXYKCiMgb3IKCnByaXNtYSBkYiBwdXNoCmBgYAoKIyMjIFNlZWQgZGF0YWJhc2UKYGBgc2gKbnB4IHByaXNtYSBkYiBzZWVkCmBgYAoKIyMjIFtQcmlzbWEgU3R1ZGlvXShodHRwczovL3d3dy5wcmlzbWEuaW8vc3R1ZGlvKSAoYnJvd3Nlci1iYXNlZCBHVUkgYW5kIGRhdGFiYXNlIHZpc3VhbGlzZXIpCmBgYHNoCm5weCBwcmlzbWEgc3R1ZGlvCmBgYA== readmeEtag: '"d9dd6f49f666a57f1365231b5059367b01abd035"' readmeLastModified: Sun, 18 Feb 2024 18:14:22 GMT repositoryId: 669093937 description: >- Express REST API featuring Prisma ORM, session-based authentication and integration testing with Mocha, Chai + SuperTest. Designed with Swagger tools and documented with OpenAPI 3.0.3. created: '2023-07-21T10:21:46Z' updated: '2023-08-05T14:13:45Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 1 owner: majid-L logo: https://avatars.githubusercontent.com/u/115797459?v=4 repoEtag: '"0d46cb8c2b5a84590958fd38b71c4eccdba84dbe253fe8dc18263f31e29e0ca3"' repoLastModified: Sat, 05 Aug 2023 14:13:45 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/3782291211/express-ecommerce-api - source: openapi3 tags repository: https://github.com/devolite/openapi-fetch-tauri v3: true id: d45ef2392f12b45cacd6fd21edb0594f repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWZldGNoLXRhdXJpCgpUaGlzIGxpYnJhcnkgaXMgYW4gW29wZW5hcGktZmV0Y2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9kcndwb3cvb3BlbmFwaS10eXBlc2NyaXB0L3RyZWUvbWFpbi9wYWNrYWdlcy9vcGVuYXBpLWZldGNoKSBjbG9uZSB0aGF0IHVzZXMgW1RhdXJpJ3MgSFRUUCBBUEldKGh0dHBzOi8vdGF1cmkuYXBwL3YxL2FwaS9qcy9odHRwLykuIEJlY2F1c2Ugb2YgdGhpcywgaXQgaXMgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBvcGVuYXBpLWZldGNoLCBhbmQgY2FuIGJlIHVzZWQgaW4gdGhlIHNhbWUgd2F5LiAgCl9UaGFua3MsIFtAZHJ3cG93XShodHRwczovL2dpdGh1Yi5jb20vZHJ3cG93KSFfCgo+IFshQ0FVVElPTl0KPiBEdWUgdG8gbGltaXRhdGlvbnMgaW4gdGhlIFRhdXJpIEhUVFAgQVBJLCB0aGlzIGxpYnJhcnkgKipvbmx5Kiogc3VwcG9ydHMgSlNPTiByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzLgoKIyMgVXNhZ2UKCkluIG9yZGVyIHRvIGdldCBzdGFydGVkLCBnZW5lcmF0ZSBhIHNwZWNpZmljYXRpb24gZmlsZSB1c2luZyBbb3BlbmFwaS10eXBlc2NyaXB0XShodHRwczovL2dpdGh1Yi5jb20vZHJ3cG93L29wZW5hcGktdHlwZXNjcmlwdC90cmVlL21haW4vcGFja2FnZXMvb3BlbmFwaS10eXBlc2NyaXB0KS4KCmBgYHNoCiMgTG9jYWwgc2NoZW1hLi4uCm5weCBvcGVuYXBpLXR5cGVzY3JpcHQgLi9wYXRoL3RvL215L3NjaGVtYS55YW1sIC1vIC4vcGF0aC90by9teS9zY2hlbSAjIG5wbQp5YXJuIGRseCBvcGVuYXBpLXR5cGVzY3JpcHQgLi9wYXRoL3RvL215L3NjaGVtYS5kLnRzIC1vIC4vcGF0aC90by9teS9zY2hlbWEudHMgIyBvciB5YXJuCnBucG0gZGx4IG9wZW5hcGktdHlwZXNjcmlwdCAuL3BhdGgvdG8vbXkvc2NoZW1hLmQudHMgLW8gLi9wYXRoL3RvL215L3NjaGVtYS50cyAjIG9yIHBucG0KIyDwn5qAIC4vcGF0aC90by9teS9zY2hlbWEueWFtbCAtPiAuL3BhdGgvdG8vbXkvc2NoZW1hLmQudHMgWzdtc10KCiMgUmVtb3RlIHNjaGVtYS4uLgpucHggb3BlbmFwaS10eXBlc2NyaXB0IGh0dHBzOi8vZXhhbXBsZS5jb20vc2NoZW1hLnlhbWwgLW8gLi9wYXRoL3RvL215L3NjaGVtYSAjIG5wbQp5YXJuIGRseCBvcGVuYXBpLXR5cGVzY3JpcHQgaHR0cHM6Ly9leGFtcGxlLmNvbS9zY2hlbWEuZC50cyAtbyAuL3BhdGgvdG8vbXkvc2NoZW1hLnRzICMgb3IgeWFybgpwbnBtIGRseCBvcGVuYXBpLXR5cGVzY3JpcHQgaHR0cHM6Ly9leGFtcGxlLmNvbS9zY2hlbWEuZC50cyAtbyAuL3BhdGgvdG8vbXkvc2NoZW1hLnRzICMgb3IgcG5wbQojIPCfmoAgaHR0cHM6Ly9leGFtcGxlLmNvbS9zY2hlbWEueWFtbCAtPiAuL3BhdGgvdG8vbXkvc2NoZW1hLmQudHMgWzdtc10KYGBgCgpUaGVuLCB1dGlsaXplIHRoZSBnZW5lcmF0ZWQgc3BlY2lmaWNhdGlvbiBmaWxlIHRvIG1ha2UgcmVxdWVzdHMuIEluIG9yZGVyIHRvIGRvIHRoaXMsIGNyZWF0ZSBhIGNsaWVudCBsaWtlIHNvOgoKYGBgdHMKaW1wb3J0IHR5cGUgeyBwYXRocyB9IGZyb20gJy4vcGF0aC90by9teS9zY2hlbWEnOwoKZXhwb3J0IGNvbnN0IGNsaWVudCA9IGNyZWF0ZUNsaWVudDxwYXRocz4oewogIGJhc2VVcmw6ICdodHRwczovL2V4YW1wbGUuY29tJwogIC8vIC4uLiBkZWZhdWx0IG9wdGlvbnMKfSk7CgojIG9yCgpleHBvcnQgY29uc3QgeyBHRVQsIFBPU1QsIERFTEVURSAvKiwgLi4uKi8gfSA9IGNyZWF0ZUNsaWVudDxwYXRocz4oewogIGJhc2VVcmw6ICdodHRwczovL2V4YW1wbGUuY29tJwogIC8vIC4uLiBkZWZhdWx0IG9wdGlvbnMKfSk7CmBgYAoKTm93LCB5b3UgY2FuIHVzZSB0aGUgY2xpZW50IHRvIG1ha2UgcmVxdWVzdHMgdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbjoKCmBgYHRzCmltcG9ydCB7IGNsaWVudCB9IGZyb20gJy4vY2xpZW50JzsKCmNvbnN0IHsgZGF0YSwgZXJyb3IgLyosIHJlc3BvbnNlKi8gfSA9IGF3YWl0IGNsaWVudC5HRVQoJy9wYXRoL3RvL2VuZHBvaW50Jyk7CgojIG9yCgppbXBvcnQgeyBHRVQgfSBmcm9tICcuL2NsaWVudCc7Cgpjb25zdCB7IGRhdGEsIGVycm9yIC8qLCByZXNwb25zZSovICB9ID0gYXdhaXQgR0VUKCcvcGF0aC90by9lbmRwb2ludCcpOwpgYGAKCkZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIFtvcGVuYXBpLWZldGNoIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vb3BlbmFwaS10cy5wYWdlcy5kZXYvb3BlbmFwaS1mZXRjaC8pLgoKIyMgQ3JlZGl0cwoKQmlnIHRoYW5rcyB0byBbQGRyd3Bvd10oaHR0cHM6Ly9naXRodWIuY29tL2Ryd3BvdykgZm9yIGNyZWF0aW5nIHRoZSBvcmlnaW5hbCBvcGVuYXBpLWZldGNoIGFuZCBvcGVuYXBpLXR5cGVzY3JpcHQgbGlicmFyeSEK readmeEtag: '"3e7b77599e8ac5cf84dac44d0f04cb3db2bc9726"' readmeLastModified: Tue, 26 Mar 2024 13:23:46 GMT repositoryId: 770410140 description: >- 💡 Fast, typesafe fetch client for your OpenAPI schema. Works with Tauri HTTP API. created: '2024-03-11T14:01:14Z' updated: '2025-06-22T08:27:57Z' language: TypeScript archived: true stars: 0 watchers: 1 forks: 1 owner: devolite logo: https://avatars.githubusercontent.com/u/164477852?v=4 license: MIT repoEtag: '"6cf015753e34372552e75684b5bea183d09a48cde7827b2989c9678517465b0f"' repoLastModified: Sun, 22 Jun 2025 08:27:57 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/bddvlpr/openapi-fetch-tauri - source: openapi3 tags repository: https://github.com/stephane-segning/sma v3: true id: 7a593313d75d782c47e19b215fc70eef repositoryMetadata: base64Readme: IyBTY2hvb2wgTWFuYWdlbWVudCBBcHAKCgo= readmeEtag: '"5b12edf2c5f3ff95a33d253df167e7411cb8fae1"' readmeLastModified: Mon, 01 Apr 2024 10:42:34 GMT repositoryId: 780374108 description: >- This project is a sample project to demonstrate the technologies. We're using ReactJS and Spring Boot. created: '2024-04-01T10:42:51Z' updated: '2024-04-01T10:46:42Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: stephane-segning logo: https://avatars.githubusercontent.com/u/26783557?v=4 repoEtag: '"24710ad89d01a5162503aad3cb4312944305a28761855006ee6482dba5bc9f25"' repoLastModified: Mon, 01 Apr 2024 10:46:42 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/markelca/hui-api v3: true repositoryMetadata: base64Readme: >- IyBodWktYXBpClRoaXMgaXMgdGhlIHNlcnZlciBzaWRlIFJFU1QgQVBJIG1hZGUgZm9yIHRoZSBIVUkgUHJveWVjdC4gQnVpbHQgd2l0aCBTcHJpbmcgQm9vdCBhbmQgSGliZXJuYXRlLgoKCiMjIyBTdGFjayBvZiB0ZWNobm9sb2dpZXMgdXNlZDoKCiFbSmF2YV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9qYXZhLXJlZC5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPWphdmEmbG9nb0NvbG9yPXdoaXRlKQohW1NwcmluZ10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9zcHJpbmctJTIzNkRCMzNGLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289c3ByaW5nJmxvZ29Db2xvcj13aGl0ZSkKIVtIaWJlcm5hdGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvaGliZXJuYXRlLWJyb3duLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289aGliZXJuYXRlJmxvZ29Db2xvcj13aGl0ZSkKIVtQb3N0bWFuXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3Bvc3RtYW4tb3JhbmdlLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289cG9zdG1hbiZsb2dvQ29sb3I9d2hpdGUpCiFbSmlyYV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9qaXJhLWJsdWUuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1qaXJhJmxvZ29Db2xvcj13aGl0ZSkKIVtDb25mbHVlbmNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NvbmZsdWVuY2UtZ3JleS5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPWNvbmZsdWVuY2UmbG9nb0NvbG9yPXdoaXRlKQohW1BIUG15YWRtaW5dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvUEhQbXlhZG1pbi1GRjAwRkYuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1waHBteWFkbWluJmxvZ29Db2xvcj13aGl0ZSkKCgpQb3N0bWFuIEFQSSBSZWZlcmVuY2U6IGh0dHBzOi8vd3d3LnBvc3RtYW4uY29tL2h1aS1hcHAKCi0tLQoKIyMgRGV2ZWxvcG1lbnQgSW5zdGFsYXRpb24KMS4gQ29weSB0aGUgZmlsZSBgYXBwbGljYXRpb24ucHJvcGVydGllcy5zYW1wbGVgIGluIHRoZSBzYW1lIGZvbGRlciAqKGFwcC9zcmMvbWFpbi9yZXNvdXJjZXMpKiBhbmQgbmFtZSBpdCBgYXBwbGljYXRpb24ucHJvcGVydGllc2AKCjIuIENoYW5nZSB0aGUgZm9sbG93aW5nIHZhbHVlcyBmb3IgeW91ciBlbnZpcm9tZW50IG9uZXMuCi0gc2VydmVyLnBvcnQKLSAgc3ByaW5nLmRhdGFzb3VyY2UudXJsCi0gIHNwcmluZy5kYXRhc291cmNlLnVzZXJuYW1lCi0gIHNwcmluZy5kYXRhc291cmNlLnBhc3N3b3JkCmBgYHByb3BlcnRpZXMKc2VydmVyLnBvcnQ9PHBvcnQ+CnNwcmluZy5qcGEuc2hvdy1zcWw9dHJ1ZQpzcHJpbmcuanBhLnByb3BlcnRpZXMuaGliZXJuYXRlLmZvcm1hdF9zcWw9dHJ1ZQpzcHJpbmcuZGF0YXNvdXJjZS5kcml2ZXItY2xhc3MtbmFtZT1jb20ubXlzcWwuY2ouamRiYy5Ecml2ZXIKc3ByaW5nLmRhdGFzb3VyY2UudXJsPWpkYmM6bXlzcWw6Ly9sb2NhbGhvc3Q6MzMwNi88ZGF0YWJhc2U+P2NyZWF0ZURhdGFiYXNlSWZOb3RFeGlzdD10cnVlJnVzZVNTTD1mYWxzZQpzcHJpbmcuZGF0YXNvdXJjZS51c2VybmFtZT08dXNlcj4Kc3ByaW5nLmRhdGFzb3VyY2UucGFzc3dvcmQ9PHBhc3N3b3JkPgpzZXJ2ZXIuZXJyb3IuaW5jbHVkZS1tZXNzYWdlPWFsd2F5cwpzcHJpbmcuanBhLmhpYmVybmF0ZS5kZGwtYXV0bz1jcmVhdGUtZHJvcApzcHJpbmcuanBhLnByb3BlcnRpZXMuaGliZXJuYXRlLmRpYWxlY3Q9b3JnLmhpYmVybmF0ZS5kaWFsZWN0Lk15U1FMNUlubm9EQkRpYWxlY3QKc3ByaW5nLmphY2tzb24uc2VyaWFsaXphdGlvbi5GQUlMX09OX0VNUFRZX0JFQU5TPWZhbHNlCgpgYGAKMy4gUnVuIHRoZSBhcHBsaWNhdGlvbiB3aXRoIHRoZSBwcm9wZXJ0eSBgc3ByaW5nLmpwYS5oaWJlcm5hdGUuZGRsLWF1dG89Y3JlYXRlLWRyb3BgIHRvIGNyZWF0ZSBhbmQgcG9wdWxhdGUgdGhlIGRhdGFiYXNlLCB0aGVuIGNoYW5nZSB0aGUgdmFsdWUgdG8gYHVwZGF0ZWAgaWYgeW91IGRvbnQgd2FudCB0byBjcmVhdGUgdGhlIGRhdGFiYXNlIGVhY2ggdGltZSBpdCBydW5zLgo0LiBBbHNvIGNvbW1lbnQgdGhpcyB0aHJlZSBsaW5lcyBpbiB0aGUgZmlsZSBgYXBwL3NyYy9tYWluL2phdmEvY29tL2dydXBvNS9odWlhcGkvY29uZmlnL0RCQ29uZmlnLmphdmFgIHNvIGl0IGRvZXNuJ3QgY2F1c2UgYSBjb25mbGljdCBpbnNlcnRpbmcgdGhlIGluaXRpYWwgZGF0YS4KYGBgamF2YQogQEJlYW4KICAgIENvbW1hbmRMaW5lUnVubmVyIGNvbW1hbmRMaW5lUnVubmVyKCkgewogICAgICAgIHJldHVybiBhcmdzIC0+IHsKICAgICAgICAgICAgLy9jYXRlZ29yeVJlcG9zaXRvcnkuc2F2ZUFsbCggZ2V0SW5pdGlhbENhdGVnb3JpZXMoKSApOwogICAgICAgICAgICAvL3VzZXJSZXBvc2l0b3J5LnNhdmVBbGwoIGdldEluaXRpYWxVc2VycygpICk7CiAgICAgICAgICAgIC8vZXZlbnRSZXBvc2l0b3J5LnNhdmVBbGwoIGdldEluaXRpYWxFdmVudHMoKSApOwogICAgICAgIH07CiAgICB9CmBgYAoK readmeEtag: '"42a2b1f05f7bdc249f57cfe2f7aa6e5a2f34467a"' readmeLastModified: Thu, 09 Jun 2022 14:51:42 GMT repositoryId: 463172255 description: >- Backend API using Spring Boot + Hibernate for the HUI social events management proyect. created: '2022-02-24T14:08:30Z' updated: '2024-04-28T20:51:18Z' language: Java archived: false stars: 0 watchers: 1 forks: 1 owner: markelca logo: https://avatars.githubusercontent.com/u/76633510?v=4 repoEtag: '"52a2be7e89fa759fc85b02cab0178b76b9fe0a83b9b944aa83f79ff5914e0a9d"' repoLastModified: Sun, 28 Apr 2024 20:51:18 GMT foundInMaster: true category: - Server - Server Implementations id: d9fe16857ea3f56e142dbfb44540e084 - source: https://openapi.tools/ name: MockLab category: Mock language: SaaS link: https://www.mocklab.io/docs/getting-started/ repository: https://www.mocklab.io/docs/getting-started/ source_description: SaaS platform to upload your spec to create a mock server v2: true v3: true foundInMaster: true id: fbcb114edb9df0275737eace42893e58 - source: https://openapi.tools/ name: oas-normalize category: - Parsers - Description Validators - Converters language: - JavaScript - TypeScript repository: https://github.com/readmeio/oas-normalize source_description: >- Tooling for converting, validating, and parsing OpenAPI, Swagger, and Postman API definitions v2: true v3: true v3_1: true id: 463179f425347a95bac9bee6af02cc94 repositoryMetadata: base64Readme: >- PiAqKldhcm5pbmcqKgo+Cj4gYG9hcy1ub3JtYWxpemVgIGhhcyBtb3ZlZCEgVGhlIHNvdXJjZSBmb3IgdGhpcyBsaWJyYXJ5IG5vdyBsaXZlcyBhdCBodHRwczovL2dpdGh1Yi5jb20vcmVhZG1laW8vb2FzLgogCjxwIGFsaWduPSJjZW50ZXIiPgogIDxhIGhyZWY9Imh0dHBzOi8vbnBtLmltL29hcy1ub3JtYWxpemUiPgogICAgPGltZyBzcmM9Imh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzMzNzYyLzIwMDQzNDYyMi0yMzk0Njg2OS0xOTY1LTQ2ZjgtOGRlYi1mMjg0YjhkMGI5MmMucG5nIiBhbHQ9Im9hcy1ub3JtYWxpemUiIC8+CiAgPC9hPgo8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICBUb29saW5nIGZvciBjb252ZXJ0aW5nLCB2YWxpZGF0aW5nLCBhbmQgcGFyc2luZyBPcGVuQVBJLCBTd2FnZ2VyLCBhbmQgUG9zdG1hbiBBUEkgZGVmaW5pdGlvbnMKPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9ucG0uaW0vb2FzLW5vcm1hbGl6ZSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3Yvb2FzLW5vcm1hbGl6ZT9zdHlsZT1mb3ItdGhlLWJhZGdlIiBhbHQ9Ik5QTSBWZXJzaW9uIj48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9ucG0uaW0vb2FzLW5vcm1hbGl6ZSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbm9kZS92L29hcy1ub3JtYWxpemU/c3R5bGU9Zm9yLXRoZS1iYWRnZSIgYWx0PSJOb2RlIFZlcnNpb24iPjwvYT4KICA8YSBocmVmPSJodHRwczovL25wbS5pbS9vYXMtbm9ybWFsaXplIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9vYXMtbm9ybWFsaXplP3N0eWxlPWZvci10aGUtYmFkZ2UiIGFsdD0iTUlUIExpY2Vuc2UiPjwvYT4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcmVhZG1laW8vb2FzLW5vcm1hbGl6ZSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL3JlYWRtZWlvL29hcy1ub3JtYWxpemUvY2kueW1sP2JyYW5jaD1tYWluJnN0eWxlPWZvci10aGUtYmFkZ2UiIGFsdD0iQnVpbGQgc3RhdHVzIj48L2E+CjwvcD4KCjxwIGFsaWduPSJjZW50ZXIiPgogIDxhIGhyZWY9Imh0dHBzOi8vcmVhZG1lLmNvbSI+PGltZyBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9yZWFkbWVpby8uZ2l0aHViL21haW4vb3NzLWJhZGdlLnN2ZyIgLz48L2E+CjwvcD4KCiMjIEluc3RhbGxhdGlvbgoKYGBgYmFzaApucG0gaW5zdGFsbCBvYXMtbm9ybWFsaXplCmBgYAoKIyMgVXNhZ2UKCmBgYGphdmFzY3JpcHQKaW1wb3J0IE9BU05vcm1hbGl6ZSBmcm9tICdvYXMtbm9ybWFsaXplJzsKLy8gY29uc3QgeyBkZWZhdWx0OiBPQVNOb3JtYWxpemUgfSA9IHJlcXVpcmUoJ29hcy1ub3JtYWxpemUnKTsgLy8gSWYgeW91J3JlIHVzaW5nIENKUy4KCmNvbnN0IG9hcyA9IG5ldyBPQVNOb3JtYWxpemUoCiAgJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL21hc3Rlci9leGFtcGxlcy92My4wL3BldHN0b3JlLWV4cGFuZGVkLnlhbWwnLAogIC8vIC4uLm9yIGEgc3RyaW5nLCBwYXRoLCBKU09OIGJsb2IsIHdoYXRldmVyIHlvdSd2ZSBnb3QuCik7CgpvYXMKICAudmFsaWRhdGUoKQogIC50aGVuKGRlZmluaXRpb24gPT4gewogICAgLy8gRGVmaW5pdGlvbiB3aWxsIGFsd2F5cyBiZSBKU09OLCBhbmQgdmFsaWQuCiAgICBjb25zb2xlLmxvZyhkZWZpbml0aW9uKTsKICB9KQogIC5jYXRjaChlcnIgPT4gewogICAgY29uc29sZS5sb2coZXJyKTsKICB9KTsKYGBgCgojIyMgYCNidW5kbGUoKWAKCj4gKipOb3RlKioKPgo+IEJlY2F1c2UgUG9zdG1hbiBjb2xsZWN0aW9ucyBkb24ndCBzdXBwb3J0IGAkcmVmYCBwb2ludGVycywgdGhpcyBtZXRob2Qgd2lsbCBhdXRvbWF0aWNhbGx5IHVwY29udmVydCBhIFBvc3RtYW4gY29sbGVjdGlvbiB0byBPcGVuQVBJIGlmIHN1cHBsaWVkIG9uZS4KCkJ1bmRsZSB1cCB0aGUgZ2l2ZW4gQVBJIGRlZmluaXRpb24sIHJlc29sdmluZyBhbnkgZXh0ZXJuYWwgYCRyZWZgIHBvaW50ZXJzIGluIHRoZSBwcm9jZXNzLgoKYGBganMKYXdhaXQgb2FzLmJ1bmRsZSgpLnRoZW4oZGVmaW5pdGlvbiA9PiB7CiAgY29uc29sZS5sb2coZGVmaW5pdGlvbik7Cn0pOwpgYGAKCiMjIyBgI2RlcmVmKClgCgo+ICoqTm90ZSoqCj4KPiBCZWNhdXNlIFBvc3RtYW4gY29sbGVjdGlvbnMgZG9uJ3Qgc3VwcG9ydCBgJHJlZmAgcG9pbnRlcnMsIHRoaXMgbWV0aG9kIHdpbGwgYXV0b21hdGljYWxseSB1cGNvbnZlcnQgYSBQb3N0bWFuIGNvbGxlY3Rpb24gdG8gT3BlbkFQSSBpZiBzdXBwbGllZCBvbmUuCgpEZXJlZmVyZW5jZSB0aGUgZ2l2ZW4gQVBJIGRlZmluaXRpb24sIHJlc29sdmluZyBhbGwgYCRyZWZgIHBvaW50ZXJzIGluIHRoZSBwcm9jZXNzLgoKYGBganMKYXdhaXQgb2FzLmRlcmVmKCkudGhlbihkZWZpbml0aW9uID0+IHsKICBjb25zb2xlLmxvZyhkZWZpbml0aW9uKTsKfSk7CmBgYAoKIyMjIGAjdmFsaWRhdGUoeyBjb252ZXJ0VG9MYXRlc3Q/OiBib29sZWFuIH0pYAoKVmFsaWRhdGUgYW5kIG9wdGlvbmFsbHkgY29udmVydCB0byBPcGVuQVBJLCBhIGdpdmVuIEFQSSBkZWZpbml0aW9uLiBUaGlzIHN1cHBvcnRzIFN3YWdnZXIgMi4wLCBPcGVuQVBJIDMueCBBUEkgZGVmaW5pdGlvbnMgYXMgd2VsbCBhcyBQb3N0bWFuIDIueCBjb2xsZWN0aW9ucy4KClBsZWFzZSBub3RlIHRoYXQgaWYgeW91J3ZlIHN1cHBsaWVkIGEgUG9zdG1hbiBjb2xsZWN0aW9uIHRvIHRoZSBsaWJyYXJ5IGl0IHdpbGwgKiphbHdheXMqKiBiZSBjb252ZXJ0ZWQgdG8gT3BlbkFQSSwgdXNpbmcgW0ByZWFkbWUvcG9zdG1hbi10by1vcGVuYXBpXShodHRwczovL25wbS5pbS9AcmVhZG1lL3Bvc3RtYW4tdG8tb3BlbmFwaSksIGFuZCB3ZSB3aWxsIG9ubHkgdmFsaWRhdGUgcmVzdWx0aW5nIE9wZW5BUEkgZGVmaW5pdGlvbi4KCmBgYGpzCmF3YWl0IG9hcy52YWxpZGF0ZSgpLnRoZW4oZGVmaW5pdGlvbiA9PiB7CiAgY29uc29sZS5sb2coZGVmaW5pdGlvbik7Cn0pOwpgYGAKCiMjIyMgT3B0aW9ucwoKPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CnwgT3B0aW9uIHwgVHlwZSB8IERlc2NyaXB0aW9uIHwKfCA6LS0tIHwgOi0tLSB8IDotLS0gfAp8IGBjb252ZXJ0VG9MYXRlc3RgIHwgQm9vbGVhbiB8IEJ5IGRlZmF1bHQgYCN2YWxpZGF0ZWAgd2lsbCBub3QgdXBjb252ZXJ0IFN3YWdnZXIgQVBJIGRlZmluaXRpb25zIHRvIE9wZW5BUEkgc28gaWYgeW91IHdpc2ggZm9yIHRoaXMgdG8gaGFwcGVuLCBzdXBwbHkgYHRydWVgLiB8CjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4KCiMjIyMgRXJyb3IgSGFuZGxpbmcKCkZvciB2YWxpZGF0aW9uIGVycm9ycywgd2hlbiBhdmFpbGFibGUsIHlvdSdsbCBnZXQgYmFjayBhbiBvYmplY3Q6CgpgYGBqcwp7CiAgImRldGFpbHMiOiBbCiAgICAvLyBBanYgcGF0aGluZyBlcnJvcnMuIEZvciBleGFtcGxlOgogICAgLyogewogICAgICAiaW5zdGFuY2VQYXRoIjogIi9jb21wb25lbnRzL3NlY3VyaXR5U2NoZW1lcy90bHNBdXRoIiwKICAgICAgInNjaGVtYVBhdGgiOiAiIy9wcm9wZXJ0aWVzL3NlY3VyaXR5U2NoZW1lcy9wYXR0ZXJuUHJvcGVydGllcy8lNUUlNUJhLXpBLVowLTklNUMuJTVDLV8lNUQlMkIlMjQvb25lT2YiLAogICAgICAia2V5d29yZCI6ICJvbmVPZiIsCiAgICAgICJwYXJhbXMiOiB7ICJwYXNzaW5nU2NoZW1hcyI6IG51bGwgfSwKICAgICAgIm1lc3NhZ2UiOiAibXVzdCBtYXRjaCBleGFjdGx5IG9uZSBzY2hlbWEgaW4gb25lT2YiCiAgICB9LCAqLwogIF0KfQpgYGAKCmBtZXNzYWdlYCBpcyBhbG1vc3QgYWx3YXlzIHRoZXJlLCBidXQgYHBhdGhgIGlzIGxlc3MgZGVwZW5kYWJsZS4KCiMjIyBgI3ZlcnNpb24oKWAKCkxvYWQgYW5kIHJldHJpZXZlIHZlcnNpb24gaW5mb3JtYXRpb24gYWJvdXQgYSBzdXBwbGllZCBBUEkgZGVmaW5pdGlvbi4KCmBgYGpzCmF3YWl0IG9hcy52ZXJzaW9uKCkudGhlbigoeyBzcGVjaWZpY2F0aW9uLCB2ZXJzaW9uIH0pID0+IHsKICBjb25zb2xlLmxvZyhzcGVjaWZpY2F0aW9uKTsgLy8gb3BlbmFwaQogIGNvbnNvbGUubG9nKHZlcnNpb24pOyAvLyAzLjEuMAp9KTsKYGBgCgojIyMgT3B0aW9ucwoKIyMjIyMgRW5hYmxlIGxvY2FsIHBhdGhzCgpGb3Igc2VjdXJpdHkgcmVhc29ucywgeW91IG5lZWQgdG8gb3B0IGludG8gYWxsb3dpbmcgZmV0Y2hpbmcgYnkgYSBsb2NhbCBwYXRoLiBUbyBlbmFibGUgaXQgc3VwcGx5IHRoZSBgZW5hYmxlUGF0aHNgIG9wdGlvbiB0byB0aGUgY2xhc3MgaW5zdGFuY2U6CgpgYGBqcwpjb25zdCBvYXMgPSBuZXcgT0FTTm9ybWFsaXplKCcuL3BldHN0b3JlLmpzb24nLCB7IGVuYWJsZVBhdGhzOiB0cnVlIH0pOwpgYGAKCiMjIyMjIENvbG9yaXplZCBlcnJvcnMKCklmIHlvdSB3aXNoIGVycm9ycyBmcm9tIGAudmFsaWRhdGUoKWAgdG8gYmUgc3R5bGVkIGFuZCBjb2xvcml6ZWQsIHN1cHBseSBgY29sb3JpemVFcnJvcnM6IHRydWVgIHRvIHlvdXIgaW5zdGFuY2Ugb2YgYE9BU05vcm1hbGl6ZWA6CgpgYGBqcwpjb25zdCBvYXMgPSBuZXcgT0FTTm9ybWFsaXplKCdodHRwczovL2V4YW1wbGUuY29tL3BldHN0b3JlLmpzb24nLCB7CiAgY29sb3JpemVFcnJvcnM6IHRydWUsCn0pOwpgYGAKCkVycm9yIG1lc3NhZ2VzIHdpbGwgbG9vayBsaWtlIHN1Y2g6Cgo8aW1nIHNyYz0iaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMzM3NjIvMTM3Nzk2NjQ4LTdlMTE1N2MyLWNlZTQtNDY2ZS05MTI5LWRkMmE3NDNkZDE2My5wbmciIHdpZHRoPSI2MDAiIC8+Cg== readmeEtag: '"792a400fc9482536a4e6b3899ff273c05ffdf20e"' readmeLastModified: Thu, 05 Oct 2023 17:29:18 GMT repositoryId: 134783835 description: >- Tooling for converting, validating, and parsing OpenAPI, Swagger, and Postman API definitions. created: '2018-05-25T00:48:24Z' updated: '2025-07-18T14:03:24Z' language: TypeScript archived: true stars: 37 watchers: 16 forks: 7 owner: readmeio logo: https://avatars.githubusercontent.com/u/6878153?v=4 license: MIT repoEtag: '"c31977508f096cedbb24696f029f1cd4067e393b940f5e23e06d371e9f21f63b"' repoLastModified: Fri, 18 Jul 2025 14:03:24 GMT foundInMaster: true - source: https://openapi.tools/ name: Fitting category: - Testing - Data Validators - Learning language: Ruby repository: https://github.com/matchtechnologies/fitting link: https://github.com/matchtechnologies/fitting source_description: >- Library add improve test log for RSpec and WebMock, validate its according to API Blueprint and Open API, show the documentation coverage with log. v2: true v3: true v3_1: true id: cc617beb32d7138f1537294767083922 repositoryMetadata: base64Readme: >- IyBGaXR0aW5nCgo8aW1nIGFsaWduPSJyaWdodCIgd2lkdGg9IjE5MiIgaGVpZ2h0PSIxOTIiCmFsdD0iRml0dGluZyBhdmF0YXI6IERvY3VtZW50cyB3aXRoIGhhbmdlcnMiCnNyYz0iLi9pbWFnZXMvbG9nby5wbmciPgoKTm90ZTogVGhlIHByb2plY3QgaGFzIGJlZW4gbW92ZWQgdG8gaHR0cHM6Ly9naXRodWIuY29tL3R1d2lsb2YvZml0dGluZwoKTGlicmFyeSBhZGQgaW1wcm92ZSB0ZXN0IGxvZywgdmFsaWRhdGUgaXRzIGFjY29yZGluZyB0byB5b3VyIEFQSSBkb2N1bWVudGF0aW9uLCBzaG93IHRoZSBkb2N1bWVudGF0aW9uIGNvdmVyYWdlIHdpdGggbG9nLgoKVGVzdCBsb2cgc2V0dGluZyBzdXBwb3J0cyBSU3BlYyB0ZXN0IGFuZCBXZWJNb2NrIHN0dWJiaW5nIGZvciBSdWJ5IE9uIFJhaWxzIGFwcGxpY2F0aW9uLCBBUEkgZG9jdW1lbnRhdGlvbiBzdXBwb3J0cyBBUEkgQmx1ZXByaW50IGFuZCBPcGVuQVBJLgoKVGhpcyByZWR1Y2VzIHRoZSBjb3N0cyBvZiBzdXBwb3J0LCB0ZXN0ZXJzIGFuZCBhbmFseXN0cy4KCkxvZwpgYGB0ZXh0CkZJVFRJTkcgaW5jb21pbmcgcmVxdWVzdCB7Im1ldGhvZCI6IlBPU1QiLCJwYXRoIjoiL3B1YmxpYy9hcGkvdjEvaW5ib3hlcy90RVg1SmlaeWNlaXd1S01pMW9OOVNmOFMvY29udGFjdHMiLCJib2R5Ijp7fSwicmVzcG9uc2UiOnsic3RhdHVzIjoyMDAsImNvbnRlbnRfdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLCJib2R5Ijp7InNvdXJjZV9pZCI6IjAwZGJmMThkLTg3OWUtNDdjYi1hYzQ1LWU5YWVjZTI2NmViMSIsInB1YnN1Yl90b2tlbiI6Imt0bjZZd1B1czU3SkRmNGU1OWVGUG9tNSIsImlkIjozMjkxLCJuYW1lIjoic2h5LXN1cmYtNDAxIiwiZW1haWwiOm51bGwsInBob25lX251bWJlciI6bnVsbH19LCJ0aXRsZSI6Ii4vc3BlYy9jb250cm9sbGVycy9wdWJsaWMvYXBpL3YxL2luYm94L2NvbnRhY3RzX2NvbnRyb2xsZXJfc3BlYy5yYjo5IiwiZ3JvdXAiOiIuL3NwZWMvY29udHJvbGxlcnMvcHVibGljL2FwaS92MS9pbmJveC9jb250YWN0c19jb250cm9sbGVyX3NwZWMucmIiLCJob3N0Ijoid3d3LmV4YW1wbGUuY29tIn0KRklUVElORyBvdXRnb2luZyByZXF1ZXN0IHsibWV0aG9kIjoiUE9TVCIsInBhdGgiOiIvdjEvb3JnYW5pemF0aW9ucy9vcmdfaWQvbWVldGluZyIsImJvZHkiOnt9LCJyZXNwb25zZSI6eyJzdGF0dXMiOjIwMCwiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24vanNvbiIsImJvZHkiOnsic3VjY2VzcyI6dHJ1ZSwiZGF0YSI6eyJtZWV0aW5nIjp7ImlkIjoibWVldGluZ19pZCIsInJvb21OYW1lIjoicm9vbV9uYW1lIn19fX0sInRpdGxlIjoiLi9zcGVjL2NvbnRyb2xsZXJzL2FwaS92MS9hY2NvdW50cy9pbnRlZ3JhdGlvbnMvZHl0ZV9jb250cm9sbGVyX3NwZWMucmI6NTAiLCJncm91cCI6Ii4vc3BlYy9jb250cm9sbGVycy9hcGkvdjEvYWNjb3VudHMvaW50ZWdyYXRpb25zL2R5dGVfY29udHJvbGxlcl9zcGVjLnJiIiwiaG9zdCI6ImFwaS5jbHVzdGVyLmR5dGUuaW4ifQpgYGAKCnZhbGlkYXRpb24KYGBgY29uc29sZQpGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYuRkZGLi5GRkZGRkZGRkZGLi4uLkYuLi4uLi4uRi4uLkZGLi4uLi5GLi4uRi4uLi5GLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYuLkZGLkYuLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uRkYuLi4uLi4uLkZGRi4uLkZGRkYuLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uLi4uLi4uRkZGRkZGRkZGRkYuLkZGRkZGRi4uRkZGRkZGRkZGRkZGRkZGRkYuLi4uLi4uRkZGRkZGLi4uLi4uLi4uLi4uLkZGRkZGRkZGRkZGRi4uLi5GLi4uLi4uLi5GRkYuRi4uLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uLi4uLi4uLi4uLkZGLi4uLi4uLi5GRkYuLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi4uLkZGRkZGRi4uLi4uLkYuLi4uLi4uLi4uLi5GRkZGLi4uLi4uLi5GRkZGRkZGRkZGRkZGRi4uLi4uRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYuLkZGLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uLi4uRkYuLi4uLi4uLi4uRkZGRkZGRkZGRkZGRkZGRkZGLi4uRkZGRi4uLi4uLi4uLi4uLi4uLkYuRi4uLi5GRi4uRkZGRkZGRkYKCiAgMSkgRml0dGluZzo6RG9jOjpOb3RGb3VuZCBsb2cgZXJyb3I6Cgpob3N0OiB3d3cuZXhhbXBsZS5jb20KbWV0aG9kOiBQT1NUCnBhdGg6IC9wdWJsaWMvYXBpL3YxL2luYm94ZXMve2luYm94X2lkZW50aWZpZXJ9L2NvbnRhY3RzCmNvZGU6IDIwMAoKY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uCgpqc29uLXNjaGVtYTogewogICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyIsCiAgInR5cGUiOiAib2JqZWN0IiwKICAicHJvcGVydGllcyI6IHsKICAgICJpZCI6IHsKICAgICAgInR5cGUiOiAiaW50ZWdlciIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgY29udGFjdCIKICAgIH0sCiAgICAic291cmNlX2lkIjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHNlc3Npb24gaWRlbnRpZmllciBvZiB0aGUgY29udGFjdCIKICAgIH0sCiAgICAibmFtZSI6IHsKICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgImRlc2NyaXB0aW9uIjogIk5hbWUgb2YgdGhlIGNvbnRhY3QiCiAgICB9LAogICAgImVtYWlsIjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiRW1haWwgb2YgdGhlIGNvbnRhY3QiCiAgICB9LAogICAgInB1YnN1Yl90b2tlbiI6IHsKICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSB0b2tlbiB0byBiZSB1c2VkIHRvIGNvbm5lY3QgdG8gY2hhdHdvb3Qgd2Vic29ja2V0IgogICAgfQogIH0KfQoKYm9keTogewogICJzb3VyY2VfaWQiOiAiYzllOGMzMWYtMDZkZi00OWI0LThmYjktNDQ2NjQ1N2FlNjViIiwKICAicHVic3ViX3Rva2VuIjogIlpnYzdERXZhajVUa2daMWE0QzdBdkpYbyIsCiAgImlkIjogMzI5MywKICAibmFtZSI6ICJyZXN0bGVzcy1zbm93Zmxha2UtNjcwIiwKICAiZW1haWwiOiBudWxsLAogICJwaG9uZV9udW1iZXIiOiBudWxsCn0KCmVycm9yIFsKICAiVGhlIHByb3BlcnR5ICcjL2VtYWlsJyBvZiB0eXBlIG51bGwgZGlkIG5vdCBtYXRjaCB0aGUgZm9sbG93aW5nIHR5cGU6IHN0cmluZyBpbiBzY2hlbWEgZTU2YjdlNjUtZDcwYy01ZjdhLWE5NmMtOTgyZGY1ZjhmMmY3IgpdCgouLi4KCjgwNCBleGFtcGxlcywgNTY1IGZhaWx1cmUsIDAgcGVuZGluZwoKQ292ZXJhZ2U6IDY1LjUxJQpgYGAKCmFuZCBjb3ZlcgohW2V4bWFwbGVdKGltYWdlcy9iMS5wbmcpCgohW2V4bWFwbGVdKGltYWdlcy9iMi5wbmcpCgohW2V4bWFwbGVdKGltYWdlcy93MS5wbmcpCgohW2V4bWFwbGVdKGltYWdlcy93Mi5wbmcpCgojIyBJbnN0YWxsYXRpb24KQWRkIHRoaXMgbGluZSB0byB5b3VyIGFwcGxpY2F0aW9uJ3MgR2VtZmlsZToKYGBgcnVieQpnZW0gJ2ZpdHRpbmcnCmBgYAoKQWZ0ZXIgdGhhdCBleGVjdXRlOgpgYGBiYXNoCiQgYnVuZGxlCmBgYAoKT3IgaW5zdGFsbCB0aGUgZ2VtIGJ5IHlvdXJzZWxmOgpgYGBiYXNoCiQgZ2VtIGluc3RhbGwgZml0dGluZwpgYGAKCiMjIFVzYWdlCiMjIyBMb2cKRmlyc3RseSwgaW1wcm92ZSBgdGVzdC5sb2dgLgoKVG8geW91ciBgc3BlY19oZWxwZXIucmJgOgoKYGBgcnVieQpyZXF1aXJlICdmaXR0aW5nJwoKRml0dGluZy5sb2dnZXIKYGBgCgpEZWxldGUgYWxsIGZpbGVzIGBsb2cvKi5sb2dgIGFuZCBydW4gcnNwZWMKCllvdSBnZXQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBpbmNvbWluZyBhbmQgb3V0Z29pbmcgcmVxdWVzdCBpbiBgbG9nL2ZpdHRpbmcqLmxvZ2AuCgpgYGB0ZXh0CkZJVFRJTkcgaW5jb21pbmcgcmVxdWVzdCB7Im1ldGhvZCI6IlBPU1QiLCJwYXRoIjoiL3B1YmxpYy9hcGkvdjEvaW5ib3hlcy90RVg1SmlaeWNlaXd1S01pMW9OOVNmOFMvY29udGFjdHMiLCJib2R5Ijp7fSwicmVzcG9uc2UiOnsic3RhdHVzIjoyMDAsImNvbnRlbnRfdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLCJib2R5Ijp7InNvdXJjZV9pZCI6IjAwZGJmMThkLTg3OWUtNDdjYi1hYzQ1LWU5YWVjZTI2NmViMSIsInB1YnN1Yl90b2tlbiI6Imt0bjZZd1B1czU3SkRmNGU1OWVGUG9tNSIsImlkIjozMjkxLCJuYW1lIjoic2h5LXN1cmYtNDAxIiwiZW1haWwiOm51bGwsInBob25lX251bWJlciI6bnVsbH19LCJ0aXRsZSI6Ii4vc3BlYy9jb250cm9sbGVycy9wdWJsaWMvYXBpL3YxL2luYm94L2NvbnRhY3RzX2NvbnRyb2xsZXJfc3BlYy5yYjo5IiwiZ3JvdXAiOiIuL3NwZWMvY29udHJvbGxlcnMvcHVibGljL2FwaS92MS9pbmJveC9jb250YWN0c19jb250cm9sbGVyX3NwZWMucmIiLCJob3N0Ijoid3d3LmV4YW1wbGUuY29tIn0KRklUVElORyBvdXRnb2luZyByZXF1ZXN0IHsibWV0aG9kIjoiUE9TVCIsInBhdGgiOiIvdjEvb3JnYW5pemF0aW9ucy9vcmdfaWQvbWVldGluZyIsImJvZHkiOnt9LCJyZXNwb25zZSI6eyJzdGF0dXMiOjIwMCwiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24vanNvbiIsImJvZHkiOnsic3VjY2VzcyI6dHJ1ZSwiZGF0YSI6eyJtZWV0aW5nIjp7ImlkIjoibWVldGluZ19pZCIsInJvb21OYW1lIjoicm9vbV9uYW1lIn19fX0sInRpdGxlIjoiLi9zcGVjL2NvbnRyb2xsZXJzL2FwaS92MS9hY2NvdW50cy9pbnRlZ3JhdGlvbnMvZHl0ZV9jb250cm9sbGVyX3NwZWMucmI6NTAiLCJncm91cCI6Ii4vc3BlYy9jb250cm9sbGVycy9hcGkvdjEvYWNjb3VudHMvaW50ZWdyYXRpb25zL2R5dGVfY29udHJvbGxlcl9zcGVjLnJiIiwiaG9zdCI6ImFwaS5jbHVzdGVyLmR5dGUuaW4ifQpgYGAKCiMjIyBWYWxpZGF0aW9uClNlY29uZGx5LCB2YWxpZGF0ZSB0aGUgbG9nIHRvIHRoZSBkb2N1bWVudGF0aW9uLgoKQWRkIHRoaXMgdG8geW91ciBgLmZpdHRpbmcueW1sYDoKCmBgYHlhbWwKQVBJczoKICAtIGhvc3Q6IHd3dy5leGFtcGxlLmNvbQogICAgdHlwZTogb3BlbmFwaTIKICAgIHBhdGg6IHN3YWdnZXIvc3dhZ2dlci5qc29uCmBgYAoKUnVuIApgYGBiYXNoCmJ1bmRsZSBlIHJha2UgZml0dGluZzp2YWxpZGF0ZQpgYGAKCkNvbnNvbGUgb3V0cHV0CgpgYGBjb25zb2xlCkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi5GRkYuLkZGRkZGRkZGRkYuLi4uRi4uLi4uLi5GLi4uRkYuLi4uLkYuLi5GLi4uLkYuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uRkYuRi4uRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi5GRi4uLi4uLi4uRkZGLi4uRkZGRi4uLi4uLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi4uLi4uLi5GRkZGRkZGRkZGRi4uRkZGRkZGLi5GRkZGRkZGRkZGRkZGRkZGRi4uLi4uLi5GRkZGRkYuLi4uLi4uLi4uLi4uRkZGRkZGRkZGRkZGLi4uLkYuLi4uLi4uLkZGRi5GLi4uRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi4uLi4uLi4uLi4uRkYuLi4uLi4uLkZGRi4uLi4uLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYuLi4uRkZGRkZGLi4uLi4uRi4uLi4uLi4uLi4uLkZGRkYuLi4uLi4uLkZGRkZGRkZGRkZGRkZGLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uRkYuLi4uLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi4uLi5GRi4uLi4uLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkYuLi5GRkZGLi4uLi4uLi4uLi4uLi4uRi5GLi4uLkZGLi5GRkZGRkZGRgoKICAxKSBGaXR0aW5nOjpEb2M6Ok5vdEZvdW5kIGxvZyBlcnJvcjoKCmhvc3Q6IHd3dy5leGFtcGxlLmNvbQptZXRob2Q6IFBPU1QKcGF0aDogL3B1YmxpYy9hcGkvdjEvaW5ib3hlcy97aW5ib3hfaWRlbnRpZmllcn0vY29udGFjdHMKY29kZTogMjAwCgpjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb24KCmpzb24tc2NoZW1hOiB7CiAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIiwKICAidHlwZSI6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIjogewogICAgImlkIjogewogICAgICAidHlwZSI6ICJpbnRlZ2VyIiwKICAgICAgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBjb250YWN0IgogICAgfSwKICAgICJzb3VyY2VfaWQiOiB7CiAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgc2Vzc2lvbiBpZGVudGlmaWVyIG9mIHRoZSBjb250YWN0IgogICAgfSwKICAgICJuYW1lIjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiTmFtZSBvZiB0aGUgY29udGFjdCIKICAgIH0sCiAgICAiZW1haWwiOiB7CiAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJFbWFpbCBvZiB0aGUgY29udGFjdCIKICAgIH0sCiAgICAicHVic3ViX3Rva2VuIjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHRva2VuIHRvIGJlIHVzZWQgdG8gY29ubmVjdCB0byBjaGF0d29vdCB3ZWJzb2NrZXQiCiAgICB9CiAgfQp9Cgpib2R5OiB7CiAgInNvdXJjZV9pZCI6ICJjOWU4YzMxZi0wNmRmLTQ5YjQtOGZiOS00NDY2NDU3YWU2NWIiLAogICJwdWJzdWJfdG9rZW4iOiAiWmdjN0RFdmFqNVRrZ1oxYTRDN0F2SlhvIiwKICAiaWQiOiAzMjkzLAogICJuYW1lIjogInJlc3RsZXNzLXNub3dmbGFrZS02NzAiLAogICJlbWFpbCI6IG51bGwsCiAgInBob25lX251bWJlciI6IG51bGwKfQoKZXJyb3IgWwogICJUaGUgcHJvcGVydHkgJyMvZW1haWwnIG9mIHR5cGUgbnVsbCBkaWQgbm90IG1hdGNoIHRoZSBmb2xsb3dpbmcgdHlwZTogc3RyaW5nIGluIHNjaGVtYSBlNTZiN2U2NS1kNzBjLTVmN2EtYTk2Yy05ODJkZjVmOGYyZjciCl0KCi4uLgoKODA0IGV4YW1wbGVzLCA1NjUgZmFpbHVyZSwgMCBwZW5kaW5nCgpDb3ZlcmFnZTogNjUuNTElCmBgYAoKIyMjIENvdmVyYWdlCkFuZCB0YXNrIHdpbGwgY3JlYXRlIEhUTUwgKGBjb3ZlcmFnZS9maXR0aW5nLmh0bWxgKSByZXBvcnRzLgoKIVtleG1hcGxlXShpbWFnZXMvYjEucG5nKQoKIVtleG1hcGxlXShpbWFnZXMvYjIucG5nKQoKTW9yZSBpbmZvcm1hdGlvbiBvbiBhY3Rpb24gY292ZXJhZ2UKCiFbZXhtYXBsZTJdKGltYWdlcy93MS5wbmcpCgohW2V4bWFwbGUyXShpbWFnZXMvdzIucG5nKQoKIyMgU2V0dGluZ3MKCiMjIyBBUElzCgojIyMjIHR5cGUKCiMjIyMjIE9wZW5BUEkgMi4wClN3YWdnZXIKCmBgYHlhbWwKQVBJczoKICAtIGhvc3Q6IHd3dy5leGFtcGxlLmNvbQogICAgdHlwZTogb3BlbmFwaTIKICAgIHBhdGg6IGRvYy9hcGkuanNvbgpgYGAKCiMjIyMjIE9wZW5BUEkgMy4wCkFsc28gT3BlbkFQSQoKYGBgeWFtbApBUElzOgogIC0gaG9zdDogd3d3LmV4YW1wbGUuY29tCiAgICB0eXBlOiBvcGVuYXBpMwogICAgcGF0aDogZG9jL2FwaS5qc29uCmBgYAoKIyMjIyMgQVBJIEJsdWVwcmludApGaXJzdCB5b3UgbmVlZCB0byBpbnN0YWxsIFtkcmFmdGVyXShodHRwczovL2dpdGh1Yi5jb20vYXBpYXJ5aW8vZHJhZnRlcikgb3IgW2NyYWZ0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9mdW5ib3gvY3JhZnRlcikuCldvcmtzIGFmdGVyIGNvbnZlcnNpb24gZnJvbSBBUEkgQmx1ZXByaW50IHRvIEFQSSBFbGVtZW50cyAoaW4gWUFNTCBmaWxlKSB3aXRoIERyYWZ0ZXIgb3IgQ3JhZnRlci4KClRoYXQgaXMsIEkgbWVhbiB0aGF0IHlvdSBmaXJzdCBuZWVkIHRvIGRvIHRoaXMKCmBgYGJhc2gKZHJhZnRlciBkb2MuYXBpYiAtbyBkb2MueWFtbApgYGAKCm9yCgpgYGBiYXNoCm5vZGVfbW9kdWxlcy8uYmluL2NyYWZ0ZXIgZG9jLmFwaWIgPiBkb2MueWFtbApgYGAKCmFuZCB0aGVuCgpgYGB5YW1sCkFQSXM6CiAgLSBob3N0OiB3d3cuZXhhbXBsZS5jb20KICAgIHR5cGU6IGRyYWZ0ZXIKICAgIHBhdGg6IGRvYy9hcGkueWFtbApgYGAKCm9yCgpgYGB5YW1sCkFQSXM6CiAgLSBob3N0OiB3d3cuZXhhbXBsZS5jb20KICAgIHR5cGU6IGNyYWZ0ZXIKICAgIHBhdGg6IGRvYy9hcGkueWFtbApgYGAKCiMjIyMjIFRvbW9ncmFwaAoKVG8gdXNlIGFkZGl0aW9uYWwgZmVhdHVyZXMgb2YgdGhlIHByZS1jb252ZXJ0ZWQgW3RvbW9ncmFwaF0oaHR0cHM6Ly9naXRodWIuY29tL2Z1bmJveC90b21vZ3JhcGgpCgpleGFtcGxlCgpgYGBiYXNoCmJ1bmRsZSBleGVjIHRvbW9ncmFwaCAtZCBjcmFmdGVyIC0tZXhjbHVkZS1kZXNjcmlwdGlvbiBkb2MvYXBpLnltbCBkb2MvYXBpLmpzb24KYGBgCgphbmQgdGhlbgoKYGBgeWFtbApBUElzOgogIC0gaG9zdDogd3d3LmV4YW1wbGUuY29tCiAgICB0eXBlOiB0b21vZ3JhbQogICAgcGF0aDogZG9jL2FwaS5qc29uCmBgYAoKIyMjIyBwcmVmaXgKClNldHRpbmcgdGhlIHByZWZpeCBuYW1lIGlzIG9wdGlvbmFsLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBkbyB0aGlzOgoKYGBgeWFtbApBUElzOgogIC0gaG9zdDogd3d3LmV4YW1wbGUuY29tCiAgICBwcmVmaXg6IC9hcGkvdjMKICAgIHR5cGU6IG9wZW5hcGkyCiAgICBwYXRoOiBzd2FnZ2VyL3N3YWdnZXIuanNvbgpgYGAKCiMjIyBTa2lwVmFsaWRhdGlvbgoKIyMjIyBob3N0CgpJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGltbWVkaWF0ZWx5IGRlc2NyaWJlIGVhY2ggaG9zdCBpbiBkZXRhaWwsIHlvdSBjYW4gb25seSBzcGVjaWZ5IGl0cyBuYW1lIGFuZCBza2lwIGl0IHVudGlsIHlvdSBhcmUgcmVhZHkgdG8gZG9jdW1lbnRlZCBpdAoKYGBgeWFtbApTa2lwVmFsaWRhdGlvbjoKICAtIGhvc3Q6IGFwaS5jbHVzdGVyLmR5dGUuaW4KYGBgCgojIyMjIHByZWZpeAoKSWYgeW91IHdhbnQgdG8gc2tpcCBhIHNwZWNpZmljIHByZWZpeCBpbiB0aGUgaG9zdAoKYGBgeWFtbApTa2lwVmFsaWRhdGlvbjoKICAtIGhvc3Q6IGFwaS5jbHVzdGVyLmR5dGUuaW4KICAgIHByZWZpeDogL2FkbWluL2FwaQpgYGAKCiMjIyMgbWV0aG9kIGFuZCBwYXRoCgpJZiB5b3Ugd2FudCB0byBza2lwIGEgc3BlY2lmaWMgcmVxdWVzdCBpbiB0aGUgaG9zdAoKYGBgeWFtbApTa2lwVmFsaWRhdGlvbjoKICAtIGhvc3Q6IGFwaS5jbHVzdGVyLmR5dGUuaW4KICAgIG1ldGhvZDogR0VUCiAgICBwYXRoOiAvYXBpL3YxL2NhcnMKYGBgCgojIyMgTm9Db3YKCkl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gaW1tZWRpYXRlbHkgdGVzdCBlYWNoIGRvYyBpbiBkZXRhaWwsIHlvdSBjYW4gb25seSBzcGVjaWZ5IGl0cyBuYW1lIGFuZCBza2lwIGl0IHVudGlsIHlvdSBhcmUgcmVhZHkgdG8gdGVzdCBpdAoKIyMjIyBob3N0CmBgYHlhbWwKTm9Db3Y6CiAgLSBob3N0OiBzc28udGVzdApgYGAKCiMjIyMgbWV0aG9kCmBgYHlhbWwKTm9Db3Y6CiAgLSBob3N0OiBzc28udGVzdAogICAgbWV0aG9kOiBHRVQKYGBgCgojIyMjIHBhdGgKYGBgeWFtbApOb0NvdjoKICAtIGhvc3Q6IHNzby50ZXN0CiAgICBtZXRob2Q6IEdFVAogICAgcGF0aDogL3VzZXJzL3t1c2VySWR9CmBgYAoKIyMjIyBjb2RlCmBgYHlhbWwKTm9Db3Y6CiAgLSBob3N0OiBzc28udGVzdAogICAgbWV0aG9kOiBHRVQKICAgIHBhdGg6IC91c2Vycy97dXNlcklkfQogICAgY29kZTogMjAwCmBgYAoKIyMjIyBjb250ZW50LXR5cGUKYGBgeWFtbApOb0NvdjoKICAtIGhvc3Q6IHNzby50ZXN0CiAgICBtZXRob2Q6IEdFVAogICAgcGF0aDogL3VzZXJzL3t1c2VySWR9CiAgICBjb2RlOiAyMDAKICAgIGNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vanNvbgpgYGAKCiMjIyMgY29tYmluYXRpb24KYGBgeWFtbApOb0NvdjoKICAtIGhvc3Q6IHNzby50ZXN0CiAgICBtZXRob2Q6IEdFVAogICAgcGF0aDogL3VzZXJzL3t1c2VySWR9CiAgICBjb2RlOiAyMDAKICAgIGNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vanNvbgogICAgY29tYmluYXRpb246IG9uZU9mLjAKYGBgCgojIyMjIGNvbWJpbmF0aW9uX25leHQKYGBgeWFtbApOb0NvdjoKICAtIGhvc3Q6IHNzby50ZXN0CiAgICBtZXRob2Q6IEdFVAogICAgcGF0aDogL3VzZXJzL3t1c2VySWR9CiAgICBjb2RlOiAyMDAKICAgIGNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vanNvbgogICAgY29tYmluYXRpb246IG9uZU9mLjAKICAgIGNvbWJpbmF0aW9uX25leHQ6IG9uZU9mLjAucmVxdWlyZWQudXNlcnMKYGBgCgojIyMgRGVidWcKCklmIHlvdSBmaW5kIGJ1ZywgeW91IGNhbiBkZWJ1ZyBpdCBvciBjcmVhdGUgdGFzayBpbiB0aGlzIGdpdGh1YiBwcm9qZWN0ICB3aXRoIG5ldyBmaWxlIGBjb3ZlcmFnZS9maXR0aW5nLmRlYnVnLnltbGAKCmBgYHlhbWwKRGVidWc6CiAgLSBob3N0OiB3d3cuZXhhbXBsZS5jb20KICAgIG1ldGhvZDogR0VUCiAgICBwYXRoOiAvYXBpL3YzL3VzZXJzCiAgICBjb2RlOiAyMDAKICAgIGNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vanNvbgpgYGAKCiMjIENvbnRyaWJ1dGluZwoKQnVnIHJlcG9ydHMgYW5kIHB1bGwgcmVxdWVzdHMgYXJlIHdlbGNvbWUgb24gR2l0SHViIGF0IFtnaXRodWIuY29tL2Z1bmJveC9maXR0aW5nXShodHRwczovL2dpdGh1Yi5jb20vZnVuYm94L2ZpdHRpbmcpLgpUaGlzIHByb2plY3QgaXMgaW50ZW5kZWQgdG8gYmUgYSBzYWZlLCB3ZWxjb21pbmcgc3BhY2UgZm9yIGNvbGxhYm9yYXRpb24sIGFuZCBjb250cmlidXRvcnMgYXJlIGV4cGVjdGVkIHRvIGFkaGVyZSB0byB0aGUgW0NvbnRyaWJ1dG9yIENvdmVuYW50XShodHRwOi8vY29udHJpYnV0b3ItY292ZW5hbnQub3JnKSBjb2RlIG9mIGNvbmR1Y3QuCgojIyBMaWNlbnNlCgpUaGUgZ2VtIGlzIGF2YWlsYWJsZSBhcyBvcGVuIHNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIFtNSVQgTGljZW5zZV0oaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuCgpbIVtTcG9uc29yZWQgYnkgRnVuQm94XShodHRwczovL2Z1bmJveC5ydS9iYWRnZXMvc3BvbnNvcmVkX2J5X2Z1bmJveF9jZW50ZXJlZC5zdmcpXShodHRwczovL2Z1bmJveC5ydSkK readmeEtag: '"00e2b176ef7d96987a960eeb75f854fc49d188b1"' readmeLastModified: Wed, 03 Apr 2024 20:24:31 GMT repositoryId: 780564538 description: >- Library add improve test log for RSpec and WebMock, validate its according to API Blueprint and Open API, show the documentation coverage with log. created: '2024-04-01T18:32:22Z' updated: '2024-04-03T20:25:02Z' language: Ruby archived: true stars: 0 watchers: 0 forks: 0 owner: matchtechnologies logo: https://avatars.githubusercontent.com/u/147186495?v=4 license: MIT repoEtag: '"16a3992724535acef9508317ddf92438ce826102844a21cb5bbdb7fb97cbede8"' repoLastModified: Wed, 03 Apr 2024 20:25:02 GMT foundInMaster: true - source: https://openapi.tools/ name: kubb category: Code Generators language: Typescript source_description: >- Kubb is a tool that can generate TypeScript types, Zod schemas, react-query hooks and much more. It has support for Tanstack Query(React, Solid, Svelte and Vue), SWR(React), Zod, Zodios and Axios. Kubb is made based on a plugin system, meaning you can create your own plugin and couple it with the Kubb ecosystem. link: https://kubb.dev/ repository: https://github.com/kubb-labs/kubb v2: true v3: true v3_1: true id: 8deb5ec0f25533d10b0d6025d587f55c repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL2t1YmIuZGV2L2t1YmIiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPgogICAgPGltZyB3aWR0aD0iMTgwIiBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9rdWJiLWxhYnMva3ViYi9tYWluL2Fzc2V0cy9sb2dvLnBuZyIgYWx0PSJLdWJiIGxvZ28iPgogIDwvYT4KCgpbIVtucG0gdmVyc2lvbl1bbnBtLXZlcnNpb24tc3JjXV1bbnBtLXZlcnNpb24taHJlZl0KWyFbbnBtIGRvd25sb2Fkc11bbnBtLWRvd25sb2Fkcy1zcmNdXVtucG0tZG93bmxvYWRzLWhyZWZdClshW0NvdmVyYWdlXVtjb3ZlcmFnZS1zcmNdXVtjb3ZlcmFnZS1ocmVmXQpbIVtMaWNlbnNlXVtsaWNlbnNlLXNyY11dW2xpY2Vuc2UtaHJlZl0KWyFbU3BvbnNvcnNdW3Nwb25zb3JzLXNyY11dW3Nwb25zb3JzLWhyZWZdClshW3NtaXRoZXJ5IGJhZGdlXShodHRwczovL3NtaXRoZXJ5LmFpL2JhZGdlL0BrdWJiLWxhYnMva3ViYildKGh0dHBzOi8vc21pdGhlcnkuYWkvc2VydmVyL0BrdWJiLWxhYnMva3ViYikKPGg0Pgo8YSBocmVmPSJodHRwczovL2NvZGVzYW5kYm94LmlvL3MvZ2l0aHViL2t1YmItbGFicy9rdWJiL3RyZWUvbWFpbi9leGFtcGxlcy90eXBlc2NyaXB0IiB0YXJnZXQ9Il9ibGFuayI+VmlldyBEZW1vPC9hPgo8c3Bhbj4gwrcgPC9zcGFuPgo8YSBocmVmPSJodHRwczovL2t1YmIuZGV2L2t1YmIiIHRhcmdldD0iX2JsYW5rIj5Eb2N1bWVudGF0aW9uPC9hPgo8c3Bhbj4gwrcgPC9zcGFuPgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va3ViYi1sYWJzL2t1YmIvaXNzdWVzLyIgdGFyZ2V0PSJfYmxhbmsiPlJlcG9ydCBCdWc8L2E+CjxzcGFuPiDCtyA8L3NwYW4+CjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9pc3N1ZXMvIiB0YXJnZXQ9Il9ibGFuayI+UmVxdWVzdCBGZWF0dXJlPC9hPgo8L2g0Pgo8L2Rpdj4KCjxiciAvPgoKIyMgUXVpY2sgU3RhcnQKCkdldCBzdGFydGVkIHdpdGggS3ViYiBpbiBzZWNvbmRzOgoKYGBgYmFzaApucHgga3ViYiBpbml0CmBgYAoKVGhlIGludGVyYWN0aXZlIHNldHVwIHdpbGw6Ci0gQ3JlYXRlIGEgYHBhY2thZ2UuanNvbmAgKGlmIG5lZWRlZCkKLSBHdWlkZSB5b3UgdGhyb3VnaCBwbHVnaW4gc2VsZWN0aW9uCi0gSW5zdGFsbCBwYWNrYWdlcyBhdXRvbWF0aWNhbGx5Ci0gR2VuZXJhdGUgYGt1YmIuY29uZmlnLnRzYAoKVGhlbiBnZW5lcmF0ZSB5b3VyIGNvZGU6CgpgYGBiYXNoCm5weCBrdWJiIGdlbmVyYXRlCmBgYAoKU2VlIHRoZSBbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9rdWJiLmRldikgZm9yIGRldGFpbGVkIHVzYWdlIGFuZCBhZHZhbmNlZCBmZWF0dXJlcy4KCiMjIEZlYXR1cmVzCi0gV29ya3Mgd2l0aCBOb2RlLmpzIDIwKy4KLSBDb252ZXJ0IFN3YWdnZXIgMi4wLCBPcGVuQVBJIDMuMCwgYW5kIE9wZW5BUEkgMy4xIHRvIFR5cGVTY3JpcHQsIFpvZCwgUmVhY3QtUXVlcnksIC4uLgotIFBsdWdpbiBlY29zeXN0ZW0gdG8gZXh0ZW5kIGJleW9uZCB0aGUgZGVmYXVsdCBwbHVnaW5zIHdlIHByb3ZpZGUuCi0gQ0xJIHN1cHBvcnQgd2l0aCBwcm9ncmVzcyBiYXIgYW5kIGRldGFpbGVkIGxvZ3MuCi0gTW9kZWwgQ29udGV4dCBQcm90b2NvbCAoTUNQKSBzZXJ2ZXIgZm9yIEFJIGFzc2lzdGFudHMgbGlrZSBbQ2xhdWRlXShodHRwczovL2NsYXVkZS5haSksIFtDdXJzb3JdKGh0dHBzOi8vY3Vyc29yLnNoKSwgYW5kIG90aGVyIE1DUC1jb21wYXRpYmxlIHRvb2xzLgotIERlYnVnIHRvb2xzIHdpdGggUmVhY3QgRGV2VG9vbHMuCi0gR2VuZXJhdGVzIGJhcnJlbCBmaWxlcyAoaW5kZXgudHMpLgotIEFuZCBzbyBtdWNoIG1vcmUgLi4uCgojIyBTdXBwb3J0aW5nIEt1YmIKCkt1YmIgdXNlcyBhbiBNSVQtbGljZW5zZWQgb3BlbiBzb3VyY2UgcHJvamVjdCB3aXRoIGl0cyBvbmdvaW5nIGRldmVsb3BtZW50IG1hZGUgcG9zc2libGUgZW50aXJlbHkgYnkgdGhlIHN1cHBvcnQgb2YgU3BvbnNvcnMuIElmIHlvdSB3b3VsZCBsaWtlIHRvIGJlY29tZSBhIHNwb25zb3IsIHBsZWFzZSBjb25zaWRlcjoKCi0gW0JlY29tZSBhIFNwb25zb3Igb24gR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vc3BvbnNvcnMvc3Rpam52YW5odWxsZSkKCjxwIGFsaWduPSJjZW50ZXIiPgogIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9zdGlqbnZhbmh1bGxlIj4KICAgIDxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc3Rpam52YW5odWxsZS9zcG9uc29ycy9tYWluL3Nwb25zb3JzLnN2ZyIgYWx0PSJNeSBzcG9uc29ycyIgLz4KICA8L2E+CjwvcD4KCiMjIENvbnRyaWJ1dG9ycyBbIVtDb250cmlidXRvcnNdW2NvbnRyaWJ1dG9ycy1zcmNdXVtjb250cmlidXRvcnMtaHJlZl0KCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1MSVNUOlNUQVJUIC0gRG8gbm90IHJlbW92ZSBvciBtb2RpZnkgdGhpcyBzZWN0aW9uIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KPCEtLSBtYXJrZG93bmxpbnQtZGlzYWJsZSAtLT4KPHRhYmxlPgogIDx0Ym9keT4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwOi8vd3d3LnN0aWpudmFuaHVsbGUuYmUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTkwNDY4MT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU3Rpam4gVmFuIEh1bGxlIi8+PGJyIC8+PHN1Yj48Yj5TdGlqbiBWYW4gSHVsbGU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1zdGlqbnZhbmh1bGxlIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vYWx1Yy5pby8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU1MjAwMTU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFsZnJlZCIvPjxiciAvPjxzdWI+PGI+QWxmcmVkPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va3ViYi1sYWJzL2t1YmIvY29tbWl0cz9hdXRob3I9YjZwemV1c2JjNTR0dmh3NWpncHl3OHB3ejJ4NmdzIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yYXZlY2xhc3NpYyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNzQzNTY4P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJLaXJpbGwgQWdhbGFrb3YiLz48YnIgLz48c3ViPjxiPktpcmlsbCBBZ2FsYWtvdjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPXJhdmVjbGFzc2ljIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly93aWNreS5uaWxsaWEubXMiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA5MTM5MD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTmljayBXaWxsaWFtcyIvPjxiciAvPjxzdWI+PGI+TmljayBXaWxsaWFtczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPVdpY2t5TmlsbGlhbXMiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2hlbHQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTczMjExMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iaGVsdCIvPjxiciAvPjxzdWI+PGI+aGVsdDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPWhlbHQiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1RpLXdlYmRldiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80Nzg1NjU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlZhc2lseSBNaWtoYXlsb3Zza3kiLz48YnIgLz48c3ViPjxiPlZhc2lseSBNaWtoYXlsb3Zza3k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1UaS13ZWJkZXYiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NoaXB0dXMiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM4MTY1NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQ2hhaW0gTGV2LUFyaSIvPjxiciAvPjxzdWI+PGI+Q2hhaW0gTGV2LUFyaTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPWNoaXB0dXMiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly9wcm9qZWN0cy5wYWZudXR5Lm5hbWUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTYzNTY3OT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iUGF2ZWwgQmVsb3Vzb3YiLz48YnIgLz48c3ViPjxiPlBhdmVsIEJlbG91c292PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va3ViYi1sYWJzL2t1YmIvY29tbWl0cz9hdXRob3I9cGFmbnV0eSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZG1pdHJ5LWJsYWNrd2F2ZSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NTI2NTQzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJEbWl0cnkgQmVsb3YiLz48YnIgLz48c3ViPjxiPkRtaXRyeSBCZWxvdjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPWRtaXRyeS1ibGFja3dhdmUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FidXJnZWwiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzQxNDc4P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBbGV4IEJ1cmdlbCIvPjxiciAvPjxzdWI+PGI+QWxleCBCdXJnZWw8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1hYnVyZ2VsIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kZ2FyY2lhbXVyaWEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvODE0NDMzMz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRGFuaWVsIEdhcmNpYSIvPjxiciAvPjxzdWI+PGI+RGFuaWVsIEdhcmNpYTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPWRnYXJjaWFtdXJpYSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vd3V5dWFueWkxMzUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE3NjA4NzA/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ind1eXVhbnlpMTM1Ii8+PGJyIC8+PHN1Yj48Yj53dXl1YW55aTEzNTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPXd1eXVhbnlpMTM1IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9janRob21wc29uIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE5NTgyNjY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkNocmlzIFRob21wc29uIi8+PGJyIC8+PHN1Yj48Yj5DaHJpcyBUaG9tcHNvbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPWNqdGhvbXBzb24iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2hrYW5nMSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMjA5NzE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkNhbGViIEhveW91bCBLYW5nIi8+PGJyIC8+PHN1Yj48Yj5DYWxlYiBIb3lvdWwgS2FuZzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPWhrYW5nMSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dycmVlZW5uIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEzMjA0ODU3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJHcmVnb3J5IFpodWtvdnNreSIvPjxiciAvPjxzdWI+PGI+R3JlZ29yeSBaaHVrb3Zza3k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1ncnJlZWVubiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQ2hpbGxvTWFuaWFjIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM3NjE5NjQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkNocmlzdG9mZmVyIE7DuHJiamVyZyIvPjxiciAvPjxzdWI+PGI+Q2hyaXN0b2ZmZXIgTsO4cmJqZXJnPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va3ViYi1sYWJzL2t1YmIvY29tbWl0cz9hdXRob3I9Q2hpbGxvTWFuaWFjIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vY29kZWZ5LmRlL2RlL2thcnJpZXJlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEyMjUyNDMwMT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQ0hFMVJPTiIvPjxiciAvPjxzdWI+PGI+Q0hFMVJPTjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPUNIRTFST04iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2VrYXJhZG9uIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzk0MzkzOTA/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImVrYXJhZG9uIi8+PGJyIC8+PHN1Yj48Yj5la2FyYWRvbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPWVrYXJhZG9uIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vdGhpam1lbi5kZXYiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzgzOTAzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJUaGlqbWVuIFN0YXZlbnVpdGVyIi8+PGJyIC8+PHN1Yj48Yj5UaGlqbWVuIFN0YXZlbnVpdGVyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va3ViYi1sYWJzL2t1YmIvY29tbWl0cz9hdXRob3I9VGhpam1lbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYm9oZGFuaHVzYWsiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM4MjkzNzA/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkJvaGRhbiBIdXNhayIvPjxiciAvPjxzdWI+PGI+Qm9oZGFuIEh1c2FrPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va3ViYi1sYWJzL2t1YmIvY29tbWl0cz9hdXRob3I9Ym9oZGFuaHVzYWsiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0VyaWNsbSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xOTM2MTUwMz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iw4lyaWMgTGUgTWHDrnRyZSIvPjxiciAvPjxzdWI+PGI+w4lyaWMgTGUgTWHDrnRyZTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPUVyaWNsbSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NoYW1iYmVyIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExNDA2ODQxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJSdWJlbnMgUGVyZWlyYSBkbyBOYXNjaW1lbnRvIi8+PGJyIC8+PHN1Yj48Yj5SdWJlbnMgUGVyZWlyYSBkbyBOYXNjaW1lbnRvPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va3ViYi1sYWJzL2t1YmIvY29tbWl0cz9hdXRob3I9Y2hhbWJiZXIiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21zdXRrb3dza2kiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzg0OTUzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNYXR0IFN1dGtvd3NraSIvPjxiciAvPjxzdWI+PGI+TWF0dCBTdXRrb3dza2k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1tc3V0a293c2tpIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS92aXRvcmNhbWFjaG9vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIwNTk1OTU2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJWw610b3IgQ2FtYWNobyIvPjxiciAvPjxzdWI+PGI+VsOtdG9yIENhbWFjaG88L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj12aXRvcmNhbWFjaG9vIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9WYXNla1Byb2NoYXprYSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzkwNjg0NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iVsOhY2xhdiBQcm9jaMOhemthIi8+PGJyIC8+PHN1Yj48Yj5Ww6FjbGF2IFByb2Now6F6a2E8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1WYXNla1Byb2NoYXprYSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2NvZHguZGV2Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU5NzM1NzM1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJMdWl6IEJldHQiLz48YnIgLz48c3ViPjxiPkx1aXogQmV0dDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPWhleUJldHQiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2xhbWJkYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU0NzUxMjk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlNlYmFzdGlhbiBBbmRlcnNlbiIvPjxiciAvPjxzdWI+PGI+U2ViYXN0aWFuIEFuZGVyc2VuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va3ViYi1sYWJzL2t1YmIvY29tbWl0cz9hdXRob3I9bGFtYmRhbmsiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9ha2luby5pY3UiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjQxNzY1MzQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFraW5vIi8+PGJyIC8+PHN1Yj48Yj5Ba2lubzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPWFraW5vY2NjIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcm1hY2hhZG8tc3R1ZG9jdSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84OTkwNjMxMz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iUmljYXJkbyBNYWNoYWRvIi8+PGJyIC8+PHN1Yj48Yj5SaWNhcmRvIE1hY2hhZG88L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1ybWFjaGFkby1zdHVkb2N1IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly9zaW1vbmVsbmFoYXMuY29tIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI5Mjc5MjAxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTaW1vbiBFbCBOYWhhcyIvPjxiciAvPjxzdWI+PGI+U2ltb24gRWwgTmFoYXM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1zaW1vbmVsbmFoYXMiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21hYXJ0ZW52YW5zYW1iZWVrIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzkxNzM5NTI0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJtYWFydGVudmFuc2FtYmVlayIvPjxiciAvPjxzdWI+PGI+bWFhcnRlbnZhbnNhbWJlZWs8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1tYWFydGVudmFuc2FtYmVlayIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3NkdWZyZXNuZS5pbmZvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU4Mzg1MT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU3RlZmFuIGR1IEZyZXNuZSIvPjxiciAvPjxzdWI+PGI+U3RlZmFuIGR1IEZyZXNuZTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPVNDZEYiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9odWdvZmVsaXBwZS5naXRodWIuaW8vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE5MzY4MzY1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJIdWdvIEZlbGlwcGUgZGUgU291emEgQ3J1eiIvPjxiciAvPjxzdWI+PGI+SHVnbyBGZWxpcHBlIGRlIFNvdXphIENydXo8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1odWdvRmVsaXBwZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYmVsZ2F0dGl0dWRlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI1OTc5OD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU8OpYmFzdGllbiBWYW52ZWx0aGVtIi8+PGJyIC8+PHN1Yj48Yj5Tw6liYXN0aWVuIFZhbnZlbHRoZW08L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1iZWxnYXR0aXR1ZGUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL2JlbnRvLm1lL3ZpdGFseWdhc2hrb3YiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzAwMDAzOTg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlZpdGFseSBHYXNoa292Ii8+PGJyIC8+PHN1Yj48Yj5WaXRhbHkgR2FzaGtvdjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPXZpdGFseWdhc2hrb3YiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZHVjZHVjLm5sIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzk2NzU3Mzg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkR1Y28gRHJ1cHN0ZWVuIi8+PGJyIC8+PHN1Yj48Yj5EdWNvIERydXBzdGVlbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPWR1Y29kcnVwc3RlZW4iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RoM2wwZzRuIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMyNjMwNj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0idGgzbDBnNG4iLz48YnIgLz48c3ViPjxiPnRoM2wwZzRuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va3ViYi1sYWJzL2t1YmIvY29tbWl0cz9hdXRob3I9dGgzbDBnNG4iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9yeGxpdWxpLmNvbSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNDU2MDM2OD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0icnhsaXVsaSIvPjxiciAvPjxzdWI+PGI+cnhsaXVsaTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPXJ4bGl1bGkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2h1bWFya3giPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTMwNDk5NDA/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Imh1bWFya3giLz48YnIgLz48c3ViPjxiPmh1bWFya3g8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1odW1hcmt4IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9KYWt1Yi1DZXJvdnNreSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDExMzQyMjc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ikpha3ViIENlcm92c2t5Ii8+PGJyIC8+PHN1Yj48Yj5KYWt1YiBDZXJvdnNreTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPUpha3ViLUNlcm92c2t5IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS95dWtpa3dpIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY2ODc5NjYwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJQYWNoYXJhIENoYW50YXdvbmciLz48YnIgLz48c3ViPjxiPlBhY2hhcmEgQ2hhbnRhd29uZzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPXl1a2lrd2kiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly92b2xvZHlteXJrdXNobmlyLmRldi8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTAyOTA2MjY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlZvbG9keW15ciBLdXNobmlyIi8+PGJyIC8+PHN1Yj48Yj5Wb2xvZHlteXIgS3VzaG5pcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPXZvbG9keW15ci1rdXNobmlyIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vR0tOZXdzcm9vbXMiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjAxMjQ4NjMzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJHS05ld3Nyb29tcyIvPjxiciAvPjxzdWI+PGI+R0tOZXdzcm9vbXM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1HS05ld3Nyb29tcyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc3RlcGVrIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUwNTg2Nzg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkthbWlsIFN0ZXBjenVrIi8+PGJyIC8+PHN1Yj48Yj5LYW1pbCBTdGVwY3p1azwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPXN0ZXBlayIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSm9hb0JybHQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTEwNjU1MDk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ikpvw6NvIEJyaWxoYW50ZSIvPjxiciAvPjxzdWI+PGI+Sm/Do28gQnJpbGhhbnRlPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va3ViYi1sYWJzL2t1YmIvY29tbWl0cz9hdXRob3I9Sm9hb0JybHQiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2thbWlsemtpIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI3OTc2NzM2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJLYW1pbCBTaWVyYWR6a2kiLz48YnIgLz48c3ViPjxiPkthbWlsIFNpZXJhZHpraTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPWthbWlsemtpIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9FcmljUGllcmxvdElkbW9nIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEyNDg5ODAyND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRXJpYyBQaWVybG90Ii8+PGJyIC8+PHN1Yj48Yj5FcmljIFBpZXJsb3Q8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1FcmljUGllcmxvdElkbW9nIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly9hdGhvbGluLnNlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMzOTQwNDczP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBbGV4YW5kZXIgU2rDtmNyb25hIFRob2xpbiIvPjxiciAvPjxzdWI+PGI+QWxleGFuZGVyIFNqw7Zjcm9uYSBUaG9saW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdWJiLWxhYnMva3ViYi9jb21taXRzP2F1dGhvcj1BVGhvbGluIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly9oeW9iYW4uY2MiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzg0OTMzNDY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlN0ZXBoZW4gWmhvdSIvPjxiciAvPjxzdWI+PGI+U3RlcGhlbiBaaG91PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va3ViYi1sYWJzL2t1YmIvY29tbWl0cz9hdXRob3I9aHlvYmFuIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2Nob2x5LmNhIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzk0MzU5Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSWxpYSBDaG9seSIvPjxiciAvPjxzdWI+PGI+SWxpYSBDaG9seTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1YmItbGFicy9rdWJiL2NvbW1pdHM/YXV0aG9yPWljaG9seSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCjwhLS0gbWFya2Rvd25saW50LXJlc3RvcmUgLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4KCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1MSVNUOkVORCAtLT4KPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CjwhLS0gbWFya2Rvd25saW50LWRpc2FibGUgLS0+Cgo8IS0tIG1hcmtkb3dubGludC1yZXN0b3JlIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+Cgo8IS0tIEFMTC1DT05UUklCVVRPUlMtTElTVDpFTkQgLS0+CgojIyBTdGFyIEhpc3RvcnkKCjxhIGhyZWY9Imh0dHBzOi8vc3Rhci1oaXN0b3J5LmNvbS8ja3ViYi1sYWJzL2t1YmImRGF0ZSI+CiAgPHBpY3R1cmU+CiAgICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Imh0dHBzOi8vYXBpLnN0YXItaGlzdG9yeS5jb20vc3ZnP3JlcG9zPWt1YmItbGFicy9rdWJiJnR5cGU9RGF0ZSZ0aGVtZT1kYXJrIiAvPgogICAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkiIHNyY3NldD0iaHR0cHM6Ly9hcGkuc3Rhci1oaXN0b3J5LmNvbS9zdmc/cmVwb3M9a3ViYi1sYWJzL2t1YmImdHlwZT1EYXRlIiAvPgogICAgPGltZyBhbHQ9IlN0YXIgSGlzdG9yeSBDaGFydCIgc3JjPSJodHRwczovL2FwaS5zdGFyLWhpc3RvcnkuY29tL3N2Zz9yZXBvcz1rdWJiLWxhYnMva3ViYiZ0eXBlPURhdGUiIC8+CiAgPC9waWN0dXJlPgo8L2E+CgoKPCEtLSBCYWRnZXMgLS0+CgpbbnBtLXZlcnNpb24tc3JjXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9Aa3ViYi9jb3JlP2ZsYXQmY29sb3JBPTE4MTgxQiZjb2xvckI9ZjU4NTE3CltucG0tdmVyc2lvbi1ocmVmXTogaHR0cHM6Ly9ucG14LmRldi9wYWNrYWdlL0BrdWJiL2NvcmUKW25wbS1kb3dubG9hZHMtc3JjXTogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vQGt1YmIvY29yZT9mbGF0JmNvbG9yQT0xODE4MUImY29sb3JCPWY1ODUxNwpbbnBtLWRvd25sb2Fkcy1ocmVmXTogaHR0cHM6Ly9ucG1qcy5jb20vcGFja2FnZS9Aa3ViYi9jb3JlCltsaWNlbnNlLXNyY106IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2Uva3ViYi1sYWJzL2t1YmIuc3ZnP2ZsYXQmY29sb3JBPTE4MTgxQiZjb2xvckI9ZjU4NTE3CltsaWNlbnNlLWhyZWZdOiBodHRwczovL2dpdGh1Yi5jb20va3ViYi1sYWJzL2t1YmIvYmxvYi9tYWluL0xJQ0VOU0UKW2J1aWxkLXNyY106IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL2t1YmItbGFicy9rdWJiL2NpLnlhbWw/c3R5bGU9ZmxhdCZjb2xvckE9MTgxODFCJmNvbG9yQj1mNTg1MTcKW2J1aWxkLWhyZWZdOiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Aa3ViYi9jb3JlClttaW5pZmllZC1zcmNdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2J1bmRsZXBob2JpYS9taW4vQGt1YmIvY29yZT9zdHlsZT1mbGF0JmNvbG9yQT0xODE4MUImY29sb3JCPWY1ODUxNwpbbWluaWZpZWQtaHJlZl06IGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BrdWJiL2NvcmUKW2NvdmVyYWdlLXNyY106IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY29kZWNvdi9jL2dpdGh1Yi9rdWJiLWxhYnMva3ViYj9zdHlsZT1mbGF0JmNvbG9yQT0xODE4MUImY29sb3JCPWY1ODUxNwpbY292ZXJhZ2UtaHJlZl06IGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BrdWJiL2NvcmUKW2NvbnRyaWJ1dG9ycy1zcmNdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9jb250cmlidXRvcnMva3ViYi1sYWJzL2t1YmI/c3R5bGU9ZmxhdCZjb2xvckE9MTgxODFCJmNvbG9yQj1mNTg1MTcmbGFiZWw9JTIwCltjb250cmlidXRvcnMtaHJlZl06ICNjb250cmlidXRvcnMtCltzcG9uc29ycy1zcmNdOiBodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9zcG9uc29ycy9zdGlqbnZhbmh1bGxlP3N0eWxlPWZsYXQmY29sb3JBPTE4MTgxQiZjb2xvckI9ZjU4NTE3CltzcG9uc29ycy1ocmVmXTogaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL3N0aWpudmFuaHVsbGUvCg== readmeEtag: '"3c427ee88039a6e22f530c45074f0f7250c7b399"' readmeLastModified: Thu, 05 Feb 2026 23:43:13 GMT repositoryId: 586543156 description: >- 🧩 The Ultimate Toolkit for Generating Type-Safe API Clients, Hooks, and Validators. created: '2023-01-08T14:15:23Z' updated: '2026-02-05T23:43:18Z' language: TypeScript archived: false stars: 1585 watchers: 5 forks: 130 owner: kubb-labs logo: https://avatars.githubusercontent.com/u/122118236?v=4 license: MIT repoEtag: '"5498a7d95f4a652c6c3f3afa94d5639bcb9b12ddddf7ca1637a59edeeb87a9a5"' repoLastModified: Thu, 05 Feb 2026 23:43:18 GMT foundInMaster: true oldLocations: - https://github.com/kubb-project/kubb - source: openapi3 tags repository: https://github.com/matchtechnologies/tomograph v3: true id: b656fa0887abd5cc2460fcf686e1ee21 repositoryMetadata: base64Readme: >- IyBUb21vZ3JhcGggCgpOb3RlOiBUaGUgcHJvamVjdCBoYXMgYmVlbiBtb3ZlZCB0byBodHRwczovL2dpdGh1Yi5jb20vdHV3aWxvZi90b21vZ3JhcGgKCkNvbnZlcnQgQVBJIEJsdWVwcmludCwgU3dhZ2dlciBhbmQgT3BlbkFQSSB0byBtaW5pbWFsIHJvdXRlcyB3aXRoIEpTT04gU2NoZW1hLiBGb3IgZWFzZSBvZiB1c2UgYW5kIGNyZWF0aW9uIG9mIG5ldyB0b29scy4KCldpbGwgbG9vayBsaWtlCgogIGBgYGpzb24KICBbCiAgICB7CiAgICAgICJwYXRoIjogIi9zZXNzaW9ucyIsCiAgICAgICJtZXRob2QiOiAiUE9TVCIsCiAgICAgICJjb250ZW50LXR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICJyZXF1ZXN0cyI6IFt7CiAgICAgICAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIiwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgImxvZ2luIjogewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgInBhc3N3b3JkIjogewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgImNhcHRjaGEiOiB7CiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJyZXF1aXJlZCI6IFsKICAgICAgICAgICJsb2dpbiIsCiAgICAgICAgICAicGFzc3dvcmQiCiAgICAgICAgXQogICAgICB9XSwKICAgICAgInJlc3BvbnNlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAic3RhdHVzIjogIjQwMSIsCiAgICAgICAgICAiY29udGVudC10eXBlIjogImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgImJvZHkiOiB7fQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInN0YXR1cyI6ICI0MjkiLAogICAgICAgICAgImNvbnRlbnQtdHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgICAgICJib2R5Ijoge30KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJzdGF0dXMiOiAiMjAxIiwKICAgICAgICAgICJjb250ZW50LXR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICAgICAiYm9keSI6IHsKICAgICAgICAgICAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIiwKICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICAgImNvbmZpcm1hdGlvbiI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAgImlkIjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgInR5cGUiOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAib3BlcmF0aW9uIjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IFsKICAgICAgICAgICAgICAgICAgImlkIiwKICAgICAgICAgICAgICAgICAgInR5cGUiLAogICAgICAgICAgICAgICAgICAib3BlcmF0aW9uIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgImNhcHRjaGEiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAiY2FwdGNoYV9kb2VzX25vdF9tYXRjaCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImJvb2xlYW4iCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdCiAgICB9CiAgXQogIGBgYAoKIyMgSW5zdGFsbGF0aW9uCgpUaGVuIGFkZCB0aGlzIGxpbmUgdG8geW91ciBhcHBsaWNhdGlvbidzIEdlbWZpbGU6CgpgYGBydWJ5CmdlbSAndG9tb2dyYXBoJwpgYGAKCkFmdGVyIHRoYXQgZXhlY3V0ZToKCmBgYGJhc2gKJCBidW5kbGUKYGBgCgpPciBpbnN0YWxsIHRoZSBnZW0gYnkgeW91cnNlbGY6CgpgYGBiYXNoCiQgZ2VtIGluc3RhbGwgdG9tb2dyYXBoCmBgYAoKIyMgVXNhZ2UKCiMjIyBJbiBjb2RlCgojIyMjIE9wZW5BUEkgMi4wCgpBbHNvIFN3YWdnZXIKCmBgYHJ1YnkKcmVxdWlyZSAndG9tb2dyYXBoJwoKdG9tb2dyYW0gPSBUb21vZ3JhcGg6OlRvbW9ncmFtLm5ldyhvcGVuYXBpMl9qc29uX3BhdGg6ICcvcGF0aC90by9kb2MuanNvbicpCmBgYAoKIyMjIyBPcGVuQVBJIDMuMAoKQWxzbyBPcGVuQVBJCgpgYGBydWJ5CnJlcXVpcmUgJ3RvbW9ncmFwaCcKCnRvbW9ncmFtID0gVG9tb2dyYXBoOjpUb21vZ3JhbS5uZXcob3BlbmFwaTNfeWFtbF9wYXRoOiAnL3BhdGgvdG8vZG9jLnlhbWwnKQpgYGAKCiMjIyMgQVBJIEJsdWVwcmludAoKRmlyc3QgeW91IG5lZWQgdG8gaW5zdGFsbCBbZHJhZnRlcl0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWFyeWlvL2RyYWZ0ZXIpLgpXb3JrcyBhZnRlciBjb252ZXJzaW9uIGZyb20gQVBJIEJsdWVwcmludCB0byBBUEkgRWxlbWVudHMgKGluIFlBTUwgZmlsZSkgd2l0aCBEcmFmdGVyLgoKVGhhdCBpcywgSSBtZWFuIHRoYXQgeW91IGZpcnN0IG5lZWQgdG8gZG8gdGhpcwoKYGBgYmFzaApkcmFmdGVyIGRvYy5hcGliIC1vIGRvYy55YW1sCmBgYAoKYW5kIHRoZW4KCmBgYHJ1YnkKcmVxdWlyZSAndG9tb2dyYXBoJwoKdG9tb2dyYW0gPSBUb21vZ3JhcGg6OlRvbW9ncmFtLm5ldyhkcmFmdGVyX3lhbWxfcGF0aDogJy9wYXRoL3RvL2RvYy55YW1sJykKYGBgCgojIyMjIFRvbW9ncmFwaAoKVG8gdXNlIGFkZGl0aW9uYWwgZmVhdHVyZXMgb2YgdGhlIHByZS1jb252ZXJ0ZWQKCmBgYHJ1YnkKcmVxdWlyZSAndG9tb2dyYXBoJwoKdG9tb2dyYW0gPSBUb21vZ3JhcGg6OlRvbW9ncmFtLm5ldyh0b21vZ3JhbV9qc29uX3BhdGg6ICcvcGF0aC90by9kb2MuanNvbicpCmBgYAoKIyMjIyBwcmVmaXgKRGVmYXVsdDogYCcnYAoKWW91IGNhbiBzcGVjaWZ5IEFQSSBwcmVmaXggYW5kIHBhdGggdG8gdGhlIHNwZWMgdXNpbmcgb25lIG9mIHRoZSBwb3NzaWJsZSBmb3JtYXRzOgoKYGBgcnVieQpUb21vZ3JhcGg6OlRvbW9ncmFtLm5ldyhwcmVmaXg6ICcvYXBpL3YyJywgZHJhZnRlcl95YW1sX3BhdGg6ICcvcGF0aC90by9kb2MueWFtbCcpCmBgYAoKYGBgcnVieQpUb21vZ3JhcGg6OlRvbW9ncmFtLm5ldyhwcmVmaXg6ICcvYXBpL3YyJywgdG9tb2dyYW1fanNvbl9wYXRoOiAnL3BhdGgvdG8vZG9jLmpzb24nKQpgYGAKCiMjIyMgdG9fanNvbgpVc2UgYHRvX2pzb25gIGZvciBjb252ZXJ0aW5nIHRvIEpTT04sIGV4YW1wbGUgZnJvbSBBUEkgQmx1ZXByaW50OgoKYGBgcnVieQp0b21vZ3JhbS50b19qc29uCmBgYAoKPGRldGFpbHM+CiAgPHN1bW1hcnk+RXhhbXBsZSBpbnB1dDwvc3VtbWFyeT4KCiAgYGBgYXBpYgogIEZPUk1BVDogMUEKICBIT1NUOiBodHRwOi8vdGVzdC5sb2NhbAogIAogICMgcHJvamVjdAogIAogICMgR3JvdXAgcHJvamVjdAogIAogIFByb2plY3QKICAKICAjIyBBdXRoZW50aWNhdGlvbiBbL3Nlc3Npb25zXQogIAogICMjIyBTaWduIEluIFtQT1NUXQogIAogICsgUmVxdWVzdCAoYXBwbGljYXRpb24vanNvbikKICAKICAgICAgKyBBdHRyaWJ1dGVzCiAgICAgICArIGxvZ2luIChzdHJpbmcsIHJlcXVpcmVkKQogICAgICAgKyBwYXNzd29yZCAoc3RyaW5nLCByZXF1aXJlZCkKICAgICAgICsgY2FwdGNoYSAoc3RyaW5nLCBvcHRpb25hbCkKICAKICArIFJlc3BvbnNlIDQwMSAoYXBwbGljYXRpb24vanNvbikKICAKICArIFJlc3BvbnNlIDQyOSAoYXBwbGljYXRpb24vanNvbikKICAKICArIFJlc3BvbnNlIDIwMSAoYXBwbGljYXRpb24vanNvbikKICAKICAgICAgKyBBdHRyaWJ1dGVzCiAgICAgICArIGNvbmZpcm1hdGlvbiAoQ29uZmlybWF0aW9uLCBvcHRpb25hbCkKICAgICAgICsgY2FwdGNoYSAoc3RyaW5nLCBvcHRpb25hbCkKICAgICAgICsgY2FwdGNoYV9kb2VzX25vdF9tYXRjaCAoYm9vbGVhbiwgb3B0aW9uYWwpCiAgCiAgCiAgIyBEYXRhIFN0cnVjdHVyZXMKICAKICAjIyBDb25maXJtYXRpb24gKG9iamVjdCkKICAgICsgaWQgKHN0cmluZywgcmVxdWlyZWQpCiAgICArIHR5cGUgKHN0cmluZywgcmVxdWlyZWQpCiAgICArIG9wZXJhdGlvbiAoc3RyaW5nLCByZXF1aXJlZCkKICBgYGAKPC9kZXRhaWxzPgoKPGRldGFpbHM+CiAgPHN1bW1hcnk+RXhhbXBsZSBvdXRwdXQ8L3N1bW1hcnk+CgogIGBgYGpzb24KICBbCiAgICB7CiAgICAgICJwYXRoIjogIi9zZXNzaW9ucyIsCiAgICAgICJtZXRob2QiOiAiUE9TVCIsCiAgICAgICJjb250ZW50LXR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICJyZXF1ZXN0cyI6IFt7CiAgICAgICAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIiwKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgImxvZ2luIjogewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgInBhc3N3b3JkIjogewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgImNhcHRjaGEiOiB7CiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJyZXF1aXJlZCI6IFsKICAgICAgICAgICJsb2dpbiIsCiAgICAgICAgICAicGFzc3dvcmQiCiAgICAgICAgXQogICAgICB9XSwKICAgICAgInJlc3BvbnNlcyI6IFsKICAgICAgICB7CiAgICAgICAgICAic3RhdHVzIjogIjQwMSIsCiAgICAgICAgICAiY29udGVudC10eXBlIjogImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgImJvZHkiOiB7fQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInN0YXR1cyI6ICI0MjkiLAogICAgICAgICAgImNvbnRlbnQtdHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgICAgICJib2R5Ijoge30KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJzdGF0dXMiOiAiMjAxIiwKICAgICAgICAgICJjb250ZW50LXR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICAgICAiYm9keSI6IHsKICAgICAgICAgICAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIiwKICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICAgImNvbmZpcm1hdGlvbiI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAgImlkIjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgInR5cGUiOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAib3BlcmF0aW9uIjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IFsKICAgICAgICAgICAgICAgICAgImlkIiwKICAgICAgICAgICAgICAgICAgInR5cGUiLAogICAgICAgICAgICAgICAgICAib3BlcmF0aW9uIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgImNhcHRjaGEiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAiY2FwdGNoYV9kb2VzX25vdF9tYXRjaCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImJvb2xlYW4iCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdCiAgICB9CiAgXQogIGBgYAo8L2RldGFpbHM+IAoKIyMjIyB0b19hCmBgYHJ1YnkKdG9tb2dyYW0udG9fYQpgYGAKCiMjIyMgZmluZF9yZXF1ZXN0CmBgYHJ1YnkKcmVxdWVzdCA9IHRvbW9ncmFtLmZpbmRfcmVxdWVzdChtZXRob2Q6ICdHRVQnLCBwYXRoOiAnL3N0YXR1cy8xP3F3ZT1ydHknKQpgYGAKCiMjIyMgZmluZF9yZXF1ZXN0X3dpdGhfY29udGVudF90eXBlCmBgYHJ1YnkKcmVxdWVzdCA9IHRvbW9ncmFtLmZpbmRfcmVxdWVzdF93aXRoX2NvbnRlbnRfdHlwZShtZXRob2Q6ICdHRVQnLCBwYXRoOiAnL3N0YXR1cy8xP3F3ZT1ydHknLCBjb250ZW50X3R5cGU6ICdhcHBsaWNhdGlvbi9qc29uJykKYGBgCgojIyMjIGBmaW5kX3Jlc3BvbnNlc2AKYGBgcnVieQpyZXNwb25zZXMgPSByZXF1ZXN0LmZpbmRfcmVzcG9uc2VzKHN0YXR1czogJzIwMCcpCmBgYAoKIyMjIyBwcmVmaXhfbWF0Y2g/ClRoaXMgbWF5IGJlIHVzZWZ1bCBpZiB5b3Ugc3BlY2lmeSBhIHByZWZpeC4KCmBgYHJ1YnkKdG9tb2dyYW0ucHJlZml4X21hdGNoPygnaHR0cDovL2xvY2FsL2FwaS92Mi91c2VycycpCmBgYAoKIyMjIyB0b19yZXNvdXJjZXMKTWFwcyByZXNvdXJjZXMgZm9yIEFQSSBCbHVlcHJpbnQgd2l0aCBwb3NzaWJsZSByZXF1ZXN0cy4KCkV4YW1wbGUgb3V0cHV0OgoKYGBgcnVieQp7CiAgJy9zZXNzaW9ucycgPT4gWydQT1NUIC9zZXNzaW9ucyddCn0KYGBgCgojIyMgQ29tbWFuZCBsaW5lIHRvb2wKCkNMSSBhbGxvd3MgeW91IHRvIGNvbnZlcnQgZmlsZXMgZnJvbSBBUEkgQmx1ZXByaW50IChBUEkgRWxlbWVudHMpLCBTd2FnZ2VyIGFuZCBPcGVuQVBJIHRvIEpTT04gU2NoZW1hLgoKUnVuIENMSSB3aXRoIGAtaGAgdG8gZ2V0IGRldGFpbGVkIGhlbHA6CgpgYGBiYXNoCnRvbW9ncmFwaCAtaApgYGAKClRvIHNwZWNpZnkgdGhlIGhhbmRsZXIgdmVyc2lvbiB1c2UgdGhlIGAtZGAgZmxhZzoKCiMjIyMgT3BlbkFQSSAyLjAKYGBgYmFzaAp0b21vZ3JhcGggLWQgb3BlbmFwaTIgb3BlbmFwaTIuanNvbiB0b21vZ3JhbS5qc29uCmBgYAoKIyMjIyBPcGVuQVBJIDMuMApgYGBiYXNoCnRvbW9ncmFwaCAtZCBvcGVuYXBpMyBvcGVuYXBpMy55YW1sIGRvYy5qc29uCmBgYAoKIyMjIyBBUEkgQmx1ZXByaW50CmBgYGJhc2gKdG9tb2dyYXBoIC1kIDQgYXBpZWxlbWV0bnMueWFtbCBkb2MuanNvbgpgYGAKCiMjIyMgZXhjbHVkZS1kZXNjcmlwdGlvbgoKRXhjbHVkZSAiZGVzY3JpcHRpb24iIGtleXMgZnJvbSBqc29uLXNjaGVtYXMuCgpgYGBiYXNoCnRvbW9ncmFwaCAtZCA0IGFwaWVsZW1ldG5zLnlhbWwgZG9jLmpzb24gLS1leGNsdWRlLWRlc2NyaXB0aW9uCmBgYAoKIyMjIyBzcGxpdAoKU3BsaXQgb3V0cHV0IGludG8gZmlsZXMgYnkgbWV0aG9kLiBPdXRwdXQgaW4gZGlyIHBhdGguCgpgYGBiYXNoCnRvbW9ncmFwaCAtZCA0IC0tc3BsaXQgYXBpZWxlbWV0bnMueWFtbCBqc29ucy8KYGBgCgojIyBMaWNlbnNlCgpUaGUgZ2VtIGlzIGF2YWlsYWJsZSBhcyBvcGVuIHNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIFtNSVQgTGljZW5zZV0oaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuCgpbIVtTcG9uc29yZWQgYnkgRnVuQm94XShodHRwczovL2Z1bmJveC5ydS9iYWRnZXMvc3BvbnNvcmVkX2J5X2Z1bmJveF9jZW50ZXJlZC5zdmcpXShodHRwczovL2Z1bmJveC5ydSkK readmeEtag: '"7c15795b959498fe0847c9ed366f5a7c4aa3b6e5"' readmeLastModified: Wed, 03 Apr 2024 19:44:07 GMT repositoryId: 780566490 description: >- Convert API Blueprint, Swagger and OpenAPI to JSON Schema and search through it created: '2024-04-01T18:37:02Z' updated: '2024-04-03T19:44:41Z' language: Ruby archived: true stars: 0 watchers: 0 forks: 0 owner: matchtechnologies logo: https://avatars.githubusercontent.com/u/147186495?v=4 license: MIT repoEtag: '"01bb06e91b20ea1e645c53afe1cd6dd8a4678ec4d1d2737800500ca60ae9ac52"' repoLastModified: Wed, 03 Apr 2024 19:44:41 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/accelbyte/extend-codegen-cli v3: true id: 9c1ac73738764bd74303bc666161d687 repositoryMetadata: base64Readme: >- IyBFeHRlbmQgQ29kZWdlbiBDTEkKCkEgdG9vbCBmb3IgZ2VuZXJhdGluZyBhbiBBY2NlbEJ5dGUgU0RLIG1vZHVsZSBvciBwbHVnaW4gZm9yIGN1c3RvbSBzZXJ2aWNlcywKc3VjaCBhcyBzZXJ2aWNlcyBjcmVhdGVkIHVzaW5nIEV4dGVuZCBTZXJ2aWNlIEV4dGVuc2lvbi4KCjpleGNsYW1hdGlvbjogKipUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgdGhlIGNvZGVnZW4gdGVtcGxhdGUgcGFjayB6aXAgCnJlbGVhc2VzIG9ubHkuKioKCiMjIE92ZXJ2aWV3CgpUaGUgRXh0ZW5kIENvZGVnZW4gY29uc2lzdHMgb2YgYSBDTEkgYXBwIGFuZCBzb21lIHRlbXBsYXRlIHBhY2tzLiBUaGUgQ0xJIGFwcCBpcwpyZWxlYXNlZCBhcyBjb250YWluZXIgaW1hZ2VzIGluIApbRG9ja2VyIEh1Yl0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2FjY2VsYnl0ZS9leHRlbmQtY29kZWdlbi1jbGkpIHdoaWxlIAp0aGUgdGVtcGxhdGUgcGFjayB6aXAgZmlsZXMgYXJlIHJlbGVhc2VkIApbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL0FjY2VsQnl0ZS9leHRlbmQtY29kZWdlbi1jbGkvcmVsZWFzZXMpIAppbiB0aGlzIHJlcG9zaXRvcnkuCgpBIHRlbXBsYXRlIHBhY2sgY29udGFpbnMgYSBgTWFrZWZpbGVgIGFuZCBgSmluamFgIHRlbXBsYXRlIGZpbGVzLiBXaGVuIHRoZQpgTWFrZWZpbGVgIGNvbW1hbmQgaXMgaW52b2tlZCwgdGhlIEV4dGVuZCBDb2RlZ2VuIENMSSBhcHAgaXMgZXhlY3V0ZWQgd2l0aCB0aGUKYEppbmphYCB0ZW1wbGF0ZSBmaWxlcyBhbmQgYSBnaXZlbiBjdXN0b20gc2VydmljZSBPcGVuQVBJIDIuMCBKU09OIGZpbGUgdG8gCmdlbmVyYXRlIGNvZGUuIFRoZSBgTWFrZWZpbGVgIGFsc28gZmV0Y2hlcyB0aGUgc3BlY2lmaWVkIENMSSBjb250YWluZXIgaW1hZ2UKdmVyc2lvbiBpZiBpdCBpcyBub3QgYXZhaWxhYmxlIGxvY2FsbHkgeWV0LgoKIyMgR2VuZXJhbCBVc2FnZQoKMS4gRG93bmxvYWQgdGhlIHRlbXBsYXRlIHBhY2sgemlwIGZvciB0aGUgY29ycmVzcG9uZGluZyBBY2NlbEJ5dGUgU0RLIG1vZHVsZSBvcgpwbHVnaW4gW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9BY2NlbEJ5dGUvZXh0ZW5kLWNvZGVnZW4tY2xpL3JlbGVhc2VzKSAKCjIuIFVuemlwIHRoZSBkb3dubG9hZGVkIHRlbXBsYXRlIHBhY2sgemlwIGZpbGUgYW5kIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb24gaW4gCnRoZSBSRUFETUUubWQgaW5zaWRlLgoKICAg readmeEtag: '"54ff72c743cca2d217e202169a710e798ad14dc3"' readmeLastModified: Wed, 29 May 2024 03:38:44 GMT repositoryId: 684878324 description: AccelByte Extend Code Generator created: '2023-08-30T03:20:42Z' updated: '2024-05-29T03:38:50Z' language: null archived: false stars: 0 watchers: 3 forks: 0 owner: AccelByte logo: https://avatars.githubusercontent.com/u/25496952?v=4 repoEtag: '"4088789667291baa63eabebc077d197a3b3f30b7fc23f8a06c976d5e1a4df042"' repoLastModified: Wed, 29 May 2024 03:38:50 GMT category: - Code Generators - Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/apicat/apicat v3: true id: c3406002d5ded68b23a583a8173c775e repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0iY2VudGVyIj4KICAgIDxpbWcgYWx0PSJBcGlDYXQiIHdpZHRoPSIzNTBweCIgc3JjPSJodHRwczovL2Nkbi5hcGljYXQubmV0L3VwbG9hZHMvMmQwMmZmMmY2YjE5ZDNkNmQzZjEzNGMxODcyNDg0YWEucG5nIi8+CjwvZGl2PgoKPHAgYWxpZ249ImNlbnRlciI+CiAgRW5nbGlzaCB8CiAgPGEgaHJlZj0iLi9SRUFETUVfQ04ubWQiPueugOS9k+S4reaWhzwvYT4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgICA8YSBocmVmPSJodHRwczovL2FwaWNhdC5haSIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgIDxpbWcgYWx0PSJTdGF0aWMgQmFkZ2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9haS1hcGljYXQ/bG9nbz1haSZsb2dvQ29sb3I9cmVkJmxhYmVsPWFwaWNhdCZsYWJlbENvbG9yPTQ4OTRGRiZjb2xvcj1FQUVDRjAiPgogICAgPC9hPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9kaXNjb3JkLmdnLzZVRkJHaE51IiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgPGltZyBhbHQ9IlN0YXRpYyBCYWRnZSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NoYXQtRGlzY29yZC00RTVBRjA/bG9nbz1EaXNjb3JkIj4KICAgIDwvYT4KICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGljYXQvYXBpY2F0L2Jsb2IvbWFpbi9MSUNFTlNFIj4KICAgICAgICA8aW1nIGFsdD0iU3RhdGljIEJhZGdlIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1NSVQtZ3JlZW4iPgogICAgPC9hPgo8L3A+CgpBcGlDYXQgaXMgYW4gQVBJIGRvY3VtZW50YXRpb24gbWFuYWdlbWVudCB0b29sIHRoYXQgaXMgZnVsbHkgY29tcGF0aWJsZSB3aXRoIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24uIFdpdGggQXBpQ2F0LCB5b3UgY2FuIGZyZWVseSBhbmQgZWZmaWNpZW50bHkgbWFuYWdlIHlvdXIgQVBJcy4gSXQgaW50ZWdyYXRlcyB0aGUgY2FwYWJpbGl0aWVzIG9mIExMTSwgd2hpY2ggbm90IG9ubHkgaGVscHMgeW91IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgQVBJIGRvY3VtZW50YXRpb24gYW5kIGRhdGEgbW9kZWxzIGJ1dCBhbHNvIGNyZWF0ZXMgY29ycmVzcG9uZGluZyB0ZXN0IGNhc2VzIGJhc2VkIG9uIHRoZSBBUEkgY29udGVudC4gVXNpbmcgQXBpQ2F0LCB5b3UgY2FuIHF1aWNrbHkgYWNjb21wbGlzaCBhbnl0aGluZyBvdXRzaWRlIG9mIGNvZGluZywgYWxsb3dpbmcgeW91IHRvIGZvY3VzIHlvdXIgZW5lcmd5IG9uIHRoZSBjb2RlIGl0c2VsZi4KCiMjIFVzaW5nIG91ciBDbG91ZCBTZXJ2aWNlcwoKWW91IGNhbiB0cnkgb3V0IFtBcGlDYXRdKGh0dHBzOi8vYXBpY2F0LmFpKSBub3cuIEl0IHByb3ZpZGVzIGFsbCB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBzZWxmLWRlcGxveWVkIHZlcnNpb24uCgojIyBMb2NhbCBJbnN0YWxsYXRpb24KClRoZSBlYXNpZXN0IHdheSB0byBzdGFydCB0aGUgQXBpQ2F0IGlzIHRvIHJ1biBvdXIgZG9ja2VyLWNvbXBvc2UueWFtbCBmaWxlLiBCZWZvcmUgcnVubmluZyB0aGUgaW5zdGFsbGF0aW9uIGNvbW1hbmQsIG1ha2Ugc3VyZSB0aGF0IFtEb2NrZXJdKGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2dldC1kb2NrZXIvKSBhbmQgW0RvY2tlciBDb21wb3NlXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9jb21wb3NlL2luc3RhbGwvKSBhcmUgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZToKCmBgYGJhc2gKZG9ja2VyIGNvbXBvc2UgdXAgLWQKYGBgCgpBZnRlciBydW5uaW5nLCB5b3UgY2FuIHZpc2l0IFtodHRwOi8vbG9jYWxob3N0OjgwMDBdKGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCkgb24geW91ciBicm93c2VyIHRvIHN0YXJ0IHVzaW5nIEFwaUNhdC4KCklmIHlvdSBuZWVkIHRvIGN1c3RvbWl6ZSB0aGUgY29uZmlndXJhdGlvbiwgcGxlYXNlIHJlZmVyIHRvIG91ciBbZG9ja2VyLWNvbXBvc2UueW1sXSguL2RvY2tlci1jb21wb3NlLnlhbWwpIGZpbGUgYW5kIG1hbnVhbGx5IHNldCB0aGUgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbi4gQWZ0ZXIgbWFraW5nIHRoZSBjaGFuZ2VzLCBwbGVhc2UgcnVuIGBkb2NrZXItY29tcG9zZSB1cCAtZGAgYWdhaW4uCgojIyBDb21tdW5pdHkKCklmIHlvdSBoYXZlIGFueXRoaW5nIHlvdSB3b3VsZCBsaWtlIHRvIGRpc2N1c3Mgd2l0aCB1cywgcGxlYXNlIGpvaW4gb3VyIGNvbW11bml0eS4KCi0gW0Rpc2NvcmRdKGh0dHBzOi8vZGlzY29yZC5nZy82VUZCR2hOdSkKCiMjIExpY2Vuc2UKCltNSVRdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGljYXQvYXBpY2F0L2Jsb2IvbWFpbi9MSUNFTlNFKQ== readmeEtag: '"b67461a0437fd05e7fb32d296c9409ded8ecb359"' readmeLastModified: Thu, 27 Jun 2024 08:43:10 GMT repositoryId: 488860709 description: >- An efficient API documentation management tool that fully adheres to the OpenAPI specification and incorporates advanced LLM technology. This tool can automate the generation of API documentation, data models, and test cases, greatly enhancing development efficiency and documentation quality. created: '2022-05-05T06:44:36Z' updated: '2026-01-21T12:58:06Z' language: Go archived: false stars: 290 watchers: 8 forks: 35 owner: apicat logo: https://avatars.githubusercontent.com/u/64158984?v=4 repoEtag: '"01d4a4b2a714b39a2afc9667e2ba91cbeff52996aa4c5302f25a27e17c02a46e"' repoLastModified: Wed, 21 Jan 2026 12:58:06 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/fastapi/full-stack-fastapi-template v3: true repositoryMetadata: base64Readme: >- IyBGdWxsIFN0YWNrIEZhc3RBUEkgVGVtcGxhdGUKCjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0YXBpL2Z1bGwtc3RhY2stZmFzdGFwaS10ZW1wbGF0ZS9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBJTIyVGVzdCtEb2NrZXIrQ29tcG9zZSUyMiIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vZmFzdGFwaS9mdWxsLXN0YWNrLWZhc3RhcGktdGVtcGxhdGUvd29ya2Zsb3dzL1Rlc3QlMjBEb2NrZXIlMjBDb21wb3NlL2JhZGdlLnN2ZyIgYWx0PSJUZXN0IERvY2tlciBDb21wb3NlIj48L2E+CjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0YXBpL2Z1bGwtc3RhY2stZmFzdGFwaS10ZW1wbGF0ZS9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBJTIyVGVzdCtCYWNrZW5kJTIyIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0YXBpL2Z1bGwtc3RhY2stZmFzdGFwaS10ZW1wbGF0ZS93b3JrZmxvd3MvVGVzdCUyMEJhY2tlbmQvYmFkZ2Uuc3ZnIiBhbHQ9IlRlc3QgQmFja2VuZCI+PC9hPgo8YSBocmVmPSJodHRwczovL2NvdmVyYWdlLWJhZGdlLnNhbXVlbGNvbHZpbi53b3JrZXJzLmRldi9yZWRpcmVjdC9mYXN0YXBpL2Z1bGwtc3RhY2stZmFzdGFwaS10ZW1wbGF0ZSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2NvdmVyYWdlLWJhZGdlLnNhbXVlbGNvbHZpbi53b3JrZXJzLmRldi9mYXN0YXBpL2Z1bGwtc3RhY2stZmFzdGFwaS10ZW1wbGF0ZS5zdmciIGFsdD0iQ292ZXJhZ2UiPjwvYT4KCiMjIFRlY2hub2xvZ3kgU3RhY2sgYW5kIEZlYXR1cmVzCgotIOKaoSBbKipGYXN0QVBJKipdKGh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20pIGZvciB0aGUgUHl0aG9uIGJhY2tlbmQgQVBJLgogIC0g8J+nsCBbU1FMTW9kZWxdKGh0dHBzOi8vc3FsbW9kZWwudGlhbmdvbG8uY29tKSBmb3IgdGhlIFB5dGhvbiBTUUwgZGF0YWJhc2UgaW50ZXJhY3Rpb25zIChPUk0pLgogIC0g8J+UjSBbUHlkYW50aWNdKGh0dHBzOi8vZG9jcy5weWRhbnRpYy5kZXYpLCB1c2VkIGJ5IEZhc3RBUEksIGZvciB0aGUgZGF0YSB2YWxpZGF0aW9uIGFuZCBzZXR0aW5ncyBtYW5hZ2VtZW50LgogIC0g8J+SviBbUG9zdGdyZVNRTF0oaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcpIGFzIHRoZSBTUUwgZGF0YWJhc2UuCi0g8J+agCBbUmVhY3RdKGh0dHBzOi8vcmVhY3QuZGV2KSBmb3IgdGhlIGZyb250ZW5kLgogIC0g8J+SgyBVc2luZyBUeXBlU2NyaXB0LCBob29rcywgW1ZpdGVdKGh0dHBzOi8vdml0ZWpzLmRldiksIGFuZCBvdGhlciBwYXJ0cyBvZiBhIG1vZGVybiBmcm9udGVuZCBzdGFjay4KICAtIPCfjqggW1RhaWx3aW5kIENTU10oaHR0cHM6Ly90YWlsd2luZGNzcy5jb20pIGFuZCBbc2hhZGNuL3VpXShodHRwczovL3VpLnNoYWRjbi5jb20pIGZvciB0aGUgZnJvbnRlbmQgY29tcG9uZW50cy4KICAtIPCfpJYgQW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbnRlbmQgY2xpZW50LgogIC0g8J+nqiBbUGxheXdyaWdodF0oaHR0cHM6Ly9wbGF5d3JpZ2h0LmRldikgZm9yIEVuZC10by1FbmQgdGVzdGluZy4KICAtIPCfpocgRGFyayBtb2RlIHN1cHBvcnQuCi0g8J+QiyBbRG9ja2VyIENvbXBvc2VdKGh0dHBzOi8vd3d3LmRvY2tlci5jb20pIGZvciBkZXZlbG9wbWVudCBhbmQgcHJvZHVjdGlvbi4KLSDwn5SSIFNlY3VyZSBwYXNzd29yZCBoYXNoaW5nIGJ5IGRlZmF1bHQuCi0g8J+UkSBKV1QgKEpTT04gV2ViIFRva2VuKSBhdXRoZW50aWNhdGlvbi4KLSDwn5OrIEVtYWlsIGJhc2VkIHBhc3N3b3JkIHJlY292ZXJ5LgotIPCfk6wgW01haWxjYXRjaGVyXShodHRwczovL21haWxjYXRjaGVyLm1lKSBmb3IgbG9jYWwgZW1haWwgdGVzdGluZyBkdXJpbmcgZGV2ZWxvcG1lbnQuCi0g4pyFIFRlc3RzIHdpdGggW1B5dGVzdF0oaHR0cHM6Ly9weXRlc3Qub3JnKS4KLSDwn5OeIFtUcmFlZmlrXShodHRwczovL3RyYWVmaWsuaW8pIGFzIGEgcmV2ZXJzZSBwcm94eSAvIGxvYWQgYmFsYW5jZXIuCi0g8J+aoiBEZXBsb3ltZW50IGluc3RydWN0aW9ucyB1c2luZyBEb2NrZXIgQ29tcG9zZSwgaW5jbHVkaW5nIGhvdyB0byBzZXQgdXAgYSBmcm9udGVuZCBUcmFlZmlrIHByb3h5IHRvIGhhbmRsZSBhdXRvbWF0aWMgSFRUUFMgY2VydGlmaWNhdGVzLgotIPCfj60gQ0kgKGNvbnRpbnVvdXMgaW50ZWdyYXRpb24pIGFuZCBDRCAoY29udGludW91cyBkZXBsb3ltZW50KSBiYXNlZCBvbiBHaXRIdWIgQWN0aW9ucy4KCiMjIyBEYXNoYm9hcmQgTG9naW4KClshW0FQSSBkb2NzXShpbWcvbG9naW4ucG5nKV0oaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RhcGkvZnVsbC1zdGFjay1mYXN0YXBpLXRlbXBsYXRlKQoKIyMjIERhc2hib2FyZCAtIEFkbWluCgpbIVtBUEkgZG9jc10oaW1nL2Rhc2hib2FyZC5wbmcpXShodHRwczovL2dpdGh1Yi5jb20vZmFzdGFwaS9mdWxsLXN0YWNrLWZhc3RhcGktdGVtcGxhdGUpCgojIyMgRGFzaGJvYXJkIC0gSXRlbXMKClshW0FQSSBkb2NzXShpbWcvZGFzaGJvYXJkLWl0ZW1zLnBuZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0YXBpL2Z1bGwtc3RhY2stZmFzdGFwaS10ZW1wbGF0ZSkKCiMjIyBEYXNoYm9hcmQgLSBEYXJrIE1vZGUKClshW0FQSSBkb2NzXShpbWcvZGFzaGJvYXJkLWRhcmsucG5nKV0oaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RhcGkvZnVsbC1zdGFjay1mYXN0YXBpLXRlbXBsYXRlKQoKIyMjIEludGVyYWN0aXZlIEFQSSBEb2N1bWVudGF0aW9uCgpbIVtBUEkgZG9jc10oaW1nL2RvY3MucG5nKV0oaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RhcGkvZnVsbC1zdGFjay1mYXN0YXBpLXRlbXBsYXRlKQoKIyMgSG93IFRvIFVzZSBJdAoKWW91IGNhbiAqKmp1c3QgZm9yayBvciBjbG9uZSoqIHRoaXMgcmVwb3NpdG9yeSBhbmQgdXNlIGl0IGFzIGlzLgoK4pyoIEl0IGp1c3Qgd29ya3MuIOKcqAoKIyMjIEhvdyB0byBVc2UgYSBQcml2YXRlIFJlcG9zaXRvcnkKCklmIHlvdSB3YW50IHRvIGhhdmUgYSBwcml2YXRlIHJlcG9zaXRvcnksIEdpdEh1YiB3b24ndCBhbGxvdyB5b3UgdG8gc2ltcGx5IGZvcmsgaXQgYXMgaXQgZG9lc24ndCBhbGxvdyBjaGFuZ2luZyB0aGUgdmlzaWJpbGl0eSBvZiBmb3Jrcy4KCkJ1dCB5b3UgY2FuIGRvIHRoZSBmb2xsb3dpbmc6CgotIENyZWF0ZSBhIG5ldyBHaXRIdWIgcmVwbywgZm9yIGV4YW1wbGUgYG15LWZ1bGwtc3RhY2tgLgotIENsb25lIHRoaXMgcmVwb3NpdG9yeSBtYW51YWxseSwgc2V0IHRoZSBuYW1lIHdpdGggdGhlIG5hbWUgb2YgdGhlIHByb2plY3QgeW91IHdhbnQgdG8gdXNlLCBmb3IgZXhhbXBsZSBgbXktZnVsbC1zdGFja2A6CgpgYGBiYXNoCmdpdCBjbG9uZSBnaXRAZ2l0aHViLmNvbTpmYXN0YXBpL2Z1bGwtc3RhY2stZmFzdGFwaS10ZW1wbGF0ZS5naXQgbXktZnVsbC1zdGFjawpgYGAKCi0gRW50ZXIgaW50byB0aGUgbmV3IGRpcmVjdG9yeToKCmBgYGJhc2gKY2QgbXktZnVsbC1zdGFjawpgYGAKCi0gU2V0IHRoZSBuZXcgb3JpZ2luIHRvIHlvdXIgbmV3IHJlcG9zaXRvcnksIGNvcHkgaXQgZnJvbSB0aGUgR2l0SHViIGludGVyZmFjZSwgZm9yIGV4YW1wbGU6CgpgYGBiYXNoCmdpdCByZW1vdGUgc2V0LXVybCBvcmlnaW4gZ2l0QGdpdGh1Yi5jb206b2N0b2NhdC9teS1mdWxsLXN0YWNrLmdpdApgYGAKCi0gQWRkIHRoaXMgcmVwbyBhcyBhbm90aGVyICJyZW1vdGUiIHRvIGFsbG93IHlvdSB0byBnZXQgdXBkYXRlcyBsYXRlcjoKCmBgYGJhc2gKZ2l0IHJlbW90ZSBhZGQgdXBzdHJlYW0gZ2l0QGdpdGh1Yi5jb206ZmFzdGFwaS9mdWxsLXN0YWNrLWZhc3RhcGktdGVtcGxhdGUuZ2l0CmBgYAoKLSBQdXNoIHRoZSBjb2RlIHRvIHlvdXIgbmV3IHJlcG9zaXRvcnk6CgpgYGBiYXNoCmdpdCBwdXNoIC11IG9yaWdpbiBtYXN0ZXIKYGBgCgojIyMgVXBkYXRlIEZyb20gdGhlIE9yaWdpbmFsIFRlbXBsYXRlCgpBZnRlciBjbG9uaW5nIHRoZSByZXBvc2l0b3J5LCBhbmQgYWZ0ZXIgZG9pbmcgY2hhbmdlcywgeW91IG1pZ2h0IHdhbnQgdG8gZ2V0IHRoZSBsYXRlc3QgY2hhbmdlcyBmcm9tIHRoaXMgb3JpZ2luYWwgdGVtcGxhdGUuCgotIE1ha2Ugc3VyZSB5b3UgYWRkZWQgdGhlIG9yaWdpbmFsIHJlcG9zaXRvcnkgYXMgYSByZW1vdGUsIHlvdSBjYW4gY2hlY2sgaXQgd2l0aDoKCmBgYGJhc2gKZ2l0IHJlbW90ZSAtdgoKb3JpZ2luICAgIGdpdEBnaXRodWIuY29tOm9jdG9jYXQvbXktZnVsbC1zdGFjay5naXQgKGZldGNoKQpvcmlnaW4gICAgZ2l0QGdpdGh1Yi5jb206b2N0b2NhdC9teS1mdWxsLXN0YWNrLmdpdCAocHVzaCkKdXBzdHJlYW0gICAgZ2l0QGdpdGh1Yi5jb206ZmFzdGFwaS9mdWxsLXN0YWNrLWZhc3RhcGktdGVtcGxhdGUuZ2l0IChmZXRjaCkKdXBzdHJlYW0gICAgZ2l0QGdpdGh1Yi5jb206ZmFzdGFwaS9mdWxsLXN0YWNrLWZhc3RhcGktdGVtcGxhdGUuZ2l0IChwdXNoKQpgYGAKCi0gUHVsbCB0aGUgbGF0ZXN0IGNoYW5nZXMgd2l0aG91dCBtZXJnaW5nOgoKYGBgYmFzaApnaXQgcHVsbCAtLW5vLWNvbW1pdCB1cHN0cmVhbSBtYXN0ZXIKYGBgCgpUaGlzIHdpbGwgZG93bmxvYWQgdGhlIGxhdGVzdCBjaGFuZ2VzIGZyb20gdGhpcyB0ZW1wbGF0ZSB3aXRob3V0IGNvbW1pdHRpbmcgdGhlbSwgdGhhdCB3YXkgeW91IGNhbiBjaGVjayBldmVyeXRoaW5nIGlzIHJpZ2h0IGJlZm9yZSBjb21taXR0aW5nLgoKLSBJZiB0aGVyZSBhcmUgY29uZmxpY3RzLCBzb2x2ZSB0aGVtIGluIHlvdXIgZWRpdG9yLgoKLSBPbmNlIHlvdSBhcmUgZG9uZSwgY29tbWl0IHRoZSBjaGFuZ2VzOgoKYGBgYmFzaApnaXQgbWVyZ2UgLS1jb250aW51ZQpgYGAKCiMjIyBDb25maWd1cmUKCllvdSBjYW4gdGhlbiB1cGRhdGUgY29uZmlncyBpbiB0aGUgYC5lbnZgIGZpbGVzIHRvIGN1c3RvbWl6ZSB5b3VyIGNvbmZpZ3VyYXRpb25zLgoKQmVmb3JlIGRlcGxveWluZyBpdCwgbWFrZSBzdXJlIHlvdSBjaGFuZ2UgYXQgbGVhc3QgdGhlIHZhbHVlcyBmb3I6CgotIGBTRUNSRVRfS0VZYAotIGBGSVJTVF9TVVBFUlVTRVJfUEFTU1dPUkRgCi0gYFBPU1RHUkVTX1BBU1NXT1JEYAoKWW91IGNhbiAoYW5kIHNob3VsZCkgcGFzcyB0aGVzZSBhcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZnJvbSBzZWNyZXRzLgoKUmVhZCB0aGUgW2RlcGxveW1lbnQubWRdKC4vZGVwbG95bWVudC5tZCkgZG9jcyBmb3IgbW9yZSBkZXRhaWxzLgoKIyMjIEdlbmVyYXRlIFNlY3JldCBLZXlzCgpTb21lIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiB0aGUgYC5lbnZgIGZpbGUgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgb2YgYGNoYW5nZXRoaXNgLgoKWW91IGhhdmUgdG8gY2hhbmdlIHRoZW0gd2l0aCBhIHNlY3JldCBrZXksIHRvIGdlbmVyYXRlIHNlY3JldCBrZXlzIHlvdSBjYW4gcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYGJhc2gKcHl0aG9uIC1jICJpbXBvcnQgc2VjcmV0czsgcHJpbnQoc2VjcmV0cy50b2tlbl91cmxzYWZlKDMyKSkiCmBgYAoKQ29weSB0aGUgY29udGVudCBhbmQgdXNlIHRoYXQgYXMgcGFzc3dvcmQgLyBzZWNyZXQga2V5LiBBbmQgcnVuIHRoYXQgYWdhaW4gdG8gZ2VuZXJhdGUgYW5vdGhlciBzZWN1cmUga2V5LgoKIyMgSG93IFRvIFVzZSBJdCAtIEFsdGVybmF0aXZlIFdpdGggQ29waWVyCgpUaGlzIHJlcG9zaXRvcnkgYWxzbyBzdXBwb3J0cyBnZW5lcmF0aW5nIGEgbmV3IHByb2plY3QgdXNpbmcgW0NvcGllcl0oaHR0cHM6Ly9jb3BpZXIucmVhZHRoZWRvY3MuaW8pLgoKSXQgd2lsbCBjb3B5IGFsbCB0aGUgZmlsZXMsIGFzayB5b3UgY29uZmlndXJhdGlvbiBxdWVzdGlvbnMsIGFuZCB1cGRhdGUgdGhlIGAuZW52YCBmaWxlcyB3aXRoIHlvdXIgYW5zd2Vycy4KCiMjIyBJbnN0YWxsIENvcGllcgoKWW91IGNhbiBpbnN0YWxsIENvcGllciB3aXRoOgoKYGBgYmFzaApwaXAgaW5zdGFsbCBjb3BpZXIKYGBgCgpPciBiZXR0ZXIsIGlmIHlvdSBoYXZlIFtgcGlweGBdKGh0dHBzOi8vcGlweC5weXBhLmlvLyksIHlvdSBjYW4gcnVuIGl0IHdpdGg6CgpgYGBiYXNoCnBpcHggaW5zdGFsbCBjb3BpZXIKYGBgCgoqKk5vdGUqKjogSWYgeW91IGhhdmUgYHBpcHhgLCBpbnN0YWxsaW5nIGNvcGllciBpcyBvcHRpb25hbCwgeW91IGNvdWxkIHJ1biBpdCBkaXJlY3RseS4KCiMjIyBHZW5lcmF0ZSBhIFByb2plY3QgV2l0aCBDb3BpZXIKCkRlY2lkZSBhIG5hbWUgZm9yIHlvdXIgbmV3IHByb2plY3QncyBkaXJlY3RvcnksIHlvdSB3aWxsIHVzZSBpdCBiZWxvdy4gRm9yIGV4YW1wbGUsIGBteS1hd2Vzb21lLXByb2plY3RgLgoKR28gdG8gdGhlIGRpcmVjdG9yeSB0aGF0IHdpbGwgYmUgdGhlIHBhcmVudCBvZiB5b3VyIHByb2plY3QsIGFuZCBydW4gdGhlIGNvbW1hbmQgd2l0aCB5b3VyIHByb2plY3QncyBuYW1lOgoKYGBgYmFzaApjb3BpZXIgY29weSBodHRwczovL2dpdGh1Yi5jb20vZmFzdGFwaS9mdWxsLXN0YWNrLWZhc3RhcGktdGVtcGxhdGUgbXktYXdlc29tZS1wcm9qZWN0IC0tdHJ1c3QKYGBgCgpJZiB5b3UgaGF2ZSBgcGlweGAgYW5kIHlvdSBkaWRuJ3QgaW5zdGFsbCBgY29waWVyYCwgeW91IGNhbiBydW4gaXQgZGlyZWN0bHk6CgpgYGBiYXNoCnBpcHggcnVuIGNvcGllciBjb3B5IGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0YXBpL2Z1bGwtc3RhY2stZmFzdGFwaS10ZW1wbGF0ZSBteS1hd2Vzb21lLXByb2plY3QgLS10cnVzdApgYGAKCioqTm90ZSoqIHRoZSBgLS10cnVzdGAgb3B0aW9uIGlzIG5lY2Vzc2FyeSB0byBiZSBhYmxlIHRvIGV4ZWN1dGUgYSBbcG9zdC1jcmVhdGlvbiBzY3JpcHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0YXBpL2Z1bGwtc3RhY2stZmFzdGFwaS10ZW1wbGF0ZS9ibG9iL21hc3Rlci8uY29waWVyL3VwZGF0ZV9kb3RlbnYucHkpIHRoYXQgdXBkYXRlcyB5b3VyIGAuZW52YCBmaWxlcy4KCiMjIyBJbnB1dCBWYXJpYWJsZXMKCkNvcGllciB3aWxsIGFzayB5b3UgZm9yIHNvbWUgZGF0YSwgeW91IG1pZ2h0IHdhbnQgdG8gaGF2ZSBhdCBoYW5kIGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBwcm9qZWN0LgoKQnV0IGRvbid0IHdvcnJ5LCB5b3UgY2FuIGp1c3QgdXBkYXRlIGFueSBvZiB0aGF0IGluIHRoZSBgLmVudmAgZmlsZXMgYWZ0ZXJ3YXJkcy4KClRoZSBpbnB1dCB2YXJpYWJsZXMsIHdpdGggdGhlaXIgZGVmYXVsdCB2YWx1ZXMgKHNvbWUgYXV0byBnZW5lcmF0ZWQpIGFyZToKCi0gYHByb2plY3RfbmFtZWA6IChkZWZhdWx0OiBgIkZhc3RBUEkgUHJvamVjdCJgKSBUaGUgbmFtZSBvZiB0aGUgcHJvamVjdCwgc2hvd24gdG8gQVBJIHVzZXJzIChpbiAuZW52KS4KLSBgc3RhY2tfbmFtZWA6IChkZWZhdWx0OiBgImZhc3RhcGktcHJvamVjdCJgKSBUaGUgbmFtZSBvZiB0aGUgc3RhY2sgdXNlZCBmb3IgRG9ja2VyIENvbXBvc2UgbGFiZWxzIGFuZCBwcm9qZWN0IG5hbWUgKG5vIHNwYWNlcywgbm8gcGVyaW9kcykgKGluIC5lbnYpLgotIGBzZWNyZXRfa2V5YDogKGRlZmF1bHQ6IGAiY2hhbmdldGhpcyJgKSBUaGUgc2VjcmV0IGtleSBmb3IgdGhlIHByb2plY3QsIHVzZWQgZm9yIHNlY3VyaXR5LCBzdG9yZWQgaW4gLmVudiwgeW91IGNhbiBnZW5lcmF0ZSBvbmUgd2l0aCB0aGUgbWV0aG9kIGFib3ZlLgotIGBmaXJzdF9zdXBlcnVzZXJgOiAoZGVmYXVsdDogYCJhZG1pbkBleGFtcGxlLmNvbSJgKSBUaGUgZW1haWwgb2YgdGhlIGZpcnN0IHN1cGVydXNlciAoaW4gLmVudikuCi0gYGZpcnN0X3N1cGVydXNlcl9wYXNzd29yZGA6IChkZWZhdWx0OiBgImNoYW5nZXRoaXMiYCkgVGhlIHBhc3N3b3JkIG9mIHRoZSBmaXJzdCBzdXBlcnVzZXIgKGluIC5lbnYpLgotIGBzbXRwX2hvc3RgOiAoZGVmYXVsdDogIiIpIFRoZSBTTVRQIHNlcnZlciBob3N0IHRvIHNlbmQgZW1haWxzLCB5b3UgY2FuIHNldCBpdCBsYXRlciBpbiAuZW52LgotIGBzbXRwX3VzZXJgOiAoZGVmYXVsdDogIiIpIFRoZSBTTVRQIHNlcnZlciB1c2VyIHRvIHNlbmQgZW1haWxzLCB5b3UgY2FuIHNldCBpdCBsYXRlciBpbiAuZW52LgotIGBzbXRwX3Bhc3N3b3JkYDogKGRlZmF1bHQ6ICIiKSBUaGUgU01UUCBzZXJ2ZXIgcGFzc3dvcmQgdG8gc2VuZCBlbWFpbHMsIHlvdSBjYW4gc2V0IGl0IGxhdGVyIGluIC5lbnYuCi0gYGVtYWlsc19mcm9tX2VtYWlsYDogKGRlZmF1bHQ6IGAiaW5mb0BleGFtcGxlLmNvbSJgKSBUaGUgZW1haWwgYWNjb3VudCB0byBzZW5kIGVtYWlscyBmcm9tLCB5b3UgY2FuIHNldCBpdCBsYXRlciBpbiAuZW52LgotIGBwb3N0Z3Jlc19wYXNzd29yZGA6IChkZWZhdWx0OiBgImNoYW5nZXRoaXMiYCkgVGhlIHBhc3N3b3JkIGZvciB0aGUgUG9zdGdyZVNRTCBkYXRhYmFzZSwgc3RvcmVkIGluIC5lbnYsIHlvdSBjYW4gZ2VuZXJhdGUgb25lIHdpdGggdGhlIG1ldGhvZCBhYm92ZS4KLSBgc2VudHJ5X2RzbmA6IChkZWZhdWx0OiAiIikgVGhlIERTTiBmb3IgU2VudHJ5LCBpZiB5b3UgYXJlIHVzaW5nIGl0LCB5b3UgY2FuIHNldCBpdCBsYXRlciBpbiAuZW52LgoKIyMgQmFja2VuZCBEZXZlbG9wbWVudAoKQmFja2VuZCBkb2NzOiBbYmFja2VuZC9SRUFETUUubWRdKC4vYmFja2VuZC9SRUFETUUubWQpLgoKIyMgRnJvbnRlbmQgRGV2ZWxvcG1lbnQKCkZyb250ZW5kIGRvY3M6IFtmcm9udGVuZC9SRUFETUUubWRdKC4vZnJvbnRlbmQvUkVBRE1FLm1kKS4KCiMjIERlcGxveW1lbnQKCkRlcGxveW1lbnQgZG9jczogW2RlcGxveW1lbnQubWRdKC4vZGVwbG95bWVudC5tZCkuCgojIyBEZXZlbG9wbWVudAoKR2VuZXJhbCBkZXZlbG9wbWVudCBkb2NzOiBbZGV2ZWxvcG1lbnQubWRdKC4vZGV2ZWxvcG1lbnQubWQpLgoKVGhpcyBpbmNsdWRlcyB1c2luZyBEb2NrZXIgQ29tcG9zZSwgY3VzdG9tIGxvY2FsIGRvbWFpbnMsIGAuZW52YCBjb25maWd1cmF0aW9ucywgZXRjLgoKIyMgUmVsZWFzZSBOb3RlcwoKQ2hlY2sgdGhlIGZpbGUgW3JlbGVhc2Utbm90ZXMubWRdKC4vcmVsZWFzZS1ub3Rlcy5tZCkuCgojIyBMaWNlbnNlCgpUaGUgRnVsbCBTdGFjayBGYXN0QVBJIFRlbXBsYXRlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIGxpY2Vuc2UuCg== readmeEtag: '"a9049b477932d592f01b8c2b88b9bc35aa7dfc9a"' readmeLastModified: Mon, 08 Dec 2025 19:13:01 GMT repositoryId: 172227885 description: >- 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: '2026-02-06T04:02:06Z' language: TypeScript archived: false stars: 41406 watchers: 289 forks: 8053 owner: fastapi logo: https://avatars.githubusercontent.com/u/156354296?v=4 license: MIT repoEtag: '"b89d7d6d311028da120ba78599f79bbf25a093d543d25fd6638f56e27bef2c2b"' repoLastModified: Fri, 06 Feb 2026 04:02:06 GMT foundInMaster: true category: Server Implementations id: 0354007b562b4efc3f08ce3da7f03afb oldLocations: - https://github.com/tiangolo/full-stack-fastapi-template - source: openapi3 tags repository: https://github.com/istandaarden/iwlz-indicatie v3: true repositoryMetadata: base64Readme: >- IyBpV2x6LUluZGljYXRpZXJlZ2lzdGVyIDIKKippV2x6LUluZGljYXRpZXJlZ2lzdGVyIGJldmF0IGRlIFtHcmFwaHFsLXNjaGVtYV0oL2dxbC1zcGVjaWZpY2F0aWUpIGtvcHBlbHZsYWsgc3BlY2lmaWNhdGllIGVuIHZvb3JnZXNjaHJldmVuIFtHcmFwaFFMLXF1ZXJ5IHRlbXBsYXRlc10oL2dxbC1xdWVyeS8pIHZvb3IgaGV0IHJhYWRwbGVnZW4gdmFuIFdseiBJbmRpY2F0aWVnZWdldmVucyBpbiBoZXQgaW5kaWNhdGllcmVnaXN0ZXIgZW4gZGUgW25vdGlmaWNhdGllc10oL25vdGlmaWNhdGllcykgdmVyem9uZGVuIHZhbnVpdCBoZXQgaW5kaWNhdGllcmVnaXN0ZXIuKioKCkhldCBpbmRpY2F0aWVyZWdpc3RlciBpcyBpbiBiZWhlZXIgYmlqIGhldCBDSVogZW4gaXMgb25kZXJkZWVsIHZhbiBoZXQgaVdsei1uZXR3ZXJrbW9kZWwuCgojIyBWZXJzaWVzIGVuIFN0YXR1cyAKCkVyIHppam4gYWx0aWpkIG1pbmltYWFsIHR3ZWUgdmVyc2llcyBhY3R1ZWVsLiBFZW4gdmVyc2llIGRpZSBpbiBwcm9kdWN0aWUgaXMsIHN0YXR1cyBpcyAqTG9wZW5kKiBlbiBlZW4gdmVyc2llIGRpZSBpbiBvbnR3aWtrZWxpbmcgaXMsIHN0YXR1cyBpcyAqSW4gb250d2lra2VsaW5nKi4KCnwgfCBMT1BFTkQgKCpkZWZhdWx0IGJyYW5jaCopIHwgSU4gT05UV0lLS0VMSU5HIHwgQVJDSElFRiB8CnwgLS06IHw6LS0gfDotLSB8IDotLSB8CnwgKioqSW5mb3JtYXRpZW1vZGVsKioqfCBbKipJbmRpY2F0aWVyZWdpc3RlciAyKipdKGh0dHBzOi8vaW5mb3JtYXRpZW1vZGVsLmlzdGFuZGFhcmRlbi5ubC9pbmZvcm1hdGllbW9kZWwvaXdsei9uZXR3ZXJrL2luZGljYXRpZXJlZ2lzdGVyLTIvKSAoKmh1aWRpZ2UgYnJhbmNoKikgfCAtLSB8IFtJbmRpY2F0aWVyZWdpc3RlciAxXShodHRwczovL2luZm9ybWF0aWVtb2RlbC5pc3RhbmRhYXJkZW4ubmwvaVdsei1JbmRpY2F0aWUtMS8pIHwKfCAqKipLb3BwZWx2bGFrIHNwZWNpZmljYXRpZSoqKiB8IFtEb2N1bWVudGF0aWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9pU3RhbmRhYXJkZW4vaVdsei1pbmRpY2F0aWUvdHJlZS9JbmRpY2F0aWVyZWdpc3Rlci0yKSAvIFtSZWxlYXNlIHYxLjYuNV0gfCAtLSB8ICBbRG9jdW1lbnRhdGllXShodHRwczovL2dpdGh1Yi5jb20vaVN0YW5kYWFyZGVuL2lXbHotaW5kaWNhdGllL3RyZWUvSW5kaWNhdGllcmVnaXN0ZXItMSkgLyBbUmVsZWFzZSB2MS4yXShodHRwczovL2dpdGh1Yi5jb20vaVN0YW5kYWFyZGVuL2lXbHotaW5kaWNhdGllL3JlbGVhc2VzL3RhZy92MS4yKSB8CnwgKioqRGF0dW0qKiogfCAyNy0xMS0yMDI1IC0gW0NoYW5nZWxvZ10oL0NIQU5HRUxPRy5tZCl8IC0tIHwganVsaSAyMDIzIHwKCiMjIyBDaGFuZ2Vsb2cKVm9sbGVkaWdlIENoYW5nZWxvZyBbSGllcl0oL0NIQU5HRUxPRy5tZCkKCiMjIEluaG91ZHNvcGdhdmUKLSBbaVdsei1JbmRpY2F0aWVyZWdpc3RlciAyXSgjaXdsei1pbmRpY2F0aWVyZWdpc3Rlci0yKQogIC0gW1ZlcnNpZXMgZW4gU3RhdHVzXSgjdmVyc2llcy1lbi1zdGF0dXMpCiAgICAtIFtDaGFuZ2Vsb2ddKCNjaGFuZ2Vsb2cpCiAgLSBbSW5ob3Vkc29wZ2F2ZV0oI2luaG91ZHNvcGdhdmUpCiAgLSBbT25kZXJkZWxlbl0oI29uZGVyZGVsZW4pCiAgICAtIFtHcmFwaHFsLXNjaGVtYV0oI2dyYXBocWwtc2NoZW1hKQogICAgLSBbR3JhcGhxbC1xdWVyeV0oI2dyYXBocWwtcXVlcnkpCiAgICAtIFtPcGVuIEFnZW50IFBvbGljeV0oI29wZW4tYWdlbnQtcG9saWN5KQogICAgLSBbTm90aWZpY2F0aWVzXSgjbm90aWZpY2F0aWVzKQogIC0gWyoqUmFhZHBsZWdlbiBJbmRpY2F0aWVyZWdpc3RlcioqXSgjcmFhZHBsZWdlbi1pbmRpY2F0aWVyZWdpc3RlcikKICAgIC0gW0F1dG9yaXNhdGllcmVnZWxzIGVuIGF1dG9yaXNhdGllbWF0cml4XSgjYXV0b3Jpc2F0aWVyZWdlbHMtZW4tYXV0b3Jpc2F0aWVtYXRyaXgpCiAgLSBbQWFudnVsbGVuZGUgRG9jdW1lbnRhdGllXSgjYWFudnVsbGVuZGUtZG9jdW1lbnRhdGllKQogICAgLSBbSW5mb3JtYXRpZW1vZGVsXSgjaW5mb3JtYXRpZW1vZGVsKQogICAgLSBbR3JhcGhRTF0oI2dyYXBocWwpCiAgICAtIFtPcGVuIEFnZW50IFBvbGljeV0oI29wZW4tYWdlbnQtcG9saWN5LTEpCiAgLSBbTWVlciBpbmZvcm1hdGllXSgjbWVlci1pbmZvcm1hdGllKQogIC0gW0NvbnRhY3RwZXJzb25lbjpdKCNjb250YWN0cGVyc29uZW4pCgojIyBPbmRlcmRlbGVuCkRlIGtvcHBlbHZsYWsgc3BlY2lmaWNhdGllIHZhbiBoZXQgSW5kaWNhdGllcmVnaXN0ZXIgbWFha3Qgb25kZXJkZWVsIHVpdCB2YW4gZGUgKippU3RhbmRhYXJkIGlXbHoqKi4gRGUgc3BlY2lmaWNhdGllcyB2YW4gZGUgYW5kZXJlIG9uZGVyZGVsZW4sIHpvYWxzIEVSRCwgcmVnZWxzLCBwcm9jZXNiZXNjaHJpanZpbmcsIGF1dG9yaXNhdGllcmVnZWxzLCBub3RpZmljYXRpZS10eXBlbiBzdGFhbiBpbiBoZXQgW0luZm9ybWF0aWVtb2RlbCBpV2x6XShodHRwczovL2luZm9ybWF0aWVtb2RlbC5pc3RhbmRhYXJkZW4ubmwvKSBkYXQgdGUgdmluZGVuIGlzIHZpYSBkZSB3ZWJzaXRlOiBbaHR0cHM6Ly9pbmZvcm1hdGllbW9kZWwuaXN0YW5kYWFyZGVuLm5sL10oaHR0cHM6Ly9pbmZvcm1hdGllbW9kZWwuaXN0YW5kYWFyZGVuLm5sLykKCiFbb25kZXJkZWxlbl0oL3NyYy9PbmRlcmRlbGVuX05ldHdlcmsucG5nKQp2Lmwubi5yLiBSYWFkcGxlZ2VyIGRvZXQgdmlhIEdyYXBoUUwtcXVlcnkgZWVuIHJhYWRwbGVnaW5nLiBPcGVuIFBvbGljeSBhZ2VudCBjb250cm9sZWVydCBvZiBxdWVyeSB2b2xkb2V0IGFhbiBhdXRvcmlzYXRpZS1yZWdlbHMgdmFuIGRhdCByZWdpc3Rlci4gR3JhcGhRTC1zY2hlbWEgZGVmaW5pZWVydCBoZXQgZGF0YS1zY2hlbWEgdmFuIGhldCByZWdpc3Rlci4KCiMjIyBHcmFwaHFsLXNjaGVtYSAKRGUgW0dyYXBocWwtc2NoZW1hIHNwZWNpZmljYXRpZV0oL2dxbC1zcGVjaWZpY2F0aWUvKSBpcyBiZWRvZWx0IHZvb3IgaW1wbGVtZW50YXRpZSBkb29yIGRlIGJyb25ob3VkZXIgZW4gYmVzY2hyaWpmdCBob2UgZGUgZGF0YSBhYW4gZWxrYWFyIGlzIGdlcmVsYXRlZXJkLiAKCj4gWyFOT1RFXQo+IERlIGdyYXBocWwtc3BlY2lmaWNhdGllIGlzIHRlIHZpbmRlbiBpbiBkZSBmb2xkZXIgWyoqL2dxbC1zcGVjaWZpY2F0aWUqKl0oL2dxbC1zcGVjaWZpY2F0aWUvKS4gCgojIyMgR3JhcGhxbC1xdWVyeQpEZSBbR3JhcGhxbC1xdWVyaWVzXSgvZ3FsLXF1ZXJ5LykgYmVzY2hyaWp2ZW4gaGV0IHRlbXBsYXRlIGhvZSBlZW4gcmFhZHBsZWdlciB2YW51aXQgemlqbiByb2wgaW5mb3JtYXRpZSBrYW4gcmFhZHBsZWdlbi4gRGV6ZSB0ZW1wbGF0ZSB2b2xndCBhbHRpamQgaGV0IEdyYXBoUUwtc2NoZW1hIG1hYXIgbW9ldCBvcCBiZXBhYWxkZSBtb21lbnRlbiBhYW4gdmFzdGUgcGF0cm9uZW4gdm9sZG9lbiB2YW53ZWdlIGRlIGdlbGRlbmRlIGF1dG9yaXNhdGllLiBHYWF0IGVlbiByYWFkcGxlZ2VyIGJ1aXRlbiBkaXQgcGF0cm9vbiBkYW4gemFsIGRlIHZyYWFnIHdvcmRlbiBhZmdla2V1cmQgZW4ga3Jpamd0IGRlIHJhYWRwbGVnZXIgZ2VlbiBpbnppY2h0IGluIGRlIGRhdGEuIAoKPiBbIU5PVEVdCj4gSGV0IG92ZXJ6aWNodCB2YW4gZGUgYmVzY2hpa2JhcmUgdGVtcGxhdGVzIGluY2x1c2llZiBlZW4gdG9lbGljaHRpbmcgdm9vciB3ZWxrZSBwYXJ0aWogZGUgdGVtcGxhdGUgaXMgZW4gYXV0b3Jpc2F0aWVmbG93IGlzIHRlIHZpbmRlbiBpbiBkZSBmb2xkZXIgWyoqL2dxbC1xdWVyeSoqXSgvZ3FsLXF1ZXJ5Lykgc3RhYXQgLgoKIyMjIE9wZW4gQWdlbnQgUG9saWN5CkRlIE9wZW4gQWdlbnQgUG9saWN5IGNvbnRyb2xlZXJ0IG9mIGVlbiBxdWVyeSB2b2xkb2V0IGFhbiBkZSBkYWFydm9vciBhZmdlc3Byb2tlbiB0ZW1wbGF0ZS4gRGUgcG9saWN5IGlzIGdlYmFzZWVyZCBvcCBkZSBhdXRvcmlzYXRpZXJlZ2VscyB2YW4gZGF0IHJlZ2lzdGVyLiAKCkRlIHBvbGljeSBpcyBiZXNjaGlrYmFhciBpbjogQEBAIG5vZyB0ZSBiZXBhbGVuLgoKPiBbIU5PVEVdCj4gRGUgZnVuY3Rpb25lbGUgYmVzY2hyaWp2aW5nIHZhbiBkZSB0b2VnYW5nc2NvbnRyb2xlIHBlciByYWFkcGxlZ2luZyBpcyBiZXNjaGlrYmFhciBpbiBkZSBmb2xkZXIgKipbL3JhYWRwbGVnZW5dKC9yYWFkcGxlZ2VuLykqKgoKIyMjIE5vdGlmaWNhdGllcwpNZXQgZWVuIG5vdGlmaWNhdGllIHdvcmR0IGVlbiBuZXR3ZXJrLWRlZWxuZW1lciBvcCBkZSBob29ndGUgZ2VicmFjaHQgZG9vciBlZW4gYnJvbmhvdWRlciBkYXQgZXIgbmlldXdlIChvZiBnZXdpanppZ2RlKSBpbmZvcm1hdGllIGlzIGRpZSBkaXJlY3RlIG9mIGFmZ2VsZWlkZSBiZXRyZWtraW5nIGhlZWZ0IG9wIGRpZSBkZWVsbmVtZXIuIERlIG5vdGlmaWNhdGllIGJldmF0IGluZm9ybWF0aWUgZGllIGRlIGRlZWxuZW1lciBpbiBzdGFhdCBzdGVsdCBkZSByZWxldmFudGUgaW5mb3JtYXRpZSB0ZSByYWFkcGxlZ2VuIGJpaiBkZSBicm9uLiBFZW4gbm90aWZpY2F0aWUgbG9vcHQgYWx0aWpkIHZhbiBicm9uIG5hYXIgZGVlbG5lbWVyLgoKPiBbIU5PVEVdCj4gRGUgbm90aWZpY2F0aWVzIHZhbnVpdCBoZXQgSW5kaWNhdGllcmVnaXN0ZXIgemlqbiB0ZSB2aW5kZW4gaW4gZGUgZm9sZGVyIFsqKi9ub3RpZmljYXRpZXMqKl0oL25vdGlmaWNhdGllcy8pCgojIyAqKlJhYWRwbGVnZW4gSW5kaWNhdGllcmVnaXN0ZXIqKgoKSGV0IHJhYWRwbGVnZW4gdmFuIGhldCBJbmRpY2F0aWVyZWdpc3RlciBpcyBnZWJvbmRlbiBhYW4gdm9vcndhYXJkZW4uIERlIHJhYWRwbGVnZXIgbW9ldCBiZXZvZWdkIHppam4gw6luIGhldCB2YXN0Z2VzdGVsZGUgcmFhZHBsZWVncGF0cm9vbiB2b2xnZW4uIERpdCBwYXRyb29uIGlzIGVzc2VudGllZWwgdm9vciBoZXQgdmFsaWRlcmVuIHZhbiBkZSB0b2VzdGVtbWluZy4gCgpBbHMgZGF0IHBhdHJvb24gbmlldCB3b3JkdCBnZXZvbGdkIOKAlCBiaWp2b29yYmVlbGQgZG9vciBvbnRicmVrZW5kZSBhdXRvcmlzYXRpZSwgb25qdWlzdGUgb2YgaW5jb21wbGV0ZSBpbnB1dCwgb2YgaGV0IG9wdnJhZ2VuIHZhbiBvbmdlb29ybG9vZmRlIGdlZ2V2ZW5zIOKAlCB3b3JkdCBkZSB0b2VnYW5nIGdld2VpZ2VyZCBvZiBoZXQgcmVzdWx0YWF0IGJlcGVya3QuCgpVc2UtY2FzZXMgYmVzY2hyaWp2ZW4gaG9lIGVlbiBkZWVsbmVtZXIgaGV0IHJlZ2lzdGVyIGNvcnJlY3QgcmFhZHBsZWVndC4KCiMjIyBBdXRvcmlzYXRpZXJlZ2VscyBlbiBhdXRvcmlzYXRpZW1hdHJpeApEZSB0b2VnYW5nIHRvdCBnZWdldmVucyBpcyB2YXN0Z2VsZWdkIGRvb3JtaWRkZWwgdmFuICoqQXV0b3Jpc2F0aWVyZWdlbHMqKiBlbiBkZSAqKkF1dG9yaXNhdGllbWF0cml4KiouIERlIFthdXRvcmlzYXRpZXJlZ2Vsc10oaHR0cHM6Ly9pbmZvcm1hdGllbW9kZWwuaXN0YW5kYWFyZGVuLm5sL2luZm9ybWF0aWVtb2RlbC9pd2x6L25ldHdlcmsvaW5kaWNhdGllcmVnaXN0ZXItMi9yZWdlbHMvYXV0b3Jpc2F0aWVyZWdlbC8pIHppam4gdGUgdmluZGVuIGluIGhldCBJbmZvcm1hdGllbW9kZWwgSW5kaWNhdGllcmVnaXN0ZXIgMiAodmlhIFtoaWVyXShodHRwczovL2luZm9ybWF0aWVtb2RlbC5pc3RhbmRhYXJkZW4ubmwvaW5mb3JtYXRpZW1vZGVsL2l3bHovbmV0d2Vyay9pbmRpY2F0aWVyZWdpc3Rlci0yL3JlZ2Vscy9hdXRvcmlzYXRpZXJlZ2VsLykpIGVuIGRlIFthdXRvcmlzYXRpZW1hdHJpeF0oL3JhYWRwbGVnZW4vYXV0b3Jpc2F0aWVtYXRyaXhfaW5kaWNhdGllcmVnaXN0ZXIubWQpIGlzIFtoaWVyXSgvcmFhZHBsZWdlbi9hdXRvcmlzYXRpZW1hdHJpeF9pbmRpY2F0aWVyZWdpc3Rlci5tZCkgdGUgdmluZGVuLgoKCj4gWyFOT1RFXQo+IERlIGZ1bmN0aW9uZWxlIGJlc2NocmlqdmluZyB2YW4gcGVyIHJhYWRwbGVnaW5nIHBlciBkZWVsbmVtZXIgaXMgYmVzY2hpa2JhYXIgaW4gZGUgZm9sZGVyICoqWy9yYWFkcGxlZ2VuXSgvcmFhZHBsZWdlbi8pKioKCk1lZXIgaW5mb3JtYXRpZSBvdmVyIGRlIHN0cnVjdHV1ciB2YW4gaGV0IHJhYWRwbGVnZW4gZW4gaGV0IHZhbGlkZXJlbiBlcnZhbiBpcyB0ZSBsZXplbiBpbiBoZXQgW0Fmc3ByYWtlbnN0ZWxzZWwgaVdseiAtIFJhYWRwbGVnZW5dKGh0dHBzOi8vd2x6LmF0bGFzc2lhbi5uZXQvd2lraS94L0tncGdBUSkKCgojIyBBYW52dWxsZW5kZSBEb2N1bWVudGF0aWUKCiMjIyBJbmZvcm1hdGllbW9kZWwKCiFbaW5mb3JtYXRpZW1vZGVsXSgvc3JjL0luZm9ybWF0aWVtb2RlbC1zbWwucG5nKQoKT25kZXJzdGV1bmVuZGUgZG9jdW1lbnRhdGllIGlzIHRlIHZpbmRlbiBpbiBoZXQgSW5mb3JtYXRpZW1vZGVsLCB2aWEgZGUgd2Vic2l0ZSBbaHR0cHM6Ly9pbmZvcm1hdGllbW9kZWwuaXN0YW5kYWFyZGVuLm5sL10oaHR0cHM6Ly9pbmZvcm1hdGllbW9kZWwuaXN0YW5kYWFyZGVuLm5sLykgZW4gZGFhciBkZSBnZXdlbnN0ZSB2ZXJzaWUgdGUgc2VsZWN0ZXJlbiAoemllIG9vayBpbiBkZSB0YWJlbCBoaWVyYm92ZW4gdm9vciBlZW4gZGlyZWN0ZSB2ZXJ3aWp6aW5nKS4KCiMjIyBHcmFwaFFMCiFbR3JhcGhRTF0oL3NyYy9HcmFwaFFMLWxvZ28tc21sLnBuZykgCgp6aWUgW0dyYXBoUUwub3JnXShodHRwczovL2dyYXBocWwub3JnKSAKCiMjIyBPcGVuIEFnZW50IFBvbGljeQohW09QQV0oL3NyYy9PUEEtbG9nby1zbWwucG5nKSAKCnppZSBbT3BlbiBBZ2VudCBQb2xpY3ldKGh0dHBzOi8vd3d3Lm9wZW5wb2xpY3lhZ2VudC5vcmcpIGVuIFtkb2N1bWVudGF0aWVdKGh0dHBzOi8vd3d3Lm9wZW5wb2xpY3lhZ2VudC5vcmcvZG9jcy9sYXRlc3QvKQoKIyMgTWVlciBpbmZvcm1hdGllCiogQWN0aWVwcm9ncmFtbWEgaVdsejogdmFuIGtldGVuIG5hYXIgbmV0d2VyazogW2hldCBBY3RpZXByb2dyYW1tYSBpV2x6XShodHRwczovL3d3dy5pc3RhbmRhYXJkZW4ubmwvaXdsei9hY3RpZXByb2dyYW1tYS9pbmRleCAiT3ZlciBBY3RpZXByb2dyYW1tYSBpV2x6IikKKiBJbmZvcm1hdGllbW9kZWwgaVN0YW5kYWFyZGVuIGlXbHo6IFtJbmZvcm1hdGllbW9kZWxsZW5dKGh0dHBzOi8vaW5mb3JtYXRpZW1vZGVsLmlzdGFuZGFhcmRlbi5ubCkKKiBQb3J0YWFsIHZvb3IgaVN0YW5kYWFyZGVuIGluIGRlClpvcmcgZW4gT25kZXJzdGV1bmluZzogW2hvbWVwYWdpbmEgaVN0YW5kYWFyZGVuXShodHRwczovL3d3dy5pc3RhbmRhYXJkZW4ubmwpCgojIyBDb250YWN0cGVyc29uZW46CiogRGVubmlzIGRlIEdvdXcgLSBbQGRlbm5pc2RlZ291d10oaHR0cDovL2dpdGh1Yi5jb20vZGVubmlzZGVnb3V3KQoqIFJlbW8gdmFuIFJlc3QgLSBbQHJ2YW5yZXN0XShodHRwczovL2dpdGh1Yi5jb20vcnZhbnJlc3QpCgoK readmeEtag: '"c803f85eba06e93569344d5fc20b8da24a99cdb8"' readmeLastModified: Tue, 03 Feb 2026 13:45:54 GMT repositoryId: 204430425 description: Koppelvlak specificatie Indicatieregister created: '2019-08-26T08:25:11Z' updated: '2026-02-03T13:45:59Z' language: null archived: false stars: 2 watchers: 5 forks: 4 owner: iStandaarden logo: https://avatars.githubusercontent.com/u/54351663?v=4 repoEtag: '"71e97540c9730e73af76006f449850f72212ce58db36029a83e0f3ecf3975d73"' repoLastModified: Tue, 03 Feb 2026 13:45:59 GMT foundInMaster: true category: Documentation id: 5a079f438418ad2614981480bbbba221 - source: openapi3 tags repository: https://github.com/javathought/vx-api v3: true repositoryMetadata: base64Readme: >- IyB2eC1hcGkKVGVzdGluZyB2ZXJ0eC13ZWItYXBpLWNvbnRyYWN0CgpbIVtDb2RhY3kgQmFkZ2VdKGh0dHBzOi8vYXBpLmNvZGFjeS5jb20vcHJvamVjdC9iYWRnZS9HcmFkZS84MGRlOGI2OTRkY2E0NDAxYmRmZDhjNDFmODU4YmNhNyldKGh0dHBzOi8vd3d3LmNvZGFjeS5jb20vYXBwL2phdmF0aG91Z2h0L3Z4LWFwaT91dG1fc291cmNlPWdpdGh1Yi5jb20mYW1wO3V0bV9tZWRpdW09cmVmZXJyYWwmYW1wO3V0bV9jb250ZW50PWphdmF0aG91Z2h0L3Z4LWFwaSZhbXA7dXRtX2NhbXBhaWduPUJhZGdlX0dyYWRlKQpbIVtDb2RhY3kgQmFkZ2VdKGh0dHBzOi8vYXBpLmNvZGFjeS5jb20vcHJvamVjdC9iYWRnZS9Db3ZlcmFnZS84MGRlOGI2OTRkY2E0NDAxYmRmZDhjNDFmODU4YmNhNyldKGh0dHBzOi8vd3d3LmNvZGFjeS5jb20vYXBwL2phdmF0aG91Z2h0L3Z4LWFwaT91dG1fc291cmNlPWdpdGh1Yi5jb20mdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY29udGVudD1qYXZhdGhvdWdodC92eC1hcGkmdXRtX2NhbXBhaWduPUJhZGdlX0NvdmVyYWdlKQpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9qYXZhdGhvdWdodC92eC1hcGkuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvamF2YXRob3VnaHQvdngtYXBpKQo= readmeEtag: '"150f1b56f142d0d9f0b8c8a82898e8ff9c0c60c7"' readmeLastModified: Mon, 20 Nov 2017 01:05:12 GMT repositoryId: 110819342 description: Testing vertx-web-api-contract created: '2017-11-15T10:29:10Z' updated: '2017-11-17T23:00:22Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: javathought logo: https://avatars.githubusercontent.com/u/1075135?v=4 license: Apache-2.0 repoEtag: '"f36696c8638077bbdf451820ba1352a8c8af524dafcc93fc76bfe83a09bcb053"' repoLastModified: Fri, 17 Nov 2017 23:00:22 GMT foundInMaster: true category: Data Validators id: b1645dfb1035ae7d0d778e0cc5534f4b - source: openapi3 tags repository: https://github.com/marcusvc/backend-rest-swagger-buffer-log v3: true repositoryMetadata: base64Readme: >- IyBiYWNrZW5kLXJlc3Qtc3dhZ2dlci1idWZmZXItbG9nClRoaXMgaXMgYSBzaW1wbGUgSmF2YSBSRVNUIEFQSSBleGFtcGxlIGludGVuZGVkIHRvIHJ1biB3aXRoIFdpbGRmbHkuIEl0IGhhcyBPcGVuYXBpIDMuMCBkb2N1bWVudGF0aW9uIChTd2FnZ2VyKSBhbmQgYSBIdHRwU2VydmxldChSZXF1ZXN0L1Jlc3BvbnNlKSBidWZmZXIgaW1wbGVtZW50YXRpb24uCgojIE9wZW5BUEkgMy4wIHNwZWNpZmljYXRpb24gKGZvcm1lcmx5IFN3YWdnZXIgc3BlY2lmaWNhdGlvbikKUHJvdmlkZXMgYSBPcGVuQVBJIDMuMCBzcGVjaWZpY2F0aW9uIHdyaXR0ZW4gaW4gWUFNTCBvciBKU09OIGNhbGxpbmcgdGhlIGZvbGxvd2luZyBVUkwsIHJlc3BlY3RpdmlseToKPiBodHRwW3NdOi8vaG9zdC9jb250ZXh0L2Jhc2VfYXBwbGljYXRpb25fcGF0aF9mb3JfYWxsX3Jlc3RfcmVzb3VyY2VzL29wZW5hcGkueWFtbAo+IGh0dHBbc106Ly9ob3N0L2NvbnRleHQvYmFzZV9hcHBsaWNhdGlvbl9wYXRoX2Zvcl9hbGxfcmVzdF9yZXNvdXJjZXMvb3BlbmFwaS5qc29uCgojIFN3YWdnZXIgVUkKU2luZ2xlIHBhZ2UgYXBwbGljYXRpb24gdGhhdCBleHBvc2VzIEFQSSBkb3VtZW50YXRpb24gYW5kIHByb3ZpZGVzIGEgdGVzdCBzdWl0ZSBiYXNlZCBvbiBvcGVuYXBpIHNwZWNpZmljYXRpb24uCgojIEh0dHBTZXJ2bGV0KFJlcXVlc3QvUmVzcG9uc2UpIGJ1ZmZlcgpUaGUgbmVlZCBvZiBhIEh0dHBTZXJ2bGV0KFJlcXVlc3QvUmVzcG9uc2UpIGlzIHRvIGxvZyB0aGUgaW5wdXRzdHJlYW0gYW5kIG91dHB1dHN0cmVhbSwgYWZ0ZXIgb3IgYmVmb3JlIHBhcnNpbmcgdGltZSwgcmVzcGVjdGl2bHkuIFRoZSBpbnB1dHN0cmVhbSBvZiBhIEh0dHBTZXJ2bGV0UmVxdWVzdCBhbmQgdGhlIG91dHB1dHN0cmVhbSBvZiBhIEh0dHBTZXJ2bGV0UmVzcG9uc2UgY2FuIG9ubHkgYmUgY29uc3VtZWQgb25jZS4gSWYgd2UgdHJ5IHRvIGNvbnN1bSBpbnB1dHN0cmVhbSBhZnRlciBwYXJzZXIsIGl0J3MgZ29ubmEgYmUgZW1wdHkuIElmIHdlIHRyeSB0byBjb25zdW0gb3V0cHV0c3RyZWFtIGJlZm9yZSBwYXJzZXIsIHRoZXJlIHdpbGwgYmUgbm8gZGF0YSB0byBwYXJzZS4gVXNpbmcgYSBIdHRwU2VydmxldChSZXF1ZXN0L1Jlc3BvbnNlKSBidWZmZXIgaW1wbGVtZW50YXRpb24sIGl0J3MgcG9zc2libGUgdG8gbG9nIHJlcXVlc3QncyBpbnB1dHN0cmVhbSAgYW5kIHJlc3BvbnNlJ3Mgb3V0cHV0c3RyZWFtIGluIHRoZSBtaWRkbGUgb2YgdGhlIHByb2Nlc3MuCg== readmeEtag: '"de3569af30c131d611a4d6cbb0cd6067d3dbc999"' readmeLastModified: Mon, 21 Jan 2019 16:44:10 GMT repositoryId: 166137544 description: >- Simple Java REST API example using OpenAPI 3.0, Swagger-UI, request and response buffer created: '2019-01-17T01:19:06Z' updated: '2019-01-21T16:45:56Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: marcusvc logo: https://avatars.githubusercontent.com/u/20482843?v=4 license: Apache-2.0 repoEtag: '"5ed0faa923ab025c5e54c1599652d4de6d2a06edf4d4204097f6ccd9642d3acc"' repoLastModified: Mon, 21 Jan 2019 16:45:56 GMT foundInMaster: true category: Parsers id: 0f686a53ed0f1513e85de5295391ef6c - source: openapi3 tags repository: https://github.com/dperez3/oapi-generator v3: true repositoryMetadata: base64Readme: >- IyBvYXBpLWdlbmVyYXRvcgoKWyFbQ29udmVudGlvbmFsIENvbW1pdHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQ29udmVudGlvbmFsJTIwQ29tbWl0cy0xLjAuMC15ZWxsb3cuc3ZnKV0oaHR0cHM6Ly9jb252ZW50aW9uYWxjb21taXRzLm9yZykKWyFbYnVkZHkgcGlwZWxpbmVdKGh0dHBzOi8vYXBwLmJ1ZGR5LndvcmtzL2RwZXJlejNpaWkvb2FwaS1nZW5lcmF0b3IvcGlwZWxpbmVzL3BpcGVsaW5lLzE5NDM5MC9iYWRnZS5zdmc/dG9rZW49M2M3ZDQ4NGJiZTAwMDNhYmExOTE4ODQ0MjQzZjI3NTJhOTA0ZTA2Y2I1MmRjMTJiYmVkZWU5Y2VlYWU3ODY0NiAiYnVkZHkgcGlwZWxpbmUiKV0oaHR0cHM6Ly9hcHAuYnVkZHkud29ya3MvZHBlcmV6M2lpaS9vYXBpLWdlbmVyYXRvci9waXBlbGluZXMvcGlwZWxpbmUvMTk0MzkwKQoKR2VuZXJhdGUgT3BlbkFQSSBkb2N1bWVudHMgZnJvbSBtdWx0aXBsZSBTd2FnZ2VyIHYyIG9yIE9wZW4gQVBJIHYzIGRvY3VtZW50cy4KCltucG1dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29hcGktZ2VuZXJhdG9yKQoKIyMgSW5zdGFsbGF0aW9uCgojIyMgSW5zdGFsbAoKYGBgYmFzaApucG0gaW5zdGFsbCAtLXNhdmUtZGV2IG9hcGktZ2VuZXJhdG9yCm5wbSBpbnN0YWxsIC0tc2F2ZS1kZXYgb3BlbmFwaS10eXBlc0AxLjMuNApgYGAKCiMjIyBDb25maWd1cmUKCiMjIyMgQ29uZmlnIEZpbGUKCkphdmFzY3JpcHQKCmBgYGpzCmNvbnN0IHYxR2VuRG9jID0geyAvKi4uLiovIH07Cgpjb25zdCB2MkdlbkRvYyA9IHsgLyouLi4qLyB9OwoKY29uc3QgY29uZmlnID0KewogIGdlbkNvbmZpZ3M6IFt2MUdlbkRvYywgdjJHZW5Eb2NdCn07CmBgYAoKT3IgVHlwZVNjcmlwdAoKYGBgdHMKaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9IGZyb20gIm9hcGktZ2VuZXJhdG9yL2NvbmZpZ3VyYXRpb24iOwppbXBvcnQgeyBPcGVuQVBJVjMgfSBmcm9tICJvcGVuYXBpLXR5cGVzIjsKCmNvbnN0IHYxR2VuRG9jOiBDb25maWd1cmF0aW9uLklHZW5PcGVuQVBJVjNDb25maWcgPSB7IC8qLi4uKi8gfTsKCmNvbnN0IHYyR2VuRG9jOiBDb25maWd1cmF0aW9uLklHZW5PcGVuQVBJVjNDb25maWcgPSB7IC8qLi4uKi8gfTsKCmNvbnN0IGNvbmZpZzogQ29uZmlndXJhdGlvbi5JTWFueUdlbk9wZW5BUElWM0NvbmZpZ3MgPQp7CiAgZ2VuQ29uZmlnczogW3YxR2VuRG9jLCB2MkdlbkRvY10KfTsKCmV4cG9ydCA9IGNvbmZpZzsKYGBgCgpgb3BlbmFwaS10eXBlc2AgY29tYmluZWQgd2l0aCBUeXBlc1NjcmlwdCBpbnRlbGxpc2Vuc2UgcHJvdmlkZXMgdGhlIGVhc2llc3Qgd2F5IHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gQVBJLgoKIyMjIyBgcGFja2FnZS5qc29uYAoKYGBganNvbgp7CiAgInNjcmlwdHMiOiB7CiAgICAib2FwaS1nZW46cnVuIjogIm9hcGktZ2VuZXJhdG9yIC0tY29uZmlnIHtwYXRoX3RvX2Fib3ZlX2NvbmZpZ19maWxlfSIKICB9Cn0KYGBgCg== readmeEtag: '"7dae70b56b4c6e72e8570ed8f5f8d23e8d59c9bb"' readmeLastModified: Mon, 20 Apr 2020 16:34:24 GMT repositoryId: 193387986 description: >- Generate OpenAPI documents from multiple Swagger v2 or Open API v3 documents. created: '2019-06-23T19:34:08Z' updated: '2020-04-20T16:34:28Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: dperez3 logo: https://avatars.githubusercontent.com/u/7634621?v=4 license: GPL-3.0 repoEtag: '"77d3c232d117b57554ea961a2df9176c4f458a46ef443366381a3ce0ea586207"' repoLastModified: Mon, 20 Apr 2020 16:34:28 GMT foundInMaster: true category: - SDK - Parsers id: 4e6af3de5a8e564669f91429104028f1 - source: openapi3 tags repository: https://github.com/zaki-yama/kintone-openapi-generator v3: true repositoryMetadata: base64Readme: >- a2ludG9uZSBPcGVuQVBJIFNwZWMgR2VuZXJhdG9yCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKR2VuZXJhdGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIGRvY3VtZW50IGZyb20ga2ludG9uZSdzIFJFU1QgQVBJIFNjaGVtYXMuICAKSXQgY2FuIGFsc28gbGF1bmNoIFJFU1QgQVBJIGRvY3VtZW50IHNlcnZlciBhbmQgbW9jayBzZXJ2ZXIuCgojIyBJbnN0YWxsYXRpb24KCmBgYAokIG5wbSBpbnN0YWxsCmBgYAoKIyMgVXNhZ2UKCmBgYHpzaAojIEZldGNoIGtpbnRvbmUncyBSRVNUIEFQSSBTY2hlbWFzIGFuZCBnZW5lcmF0ZSBPcGVuQVBJIFNwZWMgZG9jdW1lbnQuCiMgSXQgZ2VuZXJhdGVzIGBzcmMvZ2VuZXJhdGVkL2tpbnRvbmUtYXBpLXNjaGVtYXMuanNvbmAgYW5kIGBzcmMvZ2VuZXJhdGVkL29wZW5hcGkueWFtbGAuCiQgbnBtIHJ1biBnZW5lcmF0ZQoKIyBSdW4gUkVTVCBBUEkgZG9jdW1lbnQgc2VydmVyIChodHRwOi8vbG9jYWxob3N0OjMwMDApCiQgbnBtIHJ1biBkb2MKCiMgUnVuIG1vY2sgc2VydmVyIChodHRwOi8vbG9jYWxob3N0OjQwMTApCiQgbnBtIHJ1biBtb2NrCmBgYAo= readmeEtag: '"89d6f317dcde6f5280c576c08ef8c826d6ad5753"' readmeLastModified: Sun, 18 Sep 2022 13:52:40 GMT repositoryId: 220504408 description: Generate OpenAPI Specification Document from kintone's REST API Schema created: '2019-11-08T16:17:27Z' updated: '2023-01-27T21:08:18Z' language: TypeScript archived: true stars: 0 watchers: 0 forks: 0 owner: zaki-yama logo: https://avatars.githubusercontent.com/u/1001444?v=4 repoEtag: '"4552fd6c1e290be0080b2c0d185905fc637735f695f3d24459d692dcdf3eb453"' repoLastModified: Fri, 27 Jan 2023 21:08:18 GMT foundInMaster: true category: - Testing - Parsers id: f25cbbc6b37854cdf79c6df73f6ee104 - source: openapi3 tags repository: https://github.com/funkeyfreak/msgraph-openapi v3: true repositoryMetadata: repositoryId: 310755500 description: A buildable OpenAPI v3 description for Microsoft Graph created: '2020-11-07T03:01:48Z' updated: '2020-12-30T06:32:05Z' language: null archived: false stars: 0 watchers: 1 forks: 1 owner: funkeyfreak logo: https://avatars.githubusercontent.com/u/5327214?v=4 license: Apache-2.0 repoEtag: '"f7d6e2e961ed6f647f0c3403c9cf7394fc29ee1739ea9ac130573d9c9df45bf3"' repoLastModified: Wed, 30 Dec 2020 06:32:05 GMT foundInMaster: true id: da9f2a7deee2c34b5bc25c19350a25a5 - source: openapi3 tags repository: https://github.com/abhishekastoorkar/nodejs-training v3: true repositoryMetadata: repositoryId: 303295453 description: >- This is a training manager app build using nodejs, express and sequelize ORM. for authentication of user AWS cognito service is used. coverage report and openApi 3 documention are also available created: '2020-10-12T06:16:22Z' updated: '2020-12-02T05:47:34Z' language: HTML archived: false stars: 0 watchers: 1 forks: 0 owner: abhishekastoorkar logo: https://avatars.githubusercontent.com/u/51363257?v=4 repoEtag: '"52ea2542459c03bd8de001385a999859d8d7db3b37d0575700d138800ca7d9f7"' repoLastModified: Wed, 02 Dec 2020 05:47:34 GMT foundInMaster: true id: 7feb18067ecfc3ef6d4cb1d45cb22d99 - source: openapi3 tags repository: https://github.com/teobler/openapi-swagger-demo v3: true repositoryMetadata: base64Readme: >- IyBXaGF0IGZvcgoKdGhpcyBpcyBhIGRlbW8gYWJvdXQgT3BlbkFQSSAzLjAgdG8gcHJvdmlkZSBhIHNjaGVtYSB0byBnZW5lcmF0ZSBmcm9udC1lbmQgcmVxdWVzdCBjb2RlIGJ5IHVzaW5nIFtyZWR1eC1hY3Rpb24tZ2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vdGVvYmxlci9yZWR1eC1hY3Rpb24tZ2VuZXJhdG9yL3RyZWUvb3BlbmFwaS0zLjApCgojIyBTdGFydAoKMS4gY2xvbmUgY29kZSB0byB5b3VyIGxvY2FsCjIuIHJ1biBgLi9ncmFkbGV3IGJvb3QgcnVuYAozLiBhY2Nlc3MgaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaS1kb2NzIGluIHlvdXIgYnJvd3NlciB5b3UgY2FuIGdldCBPcGVuQVBJIDMuMCBzY2hlbWEKNC4gYWNjZXNzIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9zd2FnZ2VyLXVpL2luZGV4Lmh0bWw/Y29uZmlnVXJsPS9hcGktZG9jcy9zd2FnZ2VyLWNvbmZpZyBpbiB5b3VyIGJyb3dzZXIgeW91IGNhbiBzZWUgc3dhZ2dlciB2Mwo= readmeEtag: '"c5567ee2eb418c5809364f999c7248df727a9ec3"' readmeLastModified: Thu, 26 Mar 2020 08:13:08 GMT repositoryId: 250197701 description: >- demo about OpenAPI 3.0 to provide a schema to generate front-end request code created: '2020-03-26T08:10:01Z' updated: '2020-03-26T08:14:14Z' language: Java archived: false stars: 0 watchers: 0 forks: 0 owner: teobler logo: https://avatars.githubusercontent.com/u/26424691?v=4 repoEtag: '"4d27d5b4c619fcd001d4a9753c2b3afa01664fd05ae414579a6a0267fdf81c07"' repoLastModified: Thu, 26 Mar 2020 08:14:14 GMT foundInMaster: true category: - Code Generators - Server Implementations id: a241cb9ae9cda5f9ce71402d3b48ddc1 - source: openapi3 tags repository: https://github.com/ankitech/spring-swagger-setup v3: true repositoryMetadata: base64Readme: >- IyBzcHJpbmctc3dhZ2dlci1zZXR1cApUaGlzIGlzIGFuIHJlcG9zaXRvcnkgdGhhdCBzaG93cyBob3cgdG8gc2V0IHVwIHN3YWdnZXIgZG9jdW1lbnRhdGlvbiBpbiBhIHNwcmluZyBwcm9qZWN0Cg== readmeEtag: '"113097c395b1167de8ea097d13fba499caaf576f"' readmeLastModified: Tue, 21 Apr 2020 05:59:58 GMT repositoryId: 257364853 description: >- This is an repository that shows how to set up swagger documentation in a spring project created: '2020-04-20T18:07:03Z' updated: '2020-04-21T19:03:50Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: ankitech logo: https://avatars.githubusercontent.com/u/9432041?v=4 license: Apache-2.0 repoEtag: '"fa023972360295bca777b5ee9e3266f091321cdb67044c063f9b2a07ebc1f68e"' repoLastModified: Tue, 21 Apr 2020 19:03:50 GMT foundInMaster: true category: - Server - Server Implementations id: 8ff20053e9e7616753043f1b4b10a98c - source: openapi3 tags repository: https://github.com/thiagojacinto/bootcamp-backend-spring v3: true repositoryMetadata: base64Readme: >- IyBbQm9vdGNhbXBdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGlhZ29qYWNpbnRvL3Bvcy11bml0LXBvcnRvL3RyZWUvbWFzdGVyL0Jvb3RjYW1wMik6IFByb2pldG8gZS1jb21tZXJjZSAKIEJvb3RjYW1wIEJhY2tlbmQsIHByb2pldG8gZGUgdW0gZS1jb21tZXJjZSB1dGlsaXphbmRvIFNwcmluZyBCb290LgoKICMjIFVzYW5kbwoKIE8gcHJpbWVpcm8gcGFzc28gw6kgY29uZmlndXJhciBhIGNvbmV4w6NvIGNvbSB1bSBiYW5jbyBQb3N0ZWdyZVNRTCwgY29uZmlndXJhbmRvIG8gX2FwcGxpY2F0aW9uLnByb3BlcnRpZXNfIGNvbW8gW2VzdGUgZXhlbXBsb10oaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vcHQtYnIvYXp1cmUvZGV2ZWxvcGVyL2phdmEvc3ByaW5nLWZyYW1ld29yay9jb25maWd1cmUtc3ByaW5nLWRhdGEtanBhLXdpdGgtYXp1cmUtbXlzcWwjY29uZmlndXJlLXNwcmluZy1ib290LXRvLXVzZS1henVyZS1kYXRhYmFzZS1mb3ItbXlzcWwpLgoKIEEgcGFydGlyIGRpc3NvLCDDqSBwb3Nzw612ZWwgcm9kYXIgbyBwcm9qZXRvIHBlbG8gTWF2ZW4gKGNvbW8gaW5zdGFsYXI/IFtBcXVpXShodHRwczovL21hdmVuLmFwYWNoZS5vcmcvaW5zdGFsbC5odG1sKSksIGEgcGFydGlyIGRvIGNvbWFuZG8gYG12bncgc3ByaW5nLWJvb3Q6cnVuYCByZWFsaXphbmRvIG5vIGRpcmV0w7NyaW8uCgogT3V0cmEgb3DDp8OjbyDDqSByZWFsaXphciBvIGJ1aWxkIGNvbSBvIGNvbWFuZG8gYG12bncgY2xlYW4gcGFja2FnZWAgZSBlbnTDo28gZXhlY3V0YW5kbyBvIGFycXVpdm8gSkFSIHJlc3VsdGFudGUsIGVzcGVjaWZpY2FuZG8gYSB2ZXJzw6NvIGRvIHByb2pldG8gb2J0aWRhIG5vIHBvbS54bWwsIGUgYSBVUkwgZGUgY29uZXjDo28gY29tIHVtIFNHQkQgKipQb3N0Z3JlU1FMKiouCgogYGBgCiBqYXZhIC1qYXIgdGFyZ2V0L2Vjb21tZXJjZS17VkVSU0FPfS5qYXIgLS1zcHJpbmcuZGF0YXNvdXJjZS51cmw9JHtKREJDX0RBVEFCQVNFX1VSTH0KIGBgYAoKICMjIFRlc3RhbmRvCgogVW1hIHZleiByb2RhbmRvIG8gc2VydmnDp28sIMOpIHBvc3PDrXZlbCByZWFsaXphciBjaGFtYWRhcyBIVFRQLCBjb21vIG8gZXhlbXBsbyBhYmFpeG86CgpgYGAKIGN1cmwgLVggR0VUICJodHRwOi8vbG9jYWxob3N0OjgwODAvdjEvcHJvZHV0b3MvbWFyY2EvMT9pdGVucz01JnBhZ2luYT0wIiAtSCAiYWNjZXB0OiAqLyoiIHwganNvbl9wcApgYGAKY29tIG8gcXVhbCBzZSBlc3BlcmEgcmVjZWJlciBjb21vIHJlc3Bvc3RhIHVtIEpTT04gY29uZm9ybWUgZXhlbXBsbyBzZWd1aW50ZToKYGBgCiB7CiAgICJzb3J0IiA6IHsKICAgICAgInNvcnRlZCIgOiBmYWxzZSwKICAgICAgImVtcHR5IiA6IHRydWUsCiAgICAgICJ1bnNvcnRlZCIgOiB0cnVlCiAgIH0sCiAgICJsYXN0IiA6IHRydWUsCiAgICJwYWdlYWJsZSIgOiB7IC4uLiB9LAogICAiZmlyc3QiIDogdHJ1ZSwKICAgInRvdGFsUGFnZXMiIDogMSwKICAgIm51bWJlciIgOiAwLAogICAibnVtYmVyT2ZFbGVtZW50cyIgOiAxLAogICAic2l6ZSIgOiA1LAogICAiY29udGVudCIgOiBbCiAgICAgIHsKICAgICAgICAgInByZWNvVW5pdGFyaW8iIDogNTI5Ljk5LAogICAgICAgICAiZGVzY3JpY2FvIiA6ICJVbSBwcm9kdXRvIHBhcmEgZ2VyZW5jaWFyIHBhY290ZXMiLAogICAgICAgICAibm9tZSIgOiAiTWF2ZW4iLAogICAgICAgICAiY2F0ZWdvcmlhIiA6IHsKICAgICAgICAgICAgImlkIiA6IDMsCiAgICAgICAgICAgICJhdGl2byIgOiB0cnVlLAogICAgICAgICAgICAibm9tZSIgOiAiTGl2cmFyaWEiCiAgICAgICAgIH0sCiAgICAgICAgICJtYXJjYSIgOiB7CiAgICAgICAgICAgICJkZXNjcmljYW8iIDogIlVtYSBtYXJjYSBpbm92YWRvcmEiLAogICAgICAgICAgICAiaWQiIDogMSwKICAgICAgICAgICAgIm5vbWUiIDogIlNob3cgZGUgTWFyY2EiCiAgICAgICAgIH0sCiAgICAgICAgICJpZCIgOiAyLAogICAgICAgICAiZm9ybmVjZWRvciIgOiB7CiAgICAgICAgICAgICJjbnBqIiA6ICIqKioqKioqKiIsCiAgICAgICAgICAgICJpZCIgOiAxLAogICAgICAgICAgICAiZW5kZXJlY28iIDogIlJ1YSAxIiwKICAgICAgICAgICAgImVtYWlsIiA6ICJmb3JuZWNlZG9yMUAqKioqKioqKiIsCiAgICAgICAgICAgICJ0ZWxlZm9uZSIgOiAiMTExMTExKioqKiIsCiAgICAgICAgICAgICJub21lIiA6ICJGb3JuZWNlZG9yIEZvckFsbCIKICAgICAgICAgfSwKICAgICAgICAgInVuaWRhZGUiIDogInVuaWRhZGUiCiAgICAgIH0KICAgXSwKICAgInRvdGFsRWxlbWVudHMiIDogMSwKICAgImVtcHR5IiA6IGZhbHNlCn0KIGBgYAogCiAjIyBDb250cmlidWluZG8gY29tIGVzdGUgcHJvamV0bwoKUGFyYSBjb250cmlidWlyIGNvbSBlc3RlIHByb2pldG8sIHNpZ2EgZXN0ZXMgcGFzc29zOgoKMS4gRmHDp2EgdW0gJ0ZvcmsnIGRlc3RlIHJlcG9zaXTDs3JpbzsKMi4gQ3JpZSB1bSAnQnJhbmNoJyBjb20gbyBjw7NkaWdvIG5vIHRlcm1pbmFsOiBgZ2l0IGNoZWNrb3V0IC1iIGZlYXR1cmUvPE5PTUVfRE9fQlJBTkNIPmA7CjMuIEZhw6dhIHN1YXMgYWx0ZXJhw6fDtWVzIGUgcmVhbGl6ZSBvICdhZGQgJiBjb21taXQnIGNvbSBvIHNlZ3VpbnRlIGPDs2RpZ28gbm8gdGVybWluYWw6IGBnaXQgYWRkIDxhcnF1aXZvcz4gJiYgZ2l0IGNvbW1pdCAtbSAibWVuc2FnZW0iYCwgbWVuc2FnZW0gZGUgY29tbWl0IHV0aWxpemFuZG8gW0NvbnZlbnRpb25hbENvbW1pdF0oaHR0cHM6Ly93d3cuY29udmVudGlvbmFsY29tbWl0cy5vcmcvZW4vdjEuMC4wLyk7CjQuIEVudMOjbywgcmVhbGl6ZSBvICdwdXNoJyBwYXJhIG8gb3JpZ2lhbmw6IGBnaXQgcHVzaCBvcmlnaW4gPGJvb3RjYW1wLWJhY2tlbmQtc3ByaW5nPi88TE9DQUw+YDsKNS4gUG9yIGZpbSwgY3JpZSB1bSAncHVsbCByZXF1ZXN0JyBwYXJhIGVzdGUgcmVwb3NpdMOzcmlvLgoKRW0gY2FzbyBkZSBkw7p2aWRhcywgbGVpYSBhIGRvY3VtZW50YcOnw6NvIGRvIEdpdEh1YiBzb2JyZSBbY29tbyBjcmlhciBwdWxsIHJlcXVlc3RzXShodHRwczovL2hlbHAuZ2l0aHViLmNvbS9lbi9naXRodWIvY29sbGFib3JhdGluZy13aXRoLWlzc3Vlcy1hbmQtcHVsbC1yZXF1ZXN0cy9jcmVhdGluZy1hLXB1bGwtcmVxdWVzdCkuCg== readmeEtag: '"b03d3692960f83a8d6953772a9ce077009a83473"' readmeLastModified: Fri, 22 Jan 2021 03:20:43 GMT repositoryId: 304887142 description: 'Bootcamp Backend: projeto de ecommerce usando Spring Boot' created: '2020-10-17T13:45:04Z' updated: '2025-12-13T18:52:17Z' language: Java archived: true stars: 0 watchers: 1 forks: 0 owner: thiagojacinto logo: https://avatars.githubusercontent.com/u/46906069?v=4 license: MPL-2.0 repoEtag: '"eb077e6aedfd6cc494251f14967844da474e33202c66b2fe083d733836da12b0"' repoLastModified: Sat, 13 Dec 2025 18:52:17 GMT foundInMaster: true category: Data Validators id: 032c859199b555a28058a04e38fbb9b3 - source: openapi3 tags repository: https://github.com/mal2-project/fake-shop-detection_database v3: true repositoryMetadata: base64Readme: >- IyBGYWtlLVNob3AgRGV0ZWN0aW9uIERhdGFiYXNlCgojIyBBYm91dCAvIFN5bm9wc2lzCgoqIE1hbmFnZW1lbnQgZm9yIG1hbnVhbGx5IGNsYXNzaWZ5aW5nIHJlcG9ydGVkIHdlYnNpdGVzIChlLmcuIHZpYSBmYWtlIHNob3AgZGV0ZWN0aW9uIFJFU1QgQVBJKS4KKiBQcm9qZWN0IHN0YXR1czogd29ya2luZy9wcm90b3R5cGUKCiMjIFRhYmxlIG9mIGNvbnRlbnRzCgo+ICogW1JlcXVpcmVtZW50c10oI3JlcXVpcmVtZW50cykKPiAqIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCj4gKiBbVXNhZ2VdKCN1c2FnZSkKPiAgKiBbU2NyZWVuc2hvdHNdKCNzY3JlZW5zaG90cykKPiAqIFtSRVNULUFQSV0oI3Jlc3QtYXBpKQo+ICogW1Jlc291cmNlcyAoRG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgbGlua3MpXSgjcmVzb3VyY2VzLWRvY3VtZW50YXRpb24tYW5kLW90aGVyLWxpbmtzKQo+ICogW0xpY2Vuc2VdKCNsaWNlbnNlKQo+ICogW0Fib3V0IE1BTDJdKCNhYm91dC1tYWwyKQoKIyMgUmVxdWlyZW1lbnRzCgoqIFVidW50dSAxOC4wNAoqIFB5dGhvbiAzLjUKKiBQb3N0Z3JlU1FMIDEwCiogUHl0aG9uLVBhY2thZ2VzIGFzIGRlZmluZWQgaW4gW3JlcXVpcm1lbnRzLnR4dF0oZGIvcmVxdWlyZW1lbnRzLnR4dCkKCiMjIEluc3RhbGxhdGlvbgoKQ3JlYXRlIGEgUHl0aG9uIHZpcnR1YWwgZW52aXJvbm1lbnQgd2l0aCBlLmcuIFt2aXJ0dWFsZW52d3JhcHBlcl0oaHR0cHM6Ly92aXJ0dWFsZW52d3JhcHBlci5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvKS4KVGhlIFB5dGhvbiB2ZXJzaW9uIHVzZWQgaXMgMy41LgoKYGBgc2hlbGwKJCBta3ZpcnR1YWxlbnYgLXAgL3BhdGgvdG8vcHl0aG9uMy41IG1hbDJEQgpgYGAKCkluc3RhbGwgdGhlIHJlcXVpcmVkIFB5dGhvbiBwYWNrYWdlcwoKYGBgc2hlbGwKcGlwIGluc3RhbGwgLXIgZGIvcmVxdWlyZW1lbnRzLnR4dApgYGAKClBvc3RncmVTUUwgMTAgaXMgdXNlZCBhcyBkYXRhYmFzZS4gQ3JlYXRlIGEgZGF0YWJhc2UgYW5kIGNoYW5nZSB0aGUgYGRiL3NldHRpbmdzL2Jhc2UucHlgIGFjY29yZGluZ2x5LgoKYGBgcHl0aG9uCkRCX0hPU1QgPSAibG9jYWxob3N0IgpEQl9VU0VSID0gIm1hbDJkYiIKREJfTkFNRSA9ICJtYWwyZGIiCkRCX1BBU1NXT1JEID0gIk1ZX1NFQ1JFVF9QQVNTV09SRCIKYGBgCgpBZnRlciB0aGF0LCB0aGUgZGF0YWJhc2UgaXMgaW5pdGlhbGl6ZWQgYXMgZm9sbG93czoKCmBgYHNoZWxsCmNkIGRiCi4vbWFuYWdlLnB5IG1pZ3JhdGUKLi9tYW5hZ2UucHkgbG9hZGRhdGEgaW5pdF9ncm91cHMKLi9tYW5hZ2UucHkgbG9hZGRhdGEgaW5pdF93ZWJzaXRlX3Jpc2Nfc2NvcmUKLi9tYW5hZ2UucHkgbG9hZGRhdGEgaW5pdF93ZWJzaXRlX3R5cGVzCi4vbWFuYWdlLnB5IGxvYWRkYXRhIGluaXRfd2Vic2l0ZV9jYXRlZ29yeQouL21hbmFnZS5weSBsb2FkZGF0YSBpbml0X3dlYnNpdGVzX3JlcG9ydGVkX2J5CmBgYAoKVGhlIGFkbWluIHVzZXIgaXMgY3JlYXRlZCB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYHNoZWxsCiQgLi9tYW5hZ2UucHkgY3JlYXRlc3VwZXJ1c2VyCmBgYAoKRW50ZXIgYSBtYWlsIHNlcnZlciBpbiB0aGUgYGRiL3NldHRpbmdzL2Jhc2UucHlgLgoKYGBgcHl0aG9uCkFETUlOUyA9ICgKICAgICgiTmFtZSIsICJuYW1lQGRvbWFpbi50bGQiKSwKKQoKU0VSVkVSX0VNQUlMID0gIm5hbWVAZG9tYWluLnRsZCIKCkVNQUlMX0hPU1QgPSAibWFpbC5kb21haW4udGxkIgpFTUFJTF9IT1NUX1VTRVIgPSAibWFsMkRCIgpFTUFJTF9IT1NUX1BBU1NXT1JEID0gIk1ZX1NFQ1JFVF9QQVNTV09SRCIKCkRFRkFVTFRfRlJPTV9FTUFJTCA9ICJub3JlcGx5QGRvbWFpbi50bGQiCmBgYAoKIyMjIENocm9tZS1UcmVpYmVyIGbDvHIgU2VsZW5pdW0KClRvIGNyZWF0ZSB3ZWIgcGFnZSBzY3JlZW5zaG90IHRoZSBgY2hyb21pdW0tY2hyb21lZHJpdmVyYCBpcyBuZWVkZWQuCgpgYGAKJCBhcHQgaW5zdGFsbCBjaHJvbWl1bS1jaHJvbWVkcml2ZXIKYGBgCgojIyBVc2FnZQoKTm93IHRoZSBzZXJ2ZXIgY2FuIGJlIHN0YXJ0ZWQgd2l0aCB0aGUgRGphbmdvIGNvbW1hbmQgcnVuc2VydmVyLgoKYGBgc2hlbGwKLi9tYW5hZ2UucHkgcnVuc2VydmVyCmBgYAoKSW4geW91ciBicm93c2VyLCB5b3UgY2FuIG5vdyBnbyB0byBodHRwOi8vMTI3LjAuMC4xOjgwMDAvLgoKQXR0ZW50aW9uLCB0aGlzIGlzIGZvciBkZXZlbG9wbWVudCBvbmx5LiBJbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQsIGZvciBleGFtcGxlLCBbdXdzZ2ldKGh0dHBzOi8vdXdzZ2ktZG9jcy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvV1NHSXF1aWNrc3RhcnQuaHRtbCkgY2FuIGJlIHVzZWQgd2l0aCBbYXBhY2hlMl0oaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvKS4KIyMjIFNjcmVlbnNob3RzCgohW21hbDJEQl0oc2NyZWVuc2hvdC5wbmcpCgojIyBSRVNULUFQSQoKVGhlIFJFU1QgQVBJIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9hcGkuCgojIyBSZXNvdXJjZXMgKERvY3VtZW50YXRpb24gYW5kIG90aGVyIGxpbmtzKQoKKiBbRGphbmdvIFdlYiBGcmFtZXdvcmtdKGh0dHBzOi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8yLjIvKQoqIFtEamFuZ28gUkVTVCBGcmFtZXdvcmtdKGh0dHBzOi8vd3d3LmRqYW5nby1yZXN0LWZyYW1ld29yay5vcmcvKQoKCiMjIEFib3V0IE1BTDIKClRoZSBNQUwyIHByb2plY3QgYXBwbGllcyBEZWVwIE5ldXJhbCBOZXR3b3JrcyBhbmQgVW5zdXBlcnZpc2VkIE1hY2hpbmUgTGVhcm5pbmcgdG8gYWR2YW5jZSBjeWJlcmNyaW1lIHByZXZlbnRpb24gYnkgYSkgYXV0b21hdGluZyB0aGUgZGlzY292ZXJ5IG9mIGZyYXVkdWxlbnQgZUNvbW1lcmNlIGFuZCBiKSBkZXRlY3RpbmcgUG90ZW50aWFsbHkgSGFybWZ1bCBBcHBzIChQSEFzKSBpbiBBbmRyb2lkLgpUaGUgZ29hbCBvZiB0aGUgTUFMMiBwcm9qZWN0IGlzIHRvIHByb3ZpZGUgKGkpIGFuIE9wZW4gU291cmNlIGZyYW1ld29yayBhbmQgZXhwZXJ0IHRvb2xzIHdpdGggaW50ZWdyYXRlZCBmdW5jdGlvbmFsaXR5IGFsb25nIHRoZSByZXF1aXJlZCBwaXBlbGluZSDigJMgZnJvbSBtYWxpY2lvdXMgZGF0YSBhcmNoaXZpbmcsIGZlYXR1cmUgc2VsZWN0aW9uIGFuZCBleHRyYWN0aW9uLCB0cmFpbmluZyBvZiBNYWNoaW5lIExlYXJuaW5nIGNsYXNzaWZpY2F0aW9uIGFuZCBkZXRlY3Rpb24gbW9kZWxzIHRvd2FyZHMgZXhwbGFpbmFiaWxpdHkgaW4gdGhlIGFuYWx5c2lzIG9mIHJlc3VsdHMgKGlpKSB0byBleGVjdXRlIGl0cyBjb21wb25lbnRzIGF0IHNjYWxlIGFuZCAoaWlpKSB0byBwdWJsaXNoIGFuIGFubm90YXRlZCBHcm91bmQtVHJ1dGggZGF0YXNldCBpbiBib3RoIGFwcGxpY2F0aW9uIGRvbWFpbnMuIFRvIHJhaXNlIGF3YXJlbmVzcyBmb3IgY3liZXJjcmltZSBwcmV2ZW50aW9uIGluIHRoZSBnZW5lcmFsIHB1YmxpYywgdHdvIGRlbW9uc3RyYXRvcnMsIGEgRmFrZS1TaG9wIERldGVjdGlvbiBCcm93c2VyIFBsdWdpbiBhcyB3ZWxsIGFzIGEgQW5kcm9pZCBNYWx3YXJlIERldGVjdGlvbiBBbmRyb2lkIGFwcCBhcmUgcmVsZWFzZWQgdGhhdCBhbGxvdyBsaXZlLWluc3BlY3Rpb24gYW5kIEFJIGJhc2VkIHByZWRpY3Rpb25zIG9uIHRoZSB0cnVzdHdvcnRoaW5lc3Mgb2YgZUNvbW1lcmNlIHNpdGVzIGFuZCBBbmRyb2lkIGFwcHMuCgpUaGUgd29yayBpcyBiYXNlZCBvbiByZXN1bHRzIGNhcnJpZWQgb3V0IGluIHRoZSByZXNlYXJjaCBwcm9qZWN0IFtNQUwyIHByb2plY3RdKGh0dHBzOi8vcHJvamVrdGUuZmZnLmF0L3Byb2pla3QvMzA0NDk3NSksIHdoaWNoIHdhcyBwYXJ0aWFsbHkgZnVuZGVkIGJ5IHRoZSBBdXN0cmlhbiBGZWRlcmFsIE1pbmlzdHJ5IGZvciBDbGltYXRlIEFjdGlvbiwgRW52aXJvbm1lbnQsIEVuZXJneSwgTW9iaWxpdHksIElubm92YXRpb24gYW5kIFRlY2hub2xvZ3kgKEJNSykgdGhyb3VnaCB0aGUgSUNUIG9mIHRoZSBmdXR1cmUgcmVzZWFyY2ggcHJvZ3JhbSAoNnRoIGNhbGwpIG1hbmFnZWQgYnkgdGhlIEF1c3RyaWFuIGZlZGVyYWwgZnVuZGluZyBhZ2VuY3kgKEZGRykuCiogQXVzdHJpYW4gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kgR21iSCwgQ2VudGVyIGZvciBEaWdpdGFsIFNhZmV0eSBhbmQgU2VjdXJpdHkgW0FJVF0oaHR0cHM6Ly93d3cuYWl0LmFjLmF0LykKKiBBdXN0cmlhbiBJbnN0aXR1dGUgZm9yIEFwcGxpZWQgVGVsZWNvbW11bmljYXRpb25zIFvDlklBVF0oaHR0cHM6Ly93d3cub2lhdC5hdCkKKiBYLU5FVCBTZXJ2aWNlcyBHbWJIIFtYTkVUXShodHRwczovL3gtbmV0LmF0L2RlLykKKiBLdXJhdG9yaXVtIHNpY2hlcmVzIMOWc3RlcnJlaWNoIFtLU8OWXShodHRwczovL2t1cmF0b3JpdW0tc2ljaGVyZXMtb2VzdGVycmVpY2guYXQvKQoqIElLQVJVUyBTZWN1cml0eSBTb2Z0d2FyZSBbSUtBUlVTXShodHRwczovL3d3dy5pa2FydXNzZWN1cml0eS5jb20vKQoKTW9yZSBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgYXQgW3d3dy5tYWx6d2VpLmF0XShodHRwOi8vd3d3Lm1hbHp3ZWkuYXQpCgojIyBDb250YWN0CkZvciBkZXRhaWxzIG9uIGJlaGFsZiBvZiB0aGUgTUFMMiBjb25zb3J0aXVtIGNvbnRhY3Q6IApBbmRyZXcgTGluZGxleSAocHJvamVjdCBsZWFkKQpSZXNlYXJjaCBFbmdpbmVlciwgRGF0YSBTY2llbmNlICYgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UKQ2VudGVyIGZvciBEaWdpdGFsIFNhZmV0eSBhbmQgU2VjdXJpdHksIEFJVCBBdXN0cmlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSBHbWJICkdpZWZpbmdnYXNzZSA0IHwgMTIxMCBWaWVubmEgfCBBdXN0cmlhClQgKzQzIDUwNTUwLTQyNzIgfCBNICs0MyA2NjQgODE1Nzg0OCB8IEYgKzQzIDUwNTUwLTQxNTAKYW5kcmV3LmxpbmRsZXlAYWl0LmFjLmF0IHwgd3d3LmFpdC5hYy5hdApvcgpXb2ZsZ2FuZyBFaWJuZXIsIFgtTkVUIFNlcnZpY2VzIEdtYkgsIHdlQHgtbmV0LmF0CgojIyBMaWNlbnNlClRoZSBNQUwyIFNvZnR3YXJlIHN0YWNrIGlzIGR1YWwtbGljZW5zZWQgdW5kZXIgY29tbWVyY2lhbCBhbmQgb3BlbiBzb3VyY2UgbGljZW5zZXMuIApUaGUgU29mdHdhcmUgaW4gdGhpcyByZXBvc2l0b3J5IGlzIHN1YmplY3Qgb2YgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGRlZmluZWQgaW4gZmlsZSAnTElDRU5TRS5tZCcK readmeEtag: '"54de9967b8aa28db1a60514bcaeeb716e14a9196"' readmeLastModified: Mon, 22 Mar 2021 22:44:14 GMT repositoryId: 350507329 description: >- MAL2 Fake-Shop Detection Database. Multi-User Application with OpenAPI3 Endpoints for deadling with the inspection of fake-shops created: '2021-03-22T22:25:54Z' updated: '2021-03-23T20:43:16Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: mal2-project logo: https://avatars.githubusercontent.com/u/75363498?v=4 license: NOASSERTION repoEtag: '"aca4726d936bd31e75545fef91740eba5da3277a8048787233375012ecf0410f"' repoLastModified: Tue, 23 Mar 2021 20:43:16 GMT foundInMaster: true category: Server Implementations id: 963af65d9b1e14f4131885f08854968f - source: openapi3 tags repository: https://github.com/brevetech/breve_drf_template v3: true repositoryMetadata: base64Readme: >- IyBicmV2ZV9kcmZfdGVtcGxhdGUKClshW0JyZXZlIFRlbXBsYXRlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2JyZXZlLXRlbXBsYXRlLW9yYW5nZT9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289ZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhacFpYZENiM2c5SWpBZ01DQTNNQ0EzTUNJK1BHUmxabk0rUEhOMGVXeGxQaTVqYkhNdE1YdG1hV3hzT2lObE1EQXdOR1E3ZlM1amJITXRNbnRtYVd4c09pTm1abVk3ZlR3dmMzUjViR1UrUEM5a1pXWnpQangwYVhSc1pUNVNaV04xY25OdklERnNiMmR2SUhCaGNtRWdjR1Z5Wm1sc0lHUmxJR052Y25KbGJ6d3ZkR2wwYkdVK1BHY2dhV1E5SWtOaGNHRmZNaUlnWkdGMFlTMXVZVzFsUFNKRFlYQmhJRElpUGp4bklHbGtQU0pEWVhCaFh6RXRNaUlnWkdGMFlTMXVZVzFsUFNKRFlYQmhJREVpUGp4eVpXTjBJR05zWVhOelBTSmpiSE10TVNJZ2QybGtkR2c5SWpjd0lpQm9aV2xuYUhROUlqY3dJaTgrUEhCaGRHZ2dhV1E5SWxOMWMzUnlZV05qYWNPemJsOHlJaUJrWVhSaExXNWhiV1U5SWxOMWMzUnlZV05qYWNPemJpQXlJaUJqYkdGemN6MGlZMnh6TFRJaUlHUTlJazAwTWk0MUxEVTRZVEUyTERFMkxEQXNNQ3d4TFRZdU1qVXRNUzR5TjJ3dExqWTNMUzR6ZGkwNExqZElNalV1TXpWV01URklNelV1TlRoV01qY3VNamxzTGpZM0xTNHpZVEUyTERFMkxEQXNNQ3d4TERFM0xqWXNNeTQwTml3eE5pNHhOeXd4Tmk0eE55d3dMREFzTVMwMUxqRXNNall1TWpkQk1UWXNNVFlzTUN3d0xERXNOREl1TlN3MU9GcHRNQzB5TWk0NU5HRTJMamd4TERZdU9ERXNNQ3d4TERBc05pNDNOeXcyTGpnemRqQkJOaTQzT1N3MkxqYzVMREFzTUN3d0xEUXlMalVzTXpVdU1EVmFJaTgrUEhKbFkzUWdhV1E5SWxKbFkzVERvVzVuZFd4dlh6RXpJaUJrWVhSaExXNWhiV1U5SWxKbFkzVERvVzVuZFd4dklERXpJaUJqYkdGemN6MGlZMnh6TFRJaUlIZzlJakV4TGpVMklpQjVQU0kwTnk0M01pSWdkMmxrZEdnOUlqRXdMakl6SWlCb1pXbG5hSFE5SWpFd0xqSTRJaTgrUEM5blBqd3ZaejQ4TDNOMlp6ND0pXShodHRwczovL3d3dy5icmV2ZXRlY2guY29tLykKWyFbZm9ydGhlYmFkZ2UgbWFkZS13aXRoLXB5dGhvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9tYWRlX3dpdGgtcHl0aG9uLWJsdWU/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPXB5dGhvbildKGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvKQpbIVtmb3J0aGViYWRnZSBkamFuZ28tcmVzdF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9kamFuZ28tcmVzdF9mcmFtZXdvcmstYTMwMDAwP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1kamFuZ28pXShodHRwczovL3d3dy5weXRob24ub3JnLykKWyFbZm9ydGhlYmFkZ2UgcHJlLWNvbW1pdF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9wcmVfY29tbWl0LWVuYWJsZWQtZ3JlZW4/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPXByZS1jb21taXQpXShodHRwczovL2dpdGh1Yi5jb20vcHJlLWNvbW1pdC9wcmUtY29tbWl0KQpbIVtmb3J0aGViYWRnZSBwcmUtY29tbWl0XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3VzZXMtY29tbWl0aXplbi1FMDAwNEQ/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPWdpdCldKGh0dHBzOi8vZ2l0aHViLmNvbS9jb21taXRpemVuLXRvb2xzL2NvbW1pdGl6ZW4pClshW0xpY2Vuc2U6IE1JVF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLU1JVC1ibHVlLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlKV0oaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wKQoKLS0tCgpBIERqYW5nbyBSZXN0IEZyYW1ld29yayBiYXNlIHRlbXBsYXRlIHdpdGggY3VzdG9tIGNvbmZpZ3VyYXRpb25zLCBpbnRlbmRlZCB0byBzYXZlIHRpbWUgd2l0aCBzb21lIG9mIHRoZSBib2lsZXJwbGF0ZSBjb25maWd1cmF0aW9uLiBPcHRtaXplZCBmb3IgUHlDaGFybSBJREUgYW5kIFZTQ29kZS4KCiMjIEluZGV4CgotIFticmV2ZV9kcmZfdGVtcGxhdGVdKCNicmV2ZV9kcmZfdGVtcGxhdGUpCiAgLSBbSW5kZXhdKCNpbmRleCkKICAtIFtGZWF0dXJlc10oI2ZlYXR1cmVzKQogIC0gW0dldHRpbmcgc3RhcnRlZF0oI2dldHRpbmctc3RhcnRlZCkKICAtIFtgLmVudmAgc3RydWN0dXJlXSgjZW52LXN0cnVjdHVyZSkKICAtIFtJbnN0YWxsaW5nIGFkZGl0aW9uYWwgbW9kdWxlc10oI2luc3RhbGxpbmctYWRkaXRpb25hbC1tb2R1bGVzKQogIC0gW0NyZWF0aW5nIG5ldyBhcHBdKCNjcmVhdGluZy1uZXctYXBwKQogIC0gW0VuZHBvaW50IGNsZWFuIGNvZGUgYXJjaGl0ZWN0dXJlXSgjZW5kcG9pbnQtY2xlYW4tY29kZS1hcmNoaXRlY3R1cmUpCiAgLSBbT3BlbkFQSSAzIFNjaGVtYSBEb2N1bWVudGF0aW9uXSgjb3BlbmFwaS0zLXNjaGVtYS1kb2N1bWVudGF0aW9uKQogIC0gW0F1dGhlbnRpY2F0aW9uXSgjYXV0aGVudGljYXRpb24pCiAgLSBbQ09SUyBQb2xpY3ldKCNjb3JzLXBvbGljeSkKICAtIFtwcmUtY29tbWl0IGFuZCBRQ0EgZmxvd10oI3ByZS1jb21taXQtYW5kLXFjYS1mbG93KQogIC0gW0NvbW1pdGl6ZW5dKCNjb21taXRpemVuKQogIC0gW0dpdGh1YiBBY3Rpb25zIENJL0NEIFdvcmtmbG93XSgjZ2l0aHViLWFjdGlvbnMtY2ljZC13b3JrZmxvdykKICAtIFtDb250cmlidXRpb25dKCNjb250cmlidXRpb24pCgojIyBGZWF0dXJlcwoKLSBQeXRob24gMyBhbmQgRGphbmdvIDQuMC4yIChsb2NrZWQgdG8gdGhpcyB2ZXJzaW9uIGR1ZSB0byBzZWN1cml0eSBpc3N1ZXMpLgotIGAuZW52YCBtYW5hZ2luZyB3aXRoIHJlbGV2YW50IHNhZmUgdmFyaWFibGVzIHVzaW5nIFtgZGphbmdvLWVudmlyb25gXShodHRwczovL2RqYW5nby1lbnZpcm9uLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8pIG1vZHVsZS4KLSBgcGlwZmlsZWAgcmVxdWlyZW1lbnRzIG1vZHVsZXMgaGFuZGxpbmcuCi0gU2NyaXB0IGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGVtcGxhdGUgZnVuY3Rpb25pbmcuICoqVXNlIHdoZW4gaW50ZW5kZWQgdG8gY29udHJpYnV0ZSoqLgotIEVudmlyb25tZW50LXNlbnNpdGl2ZSBzZXR0aW5ncyAoYGRldmAsIGB0ZXN0YCBhbmQgYHByb2RgKS4KLSBPcGVuQVBJIDMgc2NoZW1hIGFuZCBEb2NWaWV3IHdpdGggZnVsbCBjdXN0b21pemFibGUgZW5kcG9pbnQgbWV0YWRhdGEsIHVzaW5nIFtgZHJmLXNwZWN0YWN1bGFyYF0oaHR0cHM6Ly9kcmYtc3BlY3RhY3VsYXIucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L3JlYWRtZS5odG1sKS4KLSBKV1QgQXV0aGVudGljYXRpb24gcHJlY29uZmlndXJlZCB1c2luZyBbU2ltcGxlIEpXVF0oaHR0cHM6Ly9kamFuZ28tcmVzdC1mcmFtZXdvcmstc2ltcGxland0LnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8pLgotIERlZmF1bHQgW0dpdGh1YiBBY3Rpb25zXShodHRwczovL2dpdGh1Yi5jb20vZmVhdHVyZXMvYWN0aW9ucykgQ0kgd29ya2Zsb3cuCi0gYHdoaXRlbm9pc2VgIHN0YXRpY2ZpbGUgaGFuZGxpbmcgZm9yICoqSGVyb2t1KiogZGVwbG95cyBhbmQgc2ltaWxhciBvbmVzLgotIENsZWFuIGNvZGUgZW5kcG9pbnQgYXJjaGl0ZWN0dXJlLgotIEN1c3RvbSBlcnJvciBoYW5kbGluZyBmb3IgY2VudHJhbGl6ZWQgbG9nZ2luZyBhbmQgZXhjZXB0aW9uIGJlaGF2aW91ciBkZWZpbml0aW9uCi0gSlNPTiByZXNwb25zZXMgZm9yIDQwNCBhbmQgNTAwIGVycm9ycyBpbiBub24gZGVidWcgZW52aXJvbm1lbnQKLSBCb2lsZXJwbGF0ZSBhYnN0cmFjdCBtb2RlbHMgKFRpbWVzdGFtcGVkIGFuZCBQZXJzb24pLgotIEhlcm9rdSBwcm9jZmlsZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24KLSBMb2cgcmVxdWVzdCBtaWRkbGV3YXJlCgojIyBHZXR0aW5nIHN0YXJ0ZWQKClRvIHVzZSB0aGlzIHRlbXBsYXRlIHJ1biB0aGUgKippbnN0YWxsIHNoZWxsKiogcHJvdmlkZWQgaW4gdGhpcyBwcm9qZWN0LCBgZGphbmdvYCBhbmQgYHBpcGVudmAgcGFja2FnZXMgYXJlIHJlcXVpcmVkIGdsb2JhbGx5LiBJZiB5b3UgYXJlIGluIFdpbmRvd3MsIHVzZSBgZ2l0IGJhc2hgLCBQb3dlcnNoZWxsIHNjcmlwdCB2ZXJzaW9uIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQ6CgpgYGBzaAojIEV4ZWN1dGUgaW5zdGFsbCBzaGVsbCBkaXJlY3QgZnJvbSByZXBvCiQgYmFzaCA8KGN1cmwgLXMgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2JyZXZldGVjaC9icmV2ZV9kcmZfdGVtcGxhdGUvbWFzdGVyL2NyZWF0ZV9wcm9qZWN0LnNoKQpgYGAKClRoaXMgd2lsbCBzdGFydCBhIG5ldyBkamFuZ28gcHJvamVjdCB3aXRoIHRoZSB0ZW1wbGF0ZSBzdHJ1Y3R1cmUuIFRvIHJ1biB0aGUgcHJvamVjdCwgeW91IG5lZWQgdG8gc2V0IHVwIHRoZSBgLmVudmAgZmlsZSBmaXJzdC4KCiMjIGAuZW52YCBzdHJ1Y3R1cmUKClRoaXMgcHJvamVjdCB1c2VzIGEgYC5lbnZgIGZpbGUgYW5kIHRoZSBbYGRqYW5nby1lbnZpcm9uYF0oaHR0cHM6Ly9kamFuZ28tZW52aXJvbi5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvKSBtb2R1bGUgdG8ga2VlcCBhbGwgdGhlIHNlbnNpdGl2ZSBjb25maWd1cmF0aW9uLCBsaWtlIHNlY3JldCBrZXlzLCBkYXRhYmFzZSBVUkkncyBvciBzb21lIG90aGVyIGNyZWRlbnRpYWxzIG9mZiB2ZXJzaW9uIGNvbnRyb2wuIFRoZSBkZWZhdWx0IGAuZW52YCBzdHJ1Y3R1cmUgaW5jbHVkZXMgdGhpcyB2YXJpYWJsZXM6CgpgYGB0b21sCkRFQlVHPTx2YWx1ZT4KU0VDUkVUX0tFWT08c2VjcmV0X2tleT4KREVWX0RCX1VSTD08ZGV2X2RiX3VybD4KUFJPRF9EQl9VUkw9PHByb2RfZGJfdXJsPgpgYGAKCi0gKipERUJVRyoqIChgVHJ1ZWAsIGBGYWxzZWApIHdpbGwgZGVmaW5lIGlmIGRlYnVnIG1vZGUgaXMgZW5hYmxlZCBvciBub3QuIFVzZSBgVHJ1ZWAgZm9yIGRldmVsb3BtZW50IGFuZCB0ZXN0aW5nIHB1cnBvc2UgYW5kIGBGYWxzZWAgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMuIFRoaXMgdmFyaWFibGUgYWxzbyBkZWZpbmVzIHdoaWNoIGNvbmZpZ3VyYXRpb24gaXMgYmVpbmcgdXNlZC4KLSAqKlNFQ1JFVF9LRVkqKiBpcyB0aGUgc2VlZCB1c2VkIGZvciBlbmNyeXB0aW9uIHB1cnBvc2VzLiBEamFuZ28gcmVjb21tZW5kcyB0byBrZWVwIGl0IG9mZiBzb3VyY2UgY29udHJvbC4gVG8gZ2VuZXJhdGUgYSBzZWNyZXQga2V5LCB5b3UgY2FuIGdvIHRvIFtEamVjcmV0eV0oaHR0cHM6Ly9kamVjcmV0eS5pcikuCi0gKipERVZfREJfVVJMKiogaXMgdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50IGRhdGFiYXNlIFVSTC4gRm9yIHRlc3RpbmcgcHVycG9zZSB5b3UgY2FuIHVzZSBgc3FsaXRlOi8vL2RiLnNxbGl0ZTNgIGFzIERFVl9EQl9VUkwuIElmIHlvdSB3YW50IHRvIHVzZSBhbm90aGVyIGRhdGFiYXNlIGVuZ2luZSwgcmVtZW1iZXIgdG8gKippbnN0YWxsKiogdGhlIHJlcXVpcmVkIHBhY2thZ2UgKGUuZy4gYHBzeWNvcGcyYCBmb3IgUG9zdGdyZVNRTCBkYXRhYmFzZXMpLgotICoqUFJPRF9EQl9VUkwqKiBpcyB0aGUgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCBkYXRhYmFzZSBVUkwuIEZvciB0ZXN0aW5nIHB1cnBvc2UgeW91IGNhbiB1c2UgYHNxbGl0ZTovLy9kYi5zcWxpdGUzYCBhcyBQUk9EX0RCX1VSTC4gSWYgeW91IHdhbnQgdG8gdXNlIGFub3RoZXIgZGF0YWJhc2UgZW5naW5lLCByZW1lbWJlciB0byAqKmluc3RhbGwqKiB0aGUgcmVxdWlyZWQgcGFja2FnZSAoZS5nLiBgcHN5Y29wZzJgIGZvciBQb3N0Z3JlU1FMIGRhdGFiYXNlcykuCgojIyBJbnN0YWxsaW5nIGFkZGl0aW9uYWwgbW9kdWxlcwoKVG8gaW5zdGFsbCBhIG5ldyBwYWNrYWdlLCBydW46CgpgYGBzaAojIEluc3RhbGwgcGFja2FnZQokIHBpcGVudiBpbnN0YWxsIDxwYWNrYWdlPgpgYGAKClRoaXMgd2lsbCBrZWVwIGFsbCByZXF1aXJlbWVudHMgcGFja2FnZXMgaW50byB0aGUgYFBpcGZpbGVgLCBpbXByb3ZpbmcgcHJvamVjdCBjb21wYXRpYmlsaXR5IGFjcm9zcyB0ZWFtcyBhbmQgYWxsb3dpbmcgZWFzeSB1c2Ugb2YgdmlydHVhbCBlbnZpcm9ubWVudHMuCgpUbyByZW1vdmUgYSBwYWNrYWdlLCBydW46CgpgYGBzaAojIFVuaW5zdGFsbCBwYWNrYWdlCiQgcGlwZW52IHVuaW5zdGFsbCA8cGFja2FnZT4KYGBgCgpUaGlzIHdpbGwgcmVtb3ZlIHRoZSBwYWNrYWdlIGZyb20gdGhlIGBQaXBmaWxlYC4KCiMjIENyZWF0aW5nIG5ldyBhcHAKClRoaXMgdGVtcGxhdGUgZGVmaW5lcyBhIGRpZmZlcmVudCBmb2xkZXIgc3RydWN0dXJlIGZvciBhcHBzLCBwdXR0aW5nIHRoZW0gaW4gYW4gYGFwcHNgIGRpcmVjdG9yeSBpbnNpZGUgdGhlIHByb2plY3QgZGlyZWN0b3J5LiBUaGlzIGlzIG9ubHkgZm9yIGNvbWZvcnQgcHVycG9zZXMuIEJlY2F1c2Ugb2YgdGhpcywgdG8gY3JlYXRlIGEgbmV3IGFwcCwgeW91IG5lZWQgdG8gcnVuIHRoaXM6CgpgYGBzaGVsbAojIENyZWF0aW5nIG5ldyBwcm9qZWN0IGFwcAokIG1rZGlyIHtwcm9qZWN0X25hbWV9L2FwcHMve2FwcF9uYW1lfQokIHB5dGhvbiBtYW5hZ2UucHkgc3RhcnRhcHAge2FwcF9uYW1lfSBhcHBzL3thcHBfbmFtZX0KYGBgCgpBZnRlciB0aGlzLCB5b3UgY2FuIGluc3RhbGwgdGhlIGFwcCBpbiB0aGUgYHNldHRpbmdzLmJhc2VgLCBidXQgdXNpbmcgdGhlIGZ1bGwgYXBwIG5hbWUsIG5vdCB0aGUgcmVsYXRpdmUgb25lLgoKLSB+fi5hcHB+fgotIHByb2plY3RfbmFtZS5hcHBzLmFwcAoKIyMgRW5kcG9pbnQgY2xlYW4gY29kZSBhcmNoaXRlY3R1cmUKClRoaXMgdGVtcGxhdGUgdXNlcyBhIHNwZWNpZmljIGFyY2hpdGVjdHVyZSBiYXNlZCAoa2luZGEpIG9uIE9PUCBsYW5ndWFnZXMgKipDbGVhbiBBcmNoaXRlY3R1cmUqKi4gVGhpcyBpcyB0byBrZWVwIGFsbCBidXNpbmVzcyBsb2dpYyBhbmQgdmFsaWRhdGlvbiBjb2RlIG9mZiB0aGUgdmlld3MgY29kZSwgaGF2aW5nIGNsZWFuZXIgY29kZSBhbmQgbW9yZSBtb2R1bGFyaXphdGlvbi4gVGhlIGZpbGVzIGltcGxpZWQgaGVyZSBhcmU6CgotIFNlcmlhbGl6ZXJzOiBkZWZpbmVzIGFsbCBpbnB1dCBhbmQgb3V0cHV0IG9iamVjdHMgZm9yIHRoZSBlbmRwb2ludHMuIFRoaXMgc2VyaWFsaXplcnMgY2FuIGJlIGJhc2VkIG9uIGRhdGFiYXNlIG1vZGVscyBgTW9kZWxTZXJpYWxpemVyYCBvciBjYW4gYmUgZnVsbCBjdXN0b20gc2VyaWFsaXplciBgU2VyaWFsaXplcmAuIElmIHlvdSB3YW50IHRvIHVzZSBkaWZmZXJlbnQgc2VyaWFsaXplcnMgZm9yIGlucHV0IGFuZCBvdXRwdXQgKGUuZy4gY3JlYXRlIGEgam9pbiBxdWVyeSBmb3Igb3V0cHV0IHRoYXQgam9pbnMgbWFueSBtb2RlbHMgb3IgaGF2ZSBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUgdGhhbiB0aGUgZGVmaW5lZCBpbiB0aGUgbW9kZWwgZm9yIGEgY3JlYXRlIGVuZHBvaW50KSwgeW91IHdpbGwgbmVlZCB0byB1c2UgdGhlIGBSZWFkV3JpdGVTZXJpYWxpemVyTWl4aW5gLgotIFZpZXdzOiBkZWZpbmVzIGFsbCBlbmRwb2ludHMuIFlvdSBjYW4gdXNlIEZ1bmN0aW9uIEJhc2VkIFZpZXdzIG9yIENsYXNzIEJhc2VkIFZpZXdzIChgQVBJVmlld2AsIGBWaWV3U2V0YCwgYE1vZGVsVmlld1NldGApLgotIEhhbmRsZXJzOiBkZWZpbmVzIGZ1bmN0aW9ucyB3aXRoIGFsbCBidXNpbmVzcyBsb2dpYyBhbmQgdmFsaWRhdGlvbnMsIGRhdGFiYXNlIHF1ZXJpZXMgYW5kIGRhdGFiYXNlIGNvbW1hbmRzLiBVc2UgYSBoYW5kbGVyIG9ubHkgaWYgeW91IG5lZWQgdG8gcmVkZWZpbmUgYSBjb21wbGV4IGxvZ2ljIGZvciB0aGUgZW5kcG9pbnQsIG90aGVyd2lzZSwgY2hlY2sgaWYgYE1vZGVsVmlld1NldGAgY2FuIGhlbHAuCi0gRW50aXRpZXM6IGRlZmluZXMgaW5wdXQgYW5kIG91dHB1dCBvYmplY3RzIGZvciB0aGUgaGFuZGxlcnMuCi0gRXJyb3JTZXJpYWxpemVyOiBkZWZpbmVzIHRoZSBiYXNpYyBlcnJvciBzdHJ1Y3R1cmUgZm9yIGVuZHBvaW50IHJlc3BvbnNlcy4KCkVudGl0aWVzLCBTZXJpYWxpemVycyBhbmQgaGFuZGxlcnMgYXJlIG5vdCBjcmVhdGVkIHdoZW4gdXNpbmcgYHB5dGhvbiBtYW5hZ2UucHkgc3RhcnRhcHBgLCB5b3UnbGwgbmVlZCB0byBjcmVhdGUgdGhlbSBtYW51YWxseS4KClRoZSAqKmNvbW1vbioqIHBhY2thZ2UgaXMgbWVhbnQgdG8gc3RvcmUgYWxsIGNvbW1vbiBhY2Nlc3Mgb2JqZWN0cywgbGlrZSBjbGFzc2VzLCBlcnJvciBzZXJpYWxpemVycywgbWl4aW5zLCBldGMuCgojIyBPcGVuQVBJIDMgU2NoZW1hIERvY3VtZW50YXRpb24KClRoaXMgdGVtcGxhdGUgaW5jbHVkZXMgT3BlbkFQSSAzIHNjaGVtYSBkb2N1bWVudGF0aW9uLCB1c2luZyBgLm1kYCBmaWxlcyB0byBjcmVhdGUgcmljaCB0ZXh0IGRlc2NyaXB0aW9ucy4gVGhpcyBkZXNjcmlwdGlvbnMgYXJlIHNhdmVkIGluIHRoZSAqKmFwaWRvY3MqKiBmb2xkZXIuCgpUaGUgYGluZGV4Lm1kYCBmaWxlIHJlcHJlc2VudHMgdGhlIGdlbmVyYWwgc2NoZW1hIGRlc2NyaXB0aW9uLiBNb2RpZnkgaXQgdG8gZWRpdCB0aGUgc2NoZW1hIGdlbmVyYWwgZGVzY3JpcHRpb24gdmFsdWUsIGxpa2UgaW5zdHJ1Y3Rpb25zLCBwcm9qZWN0IG9iamVjdGl2ZXMsIGV0Yy4gVGhlIHJlc3RpbmcgZ2VuZXJhbCBpbmZvcmF0aW9uIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBgU1BFQ1RBQ1VMQVJfU0VUVElOR1NgIGRpY3QgaW4gYHNldHRpbmdzLmJhc2VgOyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgW29mZmljaWFsIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZHJmLXNwZWN0YWN1bGFyLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9zZXR0aW5ncy5odG1sKS4KCkZvciBldmVyeSBvdGhlciBlbmRwb2ludCB5b3UgY2FuIGNyZWF0ZSBhIGB7ZW5kcG9pbnR9Lm1kYCBmaWxlIGluIHRoZSBgYXBpZG9jcy9lbmRwb2ludHMve2FwcH1gIGZvbGRlci4gVG8gbG9hZCBpdCBpbiB0aGUgY29ycmVzcG9uZGluZyBlbmRwb2ludCwgcmVhZCB0aGUgZmlsZSB2aWEgYHJlYWRfZG9jc19tZCgpYCB1dGlscyBmdW5jdGlvbiwgYW5kIGxvYWQgaXQgdmlhIGBleHRlbmRfc2NoZW1hKClgIGZ1bmN0aW9uIChpbmNsdWRlZCBpbiBbYGRyZi1zcGVjdGFjdWxhcmBdKGh0dHBzOi8vZHJmLXNwZWN0YWN1bGFyLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9jdXN0b21pemF0aW9uLmh0bWwjc3RlcC0yLWV4dGVuZC1zY2hlbWEpKS4gRXhhbXBsZToKCmBgYHB5dGhvbgpAbWV0aG9kX2RlY29yYXRvcihuYW1lPSdsaXN0JywgZGVjb3JhdG9yPWV4dGVuZF9zY2hlbWEoCiAgICBzdW1tYXJ5PSJMb2NhdGlvbiBsaXN0IiwKICAgICMgbGlzdC5tZCBmaWxlIHN0b3JlcyB0aGUgYXBpIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVuZHBvaW50CiAgICBkZXNjcmlwdGlvbj1yZWFkX2RvY3NfbWQoJ2VuZHBvaW50cy9jb3JlL2xpc3QnKSwKICAgIHJlc3BvbnNlcz17CiAgICAgICAgMjAwOiBMb2NhdGlvblNlcmlhbGl6ZXIobWFueT1UcnVlKSwKICAgICAgICA0MDA6IEVycm9yU2VyaWFsaXplcigpLAogICAgICAgIDUwMDogRXJyb3JTZXJpYWxpemVyKCkKICAgIH0KKSkKY2xhc3MgTG9jYXRpb25WaWV3U2V0KHZpZXdzZXRzLlZpZXdTZXQpOgpgYGAKCiMjIEF1dGhlbnRpY2F0aW9uCgpUaGlzIHRlbXBsYXRlIHVzZXMgYGRqYW5nb3Jlc3RmcmFtZXdvcmtfc2ltcGxlX2p3dGAgbW9kdWxlIGZvciBKV1QgQmVhcmVyIHRva2VuIGF1dGhlbnRpY2F0aW9uLgoKVGhpcyBtb2R1bGUgd29ya3Mgd2l0aCBhIHBhaXIgb2YgSldUIHRva2VucywgYSBgYWNjZXNzYCBvbmUsIHRoYXQgaXMgbmVlZGVkIGFzIGBBdXRob3JpemF0aW9uYCBpbiBoZWFkZXIgb2YgYW55IHJlcXVlc3QsIGFuZCBhIGByZWZyZXNoYCBvbmUgdGhhdCBpcyB1c2VkIHRvIGdldCBhIG5ldyBgYWNjZXNzYCB0b2tlbi4gQWNjZXNzIHRva2VuIGxpdmVzIGZvciA1IG1pbnV0ZXMgYnkgZGVmYXVsdCwgYW5kIHJlZnJlc2ggdG9rZW4gbGl2ZXMgZm9yIDI0IGhvdXJzIGJ5IGRlZmF1bHQ7IHRoaXMgY29uZmlndXJhdGlvbiBjYW4gYmUgc2V0IHVwIGFzIHJlcXVpcmVkLCBzZWUgW29mZmljaWFsIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGphbmdvLXJlc3QtZnJhbWV3b3JrLXNpbXBsZWp3dC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3Qvc2V0dGluZ3MuaHRtbCkuCgpUaGUgYGF1dGhfY3JlYXRlYCBlbmRwb2ludCwgZm9yIGdldHRpbmcgYW4gYWNjZXNzIGFuZCByZWZyZXNoIHRva2VuIHBhaXIgd2l0aCBhIGRqYW5nbyB1c2VyLCBhbmQgdGhlIGBhdXRoX2NyZWF0ZV9yZWZyZXNoYCwgdGhhdCBnZXRzIGEgbmV3IGFjY2VzcyB0b2tlbiBwcm92aWRpbmcgYSByZWZyZXNoIHRva2VuLCBhcmUgYm90aCBhbHJlYWR5IGV4cG9zZWQgYW5kIGNvbmZpZ3VyZWQgYnkgZGVmYXVsdC4KCiMjIENPUlMgUG9saWN5CgpUaGlzIHRlbXBsYXRlIHVzZXMgYGRqYW5nby1jb3JzLWhlYWRlcnNgIG1pZGRsZXdhcmUgZm9yIGNvcnMgaGFuZGxpbmcuIFRoZSBjb25maWd1cmF0aW9uIGlzIHNldCB1cCBpbiBgQ09SU19PUklHSU5fQUxMT1dfQUxMYCBrZXkgYXQgYHNldHRpbmdzLmJhc2VgLCBzZXQgYEZhbHNlYCBhcyBkZWZhdWx0LiBDaGFuZ2UgaXQgdG8gYFRydWVgIGZvciBkZXZlbG9wbWVudCBwdXJwb3NlcyB3aGVuIHVzaW5nIFNQQSBmcm9udGVuZHMgYW5kIHRoaXJkIHBhcnR5IGNvbnN1bWVycy4KCiMjIHByZS1jb21taXQgYW5kIFFDQSBmbG93CgpUaGlzIHRlbXBsYXRlIGludGVncmF0ZXMgYSBmdWxsIFFDQSBmbG93IHVzaW5nIGBwcmUtY29tbWl0YCBob29rcywgdGhhdCBhdXRvbWF0ZXMgY29kZSBxdWFsaXR5IHRhc2tzIG9uIGV2ZXJ5IGNvbW1pdC4gVXNpbmcgdGhpcyBpbiB5b3VyIHByb2plY3QgZnJvbSB0aGUgYmVnaW5uaW5nIGRlbGV0ZXMgdGhlIG5lZWQgdG8gd29ycnkgYWJvdXQgaXNzdWVzIGFzIHVuYXR0ZW5kZWQgd2FybmluZ3MsIGNvZGUgc3R5bGVzLCBldGMsIGRvaW5nIGl0IGF1dG9tYXRpY2FsbHkuCgpUaGUgUUNBIGZsb3cgaW50ZWdyYXRlcyB0aGlzIGhvb2tzOgoKLSBbYGlzb3J0YF0oaHR0cHM6Ly9naXRodWIuY29tL1B5Q1FBL2lzb3J0KSBmb3IgaW1wb3J0IHNvcnRpbmcKLSBbYGJsYWNrYF0oaHR0cHM6Ly9naXRodWIuY29tL3BzZi9ibGFjaykgZm9yIGNvZGUgZm9ybWF0dGluZwotIFtgYXV0b2ZsYWtlYF0oaHR0cHM6Ly9naXRodWIuY29tL1B5Q1FBL2F1dG9mbGFrZSkgZm9yIHVudXNlZCBpbXBvcnRzIGFuZCB2YXJpYWJsZXMgcmVtb3ZhbAotIFtgcHlsaW50YF0oaHR0cHM6Ly9yZWFkdGhlZG9jcy5vcmcvcHJvamVjdHMvcHlsaW50LykgZm9yIFB5dGhvbiBjb21wbGFpbnQgbGludGluZwotIGBjb21taXRpemVuLWNoZWNrYCBmb3IgY29tbWl0IG1lc3NhZ2Ugc3RydWN0dXJlIGNoZWNraW5nCgpJZiBgcHJlLWNvbW1pdGAgaXMgbm90IHdvcmtpbmcgZm9yIHlvdSwgdHJ5IHRvIHJ1biBgcHJlLWNvbW1pdCBpbnN0YWxsYCBmb3IgaW5zdGFsbGluZyB0aGUgaG9va3MuIEFsbCB0aGUgaG9va3MgY29uZmlndXJhdGlvbiBpcyBpbiB0aGUgYC5wcmUtY29tbWl0LWNvbmZpZy55YW1sYCBmaWxlIGFuZCBldmVyeSB0b29sIGNvbmZpZ3VyYXRpb24gaXMgaW4gaXRzIHNwZWNpZmllZCBjb25maWcgZmlsZS4KCiMjIENvbW1pdGl6ZW4KClRoaXMgdGVtcGxhdGUgYWxzbyBpbmNsdWRlcyBbYGNvbW1pdGl6ZW5gXShodHRwczovL2NvbW1pdGl6ZW4tdG9vbHMuZ2l0aHViLmlvL2NvbW1pdGl6ZW4vKSBhcyBhIGNvbW1pdCB3cml0aW5nIGhlbHBlciwgZm9sbG93aW5nIHRoZSBbY29udmV0aW9uYWwgY29tbWl0c10oaHR0cHM6Ly93d3cuY29udmVudGlvbmFsY29tbWl0cy5vcmcvZW4vdjEuMC4wLykgc3RhbmRhcmRzIGFuZCBtYWtpbmcgY29tbWl0cyB1c2VmdWwgZm9yIHJlbGVhc2UgdGFza3MuIFRvIHVzZSBpdCwgcmVwbGFjZSBgZ2l0IGNvbW1pdGAgY29tbWFuZCB3aXRoIGBnaXQgY3ogY29tbWl0YC4gQWxsIHRlbXBsYXRlIHNwZWNzIGFuZCBjb25maWd1cmF0aW9ucyBhcmUgaW4gYHB5cHJvamVjdC50b21sYCBmaWxlLgoKIyMgR2l0aHViIEFjdGlvbnMgQ0kvQ0QgV29ya2Zsb3cKClRoaXMgdGVtcGxhdGUgaW5jbHVkZXMgYSBiYXNpYyBHaXRodWIgQWN0aW9ucyBDSSBXb3JrZmxvdywgdG9nZ2xlZCBvbiBkZXZlbG9wIGJyYW5jaCAoZ2l0IGZsb3cpIHB1c2ggYW5kIHB1bGwgcmVxdWVzdC4gSXQncyBkaXNhYmxlZCBieSBkZWZhdWx0OyB0byBlbmFibGUgaXQsIGdvIHRvIGAuZ2l0aHViL3dvcmtmbG93cy9jaS55bWxgIGFuZCB0b2dnbGUgY29tbWVudCBpbiBhbGwgZmlsZSBsaW5lcy4gSXQgYWxzbyBpbmNsdWRlcyBhIENEIHdvcmtmbG93IHRoYXQgc2ltcGx5IGJ1bXBzIHZlcnNpb24gdGFnLCBhbmQgbWFrZXMgYSByZWxlYXNlIHdpdGggY2hhbmdlbG9nLCBwb3dlcmVkIGJ5ICoqY29tbWl0aXplbioqLgoKIyMgQ29udHJpYnV0aW9uCgoqKkZvciBjb250cmlidXRpb24qKiwgYmFzZSB5b3VyIGJyYW5jaCBpbiBgZGV2ZWxvcGAuIERpc2FibGUgdGVtcGxhdGUgZmVhdHVyZXMgdXNpbmcgdGhlIHByb3ZpZGVkIGB0b2dnbGVfdGVtcGxhdGUucHlgIHNjcmlwdC4gVGhpcyB3aWxsIGZpbmQgYW5kIHJlcGxhY2UgdGhlIGBweS10cGxgIHN0cmluZ3MgYHt7cHJvamVjdF9uYW1lfX1gIHdpdGggc2ltcGxlIHN0cmluZ3MgYHByb2plY3RfbmFtZWAgaW4gYWxsIHByb2plY3QgZmlsZXMgaW4gb3JkZXIgdG8gYWxsb3cgaXQgdG8gcnVuIGFuZCB0ZXN0LgoKYGBgc2gKIyAiZGlzYWJsZSIgcmVwbGFjZXMge3twcm9qZWN0X25hbWV9fSB3aXRoIHByb2plY3RfbmFtZSwgYWxsb3dpbmcgY29kZSB0byBydW4sICJlbmFibGUiIGRpc2NhcmRzIHRoZSBmaW5kIGFuZCByZXBsYWNlIGVuYWJsaW5nIHRoZSBweS10cGwgZmVhdHVyZXMgcmVxdWlyZWQgdG8gZGphbmdvIHByb2plY3QgdGVtcGxhdGUKcHl0aG9uIHRvZ2dsZV90ZW1wbGF0ZS5weSA8ZW5hYmxlfGRpc2FibGU+CmBgYAoKV2hlbiB5b3UgZmluaXNoZWQgeW91ciBjaGFuZ2VzLCByZS1lbmFibGUgdGhlIHRlbXBsYXRlIGZlYXR1cmVzIHdpdGggcHJldmlvdXMgc2NyaXB0LCBhbmQgdGhlbiBwdWxsIHJlcXVlc3QgdG8gZGV2ZWxvcC4gKipQdWxsIHJlcXVlc3RzIHdvbid0IGJlIGFjY2VwdGVkIGlmIHRlbXBsYXRlIGZlYXR1cmVzIGFyZSBub3QgZW5hYmxlZCoqLgo= readmeEtag: '"3916d1268dbc9fa6e51c68be2de4f8e4e0e56780"' readmeLastModified: Fri, 08 Jul 2022 04:38:38 GMT repositoryId: 329782725 description: Django Rest base template created: '2021-01-15T01:58:27Z' updated: '2022-01-11T04:49:30Z' language: Python archived: false stars: 0 watchers: 0 forks: 0 owner: brevetech logo: https://avatars.githubusercontent.com/u/61919566?v=4 license: MIT repoEtag: '"9e3fb3f18ce110e8802455b5105c5a47ffd9290b955878d6da63485f780060f3"' repoLastModified: Tue, 11 Jan 2022 04:49:30 GMT foundInMaster: true category: Server Implementations id: 3252a3757181b778457575dd31338472 - source: openapi3 tags repository: https://github.com/josuablejeru/aws-openapi-ui v3: true repositoryMetadata: base64Readme: >- IyBBV1MgT3BlbmFwaSBVSQoKR2VuZXJhdGUgYW5kIHNlcnZlIGEgVUkgZm9yIHlvdXIgb3BlbmFwaSBkZWZpbml0aW9uIHdpdGggQVdTIENESwoKIyMgSW5zdGFsbGF0aW9uCmBgYGJhc2gKJCB5YXJuIGFkZCBhd3Mtb3BlbmFwaS11aQpgYGAKIyMg8J+agCBFeGFtcGxlIHVzYWdlCmBgYHR5cGVzY3JpcHQKbmV3IEF3c09wZW5hcGlVaShzY29wZSwgJ215LXNlcnZpY2UnLCB7CiAgICBvcGVuYXBpUGF0aDogJzxwYXRoLXRvLXNwZWM+JywKICAgIHNlcnZlcnM6IFsKICAgICAgICAnYXBpLmZvby5jb20nLAogICAgICAgICdkZXYuYXBpLmZvby5jb20nCiAgICBdCiAgfSkKYGBgCgoKIyMg4pyM77iPIEdldCBpbiB0b3VjaCB3aXRoIG1lCgo8YSBocmVmPSJodHRwczovL2ludG8tdGhlLWNvZGUuY29tIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBhbHQ9IlBlcnNvbmFsIFdlYnNpdGUiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9QZXJzb25hbCUyMFdlYnNpdGUtJTIzMTIxMDBFLnN2Zz8mc3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvQ29sb3I9d2hpdGUiIC8+PC9hPgo8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2pvc3VhYmxlamVydSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgYWx0PSJUd2l0dGVyIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvdHdpdHRlci0lMjMxREExRjIuc3ZnPyZzdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289dHdpdHRlciZsb2dvQ29sb3I9d2hpdGUiIC8+PC9hPgo8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vam9zdWEtYmxlamVydS1hMjg3MWExNjQiIHRhcmdldD0iX2JsYW5rIj48aW1nIGFsdD0iTGlua2VkSW4iIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saW5rZWRpbi0lMjMwMDc3QjUuc3ZnPyZzdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289bGlua2VkaW4mbG9nb0NvbG9yPXdoaXRlIiAvPjwvYT4KWyFbIkJ1eSBNZSBBIENvZmZlZSJdKGh0dHBzOi8vd3d3LmJ1eW1lYWNvZmZlZS5jb20vYXNzZXRzL2ltZy9jdXN0b21faW1hZ2VzL29yYW5nZV9pbWcucG5nKV0oaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9qb3N1YWJsZWplcnUpCgojIyDwn5OdIExpY2Vuc2UKCkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExJQ0VOU0UgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgojIyBBY2tub3dsZWRnZW1lbnRzCi0gaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWk= readmeEtag: '"7b3c4db91cae4aa8e0d864699ed1419d3dd53f82"' readmeLastModified: Mon, 26 Jul 2021 10:46:30 GMT repositoryId: 388463929 description: serve your api with swagger-ui and CDK created: '2021-07-22T13:01:34Z' updated: '2022-01-28T09:22:48Z' language: HTML archived: false stars: 0 watchers: 1 forks: 0 owner: josuablejeru logo: https://avatars.githubusercontent.com/u/37913833?v=4 license: MIT repoEtag: '"4790a701b9b268ec1f81997dbafcaf8c6953b213b5a428e14ed9c18885f12b50"' repoLastModified: Fri, 28 Jan 2022 09:22:48 GMT foundInMaster: true category: - SDK - Server Implementations id: ee2544503d1967a786a966e774f9ef25 - source: openapi3 tags repository: https://github.com/virtue-dbis/vrem-unity-interface v3: true repositoryMetadata: base64Readme: >- IyBWUkVNIFVuaXR5IEludGVyZmFjZQoKQyMgY2xpZW50IGdlbmVyYXRlZCB3aXRoIFtPcGVuQVBJXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIHRvIHByb3ZpZGUgYWNjZXNzIHRvCnRoZSBbVmlydHVhbCBFeGhpYml0aW9uIE1hbmFnZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9WSVJUVUUtREJJUy92aXJ0dWFsLWV4aGliaXRpb24tbWFuYWdlcikgc2VydmVyIEFQSQppbiBbVW5pdHldKGh0dHBzOi8vdW5pdHkuY29tLykuCgojIyBTZXR1cAoKVG8gaW5jbHVkZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlIGluIHlvdXIgVW5pdHkgcHJvamVjdCwgYWRkIHRoZSBmb2xsb3dpbmcgbGluZSB0byB5b3VyIGBtYW5pZmVzdC5qc29uYApmaWxlOgoKYGBganNvbgogICAgImNoLnVuaWJhcy5kbWkuZGJpcy52cmVtLmNsaWVudCI6ICJzc2g6Ly9naXRAZ2l0aHViLmNvbTpWSVJUVUUtREJJUy92cmVtLXVuaXR5LWludGVyZmFjZS5naXQjbWFpbiIsCmBgYAoKQWx0ZXJuYXRpdmVseSB5b3UgY2FuIGFsc28gdXNlIHRoZSBVbml0eSBQYWNrYWdlIE1hbmFnZXIgYW5kIGFkZCB0aGUKVVJMIGBnaXRAZ2l0aHViLmNvbTpWSVJUVUUtREJJUy92cmVtLXVuaXR5LWludGVyZmFjZS5naXQjbWFpbmAuCgojIyBEZXZlbG9wbWVudAoKRm9yIGRldmVsb3BtZW50LCBjbG9uZSB0aGlzIHJlcG9zaXRvcnkgaW50byB0aGUgYFBhY2thZ2VzYCBkaXJlY3Rvcnkgb2YgdGhlIFVuaXR5IHByb2plY3QuICAKWW91IG1heSB3YW50IHRvIHJ1biBgLi9ncmFkbGV3IGNsZWFuIGRlcGxveUFuZFRpZHlgIHRvIGdlbmVyYXRlIHRoZSBiaW5hcmllcyBhbmQgKHJlKW9wZW4gdGhlIHByb2plY3QgaW4gVW5pdHkgaW4gb3JkZXIKdG8gZ2VuZXJhdGUgdGhlIGAubWV0YWAgZmlsZXMuCg== readmeEtag: '"797a06e730738e4fcd45887894f591d2943e8201"' readmeLastModified: Mon, 08 Nov 2021 13:56:41 GMT repositoryId: 401296924 description: OpenAPI bindings for VREM in Unity created: '2021-08-30T10:03:47Z' updated: '2021-11-08T13:56:43Z' language: null archived: false stars: 0 watchers: 0 forks: 0 owner: VIRTUE-DBIS logo: https://avatars.githubusercontent.com/u/55091121?v=4 repoEtag: '"efee29359349db60724d7bc5e0e58e15cbcf0fba41695f392215435557da58ff"' repoLastModified: Mon, 08 Nov 2021 13:56:43 GMT foundInMaster: true category: Code Generators id: b4f4604163ff96389f3a929b3d05bf13 - source: openapi3 tags repository: https://github.com/ans-group/laravel-api-docs v3: true id: aa2ac4e8bbb09ed6543330c6b06298ac repositoryMetadata: base64Readme: >- PGltZyBzcmM9Imh0dHBzOi8vaW1hZ2VzLnVrZmFzdC5jby51ay9sb2dvcy91a2Zhc3QvNDQxeDEyNl90cmFuc3BhcmVudF9zdHJhcGxpbmUucG5nIiBhbHQ9IlVLRmFzdCBMb2dvIiB3aWR0aD0iMzUwcHgiIGhlaWdodD0iYXV0byIgLz4KCiMgTGFyYXZlbCBBUEkgRG9jcyBbQmV0YV0KCipQYWNrYWdlIGlzIHN0aWxsIGluIGJldGEgYW5kIGlzIG5vdCByZWFkeSBmb3IgcHJvZHVjdGlvbiB1c2UqCgpBdXRvbWF0aWNhbGx5IGdlbmVyYXRlIEFQSSBkb2N1bWVudGF0aW9uIGZvciB5b3VyIGxhcmF2ZWwgQVBJJ3MgYmFzZWQgb2ZmIHlvdXIgYXBwbGljYXRpb24gcm91dGVzIGFuZCBoYW5keSBQSFAgOCBhdHRyaWJ1dGVzLgoKIyMgSW5zdGFsbGF0aW9uCgpGaXJzdCwgdXNlIGNvbXBvc2VyIHRvIHJlcXVpcmUgdGhlIHBhY2thZ2UgYXMgYmVsb3c6CgpgYGAKY29tcG9zZXIgcmVxdWlyZSB1a2Zhc3QvbGFyYXZlbC1hcGktZG9jcwpgYGAKClRoZW4gYWxsIHdlIG5lZWQgdG8gZG8gaXMgdG8gcmVnaXN0ZXIgdGhlIHNlcnZpY2UgcHJvdmlkZXIgaW4gdGhlIGBwcm92aWRlcnNgIGtleSBpbiBgY29uZmlnL2FwcC5waHBgOgoKYGBgClVLRmFzdFxMYXJhdmVsQXBpRG9jc1xTZXJ2aWNlUHJvdmlkZXI6OmNsYXNzLApgYGAKCiMjIFVzYWdlCgpEb2N1bWVudGF0aW9uIGlzIGdlbmVyYXRlZCBieSBzY2FubmluZyB5b3VyIHJvdXRlcyBmaWxlIGFuZCBmaW5kaW5nIGNvbnRyb2xsZXIgbWV0aG9kcyB3aXRoIHNwZWNpYWwgZW5kcG9pbnQgYXR0cmlidXRlcyB0YWdnZWQgdG8gdGhlbS4KCldoaWxzdCB5b3UgY2FuIGVhc2lseSBkZWZpbmUgeW91ciBvd24gZW5kcG9pbnQgdHlwZXMsIHRoZSBwYWNrYWdlIGNvbWVzIHdpdGggc29tZSBzZW5zaWJsZSBkZWZhdWx0cyB0aGF0IGdlbmVyYWxseSBjb25mb3JtIHRvIGxhcmF2ZWwgZGVmYXVsdHMKCiMjIyBJbmRleAoKVGhlIGluZGV4IGVuZHBvaW50IGlzIGZvciBlbmRwb2ludHMgdGhhdCByZXR1cm4gYSBwYWdpbmF0ZWQgbGlzdCwgZm9yIGV4YW1wbGU6CgpgYGBwaHAKdXNlIFVLRmFzdFxMYXJhdmVsQXBpRG9jc1xFbmRwb2ludHM7CnVzZSBBcHBcSHR0cFxSZXNvdXJjZXNcUGV0UmVzb3VyY2U7CnVzZSBBcHBcTW9kZWxzXFBldDsKCmNsYXNzIFBldENvbnRyb2xsZXIKewogICAgI1tFbmRwb2ludHNcSW5kZXgoUGV0UmVzb3VyY2U6OmNsYXNzKV0KICAgIHB1YmxpYyBmdW5jdGlvbiBpbmRleCgpCiAgICB7CiAgICAgICAgcmV0dXJuIFBldFJlc291cmNlOjpjb2xsZWN0aW9uKFBldDo6cGFnaW5hdGUoKSk7CiAgICB9Cn0KYGBgCgojIyMgQ3JlYXRlCgpUaGUgY3JlYXRlIGVuZHBvaW50IGlzIGZvciBlbmRwb2ludHMgdGhhdCBjcmVhdGUgYSBuZXcgcmVzb3VyY2UuCgpgYGBwaHAKdXNlIFVLRmFzdFxMYXJhdmVsQXBpRG9jc1xFbmRwb2ludHM7CnVzZSBBcHBcSHR0cFxSZXNvdXJjZXNcUGV0UmVzb3VyY2U7CnVzZSBBcHBcTW9kZWxzXFBldDsKCmNsYXNzIFBldENvbnRyb2xsZXIKewogICAgI1tFbmRwb2ludHNcQ3JlYXRlKFBldFJlc291cmNlOjpjbGFzcykKICAgIHB1YmxpYyBmdW5jdGlvbiBzdG9yZSgpCiAgICB7CiAgICB9Cn0KYGBgCgojIyMgU2hvdwoKVGhlIHNob3cgZW5kcG9pbnQgc2hvd3MgYW4gaW5kaXZpZHVhbCByZXNvdXJjZQoKYGBgcGhwCnVzZSBVS0Zhc3RcTGFyYXZlbEFwaURvY3NcRW5kcG9pbnRzOwp1c2UgQXBwXEh0dHBcUmVzb3VyY2VzXFBldFJlc291cmNlOwp1c2UgQXBwXE1vZGVsc1xQZXQ7CgpjbGFzcyBQZXRDb250cm9sbGVyCnsKICAgICNbRW5kcG9pbnRzXFNob3coUGV0UmVzb3VyY2U6OmNsYXNzKQogICAgcHVibGljIGZ1bmN0aW9uIHNob3coKQogICAgewogICAgfQp9CmBgYAoKIyMjIFVwZGF0ZQoKVGhlIHVwZGF0ZSBlbmRwb2ludCB1cGRhdGVzIGEgcmVzb3VyY2UKCmBgYHBocAp1c2UgVUtGYXN0XExhcmF2ZWxBcGlEb2NzXEVuZHBvaW50czsKdXNlIEFwcFxIdHRwXFJlc291cmNlc1xQZXRSZXNvdXJjZTsKdXNlIEFwcFxNb2RlbHNcUGV0OwoKY2xhc3MgUGV0Q29udHJvbGxlcgp7CiAgICAjW0VuZHBvaW50c1xVcGRhdGUoUGV0UmVzb3VyY2U6OmNsYXNzKQogICAgcHVibGljIGZ1bmN0aW9uIHVwZGF0ZSgpCiAgICB7CiAgICB9Cn0KYGBgCgojIyMgRGVzdHJveQoKVGhlIGRlc3Ryb3kgZW5kcG9pbnQgZGVsZXRlcyBhIHJlc291cmNlCgpgYGBwaHAKdXNlIFVLRmFzdFxMYXJhdmVsQXBpRG9jc1xFbmRwb2ludHM7CgpjbGFzcyBQZXRDb250cm9sbGVyCnsKICAgICNbRW5kcG9pbnRzXERlc3Ryb3ldCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVzdHJveSgpCiAgICB7CiAgICB9Cn0KYGBgCgojIyBDdXN0b21pc2luZyBSZXF1ZXN0IGFuZCBSZXNwb25zZSBTdHJ1Y3R1cmUKCllvdXIgQVBJIGxpa2VseSBoYXMgaXRzIG93biBmb3JtYXQgZGlmZmVyZW50IHRvIHRoZSBkZWZhdWx0cyBwcm92aWRlZCBieSB0aGlzIHBhY2thZ2UuIEJ1dCByZWRlZmluaW5nIHRoZXNlIGlzIG5vdCBkaWZmaWN1bHQuCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBhIGN1c3RvbSBpbmRleCBlbmRwb2ludDoKCmBgYHBocApuYW1lc3BhY2UgQXBwXERvY3M7Cgp1c2UgVUtGYXN0XExhcmF2ZWxBcGlEb2NzXEVuZHBvaW50Owp1c2UgQXR0cmlidXRlOwoKI1tBdHRyaWJ1dGVdCmNsYXNzIEluZGV4IGV4dGVuZHMgRW5kcG9pbnQKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHByb3RlY3RlZCAkcmVzb3VyY2UpCiAgICB7fQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXNwb25zZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ2RhdGEnID0+IFskdGhpcy0+cmVmKCR0aGlzLT5yZXNvdXJjZSldLAogICAgICAgICAgICAnbWV0YScgPT4gWwogICAgICAgICAgICAgICAgJ3Blcl9wYWdlJyA9PiAxNSwKICAgICAgICAgICAgICAgICd0b3RhbF9wYWdlcycgPT4gMTAsCiAgICAgICAgICAgICAgICAnY3VycmVudF9wYWdlJyA9PiAxLAogICAgICAgICAgICBdLAogICAgICAgIF07CiAgICB9Cn0KYGBgCgpFbmRwb2ludCBjbGFzc2VzIGNhbiBkZWZpbmUgdHdvIG1ldGhvZHM6IGByZXF1ZXN0YCBhbmQgYHJlc3BvbnNlYCBlYWNoIHJldHVybiBhIFBIUCBhcnJheSBvdXRsaW5pbmcgdGhlIHJlcXVlc3Qgc3RydWN0dXJlLgoKQ2FsbHMgdG8gYCR0aGlzLT5yZWZgIGNhbiBiZSBwYXNzZWQgYSBjbGFzcyBwYXRoIHRvIGEgYW55IGNsYXNzIHdpdGggdGhlICNbUmVzb3VyY2VdIGF0dHJpYnV0ZSBvbiBpdC4KCkZvciBtb3JlIGV4YW1wbGVzIGxvb2sgaW5zaWRlIHRoZSBgc3JjL0VuZHBvaW50c2AgZm9sZGVyCgojIyBDb250cmlidXRpbmcKCldlIHdlbGNvbWUgY29udHJpYnV0aW9ucyB0byB0aGlzIHBhY2thZ2UgdGhhdCB3aWxsIGJlIGJlbmVmaWNpYWwgdG8gdGhlIGNvbW11bml0eS4KCllvdSBjYW4gcmVhY2ggb3V0IHRvIG91ciBvcGVuLXNvdXJjZSB0ZWFtIHZpYSAqKm9wZW4tc291cmNlQHVrZmFzdC5jby51ayoqIHdobyB3aWxsIGdldCBiYWNrIHRvIHlvdSBhcyBzb29uIGFzIHBvc3NpYmxlLgoKUGxlYXNlIHJlZmVyIHRvIG91ciBbQ09OVFJJQlVUSU5HXShDT05UUklCVVRJTkcubWQpIGZpbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgoKIyMgU2VjdXJpdHkKCklmIHlvdSB0aGluayB5b3UgaGF2ZSBpZGVudGlmaWVkIGEgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSwgcGxlYXNlIGNvbnRhY3Qgb3VyIHRlYW0gdmlhICoqc2VjdXJpdHlAdWtmYXN0LmNvLnVrKiogd2hvIHdpbGwgZ2V0IGJhY2sgdG8geW91IGFzIHNvb24gYXMgcG9zc2libGUsIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBpc3N1ZSB0cmFja2VyLgoKCiMjIExpY2VuY2UKClRoaXMgcHJvamVjdCBpcyBsaWNlbmNlZCB1bmRlciB0aGUgTUlUIExpY2VuY2UgKE1JVCkuIFBsZWFzZSBzZWUgdGhlIFtMaWNlbmNlXShMSUNFTkNFKSBmaWxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgo= readmeEtag: '"5308cd3d56f09109621c48fa5e43698862a2cc7a"' readmeLastModified: Mon, 04 Jul 2022 06:17:07 GMT repositoryId: 464829158 description: >- A package to automatically generate openapi v3 documentation for your laravel rest apis created: '2022-03-01T09:36:55Z' updated: '2022-07-04T06:15:01Z' language: PHP archived: false stars: 0 watchers: 13 forks: 0 owner: ans-group logo: https://avatars.githubusercontent.com/u/46777488?v=4 repoEtag: '"8e2b88e708b84184675da792d012cce0b6352cc024c7c91cd17e8a224cac88f9"' repoLastModified: Mon, 04 Jul 2022 06:15:01 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/ukfast/laravel-api-docs - source: openapi3 tags repository: https://github.com/lukearranz/challenge-alkemy v3: true id: 5a0746cd17c530f3859600be1dde6a47 repositoryMetadata: base64Readme: >- IyDinKggUGVsaWN1bGFzIENoYWxsZW5nZSAtIFJlc3RBcGkg4pyoCgpBcGkgUmVzdCBmb3IgcHJhY3RpY2UgcHVycG9zZXMKCiMjIEphdmEgKyBTcHJpbmdCb290CgotIE1hdmVuCi0gSGliZXJuYXRlCi0gTXlTcWwKLSBTcHJpbmdTZWN1cml0eQotIEpXVCBmb3Igc2VjdXJpdHkKLSBMb21ib2sKLSBKVW5pdAotIFN3YWdnZXIgJiBPcGVuQXBpIDMuMAoKIyMgSW5zdGFsbGF0aW9uCgpNYXZlbjoKYGBgYmFzaAptdm4gY2xlYW4gaW5zdGFsbApgYGAKCiMjIFVzYWdlCmBgYGphdmEKCi8vIEFwaSBkb2N1bWVudGF0aW9uCnd3dy5sb2NhbGhvc3Q6ODA4MC9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwjLwogICAgICAgIAovLyBEZWZhdWx0IFVzZXJzOgpVc2VyOiAgIHVzZXJuYW1lIC0gcGFzc3dvcmQKYGBgCgojIyBBdXRob3IKCi0gaHR0cHM6Ly93d3cubHVjYXNhcnJhbnouY29tLmFyLwotIGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9sdWNhcy1hcnJhbnotZ2FyY2lhLwoK readmeEtag: '"f42177fe8ac3f3bfc9e4a3163df14721cc0168b4"' readmeLastModified: Wed, 28 Dec 2022 20:28:36 GMT repositoryId: 531430694 description: >- Api Rest desarrollada con el fin de continuar aprendiendo el entorno Java+SpringBoot created: '2022-09-01T08:32:01Z' updated: '2022-12-15T12:04:31Z' language: Java archived: false stars: 0 watchers: 2 forks: 0 owner: lukearranz logo: https://avatars.githubusercontent.com/u/83666817?v=4 repoEtag: '"0cf10585c9a04b8bb3deb3c54a0e89f3bf1f885ffee19f1848b6e49e3b0922ce"' repoLastModified: Thu, 15 Dec 2022 12:04:31 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/ynnckth/pizza-time v3: true id: ff9222532fea8d98b39f9133bc9694fc repositoryMetadata: base64Readme: >- IyBQaXp6YSBUaW1lIQoKIVtDSV0oaHR0cHM6Ly9naXRodWIuY29tL3lubmNrdGgvcGl6emEtdGltZS9hY3Rpb25zL3dvcmtmbG93cy9tYWluLnltbC9iYWRnZS5zdmcpCgoqRXhwbG9yaW5nIHN0YXRlLW9mLXRoZS1hcnQgc3RhdGUgbWFuYWdlbWVudCBhbmQgdGVzdGluZyBwcmFjdGljZXMgZm9yIFJlYWN0SlMgaW4gMjAyMioKClRoaXMgcHJvamVjdCB3YXMgYm9vdHN0cmFwcGVkIHdpdGggW0NyZWF0ZSBSZWFjdCBBcHBdKGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9jcmVhdGUtcmVhY3QtYXBwKSB1c2luZyB0aGUgVHlwZVNjcmlwdCB0ZW1wbGF0ZS4KCiMjIFByZS1yZXF1aXNpdGVzCgotIE9ubHkgdGVzdGVkIG9uIGEgbWFjIGRldmVsb3BtZW50IG1hY2hpbmUgKHNvbWUgc2NyaXB0cyBtaWdodCBuZWVkIGFkYXB0aW9uIHRvIHdvcmsgb24gd2luZG93cykKLSBgTm9kZWAgYW5kIG5wbSBMVFMgbXVzdCBiZSBpbnN0YWxsZWQgb24gZGV2IG1hY2hpbmUKLSBgRG9ja2VyYCBtdXN0IGJlIGluc3RhbGxlZCBvbiBkZXYgbWFjaGluZQoKIyMgQXZhaWxhYmxlIHNjcmlwdHMKCmBgYHNoZWxsCiMgR2VuZXJhdGUgY2xpZW50IGNvZGUgZm9yIG9yZGVyLXNlcnZpY2UgQVBJIChyZXF1aXJlZCBmb3IgZnJvbnRlbmQpOgouL29wZW5hcGktY29kZWdlbi5zaAoKIyBJbnN0YWxsIGRlcGVuZGVuY2llczoKbnBtIGluc3RhbGwKCiMgUnVuIGluIGRldmVsb3BtZW50IG1vZGUgKG9uIHBvcnQgMzAwMCk6Cm5wbSBzdGFydAoKIyBSdW4gdW5pdCBhbmQgaW50ZWdyYXRpb24gdGVzdHM6IApucG0gdGVzdAoKIyBSdW4gZTJlIHRlc3RzOgpucG0gcnVuIGN5cHJlc3M6b3BlbgpgYGAKCiMjIFRvcGljcyBjb3ZlcmVkIGluIHRoaXMgcHJvamVjdAoKLSBDUkEgdXNpbmcgVHlwZVNjcmlwdCB0ZW1wbGF0ZQotIFJvdXRpbmcgdXNpbmcgcmVhY3Qtcm91dGVyLWRvbSBhbmQgQnJvd3NlclJvdXRlcgotIFN0YXRlIG1hbmFnZW1lbnQgdXNpbmcgUmVkdXggVG9vbGtpdAotIFJlZHV4IG1pZGRsZXdhcmUgdXNpbmcgVGh1bmsgKGRlZmF1bHQgZnJvbSBSZWR1eCBUb29sa2l0KQotIEZldGNoaW5nIGRhdGEgdXNpbmcgUlRLIFF1ZXJ5Ci0gUmVhY3QgZXJyb3IgYm91bmRhcnkKLSBGb3JtIHZhbGlkYXRpb24gdXNpbmcgRm9ybWlrCi0gVW5pdCBhbmQgaW50ZWdyYXRpb24gdGVzdGluZyBpbmNsdWRpbmcgYSByZWFsIHN0b3JlIHVzaW5nIHJlYWN0LXRlc3RpbmctbGlicmFyeSBhbmQgbXN3IGZvciBtb2NraW5nIG5ldHdvcmsgcmVxdWVzdHMKLSBFMmUgdGVzdGluZyB1c2luZyBjeXByZXNzIChzdHViYmVkIG5ldHdvcmsgY2FsbHMpCi0gQ2xpZW50IGNvZGUgZ2VuZXJhdGlvbiBiYXNlZCBvbiBPcGVuQVBJIHNwZWNpZmljYXRpb24KLSBDSS9DRCBwaXBlbGluZSB3aXRoIEdpdEh1YiBQYWdlcywgaW5jbHVkaW5nIHRlc3RpbmcgYW5kIGRlcGxveW1lbnQKLSBFbWJlZCBidWlsZCB2ZXJzaW9uIGluZm9ybWF0aW9uIGludG8gZGVwbG95ZWQgZnJvbnRlbmQgYXJ0aWZhY3QgYmFzZWQgb24gY29tbWl0IGhhc2ggYW5kIGJ1aWxkIG51bWJlcgotIEVudmlyb25tZW50IGUyZSB0ZXN0aW5nIGZvciBmdWxsIGludGVncmF0aW9uIHRlc3RzIG9mIGZyb250LSBhbmQgYmFja2VuZAotIFZpc3VhbCByZWdyZXNzaW9uIHRlc3Rpbmcgd2l0aCBDeXByZXNzIHNuYXBzaG90IHBsdWdpbgoKIyMgTGlua3MgYW5kIHJlbGV2YW50IGRvY3VtZW50YXRpb24KLSBbUmVkdXggVG9vbGtpdCBUeXBlU2NyaXB0IHF1aWNrIHN0YXJ0XShodHRwczovL3JlZHV4LXRvb2xraXQuanMub3JnL3R1dG9yaWFscy90eXBlc2NyaXB0KQotIFtPZmZpY2lhbCBDUkEgdGVtcGxhdGUgcHJvamVjdCB1c2luZyByZWR1eCB0b29sa2l0IGFuZCB0eXBlc2NyaXB0XShodHRwczovL2dpdGh1Yi5jb20vcmVkdXhqcy9jcmEtdGVtcGxhdGUtcmVkdXgtdHlwZXNjcmlwdCkKLSBbUmVkdXggYXN5bmMgbG9naWNdKGh0dHBzOi8vcmVkdXguanMub3JnL3R1dG9yaWFscy9lc3NlbnRpYWxzL3BhcnQtNS1hc3luYy1sb2dpYykKLSBbR3VpZGVsaW5lcyBmb3Igd3JpdGluZyB0ZXN0cyBmb3IgUmVkdXhdKGh0dHBzOi8vcmVkdXguanMub3JnL3VzYWdlL3dyaXRpbmctdGVzdHMpCi0gW1JlZHV4IFRvb2xraXQgUXVlcnkgT3ZlcnZpZXddKGh0dHBzOi8vcmVkdXgtdG9vbGtpdC5qcy5vcmcvcnRrLXF1ZXJ5L292ZXJ2aWV3KQoKLS0tCgojIyBDb2RlIEdlbmVyYXRpb24KClRoaXMgcHJvamVjdCB1c2VzIFN3YWdnZXIgQ29kZUdlbiBhbmQgT3BlbkFQSSB0byBnZW5lcmF0ZSBwYXJ0cyBvZiB0aGUgY29uc3VtZXIgY29kZSBmb3IgdGhlIG9yZGVyIHNlcnZpY2UgQVBJLgoKIVtDb2RlIGdlbmVyYXRpb24gcHJvY2Vzc10oLi9kb2Mvb3BlbmFwaS1jb2RlZ2VuLnBuZykKCiMjIyBQcmVyZXF1aXNpdGVzCi0gVGhlIHByb3ZpZGVkIHNjcmlwdCBleHBlY3RzIHlvdSB0byBoYXZlIGBkb2NrZXJgIGluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUgdG8gYmUgYWJsZSB0byBleGVjdXRlIHRoZSBjb2RlIGdlbmVyYXRpb24KCiMjIyBHZW5lcmF0aW5nIENsaWVudCBDb2RlCgpgYGBzaGVsbAojIEdlbmVyYXRlIHRoZSBUeXBlU2NyaXB0IGNsaWVudCBjb2RlOgouL29wZW5hcGktY29kZWdlbi5zaAojIFRoaXMgd2lsbCBjcmVhdGUgYSBmb2xkZXIgYGdlbmVyYXRlZGAgY29udGFpbmluZyB0aGUgZ2VuZXJhdGVkIGNsaWVudCBjb2RlCmBgYAoKIyMjIE9wZW4gUG9pbnRzCgotIFdoZXJlIHRvIHBsYWNlIHRoZSBnZW5lcmF0ZWQgY29kZSBpZGVhbGx5PwotIEhvdyB0byBzcGxpdCB0aGUgZ2VuZXJhdGVkIEFQSXMgaW50byBzZXBhcmF0ZSBmaWxlcyAoZS5nLiBieSBjb250cm9sbGVyKT8KLSBDdXJyZW50bHkgb25seSBjb25zdW1pbmcgZ2VuZXJhdGVkIG1vZGVscyAoaW50ZXJmYWNlcykgLT4gY2hlY2sgd2hhdCBlbHNlIGNhbiBiZSB1c2VkIGZyb20gdGhlIGdlbmVyYXRlZCBjb2RlCi0gRGlmZmVyZW5jZXMgdG8gW09wZW5BUEkgVG9vbHMgLyBvcGVuYXBpLWdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvcik/CgojIyMgTGlua3MgYW5kIERvY3VtZW50YXRpb24KCi0gW1N3YWdnZXIgQ29kZUdlbiBHaXRodWIgUmVwb10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikKLSBbU3dhZ2dlciBFZGl0b3IgLSBPbmxpbmVdKGh0dHBzOi8vZWRpdG9yLnN3YWdnZXIuaW8vKQotIFtTd2FnZ2VyIFBldCBTdG9yZSBHaXRodWIgUmVwbyAocmVmZXJlbmNlIGltcGxlbWVudGF0aW9uKV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItcGV0c3RvcmUpCi0gW25wbSBwYWNrYWdlIHRoYXQgd3JhcHMgU3dhZ2dlciBDb2RlR2VuXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ab3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSkKCi0tLQoKIyMgVGVzdCBTdHJhdGVneQoKVGhpcyBhcHBsaWNhdGlvbiBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgdGVzdCBib3VuZGFyaWVzOiAKCkZyb250ZW5kOiAKLSBVbml0IGFuZCBpbnRlZ3JhdGlvbiB0ZXN0cyB0aGF0IGNvdmVyIHRoZSBjb2xsYWJvcmF0aW9uIG9mIG9uZSBvciBtb3JlIGNvbXBvbmVudHMgaW4gY29sbGFib3JhdGlvbiB3aXRoIFJlZHV4IChpbmNsdWRpbmcgbWlkZGxld2FyZSkuIE1vY2tpbmcgaGFwcGVucyBvbiB0aGUgbmV0d29yayBsYXllci4KLSBFMmUgdGVzdHMgdXNpbmcgQ3lwcmVzcy4gVGhlc2UgdGVzdHMgY292ZXIgdGhlIGZyb250ZW5kIGUyZSBhbmQgcnVuIGFnYWluc3QgYSBmdWxseSBydW5uaW5nIGZyb250ZW5kLiBOZXR3b3JrIHJlcXVlc3RzIGFyZSBpbnRlcmNlcHRlZCBhbmQgc3R1YmJlZC4KCkJhY2tlbmQ6Ci0gVGJkCgpFMmUgZW52aXJvbm1lbnQgdGVzdHM6IAotIFRoZXNlIHRlc3RzIHJ1biBhZ2FpbnN0IGEgdGFyZ2V0IGVudmlyb25tZW50IChlLmcuIHRlc3QgZW52aXJvbm1lbnQpIGFuZCBjb3ZlciB0aGUgaW50ZWdyYXRpb24gb2YgZnJvbnQtIGFuZCBiYWNrZW5kLgotIFRoZXkgc2hvdWxkIHJ1biBhdXRvbWF0aWNhbGx5IHByaW9yIHRvIGEgcmVsZWFzZS4KCiFbVGVzdGluZyBib3VuZGFyaWVzXSguL2RvYy90ZXN0aW5nLWJvdW5kYXJpZXMucG5nKQoKLS0tCgoKIyMgUnVudGltZSBFbnZpcm9ubWVudHMKClRoZXJlIGlzIGN1cnJlbnRseSBvbmx5IG9uZSB0YXJnZXQgZW52aXJvbm1lbnQgdGhhdCBpcyBjb25maWd1cmVkIGluIHRoZSBDRCBwaXBlbGluZSBhcyBmb2xsb3dzOgoKVGhlIGJhY2tlbmQgaXMgY3VycmVudGx5IGRlcGxveWVkIHRvIEhlcm9rdSAoZnJlZSB0aWVyKTogCj4gaHR0cHM6Ly9waXp6YS10aW1lLWJhY2tlbmQuaGVyb2t1YXBwLmNvbS9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwKCk1hbmFnZSB0aHJvdWdoIFtIZXJva3UgZGFzaGJvYXJkXShodHRwczovL2Rhc2hib2FyZC5oZXJva3UuY29tL2FwcHMvcGl6emEtdGltZS1iYWNrZW5kKS4KClRoZSBmcm9udGVuZCBpcyBkZXBsb3llZCBhcyBhIHN0YXRpYyBzaXRlIHRvIFZlcmNlbDogCj4gaHR0cHM6Ly9mcm9udGVuZC15bm5ja3RoLnZlcmNlbC5hcHAvCgpNYW5hZ2UgdGhyb3VnaCBbVmVyY2VsIGRhc2hib2FyZF0oaHR0cHM6Ly92ZXJjZWwuY29tL2Rhc2hib2FyZCkKCioqVGVjaCBkZWJ0KiogCi0gSXQgbG9va3MgbGlrZSBWZXJjZWwgb25seSBhbGxvd3Mgb3ZlcnJpZGluZyBvbmUgc2luZ2xlIGJ1aWxkIGNvbW1hbmQuIElmIHdlIGhhdmUgbXVsdGlwbGUgZW52aXJvbm1lbnRzLCB0aGUgY3VycmVudCBhcHByb2FjaCBvZiBvdmVycmlkaW5nIHRoZSBidWlsZCBjb21tYW5kIGluIGB2ZXJjZWwuanNvbmAgaXMgbm90IHBvc3NpYmxlLgotIFRoZSBjdXJyZW50IGZyZWUgc2VydmljZXMgY29tZSB3aXRoIHRoZWlyIGxpbWl0YXRpb25zLiBDb25zaWRlciBkZXBsb3lpbmcgdG8gYSBjbG91ZCBlbnZpcm9ubWVudCBpbnN0ZWFkLgo= readmeEtag: '"8106c5447c6b542a8741e56fe7998ad3a511aec9"' readmeLastModified: Mon, 20 Mar 2023 14:00:23 GMT repositoryId: 530479305 description: >- Exploring and implementing state-of-the-art practices and tech when using ReactJS created: '2022-08-30T03:14:01Z' updated: '2022-09-21T02:32:16Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: ynnckth logo: https://avatars.githubusercontent.com/u/5628119?v=4 repoEtag: '"f53b333a54d534a2817c1cf9c0efe5e91923a9acae4f9c1892145f3b1158df89"' repoLastModified: Wed, 21 Sep 2022 02:32:16 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/ubhat95/usercrud v3: true id: c8168af1e613d9bbfdabba07f9092b60 repositoryMetadata: base64Readme: >- IyBVc2VyQ3J1ZAoKU3RhcnRlciBTcHJpbmdib290IHByb2plY3QuIFJ1bnMgb24gZG9ja2VyIApUaGlzIHByb2plY3QgaW1wbGVtZW50cyBSRVNUIEFQSXMgdXNpbmcgdGhlIE1WQyBtb2RlbC4gIGNvbnRyb2xsZXItc2VydmljZS1kYW87IGNvbm5lY3RzIHRvIE15U3FsIERiLiAKSGFzIGltcGxlbWVudGVkIEpQQSBNZXRob2RzLCBuYXRpdmVRdWVyaWVzIHRvIHJ1biBxdWVyaWVzLiBMb2dnaW5nLCBhY3R1YXRvciwgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZyBhcmUgaW4gcGxhY2UuIAoKVXNlciByZWdpc3RyYXRpb247IG9uZSB1c2VyIGNhbiBoYXZlIG1hbnkgZGlmZmVyZW50IGFjY291bnRzLiAKQnVzaW5lc3MgTG9naWMgbmVlZHMgd29yazsgZm9jdXNzaW5nIG9uIGRpZmZlcmVudCBhc3BlY3RzIG9mIHNwcmluZyBmb3Igbm93LiAK readmeEtag: '"cd47996c2e65d45d8d8bc7658a2683ab072c3afe"' readmeLastModified: Tue, 14 Nov 2023 18:39:45 GMT repositoryId: 713455048 description: 'Starter SpringBoot project. ' created: '2023-11-02T14:55:30Z' updated: '2023-11-14T18:37:17Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: ubhat95 logo: https://avatars.githubusercontent.com/u/53697553?v=4 repoEtag: '"259cc01deaeb86ab2782ed9ef57ded47a8a00d3229cdbf44a566c06e17536e20"' repoLastModified: Tue, 14 Nov 2023 18:37:17 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/neofoxxo/weather-api-mongodb v3: true id: edcffbe0cba3edc3a3f23c00c793b14d repositoryMetadata: base64Readme: >- IyBXZWF0aGVyIFNlbnNvciBBUEkKClRoaXMgd2VhdGhlciBzZW5zb3IgQVBJIGlzIGEgc2VjdXJlIFJFU1QgQVBJIGJ1aWx0IHdpdGggRXhwcmVzcy5qcywgTW9uZ29EQiwgYW5kIE1vbmdvb3NlLiBJdCBmZWF0dXJlcyBhIGZ1bGx5IGZ1bmN0aW9uYWwgQVBJIHdoZXJlIHVzZXJzIGNhbiBxdWVyeSB3ZWF0aGVyIGluZm9ybWF0aW9uIHN0b3JlZCBpbiBhIE1vbmdvREIgZGF0YWJhc2UuPGJyPgo8YnI+VGhpcyBBUEkgd2FzIGJ1aWx0IHVzaW5nIHRoZSBPcGVuQVBJIDMgc3RhbmRhcmQgYW5kIGl0cyBkb2N1bWVudGF0aW9uIGNhbiBiZSB2aWV3ZWQgYmVsb3c6Cjxicj48YSBocmVmPSJodHRwczovL2FwcC5zd2FnZ2VyaHViLmNvbS9hcGlzLWRvY3Mvd2ViRGF0YUNsdXN0ZXIvV2VhdGhlckFQSS8xLjAuMCMvIj5WaWV3IEFQSSBEb2N1bWVudGF0aW9uPC9hPjxicj4KCiMjIEZlYXR1cmVzCiog8J+boe+4jyBTZWN1cmUgYXV0aGVudGljYXRpb24gd2l0aCBKV1QncwoqIPCflJIgQ3JlYXRlIGFuZCB1c2UgYWNjb3VudHMgd2l0aCBmdWxsIHBhc3N3b3JkIGVuY3J5dGlvbgoqIPCfmqogUm9sZS1iYXNlZCBhY2Nlc3MgY29udHJvbCB0byBzZWN1cmUgZW5kcG9pbnRzCiog4pyFIFZhbGlkYXRpb24gdG8gcHJldmVudCB1bmV4cGVjdGVkIGRhdGEgZnJvbSBiZWluZyBpbnNlcnRlZAoqIPCfjKHvuI8gQWRkIG5ldyB3ZWF0aGVyIHJlYWRpbmdzCiog8J+RpSBBZGQgbmV3IHVzZXJzIHdpdGggc3BlY2lmaWVkIHJvbGVzCiog8J+TiiBTZXZlbiBkaWZmZXJlbnQgZW5kcG9pbnRzIHRvIHF1ZXJ5LCBtYW5pcHVsYXRlLCBhbmQgYWRkIHdlYXRoZXIgZGF0YQoqIPCflI0gRml2ZSBkaWZmZXJlbnQgZW5kcG9pbnRzIHRvIGZpbHRlciwgY3JlYXRlLCBhbmQgbWFuaXB1bGF0ZSB1c2VyIGFjY291bnRzIAoKIyMgRW5kcG9pbnRzCjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vTmVvRm94eG8vd2VhdGhlci1hcGktbW9uZ29kYi9ibG9iL2M5ZmY3YjFlNzQ5Yzg1ZDA5NzE2ZGUwYjcxZTM5OTc3MTEwMWY3MjEvaW1hZ2VzL2VuZHBvaW50cy5wbmciIGFsdD0iZW5kcG9pbnRzIiB3aWR0aD0iMTAwJSI+CgojIyBIb3cgVG8gUnVuIEl0ClRvIHJ1biB0aGlzIG9uIHlvdXIgbG9jYWwgbWFjaGluZSwgeW91IHdpbGwgbmVlZCB0byBoYXZlIE5vZGUuanMgaW5zdGFsbGVkIGFuZCBhY2Nlc3MgdG8gYSBNb25nb0RCIGRhdGFiYXNlLgoKMS4gQ2xvbmUgdGhlIHJlcG9zaXRvcnkgdG8geW91ciBsb2NhbCBtYWNoaW5lCjIuIEltcG9ydCB0aGUgZGF0YWJhc2UgZm9sZGVyIHRvIHlvdXIgTW9uZ29EQiBzZXJ2ZXIgd2l0aCBgbW9uZ29yZXN0b3JlYAozLiBDcmVhdGUgYSBgLmVudmAgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3RvcnkgYW5kIGFkZCBhIGBEQVRBQkFTRV9VUkxgIGFuZCBgQUNDRVNTX1RPS0VOX1NFQ1JFVGAKNC4gT3BlbiB5b3VyIHRlcm1pbmFsIGFuZCBydW4gYG5wbSBpbnN0YWxsYAo1LiBSdW4gdGhlIGBucG0gcnVuIHN0YXJ0YCBjb21tYW5kCjYuIEFjY2VzcyB0aGUgQVBJIG9uIHBvcnQgNTAwMCBhbmQgZW5qb3kh readmeEtag: '"eff71d63b8f559c55d1b01e94ab3093d692cc84c"' readmeLastModified: Fri, 06 Oct 2023 03:11:29 GMT repositoryId: 685361937 description: Weather REST API built with Express.js & MongoDB created: '2023-08-31T04:12:43Z' updated: '2025-04-01T01:28:52Z' language: JavaScript archived: false stars: 1 watchers: 1 forks: 0 owner: NeoFoxxo logo: https://avatars.githubusercontent.com/u/104744179?v=4 repoEtag: '"ea9ec1151281045e72378f3172b1cc31949b71fa4b4b4a0a84f70569fec8219f"' repoLastModified: Tue, 01 Apr 2025 01:28:52 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/mariama4/kvazar-tt v3: true id: 879f24a770c18a4705a679ab607098a1 repositoryMetadata: base64Readme: >- IyBrdmF6YXItdHQKCiMjINCe0L/QuNGB0LDQvdC40LUKCtCU0LDQvdC90YvQuSDQv9GA0L7QtdC60YIg0Y/QstC70Y/QtdGC0YHRjyDQt9Cw0LrQu9GO0YfQuNGC0LXQu9GM0L3QvtC5INGH0LDRgdGC0YzRjiDRgtC10YHRgtC+0LLQvtCz0L4g0LfQsNC00LDQvdC40Y8g0LTQu9GPINCa0LLQsNC30LDRgC4K0KHRg9GC0Ywg0LfQsNC00LDQvdC40Y8g0Y/QstC70Y/QtdGC0YHRjyDRgdC+0LXQtNC40L3QuNGC0Ywg0LLQvtC10LTQuNC90L4g0L/RgNC10LTRi9C00YPRidC40LUg0LzQvtC00YPQu9C4OgotIFtBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9NYXJpYW1hNC9rdmF6YXItdHQvdHJlZS9hcGkpCi0gW1VUSUxTXShodHRwczovL2dpdGh1Yi5jb20vTWFyaWFtYTQva3ZhemFyLXR0L3RyZWUvdXRpbHMpCi0gW01MXShodHRwczovL2dpdGh1Yi5jb20vTWFyaWFtYTQva3ZhemFyLXR0L3RyZWUvbWwpCgrQkCDRgtCw0Lot0LbQtSDQtNC+0LHQsNCy0LvQtdC90LjQtToKKiDQlNC+0LrRg9C80LXQvdGC0LDRhtC40Lgg0LogQVBJCiog0JTQvtC60YPQvNC10L3RgtCw0YbQuNC4INC6INCf0YDQvtC10LrRgtGDCgoqKkFQSSDRgNC10LDQu9C40LfQvtCy0LDQvdC+INC90LA6KioKKiBQeXRob24gMy4xMQoqIFNRTGl0ZQoKKirQoSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC8INGB0LvQtdC00YPRjtGJ0LjRhSDQsdC40LHQu9C40L7RgtC10Lo6KioKKiBGbGFzay1TUUxBbGNoZW15IDMuMC54CiogcHl0aG9uLWRvdGVudgoqIGZsYXNrLXN3YWdnZXItdWkKCioqVE9ETzoqKgoKKiDQo9C70YPRh9GI0LjRgtGMINC60LDRh9C10YHRgtCy0L4gZG9jc3RyaW5nCiog0KDQtdCw0LvQuNC30L7QstCw0YLRjCDRh9Cw0YHRgtGMIE1MCiog0JTQvtCx0LDQstC40YLRjCDQvtCx0YDQsNCx0L7RgtGH0LjQutC4INC+0YjQuNCx0L7QugoqINCY0YHQv9GA0LDQstC40YLRjCDQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC1INCyINGC0LXRgdGC0LDRhTogdGVzdF9kZWxldGVfdXNlciAtIExlZ2FjeUFQSVdhcm5pbmcKKiDQo9C70YPRh9GI0LjRgtGMINC60LDRh9C10YHRgtCy0L4g0YLQtdGB0YLQvtCyLCDRg9Cx0YDQsNGC0Ywg0L/QvtCy0YLQvtGA0LXQvdC40Y8g0LrQvtC00LAKCioqVGVzdCBjb3ZlcmFnZToqKgoqIFN0bXRzOiA0MzYKKiBNaXNzOiA0NgoqIENvdmVyOiA4OSUKCioq0JTQvtC60YPQvNC10L3RgtCw0YbQuNGPINC6IEFQSSDQstGL0L/QvtC70L3QtdC90LAg0L3QsCBzd2FnZ2VyINC/0L4g0YHRgtCw0L3QtNCw0YDRgtGDIG9wZW5hcGkgMy4wLjAqKgoKIyMg0JfQsNC/0YPRgdC6INC/0YDQvtC10LrRgtCwCgrQp9GC0L7QsdGLINC30LDQv9GD0YHRgtC40YLRjCDQv9GA0L7QtdC60YIsINC90LXQvtCx0YXQvtC00LjQvNC+OgoKMS4g0KHQutCw0YfQsNGC0Ywg0LXQs9C+OgoKYGBgc2hlbGwKZ2l0IGNsb25lIC0tYnJhbmNoPW1hc3RlciBodHRwczovL2dpdGh1Yi5jb20vTWFyaWFtYTQva3ZhemFyLXR0LmdpdApgYGAKCjIuINCf0LXRgNC10LnRgtC4INCyINC/0LDQv9C60YMg0L/RgNC+0LXQutGC0LA6CgpgYGBzaGVsbApjZCBrdmF6YXItdHQKYGBgCgozLiDQo9GB0YLQsNC90L7QstC40YLRjCDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4OgoKYGBgc2hlbGwKcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dApgYGAKCjQuINCX0LDQv9GD0YHRgtC40YLRjCDQv9GA0L7QtdC60YI6CgpgYGBzaGVsbApweXRob24gYXBwLnB5CmBgYAoKIyDQmNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtSBBUEk6CgrQldGB0LvQuCDQstGLINGD0YHRgtCw0L3QvtCy0LjQu9C4INC4INC30LDQv9GD0YHRgtC40LvQuCDQv9GA0L7QtdC60YIsINGC0L4g0LHQvtC70LXQtSDQv9C+0LTRgNC+0LHQvdGD0Y4g0LTQvtC60YPQvNC10L3RgtCw0YbQuNGOINC80L7QttC90L4g0YPQstC40LTQtdGC0Ywg0YLRg9GCIFtodHRwOi8vMTI3LjAuMC4xOjUwMDAvYXBpL2RvY3MvXShodHRwOi8vMTI3LjAuMC4xOjUwMDAvYXBpL2RvY3MvKQoKIyMgQVBJIEFwcAoKPiBWZXJzaW9uIDEuMC4wCgpBUEkg0YEg0LzQvtC00YPQu9C10LwgVXNlcnMsINC60L7RgtC+0YDRi9C5INC/0L7QtNC00LXRgNC20LjQstCw0LXRgiBDUlVEINC4INC/0L7Qt9Cy0L7Qu9GP0LXRgiDQv9C+0LvRg9GH0LjRgtGMINGB0LvQtdC00YPRjtGJ0YPRjiDQuNC90YTQvtGA0LzQsNGG0LjRjjoKLSDQmNGB0L/QvtC70YzQt9GD0Y8g0LTQsNC90L3Ri9C1INC40Lcg0YLQsNCx0LvQuNGG0YsgVXNlciwg0L/QvtC00YHRh9C40YLRi9Cy0LDRgtGMINC60L7Qu9C40YfQtdGB0YLQstC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LCDQt9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0L3QvdGL0YUg0LfQsCDQv9C+0YHQu9C10LTQvdC40LUgNyDQtNC90LXQuTsKLSDQn9C+0LvRg9GH0LjRgtGMINGC0L7QvyA1INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INGBINGB0LDQvNGL0LzQuCDQtNC70LjQvdC90YvQvNC4INC40LzQtdC90LDQvNC4OwotINCf0L7Qu9GD0YfQuNGC0Ywg0L/RgNC+0YbQtdC90YIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LksINC60L7RgtC+0YDRi9C1INC40LzQtdGO0YIg0LDQtNGA0LXRgSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0YssINC30LDRgNC10LPQuNGB0YLRgNC40YDQvtCy0LDQvdC90YvQuSDQsiDQvtC/0YDQtdC00LXQu9C10L3QvdC+0Lwg0LTQvtC80LXQvdC1ICjQvdCw0L/RgNC40LzQtdGALCAiZXhhbXBsZS5jb20iKS4KCiMjIFBhdGggVGFibGUKCnwgTWV0aG9kIHwgUGF0aCB8IERlc2NyaXB0aW9uIHwKfCAtLS0gfCAtLS0gfCAtLS0gfAp8IEdFVCB8IFsvYXBpL3VzZXJzL10oI2dldGFwaXVzZXJzKSB8INCf0L7Qu9GD0YfQtdC90LjQtSDQstGB0LXRhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSB8CnwgR0VUIHwgWy9hcGkvdXNlcnNdKCNnZXRhcGl1c2VycykgfCDQn9C+0LvRg9GH0LXQvdC40LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10Lkg0YEg0L/QsNCz0LjQvdCw0YbQuNC10LkgfAp8IFBPU1QgfCBbL2FwaS91c2Vyc10oI3Bvc3RhcGl1c2VycykgfCDQodC+0LfQtNCw0L3QuNC1INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyB8CnwgR0VUIHwgWy9hcGkvdXNlcnMve2lkfV0oI2dldGFwaXVzZXJzaWQpIHwg0J/QvtC70YPRh9C10L3QuNC1INC/0L7Qu9GM0LvRjNC30L7QstCw0YLQtdC70Y8g0L/QviBpZCB8CnwgUEFUQ0ggfCBbL2FwaS91c2Vycy97aWR9XSgjcGF0Y2hhcGl1c2Vyc2lkKSB8INCe0LHQvdC+0LLQu9C10L3QuNC1INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQv9C+IGlkIHwKfCBERUxFVEUgfCBbL2FwaS91c2Vycy97aWR9XSgjZGVsZXRlYXBpdXNlcnNpZCkgfCDQo9C00LDQu9C10L3QuNC1INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQv9C+IGlkIHwKfCBQT1NUIHwgWy9hcGkvdXNlcnMvaW5mb10oI3Bvc3RhcGl1c2Vyc2luZm8pIHwg0J/QvtC70YPRh9C10L3QuNC1INC40L3RhNC+0YDQvNCw0YbQuNC4INC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRj9GFIHwKCiMjIFJlZmVyZW5jZSBUYWJsZQoKfCBOYW1lIHwgUGF0aCB8IERlc2NyaXB0aW9uIHwKfCAtLS0gfCAtLS0gfCAtLS0gfAp8IFVzZXIgfCBbIy9jb21wb25lbnRzL3NjaGVtYXMvVXNlcl0oI2NvbXBvbmVudHNzY2hlbWFzdXNlcikgfCAgfAoKIyMgUGF0aCBEZXRhaWxzCgoqKioKCiMjIyBbR0VUXSAvYXBpL3VzZXJzLwoKLSBTdW1tYXJ5ICAK0J/QvtC70YPRh9C10L3QuNC1INCy0YHQtdGFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5CgojIyMjIFJlc3BvbnNlcwoKLSAyMDAg0KHQv9C40YHQvtC6INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5CgpgYXBwbGljYXRpb24vanNvbmAKCmBgYGpzb24KWwogIHsKICAgICJlbWFpbCI6IHN0cmluZywKICAgICJpZCI6IGludGVnZXIsCiAgICAicmVnaXN0cmF0aW9uX2RhdGUiOiBkYXRldGltZSwKICAgICJ1c2VybmFtZSI6IHN0cmluZwogIH0sCiAgewogICAgImVtYWlsIjogc3RyaW5nLAogICAgImlkIjogaW50ZWdlciwKICAgICJyZWdpc3RyYXRpb25fZGF0ZSI6IGRhdGV0aW1lLAogICAgInVzZXJuYW1lIjogc3RyaW5nCiAgfQpdCmBgYAoKLSA0MDMg0J7RiNC40LHQutCwINC90LAg0YHRgtC+0YDQvtC90LUg0YHQtdGA0LLQtdGA0LAKCioqKgoKIyMjIFtHRVRdIC9hcGkvdXNlcnMKCi0gU3VtbWFyeSAgCtCf0L7Qu9GD0YfQtdC90LjQtSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSDRgSDQv9Cw0LPQuNC90LDRhtC40LXQuQoKIyMjIyBQYXJhbWV0ZXJzKFF1ZXJ5KQoKYGBgdHMKcGFnZTogaW50ZWdlcgpgYGAKCmBgYHRzCnBlcl9wYWdlOiBpbnRlZ2VyCmBgYAoKIyMjIyBSZXNwb25zZXMKCi0gMjAwINCh0L/QuNGB0L7QuiDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuQoKYGFwcGxpY2F0aW9uL2pzb25gCgpgYGBqc29uClsKICB7CiAgICAiZW1haWwiOiBzdHJpbmcsCiAgICAiaWQiOiBpbnRlZ2VyLAogICAgInJlZ2lzdHJhdGlvbl9kYXRlIjogZGF0ZXRpbWUsCiAgICAidXNlcm5hbWUiOiBzdHJpbmcKICB9LAogIHsKICAgICJlbWFpbCI6IHN0cmluZywKICAgICJpZCI6IGludGVnZXIsCiAgICAicmVnaXN0cmF0aW9uX2RhdGUiOiBkYXRldGltZSwKICAgICJ1c2VybmFtZSI6IHN0cmluZwogIH0KXQpgYGAKCi0gNDAzINCe0YjQuNCx0LrQsCDQvdCwINGB0YLQvtGA0L7QvdC1INGB0LXRgNCy0LXRgNCwCgoqKioKCiMjIyBbUE9TVF0gL2FwaS91c2VycwoKLSBTdW1tYXJ5ICAK0KHQvtC30LTQsNC90LjQtSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8KCiMjIyMgUmVxdWVzdEJvZHkKCi0gYXBwbGljYXRpb24vanNvbgoKYGBganNvbgp7CiAgICAiZW1haWwiOiBzdHJpbmcsCiAgICAiaWQiOiBpbnRlZ2VyLAogICAgInJlZ2lzdHJhdGlvbl9kYXRlIjogZGF0ZXRpbWUsCiAgICAidXNlcm5hbWUiOiBzdHJpbmcKfQpgYGAKCiMjIyMgUmVzcG9uc2VzCgotIDIwMCDQn9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0YHQvtC30LTQsNC9CgpgYXBwbGljYXRpb24vanNvbmAKCmBgYGpzb24KewogICAgImVtYWlsIjogc3RyaW5nLAogICAgImlkIjogaW50ZWdlciwKICAgICJyZWdpc3RyYXRpb25fZGF0ZSI6IGRhdGV0aW1lLAogICAgInVzZXJuYW1lIjogc3RyaW5nCn0KYGBgCgotIDQwMyDQntGI0LjQsdC60LAg0L3QsCDRgdGC0L7RgNC+0L3QtSDRgdC10YDQstC10YDQsAoKKioqCgojIyMgW0dFVF0gL2FwaS91c2Vycy97aWR9CgotIFN1bW1hcnkgIArQn9C+0LvRg9GH0LXQvdC40LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC/0L4gaWQKCiMjIyMgUmVzcG9uc2VzCgotIDIwMCDQn9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0L/QvtC70YPRh9C10L0KCmBhcHBsaWNhdGlvbi9qc29uYAoKYGBganNvbgp7CiAgICAiZW1haWwiOiBzdHJpbmcsCiAgICAiaWQiOiBpbnRlZ2VyLAogICAgInJlZ2lzdHJhdGlvbl9kYXRlIjogZGF0ZXRpbWUsCiAgICAidXNlcm5hbWUiOiBzdHJpbmcKfQpgYGAKCi0gNDAzINCe0YjQuNCx0LrQsCDQvdCwINGB0YLQvtGA0L7QvdC1INGB0LXRgNCy0LXRgNCwCgoqKioKCiMjIyBbUEFUQ0hdIC9hcGkvdXNlcnMve2lkfQoKLSBTdW1tYXJ5ICAK0J7QsdC90L7QstC70LXQvdC40LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC/0L4gaWQKCiMjIyMgUmVxdWVzdEJvZHkKCi0gYXBwbGljYXRpb24vanNvbgoKYGBganNvbgp7CiAgICAiZW1haWwiOiBzdHJpbmcsCiAgICAidXNlcm5hbWUiOiBzdHJpbmcKfQpgYGAKCiMjIyMgUmVzcG9uc2VzCgotIDIwMCDQn9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0L/QvtC70YPRh9C10L0KCmBhcHBsaWNhdGlvbi9qc29uYAoKYGBganNvbgp7CiAgICAiZW1haWwiOiBzdHJpbmcsCiAgICAiaWQiOiBpbnRlZ2VyLAogICAgInJlZ2lzdHJhdGlvbl9kYXRlIjogZGF0ZXRpbWUsCiAgICAidXNlcm5hbWUiOiBzdHJpbmcKfQpgYGAKCi0gNDAzINCe0YjQuNCx0LrQsCDQvdCwINGB0YLQvtGA0L7QvdC1INGB0LXRgNCy0LXRgNCwCgoqKioKCiMjIyBbREVMRVRFXSAvYXBpL3VzZXJzL3tpZH0KCi0gU3VtbWFyeSAgCtCj0LTQsNC70LXQvdC40LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC/0L4gaWQKCiMjIyMgUmVzcG9uc2VzCgotIDIwMCDQn9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0YPQtNCw0LvQtdC9CgpgYXBwbGljYXRpb24vanNvbmAKCmBgYGpzb24KewogICJkZWxldGVkIjogYm9vbGVhbgp9CmBgYAoKLSA0MDMg0J7RiNC40LHQutCwINC90LAg0YHRgtC+0YDQvtC90LUg0YHQtdGA0LLQtdGA0LAKCioqKgoKIyMjIFtQT1NUXSAvYXBpL3VzZXJzL2luZm8KCi0gU3VtbWFyeSAgCtCf0L7Qu9GD0YfQtdC90LjQtSDQuNC90YTQvtGA0LzQsNGG0LjQuCDQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y/RhQoKLSBEZXNjcmlwdGlvbiAgCi0g0J/QvtC70YzQt9C+0LLQsNGC0LXQu9C4LCDQutC+0YLQvtGA0YvQtSDQt9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0LvQuNGB0Ywg0LfQsCDQv9C+0YHQu9C10LTQvdC40LUgNyDQtNC90LXQuSAgCi0g0KLQvtC/IDUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LksINC60L7RgtC+0YDRi9C1INC40LzQtdGO0YIg0YHQsNC80YvQtSDQtNC70LjQvdC90YvQtSDQuNC80LXQvdCwICjQv9C+INGD0LHRi9Cy0LDQvdC40Y4pICAKLSDQn9GA0L7RhtC10L3RgiDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSwg0LrQvtGC0L7RgNGL0LUg0LjQvNC10Y7RgiDQsNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiywg0LfQsNGA0LXQs9C40YHRgtGA0LjRgNC+0LLQsNC90L3Ri9C5INCyINC+0L/RgNC10LTQtdC70LXQvdC90L7QvCDQtNC+0LzQtdC90LUgKNC90LDQv9GA0LjQvNC10YAsICJleGFtcGxlLmNvbSIpLgoKIyMjIyBSZXF1ZXN0Qm9keQoKLSBhcHBsaWNhdGlvbi9qc29uCgpgYGBqc29uCnsKICAiZG9tYWluIjogc3RyaW5nCn0KYGBgCgojIyMjIFJlc3BvbnNlcwoKLSAyMDAg0JjQvdGE0L7RgNC80LDRhtC40Y8g0L/QvtC70YPRh9C10L3QsAoKYGFwcGxpY2F0aW9uL2pzb25gCgpgYGBqc29uCnsKCSJjb3VudFVzZXJzRm9yV2VlayI6IGludGVnZXIsCgkicGVyY2VudE9mRG9tYWluIjogewoJCSJkb21haW4iOiBzdHJpbmcsCgkJInBlcmNlbnQiOiBudW1iZXIKCX0sCgkidG9wVXNlcnNXaXRoTG9uZ2VzdFVzZXJuYW1lcyI6IFsKCQl7CiAgICAgICAgICAgICJlbWFpbCI6IHN0cmluZywKICAgICAgICAgICAgImlkIjogaW50ZWdlciwKICAgICAgICAgICAgInJlZ2lzdHJhdGlvbl9kYXRlIjogZGF0ZXRpbWUsCiAgICAgICAgICAgICJ1c2VybmFtZSI6IHN0cmluZwogICAgICAgIH0sCgkJewogICAgICAgICAgICAiZW1haWwiOiBzdHJpbmcsCiAgICAgICAgICAgICJpZCI6IGludGVnZXIsCiAgICAgICAgICAgICJyZWdpc3RyYXRpb25fZGF0ZSI6IGRhdGV0aW1lLAogICAgICAgICAgICAidXNlcm5hbWUiOiBzdHJpbmcKICAgICAgICB9CgldCn0KYGBgCgotIDQwMyDQntGI0LjQsdC60LAg0L3QsCDRgdGC0L7RgNC+0L3QtSDRgdC10YDQstC10YDQsAoKIyMgUmVmZXJlbmNlcwoKIyMjICMvY29tcG9uZW50cy9zY2hlbWFzL1VzZXIKCmBgYGpzb24KImlkIjogaW50ZWdlcgoidXNlcm5hbWUiOiBzdHJpbmcKImVtYWlsIjogc3RyaW5nCiJyZWdpc3RyYXRpb25fZGF0ZSI6IGRhdGV0aW1lCmBgYAo= readmeEtag: '"3dc25774993bb0ecc10128fedfe6560441c841bf"' readmeLastModified: Mon, 01 May 2023 06:24:07 GMT repositoryId: 631767888 description: Тестовое задание для "Квазар" created: '2023-04-24T02:30:25Z' updated: '2024-01-15T16:58:58Z' language: Python archived: false stars: 0 watchers: 1 forks: 0 owner: Mariama4 logo: https://avatars.githubusercontent.com/u/61371131?v=4 repoEtag: '"b3d516f9c0a1ae2720f46a8a1ece2a738a1c35689900ad312c5c9f1304bd80bb"' repoLastModified: Mon, 15 Jan 2024 16:58:58 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/yoshi2no/openapi-ts v3: true id: 86bb6e0c47584b3ac9228347f46ad408 repositoryMetadata: base64Readme: >- IyB5b3NoaTJuby9vcGVuYXBpLXRzCgo+IFshSU1QT1JUQU5UXQo+VGhpcyByZXBvc2l0b3J5IGlzIGNyZWF0ZWQgZm9yIHBlcnNvbmFsIGxlYXJuaW5nIGFuZCBkZXZlbG9wbWVudCBwdXJwb3Nlcy4gSXQncyBub3QgaW50ZW5kZWQgZm9yIHByb2R1Y3Rpb24gdXNlLgoKCiMjIPCfk6YgUGFja2FnZXMKCjxhIGhyZWY9Ii4vcGFja2FnZXMvb3BlbmFwaS10cyI+PGJyIC8+CvCfmLogb3BlbmFwaS10czxiciAvPgo8L2E+CkdlbmVyYXRlcyBUeXBlU2NyaXB0IHR5cGVzIGZyb20gc3RhdGljIE9wZW5BUEkgc2NoZW1hcwoKPGEgaHJlZj0iLi9wYWNrYWdlcy9vcGVuYXBpLWZldGNoIj48YnIgLz4K8J+YuiBvcGVuYXBpLWZldGNoPGJyIC8+CjwvYT4K8J+apwoKCiMjIOKchSBTdGF0dXMKCuKchSBtZWFucyBpbXBsZW1lbnRlZAoKIyMjIEJhc2ljIEZlYXR1cmVzCgp8IGZlYXR1cmUgICAgICAgICB8IGltcGwgfCBib29rIHwKfCA6LS0tOiB8IDotLS06IHwgOi0tLTogfAp8IExvY2FsIHNjaGVtYSAgICAgICAgICAgICB8ICAgfCAgIHwKfCBSZW1vdGUgc2NoZW1hICAgICAgICAgICAgIHwgICB8ICAgfAp8IE11bHRpcGxlIHNjaGVtYXMgICAgICAgICAgICAgfCAgIHwgICB8CgoKIyMjIENvbmZpZwp8IGZlYXR1cmUgICAgICAgICB8IGltcGwgfCBib29rIHwKfCA6LS0tOiB8IDotLS06IHwgOi0tLTogfAp8IFJlZG9jIGNvbmZpZyAgICAgICAgICAgICB8ICAgfCAgIHwKCiMjIyBDTEkgT3B0aW9ucwp8IGZlYXR1cmUgICAgICAgICB8IGltcGwgfCBib29rIHwKfCA6LS0tOiB8IDotLS06IHwgOi0tLTogfAp8IC0tb3V0cHV0KC1vKSBbbG9jYXRpb25dICAgICAgICAgICAgfCAgIHwgICB8CnwgLS1oZWxwICAgICAgICAgICB8ICAgfCAgIHwKfCAtLXZlcnNpb24KfCAtLXJlZG9jICAgICAgICAgICAgfCAgIHwgICB8CnwgLS1hZGRpdGlvbmFsLXByb3BlcnRpZXMgICAgICAgICAgICB8ICAgfCAgIHwKfCAtLWFscGhhYmV0aXplICAgICAgICAgICAgfCAgIHwgICB8CnwgLS1hcnJheS1sZW5ndGggICAgICAgICAgICB8ICAgfCAgIHwKfCAtLWRlZmF1bHQtbm9uLW51bGxhYmxlICAgICAgICAgICAgfCAgIHwgICB8CnwgLS1lbXB0eS1vYmplY3RzLXVua25vd24gICAgICAgICAgICB8ICAgfCAgIHwKfCAtLWVudW0gICAgICAgICAgICB8ICAgfCAgIHwKfCAtLWV4Y2x1ZGUtZGVwcmVjYXRlZCAgICAgICAgICAgIHwgICB8ICAgfAp8IC0tZXhwb3J0LXR5cGUgICAgICAgICAgICB8ICAgfCAgIHwKfCAtLWltbXV0YWJsZSAgICAgICAgICAgIHwgICB8ICAgfAp8IC0tcGF0aC1wYXJhbXMtYXMtdHlwZXMgICAgICAgICAgICB8ICAgfCAgIHwKCiMjIPCfmY8gQWNrbm93bGVkZ2VtZW50cwoKVGhpcyBsaWJyYXJ5IGlzIGluc3BpcmVkIGJ5IGFuZCBiYXNlZCBvbiB0aGUgY29uY2VwdHMgbGVhcm5lZCBmcm9tIHRoZSBbb3BlbmFwaS10eXBlc2NyaXB0XShodHRwczovL2dpdGh1Yi5jb20vZHJ3cG93L29wZW5hcGktdHlwZXNjcmlwdCkgcmVwb3NpdG9yeS4gSSBleHRlbmQgbXkgZ3JhdGl0dWRlIHRvIHRoZSBjb250cmlidXRvcnMgb2YgYG9wZW5hcGktdHlwZXNjcmlwdGAgZm9yIHRoZWlyIGludmFsdWFibGUgd29yaywgd2hpY2ggaGFzIGJlZW4gYSBzaWduaWZpY2FudCByZWZlcmVuY2UgaW4gdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgcHJvamVjdC4= readmeEtag: '"54d1c5beed9326d2eb5743c8e8f01d1864fe94a8"' readmeLastModified: Sun, 28 Jan 2024 12:48:27 GMT repositoryId: 742514577 description: >- Generate TypeScript Types from OpenAPI Specs: A Personal Learning Project by @yoshi2no. created: '2024-01-12T16:44:54Z' updated: '2024-01-23T15:20:42Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: yoshi2no logo: https://avatars.githubusercontent.com/u/57059705?v=4 repoEtag: '"68feddbc81a02fda7708ed34c9512537ac931a5a31c8ff8309c431f7b96763b4"' repoLastModified: Tue, 23 Jan 2024 15:20:42 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/bryopsida/spring-boot-starter-tomcat v3: true id: f3d752f349e20cdb44043babfb975bb1 repositoryMetadata: base64Readme: >- IyBTcHJpbmcgQm9vdCBTdGFydGVyIEs4UyBUZW1wbGF0ZQoKIyMgV2hhdCBpcyB0aGlzPwoKVGhpcyBpcyBhIHRlbXBsYXRlIHJlcG9zaXRvcnkgZm9yIGtpY2tpbmcgb2ZmIGEgY2xvdWQgbmF0aXZlIHNwcmluZyBib290IGphdmEgbWljcm9zZXJ2aWNlLgoKIyMgV2hhdCBtYWtlcyB0aGlzIGNsb3VkIG5hdGl2ZT8KCkl0J3Mgc29sZWx5IGZvY3VzZWQgb24gZGVwbG95bWVudCB0byBrdWJlcm5ldGVzLCB0aGUgcHJpbWFyeSBidWlsZCBhcnRpZmFjdHMgb2YgdGhlIHJlcG9zaXRvcnkgYXJlIGEgT0NJIGltYWdlIGFuZCBhIGhlbG0gY2hhcnQuIFRoZSBoZWxtIGNoYXJ0IGlzIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCB1c2luZyBqa3ViZSBhbmQgaXQncyBhc3NvY2lhdGVkIGdyYWRsZSBwbHVnaW4uCgojIyBXaGF0IG9waW5pb25zIGhhdmUgYmVlbiBhZGRlZCB0byB0aGlzPwoKLSBHcmFkbGUKLSBTcHJpbmcgQm9vdAotIFNwcmluZyBNVkMKLSBTcHJpbmcgSlBBIGFuZCBKREJDCi0gVG9tY2F0Ci0gSkt1YmUgKEt1YmVybmV0ZXMgRGVwbG95bWVudCBhbmQgRGV2ZWxvcG1lbnQgVG9vbHMpCi0gTGlxdWliYXNlCgojIyBIb3cgZG8gSSBkZXBsb3k/CgpVc2UgYG1ha2UgZGVwbG95YCwgaWYgdGhlIG5hbWVzcGFjZSBkb2VzIG5vdCBleGlzdCBhbHJlYWR5IHJ1biBgbWFrZSBjcmVhdGUtbmFtZXNwYWNlYAoKIyMgSG93IGRvIEkgcnVuIGxvY2FsbHk/CgpVc2UgYG1ha2UgcnVuYC4KCiMjIEhvdyBkbyBJIHJ1biBsb2NhbGx5IG91dHNpZGUgb2YgYSBjb250YWluZXI/CgpJZiB5b3Ugd2lzaCB0byBydW4gZGlyZWN0bHkgaW4geW91ciBJREU6CgoxLiBSdW4gYGRvY2tlci1jb21wb3NlIHVwIC1kYCB0byBzdGFydCB0aGUgcG9zdGdyZXMgZGF0YWJhc2Ugc2VydmVyLgoyLiBSdW4gYC4vZ3JhZGxldyB1cGRhdGUgYm9vdFJ1bmAsIGB1cGRhdGVgIHJ1bnMgdGhlIG1pZ3JhdGlvbnMgYW5kIGBib290UnVuYCBsYXVuY2hlcyB0aGUgc3ByaW5nIGJvb3QgYXBwbGljYXRpb24KCiMjIEF2YWlsYWJsZSBNYWtlIFRhcmdldHMKCnwgVGFyZ2V0ICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IGphciAgICAgICAgICAgICAgICB8IEJ1aWxkcyB0aGUgc3RhbmRhbG9uZSBqYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgaW1hZ2UgICAgICAgICAgICAgIHwgQnVpbGRzIHRoZSBPQ0kgaW1hZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBydW4gICAgICAgICAgICAgICAgfCBSdW5zIHRoZSBPQ0kgaW1hZ2UgdXNpbmcgZG9ja2VyIGxvY2FsbHkgICAgICAgICAgICAgICAgICAgICAgfAp8IGNyZWF0ZSAgICAgICAgICAgICB8IENyZWF0ZXMgdGhlIGt1YmVybmV0ZXMgbmFtZXNwYWNlIGEgZGVwbG95IHdpbGwgZ28gdG8gICAgICAgICB8CnwgYnVpbGQgICAgICAgICAgICAgIHwgUnVucyB0aGUgZ3JhZGxlIHRhc2tzIHRvIGJ1aWxkIHRoZSBoZWxtIGNoYXJ0ICAgICAgICAgICAgICAgIHwKfCBidWlsZC1kZXBlbmRlbmNpZXMgfCBSdW5zIHRoZSBoZWxtIHRhc2tzIHRvIHB1bGwgaW4gc3ViIGNoYXJ0IGRlcGVuZGVuY2llcyAgICAgICAgfAp8IGRlcGxveSAgICAgICAgICAgICB8IERlcGxveXMgdGhlIGNoYXJ0IHRvIHlvdXIgY3VycmVudCBrdWJlcm5ldGVzIGNvbnRleHQgICAgICAgICB8CnwgdGVtcGxhdGUgICAgICAgICAgIHwgUmVuZGVycyB0aGUgY2hhcnQgdGVtcGxhdGVzIHRvIHN0YW5kYXJkIGt1YmVybmV0ZXMgbWFuaWZlc3RzIHwKfCBraWNzICAgICAgICAgICAgICAgfCBTY2FuIHRoZSBjaGFydCByZXNvdXJjZXMgd2l0aCBLSUNTICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKIyBQb3N0IFRlbXBsYXRlIFVzZSBDaGVja2xpc3QKCi0gWyBdIEZpbmQgYW5kIHJlcGxhY2UgYWxsIHJlZmVyZW5jZXMgdG8gYGlvLmdpdGh1Yi5icnlvcHNpZGFgIHdpdGggYXBwcm9wcmlhdGUgdmFsdWVzIGZvciB5b3VyIHByb2plY3QKLSBbIF0gRmluZCBhbmQgcmVwbGFjZSBhbGwgcmVmZXJlbmNlcyB0byBgc3ByaW5nLWJvb3Qtc3RhcnRlcmAgd2l0aCBhcHByb3ByaWF0ZSB2YWx1ZXMgZm9yIHlvdXIgcHJvamVjdAotIFsgXSBGaW5kIGFuZCByZXBsYWNlIGFsbCByZWZlcmVuY2VzIHRvIGBzcHJpbmctYm9vdC1zdGFydGVyLXRvbWNhdGAgd2l0aCBhcHByb3ByaWF0ZSB2YWx1ZXMgZm9yIHlvdXIgcG9qZWN0Ci0gWyBdIEZpbmQgYW5kIHJlcGxhY2UgYWxsIHJlZmVyZW5jZXMgdG8gYGJyeW9wc2lkYWAgd2l0aCBhcHByb3ByaWF0ZSB2YWx1ZXMgZm9yIHlvdXIgcHJvamVjdAotIFsgXSBBZGp1c3QgcmVub3ZhdGUuanNvbiAob3IgcmVtb3ZlKSBzZXR0aW5ncyB0byBtZWV0IHlvdXIgbmVlZHMKLSBbIF0gQWZ0ZXIgYSBzdWNjZXNzZnVsIGltYWdlIGJ1aWxkLCBjcmVhdGUgeW91ciBmaXJzdCByZWxlYXNlIHRvIHRyaWdnZXIgYSBoZWxtIHB1Ymxpc2gsIHRoaXMgaXMgbmVlZGVkIGZvciB0aGUgdXBncmFkZSB0ZXN0cyB0byBwYXNzCg== readmeEtag: '"bb074d7e6f09c699c0e6f80241e81a542e6ecd25"' readmeLastModified: Wed, 14 Aug 2024 18:07:06 GMT repositoryId: 708514637 description: >- A spring boot starter template that includes a docker image, generate helm chart using jkube, and GitHub action CI created: '2023-10-22T19:25:57Z' updated: '2026-01-31T00:33:12Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: bryopsida logo: https://avatars.githubusercontent.com/u/8363252?v=4 repoEtag: '"41f233e1b5dee205e9f4c9509b4a9eb55fa33b0ef8ec3829364964b88f6e5ff3"' repoLastModified: Sat, 31 Jan 2026 00:33:12 GMT category: Server Implementations foundInMaster: true - name: Ballerina OpenAPI tool source: Tooling repository issues source_description: >- The Ballerina OpenAPI tool enables the generation of Ballerina client and service skeleton from provided OpenAPI specifications (v2, v3) and facilitates the creation of OpenAPI v3 specifications for given Ballerina services.- Repository: https://github.com/ballerina-platform/openapi-tools link: https://ballerina.io/learn/openapi-tool/ v3_1: true v3: true v2: true sourceIssueMetadata: issueNumber: 136 author: lnash94 createdAt: '2024-02-11T07:22:54Z' updatedAt: '2024-02-11T07:22:54Z' url: https://github.com/OAI/Tooling/issues/136 status: open id: 15c33d6fbddbfa6964ba32d76a6119ea foundInMaster: true - name: UI Bakery source: Tooling repository issues source_description: >- A low-code platform to build user interfaces on top of OpenAPI data using drag and drop repository: https://github.com/uibakery/self-hosted link: https://uibakery.io/ v3_1: true v3: true v2: false sourceIssueMetadata: issueNumber: 137 author: lugovsky createdAt: '2024-02-14T15:49:49Z' updatedAt: '2024-02-14T15:49:49Z' url: https://github.com/OAI/Tooling/issues/137 status: open id: 103b16f99e39fe1b7754fa2921b3370b foundInMaster: true repositoryMetadata: base64Readme: >- PGgzIGFsaWduPSJjZW50ZXIiPgogIFVJIEJha2VyeSBpcyBhIGxvdy1jb2RlIHBsYXRmb3JtIHRvIGJ1aWxkIGFwcHMgYW5kIGF1dG9tYXRpb25zIHlvdSBuZXZlciBoYWQgdGltZSBmb3IKPC9oMz4KCjxoMyBhbGlnbj0iY2VudGVyIj4KICA8Yj48YSBocmVmPSJodHRwczovL2Nsb3VkLnVpYmFrZXJ5LmlvL2F1dGgvcmVnaXN0ZXI/dXRtX3NvdXJjZT1naXRodWIiPkdldCBTdGFydGVkPC9hPjwvYj4KICDigKIKICA8YSBocmVmPSJodHRwczovL2RvY3MudWliYWtlcnkuaW8/dXRtX3NvdXJjZT1naXRodWIiPkRvY3M8L2E+CiAg4oCiCiAgPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnVpYmFrZXJ5LmlvL3N0YXJ0ZXItZ3VpZGUvdHV0b3JpYWxzP3V0bV9zb3VyY2U9Z2l0aHViIj5UdXRvcmlhbHM8L2E+CiAg4oCiCiAgPGEgaHJlZj0iaHR0cHM6Ly9hcHAuZ2V0YmVhbWVyLmNvbS91aWJha2VyeS9lbj91dG1fc291cmNlPWdpdGh1YiI+V2hhdCdzIG5ldzwvYT4gCiAg4oCiCiAgPGEgaHJlZj0iaHR0cHM6Ly9yb2FkbWFwLnVpYmFrZXJ5LmlvP3V0bV9zb3VyY2U9Z2l0aHViIj5Sb2FkbWFwPC9hPiAKPC9oMz4KCjxhIGhyZWY9Imh0dHBzOi8vY2xvdWQudWliYWtlcnkuaW8vYXV0aC9yZWdpc3Rlci8/dXRtX3NvdXJjZT1naXRodWIiPjxpbWcgc3JjPSJhc3NldHMvaGVyby5wbmciIHdpZHRoPSIxMDAlIiBhbHQ9IlVJIEJha2VyeSAtIEludGVybmFsIHRvb2xzIGFuZCB3b3JrZmxvdyBhdXRvbWF0aW9ucyI+PC9hPgoKIyMgRGVwbG95aW5nIFVJIEJha2VyeSBvbi1wcmVtaXNlCgojIyMjIERlcGxveSBVSSBCYWtlcnkgbG9jYWxseSB0byBtYW5hZ2UgeW91ciBkYXRhIGZyb20geW91ciBwcml2YXRlIG5ldHdvcmsKCldlIHVuZGVyc3RhbmQgdGhhdCB5b3UgbWlnaHQgaGF2ZSBsb3RzIG9mIGRhdGEgYWNjZXNzaWJsZSBmcm9tIHlvdXIgcHJpdmF0ZSBuZXR3b3JrLCB0aGF04oCZcyB3aHkgeW91IGNhbiB1c2UgVUkgQmFrZXJ5IHNlbGYtaG9zdGVkIHZlcnNpb24gZm9yIHlvdXIgYmVuZWZpdC4KCk9uLXByZW1pc2UgdmVyc2lvbiBncmFudHMgeW91OgoKLSBBIHF1aWNrIHNldHVwIHByb2Nlc3MKLSBDdXN0b20gYnJhbmRpbmcKLSBDdXN0b20gZG9tYWluIGhvc3RpbmcKLSBPQXV0aDIgU1NPCi0gU0FNTC1iYXNlZCBpZGVudGl0eSBwcm92aWRlcnMKLSBEYXRhIGlzIHN0b3JlZCBzZWN1cmVseSB1bmRlciB5b3VyIG93biBWUFMKCjpoZWF2eV9jaGVja19tYXJrOiBVSSBCYWtlcnkgb24tcHJlbWlzZSB2ZXJzaW9uIGxpY2Vuc2Uga2V5IGNhbiBiZSBvYnRhaW5lZCBbaGVyZV0oaHR0cHM6Ly91aWJha2VyeS5pby9vbi1wcmVtaXNlLXVpLWJha2VyeSkKCjp3YXJuaW5nOiBJZiB5b3UgaGF2ZSBhbHJlYWR5IGluc3RhbGxlZCBVSSBCYWtlcnkgb24tcHJlbWlzZSB2ZXJzaW9uLCBmb2xsb3cgW3RoaXMgZ3VpZGVdKGh0dHBzOi8vZG9jcy51aWJha2VyeS5pby9vbi1wcmVtaXNlL3VwZGF0aW5nLW9uLXByZW1pc2UtdmVyc2lvbikgdG8gdXBkYXRlIHlvdXIgdmVyc2lvbi4KCiMjIFRhYmxlIG9mIGNvbnRlbnRzCgotIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCiAgLSBbUmVxdWlyZW1lbnRzXSgjcmVxdWlyZW1lbnRzKQogIC0gW0Jhc2ljIGluc3RhbGxhdGlvbl0oI2Jhc2ljLWluc3RhbGxhdGlvbikKICAtIFtPdGhlciBpbnN0YWxsYXRpb24gb3B0aW9uc10oI290aGVyLWluc3RhbGxhdGlvbi1vcHRpb25zKQogIAotIFtEb2N1bWVudGF0aW9uXSgjZG9jdW1lbnRhdGlvbikKCiMjIEluc3RhbGxhdGlvbgoKVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgaG93IHRvIGRlcGxveSB1aS1iYWtlcnkgb24tcHJlbSB2aWEgYGluc3RhbGwuc2hgIHNjcmlwdC4KCjp3YXJuaW5nOiBUaGUgc2NyaXB0IGluc3RhbGxzIGRvY2tlciBhbmQgZG9ja2VyLWNvbXBvc2UsIHdoaWNoIG1heSB1cGdyYWRlIHNvbWUgZGVwZW5kZW5jaWVzIHVuZGVyIHRoZSBob29kLiBQbGVhc2UgYmUgYWR2aXNlZCB0aGF0IGlmIHlvdSBydW4gdGhpcyBzY3JpcHQgb24gdGhlIE9TIHVzZWQgYXMgYSBzZXJ2ZXIgZm9yIG90aGVyIGFwcGxpY2F0aW9ucywgdGhvc2UgYXBwbGljYXRpb25zIG1heSBicmVhayBkdWUgdG8gdGhhdCBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIHVwZ3JhZGUuCgojIyMgUmVxdWlyZW1lbnRzCgotIExpbnV4LWJhc2VkIE9TIChlLmcuIFVidW50dSAxOC4wNCkuCi0gTWluaW11bSAyIGB2Q1BVc2AsIDQgYEdpQmAgbWVtb3J5IGFuZCAyMCBgR2lCYCBvZiBzdG9yYWdlLgotIE11c3QgaGF2ZSBmdWxsIHJpZ2h0cyB0byB1c2UgInN1ZG8iLgotIFRoZXNlIGRvbWFpbnMgYXJlIGFjY2Vzc2libGUgZnJvbSB5b3VyIG5ldHdvcms6CiAgLSBodHRwczovL2NydWliYWtlcnlvbnByZW0ud2VzdGV1cm9wZS5kYXRhLmF6dXJlY3IuaW8KICAtIGh0dHBzOi8vY3J1aWJha2VyeW9ucHJlbS5jZW50cmFsdXMuZGF0YS5henVyZWNyLmlvCiAgLSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20KCiMjIyBCYXNpYyBpbnN0YWxsYXRpb24KCjEuIFJ1biB0aGlzIGNvbW1hbmQgcHJlZmVyYWJseSBmcm9tIGAvaG9tZWAgTGludXggZGlyZWN0b3J5IHRvIGRvd25sb2FkLCBpbnN0YWxsIGFuZCBsYXVuY2ggVUkgQmFrZXJ5OgoKICAgYGBgYmFzaAogICBjdXJsIC1rIC1MIC1vIGluc3RhbGwuc2ggaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3VpYmFrZXJ5L3NlbGYtaG9zdGVkL21haW4vaW5zdGFsbC5zaCAmJiBiYXNoIC4vaW5zdGFsbC5zaAogICBgYGAKCjEuIEluIHRoZSBwcm9jZXNzLCB1cG9uIHJlcXVlc3QsIGVudGVyIHRoZSBwcmV2aW91c2x5IHJlY2VpdmVkIGxpY2Vuc2UgY29kZSwgaG9zdGluZyBVUkwgYW5kIHBvcnQuCjEuIE9uY2UgdGhlIGluc3RhbGxhdGlvbiBpcyBjb21wbGV0ZWQsIG9wZW4gdGhlIGJyb3dzZXIgdXNpbmcgVVJMIGFuZCBwb3J0IHByb3ZpZGVkIGVhcmxpZXIuIEJ5IGRlZmF1bHQgaXQgaXMgW2h0dHA6Ly9sb2NhbGhvc3Q6MzAzMC9dKGh0dHA6Ly9sb2NhbGhvc3Q6MzAzMC8pLgoKKipOT1RFKio6IElmIERvY2tlciBvZiB0aGUgdmVyc2lvbiBsZXNzIHRoYW4gdGhlIHJlcXVpcmVkIChtaW5pbXVtIDIwLjEwLjExKSBpcyBhbHJlYWR5IGluc3RhbGxlZCBvbiB0aGUgc2VydmVyLCBhbmQvb3IgRG9ja2VyIENvbXBvc2UgKG1pbmltdW0gMS4yOS4yKSwgdGhlIHNjcmlwdCB3aWxsIGJlIHN0b3BwZWQuIFlvdSBuZWVkIHRvIHVwZGF0ZSB0aGUgdmVyc2lvbnMgb2YgY29tcG9uZW50cyBtYW51YWxseSBhbmQgcnVuIHRoZSBzY3JpcHQgYWdhaW4uCgojIyMgT3RoZXIgaW5zdGFsbGF0aW9uIG9wdGlvbnMKRm9yIGFkZGl0aW9uYWwgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucywgc3VjaCBhcyB0aG9zZSBmb3IgQXp1cmUsIEFXUywgR0NQLCBLdWJlcm5ldGVzLCBhbmQgbW9yZSwgcGxlYXNlIHZpc2l0IHRoZSBbZG9jdW1lbnRhdGlvbiB3ZWJzaXRlXShodHRwczovL2RvY3MudWliYWtlcnkuaW8vb24tcHJlbWlzZS9pbnN0YWxsaW5nLW9uLXByZW1pc2UtdmVyc2lvbikuCgojIyBEb2N1bWVudGF0aW9uCgpGb3IgaW5zdHJ1Y3Rpb25zIG9uIGluc3RhbGxpbmcsIHVwZGF0aW5nLCBhbmQgbWFuYWdpbmcgdGhlIG9uLXByZW1pc2UgaW5zdGFuY2UsIHBsZWFzZSByZWZlciB0byB0aGUgW2RvY3VtZW50YXRpb24gd2Vic2l0ZV0oaHR0cHM6Ly9kb2NzLnVpYmFrZXJ5LmlvL29uLXByZW1pc2UvdWktYmFrZXJ5LW9uLXByZW1pc2UpLgoKCg== readmeEtag: '"669f2bb2c39617f9283ebb516d73a534c9de316a"' readmeLastModified: Thu, 03 Jul 2025 11:14:20 GMT repositoryId: 507816571 description: Internal tools and workflow automations created: '2022-06-27T08:01:30Z' updated: '2026-02-03T07:00:15Z' language: Shell archived: false stars: 278 watchers: 6 forks: 28 owner: uibakery logo: https://avatars.githubusercontent.com/u/92528127?v=4 repoEtag: '"fd91396bea2b27e9bba18a3899512626e3c2c1d81db05f31ee49fe9c8cd511e6"' repoLastModified: Tue, 03 Feb 2026 07:00:15 GMT category: Server Implementations - source: openapi3 tags repository: https://github.com/intellifi-nl/brain-rest-api-spec v3: true repositoryMetadata: base64Readme: >- IyBCcmFpbiBSRVNUIEFQSSBzcGVjaWZpY2F0aW9uCgpUaGlzIHJlcG9zaXRvcnkgaG9sZHMgdGhlIEJyYWluIFJFU1QgQVBJIHJlZmVyZW5jZS4KClRoZSBCcmFpbiBBUEkgcmVmZXJlbmNlIHVzZXMgdGhlIFtPcGVuQVBJXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKSBzdGFuZGFyZCBhbmQgYSBudW1iZXIgb2YgZG9jdW1lbnQgZ2VuZXJhdG9ycyB0byB2aXN1YWxpemUgdGhlIEFQSSBTcGVjaWZpY2F0aW9uLgoKVGhlIEJyYWluIEFQSSBzcGVjIGNhbiBiZSBmb3VuZCBpbiB0aGUgIFtgb3BlbmFwaS55bWxgXSguL29wZW5hcGkueW1sKSBmaWxlLgoKVGhlIGRvY3VtZW50YXRpb24gaXMgaG9zdGVkIHVzaW5nIFtHaXRodWIgcGFnZXNdKGh0dHBzOi8vcGFnZXMuZ2l0aHViLmNvbS8pIGF0IFtpbnRlbGxpZmktbmwuZ2l0aHViLmlvL2JyYWluLXJlc3QtYXBpLXNwZWNdKGh0dHBzOi8vaW50ZWxsaWZpLW5sLmdpdGh1Yi5pby9icmFpbi1yZXN0LWFwaS1zcGVjLykuCgpBbGwgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBbTUlUIExpY2Vuc2VdKC4vTElDRU5TRSkuCg== readmeEtag: '"7fa7261b24262d80b425a8c3ddbb8c1bf26e35c8"' readmeLastModified: Thu, 11 Jul 2024 12:07:18 GMT repositoryId: 149280093 description: Intellifi Brain REST API spec created: '2018-09-18T11:51:24Z' updated: '2024-11-29T13:13:41Z' language: null archived: false stars: 0 watchers: 4 forks: 0 owner: intellifi-nl logo: https://avatars.githubusercontent.com/u/9928538?v=4 license: MIT repoEtag: '"1c29da561263c93fe418b96317c447d786b388b40282bfcfaed8ac5f5a9de69d"' repoLastModified: Fri, 29 Nov 2024 13:13:41 GMT foundInMaster: true category: - Testing - Parsers id: c5bb244b2a8497d8a4a509ba783c5b59 - source: openapi3 tags repository: https://github.com/ragnar-oock/setlist v3: true repositoryMetadata: base64Readme: >- IyBzZXRsaXN0CgpBbiBBUEkgZHJpdmVuIGxpc3Qgb2YgYWxsIHNvbmdzIGF2YWlsYWJsZSBmb3IgcmVxdWVzdHMgb24gaHR0cHM6Ly90d2l0Y2gudHYvd2FydGhzLgoKVGhlIGNvZGUgZm9yIHRoZSBiYWNrZW5kIGlzIGF2YWlsYWJsZSBoZXJlIDogaHR0cHM6Ly9naXRodWIuY29tL1JhZ25hci1Pb2NrL3NldGxpc3RfdjJfY29ubmV4aW9uCgpWZXJzaW9uIDEgaXMgb3V0IQpjaGVjayB0aGUgbGl2ZSB2ZXJzaW9uIGF0IGh0dHBzOi8vc2V0bGlzdC53YXJ0aHMuZnIvCg== readmeEtag: '"3d3fa475b1303f1b7ee454e71f3f9421c12bf990"' readmeLastModified: Tue, 25 Jun 2024 10:06:28 GMT repositoryId: 287072772 description: >- An API-driven list of all songs available for requests on twitch.tv/warths. Currently in development. created: '2020-08-12T17:19:03Z' updated: '2024-06-25T10:06:32Z' language: Vue archived: false stars: 0 watchers: 1 forks: 0 owner: Ragnar-Oock logo: https://avatars.githubusercontent.com/u/38219333?v=4 license: MIT repoEtag: '"b17a7fbeaddb870d5b4691178be5897b63f0b340716edf613181cbd0a71af248"' repoLastModified: Tue, 25 Jun 2024 10:06:32 GMT foundInMaster: true category: - Documentation - Server Implementations id: 749731d9ec54b967c7193370a6d4034e - source: openapi3 tags repository: https://github.com/iliashenkoa/openapi_express_excel_generator v3: true repositoryMetadata: base64Readme: >- IyBOb2RlLmpzIGV4cHJlc3Mgc2ltcGxlIGFwcCB3aGljaCBnZW5lcmF0ZWQgYnkgb3BlbmFwaQoKIyMgT3ZlcnZpZXcKVGhpcyBzZXJ2ZXIgd2FzIGdlbmVyYXRlZCB1c2luZyB0aGUgW09wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpIHByb2plY3QuICBUaGUgY29kZSBnZW5lcmF0b3IsIGFuZCBpdCdzIGdlbmVyYXRlZCBjb2RlIGFsbG93cyB5b3UgdG8gZGV2ZWxvcCB5b3VyIHN5c3RlbSB3aXRoIGFuIEFQSS1GaXJzdCBhdHRpdHVkZSwgd2hlcmUgdGhlIEFQSSBjb250cmFjdCBpcyB0aGUgYW5jaG9yIGFuZCBkZWZpbmVyIG9mIHlvdXIgcHJvamVjdCwgYW5kIHlvdXIgY29kZSBhbmQgYnVzaW5lc3MtbG9naWMgYWltcyB0byBjb21wbGV0ZSBhbmQgY29tcGx5IHRvIHRoZSB0ZXJtcyBpbiB0aGUgQVBJIGNvbnRyYWN0LgoKIyMjIHByZXJlcXVpc2l0ZXMKLSBOb2RlSlMgPj0gMTAuNAotIE5QTSA+PSA2LjEwLjAKClRoZSBjb2RlIHdhcyB3cml0dGVuIG9uIGEgbWFjLCBzbyBhc3N1bWluZyBhbGwgc2hvdWxkIHdvcmsgc21vb3RobHkgb24gTGludXgtYmFzZWQgY29tcHV0ZXJzLiBIb3dldmVyLCB0aGVyZSBpcyBubyByZWFzb24gbm90IHRvIHJ1biB0aGlzIGxpYnJhcnkgb24gV2luZG93cy1iYXNlZCBtYWNoaW5lcy4gSWYgeW91IGZpbmQgYW4gT1MtcmVsYXRlZCBwcm9ibGVtLCBwbGVhc2Ugb3BlbiBhbiBpc3N1ZSBhbmQgaXQgd2lsbCBiZSByZXNvbHZlZC4KCiMjIyBSdW5uaW5nIHRoZSBzZXJ2ZXIgIApUbyBydW4gdGhlIHNlcnZlciwgcnVuOiAgCiAgCmBgYCAgCm5wbSBzdGFydCAgCmBgYAojIyMgVmlldyBhbmQgdGVzdCB0aGUgQVBJCllvdSBjYW4gc2VlIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiwgYW5kIGNoZWNrIHRoZSBhdmFpbGFibGUgZW5kcG9pbnRzIGJ5IGdvaW5nIHRvIGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGktZG9jcy8uICBFbmRwb2ludHMgdGhhdCByZXF1aXJlIHNlY3VyaXR5IG5lZWQgdG8gaGF2ZSBzZWN1cml0eSBoYW5kbGVycyBjb25maWd1cmVkIGJlZm9yZSB0aGV5IGNhbiByZXR1cm4gYSBzdWNjZXNzZnVsIHJlc3BvbnNlLiBBdCB0aGlzIHBvaW50IHRoZXkgd2lsbCByZXR1cm4gWyBhIHJlc3BvbnNlIGNvZGUgb2YgNDAxXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL1N0YXR1cy80MDEpLgojIyMjIyBBdCB0aGlzIHN0YWdlIHRoZSBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBkb2N1bWVudCBib2R5IHNlbnQgaW4geG1sIGZvcm1hdC4gRm9ybXMgd2lsbCBiZSBzdXBwb3J0ZWQgaW4gdGhlIG5lYXIgZnV0dXJlLiAKCiMjIyBOb2RlIHZlcnNpb24gYW5kIGd1aWRlbGluZXMgClRoZSBjb2RlIHdhcyB3cml0dGVuIHVzaW5nIE5vZGUgdmVyc2lvbiAxMC42LCBhbmQgY29tcGxpZXMgdG8gdGhlIFtBaXJibmIgLmVzbGludCBndWlkaW5nIHJ1bGVzXShodHRwczovL2dpdGh1Yi5jb20vYWlyYm5iL2phdmFzY3JpcHQpLiAKCiMjIyBQcm9qZWN0IEZpbGVzCiMjIyMgUm9vdCBEaXJlY3Rvcnk6CkluIHRoZSByb290IGRpcmVjdG9yeSB3ZSBoYXZlIChiZXNpZGVzIHBhY2thZ2UuanNvbiwgY29uZmlnLmpzLCBhbmQgbG9nIGZpbGVzKToKLSAqKmxvZ2dlci5qcyoqIC0gd2hlcmUgd2UgZGVmaW5lIHRoZSBsb2dnZXIgZm9yIHRoZSBwcm9qZWN0LiBUaGUgcHJvamVjdCB1c2VzIHdpbnN0b24sIGJ1dCB0aGUgcHVycG9zZSBvZiB0aGlzIGZpbGUgaXMgdG8gZW5hYmxlIHVzZXJzIHRvIGNoYW5nZSBhbmQgbW9kaWZ5IHRoZWlyIG93biBsb2dnZXIgYmVoYXZpb3IuCi0gKippbmRleC5qcyoqIC0gVGhpcyBpcyB0aGUgcHJvamVjdCdzICdtYWluJyBmaWxlLCBhbmQgZnJvbSBoZXJlIHdlIGxhdW5jaCB0aGUgYXBwbGljYXRpb24uIFRoaXMgaXMgYSB2ZXJ5IHNob3J0IGFuZCBjb25jaXNlIGZpbGUsIGFuZCB0aGUgaWRlYSBiZWhpbmQgbGF1bmNoaW5nIGZyb20gdGhpcyBzaG9ydCBmaWxlIGlzIHRvIGFsbG93IHVzZS1jYXNlcyBvZiBsYXVuY2hpbmcgdGhlIHNlcnZlciB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzIChjaGFuZ2luZyBjb25maWcgYW5kL29yIGxvZ2dlcikgd2l0aG91dCBhZmZlY3RpbmcgdGhlIHJlc3Qgb2YgdGhlIGNvZGUuIAotICoqZXhwcmVzc1NlcnZlci5qcyoqIC0gVGhlIGNvcmUgb2YgdGhlIEV4cHJlc3MuanMgc2VydmVyLiBUaGlzIGlzIHdoZXJlIHRoZSBleHByZXNzIHNlcnZlciBpcyBpbml0aWFsaXplZCwgdG9nZXRoZXIgd2l0aCB0aGUgT3BlbkFQSSB2YWxpZGF0b3IsIE9wZW5BUEkgVUksIGFuZCBvdGhlciBsaWJyYXJpZXMgbmVlZGVkIHRvIHN0YXJ0IG91ciBzZXJ2ZXIuIElmIHdlIHdhbnQgdG8gYWRkIGV4dGVybmFsIGxpbmtzLCB0aGF0J3Mgd2hlcmUgdGhleSB3b3VsZCBnby4gT3VyIHByb2plY3QgdXNlcyB0aGUgW2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3JdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3IpIGxpYnJhcnkgdGhhdCBhY3RzIGFzIGEgZmlyc3Qgc3RlcCBpbiB0aGUgcm91dGluZyBwcm9jZXNzIC0gcmVxdWVzdHMgdGhhdCBhcmUgZGlyZWN0ZWQgdG8gcGF0aHMgZGVmaW5lZCBpbiB0aGUgYG9wZW5hcGkueWFtbGAgZmlsZSBhcmUgY2F1Z2h0IGJ5IHRoaXMgcHJvY2VzcywgYW5kIGl0J3MgcGFyYW1ldGVycyBhbmQgYm9keUNvbnRlbnQgYXJlIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBzY2hlbWEuIEEgc3VjY2Vzc2Z1bCByZXN1bHQgb2YgdGhpcyB2YWxpZGF0aW9uIHdpbGwgYmUgYSBuZXcgJ29wZW5hcGknIG9iamVjdCBhZGRlZCB0byB0aGUgcmVxdWVzdC4gSWYgdGhlIHBhdGggcmVxdWVzdGVkIGlzIG5vdCBwYXJ0IG9mIHRoZSBvcGVuYXBpLnlhbWwgZmlsZSwgdGhlIHZhbGlkYXRvciBpZ25vcmVzIHRoZSByZXF1ZXN0IGFuZCBwYXNzZXMgaXQgb24sIGFzIGlzLCBkb3duIHRoZSBmbG93IG9mIHRoZSBFeHByZXNzIHNlcnZlci4KCiMjIyMgYXBpLwotICoqb3BlbmFwaS55YW1sKiogLSBUaGlzIGlzIHRoZSBPcGVuQVBJIGNvbnRyYWN0IHRvIHdoaWNoIHRoaXMgc2VydmVyIHdpbGwgY29tcGx5LiBUaGUgZmlsZSB3YXMgZ2VuZXJhdGVkIHVzaW5nIHRoZSBjb2RlZ2VuLCBhbmQgc2hvdWxkIGNvbnRhaW4gZXZlcnl0aGluZyBuZWVkZWQgdG8gcnVuIHRoZSBBUEkgR2F0ZXdheSAtIG5vIHJlZmVyZW5jZXMgdG8gZXh0ZXJuYWwgbW9kZWxzL3NjaGVtYXMuIAoKIyMjIyB1dGlscy8KQ3VycmVudGx5IGEgc2luZ2xlIGZpbGU6CgotICoqb3BlbmFwaVJvdXRlci5qcyoqIC0gVGhpcyBpcyB3aGVyZSB0aGUgcm91dGluZyB0byBvdXIgYmFjay1lbmQgY29kZSBoYXBwZW5zLiBJZiB0aGUgcmVxdWVzdCBvYmplY3QgaW5jbHVkZXMgYW4gYGBgb3BlbmFwaWBgYCBvYmplY3QsIGl0IHBpY2tzIHVwIHRoZSBmb2xsb3dpbmcgdmFsdWVzICh0aGF0IGFyZSBwYXJ0IG9mIHRoZSBgYGBvcGVuYXBpLnlhbWxgYGAgZmlsZSk6ICd4LW9wZW5hcGktcm91dGVyLWNvbnRyb2xsZXInLCBhbmQgJ3gtb3BlbmFwaS1yb3V0ZXItc2VydmljZScuIFRoZXNlIHZhcmlhYmxlcyBhcmUgbmFtZXMgb2YgZmlsZXMvY2xhc3NlcyBpbiB0aGUgY29udHJvbGxlcnMgYW5kIHNlcnZpY2VzIGRpcmVjdG9yaWVzIHJlc3BlY3RpdmVseS4gVGhlIG9wZXJhdGlvbklkIG9mIHRoZSByZXF1ZXN0IGlzIGFsc28gZXh0cmFjdGVkLiBUaGUgb3BlcmF0aW9uSWQgaXMgYSBtZXRob2QgaW4gdGhlIGNvbnRyb2xsZXIgYW5kIHRoZSBzZXJ2aWNlIHRoYXQgd2FzIGdlbmVyYXRlZCBhcyBwYXJ0IG9mIHRoZSBjb2RlZ2VuIHByb2Nlc3MuIFRoZSByb3V0aW5nIHByb2Nlc3Mgc2VuZHMgdGhlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9iamVjdHMgdG8gdGhlIGNvbnRyb2xsZXIsIHdoaWNoIHdpbGwgZXh0cmFjdCB0aGUgZXhwZWN0ZWQgdmFyaWFibGVzIGZyb20gdGhlIHJlcXVlc3QsIGFuZCBzZW5kIGl0IHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgc2VydmljZSwgcmV0dXJuaW5nIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2aWNlIHRvIHRoZSBjYWxsZXIuCgojIyMjIGNvbnRyb2xsZXJzLwpBZnRlciB2YWxpZGF0aW5nIHRoZSByZXF1ZXN0LCBhbmQgZW5zdXJpbmcgdGhpcyBiZWxvbmdzIHRvIG91ciBBUEkgZ2F0ZXdheSwgd2Ugc2VuZCB0aGUgcmVxdWVzdCB0byBhIGBjb250cm9sbGVyYCwgd2hlcmUgdGhlIHZhcmlhYmxlcyBhbmQgcGFyYW1ldGVycyBhcmUgZXh0cmFjdGVkIGZyb20gdGhlIHJlcXVlc3QgYW5kIHNlbnQgdG8gdGhlIHJlbGV2YW50IGBzZXJ2aWNlYCBmb3IgcHJvY2Vzc2luZy4gVGhlIGBjb250cm9sbGVyYCBoYW5kbGVzIHRoZSByZXNwb25zZSBmcm9tIHRoZSBgc2VydmljZWAgYW5kIGJ1aWxkcyB0aGUgYXBwcm9wcmlhdGUgSFRUUCByZXNwb25zZSB0byBiZSBzZW50IGJhY2sgdG8gdGhlIHVzZXIuIAoKLSAqKmluZGV4LmpzKiogLSBsb2FkIGFsbCB0aGUgY29udHJvbGxlcnMgdGhhdCB3ZXJlIGdlbmVyYXRlZCBmb3IgdGhpcyBwcm9qZWN0LCBhbmQgZXhwb3J0IHRoZW0gdG8gYmUgdXNlZCBkeW5hbWljYWxseSBieSB0aGUgYG9wZW5hcGlSb3V0ZXIuanNgLiBJZiB5b3Ugd291bGQgbGlrZSB0byBjdXN0b21pemUgeW91ciBjb250cm9sbGVyLCBpdCBpcyBhZHZpc2VkIHRoYXQgeW91IGxpbmsgdG8geW91ciBjb250cm9sbGVyIGhlcmUsIGFuZCBlbnN1cmUgdGhhdCB0aGUgY29kZWdlbiBkb2VzIG5vdCByZXdyaXRlIHRoaXMgZmlsZS4KCi0gKipDb250cm9sbGVyLmpzKiogLSBUaGUgY29yZSBwcm9jZXNzb3Igb2YgdGhlIGdlbmVyYXRlZCBjb250cm9sbGVycy4gVGhlIGdlbmVyYXRlZCBjb250cm9sbGVycyBhcmUgZGVzaWduZWQgdG8gYmUgYXMgc2xpbSBhbmQgZ2VuZXJpYyBhcyBwb3NzaWJsZSwgcmVmZXJlbmNpbmcgdG8gdGhlIGBDb250cm9sbGVyLmpzYCBmb3IgdGhlIGJ1c2luZXNzIGxvZ2ljIG9mIHBhcnNpbmcgdGhlIG5lZWRlZCB2YXJpYWJsZXMgYW5kIGFyZ3VtZW50cyBmcm9tIHRoZSByZXF1ZXN0LCBhbmQgZm9yIGJ1aWxkaW5nIHRoZSBIVFRQIHJlc3BvbnNlIHdoaWNoIHdpbGwgYmUgc2VudCBiYWNrLiBUaGUgYENvbnRyb2xsZXIuanNgIGlzIGEgY2xhc3Mgd2l0aCBzdGF0aWMgbWV0aG9kcy4gCgotICoqe3t4LW9wZW5hcGktcm91dGVyLWNvbnRyb2xsZXJ9fS5qcyoqIC0gYXV0by1nZW5lcmF0ZWQgY29kZSwgcHJvY2Vzc2luZyBhbGwgdGhlIG9wZXJhdGlvbnMuIFRoZSBDb250cm9sbGVyIGlzIGEgY2xhc3MgdGhhdCBpcyBjb25zdHJ1Y3RlZCB3aXRoIHRoZSBzZXJ2aWNlIGNsYXNzIGl0IHdpbGwgYmUgc2VuZGluZyB0aGUgcmVxdWVzdCB0by4gRXZlcnkgcmVxdWVzdCBkZWZpbmVkIGJ5IHRoZSBgb3BlbmFwaS55YW1sYCAgaGFzIGFuIG9wZXJhdGlvbklkLiBUaGUgb3BlcmF0aW9uSWQgaXMgdGhlIG5hbWUgb2YgdGhlIG1ldGhvZCB0aGF0IHdpbGwgYmUgY2FsbGVkLiBFdmVyeSBtZXRob2QgcmVjZWl2ZXMgdGhlIHJlcXVlc3QgYW5kIHJlc3BvbnNlLCBhbmQgY2FsbHMgdGhlIGBDb250cm9sbGVyLmpzYCB0byBwcm9jZXNzIHRoZSByZXF1ZXN0IGFuZCByZXNwb25zZSwgYWRkaW5nIHRoZSBzZXJ2aWNlIG1ldGhvZCB0aGF0IHNob3VsZCBiZSBjYWxsZWQgZm9yIHRoZSBhY3R1YWwgYnVzaW5lc3MtbG9naWMgcHJvY2Vzc2luZy4KCiMjIyMgc2VydmljZXMvClRoaXMgaXMgd2hlcmUgdGhlIEFQSSBHYXRld2F5IGVuZHMsIGFuZCB0aGUgdW5pcXVlIGJ1c2luZXNzLWxvZ2ljIG9mIHlvdXIgYXBwbGljYXRpb24ga2lja3MgaW4uIEV2ZXJ5IGVuZHBvaW50IGluIHRoZSBgb3BlbmFwaS55YW1sYCBoYXMgYSB2YXJpYWJsZSAneC1vcGVuYXBpLXJvdXRlci1zZXJ2aWNlJywgd2hpY2ggaXMgdGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgY2xhc3MgdGhhdCBpcyBnZW5lcmF0ZWQuIFRoZSBvcGVyYXRpb25JRCBvZiB0aGUgZW5kcG9pbnQgaXMgdGhlIG5hbWUgb2YgdGhlIG1ldGhvZCB0aGF0IHdpbGwgYmUgY2FsbGVkLiBUaGUgZ2VuZXJhdGVkIGNvZGUgcHJvdmlkZXMgYSBzaW1wbGUgcHJvbWlzZSB3aXRoIGEgdHJ5L2NhdGNoIGNsYXVzZS4gQSBzdWNjZXNzZnVsIG9wZXJhdGlvbiBlbmRzIHdpdGggYSBjYWxsIHRvIHRoZSBnZW5lcmljIGBTZXJ2aWNlLmpzYCB0byBidWlsZCBhIHN1Y2Nlc3NmdWwgcmVzcG9uc2UgKHBheWxvYWQgYW5kIHJlc3BvbnNlIGNvZGUpLCBhbmQgYSBmYWlsdXJlIHdpbGwgY2FsbCB0aGUgZ2VuZXJpYyBgU2VydmljZS5qc2AgdG8gYnVpbGQgYSByZXNwb25zZSB3aXRoIGFuIGVycm9yIG9iamVjdCBhbmQgdGhlIHJlbGV2YW50IHJlc3BvbnNlIGNvZGUuIEl0IGlzIHJlY29tbWVuZGVkIHRvIGhhdmUgdGhlIHNlcnZpY2VzIGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IG9uY2UsIGFuZCBhZnRlciB0aGUgaW5pdGlhbCBidWlsZCBhZGQgbWV0aG9kcyBtYW51YWxseS4KCi0gKippbmRleC5qcyoqIC0gbG9hZCBhbGwgdGhlIHNlcnZpY2VzIHRoYXQgd2VyZSBnZW5lcmF0ZWQgZm9yIHRoaXMgcHJvamVjdCwgYW5kIGV4cG9ydCB0aGVtIHRvIGJlIHVzZWQgZHluYW1pY2FsbHkgYnkgdGhlIGBvcGVuYXBpUm91dGVyLmpzYC4gSWYgeW91IHdvdWxkIGxpa2UgdG8gY3VzdG9taXplIHlvdXIgc2VydmljZSwgaXQgaXMgYWR2aXNlZCB0aGF0IHlvdSBsaW5rIHRvIHlvdXIgY29udHJvbGxlciBoZXJlLCBhbmQgZW5zdXJlIHRoYXQgdGhlIGNvZGVnZW4gZG9lcyBub3QgcmV3cml0ZSB0aGlzIGZpbGUuCgotICoqU2VydmljZS5qcyoqIC0gQSB1dGlsaXR5IGNsYXNzLCB2ZXJ5IHNpbXBsZSBhbmQgdGhpbiBhdCB0aGlzIHBvaW50LCB3aXRoIHR3byBzdGF0aWMgbWV0aG9kcyBmb3IgYnVpbGRpbmcgYSByZXNwb25zZSBvYmplY3QgZm9yIHN1Y2Nlc3NmdWwgYW5kIGZhaWxlZCByZXN1bHRzIGluIHRoZSBzZXJ2aWNlIG9wZXJhdGlvbi4gVGhlIGRlZmF1bHQgcmVzcG9uc2UgY29kZSBpcyAyMDAgZm9yIHN1Y2Nlc3MgYW5kIDUwMCBmb3IgZmFpbHVyZS4gSXQgaXMgcmVjb21tZW5kZWQgdG8gc2VuZCBtb3JlIGFjY3VyYXRlIHJlc3BvbnNlIGNvZGVzIGFuZCBvdmVycmlkZSB0aGVzZSBkZWZhdWx0cyB3aGVuIHJlbGV2YW50LgoKLSAqKnt7eC1vcGVuYXBpLXJvdXRlci1zZXJ2aWNlfX0uanMqKiAtIGF1dG8tZ2VuZXJhdGVkIGNvZGUsIHByb3ZpZGluZyBhIHN0dWIgUHJvbWlzZSBmb3IgZWFjaCBvcGVyYXRpb25JZCBkZWZpbmVkIGluIHRoZSBgb3BlbmFwaS55YW1sYC4gRWFjaCBtZXRob2QgcmVjZWl2ZXMgdGhlIHZhcmlhYmxlcyB0aGF0IHdlcmUgZGVmaW5lZCBpbiB0aGUgYG9wZW5hcGkueWFtbGAgZmlsZSwgYW5kIHdyYXBzIGEgUHJvbWlzZSBpbiBhIHRyeS9jYXRjaCBjbGF1c2UuIFRoZSBQcm9taXNlIHJlc29sdmVzIGJvdGggc3VjY2VzcyBhbmQgZmFpbHVyZSBpbiBhIGNhbGwgdG8gdGhlIGBTZXJ2aWNlLmpzYCB1dGlsaXR5IGNsYXNzIGZvciBidWlsZGluZyB0aGUgYXBwcm9wcmlhdGUgcmVzcG9uc2UgdGhhdCB3aWxsIGJlIHNlbnQgYmFjayB0byB0aGUgQ29udHJvbGxlciBhbmQgdGhlbiB0byB0aGUgY2FsbGVyIG9mIHRoaXMgZW5kcG9pbnQuCgojIyMjIHRlc3RzLwotICoqc2VydmVyVGVzdHMuanMqKiAtIGJhc2ljIHNlcnZlciB2YWxpZGF0aW9uIHRlc3RzLCBjaGVja2luZyB0aGF0IHRoZSBzZXJ2ZXIgaXMgdXAsIHRoYXQgYSBjYWxsIHRvIGFuIGVuZHBvaW50IHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIGBvcGVuYXBpLnlhbWxgIGZpbGUgcmV0dXJucyAyMDAsIHRoYXQgYSBjYWxsIHRvIGEgcGF0aCBvdXRzaWRlIHRoYXQgc2NvcGUgcmV0dXJucyAyMDAgaWYgaXQgZXhpc3RzIGFuZCBhIDQwNCBpZiBub3QuCi0gKipyb3V0aW5nVGVzdHMuanMqKiAtIFJ1bnMgdGhyb3VnaCBhbGwgdGhlIGVuZHBvaW50cyBkZWZpbmVkIGluIHRoZSBgb3BlbmFwaS55YW1sYCwgYW5kIGNvbnN0cnVjdHMgYSBkdW1teSByZXF1ZXN0IHRvIHNlbmQgdG8gdGhlIHNlcnZlci4gQ29uZmlybXMgdGhhdCB0aGUgcmVzcG9uc2UgY29kZSBpcyAyMDAuIEF0IHRoaXMgcG9pbnQgcmVxdWVzdHMgY29udGFpbmluZyB4bWwgb3IgZm9ybURhdGEgZmFpbCAtIGN1cnJlbnRseSB0aGV5IGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoZSByb3V0ZXIuCi0gKiphZGRpdGlvbmFsRW5kcG9pbnRzVGVzdHMuanMqKiAtIEEgdGVzdCBmaWxlIGZvciBhbGwgdGhlIGVuZHBvaW50cyB0aGF0IGFyZSBkZWZpbmVkIG91dHNpZGUgdGhlIG9wZW5hcGkueWFtbCBzY29wZS4gQ29uZmlybXMgdGhhdCB0aGVzZSBlbmRwb2ludHMgcmV0dXJuIGEgc3VjY2Vzc2Z1bCAyMDAgcmVzcG9uc2UuCgoKRnV0dXJlIHRlc3RzIHNob3VsZCBiZSB3cml0dGVuIHRvIGVuc3VyZSB0aGF0IHRoZSByZXNwb25zZSBvZiBldmVyeSByZXF1ZXN0IHNlbnQgc2hvdWxkIGNvbmZvcm0gdG8gdGhlIHN0cnVjdHVyZSBkZWZpbmVkIGluIHRoZSBgb3BlbmFwaS55YW1sYC4gVGhpcyB0ZXN0IHdpbGwgZmFpbCAxMDAlIGluaXRpYWxseSwgYW5kIHRoZSBqb2Igb2YgdGhlIGRldmVsb3BtZW50IHRlYW0gd2lsbCBiZSB0byBjbGVhciB0aGVzZSB0ZXN0cy4KCgojIyMjIG1vZGVscy8KQ3VycmVudGx5IGEgY29uY2VwdCBhd2FpdGluZyBmZWVkYmFjay4gVGhlIGlkZWEgaXMgdG8gaGF2ZSB0aGUgb2JqZWN0cyBkZWZpbmVkIGluIHRoZSBvcGVuYXBpLnlhbWwgYWN0IGFzIG1vZGVscyB3aGljaCBhcmUgcGFzc2VkIGJldHdlZW4gdGhlIGRpZmZlcmVudCBtb2R1bGVzLiBUaGlzIHdpbGwgY29uZm9ybSB0aGUgcHJvZ3JhbW1lcnMgdG8gaW50ZXJhY3QgdXNpbmcgZGVmaW5lZCBvYmplY3RzLCByYXRoZXIgdGhhbiBsb29zbGV5LWRlZmluZWQgSlNPTiBvYmplY3RzLiBHaXZlbiB0aGUgbmF0dXJlIG9mIEphdmFTY3JpcHQgcHJvZ3JtbWVycywgd2hvIHdhbnQgdG8gd29yayB3aXRoIHRoZWlyIG93biBib290c3RyYXBwZWQgcGFyYW1ldGVycywgdGhpcyBjb25jZXB0IG1pZ2h0IG5vdCB3b3JrLiBLZWVwaW5nIHRoaXMgaGVyZSBmb3IgZnV0dXJlIGRpc2N1c3Npb24gYW5kIGZlZWRiYWNrLgoKCgo= readmeEtag: '"3bdd94837a9dfdc8bc658cffd6d0a117fe325054"' readmeLastModified: Tue, 10 Mar 2020 09:11:19 GMT repositoryId: 246238533 description: null created: '2020-03-10T07:48:11Z' updated: '2020-03-10T09:13:14Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: iliashenkoa logo: https://avatars.githubusercontent.com/u/37848086?v=4 repoEtag: '"fbf69bdd4c5067b6e735e7d56ca337636d216b2a3c004fcc684efa8353a3d487"' repoLastModified: Tue, 10 Mar 2020 09:13:14 GMT foundInMaster: true category: Server Implementations id: 0fbe268671f3d121f90e52c57d78137b - source: openapi3 tags repository: https://github.com/yjmorales/openapi-specifications v3: true id: ad429c52aa9dd2b0889b134646919780 repositoryMetadata: base64Readme: >- IyMgQVBJIERlZmluaXRpb24gYmFzZWQgb24gT3BlbkFwaSBTcGVjaWZpY2F0aW9ucyAodjMpLgoKClRoaXMgcHJvamVjdCBob2xkcyBhbiBleGFtcGxlIG9mIGFuIEFQSSBkZWZpbml0aW9uIGJhc2VkIG9uIE9wZW5BcGkgMyBTcGVjaWZpY2F0aW9ucy4gCgoKVGhlIHNwZWNpZmljYXRpb24gZmlsZSBpcyBzZWxmLWV4cGxhbmF0b3J5IGFuZCBiZWxvdyBpcyBtaW5vciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaW5zdGFsbCB0aGlzIG9uIGEgcHJvamVjdC4KCiMjIyBJbnN0YWxsYXRpb24KCklmIHlvdSB3YW50IHRvIGFkZCB0aGlzIGN1cnJlbnQgcmVwb3NpdG9yeSB0byB0aGUgcmVwb3NpdG9yaWVzIHNlY3Rpb24gb24geW91ciBvd24gcHJvamVjdCBgY29tcG9zZXIuanNvbmAgZmlsZS4KCmBgYGAKICAgICJyZXBvc2l0b3JpZXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAidXJsIjogImdpdEBnaXRodWIuY29tOnlqbW9yYWxlcy9vcGVuYXBpLXNwZWNpZmljYXRpb25zLmdpdCIKICAgICAgICB9CiAgICBdLApgYGBgCgpGdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBwbGVhc2UgdmlzaXQgaXRzIFtzcGVjaWZpY2F0aW9uXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pLgoKIyMjIENvbnRhY3QgbWUKClllbmllciBKaW1lbmV6Cjxicj4KaHR0cDovL3llbmllcmppbWVuZXoubmV0Cjxicj4KeWptb3JhbGVzODZAZ21haWwuY29tCgoK readmeEtag: '"fd769a2746c9e7bcfb371a6dd5c07bf0c8b609ea"' readmeLastModified: Tue, 17 Oct 2023 14:45:14 GMT repositoryId: 325404199 description: >- This project holds an example of an API definition based on OpenApi 3 Specifications. created: '2020-12-29T22:58:28Z' updated: '2023-01-22T04:57:44Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: yjmorales logo: https://avatars.githubusercontent.com/u/24995532?v=4 license: MIT repoEtag: '"785daaaf751fa59925c701710cf4e35f7478fe8785865b967bead21709aaaeef"' repoLastModified: Sun, 22 Jan 2023 04:57:44 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/aqib1/idealotask2 v3: true repositoryMetadata: base64Readme: >- IyBJZGVhbG9UYXNrMgpSZXBvc2l0b3J5IGZvciBJZGVhbG8gdGFzayAtIGNoZWNrb3V0IGFsZ29yaXRobS4gcGxlYXNlIHNlZSBkb2N4IHJlYWRtZSBpbiBwcm9qZWN0IGZvciBkZXRhaWwgYWJvdXQgdGhpcyBwcm9qZWN0Cg== readmeEtag: '"c247f17b7cdfc398708c6d933592bc9f461dfe97"' readmeLastModified: Wed, 21 Apr 2021 05:41:17 GMT repositoryId: 329116401 description: 'Repository for Idealo task - checkout algorithm ' created: '2021-01-12T21:25:49Z' updated: '2021-04-21T05:41:19Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: aqib1 logo: https://avatars.githubusercontent.com/u/8742169?v=4 repoEtag: '"472bb9340fdcb9e8c20c9867bce2b738f99dc603d28333044bb71b75c65eba65"' repoLastModified: Wed, 21 Apr 2021 05:41:19 GMT foundInMaster: true category: - Server - Server Implementations id: 13120cf7e53c50b361e754e64ed287cc - source: openapi3 tags repository: https://github.com/guyplusplus/rfc3339-datetimeformatter v3: true repositoryMetadata: base64Readme: >- IyBSRkMzMzM5IERhdGVUaW1lRm9ybWF0dGVyCgpUaGlzIGlzIGEgdmVyeSBzaW1wbGUgSkFWQSBjb2RlIHRvIHRlc3QgYSBEYXRlVGltZUZvcm1hdHRlciBkZXNpZ25lZCB0byAqKnN0cmlja2x5KiogcGFyc2UgW1JGQzMzMzkgSW50ZXJuZXQgZGF0ZS90aW1lIGZvcm1hdF0oaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzMzM5I3NlY3Rpb24tNS42KSwgc3VjaCBhcyBgMTk5Ni0xMi0xOVQxNjozOTo1Ny0wODowMGAuCgpUaGlzIHdvcmtzIHZlcnkgd2VsbCwgd2l0aCB0aGUgb25seSAqKmV4Y2VwdGlvbiBvZiBsZWFwIHNlY29uZCoqIGRhdGUgdGltZS4KCmBgYEpBVkEKRGF0ZVRpbWVGb3JtYXR0ZXIgcmZjMzMzOVBhcnNlciA9IG5ldyBEYXRlVGltZUZvcm1hdHRlckJ1aWxkZXIoKQogICAgICAgIC5wYXJzZUNhc2VJbnNlbnNpdGl2ZSgpCiAgICAgICAgLmFwcGVuZFZhbHVlKENocm9ub0ZpZWxkLllFQVIsIDQpCiAgICAgICAgLmFwcGVuZExpdGVyYWwoJy0nKQogICAgICAgIC5hcHBlbmRWYWx1ZShDaHJvbm9GaWVsZC5NT05USF9PRl9ZRUFSLCAyKQogICAgICAgIC5hcHBlbmRMaXRlcmFsKCctJykKICAgICAgICAuYXBwZW5kVmFsdWUoQ2hyb25vRmllbGQuREFZX09GX01PTlRILCAyKQogICAgICAgIC5hcHBlbmRMaXRlcmFsKCdUJykKICAgICAgICAuYXBwZW5kVmFsdWUoQ2hyb25vRmllbGQuSE9VUl9PRl9EQVksIDIpCiAgICAgICAgLmFwcGVuZExpdGVyYWwoJzonKQogICAgICAgIC5hcHBlbmRWYWx1ZShDaHJvbm9GaWVsZC5NSU5VVEVfT0ZfSE9VUiwgMikKICAgICAgICAuYXBwZW5kTGl0ZXJhbCgnOicpCiAgICAgICAgLmFwcGVuZFZhbHVlKENocm9ub0ZpZWxkLlNFQ09ORF9PRl9NSU5VVEUsIDIpCiAgICAgICAgLm9wdGlvbmFsU3RhcnQoKQogICAgICAgIC5hcHBlbmRGcmFjdGlvbihDaHJvbm9GaWVsZC5OQU5PX09GX1NFQ09ORCwgMiwgOSwgdHJ1ZSkgLy8ybmQgcGFyYW1ldGVyOiAyIGZvciBKUkUgKDgsIDExIExUUyksIDEgZm9yIEpSRSAoMTcgTFRTKQogICAgICAgIC5vcHRpb25hbEVuZCgpCiAgICAgICAgLmFwcGVuZE9mZnNldCgiK0hIOk1NIiwiWiIpCiAgICAgICAgLnRvRm9ybWF0dGVyKCkKICAgICAgICAud2l0aFJlc29sdmVyU3R5bGUoUmVzb2x2ZXJTdHlsZS5TVFJJQ1QpCiAgICAgICAgLndpdGhDaHJvbm9sb2d5KElzb0Nocm9ub2xvZ3kuSU5TVEFOQ0UpOwoKRGF0ZVRpbWVGb3JtYXR0ZXIgcmZjMzMzOUZvcm1hdHRlciA9IERhdGVUaW1lRm9ybWF0dGVyLklTT19PRkZTRVRfREFURV9USU1FOwpgYGA= readmeEtag: '"4e6b0136bfbbab7c688f06f2eef18fa7431c9066"' readmeLastModified: Tue, 17 Aug 2021 13:58:30 GMT repositoryId: 385612575 description: JAVA DataTimeFormatter to strictly parse (and format) RFC3339 timestamps created: '2021-07-13T13:25:08Z' updated: '2021-08-17T13:58:36Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: guyplusplus logo: https://avatars.githubusercontent.com/u/18182742?v=4 license: MIT repoEtag: '"0cee3b1cb837103a91fad32e556b0cab455d3c501cb3d068a14dc68221313062"' repoLastModified: Tue, 17 Aug 2021 13:58:36 GMT foundInMaster: true category: Server Implementations id: 3f69fae4e5cc80dba4dd2f67222b4a1f - source: openapi3 tags repository: https://github.com/akiosarkiz/openapi-attributes v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFBIUCBBdHRyaWJ1dGVzCgojIyBGZWF0dXJlcwoKLSBbeF0gR2VuZXJhdGUgaW5mbwotIFt4XSBHZW5lcmF0ZSBzY2hlbWEKLSBbeF0gR2VuZXJhdGUgcGF0aHMKLSBbeF0gR2VuZXJhdGUgc2VjdXJpdHkgc2NoZW1hCi0gW3hdIEdlbmVyYXRlIHNlcnZlcnMKCgpUaGlzIENMSSBUb29sIGlzIGFibGUgdG8gZ2VuZXJhdGUgYW4gT3BlbkFwaSBKU09OIGZpbGUgZGVzY3JpcHRpb24gYWNjb3JkaW5nIHRvIFBIUCBhdHRyaWJ1dGVzIGNvbnRhaW5lZCBpbiB5b3VyIGZpbGVzLgoKCiMjIOKaoO+4jyBNaXNzaW5nIHNvbWV0aGluZyA/Ckp1c3Qgb3BlbiBhbiBpc3N1ZSBzYXlpbmcgd2hhdCdzIG1pc3NpbmcgISBGZWVsIGZyZWUgdG8gb3BlbiBhIFBSIGJ1dCB3ZSByZWNvbW1lbmQgb3BlbmluZyBhbiBpc3N1ZSBiZWZvcmVoYW5kLiAKCgojIyMgRG9jdW1lbnRhdGlvbiBbbGlua10oaHR0cHM6Ly9ha2lvc2Fya2l6LmdpdGh1Yi5pby9vcGVuYXBpLWF0dHJpYnV0ZXMvKQo= readmeEtag: '"9bfb44c9bf4d69db88bfb47dbc6fa79595594022"' readmeLastModified: Wed, 27 Oct 2021 13:32:35 GMT repositoryId: 394191942 description: null created: '2021-08-09T07:22:42Z' updated: '2021-10-27T13:32:43Z' language: PHP archived: false stars: 0 watchers: 1 forks: 0 owner: AkioSarkiz logo: https://avatars.githubusercontent.com/u/42392852?v=4 license: MIT repoEtag: '"8c69d9686b39699edd8e8c90c684e3f1d7fe1b3c43455085e9ab03e1fb8db729"' repoLastModified: Wed, 27 Oct 2021 13:32:43 GMT foundInMaster: true category: Parsers id: 2b99b3aec8d7b940c4aa7d20588bfc92 - source: openapi3 tags repository: https://github.com/umatare5/logbook-go v3: true repositoryMetadata: base64Readme: >- IyBsb2dib29rLWdvCgoqKkRPIE5PVCBFRElUIFRISVMgQ09ERSBNQU5VQUxMWSEqKgoKbG9nYm9vay1nbyBpcyBHbyBsaWJyYXJ5IHRvIHVzZSBbTG9nYm9vayBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS91bWF0YXJlNS9sb2dib29rLWFwaSkuCgpUaGUgY29kZSB3YXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdXNpbmcgW2xvZ2Jvb2stb3BlbmFwaS1zcmNdKGh0dHBzOi8vZ2l0aHViLmNvbS91bWF0YXJlNS9sb2dib29rLW9wZW5hcGktc3JjKS4KCiMjIFVzYWdlCgpgYGBzaApnbyBnZXQgZ2l0aHViLmNvbS91bWF0YXJlNS9sb2dib29rLWdvCmBgYAo= readmeEtag: '"c8808e3b60074f663ef61be2f6fe55fb8ae4ad14"' readmeLastModified: Wed, 26 Jan 2022 17:19:37 GMT repositoryId: 449648100 description: Client library to use my Logbook API created: '2022-01-19T10:36:07Z' updated: '2022-02-15T13:53:30Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: umatare5 logo: https://avatars.githubusercontent.com/u/72645163?v=4 repoEtag: '"f14f9e51a19c88bc40c46f67c4ddb3b79fc5310b5f903ae6c3b72f94a78faea4"' repoLastModified: Tue, 15 Feb 2022 13:53:30 GMT foundInMaster: true category: - SDK - Code Generators id: d1bf1d6b555601d0f01dd1173e521e68 - source: openapi3 tags repository: https://github.com/kekos/prest-doc v3: true id: dbfb1dd556b661e6cd7878109faa7a4d repositoryMetadata: base64Readme: >- IyBQcmVzdC1kb2MKClN0YXRpYyBTaXRlIEdlbmVyYXRvciBmb3IgT3BlbkFQSSBkb2N1bWVudGF0aW9uIHdyaXR0ZW4gaW4gUEhQLgoKIyMgSW5zdGFsbAoKYGBgCmNvbXBvc2VyIHJlcXVpcmUga2Vrb3MvcHJlc3QtZG9jCmBgYAoKUmVxdWlyZXMgYXQgbGVhc3QgUEhQIDguMS4KCiMjIFVzYWdlCgpgYGAKLi9iaW4vcHJlc3QtZG9jIDxpbl9kaXJlY3Rvcnk+IDxvdXRfZGlyZWN0b3J5PiA8bGF5b3V0X2ZpbGU+IFs8Y29uZmlnX2ZpbGU+XQpgYGAKCiogYDxpbl9kaXJlY3Rvcnk+YCBwb2ludHMgdG8gYSBkaXJlY3Rvcnkgd2hpY2ggUHJlc3QtZG9jIHNob3VsZCByZWFkIGFuZCBjb252ZXJ0LgoqIGA8b3V0X2RpcmVjdG9yeT5gIHBvaW50cyB0byBhIGRpcmVjdG9yeSB3aGVyZSBjb252ZXJ0ZWQgZmlsZXMgd2lsbCBiZSB3cml0dGVuLiAqKlBsZWFzZSBub3RlIHRoYXQgdGhpcyBkaXJlY3Rvcnkgd2lsbCBiZSBkZWxldGVkIGJ5IFByZXN0LWRvYyBvbiBlYWNoIHJ1bioqCiogYDxsYXlvdXRfZmlsZT5gIGlzIGEgZmlsZSBwYXRoIHRvIGxheW91dCBmaWxlLiBTZWUgdGhlIFtgZXhhbXBsZXMvYF0oZXhhbXBsZXMpIGRpcmVjdG9yeS4KKiBgPGNvbmZpZ19maWxlPmAgaXMgYSBmaWxlIHBhdGggdG8gW2NvbmZpZ3VyYXRpb25dKCNjb25maWd1cmF0aW9uKS4gKk9wdGlvbmFsKi4KCiMjIENvbmZpZ3VyYXRpb24KCiMjIyBBUEkgdGVtcGxhdGVzCgpZb3UgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0IE9wZW5BUEkgTWFya2Rvd24gdGVtcGxhdGVzIGJ5IGNyZWF0aW5nIGEgY29uZmlndXJhdGlvbiBmaWxlCmFuZCBzdXBwbHkgaXQgd2l0aCB5b3VyIG93biBpbnN0YW5jZXMgb2YgdGVtcGxhdGUgaW50ZXJmYWNlczoKCmBgYHBocAo8P3BocAp1c2UgS2Vrb3NcUHJlc3REb2NcQ29uZmlndXJhdGlvbjsKdXNlIEtla29zXFByZXN0RG9jXEFwaVRlbXBsYXRlc1xDb250cmFjdHNcU2NoZW1hVGVtcGxhdGU7CgpyZXR1cm4gbmV3IENvbmZpZ3VyYXRpb24oCiAgICBhcGlfdGVtcGxhdGVzX2NsYXNzX21hcDogWwogICAgICAgIFNjaGVtYVRlbXBsYXRlOjpjbGFzcyA9PiBuZXcgTXlPd25JbXBsZW1lbnRhdGlvbk9mU2NoZW1hVGVtcGxhdGUoKSwKICAgIF0sCik7CmBgYAoKIyMjIFRvcGljcyBtZW51CgpQcmVzdC1kb2MgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBob3cgaXQgc2hvdWxkIGNyZWF0ZSB0aGUgbWFpbiBBUEkgbmF2aWdhdGlvbiwgdGhlICJ0b3BpY3MgbWVudSIuIFR3byBpbXBsZW1lbnRhdGlvbnMKYXJlIGluY2x1ZGVkLCBidXQgeW91IGNhbiBidWlsZCB5b3VyIG93biBieSBpbXBsZW1lbnRpbmcgdGhlIGludGVyZmFjZSBgXEtla29zXFByZXN0RG9jXEFwaUVudGl0aWVzXFRvcGljc1JlcG9zaXRvcnlgLgpVc2UgdGhlIGBDb25maWd1cmF0aW9uYCBjbGFzc8K0IGBhcGlfdGVtcGxhdGVzX2NsYXNzX21hcGAgcHJvcGVydHkgdG8gY29uZmlndXJlIHRoaXMuCgojIyMjIGBUYWdnZWRUb3BpY3NSZXBvc2l0b3J5YCAoZGVmYXVsdCkKCkFsbCBwYXRoIG9wZXJhdGlvbnMgbXVzdCBoYXZlIGEgdGFnIHByZWZpeGVkIHdpdGggYHRvcGljLWAuIFRoYXQgdGFnIHdpbGwgYmUgdXNlZCB0byBncm91cCBvcGVyYXRpb25zIHRvZ2V0aGVyIHVuZGVyIHRoZQpuYW1lIG9mIHRhZywgZXhjbHVkaW5nIGB0b3BpYy1gLgoKIyMjIyBgU2luZ2xlVG9waWNSZXBvc2l0b3J5YAoKQWxsIHBhdGhzIGFyZSBncm91cGVkIHRvIGEgc2luZ2xlIHRvcGljICoiT3BlcmF0aW9ucyIqLgoKIyMgRmVhdHVyZXMKCi0gW3hdIENvbnZlcnRzIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgKEpTT04pIHRvIEhUTUwuCi0gW3hdIEFsbG93cyBmb3Igb3duIEhUTUwgbGF5b3V0IHRlbXBsYXRlLCB3cml0dGVuIGluIFBIUC4KLSBbeF0gQWxsb3dzIGZvciBvd24gQ1NTIGFuZCBKYXZhU2NyaXB0LgotIFsgXSBTb3J0IHBhdGhzICh0b3BpY3MpIGluIGFuIG9yZGVyIGxvZ2ljYWwgZm9yIHlvdSBhbmQgeW91ciBhcHAuCgojIyBCdWdzIGFuZCBpbXByb3ZlbWVudHMKClJlcG9ydCBidWdzIGluIEdpdEh1YiBpc3N1ZXMgb3IgZmVlbCBmcmVlIHRvIG1ha2UgYSBwdWxsIHJlcXVlc3QgOi0pCgojIyBMaWNlbnNlCgpNSVQK readmeEtag: '"2599c1f5153a106b0566ea70bca3ec7fe3d1053e"' readmeLastModified: Sat, 24 May 2025 11:05:04 GMT repositoryId: 513455651 description: Static Site Generator for OpenAPI documentation created: '2022-07-13T09:17:04Z' updated: '2026-01-13T20:03:05Z' language: PHP archived: false stars: 0 watchers: 1 forks: 0 owner: Kekos logo: https://avatars.githubusercontent.com/u/914782?v=4 license: MIT repoEtag: '"cab3348775425a0cbfd96910d7de98bebc6fdd7b4c3466ba5c66d56089b9ec87"' repoLastModified: Tue, 13 Jan 2026 20:03:05 GMT foundInMaster: true category: Parsers - source: openapi3 tags repository: https://github.com/pavlopolovyi/rick-and-morty v3: true id: d5a18e661bb41a0a8c0fea831070f0c7 repositoryMetadata: base64Readme: >- IyBSaWNrJk1vcnR5IGNoYXJhY3RlcnMgV2lraQoKPGgyPvCfk6MgUHJvamVjdCBkZXNjcmlwdGlvbiDwn5OjPC9oMj4KVGhpcyBpcyBhIHNpbXBsZSBSRVNUIEFQSSB0aGF0IGV4cG9zZXMgdHdvIGVuZG9pbnRzOiA8Yj4vcmFuZG9tPC9iPiAtIHRvIGdldCBpbmZvIGFib3V0IHJhbmRvbSBSaWNrJk1vcnR5IGNoYXJhY3RlcnMgYW5kIDxiPi9ieS1uYW1lP25hbWVMaWtlPXtxdWVyeX08L2I+IC0gdG8gZmluZCBpbmZvIGFib3V0IGNoYXJhY3RlcnMgd2hvc2UgbmFtZSBpcyBsaWtlIHF1ZXJ5IHBhdHRlcm4uIFRoZSBkYXRhIGlzIGR5bmFtaWNhbGx5IHN5bmNocm9uaXplZCB1c2luZyBhbiBleHRlcm5hbCBBUEkgKGh0dHBzOi8vcmlja2FuZG1vcnR5YXBpLmNvbS8pLiBUaGlzIGFwcGxpY2F0aW9uIGZvbGxvd3MgU09MSUQgcHJpbmNpcGxlcyBhbmQgaXMgYnVpbHQgdXAgdXNpbmcgTi10aWVyIGFyY2hpdGVjdHVyZS4KCjxoMj5GZWF0dXJlczwvaDI+CgoqIER5bmFtaWNhbCBkYXRhIHN5bmNocm9uaXphdGlvbiB1c2luZyBidWlsdCBpbiBTcHJpbmcgQm9vdCBmZWF0dXJlCgoqIFNhdmluZyBkYXRhIHRvIHRoZSBkYXRhYmFzZQoKKiAzLWxheWVyIGFyY2hpdGVjdHVyZTogQ29udHJvbGxlcnMsIFNlcnZpY2VzIGFuZCBSZXBvc2l0b3JpZXMKCiogQWxsIGVuZHBvaW50cyBhcmUgZGVzY3JpYmVkIHVzaW5nIE9wZW5BUEkgc3BlY2lmaWNhdGlvbgoKKiBTZW5kaW5nIHJlcXVlc3RzIHRvIGV4dGVybmFsIEFQSQoKKiBVc2luZyBsYXRlc3Qgc3RhYmxlIEphdmEgdmVyc2lvbiBhbmQgU3ByaW5nIEJvb3QgMwoKKiBQcm9qZWN0IGluY2x1ZGVzIHRlc3RzIGZvciBSZXBvc2l0b3J5LCBTZXJ2aWNlIGFuZCBDb250cm9sbGVyIGxheWVycwoKCjxoMj46YnJpY2tzOlByb2plY3Qgc3RydWN0dXJlOmJyaWNrczo8L2gyPgotIENvbnRyb2xsZXJzIC0gdGFrZSBtYWluIHBhcnQgaW4gcmVxdWVzdC9yZXNwb25zZSBjeWNsZSwgcmVjZWl2ZSBkYXRhIGZyb20gdXNlcnMgYW5kIGludm9rZSBidXNpbmVzcyBsb2dpYyBvZiBzZXJ2aWNlcyAKdG8gcHJvY2VzcyBpdCBhbmQgc3RvcmUgaW4gZGF0YWJhc2UuIFNlbmQgYmFjayBkYXRhIHRvIHVzZXJzLCB3aGVuIHRoZXkgcmVxdWVzdCBpdC48YnI+Ci0gU2VydmljZXMgLSB0aGlzIGxheWVyIGNvb3JkaW5hdGVzIHdvcmsgb2YgYWxsIGFwcGxpY2F0aW9uLCBwcm9jZXNzIGNvbW1hbmRzIGFuZCBwZXJmb3JtcyBkYXRhIHN5bmMuPGJyPgotIFJlcG9zaXRvcmllcyAtIGhlcmUgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGFuZCByZXRyaWV2ZWQuPGJyPgoKIyMgPGgyPlRlY2hub2xvZ2llczwvaDI+CiogSmF2YSAxNwoqIFNwcmluZyBCb290CiogU3ByaW5nIERhdGEgSlBBCiogU3ByaW5nIE1WQwoqIFBvc3RncmVTUUwKKiBIaWJlcm5hdGUKKiBEb2NrZXIKKiBMaXF1aWJhc2UKKiBPcGVuQVBJIDMuMAoqIEpVbml0LCBNb2NraXRvLCBUZXN0Y29udGFpbmVycywgU3ByaW5nIEJvb3QgVGVzdGluZwoqIEZlaWduQ2xpZW50IGZvciBzZW5kaW5nIHJlcXVlc3RzIHRvIGV4dGVybmFsIEFQSQoKCiMjIDxoMj46Ym9tYjpJbnN0cnVjdGlvbnMgZm9yIGxhdW5jaGluZyB0aGUgcHJvamVjdDpib21iOjwvaDI+CjxoND5UbyBydW4gdGhpcyBwcm9qZWN0IGxvY2FsbHksIGZvbGxvdyB0aGVzZSBzdGVwczo8L2g0PgoKMe+4j+KDoyBZb3Ugc2hvdWxkIGluc3RhbGwgPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZ2V0LWRvY2tlci8iPkRvY2tlcjwvYT4gZm9yIGVhc3kgbGF1bmNoaW5nCgoy77iP4oOjICBDbG9uZSB0aGlzIHByb2plY3QgZnJvbSBHaXRIdWIKYGBgYmFzaApodHRwczovL2dpdGh1Yi5jb20vUGF2bG9Qb2xvdnlpL3JpY2stYW5kLW1vcnR5CmBgYAoz77iP4oOjIE5hdmlnYXRlIHRvIHByb2plY3QgZm9sZGVyIGluIHRlcm1pbmFsIGFuZCBydW4gZm9sbG93aW5nIGNvbW1hbmQ6CmBgYGJhc2gKLi9tdm53IGNsZWFuIHBhY2thZ2UgLURza2lwVGVzdHMKYGBgCmlmIGl0IGhhcyBmYWlsZWQsIGluc3RhbGwgTWF2ZW4gYW5kIHJ1biBmb2xsb3dpbmcgY29tbWFuZDoKYGBgYmFzaAptdm4gcGFja2FnZSAtRHNraXBUZXN0cwpgYGAKNO+4j+KDoyBUaGVuIHJ1biBhbmQgd2FpdCB3aGlsZSBpbWFnZXMgYXJlIGJ1aWxkaW5nOgpgYGBiYXNoCmRvY2tlciBjb21wb3NlIGJ1aWxkCmBgYAo177iP4oOjIEFuZCBmaW5hbGx5IHJ1biBhcHBsaWNhdGlvbi4gU3RhcnQgdGFrZXMgYSB3aGlsZSwgYmVjYXVzZSBvZiBpbml0aWFsIGRhdGEgc3luY2hyb25pemF0aW9uOgpgYGBiYXNoCmRvY2tlciBjb21wb3NlIHVwCmBgYAo6c2l4OiBHbyB0byB0aGUgYnJvd3NlciBhbmQgdXNlIHRoZSBmb2xsb3dpbmcgdXJsIHRvIHRlc3QgdGhlIGFwcGxpY2F0aW9uIGFuZCBzZWUgT3BlbkFQSSBkb2N1bWVudGF0aW9uLiAKYGBgYmFzaApodHRwOi8vbG9jYWxob3N0OjgwODEvc3dhZ2dlci11aS5odG1sCmBgYAo6c2V2ZW46IElmIHBvcnQgODA4MSBpcyBidXN5IG9uIHlvdXIgbWFjaGluZSwganVzdCBjaGFuZ2UgU1BSSU5HX0xPQ0FMX1BPUlQgdmFsdWUgaW4gdGhlIC5lbnYgZmlsZS4KCg== readmeEtag: '"81af7282148faacadb798d1cf8ecae1d4c8a436d"' readmeLastModified: Mon, 09 Jan 2023 15:30:50 GMT repositoryId: 586850314 description: >- This is a simple REST API that exposes two endoints and provides info about characters from Rick&Morty universe. It uses an external API to synchronize data. created: '2023-01-09T11:32:36Z' updated: '2023-01-09T13:45:22Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: PavloPolovyi logo: https://avatars.githubusercontent.com/u/96145406?v=4 repoEtag: '"06e556f25301e8c083eb5b4134b499d1c3d8e5da58cac3601e3252ece4317783"' repoLastModified: Mon, 09 Jan 2023 13:45:22 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/maciek1839/spring-cloud-demo v3: true id: 4db91225301e8a967d0f7ef5ba72cc65 repositoryMetadata: base64Readme: >- IyBTcHJpbmcgQ2xvdWQgZGVtbwoKfCBCcmFuY2ggfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGlwZWxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGUgY292ZXJhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdCByZXBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ByaW5nIFJFU1QgRG9jcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbmFyQ2xvdWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cnw6LS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06fAp8IG1hc3RlciB8IFshW3BpcGVsaW5lIHN0YXR1c10oaHR0cHM6Ly9naXRsYWIuY29tL1Nob3dNZVlvdXJDb2RlWW91VHViZS9zcHJpbmctY2xvdWQtZGVtby9iYWRnZXMvbWFzdGVyL3BpcGVsaW5lLnN2ZyldKGh0dHBzOi8vZ2l0bGFiLmNvbS9TaG93TWVZb3VyQ29kZVlvdVR1YmUvc3ByaW5nLWNsb3VkLWRlbW8vLS9jb21taXRzL21hc3RlcikgfCBbIVtjb3ZlcmFnZSByZXBvcnRdKGh0dHBzOi8vZ2l0bGFiLmNvbS9TaG93TWVZb3VyQ29kZVlvdVR1YmUvc3ByaW5nLWNsb3VkLWRlbW8vYmFkZ2VzL21hc3Rlci9jb3ZlcmFnZS5zdmcpXShodHRwczovL2dpdGxhYi5jb20vU2hvd01lWW91ckNvZGVZb3VUdWJlL3NwcmluZy1jbG91ZC1kZW1vLy0vY29tbWl0cy9tYXN0ZXIpIHwgW2xpbmtdKGh0dHBzOi8vc2hvd21leW91cmNvZGV5b3V0dWJlLmdpdGxhYi5pby9zcHJpbmctY2xvdWQtZGVtby90ZXN0LXJlcG9ydC9pbmRleC5odG1sKSB8IFtsaW5rXShodHRwczovL3Nob3dtZXlvdXJjb2RleW91dHViZS5naXRsYWIuaW8vc3ByaW5nLWNsb3VkLWRlbW8vcmVzdC1kb2NzL2NsaWVudC1hcGktZG9jcy5odG1sKSB8IFtsaW5rXShodHRwczovL3NvbmFyY2xvdWQuaW8vb3JnYW5pemF0aW9ucy9zaG93bWV5b3VyY29kZXlvdXR1YmUvcHJvamVjdHMpIHwKCgojIyBUZWNobm9sb2d5CgotIEpESyAoQVdTIENvcnJldHRvKQotIFNwcmluZyBCb290IENsb3VkCiAgICAtIE9wZW5GZWlnbgogICAgLSBSaWJib24KICAgIC0gRXVyZWthCi0gU3ByaW5nIFJFU1QgRG9jcwotIFN3YWdnZXIKLSBnUlBDCi0gR3JhcGhRTAotIFdpcmVNb2NrCi0gUmVzdEFzc3VyZWQgJiBIYW1jcmVzdAoKIyMgU2VydmljZXMgc3BlY2lmaWNhdGlvbgoKIVtpbWddKGRvY3MvaGlnaC1sZXZlbC1kZXNpZ24tZGlhZ3JhbS5kcmF3aW8ucG5nKQoKVGhlIGRpYWdyYW0gd2FzIGNyZWF0ZWQgdXNpbmcgW2h0dHBzOi8vYXBwLmRpYWdyYW1zLm5ldC9dKGh0dHBzOi8vYXBwLmRpYWdyYW1zLm5ldC8pLgoKQWxsIHNlcnZpY2VzIHVzZSBPcGVuQXBpMyAoT0FTMykuCgotIGBldXJla2Etc2VydmVyYAogIC0gVGVjaG5vbG9neTogU3ByaW5nIE1WQwogIC0gRGFzaGJvYXJkOiBodHRwOi8vbG9jYWxob3N0Ojg3NjEKICAtIFBvcnQ6IDg3NjEKLSBgc2hvcC1taWNyb3NlcnZpY2VgCiAgLSBUZWNobm9sb2d5OiBTcHJpbmcgTVZDCiAgLSBTd2FnZ2VyIFVJOiBodHRwOi8vbG9jYWxob3N0OjgxMDAvc2hvcC9zd2FnZ2VyLXVpLmh0bWwKICAtIEV1cmVrYSBzZXJ2aWNlIG5hbWU6IHNwcmluZy1jbG91ZC1ldXJla2Etc2hvcAogIC0gUG9ydDogODEwMCAoUkVTVCkKICAtIENvbnRleHQgcGF0aDogL3Nob3AKICAtIE9wZW5GZWlnbiB1c2luZyBwcm92aWRlZC9zdGF0aWMgVVJMcyBvciBob3N0cyBmcm9tIFJpYmJvbi9FdXJla2EgKHdhcmVob3VzZSkKLSBgd2FyZWhvdXNlLW1pY3Jvc2VydmljZWAKICAtIFRlY2hub2xvZ3k6IFNwcmluZyBNVkMKICAtIFN3YWdnZXIgVUk6IGh0dHA6Ly9sb2NhbGhvc3Q6ODIwMC93YXJlaG91c2Uvc3dhZ2dlci11aS5odG1sCiAgLSBFdXJla2Egc2VydmljZSBuYW1lOiBzcHJpbmctY2xvdWQtZXVyZWthLXdhcmVob3VzZQogIC0gUG9ydDogODIwMCAoUkVTVCksIDcwMDAgKGdSUEMpCiAgLSBDb250ZXh0IHBhdGg6IC93YXJlaG91c2UKICAtIEphdmEgQVBJIENsaWVudCBjb25maWd1cmF0aW9uIHVzaW5nIGEgcHJvdmlkZWQvc3RhdGljIFVSTCAoZmFjdG9yeSkKLSBgZmFjdG9yeS1taWNyb3NlcnZpY2VgCiAgLSBUZWNobm9sb2d5OiBTcHJpbmcgV2ViRmx1eAogIC0gU3dhZ2dlciBVSTogaHR0cDovL2xvY2FsaG9zdDo4MzAwL2ZhY3Rvcnkvc3dhZ2dlci11aS5odG1sCiAgLSBTcHJpbmcgUkVTVCBEb2NzOiBmYWN0b3J5LW1pY3Jvc2VydmljZS9zcmMvbWFpbi9hc2NpaWRvYwogIC0gUG9ydDogODMwMAogIC0gQ29udGV4dCBwYXRoOiAvZmFjdG9yeQotIGByZXBvcnRpbmctbWljcm9zZXJ2aWNlYAogIC0gVGVjaG5vbG9neTogU3ByaW5nIE1WQwogIC0gU3dhZ2dlciBVSTogaHR0cDovL2xvY2FsaG9zdDo4MDAwL3JlcG9ydGluZy9zd2FnZ2VyLXVpLmh0bWwKICAtIEV1cmVrYSBzZXJ2aWNlIG5hbWU6IHNwcmluZy1jbG91ZC1ldXJla2EtcmVwb3J0aW5nCiAgLSBHcmFwaFFMCiAgICAtIEdyYXBoaVFMIC0gaHR0cDovL2xvY2FsaG9zdDo4MDAwL3JlcG9ydGluZy9ncmFwaGlxbAogICAgLSBBbHRhaXIgLSBodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVwb3J0aW5nL2FsdGFpcgogICAgLSBQbGF5Z3JvdW5kIC0gaHR0cDovL2xvY2FsaG9zdDo4MDAwL3JlcG9ydGluZy9wbGF5Z3JvdW5kCiAgICAtIFZveWFnZXIgLSBodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVwb3J0aW5nL3ZveWFnZXIKICAgIC0gR3JhcGhRTCBlbmRwb2ludCAobm90IGFjY2Vzc2libGUgd2l0aCBHRVQpIC0gaHR0cDovL2xvY2FsaG9zdDo4MDAwL3JlcG9ydGluZy9ncmFwaHFsCiAgLSBQb3J0OiA4MDAwCiAgLSBDb250ZXh0IHBhdGg6IC9yZXBvcnRpbmcKICAtIFJlc3RUZW1wbGF0ZSB1c2luZyBSaWJib24gd2l0aCBFdXJla2EKLSBgYWRtaW4tZGFzaGJvYXJkYAogIC0gVGVjaG5vbG9neTogU3ByaW5nIE1WQwogIC0gRGFzaGJvYXJkOiBodHRwOi8vbG9jYWxob3N0OjkwMDAvCiAgLSBFdXJla2Egc2VydmljZSBuYW1lOiBzcHJpbmctY2xvdWQtZXVyZWthLWFkbWluCiAgLSBQb3J0OiA5MDAwCi0gYHRlc3RzYAogIC0gU3lzdGVtIGFuZCBhY2NlcHRhbmNlIHRlc3RzLgoKLS0tCgpEZXNpZ24gcmVtYXJrczoKLSBJbiBvcmRlciB0byBzaW1wbGlmeSB0aGlzIGV4YW1wbGUsIG1vZGVscyBhcmUgcmV1c2VkIGJ5IG1pY3Jvc2VydmljZXMuIEluIHJlYWwgYXBwbGljYXRpb25zIGl0IG1pZ2h0IG5vdCBiZSBhIGdvb2QgY2hvaWNlLgotIFRoZSB3YXJlaG91c2UgbWljcm9zZXJ2aWNlIGlzIGEgcHJveHkgZm9yd2FyZGluZyByZXF1ZXN0cyB0byB0aGUgZmFjdG9yeSBtaWNyb3NlcnZpY2UuCi0gVGhlIHNob3AgbWljcm9zZXJ2aWNlIGlzIGEgcHJveHkgZm9yd2FyZGluZyByZXF1ZXN0cyB0byB0aGUgd2FyZWhvdXNlIG1pY3Jvc2VydmljZS4KLSBUaGUgY2xpZW50IG1pY3Jvc2VydmljZSBjYWxscyBhcmJpdHJhcnkgb3RoZXIgc2VydmljZXMuCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCjEuIChPcHRpb25hbCkgRW5hYmxlIExvbWJvayBhbm5vdGF0aW9ucyBpbiB5b3VyIElERQoyLiAoT3B0aW9uYWwpIFJ1biBhbGwgc2VydmVycyB1c2luZyBwcmVkZWZpbmVkIGNvbmZpZ3VyYXRpb25zIGZvciBJbnRlbGxpSiAoLnJ1bmNvbmZpZykKICAgMS4gSWYgeW91ciBJREUgdGhyb3dzIGVycm9ycyBiZWNhdXNlIHNvbWUgY2xhc3NlcyB3ZXJlIG5vdCBmb3VuZCwgbWFyayBgdGFyZ2V0L2dlbmVyYXRlZC1zb3VyY2VzYCBhcyBgR2VuZXJhdGVkIFNvdXJjZXMgUm9vdGAgaW4geW91ciBJREUuCjMuIFJ1biB0aGUgRXVyZWthIHNlcnZlcgo0LiBSdW4gbWljcm9zZXJ2aWNlcwo1LiBSdW4gYSBjbGllbnQgd2hpY2ggY2FsbHMgbWljcm9zZXJ2aWNlcyB1c2luZyBFdXJla2EKCiFbaW1nXSguL2RvY3Mvc3ByaW5nLWJvb3QtYWRtaW4ucG5nKQoKIVtpbWddKC4vZG9jcy9zcHJpbmctYm9vdC1ldXJla2EucG5nKQoKIyMgVGVzdGluZyBTdHJhdGVneQoKPiBBY2NlcHRhbmNlIFRlc3RpbmcgaXMgZG9uZSBhZnRlciB0aGUgc3lzdGVtIHRlc3RpbmcuIEl0IGlzIHVzZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgc29mdHdhcmUgbWVldHMgdGhlIGN1c3RvbWVyIHJlcXVpcmVtZW50cyBvciBub3QuIEFjY2VwdGFuY2UgdGVzdGluZyBpcyB1c2VkIGJ5IHRlc3RlcnMsIHN0YWtlaG9sZGVycyBhcyB3ZWxsIGFzIGNsaWVudHMuCj4KPiBSZWZlcmVuY2U6IGh0dHBzOi8vd3d3LmdlZWtzZm9yZ2Vla3Mub3JnL2RpZmZlcmVuY2UtYmV0d2Vlbi1zeXN0ZW0tdGVzdGluZy1hbmQtYWNjZXB0YW5jZS10ZXN0aW5nLwoKIVtpbWddKGRvY3MvdGVzdGluZy1zdHJhdGVneS5qcGcpCgpbUmVmZXJlbmNlXShodHRwczovL3d3dy5nZWVrc2ZvcmdlZWtzLm9yZy9hY2NlcHRhbmNlLXRlc3Rpbmctc29mdHdhcmUtdGVzdGluZy8pCgpTeXN0ZW0gYW5kIGFjY2VwdGFuY2UgdGVzdHMgYXJlIGluIHRoZSBgdGVzdHNgIG1vZHVsZS4KUnVuIHRoZW0gd2hlbiBhbGwgbWljcm9zZXJ2aWNlcyBhcmUgdXAuCgpUaGFua3MgdG8gYXV0b21hdGljIHRlc3RzIHlvdSBkb24ndCBuZWVkIHRvIG1hbnVhbGx5IHZlcmlmeSBpcyBzZXJ2aWNlcyBhcmUgZmluZSBhZnRlciBtYWtpbmcgbWFqb3IgY2hhbmdlcy4KCk90aGVyIGdvb2QgYXJ0aWNsZXMgYWJvdXQgdGVzdGluZyBsZXZlbHM6Ci0gaHR0cHM6Ly93d3cuZ3VydTk5LmNvbS9sZXZlbHMtb2YtdGVzdGluZy5odG1sCgojIyBQcmltYXJ5IFByb2plY3RzIG9mIFNwcmluZyBDbG91ZAoKIVtpbWddKGRvY3MvbWljcm9zZXJ2aWNlcy02LnN2ZykKCltSZWZlcmVuY2VdKGh0dHBzOi8vc3ByaW5nLmlvL21pY3Jvc2VydmljZXMpCgoKLSBTcHJpbmcgQ2xvdWQgQ29uZmlnCiAgLSBDZW50cmFsaXplZCBleHRlcm5hbCBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQgYmFja2VkIGJ5IGEgZ2l0IHJlcG9zaXRvcnkuIFRoZSBjb25maWd1cmF0aW9uIHJlc291cmNlcyBtYXAgZGlyZWN0bHkgdG8gU3ByaW5nIEVudmlyb25tZW50IGJ1dCBjb3VsZCBiZSB1c2VkIGJ5IG5vbi1TcHJpbmcgYXBwbGljYXRpb25zIGlmIGRlc2lyZWQuCi0gU3ByaW5nIENsb3VkIE5ldGZsaXgKICAtIEludGVncmF0aW9uIHdpdGggdmFyaW91cyBOZXRmbGl4IE9TUyBjb21wb25lbnRzIChFdXJla2EsIEh5c3RyaXgsIFp1dWwsIEFyY2hhaXVzLCBldGMuKToKICAgIC0gU2VydmljZSBEaXNjb3ZlcnkgKEV1cmVrYSkKICAgIC0gQ2lyY3VpdCBCcmVha2VyIChIeXN0cml4KQogICAgLSBJbnRlbGxpZ2VudCBSb3V0aW5nIChadXVsKQogICAgLSBDbGllbnQgU2lkZSBMb2FkIEJhbGFuY2luZyAoUmliYm9uKQotIFNwcmluZyBDbG91ZCBCdXMKICAtIEFuIGV2ZW50IGJ1cyBmb3IgbGlua2luZyBzZXJ2aWNlcyBhbmQgc2VydmljZSBpbnN0YW5jZXMgdG9nZXRoZXIgd2l0aCBkaXN0cmlidXRlZCBtZXNzYWdpbmcuIFVzZWZ1bCBmb3IgcHJvcGFnYXRpbmcgc3RhdGUgY2hhbmdlcyBhY3Jvc3MgYSBjbHVzdGVyIChlLmcuIGNvbmZpZyBjaGFuZ2UgZXZlbnRzKS4KLSBTcHJpbmcgQ2xvdWQgT3BlbiBTZXJ2aWNlIEJyb2tlcgogIC0gUHJvdmlkZXMgYSBzdGFydGluZyBwb2ludCBmb3IgYnVpbGRpbmcgYSBzZXJ2aWNlIGJyb2tlciB0aGF0IGltcGxlbWVudHMgdGhlIE9wZW4gU2VydmljZSBCcm9rZXIgQVBJLgotIFNwcmluZyBDbG91ZCBDb25zdWwKICAtIFNlcnZpY2UgZGlzY292ZXJ5IGFuZCBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQgd2l0aCBIYXNoaWNvcnAgQ29uc3VsLgotIFNwcmluZyBDbG91ZCBTbGV1dGgKICAtIERpc3RyaWJ1dGVkIHRyYWNpbmcgZm9yIFNwcmluZyBDbG91ZCBhcHBsaWNhdGlvbnMsIGNvbXBhdGlibGUgd2l0aCBaaXBraW4sIEhUcmFjZSBhbmQgbG9nLWJhc2VkIChlLmcuIEVMSykgdHJhY2luZy4KLSBTcHJpbmcgQ2xvdWQgRGF0YSBGbG93CiAgLSBBIGNsb3VkLW5hdGl2ZSBvcmNoZXN0cmF0aW9uIHNlcnZpY2UgZm9yIGNvbXBvc2FibGUgbWljcm9zZXJ2aWNlIGFwcGxpY2F0aW9ucyBvbiBtb2Rlcm4gcnVudGltZXMuIEVhc3ktdG8tdXNlIERTTCwgZHJhZy1hbmQtZHJvcCBHVUksIGFuZCBSRVNULUFQSXMgdG9nZXRoZXIgc2ltcGxpZmllcyB0aGUgb3ZlcmFsbCBvcmNoZXN0cmF0aW9uIG9mIG1pY3Jvc2VydmljZSBiYXNlZCBkYXRhIHBpcGVsaW5lcy4KLSBTcHJpbmcgQ2xvdWQgU3RyZWFtCiAgLSBBIGxpZ2h0d2VpZ2h0IGV2ZW50LWRyaXZlbiBtaWNyb3NlcnZpY2VzIGZyYW1ld29yayB0byBxdWlja2x5IGJ1aWxkIGFwcGxpY2F0aW9ucyB0aGF0IGNhbiBjb25uZWN0IHRvIGV4dGVybmFsIHN5c3RlbXMuIFNpbXBsZSBkZWNsYXJhdGl2ZSBtb2RlbCB0byBzZW5kIGFuZCByZWNlaXZlIG1lc3NhZ2VzIHVzaW5nIEFwYWNoZSBLYWZrYSBvciBSYWJiaXRNUSBiZXR3ZWVuIFNwcmluZyBCb290IGFwcHMuCi0gU3ByaW5nIENsb3VkIFN0cmVhbSBBcHBsaWNhdGlvbnMKICAtIFNwcmluZyBDbG91ZCBTdHJlYW0gQXBwbGljYXRpb25zIGFyZSBvdXQgb2YgdGhlIGJveCBTcHJpbmcgQm9vdCBhcHBsaWNhdGlvbnMgcHJvdmlkaW5nIGludGVncmF0aW9uIHdpdGggZXh0ZXJuYWwgbWlkZGxld2FyZSBzeXN0ZW1zIHN1Y2ggYXMgQXBhY2hlIEthZmthLCBSYWJiaXRNUSBldGMuIHVzaW5nIHRoZSBiaW5kZXIgYWJzdHJhY3Rpb24gaW4gU3ByaW5nIENsb3VkIFN0cmVhbS4KLSBTcHJpbmcgQ2xvdWQgVGFzawogIC0gQSBzaG9ydC1saXZlZCBtaWNyb3NlcnZpY2VzIGZyYW1ld29yayB0byBxdWlja2x5IGJ1aWxkIGFwcGxpY2F0aW9ucyB0aGF0IHBlcmZvcm0gZmluaXRlIGFtb3VudHMgb2YgZGF0YSBwcm9jZXNzaW5nLgogIC0gU2ltcGxlIGRlY2xhcmF0aXZlIGZvciBhZGRpbmcgYm90aCBmdW5jdGlvbmFsIGFuZCBub24tZnVuY3Rpb25hbCBmZWF0dXJlcyB0byBTcHJpbmcgQm9vdCBhcHBzLgotIFNwcmluZyBDbG91ZCBUYXNrIEFwcCBTdGFydGVycwogIC0gU3ByaW5nIENsb3VkIFRhc2sgQXBwIFN0YXJ0ZXJzIGFyZSBTcHJpbmcgQm9vdCBhcHBsaWNhdGlvbnMgdGhhdCBtYXkgYmUgYW55IHByb2Nlc3MgaW5jbHVkaW5nIFNwcmluZyBCYXRjaCBqb2JzIHRoYXQgZG8gbm90IHJ1biBmb3JldmVyLCBhbmQgdGhleSBlbmQvc3RvcCBhZnRlciBhIGZpbml0ZSBwZXJpb2Qgb2YgZGF0YSBwcm9jZXNzaW5nLgotIFNwcmluZyBDbG91ZCBab29rZWVwZXIKICAtIFNlcnZpY2UgZGlzY292ZXJ5IGFuZCBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQgd2l0aCBBcGFjaGUgWm9va2VlcGVyLgotIFNwcmluZyBDbG91ZCBDb250cmFjdAogIC0gU3ByaW5nIENsb3VkIENvbnRyYWN0IGlzIGFuIHVtYnJlbGxhIHByb2plY3QgaG9sZGluZyBzb2x1dGlvbnMgdGhhdCBoZWxwIHVzZXJzIGluIHN1Y2Nlc3NmdWxseSBpbXBsZW1lbnRpbmcgdGhlIENvbnN1bWVyIERyaXZlbiBDb250cmFjdHMgYXBwcm9hY2guCi0gU3ByaW5nIENsb3VkIEdhdGV3YXkKICAtIFNwcmluZyBDbG91ZCBHYXRld2F5IGlzIGFuIGludGVsbGlnZW50IGFuZCBwcm9ncmFtbWFibGUgcm91dGVyIGJhc2VkIG9uIFByb2plY3QgUmVhY3Rvci4KLSBTcHJpbmcgQ2xvdWQgT3BlbkZlaWduCiAgLSBTcHJpbmcgQ2xvdWQgT3BlbkZlaWduIHByb3ZpZGVzIGludGVncmF0aW9ucyBmb3IgU3ByaW5nIEJvb3QgYXBwcyB0aHJvdWdoIGF1dG9jb25maWd1cmF0aW9uIGFuZCBiaW5kaW5nIHRvIHRoZSBTcHJpbmcgRW52aXJvbm1lbnQgYW5kIG90aGVyIFNwcmluZyBwcm9ncmFtbWluZyBtb2RlbCBpZGlvbXMuCi0gU3ByaW5nIENsb3VkIEZ1bmN0aW9uCiAgLSBTcHJpbmcgQ2xvdWQgRnVuY3Rpb24gcHJvbW90ZXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGJ1c2luZXNzIGxvZ2ljIHZpYSBmdW5jdGlvbnMuCgotLS0KCi0gU3ByaW5nIENsb3VkIGRvY3VtZW50YXRpb25zCiAgLSBodHRwczovL3NwcmluZy5pby9wcm9qZWN0cy9zcHJpbmctY2xvdWQKLSBTcHJpbmcgQ2xvdWQgcmVsZWFzZXMKICAtIGh0dHBzOi8vZ2l0aHViLmNvbS9zcHJpbmctY2xvdWQvc3ByaW5nLWNsb3VkLXJlbGVhc2Uvd2lraQotIFNwcmluZyBCb290ICYgU3ByaW5nIENsb3VkIHN1cHBvcnRlZCB2ZXJzaW9ucwogIC0gaHR0cHM6Ly9naXRodWIuY29tL3NwcmluZy1jbG91ZC9zcHJpbmctY2xvdWQtcmVsZWFzZS93aWtpL1N1cHBvcnRlZC1WZXJzaW9ucwoKIyMjIFNwcmluZyBDbG91ZCBOZXRmbGl4IGNvbXBvbmVudHMgcmVwbGFjZW1lbnRzCgp8IENVUlJFTlQJICAgICAgICAgICAgICAgICAgICB8IFJFUExBQ0VNRU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IEh5c3RyaXgJICAgICAgICAgICAgICAgICAgICB8IFJlc2lsaWVuY2U0aiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEh5c3RyaXggRGFzaGJvYXJkIC8gVHVyYmluZSB8IAlNaWNyb21ldGVyICsgTW9uaXRvcmluZyBTeXN0ZW0gICAgICAgICAgICAgICAgICAgfAp8IFJpYmJvbiAgICAgICAgICAgICAgICAgICAgICB8IAlTcHJpbmcgQ2xvdWQgTG9hZGJhbGFuY2VyICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFp1dWwgMQkgICAgICAgICAgICAgICAgICAgICB8IFNwcmluZyBDbG91ZCBHYXRld2F5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEFyY2hhaXVzIDEJICAgICAgICAgICAgICAgICB8IFNwcmluZyBCb290IGV4dGVybmFsIGNvbmZpZyArIFNwcmluZyBDbG91ZCBDb25maWcgfAoKIyMgU2VydmljZSBEaXNjb3ZlcnkgaW4gTWljcm9zZXJ2aWNlcwoKQSBtaWNyb3NlcnZpY2UgbmVlZHMgdG8ga25vdyB0aGUgbG9jYXRpb24gKElQIGFkZHJlc3MgYW5kIHBvcnQpIG9mIGV2ZXJ5IHNlcnZpY2UgaXQgY29tbXVuaWNhdGVzIHdpdGguCklmIHdlIGRvbuKAmXQgZW1wbG95IGEgU2VydmljZSBEaXNjb3ZlcnkgbWVjaGFuaXNtLCBzZXJ2aWNlIGxvY2F0aW9ucyBiZWNvbWUgY291cGxlZCwKbGVhZGluZyB0byBhIHN5c3RlbSB0aGF04oCZcyBkaWZmaWN1bHQgdG8gbWFpbnRhaW4uCldlIGNvdWxkIHdpcmUgdGhlIGxvY2F0aW9ucyBvciBpbmplY3QgdGhlbSB2aWEgY29uZmlndXJhdGlvbiBpbiBhIHRyYWRpdGlvbmFsIGFwcGxpY2F0aW9uLApidXQgaXQgaXNu4oCZdCByZWNvbW1lbmRlZCBpbiBhIG1vZGVybiBjbG91ZC1iYXNlZCBhcHBsaWNhdGlvbiBvZiB0aGlzIGtpbmQuCgpUaGUgU2VydmljZSBEaXNjb3ZlcnkgbWVjaGFuaXNtIGhlbHBzIHVzIGtub3cgd2hlcmUgZWFjaCBpbnN0YW5jZSBpcyBsb2NhdGVkLgpJbiB0aGlzIHdheSwgYSBTZXJ2aWNlIERpc2NvdmVyeSBjb21wb25lbnQgYWN0cyBhcyBhIHJlZ2lzdHJ5IGluIHdoaWNoIHRoZSBhZGRyZXNzZXMgb2YgYWxsIGluc3RhbmNlcyBhcmUgdHJhY2tlZC4KCiMjIyBIb3cgRG9lcyBTZXJ2aWNlIERpc2NvdmVyeSBXb3Jrcz8KCiFbaW1nXShkb2NzL1NlcnZpY2UtRGlzY292ZXJ5LTEtMS5wbmcpCgpMZXTigJlzIGRlc2NyaWJlIHRoZSBzdGVwcyBpbGx1c3RyYXRlZCBpbiB0aGUgZGlhZ3JhbToKMS4gVGhlIGxvY2F0aW9uIG9mIHRoZSBTZXJ2aWNlIFByb3ZpZGVyIGlzIHNlbnQgdG8gdGhlIFNlcnZpY2UgUmVnaXN0cnkgKGEgZGF0YWJhc2UgY29udGFpbmluZyB0aGUgbG9jYXRpb25zIG9mIGFsbCBhdmFpbGFibGUgc2VydmljZSBpbnN0YW5jZXMpLgoyLiBUaGUgU2VydmljZSBDb25zdW1lciBhc2tzIHRoZSBTZXJ2aWNlIERpc2NvdmVyeSBTZXJ2ZXIgZm9yIHRoZSBsb2NhdGlvbiBvZiB0aGUgU2VydmljZSBQcm92aWRlci4KMy4gVGhlIGxvY2F0aW9uIG9mIHRoZSBTZXJ2aWNlIFByb3ZpZGVyIGlzIHNlYXJjaGVkIGJ5IHRoZSBTZXJ2aWNlIFJlZ2lzdHJ5IGluIGl0cyBpbnRlcm5hbCBkYXRhYmFzZSBhbmQgcmV0dXJuZWQgdG8gdGhlIFNlcnZpY2UgQ29uc3VtZXIuCjQuIFRoZSBTZXJ2aWNlIENvbnN1bWVyIGNhbiBub3cgbWFrZSBkaXJlY3QgcmVxdWVzdHMgdG8gdGhlIFNlcnZpY2UgUHJvdmlkZXIuCgpUaGVyZSBhcmUgdHdvIG1haW4gU2VydmljZSBEaXNjb3ZlcnkgcGF0dGVybnM6IENsaWVudOKAkVNpZGUgRGlzY292ZXJ5IGFuZCBTZXJ2ZXLigJFTaWRlIERpc2NvdmVyeS4KCiMjIyBDbGllbnQtU2lkZSBTZXJ2aWNlIERpc2NvdmVyeQoKIVtpbWddKGRvY3MvbmV0ZmxpeC1ldXJla2Etc2VydmljZS1kaXNjb3ZlcnkucG5nKQoKW1JlZmVyZW5jZV0oaHR0cHM6Ly93d3cuY29kZXByaW1lcnMuY29tL2NsaWVudC1zaWRlLXNlcnZpY2UtZGlzY292ZXJ5LWluLXNwcmluZy1ib290LXdpdGgtbmV0ZmxpeC1ldXJla2EvKQoKV2hlbiB1c2luZyBDbGllbnQtU2lkZSBEaXNjb3ZlcnksIHRoZSBTZXJ2aWNlIENvbnN1bWVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgbmV0d29yayBsb2NhdGlvbnMgb2YgYXZhaWxhYmxlIHNlcnZpY2UgaW5zdGFuY2VzIGFuZCBsb2FkIGJhbGFuY2luZyByZXF1ZXN0cyBiZXR3ZWVuIHRoZW0uClRoZSBjbGllbnQgcXVlcmllcyB0aGUgU2VydmljZSBSZWdpc3Rlci4KVGhlbiB0aGUgY2xpZW50IHVzZXMgYSBsb2FkLWJhbGFuY2luZyBhbGdvcml0aG0gdG8gY2hvb3NlIG9uZSBvZiB0aGUgYXZhaWxhYmxlIHNlcnZpY2UgaW5zdGFuY2VzIGFuZCBwZXJmb3JtcyBhIHJlcXVlc3QuCgohW2ltZ10oZG9jcy9TZXJ2aWNlLURpc2NvdmVyeS1DbGllbnQtU2lkZS5wbmcpCgpHaXZpbmcgcmVzcG9uc2liaWxpdHkgZm9yIGNsaWVudC1zaWRlIGxvYWQgYmFsYW5jaW5nIGlzIGJvdGggYSBidXJkZW4gYW5kIGFuIGFkdmFudGFnZS4KSXTigJlzIGFuIGFkdmFudGFnZSBiZWNhdXNlIGl0IHNhdmVzIGFuIGV4dHJhIGhvcCB0aGF0IHdlIHdvdWxk4oCZdmUgaGFkIHdpdGggYSBkZWRpY2F0ZWQgbG9hZCBiYWxhbmNlci4KSXTigJlzIGEgZGlzYWR2YW50YWdlIGJlY2F1c2UgdGhlIFNlcnZpY2UgQ29uc3VtZXIgbXVzdCBpbXBsZW1lbnQgdGhlIGxvYWQgYmFsYW5jaW5nIGxvZ2ljLgoKV2UgY2FuIGFsc28gcG9pbnQgb3V0IHRoYXQgdGhlIFNlcnZpY2UgQ29uc3VtZXIgYW5kIHRoZSBTZXJ2aWNlIFJlZ2lzdHJ5IGFyZSBxdWl0ZSBjb3VwbGVkLgpUaGlzIG1lYW5zIHRoYXQgQ2xpZW50LVNpZGUgRGlzY292ZXJ5IGxvZ2ljIG11c3QgYmUgaW1wbGVtZW50ZWQgZm9yIGVhY2ggcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgYW5kIGZyYW1ld29yayB1c2VkIGJ5IHRoZSBTZXJ2aWNlIENvbnN1bWVycy4KCiMjIyBTZXJ2ZXItU2lkZSBTZXJ2aWNlIERpc2NvdmVyeQoKIVtpbWddKGRvY3MvU2VydmljZS1EaXNjb3ZlcnktU2VydmVyLVNpZGUucG5nKQoKVGhlIGFsdGVybmF0ZSBhcHByb2FjaCB0byBTZXJ2aWNlIERpc2NvdmVyeSBpcyB0aGUgU2VydmVyLVNpZGUgRGlzY292ZXJ5IG1vZGVsLAp3aGljaCB1c2VzIGFuIGludGVybWVkaWFyeSB0aGF0IGFjdHMgYXMgYSBMb2FkIEJhbGFuY2VyLgpUaGUgY2xpZW50IG1ha2VzIGEgcmVxdWVzdCB0byBhIHNlcnZpY2UgdmlhIGEgbG9hZCBiYWxhbmNlciB0aGF0IGFjdHMgYXMgYW4gb3JjaGVzdHJhdG9yLgpUaGUgbG9hZCBiYWxhbmNlciBxdWVyaWVzIHRoZSBTZXJ2aWNlIFJlZ2lzdHJ5IGFuZCByb3V0ZXMgZWFjaCByZXF1ZXN0IHRvIGFuIGF2YWlsYWJsZSBzZXJ2aWNlIGluc3RhbmNlLgoKSW4gdGhpcyBhcHByb2FjaCwgYSBkZWRpY2F0ZWQgYWN0b3IsIHRoZSBMb2FkIEJhbGFuY2VyLCBkb2VzIHRoZSBqb2Igb2YgbG9hZCBiYWxhbmNpbmcuClRoaXMgaXMgdGhlIG1haW4gYWR2YW50YWdlIG9mIHRoaXMgYXBwcm9hY2guCkluZGVlZCwgY3JlYXRpbmcgdGhpcyBsZXZlbCBvZiBhYnN0cmFjdGlvbiBtYWtlcyB0aGUgU2VydmljZSBDb25zdW1lciBsaWdodGVyLCBhcyBpdCBkb2VzbuKAmXQgaGF2ZSB0byBkZWFsIHdpdGggdGhlIGxvb2t1cCBwcm9jZWR1cmUuCkFzIGEgbWF0dGVyIG9mIGZhY3QsIHRoZXJl4oCZcyBubyBuZWVkIHRvIGltcGxlbWVudCB0aGUgZGlzY292ZXJ5IGxvZ2ljIHNlcGFyYXRlbHkgZm9yIGVhY2ggbGFuZ3VhZ2UgYW5kIGZyYW1ld29yayB0aGF0IHRoZSBTZXJ2aWNlIENvbnN1bWVyIHVzZXMuCgpPbiB0aGUgb3RoZXIgaGFuZCwgd2UgbXVzdCBzZXQgdXAgYW5kIG1hbmFnZSB0aGUgTG9hZCBCYWxhbmNlciwgdW5sZXNzIGl04oCZcyBhbHJlYWR5IHByb3ZpZGVkIGluIHRoZSBkZXBsb3ltZW50IGVudmlyb25tZW50LgoKIyMjIFdoYXQgSXMgU2VydmljZSBSZWdpc3RyeT8KClRoZSBTZXJ2aWNlIFJlZ2lzdGVyIGlzIGEgY3J1Y2lhbCBwYXJ0IG9mIHNlcnZpY2UgaWRlbnRpZmljYXRpb24uCkl04oCZcyBhIGRhdGFiYXNlIGNvbnRhaW5pbmcgdGhlIG5ldHdvcmsgbG9jYXRpb25zIG9mIHNlcnZpY2UgaW5zdGFuY2VzLgpBIFNlcnZpY2UgUmVnaXN0cnkgbXVzdCBiZSBoaWdobHkgYXZhaWxhYmxlIGFuZCB1cC10by1kYXRlLgpDbGllbnRzIGNhbiBjYWNoZSB0aGUgbmV0d29yayBwYXRocyBvYnRhaW5lZCBmcm9tIHRoZSBTZXJ2aWNlIFJlZ2lzdHJ5OyBob3dldmVyLCB0aGlzIGluZm9ybWF0aW9uIGV2ZW50dWFsbHkgYmVjb21lcyBvYnNvbGV0ZSwgYW5kIGNsaWVudHMgd29u4oCZdCByZWFjaCB0aGUgc2VydmljZSBpbnN0YW5jZXMuCkNvbnNlcXVlbnRseSwgYSBTZXJ2aWNlIFJlZ2lzdHJ5IGNvbnNpc3RzIG9mIGEgY2x1c3RlciBvZiBzZXJ2ZXJzIHRoYXQgdXNlIGEgcmVwbGljYXRpb24gcHJvdG9jb2wgdG8gbWFpbnRhaW4gY29uc2lzdGVuY3kuCgpTZXJ2aWNlIFJlZ2lzdHJhdGlvbiBvcHRpb25zOgotIFNlbGYtUmVnaXN0cmF0aW9uCi0gVGhpcmQtcGFydHkgUmVnaXN0cmF0aW9uCgojIyMgUmVmZXJlbmNlcwoKLSBodHRwczovL3d3dy5iYWVsZHVuZy5jb20vY3Mvc2VydmljZS1kaXNjb3ZlcnktbWljcm9zZXJ2aWNlcwoKIyMgU3ByaW5nIFJFU1QgRG9jcyB2cyBTcHJpbmdkb2MKClJlZmVyZW5jZTogaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL3NwcmluZy1yZXN0LWRvY3MtdnMtb3BlbmFwaQoKKipTcHJpbmcgUkVTVCBEb2NzKiogaXMgYSBmcmFtZXdvcmsgZGV2ZWxvcGVkIGJ5IHRoZSBTcHJpbmcgY29tbXVuaXR5IGluIG9yZGVyIHRvIGNyZWF0ZSBhY2N1cmF0ZSBkb2N1bWVudGF0aW9uIGZvciBSRVNUZnVsIEFQSXMuIFRoZSBvdXRwdXQgb2YgcnVubmluZyB0aGUgdGVzdHMgaXMgY3JlYXRlZCBhcyBBc2NpaURvYyBmaWxlcyB3aGljaCBjYW4gYmUgcHV0IHRvZ2V0aGVyIHVzaW5nIEFzY2lpZG9jdG9yIHRvIGdlbmVyYXRlIGFuIEhUTUwgcGFnZSBkZXNjcmliaW5nIG91ciBBUElzLgoKKipTcHJpbmdkb2MgT3BlbkFQSSBVSSoqIGNhbiBnZW5lcmF0ZSBVSSB1c2luZyBTd2FnZ2VyIFVJLgoKIyMgU3dhZ2dlciAyIHZzIE9wZW5BcGkzCgohW2ltZ10oZG9jcy9zd2FnZ2VyMi12cy1vcGVuYXBpMy5wbmcpCgoqKk9wZW5BUEkgMyBpcyB0aGUgc3VjY2Vzc29yIG9mIHRoZSB3aWRlbHkgdXNlZCBPcGVuQVBJL1N3YWdnZXIgMi4wIGZvcm1hdCwgZm9yIG1hY2hpbmUtcmVhZGFibGUgQVBJIGRlZmluaXRpb25zLioqCgpPcGVuQVBJIFNwZWNpZmljYXRpb24gKGZvcm1lcmx5IFN3YWdnZXIgU3BlY2lmaWNhdGlvbikgaXMgYW4gQVBJIGRlc2NyaXB0aW9uIGZvcm1hdCBmb3IgUkVTVCBBUElzLiBBbiBPcGVuQVBJIGZpbGUgYWxsb3dzIHlvdSB0byBkZXNjcmliZSB5b3VyIGVudGlyZSBBUEksIGluY2x1ZGluZzoKLSBBdmFpbGFibGUgZW5kcG9pbnRzICgvdXNlcnMpIGFuZCBvcGVyYXRpb25zIG9uIGVhY2ggZW5kcG9pbnQgKEdFVCAvdXNlcnMsIFBPU1QgL3VzZXJzKQotIE9wZXJhdGlvbiBwYXJhbWV0ZXJzIElucHV0IGFuZCBvdXRwdXQgZm9yIGVhY2ggb3BlcmF0aW9uCi0gQXV0aGVudGljYXRpb24gbWV0aG9kcwotIENvbnRhY3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UsIHRlcm1zIG9mIHVzZSBhbmQgb3RoZXIgaW5mb3JtYXRpb24uCgpBUEkgc3BlY2lmaWNhdGlvbnMgY2FuIGJlIHdyaXR0ZW4gaW4gWUFNTCBvciBKU09OLiBUaGUgZm9ybWF0IGlzIGVhc3kgdG8gbGVhcm4gYW5kIHJlYWRhYmxlIHRvIGJvdGggaHVtYW5zIGFuZCBtYWNoaW5lcy4gVGhlIGNvbXBsZXRlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBjYW4gYmUgZm91bmQgb24gR2l0SHViOiBPcGVuQVBJIDMuMCBTcGVjaWZpY2F0aW9uCgpTd2FnZ2VyIGlzIGEgc2V0IG9mIG9wZW4tc291cmNlIHRvb2xzIGJ1aWx0IGFyb3VuZCB0aGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIHRoYXQgY2FuIGhlbHAgeW91IGRlc2lnbiwgYnVpbGQsIGRvY3VtZW50IGFuZCBjb25zdW1lIFJFU1QgQVBJcy4KCi0gUmVmZXJlbmNlOiBodHRwczovL2Rldi50by9mcm9sb3ZkZXYvb3BlbmFwaS1zcGVjLXN3YWdnZXItdjItdnMtdjMtNG83YwotIE9mZmljaWFsIGRvY3VtZW50YXRpb246IGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMAoKIyMgU3ByaW5nIFJFU1QgRG9jcwoKU3ByaW5nIFJFU1QgRG9jcyBoZWxwcyB5b3UgdG8gZG9jdW1lbnQgUkVTVGZ1bCBzZXJ2aWNlcy4KCkl0IGNvbWJpbmVzIGhhbmQtd3JpdHRlbiBkb2N1bWVudGF0aW9uIHdyaXR0ZW4gd2l0aCBBc2NpaWRvY3RvciBhbmQgYXV0by1nZW5lcmF0ZWQgc25pcHBldHMgcHJvZHVjZWQgd2l0aCBTcHJpbmcgTVZDIFRlc3QuIFRoaXMgYXBwcm9hY2ggZnJlZXMgeW91IGZyb20gdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBkb2N1bWVudGF0aW9uIHByb2R1Y2VkIGJ5IHRvb2xzIGxpa2UgU3dhZ2dlci4KCkl0IGhlbHBzIHlvdSB0byBwcm9kdWNlIGRvY3VtZW50YXRpb24gdGhhdCBpcyBhY2N1cmF0ZSwgY29uY2lzZSwgYW5kIHdlbGwtc3RydWN0dXJlZC4gVGhpcyBkb2N1bWVudGF0aW9uIHRoZW4gYWxsb3dzIHlvdXIgdXNlcnMgdG8gZ2V0IHRoZSBpbmZvcm1hdGlvbiB0aGV5IG5lZWQgd2l0aCBhIG1pbmltdW0gb2YgZnVzcy4KClJlZjogaHR0cHM6Ly9zcHJpbmcuaW8vcHJvamVjdHMvc3ByaW5nLXJlc3Rkb2NzI292ZXJ2aWV3CgohW2ltZ10oZG9jcy9zcHJpbmdzLWRvY3MtZ2VuZXJhdGVkLWFwaS1kb2MucG5nKQoKRXhhbXBsZSBpbXBsZW1lbnRhdGlvbiAtIFtzcHJpbmctcHJvamVjdHMgLyBzcHJpbmctcmVzdGRvY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9zcHJpbmctcHJvamVjdHMvc3ByaW5nLXJlc3Rkb2NzL2Jsb2IvMi4wLngvc2FtcGxlcy9yZXN0LW5vdGVzLXNwcmluZy1kYXRhLXJlc3Qvc3JjL21haW4vYXNjaWlkb2MvYXBpLWd1aWRlLmFkb2MpCgojIyBBUEkgYXJjaGl0ZWN0dXJlIHN0eWxlcwoKIyMjIFJFU1QKClJFU1QsIG9yIFJFcHJlc2VudGF0aW9uYWwgU3RhdGUgVHJhbnNmZXIsIGlzIGFuIGFyY2hpdGVjdHVyYWwgc3R5bGUgZm9yIHByb3ZpZGluZyBzdGFuZGFyZHMgYmV0d2VlbiBjb21wdXRlciBzeXN0ZW1zIG9uIHRoZSB3ZWIsIG1ha2luZyBpdCBlYXNpZXIgZm9yIHN5c3RlbXMgdG8gY29tbXVuaWNhdGUgd2l0aCBlYWNoIG90aGVyLiBSRVNULWNvbXBsaWFudCBzeXN0ZW1zLCBvZnRlbiBjYWxsZWQgUkVTVGZ1bCBzeXN0ZW1zLCBhcmUgY2hhcmFjdGVyaXplZCBieSBob3cgdGhleSBhcmUgc3RhdGVsZXNzIGFuZCBzZXBhcmF0ZSB0aGUgY29uY2VybnMgb2YgY2xpZW50IGFuZCBzZXJ2ZXIuCgpBbiBhcmNoaXRlY3R1cmFsIHN0eWxlIGlzIGEgc2V0IG9mIHByaW5jaXBsZXMgYW5kIHBhdHRlcm5zIHRoYXQgZ3VpZGUgdGhlIGRlc2lnbiBvZiBzb2Z0d2FyZSBzeXN0ZW1zCgpLZXkgZmVhdHVyZXM6Ci0gVW5pZm9ybSBJbnRlcmZhY2UKICAtIEl0IGlzIGEga2V5IGNvbnN0cmFpbnQgdGhhdCBkaWZmZXJlbnRpYXRlIGJldHdlZW4gYSBSRVNUIEFQSSBhbmQgTm9uLVJFU1QgQVBJLiBJdCBzdWdnZXN0cyB0aGF0IHRoZXJlIHNob3VsZCBiZSBhbiB1bmlmb3JtIHdheSBvZiBpbnRlcmFjdGluZyB3aXRoIGEgZ2l2ZW4gc2VydmVyIGlycmVzcGVjdGl2ZSBvZiBkZXZpY2Ugb3IgdHlwZSBvZiBhcHBsaWNhdGlvbiAod2Vic2l0ZSwgbW9iaWxlIGFwcCkuCiAgICAtIFRoZXJlIGFyZSBmb3VyIGd1aWRlbGluZXMgcHJpbmNpcGxlIG9mIFVuaWZvcm0gSW50ZXJmYWNlIGFyZToKICAgICAgLSBSZXNvdXJjZS1CYXNlZDogSW5kaXZpZHVhbCByZXNvdXJjZXMgYXJlIGlkZW50aWZpZWQgaW4gcmVxdWVzdHMuIEZvciBleGFtcGxlOiBBUEkvdXNlcnMuCiAgICAgIC0gTWFuaXB1bGF0aW9uIG9mIFJlc291cmNlcyBUaHJvdWdoIFJlcHJlc2VudGF0aW9uczogQ2xpZW50IGhhcyByZXByZXNlbnRhdGlvbiBvZiByZXNvdXJjZSBhbmQgaXQgY29udGFpbnMgZW5vdWdoIGluZm9ybWF0aW9uIHRvIG1vZGlmeSBvciBkZWxldGUgdGhlIHJlc291cmNlIG9uIHRoZSBzZXJ2ZXIsIHByb3ZpZGVkIGl0IGhhcyBwZXJtaXNzaW9uIHRvIGRvIHNvLiBFeGFtcGxlOiBVc3VhbGx5IHVzZXIgZ2V0IGEgdXNlciBpZCB3aGVuIHVzZXIgcmVxdWVzdCBmb3IgYSBsaXN0IG9mIHVzZXJzIGFuZCB0aGVuIHVzZSB0aGF0IGlkIHRvIGRlbGV0ZSBvciBtb2RpZnkgdGhhdCBwYXJ0aWN1bGFyIHVzZXIuCiAgICAgIC0gU2VsZi1kZXNjcmlwdGl2ZSBNZXNzYWdlczogRWFjaCBtZXNzYWdlIGluY2x1ZGVzIGVub3VnaCBpbmZvcm1hdGlvbiB0byBkZXNjcmliZSBob3cgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZSBzbyB0aGF0IHNlcnZlciBjYW4gZWFzaWx5IGFuYWx5c2VzIHRoZSByZXF1ZXN0LgogICAgICAtIEh5cGVybWVkaWEgYXMgdGhlIEVuZ2luZSBvZiBBcHBsaWNhdGlvbiBTdGF0ZSAoSEFURU9BUyk6IEl0IG5lZWQgdG8gaW5jbHVkZSBsaW5rcyBmb3IgZWFjaCByZXNwb25zZSBzbyB0aGF0IGNsaWVudCBjYW4gZGlzY292ZXIgb3RoZXIgcmVzb3VyY2VzIGVhc2lseS4KLSBTdGF0ZWxlc3MKICAtIEl0IG1lYW5zIHRoYXQgdGhlIG5lY2Vzc2FyeSBzdGF0ZSB0byBoYW5kbGUgdGhlIHJlcXVlc3QgaXMgY29udGFpbmVkIHdpdGhpbiB0aGUgcmVxdWVzdCBpdHNlbGYgYW5kIHNlcnZlciB3b3VsZCBub3Qgc3RvcmUgYW55dGhpbmcgcmVsYXRlZCB0byB0aGUgc2Vzc2lvbi4KLSBDYWNoZWFibGUKICAtIEV2ZXJ5IHJlc3BvbnNlIHNob3VsZCBpbmNsdWRlIHdoZXRoZXIgdGhlIHJlc3BvbnNlIGlzIGNhY2hlYWJsZSBvciBub3QgYW5kIGZvciBob3cgbXVjaCBkdXJhdGlvbiByZXNwb25zZXMgY2FuIGJlIGNhY2hlZCBhdCB0aGUgY2xpZW50IHNpZGUuCi0gQ2xpZW50LVNlcnZlcgogIC0gUkVTVCBhcHBsaWNhdGlvbiBzaG91bGQgaGF2ZSBhIGNsaWVudC1zZXJ2ZXIgYXJjaGl0ZWN0dXJlLgotIExheWVyZWQgU3lzdGVtCiAgLSBBbiBhcHBsaWNhdGlvbiBhcmNoaXRlY3R1cmUgbmVlZHMgdG8gYmUgY29tcG9zZWQgb2YgbXVsdGlwbGUgbGF5ZXJzLiBFYWNoIGxheWVyIGRvZXNu4oCZdCBrbm93IGFueSB0aGluZyBhYm91dCBhbnkgbGF5ZXIgb3RoZXIgdGhhbiB0aGF0IG9mIGltbWVkaWF0ZSBsYXllciBhbmQgdGhlcmUgY2FuIGJlIGxvdCBvZiBpbnRlcm1lZGlhdGUgc2VydmVycyBiZXR3ZWVuIGNsaWVudCBhbmQgdGhlIGVuZCBzZXJ2ZXIuIEludGVybWVkaWFyeSBzZXJ2ZXJzIG1heSBpbXByb3ZlIHN5c3RlbSBhdmFpbGFiaWxpdHkgYnkgZW5hYmxpbmcgbG9hZC1iYWxhbmNpbmcgYW5kIGJ5IHByb3ZpZGluZyBzaGFyZWQgY2FjaGVzLgotIChPcHRpb25hbCkgQ29kZSBvbiBEZW1hbmQKLSBSRkMgc3BlY2lmaWNhdGlvbjoKICAtIDxodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS42PgotIFJlZmVyZW5jZXM6CiAgLSA8aHR0cHM6Ly93d3cuY29kZWNhZGVteS5jb20vYXJ0aWNsZS93aGF0LWlzLXJlc3Q+CiAgLSA8aHR0cHM6Ly93d3cuZ2Vla3Nmb3JnZWVrcy5vcmcvcmVzdC1hcGktYXJjaGl0ZWN0dXJhbC1jb25zdHJhaW50cy8+CgojIyMjIEdvb2QgcHJhY3Rpc2VzIGZvciBkZXNpZ25pbmcgUkVTVCBBUEkKCi0gUmV0dXJuIEpTT04gaW5zdGVhZCBvZiBtdWx0aXBsZSBmb3JtYXRzLgotIFVzZSBOb3VucyBpbnN0ZWFkIG9mIFZlcmJzLgogIC0gR0VUIC9ib29rcy8xMjMKLSBOYW1lIHRoZSBjb2xsZWN0aW9ucyB1c2luZyBQbHVyYWwgTm91bnMuCi0gVXNlIHJlc291cmNlIG5lc3RpbmcgdG8gc2hvdyByZWxhdGlvbnMgb3IgaGllcmFyY2h5LgotIEVycm9yIEhhbmRsaW5nIC8gU3RhbmRhcmQgSFRUUCBlcnJvciBjb2RlIGhhbmRsaW5nIGlzIGEgbXVzdC4KICAtIFNvIHRoZSBgcGVyZmVjdGAgZXJyb3IgbWVzc2FnZSB3b3VsZCBjb25zaXN0IG9mOgogICAgLSBIVFRQIFN0YXR1cyBDb2RlCiAgICAtIENvZGUgSUQgLSB3aGljaCBtYXkgYmUgYW4gaW50ZXJuYWwgcmVmZXJlbmNlLCB5b3UgbWF5IGFsc28gcHJvdmlkZSBhIGxpbmsgdG8gdGhlIEFQSSBkb2N1bWVudGF0aW9uIGNvbnRhaW5pbmcgYWxsIHRoZSBjb2RlIGlk4oCZcwogICAgLSBIdW1hbiByZWFkYWJsZSBtZXNzYWdlIHNob3J0bHkgZXhwbGFpbmluZyB0aGUgZXJyb3IgKGl0cyBjYXVzZSwgY29udGV4dCBvciBwb3NzaWJsZSByZW1lZHkpCi0gRmlsdGVyaW5nLCBzb3J0aW5nLCBwYWdpbmcsIGFuZCBmaWVsZCBzZWxlY3Rpb24KICAtIEZldyBvZiB0aGUgbW9zdCBpbXBvcnRhbnQgZmVhdHVyZXMgZm9yIGNvbnN1bWluZyBhbiBBUEkgYXJlIGZpbHRlcmluZywgc29ydGluZyBhbmQgcGFnaW5nLiBSZXNvdXJjZSBjb2xsZWN0aW9ucyBhcmUgb2Z0ZW50aW1lcyBlbm9ybW91cywgYW5kIHdoZW4gc29tZSBkYXRhIGhhcyB0byBiZSByZXRyaWV2ZWQgZnJvbSB0aGVtLCBpdCB3b3VsZCBiZSBzaW1wbHkgbm90IHZlcnkgZWZmaWNpZW50IHRvIGFsd2F5cyBnZXQgdGhlIGZ1bGwgbGlzdCBhbmQgYnJvd3NlIGl0IGZvciBzcGVjaWZpYyBpdGVtcy4KLSBBUEkgdmVyc2lvbmluZwogIC0gVmVyc2lvbmluZyB5b3VyIFJFU1QgQVBJIGlzIGEgZ29vZCBhcHByb2FjaCB0byB0YWtlIHJpZ2h0IGZyb20gdGhlIHN0YXJ0LiBUaGlzIHdpbGwgYWxsb3cgeW91IHRvIGludHJvZHVjZSBjaGFuZ2VzIHRvIHRoZSBkYXRhIHN0cnVjdHVyZSBvciBzcGVjaWZpYyBhY3Rpb25zLCBldmVuIGlmIHRoZXkgYXJlIGJyZWFraW5nL25vbi1iYWNrd2FyZCBjb21wYXRpYmxlIGNoYW5nZXMuIEF0IHNvbWUgcG9pbnQsIHlvdSBtaWdodCBlbmQgdXAgbWFuYWdpbmcgbW9yZSB0aGFuIG9uZSBBUEkgdmVyc2lvbnMuIEJ1dCB0aGlzIHdpbGwgYWxsb3cgeW91IHRvIGludHJvZHVjZSBtb2RpZmljYXRpb25zIGFuZCBpbXByb3ZlIHNlcnZpY2VzIG9uIG9uZSBoYW5kLCBhbmQgb24gYW5vdGhlciBub3QgdG8gbG9zZSBhIHBhcnQgb2YgeW91ciBBUEnigJlzIHVzZXJzIGFzIHNvbWUgb2YgdGhlbSBtaWdodCBiZSBlaXRoZXIgcmVsdWN0YW50IHRvIGNoYW5nZSAodGhlaXIgaW50ZWdyYXRpb25zKSBvciBhcmUganVzdCBzbG93IGFkb3B0ZXJzIHRoYXQgbmVlZCB0aW1lIGluIG9yZGVyIHRvIGludHJvZHVjZSBjaGFuZ2VzIG9uIHRoZWlyIHNpZGUuCi0gQVBJIERvY3VtZW50YXRpb24uCi0gQWx3YXlzIHVzZSBTU0wvVExTIHRvIGVuY3J5cHQgdGhlIGNvbW11bmljYXRpb24gd2l0aCB5b3VyIEFQSS4gTm8gZXhjZXB0aW9ucy4gUGVyaW9kLgotIFJlZmVyZW5jZXMKICAtIDxodHRwczovL3d3dy5tZXJpeHN0dWRpby5jb20vYmxvZy9iZXN0LXByYWN0aWNlcy1yZXN0LWFwaS1kZXZlbG9wbWVudC8+CgoKIyMjIyBJZGVtcG90ZW50IGFuZCBzYWZlIEhUVFAgbWV0aG9kcyBpbiBSRVNUIEFQSXMKCkEgbWV0aG9kIGlzIHNhZmUgaWYgaXQgZG9lcyBub3QgbW9kaWZ5IHRoZSBzZXJ2ZXIncyAoaW50ZXJuYWwpIHN0YXRlLiBTYWZlIG1ldGhvZHMgYXJlIG1ldGhvZHMgdGhhdCBjYW4gYmUgY2FjaGVkLCBwcmVmZXRjaGVkIHdpdGhvdXQgYW55IHJlcGVyY3Vzc2lvbnMgdG8gdGhlIHJlc291cmNlLgoKQSBtZXRob2QgaXMgaWRlbXBvdGVudCBpZiBjYWxsaW5nIGl0IG11bHRpcGxlIHRpbWVzIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgY2FsbGluZyBpdCBvbmNlIChpdCBkb2Vzbid0IGNoYW5nZSBhbnl0aGluZyBleHRlcm5hbGx5IChyZXNwb25zZSkpLgoKSWRlbXBvdGVudCBIVFRQIG1ldGhvZCBpcyBhIEhUVFAgbWV0aG9kIHRoYXQgY2FuIGJlIGNhbGxlZCBtYW55IHRpbWVzIHdpdGhvdXQgZGlmZmVyZW50IG91dGNvbWVzLiBUaGUgUFVUIGFuZCBERUxFVEUgbWV0aG9kcyBhcmUgZGVmaW5lZCB0byBiZSBpZGVtcG90ZW50LiBIb3dldmVyLCB0aGVyZSBpcyBhIGNhdmVhdCBvbiBERUxFVEUuIFRoZSBwcm9ibGVtIHdpdGggREVMRVRFLCB3aGljaCBpZiBzdWNjZXNzZnVsIHdvdWxkIG5vcm1hbGx5IHJldHVybiBhIDIwMCAoT0spIG9yIDIwNCAoTm8gQ29udGVudCksIHdpbGwgb2Z0ZW4gcmV0dXJuIGEgNDA0IChOb3QgRm91bmQpIG9uIHN1YnNlcXVlbnQgY2FsbHMsIHVubGVzcyB0aGUgc2VydmljZSBpcyBjb25maWd1cmVkIHRvICJtYXJrIiByZXNvdXJjZXMgZm9yIGRlbGV0aW9uIHdpdGhvdXQgYWN0dWFsbHkgZGVsZXRpbmcgdGhlbS4gSG93ZXZlciwgd2hlbiB0aGUgc2VydmljZSBhY3R1YWxseSBkZWxldGVzIHRoZSByZXNvdXJjZSwgdGhlIG5leHQgY2FsbCB3aWxsIG5vdCBmaW5kIHRoZSByZXNvdXJjZSB0byBkZWxldGUgaXQgYW5kIHJldHVybiBhIDQwNC4gSG93ZXZlciwgdGhlIHN0YXRlIG9uIHRoZSBzZXJ2ZXIgaXMgdGhlIHNhbWUgYWZ0ZXIgZWFjaCBERUxFVEUgY2FsbCwgYnV0IHRoZSByZXNwb25zZSBpcyBkaWZmZXJlbnQuIFtSZWZlcmVuY2VdKGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU2NzI5Nzg2L2RpZmZlcmVuY2UtYmV0d2Vlbi1pZGVtcG90ZW50LWFuZC1zYWZlLWh0dHAtbWV0aG9kcy1pbi1yZXN0LWFwaXMpCgpQQVRDSCBpcyBub3QgaWRlbXBvdGVudCB3aGVuIGl0IGludm9sdmVzIGluY3JlbWVudGFsIHVwZGF0ZXMgKGUuZy4sIGFkZGluZyBtb25leSwgYXBwZW5kaW5nIGRhdGEpLCBob3dldmVyIGl0IGNhbiBiZSBpZGVtcG90ZW50IGlmIGl0IHNldHMgc3BlY2lmaWMgdmFsdWVzIHJhdGhlciB0aGFuIG1vZGlmeWluZyB0aGVtIHJlbGF0aXZlbHkuCgpQVVQgaXMgYWx3YXlzIGlkZW1wb3RlbnQsIGFzIGl0IHJlcGxhY2VzIHRoZSBlbnRpcmUgcmVzb3VyY2UuCgp8IEhUVFAgTWV0aG9kIHwgSWRlbXBvdGVudCB8IFNhZmUgfAp8LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tfAp8IE9QVElPTlMgICAgIHwgeWVzICAgICAgICB8IHllcyAgfAp8IEdFVCAgICAgICAgIHwgeWVzICAgICAgICB8IHllcyAgfAogfCBIRUFEICAgICAgICB8IHllcyAgICAgICAgfCB5ZXMgIHwKIHwgUFVUICAgICAgICAgfCB5ZXMgICAgICAgIHwgbm8gICB8CnwgUE9TVCAgICAgICAgfCBubyAgICAgICAgIHwgbm8gICB8CiB8IERFTEVURSAgICAgIHwgeWVzICAgICAgICB8IG5vICAgfAogfCBQQVRDSCAgICAgICB8IG5vICAgICAgICAgfCBubyAgIHwKCgoKIyMjIyBBbiBleGFtcGxlIG9mIFJFU1QgQVBJIGRlc2lnbgoKUmVzb3VyY2Ugb2JqZWN0cyBvZnRlbiBleGhpYml0IGEgZnVuY3Rpb25hbCBoaWVyYXJjaHkgb3IgaW50ZXJyZWxhdGlvbi4gRm9yIGV4YW1wbGUsIGluIGFuIG9ubGluZSBzdG9yZSwgd2UgaGF2ZSAndXNlcnMnIGFuZCAnb3JkZXJzJy4gT3JkZXJzIGFyZSBhbHdheXMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgdXNlci4gSGVuY2UsIHdlIG1pZ2h0IHN0cnVjdHVyZSBvdXIgZW5kcG9pbnRzIGFzIGZvbGxvd3M6CgpgYGB0ZXh0Ci91c2VycyAgICAgICAgICAgICAgIDwtIGxpc3Qgb2YgdXNlcnMKL3VzZXJzLzEyMyAgICAgICAgICAgPC0gc3BlY2lmaWMgdXNlcgovdXNlcnMvMTIzL29yZGVycyAgICA8LSBsaXN0IG9mIG9yZGVycyBiZWxvbmdpbmcgdG8gYSBzcGVjaWZpYyB1c2VyCi91c2Vycy8xMjMvb3JkZXJzLzAwMDEgPC0gc3BlY2lmaWMgb3JkZXIgb2YgYSBzcGVjaWZpYyB1c2VyCmBgYAoKSXQncyBnZW5lcmFsbHkgYWR2aXNhYmxlIHRvIGxpbWl0IHRoZSBuZXN0aW5nIHRvIG9uZSBsZXZlbCBpbiBhIFJFU1QgQVBJLiBUb28gbWFueSBuZXN0ZWQgbGV2ZWxzIGNhbiBtYWtlIHRoZSBBUEkgc3RydWN0dXJlIGxlc3MgZWxlZ2FudC4gQWx0ZXJuYXRpdmVseSwgc2ltaWxhciByZXN1bHRzIGNhbiBvZnRlbiBiZSBhY2hpZXZlZCB0aHJvdWdoIGZpbHRlcmluZywgZS5nLiwgL29yZGVycz91c2VyPTEyMy4KCmBgYHRleHQKR0VUIC91c2Vycz9jb3VudHJ5PVVTQQpHRVQgL3VzZXJzP2NyZWF0aW9uX2RhdGU9MjAxOS0xMS0xMQpHRVQgL3VzZXJzP2NyZWF0aW9uX2RhdGU9MjAxOS0xMS0xMQpgYGAKYGBgdGV4dApHRVQgL3VzZXJzP3NvcnQ9YmlydGhkYXRlX2RhdGU6YXNjCkdFVCAvdXNlcnM/c29ydD1iaXJ0aGRhdGVfZGF0ZTpkZXNjCmBgYApgYGB0ZXh0CkdFVCAvdXNlcnM/bGltaXQ9MTAwCkdFVCAvdXNlcnM/b2Zmc2V0PTIKYGBgCmBgYHRleHQKR0VUIC91c2Vycz9jb3VudHJ5PVVTQSZjcmVhdGlvbl9kYXRlPTIwMTktMTEtMTEmc29ydD1iaXJ0aGRhdGVfZGF0ZTpkZXNjJmxpbWl0PTEwMCZvZmZzZXQ9MgpgYGAKCiMjIyMgUmljaGFyZHNvbiBtYXR1cml0eSBtb2RlbAoKUmVmZXJlbmNlOiBodHRwczovL21hcnRpbmZvd2xlci5jb20vYXJ0aWNsZXMvcmljaGFyZHNvbk1hdHVyaXR5TW9kZWwuaHRtbAoKYGBgdGV4dApHbG9yeSBvZiBSRVNUCuKshgp8CkxldmVsIDM6IEh5cGVybWVkaWEgQ29udHJvbHMKfApMZXZlbCAyOiBIVFRQIFZlcmJzCnwKTGV2ZWwgMTogUmVzb3VyY2VzCnwKTGV2ZWwgMDogVGhlIFN3YW1wIG9mIFBPWApgYGAKCi0gTGV2ZWwgMDogVGhlIFN3YW1wIG9mIFBPWAogIC0gQXQgdGhpcyBsZXZlbCwgdGhlIEFQSSB1c2VzIEhUVFAgYXMgYSB0cmFuc3BvcnQgbWVjaGFuaXNtIGZvciByZW1vdGUgaW50ZXJhY3Rpb25zIGJ1dCBkb2VzIG5vdCB1dGlsaXplIHRoZSBmZWF0dXJlcyBvZiBIVFRQLgogIC0gT2Z0ZW4sIEFQSXMgYXQgdGhpcyBsZXZlbCBleHBvc2UgYSBzaW5nbGUgZW5kcG9pbnQsIGFuZCBpbnRlcmFjdGlvbnMgYXJlIGhhbmRsZWQgdGhyb3VnaCBhIHNpbmdsZSBtZXRob2QgKGUuZy4sIFBPU1QpIHdpdGggcGF5bG9hZHMgdGhhdCBlbmNhcHN1bGF0ZSBib3RoIGFjdGlvbiBhbmQgZGF0YS4KICAtIFRoZSBjb21tdW5pY2F0aW9uIGlzIHR5cGljYWxseSBpbiBYTUwgb3IgSlNPTiBmb3JtYXQgYnV0IGxhY2tzIHN0cnVjdHVyZSBhbmQgY2xlYXIgZGVsaW5lYXRpb24gb2YgcmVzb3VyY2VzLgotIExldmVsIDE6IFJlc291cmNlcwogIC0gVGhpcyBsZXZlbCBpbnRyb2R1Y2VzIHRoZSBjb25jZXB0IG9mIHJlc291cmNlcywgd2l0aCBlYWNoIHJlc291cmNlIGhhdmluZyBpdHMgdW5pcXVlIFVSSS4KICAtIFJlc291cmNlcyBjYW4gYmUgYWNjZXNzZWQgdmlhIGRpZmZlcmVudCBVUklzLCBtYWtpbmcgdGhlIEFQSSBtb3JlIHN0cnVjdHVyZWQgYW5kIG5hdmlnYWJsZS4KICAtIFdoaWxlIHRoZSByZXNvdXJjZXMgYXJlIGlkZW50aWZpZWQsIHRoZSBpbnRlcmFjdGlvbnMgc3RpbGwgZG8gbm90IGZ1bGx5IGxldmVyYWdlIEhUVFAgbWV0aG9kcy4KLSBMZXZlbCAyOiBIVFRQIFZlcmJzCiAgLSBBdCB0aGlzIGxldmVsLCB0aGUgQVBJIHVzZXMgSFRUUCBtZXRob2RzIChHRVQsIFBPU1QsIFBVVCwgREVMRVRFKSBhcHByb3ByaWF0ZWx5LgogICAgLSBFYWNoIEhUVFAgbWV0aG9kIGlzIHVzZWQgdG8gcGVyZm9ybSBzcGVjaWZpYyBhY3Rpb25zIG9uIHJlc291cmNlcywgZm9sbG93aW5nIFJFU1QgcHJpbmNpcGxlcy4KICAgICAgLSBUaGlzIGxldmVsIGJyaW5ncyBtb3JlIHN0YW5kYXJkaXphdGlvbiBhbmQgYSBjbGVhcmVyIGludGVyYWN0aW9uIG1vZGVsIHdpdGggcmVzb3VyY2VzLgotIExldmVsIDM6IEh5cGVybWVkaWEgQ29udHJvbHMgKEhBVEVPQVMpCiAgLSBUaGUgZmluYWwgbGV2ZWwgaW50cm9kdWNlcyBIeXBlcm1lZGlhIGFzIHRoZSBFbmdpbmUgb2YgQXBwbGljYXRpb24gU3RhdGUgKEhBVEVPQVMpLgogIC0gVGhlIEFQSSBwcm92aWRlcyBoeXBlcm1lZGlhIGxpbmtzIGluIHRoZSByZXNwb25zZXMsIGd1aWRpbmcgY2xpZW50cyBvbiBhdmFpbGFibGUgYWN0aW9ucyBkeW5hbWljYWxseS4KICAtIFRoaXMgbGV2ZWwgb2ZmZXJzIHRoZSBtb3N0IFJFU1RmdWwgZXhwZXJpZW5jZSwgYWxsb3dpbmcgY2xpZW50cyB0byBkaXNjb3ZlciBhbmQgbmF2aWdhdGUgdGhlIEFQSSBpbnRlcmFjdGl2ZWx5IHRocm91Z2ggbGlua3MuCgojIyMjIE1pc2NlbGxhbmlvcwoKLSBDYW4gd2UgdXNlIFJFU1QgaW4gU09BIGluc3RlYWQgb2YgU09BUD8KICAtIFllcy4gU09BUCBhbmQgUkVTVCDigJMgYm90aCBwcm92aWRlIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIFNPQSBiYXNlZCBhcHBsaWNhdGlvbgotIERvZXMgUkVTVCBBcGkgaGF2ZSB0byBiZSBIVFRQIHByb3RvY29sIGJhc2VkPwogIC0gUkVTVCBpc24ndCBhbHdheXMgbGlua2VkIHRvIEhUVFAuIFlvdSBjYW4gdXNlIG90aGVyIHRyYW5zZmVyIHByb3RvY29scywgc3VjaCBhcyBGVFAsIFNNVFAsIGV0Yy4gYW5kIHlvdXIgQVBJIGNhbiBzdGlsbCBiZSBSRVNUZnVsLiBBbnkgQVBJIHRoYXQgdXNlcyBIVFRQIGFzIGl0cyB0cmFuc2ZlciBwcm90b2NvbCBpcyByZWZlcnJlZCB0byBhcyBhbiBIVFRQIEFQSS4KICAtIFJlZjogPGh0dHBzOi8vaGV2b2RhdGEuY29tL2xlYXJuL2h0dHAtYXBpLXZzLXJlc3QtYXBpLz4KLSBIb3cgdG8gaW1wbGVtZW50IFBBVENIIChwYXJ0aWFsIHVwZGF0ZSk/CiAgLSBTZW5kIGEgbWFwIG9mIGNoYW5nZWQgYXR0cmlidXRlcyBvbmx5CiAgICAtIHByaXZhdGUgTWFwPFN0cmluZywgT2JqZWN0PiBjaGFuZ2VkQXR0cnMgPSBuZXcgSGFzaE1hcDw+KCk7CiAgLSBVc2UgR1NPTiBpbnN0ZWFkIG9mIEphY2tzb24gdG8gZGlzdGluZ3Vpc2ggbnVsbCBmaWVsZHMuCiAgLSBJbnN0ZWFkIG9mIEphY2tzb24gY2xhc3MgbWFwcGluZywgdXNlIEpzb25Ob2RlIGFuZCBtYW51YWxseSBjaGVjayBrZXlzIGFuZCBhc3NvY2lhdGUgd2l0aCBhdHRyaWJ1dGUuIElmIGEgY2xhc3MgZmllbGQgaXMgbWlzc2luZywgaXQgbWVhbnMgaXQgd2FzIG5vdCBjaGFuZ2VkLgogIC0gQWRkIGEgYm9vbGVhbiB0byBlYWNoIGF0dHJpYnV0ZSBlLmcuCiAgICAtIHByaXZhdGUgU3RyaW5nIGZpcnN0TmFtZTsKICAgIC0gcHJpdmF0ZSBib29sZWFuIGlzRmlyc3ROYW1lRGlydHk7CiAgLSBSZWY6IDxodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zODQyNDM4My9ob3ctdG8tZGlzdGluZ3Vpc2gtYmV0d2Vlbi1udWxsLWFuZC1ub3QtcHJvdmlkZWQtdmFsdWVzLWZvci1wYXJ0aWFsLXVwZGF0ZXMtaW4tcz4KCiMjIyBnUlBDCgpSUEMgaXMgYSBnZW5lcmljIHByb3RvY29sIGZvciByZW1vdGUgcHJvY2VkdXJlIGNhbGxzLCB3aGlsZSBnUlBDIGlzIGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgUlBDIHRoYXQgdXNlcyB0aGUgSFRUUC8yIHByb3RvY29sIGZvciBjb21tdW5pY2F0aW9uLgpBbHNvLCBSUEMgdXNlcyBhIGJpbmFyeSBlbmNvZGluZyBmb3JtYXQgdG8gdHJhbnNtaXQgZGF0YSwgd2hpbGUgZ1JQQyBzdXBwb3J0cyBzZXZlcmFsIHNlcmlhbGl6YXRpb24gZm9ybWF0cywgaW5jbHVkaW5nIFByb3RvY29sIEJ1ZmZlcnMsIEpTT04sIGFuZCBYTUwuCgpUaGUgZ1JQQyBwcm9ncmFtbWluZyBBUEkgaW4gbW9zdCBsYW5ndWFnZXMgY29tZXMgaW4gYm90aCBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIGZsYXZvcnMuCgohW2ltZ10oZG9jcy9ncnBjXzA0MDEucG5nKQoKIVtncnBjXShkb2NzL2dycGMucG5nKQoKUmVmZXJlbmNlczoKLSBodHRwczovL2dycGMuaW8vZG9jcy93aGF0LWlzLWdycGMvaW50cm9kdWN0aW9uLwotIGh0dHBzOi8vd3d3Lm9yZWlsbHkuY29tL2xpYnJhcnkvdmlldy9ncnBjLXVwLWFuZC85NzgxNDkyMDU4MzI4L2NoMDQuaHRtbAoKLS0tCgpQcm90b2NvbCBidWZmZXJzIGFyZSBhIGNvbWJpbmF0aW9uIG9mIHRoZSBkZWZpbml0aW9uIGxhbmd1YWdlIChjcmVhdGVkIGluIC5wcm90byBmaWxlcyksCnRoZSBjb2RlIHRoYXQgdGhlIHByb3RvIGNvbXBpbGVyIGdlbmVyYXRlcyB0byBpbnRlcmZhY2Ugd2l0aCBkYXRhLCBsYW5ndWFnZS1zcGVjaWZpYyBydW50aW1lIGxpYnJhcmllcywKYW5kIHRoZSBzZXJpYWxpemF0aW9uIGZvcm1hdCBmb3IgZGF0YSB0aGF0IGlzIHdyaXR0ZW4gdG8gYSBmaWxlIChvciBzZW50IGFjcm9zcyBhIG5ldHdvcmsgY29ubmVjdGlvbikuCgpBZHZhbnRhZ2VzIG9mIHVzaW5nIHByb3RvY29sIGJ1ZmZlcnMgaW5jbHVkZToKLSBDb21wYWN0IGRhdGEgc3RvcmFnZQotIEZhc3QgcGFyc2luZwotIEF2YWlsYWJpbGl0eSBpbiBtYW55IHByb2dyYW1taW5nIGxhbmd1YWdlcwotIE9wdGltaXplZCBmdW5jdGlvbmFsaXR5IHRocm91Z2ggYXV0b21hdGljYWxseS1nZW5lcmF0ZWQgY2xhc3NlcwoKIVtpbWddKGRvY3MvcHJvdG9jb2wtYnVmZmVycy1jb25jZXB0cy5wbmcpCgpSZWY6IGh0dHBzOi8vcHJvdG9idWYuZGV2L292ZXJ2aWV3LwoKIyMjIyBNb3JlIGFib3V0IFJQQwoKUmVtb3RlIFByb2NlZHVyZSBDYWxsIChSUEMpIGlzIGEgcHJvdG9jb2wgdGhhdCBvbmUgcHJvZ3JhbSBjYW4gdXNlIHRvIHJlcXVlc3QgYSBzZXJ2aWNlIGZyb20gYSBwcm9ncmFtIGxvY2F0ZWQgaW4gYW5vdGhlciBjb21wdXRlciBvbiBhIG5ldHdvcmsgd2l0aG91dCBoYXZpbmcgdG8gdW5kZXJzdGFuZCB0aGUgbmV0d29yaydzIGRldGFpbHMuIEEgcHJvY2VkdXJlIGNhbGwgaXMgYWxzbyBzb21ldGltZXMga25vd24gYXMgYSBmdW5jdGlvbiBjYWxsIG9yIGEgc3Vicm91dGluZSBjYWxsLgoKUlBDIHVzZXMgdGhlIGNsaWVudC1zZXJ2ZXIgbW9kZWwuIFRoZSByZXF1ZXN0aW5nIHByb2dyYW0gaXMgYSBjbGllbnQgYW5kIHRoZSBzZXJ2aWNlIHByb3ZpZGluZyBwcm9ncmFtIGlzIHRoZSBzZXJ2ZXIuIExpa2UgYSByZWd1bGFyIG9yIGxvY2FsIHByb2NlZHVyZSBjYWxsLCBhbiBSUEMgaXMgYSBzeW5jaHJvbm91cyBvcGVyYXRpb24gcmVxdWlyaW5nIHRoZSByZXF1ZXN0aW5nIHByb2dyYW0gdG8gYmUgc3VzcGVuZGVkIHVudGlsIHRoZSByZXN1bHRzIG9mIHRoZSByZW1vdGUgcHJvY2VkdXJlIGFyZSByZXR1cm5lZC4gSG93ZXZlciwgdGhlIHVzZSBvZiBsaWdodHdlaWdodCBwcm9jZXNzZXMgb3IgdGhyZWFkcyB0aGF0IHNoYXJlIHRoZSBzYW1lIGFkZHJlc3Mgc3BhY2UgYWxsb3dzIG11bHRpcGxlIFJQQ3MgdG8gYmUgcGVyZm9ybWVkIGNvbmN1cnJlbnRseS4KCldoZW4gcHJvZ3JhbSBzdGF0ZW1lbnRzIHRoYXQgdXNlIFJQQyBmcmFtZXdvcmsgYXJlIGNvbXBpbGVkIGludG8gYW4gZXhlY3V0YWJsZSBwcm9ncmFtLCBhIHN0dWIgaXMgaW5jbHVkZWQgaW4gdGhlIGNvbXBpbGVkIGNvZGUgdGhhdCBhY3RzIGFzIHRoZSByZXByZXNlbnRhdGl2ZSBvZiB0aGUgcmVtb3RlIHByb2NlZHVyZSBjb2RlLiBXaGVuIHRoZSBwcm9ncmFtIGlzIHJ1biBhbmQgdGhlIHByb2NlZHVyZSBjYWxsIGlzIGlzc3VlZCwgdGhlIHN0dWIgcmVjZWl2ZXMgdGhlIHJlcXVlc3QgYW5kIGZvcndhcmRzIGl0IHRvIGEgY2xpZW50IHJ1bnRpbWUgcHJvZ3JhbSBpbiB0aGUgbG9jYWwgY29tcHV0ZXIuCgpSUEMgcHJvdmlkZXMgYm90aCBibG9ja2luZyAoc3luY2hyb25vdXMpIGFuZCBub24tYmxvY2tpbmcgKGFzeW5jaHJvbm91cykgY2FsbHMuCgohW3JwY10oZG9jcy9ycGMuanBnKQoKUmVmOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80OTYyODk0My9ycGMtcmVtb3RlLXByb2NlZHVyZS1jYWxsLXByb2Nlc3MKCiMjIyMgUlBDIHZzIGdSUEMKCkluIGNvbnRyYXN0IHRvIFJFU1QgYW5kIFJQQywgZ1JQQyBvdmVyY29tZXMgaXNzdWVzIHJlbGF0ZWQgdG8gc3BlZWQgYW5kIHdlaWdodCDigJQgYW5kIG9mZmVycyBncmVhdGVyIGVmZmljaWVuY3kgd2hlbiBzZW5kaW5nIG1lc3NhZ2VzIOKAlCBieSB1c2luZyB0aGUgUHJvdG9idWYgKHByb3RvY29sIGJ1ZmZlcnMpIG1lc3NhZ2luZyBmb3JtYXQuIEhlcmUgYXJlIGEgZmV3IGRldGFpbHMgYWJvdXQgUHJvdG9idWY6Ci0gUGxhdGZvcm0gYW5kIGxhbmd1YWdlIGFnbm9zdGljIGxpa2UgSlNPTgogIFNlcmlhbGl6ZXMgYW5kIGRlc2VyaWFsaXplcyBzdHJ1Y3R1cmVkIGRhdGEgdG8gY29tbXVuaWNhdGUgdmlhIGJpbmFyeQotIEFzIGEgaGlnaGx5IGNvbXByZXNzZWQgZm9ybWF0LCBpdCBkb2VzbuKAmXQgYWNoaWV2ZSBKU09O4oCZcyBsZXZlbCBvZiBodW1hbiByZWFkYWJpbGl0eQotIFNwZWVkcyB1cCBkYXRhIHRyYW5zbWlzc2lvbiBieSByZW1vdmluZyBtYW55IHJlc3BvbnNpYmlsaXRpZXMgSlNPTiBtYW5hZ2VzIHNvIGl0IGNhbiBmb2N1cyBzdHJpY3RseSBvbiBzZXJpYWxpemluZyBhbmQgZGVzZXJpYWxpemluZyBkYXRhCi0gRGF0YSB0cmFuc21pc3Npb24gaXMgZmFzdGVyIGJlY2F1c2UgUHJvdG9idWYgcmVkdWNlcyB0aGUgc2l6ZSBvZiBtZXNzYWdlcyBhbmQgc2VydmVzIGFzIGEgbGlnaHR3ZWlnaHQgbWVzc2FnaW5nIGZvcm1hdAoKUmVmOiBodHRwczovL2Jsb2cuZHJlYW1mYWN0b3J5LmNvbS9ncnBjLXZzLXJlc3QtaG93LWRvZXMtZ3JwYy1jb21wYXJlLXdpdGgtdHJhZGl0aW9uYWwtcmVzdC1hcGlzLyM6fjp0ZXh0PUluJTIwY29udHJhc3QlMjB0byUyMFJFU1QlMjBhbmQsYW5kJTIwbGFuZ3VhZ2UlMjBhZ25vc3RpYyUyMGxpa2UlMjBKU09OCgojIyMjIEpTT04tUlBDCgpKU09OLVJQQyB1c2VzIHRoZSBsaWdodHdlaWdodCBKU09OIGZvcm1hdCB0byBlbmNvZGUgZGF0YSwgd2hpbGUgWE1MLVJQQyB1c2VzIHRoZSBtb3JlIHZlcmJvc2UgWE1MIGZvcm1hdC4gVXNpbmcgSlNPTi1SUEMsIGFuIGFwcGxpY2F0aW9uIGNhbiBzZW5kIGEgbWVzc2FnZSB0byBhbm90aGVyIGFwcCByZXF1ZXN0aW5nIHRoYXQgaXQgcGVyZm9ybSBhIGZ1bmN0aW9uLCBzdWNoIGFzIHRoZSBwcm9jZXNzaW5nIG9mIGRhdGEuIFdpdGggSlNPTuKAmXMgc3Ryb25nIGNhcGFiaWxpdGllcyBpbiBkYXRhIGRlc2NyaXB0aW9uLCB0aGlzIHVzdWFsbHkgd29ya3Mgd2VsbC4gSXTigJlzIGFuIG9wZW4sIGdsb2JhbGx5IGlkZW50aWZpZWQgcHJvdG9jb2wuCgpBIEpTT04tUlBDIHJlcXVlc3QgbWVzc2FnZSBjYW4gY29udGFpbiB0aHJlZSBwb3NzaWJsZSBlbGVtZW50czogVGhlIG1ldGhvZCwgd2hpY2ggaXMgYSBzdHJpbmcgdGhhdCBuYW1lcyB0aGUgbWV0aG9kIHRvIGJlIGludm9rZWQ7IHBhcmFtcywgd2hpY2ggYXJlIG9iamVjdHMgb3IgYXJyYXlzIG9mIHZhbHVlcyB0aGF0IGdldCBwYXNzZWQgYWxvbmcgYXMgcGFyYW1ldGVycyB0byB0aGUgZGVzdGluYXRpb24gYXBwOyBhbmQgaWQsIGEgc3RyaW5nIG9yIG51bWJlciB0aGF0IG1hdGNoZXMgdGhlIHJlc3BvbnNlIHdpdGggdGhlIHJlcXVlc3QgdGhhdCBpdCBpcyByZXBseWluZyB0by4KClRoZSBhcHAgdGhhdCByZWNlaXZlcyB0aGUgSlNPTi1SUEMgcmVxdWVzdCBwcm9jZWVkcyB0byBpc3N1ZSBhIHJlc3BvbnNlLiBUaGUgcmVzcG9uc2UgaW5jbHVkZXMgYSByZXN1bHQsIHdoaWNoIGlzIHRoZSBkYXRhIGdlbmVyYXRlZCBieSB0aGUgaW52b2tlZCBtZXRob2QsIGFuZCB0aGUgcmVxdWVzdC9yZXNwb25zZSBJRC4gSXQgbWF5IGFsc28gaW5jbHVkZSBhbiBlcnJvciBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgcmVjZWl2aW5nIGFwcC4KClJlZjogaHR0cHM6Ly9ub25hbWVzZWN1cml0eS5jb20vbGVhcm4td2hhdC1pcy1qc29uLXJwYwoKIyMjIyBnUlBDL1JQQyB2cyBSRVNUCgotIFJFU1QgQVBJIElzIEFuIEFyY2hpdGVjdHVyYWwgU3R5bGUsIFdoaWxlIFJQQyBJcyBBIFByb3RvY29sCi0gUkVTVCBVc2VzIEEgVW5pZm9ybSBJbnRlcmZhY2UsIFdoaWxlIFJQQyBEb2VzIE5vdC4KLSBSRVNUIElzIFN0YXRlbGVzcywgV2hpbGUgUlBDIElzIFN0YXRlZnVsLgoKYGBgClBsYWNpbmcgYW4gT3JkZXI6CgpSUEM6IGh0dHA6Ly9NeVJlc3RhdXJhbnQ6ODA4MC9PcmRlcnMvUGxhY2VPcmRlciAoUE9TVDoge1RhY29zIG9iamVjdH0pClJFU1Q6IGh0dHA6Ly9NeVJlc3RhdXJhbnQ6ODA4MC9PcmRlcnMvT3JkZXI/T3JkZXJOdW1iZXI9YXNkZiAoUE9TVDoge1RhY29zIG9iamVjdH0pCgpSZXRyaWV2aW5nIGFuIE9yZGVyOgoKUlBDOiBodHRwOi8vTXlSZXN0YXVyYW50OjgwODAvT3JkZXJzL0dldE9yZGVyP09yZGVyTnVtYmVyPWFzZGYgKEdFVCkKUkVTVDogaHR0cDovL015UmVzdGF1cmFudDo4MDgwL09yZGVycy9PcmRlcj9PcmRlck51bWJlcj1hc2RmIChHRVQpCgpVcGRhdGluZyBhbiBPcmRlcjoKClJQQzogaHR0cDovL015UmVzdGF1cmFudDo4MDgwL09yZGVycy9VcGRhdGVPcmRlciAoUFVUOiB7UGluZWFwcGxlIFRhY29zIG9iamVjdH0pClJFU1Q6IGh0dHA6Ly9NeVJlc3RhdXJhbnQ6ODA4MC9PcmRlcnMvT3JkZXI/T3JkZXJOdW1iZXI9YXNkZiAoUFVUOiB7UGluZWFwcGxlIFRhY29zIG9iamVjdH0pCmBgYAoKRG9lcyBSRVNUIGNhbiB1c2UgYmluYXJ5IGRhdGEgaW5zdGVhZCBvZiB0ZXh0PwpZZXMgYWJzb2x1dGVseS4gV2hlbiB5b3UgZGlzcGxheSBhIHdlYiBwYWdlLCB5b3VyIGJyb3dzZXIgbWFrZXMgYSBHRVQgcmVxdWVzdCBmb3IgZWFjaCBpbWFnZSBvbiB0aGUgcGFnZSwgYW5kIHJlY2VpdmVzIGJpbmFyeSBkYXRhIGluIHJldHVybi4KClJlZmVyZW5jZXM6Ci0gaHR0cHM6Ly9uYXJhc2ltbWFudGVjaC5jb20vYS1iZXR0ZXItd2F5LXRvLWJ1aWxkLWFwaXMtcmVzdC1hcGktdnMtcnBjLWFuZC1ncnBjLXZzLWdyYXBocWwvCi0gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjY4MzA0MzEvd2ViLXNlcnZpY2UtZGlmZmVyZW5jZXMtYmV0d2Vlbi1yZXN0LWFuZC1ycGMKLSBodHRwczovL2F3cy5hbWF6b24uY29tL2NvbXBhcmUvdGhlLWRpZmZlcmVuY2UtYmV0d2Vlbi1ycGMtYW5kLXJlc3QvCgojIyMgR3JhcGhRTAoKR3JhcGhRTCBpcyBhIHF1ZXJ5IGxhbmd1YWdlIGFuZCBzZXJ2ZXItc2lkZSBydW50aW1lIGZvciBhcHBsaWNhdGlvbiBwcm9ncmFtbWluZyBpbnRlcmZhY2VzIChBUElzKSB0aGF0IHByaW9yaXRpemVzCmdpdmluZyBjbGllbnRzIGV4YWN0bHkgdGhlIGRhdGEgdGhleSByZXF1ZXN0IGFuZCBubyBtb3JlLiBBcyBhbiBhbHRlcm5hdGl2ZSB0byBSRVNULCBHcmFwaFFMIGxldHMgZGV2ZWxvcGVycyBjb25zdHJ1Y3QKcmVxdWVzdHMgdGhhdCBwdWxsIGRhdGEgZnJvbSBtdWx0aXBsZSBkYXRhIHNvdXJjZXMgaW4gYSBzaW5nbGUgQVBJIGNhbGwuCgpXaGVuIGRldmVsb3BpbmcgYSBHcmFwaFFMIEFQSSB0aGVyZSBhcmUgdHdvIHBvcHVsYXIgYXBwcm9hY2hlcyB0byBjcmVhdGUgdGhlIEdyYXBoUUwgU2NoZW1hOiB0aGUgc2NoZW1hLWZpcnN0IGFwcHJvYWNoIGFuZCB0aGUgY29kZS1maXJzdC4gVGhlIHNjaGVtYS1maXJzdCBjb25zaXN0cyBvZiBidWlsZGluZyB0aGUgU2NoZW1hIHVzaW5nIHRoZSBTY2hlbWEgRGVmaW5pdGlvbiBMYW5ndWFnZSB3aGlsZSB0aGUgY29kZS1maXJzdCB1c2VzIGEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdG8gY3JlYXRlIHRoZSBTY2hlbWEuCgpSZWZlcmVuY2VzOgotIGh0dHBzOi8vd3d3LnJlZGhhdC5jb20vZW4vdG9waWNzL2FwaS93aGF0LWlzLWdyYXBocWwKLSBodHRwczovL2dyYXBocWwub3JnLwotIGh0dHBzOi8vZm9ybWlkYWJsZS5jb20vYmxvZy8yMDIxL2dyYXBocWwtd2l0aC1uZXh1cy8KCiFbR3JhcGhxbF0oLi9kb2NzL0dyYXBoUUxfQXJjaGl0ZWN0dXJlLTEwMjR4NDYxLnBuZykKCiFbR3JhcGhxbF0oLi9kb2NzL3Jlc3QtdnMtZ3JhcGhxbC5wbmcpCgotLS0KCkRldmVsb3BtZW50IHJlbWFya3M6Ci0gaXQncyBub3QgcG9zc2libGUgdG8gbm90IHJldHVybiBhbnl0aGluZwogIC0gaHR0cHM6Ly9naXRodWIuY29tL2FyZGF0YW4vZ3JhcGhxbC10b29scy9pc3N1ZXMvMjc3CiAgLSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80NDczNzA0My9pcy1pdC1wb3NzaWJsZS10by1ub3QtcmV0dXJuLWFueS1kYXRhLXdoZW4tdXNpbmctYS1ncmFwaHFsLW11dGF0aW9uCi0geW91IGFsd2F5cyBuZWVkIHRvIHNwZWNpZnkgd2hpY2ggZGF0YSB5b3Ugd2FudCBiYWNrIHdoaWxlIGRvaW5nIHF1ZXJpZXMKCiMjIyMgQWx0YWlyIHZzIEdyYXBoaVFMIHZzIFZveWFnZXIgdnMgUGxheWdyb3VuZAoKQWxsIG1lbnRpb25lZCBhYm92ZSBjYW4gYmUgcHJpbWFyaWx5IGNsYXNzaWZpZWQgYXMgIkdyYXBoUUwiIHRvb2xzLgoKLSBHcmFwaGlRTCBpcyBhbiBpbi1icm93c2VyIElERSBmb3IgZXhwbG9yaW5nIEdyYXBoUUwuIFJlZjogaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZ3JhcGhxbC12b3lhZ2VyCi0gQWx0YWlyIGlzIGEgR3JhcGhRTCBBUEkgY2xpZW50IHRvIGV4cGxvcmUgQVBJcy4gQWx0YWlyIHByb3ZpZGVzIGEgZ29vZCBhbHRlcm5hdGl2ZSB0byB0cmFkaXRpb25hbCBHcmFwaGlRTCBhbmQgUGxheWdyb3VuZC4KLSBHcmFwaFFMIFZveWFnZXIgcmVwcmVzZW50cyBhbnkgR3JhcGhRTCBBUEkgYXMgYW4gaW50ZXJhY3RpdmUgdmlzdWFsLgoKQmVsb3cgdGhlcmUgaXMgYSBkZW1vIGZvIEdyYXBoUUwgVm95YWdlci4KIVtkZW1vXShkb2NzL2RlbW8tZ2lmLmdpZikKCiMjIyMgSFRUUCB2cyBXZWJTb2NrZXQKCkdyYXBoUUwgaXMgYSBzcGVjaWZpY2F0aW9uIGFuZCBpdCdzIGNvbW1vbiB0byBzZWUgR3JhcGhRTCBvdmVyIEhUVFAgZm9yIHF1ZXJpZXMgYW5kIG11dGF0aW9ucywgaG93ZXZlciB3aXRoIEdyYXBoUUwKc3Vic2NyaXB0aW9ucyB3ZSBuZWVkIHRvIHJlY2VpdmUgY29udGludW91cyB1cGRhdGVzIGZyb20gYW4gQVBJLiBUaGF0J3Mgd2hlcmUgV2ViU29ja2V0cyBjb21lIGluLgoKV2ViU29ja2V0cyBhcmUgb2Z0ZW4gdXNlZCBhcyBhIHRyYW5zcG9ydCBwcm90b2NvbCBmb3IgR3JhcGhRTCBTdWJzY3JpcHRpb25zLgoKU3Vic2NyaXB0aW9ucyBhcmUgdXNlZnVsIGZvciBub3RpZnlpbmcgeW91ciBjbGllbnQgaW4gcmVhbCB0aW1lIGFib3V0IGNoYW5nZXMgdG8gYmFjay1lbmQgZGF0YSwgc3VjaCBhcyB0aGUgY3JlYXRpb24gb2YgYSBuZXcgb2JqZWN0IG9yIHVwZGF0ZXMgdG8gYW4gaW1wb3J0YW50IGZpZWxkLgoKUmVmZXJlbmNlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82NzY1OTkzNy93aGF0LWFyZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLWdyYXBocWwtc3Vic2NyaXB0aW9uLWFuZC13ZWJzb2NrZXQtcHJvdG9jb2wKCiMjIyMgR3JhcGhRTCB2cyBSRVNUIEFQSQoKQSBSRVNUIEFQSSBpcyBhbiBgYXJjaGl0ZWN0dXJhbCBjb25jZXB0YCBmb3IgbmV0d29yay1iYXNlZCBzb2Z0d2FyZS4KR3JhcGhRTCwgb24gdGhlIG90aGVyIGhhbmQsIGlzIGEgcXVlcnkgbGFuZ3VhZ2UgYW5kIGEgc2V0IG9mIHRvb2xzIHRoYXQgb3BlcmF0ZSBvdmVyIGEgc2luZ2xlIGVuZHBvaW50LgoKUmVmZXJlbmNlczoKLSBodHRwczovL2h5Z3JhcGguY29tL2Jsb2cvZ3JhcGhxbC12cy1yZXN0LWFwaXMKLSBodHRwczovL2F3cy5hbWF6b24uY29tL2NvbXBhcmUvdGhlLWRpZmZlcmVuY2UtYmV0d2Vlbi1ncmFwaHFsLWFuZC1yZXN0LwoKCiMjIyMgSG93IHRvIHNvbHZlIG4rMSBwcm9ibGVtIHdoZW4gdXNpbmcgR3JhcGhRTD8KCi0gV2hlbiBxdWVyeWluZyBmb3IgbmVzdGVkIGRhdGEsIGxpa2UgaW4gdGhlIG11c2ljIGV4YW1wbGUsIGEgc2NhbGluZyBpc3N1ZSBrbm93biBhcyB0aGUgbisxIHByb2JsZW0gY2FuIG9jY3VyLgotIEluIHRoZSBleGFtcGxlLCB0aGUgcXVlcnkgd2lsbCBmZXRjaCBhIGxpc3Qgb2YgbXVzaWNpYW5zLiBMZXTigJlzIHNheSBpdCBmaW5kcyBuIG11c2ljaWFucyBpbiB0aGUgZGF0YWJhc2UuIEZvciBlYWNoIG11c2ljaWFuIGZvdW5kLCB0aGUgYWxidW1zKCkgcmVzb2x2ZXIgd2lsbCBiZSBpbnZva2VkIHRvIGxvY2F0ZSBhbGwgdGhlIGFsYnVtcyBhc3NvY2lhdGVkIHdpdGggdGhhdCBtdXNpY2lhbi4gVGhpcyByZXNvbHZlciB3aWxsIHRyaWdnZXIgYSBkYXRhYmFzZSBjYWxsIGZvciBlYWNoIG11c2ljaWFuLCB3aGljaCB3aWxsIGJlIG4gY2FsbHMuIFRoaXMgbWVhbnMgdGhhdCBpbiB0b3RhbCwgdGhlcmUgYXJlIG4rMSBkYXRhYmFzZSBjYWxscyBvY2N1cnJpbmcuIFRoaXMgaXMgbXVjaCBsZXNzIGVmZmljaWVudCB0aGFuIGhhdmluZyB0d28gZGF0YWJhc2UgY2FsbHMsIG9uZSBmb3IgbXVzaWNpYW5zIGFuZCBvbmUgZm9yIGFsYnVtcy4KLSBUaGVyZSBhcmUgd2VsbC1lc3RhYmxpc2hlZCBzb2x1dGlvbnMgZm9yIGhhbmRsaW5nIGl0LiBUaGVzZSBpbmNsdWRlIHVzaW5nIGJhdGNoaW5nIG9yIHVzaW5nIGRhdGEgbG9hZGVycyBvbiB0aGUgY2xpZW50LgotIFdoZW4gdXNpbmcgYSBkYXRhIGxvYWRlciwgdGhlIGZldGNoZXIgcmVzcG9uZHMgd2l0aCBhIHByb21pc2UsIHRoZW4gbW92ZXMgdG8gdGhlIG5leHQgZmV0Y2ggYXQgdGhlIHNhbWUgZGF0YSBsZXZlbCByYXRoZXIgdGhhbiBtb3Zpbmcgb250byB0aGUgbmVzdGVkIGRhdGEuIEEgcHJvbWlzZSBpcyBhIHByb3h5IGZvciB0aGUgcmVzcG9uc2Ugb2YgYSBmdW5jdGlvbiB0aGF0IGFsbG93cyBwcm9jZXNzaW5nIHRvIGNvbnRpbnVlLiBUaGUgY29kZSBndWFyYW50ZWVzIHRoYXQgYSByZXNwb25zZSBmb3IgdGhlIGNhbGwgd2lsbCBjb21lIGxhdGVyLCBtYWtpbmcgaXQgYSBub24tYmxvY2tpbmcgZnVuY3Rpb24uIE9uY2UgYWxsIHRoZSBkYXRhIGF0IG9uZSBsZXZlbCBpcyByZXRyaWV2ZWQgKG9yIG9uY2UgYWxsIHRoZSBwcm9taXNlcyBoYXZlIGJlZW4gZnVsZmlsbGVkKSwgYSBzaW5nbGUgcmVxdWVzdCBpcyBtYWRlIHRvIGdldCBhbGwgdGhlIG5lc3RlZCBkYXRhLgotIFJlZmVyZW5jZTogaHR0cHM6Ly9oeWdyYXBoLmNvbS9ibG9nL2dyYXBocWwtbi0xLXByb2JsZW0KCiMjIEhUVFAvMgoKSFRUUFMgaXMganVzdCB0aGUgSFRUUCBwcm90b2NvbCBidXQgd2l0aCBkYXRhIGVuY3J5cHRpb24gdXNpbmcgU1NML1RMUy4KClNlY3VyZSBTb2NrZXRzIExheWVyIChTU0wpIGlzIGFuIG9sZGVyLCBsZXNzLXNlY3VyZSB2ZXJzaW9uIG9mIHRoZSBjcnlwdG9ncmFwaGljIHByb3RvY29sLCBhbmQgVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpIGlzIGl0cyBzdWNjZXNzb3IuCgoqVGhlcmUgaXMgYGh0dHAyYCBwcm9maWxlIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHJ1biBsb2NhbGx5IHRoaXMgcHJvdG9jb2wgYXMgUE9DLioKCj0+IGh0dHBzOi8vbG9jYWxob3N0Ojg0NDMvcmVwb3J0aW5nL3N3YWdnZXItdWkvaW5kZXguaHRtbAoKIVtIVFRQIDJdKC4vZG9jcy90bHMvaHR0cDEtaHR0cDItaHR0cDMucG5nKQoKUmVmZXJlbmNlOiBodHRwczovL3d3dy53YWxsYXJtLmNvbS93aGF0L3doYXQtaXMtaHR0cC0yLWFuZC1ob3ctaXMtaXQtZGlmZmVyZW50LWZyb20taHR0cC0xCgojIyMjIEdlbmVyYXRpbmcgYSBjZXJ0aWZpY2F0ZSBmb3IgbG9jYWwgZGV2ZWxvcG1lbnQKClJlZmVyZW5jZTogaHR0cHM6Ly9ieXRlMjcuY29tLzIwMjAvMDIvMDMvdXNpbmctaHR0cC0yLWluLXlvdXItc3ByaW5nLWJvb3QtYXBwbGljYXRpb24vCgpPbiBXaW5kb3dzOgoxLiBHZW5lcmF0ZSBhIGNlcnRpZmljYXRlIGFuZCB0aGUgcHJpdmF0ZSBrZXkgdXNpbmcgb3BlbnNzbCB3aXRoIHRoZSBjb21tYW5kICh5b3UgbXVzdCBiZSBpbiBgZG9jc2AgZm9sZGVyKToKICAgIGBgYAogICAgb3BlbnNzbCByZXEgLXg1MDkgLW91dCBsb2NhbGhvc3QuY3J0IC1rZXlvdXQgbG9jYWxob3N0LmtleSAtbmV3a2V5IHJzYToyMDQ4IC1ub2RlcyAtc2hhMjU2IC1zdWJqICcvL0NOPWxvY2FsaG9zdCcgLWV4dGVuc2lvbnMgRVhUIC1jb25maWcgLi9jZXJ0aWZpY2F0ZS5jbmYKICAgIGBgYAoyLiBHZW5lcmF0ZSBwa2NzMTIuCiAgIGBgYAogICBvcGVuc3NsIHBrY3MxMiAtZXhwb3J0IC1pbiBsb2NhbGhvc3QuY3J0IC1pbmtleSBsb2NhbGhvc3Qua2V5IC1uYW1lIGxvY2FsaG9zdCAtb3V0IGxvY2FsaG9zdC5wMTIKICAgYGBgCgo= readmeEtag: '"274e0fe037546dcb9a1eec3bbcd939d651f795cd"' readmeLastModified: Sun, 02 Feb 2025 11:17:41 GMT repositoryId: 655553383 description: A simple Spring Cloud demo project - Eureka, Feign, Ribbon ... created: '2023-06-19T06:21:22Z' updated: '2025-03-10T00:53:10Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: maciek1839 logo: https://avatars.githubusercontent.com/u/16246708?v=4 license: MIT repoEtag: '"42a803309a4faf32e5389b48ead35ef2879871722d1729359f53ce73e06e8aa4"' repoLastModified: Mon, 10 Mar 2025 00:53:10 GMT category: Server Implementations foundInMaster: true - name: Apidog source: Tooling repository issues source_description: >- Apidog is an integrated collaboration platform for API documentation, API debugging, API mocking, and API automated testing that combines Postman + Swagger + Mock + JMeter to tackle the data synchronization problem among different systems using a set of systems and a set of data. API debugging, API data mocking, and API automated testing can be directly used without redefining as long as the API documentation is well-defined. link: https://www.apidog.com v3_1: true v3: true v2: true sourceIssueMetadata: issueNumber: 107 author: YukioIkeda createdAt: '2023-12-05T08:08:51Z' updatedAt: '2024-01-26T17:28:47Z' url: https://github.com/OAI/Tooling/issues/107 status: open id: 552adcd550190c0876a18aa706dc2f42 foundInMaster: true - source: https://openapi.tools/ name: APIMatic Developer Experience Portal category: Documentation link: https://www.apimatic.io/developer-experience-portal language: SaaS source_description: >- Customizable developer portals packed with language specific documentation, client libraries, code samples, an API console and much more. v2: true v3: true v3_1: true id: 268b5835cde4b94e2507583308b4720d foundInMaster: true - source: https://openapi.tools/ name: APITree category: Documentation repository: https://github.com/apitree link: https://apitree.com/ language: SaaS source_description: >- HUB for managing and sharing APIs. Converts OpenAPI v2 / v3 files into beautiful API documentation. v2: true v3: true foundInMaster: true id: 8ec6d6f8d9a5447a64cb9059253c7196 - source: https://openapi.tools/ name: Atom/linter-swagger category: Text Editors language: JavaScript repository: https://atom.io/packages/linter-swagger license: MIT source_description: >- This plugin for Atom Linter will lint OpenAPI, both JSON and YAML using swagger-parser node package. v2: true v3: true foundInMaster: true id: 184d87fb65f889fa033f623a7b67df1a - source: https://openapi.tools/ name: Atom/linter-openapi category: Text Editors language: JavaScript repository: https://atom.io/packages/linter-openapi license: MIT source_description: >- This plugin for Atom Linter will lint OpenAPI YAML files using openapi-enforcer node package. v2: false v3: true foundInMaster: true id: 60dd32764dfe435b0eaaa2189ab1bc8c - source: https://openapi.tools/ name: Swagger Inspector category: Learning language: SaaS link: https://swagger.io/tools/swagger-inspector/ source_description: >- Run mock requests in a webapp and Swagger Inspector infers your OpenAPI description. v2: true v3: true foundInMaster: true id: 4fe9bd57d14e8597029d05f3e477dc61 - source: https://openapi.tools/ name: Swagger Inspector category: Testing language: - Self-hosted - SaaS link: https://inspector.swagger.io repository: null source_description: >- Swagger Inspector is a free online tool to quickly execute any API request, validate its responses and generate a corresponding OpenAPI Description. v2: true v3: true foundInMaster: true id: 7cb46761fe06ef24609940d2efe877fc - source: openapi3 tags repository: https://github.com/devjack/example-library-specification v3: true repositoryMetadata: base64Readme: >- IyBFeGFtcGxlIExpYnJhcnkgU3BlY2lmaWNhdGlvbgpUaGlzIHJlcG9zaXRvcnkgZGVmaW5lcyBhIHNpbXBsZSBBUEkgdXNpbmcgW09wZW5BUEkgdjMuMC4xXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMS5tZCkuCgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9kZXZqYWNrL2V4YW1wbGUtbGlicmFyeS1zcGVjaWZpY2F0aW9uLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL2RldmphY2svZXhhbXBsZS1saWJyYXJ5LXNwZWNpZmljYXRpb24pCgojIFNldHVwIGFuZCBpbnN0YWxsYXRpb24KClRoZSBBUEkgc3BlYyBpcyBkZWZpbmVkIGluIGBvcGVuYXBpLnltbGAuIEVhY2ggVVJMIGhhcyBpdHMgb3duIGVuZHBvaW50IGluIGBlbmRwb2ludHMvYCBhbmQgSlNPTiByZXF1ZXN0L3Jlc3BvbnNlIHNjaGVtYXMgYXJlIGRlZmluZWQgaW4gYHNjaGVtYXMvYC4gSlNPTiBTY2hlbWEgaXMgdXNlZCB0byBkZWZpbmUgcmVzcG9uc2VzIGFuZCBjYW4gYmUgdXNlZCBmb3IgdmFsaWRhdGlvbi4KCiMjIFNldHVwIGFuZCBydW4gdGhlIGRvY3VtZW50YXRpb24KUnVuIHRoZXNlIGNvbW1hbmRzIHRvIGluc3RhbGwgbnBtIGRlcGVuZGVuY2llcyBhbmQgc2VydmUgdGhlIEFQSSBkb2N1bWVudGF0aW9uIGxvY2FsbHkuCgpgYGBzaApucG0gaW5zdGFsbApucG0gcnVuIHRlc3QKbnBtIHJ1biBzZXJ2ZQpgYGAKClRoZSBBUEkgZG9jdW1lbnRhdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBhdCBbaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMF0oaHR0cDovL2xvY2FsaG9zdDo1MDAwKS4KClRvIHJlc29sdmUgYW5kIHB1Ymxpc2ggdGhlIEFQSSBzcGVjLCBydW46CgpgYGBzaApucG0gcnVuIHJlc29sdmUKYGBgCgpBIHNpbXBsZSBIVE1MIGRvY3VtZW50IGluY2x1ZGluZyBbUmVEb2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZWJpbGx5L1JlRG9jKSBpcyBhdmFpbGFibGUgaW4gdGhlIGBwdWJsaWMvYCBkaXJlY3RvcnkuIFRvIGNvcHkgYWNyb3NzIHRoZSBwdWJsaXNoZWQgc3BlYyBhbmQgc2NoZW1hcywgcnVuOgoKYGBgc2gKbnBtIHJ1biBwdWJsaXNoCmBgYAoKWW91IGNhbiB0aGVuIHNlcnZlIGAvcHVibGljYCBmcm9tIGFueSBzdGF0aWMgY29udGVudCBob3N0aW5nIHNlcnZpY2UuIFRoZSBjdXJyZW50IGRvY3VtZW50YXRpb24gaXMgaG9zdGVkIG9uIE5ldGxpZnkgYXQgW2V4YW1wbGUtbGlicmFyeS1zcGVjaWZpY2F0aW9uLm5ldGxpZnkuY29tXShodHRwczovL2V4YW1wbGUtbGlicmFyeS1zcGVjaWZpY2F0aW9uLm5ldGxpZnkuY29tKQo= readmeEtag: '"25e85ab53a5680328ba38e6f15c69e46bf9835ed"' readmeLastModified: Sun, 07 Oct 2018 13:20:15 GMT repositoryId: 151935342 description: Using OpenAPI and JSON Schema to build a design-first API created: '2018-10-07T11:41:30Z' updated: '2021-11-30T21:32:02Z' language: HTML archived: false stars: 0 watchers: 0 forks: 0 owner: devjack logo: https://avatars.githubusercontent.com/u/3516066?v=4 repoEtag: '"f72fb5b7f2e30e5d28030858afe1f18dd03ac3327d0b5eeb7cba7bde21b25781"' repoLastModified: Tue, 30 Nov 2021 21:32:02 GMT foundInMaster: true category: Parsers id: ab8fe5700b9eb0a48246ca741696382e - source: openapi3 tags repository: https://github.com/andres-gr/kc-web v3: true repositoryMetadata: repositoryId: 233687856 description: KC Webapp new boilerplate setup created: '2020-01-13T20:33:41Z' updated: '2020-04-07T01:27:00Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: andres-gr logo: https://avatars.githubusercontent.com/u/26035230?v=4 repoEtag: '"af1a176d91014cbe413b7ece82facfc197f8fa99d242802d7ec5f0d3c542394c"' repoLastModified: Tue, 07 Apr 2020 01:27:00 GMT foundInMaster: true id: e4b19b83c7127702991be56913c18374 - source: openapi3 tags repository: https://github.com/pschichtel/betterswagger v3: true repositoryMetadata: repositoryId: 272568695 description: A new code generator for OpenAPI 3 specs created: '2020-06-16T00:00:41Z' updated: '2020-11-04T16:40:44Z' language: Scala archived: false stars: 0 watchers: 1 forks: 0 owner: pschichtel logo: https://avatars.githubusercontent.com/u/526104?v=4 repoEtag: '"7507db75713ad3f51e1f451f9c95b8a07e94902fe39dfeb07f2e454615cbb6bf"' repoLastModified: Wed, 04 Nov 2020 16:40:44 GMT foundInMaster: true id: 3922409f14bb62251229ba475ee4be90 - source: openapi3 tags repository: https://github.com/navjotsrakhra/eventmanagementplatform v3: true id: e52c196c2a8bbc78a26da1a421c09e5e repositoryMetadata: base64Readme: >- IyBFdmVudCBNYW5hZ2VyIEFwcGxpY2F0aW9uCgpUaGlzIGlzIHRoZSBFdmVudCBNYW5hZ2VyIEFwcGxpY2F0aW9uLCBhIEphdmEtYmFzZWQgd2ViIGFwcGxpY2F0aW9uIGRlc2lnbmVkIGZvciBtYW5hZ2luZyBldmVudHMgYW5kIHVzZXIgYWNjb3VudHMuIEl0CnByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIGNyZWF0aW5nIGFuZCB2aWV3aW5nIGV2ZW50IHBvc3RzLCB1c2VyIHJlZ2lzdHJhdGlvbiBhbmQgYXV0aGVudGljYXRpb24sIGFuZCB1c2VyIG1hbmFnZW1lbnQKZm9yIGFkbWluaXN0cmF0b3JzLgoKIyBOb3RlOiBUbyBzZWUgdGhlIGRlbW8gdXNlIHRoZSBmb2xsb3dpbmcgCiAtIHVzZXJuYW1lOiBhZG1pbiwgcGFzc3dvcmQ6IGFkbWluTgogLSBUaGUgQVBJIGVuZHBvaW50cyBjYW4gYmUgZm91bmQgYXQgaHR0cHM6Ly9ldmVudG1hbmFnZW1lbnRwbGF0Zm9ybS5vbnJlbmRlci5jb20vYXBpLWluZm8KCiMjIFRhYmxlIG9mIENvbnRlbnRzCgo8IS0tIFRPQyAtLT4KCiogW0V2ZW50IE1hbmFnZXIgQXBwbGljYXRpb25dKCNldmVudC1tYW5hZ2VyLWFwcGxpY2F0aW9uKQogICAgKiBbRmVhdHVyZXNdKCNmZWF0dXJlcykKICAgICogW0RvY3VtZW50YXRpb25dKCNkb2N1bWVudGF0aW9uKQogICAgKiBbUHJlcmVxdWlzaXRlc10oI3ByZXJlcXVpc2l0ZXMpCiAgICAqIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCiAgICAqIFtVc2FnZV0oI3VzYWdlKQogICAgKiBbTGljZW5zZV0oI2xpY2Vuc2UpCgo8IS0tIFRPQyAtLT4KCiMjIEZlYXR1cmVzCgotIENyZWF0ZSBhbmQgbWFuYWdlIGV2ZW50IHBvc3RzIHdpdGggZGV0YWlscyBzdWNoIGFzIHRpdGxlLCBjb250ZW50LCBsb2NhdGlvbiwgc3RhcnQgZGF0ZSwgYW5kIGVuZCBkYXRlLgotIFVzZXIgcmVnaXN0cmF0aW9uIGFuZCBhdXRoZW50aWNhdGlvbiB3aXRoIHJvbGUtYmFzZWQgYWNjZXNzIGNvbnRyb2wuCi0gVXNlciBtYW5hZ2VtZW50IGZvciBhZG1pbmlzdHJhdG9ycyB0byBtYW5hZ2UgdXNlciByb2xlcy4KLSBTZWN1cmUgcGFzc3dvcmQgaGFzaGluZyB1c2luZyBCQ3J5cHQuCi0gUkVTVGZ1bCBBUEkgZm9yIGV2ZW50IHBvc3RzLgotIEV4Y2VwdGlvbiBoYW5kbGluZyBmb3IgdmFsaWRhdGlvbiBhbmQgZXJyb3IgcmVzcG9uc2VzLgoKIyMgRG9jdW1lbnRhdGlvbgoKaHR0cHM6Ly9uYXZqb3RzcmFraHJhLmdpdGh1Yi5pby9FdmVudE1hbmFnZW1lbnRQbGF0Zm9ybS8KCiMjIFByZXJlcXVpc2l0ZXMKCkJlZm9yZSB5b3UgYmVnaW4sIGVuc3VyZSB5b3UgaGF2ZSBtZXQgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHM6CgotIEphdmEgRGV2ZWxvcG1lbnQgS2l0IChKREspIDIwIG9yIGxhdGVyCi0gUG9zdGdyZVNRTCBkYXRhYmFzZQoKIyMgSW5zdGFsbGF0aW9uCgoxLiBDbG9uZSB0aGUgcmVwb3NpdG9yeToKCiAgIGBgYHNoCiAgIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vTmF2am90U1Jha2hyYS9FdmVudE1hbmFnZW1lbnRQbGF0Zm9ybS5naXQKCjIuIE5hdmlnYXRlIHRvIHRoZSBwcm9qZWN0IGRpcmVjdG9yeToKICAgYGBgc2gKICAgY2QgRXZlbnRNYW5hZ2VtZW50UGxhdGZvcm0KCjMuIENvbmZpZ3VyZSB5b3VyIGRhdGFiYXNlIHNldHRpbmdzIGluIGBzcmMvbWFpbi9qYXZhL2lvL2dpdGh1Yi9uYXZqb3RzcmFraHJhL2V2ZW50bWFuYWdlci9jb25maWcvRGF0YVNvdXJjZUNvbmZpZ2AKCjQuIEJ1aWxkIHRoZSBwcm9qZWN0IHVzaW5nIE1hdmVuOgogICBgYGBzaAogICAuL212bncgY2xlYW4gaW5zdGFsbAoKIyMgVXNhZ2UKCjEuIFJ1biB0aGUgYXBwbGljYXRpb24uCiAgIGBgYHNoCiAgIG12biBzcHJpbmctYm9vdDpydW4KCjIuIEFjY2VzcyB0aGUgYXBwbGljYXRpb24gYXQgJ2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MCcKMy4gWW91IGNhbiByZWdpc3RlciBhcyBhIG5ldyB1c2VyIG9yIHVzZSB0aGUgcHJvdmlkZWQgYWRtaW5pc3RyYXRvciBhY2NvdW50IHRvIGxvZ2luCgojIyBMaWNlbnNlCgpDb3B5cmlnaHQgKGMpIDIwMjMgTmF2am90IFNpbmdoIFJha2hyYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K readmeEtag: '"a79e926f0009a7e3a622d3d867240619f964625a"' readmeLastModified: Mon, 12 Feb 2024 20:12:47 GMT repositoryId: 677508545 description: >- Event management platform to notify about events along with the event day, time and location created: '2023-08-11T18:53:21Z' updated: '2026-01-25T11:31:36Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: NavjotSRakhra logo: https://avatars.githubusercontent.com/u/45345158?v=4 repoEtag: '"c3d00b38109c1af2c8ee71595d1ed566fd103f6f6aa43216367922f60f3bd4ae"' repoLastModified: Sun, 25 Jan 2026 11:31:36 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/bwcash/web-api-spring-boot v3: true id: 35bd99787664a0ddccf56293404d6f37 repositoryMetadata: base64Readme: IiMgV2ViLUFQSS1TcHJpbmctQm9vdCIgCiIjIFdlYi1BUEktU3ByaW5nLUJvb3QiIAo= readmeEtag: '"e9b9311710d3e1ca45bddfc0653d07beea21f40a"' readmeLastModified: Fri, 20 Jan 2023 22:49:58 GMT repositoryId: 578707859 description: STS maven web API project created: '2022-12-15T17:35:23Z' updated: '2022-12-15T18:48:45Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: Bwcash logo: https://avatars.githubusercontent.com/u/112275746?v=4 repoEtag: '"4db7a362bc6fe60f9099e21547b83429a0cf4f782275e51317a8f74d8f3d857a"' repoLastModified: Thu, 15 Dec 2022 18:48:45 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/dm1st/eatsy-api v3: true id: d13f0bc48a2f7a8abc858920b7c72fe6 repositoryMetadata: base64Readme: >- IyBFYXRzeSBBUEkKCkEgc3ByaW5nIGJvb3QgUkVTVCBBUEkgdGhhdCB1c2VyLWZhY2luZyBzZXJ2aWNlcyBjYW4gaW50ZXJmYWNlIHdpdGggZm9yIGZpbmRpbmcsIGNyZWF0aW5nIGFuZCBzaGFyaW5nIHlvdXIgZmF2b3VyaXRlCnJlY2lwZXMuCgpbIVtDaXJjbGVDSSBidWlsZF0oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvRE0xc3QvZWF0c3ktYXBpL3RyZWUvZGV2ZWxvcC5zdmc/c3R5bGU9c2hpZWxkKV0oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvRE0xc3QvZWF0c3ktYXBpL3RyZWUvZGV2ZWxvcCkKWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIvRE0xc3QvZWF0c3ktYXBpL2JhZGdlLnN2Zz9icmFuY2g9ZGV2ZWxvcCldKGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9ETTFzdC9lYXRzeS1hcGk/YnJhbmNoPWRldmVsb3ApClshW0NyZWF0ZSBhbmQgcHVibGlzaCBhIERvY2tlciBpbWFnZV0oaHR0cHM6Ly9naXRodWIuY29tL0RNMXN0L2VhdHN5LWFwaS9hY3Rpb25zL3dvcmtmbG93cy9wdWJsaXNoLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vRE0xc3QvZWF0c3ktYXBpL2FjdGlvbnMvd29ya2Zsb3dzL3B1Ymxpc2gueW1sKQoKKiBBIGxpdmUgZGVtbyB2ZXJzaW9uIG9mIHRoZSBFYXRzeSBBUEkgaXMgZGVwbG95ZWQgYW5kIHRoZSBTd2FnZ2VyIFVJIFNwZWMgZm9yIHRoZSBzZXJ2aWNlIGNhbiBiZQogIGZvdW5kIFtoZXJlXShodHRwczovL2VhdHN5LWFwaS5vbnJlbmRlci5jb20vc3dhZ2dlci11aS9pbmRleC5odG1sIy8pLiBQbGVhc2Ugbm90ZSwgdGhlIGFwcGxpY2F0aW9uIHVzZXMgZnJlZS10aWVyCiAgc2VydmljZXMsIHNvIGl0IHdpbGwgdGFrZSBhIGZldyBtaW51dGVzIGZvciB0aGUgQVBJIHNlcnZpY2UgdG8gc3BpbiB1cC4KKiBUbyB0cnkgb3V0IHRoZSBFYXRzeSBBUEkgdmlhIGEgVUksIHlvdSBjYW4gdXNlIHRoZSBbZWF0c3ktcmVhY3QtdWldKGh0dHBzOi8vZ2l0aHViLmNvbS9ETTFzdC9lYXRzeS1yZWFjdC11aS8pIHdoaWNoIGlzCiAgYSB1c2VyLWZyaWVuZGx5IFJlYWN0IGFwcGxpY2F0aW9uIHRoYXQgYWxsb3dzIHVzZXJzIHRvIGludGVyYWN0IHdpdGggdGhlIEVhdHN5IEFQSS4gQSBsaXZlIGRlbW8gdmVyc2lvbiBpcyBkZXBsb3llZAogIGFuZCBpbnRlZ3JhdGVkIHdpdGggdGhlIEVhdHN5IEFQSSBbaGVyZV0oaHR0cHM6Ly9lYXRzeS5vbnJlbmRlci5jb20pLgoKVG9nZXRoZXIsIHRoZXNlIGNvbXBvbmVudHMgKGFsb25nIHdpdGggYSBQb3N0Z3JlcyBkYXRhYmFzZSkgbWFrZSB1cCB0aGUgZW5kLXRvLWVuZCBFYXRzeSBzb2x1dGlvbiBhbmQgdGhlIGxpdmUgZGVtbwppbnN0YW5jZXMgYXJlIGhvc3RlZCBvbiB0aGUgW1JlbmRlcl0oaHR0cHM6Ly9yZW5kZXIuY29tKSBwbGF0Zm9ybS4KCiMjIEdldHRpbmcgc3RhcnRlZAoKVGhlIGxpdmUgZGVtbyB2ZXJzaW9uIG9mIHRoZSBzZXJ2aWNlIGlzIGRlcGxveWVkIHVzaW5nIHRoZSBkb2NrZXJmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QuIEhvd2V2ZXIsIHlvdSBjYW4gZGVwbG95IHlvdXIKb3duIGluc3RhbmNlIGxvY2FsbHk6CgojIyMgQnVpbGQgYW5kIGRlcGxveSB0aGUgc3ByaW5nIGJvb3Qgc2VydmljZSBsb2NhbGx5CgpUaGUgc2VydmVyIGlzIHJ1biBhcyBhIFtTcHJpbnQgQm9vdF0oaHR0cHM6Ly9zcHJpbmcuaW8vcHJvamVjdHMvc3ByaW5nLWJvb3QpIGFwcGxpY2F0aW9uLiBGb3Igc2ltcGxpY2l0eSByZWFzb25zIGl0CnVzZXMgW1RoZSBHcmFkbGUgV3JhcHBlcl0oaHR0cHM6Ly9kb2NzLmdyYWRsZS5vcmcvY3VycmVudC91c2VyZ3VpZGUvZ3JhZGxlX3dyYXBwZXIuaHRtbCkgKGVsaW1pbmF0aW5nIHRoZSBuZWVkIHRvCmluc3RhbGwgR3JhZGxlIGxvY2FsbHkpLiBUaGlzIGhlbHBzIGVuc3VyZSB2ZXJzaW9uIGNvbnNpc3RlbmN5LCBlYXN5IHNldHVwLCBidWlsZCByZXByb2R1Y2liaWxpdHksIGFuZCBpbXByb3ZlZCBidWlsZApwZXJmb3JtYW5jZS4KCiMjIyMgUHJlLXJlcXVpc2l0ZXMKCiogSkRLICh2ZXJzaW9uIDggb3IgaGlnaGVyKSBpbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQgb24geW91ciBsb2NhbCBtYWNoaW5lIHRvIGJlIGFibGUgdG8gY29tcGxpZSBhbmQgcnVuIHRoZSBKYXZhIGNvZGUuCiogQmVmb3JlIHJ1bm5pbmcgdGhlIHNlcnZpY2UsIHlvdSB3aWxsIG5lZWQgdG8gaGF2ZSBhIFBvc3RncmVzIGluc3RhbmNlIGluc3RhbGxlZCBhbmQgbmVlZCB0byB1cGRhdGUgdGhlIFNwcmluZyBCb290CiAgYGBgYXBwbGljYXRpb24ucHJvcGVydGllc2BgYCBmaWxlIHRvIGNvbmZpZ3VyZSB0aGUgY29ubmVjdGlvbiBkZXRhaWxzIChlLmcuIGhvc3QsIHBvcnQsIHVzZXJuYW1lIGFuZCBwYXNzd29yZCkgdG8KICBhbGlnbiB0byB5b3VyIGRhdGFiYXNlIGluc3RhbmNlIHRoYXQgdGhlIGFwcGxpY2F0aW9uIHdpbGwgdXNlIHRvIGNvbm5lY3QgdG8gaXQuIEZvciBleGFtcGxlOgoKYGBgCiMjbG9jYWwgZGV2IFBvc3RncmVTUUwgZGF0YXNvdXJjZSBwcm9wZXJ0aWVzCnNwcmluZy5kYXRhc291cmNlLnVybD1qZGJjOnBvc3RncmVzcWw6Ly9sb2NhbGhvc3Q6NTQzMi9lYXRzeQpzcHJpbmcuZGF0YXNvdXJjZS51c2VybmFtZT08eW91ciBwb3N0Z3JlcyB1c2VybmFtZT4Kc3ByaW5nLmRhdGFzb3VyY2UucGFzc3dvcmQ9PHlvdXIgcG9zdGdyZXMgcGFzc3dvcmQ+CnNwcmluZy5qcGEuc2hvdy1zcWw9dHJ1ZQpgYGAKCmBgYGFwcGxpY2F0aW9uLnByb3BlcnRpZXNgYGAgY2FuIGJlIGZvdW5kIGF0OgoKYGBgPHByb2plY3RSb290PlxlYXRzeUFwcFNlcnZpY2VcZWF0c3lBcHBTZXJ2aWNlLWNvbnRyb2xsZXJcc3JjXG1haW5ccmVzb3VyY2VzXGFwcGxpY2F0aW9uLnByb3BlcnRpZXNgYGAKCiMjIyMgUnVubmluZyB0aGUgc2VydmljZSBjYW4gdGhlbiBiZSBkb25lIGZyb20gYSBiYXNoIHRlcm1pbmFsOgoKYGBgCi4vZ3JhZGxldyBjbGVhbiBidWlsZCBib290cnVuCmBgYAoKT25jZSB0aGUgc2VydmVyIGlzIHJ1bm5pbmcgbmF2aWdhdGUgdG8gaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N3YWdnZXItdWkuaHRtbCB0byBzZWUgdGhlIFN3YWdnZXIgVUkgU3BlYy4KCiMjIyMgUGxlYXNlIG5vdGU6CgpJZiBpbml0aWF0aW5nIHRocm91Z2ggYW4gSURFIHN1Y2ggYXMgaW50ZWxsaUogKHJhdGhlciB0aGFuIGNvbW1hbmQgbGluZSksIHlvdSB3aWxsIG5lZWQgdG8gZW5zdXJlIHRoZSAiV29ya2luZwpEaXJlY3RvcnkiCmlzIGNvcnJlY3RseSBzZXQgKHRvIHRoZSBzYW1lIGFzIHRoZSBTcHJpbmcgQm9vdCBhcHBsaWNhdGlvbiBydW5uZXIpIG90aGVyd2lzZSB5b3Ugd2lsbCBnZXQgaW5pdGlhbGlzYXRpb24gZXJyb3JzIHdoZW4KdHJ5aW5nIHRvIGxvY2F0ZSBsb2dnaW5nIGNvbmZpZyBhbmQgb3RoZXIgcHJvcGVydGllcy4gVGhlIHdvcmtpbmcgZGlyZWN0b3J5IGluIHlvdXIgSURFIHJ1biBjb25maWd1cmF0aW9uIHNob3VsZCBiZSBzZXQKdG86CgpgYGBDOlw8bG9jYXRpb24gdG8gcmVwb3NpdG9yeSByb290PlxlYXRzeUFwcFNlcnZpY2VcZWF0c3lBcHBTZXJ2aWNlLWNvbnRyb2xsZXJgYGAKCiMjIyMgUG9wdWxhdGluZyB5b3VyIGxvY2FsIGluc3RhbmNlIHdpdGggcmFuZG9tIHJlY2lwZSB0ZXN0IGRhdGEKClJhbmRvbSByZWNpcGUgZ2VuZXJhdGlvbiBjYW4gYmUgdHJpZ2dlcmVkIGV4dGVybmFsbHkgYW5kIHBlcnNpc3RlZCBmb3IgbWFudWFsIHRlc3RpbmcgYW5kIHZlcmlmaWNhdGlvbiBwdXJwb3Nlcy4gV2l0aAp0aGUgc2VydmVyIHJ1bm5pbmcsIG9wZW4gYSBuZXcgYmFzaCB0ZXJtaW5hbCAoYXQgdGhlIHByb2plY3Qgcm9vdCkgYW5kIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgpgYGAKLi9ncmFkbGV3IGdlbmVyYXRlUmFuZG9tUmVjaXBlcwpgYGAKClRoaXMgZXhlY3V0ZXMgYSBjdXN0b20gZ3JhZGxlIHRhc2sgdGhhdCBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9mIHJlY2lwZXMgKGJldHdlZW4gMSBhbmQgMTUpIHdoaWNoIHRoZW4gZ2V0IHBvc3RlZCB0bwp5b3VyIGxvY2FsIGFwcGxpY2F0aW9uJ3MgYGFkZFJlY2lwZWAgZW5kcG9pbnQuIFRoaXMgY2FuIGJlIGV4ZWN1dGVkIGFzIG1hbnkgdGltZXMgYXMgbmVlZGVkIHRvIHJlYWNoIHRoZSBsZXZlbCBvZiB0ZXN0CmRhdGEgcmVxdWlyZWQuCgpJZiB0aGVyZSBpcyBhIG5lZWQgdG8gcmVtb3ZlIGFsbCBkYXRhIGluIHRoZSBkYXRhYmFzZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBjYW4gYmUgdXNlZCB0byBkcm9wIGFsbCB0aGUgdGFibGVzOgoKYGBgCkRST1AgU0NIRU1BIHB1YmxpYyBDQVNDQURFOwpDUkVBVEUgU0NIRU1BIHB1YmxpYzsKYGBgCgpUaGlzIHdvcmtzIGJlY2F1c2UgYWxsIHRoZSB0YWJsZXMgYXJlIGluIGEgc2luZ2xlIHNjaGVtYSBuYW1lZCBwdWJsaWMuIElmIHlvdSBhcmUgdXNpbmcgUG9zdGdyZVNRTCA5LjMgb3IgbGF0ZXIsIHlvdSBtYXkKYWxzbyBuZWVkIHRvIHJlc3RvcmUgdGhlIGRlZmF1bHQgZ3JhbnRzLgoKYGBgCkdSQU5UIEFMTCBPTiBTQ0hFTUEgcHVibGljIFRPIHBvc3RncmVzOwpHUkFOVCBBTEwgT04gU0NIRU1BIHB1YmxpYyBUTyBwdWJsaWM7CmBgYAoKIyMgUHJvamVjdCBTdHJ1Y3R1cmUgYW5kIGNvbmZpZ3VyYXRpb24KClRoaXMgYXBwbGljYXRpb24gdXNlcyBHcmFkbGUgYXMgdGhlIGJ1aWxkIHRvb2wgYW5kIGlzIHN0cnVjdHVyZWQgYXMgR3JhZGxlIHN1Yi1wcm9qZWN0cy4gVGhpcyBoZWxwcyBzZXBhcmF0ZSB0aGUKZGlmZmVyZW50IHJlc3BvbnNpYmlsaXRpZXMgYW5kIGNvbmNlcm5zIG9mIHRoZSBhcHBsaWNhdGlvbiBpbnRvIGRpc3RpbmN0IG1vZHVsZXMuIFRoaXMgY29udHJpYnV0ZXMgdG8ga2VlcGluZyB0aGUKY29kZWJhc2Ugb3JnYW5pemVkIGFuZCBtYWludGFpbmFibGUsIGFuZCBtYWtlcyBpdCBlYXNpZXIgdG8gdGVzdCwgZGVidWcgYW5kIGRlcGxveSB0aGUgYXBwbGljYXRpb24uCgpUaGUgc3RydWN0dXJlIG9mIHRoZSBHcmFkbGUgcHJvamVjdHMgbG9va3MgbGlrZSB0aGlzLCB3aXRoIGVhY2ggc3ViLXByb2plY3QgZm9jdXNzaW5nIG9uIGEgc3BlY2lmaWMgYXNwZWN0IG9mIHRoZQphcHBsaWNhdGlvbjoKCmBgYHNoCmVhdHN5QXBwU2VydmljZSAgICAgICAgICAjIFVtYnJlbGxhIEdyYWRsZSBwcm9qZWN0CnwKfAorLS0gY29udHJvbGxlciAgICAgICAgICAgIyBDb250YWlucyB0aGUgY29udHJvbGxlcnMgb2YgdGhlIGFwcGxpY2F0aW9uLiAKfCAgICAgICAgICAgICAgICAgICAgICAgICMgUmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIEhUVFAgcmVxdWVzdHMgYW5kIAp8ICAgICAgICAgICAgICAgICAgICAgICAgIyByZXR1cm5pbmcgdGhlIGFwcHJvcHJpYXRlIHJlc3BvbnNlLiAKfCAgICAgICAgICAgICAgICAgICAgICAgICMgVGhleSBpbnRlcmFjdCB3aXRoIHRoZSBzZXJ2aWNlcyBvZiB0aGUgYXBwbGljYXRpb24gCnwgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIHJldHJpZXZlIGRhdGEuCnwKfAorLS0gZG9tYWluICAgICAgICAgICAgICAgIyBDb250YWlucyB0aGUgZG9tYWluIG9iamVjdHMgb2YgdGhlIGFwcGxpY2F0aW9uLiAKfCAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlc2UgcmVwcmVzZW50IHRoZSBlbnRpdGllcyBhbmQgZGF0YSB0aGF0IHRoZSAKfCAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24gbWFuaXB1bGF0ZXMuIAp8ICAgICAgICAgICAgICAgICAgICAgICAgIyBTb21lIGJ1c2luZXNzIGxvZ2ljIGlzIGFsc28gY29udGFpbmVkIGhlcmUuCnwKfAp8CistLSBtb2RlbCAgICAgICAgICAgICAgICAjIENvbnRhaW5zIHRoZSBkYXRhIHRyYW5zZmVyIG9iamVjdHMgKERUT3MpIG9mIHRoZSBhcHBsaWNhdGlvbi4gCnwgICAgICAgICAgICAgICAgICAgICAgICAjIEluIHRoaXMgY2FzZSwgdGhleSBhcmUgdXNlZCB0byBtYXAgdGhlIGRvbWFpbiBvYmplY3RzIAp8ICAgICAgICAgICAgICAgICAgICAgICAgIyB0byBhIHJlcHJlc2VudGF0aW9uIHRoYXQgY2FuIGJlIHNlbnQgdmlhIEhUVFAgcmVxdWVzdHMvcmVzcG9uc2VzCnwgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIG90aGVyIGluZGVwZW5kZW50IGNvbXBvbmVudHMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoaXMgQVBJLgp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAp8CnwKKy0tIG1vZGVsLW1hcHBlcnMgICAgICAgICMgQ29udGFpbnMgdGhlIG1hcHBlcnMgb2YgdGhlIGFwcGxpY2F0aW9uLiAKfCAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlIE1hcHBlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBtYXBwaW5nIGJldHdlZW4gdGhlIERUT3MsIAp8ICAgICAgICAgICAgICAgICAgICAgICAgIyBEb21haW4gb2JqZWN0cyBhbmQgRW50aXR5IG9iamVjdHMgKHRoYXQgZ2V0IHBlcnNpc3RlZCB0byAKfCAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGRhdGFiYXNlKSBhbmQgdGhleSBwcm92aWRlIGEgd2F5IHRvIGNvbnZlcnQgYmV0d2Vlbgp8ICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGVzZSByZXByZXNlbnRhdGlvbnMgYXMgbmVlZGVkLgp8CnwKKy0tIHBlcnNpc3RlbmNlICAgICAgICAgICMgQ29udGFpbnMgdGhlIHBlcnNpc3RlbmNlIGxheWVyIG9mIHRoZSBhcHBsaWNhdGlvbi4gCnwgICAgICAgICAgICAgICAgICAgICAgICAjIFJlc3BvbnNpYmxlIGZvciBzdG9yaW5nIGFuZCByZXRyaWV2aW5nIGRhdGEgKHZpYSB0aGUgRW50aXR5IAp8ICAgICAgICAgICAgICAgICAgICAgICAgICMgb2JqZWN0cyksIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZSBwb3N0Z3JlcyBkYXRhYmFzZS4KfAp8CnwKfAorLS0gc2VydmljZSAgICAgICAgICAgICAgIyBDb250YWlucyB0aGUgc2VydmljZXMgb2YgdGhlIGFwcGxpY2F0aW9uLiAKfCAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlc2UgYXJlIHJlc3BvbnNpYmxlIGZvciBpbXBsZW1lbnRpbmcgdGhlIGJ1c2luZXNzIGxvZ2ljIAp8ICAgICAgICAgICAgICAgICAgICAgICAgIyBvZiB0aGUgYXBwbGljYXRpb24uCnwKfAp8CnwKKy0tIHRlc3QtZGF0YS1nZW5lcmF0aW9uICMgR2VuZXJhdGVzIHJhbmRvbSB0ZXN0IGRhdGEgdGhhdCBpcyB1c2VkIGJ5IHRoZSB1bml0IHRlc3RzIAp8ICAgICAgICAgICAgICAgICAgICAgICAgIyBpbiBhbGwgdGhlIGFib3ZlIHN1Yi1wcm9qZWN0cy4gVGhpcyBzdWIgcHJvamVjdCBoZWxwcyAgCnwgICAgICAgICAgICAgICAgICAgICAgICAjIGltcHJvdmUgdGhlIHJlbGlhYmlsaXR5IG9mIHRoZSB1bml0IHRlc3RzLiAKfCAgICAgICAgICAgICAgICAgICAgICAgICMgQnkgZ2VuZXJhdGluZyByYW5kb20gdGVzdCBkYXRhLCB0aGUgdGVzdHMgd2lsbCB0ZXN0IGVkZ2UgY2FzZXMgdGhhdCAKfCAgICAgICAgICAgICAgICAgICAgICAgICMgbWF5IG5vdCBoYXZlIGJlZW4gY29uc2lkZXJlZCB3aXRoIGhhcmQtY29kZWQgdGVzdCBkYXRhLiAKfCAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBoZWxwcyBjYXRjaCB1bmV4cGVjdGVkIGJlaGF2aW9yIGFuZCBlbnN1cmVzIHRoYXQgCnwgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBjb2RlIHdvcmtzIGFzIGludGVuZGVkLgpgYGAKCi0gRWFjaCBzdWItcHJvamVjdCBoYXMgaXRzIG93biBidWlsZCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyAoaW4gdGhlIHJlc3BlY3RpdmUgYGBgYnVpbGQuZ3JhZGxlYGBgIGZpbGVzKSBhbmQgdGVzdHMKICBjYXNlcy4KLSBDaGFuZ2VzIGluIG9uZSBzdWItcHJvamVjdCB3b24ndCBhZmZlY3QgdGhlIG90aGVycy4KLSBJbXByb3ZlZCBidWlsZCBwZXJmb3JtYW5jZTogVGhpcyBHcmFkbGUgc3ViLXByb2plY3RzIHN0cnVjdHVyZSBhbGxvd3MgZm9yIGJ1aWxkaW5nIG9ubHkgdGhlIHBhcnRzIG9mIHRoZSBhcHBsaWNhdGlvbgogIHRoYXQgaGF2ZSBjaGFuZ2VkLiBUaGlzIGNhbiByZXN1bHQgaW4gZmFzdGVyIGJ1aWxkIHRpbWVzLgotIEJldHRlciBtb2R1bGFyaXR5OiBUaGlzIEdyYWRsZSBzdWItcHJvamVjdHMgc3RydWN0dXJlIGFsbG93cyB5b3UgdG8gZGV2ZWxvcCBhbmQgZGVwbG95IHlvdXIgYXBwbGljYXRpb24gYXMgbW9kdWxhcgogIGNvbXBvbmVudHMsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byByZXVzZSBjb2RlIGFjcm9zcyBkaWZmZXJlbnQgcHJvamVjdHMgYW5kIGNyZWF0ZSBzbWFsbGVyLCBtb3JlIGZvY3VzZWQgYXJ0aWZhY3RzLgoKIyMjIExvZ2dpbmcKClRoaXMgcHJvamVjdCB1c2VzIGxvZzRKMiB3aXRoIHRoZSBsb2dnaW5nIGNvbmZpZyAoYGBgYXBwbGljYXRpb24ucHJvcGVydGllc2BgYCBhbmQgYGBgbG9nNGoyLnByb3BlcnRpZXNgYGApIGxvY2F0ZWQgaW46CgpgYGBlYXRzeUFwcFNlcnZpY2VcZWF0c3lBcHBTZXJ2aWNlLWNvbnRyb2xsZXJcc3JjXG1haW5ccmVzb3VyY2VzYGBgCgpMb2dzIGZvciBhbGwgR3JhZGxlIHN1Yi1wcm9qZWN0cyB3cml0ZSB0byBgYGBsb2dmaWxlLmxvZ2BgYCBsb2NhdGVkIGluIHRoZSBgYGBlYXRzeUFwcFNlcnZpY2UtY29udHJvbGxlcmBgYCAgcHJvamVjdDoKCmBgYFxlYXRzeUFwcFNlcnZpY2VcZWF0c3lBcHBTZXJ2aWNlLWNvbnRyb2xsZXJcbG9nc2BgYAoKTG9nZ2luZyBsZXZlbHMgZm9yIHRoZSBsb2dmaWxlIGNhbiBiZSBjaGFuZ2VkIGluIGxvZzRqMi5wcm9wZXJ0aWVzIGZpbGUuCgojIyMgVGVzdGluZwoKVGhpcyBwcm9qZWN0IHVzZXMgW0pVbml0IDVdKGh0dHBzOi8vanVuaXQub3JnL2p1bml0NS8pIGFzIHRoZSB1bml0IHRlc3QgZnJhbWV3b3JrLiBJbiBhZGRpdGlvbiwgdGhlIGJlbG93IGxpYnJhcmllcyBhbmQKZnJhbWV3b3JrcyBhcmUgYWxzbyB1c2VkIGZvciB0ZXN0aW5nOgoKIyMjIyBGYWtlcgoKW0Zha2VyXShodHRwczovL2dpdGh1Yi5jb20vRGlVUy9qYXZhLWZha2VyKSBoYXMgYmVlbiB1c2VkIGZvciBnZW5lcmF0aW5nIHJhbmRvbSwgbG9jYWxpc2VkIHRlc3QgZGF0YSBpbiBhIHZhcmlldHkgb2YKZm9ybWF0cy4gVGhlIGRhdGEgZ2VuZXJhdGVkIGlzIHVzZWQgaW4gdW5pdCB0ZXN0cyB0byB2YWxpZGF0ZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGFwcGxpY2F0aW9uLiBCeSBnZW5lcmF0aW5nIHJhbmRvbSB0ZXN0CmRhdGEsIHRoZSB0ZXN0cyB3aWxsIHRlc3QgZWRnZSBjYXNlcyB0aGF0IG1heSBub3QgaGF2ZSBiZWVuIGNvbnNpZGVyZWQgd2l0aCBoYXJkLWNvZGVkIHRlc3QgZGF0YS4gVGhpcyBoZWxwcyBjYXRjaAp1bmV4cGVjdGVkIGJlaGF2aW9yIGFuZCBlbnN1cmVzIHRoYXQgdGhlIGNvZGUgd29ya3MgYXMgaW50ZW5kZWQuCgpBcyBtZW50aW9uZWQgaW4gdGhlIGdldHRpbmcgc3RhcnRlZCBzZWN0aW9uLCByYW5kb20gcmVjaXBlIGdlbmVyYXRpb24gY2FuIGFsc28gYmUgdHJpZ2dlcmVkIGV4dGVybmFsbHkgYW5kIHBlcnNpc3RlZCBmb3IKbWFudWFsIHRlc3RpbmcgYW5kIHZlcmlmaWNhdGlvbiBwdXJwb3Nlcy4KCldpdGggdGhlIHNlcnZlciBydW5uaW5nLCBvcGVuIGEgbmV3IGJhc2ggdGVybWluYWwgKGF0IHRoZSBwcm9qZWN0IHJvb3QpIGFuZCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgCi4vZ3JhZGxldyBnZW5lcmF0ZVJhbmRvbVJlY2lwZXMKYGBgCgpUaGlzIGV4ZWN1dGVzIGEgY3VzdG9tIGdyYWRsZSB0YXNrIHRoYXQgZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvZiByZWNpcGVzIChiZXR3ZWVuIDEgYW5kIDE1KSB3aGljaCB0aGVuIGdldCBwb3N0ZWQgdG8KeW91ciBsb2NhbCBhcHBsaWNhdGlvbidzIGBhZGRSZWNpcGVgIGVuZHBvaW50LiBUaGlzIGNhbiBiZSBleGVjdXRlZCBhcyBtYW55IHRpbWVzIGFzIG5lZWRlZCB0byByZWFjaCB0aGUgbGV2ZWwgb2YgdGVzdApkYXRhIHJlcXVpcmVkCgojIyMjIE1vY2tpdG8KCltNb2NraXRvXShodHRwczovL3NpdGUubW9ja2l0by5vcmcvKSBpcyBhIG1vY2tpbmcgZnJhbWV3b3JrIGZvciBKYXZhIHRoYXQgaGFzIGJlZW4gdXNlZCBpbiB0aGUgdW5pdCB0ZXN0cyB0byBpc29sYXRlIHRoZQpjb2RlIGJlaW5nIHRlc3RlZCBmcm9tIGl0cyBkZXBlbmRlbmNpZXMuIEJ5IHVzaW5nIG1vY2sgb2JqZWN0cyBpbiB0aGUgdW5pdCB0ZXN0cywgdGhlIHByb2plY3QgYXZvaWRzIGhhdmluZyB0byBzZXQgdXAgYQpmdWxsIHRlc3QgZW52aXJvbm1lbnQsIHdoaWNoIHNwZWVkcyB1cCB0ZXN0IGV4ZWN1dGlvbiBhbmQgbWFrZXMgdGhlIHRlc3RzIG1vcmUgZm9jdXNzZWQgb24gdGhlIHVuaXQgb2YgY29kZSB1bmRlciB0ZXN0LgoKIyMjIyBDb3ZlcmFsbHMKCltDb3ZlcmFsbHNdKGh0dHBzOi8vY292ZXJhbGxzLmlvLykgaXMgYSB3ZWItYmFzZWQgc2VydmljZSB0aGF0IHByb3ZpZGVzIHRoaXMgcHJvamVjdCB3aXRoIHRlc3QgY292ZXJhZ2UgYW5hbHlzaXMgKGFzCmlsbHVzdHJhdGVkIGluIHRoZSBjb3ZlcmFnZSBiYWRnZSBhdCB0aGUgdG9wIG9mIHRoaXMgcmVhZG1lKS4gVGhpcyBhbGxvd3MgZm9yIGNvZGViYXNlIHRlc3QgY292ZXJhZ2UgdG8gYmUgYW5hbHlzZWQgYW5kCmlkZW50aWZ5IGFyZWFzIHdoZXJlIG1vcmUgdGVzdHMgYXJlIG5lZWRlZC4gVGhpcyBoYXMgYmVlbiB1c2VkIHRvIGhlbHAgZW5zdXJlIHRoYXQgdGhlIGNvZGUgaXMgdGhvcm91Z2hseSB0ZXN0ZWQgYW5kIHRvCnJlZHVjZSB0aGUgcmlzayBvZiBidWdzIGluIHByb2R1Y3Rpb24uCgpUaGUgY292ZXJhbGxzIHRhc2sgY2FuIGJlIGV4ZWN1dGVkIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kIGF0IHRoZSBwcm9qZWN0IHJvb3Q6CgpgYGAgLi9ncmFkbGV3IGNvdmVyYWxscyBgYGAKClRoZSBodG1sIHJlcG9ydCBjYW4gYmUgZm91bmQgYXQgYGBgcHJvamVjdCByb290ID4gYnVpbGQgPiByZXBvcnRzID4gamFjb2NvID4gamFjb2NvUm9vdFJlcG9ydCA+IGh0bWwgPiBpbmRleC5odG1sYGBgCgojIyMgQVBJIERvY3VtZW50YXRpb24KCkEgSlNPTiBTd2FnZ2VyIHNwZWMgY2FuIGJlIGZvdW5kIGF0ICcvdjMvYXBpLWRvY3MnLiBMb2NhbGx5IHRoaXMgd2lsbCBiZSAnaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YzL2FwaS1kb2NzJy4KCkEgVUkgdmVyc2lvbiBjYW4gYmUgc2VlbiBsb2NhbGx5IHVzaW5nIHRoZSBbU3dhZ2dlciBVSSBwYWdlXShodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS5odG1sKS4KClRoaXMgU3dhZ2dlciBzcGVjaWZpY2F0aW9uIGlzIGEgZmlsZSB0aGF0IHNwZWNpZmllcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBBUEkuIEl0IGlzIGEgdXNlci1mcmllbmRseSBpbnRlcmZhY2UgdGhhdApkZWZpbmVzIHRoZSBlbmRwb2ludHMsIHJlcXVlc3RzIGFuZCByZXNwb25zZSBmb3JtYXRzIGFuZCB0aGUgZGF0YSBtb2RlbHMgdGhhdCBhcmUgdXNlZCBieSB0aGUgQVBJLiBUaGlzIG1ha2VzIGl0IGVhc2llcgp0byBnZW5lcmF0ZSBjbGllbnQtc2lkZSBjb2RlIGZvciBjb25zdW1pbmcgdGhlIEFQSSAoc3VjaCBhcwp0aGUgW2VhdHN5LXJlYWN0LXVpXShodHRwczovL2dpdGh1Yi5jb20vRE0xc3QvZWF0c3ktcmVhY3QtdWkvKSkgc2luY2UgdGhlIHNwZWNpZmljYXRpb24gcHJvdmlkZXMgYWxsIG5lY2Vzc2FyeQppbmZvcm1hdGlvbiBhYm91dCB0aGUgQVBJJ3Mgc3RydWN0dXJlLCB0aGVyZWZvcmUgcmVkdWNpbmcgdGhlIHJpc2sgb2YgZGVmZWN0cy4KClRoZSBTd2FnZ2VyIFNwZWMgaXMgY3JlYXRlZCB3aXRoIHRoZSBgYGBzcHJpbmdkb2Mtb3BlbmFwaS11aWBgYCBsaWJyYXJ5IGFuZCBjb25maWd1cmVkIGluIHRoZSBgYGBvcGVuQXBpQ29uZmlndXJhdGlvbmBgYApmaWxlIGxvY2F0ZWQgaW4gdGhlIGBgYGVhdHN5QXBwU2VydmljZS1jb250cm9sbGVyYGBgIHByb2plY3QuCgojIyMjIE1hbnVhbCBpbnNwZWN0aW9uIG9mIGEgbG9jYWwgQVBJIGRlcGxveW1lbnQKCkFzIG1lbnRpb25lZCBhYm92ZSwgdGhpcyBzZXJ2aWNlIGhhcyB1bml0IHRlc3RzICh1c2luZyBbSlVuaXQgNV0oaHR0cHM6Ly9qdW5pdC5vcmcvanVuaXQ1LykKLCBbTW9ja2l0b10oaHR0cHM6Ly9zaXRlLm1vY2tpdG8ub3JnLykKYW5kIFtGYWtlcl0oaHR0cHM6Ly9naXRodWIuY29tL0RpVVMvamF2YS1mYWtlcikpIHdpdGggdGVzdCBjb3ZlcmFnZSBkaXNwbGF5ZWQgb24gdGhlIGNvdmVyYWdlIGJhZGdlIGluIHRoaXMgUmVhZE1lLgpIb3dldmVyLCB0aGlzIFN3YWdnZXIgVUkgcHJvdmlkZXMgYSB3YXkgZm9yIHRoZSBBUEkgdG8gYmUgdGVzdGVkIG1hbnVhbGx5IGJ5IG1ha2luZyByZXF1ZXN0cyBhbmQgc2VlaW5nIHRoZSByZXNwb25zZQpkaXJlY3RseSBpbiB0aGUgYnJvd3Nlci4gVGhpcyBhbGxvd3MgZm9yIGVhc2llciBkZWJ1Z2dpbmcgYW5kIHZhbGlkYXRpb24gb2YgdGhlIEFQSSdzIGJlaGF2aW91ci4gRXhhbXBsZSBiZWxvdzoKCiogT25jZSB0aGUgc2VydmljZSBpcyBydW5uaW5nIG5hdmlnYXRlIHRvIHRoZSBbU3dhZ2dlciBVSSBwYWdlXShodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS5odG1sKS4KKiBTZWxlY3QgdGhlICdBcGkgQ29udHJvbGxlcicKKiBTZWxlY3QgdGhlICdQT1NUJyByZXF1ZXN0IGZvciBhZGRpbmcgYSBuZXcgcmVjaXBlLgoqIFNlbGVjdCAiVHJ5IGl0IG91dCIgYW5kIGVudGVyIGEgcmVxdWVzdCBib2R5IG9mIHlvdXIgY2hvaWNlIGFzIGEgdGVzdC4gRS5nLgoKYGBgCnsKICAiaW5ncmVkaWVudFNldCI6IFsKICAgICJCZWFucyIsICJUb2FzdCIKICBdLAogICJtZXRob2QiOiB7CiAgICAiMSI6ICJNaXJjb3dhdmUgQmVhbnMiLAogICAgIjIiOiAiVG9hc3QgQnJlYWQiLAogICAgIjMiOiAiQ29tYmluZSBCZWFucyBhbmQgVG9hc3QiCiAgfSwKICAibmFtZSI6ICJCZWFucyBvbiBUb2FzdCIKfQpgYGAKCiogU2VsZWN0ICJFeGVjdXRlIi4KKiBJbnNwZWN0IHRoZSBzZXJ2ZXIgcmVzcG9uc2UgYW5kIHRoZSByZXNwb25zZSBib2R5IHdpbGwgZGlzcGxheSB0aGUgbmV3IHJlY2lwZSBvYmplY3QgdGhhdCBoYXMgYmVlbiBjcmVhdGVkIHdpdGggeW91cgogIGNob3NlbiBuYW1lLgoKIyMjIERlcGxveSB5b3VyIG93biBpbnN0YW5jZSAodmlhIERvY2tlciAmIERvY2tlciBDb21wb3NlKToKCioqUHJlLXJlcXVpc2l0ZToqKiBEb2NrZXIgJiBEb2NrZXIgQ29tcG9zZSBpbnN0YWxsZWQgb24geW91ciBtYWNoaW5lIGlmIHlvdSB3aXNoIHRvIGJ1aWxkIGFuZCBydW4gdGhlIERvY2tlciBpbWFnZXMgaW4KdGhlIHJlcG9zaXRvcnkuIFRoZSBtZXRob2Qgb2ZmZXJzIGFuIGFsdGVybmF0aXZlIGFwcHJvYWNoIGJ5IGFsbG93aW5nIFBvc3RncmVzLCBQZ0FkbWluIGFuZCB0aGUgRWF0c3ktQVBJIHRvIGJlIGRlcGxveWVkCmFuZCBydW4gYXMgRG9ja2VyIGNvbnRhaW5lcnMuCgpUaGUgYnVpbHQgRG9ja2VyIGltYWdlIG9mIHRoZSBFYXRzeSBBUEkgY2FuIGJlIGZvdW5kIG9uCkRvY2tlckh1YiBbaGVyZV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2RtMXN0L2VhdHN5LWFwaS1kb2NrZXIpCgotIENvcHkgdGhlIGRvY2tlci1jb21wb3NlLnltbCBmcm9tIHRoZSByZXBvc2l0b3J5IGxvY2F0ZWQgYXQ6CgpgYGA8cHJvamVjdFJvb3Q+XGFsdGVybmF0aXZlRGVwbG95bWVudE9wdGlvbnNcZG9ja2VyLWNvbXBvc2UueW1sYGBgCgoqX1BsZWFzZSBub3RlIHRoaXMgaXMgbm90IHRoZSBkb2NrZXItY29tcG9zZS55bWwgZmlsZSBsb2NhdGVkIGF0IHByb2plY3Qgcm9vdCAod2hpY2ggYnVpbGRzIHRoZSBpbWFnZSBmcm9tIHRoZQpkb2NrZXJmaWxlIHJhdGhlciB0aGFuIHRoaXMgY29uZmlnIHdoaWNoIHB1bGxzIHRoZSBsYXRlc3QgYnVpbHQgaW1hZ2UgZnJvbSBkb2NrZXJodWIpLgoKLSBUcmFuc2ZlciB0aGUgYWx0ZXJuYXRpdmVEZXBsb3ltZW50T3B0aW9uc1xkb2NrZXItY29tcG9zZS55bWwgZmlsZSB0byB5b3VyIG1hY2hpbmUgd2hlcmUgeW91IHdpbGwgYmUgcnVubmluZyB0aGUKICBzZXJ2aWNlLiAoWW91ciBtYWNoaW5lIHdpbGwgbmVlZCBEb2NrZXIgYW5kIERvY2tlci1Db21wb3NlIGluc3RhbGxlZCBhcyBkZXRhaWxlZCBpbiB0aGUgcHJlLXJlcXVpc2l0ZSkKLSBSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIGluIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91IGhhdmUgcGxhY2VkIHRoZSBkb2NrZXItY29tcG9zZS55bWwgZmlsZSB0byBydW4gdGhlIGFwcGxpY2F0aW9uOgoKYGBgCmRvY2tlci1jb21wb3NlIHVwIC1kCmBgYAoKVGhpcyBjb21tYW5kIHdpbGwgcnVuIHRoZSBlYXRzeSBBUEkgc2VydmljZSwgdGhlIFBvc3RncmVzIERCIGFuZCBwZ0FkbWluIGluIERvY2tlciBDb250YWluZXJzLgoKRm9yIGZ1dHVyZSBkZXBsb3ltZW50cywgZXhwbGljaXRseSBjaGVjayB0aGUgZG9ja2VyaHViIHJlcG9zaXRvcnkgdG8gZW5zdXJlIHlvdSBhcmUgYnVpbGRpbmcgdGhlIGltYWdlIHdpdGggdGhlIGxhdGVzdApjaGFuZ2VzOgoKYGBgCmRvY2tlciBwdWxsIGRtMXN0L2VhdHN5LWFwaS1kb2NrZXIgJiYgZG9ja2VyLWNvbXBvc2UgdXAgLWQKYGBgCgotIFRoZSBzZXJ2aWNlIGNhbiBiZSBzcHVuIGRvd24gd2l0aCB0aGUgYGBgZG9ja2VyLWNvbXBvc2UgZG93bidgYGAgY29tbWFuZC4KCldpdGggRG9ja2VyLUNvbXBvc2UgdGhlIFBvc3RncmVzIGNvbnRhaW5lciBpcyBzdGFydGVkIGFuZCBlc3RhYmxpc2hlZCBmaXJzdCBhcyB0aGUgQVBJIHNlcnZpY2UgZGVwZW5kcyBvbiB0aGUKcG9zdGdyZXNTUUwgY29udGFpbmVyIGJlaW5nIHVwIGFuZCBoZWFsdGh5LgoKLSBOYXZpZ2F0ZSB0byB0aGUgU3dhZ2dlciBVSSBwYWdlIHRvIHNlZSB0aGUgQVBJIHNlcnZpY2UgcnVubmluZwoKYGBgaHR0cDovLzx5b3VyX2hvc3Q+OjgwODAvc3dhZ2dlci11aS5odG1sYGBgCgoqIFlvdSBjYW4gYWxzbyBmb2xsb3cgdGhlIGFib3ZlIHN0ZXBzLCBidXQgd2l0aCB0aGUgYGBgZG9ja2VyLWNvbXBvc2UueW1sYGBgIGZpbGUgbG9jYXRlZCBhdCB0aGUgcHJvamVjdCByb290IHRvIGJ1aWxkCiAgYW4gaW1hZ2UgZnJvbSB0aGUgcHJvamVjdCBkb2NrZXJmaWxlLCByYXRoZXIgdGhhbiBwdWxsaW5nIHRoZSBidWlsdCBpbWFnZSBob3N0ZWQgb24gZG9ja2VyaHViLiBJZiB1c2luZyB0aGlzIGFwcHJvYWNoLAogIHlvdSB3aWxsIG5lZWQgdGhlIGNvZGViYXNlIHN0b3JlZCBsb2NhbGx5IG9uIHlvdXIgaG9zdCAocmF0aGVyIHRoYW4ganVzdCB0aGUgZG9ja2VyLWNvbXBvc2UueW1sIGZpbGUgbG9jYXRlZCBpbiB0aGUKICBhbHRlcm5hdGl2ZURlcGxveW1lbnRPcHRpb25zIGZvbGRlcikuCgojIyMgVGhlIGxpdmUgaW5zdGFuY2Ugb2YgdGhpcyBhcHBsaWNhdGlvbiBvbiBSZW5kZXIuY29tCgpBcyBtZW50aW9uZWQgYWJvdmUsIHRoZSBFYXRzeSBBUEkgaXMgZGVwbG95ZWQgb24gUmVuZGVyIGJ5IHVzaW5nIHRoZSBgYGBkb2NrZXJmaWxlYGBgIGluIHRoZSBwcm9qZWN0IHJvb3QuIEFzIHRoaXMKcHJvamVjdCB1c2VzIHRoZSBmcmVlLXRpZXIgcHJvZHVjdHMgb24gW1JlbmRlci5jb21dKGh0dHBzOi8vcmVuZGVyLmNvbSksIHRoZXJlZm9yZSBvbmx5IHRoZSBtb3N0IGxpZ2h0d2VpZ2h0CmluZnJhc3RydWN0dXJlIGlzIGF2YWlsYWJsZS4gQXMgYSByZXN1bHQsIGluIG9yZGVyIHRvIG1ha2UgZGVwbG95bWVudCBwb3NzaWJsZSwgYW5kIHJlZHVjZSBpbWFnZSBzcGluLXVwIHRpbWVzICh3aGVuIHRoZQpzZXJ2aWNlIGlzIGNvbGQpCmV2ZXJ5IGVmZm9ydCBoYXMgYmVlbiBtYWRlIHRvIHJlZHVjZSB0aGUgZG9ja2VyIGltYWdlIHNpemUuIFRoaXMgaW5jbHVkZXM6CgoqIExheWVyaW5nIHRoZSBTcHJpbmcgYm9vdCBKYXIgZmlsZSBzbyB0aGF0IGl0IGlzIGJ1aWx0IGludG8gNCBsYXllcnMuIFRoaXMgaXMgZG9uZSBpbiB0aGUgQ29udHJvbGxlcgogIHByb2plY3QgYGBgYnVpbGQuZ3JhZGxlYGBgIGZpbGUuCiogVGhlIGRlY29tcG9zaXRpb24gb2YgdGhlIGFwcGxpY2F0aW9uIGludG8gZGlmZmVyZW50IGxheWVycyBhbGxvd3MgZm9yIHRoZSBjcmVhdGlvbiBvZiBhbiBlZmZpY2llbnQgRG9ja2VyIGltYWdlLCBieQogIGNyZWF0aW5nIGEgbXVsdGktc3RhZ2UgYGBgZG9ja2VyZmlsZWBgYCAobG9jYXRlZCBpbiB0aGUgcHJvamVjdCByb290KS4gRWZmaWNpZW5jeSBpcyBpbXByb3ZlZCBhbmQgc3RhcnQgdXAgdGltZSBvZiB0aGUKICBkb2NrZXIgaW1hZ2UgcmVkdWNlZCwgZXNwZWNpYWxseSBhcyBpdCBpcyBiZWluZyBydW4gb24gbGltaXRlZCBpbmZyYXN0cnVjdHVyZS4KCiMjIFRPRE8KCiogQWRkIEdvb2dsZSBzaG9wcGluZyBsaXN0IGludGVncmF0aW9uLgoqIEFkZCBhYmlsaXR5IHRvIHNlYXJjaCBmb3IgcmVjaXBlLgoqIEFkZCBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgYmVzdCBtYXRjaCBiYXNlZCBvbiBzZWFyY2ggaW5ncmVkaWVudHMuCiogQWRkIHRoZSBjb25jZXB0IG9mIHVzZXJzLgoqIEFkZCBjb21wb25lbnQgdGVzdCBwYWNrLgo= readmeEtag: '"1237c133b1d7a02179fec8ebbf19c82a71a86be8"' readmeLastModified: Sun, 02 Apr 2023 20:27:59 GMT repositoryId: 432201412 description: 'Eatsy App Service for creating and editing your favourite recipies! ' created: '2021-11-26T14:12:29Z' updated: '2023-02-16T20:31:48Z' language: Java archived: false stars: 0 watchers: 1 forks: 1 owner: DM1st logo: https://avatars.githubusercontent.com/u/30046844?v=4 license: MIT repoEtag: '"2752dfa94bf43b2b48e64cdd398605d75c507b54504b3c0088a2cdc6e9bf63e2"' repoLastModified: Thu, 16 Feb 2023 20:31:48 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/dm1st/eatsy - source: openapi3 tags repository: https://github.com/clustermarket/clustermarket-api v3: true repositoryMetadata: base64Readme: >- Q2x1c3Rlcm1hcmtldCBBUEkKPT09PT09PT09PT09PT09PT0KCkZ1bGwgZG9jdW1lbnRhdGlvbiBhdmFpbGFibGUgb246IFthcGlkb2NzLmNsdXN0ZXJtYXJrZXQuY29tXShodHRwczovL2FwaWRvY3MuY2x1c3Rlcm1hcmtldC5jb20vKQo= readmeEtag: '"09a18d4280e5619f03096dcdf808eeb2a05d58e6"' readmeLastModified: Wed, 01 Mar 2023 13:42:34 GMT repositoryId: 419906738 description: Mirror of https://gitlab.com/clustermarket/clustermarket-api/ created: '2021-10-21T23:32:48Z' updated: '2022-06-24T11:32:52Z' language: JavaScript archived: false stars: 0 watchers: 0 forks: 0 owner: clustermarket logo: https://avatars.githubusercontent.com/u/82224373?v=4 repoEtag: '"769598e791f2b361bb8c1787a2b451f3700820ca145ca09461ad961b01e33d68"' repoLastModified: Fri, 24 Jun 2022 11:32:52 GMT foundInMaster: true category: Server id: b6fe55f17fe5c615f86cf6909318a46b - source: openapi3 tags repository: https://github.com/semestry/api-specs v3: true repositoryMetadata: base64Readme: >- IyBhcGktc3BlY3MKClRoaXMgcmVwb3NpdG9yeSBjb250YWlucyBBUEkgc3BlY2lmaWNhdGlvbnMgYW5kIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uIGZvciBFdmVvaCdzIEFQSXMuCgojIyBQdWJsaXNoaW5nCgpUaGUgT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbnMgYXJlIGdlbmVyYXRlZCB1c2luZyBSZURvYy4gClByb2R1Y3Rpb24gQVBJIGRvY3VtZW50YXRpb24gcGFnZXMgYXJlIGF1dG9tYXRpY2FsbHkgcHVibGlzaGVkIGJ5IEdpdGh1YiBQYWdlcyB3aGVuIGNoYW5nZXMgYXJlIHB1c2hlZCB0byB0aGUgYG1hc3RlcmAgYnJhbmNoLgoKIyMgRGV2ZWxvcG1lbnQKCiMjIyBWaWV3aW5nIGRvY3VtZW50YXRpb24gbG9jYWxseQoKU3BlY2lmaWNhdGlvbnMgY2FuIGJlIHNlcnZlZCBsb2NhbGx5IHVzaW5nIFlhcm4gY29tbWFuZHM6CgpgeWFybiBzZXJ2ZTo8c3BlYz5gCgpGb3IgZXhhbXBsZToKCmB5YXJuIHNlcnZlOmVjaG8td2ViaG9va3NgCgpEb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhdCBgaHR0cDovL2xvY2FsaG9zdDozMDAwYC4KCkNoYW5nZXMgdG8gc291cmNlIGZpbGVzIGFyZSBhdXRvbWF0aWNhbGx5IHByb2Nlc3NlZCwgYWx0aG91Z2ggeW91ciBicm93c2VyIHNob3VsZCBiZSBtYW51YWxseSByZWZyZXNoZWQuCgojIyMgTGludGluZyBzcGVjaWZpY2F0aW9ucwoKTGludGluZyBpcyBwZXJmb3JtZWQgdXNpbmcgU3BlY2N5LgoKTGludCB0aGUgc3BlY3MgdXNpbmcgdGhlIGZvbGxvd2luZyBZYXJuIGNvbW1hbmQ6CgpgeWFybiBsaW50YAoKIyMjIEFkZGluZyBhIEFQSSBzcGVjaWZpY2F0aW9uCgotIEFkZCB0aGUgT3BlbkFQSSAzLjAgZmlsZSB0byBgL3NwZWNgLgotIENyZWF0ZSBhIEhUTUwgZmlsZSBpbiBgL2RvY3NgIHNlcnZpbmcgdGhlIHNwZWNpZmljYXRpb24uCi0gQWRkIGEgbGluayB0byB0aGUgc3BlY2lmaWNhdGlvbiBpbiBgL2RvY3MvaW5kZXguaHRtbGAuIAotIEFkZCBhIGBsaW50OjxzcGVjPmAgc2NyaXB0IGluIGBwYWNrYWdlLmpzb25gLgotIEFkZCBhIGBzZXJ2ZTo8c3BlYz5gIHNjcmlwdCBpbiBgcGFja2FnZS5qc29uYC4K readmeEtag: '"c6c5d9b0cfded6b2f34d656acbd3edec7b43aa82"' readmeLastModified: Mon, 10 Aug 2020 07:45:20 GMT repositoryId: 187231129 description: Eveoh API specifications created: '2019-05-17T14:31:35Z' updated: '2024-07-01T14:26:19Z' language: null archived: true stars: 0 watchers: 6 forks: 0 owner: semestry logo: https://avatars.githubusercontent.com/u/1628298?v=4 repoEtag: '"dd8fbb265ca12937b501fc06d3331b9cc3660087ab154344ca190c1030dd2090"' repoLastModified: Mon, 01 Jul 2024 14:26:19 GMT foundInMaster: true category: - Documentation - Parsers - Server Implementations id: da535d66a142ee78c5bc699dd795fd45 - source: openapi3 tags repository: https://github.com/koriit/openapi-matcher v3: true repositoryMetadata: base64Readme: >- PSBPcGVuQVBJIE1hdGNoZXIKCmltYWdlOmh0dHBzOi8vZ2l0aHViLmNvbS9Lb3JpaXQvb3BlbmFwaS1tYXRjaGVyL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnlhbWwvYmFkZ2Uuc3ZnW0J1aWxkLCBsaW5rPSJodHRwczovL2dpdGh1Yi5jb20vS29yaWl0L29wZW5hcGktbWF0Y2hlci9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55YW1sIl0KaW1hZ2U6aHR0cHM6Ly93d3cuY29kZWZhY3Rvci5pby9yZXBvc2l0b3J5L2dpdGh1Yi9rb3JpaXQvb3BlbmFwaS1tYXRjaGVyL2JhZGdlW0NvZGVGYWN0b3IsbGluaz1odHRwczovL3d3dy5jb2RlZmFjdG9yLmlvL3JlcG9zaXRvcnkvZ2l0aHViL2tvcmlpdC9vcGVuYXBpLW1hdGNoZXJdCmltYWdlOmh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLSVFMiU5RCVBNC1GRjQwODEuc3ZnW2t0bGludCxsaW5rPWh0dHBzOi8va3RsaW50LmdpdGh1Yi5pby9dCgppbWFnZTpodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLWNlbnRyYWwvdi9jb20ua29yaWl0LmtvdGxpbi9vcGVuYXBpLW1hdGNoZXIuc3ZnP2xhYmVsPU1hdmVuJTIwQ2VudHJhbFtNYXZlbiBDZW50cmFsLCBsaW5rPSJodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9ZzolMjJjb20ua29yaWl0LmtvdGxpbiUyMiUyMEFORCUyMGE6JTIyb3BlbmFwaS1tYXRjaGVyJTIyIl0KaW1hZ2U6aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9rb3RsaW4tMS42LjEwLWJsdWUuc3ZnP2xvZ289a290bGluW0tvdGxpbiwgbGluaz1odHRwOi8va290bGlubGFuZy5vcmddCmltYWdlOmh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2Uva29yaWl0L29wZW5hcGktbWF0Y2hlcltHaXRIdWJdCgpXQVJOSU5HOiBGcm9tIHZlcnNpb24gMC43LjAgYWxsIHBhY2thZ2UgbmFtZXMgaGF2ZSBiZWVuIHJlbmFtZWQgdG8gbWF0Y2ggbmV3IGFydGlmYWN0IGdyb3VwIGlkLgoKT3BlbkFQSSBtYXRjaGVyIGZvciBLb3RsaW4gYWxsb3dzIGNvbXBhcmluZyAyIHNwZWNpZmljYXRpb25zIGFnYWluc3QgZWFjaCBvdGhlci4KCltXQVJOSU5HXQpUaGlzIGxpYnJhcnkgaW4gKldvcmsgSW4gUHJvZ3Jlc3MqLiBJdCBkb2Vzbid0IHN1cHBvcnQgYWxsIGVsZW1lbnRzIG9mIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiB5ZXQuIFRoZSBzdXBwb3J0IHNjb3BlIGNhbiBiZQpjaGVja2VkIGluZGl2aWR1YWxseSBmb3IgZXZlcnkgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIG9iamVjdCBpbiB0aGUgYGtvcnJpdC5rb3RsaW4ub3BlbmFwaS5tb2RlbGAgcGFja2FnZS4KCgo9PSBSZWFkaW5nIE9wZW5BUEkKVGhpcyBsaWJyYXJ5IGluY2x1ZGVzIGFuIE9wZW5BUEkgcmVhZGVyIHRoYXQgYWxsb3dzIHBhcnNpbmcgeW91ciBPcGVuQVBJIHNwZWNpZmljYXRpb24gaW4gWUFNTCBmb3JtYXQgaW50bwphbiBpbi1tZW1vcnkgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgaW4gYSBtYXRjaGVyLgoKW3NvdXJjZSxrb3RsaW5dCi0tLS0KdmFsIGRvYzogT3BlbkFQSSA9IE9wZW5BUElSZWFkZXIoKS5sb2FkKHt9LmphdmFDbGFzcy5nZXRSZXNvdXJjZUFzU3RyZWFtKCIvb3BlbmFwaS55YW1sIikpCi0tLS0KCltOT1RFXQpVbnN1cHBvcnRlZCBlbGVtZW50cyBhcmUgaWdub3JlZC4KCj09IFZhbGlkYXRpbmcgT3BlbkFQSQpPbmNlIHlvdSBoYXZlIDIgT3BlbkFQSSBvYmplY3RzIHlvdSBjYW4gbWF0Y2ggdGhlbSBjaGVja2luZyBmb3IgYW55IHNpZ25pZmljYW50IGRpZmZlcmVuY2VzLgoKQSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGlzIHVuZGVyc3Rvb2QgYXMgYSBkaXZlcmdlbmNlIHRoYXQgbGVhZHMgdG8gb3IgbWF5IGxlYWQgdG8gYSBjb21wYXRpYmlsaXR5IGJyZWFrLgoKVGhlIGdlbmVyYWwgaWRlYSBpcyB0byB2YWxpZGF0ZSB5b3VyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBhZ2FpbnN0IHlvdXIgY29kZSBpbnN0ZWFkIG9mIHNwZWMvY29kZSBnZW5lcmF0aW9uLgoKW3NvdXJjZSxrb3RsaW5dCi0tLS0KdmFsIHNvdXJjZTogT3BlbkFQSSA9IC4uLiAvLyBBbmFseXplIHlvdXIgY29kZQoKTE9HLmluZm8oIlJlYWRpbmcgT3BlbkFQSSBzcGVjLi4uIikKdmFsIGRvYzogT3BlbkFQSSA9IE9wZW5BUElSZWFkZXIoKS5sb2FkKHt9LmphdmFDbGFzcy5nZXRSZXNvdXJjZUFzU3RyZWFtKCIvb3BlbmFwaS55YW1sIikpCgpMT0cuaW5mbygiVmFsaWRhdGluZyBzcGVjLi4uIikKdmFsIGVycm9ycyA9IE9wZW5BUElNYXRjaGVyKCkubWF0Y2goZG9jLCBzb3VyY2UpCgppZiAoZXJyb3JzLmlzTm90RW1wdHkoKSkgewogICAgTE9HLmluZm8oIlJlc3VsdCBvZiBjb2RlIGFuYWx5c2lzOlxue30iLCBzb3VyY2UpCgogICAgZXJyb3JzLmZvckVhY2ggewogICAgICAgIExPRy5lcnJvcihpdCkKICAgIH0KCiAgICBmYWlsKCJUaGVyZSBhcmUgJHtlcnJvcnMuc2l6ZX0gdmFsaWRhdGlvbiBlcnJvcnMhIikKfSBlbHNlIHsKICAgIExPRy5pbmZvKCJPSyEiKQp9Ci0tLS0KCg== readmeEtag: '"8f67f47d94cef85082b804cc49af58678253f961"' readmeLastModified: Sun, 30 Jan 2022 20:15:37 GMT repositoryId: 217255706 description: >- OpenApi matcher for kotlin, allows to compare 2 specifications against each other. created: '2019-10-24T08:58:03Z' updated: '2022-01-30T20:19:36Z' language: Kotlin archived: false stars: 0 watchers: 1 forks: 0 owner: Koriit logo: https://avatars.githubusercontent.com/u/8916393?v=4 license: MIT repoEtag: '"72ab6a75c17eea1ba5a7fb37d13908b7da60ea9bf16b3a67ea87e5cc678fac81"' repoLastModified: Sun, 30 Jan 2022 20:19:36 GMT foundInMaster: true category: Data Validators id: 8a1ce2f4655ce6c57fd36e72479933f1 - source: openapi3 tags repository: https://github.com/lantrix/phpipam-swagger-openapi v3: true repositoryMetadata: base64Readme: >- IyBwaHBpcGFtLXN3YWdnZXItb3BlbmFwaQoKcGhwSVBBTSBPcGVuQVBJIDMgX2FrYV8gU3dhZ2dlciBTcGVjIGJhc2VkIHVwb24gdGhlIFtwaHBJUEFNIEFQSSBEb2N1bWVudGF0aW9uXShodHRwczovL3BocGlwYW0ubmV0L2FwaS9hcGlfZG9jdW1lbnRhdGlvbi8pCgpJbXBvcnQgdGhlIE9wZW5BUEkgW1lBTUwtUmVzb2x2ZWQgc3BlY10oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2xhbnRyaXgvcGhwaXBhbS1zd2FnZ2VyLW9wZW5hcGkvbWFzdGVyL3lhbWwtcmVzb2x2ZWQvcGhwaXBhbS1zd2FnZ2VyLnlhbWwpIGludG8gdGhlIHRvb2wgb2YgeW91ciBjaG9pY2UsIGUuZy4gW0luc29tbmlhXShodHRwczovL2luc29tbmlhLnJlc3QpIG9yIFtQb3N0bWFuXShodHRwczovL3d3dy5nZXRwb3N0bWFuLmNvbSkKCkV4cG9ydCB0aGUgQ2xpZW50U0RLIG9yIFNlcnZlclN0dWIgYXMgbmVlZGVkIG92ZXIgYXQgdGhlIFtTd2FnZ2VySHViXShodHRwczovL2FwcC5zd2FnZ2VyaHViLmNvbS9hcGlzL2xhbnRyaXgvcGhwaXBhbS8pLgo= readmeEtag: '"1b0c553b7fb6f7a05dd13ba8ee4e2dfad8ce0ac8"' readmeLastModified: Wed, 02 Oct 2019 05:23:55 GMT repositoryId: 212253611 description: PHPIPAM OpenAPI 3 aka Swagger created: '2019-10-02T04:14:43Z' updated: '2019-10-02T05:23:58Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: lantrix logo: https://avatars.githubusercontent.com/u/117008?v=4 license: GPL-3.0 repoEtag: '"2abdffd9ff39de8bc51a98a0c18efde60634391c76100a40692810909b8bde41"' repoLastModified: Wed, 02 Oct 2019 05:23:58 GMT foundInMaster: true category: Code Generators id: 1eb337fca8933c898f918e1eef1ddc47 - source: openapi3 tags repository: https://github.com/ahelord/boilerplate-express-sequelize v3: true repositoryMetadata: base64Readme: >- IyBib2lsZXJwbGF0ZS1leHByZXNzLXNlcXVlbGl6ZQoKIyBSdW4gRG9ja2VyCgogICBgYGBiYXNoCiAgIGRvY2tlci1jb21wb3NlIHN0YXJ0CmBgYAoKIyMgVXNlZnVsIERvY2tlciBjb21tYW5kcwoKMS4gSWYgeW91IHdhbnQgdG8gY2hlY2sgdGhhdCBhbGwgY29udGFpbmVycyBhcmUgdXAgOgoKICAgYGBgYmFzaAogICBkb2NrZXItY29tcG9zZSBwcwogICBgYGAKCjEuIE90aGVyIERvY2tlciBjb21tYW5kcyA6CgogICBgYGBiYXNoCiAgICMgU3RhcnQgRG9ja2VyCiAgIGRvY2tlci1jb21wb3NlIHN0YXJ0CgogICAjIFJlc3RhcnQgRG9ja2VyCiAgIGRvY2tlci1jb21wb3NlIHJlc3RhcnQKCiAgICMgU3RvcCBEb2NrZXIKICAgZG9ja2VyLWNvbXBvc2Ugc3RvcAoKICAgIyBEZWxldGUgYWxsIGNvbnRhaW5lcnMKICAgZG9ja2VyIHJtICQoZG9ja2VyIHBzIC1hcSkKCiAgICMgRGVsZXRlIGFsbCBpbWFnZXMKICAgZG9ja2VyIHJtaSAkKGRvY2tlciBpbWFnZXMgLXEpCiAgIGBgYAoKMS4gSG93IHRvIGdldCBhIERvY2tlciBjb250YWluZXIncyBJUCBhZGRyZXNzIGZyb20gdGhlIGhvc3QgPwoKICAgYGBgYmFzaAogICBkb2NrZXIgaW5zcGVjdCAtZiAne3tyYW5nZSAuTmV0d29ya1NldHRpbmdzLk5ldHdvcmtzfX17ey5JUEFkZHJlc3N9fXt7ZW5kfX0nIDxjb250YWluZXI+CiAgIGRvY2tlciBpbnNwZWN0ICQoZG9ja2VyIHBzIC1mIG5hbWU9PHNlcnZpY2U+IC1xKSB8IGdyZXAgSVBBZGRyZXNzCiAgIGBgYAoKLS0tCgojIFJ1biBMb2NhbCBvbmx5IG5vZGUgMjAKLSBjZCBzcmMKLSBudm0gdXNlIDIwCi0gbnBtIGkKLSBucG0gcnVuIG5vZGVtb24KCg== readmeEtag: '"04288db065a3df71eb99754dbc431e89d682f127"' readmeLastModified: Thu, 12 Sep 2024 05:19:48 GMT repositoryId: 280018723 description: 'boilerplate express sequelize swagger docker eslint husky precommit ' created: '2020-07-16T01:08:26Z' updated: '2024-09-12T05:19:54Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: ahelord logo: https://avatars.githubusercontent.com/u/21299810?v=4 repoEtag: '"f4fb8d23dca44f0314f33c938d4e0fccb86142aebeaff82afef4cc81fef7014a"' repoLastModified: Thu, 12 Sep 2024 05:19:54 GMT foundInMaster: true category: - Code Generators - Server Implementations id: eb31b899b4a7df11b8fd35752f563e92 - source: openapi3 tags repository: https://github.com/rgreinho/pyconsql v3: true repositoryMetadata: base64Readme: >- IyBweWNvbnNxbAoKVGhpcyBpcyBhIHNpbXBsZSBwcm9vZiBvZiBjb25jZXB0IHRvIHNob3cgaG93IHRvIGJ1aWxkIGEgbW9kZXJuIFJFU1QgQVBJIGluIHB5dGhvbi4KCiMjIEFic3RyYWN0CgpUaGlzIFBPQyB1c2VzIHRoZSBwZXRzdG9yZSBBUEkgc2NoZW1hIGFzIGFuIGV4YW1wbGUuCgpUaGUgbWFpbiBjb21wb25lbnRzIGFyZToKCiogW2Nvbm5leGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3phbGFuZG8vY29ubmV4aW9uKSB3aXRoCiAgW2Fpb2h0dHBdKGh0dHBzOi8vZG9jcy5haW9odHRwLm9yZy9lbi9zdGFibGUvKSBhcyBhIGJhY2tlbmQKKiBbZ3VuaWNvcm5dKGh0dHBzOi8vZ3VuaWNvcm4ub3JnLykgd2l0aCB0aGUKICBbdXZsb29wXShodHRwczovL2dpdGh1Yi5jb20vTWFnaWNTdGFjay91dmxvb3ApIHdvcmtlcgoqIFtPcGVuQWxjaGVteV0oaHR0cHM6Ly9naXRodWIuY29tL2pka2FuZGVyc3Nvbi9PcGVuQWxjaGVteSkgdG8gZ2VuZXJhdGUgdGhlIG1vZGVscyBvbgogIHRoZSBmbHkgZnJvbSB0aGUgc3BlY2lmaWNhdGlvbgoqIFtTUUxBbGNoZW15XShodHRwczovL3d3dy5zcWxhbGNoZW15Lm9yZy8pIGZvciB0aGUgT1JNCiogW2FsZW1iaWNdKGh0dHBzOi8vYWxlbWJpYy5zcWxhbGNoZW15Lm9yZy9lbi9sYXRlc3QvKSB0byBtYW5hZ2UgdGhlIG1pZ3JhdGlvbnMKKiBbc2NoZW1hdGhlc2lzXShodHRwczovL2dpdGh1Yi5jb20va2l3aWNvbS9zY2hlbWF0aGVzaXMpIHRvIHRlc3Qgb3VyIEFQSQoKT3RoZXIgaW50ZXJlc3RpbmcgbGlicmFyaWVzIGFyZToKCiogW2xvZ3VydV0oaHR0cHM6Ly9naXRodWIuY29tL0RlbGdhbi9sb2d1cnUpIGZvciBiZXR0ZXIgbG9nZ2luZwoqIFt0ZW5hY2l0eV0oaHR0cHM6Ly9naXRodWIuY29tL2pkL3RlbmFjaXR5KSB0byBoYW5kbGUgcmV0cmllcwoqIFt1anNvbl0oaHR0cHM6Ly9naXRodWIuY29tL3VsdHJhanNvbi91bHRyYWpzb24pIGZvciB1bHRyYSBmYXN0IEpTT04gcHJvY2Vzc2luZyAodG8gYmUKICBjb21wYXJlZCB3aXRoIFtvcmpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9pamwvb3Jqc29uKSB0aG91Z2gsIGFzIHVqc29uIGlzIHNsaWdodGx5CiAgaW5jb21wYXRpYmxlIHdpdGggdGhlIHN0ZGxpYikKCiMjIFNldHVwCgpJbnN0YWxsIHRoZSBQT0M6CgpgYGBiYXNoCnBvZXRyeSBpbnN0YWxsCmBgYAoKUnVuIHRoZSBtaWdyYXRpb25zOgoKYGBgYmFzaAptYWtlIG1pZ3JhdGUKYGBgCgpTdGFydCB0aGUgc2VydmVyOgoKYGBgYmFzaAptYWtlIGxvY2FsLWFwaQpgYGAKCiMjIFBsYXkgd2l0aCBpdAoKRnJvbSBhbm90aGVyIHRlcm1pbmFsLCB5b3UgY2FuIG5vdyBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgYWN0aW9uczoKClBvcHVsYXRlIHRoZSBkYXRhYmFzZToKCmBgYGJhc2gKY3VybCAtWCBQT1NUICJodHRwOi8vMC4wLjAuMDo4MDAwL2FwaS9wZXRzIiBcCiAgLUggImFjY2VwdDogYXBwbGljYXRpb24vanNvbiIgXAogIC1kICd7Im5hbWUiOiAidGlnZXIiLCAidGFnIjogIndpbGQifScKY3VybCAtWCBQT1NUICJodHRwOi8vMC4wLjAuMDo4MDAwL2FwaS9wZXRzIiBcCiAgLUggImFjY2VwdDogYXBwbGljYXRpb24vanNvbiIgXAogIC1kICd7Im5hbWUiOiAibW9sbHkiLCAidGFnIjogImhvbWVidWRkeSJ9JwpgYGAKClJldHJpZXZlIGFsbCB0aGUgcGV0czoKCmBgYGJhc2gKY3VybCAtcyAtWCBHRVQgImh0dHA6Ly8wLjAuMC4wOjgwMDAvYXBpL3BldHMiIC1IICJhY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iIHwganEKYGBgCgpSZXRyaWV2ZSBhIHNwZWNpZmljIHBldDoKCmBgYGJhc2gKY3VybCAtcyAtWCBHRVQgImh0dHA6Ly8wLjAuMC4wOjgwMDAvYXBpL3BldHMvMSIgLUggImFjY2VwdDogYXBwbGljYXRpb24vanNvbiIgfCBqcQpgYGAKCiMjIFRlc3QgaXQKCmBgYGJhc2gKcG9ldHJ5IHJ1biBzY2hlbWF0aGVzaXMgcnVuIGh0dHA6Ly8wLjAuMC4wOjgwMDAvYXBpL29wZW5hcGkuanNvbgpgYGAKClRoZSBlbmRwb2ludCBgUE9TVCAvYXBpL3BldHNgIGZhaWxzIGJlY2F1c2UgdGhlcmUgaXMgbm8gdmFsaWQgZXhhbXBsZSBhc3NvY2lhdGVkIHRvIGl0CmluIHRoZSBzcGVjaWZpY2F0aW9uIGZpbGUuCgojIyBDbGVhbiB1cAoKRGVzdHJveSB0aGUgREIgYW5kIGFzc29jaWF0ZWQgbWlncmF0aW9uczoKCmBgYGJhc2gKbWFrZSBjbGVhbnVwCmBgYAoKIyMgV2hhdCdzIG5lZWRlZCB0byBtYWtlIGl0IHByb2R1Y3Rpb24gcmVhZHkKCiogSW1wcm92ZSB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0KICAqIFBhcmFtZXRlcnMgc2hvdWxkIGhhdmUgc2Vuc2libGUgZGVmYXVsdCB2YWx1ZXMKICAqIEFsbCB0aGUgcGFyYW1ldGVycyB0aGF0IGNhbiBiZSBpbmZlcnJlZCBvciBjYWxjdWxhdGVkIHNob3VsZCBiZSBpbmZlcnJlZCBvciBjYWxjdWxhdGVkIChpLmUuIHRoZSBzcGVjZmlsZSBwYXRoKQoqIFJlbW92ZSBHVW5pY29ybgogICogQWx0aG91Z2ggaXQgZG9lcyBub3QgYnJpbmcgbXVjaCBvdmVyaGVhZCwgaXQgaXMgbm90IG5lZWRlZCBieSBtb2Rlcm4gYXBwbGljYXRpb24gZnJhbWV3b3JrcyBhbmQgdGhlIHNjYWxpbmcvaGVhbHRoY2hlY2svcmVzdGFydCB3aWxsIGJlIGhhbmRsZWQgYnkga3ViZXJuZXRlcwoqIFNoYXJlIHRoZSBEQiBjb25uZWN0aW9uIGJldHdlZW4gY29udHJvbGxlcnMsIHZpYSB0aGUgY29ubmV4aW9uIGFwcAogICogVGhpcyBpcyBub3Qgb2ZmaWNpYWwgc3VwcG9ydGVkLCBidXQgaGVyZSBpcyBhbmljZSB3b3JrYXJvdW5kOiBbU2hhcmUgYSBEQiBjb25uZXhpb24gd2hlbiB1c2luZyBhaW9odHRwIGJhY2tlbmRdKGh0dHBzOi8vZ2l0aHViLmNvbS96YWxhbmRvL2Nvbm5leGlvbi9pc3N1ZXMvODMzKQoqIFVzZSB1bHRyYSBmYXN0IGxpYnJhcmllcwogICogUmVwbGFjZSB0aGUgZGVmYXVsdCBldmVudCBsb29wIHdpdGggVVZMb29wCiogUmVwbGFjZSB0aGUgTWFrZWZpbGUgd2l0aCBbSW52b2tlXShodHRwczovL3d3dy5weWludm9rZS5vcmcvKSB0YXNrcwoqIENyZWF0ZSBhIG5pY2UgdGVtcGxhdGUKICAqIENvb2tpZWN1dHRlciAoPykKICAqIE9ubHkgdGhlIG5hbWUgb2YgdGhlIGFwcCBzaG91bGQgYmUgcmVxdWlyZWQKCiMjIENhbiBJIHB1c2ggaXQgZXZlbiBmdXJ0aGVyPwoKSXQgc3RhcnRzIHRvIGdldCBoYXJkIHRvIG9idGFpbiBiZXR0ZXIgcGVyZm9ybWFuY2UgdXNpbmcgUHl0aG9uLCBidXQgaGVyZSBhcmUgc29tZSBwb2ludGVycyB0byBwdXNoIGFzeW5jaW8gdG8gaXRzIGxpbWl0czoKCiogVXNlIFthc3luY3BnXShodHRwczovL2dpdGh1Yi5jb20vTWFnaWNTdGFjay9hc3luY3BnKSB0byBoYW5kbGUgUG9zdGdyZVNRTC4KICAqIEl0IG9ubHkgd29ya3Mgd2l0aCBbU1FMIEFsY2hlbXkgQ29yZV0oaHR0cHM6Ly9kb2NzLnNxbGFsY2hlbXkub3JnL2VuLzEzL2NvcmUvKSB0aG91Z2gsIHRoZXJlZm9yZSB0aGVyZSBtYXkgYmUgc29tZSBhZGp1dHNtZW50cyB0byBtYWtlIHRvIHN0aWxsIGJlIGFibGUgdG8gdXNlIE9wZW4gQWxjaGVteS4KKiBVc2UgdGhlIFthaW8tbGlic10oaHR0cHM6Ly9naXRodWIuY29tL2Fpby1saWJzKSB3aGVuZXZlciBwb3NzaWJsZS4KKiBDaGVjayB0aGUgW2Fpb2h0dHAgZXh0ZW5zaW9uc10oaHR0cHM6Ly9kb2NzLmFpb2h0dHAub3JnL2VuL3N0YWJsZS90aGlyZF9wYXJ0eS5odG1sI2Fpb2h0dHAtZXh0ZW5zaW9ucykuCgojIyBJIHN0aWxsIG5lZWQgbW9yZQoKVXNlIEdvIG9yIFJ1c3QhCg== readmeEtag: '"fe582ed3c9efbc4b85ca90f432bc397fdcbab375"' readmeLastModified: Mon, 10 Aug 2020 18:45:06 GMT repositoryId: 273532058 description: A modern REST server setup wih OpenAPI 3 created: '2020-06-19T15:52:29Z' updated: '2020-08-10T18:45:09Z' language: Python archived: false stars: 0 watchers: 0 forks: 0 owner: rgreinho logo: https://avatars.githubusercontent.com/u/6969134?v=4 license: MIT repoEtag: '"6318ca39601d642b81524ab3252d642d66b59402550a834208022aa4cb319866"' repoLastModified: Mon, 10 Aug 2020 18:45:09 GMT foundInMaster: true category: Server Implementations id: ae89adb4231331435d0be335778f0836 - source: openapi3 tags repository: https://github.com/iulian-stan/crud-flask-rest v3: true id: 7bb75db7936fd6fb318762046eddc7f2 repositoryMetadata: base64Readme: >- IyBGbGFzawpTaW1wbGUgQ1JVRCBhcHBsaWNhdGlvbiBpbXBsZW1lbnRlZCB1c2luZyBGbGFzayBmcmFtZXdvcmsKQWRkaXRpb25hbCBkZXBlbmRlbmNpZXMKKiBbY29ubmV4aW9uXShodHRwczovL2dpdGh1Yi5jb20vemFsYW5kby9jb25uZXhpb24pIC0gT3BlbkFQSSBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24KKiBbRmxhc2stU1FMQWxjaGVteV0oaHR0cHM6Ly9mbGFzay1zcWxhbGNoZW15LnBhbGxldHNwcm9qZWN0cy5jb20pLSBPUk0gKERCIGludGVyYWN0aW9uKQoqIFtGbGFzay1NYXJzaG1hbGxvd10oaHR0cHM6Ly9mbGFzay1tYXJzaG1hbGxvdy5yZWFkdGhlZG9jcy5pbykgLSBEYXRhIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxpemF0aW9uCgojIyBJbnN0YWxsYXRpb24KQ3JlYXRlIGEgcHl0aG9uIHZpcnR1YWwgZW52aXJvbm1lbnQgKG9wdGlvbmFsKQpgYGBiYXNoCnB5dGhvbiAtbSB2ZW52IC5lbnYKLmVudlxTY3JpcHRzXGFjdGl2YXRlCmBgYApJbnN0YWxsIG9mIHRoZSBkZXBlbmRlbmNpZXMgZnJvbSAqcmVxdWlyZW1lbnRzLnR4dCoKYGBgYmFzaApwaXAgaW5zdGFsbCAtciByZXF1aXJlbWVudHMudHh0CmBgYAoKIyMgVXNhZ2UKU3RhcnQgdGhlIGFwcGxpY2F0aW9uIGJ5IHJ1bm5pbmcgKm1haW4ucHkqCmBgYGJhc2gKcHl0aG9uIG1haW4ucHkKYGBgCk5hdmlnYXRlIHRvIHRoZSBmb2xsb3dpbmcgVVJMIGluIHlvdXIgd2ViIGJyb3dzZXIgLSBbaHR0cDovLzEyNy4wLjAuMTo5MDkwL3YxLjAvdWkvXShodHRwOi8vMTI3LjAuMC4xOjkwOTAvdjEuMC91aS8pLiBJdCB3aWxsIG9wZW4gdGhlIE9wZW5BUEkgZ2VuZXJhdGUgQVBJIGRvY3VtZW50YXRpb24gYmFzZWQgb24gKm9wZW5hcGkueWFtbCouIFRoZSBhcHBsaWNhdGlvbiB3aWxsIGNyZWF0ZSBhbiBpbml0aWFsbHkgZW1wdHkgREIgKHNlZSAqaW5pdC5weSopLiBVc2UgdGhlIFBPU1Qgb3IgUFVUIG1ldGhvZHMgdG8gcG9wdWxhdGUgdGhlIERCIHdpdGggc29tZSBzYW1wbGUgZGF0YSBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHRlc3Qgb3RoZXIgSFRUUCBtZXRob2RzLg== readmeEtag: '"32a0c94628b1ac4637750c10a7ba7547a11d341e"' readmeLastModified: Sat, 05 Nov 2022 15:07:37 GMT repositoryId: 241997756 description: Simple CRUD application implemented using Flask framework created: '2020-02-20T21:50:48Z' updated: '2022-11-06T16:24:35Z' language: Python archived: false stars: 0 watchers: 1 forks: 0 owner: iulian-stan logo: https://avatars.githubusercontent.com/u/13657730?v=4 license: MIT repoEtag: '"ca10922d4a31cae4f8283a6c80c25fd81add1689bf3754e7de6d53d061a0db51"' repoLastModified: Sun, 06 Nov 2022 16:24:35 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/iulian-stan/crud-flask - https://github.com/iulian-stan/flask-crud-application - https://github.com/iulian-stan/flask-example - https://github.com/Iulian-Stan/Flask_Example - source: openapi3 tags repository: https://github.com/dernasherbrezon/jsp-openapi v3: true repositoryMetadata: base64Readme: >- IyBqc3Atb3BlbmFwaSBbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLmNvbS9kZXJuYXNoZXJicmV6b24vanNwLW9wZW5hcGkuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5jb20vZGVybmFzaGVyYnJlem9uL2pzcC1vcGVuYXBpKSBbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1ydS5yMmNsb3VkLm9wZW5hcGklM0Fqc3Atb3BlbmFwaSZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1ydS5yMmNsb3VkLm9wZW5hcGklM0Fqc3Atb3BlbmFwaSkKClRhZyBsaWIgZm9yIHJlbmRlcmluZyBvcGVuYXBpIHNwZWNpZmljYXRpb24uIENTUyBhbmQgamF2YXNjcmlwdCBsaWJyYXJpZXMgYXJlIG5vdCBpbmNsdWRlZC4KCiogImJvb3RzdHJhcDQtb3BlbmFwaSIuIFJlbmRlciB1c2luZyBib290c3RyYXA0LgoKIyMgVXNhZ2UKCkZvciBhIGNvbXBsZXRlIHJlZmVyZW5jZSBzZWUgdGhlIFt0ZXN0XShodHRwczovL2dpdGh1Yi5jb20vZGVybmFzaGVyYnJlem9uL2pzcC1vcGVuYXBpL2Jsb2IvbWFzdGVyL3NyYy90ZXN0L3Jlc291cmNlcy93ZWJhcHAvaW5kZXguanNwKS4KCiMjIyBTdGVwIGJ5IHN0ZXAgZ3VpZGUKCkluY2x1ZGUgZGVwZW5kZW5jeToKCmBgYHhtbAo8ZGVwZW5kZW5jeT4KCTxncm91cElkPnJ1LnIyY2xvdWQub3BlbmFwaTwvZ3JvdXBJZD4KCTxhcnRpZmFjdElkPmpzcC1vcGVuYXBpPC9hcnRpZmFjdElkPgoJPHZlcnNpb24+MS4wPC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CmBgYAoKU2V0dXAgY29udHJvbGxlciAoZm9yIGV4YW1wbGUgU3ByaW5nIE1WQyk6CgpgYGBqYXZhCkBSZXF1ZXN0TWFwcGluZygiL2FwaSIpCnB1YmxpYyBNb2RlbEFuZFZpZXcgbG9hZCgpIHRocm93cyBFeGNlcHRpb24gewoJT3BlbkFQSSBvcGVuYXBpID0gbmV3IE9wZW5BUElWM1BhcnNlcigpLnJlYWQoTG9hZEFwaS5jbGFzcy5nZXRDbGFzc0xvYWRlcigpLmdldFJlc291cmNlKCJvcGVuYXBpLmpzb24iKS5nZXRGaWxlKCkpOwoJTWFwPFN0cmluZywgT2JqZWN0PiBtb2RlbCA9IG5ldyBIYXNoTWFwPFN0cmluZywgT2JqZWN0PigpOwoJbW9kZWwucHV0KCJlbnRpdHkiLCBvcGVuYXBpKTsKCXJldHVybiBuZXcgTW9kZWxBbmRWaWV3KCJhcGkiLCBtb2RlbCk7Cn0KYGBgCgo+IE5vdGU6IGlmIEFQSSBzcGVjaWZpY2F0aW9uIGNhbm5vdCBiZSBjaGFuZ2VkIGluIHJ1bnRpbWUsIHRoZW4gaXQgaXMgYmV0dGVyIHRvIGNhY2hlIGl0IG9uIHN0YXJ0dXAuCgo+IE5vdGU6IGlvLnN3YWdnZXIudjMucGFyc2VyLk9wZW5BUElWM1BhcnNlciBpcyBhIHN3YWdnZXIgcGFyc2VyIGZvciB2MyBzcGVjaWZpY2F0aW9uLiBZb3UgY2FuIGltcGxlbWVudCB5b3VyIG93biBwYXJzZXIgb3IgdXNlIGFueSBjb21wYXRpYmxlLiBQYXJzZXIgc2hvdWxkIGJlIGFibGUgdG8gY29uc3RydWN0IGlvLnN3YWdnZXIudjMub2FzLm1vZGVscy5PcGVuQVBJIG1vZGVsLiAKCkNvbmZpZ3VyZSB0YWdsaWI6CgpgYGAKPCVAIHRhZ2xpYiBwcmVmaXg9Im9wZW5hcGkiIHVyaT0iaHR0cHM6Ly9naXRodWIuY29tL2Rlcm5hc2hlcmJyZXpvbi9qc3Atb3BlbmFwaSIgJT4KYGBgCgpVc2Ugb24gdGhlIHBhZ2U6CgpgYGBodG1sCjxib2R5PgoJPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KCQk8b3BlbmFwaTpib290c3RyYXA0LW9wZW5hcGkgb3BlbmFwaT0iJHtlbnRpdHl9Ii8+Cgk8L2Rpdj4KPC9ib2R5PgpgYGAK readmeEtag: '"fc58981a9754d43efd8587b653da7f18da53bf4b"' readmeLastModified: Fri, 31 Mar 2023 20:44:12 GMT repositoryId: 224528587 description: JSP tag for rendering openapi created: '2019-11-27T22:37:39Z' updated: '2022-03-27T20:39:23Z' language: HTML archived: false stars: 0 watchers: 2 forks: 0 owner: dernasherbrezon logo: https://avatars.githubusercontent.com/u/1614424?v=4 license: Apache-2.0 repoEtag: '"63a6526f11a45663738eece85cbceca12a8f42e63e55950f355ff48546719185"' repoLastModified: Sun, 27 Mar 2022 20:39:23 GMT foundInMaster: true category: - Low-level Tooling - Parsers id: 5c313e281614ced14ecaf35afee7d90a - source: openapi3 tags repository: https://github.com/efficap-energie/liveobjects-go v3: true repositoryMetadata: base64Readme: >- IyBHbyBBUEkgY2xpZW50IGZvciBsaXZlb2JqZWN0cwoKQVBJIGRlc2NyaXB0aW9uIGZvciBMaXZlIE9iamVjdHMgc2VydmljZQoKIyMgT3ZlcnZpZXcKVGhpcyBBUEkgY2xpZW50IHdhcyBnZW5lcmF0ZWQgYnkgdGhlIFtPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKSBwcm9qZWN0LiAgQnkgdXNpbmcgdGhlIFtPcGVuQVBJLXNwZWNdKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pIGZyb20gYSByZW1vdGUgc2VydmVyLCB5b3UgY2FuIGVhc2lseSBnZW5lcmF0ZSBhbiBBUEkgY2xpZW50LgoKLSBBUEkgdmVyc2lvbjogMi4xMy4zCi0gUGFja2FnZSB2ZXJzaW9uOiAxLjAuMAotIEJ1aWxkIHBhY2thZ2U6IG9yZy5vcGVuYXBpdG9vbHMuY29kZWdlbi5sYW5ndWFnZXMuR29DbGllbnRDb2RlZ2VuCgojIyBJbnN0YWxsYXRpb24KCkluc3RhbGwgdGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXM6CgpgYGBzaGVsbApnbyBnZXQgZ2l0aHViLmNvbS9zdHJldGNoci90ZXN0aWZ5L2Fzc2VydApnbyBnZXQgZ29sYW5nLm9yZy94L29hdXRoMgpnbyBnZXQgZ29sYW5nLm9yZy94L25ldC9jb250ZXh0CmBgYAoKUHV0IHRoZSBwYWNrYWdlIHVuZGVyIHlvdXIgcHJvamVjdCBmb2xkZXIgYW5kIGFkZCB0aGUgZm9sbG93aW5nIGluIGltcG9ydDoKCmBgYGdvbGFuZwppbXBvcnQgc3cgIi4vbGl2ZW9iamVjdHMiCmBgYAoKVG8gdXNlIGEgcHJveHksIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYEhUVFBfUFJPWFlgOgoKYGBgZ29sYW5nCm9zLlNldGVudigiSFRUUF9QUk9YWSIsICJodHRwOi8vcHJveHlfbmFtZTpwcm94eV9wb3J0IikKYGBgCgojIyBDb25maWd1cmF0aW9uIG9mIFNlcnZlciBVUkwKCkRlZmF1bHQgY29uZmlndXJhdGlvbiBjb21lcyB3aXRoIGBTZXJ2ZXJzYCBmaWVsZCB0aGF0IGNvbnRhaW5zIHNlcnZlciBvYmplY3RzIGFzIGRlZmluZWQgaW4gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4KCiMjIyBTZWxlY3QgU2VydmVyIENvbmZpZ3VyYXRpb24KCkZvciB1c2luZyBvdGhlciBzZXJ2ZXIgdGhhbiB0aGUgb25lIGRlZmluZWQgb24gaW5kZXggMCBzZXQgY29udGV4dCB2YWx1ZSBgc3cuQ29udGV4dFNlcnZlckluZGV4YCBvZiB0eXBlIGBpbnRgLgoKYGBgZ29sYW5nCmN0eCA6PSBjb250ZXh0LldpdGhWYWx1ZShjb250ZXh0LkJhY2tncm91bmQoKSwgc3cuQ29udGV4dFNlcnZlckluZGV4LCAxKQpgYGAKCiMjIyBUZW1wbGF0ZWQgU2VydmVyIFVSTAoKVGVtcGxhdGVkIHNlcnZlciBVUkwgaXMgZm9ybWF0dGVkIHVzaW5nIGRlZmF1bHQgdmFyaWFibGVzIGZyb20gY29uZmlndXJhdGlvbiBvciBmcm9tIGNvbnRleHQgdmFsdWUgYHN3LkNvbnRleHRTZXJ2ZXJWYXJpYWJsZXNgIG9mIHR5cGUgYG1hcFtzdHJpbmddc3RyaW5nYC4KCmBgYGdvbGFuZwpjdHggOj0gY29udGV4dC5XaXRoVmFsdWUoY29udGV4dC5CYWNrZ3JvdW5kKCksIHN3LkNvbnRleHRTZXJ2ZXJWYXJpYWJsZXMsIG1hcFtzdHJpbmddc3RyaW5newoJImJhc2VQYXRoIjogInYyIiwKfSkKYGBgCgpOb3RlLCBlbnVtIHZhbHVlcyBhcmUgYWx3YXlzIHZhbGlkYXRlZCBhbmQgYWxsIHVudXNlZCB2YXJpYWJsZXMgYXJlIHNpbGVudGx5IGlnbm9yZWQuCgojIyMgVVJMcyBDb25maWd1cmF0aW9uIHBlciBPcGVyYXRpb24KCkVhY2ggb3BlcmF0aW9uIGNhbiB1c2UgZGlmZmVyZW50IHNlcnZlciBVUkwgZGVmaW5lZCB1c2luZyBgT3BlcmF0aW9uU2VydmVyc2AgbWFwIGluIHRoZSBgQ29uZmlndXJhdGlvbmAuCkFuIG9wZXJhdGlvbiBpcyB1bmlxdWVseSBpZGVudGlmaWVsZCBieSBgIntjbGFzc25hbWV9U2VydmljZS57bmlja25hbWV9ImAgc3RyaW5nLgpTaW1pbGFyIHJ1bGVzIGZvciBvdmVycmlkaW5nIGRlZmF1bHQgb3BlcmF0aW9uIHNlcnZlciBpbmRleCBhbmQgdmFyaWFibGVzIGFwcGxpZXMgYnkgdXNpbmcgYHN3LkNvbnRleHRPcGVyYXRpb25TZXJ2ZXJJbmRpY2VzYCBhbmQgYHN3LkNvbnRleHRPcGVyYXRpb25TZXJ2ZXJWYXJpYWJsZXNgIGNvbnRleHQgbWFwcy4KCmBgYApjdHggOj0gY29udGV4dC5XaXRoVmFsdWUoY29udGV4dC5CYWNrZ3JvdW5kKCksIHN3LkNvbnRleHRPcGVyYXRpb25TZXJ2ZXJJbmRpY2VzLCBtYXBbc3RyaW5nXWludHsKCSJ7Y2xhc3NuYW1lfVNlcnZpY2Uue25pY2tuYW1lfSI6IDIsCn0pCmN0eCA9IGNvbnRleHQuV2l0aFZhbHVlKGNvbnRleHQuQmFja2dyb3VuZCgpLCBzdy5Db250ZXh0T3BlcmF0aW9uU2VydmVyVmFyaWFibGVzLCBtYXBbc3RyaW5nXW1hcFtzdHJpbmddc3RyaW5newoJIntjbGFzc25hbWV9U2VydmljZS57bmlja25hbWV9IjogewoJCSJwb3J0IjogIjg0NDMiLAoJfSwKfSkKYGBgCgojIyBEb2N1bWVudGF0aW9uIGZvciBBUEkgRW5kcG9pbnRzCgpBbGwgVVJJcyBhcmUgcmVsYXRpdmUgdG8gKmh0dHBzOi8vbGl2ZW9iamVjdHMub3JhbmdlLWJ1c2luZXNzLmNvbSoKCkNsYXNzIHwgTWV0aG9kIHwgSFRUUCByZXF1ZXN0IHwgRGVzY3JpcHRpb24KLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tCipBY2NvdW50aW5nVjFBcGkqIHwgWyoqR2V0RGFpbHlTdGF0aXN0aWNzVXNpbmdHRVQyKipdKGRvY3MvQWNjb3VudGluZ1YxQXBpLm1kI2dldGRhaWx5c3RhdGlzdGljc3VzaW5nZ2V0MikgfCAqKkdldCoqIC9hcGkvdjEvYWNjb3VudGluZy9kYWlseSB8IEdldCBkYWlseSBhY2NvdW50aW5nIG1ldHJpY3MgKEJldGEpLgoqQWNjb3VudGluZ1YxQXBpKiB8IFsqKkdldE1vbnRobHlTdGF0aXN0aWNzVXNpbmdHRVQyKipdKGRvY3MvQWNjb3VudGluZ1YxQXBpLm1kI2dldG1vbnRobHlzdGF0aXN0aWNzdXNpbmdnZXQyKSB8ICoqR2V0KiogL2FwaS92MS9hY2NvdW50aW5nL21vbnRobHkgfCBHZXQgbW9udGhseSBhY2NvdW50aW5nIG1ldHJpY3MuCipBcGlLZXlzQXBpKiB8IFsqKkNyZWF0ZUFwaUtleVVzaW5nUE9TVCoqXShkb2NzL0FwaUtleXNBcGkubWQjY3JlYXRlYXBpa2V5dXNpbmdwb3N0KSB8ICoqUG9zdCoqIC9hcGkvdjAvYXBpS2V5cyB8IENyZWF0ZSBhbiBBUEkga2V5CipBcGlLZXlzQXBpKiB8IFsqKkRlbGV0ZUFwaUtleVVzaW5nREVMRVRFKipdKGRvY3MvQXBpS2V5c0FwaS5tZCNkZWxldGVhcGlrZXl1c2luZ2RlbGV0ZSkgfCAqKkRlbGV0ZSoqIC9hcGkvdjAvYXBpS2V5cy97YXBpS2V5SWR9IHwgRGVsZXRlIGFuIEFQSSBrZXkKKkFwaUtleXNBcGkqIHwgWyoqR2V0QXBpS2V5RnJvbUF1dGhlbnRpY2F0aW9uVXNpbmdHRVQzKipdKGRvY3MvQXBpS2V5c0FwaS5tZCNnZXRhcGlrZXlmcm9tYXV0aGVudGljYXRpb251c2luZ2dldDMpIHwgKipHZXQqKiAvYXBpL3YwL2FwaUtleXMvY3VycmVudF9rZXkgfCBnZXRBcGlLZXlGcm9tQXV0aGVudGljYXRpb24KKkFwaUtleXNBcGkqIHwgWyoqR2V0QXBpS2V5VXNpbmdHRVQzKipdKGRvY3MvQXBpS2V5c0FwaS5tZCNnZXRhcGlrZXl1c2luZ2dldDMpIHwgKipHZXQqKiAvYXBpL3YwL2FwaUtleXMve2FwaUtleUlkfSB8IEdldCBhbiBBUEkga2V5CipBcGlLZXlzQXBpKiB8IFsqKkdldEFwaUtleXNVc2luZ0dFVDMqKl0oZG9jcy9BcGlLZXlzQXBpLm1kI2dldGFwaWtleXN1c2luZ2dldDMpIHwgKipHZXQqKiAvYXBpL3YwL2FwaUtleXMgfCBMaXN0IEFQSSBrZXlzCipBcGlLZXlzQXBpKiB8IFsqKlNldEFwaUtleURlYnVnTW9kZVVzaW5nUFVUMyoqXShkb2NzL0FwaUtleXNBcGkubWQjc2V0YXBpa2V5ZGVidWdtb2RldXNpbmdwdXQzKSB8ICoqUHV0KiogL2FwaS92MC9hcGlLZXlzL3thcGlLZXlJZH0vZGVidWdNb2RlIHwgQWN0aXZhdGUvRGVhY3RpdmF0ZSB0aGUgZGVidWcgbW9kZSBvbiBhbiBBUEkga2V5CipBcGlLZXlzQXBpKiB8IFsqKlVwZGF0ZUFwaUtleVVzaW5nUE9TVDEqKl0oZG9jcy9BcGlLZXlzQXBpLm1kI3VwZGF0ZWFwaWtleXVzaW5ncG9zdDEpIHwgKipQb3N0KiogL2FwaS92MC9hcGlLZXlzL3thcGlLZXlJZH0gfCBVcGRhdGUgYW4gQVBJIGtleQoqQXVkaXRMb2dBcGkqIHwgWyoqU2VhcmNoVXNpbmdHRVQqKl0oZG9jcy9BdWRpdExvZ0FwaS5tZCNzZWFyY2h1c2luZ2dldCkgfCAqKkdldCoqIC9hcGkvdjAvYXVkaXRsb2cvbWVzc2FnZXMgfCBSZXRyaWV2ZSBtZXNzYWdlcyBhdmFpbGFibGUgaW4geW91ciBBdWRpdExvZwoqQnVzTWFuYWdlbWVudEFwaSogfCBbKipDcmVhdGVVc2luZ1BPU1QzKipdKGRvY3MvQnVzTWFuYWdlbWVudEFwaS5tZCNjcmVhdGV1c2luZ3Bvc3QzKSB8ICoqUG9zdCoqIC9hcGkvdjAvdG9waWNzL2ZpZm8gfCBDcmVhdGUgYSBGSUZPCipCdXNNYW5hZ2VtZW50QXBpKiB8IFsqKkRlbGV0ZVVzaW5nREVMRVRFMjAqKl0oZG9jcy9CdXNNYW5hZ2VtZW50QXBpLm1kI2RlbGV0ZXVzaW5nZGVsZXRlMjApIHwgKipEZWxldGUqKiAvYXBpL3YwL3RvcGljcy9maWZvL3tmaWZvTmFtZX0gfCBEZWxldGUgYSBGSUZPCipCdXNNYW5hZ2VtZW50QXBpKiB8IFsqKkZpZm9QdWJsaXNoVXNpbmdQT1NUKipdKGRvY3MvQnVzTWFuYWdlbWVudEFwaS5tZCNmaWZvcHVibGlzaHVzaW5ncG9zdCkgfCAqKlBvc3QqKiAvYXBpL3YwL3RvcGljcy9maWZvL3tmaWZvTmFtZX0gfCBQdWJsaXNoIGEgbWVzc2FnZSBpbnRvIGEgRklGTwoqQnVzTWFuYWdlbWVudEFwaSogfCBbKipHZXRVc2luZ0dFVDE5KipdKGRvY3MvQnVzTWFuYWdlbWVudEFwaS5tZCNnZXR1c2luZ2dldDE5KSB8ICoqR2V0KiogL2FwaS92MC90b3BpY3MvZmlmby97Zmlmb05hbWV9IHwgR2V0IGEgRklGTwoqQnVzTWFuYWdlbWVudEFwaSogfCBbKipMaXN0Rmlmb1RvcGljc1VzaW5nR0VUKipdKGRvY3MvQnVzTWFuYWdlbWVudEFwaS5tZCNsaXN0Zmlmb3RvcGljc3VzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MC90b3BpY3MvZmlmbyB8IExpc3QgYWxsIEZJRk9zCipDQUNlcnRpZmljYXRlc0FwaSogfCBbKipDcmVhdGVVc2luZ1BPU1QqKl0oZG9jcy9DQUNlcnRpZmljYXRlc0FwaS5tZCNjcmVhdGV1c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MC9jZXJ0aWZpY2F0ZXMvY2EgfCBVcGxvYWQgQ0EgY2VydGlmaWNhdGUKKkNBQ2VydGlmaWNhdGVzQXBpKiB8IFsqKkRlbGV0ZVVzaW5nREVMRVRFOSoqXShkb2NzL0NBQ2VydGlmaWNhdGVzQXBpLm1kI2RlbGV0ZXVzaW5nZGVsZXRlOSkgfCAqKkRlbGV0ZSoqIC9hcGkvdjAvY2VydGlmaWNhdGVzL2NhL3tjZXJ0aWZpY2F0ZUlkfSB8IERlbGV0ZSBDQSBjZXJ0aWZpY2F0ZQoqQ0FDZXJ0aWZpY2F0ZXNBcGkqIHwgWyoqTGlzdFVzaW5nR0VUMTEqKl0oZG9jcy9DQUNlcnRpZmljYXRlc0FwaS5tZCNsaXN0dXNpbmdnZXQxMSkgfCAqKkdldCoqIC9hcGkvdjAvY2VydGlmaWNhdGVzL2NhIHwgTGlzdCBDQSBjZXJ0aWZpY2F0ZXMKKkNBQ2VydGlmaWNhdGVzQXBpKiB8IFsqKlJldHJpZXZlVXNpbmdHRVQqKl0oZG9jcy9DQUNlcnRpZmljYXRlc0FwaS5tZCNyZXRyaWV2ZXVzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MC9jZXJ0aWZpY2F0ZXMvY2Eve2NlcnRpZmljYXRlSWR9IHwgUmV0cmlldmUgQ0EgY2VydGlmaWNhdGUKKkNhbXBhaWduTWFuYWdlbWVudEFwaSogfCBbKipDYW5jZWxDYW1wYWlnblVzaW5nUFVUKipdKGRvY3MvQ2FtcGFpZ25NYW5hZ2VtZW50QXBpLm1kI2NhbmNlbGNhbXBhaWdudXNpbmdwdXQpIHwgKipQdXQqKiAvYXBpL3YwL2RldmljZU1ndC9jYW1wYWlnbnMve2NhbXBhaWduSWR9L2NhbmNlbCB8IENhbmNlbCBhIGNhbXBhaWduCipDYW1wYWlnbk1hbmFnZW1lbnRBcGkqIHwgWyoqQ3JlYXRlQ2FtcGFpZ25Vc2luZ1BPU1QqKl0oZG9jcy9DYW1wYWlnbk1hbmFnZW1lbnRBcGkubWQjY3JlYXRlY2FtcGFpZ251c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MC9kZXZpY2VNZ3QvY2FtcGFpZ25zIHwgQ3JlYXRlIGEgY2FtcGFpZ24KKkNhbXBhaWduTWFuYWdlbWVudEFwaSogfCBbKipEZWxldGVDYW1wYWlnblVzaW5nREVMRVRFKipdKGRvY3MvQ2FtcGFpZ25NYW5hZ2VtZW50QXBpLm1kI2RlbGV0ZWNhbXBhaWdudXNpbmdkZWxldGUpIHwgKipEZWxldGUqKiAvYXBpL3YwL2RldmljZU1ndC9jYW1wYWlnbnMve2NhbXBhaWduSWR9IHwgRGVsZXRlIGEgY2FtcGFpZ24KKkNhbXBhaWduTWFuYWdlbWVudEFwaSogfCBbKipHZXRDYW1wYWlnbkRldGFpbHNVc2luZ0dFVCoqXShkb2NzL0NhbXBhaWduTWFuYWdlbWVudEFwaS5tZCNnZXRjYW1wYWlnbmRldGFpbHN1c2luZ2dldCkgfCAqKkdldCoqIC9hcGkvdjAvZGV2aWNlTWd0L2NhbXBhaWducy97Y2FtcGFpZ25JZH0vdGFyZ2V0cyB8IEdldCB0aGUgY2FtcGFpZ24gc3RhdHVzIHBlciBkZXZpY2UKKkNhbXBhaWduTWFuYWdlbWVudEFwaSogfCBbKipHZXRDYW1wYWlnblVzaW5nR0VUKipdKGRvY3MvQ2FtcGFpZ25NYW5hZ2VtZW50QXBpLm1kI2dldGNhbXBhaWdudXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL2RldmljZU1ndC9jYW1wYWlnbnMve2NhbXBhaWduSWR9IHwgR2V0IGEgY2FtcGFpZ24KKkNhbXBhaWduTWFuYWdlbWVudEFwaSogfCBbKipMaXN0Q2FtcGFpZ25zVXNpbmdHRVQqKl0oZG9jcy9DYW1wYWlnbk1hbmFnZW1lbnRBcGkubWQjbGlzdGNhbXBhaWduc3VzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MC9kZXZpY2VNZ3QvY2FtcGFpZ25zIHwgTGlzdCBhbGwgY2FtcGFpZ25zCipDYW1wYWlnbk1hbmFnZW1lbnRBcGkqIHwgWyoqVXBkYXRlQ2FtcGFpZ25Vc2luZ1BBVENIKipdKGRvY3MvQ2FtcGFpZ25NYW5hZ2VtZW50QXBpLm1kI3VwZGF0ZWNhbXBhaWdudXNpbmdwYXRjaCkgfCAqKlBhdGNoKiogL2FwaS92MC9kZXZpY2VNZ3QvY2FtcGFpZ25zL3tjYW1wYWlnbklkfSB8IFVwZGF0ZSBhIGNhbXBhaWduCipEYXRhQnVsa0luamVjdGlvbkFwaSogfCBbKipBZGREYXRhQnVsa1VzaW5nUE9TVCoqXShkb2NzL0RhdGFCdWxrSW5qZWN0aW9uQXBpLm1kI2FkZGRhdGFidWxrdXNpbmdwb3N0KSB8ICoqUG9zdCoqIC9hcGkvdjAvZGF0YS9idWxrIHwgSW5zZXJ0IGEgYnVsayBvZiBuZXcgRGF0YQoqRGF0YU1hbmFnZW1lbnRDdXN0b21QaXBlbGluZXNBcGkqIHwgWyoqRGVsZXRlVXNpbmdERUxFVEUxMSoqXShkb2NzL0RhdGFNYW5hZ2VtZW50Q3VzdG9tUGlwZWxpbmVzQXBpLm1kI2RlbGV0ZXVzaW5nZGVsZXRlMTEpIHwgKipEZWxldGUqKiAvYXBpL3YwL3BpcGVsaW5lcy97cGlwZWxpbmVJZH0gfCBEZWxldGUgYSBEYXRhTWVzc2FnZSBwaXBlbGluZQoqRGF0YU1hbmFnZW1lbnRDdXN0b21QaXBlbGluZXNBcGkqIHwgWyoqR2V0VXNpbmdHRVQxMioqXShkb2NzL0RhdGFNYW5hZ2VtZW50Q3VzdG9tUGlwZWxpbmVzQXBpLm1kI2dldHVzaW5nZ2V0MTIpIHwgKipHZXQqKiAvYXBpL3YwL3BpcGVsaW5lcy97cGlwZWxpbmVJZH0gfCBSZXRyaWV2ZSBhIERhdGFNZXNzYWdlIHBpcGVsaW5lCipEYXRhTWFuYWdlbWVudEN1c3RvbVBpcGVsaW5lc0FwaSogfCBbKipMaXN0VXNpbmdHRVQxMyoqXShkb2NzL0RhdGFNYW5hZ2VtZW50Q3VzdG9tUGlwZWxpbmVzQXBpLm1kI2xpc3R1c2luZ2dldDEzKSB8ICoqR2V0KiogL2FwaS92MC9waXBlbGluZXMgfCBSZXRyaWV2ZSB0aGUgbGlzdCBvZiBEYXRhTWVzc2FnZSBwaXBlbGluZXMsIG9yZGVyZWQgYnkgcHJpb3JpdHlMZXZlbAoqRGF0YU1hbmFnZW1lbnRDdXN0b21QaXBlbGluZXNBcGkqIHwgWyoqUG9zdFVzaW5nUE9TVDEyKipdKGRvY3MvRGF0YU1hbmFnZW1lbnRDdXN0b21QaXBlbGluZXNBcGkubWQjcG9zdHVzaW5ncG9zdDEyKSB8ICoqUG9zdCoqIC9hcGkvdjAvcGlwZWxpbmVzIHwgQ3JlYXRlIGEgRGF0YU1lc3NhZ2UgcGlwZWxpbmUKKkRhdGFNYW5hZ2VtZW50Q3VzdG9tUGlwZWxpbmVzQXBpKiB8IFsqKlVwZGF0ZVVzaW5nUFVUNioqXShkb2NzL0RhdGFNYW5hZ2VtZW50Q3VzdG9tUGlwZWxpbmVzQXBpLm1kI3VwZGF0ZXVzaW5ncHV0NikgfCAqKlB1dCoqIC9hcGkvdjAvcGlwZWxpbmVzL3twaXBlbGluZUlkfSB8IFVwZGF0ZSBhIERhdGFNZXNzYWdlIHBpcGVsaW5lCipEYXRhTWFuYWdlbWVudERhdGFTZWFyY2hBcGkqIHwgWyoqRHNsUXVlcnlIaXRzT25seVVzaW5nUE9TVCoqXShkb2NzL0RhdGFNYW5hZ2VtZW50RGF0YVNlYXJjaEFwaS5tZCNkc2xxdWVyeWhpdHNvbmx5dXNpbmdwb3N0KSB8ICoqUG9zdCoqIC9hcGkvdjAvZGF0YS9zZWFyY2gvaGl0cyB8IFF1ZXJ5IGFuIEVsYXN0aWNzZWFyY2ggRG9tYWluIFNwZWNpZmljIExhbmd1YWdlIHJlcXVlc3QgYW5kIGdldCBvbmx5IGhpdHMgcmVzdWx0CipEYXRhTWFuYWdlbWVudERhdGFTZWFyY2hBcGkqIHwgWyoqRHNsUXVlcnlVc2luZ1BPU1QqKl0oZG9jcy9EYXRhTWFuYWdlbWVudERhdGFTZWFyY2hBcGkubWQjZHNscXVlcnl1c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MC9kYXRhL3NlYXJjaCB8IFF1ZXJ5IGFuIEVsYXN0aWNzZWFyY2ggRG9tYWluIFNwZWNpZmljIExhbmd1YWdlIHJlcXVlc3QKKkRhdGFNYW5hZ2VtZW50RGF0YVN0b3JlQXBpKiB8IFsqKkFkZERhdGFNZXNzYWdlVXNpbmdQT1NUKipdKGRvY3MvRGF0YU1hbmFnZW1lbnREYXRhU3RvcmVBcGkubWQjYWRkZGF0YW1lc3NhZ2V1c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MC9kYXRhL3N0cmVhbXMve3N0cmVhbUlkfSB8IEluc2VydCBhIG5ldyBEYXRhIGludG8gdGhlIHN0cmVhbQoqRGF0YU1hbmFnZW1lbnREYXRhU3RvcmVBcGkqIHwgWyoqUmV0cmlldmVEYXRhVXNpbmdHRVQqKl0oZG9jcy9EYXRhTWFuYWdlbWVudERhdGFTdG9yZUFwaS5tZCNyZXRyaWV2ZWRhdGF1c2luZ2dldCkgfCAqKkdldCoqIC9hcGkvdjAvZGF0YS9zdHJlYW1zL3tzdHJlYW1JZH0gfCBSZXRyaWV2ZSBkYXRhIGZyb20gdGhlIHN0cmVhbUlkCipEZWNvZGVyc0FwaSogfCBbKipMaXN0VXNpbmdHRVQyMioqXShkb2NzL0RlY29kZXJzQXBpLm1kI2xpc3R1c2luZ2dldDIyKSB8ICoqR2V0KiogL2FwaS92MC9kZWNvZGVycyB8IFJldHJpZXZlIHRoZSBsaXN0IG9mIGFsbCBkZWNvZGVycyAoYmluYXJ5LCBjc3YsIGpzKQoqRGVjb2RlcnNCaW5hcnlBcGkqIHwgWyoqQWN0aXZhdGVVc2luZ1BVVDgqKl0oZG9jcy9EZWNvZGVyc0JpbmFyeUFwaS5tZCNhY3RpdmF0ZXVzaW5ncHV0OCkgfCAqKlB1dCoqIC9hcGkvdjAvZGVjb2RlcnMvYmluYXJ5L3tkZWNvZGVySWR9L2VuYWJsZWQgfCBBY3RpdmF0ZSBvciBkZWFjdGl2YXRlIGEgZGVjb2RlcgoqRGVjb2RlcnNCaW5hcnlBcGkqIHwgWyoqRGVsZXRlVXNpbmdERUxFVEU4KipdKGRvY3MvRGVjb2RlcnNCaW5hcnlBcGkubWQjZGVsZXRldXNpbmdkZWxldGU4KSB8ICoqRGVsZXRlKiogL2FwaS92MC9kZWNvZGVycy9iaW5hcnkve2RlY29kZXJJZH0gfCBEZWxldGUgYSBiaW5hcnkgZGVjb2RlcgoqRGVjb2RlcnNCaW5hcnlBcGkqIHwgWyoqR2V0VXNpbmdHRVQxMCoqXShkb2NzL0RlY29kZXJzQmluYXJ5QXBpLm1kI2dldHVzaW5nZ2V0MTApIHwgKipHZXQqKiAvYXBpL3YwL2RlY29kZXJzL2JpbmFyeS97ZGVjb2RlcklkfSB8IFJldHJpZXZlIGEgYmluYXJ5IGRlY29kZXIKKkRlY29kZXJzQmluYXJ5QXBpKiB8IFsqKkxpc3RVc2luZ0dFVDEwKipdKGRvY3MvRGVjb2RlcnNCaW5hcnlBcGkubWQjbGlzdHVzaW5nZ2V0MTApIHwgKipHZXQqKiAvYXBpL3YwL2RlY29kZXJzL2JpbmFyeSB8IFJldHJpZXZlIHRoZSBsaXN0IG9mIGJpbmFyeSBkZWNvZGVycwoqRGVjb2RlcnNCaW5hcnlBcGkqIHwgWyoqUG9zdFVzaW5nUE9TVDEwKipdKGRvY3MvRGVjb2RlcnNCaW5hcnlBcGkubWQjcG9zdHVzaW5ncG9zdDEwKSB8ICoqUG9zdCoqIC9hcGkvdjAvZGVjb2RlcnMvYmluYXJ5IHwgQ3JlYXRlIGEgYmluYXJ5IGRlY29kZXIKKkRlY29kZXJzQmluYXJ5QXBpKiB8IFsqKlB1dFVzaW5nUFVUMioqXShkb2NzL0RlY29kZXJzQmluYXJ5QXBpLm1kI3B1dHVzaW5ncHV0MikgfCAqKlB1dCoqIC9hcGkvdjAvZGVjb2RlcnMvYmluYXJ5L3tkZWNvZGVySWR9IHwgVXBkYXRlIGEgYmluYXJ5IGRlY29kZXIKKkRlY29kZXJzQmluYXJ5QXBpKiB8IFsqKlRlc3RVc2luZ1BPU1QyKipdKGRvY3MvRGVjb2RlcnNCaW5hcnlBcGkubWQjdGVzdHVzaW5ncG9zdDIpIHwgKipQb3N0KiogL2FwaS92MC9kZWNvZGVycy9iaW5hcnkvdGVzdCB8IFRlc3QgYSBiaW5hcnkgZGVjb2RlciBmb3JtYXQgd2l0aCBhbiBlbmNvZGVkIHBheWxvYWQKKkRlY29kZXJzQ1NWQXBpKiB8IFsqKkFjdGl2YXRlVXNpbmdQVVQ5KipdKGRvY3MvRGVjb2RlcnNDU1ZBcGkubWQjYWN0aXZhdGV1c2luZ3B1dDkpIHwgKipQdXQqKiAvYXBpL3YwL2RlY29kZXJzL2Nzdi97ZGVjb2RlcklkfS9lbmFibGVkIHwgQWN0aXZhdGUgb3IgZGVhY3RpdmF0ZSBhIGRlY29kZXIKKkRlY29kZXJzQ1NWQXBpKiB8IFsqKkRlbGV0ZVVzaW5nREVMRVRFMTAqKl0oZG9jcy9EZWNvZGVyc0NTVkFwaS5tZCNkZWxldGV1c2luZ2RlbGV0ZTEwKSB8ICoqRGVsZXRlKiogL2FwaS92MC9kZWNvZGVycy9jc3Yve2RlY29kZXJJZH0gfCBEZWxldGUgYSBjc3YgZGVjb2RlcgoqRGVjb2RlcnNDU1ZBcGkqIHwgWyoqR2V0VXNpbmdHRVQxMSoqXShkb2NzL0RlY29kZXJzQ1NWQXBpLm1kI2dldHVzaW5nZ2V0MTEpIHwgKipHZXQqKiAvYXBpL3YwL2RlY29kZXJzL2Nzdi97ZGVjb2RlcklkfSB8IFJldHJpZXZlIGEgY3N2IGRlY29kZXIKKkRlY29kZXJzQ1NWQXBpKiB8IFsqKkxpc3RVc2luZ0dFVDEyKipdKGRvY3MvRGVjb2RlcnNDU1ZBcGkubWQjbGlzdHVzaW5nZ2V0MTIpIHwgKipHZXQqKiAvYXBpL3YwL2RlY29kZXJzL2NzdiB8IFJldHJpZXZlIHRoZSBsaXN0IG9mIGNzdiBkZWNvZGVycyBmaWx0ZXJlZCBieSB0YWdzCipEZWNvZGVyc0NTVkFwaSogfCBbKipQb3N0VXNpbmdQT1NUMTEqKl0oZG9jcy9EZWNvZGVyc0NTVkFwaS5tZCNwb3N0dXNpbmdwb3N0MTEpIHwgKipQb3N0KiogL2FwaS92MC9kZWNvZGVycy9jc3YgfCBDcmVhdGUgYSBjc3YgZGVjb2RlcgoqRGVjb2RlcnNDU1ZBcGkqIHwgWyoqUHV0VXNpbmdQVVQzKipdKGRvY3MvRGVjb2RlcnNDU1ZBcGkubWQjcHV0dXNpbmdwdXQzKSB8ICoqUHV0KiogL2FwaS92MC9kZWNvZGVycy9jc3Yve2RlY29kZXJJZH0gfCBVcGRhdGUgYSBjc3YgZGVjb2RlcgoqRGVjb2RlcnNDU1ZBcGkqIHwgWyoqVGVzdFVzaW5nUE9TVDMqKl0oZG9jcy9EZWNvZGVyc0NTVkFwaS5tZCN0ZXN0dXNpbmdwb3N0MykgfCAqKlBvc3QqKiAvYXBpL3YwL2RlY29kZXJzL2Nzdi90ZXN0IHwgVGVzdCBhIGNzdiBkZWNvZGVyIGZvcm1hdCB3aXRoIGFuIGVuY29kZWQgcGF5bG9hZAoqRGVjb2RlcnNQdWJsaWNBcGkqIHwgWyoqTGlzdFVzaW5nR0VUMjMqKl0oZG9jcy9EZWNvZGVyc1B1YmxpY0FwaS5tZCNsaXN0dXNpbmdnZXQyMykgfCAqKkdldCoqIC9hcGkvdjAvZGVjb2RlcnMvcHVibGljIHwgUmV0cmlldmUgdGhlIGxpc3Qgb2YgYWxsIHB1YmxpYyBkZWNvZGVycyAoYmluYXJ5LCBjc3YsIGpzKQoqRGVwcmVjYXRlZEJ1c01hbmFnZW1lbnRSb3V0ZXJBcGkqIHwgWyoqQWRkQmluZGluZ1VzaW5nUE9TVCoqXShkb2NzL0RlcHJlY2F0ZWRCdXNNYW5hZ2VtZW50Um91dGVyQXBpLm1kI2FkZGJpbmRpbmd1c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MC9iaW5kaW5ncyB8IEFkZCBhIGJpbmRpbmcgZm9yIGEgRklGTyBxdWV1ZQoqRGVwcmVjYXRlZEJ1c01hbmFnZW1lbnRSb3V0ZXJBcGkqIHwgWyoqRGVsZXRlQmluZGluZ1VzaW5nREVMRVRFKipdKGRvY3MvRGVwcmVjYXRlZEJ1c01hbmFnZW1lbnRSb3V0ZXJBcGkubWQjZGVsZXRlYmluZGluZ3VzaW5nZGVsZXRlKSB8ICoqRGVsZXRlKiogL2FwaS92MC9iaW5kaW5ncy97cm91dGluZ0tleUZpbHRlcn0ve2ZpZm9OYW1lfSB8IERlbGV0ZSBhIGJpbmRpbmcKKkRlcHJlY2F0ZWRCdXNNYW5hZ2VtZW50Um91dGVyQXBpKiB8IFsqKkxpc3RCaW5kaW5nc1VzaW5nR0VUKipdKGRvY3MvRGVwcmVjYXRlZEJ1c01hbmFnZW1lbnRSb3V0ZXJBcGkubWQjbGlzdGJpbmRpbmdzdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL2JpbmRpbmdzIHwgTGlzdCByZWdpc3RlcmVkIGJpbmRpbmdzCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudENvbW1hbmRWMFVzZURldmljZU1hbmFnZW1lbnRDb21tYW5kc1YxSW5zdGVhZEFwaSogfCBbKipBZGRDb21tYW5kVXNpbmdQT1NUKipdKGRvY3MvRGVwcmVjYXRlZERldmljZU1hbmFnZW1lbnRDb21tYW5kVjBVc2VEZXZpY2VNYW5hZ2VtZW50Q29tbWFuZHNWMUluc3RlYWRBcGkubWQjYWRkY29tbWFuZHVzaW5ncG9zdCkgfCAqKlBvc3QqKiAvYXBpL3YwL2Fzc2V0cy97YXNzZXROYW1lc3BhY2V9L3thc3NldElkfS9jb21tYW5kcyB8IFJlZ2lzdGVyIGEgbmV3IGNvbW1hbmQKKkRlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50Q29tbWFuZFYwVXNlRGV2aWNlTWFuYWdlbWVudENvbW1hbmRzVjFJbnN0ZWFkQXBpKiB8IFsqKkRlbGV0ZUNvbW1hbmRVc2luZ0RFTEVURSoqXShkb2NzL0RlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50Q29tbWFuZFYwVXNlRGV2aWNlTWFuYWdlbWVudENvbW1hbmRzVjFJbnN0ZWFkQXBpLm1kI2RlbGV0ZWNvbW1hbmR1c2luZ2RlbGV0ZSkgfCAqKkRlbGV0ZSoqIC9hcGkvdjAvY29tbWFuZHMve2NvbW1hbmRJZH0gfCBEZWxldGUgYSBzcGVjaWZpYyBjb21tYW5kCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudENvbW1hbmRWMFVzZURldmljZU1hbmFnZW1lbnRDb21tYW5kc1YxSW5zdGVhZEFwaSogfCBbKipHZXRBc3NldENvbW1hbmRzVXNpbmdHRVQqKl0oZG9jcy9EZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudENvbW1hbmRWMFVzZURldmljZU1hbmFnZW1lbnRDb21tYW5kc1YxSW5zdGVhZEFwaS5tZCNnZXRhc3NldGNvbW1hbmRzdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL2Fzc2V0cy97YXNzZXROYW1lc3BhY2V9L3thc3NldElkfS9jb21tYW5kcyB8IEdldCBhIGxpc3Qgb2YgY29tbWFuZHMgdGFyZ2V0aW5nIGEgc3BlY2lmaWMgYXNzZXQKKkRlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50Q29tbWFuZFYwVXNlRGV2aWNlTWFuYWdlbWVudENvbW1hbmRzVjFJbnN0ZWFkQXBpKiB8IFsqKkdldENvbW1hbmRTdGF0dXNVc2luZ0dFVCoqXShkb2NzL0RlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50Q29tbWFuZFYwVXNlRGV2aWNlTWFuYWdlbWVudENvbW1hbmRzVjFJbnN0ZWFkQXBpLm1kI2dldGNvbW1hbmRzdGF0dXN1c2luZ2dldCkgfCAqKkdldCoqIC9hcGkvdjAvY29tbWFuZHMve2NvbW1hbmRJZH0vc3RhdHVzIHwgR2V0IHRoZSBzdGF0dXMgb2YgYSBzcGVjaWZpYyBjb21tYW5kCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudENvbW1hbmRWMFVzZURldmljZU1hbmFnZW1lbnRDb21tYW5kc1YxSW5zdGVhZEFwaSogfCBbKipHZXRDb21tYW5kVXNpbmdHRVQqKl0oZG9jcy9EZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudENvbW1hbmRWMFVzZURldmljZU1hbmFnZW1lbnRDb21tYW5kc1YxSW5zdGVhZEFwaS5tZCNnZXRjb21tYW5kdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL2NvbW1hbmRzL3tjb21tYW5kSWR9IHwgR2V0IGEgc3BlY2lmaWMgY29tbWFuZAoqRGVwcmVjYXRlZERldmljZU1hbmFnZW1lbnRDb21tYW5kVjBVc2VEZXZpY2VNYW5hZ2VtZW50Q29tbWFuZHNWMUluc3RlYWRBcGkqIHwgWyoqTGlzdENvbW1hbmRzVXNpbmdHRVQqKl0oZG9jcy9EZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudENvbW1hbmRWMFVzZURldmljZU1hbmFnZW1lbnRDb21tYW5kc1YxSW5zdGVhZEFwaS5tZCNsaXN0Y29tbWFuZHN1c2luZ2dldCkgfCAqKkdldCoqIC9hcGkvdjAvY29tbWFuZHMgfCBMaXN0IHJlZ2lzdGVyZWQgY29tbWFuZHMKKkRlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50Q29tbWFuZFYwVXNlRGV2aWNlTWFuYWdlbWVudENvbW1hbmRzVjFJbnN0ZWFkQXBpKiB8IFsqKlNldENvbW1hbmRTdGF0dXNVc2luZ1BVVCoqXShkb2NzL0RlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50Q29tbWFuZFYwVXNlRGV2aWNlTWFuYWdlbWVudENvbW1hbmRzVjFJbnN0ZWFkQXBpLm1kI3NldGNvbW1hbmRzdGF0dXN1c2luZ3B1dCkgfCAqKlB1dCoqIC9hcGkvdjAvY29tbWFuZHMve2NvbW1hbmRJZH0vc3RhdHVzIHwgVXBkYXRlIHRoZSBzdGF0dXMgb2Ygc3BlY2lmaWMgY29tbWFuZCAKKkRlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50RGV2aWNlc0Zpcm13YXJlc0FwaSogfCBbKipHZXREZXZpY2VGaXJtd2FyZVVzaW5nR0VUKipdKGRvY3MvRGVwcmVjYXRlZERldmljZU1hbmFnZW1lbnREZXZpY2VzRmlybXdhcmVzQXBpLm1kI2dldGRldmljZWZpcm13YXJldXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YxL2RldmljZU1ndC9kZXZpY2VzL3tkZXZpY2VJZH0vZmlybXdhcmVzL3tmaXJtd2FyZUlkfSB8IEdldCBhIHNwZWNpZmljIGRldmljZSBmaXJtd2FyZSAodXNlIC9hcGkvdjEvZGV2aWNlTWd0L2RldmljZXMve2RldmljZUlkfS9yZXNvdXJjZXMve3Jlc291cmNlSWR9IGluc3RlYWQpCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudERldmljZXNGaXJtd2FyZXNBcGkqIHwgWyoqR2V0RGV2aWNlUmVzb3VyY2VVcGRhdGVzVXNpbmdHRVQqKl0oZG9jcy9EZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudERldmljZXNGaXJtd2FyZXNBcGkubWQjZ2V0ZGV2aWNlcmVzb3VyY2V1cGRhdGVzdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YxL2RldmljZU1ndC9kZXZpY2VzL3tkZXZpY2VJZH0vZmlybXdhcmVVcGRhdGVzIHwgR2V0IGEgbGlzdCBvZiBkZXZpY2UgZmlybXdhcmUgdXBkYXRlcyAodXNlIC9hcGkvdjEvZGV2aWNlTWd0L2RldmljZXMve2RldmljZUlkfS9yZXNvdXJjZXMvdXBkYXRlcwoqRGVwcmVjYXRlZERldmljZU1hbmFnZW1lbnREZXZpY2VzRmlybXdhcmVzQXBpKiB8IFsqKkdldExhc3RSZXNvdXJjZVVwZGF0ZVVzaW5nR0VUKipdKGRvY3MvRGVwcmVjYXRlZERldmljZU1hbmFnZW1lbnREZXZpY2VzRmlybXdhcmVzQXBpLm1kI2dldGxhc3RyZXNvdXJjZXVwZGF0ZXVzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MS9kZXZpY2VNZ3QvZGV2aWNlcy97ZGV2aWNlSWR9L2Zpcm13YXJlcy97ZmlybXdhcmVJZH0vbGFzdFVwZGF0ZSB8IEdldCBpbmZvIGFib3V0IGxhc3QgdXBkYXRlIG9mIHRoaXMgZGV2aWNlIGZpcm13YXJlICh1c2UgL2FwaS92MS9kZXZpY2VNZ3QvZGV2aWNlcy97ZGV2aWNlSWR9L3Jlc291cmNlcy97cmVzb3VyY2VJZH0vdXBkYXRlcy9sYXRlc3QgaW5zdGVhZCkKKkRlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50RGV2aWNlc0Zpcm13YXJlc0FwaSogfCBbKipMaXN0RGV2aWNlUmVzb3VyY2VzVXNpbmdHRVQqKl0oZG9jcy9EZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudERldmljZXNGaXJtd2FyZXNBcGkubWQjbGlzdGRldmljZXJlc291cmNlc3VzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MS9kZXZpY2VNZ3QvZGV2aWNlcy97ZGV2aWNlSWR9L2Zpcm13YXJlcyB8IEdldCBhIG1hcCBvZiBhbGwgZGV2aWNlIGZpcm13YXJlcyAodXNlIC9hcGkvdjEvZGV2aWNlTWd0L2RldmljZXMve2RldmljZUlkfS9yZXNvdXJjZXMgaW5zdGVhZCkKKkRlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50RGV2aWNlc0Zpcm13YXJlc0FwaSogfCBbKipTZXREZXZpY2VSZXNvdXJjZVZlcnNpb25Vc2luZ1BPU1QqKl0oZG9jcy9EZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudERldmljZXNGaXJtd2FyZXNBcGkubWQjc2V0ZGV2aWNlcmVzb3VyY2V2ZXJzaW9udXNpbmdwb3N0KSB8ICoqUG9zdCoqIC9hcGkvdjEvZGV2aWNlTWd0L2RldmljZXMve2RldmljZUlkfS9maXJtd2FyZXMve2Zpcm13YXJlSWR9IHwgU2V0IGRldmljZSBmaXJtd2FyZSB2ZXJzaW9ucyAodXNlIC9hcGkvdjEvZGV2aWNlTWd0L2RldmljZXMve2RldmljZUlkfS9yZXNvdXJjZXMve3Jlc291cmNlSWR9IGluc3RlYWQpCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYwVXNlRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYxSW5zdGVhZEFwaSogfCBbKipDcmVhdGVBc3NldFVzaW5nUE9TVCoqXShkb2NzL0RlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50SW52ZW50b3J5VjBVc2VEZXZpY2VNYW5hZ2VtZW50SW52ZW50b3J5VjFJbnN0ZWFkQXBpLm1kI2NyZWF0ZWFzc2V0dXNpbmdwb3N0KSB8ICoqUG9zdCoqIC9hcGkvdjAvYXNzZXRzIHwgQ3JlYXRlIGEgZGV2aWNlCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYwVXNlRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYxSW5zdGVhZEFwaSogfCBbKipEZWxldGVEZXZpY2VTdGF0dXNVc2luZ0RFTEVURSoqXShkb2NzL0RlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50SW52ZW50b3J5VjBVc2VEZXZpY2VNYW5hZ2VtZW50SW52ZW50b3J5VjFJbnN0ZWFkQXBpLm1kI2RlbGV0ZWRldmljZXN0YXR1c3VzaW5nZGVsZXRlKSB8ICoqRGVsZXRlKiogL2FwaS92MC9hc3NldHMve2Fzc2V0TmFtZXNwYWNlfS97YXNzZXRJZH0gfCBEZWxldGUgYSBkZXZpY2UKKkRlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50SW52ZW50b3J5VjBVc2VEZXZpY2VNYW5hZ2VtZW50SW52ZW50b3J5VjFJbnN0ZWFkQXBpKiB8IFsqKkdldEFzc2V0U3RhdHVzVXNpbmdHRVQqKl0oZG9jcy9EZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYwVXNlRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYxSW5zdGVhZEFwaS5tZCNnZXRhc3NldHN0YXR1c3VzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MC9hc3NldHMve2Fzc2V0TmFtZXNwYWNlfS97YXNzZXRJZH0gfCBHZXQgYSBkZXZpY2Ugc3RhdHVzCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYwVXNlRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYxSW5zdGVhZEFwaSogfCBbKipMaXN0QXNzZXROYW1lc3BhY2VzVXNpbmdHRVQqKl0oZG9jcy9EZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYwVXNlRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYxSW5zdGVhZEFwaS5tZCNsaXN0YXNzZXRuYW1lc3BhY2VzdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL2ludmVudG9yeS9uYW1lc3BhY2VzIHwgRW51bWVyYXRlcyB0aGUgdXNlZCBhc3NldCBuYW1lc3BhY2VzCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYwVXNlRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYxSW5zdGVhZEFwaSogfCBbKipMaXN0QXNzZXRzVXNpbmdHRVQqKl0oZG9jcy9EZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYwVXNlRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYxSW5zdGVhZEFwaS5tZCNsaXN0YXNzZXRzdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL2Fzc2V0cyB8IExpc3QgcmVnaXN0ZXJlZCBhc3NldHMgc3RhdHVzCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYwVXNlRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYxSW5zdGVhZEFwaSogfCBbKipVcGRhdGVBc3NldFVzaW5nUFVUKipdKGRvY3MvRGVwcmVjYXRlZERldmljZU1hbmFnZW1lbnRJbnZlbnRvcnlWMFVzZURldmljZU1hbmFnZW1lbnRJbnZlbnRvcnlWMUluc3RlYWRBcGkubWQjdXBkYXRlYXNzZXR1c2luZ3B1dCkgfCAqKlB1dCoqIC9hcGkvdjAvYXNzZXRzL3thc3NldE5hbWVzcGFjZX0ve2Fzc2V0SWR9IHwgVXBkYXRlIGEgZGV2aWNlCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudFBhcmFtZXRlclYwVXNlRGV2aWNlTWFuYWdlbWVudENvbmZpZ3VyYXRpb25WMUluc3RlYWRBcGkqIHwgWyoqR2V0QXNzZXRQYXJhbVVzaW5nR0VUKipdKGRvY3MvRGVwcmVjYXRlZERldmljZU1hbmFnZW1lbnRQYXJhbWV0ZXJWMFVzZURldmljZU1hbmFnZW1lbnRDb25maWd1cmF0aW9uVjFJbnN0ZWFkQXBpLm1kI2dldGFzc2V0cGFyYW11c2luZ2dldCkgfCAqKkdldCoqIC9hcGkvdjAvYXNzZXRzL3thc3NldE5hbWVzcGFjZX0ve2Fzc2V0SWR9L3BhcmFtcy97cGFyYW1LZXl9IHwgR2V0IGEgc3BlY2lmaWMgYXNzZXQgcGFyYW1ldGVyCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudFBhcmFtZXRlclYwVXNlRGV2aWNlTWFuYWdlbWVudENvbmZpZ3VyYXRpb25WMUluc3RlYWRBcGkqIHwgWyoqR2V0QXNzZXRQYXJhbXNVc2luZ0dFVCoqXShkb2NzL0RlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50UGFyYW1ldGVyVjBVc2VEZXZpY2VNYW5hZ2VtZW50Q29uZmlndXJhdGlvblYxSW5zdGVhZEFwaS5tZCNnZXRhc3NldHBhcmFtc3VzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MC9hc3NldHMve2Fzc2V0TmFtZXNwYWNlfS97YXNzZXRJZH0vcGFyYW1zIHwgR2V0IGEgc3BlY2lmaWMgYXNzZXQgbGlzdCBvZiBwYXJhbWV0ZXJzCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudFBhcmFtZXRlclYwVXNlRGV2aWNlTWFuYWdlbWVudENvbmZpZ3VyYXRpb25WMUluc3RlYWRBcGkqIHwgWyoqU2V0QXNzZXRQYXJhbXNVc2luZ1BPU1QqKl0oZG9jcy9EZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudFBhcmFtZXRlclYwVXNlRGV2aWNlTWFuYWdlbWVudENvbmZpZ3VyYXRpb25WMUluc3RlYWRBcGkubWQjc2V0YXNzZXRwYXJhbXN1c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MC9hc3NldHMve2Fzc2V0TmFtZXNwYWNlfS97YXNzZXRJZH0vcGFyYW1zIHwgVXBkYXRlIGEgc3BlY2lmaWMgYXNzZXQgbGlzdCBvZiBwYXJhbWV0ZXJzCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudFBhcmFtZXRlclYwVXNlRGV2aWNlTWFuYWdlbWVudENvbmZpZ3VyYXRpb25WMUluc3RlYWRBcGkqIHwgWyoqU2V0RGV2aWNlUGFyYW1VcGRhdGVTdGF0dXNVc2luZ1BVVCoqXShkb2NzL0RlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50UGFyYW1ldGVyVjBVc2VEZXZpY2VNYW5hZ2VtZW50Q29uZmlndXJhdGlvblYxSW5zdGVhZEFwaS5tZCNzZXRkZXZpY2VwYXJhbXVwZGF0ZXN0YXR1c3VzaW5ncHV0KSB8ICoqUHV0KiogL2FwaS92MC9hc3NldHMve2Fzc2V0TmFtZXNwYWNlfS97YXNzZXRJZH0vcGFyYW1zL3twYXJhbUtleX0vc3RhdHVzIHwgVXBkYXRlIHRoZSBzdGF0dXMgb2YgYSBzcGVjaWZpYyBhc3NldCBwYXJhbWV0ZXIgdXBkYXRlCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudFBhcmFtZXRlclYwVXNlRGV2aWNlTWFuYWdlbWVudENvbmZpZ3VyYXRpb25WMUluc3RlYWRBcGkqIHwgWyoqU2V0RGV2aWNlUGFyYW1zVXBkYXRlU3RhdHVzVXNpbmdQVVQqKl0oZG9jcy9EZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudFBhcmFtZXRlclYwVXNlRGV2aWNlTWFuYWdlbWVudENvbmZpZ3VyYXRpb25WMUluc3RlYWRBcGkubWQjc2V0ZGV2aWNlcGFyYW1zdXBkYXRlc3RhdHVzdXNpbmdwdXQpIHwgKipQdXQqKiAvYXBpL3YwL2Fzc2V0cy97YXNzZXROYW1lc3BhY2V9L3thc3NldElkfS9wYXJhbXMvc3RhdHVzIHwgVXBkYXRlIHRoZSBzdGF0dXMgb2YgYSBzcGVjaWZpYyBhc3NldCBwYXJhbWV0ZXJzIHVwZGF0ZQoqRGVwcmVjYXRlZERldmljZU1hbmFnZW1lbnRSZXNvdXJjZVYwVXNlRGV2aWNlTWFuYWdlbWVudFJlc291cmNlVjFJbnN0ZWFkQXBpKiB8IFsqKkNhbmNlbFJlc291cmNlVXBkYXRlVXNpbmdQT1NUKipdKGRvY3MvRGVwcmVjYXRlZERldmljZU1hbmFnZW1lbnRSZXNvdXJjZVYwVXNlRGV2aWNlTWFuYWdlbWVudFJlc291cmNlVjFJbnN0ZWFkQXBpLm1kI2NhbmNlbHJlc291cmNldXBkYXRldXNpbmdwb3N0KSB8ICoqUG9zdCoqIC9hcGkvdjAvcm0vYXNzZXQve2Fzc2V0SWROYW1lc3BhY2V9L3thc3NldElkfS9jYW5jZWxVcGRhdGUgfCBDYW5jZWwgYXNzZXQgcmVzb3VyY2UgdXBkYXRlCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudFJlc291cmNlVjBVc2VEZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VWMUluc3RlYWRBcGkqIHwgWyoqR2V0QWxsQXNzZXRSZXNvdXJjZXNVc2luZ0dFVCoqXShkb2NzL0RlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VWMFVzZURldmljZU1hbmFnZW1lbnRSZXNvdXJjZVYxSW5zdGVhZEFwaS5tZCNnZXRhbGxhc3NldHJlc291cmNlc3VzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MC9ybS9hc3NldC97YXNzZXRJZE5hbWVzcGFjZX0ve2Fzc2V0SWR9IHwgTGlzdCB0aGUgYXNzZXQmIzM5O3MgcmVzb3VyY2VzICh1c2UgL2FwaS92MS9kZXZpY2VNZ3QvZGV2aWNlcy97ZGV2aWNlSWR9L3Jlc291cmNlcyBpbnN0ZWFkKQoqRGVwcmVjYXRlZERldmljZU1hbmFnZW1lbnRSZXNvdXJjZVYwVXNlRGV2aWNlTWFuYWdlbWVudFJlc291cmNlVjFJbnN0ZWFkQXBpKiB8IFsqKkdldExhc3RVcGRhdGVVc2luZ0dFVCoqXShkb2NzL0RlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VWMFVzZURldmljZU1hbmFnZW1lbnRSZXNvdXJjZVYxSW5zdGVhZEFwaS5tZCNnZXRsYXN0dXBkYXRldXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL3JtL2Fzc2V0L3thc3NldElkTmFtZXNwYWNlfS97YXNzZXRJZH0vdXBkYXRlIHwgR2V0IHRoZSBhc3NldCYjMzk7cyByZXNvdXJjZXMgdXBkYXRlIHN0YXR1cyAodXNlIC9hcGkvdjEvZGV2aWNlTWd0L2RldmljZXMve2RldmljZUlkfS9maXJtd2FyZXMve2Zpcm13YXJlSWR9L2xhc3RVcGRhdGUgaW5zdGVhZCkKKkRlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VWMFVzZURldmljZU1hbmFnZW1lbnRSZXNvdXJjZVYxSW5zdGVhZEFwaSogfCBbKipHZXRVcGRhdGVIaXN0b3J5VXNpbmdHRVQqKl0oZG9jcy9EZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudFJlc291cmNlVjBVc2VEZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VWMUluc3RlYWRBcGkubWQjZ2V0dXBkYXRlaGlzdG9yeXVzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MC9ybS9hc3NldC97YXNzZXRJZE5hbWVzcGFjZX0ve2Fzc2V0SWR9L3VwZGF0ZS9oaXN0b3J5IHwgR2V0IHRoZSBhc3NldCYjMzk7cyByZXNvdXJjZXMgdXBkYXRlIGhpc3RvcnkgKHVzZSAvYXBpL3YxL2RldmljZU1ndC9kZXZpY2VzL3tkZXZpY2VJZH0vZmlybXdhcmVVcGRhdGVzIGluc3RlYWQpCipEZXByZWNhdGVkRGV2aWNlTWFuYWdlbWVudFJlc291cmNlVjBVc2VEZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VWMUluc3RlYWRBcGkqIHwgWyoqU2V0QXNzZXRUYXJnZXRSZXNvdXJjZVZlcnNpb25Vc2luZ1BVVCoqXShkb2NzL0RlcHJlY2F0ZWREZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VWMFVzZURldmljZU1hbmFnZW1lbnRSZXNvdXJjZVYxSW5zdGVhZEFwaS5tZCNzZXRhc3NldHRhcmdldHJlc291cmNldmVyc2lvbnVzaW5ncHV0KSB8ICoqUHV0KiogL2FwaS92MC9ybS9hc3NldC97YXNzZXRJZE5hbWVzcGFjZX0ve2Fzc2V0SWR9L3Jlc291cmNlL3tyZXNvdXJjZUlkfS90YXJnZXR2ZXJzaW9uIHwgU2V0IGFzc2V0JiMzOTtzIHRhcmdldCByZXNvdXJjZSB2ZXJzaW9uICh1c2UgL2FwaS92MS9kZXZpY2VNZ3QvZGV2aWNlcy97ZGV2aWNlSWR9L3Jlc291cmNlcy97cmVzb3VyY2VJZH0gaW5zdGVhZCkKKkRlcHJlY2F0ZWRHcm91cE1hbmFnZW1lbnRWMFVzZURldmljZU1hbmFnZW1lbnRHcm91cHNWMUluc3RlYWRBcGkqIHwgWyoqQ3JlYXRlR3JvdXBVc2luZ1BPU1QqKl0oZG9jcy9EZXByZWNhdGVkR3JvdXBNYW5hZ2VtZW50VjBVc2VEZXZpY2VNYW5hZ2VtZW50R3JvdXBzVjFJbnN0ZWFkQXBpLm1kI2NyZWF0ZWdyb3VwdXNpbmdwb3N0KSB8ICoqUG9zdCoqIC9hcGkvdjAvZ3JvdXBzIHwgQ3JlYXRlIGEgZ3JvdXAKKkRlcHJlY2F0ZWRHcm91cE1hbmFnZW1lbnRWMFVzZURldmljZU1hbmFnZW1lbnRHcm91cHNWMUluc3RlYWRBcGkqIHwgWyoqRGVsZXRlR3JvdXBVc2luZ0RFTEVURSoqXShkb2NzL0RlcHJlY2F0ZWRHcm91cE1hbmFnZW1lbnRWMFVzZURldmljZU1hbmFnZW1lbnRHcm91cHNWMUluc3RlYWRBcGkubWQjZGVsZXRlZ3JvdXB1c2luZ2RlbGV0ZSkgfCAqKkRlbGV0ZSoqIC9hcGkvdjAvZ3JvdXBzL3tncm91cElkfSB8IERlbGV0ZSBhIGdyb3VwCipEZXByZWNhdGVkR3JvdXBNYW5hZ2VtZW50VjBVc2VEZXZpY2VNYW5hZ2VtZW50R3JvdXBzVjFJbnN0ZWFkQXBpKiB8IFsqKkdldEdyb3VwVXNpbmdHRVQqKl0oZG9jcy9EZXByZWNhdGVkR3JvdXBNYW5hZ2VtZW50VjBVc2VEZXZpY2VNYW5hZ2VtZW50R3JvdXBzVjFJbnN0ZWFkQXBpLm1kI2dldGdyb3VwdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL2dyb3Vwcy97Z3JvdXBJZH0gfCBHZXQgYSBncm91cAoqRGVwcmVjYXRlZEdyb3VwTWFuYWdlbWVudFYwVXNlRGV2aWNlTWFuYWdlbWVudEdyb3Vwc1YxSW5zdGVhZEFwaSogfCBbKipMaXN0R3JvdXBzVXNpbmdHRVQqKl0oZG9jcy9EZXByZWNhdGVkR3JvdXBNYW5hZ2VtZW50VjBVc2VEZXZpY2VNYW5hZ2VtZW50R3JvdXBzVjFJbnN0ZWFkQXBpLm1kI2xpc3Rncm91cHN1c2luZ2dldCkgfCAqKkdldCoqIC9hcGkvdjAvZ3JvdXBzIHwgTGlzdCByZWdpc3RlcmVkIGdyb3VwcwoqRGVwcmVjYXRlZEdyb3VwTWFuYWdlbWVudFYwVXNlRGV2aWNlTWFuYWdlbWVudEdyb3Vwc1YxSW5zdGVhZEFwaSogfCBbKipVcGRhdGVHcm91cFVzaW5nUFVUKipdKGRvY3MvRGVwcmVjYXRlZEdyb3VwTWFuYWdlbWVudFYwVXNlRGV2aWNlTWFuYWdlbWVudEdyb3Vwc1YxSW5zdGVhZEFwaS5tZCN1cGRhdGVncm91cHVzaW5ncHV0KSB8ICoqUHV0KiogL2FwaS92MC9ncm91cHMve2dyb3VwSWR9IHwgVXBkYXRlIGEgZ3JvdXAKKkRlcHJlY2F0ZWRSb3V0ZXJUb3BpY01hbmFnZW1lbnRBcGkqIHwgWyoqUHVibGlzaFVzaW5nUE9TVCoqXShkb2NzL0RlcHJlY2F0ZWRSb3V0ZXJUb3BpY01hbmFnZW1lbnRBcGkubWQjcHVibGlzaHVzaW5ncG9zdCkgfCAqKlBvc3QqKiAvYXBpL3YwL3RvcGljcy9yb3V0ZXIve3JvdXRpbmdLZXl9IHwgUHVibGlzaGluZyBhIG1lc3NhZ2UgaW50byBhIFJPVVRFUiB0b3BpYwoqRGVwcmVjYXRlZFNNU0Nvbm5lY3RvckFwaSogfCBbKipTZW5kU01TVXNpbmdQT1NUKipdKGRvY3MvRGVwcmVjYXRlZFNNU0Nvbm5lY3RvckFwaS5tZCNzZW5kc21zdXNpbmdwb3N0KSB8ICoqUG9zdCoqIC9hcGkvdjAvc21zLWNvbm5lY3Rvci9zbXMgfCBzZW5kIFNNUyBieSBTTVMgQ29ubmVjdG9yIGZvciBhIGxpc3Qgb2YgTVNJU0ROCipEZXByZWNhdGVkU01TQ29ubmVjdG9yQnVzaW5lc3NTZXR0aW5nc1VzZURldmljZU1hbmFnZW1lbnRDb25uZWN0b3JOb2Rlc1YxSW5zdGVhZEFwaSogfCBbKipDcmVhdGVCdXNpbmVzc1NldHRpbmdzVXNpbmdQT1NUKipdKGRvY3MvRGVwcmVjYXRlZFNNU0Nvbm5lY3RvckJ1c2luZXNzU2V0dGluZ3NVc2VEZXZpY2VNYW5hZ2VtZW50Q29ubmVjdG9yTm9kZXNWMUluc3RlYWRBcGkubWQjY3JlYXRlYnVzaW5lc3NzZXR0aW5nc3VzaW5ncG9zdCkgfCAqKlBvc3QqKiAvYXBpL3YwL3Ntcy1jb25uZWN0b3Ivc2V0dGluZ3MvYnVzaW5lc3MgfCBDcmVhdGUgYSBuZXcgYnVzaW5lc3Mgc2V0dGluZ3Mgb2YgU01TIENvbm5lY3RvciAodXNlIERldmljZSBtYW5hZ2VtZW50IC0gSW50ZXJmYWNlcyAtIFYxIGluc3RlYWQpCipEZXByZWNhdGVkU01TQ29ubmVjdG9yQnVzaW5lc3NTZXR0aW5nc1VzZURldmljZU1hbmFnZW1lbnRDb25uZWN0b3JOb2Rlc1YxSW5zdGVhZEFwaSogfCBbKipEZWxldGVCdXNpbmVzc1NldHRpbmdzQnlNc2lTRE5Vc2luZ0RFTEVURSoqXShkb2NzL0RlcHJlY2F0ZWRTTVNDb25uZWN0b3JCdXNpbmVzc1NldHRpbmdzVXNlRGV2aWNlTWFuYWdlbWVudENvbm5lY3Rvck5vZGVzVjFJbnN0ZWFkQXBpLm1kI2RlbGV0ZWJ1c2luZXNzc2V0dGluZ3NieW1zaXNkbnVzaW5nZGVsZXRlKSB8ICoqRGVsZXRlKiogL2FwaS92MC9zbXMtY29ubmVjdG9yL3NldHRpbmdzL2J1c2luZXNzL21zaXNkbiB8IERlbGV0ZSBtc2lzZG4gaW4gYnVzaW5lc3Mgc2V0dGluZ3Mgb2YgU01TIENvbm5lY3RvcgoqRGVwcmVjYXRlZFNNU0Nvbm5lY3RvckJ1c2luZXNzU2V0dGluZ3NVc2VEZXZpY2VNYW5hZ2VtZW50Q29ubmVjdG9yTm9kZXNWMUluc3RlYWRBcGkqIHwgWyoqRGVsZXRlQnVzaW5lc3NTZXR0aW5nc0Zvck9uZU1zaVNETlVzaW5nREVMRVRFKipdKGRvY3MvRGVwcmVjYXRlZFNNU0Nvbm5lY3RvckJ1c2luZXNzU2V0dGluZ3NVc2VEZXZpY2VNYW5hZ2VtZW50Q29ubmVjdG9yTm9kZXNWMUluc3RlYWRBcGkubWQjZGVsZXRlYnVzaW5lc3NzZXR0aW5nc2Zvcm9uZW1zaXNkbnVzaW5nZGVsZXRlKSB8ICoqRGVsZXRlKiogL2FwaS92MC9zbXMtY29ubmVjdG9yL3NldHRpbmdzL2J1c2luZXNzL3tzZXJ2ZXJQaG9uZU51bWJlcn0vbXNpc2RuL3ttc2lzZG5OdW1iZXJ9IHwgRGVsZXRlIG9uZSBtc2lzZG4gaW4gYnVzaW5lc3Mgc2V0dGluZ3Mgb2YgU01TIENvbm5lY3RvcgoqRGVwcmVjYXRlZFNNU0Nvbm5lY3RvckJ1c2luZXNzU2V0dGluZ3NVc2VEZXZpY2VNYW5hZ2VtZW50Q29ubmVjdG9yTm9kZXNWMUluc3RlYWRBcGkqIHwgWyoqR2V0QnVzaW5lc3NTZXR0aW5nc1VzaW5nR0VUKipdKGRvY3MvRGVwcmVjYXRlZFNNU0Nvbm5lY3RvckJ1c2luZXNzU2V0dGluZ3NVc2VEZXZpY2VNYW5hZ2VtZW50Q29ubmVjdG9yTm9kZXNWMUluc3RlYWRBcGkubWQjZ2V0YnVzaW5lc3NzZXR0aW5nc3VzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MC9zbXMtY29ubmVjdG9yL3NldHRpbmdzL2J1c2luZXNzIHwgR2V0IGEgYnVzaW5lc3Mgc2V0dGluZ3Mgb2YgU01TIENvbm5lY3RvcgoqRGVwcmVjYXRlZFNNU0Nvbm5lY3RvckJ1c2luZXNzU2V0dGluZ3NVc2VEZXZpY2VNYW5hZ2VtZW50Q29ubmVjdG9yTm9kZXNWMUluc3RlYWRBcGkqIHwgWyoqTGlzdE1zaXNkblVzaW5nR0VUKipdKGRvY3MvRGVwcmVjYXRlZFNNU0Nvbm5lY3RvckJ1c2luZXNzU2V0dGluZ3NVc2VEZXZpY2VNYW5hZ2VtZW50Q29ubmVjdG9yTm9kZXNWMUluc3RlYWRBcGkubWQjbGlzdG1zaXNkbnVzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MC9zbXMtY29ubmVjdG9yL3NldHRpbmdzL2J1c2luZXNzL21zaXNkbiB8IExpc3QgbXNpc2RuIG9mIGJ1c2luZXNzIHNldHRpbmdzIG9mIFNNUyBDb25uZWN0b3IKKkRlcHJlY2F0ZWRTTVNDb25uZWN0b3JCdXNpbmVzc1NldHRpbmdzVXNlRGV2aWNlTWFuYWdlbWVudENvbm5lY3Rvck5vZGVzVjFJbnN0ZWFkQXBpKiB8IFsqKkxpc3RTZXR0aW5nc1VzaW5nR0VUKipdKGRvY3MvRGVwcmVjYXRlZFNNU0Nvbm5lY3RvckJ1c2luZXNzU2V0dGluZ3NVc2VEZXZpY2VNYW5hZ2VtZW50Q29ubmVjdG9yTm9kZXNWMUluc3RlYWRBcGkubWQjbGlzdHNldHRpbmdzdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL3Ntcy1jb25uZWN0b3Ivc2V0dGluZ3MgfCBMaXN0IGFsbCB0aGUgYnVzaW5lc3Mgc2V0dGluZ3Mgb2YgdGhlIFNNU0Nvbm5lY3RvciBmb3IgYSB0ZW5hbnQKKkRlcHJlY2F0ZWRTTVNDb25uZWN0b3JCdXNpbmVzc1NldHRpbmdzVXNlRGV2aWNlTWFuYWdlbWVudENvbm5lY3Rvck5vZGVzVjFJbnN0ZWFkQXBpKiB8IFsqKlVwZGF0ZUJ1c2luZXNzU2V0dGluZ3NVc2luZ1BPU1QqKl0oZG9jcy9EZXByZWNhdGVkU01TQ29ubmVjdG9yQnVzaW5lc3NTZXR0aW5nc1VzZURldmljZU1hbmFnZW1lbnRDb25uZWN0b3JOb2Rlc1YxSW5zdGVhZEFwaS5tZCN1cGRhdGVidXNpbmVzc3NldHRpbmdzdXNpbmdwb3N0KSB8ICoqUG9zdCoqIC9hcGkvdjAvc21zLWNvbm5lY3Rvci9zZXR0aW5ncy9idXNpbmVzcy97c2VydmVyUGhvbmVOdW1iZXJ9IHwgVXBkYXRlIGJ1c2luZXNzIHNldHRpbmdzIG9mIHRoZSBTTVNDb25uZWN0b3IKKkRlcHJlY2F0ZWRTdGF0aXN0aWNzVXNlQWNjb3VudGluZ1YxQWNjb3VudGluZ0luc3RlYWRBcGkqIHwgWyoqR2V0VGVuYW50U3RhdGlzdGljc1VzaW5nR0VUMyoqXShkb2NzL0RlcHJlY2F0ZWRTdGF0aXN0aWNzVXNlQWNjb3VudGluZ1YxQWNjb3VudGluZ0luc3RlYWRBcGkubWQjZ2V0dGVuYW50c3RhdGlzdGljc3VzaW5nZ2V0MykgfCAqKkdldCoqIC9hcGkvdjAvc3RhdGlzdGljcy90ZW5hbnQve3RlbmFudElkfSB8IEdldCB0ZW5hbnQgc3RhdGlzdGljcyBmb3IgYSBzcGVjaWZpYyB0ZW5hbnQgYW5kIGEgcmFuZ2Ugb2YgZGF0ZXMKKkRlcHJlY2F0ZWRUcmlnZ2Vyc0FuZEFjdGlvbnNBcGkqIHwgWyoqQ3JlYXRlVXNpbmdQT1NUMSoqXShkb2NzL0RlcHJlY2F0ZWRUcmlnZ2Vyc0FuZEFjdGlvbnNBcGkubWQjY3JlYXRldXNpbmdwb3N0MSkgfCAqKlBvc3QqKiAvYXBpL3YwL2V2ZW50MmFjdGlvbi9hY3Rpb25Qb2xpY2llcyB8IENyZWF0ZSBhbiBBY3Rpb25Qb2xpY3kKKkRlcHJlY2F0ZWRUcmlnZ2Vyc0FuZEFjdGlvbnNBcGkqIHwgWyoqRGVsZXRlVXNpbmdERUxFVEUxMioqXShkb2NzL0RlcHJlY2F0ZWRUcmlnZ2Vyc0FuZEFjdGlvbnNBcGkubWQjZGVsZXRldXNpbmdkZWxldGUxMikgfCAqKkRlbGV0ZSoqIC9hcGkvdjAvZXZlbnQyYWN0aW9uL2FjdGlvblBvbGljaWVzL3twb2xpY3lJZH0gfCBEZWxldGUgYW4gQWN0aW9uUG9saWN5CipEZXByZWNhdGVkVHJpZ2dlcnNBbmRBY3Rpb25zQXBpKiB8IFsqKkxpc3RVc2luZ0dFVDE0KipdKGRvY3MvRGVwcmVjYXRlZFRyaWdnZXJzQW5kQWN0aW9uc0FwaS5tZCNsaXN0dXNpbmdnZXQxNCkgfCAqKkdldCoqIC9hcGkvdjAvZXZlbnQyYWN0aW9uL2FjdGlvblBvbGljaWVzIHwgTGlzdCBBY3Rpb25Qb2xpY2llcwoqRGVwcmVjYXRlZFRyaWdnZXJzQW5kQWN0aW9uc0FwaSogfCBbKipSZXRyaWV2ZVVzaW5nR0VUMSoqXShkb2NzL0RlcHJlY2F0ZWRUcmlnZ2Vyc0FuZEFjdGlvbnNBcGkubWQjcmV0cmlldmV1c2luZ2dldDEpIHwgKipHZXQqKiAvYXBpL3YwL2V2ZW50MmFjdGlvbi9hY3Rpb25Qb2xpY2llcy97cG9saWN5SWR9IHwgUmV0cmlldmUgYW4gQWN0aW9uUG9saWN5CipEZXByZWNhdGVkVHJpZ2dlcnNBbmRBY3Rpb25zQXBpKiB8IFsqKlVwc2VydFVzaW5nUFVUKipdKGRvY3MvRGVwcmVjYXRlZFRyaWdnZXJzQW5kQWN0aW9uc0FwaS5tZCN1cHNlcnR1c2luZ3B1dCkgfCAqKlB1dCoqIC9hcGkvdjAvZXZlbnQyYWN0aW9uL2FjdGlvblBvbGljaWVzL3twb2xpY3lJZH0gfCBDcmVhdGUgb3IgdXBkYXRlIGFuIEFjdGlvblBvbGljeQoqRGVwcmVjYXRlZFRyaWdnZXJzQW5kQWN0aW9uc1Rlc3RBcGkqIHwgWyoqVGVzdEh0dHBQdXNoVXNpbmdQT1NUKipdKGRvY3MvRGVwcmVjYXRlZFRyaWdnZXJzQW5kQWN0aW9uc1Rlc3RBcGkubWQjdGVzdGh0dHBwdXNodXNpbmdwb3N0KSB8ICoqUG9zdCoqIC9hcGkvdjAvZXZlbnQyYWN0aW9uL3Rlc3QvaHR0cC1wdXNoIHwgUG9zdCBhbiBodHRwIHJlcXVlc3QgZm9yIHRlc3RpbmcgYSB3ZWJob29rCipEZXZpY2VNYW5hZ2VtZW50Q29tbWFuZHNWMUFwaSogfCBbKipBZGRDb21tYW5kVXNpbmdQT1NUMSoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRDb21tYW5kc1YxQXBpLm1kI2FkZGNvbW1hbmR1c2luZ3Bvc3QxKSB8ICoqUG9zdCoqIC9hcGkvdjEvZGV2aWNlTWd0L2RldmljZXMve2RldmljZUlkfS9jb21tYW5kcyB8IFJlZ2lzdGVyIGEgbmV3IGNvbW1hbmQKKkRldmljZU1hbmFnZW1lbnRDb21tYW5kc1YxQXBpKiB8IFsqKkRlbGV0ZUNvbW1hbmRVc2luZ0RFTEVURTEqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50Q29tbWFuZHNWMUFwaS5tZCNkZWxldGVjb21tYW5kdXNpbmdkZWxldGUxKSB8ICoqRGVsZXRlKiogL2FwaS92MS9kZXZpY2VNZ3QvY29tbWFuZHMve2NvbW1hbmRJZH0gfCBEZWxldGUgYSBzcGVjaWZpYyBjb21tYW5kCipEZXZpY2VNYW5hZ2VtZW50Q29tbWFuZHNWMUFwaSogfCBbKipHZXRBc3NldENvbW1hbmRzVXNpbmdHRVQxKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudENvbW1hbmRzVjFBcGkubWQjZ2V0YXNzZXRjb21tYW5kc3VzaW5nZ2V0MSkgfCAqKkdldCoqIC9hcGkvdjEvZGV2aWNlTWd0L2RldmljZXMve2RldmljZUlkfS9jb21tYW5kcyB8IExpc3QgY29tbWFuZHMgdGFyZ2V0aW5nIGEgc3BlY2lmaWMgZGV2aWNlCipEZXZpY2VNYW5hZ2VtZW50Q29tbWFuZHNWMUFwaSogfCBbKipHZXRDb21tYW5kU3RhdHVzVXNpbmdHRVQxKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudENvbW1hbmRzVjFBcGkubWQjZ2V0Y29tbWFuZHN0YXR1c3VzaW5nZ2V0MSkgfCAqKkdldCoqIC9hcGkvdjEvZGV2aWNlTWd0L2NvbW1hbmRzL3tjb21tYW5kSWR9L3N0YXR1cyB8IEdldCB0aGUgc3RhdHVzIG9mIGEgc3BlY2lmaWMgY29tbWFuZAoqRGV2aWNlTWFuYWdlbWVudENvbW1hbmRzVjFBcGkqIHwgWyoqR2V0Q29tbWFuZFVzaW5nR0VUMSoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRDb21tYW5kc1YxQXBpLm1kI2dldGNvbW1hbmR1c2luZ2dldDEpIHwgKipHZXQqKiAvYXBpL3YxL2RldmljZU1ndC9jb21tYW5kcy97Y29tbWFuZElkfSB8IEdldCBhIHNwZWNpZmljIGNvbW1hbmQKKkRldmljZU1hbmFnZW1lbnRDb21tYW5kc1YxQXBpKiB8IFsqKlNldENvbW1hbmRTdGF0dXNVc2luZ1BVVDEqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50Q29tbWFuZHNWMUFwaS5tZCNzZXRjb21tYW5kc3RhdHVzdXNpbmdwdXQxKSB8ICoqUHV0KiogL2FwaS92MS9kZXZpY2VNZ3QvY29tbWFuZHMve2NvbW1hbmRJZH0vc3RhdHVzIHwgVXBkYXRlIHRoZSBzdGF0dXMgb2Ygc3BlY2lmaWMgY29tbWFuZCAKKkRldmljZU1hbmFnZW1lbnRDb25maWd1cmF0aW9uVjFBcGkqIHwgWyoqR2V0RGV2aWNlQ29uZmlnUGFyYW1ldGVyVXNpbmdHRVQqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50Q29uZmlndXJhdGlvblYxQXBpLm1kI2dldGRldmljZWNvbmZpZ3BhcmFtZXRlcnVzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MS9kZXZpY2VNZ3QvZGV2aWNlcy97ZGV2aWNlSWR9L2NvbmZpZy9wYXJhbWV0ZXJzL3twYXJhbUtleX0gfCBHZXQgc3RhdGUgb2YgYSBzcGVjaWZpYyBkZXZpY2UgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIKKkRldmljZU1hbmFnZW1lbnRDb25maWd1cmF0aW9uVjFBcGkqIHwgWyoqR2V0RGV2aWNlQ29uZmlnUGFyYW1ldGVyc1VzaW5nR0VUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudENvbmZpZ3VyYXRpb25WMUFwaS5tZCNnZXRkZXZpY2Vjb25maWdwYXJhbWV0ZXJzdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YxL2RldmljZU1ndC9kZXZpY2VzL3tkZXZpY2VJZH0vY29uZmlnL3BhcmFtZXRlcnMgfCBHZXQgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycwoqRGV2aWNlTWFuYWdlbWVudENvbmZpZ3VyYXRpb25WMUFwaSogfCBbKipHZXREZXZpY2VDb25maWd1cmF0aW9uVXNpbmdHRVQqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50Q29uZmlndXJhdGlvblYxQXBpLm1kI2dldGRldmljZWNvbmZpZ3VyYXRpb251c2luZ2dldCkgfCAqKkdldCoqIC9hcGkvdjEvZGV2aWNlTWd0L2RldmljZXMve2RldmljZUlkfS9jb25maWcgfCBHZXQgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24KKkRldmljZU1hbmFnZW1lbnRDb25maWd1cmF0aW9uVjFBcGkqIHwgWyoqU2V0RGV2aWNlUGFyYW1VcGRhdGVTdGF0dXNVc2luZ1BVVDEqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50Q29uZmlndXJhdGlvblYxQXBpLm1kI3NldGRldmljZXBhcmFtdXBkYXRlc3RhdHVzdXNpbmdwdXQxKSB8ICoqUHV0KiogL2FwaS92MS9kZXZpY2VNZ3QvZGV2aWNlcy97ZGV2aWNlSWR9L2NvbmZpZy9wYXJhbWV0ZXJzL3twYXJhbUtleX0vc3RhdHVzIHwgVXBkYXRlIHRoZSBzdGF0dXMgb2YgYSBzcGVjaWZpYyBkZXZpY2UgcGFyYW1ldGVyCipEZXZpY2VNYW5hZ2VtZW50Q29uZmlndXJhdGlvblYxQXBpKiB8IFsqKlNldE11bHRpcGxlRGV2aWNlQ29uZmlnUGFyYW1zVXNpbmdQT1NUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudENvbmZpZ3VyYXRpb25WMUFwaS5tZCNzZXRtdWx0aXBsZWRldmljZWNvbmZpZ3BhcmFtc3VzaW5ncG9zdCkgfCAqKlBvc3QqKiAvYXBpL3YxL2RldmljZU1ndC9kZXZpY2VzL3tkZXZpY2VJZH0vY29uZmlnIHwgU2V0IHJlcXVlc3RlZCB2YWx1ZXMgZm9yIGEgc2V0IG9mIGRldmljZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMKKkRldmljZU1hbmFnZW1lbnRDb25uZWN0b3JOb2Rlc1YxQXBpKiB8IFsqKkRlbGV0ZU5vZGVVc2luZ0RFTEVURSoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRDb25uZWN0b3JOb2Rlc1YxQXBpLm1kI2RlbGV0ZW5vZGV1c2luZ2RlbGV0ZSkgfCAqKkRlbGV0ZSoqIC9hcGkvdjEvZGV2aWNlTWd0L2Nvbm5lY3RvcnMve2Nvbm5lY3Rvcn0vbm9kZXMve25vZGVJZH0gfCBEZWxldGUgYSBjb25uZWN0b3Igbm9kZQoqRGV2aWNlTWFuYWdlbWVudENvbm5lY3Rvck5vZGVzVjFBcGkqIHwgWyoqR2V0Tm9kZVVzaW5nR0VUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudENvbm5lY3Rvck5vZGVzVjFBcGkubWQjZ2V0bm9kZXVzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MS9kZXZpY2VNZ3QvY29ubmVjdG9ycy97Y29ubmVjdG9yfS9ub2Rlcy97bm9kZUlkfSB8IEdldCBkZXRhaWxzIG9mIGNvbm5lY3RvciBub2RlCipEZXZpY2VNYW5hZ2VtZW50Q29ubmVjdG9yTm9kZXNWMUFwaSogfCBbKipMaXN0Tm9kZXNVc2luZ0dFVCoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRDb25uZWN0b3JOb2Rlc1YxQXBpLm1kI2xpc3Rub2Rlc3VzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MS9kZXZpY2VNZ3QvY29ubmVjdG9ycy97Y29ubmVjdG9yfS9ub2RlcyB8IExpc3QgYWxsIGNvbm5lY3RvciBub2RlcwoqRGV2aWNlTWFuYWdlbWVudENvbm5lY3Rvck5vZGVzVjFBcGkqIHwgWyoqVXBkYXRlTm9kZVVzaW5nUEFUQ0gqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50Q29ubmVjdG9yTm9kZXNWMUFwaS5tZCN1cGRhdGVub2RldXNpbmdwYXRjaCkgfCAqKlBhdGNoKiogL2FwaS92MS9kZXZpY2VNZ3QvY29ubmVjdG9ycy97Y29ubmVjdG9yfS9ub2Rlcy97bm9kZUlkfSB8IFVwZGF0ZSBhIGNvbm5lY3RvciBub2RlCipEZXZpY2VNYW5hZ2VtZW50Rm9yQ09BUExXTTJNQmV0YUFwaSogfCBbKipHZXREZXZpY2VVc2luZ0dFVDQqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50Rm9yQ09BUExXTTJNQmV0YUFwaS5tZCNnZXRkZXZpY2V1c2luZ2dldDQpIHwgKipHZXQqKiAvYXBpL3YwL3ZlbmRvcnMvbHdtMm0vaWRlbnRpdHkve2VwfSB8IEZpbmQgYSBkZXZpY2UKKkRldmljZU1hbmFnZW1lbnRGb3JDT0FQTFdNMk1CZXRhQXBpKiB8IFsqKkxpc3REZXZpY2VzVXNpbmdHRVQ0KipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudEZvckNPQVBMV00yTUJldGFBcGkubWQjbGlzdGRldmljZXN1c2luZ2dldDQpIHwgKipHZXQqKiAvYXBpL3YwL3ZlbmRvcnMvbHdtMm0vaWRlbnRpdGllcyB8IExpc3QgbHdtMm0gZGV2aWNlcwoqRGV2aWNlTWFuYWdlbWVudEZvckNPQVBMV00yTUJldGFBcGkqIHwgWyoqUmVnaXN0ZXJEZXZpY2VVc2luZ1BPU1QxKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudEZvckNPQVBMV00yTUJldGFBcGkubWQjcmVnaXN0ZXJkZXZpY2V1c2luZ3Bvc3QxKSB8ICoqUG9zdCoqIC9hcGkvdjAvdmVuZG9ycy9sd20ybS9pZGVudGl0aWVzIHwgUmVnaXN0ZXIgTFdNMk0vRFRMUyBpZGVudGl0eQoqRGV2aWNlTWFuYWdlbWVudEZvckNPQVBMV00yTUJldGFBcGkqIHwgWyoqVW5yZWdpc3RlckRldmljZVVzaW5nREVMRVRFMSoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRGb3JDT0FQTFdNMk1CZXRhQXBpLm1kI3VucmVnaXN0ZXJkZXZpY2V1c2luZ2RlbGV0ZTEpIHwgKipEZWxldGUqKiAvYXBpL3YwL3ZlbmRvcnMvbHdtMm0vaWRlbnRpdHkve2VwfSB8IFVucmVnaXN0ZXIgYSBkZXZpY2UKKkRldmljZU1hbmFnZW1lbnRGb3JDT0FQTFdNMk1CZXRhQXBpKiB8IFsqKlVwZGF0ZURldmljZVVzaW5nUFVUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudEZvckNPQVBMV00yTUJldGFBcGkubWQjdXBkYXRlZGV2aWNldXNpbmdwdXQpIHwgKipQdXQqKiAvYXBpL3YwL3ZlbmRvcnMvbHdtMm0vaWRlbnRpdHkve2VwfSB8IFVwZGF0ZSBhIGRldmljZQoqRGV2aWNlTWFuYWdlbWVudEZvckxvUmFBcGkqIHwgWyoqQ291bnREZXZpY2VzVXNpbmdHRVQyKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudEZvckxvUmFBcGkubWQjY291bnRkZXZpY2VzdXNpbmdnZXQyKSB8ICoqR2V0KiogL2FwaS92MC92ZW5kb3JzL2xvcmEvZGV2aWNlcy9jb3VudCB8IERldmljZSBjb3VudHMKKkRldmljZU1hbmFnZW1lbnRGb3JMb1JhQXBpKiB8IFsqKkdldERldmljZVByb2ZpbGVzVXNpbmdHRVQqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50Rm9yTG9SYUFwaS5tZCNnZXRkZXZpY2Vwcm9maWxlc3VzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MS9kZXZpY2VNZ3QvY29ubmVjdG9ycy9sb3JhL3Byb2ZpbGVzIHwgR2V0IExvUmEgZGV2aWNlIHByb2ZpbGVzCipEZXZpY2VNYW5hZ2VtZW50Rm9yTG9SYUFwaSogfCBbKipHZXREZXZpY2VQcm9maWxlc1VzaW5nR0VUMSoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRGb3JMb1JhQXBpLm1kI2dldGRldmljZXByb2ZpbGVzdXNpbmdnZXQxKSB8ICoqR2V0KiogL2FwaS92MC92ZW5kb3JzL2xvcmEvcHJvZmlsZXMgfCBHZXQgTG9SYSBkZXZpY2UgcHJvZmlsZXMgKHVzZSAvYXBpL3YxL2RldmljZU1ndC9jb25uZWN0b3JzL2xvcmEvcHJvZmlsZXMgaW5zdGVhZCkKKkRldmljZU1hbmFnZW1lbnRGb3JMb1JhQXBpKiB8IFsqKkdldERldmljZVVzaW5nR0VUMyoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRGb3JMb1JhQXBpLm1kI2dldGRldmljZXVzaW5nZ2V0MykgfCAqKkdldCoqIC9hcGkvdjAvdmVuZG9ycy9sb3JhL2RldmljZXMve2RldkVVSX0gfCBHZXQgYSBkZXZpY2UgKHVzZSBEZXZpY2UgbWFuYWdlbWVudCAtIENvbm5lY3RvciBub2RlcyAtIFYxIGluc3RlYWQpCipEZXZpY2VNYW5hZ2VtZW50Rm9yTG9SYUFwaSogfCBbKipHZXRHYXRld2F5VXNpbmdHRVQqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50Rm9yTG9SYUFwaS5tZCNnZXRnYXRld2F5dXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YxL2RldmljZU1ndC9jb25uZWN0b3JzL2xvcmEvZ2F0ZXdheXMve2lkfSB8IEdldCBhIGdhdGV3YXkKKkRldmljZU1hbmFnZW1lbnRGb3JMb1JhQXBpKiB8IFsqKkdldE1lc3NhZ2VDb3VudFVzaW5nR0VUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudEZvckxvUmFBcGkubWQjZ2V0bWVzc2FnZWNvdW50dXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL3ZlbmRvcnMvbG9yYS9kYXRhL2NvdW50IHwgTGlzdCBvZiBtZXNzYWdlIGNvdW50cyBncm91cCBieSBwZXJpb2QKKkRldmljZU1hbmFnZW1lbnRGb3JMb1JhQXBpKiB8IFsqKkxpc3RDb21tYW5kVXNpbmdHRVQqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50Rm9yTG9SYUFwaS5tZCNsaXN0Y29tbWFuZHVzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MS9kZXZpY2VNZ3QvY29ubmVjdG9ycy9sb3JhL25vZGVzL3tkZXZFVUl9L2Rvd25saW5rcyB8IExpc3QgY29tbWFuZHMKKkRldmljZU1hbmFnZW1lbnRGb3JMb1JhQXBpKiB8IFsqKkxpc3RDb21tYW5kVXNpbmdHRVQxKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudEZvckxvUmFBcGkubWQjbGlzdGNvbW1hbmR1c2luZ2dldDEpIHwgKipHZXQqKiAvYXBpL3YwL3ZlbmRvcnMvbG9yYS9kZXZpY2VzL3tkZXZFVUl9L2NvbW1hbmRzIHwgTGlzdCBjb21tYW5kcyAodXNlIC9hcGkvdjEvZGV2aWNlTWd0L2Nvbm5lY3RvcnMvbG9yYS9ub2Rlcy97ZGV2RVVJfS9kb3dubGlua3MgaW5zdGVhZCkKKkRldmljZU1hbmFnZW1lbnRGb3JMb1JhQXBpKiB8IFsqKkxpc3RDb25uZWN0aXZpdHlQbGFuVXNpbmdHRVQqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50Rm9yTG9SYUFwaS5tZCNsaXN0Y29ubmVjdGl2aXR5cGxhbnVzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MS9kZXZpY2VNZ3QvY29ubmVjdG9ycy9sb3JhL2Nvbm5lY3Rpdml0eSB8IExpc3QgY29ubmVjdGl2aXR5IHBsYW4KKkRldmljZU1hbmFnZW1lbnRGb3JMb1JhQXBpKiB8IFsqKkxpc3RDb25uZWN0aXZpdHlQbGFuc1VzaW5nR0VUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudEZvckxvUmFBcGkubWQjbGlzdGNvbm5lY3Rpdml0eXBsYW5zdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YxL2RldmljZU1ndC9jb25uZWN0b3JzL2xvcmEvY29ubmVjdGl2aXRpZXMgfCBMaXN0IGNvbm5lY3Rpdml0eSBwbGFucwoqRGV2aWNlTWFuYWdlbWVudEZvckxvUmFBcGkqIHwgWyoqTGlzdERldmljZXNVc2luZ0dFVDMqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50Rm9yTG9SYUFwaS5tZCNsaXN0ZGV2aWNlc3VzaW5nZ2V0MykgfCAqKkdldCoqIC9hcGkvdjAvdmVuZG9ycy9sb3JhL2RldmljZXMgfCBMaXN0IExvUmEgZGV2aWNlcyAodXNlIERldmljZSBtYW5hZ2VtZW50IC0gQ29ubmVjdG9yIG5vZGVzIC0gVjEgaW5zdGVhZCkKKkRldmljZU1hbmFnZW1lbnRGb3JMb1JhQXBpKiB8IFsqKkxpc3RHYXRld2F5c1VzaW5nR0VUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudEZvckxvUmFBcGkubWQjbGlzdGdhdGV3YXlzdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YxL2RldmljZU1ndC9jb25uZWN0b3JzL2xvcmEvZ2F0ZXdheXMgfCBMaXN0IGdhdGV3YXlzCipEZXZpY2VNYW5hZ2VtZW50Rm9yTG9SYUFwaSogfCBbKipSZWdpc3RlckNvbW1hbmRVc2luZ1BPU1QqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50Rm9yTG9SYUFwaS5tZCNyZWdpc3RlcmNvbW1hbmR1c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MS9kZXZpY2VNZ3QvY29ubmVjdG9ycy9sb3JhL25vZGVzL3tkZXZFVUl9L2Rvd25saW5rcyB8IFJlZ2lzdGVyIGEgY29tbWFuZAoqRGV2aWNlTWFuYWdlbWVudEZvckxvUmFBcGkqIHwgWyoqUmVnaXN0ZXJDb21tYW5kVXNpbmdQT1NUMSoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRGb3JMb1JhQXBpLm1kI3JlZ2lzdGVyY29tbWFuZHVzaW5ncG9zdDEpIHwgKipQb3N0KiogL2FwaS92MC92ZW5kb3JzL2xvcmEvZGV2aWNlcy97ZGV2RVVJfS9jb21tYW5kcyB8IFJlZ2lzdGVyIGEgY29tbWFuZCAodXNlIC9hcGkvdjEvZGV2aWNlTWd0L2Nvbm5lY3RvcnMvbG9yYS9ub2Rlcy97ZGV2RVVJfS9kb3dubGlua3MgaW5zdGVhZCkKKkRldmljZU1hbmFnZW1lbnRGb3JMb1JhQXBpKiB8IFsqKlJlZ2lzdGVyRGV2aWNlVXNpbmdQT1NUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudEZvckxvUmFBcGkubWQjcmVnaXN0ZXJkZXZpY2V1c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MC92ZW5kb3JzL2xvcmEvZGV2aWNlcyB8IFJlZ2lzdGVyIGEgTG9SYSBkZXZpY2UgKHVzZSBEZXZpY2UgbWFuYWdlbWVudCAtIEludGVyZmFjZXMgLSBWMSBpbnN0ZWFkKQoqRGV2aWNlTWFuYWdlbWVudEZvckxvUmFBcGkqIHwgWyoqVW5yZWdpc3RlckRldmljZVVzaW5nREVMRVRFKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudEZvckxvUmFBcGkubWQjdW5yZWdpc3RlcmRldmljZXVzaW5nZGVsZXRlKSB8ICoqRGVsZXRlKiogL2FwaS92MC92ZW5kb3JzL2xvcmEvZGV2aWNlcy97ZGV2RVVJfSB8IFVucmVnaXN0ZXIgYSBkZXZpY2UgKHVzZSBEZXZpY2UgbWFuYWdlbWVudCAtIENvbm5lY3RvciBub2RlcyAtIFYxIGluc3RlYWQpCipEZXZpY2VNYW5hZ2VtZW50Rm9yTG9SYUFwaSogfCBbKipVcGRhdGVEZXZpY2VVc2luZ1BBVENIMSoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRGb3JMb1JhQXBpLm1kI3VwZGF0ZWRldmljZXVzaW5ncGF0Y2gxKSB8ICoqUGF0Y2gqKiAvYXBpL3YwL3ZlbmRvcnMvbG9yYS9kZXZpY2VzL3tkZXZFVUl9IHwgVXBkYXRlIGEgZGV2aWNlICh1c2UgRGV2aWNlIG1hbmFnZW1lbnQgLSBDb25uZWN0b3Igbm9kZXMgLSBWMSBpbnN0ZWFkKQoqRGV2aWNlTWFuYWdlbWVudEZvckxvUmFBcGkqIHwgWyoqVXBkYXRlR2F0ZXdheVVzaW5nUEFUQ0gqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50Rm9yTG9SYUFwaS5tZCN1cGRhdGVnYXRld2F5dXNpbmdwYXRjaCkgfCAqKlBhdGNoKiogL2FwaS92MS9kZXZpY2VNZ3QvY29ubmVjdG9ycy9sb3JhL2dhdGV3YXlzL3tpZH0gfCBVcGRhdGUgYSBnYXRld2F5LgoqRGV2aWNlTWFuYWdlbWVudEdyb3Vwc1YxQXBpKiB8IFsqKkNyZWF0ZUdyb3VwVXNpbmdQT1NUMSoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRHcm91cHNWMUFwaS5tZCNjcmVhdGVncm91cHVzaW5ncG9zdDEpIHwgKipQb3N0KiogL2FwaS92MS9kZXZpY2VNZ3QvZ3JvdXBzIHwgQ3JlYXRlIGEgZ3JvdXAKKkRldmljZU1hbmFnZW1lbnRHcm91cHNWMUFwaSogfCBbKipEZWxldGVHcm91cFVzaW5nREVMRVRFMSoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRHcm91cHNWMUFwaS5tZCNkZWxldGVncm91cHVzaW5nZGVsZXRlMSkgfCAqKkRlbGV0ZSoqIC9hcGkvdjEvZGV2aWNlTWd0L2dyb3Vwcy97aWR9IHwgRGVsZXRlIGEgZ3JvdXAKKkRldmljZU1hbmFnZW1lbnRHcm91cHNWMUFwaSogfCBbKipHZXRHcm91cFVzaW5nR0VUMSoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRHcm91cHNWMUFwaS5tZCNnZXRncm91cHVzaW5nZ2V0MSkgfCAqKkdldCoqIC9hcGkvdjEvZGV2aWNlTWd0L2dyb3Vwcy97aWR9IHwgR2V0IGEgZ3JvdXAKKkRldmljZU1hbmFnZW1lbnRHcm91cHNWMUFwaSogfCBbKipMaXN0R3JvdXBzVXNpbmdHRVQxKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudEdyb3Vwc1YxQXBpLm1kI2xpc3Rncm91cHN1c2luZ2dldDEpIHwgKipHZXQqKiAvYXBpL3YxL2RldmljZU1ndC9ncm91cHMgfCBMaXN0IHJlZ2lzdGVyZWQgZ3JvdXBzCipEZXZpY2VNYW5hZ2VtZW50R3JvdXBzVjFBcGkqIHwgWyoqVXBkYXRlR3JvdXBVc2luZ1BVVDEqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50R3JvdXBzVjFBcGkubWQjdXBkYXRlZ3JvdXB1c2luZ3B1dDEpIHwgKipQdXQqKiAvYXBpL3YxL2RldmljZU1ndC9ncm91cHMve2lkfSB8IFVwZGF0ZSBhIGdyb3VwCipEZXZpY2VNYW5hZ2VtZW50SW50ZXJmYWNlc1YxQXBpKiB8IFsqKkFkZEludGVyZmFjZVRvRGV2aWNlVXNpbmdQT1NUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudEludGVyZmFjZXNWMUFwaS5tZCNhZGRpbnRlcmZhY2V0b2RldmljZXVzaW5ncG9zdCkgfCAqKlBvc3QqKiAvYXBpL3YxL2RldmljZU1ndC9kZXZpY2VzL3tkZXZpY2VJZH0vaW50ZXJmYWNlcyB8IEFkZCBhbiBpbnRlcmZhY2UgdG8gYSByZWdpc3RlcmVkIGRldmljZQoqRGV2aWNlTWFuYWdlbWVudEludGVyZmFjZXNWMUFwaSogfCBbKipEZWxldGVJbnRlcmZhY2VVc2luZ0RFTEVURSoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRJbnRlcmZhY2VzVjFBcGkubWQjZGVsZXRlaW50ZXJmYWNldXNpbmdkZWxldGUpIHwgKipEZWxldGUqKiAvYXBpL3YxL2RldmljZU1ndC9kZXZpY2VzL3tkZXZpY2VJZH0vaW50ZXJmYWNlcy97aW50ZXJmYWNlSWR9IHwgRGVsZXRlIGFuIGludGVyZmFjZQoqRGV2aWNlTWFuYWdlbWVudEludGVyZmFjZXNWMUFwaSogfCBbKipHZXRJbnRlcmZhY2VGb3JBRGV2aWNlVXNpbmdHRVQqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50SW50ZXJmYWNlc1YxQXBpLm1kI2dldGludGVyZmFjZWZvcmFkZXZpY2V1c2luZ2dldCkgfCAqKkdldCoqIC9hcGkvdjEvZGV2aWNlTWd0L2RldmljZXMve2RldmljZUlkfS9pbnRlcmZhY2VzL3tpbnRlcmZhY2VJZH0gfCBHZXQgYSBzcGVjaWZpYyBpbnRlcmZhY2UgZm9yIGEgcmVnaXN0ZXJlZCBkZXZpY2UKKkRldmljZU1hbmFnZW1lbnRJbnRlcmZhY2VzVjFBcGkqIHwgWyoqTGlzdEludGVyZmFjZXNGb3JBRGV2aWNlVXNpbmdHRVQqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50SW50ZXJmYWNlc1YxQXBpLm1kI2xpc3RpbnRlcmZhY2VzZm9yYWRldmljZXVzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MS9kZXZpY2VNZ3QvZGV2aWNlcy97ZGV2aWNlSWR9L2ludGVyZmFjZXMgfCBHZXQgdGhlIGludGVyZmFjZSBsaXN0IGZvciBhIHJlZ2lzdGVyZWQgZGV2aWNlCipEZXZpY2VNYW5hZ2VtZW50SW50ZXJmYWNlc1YxQXBpKiB8IFsqKlVwZGF0ZUludGVyZmFjZVVzaW5nUEFUQ0gqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50SW50ZXJmYWNlc1YxQXBpLm1kI3VwZGF0ZWludGVyZmFjZXVzaW5ncGF0Y2gpIHwgKipQYXRjaCoqIC9hcGkvdjEvZGV2aWNlTWd0L2RldmljZXMve2RldmljZUlkfS9pbnRlcmZhY2VzL3tpbnRlcmZhY2VJZH0gfCBVcGRhdGUgYW4gaW50ZXJmYWNlCipEZXZpY2VNYW5hZ2VtZW50SW52ZW50b3J5VjFBcGkqIHwgWyoqQ3JlYXRlRGV2aWNlVXNpbmdQT1NUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYxQXBpLm1kI2NyZWF0ZWRldmljZXVzaW5ncG9zdCkgfCAqKlBvc3QqKiAvYXBpL3YxL2RldmljZU1ndC9kZXZpY2VzIHwgQ3JlYXRlIGEgZGV2aWNlCipEZXZpY2VNYW5hZ2VtZW50SW52ZW50b3J5VjFBcGkqIHwgWyoqRGVsZXRlRGV2aWNlVXNpbmdERUxFVEUqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50SW52ZW50b3J5VjFBcGkubWQjZGVsZXRlZGV2aWNldXNpbmdkZWxldGUpIHwgKipEZWxldGUqKiAvYXBpL3YxL2RldmljZU1ndC9kZXZpY2VzL3tkZXZpY2VJZH0gfCBEZWxldGUgYSBkZXZpY2UKKkRldmljZU1hbmFnZW1lbnRJbnZlbnRvcnlWMUFwaSogfCBbKipHZXREZXZpY2VTdHJlYW1zVXNpbmdHRVQqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50SW52ZW50b3J5VjFBcGkubWQjZ2V0ZGV2aWNlc3RyZWFtc3VzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MS9kZXZpY2VNZ3QvZGV2aWNlcy97ZGV2aWNlSWR9L2RhdGEvc3RyZWFtcyB8IEdldCBhIGRldmljZSYjMzk7cyBzdHJlYW1JZHMKKkRldmljZU1hbmFnZW1lbnRJbnZlbnRvcnlWMUFwaSogfCBbKipHZXREZXZpY2VVc2luZ0dFVDIqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50SW52ZW50b3J5VjFBcGkubWQjZ2V0ZGV2aWNldXNpbmdnZXQyKSB8ICoqR2V0KiogL2FwaS92MS9kZXZpY2VNZ3QvZGV2aWNlcy97ZGV2aWNlSWR9IHwgR2V0IGEgZGV2aWNlCipEZXZpY2VNYW5hZ2VtZW50SW52ZW50b3J5VjFBcGkqIHwgWyoqTGlzdERldmljZXNVc2luZ0dFVDIqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50SW52ZW50b3J5VjFBcGkubWQjbGlzdGRldmljZXN1c2luZ2dldDIpIHwgKipHZXQqKiAvYXBpL3YxL2RldmljZU1ndC9kZXZpY2VzIHwgTGlzdCByZWdpc3RlcmVkIGRldmljZXMKKkRldmljZU1hbmFnZW1lbnRJbnZlbnRvcnlWMUFwaSogfCBbKipVcGRhdGVEZXZpY2VVc2luZ1BBVENIKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudEludmVudG9yeVYxQXBpLm1kI3VwZGF0ZWRldmljZXVzaW5ncGF0Y2gpIHwgKipQYXRjaCoqIC9hcGkvdjEvZGV2aWNlTWd0L2RldmljZXMve2RldmljZUlkfSB8IFVwZGF0ZSBhIGRldmljZQoqRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc01hbmFnZW1lbnRBcGkqIHwgWyoqQWRkUmVzb3VyY2VVc2luZ1BPU1QqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VzTWFuYWdlbWVudEFwaS5tZCNhZGRyZXNvdXJjZXVzaW5ncG9zdCkgfCAqKlBvc3QqKiAvYXBpL3YwL3JtIHwgQWRkIGEgcmVzb3VyY2UgaW4gUmVzb3VyY2UgTWFuYWdlcgoqRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc01hbmFnZW1lbnRBcGkqIHwgWyoqQWRkUmVzb3VyY2VWZXJzaW9uVXNpbmdQT1NUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc01hbmFnZW1lbnRBcGkubWQjYWRkcmVzb3VyY2V2ZXJzaW9udXNpbmdwb3N0KSB8ICoqUG9zdCoqIC9hcGkvdjAvcm0ve3Jlc291cmNlSWR9L3ZlcnNpb24gfCBBZGQgYSBuZXcgdmVyc2lvbiB0byBhIHJlc291cmNlCipEZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VzTWFuYWdlbWVudEFwaSogfCBbKipEZWxldGVSZXNvdXJjZVVzaW5nREVMRVRFKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc01hbmFnZW1lbnRBcGkubWQjZGVsZXRlcmVzb3VyY2V1c2luZ2RlbGV0ZSkgfCAqKkRlbGV0ZSoqIC9hcGkvdjAvcm0ve3Jlc291cmNlSWR9IHwgRGVsZXRlIGEgcmVzb3VyY2UKKkRldmljZU1hbmFnZW1lbnRSZXNvdXJjZXNNYW5hZ2VtZW50QXBpKiB8IFsqKkRlbGV0ZVJlc291cmNlVmVyc2lvblVzaW5nREVMRVRFKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc01hbmFnZW1lbnRBcGkubWQjZGVsZXRlcmVzb3VyY2V2ZXJzaW9udXNpbmdkZWxldGUpIHwgKipEZWxldGUqKiAvYXBpL3YwL3JtL3tyZXNvdXJjZUlkfS92ZXJzaW9uL3tyZXNvdXJjZVZlcnNpb25JZH0gfCBEZWxldGUgYSByZXNvdXJjZSYjMzk7cyB2ZXJzaW9uCipEZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VzTWFuYWdlbWVudEFwaSogfCBbKipHZXRBbGxDb25uZWN0b3JzVXNpbmdHRVQqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VzTWFuYWdlbWVudEFwaS5tZCNnZXRhbGxjb25uZWN0b3JzdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL3JtL2Nvbm5lY3RvcnMgfCBHZXQgYWxsIGF2YWlsYWJsZSBjb25uZWN0b3JzCipEZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VzTWFuYWdlbWVudEFwaSogfCBbKipHZXRDb25uZWN0b3JNYW5kYXRvcnlBbmRPcHRpb25hbE1ldGFkYXRhVXNpbmdHRVQqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VzTWFuYWdlbWVudEFwaS5tZCNnZXRjb25uZWN0b3JtYW5kYXRvcnlhbmRvcHRpb25hbG1ldGFkYXRhdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL3JtL2Nvbm5lY3RvcnMve2Nvbm5lY3Rvcn0vbWV0YWRhdGEgfCBHZXQgbWFuZGF0b3J5IGFuZCBvcHRpb25hbCBtZXRhZGF0YSBvZiBhIGNvbm5lY3RvcgoqRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc01hbmFnZW1lbnRBcGkqIHwgWyoqR2V0UmVzb3VyY2VDb21wYXRpYmxlVmVyc2lvbnNVc2luZ0dFVCoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRSZXNvdXJjZXNNYW5hZ2VtZW50QXBpLm1kI2dldHJlc291cmNlY29tcGF0aWJsZXZlcnNpb25zdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL3JtL3tyZXNvdXJjZUlkfS9jb21wYXRpYmxlVmVyc2lvbi97Y3VycmVudFZlcnNpb259IHwgTGlzdCB0aGUgdmVyc2lvbnMgZnJvbSB3aGljaCBhIHJlc291cmNlIHVwZGF0ZSB0byB0aGUgdmVyc2lvbiBjYW4gYmUgZG9uZQoqRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc01hbmFnZW1lbnRBcGkqIHwgWyoqR2V0UmVzb3VyY2VVc2luZ0dFVCoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRSZXNvdXJjZXNNYW5hZ2VtZW50QXBpLm1kI2dldHJlc291cmNldXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL3JtL3tyZXNvdXJjZUlkfSB8IEdldCBhIHJlc291cmNlCipEZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VzTWFuYWdlbWVudEFwaSogfCBbKipHZXRSZXNvdXJjZVZlcnNpb25Vc2luZ0dFVCoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRSZXNvdXJjZXNNYW5hZ2VtZW50QXBpLm1kI2dldHJlc291cmNldmVyc2lvbnVzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MC9ybS97cmVzb3VyY2VJZH0vdmVyc2lvbi97cmVzb3VyY2VWZXJzaW9uSWR9IHwgR2V0IGEgcmVzb3VyY2UmIzM5O3MgdmVyc2lvbgoqRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc01hbmFnZW1lbnRBcGkqIHwgWyoqR2V0UmVzb3VyY2VWZXJzaW9uc1VzaW5nR0VUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc01hbmFnZW1lbnRBcGkubWQjZ2V0cmVzb3VyY2V2ZXJzaW9uc3VzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MC9ybS97cmVzb3VyY2VJZH0vdmVyc2lvbiB8IExpc3QgcmVzb3VyY2UmIzM5O3MgdmVyc2lvbnMKKkRldmljZU1hbmFnZW1lbnRSZXNvdXJjZXNNYW5hZ2VtZW50QXBpKiB8IFsqKkdldFJlc291cmNlc1VzaW5nR0VUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc01hbmFnZW1lbnRBcGkubWQjZ2V0cmVzb3VyY2VzdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL3JtIHwgTGlzdCBhbGwgcmVzb3VyY2VzCipEZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VzTWFuYWdlbWVudEFwaSogfCBbKipVcGRhdGVSZXNvdXJjZVVzaW5nUFVUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc01hbmFnZW1lbnRBcGkubWQjdXBkYXRlcmVzb3VyY2V1c2luZ3B1dCkgfCAqKlB1dCoqIC9hcGkvdjAvcm0ve3Jlc291cmNlSWR9IHwgVXBkYXRlIGEgcmVzb3VyY2UKKkRldmljZU1hbmFnZW1lbnRSZXNvdXJjZXNNYW5hZ2VtZW50QXBpKiB8IFsqKlVwZGF0ZVJlc291cmNlVmVyc2lvblVzaW5nUFVUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc01hbmFnZW1lbnRBcGkubWQjdXBkYXRlcmVzb3VyY2V2ZXJzaW9udXNpbmdwdXQpIHwgKipQdXQqKiAvYXBpL3YwL3JtL3tyZXNvdXJjZUlkfS92ZXJzaW9uL3tyZXNvdXJjZVZlcnNpb25JZH0gfCBVcGRhdGUgYSByZXNvdXJjZSYjMzk7cyB2ZXJzaW9uCipEZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VzVjFBcGkqIHwgWyoqR2V0RGV2aWNlUmVzb3VyY2VVcGRhdGVzVXNpbmdHRVQxKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc1YxQXBpLm1kI2dldGRldmljZXJlc291cmNldXBkYXRlc3VzaW5nZ2V0MSkgfCAqKkdldCoqIC9hcGkvdjEvZGV2aWNlTWd0L2RldmljZXMve2RldmljZUlkfS9yZXNvdXJjZXMvdXBkYXRlcyB8IEdldCBhIGxpc3Qgb2YgZGV2aWNlIHJlc291cmNlIHVwZGF0ZXMKKkRldmljZU1hbmFnZW1lbnRSZXNvdXJjZXNWMUFwaSogfCBbKipHZXREZXZpY2VSZXNvdXJjZVVzaW5nR0VUKipdKGRvY3MvRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc1YxQXBpLm1kI2dldGRldmljZXJlc291cmNldXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YxL2RldmljZU1ndC9kZXZpY2VzL3tkZXZpY2VJZH0vcmVzb3VyY2VzL3tyZXNvdXJjZUlkfSB8IEdldCBhIHNwZWNpZmljIGRldmljZSByZXNvdXJjZQoqRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc1YxQXBpKiB8IFsqKkdldExhc3RSZXNvdXJjZVVwZGF0ZVVzaW5nR0VUMSoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRSZXNvdXJjZXNWMUFwaS5tZCNnZXRsYXN0cmVzb3VyY2V1cGRhdGV1c2luZ2dldDEpIHwgKipHZXQqKiAvYXBpL3YxL2RldmljZU1ndC9kZXZpY2VzL3tkZXZpY2VJZH0vcmVzb3VyY2VzL3tyZXNvdXJjZUlkfS91cGRhdGVzL2xhdGVzdCB8IEdldCBpbmZvIGFib3V0IGxhc3QgdXBkYXRlIG9mIHRoaXMgZGV2aWNlIHJlc291cmNlCipEZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VzVjFBcGkqIHwgWyoqTGlzdERldmljZVJlc291cmNlc1VzaW5nR0VUMSoqXShkb2NzL0RldmljZU1hbmFnZW1lbnRSZXNvdXJjZXNWMUFwaS5tZCNsaXN0ZGV2aWNlcmVzb3VyY2VzdXNpbmdnZXQxKSB8ICoqR2V0KiogL2FwaS92MS9kZXZpY2VNZ3QvZGV2aWNlcy97ZGV2aWNlSWR9L3Jlc291cmNlcyB8IEdldCBhIG1hcCBvZiBhbGwgZGV2aWNlIHJlc291cmNlcwoqRGV2aWNlTWFuYWdlbWVudFJlc291cmNlc1YxQXBpKiB8IFsqKlNldERldmljZVJlc291cmNlVmVyc2lvblVzaW5nUE9TVDEqKl0oZG9jcy9EZXZpY2VNYW5hZ2VtZW50UmVzb3VyY2VzVjFBcGkubWQjc2V0ZGV2aWNlcmVzb3VyY2V2ZXJzaW9udXNpbmdwb3N0MSkgfCAqKlBvc3QqKiAvYXBpL3YxL2RldmljZU1ndC9kZXZpY2VzL3tkZXZpY2VJZH0vcmVzb3VyY2VzL3tyZXNvdXJjZUlkfSB8IFNldCBkZXZpY2UgcmVzb3VyY2UgdmVyc2lvbnMKKkV2ZW50UHJvY2Vzc2luZ0FjdGl2aXR5QXBpKiB8IFsqKkRlbGV0ZVVzaW5nREVMRVRFMTQqKl0oZG9jcy9FdmVudFByb2Nlc3NpbmdBY3Rpdml0eUFwaS5tZCNkZWxldGV1c2luZ2RlbGV0ZTE0KSB8ICoqRGVsZXRlKiogL2FwaS92MC9ldmVudHByb2Nlc3NpbmcvYWN0aXZpdHkvcnVsZXMve2FjdGl2aXR5UnVsZUlkfSB8IERlbGV0ZSBhbiBBY3Rpdml0eVJ1bGUKKkV2ZW50UHJvY2Vzc2luZ0FjdGl2aXR5QXBpKiB8IFsqKkdldFN0YXRlc1VzaW5nR0VUKipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nQWN0aXZpdHlBcGkubWQjZ2V0c3RhdGVzdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9hY3Rpdml0eS9zdGF0ZXMgfCBSZXRyaWV2ZSB0aGUgbGlzdCBvZiBhbGwgdGhlIEFjdGl2aXR5U3RhdGVzIGxpbmtlZCB0byBhIHNwZWNpZmljIGRldmljZSBhbmQvb3IgcnVsZQoqRXZlbnRQcm9jZXNzaW5nQWN0aXZpdHlBcGkqIHwgWyoqR2V0VXNpbmdHRVQxMyoqXShkb2NzL0V2ZW50UHJvY2Vzc2luZ0FjdGl2aXR5QXBpLm1kI2dldHVzaW5nZ2V0MTMpIHwgKipHZXQqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9hY3Rpdml0eS9ydWxlcy97YWN0aXZpdHlSdWxlSWR9IHwgUmV0cmlldmUgYW4gQWN0aXZpdHlSdWxlCipFdmVudFByb2Nlc3NpbmdBY3Rpdml0eUFwaSogfCBbKipMaXN0VXNpbmdHRVQxNioqXShkb2NzL0V2ZW50UHJvY2Vzc2luZ0FjdGl2aXR5QXBpLm1kI2xpc3R1c2luZ2dldDE2KSB8ICoqR2V0KiogL2FwaS92MC9ldmVudHByb2Nlc3NpbmcvYWN0aXZpdHkvcnVsZXMgfCBSZXRyaWV2ZSB0aGUgbGlzdCBvZiBhbGwgdGhlIEFjdGl2aXR5UnVsZXMgb3IgZ2V0IGFuIEFjdGl2aXR5UnVsZSBieSBpdHMgbmFtZQoqRXZlbnRQcm9jZXNzaW5nQWN0aXZpdHlBcGkqIHwgWyoqTXV0ZVVzaW5nUFVUKipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nQWN0aXZpdHlBcGkubWQjbXV0ZXVzaW5ncHV0KSB8ICoqUHV0KiogL2FwaS92MC9ldmVudHByb2Nlc3NpbmcvYWN0aXZpdHkvc3RhdGVzL211dGUgfCBNdXRlIG9yIHJlc2V0IG5leHRBbGFybSBvZiBBY3Rpdml0eVN0YXRlcyB0YXJnZXRlZCBieSBhIHNwZWNpZmljIGRldmljZUlkL2FjdGl2aXR5UnVsZUlkCipFdmVudFByb2Nlc3NpbmdBY3Rpdml0eUFwaSogfCBbKipQb3N0VXNpbmdQT1NUMTMqKl0oZG9jcy9FdmVudFByb2Nlc3NpbmdBY3Rpdml0eUFwaS5tZCNwb3N0dXNpbmdwb3N0MTMpIHwgKipQb3N0KiogL2FwaS92MC9ldmVudHByb2Nlc3NpbmcvYWN0aXZpdHkvcnVsZXMgfCBDcmVhdGUgYW4gQWN0aXZpdHlSdWxlCipFdmVudFByb2Nlc3NpbmdBY3Rpdml0eUFwaSogfCBbKipVcGRhdGVVc2luZ1BVVDcqKl0oZG9jcy9FdmVudFByb2Nlc3NpbmdBY3Rpdml0eUFwaS5tZCN1cGRhdGV1c2luZ3B1dDcpIHwgKipQdXQqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9hY3Rpdml0eS9ydWxlcy97YWN0aXZpdHlSdWxlSWR9IHwgVXBkYXRlIGFuIEFjdGl2aXR5UnVsZQoqRXZlbnRQcm9jZXNzaW5nQ29udGV4dEFwaSogfCBbKipDbGVhclVzaW5nREVMRVRFKipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nQ29udGV4dEFwaS5tZCNjbGVhcnVzaW5nZGVsZXRlKSB8ICoqRGVsZXRlKiogL2FwaS92MC9ldmVudHByb2Nlc3NpbmcvY29udGV4dCB8IERlbGV0ZSBhbGwgY29udGV4dCBlbnRyaWVzCipFdmVudFByb2Nlc3NpbmdDb250ZXh0QXBpKiB8IFsqKkRlbGV0ZVVzaW5nREVMRVRFMTUqKl0oZG9jcy9FdmVudFByb2Nlc3NpbmdDb250ZXh0QXBpLm1kI2RlbGV0ZXVzaW5nZGVsZXRlMTUpIHwgKipEZWxldGUqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9jb250ZXh0L3tjb250ZXh0S2V5fSB8IERlbGV0ZSBhIGNvbnRleHQga2V5CipFdmVudFByb2Nlc3NpbmdDb250ZXh0QXBpKiB8IFsqKkdldFVzaW5nR0VUMTQqKl0oZG9jcy9FdmVudFByb2Nlc3NpbmdDb250ZXh0QXBpLm1kI2dldHVzaW5nZ2V0MTQpIHwgKipHZXQqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9jb250ZXh0L3tjb250ZXh0S2V5fSB8IFJldHJpZXZlIGEgY29udGV4dAoqRXZlbnRQcm9jZXNzaW5nQ29udGV4dEFwaSogfCBbKipMaXN0VXNpbmdHRVQxNyoqXShkb2NzL0V2ZW50UHJvY2Vzc2luZ0NvbnRleHRBcGkubWQjbGlzdHVzaW5nZ2V0MTcpIHwgKipHZXQqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9jb250ZXh0IHwgUmV0cmlldmUgdGhlIGxpc3Qgb2YgY29udGV4dHMgd2l0aCBvcHRpb25hbCB0YWcgZmlsdGVyaW5nCipFdmVudFByb2Nlc3NpbmdDb250ZXh0QXBpKiB8IFsqKlNhdmVVc2luZ1BVVCoqXShkb2NzL0V2ZW50UHJvY2Vzc2luZ0NvbnRleHRBcGkubWQjc2F2ZXVzaW5ncHV0KSB8ICoqUHV0KiogL2FwaS92MC9ldmVudHByb2Nlc3NpbmcvY29udGV4dC97Y29udGV4dEtleX0gfCBTYXZlIGEgY29udGV4dAoqRXZlbnRQcm9jZXNzaW5nRmlyaW5nQXBpKiB8IFsqKkRlbGV0ZVVzaW5nREVMRVRFMTYqKl0oZG9jcy9FdmVudFByb2Nlc3NpbmdGaXJpbmdBcGkubWQjZGVsZXRldXNpbmdkZWxldGUxNikgfCAqKkRlbGV0ZSoqIC9hcGkvdjAvZXZlbnRwcm9jZXNzaW5nL2ZpcmluZy1ydWxlL3tmaXJpbmdSdWxlSWR9IHwgRGVsZXRlIGEgRmlyaW5nUnVsZQoqRXZlbnRQcm9jZXNzaW5nRmlyaW5nQXBpKiB8IFsqKkdldEZpcmluZ0d1YXJkVXNpbmdHRVQqKl0oZG9jcy9FdmVudFByb2Nlc3NpbmdGaXJpbmdBcGkubWQjZ2V0ZmlyaW5nZ3VhcmR1c2luZ2dldCkgfCAqKkdldCoqIC9hcGkvdjAvZXZlbnRwcm9jZXNzaW5nL2ZpcmluZy1ndWFyZC97ZmlyaW5nR3VhcmRJZH0gfCBHZXQgYSBGaXJpbmdHdWFyZAoqRXZlbnRQcm9jZXNzaW5nRmlyaW5nQXBpKiB8IFsqKkdldEZpcmluZ0d1YXJkc1VzaW5nUE9TVCoqXShkb2NzL0V2ZW50UHJvY2Vzc2luZ0ZpcmluZ0FwaS5tZCNnZXRmaXJpbmdndWFyZHN1c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MC9ldmVudHByb2Nlc3NpbmcvZmlyaW5nLWd1YXJkL3NlYXJjaCB8IEdldCBGaXJpbmdHdWFyZHMgbGlua2VkIHRvIGEgRmlyaW5nUnVsZSwgYW5kIHdoZXJlIEZpcmluZ0d1YXJkcyBzZWxlY3Rpb24gY3JpdGVyaWEgbWF0Y2guCipFdmVudFByb2Nlc3NpbmdGaXJpbmdBcGkqIHwgWyoqR2V0VXNpbmdHRVQxNSoqXShkb2NzL0V2ZW50UHJvY2Vzc2luZ0ZpcmluZ0FwaS5tZCNnZXR1c2luZ2dldDE1KSB8ICoqR2V0KiogL2FwaS92MC9ldmVudHByb2Nlc3NpbmcvZmlyaW5nLXJ1bGUve2ZpcmluZ1J1bGVJZH0gfCBSZXRyaWV2ZSBhIEZpcmluZ1J1bGUKKkV2ZW50UHJvY2Vzc2luZ0ZpcmluZ0FwaSogfCBbKipMaXN0VXNpbmdHRVQxOCoqXShkb2NzL0V2ZW50UHJvY2Vzc2luZ0ZpcmluZ0FwaS5tZCNsaXN0dXNpbmdnZXQxOCkgfCAqKkdldCoqIC9hcGkvdjAvZXZlbnRwcm9jZXNzaW5nL2ZpcmluZy1ydWxlIHwgUmV0cmlldmUgdGhlIGxpc3Qgb2YgYWxsIHRoZSBGaXJpbmdSdWxlcyBvciBnZXQgYSBGaXJpbmdSdWxlIGJ5IGl0cyBuYW1lCipFdmVudFByb2Nlc3NpbmdGaXJpbmdBcGkqIHwgWyoqUG9zdFVzaW5nUE9TVDE0KipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nRmlyaW5nQXBpLm1kI3Bvc3R1c2luZ3Bvc3QxNCkgfCAqKlBvc3QqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9maXJpbmctcnVsZSB8IENyZWF0ZSBhIEZpcmluZ1J1bGUKKkV2ZW50UHJvY2Vzc2luZ0ZpcmluZ0FwaSogfCBbKipSZW1vdmVGaXJpbmdHdWFyZFVzaW5nREVMRVRFKipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nRmlyaW5nQXBpLm1kI3JlbW92ZWZpcmluZ2d1YXJkdXNpbmdkZWxldGUpIHwgKipEZWxldGUqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9maXJpbmctZ3VhcmQve2ZpcmluZ0d1YXJkSWR9IHwgUmVtb3ZlIGEgRmlyaW5nR3VhcmQKKkV2ZW50UHJvY2Vzc2luZ0ZpcmluZ0FwaSogfCBbKipSZW1vdmVGaXJpbmdHdWFyZHNVc2luZ0RFTEVURSoqXShkb2NzL0V2ZW50UHJvY2Vzc2luZ0ZpcmluZ0FwaS5tZCNyZW1vdmVmaXJpbmdndWFyZHN1c2luZ2RlbGV0ZSkgfCAqKkRlbGV0ZSoqIC9hcGkvdjAvZXZlbnRwcm9jZXNzaW5nL2ZpcmluZy1ndWFyZCB8IFJlbW92ZSB0aGUgRmlyaW5nR3VhcmRzIGxpbmtlZCB0byBGaXJpbmdSdWxlLCBhbmQgd2hlcmUgRmlyaW5nR3VhcmRzIHNlbGVjdGlvbiBjcml0ZXJpYSBtYXRjaC4KKkV2ZW50UHJvY2Vzc2luZ0ZpcmluZ0FwaSogfCBbKipVcGRhdGVVc2luZ1BVVDgqKl0oZG9jcy9FdmVudFByb2Nlc3NpbmdGaXJpbmdBcGkubWQjdXBkYXRldXNpbmdwdXQ4KSB8ICoqUHV0KiogL2FwaS92MC9ldmVudHByb2Nlc3NpbmcvZmlyaW5nLXJ1bGUve2ZpcmluZ1J1bGVJZH0gfCBVcGRhdGUgYSBGaXJpbmdSdWxlCipFdmVudFByb2Nlc3NpbmdHZW96b25lQXBpKiB8IFsqKkRlbGV0ZVVzaW5nREVMRVRFMTcqKl0oZG9jcy9FdmVudFByb2Nlc3NpbmdHZW96b25lQXBpLm1kI2RlbGV0ZXVzaW5nZGVsZXRlMTcpIHwgKipEZWxldGUqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9nZW96b25lcy97em9uZUlkfSB8IGRlbGV0ZSBhIGdlb2dyYXBoaWMgem9uZQoqRXZlbnRQcm9jZXNzaW5nR2Vvem9uZUFwaSogfCBbKipHZXRVc2luZ0dFVDE2KipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nR2Vvem9uZUFwaS5tZCNnZXR1c2luZ2dldDE2KSB8ICoqR2V0KiogL2FwaS92MC9ldmVudHByb2Nlc3NpbmcvZ2Vvem9uZXMve3pvbmVJZH0gfCByZXRyaWV2ZSBhIGdlb3pvbmUgZnJvbSByZXBvc2l0b3J5CipFdmVudFByb2Nlc3NpbmdHZW96b25lQXBpKiB8IFsqKkxpc3RVc2luZ0dFVDE5KipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nR2Vvem9uZUFwaS5tZCNsaXN0dXNpbmdnZXQxOSkgfCAqKkdldCoqIC9hcGkvdjAvZXZlbnRwcm9jZXNzaW5nL2dlb3pvbmVzIHwgcmV0cmlldmUgcGFnaW5hdGVkIGxpc3Qgb2YgZ2Vvem9uZXMKKkV2ZW50UHJvY2Vzc2luZ0dlb3pvbmVBcGkqIHwgWyoqU2F2ZVVzaW5nUFVUMSoqXShkb2NzL0V2ZW50UHJvY2Vzc2luZ0dlb3pvbmVBcGkubWQjc2F2ZXVzaW5ncHV0MSkgfCAqKlB1dCoqIC9hcGkvdjAvZXZlbnRwcm9jZXNzaW5nL2dlb3pvbmVzL3t6b25lSWR9IHwgU2F2ZSBhIGdlb2dyYXBoaWMgem9uZQoqRXZlbnRQcm9jZXNzaW5nTWF0Y2hpbmdBcGkqIHwgWyoqRGVsZXRlVXNpbmdERUxFVEUxOCoqXShkb2NzL0V2ZW50UHJvY2Vzc2luZ01hdGNoaW5nQXBpLm1kI2RlbGV0ZXVzaW5nZGVsZXRlMTgpIHwgKipEZWxldGUqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9tYXRjaGluZy1ydWxlL3ttYXRjaGluZ1J1bGVJZH0gfCBEZWxldGUgYSBNYXRjaGluZ1J1bGUKKkV2ZW50UHJvY2Vzc2luZ01hdGNoaW5nQXBpKiB8IFsqKkdldFVzaW5nR0VUMTcqKl0oZG9jcy9FdmVudFByb2Nlc3NpbmdNYXRjaGluZ0FwaS5tZCNnZXR1c2luZ2dldDE3KSB8ICoqR2V0KiogL2FwaS92MC9ldmVudHByb2Nlc3NpbmcvbWF0Y2hpbmctcnVsZS97bWF0Y2hpbmdSdWxlSWR9IHwgUmV0cmlldmUgYSBNYXRjaGluZ1J1bGUKKkV2ZW50UHJvY2Vzc2luZ01hdGNoaW5nQXBpKiB8IFsqKkxpc3RVc2luZ0dFVDIwKipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nTWF0Y2hpbmdBcGkubWQjbGlzdHVzaW5nZ2V0MjApIHwgKipHZXQqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9tYXRjaGluZy1ydWxlIHwgUmV0cmlldmUgdGhlIGxpc3Qgb2YgYWxsIHRoZSBNYXRjaGluZ1J1bGVzIG9yIGdldCBhIE1hdGNoaW5nUnVsZSBieSBpdHMgbmFtZQoqRXZlbnRQcm9jZXNzaW5nTWF0Y2hpbmdBcGkqIHwgWyoqUG9zdFVzaW5nUE9TVDE1KipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nTWF0Y2hpbmdBcGkubWQjcG9zdHVzaW5ncG9zdDE1KSB8ICoqUG9zdCoqIC9hcGkvdjAvZXZlbnRwcm9jZXNzaW5nL21hdGNoaW5nLXJ1bGUgfCBDcmVhdGUgYSBNYXRjaGluZ1J1bGUKKkV2ZW50UHJvY2Vzc2luZ01hdGNoaW5nQXBpKiB8IFsqKlRlc3RVc2luZ1BPU1Q0KipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nTWF0Y2hpbmdBcGkubWQjdGVzdHVzaW5ncG9zdDQpIHwgKipQb3N0KiogL2FwaS92MC9ldmVudHByb2Nlc3NpbmcvbWF0Y2hpbmctcnVsZS90ZXN0IHwgVGVzdCBhIEpzb25Mb2dpYyBwcmVkaWNhdGUgd2l0aCBzb21lIGRhdGEgc2FtcGxlCipFdmVudFByb2Nlc3NpbmdNYXRjaGluZ0FwaSogfCBbKipVcGRhdGVVc2luZ1BVVDkqKl0oZG9jcy9FdmVudFByb2Nlc3NpbmdNYXRjaGluZ0FwaS5tZCN1cGRhdGV1c2luZ3B1dDkpIHwgKipQdXQqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9tYXRjaGluZy1ydWxlL3ttYXRjaGluZ1J1bGVJZH0gfCBVcGRhdGUgYSBNYXRjaGluZ1J1bGUKKkV2ZW50UHJvY2Vzc2luZ1N0YXRlUHJvY2Vzc2luZ0FwaSogfCBbKipEZWxldGVVc2luZ0RFTEVURTE5KipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nU3RhdGVQcm9jZXNzaW5nQXBpLm1kI2RlbGV0ZXVzaW5nZGVsZXRlMTkpIHwgKipEZWxldGUqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9zdGF0ZXByb2Nlc3NpbmctcnVsZS97c3RhdGVQcm9jZXNzaW5nUnVsZUlkfSB8IERlbGV0ZSBhIFN0YXRlUHJvY2Vzc2luZ1J1bGUKKkV2ZW50UHJvY2Vzc2luZ1N0YXRlUHJvY2Vzc2luZ0FwaSogfCBbKipHZXRVc2luZ0dFVDE4KipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nU3RhdGVQcm9jZXNzaW5nQXBpLm1kI2dldHVzaW5nZ2V0MTgpIHwgKipHZXQqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9zdGF0ZXByb2Nlc3NpbmctcnVsZS97c3RhdGVQcm9jZXNzaW5nUnVsZUlkfSB8IFJldHJpZXZlIGEgU3RhdGVQcm9jZXNzaW5nUnVsZQoqRXZlbnRQcm9jZXNzaW5nU3RhdGVQcm9jZXNzaW5nQXBpKiB8IFsqKkxpc3RVc2luZ0dFVDIxKipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nU3RhdGVQcm9jZXNzaW5nQXBpLm1kI2xpc3R1c2luZ2dldDIxKSB8ICoqR2V0KiogL2FwaS92MC9ldmVudHByb2Nlc3Npbmcvc3RhdGVwcm9jZXNzaW5nLXJ1bGUgfCBSZXRyaWV2ZSB0aGUgbGlzdCBvZiBhbGwgdGhlIFN0YXRlUHJvY2Vzc2luZ1J1bGVzIG9yIGdldCBhIFN0YXRlUHJvY2Vzc2luZ1J1bGUgYnkgaXRzIG5hbWUKKkV2ZW50UHJvY2Vzc2luZ1N0YXRlUHJvY2Vzc2luZ0FwaSogfCBbKipQb3N0VXNpbmdQT1NUMTYqKl0oZG9jcy9FdmVudFByb2Nlc3NpbmdTdGF0ZVByb2Nlc3NpbmdBcGkubWQjcG9zdHVzaW5ncG9zdDE2KSB8ICoqUG9zdCoqIC9hcGkvdjAvZXZlbnRwcm9jZXNzaW5nL3N0YXRlcHJvY2Vzc2luZy1ydWxlIHwgQ3JlYXRlIGEgU3RhdGVQcm9jZXNzaW5nUnVsZQoqRXZlbnRQcm9jZXNzaW5nU3RhdGVQcm9jZXNzaW5nQXBpKiB8IFsqKlRlc3RVc2luZ1BPU1Q1KipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nU3RhdGVQcm9jZXNzaW5nQXBpLm1kI3Rlc3R1c2luZ3Bvc3Q1KSB8ICoqUG9zdCoqIC9hcGkvdjAvZXZlbnRwcm9jZXNzaW5nL3N0YXRlcHJvY2Vzc2luZy1ydWxlL3Rlc3QgfCB0ZXN0IGEgIFN0YXRlIFByb2Nlc3NpbmcgZnVuY3Rpb24KKkV2ZW50UHJvY2Vzc2luZ1N0YXRlUHJvY2Vzc2luZ0FwaSogfCBbKipVcGRhdGVVc2luZ1BVVDEwKipdKGRvY3MvRXZlbnRQcm9jZXNzaW5nU3RhdGVQcm9jZXNzaW5nQXBpLm1kI3VwZGF0ZXVzaW5ncHV0MTApIHwgKipQdXQqKiAvYXBpL3YwL2V2ZW50cHJvY2Vzc2luZy9zdGF0ZXByb2Nlc3NpbmctcnVsZS97c3RhdGVQcm9jZXNzaW5nUnVsZUlkfSB8IFVwZGF0ZSBhIFN0YXRlUHJvY2Vzc2luZ1J1bGUKKk5vdGlmaWNhdGlvbkFwaSogfCBbKipTZW5kTWVzc2FnZVVzaW5nUE9TVCoqXShkb2NzL05vdGlmaWNhdGlvbkFwaS5tZCNzZW5kbWVzc2FnZXVzaW5ncG9zdCkgfCAqKlBvc3QqKiAvYXBpL3YwL2NvbnRhY3QgfCBBUEkgdG8gc2VuZCBtZXNzYWdlCipQYXJ0bmVyRGF0YVB1c2hBcGkqIHwgWyoqRGF0YVB1c2hVc2luZ1BPU1QqKl0oZG9jcy9QYXJ0bmVyRGF0YVB1c2hBcGkubWQjZGF0YXB1c2h1c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MC9wYXJ0bmVycy9kYXRhL3N0cmVhbXMgfCBQdXNoIGRhdGEKKlBhcnRuZXJzTWFuYWdlbWVudEFwaSogfCBbKipBZGRPcHRpb25Ub1RlbmFudFVzaW5nUE9TVCoqXShkb2NzL1BhcnRuZXJzTWFuYWdlbWVudEFwaS5tZCNhZGRvcHRpb250b3RlbmFudHVzaW5ncG9zdCkgfCAqKlBvc3QqKiAvYXBpL3YwL3BhcnRuZXJzL3RlbmFudHMve3RlbmFudElkfS9vcHRpb25zIHwgU3Vic2NyaWJlIGFuIG9wdGlvbiBmb3IgYSBwYXJ0bmVyJiMzOTtzIHRlbmFudAoqUGFydG5lcnNNYW5hZ2VtZW50QXBpKiB8IFsqKkNyZWF0ZVRlbmFudEJ5UGFydG5lclVzaW5nUE9TVCoqXShkb2NzL1BhcnRuZXJzTWFuYWdlbWVudEFwaS5tZCNjcmVhdGV0ZW5hbnRieXBhcnRuZXJ1c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MC9wYXJ0bmVycy90ZW5hbnRzIHwgQ3JlYXRlIGEgcGFydG5lciYjMzk7cyB0ZW5hbnQKKlBhcnRuZXJzVG9rZW5zTWFuYWdlbWVudEFwaSogfCBbKipDcmVhdGVQYXJ0bmVyVG9rZW5Vc2luZ1BPU1QqKl0oZG9jcy9QYXJ0bmVyc1Rva2Vuc01hbmFnZW1lbnRBcGkubWQjY3JlYXRlcGFydG5lcnRva2VudXNpbmdwb3N0KSB8ICoqUG9zdCoqIC9hcGkvdjAvb2F1dGgyL3Rva2VuIHwgUmVxdWVzdCBhIG5ldyBUb2tlbgoqVGVuYW50QWNjb3VudHNBcGkqIHwgWyoqR2V0TXlUZW5hbnRVc2luZ0dFVCoqXShkb2NzL1RlbmFudEFjY291bnRzQXBpLm1kI2dldG15dGVuYW50dXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL3RlbmFudHMvbWUgfCBHZXQgZGV0YWlscyBvZiB5b3VyIGFjY291bnQKKlRyaWdnZXJzQW5kQWN0aW9uc0FwaSogfCBbKipDcmVhdGVVc2luZ1BPU1QyKipdKGRvY3MvVHJpZ2dlcnNBbmRBY3Rpb25zQXBpLm1kI2NyZWF0ZXVzaW5ncG9zdDIpIHwgKipQb3N0KiogL2FwaS92MS9ldmVudDJhY3Rpb24vYWN0aW9uUG9saWNpZXMgfCBDcmVhdGUgYW4gQWN0aW9uUG9saWN5CipUcmlnZ2Vyc0FuZEFjdGlvbnNBcGkqIHwgWyoqRGVsZXRlVXNpbmdERUxFVEUxMyoqXShkb2NzL1RyaWdnZXJzQW5kQWN0aW9uc0FwaS5tZCNkZWxldGV1c2luZ2RlbGV0ZTEzKSB8ICoqRGVsZXRlKiogL2FwaS92MS9ldmVudDJhY3Rpb24vYWN0aW9uUG9saWNpZXMve3BvbGljeUlkfSB8IERlbGV0ZSBhbiBBY3Rpb25Qb2xpY3kKKlRyaWdnZXJzQW5kQWN0aW9uc0FwaSogfCBbKipMaXN0VXNpbmdHRVQxNSoqXShkb2NzL1RyaWdnZXJzQW5kQWN0aW9uc0FwaS5tZCNsaXN0dXNpbmdnZXQxNSkgfCAqKkdldCoqIC9hcGkvdjEvZXZlbnQyYWN0aW9uL2FjdGlvblBvbGljaWVzIHwgTGlzdCBBY3Rpb25Qb2xpY2llcwoqVHJpZ2dlcnNBbmRBY3Rpb25zQXBpKiB8IFsqKlJldHJpZXZlVXNpbmdHRVQyKipdKGRvY3MvVHJpZ2dlcnNBbmRBY3Rpb25zQXBpLm1kI3JldHJpZXZldXNpbmdnZXQyKSB8ICoqR2V0KiogL2FwaS92MS9ldmVudDJhY3Rpb24vYWN0aW9uUG9saWNpZXMve3BvbGljeUlkfSB8IFJldHJpZXZlIGFuIEFjdGlvblBvbGljeQoqVHJpZ2dlcnNBbmRBY3Rpb25zQXBpKiB8IFsqKlVwc2VydFVzaW5nUFVUMSoqXShkb2NzL1RyaWdnZXJzQW5kQWN0aW9uc0FwaS5tZCN1cHNlcnR1c2luZ3B1dDEpIHwgKipQdXQqKiAvYXBpL3YxL2V2ZW50MmFjdGlvbi9hY3Rpb25Qb2xpY2llcy97cG9saWN5SWR9IHwgQ3JlYXRlIG9yIHVwZGF0ZSBhbiBBY3Rpb25Qb2xpY3kKKlRyaWdnZXJzQW5kQWN0aW9uc1Rlc3RBcGkqIHwgWyoqVGVzdEh0dHBQdXNoVXNpbmdQT1NUMSoqXShkb2NzL1RyaWdnZXJzQW5kQWN0aW9uc1Rlc3RBcGkubWQjdGVzdGh0dHBwdXNodXNpbmdwb3N0MSkgfCAqKlBvc3QqKiAvYXBpL3YxL2V2ZW50MmFjdGlvbi90ZXN0L2h0dHAtcHVzaCB8IFBvc3QgYW4gaHR0cCByZXF1ZXN0IGZvciB0ZXN0aW5nIGEgd2ViaG9vawoqVXNlckF1dGhlbnRpY2F0aW9uQXBpKiB8IFsqKkF1dGhlbnRpY2F0ZVVzZXJVc2luZ1BPU1QqKl0oZG9jcy9Vc2VyQXV0aGVudGljYXRpb25BcGkubWQjYXV0aGVudGljYXRldXNlcnVzaW5ncG9zdCkgfCAqKlBvc3QqKiAvYXBpL3YwL2F1dGggfCBBdXRoZW50aWNhdGUgYSB1c2VyCipVc2VyQXV0aGVudGljYXRpb25BcGkqIHwgWyoqQ29va2llc0RlbGV0ZVVzaW5nREVMRVRFKipdKGRvY3MvVXNlckF1dGhlbnRpY2F0aW9uQXBpLm1kI2Nvb2tpZXNkZWxldGV1c2luZ2RlbGV0ZSkgfCAqKkRlbGV0ZSoqIC9hcGkvdjAvY29va2llcyB8IGNvb2tpZXNEZWxldGUKKlVzZXJBdXRoZW50aWNhdGlvbkFwaSogfCBbKipHZXRUZW5hbnRJZFVzaW5nR0VUKipdKGRvY3MvVXNlckF1dGhlbnRpY2F0aW9uQXBpLm1kI2dldHRlbmFudGlkdXNpbmdnZXQpIHwgKipHZXQqKiAvYXBpL3YwL3dob2FtaSB8IEdldCB5b3VyIHRlbmFudCBpZAoqVXNlckF1dGhlbnRpY2F0aW9uQXBpKiB8IFsqKkxvZ291dFVzaW5nUE9TVCoqXShkb2NzL1VzZXJBdXRoZW50aWNhdGlvbkFwaS5tZCNsb2dvdXR1c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MC9sb2dvdXQgfCBMb2cgb3V0IG9mIHRoZSBjdXJyZW50IHNlc3Npb24KKlVzZXJBdXRoZW50aWNhdGlvbkFwaSogfCBbKipSZXNldFVzZXJQYXNzd29yZFVzaW5nUE9TVCoqXShkb2NzL1VzZXJBdXRoZW50aWNhdGlvbkFwaS5tZCNyZXNldHVzZXJwYXNzd29yZHVzaW5ncG9zdCkgfCAqKlBvc3QqKiAvYXBpL3YwL3Jlc2V0cHdkIHwgUmVzZXQgdXNlciYjMzk7cyBwYXNzd29yZAoqVXNlckF1dGhlbnRpY2F0aW9uQXBpKiB8IFsqKlVwZGF0ZVVzZXJFbWFpbFdpdGhUb2tlblVzaW5nUE9TVCoqXShkb2NzL1VzZXJBdXRoZW50aWNhdGlvbkFwaS5tZCN1cGRhdGV1c2VyZW1haWx3aXRodG9rZW51c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MC91cGRhdGVFbWFpbCB8IFVwZGF0ZSB1c2VyJiMzOTtzIGVtYWlsCipVc2VyQXV0aGVudGljYXRpb25BcGkqIHwgWyoqVXBkYXRlVXNlclBhc3N3b3JkV2l0aFRva2VuVXNpbmdQT1NUKipdKGRvY3MvVXNlckF1dGhlbnRpY2F0aW9uQXBpLm1kI3VwZGF0ZXVzZXJwYXNzd29yZHdpdGh0b2tlbnVzaW5ncG9zdCkgfCAqKlBvc3QqKiAvYXBpL3YwL3NldHB3ZCB8IFVwZGF0ZSB1c2VyJiMzOTtzIHBhc3N3b3JkCipVc2Vyc01hbmFnZW1lbnRBcGkqIHwgWyoqQWN0aXZhdGVVc2VyVXNpbmdQT1NUMyoqXShkb2NzL1VzZXJzTWFuYWdlbWVudEFwaS5tZCNhY3RpdmF0ZXVzZXJ1c2luZ3Bvc3QzKSB8ICoqUG9zdCoqIC9hcGkvdjAvdXNlcnMvYWN0aXZhdGVVc2VyIHwgQWN0aXZhdGUgYSB1c2VyIGluIGEgdGVuYW50IGFjY291bnQKKlVzZXJzTWFuYWdlbWVudEFwaSogfCBbKipDcmVhdGVVc2VyQWNjb3VudFVzaW5nUE9TVDMqKl0oZG9jcy9Vc2Vyc01hbmFnZW1lbnRBcGkubWQjY3JlYXRldXNlcmFjY291bnR1c2luZ3Bvc3QzKSB8ICoqUG9zdCoqIC9hcGkvdjAvdXNlcnMgfCBDcmVhdGUgYSB1c2VyCipVc2Vyc01hbmFnZW1lbnRBcGkqIHwgWyoqRGVsZXRlVXNlclVzaW5nREVMRVRFMyoqXShkb2NzL1VzZXJzTWFuYWdlbWVudEFwaS5tZCNkZWxldGV1c2VydXNpbmdkZWxldGUzKSB8ICoqRGVsZXRlKiogL2FwaS92MC91c2Vycy97dXNlcklkfSB8IERlbGV0ZSBhIHVzZXIgaW4gYSB0ZW5hbnQgYWNjb3VudAoqVXNlcnNNYW5hZ2VtZW50QXBpKiB8IFsqKkdldEN1cnJlbnRVc2VyVXNpbmdHRVQqKl0oZG9jcy9Vc2Vyc01hbmFnZW1lbnRBcGkubWQjZ2V0Y3VycmVudHVzZXJ1c2luZ2dldCkgfCAqKkdldCoqIC9hcGkvdjAvdXNlcnMvbWUgfCBHZXQgYSBcJnF1b3Q7bXlzZWxmXCZxdW90OyB1c2VyIGRhdGEgb2YgVGVuYW50CipVc2Vyc01hbmFnZW1lbnRBcGkqIHwgWyoqR2V0VXNlclBvcnRhbERhdGFVc2luZ0dFVCoqXShkb2NzL1VzZXJzTWFuYWdlbWVudEFwaS5tZCNnZXR1c2VycG9ydGFsZGF0YXVzaW5nZ2V0KSB8ICoqR2V0KiogL2FwaS92MC91c2Vycy9tZS9wb3J0YWxkYXRhIHwgR2V0IHRoZSBwb3J0YWwgZGF0YSBvZiBtZQoqVXNlcnNNYW5hZ2VtZW50QXBpKiB8IFsqKkdldFVzZXJVc2luZ0dFVDMqKl0oZG9jcy9Vc2Vyc01hbmFnZW1lbnRBcGkubWQjZ2V0dXNlcnVzaW5nZ2V0MykgfCAqKkdldCoqIC9hcGkvdjAvdXNlcnMve3VzZXJJZH0gfCBHZXQgZGV0YWlscyBvZiBhIHVzZXIgaW4gYSB0ZW5hbnQgYWNjb3VudAoqVXNlcnNNYW5hZ2VtZW50QXBpKiB8IFsqKkxpc3RVc2Vyc1VzaW5nR0VUMSoqXShkb2NzL1VzZXJzTWFuYWdlbWVudEFwaS5tZCNsaXN0dXNlcnN1c2luZ2dldDEpIHwgKipHZXQqKiAvYXBpL3YwL3VzZXJzIHwgTGlzdCBhbGwgdXNlcnMgaW4gYSB0ZW5hbnQgYWNjb3VudAoqVXNlcnNNYW5hZ2VtZW50QXBpKiB8IFsqKlVwZGF0ZVVzZXJQYXNzd29yZFVzaW5nUE9TVCoqXShkb2NzL1VzZXJzTWFuYWdlbWVudEFwaS5tZCN1cGRhdGV1c2VycGFzc3dvcmR1c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MC91c2Vycy97dXNlcklkfS9wYXNzd29yZCB8IFVwZGF0ZSB1c2VyIHBhc3N3b3JkCipVc2Vyc01hbmFnZW1lbnRBcGkqIHwgWyoqVXBkYXRlVXNlclBhc3N3b3JkV2l0aFRva2VuV2l0aG91dENhcHRjaGFVc2luZ1BPU1QqKl0oZG9jcy9Vc2Vyc01hbmFnZW1lbnRBcGkubWQjdXBkYXRldXNlcnBhc3N3b3Jkd2l0aHRva2Vud2l0aG91dGNhcHRjaGF1c2luZ3Bvc3QpIHwgKipQb3N0KiogL2FwaS92MC91c2Vycy9hY3RpdmF0ZVRyaWFsIHwgVXBkYXRlIHVzZXIgcGFzc3dvcmQgd2l0aCBhIHRva2VuCipVc2Vyc01hbmFnZW1lbnRBcGkqIHwgWyoqVXBkYXRlVXNlclBvcnRhbERhdGFVc2luZ1BVVCoqXShkb2NzL1VzZXJzTWFuYWdlbWVudEFwaS5tZCN1cGRhdGV1c2VycG9ydGFsZGF0YXVzaW5ncHV0KSB8ICoqUHV0KiogL2FwaS92MC91c2Vycy9tZS9wb3J0YWxkYXRhIHwgVXBkYXRlIHRoZSBwb3J0YWwgZGF0YSBvZiBtZQoqVXNlcnNNYW5hZ2VtZW50QXBpKiB8IFsqKlVwZGF0ZVVzZXJVc2luZ1BPU1QxKipdKGRvY3MvVXNlcnNNYW5hZ2VtZW50QXBpLm1kI3VwZGF0ZXVzZXJ1c2luZ3Bvc3QxKSB8ICoqUG9zdCoqIC9hcGkvdjAvdXNlcnMve3VzZXJJZH0gfCBVcGRhdGUgYSB1c2VyCgoKIyMgRG9jdW1lbnRhdGlvbiBGb3IgTW9kZWxzCgogLSBbQWN0aW9uUG9saWN5XShkb2NzL0FjdGlvblBvbGljeS5tZCkKIC0gW0FjdGlvblBvbGljeVYwXShkb2NzL0FjdGlvblBvbGljeVYwLm1kKQogLSBbQWN0aW9uVHJpZ2dlcnNdKGRvY3MvQWN0aW9uVHJpZ2dlcnMubWQpCiAtIFtBY3Rpb25UcmlnZ2Vyc1YwXShkb2NzL0FjdGlvblRyaWdnZXJzVjAubWQpCiAtIFtBY3Rpb25zXShkb2NzL0FjdGlvbnMubWQpCiAtIFtBY3Rpdml0eVJ1bGVdKGRvY3MvQWN0aXZpdHlSdWxlLm1kKQogLSBbQWN0aXZpdHlTdGF0ZV0oZG9jcy9BY3Rpdml0eVN0YXRlLm1kKQogLSBbQWN0aXZpdHlTdGF0ZU11dGVSZXF1ZXN0XShkb2NzL0FjdGl2aXR5U3RhdGVNdXRlUmVxdWVzdC5tZCkKIC0gW0FkZFBhcnRuZXJUZW5hbnRSZXF1ZXN0XShkb2NzL0FkZFBhcnRuZXJUZW5hbnRSZXF1ZXN0Lm1kKQogLSBbQWRtaW5JbmZvXShkb2NzL0FkbWluSW5mby5tZCkKIC0gW0FwaUtleV0oZG9jcy9BcGlLZXkubWQpCiAtIFtBcGlLZXlDcmVhdGlvblJlcVdlYl0oZG9jcy9BcGlLZXlDcmVhdGlvblJlcVdlYi5tZCkKIC0gW0FwaUtleVNldERlYnVnTW9kZVJlcVdlYl0oZG9jcy9BcGlLZXlTZXREZWJ1Z01vZGVSZXFXZWIubWQpCiAtIFtBcGlLZXlVcGRhdGVSZXFXZWJdKGRvY3MvQXBpS2V5VXBkYXRlUmVxV2ViLm1kKQogLSBbQXNzZXRdKGRvY3MvQXNzZXQubWQpCiAtIFtBc3NldEFsaWFzXShkb2NzL0Fzc2V0QWxpYXMubWQpCiAtIFtBc3NldENvbW1hbmRXZWJdKGRvY3MvQXNzZXRDb21tYW5kV2ViLm1kKQogLSBbQXNzZXRDcmVhdGVSZXFXZWJdKGRvY3MvQXNzZXRDcmVhdGVSZXFXZWIubWQpCiAtIFtBc3NldFBhcmFtZXRlcl0oZG9jcy9Bc3NldFBhcmFtZXRlci5tZCkKIC0gW0Fzc2V0UGFyYW1ldGVyVmFsdWVdKGRvY3MvQXNzZXRQYXJhbWV0ZXJWYWx1ZS5tZCkKIC0gW0Fzc2V0UGFyYW1zU3RhdHVzVXBkYXRlUmVxV2ViXShkb2NzL0Fzc2V0UGFyYW1zU3RhdHVzVXBkYXRlUmVxV2ViLm1kKQogLSBbQXNzZXRSZXNvdXJjZVdlYl0oZG9jcy9Bc3NldFJlc291cmNlV2ViLm1kKQogLSBbQXNzZXRTZXRUYXJnZXRSZXNvdXJjZVZlcnNpb25SZXFXZWJdKGRvY3MvQXNzZXRTZXRUYXJnZXRSZXNvdXJjZVZlcnNpb25SZXFXZWIubWQpCiAtIFtBc3NldFVwZGF0ZVJlcVdlYl0oZG9jcy9Bc3NldFVwZGF0ZVJlcVdlYi5tZCkKIC0gW0F1ZGl0TG9nTWVzc2FnZV0oZG9jcy9BdWRpdExvZ01lc3NhZ2UubWQpCiAtIFtBdXRoUmVxV2ViXShkb2NzL0F1dGhSZXFXZWIubWQpCiAtIFtBdXRoUmVzV2ViXShkb2NzL0F1dGhSZXNXZWIubWQpCiAtIFtBenVyZUV2ZW50SHVic0FjdGlvbl0oZG9jcy9BenVyZUV2ZW50SHVic0FjdGlvbi5tZCkKIC0gW0JpbmFyeVBheWxvYWREZXNjcmlwdGlvbl0oZG9jcy9CaW5hcnlQYXlsb2FkRGVzY3JpcHRpb24ubWQpCiAtIFtCaW5hcnlQYXlsb2FkRGVzY3JpcHRpb25UZXN0UmVxdWVzdF0oZG9jcy9CaW5hcnlQYXlsb2FkRGVzY3JpcHRpb25UZXN0UmVxdWVzdC5tZCkKIC0gW0J1c2luZXNzU2V0dGluZ3NdKGRvY3MvQnVzaW5lc3NTZXR0aW5ncy5tZCkKIC0gW0J1c2luZXNzVW5pdF0oZG9jcy9CdXNpbmVzc1VuaXQubWQpCiAtIFtDYUNlcnRpZmljYXRlXShkb2NzL0NhQ2VydGlmaWNhdGUubWQpCiAtIFtDYUNlcnRpZmljYXRlQ3JlYXRlUmVxV2ViXShkb2NzL0NhQ2VydGlmaWNhdGVDcmVhdGVSZXFXZWIubWQpCiAtIFtDYUNlcnRpZmljYXRlQ3JlYXRlUmVzV2ViXShkb2NzL0NhQ2VydGlmaWNhdGVDcmVhdGVSZXNXZWIubWQpCiAtIFtDYW1wYWlnbl0oZG9jcy9DYW1wYWlnbi5tZCkKIC0gW0NhbXBhaWduRGVmaW5pdGlvbl0oZG9jcy9DYW1wYWlnbkRlZmluaXRpb24ubWQpCiAtIFtDYW1wYWlnbkxpc3RdKGRvY3MvQ2FtcGFpZ25MaXN0Lm1kKQogLSBbQ2FtcGFpZ25PcGVyYXRpb25dKGRvY3MvQ2FtcGFpZ25PcGVyYXRpb24ubWQpCiAtIFtDYW1wYWlnbk9wZXJhdGlvblN0YXRlXShkb2NzL0NhbXBhaWduT3BlcmF0aW9uU3RhdGUubWQpCiAtIFtDYW1wYWlnbk9wZXJhdGlvblN0YXRlRXJyb3JdKGRvY3MvQ2FtcGFpZ25PcGVyYXRpb25TdGF0ZUVycm9yLm1kKQogLSBbQ2FtcGFpZ25PcHRpb25zXShkb2NzL0NhbXBhaWduT3B0aW9ucy5tZCkKIC0gW0NhbXBhaWduUGVyVGFyZ2V0XShkb2NzL0NhbXBhaWduUGVyVGFyZ2V0Lm1kKQogLSBbQ2FtcGFpZ25QZXJUYXJnZXRMaXN0XShkb2NzL0NhbXBhaWduUGVyVGFyZ2V0TGlzdC5tZCkKIC0gW0NhbXBhaWduUGxhbm5pbmddKGRvY3MvQ2FtcGFpZ25QbGFubmluZy5tZCkKIC0gW0NhbXBhaWduU3RhdHNQZXJTdGF0dXNdKGRvY3MvQ2FtcGFpZ25TdGF0c1BlclN0YXR1cy5tZCkKIC0gW0NhbXBhaWduVXBkYXRpbmddKGRvY3MvQ2FtcGFpZ25VcGRhdGluZy5tZCkKIC0gW0NsaWVudENlcnRpZmljYXRlc0NvbmZpZ3VyYXRpb25dKGRvY3MvQ2xpZW50Q2VydGlmaWNhdGVzQ29uZmlndXJhdGlvbi5tZCkKIC0gW0NvbW1hbmRdKGRvY3MvQ29tbWFuZC5tZCkKIC0gW0NvbW1hbmRBZGRSZXF1ZXN0XShkb2NzL0NvbW1hbmRBZGRSZXF1ZXN0Lm1kKQogLSBbQ29tbWFuZEhpc3RvcnldKGRvY3MvQ29tbWFuZEhpc3RvcnkubWQpCiAtIFtDb21tYW5kUG9saWN5XShkb2NzL0NvbW1hbmRQb2xpY3kubWQpCiAtIFtDb21tYW5kUmVxdWVzdF0oZG9jcy9Db21tYW5kUmVxdWVzdC5tZCkKIC0gW0NvbW1hbmRSZXNwb25zZV0oZG9jcy9Db21tYW5kUmVzcG9uc2UubWQpCiAtIFtDb21tYW5kU3RhdHVzRmlsdGVyXShkb2NzL0NvbW1hbmRTdGF0dXNGaWx0ZXIubWQpCiAtIFtDb21tYW5kU3RhdHVzVHJpZ2dlcl0oZG9jcy9Db21tYW5kU3RhdHVzVHJpZ2dlci5tZCkKIC0gW0NvbW1hbmRWMF0oZG9jcy9Db21tYW5kVjAubWQpCiAtIFtDb25uZWN0b3JBY2NvdW50aW5nXShkb2NzL0Nvbm5lY3RvckFjY291bnRpbmcubWQpCiAtIFtDb25uZWN0b3JOb2RlXShkb2NzL0Nvbm5lY3Rvck5vZGUubWQpCiAtIFtDb25uZWN0b3JTdGF0aXN0aWNzXShkb2NzL0Nvbm5lY3RvclN0YXRpc3RpY3MubWQpCiAtIFtDb25uZWN0b3JTdGF0dXNSZXNwb25zZV0oZG9jcy9Db25uZWN0b3JTdGF0dXNSZXNwb25zZS5tZCkKIC0gW0NvbnRhY3RNZXNzYWdlXShkb2NzL0NvbnRhY3RNZXNzYWdlLm1kKQogLSBbQ29udGV4dENvbnRhaW5lcl0oZG9jcy9Db250ZXh0Q29udGFpbmVyLm1kKQogLSBbQ29udGV4dENvbnRhaW5lckxpc3RdKGRvY3MvQ29udGV4dENvbnRhaW5lckxpc3QubWQpCiAtIFtDcmVhdGVGaWZvQmluZGluZ1JlcXVlc3RdKGRvY3MvQ3JlYXRlRmlmb0JpbmRpbmdSZXF1ZXN0Lm1kKQogLSBbQ3N2Q29sdW1uXShkb2NzL0NzdkNvbHVtbi5tZCkKIC0gW0Nzdk9wdGlvbnNdKGRvY3MvQ3N2T3B0aW9ucy5tZCkKIC0gW0NzdlBheWxvYWREZXNjcmlwdGlvbl0oZG9jcy9Dc3ZQYXlsb2FkRGVzY3JpcHRpb24ubWQpCiAtIFtDc3ZQYXlsb2FkRGVzY3JpcHRpb25UZXN0UmVxdWVzdF0oZG9jcy9Dc3ZQYXlsb2FkRGVzY3JpcHRpb25UZXN0UmVxdWVzdC5tZCkKIC0gW0RhdGFCdWxrSXRlbVdlYl0oZG9jcy9EYXRhQnVsa0l0ZW1XZWIubWQpCiAtIFtEYXRhTWF0Y2hSZXN1bHRdKGRvY3MvRGF0YU1hdGNoUmVzdWx0Lm1kKQogLSBbRGF0YU1hdGNoVGVzdF0oZG9jcy9EYXRhTWF0Y2hUZXN0Lm1kKQogLSBbRGF0YU1lc3NhZ2VGaWx0ZXJdKGRvY3MvRGF0YU1lc3NhZ2VGaWx0ZXIubWQpCiAtIFtEYXRhTWVzc2FnZVRyaWdnZXJdKGRvY3MvRGF0YU1lc3NhZ2VUcmlnZ2VyLm1kKQogLSBbRGF0YVN0b3JlZFdlYl0oZG9jcy9EYXRhU3RvcmVkV2ViLm1kKQogLSBbRGF0YVdlYl0oZG9jcy9EYXRhV2ViLm1kKQogLSBbRGF5TWV0cmljc10oZG9jcy9EYXlNZXRyaWNzLm1kKQogLSBbRGVmZXJyZWRMaXN0ZW5hYmxlRnV0dXJlUmVzdWx0RHNsU2VhcmNoUmVxdWVzdFJlc3BvbnNlV2l0aEhpdHNPbmx5UmVzcG9uc2VFbnRpdHlvYmplY3RdKGRvY3MvRGVmZXJyZWRMaXN0ZW5hYmxlRnV0dXJlUmVzdWx0RHNsU2VhcmNoUmVxdWVzdFJlc3BvbnNlV2l0aEhpdHNPbmx5UmVzcG9uc2VFbnRpdHlvYmplY3QubWQpCiAtIFtEZWZlcnJlZExpc3RlbmFibGVGdXR1cmVSZXN1bHRzdHJpbmdzdHJpbmddKGRvY3MvRGVmZXJyZWRMaXN0ZW5hYmxlRnV0dXJlUmVzdWx0c3RyaW5nc3RyaW5nLm1kKQogLSBbRGVmZXJyZWRSZXN1bHRWb2lkXShkb2NzL0RlZmVycmVkUmVzdWx0Vm9pZC5tZCkKIC0gW0RlZmVycmVkUmVzdWx0Ym9vbGVhbl0oZG9jcy9EZWZlcnJlZFJlc3VsdGJvb2xlYW4ubWQpCiAtIFtEZXZpY2VdKGRvY3MvRGV2aWNlLm1kKQogLSBbRGV2aWNlQWN0aXZpdHlGaWx0ZXJdKGRvY3MvRGV2aWNlQWN0aXZpdHlGaWx0ZXIubWQpCiAtIFtEZXZpY2VBY3Rpdml0eVRyaWdnZXJdKGRvY3MvRGV2aWNlQWN0aXZpdHlUcmlnZ2VyLm1kKQogLSBbRGV2aWNlQ29uZmlnV2ViXShkb2NzL0RldmljZUNvbmZpZ1dlYi5tZCkKIC0gW0RldmljZUNyZWF0ZVJlcXVlc3RdKGRvY3MvRGV2aWNlQ3JlYXRlUmVxdWVzdC5tZCkKIC0gW0RldmljZUNyZWF0ZWRGaWx0ZXJdKGRvY3MvRGV2aWNlQ3JlYXRlZEZpbHRlci5tZCkKIC0gW0RldmljZUNyZWF0ZWRUcmlnZ2VyXShkb2NzL0RldmljZUNyZWF0ZWRUcmlnZ2VyLm1kKQogLSBbRGV2aWNlRGVsZXRlZEZpbHRlcl0oZG9jcy9EZXZpY2VEZWxldGVkRmlsdGVyLm1kKQogLSBbRGV2aWNlRGVsZXRlZFRyaWdnZXJdKGRvY3MvRGV2aWNlRGVsZXRlZFRyaWdnZXIubWQpCiAtIFtEZXZpY2VGaXJtd2FyZVZlcnNpb25WYWx1ZVdlYl0oZG9jcy9EZXZpY2VGaXJtd2FyZVZlcnNpb25WYWx1ZVdlYi5tZCkKIC0gW0RldmljZUZpcm13YXJlV2ViXShkb2NzL0RldmljZUZpcm13YXJlV2ViLm1kKQogLSBbRGV2aWNlR3JvdXBdKGRvY3MvRGV2aWNlR3JvdXAubWQpCiAtIFtEZXZpY2VJbnRlcmZhY2VdKGRvY3MvRGV2aWNlSW50ZXJmYWNlLm1kKQogLSBbRGV2aWNlUGFyYW1ldGVyVmFsdWVdKGRvY3MvRGV2aWNlUGFyYW1ldGVyVmFsdWUubWQpCiAtIFtEZXZpY2VQYXJhbWV0ZXJWYWx1ZVdlYl0oZG9jcy9EZXZpY2VQYXJhbWV0ZXJWYWx1ZVdlYi5tZCkKIC0gW0RldmljZVBhcmFtZXRlcldlYl0oZG9jcy9EZXZpY2VQYXJhbWV0ZXJXZWIubWQpCiAtIFtEZXZpY2VQYXJhbWV0ZXJzU2V0UmVxdWVzdF0oZG9jcy9EZXZpY2VQYXJhbWV0ZXJzU2V0UmVxdWVzdC5tZCkKIC0gW0RldmljZVJlc291cmNlVmVyc2lvblZhbHVlV2ViXShkb2NzL0RldmljZVJlc291cmNlVmVyc2lvblZhbHVlV2ViLm1kKQogLSBbRGV2aWNlUmVzb3VyY2VXZWJdKGRvY3MvRGV2aWNlUmVzb3VyY2VXZWIubWQpCiAtIFtEZXZpY2VTZWxlY3Rvcl0oZG9jcy9EZXZpY2VTZWxlY3Rvci5tZCkKIC0gW0RldmljZVN0YXR1c0ZpbHRlcl0oZG9jcy9EZXZpY2VTdGF0dXNGaWx0ZXIubWQpCiAtIFtEZXZpY2VTdGF0dXNUcmlnZ2VyXShkb2NzL0RldmljZVN0YXR1c1RyaWdnZXIubWQpCiAtIFtEZXZpY2VTdHJlYW1zUmVzcG9uc2VXZWJdKGRvY3MvRGV2aWNlU3RyZWFtc1Jlc3BvbnNlV2ViLm1kKQogLSBbRGV2aWNlVXBkYXRlXShkb2NzL0RldmljZVVwZGF0ZS5tZCkKIC0gW0RzbFNlYXJjaFJlcXVlc3RSZXNwb25zZVdpdGhIaXRzT25seV0oZG9jcy9Ec2xTZWFyY2hSZXF1ZXN0UmVzcG9uc2VXaXRoSGl0c09ubHkubWQpCiAtIFtFbWFpbEFjdGlvbl0oZG9jcy9FbWFpbEFjdGlvbi5tZCkKIC0gW0Vycm9yUmVzcG9uc2VXZWJdKGRvY3MvRXJyb3JSZXNwb25zZVdlYi5tZCkKIC0gW0V4dGVybmFsSWRlbnRpdHldKGRvY3MvRXh0ZXJuYWxJZGVudGl0eS5tZCkKIC0gW0ZpZm9CaW5kaW5nXShkb2NzL0ZpZm9CaW5kaW5nLm1kKQogLSBbRmlmb0NyZWF0ZVJlcVdlYl0oZG9jcy9GaWZvQ3JlYXRlUmVxV2ViLm1kKQogLSBbRmlmb1B1Ymxpc2hBY3Rpb25dKGRvY3MvRmlmb1B1Ymxpc2hBY3Rpb24ubWQpCiAtIFtGaWZvVG9waWNdKGRvY3MvRmlmb1RvcGljLm1kKQogLSBbRmlyaW5nR3VhcmRdKGRvY3MvRmlyaW5nR3VhcmQubWQpCiAtIFtGaXJpbmdHdWFyZEdldFJlcXVlc3RdKGRvY3MvRmlyaW5nR3VhcmRHZXRSZXF1ZXN0Lm1kKQogLSBbRmlyaW5nR3VhcmRSZXNldFJlcXVlc3RdKGRvY3MvRmlyaW5nR3VhcmRSZXNldFJlcXVlc3QubWQpCiAtIFtGaXJpbmdSdWxlXShkb2NzL0ZpcmluZ1J1bGUubWQpCiAtIFtGaXJtd2FyZVVwZGF0ZVdlYl0oZG9jcy9GaXJtd2FyZVVwZGF0ZVdlYi5tZCkKIC0gW0dlb3pvbmVDb250YWluZXJdKGRvY3MvR2Vvem9uZUNvbnRhaW5lci5tZCkKIC0gW0dlb3pvbmVDb250YWluZXJCYXNlXShkb2NzL0dlb3pvbmVDb250YWluZXJCYXNlLm1kKQogLSBbR3JvdXBdKGRvY3MvR3JvdXAubWQpCiAtIFtHcm91cENyZWF0ZVJlcXVlc3RdKGRvY3MvR3JvdXBDcmVhdGVSZXF1ZXN0Lm1kKQogLSBbR3JvdXBQYXRoXShkb2NzL0dyb3VwUGF0aC5tZCkKIC0gW0dyb3VwVXBkYXRlUmVxdWVzdF0oZG9jcy9Hcm91cFVwZGF0ZVJlcXVlc3QubWQpCiAtIFtHd0NvbmZpZ10oZG9jcy9Hd0NvbmZpZy5tZCkKIC0gW0d3U3lzdGVtXShkb2NzL0d3U3lzdGVtLm1kKQogLSBbSHR0cFB1c2hBY3Rpb25dKGRvY3MvSHR0cFB1c2hBY3Rpb24ubWQpCiAtIFtIdHRwUHVzaFRlc3RSZXN1bHRdKGRvY3MvSHR0cFB1c2hUZXN0UmVzdWx0Lm1kKQogLSBbSHR0cFB1c2hXZWJob29rVGVzdF0oZG9jcy9IdHRwUHVzaFdlYmhvb2tUZXN0Lm1kKQogLSBbSW50ZXJmYWNlQ2FwYWJpbGl0aWVzXShkb2NzL0ludGVyZmFjZUNhcGFiaWxpdGllcy5tZCkKIC0gW0ludGVyZmFjZUNhcGFiaWxpdHldKGRvY3MvSW50ZXJmYWNlQ2FwYWJpbGl0eS5tZCkKIC0gW0xXTTJNRGV2aWNlXShkb2NzL0xXTTJNRGV2aWNlLm1kKQogLSBbTG9jYXRpb25dKGRvY3MvTG9jYXRpb24ubWQpCiAtIFtMb3JhQ29tbWFuZF0oZG9jcy9Mb3JhQ29tbWFuZC5tZCkKIC0gW0xvcmFDb21tYW5kV2ViXShkb2NzL0xvcmFDb21tYW5kV2ViLm1kKQogLSBbTG9yYUNvbm5lY3Rpdml0eU9wdGlvbnNdKGRvY3MvTG9yYUNvbm5lY3Rpdml0eU9wdGlvbnMubWQpCiAtIFtMb3JhQ29ubmVjdGl2aXR5T3B0aW9uc1dlYl0oZG9jcy9Mb3JhQ29ubmVjdGl2aXR5T3B0aW9uc1dlYi5tZCkKIC0gW0xvcmFEZXZpY2VdKGRvY3MvTG9yYURldmljZS5tZCkKIC0gW0xvcmFEZXZpY2VDcmVhdGVSZXFXZWJdKGRvY3MvTG9yYURldmljZUNyZWF0ZVJlcVdlYi5tZCkKIC0gW0xvcmFEZXZpY2VMb2NhdGlvbl0oZG9jcy9Mb3JhRGV2aWNlTG9jYXRpb24ubWQpCiAtIFtMb3JhRGV2aWNlU3RhdHNXZWJdKGRvY3MvTG9yYURldmljZVN0YXRzV2ViLm1kKQogLSBbTG9yYURldmljZVVwZGF0ZVJlcVdlYl0oZG9jcy9Mb3JhRGV2aWNlVXBkYXRlUmVxV2ViLm1kKQogLSBbTG9yYUdhdGV3YXlEYXRhXShkb2NzL0xvcmFHYXRld2F5RGF0YS5tZCkKIC0gW0xvcmFHYXRld2F5SW5mb10oZG9jcy9Mb3JhR2F0ZXdheUluZm8ubWQpCiAtIFtMb3JhR2F0ZXdheUxvY2F0aW9uXShkb2NzL0xvcmFHYXRld2F5TG9jYXRpb24ubWQpCiAtIFtMb3JhTmV0d29ya0ZpbHRlcl0oZG9jcy9Mb3JhTmV0d29ya0ZpbHRlci5tZCkKIC0gW0xvcmFOZXR3b3JrU3Vic2NyaXB0aW9uRGV0YWlsXShkb2NzL0xvcmFOZXR3b3JrU3Vic2NyaXB0aW9uRGV0YWlsLm1kKQogLSBbTG9yYU5ldHdvcmtUcmlnZ2VyXShkb2NzL0xvcmFOZXR3b3JrVHJpZ2dlci5tZCkKIC0gW0x3bTJtRGV2aWNlUGFnZVdlYl0oZG9jcy9Md20ybURldmljZVBhZ2VXZWIubWQpCiAtIFtNYXRjaGluZ0NvbnRleHRdKGRvY3MvTWF0Y2hpbmdDb250ZXh0Lm1kKQogLSBbTWF0Y2hpbmdGaXJlZEZpbHRlcl0oZG9jcy9NYXRjaGluZ0ZpcmVkRmlsdGVyLm1kKQogLSBbTWF0Y2hpbmdGaXJlZFRyaWdnZXJdKGRvY3MvTWF0Y2hpbmdGaXJlZFRyaWdnZXIubWQpCiAtIFtNYXRjaGluZ1J1bGVdKGRvY3MvTWF0Y2hpbmdSdWxlLm1kKQogLSBbTWVzc2FnZVNlbGVjdG9yXShkb2NzL01lc3NhZ2VTZWxlY3Rvci5tZCkKIC0gW01lc3NhZ2VTZWxlY3RvckZpbHRlcl0oZG9jcy9NZXNzYWdlU2VsZWN0b3JGaWx0ZXIubWQpCiAtIFtNZXRhZGF0YV0oZG9jcy9NZXRhZGF0YS5tZCkKIC0gW01ldGFkYXRhUmVzb3VyY2VDb25uZWN0b3JzXShkb2NzL01ldGFkYXRhUmVzb3VyY2VDb25uZWN0b3JzLm1kKQogLSBbTW9udGhNZXRyaWNzXShkb2NzL01vbnRoTWV0cmljcy5tZCkKIC0gW01zaXNkbnNdKGRvY3MvTXNpc2Rucy5tZCkKIC0gW05ld0RhdGFdKGRvY3MvTmV3RGF0YS5tZCkKIC0gW05ld0RldmljZUludGVyZmFjZV0oZG9jcy9OZXdEZXZpY2VJbnRlcmZhY2UubWQpCiAtIFtOZXdEZXZpY2VQYXJhbWV0ZXJWYWx1ZV0oZG9jcy9OZXdEZXZpY2VQYXJhbWV0ZXJWYWx1ZS5tZCkKIC0gW09BdXRoMkVycm9yV2ViXShkb2NzL09BdXRoMkVycm9yV2ViLm1kKQogLSBbT2ZmZXJBbmRPcHRpb25zXShkb2NzL09mZmVyQW5kT3B0aW9ucy5tZCkKIC0gW09mZmVyc0FuZE9wdGlvbnNSZXFXZWJdKGRvY3MvT2ZmZXJzQW5kT3B0aW9uc1JlcVdlYi5tZCkKIC0gW09wdGlvblBhcnRuZXJUZW5hbnRdKGRvY3MvT3B0aW9uUGFydG5lclRlbmFudC5tZCkKIC0gW1BhZ2VhYmxlQWN0aW9uUG9saWN5VjBdKGRvY3MvUGFnZWFibGVBY3Rpb25Qb2xpY3lWMC5tZCkKIC0gW1BhZ2VhYmxlQXBpS2V5XShkb2NzL1BhZ2VhYmxlQXBpS2V5Lm1kKQogLSBbUGFnZWFibGVBc3NldF0oZG9jcy9QYWdlYWJsZUFzc2V0Lm1kKQogLSBbUGFnZWFibGVBc3NldFJlc291cmNlV2ViXShkb2NzL1BhZ2VhYmxlQXNzZXRSZXNvdXJjZVdlYi5tZCkKIC0gW1BhZ2VhYmxlQ2FtcGFpZ25dKGRvY3MvUGFnZWFibGVDYW1wYWlnbi5tZCkKIC0gW1BhZ2VhYmxlQ2FtcGFpZ25QZXJUYXJnZXRdKGRvY3MvUGFnZWFibGVDYW1wYWlnblBlclRhcmdldC5tZCkKIC0gW1BhZ2VhYmxlQ29tbWFuZFYwXShkb2NzL1BhZ2VhYmxlQ29tbWFuZFYwLm1kKQogLSBbUGFnZWFibGVGaWZvQmluZGluZ10oZG9jcy9QYWdlYWJsZUZpZm9CaW5kaW5nLm1kKQogLSBbUGFnZWFibGVGaWZvVG9waWNdKGRvY3MvUGFnZWFibGVGaWZvVG9waWMubWQpCiAtIFtQYWdlYWJsZUdyb3VwXShkb2NzL1BhZ2VhYmxlR3JvdXAubWQpCiAtIFtQYWdlYWJsZUxXTTJNRGV2aWNlXShkb2NzL1BhZ2VhYmxlTFdNMk1EZXZpY2UubWQpCiAtIFtQYWdlYWJsZUxvcmFDb21tYW5kXShkb2NzL1BhZ2VhYmxlTG9yYUNvbW1hbmQubWQpCiAtIFtQYWdlYWJsZUxvcmFEZXZpY2VdKGRvY3MvUGFnZWFibGVMb3JhRGV2aWNlLm1kKQogLSBbUGFnZWFibGVMb3JhR2F0ZXdheUluZm9dKGRvY3MvUGFnZWFibGVMb3JhR2F0ZXdheUluZm8ubWQpCiAtIFtQYWdlYWJsZVJlc291cmNlXShkb2NzL1BhZ2VhYmxlUmVzb3VyY2UubWQpCiAtIFtQYWdlYWJsZVJlc291cmNlVXBkYXRlV2ViXShkb2NzL1BhZ2VhYmxlUmVzb3VyY2VVcGRhdGVXZWIubWQpCiAtIFtQYWdlYWJsZVJlc291cmNlVmVyc2lvbl0oZG9jcy9QYWdlYWJsZVJlc291cmNlVmVyc2lvbi5tZCkKIC0gW1BhZ2VhYmxlVXNlcl0oZG9jcy9QYWdlYWJsZVVzZXIubWQpCiAtIFtQYXJ0bmVyRGF0YUl0ZW1Td2FnZ2VyXShkb2NzL1BhcnRuZXJEYXRhSXRlbVN3YWdnZXIubWQpCiAtIFtQYXJ0bmVyVGVuYW50XShkb2NzL1BhcnRuZXJUZW5hbnQubWQpCiAtIFtQYXJ0bmVyVG9rZW5dKGRvY3MvUGFydG5lclRva2VuLm1kKQogLSBbUGF5bG9hZERlc2NyaXB0aW9uXShkb2NzL1BheWxvYWREZXNjcmlwdGlvbi5tZCkKIC0gW1BheWxvYWREZXNjcmlwdGlvbk1ldGFkYXRhXShkb2NzL1BheWxvYWREZXNjcmlwdGlvbk1ldGFkYXRhLm1kKQogLSBbUGF5bG9hZERlc2NyaXB0aW9uVGVzdFJlc3VsdF0oZG9jcy9QYXlsb2FkRGVzY3JpcHRpb25UZXN0UmVzdWx0Lm1kKQogLSBbUGlwZWxpbmVdKGRvY3MvUGlwZWxpbmUubWQpCiAtIFtQaXBlbGluZUZpbHRlcl0oZG9jcy9QaXBlbGluZUZpbHRlci5tZCkKIC0gW1BpcGVsaW5lU3RlcF0oZG9jcy9QaXBlbGluZVN0ZXAubWQpCiAtIFtQb2x5Z29uXShkb2NzL1BvbHlnb24ubWQpCiAtIFtSYXRlTGltaXRdKGRvY3MvUmF0ZUxpbWl0Lm1kKQogLSBbUmVzZXRQYXNzd29yZFJlcVdlYl0oZG9jcy9SZXNldFBhc3N3b3JkUmVxV2ViLm1kKQogLSBbUmVzb3VyY2VdKGRvY3MvUmVzb3VyY2UubWQpCiAtIFtSZXNvdXJjZUFkZFJlcVdlYl0oZG9jcy9SZXNvdXJjZUFkZFJlcVdlYi5tZCkKIC0gW1Jlc291cmNlVXBkYXRlUmVxV2ViXShkb2NzL1Jlc291cmNlVXBkYXRlUmVxV2ViLm1kKQogLSBbUmVzb3VyY2VVcGRhdGVXZWJdKGRvY3MvUmVzb3VyY2VVcGRhdGVXZWIubWQpCiAtIFtSZXNvdXJjZVZlcnNpb25dKGRvY3MvUmVzb3VyY2VWZXJzaW9uLm1kKQogLSBbUmVzb3VyY2VWZXJzaW9uQWRkUmVxV2ViXShkb2NzL1Jlc291cmNlVmVyc2lvbkFkZFJlcVdlYi5tZCkKIC0gW1Jlc291cmNlVmVyc2lvblVwZGF0ZVJlcVdlYl0oZG9jcy9SZXNvdXJjZVZlcnNpb25VcGRhdGVSZXFXZWIubWQpCiAtIFtSZXNwb25zZUVudGl0eV0oZG9jcy9SZXNwb25zZUVudGl0eS5tZCkKIC0gW1J1bGVdKGRvY3MvUnVsZS5tZCkKIC0gW1NNU0FjdGlvbl0oZG9jcy9TTVNBY3Rpb24ubWQpCiAtIFtTTVNDb25uZWN0b3JCdXNpbmVzc1NldHRpbmdzQ3JlYXRpb25SZXFXZWJdKGRvY3MvU01TQ29ubmVjdG9yQnVzaW5lc3NTZXR0aW5nc0NyZWF0aW9uUmVxV2ViLm1kKQogLSBbU01TQ29ubmVjdG9yQnVzaW5lc3NTZXR0aW5nc0RlbGV0ZU1zaXNkblJlcVdlYl0oZG9jcy9TTVNDb25uZWN0b3JCdXNpbmVzc1NldHRpbmdzRGVsZXRlTXNpc2RuUmVxV2ViLm1kKQogLSBbU01TQ29ubmVjdG9yQnVzaW5lc3NTZXR0aW5nc1BhZ2VXZWJdKGRvY3MvU01TQ29ubmVjdG9yQnVzaW5lc3NTZXR0aW5nc1BhZ2VXZWIubWQpCiAtIFtTTVNDb25uZWN0b3JCdXNpbmVzc1NldHRpbmdzVXBkYXRlUmVxV2ViXShkb2NzL1NNU0Nvbm5lY3RvckJ1c2luZXNzU2V0dGluZ3NVcGRhdGVSZXFXZWIubWQpCiAtIFtTTVNDb25uZWN0b3JNc2lzZG5QYWdlV2ViXShkb2NzL1NNU0Nvbm5lY3Rvck1zaXNkblBhZ2VXZWIubWQpCiAtIFtTTVNDb25uZWN0b3JTZW5kU01TUmVxV2ViXShkb2NzL1NNU0Nvbm5lY3RvclNlbmRTTVNSZXFXZWIubWQpCiAtIFtTTVNDb25uZWN0b3JTZXR0aW5nc10oZG9jcy9TTVNDb25uZWN0b3JTZXR0aW5ncy5tZCkKIC0gW1Njb3BlQXBwbGljYXRpb25dKGRvY3MvU2NvcGVBcHBsaWNhdGlvbi5tZCkKIC0gW1NlYXJjaERhdGFNZXNzYWdlXShkb2NzL1NlYXJjaERhdGFNZXNzYWdlLm1kKQogLSBbU2VsZWN0aW9uQ3JpdGVyaWFdKGRvY3MvU2VsZWN0aW9uQ3JpdGVyaWEubWQpCiAtIFtTZW5kTWVzc2FnZVJlcXVlc3RdKGRvY3MvU2VuZE1lc3NhZ2VSZXF1ZXN0Lm1kKQogLSBbU2V0dGluZ3NTZWN0aW9uXShkb2NzL1NldHRpbmdzU2VjdGlvbi5tZCkKIC0gW1NpbGVudFBvbGljeV0oZG9jcy9TaWxlbnRQb2xpY3kubWQpCiAtIFtTaW1wbGVTdHJpbmdXZWJdKGRvY3MvU2ltcGxlU3RyaW5nV2ViLm1kKQogLSBbU291cmNlXShkb2NzL1NvdXJjZS5tZCkKIC0gW1N0YXRlQ2hhbmdlRmlsdGVyXShkb2NzL1N0YXRlQ2hhbmdlRmlsdGVyLm1kKQogLSBbU3RhdGVDaGFuZ2VUcmlnZ2VyXShkb2NzL1N0YXRlQ2hhbmdlVHJpZ2dlci5tZCkKIC0gW1N0YXRlUHJvY2Vzc2luZ0Z1bmN0aW9uVGVzdF0oZG9jcy9TdGF0ZVByb2Nlc3NpbmdGdW5jdGlvblRlc3QubWQpCiAtIFtTdGF0ZVByb2Nlc3NpbmdGdW5jdGlvblRlc3RSZXN1bHRdKGRvY3MvU3RhdGVQcm9jZXNzaW5nRnVuY3Rpb25UZXN0UmVzdWx0Lm1kKQogLSBbU3RhdGVQcm9jZXNzaW5nUnVsZV0oZG9jcy9TdGF0ZVByb2Nlc3NpbmdSdWxlLm1kKQogLSBbU3RvcmVkRGF0YU1lc3NhZ2VdKGRvY3MvU3RvcmVkRGF0YU1lc3NhZ2UubWQpCiAtIFtUYXJnZXRzXShkb2NzL1RhcmdldHMubWQpCiAtIFtUZW5hbnRdKGRvY3MvVGVuYW50Lm1kKQogLSBbVGVuYW50RGF5TWV0cmljc10oZG9jcy9UZW5hbnREYXlNZXRyaWNzLm1kKQogLSBbVGVuYW50RXh0ZXJuYWxWaWV3XShkb2NzL1RlbmFudEV4dGVybmFsVmlldy5tZCkKIC0gW1RlbmFudE1vbnRoTWV0cmljc10oZG9jcy9UZW5hbnRNb250aE1ldHJpY3MubWQpCiAtIFtUZW5hbnRTZXR0aW5nc10oZG9jcy9UZW5hbnRTZXR0aW5ncy5tZCkKIC0gW1RlbmFudFNldHRpbmdzVXBkYXRlUmVxV2ViXShkb2NzL1RlbmFudFNldHRpbmdzVXBkYXRlUmVxV2ViLm1kKQogLSBbVGVuYW50U3RhdHNXZWJdKGRvY3MvVGVuYW50U3RhdHNXZWIubWQpCiAtIFtUZW5hbnRXaXRoT2ZmZXJXZWJdKGRvY3MvVGVuYW50V2l0aE9mZmVyV2ViLm1kKQogLSBbVGhyZXNob2xkc10oZG9jcy9UaHJlc2hvbGRzLm1kKQogLSBbVHJhZmZpY10oZG9jcy9UcmFmZmljLm1kKQogLSBbVXBkYXRlQ29ubmVjdG9yTm9kZVJlcXVlc3RdKGRvY3MvVXBkYXRlQ29ubmVjdG9yTm9kZVJlcXVlc3QubWQpCiAtIFtVcGRhdGVEZXZpY2VGaXJtd2FyZVJlcVdlYl0oZG9jcy9VcGRhdGVEZXZpY2VGaXJtd2FyZVJlcVdlYi5tZCkKIC0gW1VwZGF0ZURldmljZVJlc291cmNlUmVxV2ViXShkb2NzL1VwZGF0ZURldmljZVJlc291cmNlUmVxV2ViLm1kKQogLSBbVXBkYXRlRW1haWxSZXFXZWJdKGRvY3MvVXBkYXRlRW1haWxSZXFXZWIubWQpCiAtIFtVcGRhdGVJbnRlcmZhY2VSZXFXZWJdKGRvY3MvVXBkYXRlSW50ZXJmYWNlUmVxV2ViLm1kKQogLSBbVXBkYXRlUGFzc3dvcmRSZXFXZWJdKGRvY3MvVXBkYXRlUGFzc3dvcmRSZXFXZWIubWQpCiAtIFtVcGRhdGVQYXNzd29yZFdpdGhUb2tlblJlcVdlYl0oZG9jcy9VcGRhdGVQYXNzd29yZFdpdGhUb2tlblJlcVdlYi5tZCkKIC0gW1VzZXJdKGRvY3MvVXNlci5tZCkKIC0gW1VzZXJBY3RpdmF0aW9uUmVxV2ViXShkb2NzL1VzZXJBY3RpdmF0aW9uUmVxV2ViLm1kKQogLSBbVXNlckNyZWF0aW9uUmVxV2ViXShkb2NzL1VzZXJDcmVhdGlvblJlcVdlYi5tZCkKIC0gW1VzZXJVcGRhdGVSZXFXZWJdKGRvY3MvVXNlclVwZGF0ZVJlcVdlYi5tZCkKIC0gW1ZlbmRvcl0oZG9jcy9WZW5kb3IubWQpCgoKIyMgRG9jdW1lbnRhdGlvbiBGb3IgQXV0aG9yaXphdGlvbgoKIEVuZHBvaW50cyBkbyBub3QgcmVxdWlyZSBhdXRob3JpemF0aW9uLgoKCiMjIERvY3VtZW50YXRpb24gZm9yIFV0aWxpdHkgTWV0aG9kcwoKRHVlIHRvIHRoZSBmYWN0IHRoYXQgbW9kZWwgc3RydWN0dXJlIG1lbWJlcnMgYXJlIGFsbCBwb2ludGVycywgdGhpcyBwYWNrYWdlIGNvbnRhaW5zCmEgbnVtYmVyIG9mIHV0aWxpdHkgZnVuY3Rpb25zIHRvIGVhc2lseSBvYnRhaW4gcG9pbnRlcnMgdG8gdmFsdWVzIG9mIGJhc2ljIHR5cGVzLgpFYWNoIG9mIHRoZXNlIGZ1bmN0aW9ucyB0YWtlcyBhIHZhbHVlIG9mIHRoZSBnaXZlbiBiYXNpYyB0eXBlIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byBpdDoKCiogYFB0ckJvb2xgCiogYFB0ckludGAKKiBgUHRySW50MzJgCiogYFB0ckludDY0YAoqIGBQdHJGbG9hdGAKKiBgUHRyRmxvYXQzMmAKKiBgUHRyRmxvYXQ2NGAKKiBgUHRyU3RyaW5nYAoqIGBQdHJUaW1lYAoKIyMgQXV0aG9yCgpsaXZlb2JqZWN0cy5zdXBwb3J0QG9yYW5nZS5jb20KCg== readmeEtag: '"ba9e344ed3a20d2dea4f108b23fd997553984730"' readmeLastModified: Sun, 15 Nov 2020 10:24:46 GMT repositoryId: 290238732 description: Go client library for Orange Business Services Live Objects API created: '2020-08-25T14:33:57Z' updated: '2020-11-15T18:11:31Z' language: Shell archived: false stars: 0 watchers: 0 forks: 0 owner: efficap-energie logo: https://avatars.githubusercontent.com/u/63661671?v=4 repoEtag: '"e562b09911fcdac6c14bcfcd9d696af668ae770f6435b95388dfffd5b00c9ed6"' repoLastModified: Sun, 15 Nov 2020 18:11:31 GMT foundInMaster: true category: User Interfaces id: d52e311c4d9c5e91d1cad49a09e2f179 - source: openapi3 tags repository: https://github.com/dmotta/c3alert v3: true id: 2b53e75c670fbcb4565f5088abe0242e repositoryMetadata: base64Readme: >- IyBHbyBBUEkgU2VydmVyIGZvciBzd2FnZ2VyCgpObyBkZXNjcmlwdGlvbiBwcm92aWRlZCAoZ2VuZXJhdGVkIGJ5IFN3YWdnZXIgQ29kZWdlbiBodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuKQpodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2Rlc2NyaWJpbmctcmVxdWVzdC1ib2R5LwoKCiMjIE92ZXJ2aWV3ClRoaXMgc2VydmVyIHdhcyBnZW5lcmF0ZWQgYnkgdGhlIFtzd2FnZ2VyLWNvZGVnZW5dCihodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuKSBwcm9qZWN0LiAgCkJ5IHVzaW5nIHRoZSBbT3BlbkFQSS1TcGVjXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgZnJvbSBhIHJlbW90ZSBzZXJ2ZXIsIHlvdSBjYW4gZWFzaWx5IGdlbmVyYXRlIGEgc2VydmVyIHN0dWIuICAKLQoKVG8gc2VlIGhvdyB0byBtYWtlIHRoaXMgeW91ciBvd24sIGxvb2sgaGVyZToKCltSRUFETUVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4vYmxvYi9tYXN0ZXIvUkVBRE1FLm1kKQoKLSBBUEkgdmVyc2lvbjogMS4wLjAKLSBCdWlsZCBkYXRlOiAyMDIxLTA2LTAyVDA1OjAyOjAxLjgwNFpbR01UXQoKCiMjIyBSdW5uaW5nIHRoZSBzZXJ2ZXIKVG8gcnVuIHRoZSBzZXJ2ZXIsIGZvbGxvdyB0aGVzZSBzaW1wbGUgc3RlcHM6CgpgYGAKZ28gcnVuIG1haW4uZ28KYGBgCgouL2thZmthLWNvbnNvbGUtY29uc3VtZXIgLS1ib290c3RyYXAtc2VydmVyIGxvY2FsaG9zdDo5MDkyIC0tZnJvbS1iZWdpbm5pbmcgLS10b3BpYyBtb25pdG9yLWFsZXJ0 readmeEtag: '"76cc6ce20fe435a1284ccca160b2e037f9248f1a"' readmeLastModified: Fri, 31 Dec 2021 16:55:48 GMT repositoryId: 376087712 description: c3alert created: '2021-06-11T16:47:22Z' updated: '2022-07-01T17:11:47Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: dmotta logo: https://avatars.githubusercontent.com/u/85045?v=4 repoEtag: '"7ca9788c6b2a9f28e10738b4355bcec2389c7cb80a198031ecf5c4902073b59a"' repoLastModified: Fri, 01 Jul 2022 17:11:47 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/marcsechet/good-smash v3: true repositoryMetadata: base64Readme: >- WyFbQ2lyY2xlQ0ldKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL01hcmNTZWNoZXQvZ29vZC1zbWFzaC5zdmc/c3R5bGU9c2hpZWxkKV0oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvTWFyY1NlY2hldC9nb29kLXNtYXNoKQpbIVtDcmVhdGVkIEJhZGdlXShodHRwczovL2JhZGdlcy5wdWZsZXIuZGV2L2NyZWF0ZWQvTWFyY1NlY2hldC9nb29kLXNtYXNoKV0oaHR0cHM6Ly9naXRodWIuY29tL01hcmNTZWNoZXQvZ29vZC1zbWFzaCkKWyFbQ3JlYXRlZCBCYWRnZV0oaHR0cHM6Ly9iYWRnZXMucHVmbGVyLmRldi91cGRhdGVkL01hcmNTZWNoZXQvZ29vZC1zbWFzaCldKGh0dHBzOi8vZ2l0aHViLmNvbS9NYXJjU2VjaGV0L2dvb2Qtc21hc2gpCiFbTGluZXMgb2YgY29kZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90b2tlaS9saW5lcy9naXRodWIvTWFyY1NlY2hldC9nb29kLXNtYXNoKQohW0dpdEh1YiByZXBvIHNpemVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3JlcG8tc2l6ZS9NYXJjU2VjaGV0L2dvb2Qtc21hc2gpCiFbR2l0SHViXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL01hcmNTZWNoZXQvZ29vZC1zbWFzaCkKCiMgR29vZCBTbWFzaAoKUHJvamVjdHMgY29udGFpbmluZyBhIHNpbmdsZSBCTyB1c2VkIGZvciBtdWx0aXBsZSBmcm9udCBlbmQgOgotIFNtYXNoIAotIFBhcGljb2xvCi0gUMOpcGl0ZXMKCk1heWJlIHNvbWUgZGF5IHRoaXMgQk8gd2lsbCBiZSBzcGxpdCBpbnRvIG1pY3Jvc2VydmljZXMgYnV0IG5vdCBzdXJlIHRoZSBmcmVlIGhlcm9rdSBjYW4gbWFuYWdlIHRoYXQuCgpBcmNoaXRlY3R1cmU6ClRoZSBwcm9qZWN0IGhhcyB0aGUgZm9sbG93aW5nIG1vZHVsZXMgOgotIHNtYXNoLWFwcCAoY29udGFpbnMgY29uZmlnLCBjb250cm9sbGVycywgbWFwcGVycyBhbmQgdXRpbHMpCi0gc21hc2gtc2VydmljZQotIHNtYXNoLXBlcnNpc3QgKGNvbnRhaW5zIGRhbyBhbmQgZW50aXRpZXMpCi0gc21hc2gtc3BlYyAoY29udGFpbnMgb3BlbmFwaSBzcGVjcykKCkluc3RhbGwgbm90ZXMgOiAKVGhlIGdlbmVyYXRlZCBzcGVjIG1pZ2h0IG5vdCBiZSBhY2Nlc3NpYmxlIGluIG90aGVyIG1vZHVsZXMgb2YgdGhlIHByb2plY3QuIFRvIGZpeCB0aGlzLCBvbiBJbnRlbGxpSiwgeW91IGNhbiBvcGVuIHByb2plY3Qgc2V0dGluZ3MgLT4gbW9kdWxlcyAtPiBnb29kc21hc2gtYXBwIC0+IGRlcGVuZGVuY2llcyAtPiBhZGQgbW9kdWxlIGRlcGVuZGVuY3kgZ29vZHNtYXNoLXNwZWMuIElmIHlvdSBoYXZlIGFuIGVycm9yIHdoaWxlIHNhdmluZyBiZWNhdXNlIGNvbnRlbnQgcm9vdCBpcyBhbHJlYWR5IGRlZmluZWQgaW4gb3RoZXIgbW9kdWxlIHByb2plY3Qgc2V0dGluZ3MgLT4gbW9kdWxlcyAtPiBnb29kc21hc2ggLT4gc291cmNlcyAtPiByZW1vdmUgcGF0aHMgaW4gdGhlIGNvbnRlbnQgcm9vdCB0YWIgbm90IGJlbG9uZ2luZyB0byBvdGhlciBtb2R1bGVzLgoKSG93IHRvIGZpeCBTcHJpbmcgQm9vdCBNdWx0aS1Nb2R1bGUgbWF2ZW4gcHJvamVjdCByZXBhY2thZ2UgZmFpbGVkIChTcHJpbmcgcHJvamVjdHMgd2l0aCBtdWx0aSBtb2R1bGVzKSA6IHB1dCB0aGUgc3ByaW5nLWJvb3QtbWF2ZW4tcGx1Z2luIGluIHRoZSBwb20gb2YgdGhlIG1vZHVsZSBjb250YWluaW5nIHRoZSBBcHBsaWNhdGlvbiBjbGFzcyAoaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzU3OTgzODAyKQoKCiMgQ29udHJpYnV0b3JzClshW0NvbnRyaWJ1dG9ycyBEaXNwbGF5XShodHRwczovL2JhZGdlcy5wdWZsZXIuZGV2L2NvbnRyaWJ1dG9ycy9NYXJjU2VjaGV0L2dvb2Qtc21hc2g/c2l6ZT01MCZwYWRkaW5nPTUmYm90cz10cnVlKV0oaHR0cHM6Ly9naXRodWIuY29tL01hcmNTZWNoZXQvZ29vZC1zbWFzaCkK readmeEtag: '"4fdca4eb7c38046ec40a86249eb290fc660c7280"' readmeLastModified: Fri, 18 Jun 2021 22:10:27 GMT repositoryId: 366968135 description: Projects containing a single BO used for multiple front end created: '2021-05-13T07:22:40Z' updated: '2021-06-18T22:10:30Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: MarcSechet logo: https://avatars.githubusercontent.com/u/30333108?v=4 license: Apache-2.0 repoEtag: '"18f6c1691444d39030a3330df32b455a679910d2a844fa187166bd350651b673"' repoLastModified: Fri, 18 Jun 2021 22:10:30 GMT foundInMaster: true category: SDK id: 5e62876014bbb73e70451d51165059f0 - source: openapi3 tags repository: https://github.com/romabilka/go-crud v3: true repositoryMetadata: base64Readme: >- IyBHTyBDUlVECgojI0RhdGEgaXMgc3RvcmVkIGluIG1lbW9yeQoKIyMgSG93IHRvIHJ1bgoxLiBDbG9uZSB0aGUgcHJvamVjdAoyLiBgYGBnbyBydW4gY21kL2dvLWNydWQvbWFpbi5nb2BgYAoKIyMgVG8gdHJ5IGdvIHRvIHRoZSBsaW5rCmh0dHA6Ly9sb2NhbGhvc3QvYXBpLwoKIyMgTGljZW5zZQpbTUlUIGxpY2Vuc2VdKExJQ0VOU0UubWQpLg== readmeEtag: '"3da803779915f63984a8b0958c7ddb3d9af605f1"' readmeLastModified: Thu, 03 Mar 2022 09:35:36 GMT repositoryId: 424592171 description: null created: '2021-11-04T12:45:03Z' updated: '2022-03-03T10:01:48Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: RomaBilka logo: https://avatars.githubusercontent.com/u/28790784?v=4 license: NOASSERTION repoEtag: '"0dd175955c33b5d66b698d7ae67732ff8bd206bc42aa1a59dc3e2bd7660b4d9f"' repoLastModified: Thu, 03 Mar 2022 10:01:48 GMT foundInMaster: true category: Server Implementations id: 3d759a8fa4c01f11a2072e83f412475b - source: openapi3 tags repository: https://github.com/nanonets/api-docs v3: true repositoryMetadata: base64Readme: >- IyBOYW5vTmV0cyBBUEkgUmVmZXJlbmNlCgpodHRwczovL25hbm9uZXRzLmNvbS9kb2N1bWVudGF0aW9uCg== readmeEtag: '"e4ae4c014bd99eefd6b2d3153ecf534ac8b176d1"' readmeLastModified: Fri, 12 Nov 2021 08:47:05 GMT repositoryId: 426224312 description: NanoNets API Reference. created: '2021-11-09T12:41:15Z' updated: '2021-11-12T08:47:21Z' language: HTML archived: false stars: 0 watchers: 4 forks: 0 owner: NanoNets logo: https://avatars.githubusercontent.com/u/30330951?v=4 license: MIT repoEtag: '"366230e4a0286646c8fa34242640c66754d10bd257edccd2c64048e4e7046a62"' repoLastModified: Fri, 12 Nov 2021 08:47:21 GMT foundInMaster: true category: - Testing - Server Implementations id: 1ac680c35c2904f43169d32e6428a45d - source: openapi3 tags repository: https://github.com/subodhjenasymbl/symbl-api v3: true id: 8893554b2dfc65220058c10804c4a356 repositoryMetadata: base64Readme: >- IyBTeW1ibCBBUEkgRG9jdW1lbnRhdGlvbgpTeW1ibCBSRVNUIEFQSSBEb2N1bWVudGF0aW9uCg== readmeEtag: '"61e74e83e83e78574e35a436b74ccf0c27c946ca"' readmeLastModified: Fri, 03 Jun 2022 07:33:38 GMT repositoryId: 499417683 description: Symbl OpenAPI3 Spec created: '2022-06-03T07:21:22Z' updated: '2022-06-03T07:32:43Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: subodhjenasymbl logo: https://avatars.githubusercontent.com/u/106313352?v=4 repoEtag: '"29b555bf3a7f8ce208bf0c7248228f84846f5c3b02fdeefce4832b60f3e4a6fb"' repoLastModified: Fri, 03 Jun 2022 07:32:43 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/onmetal/openapi-extractor v3: true id: 8e0801e45b5f14df2617fa79faf4a28c repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWV4dHJhY3RvcgoKWyFbVGVzdF0oaHR0cHM6Ly9naXRodWIuY29tL29ubWV0YWwvb3BlbmFwaS1leHRyYWN0b3IvYWN0aW9ucy93b3JrZmxvd3MvdGVzdC55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL29ubWV0YWwvb3BlbmFwaS1leHRyYWN0b3IvYWN0aW9ucy93b3JrZmxvd3MvdGVzdC55bWwpClshW1BScyBXZWxjb21lXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1BScy13ZWxjb21lLWJyaWdodGdyZWVuLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSldKGh0dHBzOi8vbWFrZWFwdWxscmVxdWVzdC5jb20pClshW0dpdEh1YiBMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YXRpYy92MT9sYWJlbD1MaWNlbnNlJm1lc3NhZ2U9QXBhY2hlLTIuMCZjb2xvcj1ibHVlJnN0eWxlPWZsYXQtc3F1YXJlKV0oTElDRU5TRSkKClRoZSBgb3BlbmFwaS1leHRyYWN0b3JgIGV4dHJhY3RzIHRoZSBPcGVuQVBJIHYyIGFuZCB2MyBzcGVjaWZpY2F0aW9ucyBvZiBhIGdpdmVuIEt1YmVybmV0ZXMgQVBJIHNlcnZlci4KCiMjIEluc3RhbGxhdGlvbgoKIyMjIEZyb20gc291cmNlCgpUbyBpbnN0YWxsIHRoZSBgb3BlbmFwaS1leHRyYWN0b3JgIGJpbmFyeSBpbnRvIHlvdXIgR28gYmluIHBhdGggcnVuCgpgYGBiYXNoCmdvIGluc3RhbGwgZ2l0aHViLmNvbS9vbm1ldGFsL29wZW5hcGktZXh0cmFjdG9yL2NtZC9vcGVuYXBpLWV4dHJhY3RvckBtYWluCmBgYAoKIyMgVXNhZ2UKCiMjIyBDb21tYW5kIGJhc2VkIGV4dHJhY3Rpb24KCkluIGNhc2UgeW91IGhhdmUgdGhlIGFwaSBzZXJ2ZXIgYmluYXJ5IHByZXNlbnQsIHlvdSBjYW4gZXh0cmFjdCB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBieSBydW5uaW5nCgpgYGBzaGVsbApvcGVuYXBpLWV4dHJhY3RvciAtLWFwaXNlcnZlci1jb21tYW5kPTxQQVRILVRPLUFQSVNFUlZFUi1CSU4+IFwKICAtLWFwaXNlcnZpY2VzPTxQQVRILVRPLUFQSVNFUlZJQ0VTLURJUj4KYGBgCgojIyMgR28gbW9kdWxlIGJhc2VkIGV4dHJhY3Rpb24KClRoZSBbYHNhbXBsZWBdKC9zYW1wbGUpIGZvbGRlciBjb250YWlucyBhbiBleGFtcGxlIG9uIGhvdyB0byBleHRyYWN0IHRoZSBPcGVuIEFQSSBzcGVjIGZyb20gYW4gYXBpIHNlcnZlciBwYWNrYWdlLiBJbiAKb3VyIGV4YW1wbGUgd2UgYXJlIHVzaW5nIHRoZSBbYG9ubWV0YWwtYXBpYF0oaHR0cHM6Ly9naXRodWIuY29tL29ubWV0YWwvb25tZXRhbC1hcGkpIGFnZ3JlZ2F0ZWQgYXBpIHNlcnZlci4KCmBgYHNoZWxsCm9wZW5hcGktZXh0cmFjdG9yIC0tYXBpc2VydmVyLXBhY2thZ2U9Z2l0aHViLmNvbS9vbm1ldGFsL29ubWV0YWwtYXBpL2NtZC9vbm1ldGFsLWFwaXNlcnZlciBcCiAgLS1hcGlzZXJ2ZXItYnVpbGQtb3B0cz1tb2QgXAogIC0tYXBpc2VydmljZXM9PFBBVEgtVE8tQVBJU0VSVklDRVMtRElSPgpgYGAKCkluIGNhc2UgeW91IHdhbnQgdG8gdXNlIHlvdXIgb3duIHBhY2thZ2UsIGZpcnN0IGBnbyBnZXRgIGl0IHNvIHlvdSBoYXZlIHRvIGNvcnJlY3QgZGVwZW5kZW5jaWVzIGluIHlvdXIgYGdvLm1vZGAgZmlsZSBhbmQKYWRqdXN0IHRoZSBgLS1hcGlzZXJ2ZXItcGFja2FnZWAgZmxhZyBhY2NvcmRpbmdseS4KCiMjIyBPdXRwdXQKClRoZSBleHRyYWN0ZWQgT3BlbkFQSSB2MiBhbmQgdjMgZmlsZXMgY2FuIGJlIGZvdW5kIGluIGN1cnJlbnQgZm9sZGVyIHdoZXJlIHRoZSB2MiB2ZXJzaW9uIHdpbGwgYmUgc3RvcmVkIGluIHRoZSBgc3dhZ2dlci5qc29uYApmaWxlIGFuZCB0aGUgdjMgdmVyc2lvbnMgd2lsbCBiZSBzdG9yZWQgaW4gaW5kaXZpZHVhbCBmaWxlcyBwZXIgZ3JvdXAgaW4gdGhlIGAuL3YzYCBmb2xkZXIuCgpUbyBvdmVycmlkZSB0aGUgbG9jYXRpb24gb2YgdGhlIG91dHB1dCBwYXNzIG9uIHRoZSBgLS1vdXRwdXRgIGZsYWcgZS5nLiB2aWEgYC0tb3V0cHV0PWRldmAgc3RvcmUgZXh0cmFjdCB0aGUgZmlsZXMgaW50bwp0aGUgYC4vZGV2YCBmb2xkZXIuCgojIyBDb250cmlidXRpbmcKCldlJ2QgbG92ZSB0byBnZXQgZmVlZGJhY2sgZnJvbSB5b3UuIFBsZWFzZSByZXBvcnQgYnVncywgc3VnZ2VzdGlvbnMgb3IgcG9zdCBxdWVzdGlvbnMgYnkgb3BlbmluZyBhIEdpdEh1YiBpc3N1ZS4KCiMjIExpY2Vuc2UKCkNvcHlyaWdodCAyMDIyLgoKTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo= readmeEtag: '"9e4b91b063630400194626098da2de0885a9adf8"' readmeLastModified: Tue, 28 Nov 2023 11:08:11 GMT repositoryId: 724646702 description: null created: '2023-11-28T14:05:19Z' updated: '2023-11-28T14:09:15Z' language: Go archived: true stars: 0 watchers: 3 forks: 0 owner: onmetal logo: https://avatars.githubusercontent.com/u/65116310?v=4 repoEtag: '"e9b47044128b2127cf61935ee7931ae67214b61d88629613269a06a2e90bdbde"' repoLastModified: Tue, 28 Nov 2023 14:09:15 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/experienced-dev/java-starter-template v3: true id: b514b5f0860f68c23c937fe5fa4afc00 repositoryMetadata: base64Readme: >- IyBHZXR0aW5nIFN0YXJ0ZWQKCiMjIyBEb2N1bWVudGF0aW9uCgpBdXRvIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uCgoqIFN3YWdnZXItIFVJIC9zd2FnZ2VyLXVpL2luZGV4Lmh0bWwKKiBPcGVuQXBpIC92My9hcGktZG9jcwo= readmeEtag: '"4f6c54b564e35aa424d4ce74f40e267e4d9502e7"' readmeLastModified: Thu, 30 Nov 2023 20:57:37 GMT repositoryId: 678730576 description: Java Starter Template created: '2023-08-15T08:33:21Z' updated: '2023-08-26T14:47:42Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: experienced-dev logo: https://avatars.githubusercontent.com/u/61656932?v=4 license: MIT repoEtag: '"68ffc778c54654bd3a0188fe0397dd91c67a996de59ce2c03d417068895ffed5"' repoLastModified: Sat, 26 Aug 2023 14:47:42 GMT category: - Parsers - Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/ibakchod/oatpp-todo v3: true id: b43c8b235c00ce710c0a040e2c74b19a repositoryMetadata: base64Readme: IyBRYXRwcCBUb2Rv readmeEtag: '"21e9a325a92b37d72af29eaf59f790cb41a2a2f5"' readmeLastModified: Sun, 07 Aug 2022 10:44:38 GMT repositoryId: 505103853 description: A light-weight To-Do restful API created: '2022-06-19T12:29:45Z' updated: '2022-08-21T09:14:06Z' language: C++ archived: false stars: 0 watchers: 1 forks: 0 owner: ibakchod logo: https://avatars.githubusercontent.com/u/107798368?v=4 license: MIT repoEtag: '"c62701190182d482d36c28a4721162fca61b173005221b0f613a2d9047bd4c6b"' repoLastModified: Sun, 21 Aug 2022 09:14:06 GMT category: - Data Validators - Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/simonmicro/access-control v3: true id: 8ace88db44940eca607aace7f40c1b59 repositoryMetadata: base64Readme: >- IyBXaGF0IGlzIHRoaXM/CgohW2xvZ2luXShkb2NzL2ltZy9sb2dpbi5wbmcpCiFbZGFzaGJvYXJkXShkb2NzL2ltZy9kYXNoLnBuZykKClRoaXMgYXBwbGljYXRpb24gd2FzIGRldmVsb3BlZCB0byB3b3JrIGluc2lkZSBhIGNsb3VkLW5hdGl2ZSBlbnZpcm9ubWVudCAoS3ViZXJuZXRlcyEpIGFuZCB0byBwcm90ZWN0IGl0cyB3ZWItYXBwbGljYXRpb25zIHdpdGggYW4gYWRkaXRpb25hbCBsYXllciBvZiBzZWN1cml0eS4KClRoZXJlIGlzIG5vIG5lZWQgZm9yIGUuZy4gYSBWUE4tY2xpZW50IG9uIHRoZSBfdXNlcnNfIHNpZGUsIGluc3RlYWQgdGhlaXIgcmVxdWVzdHMgd2lsbCBzaW1wbHkgYmUgcmV3cml0dGVuIHRvIHRoZSBhdXRoZW50aWNhdGlvbiBsYXllciBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIHNvbHV0aW9uIGlzIG5vdCBwZXJmZWN0IGFuZCBvbmx5IG1lYW50IGFzIGFuIGFkZGl0aW9uYWwgb2Ygc2VjdXJpdHk6IEl0IHdvcmtzIGJ5IHdoaXRlbGlzdGluZyBfdXNlcnNfIHB1YmxpYyBJUHY0IGZvciBhIHNldCBvZiBfc2NvcGVzXyAobGlrZSBgc3R1ZmYuZXhhbXBsZS5jb21gKSBieSBwcm92aWRpbmcgYSBsaXN0IG9mIElQdjQtYWRkcmVzc2VzIGZvciB0aGUgdXNlIGluc2lkZSBjb25maWdtYXBzIChlLmcuIGZvciB1c2UgaW5zaWRlIE5naW54KS4gSXQgdGhlcmZvcmUgd29ya3MgYmVzdCBmb3IgInNtYWxsIiBhbW91bnQgb2YgX3VzZXJzXyBvbmx5LgoKIyMgU2VydmljZXMKKiBgYXBpYCBQcm92aWRlcyBhIFJFU1QtZnVsIGVuZHBvaW50IHdpdGggV2ViU29ja2V0cyBhbmQgZG9jdW1lbnRhdGlvbgoqIGBjb25maWdgIEFwcGxpZXMgYSBnaXZlbiBZQU1MIHRvIHRoZSBkYXRhYmFzZSAoc3VwcG9ydHMgbGl2ZSBjaGFuZ2VzKQoqIGBkYXNoYm9hcmRgIFByb3ZpZGVzIGEgc3RhdGljIHNldCBvZiBmaWxlcyBhcyB0aGUgZGFzaGJvYXJkLCBleHBlY3RzIHRoZSBwYXRoIGAvYXBpYCB0byBiZSByb3V0ZWQgdG8gdGhlIGBhcGlgIHNlcnZpY2UgLSB0byBjaGFuZ2UgdGhhdCAoZS5nLiB0byB1c2UgYW4gb3duIHN1Yi1kb21haW4gZm9yIHRoZSBhcGkpLCB5b3UgaGF2ZSB0byBjb21waWxlIHRoZSBkYXNoYm9hcmQgeW91cnNlbGYuLi4KKiBgcHJvdmlzaW9uYCBUaGlzIGNvbnRhaW5lciB1c2VzIHRoZSBga3ViZWN0bGAgY29tbWFuZCB0byBhcHBseSBjaGFuZ2VzIHRvIHRoZSBwb2RzIGFuZCBjb25maWdtYXBzCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCiMjIyBBUEksIERhc2hib2FyZCAmIG1vcmUKQWxsIHNlcnZpY2VzIChleGNlcHQgdGhlIGBkYXNoYm9hcmRgKSBuZWVkIGFjY2VzcyB0byBhIFJlZGlzIGRhdGFiYXNlIGluc3RhbmNlLiBUbyBydW4gc3VjaCBpbnN0YW5jZSBsb2NhbGx5LCB0cnkgdGhpcyAoYWNjb3JkaW5nIHRvIGl0cyBbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9fL3JlZGlzKSk6CgpgYGBiYXNoCmRvY2tlciBydW4gLXYgIiQocHdkKS9yZWRpczovZGF0YSIgLXAgNjM3OTo2Mzc5IHJlZGlzIHJlZGlzLXNlcnZlciAtLXNhdmUgNjAgMSAtLWxvZ2xldmVsIHdhcm5pbmcKYGBgCgpUbyBjb25maWd1cmUgdGhlIHNlcnZpY2VzIHRvIHVzZSB0aGlzIGluc3RhbmNlLCB0YWtlIGEgbG9vayBpbnRvIHRoZSBgLmdpdGxhYi8qL0RvY2tlcmZpbGVgIGZpbGVzIGZvciB0aGUgc2VydmljZXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLgoKQXMgeW91IG1heSBoYXZlIG5vdGVkLCB0aGUgc2VydmljZSBgY29uZmlnYCBleHBlY3RzIGEgWUFNTCBmaWxlIHRvIHByZXBhcmUgdGhlIF9zY29wZXNfIGFuZCBfdXNlcnNfLiBUYWtlIGEgbG9vayBpbnRvIHRoZSBgY29uZmlnLnNhbXBsZS55YW1sYCB0byBsZWFybiBtb3JlIQoKWW91IHRoZW4gaGF2ZSB0byBleHBvc2UgdGhlIGBkYXNoYm9hcmRgIGFuZCBgYXBpYCBzZXJ2aWNlcyB0byB0aGUgX3VzZXJzXyBieSBlLmcuIHVzaW5nIGEgTmdpbnggaW5zdGFjZSBhcyBhIHJldmVyc2UgcHJveHkuIEZvciB0aGUgYGRhc2hib2FyZGAganVzdCBwcm94eSByZXF1ZXN0cyB0byB0aGUgYGRhc2hib2FyZGAgc2VydmljZSBhbmQgZm9yIHRoZSBgYXBpYCwgZW5zdXJlIHRoZSBwYXRoIGAvYXBpYCBvZiB5b3VyIE5naW54IGlzIHByb3hpZWQgdG8gdGhlIGBhcGlgIHNlcnZpY2UgKHRha2UgYSBsb29rIGF0IFtVdmljb3JuIERlcGxveW1lbnRdKGh0dHBzOi8vd3d3LnV2aWNvcm4ub3JnL2RlcGxveW1lbnQvI3J1bm5pbmctYmVoaW5kLW5naW54KSBhbmQgdGhlIGFwaSBlbnZpcm9ubWVudCB2YXJpYWJsZXMpLgoKKipSYXRlIGxpbWl0cyoqIGFyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBhZGQgYW4gYWRkaXRpb25hbCBsYXllciBvZiBzZWN1cml0eSB0byB5b3VyIGFwaSBlbmRwb2ludCEgSGVyZSBpcyBhbiBleGFtcGxlIGZvciBhIE5naW54IGNvbmZpZ3VyYXRpb24gb2YgdGhlIGBkYXNoYm9hcmRgIHdpdGggdGhlIGBhcGlgIHNlcnZpY2UgbWFwcGVkIHRvIGAvYXBpYDoKCmBgYG5naW54CmxpbWl0X3JlcV96b25lICRiaW5hcnlfcmVtb3RlX2FkZHIgem9uZT1hY2Nlc3NfYXBpX2xpbWl0OjEwbSByYXRlPTRyL3M7CgpzZXJ2ZXIgewogICAgbGlzdGVuIDQ0MyBzc2w7CiAgICBzZXJ2ZXJfbmFtZSBhY2Nlc3MtY29udHJvbC5leGFtcGxlLmNvbTsKCiAgICBzc2xfY2VydGlmaWNhdGUgLi4uOwogICAgc3NsX2NlcnRpZmljYXRlX2tleSAuLi47CgogICAgbG9jYXRpb24gLyB7CiAgICAgICAgc2V0ICRlbmRwb2ludCBkYXNoYm9hcmQtc2VydmljZS5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsOwogICAgICAgIHJlc29sdmVyIGt1YmUtZG5zLmt1YmUtc3lzdGVtLnN2Yy5jbHVzdGVyLmxvY2FsOwogICAgICAgIHByb3h5X3Bhc3MgaHR0cDovLyRlbmRwb2ludDsKICAgIH0KCiAgICBsb2NhdGlvbiAvYXBpLyB7CiAgICAgICAgIyAtPiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzMzMjU1ODQKICAgICAgICByZXdyaXRlIF4vYXBpLyguKikgLyQxICBicmVhazsKICAgICAgICByZXNvbHZlciBrdWJlLWRucy5rdWJlLXN5c3RlbS5zdmMuY2x1c3Rlci5sb2NhbDsKICAgICAgICBwcm94eV9wYXNzIGh0dHA6Ly9hcGktc2VydmljZS5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsJHVyaSRpc19hcmdzJGFyZ3M7CiAgICAgICAgIyBMaW1pdCBpbnRlcmFjdGlvbiB0byB0aGUgQVBJCiAgICAgICAgbGltaXRfcmVxIHpvbmU9YWNjZXNzX2FwaV9saW1pdCBidXJzdD0zMiBkZWxheT04OwogICAgICAgIGxpbWl0X3JlcV9zdGF0dXMgNDI5OwogICAgICAgICMgSW5mb3JtIHRhcmdldCBob3N0IGFib3V0IHByb3h5IGNsaWVudC4uLgogICAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCAkaG9zdDsKICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtUmVhbC1JUCAgJHJlbW90ZV9hZGRyOwogICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtRm9yICRwcm94eV9hZGRfeF9mb3J3YXJkZWRfZm9yOwogICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtUHJvdG8gJHNjaGVtZTsKICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtRm9yd2FyZGVkLVByb3RvY29sICRzY2hlbWU7CiAgICAgICAgcHJveHlfc2V0X2hlYWRlciBYLUZvcndhcmRlZC1Ib3N0ICRodHRwX2hvc3Q7CiAgICAgICAgIyBTdXBwb3J0IFdlYlNvY2tldCBjb25uZWN0aW9ucy4uLgogICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7ICMgRGVmYXVsdCBpcyAxLjAKICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFVwZ3JhZGUgJGh0dHBfdXBncmFkZTsKICAgICAgICBwcm94eV9zZXRfaGVhZGVyIENvbm5lY3Rpb24gInVwZ3JhZGUiOwogICAgICAgICMgV2FpdCBmb3IgeCBzZWNvbmRzIGZvciB0aGUgdXBsaW5rLi4uCiAgICAgICAgcHJveHlfY29ubmVjdF90aW1lb3V0IDFkOyAjIEtlZXAgd2Vic29ja2V0cyBhbGl2ZSEKICAgICAgICBwcm94eV9zZW5kX3RpbWVvdXQgMWQ7ICMgS2VlcCB3ZWJzb2NrZXRzIGFsaXZlIQogICAgICAgIHByb3h5X3JlYWRfdGltZW91dCAxZDsgIyBLZWVwIHdlYnNvY2tldHMgYWxpdmUhCiAgICAgICAgc2VuZF90aW1lb3V0IDEwOwogICAgfQp9CmBgYAoKIyMjIENvbmZpZ3VyZSB5b3VyIE5naW54ClRoZSBgcHJvdmlzaW9uYCBzZXJ2aWNlIG9mIHRoaXMgcHJvamVjdCBpcyBjb21wYXJ0aWJsZSB3aXRoIE5naW54IGFuZCBpdHMgYGdlb19pcGAgbW9kdWxlLiBUaGlzIGlzIGFjaGlldmVkIGJ5IHVwZGF0aW5nIGEgY29uZmlnbWFwIGluc2lkZSB0aGUgS3ViZXJuZXRlcyBjbHVzdGVyLCB3aGljaCBob2xkcyBhIGxpc3Qgb2YgSVBzIGZvciB0aGUgY29uZmlndXJlZCBfc2NvcGVzXy4gQXMgeW91IG1heSBoYXZlIG5vdGVkLCBOZ2lueCBkb2VzIG5vdCByZWxvYWQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgb24gaXRzIG93biBpZiBhbnkgY2hhbmdlIG9jY3Vycy4gRm9yIHRoaXMgYSBzbWFsbCBzaWRlY2FyIGlzIHJlcXVpcmVkIChlLmcuIGJlbG93KS4gRnVydGhlcm1vcmUsIHlvdSBhbHNvIGhhdmUgdG8gY29uZmlndXJlIHlvdXIgTmdpbnggdG8gcmVzcGVjdCB0aGUgbGlzdHMgZnJvbSB0aGUgKHRoZW4gbW91bnRlZCkgY29uZmlnbWFwLiBTZWUgYmVsb3cgZm9yIGFuIGV4YW1wbGUgdG9vLgoKTmdpbnggd2l0aCBhIHNpZGVjYXIgZm9yIGF1dG9tYXRpYyByZWxvYWRzOgpgYGB5YW1sCmFwaVZlcnNpb246IGFwcHMvdjEKa2luZDogRGFlbW9uU2V0Cm1ldGFkYXRhOgogIG5hbWU6IG5naW54CnNwZWM6CiAgc2VsZWN0b3I6CiAgICBtYXRjaExhYmVsczoKICAgICAgYXBwOiBuZ2lueAogIHRlbXBsYXRlOgogICAgbWV0YWRhdGE6CiAgICAgIGxhYmVsczoKICAgICAgICBhcHA6IG5naW54CiAgICBzcGVjOgogICAgICBzaGFyZVByb2Nlc3NOYW1lc3BhY2U6IHRydWUgIyBSZXF1aXJlZCBmb3Igc2VuZGluZyB0aGUgcmVsb2FkIHNpZ25hbCB0byBOZ2lueAogICAgICBjb250YWluZXJzOgogICAgICAtIG5hbWU6IGNvbmZpZy1yZWxvYWRlcgogICAgICAgIGltYWdlOiByZWFsc2ltb25taWNyby9kZWJpYW4taW5vdGlmeXdhaXQKICAgICAgICAjIERvIE5PVCBsaXN0ZW4gdG8gYWxsIGV2ZW50cywgb3RoZXJ3aXNlIHlvdSB3aWxsIGdldCBzdHVjayBpbiBhIGxvb3AgKGJlY2F1c2UgTkdJTlggd2lsbCB0cmlnZ2VyICJjbG9zZSIgYWZ0ZXIgcmVhZGluZyB0aGVtIHdpdGggImFjY2VzcyIpLgogICAgICAgIGFyZ3M6IFsiLWMiLCAiZWNobyAnUmVhZHkgdG8gZ28hJzsgaW5vdGlmeXdhaXQgLWUgbW9kaWZ5IC1lIGNyZWF0ZSAtZSBtb2RpZnkgLWUgZGVsZXRlIC1tIC1xIC1yIC0tZm9ybWF0ICcldyVmJyAnL2dlb19pcHMvJyB8IHdoaWxlIHJlYWQgLXIgcGF0aDsgZG8gZWNobyBcIiQoZGF0ZSk6ICRwYXRoIGNoYW5nZWQhXCI7IGVjaG8gXCJcdFNraXBwaW5nICQodGltZW91dCAzIGNhdCB8IHdjIC1sKSBmdXJ0aGVyIGNoYW5nZXMuLi5cIjsga2lsbCAtcyBIVVAgJChwZ3JlcCAtbyBuZ2lueCk7IGRvbmUiXQogICAgICAgIHZvbHVtZU1vdW50czoKICAgICAgICAtIG5hbWU6IG5naW54LWNvbmZpZy1nZW8taXBzLXZvbHVtZQogICAgICAgICAgbW91bnRQYXRoOiAvZ2VvX2lwcy8KICAgICAgICAgIHJlYWRPbmx5OiB0cnVlCiAgICAgIC0gbmFtZTogbmdpbngKICAgICAgICBpbWFnZTogbmdpbngKICAgICAgICB2b2x1bWVNb3VudHM6CiAgICAgICAgLSBuYW1lOiBuZ2lueC1jb25maWctZ2VvLWlwcy12b2x1bWUKICAgICAgICAgIG1vdW50UGF0aDogL2dlb19pcHMvCiAgICAgICAgICByZWFkT25seTogdHJ1ZQogICAgICAgIHBvcnRzOgogICAgICAgIC0gY29udGFpbmVyUG9ydDogODAKICAgICAgICAtIGNvbnRhaW5lclBvcnQ6IDQ0MwogICAgICB2b2x1bWVzOgogICAgICAtIG5hbWU6IG5naW54LWNvbmZpZy1nZW8taXBzLXZvbHVtZQogICAgICAgIGNvbmZpZ01hcDoKICAgICAgICAgIG5hbWU6IG5naW54LWNvbmZpZy1nZW8taXBzCmBgYAoKTmdpbnggY29uZmlndXJhdGlvbiBmb3IgYGdlb19pcGAgbGlzdHMgZnJvbSBgL2dlb19pcHMvZHVtbXkubGlzdGA6CmBgYG5naW54CmdlbyAkZHVtbXlfbGlzdCB7CiAgICBpbmNsdWRlIC9nZW9faXBzL2R1bW15Lmxpc3Q7Cn0KCnNlcnZlciB7CiAgICBsaXN0ZW4gNDQzIHNzbDsKICAgIHNlcnZlcl9uYW1lIHNlcnZpY2UuZXhhbXBsZS5jb207CgogICAgc3NsX2NlcnRpZmljYXRlIC4uLjsKICAgIHNzbF9jZXJ0aWZpY2F0ZV9rZXkgLi4uOwoKICAgIGxvY2F0aW9uIC8gewogICAgICAgIGlmICgkZHVtbXlfbGlzdCA9IDEpIHsKICAgICAgICAgICAgIyByb290IC9zdWNjZXNzOwogICAgICAgICAgICAjIC4uLm9yIHVzZSBpbmxpbmUgSFRNTC4uLgogICAgICAgICAgICBhZGRfaGVhZGVyIENvbnRlbnQtVHlwZSB0ZXh0L2h0bWw7CiAgICAgICAgICAgIHJldHVybiAyMDAgJzxodG1sPjxib2R5PjxoMT5BY2Nlc3MgZ3JhbnRlZCE8L2gxPjwvYm9keT48L2h0bWw+JzsKICAgICAgICB9CiAgICAgICAgaWYgKCRkdW1teV9saXN0ICE9IDEpIHsKICAgICAgICAgICAgIyBZb3UgY2FuIGFsc28gdXNlIHRoZSAicmV3cml0ZSIgaW5zdGVhZCBvZiB0aGUgInJvb3QiIChvciB3aGF0ZXZlcikgc3RhdGVtZW50IHRvIGRpcmVjdGx5IHNlbmQgdGhlIHVzZXIgdG8gdGhlIGFjY2Vzcy1jb250cm9sIHdlYmludGVyZmFjZS4KICAgICAgICAgICAgIyBNYWtlIHN1cmUgdG8gaW5zZXJ0IHRoZSBleHRlcm5hbCByZWFjaGlibGUgaG9zdG5hbWUgYmVsb3chCiAgICAgICAgICAgICMgcmV3cml0ZSBeICRzY2hlbWU6Ly9FWFRFUk5BTF9IT1NUTkFNRV9PRl9JTlRFUkZBQ0UvcmVxdWVzdC8kc2NoZW1lLyRob3N0JHVyaSRpc19hcmdzJGFyZ3MgcmVkaXJlY3Q7CgogICAgICAgICAgICAjIHJvb3QgL2ZhaWx1cmU7CiAgICAgICAgICAgICMgLi4ub3IgdXNlIGlubGluZSBIVE1MLi4uCiAgICAgICAgICAgIGFkZF9oZWFkZXIgQ29udGVudC1UeXBlIHRleHQvaHRtbDsKICAgICAgICAgICAgcmV0dXJuIDQwMyAnPGh0bWw+PGJvZHk+PGgxPkFjY2VzcyBkZW5pZWQhPC9oMT48L2JvZHk+PC9odG1sPic7CiAgICAgICAgfQogICAgfQp9CmBgYA== readmeEtag: '"227a34b411f34342121dee11ad0e650701c70a6a"' readmeLastModified: Wed, 15 Mar 2023 23:11:53 GMT repositoryId: 535276710 description: An access control system for cloud-native applications. created: '2022-09-11T11:28:07Z' updated: '2024-12-30T17:06:47Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: simonmicro logo: https://avatars.githubusercontent.com/u/24966116?v=4 repoEtag: '"85353ab4a8f83717b2f2e8844e6b67818c6ad38ee8daa3e4ec63b172f17d80c8"' repoLastModified: Mon, 30 Dec 2024 17:06:47 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/isaguler/weather-api v3: true id: bbf658d41ec2f229226b7c500a531c82 repositoryMetadata: base64Readme: >- IyMjIGVudiBhbmQgdGVjaHMKLSBKYXZhIDE3ICYgU3ByaW5nQm9vdCAzCi0gRG9ja2VyICYgRG9ja2VyLUNvbXBvc2UKLSBQcm9tZXRoZXVzCi0gR3JhZmFuYQotIE9wZW5BUEkgRG9jCi0gV2VhdGhlclN0YWNrIEFwaQotIEgyIERhdGFiYXNlCi0gU3ByaW5nIENhY2hlCi0gUmVzaWxpZW5jZTRqCi0gU2xmNGoKCiMjIyBlbmRwb2ludHMKLSBncmFmYW5hIC0+IGxvY2FsaG9zdDozMDAwCi0gcHJvbWV0aGV1cyAtPiBsb2NhbGhvc3Q6OTA5MAotIGFjdHVhdG9yIC0+IGxvY2FsaG9zdDo5NTk1L2FjdHVhdG9yCi0gYXBwIC0+IGxvY2FsaG9zdDo5NTk1 readmeEtag: '"8088c523432ab808db31a1221ff33156caf0e32d"' readmeLastModified: Thu, 30 Mar 2023 07:42:41 GMT repositoryId: 621183272 description: Current Weather Information for Cities created: '2023-03-30T06:42:56Z' updated: '2023-04-03T14:30:06Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: isaguler logo: https://avatars.githubusercontent.com/u/96476351?v=4 repoEtag: '"c6c9f3a20dac5a51fb7dc2defdd01f544c4cb91d56bc00976ea897f008fd99dd"' repoLastModified: Mon, 03 Apr 2023 14:30:06 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/interes-group/b-vsa-ls23-project2-solution v3: true id: 316ffa1df03fb79513d3c55058386698 repositoryMetadata: base64Readme: >- IyBCLVZTQSBMUyAyMi8yMyAtIFNlbWVzdHLDoWxueSBwcm9qZWt0IDIKCiFbSmF2YSAxLjhdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvSmF2YS0xLjgtcmVkKQohW0VjbGlwc2VMaW5rIDIuNy4xMV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9FY2xpcHNlTGluay0yLjcuMTEtYmx1ZSkKIVtQb3N0Z3JlU1FMIERyaXZlcl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9Qb3N0Z3JlU1FMLTQyLjUuNC1ncmVlbikKIVtKZXJzZXkgSkFYLVJTXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0plcnNleS0yLjM5LjEtb3JhbmdlKQpbIVtQdWJsaWMgZG9tYWluXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtVW5saWNlbnNlLWxpZ2h0Z3JheSldKGh0dHBzOi8vdW5saWNlbnNlLm9yZykKCkNpZcS+b20gMi4gc2VtZXN0csOhbG5laG8gcHJvamVrdHUgamUgaW1wbGVtZW50b3ZhxaUgamVkbm9kdWNow7ogd2Vib3bDuiBhcGxpa8OhY2l1IHB1Ymxpa3Vqw7pjdSBSRVNUIEFQSSBwb2TEvmEgZGVmaW5vdmFuZWoKxaFwZWNpZmlrw6FjaWUuIFByb2pla3QgbcOhIG5hZHbDpHpvdmHFpSBuYSAxLiBzZW1lc3Ryw6FsbnkgcHJvamVrdCwgdiBrdG9yb20gc3RlIGltcGxlbWVudG92YWxpIHNwb2plbmllIHMgU1FMIGRhdGFiw6F6b3UKcG91xb5pdMOtbSB0ZWNobm9sw7NnaWUgSlBBLCB0YWvFvmUgYWogdiB0b210byBwcm9qZWt0ZSBtYWrDuiBiecWlIGRvZHLFvmFuw6kgdnrFpWFoeSBhIGxvZ2lrYSBtZWR6aSBqZWRub3RsaXbDvW1pIGVudGl0YW1pLgoKViB0b210byBwcm9qZWt0ZSBtw7TFvnRlIHZ5Y2jDoWR6YcWlIHogdsOhxaFobyByaWXFoWVuaWEgMS4gc2VtZXN0csOhbG5laG8gcHJvamVrdHUsIGFsZWJvIHZ5dcW+acWlIHBvc2t5dG51dMO6IFtyZWZlcmVuxI1uw7ogaW1wbGVtZW50w6FjaXVdKGh0dHBzOi8vZ2l0aHViLmNvbS9JbnRlcmVzLUdyb3VwL2ItdnNhLWxzMjMtcHJvamVjdDEtc29sdXRpb24pLgpaYWNob3ZhanRlIGFzb2Npw6FjaWUgYSBvYmpla3R5IGRlZmlub3ZhbsOpIHYgMS4gcHJvamVrdGUuIE5ha2/EvmtvIMO6xI1lbG9tIHRvaHRvIHphZGFuaWEgamUgaW1wbGVtZW50w6FjaWEgUkVTVCB3ZWJvdsO9Y2ggc2x1xb5pZWIsCm3DtMW+dGUgdXByYXZpxaUgcmllxaFlbmllIHogcHJlZGNow6FkemFqw7pjZWhvIHphZGFuaWEgcG9kxL5hIHN2b2pobyBuYWpsZXDFoWllaG8gdmVkb21pYSBhIHN2ZWRvbWlhLCB0YWsgYWJ5IHNwbG5pbG8gdG90byB6YWRhbmllLgpQcmUgdnlwcmFjb3ZhbmllIHNhIG3DtMW+dGUgaW7FoXBpcm92YcWlIFtwcm9qZWt0YW1pIHogY3ZpxI1lbsOtXShodHRwczovL2dpdGh1Yi5jb20vSW50ZXJlcy1Hcm91cC9iLXZzYS1jdmljZW5pYSkuIApEYmFqdGUgbmEgZG9kcsW+aWF2YW5pZSBwb2t5bm92IHphZGFuaWEgbmFrb8S+a28gYnVkZSBvcHJhdm92YW7DqSBhdXRvbWF0aXpvdmFuZSBwb21vY291IEpVbml0IHRlc3Rvdi4gTmEga29uY2kgemFkYW5pYSBqZSBuw6F2b2QsIApha28gc2kgbG9rw6FsbmUgc3B1c3RpxaUgdHp2LiAic2FuaXR5LWNoZWNrIiB0ZXN0LCBwcmUgb3Rlc3RvdmFuaWUgc3BsbmVuaWEga29uZmlndXLDoWNpZSB2eXByYWNvdmFuaWEsIGFieSBib2wgcHJvamVrdCB0ZXN0b3ZhdGXEvm7DvS4KCiMjIMWgcGVjaWZpa8OhY2lhCgpBcGxpa8OhY2lhIG11c8OtIHB1Ymxpa292YcWlICoqUkVTVCB3ZWJvdsOpIHNsdcW+YnkqKiBkb2Ryxb5pYXZhasO6Y2UgZG9kYW7DuiBbKipPcGVuQVBJIDMgxaFwZWNpZmlrw6FjaXUqKl0oLi9zcmMvbWFpbi9yZXNvdXJjZXMvb3BlbmFwaTMuc3BlYy55YW1sKS4gCkFwbGlrw6FjaWEgdGFrIG11c8OtIHphYmV6cGXEjWnFpSBDUlVEIG9wZXLDoWNpZSBjZXogcHVibGlrb3ZhbsOpIHdlYm92w6kgc2x1xb5ieSAocyB2w71uaW1rb3UgdXBkYXRlIG9wZXLDoWNpZSkuIEFwbGlrw6FjaWEgbXVzw60KdGFrdGllxb4gcG9za3l0b3ZhxaUgd2Vib3bDqSBzbHXFvmJ5IHByZSBwcmlyYWRlbmllIGEgb2RvdnpkYW5pZSB6w6F2ZXJlxI1uZWogcHLDoWNlLCBhIHRhayBpc3RvIHByZSB2eWjEvmFkYW5pZSB6w6F2ZXJlxI1uZWogcHLDoWNlCnBvZMS+YSBwbGF0bsO9Y2gga3JpdMOpcmnDrSAodC5qLiBwb2TEvmEgxaF0dWRlbnRhLCBhbGVibyBwb2TEvmEgdcSNaXRlxL5hKS4KClByaSBpbXBsZW1lbnTDoWNpw60gcG91xb5pdGUgcHJvdG9rb2wgKipIVFRQLzEuMSoqLCBha28gZm9ybcOhdCBwcmVuw6HFoWFuw71jaCBvYmpla3RvdiBwb3XFvml0ZSAqKmFwcGxpY2F0aW9uL2pzb24qKiBzIFVURi04IGvDs2RvdmFuw61tLiAKUHJpIGNoeWJvdsO9Y2ggc3Rhdm9jaCB2csOhxaV0ZSBvYmpla3QgYE1lc3NhZ2VgIChha28gamUgdXZlZGVuw6kgdiDFoXBlY2lmaWvDoWNpaSkgcyBwcsOtc2x1xaFuw71tIGvDs2RvbSBjaHlieS4gCkvDs2Qgb2Rwb3ZlZGUgbmFzdGF2dGUgdGFrLCBhYnkgbmFqbGVwxaFpZSB2eXN0aWhsYSBwb3ZhaHUgb2Rwb3ZlZGUuIApIVFRQIGvDs2R5OiBbaHR0cHM6Ly93d3cucmVzdGFwaXR1dG9yaWFsLmNvbS9odHRwc3RhdHVzY29kZXMuaHRtbF0oaHR0cHM6Ly93d3cucmVzdGFwaXR1dG9yaWFsLmNvbS9odHRwc3RhdHVzY29kZXMuaHRtbCkuCgojIyMgQXV0ZW50aWZpa8OhY2lhCgpWIHLDoW1jaSBwcm9qZWt0dSBpbXBsZW1lbnR1anRlICoqYXV0ZW50aWZpa2HEjW7DvSBtZWNoYW5pem11cyBCYXNpYyBBY2Nlc3MgQXV0aGVudGljYXRpb24qKiBbaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzaWNfYWNjZXNzX2F1dGhlbnRpY2F0aW9uXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNpY19hY2Nlc3NfYXV0aGVudGljYXRpb24pCihza3LDoXRlbmUgQmFzaWMgQXV0aCkuIEplZG5vdGxpdsOpIHdlYm92w6kgc2x1xb5ieSBzw7ogdiDFoXBlY2lmaWvDoWNpaSBvem5hxI1lbsOpIMSNaSBqZSBwb3RyZWJuw6EgYXV0ZW50aWZpa8OhY2lhIHByZSBpY2ggZG9weXRvdmFuaWUuIApQb3XFvsOtdmF0ZcS+b20gcmllxaFlbmlhLCBrdG9yw71tIGplIHVtb8W+bmVuw6kgcHJpaGzDoXNlbmllLCBqZSBrYcW+ZMO9IHZ5dHZvcmVuw70gxaF0dWRlbnQgYSB1xI1pdGXEvi4KQWtvIHByaWhsYXNvdmFjaWUgbWVubyBwb3XFvsOtdmF0ZcS+YSBwb3XFvml0ZSBlbWFpbCB1xI1pdGXEvmEgYWxlYm8gxaF0dWRlbnRhLiBFbnRpdHUgxaF0dWRlbnRhIGEgdcSNaXRlxL5hIHJvesWhw61ydGUgbyBhdHJpYsO6dCBgcGFzc3dvcmRgLiAKUHJpIHZ5dHZvcmVuw60gcG91xb7DrXZhdGXEvmEgbXVzw60gYnnFpSB6YWRhbsOpIGhlc2xvLiBIZXNsbyB2IGRvcHl0ZSB2eXR2b3JlbmlhIHBvdcW+w612YXRlxL5hIG5lc21pZSBiecWlIHBvc2xhbsOpIHYgb3R2b3JlbmVqIHBvZG9iZSAKYWxlIGFrbyBzdHJpbmcgZW5rw7Nkb3ZhbsO9IHYgQkFTRTY0IGvDs2RvdmFuw60uCgpQcmVkIHVsb8W+ZW7DrW0gZG8gZGF0YWLDoXp5IG11c8OtIGJ5xaUgaGVzbG8gZGVrw7Nkb3ZhbsOpIGRvIHDDtHZvZG5laiBob2Rub3R5IHZ5cG/EjcOtdGFuw70gaGFzaCBhIG7DoXNsZWRuZSBhxb4gdsO9c2xlZG7DvSBoYXNoIHJlxaVhemVjCnVsb8W+ZW7DvSBkbyBkYXRhYsOhenkgYWtvIGhvZG5vdGEgYHBhc3N3b3JkYCBhdHJpYsO6dHUuIFByaSBwcmlobMOhc2Vuw60gcG91xb7DrXZhdGXEvmEgamUgcG9yb3ZuYW7DqSBoZXNsbyB6IEhUVFAgaGxhdmnEjWt5IGBBdXRob3JpemF0aW9uYApzIHVsb8W+ZW7DvW0gaGFzaCByZcWlYXpjb20geiBkYXRhYsOhenkuIEF1dGVudGlmaWthxI1uw70gbWVjaGFuaXptdXMgbXVzw60gZG9rw6F6YcWlIHJvemzDrcWhacWlIMSNaSBpZGUgbyDFoXR1ZGVudGEgYWxlYm8gdcSNaXRlxL5hLgpQcmUgdnl0dm9yZW5pZSBoYXNoIHJlxaVhemNhIGhlc2xhIGEgbsOhc2xlZG7DuiB2ZXJpZmlrw6FjaXUgcHJpIHByaWhsw6FzZW7DrSBtw7TFvnRlIHZ5dcW+acWlIG1ldMOzZHkgdHJpZWR5IFtCQ3J5cHRTZXJ2ZXJdKC4vc3JjL21haW4vamF2YS9zay9zdHViYS9mZWkvdWltL3ZzYS9wcjIvQkNyeXB0U2VydmljZS5qYXZhKS4KClJFU1Qgc2x1xb5ieSBpbXBsZW1lbnR1anRlIGFrbyBiZXpzdGF2b3bDqS4gTmV2eXR2w6FyYWp0ZSDFvmlhZG51IHBvdcW+w612YXRlxL5za8O6IHJlbMOhY2l1IChTZXNzaW9uKSwgbmV2eXR2w6FyYWp0ZSDFvmlhZG5lIGF1dG9yaXphxI1uw6kgdG9rZW55LCAKxI1pIGluw6kgc3DDtHNvYnkgcmVsw6FjaWUgYSB1ZHLFvmlhdmFuaWEgc3RhdnUgcG91xb7DrXZhdGXEvmEgKGFrbyBuYXByLiBjb29raWVzKS4gSFRUUCBobGF2acSNa2EgYEF1dGhvcml6YXRpb25gIG11c8OtIGJ5xaUgemFzbGFuw6EgcyBrYcW+ZMO9bSBkb3B5dG9tIG5hIHNsdcW+YnkuCgpabHloYW5pZSBwcmlobMOhc2VuaWEgbcOhIHZyw6F0acWlIG9kcG92ZcSPIHMga8OzZG9tIDQwMS4KCiMjIyBBdXRvcml6w6FjaWEKClYgcsOhbWNpIHByb2pla3R1IGltcGxlbWVudHVqdGUgKiphdXRvcml6YcSNbsO9IG1lY2hhbml6bXVzKiosIGt0b3LDvSBidWRlICoqcm96bGnFoW92YcWlIG1lZHppIHByw61zdHVwb20gdcSNaXRlxL5hIGEgxaF0dWRlbnRhKiouClYgW2RvZGFuZWogT3BlbkFQSSAzIMWhcGVjaWZpa8OhY2lpXSguL3NyYy9tYWluL3Jlc291cmNlcy9vcGVuYXBpMy5zcGVjLnlhbWwpIHByaSBuaWVrdG9yw71jaCBSRVNUIHdlYm92w71jaCBzbHXFvmLDoWNoIGplIHBvcMOtc2Fuw6ksCsSNaSBtw6EgYnnFpSBpbXBsZW1lbnRvdmFuw6kgb2JtZWR6ZW5pZSBwcmUgcHLDrXN0dXAgcHJpaGzDoXNlbsOpaG8gcG91xb7DrXZhdGXEvmEgKG5hcHIuIHByaSBzbHXFvmJlIGBERUxFVEUgL2FwaS9zdHVkZW50L3tpZH1gKS4gCkFrIG5pZSBqZSB6bWllbmVuw6kgxb5pYWRuZSB0YWvDqXRvIG9ibWVkemVuaWUgcHJpIHNsdcW+YmUsIG3DtMW+ZSBqdSBkb3B5dG92YcWlIHXEjWl0ZcS+IGFqIMWhdHVkZW50IGEgc3ByYWNvdmFuaWUgaWNoIGRvcHl0dSBtdXPDrQpiecWlIHJvdm5ha8OpLiBSb3psw63FoWVuaWUgcHLDrXN0dXB1IHVyxI10ZSBuYSB6w6FrbGFkZSBhdXRlbnRpZmlrb3ZhbmVqIGVudGl0eS4gCgpWIHByw61wYWRlIG5lZG9zdGF0b8SNbsO9Y2ggb3Byw6F2bmVuw60gcHJpaGzDoXNlbsOpaG8gcG91xb7DrXZhdGXEvmEgcHJlIHZ5a29uYW5pZSBkb3B5dHUgdnLDocWldGUgb2Rwb3ZlxI8gcyBrw7Nkb20gNDAzLgoKIyMgU3B1c3RlbmllCgpXZWJvdsO6IGFwbGlrw6FjaXUgaW1wbGVtZW50dWp0ZSBwb21vY291IGZyYW1ld29ya3UgSmVyc2V5IChyZWZlcmVuxI1uw6EgaW1wbGVtZW50w6FjaWUgSkFYLVJTIMWhdGFuZGFyZHUpIGFrbyB0enYuICoqJ3N0YW5kYWxvbmUnCndlYm92w7ogYXBsaWvDoWNpdSoqLiBWw71zdHVwb20gcmllxaFlbmlhIG11c8OtIGJ5xaUgc3B1c3RpdGXEvm7DvSBKQVIgc8O6Ym9yLiBIVFRQIHNlcnZlciBhcGxpa8OhY2llIG3DoSBwb8SNw7p2YcWlIG5hIHBvcnRlIDgwODAuCgpLb25maWd1csOhY2l1IHNwdXN0ZW5pYSBIVFRQIHNlcnZlcmEgamUgbW/Fvm7DqSBuw6Fqc8WlIHYgdHJpZWRlIFtBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25dKC4vc3JjL21haW4vamF2YS9zay9zdHViYS9mZWkvdWltL3ZzYS9wcjIvQXBwbGljYXRpb25Db25maWd1cmF0aW9uLmphdmEpLiAKSmVqIGhvZG5vdHkgamUgbW/Fvm7DqSBtZW5pxaUgcG9tb2NvdSB0enYuICdlbnZpcm9ubWVudCB2YXJpYWJsZXMnLiBWw71jaG9kemllIGhvZG5vdHkgamVkbm90bGl2w71jaCBhdHJpYsO6dG92IG5lbWXFiHRlLgoKVHJpZWR5IG9ic2FodWrDumNlIGRlZmluw61jaWUgamVkbm90bGl2w71jaCBzbHXFvmllYiAodHp2LiAncmVzb3VyY2UgY2xhc3MnKSBhbm90b3ZhbsOpIGFub3TDoWNpb3UgYEBQYXRoYCBhIHRyaWVkeSByb3rFoWlydWrDumNlCmZ1bmtjaW9uYWxpdHUgSFRUUCBzZXJ2ZXJhIGFub3RvdmFuw6kgYW5vdMOhY2lvdSBgQFByb3ZpZGVyYCBzw7ogYXV0b21hdGlja3kgc2tlbm92YW7DqSBhIHByaWRhbsOpIGRvIEhUVFAgc2VydmVyYSBwcmkgxaF0YXJ0ZQp0cmllZG91IFtKQVhSU0FwcGxpY2F0aW9uQ29uZmlndXJhdGlvbl0oLi9zcmMvbWFpbi9qYXZhL3NrL3N0dWJhL2ZlaS91aW0vdnNhL3ByMi9KQVhSU0FwcGxpY2F0aW9uQ29uZmlndXJhdGlvbi5qYXZhKS4KSW1wbGVtZW50w6FjaXUgdGVqdG8gdHJpZWR5IG5pZSBqZSBudXRuw6kgbWVuacWlLgoKRW1iZWRvdmFuw70gSFRUUCBzZXJ2ZXIgamUgbmFrb25maWd1cm92YW7DvSBhIHphcG51dMO9IHYgaGxhdm5laiB0cmllZGUgW1Byb2plY3QyQXBwbGljYXRpb25dKC4vc3JjL21haW4vamF2YS9zay9zdHViYS9mZWkvdWltL3ZzYS9wcjIvUHJvamVjdDJBcHBsaWNhdGlvbi5qYXZhKS4KQWsgamUgcG90cmVibsOhIGluaWNpYWxpesOhY2lhLCBhbGVibyBqZSBwb3RyZWJuw6kgc3B1c3RpxaUgxL51Ym92b2xuw70ga8OzZCBwcmkgxaF0YXJ0ZSBhcGxpa8OhY2llICh0ZXNuZSBwbyDFoXRhcnRlIEhUVFAgc2VydmVyYSkKamUgbW/Fvm7DqSB2eXXFvmnFpSBtZXTDs2R1IGBwb3N0U3RhcnQoKWAgdiB0ZWp0byB0cmllZGUuIEltcGxlbWVudMOhY2l1IG1ldMOzZCBgbWFpbmAgYSBgc3RhcnRTZXJ2ZXJgIG5lbWXFiHRlLgoKIyMgSG9kbm90ZW5pZQoKKipaYWRhbmllIGplIGhvZG5vdGVuw6kgMTUgYm9kbWkuIFZ5cHJhY292YW5pZSBqZSBudXRuw6kgb2RvdnpkYcWlIGRvIDEwLjA1LjIwMjMgMjM6NTkuKioKClphZGFuaWUgc2kgbmFrbG9udWp0ZSB6IHJlcG96aXTDoXJhIHphZGFuaWEuIFN2b2plIHZ5cHJhY292YW5pZSBuYWhyYWp0ZSBkbyB2w6HFoWhvIHJlcG96aXTDoXJhIHByZSB0b3RvIHphZGFuaWUgcG9tb2NvdQpwcm9ncmFtdSBHaXQgKGdpdCBjb21taXQgKyBnaXQgcHVzaCkuIFZ5cHJhY292YW5pZSBtw7TFvmV0ZSAicHVzaG8tdmHFpSIgcHJpZWJlxb5uZS4gTsOhem92IEphdmEgYmFsw63EjWthIG5lbWXFiHRlLiAKTmVwcmVzw7p2YWp0ZSBhbmkgbmVtZcWIdGUgc8O6Ym9yeSBwcmlwcmF2ZW7DqSB2IHphZGFuw60gcG9raWHEviBuaWUgamUgc3Rhbm92ZW7DqSBpbmFrIGFsZWJvIHNpIHRvIGltcGxlbWVudMOhY2lhIHJpZcWhZW5pYQp6YWRhbmlhIHZ5c2xvdmVuZSB2ecW+YWR1amUgKG5hcHIuIGRvcGxuZW5pZSB0cmllZCBlbnTDrXQgKGA8Y2xhc3M+YCB0YWcpIHYgc8O6Ym9yZSBgcGVyc2lzdGVuY2UueG1sYCkuCgoqKsOacHJhdnkgcG9tLnhtbCBzw7pib3J5IHPDuiB6YWvDoXphbsOpKiogbWltbyDEj2FsZWogdXZlZGVuw71jaCB6bWllbjoKCi0gUHJpZGFuaWUgesOhdmlzbG9zdGkgbmEgZHJpdmVyIGRhdGFiw6F6eSBwb2TEvmEgdmxhc3Ruw6lobyB2w71iZXJ1LiBQb3ZvbGVuw6kgU1FMIGRhdGFiw6F6eToKICAgIC0gTXlTUUwKICAgIC0gT3JhY2xlREIKICAgIC0gRGVyYnkKICAgIC0gUG9zdGdyZVNRTCAoYnVkZSBwb3XFvml0w6EgYWtvIHRlc3RvdmFjaWEgZGF0YWLDoXphIHByaSBvcHJhdmUpCiAgICAtIEgyCi0gRG9wbG5lbmllIGluZm9ybcOhY2nDrSBvIGF1dG9yb3ZpIChkZXZlbG9wZXJvdmksIHRhZyBgPGRldmVsb3BlcnM+PGRldmVsb3Blcj5gKQoKKipOw6F6b3YgYHBlcnNpc3RlbmNlLXVuaXRgKiogdiBzw7pib3JlIFtwZXJzaXN0ZW5jZS54bWxdKHNyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9wZXJzaXN0ZW5jZS54bWwpICoqbmVtZcWIdGUqKi4gUHJlCnZsYXN0bsOpIG90ZXN0b3ZhbmllIGFwbGlrw6FjaWUgbcO0xb50ZSBpbXBsZW1lbnRvdmHFpSB2bGFzdG7DqSBqVW5pdCB0ZXN0eSB2IHByaWXEjWlua3UgYHNyYy90ZXN0L2phdmFgIGFsZWJvIHZ5dcW+acWlIEludGVsbGlKCkhUVFAga2xpZW50YSB2IHByaWXEjWlua3UgYHNyYy90ZXN0L2h0dHBgLgpQb3XFvml0w6EgZGF0YWLDoXphIHNhIG11c8OtIHZvbGHFpSAqKnZzYV9wcjIqKiBhIG11c8OtIG1hxaUgdnl0dm9yZW7DqWhvIHBvdcW+w612YXRlxL5hIHMgKiptZW5vbSAndnNhJyBhIGhlc2xvbSAndnNhJyoqLiBQcmUKdGlldG8gw7rEjWVsaSBtw7TFvnRlIHZ5dcW+acWlIHPDumJvciBbc3RhcnRlci5wb3N0Z3Jlcy5zcWxdKGNvbmZpZ3Mvc3RhcnRlci5wb3N0Z3Jlcy5zcWwpICh1csSNZW7DvSBwcmUgZGF0YWLDoXp1IFBvc3RncmVTUUwpLgoKSW1wbGVtZW50b3ZhbsOpIHdlYm92w6kgc2x1xb5ieSBtdXNpYSBrb256dW1vdmHFpSB0ZWzDoSBkb3B5dG92IGEgcHJvZHVrb3ZhxaUgb2Rwb3ZlZGUgdm8gZm9ybcOhdGUgSlNPTiAoYXBwbGljYXRpb24vanNvbikuIApWIHLDoW1jaSBwcm9qZWt0dSBqZSBzcHJhY292YW5pZSBKU09OIGZvcm3DoXR1IHXFviBuYWtvbmZpZ3Vyb3ZhbsOpLgoKSG9kbm90acWlIHNhIGJ1ZGUgaWJhIG1hc3Rlci9tYWluIGJyYW5jaC4gS3bDtGxpIHRlc3RvbSBhIHpyw71jaGxlbml1IG9wcmF2b3ZhbmlhIGplIG51dG7DqSBkb2Ryxb5hxaUgcG9reW55IGEgxaF0cnVrdMO6cnUKcHJvamVrdHUsIGFrbyBqZSBzdGFub3ZlbsOpIHYgemFkYW7DrSEgSWJhIGvDs2QgcG9zbGVkbmVqIHZlcnppZSB2eXByYWNvdmFuaWEgKHQuai4geiBwb3NsZWRuw6lobyBjb21taXQtdSkgZG8gdGVybcOtbnUKb2RvdnpkYW5pYSBzYSBiZXJpZSBkbyDDunZhaHkuIE9rcmVtIHRlc3RvdiBzYSBidWRlIGvDs2QgYSBmdW5rY2lvbmFsaXRhIGtvbnRyb2xvdmHFpSBhaiBtYW51w6FsbmUuIEhvZG5vdGnFpSBzYSBidWTDuiBpYmEKc2tvbXBpbG92YXRlxL5uw6kgYSBzcHVzdGl0ZcS+bsOpIHJpZcWhZW5pYSEKCiMjIyBTYW5pdHkgY2hlY2sgdGVzdAoKUHJvamVrdCBvYnNhaHVqZSB0ZXN0IHR6di4gInNhbml0eS1jaGVjayIsIGt0b3LDvSBrb250cm9sdWplLCDEjWkgdsOhxaEgcHJvamVrdCBkb2Ryxb51amUgcG9reW55IHphZGFuaWEgYSB0YWsgxI1pIGJ1ZGUgCmFrY2VwdG92YW7DvSBuYSBvcHJhdnUuIFRlc3QgamUgbmFww61zYW7DvSB2IHRyaWVkZSBbU2FuaXR5Q2hlY2tUZXN0XShzcmMvdGVzdC9qYXZhL3NrL3N0dWJhL2ZlaS91aW0vdnNhL3ByMi9TYW5pdHlDaGVja1Rlc3QuamF2YSkuClByZSBzcHVzdGVuaWUgdGVzdHUgc3RhxI3DrSB2eWtvbmHFpSAqKm1hdmVuKiogbGlmZWN5Y2xlIGdvYWwgKip0ZXN0KiosIHJlc3AuIHNwdXN0acWlIHByw61rYXo6CgpgYGBzaGVsbAptdm4gdGVzdApgYGAKCkFsZWJvIG90dm9yacWlIHRlc3RvdmFjw60gc8O6Ym9yIGEgc3B1c3RpxaUgalVuaXQgdGVzdCAoemVsZW7DoSDFocOtcGthIHZlZMS+YSBuw6F6dnUgdHJpZWR5KS4gQWsgdGVzdCBza29uxI3DrSDDunNwZcWhbmUgKHQuai4gYmV6IGNoeWJ5KSwKdsOhxaEgcHJvamVrdCBqZSBwcmlwcmF2ZW7DvSBuYSBvcHJhdnUuCgojIyMgTG9nb3ZhbmllIGEgdsO9cGlzeQoKViByw6FtY2kgcHJvamVrdHUgamUgbmFrb25maWd1cm92YW7DoSBrbmnFvm5pY2EgcHJlIGxvZ292YW5pZSAoZm9ybcOhdG92YW7DqSB2w71waXN5KSBbTG9nYmFja10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL2xvZ2JhY2spLiBUw7p0byBrbmnFvm5pY3UgbcO0xb50ZSBwb3XFvmnFpSBuYW1pZXN0bwpKYXZhIGBTeXN0ZW0ub3V0LnByaW50bG5gIHByZSBmb3Jtw6F0b3ZhbsO9IHbDvXBpcyAobmFwcsOta2xhZCBha28gamUgdiBgU2FuaXR5Q2hlY2tUZXN0YCB0cmllZGUpLiBUw6F0byBrbmnFvm5pY2EgamUgdnl1xb5pdMOhCmFrbyBwcmltw6Fybnkgc3DDtHNvYiB2w71waXN1IHByZSBwcmlwcmF2ZW7DqSB0cmllZHkgcHJvamVrdHUuCgpLbmnFvm5pY3UgamUgcG90cmVibsOpIGluaWNpYWxpem92YcWlIHYga2HFvmRlaiB0cmllZGUga2RlIGp1IGNoY2V0ZSBwb3XFvmnFpSByaWFka29tOgoKYGBgSmF2YQpwcml2YXRlIHN0YXRpYyBmaW5hbCBvcmcuc2xmNGouTG9nZ2VyIGxvZz1vcmcuc2xmNGouTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoPG7DoXpvdiB0cmllZHkga3RvcsO6IHRyZWJhIGxvZ292YcWlPi5jbGFzcyk7CmBgYAoKTsOhc2xlZG5lIGplIG1vxb5uw6kgdnl1xb5pxaUgbWV0w7NkeSBha28gYGxvZy5pbmZvYCwgYGxvZy53YXJuYCDEjWkgYGxvZy5lcnJvcmAgdiBwcsOtcGFkZSB2w71uaW1pZWsuCgojIyBCb251cyAoM2IpCgpWIHLDoW1jaSB6YWRhbmlhIG3DoXRlIG1vxb5ub3PFpSBpbXBsZW1lbnRvdmHFpSByb3rFocOtcmVuaWUgZnVua2Npb25hbGl0eSBvIHR6di4gc3Ryw6Fua292YW5pZSBvZHBvdmVkw60gc2x1xb5pZWIgemEgMyBib251c292w6kgYm9keS4KUHJlIGltcGxlbWVudMOhY2l1IGJvbnVzdSBpbXBsZW1lbnR1anRlIFtPcGVuQVBJIDMgxaFwZWNpZmlrw6FjaXUgYm9udXNvdsO9Y2ggd2Vib3bDvWNoIHNsdcW+aWViXSguL3NyYy9tYWluL3Jlc291cmNlcy9ib251cy1vcGVuYXBpMy5zcGVjLnlhbWwpCnMgcm96xaHDrXJlbsOtbSBzdHLDoW5rb3ZhbmlhLiBTdHLDoW5rb3ZhbmllIG3DoSBwcmFjb3ZhxaUgcyB2YcWhb3UgaW1wbGVtZW50w6FjaW91IHJvemhyYW7DrSBQYWdlIGEgUGFnZWFibGUgeiAxLiBzZW1lc3Ryw6FsbmVobyBwcm9qZWt0dS4KQm9udXNvdsOhIMWhcGVjaWZpa8OhY2lhIHphaMWVxYhhIG5vdsO6IGRlZmluw61jaXUgd2Vib3ZlaiBzbHXFvmJ5IGBHRVQgL2FwaS9zZWFyY2gvdGhlc2VzYCwga3RvcsOhIG5haHLDoWR6YSBwcmVkY2jDoWR6YWrDumN1IGRlZmluw61jaXUgdGVqdG8gd2Vib3ZlagpzbHXFvmJ5IHpvIHphZGFuaWEuCgpCb251c292w6kgdnlwcmFjb3ZhbmllIGJ1ZGUgdXpuYW7DqSBqZWRpbmUgdiBwcsOtcGFkZSBhayBqZSBpbXBsZW1lbnRvdmFuw6kgY2Vsw6kgemFkYW5pZS4K readmeEtag: '"b8ade4eb277e9ce701ea3dbe537ab7589000b52e"' readmeLastModified: Sat, 27 May 2023 18:47:48 GMT repositoryId: 641824574 description: >- Referenčná implementácia a súbor testov pre hodnotenie 2. semestrálneho zadanie z predmetu B-VSA vyučovanom na FEI STU v letnom semestri akademickom roku 22/23 created: '2023-05-17T08:40:28Z' updated: '2023-05-17T21:50:29Z' language: Java archived: false stars: 0 watchers: 0 forks: 0 owner: Interes-Group logo: https://avatars.githubusercontent.com/u/62511873?v=4 license: Unlicense repoEtag: '"775afa39f79006b38a6d860944a0643636592f980ad73e89d72b9cde1a1fd168"' repoLastModified: Wed, 17 May 2023 21:50:29 GMT category: Low-level Tooling foundInMaster: true - source: openapi3 tags repository: https://github.com/wasedatime/wasedatime.github.io v3: true repositoryMetadata: base64Readme: IyB3YXNlZGF0aW1lLW9wZW5hcGk= readmeEtag: '"8760599935f7cd10bb213b376f86ca797a367548"' readmeLastModified: Wed, 13 Dec 2023 04:49:31 GMT repositoryId: 311374383 description: API documentation website using swagger-ui created: '2020-11-09T15:02:09Z' updated: '2023-07-18T09:13:10Z' language: HTML archived: false stars: 0 watchers: 0 forks: 0 owner: wasedatime logo: https://avatars.githubusercontent.com/u/32608719?v=4 repoEtag: '"4e2be299452293b1a165020a23ac13f262418f6caecb2b6db1e0ac63c693909b"' repoLastModified: Tue, 18 Jul 2023 09:13:10 GMT foundInMaster: true category: - Data Validators - Parsers id: c13102582ceb98d5f8b9d4be146b9fb3 - source: openapi3 tags repository: https://github.com/tufanoruk/enkudo v3: true id: c97e3804452bcda11ec8d879c33f5f84 repositoryMetadata: base64Readme: >- IyBTYW1wbGUgRW5rdWRvIE5CSSBBUEkgV29yawoKVGhpcyBwcm9qZWN0IGluY2x1ZGVzIHNhbXBsZSBFbmt1ZG8gc3Vic2NyaXB0aW9uIEFQSSBkZWZpbml0aW9uIGluIE9wZW5BUEkzLjAgIFlBTUwgZG9jdW1lbnRzLgoKLSAiRW5rdWRvX0RTUF9Db21tb25EYXRhLnlhbWwiIGRlZmluZXMgY29tbW9uIGRhdGEgZGVmaW5pdGlvbnMgd2l0aGluIHRoZSBBUEkgYW5kIHJlZmVyZW5jZWQgZnJvbSBvdGhlciBBUEkgKFlBTUwpIGRvY3VtZW50cy4gWW91IGRvIG5vdCBuZWVkIHRvIHByb3ZpZGUgdGhpcyBkb2N1bWVudCBhbnkgb2YgdmFsaWRhdGlvbiBhbmQvb3IgY29kZSBnZW5lcmF0aW9uIHByb2dyYW1zLgotICJFbmt1ZG9fRFNQX1N1YnNjcmlwdGlvbi55YW1sIiBFbmt1ZG8gU3Vic2NyaXB0aW9uIEFQSSBkZWZpbml0aW9uLgoKVGhlcmUgYXJlIGFsc28gYSBjb3VwbGUgb2YgaGVscGVyIHNjcmlwdHMgdG8gdmFsaWRhdGUgdGhlIFlBTUwgZmlsZXMgd2l0aCByZXNwZWN0IHRvIE9wZW5BUEkgMy4wIHNwZWNpZmljYXRpb24gYW5kIGNvZGUgZ2VuZXJhdGlvbi4KCiJ2YWxpZGF0ZS5zaCIgdmFsaWRhdGVzIGdpdmVuIFlBTUwgZG9jdW1lbnQgdXRpbGl6aW5nIHR3byB2YWxpZGF0b3JzLgoKLSAib3BlbmFwaS1zcGVjLXZhbGlkYXRvciIgYW5kCi0gIm9wZW5hcGktZ2VuZXJhdG9yIHZhbGlkYXRlIiAKCiJnZW5jb2RlLnNoIiBpcyBhIHNpbXBsZSB3cmFwcGVyIHRvIG9wZW5hcGktZ2VuZXJhdG9yIGNvZGUgZ2VuZXJhdGlvbi4KCllvdSBuZWVkIHRvIGluc3RhbGwgdGhlc2UgdHdvIHByb2dyYW1zIGluIHlvdXIgZW52aXJvbm1lbnQuICAKClRvIGluc3RhbGwgb3BlbmFwaS1nZW5lcmF0b3IgKGFuZCBvdGhlciBMaW51eCBsaWtlIHRvb2xzKSAgb24gTWFjT1MgSSBwcmVmZXIgW2JyZXddKGh0dHBzOi8vYnJldy5zaCkuIFRvIGluc3RhbGwgaXQgdmlhIGJyZXcsCgpgYGBiYXNoCiUgYnJldyBpbnN0YWxsIG9wZW5hYXBpLWdlbmVyYXRvcgpgYGAKCiJvcGVuYXBpLXNwZWMtdmFsaWRhdG9yIiBpcyBweXRob24gc2NyaXB0LiBZb3UgY2FuIGluc3RhbGwgaXQgdmlhIHBpcC4KCmBgYGJhc2gKJSBwaXAgaW5zdGFsbCBvcGVuYXBpLXNwZWMtdmFsaWRhdG9yCmBgYAoKVG8gdmFsaWRhdGUgYSBZQU1MIGZpbGUsCgpgYGBiYXNoCi4vdmFsaWRhdGUuc2ggRW5rdWRvX0RTUF9TdWJzY3JpcHRpb24ueWFtbApgYGAKClRvIGdlbmVyYXRlIHNheSBnbyBjbGllbnQgY29kZSBmb3IgRW5rdWRvIFN1YnNjcmlwdGlvbiBOQkksCgpgYGBiYXNoCi4vZ2VuY29kZS5zaCBFbmt1ZG9fRFNQX1N1YnNjcmlwdGlvbi55YW1sIGdvCmBgYAoKVGhpcyBjb21tYW5kIGNyZWFydGVzIGEgImdvX3NyYyIgZGlyZWN0b3J5IHdpdGggY2xpZW50IEFQSSBsaWJyYXJ5IGluIGdvbGFuZy4gVGhlcmUgaXMgYWxzbyBhIHNpbXBsZSBnbyBjbGllbnQgcHJvamVjdCAoZ28tZW5rdWRvLWNsaWVudCkgd2hpY2ggdXRpbGl6ZXMgdGhpcyBvcGVuYXBpLWdlbmVyYXRvciBnZW5lcmF0ZWQgY2xpZW50IEFQSSBsaWJyYXJ5LgoKVG8gZ2V0IHRoZSBsaXN0IG9mIGxhbmd1YWdlcyB0aGF0IG9wZW5hcGktZ2VuZXJhdG9yIGNhbiBnZW5lcmF0ZSBjb2RlIGZvciBjbGllbnQgQVBJIGxpYnJhcnkgYW5kIHNlcnZlciBzdGFiLAoKYGBgYmFzaAolIG9wZW5hcGktZ2VuZXJhdG9yIGxpc3QKYGBgCgpUaGVyZSBhcmUgc2FtcGxlIGdvIHNldmVyIGFuZCBjbGllbnQgcHJvZ3JhbXMgdXRpbGl6aW5nIGdlbmVyYXRlZCBjb2RlIGJ5IG9wZW5hcGktZ2VuZXJhdG9yLgoKLSBnby1zZXJ2ZXJfc3JjIGlzIHRoZSBnZW5lcmF0ZWQgc2VydmVyIGNvZGUgZGlyZWN0b3J5LiBJdCBpbmNsdWRlcyBnby5tb2QgYW5kIG1haW4uZ28gZmlsZXMgd2hpY2ggYXJlIG1vZGlmaWVkIGZyb20gdGhlIGdlbmVyYXRlZCBjb2RlIGFuIHByZXZlbnRlZCBmcm9tIG92ZXJ3cml0dGVuIGR1cmluZyB0aGUgZm9sbG93aW5nIGNvZGUgZ2VuZXJhdGlvbnMuCi0gZ28tZW5rdWRvLWNsaWVudCBpcyBjb250YWlucyBhIHZlcnkgc2ltcGxlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgZ29fc3JjIG9wZW5hcGktZ2VuZXJhdG9yIGdlbmVyYXRlZCBjbGllbnQgQVBJIGxpYnJhcnkuCiAKU2FtcGxlIGdvIHNlcnZlciBleGVjdXRlYWJsZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSB1cG9uIHNlcnZlciBjb2RlIGdlbmVyYXRpb24sIGFuZCBjYW4gYmUgZXhlY3V0ZWQuIEl0IHNlcnZlcyBBUElzIGJ1dCByZXR1cm5zICJ1bmltcGxlbWVudGVkIiBmYWlsdXJlLgoKYGBgYmFzaAolIC4vZ2VuY29kZS5zaCBFbmt1ZG9fRFNQX1N1YnNjcmlwdGlvbi55YW1sIGdvLXNlcnZlcgolIGNkIGdvLXNlcnZlcl9zcmMKJSAuL2Vua3Vkby1kc3AtZ28tc2VydmVyCmBgYAoKU2FtcGxlIGdvIGZpbGUgaW4gZ28tZW5rdWRvLWNsaWVudCBleHBsYW5pcyBob3cgdG8gcHJlcGFyZSwgYnVpbGQgYW5kIHJ1biB0aGUgY2xpZW50Lgo= readmeEtag: '"ac3fac8faa165008a71d75743bd02f6140abc6b0"' readmeLastModified: Tue, 26 Jul 2022 07:08:07 GMT repositoryId: 511254274 description: null created: '2022-07-06T18:41:58Z' updated: '2025-04-29T05:32:53Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: tufanoruk logo: https://avatars.githubusercontent.com/u/1410205?v=4 repoEtag: '"fcbcfab3918039cc03e8a2f37142233b6c1ecf153b6f66be0417bfb70f25df65"' repoLastModified: Tue, 29 Apr 2025 05:32:53 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/futurum-dev/futurum.openapi-to-plantuml v3: true id: 146775bbabca2a4943d3d333afedf506 repositoryMetadata: base64Readme: >- IyBGdXR1cnVtLk9wZW5BcGkgdG8gUGxhbnRVbWwKCiFbbGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9mdXR1cnVtLWRldi9mdXR1cnVtLm9wZW5hcGktdG8tcGxhbnR1bWw/c3R5bGU9Zm9yLXRoZS1iYWRnZSkKCkNyZWF0ZXMgW1BsYW50VW1sXShodHRwczovL3BsYW50dW1sLmNvbSkgZGlhZ3JhbXMgZnJvbSBbT3BlbkFwaV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnKSBzcGVjIGZpbGVzLgoKIyMgRXhhbXBsZSAxCltPcGVuQXBpIHNwZWNdKC4vb3BlbmFwaS9vcGVuYXBpLXBldHN0b3JlLmpzb24pIHRha2VuIGZyb20gW2hlcmVdKGh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pbykKCiMjIyBPcGVuQXBpIGRpYWdyYW0KIVtPcGVuQXBpIGRpYWdyYW1dKC4vZG9jcy9vcGVuYXBpLXBldHN0b3JlLW9wZW5hcGkuc3ZnKQoKIyMjIE9wZW5BcGkgVHlwZSBkaWFncmFtCiFbT3BlbkFwaSBUeXBlIGRpYWdyYW1dKC4vZG9jcy9vcGVuYXBpLXBldHN0b3JlLW9wZW5hcGktdHlwZS5zdmcpCgojIyBFeGFtcGxlIDIKW09wZW5BcGkgc3BlY10oLi9vcGVuYXBpL29wZW5hcGktcGV0c3RvcmUtc2ltcGxlLnlhbWwpCgojIyMgT3BlbkFwaSBkaWFncmFtCiFbT3BlbkFwaSBkaWFncmFtXSguL2RvY3Mvb3BlbmFwaS1wZXRzdG9yZS1zaW1wbGUtb3BlbmFwaS5zdmcpCgojIyMgT3BlbkFwaSBUeXBlIGRpYWdyYW0KIVtPcGVuQXBpIFR5cGUgZGlhZ3JhbV0oLi9kb2NzL29wZW5hcGktcGV0c3RvcmUtc2ltcGxlLW9wZW5hcGktdHlwZS5zdmcpCgojIyBIb3cgdG8gdXNlIGl0CiMjIyBDb25zb2xlClVzZSAqZnV0dXJ1bS5vcGVuYXBpLXRvLXBsYW50dW1sLWNvbnNvbGUqIHByb2plY3QKCiMjIyMgRmlsZQpVc2UgKmZpbGUqIGZvbGxvd2VkIGJ5IGZpbGUgcGF0aApgYGAKZmlsZSAtLXBhdGggIi4uLy4uLy4uLy4uL29wZW5hcGkvb3BlbmFwaS1wZXRzdG9yZS5qc29uIgpgYGAKCiMjIyMgRGlyZWN0b3J5ClVzZSAqZGlyZWN0b3J5KiBmb2xsb3dlZCBieSBkaXJlY3RvcnkgcGF0aApgYGAKZGlyZWN0b3J5IC0tcGF0aCAiLi4vLi4vLi4vLi4vb3BlbmFwaSIKYGBgCgojIyMjIERpYWdyYW0gQ29uZmlndXJhdGlvbgojIyMjIFRoZW1lClVzZSAqLS10aGVtZSogdG8gc3BlY2lmeSB0aGUgUGxhbnRVbWwgdGhlbWUKYGBgCi0tdGhlbWUgImJsdWVwcmludCIKYGBgCipOT1RFIC0gZGVmYXVsdHMgdG8gbm8gdGhlbWUqCgojIyMjIFNob3cgbm90ZXMKVXNlICotLXNob3dub3RlcyogdG8gc3BlY2lmeSBpZiBQbGFudFVtbCBzaG91bGQgc2hvdyBub3RlcwpgYGAKLS1zaG93bm90ZXMgInRydWUiCmBgYAoqTk9URSAtIGRlZmF1bHRzIHRvIG5vIG5vdGVzKgoKIyMjIERvY2tlciAtIFVzZSB3aXRoIG11bHRpcGxlIE9wZW5BcGkgc3BlYyBmaWxlcwoKYGBgCmRvY2tlciBydW4gLS1ybSAtaXQgLXYgJChwd2QpL29wZW5hcGk6L29wZW5hcGkgZnV0dXJ1bS5vcGVuYXBpLXRvLXBsYW50dW1sLWRpcmVjdG9yeQpgYGAKCiMjIyMgRGlhZ3JhbSBDb25maWd1cmF0aW9uCiMjIyMgVGhlbWUKVXNlICotLXRoZW1lKiB0byBzcGVjaWZ5IHRoZSBQbGFudFVtbCB0aGVtZQpgYGAKLS10aGVtZSAiYmx1ZXByaW50IgpgYGAKKk5PVEUgLSBkZWZhdWx0cyB0byBubyB0aGVtZSoKCmUuZy4KYGBgCmRvY2tlciBydW4gLS1ybSAtaXQgLXYgJChwd2QpL29wZW5hcGk6L29wZW5hcGkgZnV0dXJ1bS5vcGVuYXBpLXRvLXBsYW50dW1sLWRpcmVjdG9yeSAtLXRoZW1lICJibHVlcHJpbnQiCmBgYAoKIyMjIyBTaG93IG5vdGVzClVzZSAqLS1zaG93bm90ZXMqIHRvIHNwZWNpZnkgaWYgUGxhbnRVbWwgc2hvdWxkIHNob3cgbm90ZXMKYGBgCi0tc2hvd25vdGVzICJ0cnVlIgpgYGAKKk5PVEUgLSBkZWZhdWx0cyB0byBubyBub3RlcyoKCmUuZy4KYGBgCmRvY2tlciBydW4gLS1ybSAtaXQgLXYgJChwd2QpL29wZW5hcGk6L29wZW5hcGkgZnV0dXJ1bS5vcGVuYXBpLXRvLXBsYW50dW1sLWRpcmVjdG9yeSAtLXNob3dub3RlcyAidHJ1ZSIKYGBgCgojIyMgRG9ja2VyIC0gVXNlIHdpdGggaW5kaXZpZHVhbCBPcGVuQXBpIHNwZWMgZmlsZXMKIyMjIyBPcGVuQXBpIGRpYWdyYW0KYGBgCmNhdCAuL29wZW5hcGkvb3BlbmFwaS1wZXRzdG9yZS5qc29uIHwgZG9ja2VyIHJ1biAtLXJtIC1hIHN0ZGluIC1hIHN0ZG91dCAtaSBmdXR1cnVtLm9wZW5hcGktdG8tcGxhbnR1bWwtc3RkLWluLW91dCBvcGVuYXBpIHw+IC4vb3BlbmFwaS9vcGVuYXBpLXBldHN0b3JlLW9wZW5hcGkucHVtbApgYGAKYGBgCmNhdCAuL29wZW5hcGkvb3BlbmFwaS1wZXRzdG9yZS1zaW1wbGUueWFtbCB8IGRvY2tlciBydW4gLS1ybSAtYSBzdGRpbiAtYSBzdGRvdXQgLWkgZnV0dXJ1bS5vcGVuYXBpLXRvLXBsYW50dW1sLXN0ZC1pbi1vdXQgb3BlbmFwaSB8PiAuL29wZW5hcGkvb3BlbmFwaS1wZXRzdG9yZS1zaW1wbGUtb3BlbmFwaS5wdW1sCmBgYAoKIyMjIyBPcGVuQXBpIFR5cGUgZGlhZ3JhbQpgYGAKY2F0IC4vb3BlbmFwaS9vcGVuYXBpLXBldHN0b3JlLmpzb24gfCBkb2NrZXIgcnVuIC0tcm0gLWEgc3RkaW4gLWEgc3Rkb3V0IC1pIGZ1dHVydW0ub3BlbmFwaS10by1wbGFudHVtbC1zdGQtaW4tb3V0IG9wZW5hcGktdHlwZSB8PiAuL29wZW5hcGkvb3BlbmFwaS1wZXRzdG9yZS1vcGVuYXBpLXR5cGUucHVtbApgYGAKYGBgCmNhdCAuL29wZW5hcGkvb3BlbmFwaS1wZXRzdG9yZS1zaW1wbGUueWFtbCB8IGRvY2tlciBydW4gLS1ybSAtYSBzdGRpbiAtYSBzdGRvdXQgLWkgZnV0dXJ1bS5vcGVuYXBpLXRvLXBsYW50dW1sLXN0ZC1pbi1vdXQgb3BlbmFwaS10eXBlIHw+IC4vb3BlbmFwaS9vcGVuYXBpLXBldHN0b3JlLXNpbXBsZS1vcGVuYXBpLXR5cGUucHVtbApgYGAKCiMjIyMgRGlhZ3JhbSBDb25maWd1cmF0aW9uCiMjIyMgVGhlbWUKVXNlICotLXRoZW1lKiB0byBzcGVjaWZ5IHRoZSBQbGFudFVtbCB0aGVtZQpgYGAKLS10aGVtZSAiYmx1ZXByaW50IgpgYGAKKk5PVEUgLSBkZWZhdWx0cyB0byBubyB0aGVtZSoKCmUuZy4KYGBgCmNhdCAuL29wZW5hcGkvb3BlbmFwaS1wZXRzdG9yZS5qc29uIHwgZG9ja2VyIHJ1biAtLXJtIC1hIHN0ZGluIC1hIHN0ZG91dCAtaSBmdXR1cnVtLm9wZW5hcGktdG8tcGxhbnR1bWwtc3RkLWluLW91dCBvcGVuYXBpIC0tdGhlbWUgImJsdWVwcmludCIgfD4gLi9vcGVuYXBpL29wZW5hcGktcGV0c3RvcmUtb3BlbmFwaS5wdW1sCmBgYAoKIyMjIyBTaG93IG5vdGVzClVzZSAqLS1zaG93bm90ZXMqIHRvIHNwZWNpZnkgaWYgUGxhbnRVbWwgc2hvdWxkIHNob3cgbm90ZXMKYGBgCi0tc2hvd25vdGVzICJ0cnVlIgpgYGAKKk5PVEUgLSBkZWZhdWx0cyB0byBubyBub3RlcyoKCmUuZy4KYGBgCmNhdCAuL29wZW5hcGkvb3BlbmFwaS1wZXRzdG9yZS5qc29uIHwgZG9ja2VyIHJ1biAtLXJtIC1hIHN0ZGluIC1hIHN0ZG91dCAtaSBmdXR1cnVtLm9wZW5hcGktdG8tcGxhbnR1bWwtc3RkLWluLW91dCBvcGVuYXBpIC0tc2hvd25vdGVzICJ0cnVlIiB8PiAuL29wZW5hcGkvb3BlbmFwaS1wZXRzdG9yZS1vcGVuYXBpLnB1bWwKYGBgCgojIyBEb2NrZXIKIyMjIEhvdyB0byBidWlsZCBpdAoKYGBgCmRvY2tlciBidWlsZCAtdCBmdXR1cnVtLm9wZW5hcGktdG8tcGxhbnR1bWwtZGlyZWN0b3J5IC1mIGZ1dHVydW0ub3BlbmFwaS10by1wbGFudHVtbC1kaXJlY3RvcnkvRG9ja2VyZmlsZSAuCmBgYApgYGAKZG9ja2VyIGJ1aWxkIC10IGZ1dHVydW0ub3BlbmFwaS10by1wbGFudHVtbC1zdGQtaW4tb3V0IC1mIGZ1dHVydW0ub3BlbmFwaS10by1wbGFudHVtbC1zdGQtaW4tb3V0L0RvY2tlcmZpbGUgLgpgYGAKCiMjIyBSZW1vdmUgaW1hZ2VzCmBgYApkb2NrZXIgcm1pIGZ1dHVydW0ub3BlbmFwaS10by1wbGFudHVtbC1kaXJlY3RvcnkKYGBgCmBgYApkb2NrZXIgcm1pIGZ1dHVydW0ub3BlbmFwaS10by1wbGFudHVtbC1zdGQtaW4tb3V0CmBgYA== readmeEtag: '"3ef37dc169d123c91a0a9fbde6ea2c89d35e698b"' readmeLastModified: Sat, 06 Aug 2022 09:35:03 GMT repositoryId: 516064302 description: Creates PlantUml diagrams from OpenApi spec files. created: '2022-07-20T16:54:11Z' updated: '2022-07-22T17:42:05Z' language: C# archived: false stars: 0 watchers: 1 forks: 0 owner: futurum-dev logo: https://avatars.githubusercontent.com/u/97805806?v=4 license: MIT repoEtag: '"ffbeff4b5cdfecd6961ca478b75dc2e6ccc94e3c02e46995e4bb2c1cc7806384"' repoLastModified: Fri, 22 Jul 2022 17:42:05 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/deniskyashif/spring-openapi-codegen-demo v3: true id: 153ea28d4d23780b847d4c0c5340782b repositoryMetadata: base64Readme: >- IyBzcHJpbmctb3BlbmFwaS1jb2RlZ2VuLWRlbW8KClRoaXMgcmVwb3NpdG9yeSBkZW1vbnN0cmF0ZXMgaG93IHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgV2ViIEFQSSBzcGVjaWZpY2F0aW9uIGRvY3VtZW50IGZyb20gc291cmNlIGNvZGUgYW5kIGhvdyB0byBnZW5lcmF0ZSBhbiBBUEkgY2xpZW50IGFwcGxpY2F0aW9uIChpbiB2YXJpb3VzIGxhbmd1YWdlcykgZnJvbSBpdC4gCgojIyBHZW5lcmF0ZSBPcGVuQXBpIHNwZWMgdXNpbmcgY29kZSBhbm5vdGF0aW9ucwoKVGhpcyBwYXJ0IHJlcXVpcmVzIFtKYXZhIDhdKGh0dHBzOi8vd3d3Lm9yYWNsZS5jb20vamF2YS90ZWNobm9sb2dpZXMvZG93bmxvYWRzLykgYW5kIFtHcmFkbGVdKGh0dHBzOi8vZ3JhZGxlLm9yZy8pLiBbVGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBFeHBsYWluZWRdKGh0dHBzOi8vb2FpLmdpdGh1Yi5pby9Eb2N1bWVudGF0aW9uL3NwZWNpZmljYXRpb24uaHRtbCkKCjEuIEFkZCBgJ29yZy5zcHJpbmdkb2M6c3ByaW5nZG9jLW9wZW5hcGktdWk6MS42LjknYCB0byBnZW5lcmF0ZSBPcGVuQVBJIFVJIGluIHRoZSBicm93c2VyCjIuIEFkZCBgJ2lvLnN3YWdnZXIuY29yZS52Mzpzd2FnZ2VyLWNvcmU6Mi4yLjInYCB0byBpbmNsdWRlIGNvZGUgYW5ub3RhdGlvbnMgZm9yIGRvY3VtZW50aW5nIEFQSSBlbmRwb2ludHMKMy4gRG9jdW1lbnQgdGhlIEFQSSBlbmRwb2ludHMgdXNpbmcgY29kZSBhbm5vdGF0aW9ucyAoc2VlIFtHcmVldGluZ0NvbnRyb2xsZXIuamF2YV0oaHR0cHM6Ly9naXRodWIuY29tL2Rlbmlza3lhc2hpZi9zcHJpbmctb3BlbmFwaS1jb2RlZ2VuLWRlbW8vYmxvYi9tYXN0ZXIvc3JjL21haW4vamF2YS9jb20vZXhhbXBsZS9yZXN0c2VydmljZS9HcmVldGluZ0NvbnRyb2xsZXIuamF2YSkpLgo0LiBSdW4gdGhlIHdlYiBhcHAgYGdyYWRsZSBib290UnVuYCBhbmQgbmF2aWdhdGUgdG8gYGxvY2FsaG9zdDo4MDgwL3N3YWdnZXItdWkvaW5kZXguaHRtbGAgdG8gc2VlIHRoZSBpbnRlcmFjdGl2ZSBkb2N1bWVudGF0aW9uLgo1LiBBY2Nlc3MgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBKU09OIGRvY3VtZW50IG9uIGBodHRwOi8vbG9jYWxob3N0OjgwODAvdjMvYXBpLWRvY3NgCgpUbyBnZW5lcmF0ZSB0aGUgT3BlbkFQSSBzcGVjIGFzIGEgZmlsZSwgYWRkIHRoZSBbc3ByaW5nZG9jLW9wZW5hcGktZ3JhZGxlLXBsdWdpbl0oaHR0cHM6Ly9naXRodWIuY29tL3NwcmluZ2RvYy9zcHJpbmdkb2Mtb3BlbmFwaS1ncmFkbGUtcGx1Z2luKSBhbmQgcnVuOiAgCgpgZ3JhZGxlIGNsZWFuIGdlbmVyYXRlT3BlbkFwaURvY3NgIAoKVGhlIGZpbGUgaXMgbG9jYXRlZCBpbiBgPHBhdGgtdG8tcHJvamVjdD4vYnVpbGQvb3BlbmFwaS5qc29uYC4gTWFrZSBzdXJlIG5vIG90aGVyIHByb2Nlc3MgaXMgcnVubmluZyBvbiBwb3J0IGA6ODA4MGAuIAoKIyMgR2VuZXJhdGUgYW4gQVBJIGNsaWVudCBmcm9tIGFuIE9wZW5BUEkgc3BlYwoKVGhlIE9wZW5BUEkgR2VuZXJhdG9yIHJlcXVpcmVzIFtub2RlLmpzXShodHRwczovL25vZGVqcy5vcmcvZW4vKS4gU2VlIHRoZSBpbnN0cnVjdGlvbnMgZm9yIFtpbnN0YWxsYXRpb25dKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9kb2NzL2luc3RhbGxhdGlvbikgYW5kIFt1c2FnZV0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2RvY3MvdXNhZ2UpLgoKTGlzdCB0aGUgYXZhaWxhYmxlIGdlbmVyYXRvcnM6ICAKYG9wZW5hcGktZ2VuZXJhdG9yLWNsaSBsaXN0YAoKVmFsaWRhdGUgdGhlIE9wZW5BcGkgc3BlYyBmaWxlOiAgCmBvcGVuYXBpLWdlbmVyYXRvci1jbGkgdmFsaWRhdGUgLWkgPHBhdGgtdG8+L29wZW5hcGkuanNvbmAKCkdlbmVyYXRlIGEgQyMgQVBJIENsaWVudDogIApgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIGdlbmVyYXRlIC1pIDxwYXRoLXRvPi9vcGVuYXBpLmpzb24gLWcgY3NoYXJwLW5ldGNvcmUgLW8gLi90bXAvQ2xpZW50QXBwL2AK readmeEtag: '"4bbbbb338d2fe68b62dd3f9db9850deac4b6fa5e"' readmeLastModified: Tue, 09 Aug 2022 05:33:15 GMT repositoryId: 522176786 description: >- How to automatically create a Web API specification document from source code and how to generate an API client application (in various languages) from it created: '2022-08-07T10:06:25Z' updated: '2022-08-08T09:15:30Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: deniskyashif logo: https://avatars.githubusercontent.com/u/5999271?v=4 repoEtag: '"6ecf3586821b538e77017b4663ea5659947fdf3d1af99bd668182a3fc209e0f6"' repoLastModified: Mon, 08 Aug 2022 09:15:30 GMT category: - Code Generators - Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/davids13/api-specification-converter v3: true repositoryMetadata: base64Readme: >- IyBvcGVuQVBJQ29udmVydGVyCkEgY29udmVydGVyIEFQSTogU3dhZ2dlciB0byBPcGVuQXBpIDMgb3IgT3BlbkFwaSAzIHRvIFN3YWdnZXIK readmeEtag: '"9f74789c588de42be5f4318d12d93a3e38223df4"' readmeLastModified: Sat, 29 Feb 2020 13:47:40 GMT repositoryId: 243976048 description: 'A converter for API specification: OAS3, swagger, raml' created: '2020-02-29T13:43:38Z' updated: '2020-07-16T22:09:46Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: davids13 logo: https://avatars.githubusercontent.com/u/19639609?v=4 repoEtag: '"492159f983d9f48bf4348730c2c91854a9ad04dfc977c4f1d68c0d98c3ac7f2b"' repoLastModified: Thu, 16 Jul 2020 22:09:46 GMT foundInMaster: true category: Parsers id: 225a855be04f65490701933a0597917c - source: openapi3 tags repository: https://github.com/soxyl/saferpay-openapi v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFNwZWMgZm9yIFNhZmVycGF5IEpTT04gQVBJCgpUaGlzIHJlcG9zaXRvcnkgcHJvdmlkZXMgYW4gT3BlbkFQSSAzLjAgU3BlY2lmaWNhdGlvbiBGaWxlIGRlc2NyaWJpbmcgdGhlIFNhZmVyZXBheSBKU09OIEFQSSBkb2N1bWVudGVkIGF0IGh0dHBzOi8vc2FmZXJwYXkuZ2l0aHViLmlvL2pzb25hcGkgLgoKVGhlIE9wZW5BUEkgc3BlYyBpcyBob3N0ZWQgYXQgaHR0cHM6Ly9hcHAuc3dhZ2dlcmh1Yi5jb20vYXBpcy9zb3h5bC9zYWZlcnBheQoKIyMgUmVnZW5lcmF0ZSBzcGVjCgpgYGAKJCBjb21wb3NlciBpbnN0YWxsIC0td29ya2luZy1kaXIgZ2VuZXJhdG9yCiQgZ2VuZXJhdG9yL2Jpbi9jb25zb2xlIGdlbmVyYXRlID4gb3BlbmFwaS55YW1sCmBgYAoKIyMgR2VuZXJhdGUgYSBDbGllbnQgTG9jYWxseQoKYGBgCmRvY2tlciBydW4gLS1ybSAtLXVzZXIgMTAwMDoxMDAwIC12ICR7UFdEfTovbG9jYWwgb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZSBcCiAgICAtaSAvbG9jYWwvb3BlbmFwaS55YW1sIFwKICAgIC1nIHBocCBcCiAgICAtbyAvbG9jYWwvY2xpZW50LXBocApgYGAK readmeEtag: '"d28f9e28d646e975c1e3ba821ce48bf3f183e8b3"' readmeLastModified: Tue, 14 Aug 2018 10:03:28 GMT repositoryId: 144590172 description: >- This repository provides an OpenAPI 3.0 Specification File describing the Saferepay JSON API. created: '2018-08-13T14:20:57Z' updated: '2018-08-14T10:07:07Z' language: PHP archived: false stars: 0 watchers: 0 forks: 2 owner: soxyl logo: https://avatars.githubusercontent.com/u/7266755?v=4 license: MIT repoEtag: '"aa810bc4321aa72d0cb0970922bb3c670d8ca5df36e603201c49f84e114223e2"' repoLastModified: Tue, 14 Aug 2018 10:07:07 GMT foundInMaster: true category: - Code Generators - Parsers id: 81db3bb9a1951b971b0811a986670f18 - source: openapi3 tags repository: https://github.com/zweidenker/dockerengine v3: true repositoryMetadata: base64Readme: >- IyBEb2NrZXJFbmdpbmUKClRoaXMgaXMgaW1wbGVtZW50ZWQgdXNpbmcgRG9ja2VyIEVuZ2luZSBBUEkgeWFtbCBmaWxlIGZyb20KCmh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9hcGkvdjEuMzcvIwoKY29udmVydGVkIHRoZSBmaWxlIHRvIGpzb24gd2l0aAoKJCBhbGlhcyB5YW1sLXRvLWpzb249J2RvY2tlciBydW4gLWkgaW5neS95YW1sLXRvLWpzb24nCiQgY2F0IHN3YWdnZXIueWFtbCB8IHlhbWwtdG8tanNvbiB8IGpxIC4gPiBzd2FnZ2VyLmpzb24KCmFuZCBjb252ZXJ0ZWQgaXQgZnJvbSBzd2FnZ2VyIDIuMCB0byBvcGVuYXBpIDMuMC4wIHdpdGgKCmh0dHBzOi8vb3BlbmFwaS1jb252ZXJ0ZXIuaGVyb2t1YXBwLmNvbS8KCgoK readmeEtag: '"5f9cf774599a4b0073c78da91b517cc30489b7b3"' readmeLastModified: Thu, 13 Sep 2018 12:39:27 GMT repositoryId: 140084992 description: Implementation of DockerEngine API created: '2018-07-07T13:04:59Z' updated: '2025-08-11T21:05:35Z' language: Smalltalk archived: false stars: 1 watchers: 2 forks: 1 owner: zweidenker logo: https://avatars.githubusercontent.com/u/20300491?v=4 repoEtag: '"de5bb93cfa43229df5bc03cab218e348c52d0f9e06fcdfd6d76c1a9b27329f5d"' repoLastModified: Mon, 11 Aug 2025 21:05:35 GMT foundInMaster: true category: - Code Generators - Parsers id: e39bc1e71854fd595a53e89dcbc84c4a - source: openapi3 tags repository: https://github.com/sinnerr0/mock-server-generator v3: true repositoryMetadata: base64Readme: >- IyBNb2NrIFNlcnZlciBHZW5lcmF0b3IKCiMjIE1vdGl2YXRpb24KCk9wZW4gQVBJ66W8IOyCrOyaqe2VmOuKlCDqsoPsnbQg7JWE64uI652866m0IOyEnOuyhOyqveqzvCDtgbTrnbzsnbTslrjtirjsqr3snbQg64+Z7Iuc7JeQIOqwnOuwnOydtCDsp4Ttlokg65Cc64ukLiDsnbTrn7Ag6rK97JqwIO2BtOudvOydtOyWuO2KuOyqveyXkCDrtoDri7TsnbQg7Luk7KeA64qU642wIEFQSSDsiqTtjpnsnYQg66+466asIO2ZleyduO2WiOuLpOqzoCDtlZjrjZTrnbzrj4Qg7ISc67KE6rCAIOyVhOyngSDsl4bsnLzrr4DroZwo7J6I642U652864+EIOydvOu2gOunjCkg7YG065287J207Ja47Yq47Kq9IOyekeyXheydtCDsp4Dsl7DrkJjqsbDrgpggTW9ja2luZ+ydhCDtlbTshJwg67CY7ZmY6rCS7J2EIOqwgOygle2VmOyXkCDrkZDqs6Ag6rCc67Cc7J2EIO2VtOyVvCDtlZzri6TripQg7KCQ7J2064ukLiDshJzrsoTsqr3sl5DshJwg7ZiR7J2Y65CcIEFQSSDsiqTtjpnsl5Ag66ee7LaU7Ja0IOyEnOuyhOyXkOyEnCBNb2Nr7ISc67KE66W8IOq1rO2YhO2VtCDspIDri6TrqbQg7IOB7Zmp7J20IOyigCDrgpjslYTsp4jthYzsp4Drp4wg6rCc67Cc7ZWY6riw64+EIOuwlOyBnOuNsCDsnbTrn7Dqsbgg6rWs7ZiE7ZWY64qUIOqygyDsnpDssrTqsIAg7Im97KeAIOyViuuLpC4KCiMjIFN1bW1hcnkKCuyEnOuyhOyZgOuKlCDqtIDqs4Tsl4bsnbQg7KCV7J2Y65CcIOyduO2EsO2OmOydtOyKpOyXkCDrlLDrnbwg66+466asIOqwnOuwnOydhCDsp4TtlontlaAg7IiYIOyeiOuPhOuhnSBNb2NrIFNlcnZlcuulvCDsg53shLHtlZjqs6Ag7J6Q64+Z7Jy866GcIOyDneyEseuQnCDsnZHri7XqsJLsnYQg64+M66Ck7KSA64ukLgoKIyMgQmFzZSBrbm93bGVkZ2UKCk9wZW4gQVBJIFNwZWMgMy4wLjMgaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vCgojIyBPcGVuIEFQSSBTcGVjIEZpbGUKCi0gb3BlbmFwaS55YW1sCgotIFByaXNtIG1vY2s6IER5bmFtaWMgUmVzcG9uc2UgR2VuZXJhdGlvbgoKICBodHRwczovL21ldGEuc3RvcGxpZ2h0LmlvL2RvY3MvcHJpc20vZG9jcy9ndWlkZXMvMDEtbW9ja2luZy5tZCNkeW5hbWljLXJlc3BvbnNlLWdlbmVyYXRpb24KCiMjIENyZWF0ZS9FZGl0IGZpbGUKCmh0dHBzOi8vZWRpdG9yLnN3YWdnZXIuaW8vCgojIyBJbnN0YWxsCgpgYGAKJCBucG0gaW5zdGFsbApgYGAKCiMjIFNwaW4gdXAgYSBtb2NrIEhUVFAgc2VydmVyCgpgYGAKJCBucG0gc3RhcnQKYGBgCgojIyBQcm94eSBSZWFsIFNlcnZlcgoKYGBgCiMgTW9kaWZ5IHJlYWwgc2VydmVyIGFkZHJlc3MgaW4gcGFja2FnZS5qc29uCiQgbnBtIHJ1biBwcm94eQpgYGAKCiMjIERvY3MgVUkKCmBgYAojIHNlcnZlIHBvcnQgNDAwMDogaHR0cDovL2xvY2FsaG9zdDo0MDAwCiQgbnBtIHJ1biBkb2NzCmBgYAo= readmeEtag: '"9a65a43fda4ddeddb9b1f8af13d01b1eb0814a38"' readmeLastModified: Fri, 28 Aug 2020 11:26:30 GMT repositoryId: 289464781 description: mock server generator & docs serve created: '2020-08-22T10:12:57Z' updated: '2022-12-09T14:36:47Z' language: HTML archived: true stars: 0 watchers: 1 forks: 0 owner: sinnerr0 logo: https://avatars.githubusercontent.com/u/6859131?v=4 repoEtag: '"2bb794c59686a51a0ad42b19b8f3b723cd564ef7b1770f2c9fe129a2fc838170"' repoLastModified: Fri, 09 Dec 2022 14:36:47 GMT foundInMaster: true category: - SDK - Server Implementations id: 13a5f59fc7c008ee062cd1ea9cf5aa53 - source: openapi3 tags repository: https://github.com/mikeralphson/openapi-diff v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIERpZmYKPiBBIENMSSB0b29sIHRvIGlkZW50aWZ5IGRpZmZlcmVuY2VzIGJldHdlZW4gU3dhZ2dlci9PcGVuQVBJIHNwZWNzLgoKIyMgUmVxdWlyZW1lbnRzCi0gbm9kZWpzIDYueCBvciBoaWdoZXIgKHRlc3RlZCB1c2luZyA2LngsIDgueCBhbmQgMTAueCkKLSBucG0gMy54IG9yIGhpZ2hlciAodGVzdGVkIHVzaW5nIDMueCBhbmQgNXgpCgojIyBJbnN0YWxsYXRpb24KCkluc3RhbGwgdGhlIHRvb2wgdXNpbmcgbnBtIGFuZCBhZGQgaXQgdG8gdGhlIHBhY2thZ2UuanNvbgpgYGAKbnBtIGluc3RhbGwgb3BlbmFwaS1kaWZmIC0tc2F2ZS1kZXYKYGBgCgpBdm9pZCBpbnN0YWxsaW5nIHRoZSB0b29sIGdsb2JhbGx5IGFzIHRoaXMgd2lsbCBsZWFkIHRvIHByb2JsZW1zIHdoZW4gbXVsdGlwbGUgY29kZWJhc2VzIHRyeSB0byB1c2UgZGlmZmVyZW50IHZlcnNpb25zCm9mIHRoZSB0b29sIG9uIHRoZSBzYW1lIG1hY2hpbmUuCgojIyBVc2FnZQpJbnZva2UgdGhlIHRvb2wgd2l0aCB0d28gcGF0aHMgdG8gU3dhZ2dlci9PcGVuQVBJIGZpbGVzIGluIG9yZGVyIHRvIGZpbmQgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGVtLCB0aGVzZSBwYXRocyBjYW4KZWl0aGVyIGJlIHBhdGhzIHRvIHRoZSBzcGVjcyBpbiB0aGUgbG9jYWwgZmlsZXN5c3RlbSBvciBVUkxzIHRvIHRoZSBzcGVjcywgYm90aCBKU09OIGFuZCBZQU1MIGFyZSBzdXBwb3J0ZWQuCmBgYAouL25vZGVfbW9kdWxlcy8uYmluL29wZW5hcGktZGlmZiAvcGF0aC90by9zb3VyY2Uvb3BlbmFwaS5qc29uIC9wYXRoL3RvL2Rlc3RpbmF0aW9uL29wZW5hcGkuanNvbgouL25vZGVfbW9kdWxlcy8uYmluL29wZW5hcGktZGlmZiAvcGF0aC90by9zb3VyY2Uvb3BlbmFwaS55bWwgL3BhdGgvdG8vZGVzdGluYXRpb24vb3BlbmFwaS55bWwKYGBgCgpUaGUgdG9vbCdzIG91dHB1dCB3aWxsIGRpc3BsYXkgdGhlIGFtb3VudCBhbmQgdHlwZSBvZiBjaGFuZ2VzLCBhbmQgdGhlbiBsaXN0IHRoZSBjaGFuZ2VzIHdpdGggdGhlIHJlbGV2YW50IGluZm8uCkNoYW5nZXMgYXJlIGNsYXNzaWZpZWQgYXMgZm9sbG93czoKCiogQnJlYWtpbmc6IGNoYW5nZXMgdGhhdCB3b3VsZCBtYWtlIGV4aXN0aW5nIGNvbnN1bWVycyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQVBJIChkZWxldGlvbiBvZiBwYXRocywgYWRkaW5nIHJlcXVpcmVkCnByb3BlcnRpZXMuLi4pCiogTm9uLWJyZWFraW5nOiBjaGFuZ2VzIHRoYXQgd291bGQgKipub3QqKiBtYWtlIGV4aXN0aW5nIGNvbnN1bWVycyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQVBJIChhZGRpdGlvbiBvZiBwYXRocywKdHVybmluZyBhIHJlcXVpcmVkIHByb3BlcnR5IGludG8gb3B0aW9uYWwuLi4pCiogVW5jbGFzc2lmaWVkOiBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIGRldGVjdGVkIGJ5IHRoZSB0b29sIGJ1dCBjYW4ndCBiZSBjbGFzc2lmaWVkIChtb2RpZmljYXRpb25zIHRvIFgtUHJvcGVydGllcyBhbmQKb3RoZXIgdW5mb3Jlc2VlbiBjaGFuZ2VzKQoKVGhlIGNvbW1hbmQgd2lsbCBleGl0IHdpdGggYW4gZXhpdCBjb2RlIDEgaWYgYW55IGJyZWFraW5nIGNoYW5nZXMgd2VyZSBmb3VuZCwgc28gdGhhdCB5b3UgY2FuIGZhaWwgYnVpbGRzIGluIENJIHdoZW4KdGhpcyBoYXBwZW5zLgoKIyMgRmVhdHVyZSBzdXBwb3J0ClNlZSBbU1BFQ19TVVBQT1JULm1kXShTUEVDX1NVUFBPUlQubWQpCg== readmeEtag: '"65efaea40e50866d1e2e96f7b078b711b27e8cf3"' readmeLastModified: Tue, 13 Nov 2018 02:34:28 GMT repositoryId: 158676563 description: Mirror of Atlassian's OpenAPI Diff (from bitbucket.org) created: '2018-11-22T09:45:42Z' updated: '2018-11-22T09:53:27Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: MikeRalphson logo: https://avatars.githubusercontent.com/u/21603?v=4 license: NOASSERTION repoEtag: '"3a0b52cadf91419e75b1e939b9a2327cb1b04b5ca017d20e1395e1f26f360b53"' repoLastModified: Thu, 22 Nov 2018 09:53:27 GMT foundInMaster: true category: Parsers id: eb4fff87cf20a81df48de3a6428af5e3 - source: openapi3 tags repository: https://github.com/yoshinariyamanaka/openapi-with-express v3: true id: ec07d6e09dd12e6df639f9f2968f3b88 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIHdpdGggRXhwcmVzcyB3cml0dGVuIGluIFR5cGVTY3JpcHQKCk1haW4gbGlicmFyaWVzIGZvciB0aGlzIHJlcG9zaXRvcnkKCiMgQVBJIFNlcnZlcgoKLSAgIFtleHByZXNzXShodHRwOi8vZXhwcmVzc2pzLmNvbS8pCgojIE9wZW5BUEkgVmFsaWRhdGlvbiBmb3IgYm90aCByZXF1ZXN0IGFuZCByZXNwb25zZQoKLSAgIFtleHByZXNzLW9wZW5hcGktdmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vY2RpbWFzY2lvL2V4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3IjcmVhZG1lKQoKIyBHZW5lcmF0ZSBUeXBlU2NyaXB0IHR5cGVzIGZyb20gT3BlbkFQSSBzcGVjaWZpY2F0aW9uCgotICAgW29wZW5hcGktdHlwZXNjcmlwdF0oaHR0cHM6Ly9naXRodWIuY29tL2Ryd3Bvdy9vcGVuYXBpLXR5cGVzY3JpcHQjcmVhZG1lKQoKIyBVSSB0byBzZWUgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbgoKLSAgIFtzd2FnZ2VyLXVpLWV4cHJlc3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY290dGllMTk4NC9zd2FnZ2VyLXVpLWV4cHJlc3MpCg== readmeEtag: '"1aa82d583ae65e15cbca5df6ecbf09e37b3c5e9c"' readmeLastModified: Tue, 11 Apr 2023 21:00:51 GMT repositoryId: 626168947 description: OpenAPI-with-Express implemented in TypeScript created: '2023-04-11T00:02:41Z' updated: '2023-04-11T00:18:07Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: YoshinariYamanaka logo: https://avatars.githubusercontent.com/u/59109232?v=4 repoEtag: '"316a548fb7b8984960d5ea02cd6efcd59db6a07081b5f5a275eefe08019046ac"' repoLastModified: Tue, 11 Apr 2023 00:18:07 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/yo-mah-ya/openapi-with-express - source: openapi3 tags repository: https://github.com/dansilva41/currency-transaction v3: true repositoryMetadata: base64Readme: >- PGltZyBhbGlnbj0iY2VudGVyIiBzcmM9ImRvY3MvbG9nby5wbmciIGFsdD0iQ3VycmVuY3kgVHJhbnNhY3Rpb24iPgogICAgCjxoNCBhbGlnbj0iY2VudGVyIj4KICAgIDxhIGhyZWY9Imh0dHBzOi8vY3VycmVuY3ktdHJhbnNhY3Rpb24uaGVyb2t1YXBwLmNvbS9zd2FnZ2VyLXVpLmh0bWwiPkxpdmUgZGVtbzwvYT4KPC9oND4KCjxoMyBhbGlnbj0iY2VudGVyIj4KICAgIFNpbXBsZSwgZmFzdCBhbmQgcmVhY3RpdmUgYXBwbGljYXRpb24gdG8gY29udmVydCB2YWx1ZXMgYmV0d2VlbiBhbGwgY3VycmVuY2llcy4KPC9oMz4KCjxwIGFsaWduPSJjZW50ZXIiPgogIDxpbWcgYWx0PSJHaXRIdWIgbGFuZ3VhZ2UgY291bnQiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGFuZ3VhZ2VzL2NvdW50L2RhbnNpbHZhNDEvY3VycmVuY3ktdHJhbnNhY3Rpb24/Y29sb3I9JTIzMDREMzYxIj4KCiAgPGltZyBhbHQ9IlJlcG9zaXRvcnkgc2l6ZSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9yZXBvLXNpemUvZGFuc2lsdmE0MS9jdXJyZW5jeS10cmFuc2FjdGlvbiI+CgogIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kYW5zaWx2YTQxL2N1cnJlbmN5LXRyYW5zYWN0aW9uL2NvbW1pdHMvbWFpbiI+CiAgICA8aW1nIGFsdD0iR2l0SHViIGxhc3QgY29tbWl0IiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhc3QtY29tbWl0L2RhbnNpbHZhNDEvY3VycmVuY3ktdHJhbnNhY3Rpb24iPgogIDwvYT4KCiAgIDxpbWcgYWx0PSJMaWNlbnNlIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1NSVQtYnJpZ2h0Z3JlZW4iPgogICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGFuc2lsdmE0MS9jdXJyZW5jeS10cmFuc2FjdGlvbi9zdGFyZ2F6ZXJzIj4KICAgIDxpbWcgYWx0PSJNSVQgTGljZW5zZSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9zdGFycy9kYW5zaWx2YTQxL2N1cnJlbmN5LXRyYW5zYWN0aW9uP3N0eWxlPXNvY2lhbCI+CiAgPC9hPgoKICA8YSBocmVmPSJodHRwczovL2RhbnNpbHZhNDEuZ2l0aHViLmlvIj4KICAgIDxpbWcgYWx0PSJtYWRlIGJ5IERhbmlsbyBTaWx2YSIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL21hZGUlMjBieS1EYW5pbG8lMjBTaWx2YS1ibHVlIj4KICA8L2E+CgogIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVycy1mcmllbmRzLmdpdGJvb2suaW8vIj4KICAgIDxpbWcgYWx0PSJEZXZlbG9wZXIncyBGcmllbmRzIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQmxvZy1EZXZlbG9wZXJzJTIwRnJpZW5kcy1vcmFuZ2UiPgogICAgPC9hPiAKPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CiA8YSBocmVmPSIjZGl6enktYWJvdXQiPkFib3V0PC9hPiDigKIKIDxhIGhyZWY9IiNtZWdhLWZlYXR1cmVzIj5GZWF0dXJlczwvYT4g4oCiIAogPGEgaHJlZj0iI3JvY2tldC10ZWNobm9sb2dpZXMtYW5kLW1vdGl2YXRpb24iPlRlY2hub2xvZ2llcyBhbmQgbW90aXZhdGlvbjwvYT4g4oCiCiA8YSBocmVmPSIjc2Nyb2xsLXN0cnVjdHVyZSI+U3RydWN0dXJlPC9hPiDigKIKIDxhIGhyZWY9IiNjb21wdXRlci1idWlsZGluZy1sb2NhbGx5Ij5CdWlsZGluZyBMb2NhbGx5PC9hPiDigKIKIDxhIGhyZWY9IiNtZW1vLWxpY2Vuc2UiPkxpY2Vuc2U8L2E+Cgo8L3A+CgojIyA6ZGl6enk6IEFib3V0CgpUaGlzIGFwcGxpY2F0aW9uIGlzIGRlc2lnbmVkIHdpdGggY3VycmVuY3ktYmFzZWQgdmFsdWUgY29udmVyc2lvbiBpbiBtaW5kLCB3aGVyZSB0aGUgZm9jdXMgaXMgdG8gZ2V0IHRoZSBjb252ZXJzaW9uIHJhdGVzIGZyb20gYW4gW2V4dGVybmFsIGFwaV0oaHR0cHM6Ly9leGNoYW5nZXJhdGVzYXBpLmlvKSwKcGVyZm9ybSB0aGUgY29udmVyc2lvbiBjYWxjdWxhdGlvbnMsIHBlcnNpc3QgdGhlIGRhdGEgYW5kIHJldHVybiB0byBjb25zaXN0ZW50IGRhdGEuCkluIGFkZGl0aW9uIHRvIG9mZmVyaW5nIHBlcmZvcm1hbmNlIGR1ZSB0byBpdHMgcmVhY3RpdmUgYmVoYXZpb3IsIHRoZSBhcHBsaWNhdGlvbiBwcm92aWRlcyBhIHdheSB0byBjb25zdWx0IHRoZSBjb252ZXJzaW9ucyBhbHJlYWR5IGNhcnJpZWQgb3V0IGJ5IHRoZSB1c2VyLgoKLS0tCiMjIDptZWdhOiBGZWF0dXJlcwoKfCAgICAgICAgICBBY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIEF2YWlsYWJsZSAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICB8IDotLS0tLS0tLS0tLS0tLS0tLTogfAp8IENvbnZlcnRpbmcgdmFsdWUgYmV0d2VlbiBhbGwgY3VycmVuY2llcyAgICAgICAgICAgfCAgICAgICAgIOKclO+4jyAgICAgICAgICAgfAp8IEdldCBhbGwgY29udmVyc2lvbnMgcGVyZm9ybWVkIGJ5IHVzZXIgICAgICAgICAgICAgfCAgICAgICAgIOKclO+4jyAgICAgICAgICAgfAoKLS0tCgojIyA6cm9ja2V0OiBUZWNobm9sb2dpZXMgYW5kIG1vdGl2YXRpb24KClRoZSBwcm9qZWN0IHdhcyBkZXZlbG9wZWQgdXNpbmcgdGhlIGZvbGxvd2luZyB0ZWNobm9sb2dpZXMKCi0gW1NwcmluZ10oKTogSXQgbWFrZXMgcHJvZ3JhbW1pbmcgaW4gSmF2YSBmYXN0ZXIsIGVhc2llciBhbmQgc2FmZXIuIENvbXBhcmVkIHRvIG90aGVyIHdlYiBlY29zeXN0ZW1zIHN1Y2ggYXMgUXVhcmt1cywgVmVydC54LCBKYXZhbGluLCBpdCBoYXMgYSB2ZXJ5IHNpbXBsZSBjb25maWd1cmF0aW9uLCB3aXRoIGEgbGFyZ2UgYW5kIHByZXNlbnQgY29tbXVuaXR5LCB3aGljaCBtYWtlcyBpdCBlYXNpZXIgaW4gdGhlIG1pZHN0IG9mIGRldmVsb3BtZW50IG1pc2hhcHMuCi0gW1NwcmluZyBXZWJGbHV4XSgpOiBJbiBvcmRlciB0byBidWlsZCBhbiBhcHBsaWNhdGlvbiBhaW1lZCBhdCB0aGUgUkVTVCBBUEksIGJ1dCB0byBicmluZyByZWFjdGl2aXR5LCBhc3luY2hyb25pc20gYW5kIHBlcmZvcm1hbmNlLCBTcHJpbmcgV2ViIEZsdXggaXMgYWJsZSB0byBwcm92aWRlIHRoaXMsIGtlZXBpbmcgdGhlIGNvZGUgY29tbW9uIHRvIHRoZSBjb252ZW50aW9uYWwgc3luY2hyb25vdXMgUmVzdCBBUEkuCi0gW1JlYWN0aXZlIE1vbmdvREIgRW1iZWRkZWRdKCk6IFByb3ZpZGUgYSBwbGF0Zm9ybS1uZXV0cmFsIHdheSB0byBydW4gZW1iZWRkZWQgbW9uZ29kYiwgbm90IHJlbHlpbmcgb24gYW4gZXh0ZXJuYWwgc2VydmVyIGZvciB0aGUgYXBwbGljYXRpb24gYW5kIHdpdGggYSB2ZXJ5IGZhc3QgYnVpbGQsIGR5bmFtaWMgYnkgaW5zdGFuY2UgYW5kIHBvd2VyZnVsIGluIHByb2Nlc3NpbmcuCi0gW09wZW4gQVBJXSgpOiBQdXJzdWluZyB0aGUgQVBJIGZpcnN0IGNvbmNlcHQsIHRoaXMgc3BlY2lmaWNhdGlvbiBlbmFibGVzIGluZGVwZW5kZW50IHdyaXRpbmcgb2YgdGhlIFJFU1QgQVBJcyBhbmQgdGhlIHJlc3VsdCBpcyBhIGNvbXBsZXRlIGRvY3VtZW50YXRpb24gb2YgcmVxdWVzdCBhbmQgcmVzcG9uc2UgZW5kcG9pbnRzIGFuZCBvYmplY3RzCi0gW1dpcmVtb2NrXSgpOiBJbiBvcmRlciB0byBwZXJmb3JtIGludGVncmF0aW9uIHRlc3RzIGluIHRoZSBhcHBsaWNhdGlvbiB2YWxpZGF0aW9uIChjaGVjayksIFdpcmVtb2NrIGluIGFuIGVtYmVkZGVkIHdheSBhbmQgd2l0aCBkeW5hbWljIHJvdXRlcywgbWFrZXMgaXQgcG9zc2libGUgdG8gdGVzdCB0aGUgZmxvd3Mgd2hlcmUgdGhlcmUgaXMgZXh0ZXJuYWwgY29tbXVuaWNhdGlvbiBhbmQgdG8gdmFsaWRhdGUgZXJyb3IgdHJlYXRtZW50cywgcmVzcG9uc2UgYm9kaWVzIGFuZCBsb2dpYy4KLSBbTG9tYm9rXSgpOiBMb21ib2sgaXMgdXNlZCB0byByZWR1Y2UgYm9pbGVycGxhdGUgY29kZSBmb3IgbW9kZWwvZGF0YSBvYmplY3RzLCBlLmcuLCBpdCBjYW4gZ2VuZXJhdGUgZ2V0dGVycyBhbmQgc2V0dGVycyBmb3IgdGhvc2Ugb2JqZWN0IGF1dG9tYXRpY2FsbHkgYnkgdXNpbmcgTG9tYm9rIGFubm90YXRpb25zLgotIFtHaXRIdWIgQWN0aW9uc10oKTogQXMgQ0kgLyBDRCBwcm9jZXNzIEdpdEh1YiBBY3Rpb25zIHByb3ZpZGVzIGEgc2ltcGxlLCBwb3dlcmZ1bCwgaW50ZWdyYXRlZCB3aXRoIHZhcmlvdXMgY2xvdWQgcHJvdmlkZXJzIGFuZCB3aXRoIHRoZSBwcm9jZXNzaW5nIHBvd2VyIGFuZCBmdWxsIGZlZWRiYWNrLCB0aGVyZWZvcmUsIGl0IGZ1bGZpbGxzIHRoZSBmaW5hbCByZWxlYXNlIG9mIHRoaXMgcHJvZHVjdC4KLSBbSGVyb2t1XSgpOiBCZWNhdXNlIGl0IGlzIGZsZXhpYmxlIGFuZCB3aXRoIHRoZSBwb3NzaWJpbGl0eSBvZiBkZXBsb3ltZW50IGVpdGhlciB2aWEgY29uc29sZSBvciBhcyBwYXJ0IG9mIHRoZSBDSS9DRCBkZXBsb3ltZW50IHByb2Nlc3MgZnJvbSBHaXRIdWIgQWN0aW9ucywgaXQgaXMgYWJsZSB0byBwdWJsaXNoIGEgbmV3IHZlcnNpb24gb2YgdGhlIGFwcGxpY2F0aW9uIGZvciBmcmVlCgotLS0KCiMjIDpzY3JvbGw6IFN0cnVjdHVyZQoKYGBgdGV4dAouCuKUnOKUgOKUgCBjb2RlLXF1YWxpdHktZW5mb3JjZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeSB0aGF0IHN0b3JlcyBmaWxlcyByZWxhdGVkIHRvIGNvZGUgcXVhbGl0eQrilJzilIDilIAgZG9jcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUFETUUubWQgZG9jdW1lbnRhdGlvbiByZWxhdGVkIGZpbGVzCuKUnOKUgOKUgCBsb2dzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvbGRlciB0aGF0IHN0b3JlcyBhcHBsaWNhdGlvbiBsb2cgcmVjb3JkcwrilJzilIDilIAgc3JjCuKUgiAgIOKUnOKUgOKUgCBtYWluCuKUgiAgIOKUgiAgIOKUnOKUgOKUgCBqYXZhCuKUgiAgIOKUgiAgICDilIIgICAg4pSU4pSA4pSAIHRlY2guamF5YS5jdXJyZW5jeXRyYW5zYWN0aW9uICAgICAgICAgICAgIEFwcGxpY2F0aW9uIG1haW4gcGFja2FnZQrilIIgICDilIIgICAg4pSCICAgICAgICDilJzilIDilIAgY29uZmlndXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICBMYXllciB3aGVyZSB0aGUgbmVjZXNzYXJ5IGluc3RhbmNlcyBhcmUgY29uZmlndXJlZCB2aWEgRGVwZW5kZW5jeSBJbmplY3Rpb24gICAK4pSCICAg4pSCICAgIOKUgiAgICAgICAg4pSc4pSA4pSAIGNvcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb24gZG9tYWluIGxheWVyLiBMb2dpYywgZGVwZW5kZW50IG9iamVjdHMgYW5kIGJ1c2luZXNzIHJ1bGVzIGFyZSBmb3VuZCBoZXJlLgrilIIgICDilIIgICAg4pSCICAgICAgICDilJzilIDilIAgZGF0YXByb3ZpZGVyICAgICAgICAgICAgICAgICAgICAgICAgICBJbXBsZW1lbnRhdGlvbiBsYXllciBpbiBkYXRhIHNlYXJjaCBhbmQgcmV0dXJuLCB3aGVyZSB0aGVyZSBpcyBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIGVhY2ggZXh0ZXJuYWwgcHJvdmlkZXIK4pSCICAg4pSCICAgIOKUgiAgICAgICAg4pSc4pSA4pSAIGVudHJ5cG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlc2VudGF0aW9uIGxheWVyIGFuZCBleHBvc3VyZSBvZiBhc3luY2hyb25vdXMgcmVzb3VyY2VzLCBhcyB3ZWxsIGFzIGhhbmRsaW5nIHJlcXVlc3RzIGFuZCBlcnJvcnMK4pSCICAg4pSCICAgIOKUgiAgICAgICAg4pSc4pSA4pSAIEN1cnJlbmN5VHJhbnNhY3Rpb25BcGlBcHBsaWNhdGlvbiAgICAgTWFpbiBjbGFzcwrilIIgICDilIIgICAg4pSU4pSA4pSAIHJlc291cmNlcwrilIIgICDilIIgICAgICAgIOKUnOKUgOKUgCBpMThuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5IHJlc2VydmVkIGZvciBzdG9yaW5nIGZpbGVzIGRpZmZlcmVudGlhdGVkIGJ5IGxvY2FsZSBpbiBtZXNzYWdlcyBpbnRlcnBvbGF0aW9uCuKUgiAgIOKUgiAgICAgICAg4pSCICAg4pSU4pSA4pSAIG1lc3NhZ2VzLnByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgbWVzc2FnZXMK4pSCICAg4pSCICAgICAgICDilJzilIDilIAgc3RhdGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIArilIIgICDilIIgICAgICAgIOKUgiAgIOKUlOKUgOKUgCBvcGVuLWFwaS55YW1sICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGl2ZSBmaWxlIG9mIHRoZSBhcHBsaWNhdGlvbidzIEFQSSBzcGVjaWZpY2F0aW9uCuKUgiAgIOKUgiAgICAgICAg4pSc4pSA4pSAIGFwcGxpY2F0aW9uLnByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICBGaWxlIHRoYXQgc3RvcmVzIGJhc2ljIGFwcGxpY2F0aW9uIGluZm9ybWF0aW9uCuKUgiAgIOKUgiAgICAgICAg4pSc4pSA4pSAIGFwcGxpY2F0aW9uLnlhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbiBjdXN0b20gc2V0dGluZ3MgZGVmaW5pdGlvbiBmaWxlCuKUgiAgIOKUgiAgICAgICAg4pSU4pSA4pSAIGxvZ2JhY2sueG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGZpbGUgZm9yIGxhdW5jaGluZyBhbmQgaGFuZGxpbmcgbG9ncwrilIIgICDilJTilIDilIAgdGVzdArilIIgICAgICAg4pSc4pSA4pSAIGphdmEvdGVjaC9qYXlhL2N1cnJlbmN5dHJhbnNhY3Rpb24gICAgICAgICAgICAgIFBhY2thZ2Ugd2hlcmUgdW5pdCB0ZXN0aW5nIGFuZCBpbnRlZ3JhdGlvbiB0ZXN0aW5nIGltcGxlbWVudGF0aW9ucyBhcmUgY29uY2VudHJhdGVkCuKUgiAgICAgICDilJTilIDilIAgcmVzb3VyY2VzCuKUgiAgICAgICAgICAg4pSc4pSA4pSAIG1vY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5IHJlc2VydmVkIGZvciBzdG9yaW5nIEpTT04gZmlsZXMgdXNlZCBieSBXaXJlbW9jayBmYWtlIHJlcXVlc3RzCuKUgiAgICAgICAgICAg4pSU4pSA4pSAIGFwcGxpY2F0aW9uLXRlc3QueG1sICAgICAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb24gY3VzdG9tIHNldHRpbmdzIGRlZmluaXRpb24gZmlsZSBpbiB0aGUgY29udGV4dCBvZiB0ZXN0cwrilJzilIDilIAgdGFyZ2V0CuKUgiAgIOKUlOKUgOKUgGN1cnJlbmN5LXRyYW5zYWN0aW9uLWFwaS0wLjAuMS5qYXIgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkIGphcgrilJzilIDilIAgcG9tLnhtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5kYW1lbnRhbCB1bml0IG9mIHdvcmsgaW4gTWF2ZW4gZm9yIGRlZmluaW5nLCByZXNvbHZpbmcgZGVwZW5kZW5jaWVzLCBhbmQgYnVpbGRpbmcgdGhlIHByb2plY3QK4pSc4pSA4pSAIExJQ0VOU0UubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb24gbGljZW5zZSBkZWZpbml0aW9uCuKUlOKUgOKUgCBSRUFETUUubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uIERvY3VtZW50YXJ5IEZpbGUKYGBgCgojIyA6Y29tcHV0ZXI6IEJ1aWxkaW5nIExvY2FsbHkKCiMjIyBSZXF1aXJlbWVudHMKCi0gW01hdmVuXSgpCi0gW0phdmEgMTFdKCkKCiMjIyBJbnN0YWxsCgoxLiBDbG9uZSB0aGUgcmVwb3NpdG9yeQoKICAgYGdpdCBjbG9uZSBnaXRAZ2l0aHViLmNvbTpEYW5TaWx2YTQxL2N1cnJlbmN5LXRyYW5zYWN0aW9uLmdpdGAKCjIuIEVudGVyIGRpcmVjdG9yeQogICAKICAgIGBjZCBjdXJyZW5jeS10cmFuc2FjdGlvbmAKCjMuIEluc3RhbGwgZGVwZW5kZW5jaWVzCiAgIAogICAgYG12biBjbGVhbiBpbnN0YWxsYAoKIyMjIFJ1biBhcHBsaWNhdGlvbgoKICAgIGBtdm4gc3ByaW5nYm9vdDpydW5gCgpPcGVuIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9zd2FnZ2VyLXVpLmh0bWwKCi0tLQoKIyMjIEFkZGl0aW9uYWwKCiMjIyMgQ2hlY2tzdHlsZQoKPGRldGFpbHM+CiAgICA8c3VtbWFyeT4wMS4gQ2hlY2tpbmcgdGhlIHByb2plY3QgdmlhIG1hdmVuIHBsdWdpbjwvc3VtbWFyeT4KCi0gVG8gcnVuIHRoZSBjaGVjayBpbiB0aGUgcHJvamVjdCwganVzdCB1c2UgdGhpcyBtYXZlbiBjb21tYW5kIGluIHNoZWxsL2NvbnNvbGUgb3IgcnVuIHZpYSBJREVBLgoKYGBgYmFzaAogICAgbXZuIGNoZWNrc3R5bGU6Y2hlY2sKYGBgCi0gVG8gZ2VuZXJhdGUgYSByZXBvcnQgZnJvbSB0aGUgYW5hbHlzaXMgb2YgY29kZSBzdHlsZSB2aW9sYXRpb25zLCBqdXN0IHVzZSB0aGlzIG1hdmVuIGNvbW1hbmQgaW4gc2hlbGwvY29uc29sZSBvciBydW4gdmlhIElERUEuCgpgYGBiYXNoCiAgICBtdm4gY2hlY2tzdHlsZTpjaGVja3N0eWxlCmBgYApSZXBvcnQgZ2VuZXJhdGVkIGluICoqdGFyZ2V0L3NpdGUvY2hlY2tzdHlsZS5odG1sKiouCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KICAgIDxzdW1tYXJ5PjAyLiBJbnN0YWxsaW5nIHRoZSBDaGVja1N0eWxlLUlERUEgcGx1Z2luIG9uIEludGVsbGlKPC9zdW1tYXJ5PgoKV2UgY2FuIHVzZSB0aGUgQ2hlY2tTdHlsZS1JREVBIHBsdWdpbiB0byBoZWxwIGZvcm1hdHRpbmcgY29kZSBpbiB0aGUgSURFLgpUbyBjb25maWd1cmUgaXQgaXMgdmVyeSBzaW1wbGUsIGZpcnN0IGluc3RhbGwgdGhlIHBsdWdpbiB2aWEgdGhlIGxpbmsgYWJvdmUgb3Igb24gSW50ZWxsaUogYXQKKipGaWxlID4gU2V0dGluZ3MgPiBQbHVnaW5zKiouCgohW0luc3RhbGwgcGx1Z2luIENoZWNrc3R5bGUgSURFQV0oZG9jcy9jaGVja3N0eWxlL2luc3RhbGwtcGx1Z2luLWNoZWNrc3R5bGUucG5nKQoKIyMjIDAyLiBDb25maWd1cmluZyB0aGUgQ2hlY2tTdHlsZS1JREVBIHBsdWdpbgoKLSBBZnRlciBpbnN0YWxsYXRpb24sIHdlIG5lZWQgdG8gaW1wb3J0IHRoZSBzZXR0aW5ncyBkZWZpbmVkIGluIHRoZSBjaGVja3N0eWxlLnhtbCBmaWxlIGludG8gdGhlIENoZWNrU3R5bGUtSURFQSBwbHVnaW4uCiAgTmF2aWdhdGUgdG8gKipGaWxlID4gU2V0dGluZ3MgPiBUb29scyA+IENoZWNrc3R5bGUqKiBhbmQgaW4gKipDb25maWd1cmF0aW9uIEZpbGUqKiBjbGljayAqKkFkZCoqICgrIHNpZ24gb24gdGhlIHJpZ2h0KSwgaW5kaWNhdGUgdGhlIHBhdGggb2YgeW91ciBjaGVja3N0eWxlLnhtbCBhbmQgY2xpY2sgbmV4dC4KCiFbQ29uZmlndXJlIHRoZSBDaGVja3N0eWxlIElERUEgLSBGaXJzdF0oZG9jcy9jaGVja3N0eWxlL2NvbmZpZ3VyZS1jaGVja3N0eWxlLWludGVsbGlqLWZpcnN0LnBuZykKCi0gV2l0aCB0aGUgZmlsZSBpbXBvcnRlZCwgZG9uJ3QgZm9yZ2V0IHRvIGxlYXZlIGl0IHNlbGVjdGVkIGFzICoqQWN0aXZlKiouCgohW0NvbmZpZ3VyZSB0aGUgQ2hlY2tzdHlsZSBJREVBIC0gU2Vjb25kXShkb2NzL2NoZWNrc3R5bGUvY29uZmlndXJlLWNoZWNrc3R5bGUtaW50ZWxsaWotc2Vjb25kLnBuZykKCi0gTm93IGxldCdzIGFkZCB0aGUgc2FtZSBjaGVja3N0eWxlIGZpbGUgdG8gdGhlIEludGVsbGlKIHNldHRpbmdzIGl0c2VsZiwgc28gd2hlbiB3ZSB1c2UgdGhlIGRlZmF1bHQgZm9ybWF0dGluZyBzaG9ydGN1dHMgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGxvb2sgZm9yIENoZWNrc3R5bGUgTWFpbi4KICBXaXRoaW4gc2V0dGluZ3MsIGdvIHRvICoqRWRpdG9yID4gQ29kZSBTdHlsZSA+IEphdmEqKiBhbmQgaW1wb3J0IHRoZSBmaWxlIGFzIHNob3duIGluIHRoZSBpbWFnZSBiZWxvdzoKCiFbU2V0IGNvZGUgc3R5bGUgbG9vayBjaGVja3N0eWxlXShkb2NzL2NoZWNrc3R5bGUvc2V0LWNvZGUtc3R5bGUtbG9vay1jaGVja3N0eWxlLnBuZykKCi0gT25jZSB0aGVzZSBzZXR0aW5ncyBhcmUgZmluaXNoZWQsIHRoZSBDaGVja1N0eWxlIG9wdGlvbiB3aWxsIGFwcGVhciBhdCB0aGUgYm90dG9tIG9mIEludGVsbGlKIGFuZCB3aGVuIGNsaWNraW5nLCB0aGUgc2NyZWVuIGJlbG93IHdpbGwgYXBwZWFyLgogIEF0IHRoaXMgcG9pbnQsIGluIFJ1bGVzIHNlbGVjdCB0aGUgb25lIHlvdSBpbXBvcnRlZCBpbiB0aGUgcHJldmlvdXMgc3RlcHMgYW5kIHJ1biB0aGUgdmVyaWZpY2F0aW9uLgoKLSBJbiBJbnRlbGxpaiBJREVBLCBzZWxlY3QgdGhlIHByb2plY3QsIHBhY2thZ2Uocykgb3IgY2xhc3MoZXMpIGFuZCAqKlJpZ2h0IGNsaWNrID4gQW5hbHlzZSA+IEluc3BlY3QgQ29kZS4uLiA+IE9LKiogdGhlbiBwbHVnaW4gd2lsbCBpbmRpY2F0ZSB0aGUgcHJvYmxlbXMgZm91bmQuCgo8L2RldGFpbHM+CgotLS0KCiMjIDptZW1vOiBMaWNlbnNlClRoaXMgcHJvamVjdCBpcyB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSB0aGUgW0xJQ0VOU0VdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5zaWx2YTQxL2N1cnJlbmN5LXRyYW5zYWN0aW9uL2Jsb2IvbWFpbi9MSUNFTlNFKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCkRldmVsb3BlZCBieSBEYW5pbG8gU2lsdmEgOndhdmU6IFtHZXQgaW4gdG91Y2ghXShodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vZGFuaWxvc2lsdmFwLykKCltTcHJpbmddOiBodHRwczovL3NwcmluZy5pby8KW1NwcmluZyBXZWJGbHV4XTogaHR0cHM6Ly9kb2NzLnNwcmluZy5pby9zcHJpbmctZnJhbWV3b3JrL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvaHRtbC93ZWItcmVhY3RpdmUuaHRtbApbUmVhY3RpdmUgTW9uZ29EQiBFbWJlZGRlZF06IGh0dHBzOi8vZ2l0aHViLmNvbS9mbGFwZG9vZGxlLW9zcy9kZS5mbGFwZG9vZGxlLmVtYmVkLm1vbmdvCltQcm9qZWN0IFJlYWN0b3JdOiBodHRwczovL3Byb2plY3RyZWFjdG9yLmlvLwpbT3BlbiBBUEldOiBodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8KW1dpcmVtb2NrXTogaHR0cDovL3dpcmVtb2NrLm9yZy8KW0xvbWJva106IGh0dHBzOi8vcHJvamVjdGxvbWJvay5vcmcvCltHaXRIdWIgQWN0aW9uc106IGh0dHBzOi8vZ2l0aHViLmNvbS9mZWF0dXJlcy9hY3Rpb25zCltIZXJva3VdOiBodHRwczovL3d3dy5oZXJva3UuY29tL3doYXQKW01hdmVuXTogaHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnL2luc3RhbGwuaHRtbApbSmF2YSAxMV06IGh0dHA6Ly93d3cub3JhY2xlLmNvbS90ZWNobmV0d29yay9qYXZhL2phdmFzZS9kb3dubG9hZHMvaW5kZXguaHRtbA== readmeEtag: '"ac061ac9c9ff55a56d1048977aeb238dc1550477"' readmeLastModified: Sat, 20 Nov 2021 04:07:31 GMT repositoryId: 428406436 description: >- Simple, fast and reactive application to convert values between all currencies. created: '2021-11-15T20:07:30Z' updated: '2021-11-20T04:08:28Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: DanSilva41 logo: https://avatars.githubusercontent.com/u/16976267?v=4 license: MIT repoEtag: '"b9bdfc2e880839a382c44c52420cbe7e0a637abed2a634c54b6abcd076923064"' repoLastModified: Sat, 20 Nov 2021 04:08:28 GMT foundInMaster: true category: - Description Validators - Server Implementations id: 4d3b61994b4494edb5ef3547579ccefa - source: openapi3 tags repository: https://github.com/sshehrozali/dart-swaggergen-client v3: true id: 65ced9380360fbf91458408b214cbc69 repositoryMetadata: base64Readme: >- IyBzd2FnZ2VyClRoaXMgaXMgYSBzYW1wbGUgc2VydmVyIFBldHN0b3JlIHNlcnZlci4gIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCAgICAgU3dhZ2dlciBhdCBbaHR0cDovL3N3YWdnZXIuaW9dKGh0dHA6Ly9zd2FnZ2VyLmlvKSBvciBvbiBbaXJjLmZyZWVub2RlLm5ldCwgI3N3YWdnZXJdKGh0dHA6Ly9zd2FnZ2VyLmlvL2lyYy8pLiAgICAgIEZvciB0aGlzIHNhbXBsZSwgeW91IGNhbiB1c2UgdGhlIGFwaSBrZXkgYHNwZWNpYWwta2V5YCB0byB0ZXN0IHRoZSBhdXRob3JpemF0aW9uICAgICBmaWx0ZXJzLgoKVGhpcyBEYXJ0IHBhY2thZ2UgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhlIFtTd2FnZ2VyIENvZGVnZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4pIHByb2plY3Q6CgotIEFQSSB2ZXJzaW9uOiAxLjAuMAotIEJ1aWxkIHBhY2thZ2U6IGlvLnN3YWdnZXIuY29kZWdlbi5sYW5ndWFnZXMuRGFydENsaWVudENvZGVnZW4KCiMjIFJlcXVpcmVtZW50cwoKRGFydCAxLjIwLjAgb3IgbGF0ZXIgT1IgRmx1dHRlciAwLjAuMjAgb3IgbGF0ZXIKCiMjIEluc3RhbGxhdGlvbiAmIFVzYWdlCgojIyMgR2l0aHViCklmIHRoaXMgRGFydCBwYWNrYWdlIGlzIHB1Ymxpc2hlZCB0byBHaXRodWIsIHBsZWFzZSBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgaW4gcHVic3BlYy55YW1sCmBgYApuYW1lOiBzd2FnZ2VyCnZlcnNpb246IDEuMC4wCmRlc2NyaXB0aW9uOiBTd2FnZ2VyIEFQSSBjbGllbnQKZGVwZW5kZW5jaWVzOgogIHN3YWdnZXI6CiAgICBnaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS8vLmdpdAogICAgICB2ZXJzaW9uOiAnYW55JwpgYGAKCiMjIyBMb2NhbApUbyB1c2UgdGhlIHBhY2thZ2UgaW4geW91ciBsb2NhbCBkcml2ZSwgcGxlYXNlIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBpbiBwdWJzcGVjLnlhbWwKYGBgCmRlcGVuZGVuY2llczoKICBzd2FnZ2VyOgogICAgcGF0aDogL3BhdGgvdG8vc3dhZ2dlcgpgYGAKCiMjIFRlc3RzCgpUT0RPCgojIyBHZXR0aW5nIFN0YXJ0ZWQKClBsZWFzZSBmb2xsb3cgdGhlIFtpbnN0YWxsYXRpb24gcHJvY2VkdXJlXSgjaW5zdGFsbGF0aW9uLS11c2FnZSkgYW5kIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmc6CgpgYGBkYXJ0CmltcG9ydCAncGFja2FnZTpzd2FnZ2VyL2FwaS5kYXJ0JzsKCi8vIFRPRE8gQ29uZmlndXJlIE9BdXRoMiBhY2Nlc3MgdG9rZW4gZm9yIGF1dGhvcml6YXRpb246IHBldHN0b3JlX2F1dGgKLy9zd2FnZ2VyLmFwaS5Db25maWd1cmF0aW9uLmFjY2Vzc1Rva2VuID0gJ1lPVVJfQUNDRVNTX1RPS0VOJzsKCnZhciBhcGlfaW5zdGFuY2UgPSBuZXcgUGV0QXBpKCk7CnZhciBib2R5ID0gbmV3IFBldCgpOyAvLyBQZXQgfCBQZXQgb2JqZWN0IHRoYXQgbmVlZHMgdG8gYmUgYWRkZWQgdG8gdGhlIHN0b3JlCgp0cnkgewogICAgYXBpX2luc3RhbmNlLmFkZFBldChib2R5KTsKfSBjYXRjaCAoZSkgewogICAgcHJpbnQoIkV4Y2VwdGlvbiB3aGVuIGNhbGxpbmcgUGV0QXBpLT5hZGRQZXQ6ICRlXG4iKTsKfQoKYGBgCgojIyBEb2N1bWVudGF0aW9uIGZvciBBUEkgRW5kcG9pbnRzCgpBbGwgVVJJcyBhcmUgcmVsYXRpdmUgdG8gKmh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby92MioKCkNsYXNzIHwgTWV0aG9kIHwgSFRUUCByZXF1ZXN0IHwgRGVzY3JpcHRpb24KLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tCipQZXRBcGkqIHwgWyoqYWRkUGV0KipdKGRvY3MvL1BldEFwaS5tZCNhZGRwZXQpIHwgKipQT1NUKiogL3BldCB8IEFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlCipQZXRBcGkqIHwgWyoqZGVsZXRlUGV0KipdKGRvY3MvL1BldEFwaS5tZCNkZWxldGVwZXQpIHwgKipERUxFVEUqKiAvcGV0L3twZXRJZH0gfCBEZWxldGVzIGEgcGV0CipQZXRBcGkqIHwgWyoqZmluZFBldHNCeVN0YXR1cyoqXShkb2NzLy9QZXRBcGkubWQjZmluZHBldHNieXN0YXR1cykgfCAqKkdFVCoqIC9wZXQvZmluZEJ5U3RhdHVzIHwgRmluZHMgUGV0cyBieSBzdGF0dXMKKlBldEFwaSogfCBbKipmaW5kUGV0c0J5VGFncyoqXShkb2NzLy9QZXRBcGkubWQjZmluZHBldHNieXRhZ3MpIHwgKipHRVQqKiAvcGV0L2ZpbmRCeVRhZ3MgfCBGaW5kcyBQZXRzIGJ5IHRhZ3MKKlBldEFwaSogfCBbKipnZXRQZXRCeUlkKipdKGRvY3MvL1BldEFwaS5tZCNnZXRwZXRieWlkKSB8ICoqR0VUKiogL3BldC97cGV0SWR9IHwgRmluZCBwZXQgYnkgSUQKKlBldEFwaSogfCBbKip1cGRhdGVQZXQqKl0oZG9jcy8vUGV0QXBpLm1kI3VwZGF0ZXBldCkgfCAqKlBVVCoqIC9wZXQgfCBVcGRhdGUgYW4gZXhpc3RpbmcgcGV0CipQZXRBcGkqIHwgWyoqdXBkYXRlUGV0V2l0aEZvcm0qKl0oZG9jcy8vUGV0QXBpLm1kI3VwZGF0ZXBldHdpdGhmb3JtKSB8ICoqUE9TVCoqIC9wZXQve3BldElkfSB8IFVwZGF0ZXMgYSBwZXQgaW4gdGhlIHN0b3JlIHdpdGggZm9ybSBkYXRhCipQZXRBcGkqIHwgWyoqdXBsb2FkRmlsZSoqXShkb2NzLy9QZXRBcGkubWQjdXBsb2FkZmlsZSkgfCAqKlBPU1QqKiAvcGV0L3twZXRJZH0vdXBsb2FkSW1hZ2UgfCB1cGxvYWRzIGFuIGltYWdlCipTdG9yZUFwaSogfCBbKipkZWxldGVPcmRlcioqXShkb2NzLy9TdG9yZUFwaS5tZCNkZWxldGVvcmRlcikgfCAqKkRFTEVURSoqIC9zdG9yZS9vcmRlci97b3JkZXJJZH0gfCBEZWxldGUgcHVyY2hhc2Ugb3JkZXIgYnkgSUQKKlN0b3JlQXBpKiB8IFsqKmdldEludmVudG9yeSoqXShkb2NzLy9TdG9yZUFwaS5tZCNnZXRpbnZlbnRvcnkpIHwgKipHRVQqKiAvc3RvcmUvaW52ZW50b3J5IHwgUmV0dXJucyBwZXQgaW52ZW50b3JpZXMgYnkgc3RhdHVzCipTdG9yZUFwaSogfCBbKipnZXRPcmRlckJ5SWQqKl0oZG9jcy8vU3RvcmVBcGkubWQjZ2V0b3JkZXJieWlkKSB8ICoqR0VUKiogL3N0b3JlL29yZGVyL3tvcmRlcklkfSB8IEZpbmQgcHVyY2hhc2Ugb3JkZXIgYnkgSUQKKlN0b3JlQXBpKiB8IFsqKnBsYWNlT3JkZXIqKl0oZG9jcy8vU3RvcmVBcGkubWQjcGxhY2VvcmRlcikgfCAqKlBPU1QqKiAvc3RvcmUvb3JkZXIgfCBQbGFjZSBhbiBvcmRlciBmb3IgYSBwZXQKKlVzZXJBcGkqIHwgWyoqY3JlYXRlVXNlcioqXShkb2NzLy9Vc2VyQXBpLm1kI2NyZWF0ZXVzZXIpIHwgKipQT1NUKiogL3VzZXIgfCBDcmVhdGUgdXNlcgoqVXNlckFwaSogfCBbKipjcmVhdGVVc2Vyc1dpdGhBcnJheUlucHV0KipdKGRvY3MvL1VzZXJBcGkubWQjY3JlYXRldXNlcnN3aXRoYXJyYXlpbnB1dCkgfCAqKlBPU1QqKiAvdXNlci9jcmVhdGVXaXRoQXJyYXkgfCBDcmVhdGVzIGxpc3Qgb2YgdXNlcnMgd2l0aCBnaXZlbiBpbnB1dCBhcnJheQoqVXNlckFwaSogfCBbKipjcmVhdGVVc2Vyc1dpdGhMaXN0SW5wdXQqKl0oZG9jcy8vVXNlckFwaS5tZCNjcmVhdGV1c2Vyc3dpdGhsaXN0aW5wdXQpIHwgKipQT1NUKiogL3VzZXIvY3JlYXRlV2l0aExpc3QgfCBDcmVhdGVzIGxpc3Qgb2YgdXNlcnMgd2l0aCBnaXZlbiBpbnB1dCBhcnJheQoqVXNlckFwaSogfCBbKipkZWxldGVVc2VyKipdKGRvY3MvL1VzZXJBcGkubWQjZGVsZXRldXNlcikgfCAqKkRFTEVURSoqIC91c2VyL3t1c2VybmFtZX0gfCBEZWxldGUgdXNlcgoqVXNlckFwaSogfCBbKipnZXRVc2VyQnlOYW1lKipdKGRvY3MvL1VzZXJBcGkubWQjZ2V0dXNlcmJ5bmFtZSkgfCAqKkdFVCoqIC91c2VyL3t1c2VybmFtZX0gfCBHZXQgdXNlciBieSB1c2VyIG5hbWUKKlVzZXJBcGkqIHwgWyoqbG9naW5Vc2VyKipdKGRvY3MvL1VzZXJBcGkubWQjbG9naW51c2VyKSB8ICoqR0VUKiogL3VzZXIvbG9naW4gfCBMb2dzIHVzZXIgaW50byB0aGUgc3lzdGVtCipVc2VyQXBpKiB8IFsqKmxvZ291dFVzZXIqKl0oZG9jcy8vVXNlckFwaS5tZCNsb2dvdXR1c2VyKSB8ICoqR0VUKiogL3VzZXIvbG9nb3V0IHwgTG9ncyBvdXQgY3VycmVudCBsb2dnZWQgaW4gdXNlciBzZXNzaW9uCipVc2VyQXBpKiB8IFsqKnVwZGF0ZVVzZXIqKl0oZG9jcy8vVXNlckFwaS5tZCN1cGRhdGV1c2VyKSB8ICoqUFVUKiogL3VzZXIve3VzZXJuYW1lfSB8IFVwZGF0ZWQgdXNlcgoKCiMjIERvY3VtZW50YXRpb24gRm9yIE1vZGVscwoKIC0gW0FwaVJlc3BvbnNlXShkb2NzLy9BcGlSZXNwb25zZS5tZCkKIC0gW0NhdGVnb3J5XShkb2NzLy9DYXRlZ29yeS5tZCkKIC0gW09yZGVyXShkb2NzLy9PcmRlci5tZCkKIC0gW1BldF0oZG9jcy8vUGV0Lm1kKQogLSBbVGFnXShkb2NzLy9UYWcubWQpCiAtIFtVc2VyXShkb2NzLy9Vc2VyLm1kKQoKCiMjIERvY3VtZW50YXRpb24gRm9yIEF1dGhvcml6YXRpb24KCgojIyBhcGlfa2V5CgotICoqVHlwZSoqOiBBUEkga2V5Ci0gKipBUEkga2V5IHBhcmFtZXRlciBuYW1lKio6IGFwaV9rZXkKLSAqKkxvY2F0aW9uKio6IEhUVFAgaGVhZGVyCgojIyBwZXRzdG9yZV9hdXRoCgotICoqVHlwZSoqOiBPQXV0aAotICoqRmxvdyoqOiBpbXBsaWNpdAotICoqQXV0aG9yaXphdGlvbiBVUkwqKjogaHR0cDovL3BldHN0b3JlLnN3YWdnZXIuaW8vb2F1dGgvZGlhbG9nCi0gKipTY29wZXMqKjogCiAtICoqd3JpdGU6cGV0cyoqOiBtb2RpZnkgcGV0cyBpbiB5b3VyIGFjY291bnQKIC0gKipyZWFkOnBldHMqKjogcmVhZCB5b3VyIHBldHMKCgojIyBBdXRob3IKCmFwaXRlYW1Ac3dhZ2dlci5pbwoKCg== readmeEtag: '"3a144a5d3bd115a160fef34ca633bbcd9e2e1335"' readmeLastModified: Thu, 23 Jun 2022 09:18:23 GMT repositoryId: 506573218 description: >- Dart client-side code generated using Swagger Codegen and OpenAPI 3.0 specifications. created: '2022-06-23T09:17:30Z' updated: '2022-09-30T09:17:03Z' language: Dart archived: false stars: 0 watchers: 1 forks: 0 owner: sshehrozali logo: https://avatars.githubusercontent.com/u/58667536?v=4 repoEtag: '"22867485bee969aa3e83c9f304127e79908dce2772fa00691c2fabdc20ba7ec4"' repoLastModified: Fri, 30 Sep 2022 09:17:03 GMT category: Parsers foundInMaster: true - source: https://openapi.tools/ name: BlocklyAutomation category: - Code Generators - SDK - Documentation - Testing link: https://ignatandrei.github.io/BlocklyAutomation/ repository: http://github.com/ignatandrei/blocklyautomation language: - Javascript - .NET source_description: >- Input any OpenAPI document to have generated Blocks in Blockly form to test and generate documentation. v3: true v3_1: true repositoryMetadata: base64Readme: >- IyBWaXN1YWxBUEkgLSBBZGQgKCB0byB5b3VyIHwgIGluc2lkZSB5b3VyICkgYXBwbGljYXRpb24gTG93Q29kZSBNYWNyb3MgZm9yIFlPVVIgQVBJIC8gSFRUUCBDYWxscwoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUJBREdFOlNUQVJUIC0gRG8gbm90IHJlbW92ZSBvciBtb2RpZnkgdGhpcyBzZWN0aW9uIC0tPgpbIVtBbGwgQ29udHJpYnV0b3JzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2FsbF9jb250cmlidXRvcnMtMi1vcmFuZ2Uuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oI2NvbnRyaWJ1dG9ycy0pCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1CQURHRTpFTkQgLS0+CgpCbG9ja2x5IEF1dG9tYXRpb24gOiAgaXMgYSB0b29sIGZvciBMb3dDb2RlIC8gYXV0b21hdGlvbiBvZiBzaXRlcyAoU3dhZ2dlciAvIE9wZW5BUEkgLyBSUEEgKSBhbmQgUEMgbWFkZSBvZiBCbG9ja2x5LiAKCiMgSG93IHRvIHVzZSBpZiB5b3UgYXJlCgojIyBhIGJhY2tlbmQgZGV2ZWxvcGVyIHdpdGggYW4gUkVTVCAvIE9wZW5BUEkgLyBTd2FnZ2VyIGVuYWJsZWQgc2l0ZSBhbmQgSSB3YW50IHRvIHNob3cgdGhlIHVzZSBvZiBteSBzaXRlCgoKVXNlIHRoZSBhcHByb3BpYXRlIHBhY2thZ2U6IAoKIyMjIFtOZXRDb3JlXShodHRwczovL2dpdGh1Yi5jb20vaWduYXRhbmRyZWkvbmV0Y29yZWJsb2NrbHkvKSAgLCBtYWRlIGJ5IEFuZHJlaSBJZ25hdAoKLk5FVCBDb3JlOiBbIVtOdWdldF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9udWdldC9kdC9OZXRDb3JlMkJsb2NrbHkpXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTmV0Q29yZTJCbG9ja2x5LykKCk1vcmUgZGV0YWlscyBhdCBodHRwczovL2dpdGh1Yi5jb20vaWduYXRhbmRyZWkvbmV0Y29yZWJsb2NrbHkvCgoKIyMjIFtKYXZhXShodHRwczovL2dpdGh1Yi5jb20vZWNpdWNhL2Jsb2NrbHktYXV0b21hdGlvbi1zdGFydGVyLXdlYm12Yy11aSkgLCBGdWxsIGV4YW1wbGUgYnkgRW1hbnVlbCBDaXVjYSAKCkphdmEgU3ByaW5nIDogWyFbTWF2ZW4gQ2VudHJhbF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9tYXZlbi1jZW50cmFsL3YvaW8uZ2l0aHViLmVjaXVjYS5ibG9ja2x5L2Jsb2NrbHktYXV0b21hdGlvbi1zdGFydGVyLXdlYm12Yy11aSldKGh0dHBzOi8vY2VudHJhbC5zb25hdHlwZS5jb20vYXJ0aWZhY3QvaW8uZ2l0aHViLmVjaXVjYS5ibG9ja2x5L2Jsb2NrbHktYXV0b21hdGlvbi1zdGFydGVyLXdlYm12Yy11aS8pCgpUaGUgTWF2ZW4gaXMgaHR0cHM6Ly9jZW50cmFsLnNvbmF0eXBlLmNvbS9hcnRpZmFjdC9pby5naXRodWIuZWNpdWNhLmJsb2NrbHkvYmxvY2tseS1hdXRvbWF0aW9uLXN0YXJ0ZXItd2VibXZjLXVpLwoKVGhlIHJlcG8gd2l0aCBleGFtcGxlIGlzIGh0dHBzOi8vZ2l0aHViLmNvbS9lY2l1Y2EvYmxvY2tseS1hdXRvbWF0aW9uLXN0YXJ0ZXItd2VibXZjLXVpIAoKCiMjIyBbTm9kZV0oaHR0cHM6Ly9naXRodWIuY29tL2lnbmF0YW5kcmVpL0Jsb2NrbHlBdXRvbWF0aW9uL3dpa2kvbm9kZSkgLCBtYWRlIGJ5IEFuZHJlaSBJZ25hdAoKTm9kZTogWyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L25vZGUyLWJsb2NrbHkpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9ub2RlLWJsb2NrbHk/KQoKTW9yZSBkZXRhaWxzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9pZ25hdGFuZHJlaS9CbG9ja2x5QXV0b21hdGlvbi93aWtpL25vZGUKCiMjIyBbUEhQXShodHRwczovL2dpdGh1Yi5jb20vVHluYWVsL2xhcmF2ZWwtYmxvY2tseS1hdXRvbWF0aW9uKSAsIG1hZGUgYnkgQ2Fyb2wgUGVsdQoKCgpQYWNrYWdpc3QgOiBbIVtwaHBdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L3YvY2Fyb2xwZWx1L2Jsb2NrbHktYXV0b21hdGlvbildKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9jYXJvbHBlbHUvYmxvY2tseS1hdXRvbWF0aW9uKQoKTW9yZSBkZXRhaWxzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9UeW5hZWwvbGFyYXZlbC1ibG9ja2x5LWF1dG9tYXRpb24KCgoKCiMjIERvY2tlciBFeHRlbnNpb24KCmh0dHBzOi8vb3Blbi5kb2NrZXIuY29tL2V4dGVuc2lvbnMvbWFya2V0cGxhY2U/ZXh0ZW5zaW9uSWQ9aWduYXRhbmRyZWkvYmxvY2tseS1hdXRvbWF0aW9uCgoKIyMjIE1hbnVhbAoKRG93bmxvYWQgdGhlIEhUTUwgcmVsZWFzZSBbQmxvY2tseUF1dG9tYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9pZ25hdGFuZHJlaS9CbG9ja2x5QXV0b21hdGlvbi9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVsZWFzZUJsb2NrbHlBdXRvbWF0aW9uLnppcC8pIC4KCkZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSB3aWtpIGZpbGUuICAKCiMjIyMgW01hbnVhbCBKYXZhXShodHRwczovL2dpdGh1Yi5jb20vY29zbWlucG9wZXNjdTE0L21hdGgtb3BlcmF0aW9ucy1zd2FnZ2VyKSAsIE1hbnVhbCBleGFtcGxlIGJ5IENvc21pbiBQb3Blc2N1IAoKRXhhbXBsZSBieSBDb3NtaW4gUG9wZXNjdSBhdCBodHRwczovL2dpdGh1Yi5jb20vY29zbWlucG9wZXNjdTE0L21hdGgtb3BlcmF0aW9ucy1zd2FnZ2VyCgoKCiMjIGEgZnJvbnRlbmQgIGRldmVsb3BlciB0aGF0IGZpbmRzIGEgYnVnIGluIGEgUkVTVCAvIE9wZW5BUEkgLyBTd2FnZ2VyIGVuYWJsZWQgc2l0ZQoKWW91IHdhbnQgdG8gc2hvdyB0byB0aGUgYmFja2VuZCBkZXZlbG9wZXIgaG93IHRvIHJlcHJvZHVjZSB0aGUgcHJvYmxlbSAuCgpJZiB5b3UgY29udHJvbCB0aGUgc2l0ZSAsIHRoZW4geW91IGNhbiB1c2UgdGhlIFtCbG9ja2x5QXV0b21hdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL2lnbmF0YW5kcmVpL0Jsb2NrbHlBdXRvbWF0aW9uL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC9yZWxlYXNlQmxvY2tseUF1dG9tYXRpb24uemlwLykgdG8gcmVwcm9kdWNlIHRoZSBwcm9ibGVtLgoKRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhlIHdpa2kgZmlsZS4gIAoKSWYgeW91IGRvIG5vdCBjb250cm9sIHRoZSBzaXRlLCB0aGVuIGluc3RhbGwgdGhlIGFwcGxpY2F0aW9uIGZyb20gaHR0cDovL2JhLnNlcnZpY2lpcGV3ZWIucm8vIGFuZCB0aGVuIHVzZSBpdCB0byByZXByb2R1Y2UgdGhlIHByb2JsZW0uICggd2lraSBzaXRlIGNvbWluZyB3aXRoIGRldGFpbHMpIAoKIyMgYSB3ZWIgc2l0ZSBhcHBsaWNhdGlvbiB0ZXN0ZXIKSWYgeW91IGNvbnRyb2wgdGhlIHNpdGUgLCB0aGVuIGNhbiB1c2UgdGhlIGh0dHBzOi8vZ2l0aHViLmNvbS9pZ25hdGFuZHJlaS9CbG9ja2x5QXV0b21hdGlvbi9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVsZWFzZUJsb2NrbHlBdXRvbWF0aW9uLnppcC8gIGFuZCB0aGVuIHVzZSBpdCB0byByZXByb2R1Y2UgdGhlIHByb2JsZW0uICggd2lraSBzaXRlIGNvbWluZyB3aXRoIGRldGFpbHMpIC4KCklmIHlvdSBkb2VzIG5vdCBjb250cm9sIHRoZSBzaXRlLCB0aGVuIGluc3RhbGwgdGhlIGFwcGxpY2F0aW9uIGZyb20gaHR0cDovL2JhLnNlcnZpY2lpcGV3ZWIucm8vIGFuZCB0aGVuIHVzZSBpdCB0byBtYWtlIHRlc3QgY2FzZXMuICggd2lraSBzaXRlIGNvbWluZyB3aXRoIGRldGFpbHMpIAoKCiMjIFtEb2NrZXIgRXh0ZW5zaW9uXShodHRwczovL2dpdGh1Yi5jb20vaWduYXRhbmRyZWkvQmxvY2tseUF1dG9tYXRpb24vd2lraS9Eb2NrZXJFeHRlbnNpb24pCgpQbGVhc2Ugc2VlIFtEb2NrZXIgRXh0ZW5zaW9uXShodHRwczovL2dpdGh1Yi5jb20vaWduYXRhbmRyZWkvQmxvY2tseUF1dG9tYXRpb24vd2lraS9Eb2NrZXJFeHRlbnNpb24pClNlZSAKIyMgbm90IGEgcHJvZ3JhbW1lci4gIEkgd2FudCB0byBhdXRvbWF0ZS9nYXRoZXIgZGF0YSBmcm9tIHNldmVyYWwgc2l0ZXMgKCBwdWJsaWMgb3IgcHJpdmF0ZSApCgpZb3Ugd2FudCB0byBvYnRhaW4gc29tZSBkYXRhIGZyb20gdGhlIHdlYi4gRm9yIGV4YW1wbGUsIGV4dHJhY3QgdGhlIGV4Y2hhbmdlIGJldHdlZW4gRVVSIC8gUk9OIC4KCkluc3RhbGwgdGhlIGFwcGxpY2F0aW9uIGZyb20gaHR0cDovL2JhLnNlcnZpY2lpcGV3ZWIucm8vIC4KCkZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSB3aWtpIGZpbGUuCgoKIyMgbm90IGEgcHJvZ3JhbW1lciBhbmRJIHdhbnQgdG8gYXV0b21hdGUgdGhpbmdzIG9uIG15IFBDLiAKCllvdSB3YW50IHRvIG9idGFpbiBzb21lIGRhdGEgZnJvbSB5b3VyIFBDLiBGb3IgZXhhbXBsZSwgZXh0cmFjdCBhbmQgZXhwb3J0IHRvIENTViB0aGUgQ2hyb21lIEJvb2ttYXJrcy4KCkluc3RhbGwgdGhlIGFwcGxpY2F0aW9uIGZyb20gaHR0cDovL2JhLnNlcnZpY2lpcGV3ZWIucm8vIC4KCkZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSB3aWtpIGZpbGUuCgoKCiMjIFN1Z2dlc3QgYSBwdWJsaWMgQVBJIGZvciBCbG9ja2x5QXV0b21hdGlvbgoKSWYgeW91IGhhdmUgYSBwdWJsaWMgQVBJL3NpdGUgdGhhdCB5b3Ugd2FudCB0byBhdXRvbWF0ZSwgcGxlYXNlIHNlbmQgZmlsZSBhbiBpc3N1ZSBhdCBodHRwczovL2dpdGh1Yi5jb20vaWduYXRhbmRyZWkvQmxvY2tseUF1dG9tYXRpb24vaXNzdWVzIAoKCiMjIEhvdyB0byBzZWUgYSBwcmV2aWV3CgoKVG8gc2VlIHRoZSB3aG9sZSBwb3RlbnRpYWwgLCBwbGVhc2UgZ28gdG8gaHR0cDovL2JhLnNlcnZpY2lpcGV3ZWIucm8vIGFuZCBjbGljayBMYXVuY2ggLgoKSWYgeW91IHdhbnQgdG8gc2VlIHNvbWUgd2ViIERlbW8gLCBwbGVhc2UgZ28gdG8gaHR0cHM6Ly9pZ25hdGFuZHJlaS5naXRodWIuaW8vQmxvY2tseUF1dG9tYXRpb24vIGFuZCB0ZXN0IHZhcmlvdXMgSFRUUCByZXF1ZXN0LCBTd2FnZ2VycyBhbmQgbW9yZQoKIyMgSG93IHRvIGluc3RhbGwgb24geW91ciBQQwoKU2VlIFtyZWxlYXNlcyB0YWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9pZ25hdGFuZHJlaS9CbG9ja2x5QXV0b21hdGlvbi9yZWxlYXNlcykKCllvdSBjYW4gZmluZCB0aGUgCgoxLiBBbmd1bGFyIHNpdGUgLCByZWFkeSB0byBiZSBkZXBsb3llZCB0byBhbnkgc2VydmVyCjIuIElJUyBzaXRlICAgLCByZWFkeSB0byBiZSBkZXBsb3llZCBvbiBJSVMKMy4gQSAuTkVUIENvcmUgc2l0ZSwgcmVhZHkgdG8gYmUgZGVwbG95ZWQgb24gTGludXggb3IgV2luZG93cywgc3RhbmRhbG9uZSAoIGFzIGEgc2VydmljZSApCgojIFlvdSBoYXZlIGEgc2l0ZSB3aXRoIE9wZW5BUEkgLyBTd2FnZ2VyLiBXaGF0IHNob3VsZCBJIGRvICA/CgpEb3dubG9hZCBmcm9tIFtyZWxlYXNlcyB0YWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9pZ25hdGFuZHJlaS9CbG9ja2x5QXV0b21hdGlvbi9yZWxlYXNlcykgdGhlIEFuZ3VsYXIgc2l0ZS4gUHV0IGluZGV4Lmh0bWwgYW5kIGFsbCBvdGhlciBmaWxlcyBpbnRvIGEgQkxvY2tseUF1dG9tYXRpb24gZm9sZGVyIGluc2lkZSB5b3VyIHd3d3Jvb3QgIGZvbGRlciAoIG9yIGluIHlvdXIgcHJvamVjdCByb290ICkgYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KCjEuIEl0IGNvdWxkIGJlIGFuIGlkZWEgdG8gbWFwIGV2ZXJ5dGhpbmcgdGhhdCBzdGFydCB3aXRoIC9CbG9ja2x5QXV0b21hdGlvbiB0byAvQmxvY2tseUF1dG9tYXRpb24vaW5kZXguaHRtbCAtIHNlZSBzcmNcTG9hZGVyc1xTaW1wbGVTaXRlIHRvIGhhdmUgYW4gQyMgZXhhbXBsZSAKICAgCjIuIE1vZGlmeSBhc3NldHMvc2V0dGluZ3MuanNvbiB0byBjaGFuZ2UgdGhlIG5hbWUgYW5kIHRoZSBzdGFydGluZyBibG9ja3MKICAgCjMuIE1vZGlmeSBhc3NldHMvbG9hZEF0U3RhcnR1cC9zd2FnZ2Vycy5qc29uIHRvIGFkZCB5b3VyIHN3YWdnZXJzCgo0LiBNb2RpZnkgYXNzZXRzL3Nob3dVc2FnZS9kZW1vQmxvY2tzL2FsbC50eHQgdG8gYWRkIHlvdXIgZGVtbyBmb3IgdGhlIGJsb2NrcyAuIAogICAoIFlvdSBjYW4gY29uc3RydWN0IGFuZCB0aGVuIGRvd25sb2FkIGFuZCBzYXZlIGFzIGZpbGVzKQoKNS4gU2VuZCBtZSBhbiBlbWFpbCB0byBoZWxwIHlvdSAgaWYgc29tZXRoaW5nICBpcyBub3Qgd29ya2luZy4KIyMgSG93IHRvIGN1c3RvbWl6ZQoKVG8gY3VzdG9taXplIHRoZSB0aXRsZSAsIGludHJvZHVjdGlvbiBhbmQgc3RhcnQgYmxvY2tzICwgc2VlIGFzc2V0cy9zZXR0aW5ncy5qc29uCgpUbyBsb2FkIHN3YWdnZXJzIGF0IHN0YXJ0dXAsIHNlZSAgYXNzZXRzL2xvYWRBdFN0YXJ0dXAvc3dhZ2dlcnMuanNvbgoKVG8gY3VzdG9taXplIGRlbW8gYmxvY2tzLGRvd25sb2FkIHlvdXIgYmxvY2tzLCBwdXQgdGhlIHR4dCBmaWxlIGluICBhc3NldHMvc2hvd1VzYWdlL2RlbW9CbG9ja3MvIGFuZCBtb2RpZnkgYXNzZXRzL3Nob3dVc2FnZS9kZW1vQmxvY2tzL2FsbC50eHQKCiMjICBIb3cgdG8gY29udHJpYnV0ZQoKSWYgeW91IGFyZSBhIGJlZ2lubmVyIHRvIGJsb2NrbHksIHNlZSAKCmh0dHBzOi8vZ2l0aHViLmNvbS9pZ25hdGFuZHJlaS9CbG9ja2x5QXV0b21hdGlvbi9pc3N1ZXM/cT1pcyUzQWlzc3VlK2lzJTNBb3BlbitsYWJlbCUzQSUyMmdvb2QrZmlyc3QraXNzdWUlMjIKCiFbR2l0SHViIGlzc3VlcyBieS1sYWJlbF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvaXNzdWVzL2lnbmF0YW5kcmVpL0Jsb2NrbHlBdXRvbWF0aW9uL2dvb2QlMjBmaXJzdCUyMGlzc3VlKQoKWW91IHdpbGwgYmUgbWVudGlvbmVkIGJlbG93IDstKQoKCiMjIENvbnRyaWJ1dG9ycyDinKgKClRoYW5rcyBnb2VzIHRvIHRoZXNlIHdvbmRlcmZ1bCBwZW9wbGUgKFtlbW9qaSBrZXldKGh0dHBzOi8vYWxsY29udHJpYnV0b3JzLm9yZy9kb2NzL2VuL2Vtb2ppLWtleSkpOgoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6U1RBUlQgLSBEbyBub3QgcmVtb3ZlIG9yIG1vZGlmeSB0aGlzIHNlY3Rpb24gLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgo8IS0tIG1hcmtkb3dubGludC1kaXNhYmxlIC0tPgo8dGFibGU+CiAgPHRyPgogICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vYWVueXgtZGVzaWducy5jb20vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMzMTk2MzQxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIiLz48YnIgLz48c3ViPjxiPkJvZ2RhbiBCb2JlPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjZGVzaWduLWFyZWFsc2hhZG93IiB0aXRsZT0iRGVzaWduIj7wn46oPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaWduYXRhbmRyZWkvQmxvY2tseUF1dG9tYXRpb24vY29tbWl0cz9hdXRob3I9YXJlYWxzaGFkb3ciIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8dGQgYWxpZ249ImNlbnRlciI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Fkcmlhbi1iYWR1bGVzY3UiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDk0OTA5NDY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IiIvPjxiciAvPjxzdWI+PGI+QWRyaWFuIEJhZHVsZXNjdTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2V4YW1wbGUtYWRyaWFuLWJhZHVsZXNjdSIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgPC90cj4KPC90YWJsZT4KCjwhLS0gbWFya2Rvd25saW50LXJlc3RvcmUgLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4KCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1MSVNUOkVORCAtLT4KClRoaXMgcHJvamVjdCBmb2xsb3dzIHRoZSBbYWxsLWNvbnRyaWJ1dG9yc10oaHR0cHM6Ly9naXRodWIuY29tL2FsbC1jb250cmlidXRvcnMvYWxsLWNvbnRyaWJ1dG9ycykgc3BlY2lmaWNhdGlvbi4gQ29udHJpYnV0aW9ucyBvZiBhbnkga2luZCB3ZWxjb21lIQ== readmeEtag: '"0b8a3b0a75a8247f4625843bda3826f655a7eb35"' readmeLastModified: Tue, 23 Jul 2024 17:48:16 GMT repositoryId: 427082891 description: >- VisualAPI - LowCode Macros for YOUR API / HTTP Calls : https://visualapi.azurewebsites.net/ created: '2021-11-11T17:14:47Z' updated: '2025-03-23T17:11:34Z' language: JavaScript archived: false stars: 40 watchers: 3 forks: 10 owner: ignatandrei logo: https://avatars.githubusercontent.com/u/153982?v=4 license: MIT repoEtag: '"b66fb339c972682afb29c2a3b793dd7f021da2db621a9b899a2fe2e1025a692a"' repoLastModified: Sun, 23 Mar 2025 17:11:34 GMT foundInMaster: true id: aa2b2e89cc4f3ca16559d1e0a1cef89d - source: openapi3 tags repository: https://github.com/fugerit-org/yaml-doc-maven-plugin v3: true id: 45a49daf369a856447a2dd1a0edd8c87 repositoryMetadata: base64Readme: >- IyB5YW1sLWRvYy1tYXZlbi1wbHVnaW4KCj4g4pqg77iPICoqV2FybmluZzoqKiBBcyBvZiAyMDI1LTA3LTI3IHRoaXMgcmVwb3NpdG9yeSBpcyBhcmNoaXZlZCBhbmQgc3Vic3RpdHV0ZWQgYnkgW29wZW5hcGktZG9jLW1hdmVuLXBsdWdpbl0oaHR0cHM6Ly9naXRodWIuY29tL2Z1Z2VyaXQtb3JnL29wZW5hcGktZG9jLW1hdmVuLXBsdWdpbikgKHNlZSBbZnVnZXJpdC1vcmcvb3BlbmFwaS1kb2MtdG9vbCMxXShodHRwczovL2dpdGh1Yi5jb20vZnVnZXJpdC1vcmcvb3BlbmFwaS1kb2MtdG9vbC9pc3N1ZXMvMSkpLgoKU2ltcGxlIG1hdmVuIHBsdWdpbiBmb3IgW3lhbWwtZG9jLXRvb2xdKGh0dHBzOi8vZ2l0aHViLmNvbS9mdWdlcml0LW9yZy95YW1sLWRvYy10b29sKSBwcm9qZWN0LgoKWyFbS2VlcCBhIENoYW5nZWxvZyB2MS4xLjAgYmFkZ2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY2hhbmdlbG9nLUtlZXAlMjBhJTIwQ2hhbmdlbG9nJTIwdjEuMS4wLSUyM0UwNTczNSldKENIQU5HRUxPRy5tZCkgClshW01hdmVuIENlbnRyYWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tY2VudHJhbC92L29yZy5mdWdlcml0LmphdmEveWFtbC1kb2MtbWF2ZW4tcGx1Z2luLnN2ZyldKGh0dHBzOi8vbXZucmVwb3NpdG9yeS5jb20vYXJ0aWZhY3Qvb3JnLmZ1Z2VyaXQuamF2YS95YW1sLWRvYy1tYXZlbi1wbHVnaW4pClshW2xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGljZW5zZS1BcGFjaGUlMjBMaWNlbnNlJTIwMi4wLXRlYWwuc3ZnKV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9BcGFjaGUtMi4wKQpbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1mdWdlcml0LW9yZ195YW1sLWRvYy1tYXZlbi1wbHVnaW4mbWV0cmljPWFsZXJ0X3N0YXR1cyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9zdW1tYXJ5L25ld19jb2RlP2lkPWZ1Z2VyaXQtb3JnX3lhbWwtZG9jLW1hdmVuLXBsdWdpbikKWyFbQ292ZXJhZ2VdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWZ1Z2VyaXQtb3JnX3lhbWwtZG9jLW1hdmVuLXBsdWdpbiZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1mdWdlcml0LW9yZ195YW1sLWRvYy1tYXZlbi1wbHVnaW4pCgpBY2NlcHRlZCBjb25maWcgcGFyYW1zIGFyZSA6ICAKKiBjb25maWdQYXRoCiogaWRDYXRhbG9nCgpIZXJlIGEgc2FtcGxlIGNvbmZpZ3VyYXRpb24gIDoKCmBgYAoJCQk8cGx1Z2luPgoJCQkJPGdyb3VwSWQ+b3JnLmZ1Z2VyaXQuamF2YTwvZ3JvdXBJZD4KCQkJCTxhcnRpZmFjdElkPnlhbWwtZG9jLW1hdmVuLXBsdWdpbjwvYXJ0aWZhY3RJZD4KCQkJCTx2ZXJzaW9uPiR7eWFtbC1kb2MtdmVyc2lvbn08L3ZlcnNpb24+CQoJCQkJPGNvbmZpZ3VyYXRpb24+CgkJCQkJPGNvbmZpZ1BhdGg+c3JjL2NvbmZpZy95YW1sLWRvYy1jb25maWcueG1sPC9jb25maWdQYXRoPgoJCQkJCTxpZENhdGFsb2c+b3BlbmFwaTwvaWRDYXRhbG9nPgkJCgkJCQk8L2NvbmZpZ3VyYXRpb24+CQkJCQkJCQoJCQkJPGV4ZWN1dGlvbnM+CgkJCQkJPGV4ZWN1dGlvbj4KCQkJCQkJPGlkPm9wZW5hcGk8L2lkPgoJCQkJCQk8Z29hbHM+CgkJCQkJCQk8Z29hbD5nZW5lcmF0ZTwvZ29hbD4KCQkJCQkJPC9nb2Fscz4KCQkJCQk8L2V4ZWN1dGlvbj4JCQoJCQkJPC9leGVjdXRpb25zPgoJCQk8L3BsdWdpbj4JCmBgYA== readmeEtag: '"be24b0358a5ab30a9051d585c6ec11c044ad773e"' readmeLastModified: Sun, 27 Jul 2025 18:59:46 GMT repositoryId: 473247612 description: Simple maven plugin for the yaml-doc-tool project created: '2022-03-23T15:26:14Z' updated: '2025-07-27T19:00:24Z' language: Java archived: true stars: 0 watchers: 1 forks: 0 owner: fugerit-org logo: https://avatars.githubusercontent.com/u/37816284?v=4 license: Apache-2.0 repoEtag: '"e4ab86716f3deaaa1f00f045402bbb5fc1822acd5d82c8cd2c584eae64ff05ff"' repoLastModified: Sun, 27 Jul 2025 19:00:24 GMT category: SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/potjerodekool/openapi-generator v3: true id: 24275a8d228f2d092e16833a20c857f4 repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWdlbmVyYXRvcgpDb2RlIGdlbmVyYXRpb24gZm9yIFNwcmluZ2Jvb3QgYmFzZWQgZnJvbSBvcGVuIGFwaQoKU2VlIHRoZSBbd2lraV0oaHR0cHM6Ly9naXRodWIuY29tL3BvdGplcm9kZWtvb2wvb3BlbmFwaS1nZW5lcmF0b3Ivd2lraSkgaW5mbyBhbmQgZXhwbGFpbmF0aW9ucy4K readmeEtag: '"ad6bbf76a7e9a49ae43ec7d5b3d8fb65196197ee"' readmeLastModified: Fri, 08 Mar 2024 19:43:18 GMT repositoryId: 518195562 description: Code generation for Springboot based from open api created: '2022-07-26T19:41:26Z' updated: '2022-07-26T20:11:04Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: potjerodekool logo: https://avatars.githubusercontent.com/u/141829?v=4 license: Apache-2.0 repoEtag: '"1de852112a173dff3a65f9b7a5a5f2000ada4c9916e8823330a70ea933624dda"' repoLastModified: Tue, 26 Jul 2022 20:11:04 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/sptrakesh/openapi2latex v3: true id: 04cdcfcdb01f0c2c253c27afe50329f7 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJMkxhVGVYCiogW1N0cnVjdHVyZV0oI3N0cnVjdHVyZSkKKiBbVXNhZ2VdKCN1c2FnZSkKICAqIFtJbnN0YWxsIERlcGVuZGVuY2llc10oI2luc3RhbGwtZGVwZW5kZW5jaWVzKQogICogW0NvbW1hbmQgTGluZSBPcHRpb25zXSgjY29tbWFuZC1saW5lLW9wdGlvbnMpCiogW0V4dGVuc2lvbl0oI2V4dGVuc2lvbnMpCiogW0xpbWl0YXRpb25zXSgjbGltaXRhdGlvbnMpCgpVdGlsaXR5IHByb2Nlc3MgdG8gZ2VuZXJhdGUgYSBMYVRlWCBmaWxlIGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgoKVGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBwcm9jZXNzIGlzIHRvIGJlIGFibGUgdG8gZ2VuZXJhdGUgYSBQREYgZG9jdW1lbnQgdGhhdCBjYW4gYmUgZGlzdHJpYnV0ZWQgdG8gaW50ZXJlc3RlZApwYXJ0aWVzLCB3aGVuIHRoZSBzb3VyY2Ugc3BlY2lmaWNhdGlvbnMgYXJlIHByb3RlY3RlZCBieSBhY2Nlc3MgY29udHJvbCAoYW5kIHdoZXJlIHRoZSBzYWlkIHBhcnRpZXMgZG8gbm90IG5lZWQgdG8KYmUgcHJvdmlkZWQgd2l0aCB0aGUgYWNjZXNzIGNyZWRlbnRpYWxzKS4KClRoZSB3b3JrZmxvdyBpcyB0byB1c2UgdGhpcyBwcm9jZXNzIHRvIGdlbmVyYXRlIHRoZSB0YXJnZXQgTGFUZVggZmlsZSwgYW5kIHJ1biBgeGVsYXRleGAgYSBmZXcgdGltZXMgKHVzdWFsbHkKdHdvIHRpbWVzIHRvIGdldCBjcm9zcy1yZWZlcmVuY2VzIHJlc29sdmVkKSBmb3IgdGhlIG91dHB1dCBQREYgZG9jdW1lbnQuICBBbHNvIHJ1biBgbWFrZWluZGV4YCB0byBnZW5lcmF0ZSB0aGUKZG9jdW1lbnQgKmluZGV4KiBpZiBkZXNpcmVkLgoKYGBgc2hlbGwKPHBhdGggdG8+L29hMnRleCAtaSA8cGF0aCB0byBvcGVuYXBpLnlhbWw+IC1vIDxwYXRoIHRvIG91dHB1dCBkaXJlY3Rvcnk+IC1jIC0tdXNlLWNtYXJrCmNkIDxwYXRoIHRvIG91dHB1dCBkaXJlY3Rvcnk+CnhlbGF0ZXggLWludGVyYWN0aW9uPW5vbnN0b3Btb2RlIG9wZW5hcGkKbWFrZWluZGV4IG9wZW5hcGkKeGVsYXRleCAtaW50ZXJhY3Rpb249bm9uc3RvcG1vZGUgb3BlbmFwaQpgYGAKCiMjIFN0cnVjdHVyZQpUaGUgZ2VuZXJhdGVkIExhVGVYIGZpbGVzIGhhdmUgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgKHlvdSBjYW4gb2YgY291cnNlIG1vZGlmeSB0aGUgb3V0cHV0IGZpbGVzIGFzIGRlc2lyZWQpOgoKKiAqKlByZWFtYmxlKiogLSBQcmVhbWJsZSBmb3IgdGhlIGRvY3VtZW50IChgPHBhdGggdG8gb3V0cHV0Pi9wcmVhbWJsZS50ZXhgKS4gIFNldHMgdXAgdmFyaW91cyBwYWNrYWdlcyB0aGF0IGFyZSB1c2VkLgogIEVkaXQgdGhlIGZpbGUgYXMgZGVzaXJlZCwgZXNwZWNpYWxseSB0aGUgKm1haW4gZm9udCogZm9yIHRoZSBkb2N1bWVudC4gIFRoZSBnZW5lcmF0b3Igc2V0cyB0aGUgbWFpbiBmb250IHRvCiAgKkhlbHZldGljYSBOZXVlKiAoYFxzZXRtYWluZm9udFtMaWdhdHVyZXM9VGVYLE51bWJlcnM9T2xkU3R5bGVde0hlbHZldGljYSBOZXVlfWApLiAgQ2hhbmdlIHRvIGFueSBzeXN0ZW0KICBzdXBwb3J0ZWQgZm9udCBhcyBkZXNpcmVkICh0aHJvdWdoIHRoZSBjb21tYW5kIGxpbmUgb3B0aW9uIG9yIGJ5IGVkaXRpbmcgZmlsZSBhcyBkZXNpcmVkIGFmdGVyIGdlbmVyYXRpbmcgdGhlCiAgbGF0ZXggc291cmNlcykuCiAgKiBTZXJpZiBmb250cyBsaWtlICpIZWx2ZXRpY2EqLCAqVmVyZGFuYSogZXRjLiBhcmUgZ29vZCBmb3Igdmlld2luZyB0aGUgUERGIG9uIHNjcmVlbi4KICAqIFVzZSB0cmFkaXRpb25hbCBwcmludCBmcmllbmRseSBmb250cyBsaWtlIHRoZSBMYVRlWCBkZWZhdWx0ICpDb21wdXRlciBNb2Rlcm4qLCAqVGltZXMgTmV3IFJvbWFuKiBldGMgaWYKICAgIHRoZSBwcmltYXJ5IHB1cnBvc2Ugb2YgdGhlIG91dHB1dCBQREYgaXMgcHJpbnQuCiogKipGcm9udG1hdHRlcioqIC0gVGl0bGVwYWdlIGFuZCB0YWJsZSBvZiBjb250ZW50cy4KKiAqKk1haW5tYXR0ZXIqKiAtIENvbnRhaW5zIHR3byBvciB0aHJlZSBwYXJ0cy4KICAqICoqSW5mbyoqIC0gVGhlICppbmZvKiBvYmplY3QgaXMgcHJlc2VudGVkIGFzIHRoZSBmaXJzdCBjaGFwdGVyLiAKICAqICoqRXhhbXBsZXMqKiAtIEFueSBleGFtcGxlcyB0aGF0IGFyZSBkZWZpbmVkIGluIHRoZSBgb3BlbmFwaS5jb21wb25lbnRzLmV4YW1wbGVzYCBzZWN0aW9uLgogICogKipQYXJhbWV0ZXJzKiogLSBBbnkgcGFyYW1ldGVycyB0aGF0IGFyZSAqcmVmZXJlbmNlZCogZnJvbSB0aGUgdmFyaW91cyBBUEkgZW5kcG9pbnRzLiBXaWxsIG9ubHkgbGlzdCByZWZlcmVuY2VkCiAgICBwYXJhbWV0ZXJzLCBub3QgdGhvc2UgdGhhdCBhcmUgZGVmaW5lZCAqaW4tbGluZSouCiAgKiAqKkVuZHBvaW50cyoqIC0gUGFydCB3aXRoIHRoZSBwYXRoIG9wZXJhdGlvbnMgZ3JvdXBlZCBieSB0YWdzLiBFYWNoIHRhZyBpcyBwcmVzZW50ZWQgaW4gYSAqY2hhcHRlciouCiAgKiAqKlNjaGVtYXMqKiAtIFBhcnQgd2l0aCB0aGUgKnNjaGVtYXMqIGRlY2xhcmVkIGFuZCByZWZlcmVuY2VkIGluIHRoZSBzcGVjaWZpY2F0aW9uLiAgRWFjaCAqc2NoZW1hKiBpcyBwcmVzZW50ZWQgaW4gYQogICAgKmNoYXB0ZXIqLiAgU2NoZW1hcyBhcmUgbGlzdGVkIGFscGhhYmV0aWNhbGx5IGJ5IHRoZWlyIGZpbGVuYW1lIGFuZCBlbnRpdHkgbmFtZS4KICAqICoqUmVzcG9uc2VzKiAtIE9wdGlvbmFsIHBhcnQgd2l0aCAqcmVzcG9uc2VzKiBkZWNsYXJlZCBpbiB0aGUgYG9wZW5hcGkuY29tcG9uZW50c2Agc3RydWN0dXJlLiAgSWYgbm9uZSBhcmUgZGVmaW5lZAogICAgbm8gcGFydCBpcyBjcmVhdGVkLgogICogKipSZXF1ZXN0IEJvZGllcyoqIC0gUGFydCB3aXRoIHJlcXVlc3QgYm9kaWVzIHRoYXQgYXJlICpyZWZlcmVuY2VkKiwgbm90IGlmIHRoZXkgYXJlIGRlZmluZWQgaW5saW5lIHdpdGggKnNjaGVtYSogcmVmZXJlbmNlcy4KICAqICoqQ29kZSBTYW1wbGVzKiogLSBJZiB0aGUgYHgtY29kZVNhbXBsZXNgIGV4dGVuc2lvbiBleGlzdHMgZm9yIG9wZXJhdGlvbnMsIHRoZXNlIGFyZSBjb2xsZWN0ZWQgdG9nZXRoZXIgaW50byBhIHRoaXJkCiAgICAqcGFydCouICBDb2RlIHNhbXBsZXMgYXJlIGdyb3VwZWQgdG9nZXRoZXIgdW5kZXIgZWFjaCAqdGFnKiBncm91cCwgd2hpY2ggaXMgcHJlc2VudGVkIGFzIGEgKmNoYXB0ZXIqLgoqICoqQmFja21hdHRlcioqIC0gTGlzdCBvZiB0YWJsZXMsIGFuZCBvcHRpb25hbGx5IGluZGV4LgogICogICoqSW5kZXgqKiAtIE9wZXJhdGlvbiBpZHMgYW5kIHNjaGVtYSBwcm9wZXJ0eSBuYW1lcyBhcmUgYWRkZWQgdG8gaW5kZXguCgpTZWUgW29wZW5hcGkucGRmXShvcGVuYXBpLnBkZikgZm9yIHRoZSBQREYgZ2VuZXJhdGVkIGZyb20gdGhlIHNhbXBsZSAKW3BldHN0b3JlXShodHRwczovL2dpdGh1Yi5jb20vU0xkcmFnb24vZXhhbXBsZS1vcGVuYXBpLXNwZWMvYmxvYi9tYWluL3BldHN0b3JlLW9mZmljaWFsLnlhbWwpCnNwZWNpZmljYXRpb25zLiAgTm90ZSB0aGF0IHRoZSBwZXRzdG9yZSBzYW1wbGUgaGFzIGEgQ29tbW9uTWFyayB0YWJsZSBpbiB0aGUgaW5mb3JtYXRpb24sIHdoaWNoCnRoZSBlbWJlZGRlZCBjb252ZXJ0ZXIgZG9lcyBub3Qgc3VwcG9ydC4gIFRoaXMgc2FtcGxlIHdhcyBnZW5lcmF0ZWQgdXNpbmcgdGhlIGBjbWFya2Agb3B0aW9uLgoKIyMgVXNhZ2UKVGhlIGdlbmVyYXRvciBpcyB3cml0dGVuIGluIEMrKyBhbmQgaGFzIGEgZGVwZW5kZW5jeSBvbiB0aGUgW0Jvb3N0XShodHRwczovL2Jvb3N0Lm9yZy8pIGxpYnJhcmllcy4KCioqTm90ZToqKiBUaGUgb2xkIFtKdWxpYV0oaHR0cHM6Ly9qdWxpYWxhbmcub3JnLykgdmVyc2lvbiBvZiB0aGUgdXRpbGl0eSBpcyBzdGlsbCBhdmFpbGFibGUgaW4gdGhlIGBqdWxpYWAgYnJhbmNoLgoKIyMjIENvbW1hbmQgTGluZSBPcHRpb25zClRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBbbWFpbi5jcHBdKHNyYy9tYWluLmNwcCkgcHJvZ3JhbToKCiogYC0taW5wdXQgfCAtaWAgLSAqKlJlcXVpcmVkKiouIFRoZSBtYWluIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmaWxlIHRvIHBhcnNlLgoqIGAtLW91dHB1dCB8IC1vYCAtICoqUmVxdWlyZWQqKi4gVGhlIG91dHB1dCBMYVRlWCBmaWxlIHRvIGdlbmVyYXRlLiAgQmVzdCB0byBwbGFjZSB0aGlzIGF0IGFub3RoZXIgbG9jYXRpb24gdGhhbiB0aGUgCiAgYXBpIHNwZWNpZmljYXRpb25zLiAgUHJvZ3JhbSB3aWxsIGF0dGVtcHQgdG8gY3JlYXRlIHRoZSBkaXJlY3RvcnkgdHJlZSBpZiBpdCBkb2VzIG5vdCBleGlzdC4gIFNpbmNlIGEgbG90IG9mCiAgZmlsZXMgYXJlIGdlbmVyYXRlZCBieSB0aGlzIHByb2Nlc3MsIGFuZCBmdXJ0aGVyIHdoZW4gcnVubmluZyBMYVRlWCwgaXQgd291bGQgYmUgYmVzdCB0byB3cml0ZSB0aGUgb3V0cHV0IHRvCiAgYSBkZWRpY2F0ZWQgdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKiBgLS1hdXRob3IgfCAtYWAgLSBUaGUgYXV0aG9yIGNyZWRpdCB0byBzaG93IG9uIHRoZSB0aXRsZXBhZ2UuCiogYC0tZm9vdGVyIHwgLWZgIC0gVGhlIHJpZ2h0IHNpZGUgZm9vdGVyIHRleHQgdG8gZGlzcGxheSBmb3IgdGhlIGRvY3VtZW50LgoqIGAtLWZvbnQgfCAtdGAgLSBUaGUgZm9udCB0byB1c2UgZm9yIHRoZSBvdXRwdXQgZG9jdW1lbnQuICBEZWZhdWx0ICpIZWx2ZXRpY2EgTmV1ZSouICBOb3RlIHRoZSBmb250IG11c3QgYmUgYXZhaWxhYmxlCiAgb24gdGhlIHN5c3RlbS4KKiBgLS1vcGVyYXRpb24tc3VtbWFyeSB8IC1zYCAtIEEgZmxhZyB0byBpbmRpY2F0ZSB0aGF0ICoqT3BlcmF0aW9uKiogKnN1bW1hcnkqIHNob3VsZCBiZSB1c2VkIGFzIHNlY3Rpb24gaGVhZGluZ3MgaW5zdGVhZCBvZiAqb3BlcmF0aW9uSWQqLgoqIGAtLXVzZS1jbWFyayB8IC1tYCAtIFVzZSBbY21hcmtdKGh0dHBzOi8vZ2l0aHViLmNvbS9jb21tb25tYXJrL2NtYXJrKSB0byBjb252ZXJ0IGBpbmZvLmRlc2NyaXB0aW9uYCB0byBsYXRleC4KICBSZWNvbW1lbmRlZCBvcHRpb24sIHNpbmNlIHRoZSBkZXNjcmlwdGlvbiBjYW4gYmUgcXVpdGUgbG9uZyBhbmQgY29tcGxpY2F0ZWQsIGFuZCBgY21hcmtgIHNob3VsZCBoYXZlIG11Y2ggbW9yZSAKICBjb21wcmVoZW5zaXZlIHN1cHBvcnQgZm9yIGNvbnZlcnRpbmcgQ29tbW9uTWFyayB0byBsYXRleC4gIE5vdGUgdGhlIHByb2dyYW0gdXNlcyB0aGUgYGNtYXJrYCB1dGlsaXR5IHZpYQogIGBzdGQ6OnN5c3RlbWAsIGFuZCBub3QgdGhlIGxpYnJhcnkuCiogYC0tbG9nLWxldmVsIHwgLWxgIC0gU2V0IHRoZSBsb2dnaW5nIGxldmVsIChgY3JpdGljYWx8d2FybnxpbmZvfGRlYnVnYCkuICBEZWZhdWx0IGBpbmZvYC4KKiBgLS1jb25zb2xlIHwgLWNgIC0gRmxhZyB0byBpbmRpY2F0ZSBsb2dzIHNob3VsZCBhbHNvIGJlIGVjaG9lZCB0byBgc3Rkb3V0YC4KKiBgLS1sb2ctZGlyIHwgLWRgIC0gVGhlIGRpcmVjdG9yeSB1bmRlciB3aGljaCB0aGUgcHJvY2VzcyBsb2cgb3V0cHV0IGlzIHdyaXR0ZW4uICBUaGUgZGlyZWN0b3J5ICptdXN0KiBleGlzdC4KICBEZWZhdWx0IGAvdG1wL2AgLSBub3RlIHRoZSBtYW5kYXRvcnkgdHJhaWxpbmcgYC9gLgoKIyMjIyBFeGFtcGxlClRoZSBmb2xsb3dpbmcgb3B0aW9ucyB3ZXJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHNhbXBsZSBwZXRzdG9yZSBzcGVjaWZpY2F0aW9ucyBkb2N1bWVudC4KYGBgc2hlbGwKL3Vzci9sb2NhbC9zcHQvYmluL29hMnRleCAtaSAvdG1wL3BldHN0b3JlLW9mZmljaWFsLnlhbWwgLW8gL3RtcC9wZXRzdG9yZSAtcyAtYyAtLXVzZS1jbWFyawpgYGAKCiMjIEV4dGVuc2lvbnMKQSBmZXcgZXh0ZW5zaW9ucyB0byB0aGUgc3BlY2lmaWNhdGlvbnMgZGV2ZWxvcGVkIGJ5IFtSZWRvY2x5XShodHRwczovL3JlZG9jbHkuY29tLykgYXJlIHN1cHBvcnRlZC4gCgoqIFNvdXJjZSBjb2RlIHNhbXBsZXMgYXJlIHBhcnNlZCBmcm9tIHRoZSBgeC1jb2RlU2FtcGxlc2AgYXJyYXkgYXR0YWNoZWQgdG8gYW4gb3BlcmF0aW9uLiAgQWxsIGNvZGUgc2FtcGxlcyBhcmUgYXR0YWNoZWQKICB0byBhIHNlcGFyYXRlICpwYXJ0KiBvZiB0aGUgb3V0cHV0IGRvY3VtZW50LCBhbmQgZm9sbG93IHRoZSBzYW1lIGNoYXB0ZXIgb3JnYW5pc2F0aW9uIGFzIHRoZSBBUEkgdGFncy4KKiBUYWcgZ3JvdXBzIGFyZSBwYXJzZWQgZnJvbSB0aGUgYHgtdGFnR3JvdXBzYCBhcnJheSBhdHRhY2hlZCB0byB0aGUgcm9vdCBvZiB0aGUgc3BlY2lmaWNhdGlvbiBkb2N1bWVudC4gIElmIHNwZWNpZmllZAogIGFuIGluaXRpYWwgY2hhcHRlciAqKlRhZyBHcm91cHMqKiBpcyBhZGRlZCwgd2hpY2ggbGlzdHMgdGhlIGdyb3VwaW5ncyB3aXRoIGxpbmtzIHRvIHRoZSAqKlRhZyoqIGNoYXB0ZXJzLgoqIAojIyBCdWlsZApTdGFuZGFyZCBgY21ha2VgIGJ1aWxkIHN5c3RlbS4KCmBgYHNoZWxsCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vc3B0cmFrZXNoL29wZW5hcGkybGF0ZXguZ2l0CmNkIG9wZW5hcGkybGF0ZXgKY21ha2UgLURDTUFLRV9QUkVGSVhfUEFUSD0vdXNyL2xvY2FsL2Jvb3N0IFwKICAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCiAgLURDTUFLRV9JTlNUQUxMX1BSRUZJWD0vdXNyL2xvY2FsL3NwdCBcCiAgLVMgLiAtQiBidWlsZApjbWFrZSAtLWJ1aWxkIGJ1aWxkIC1qMTIKc3VkbyBjbWFrZSAtLWluc3RhbGwgYnVpbGQKYGBgCgojIyBMaW1pdGF0aW9ucwpQcm9iYWJseSB0b28gbWFueSB0byBsaXN0LCBidXQgdGhlIGZvbGxvd2luZyBpdGVtcyBzaG91bGQgYmUga2VwdCBpbiBtaW5kLgoKKiBUaGlzIHByb2Nlc3MgaXMgYmFzZWQgb24gdGhlIHdheSAqSSB3cml0ZSBBUEkgc3BlY2lmaWNhdGlvbnMqLCBhbmQgbWFya3VwIGRlc2NyaXB0aW9ucy4KKiBTY2hlbWEgb2JqZWN0cyBhcmUgYXNzdW1lZCB0byBtb2RlbCBjbG9zZWx5IHRoZWlyIG9yZ2FuaXNhdGlvbiBpbiBhIHNvdXJjZSBjb2RlIGltcGxlbWVudGF0aW9uLiAgVGhpcyBpbiB0dXJuIGltcGxpZXMKICB0aGF0IG5lc3RlZCBzdHJ1Y3R1cmVzIGFyZSByZXByZXNlbnRlZCBhcyBzY2hlbWEgcmVmZXJlbmNlcywgYW5kIG5vdCBsaXN0ZWQgaW4tbGluZSBpbiB0aGUgc2NoZW1hLiAgRGVlcGx5IG5lc3RlZCBpbi1saW5lCiAgc2NoZW1hcyB3b3VsZCBiZSB2ZXJ5IGhhcmQgdG8gcmVwcmVzZW50IGluIGEgcHJpbnRlZCBkb2N1bWVudCBpbiBhbnkgY2FzZS4KKiBNYWlubHkgdGVzdGVkIHdpdGggc3BlY2lmaWNhdGlvbnMgdGhhdCBhcmUgc3BsaXQgaW50byBpbmRpdmlkdWFsIGZpbGVzIC0gcmVwcmVzZW50aW5nIHBhdGhzLCBzY2hlbWFzLCBwYXJhbWV0ZXJzIGV0Yy4KICBNb3N0IHRlc3RpbmcgaGFzIGJlZW4gYWdhaW5zdCBsYXJnZSBoYW5kd3JpdHRlbiBzcGVjaWZpY2F0aW9ucywgd2hpY2ggZm9sbG93cyB0aGUgcHJpbmNpcGxlcyBsYWlkCiAgb3V0IGluIFtzcGxpdCBzcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly9kYXZpZGdhcmNpYS5kZXYvcG9zdHMvaG93LXRvLXNwbGl0LW9wZW4tYXBpLXNwZWMtaW50by1tdWx0aXBsZS1maWxlcy8pLiAgQSBmZXcKICBzaW1wbGUgc2luZ2xlIGZpbGUgc3BlY2lmaWNhdGlvbnMgaGF2ZSBhbHNvIGJlZW4gdGVzdGVkLgoqIE1haW5seSBzdXBwb3J0cyBPcGVuQVBJIHNwZWNpZmljYXRpb24gdmVyc2lvbiBbMy4wLjNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMyksIGFsdGhvdWdoIHNvbWUgcHJvcGVydGllcwogIGZyb20gWzMuMS4wXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy9sYXRlc3QuaHRtbCkgYXJlIGFsc28gaW5jbHVkZWQuCiogT25seSBzdXBwb3J0cyBsb2FkaW5nIGxvY2FsIHNwZWNpZmljYXRpb24gZmlsZXMgaW4gWUFNTCBmb3JtYXQuICBKU09OIGlzIG5vdCBzdXBwb3J0ZWQgYXQgcHJlc2VudC4KKiBOb3QgYWxsIHByb3BlcnRpZXMvYXNwZWN0cyBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhcmUgb3V0cHV0IGluIHRoZSBnZW5lcmF0ZWQgTGFUZVggZmlsZS4gIEkgc2VsZWN0ZWQgd2hhdCBJIGZlbHQgYXJlCiAgbW9zdCByZWxldmFudCB0byBiZSBzaGFyZWQuCiogTWFya2Rvd24gbWFya3VwIG1heSBub3QgYmUgZnVsbHkgdHJhbnNsYXRlZCB0byBMYVRlWC4gIFNlZSBbY29udmVydC5jcHBdKHRlc3QvY29udmVydC5jcHApIGZvciBiYXNpYyB0ZXN0cyBhcm91bmQgdGhlIGltcGxlbWVudGVkLgogICogQm9sZC9pdGFsaWMgYmxvY2tzIG9mIHRleHQgKHNwYW5uaW5nIHBhcmFncmFwaHMpIGFyZSBub3Qgc3VwcG9ydGVkLgoKVGhlIG91dHB1dCBpcyBhIHdyYXBwaW5nIExhVGVYIGZpbGUgdGhhdCBpbmNsdWRlcyBzZXZlcmFsIHNtYWxsZXIgaW5jbHVkZWQgZmlsZXMsIGFuZCBoZW5jZSBjYW4gYmUgZWFzaWx5IG1vZGlmaWVkIAphcyBuZWVkZWQgdG8gZnVydGhlciBjdXN0b21pc2UgdGhlIGZpbmFsIFBERiBkb2N1bWVudC4KCiMjIERlcGVuZGVuY2llcwoqICoqW3JhcGlkeWFtbF0oaHR0cHM6Ly9naXRodWIuY29tL2Jpb2pwcG0vcmFwaWR5YW1sKSoqIFlBTUwgcGFyc2VyIGxpYnJhcnkuICBWaWEgYGNtYWtlIGZldGNoY29udGVudGAKKiAqKltCb29zdF0oaHR0cHM6Ly9ib29zdC5vcmcvKSoqIGV4cGVjdGVkIGxvY2FsIGluc3RhbGxhdGlvbi4KKiAqKltDbGFyYV0oaHR0cHM6Ly9naXRodWIuY29tL2NhdGNob3JnL0NsYXJhKSoqIC0gQ29tbWFuZCBsaW5lIG9wdGlvbnMgcGFyc2VyLiBJbmNsdWRlZCBpbiBwcm9qZWN0LgoqICoqW0NhdGNoMl0oaHR0cHM6Ly9naXRodWIuY29tL2NhdGNob3JnL0NhdGNoMikqKiAtIFRlc3RpbmcgZnJhbWV3b3JrLiBWaWEgYGNtYWtlIGZldGNoY29udGVudGAKKiAqKltOYW5vTG9nXShodHRwczovL2dpdGh1Yi5jb20vSXllbmdhcjExMS9OYW5vTG9nKSoqIC0gTG9nZ2luZyBmcmFtZXdvcmsgdXNlZCBmb3IgdGhlIHByb2plY3QuICBNb2RpZmllZCB2ZXJzaW9uIGluY2x1ZGVkIGluIHByb2plY3Qu readmeEtag: '"6a05f800d342357b65d93c0177b8d0e091b93e17"' readmeLastModified: Mon, 19 Jan 2026 18:21:50 GMT repositoryId: 579668923 description: Generate LaTeX source from OpenAPI specification. created: '2022-12-18T13:32:59Z' updated: '2026-01-19T18:22:37Z' language: C++ archived: false stars: 1 watchers: 1 forks: 0 owner: sptrakesh logo: https://avatars.githubusercontent.com/u/2648309?v=4 license: Apache-2.0 repoEtag: '"f25886d5deb9e40086b3c77a13f6b422581389fbca4f1b224e0d616f8e92bfd9"' repoLastModified: Mon, 19 Jan 2026 18:22:37 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/saphir-lab/api_data_dictionary v3: true id: a89430440ab1168c48ce33d33170f562 repositoryMetadata: base64Readme: >- IyBhcGlfZGF0YV9kaWN0aW9uYXJ5ClRoaXMgc2NyaXB0IGJ1aWxkcyBhIGRhdGEgZGljdGlvbmFyeSBmcm9tIG9wZW5hcGkvc3dhZ2dlciBkb2N1bWVudGF0aW9uICh2ZXJzaW9uIDMueCkKClRoZSBkaWN0aW9uYXJ5IGNvbnRhaW5zIGFsbCB0aGUgcGFyYW1ldGVycy9maWVsZHMgbmFtZSBkaXNjb3ZlcmVkIGluIHRoZSBvcGVuYXBpIGZpbGUgdG9nZXRoZXIgd2l0aCB0aGVpciBjaGFyYWN0ZXJpc3RpY3MgKFJlcXVpcmVkIChZL04pLCBUeXBlcyAoc3RyaW5nLCBhcnJheSwgYm9vbGVhbiwgbnVtYmVyLCAuLi4pLCBBUEkgcGF0aCB3aGVyZSB1c2VkLCBsaXN0IG9mIGRlc2NyaXB0aW9ucywgLi4uKQoKIyMgVXNhZ2UKWW91IG5lZWQgdG8gc3BlY2lmeSBhdCBsZWFzdCBvbmUgYXJndW1lbnQgaW4gb3JkZXIgdHUgcnVuIHRoZSBzY3JpcHQocGF0aCBvZiB0aGUgb3BlbmFwaSBmaWxlKToKCmBgYGJhc2gKcHl0aG9uIG1haW4ucHkgb3BlbmFwaS5qc29uCmBgYAoKCj4qKk5vdGUqKjogKmZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHBvc3NpYmxlIHBhcmFtZXRlcnMsIHR5cGU6Kgo+Cj4gYGBgYmFzaAo+IHB5dGhvbiBtYWluLnB5IC0taGVscAo+IGBgYAo= readmeEtag: '"80d30964cf9ab7d67215acb7c410573a596c0af1"' readmeLastModified: Fri, 20 Jan 2023 12:35:18 GMT repositoryId: 538355860 description: Build a data dictionary from openapi/swagger documentation created: '2022-09-19T06:04:04Z' updated: '2023-01-19T14:26:41Z' language: Python archived: false stars: 0 watchers: 1 forks: 0 owner: saphir-lab logo: https://avatars.githubusercontent.com/u/99727450?v=4 license: MIT repoEtag: '"4d8f6afcd77808a7f2aab44e2257e26e07f4596a721883166e8bc8b4f46d5815"' repoLastModified: Thu, 19 Jan 2023 14:26:41 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/youssefjn/expense-tracker v3: true id: 62acb770808cc8cedcab29da3a9c9d5d repositoryMetadata: repositoryId: 601972677 description: REST api with swagger documentation created: '2023-02-15T08:18:03Z' updated: '2023-02-15T14:08:25Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: youssefjn logo: https://avatars.githubusercontent.com/u/59120174?v=4 repoEtag: '"13f2e31fec3dc222a006a645842a2271d8cc8ecfd437066fa8e7adacaed1027a"' repoLastModified: Wed, 15 Feb 2023 14:08:25 GMT foundInMaster: true - source: openapi3 tags repository: https://github.com/andrii-hrechyn/auto-documentation v3: true id: e97dd2eaec8fa77bafeded0f536da462 repositoryMetadata: base64Readme: >- IyBBdXRvIERvY3VtZW50YXRpb24KCkEgZmx1ZW50LCBvYmplY3Qtb3JpZW50ZWQgbGlicmFyeSBmb3IgZ2VuZXJhdGluZyBPcGVuQVBJIDMuMS4wIGRvY3VtZW50YXRpb24gaW4gTGFyYXZlbCBhcHBsaWNhdGlvbnMuCgohW1BIUCA4LjMrXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1BIUC04LjMlMkItYmx1ZSkKIVtMYXJhdmVsIDctMTFdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTGFyYXZlbC03LS0xMS1yZWQpCiFbTGljZW5zZTogTUlUXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtTUlULWdyZWVuKQoKIyMgSW50cm9kdWN0aW9uCgpBdXRvIERvY3VtZW50YXRpb24gbGV0cyB5b3UgZGVzY3JpYmUgeW91ciBBUEkgZW5kcG9pbnRzIGFzIFBIUCBjbGFzc2VzIHVzaW5nIGEgZmx1ZW50IGJ1aWxkZXIgQVBJLiBUaGUgbGlicmFyeSBhdXRvLWRpc2NvdmVycyB5b3VyIGRvY3VtZW50YXRpb24gY2xhc3NlcywgcmVzb2x2ZXMgcmV1c2FibGUgY29tcG9uZW50cyB2aWEgYCRyZWZgLCBhbmQgZ2VuZXJhdGVzIGEgY29tcGxldGUgT3BlbkFQSSAzLjEuMCBzcGVjaWZpY2F0aW9uIGFzIFlBTUwg4oCUIHZpZXdhYmxlIHRocm91Z2ggYSBidWlsdC1pbiBSZWRvYyBVSS4KCktleSBmZWF0dXJlczoKCi0gKipGbHVlbnQgUEhQIEFQSSoqIOKAlCBkZXNjcmliZSBwYXRocywgc2NoZW1hcywgcGFyYW1ldGVycywgYW5kIHJlc3BvbnNlcyB3aXRoIG1ldGhvZCBjaGFpbmluZwotICoqQXV0by1kaXNjb3ZlcnkqKiDigJQgcGF0aCBhbmQgY29tcG9uZW50IGNsYXNzZXMgYXJlIGF1dG9tYXRpY2FsbHkgZm91bmQgYW5kIHJlZ2lzdGVyZWQKLSAqKlJldXNhYmxlIGNvbXBvbmVudHMqKiDigJQgc2NoZW1hcywgcGFyYW1ldGVycywgcmVxdWVzdHMsIGFuZCByZXNwb25zZXMgYXJlIGRlZHVwbGljYXRlZCB2aWEgYCRyZWZgCi0gKipMYXJhdmVsIGludGVncmF0aW9uKiog4oCUIGJ1aWx0LWluIGFydGlzYW4gY29tbWFuZHMsIHJvdXRlLWJhc2VkIHJlcXVlc3QgYm9keSBleHRyYWN0aW9uLCBTYW5jdHVtIGF1dGggc3VwcG9ydAotICoqT3BlbkFQSSAzLjEuMCoqIGNvbXBsaWFudCBvdXRwdXQKCiMjIFJlcXVpcmVtZW50cwoKLSBQSFAgOC4zKwotIExhcmF2ZWwgNywgOCwgOSwgMTAsIG9yIDExCgojIyBJbnN0YWxsYXRpb24KCkluc3RhbGwgdmlhIENvbXBvc2VyOgoKYGBgYmFzaApjb21wb3NlciByZXF1aXJlIGFuZHJpaS1ocmVjaHluL2F1dG8tZG9jdW1lbnRhdGlvbgpgYGAKClJ1biB0aGUgaW5zdGFsbCBjb21tYW5kIHRvIHNjYWZmb2xkIHRoZSBgZG9jcy9gIGZvbGRlciB3aXRoIGV4YW1wbGVzIGFuZCByZWdpc3RlciB0aGUgYERvY3NcXGAgbmFtZXNwYWNlIGluIHlvdXIgYGNvbXBvc2VyLmpzb25gIGF1dG9sb2FkOgoKYGBgYmFzaApwaHAgYXJ0aXNhbiBhdXRvLWRvYzppbnN0YWxsCmBgYAoKVGhpcyBjcmVhdGVzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOgoKYGBgCmRvY3MvCuKUnOKUgOKUgCBDb21wb25lbnRzLwrilIIgICDilJzilIDilIAgUGFyYW1ldGVycy8K4pSCICAg4pSc4pSA4pSAIFJlcXVlc3RzLwrilIIgICDilJzilIDilIAgUmVzcG9uc2VzLwrilIIgICDilJzilIDilIAgU2NoZW1hcy8K4pSCICAg4pSU4pSA4pSAIFNlY3VyaXR5LwrilJzilIDilIAgUGF0aHMvCuKUlOKUgOKUgCBEb2N1bWVudGF0aW9uLnBocApgYGAKCiMjIFF1aWNrIFN0YXJ0CgojIyMgMS4gRGVmaW5lIHlvdXIgRG9jdW1lbnRhdGlvbiBjbGFzcwoKYGBgcGhwCi8vIGRvY3MvRG9jdW1lbnRhdGlvbi5waHAKbmFtZXNwYWNlIERvY3M7Cgp1c2UgQXV0b0RvY3VtZW50YXRpb25cQmFzZURvY3VtZW50YXRpb247CnVzZSBBdXRvRG9jdW1lbnRhdGlvblxJbmZvOwoKY2xhc3MgRG9jdW1lbnRhdGlvbiBleHRlbmRzIEJhc2VEb2N1bWVudGF0aW9uCnsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbmZvKCk6IEluZm8KICAgIHsKICAgICAgICByZXR1cm4gSW5mbzo6bWFrZSgnTXkgQVBJJywgJzEuMC4wJykKICAgICAgICAgICAgLT5kZXNjcmlwdGlvbignQVBJIGRvY3VtZW50YXRpb24nKTsKICAgIH0KfQpgYGAKCiMjIyAyLiBDcmVhdGUgYSBwYXRoIGNvbXBvbmVudAoKYGBgcGhwCi8vIGRvY3MvUGF0aHMvVXNlcnNQYXRoLnBocApuYW1lc3BhY2UgRG9jc1xQYXRoczsKCnVzZSBBdXRvRG9jdW1lbnRhdGlvblxCYXNlXFBhdGhDb21wb25lbnQ7CnVzZSBBdXRvRG9jdW1lbnRhdGlvblxQYXRoc1xNZXRob2Q7CnVzZSBBdXRvRG9jdW1lbnRhdGlvblxQYXRoc1xQYXRoOwp1c2UgQXV0b0RvY3VtZW50YXRpb25cUHJvcGVydGllc1xJbnRlZ2VyUHJvcGVydHk7CnVzZSBBdXRvRG9jdW1lbnRhdGlvblxQcm9wZXJ0aWVzXFN0cmluZ1Byb3BlcnR5OwoKY2xhc3MgVXNlcnNQYXRoIGV4dGVuZHMgUGF0aENvbXBvbmVudAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gcGF0aCgpOiBQYXRoCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5tYWtlKCd1c2VycycpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXQoTWV0aG9kICRtZXRob2QpOiBNZXRob2QKICAgIHsKICAgICAgICByZXR1cm4gJG1ldGhvZAogICAgICAgICAgICAtPm9wZXJhdGlvbklkKCdsaXN0VXNlcnMnKQogICAgICAgICAgICAtPnN1bW1hcnkoJ0xpc3QgYWxsIHVzZXJzJykKICAgICAgICAgICAgLT50YWcoJ1VzZXJzJykKICAgICAgICAgICAgLT5qc29uUmVzcG9uc2UoWwogICAgICAgICAgICAgICAgSW50ZWdlclByb3BlcnR5OjptYWtlKCdpZCcpLT5leGFtcGxlKDEpLAogICAgICAgICAgICAgICAgU3RyaW5nUHJvcGVydHk6Om1ha2UoJ25hbWUnKS0+ZXhhbXBsZSgnSm9obicpLAogICAgICAgICAgICAgICAgU3RyaW5nUHJvcGVydHk6Om1ha2UoJ2VtYWlsJyktPmZvcm1hdCgnZW1haWwnKSwKICAgICAgICAgICAgXSk7CiAgICB9Cn0KYGBgCgojIyMgMy4gR2VuZXJhdGUgZG9jdW1lbnRhdGlvbgoKYGBgYmFzaApwaHAgYXJ0aXNhbiBhdXRvLWRvYzpnZW5lcmF0ZQpgYGAKClRoZSBzcGVjaWZpY2F0aW9uIGlzIHdyaXR0ZW4gdG8gYHN0b3JhZ2UvYXBwL2F1dG8tZG9jcy9kb2N1bWVudGF0aW9uLnlhbWxgIGFuZCBzZXJ2ZWQgYXQgYC9hcGkvZG9jYC4KCiMjIERvY3VtZW50YXRpb24gQ2xhc3MKClRoZSBgRG9jdW1lbnRhdGlvbmAgY2xhc3MgZXh0ZW5kcyBgQmFzZURvY3VtZW50YXRpb25gIGFuZCBzZXJ2ZXMgYXMgdGhlIGVudHJ5IHBvaW50IGZvciB5b3VyIEFQSSBzcGVjLiBJdCBoYXMgb25lIHJlcXVpcmVkIG1ldGhvZCBhbmQgc2V2ZXJhbCBvcHRpb25hbCBvbmVzLgoKIyMjIEluZm8gKHJlcXVpcmVkKQoKYGBgcGhwCnByb3RlY3RlZCBmdW5jdGlvbiBpbmZvKCk6IEluZm8KewogICAgcmV0dXJuIEluZm86Om1ha2UoJ0Jsb2cgUGxhdGZvcm0gQVBJJywgJzIuMC4wJykKICAgICAgICAtPmRlc2NyaXB0aW9uKCdBUEkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIEJsb2cgUGxhdGZvcm0nKQogICAgICAgIC0+dGVybXNPZlNlcnZpY2UoJ2h0dHBzOi8vZXhhbXBsZS5jb20vdGVybXMnKQogICAgICAgIC0+Y29udGFjdCgKICAgICAgICAgICAgKG5ldyBDb250YWN0KCkpCiAgICAgICAgICAgICAgICAtPm5hbWUoJ0FQSSBTdXBwb3J0JykKICAgICAgICAgICAgICAgIC0+ZW1haWwoJ3N1cHBvcnRAZXhhbXBsZS5jb20nKQogICAgICAgICAgICAgICAgLT51cmwoJ2h0dHBzOi8vZXhhbXBsZS5jb20vc3VwcG9ydCcpCiAgICAgICAgKQogICAgICAgIC0+bGljZW5zZSgKICAgICAgICAgICAgTGljZW5zZTo6bWFrZSgnTUlUJykKICAgICAgICAgICAgICAgIC0+dXJsKCdodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCcpCiAgICAgICAgKTsKfQpgYGAKCiMjIyBTZXJ2ZXJzCgpgYGBwaHAKcHJvdGVjdGVkIGZ1bmN0aW9uIHNlcnZlcnMoKTogYXJyYXkKewogICAgcmV0dXJuIFsKICAgICAgICBTZXJ2ZXI6Om1ha2UoJ2h0dHBzOi8vYXBpLmV4YW1wbGUuY29tL3t2ZXJzaW9ufScpCiAgICAgICAgICAgIC0+ZGVzY3JpcHRpb24oJ1Byb2R1Y3Rpb24gc2VydmVyJykKICAgICAgICAgICAgLT52YXJpYWJsZSgKICAgICAgICAgICAgICAgIFZhcmlhYmxlOjptYWtlKCd2ZXJzaW9uJywgJ3YyJykKICAgICAgICAgICAgICAgICAgICAtPmVudW0oWyd2MScsICd2MiddKQogICAgICAgICAgICAgICAgICAgIC0+ZGVzY3JpcHRpb24oJ0FQSSB2ZXJzaW9uJykKICAgICAgICAgICAgKSwKICAgIF07Cn0KYGBgCgojIyMgRGVmYXVsdCBTZWN1cml0eQoKU2V0IGEgZ2xvYmFsIHNlY3VyaXR5IHNjaGVtZSBhcHBsaWVkIHRvIGFsbCBvcGVyYXRpb25zOgoKYGBgcGhwCnByb3RlY3RlZCBmdW5jdGlvbiBkZWZhdWx0U2VjdXJpdHlTY2hlbWEoKTogP1NlY3VyaXR5UmVxdWlyZW1lbnQKewogICAgcmV0dXJuIFNhbmN0dW1BdXRoOjptYWtlKCk7Cn0KYGBgCgojIyMgVGFncywgRXh0ZW5zaW9ucyAmIFRhZyBHcm91cHMKClVzZSBgYWRkaXRpb25hbE9wdGlvbnMoKWAgdG8gZGVmaW5lIHRhZ3MsIHZlbmRvciBleHRlbnNpb25zLCBleHRlcm5hbCBkb2NzLCBhbmQgdGFnIGdyb3VwczoKCmBgYHBocApwdWJsaWMgZnVuY3Rpb24gYWRkaXRpb25hbE9wdGlvbnMoKTogdm9pZAp7CiAgICAkdGhpcy0+b3BlbkFwaS0+ZXh0ZXJuYWxEb2NzKAogICAgICAgIEV4dGVybmFsRG9jczo6bWFrZSgnaHR0cHM6Ly9leGFtcGxlLmNvbS9kb2NzJykKICAgICAgICAgICAgLT5kZXNjcmlwdGlvbignRnVsbCBkZXZlbG9wZXIgZG9jdW1lbnRhdGlvbicpCiAgICApOwoKICAgICR0aGlzLT5vcGVuQXBpLT50YWcoCiAgICAgICAgKG5ldyBUYWcoKSktPm5hbWUoJ1VzZXJzJyktPmRlc2NyaXB0aW9uKCdVc2VyIG1hbmFnZW1lbnQgb3BlcmF0aW9ucycpCiAgICApOwogICAgJHRoaXMtPm9wZW5BcGktPnRhZygKICAgICAgICAobmV3IFRhZygpKS0+bmFtZSgnUG9zdHMnKS0+ZGVzY3JpcHRpb24oJ0Jsb2cgcG9zdCBvcGVyYXRpb25zJykKICAgICk7CgogICAgLy8gVmVuZG9yIGV4dGVuc2lvbnMKICAgICR0aGlzLT5vcGVuQXBpLT5leHRlbnNpb24oJ3gtYXBpLWlkJywgJ215LWFwaScpOwoKICAgIC8vIFRhZyBncm91cHMgKFJlZG9jIHgtdGFnR3JvdXBzIGV4dGVuc2lvbikKICAgICR0aGlzLT5vcGVuQXBpLT5leHRlbnNpb24oJ3gtdGFnR3JvdXBzJywgWwogICAgICAgIG5ldyBHcm91cCgnQ29udGVudCcsIFsnUG9zdHMnLCAnQ29tbWVudHMnXSksCiAgICAgICAgbmV3IEdyb3VwKCdBY2Nlc3MnLCBbJ1VzZXJzJywgJ0F1dGgnXSksCiAgICBdKTsKfQpgYGAKCiMjIFBhdGhzCgojIyMgUGF0aENvbXBvbmVudCAocmVjb21tZW5kZWQpCgpQYXRoIGNvbXBvbmVudHMgYXJlIGF1dG8tZGlzY292ZXJlZCBmcm9tIHRoZSBgZG9jcy9QYXRocy9gIGRpcmVjdG9yeS4gRXh0ZW5kIGBQYXRoQ29tcG9uZW50YCBhbmQgZGVmaW5lIEhUVFAgbWV0aG9kcyBhcyBjbGFzcyBtZXRob2RzOgoKYGBgcGhwCmNsYXNzIFBvc3RQYXRoIGV4dGVuZHMgUGF0aENvbXBvbmVudAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gcGF0aCgpOiBQYXRoCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5tYWtlKCdwb3N0cy97cG9zdElkfScpCiAgICAgICAgICAgIC0+cGFyYW1ldGVyKAogICAgICAgICAgICAgICAgUGFyYW1ldGVyOjptYWtlKCdwb3N0SWQnLCBQYXJhbWV0ZXJJbjo6UEFUSCkKICAgICAgICAgICAgICAgICAgICAtPmRlc2NyaXB0aW9uKCdUaGUgcG9zdCBJRCcpCiAgICAgICAgICAgICAgICAgICAgLT5yZXF1aXJlZCgpCiAgICAgICAgICAgICAgICAgICAgLT5leGFtcGxlKDQyKQogICAgICAgICAgICApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXQoTWV0aG9kICRtZXRob2QpOiBNZXRob2QKICAgIHsKICAgICAgICByZXR1cm4gJG1ldGhvZAogICAgICAgICAgICAtPm9wZXJhdGlvbklkKCdnZXRQb3N0JykKICAgICAgICAgICAgLT5zdW1tYXJ5KCdHZXQgYSBwb3N0IGJ5IElEJykKICAgICAgICAgICAgLT50YWcoJ1Bvc3RzJykKICAgICAgICAgICAgLT5yZXNwb25zZSgKICAgICAgICAgICAgICAgIFN1Y2Nlc3NmdWxSZXNwb25zZTo6bWFrZSgpLT5jb250ZW50KFsKICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkpzb246Om1ha2UoUG9zdFNjaGVtYTo6bWFrZSgpKSwKICAgICAgICAgICAgICAgIF0pCiAgICAgICAgICAgICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZShNZXRob2QgJG1ldGhvZCk6IE1ldGhvZAogICAgewogICAgICAgIHJldHVybiAkbWV0aG9kCiAgICAgICAgICAgIC0+b3BlcmF0aW9uSWQoJ2RlbGV0ZVBvc3QnKQogICAgICAgICAgICAtPnN1bW1hcnkoJ0RlbGV0ZSBhIHBvc3QnKQogICAgICAgICAgICAtPnRhZygnUG9zdHMnKQogICAgICAgICAgICAtPnJlc3BvbnNlKE5vQ29udGVudFJlc3BvbnNlOjptYWtlKCkpOwogICAgfQp9CmBgYAoKU3VwcG9ydGVkIEhUVFAgbWV0aG9kczogYGdldGAsIGBwb3N0YCwgYHB1dGAsIGBwYXRjaGAsIGBkZWxldGVgLCBgaGVhZGAsIGBvcHRpb25zYC4gT25seSBkZWZpbmUgdGhlIG1ldGhvZHMgeW91ciBlbmRwb2ludCBzdXBwb3J0cyDigJQgdGhlIHJlc3QgYXJlIG9taXR0ZWQgYXV0b21hdGljYWxseS4KCiMjIyBBdXRoUGF0aENvbXBvbmVudAoKRXh0ZW5kcyBgUGF0aENvbXBvbmVudGAgYW5kIGF1dG9tYXRpY2FsbHkgYXBwbGllcyBTYW5jdHVtIHNlY3VyaXR5IHRvIGFsbCBtZXRob2RzOgoKYGBgcGhwCmNsYXNzIEF1dGhQYXRoIGV4dGVuZHMgQXV0aFBhdGhDb21wb25lbnQKewogICAgcHVibGljIGZ1bmN0aW9uIHBhdGgoKTogUGF0aAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bWFrZSgnYXV0aC9sb2dpbicpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwb3N0KE1ldGhvZCAkbWV0aG9kKTogTWV0aG9kCiAgICB7CiAgICAgICAgcmV0dXJuICRtZXRob2QKICAgICAgICAgICAgLT5vcGVyYXRpb25JZCgnbG9naW4nKQogICAgICAgICAgICAtPnN1bW1hcnkoJ0F1dGhlbnRpY2F0ZSBhbmQgcmVjZWl2ZSBhIHRva2VuJykKICAgICAgICAgICAgLT50YWcoJ0F1dGgnKQogICAgICAgICAgICAtPmpzb25SZXF1ZXN0KFsKICAgICAgICAgICAgICAgIFN0cmluZ1Byb3BlcnR5OjptYWtlKCdlbWFpbCcpLT5yZXF1aXJlZCgpLT5mb3JtYXQoJ2VtYWlsJyksCiAgICAgICAgICAgICAgICBTdHJpbmdQcm9wZXJ0eTo6bWFrZSgncGFzc3dvcmQnKS0+cmVxdWlyZWQoKS0+Zm9ybWF0KCdwYXNzd29yZCcpLAogICAgICAgICAgICBdKQogICAgICAgICAgICAtPmpzb25SZXNwb25zZShbCiAgICAgICAgICAgICAgICBTdHJpbmdQcm9wZXJ0eTo6bWFrZSgndG9rZW4nKS0+ZXhhbXBsZSgnMXxhYmMxMjNkZWY0NTYnKSwKICAgICAgICAgICAgICAgIFN0cmluZ1Byb3BlcnR5OjptYWtlKCd0b2tlbl90eXBlJyktPmRlZmF1bHQoJ0JlYXJlcicpLAogICAgICAgICAgICBdKTsKICAgIH0KfQpgYGAKCiMjIyBSb3V0ZS1iYXNlZCBwYXRocwoKUmVmZXJlbmNlIGV4aXN0aW5nIExhcmF2ZWwgcm91dGVzIGJ5IG5hbWUgYW5kIGV4dHJhY3QgcmVxdWVzdCBib2RpZXMgZnJvbSBmb3JtIHJlcXVlc3QgdmFsaWRhdGlvbiBydWxlczoKCmBgYHBocApSb3V0ZTo6bWFrZSgncG9zdHMuc3RvcmUnLCAnQ3JlYXRlIGEgbmV3IHBvc3QnKQogICAgLT50YWcoJ1Bvc3RzJykKICAgIC0+cmVxdWVzdEJvZHlGcm9tUmVxdWVzdENsYXNzKCkKICAgIC0+c3VjY2Vzc2Z1bFJlc3BvbnNlKFBvc3RTY2hlbWE6Om1ha2UoKSkKICAgIC0+c2VjdXJlKCk7CmBgYAoKIyMjIE1ldGhvZCBvcHRpb25zCgpNZXRob2RzIHN1cHBvcnQgdGhlIGZ1bGwgT3BlbkFQSSBvcGVyYXRpb24gc3BlYzoKCmBgYHBocAokbWV0aG9kCiAgICAtPm9wZXJhdGlvbklkKCd1cGRhdGVQb3N0JykKICAgIC0+c3VtbWFyeSgnVXBkYXRlIGEgcG9zdCcpCiAgICAtPmRlc2NyaXB0aW9uKCdGdWxsIGRlc2NyaXB0aW9uIGhlcmUnKQogICAgLT50YWcoJ1Bvc3RzJykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIC0+dGFnKChuZXcgVGFnKCkpLT5uYW1lKCdQb3N0cycpKQogICAgLT5kZXByZWNhdGVkKCkKICAgIC0+ZXh0ZXJuYWxEb2NzKEV4dGVybmFsRG9jczo6bWFrZSgnaHR0cHM6Ly8uLi4nKSkKICAgIC0+ZXh0ZW5zaW9uKCd4LXN1bnNldCcsICcyMDI1LTEyLTMxJykKICAgIC0+c2VjdXJpdHkoQXBpS2V5QXV0aDo6bWFrZSgpKSAgICAgICAgICAgICAgICAgICAgICAvLyBwZXItb3BlcmF0aW9uIHNlY3VyaXR5IG92ZXJyaWRlCiAgICAtPnJlcXVlc3QoJHJlcXVlc3QpCiAgICAtPnJlc3BvbnNlKCRyZXNwb25zZSk7CmBgYAoKIyMgUHJvcGVydGllcwoKUHJvcGVydGllcyBkZXNjcmliZSBpbmRpdmlkdWFsIGZpZWxkcyB3aXRoaW4gc2NoZW1hcyBhbmQgcmVxdWVzdC9yZXNwb25zZSBib2RpZXMuIEFsbCBwcm9wZXJ0aWVzIHVzZSBgbWFrZShzdHJpbmcgJG5hbWUpYCBhbmQgc3VwcG9ydCBtZXRob2QgY2hhaW5pbmcuCgp8IENsYXNzIHwgVHlwZSB8IEV4dHJhIG1ldGhvZHMgfAp8LS0tfC0tLXwtLS18CnwgYFN0cmluZ1Byb3BlcnR5YCB8IGBzdHJpbmdgIHwgYG1pbkxlbmd0aCgpYCwgYG1heExlbmd0aCgpYCB8CnwgYEludGVnZXJQcm9wZXJ0eWAgfCBgaW50ZWdlcmAgfCBgbWluaW11bSgpYCwgYG1heGltdW0oKWAgfAp8IGBOdW1iZXJQcm9wZXJ0eWAgfCBgbnVtYmVyYCB8IGBtaW5pbXVtKClgLCBgbWF4aW11bSgpYCB8CnwgYEJvb2xlYW5Qcm9wZXJ0eWAgfCBgYm9vbGVhbmAgfCDigJQgfAp8IGBBcnJheVByb3BlcnR5YCB8IGBhcnJheWAgfCBgbWluSXRlbXMoKWAsIGBtYXhJdGVtcygpYCB8CnwgYE9iamVjdFByb3BlcnR5YCB8IGBvYmplY3RgIHwg4oCUIHwKfCBgRGF0ZVRpbWVQcm9wZXJ0eWAgfCBgc3RyaW5nYCAoZm9ybWF0OiBgZGF0ZS10aW1lYCkgfCBgbWluTGVuZ3RoKClgLCBgbWF4TGVuZ3RoKClgIHwKfCBgRmlsZVByb3BlcnR5YCB8IGBzdHJpbmdgIChmb3JtYXQ6IGBiaW5hcnlgKSB8IGBtaW5MZW5ndGgoKWAsIGBtYXhMZW5ndGgoKWAgfAoKQ29tbW9uIG1ldGhvZHMgYXZhaWxhYmxlIG9uIGFsbCBwcm9wZXJ0aWVzOiBgcmVxdWlyZWQoKWAsIGBkZXNjcmlwdGlvbigpYCwgYGV4YW1wbGUoKWAsIGBlbnVtKClgLCBgZGVmYXVsdCgpYCwgYGZvcm1hdCgpYCwgYHRpdGxlKClgLCBgZXh0ZW5zaW9uKClgLgoKYGBgcGhwCi8vIEV4YW1wbGVzClN0cmluZ1Byb3BlcnR5OjptYWtlKCd0aXRsZScpLT5yZXF1aXJlZCgpLT5tYXhMZW5ndGgoMjU1KS0+ZXhhbXBsZSgnTXkgUG9zdCcpLApJbnRlZ2VyUHJvcGVydHk6Om1ha2UoJ2lkJyktPmV4YW1wbGUoNDIpLApTdHJpbmdQcm9wZXJ0eTo6bWFrZSgnc3RhdHVzJyktPmVudW0oWydkcmFmdCcsICdwdWJsaXNoZWQnLCAnYXJjaGl2ZWQnXSktPmRlZmF1bHQoJ2RyYWZ0JyksCkRhdGVUaW1lUHJvcGVydHk6Om1ha2UoJ2NyZWF0ZWRfYXQnKSwKQXJyYXlQcm9wZXJ0eTo6bWFrZSgndGFnX2lkcycsIEludGVnZXJTY2hlbWE6Om1ha2UoKSksCmBgYAoKIyMgU2NoZW1hcwoKU2NoZW1hcyBkZWZpbmUgdGhlIHN0cnVjdHVyZSBvZiBkYXRhIG9iamVjdHMgYW5kIGFyZSB1c2VkIGluc2lkZSBwcm9wZXJ0aWVzLCByZXF1ZXN0IGJvZGllcywgYW5kIHJlc3BvbnNlcy4KCiMjIyBPYmplY3RTY2hlbWEKCmBgYHBocApPYmplY3RTY2hlbWE6Om1ha2UoWwogICAgSW50ZWdlclByb3BlcnR5OjptYWtlKCdpZCcpLT5leGFtcGxlKDEpLAogICAgU3RyaW5nUHJvcGVydHk6Om1ha2UoJ25hbWUnKS0+cmVxdWlyZWQoKSwKICAgIFN0cmluZ1Byb3BlcnR5OjptYWtlKCdlbWFpbCcpLT5mb3JtYXQoJ2VtYWlsJyksCl0pOwpgYGAKCiMjIyBBcnJheVNjaGVtYQoKYGBgcGhwCi8vIEFycmF5IG9mIHByaW1pdGl2ZXMKQXJyYXlTY2hlbWE6Om1ha2UoSW50ZWdlclNjaGVtYTo6bWFrZSgpKS0+bWluSXRlbXMoMSk7CgovLyBBcnJheSBvZiBvYmplY3RzCkFycmF5U2NoZW1hOjptYWtlKAogICAgT2JqZWN0U2NoZW1hOjptYWtlKFsKICAgICAgICBTdHJpbmdQcm9wZXJ0eTo6bWFrZSgndGl0bGUnKSwKICAgIF0pCik7CmBgYAoKIyMjIFByaW1pdGl2ZSBTY2hlbWFzCgpgU3RyaW5nU2NoZW1hYCwgYEludGVnZXJTY2hlbWFgLCBgTnVtYmVyU2NoZW1hYCwgYEJvb2xlYW5TY2hlbWFgIOKAlCB1c2VkIGFzIGl0ZW1zIGZvciBgQXJyYXlTY2hlbWFgIG9yIGBBcnJheVByb3BlcnR5YC4KCiMjIFJldXNhYmxlIENvbXBvbmVudHMKCkNvbXBvbmVudHMgYXJlIHNlbGYtcmVnaXN0ZXJpbmcgY2xhc3NlcyB0aGF0IG91dHB1dCBgJHJlZmAgcmVmZXJlbmNlcyBpbiB0aGUgZ2VuZXJhdGVkIHNwZWMuIEV4dGVuZCB0aGUgYXBwcm9wcmlhdGUgYmFzZSBjbGFzcyBhbmQgaW1wbGVtZW50IHRoZSBgY29udGVudCgpYCBtZXRob2QuCgojIyMgU2NoZW1hQ29tcG9uZW50CgpgYGBwaHAKY2xhc3MgUG9zdFNjaGVtYSBleHRlbmRzIFNjaGVtYUNvbXBvbmVudAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gY29udGVudCgpOiBPYmplY3RTY2hlbWEKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNjaGVtYShbCiAgICAgICAgICAgIEludGVnZXJQcm9wZXJ0eTo6bWFrZSgnaWQnKS0+ZXhhbXBsZSg0MiksCiAgICAgICAgICAgIFN0cmluZ1Byb3BlcnR5OjptYWtlKCd0aXRsZScpLT5yZXF1aXJlZCgpLT5tYXhMZW5ndGgoMjU1KS0+ZXhhbXBsZSgnTXkgRmlyc3QgUG9zdCcpLAogICAgICAgICAgICBTdHJpbmdQcm9wZXJ0eTo6bWFrZSgnYm9keScpLT5yZXF1aXJlZCgpLAogICAgICAgICAgICBTdHJpbmdQcm9wZXJ0eTo6bWFrZSgnc3RhdHVzJyktPmVudW0oWydkcmFmdCcsICdwdWJsaXNoZWQnLCAnYXJjaGl2ZWQnXSktPmRlZmF1bHQoJ2RyYWZ0JyksCiAgICAgICAgICAgIEludGVnZXJQcm9wZXJ0eTo6bWFrZSgnYXV0aG9yX2lkJyktPmV4YW1wbGUoMSksCiAgICAgICAgICAgIEFycmF5UHJvcGVydHk6Om1ha2UoJ2NvbW1lbnRfaWRzJywgSW50ZWdlclNjaGVtYTo6bWFrZSgpKSwKICAgICAgICAgICAgRGF0ZVRpbWVQcm9wZXJ0eTo6bWFrZSgncHVibGlzaGVkX2F0JyksCiAgICAgICAgICAgIERhdGVUaW1lUHJvcGVydHk6Om1ha2UoJ2NyZWF0ZWRfYXQnKSwKICAgICAgICBdKS0+ZXh0ZW5zaW9uKCd4LW1vZGVsJywgJ0FwcFxcTW9kZWxzXFxQb3N0Jyk7CiAgICB9Cn0KYGBgCgpVc2FnZTogYFBvc3RTY2hlbWE6Om1ha2UoKWAg4oCUIHJldHVybnMgYSBgJHJlZmAgdG8gYCMvY29tcG9uZW50cy9zY2hlbWFzL1Bvc3RTY2hlbWFgLgoKIyMjIFBhcmFtZXRlckNvbXBvbmVudAoKYGBgcGhwCmNsYXNzIFBhZ2VQYXJhbWV0ZXIgZXh0ZW5kcyBQYXJhbWV0ZXJDb21wb25lbnQKewogICAgcHVibGljIGZ1bmN0aW9uIGNvbnRlbnQoKTogUGFyYW1ldGVyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJhbWV0ZXIoJ3BhZ2UnLCBQYXJhbWV0ZXJJbjo6UVVFUlkpCiAgICAgICAgICAgIC0+ZGVzY3JpcHRpb24oJ1BhZ2UgbnVtYmVyIGZvciBwYWdpbmF0aW9uJykKICAgICAgICAgICAgLT5leGFtcGxlKDEpOwogICAgfQp9CmBgYAoKVXNhZ2U6IGBQYWdlUGFyYW1ldGVyOjptYWtlKClgIOKAlCByZXR1cm5zIGEgYCRyZWZgIHRvIGAjL2NvbXBvbmVudHMvcGFyYW1ldGVycy9QYWdlUGFyYW1ldGVyYC4KCiMjIyBSZXF1ZXN0Q29tcG9uZW50CgpgYGBwaHAKY2xhc3MgQ3JlYXRlUG9zdFJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0Q29tcG9uZW50CnsKICAgIHB1YmxpYyBmdW5jdGlvbiBjb250ZW50KCk6IFJlcXVlc3QKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3QoKQogICAgICAgICAgICAtPnJlcXVpcmVkKCkKICAgICAgICAgICAgLT5kZXNjcmlwdGlvbignRGF0YSBmb3IgY3JlYXRpbmcgYSBuZXcgYmxvZyBwb3N0JykKICAgICAgICAgICAgLT5jb250ZW50KFsKICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uSnNvbjo6bWFrZSgKICAgICAgICAgICAgICAgICAgICBPYmplY3RTY2hlbWE6Om1ha2UoWwogICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdQcm9wZXJ0eTo6bWFrZSgndGl0bGUnKS0+cmVxdWlyZWQoKS0+bWF4TGVuZ3RoKDI1NSksCiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1Byb3BlcnR5OjptYWtlKCdib2R5JyktPnJlcXVpcmVkKCksCiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1Byb3BlcnR5OjptYWtlKCdzdGF0dXMnKS0+ZW51bShbJ2RyYWZ0JywgJ3B1Ymxpc2hlZCddKS0+ZGVmYXVsdCgnZHJhZnQnKSwKICAgICAgICAgICAgICAgICAgICBdKQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgXSk7CiAgICB9Cn0KYGBgCgojIyMgUmVzcG9uc2VDb21wb25lbnQKCmBgYHBocApjbGFzcyBVbmF1dGhvcml6ZWRSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlQ29tcG9uZW50CnsKICAgIHB1YmxpYyBmdW5jdGlvbiBjb250ZW50KCk6IFJlc3BvbnNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXNwb25zZSg0MDEpCiAgICAgICAgICAgIC0+ZGVzY3JpcHRpb24oJ1VuYXV0aGVudGljYXRlZCcpCiAgICAgICAgICAgIC0+Y29udGVudChbCiAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkpzb246Om1ha2UoRXJyb3JTY2hlbWE6Om1ha2UoKSksCiAgICAgICAgICAgIF0pOwogICAgfQp9CmBgYAoKIyMgUGFyYW1ldGVycwoKUGFyYW1ldGVycyBhcmUgY3JlYXRlZCB3aXRoIGEgbmFtZSBhbmQgbG9jYXRpb24gKGBQYXJhbWV0ZXJJbmAgZW51bSk6CgpgYGBwaHAKdXNlIEF1dG9Eb2N1bWVudGF0aW9uXEVudW1zXFBhcmFtZXRlckluOwoKLy8gSW5saW5lIHBhcmFtZXRlcgpQYXJhbWV0ZXI6Om1ha2UoJ3Bvc3RJZCcsIFBhcmFtZXRlckluOjpQQVRIKQogICAgLT5kZXNjcmlwdGlvbignVGhlIHBvc3QgSUQnKQogICAgLT5yZXF1aXJlZCgpCiAgICAtPmV4YW1wbGUoNDIpOwoKLy8gUXVlcnkgcGFyYW1ldGVyClBhcmFtZXRlcjo6bWFrZSgnc2VhcmNoJywgUGFyYW1ldGVySW46OlFVRVJZKQogICAgLT5kZXNjcmlwdGlvbignU2VhcmNoIHRlcm0nKQogICAgLT5leGFtcGxlKCdsYXJhdmVsJyk7CgovLyBIZWFkZXIgcGFyYW1ldGVyClBhcmFtZXRlcjo6bWFrZSgnQWNjZXB0LUxhbmd1YWdlJywgUGFyYW1ldGVySW46OkhFQURFUikKICAgIC0+ZGVzY3JpcHRpb24oJ1ByZWZlcnJlZCBsYW5ndWFnZScpCiAgICAtPmV4YW1wbGUoJ2VuLVVTJyk7CgovLyBDb29raWUgcGFyYW1ldGVyClBhcmFtZXRlcjo6bWFrZSgnc2Vzc2lvbicsIFBhcmFtZXRlckluOjpDT09LSUUpCiAgICAtPmRlc2NyaXB0aW9uKCdTZXNzaW9uIGlkZW50aWZpZXInKTsKYGBgCgpBdHRhY2ggcGFyYW1ldGVycyB0byBhIHBhdGg6CgpgYGBwaHAKJHRoaXMtPm1ha2UoJ3Bvc3RzJykKICAgIC0+cGFyYW1ldGVyKFBhZ2VQYXJhbWV0ZXI6Om1ha2UoKSkKICAgIC0+cGFyYW1ldGVyKFBlclBhZ2VQYXJhbWV0ZXI6Om1ha2UoKSk7CmBgYAoKIyMgUmVxdWVzdCBCb2RpZXMKCiMjIyBKU09OIHJlcXVlc3QgKHNob3J0aGFuZCkKClVzZSBganNvblJlcXVlc3QoKWAgb24gYSBtZXRob2QgZm9yIGEgcXVpY2sgSlNPTiBib2R5OgoKYGBgcGhwCiRtZXRob2QtPmpzb25SZXF1ZXN0KFsKICAgIFN0cmluZ1Byb3BlcnR5OjptYWtlKCd0aXRsZScpLT5yZXF1aXJlZCgpLT5tYXhMZW5ndGgoMjU1KSwKICAgIFN0cmluZ1Byb3BlcnR5OjptYWtlKCdib2R5JyktPnJlcXVpcmVkKCksCl0pOwpgYGAKCk9yIHBhc3MgYSBzY2hlbWEgZGlyZWN0bHk6CgpgYGBwaHAKJG1ldGhvZC0+anNvblJlcXVlc3QoCiAgICBPYmplY3RTY2hlbWE6Om1ha2UoWwogICAgICAgIFN0cmluZ1Byb3BlcnR5OjptYWtlKCd0aXRsZScpLT5yZXF1aXJlZCgpLAogICAgXSkKKTsKYGBgCgojIyMgTXVsdGlwYXJ0L2Zvcm0tZGF0YQoKRm9yIGZpbGUgdXBsb2FkcywgdXNlIGBNdWx0aXBhcnRGb3JtRGF0YWAgY29udGVudCB0eXBlOgoKYGBgcGhwCiRtZXRob2QtPnJlcXVlc3QoCiAgICBSZXF1ZXN0OjptYWtlKCkKICAgICAgICAtPnJlcXVpcmVkKCkKICAgICAgICAtPmNvbnRlbnQoWwogICAgICAgICAgICBNdWx0aXBhcnRGb3JtRGF0YTo6bWFrZShGaWxlVXBsb2FkU2NoZW1hOjptYWtlKCkpLAogICAgICAgIF0pCik7CmBgYAoKIyMjIEZyb20gTGFyYXZlbCB2YWxpZGF0aW9uIHJ1bGVzCgpXaGVuIHVzaW5nIGBSb3V0ZTo6bWFrZSgpYCwgZXh0cmFjdCB0aGUgcmVxdWVzdCBib2R5IGRpcmVjdGx5IGZyb20gYSBmb3JtIHJlcXVlc3QgY2xhc3M6CgpgYGBwaHAKUm91dGU6Om1ha2UoJ3Bvc3RzLnN0b3JlJywgJ0NyZWF0ZSBhIHBvc3QnKQogICAgLT5yZXF1ZXN0Qm9keUZyb21SZXF1ZXN0Q2xhc3MoKTsKYGBgCgpUaGlzIGluc3BlY3RzIHRoZSBjb250cm9sbGVyIG1ldGhvZCdzIHR5cGUtaGludGVkIGBSZXF1ZXN0YCBjbGFzcyBhbmQgY29udmVydHMgaXRzIGBydWxlcygpYCB0byBhbiBPcGVuQVBJIHNjaGVtYS4KCiMjIFJlc3BvbnNlcwoKIyMjIFN1Y2Nlc3NmdWxSZXNwb25zZQoKYGBgcGhwClN1Y2Nlc3NmdWxSZXNwb25zZTo6bWFrZSgpICAgICAgICAgIC8vIDIwMApTdWNjZXNzZnVsUmVzcG9uc2U6Om1ha2UoMjAxKSAgICAgICAvLyAyMDEKICAgIC0+ZGVzY3JpcHRpb24oJ1Bvc3QgY3JlYXRlZCcpCiAgICAtPmNvbnRlbnQoWwogICAgICAgIEFwcGxpY2F0aW9uSnNvbjo6bWFrZShQb3N0U2NoZW1hOjptYWtlKCkpLAogICAgXSk7CmBgYAoKIyMjIE5vQ29udGVudFJlc3BvbnNlCgpgYGBwaHAKTm9Db250ZW50UmVzcG9uc2U6Om1ha2UoKTsgICAgICAgICAgLy8gMjA0CmBgYAoKIyMjIEpTT04gcmVzcG9uc2UgKHNob3J0aGFuZCkKCmBgYHBocAokbWV0aG9kLT5qc29uUmVzcG9uc2UoWwogICAgU3RyaW5nUHJvcGVydHk6Om1ha2UoJ3Rva2VuJyktPmV4YW1wbGUoJ2FiYzEyMycpLAogICAgU3RyaW5nUHJvcGVydHk6Om1ha2UoJ3Rva2VuX3R5cGUnKS0+ZGVmYXVsdCgnQmVhcmVyJyksCl0pOwpgYGAKCiMjIyBDdXN0b20gcmVzcG9uc2VzCgpgYGBwaHAKUmVzcG9uc2U6Om1ha2UoNDIyKQogICAgLT5uYW1lKCdWYWxpZGF0aW9uRXJyb3InKQogICAgLT5kZXNjcmlwdGlvbignVmFsaWRhdGlvbiBmYWlsZWQnKQogICAgLT5jb250ZW50KFsKICAgICAgICBBcHBsaWNhdGlvbkpzb246Om1ha2UoRXJyb3JTY2hlbWE6Om1ha2UoKSksCiAgICBdKTsKYGBgCgojIyBTZWN1cml0eQoKIyMjIEJ1aWx0LWluOiBTYW5jdHVtQXV0aAoKYGBgcGhwCnVzZSBBdXRvRG9jdW1lbnRhdGlvblxTZWN1cml0eVxTYW5jdHVtQXV0aDsKCi8vIEFzIGdsb2JhbCBkZWZhdWx0CnByb3RlY3RlZCBmdW5jdGlvbiBkZWZhdWx0U2VjdXJpdHlTY2hlbWEoKTogP1NlY3VyaXR5UmVxdWlyZW1lbnQKewogICAgcmV0dXJuIFNhbmN0dW1BdXRoOjptYWtlKCk7Cn0KCi8vIFBlci1vcGVyYXRpb24KJG1ldGhvZC0+c2VjdXJpdHkoU2FuY3R1bUF1dGg6Om1ha2UoKSk7CmBgYAoKIyMjIEhUVFAgU2VjdXJpdHkgU2NoZW1lCgpgYGBwaHAKSHR0cFNlY3VyaXR5U2NoZW1lOjptYWtlKCdiZWFyZXInKQogICAgLT5iZWFyZXJGb3JtYXQoJ0pXVCcpCiAgICAtPmRlc2NyaXB0aW9uKCdKV1QgQmVhcmVyIHRva2VuJyk7CmBgYAoKIyMjIEFQSSBLZXkKCmBgYHBocAp1c2UgQXV0b0RvY3VtZW50YXRpb25cRW51bXNcQXBpS2V5U2VjdXJpdHlTY2hlbWVJbjsKCkFwaUtleVNlY3VyaXR5U2NoZW1lOjptYWtlKCdYLUFQSS1LZXknLCBBcGlLZXlTZWN1cml0eVNjaGVtZUluOjpIRUFERVIpCiAgICAtPmRlc2NyaXB0aW9uKCdBUEkga2V5IHBhc3NlZCBpbiB0aGUgWC1BUEktS2V5IGhlYWRlcicpOwpgYGAKCiMjIyBPcGVuSUQgQ29ubmVjdAoKYGBgcGhwCk9wZW5JZENvbm5lY3RTZWN1cml0eVNjaGVtZTo6bWFrZSgnaHR0cHM6Ly9hdXRoLmV4YW1wbGUuY29tLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uJykKICAgIC0+ZGVzY3JpcHRpb24oJ09wZW5JRCBDb25uZWN0Jyk7CmBgYAoKIyMjIEN1c3RvbSBzZWN1cml0eSBjb21wb25lbnQKCkNyZWF0ZSBhIHJldXNhYmxlIHNlY3VyaXR5IHJlcXVpcmVtZW50OgoKYGBgcGhwCmNsYXNzIEFwaUtleUF1dGggZXh0ZW5kcyBTZWN1cml0eVJlcXVpcmVtZW50CnsKICAgIHB1YmxpYyBmdW5jdGlvbiBjb250ZW50KCk6IFNlY3VyaXR5U2NoZW1lCiAgICB7CiAgICAgICAgcmV0dXJuIEFwaUtleVNlY3VyaXR5U2NoZW1lOjptYWtlKCdYLUFQSS1LZXknLCBBcGlLZXlTZWN1cml0eVNjaGVtZUluOjpIRUFERVIpCiAgICAgICAgICAgIC0+ZGVzY3JpcHRpb24oJ0FQSSBrZXkgcGFzc2VkIGluIHRoZSBYLUFQSS1LZXkgaGVhZGVyJyk7CiAgICB9Cn0KYGBgCgpVc2UgaXQgZ2xvYmFsbHkgb3IgcGVyLW9wZXJhdGlvbjoKCmBgYHBocAovLyBHbG9iYWwKcHJvdGVjdGVkIGZ1bmN0aW9uIGRlZmF1bHRTZWN1cml0eVNjaGVtYSgpOiA/U2VjdXJpdHlSZXF1aXJlbWVudAp7CiAgICByZXR1cm4gQXBpS2V5QXV0aDo6bWFrZSgpOwp9CgovLyBQZXItb3BlcmF0aW9uIG92ZXJyaWRlCiRtZXRob2QtPnNlY3VyaXR5KEFwaUtleUF1dGg6Om1ha2UoKSk7CmBgYAoKIyMgQ29uZmlndXJhdGlvbgoKUHVibGlzaCB0aGUgY29uZmlnIGZpbGUgd2l0aCBgcGhwIGFydGlzYW4gdmVuZG9yOnB1Ymxpc2ggLS10YWc9YXV0by1kb2N1bWVudGF0aW9uLWNvbmZpZ2AuCgp8IE9wdGlvbiB8IERlZmF1bHQgfCBEZXNjcmlwdGlvbiB8CnwtLS18LS0tfC0tLXwKfCBgZ2VuZXJhdGVfYWx3YXlzYCB8IGBmYWxzZWAgfCBBdXRvLXJlZ2VuZXJhdGUgdGhlIHNwZWMgb24gZXZlcnkgcGFnZSBsb2FkIChkZXYgb25seSkgfAp8IGBlbnZpcm9ubWVudGAgfCBgWydsb2NhbCcsICdkZXZlbG9wbWVudCddYCB8IEVudmlyb25tZW50cyB3aGVyZSBkb2N1bWVudGF0aW9uIHJvdXRlcyBhcmUgcmVnaXN0ZXJlZCB8CnwgYHJvdXRlcy5kb2N1bWVudGF0aW9uYCB8IGBhcGkvZG9jYCB8IFVSTCBwYXRoIGZvciB0aGUgUmVkb2MgVUkgfAp8IGByb3V0ZXMuc3BlY2lmaWNhdGlvbmAgfCBgYXBpL2RvYy9zcGVjYCB8IFVSTCBwYXRoIGZvciB0aGUgcmF3IE9wZW5BUEkgWUFNTCB8CnwgYHBhdGhzLnNvdXJjZWAgfCBgYmFzZV9wYXRoKCdkb2NzJylgIHwgRGlyZWN0b3J5IGNvbnRhaW5pbmcgeW91ciBkb2N1bWVudGF0aW9uIGNsYXNzZXMgfAp8IGBwYXRocy5nZW5lcmF0ZWQtZG9jYCB8IGBzdG9yYWdlX3BhdGgoJ2FwcC9hdXRvLWRvY3MnKWAgfCBEaXJlY3Rvcnkgd2hlcmUgdGhlIGdlbmVyYXRlZCBZQU1MIGlzIHN0b3JlZCB8CgpFbnZpcm9ubWVudCB2YXJpYWJsZSBgQVVUT19ET0NVTUVOVEFUSU9OX0dFTkVSQVRFX0FMV0FZU2AgY29udHJvbHMgdGhlIGBnZW5lcmF0ZV9hbHdheXNgIG9wdGlvbi4gYEFVVE9fRE9DVU1FTlRBVElPTl9TT1VSQ0VgIGNvbnRyb2xzIHRoZSBzb3VyY2UgZG9jcyBwYXRoLgoKIyMgR2VuZXJhdGlvbgoKIyMjIEFydGlzYW4gY29tbWFuZAoKYGBgYmFzaApwaHAgYXJ0aXNhbiBhdXRvLWRvYzpnZW5lcmF0ZQpgYGAKCkdlbmVyYXRlcyBgZG9jdW1lbnRhdGlvbi55YW1sYCBmcm9tIHlvdXIgYERvY3VtZW50YXRpb25gIGNsYXNzIGFuZCBhbGwgZGlzY292ZXJlZCBwYXRoIGNvbXBvbmVudHMuCgojIyMgQXV0by1yZWdlbmVyYXRpb24KClNldCBgZ2VuZXJhdGVfYWx3YXlzYCB0byBgdHJ1ZWAgKG9yIGBBVVRPX0RPQ1VNRU5UQVRJT05fR0VORVJBVEVfQUxXQVlTPXRydWVgIGluIGAuZW52YCkgdG8gcmVnZW5lcmF0ZSB0aGUgc3BlYyBvbiBldmVyeSBkb2N1bWVudGF0aW9uIHBhZ2UgbG9hZC4gVXNlZnVsIGR1cmluZyBkZXZlbG9wbWVudC4KCiMjIyBSb3V0ZXMKCnwgUm91dGUgfCBEZXNjcmlwdGlvbiB8CnwtLS18LS0tfAp8IGAvYXBpL2RvY2AgfCBSZWRvYyBkb2N1bWVudGF0aW9uIFVJIHwKfCBgL2FwaS9kb2Mvc3BlY2AgfCBSYXcgT3BlbkFQSSBZQU1MIHNwZWNpZmljYXRpb24gfAoKUm91dGVzIGFyZSBvbmx5IHJlZ2lzdGVyZWQgaW4gdGhlIGVudmlyb25tZW50cyBsaXN0ZWQgaW4gdGhlIGBlbnZpcm9ubWVudGAgY29uZmlnIG9wdGlvbi4KCiMjIExpY2Vuc2UKClRoaXMgbGlicmFyeSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgW0xJQ0VOU0VdKExJQ0VOU0UpIGZpbGUgZm9yIGRldGFpbHMuCgojIyBDcmVkaXRzCgotIERldmVsb3BlcjogQW5kcml5IEhyZWNoeW4KLSBFbWFpbDogYW5kcml5LmhyZWNoeW5AZ21haWwuY29tCg== readmeEtag: '"a4382285589b7192131211a25a5f80168396a6c6"' readmeLastModified: Sun, 01 Feb 2026 13:47:08 GMT repositoryId: 605599739 description: >- Auto Documentation is a library for generating API documentation for Laravel. created: '2023-02-23T14:00:16Z' updated: '2026-02-01T13:47:14Z' language: PHP archived: false stars: 0 watchers: 1 forks: 0 owner: andrii-hrechyn logo: https://avatars.githubusercontent.com/u/38326555?v=4 license: MIT repoEtag: '"ae46d588497aadc70d2be44dc7b75e5a4f62edce7b197dc952da1904a8e8126d"' repoLastModified: Sun, 01 Feb 2026 13:47:14 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/sudokuru/usergamepreferences v3: true id: e8162c6421bf8dd56ababb8dca8ea0d3 repositoryMetadata: base64Readme: >- PiBbIUlNUE9SVEFOVF0gIAo+IFRoaXMgcmVwb3NpdG9yeSBpcyByZWFkLW9ubHkgLyBhcmNoaXZlZCBhbmQgd2lsbCBub3QgcmVjaWV2ZSB1cGRhdGVzLgoKIyBbVHlwZWRvYyBEb2N1bWVudGF0aW9uIFdlYnNpdGVdKGh0dHBzOi8vc3Vkb2t1cnUuZ2l0aHViLmlvL1VzZXJBY3RpdmVHYW1lcy8pPGJyPgoKCiMgRGV2ZWxvcGVyIFNldHVwCgoxLiBHZXQgdGhlIC5lbnYgZmlsZSBmcm9tIHRoZSBNU0IgYnVpbGRpbmcgbmV4dCB0byB0aGUgd2F0ZXIgZm91bnRhaW4uIAoyLiBJbnN0YWxsIERvY2tlciBvbiB5b3VyIG1hY2hpbmUuIFR1dG9yaWFsIGlzIGxpbmtlZCBiZWxvdzo8YnI+CiAgIFshW0RvY2tlciBUdXRvcmlhbF0oaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvMmV6TnFxYVNqcTgvMC5qcGcpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTJlek5xcWFTanE4KTxicj4KMi4gT25jZSBkb2NrZXIgaXMgaW5zdGFsbGVkLCB0aGUgTW9uZ28gaW1hZ2UgY2FuIGJlIHJ1biB3aXRoIHRoaXMgY29tbWFuZDo8YnI+Ck5vdGUgdXNlIGBgYHN1ZG9gYGAgb24gTGludXgvTWFjPGJyPgpgYGBjb25zb2xlCm5wbSBydW4gZG9ja2VyCmBgYAozLiBUaGUgYXBwIGNhbiB0aGVuIGJlIHJ1biB3aXRoIHRoZSBjb21tYW5kOjxicj4KYGBgY29uc29sZQpucG0gcnVuIHN0YXJ0CmBgYAo0LiBJbnRlZ3JhdGlvbiB0ZXN0cyBjYW4gYmUgcnVuIHdoZW4gdGhlIGFwcCBpcyBydW5uaW5nIHdpdGggdGhpcyBjb21tYW5kOjxicj4KYGBgY29uc29sZQpucG0gcnVuIHRlc3Q6aW50ZWdyYXRpb24KYGBgCg== readmeEtag: '"551645e2a891d8f25afe5c10c232d868e7f8455c"' readmeLastModified: Sun, 12 May 2024 16:01:41 GMT repositoryId: 609680639 description: null created: '2023-03-04T22:48:37Z' updated: '2024-05-12T16:03:54Z' language: TypeScript archived: true stars: 0 watchers: 0 forks: 0 owner: Sudokuru logo: https://avatars.githubusercontent.com/u/114212382?v=4 license: GPL-3.0 repoEtag: '"7c25b7a58faaad12a3360b583a6ffbe54464606ce708ad2eeda54fec9f1ccdd0"' repoLastModified: Sun, 12 May 2024 16:03:54 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/liankui/openapi-cli v3: true id: 63cf9213dfed8a7350d6e635f45f254e repositoryMetadata: base64Readme: >- IyBvcGVuYXBpLWNsaQoKb3BlbmFwaS1jbGkg5piv5LiA5Liq5b+r6YCf5qOA5p+l44CB5Y2H57qnc3dhZ2dlci9vcGVuQVBJ5paH5qGj55qE5bCP5bel5YW344CCCgovLyBUT0RPIHAxIOa3u+WKoOWvuXN3YWdnZXIy5paH5Lu255qE5b6q546v5L6d6LWW44CB5Lqk5Y+J5L6d6LWW55qE5qOA5rWLCi8vIFRPRE8gcDEg5re75YqgcG9zdG1hbiBqc29u5paH5Lu26L2s5YyW5Li6b3BlbmFwaTMKCiMjIOS9v+eUqOaWueW8j++8mgoKYGBgClVTQUdFOgpvcGVuYXBpLWNsaSBbY29tbWFuZF0gW2NvbW1hbmQgb3B0aW9uc10gW2FyZ3VtZW50cy4uLl0KCkNPTU1BTkRTOgpsaW50LCBsICAgICBsaW50IHN3YWdnZXIvb3BlbmFwaSBkb2N1bWVudAp1cGdyYWRlLCB1ICB1cGdyYWRlIHN3YWdnZXIyIHRvIG9wZW5hcGkzCnZlcnNpb24sIHYgIFNob3cgdmVyc2lvbgpoZWxwLCBoICAgICBTaG93cyBhIGxpc3Qgb2YgY29tbWFuZHMgb3IgaGVscCBmb3Igb25lIGNvbW1hbmQKYGBgCgojIyMg5Z+656GA5ZG95LukCgoxLiBsaW50IDxmaWxlbmFtZT7vvIzmo4Dmn6VvcGVuQVBJ5Lit5pyJ6Zeu6aKY55qE6K+t5rOV6ZSZ6K+v77ybCiAgICBgYGDFkwogICAkIC4vb3BlbmFwaS1jbGktdjAuMi4zLWRhcndpbi1hbWQ2NCBsaW50IHRlc3RkYXRhL3N3YWdnZXIyLXdyb25nLmpzb24KICAgMjAyMy0wNi0xOVQxNzoxNTowNi41OTErMDgwMCAgICBpbmZvICAgIHBrZy9saW50LmdvOjM3ICBhcGkgbGludCAgICAgICAgeyJmaWxlIjogInRlc3RkYXRhL3N3YWdnZXIyLXdyb25nLmpzb24ifQogICAyMDIzLTA2LTE5VDE3OjE1OjA2LjYxMSswODAwICAgIGluZm8gICAgcGtnL2xpbnQuZ286NDggIHZpb2xhdGlvbiAgICAgICB7InJlc3VsdCI6IHsidmFsaWQiOmZhbHNlLCJwYXRoIjoiL3BvbGljeS9jbGFzc2lmeVNhbXBsZS9nZXRMaXN0IiwibWV0aG9kIjoicG9zdCIsInN0YXJ0TGluZSI6MjYsImVuZExpbmUiOjMxLCJkZXNjcmlwdGlvbiI6Ik9wZXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSB1bmlxdWUgYW5kIG5vbi1yZXBlYXRpbmcuIiwiaG93VG9GaXgiOiJNYWtlIHN1cmUgdGhhdCBhbGwgdGhlIG9wZXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSB1bmlxdWUgYW5kIG5vbi1yZXBlYXRpbmcsIGRvbid0IGR1cGxpY2F0ZSBuYW1lcywgZG9uJ3RyZS11c2UgcGFyYW1ldGVyIG5hbWVzIGluIHRoZSBzYW1lIG9wZXJhdGlvbi4ifX0KICAgMjAyMy0wNi0xOVQxNzoxNTowNi42MTErMDgwMCAgICBpbmZvICAgIHBrZy9saW50LmdvOjUyICBhcGkgbGludCBmaW5pc2hlZCAgICAgICB7ImZpbGUiOiAidGVzdGRhdGEvc3dhZ2dlcjItd3JvbmcuanNvbiJ9CiAgIGBgYAoyLiB1cGdyYWRlIDxmaWxlbmFtZT7vvIzljYfnuqdzd2FnZ2VyMuWIsG9wZW5BUEkz77yI55Sf5oiQ5Li65LiA5Liq5pe26Ze05oiz5ZCO57yA55qEanNvbuaWh+S7tu+8ieOAggogICBgYGAKICAgJCAuL29wZW5hcGktY2xpLXYwLjIuMy1kYXJ3aW4tYW1kNjQgdXBncmFkZSB0ZXN0ZGF0YS9zd2FnZ2VyMi13cm9uZy5qc29uCiAgIDIwMjMtMDYtMTlUMTc6MTg6MzMuMzMzKzA4MDAgICAgaW5mbyAgICBwa2cvb3BlbmFwaTIuZ286NjUgICAgICBhcGkgdXBncmFkZSAgICAgeyJmaWxlIjogInRlc3RkYXRhL3N3YWdnZXIyLXdyb25nLmpzb24ifQogICAyMDIzLTA2LTE5VDE3OjE4OjMzLjM0NyswODAwICAgIGluZm8gICAgcGtnL29wZW5hcGkyLmdvOjE0NCAgICAgZGVsZXRlIGludmFsaWQgb3BlcmF0aW9uICAgICAgICB7Im9wZXJhdGlvbiI6IHsidmFsaWQiOmZhbHNlLCJwYXRoIjoiL3BvbGljeS9jbGFzc2lmeVNhbXBsZS9nZXRMaXN0IiwibWV0aG9kIjoicG9zdCIsInN0YXJ0TGluZSI6MSwiZW5kTGluZSI6MSwiZGVzY3JpcHRpb24iOiJPcGVyYXRpb24gcGFyYW1ldGVycyBhcmUgdW5pcXVlIGFuZCBub24tcmVwZWF0aW5nLiIsImhvd1RvRml4IjoiTWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVycyBhcmUgdW5pcXVlIGFuZCBub24tcmVwZWF0aW5nLCBkb24ndCBkdXBsaWNhdGUgbmFtZXMsIGRvbid0cmUtdXNlIHBhcmFtZXRlciBuYW1lcyBpbiB0aGUgc2FtZSBvcGVyYXRpb24uIn19CiAgIDIwMjMtMDYtMTlUMTc6MTg6MzMuMzQ3KzA4MDAgICAgaW5mbyAgICBwa2cvb3BlbmFwaTIuZ286OTYgICAgICBhcGkgdXBncmFkZSBzdWNjZXNzZnVsbHkgICAgICAgIHsiZmlsZSI6ICJ0ZXN0ZGF0YS9zd2FnZ2VyMi13cm9uZy0xNjg3MTY2MzEzMzQ3Lmpzb24iLCAidmVyc2lvbiI6ICIzLjAuMyIsICJkdXJhdGlvbiI6ICIxNC4yMzUwODNtcyJ9CiAgIGBgYAoKcmVmOgpodHRwczovL2dpdGh1Yi5jb20vdXJmYXZlL2NsaQpodHRwczovL2dpdGh1Yi5jb20vTHVjeUJvdC1JbmMvYXBpLXNwZWMtY29udmVydGVyCmh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkK readmeEtag: '"93048ffbb2d2620fbb67e9b5a61d9e85b32ba6f7"' readmeLastModified: Mon, 22 Jan 2024 06:12:38 GMT repositoryId: 631874442 description: 一个快速检查、升级swagger/openAPI文档的小工具。 created: '2023-04-24T08:42:28Z' updated: '2023-06-26T05:41:44Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: liankui logo: https://avatars.githubusercontent.com/u/26359513?v=4 license: MIT repoEtag: '"41bf401779427925ae82e8e04830f0e4ea55ac04230cca2c47c8bdb7c431a818"' repoLastModified: Mon, 26 Jun 2023 05:41:44 GMT category: Parsers foundInMaster: true - source: https://openapi.tools/ name: OpenAPI Explorer category: - Documentation - Parsers source_description: >- Generate and render fully customizable API documentation, then explore and execute API requests via the integrated console. link: https://github.com/Rhosys/openapi-explorer/blob/main/README.md repository: https://github.com/authress-engineering/openapi-explorer language: - Javascript - Custom Element v2: true v3: true v3_1: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIEV4cGxvcmVyCldlYiBDb21wb25lbnQgQ3VzdG9tIEVsZW1lbnQgZm9yIE9wZW4tQVBJIHNwZWMgdmlld2luZywgd2l0aCBhdXRvbWF0aWMgaW50ZWdyYXRpb24gZm9yIFJlYWN0IGFuZCBWdWUuCgpUaGlzIGlzIGFuIG9wZW4gc291cmNlIHByb2plY3QgbWFuYWdlZCBieSB0aGUgW0F1dGhyZXNzIEVuZ2luZWVyaW5nIHRlYW1dKGh0dHBzOi8vYXV0aHJlc3MuaW8pLgoKPHAgYWxpZ249ImNlbnRlciI+CiAgICA8YSBocmVmPSJodHRwczovL2F1dGhyZXNzLmlvIiBhbHQ9IkF1dGhyZXNzIEVuZ2luZWVyaW5nIj4KICAgICAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vc3RhdGljL3YxP2xhYmVsPUF1dGhyZXNzK0VuZ2luZWVyaW5nJm1lc3NhZ2U9T3BlbkFQSSUyMEV4cGxvcmVyJmNvbG9yPSUyM0ZCQUYwQiZsb2dvPWFuZHJvaWRhdXRvJmxvZ29Db2xvcj0lMjNGQkFGMEIiPjwvYT4KICAgIDxhIGhyZWY9Ii4vTElDRU5TRSIgYWx0PSJhcGFjaGUgMi4wIGxpY2Vuc2UiPgogICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLUFwYWNoZSUyMDIuMC1ibHVlLnN2ZyI+PC9hPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9iYWRnZS5mdXJ5LmlvL2pzL29wZW5hcGktZXhwbG9yZXIiIGFsdD0ibnBtIHZlcnNpb24iPgogICAgICAgIDxpbWcgc3JjPSJodHRwczovL2JhZGdlLmZ1cnkuaW8vanMvb3BlbmFwaS1leHBsb3Jlci5zdmciPjwvYT4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYXV0aHJlc3MuaW8vY29tbXVuaXR5IiBhbHQ9Im5wbSB2ZXJzaW9uIj4KICAgICAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29tbXVuaXR5LURpc2NvcmQtcHVycGxlLnN2ZyI+PC9hPgogICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cud2ViY29tcG9uZW50cy5vcmcvZWxlbWVudC9vcGVuYXBpLWV4cGxvcmVyIiBhbHQ9InB1Ymxpc2hlZCBvbiB3ZWJjb21wb25lbnRzLm9yZyI+CiAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvd2ViY29tcG9uZW50cy5vcmctT3BlbkFQSSUyMEV4cGxvcmVyLWJsdWUuc3ZnP3N0eWxlPXNvY2lhbCI+PC9hPgo8L3A+CgoKIyMgQmVhdXRpZnVsIGFuZCByZXNwb25zaXZlIEFQSSBleHBsb3JlciBhbmQgY29uc29sZQoKPHA+CiAgPGEgaHJlZj0iaHR0cHM6Ly9hdXRocmVzcy1lbmdpbmVlcmluZy5naXRodWIuaW8vb3BlbmFwaS1leHBsb3Jlci8jP3JvdXRlPWdldC0vdjEvdXNlcnMvLXVzZXJJZC0vcmVzb3VyY2VzLy1yZXNvdXJjZVVyaS0vcGVybWlzc2lvbnMvLXBlcm1pc3Npb24tIiB0YXJnZXQ9Il9ibGFuayI+CiAgICA8aW1nIHNyYz0iLi9kb2NzL2Rlc2t0b3Atdmlldy5wbmciIGFsdD0iRGVza3RvcCBkZW1vIGltYWdlIiB3aWR0aD0iODAwcHgiPgogIDwvYT4KPC9wPgoKIyMgQ2hlY2sgb3V0IHRoZSBEZW1vCltPcGVuQVBJIEV4cGxvcmVyIERlbW9dKGh0dHBzOi8vYXV0aHJlc3MtZW5naW5lZXJpbmcuZ2l0aHViLmlvL29wZW5hcGktZXhwbG9yZXIvIz9yb3V0ZT1nZXQtL3YxL3VzZXJzLy11c2VySWQtL3Jlc291cmNlcy8tcmVzb3VyY2VVcmktL3Blcm1pc3Npb25zLy1wZXJtaXNzaW9uLSkKCihDdXJpb3VzIGFib3V0IHRoZSBbZXhhY3Qgc3R5bGluZyBvZiB0aGUgZGVtb10oLi9kb2NzL2F1dGhyZXNzLWV4YW1wbGUudnVlKSkKCiMjIEdldCBzdGFydGVkIG5vdwpgbnBtIGluc3RhbGwgb3BlbmFwaS1leHBsb3JlcmAKCiMjIyBRdWljayBzdGFydCBleGFtcGxlCiogYGltcG9ydCAnb3BlbmFwaS1leHBsb3Jlcic7YAoKYGBgaHRtbAo8b3BlbmFwaS1leHBsb3JlciA6c3BlYy11cmw9Im9wZW5hcGlTcGVjaWZpY2F0aW9uVXJsIj4KICA8ZGl2IHNsb3Q9Im92ZXJ2aWV3Ij4KICAgIDxoMT5UaGUgQVBJPC9oMT4KICA8L2Rpdj4KPC9vcGVuYXBpLWV4cGxvcmVyPgpgYGAKCiMjIEZlYXR1cmVzCi0gT3BlbkFQSSAzLjIrCi0gQnVpbHQgaW4gYXV0b21hdGljIEludGVybmF0aW9uYWxpemF0aW9uIChJMThuKQotIFdvcmtzIHdpdGggYW55IGZyYW1ld29yawotIFZpZXcgcmVzb3VyY2VzLCBtb2RlbHMsIGFuZCBkaXJlY3RseSBtYWtlIEFQSSBjYWxscwotIEJldHRlciBVc2FiaWxpdHksIAogIC0gUmVxdWVzdCBmaWVsZHMgYXJlIHByZS1wb3B1bGF0ZWQgd2l0aCBkZWZhdWx0IGRhdGEKICAtIFRha2VzIG9ubHkgb25lIGNsaWNrIHRvIG1ha2UgYW4gQVBJIGNhbGwKICAtIFJlbmRlcnMgU0RLL2NsaWVudCBjb2RlIHNhbXBsZXMKICAtIEJyYW5kaW5nIGFuZCBQZXJzb25hbGl6YXRpb24gZmVhdHVyZXMgbWFrZXMgaXQgZWFzeSB0byBmb2xsb3cgYW55IHN0eWxlIGd1aWRlCiAgLSBGdWxseSBjdXN0b21pemFibGUgdGhlbWUKLSBQbGVudHkgb2YgY3VzdG9taXphdGlvbiBvcHRpb25zIAogIC0gQWRkIGV4dGVybmFsIGNvbnRlbnRzIHRocm91Z2hvdXQgdGhlIGNvbXBvbmVudCwgZXh0ZW5zaWJsZSB3aXRoIG1hcmtkb3duLCBpbWFnZXMsIGxpbmtzLCBhbmQgdGV4dAogIC0gQWxsIHByb3BlcnRpZXMgYXJlIHJlYWN0aXZlCiAgLSBTdHlsZSB0aGUgZWxlbWVudCB3aXRoIHN0YW5kYXJkIGNzcyAoY2hhbmdlIHBhZGRpbmcsIHBvc2l0aW9uLCBib3JkZXIsIG1hcmdpbiApCiAgLSBTdHlsZXMgdGhhdCByZWZsZWN0IHlvdXIgc2l0ZSBhbmQgeW91ciBVSS9VWCBmcmFtZXdvcmtzIChSZWFjdCwgVnVlLCB2YW5pbGxhIGpzLCBCb290c3RyYXAsIE1hdGVyaWFsLCBhbmQgbWFueSBtb3JlLi4uKQotIFJlc3BvbnNpdmUgc28gaXQgd29ya3Mgb24gbW9iaWxlCi0gTGlnaHR3ZWlnaHQgYW5kIGZhc3QKCgojIyBEb2N1bWVudGF0aW9uCiogW01pZ3JhdGluZyBmcm9tIHYxIHRvIHYyIG9mIG9wZW5hcGktZXhwbG9yZXJdKC4vQ0hBTkdFTE9HLm1kIzIuMCkgLSBSZXZpZXcgdGhlIGJyZWFraW5nIGNoYW5nZXMKKiBbUHJvcGVydHkgYW5kIHZhcmlhYmxlcyBkb2N1bWVudGF0aW9uXSguL2RvY3MvZG9jdW1lbnRhdGlvbi5tZCkKKiBbRXhhbXBsZXMgKFZ1ZSwgUmVhY3QsIEpTLCBhbmQgbW9yZSldKC4vZG9jcy9leGFtcGxlcy5tZCkKKiBHZW5lcmF0ZSB0aGUgb3BlbiBzcGVjaWZpY2F0aW9uIGRvY3VtZW50IG5lY2Vzc2FyeSBmb3IgdGhpcyBsaWJyYXJ5IC0gYnkgdXNpbmcgYW4gZWRpdG9yIG9yIGJ5IGZvbGxvd2luZyB0aGUgW09wZW4gQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjIuMC5tZCkKKiBbU3R5bGluZyB5b3VyIG9wZW5hcGktZXhwbG9yZXIgVUldKC4vZG9jcy9zdHlsaW5nLm1kKQoqIFtSZWNlbnQgY2hhbmdlcyBhbmQgdXBkYXRlc10oLi9DSEFOR0VMT0cubWQpCgojIyBUcm91Ymxlc2hvb3RpbmcgaW50ZWdyYXRpb24gaXNzdWVzCltDb21tb24gaXNzdWVzXSguL2RvY3MvdHJvdWJsZXNob290aW5nLm1kKQoKCiMjIENvbnRyaWJ1dGlvbgpbQ29udHJpYnV0aW9ucyBHdWlkZV0oLi9DT05UUklCVVRJTkcubWQpCgpgYGBiYXNoCiMgQ2xvbmUgLyBEb3dubG9hZCB0aGUgcHJvamVjdCB0aGVuCmdpdCBjbG9uZQoKIyMgUHVsbCBpbiBkZXBlbmRlbmNpZXMKeWFybgoKIyBidWlsZCB3aWxsIGdlbmVyYXRlIGRpc3Qvb3BlbmFwaS1leHBsb3Jlci5taW4uanMKeWFybiBidWlsZCAKCmltcG9ydCAnb3BlbmFwaS1leHBsb3Jlcic7CmBgYAoKCiMjIENvcHlyaWdodApDb3B5cmlnaHQgUmhvc3lzIEFHCgpMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKeW91IG1heSBub3QgdXNlIHRoaXMgcmVwb3NpdG9yeSBzb3VyY2UgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K readmeEtag: '"46cb8846a311b48a47d03f99e8f96aa3bd376ca9"' readmeLastModified: Tue, 14 Oct 2025 20:43:25 GMT repositoryId: 351849045 description: OpenAPI Web component to generate a UI from the spec. created: '2021-03-26T16:42:43Z' updated: '2026-02-01T08:40:58Z' language: JavaScript archived: false stars: 343 watchers: 6 forks: 49 owner: Authress-Engineering logo: https://avatars.githubusercontent.com/u/35577654?v=4 license: Apache-2.0 repoEtag: '"60074c65bbaeb4963a43b67c02dfecd6b3da12c0a60e17299a8f8fd765dcb812"' repoLastModified: Sun, 01 Feb 2026 08:40:58 GMT foundInMaster: true id: c8fb58ca4a515c7e0b381f4e63d7c355 oldLocations: - https://github.com/rhosys/openapi-explorer - source: https://openapi.tools/ name: openapi-backend homepage: https://github.com/anttiviljami/openapi-backend language: Node.js + Typescript source_description: >- Build, Validate, Route, and Mock using OpenAPI specification. Framework-agnostic category: Server link: https://www.npmjs.com/package/openapi-backend repository: https://github.com/openapistack/openapi-backend v2: false v3: true v3_1: true repositoryMetadata: base64Readme: >- PHNwYW4gaWQ9Im5wbS0tZml4LWhpZGRlbi1yZWFkbWUtaGVhZGVyIj48L3NwYW4+Cgo8aDEgYWxpZ249ImNlbnRlciI+PGltZyBhbHQ9Im9wZW5hcGktYmFja2VuZCIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXN0YWNrL29wZW5hcGktYmFja2VuZC9yYXcvbWFpbi9oZWFkZXIucG5nIiBzdHlsZT0ibWF4LXdpZHRoOjUwcmVtIj48L2gxPgoKWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL3dvcmtmbG93cy9DSS9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXN0YWNrL29wZW5hcGktYmFja2VuZC9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBQ0kpClshW0xpY2Vuc2VdKGh0dHA6Ly9pbWcuc2hpZWxkcy5pby86bGljZW5zZS1taXQtYmx1ZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXN0YWNrL29wZW5hcGktYmFja2VuZC9ibG9iL21haW4vTElDRU5TRSkKWyFbbnBtIHZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3Yvb3BlbmFwaS1iYWNrZW5kLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktYmFja2VuZCkKWyFbbnBtIGRvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZHcvb3BlbmFwaS1iYWNrZW5kLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktYmFja2VuZCkKWyFbTGlicmFyaWVzLmlvIGRlcGVuZGVuY3kgc3RhdHVzIGZvciBsYXRlc3QgcmVsZWFzZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9saWJyYXJpZXNpby9yZWxlYXNlL25wbS9vcGVuYXBpLWJhY2tlbmQuc3ZnKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb3BlbmFwaS1iYWNrZW5kP2FjdGl2ZVRhYj1kZXBlbmRlbmNpZXMpCiFbbnBtIHR5cGUgZGVmaW5pdGlvbnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3R5cGVzL29wZW5hcGktYmFja2VuZC5zdmcpClshW0J1eSBtZSBhIGNvZmZlZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9kb25hdGUtYnV5JTIwbWUlMjBhJTIwY29mZmVlLW9yYW5nZSldKGh0dHBzOi8vYnV5bWVhY29mZi5lZS9hbnR0aXZpbGphbWkpCgo8cCBhbGlnbj0iY2VudGVyIj48Yj5CdWlsZCwgVmFsaWRhdGUsIFJvdXRlLCBBdXRoZW50aWNhdGUsIGFuZCBNb2NrIHVzaW5nIE9wZW5BUEkgZGVmaW5pdGlvbnMuPC9iPjwvcD4KCjxwIGFsaWduPSJjZW50ZXIiPk9wZW5BUEkgQmFja2VuZCBpcyBhIEZyYW1ld29yay1hZ25vc3RpYyBtaWRkbGV3YXJlIHRvb2wgZm9yIGJ1aWxkaW5nIGJlYXV0aWZ1bCBBUElzIHdpdGggPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24iPk9wZW5BUEkgU3BlY2lmaWNhdGlvbjwvYT4uPC9wPgoKIyMgRmVhdHVyZXMKCi0gW3hdIEJ1aWxkIEFQSXMgYnkgZGVzY3JpYmluZyB0aGVtIGluIFtPcGVuQVBJIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4yLm1kKQotIFt4XSBSZWdpc3RlciBoYW5kbGVycyBmb3IgW29wZXJhdGlvbklkc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjIubWQjZml4ZWQtZmllbGRzLTgpCnRvIHJvdXRlIHJlcXVlc3RzIGluIHlvdXIgZmF2b3VyaXRlIE5vZGUuanMgYmFja2VuZAotIFt4XSBVc2UgW0pTT04gU2NoZW1hXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMi5tZCNkYXRhLXR5cGVzKSB0byB2YWxpZGF0ZQpBUEkgcmVxdWVzdHMgYW5kL29yIHJlc3BvbnNlcy4gT3BlbkFQSSBCYWNrZW5kIHVzZXMgdGhlIFtBSlZdKGh0dHBzOi8vYWp2LmpzLm9yZy8pIGxpYnJhcnkgdW5kZXIgdGhlIGhvb2QgZm9yIHBlcmZvcm1hbnQgdmFsaWRhdGlvbgotIFt4XSBSZWdpc3RlciBBdXRoIC8gU2VjdXJpdHkgSGFuZGxlcnMgZm9yIFtPcGVuQVBJIFNlY3VyaXR5IFNjaGVtZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kI3NlY3VyaXR5U2NoZW1lT2JqZWN0KQp0byBhdXRob3JpemUgQVBJIHJlcXVlc3RzCi0gW3hdIEF1dG8tbW9jayBBUEkgcmVzcG9uc2VzIHVzaW5nIFtPcGVuQVBJIGV4YW1wbGVzIG9iamVjdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4yLm1kI2V4YW1wbGUtb2JqZWN0KQpvciBbSlNPTiBTY2hlbWEgZGVmaW5pdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4yLm1kI3NjaGVtYS1vYmplY3QpCi0gW3hdIEJ1aWx0IHdpdGggVHlwZVNjcmlwdCwgdHlwZXMgaW5jbHVkZWQKLSBbeF0gT3B0aW1pc2VkIHJ1bnRpbWUgcm91dGluZyBhbmQgdmFsaWRhdGlvbi4gKipObyBnZW5lcmF0ZWQgY29kZSEqKgotIFt4XSBPcGVuQVBJIDMuMSBzdXBwb3J0CgojIyBEb2N1bWVudGF0aW9uCgoqKk5ldyEqKiBPcGVuQVBJIEJhY2tlbmQgZG9jdW1lbnRhdGlvbiBpcyBub3cgZm91bmQgb24gW29wZW5hcGlzdGFjay5jb10oaHR0cHM6Ly9vcGVuYXBpc3RhY2suY28pCgpodHRwczovL29wZW5hcGlzdGFjay5jby9kb2NzL29wZW5hcGktYmFja2VuZC9pbnRybwoKIyMgUXVpY2sgU3RhcnQKCkZ1bGwgW2V4YW1wbGUgcHJvamVjdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL3RyZWUvbWFpbi9leGFtcGxlcykgaW5jbHVkZWQgaW4gdGhlIHJlcG8KCmBgYApucG0gaW5zdGFsbCAtLXNhdmUgb3BlbmFwaS1iYWNrZW5kCmBgYAoKYGBgamF2YXNjcmlwdAppbXBvcnQgT3BlbkFQSUJhY2tlbmQgZnJvbSAnb3BlbmFwaS1iYWNrZW5kJzsKCi8vIGNyZWF0ZSBhcGkgd2l0aCB5b3VyIGRlZmluaXRpb24gZmlsZSBvciBvYmplY3QKY29uc3QgYXBpID0gbmV3IE9wZW5BUElCYWNrZW5kKHsgZGVmaW5pdGlvbjogJy4vcGV0c3RvcmUueW1sJyB9KTsKCi8vIHJlZ2lzdGVyIHlvdXIgZnJhbWV3b3JrIHNwZWNpZmljIHJlcXVlc3QgaGFuZGxlcnMgaGVyZQphcGkucmVnaXN0ZXIoewogIGdldFBldHM6IChjLCByZXEsIHJlcykgPT4gcmVzLnN0YXR1cygyMDApLmpzb24oeyByZXN1bHQ6ICdvaycgfSksCiAgZ2V0UGV0QnlJZDogKGMsIHJlcSwgcmVzKSA9PiByZXMuc3RhdHVzKDIwMCkuanNvbih7IHJlc3VsdDogJ29rJyB9KSwKICB2YWxpZGF0aW9uRmFpbDogKGMsIHJlcSwgcmVzKSA9PiByZXMuc3RhdHVzKDQwMCkuanNvbih7IGVycjogYy52YWxpZGF0aW9uLmVycm9ycyB9KSwKICBub3RGb3VuZDogKGMsIHJlcSwgcmVzKSA9PiByZXMuc3RhdHVzKDQwNCkuanNvbih7IGVycjogJ25vdCBmb3VuZCcgfSksCn0pOwoKLy8gaW5pdGFsaXplIHRoZSBiYWNrZW5kCmFwaS5pbml0KCk7CmBgYAoKIyMjIEV4cHJlc3MKCmBgYGphdmFzY3JpcHQKaW1wb3J0IGV4cHJlc3MgZnJvbSAnZXhwcmVzcyc7Cgpjb25zdCBhcHAgPSBleHByZXNzKCk7CmFwcC51c2UoZXhwcmVzcy5qc29uKCkpOwphcHAudXNlKChyZXEsIHJlcykgPT4gYXBpLmhhbmRsZVJlcXVlc3QocmVxLCByZXEsIHJlcykpOwphcHAubGlzdGVuKDkwMDApOwpgYGAKCltTZWUgZnVsbCBFeHByZXNzIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL3RyZWUvbWFpbi9leGFtcGxlcy9leHByZXNzKQoKW1NlZSBmdWxsIEV4cHJlc3MgVHlwZVNjcmlwdCBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXN0YWNrL29wZW5hcGktYmFja2VuZC90cmVlL21haW4vZXhhbXBsZXMvZXhwcmVzcy10eXBlc2NyaXB0KQoKIyMjIEFXUyBTZXJ2ZXJsZXNzIChMYW1iZGEpCgpgYGBqYXZhc2NyaXB0Ci8vIEFQSSBHYXRld2F5IFByb3h5IGhhbmRsZXIKbW9kdWxlLmV4cG9ydHMuaGFuZGxlciA9IChldmVudCwgY29udGV4dCkgPT4KICBhcGkuaGFuZGxlUmVxdWVzdCgKICAgIHsKICAgICAgbWV0aG9kOiBldmVudC5odHRwTWV0aG9kLAogICAgICBwYXRoOiBldmVudC5wYXRoLAogICAgICBxdWVyeTogZXZlbnQucXVlcnlTdHJpbmdQYXJhbWV0ZXJzLAogICAgICBib2R5OiBldmVudC5ib2R5LAogICAgICBoZWFkZXJzOiBldmVudC5oZWFkZXJzLAogICAgfSwKICAgIGV2ZW50LAogICAgY29udGV4dCwKICApOwpgYGAKCltTZWUgZnVsbCBBV1MgU0FNIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL3RyZWUvbWFpbi9leGFtcGxlcy9hd3Mtc2FtKQoKW1NlZSBmdWxsIEFXUyBDREsgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGlzdGFjay9vcGVuYXBpLWJhY2tlbmQvdHJlZS9tYWluL2V4YW1wbGVzL2F3cy1jZGspCgpbU2VlIGZ1bGwgU1NUIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL3RyZWUvbWFpbi9leGFtcGxlcy9hd3Mtc3N0KQoKW1NlZSBmdWxsIFNlcnZlcmxlc3MgRnJhbWV3b3JrIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL3RyZWUvbWFpbi9leGFtcGxlcy9zZXJ2ZXJsZXNzLWZyYW1ld29yaykKCiMjIyBBenVyZSBGdW5jdGlvbgoKYGBgamF2YXNjcmlwdAptb2R1bGUuZXhwb3J0cyA9IChjb250ZXh0LCByZXEpID0+CiAgYXBpLmhhbmRsZVJlcXVlc3QoCiAgICB7CiAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCwKICAgICAgcGF0aDogcmVxLnBhcmFtcy5wYXRoLAogICAgICBxdWVyeTogcmVxLnF1ZXJ5LAogICAgICBib2R5OiByZXEuYm9keSwKICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsCiAgICB9LAogICAgY29udGV4dCwKICAgIHJlcSwKICApOwpgYGAKCltTZWUgZnVsbCBBenVyZSBGdW5jdGlvbiBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXN0YWNrL29wZW5hcGktYmFja2VuZC90cmVlL21haW4vZXhhbXBsZXMvYXp1cmUtZnVuY3Rpb24pCgojIyMgRmFzdGlmeQoKYGBgdHMKaW1wb3J0IGZhc3RpZnkgZnJvbSAnZmFzdGlmeSc7CgpmYXN0aWZ5LnJvdXRlKHsKICBtZXRob2Q6IFsnR0VUJywgJ1BPU1QnLCAnUFVUJywgJ1BBVENIJywgJ0RFTEVURSddLAogIHVybDogJy8qJywKICBoYW5kbGVyOiBhc3luYyAocmVxdWVzdCwgcmVwbHkpID0+CiAgICBhcGkuaGFuZGxlUmVxdWVzdCgKICAgICAgewogICAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsCiAgICAgICAgcGF0aDogcmVxdWVzdC51cmwsCiAgICAgICAgYm9keTogcmVxdWVzdC5ib2R5LAogICAgICAgIHF1ZXJ5OiByZXF1ZXN0LnF1ZXJ5LAogICAgICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycywKICAgICAgfSwKICAgICAgcmVxdWVzdCwKICAgICAgcmVwbHksCiAgICApLAp9KTsKZmFzdGlmeS5saXN0ZW4oKTsKYGBgCgpbU2VlIGZ1bGwgRmFzdGlmeSBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXN0YWNrL29wZW5hcGktYmFja2VuZC90cmVlL21haW4vZXhhbXBsZXMvZmFzdGlmeSkKCiMjIyBIYXBpCgpgYGBqYXZhc2NyaXB0CmltcG9ydCBIYXBpIGZyb20gJ0BoYXBpL2hhcGknOwoKY29uc3Qgc2VydmVyID0gbmV3IEhhcGkuU2VydmVyKHsgaG9zdDogJzAuMC4wLjAnLCBwb3J0OiA5MDAwIH0pOwpzZXJ2ZXIucm91dGUoewogIG1ldGhvZDogWydHRVQnLCAnUE9TVCcsICdQVVQnLCAnUEFUQ0gnLCAnREVMRVRFJ10sCiAgcGF0aDogJy97cGF0aCp9JywKICBoYW5kbGVyOiAocmVxLCBoKSA9PgogICAgYXBpLmhhbmRsZVJlcXVlc3QoCiAgICAgIHsKICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsCiAgICAgICAgcGF0aDogcmVxLnBhdGgsCiAgICAgICAgYm9keTogcmVxLnBheWxvYWQsCiAgICAgICAgcXVlcnk6IHJlcS5xdWVyeSwKICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVycywKICAgICAgfSwKICAgICAgcmVxLAogICAgICBoLAogICAgKSwKfSk7CnNlcnZlci5zdGFydCgpOwpgYGAKCltTZWUgZnVsbCBIYXBpIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL3RyZWUvbWFpbi9leGFtcGxlcy9oYXBpLXR5cGVzY3JpcHQpCgoKIyMjIEtvYQoKYGBgamF2YXNjcmlwdAppbXBvcnQgS29hIGZyb20gJ2tvYSc7CmltcG9ydCBib2R5cGFyc2VyIGZyb20gJ2tvYS1ib2R5cGFyc2VyJzsKCmNvbnN0IGFwcCA9IG5ldyBLb2EoKTsKCmFwcC51c2UoYm9keXBhcnNlcigpKTsKYXBwLnVzZSgoY3R4KSA9PgogIGFwaS5oYW5kbGVSZXF1ZXN0KAogICAgY3R4LnJlcXVlc3QsCiAgICBjdHgsCiAgKSwKKTsKYXBwLmxpc3Rlbig5MDAwKTsKYGBgCgpbU2VlIGZ1bGwgS29hIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL3RyZWUvbWFpbi9leGFtcGxlcy9rb2EpCgojIyBSZWdpc3RlcmluZyBIYW5kbGVycyBmb3IgT3BlcmF0aW9ucwoKSGFuZGxlcnMgYXJlIHJlZ2lzdGVyZWQgZm9yIFtgb3BlcmF0aW9uSWRzYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMC4yLm1kI2ZpeGVkLWZpZWxkcy04KQpmb3VuZCBpbiB0aGUgT3BlbkFQSSBkZWZpbml0aW9ucy4gWW91IGNhbiByZWdpc3RlciBoYW5kbGVycyBhcyBzaG93biBhYm92ZSB3aXRoIFtgbmV3IE9wZW5BUElCYWNrZW5kKClgXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXN0YWNrL29wZW5hcGktYmFja2VuZC9ibG9iL21haW4vRE9DUy5tZCNwYXJhbWV0ZXItb3B0c2hhbmRsZXJzKQpjb25zdHJ1Y3RvciBvcHRzLCBvciB1c2luZyB0aGUgW2ByZWdpc3RlcigpYF0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGlzdGFjay9vcGVuYXBpLWJhY2tlbmQvYmxvYi9tYWluL0RPQ1MubWQjcmVnaXN0ZXJvcGVyYXRpb25pZC1oYW5kbGVyKQptZXRob2QuCgpgYGBqYXZhc2NyaXB0CmFzeW5jIGZ1bmN0aW9uIGdldFBldEJ5SWRIYW5kbGVyKGMsIHJlcSwgcmVzKSB7CiAgY29uc3QgaWQgPSBjLnJlcXVlc3QucGFyYW1zLmlkOwogIGNvbnN0IHBldCA9IGF3YWl0IHBldHMuZ2V0UGV0QnlJZChpZCk7CiAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHsgcmVzdWx0OiBwZXQgfSk7Cn0KYXBpLnJlZ2lzdGVyKCdnZXRQZXRCeUlkJywgZ2V0UGV0QnlJZEhhbmRsZXIpOwovLyBvcgphcGkucmVnaXN0ZXIoewogIGdldFBldEJ5SWQ6IGdldFBldEJ5SWRIYW5kbGVyLAp9KTsKYGBgCgpPcGVyYXRpb24gaGFuZGxlcnMgYXJlIHBhc3NlZCBhIHNwZWNpYWwgW0NvbnRleHQgb2JqZWN0XShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXN0YWNrL29wZW5hcGktYmFja2VuZC9ibG9iL21haW4vRE9DUy5tZCNjb250ZXh0LW9iamVjdCkKYXMgdGhlIGZpcnN0IGFyZ3VtZW50LCB3aGljaCBjb250YWlucyB0aGUgcGFyc2VkIHJlcXVlc3QsIHRoZQptYXRjaGVkIEFQSSBvcGVyYXRpb24gYW5kIGlucHV0IHZhbGlkYXRpb24gcmVzdWx0cy4gVGhlIG90aGVyIGFyZ3VtZW50cyBpbiB0aGUgZXhhbXBsZSBhYm92ZSBhcmUgRXhwcmVzcy1zcGVjaWZpYwpoYW5kbGVyIGFyZ3VtZW50cy4KCiMjIFJlcXVlc3QgdmFsaWRhdGlvbgoKVGhlIGVhc2llc3Qgd2F5IHRvIGVuYWJsZSByZXF1ZXN0IHZhbGlkYXRpb24gaW4geW91ciBBUEkgaXMgdG8gcmVnaXN0ZXIgYSBbYHZhbGlkYXRpb25GYWlsYF0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGlzdGFjay9vcGVuYXBpLWJhY2tlbmQvYmxvYi9tYWluL0RPQ1MubWQjdmFsaWRhdGlvbmZhaWwtaGFuZGxlcikKaGFuZGxlci4KCmBgYGphdmFzY3JpcHQKZnVuY3Rpb24gdmFsaWRhdGlvbkZhaWxIYW5kbGVyKGMsIHJlcSwgcmVzKSB7CiAgcmV0dXJuIHJlcy5zdGF0dXMoNDAwKS5qc29uKHsgc3RhdHVzOiA0MDAsIGVycjogYy52YWxpZGF0aW9uLmVycm9ycyB9KTsKfQphcGkucmVnaXN0ZXIoJ3ZhbGlkYXRpb25GYWlsJywgdmFsaWRhdGlvbkZhaWxIYW5kbGVyKTsKYGBgCgpPbmNlIHJlZ2lzdGVyZWQsIHRoaXMgaGFuZGxlciBnZXRzIGNhbGxlZCBpZiBhbnkgSlNPTiBTY2hlbWFzIGluIGVpdGhlciBvcGVyYXRpb24gcGFyYW1ldGVycyAoaW46IHBhdGgsIHF1ZXJ5LCBoZWFkZXIsCmNvb2tpZSkgb3IgcmVxdWVzdFBheWxvYWQgZG9uJ3QgbWF0Y2ggdGhlIHJlcXVlc3QuCgpUaGUgY29udGV4dCBvYmplY3QgYGNgIGdldHMgYSBgdmFsaWRhdGlvbmAgcHJvcGVydHkgd2l0aCB0aGUgW3ZhbGlkYXRpb24gcmVzdWx0XShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXN0YWNrL29wZW5hcGktYmFja2VuZC9ibG9iL21haW4vRE9DUy5tZCN2YWxpZGF0aW9ucmVzdWx0LW9iamVjdCkuCgojIyBSZXNwb25zZSB2YWxpZGF0aW9uCgpPcGVuQVBJQmFja2VuZCBkb2Vzbid0IGF1dG9tYXRpY2FsbHkgcGVyZm9ybSByZXNwb25zZSB2YWxpZGF0aW9uIGZvciB5b3VyIGhhbmRsZXJzLCBidXQgeW91IGNhbiByZWdpc3RlciBhCltgcG9zdFJlc3BvbnNlSGFuZGxlcmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL2Jsb2IvbWFpbi9ET0NTLm1kI3Bvc3RyZXNwb25zZWhhbmRsZXItaGFuZGxlcikKdG8gYWRkIGEgcmVzcG9uc2UgdmFsaWRhdGlvbiBzdGVwIHVzaW5nIFtgdmFsaWRhdGVSZXNwb25zZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL2Jsb2IvbWFpbi9ET0NTLm1kI3ZhbGlkYXRlcmVzcG9uc2VyZXMtb3BlcmF0aW9uKS4KCmBgYGphdmFzY3JpcHQKYXBpLnJlZ2lzdGVyKHsKICBnZXRQZXRzOiAoYykgPT4gewogICAgLy8gd2hlbiBhIHBvc3RSZXNwb25zZUhhbmRsZXIgaXMgcmVnaXN0ZXJlZCwgeW91ciBvcGVyYXRpb24gaGFuZGxlcnMnIHJldHVybiB2YWx1ZSBnZXRzIHBhc3NlZCB0byBjb250ZXh0LnJlc3BvbnNlCiAgICByZXR1cm4gW3sgaWQ6IDEsIG5hbWU6ICdHYXJmaWVsZCcgfV07CiAgfSwKICBwb3N0UmVzcG9uc2VIYW5kbGVyOiAoYywgcmVxLCByZXMpID0+IHsKICAgIGNvbnN0IHZhbGlkID0gYy5hcGkudmFsaWRhdGVSZXNwb25zZShjLnJlc3BvbnNlLCBjLm9wZXJhdGlvbik7CiAgICBpZiAodmFsaWQuZXJyb3JzKSB7CiAgICAgIC8vIHJlc3BvbnNlIHZhbGlkYXRpb24gZmFpbGVkCiAgICAgIHJldHVybiByZXMuc3RhdHVzKDUwMikuanNvbih7IHN0YXR1czogNTAyLCBlcnI6IHZhbGlkLmVycm9ycyB9KTsKICAgIH0KICAgIHJldHVybiByZXMuc3RhdHVzKDIwMCkuanNvbihjLnJlc3BvbnNlKTsKICB9LAp9KTsKYGBgCgpJdCdzIGFsc28gcG9zc2libGUgdG8gdmFsaWRhdGUgdGhlIHJlc3BvbnNlIGhlYWRlcnMgdXNpbmcgW2B2YWxpZGF0ZVJlc3BvbnNlSGVhZGVyc2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL2Jsb2IvbWFpbi9ET0NTLm1kI3ZhbGlkYXRlcmVzcG9uc2VoZWFkZXJzaGVhZGVycy1vcGVyYXRpb24tb3B0cykuCgpgYGBqYXZhc2NyaXB0CmFwaS5yZWdpc3Rlcih7CiAgZ2V0UGV0czogKGMpID0+IHsKICAgIC8vIHdoZW4gYSBwb3N0UmVzcG9uc2VIYW5kbGVyIGlzIHJlZ2lzdGVyZWQsIHlvdXIgb3BlcmF0aW9uIGhhbmRsZXJzJyByZXR1cm4gdmFsdWUgZ2V0cyBwYXNzZWQgdG8gY29udGV4dC5yZXNwb25zZQogICAgcmV0dXJuIFt7IGlkOiAxLCBuYW1lOiAnR2FyZmllbGQnIH1dOwogIH0sCiAgcG9zdFJlc3BvbnNlSGFuZGxlcjogKGMsIHJlcSwgcmVzKSA9PiB7CiAgICBjb25zdCB2YWxpZCA9IGMuYXBpLnZhbGlkYXRlUmVzcG9uc2VIZWFkZXJzKHJlcy5oZWFkZXJzLCBjLm9wZXJhdGlvbiwgewogICAgICBzdGF0dXNDb2RlOiByZXMuc3RhdHVzQ29kZSwKICAgICAgc2V0TWF0Y2hUeXBlOiAnZXhhY3QnLAogICAgfSk7CiAgICBpZiAodmFsaWQuZXJyb3JzKSB7CiAgICAgIC8vIHJlc3BvbnNlIHZhbGlkYXRpb24gZmFpbGVkCiAgICAgIHJldHVybiByZXMuc3RhdHVzKDUwMikuanNvbih7IHN0YXR1czogNTAyLCBlcnI6IHZhbGlkLmVycm9ycyB9KTsKICAgIH0KICAgIHJldHVybiByZXMuc3RhdHVzKDIwMCkuanNvbihjLnJlc3BvbnNlKTsKICB9LAp9KTsKYGBgCgojIyBBdXRoIC8gU2VjdXJpdHkgSGFuZGxlcnMKCklmIHlvdXIgT3BlbkFQSSBkZWZpbml0aW9uIGNvbnRhaW5zIFtTZWN1cml0eSBTY2hlbWVzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMC5tZCNzZWN1cml0eVNjaGVtZU9iamVjdCkKeW91IGNhbiByZWdpc3RlciBzZWN1cml0eSBoYW5kbGVycyB0byBoYW5kbGUgYXV0aG9yaXphdGlvbiBmb3IgeW91ciBBUEk6CgpgYGB5YW1sCmNvbXBvbmVudHM6CiAgc2VjdXJpdHlTY2hlbWVzOgogIC0gQXBpS2V5OgogICAgICB0eXBlOiBhcGlLZXkKICAgICAgaW46IGhlYWRlcgogICAgICBuYW1lOiB4LWFwaS1rZXkKc2VjdXJpdHk6CiAgLSBBcGlLZXk6IFtdCmBgYAoKYGBgamF2YXNjcmlwdAphcGkucmVnaXN0ZXJTZWN1cml0eUhhbmRsZXIoJ0FwaUtleScsIChjKSA9PiB7CiAgY29uc3QgYXV0aG9yaXplZCA9IGMucmVxdWVzdC5oZWFkZXJzWyd4LWFwaS1rZXknXSA9PT0gJ1N1cGVyU2VjcmV0UGFzc3dvcmQxMjMnOwogIC8vIHRydXRoeSByZXR1cm4gdmFsdWVzIGFyZSBpbnRlcnByZXRlZCBhcyBhdXRoIHN1Y2Nlc3MKICAvLyB5b3UgY2FuIGFsc28gYWRkIGFueSBhdXRoIGluZm9ybWF0aW9uIHRvIHRoZSByZXR1cm4gdmFsdWUKICByZXR1cm4gYXV0aG9yaXplZDsKfSk7CmBgYAoKVGhlIGF1dGhvcml6YXRpb24gc3RhdHVzIGFuZCByZXR1cm4gdmFsdWVzIG9mIGVhY2ggc2VjdXJpdHkgaGFuZGxlciBjYW4gYmUKYWNjZXNzZWQgdmlhIHRoZSBbQ29udGV4dCBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL2Jsb2IvbWFpbi9ET0NTLm1kI2NvbnRleHQtb2JqZWN0KQoKWW91IGNhbiBhbHNvIHJlZ2lzdGVyIGFuIFtgdW5hdXRob3JpemVkSGFuZGxlcmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL2Jsb2IvbWFpbi9ET0NTLm1kI3VuYXV0aG9yaXplZGhhbmRsZXItaGFuZGxlcikKdG8gaGFuZGxlIHVuYXV0aG9yaXplZCByZXF1ZXN0cy4KCmBgYGphdmFzY3JpcHQKYXBpLnJlZ2lzdGVyKCd1bmF1dGhvcml6ZWRIYW5kbGVyJywgKGMsIHJlcSwgcmVzKSA9PiB7CiAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgZXJyOiAndW5hdXRob3JpemVkJyB9KQp9KTsKYGBgCgpTZWUgZXhhbXBsZXM6Ci0gW0FQSSBLZXkgYXV0aCAoZXhwcmVzcyldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL3RyZWUvbWFpbi9leGFtcGxlcy9leHByZXNzLWFwaWtleS1hdXRoKQotIFtKV1QgYXV0aCAoZXhwcmVzcyldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL3RyZWUvbWFpbi9leGFtcGxlcy9leHByZXNzLWp3dC1hdXRoKQoKIyMgTW9ja2luZyBBUEkgcmVzcG9uc2VzCgpNb2NraW5nIEFQSXMganVzdCBnb3QgcmVhbGx5IGVhc3kgd2l0aCBPcGVuQVBJIEJhY2tlbmQhIFJlZ2lzdGVyIGEgW2Bub3RJbXBsZW1lbnRlZGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpc3RhY2svb3BlbmFwaS1iYWNrZW5kL2Jsb2IvbWFpbi9ET0NTLm1kI25vdGltcGxlbWVudGVkLWhhbmRsZXIpCmhhbmRsZXIgYW5kIHVzZSBbYG1vY2tSZXNwb25zZUZvck9wZXJhdGlvbigpYF0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGlzdGFjay9vcGVuYXBpLWJhY2tlbmQvYmxvYi9tYWluL0RPQ1MubWQjI21vY2tyZXNwb25zZWZvcm9wZXJhdGlvbm9wZXJhdGlvbmlkLW9wdHMpCnRvIGdlbmVyYXRlIG1vY2sgcmVzcG9uc2VzIGZvciBvcGVyYXRpb25zIHdpdGggbm8gY3VzdG9tIGhhbmRsZXJzIHNwZWNpZmllZCB5ZXQ6CgpgYGBqYXZhc2NyaXB0CmFwaS5yZWdpc3Rlcignbm90SW1wbGVtZW50ZWQnLCAoYywgcmVxLCByZXMpID0+IHsKICBjb25zdCB7IHN0YXR1cywgbW9jayB9ID0gYy5hcGkubW9ja1Jlc3BvbnNlRm9yT3BlcmF0aW9uKGMub3BlcmF0aW9uLm9wZXJhdGlvbklkKTsKICByZXR1cm4gcmVzLnN0YXR1cyhzdGF0dXMpLmpzb24obW9jayk7Cn0pOwpgYGAKCk9wZW5BUEkgQmFja2VuZCBzdXBwb3J0cyBtb2NraW5nIHJlc3BvbnNlcyB1c2luZyBib3RoIE9wZW5BUEkgZXhhbXBsZSBvYmplY3RzIGFuZCBKU09OIFNjaGVtYToKYGBgeWFtbApwYXRoczoKICAnL3BldHMnOgogICAgZ2V0OgogICAgICBvcGVyYXRpb25JZDogZ2V0UGV0cwogICAgICBzdW1tYXJ5OiBMaXN0IHBldHMKICAgICAgcmVzcG9uc2VzOgogICAgICAgIDIwMDoKICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvcmVzcG9uc2VzL1BldExpc3RXaXRoRXhhbXBsZScKICAnL3BldHMve2lkfSc6CiAgICBnZXQ6CiAgICAgIG9wZXJhdGlvbklkOiBnZXRQZXRCeUlkCiAgICAgIHN1bW1hcnk6IEdldCBwZXQgYnkgaXRzIGlkCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAyMDA6CiAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3Jlc3BvbnNlcy9QZXRSZXNwb25zZVdpdGhTY2hlbWEnCmNvbXBvbmVudHM6CiAgcmVzcG9uc2VzOgogICAgUGV0TGlzdFdpdGhFeGFtcGxlOgogICAgICBkZXNjcmlwdGlvbjogTGlzdCBvZiBwZXRzCiAgICAgIGNvbnRlbnQ6CiAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOgogICAgICAgICAgZXhhbXBsZToKICAgICAgICAgICAgLSBpZDogMQogICAgICAgICAgICAgIG5hbWU6IEdhcmZpZWxkCiAgICAgICAgICAgIC0gaWQ6IDIKICAgICAgICAgICAgICBuYW1lOiBPZGllCiAgICBQZXRSZXNwb25zZVdpdGhTY2hlbWE6CiAgICAgIGRlc2NyaXB0aW9uOiBBIHNpbmdsZSBwZXQKICAgICAgY29udGVudDoKICAgICAgICAnYXBwbGljYXRpb24vanNvbic6CiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgIGlkOgogICAgICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgICAgICAgbWluaW11bTogMQogICAgICAgICAgICAgIG5hbWU6CiAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgICAgIGV4YW1wbGU6IEdhcmZpZWxkCmBgYAoKVGhlIGV4YW1wbGUgYWJvdmUgd2lsbCB5aWVsZDoKYGBgamF2YXNjcmlwdAphcGkubW9ja1Jlc3BvbnNlRm9yT3BlcmF0aW9uKCdnZXRQZXRzJyk7IC8vID0+IHsgc3RhdHVzOiAyMDAsIG1vY2s6IFt7IGlkOiAxLCBuYW1lOiAnR2FyZmllbGQnIH0sIHsgaWQ6IDIsIG5hbWU6ICdPZGllJyB9XX0KYXBpLm1vY2tSZXNwb25zZUZvck9wZXJhdGlvbignZ2V0UGV0QnlJZCcpOyAvLyA9PiB7IHN0YXR1czogMjAwLCBtb2NrOiB7IGlkOiAxLCBuYW1lOiAnR2FyZmllbGQnIH19CmBgYAoKW1NlZSBmdWxsIE1vY2sgQVBJIGV4YW1wbGUgb24gRXhwcmVzc10oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGlzdGFjay9vcGVuYXBpLWJhY2tlbmQvdHJlZS9tYWluL2V4YW1wbGVzL2V4cHJlc3MtdHMtbW9jaykKCiMjIENvbW1lcmNpYWwgc3VwcG9ydAoKRm9yIGFzc2lzdGFuY2Ugd2l0aCBpbnRlZ3JhdGluZyBvcGVuYXBpLWJhY2tlbmQgaW4geW91ciBjb21wYW55LCByZWFjaCBvdXQgYXQgc3VwcG9ydEBvcGVuYXBpc3RhY2suY28uCgojIyBDb250cmlidXRpbmcKCk9wZW5BUEkgQmFja2VuZCBpcyBGcmVlIGFuZCBPcGVuIFNvdXJjZSBTb2Z0d2FyZS4gSXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzIGFyZSBtb3JlIHRoYW4gd2VsY29tZSEKCg== readmeEtag: '"df55388a5f5a2c9104f126870350480ffe5ee948"' readmeLastModified: Tue, 05 Mar 2024 06:58:46 GMT repositoryId: 154916760 description: Build, Validate, Route, Authenticate and Mock using OpenAPI created: '2018-10-27T02:31:25Z' updated: '2026-01-27T08:04:57Z' language: TypeScript archived: false stars: 675 watchers: 4 forks: 95 owner: openapistack logo: https://avatars.githubusercontent.com/u/147298423?v=4 license: MIT repoEtag: '"5e4121e8b46e19910c14400edf2bcee9fe2de6c7d7782c9db164c1bd4edd7080"' repoLastModified: Tue, 27 Jan 2026 08:04:57 GMT foundInMaster: true id: 13cdf61fc6370ba6543e5a21256c2dfb oldLocations: - https://github.com/anttiviljami/openapi-backend - source: openapi3 tags repository: https://github.com/gruppone/stalker-server v3: true repositoryMetadata: base64Readme: >- IyBTdGFsa2VyIC0gU2VydmVyCgpbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1HcnVwcE9uZV9zdGFsa2VyLXNlcnZlciZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1HcnVwcE9uZV9zdGFsa2VyLXNlcnZlcikKCjwhLS0gcGVyIGNvbnRyb2xsYXJlIGNoZSBpbCBkYiBzaWEgdXA6IGVjaG8gWCB8IHRlbG5ldCAtZSBYIGxvY2FsaG9zdCAzMzA2IC0tPgoKPCEtLSBUT0RPIHNjcml2ZXJlIHJlYWRtZSAtLT4K readmeEtag: '"848fe32bae379a3bd6854b73cf0309cf49984a34"' readmeLastModified: Wed, 17 Jun 2020 22:55:53 GMT repositoryId: 245448066 description: >- Server per il capitolato C5 - Stalker del corso di Ingegneria del Software 2019/2020 @ UniPD created: '2020-03-06T15:01:47Z' updated: '2020-06-17T22:55:58Z' language: Java archived: false stars: 0 watchers: 2 forks: 0 owner: GruppOne logo: https://avatars.githubusercontent.com/u/58079551?v=4 license: GPL-3.0 repoEtag: '"a2123ab94d46c3be62df32c8ff545cacd883248802f383fb97f2cc814d8ab0ea"' repoLastModified: Wed, 17 Jun 2020 22:55:58 GMT foundInMaster: true category: Server id: 55e2df1b151892ca13b3766635d427ec - source: openapi3 tags repository: https://github.com/anupama-sinha/family-asset-management v3: true repositoryMetadata: base64Readme: >- IyMjIEdldCBTdGFydGVkClRoaXMgaXMgYSBzaW1wbGUgU3ByaW5nIEJvb3QgcHJvamVjdCB3aGljaCBkaXNjcmVldGx5IHVzZXMgYmVsb3cgZmVhdHVyZXMuIFdpbGwga2VlcCBlbmhhbmNpbmcgdGhpcyBwcm9qZWN0IGZyb20gbGVhcm5pbmcgYW5kIHByYWN0aWNlIHBlcnNwZWN0aXZlLgoKIyMjIE9wZW5BcGkzIFN3YWdnZXIgRG9jdW1lbnRhdGlvbiAgCiogQWRkIGRlcGVuZGVuY3kgYW5kIEBPcGVuQVBJRGVmaW5pdGlvbiBpbiBtYWluIGNsYXNzLgoqIFRoZW4gaGl0IGJlbG93IFVSTCBhbmQgY29weSB0byBwcm9qZWN0IGFuZCBlZGl0IGFjY29yZGluZ2x5Lgo+IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC92My9hcGktZG9jcy55YW1sCiogVGhlbiBBY2Nlc3MgU3dhZ2dlciBVUkwgYmVsb3cuCj4gaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N3YWdnZXItdWkvaW5kZXguaHRtbD9jb25maWdVcmw9L3YzL2FwaS1kb2NzL3N3YWdnZXItY29uZmlnCgojIyMgSDIgSW4gTWVtb3J5IERhdGFiYXNlCiogSW4gbWVtb3J5IERhdGFiYXNlIGhhcyBiZWVuIHVzZWQuIEl0IGNhbiBiZSBhY2Nlc3NlZCBiZWxvdy4KPiBodHRwOi8vbG9jYWxob3N0OjgwODAvaDItY29uc29sZQoKIyMjIENhY2hpbmcKKiBTcHJpbmcncyBkZWZhdWx0IGNhY2hpbmcgaGFzIGJlZW4gdXNlZCBpbiB0aGlzIHByb2plY3QgZm9yIGZyZXF1ZW50bHkgYWNjZXNzZWQgQVBJIEVuZHBvaW50cy4KKiBPbmNlIGVtcHR5LCBEQiBub3QgY2hlY2tlZCB1bnRpbCBUVEwoVGltZSB0byBMaXZlKSwgc28gcGVyZm9ybSBEQiBjaGVjayBpZiBlbXB0eS4KKiBVc2luZyBrZXlzIGFuZCBzeW5jIGlzIHJlY29tbWVuZGVkLiBSZWZlciBmdXJ0aGVyIGRldGFpbHMgYmVsb3cKPiBodHRwczovL3d3dy5mb3JlYWNoLmJlL2Jsb2cvc3ByaW5nLWNhY2hlLWFubm90YXRpb25zLXNvbWUtdGlwcy10cmlja3MKCiMjIyBTY2hlZHVsZXJzCiogSGF2ZSBrZXB0IHNjaGVkdWxlciB0byBwZXJmb3JtIHNjaGVkdWxlZCB0YXNrcy4gQ2hhbmdlIGNyb24uZXhwcmVzc2lvbiBhcyByZXF1aXJlZC4KCiMjIyBHbG9iYWwgRXhjZXB0aW9uIEhhbmRsZXIgZm9yIENvbnRyb2xsZXJzCiogVXNlZCBAUmVzdENvbnRyb2xsZXJBZHZpY2UgdG8gaGF2ZSBjZW50cmFsaXplZCBleGNlcHRpb24gaGFuZGxpbmcgYWNyb3NzIGFsbCBDb250cm9sbGVyIGNsYXNzZXMKKiBBdm9pZGVkIHVzZSBvZiBAUmVzcG9uc2VTdGF0dXMgd2hpY2ggbWFrZXMgY29kZSB0aWdodGx5IGNvdXBsZWQKKiBUb21jYXQgU2VydmxldCBDb250YWluZXIgcmVkaXJlY3RzIHRvIFxlcnJvciBieSBkZWZhdWx0CiogQWx3YXlzIGhhdmUgTm9IYW5kbGVyRm91bmRFeGNlcHRpb24gZm9yIEFQSSBFbmRwb2ludHMgbm90IGNyZWF0ZWQgc28gYXMgdG8gc2VncmVnYXRlIGl0IGZyb20gb3RoZXIgaXNzdWVzIG9mIExlZ2FjeSBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3JzCiogTWV0aG9kQXJndW1lbnROb3RWYWxpZEV4Y2VwdGlvbiBmb3IgYXJndW1lbnRzIHdoZW4gZW1wdHksIG51bGwgb3Igbm90IGdpdmVuLiBQT0pPIG11c3QgaGF2ZSBAVmFsaWQgY2hlY2suIFJlZmVyIHRoaXMgW2xpbmtdKGh0dHBzOi8vZG9jcy5zcHJpbmcuaW8vc3ByaW5nL2RvY3MvY3VycmVudC9qYXZhZG9jLWFwaS9vcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9iaW5kL01ldGhvZEFyZ3VtZW50Tm90VmFsaWRFeGNlcHRpb24uaHRtbCkKKiBDb21tb24gZXhjZXB0aW9ucyBjYW4gYmUgY2x1YmJlZCBhcyBFeGNlcHRpb24gQXJyYXlzIGFzIHVzZWQgaW4gdGhpcyBwcm9qZWN0CgojIyMgU2VxdWVuY2UgR2VuZXJhdG9yCiogVXNlZCBJZGVudGl0eSBTdHJhdGVneSBoZXJlIHdpdGggYWxsb2NhdGlvbiBzaXplIDI1Cj4gaHR0cHM6Ly93d3cub2JqZWN0ZGIuY29tL2phdmEvanBhL2VudGl0eS9nZW5lcmF0ZWQKCiMjIyBUb3AgTGV2ZWwgSlNPTiBBcnJheXMKKiBIYXZlIGF2b2lkZWQgdXNpbmcgZGlyZWN0IEpTT04gQXJyYXlzIGluIEFQSSByZXNwb25zZS4gUGxlYXNlIGZpbmQgcmVhc29uIGJlbG93IGluIGxpbmsuCj4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzUwMzEwMi93aGF0LWFyZS10b3AtbGV2ZWwtanNvbi1hcnJheXMtYW5kLXdoeS1hcmUtdGhleS1hLXNlY3VyaXR5LXJpc2sKCiMjIyBKUEEgJiBIaWJlcm5hdGUgUmVsYXRpb25zaGlwIE1hcHBpbmcKKiBPbmUgUHJvZHVjdCBpcyBvd25lZCBieSBvbmUgbWVtYmVyIC0gQE9uZVRvT25lCiogT25lIE1lbWJlciBjYW4gb3duIG11bHRpcGxlIFByb2R1Y3RzIC0gQE9uZVRvTWFueQoqIFJlZmVyIFtOb3Rlc10oaHR0cHM6Ly9naXRodWIuY29tL2FudXBhbWEtc2luaGEvYW51cGFtYS1ub3Rlcy9ibG9iL21hc3Rlci9oaWJlcm5hdGUtbWFwcGluZy5tZCkKCiMjIyBFbWFpbC9TTVMgSW50ZWdyYXRpb24KKiBJbiBQcm9ncmVzcwoqIFtUd2lsaW8gU01TIE5vdGlmaWNhdGlvbl0oaHR0cHM6Ly93d3cudHdpbGlvLmNvbS9kb2NzL3Ntcy9xdWlja3N0YXJ0L2phdmEpCiogW0VtYWlsIEludGVncmF0aW9uXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vc3ByaW5nLWVtYWlsKQoKIyMjIEhhdGVPQVMoSHlwZXJtZWRpYSBBcyBUaGUgRW5naW5lIG9mIEFwcGxpY2F0aW9uIFN0YXRlKQoqIEluIFByb2dyZXNzCgojIyMgT3BlbkFQSSBTd2FnZ2VyIFZhbGlkYXRpb24KKiBJbiBQcm9ncmVzcwoKIyMjIFJlZmVyZW5jZSBEb2N1bWVudGF0aW9uCkZvciBmdXJ0aGVyIHJlZmVyZW5jZSwgcGxlYXNlIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6CgoqIFtPZmZpY2lhbCBBcGFjaGUgTWF2ZW4gZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnL2d1aWRlcy9pbmRleC5odG1sKQoqIFtTcHJpbmcgQm9vdCBNYXZlbiBQbHVnaW4gUmVmZXJlbmNlIEd1aWRlXShodHRwczovL2RvY3Muc3ByaW5nLmlvL3NwcmluZy1ib290L2RvY3MvMi4zLjQuUkVMRUFTRS9tYXZlbi1wbHVnaW4vcmVmZXJlbmNlL2h0bWwvKQoqIFtDcmVhdGUgYW4gT0NJIGltYWdlXShodHRwczovL2RvY3Muc3ByaW5nLmlvL3NwcmluZy1ib290L2RvY3MvMi4zLjQuUkVMRUFTRS9tYXZlbi1wbHVnaW4vcmVmZXJlbmNlL2h0bWwvI2J1aWxkLWltYWdlKQoqIFtTcHJpbmcgV2ViXShodHRwczovL2RvY3Muc3ByaW5nLmlvL3NwcmluZy1ib290L2RvY3MvMi4zLjQuUkVMRUFTRS9yZWZlcmVuY2UvaHRtbHNpbmdsZS8jYm9vdC1mZWF0dXJlcy1kZXZlbG9waW5nLXdlYi1hcHBsaWNhdGlvbnMpCiogW1NwcmluZyBCb290IERldlRvb2xzXShodHRwczovL2RvY3Muc3ByaW5nLmlvL3NwcmluZy1ib290L2RvY3MvMi4zLjQuUkVMRUFTRS9yZWZlcmVuY2UvaHRtbHNpbmdsZS8jdXNpbmctYm9vdC1kZXZ0b29scykKCiMjIyBHdWlkZXMKVGhlIGZvbGxvd2luZyBndWlkZXMgaWxsdXN0cmF0ZSBob3cgdG8gdXNlIHNvbWUgZmVhdHVyZXMgY29uY3JldGVseToKCiogW0J1aWxkaW5nIGEgUkVTVGZ1bCBXZWIgU2VydmljZV0oaHR0cHM6Ly9zcHJpbmcuaW8vZ3VpZGVzL2dzL3Jlc3Qtc2VydmljZS8pCiogW1NlcnZpbmcgV2ViIENvbnRlbnQgd2l0aCBTcHJpbmcgTVZDXShodHRwczovL3NwcmluZy5pby9ndWlkZXMvZ3Mvc2VydmluZy13ZWItY29udGVudC8pCiogW0J1aWxkaW5nIFJFU1Qgc2VydmljZXMgd2l0aCBTcHJpbmddKGh0dHBzOi8vc3ByaW5nLmlvL2d1aWRlcy90dXRvcmlhbHMvYm9va21hcmtzLykKKiBbSGliZXJuYXRlIE1hcHBpbmddKGh0dHBzOi8vc3RhY2thYnVzZS5jb20vYS1ndWlkZS10by1qcGEtd2l0aC1oaWJlcm5hdGUtcmVsYXRpb25zaGlwLW1hcHBpbmcvKQoqIFtKUEFdKGh0dHBzOi8vd3d3Lm9iamVjdGRiLmNvbS9qYXZhL2pwYSk= readmeEtag: '"1d8e34fd722e513a7f16c82c50bdf5f4c4db1b3c"' readmeLastModified: Thu, 07 Dec 2023 12:33:35 GMT repositoryId: 298004156 description: >- A simple standalone RESTful web service application done in Spring Boot framework created: '2020-09-23T14:54:07Z' updated: '2023-12-07T12:33:05Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: anupama-sinha logo: https://avatars.githubusercontent.com/u/68496768?v=4 repoEtag: '"c9b5896987c6a3379e2e7f0c1bb5f20c4b7bb0dc824da0ec453308df02e7c541"' repoLastModified: Thu, 07 Dec 2023 12:33:05 GMT foundInMaster: true category: - Low-level Tooling - Server Implementations id: dda339640f86bc8fa2eee7992d0ae5c2 - source: openapi3 tags repository: https://github.com/rettvis/geo-spain v3: true repositoryMetadata: base64Readme: >- IyBHRU8tU3BhaW4gQVBJCgpHRU8tU3BhaW4gQVBJIGlzIGEgc2VydmljZSBhaW1lZCBhdCBwcm9ncmFtbWVycywgdG8gc2ltcGxpZnkgdGhlIHByb2Nlc3Npbmcgb2YgcG9zdGFsIGRhdGEgd2l0aGluIHRoZSBTcGFuaXNoIHRlcnJpdG9yeS4= readmeEtag: '"afe5d2dcc289e077343a8caad3c9d2e90582714c"' readmeLastModified: Thu, 15 Apr 2021 22:11:13 GMT repositoryId: 357949475 description: >- GEO-Spain API is a project that aims to facilitate the work of programmers when creating different components that require data related to the geography of Spain, such as street names, postal codes, towns, and a long etcetera. created: '2021-04-14T15:14:57Z' updated: '2021-04-16T06:37:50Z' language: Java archived: false stars: 0 watchers: 0 forks: 0 owner: rettvis logo: https://avatars.githubusercontent.com/u/65330314?v=4 repoEtag: '"3d2f8c4acfc875ba7fb6d86eb08b4e4738865456f8de481a25f3a51cb38bfb57"' repoLastModified: Fri, 16 Apr 2021 06:37:50 GMT foundInMaster: true category: - Testing - Server Implementations id: 47286ac434b8a7bcdfb0add17c319fc7 - source: openapi3 tags repository: https://github.com/pilotak/openapi-typescript-jwt v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIDMgVHlwZVNjcmlwdCBKV1QgdGVtcGxhdGUKQW4gZXhhbXBsZSBBUEkgd2l0aCBUeXBlU2NyaXB0IHN1cHBvcnQgYW5kIGJhc2ljIGxvZ2luIG1lY2hhbmlzbSBiYXNlZCBvbiBKV1QKCiMjIEluc3RhbGwKYGBgc2gKbnBtIGluc3RhbGwgJiYgbnBtIHJ1biBkZXYKYGBgCgojIyBSdW4KRmlyc3QgbG9naW4gYW5kIGNvcHkgZ2VuZXJhdGVkIHRva2VuLgoKYGBgc2gKY3VybCAtSCAnQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uJyAtWCBQT1NUIC1kICd1c2VybmFtZT10ZXN0JyBodHRwOi8vbG9jYWxob3N0OjMwMDAvdjEvbG9naW4KYGBgCgpOb3cgeW91IGNhbiBzZWUgb3BlbmFwaS5qc29uCmBgYHNoCmN1cmwgLUggJ0FjY2VwdDogYXBwbGljYXRpb24vanNvbicgLVggR0VUIC1IICdBdXRob3JpemF0aW9uOiBCZWFyZXIgZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5Li4uJyBodHRwOi8vbG9jYWxob3N0OjMwMDAvdjEvZG9jcwpgYGAKCk9yIHlvdSBjYW4gbGlzdCB1c2VycwpgYGBzaApjdXJsIC1IICdBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24nIC1YIEdFVCAtSCAnQXV0aG9yaXphdGlvbjogQmVhcmVyIGV5SmhiR2NpT2lKSVV6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS4uLicgaHR0cDovL2xvY2FsaG9zdDozMDAwL3YxL3VzZXJzCmBgYAoKIyMgR1VJCkp1c3QgdmlzaXQgYHJlZG9jLmh0bWxgIHZpYSB5b3VyIGJyb3dzZXIK readmeEtag: '"64459c5e485f2321503f2801a5170cf89d5f842e"' readmeLastModified: Mon, 21 Jun 2021 09:08:43 GMT repositoryId: 364698867 description: Express.js OpenAPI 3 typescript JWT boilerplate created: '2021-05-05T20:32:46Z' updated: '2021-06-21T09:08:50Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: pilotak logo: https://avatars.githubusercontent.com/u/8101753?v=4 license: MIT repoEtag: '"66de42312b6f2311c9a7767e4b116a760169ec73d32f5c3279cdc3c6138e142d"' repoLastModified: Mon, 21 Jun 2021 09:08:50 GMT foundInMaster: true category: - Data Validators - Server Implementations id: 73c449d2f080f914c6266a97a3693fbd - source: openapi3 tags repository: https://github.com/glongrais/openapi_photo_management v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJX1Bob3RvX01hbmFnZW1lbnQKCiMjIFByaW5jaXBsZQoKQmFzaWMgcGhvdG8gbWFuYWdlbWVudCBBUEkgY3JlYXRlZCB3aXRoIE9wZW5BUEkgMyB0aGF0IHNlcnZlIGJhc2ljIENSVUQgdmlhIEhUVFAKCiMjIyBUYWJsZSBvZiBDb250ZW50cyAgCltSZXNzb3VyY2VzXSgjUmVzc291Y2VzKSAgCltSZXF1ZXN0c10oI1JlcXVlc3RzKSAgCltTY2hlbWFzXSgjU2NoZW1hcykgICAKW0V4YW1wbGVdKCNFeGFtcGxlKSAgIAoKCiMjIFJlc3NvdXJjZXMKCiogT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGNhbiBiZSBmb3VuZCBbaGVyZV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vKS4KKiBCYXNpY3MgYWJvdXQgSFRUUCByZXF1ZXN0cyBhbmQgcmVzcG9uc2UgY29kZXMgY2FuIGJlIGZvdW5kIFtoZXJlXShodHRwczovL3d3dy5yZXN0YXBpdHV0b3JpYWwuY29tL2xlc3NvbnMvaHR0cG1ldGhvZHMuaHRtbCkuCgoKIyMgUmVxdWVzdHMKCnwgVHlwZSB8IFJvdXRlIHwgUmVxdWVzdCBCb2R5IHwgUmVzcG9uc2UgQm9keSB8CnwgLS0tIHwgLS0tIHwgLS0tfCAtLS0gfAp8IFBPU1QgfCBgL3Bob3RvYHxQaG90b3w8dWw+PGxpPiAqKlN0YXR1cyBDb2RlKio6IDIwMSAtIGBTdWNjZXNzOiB7bWVzc2FnZTog4oCYUGhvdG8gc3VjY2Vzc2Z1bGx5IGNyZWF0ZWTigJksIGlkOiBwaG90b19pZH1gPC9saT48bGk+KipTdGF0dXMgQ29kZSoqOiA0MjIgLSBgRXJyb3I6IHttZXNzYWdlOiBlcnJ9YDwvbGk+PC91bD58CnwgR0VUIHxgL3Bob3Rvc2B8YWNjZXNzfDx1bD48bGk+KipTdGF0dXMgQ29kZSoqOiAyMDAgLSBgUGhvdG9zOiBbe1Bob3RvfSwgLi5dYCAgPC9saT48bGk+KipTdGF0dXMgQ29kZSoqOiA0MDQgLSAgYEVycm9yOiB7bWVzc2FnZTogZXJyfWAgIDwvbGk+PC91bD58CnwgR0VUIHxgL3Bob3RvL3twaG90b19pZH1gfC18PHVsPjxsaT4qKlN0YXR1cyBDb2RlKio6IDIwMCAtIGBQaG90bzoge2lkOiBpZCwgbmFtZTogbmFtZSwgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLCBhY2Nlc3M6IGFjY2VzcywgbG9jYXRpb246IGxvY2F0aW9uLCBjcmVhdGVkX2RhdGU6IGNyZWF0ZWRfZGF0ZSwgbW9kaWZpZWRfZGF0ZTogbW9kaWZpZWRfZGF0ZX1gICA8L2xpPjxsaT4qKlN0YXR1cyBDb2RlKio6IDQwNCAtICBgRXJyb3I6IHttZXNzYWdlOiBlcnJ9YCAgPC9saT48L3VsPnwKfCBQVVQgfGAvcGhvdG8ve3Bob3RvX2lkfWB8UGhvdG98PHVsPjxsaT4qKlN0YXR1cyBDb2RlKio6IDIwMCAtIGBTdWNjZXNzOiB7bWVzc2FnZTog4oCYUGhvdG8gc3VjY2Vzc2Z1bGx5IHVwZGF0ZWTigJksIGlkOiBwaG90b19pZH1gICA8L2xpPjxsaT4qKlN0YXR1cyBDb2RlKio6IDQwNCAtICBgRXJyb3I6IHttZXNzYWdlOiBlcnJ9YDwvbGk+PGxpPioqU3RhdHVzIENvZGUqKjogNDIyIC0gIGBFcnJvcjoge21lc3NhZ2U6IGVycn1gICA8L2xpPjwvdWw+fAp8IERFTEVURSB8YC9waG90by97cGhvdG9faWR9YHwtfDx1bD48bGk+KipTdGF0dXMgQ29kZSoqOiAyMDQgIDwvbGk+PGxpPioqU3RhdHVzIENvZGUqKjogNDA0IC0gIGBFcnJvcjoge21lc3NhZ2U6IGVycn1gICA8L2xpPjwvdWw+fAoKIyMgU2NoZW1hcwoKKiBgUGhvdG9gCgogICAgfCBBdHRyaWJ1dGUgfCBUeXBlIHwgQ29uZGl0aW9ucyB8CiAgICB8IC0tLSB8IC0tLSB8IC0tLSB8CiAgICB8IGlkIHwgc3RyaW5nIHwgYHJlYWRPbmx5OiB0cnVlYCB8CiAgICB8IG5hbWUgfCBzdHJpbmcgfCBgcmVxdWlyZWQ6dHJ1ZWA8L2JyPmBtYXhsZW5naHQ6IDIwYCB8CiAgICB8IGRlc2NyaXB0aW9uIHwgc3RyaW5nIHwgYG1heGxlbmdodDogMTAwYCB8CiAgICB8IGFjY2VzcyB8IHN0cmluZyB8IGByZXF1aXJlZDp0cnVlYDwvYnI+YGVudW06IFtwdWJsaWMsIHByaXZhdGVdYCB8CiAgICB8IGxvY2F0aW9uIHwgc3RyaW5nIHwgYHJlcXVpcmVkOnRydWVgIHwKICAgIHwgZmlsZSB8IHN0cmluZyB8IGByZXF1aXJlZDp0cnVlYCB8CiAgICB8IGNyZWF0ZWRfZGF0ZSB8IHN0cmluZyB8IGByZXF1aXJlZDp0cnVlYDwvYnI+YGZvcm1hdDogZGF0ZS10aW1lYCB8CiAgICB8IHVwZGF0ZWRfZGF0ZSB8IHN0cmluZyB8IGByZXF1aXJlZDp0cnVlYDwvYnI+YGZvcm1hdDogZGF0ZS10aW1lYCB8CgoqIGBQaG90b3NgCgogICAgfCBBdHRyaWJ1dGUgfCBUeXBlIHwgRGVzY3JpcHRpb24gfAogICAgfCAtLS0gfCAtLS0gfCAtLS0gfAogICAgfCBbUGhvdG9dIHwgYXJyYXkgfCBBbiBhcnJheSBvZiBwaG90b3MgfAoKKiBgU3VjY2Vzc2AKCiAgICB8IEF0dHJpYnV0ZSB8IFR5cGUgfCBDb25kaXRpb25zIHwKICAgIHwgLS0tIHwgLS0tIHwgLS0tIHwKICAgIHwgbWVzc2FnZSB8IHN0cmluZyB8IC0gfAogICAgfCBpZCB8IHN0cmluZyB8IC0gfAoKKiBgRXJyb3JgCgogICAgfCBBdHRyaWJ1dGUgfCBUeXBlIHwgQ29uZGl0aW9ucyB8CiAgICB8IC0tLSB8IC0tLSB8IC0tLSB8CiAgICB8IG1lc3NhZ2UgfCBzdHJpbmcgfCAtIHwKCgojIyBFeGFtcGxlCgpgUGhvdG9gIHNjaGVtYToKCmBgYGpzb24KewogICJuYW1lIjogIlBob3RvXzMiLAogICJkZXNjcmlwdGlvbiI6ICJNeSBkb2cgc2VsZmllIiwKICAiYWNjZXNzIjogInB1YmxpYyIsCiAgImxvY2F0aW9uIjogIlNrb3BqZSIsCiAgImZpbGUiOiAidGVkZHlfc2VsZmllLmpwZyIsCiAgImNyZWF0ZWRfZGF0ZSI6ICIxOTk2LTA4LTIzVDE3OjMyOjI4WiIsCiAgIm1vZGlmaWVkX2RhdGUiOiAiMjAyMC0xMi0yN1QyMzo0NToyOFoiCn0KYGBgCgoK readmeEtag: '"b18af50cf255678d9a5544f5e644f6a11d4bbe4e"' readmeLastModified: Thu, 11 Nov 2021 10:08:24 GMT repositoryId: 426552432 description: >- Basic photo management API with OpenAPI 3 to serve basic CRUD via HTTP requests created: '2021-11-10T09:02:16Z' updated: '2021-11-17T16:23:05Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: glongrais logo: https://avatars.githubusercontent.com/u/34845137?v=4 repoEtag: '"47ddfe33991b55a7090adc756ca7f488f5bd41d0a9d86e3be9ad7af0dafbd284"' repoLastModified: Wed, 17 Nov 2021 16:23:05 GMT foundInMaster: true category: Description Validators id: 58070799bfdcbcf0b732a5a146acbab6 - source: - https://openapi.tools/ - openapi3 tags repository: https://github.com/funbox/fitting v3: true repositoryMetadata: base64Readme: >- IyBGaXR0aW5nCgo8aW1nIGFsaWduPSJyaWdodCIgd2lkdGg9IjE5MiIgaGVpZ2h0PSIxOTIiCmFsdD0iRml0dGluZyBhdmF0YXI6IERvY3VtZW50cyB3aXRoIGhhbmdlcnMiCnNyYz0iLi9pbWFnZXMvbG9nby5wbmciPgoKTGlicmFyeSBhZGQgaW1wcm92ZSB0ZXN0IGxvZywgdmFsaWRhdGUgaXRzIGFjY29yZGluZyB0byB5b3VyIEFQSSBkb2N1bWVudGF0aW9uLCBzaG93IHRoZSBkb2N1bWVudGF0aW9uIGNvdmVyYWdlIHdpdGggbG9nLgoKVGVzdCBsb2cgc2V0dGluZyBzdXBwb3J0cyBSU3BlYyB0ZXN0IGFuZCBXZWJNb2NrIHN0dWJiaW5nIGZvciBSdWJ5IE9uIFJhaWxzIGFwcGxpY2F0aW9uLCBBUEkgZG9jdW1lbnRhdGlvbiBzdXBwb3J0cyBBUEkgQmx1ZXByaW50IGFuZCBPcGVuQVBJLgoKVGhpcyByZWR1Y2VzIHRoZSBjb3N0cyBvZiBzdXBwb3J0LCB0ZXN0ZXJzIGFuZCBhbmFseXN0cy4KCkxvZwpgYGB0ZXh0CkZJVFRJTkcgaW5jb21pbmcgcmVxdWVzdCB7Im1ldGhvZCI6IlBPU1QiLCJwYXRoIjoiL3B1YmxpYy9hcGkvdjEvaW5ib3hlcy90RVg1SmlaeWNlaXd1S01pMW9OOVNmOFMvY29udGFjdHMiLCJib2R5Ijp7fSwicmVzcG9uc2UiOnsic3RhdHVzIjoyMDAsImNvbnRlbnRfdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLCJib2R5Ijp7InNvdXJjZV9pZCI6IjAwZGJmMThkLTg3OWUtNDdjYi1hYzQ1LWU5YWVjZTI2NmViMSIsInB1YnN1Yl90b2tlbiI6Imt0bjZZd1B1czU3SkRmNGU1OWVGUG9tNSIsImlkIjozMjkxLCJuYW1lIjoic2h5LXN1cmYtNDAxIiwiZW1haWwiOm51bGwsInBob25lX251bWJlciI6bnVsbH19LCJ0aXRsZSI6Ii4vc3BlYy9jb250cm9sbGVycy9wdWJsaWMvYXBpL3YxL2luYm94L2NvbnRhY3RzX2NvbnRyb2xsZXJfc3BlYy5yYjo5IiwiZ3JvdXAiOiIuL3NwZWMvY29udHJvbGxlcnMvcHVibGljL2FwaS92MS9pbmJveC9jb250YWN0c19jb250cm9sbGVyX3NwZWMucmIiLCJob3N0Ijoid3d3LmV4YW1wbGUuY29tIn0KRklUVElORyBvdXRnb2luZyByZXF1ZXN0IHsibWV0aG9kIjoiUE9TVCIsInBhdGgiOiIvdjEvb3JnYW5pemF0aW9ucy9vcmdfaWQvbWVldGluZyIsImJvZHkiOnt9LCJyZXNwb25zZSI6eyJzdGF0dXMiOjIwMCwiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24vanNvbiIsImJvZHkiOnsic3VjY2VzcyI6dHJ1ZSwiZGF0YSI6eyJtZWV0aW5nIjp7ImlkIjoibWVldGluZ19pZCIsInJvb21OYW1lIjoicm9vbV9uYW1lIn19fX0sInRpdGxlIjoiLi9zcGVjL2NvbnRyb2xsZXJzL2FwaS92MS9hY2NvdW50cy9pbnRlZ3JhdGlvbnMvZHl0ZV9jb250cm9sbGVyX3NwZWMucmI6NTAiLCJncm91cCI6Ii4vc3BlYy9jb250cm9sbGVycy9hcGkvdjEvYWNjb3VudHMvaW50ZWdyYXRpb25zL2R5dGVfY29udHJvbGxlcl9zcGVjLnJiIiwiaG9zdCI6ImFwaS5jbHVzdGVyLmR5dGUuaW4ifQpgYGAKCnZhbGlkYXRpb24KYGBgY29uc29sZQpGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYuRkZGLi5GRkZGRkZGRkZGLi4uLkYuLi4uLi4uRi4uLkZGLi4uLi5GLi4uRi4uLi5GLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYuLkZGLkYuLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uRkYuLi4uLi4uLkZGRi4uLkZGRkYuLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uLi4uLi4uRkZGRkZGRkZGRkYuLkZGRkZGRi4uRkZGRkZGRkZGRkZGRkZGRkYuLi4uLi4uRkZGRkZGLi4uLi4uLi4uLi4uLkZGRkZGRkZGRkZGRi4uLi5GLi4uLi4uLi5GRkYuRi4uLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uLi4uLi4uLi4uLkZGLi4uLi4uLi5GRkYuLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi4uLkZGRkZGRi4uLi4uLkYuLi4uLi4uLi4uLi5GRkZGLi4uLi4uLi5GRkZGRkZGRkZGRkZGRi4uLi4uRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYuLkZGLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uLi4uRkYuLi4uLi4uLi4uRkZGRkZGRkZGRkZGRkZGRkZGLi4uRkZGRi4uLi4uLi4uLi4uLi4uLkYuRi4uLi5GRi4uRkZGRkZGRkYKCiAgMSkgRml0dGluZzo6RG9jOjpOb3RGb3VuZCBsb2cgZXJyb3I6Cgpob3N0OiB3d3cuZXhhbXBsZS5jb20KbWV0aG9kOiBQT1NUCnBhdGg6IC9wdWJsaWMvYXBpL3YxL2luYm94ZXMve2luYm94X2lkZW50aWZpZXJ9L2NvbnRhY3RzCmNvZGU6IDIwMAoKY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uCgpqc29uLXNjaGVtYTogewogICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyIsCiAgInR5cGUiOiAib2JqZWN0IiwKICAicHJvcGVydGllcyI6IHsKICAgICJpZCI6IHsKICAgICAgInR5cGUiOiAiaW50ZWdlciIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgY29udGFjdCIKICAgIH0sCiAgICAic291cmNlX2lkIjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHNlc3Npb24gaWRlbnRpZmllciBvZiB0aGUgY29udGFjdCIKICAgIH0sCiAgICAibmFtZSI6IHsKICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgImRlc2NyaXB0aW9uIjogIk5hbWUgb2YgdGhlIGNvbnRhY3QiCiAgICB9LAogICAgImVtYWlsIjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiRW1haWwgb2YgdGhlIGNvbnRhY3QiCiAgICB9LAogICAgInB1YnN1Yl90b2tlbiI6IHsKICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSB0b2tlbiB0byBiZSB1c2VkIHRvIGNvbm5lY3QgdG8gY2hhdHdvb3Qgd2Vic29ja2V0IgogICAgfQogIH0KfQoKYm9keTogewogICJzb3VyY2VfaWQiOiAiYzllOGMzMWYtMDZkZi00OWI0LThmYjktNDQ2NjQ1N2FlNjViIiwKICAicHVic3ViX3Rva2VuIjogIlpnYzdERXZhajVUa2daMWE0QzdBdkpYbyIsCiAgImlkIjogMzI5MywKICAibmFtZSI6ICJyZXN0bGVzcy1zbm93Zmxha2UtNjcwIiwKICAiZW1haWwiOiBudWxsLAogICJwaG9uZV9udW1iZXIiOiBudWxsCn0KCmVycm9yIFsKICAiVGhlIHByb3BlcnR5ICcjL2VtYWlsJyBvZiB0eXBlIG51bGwgZGlkIG5vdCBtYXRjaCB0aGUgZm9sbG93aW5nIHR5cGU6IHN0cmluZyBpbiBzY2hlbWEgZTU2YjdlNjUtZDcwYy01ZjdhLWE5NmMtOTgyZGY1ZjhmMmY3IgpdCgouLi4KCjgwNCBleGFtcGxlcywgNTY1IGZhaWx1cmUsIDAgcGVuZGluZwoKQ292ZXJhZ2U6IDY1LjUxJQpgYGAKCmFuZCBjb3ZlcgohW2V4bWFwbGVdKGltYWdlcy9iMS5wbmcpCgohW2V4bWFwbGVdKGltYWdlcy9iMi5wbmcpCgohW2V4bWFwbGVdKGltYWdlcy93MS5wbmcpCgohW2V4bWFwbGVdKGltYWdlcy93Mi5wbmcpCgojIyBJbnN0YWxsYXRpb24KQWRkIHRoaXMgbGluZSB0byB5b3VyIGFwcGxpY2F0aW9uJ3MgR2VtZmlsZToKYGBgcnVieQpnZW0gJ2ZpdHRpbmcnCmBgYAoKQWZ0ZXIgdGhhdCBleGVjdXRlOgpgYGBiYXNoCiQgYnVuZGxlCmBgYAoKT3IgaW5zdGFsbCB0aGUgZ2VtIGJ5IHlvdXJzZWxmOgpgYGBiYXNoCiQgZ2VtIGluc3RhbGwgZml0dGluZwpgYGAKCiMjIFVzYWdlCiMjIyBMb2cKRmlyc3RseSwgaW1wcm92ZSBgdGVzdC5sb2dgLgoKVG8geW91ciBgc3BlY19oZWxwZXIucmJgOgoKYGBgcnVieQpyZXF1aXJlICdmaXR0aW5nJwoKRml0dGluZy5sb2dnZXIKYGBgCgpEZWxldGUgYWxsIGZpbGVzIGBsb2cvKi5sb2dgIGFuZCBydW4gcnNwZWMKCllvdSBnZXQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBpbmNvbWluZyBhbmQgb3V0Z29pbmcgcmVxdWVzdCBpbiBgbG9nL2ZpdHRpbmcqLmxvZ2AuCgpgYGB0ZXh0CkZJVFRJTkcgaW5jb21pbmcgcmVxdWVzdCB7Im1ldGhvZCI6IlBPU1QiLCJwYXRoIjoiL3B1YmxpYy9hcGkvdjEvaW5ib3hlcy90RVg1SmlaeWNlaXd1S01pMW9OOVNmOFMvY29udGFjdHMiLCJib2R5Ijp7fSwicmVzcG9uc2UiOnsic3RhdHVzIjoyMDAsImNvbnRlbnRfdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLCJib2R5Ijp7InNvdXJjZV9pZCI6IjAwZGJmMThkLTg3OWUtNDdjYi1hYzQ1LWU5YWVjZTI2NmViMSIsInB1YnN1Yl90b2tlbiI6Imt0bjZZd1B1czU3SkRmNGU1OWVGUG9tNSIsImlkIjozMjkxLCJuYW1lIjoic2h5LXN1cmYtNDAxIiwiZW1haWwiOm51bGwsInBob25lX251bWJlciI6bnVsbH19LCJ0aXRsZSI6Ii4vc3BlYy9jb250cm9sbGVycy9wdWJsaWMvYXBpL3YxL2luYm94L2NvbnRhY3RzX2NvbnRyb2xsZXJfc3BlYy5yYjo5IiwiZ3JvdXAiOiIuL3NwZWMvY29udHJvbGxlcnMvcHVibGljL2FwaS92MS9pbmJveC9jb250YWN0c19jb250cm9sbGVyX3NwZWMucmIiLCJob3N0Ijoid3d3LmV4YW1wbGUuY29tIn0KRklUVElORyBvdXRnb2luZyByZXF1ZXN0IHsibWV0aG9kIjoiUE9TVCIsInBhdGgiOiIvdjEvb3JnYW5pemF0aW9ucy9vcmdfaWQvbWVldGluZyIsImJvZHkiOnt9LCJyZXNwb25zZSI6eyJzdGF0dXMiOjIwMCwiY29udGVudF90eXBlIjoiYXBwbGljYXRpb24vanNvbiIsImJvZHkiOnsic3VjY2VzcyI6dHJ1ZSwiZGF0YSI6eyJtZWV0aW5nIjp7ImlkIjoibWVldGluZ19pZCIsInJvb21OYW1lIjoicm9vbV9uYW1lIn19fX0sInRpdGxlIjoiLi9zcGVjL2NvbnRyb2xsZXJzL2FwaS92MS9hY2NvdW50cy9pbnRlZ3JhdGlvbnMvZHl0ZV9jb250cm9sbGVyX3NwZWMucmI6NTAiLCJncm91cCI6Ii4vc3BlYy9jb250cm9sbGVycy9hcGkvdjEvYWNjb3VudHMvaW50ZWdyYXRpb25zL2R5dGVfY29udHJvbGxlcl9zcGVjLnJiIiwiaG9zdCI6ImFwaS5jbHVzdGVyLmR5dGUuaW4ifQpgYGAKCiMjIyBWYWxpZGF0aW9uClNlY29uZGx5LCB2YWxpZGF0ZSB0aGUgbG9nIHRvIHRoZSBkb2N1bWVudGF0aW9uLgoKQWRkIHRoaXMgdG8geW91ciBgLmZpdHRpbmcueW1sYDoKCmBgYHlhbWwKQVBJczoKICAtIGhvc3Q6IHd3dy5leGFtcGxlLmNvbQogICAgdHlwZTogb3BlbmFwaTIKICAgIHBhdGg6IHN3YWdnZXIvc3dhZ2dlci5qc29uCmBgYAoKUnVuIApgYGBiYXNoCmJ1bmRsZSBlIHJha2UgZml0dGluZzp2YWxpZGF0ZQpgYGAKCkNvbnNvbGUgb3V0cHV0CgpgYGBjb25zb2xlCkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi5GRkYuLkZGRkZGRkZGRkYuLi4uRi4uLi4uLi5GLi4uRkYuLi4uLkYuLi5GLi4uLkYuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uRkYuRi4uRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi5GRi4uLi4uLi4uRkZGLi4uRkZGRi4uLi4uLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi4uLi4uLi5GRkZGRkZGRkZGRi4uRkZGRkZGLi5GRkZGRkZGRkZGRkZGRkZGRi4uLi4uLi5GRkZGRkYuLi4uLi4uLi4uLi4uRkZGRkZGRkZGRkZGLi4uLkYuLi4uLi4uLkZGRi5GLi4uRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi4uLi4uLi4uLi4uRkYuLi4uLi4uLkZGRi4uLi4uLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYuLi4uRkZGRkZGLi4uLi4uRi4uLi4uLi4uLi4uLkZGRkYuLi4uLi4uLkZGRkZGRkZGRkZGRkZGLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkZGRkZGRi4uRkYuLi4uLkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGLi4uLi5GRi4uLi4uLi4uLi5GRkZGRkZGRkZGRkZGRkZGRkYuLi5GRkZGLi4uLi4uLi4uLi4uLi4uRi5GLi4uLkZGLi5GRkZGRkZGRgoKICAxKSBGaXR0aW5nOjpEb2M6Ok5vdEZvdW5kIGxvZyBlcnJvcjoKCmhvc3Q6IHd3dy5leGFtcGxlLmNvbQptZXRob2Q6IFBPU1QKcGF0aDogL3B1YmxpYy9hcGkvdjEvaW5ib3hlcy97aW5ib3hfaWRlbnRpZmllcn0vY29udGFjdHMKY29kZTogMjAwCgpjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb24KCmpzb24tc2NoZW1hOiB7CiAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIiwKICAidHlwZSI6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIjogewogICAgImlkIjogewogICAgICAidHlwZSI6ICJpbnRlZ2VyIiwKICAgICAgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBjb250YWN0IgogICAgfSwKICAgICJzb3VyY2VfaWQiOiB7CiAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgc2Vzc2lvbiBpZGVudGlmaWVyIG9mIHRoZSBjb250YWN0IgogICAgfSwKICAgICJuYW1lIjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiTmFtZSBvZiB0aGUgY29udGFjdCIKICAgIH0sCiAgICAiZW1haWwiOiB7CiAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJFbWFpbCBvZiB0aGUgY29udGFjdCIKICAgIH0sCiAgICAicHVic3ViX3Rva2VuIjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHRva2VuIHRvIGJlIHVzZWQgdG8gY29ubmVjdCB0byBjaGF0d29vdCB3ZWJzb2NrZXQiCiAgICB9CiAgfQp9Cgpib2R5OiB7CiAgInNvdXJjZV9pZCI6ICJjOWU4YzMxZi0wNmRmLTQ5YjQtOGZiOS00NDY2NDU3YWU2NWIiLAogICJwdWJzdWJfdG9rZW4iOiAiWmdjN0RFdmFqNVRrZ1oxYTRDN0F2SlhvIiwKICAiaWQiOiAzMjkzLAogICJuYW1lIjogInJlc3RsZXNzLXNub3dmbGFrZS02NzAiLAogICJlbWFpbCI6IG51bGwsCiAgInBob25lX251bWJlciI6IG51bGwKfQoKZXJyb3IgWwogICJUaGUgcHJvcGVydHkgJyMvZW1haWwnIG9mIHR5cGUgbnVsbCBkaWQgbm90IG1hdGNoIHRoZSBmb2xsb3dpbmcgdHlwZTogc3RyaW5nIGluIHNjaGVtYSBlNTZiN2U2NS1kNzBjLTVmN2EtYTk2Yy05ODJkZjVmOGYyZjciCl0KCi4uLgoKODA0IGV4YW1wbGVzLCA1NjUgZmFpbHVyZSwgMCBwZW5kaW5nCgpDb3ZlcmFnZTogNjUuNTElCmBgYAoKIyMjIENvdmVyYWdlCkFuZCB0YXNrIHdpbGwgY3JlYXRlIEhUTUwgKGBjb3ZlcmFnZS9maXR0aW5nLmh0bWxgKSByZXBvcnRzLgoKIVtleG1hcGxlXShpbWFnZXMvYjEucG5nKQoKIVtleG1hcGxlXShpbWFnZXMvYjIucG5nKQoKTW9yZSBpbmZvcm1hdGlvbiBvbiBhY3Rpb24gY292ZXJhZ2UKCiFbZXhtYXBsZTJdKGltYWdlcy93MS5wbmcpCgohW2V4bWFwbGUyXShpbWFnZXMvdzIucG5nKQoKIyMgU2V0dGluZ3MKCiMjIyBBUElzCgojIyMjIHR5cGUKCiMjIyMjIE9wZW5BUEkgMi4wClN3YWdnZXIKCmBgYHlhbWwKQVBJczoKICAtIGhvc3Q6IHd3dy5leGFtcGxlLmNvbQogICAgdHlwZTogb3BlbmFwaTIKICAgIHBhdGg6IGRvYy9hcGkuanNvbgpgYGAKCiMjIyMjIE9wZW5BUEkgMy4wCkFsc28gT3BlbkFQSQoKYGBgeWFtbApBUElzOgogIC0gaG9zdDogd3d3LmV4YW1wbGUuY29tCiAgICB0eXBlOiBvcGVuYXBpMwogICAgcGF0aDogZG9jL2FwaS5qc29uCmBgYAoKIyMjIyMgQVBJIEJsdWVwcmludApGaXJzdCB5b3UgbmVlZCB0byBpbnN0YWxsIFtkcmFmdGVyXShodHRwczovL2dpdGh1Yi5jb20vYXBpYXJ5aW8vZHJhZnRlcikgb3IgW2NyYWZ0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9mdW5ib3gvY3JhZnRlcikuCldvcmtzIGFmdGVyIGNvbnZlcnNpb24gZnJvbSBBUEkgQmx1ZXByaW50IHRvIEFQSSBFbGVtZW50cyAoaW4gWUFNTCBmaWxlKSB3aXRoIERyYWZ0ZXIgb3IgQ3JhZnRlci4KClRoYXQgaXMsIEkgbWVhbiB0aGF0IHlvdSBmaXJzdCBuZWVkIHRvIGRvIHRoaXMKCmBgYGJhc2gKZHJhZnRlciBkb2MuYXBpYiAtbyBkb2MueWFtbApgYGAKCm9yCgpgYGBiYXNoCm5vZGVfbW9kdWxlcy8uYmluL2NyYWZ0ZXIgZG9jLmFwaWIgPiBkb2MueWFtbApgYGAKCmFuZCB0aGVuCgpgYGB5YW1sCkFQSXM6CiAgLSBob3N0OiB3d3cuZXhhbXBsZS5jb20KICAgIHR5cGU6IGRyYWZ0ZXIKICAgIHBhdGg6IGRvYy9hcGkueWFtbApgYGAKCm9yCgpgYGB5YW1sCkFQSXM6CiAgLSBob3N0OiB3d3cuZXhhbXBsZS5jb20KICAgIHR5cGU6IGNyYWZ0ZXIKICAgIHBhdGg6IGRvYy9hcGkueWFtbApgYGAKCiMjIyMjIFRvbW9ncmFwaAoKVG8gdXNlIGFkZGl0aW9uYWwgZmVhdHVyZXMgb2YgdGhlIHByZS1jb252ZXJ0ZWQgW3RvbW9ncmFwaF0oaHR0cHM6Ly9naXRodWIuY29tL2Z1bmJveC90b21vZ3JhcGgpCgpleGFtcGxlCgpgYGBiYXNoCmJ1bmRsZSBleGVjIHRvbW9ncmFwaCAtZCBjcmFmdGVyIC0tZXhjbHVkZS1kZXNjcmlwdGlvbiBkb2MvYXBpLnltbCBkb2MvYXBpLmpzb24KYGBgCgphbmQgdGhlbgoKYGBgeWFtbApBUElzOgogIC0gaG9zdDogd3d3LmV4YW1wbGUuY29tCiAgICB0eXBlOiB0b21vZ3JhbQogICAgcGF0aDogZG9jL2FwaS5qc29uCmBgYAoKIyMjIyBwcmVmaXgKClNldHRpbmcgdGhlIHByZWZpeCBuYW1lIGlzIG9wdGlvbmFsLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBkbyB0aGlzOgoKYGBgeWFtbApBUElzOgogIC0gaG9zdDogd3d3LmV4YW1wbGUuY29tCiAgICBwcmVmaXg6IC9hcGkvdjMKICAgIHR5cGU6IG9wZW5hcGkyCiAgICBwYXRoOiBzd2FnZ2VyL3N3YWdnZXIuanNvbgpgYGAKCiMjIyBTa2lwVmFsaWRhdGlvbgoKIyMjIyBob3N0CgpJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGltbWVkaWF0ZWx5IGRlc2NyaWJlIGVhY2ggaG9zdCBpbiBkZXRhaWwsIHlvdSBjYW4gb25seSBzcGVjaWZ5IGl0cyBuYW1lIGFuZCBza2lwIGl0IHVudGlsIHlvdSBhcmUgcmVhZHkgdG8gZG9jdW1lbnRlZCBpdAoKYGBgeWFtbApTa2lwVmFsaWRhdGlvbjoKICAtIGhvc3Q6IGFwaS5jbHVzdGVyLmR5dGUuaW4KYGBgCgojIyMjIHByZWZpeAoKSWYgeW91IHdhbnQgdG8gc2tpcCBhIHNwZWNpZmljIHByZWZpeCBpbiB0aGUgaG9zdAoKYGBgeWFtbApTa2lwVmFsaWRhdGlvbjoKICAtIGhvc3Q6IGFwaS5jbHVzdGVyLmR5dGUuaW4KICAgIHByZWZpeDogL2FkbWluL2FwaQpgYGAKCiMjIyMgbWV0aG9kIGFuZCBwYXRoCgpJZiB5b3Ugd2FudCB0byBza2lwIGEgc3BlY2lmaWMgcmVxdWVzdCBpbiB0aGUgaG9zdAoKYGBgeWFtbApTa2lwVmFsaWRhdGlvbjoKICAtIGhvc3Q6IGFwaS5jbHVzdGVyLmR5dGUuaW4KICAgIG1ldGhvZDogR0VUCiAgICBwYXRoOiAvYXBpL3YxL2NhcnMKYGBgCgojIyMgTm9Db3YKCkl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gaW1tZWRpYXRlbHkgdGVzdCBlYWNoIGRvYyBpbiBkZXRhaWwsIHlvdSBjYW4gb25seSBzcGVjaWZ5IGl0cyBuYW1lIGFuZCBza2lwIGl0IHVudGlsIHlvdSBhcmUgcmVhZHkgdG8gdGVzdCBpdAoKIyMjIyBob3N0CmBgYHlhbWwKTm9Db3Y6CiAgLSBob3N0OiBzc28udGVzdApgYGAKCiMjIyMgbWV0aG9kCmBgYHlhbWwKTm9Db3Y6CiAgLSBob3N0OiBzc28udGVzdAogICAgbWV0aG9kOiBHRVQKYGBgCgojIyMjIHBhdGgKYGBgeWFtbApOb0NvdjoKICAtIGhvc3Q6IHNzby50ZXN0CiAgICBtZXRob2Q6IEdFVAogICAgcGF0aDogL3VzZXJzL3t1c2VySWR9CmBgYAoKIyMjIyBjb2RlCmBgYHlhbWwKTm9Db3Y6CiAgLSBob3N0OiBzc28udGVzdAogICAgbWV0aG9kOiBHRVQKICAgIHBhdGg6IC91c2Vycy97dXNlcklkfQogICAgY29kZTogMjAwCmBgYAoKIyMjIyBjb250ZW50LXR5cGUKYGBgeWFtbApOb0NvdjoKICAtIGhvc3Q6IHNzby50ZXN0CiAgICBtZXRob2Q6IEdFVAogICAgcGF0aDogL3VzZXJzL3t1c2VySWR9CiAgICBjb2RlOiAyMDAKICAgIGNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vanNvbgpgYGAKCiMjIyMgY29tYmluYXRpb24KYGBgeWFtbApOb0NvdjoKICAtIGhvc3Q6IHNzby50ZXN0CiAgICBtZXRob2Q6IEdFVAogICAgcGF0aDogL3VzZXJzL3t1c2VySWR9CiAgICBjb2RlOiAyMDAKICAgIGNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vanNvbgogICAgY29tYmluYXRpb246IG9uZU9mLjAKYGBgCgojIyMjIGNvbWJpbmF0aW9uX25leHQKYGBgeWFtbApOb0NvdjoKICAtIGhvc3Q6IHNzby50ZXN0CiAgICBtZXRob2Q6IEdFVAogICAgcGF0aDogL3VzZXJzL3t1c2VySWR9CiAgICBjb2RlOiAyMDAKICAgIGNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vanNvbgogICAgY29tYmluYXRpb246IG9uZU9mLjAKICAgIGNvbWJpbmF0aW9uX25leHQ6IG9uZU9mLjAucmVxdWlyZWQudXNlcnMKYGBgCgojIyMgRGVidWcKCklmIHlvdSBmaW5kIGJ1ZywgeW91IGNhbiBkZWJ1ZyBpdCBvciBjcmVhdGUgdGFzayBpbiB0aGlzIGdpdGh1YiBwcm9qZWN0ICB3aXRoIG5ldyBmaWxlIGBjb3ZlcmFnZS9maXR0aW5nLmRlYnVnLnltbGAKCmBgYHlhbWwKRGVidWc6CiAgLSBob3N0OiB3d3cuZXhhbXBsZS5jb20KICAgIG1ldGhvZDogR0VUCiAgICBwYXRoOiAvYXBpL3YzL3VzZXJzCiAgICBjb2RlOiAyMDAKICAgIGNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vanNvbgpgYGAKCiMjIENvbnRyaWJ1dGluZwoKQnVnIHJlcG9ydHMgYW5kIHB1bGwgcmVxdWVzdHMgYXJlIHdlbGNvbWUgb24gR2l0SHViIGF0IFtnaXRodWIuY29tL2Z1bmJveC9maXR0aW5nXShodHRwczovL2dpdGh1Yi5jb20vZnVuYm94L2ZpdHRpbmcpLgpUaGlzIHByb2plY3QgaXMgaW50ZW5kZWQgdG8gYmUgYSBzYWZlLCB3ZWxjb21pbmcgc3BhY2UgZm9yIGNvbGxhYm9yYXRpb24sIGFuZCBjb250cmlidXRvcnMgYXJlIGV4cGVjdGVkIHRvIGFkaGVyZSB0byB0aGUgW0NvbnRyaWJ1dG9yIENvdmVuYW50XShodHRwOi8vY29udHJpYnV0b3ItY292ZW5hbnQub3JnKSBjb2RlIG9mIGNvbmR1Y3QuCgojIyBMaWNlbnNlCgpUaGUgZ2VtIGlzIGF2YWlsYWJsZSBhcyBvcGVuIHNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIFtNSVQgTGljZW5zZV0oaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuCgpbIVtTcG9uc29yZWQgYnkgRnVuQm94XShodHRwczovL2Z1bmJveC5ydS9iYWRnZXMvc3BvbnNvcmVkX2J5X2Z1bmJveF9jZW50ZXJlZC5zdmcpXShodHRwczovL2Z1bmJveC5ydSkK readmeEtag: '"14f5079a6ca2e159943ae83eaa2999a55977d34a"' readmeLastModified: Mon, 17 Apr 2023 17:59:53 GMT repositoryId: 701451219 description: >- Library add improve test log for RSpec and WebMock, validate its according to API Blueprint and Open API, show the documentation coverage with log. created: '2023-10-06T16:56:37Z' updated: '2024-04-01T18:31:52Z' language: null archived: false stars: 0 watchers: 0 forks: 0 owner: funbox logo: https://avatars.githubusercontent.com/u/1439359?v=4 license: MIT repoEtag: '"1972fcd1c40a12ec8aa5d68da4b9582c90936b499796efe491636f3094365f6a"' repoLastModified: Mon, 01 Apr 2024 18:31:52 GMT foundInMaster: true category: - Testing - Data Validators - Learning id: 9aafc5713bc07ef13ec4f56258385ca1 name: Fitting language: Ruby link: https://github.com/funbox/fitting source_description: >- Library add improve test log for RSpec and WebMock, validate its according to API Blueprint and Open API, show the documentation coverage with log. v2: true v3_1: true - source: openapi3 tags repository: https://github.com/funbox/tomograph v3: true repositoryMetadata: base64Readme: >- IyBUb21vZ3JhcGggCgpDb252ZXJ0IEFQSSBCbHVlcHJpbnQsIFN3YWdnZXIgYW5kIE9wZW5BUEkgdG8gbWluaW1hbCByb3V0ZXMgd2l0aCBKU09OIFNjaGVtYS4gRm9yIGVhc2Ugb2YgdXNlIGFuZCBjcmVhdGlvbiBvZiBuZXcgdG9vbHMuCgpXaWxsIGxvb2sgbGlrZQoKICBgYGBqc29uCiAgWwogICAgewogICAgICAicGF0aCI6ICIvc2Vzc2lvbnMiLAogICAgICAibWV0aG9kIjogIlBPU1QiLAogICAgICAiY29udGVudC10eXBlIjogImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAicmVxdWVzdHMiOiBbewogICAgICAgICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICJsb2dpbiI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgICJwYXNzd29yZCI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgICJjYXB0Y2hhIjogewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgICAibG9naW4iLAogICAgICAgICAgInBhc3N3b3JkIgogICAgICAgIF0KICAgICAgfV0sCiAgICAgICJyZXNwb25zZXMiOiBbCiAgICAgICAgewogICAgICAgICAgInN0YXR1cyI6ICI0MDEiLAogICAgICAgICAgImNvbnRlbnQtdHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgICAgICJib2R5Ijoge30KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJzdGF0dXMiOiAiNDI5IiwKICAgICAgICAgICJjb250ZW50LXR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICAgICAiYm9keSI6IHt9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAic3RhdHVzIjogIjIwMSIsCiAgICAgICAgICAiY29udGVudC10eXBlIjogImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgImJvZHkiOiB7CiAgICAgICAgICAgICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyIsCiAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICJjb25maXJtYXRpb24iOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICAgICAgICJpZCI6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJ0eXBlIjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiI6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgICAgICAgICAgICJpZCIsCiAgICAgICAgICAgICAgICAgICJ0eXBlIiwKICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJjYXB0Y2hhIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgImNhcHRjaGFfZG9lc19ub3RfbWF0Y2giOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJib29sZWFuIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXQogICAgfQogIF0KICBgYGAKCiMjIEluc3RhbGxhdGlvbgoKVGhlbiBhZGQgdGhpcyBsaW5lIHRvIHlvdXIgYXBwbGljYXRpb24ncyBHZW1maWxlOgoKYGBgcnVieQpnZW0gJ3RvbW9ncmFwaCcKYGBgCgpBZnRlciB0aGF0IGV4ZWN1dGU6CgpgYGBiYXNoCiQgYnVuZGxlCmBgYAoKT3IgaW5zdGFsbCB0aGUgZ2VtIGJ5IHlvdXJzZWxmOgoKYGBgYmFzaAokIGdlbSBpbnN0YWxsIHRvbW9ncmFwaApgYGAKCiMjIFVzYWdlCgojIyMgSW4gY29kZQoKIyMjIyBPcGVuQVBJIDIuMAoKQWxzbyBTd2FnZ2VyCgpgYGBydWJ5CnJlcXVpcmUgJ3RvbW9ncmFwaCcKCnRvbW9ncmFtID0gVG9tb2dyYXBoOjpUb21vZ3JhbS5uZXcob3BlbmFwaTJfanNvbl9wYXRoOiAnL3BhdGgvdG8vZG9jLmpzb24nKQpgYGAKCiMjIyMgT3BlbkFQSSAzLjAKCkFsc28gT3BlbkFQSQoKYGBgcnVieQpyZXF1aXJlICd0b21vZ3JhcGgnCgp0b21vZ3JhbSA9IFRvbW9ncmFwaDo6VG9tb2dyYW0ubmV3KG9wZW5hcGkzX3lhbWxfcGF0aDogJy9wYXRoL3RvL2RvYy55YW1sJykKYGBgCgojIyMjIEFQSSBCbHVlcHJpbnQKCkZpcnN0IHlvdSBuZWVkIHRvIGluc3RhbGwgW2RyYWZ0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlhcnlpby9kcmFmdGVyKS4KV29ya3MgYWZ0ZXIgY29udmVyc2lvbiBmcm9tIEFQSSBCbHVlcHJpbnQgdG8gQVBJIEVsZW1lbnRzIChpbiBZQU1MIGZpbGUpIHdpdGggRHJhZnRlci4KClRoYXQgaXMsIEkgbWVhbiB0aGF0IHlvdSBmaXJzdCBuZWVkIHRvIGRvIHRoaXMKCmBgYGJhc2gKZHJhZnRlciBkb2MuYXBpYiAtbyBkb2MueWFtbApgYGAKCmFuZCB0aGVuCgpgYGBydWJ5CnJlcXVpcmUgJ3RvbW9ncmFwaCcKCnRvbW9ncmFtID0gVG9tb2dyYXBoOjpUb21vZ3JhbS5uZXcoZHJhZnRlcl95YW1sX3BhdGg6ICcvcGF0aC90by9kb2MueWFtbCcpCmBgYAoKIyMjIyBUb21vZ3JhcGgKClRvIHVzZSBhZGRpdGlvbmFsIGZlYXR1cmVzIG9mIHRoZSBwcmUtY29udmVydGVkCgpgYGBydWJ5CnJlcXVpcmUgJ3RvbW9ncmFwaCcKCnRvbW9ncmFtID0gVG9tb2dyYXBoOjpUb21vZ3JhbS5uZXcodG9tb2dyYW1fanNvbl9wYXRoOiAnL3BhdGgvdG8vZG9jLmpzb24nKQpgYGAKCiMjIyMgcHJlZml4CkRlZmF1bHQ6IGAnJ2AKCllvdSBjYW4gc3BlY2lmeSBBUEkgcHJlZml4IGFuZCBwYXRoIHRvIHRoZSBzcGVjIHVzaW5nIG9uZSBvZiB0aGUgcG9zc2libGUgZm9ybWF0czoKCmBgYHJ1YnkKVG9tb2dyYXBoOjpUb21vZ3JhbS5uZXcocHJlZml4OiAnL2FwaS92MicsIGRyYWZ0ZXJfeWFtbF9wYXRoOiAnL3BhdGgvdG8vZG9jLnlhbWwnKQpgYGAKCmBgYHJ1YnkKVG9tb2dyYXBoOjpUb21vZ3JhbS5uZXcocHJlZml4OiAnL2FwaS92MicsIHRvbW9ncmFtX2pzb25fcGF0aDogJy9wYXRoL3RvL2RvYy5qc29uJykKYGBgCgojIyMjIHRvX2pzb24KVXNlIGB0b19qc29uYCBmb3IgY29udmVydGluZyB0byBKU09OLCBleGFtcGxlIGZyb20gQVBJIEJsdWVwcmludDoKCmBgYHJ1YnkKdG9tb2dyYW0udG9fanNvbgpgYGAKCjxkZXRhaWxzPgogIDxzdW1tYXJ5PkV4YW1wbGUgaW5wdXQ8L3N1bW1hcnk+CgogIGBgYGFwaWIKICBGT1JNQVQ6IDFBCiAgSE9TVDogaHR0cDovL3Rlc3QubG9jYWwKICAKICAjIHByb2plY3QKICAKICAjIEdyb3VwIHByb2plY3QKICAKICBQcm9qZWN0CiAgCiAgIyMgQXV0aGVudGljYXRpb24gWy9zZXNzaW9uc10KICAKICAjIyMgU2lnbiBJbiBbUE9TVF0KICAKICArIFJlcXVlc3QgKGFwcGxpY2F0aW9uL2pzb24pCiAgCiAgICAgICsgQXR0cmlidXRlcwogICAgICAgKyBsb2dpbiAoc3RyaW5nLCByZXF1aXJlZCkKICAgICAgICsgcGFzc3dvcmQgKHN0cmluZywgcmVxdWlyZWQpCiAgICAgICArIGNhcHRjaGEgKHN0cmluZywgb3B0aW9uYWwpCiAgCiAgKyBSZXNwb25zZSA0MDEgKGFwcGxpY2F0aW9uL2pzb24pCiAgCiAgKyBSZXNwb25zZSA0MjkgKGFwcGxpY2F0aW9uL2pzb24pCiAgCiAgKyBSZXNwb25zZSAyMDEgKGFwcGxpY2F0aW9uL2pzb24pCiAgCiAgICAgICsgQXR0cmlidXRlcwogICAgICAgKyBjb25maXJtYXRpb24gKENvbmZpcm1hdGlvbiwgb3B0aW9uYWwpCiAgICAgICArIGNhcHRjaGEgKHN0cmluZywgb3B0aW9uYWwpCiAgICAgICArIGNhcHRjaGFfZG9lc19ub3RfbWF0Y2ggKGJvb2xlYW4sIG9wdGlvbmFsKQogIAogIAogICMgRGF0YSBTdHJ1Y3R1cmVzCiAgCiAgIyMgQ29uZmlybWF0aW9uIChvYmplY3QpCiAgICArIGlkIChzdHJpbmcsIHJlcXVpcmVkKQogICAgKyB0eXBlIChzdHJpbmcsIHJlcXVpcmVkKQogICAgKyBvcGVyYXRpb24gKHN0cmluZywgcmVxdWlyZWQpCiAgYGBgCjwvZGV0YWlscz4KCjxkZXRhaWxzPgogIDxzdW1tYXJ5PkV4YW1wbGUgb3V0cHV0PC9zdW1tYXJ5PgoKICBgYGBqc29uCiAgWwogICAgewogICAgICAicGF0aCI6ICIvc2Vzc2lvbnMiLAogICAgICAibWV0aG9kIjogIlBPU1QiLAogICAgICAiY29udGVudC10eXBlIjogImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAicmVxdWVzdHMiOiBbewogICAgICAgICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyIsCiAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICJsb2dpbiI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgICJwYXNzd29yZCI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgICJjYXB0Y2hhIjogewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgICAibG9naW4iLAogICAgICAgICAgInBhc3N3b3JkIgogICAgICAgIF0KICAgICAgfV0sCiAgICAgICJyZXNwb25zZXMiOiBbCiAgICAgICAgewogICAgICAgICAgInN0YXR1cyI6ICI0MDEiLAogICAgICAgICAgImNvbnRlbnQtdHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgICAgICJib2R5Ijoge30KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJzdGF0dXMiOiAiNDI5IiwKICAgICAgICAgICJjb250ZW50LXR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICAgICAiYm9keSI6IHt9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAic3RhdHVzIjogIjIwMSIsCiAgICAgICAgICAiY29udGVudC10eXBlIjogImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgImJvZHkiOiB7CiAgICAgICAgICAgICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyIsCiAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICJjb25maXJtYXRpb24iOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICAgICAgICJpZCI6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJ0eXBlIjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiI6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgICAgICAgICAgICJpZCIsCiAgICAgICAgICAgICAgICAgICJ0eXBlIiwKICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJjYXB0Y2hhIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgImNhcHRjaGFfZG9lc19ub3RfbWF0Y2giOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJib29sZWFuIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXQogICAgfQogIF0KICBgYGAKPC9kZXRhaWxzPiAKCiMjIyMgdG9fYQpgYGBydWJ5CnRvbW9ncmFtLnRvX2EKYGBgCgojIyMjIGZpbmRfcmVxdWVzdApgYGBydWJ5CnJlcXVlc3QgPSB0b21vZ3JhbS5maW5kX3JlcXVlc3QobWV0aG9kOiAnR0VUJywgcGF0aDogJy9zdGF0dXMvMT9xd2U9cnR5JykKYGBgCgojIyMjIGZpbmRfcmVxdWVzdF93aXRoX2NvbnRlbnRfdHlwZQpgYGBydWJ5CnJlcXVlc3QgPSB0b21vZ3JhbS5maW5kX3JlcXVlc3Rfd2l0aF9jb250ZW50X3R5cGUobWV0aG9kOiAnR0VUJywgcGF0aDogJy9zdGF0dXMvMT9xd2U9cnR5JywgY29udGVudF90eXBlOiAnYXBwbGljYXRpb24vanNvbicpCmBgYAoKIyMjIyBgZmluZF9yZXNwb25zZXNgCmBgYHJ1YnkKcmVzcG9uc2VzID0gcmVxdWVzdC5maW5kX3Jlc3BvbnNlcyhzdGF0dXM6ICcyMDAnKQpgYGAKCiMjIyMgcHJlZml4X21hdGNoPwpUaGlzIG1heSBiZSB1c2VmdWwgaWYgeW91IHNwZWNpZnkgYSBwcmVmaXguCgpgYGBydWJ5CnRvbW9ncmFtLnByZWZpeF9tYXRjaD8oJ2h0dHA6Ly9sb2NhbC9hcGkvdjIvdXNlcnMnKQpgYGAKCiMjIyMgdG9fcmVzb3VyY2VzCk1hcHMgcmVzb3VyY2VzIGZvciBBUEkgQmx1ZXByaW50IHdpdGggcG9zc2libGUgcmVxdWVzdHMuCgpFeGFtcGxlIG91dHB1dDoKCmBgYHJ1YnkKewogICcvc2Vzc2lvbnMnID0+IFsnUE9TVCAvc2Vzc2lvbnMnXQp9CmBgYAoKIyMjIENvbW1hbmQgbGluZSB0b29sCgpDTEkgYWxsb3dzIHlvdSB0byBjb252ZXJ0IGZpbGVzIGZyb20gQVBJIEJsdWVwcmludCAoQVBJIEVsZW1lbnRzKSwgU3dhZ2dlciBhbmQgT3BlbkFQSSB0byBKU09OIFNjaGVtYS4KClJ1biBDTEkgd2l0aCBgLWhgIHRvIGdldCBkZXRhaWxlZCBoZWxwOgoKYGBgYmFzaAp0b21vZ3JhcGggLWgKYGBgCgpUbyBzcGVjaWZ5IHRoZSBoYW5kbGVyIHZlcnNpb24gdXNlIHRoZSBgLWRgIGZsYWc6CgojIyMjIE9wZW5BUEkgMi4wCmBgYGJhc2gKdG9tb2dyYXBoIC1kIG9wZW5hcGkyIG9wZW5hcGkyLmpzb24gdG9tb2dyYW0uanNvbgpgYGAKCiMjIyMgT3BlbkFQSSAzLjAKYGBgYmFzaAp0b21vZ3JhcGggLWQgb3BlbmFwaTMgb3BlbmFwaTMueWFtbCBkb2MuanNvbgpgYGAKCiMjIyMgQVBJIEJsdWVwcmludApgYGBiYXNoCnRvbW9ncmFwaCAtZCA0IGFwaWVsZW1ldG5zLnlhbWwgZG9jLmpzb24KYGBgCgojIyMjIGV4Y2x1ZGUtZGVzY3JpcHRpb24KCkV4Y2x1ZGUgImRlc2NyaXB0aW9uIiBrZXlzIGZyb20ganNvbi1zY2hlbWFzLgoKYGBgYmFzaAp0b21vZ3JhcGggLWQgNCBhcGllbGVtZXRucy55YW1sIGRvYy5qc29uIC0tZXhjbHVkZS1kZXNjcmlwdGlvbgpgYGAKCiMjIyMgc3BsaXQKClNwbGl0IG91dHB1dCBpbnRvIGZpbGVzIGJ5IG1ldGhvZC4gT3V0cHV0IGluIGRpciBwYXRoLgoKYGBgYmFzaAp0b21vZ3JhcGggLWQgNCAtLXNwbGl0IGFwaWVsZW1ldG5zLnlhbWwganNvbnMvCmBgYAoKIyMgTGljZW5zZQoKVGhlIGdlbSBpcyBhdmFpbGFibGUgYXMgb3BlbiBzb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBbTUlUIExpY2Vuc2VdKGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQpLgoKWyFbU3BvbnNvcmVkIGJ5IEZ1bkJveF0oaHR0cHM6Ly9mdW5ib3gucnUvYmFkZ2VzL3Nwb25zb3JlZF9ieV9mdW5ib3hfY2VudGVyZWQuc3ZnKV0oaHR0cHM6Ly9mdW5ib3gucnUpCg== readmeEtag: '"f17fc04aab49a8f7b4ad80f0907855c95335b068"' readmeLastModified: Thu, 02 Feb 2023 13:12:37 GMT repositoryId: 701451827 description: >- Convert API Blueprint, Swagger and OpenAPI to JSON Schema and search through it created: '2023-10-06T16:58:26Z' updated: '2024-04-01T18:36:44Z' language: null archived: false stars: 0 watchers: 0 forks: 0 owner: funbox logo: https://avatars.githubusercontent.com/u/1439359?v=4 license: MIT repoEtag: '"23ca3be7a7796f644800e794e75f203acf8538933a3ce65957eb48a193333ab1"' repoLastModified: Mon, 01 Apr 2024 18:36:44 GMT foundInMaster: true category: Parsers id: 99ad4f595f72485cba5a861dd6812743 - source: openapi3 tags repository: https://github.com/zimmj/simple-user-service v3: true id: 0c3e0d5c0877b9f25539f349454ccc4a repositoryMetadata: base64Readme: >- IyBTaW1wbGUgVXNlciBzZXJ2aWNlCgpUaGlzIGlzIGEgZXhhbXBsZSBwcm9qZWN0IG9mIGFuIHNpbXBsZSB1c2VyIHNlcnZpY2UuCkEgdXNlciBoYXMgZm9sbG93aW5nIGZpZWxkcy4KCmBgYHltbAp1c2VyOgogIGlkOiB1dWlkCiAgbmFtZTogc3RyaW5nCiAgZW1haWw6IHN0cmluZwogIHBhc3N3b3JkOiBzdHJpbmcKYGBgCgpBcyBpdCBhIHNpbXBsZSBzaG93IG9mIGNvbmNlcHQgcHJvamVjdCwgdGhlIHBhc3N3b3JkIGFyZSBzYXZlZCBpbiBwbGFpbiB0ZXh0LgoKVGhlIHNlcnZpY2UgY29uc2lzdCBvZiB0aHJlZSBsYXllcnM6CgotIGNvbnRyb2xsZXJzCi0gc2VydmljZXMKLSBkYXRhIGxheWVyCgpUaGlzIHNlcnZpY2UgaXMgd3JpdHRlbiBpbiB0eXBlLXNjcmlwdC4KSXQgdXNlcyBleHByZXNzIGZvciBpdCdzIHNlcnZlciBmdW5jdGlvbmFsaXR5LgoKVGhlIFtvcGVuLWFwaSB5YW1sIGRlZmluaXRpb25dKC4vY29uZmlnL29wZW5hcGkueW1sKSBpcyB1c2VkIGFzIG1haW4gY29udHJhY3QuCkFsbCB0aGUgZGVmaW5lZCBlbmRwb2ludHMgYXJlIGxpbmtlZCB0byB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBpbiB0aGUgY29udHJvbGxlciBsYXllciBieSB0aGUgcGFja2FnZTogc3dhZ2dlci1yb3V0ZXMtZXhwcmVzcy4KVGhlIHJvdXRlcyBhcmUgbWF0Y2hlZCB2aWEgdGhlIGRlZmluZWQgb3BlcmF0aW9uIElkJ3MuCgpWYWxpZGF0aW9uIG9mIHRoZSByZXF1ZXN0IGFuZCByZXNwb25zZSBpcyBtYWRlIHdpdGggdGhlIHBhY2thZ2U6IGV4cHJlc3Mtb3BlbmFwaS12YWxpZGF0b3IuClRoaXMgYXV0b21hdGljYWxseSB2YWxpZGF0ZXMgYWxsIGRhdGEgY29taW5nIGluIGFuZCBnb2luZyBmb3IgdGhlcmUgY29ycmVjdG5lc3MgYXMgZGVzY3JpYmVkIGluIHRoZSBvcGVuLWFwaSB5YW1sLgoKV2l0aCB0aGlzLCBJIGNhbiBndWFyYW50ZWUsIHRoYXQgdGhpcyBjb250cmFjdCBpcyBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgYW5kIG90aGVyIGRldmVsb3BlciBjYW4gdXNlIHRoaXMgeWFtbCB0byBnZW5lcmF0ZSB0aGUgY2xpZW50LgoKSW4gdGhlIGRhdGEgbGF5ZXIsIEkgdXNlIGRyaXp6bGUgYXMgT01SIHRvIGNvbm5lY3QgdG8gdGhlIHBvc3RncmVzIGRhdGFiYXNlLgpJdCdzIGEgZnVsbCBmbGV0Y2hlZCBPTVIgd2l0aCBtaWdyYXRpb24gYW5kIGFsbG93cyB0eXBlIHNhZmUgcXVlcmllcy4KCiMjIFJ1biB3aXRoIGRvY2tlcgoKVGhpcyByZXBvc2l0b3J5IGlzIGRvY2tlcml6ZWQsIHRoZXJlZm9yZSBjYW4gYmUgYnVpbGQgYW5kIHJ1biB3aXRoIGFueSBjb250YWluZXIgdG9vbHMuCgpBcyB0aGVyZSBpcyBhIHdvcmtpbmcgY29tcG9zZSBmaWxlLCB0aGUgc2ltcGxlc3QgaXMgdG8gcnVuIGRvY2tlci1jb21wb3NlIHVwIGluIHRoZSByb290IGRpcmVjdG9yeS4KSXQgd2lsbCBidWlsZCB0aGUgZG9ja2VyIGNvbnRhaW5lciBhbmQgcnVuIHRoZSBhcHBsaWNhdGlvbiB3aXRoIGEgcG9zdGdyZXMgc2VydmVyIGF0dGFjaGVkIHRvIGl0LgoKVGhlIHBvc3RncmVzIGRhdGFiYXNlIGlzIGluaXRpYWxpemVkIHdpdGggdGhlIFtpbml0LnNxbF0oLi9kb2NrZXIvaW5pdC5zcWwpLgpUaGUgY29udGVudCBvZiBpdCBpcyB0aGUgbWlncmF0aW9uIG9mIGRyaXp6bGUKClRoZSB1c2VyIHNlcnZpY2UgaXMgZXhwb3NlZCBvbiB0aGUgcG9ydDogMzAwMC4KCkEgZ29vZCBlbnRyeSBwb2ludCBpcyB0aGUgW3N3YWdnZXIgdWldKGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9zd2FnZ2VyKSBhcyB5b3UgY2FuIHVzZSBpdCwgdG8gY2FsbCB0aGUgZGlmZmVyZW50IGVuZHBvaW50cy4KClRvIHJ1biBzZXJ2aWNlIHJ1biBkb2NrZXIgY29tcG9zZSB1cCBpbiB0aGUgcm9vdCBkaXJlY3Rvcnk6CgpgYGBiYXNoCmRvY2tlciBjb21wb3NlIHVwCmBgYAoKQW5vdGhlciBvcHRpb24gdG8gY2FsbCB0aGUgc2VydmljZSBpcyB0byB1c2UgdGhlIHByb3ZpZGVkIFtwb3N0bWFuIGNvbGxlY3Rpb25dKC4vY29udGVudC9zaW1wbGUtdXNlci1zZXJ2aWNlLnBvc3RtYW5fY29sbGVjdGlvbi5qc29uKS4KClRoZSBmbG93IG9mIHRoZSBzZXJ2aWNlIGlzIGFzIGZvbGxvd3MuCgoxLiBDcmVhdGUgYSB1c2VyCjIuIFNpZ24gaW4gd2l0aCB0aGUgdXNlciAtPiBnZXQgSldUIHRva2VuCgpXaXRoIHRoZSBKV1QgdG9rZW4geW91IGNhbjoKCjEuIExpc3QgYWxsIHVzZXJzCjIuIERpc3BsYXkgYSB1c2VyCjMuIE1vZGlmeSB5b3VyIHVzZXIKNC4gRGVsZXRlIHlvdXIgdXNlcgoKIyMgUnVuIGl0IGxvY2FsbHkKClRvIHJ1biB0aGlzIHNlcnZpY2UgbG9jYWxseSBhIHBvc3RncmVzIGRiIG5lZWQgdG8gcnVuLgpUaGUgZGF0YWJhc2UgY29ubmVjdGlvbiBuZWVkIHRvIGJlIGdpdmVuIGluIHRoZSBmaWxlOiBbLmVudi5kZXZdKC4vY29uZmlnLy5lbnYuZGV2KS4KUHJvdmlkZSBhcyB3ZWxsIHRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSB3aGljaCBzaG91bGQgYmUgdXNlZC4KCmBgYHlhbWwKREJfSE9TVD1sb2NhbGhvc3QKREJfUE9SVD01NDMyCkRCX1VTRVI9cG9zdGdyZXMKREJfUEFTU1dPUkQ9cm9vdApEQVRBQkFTRV9OQU1FPXNpbXBsZV91c2VyX3NlcnZpY2UKYGBgCgpCZWZvcmUgcnVubmluZyB0aGUgYXBwbGljYXRpb24sIHRoZSBtaWdyYXRpb24gbmVlZCB0byBiZSBydW4uCgpgYGBiYXNoCnlhcm4gcnVuOm1pZ3JhdGlvbgpgYGAKClRoaXMgY3JlYXRlcyB0aGUgbmVlZGVkIHRhYmxlcyBpbiB0aGUgZGF0YWJhc2UgYW5kIHRoZSBzZXJ2aWNlIGNhbiBiZSBzdGFydGVkLgoKVG8gcnVuIHRoZSBhcHBsaWNhdGlvbiBpbiBkZXZlbG9wZXIgbW9kZToKCmBgYGJhc2gKeWFybiBkZXYKYGBgCg== readmeEtag: '"fc150277921030e0cac3fbafaba5d42961f90dfc"' readmeLastModified: Mon, 07 Aug 2023 19:09:30 GMT repositoryId: 675108094 description: A simple user service, which saves password in plain text!. created: '2023-08-05T20:01:16Z' updated: '2023-09-29T06:55:32Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: zimmj logo: https://avatars.githubusercontent.com/u/33086958?v=4 repoEtag: '"d869b142caf884280cd567ceeba24ef9a66503ac2d6008406a4aa197bb4b752d"' repoLastModified: Fri, 29 Sep 2023 06:55:32 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/marszm/shop_backend v3: true id: dcaf755047af73489f9cf0040b0b4c86 repositoryMetadata: base64Readme: >- IyBTaW1wbGUgYmFja2VuZCBzZXJ2aWNlIGZvciBzaG9wIGFwcGxpY2F0aW9uIHdpdGggIENSVUQgb3BlcmF0aW9ucyB3cml0dGVuIGluIEphdmEgMTcsIFNwcmluZyBCb290IDMgYW5kIFNwcmluZyA2IGZyYW1ld29yayBjb25uZWN0ZWQgdG8gTXlTUUwgZGF0YWJhc2UuCiMgRG9jdW1lbnRhdGlvbiBlbmRwb2ludDogaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N3YWdnZXItdWkvaW5kZXguaHRtbCM= readmeEtag: '"bbe36b0b63ba4b4d13c57648fe40cdcfd375e933"' readmeLastModified: Tue, 17 Jan 2023 20:09:02 GMT repositoryId: 571245518 description: >- Simple backend service for shop application with CRUD operations written in Java 17, Spring Boot 3 and Spring 6 framework connected to MySQL database. created: '2022-11-27T16:19:23Z' updated: '2023-01-10T20:31:56Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: marszm logo: https://avatars.githubusercontent.com/u/23463955?v=4 repoEtag: '"4a59d892e3b4526f5b500564ea07bc47ae222ad9d383c693d3ed1558a1ad9b70"' repoLastModified: Tue, 10 Jan 2023 20:31:56 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/abdullah2993/textsynth-openapi-v3-spec v3: true id: 5fc54a5ed241302e5a8fa86292f6e6f2 repositoryMetadata: base64Readme: >- IyB0ZXh0c3ludGgtb3BlbmFwaS12My1zcGVjCk9wZW5BUEkgVjMgU3BlY2lmaWNhdGlvbiBmb3IgaHR0cHM6Ly90ZXh0c3ludGguY29tCgpUaGlzIHJlcG9zaXRvcnkgaXMgYSBbdGVtcGxhdGUsIHlvdSBjYW4gY3JlYXRlIHlvdXIgcmVwbyBmcm9tIHRoaXMgdG8gZ2VuZXJhdGUgY2xpZW50cyBdKGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL3JlcG9zaXRvcmllcy9jcmVhdGluZy1hbmQtbWFuYWdpbmctcmVwb3NpdG9yaWVzL2NyZWF0aW5nLWEtcmVwb3NpdG9yeS1mcm9tLWEtdGVtcGxhdGUpCg== readmeEtag: '"db53e9b69acda1e1dff3a60bfa996aef3a41855c"' readmeLastModified: Sat, 22 Apr 2023 00:30:46 GMT repositoryId: 631104713 description: OpenAPI V3 Specification for https://textsynth.com created: '2023-04-22T00:22:49Z' updated: '2023-04-22T00:24:01Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: abdullah2993 logo: https://avatars.githubusercontent.com/u/5978905?v=4 license: MIT repoEtag: '"a794807aa5e693e254970f2bd0c613e15a5ff025872cba5e39790a0eb7548f5c"' repoLastModified: Sat, 22 Apr 2023 00:24:01 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/livingdocsio/openapi v3: true id: 84bfb7fcfdecd08b4df5318f3517f75b repositoryMetadata: base64Readme: >- IyBMaXZpbmdkb2NzIE9wZW5BUEkgU3BlY2lmaWNhdGlvbgpPcGVuQVBJIDMgc3BlY2lmaWNhdGlvbiBmb3IgTGl2aW5nZG9jcyBQdWJsaWMgQVBJCgpUaGlzIGZpbGUgbWFrZXMgaXQgZWFzeSB0byB0ZXN0IGFuZCBzaGFyZSBvdXIgQVBJIGVucG9pbnRzLgoKSXQncyBhdmFpbGFibGUgW2hlcmVdKC9saXZpbmdkb2NzLW9wZW5hcGkuanNvbikKCiMjIFN1cHBvcnRlZCBlbnZpcm9ubWVudHMKLSBsb2NhbGhvc3QKLSBMaXZpbmdkb2NzIGRlbW8gYXQgZWRpdC5saXZpbmdkb2NzLmlvLCBkZXByZWNhdGVkIGZyb20gcmVsZWFzZS0yMDIzLTA5CgojIyBIb3cgdG8gdXNlIGl0ClRoZSBPcGVuQVBJIHNwZWMgaXMgaG9zdGVkIGJ5IEdpdGh1YiBwYWdlcyBhdDogCgpbaHR0cHM6Ly9saXZpbmdkb2NzaW8uZ2l0aHViLmlvL29wZW5hcGkvbGl2aW5nZG9jcy1vcGVuYXBpLmpzb25dKGh0dHBzOi8vbGl2aW5nZG9jc2lvLmdpdGh1Yi5pby9vcGVuYXBpL2xpdmluZ2RvY3Mtb3BlbmFwaS5qc29uKQoKVGhpcyBjYW4gYmUgaW1wb3J0ZWQgaW4gSW5zb21uaWEgb3IgUG9zdG1hbiB0byBoYXZlIGEgZnVsbCBjb2xsZWN0aW9ucyBvZiBBUEkgZW5wb2ludHMgdG8gdGVzdC4KCjxpbWcgd2lkdGg9IjE1MTIiIGFsdD0ib3BlbmFwaS1pbnNvbW5pYSIgc3JjPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xNjgyODAzLzE5Njg4NjkxMC03NjBhMmRkZC05YjQ2LTQyYzMtOTI5Mi03MTk2OGQ4MGZiYWYucG5nIj4KCgpBbHRlcm5hdGl2ZWx5IHRoZSBzYW1lIGNhbiBiZSBkb25lIHdpdGggb25saW5lIHRvb2xzLiBZb3UganVzdCBuZWVkIHRvIHBhc3RlIHRoZSBPcGVuQVBJIHNwZWMgdXJsIGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIHRvb2xzLgoKW1N3YWdnZXIgVUldKGh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby8pCgpbU3dhZ2dlciBFZGl0b3JdKGh0dHBzOi8vZWRpdG9yLnN3YWdnZXIuaW8vKQoKCiMjIyBTb21lIG90aGVyIHRvb2xzCgpbT3BlbkFQSSBUb29sc10oaHR0cHM6Ly9vcGVuYXBpLnRvb2xzLykgbGlzdCBvZiB1c2VmdWwgdG9vbHMgcmVsYXRlZCB0byBPcGVuQVBJCgpbQXBpVHJlZV0oaHR0cHM6Ly93d3cuYXBpdHJlZS5jb20vKSBob3N0ZWQgQVBJIGRvY3VtZW50YXRpb24gYmFzZWQgb24gT3BlbkFQSQoKW09wZW5Eb2N1bWVudGVyXShodHRwczovL291cm9wZW5jb2RlLmdpdGh1Yi5pby9PcGVuRG9jdW1lbnRlci8pOgpmb3IgY3JlYXRpbmcgYSBkb2N1bWVudGF0aW9uIGZyb20gT3BlbkFQSSBzcGVjCgojIyBIb3cgdG8gZGV2ZWxvcApJbXBvcnQgdGhlIGxpdmluZ2RvY3Mtb3BlbmFwaS5qc29uIGZpbGUgaW50byBpbnNvbW5pYSBhcyBhIGRlc2lnbiBkb2N1bWVudCwgaGVyZSB5b3UgY2FuIHRlc3QgdGhlIEFQSXMgYW5kIGFkZCBuZXcgZW5kcG9pbnRzLgpGb3IgYXV0aGVudGljYXRlZCByZXF1ZXN0cyB5b3UgbmVlZCBhbiBBUEkgdG9rZW4gZnJvbSB5b3VyIExpdmluZ2RvY3MgcHJvamVjdC4KCkFsdGVybmF0aXZlbHkgeW91IGNhbiBkbyBldmVyeXRoaW5nIGluIFZTIENvZGUgdXNpbmcgdGhlIFtPcGVuQVBJIChTd2FnZ2VyKSBFeHRlbnNpb25dKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT00MkNydW5jaC52c2NvZGUtb3BlbmFwaSkuCgojIyMgRXhhbXBsZSBlbmRwb2ludApgYGB5YW1sCiAgL2NoYW5uZWxzL3tjaGFubmVsSGFuZGxlfToKICAgICAgZ2V0OgogICAgICAgIHNlY3VyaXR5OgogICAgICAgIC0gYmVhcmVyQXV0aDogW3B1YmxpYy1hcGk6cmVhZF0KICAgICAgICBwYXJhbWV0ZXJzOgogICAgICAgIC0gbmFtZTogY2hhbm5lbEhhbmRsZQogICAgICAgICAgaW46IHBhdGgKICAgICAgICAgIGRlc2NyaXB0aW9uOiBPcHRpb25hbCBjaGFubmVsSGFuZGxlLiBXaWxsIHJldHVybiBmaXJzdCBjaGFubmVsIG9mIGEgcHJvamVjdCBpZiBub25lIGlzIHBhc3NlZC4KICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICBleGFtcGxlOiAiIgogICAgICAgIHRhZ3M6CiAgICAgICAgICAtIFByb2plY3QKICAgICAgICBzdW1tYXJ5OiBkZXRhaWxzIGFuZCBjb25maWd1cmF0aW9uIG9mIHRoaXMgcHJvamVjdC4KICAgICAgICBvcGVyYXRpb25JZDogZ2V0Q2hhbm5lbAogICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgICIyMDAiOgogICAgICAgICAgIGRlc2NyaXB0aW9uOiBvawpgYGAKIyMgSG93IHRvIGNvbnRyaWJ1dGUKS2VlcCB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgb3VyIGRvY3VtZW50YXRpb24gW2RvY3NdKGh0dHBzOi8vZG9jcy5saXZpbmdkb2NzLmlvL3JlZmVyZW5jZS1kb2NzL3B1YmxpYy1hcGkvKS4KTWFueSBBUEkgZW5kcG9pbnRzIGFyZSBzdGlsbCBtaXNzaW5nLiBQbGVhc2UgbWFyayB0aGUgY2F0ZWdvcnkgYXMgY29tcGxldGVkIHdoZW4gYWxsIGl0cyBlbmRwb2ludHMgYXJlIHJlZ2lzdGVyZWQgaW4gdGhlIHNwZWMuCi0gUHJvamVjdCAgICAgICAgICAgICDinIUKLSBDb21wb3NpdGlvbiBBUEkgICAgIOKchQotIFB1YmxpY2F0aW9ucyAgICAgICAg4pyFICAgIAotIFNlYXJjaCAgICAgICAgICAgICAg4pyFCi0gRG9jdW1lbnQgTGlzdHMgICAgICDinIUKLSBEb2N1bWVudCBDYXRlZ29yaWVzIOKchQotIE1lZGlhIExpYnJhcnkgICAgICAg4pyFCi0gSW1wb3J0cyAgICAgICAgICAgICDinIUKLSBTaXRlbWFwcyAgICAgICAgICAgIOKchQotIE1lbnVzICAgICAgICAgICAgICAg4pyFCi0gUm91dGluZyAgICAgICAgICAgICDinIUKLSBBZGQgRGVsaXZlcnkgU3RhdHVzIOKchQotIEhlYWx0aCAgICAgICAgICAgICAg4pyFCgoKIyMgVE9ET3MgYW5kIGZ1dHVyZSBpZGVhcwotIGFkZCBhbGwgdGhlIFB1YmxpYyBBUEkgZW5kcG9pbnRzIGZyb20gb3VyIGRvY3Mg4pyFCi0gbWFrZSBhdmFpbGFibGUgdGhlIE9BUyBwdWJsaWNseSDinIUKLSBlbWJlZGQgdGhlIFN3YWdnZXIgVUkgaW4gb3VyIGRvY3MKLSBzdXBwb3J0IHRvIGV4dGVuZCBkb3duc3RyZWFtIHdpdGggZG93bnN0cmVhbSBkZWNsYXJhdGlvbgotIGdlbmVyYXRlIHRoZSBzcGVjIGJ5IHRoZSBzZXJ2ZXIK readmeEtag: '"b84dc2e5654effb7f8db83e254ca2257cbb122b1"' readmeLastModified: Thu, 18 Jan 2024 16:02:34 GMT repositoryId: 537367140 description: >- Moved to https://docs.livingdocs.io/openapi.json. OpenAPI (Swagger) spec for Livingdocs Public API created: '2022-09-16T08:16:19Z' updated: '2025-03-13T23:32:29Z' language: null archived: true stars: 0 watchers: 5 forks: 2 owner: livingdocsIO logo: https://avatars.githubusercontent.com/u/3775168?v=4 repoEtag: '"14d9558e9d67cb713c5983f897ab3c3f3ff3fbaf93bebf2792070d590557276b"' repoLastModified: Thu, 13 Mar 2025 23:32:29 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/brokenprogrammer/mswg-gen v3: true id: 299afd28415cb2ebe143e6f0e0b5f3c8 repositoryMetadata: base64Readme: >- IyBtc3dnLWdlbgpDdXN0b20gT3BlbkFQSSBnZW5lcmF0b3IgdGhhdCBpcyB1c2VkIHRvIGdlbmVyYXRlIHN3YWdnZXIgZG9jdW1lbnRhdGlvbiB1c2luZyBjb21tZW50cy4KClRoZSBwcm9qZWN0IGN1cnJlbnRseSBoYXMgc3VwcG9ydCBmb3IgQyAmIEdvIGxhbmd1YWdlIGJ1dCBjYW4gdGVjaG5pY2FsbHkgc3VwcG9ydCBhbnkgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgCnRoYXQgbWFrZXMgdXNlIG9mIEMgc3R5bGUgY29tbWVudHMuIFNvbWUgcGFyc2luZyBoYXMgdG8gYmUgYWRkZWQgaG93ZXZlci4KClRoZSBnb2FsIG9mIHRoaXMgcHJvamVjdCBpcyB0byBoYXZlIGEgZmFzdCBzd2FnZ2VyIGdlbmVyYXRvciB0aGF0IGlzIGV4Y2x1ZGVkIGZyb20gdGhlIHByb2plY3QgdGhhdCBjYW4gZWFzaWx5IGJlIGludGVncmF0ZWQKaW50byBhbnkgYnVpbGQgcGlwZWxpbmUuCgojIyBVc2FnZQoKRmlyc3QgeW91IG5lZWQgdG8gY3JlYXRlIGEgY29uZmlnLmluaSBmaWxlIHdpdGhpbiB5b3VyIHByb2plY3QgZGlyZWN0b3J5LiBBbiBleGFtcGxlIGNvbmZpZ3VyYXRpb24gbG9va3MgbGlrZSB0aGUgZm9sbG93aW5nOgoKYGBgaW5pCjsgVGhpcyBpcyBhIGNvbW1lbnQKW21zd2dlbl0KdGl0bGUgPSBTYW1wbGUKIyBUaGlzIGlzIGFsc28gYSBjb21tZW50CmRlc2NyaXB0aW9uID0gVGhpcyBpcyBhIHNhbXBsZSBhcHBsaWNhdGlvbgp0ZXJtc29mc2VydmljZSA9IGh0dHBzOi8vZ29vZ2xlLnNlCgpbbXN3Z2VuLmNvbnRhY3RdCm5hbWUgPSBTdXBwb3J0CnVybCA9IGh0dHBzOi8vZ29vZ2xlLnNlCmVtYWlsID0gc3VwcG9ydEBnb29nbGUuc2UKClttc3dnZW4ubGljZW5zZV0KbmFtZSA9IE1JVAp1cmwgPSBodHRwczovL2dvb2dsZS5zZQoKW21zd2dlbi52ZXJzaW9uXQp2ZXJzaW9uPSB2MQpgYGAKCkV4cGxhbmF0aW9uIGZvciB0aGUgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYXJlIGV4cGxhaW5lZCBpbiB0aGUgZm9sbG93aW5nIHRhYmxlLgp8IENvbmZpZ3VyYXRpb24gfCBEZXNjcmlwdGlvbiAgIHwgRXhhbXBsZSAgICAgICB8CnwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHwKfCB0aXRsZSAgfCBUaGUgdGl0bGUgb2YgeW91ciBhcHBsaWNhdGlvbi4gVGhpcyB3aWxsIGJlIGRpc3BsYXllZCBvbiB5b3VyIHN3YWdnZXIgcGFnZS4gfCBNeSBBcHBsbGljYXRpb24gfAp8IGRlc2NyaXB0aW9uICB8IERlc2NyaXB0aW9uIG9mIHlvdXIgYXBwbGljYXRpb24uIFdpbGwgYmUgZGlzcGxheWVkIG9uIHlvdXIgc3dhZ2dlciBwYWdlLiAgfCBUaGlzIGlzIGEgc2FtcGxlIGFwcGxpY2F0aW9uIHwKfCB0ZXJtc29mc2VydmljZSAgfCBBIGxpbmsgdG8gdGhlIHRlcm1zIG9mIHNlcnZpY2UgZm9yIHlvdXIgQVBJLi4gIHwgaHR0cHM6Ly9leGFtcGxlLmNvbSB8CnwgY29udGFjdC5uYW1lICB8IERpc3BsYXkgbmFtZSBmb3IgeW91ciBjb250YWN0LiAgfCBTdXBwb3J0IHwKfCBjb250YWN0LnVybCAgfCBDb250YWN0IFVSTC4uICB8IGh0dHBzOi8vZXhhbXBsZS5jb20gfAp8IGNvbnRhY3QuZW1haWwgIHwgQ29udGFjdCBlbWFpbC4gIHwgc3VwcG9ydEBleGFtcGxlLmNvbSB8CnwgbGljZW5zZS5uYW1lICB8IE5hbWUgb2YgdGhlIGxpY2Vuc2UgZm9yIHlvdXIgQVBJLiAgfCBNSVQgfAp8IGxpY2Vuc2UudXJsICB8IFVSTCB0byBsaWNlbnNlIG9mIHlvdXIgQVBJLiAgfCBodHRwczovL2V4YW1wbGUuY29tL2xpY2Vuc2UgfAp8IHZlcnNpb24udmVyc2lvbiB8IFZlcnNpb24gb2YgeW91ciBBUEkuIHwgdjEgfAoKQWZ0ZXIgeW91IGhhdmUgc2V0IHVwIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlIHlvdSBjYW4gYnVpbGQgdGhlIGFwcGxpY2F0aW9uIGJ5IGVudGVyaW5nIHRoZSBgc3JjYCBkaXJlY3RvcnkgYW5kIHJ1biBgbWFrZWAuCgpPbmNlIGRvbmUgeW91IHNob3VsZCBoYXZlIGFjY2VzcyB0byB0aGUgZXhlY3V0YWJsZSBgbXN3Z19nZW5gIHRoYXQgeW91IGNhbiBwbGFjZSB3aGVyZSB5b3Ugd2FudCBpdC4KCkZpbmFsbHkgc29tZSBtb2RpZmljYXRpb24gaXMgbmVlZGVkIGluIHRoZSBjb2RlIG9mIHlvdXIgYXBwbGljYXRpb24uIG1zd2dfZ2VuIHVzZXMgdHdvIHR5cGVzIG9mIGNvbW1lbnQgdG8gc3BlY2lmeSB0d28gZGlmZmVyZW50IEFQSSB0eXBlcyByb3V0ZXMgYW5kIHJvdXRlIHR5cGVzLgoKIyMjIFJvdXRlcwoKQSBuZXcgcm91dGUgaXMgc3BlY2lmaWVkIGJ5IHdyaXRpbmcgYSBjb21tZW50IGluIHlvdXIgY29kZSB3aXRoIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgpgYGBDCi8vIEBSb3V0ZShyb3V0ZSwgbWV0aG9kLCByZXR1cm5fdHlwZSkKYGBgCgpBbiBleGFtcGxlIHdvdWxkIGJlCgpgYGBDCi8vIEBSb3V0ZSgvYXBpL2xvZ2luLCBwb3N0LCB1c2VyX29iamVjdCkKYGBgCgpTb21lIHJvdXRlcyBkbyBub3QgcmV0dXJuIGFueSBqc29uIG9iamVjdHMgaGVuY2UgdGhlIGByZXR1cm5fdHlwZWAgY2FuIGFsc28gYmUgZW1pdHRlZWQgbGlrZSBzbzoKCmBgYEMKLy8gQFJvdXRlKC9hcGkvcmVnaXN0ZXIsIHBvc3QpCmBgYAoKIyMjIFJvdXRlIFR5cGVzCgpSb3V0ZSB0eXBlcyBhcmUgYWRkZWQgYnkgYW5ub3RhdGluZyB5b3VyIHN0cnVjdHVyZXMgdXNpbmcgdGhlIGBAUm91dGVUeXBlYCBjb21tYW5kLgpUaGlzIGFsbG93cyBtc3dnX2dlbiB0byBhZGQgdGhlIHR5cGUgdG8gdGhlIGxpc3Qgb2Yga25vd24gYHJldHVybl90eXBlc2AgZm9yIHJvdXRlcyBpbiBvcmRlciB0byBnZW5lcmF0ZSBqc29uIHdpdGhpbiBzd2FnZ2VyLgoKRXhhbXBsZToKYGBgQwovLyBAUm91dGVUeXBlCnR5cGVkZWYgc3RydWN0IHsKICAgIHVfaW50MzJfdCBzdGF0ZVs1XTsKICAgIHVfaW50NjRfdCBjb3VudDsKICAgIHVfaW50OF90IGJ1ZmZlcltTSEExX0JMT0NLX0xFTkdUSF07Cn0gU0hBMV9DVFg7CmBgYAoKIyMjIEludGVncmF0aW5nIGludG8geW91ciBwcm9qZWN0CgpUaGUgb3V0cHV0IG9mIG1zd2dfZ2VuIGNhbiBlYXNpbHkgYmUgb3V0cHV0IGluIGEgZmlsZSBsaWtlIHNvOgpgYGBiYXNoCi4vbXN3Z19nZW4gPiBleGFtcGxlLnR4dApgYGAKClRoZSBnZW5lcmF0ZWQgb3V0cHV0IGNhbiB0aGVuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgc3RhdGljIHN3YWdnZXIgc2l0ZSBwcm92aWRlZCAKd2l0aGluIHRoaXMgcmVwb3NpdG9yeTogPGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpPgoKVGhpcyBpcyBlYXN5IHRvIHNldCB1cCBieSBkb3dubG9hZGluZyB0aGUgbGF0ZXN0IHJlbGVhc2UgYW5kIHVzaW5nIHRoZSBzdGF0aWMgSFRNTC9KUy9DU1Mgd2l0aGluIHRoZSBkb3dubG9hZGVkIGAvZGlzdGAgZm9sZGVyLgoKIyMgRGlzY2xhaW1lcgoKVGhpcyBhcHBsaWNhdGlvbiB3YXMgd3JpdHRlbiBpbiBhIHZlcnkgc2hvcnQgZHVyYXRpb24gYW5kIGEgbG90IG9mIHNob3J0Y3V0cyB3YXMgdGFrZW4uIElmIHlvdSBmaW5kIGJ1Z3MgcGxlYXNlIGZpbGUgYW4gaXNzdWUgb3IgYSBwdWxsIHJlcXVlc3QuIAoKIyBMaWNlbnNlCgpNSVQgTGljZW5zZQoKQ29weXJpZ2h0IChjKSAyMDIyIE9za2FyIE1lbmRlbAoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K readmeEtag: '"d255a8297272e5e3e5fe8a8c6069408b59852474"' readmeLastModified: Sun, 26 Jun 2022 19:51:25 GMT repositoryId: 507563615 description: >- Custom OpenAPI generator that is used to generate swagger documentation using comments. created: '2022-06-26T12:07:17Z' updated: '2022-06-26T12:39:07Z' language: C archived: false stars: 0 watchers: 1 forks: 0 owner: brokenprogrammer logo: https://avatars.githubusercontent.com/u/16289144?v=4 license: MIT repoEtag: '"d4ef2130acc593b9e82f84d01b11b94e41d416c4f2c53bf04e09d41f5f8aa970"' repoLastModified: Sun, 26 Jun 2022 12:39:07 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/codessintheclassroom/api-reference-solution v3: true repositoryMetadata: repositoryId: 179300089 description: >- A specification for the API used to provide functionality for the animal shelter's web frontend created: '2019-04-03T13:50:20Z' updated: '2019-05-06T09:53:48Z' language: HTML archived: false stars: 0 watchers: 2 forks: 0 owner: codessintheclassroom logo: https://avatars.githubusercontent.com/u/49059753?v=4 repoEtag: '"e0a72a27ed4e18aae3617084186e3e5939dcd04e5aa2b1d59a2de541ed89b16e"' repoLastModified: Mon, 06 May 2019 09:53:48 GMT foundInMaster: true id: 81ff3479a8a482ef3a03bf6af4fb844c - source: openapi3 tags repository: https://github.com/nktks/go-oapi-gen v3: true id: c2a2af59c5cc5e67da902348ba3b5b81 repositoryMetadata: repositoryId: 234057661 description: code generator from openapi3 and go text/template created: '2020-01-15T10:39:27Z' updated: '2022-02-04T05:05:25Z' language: Smarty archived: false stars: 0 watchers: 1 forks: 0 owner: nktks logo: https://avatars.githubusercontent.com/u/7553415?v=4 repoEtag: '"fc05a950eef469f4f0f3384e1d79ad5ac798c875de8e5d4778615de32a78effe"' repoLastModified: Fri, 04 Feb 2022 05:05:25 GMT foundInMaster: true oldLocations: - https://github.com/nakatamixi/go-oapi-gen - source: openapi3 tags repository: https://github.com/silwathge/microservices v3: true repositoryMetadata: base64Readme: >- IyBBUEkgUG9ydGFsOiBTYW1wbGUgQVBJIEltcGxlbWVudGF0aW9uIChGb3IgT3BlbkFQSSBWMykKCiMjIFNhbXBsZSBTb2x1dGlvbiBpcyBhdmFpbGFibGUgb24gQVdTIChFQzIpIGFzIGRvY2tlciBjb250YWluZXJzCgoKQXBwOiBnbG9iYWwtYXBpLW1hcmtldHBsYWNlLWFwcAoKREI6IGFwaS1wb3N0Z3JlcwoKTmV0d29yazogZ2xvYmFsLWFwaS1tYXJrZXRwbGFjZS1hcHAtbmV0d29yayhicmlkZSkKClZvbHVtZTogcG9zdGdyZXMtZGF0YWJhc2UtZGF0YS12b2x1bWUKCgojIyBTZXJ2ZXIgVVJMIGFuZCBQb3J0CgpodHRwOi8vZWMyLTEzLTIyOS02MC0yMDEuYXAtc291dGhlYXN0LTEuY29tcHV0ZS5hbWF6b25hd3MuY29tOjgwODAvCgoKIyMgUG9zdG1hbiBTY3JpcHQgCgp3aXRoIG90aGVyIGZpbGVzIHVzZWQgZm9yIHVwbG9hZGVkaW5nIHdpbGwgYmUgc2VudCBzZXBhcmF0ZWx5IHZpYSBlbWFpbC4gCgpUaGUgemlwIGZpbGUg4oCcUG9zdG1hblNjcmlwdEFuZEZpbGVzVG9VcGxvYWQuemlw4oCdIHdpbGwgYWxzbyBhdmFpbGFibGUgd2l0aCBzb3VyY2UgY29kZSBpbiB0aGUgR2l0SHViIHJlcG8KCgogMS4gVXNlIGVudmlyb25tZW50IHZhcmlhYmxlIArigJxob3N04oCdICB3aXRoIHZhbHVlIGVjMi0xMy0yMjktNjAtMjAxLmFwLXNvdXRoZWFzdC0xLmNvbXB1dGUuYW1hem9uYXdzLmNvbQoKMi4gUGxhY2Ugb3RoZXIgZmlsZXMgaW4gdGhlIFBvc3RtYW4gd29ya2luZyBkaXJlY3RvcnkKCjMuIERlZmF1bHQgdXNlciBpbiBkYiAKCgkgVXNlciA6IHVzZXJuYW1lCgkgCgkgUGFzc3dvcmQ6IHBhc3N3b3JkCgoKCgoKIyMgU291cmNlIGNvZGUgaXMgYXZhaWxhYmxlIG9uIEdpdEh1YiBhcyBhIHB1YmxpYyByZXBvIDoKCmh0dHBzOi8vZ2l0aHViLmNvbS9zaWx3YXRoZ2UvMTAxLWRpZ2l0YWwtY29kaW5nLWNoYWxsZW5nZQoKCgojIyBEb2NrZXIgaW1hZ2UgaXMgYXZhaWxhYmxlIG9uIERvY2tlSHViIDp1c2UgdGhlIG9uZSB3aXRoIGhpZ2hlc3QgdGFnCgpodHRwczovL2h1Yi5kb2NrZXIuY29tL3JlcG9zaXRvcnkvZG9ja2VyL2thcGlsYXMvZ2xvYmFsLWFwaS1tYXJrZXRwbGFjZS1hcHAKCgprYXBpbGFzL2dsb2JhbC1hcGktbWFya2V0cGxhY2UtYXBwOjAuMC4zLVNOQVBTSE9UCgoKCiMjIERvY2tlciBDb21wb3NlIEZpbGUKSXMgYXZhaWxhYmxlIHdpdGggc291cmNlIGNvZGUgaW4gdGhlIHJlcG8uCgoKIyMjIFRvIGRlcGxveSBmcm9tIGltYWdlcyBkaXJlY3RseToKCkNhbiBiZSB1c2VkIGFzIGl0IGlzIHRvIGRlcGxveSBzZXJ2aWNlIHdpdGggZGIgdG8gZG9ja2VyCgoKIyMjIFRvIGJ1aWxkIGltYWdlOgpDb21tZW50IG91dCBpbWFnZSBhbmQgdW5jb21tZW50IGFsbCB0aHJlZSBsaW5lcyB3aGljaCBpcyBjb21tZW50ZWQgb3V0IGluIHRoZSBjdXJyZW50IGZpbGUKRG8gIG12biBjbGVhbiBwYWNrYWdlCgpUaGVuIHJ1biBkb2NrZXItY29tcG9zZSB1cCAtIG5ldyBpbWFnZSB3aWxsIGJlIGNyZWF0ZWQgYW5kIHNlcnZpY2VzIHdpbGwgYmUgZGVwbG95ZWQuCgoKIyMgU2VydmVyIFVSTCBhbmQgUG9ydApodHRwOi8vZWMyLTEzLTIyOS02MC0yMDEuYXAtc291dGhlYXN0LTEuY29tcHV0ZS5hbWF6b25hd3MuY29tOjgwODAvCgoKIyMgU3dhZ2dlciBBUEkgRG9jIDoKaHR0cDovL2VjMi0xMy0yMjktNjAtMjAxLmFwLXNvdXRoZWFzdC0xLmNvbXB1dGUuYW1hem9uYXdzLmNvbTo4MDgwL3YyL2FwaS1kb2NzCgoKIyMgU3dhZ2dlciBVSSA6Cmh0dHA6Ly9lYzItMTMtMjI5LTYwLTIwMS5hcC1zb3V0aGVhc3QtMS5jb21wdXRlLmFtYXpvbmF3cy5jb206ODA4MC9zd2FnZ2VyLXVpLmh0bWwKCgojIyBBY3R1YXRvciAod2l0aCBkZWZhdWx0IGV4cG9zZWQgZW5kcG9pbnRzKSAgIDoKCmh0dHA6Ly9lYzItMTMtMjI5LTYwLTIwMS5hcC1zb3V0aGVhc3QtMS5jb21wdXRlLmFtYXpvbmF3cy5jb206ODA4MC9hY3R1YXRvcgoKCgoKCgoK readmeEtag: '"ed0bea2f80032d89d3b254886f54902b865b976f"' readmeLastModified: Sun, 12 Jul 2020 05:21:56 GMT repositoryId: 278100638 description: >- This has a Spring boot REST API built to upload Swagger API Documents as Json to web service created: '2020-07-08T13:44:12Z' updated: '2020-07-13T23:04:36Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: silwathge logo: https://avatars.githubusercontent.com/u/68016031?v=4 repoEtag: '"aa48026064f3086eb906616dfba305f363d5d8a5dd760b16771588b582c65841"' repoLastModified: Mon, 13 Jul 2020 23:04:36 GMT foundInMaster: true category: Server Implementations id: f4f5e6d9d29f098aaa1f521167659ce5 - source: openapi3 tags repository: https://github.com/jimleuk/uptimerobot-swagger v3: true repositoryMetadata: base64Readme: >- IyBVcHRpbWVyb2JvdC1zd2FnZ2VyCgpUaGlzIHJlcG8gY29udGFpbnMgYW4gdW5vZmZpY2lhbCBzd2FnZ2VyIGRvY3VtZW50IG9mIHRoZSBVcHRpbWVSb2JvdCBBUEkgdjIuIEl0IGlzIHdyaXR0ZW4gdG8gdGhlIFtPcGVuQXBpMyBzcGVjXShbaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9hYm91dC9dKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYWJvdXQvKSkgYW5kIHRlc3RlZCB0byByZW5kZXIgY29ycmVjdGx5IGluIFtzd2FnZ2VyLmlvIGVkaXRvcl0oW2h0dHBzOi8vZWRpdG9yLnN3YWdnZXIuaW8vXShodHRwczovL2VkaXRvci5zd2FnZ2VyLmlvLykpLgoKKipOb3RlKio6IFRoaXMgaXMgbm90IGEgMTAwJSByZXByZXNlbnRhdGlvbiBvZiB0aGUgQVBJIFNwZWMgYW5kIHVwZGF0ZXMgYXJlIGJlc3QgZWZmb3J0LiBQbGVhc2Ugc2VlIEtOT1dOX0lTU1VFUy4gUGxlYXNlIHJlZmVyIHRvIFtodHRwczovL3VwdGltZXJvYm90LmNvbS9hcGldKGh0dHBzOi8vdXB0aW1lcm9ib3QuY29tL2FwaSkgZm9yIHRoZSBvZmZpY2lhbCBBUEkgZG9jdW1lbnRhdGlvbi4KCioqTm90ZSoqOiBUaGlzIGRvY3VtZW50IGlzIG5vdCBhZmZsaWF0ZWQgd2l0aCBVcHRpbWUgUm9ib3QgU2VydmljZSBQcm92aWRlciBMdGQuIElzc3VlcyBhbmQvb3Igc3VwcG9ydCBzaG91bGQgcmVsYXRpbmcgdG8gdGhpcyBsaWJyYXJ5IGJlIGRpcmVjdGVkIHRvIHRoZSBwcm9qZWN0J3MgW2lzc3VlIHRyYWNrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9qaW1sZXVrL3VwdGltZXJvYm90LXN3YWdnZXIvaXNzdWVzKS4KCiMjIFVzYWdlCgpCZXN0IHZpZXdlZCBpbiBTd2FnZ2VyIFVJIChodHRwczovL3N3YWdnZXIuaW8vdG9vbHMvc3dhZ2dlci11aS8pLiBZb3Ugc2hvdWxkIGFsc28gYmUgYWJsZSB0byBpbXBvcnQgdGhpcyBkb2N1bWVudCB3aGVyZSBvcGVuQVBJMyBzcGVjIGlzIHN1cHBvcnRlZC4KCiMjIFJlbGF0ZWQKCiogW09mZmljaWFsIFVwdGltZXJvYm90IEFQSSBkb2N1bWVudGF0aW9uXShodHRwczovL3VwdGltZXJvYm90LmNvbS9hcGkpCiogW1Vub2ZmaWNpYWwgVXB0aW1lcm9ib3QgY2xpZW50IGZvciBub2RlL2Jyb3dzZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9qaW1sZXVrL3VwdGltZXJvYm90LWpzKQoqIFtVbm9mZmljaWFsIFVwdGltZXJvYm90IEFQSSB0eXBlc2NyaXB0IHR5cGUgZGVmaW50aW9ucyBvbmx5XShodHRwczovL2dpdGh1Yi5jb20vamltbGV1ay91cHRpbWVyb2JvdC10eXBlcykKCiMjIExJQ0VOQ0UKCk1JVA== readmeEtag: '"c7d2980456ae8724fb1e65d8372b55823e32003b"' readmeLastModified: Mon, 06 Jan 2020 23:10:28 GMT repositoryId: 229309997 description: Unofficial swagger 3.0 documentation for the UptimeRobot.com API v2 spec created: '2019-12-20T17:40:36Z' updated: '2020-01-06T23:10:47Z' language: null archived: false stars: 0 watchers: 1 forks: 1 owner: jimleuk logo: https://avatars.githubusercontent.com/u/373596?v=4 license: MIT repoEtag: '"d871d94715c3a744b44e824cd9bdfbdbd5811ae5ddad30a604088dd6ba2666d0"' repoLastModified: Mon, 06 Jan 2020 23:10:47 GMT foundInMaster: true category: SDK id: ecc7a61b63256567835231c06282540b - source: openapi3 tags repository: https://github.com/marcbru107/openapi3-request-finder v3: true repositoryMetadata: base64Readme: >- IyBPcGVuYXBpMy1yZXF1ZXN0LWZpbmRlcgoKIyMjIyMjIE9ubHkgdGVzdGV0IGZvciBvcGVuYXBpOiAzLjAuMQoKIyMgV2h5OgoKIyMjIyBIZWxwcyB5b3UgdG8gZ2V0IHRoZSByZXF1ZXN0IG9iamVjdHMgZnJvbSBhIG9wZW5hcGktc3dhZ2dlci1maWxlICAgCgoKVXNlIGRlLmJydWNrbS5vcGVuYXBpcmVxdWVzdGZpbmRlci5PcGVuQXBpUmVxdWVzdEZpbmRlcjoKLSBwdWJsaWMgSGFzaE1hcDxTdHJpbmcsIFJlcXVlc3RzRnJvbVlhbWw+IGdldFJlcXVlc3RzTWFwKGZpbmFsIFN0cmluZyByZXF1ZXN0VHlwZSkKICAgICAqIFBhcnNlIHRoZSBvcGVuIGFwaSBpbnB1dCBmaWxlIGZvciB0aGUgcmVxdWVzdGVkIHJlcXVlc3QtdHlwZQogICAgICogQHBhcmFtIHJlcXVlc3RUeXBlIC0+IGpzb24scHJvdG9idWYsLi4KICAgICAqIEByZXR1cm4gTWFwIHdpdGggdGhlIHVybCBhcyBrZXkgYW5kIHRoZSByZXF1ZXN0IGFzIHZhbHVlIC0+IGluY2x1ZGluZyBvbmx5IGVudHJpZXMgZnJvbSB0eXAgcmVxdWVzdFR5cGUKICAgIAojIyBEZXBlbmRlbmNpZXM6CiAgICAtIG9yZy55YW1sLnNuYWtleWFtbAogICAgLSBvcmcuanVuaXQuanVwaXRlci5hcGkKICAgIC0gb3JnLnNsZjRqLkxvZ2dlcgogICAgLSBjb20uZ29vZ2xlLnByb3RvYnVmOnByb3RvYnVmLWphdmEKICAgIC0gY29tLmdvb2dsZWNvZGUucHJvdG9idWYtamF2YS1mb3JtYXQK readmeEtag: '"b4c19878a0177ddd210eb7bd56ac32126983ed4c"' readmeLastModified: Mon, 04 May 2020 21:22:59 GMT repositoryId: 260700799 description: null created: '2020-05-02T14:10:17Z' updated: '2020-05-04T21:23:02Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: MarcBru107 logo: https://avatars.githubusercontent.com/u/25484756?v=4 license: Apache-2.0 repoEtag: '"316196408decae4bb5cfa569b1f96df164fa98d684593c31122c3d27066568ad"' repoLastModified: Mon, 04 May 2020 21:23:02 GMT foundInMaster: true category: - Converters - Parsers id: 9f431e17c0f626c479ef790bc88ca437 - source: openapi3 tags repository: https://github.com/mariusconjeaud/nodejs-az-functions-api v3: true repositoryMetadata: base64Readme: >- IyBSZXF1aXJlbWVudHMKWW91IG5lZWQgdG8gaGF2ZSBpbnN0YWxsZWQgOgoqIE5vZGUuanMgdmVyc2lvbiAxMiBMVFMgZnJvbSBbaGVyZV0oaHR0cHM6Ly9ub2RlanMub3JnL2VuL2Rvd25sb2FkLykuCiogQXp1cmUgRnVuY3Rpb25zIENvcmUgVG9vbHMuIFRvIGluc3RhbGwgaXQsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kIDoKYGBgYmFzaApucG0gaW5zdGFsbCAtZyBhenVyZS1mdW5jdGlvbnMtY29yZS10b29scwpgYGAKCiMgU3RhcnQgQXp1cmUgRnVuY3Rpb25zCkF6dXJlIEZ1bmN0aW9ucyBDb3JlIFRvb2xzIGVuYWJsZXMgeW91IHRvIGV4ZWN1dGUgeW91ciBGdW5jdGlvbnMgcnVudGltZSBsb2NhbGx5LiBUbyBkbyBzbywgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgOgpgYGBiYXNoCmZ1bmMgc3RhcnQKYGBgCklmIGV2ZXJ5dGhpbmcgaXMgd29ya2luZyBwcm9wZXJseSwgeW91IHNob3VsZCBnZXQgdGhlIGZvbGxvd2luZyBDTEkgb3V0cHV0IDoKIVtDTEkgb3V0cHV0XShkb2NzL2Z1bmNfc3RhcnRfb3V0cHV0LnBuZyAiU3VjY2Vzc2Z1bCBDTEkgT3V0cHV0IikKVG8gdmVyaWZ5IHRoYXQgdGhlIEFQSSBpcyB3b3JraW5nIHByb3Blcmx5LCBnbyB0byB0aGUgZm9sbG93aW5nIFVSTCA6IDxodHRwOi8vbG9jYWxob3N0OjMwMDEvYXBpL2NhdHM+LgoKIyMgTm90ZSBvbiBwb3RlbnRpYWwgZXJyb3JzCkRlcGVuZGluZyBvbiB0aGUgY29uZmlndXJhdGlvbiBvZiB5b3VyIG1hY2hpbmUsIHlvdSBtaWdodCBuZWVkIHRvIGluc3RhbGwgdGhlIFsuTkVUIENvcmUgMi54IFNES10oaHR0cHM6Ly9kb3RuZXQubWljcm9zb2Z0LmNvbS9kb3dubG9hZCkuCgpUaGlzIGlzIGJlY2F1c2UgRnVuY3Rpb25zIGFyZSBidWlsdCBvbiB0b3Agb24gLk5FVCBDb3JlLiBXaGVuIHlvdSBzdGFydCB0aGUgRnVuY3Rpb25zIHJ1bnRpbWUsIGl0IHNwaW5zIHVwIGEgLk5FVCBDb3JlIHJ1bnRpbWUsIGluIHdoaWNoIHRoZSBkZXNpcmVkIHJ1bnRpbWUgb2YgeW91ciBmdW5jdGlvbnMgLSBOb2RlLmpzIGluIG91ciBjYXNlIC0gcnVucy4KCllvdSBub3JtYWxseSBkb24ndCBuZWVkIHRoaXMgd2l0aCB0aGlzIHByb2plY3QsIGFzIHdlIG1ha2UgdXNlIG9mIHRoZSBleHRlbnNpb25zIGJ1bmRsZS4gQnV0IGp1c3QgaW4gY2FzZSwgaGVyZSdzIGEgd2FybmluZy4uLgo= readmeEtag: '"0c8e8ebb75451d71452af6f766681493132d8373"' readmeLastModified: Mon, 30 Mar 2020 09:58:00 GMT repositoryId: 250509410 description: Template for Azure Functions API with Node.js runtime created: '2020-03-27T10:51:27Z' updated: '2020-03-30T09:58:42Z' language: HTML archived: false stars: 0 watchers: 0 forks: 0 owner: mariusconjeaud logo: https://avatars.githubusercontent.com/u/7679761?v=4 repoEtag: '"3064599f52e9066eaaf9fa2a24129f1ddf0485a7417cacacdc2f484d2e9f4f86"' repoLastModified: Mon, 30 Mar 2020 09:58:42 GMT foundInMaster: true category: - SDK - Server Implementations id: 6f2e7cf6c04a75b2dbea1729ba73de04 - source: openapi3 tags repository: https://github.com/uuf6429/oas-php v3: true repositoryMetadata: base64Readme: >- IyBPQVMtUEhQCgpbIVtNaW5pbXVtIFBIUCBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3BocC0lM0UlM0QlMjA3LjQtODg5MkJGLnN2ZyldKGh0dHBzOi8vcGhwLm5ldC8pClshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1NSVQtYmx1ZS5zdmcpXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdXVmNjQyOS9vYXMtcGhwL21hc3Rlci9MSUNFTlNFKQpbIVtQYWNrYWdpc3RdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L3YvdXVmNjQyOS9vYXMtcGhwLnN2ZyldKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy91dWY2NDI5L29hcy1waHApCgpPQVMtUEhQOiBQSFAgSW1wbGVtZW50YXRpb24gb2YgdGhlIE9wZW5BUEkgU3BlYy4KClRoaXMgbGlicmFyeSBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgW09wZW5BUEkgdjMgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMy4wLjMubWQpLgoKIyMgVXNhZ2UKClRoaXMgbGlicmFyeSBpcyBqdXN0IGEgYnVuY2ggb2YgdmFsdWUgb2JqZWN0cy4gVGhlIG1haW4gZW50cnkgcG9pbnQsIChhcyBpcyB0aGUgY2FzZSB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uKSwgaXMgdGhlICoqRG9jdW1lbnQqKiBjbGFzczoKCmBgYHBocAokZG9jdW1lbnQgPSBuZXcgXHV1ZjY0MjlcT3BlbkFQSVxTcGVjXERvY3VtZW50KCk7CiRwYXRoID0gbmV3IFx1dWY2NDI5XE9wZW5BUElcUGF0aCgpOwokZG9jdW1lbnQtPnBhdGhzLT5zZXQoJy9yZXNvdXJjZScsICRwYXRoKTsKYGBgCgojIyBSZW5kZXJpbmcKCklkZWFsbHksIGl0IHNob3VsZCBiZSByZW5kZXIgd2l0aCBhIFlBTUwgc2VyaWFsaXplciAoc3VjaCBhcyBbc3ltZm9ueSdzXShodHRwczovL3N5bWZvbnkuY29tL2RvYy9jdXJyZW50L2NvbXBvbmVudHMveWFtbC5odG1sKSkuClNpbmNlIFlBTUwgaXMgYSBzdXBlcnNldCBvZiBKU09OLCBvbmUgY2FuIGFsc28gZG86CmBgYHBocAokZG9jdW1lbnQgPSBuZXcgRG9jdW1lbnQoKTsKJGpzb24gPSBqc29uX2VuY29kZSgkZG9jdW1lbnQsIEpTT05fVEhST1dfT05fRVJST1IgfCBKU09OX1BSRVRUWV9QUklOVCk7CgovLyBzYXZlIHRvIGZpbGUKZmlsZV9wdXRfY29udGVudHMoJ29wZW5hcGkueWFtbCcsICRqc29uKTsKCi8vIG9yIHNlcnZlIGl0IG91dApoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC15YW1sJyk7CmVjaG8gJGpzb247CmBgYAoKIyMgV2h5PwpUaGlzIGxpYnJhcnkgaXNuJ3QgYmV0dGVyIHRoYW4gdGhlIG11bHRpdHVkZSBvZiBnZW5lcmF0b3JzIGFuZCB3aGF0bm90IG91dCB0aGVyZS4KVGhlIGlkZWEgaXMgdGhhdCBleGlzdGluZyBhbmQgbmV3IFBIUC1iYXNlZCB0b29scyB0aGF0IGhhbmRsZSBPcGVuQVBJIGNvdWxkL3Nob3VsZCB1c2UgdGhpcyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkIG9mIGhhdmluZyB0aGVpciBvd24gdmVyc2lvbiBvZiBPcGVuQVBJIHNwZWMuCg== readmeEtag: '"6c4738d5d4f114a6849a594aaf57cbd135c3d173"' readmeLastModified: Wed, 25 Mar 2020 19:21:33 GMT repositoryId: 250069225 description: OpenAPI Spec - PHP Implementation created: '2020-03-25T19:15:07Z' updated: '2020-03-25T19:21:55Z' language: PHP archived: false stars: 0 watchers: 1 forks: 0 owner: uuf6429 logo: https://avatars.githubusercontent.com/u/230049?v=4 license: MIT repoEtag: '"a9dc02017f8b5596282d855a48fc8dcdc5f3953bd7adb3198108dc70b3ffafb5"' repoLastModified: Wed, 25 Mar 2020 19:21:55 GMT foundInMaster: true category: Parsers id: 53c737c5d2078ddb652cc0002ca0d479 - name: Traefik Hub source: Tooling repository issues source_description: >- Traefik Hub is a Kubernetes-native API Management solution for publishing, securing, and managing APIs. Configuration is driven by Kubernetes CRDs, labels, and selectors for effective GitOps.- Repository: https://github.com/traefik/traefik-hub-helm-chart link: https://doc.traefik.io/traefik-hub v3_1: false v3: true v2: true sourceIssueMetadata: issueNumber: 82 author: immanuelfodor createdAt: '2023-08-29T14:38:31Z' updatedAt: '2023-09-01T11:59:16Z' url: https://github.com/OAI/Tooling/issues/82 status: closed id: c2281522c0f2ab5084ba47e41c47d3bb foundInMaster: true - source: https://openapi.tools/ name: Apimatic Transformer category: Converters language: SaaS source_description: >- Transform API Descriptions to and from RAML, API Blueprint, OAI v2/v3, WSDL, etc. link: https://apimatic.io/transformer v2: true v3: true v3_1: true foundInMaster: true id: 4386067b4dd5088f3ab21846cc5d73a9 - source: https://openapi.tools/ name: APIMatic Developer Experience Portal category: Documentation link: https://apimatic.io/developer-experience-portal language: SaaS source_description: >- Customizable developer portals packed with language specific documentation, client libraries, code samples, an API console and much more. v2: true v3: true v3_1: true foundInMaster: true id: d79a72cfc760351d8e6bb30f5f61a750 - source: https://openapi.tools/ name: APIMatic CodeGen category: SDK language: SaaS link: https://apimatic.io/code-generation-as-a-service source_description: >- Bring in your API description (OAI v2/v3, RAML, API Blueprint, WSDL, etc.) to generate fully functional SDKs in over 10 languages. v2: true v3: true v3_1: true foundInMaster: true id: dcbfbcc9cc800167a32a0c0a400f8e89 - source: openapi3 tags repository: https://github.com/aliakkas006/fitness-training-apps v3: true id: 0a2d905098aa9a2f8eb61189712ed9f8 repositoryMetadata: base64Readme: >- IyDwn4+L77iP4oCN4pmC77iPIEZpdG5lc3MgVHJhaW5pbmcgQXBwbGljYXRpb24KClshW0NvZGUgU3R5bGU6IFByZXR0aWVyXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NvZGVfc3R5bGUtcHJldHRpZXItZmY2OWI0LnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9wcmV0dGllci9wcmV0dGllcikKCiMjIPCfk4wgVGFibGUgb2YgQ29udGVudHMKLSBb8J+TliBPdmVydmlld10oIy1vdmVydmlldykKLSBb4pyoIEZlYXR1cmVzXSgjLWZlYXR1cmVzKQotIFvwn5ugIFRlY2hub2xvZ2llcyBVc2VkXSgjLXRlY2hub2xvZ2llcy11c2VkKQotIFvwn5OCIFByb2plY3QgU3RydWN0dXJlXSgjLXByb2plY3Qtc3RydWN0dXJlKQotIFvwn5qAIFNldHVwICYgSW5zdGFsbGF0aW9uXSgjLXNldHVwLS1pbnN0YWxsYXRpb24pCi0gW/Cfp6ogUnVubmluZyBUZXN0c10oIy1ydW5uaW5nLXRlc3RzKQotIFvwn5OaIFJlc291cmNlc10oIy1yZXNvdXJjZXMpCi0gW/CfpJ0gQ29udHJpYnV0aW5nXSgjLWNvbnRyaWJ1dGluZykKLSBb8J+TnCBMaWNlbnNlXSgjLWxpY2Vuc2UpCgotLS0KCiMjIPCfk5YgT3ZlcnZpZXcKVGhlICoqRml0bmVzcyBUcmFpbmluZyBBcHBsaWNhdGlvbioqIGlzIGEgcGxhdGZvcm0gdGhhdCBwcm92aWRlcyBwZXJzb25hbGl6ZWQgd29ya291dCBwbGFucywgdHJhY2tzIHVzZXIgcHJvZ3Jlc3MsIGFuZCBvZmZlcnMgdHJhaW5pbmcgdGlwcyB0byBoZWxwIGluZGl2aWR1YWxzIGFjaGlldmUgdGhlaXIgZml0bmVzcyBnb2Fscy4KCiMjIyDwn46vIEtleSBPYmplY3RpdmVzOgotIOKchSBFbmFibGUgdXNlcnMgdG8gY3JlYXRlIGN1c3RvbWl6ZWQgd29ya291dCBwbGFucy4KLSDinIUgUHJvdmlkZSB0cmFja2luZyBmZWF0dXJlcyBmb3IgcHJvZ3Jlc3MgbW9uaXRvcmluZy4KLSDinIUgQWxsb3cgdHJhaW5lcnMgdG8gYWRkIHRyYWluaW5nIHRpcHMgZm9yIGVhY2ggd29ya291dC4KLSDinIUgUmVxdWlyZSB1c2VyIGF1dGhlbnRpY2F0aW9uIGZvciBwZXJzb25hbGl6ZWQgZXhwZXJpZW5jZXMuCi0g4pyFIEVuYWJsZSBwcm9maWxlIGNyZWF0aW9uIHRvIHNldCBpbml0aWFsIGZpdG5lc3MgbGV2ZWxzIGFuZCBnb2Fscy4KCi0tLQoKIyMg4pyoIEZlYXR1cmVzCvCfmrQgUGVyc29uYWxpemVkIHdvcmtvdXQgcGxhbnMgIArwn5OKIFVzZXIgcHJvZ3Jlc3MgdHJhY2tpbmcgIArwn5KhIFRyYWluZXIgdGlwcyBmb3IgZXhlcmNpc2VzICAK8J+UkiBTZWN1cmUgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gIArwn5GkIFByb2ZpbGUgbWFuYWdlbWVudCB3aXRoIGZpdG5lc3MgZ29hbCBzZXR0aW5nICAK8J+MkCBSRVNUZnVsIEFQSSBhcmNoaXRlY3R1cmUgIAoKLS0tCgojIyDwn5ugIFRlY2hub2xvZ2llcyBVc2VkClRoZSBhcHBsaWNhdGlvbiBpcyBidWlsdCB1c2luZyBtb2Rlcm4gdGVjaG5vbG9naWVzIGFuZCBiZXN0IHByYWN0aWNlczoKCi0g4pqhICoqW05vZGUuanNdKGh0dHBzOi8vbm9kZWpzLm9yZy8pOioqIEphdmFTY3JpcHQgcnVudGltZSBmb3IgYmFja2VuZCBkZXZlbG9wbWVudC4KLSDwn5qAICoqW0V4cHJlc3MuanNdKGh0dHBzOi8vZXhwcmVzc2pzLmNvbS8pOioqIEZhc3QgYW5kIG1pbmltYWxpc3Qgd2ViIGZyYW1ld29yayBmb3IgTm9kZS5qcy4KLSDwn4+XICoqW1R5cGVTY3JpcHRdKGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy8pOioqIEVuaGFuY2VzIEphdmFTY3JpcHQgd2l0aCBzdGF0aWMgdHlwZXMuCi0g8J+XhCAqKltNb25nb0RCXShodHRwczovL3d3dy5tb25nb2RiLmNvbS8pOioqIE5vU1FMIGRhdGFiYXNlIGZvciBmbGV4aWJsZSBkYXRhIHN0b3JhZ2UuCi0g8J+UlyAqKltNb25nb29zZV0oaHR0cHM6Ly9tb25nb29zZWpzLmNvbS8pOioqIE9ETSBsaWJyYXJ5IGZvciBNb25nb0RCIGFuZCBOb2RlLmpzLgotIPCfkLMgKipbRG9ja2VyXShodHRwczovL3d3dy5kb2NrZXIuY29tLyk6KiogQ29udGFpbmVyaXphdGlvbiBmb3Igc2VhbWxlc3MgZGV2ZWxvcG1lbnQgYW5kIGRlcGxveW1lbnQuCi0g8J+nqiAqKltKZXN0XShodHRwczovL2plc3Rqcy5pby8pOioqIEphdmFTY3JpcHQgdGVzdGluZyBmcmFtZXdvcmsgZW5zdXJpbmcgY29kZSBxdWFsaXR5LgoKLS0tCgojIyDwn5OCIFByb2plY3QgU3RydWN0dXJlCmBgYApiYWNrZW5kLwrilJzilIDilIAgcGFja2FnZS5qc29uCuKUnOKUgOKUgCBkb2NzLyAgICAgICAgICAgICAgICAgIyDwn5OEIERvY3VtZW50YXRpb24gZmlsZXMK4pSc4pSA4pSAIHRlc3RzLyAgICAgICAgICAgICAgICAjIPCfp6ogVW5pdCAmIGludGVncmF0aW9uIHRlc3RzCuKUlOKUgOKUgCBzcmMvCiAgICDilJzilIDilIAgaW5kZXgudHMgICAgICAgICAgIyDwn5qAIEFwcGxpY2F0aW9uIGVudHJ5IHBvaW50CiAgICDilJzilIDilIAgYXBwLnRzICAgICAgICAgICAgIyDimpnvuI8gRXhwcmVzcyBhcHAgY29uZmlndXJhdGlvbgogICAg4pSc4pSA4pSAIG1pZGRsZXdhcmUvICAgICAgICMg8J+UkCBNaWRkbGV3YXJlIGZ1bmN0aW9ucwogICAg4pSCICAg4pSc4pSA4pSAIGF1dGhlbnRpY2F0ZS50cwogICAg4pSCICAg4pSc4pSA4pSAIGF1dGhvcml6ZS50cwogICAg4pSCICAg4pSc4pSA4pSAIG93bmVyc2hpcC50cwogICAg4pSCICAg4pSc4pSA4pSAIGluZGV4LnRzCiAgICDilJzilIDilIAgcm91dGVzLyAgICAgICAgICAgIyDwn4yNIEFQSSByb3V0ZSBoYW5kbGVycwogICAg4pSCICAg4pSc4pSA4pSAIGluZGV4LnRzCiAgICDilIIgICDilJzilIDilIAgcHVibGljLnRzCiAgICDilIIgICDilJzilIDilIAgcHJpdmF0ZS50cwogICAg4pSCICAg4pSc4pSA4pSAIGFkbWluLnRzCiAgICDilJzilIDilIAgYXBpLwogICAg4pSCICAg4pSU4pSA4pSAIHYxLwogICAg4pSCICAgICAgIOKUnOKUgOKUgCBhdXRoLwogICAg4pSCICAgICAgIOKUnOKUgOKUgCB3b3Jrb3V0cy8KICAgIOKUgiAgICAgICDilJzilIDilIAgcHJvZ3Jlc3MvCiAgICDilIIgICAgICAg4pSc4pSA4pSAIHByb2ZpbGUvCiAgICDilIIgICAgICAg4pSc4pSA4pSAIHVzZXIvCiAgICDilIIgICAgICAg4pSc4pSA4pSAIHRva2VuLwogICAg4pSc4pSA4pSAIGxpYi8gICAgICAgICAgICAgICMg8J+UpyBDb3JlIGJ1c2luZXNzIGxvZ2ljCiAgICDilJzilIDilIAgbW9kZWxzLyAgICAgICAgICAgIyDwn5eCIE1vbmdvb3NlIG1vZGVscwogICAg4pSc4pSA4pSAIHV0aWxzLyAgICAgICAgICAgICMg8J+UqCBVdGlsaXR5IGZ1bmN0aW9ucwpgYGAKCi0tLQoKIyMg8J+agCBTZXR1cCAmIEluc3RhbGxhdGlvbgojIyMgMe+4j+KDoyBDbG9uZSB0aGUgcmVwb3NpdG9yeQpgYGBiYXNoCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20veW91cnVzZXJuYW1lL0ZpdG5lc3MtVHJhaW5pbmctQXBwLmdpdApjZCBGaXRuZXNzLVRyYWluaW5nLUFwcApgYGAKCiMjIyAy77iP4oOjIEluc3RhbGwgZGVwZW5kZW5jaWVzCmBgYGJhc2gKeWFybiBpbnN0YWxsCmBgYAoKIyMjIDPvuI/ig6MgQ29uZmlndXJlIGVudmlyb25tZW50IHZhcmlhYmxlcwpDb3B5IGAuZW52LmV4YW1wbGVgIHRvIGAuZW52YCBhbmQgdXBkYXRlIHRoZSByZXF1aXJlZCB2YWx1ZXMuCgojIyMgNO+4j+KDoyBSdW4gdGhlIGFwcGxpY2F0aW9uIHVzaW5nIERvY2tlcgpgYGBiYXNoCmRvY2tlci1jb21wb3NlIHVwCmBgYAoKLS0tCgojIyDwn6eqIFJ1bm5pbmcgVGVzdHMKUnVuIHVuaXQgYW5kIGludGVncmF0aW9uIHRlc3RzIHVzaW5nIEplc3Q6CmBgYGJhc2gKeWFybiB0ZXN0CmBgYAoKLS0tCgojIyDwn5OaIFJlc291cmNlcwotIPCfk4QgKipbUHVibGljIEFQSSBSZXNlYXJjaCBEb2NzXShodHRwczovL2FsaS1ha2thcy5ub3Rpb24uc2l0ZS9SZXNlYXJjaC1vbi10aGUtcHVibGljLUFQSXMtb2YtVHdpdHRlci1HaXRIdWItYW5kLUdvb2dsZS0wNmY3ZTdmNzg4OTY0YzIzOTJlNWIyYmY3NDFiYWJlZT9wdnM9NCkqKgotIPCfk4QgKipbUkVTVGZ1bCBBUEkgRGVzaWduIERvY3VtZW50YXRpb25dKGh0dHBzOi8vYWxpLWFra2FzLm5vdGlvbi5zaXRlL1JFU1RmdWwtQVBJLURlc2lnbi1mb3ItRml0bmVzcy1UcmFpbmluZy1BcHBsaWNhdGlvbi0xMzYwN2QwNjRhYjM0M2RlYjE1OGU5ZDBmN2UxYzIwMj9wdnM9NCkqKgotIPCfjqUgKipbUHJvamVjdCBQcmVzZW50YXRpb25dKGh0dHBzOi8va3VhY2JkLW15LnNoYXJlcG9pbnQuY29tLzpwOi9nL3BlcnNvbmFsLzIwMDkzNF9rdV9hY19iZC9FWVFQX3ZYZjd1TlBwZXgtbkcxUjEzTUJ5ZmcxclpHMlpXYVlNOWdLQzg1dnhBP2U9VjYySmhRKSoqCgotLS0KCiMjIPCfpJ0gQ29udHJpYnV0aW5nCkNvbnRyaWJ1dGlvbnMgYXJlIHdlbGNvbWUhIElmIHlvdSdkIGxpa2UgdG8gY29udHJpYnV0ZSwgcGxlYXNlIGZvcmsgdGhlIHJlcG9zaXRvcnkgYW5kIHN1Ym1pdCBhIHB1bGwgcmVxdWVzdC4KCi0tLQoKIyMg8J+TnCBMaWNlbnNlClRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgW01JVCBMaWNlbnNlXShMSUNFTlNFKS4KCg== readmeEtag: '"8d5e8c702fe27ae7a4b4f25ed352ff0ce7fedaad"' readmeLastModified: Sat, 15 Feb 2025 04:56:35 GMT repositoryId: 650022785 description: >- The fitness training REST API application is a collection of public API endpoints that enables users to create, manage and interact with a single builder workout plan and track their progress over time created: '2023-06-06T07:01:34Z' updated: '2025-03-02T05:22:46Z' language: TypeScript archived: false stars: 1 watchers: 1 forks: 0 owner: aliakkas006 logo: https://avatars.githubusercontent.com/u/75372387?v=4 repoEtag: '"b3cdd6d1c064fc795bd603660e414394db0825eadb4f252b32bfa160b8c14ae2"' repoLastModified: Sun, 02 Mar 2025 05:22:46 GMT category: - Testing - Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/unjello/openapi-parser v3: true repositoryMetadata: base64Readme: >- aW1hZ2U6Omh0dHA6Ly91bm1haW50YWluZWQudGVjaC9iYWRnZS5zdmdbbGluaz1odHRwOi8vdW5tYWludGFpbmVkLnRlY2gvXQ0KDQo9IERFUFJFQ0FURUQNCg0KX29wZW5hcGktcGFyc2VyXyBpcyBubyBsb25nZXIgc3VwcG9ydGVkLCBwbGVhc2UgY29uc2lkZXIgdXNpbmcgaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItcGFyc2VyW3N3YWdnZXItcGFyc2VyXS4NCg== readmeEtag: '"5dc94a8d0e902f95a0e80e0d23c492f159b9f7f8"' readmeLastModified: Wed, 01 May 2019 08:49:54 GMT repositoryId: 128420085 description: DEPRECATED. Parser and validator for OpenAPI 3.0 created: '2018-04-06T16:37:59Z' updated: '2019-05-01T08:51:22Z' language: JavaScript archived: false stars: 0 watchers: 2 forks: 0 owner: unjello logo: https://avatars.githubusercontent.com/u/155669?v=4 license: CC0-1.0 repoEtag: '"b8b8b412a001f381e9625b8edc75a687f3077cd2b1b9dc46acfdf0b134fc7ec1"' repoLastModified: Wed, 01 May 2019 08:51:22 GMT foundInMaster: true category: Code Generators id: 4aae1a6e178eff3bcd50762bb078df14 - source: openapi3 tags repository: https://github.com/shavo007/greetings-doc v3: true repositoryMetadata: base64Readme: >- IyBHcmVldGluZ3MgT3BlbkFQSSBEZWZpbml0aW9uCgojIyBXb3JraW5nIG9uIHlvdXIgT3BlbkFQSSBEZWZpbml0aW9uCgojIyMgSW5zdGFsbAoKMS4gSW5zdGFsbCBbTm9kZSBKU10oaHR0cHM6Ly9ub2RlanMub3JnLykuCjIuIENsb25lIHRoaXMgcmVwbyBhbmQgcnVuIGBucG0gaW5zdGFsbGAgaW4gdGhlIHJlcG8gcm9vdC4KCiMjIyBVc2FnZQoKIyMjIyBgbnBtIHN0YXJ0YApTdGFydHMgdGhlIHJlZmVyZW5jZSBkb2NzIHByZXZpZXcgc2VydmVyLgoKIyMjIyBgbnBtIHJ1biBidWlsZGAKQnVuZGxlcyB0aGUgZGVmaW5pdGlvbiB0byB0aGUgZGlzdCBmb2xkZXIuCgojIyMjIGBucG0gdGVzdGAKVmFsaWRhdGVzIHRoZSBkZWZpbml0aW9uLgoKIyMgQ29udHJpYnV0aW9uIEd1aWRlCgpCZWxvdyBpcyBhIHNhbXBsZSBjb250cmlidXRpb24gZ3VpZGUuIFRoZSB0b29scwppbiB0aGUgcmVwb3NpdG9yeSBkb24ndCByZXN0cmljdCB5b3UgdG8gYW55CnNwZWNpZmljIHN0cnVjdHVyZS4gQWRqdXN0IHRoZSBjb250cmlidXRpb24gZ3VpZGUKdG8gbWF0Y2ggeW91ciBvd24gc3RydWN0dXJlLiBIb3dldmVyLCBpZiB5b3UKZG9uJ3QgaGF2ZSBhIHN0cnVjdHVyZSBpbiBtaW5kLCB0aGlzIGlzIGEKZ29vZCBwbGFjZSB0byBzdGFydC4KClVwZGF0ZSB0aGlzIGNvbnRyaWJ1dGlvbiBndWlkZSBpZiB5b3UKYWRqdXN0IHRoZSBmaWxlL2ZvbGRlciBvcmdhbml6YXRpb24uCgpUaGUgYC5yZWRvY2x5LnlhbWxgIGNvbnRyb2xzIHNldHRpbmdzIGZvciB2YXJpb3VzCnRvb2xzIGluY2x1ZGluZyB0aGUgbGludCB0b29sIGFuZCB0aGUgcmVmZXJlbmNlCmRvY3MgZW5naW5lLiAgT3BlbiBpdCB0byBmaW5kIGV4YW1wbGVzIGFuZApbcmVhZCB0aGUgZG9jc10oaHR0cHM6Ly9yZWRvYy5seS9kb2NzL2NsaS9jb25maWd1cmF0aW9uLykKZm9yIG1vcmUgaW5mb3JtYXRpb24uCgoKIyMjIFNjaGVtYXMKCiMjIyMgQWRkaW5nIFNjaGVtYXMKCjEuIE5hdmlnYXRlIHRvIHRoZSBgb3BlbmFwaS9jb21wb25lbnRzL3NjaGVtYXNgIGZvbGRlci4KMi4gQWRkIGEgZmlsZSBuYW1lZCBhcyB5b3Ugd2lzaCB0byBuYW1lIHRoZSBzY2hlbWEuCjMuIERlZmluZSB0aGUgc2NoZW1hLgo0LiBSZWZlciB0byB0aGUgc2NoZW1hIHVzaW5nIHRoZSBgJHJlZmAgKHNlZSBleGFtcGxlIGJlbG93KS4KCiMjIyMjIEV4YW1wbGUgU2NoZW1hClRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBzY2hlbWEgZXhhbXBsZToKYGBgeWFtbAp0eXBlOiBzdHJpbmcKZGVzY3JpcHRpb246IFRoZSByZXNvdXJjZSBJRC4gRGVmYXVsdHMgdG8gVVVJRCB2NAptYXhMZW5ndGg6IDUwCmV4YW1wbGU6IDRmNmNmMzV4LTJjNHktNDgzei1hMGE5LTE1ODYyMWY3N2EyMQpgYGAKVGhpcyBpcyBhIG1vcmUgY29tcGxleCBzY2hlbWEgZXhhbXBsZToKYGBgeWFtbAp0eXBlOiBvYmplY3QKcHJvcGVydGllczoKICBpZDoKICAgIGRlc2NyaXB0aW9uOiBUaGUgY3VzdG9tZXIgaWRlbnRpZmllciBzdHJpbmcKICAgIHJlYWRPbmx5OiB0cnVlCiAgICBhbGxPZjoKICAgICAgLSAkcmVmOiAuL1Jlc291cmNlSWQueWFtbAogIHdlYnNpdGVJZDoKICAgIGRlc2NyaXB0aW9uOiBUaGUgd2Vic2l0ZSdzIElECiAgICBhbGxPZjoKICAgICAgLSAkcmVmOiAuL1Jlc291cmNlSWQueWFtbAogIHBheW1lbnRUb2tlbjoKICAgIHR5cGU6IHN0cmluZwogICAgd3JpdGVPbmx5OiB0cnVlCiAgICBkZXNjcmlwdGlvbjogfAogICAgICBBIHdyaXRlLW9ubHkgcGF5bWVudCB0b2tlbjsgaWYgc3VwcGxpZWQsIGl0IHdpbGwgYmUgY29udmVydGVkIGludG8gYQogICAgICBwYXltZW50IGluc3RydW1lbnQgYW5kIGJlIHNldCBhcyB0aGUgYGRlZmF1bHRQYXltZW50SW5zdHJ1bWVudGAuIFRoZQogICAgICB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5IHdpbGwgb3ZlcnJpZGUgdGhlIGBkZWZhdWx0UGF5bWVudEluc3RydW1lbnRgCiAgICAgIGluIHRoZSBjYXNlIHRoYXQgYm90aCBhcmUgc3VwcGxpZWQuIFRoZSB0b2tlbiBtYXkgb25seSBiZSB1c2VkIG9uY2UKICAgICAgYmVmb3JlIGl0IGlzIGV4cGlyZWQuCiAgZGVmYXVsdFBheW1lbnRJbnN0cnVtZW50OgogICAgJHJlZjogLi9QYXltZW50SW5zdHJ1bWVudC55YW1sCiAgY3JlYXRlZFRpbWU6CiAgICBkZXNjcmlwdGlvbjogVGhlIGN1c3RvbWVyIGNyZWF0ZWQgdGltZQogICAgYWxsT2Y6CiAgICAgIC0gJHJlZjogLi9TZXJ2ZXJUaW1lc3RhbXAueWFtbAogIHVwZGF0ZWRUaW1lOgogICAgZGVzY3JpcHRpb246IFRoZSBjdXN0b21lciB1cGRhdGVkIHRpbWUKICAgIGFsbE9mOgogICAgICAtICRyZWY6IC4vU2VydmVyVGltZXN0YW1wLnlhbWwKICB0YWdzOgogICAgZGVzY3JpcHRpb246IEEgbGlzdCBvZiBjdXN0b21lcidzIHRhZ3MKICAgIHJlYWRPbmx5OiB0cnVlCiAgICB0eXBlOiBhcnJheQogICAgaXRlbXM6CiAgICAgICRyZWY6IC4vVGFncy9UYWcueWFtbAogIHJldmlzaW9uOgogICAgZGVzY3JpcHRpb246ID4KICAgICAgVGhlIG51bWJlciBvZiB0aW1lcyB0aGUgY3VzdG9tZXIgZGF0YSBoYXMgYmVlbiBtb2RpZmllZC4KCiAgICAgIFRoZSByZXZpc2lvbiBpcyB1c2VmdWwgd2hlbiBhbmFseXppbmcgd2ViaG9vayBkYXRhIHRvIGRldGVybWluZSBpZiB0aGUKICAgICAgY2hhbmdlIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGUgY3VycmVudCByZXByZXNlbnRhdGlvbi4KICAgIHR5cGU6IGludGVnZXIKICAgIHJlYWRPbmx5OiB0cnVlCiAgX2xpbmtzOgogICAgdHlwZTogYXJyYXkKICAgIGRlc2NyaXB0aW9uOiBUaGUgbGlua3MgcmVsYXRlZCB0byByZXNvdXJjZQogICAgcmVhZE9ubHk6IHRydWUKICAgIG1pbkl0ZW1zOiAzCiAgICBpdGVtczoKICAgICAgYW55T2Y6CiAgICAgICAgLSAkcmVmOiAuL0xpbmtzL1NlbGZMaW5rLnlhbWwKICAgICAgICAtICRyZWY6IC4vTGlua3MvTm90ZXNMaW5rLnlhbWwKICAgICAgICAtICRyZWY6IC4vTGlua3MvRGVmYXVsdFBheW1lbnRJbnN0cnVtZW50TGluay55YW1sCiAgICAgICAgLSAkcmVmOiAuL0xpbmtzL0xlYWRTb3VyY2VMaW5rLnlhbWwKICAgICAgICAtICRyZWY6IC4vTGlua3MvV2Vic2l0ZUxpbmsueWFtbAogIF9lbWJlZGRlZDoKICAgIHR5cGU6IGFycmF5CiAgICBkZXNjcmlwdGlvbjogPi0KICAgICAgQW55IGVtYmVkZGVkIG9iamVjdHMgYXZhaWxhYmxlIHRoYXQgYXJlIHJlcXVlc3RlZCBieSB0aGUgYGV4cGFuZGAKICAgICAgcXVlcnlzdHJpbmcgcGFyYW1ldGVyLgogICAgcmVhZE9ubHk6IHRydWUKICAgIG1pbkl0ZW1zOiAxCiAgICBpdGVtczoKICAgICAgYW55T2Y6CiAgICAgICAgLSAkcmVmOiAuL0VtYmVkcy9MZWFkU291cmNlRW1iZWQueWFtbAoKYGBgCgojIyMjIyBVc2luZyB0aGUgYCRyZWZgCgpOb3RpY2UgaW4gdGhlIGNvbXBsZXggZXhhbXBsZSBhYm92ZSB0aGUgc2NoZW1hIGRlZmluaXRpb24gaXRzZWxmIGhhcyBgJHJlZmAgbGlua3MgdG8gb3RoZXIgc2NoZW1hcyBkZWZpbmVkLgoKSGVyZSBpcyBhIHNtYWxsIGV4Y2VycHQgd2l0aCBhbiBleGFtcGxlOgoKYGBgeWFtbApkZWZhdWx0UGF5bWVudEluc3RydW1lbnQ6CiAgJHJlZjogLi9QYXltZW50SW5zdHJ1bWVudC55YW1sCmBgYAoKVGhlIHZhbHVlIG9mIHRoZSBgJHJlZmAgaXMgdGhlIHBhdGggdG8gdGhlIG90aGVyIHNjaGVtYSBkZWZpbml0aW9uLgoKWW91IG1heSB1c2UgYCRyZWZgcyB0byBjb21wb3NlIHNjaGVtYSBmcm9tIG90aGVyIGV4aXN0aW5nIHNjaGVtYSB0byBhdm9pZCBkdXBsaWNhdGlvbi4KCllvdSB3aWxsIHVzZSBgJHJlZmBzIHRvIHJlZmVyZW5jZSBzY2hlbWEgZnJvbSB5b3VyIHBhdGggZGVmaW5pdGlvbnMuCgojIyMjIEVkaXRpbmcgU2NoZW1hcwoKMS4gTmF2aWdhdGUgdG8gdGhlIGBvcGVuYXBpL2NvbXBvbmVudHMvc2NoZW1hc2AgZm9sZGVyLgoyLiBPcGVuIHRoZSBmaWxlIHlvdSB3aXNoIHRvIGVkaXQuCjMuIEVkaXQuCgojIyMgUGF0aHMKCiMjIyMgQWRkaW5nIGEgUGF0aAoKMS4gTmF2aWdhdGUgdG8gdGhlIGBvcGVuYXBpL3BhdGhzYCBmb2xkZXIuCjIuIEFkZCBhIG5ldyBZQU1MIGZpbGUgbmFtZWQgbGlrZSB5b3VyIFVSTCBlbmRwb2ludCBleGNlcHQgcmVwbGFjaW5nIGAvYCB3aXRoIGBAYCBhbmQgcHV0dGluZyBwYXRoIHBhcmFtZXRlcnMgaW50byBjdXJseSBicmFjZXMgbGlrZSBge2V4YW1wbGV9YC4KMy4gQWRkIHRoZSBwYXRoIGFuZCBhIHJlZiB0byBpdCBpbnNpZGUgb2YgeW91ciBgb3BlbmFwaS55YW1sYCBmaWxlIGluc2lkZSBvZiB0aGUgYG9wZW5hcGlgIGZvbGRlci4KCkV4YW1wbGUgYWRkaXRpb24gdG8gdGhlIGBvcGVuYXBpLnlhbWxgIGZpbGU6CmBgYHlhbWwKJy9jdXN0b21lcnMve2lkfSc6CiAgJHJlZjogJy4vcGF0aHMvY3VzdG9tZXJzQHtpZH0ueWFtbCcKYGBgCgpIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBZQU1MIGZpbGUgbmFtZWQgYGN1c3RvbWVyc0B7aWR9LnlhbWxgIGluIHRoZSBgcGF0aHNgIGZvbGRlcjoKCmBgYHlhbWwKZ2V0OgogIHRhZ3M6CiAgICAtIEN1c3RvbWVycwogIHN1bW1hcnk6IFJldHJpZXZlIGEgbGlzdCBvZiBjdXN0b21lcnMKICBvcGVyYXRpb25JZDogR2V0Q3VzdG9tZXJDb2xsZWN0aW9uCiAgZGVzY3JpcHRpb246IHwKICAgIFlvdSBjYW4gaGF2ZSBhIG1hcmtkb3duIGRlc2NyaXB0aW9uIGhlcmUuCiAgcGFyYW1ldGVyczoKICAgIC0gJHJlZjogLi4vY29tcG9uZW50cy9wYXJhbWV0ZXJzL2NvbGxlY3Rpb25MaW1pdC55YW1sCiAgICAtICRyZWY6IC4uL2NvbXBvbmVudHMvcGFyYW1ldGVycy9jb2xsZWN0aW9uT2Zmc2V0LnlhbWwKICAgIC0gJHJlZjogLi4vY29tcG9uZW50cy9wYXJhbWV0ZXJzL2NvbGxlY3Rpb25GaWx0ZXIueWFtbAogICAgLSAkcmVmOiAuLi9jb21wb25lbnRzL3BhcmFtZXRlcnMvY29sbGVjdGlvblF1ZXJ5LnlhbWwKICAgIC0gJHJlZjogLi4vY29tcG9uZW50cy9wYXJhbWV0ZXJzL2NvbGxlY3Rpb25FeHBhbmQueWFtbAogICAgLSAkcmVmOiAuLi9jb21wb25lbnRzL3BhcmFtZXRlcnMvY29sbGVjdGlvbkZpZWxkcy55YW1sCiAgcmVzcG9uc2VzOgogICAgJzIwMCc6CiAgICAgIGRlc2NyaXB0aW9uOiBBIGxpc3Qgb2YgQ3VzdG9tZXJzIHdhcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5CiAgICAgIGhlYWRlcnM6CiAgICAgICAgUmF0ZS1MaW1pdC1MaW1pdDoKICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvaGVhZGVycy9SYXRlLUxpbWl0LUxpbWl0LnlhbWwKICAgICAgICBSYXRlLUxpbWl0LVJlbWFpbmluZzoKICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvaGVhZGVycy9SYXRlLUxpbWl0LVJlbWFpbmluZy55YW1sCiAgICAgICAgUmF0ZS1MaW1pdC1SZXNldDoKICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvaGVhZGVycy9SYXRlLUxpbWl0LVJlc2V0LnlhbWwKICAgICAgICBQYWdpbmF0aW9uLVRvdGFsOgogICAgICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9oZWFkZXJzL1BhZ2luYXRpb24tVG90YWwueWFtbAogICAgICAgIFBhZ2luYXRpb24tTGltaXQ6CiAgICAgICAgICAkcmVmOiAuLi9jb21wb25lbnRzL2hlYWRlcnMvUGFnaW5hdGlvbi1MaW1pdC55YW1sCiAgICAgICAgUGFnaW5hdGlvbi1PZmZzZXQ6CiAgICAgICAgICAkcmVmOiAuLi9jb21wb25lbnRzL2hlYWRlcnMvUGFnaW5hdGlvbi1PZmZzZXQueWFtbAogICAgICBjb250ZW50OgogICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvc2NoZW1hcy9DdXN0b21lci55YW1sCiAgICAgICAgdGV4dC9jc3Y6CiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAgICRyZWY6IC4uL2NvbXBvbmVudHMvc2NoZW1hcy9DdXN0b21lci55YW1sCiAgICAnNDAxJzoKICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9yZXNwb25zZXMvQWNjZXNzRm9yYmlkZGVuLnlhbWwKICB4LWNvZGUtc2FtcGxlczoKICAgIC0gbGFuZzogUEhQCiAgICAgIHNvdXJjZToKICAgICAgICAkcmVmOiAuLi9jb2RlX3NhbXBsZXMvUEhQL2N1c3RvbWVycy9nZXQucGhwCnBvc3Q6CiAgdGFnczoKICAgIC0gQ3VzdG9tZXJzCiAgc3VtbWFyeTogQ3JlYXRlIGEgY3VzdG9tZXIgKHdpdGhvdXQgYW4gSUQpCiAgb3BlcmF0aW9uSWQ6IFBvc3RDdXN0b21lcgogIGRlc2NyaXB0aW9uOiBBbm90aGVyIG1hcmtkb3duIGRlc2NyaXB0aW9uIGhlcmUuCiAgcmVxdWVzdEJvZHk6CiAgICAkcmVmOiAuLi9jb21wb25lbnRzL3JlcXVlc3RCb2RpZXMvQ3VzdG9tZXIueWFtbAogIHJlc3BvbnNlczoKICAgICcyMDEnOgogICAgICAkcmVmOiAuLi9jb21wb25lbnRzL3Jlc3BvbnNlcy9DdXN0b21lci55YW1sCiAgICAnNDAxJzoKICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9yZXNwb25zZXMvQWNjZXNzRm9yYmlkZGVuLnlhbWwKICAgICc0MDknOgogICAgICAkcmVmOiAuLi9jb21wb25lbnRzL3Jlc3BvbnNlcy9Db25mbGljdC55YW1sCiAgICAnNDIyJzoKICAgICAgJHJlZjogLi4vY29tcG9uZW50cy9yZXNwb25zZXMvSW52YWxpZERhdGFFcnJvci55YW1sCiAgeC1jb2RlLXNhbXBsZXM6CiAgICAtIGxhbmc6IFBIUAogICAgICBzb3VyY2U6CiAgICAgICAgJHJlZjogLi4vY29kZV9zYW1wbGVzL1BIUC9jdXN0b21lcnMvcG9zdC5waHAKYGBgCgpZb3UnbGwgc2VlIGV4dGVuc2l2ZSB1c2FnZSBvZiBgJHJlZmBzIGluIHRoaXMgZXhhbXBsZSB0byBkaWZmZXJlbnQgdHlwZXMgb2YgY29tcG9uZW50cyBpbmNsdWRpbmcgc2NoZW1hcy4KCllvdSdsbCBhbHNvIG5vdGljZSBgJHJlZmBzIHRvIGNvZGUgc2FtcGxlcy4KCiMjIyBDb2RlIHNhbXBsZXMKCjEuIE5hdmlnYXRlIHRvIHRoZSBgb3BlbmFwaS9jb2RlX3NhbXBsZXNgIGZvbGRlci4KMi4gTmF2aWdhdGUgdG8gdGhlIGA8bGFuZ3VhZ2U+YCAoZS5nLiBQSFApIHN1Yi1mb2xkZXIuCjMuIE5hdmlnYXRlIHRvIHRoZSBgcGF0aGAgZm9sZGVyLCBhbmQgYWRkIHJlZiB0byB0aGUgY29kZSBzYW1wbGUuCgpZb3UgY2FuIGFkZCBsYW5ndWFnZXMgYnkgYWRkaW5nIG5ldyBmb2xkZXJzIGF0IHRoZSBhcHByb3ByaWF0ZSBwYXRoIGxldmVsLgoKTW9yZSBkZXRhaWxzIGluc2lkZSB0aGUgYGNvZGVfc2FtcGxlc2AgZm9sZGVyIFJFQURNRS4K readmeEtag: '"35125785da8665cd825ff9df7549125133f94bba"' readmeLastModified: Thu, 24 Sep 2020 03:44:02 GMT repositoryId: 289852836 description: >- generated by https://github.com/Redocly/create-openapi-repo to showcase open api spec v3 (swagger) created: '2020-08-24T07:02:05Z' updated: '2020-09-24T03:44:06Z' language: JavaScript archived: false stars: 0 watchers: 0 forks: 0 owner: shavo007 logo: https://avatars.githubusercontent.com/u/5466825?v=4 license: MIT repoEtag: '"99b63ea100a00e95cc5537519b87c9d9f6e05ff0614875531462b2d04da3b241"' repoLastModified: Thu, 24 Sep 2020 03:44:06 GMT foundInMaster: true category: Parsers id: b9070ef2123ac1514346b02aca45a305 - source: openapi3 tags repository: https://github.com/realotz/protoc-gen-openapi v3: true repositoryMetadata: base64Readme: >- CumAgueUqOS4jmtyYXRvcy1nb+eahHByb3RvYnVm55Sf5oiQb3BlbmFwaTPmlofmoaPmianlsZUKcHMg5pqC5LiN5pSv5oyBbWFw57uT5p6E77yMbWFw5a6a5LmJ5Lya6L+U5Zue5LiA5Liq56m655qEb2JqZWN0CmBgYGdvbGFuZwpnbyBnZXQgLXUgZ2l0aHViLmNvbS9yZWFsb3R6L3Byb3RvYy1nZW4tb3BlbmFwaQpgYGAK55Sf5oiQCmBgYGJpZ3F1ZXJ5CnByb3RvYyAtLXByb3RvX3BhdGg9LiAgLS1wcm90b19wYXRoPS4vdGhpcmRfcGFydHkgLS1vcGVuYXBpX291dD1wYXRocz1zb3VyY2VfcmVsYXRpdmU6LiB0ZXN0LnByb3RvCmBgYA== readmeEtag: '"5ff1574ca3fb0d49df444683c5492a48bb0148a4"' readmeLastModified: Wed, 31 Mar 2021 10:01:47 GMT repositoryId: 352942598 description: protoc-gen-openapi created: '2021-03-30T09:23:30Z' updated: '2021-03-31T10:01:55Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: realotz logo: https://avatars.githubusercontent.com/u/78065238?v=4 repoEtag: '"dd23df65d69e90ff1c86ec161c27c1448ab4ebbf33fb3c1c5e548c2bbcdd829e"' repoLastModified: Wed, 31 Mar 2021 10:01:55 GMT foundInMaster: true category: - Data Validators - Parsers id: 25c1e5522b2f773662415fcbca9e279b - source: openapi3 tags repository: https://github.com/mal2-project/fake-shop-detection_detector-api v3: true repositoryMetadata: base64Readme: >- IyBGYWtlLVNob3AgRGV0ZWN0b3IgQVBJCgojIyBBYm91dCAvIFN5bm9wc2lzCgoqIGNlbnRyYWwgc291cmNlIGZvciBzZXJ2aW5nIGJyb3dzZXIgcGx1Z2luCiogaG9tb2dlbmVvdXNseSBpbnRlZ3JhdGVzIG11bHRpcGxlIGxvY2FsIG9yIGFwaSBwcm92aWRlcnMgb2YgdHJ1c3R3b3J0aHkgYW5kIGtub3duIGZyYXVkdWxlbnQgc2l0ZXMKKiBwcm92aWRlcyBtYWwyLW1vZGVsIHByZWRpY3Rpb24gY2FwYWJpbGl0aWVzCiogY2FjaGluZyBhbmQgbG9hZCBiYWxhbmNpbmcKKiBQcm9qZWN0IHN0YXR1czogd29ya2luZy9wcm90b3R5cGUKCiMjIFRhYmxlIG9mIGNvbnRlbnRzCgo+ICogW1JlcXVpcmVtZW50c10oI3JlcXVpcmVtZW50cykKPiAqIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCj4gKiBbVXNhZ2VdKCN1c2FnZSkKPiAqIFtSdW5uaW5nIHdpdGggRG9ja2VyXSgjUnVubmluZy13aXRoLURvY2tlcikKPiAqIFtSRVNULUFQSV0oI3Jlc3QtYXBpKQo+ICogW0Fib3V0IE1BTDJdKCNhYm91dC1tYWwyKQo+ICogW0NvbnRhY3RdKCNjb250YWN0KQo+ICogW0xpY2Vuc2VdKCNsaWNlbnNlKQoKIyMgUmVxdWlyZW1lbnRzCgoqIFVidW50dSAxNi4wNAoqIFB5dGhvbiAzLjgKKiBQb3N0Z3JlU1FMIDEwCiogUHl0aG9uLVBhY2thZ2VzIGFzIGRlZmluZWQgaW4gW3JlcXVpcm1lbnRzLnR4dF0oYmFja2VuZC1hcGktc2VydmVyL3JlcXVpcmVtZW50cy50eHQpCgojIyBJbnN0YWxsYXRpb24KCkNyZWF0ZSBhIFB5dGhvbiB2aXJ0dWFsIGVudmlyb25tZW50IHdpdGggZS5nLiBbdmlydHVhbGVudndyYXBwZXJdKGh0dHBzOi8vdmlydHVhbGVudndyYXBwZXIucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0Lykgb3IgYW5hY29uZGEuClRoZSBQeXRob24gdmVyc2lvbiB1c2VkIGlzIDMuOC4KCmBgYHNoZWxsCiQgbWt2aXJ0dWFsZW52IC1wIC9wYXRoL3RvL3B5dGhvbjMuOCByZXN0LWFwaQpgYGAKCkluc3RhbGwgdGhlIHJlcXVpcmVkIFB5dGhvbiBwYWNrYWdlcwoKYGBgc2hlbGwKcGlwIGluc3RhbGwgLXIgYmFja2VuZC1hcGktc2VydmVyL3JlcXVpcmVtZW50cy50eHQKYGBgCgpQb3N0Z3JlU1FMIDEwIGlzIHVzZWQgYXMgZGF0YWJhc2UuIENyZWF0ZSBhIGRhdGFiYXNlIGFuZCBjaGFuZ2UgdGhlIGBiYWNrZW5kLWFwaS1zZXJ2ZXIvc3dhZ2dlcl9zZXJ2ZXIvbWFscy9kYi9oYW5kbGVyL2RiX2hhbmRsZXIucHlgIGFjY29yZGluZ2x5LgoKVGhlIGRhdGFiYXNlIGluaXRpYWxpemlhdGlvbiBpcyBkb25lIGJ5IGNhbGxpbmcgaW5pdC1tYWwyLWRiLnNoCmBgYHNoZWxsCiMhL2Jpbi9iYXNoCnNldCAtZQpwc3FsIC12IE9OX0VSUk9SX1NUT1A9MSAtLXVzZXJuYW1lICIkUE9TVEdSRVNfVVNFUiIgLS1kYm5hbWUgIiRQT1NUR1JFU19EQiIgPDwtRU9TUUwKICAgIENSRUFURSBST0xFIG1hbDJ1c2VyIFdJVEggTE9HSU4gUEFTU1dPUkQgJ2NoYW5nZV9wYXNzJyBTVVBFUlVTRVIgSU5IRVJJVCBDUkVBVEVEQiBDUkVBVEVST0xFOwogICAgQ1JFQVRFIERBVEFCQVNFIG1hbDJyZXN0ZGIgT1dORVIgbWFsMnVzZXI7CkVPU1FMCmBgYAoKIyMgVXNhZ2UKClRvIHJ1biB0aGUgc2VydmVyLCBwbGVhc2UgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIGZyb20gdGhlIGJhY2tlbmQtYXBpLXNlcnZlciBkaXJlY3Rvcnk6CgpgYGAKcHl0aG9uMyAtbSBzd2FnZ2VyX3NlcnZlcgpgYGAKCmFuZCBwb2ludCB5b3VyIGJyb3dzZXIgdG86CgpgYGAKaHR0cDovL2xvY2FsaG9zdDo4MDgwL21hbHp3ZWkvZWNvbW1lcmNlLzEuMS91aS8KYGBgCgpZb3VyIFN3YWdnZXIgZGVmaW5pdGlvbiBsaXZlcyBoZXJlOgoKYGBgCmh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9tYWx6d2VpL2Vjb21tZXJjZS8xLjEvc3dhZ2dlci5qc29uCmBgYAoKQXR0ZW50aW9uLCB0aGlzIGlzIGZvciBkZXZlbG9wbWVudCBvbmx5LiBJbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQsIGZvciBleGFtcGxlLCBbdXdzZ2ldKGh0dHBzOi8vdXdzZ2ktZG9jcy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvV1NHSXF1aWNrc3RhcnQuaHRtbCkgY2FuIGJlIHVzZWQgd2l0aCBbYXBhY2hlMl0oaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvKS4KCiMjIFJ1bm5pbmcgd2l0aCBEb2NrZXIKCkZvciBhIGZ1bGwgbG9jYWwgZGVwbG95bWVudCB3aXRoIGFuIGV4dGVybmFsIGRiIGxhdW5jaCB0aGUgZG9ja2VyIGJ1aWxkOgpgYGBzaGVsbAojIHN0YXJ0aW5nIHRoZSBjb250YWluZXJzCmRvY2tlci1jb21wb3NlIC1mIGRvY2tlci1jb21wb3NlLmxvY2FsX2Rldi55bWwgdXAKYGBgCgpGb3IgYSBmdWxsIHNlcnZlciBkZXBsb3ltZW50IGxhdW5jaCB0aGUgZG9ja2VyIGJ1aWxkOgpgYGBzaGVsbAojIGJ1aWxkaW5nIHRoZSBpbWFnZQpkb2NrZXItY29tcG9zZSBidWlsZCAtLWJ1aWxkLWFyZyBFTkRQT0lOVF9CQVNFPXlvdXIuc2VydmVyLmxvY2F0aW9uCgojIHN0YXJ0aW5nIHRoZSBjb250YWluZXJzCmRvY2tlci1jb21wb3NlIHVwCmBgYAoKQWxsIGRldGFpbHMgb24gdGhlIGRvY2tlciBzdGFuZC1hbG9uIG9yIGRvY2tlci1jb21wb3NlIGJ1aWxkIGFyZSBwcm92aWRlZCBpbiB0aGUgZmlsZXMKYGRvY2tlci1jb21wb3NlLnltbGAKYGRvY2tlci1jb21wb3NlLmxvY2FsX2Rldi55bWxgCmFuZApgYmFja2VuZC1hcGktc2VydmVyL2RvY2tlci9Eb2NrZXJmaWxlYAoKVGhlIGNvZGUgYXMgaXMgY29udGFpbnMgc2V0dGluZ3MgZm9yIGxvY2FsIGRldiBkZXBsb3ltZW50LiBUaGUgRG9ja2VyZmlsZSB1c2VzICdzZWQnIHRvIHByb3ZpZGUgdGhlIHByb2R1Y3Rpb24gY29uZmlndXJhdGlvbiBhbmQgZG9ja2VyLWNvbXBvc2UgdXAgdG8gc3RhcnQgdGhlIGludGVncmF0ZWQgc3lzdGVtCmBSVU4gc2VkIC1pICJzfDEyNy4wLjAuMXwkZW52X0VORFBPSU5UX0JBU0V8ZyIgc3dhZ2dlcl9zZXJ2ZXIvc3dhZ2dlci9zd2FnZ2VyLnlhbWxgCgojIyBSRVNULUFQSQoKVGhlIFJFU1QgQVBJIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MS9tYWx6d2VpL2Vjb21tZXJjZS8xLjEvdWkvLgoKUGxlYXNlIG5vdGUgYWxsIHBvcnQgY29uZmlndXJhdGlvbnMgb2YgdGhlIHNlcnZlciBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGRvY2tlci1jb21wb3NlIGJ1aWxkIHN0YWdlLiBUaGVyZWZvcmUgbWFrZSBzdXJlIHdoZW4gYWRqdXN0aW5nIHRoZSBwb3J0cyB3aXRoaW4gZG9ja2VyLWNvbXBvc2UueW1sIHRvIGhhdmUgaWRlbnRpY2FsIHBvcnRzIGZvciBjb250YWluZXIgYW5kIGhvc3Qgd2l0aGluIHRoZSBtYWwyLXJlc3QtYXBpIHNlcnZpY2UgYXMgdGhleSBhcmUgcGFzc2VkIHRvIGNvbm5leGlvbltzd2FnZ2VyLXVpXSBhdCBidWlsZCB0aW1lLgoKIyMgQWJvdXQgTUFMMgoKVGhlIE1BTDIgcHJvamVjdCBhcHBsaWVzIERlZXAgTmV1cmFsIE5ldHdvcmtzIGFuZCBVbnN1cGVydmlzZWQgTWFjaGluZSBMZWFybmluZyB0byBhZHZhbmNlIGN5YmVyY3JpbWUgcHJldmVudGlvbiBieSBhKSBhdXRvbWF0aW5nIHRoZSBkaXNjb3Zlcnkgb2YgZnJhdWR1bGVudCBlQ29tbWVyY2UgYW5kIGIpIGRldGVjdGluZyBQb3RlbnRpYWxseSBIYXJtZnVsIEFwcHMgKFBIQXMpIGluIEFuZHJvaWQuClRoZSBnb2FsIG9mIHRoZSBNQUwyIHByb2plY3QgaXMgdG8gcHJvdmlkZSAoaSkgYW4gT3BlbiBTb3VyY2UgZnJhbWV3b3JrIGFuZCBleHBlcnQgdG9vbHMgd2l0aCBpbnRlZ3JhdGVkIGZ1bmN0aW9uYWxpdHkgYWxvbmcgdGhlIHJlcXVpcmVkIHBpcGVsaW5lIOKAkyBmcm9tIG1hbGljaW91cyBkYXRhIGFyY2hpdmluZywgZmVhdHVyZSBzZWxlY3Rpb24gYW5kIGV4dHJhY3Rpb24sIHRyYWluaW5nIG9mIE1hY2hpbmUgTGVhcm5pbmcgY2xhc3NpZmljYXRpb24gYW5kIGRldGVjdGlvbiBtb2RlbHMgdG93YXJkcyBleHBsYWluYWJpbGl0eSBpbiB0aGUgYW5hbHlzaXMgb2YgcmVzdWx0cyAoaWkpIHRvIGV4ZWN1dGUgaXRzIGNvbXBvbmVudHMgYXQgc2NhbGUgYW5kIChpaWkpIHRvIHB1Ymxpc2ggYW4gYW5ub3RhdGVkIEdyb3VuZC1UcnV0aCBkYXRhc2V0IGluIGJvdGggYXBwbGljYXRpb24gZG9tYWlucy4gVG8gcmFpc2UgYXdhcmVuZXNzIGZvciBjeWJlcmNyaW1lIHByZXZlbnRpb24gaW4gdGhlIGdlbmVyYWwgcHVibGljLCB0d28gZGVtb25zdHJhdG9ycywgYSBGYWtlLVNob3AgRGV0ZWN0aW9uIEJyb3dzZXIgUGx1Z2luIGFzIHdlbGwgYXMgYSBBbmRyb2lkIE1hbHdhcmUgRGV0ZWN0aW9uIEFuZHJvaWQgYXBwIGFyZSByZWxlYXNlZCB0aGF0IGFsbG93IGxpdmUtaW5zcGVjdGlvbiBhbmQgQUkgYmFzZWQgcHJlZGljdGlvbnMgb24gdGhlIHRydXN0d29ydGhpbmVzcyBvZiBlQ29tbWVyY2Ugc2l0ZXMgYW5kIEFuZHJvaWQgYXBwcy4KClRoZSB3b3JrIGlzIGJhc2VkIG9uIHJlc3VsdHMgY2FycmllZCBvdXQgaW4gdGhlIHJlc2VhcmNoIHByb2plY3QgW01BTDIgcHJvamVjdF0oaHR0cHM6Ly9wcm9qZWt0ZS5mZmcuYXQvcHJvamVrdC8zMDQ0OTc1KSwgd2hpY2ggd2FzIHBhcnRpYWxseSBmdW5kZWQgYnkgdGhlIEF1c3RyaWFuIEZlZGVyYWwgTWluaXN0cnkgZm9yIENsaW1hdGUgQWN0aW9uLCBFbnZpcm9ubWVudCwgRW5lcmd5LCBNb2JpbGl0eSwgSW5ub3ZhdGlvbiBhbmQgVGVjaG5vbG9neSAoQk1LKSB0aHJvdWdoIHRoZSBJQ1Qgb2YgdGhlIGZ1dHVyZSByZXNlYXJjaCBwcm9ncmFtICg2dGggY2FsbCkgbWFuYWdlZCBieSB0aGUgQXVzdHJpYW4gZmVkZXJhbCBmdW5kaW5nIGFnZW5jeSAoRkZHKS4KKiBBdXN0cmlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSBHbWJILCBDZW50ZXIgZm9yIERpZ2l0YWwgU2FmZXR5IGFuZCBTZWN1cml0eSBbQUlUXShodHRwczovL3d3dy5haXQuYWMuYXQvKQoqIEF1c3RyaWFuIEluc3RpdHV0ZSBmb3IgQXBwbGllZCBUZWxlY29tbXVuaWNhdGlvbnMgW8OWSUFUXShodHRwczovL3d3dy5vaWF0LmF0KQoqIFgtTkVUIFNlcnZpY2VzIEdtYkggW1hORVRdKGh0dHBzOi8veC1uZXQuYXQvZGUvKQoqIEt1cmF0b3JpdW0gc2ljaGVyZXMgw5ZzdGVycmVpY2ggW0tTw5ZdKGh0dHBzOi8va3VyYXRvcml1bS1zaWNoZXJlcy1vZXN0ZXJyZWljaC5hdC8pCiogSUtBUlVTIFNlY3VyaXR5IFNvZnR3YXJlIFtJS0FSVVNdKGh0dHBzOi8vd3d3LmlrYXJ1c3NlY3VyaXR5LmNvbS8pCgpNb3JlIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBhdCBbd3d3Lm1hbHp3ZWkuYXRdKGh0dHA6Ly93d3cubWFsendlaS5hdCkKCiMjIENvbnRhY3QKRm9yIGRldGFpbHMgb24gYmVoYWxmIG9mIHRoZSBNQUwyIGNvbnNvcnRpdW0gY29udGFjdDogCkFuZHJldyBMaW5kbGV5IChwcm9qZWN0IGxlYWQpClJlc2VhcmNoIEVuZ2luZWVyLCBEYXRhIFNjaWVuY2UgJiBBcnRpZmljaWFsIEludGVsbGlnZW5jZQpDZW50ZXIgZm9yIERpZ2l0YWwgU2FmZXR5IGFuZCBTZWN1cml0eSwgQUlUIEF1c3RyaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5IEdtYkgKR2llZmluZ2dhc3NlIDQgfCAxMjEwIFZpZW5uYSB8IEF1c3RyaWEKVCArNDMgNTA1NTAtNDI3MiB8IE0gKzQzIDY2NCA4MTU3ODQ4IHwgRiArNDMgNTA1NTAtNDE1MAphbmRyZXcubGluZGxleUBhaXQuYWMuYXQgfCB3d3cuYWl0LmFjLmF0Cm9yCldvZmxnYW5nIEVpYm5lciwgWC1ORVQgU2VydmljZXMgR21iSCwgd2VAeC1uZXQuYXQKCiMjIExpY2Vuc2UKVGhlIE1BTDIgU29mdHdhcmUgc3RhY2sgaXMgZHVhbC1saWNlbnNlZCB1bmRlciBjb21tZXJjaWFsIGFuZCBvcGVuIHNvdXJjZSBsaWNlbnNlcy4gClRoZSBTb2Z0d2FyZSBpbiB0aGlzIHJlcG9zaXRvcnkgaXMgc3ViamVjdCBvZiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZGVmaW5lZCBpbiBmaWxlICdMSUNFTlNFLm1kJwo= readmeEtag: '"68115733d2d46c34131acd001a2f25a70026c7bd"' readmeLastModified: Tue, 23 Mar 2021 20:58:20 GMT repositoryId: 350778457 description: >- MAL2 Fake-Shop Detector API integration of known legit and fraudulent sites, integration of detector-models, prediction, API for serving plugin interaction created: '2021-03-23T16:16:51Z' updated: '2022-02-06T02:00:28Z' language: Python archived: false stars: 0 watchers: 2 forks: 0 owner: mal2-project logo: https://avatars.githubusercontent.com/u/75363498?v=4 license: NOASSERTION repoEtag: '"8076e618867102b5830b50407dec60f57df70d9a65603b6ad5cd8d09350c0f8f"' repoLastModified: Sun, 06 Feb 2022 02:00:28 GMT foundInMaster: true category: Server Implementations id: 182085f26b44efedde138bc7a37bba60 - source: openapi3 tags repository: https://github.com/sharmar0790/spring-redis-docker v3: true repositoryMetadata: base64Readme: >- IyBTcHJpbmcgUmVkaXMKCiMjIFRhYmxlIG9mIENvbnRlbnRzCi0gW1doYXQgaXMgUmVkaXMuXSgjd2hhdC1pcy1yZWRpcykKLSBbVXNlIENhc2VdKCN1c2UtY2FzZSkKLSBbSW5zdGFsbGF0aW9uXSgjaW5zdGFsbGF0aW9uKQogICAgKyBbVHdvIG1ldGhvZHNdKCN0d28tbWV0aG9kcykKICAgICsgW0luc3RhbGxlZCBhbmQgY29uZmlndXJlIG9uIE1BQ10oI2luc3RhbGxlZC1hbmQtY29uZmlndXJlLW9uLW1hYykKLSBbQmFja3VwXSgjYmFja3VwKQotIFtNb25pdG9yXSgjbW9uaXRvcikKLSBbUmVkaXMgU2VudGluZWxdKCNyZWRpcy1zZW50aW5lbCkKLSBbUmVkaXMgQXV0aF0oI3JlZGlzLWF1dGgpCi0gW1N0ZXBzIHRvIHJ1biB0aGUgYXBwbGljYXRpb25dKCNzdGVwcy10by1ydW4tdGhlLWFwcGxpY2F0aW9uKQogICAgKyBbUnVuIGJvdGggYXBwIGFuZCByZWRpcyBsb2NhbGx5XSgjcnVuLWJvdGgtYXBwLWFuZC1yZWRpcy1sb2NhbGx5KQogICAgKyBbUnVuIGJvdGggYXBwIGFuZCByZWRpcyBpbnNpZGUgYSBjb250YWluZXJdKCNydW4tYm90aC1hcHAtYW5kLXJlZGlzLWluc2lkZS1hLWNvbnRhaW5lcikKICAgICsgW1J1biBib3RoIGFwcCBhbmQgcmVkaXMgaW5zaWRlIGEgY29udGFpbmVyIHVzaW5nIGRvY2tlci1jb21wb3NlXSgjcnVuLWJvdGgtYXBwLWFuZC1yZWRpcy1pbnNpZGUtYS1jb250YWluZXItdXNpbmctZG9ja2VyLWNvbXBvc2UpCi0gW09wZW5BUEldKCNPcGVuQVBJKSAgICAKLSBbQVBJIEVuZHBvaW50IHRvIGFjY2VzcyB0aGUgYXBwXSgjYXBpLWVuZHBvaW50LXRvLWFjY2Vzcy10aGUtYXBwKQotIFtUTyBET10oI3RvLWRvKQoKIyMgV2hhdCBpcyBSZWRpcy4KCiAtIFJlZGlzIGlzIGEgcG93ZXJmdWwgYW5kIGV4dHJlbWVseSBmYXN0IGluIG1lbW9yeSBkYi4gICAKIC0gU3RvcmVzIGRhdGEgaW4ga2V5LXZhbHVlLiAgIAogLSBQZXJzaXN0ZW5jZS4gIAogLSBPcHRpb25hbGx5IHlvdSBjYW4gc2F2ZSB0aGUgZGF0YSB0byBkaXNrLiAgIAogLSBNYXN0ZXIgc2xhdmUgcmVwbGljYXRpb24uICAKIC0gSGlnaGx5IEF2YWlsYWJsZS4gICAKIC0gT3BlbiBzb3VyY2UuICAKIC0gSW5kZXhpbmcgKFN0aWxsIGNhbiBjcmVhdGUgb3duIGluZGV4aW5nKS4gIAogLSBObyBxdWVyeSBsYW5ndWFnZS4gIAoKCiMjIFVzZSBDYXNlCiAtIFVzZXIgU2Vzc2lvbiBNYW5hZ2VtZW50CiAtIENhY2hpbmcuCiAtIFB1Yi9TdWIgKFF1ZXVlcyAmIE5vdGlmaWNhdGlvbikKIC0gTGVhZGVyYm9hcmRzIGZvciBnYW1pbmcgYXBwcwogLSBHZW9zcGF0aWFsCgoKIyMgSW5zdGFsbGF0aW9uCiMjIyMgVHdvIG1ldGhvZHMKIC0gRG93bmxvYWQgYW5kIGluc3RhbGxlZC4gKFBsZWFzZSB1c2UgW1JlZGlzIERvd25sb2FkXShodHRwczovL3JlZGlzLmlvL2Rvd25sb2FkKSB0byBzZWUgdGhlIHN0ZXBzIHRvIGNvbmZpZ3VyZSB0aGUgcmVkaXMgaW4gb3RoZXIgT1MpCiAtIFVzaW5nIHBhY2thZ2UgbWFuYWdlciBsaWtlIGJyZXcgKG1hYykuIChJIHdpbGwgYmUgdXNpbmcgdGhpcyB0byBjb25maWd1cmUgcmVkaXMpCgoKIyMjIyBJbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZSBvbiBNQUMKIC0gT3BlbiB0aGUgdGVybWluYWwgYW5kIHR5cGUKICAgYGBgCiAgICQgYnJldyBpbnN0YWxsIHJlZGlzCiAgIGBgYAogLSBPbmNlIGl0IGRvbmUsIHR5cGUgKipyZWRpcy1zZXJ2ZXIqKiB0byBzdGFydCB0aGUgcmVkaXMgc2VydmVyIHdpdGggZGVmYXVsdCBjb25maWd1cmF0aW9uIHByb3ZpZGVkIGJ5IHJlZGlzLgogICBgYGAKICAgJCByZWRpcy1zZXJ2ZXIge3BhdGggdG8gdGhlIHJlZGlzLmNvbmZ9CiAgIGBgYCAgIAogLSBPcGVuIGFub3RoZXIgdGVybWluYWwgYW5kIHR5cGUgKipyZWRpcy1jbGkqKiwgdG8gb3BlbiB0aGUgcmVkaXMgY2xpLgogICBgYGAKICAgJCByZWRpcy1jbGkgLXAgNjM3OQogICBgYGAgIAogICBZb3Ugd2lsbCBzZWUgdGhlIG91dHB1dCBzb21ldGhpbmcgbGlrZSBiZWxvdzoKICAgYGBgCiAgICQgcmVkaXMtY2xpIC1wIDYzNzkKICAgMTI3LjAuMC4xOjYzNzk+CiAgIGBgYAogICBDaGVja2luZyByZWRpcyBzdGF0dXMgZXhlY3V0ZSBiZWxvdwogICBgYGAKICAgJCByZWRpcy1jbGkgcGluZwogICBQT05HCiAgIGBgYAogICBraWxsaW5nIHJlZGlzIHNlcnZlciBleGVjdXRlIGJlbG93CiAgIGBgYAogICAxMjcuMC4wLjE6NjM3OT4gc2h1dGRvd24KICAgYGBgCgogLSBTb21lIHNhbXBsZSBjb21tYW5kcyBvbiByZWRpcy1jbGkKICAgYGBgCiAgICAxMjcuMC4wLjE6NjM3OT4gc2V0IGNvbG9yIHJlZCAgICNzZXR0aW5nIGEgdmFsdWUgaW4gY29sb3IgKGFzIGtleSkgYW5kIHJlZCAoYXMgdmFsdWUpCiAgICBPSwogICAgMTI3LjAuMC4xOjYzNzk+IGtleXMgKiAgICMgdmVyaWZ5aW5nIHRvdGFsIG51bWJlciBvZiBrZXlzCiAgICAxKSAiXHhhY1x4ZWRceDAwXHgwNXRceDAwXHgwNEJvb2siCiAgICAyKSAiY29sb3IiCiAgICAxMjcuMC4wLjE6NjM3OT4KICAgIDEyNy4wLjAuMTo2Mzc5PgogICAgMTI3LjAuMC4xOjYzNzk+IGdldCBjb2xvciAgIyBnZXR0aW5nIHRoZSB2YWx1ZSBhc3NpZ25lZCB0byB0aGUga2V5IC0gY29sb3IKICAgICJyZWQiCiAgICAxMjcuMC4wLjE6NjM3OT4KICAgYGBgICAKCiMjIEJhY2t1cAogICBCZWxvdyBjb21tYW5kIHdpbGwgY3JlYXRlIHRoZSBkdW1wL2JhY2t1cCBhcyBwZXIgdGhlIHBhdGggc3BlY2lmaWVkIGluIHJlZGlzLmNvbmYgZmlsZS4KICAgYGBgCiAgICQgc2F2ZQogICBgYGAKCiMjIE1vbml0b3IKICAgUnVuIHRoZSBiZWxvdyBjb21tYW5kIGZyb20gdGVybWluYWwgYW5kIHlvdSdsbCBiZSBhYmUgdG8gc2VlIGV2ZXJ5dGhpbmcgaGFwcGVuaW5nIG9uIHJlZGlzCiAgIGBgYAogICAgJCByZWRpcy1jbGkgLXAgNjM3OQogICAgMTI3LjAuMC4xOjYzNzk+IE1vbml0b3IKICAgIE9LCiAgIGBgYAoKIyMgUmVkaXMgU2VudGluZWwKICAtIEl0IGlzIGEgc3lzdGVtLCBkZXNpZ25lZCB0byBoZWxwIG1hbmFnaW5nIFJlZGlzIGluc3RhbmNlcy4KICAtIEl0IGlzIHRoZXJlIHRvIHByb3ZpZGUgSEEgYnkgbW9uaXRvcmluZywgbm90aWZ5aW5nLCBhbmQgcHJvdmlkaW5nIGluc3RhbmNlcyBmYWlsb3Zlci4KICAtIEl0IGNoZWNrIHdoZXRoZXIgbWFzdGVyIGFuZCBzbGF2ZSBhcmUgd29ya2luZyBwcm9wZXJseSBvciBub3QuCiAgLSBJZiBNYXN0ZXIgZ29lcyBkb3duLCBpdCdzIHRoZSBzZW50aW5lbCByZXNwb25zaWJpbGl0eSB0byBtYWtlIG9uZSBvZiB0aGUgc2xhdmUgdG8gbWFzdGVyLiAgCgoKIyMgUmVkaXMgQXV0aAogIC0gUmVkaXMgYXV0aCBoZWxwIHRvIHNlY3VyZSBkYXRhYmFzZS4gV2UgY2FuIGRvIHRoYXQgZWl0aGVyIHZpYSByZWRpcy5jb25mIG9yIHZpYSBjbGkuCiAgLSBDbGkKICAgIGBgYAogICAgJCBjb25maWcgc2V0IHJlcXVpcmVwYXNzICR7YXV0aC1rZXl9CiAgICAkIGF1dGggJHthdXRoLWtleX0KCiAgICBgYGAKCgpFeHRyYSBsaW5rczoKIC0gVXNlIFtSZWRpc0xhYnNdKGh0dHBzOi8vcmVkaXNsYWJzLmNvbS8pIHRvIHNldHVwIHJlZGlzIG9uIGNsb3VkIGZyZWUuCiAtIFJlZGlzIEdVSSAtIFtSZWRpcyBEZXNrdG9wXShodHRwczovL3JkbS5kZXYvKS4KCgojIyBTdGVwcyB0byBydW4gdGhlIGFwcGxpY2F0aW9uCiMjIyMgUnVuIGJvdGggYXBwIGFuZCByZWRpcyBsb2NhbGx5CiAqIEZvbGxvdyBbdGhlc2Ugc3RlcHNdKCNpbnN0YWxsZWQtYW5kLWNvbmZpZ3VyZS1vbi1tYWMpIHRvIGNvbmZpZ3VyZSBhbmQgcnVuIFJlZGlzIGxvY2FsbHkuCiAqIEV4ZWN1dGUgYmVsb3cgY29tbWFuZCB0byBydW4gdGhlIGJvb3QgYXBwIGZyb20gYXBwcyBkaXJlY3RvcnkKIGBgYAogICQuL2dyYWRsZXcgYm9vdFJ1bgogYGBgCiAqIEFsdGVybmF0aXZlbHksIGZpcnN0IGJ1aWxkIHRoZSBqYXIgYW5kIHRoZW4gcnVuICoqamF2YSAtamFyKiogY29tbWFuZCBhcyBiZWxvdwogYGBgCiAgJC4vZ3JhZGxldyBidWlsZAogYGBgCiBgYGAKICAkIGphdmEgLWphciB7bmFtZSBvZiB0aGUgZ2VuZXJhdGVkIGphcn0KIGBgYAojIyMjIFJ1biBib3RoIGFwcCBhbmQgcmVkaXMgaW5zaWRlIGEgY29udGFpbmVyCiAgKiBFeGVjdXRlIHRoZSBiZWxvdyBjb21tYW5kIGZyb20gcmVkaXMgZGlyZWN0b3J5CiAgYGBgCiAgJCBkb2NrZXIgbmV0d29yayBjcmVhdGUgcm1vZmZfc2VydmljZXMKICAkIGRvY2tlciBidWlsZCAtdCByZWRpcy1zZXJ2ZXIgLgogICQgZG9ja2VyIHJ1biAtZCAtcCA2Mzc5OjYzNzkgLS1uZXR3b3JrPXJtb2ZmX3NlcnZpY2VzIFwKICAgIC0tbmFtZSByZWRpcyBcCiAgICAtaCByZWRpcyByZWRpcy1zZXJ2ZXIKICBgYGAKICAqIEJ1aWxkIGFuIGltYWdlIG9mIHRoZSBhcHAuIEV4ZWN1dGUgYmVsb3cgY29tbWFuZCBmcm9tIGFwcHMgZGlyZWN0b3J5LgogIGBgYAogICQgZG9ja2VyIGJ1aWxkIC10IGJhY2tlbmQtc2VydmljZSAuCiAgYGBgCiAgKiBWZXJpZnkgdGhlIGltYWdlCiAgYGBgCiAgJCBkb2NrZXIgaW1hZ2UgbHMgLWEKICBgYGAKICAqIFJ1biB0aGUgYXBwCiAgYGBgCiAgJCBkb2NrZXIgcnVuIC1kIC0tbmFtZSBhcHAgLWUgIlJFRElTX0hPU1Q9cmVkaXMiIFwKICAgLXAgODA4MDo4MDgwIC0tbmV0d29yaz1ybW9mZl9zZXJ2aWNlcyBcCiAgICBiYWNrZW5kLXNlcnZpY2UKICBgYGAKIyMjIyBSdW4gYm90aCBhcHAgYW5kIHJlZGlzIGluc2lkZSBhIGNvbnRhaW5lciB1c2luZyBkb2NrZXItY29tcG9zZQogIGBgYAogICQgZG9ja2VyLWNvbXBvc2UgLWYgZG9ja2VyLWNvbXBvc2Utc3RhY2sueWFtbCB1cCAtZAogIGBgYAojIyMjIFJ1biBib3RoIGluIEs4cwogICogRXhlY3V0ZSBiZWxvdyBjb21tYW5kIHRvIGRlcGxveSB0aGUgYXBwbGljYXRpb24gaW4gazhzIGFuZCBleHBvc2UgdGhlIHNhbWUgdmlhIHNlcnZpY2UgdXNpbmcgbm9kZXBvcnQuCiAgYGBgCiAgJCBrdWJlY3RsIGFwcGx5IC1mIGs4cy1kZXBsb3ltZW50LnlhbWwKICBgYGAgIAoKIyMgT3BlbkFQSQogICogaHR0cDovL2xvY2FsaG9zdDo4MDgwL3N3YWdnZXItdWkuaHRtbAogICogaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaS1kb2NzICAKCiMjIEFQSSBFbmRwb2ludCB0byBhY2Nlc3MgdGhlIGFwcAogIC0gaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaS9oZWFsdGgKICAtIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvYm9vay9zYXZlCiAgLSBodHRwOi8vbG9jYWxob3N0OjgwODAvYXBpL2Jvb2svYWxsCiAgLSBodHRwOi8vbG9jYWxob3N0OjgwODAvYXBpL2Jvb2svZGVsZXRlL3tpZH0gICAgIAoKICMjIFRPIERPCgogKiBBZGQgc3RlcHMgdG8gcnVuIGJvdGggY29udGFpbmVyIGluIEs4cy4K readmeEtag: '"3811ac68249c10669b75264a31fb8d8ef08fbb31"' readmeLastModified: Thu, 01 Apr 2021 19:49:13 GMT repositoryId: 342413578 description: Sample implementation of spring with redis. created: '2021-02-26T00:07:40Z' updated: '2021-04-01T19:49:15Z' language: Java archived: false stars: 0 watchers: 1 forks: 1 owner: sharmar0790 logo: https://avatars.githubusercontent.com/u/30017762?v=4 repoEtag: '"0856f3763024c8bcff63d3f8c9eafe680b57ec3d75124c5e23a3e2b2c5b6165a"' repoLastModified: Thu, 01 Apr 2021 19:49:15 GMT foundInMaster: true category: Server Implementations id: cadbd8f02a695a30bcfd68f30eb6933d - source: openapi3 tags repository: https://github.com/openapi-it/tutorials v3: true repositoryMetadata: base64Readme: >- IyBPcGVuYXBpLml0IC0gVFVUT1JJQUxTCgpbIVtOfFNvbGlkXShodHRwczovL29wZW5hcGkuaXQvcHVibGljL2Fzc2V0cy9pbWcvbG9nby5wbmcpXShodHRwczovL29wZW5hcGkuaXQvKQoKVW5hIGxpc3RhIGNvbXBsZXRhIGRpIHZpZGVvIHR1dG9yaWFsIGFjY29tcGFnbmF0aSBkYSBlc2VtcGkgcHJhdGljaSBuZWkgbGluZ3VhZ2dpIHBpw7kgdXRpbGl6emF0aS4KCiMjIEVsZW5jbyBkZWkgdmlkZW8KCnwgVGVtYSB8IExpbmd1YWdnaW8gfCBMaW5rIHwgRXNlbXBpIHwKfCAtLS0tLS0gfCAtLS0tLS0gfCAtLS0tLS0gfCAtLS0tLS0gfAp8IE90dGVuaW1lbnRvIGRpIHVuIHRva2VuIHwgV0VCIHwgW2h0dHBzOi8veW91dHUuYmUvYTNZU05TaW9DREVdIHwgLS0tLS0tIHwKfCBPdHRlbmltZW50byBkaSB1biB0b2tlbiB1c2FuZG8gY1VSTCB8IFBIUCB8IFtodHRwczovL3lvdXR1LmJlLzg3MWt4VVZEN0JZXSB8IFtwaHAvdG9rZW4ucGhwXVtQSFAxXSB8CgoKCgpbUEhQMV06IDxodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS1pdC90dXRvcmlhbHMvdHJlZS9tYWluL3BocC90b2tlbi5waHA+Cg== readmeEtag: '"e957520f527148c1613825de1d96871b2371e244"' readmeLastModified: Wed, 03 Mar 2021 09:47:50 GMT repositoryId: 343882485 description: >- Un elenco di video tutorial accompagnati da esempi pratici in vari linguaggi di programmazione created: '2021-03-02T19:04:00Z' updated: '2025-06-12T09:47:30Z' language: PHP archived: false stars: 1 watchers: 1 forks: 2 owner: openapi-it logo: https://avatars.githubusercontent.com/u/67429652?v=4 repoEtag: '"2eaa2c8fea1fc178528b1b23201aa47f1ce60f51c93482eb4cf6ef3f74ea13ef"' repoLastModified: Thu, 12 Jun 2025 09:47:30 GMT foundInMaster: true category: Description Validators id: d07bd686576b56438cb889c400667933 - source: openapi3 tags repository: https://github.com/daimaou92/gate v3: true repositoryMetadata: base64Readme: >- IyBHYXRlCgotLS0KCiMjIyBUaGlzIGlzIGFscGhhIGdyYWRlIHNvZnR3YXJlCgotLS0KCk9waW5pb25hdGVkIGxpYiBiYXNlZCBvbiBbaHR0cHJvdXRlcl0oaHR0cHM6Ly9naXRodWIuY29tL2p1bGllbnNjaG1pZHQvaHR0cHJvdXRlcikgdG8gYnVpbGQgUkVTVCBBUElzLgoKIyMgVXNhZ2UKCi0tLQoKVXNpbmcgYEdhdGVgIGlzIGEgbGl0dGxlIGRpZmZlcmVudCB0aGFuIG1vc3Qgb3RoZXIgZnJhbWV3b3Jrcy4gVXNpbmcgaXQgY29ycmVjdGx5CnJlcXVpcmVzIHRoYXQgb25lIGRlY2lkZSB0aGUgcmVxdWVzdCwgcmVzcG9uc2UgYW5kIHF1ZXJ5IHBheWxvYWQgd2hpbGUgZGVzaWduaW5nCmFuIEFQSSB0byB0aGUgbWF4aW11bSBleHRlbnQgZmVhc2libGUuIFdoZW4gZXhwbGljaXRseSBkZWZpbmVkLCBhcyBpbiB0aGUgZXhhbXBsZQpiZWxvdywgYW5kIGxhdGVyIGZldGNoZWQgdXNpbmcgdGhlIGBHYXRlYCBwcm92aWRlZCBhdHRyaWJ1dGUgLSBvbmUgaXMgc2F2aW5nCm9uIHJlLWFsbG9jYXRpb25zLgoKYEdhdGVgIG1haW50YWlucyBhIHBvb2wgb2YgYWxsIHRoZSBzdHJ1Y3R1cmVzIGV4cGxpY2l0bHkgcHJvdmlkZWQgd2hlbiB3cml0aW5nCnRoZSBlbmRwb2ludHMuIFRoZXNlIHBvb2xzIGFyZSB1c2VkIHRvIHJlZmxlY3QgYmFjayBhIHByZS1hbGxvY2F0ZWQgdmFsdWUsCndoZW4gcHJlc2VudCwgaW4gdGhlIGFyZ3VtZW50IG9mIHR5cGUgYFJlcXVlc3REYXRhYCBsYXRlciByZWNlaXZlZCBpbiB0aGUgaGFuZGxlci4KRnJlc2ggYWxsb2NhdGlvbiBvY2N1cnMgaWYgbmVlZGVkLiBNb3JlIG9uIGdvbGFuZyBzeW5jIHBvb2xzIFtoZXJlXShodHRwczovL3BrZy5nby5kZXYvc3luYyNQb29sKQoKIyMgT3BlbiBBUEkKCi0tLQoKVXNpbmcgYEdhdGVgIGFzIGludGVuZGVkIGxldHMgdXMgZ2VuZXJhdGUgYW4gT3BlbkFQSSBiYXNlZCBkb2MgcmlnaHQgZnJvbSB5b3VyIGNvZGUuCldvcmsgaXMgdW5kZXJ3YXkgdG8gYWNoaWV2ZSB0aGlzLiBUaGlzIGZlYXR1cmUgaXMgaW5zcGlyZWQgYnkgW0Ryb3BzaG90XShodHRwczovL2dpdGh1Yi5jb20vb3hpZGVjb21wdXRlci9kcm9wc2hvdCkuCgojIyBFeGFtcGxlCgotLS0KCkhlcmUncyBob3cgYSBQT1NUIHJlcXVlc3QgbG9va3MgaW4gR2F0ZQoKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAoJImVuY29kaW5nL2pzb24iCgkibG9nIgoKCSJnaXRodWIuY29tL2RhaW1hb3U5Mi9nYXRlIgoJImdpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkzIgopCgovKiBnYXRlIHByb3ZpZGVzIGEgUGF5bG9hZCBpbnRlcmZhY2UgdGhhdCBtdXN0IGJlIHVzZWQKaW4gQVBJIGRlZmluaXRpb25zIGFuZCB0aGVpciBoYW5kbGVycyB0byBhY2Nlc3Mgc2FpZCBkYXRhLgpTaW5jZSBnZW5lcmljcyBhcmUgc3RpbGwgYSBsaXR0bGUgYml0IGF3YXkgdGhlIGRlZmluaXRpb25zCm5lZWQgdG8gdXNlIGEgaW50aWFsaXplZCBpbnN0YW5jZSBvZiBzYWlkIHBheWxvYWQuCkhlcmUncyBob3cgYWxsIHRoYXQgbG9va3MqLwoKLy8gRGVmaW5lIGEgcGF5bG9hZCB0eXBlCnR5cGUgU3RyaW5nSlNPTiBzdHJpbmcKCmZ1bmMgKHNqIFN0cmluZ0pTT04pIE1hcnNoYWwoKSAoW11ieXRlLCBlcnJvcikgewoJcmV0dXJuIGpzb24uTWFyc2hhbChzaikKfQpmdW5jIChzaiAqU3RyaW5nSlNPTikgVW5tYXJzaGFsKHNyYyBbXWJ5dGUpIGVycm9yIHsKCXZhciB2IHN0cmluZwoJaWYgZXJyIDo9IGpzb24uVW5tYXJzaGFsKHNyYywgJnYpOyBlcnIgIT0gbmlsIHsKCQlyZXR1cm4gZXJyCgl9Cgkqc2ogPSBTdHJpbmdKU09OKHYpCglyZXR1cm4gbmlsCn0KZnVuYyAoU3RyaW5nSlNPTikgQ29udGVudFR5cGUoKSBnYXRlLkNvbnRlbnRUeXBlIHsKCXJldHVybiBnYXRlLkNvbnRlbnRUeXBlSlNPTgp9Ci8vIFRoZSBhYm92ZSB0aHJlZSBmdW5jdGlvbnMgTWFyc2hhbCwgVW5tYXJzaGFsIGFuZAovLyBDb250ZW50VHlwZSBpbXBsZW1lbnQgdGhlIGdhdGUuUGF5bG9hZCBpbnRlcmZhY2UKCi8vIFRoaXMgaXMganVzdCBhIGhlbHBlciBmdW5jdGlvbiB0byBnZXQgYQovLyBTdHJpbmdKU09OIHBvaW50ZXIgLSBvciBhIGdhdGUuUGF5bG9hZApmdW5jIE5ld1N0cmluZ0pTT04ocyBzdHJpbmcpICpTdHJpbmdKU09OIHsKCXQgOj0gU3RyaW5nSlNPTihzKQoJcmV0dXJuICZ0Cn0KCi8vIGJlbG93IGlzIGEgcmVxdWVzdCBoYW5kbGVyIHRoYXQgYWNjZXB0cyBhCi8vIEpTT04gc3RyaW5nIGFuZCByZXNwb25kcyBiYWNrIHdpdGggYSBKU09OCi8vIHN0cmluZyBieSBwcmVwZW5kaW5nIHRoZSBwYXR0ZXJuICJZT0xPIgpmdW5jIHlvbG9IYW5kbGVyKHJjICpnYXRlLlJlcXVlc3RDdHgsIHJkICpnYXRlLlJlcXVlc3REYXRhKSAoZ2F0ZS5QYXlsb2FkLCBlcnJvcikgewoJc2osIG9rIDo9IHJkLkJvZHkuKCpTdHJpbmdKU09OKQoJaWYgIW9rIHsKCQkvLyByZXR1cm5pbmcgYW4gZXJyb3IgYXV0b21hdGljYWxseSByZXNwb25kcyBiYWNrIHdpdGgKCQkvLyB0aGUgY29ycmVzcG9uZGluZyBjb2RlIG9mIHRoZSBlcnJvcgoJCS8vIEhlcmUgZm9yIGV4YW1wbGUsIHRoZSBjbGllbnQgd2l0aCByZWNlaXZlIHRoZSBlcnJvciBjb2RlCgkJLy8gNDAwIGFuZCBhIHRleHQgbWVzc2FnZSAiQmFkIFJlcXVlc3QiCgkJcmV0dXJuIG5pbCwgZ2F0ZS5FcnJCYWRSZXF1ZXN0Cgl9CglzaiA9IE5ld1N0cmluZ0pTT04oIllPTE8iICsgc3RyaW5nKCpzaikpCglyZXR1cm4gc2osIG5pbAp9CgpmdW5jIG1haW4oKSB7CgkvLyBOb3cgbGV0cyBkZWZpbmUgdGhlIGFwaSBzZXJ2ZXIKCWFwcCwgZXJyIDo9IGdhdGUuTmV3KGdhdGUuQXBwT3B0aW9uc3sKCQlJbmZvOiBvcGVuYXBpMy5JbmZvewoJCQlUaXRsZTogICAic2FtcGxlQVBJIiwKCQkJVmVyc2lvbjogIjAuMC4xIiwKCQl9LAoJCUFkZHI6ICI6ODA4MCIsCgl9KQoJaWYgZXJyICE9IG5pbCB7CgkJcGFuaWMoZXJyKQoJfQoKCXNqIDo9IE5ld1N0cmluZ0pTT04oIiIpCgkvLyBUaGUgdXNhZ2Ugb2YgYHNqYCBiZWxvdyBpcyBvbmx5IHNvIHRoYXQgZ2F0ZSBrbm93cyB3aGF0CgkvLyB0eXBlIHRvIG1hcnNoYWwgYW5kIHVubWFyc2hhbCB0aGUgcGF5bG9hZHMgaW50bwoJLy8gdGhlIGluaXRpYWxpemVkIHZhbHVlIHNqIGFib3ZlIHNlcnZlcyBubyBvdGhlciBwdXJwb3NlCgkvLyBhdCB0aGUgbW9tZW50LiBNYXliZSB0aGlzJ2xsIGJlIGJldHRlciB3aXRoIGdlbmVyaWNzLgoJLy8gQnV0IHRoaXMgaXMgd2hlcmUgd2UncmUgYXQgbm93LgoJYXBwLlBvc3QoZ2F0ZS5FbmRwb2ludENvbmZpZ3sKCQlQYXRoOiAgICAiL3lvbG9meSIsCgkJSGFuZGxlcjogeW9sb0hhbmRsZXIsCgkJUGF5bG9hZDogZ2F0ZS5FbmRwb2ludFBheWxvYWR7CgkJCVJlcXVlc3RQYXlsb2FkOiAgc2osCgkJCVJlc3BvbnNlUGF5bG9hZDogc2osCgkJfSwKCX0pCglsb2cuUHJpbnRsbigiTGlzdGVuaW5nIGF0IDo4MDgwIikKCWlmIGVyciA6PSBhcHAuTGlzdGVuKCk7IGVyciAhPSBuaWwgewoJCWxvZy5GYXRhbChlcnIpCgl9Cn0KCmBgYAoKTm93IHNpbXBseSB1c2UgQ1VSTCB0byB2ZXJpZnk6CmBjdXJsIC1kICciIicgLUggJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbicgLVggUE9TVCBodHRwOi8vbG9jYWxob3N0OjgwODAveW9sb2Z5YAoKWW91IHNob3VsZCBzZWUgYCJZT0xPImAgYXMgb3V0cHV0LgoKLS0tCgojIyMgVGhpcyBkb2N1bWVudGF0aW9uIGxpa2UgdGhlIHdob2xlIHByb2plY3QgaXMgYWxzbyBhIFdJUC4gSXQgc2hvdWxkIGJlIHVwZGF0ZWQgYXMgc29vbiBhcyBJIGhhdmUgbW9yZSB0aW1lLiBUaGFuayB5b3UgZm9yIHlvdXIgcGF0aWVuY2Ug8J+ZjwoKLS0tCg== readmeEtag: '"cbd3316a6a581e44d492c16e9a5efe236a0a7be9"' readmeLastModified: Mon, 21 Mar 2022 20:17:11 GMT repositoryId: 402033009 description: Build REST APIs in Golang created: '2021-09-01T11:17:35Z' updated: '2022-03-21T19:16:51Z' language: Go archived: false stars: 0 watchers: 0 forks: 0 owner: daimaou92 logo: https://avatars.githubusercontent.com/u/43323412?v=4 license: MPL-2.0 repoEtag: '"ea6badec6f2d813e41e10708a9f9ea1c8ab5ceda5ba6bd96e1d0eee299200833"' repoLastModified: Mon, 21 Mar 2022 19:16:51 GMT foundInMaster: true category: Data Validators id: 678614fcd2ecbfe2c3d9ca05339975b8 - source: openapi3 tags repository: https://github.com/damirscorner/20220722-dotnet-swagger-null-route-param v3: true id: ccd1442d77f2e85ff14d826b3620a7af repositoryMetadata: repositoryId: 512170763 description: >- Sample project for 'ASP.NET Core nullable route params in Swagger' blogpost created: '2022-07-09T11:40:50Z' updated: '2022-07-09T12:37:01Z' language: C# archived: false stars: 0 watchers: 1 forks: 0 owner: DamirsCorner logo: https://avatars.githubusercontent.com/u/64305124?v=4 license: MIT repoEtag: '"a95976cdc81507f07c376566274617639117aa2faeac59ad51561567e7b2f047"' repoLastModified: Sat, 09 Jul 2022 12:37:01 GMT foundInMaster: true - source: openapi3 tags repository: https://github.com/kevinbalicot/tamia v3: true id: faa19aa5ecfb91e6f2ad0aa3106ef63f repositoryMetadata: base64Readme: >- IVtsb2dvXShkb2MvbWVkaWEvbG9nby5wbmcpCgojIFRBTUlBCgpBIFJFU1QgQVBJIFNlcnZlciBkZXNpZ25lZCB3aXRoIE9wZW4gQVBJIHYzCgojIyBJbnN0YWxsYXRpb24KCmBgYAokIG5wbSBpbnN0YWxsIC0tc2F2ZSBAdGFtaWEvdGFtaWEKYGBgCgpXaXRoIGNvbm5lY3Qgb3IgZXhwcmVzcyBqcwoKYGBganMKY29uc3QgdGFtaWFBcGkgPSByZXF1aXJlKCdAdGFtaWEvdGFtaWEnKTsKCi8vIC4uLgpjb25zdCBjb25maWcgPSB7IC4uLiB9OyAvLyBPcGVuIEFQSSBzY2hlbWEsIHNlZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm8KY29uc3Qgb3B0aW9ucyA9IHsgLi4uIH07IC8vIFRhbWlhIEFQSSBvcHRpb25zCmNvbnN0IHRhbWlhID0gdGFtaWFBcGkoY29uZmlnLCBvcHRpb25zKTsKCmFwcC51c2UodGFtaWEucmVxdWVzdCk7CmBgYAoKIyMjIERvY3VtZW50YXRpb24KClN1bW1hcnkKCi0gW0NPTkZJR1VSQVRJT05dKC9kb2MvQ09ORklHVVJBVElPTi5tZCkKLSBbUExVR0lOU10oL2RvYy9QTFVHSU5TLm1kKQoKIyMjIFRlc3RzCgpgYGAKJCBucG0gdGVzdApgYGAK readmeEtag: '"494da88590aa4b0fdbc9a64d1bfb570a0725b1a9"' readmeLastModified: Tue, 29 Aug 2023 10:23:46 GMT repositoryId: 527976381 description: A REST API Server designed with Open API V3 created: '2022-08-23T12:16:29Z' updated: '2024-11-18T09:47:16Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: kevinbalicot logo: https://avatars.githubusercontent.com/u/4362142?v=4 repoEtag: '"5828c421d26fc468c907c8085174d31e9d1784f0eaa69891cee70e26449612b3"' repoLastModified: Mon, 18 Nov 2024 09:47:16 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/sudokuru/usergamestatistics v3: true id: 5df3ed782b4775aa1b8250e11bac82bf repositoryMetadata: base64Readme: >- PiBbIUlNUE9SVEFOVF0gIAo+IFRoaXMgcmVwb3NpdG9yeSBpcyByZWFkLW9ubHkgLyBhcmNoaXZlZCBhbmQgd2lsbCBub3QgcmVjaWV2ZSB1cGRhdGVzLgoKIyBbVHlwZWRvYyBEb2N1bWVudGF0aW9uIFdlYnNpdGVdKGh0dHBzOi8vc3Vkb2t1cnUuZ2l0aHViLmlvL1VzZXJHYW1lU3RhdGlzdGljcy8pPGJyPgoKCiMgRGV2ZWxvcGVyIFNldHVwCgoxLiBHZXQgdGhlIC5lbnYgZmlsZSBmcm9tIHRoZSBNU0IgYnVpbGRpbmcgbmV4dCB0byB0aGUgd2F0ZXIgZm91bnRhaW4uIAoyLiBJbnN0YWxsIERvY2tlciBvbiB5b3VyIG1hY2hpbmUuIFR1dG9yaWFsIGlzIGxpbmtlZCBiZWxvdzo8YnI+CiAgIFshW0RvY2tlciBUdXRvcmlhbF0oaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvMmV6TnFxYVNqcTgvMC5qcGcpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTJlek5xcWFTanE4KTxicj4KMi4gT25jZSBkb2NrZXIgaXMgaW5zdGFsbGVkLCB0aGUgTW9uZ28gaW1hZ2UgY2FuIGJlIHJ1biB3aXRoIHRoaXMgY29tbWFuZDo8YnI+Ck5vdGUgdXNlIGBgYHN1ZG9gYGAgb24gTGludXgvTWFjPGJyPgpgYGBjb25zb2xlCm5wbSBydW4gZG9ja2VyCmBgYAozLiBUaGUgYXBwIGNhbiB0aGVuIGJlIHJ1biB3aXRoIHRoZSBjb21tYW5kOjxicj4KYGBgY29uc29sZQpucG0gcnVuIHN0YXJ0CmBgYAo0LiBJbnRlZ3JhdGlvbiB0ZXN0cyBjYW4gYmUgcnVuIHdoZW4gdGhlIGFwcCBpcyBydW5uaW5nIHdpdGggdGhpcyBjb21tYW5kOjxicj4KYGBgY29uc29sZQpucG0gcnVuIHRlc3Q6aW50ZWdyYXRpb24KYGBgCg== readmeEtag: '"0c379c3519f92f8b16c9985566d524f6422cd956"' readmeLastModified: Sun, 12 May 2024 16:01:47 GMT repositoryId: 609680602 description: null created: '2023-03-04T22:48:20Z' updated: '2024-05-12T16:02:55Z' language: TypeScript archived: true stars: 0 watchers: 0 forks: 0 owner: Sudokuru logo: https://avatars.githubusercontent.com/u/114212382?v=4 license: GPL-3.0 repoEtag: '"890b4b4e5a71250339e926b54c4b8189cc52d6be2c3bf9aaec835d45cb528963"' repoLastModified: Sun, 12 May 2024 16:02:55 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/azhirov/openapi-3.0-types v3: true id: 971d273e5665ce0122911e7890fc24ea repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFR5cGVzCgpUaGlzIHBhY2thZ2UgcHJvdmlkZXMgVHlwZVNjcmlwdCB0eXBlcyBmb3IgT3BlbkFQSSAzLjAsIGJhc2VkIG9uIHRoZSBvZmZpY2lhbCBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uIDMuMC4zXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMpLiBUaGVzZSB0eXBlcyBhbGxvdyB5b3UgdG8gdmFsaWRhdGUgYW5kIHR5cGUtY2hlY2sgeW91ciBPcGVuQVBJIGRvY3VtZW50cyBpbiBUeXBlU2NyaXB0LCBwcm92aWRpbmcgaW1wcm92ZWQgZG9jdW1lbnRhdGlvbiBhbmQgY29uZmlkZW5jZSBpbiB5b3VyIEFQSSBjb250cmFjdHMuCgojIyBJbnN0YWxsYXRpb24KCmBgYApucG0gaSAtLXNhdmUtZGV2IG9wZW5hcGktMy4wLXR5cGVzCmBgYAoKIyMgVXNhZ2UKClRvIHVzZSB0aGUgT3BlbkFQSSB0eXBlcyBpbiB5b3VyIFR5cGVTY3JpcHQgcHJvamVjdCwgc2ltcGx5IGltcG9ydCB0aGVtIGFzIG5lZWRlZDoKCmBgYHR5cGVzY3JpcHQKCmltcG9ydCB0eXBlIHsgT3BlbkFwaU9iamVjdDMgfSBmcm9tICdvcGVuYXBpLTMuMC10eXBlcyc7Cgpjb25zdCBteUFwaVNwZWM6IE9wZW5BcGlPYmplY3QzID0gewogIC8vIC4uLgp9OwpgYGAKVGhlIE9wZW5BcGlPYmplY3QzIHR5cGUgcmVwcmVzZW50cyB0aGUgcm9vdCBvYmplY3Qgb2YgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uLiBPdGhlciB0eXBlcyBhcmUgcHJvdmlkZWQgZm9yIGVhY2ggY29tcG9uZW50IG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBzdWNoIGFzIFBhdGhJdGVtT2JqZWN0MywgUGFyYW1ldGVyT2JqZWN0MywgYW5kIFJlc3BvbnNlT2JqZWN0My4KCkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBhdmFpbGFibGUgdHlwZXMsIHBsZWFzZSByZWZlciB0byB0aGUgb2ZmaWNpYWwgW09wZW5BUEkgU3BlY2lmaWNhdGlvbiAzLjAuM10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zKS4KCiMjIEdlbmVyYXRlIGAqLmQudHNgCgoxLiBDbG9uZSB0aGlzIHJlcG9zaXRvcnkKMi4gSW5zdGFsbCB0eXBlc2NyaXB0CjMuIFJ1biBgdHNjYAoKIyMgQ29udHJpYnV0aW5nCgpJZiB5b3UgZmluZCBhIGJ1ZyBvciB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUgdG8gdGhlIHBhY2thZ2UsIHBsZWFzZSBmZWVsIGZyZWUgdG8gb3BlbiBhbiBpc3N1ZSBvciBzdWJtaXQgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIEdpdEh1YiByZXBvc2l0b3J5LgoKIyMgTGljZW5zZQpUaGlzIHBhY2thZ2UgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBmb3IgZGV0YWlscy4K readmeEtag: '"309999e9e508944cffffaec49fd397a272a5e69c"' readmeLastModified: Mon, 17 Apr 2023 01:14:30 GMT repositoryId: 628614386 description: This package provides TypeScript types for OpenAPI 3.0 created: '2023-04-16T13:59:06Z' updated: '2023-04-16T14:17:48Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: azhirov logo: https://avatars.githubusercontent.com/u/29061184?v=4 license: MIT repoEtag: '"b456aabe5992c5159b5aeb82135eae1ddd45da077c2f1d690e2902d4f16f3d32"' repoLastModified: Sun, 16 Apr 2023 14:17:48 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/jmcleodfoss/simple-rest-tester v3: true repositoryMetadata: base64Readme: >- IVtNSVQgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ncmVlbikgClshW0NvZGFjeSBCYWRnZV0oaHR0cHM6Ly9hcGkuY29kYWN5LmNvbS9wcm9qZWN0L2JhZGdlL0dyYWRlLzAyYzkxODJmYjkyMDRhNzA5Y2JmNDcyYTg5NWI4N2ViKV0oaHR0cHM6Ly9hcHAuY29kYWN5LmNvbS9naC9KbWNsZW9kZm9zcy9zaW1wbGUtcmVzdC10ZXN0ZXI/dXRtX3NvdXJjZT1naXRodWIuY29tJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NvbnRlbnQ9Sm1jbGVvZGZvc3Mvc2ltcGxlLXJlc3QtdGVzdGVyJnV0bV9jYW1wYWlnbj1CYWRnZV9HcmFkZV9TZXR0aW5ncykgCiFbQ29kYWN5IFNlY3VyaXR5IFNjYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9KbWNsZW9kZm9zcy9zaW1wbGUtcmVzdC10ZXN0ZXIvd29ya2Zsb3dzL0NvZGFjeSUyMFNlY3VyaXR5JTIwU2Nhbi9iYWRnZS5zdmcpIAohW0NvZGVRTF0oaHR0cHM6Ly9naXRodWIuY29tL0ptY2xlb2Rmb3NzL3NpbXBsZS1yZXN0LXRlc3Rlci93b3JrZmxvd3MvQ29kZVFML2JhZGdlLnN2ZykKIVtTTCBTY2FuXShodHRwczovL2dpdGh1Yi5jb20vSm1jbGVvZGZvc3Mvc2ltcGxlLXJlc3QtdGVzdGVyL3dvcmtmbG93cy9TTCUyMFNjYW4vYmFkZ2Uuc3ZnKSAKIVtYYW5pdGl6ZXIgU2VjdXJpdHkgQW5hbHlzaXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9KbWNsZW9kZm9zcy9zaW1wbGUtcmVzdC10ZXN0ZXIvd29ya2Zsb3dzL1hhbml0aXplciUyMFNlY3VyaXR5JTIwQW5hbHlzaXMvYmFkZ2Uuc3ZnKSAKIyBzaW1wbGUtcmVzdC10ZXN0ZXIKCkEgc2ltcGxpc3RpYyB0ZXN0IGhhcm5lc3MgZm9yIFJFU1QgQVBJcyB3aGljaCB1c2VzIFtub2RlLmpzXShodHRwOi8vbm9kZWpzLm9yZyksIFtNb2NoYV0oaHR0cDovL21vY2hhanMubm9kZSksIGFuZCBbQ2hhaS5qc10od3d3LmNoYWlqcy5jb20pLCBhbmQgSlNPTiBmaWxlcyBkZWZpbmluZyB0ZXN0IHBhcmFtZXRlcnMgCmFuZCBleHBlY3RlZCByZXN1bHRzIHRvIHJ1biBzaW1wbGUgUkVTVCBBUEkgdGVzdHMgd2l0aCB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcmlzdGljczoKKiAgIGEgZGV0ZXJtaW5pc3RpYyByZXR1cm4gdmFsdWUKKiAgIGEgcmVzcG9uc2UgY29kZQoKVGhlICpzaW1wbGUtcmVzdC10ZXN0ZXIqIHBhY2thZ2UgaW5jbHVkZXMgdGhyZWUgYXBwbGljYXRpb25zOgoqICAgc2ltcGxlLXJlc3QtdGVzdGVyLCB3aGljaCBydW5zIHRlc3RzIG9uIGFsbCBKU09OIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgaGFuZGxpbmcgZGVwZW5kZW5jaWVzIChmb3IgdGVzdHMgd2hpY2ggdXNlIHRoZSByZXN1bHRzIG9mIG90aGVyIHRlc3RzKQoqICAgc3J0LWdlbmVyYXRvciwgd2hpY2ggY3JlYXRlcyB0ZXN0IEpTT04gZmlsZXMgZnJvbSBhbiBbT3BlbkFQSSAzXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIHNwZWNpZmljYXRpb24gd2l0aCBhIHNtYWxsIG51bWJlciBvZiB2ZW5kb3IgZXh0ZW5zaW9ucyBkZXNjcmliZWQgYmVsb3cKKiAgIHNydC1leHBhbmQtbWFjcm9zLCB3aGljaCBhbGxvd3MgeW91IHRvIHNob3cgd2hhdCBhIHRlc3QgZmlsZSBsb29rcyBsaWtlIGFmdGVyIG1hY3JvIHJlcGxhY2VtZW50IGZvciBtYWNyb3MgZGVmaW5lZCBhdCB0aGUgY29tbWFuZCBsaW5lIGFuZCB1c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMKClRoZXJlIGlzIGFsc28gYW4gQVBJIGZvciB1c2UgaWYgeW91ciB0ZXN0aW5nIG5lZWRzIGFyZSBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gd2hhdCBjYW4gYmUgaGFuZGxlZCBieSB0aGUgKnNpbXBsZS1yZXN0LXRlc3RlciogYXBwbGljYXRpb24gKGZvciBleGFtcGxlLCB5b3UgbmVlZCB0byBydW4gdGVzdHMgaW4gYSAKc3BlY2lmaWMgb3JkZXIgZGlmZmVyZW50IGZyb20gdGhhdCB1c2VkIGJ5IHRoZSBwcm92aWRlZCBhcHBsaWNhdGlvbikuCgojIyBJbnN0YWxsYXRpb24KIyMjIEZvciBDb21tYW5kLUxpbmUgVXNlClRvIHVzZSB0aGUgdGhyZWUgYXBwbGljYXRpb25zIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgaW5zdGFsbCB1c2luZyBucG0gd2l0aCB0aGUgLWcgLyAtLWdsb2JhbCBmbGFnOgpgYGBiYXNoCm5wbSBpbnN0YWxsIC1nIHNpbXBsZS1yZXN0LXRlc3RlcgpgYGAKIyMjIFRvIFVzZSB0aGUgc2ltcGxlLXJlc3QtdGVzdGVyIEVuZ2luZSBEaXJlY3RseQpgYGBiYXNoCm5wbSBpbnN0YWxsIHNpbXBsZS1yZXN0LXRlc3RlcgpgYGAKCiMjIEpTT04gc3RydWN0dXJlClRoZSB0ZXN0IGluZm9ybWF0aW9uIGlzIHN0b3JlZCBpbiBhIEpTT04gZmlsZSB3aXRoIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKYGBgamF2YXNjcmlwdAp7CgkiZGVzY3JpcHRpb24iOiAvKiBEZXNjcmlwdGlvbiBvZiB0aGUgdGVzdCB0byBiZSBkaXNwbGF5ZWQgYnkgTW9jaGEgKi8KCSJleHBlY3RhdGlvbiI6IC8qIERlc2NyaXB0aW9uIG9mIHRoZSByZXN1bHRzIG9mIGEgc3VjY2Vzc2Z1bCB0ZXN0IHRvIGJlIGRpc3BsYXllZCBieSBNb2NoYSAqLwoJInN0YXR1cyI6IC8qIEV4cGVjdGVkIG51bWVyaWMgSFRUUCBzdGF0dXMgY29kZSwgdXNlZCBieSBhIE1vY2hhIGV4cGVjdCB0ZXN0IiAqLwoJInBhdGgtc3VmZml4IjogLyogQSBzdHJpbmcgdG8gYmUgYXBwZW5kZWQgdG8gdGhlIHBhdGggKHR5cGljYWxseSBhIHF1ZXJ5IHN0cmluZykgKi8gCgkicmVzcG9uc2VSZWdleHAiOiAvKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBkZXNjcmliaW5nIHRoZSBleHBlY3RlZCByZXNwb25zZSwgdXNlZCBieSBhIE1vY2hhIGV4cGVjdCB0ZXN0IChlLmcuIDIwMCwgMjA0LCA0MDAsIDQwMSwgNDA0LCBldGMpICovCgkic2F2ZVJlc3BvbnNlIjogLyogQSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgcmVzdWx0IG9mIHRoaXMgdGVzdCBzaG91bGQgYmUgc2F2ZWQgZm9yIGxhdGVyIHVzZSBieSBhbm90aGVyIHRlc3QgaW4gdGhlIHRlc3Qgc3VpdGUgKHRydWUgb3IgZmFsc2UpICovCgkidGVzdG5hbWUiOiAvKiBVbmlxdWUgKHdpdGhpbiB0ZXN0IHN1aXRlKSBpZGVudGlmaWVyICovCgkic2NoZW1lIjogLyogdGhlIFVSTCBzY2hlbWUgdG8gdXNlIGZvciB0aGlzIHRlc3QgKGh0dHAgb3IgaHR0cHMpICovCgoJInBheWxvYWQiOiAvKiBBbiBvYmplY3QgZ2l2aW5nIHRoZSBjb250ZW50cyBvZiB0aGUgYm9keSBvZiBhIFBPU1Qgb3IgUFVUIHJlcXVlc3QsIGlmIGFueSAqLwoJInBheWxvYWQtb3ZlcnJpZGUiOiAvKiBBbiBvYmplY3QgdGhhdCByZXBsYWNlcyBzb21lIGl0ZW1zIG9mIHRoZSBwYXlsb2FkIChub3JtYWxseSB1c2VkIGlmIHBheWxvYWQgaXMgc2V0IHRvIGFuIGV4YW1wbGUgdmFsdWUgYnV0IGEgc21hbGwgbnVtYmVyIG9mIG1lbWJlcnMgbmVlZCB0byBiZSBjaGFuZ2VkIgoKCSJvcHRpb25zIjogewoJCSJob3N0IjogLyogVGhlIG5hbWUgb3IgSVAgYWRkcmVzcyBvZiB0aGUgaG9zdCBob2xkaW5nIHRoZSBSRVNUIEFQSSBzZXJ2ZXIgdG8gYmUgdGVzdGVkICovCgkJInBvcnQiOiAvKiBUaGUgcG9ydCB0aGUgUkVTVCBBUEkgc2VydmVyIGlzIGxpc3RlbmluZyBvbiAqLwoJCSJwYXRoIjogLyogVGhlIHBhdGggb2YgdGhlIFJFU1QgQVBJIGVuZHBvaW50IHRvIGJlIHRlc3RlZCAqLwoJCSJtZXRob2QiOiAvKiBUaGUgSFRUUCBtZXRob2QgKFBPU1QsIEdFVCwgUFVULCBERUxFVEUsIGV0YykgKi8KCQkiaGVhZGVycyI6IC8qIEFuIG9iamVjdCBwcm92aWRpbmcgYW55IEhUVFAgaGVhZGVycywgZS5nLiAiYWNjZXB0IjogImFwcGxpY2F0aW9uL2pzb24iIG9yICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIgKi8KCQl9Cgl9CgoJInByZXJlcXVpc2l0ZXMiOiBbXSAvKiBBbiBhcnJheSBvZiB0ZXN0bmFtZXMgZm9yIHRlc3RzIHRoYXQgaGF2ZSB0byBiZSBwZXJmb21lZCBiZWZvcmUgdGhpcyB0ZXN0LCBmb3IgY2FzZXMgd2hlcmUgdGhlcmUgYXJlIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBub3QgaW4gdGhlIGZvcm0gb2YgcmV0dXJuZWQgdmFsdWVzICovCn0KYGBgCiogICBUaGUgdmFsdWUgb2YgYGRlc2NyaXB0aW9uYCBpcyBwYXNzZWQgdG8gdGhlIE1vY2hhYGRlc2NyaWJlYCBmdW5jdGlvbi4KKiAgIFRoZSB2YWx1ZSBvZiBgZXhwZWN0YXRpb25gIGlzIHBhc3NlZCB0byB0aGUgTW9jaGFgaWAgZnVuY3Rpb24uCiogICBUaGUgdmFsdWUgb2YgYHN0YXR1c2AgaXMgY29tcGFyZWQgdG8gdGhlIHN0YXR1cyBjb2RlIG9mIHRoZSBzZXJ2aWNlJ3MgcmVzcG9uc2UgdG8gdGhlIHJlcXVlc3QgaW4gYSBDaGFpLmpzYGV4cGVjYCB0ZXN0LgoqICAgVGhlIHZhbHVlIG9mIGByZXNwb25zZVJlcXVlc3RgIGlzIGNvbXBhcmVkIHRvIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgdGhlIHNlcnZpY2UgdG8gdGhlIHJlc3QgcmVxdWVzdCBpbiBhIENoYWkuanNgZXhwZWNgIHRlc3QuCiogICBUaGUgdmFsdWUgb2YgYHNhdmVSZXNwb25zZWAgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlciB0byB0aGlzIHJlcXVlc3Qgc2hvdWxkIGJlIHNhdmVkIGZvciB1c2UgaW4gYSBmdXR1cmUgdGVzdC4gU2VlICJtYWNyb3MiIGJlbG93IGZvciBtb3JlIGluZm9ybWF0aW9uLgoqICAgVGhlIHZhbHVlIG9mIGB0ZXN0bmFtZWAgaXMgdXNlZCBpbiBtYWNyb3MgdG8gcmVmZXIgdG8gcmV0dXJuZWQgcmVzdWx0cyBpbiBsYXRlciB0ZXN0cy4gU2VlICJtYWNyb3MiIGJlbG93IGZvciBtb3JlIGluZm9ybWF0aW9uLiBJdCBpcyBvbmx5IG5lY2Vzc2FyeSBpZiBzYXZlUmVzcG9uc2UgaXMgdHJ1ZS4gQnkgY29udmVudGlvbiwgaXQgaGFzIHRoZSBmb3JtYXQgTUVUSE9EX3NlcnZpY2VfcmVzcG9uc2UsIGUuZy4gUE9TVF9teXNlcnZpY2VfMjAwLgoqICAgVGhlIHZhbHVlIG9mIGBzY2hlbWVgIGlzIHVzZWQgd2l0aCBhYHJlcXVpcmVgIGNvbW1hbmQgdG8gY3JlYXRlIGFuIGh0dHAgb3IgaHR0cHMgb2JqZWN0LgoqICAgVGhlIHZhbHVlIG9mIGBwYXlsb2FkYCBpcyB3cml0dGVuIGludG8gdGhlIFBPU1Qgb3IgUFVUIHJlcXVlc3QuCiogICBUaGUgYG9wdGlvbnNgIG9iamVjdCBpcyB0aGUgcGFzc2VkIGludG8gdGhlIFtodHRwLnJlcXVlc3RdKGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfaHR0cF9yZXF1ZXN0X29wdGlvbnNfY2FsbGJhY2spIG9yIFtodHRwcy5yZXF1ZXN0XShodHRwczovL25vZGVqcy5vcmcvYXBpL2h0dHBzLmh0bWwjaHR0cHNfaHR0cHNfcmVxdWVzdF9vcHRpb25zX2NhbGxiYWNrKSBmdW5jdGlvbi4KKiAgIFRoZSBgcHJlcmVxdWlzaXRlc2AgYXJyYXkgaXMgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgcHJlcmVxdWlzaXRlcyBjYWxjdWxhdGVkIGJhc2VkIG9uIG1hY3JvIGRlZmluaXRpb25zIHRvIGZvcmNlIHRlc3RzIHRvIGJlIHBlcmZvcm1lZCBpbiBhIHNwZWNpZmljIG9yZGVyLgoKIyMgVGVzdCBGaWxlIE5hbWVzCkJ5IGNvbnZlbnRpb24sIHRoZSBiYXNlIGZpbGUgbmFtZSBpcyB0aGUgc2FtZSBhcyB0aGUgdGVzdG5hbWUgbWVtYmVyLCB3aXRoIHRoZSBleHRlbnNpb24gImpzb24iOiBNRVRIT0Rfc2VydmljZV9yZXNwb25zZS5qc29uLCAKZS5nLiBQT1NUX215c2VydmljZV8yMDAuanNvbiwgYnV0IHlvdSBtYXkgcGljayB3aGF0ZXZlciBjb252ZW50aW9uIHlvdSBsaWtlLgpJZiB5b3UgYXJlIHVzaW5nIHNydC1nZW5lYXRvciB0byBnZW5lcmF0ZSB0ZXN0IGZpbGVzIGZyb20gYW4gb3BlbmFwaSBzcGVjaWZpY2F0aW9uLCB5b3UgbWF5IHVzZSB0aGUgZmlsZW5hbWUga2V5IHRvIHNwZWNpZnkgYSBjdXN0b20gbmFtZS4KCiMjIENyZWF0aW5nIFRlc3RzIGZyb20gYW4gT3BlbkFQSSBTcGVjaWZpY2F0aW9uOiBzcnQtZ2VuZXJhdG9yCiMjIyBSdW5uaW5nIHNydC1nZW5lcmF0b3IKYHNydC1nZW5lcmF0b3IgWy0taGVscHwtaF0gfCBbLS1vdmVyd3JpdGV8LU9dIFstLXF1aWV0fC1xXSBbLS1zZXJ2ZXI9I3wtcyAjXSBvcGVuYXBpLnlhbWwtMSBbb3BlbmFwaS55YW1sLTIgLi4uXWAKd2hlcmUKKiAgIC1oIC8gLS1oZWxwOiBzaG93cyBjb21tYW5kIGhlbHAKKiAgIC1PIC8gLS1vdmVyd3JpdGU6IG92ZXJ3cml0ZXMgYWxsIGV4aXN0aW5nIGZpbGVzIHdpdGhvdXQgYXNraW5nCiogICAtcSAvIC0tcXVpZXQ6IHN1cHByZXNzZXMgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyBhYm91dCB3aGljaCBmaWxlcyBhcmUgYmVpbmcgb3Zlci13cml0dGVuLCBldGMKKiAgIC1zICMgLyAtLXNlcnZlcj0jOiBwdWxsIHNjaGVtZSwgaG9zdCwgYW5kIHBvcnQgZnJvbSB0aGUgZGVmaW5pdGlvbiBmb3Igc2VydmVyIGluZGV4IGAjYCBpbnN0ZWFkIG9mIGZyb20gc2VydmVyIGluZGV4IDAKCiMjIyBTdGFuZGFyZCBFbGVtZW50cyBVc2VkCiogICBgc2VydmVyc1swXWA6IHVzZWQgdG8gZmluZCB0aGUgc2NoZW1lLCBob3N0bmFtZSwgcG9ydCwgYW5kIHBhdGggcHJlZml4LCBpZiBhbnkuCiogICBgcGF0aHMucGF0aGA6IHVzZWQgdG8gY3JlYXRlIHRoZSBgdGVzdG5hbWVgIG1lbWJlciwgdGhlIGZpbGVuYW1lLCB0aGUgdGVzdCBkZXNjcmlwdGlvbiwgYW5kIHRoZSBVUkwgYHBhdGhgIG1lbWJlciBmb3IgdGhlIGh0dHAvaHR0cHMgYG9wdGlvbnNgIG9iamVjdC4KKiAgIGBwYXRocy5wYXRoLm1ldGhvZGA6IHVzZWQgdG8gY3JlYXRlIHRoZSBgdGVzdG5hbWVgIG1lbWJlciwgdGhlIGZpbGVuYW1lLCBhbmQgdGhlIGBtZXRob2RgIG1lbWJlciBvZiB0aGUgaHR0cC9odHRwcyBgb3B0aW9uc2Agb2JqZWN0LgoqICAgYHBhdGhzLnBhdGgubWV0aG9kLnJlcXVlc3RCb2R5LmNvbnRlbnQuYXBwbGljYXRpb24vanNvbi5leGFtcGxlc2A6IHVzZWQgZm9yIHRoZSBwYXlsb2FkIGFuZCBhcyBhIHN1ZmZpeCBmb3IgdGhlIGZpbGVuYW1lIGZvciBQT1NUIGFuZCBQVVQgcmVxdWVzdHMuCiogICBgcGF0aHMubWV0aG9kLnJlc3BvbnNlcy5yZXNwb25zZWA6IHVzZWQgZm9yIHRoZSBleHBlY3RlZCByZXR1cm5lZCBzdGF0dXMgZnJvbSB0aGUgc2VydmVyCgojIyMgVmVuZG9yIEV4dGVuc2lvbnMKVGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBpbmNsdWRlIHF1aXRlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBtYWtlIHRlc3RzIHVzZWZ1bC4gVGhlIHZlbmRvciBleHRlbnNpb24gZWxlbWVudCBgeC1zcnRgIGFsbG93cyBzcnQtZ2VuZXJhdG9yIHRvIGNyZWF0ZSB0ZXN0cyB3aGljaCBhcmUgbW9yZSB0aGFuIGp1c3Qgc3R1YnMgdGhhdCBuZWVkIHRvIGJlIGZpbGxlZCBpbi4KVGhlIHgtc3J0IGVsZW1lbnQgYWxsb3dzIGFueSBlbGVtZW50IG9mIHRoZSBKU09OIHRlc3QgZmlsZSB0byBiZSBzZXQsIG92ZXJyaWRpbmcgdGhlIHZhbHVlcyB0aGF0ICpzcnQtZ2VuZXJhdG9yKiBieSBkZWZhdWx0IHB1bGxzIG91dCBvZiB0aGUgc3BlYyBmaWxlLiBUaGlzIGlzIGEgcG93ZXJmdWwgZmVhdHVyZSwgYnV0IGNhbiBhbHNvIGxlYWQgdG8gcHJvYmxlbXMgd2hpY2ggbWF5CmJlIGRpZmZpY3VsdCB0byBkZWJ1Zy4gSW4gZ2VuZXJhbCwgYSB0ZXN0IHdpbGwgbmVlZCB0byBkZWZpbmUgdGhlIGBkZXNjcmlwdGlvbmAsIGBleHBlY3RhdGlvbmAsIGByZXNwb25zZS1yZWdleHBgLCBgcGF0aC1zdWZmaXhgIGFuZCBgcGF0aC1zdWJzdGAgbWVtYmVycyBoZXJlLCBidXQgeW91IG1heSBmaW5kIHRoZSBkZWZhdWx0IHZhbHVlcyBhcmUgc3VpdGFibGUgaW4gc29tZSBjYXNlcy4KCiMjIyMgQ2F2ZWF0Ckl0IGdvZXMgd2l0aG91dCBzYXlpbmcgdGhhdCB5b3Ugc2hvdWxkIG5vdCBwdXQgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgaW50byB5b3VyIE9wZW5BUEkgc3BlYyBmaWxlIGZvciB0ZXN0aW5nLiBVc2UgdGhlIGVudmlyb25tZW50IG1hY3JvIGZhY2lsaXR5IGRlc2NyaWJlZCBiZWxvdyBpZiB5b3UgbmVlZCB0byBwZXJmb3JtIHRlc3RzIHJlcXVpcmluZyBhdXRoZW50aWNhdGlvbi4KCiMjIyMgcGF0aHMucGF0aC5tZXRob2QucmVzcG9uc2VzLnJlc3BvbnNlLngtc3J0L2Rlc2NyaXB0aW9uClRoaXMgcHJvdmlkZXMgdGhlIGBkZXNjcmlwdGlvbmAgbWVtYmVyIG9mIHRoZSB0ZXN0IG9iamVjdC4KCiMjIyMgcGF0aHMucGF0aC5tZXRob2QucmVzcG9uc2VzLnJlc3BvbnNlLngtc3J0L2V4cGVjdGF0aW9uClRoaXMgZXh0ZW5zaW9uIGlzIHVzZWQgdG8gcHJvdmlkZSB0aGUgYGV4cGVjdGF0aW9uYCBtZW1iZXIgb2YgdGhlIHRlc3Qgb2JqZWN0LgoKIyMjIyBwYXRocy5wYXRoLm1ldGhvZC5yZXNwb25zZXMucmVzcG9uc2UueC1zcnQvZmlsZW5hbWUKVGhpcyBtYXkgYmUgdXNlZCB0byBwcm92aWRlIGEgY3VzdG9tIGZpbGVuYW1lIGZvciB0aGUgdGVzdC4KCiMjIyMgcGF0aHMucGF0aC5tZXRob2QucmVzcG9uc2VzLnJlc3BvbnNlLngtc3J0LnJlc3BvbnNlLXJlZ2V4cApUaGlzIHByb3ZpZGVzIGEgcmVnZXhwIG1hdGNoaW5nIHRoZSBleHBlY3RlZCByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIElmIGl0IGlzIG5vdCBwcmVzZW50LCBhbGwgcmVzcG9uc2VzIGFyZSBjb25zaWRlcmVkIG1hdGNoZXMuCgojIyMjIHBhdGhzLnBhdGgubWV0aG9kLnJlc3BvbnNlcy5yZXNwb25zZS54LXNydC5wYXRoLXN1ZmZpeApUaGlzIGV4dGVuc2lvbiBpcyB1c2VkIHRvIGJ1aWxkIHRoZSBgcGF0aGAgbWVtYmVyIG9mIHRoZSB0ZXN0IG9iamVjdC4KCiMjIyMgcGF0aHMucGF0aC5tZXRob2QucmVzcG9uc2VzLnJlc3BvbnNlLngtc3J0LnNraXAtdGVzdApUaGlzIGV4dGVuc2lvbiBtYXkgYmUgdXNlZCB3aXRoIHJlc3BvbnNlcyBmb3Igd2hpY2ggbm8gdGVzdCBjYXNlIGlzIGRlc2lyZWQsIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjAuMSwgdGhpcyBpcyB1bm5lY2Vzc2FyeSBhcyBubwp0ZXN0cyB3aWxsIGJlIGdlbmVyYXRlZCBmb3IgcmVzcG9uc2VzIHdpdGggbm8geC1zcnQgbWVtYmVyLCBidXQgaXQgcmVtYWlucyBhbmQgaXMgbm90IGRlcHJlY2F0ZWQgZm9yIHRob3NlIHdobyBjaG9vc2UgdG8gZGlzdGluZ3Vpc2gKYmV0d2VlbiByZXNwb25zZXMgd2hpY2ggaGF2ZSBub3QgYmVlbiBjb25zaWRlcmVkIGFuZCB0aG9zZSB3aGljaCBoYXZlIGJlZW4gZXhwbGljaXRseSBpZ25vcmVkLgoKIyMjIyBwYXRocy5wYXRoLm1ldGhvZC5yZXNwb25zZXMucmVzcG9uc2UueC1zcnQucGF5bG9hZApUaGlzIGV4dGVuc2lvbiBzaG91bGQgYmUgdXNlZCB0byBwcm92aWRlIGEgcGF5bG9hZCBmb3IgdGVzdHMgd2hpY2ggZG8gbm90IHVzZSB0aGUgcGF0aHMucGF0aC5tZXRob2QucmVxdWVzdEJvZHkuY29udGVudC5hcHBsaWNhdGlvbi9qc29uL2V4YW1wbGVzIGVsZW1lbnQgdG8gcHJvdmlkZSB0aGUgYm9keSBvZiBhIHJlcXVlc3QuCgojIyMjIHBhdGhzLnBhdGgubWV0aG9kLnJlc3BvbnNlcy5yZXNwb25zZS54LXNydC5wYXlsb2FkLW92ZXJyaWRlClRoaXMgZXh0ZW5zaW9uIHNob3VsZCBiZSB1c2VkIHdpdGggdGhlIHgtc3J0LnBheWxvYWQgZXh0ZW5zaW9uIHRvIG92ZXJyaWRlIHNvbWUgbWVtYmVycyBvZiB0aGUgbWFpbiBwYXlsb2FkIGV4dGVuc2lvbi4gVGhlIHVzZSBjYXNlIGZvciB0aGlzIGlzIHNldHRpbmcgdGhlIHBheWxvYWQgdG8gYSByZWZlcmVuY2UgdG8gYW4gZXhhbXBsZSBpbiB0aGUgY29tcG9uZW50IHNlY3Rpb24sIGFuZCB0aGVuIGNoYW5naW5nIGEgbWVtYmVyIHRvIGdlbmVyYXRlIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHRlc3QgKGUuZy4gY2hhbmdpbmcgYSBtZW1iZXIgdG8gYW4gaW52YWxpZCB2YWx1ZSB0byB0ZXN0IGNvZGUgcGF0aHMgaW4gdGhlIEFQSSBzZXJ2aWNlIGRlYWxpbmcgd2l0aCBiYWQgaW5wdXQpLgoKIyMjIyBwYXRocy5wYXRoLm1ldGhvZC5yZXNwb25zZXMucmVzcG9uc2UueC1zcnQucGF0aC1zdWJzdApUaGlzIGV4dGVuc2lvbi4gaWYgcHJlc2VudCwgc2hvdWxkIGJlIGEgc2V0IG9mIGtleS12YWx1ZSBwYWlycyB3aGVyZSB0aGUga2V5IHJlcHJlc2VudHMgYSBwYXJ0IG9mIHRoZSBwYXRoIHRvIGJlIHJlcGxhY2VkLCBhbmQgdGhlIHZhbHVlIGlzIHRoZSBzdWJzdGl0dXRlZCB2YWx1ZS4KCiMjIyMgcGF0aHMucGF0aC5tZXRob2QucmVzcG9uc2VzLnJlc3BvbnNlLngtc3J0LnNjaGVtZQpUaGlzIG1heSBiZSB1c2VkIHRvIG92ZXItcmlkZSB0aGUgc2NoZW1lIHVzZSBmb3IgdGVzdGluZyAoaHR0cCBvciBodHRwcykgd2hpY2ggaXMgYnkgZGVmYXVsdCBvYnRhaW5lZCBmcm9tIHRoZSBmaXJzdCBkZWZpbmVkIHNlcnZlci4KCiMjIyMgcGF0aHMucGF0aC5tZXRob2QucmVzcG9uc2VzLnJlc3BvbnNlLngtc3J0Lm9wdGlvbnMuaG9zdApUaGlzIG1heSBiZSB1c2VkIHRvIG92ZXItcmlkZSB0aGUgaG9zdCB1c2VkIGZvciB0ZXN0aW5nIHdoaWNoIGlzIG9idGFpbmVkIGZyb20gdGhlIGZpcnN0IGRlZmluZWQgc2VydmVyLgoKIyMjIyBwYXRocy5wYXRoLm1ldGhvZC5yZXNwb25zZXMucmVzcG9uc2UueC1zcnQub3B0aW9ucy5wb3J0ClRoaXMgbWF5IGJlIHVzZWQgdG8gb3Zlci1yaWRlIHRoZSBwb3J0IHVzZWQgZm9yIHRlc3Rpbmcgd2hpY2ggaXMgb2J0YWluZWQgZnJvbSB0aGUgZmlyc3QgZGVmaW5lZCBzZXJ2ZXIuCgojIyMjIHBhdGhzLnBhdGgubWV0aG9kLnJlc3BvbnNlcy5yZXNwb25zZS54LXNydC5vcHRpb25zLmhlYWRlcnMKVGhpcyBhcnJheSBjYW4gYmUgdXNlZCB0byBhZGQgaGVhZGVyIGRhdGEgdG8gdGhlIG9wdGlvbnMgb2JqZWN0IHBhc3NlZCB0byB0aGUgaHR0cC9odHRwcyByZXF1ZXN0IGZ1bmN0aW9uLiBUaGUgdmFsdWVzIHByb3ZpZGVkIGhlcmUgb3Zlci1yaWRlIGFueSBkZWZhdWx0IHZhbHVlcyBmb3IgYENvbnRlbnQtVHlwZWAgb3IgYGFjY2VwdGAuCgojIyMjIHBhdGhzLnBhdGgubWV0aG9kLnJlc3BvbnNlcy5yZXNwb25zZS54LXNydC5wcmVyZXF1aXNpdGVzClRoaXMgYXJyYXkgbGlzdHMgdGVzdG5hbWVzIGZvciB0ZXN0cyB0aGF0IG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgY3VycmVudCB0ZXN0LgoKIyMgRXhhbXBsZSBPcGVuQVBJIFNwZWNpZmljYXRpb24KQW4gZXhhbXBsZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gdGhhdCBpbmNsdWRlcyB0aGUgdmVuZG9yIGV4dGVuc2lvbnMgZGVzY3JpYmVkIGFib3ZlIGNhbiBiZSBmb3VuZCBpbiB0aGUgW2V4YW1wbGVzL29wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9KbWNsZW9kZm9zcy9zcnQtZ2VuZXJhdG9yL2Jsb2IvbWFzdGVyL2V4YW1wbGVzL29wZW5hcGlsKSBkaXJlY3Rvcnk6CmFsb25nIHdpdGggb3V0cHV0IEpTT04gZmlsZXMgc3J0LWdlbmVyYXRvciBnZW5lcmF0ZXM6CiogICBvcGVuYXBpLnlhbWwKKiAgIERFTEVURV9wb2ludF8yMDQuanNvbgoqICAgREVMRVRFX3BvaW50XzQwMS5qc29uCiogICBERUxFVEVfcG9pbnRfNDA0Lmpzb24KKiAgIEdFVF9waW5nXzIwNC5qc29uCiogICBHRVRfcG9pbnRfMjAwLmpzb24KKiAgIEdFVF9wb2ludF80MDQuanNvbgoqICAgUE9TVF9wb2ludF8yMDBfcG9pbnRPcmlnaW4uanNvbgoqICAgUE9TVF9wb2ludF80MDAuanNvbgoqICAgUFVUX3BvaW50XzIwNF9wb2ludDkwRGVncmVlcy5qc29uCiogICBQVVRfcG9pbnRfNDAwLmpzb24KKiAgIFBVVF9wb2ludF80MDEuanNvbgoqICAgUFVUX3BvaW50XzQwNC5qc29uCgoqKk5vdGUqKiB0aGF0IGdlbmVyYXRpbmcgYSBzZXJ2ZXIgdXNpbmcgKm9wZW5hcGktZ2VuZXJhdG9yKiBhbmQgcnVubmluZyBpdCwgYW5kIHRoZSBydW5uaW5nIG1vY2hhIGFnYWluc3QgdGhlc2UgdGVzdHMsIHdpbGwgKm5vdCogcmVzdWx0IGluIHRoZSBleHBlY3RlZCBiZWhhdmlvciBmb3IgdGhlIFwqNDB4Lmpzb24gZmlsZXMgYXMgdGhlcmUgaXMgbm8KY29kZSBiYWNraW5nIHRoZSBwb2ludCBzZXJ2aWNlIHRvIHJldHVybiBlcnJvciB2YWx1ZXMuCgojIyBSdW5uaW5nIFRlc3RzOiBzaW1wbGUtcmVzdC10ZXN0ZXIKT25jZSB5b3UgaGF2ZSBjcmVhdGVkIHlvdXIgdGVzdCBzcGVjaWZpY2F0aW9uIEpTT04gZmlsZXMsIGVpdGhlciBmcm9tIGFuIE9wZW5BUEkgc3BlYyBvciBtYW51YWxseSwgeW91IGNhbiBydW4geW91ciB0ZXN0cy4gRmlyc3QsIHN0YXJ0IHRoZSBzZXJ2aWNlcyB5b3UgYXJlIHRlc3RpbmcsIHRoZW4sIGZyb20gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSB0ZXN0CnNwZWNpZmljYXRpb24gZmlsZXMsIHJ1bgpgc2ltcGxlLXJlc3QtdGVzdGVyYApUaGUgYXBwbGljYXRpb24gd2lsbCBhbmFseXplIHlvdXIgdGVzdCBzcGVjaWZpY2F0aW9ucywgYXR0ZW1wdCB0byBkZXRlcm1pbmUgdGhlIG9yZGVyIGluIHdoaWNoIHRvIGNvbmR1Y3QgdGhlIHRlc3RzLCBhbmQgcnVuIE1vY2hhLmpzIG9uIGVhY2ggZGVmaW5lZCB0ZXN0LgoKIyMgTWFjcm9zCldpdGhpbiBhIGdpdmVuIHJ1biBvZiBhIHN1aXRlIG9mIHRlc3RzLCBpdCBpcyBwb3NzaWJsZSB0byBzYXZlIGluZm9ybWF0aW9uIHJldHVybmVkIGluIG9uZSB0ZXN0IGZvciB1c2UgaW4gYSBsYXRlciB0ZXN0LCBmb3IgZXhhbXBsZSwgc2F2aW5nIHRoZSByZXR1cm5lZCBpdGVtIGluZGV4IGZyb20gYSBQT1NUIHJlcXVlc3QgdG8gdXNlIGluIGEgREVMRVRFLCBHRVQsIApvciBQVVQgcmVxdWVzdC4gTWFjcm9zIG1heSBhcHBlYXIgaW4gYW55IHN0cmluZyB2YWx1ZSBpbiB0aGUgdGVzdCBvYmplY3QsIGFsdGhvdWdoIHRoZXkgYXJlIG1vc3QgdXNlZnVsIGluIHRoZSBgcGF0aGAgYW5kIGBwYXlsb2FkYCB2YWx1ZXMuCgojIyMgU2F2aW5nIFJlc3BvbnNlcwpUbyBzYXZlIHRoZSByZXNwb25zZSBmcm9tIGEgdGVzdCwgdGhlIGZvbGxvd2luZyBlbGVtZW50cyBuZWVkIHRvIGJlIGRlZmluZWQgaW4gdGhlIHRlc3Qgb2JqZWN0OgoqICAgYHNhdmVSZXNwb25zZTogdHJ1ZWAKKiAgIGB0ZXN0bmFtZTogLyogQSB1bmlxdWUgbmFtZSBmb3IgdGhlIHRlc3QsIGUuZy4gUE9TVF90YWdfMjAwICovYAoKVGhlIHRlc3QgbXVzdCByZXR1cm4gYW4gb2JqZWN0IGxpa2UgYHsiYWRkZWRJdGVtSW5kZXgiOiIxOTMifWAuCgojIyMgUmVmZXJyaW5nIHRvIFNhdmVkIERhdGEKVG8gcmVmZXIgdG8gc2F2ZWQgaW5mb3JtYXRpb24gaW4gYSBsYXRlciB0ZXN0LCB1c2UgYSBtYWNybyB3aXRoIHRoZSBmb3JtYXQgYCR7c2F2ZWQtdGVzdG5hbWV9Lm1lbWJlcmAsIGUuZy4gYCR7UE9TVF9pdGVtXzIwMH0uYWRkZWRJdGVtSW5kZXhgLiAKQWxsIG9jY3VycmVuY2VzIG9mIHRoaXMgbWFjcm8gd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgbmFtZWQgdGVzdC4KCkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBwYXRoIGNvbnRhaW5pbmcgYSBtYWNybyAoaW4gdGhlIGBvcHRpb25zYCBtZW1iZXIgb2YgdGhlIHRlc3Qgc3BlY2lmaWNhdGlvbik6CmBgYGpzb24KInBhdGgiOiAiL3YxL2l0ZW0vJHtQT1NUX2l0ZW1fMjAwfS5hZGRlZEl0ZW1JbmRleD9xdWVyeVBhcmFtZXRlcj0xIgpgYGAKQWZ0ZXIgbWFjcm8gcmVwbGFjZW1lbnQsIHRoaXMgd2lsbCBiZWNvbWUgKHVzaW5nIG91ciBleGFtcGxlIGBhZGRlZEl0ZW1JbmRleGAgZnJvbSBhYm92ZSk6CmBgYGpzb24KInBhdGgiOiAiL3YxL2l0ZW0vMTkzP3F1ZXJ5UGFyYW1ldGVyPTEiCmBgYApTaW1pbGFyIHN1YnN0aXR1dGlvbnMgY2FuIHRha2UgcGxhY2UgaW4gdGhlIHBheWxvYWQgb2JqZWN0LgoKIyMjIEdlbmVyYWwtUHVycG9zZSBKYXZhc2NyaXB0IE1hY3JvcwpTdGFyaW5nIHdpdGggdmVyc2lvbiAxLjAuMiwgeW91IG1heSBkZWZpbmUgZ2VuZXJpYyBtYWNyb3MgaW4gYSByZXNwb25zZSdzIHgtc3J0IHNlY3Rpb24uIFRoZXNlIGNvbWUgaW4gdHdvIHR5cGVzLCBkaXN0aW5ndWlzaGVkIGJ5IHRoZSBgZGVmaW5pdGlvblBoYXNlYCBtZW1iZXIuIElmIHRoZQpgZGVmaW5pdGlvblBoYXNlYCBpcyBgcHJlUmVxdWVzdGAsIHRoZW4gdGhlIG1hY3JvIGlzIGV4ZWN1dGVkIGJlZm9yZSB0aGUgaHR0cC9odHRwcyByZXF1ZXN0IGlzIG1hZGUsIGFuZCBpdCBtYXkgbW9kaWZ5IHRoZSByZXF1ZXN0LiBJZiB0aGUgYGRlZmluaXRpb25QaGFzZWAgaXMgYHBvc3RSZXNwb25zZWAsCnRoZW4gaXQgY2FuIHVzZSBjb21wb25lbnRzIG9mIHRoZSByZXNwb25zZSBpbiBpdHMgZGVmaW5pdGlvbi4KCiMjIyMgcHJlUmVxdWVzdCBKYXZhc2NyaXB0IE1hY3JvcwpUaGUgcHJlLXJlcXVlc3QgbWFjcm8gbWVjaGFuaXNtIG1heSBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYWRkIGEgY291bnRlciB0byBhIHZhbHVlIHdoaWNoIHRoZSBzZXJ2ZXIgYmVpbmcgdGVzdGVkIGFnYWluc3QgZXhwZWN0cyB0byBiZSB1bmlxdWUuIEluIHRoZSBleGFtcGxlIGJlbG93LCB0aGUgdXNlcm5hbWUKbXVzdCBiZSB1bmlxdWUuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IHJlYWRpbmcgYSBjb3VudGVyIHdoaWNoIGlzIHBlcnNpc3RlZCBpbiBhIGZpbGUgaW4gdGhlIHRlc3QgZGlyZWN0b3J5IChjcmVhdGluZyBpdCBpZiBuZWNlc3NhcnkpLCBpbmNyZW1lbnRpbmcgaXQsIGFuZCByZXR1cm5pbmcgaXQsCmJ1dCBhbHNvIGFkZGluZyBpdCB0byB0aGUgdXNlck5hbWUgdmFsdWUgaW4gdGhlIHBheWxvYWQgKHdoaWNoIG9uZSBtaWdodCB3YW50IHRvIGRvIGlmIHRoZSBwYXlsb2FkIGNvbWVzIGZyb20gYW4gZXhhbXBsZSBpbiB0aGUgT3BlbkFQSSBkZWZpbml0aW9uIGZpbGUpLgpgYGB5YW1sCnBhdGhzOgogIC4uLgogIC91c2VyOgogICAgLi4uCiAgICBQT1NUOgogICAgICAuLi4KICAgICAgcmVzcG9uc2VzOgogICAgICAgICIyMDAiOgogICAgICAgICAgZGVzY3JpcHRpb246ICJTdWNjZXNzZnVsbHkgYWRkZWQgdXNlcjsgcmV0dXJucyB1c2VybmFtZSBhbmQgcGFzc3dvcmQiCiAgICAgICAgICB4LXNydDoKICAgICAgICAgICAgZXhwZWN0YXRpb246ICJzaG91bGQgcmV0dXJuIHRoZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQiCiAgICAgICAgICAgIG1hY3JvRGVmOgogICAgICAgICAgICAtIG5hbWU6ICd1c2VyTmFtZUNvdW50ZXInCiAgICAgICAgICAgICAgZGVmaW5pdGlvblBoYXNlOiAncHJlUmVxdWVzdCcKICAgICAgICAgICAgICBkZWZpbml0aW9uOiB8CiAgICAgICAgICAgICAgICAocmVxRGVzY3IpID0+IHsKICAgICAgICAgICAgICAgICAgY29uc3QgZnMgPSByZXF1aXJlKCdmcycpOwogICAgICAgICAgICAgICAgICBjb25zdCBmbiA9ICdwZXJzaXN0ZW50LWNvdW50ZXIudHh0JzsKICAgICAgICAgICAgICAgICAgbGV0IGNvdW50ZXIgPSBmcy5leGlzdHNTeW5jKGZuKSA/IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGZuKSkgKyAxIDogMDsKICAgICAgICAgICAgICAgICAgcmVxRGVzY3IucGF5bG9hZC51c2VyTmFtZSA9IHJlcURlc2NyLnBheWxvYWQudXNlck5hbWUgKyAiLSR7dXNlck5hbWVDb3VudGVyfSI7CiAgICAgICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZm4sIEpTT04uc3RyaW5naWZ5KGNvdW50ZXIpKTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXI7CiAgICAgICAgICAgICAgICB9CmBgYAoKIyMjIyBwb3N0UmVzcG9uc2UgSmF2YXNjcmlwdCBNYWNyb3MKVGhlIHBvc3QtcmVzcG9uc2UgbWFjcm8gbWVjaGFuaXNtIG1heSBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gc2F2ZSBhbiBhdXRoZW50aWNhdGlvbiBzdHJpbmcgZm9yIHVzZSBpbiBhIGxhdGVyIHRlc3QuCmBgYHlhbWwKcGF0aHM6CiAgLi4uCiAgL3VzZXI6CiAgICAuLi4KICAgIHBvc3Q6CiAgICAgIC4uLgogICAgICByZXNwb25zZXM6CiAgICAgICAgIjIwMCI6CiAgICAgICAgICBkZXNjcmlwdGlvbjogIlN1Y2Nlc3NmdWxseSBhZGRlZCB1c2VyOyByZXR1cm5zIHVzZXJuYW1lIGFuZCBwYXNzd29yZCIKICAgICAgICAgIHgtc3J0OgogICAgICAgICAgICBleHBlY3RhdGlvbjogInNob3VsZCByZXR1cm4gdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZCIKICAgICAgICAgICAgbWFjcm9EZWY6CiAgICAgICAgICAgIC0gbmFtZTogJ2F1dGhTdHJpbmcnCiAgICAgICAgICAgICAgZGVmaW5pdGlvblBoYXNlOiAncG9zdFJlc3BvbnNlJwogICAgICAgICAgICAgIGRlZmluaXRpb246IHwKICAgICAgICAgICAgICAgICh7Y29uc3VtZXJJZCwgcGFzc3dvcmR9KSA9PiB7CiAgICAgICAgICAgICAgICAgIHJldHVybiByZXF1aXJlKHByb2Nlc3MuY3dkKCkgKyAiL25vZGVfbW9kdWxlcy9iYXNlLTY0IikuZW5jb2RlKGNvbnN1bWVySWQgKyAiOiIgKyBwYXNzd29yZCk7CiAgICAgICAgICAgICAgICB9CiAgICAuLi4KCiAgICBwdXQ6CiAgICAgIC4uCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAiMjA0IjoKICAgICAgICAgIGRlc2NyaXB0aW9uOiAiU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgdXNlciIKICAgICAgICAgIHgtc3J0OgogICAgICAgICAgICBleHBlY3RhdGlvbjogInNob3VsZCB1cGRhdGUgdGhlIHVzZXIgd2l0aCB0aGUgbmV3IGRlc2NyaXB0aW9uIgogICAgICAgICAgICBwYXRoLXN1YnN0OiB7ICJ7dXNlcklkfSI6ICIke1BPU1RfdXNlcl8yMDBfZXhhbXBsZVVzZXIxfS51aWQiIH0KICAgICAgICAgICAgb3B0aW9uczoKICAgICAgICAgICAgICBoZWFkZXJzOgogICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogIkJhc2ljICR7UE9TVF91c2VyXzIwMH0uYXV0aFN0cmluZyIKYGBgClVuZm9ydHVuYXRlbHksIHN1cHBvcnQgZm9yIEphdmFzY3JpcHQgbWFjcm9zIGlzIG1hcmdpbmFsIGluIHNydC1leHBhbmQtbWFjcm9zLCBhcyBhY3R1YWxseSBldmFsdWF0aW5nIGEgbWFjcm8gbWlnaHQgaGF2ZSBwZXJtYW5lbnQgc2lkZS1lZmZlY3RzIChsaWtlIGluY3JlbWVudGluZyBhIGNvdW50ZXIpIHdoaWNoIGFyZSB1bmRlc2lyZWFibGUuCgojIyBFbnZpcm9ubWVudCBTdWJzdGl0dXRpb25zCllvdSBtYXkgcmVmZXIgdG8gZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzIGluIG1hY3JvcyBvZiB0aGUgZm9ybSBgJHtlbnZ9LkVOVklST05NRU5UX1ZBUklBQkxFX05BTUV9YC4gQSB2ZXJ5IGNvbnRyaXZlZCBleGFtcGxlIGlzIGAke2Vtdn0uUEFUSGAgd2lsbCBiZSBleHBhbmRlZCB0byB5b3VyIHBhdGguCk5vdGUgKGEpIHRoYXQgY2FzZSBpcyBpbXBvcnRhbnQsIGFuZCAoYiksIGlmIHlvdSBoYXZlIGEgdGVzdCB3aGljaCBzYXZlcyByZXN1bHRzIHVuZGVyIHRoZSBwcmVmaXggYCR7ZW52fWAsIGl0IHdvbid0IGJlIHBpY2tlZCB1cC4KCiMjIFVzZXItRGVmaW5lZCBNYWNyb3MKWW91IG1heSBhbHNvIGFkZCBtYWNyb3MgcHJvZ3JhbW1hdGljYWxseSB1c2luZyB0aGUgYGFkZE1hY3Jvc2AgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gcnVubmluZyBNb2NoYS5qcyB2aWEgdGhlICpzaW1wbGUtcmVzdC10ZXN0ZXIqIGFwcGxpY2F0aW9uIGJlY2F1c2Ugb2YgCmNvbXBsaWNhdGlvbnMgYXJpc2luZyBmcm9tIE1vY2hhLmpzIGNvbW1hbmQgbGluZSBwcm9jZXNzaW5nLiBUaGVzZSBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHRoZSBzZWN0aW9uICJSb2xsaW5nIFlvdXIgT3duIiwgYmVsb3cuCgojIyBEZWJ1Z2dpbmcKQmFzaWMgbG9nZ2luZyB0byBjb25zb2xlIG9mIHRoZSBwYXRoLCBwYXlsb2FkLCBzdGF0dXMgY29kZSwgYW5kIHJlc3BvbnNlLCBpcyBhdmFpbGFibGUgYnkgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYFNSVF9URVNUPTFgIChib3RoIHdoZW4gcnVubmluZyB0aGUgKnNpbXBsZS1yZXN0LXRlc3RlciogCmFwcGxpY2F0aW9uIGFuZCB3aGVuIHJ1bm5pbmcgdGhlIHNpbXBsZS1yZXN0LXRlc3RlciBlbmdpbmUgZnJvbSB5b3VyIG93biBhcHBsaWNhdGlvbikuCgojIyBSb2xsaW5nIFlvdXIgT3duCkNyZWF0ZSBhIHRlc3Qgc3VpdGUgdXNpbmcgYSBmaWxlIGxpa2UgW2V4YW1wbGVzL3Rlc3QuanNdKGh0dHBzOi8vZ2l0aHViLmNvbS9KbWNsZW9kZm9zcy9zaW1wbGUtcmVzdC10ZXN0ZXIvYmxvYi9tYXN0ZXIvZXhhbXBsZXMvdGVzdC5qcyk6CmBgYGphdmFzY3JpcHQKInVzZSBzdHJpY3QiOwoKY29uc3Qgc3J0ID0gcmVxdWlyZSgnc2ltcGxlLXJlc3QtdGVzdGVyJyk7CgpmdW5jdGlvbiB0ZXN0KGpzb25GaWxlKQp7Cgl2YXIgcmVxRGVzY3IgPSByZXF1aXJlKGpzb25GaWxlKTsKCgl0cnkgewoJCXNydC5tb2NoYShyZXFEZXNjcik7Cgl9IGNhdGNoIChleCkgewoJCWNvbnNvbGUubG9nKGV4KTsKCX0KfQoKc3J0LmFkZE1hY3JvKCd1c2VyLWRlZmluZWQnLCAnVXNlci1kZWZpbmVkIG1hY3JvIGdvZXMgaGVyZS4nKTsKc3J0LmFkZE1hY3JvKCd0aW1lc3RhbXAnLCBuZXcgRGF0ZSgpLmdldFRpbWUoKSk7CgovLyBPcmRlciBvZiB0ZXN0cyBpcyBpbXBvcnRhbnQgaWYgeW91IGFyZSB1c2luZyBtYWNyb3Mgb3JlIHJlbHlpbmcgb24gdGhlIGV4aXN0ZW5jZSBvZiByZXNvdXJjZXMgY3JlYXRlZCBieSBlYXJsaWVyIHRlc3RzIGluIGxhdGVyIHRlc3RzCnRlc3QoJy4vR0VUX3BpbmdfMjA0Lmpzb24nKQp0ZXN0KCcuL1BPU1Rfc2VydmljZV8yMDAuanNvbicpCnRlc3QoJy4vUE9TVF9zZXJ2aWNlXzQwMC5qc29uJykKLy8gZXRjCmBgYApUaGlzIHdpbGwgcmVzdWx0IGluIGFueSBvY2N1cnJlbmNlcyBvZiBgJHt1c2VyLWRlZmluZWR9YCBpbiB0aGUgdGVzdCBzcGVjaWZpY2F0aW9uIGJlaW5nIHJlcGxhY2VkIGJ5IHRoZSBzdHJpbmcgIlVzZXItZGVmaW5lZCBtYWNybyBnb2VzIGhlcmUuIiwgYW5kIGAke3RpbWVzdGFtcH1gIGJlaW5nIHJlcGxhY2VkIGJ5IHRoZSB0aW1lc3RhbXBlZCAKZ3JhYmJlZCBieSBub2RlIHdoZW4gdGhlIHByb2dyYW0gd2FzIGV4ZWN1dGVkLgoKSW52b2tlICptb2NoYSogaW4gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBhYm92ZSBzY3JpcHQgdG8gcnVuIHRoZSB0ZXN0cy4KCiMjIFZpZXdpbmcgTWFjcm8gU3Vic3RpdHV0aW9uczogc3J0LWV4cGFuZC1tYWNyb3MKRm9yIHRyb3VibGVzaG9vdGluZywgaXQgaXMgb2Z0ZW4gY29udmVuaWVudCB0byBzZWUgaG93IG1hY3JvcyBhcmUgZXhwYW5kZWQuIFRoaXMgY2FuIGJlIGRvbmUgdXNpbmcgdGhlICpzcnQtZXhwYW5kLW1hY3JvcyogYXBwbGljYXRpb24uCgojIyMgUnVubmluZyBzcnQtZXhwYW5kLW1hY3JvcwpgYGBiYXNoCnNydC1leHBhbmQtbWFjcm9zWy1oIHwgWy1EIG1hY3JvLTE9dmFsdWUtMSBbLUQgbWFjcm8tMj12YWx1ZTIgWy4uLl1dXSB0ZXN0LWRlZmluaXRpb24gW3Rlc3QtZGVmaW5pdGlvbiBbLi4uXV1dCmBgYAp3aGVyZQoqICAgLWggLyAtLWhlbHAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyB1c2FnZSBndWlkZQoqICAgLUQgLyAtLWRlZmluZSBzdHJpbmdbXSAgIERlZmluZSBtYWNybyBhcyBtYWNybz1zdWJzdGl0dXRpb24gKHRoaXMgY2FuIGFwcGVhciBtdWx0aXBsZSB0aW1lcykKCk1hY3JvcyBjYW4gYmUgZWl0aGVyIHJlc3BvbnNlLXN0eWxlIG1hY3JvcyAoJHthfS5iPXZhbHVlfSBvciBzaW1wbGUgc3Vic3RpdHV0aW9ucyAoJHthfT12YWx1ZSkuCgojIyBSZWxlYXNlcwojIyMgMS4wLjggMjAyMy0wNC0wNgpVcGRhdGUgZGVwZW5kZW5jaWVzIHRvIHJlbW92ZSBzZWN1cml0eSBpc3N1ZS4KRHJvcCB1bnVzZWQgbGlicmFyeSB0byByZW1vdmUgc2VjdXJpdHkgaXNzdWUuCgojIyMgMS4wLjcgMjAyMS0wNC0xOQpBZGQgYSBuZXcgZWxlbWVudCB0byBhbGxvdyB0aGUgZmlsZSBuYW1lIChhbmQgdGVzdCBuYW1lKSBjcmVhdGVkIGJ5IHNydC1nZW5lcmF0b3IgdG8gYmUgc3BlY2lmaWVkLgpBbGxvdyBERUxFVEUgbWV0aG9kcyB0byBoYXZlIGEgYm9keS4KQWxsb3cgYW4gYXJyYXkgb2YgdGVzdHMgdG8gYmUgZGVmaW5lZCBmb3IgYSByZXNwb25zZS4KQWxsb3cgYW4gYXJyYXkgb2YgcGF0aC1zdWJzdCByZXBsYWNlbWVudHMuCldoZW4gU1JUX0RFQlVHIGlzIHRydWUsIHNob3cgdGhlIG5hbWUgb2YgZWFjaCBmaWxlbmFtZSBhcyBpdCBpcyByZWFkIGluIGFuZCBwYXJzZWQuCkFkZCB2ZXJib3NlIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gc3J0LWdlbmVyYXRlLCBhbmQgbGlzdCBuYW1lIG9mIGVhY2ggZmlsZSBhcyBpdCBpcyB3cml0dGVuIHdoZW4gdmVyYm9zZSBtb2RlIGlzIGFjdGl2ZS4KV2hlbiB0aGUgZXhwZWN0ZWQgc3RhdHVzIGNvZGUgaXMgbm90IGVuY291bnRlcmVkLCBsaXN0IHRoZSBleHBlY3RlZCBzdGF0dXMgY29kZSBhZnRlciB0aGUgb25lIGFjdHVhbGx5IGVuY291bnRlcmVkICh0byBhc3Npc3Qgd2l0aCBkZWJ1Z2dpbmcpLgpGaXggaGFuZGxpbmcgb2YgcGF5bG9hZC1vdmVycmlkZSBmb3Igb2JqZWN0cywgYW5kIHJldmVydCB0byB1c2luZyBKU09OLnBhcnNlIGluc3RlYWQgb2YgdXNpbmcgVk0yLgoKIyMjIDEuMC42IDIwMjEtMDItMTIKQWRkIG5ldyBlbGVtZW50IHRvIGFsbG93IHBheWxvYWQgdG8gYmUgb3Zlci1yaWRkZW4uIChUaGlzIGFsbG93cyBhIHNpbmdsZSBleGFtcGxlIHRvIGJlIHVzZWQgZm9yIG11bHRpcGxlIHRlc3RzIGJ5IG1vZGlmeWluZyB2YXJpb3VzIG9mIGl0cyBwcm9wZXJ0aWVzIGF0IHRlc3QgdGltZS4pCgojIyMgMS4wLjUgMjAyMS0wMS0yNQpJdCBpcyBub3cgcG9zc2libGUgdG8gZGVmaW5lIHByZXJlcXVpc2l0ZSB0ZXN0cyB0byBmb3JjZSBhIHRlc3QgdG8gdGFrZSBwbGFjZSBhZnRlciBhbm90aGVyIHRlc3QgZXZlbiBpZiBpdCBkb2VzIG5vdCBoYXZlIGEgZGVwZW5kZW5jeSBvbiB0aGUgb3RoZXIgdGVzdCdzIHJldHVybiB2YWx1ZS4KCiMjIyAxLjAuNCAyMDIwLTEyLTIzClVzZSBmdWxsIHBhdGggdG8gY29uc3RydWN0IHRlc3QgZmlsZW5hbWUgcmF0aGVyIHRoYW4ganVzdCB0aGUgZmlyc3QgY29tcG9uZW50LCBzbyBlLmcuIEdFVCAvdXNlci97aWR9L25hbWUgY3JlYXRlcyBhIGZpbGUgbmFtZWQgdXNlcl9pZF9uYW1lLmpzb24gcmF0aGVyIHRoYW4gdXNlci5qc29uLgpMb2cgc2NoZW1lLCBob3N0LCBhbmQgcG9ydCBpZiBkZWJ1Z2dpbmcgaXMgZW5hYmxlZC4KCiMjIyAxLjAuMyAyMDIwLTEyLTAyCkFkZCBzdXBwb3J0IGZvciBnZW5lcmFsLXB1cnBvc2UgSmF2YXNjcmlwdC1iYXNlZCBtYWNyb3MuClNob3cgaGVhZGVycyBpZiBkZWJ1Z2dpbmcgaXMgZW5hYmxlZC4KCiMjIyAxLjAuMiAyMDIwLTExLTIwCkZpeCBpc3N1ZSAjMiwgY3Jhc2ggaWYgYW4gT3BlbkFQSSBzcGVjIGZpbGUgY29udGFpbnMgYSBoZWFkZXIub3B0aW9ucyBzZWN0aW9uLgpSZXNvbHZlIHNldmVyYWwgcHJvYmxlbXMgZm91bmQgYnkgQ29kYWN5IGFuZCBYYW5pdGl6ZXIuCgojIyMgMS4wLjEgMjAyMC0xMC0xMQpGaXggdHlwbyBpbiBob21lcGFnZSBVUkwgaW4gcGFja2FnZS5qc29uLgpBZGQgYSBrZXl3b3JkIHRvIHBhY2thZ2UuanNvbgoKIyMjIyBzcnQtZ2VuZXJhdG9yCkRvbid0IGNyZWF0ZSB0ZXN0cyBmb3IgcmVzcG9uc2VzIHdpdGhvdXQgYW4geC1zcnQgZWxlbWVudC4KCiMjIyAxLjAuMCwgMjAyMC0xMC0wNwpJbml0aWFsIHJlbGVhc2UuIEZ1bmN0aW9uYWxpdHkgdG8gYmUgaW1wcm92ZWQgYXMgZGVtYW5kIHJlcXVpcmVzIGFuZCB0aW1lIHBlcm1pdHMuCg== readmeEtag: '"543ec626004f281d9bcece3671c8f03bc8f34ada"' readmeLastModified: Sun, 09 Apr 2023 12:05:45 GMT repositoryId: 297208956 description: A simplistic mocha-based test harness for REST APIs created: '2020-09-21T02:33:54Z' updated: '2021-11-03T11:11:06Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: Jmcleodfoss logo: https://avatars.githubusercontent.com/u/55663604?v=4 license: MIT repoEtag: '"a9d176198df080c72b979a99823a810a0bf187cc3923457ce80ddd3108aa7998"' repoLastModified: Wed, 03 Nov 2021 11:11:06 GMT foundInMaster: true category: Testing id: a367f13a405f78c1ddddc5f71f16abc5 - source: openapi3 tags repository: https://github.com/locol23/swagger-github-pages v3: true id: 3d5b4219102b8161b4c37c7c4ef11e30 repositoryMetadata: base64Readme: >- IyBzd2FnZ2VyLWdpdGh1Yi1wYWdlcwoKIyMgRGVtbwoKaHR0cHM6Ly9sb2NvbDIzLmdpdGh1Yi5pby9zd2FnZ2VyLWdpdGh1Yi1wYWdlcy8KCiMjIFJlZmVyZW5jZQoKaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvYmxvYi9tYXN0ZXIvZG9jcy91c2FnZS9pbnN0YWxsYXRpb24ubWQjdW5wa2cKCg== readmeEtag: '"88098e084e37d36deec176307094b37609bea86b"' readmeLastModified: Tue, 09 May 2023 14:29:17 GMT repositoryId: 638518383 description: Visualize open api yaml with swagger-ui and deploy to GitHub pages created: '2023-05-09T14:22:21Z' updated: '2023-05-09T14:42:13Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: locol23 logo: https://avatars.githubusercontent.com/u/6946766?v=4 repoEtag: '"1f6d07ccf62dc35773570d096ef27f69123a2963fe17bdad7278761a1cfcb37e"' repoLastModified: Tue, 09 May 2023 14:42:13 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/trebol-ecommerce/api v3: true repositoryMetadata: base64Readme: >- IyBUcsOpYm9sIGVDb21tZXJjZSBBUEkKClshW0dpdEh1YiBTdXBlci1MaW50ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS90cmVib2wtZWNvbW1lcmNlL2FwaS9hY3Rpb25zL3dvcmtmbG93cy9saW50ZXIueWFtbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbWFya2V0cGxhY2UvYWN0aW9ucy9zdXBlci1saW50ZXIpCgpUaGUgY29udHJhY3QgdGhhdCBUcsOpYm9sIGFzIGEgd2hvbGUgbXVzdCBjb21wbHkgd2l0aC4KCiMjIERvY3VtZW50YXRpb24KClRoYW5rcyB0byBHaXRIdWIgQWN0aW9ucyBhbmQgW1JlZG9jXShodHRwczovL2dpdGh1Yi5jb20vUmVkb2NseS9yZWRvYyksIHlvdSBjYW4gZXhwbG9yZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBBUEkgdGhyb3VnaCBbYSBtb2Rlcm4gd2Vic2l0ZSBkZXBsb3llZCBpbiBHaXRIdWIgUGFnZXNdKGh0dHBzOi8vdHJlYm9sLWVjb21tZXJjZS5naXRodWIuaW8vYXBpLykuCg== readmeEtag: '"3834d787e90fa0260cf757deac88586bce070e23"' readmeLastModified: Fri, 16 Aug 2024 03:48:42 GMT repositoryId: 312004563 description: eCommerce web service REST specification created: '2020-11-11T15:03:50Z' updated: '2024-08-16T03:49:06Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: trebol-ecommerce logo: https://avatars.githubusercontent.com/u/75125264?v=4 license: GPL-3.0 repoEtag: '"534926a62773839a7b033b3150b7d851cebff5e25ff2669b48aaf2b6af2ee6e8"' repoLastModified: Fri, 16 Aug 2024 03:49:06 GMT foundInMaster: true category: - Testing - Server Implementations id: 9f9f6dc48233b4a6347515e8cd48e4fb - source: openapi3 tags repository: https://github.com/mtheusbrito/api-rest-java-spring-boot-3 v3: true id: f64d96da191ec0c694f02fedfca1496e repositoryMetadata: base64Readme: >- IyMjIyBTcHJpbmcgQm9vdCAzOiBEZXNlbnZvbHZlbmRvIHVtYSBBUEkgUmVzdCBlbSBKYXZhCgoKCiMjIyBSZXF1aXNpdG9zCgktIEphdmEgdmVyc2lvbiAxNwoJLSBtYXZlbgoJLSBNeVNRTDogNS41IH4gMTAuMy4zOC1NYXJpYURCCgkKIyMjIEJ1aWxkIAoKYGBgCmNkIHByb2plY3RfZm9sZGVyICYmIAptdm4gcGFja2FnZQpgYGAKCiMjIyBFeDogUnVuIGluIHByb2QKCmBgYApjZCBwcm9qZWN0X2ZvbGRlci90YXJnZXQgJiYKamF2YSAtRHNwcmluZy5wcm9maWxlcy5hY3RpdmU9cHJvZCAtRERBVEFTT1VSQ0VfVVJMPWpkYmM6bXlzcWw6Ly9pcF9wcm9kL2RhdGFiYXNlX3Byb2QgLUREQVRBU09VUkNFX1VTRVJOQU1FPXVzZXJuYW1lIC1EREFUQVNPVVJDRV9QQVNTV09SRD1wYXNzd29yZCAtamFyIGFwaS0wLjAuMS1TTkFQU0hPVC5qYXIKYGBg readmeEtag: '"331dc387cb79e9152313a0b3724bce99034b6ceb"' readmeLastModified: Thu, 30 Mar 2023 04:59:01 GMT repositoryId: 616289339 description: API rest utilizando Spring boot 3 created: '2023-03-20T04:51:05Z' updated: '2023-07-09T05:48:07Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: mtheusbrito logo: https://avatars.githubusercontent.com/u/13672114?v=4 repoEtag: '"5a56fbbc62cbf7ed8937663f79865261e464f40816b1e2e990b5c979411084ea"' repoLastModified: Sun, 09 Jul 2023 05:48:07 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/udnboss/generator v3: true id: 193b62f2938391dfcb3d229f6fad1a30 repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIEdlbmVyYXRvcg0KDQpUaGUgZm9sbG93aW5nIHNhbXBsZSBpbnB1dCBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBhbiBPcGVuQVBJIGRvY3VtZW50LiANCg0KYGBgDQphcGk6DQogIHRpdGxlOiBJbnZvaWNpbmcgQVBJDQogIGRlc2NyaXB0aW9uOiBJbnZvaWNpbmcgQVBJIFJlZmVyZW5jZQ0KICB2ZXJzaW9uOiAnMS4wJw0KICBwcmVmaXg6IC9hcGkvdjENCnNjcmlwdHM6DQogIG91dHB1dERpcjogLi9vdXRwdXQvaW52b2ljaW5nDQogIGZyYW1ld29yazogZXhwcmVzcyAjZXhwcmVzc3x3ZWJhcGl8ZmFzdGFwaQ0KaW50ZXJmYWNlczoNCiAgY29tcGFueToNCiAgICBpZDogDQogICAgbmFtZTogDQogICAgYWRkcmVzczogDQogICAgY3JuOiANCiAgICB0cm46IA0KICAgIGNvbnRhY3Q6IA0KICAgIG1vYmlsZTogDQogICAgZW1haWw6IHN0cnxlbWFpbA0KDQogIGNhdGVnb3J5Og0KICAgIGlkOiBzdHJpbmcNCiAgICBuYW1lOiBzdHJpbmcNCiAgICBpdGVtcz86IGl0ZW1bXQ0KDQogIGl0ZW06DQogICAgaWQ6IHN0cmluZw0KICAgIG5hbWU6IHN0cmluZw0KICAgIGNhdGVnb3J5X2lkPzogc3RyID4gY2F0ZWdvcnkuaWQNCiAgICBjYXRlZ29yeT86ID1jYXRlZ29yeQ0KYGBgDQoNClNvbWUgc3BlY2lhbCBzeW50YXggaXMgdXNlZDoNCg0KRXhhbXBsZSAxOiBgZW1haWw6IHN0cnxlbWFpbGAgbWVhbnMgdGhlIHByb3BlcnR5IGBlbWFpbGAgaGFzIGEgZGF0YSB0eXBlIGBzdHJpbmdgIGFuZCB0aGUgZm9ybWF0IGlzIGBlbWFpbGAuDQoNCkV4YW1wbGUgMjogYGNhdGVnb3J5X2lkPzogc3RyID4gY2F0ZWdvcnkuaWRgIG1lYW5zIHRoZSBgY2F0ZWdvcnlfaWRgIGlzIG9wdGlvbmFsIHByb3BlcnR5IChkdWUgdG8gZW5kaW5nIHdpdGggYD9gKSwgdGhlIGRhdGEgdHlwZSBpcyBgc3RyaW5nYCBhbmQgaXQgaXMgYSByZWZlcmVuY2UgYD5gIHRvIGFub3RoZXIgZW50aXR5IG9mIHR5cGUgYGNhdGVnb3J5YCBhbmQgdGhhdCBpdHMgdmFsdWUgaXMgaXRzIGBpZGAgcHJvcGVydHkuICh0aGluayBvZiBpdCBsaWtlIGEgZm9yZWlnbiBrZXkgcmVmZXJlbmNlIGluIGEgZGF0YWJhc2UgdGFibGUgdG8gYW5vdGhlciB0YWJsZSkuDQoNCkV4YW1wbGUgMzogYGl0ZW1zPzogaXRlbVtdYDogdGhlIGA/YCBtZWFucyBpdCBpcyBub3QgcmVxdWlyZWQsIGBpdGVtYCBtZWFucyBpdCBpcyBhIHJlZmVyZW5jZSB0byBhbm90aGVyIGtub3duIGVudGl0eSBvZiB0eXBlIGBpdGVtYCBhbmQgYFtdYCBtZWFucyBpdCBpcyBhbiBhcnJheSBvZiBpdGVtcy4NCg0KDQpZb3UgY2FuIHN0YXJ0IGJ5IHNhdmluZyBpbnB1dCBpbiBhIHlhbWwgZmlsZSwgYW5kIHJ1bm5pbmcgdGhlIGNvbW1hbmRzIHRvIHRlc3QgaXQuIEEgZnVsbCBpbnB1dCBleGFtcGxlIGlzIGxvY2F0ZWQgaW4gYHNjaGVtYXMvaW52b2ljaW5nLnltbGANCg0KUnVuIHRoaXMgY29tbWFuZCB0byB0ZXN0IGl0IChnZW5lcmF0ZSBqdXN0IE9wZW5BUEkgZG9jdW1lbnQpOg0KYHB5dGhvbiBnZW4ucHkgZG9jcyAuL3NjaGVtYXMvaW52b2ljaW5nLnltbGANCg0KWW91IGNhbiB2aWV3IGEgc2FtcGxlIG91dHB1dCBpbiBgLi9vdXRwdXQvaW52b2ljaW5nLnltbGAuDQoNClRoZSBvdXRwdXQgd2lsbCBiZSBzdG9yZWQgaW4gYC4vb3V0cHV0L2ludm9pY2luZy55bWxgLiBZb3UgY2FuIGNvcHkgdGhlIG91dHB1dCBhbmQgcGFzdGUgaXQgaW4gW1N3YWdnZXIgRWRpdG9yXShodHRwczovL2VkaXRvci5zd2FnZ2VyLmlvLykgdG8gdGVzdCBpdCBhbmQgdmFsaWRhdGUuDQoNCkV4YW1wbGUgdG8gZ2VuZXJhdGUgZXhwcmVzc0pzIGFwaSB0eXBlc2NyaXB0IGNvZGUsIChjb2RlIHdpbGwgYmUgZ2VuZXJhdGVkIGZvciB0aGUgc3BlY2lmaWVkIGZyYW1ld29yayBpbiBgc2NyaXB0cy5mcmFtZXdvcmtgKSwgcnVuOg0KYHB5dGhvbiBnZW4ucHkgYXBpIC4vc2NoZW1hcy9pbnZvaWNpbmcueW1sYA0KDQpUaGUgb3V0cHV0IHdpbGwgYmUgd3JpdHRlbiBpbiB0aGUgc3BlY2lmaWVkIGBzY3JpcHRzLm91dHB1dERpcmAgaW4gdGhlIHN1cHBsaWVkIGAueW1sYCBmaWxlLg0KDQpUaGUgZ2VuZXJhdGVkIGFwaSB3aWxsIGhhdmUgdGhlIGJhc2ljIGJ1c2luZXNzLCBpbnRlcmZhY2VzLCBjbGFzc2VzLCBhbmQgcm91dGVzLiBCYWNrZW5kIGNhbiBiZSBKU09OIG9yIFNxbGl0ZTMgKGRlZmF1bHQpIGZvciBub3cuDQoNClVwY29taW5nIGlzIHRvIGdlbmVyYXRlIHNxbCBmb3IgOnNxbGl0ZSwgcG9zdGdyZXMsIHNxbCBzZXJ2ZXIsIGV0Yy4= readmeEtag: '"d78c8f93937eafaa2012d94d79b455fb2b7ed31c"' readmeLastModified: Tue, 05 Sep 2023 18:06:12 GMT repositoryId: 675078533 description: >- A Python script to generate OpenAPI document specification for your API, based on a yaml file that is very minimal to describe your entities. created: '2023-08-05T17:44:48Z' updated: '2023-08-29T19:09:16Z' language: C# archived: false stars: 0 watchers: 1 forks: 0 owner: udnboss logo: https://avatars.githubusercontent.com/u/74108279?v=4 repoEtag: '"8ffb4cef76eb9affea17ef05b2138d16f94a6fd8aaa4c4e4b57f45bf4ea20331"' repoLastModified: Tue, 29 Aug 2023 19:09:16 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/glennfaison/mcq v3: true repositoryMetadata: base64Readme: >- IyBtY3EKQSBSRVNUIEFQSSBmb3IgYW4gTUNRIHdlYiBhcHBsaWNhdGlvbiwgd2l0aCBhIE1vbmdvREIgZGF0YWJhc2UuCg== readmeEtag: '"e8e56482a046a6278990af081e911adc61869daa"' readmeLastModified: Tue, 26 May 2020 09:37:20 GMT repositoryId: 254987221 description: A REST API for an MCQ web application, with a MongoDB database. created: '2020-04-12T01:29:19Z' updated: '2020-05-26T09:37:23Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 1 owner: glennfaison logo: https://avatars.githubusercontent.com/u/17485270?v=4 repoEtag: '"13d5cd2e572474074fee71de08535c880cdbc4b386c720c8bc981296bbed5381"' repoLastModified: Tue, 26 May 2020 09:37:23 GMT foundInMaster: true category: - Server - Server Implementations id: 92c056d9988d9c3d6b6801cb474f2cab - source: openapi3 tags repository: https://github.com/authena-ru/courses-organization v3: true repositoryMetadata: base64Readme: >- WyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2F1dGhlbmEtcnUvY291cnNlcy1vcmdhbml6YXRpb24vYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPUZZSTk3U0hUM1gpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvYXV0aGVuYS1ydS9jb3Vyc2VzLW9yZ2FuaXphdGlvbikKCiMgQXV0aGVuYSBjb3Vyc2VzIG9yZ2FuaXphdGlvbiBzZXJ2aWNlCgpDb3Vyc2VzIG9yZ2FuaXphdGlvbiBkb21haW4gZm9yIEF1dGhlbmEgY291cnNlIHBhc3NpbmcgcHJvamVjdAoKIyMgQnVpbGQgJiBSdW4gKExvY2FsbHkpCgojIyMgUHJlcmVxdWlzaXRlcwoKLSBnbyAxLjE3Ci0gRG9ja2VyCi0gZ29sYW5nY2ktbGludAoKIyMjIEVudmlyb25tZW50CgpZb3UgY2FuIGNyZWF0ZSAuZW52IGZpbGUgd2l0aCBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9yIHNldCB0aGVtIG1hbnVhbGx5OgoKYGBgZG90ZW52CkFQUF9FTlZJUk9OTUVOVD1sb2NhbCAjIEVudmlyb25tZW50IG5hbWUgYW5kIGNvbmZpZyBuYW1lIHRvIHBhcnNlCgpNT05HT19VUkk9bW9uZ29kYjovL21vbmdvZGI6MjcwMTcKTU9OR09fVVNFUk5BTUU9YWRtaW4KTU9OR09fUEFTU1dPUkQ9cXdlcnR5CmBgYAoKIyMjIENvbW1hbmRzCgotIGBgbWFrZSBvcGVuYXBpYGAg4oCUIGdlbmVyYXRlcyBib2lsZXJwbGF0ZSBjb2RlLCB0eXBlcyBhbmQgc2VydmVyIGludGVyZmFjZSB0aGF0IGNvbmZvcm1zIHRvIE9wZW5BUEkKLSBgYG1ha2UgZ28tYnVpbGRgYCDigJQgYnVpbGRzIHByb2plY3QgZm9yIEdPT1M9bGludXgKLSBgYG1ha2UgbGludGBgIOKAlCBydW5zIGxpbnRlcnMKLSBgYG1ha2UgZGV2YGAgLSBydW5zIGRldiBlbnZpcm9ubWVudAotIGBgbWFrZSB0ZXN0LXVuaXRgYCDigJQgcnVucyB1bml0IHRlc3RzIGFuZCBzYXZlIGNvdmVyIHByb2ZpbGUKLSBgYG1ha2UgdGVzdC1pbnRlZ3JhdGlvbmBgIOKAlCBydW5zIGludGVncmF0aW9uIHRlc3RzIGFuZCBzYXZlIGNvdmVyIHByb2ZpbGUKLSBgYG1ha2UgdGVzdC1jb3ZlcmBgIOKAlCBidWlsZHMgY29kZSBjb3ZlciByZXBvcnQKLSBgYG1ha2UgcnVuLXRlc3QtZGJgYCDigJQgcnVucyBEb2NrZXIgd2l0aCB0ZXN0IE1vbmdvIERCCi0gYGBtYWtlIHN0b3AtdGVzdC1kYmBgIOKAlCBzdG9wcyBEb2NrZXIgd2l0aCB0ZXN0IE1vbmdvIERCCg== readmeEtag: '"28349a3f30f7bd905cc5bed1d86d2565db602167"' readmeLastModified: Wed, 17 Nov 2021 10:26:43 GMT repositoryId: 370463122 description: Courses organization domain for Authena course passing project created: '2021-05-24T19:26:45Z' updated: '2021-11-17T10:26:47Z' language: Go archived: false stars: 0 watchers: 0 forks: 0 owner: authena-ru logo: https://avatars.githubusercontent.com/u/84408406?v=4 license: MIT repoEtag: '"5f1fb74768ec9d61c3ee0928eb0e025265723d5c2b1bf58f7d60cd3f3d5b5b62"' repoLastModified: Wed, 17 Nov 2021 10:26:47 GMT foundInMaster: true category: Testing id: 25b5b9e0c4ad3abfe66bac824fa1bf10 - source: openapi3 tags repository: https://github.com/juliandecoss/ymltoswaggerhtml v3: true repositoryMetadata: base64Readme: >- IyBTV0FHR0VSIEdFTkVSQVRPUiBIVE1MIEZJTEVTCgpUaGlzIFJlcG8gY3JlYXRlcyBiZWF1dGlmdWwgaHRtbCBzd2FnZ2VyIGZpbGVzLCB1c2luZyBZQU1MIGZpbGVzIGFuZCB2YWxpZGF0ZXMgdGhlbS4KCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCk1ha2Ugc3VyZSB5b3UgaGF2ZSBpbnN0YWxsZWQKCi0gW1B5dGhvbiAzLjcrXShodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy8pCgoKIyMgSW5zdGFsbGF0aW9uCgpUbyBpbnN0YWxsIHRoZSBsaWJyYXJpZXMsIHJ1biBpbiB5b3VyIHRlcm1pbmFsLgoKYGBgc2gKbWFrZSBpbnN0YWxsCmBgYAoKVGhpcyB3aWxsIHNldHVwIHlvdXIgZW52aXJvbm1lbnQgdG8gYWRkIHRoZSAyIGxpYnJhcmllcyB0aGlzIHJlcG8gcmVxdWlyZXMuCgoKIyMgQWRkaW5nIHlvdXIgIFlBTUwgZG9jcwoKSW4gb3JkZXIgdG8gdmFsaWRhdGUgeW91ciBmaWxlcyBhZGQgeW91ciBkb2NzIHRvIHRoZSBkaXJlY3RvcnkgZG9jcy9vcGVuYXBpLgoKCiMjIFZhbGlkYXRpbmcgeW91ciB5YW1sIGZpbGVzCgpUbyB2YWxpZGF0ZSB5b3VyIGZpbGVzIGZpcnN0IGFkZCB0aGVtIGluIHRoZSBkaXJlY3Rvcnkgb3BlbmFwaSwgdGhlbiBydW4gaW4geW91ciB0ZXJtaW5hbDoKCmBgYHNoCm1ha2Ugc3dhZ2dlci12YWxpZGF0aW9uCmBgYAoKIyMgQ3JlYXRpbmcgeW91ciBodG1sIGJlYXV0aWZ1bCBzd2FnZ2VyIHN0YXRpYyBkb2NzCkluIG9yZGVyIHRvIGNvbm5lY3QgeW91ciBmaWxlcyBiZXR3ZWVuIGVhY2ggb25lLCBjaGFuZ2UgdGhlIGZpbGUgdGVtcGxhdGUgaW4gc2NyaXB0cy90ZW1wbGF0ZXMvc3dhZ2dlcl90ZW1wbGF0ZSwgeW91IHdpbGwgZmluZCBpbiB0aGUgbGluZSAzNiB0aGF0IHRoZXJlIGlzIGEgInNlbGVjdCIgaHRtbCBlbGVtZW50LCBhZGQgYWxsIHlvdXIgZmlsZXMgdGhlcmUsIGFzIG9wdGlvbnMgIjxvcHRpb24gdmFsdWU9Im5hbWVfb2ZfeW91cl9maWxlIj5uYW1lX29mX3lvdXJfZmlsZTwvb3B0aW9uPiIgaXRzIG5vdCBuZWNlc3NhcnkgdG8gYWRkIHRoZSBzdWZpeCBodG1sLgoKT25jZSB5b3UgZmluaXNoIHRoaXMgc3RlcCBqdXN0IHJ1biBpbiB5b3VyIHRlcm1pbmFsCgpgYGBzaAptYWtlIHN3YWdnZXItc3RhdGljCmBgYAoKCiMjIyMgQ3JlZGl0cyB0bwpUaGlzIHJlcG8gd2FzIGJ1aWx0IHVzaW5nIHRoZSBzY3JpcHQgc2hvd24gYmVsb3c6Ci0gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vb3NlaXNrYXIvZGJkNTFhMzcyN2ZjOTZkY2Y1ZWQxODlmY2E0OTFmYjM= readmeEtag: '"170112849bb6c0858b4811d69f547a5095ef07ff"' readmeLastModified: Sat, 24 Jul 2021 02:26:43 GMT repositoryId: 388936192 description: >- 📖 Generate beautiful html files with a swagger template using YAML/YML files. 🚀🚀 created: '2021-07-23T21:59:03Z' updated: '2021-07-24T22:05:11Z' language: Python archived: false stars: 0 watchers: 1 forks: 0 owner: juliandecoss logo: https://avatars.githubusercontent.com/u/72807525?v=4 license: Apache-2.0 repoEtag: '"8a91cd01bb769b814e0d70f5216015582fe14b6704f4ccddbf1b993b92e54abc"' repoLastModified: Sat, 24 Jul 2021 22:05:11 GMT foundInMaster: true category: - Testing - Server Implementations id: 7cece16cf56bc26a12f14a7356d46509 - source: openapi3 tags repository: https://github.com/sundalei/book-management v3: true id: c4dbc45096493794f18a9442090a78c3 repositoryMetadata: base64Readme: >- IyBib29rLW1hbmFnZW1lbnQKIyMgc3RlcCAxIHZhbGlkYXRlIHRlbXBsYXRlIHByb2plY3Qgd29ya2luZwpgYGBqYXZhCkBSZXN0Q29udHJvbGxlcgpwdWJsaWMgY2xhc3MgSGVsbG9Db250cm9sbGVyIHsKICAgIAogICAgQEdldE1hcHBpbmcoIi8iKQogICAgcHVibGljIFN0cmluZyBncmVldGluZygpIHsKICAgICAgICByZXR1cm4gImhlbGxvIHdvcmxkIjsKICAgIH0KfQpgYGAKCiMjIHN0ZXAgMiB1c2UgbW9uZ29kYiBhcyBiYWNrZW5kIHN0b3JhZ2UgYW5kIHNwcmluZyBkYXRhIG1vbmdvIApCb29rUmVwb3NpdG9yeQ== readmeEtag: '"5d701975d5d429b0f721229d19fe367320dbec87"' readmeLastModified: Sat, 28 May 2022 08:08:46 GMT repositoryId: 493049552 description: Book Management created: '2022-05-17T01:09:02Z' updated: '2022-09-09T00:46:01Z' language: Java archived: false stars: 0 watchers: 1 forks: 1 owner: sundalei logo: https://avatars.githubusercontent.com/u/12974121?v=4 repoEtag: '"d87dc62cb07381cb992cad59e2c95cc5a7e8054cc88e85b6d16a0ce2a8a06c94"' repoLastModified: Fri, 09 Sep 2022 00:46:01 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/a-sync/ocap-odata v3: true id: 8f91cbfa40dea0d3af43a84d56edb4ea repositoryMetadata: base64Readme: >- IyBvY2FwLW9kYXRhCgojIEFib3V0CiAqIHByb3ZpZGVzIE9EYXRhIHY0LjAxIEFQSSBmb3Igb2NhcC1zdGF0cyBkYXRhYmFzZQogKiBidWlsdCBvbiBsYXJhdmVsIDEwICsgbG9hZGF0YSAyCiAqIG9ubHkgYSB0aGluIGxheWVyIG9mIGVsb3F1ZW50IG1vZGVscyBhbmQgbG9kYXRhIHRyYWl0cwoKIyBEZW1vIHNpdGVzCltmbmYtb2RhdGEuZGV2cy5zcGFjZV0oaHR0cHM6Ly9mbmYtb2RhdGEuZGV2cy5zcGFjZSkgIAogJm5ic3A7ICZyZGNhOyB1c2luZyBbZm5mLXN0YXRzXShodHRwczovL2ZuZi1zdGF0cy5kZXZzLnNwYWNlKSBkYXRhYmFzZSAgCiAmbmJzcDsgJm5ic3A7ICZyZGNhOyB1c2luZyBbT0NBUDJdKGh0dHA6Ly9hYXIuZnJpZGF5bmlnaHRmaWdodC5vcmcpIGRhdGEgZnJvbSBbRk5GXShodHRwczovL3d3dy5mcmlkYXluaWdodGZpZ2h0Lm9yZykKCiMgSG9zdGluZyByZXF1aXJlbWVudHMKICogUEhQIDguMSBvciBsYXRlcgogKiBhY2Nlc3MgdG8gb2NhcC1zdGF0cyBkYXRhYmFzZSAobXlzcWwvbWFyaWFkYikKCllvdSBzaG91bGQgdXNlIGVudiB2YXJzIChlbnYuZXhhbXBsZSkgdG8gY29uZmlndXJlIHRoZSBkYXRhYmFzZSBob3N0L3VzZXIvcHcvZGJuYW1lLCBidXQgeW91IG9ubHkgbmVlZCB0byBlZGl0IHRoZSBbREJfVVJMXSguL2NvbmZpZy9kYXRhYmFzZS5waHAjTDQ4KSBnZW5lcmFsbHkuCgojIERldmVsb3BtZW50IHJlcXVpcmVtZW50cwogKiBkb2NrZXItY29tcG9zZSAyIG9yIGxhdGVyCiAqIGNvbXBvc2VyIDIuMiBvciBsYXRlcgoKIyMgU2V0dXAKSW5zdGFsbCBjb21wb3NlciBkZXBlbmRlbmNpZXMuCmBgYApjb21wb3NlciBpbnN0YWxsCmBgYAoKIyMgQ29uZmlnCkNyZWF0ZSBhIC5lbnYgZmlsZSB0byBlbmFibGUgbGFyYXZlbCBkZWJ1ZyBvcHRpb25zLgpgYGAKQVBQX0VOVj1sb2NhbApBUFBfS0VZPQpBUFBfREVCVUc9dHJ1ZQpMT0dfTEVWRUw9ZGVidWcKYGBgCgojIyBSdW5uaW5nIGxvY2FsbHkK4pqgIFlvdSBuZWVkIHRvIGNvbm5uZWN0IHRvIGFuIGV4aXN0aW5nIG9jYXAtc3RhdHMgZGF0YWJhc2UuICAKVG8gcXVpY2tseSBzcGluIHVwIHlvdXIgb3duIGxvY2FsIGRhdGFiYXNlIGhlYWQgb3ZlciB0byBbb2NhcC1zdGF0cy9TRVRVUC5tZF0oaHR0cHM6Ly9naXRodWIuY29tL2Etc3luYy9vY2FwLXN0YXRzL2Jsb2IvbWFzdGVyL1NFVFVQLm1kKSBmb3IgaW5zdHJ1Y3Rpb25zLgoKIyMjIyBTdGFydGluZyB1cCB0aGUgZGV2IGVudjoKYGBgCmRvY2tlci1jb21wb3NlIHVwCmBgYAoKIyMjIyMgU2VydmljZXMKICogV2ViIAogICAgKiBodHRwOi8vbG9jYWxob3N0Ojg1MDAvCgojIyMgQ2hlY2tpbmcgZGIgY29ubmVjdGlvbgpgYGAKcGhwIGFydGlzYW4gZGI6c2hvdwpgYGAKCiMjIyMgU2h1dHRpbmcgZG93biB0aGUgZGV2IGVudgpgYGAKZG9ja2VyLWNvbXBvc2UgZG93bgpgYGAKCiMjIyMgU3RhcnRpbmcgdXAgdGhlIGRldiBlbnYgYWdhaW4KYGBgCmRvY2tlci1jb21wb3NlIHVwIC1kCmBgYAoKIyMjIENsZWFuIHJlc3RhcnQKYGBgCmRvY2tlci1jb21wb3NlIGRvd24gLXYKZG9ja2VyIHN5c3RlbSBwcnVuZSAtYSAtZiAtLXZvbHVtZXMKY29tcG9zZXIgaW5zdGFsbApwaHAgYXJ0aXNhbiByb3V0ZTpjbGVhcgpwaHAgYXJ0aXNhbiBjb25maWc6Y2xlYXIKcGhwIGFydGlzYW4gY2FjaGU6Y2xlYXIKZG9ja2VyLWNvbXBvc2UgYnVpbGQgLS1uby1jYWNoZQpkb2NrZXItY29tcG9zZSB1cCAtZApgYGAK readmeEtag: '"0538b3cfcb7e78f5e4f9e4f37a8eae8a6686ab3c"' readmeLastModified: Thu, 09 May 2024 20:40:38 GMT repositoryId: 450753308 description: OData API for OCAP data (ocap-stats database) created: '2022-01-22T07:55:37Z' updated: '2024-05-09T20:40:30Z' language: PHP archived: false stars: 0 watchers: 1 forks: 0 owner: a-sync logo: https://avatars.githubusercontent.com/u/14183614?v=4 repoEtag: '"e888eb0a0de4929def1943f4d76e3fbde6c3a119a7a7271504f5fede56e09979"' repoLastModified: Thu, 09 May 2024 20:40:30 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/alvarosps/digital-account-server v3: true id: 78b0cbe1eaabe3d4034dcc358599c5a7 repositoryMetadata: base64Readme: >- IyBCYW5rIEFQSQoKVGhpcyBpcyBhbiBBUEkgZm9yIGEgYmFua2luZyBzeXN0ZW0gdGhhdCBhbGxvd3MgdXNlcnMgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgYmFuayBhY2NvdW50cy4KCiMjIFRlY2hub2xvZ2llcwoKVGhpcyBwcm9qZWN0IHVzZXMgdGhlIGZvbGxvd2luZyB0ZWNobm9sb2dpZXM6CgotIE5vZGUuanMKLSBFeHByZXNzLmpzCi0gQVdTIER5bmFtbyBEQgoKIyMgU2V0dXAKClRvIHNldCB1cCB0aGlzIHByb2plY3QsIGZvbGxvdyB0aGVzZSBzdGVwczoKCi0gQ2xvbmUgdGhpcyByZXBvc2l0b3J5IHRvIHlvdXIgbG9jYWwgbWFjaGluZS4KLSBJbnN0YWxsIGRlcGVuZGVuY2llcyBieSBydW5uaW5nIG5wbSBpbnN0YWxsLgotIFNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGRlZmluZWQgaW4gLmVudi5leGFtcGxlLiBZb3UgY2FuIGVpdGhlciBjcmVhdGUgYSAuZW52IGZpbGUgb3Igc2V0IHRoZW0gaW4geW91ciBlbnZpcm9ubWVudC4KLSBTdGFydCB0aGUgc2VydmVyIGJ5IHJ1bm5pbmcgbnBtIHN0YXJ0LgotIFlvdSB3aWxsIG5lZWQgdG8gY3JlYXRlIGEgLmVudiBmaWxlIGluIHRoZSByb290IGZvbGRlciBvZiB0aGUgcHJvamVjdCwgY29udGFpbmluZzoKYGBgCkFXU19BQ0NFU1NfS0VZX0lEPTx5b3VyIGF3cyBhY2Nlc3Mga2V5PgpBV1NfU0VDUkVUX0FDQ0VTU19LRVk9PHlvdXIgYXdzIHNlY3JldCBhY2Nlc3Mga2V5PgpBV1NfUkVHSU9OPTxhd3MgcmVnaW9uIHlvdSBhcmUgdXNpbmc+CkFVVEgwX0FVRElFTkNFPWh0dHBzOi8vc3BzZmFrZWJhbmthY2NvdW50cy5jb20vYXBpCkFVVEgwX0lTU1VFUl9CQVNFX1VSTD1odHRwczovL2Rldi1zeG1nNDA4bnduc2UwNWp1LnVzLmF1dGgwLmNvbS8KQVVUSDBfVE9LRU5fU0lHTklOR19BTEdPUklUSE09UlMyNTYKYGBgCgpTZXJ2ZXIgd2lsbCBydW4gb24gaHR0cDovL2xvY2FsaG9zdDozMDAwCgojIyBBdXRoZW50aWNhdGlvbgoKVGhpcyBBUEkgdXNlcyBhdXRoMCBhdXRoZW50aWNhdGlvbiwgeW91J2xsIG5lZWQgdG8gaGF2ZSB0aGUgaGVhZGVyICdBdXRob3JpemF0aW9uJyBpbiB0aGUgcmVxdWVzdHMgKGFuZCBBUEkgRG9jdW1lbnRhdGlvbikgdG8gdXNlIGl0LgoKIyMjIEdldHRpbmcgdGhlIGFjY2Vzc190b2tlbgoKWW91J2xsIG5lZWQgdG8gbWFrZSBhIFBPU1QgY2FsbCB0byBodHRwczovL2Rldi1zeG1nNDA4bnduc2UwNWp1LnVzLmF1dGgwLmNvbS9vYXV0aC90b2tlbgpJbiB0aGUgQm9keSBvZiB0aGUgcmVxdWVzdCwgeW91IHNob3VsZCBwdXQgKGZpbGxpbmcgaW4gdGhlIGNsaWVudF9pZCBhbmQgY2xpZW50X3NlY3JldCB3aXRoIHlvdXIgY3JlZGVudGlhbHMpOgoKYGBgCnsKICAiY2xpZW50X2lkIjogIiIsCiAgImNsaWVudF9zZWNyZXQiOiAiIiwKICAiYXVkaWVuY2UiOiAiaHR0cHM6Ly9zcHNmYWtlYmFua2FjY291bnRzLmNvbS9hcGkiLAogICJncmFudF90eXBlIjogImNsaWVudF9jcmVkZW50aWFscyIKfQoKYGBgCgpUaGlzIHdpbGwgaGF2ZSBhIHJlc3BvbnNlIGxpa2UgdGhpczoKCmBgYAp7CiAgICAiYWNjZXNzX3Rva2VuIjogIjxhY2Nlc3NfdG9rZW5fZnJvbV9hdXRoMD4iLAogICAgImV4cGlyZXNfaW4iOiA4NjQwMCwKICAgICJ0b2tlbl90eXBlIjogIkJlYXJlciIKfQpgYGAKClRoZW4sIGluIHRoZSByZXF1ZXN0cyB5b3UgbWFrZSwgeW91J2xsIGhhdmUgdGhlIGZvbGxvd2luZyBIZWFkZXI6CgpgYGAKQXV0aG9yaXphdGlvbjogQmVhcmVyIDxhY2Nlc3NfdG9rZW5fZnJvbV9hdXRoMD4KYGBgCgojIyBVc2FnZQoKT25jZSB0aGUgc2VydmVyIGlzIHVwIGFuZCBydW5uaW5nLCB5b3UgY2FuIHVzZSBhbiBBUEkgY2xpZW50IGxpa2UgUG9zdG1hbiB0byBpbnRlcmFjdCB3aXRoIHRoZSBlbmRwb2ludHMuIFRoZSBBUEkgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25zOgoKLSBDcmVhdGluZyBhbiBhY2NvdW50IGhvbGRlcgotIEdldHRpbmcgYWxsIGFjY291bnQgaG9sZGVycwotIEdldHRpbmcgYW4gYWNjb3VudCBob2xkZXIgYnkgSUQKLSBVcGRhdGluZyBhbiBhY2NvdW50IGhvbGRlcgotIERlbGV0aW5nIGFuIGFjY291bnQgaG9sZGVyCi0gQ3JlYXRpbmcgYSBiYW5rIGFjY291bnQKLSBHZXR0aW5nIGFsbCBiYW5rIGFjY291bnRzCi0gR2V0dGluZyBhIGJhbmsgYWNjb3VudCBieSBJRAotIFVwZGF0aW5nIGEgYmFuayBhY2NvdW50Ci0gQ2xvc2luZyBhIGJhbmsgYWNjb3VudAotIEJsb2NraW5nIGEgYmFuayBhY2NvdW50Ci0gVW5ibG9ja2luZyBhIGJhbmsgYWNjb3VudAotIERlcG9zaXRpbmcgbW9uZXkgaW50byBhIGJhbmsgYWNjb3VudAotIFdpdGhkcmF3aW5nIG1vbmV5IGZyb20gYSBiYW5rIGFjY291bnQKCiMjIEFQSSBEb2N1bWVudGF0aW9uCgpUaGUgQVBJIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGluIHRoZSBPcGVuQVBJIGZvcm1hdCBhbmQgY2FuIGJlIGZvdW5kIGluIHRoZSAuL29wZW5hcGkvb3BlbmFwaS55bWwgZmlsZS4KCllvdSBjYW4gYWNjZXNzIGl0IG9uIGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGktZG9jcyAoWW91IG5lZWQgdG8gcHV0IHRoZSBBdXRob3JpemF0aW9uIEhlYWRlciBvbiB0aGUgQnJvd3NlciB0byBhY2Nlc3MgdGhlIGRvY3VtZW50YXRpb24gZGlyZWN0bHkpCg== readmeEtag: '"cb870fa93da3693a37c2233549a48b3b0fb5d9c7"' readmeLastModified: Fri, 24 Mar 2023 19:26:39 GMT repositoryId: 618577049 description: >- A NodeJS / Typescript API Server, that uses Express, AWS Dynamo DB, Auth0 Authentication, OpenAPI for documentation created: '2023-03-24T19:22:39Z' updated: '2023-03-24T19:25:03Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: alvarosps logo: https://avatars.githubusercontent.com/u/22122640?v=4 repoEtag: '"35f822b9c085c4f403e4b0cccba8585ca0470d0be217c07a84b1aa0a02eaf56d"' repoLastModified: Fri, 24 Mar 2023 19:25:03 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/fehho/mydirt-api v3: true id: 91bb2ecdeaf81379b325bec141dd9cd2 repositoryMetadata: base64Readme: >- IyBteURpUlQtYXBpCgojIyBHZXR0aW5nIFN0YXJ0ZWQKCkZpcnN0LCBpbnN0YWxsIGRlcGVuZGVuY2llcy4KCmBgYGJhc2ggCmNwYW5tIC0taW5zdGFsbGRlcHMgLgpgYGAKClJ1biB0aGUgZGV2ZWxvcG1lbnQgd2Vic2VydmVyCgpgYGBiYXNoCm1vcmJvIHNjcmlwdC9teV9hcHAKYGBgCgpPcGVuIGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGkvaGVhbHRoIHdpdGggeW91ciBicm93c2VyIHRvIHNlZSB0aGUgcmVzdWx0LgoKQVBJIHJvdXRlcyBjYW4gYmUgYWNjZXNzZWQgb24gaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaQoKIyMgTGVhcm4gTW9yZQoKW01vam9saWNpb3VzXShodHRwczovL21ldGFjcGFuLm9yZy9wb2QvTW9qb2xpY2lvdXMpIC0gd2ViIGZyYW1ld29yawoKW09wZW5BUEldKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykgLSBBUEkgc3RhbmRhcmQKCltEQkl4OjpDbGFzc10oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvZGlzdC9EQkl4LUNsYXNzL3ZpZXcvbGliL0RCSXgvQ2xhc3MvTWFudWFsL0RvY01hcC5wb2QpIC0gb2JqZWN0IDwtPiByZWxhdGlvbmFsIG1hcHBlci4K readmeEtag: '"df562c3fa60f68fb97e63aa2195be56f5860fcc7"' readmeLastModified: Mon, 09 Jan 2023 16:36:35 GMT repositoryId: 577360080 description: Scorpion Camp winter 2022 devjam participant created: '2022-12-12T15:07:54Z' updated: '2022-12-22T14:26:36Z' language: Perl archived: false stars: 0 watchers: 2 forks: 0 owner: fehho logo: https://avatars.githubusercontent.com/u/116404887?v=4 repoEtag: '"27029157374c85de08ed9cc23ea4e7180ea609798aa3465a047954871d423dbd"' repoLastModified: Thu, 22 Dec 2022 14:26:36 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/open-banking/statements v3: true repositoryMetadata: base64Readme: >- IyBzdGF0ZW1lbnRzCk9wZW4gQmFua2luZyBTdGF0ZW1lbnRzIEFQSSBidWlsdCBvbiB0b3Agb2YgbGlnaHQtNGoK readmeEtag: '"1eefcc9eca4e906f055d6cdc1c0391035cc99499"' readmeLastModified: Thu, 25 Jul 2024 20:09:53 GMT repositoryId: 235867437 description: Open Banking Statements API built on top of light-4j created: '2020-01-23T19:14:04Z' updated: '2026-02-03T01:08:48Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 repoEtag: '"6ca812c04d2c2b95da551fdebc6415c7d89a2272c1a764c86bae6093fa563a9d"' repoLastModified: Tue, 03 Feb 2026 01:08:48 GMT foundInMaster: true category: - SDK - Server - Parsers id: 6232a03609eccb95b6e2af51c4a66cda - source: openapi3 tags repository: https://github.com/d00nik/hypixel-sdk v3: true id: 91be572de321d556ddfa1314989c374e repositoryMetadata: base64Readme: >- IyBEaXNjbGFpbWVyCgpUaGlzIHBhY2thZ2UgaXNuJ3QgaW4gYW55IG1lYW4gYWN0aXZlbHkgc3VwcG9ydGVkIGFuZCBzaG91bGRuJ3QgYmUgdXNlIGluIGRpc3RyaWJ1dGlvbi4gSW5zdGVhZCB5b3Ugc2hvdWxkIGZldGNoIHRoZSBhcGkgeW91cnNlbGYgb3IgdXNlIFtoeXBpeGVsLnRzXShodHRwczovL2dpdGh1Yi5jb20vaHlwaXhlbHRzL2h5cGl4ZWwudHMpLiBUaGlzIHBhY2thZ2UgaXMgbWVhbnQgdG8gYmUgcHVyZWx5IHVzZWQgZm9yIHRlc3RpbmcuIENvbnRpbnVlIGF0IHlvdXIgb3duIHJpc2suCgpUaGUgcmVhc29uIGZvciAqd2VpcmQqIG5hbWluZyBhbmQgY29kZSBpcyB0aGUgd2F5IGhvdyBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpIHdvcmtzLiBUaGlzIGFsbCB3YXMgZ2VuZXJhdGVkIGZyb20gSHlwaXhlbCdzIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAoU2VlIHRoZSBiZWdnaW5uaW5nIG9mIFtkb2NzXShodHRwczovL2FwaS5oeXBpeGVsLm5ldCkpCgojIFVzYWdlCgpJbnN0YWxsIGZyb20gbnBtIHdpdGg6CmBgYGJhc2gKbnBtIGkgaHlwaXhlbC1zZGsKYGBgClwKSW1wb3J0IGBDb25maWd1cmF0aW9uYCBhbmQgZGVzaXJlZCBBUEkgKGUuZy4gYFBsYXllckRhdGFBcGlgKToKYGBganMKaW1wb3J0IHsgQ29uZmlndXJhdGlvbiwgUGxheWVyRGF0YUFwaSB9IGZyb20gImh5cGl4ZWwtc2RrIjsKYGBgClwKQ3JlYXRlIGEgbmV3IGBDb25maWd1cmF0aW9uYCBhbmQgQVBJIE9iamVjdC4gKFJlbWVtYmVyIHRvIHByb3ZpZGUgeW91ciBvd24gYXBpIGtleSkKYGBganMKY29uc3QgY29uZmlnID0gbmV3IENvbmZpZ3VyYXRpb24oewogIGFwaUtleTogcHJvY2Vzcy5lbnYuSFlQSVhFTF9BUElfS0VZLAp9KTsKCmNvbnN0IHBsYXllckFwaSA9IG5ldyBQbGF5ZXJEYXRhQXBpKGNvbmZpZyk7CmBgYApcClVzZSBhbiBBUEkganVzdCBob3cgaXMgaXQgZGVzY3JpYmVkIGluIFtkb2NzXShodHRwczovL2FwaS5oeXBpeGVsLm5ldCkgZS5nLiBnZXQgcGxheWVyIGRhdGEuCmBgYGpzCmNvbnN0IHVzZXIgPSBhd2FpdCBwbGF5ZXJBcGkKICAucGxheWVyR2V0KHsKICAgIHV1aWQ6ICJlOGZlNjViZi0zYjI3LTQ1OGQtODM5Yi02ZDI5ZTE0NTcyNjEiLAogIH0pCiAgLmNhdGNoKChlcnIpID0+IGNvbnNvbGUubG9nKGVycikpOwoKY29uc29sZS5sb2codXNlcik7CmBgYAoKIwo= readmeEtag: '"960f9e55ccdac1b78d4b485501c01557ead133ba"' readmeLastModified: Sat, 12 Aug 2023 06:58:56 GMT repositoryId: 677497517 description: HypixelAPI SDK generated with OpenAPI SDK Generator created: '2023-08-11T18:14:30Z' updated: '2023-08-12T07:03:04Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: D00NIK logo: https://avatars.githubusercontent.com/u/65020944?v=4 repoEtag: '"1ff5a1fd30d694067ba1fb2affe68a492517c4dd39a2a233dbe6a12e86df13d0"' repoLastModified: Sat, 12 Aug 2023 07:03:04 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/alfabravo2013/hyper-id-backend v3: true id: a8a7f95525ed045bfdeed6531cac8b86 repositoryMetadata: base64Readme: >- IyBIeXBlcklECgojIyBIeXBlcnNraWxsIGZ1bGwgc3RhY2sgcHJvamVjdCwgYmFja2VuZCBSRVNUIEFQSQoKWyFbQnVpbGQgRXhlY3V0YWJsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbGZhYnJhdm8yMDEzL2h5cGVyLWlkLWJhY2tlbmQvYWN0aW9ucy93b3JrZmxvd3MvbmF0aXZlLWFydGlmYWN0LnltbC9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlciZldmVudD13b3JrZmxvd19kaXNwYXRjaCldKGh0dHBzOi8vZ2l0aHViLmNvbS9hbGZhYnJhdm8yMDEzL2h5cGVyLWlkLWJhY2tlbmQvYWN0aW9ucy93b3JrZmxvd3MvbmF0aXZlLWFydGlmYWN0LnltbCkKWyFbVGVzdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbGZhYnJhdm8yMDEzL2h5cGVyLWlkLWJhY2tlbmQvYWN0aW9ucy93b3JrZmxvd3MvdGVzdHMueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9hbGZhYnJhdm8yMDEzL2h5cGVyLWlkLWJhY2tlbmQvYWN0aW9ucy93b3JrZmxvd3MvdGVzdHMueW1sKQoKIyMjIEhvdyB0byBydW4KCiMjIyMgT3B0aW9uIDEuIERvd25sb2FkIGFuIGV4ZWN1dGFibGUgZm9yIHlvdXIgT1M6CgotIFtXaW5kb3dzX3g4Nl82NF0oaHR0cHM6Ly9naXRodWIuY29tL2FsZmFicmF2bzIwMTMvaHlwZXItaWQtYmFja2VuZC9yZWxlYXNlcy9kb3dubG9hZC92MC40L2h5cGVyaWQtV2luZG93cy1zbmFwc2hvdC14ODZfNjQuemlwKQotIFtMaW51eF94ODZfNjRdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbGZhYnJhdm8yMDEzL2h5cGVyLWlkLWJhY2tlbmQvcmVsZWFzZXMvZG93bmxvYWQvdjAuNC9oeXBlcmlkLUxpbnV4LXNuYXBzaG90LXg4Nl82NC56aXApCi0gW01hY09TX3g4Nl82NF0oaHR0cHM6Ly9naXRodWIuY29tL2FsZmFicmF2bzIwMTMvaHlwZXItaWQtYmFja2VuZC9yZWxlYXNlcy9kb3dubG9hZC92MC40L2h5cGVyaWQtbWFjT1Mtc25hcHNob3QteDg2XzY0LnppcCkKCmFuZCBydW4gb24geW91ciBjb21wdXRlci4KCiMjIyMgT3B0aW9uIDIuIERvd25sb2FkIHRoZSBleGVjdXRhYmxlIGphcjoKCi0gW2h5cGVyLWlkLWJhY2tlbmQuamFyXShodHRwczovL2dpdGh1Yi5jb20vYWxmYWJyYXZvMjAxMy9oeXBlci1pZC1iYWNrZW5kL3JlbGVhc2VzL2Rvd25sb2FkL3YwLjQvaHlwZXItaWQtYmFja2VuZC0wLjAuNC1TTkFQU0hPVC5qYXIpCgppbnN0YWxsIEpESyAxNyBhbmQgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgamFyIGZpbGUgaXMgbG9jYXRlZDoKCmBgYGJhc2gKamF2YSAtamFyIGh5cGVyLWlkLWJhY2tlbmQtMC4wLjQtU05BUFNIT1QuamFyCmBgYAoKIyMjIyBPcHRpb24gMy4gRG93bmxvYWQgdGhlIHNvdXJjZSBjb2RlOgoKLSBbLnppcF0oaHR0cHM6Ly9naXRodWIuY29tL2FsZmFicmF2bzIwMTMvaHlwZXItaWQtYmFja2VuZC9hcmNoaXZlL3JlZnMvdGFncy92MC40LnppcCkgb3IgCi0gWy50YXIuZ3pdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbGZhYnJhdm8yMDEzL2h5cGVyLWlkLWJhY2tlbmQvYXJjaGl2ZS9yZWZzL3RhZ3MvdjAuNC50YXIuZ3opCgp1bnppcCBpdCwgaW5zdGFsbCBKREsgMTcgYW5kIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kIGluIHRoZSBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5OgoKYGBgYmFzaAouL2dyYWRsZXcgYm9vdFJ1bgpgYGAKClRoZSBzZXJ2ZXIgcmVzcG9uZHMgb24gYGxvY2FsaG9zdDo4MDgwYAoKVGhlIGxhbmRpbmcgcGFnZSByZWRpcmVjdHMgdG8gQVBJIGRvY3MgKFN3YWdnZXIpCg== readmeEtag: '"9897c8741cc56e3053f562f20235ad9ffcd05134"' readmeLastModified: Wed, 23 Nov 2022 23:20:10 GMT repositoryId: 563327718 description: User profile REST API created: '2022-11-08T11:41:28Z' updated: '2023-07-30T23:06:38Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: alfabravo2013 logo: https://avatars.githubusercontent.com/u/65685808?v=4 repoEtag: '"05086feaa8151d209a1aa66cc2344bba2e76f5da43d0a7174b697135dcde9cab"' repoLastModified: Sun, 30 Jul 2023 23:06:38 GMT category: Server Implementations foundInMaster: true - name: Spring Cloud Gateway for Kubernetes source: Tooling repository issues source_description: >- Spring Cloud Gateway for Kubernetes provides an implementation of Spring Cloud Gateway, along with integrating other Spring ecosystem projects such as Spring Security, Spring Session, and more. This product includes commercial-only features on top of those open source including OpenAPI auto-generated documentation. link: >- https://docs.vmware.com/en/VMware-Spring-Cloud-Gateway-for-Kubernetes/index.html v3_1: false v3: true v2: true sourceIssueMetadata: issueNumber: 70 author: Albertoimpl createdAt: '2023-03-30T09:37:02Z' updatedAt: '2023-03-30T09:50:49Z' url: https://github.com/OAI/Tooling/issues/70 status: closed id: a2f27ec087f8bf10d44fa8fe1df17518 foundInMaster: true - name: API portal source: Tooling repository issues source_description: >- API portal enables API consumers to find APIs they can use in their applications by assembling a dashboard and detailed API documentation views by ingesting OpenAPI documentation from the source URLs., And allows for managing, creating, and consuming API Keys. link: https://docs.vmware.com/en/API-portal-for-VMware-Tanzu/index.html v3_1: false v3: true v2: true sourceIssueMetadata: issueNumber: 71 author: Albertoimpl createdAt: '2023-03-30T09:37:04Z' updatedAt: '2023-03-30T09:50:37Z' url: https://github.com/OAI/Tooling/issues/71 status: closed id: 714890331a19472487abb54870be2f1d foundInMaster: true - source: openapi3 tags repository: https://github.com/open-banking/directdebits v3: true repositoryMetadata: base64Readme: >- IyBkaXJlY3REZWJpdHMKT3BlbiBCYW5raW5nIERpcmVjdCBEZWJpdHMgQVBJIGJ1aWx0IG9uIHRvcCBvZiBsaWdodC00ago= readmeEtag: '"95993e54d31406cb3edcd5c81eb1ee8c32345e50"' readmeLastModified: Thu, 25 Jul 2024 20:09:49 GMT repositoryId: 235861354 description: Open Banking Direct Debits API built on top of light-4j created: '2020-01-23T18:41:22Z' updated: '2026-02-03T01:08:51Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 repoEtag: '"c202674d9f5f359204f08734b37c24b7e406915d1c7139ef738c9051d52f3fa1"' repoLastModified: Tue, 03 Feb 2026 01:08:51 GMT foundInMaster: true category: Server id: a64f93855552ec18dea59e28ee58ac21 - source: openapi3 tags repository: https://github.com/open-banking/transactions v3: true repositoryMetadata: base64Readme: >- IyB0cmFuc2FjdGlvbnMKdHJhbnNhY3Rpb25zIEFQSSBidWlsdCBvbiB0b3Agb2YgbGlnaHQtNGoK readmeEtag: '"1cf0a7583f442416ac344feedfde71f94c3b30f4"' readmeLastModified: Thu, 25 Jul 2024 20:09:57 GMT repositoryId: 227717798 description: transactions API built on top of light-4j created: '2019-12-12T23:51:44Z' updated: '2026-02-03T01:08:45Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 repoEtag: '"05356ca5e0dee6a9a35b53d5eeadc2b5d4ed48ee72f6588311114d64208b7754"' repoLastModified: Tue, 03 Feb 2026 01:08:45 GMT foundInMaster: true category: - Documentation - Parsers id: 92307dc3ff29d63f54325e5d3f821ed6 - source: openapi3 tags repository: https://github.com/saurhkumar/sqlcrud v3: true id: 61d4138ad7d80a7177294995cf211eb4 repositoryMetadata: base64Readme: >- PCEtLSBBQk9VVCBUSEUgUFJPSkVDVCAtLT4KCjxkaXYgaWQ9InRvcCI+PC9kaXY+CgojIyBBYm91dCBUaGUgUHJvamVjdAoKQSBmdWxsIGZsZWRnZSByZXN0IGFwcCBwb3dlcmVkIGJ5IGV4cHJlc3MuIFRoZSBpZGVhIG9mIHRoaXMgcHJvamVjdCBpcyB0byBicmluZyB1cCB5b3VyIG1pY3Jvc2VydmljZXMgZmFzdCwgd2l0aCBpbmJ1aWx0IHJlcXVlc3QgdmFsaWRhdGlvbnMsIGNvbm5lY3Rpb24gdG8gdGhlIGRhdGFiYXNlCmFuZCBmdWxseSB3b3JraW5nIHJlc3QgQVBJcy4gIAoqKk5vdGUqKiBUaGlzIHByb2plY3QgaXMgZ2VuZXJhdGVkIHRocm91Z2ggW2dlbmVyYXRvci1yZXN0LXN3YWdnZXItZXhwcmVzc10oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZ2VuZXJhdG9yLXJlc3Qtc3dhZ2dlci1leHByZXNzKSAgClRvIHNlZSBhbGwgdGhlIGFwcGxpY2F0aW9uIGZlYXR1cmVzLCBzZWUgW2ZlYXR1cmVdKCNzZXJ2aWNlLWZlYXR1cmVzKSBzZWN0aW9uOiAgCjwhLS0gR0VUVElORyBTVEFSVEVEIC0tPgoKIyMgR2V0dGluZyBTdGFydGVkCgpUaGlzIGlzIGFuIGV4YW1wbGUgb2YgaG93IHlvdSBtYXkgZ2l2ZSBpbnN0cnVjdGlvbnMgb24gc2V0dGluZyB1cCB5b3VyIHByb2plY3QgbG9jYWxseS4KCiMjIyBQcmVyZXF1aXNpdGVzCgotIFlvdSBuZWVkIGEgTXlTUUwgdXAgYW5kIHJ1bm5pbmcuIFRvIGRvIHRoYXQsIHVzZSBkb2NrZXIgIAogIFlvdSBjYW4gcnVuIGl0IGFzIGEgW2RvY2tlcl0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9fL215c3FsKSBvciBpbnN0YWxsIGl0IGFzIGEgW3N0YW5kYWxvbmUgYXBwbGljYXRpb25dKGh0dHBzOi8vd3d3Lm15c3FsLmNvbS8pLiBOb3RlIHlvdSBoYXZlIHRvIGNyZWF0ZSB0d28gYWRkaXRpb25hbCBkYXRhYmFzZXMgYWxzbyB0byBydW4gdGhpcyBwcm9qZWN0LiBUaGVyZSBpcyBvbmUgZG9ja2VyIGNvbXBvc2UgZmlsZSBpbiB0ZXN0IGZvbGRlciBkb2NrZXItY29tcG9zZS55bWwgKGAvdGVzdC9kb2NrZXItY29tcG9zZS55bWxgKSwgeW91IGNhbiB1c2UgaXQgdG8gcnVuIGFuZCBjcmVhdGUgdGhlIGRvY2tlciBpbWFnZSB3aXRoIHRoZSByZXF1aXJlZCBkYXRhYmFzZXMuIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgY2xvdWQgZGF0YWJhc2UsIHRoZW4gY2hhbmdlIHRoZSBzZXR0aW5nIGluIHRoZSBkZWZhdWx0Lmpzb24gKGAvY29uZmlnL2RlZmF1bHQuanNvbmApCiAgTm90ZTogSW4geW91ciBsb2NhbCBzZXR1cCwgYnkgZGVmYXVsdCBzZXJ2aWNlIHdpbGwgY29ubmVjdCB0byB0aGUgdGVzdCBkYXRhYmFzZS4gVG8gc2VlIHRoZSBkYXRhYmFzZSBuYW1lIGFuZCBkYXRhYmFzZSBhdXRoZW50aWNhdGlvbiBkZXRhaWxzIHNlZSBkZWZhdWx0Lmpzb24gZmlsZQotIE5vZGUuanMgPiB2MTQgbmVlZGVkLiBZb3UgY2FuIGdldCBpdCBbaGVyZV0oaHR0cHM6Ly9ub2RlanMub3JnL2VuL2Rvd25sb2FkLykKLSBCZXR0ZXIgaW5zdGFsbCBtb2NoYSBvbiBnbG9iYWwgbGV2ZWwgYG5wbSBpbnN0YWxsIC0tZ2xvYmFsIG1vY2hhYAoKPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3RvcCI+YmFjayB0byB0b3A8L2E+KTwvcD4KCiMjIyBJbnN0YWxsYXRpb24KCjEuIEdvIHRvIHlvdXIgY29tbWFuZC1saW5lIGludGVyZmFjZSBhbmQgdHlwZSBgbnBtIGluc3RhbGxgLiAoIGhlcmUgYXNzdW1wdGlvbiBpcyBzbHEgaXMgYXZhaWxhYmxlKQoKPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3RvcCI+YmFjayB0byB0b3A8L2E+KTwvcD4KCjwhLS0gVVNBR0UgRVhBTVBMRVMgLS0+CgojIyBVc2FnZQoKVHlwZSBgbnBtIHN0YXJ0YC4gRmV3IGxpbmVzIHdpbGwgY29tZXMgdXAgYW5kIHRoZW4gZ28gdG8gWyJodHRwOi8vbG9jYWxob3N0OjMwMDAvdXNlci1zZXJ2aWNlL2RvY3MiXShodHRwOi8vbG9jYWxob3N0OjMwMDAvdXNlci1zZXJ2aWNlL2RvY3MvIy8pLiBZb3Ugc2hvdWxkIHNlZSBzd2FnZ2VyIGRvYwoKPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3RvcCI+YmFjayB0byB0b3A8L2E+KTwvcD4KPCEtLSBFeHBsb3JlIC0tPgojIyBFeHBsb3JlIFRoZSBQcm9qZWN0CgpPbmNlIHlvdSBnZW5lcmF0ZSB0aGlzIHByb2plY3QgdXNpbmcgW2dlbmVyYXRvcl0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZ2VuZXJhdG9yLXJlc3Qtc3dhZ2dlci1leHByZXNzKSwgeW91IHdpbGwgc2VlIHRoaXMga2luZCBvZiBkaXJlY3Rvcnkgc3RydWN0dXJlLiAgClRoZSB0b3AtbGV2ZWwgd29ya2luZyBvZiB0aGlzIHByb2plY3QgaXMgbGlrZQoKYGBgCiB8LWFwcC5qcwogfC0uZXNsaW50cmMuanMKIHwtLmdpdGlnbm9yZQogfC0ucHJldHRpZXJyYy5qc29uCiB8LWxvZ2dlci5qcwogfC1wYWNrYWdlLmpzb24KIHwtUmVhZG1lLm1kCiB8LWFwaQogfCB8LWNvbnRyb2xsZXJzCiB8IHwgfC1jb250cm9sbGVyLmpzCiB8IHwgfC1tZXRyaWNDb250cm9sbGVyLmpzCiB8IHwtaGVscGVycwogfCB8IHwtc2hvcnRJZC5qcwogfCB8LXNlcnZpY2VzCiB8IHwgfC1zZXJ2aWNlLmpzCiB8IHwgfC1zeW5jU2VydmljZS5qcwogfCB8LXN3YWdnZXIKIHwgfCB8LXN3YWdnZXIuanNvbgogfC1jb25maWcKIHwgfC1jdXN0b20tZW52aXJvbm1lbnQtdmFyaWFibGVzLmpzb24KIHwgfC1kZWZhdWx0Lmpzb24KIHwgfC1kZXZlbG9wbWVudC5qc29uCiB8IHwtcHJvZHVjdGlvbi5qc29uCiB8LXRlc3QKIHwgfC10ZXN0LmpzCmBgYAoKSGVyZSBpcyBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIG1vc3Qgb2YgdGhlIGZpbGVzICAKCmBhcHAuanNgIFRoaXMgaXMgYSBzdGFydGluZyBwb2ludCBvZiB0aGUgYXBwbGljYXRpb24sIGluaXRpYWxpemluZyB0aGUgdmFsaWRhdGlvbnMgYW5kIHN3YWdnZXIgVUksIGFsbCBvZiB0aGUgUkVTVCBBUEkgcGF0aCAodXNpbmcgYC9hcGkvc3dhZ2dlci9zd2FnZ2VyLmpzb25gKQoKYC5lc2xpbnRyYy5qc2AgVGhpcyBmaWxlIGNvbnRhaW4gYWxsIFtsaW50aW5nXShodHRwczovL2VzbGludC5vcmcvKSBydWxlcyBmb3IgdGhpcyBwcm9qZWN0ICAKCmAucHJldHRpZXJyYy5qc29uYCBUaGlzIGZpbGUgY29udGFpbiBhbGwgW1ByZXR0aWVyXShodHRwczovL3ByZXR0aWVyLmlvLykgcnVsZXMgZm9yIHRoaXMgcHJvamVjdAoKYGxvZ2dlci5qc2AgVGhpcyBpcyBhIHdyYXBwZXIgYXJvdW5kIFtXaW5zdG9uXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS93aW5zdG9uKSAgCgpgL2FwaS9jb250cm9sbGVycy8qYCBUaGlzIGRpcmVjdG9yeSBoYXMgYWxsIHRoZSBjb250cm9sbGVycy4gVGhlc2UgY29udHJvbGxlcnMgYXJlIHRvIGZvcm1hdCB5b3VyIHJlcXVlc3QgYW5kIHJlc3BvbnNlLiAgCgpUaGUgYG1ldHJpY0NvbnRyb2xsZXJgIGlzIGV4cG9zaW5nIHRoZSBbUHJvbWV0aGV1c10oaHR0cHM6Ly9wcm9tZXRoZXVzLmlvLykgZGF0YSB2aWEgYC9tZXRyaWNzYCBlbmQgcG9pbnQuIElmIHlvdSB3YW50IHRvIHNlZSBzb21lIGV4YW1wbGUgY2hhcnRzLCBleHBsb3JlIHRoZSBgbWV0cmljYCBkaXJlY3RvcnkgYXQgdGhlIHJvb3QgbGV2ZWwKCmAvYXBpL3Nlcml2Y2UvKmAgVGhpcyBkaXJlY3RvcnkgaGFzIGFsbCB0aGUgc2VydmljZXMuIEV2ZXJ5IHJlc3QgZW5kIHBvaW50IGhhcyBpdHMgb3duIHNlcml2Y2UgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBhZGQgYnVzaW5lc3MgbG9naWMgb3IgdG8gaW50ZXJhY3Qgd2l0aCBleHRlcm5hbCBzZXJ2aWNlcy4gIAoKVGhlIHN5bmMgc2VydmljZSAoYC9hcGkvc2VydmljZXMvc3luY1NlcnZpY2UuanNgKSBpbml0aWxpemUgdGhlIGRhdGFiYXNlIGNvbm5lY3RvbiwgYXBhcnQgZnJvbSB0aGF0LCBpdCBjYW4gYmUgdXNlZCB0byBzdGFydCBhIGJhY2tncm91bmQgcHJvY2Vzcy4gIAoKYC9hcGkvaGVscGVycy9taWRkbGV3YXJlc2AgVGhpcyBtb2R1bGUgaXMgaW5pdGlhbGl6aW5nIFByb21ldGhldXMgbWV0cmljcyByaWdodCBub3csIGZvciBldmVyeSByZXN0IGVuZCBwb2ludC4gSW4gdGhlIHNhbWUgd2F5LCB0aGlzIG1pZGRsZXdhcmUgY2FuIGJlIHVzZWQgZm9yIGF1dGggYW5kIG90aGVyIG1ldGhvZHMgdGhhdCBuZWVkIHRvIGJlIGludm9rZWQgYmVmb3JlIGFueSBBUEkgY2FsbC4gIAoKYC9hcGkvaGVscGVycy9zcWxGaWx0ZXIucGVnanNgIGFuZCBgL2FwaS9oZWxwZXJzL3NxbEZpbHRlci5qc2AgVGhlIHBlZ2pzIGZpbGUgaXMgdGhlIGdyYW1tYXIgdGhhdCBpcyBlbXBvd2VyaW5nIEdFVCBhbmQgREVMRVRFIEFQSXMgW2ZpbHRlcl0oI2ZpbHRlcikgcGFyYW1ldGVyLiBUaGUgYHNxbEZpbHRlci5qc2AgaXMgZ2VuZXJhdGVkIHVzaW5nIHRoaXMgcGVnanMgZmlsZSwgYW5kIHRoaXMgYHNxbEZpbHRlci5qc2AgZmlsZSBjb252ZXJ0cyB0aGUgZmlsdGVyIHF1ZXJ5IGludG8gdGhlIGRhdGFiYXNlIHF1ZXJ5LiAgClRvIGdlbmVyYXRlIG9yIGN1c3RvbWl6ZSB0aGUgZmlsdGVycyBzZWUgW1BlZ2pzXShodHRwczovL3BlZ2pzLm9yZy8pICAKVG8gc2VlIHdoYXQga2luZCBvZiBxdWVyaWVzIGNhbiBiZSB1c2VkIGFuZCBob3cgdG8gdXNlIHRoaXMgc2VlIFtmaWx0ZXJdKCNmaWx0ZXIpIHNlY3Rpb24gIAoKYC9hcGkvaGVscGVycy9xdWVyeUhvb2tzanNgIHNlZSBbZmlsdGVyXSgjZmlsdGVyKSBzZWN0aW9uLiAgCgpSZXFlc3QgZmxvdyBkaWFncmFtICAKIVtBbHQgdGV4dF0oLi9mbG93RGlhZ3JhbS5kcmF3aW8uc3ZnKQoKPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3RvcCI+YmFjayB0byB0b3A8L2E+KTwvcD4KCjwhLS0gU2VydmljZSBGZWF0dXJlcyAtLT4KIyMgU2VydmljZSBGZWF0dXJlcwoKVGhpcyBzZXJ2aWNlIGhhcyBvdXQgb2YgdGhlIGJveCBzdXBwb3J0IFtzb3J0aW5nXSgjc29ydGluZyksIFtmaWx0ZXJdKCNmaWx0ZXIpLCBbcHJvamVjdGlvbl0oI3Byb2plY3Rpb24pIGFuZCBbcGFnaW5hdGlvbl0oI3BhZ2luYXRpb24pLCBiYWNrZ3JvdW5kIHRhc2tzLCBbTWV0cmljc10oI21ldHJpY3MpICAKQXNzdW1pbmcgdGhpcyBzZXJ2aWNlIGhhdmUgYG5hbWUsIGFnZSwgYWRkcmVzcywgY291bnRyeWAgZmllbGRzIGluIHRoZSB0aGUgc2NoZW1hLiBUaGVuIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlICAKCjwhLS0gTWFuYWdpbmcgY29uZmlndXJhdGlvbnMtLT4KCiMjIE1hbmFnaW5nIGNvbmZpZ3VyYXRpb25zCgpBbGwgdGhlIHNlcnZpY2UgY29uZmlndXJhdGlvbnMgYXJlIG1hbmFnZWQgdGhyb3VnaCBbY29uZmlnXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9jb25maWcpIG5wbSBwYWNrYWdlLiBGb3IgeW91ciBsb2NhbCBkZXZlbG9wbWVudCwgYWxsIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgdW5kZXIgYGNvbmZpZy9kZWZhdWx0Lmpzb25gLiBZb3UgY2FuIG92ZXJyaWRlIHRoZXNlIGluIHByb2R1Y3Rpb24gb3IgaW4gZGV2IGVudmlyb25tZW50IHVzaW5nIGBjb25maWcvcHJvZHVjdGlvbi5qc29uYG9yIGBjb25maWcvZGV2ZWxvcG1lbnQuanNvbmAuIFRoZSBjdXJyZW50IGRlZmF1bHQgZGF0YWJhc2UgY29uZmlndXJhdGlvbiBsb29rcyBsaWtlCgpgYGAKLi4uCiAgIkRhdGFiYXNlIjogewogICAgInNlcnZlciI6ICJsb2NhbGhvc3QiLCAgLS0tIGRhdGFiYXNlIHNlcnZlciBVUkwKICAgICJuYW1lIjogInRlc3QiLCAgICAgICAgICAgICAgICAgICAgICAgICAtLS0gZGF0YWJhc2UgbmFtZQogICAgInVzZXIiOiAiYWRtaW4iLAogICAgInBhc3N3b3JkIjogImFkbWluIiwKICAgICJsb2dnaW5nIjogZmFsc2UKICB9LAouLi4KYGBgCjwhLS0gU29ydGluZyAtLT4KIyMgU29ydGluZwoKSW4gdGhlIGdldCByZXF1ZXN0LCBkb2N1bWVudHMgY2FuIHNvcnRlZCBgJHNvcnRCeWAgcGFyYW1ldGVyLiBEb2N1bWVudHMgY2FuIGJlIHNvcnRlZCBpbiBib3RoIGFzY2VuZGluZyBhbmQgZGVzY2VuZGluZyBkaXJlY3Rpb24uIEV4OiBgK2FnZSAtbmFtZWAgdG8gc29ydCB0aGUgZG9jdW1lbnRzIGJ5IGFnZSBpbiBhc2NlbmRpbmcgb3JkZXIgYW5kIG5hbWUgaXMgZGVzY2VuZGluZyBvcmRlci4gIApUbyBjb250cm9sIHdoYXQgZmllbGRzIHlvdSBjYW4gc29ydCwgZ28gdG8gYC9hcGkvaGVscGVycy9xdWVyeUhvb2tzLmpzYCBhbmQgaW5zaWRlIHRoZSBgbWFwcGluZ2AgZnVuY3Rpb24gbW9kaWZ5IHRoZSBgc29ydEZpZWxkc2Aga2V5cy4gQXNzdW1pbmcsIHlvdSB3YW50IHRvIGVuYWJsZSBgbmFtZWAgYW5kIGBhZ2VgIHNvcnRpbmcsIHRoZW4gdGhlIHNvcnRGaWVsZCBpbiB0aGUgbWFwcGluZyBmdW5jdGlvbiB3aWxsIGJlIGxpa2U6CgpgYGAKICAuLi4KICBmdW5jdGlvbiBtYXBwaW5nKCkgewogICAgcmV0dXJuIHsKICAgICAgc29ydEZpZWxkczogWyduYW1lJywgJ2FnZSddLAogIC4uLgpgYGAKCjxwIGFsaWduPSJyaWdodCI+KDxhIGhyZWY9IiN0b3AiPmJhY2sgdG8gdG9wPC9hPik8L3A+Cgo8IS0tIEZpbHRlciAtLT4KIyMgRmlsdGVyCgpEb2N1bWVudHMgY2FuIGJlIGZpbHRlcmVkIHVzaW5nIHRoZSBwYXJhbWV0ZXIgYCRmaWx0ZXJgIGJ5IHdyaXRpbmcgU1FMLWxpa2Ugc3RhdGVtZW50cy4gRm9yIGV4YW1wbGUsIHRvIGdldCBhbGwgZG9jdW1lbnRzIHdoZXJlIHRoZSBhZ2UgaXMgaW4gWycyMycsICc0NSddIGFuZCBhZGRyZXNzID0gJ2FkZHJlc3MxJywgdGhlIHBhcmFtZXRlciBgJGZpbHRlcmAgc2hvdWxkIGJlIGxpa2UgYGFnZSBpbiAoICcyMycsICc0NScpIGFuZCBhZGRyZXNzID0gJ2FkZHJlc3MxJ2AuICAKSGVyZSBvbmUgdGhpbmcgdG8gbm90ZSBkb3duIGlzIHRoZSBxdW90ZXMgKGAnJ2ApIGFyb3VuZCBhbGwgdGhlIHZhbHVlcywgdGhlc2UgcXVvdGVzIGFyZSBhbHdheXMgcmVxdWlyZWQsIGZvciBldmVyeSB2YWx1ZS4gUmlnaHQgbm93IGBpbnRlZ2VyYCwgYHN0cmluZ2AsIGBib29sZWFuYCwgYW5kIGBkYXRlYCBkYXRhIHR5cGVzIGFyZSBzdXBwb3J0ZWQuIFRvIGFkZCBtb3JlIGRhdGEgdHlwZSBzdXBwb3J0LCBzZWUgYC9hcGkvaGVscGVycy9zcWxGaWx0ZXIucGVnanNgIGZpbGUuIEZvciBtb3JlIGV4YW1wbGVzIHNlZSBmaWx0ZXIgdGVzdCBjYXNlcy4gIAoKVG8gY29udHJvbCB3aGF0IGZpZWxkcyB5b3UgY2FuIGZpbHRlciwgZ28gdG8gYC9hcGkvaGVscGVycy9xdWVyeUhvb2tzLmpzYCBhbmQgaW5zaWRlIHRoZSBgbWFwcGluZ2AgZnVuY3Rpb24gbW9kaWZ5IHRoZSBgcXVlcnlGaWVsZHNgIGtleXMuIEFzc3VtaW5nLCB5b3Ugd2FudCB0byBlbmFibGUgYG5hbWVgIGFuZCBgYWdlYCBmaWx0ZXIsIHRoZW4gdGhlIHF1ZXJ5RmllbGRzIGluIHRoZSBtYXBwaW5nIGZ1bmN0aW9uIHdpbGwgYmUgbGlrZToKCmBgYAogIC4uLgogIGZ1bmN0aW9uIG1hcHBpbmcoKSB7CiAgICAuLi4KICAgICAgcXVlcnlGaWVsZHM6IFsKICAgICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3N0cmluZycgfSwKICAgICAgICB7IG5hbWU6ICdhZ2UnLCB0eXBlOiAnaW50JyB9CiAgICAgIF0sCiAgICAuLi4KICAuLi4KYGBgCgo8cCBhbGlnbj0icmlnaHQiPig8YSBocmVmPSIjdG9wIj5iYWNrIHRvIHRvcDwvYT4pPC9wPgoKPCEtLSBQcm9qZWN0aW9uIC0tPgojIyBQcm9qZWN0aW9uCgpQcm9qZWN0aW9uIGlzIGEgd2F5IHRvIHNlbGVjdCBvbmx5IHRoZSBuZWNlc3NhcnkgZGF0YSByYXRoZXIgdGhhbiBzZWxlY3RpbmcgZXZlcnkgY29sdW1uLiBVc2UgdGhlIGAkcHJvamVjdGlvbmAgcGFyYW1ldGVyIHRvIGRlZmluZSB0aGUgcHJvamVjdGlvbiBmaWVsZHMuIEFzc3VtaW5nIHlvdSB3YW50IHRvIGdldCBvbmx5IGBhZ2VgIGFuZCBgbmFtZWAgb3V0IG9mIGFsbCB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgaW4gdGhlIGRhdGFiYXNlLCB0aGVuIHRoZSBgJHByb2plY3Rpb25gIHBhcmFtZXRlciB3aWxsIGJlIGxpa2UgYGFnZSBuYW1lYC4gRm9yIG1vcmUgZXhhbXBsZXMgc2VlIGZpbHRlciB0ZXN0IGNhc2VzLiAgCgo8cCBhbGlnbj0icmlnaHQiPig8YSBocmVmPSIjdG9wIj5iYWNrIHRvIHRvcDwvYT4pPC9wPgoKPCEtLSBQYWdpbmF0aW9uIC0tPgojIyBQYWdpbmF0aW9uCgogQnkgRGVmYXVsdCBhcHBsaWNhdGlvbnMgZXhwb3NlcywgcGFnaW5hdGlvbiBwYXJhbWV0ZXJzIFskdG9wXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2FwaS1ndWlkZWxpbmVzL2Jsb2Ivdk5leHQvR3VpZGVsaW5lcy5tZCM5ODItY2xpZW50LWRyaXZlbi1wYWdpbmcpIGFuZCBbJHNraXBdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvYXBpLWd1aWRlbGluZXMvYmxvYi92TmV4dC9HdWlkZWxpbmVzLm1kIzk4Mi1jbGllbnQtZHJpdmVuLXBhZ2luZykuCgogPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3RvcCI+YmFjayB0byB0b3A8L2E+KTwvcD4KCjwhLS0gUGFnaW5hdGlvbiAtLT4KIyMgU3dhZ2dlciBVSQoKIFRvIHZpc3VhbGl6ZSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgQVBJ4oCZcyByZXNvdXJjZXMgZ28gdG8gWyJodHRwOi8vbG9jYWxob3N0OjMwMDAvdXNlci1zZXJ2aWNlL2RvY3MiXShodHRwOi8vbG9jYWxob3N0OjMwMDAvdXNlci1zZXJ2aWNlL2RvY3MvIy8pCgogPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3RvcCI+YmFjayB0byB0b3A8L2E+KTwvcD4KCjwhLS0gUmVxdWVzdCBhbmQgcmVzcG9uc2UgdmFsaWRhdGlvbiAtLT4KIyMgUmVxdWVzdCBhbmQgcmVzcG9uc2UgdmFsaWRhdGlvbgoKRGVmaW5lIHlvdXIgcmVxdWVzdCBib2R5IG9yIHJlcXVlc3QgcGFyYW1ldGVyIGluIHRoZSBzd2FnZ2VyIGZpbGUgKGBhcGkvc3dhZ2dlci9zd2FnZ2VyLmpzb25gKS4gVG8ga25vdyBtb3JlIGFib3V0IHRoZSBkZWZpbml0aW9ucywgc2VlIFtTd2FnZ2VyIERvY3VtZW50YXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykuIEFjY29yZGluZyB0byB0aGUgZGVmaW5pdGlvbnMgZGVmaW5lZCBpbiB0aGUgc3dhZ2dlciwgYWxsIHRoZSB2YWxpZGF0aW9ucyB3aWxsIGJlIHBlcmZvcm1lZC4KCiA8cCBhbGlnbj0icmlnaHQiPig8YSBocmVmPSIjdG9wIj5iYWNrIHRvIHRvcDwvYT4pPC9wPgoKPCEtLSBBcHBsaWNhdGlvbiBNZXRyaWNzIC0tPgojIyBNZXRyaWNzCgpBbGwgdGhlIGFwcGxpY2F0aW9uIG1ldHJpY3MgbGlrZSBDUFUgdXNhZ2VzLCBldmVudCBsYWcgZGVsYXksIFRQTSwgYW5kIHA5NSBhcmUgYXZhaWxhYmxlLgoKVGhlIGFwcGxpY2F0aW9uIGAvbWV0cmljc2AgZW5kIHBvaW50IGdpdmVzIHRoZSBbcHJvbWV0aGV1c10oaHR0cHM6Ly9wcm9tZXRoZXVzLmlvLykgY29tcGF0aWJsZSBkYXRhLiBJZiB5b3Ugd2FudCB0byBzZWUgd2hhdCBpdCB3aWxsIGxvb2sgbGlrZXMsIGp1c3QgaW5zaWRlIHRoZSBgbWV0cmljYCBmb2xkZXIgYW5kIGRvY2tlci1jb21wb3NlLXVwIGNvbW1hbmQuIEl0IHdpbGwgcnVuIFByb21ldGhldXMgb24gdGhlIDkwOTAgcG9ydCBhbmQgR3JhZmFubiBvbiB0aGUgOTAwMCBwb3J0LiBHbyB0byBHcmFmYW5hIGRhc2hib2FyZC4gR28gdG8gZ3JhZmFuYSBkYXNoYm9hcmQgW2xvY2FsbHldKGh0dHA6Ly9sb2NhbGhvc3Q6OTAwMC8pLiBZb3Ugc2hvdWxkIHNlZSBzb21ldGhpbmcgbGlrZToKIVtTYW1wbGUgR3JhZmFuIERhc2hib2FyZF0obWV0cmljcy9DYXB0dXJlLlBORyAiU2FtcGxlIEdyYWZhbiBEYXNoYm9hcmQiKQoKPHAgYWxpZ249InJpZ2h0Ij4oPGEgaHJlZj0iI3RvcCI+YmFjayB0byB0b3A8L2E+KTwvcD4KCjwhLS0gQ09OVFJJQlVUSU5HIC0tPgojIyBDb250cmlidXRpbmcKCkNvbnRyaWJ1dGlvbnMgYXJlIHdoYXQgbWFrZSB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5IHN1Y2ggYW4gYW1hemluZyBwbGFjZSB0byBsZWFybiwgaW5zcGlyZSwgYW5kIGNyZWF0ZS4gQW55IGNvbnRyaWJ1dGlvbnMgeW91IG1ha2UgYXJlICoqZ3JlYXRseSBhcHByZWNpYXRlZCoqLgoKSWYgeW91IGhhdmUgYSBzdWdnZXN0aW9uIHRoYXQgd291bGQgbWFrZSB0aGlzIGJldHRlciwgcGxlYXNlIGZvcmsgdGhlIHJlcG8gYW5kIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdC4gWW91IGNhbiBhbHNvIHNpbXBseSBvcGVuIGFuIGlzc3VlIHdpdGggdGhlIHRhZyAiZW5oYW5jZW1lbnQiLgpEb24ndCBmb3JnZXQgdG8gZ2l2ZSB0aGUgcHJvamVjdCBhIHN0YXIhIFRoYW5rcyBhZ2FpbiEKCjEuIEZvcmsgdGhlIFByb2plY3QKMi4gQ3JlYXRlIHlvdXIgRmVhdHVyZSBCcmFuY2ggKGBnaXQgY2hlY2tvdXQgLWIgZmVhdHVyZS9BbWF6aW5nRmVhdHVyZWApCjMuIENvbW1pdCB5b3VyIENoYW5nZXMgKGBnaXQgY29tbWl0IC1tICdBZGQgc29tZSBBbWF6aW5nRmVhdHVyZSdgKQo0LiBQdXNoIHRvIHRoZSBCcmFuY2ggKGBnaXQgcHVzaCBvcmlnaW4gZmVhdHVyZS9BbWF6aW5nRmVhdHVyZWApCjUuIE9wZW4gYSBQdWxsIFJlcXVlc3QKCjxwIGFsaWduPSJyaWdodCI+KDxhIGhyZWY9IiN0b3AiPmJhY2sgdG8gdG9wPC9hPik8L3A+Cg== readmeEtag: '"dce681d1136e57d85d0998f7aa3c2a4c76ddf72d"' readmeLastModified: Wed, 24 Apr 2024 00:33:47 GMT repositoryId: 442657761 description: >- A simple rest microservice with Open API spec 3.0 and SQL backend. Supports out of the box filtering, along with sorting and projection support created: '2021-12-29T04:18:26Z' updated: '2025-11-02T03:38:08Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: saurhkumar logo: https://avatars.githubusercontent.com/u/2967058?v=4 license: MIT repoEtag: '"c32b2b31cab2a0d03d9a88e4eef1555dadfbe0b3cc5cec1077a97b4709611300"' repoLastModified: Sun, 02 Nov 2025 03:38:08 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/saurbkumar/sqlcrud - source: openapi3 tags repository: https://github.com/foxfriends/openfetch v3: true repositoryMetadata: base64Readme: >- IyBPcGVuRmV0Y2gKClshW2NpXShodHRwczovL2dpdGh1Yi5jb20vZm94ZnJpZW5kcy9vcGVuZmV0Y2gvYWN0aW9ucy93b3JrZmxvd3MvY2kueWFtbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vZm94ZnJpZW5kcy9vcGVuZmV0Y2gvYWN0aW9ucy93b3JrZmxvd3MvY2kueWFtbCkKCkZldGNoLWxpa2UgT3BlbkFQSSBjbGllbnQgbGlicmFyeS4gU3VwcG9ydHMgW09wZW5BUEkgM10oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vKSBvbmx5LgoKSW5zdGFsbCBmcm9tIE5QTTogYG5wbSBpbnN0YWxsIG9wZW5mZXRjaGAKCiMjIFVzYWdlCgpgYGBqcwppbXBvcnQgKiBhcyBvcGVuZmV0Y2ggZnJvbSAnb3BlbmZldGNoJzsKCi8vIEJ1aWxkIGFuIEFQSSBiYXNlZCBvbiB0aGUgc3BlYy4gU2hvd24gYmVsb3cgYXJlIHRoZSBkZWZhdWx0IG9wdGlvbnM6CmNvbnN0IGFwaSA9IG9wZW5mZXRjaC5jcmVhdGUoU1BFQywgewogIC8vIFRoZSBiYXNlIFVSTCBmcm9tIHdoaWNoIHRvIG1ha2UgcmVxdWVzdHMuCiAgdXJsLAogIC8vIEVuYWJsZSBsb2dnaW5nLiBWYWxpZGF0aW9uIGVycm9ycyB3aWxsIGJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KICBsb2dnaW5nOiBmYWxzZSwKICAvLyBUaGUgY29uc29sZSwgcHJvdmlkaW5nIHRoZSBsb2cgbWV0aG9kcyAob25seSBgd2FybmAgaXMgdXNlZCkuCiAgY29uc29sZTogd2luZG93LmNvbnNvbGUsCiAgLy8gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgZmV0Y2ggdG8gdXNlIGZvciBtYWtpbmcgcmVxdWVzdHMuCiAgZmV0Y2g6IHdpbmRvdy5mZXRjaCwKfSk7CgovLyBJZiB5b3VyIHNwZWMgaXMgaG9zdGVkLCBpdCBjYW4gYmUgcmV0cmlldmVkIGF1dG9tYXRpY2FsbHkuCmNvbnN0IGFwaSA9IGF3YWl0IG9wZW5mZXRjaC5ob3N0ZWQoJ2h0dHA6Ly9leGFtcGxlLmNvbScsIHsKICAvLyAuLi4gc2FtZSBvcHRzIGFzIGFib3ZlCn0pOwoKLy8gQ3JlYXRlIGFuIGludm9jYXRpb24gY29udGV4dCB3aXRoIGNyZWRlbnRpYWxzIGFuZCBzdWNoLiBUaGUga2V5cyBvZiB0aGUgY3JlZGVudGlhbHMKLy8gb2JqZWN0IGFyZSBuYW1lcyBvZiBzZWN1cml0eSBzY2hlbWVzLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlaXIgdmFsdWVzLi4uCi8vICogICBIVFRQIEJhc2ljIEF1dGggZXhwZWN0cyB0aGUgdmFsdWUgdG8gYmUgYHsgdXNlciwgcGFzcyB9YAovLyAqICAgSFRUUCBCZWFyZXIgQXV0aCBleHBlY3RzIHRoZSB2YWx1ZSB0byBiZSBqdXN0IHRoZSB0b2tlbiAoaS5lLiBub3QgaW5jbHVkaW5nIHRoZSAiQmVhcmVyIiBwcmVmaXgpCi8vICogICBPdGhlciBIVFRQIGF1dGggZXhwZWN0cyB0aGUgZnVsbCBoZWFkZXIgdmFsdWUgKGkuZS4gaW5jbHVkaW5nIHRoZSBzY2hlbWUgbmFtZSkKLy8gKiAgIE9BdXRoMiB3aWxsIHBhc3MgdGhlIHRva2VuIHZpYSBBdXRvcml6YXRpb24gaGVhZGVyCmNvbnN0IGludm9rZSA9IG9wZW5mZXRjaC5jbGllbnQoewogIC8vIE92ZXJyaWRlIHRoZSBiYXNlIFVSTCBmcm9tIHdoaWNoIHRvIG1ha2UgcmVxdWVzdHMKICB1cmwsCiAgLy8gT3ZlcnJpZGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBmZXRjaGAgYWdhaW4uIFRoaXMgdmFsdWUgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBvbmUKICAvLyBwYXNzZWQgdG8gYGNyZWF0ZWAsIGlmIGJvdGggd2VyZSBwcm92aWRlZC4KICBmZXRjaCwKICAvLyBUaGUgY3JlZGVudGlhbHMgdG8gdXNlIHRvIHNhdGlzZnkgc2VjdXJpdHkgcmVxdWlyZW1lbnRzCiAgY3JlZGVudGlhbHM6IHt9LAp9KTsKCi8vIEludm9rZSBhbiBvcGVyYXRpb24gYnkgYG9wZXJhdGlvbklkYCAoaGVyZTogYGdldFVzZXJgKToKLy8gKiAgIFBhcmFtZXRlciBhcmUgc3VwcGxpZWQgYnkgbmFtZQovLyAqICAgT3B0aW9ucyBhcmUgdGhlIHNhbWUgYXMgZmV0Y2gsIHdpdGggYSBmZXcgYmVpbmcgc3VwcGxpZWQgYXV0b21hdGljYWxseToKLy8gICAgICogICBgQ29udGVudC1UeXBlYCB3aWxsIGJlIGRldGVybWluZWQgYXV0b21hdGljYWxseSBpZiB0aGUgc3BlYyBvbmx5IGRlZmluZXMgb25lIHJlcXVlc3QgYm9keQovLyAgICAgICAgIHR5cGUsIG90aGVyd2lzZSBpdCBtdXN0IGJlIHN1cHBsaWVkIHZpYSBgaGVhZGVyc2AuCi8vICAgICAqICAgSWYgYENvbnRlbnQtVHlwZWAgaXMgSlNPTiwgYGJvZHlgIHdpbGwgYmUgcGFzc2VkIHRocm91Z2ggYEpTT04uc3RyaW5naWZ5YC4KLy8gICAgICAgICBObyBwcm9jZXNzaW5nIHdpbGwgYmUgZG9uZSB0byBhbnkgb3RoZXIgYm9kaWVzLgovLyAgICAgKiAgIFRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gdGhlIHNlY3VyaXR5IHJlcXVpcmVtZW50cy4KLy8gICAgICogICBTZXQgdGhlIGBBY2NlcHRgIGhlYWRlciBtYW51YWxseSB0byBzcGVjaWZ5IHdoaWNoIHJlc3BvbnNlIGZvcm1hdCB0byByZWNlaXZlLgpjb25zdCByZXNwb25zZSA9IGF3YWl0IGludm9rZShhcGkuZ2V0VXNlcih7IGlkOiAnZm94ZnJpZW5kcycgfSwgeyBoZWFkZXJzLCBib2R5IH0pKTsKCi8vIFRoZSByZXNwb25zZSBpcyB3aGF0ZXZlciBpcyByZXR1cm5lZCBieSB0aGUgcHJvdmlkZWQgaW1wbGVtZW50YXRpb24gb2YgYGZldGNoYC4gUmVmZXIgdG8gdGhlCi8vIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb24gaG93IHRvIGhhbmRsZSB0aGF0IHJlc3BvbnNlLiBJbiBwYXJ0aWN1bGFyOgovLyAqICAgVGhlIHJlc3BvbnNlIGJvZHkgaXMgbm90IGludGVycHJldGVkIGF0IGFsbCAoZS5nLiBKU09OIGlzIG5vdCBwYXJzZWQgYXV0b21hdGljYWxseSkKLy8gKiAgIFRoZSByZXNwb25zZSBzdGF0dXMgaXMgbm90IGludGVycHJldGVkIGF0IGFsbCAoZS5nLiA0WFgvNVhYIHJlcG9uc2VzIGRvIG5vdCB0aHJvdykKY29uc29sZS5hc3NlcnQocmVzcG9uc2UgaW5zdGFuY2VvZiBSZXNwb25zZSkKYGBgCgpQb2ludHMgdG8gbm90ZToKKiAgIFRoaXMgcGFja2FnZSBhc3N1bWVzIHlvdXIgT3BlbkFQSSBzcGVjIGlzIHZhbGlkL2NvcnJlY3QsIGFuZCB0aGF0IHlvdSBhcmUgKGZvciB0aGUgbW9zdCBwYXJ0KQogICAgY2FsbGluZyBpdCB3aXRoIHNlbnNpYmxlIHZhbHVlcy4gVW5kZWZpbmVkIGJlaGF2aW91ciB3aWxsIG9jY3VyIGlmIHlvdSBkZXZpYXRlIGZyb20gc3BlYy4KKiAgIFRoZSBgc2VydmVyc2AgZmllbGQgb2YgdGhlIHNwZWMgaXMgaWdub3JlZC4gUHJvdmlkZSBhIGNvcnJlY3QgYHVybGAgb24geW91ciBvd24uCiogICBUaGVyZSBpcyBjdXJyZW50bHkgbm8gc3VwcG9ydCBmb3IgYW55IGV4dGVuc2lvbnMsIGJ1dCB0byBiZSBhYmxlIHRvIGltcGxlbWVudCB0aG9zZSBhcyBwbHVnaW5zCiAgICBpcyBzb21ldGhpbmcgdGhhdCBpcyBiZWluZyBjb25zaWRlcmVkLgoKIyMgVGVzdGluZwoKU28gZmFyLi4uIHZlcnkgbGl0dGxlIHRlc3RpbmcgaGFzIGJlZW4gZG9uZS4gSnVzdCBhIGJpdCBvZiBtYW51YWwgc3R1ZmYuIFRydXN0IHRoaXMgcHJvamVjdCBhdCB5b3VyCm93biByaXNrIGZvciBub3csIHVudGlsIEkgZmVlbCBsaWtlIHdyaXRpbmcgYSBwcm9wZXIgdGVzdCBzdWl0ZS4KCiMjIENvbnRyaWJ1dGluZwoKQ29udHJpYnV0aW9ucyBhcmUgd2VsY29tZSEgUGxlYXNlIHNlbmQgYSBQUiBvciBjcmVhdGUgaXNzdWVzIGlmIHlvdSB3b3VsZCBsaWtlIHNvbWV0aGluZyBpbXByb3ZlZC4K readmeEtag: '"619eab1536312eb7b6cf628bcde5a720b3f9cc17"' readmeLastModified: Mon, 17 Jun 2024 13:19:34 GMT repositoryId: 349907093 description: Fetch-like OpenAPI client library created: '2021-03-21T05:20:39Z' updated: '2026-01-22T01:40:21Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: foxfriends logo: https://avatars.githubusercontent.com/u/6126521?v=4 repoEtag: '"6266170be892db9f3a7a702950dc93da29dd6e2c288c181ae1815145d0788a8d"' repoLastModified: Thu, 22 Jan 2026 01:40:21 GMT foundInMaster: true category: - Testing - Server Implementations - Parsers id: 029d9dfa2a96b566f6723dddab2c917b - source: openapi3 tags repository: https://github.com/open-banking/parties v3: true repositoryMetadata: base64Readme: IyBwYXJ0aWVzCnBhcnRpZXMgQVBJIGJ1aWx0IG9uIHRvcCBvZiBsaWdodC00ago= readmeEtag: '"4af5d3ee73f4ea1ff7562baf4d82d3f75ab83666"' readmeLastModified: Thu, 25 Jul 2024 20:09:47 GMT repositoryId: 227717632 description: parties API built on top of light-4j created: '2019-12-12T23:50:14Z' updated: '2026-02-03T01:08:54Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 repoEtag: '"585e964547740546231b5faa7ed23cfcbb0b0d0087184b477fc5d0afd3041afc"' repoLastModified: Tue, 03 Feb 2026 01:08:54 GMT foundInMaster: true category: - Documentation - Server - Parsers id: 6f9a462dcee9c3601ba0dfb6aec30ba1 - source: openapi3 tags repository: https://github.com/istandaarden/iwlz-generiek v3: true repositoryMetadata: base64Readme: >- IyBpV2x6LWdlbmVyaWVrCktvcHBlbHZsYWsgc3BlY2lmaWNhdGllcyBtZXQgbmV0d2VyayBicmVkZSBmdW5jdGlvbmFsaXRlaXQuCgoKKiBLb3BwZWx2bGFrIE5ldHdlcmtwdW50CiAgICAqIFZlcnplbmRlbiB2YW4gbm90aWZpY2F0aWUKICAgICogVmVyemVuZGVuIHZhbiAoZm91dCkgbWVsZGluZwoKCiMjIFZlcnNpZXMKCnxWZXJzaWUgfCBTdGF0dXMgfCAgVG9lbGljaHRpbmcgfAp8Oi0tIHw6LS0gfCA6LS0gfAp8IHZlcnNpZSB2MS4wIC0gMTItMDQtMjAyNCAgfCAgZWVyc3RlIHZlcnNpZSB2b29yIGltcGxlbWVudGF0aWUgPGJyPiAtIFtSRkMwMDA4IC0gTm90aWZpY2F0aWVzXShodHRwczovL2dpdGh1Yi5jb20vaVN0YW5kYWFyZGVuL2lXbHotUkZDL2Jsb2IvbWFpbi9SRkMvUkZDMDAwOCUyMC0lMjBOb3RpZmljYXRpZXMubWQpICA8YnI+IC0gW1JGQzAwMTggLSBGb3V0bWVsZGluZ2VuXShodHRwczovL2dpdGh1Yi5jb20vaVN0YW5kYWFyZGVuL2lXbHotUkZDL2Jsb2IvbWFpbi9SRkMvUkZDMDAxOCUyMC0lMjBNZWxkZW4lMjB2YW4lMjBmb3V0ZW4lMjBpbiUyMGdlZ2V2ZW5zJTIwdm9sZ2VucyUyMGlTdGFuZGFhcmQlMjBpV2x6Lm1kKSAgfCBbdjEuMC4wXShodHRwczovL2dpdGh1Yi5jb20vaVN0YW5kYWFyZGVuL2lXbHotZ2VuZXJpZWsvcmVsZWFzZXMvdGFnL2lXbHotZ2VuLXYxLjAuMCkoW21hc3Rlcl0oaHR0cHM6Ly9naXRodWIuY29tL2lTdGFuZGFhcmRlbi9pV2x6LWdlbmVyaWVrKSkgfAoKQHRvZG8KLSBbIF0gQ2hhbmdlbG9nIGJpandlcmtlbgoKICAKCiMjIERvY3VtZW50YXRpZQotIERvY3VtZW50YXRpZSBvdmVyIE5vdGlmaWNhdGllczogW1JGQzAwMDhdKGh0dHBzOi8vZ2l0aHViLmNvbS9pU3RhbmRhYXJkZW4vaVdsei1SRkMvYmxvYi9tYWluL1JGQy9SRkMwMDA4JTIwLSUyME5vdGlmaWNhdGllcy5tZCkKLSBEb2N1bWVudGF0aWUgb3ZlciBNZWxkZW4gdmFuIGZvdXRlbiBpbiBnZWdldmVucyB2b2xnZW5zIGlTdGFuZGFhcmQgaVdsejogW1JGQzAwMThdKGh0dHBzOi8vZ2l0aHViLmNvbS9pU3RhbmRhYXJkZW4vaVdsei1SRkMvYmxvYi9tYWluL1JGQy9SRkMwMDE4JTIwLSUyME1lbGRlbiUyMHZhbiUyMGZvdXRlbiUyMGluJTIwZ2VnZXZlbnMlMjB2b2xnZW5zJTIwaVN0YW5kYWFyZCUyMGlXbHoubWQpCgojIyBCcm9ubmVuCiogQWN0aWVwcm9ncmFtbWEgaVdsejogdmFuIGtldGVuIG5hYXIgbmV0d2VyazogW2xlZXMgaGllciBtZWVyIG92ZXIgaGV0IEFjdGllcHJvZ3JhbW1hIGlXbHpdKGh0dHBzOi8vd3d3LmlzdGFuZGFhcmRlbi5ubC9hY3RpZXByb2dyYW1tYS1pd2x6ICJBY3RpZXByb2dyYW1tYSBpV2x6IikKKiBJbmZvcm1hdGllbW9kZWwgaVN0YW5kYWFyZGVuIDogW0luZm9ybWF0aWVtb2RlbGxlbl0oaHR0cHM6Ly9pbmZvcm1hdGllbW9kZWwuaXN0YW5kYWFyZGVuLm5sLykKKiBQb3J0YWFsIHZvb3IgaVN0YW5kYWFyZGVuIGluIGRlIFpvcmcgZW4gT25kZXJzdGV1bmluZzogW2hvbWVwYWdpbmEgaVN0YW5kYWFyZGVuXShodHRwczovL3d3dy5pc3RhbmRhYXJkZW4ubmwpCgojIyBDb250YWN0cGVyc29uZW46CiogSGlsa28gSmFjb2JzZSAgLSBbQGhpbGtvamFjb2JzZV0oaHR0cHM6Ly9naXRodWIuY29tL0hpbGtvSmFjb2JzZSkKKiBSZW1vIHZhbiBSZXN0ICAtIFtAcnZhbnJlc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9ydmFucmVzdCkKKiBEZW5uaXMgZGUgR291dyAtIFtAZGVubmlzZGVnb3V3XShodHRwczovL2dpdGh1Yi5jb20vZGdvdXcpCgojIyBMaWNlbnRpZQpDb3B5cmlnaHQgJmNvcHk7IGlTdGFuZGFhcmRlbiAyMDIxCg== readmeEtag: '"5e3e63d3617920ce0a1e02b21caa6ec4aaa56a15"' readmeLastModified: Fri, 12 Apr 2024 13:38:32 GMT repositoryId: 331606386 description: Koppelvlak specificaties met netwerk brede functionaliteit created: '2021-01-21T11:27:03Z' updated: '2026-01-08T15:24:01Z' language: null archived: false stars: 3 watchers: 4 forks: 3 owner: iStandaarden logo: https://avatars.githubusercontent.com/u/54351663?v=4 license: GPL-3.0 repoEtag: '"9ddcdd354844d922a84e681e210fe234a770c52724f7f9f1647d40004c07f726"' repoLastModified: Thu, 08 Jan 2026 15:24:01 GMT foundInMaster: true category: Low-level Tooling id: 64b110c525b84712e1e71d3932e88126 - source: openapi3 tags repository: https://github.com/mermade/semoasa-tools v3: true repositoryMetadata: base64Readme: >- IyBzZW1vYXNhLXRvb2xzCgpUb29scyBmb3IgbWFuaXB1bGF0aW5nIFtTZW1vYXNhXShodHRwczovL2dpdGh1Yi5jb20vUmVwcmVaZW4vU2Vtb2FzYSkgZG9jdW1lbnRzLgoKIyMgc2Vtb2FzYS1jb21iaW5lCgpDb21iaW5lIG11bHRpcGxlIFNlbW9hc2EgZG9jdW1lbnRzIGludG8gb25lLgoKIyMjIFVzZS1jYXNlCgpCdW5kbGluZyBtdWx0aXBsZSBTZW1vYXNhIGRvY3VtZW50cyBpbnRvIGEgY29tYmluZWQgZG9jdW1lbnQgZm9yIHVzZSBpbiBTZW1vYXNhLQpjb21wbGlhbnQgYXBwbGljYXRpb25zLgoKIyMjIFVzYWdlOgoKYGBgCnNlbW9hc2EgW2ZpbGUuLi5dID4gb3V0cHV0LnlhbWwKYGBgCgojIyMgTm90ZXMKClRoZSBvdXRwdXQgU2Vtb2FzYSB2ZXJzaW9uIG51bWJlciAoYG9wZW5hcGlFeHRlbnNpb25Gb3JtYXRgKSB3aWxsIGJlIHNldCB0byB0aGUgaGlnaGVzdCB2ZXJzaW9uIHNlZW4gaW4gdGhlIGlucHV0IGZpbGVzLCBhY2NvcmRpbmcKdG8gW3NlbXZlcl0oaHR0cDovL3NlbXZlci5vcmcvKS4gTm8gYXR0ZW1wdCBpcyAqY3VycmVudGx5KiBtYWRlIHRvIHZhbGlkYXRlIG9yIHVncmFkZSBlYXJsaWVyIHZlcnNpb25zIHRvIHRoZSBsYXRlc3QgdmVyc2lvbi4KCkNsYXNoaW5nIGRlZmluaXRpb25zIGluIGxhdGVyIGlucHV0IGZpbGVzIHdpbGwgYmUgKiptZXJnZWQqKiB3aXRoIHRob3NlIGluIGVhcmxpZXIgZmlsZXMuIFByZWNlZGVuY2UgaXMgaW1wb3J0YW50LgoKIyMgc2Vtb2FzYS1zcGxpdAoKIyMjIFVzZSBjYXNlCgpTcGxpdHRpbmcgYSBidW5kbGVkIFNlbW9hc2EgZG9jdW1lbnQgYmFjayBpbnRvIGl0cyBjb21wb25lbnQgcGFydHMsIGJhc2VkIG9uIG5hbWVzcGFjZS4KCiMjIyBVc2FnZQoKYHNlbW9hc2Etc3BsaXQgW2ZpbGUuLi5dYAoKIyMjIE5vdGVzCgpOYW1lc3BhY2VzIGV4aXN0aW5nIGluIG11bHRpcGxlIGlucHV0IGZpbGVzIHdpbGwgb3ZlcndyaXRlIHRoZSBzYW1lIG91dHB1dCBkb2N1bWVudChzKS4KCiMjIHNlbW9hc2EtdmFsaWRhdGUKCipDb21pbmcgc29vbioKCiMjIHNlbW9hc2EtdXBncmFkZQoKKkNvbWluZyBzb29uKgoK readmeEtag: '"62a641d925fbf1f2d7048300927b2e19ca490553"' readmeLastModified: Mon, 26 Jul 2021 09:12:13 GMT repositoryId: 107004998 description: Tools to manipulate Semoasa documents created: '2017-10-15T11:08:27Z' updated: '2021-07-26T09:12:21Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: BSD-3-Clause repoEtag: '"d7c99a0815e40fe6fb308b2c8834377d3e44378418789efb1840a1814edc1ab4"' repoLastModified: Mon, 26 Jul 2021 09:12:21 GMT foundInMaster: true category: Parsers id: feef30c4b998bddca2a34ab95d12e192 - source: openapi3 tags repository: https://github.com/unitedeffects/ue-civic-api_srvc v3: true repositoryMetadata: base64Readme: >- IyBVRS1DaXZpYy1BUElfU3J2YwoKQSB3cmFwcGVyIHdpdGggY2FjaGluZyBmb3IgdGhlIGdvb2dsZWFwaSBjaXZpYyBzZXJ2aWNlIHRvIGFsbG93IHlvdSB0byByZXNwb25kIHF1aWNrbHkgYW5kIGFsc28gdG8gZW5mb3JjZSBodHRwcyBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgc29tZSBvZiB0aGUgY2l2aWMgYXBpIGNvbnRlbnQgcHJvdmlkZWQgYnkgZ29vZ2xlIGlzIG9ubHkgaHR0cC4gSSBkbyBtb2RpZnkgdGhlIHJldHVybiBzbGlnaHRseSB0byBtYWtlIGl0IGVhc2llciB0byByZWZlcmVuY2Ugb2ZmaWNpYWxzIGFuZCB0aXRsZXMgdG9nZXRoZXIuCgojIyBEb2N1bWVudGF0aW9uCgpodHRwczovL2NpdmljcWEubWFpbG15dm9pY2UuY29tCgojIyBMb2NhbCBEZXYKCiogY2xvbmUgdGhpcyByZXBvCiogeWFybgoqIGNwIHNyYy9jb25maWdfY2hhbmdlbWUuanMgc3JjL2NvbmZpZy5qcwoqIG1vZGlmeSBjb25maWcuanMgd2l0aCBhcHByb3ByaWF0ZSB2YWx1ZXMKKiB5YXJuIHJ1biBkZXYKCkFsdGVybmF0aXZlbHksIHlvdSBjYW4gYnVpbGQgd2l0aCBiYWJsZSBhbmQgcnVuIGZvcm0gZGlzdAoKKiB5YXJuIGJ1aWxkCiogeWFybiBydW4gZGlzdAoKQXZhaWxhYmxlIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6NDA1MAoKIyMgTGFtYmRhCgpUaGlzIGlzIGFuIGV4cHJlc3Mgc2VydmljZSB3cmFwcGVkIGFzIGEgbGFtYmRhIGZ1bmN0aW9uLiBZb3UgY2FuIGZpbmQgYW4gZXhhbXBsZSBhbmQgZGV0YWlscyBoZXJlOiBodHRwczovL21lZGl1bS5jb20vQHRoZUJvRWZmZWN0L3BvcnRpbmctbm9kZS1leHByZXNzLWs4LXNlcnZpY2UtdG8tbGFtYmRhLXdpdGgtc2VydmVybGVzcy1hLWZldy1leHRyYS1sZXNzb25zLWxlYXJuZWQtYTlkZGVkM2U2ZDExCgoqIEVuc3VyZSB5b3UgaGF2ZSB0aGUgc2VydmVybGVzcy5jb20gZnJhbWV3b3JrIGluc3RhbGxlZAoqIEVuc3VyZSB5b3UgaGF2ZSBhbiBhd3MgYWNjb3VudCBhbmQgY29uZmlndXJlZCB3aXRoIHNlcnZlcmxlc3MKKiBjaGFuZ2UgdGhlIGRpcmVjdG9yeSAuZW52X2NoYW5nZW1lIHRvIC5lbnYKKiBjaGFuZ2UgdGhlIGpzb24gZmlsZSB2YWx1ZXMgaW4gLmVudi9lbnYucWEuanNvbiB0byBtYXRjaCB5b3VyIGNvbmZpZy5qcyBmaWxlCiogaW4gYXdzLCBtYWtlIHN1cmUgeW91J3ZlIGNyZWF0ZWQgYW4gU0xTIGNlcnRpZmljYXRlIGZvciB5b3VyIHJvdXRlNTMgZG9tYWluCiogU0xTX0VOVj1xYSBzbHMgY3JlYXRlX2RvbWFpbiAoaWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSkKKiBTTFNfRU5WPXFhIHlhcm4gZGVwbG95CgpJdCBtYXkgdGFrZSB1cCB0byA0MCBtaW51dGVzIGZvciB0aGUgZG9tYWluIHlvdSBjcmVhdGUgdG8gYmUgYXZhaWxhYmxlLgoKIyMgRG9ja2VyCgpUaGlzIHNlcnZpY2UgY2FuIGFsc28gYmUgdXNlZCBhcyBhIGRvY2tlciBjb250YWluZXIuIERvY2tlcmZpbGUgcHJvdmlkZWQuCgoqIGRvY2tlciBidWlsZCAtdCB5b3UvY2l2aWMgLgoqIHNldCBhbGwgZW52IHBhcmFtZXRlcnMgZnJvbSBjb25maWcuanMgb3IganVzdCBjcmVhdGUgYSBkb2NrZXItY29tcG9zZSBmaWxlIChub3QgcHJvdmlkZWQpCiogaWYgeW91IG1hbnVhbGx5IHNldCBwYXJhbWV0ZXJzOiBkb2NrZXIgcnVuIC1wIDQwNTA6NDA1MCB5b3UvY2l2aWMKKiBvdGhlcndpc2UsIGlmIHlvdSBjcmVhdGVkIHRoZSBjb21wb3NlIGZpbGU6IGRvY2tlci1jb21wb3NlIHVwCgpBdmFpbGFibGUgYXQgaHR0cDovL2xvY2FsaG9zdDo0MDUwCgojIyBUb2RvCgoqIDxzdHJpa2U+dXBkYXRlIGNvbmZpZ3MKKiBnZXQgbG9ncyB3aXRoIHN3YWdnZXIgcnVubmluZwoqIGNvbnZlcnQgY29kZSBiYXNlIGFuZCB1cGRhdGUgc3dhZ2dlcgoqIHVwZGF0ZSByb2xlIGJhc2VkIGFjY2VzcwoqIHVwZGF0ZSBhdXRoIHJlcXVpcmVtZW50cyBmb3IgYW5vbiB1c2VycwoqIGltcGxlbWVudCBhbmQgdGVzdAoqIGRlcGxveSB0byBRQQoqIG1lcmdlIHYyCiogZml4IFJFQURNRTwvc3RyaWtlPgoqIHB1c2ggdG8gcHJvZA== readmeEtag: '"ef9e904fa781c96d0454a810a05bad13e90b3b1e"' readmeLastModified: Mon, 10 May 2021 16:35:45 GMT repositoryId: 85435430 description: >- A wrapper with caching for the googleapi civic service to allow you to respond quickly and also to enforce https despite the fact that some of the civic api content provided by google is only http. created: '2017-03-18T22:14:57Z' updated: '2026-01-04T18:09:11Z' language: JavaScript archived: true stars: 0 watchers: 1 forks: 0 owner: UnitedEffects logo: https://avatars.githubusercontent.com/u/15662367?v=4 license: MIT repoEtag: '"375688151c51c17954294816ec3939cc64e9217e93139274f8a1b9f84e805f1e"' repoLastModified: Sun, 04 Jan 2026 18:09:11 GMT foundInMaster: true category: Server Implementations id: 5b1331246b87de0b0f8db0f6ad8139b8 - source: openapi3 tags repository: https://github.com/bradrmarshall/openlms v3: true repositoryMetadata: base64Readme: IyBPcGVuTE1TCkFuIE9wZW4gTGVhcm5pbmcgTWFuYWdlbWVudCBTeXN0ZW0K readmeEtag: '"437ad6f8aebcf946d3e625e3f6fa6885ff2bba6a"' readmeLastModified: Sun, 03 Feb 2019 21:26:23 GMT repositoryId: 168995367 description: An Open Learning Management System created: '2019-02-03T21:26:23Z' updated: '2019-02-03T21:26:57Z' language: null archived: false stars: 0 watchers: 0 forks: 0 owner: bradrmarshall logo: https://avatars.githubusercontent.com/u/47306005?v=4 license: Apache-2.0 repoEtag: '"b09c3f3137a3b6a04d5fda5b5f1da625fe65cf100d213a3182e3edff7473b66d"' repoLastModified: Sun, 03 Feb 2019 21:26:57 GMT foundInMaster: true category: - SDK - Server Implementations id: 275b9cfe1d57dc446054d25ed7baae74 - source: openapi3 tags repository: https://github.com/fibercrypto/fibercryptopy v3: true repositoryMetadata: repositoryId: 219072349 description: Python client library for FiberCrypto wallet API classes created: '2019-11-01T22:33:39Z' updated: '2019-11-01T22:55:42Z' language: null archived: false stars: 0 watchers: 2 forks: 1 owner: fibercrypto logo: https://avatars.githubusercontent.com/u/47309509?v=4 license: GPL-3.0 repoEtag: '"d9fe56c1569c7e647e8724f9509294c5df4bf261acdd1dda1f19c224ba7b5b50"' repoLastModified: Fri, 01 Nov 2019 22:55:42 GMT foundInMaster: true id: 75d4914cf4c403c9f6649e9ee4c3f3c8 - source: openapi3 tags repository: https://github.com/elipzis/aping v3: true repositoryMetadata: base64Readme: >- IyBhUGluZyBbIVtHaXRIdWIgbGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9lbGlwemlzL2FQaW5nLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9lbGlwemlzL2FwaW5nL2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQpIFshW0dpdEh1YiAocHJlLSlyZWxlYXNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3JlbGVhc2UtMC40LjAteWVsbG93LnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9lbGlwemlzL2FwaW5nL3JlbGVhc2VzL3RhZy8wLjQuMCkgWyFbRG9uYXRlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0RvbmF0ZS1QYXlQYWwtZ3JlZW4uc3ZnKV0oaHR0cHM6Ly93d3cucGF5cGFsLm1lL2VsaXB6aXMpCkEgc2ltcGxlIEFQSSBQaW5nIHRvb2wgdG8gZmVlZCBhIFN3YWdnZXIvT3BlbkFQSSAzLjAgZG9jdW1lbnQgZmlsZSwgY2FsbCBhbGwgcGF0aHMgYW5kIHJlY29yZCB0aW1lIGFuZCByZXNwb25zZXMsIGUuZy4gdG8gYmVuY2htYXJrIGFuIGVuZHBvaW50LgoKIyMgRmVhdHVyZXMKKiBSZWFkIFtTd2FnZ2VyL09wZW5BUEkgMy4wXVsyXSBhcGkgZGVmaW5pdGlvbiBmaWxlcyBhbmQgY2FsbCBhbGwgcGF0aHMKKiBQaW5nIGFsbCBwYXRocyBpbiBwYXJhbGxlbCB3b3JrZXJzIGFuZC9vciBvdmVyIHNldmVyYWwgbG9vcHMKKiBQYXNzIGN1c3RvbSBoZWFkZXJzLCBlLmcuIGBBdXRob3JpemF0aW9uYAoqIENyZWF0ZSByYW5kb20gYGludGVnZXJgIGFuZCBgc3RyaW5nYCBwYXJhbWV0ZXJzIGZvciB1cmxzCiogVHJhY2sgdGhlIHRpbWUgYW5kIHJlc3BvbnNlIGJvZHkgcGVyIHJlcXVlc3QKKiBPdXRwdXQgdGhlIHJlc3VsdHMgdG8gY29uc29sZSwgQ1NWLCBIVE1MLCBKU09OIG9yIE1hcmtkb3duCgojIyBMYXRlc3QgVmVyc2lvbnMKKiAwLjQuMAogICogQWRkZWQgcmVndWxhciBleHByZXNzaW9uIGZpbHRlciBvcHRpb24gZm9yIHBhdGhzCiAgKiBBZGRlZCByZXNwb25zZSB0aW1lIG1pbGxpc2Vjb25kcyB0aHJlc2hvbGQKKiAwLjMuMAogICogQWRkZWQgYXZlcmFnZSBtcyBjYWxjdWxhdGlvbiBmb3IgbXVsdGlwbGUgbG9vcHMKICAqIEFkZGVkIEJvb3RzdHJhcCBIVE1MIHRlbXBsYXRlIHdpdGggc29ydGFibGUgdGFibGUKICAqIEFkZGVkIEpTT04gb3V0cHV0CiogMC4yLjAKICAqIEFkZGVkIGFuIG9wdGlvbiB0byBjb25maWd1cmUgaW5jbHVkZWQgcXVlcnkgbWV0aG9kcwogIApEb3dubG9hZCB0aGUgbGF0ZXN0IFtyZWxlYXNlIGhlcmVdWzNdLgoKIyMgVXNhZ2UKRm9yIGEgcXVpY2sgc3RhcnQgZG93bmxvYWQgYSBbcmVsZWFzZV1bM10sIGNoYW5nZSBpbnRvIHRoZSBkaXJlY3RvcnkgYW5kIGV4ZWN1dGUgdGhlIGJpbmFyeSB3aXRoIHlvdXIgb3B0aW9ucywgZS5nLjoKYGBgc2hlbGwgc2NyaXB0Ci4vYXBpbmcgLWlucHV0PSJjYWxscy5qc29uIiAtaGVhZGVyPSd7XCJBdXRob3JpemF0aW9uXCI6IFwiQmVhcmVyIGV5WFlaXCJ9JyAtcmVzcG9uc2UgLWJhc2U9aHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaSAtb3V0PWh0bWwgLWw9NSAtdz01CmBgYAoKRXhhbXBsZSBwcm9ncmVzcyBvdXRwdXQ6CmBgYApQaW5naW5nICdSRVNUIEFQSSBEb2N1bWVudGF0aW9uIC0gQmFja2VuZCcKUGluZ2luZyAxMjIgcm91dGVzIChSb3VuZCAxKSAuLi4gZG9uZSEgWzEyMiBpbiAxMS41ODZzXQpQaW5naW5nIDEyMiByb3V0ZXMgKFJvdW5kIDIpIC4uLiBkb25lISBbMTIyIGluIDIzLjMxNXNdClBpbmdpbmcgMTIyIHJvdXRlcyAoUm91bmQgMykgLi4uIGRvbmUhIFsxMjIgaW4gMzcuMjYyc10KUGluZ2luZyAxMjIgcm91dGVzIChSb3VuZCA0KSAuLi4gZG9uZSEgWzEyMiBpbiA0OC42MTZzXQpQaW5naW5nIDEyMiByb3V0ZXMgKFJvdW5kIDUpIC4uLiAyNy45JSDilZHilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilpHilZEgWzM0IGluIDFtMS4zODZzXQpgYGAKCiMjIyBPcHRpb25zCmBgYHNoZWxsIHNjcmlwdApVc2FnZQogIC1pbnB1dCBzdHJpbmcKICAgICAgICAqVGhlIHBhdGgvdXJsIHRvIHRoZSBTd2FnZ2VyL09wZW5BUEkgMy4wIGlucHV0IHNvdXJjZQogIC1iYXNlIHN0cmluZwogICAgICAgIFRoZSBiYXNlIHVybCB0byBxdWVyeQogIC1oZWFkZXIgc3RyaW5nCiAgICAgICAgUGFzcyBhIGN1c3RvbSBoZWFkZXIgYXMgSlNPTiBzdHJpbmcsIGUuZy4gJ3tcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgVE9LRU5cIn0nIChkZWZhdWx0ICJ7fSIpCiAgLWxvb3AgaW50CiAgICAgICAgSG93IG9mdGVuIHRvIGxvb3AgdGhyb3VnaCBhbGwgY2FsbHMgKGRlZmF1bHQgMSkKICAtb3V0IHN0cmluZwogICAgICAgIFRoZSBvdXRwdXQgZm9ybWF0LiBPcHRpb25zOiBjb25zb2xlLCBjc3YsIGh0bWwsIG1kLCBqc29uIChkZWZhdWx0ICJjb25zb2xlIikKICAtcmVzcG9uc2UKICAgICAgICBJbmNsdWRlIHRoZSByZXNwb25zZSBib2R5IGluIHRoZSBvdXRwdXQKICAtdGltZW91dCBpbnQKICAgICAgICBUaGUgdGltZW91dCBpbiBzZWNvbmRzIHBlciByZXF1ZXN0IChkZWZhdWx0IDUpCiAgLXdvcmtlciBpbnQKICAgICAgICBUaGUgYW1vdW50IG9mIHBhcmFsbGVsIHdvcmtlcnMgdG8gdXNlIChkZWZhdWx0IDEpCiAgLW1ldGhvZHMgc3RyaW5nCiAgICAgICAgQW4gYXJyYXkgb2YgcXVlcnkgbWV0aG9kcyB0byBpbmNsdWRlLCBlLmcuICdbXCJHRVRcIiwgXCJQT1NUXCJdJyAoZGVmYXVsdCAiW1wiR0VUXCIsXCJQT1NUXCJdIikKICAtdGhyZXNob2xkIGludAogICAgICAgIE9ubHkgY29sbGVjdCBwaW5ncyBhYm92ZSB0aGlzIHJlc3BvbnNlIHRocmVzaG9sZCBpbiBtaWxsaXNlY29uZHMgKGRlZmF1bHQgLTEpCiAgLWZpbHRlciBzdHJpbmcKICAgICAgICBBIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBmaWx0ZXIgcGF0aHMuIE9ubHkgbWF0Y2hlcyB3aWxsIGJlIHBpbmdlZCEKYGBgCgojIyMjIElucHV0ClJlZmVyZW5jZSBhIGZpbGUgaW5wdXQgc29tZXdoZXJlIHJlYWNoYWJsZSBieSB5b3VyIG1hY2hpbmUuIApSZWZlcmVuY2VzIGluIHRoZSBbT3BlbkFQSV1bMl0gc3BlY2lmaWNhdGlvbiBjYW4gYmUgcmVzb2x2ZWQgaWYgYWJzb2x1dGUgb3IgcmVsYXRpdmUgdG8gdGhlIG1haW4gZmlsZS4KCiMjIyMgQmFzZQpQYXNzIGEgYmFzZSB1cmwgc3VjaCBhcyBgaHR0cDovL2xvY2FsaG9zdDo4MDgwL2FwaWAuCklmIG5vbiBpcyBnaXZlbiB0aGUgYHNlcnZlcnNgIGFycmF5IG9mIHRoZSBbT3BlbkFQSV1bMl0gc3BlY2lmaWNhdGlvbiB3aWxsIGJlIHByZXNlbnRlZCB0byBwaWNrIGEgc2VydmVyIGZyb20uCgojIyMjIEhlYWRlcgpQYXNzIGN1c3RvbSBoZWFkZXJzIHRvIHNlbmQgd2l0aCBldmVyeSByZXF1ZXN0IGFzIGFuIGVzY2FwZWQgSlNPTiBzdHJpbmcgc3VjaCBhcyBgJ3tcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgZXlYWVpcIn0nYC4KClRoZSBkZWZhdWx0IGhlYWRlcnMgYXJlCmBgYAoiQWNjZXB0IjogICAgICAgIiovKiIKIkNvbm5lY3Rpb24iOiAgICJLZWVwLUFsaXZlIgoiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL2pzb24iCiJVc2VyLUFnZW50IjogICAiYVBpbmciCmBgYAoKWW91IGNhbiBvdmVycmlkZSB0aGVzZSBvcHRpb25zIGJ5IHBhc3NpbmcgdGhlIHNhbWUga2V5LgoKIyMjIyBXb3JrZXIKSG93IG1hbnkgcGFyYWxsZWwgcHJvY2Vzc2VzIHNob3VsZCBiZSBzcGF3bmVkIHRvIHF1ZXJ5IHlvdXIgZW5kcG9pbnRzLgoKKkVuc3VyZSB0aGF0IHlvdXIgZW5kcG9pbnQgY2FuIGhhbmRsZSBtdWx0aXBsZSByZXF1ZXN0cywgb3RoZXJ3aXNlIG11bHRpcGxlIHdvcmtlcnMgbWlnaHQgcnVuIGludG8gdGhlIHRpbWVvdXQuKgoKIyMjIyBPdXRwdXQKRGVmaW5lIGFuIG91dHB1dCBmb3JtYXQuIFRoZSBvdXRwdXQgaXMgd3JpdHRlbiB0byBhIGxvY2FsIGBhcGluZy5YWVpgIGZpbGUsIGRlcGVuZGluZyBvbiB5b3VyIGNob2ljZS4KClRoZSBvdXRwdXQgY29udGFpbnMgKGF0IG1vc3QpOgoqIFRoZSBwaW5nZWQgcGF0aAoqIFRoZSBlZmZlY3RpdmUgVVJMKnMqIChiYXNlICsgcGF0aCkKKiBUaGUgcXVlcnkgbWV0aG9kCiogVGhlIGF2ZXJhZ2UgbWlsbGlzZWNvbmRzCiogVGhlIHJlc3BvbnNlKnMqCgpTb21lIGRhdGEgaXMgb25seSBhdmFpbGFibGUgd2l0aCB0aGVpciBhY2NvcmRpbmcgZmxhZ3MsIGkuZS4gYGxvb3BgIGFuZCBgcmVzcG9uc2VgCgojIyMjIExvb3AKKklmIGBsb29wID4gMWAgaXMgbWl4ZWQgd2l0aCBgcmVzcG9uc2VgIGFsbCByZXNwb25zZXMgYXJlIGxvZ2dlZCwgaWYgdGhlIHBhdGggaGFzIHBhcmFtZXRlcnMhKgoKIyMgQnVpbGQKW0Rvd25sb2FkIGFuZCBpbnN0YWxsXVs1XSBHb2xhbmcgZm9yIHlvdXIgcGxhdGZvcm0uCgpDbG9uZSB0aGlzIHJlcG9zaXRvcnkgYW5kIGJ1aWxkIHlvdXIgb3duIHZlcnNpb246CmBgYHNoZWxsIHNjcmlwdApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2VsaXBaaXMvYVBpbmcuZ2l0CmdvIGJ1aWxkIC1vIGFwaW5nIGdpdGh1Yi5jb20vZWxpcFppcy9hUGluZwpgYGAKCiMjIyBDb21wYXRpYmlsaXR5CmFQaW5nIGhhcyBiZWVuIHRlc3RlZCB1bmRlciB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKiBXaW5kb3dzIDEwIFByb2Zlc3Npb25hbCAoNjQtYml0KQoKIyMgTWlzc2luZy9VcGNvbWluZyBGZWF0dXJlcwphUGluZyBpcyBub3QgZnVsbHktZmxlZGdlZCAoeWV0KS4gU29tZSBmdW5jdGlvbmFsaXR5IGlzIG1pc3NpbmcgYW5kIGVycm9ycyBtYXkgb2NjdXIuCgpLbm93biBpc3N1ZXMgYXJlOgoqIFBhdGhzIGhhdmluZyByZXF1ZXN0IGJvZGllcyBhcmUgbm90IHBpbmdlZAoqIFBhcmFtZXRlcnMgYmVzaWRlcyBgaW50ZWdlcmAgYW5kIGBzdHJpbmdgIGFyZSBub3QgcGluZ2VkIAoKIyMgTGljZW5zZSBhbmQgQ3JlZGl0cwphUGluZyBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgYnkgW2VsaXBaaXNdWzFdLgoKVGhpcyBwcm9ncmFtIHVzZXMgbXVsdGlwbGUgb3RoZXIgbGlicmFyaWVzLiBDcmVkaXRzIGFuZCB0aGFua3MgdG8gYWxsIHRoZSBkZXZlbG9wZXJzIHdvcmtpbmcgb24gdGhlc2UgZ3JlYXQgcHJvamVjdHM6CiogU3dhZ2dlci9PcGVuQVBJIDMuMCBwYXJzZXIgW2tpbi1vcGVuYXBpXVs2XQoqIFByZXR0eSBjb25zb2xlIHByaW50ZXIgW2dvLXByZXR0eV1bN10KCiMjIERpc2NsYWltZXIKVGhpcyBzb3VyY2UgYW5kIHRoZSB3aG9sZSBwYWNrYWdlIGNvbWVzIHdpdGhvdXQgYSB3YXJyYW50eS4gCkl0IG1heSBvciBtYXkgbm90IGhhcm0geW91ciBjb21wdXRlci4gUGxlYXNlIHVzZSB3aXRoIGNhcmUuIApBbnkgZGFtYWdlIGNhbm5vdCBiZSByZWxhdGVkIGJhY2sgdG8gdGhlIGF1dGhvci4gClRoZSBzb3VyY2UgaGFzIGJlZW4gdGVzdGVkIG9uIGEgdmlydHVhbCBlbnZpcm9ubWVudCBhbmQgc2Nhbm5lZCBmb3IgdmlydXNlcyBhbmQgaGFzIHBhc3NlZCBhbGwgdGVzdHMuCgogIFsxXTogaHR0cHM6Ly9lbGlwWmlzLmNvbQogIFsyXTogaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vCiAgWzNdOiBodHRwczovL2dpdGh1Yi5jb20vZWxpcFppcy9hUGluZy9yZWxlYXNlcwogIFs0XTogaHR0cHM6Ly9naXRodWIuY29tL2VsaXBaaXMvYVBpbmcvd2lraS9WZXJzaW9uLUhpc3RvcnkKICBbNV06IGh0dHBzOi8vZ29sYW5nLm9yZy9kbC8KICBbNl06IGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkKICBbN106IGh0dHBzOi8vZ2l0aHViLmNvbS9qZWRpYjB0L2dvLXByZXR0eQo= readmeEtag: '"9aa8d3f94c0c9f487833ccf647394382fe18d40a"' readmeLastModified: Thu, 13 Aug 2020 14:50:01 GMT repositoryId: 281031032 description: >- 📲 A simple API Ping tool to feed a Swagger/OpenAPI 3.0 document file, call all paths and record time and responses created: '2020-07-20T06:17:44Z' updated: '2020-08-13T14:50:04Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: elipZis logo: https://avatars.githubusercontent.com/u/46478237?v=4 license: MIT repoEtag: '"bafc24c745576ea2033af0c7c69e486549dcc7c62712e688a17a837728a15046"' repoLastModified: Thu, 13 Aug 2020 14:50:04 GMT foundInMaster: true category: Server Implementations id: ad419c774f086dbba8ab197d314b40fe - source: openapi3 tags repository: https://github.com/ragnar-oock/setlist_v2_connexion v3: true repositoryMetadata: base64Readme: >- IyBzZXRsaXN0X3YyX2Nvbm5leGlvbgoKIyMgU2V0dXAKCi0gaW5zdGFsbCByZXF1aXJlbWVudDogIApgcGlwZW52IGluc3RhbGxgCi0gVXBkYXRlIGRhdGFiYXNlIGluZm9ybWF0aW9uIGluIGBzZXRpbmcucHlgCi0gUnVuIGBtYWluLnB5YCBvbmNlIHRoZW4gc2h1dCBpdCBkb3duLgotIFJ1biB0aGUgZm9sbG93aW5nIHF1ZXJpZXMgaW4gdGhlIGRhdGFiYXNlIHRvIHNldHVwIHRoZSBkaWZmZXJlbnRzIElOREVYIGFuZCBhdXRvZ2VuZXJhdGVkIGZpZWxkczogIApgYGBzcWwKLS0gYWRkIGZ0c19jb2wgYW5kIGdpc3QgaW5kZXgKQUxURVIgVEFCTEUgc29uZyBBREQgQ09MVU1OIGZ0c19jb2wgVGV4dAogICAgR0VORVJBVEVEIEFMV0FZUyBBUyAoY29hbGVzY2UobmFtZSwgJycpIHx8JyAnfHwgY29hbGVzY2UoYXJ0aXN0LCAnJykgfHwnICd8fCBjb2FsZXNjZShhbGJ1bSwgJycpKSBTVE9SRUQ7CkNPTU1FTlQgT04gQ09MVU1OIHNvbmcuZnRzX2NvbAogICAgSVMgJ2FnZ3JlZ2F0aW9uIG9mIG5hbWUsIGFydGlzdCBhbmQgYWxidW0gY29sdW1ucyB0byBiZSBpbmRleGVkIGZvciBmYXN0ZXIgdHJpZ3JhbSBzZWFyY2gnOwpDUkVBVEUgSU5ERVggT04gc29uZyBVU0lORyBHaVNUIChmdHNfY29sIGdpc3RfdHJnbV9vcHMpOwoKLS0gY3JlYXRlIGF1dG9pbmNyZW1lbnQgb24gc29uZy5pbmRleApBTFRFUiBUQUJMRSBwdWJsaWMuc29uZwogICAgQUxURVIgQ09MVU1OIGluZGV4IEFERCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZICggSU5DUkVNRU5UIDEgU1RBUlQgMCBNSU5WQUxVRSAwICk7YGBg readmeEtag: '"e8b48ce073ea7c86f5745068ad25d0046bf6086d"' readmeLastModified: Tue, 02 Mar 2021 15:23:45 GMT repositoryId: 321718670 description: API back-end for Ragnar-Oock/setlist created: '2020-12-15T16:04:36Z' updated: '2021-03-22T17:20:52Z' language: Python archived: false stars: 0 watchers: 1 forks: 0 owner: Ragnar-Oock logo: https://avatars.githubusercontent.com/u/38219333?v=4 license: MIT repoEtag: '"6f8a7144ac7bd6847fe5115a9761c6947b3cec13c92ef58cc0d592584430818b"' repoLastModified: Mon, 22 Mar 2021 17:20:52 GMT foundInMaster: true category: Server Implementations id: 6804b783d69b4dbf63629b5dfbb94ba4 - source: openapi3 tags repository: https://github.com/karthikeyan-ng/learn-open-api v3: true repositoryMetadata: base64Readme: >- IyBsZWFybi1vcGVuLWFwaQpUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgaG93IGRldmVsb3AgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGJhc2VkIFJFU1QgQVBJcy4K readmeEtag: '"e73a85d1889595141623015bf0f359ac4a10210b"' readmeLastModified: Tue, 11 Feb 2020 16:36:14 GMT repositoryId: 237742792 description: >- This repository contains how to develop OpenAPI specification based REST APIs. created: '2020-02-02T08:46:32Z' updated: '2020-04-10T11:46:13Z' language: null archived: false stars: 0 watchers: 1 forks: 1 owner: karthikeyan-ng logo: https://avatars.githubusercontent.com/u/39563373?v=4 repoEtag: '"ce3551b34a1edbe371254e0d9e3da781d921d01f6b2936316220cfe4bcc856e9"' repoLastModified: Fri, 10 Apr 2020 11:46:13 GMT foundInMaster: true category: - Server - Server Implementations id: ce2a86eb20bd1ae4de9b956c346fcecd - source: openapi3 tags repository: >- https://github.com/nicolaslopez82/java-springboot-docker-microservices-skeleton v3: true repositoryMetadata: base64Readme: >- IyBKYXZhIDggU3ByaW5nLUJvb3QgMiBNaWNyb3NlcnZpY2UgUHJvamVjdAoKVGhlIGdvYWxzIGhlcmUgYXJlIHRvIHVwZGF0ZSB0ZWNobm9sb2dpZXMgYW5kIG5ldyBjb25jZXB0cyBhYm91dCBtaWNyby1zZXJ2aWNlczoKCiMjIFRoZSBTd2FnZ2VyIFVJIFJFU1QgQVBJIERvY3VtZW50YXRpb24KCgpgPGxpbms+YCA6IDxodHRwczovL25pY29sYXNsb3BlejgyLmdpdGh1Yi5pby9qYXZhLXNwcmluZ2Jvb3QtZG9ja2VyLW1pY3Jvc2VydmljZXMtc2tlbGV0b24vPgoKIVtdKGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNvbGFzbG9wZXo4Mi9qYXZhLXNwcmluZ2Jvb3QtZG9ja2VyLW1pY3Jvc2VydmljZXMtc2tlbGV0b24vYmxvYi9tYXN0ZXIvc3dhZ2dlci11aS5wbmcpCgojIyBUZWNobm9sb2dpZXMgYW5kIG5ldyBjb25jZXB0cyB1cGRhdGVkLgoKKiBKYXZhIDguCiogU3ByaW5nLUJvb3QgMi4KKiBTcHJpbmcgRGF0YSBKUEEuCiogU3ByaW5nIFNlY3VyaXR5LgoqIFNwcmluZyBSRVNULgoqIFNwcmluZyBNVkMuCiogTG9nZ2VyIHdpdGggTG9nQmFjayBBcHBlbmRlciBSb2xsaW5nRmlsZS4KKiBTd2FnZ2VyIFVJLgoqIE9wZW5BUEkgdjMuCiogSlNPTiBXZWIgVG9rZW4gKEpXVCkuCiogUGFzc3dvcmQgRW5jcnlwdGlvbi4KKiBNb2NraXRvIFRlc3RpbmcuCiogSlVuaXQgVGVzdGluZy4KKiBJbnRlZ3JhdGlvbiBUZXN0aW5nLgoqIEh5cGVybWVkaWEgRHJpdmVuIFJFU1RmdWwuCiogUGFnaW5nIGFuZCBTb3J0aW5nLgoqIFNlY3VyaW5nIEFQSXMuCiogQ29udHJvbGxpbmcgQVBJcyBleHBvc3VyZS4KKiBEb2NrZXIgSW1hZ2UuCiogRG9ja2VyIENvbnRhaW5lcnMuCiogRG9ja2VyIENvbnRhaW5lcnMgRGF0YWJhc2VzLgoqIERvY2tlciBNaWdyYXRpb24gRGF0YWJhc2Ugd2l0aCBGbHl3YXkuCiogRG9ja2VyIEh1Yi4K readmeEtag: '"22e2e1f5efee2ad4a8d24d058a6df68ae6053779"' readmeLastModified: Sun, 20 Dec 2020 04:41:41 GMT repositoryId: 278491784 description: >- Java Spring Boot Microservices Project. Spring Data JPA, Spring Security, Spring REST, and Docker. Please, see the README file for more details. created: '2020-07-09T23:23:37Z' updated: '2020-12-20T04:41:44Z' language: Java archived: false stars: 0 watchers: 0 forks: 0 owner: nicolaslopez82 logo: https://avatars.githubusercontent.com/u/6266503?v=4 repoEtag: '"5cd1ee82d372c918aa212b508ebc993060953b4a7cb5b0256015fd3dbf8f0a12"' repoLastModified: Sun, 20 Dec 2020 04:41:44 GMT foundInMaster: true category: - Low-level Tooling - Server Implementations id: 4a412b648722eee99f3b719824e04d0a - source: openapi3 tags repository: >- https://github.com/joergschultzelutter/openapi-to-robot-framework-datadriver-testgenerator v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIHRvIFJvYm90RnJhbWV3b3JrIERhdGFEcml2ZXIgdGVzdCBnZW5lcmF0b3IKClshW0xpY2Vuc2U6IEdQTCB2M10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUdQTHYzLWJsdWUuc3ZnKV0oaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wKSBbIVtDb2RlIHN0eWxlOiBibGFja10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlJTIwc3R5bGUtYmxhY2stMDAwMDAwLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9wc2YvYmxhY2spIFshW0NvZGVRTF0oaHR0cHM6Ly9naXRodWIuY29tL2pvZXJnc2NodWx0emVsdXR0ZXIvb3BlbmFwaS10by1yb2JvdC1mcmFtZXdvcmstZGF0YWRyaXZlci10ZXN0Z2VuZXJhdG9yL2FjdGlvbnMvd29ya2Zsb3dzL2NvZGVxbC55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2pvZXJnc2NodWx0emVsdXR0ZXIvb3BlbmFwaS10by1yb2JvdC1mcmFtZXdvcmstZGF0YWRyaXZlci10ZXN0Z2VuZXJhdG9yL2FjdGlvbnMvd29ya2Zsb3dzL2NvZGVxbC55bWwpCgpUaGlzIHByb2dyYW0gZ2VuZXJhdGVzIGEgZnVsbHktZmxlZGdlZCBFeGNlbC1iYXNlZCBSb2JvdCBGcmFtZXdvcmsgRGF0YWRyaXZlciB0ZXN0IGNhc2UgZnJvbSBhbiBPcGVuQVBJIGZpbGUuCgohW0RlbW9dKGRvY3MvaW1nL2RlbW8uanBnKQoKIyMgR2VuZXJhbCBmZWF0dXJlcwogIAotIFN1cHBvcnRzIE9wZW5BUEkgVjMgWUFNTCBhbmQgSlNPTiBpbnB1dCBmaWxlIGZvcm1hdHMuIFYyIGZpbGUgZm9ybWF0IHN1cHBvcnQgY2FuIGJlIGFjaGlldmVkIHRocm91Z2ggbGlicmFyeSByZWNvbmZpZ3VyYXRpb24uCi0gVGhlIHByb2dyYW0gd2lsbCByZWFkIGEgdmFsaWQgT3BlbkFQSSBmaWxlIGFuZCB0aGVuIHRyaWVzIHRvIGdlbmVyYXRlIHRoZSBmb2xsb3dpbmcgb3V0cHV0IGZpbGVzIGZvciB5b3U6CiAgLSBBIFJvYm90IEZyYW1ld29yayB0ZXN0IGZpbGUsIGNvbnRhaW5pbmcgYWxsIHRlc3RzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIE9wZW5BUEkgZmlsZQogIC0gQSBnZW5lcmljIFJGICdpbmNsdWRlJyBmaWxlCiAgLSBBbiBFeGNlbCBmaWxlIHdoaWNoIHdpbGwgYmUgdXNlZCBieSB0aGUgUm9ib3QgRnJhbWV3b3JrIHRlc3QgYXMgaW5wdXQgZGF0YQogIC0gT3B0aW9uYWw6IGdlbmVyYXRlIEppcmEgLyBYUmF5IFRlc3QgLyBUZXN0IEV4Y2V1dGlvbiB0aWNrZXRzIGFuZCBhc3NvY2lhdGUgdGhlbSB3aXRoIHRoZSBSb2JvdCBGcmFtZXdvcmsgdGVzdAotIEFsbCBpbnB1dCBkYXRhIGlzIHRlbXBsYXRlLWJhc2VkLCBtZWFuaW5nIHRoYXQgeW91IGNhbiBhcHBseSBzaW1wbGUgbW9kaWZpY2F0aW9ucyB0byBKaXJhIC8gUm9ib3QgdGVtcGxhdGUgZmlsZXMgd2hpY2ggd2lsbCB0aGVuIHJlcHJlc2VudCB0aGUgZm91bmRhdGlvbiBmb3IgdGhlIGZ1dHVyZSBFeGNlbC9Sb2JvdCB0ZXN0IGZpbGUKLSBBbGwgcmVzdWx0aW5nIGZpbGVzIHdpbGwgbm8gbG9uZ2VyIGJlIGRlcGVuZGVudCBvbiB0aGUgaW5pdGlhbCBPcGVuQVBJIGlucHV0IGZpbGUuIFRoZSBpZGVhIGZvciB0aGlzIHByb2dyYW0gaXMgdGhhdCBpdCB3aWxsIGdlbmVyYXRlIHRoZSBtYWpvcml0eSBvZiByZXF1aXJlZCBjb2RlIGZvciB5b3UgYW5kIHRoYXQgeW91IGN1c3RvbWl6ZSB0aGF0IGNvZGUgbGF0ZXIgb24gZm9yIHlvdXIgbmVlZHMuCgojIyBFeGNlbCBmZWF0dXJlcwoKLSBGb3IgZWFjaCBBUEkgY2FsbCwgdGhlIHByb2dyYW0gd2lsbCB0cnkgdG8gZGV0ZXJtaW5lIHRoZSBzdXBwb3J0ZWQgb3B0aW9uYWwgYW5kIHJlcXVpcmVkIHBhcmFtZXRlcnMgZm9yIHRoZSByZXF1ZXN0IGJvZHk6CiAgLSBfX1JlZF9fIGZpZWxkcyBpbmRpY2F0ZSBhIG1hbmRhdG9yeSBwYXJhbWV0ZXIKICAtIF9fR3JlZW5fXyBmaWVsZHMgaW5kaWNhdGUgb3B0aW9uYWwgcGFyYW1ldGVycwogIC0gX19HcmV5X18gZmllbGRzIGluZGljYXRlIGZpZWxkcyB3aGljaCBhcmUgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBBUEkgY2FsbAogIC0gX19CZWlnZV9fIGZpZWxkcyBpbmRpY2F0ZSB0ZXN0IHBhcmFtZXRlcnMgc3VjaCBhcyB0ZXN0IG5hbWUsIHRhZ3MgZXRjCiAgLSBZb3UgY2FuIGVhc2lseSBjdXN0b21pemUgdGhlc2UgdmFsdWVzIGluIHRoZSBwcm9ncmFtLgotIElmIGEgcGFyYW1ldGVyIGhhcyBiZWVuIGFzc2lnbmVkIHdpdGggYW4gX2VudW1fIGxpc3Qgb2YgdmFsaWQgdmFsdWVzLCB0aGUgcHJvZ3JhbSB3aWxsIGFkZCB0aGVzZSB2YWx1ZXMgYXMgYSBwcmUtcG9wdWxhdGVkIGRyb3Bkb3duIHRvIHRoZSBFeGNlbCBsaXN0LiBVc2VycyBjYW4gc2VsZWN0IGEgdmFsdWUgZnJvbSB0aGF0IGxpc3QgKGJ1dCBhcmUgc3RpbGwgYWJsZSB0byBvdmVyd3JpdGUgdGhhdCB2YWx1ZSkKLSBCeSBkZWZhdWx0LCB0aGUgcHJvZ3JhbSB3aWxsIG9ubHkgaGlnaGxpZ2h0IHRoZSBvcHRpb25hbC9tYW5kYXRvcnkgcGFyYW1ldGVyIGZpZWxkcyAoYnV0IHdpbGwgbm90IHBvcHVsYXRlIHRoZW0gd2l0aCBhbnkgY29udGVudCkuIFlvdSBjYW4gb3ZlcnJpZGUgdGhpcyBzZXR0aW5nIGFuZCB0ZWxsIHRoZSBwcm9ncmFtIHRvIHByZS1wb3B1bGF0ZSB0aGUgcGFyYW1ldGVycyB3aXRoIGV4YW1wbGUgZGF0YSBzdHJhaWdodCBmcm9tIHlvdXIgT3BlbkFQSSBmaWxlLgotIEV4cGVjdGVkIEhUVFAgcmVzcG9uc2UgY29kZXMgYXJlIGV4dHJhY3RlZCBmcm9tIHRoZSBPcGVuQVBJIGZpbGUgYW5kIGFkZGVkIHRvIHRoZSBFeGNlbCBzaGVldCBhcyBkZWZhdWx0IHZhbHVlCi0gQWxsIE9wZW5BUEkgaW5wdXQgcGFyYW1ldGVycyBpbiB0aGUgRXhjZWwgZmlsZSBhcmUgYWxwaGFiZXRpY2FsbHkgc29ydGVkIGZvciBhIGJldHRlciB1c2VyIGNvbnZlbmllbmNlIHdoZW4gaXQgY29tZXMgdG8gcG9wdWxhdGluZyB0aGUgc2hlZXQgd2l0aCBkYXRhLgoKIyMgUm9ib3QgZmVhdHVyZXMKCi0gVGhlIHByb2dyYW0gd2lsbCB0cnkgdG8gY3JlYXRlIGEgZnVsbHktZmxlZGdlZCBSb2JvdCBGcmFtZXdvcmsgdGVzdCBjYXNlIGZvciB5b3UuCiAgLSBFYWNoIEFQSSBjYWxsIHdpbGwgYmUgdGFpbG9yZWQgdG8gdGhlIHJlc3BlY3RpdmUgQVBJIHNlcnZpY2UgbWV0aG9kLCBtZWFuaW5nIHRoYXQKICAgIC0gYSBKU09OIHJlcXVlc3QgYm9keSB3aWxsIG9ubHkgYmUgc2VudCB0byB0aGUgQVBJIGlmIHRoZSByZXNwZWN0aXZlIEFQSSBzZXJ2aWNlIG1ldGhvZCBzdXBwb3J0cyBpdAogICAgLSB0aGUgSlNPTiByZXF1ZXN0IGJvZHkgd2lsbCBvbmx5IGNvbnRhaW4gcGFyYW1ldGVycyB0aGF0IGJlbG9uZyB0byB0aGlzIHNwZWNpZmljIEFQSSBzZXJ2aWNlIG1ldGhvZAogICAgLSBJZiBhIHNlcnZpY2UgbWV0aG9kIHJlcXVpcmVzIHBhcmFtZXRlcnMgdG8gYmUgc2VudCBhcyBwYXJ0IG9mIHRoZSBBUEkncyBVUkwsIHRoZSBwcm9ncmFtIHdpbGwgZ2VuZXJhdGUgdGhlc2UgVVJMcyBmb3IgeW91LgotIFNvbWUgbWlub3IgYWRqdXN0bWVudHMgdG8gdGhlIFJvYm90IGZpbGUocykgbWF5IHN0aWxsIGJlIG5lY2Vzc2FyeSAoZS5nLiBpbml0aWFsIEFQSSBzZXR1cCwgbmVzdGVkIGRhdGEgc3RydWN0dXJlcykgLSBzZWUga25vd24gaXNzdWVzLgoKIyMgRG9jdW1lbnRhdGlvbgoKLSBbSW5zdGFsbGF0aW9uIGFuZCBmaXJzdCBwcm9ncmFtIHJ1bl0oZG9jcy9JTlNUQUxMQVRJT04ubWQpCi0gW0N1c3RvbWl6YXRpb24gYW5kIHByb2dyYW0gY29uZmlndXJhdGlvbl0oZG9jcy9DT05GSUdVUkFUSU9OLm1kKQotIFtDb21tYW5kIGxpbmUgcGFyYW1ldGVycyBhbmQga25vd24gaXNzdWVzXShkb2NzL1VTQUdFLm1kKQo= readmeEtag: '"a25f1e5eed12a0286b50a33926c63c3176576e3e"' readmeLastModified: Wed, 16 Mar 2022 18:28:55 GMT repositoryId: 429881762 description: >- Generates a fully-fledged Robot Framework Datadriver test and (optional) Jira/XRay test tickets from an OpenAPI V3 JSON/YAML schema file. created: '2021-11-19T17:28:35Z' updated: '2022-09-22T22:18:26Z' language: Python archived: false stars: 0 watchers: 3 forks: 1 owner: joergschultzelutter logo: https://avatars.githubusercontent.com/u/76180229?v=4 license: GPL-3.0 repoEtag: '"63732d4284d613a86a1bc982df578ac30f71eaf6fbd1c4769d6f06a8750343f6"' repoLastModified: Thu, 22 Sep 2022 22:18:26 GMT foundInMaster: true category: Testing id: b6921e1b63c62319faa55662e3947a27 - source: openapi3 tags repository: https://github.com/butley/plugin-resolver v3: true id: 06f4819aa00a24869163fcbaddf54ee1 repositoryMetadata: base64Readme: >- IyMgcGx1Z2luLXJlc29sdmVyCgpUaGUgUGx1Z2luUmVzb2x2ZXIgY2xhc3MgaXMgYSB1dGlsaXR5IGZvciByZXNvbHZpbmcgcGx1Z2lucyBpbiB0aGUgY29udGV4dCBvZiBhbiBBSS1iYXNlZCBjb252ZXJzYXRpb24uIEl0IGlzIHJlc3BvbnNpYmxlIGZvciBmaW5kaW5nIGEgc3VpdGFibGUgcGx1Z2luIGJhc2VkIG9uIHRoZSBnaXZlbiBjb250ZXh0IG1lc3NhZ2VzIGFuZCB1c2VyIG1lc3NhZ2UuIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG1ha2VzIHVzZSBvZiB0aGUgZ3B0LTMuNS10dXJiby0wMzAxIG1vZGVsIGFuZCBlbXBsb3lzIGN1c3RvbSBwcm9tcHRzIHRvIGV2YWx1YXRlIGRpZmZlcmVudCBPcGVuQVBJIFlBTUwgc3BlY2lmaWNhdGlvbnMuIEl0IHRoZW4gZXh0cmFjdHMgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGZyb20gdGhlIHBsdWdpbidzIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBhbmQgZ2VuZXJhdGVzIGEgcmVxdWVzdCBwYXlsb2FkIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2FsbCB0aGUgY29ycmVzcG9uZGluZyBBUEkuIFRoZSBjbGFzcyBhbHNvIGtlZXBzIHRyYWNrIG9mIE9wZW5BSSB1c2FnZSB0aHJvdWdob3V0IHRoZSBwcm9jZXNzLgoKIyMjIEtleSBmZWF0dXJlcyBvZiB0aGUgUGx1Z2luUmVzb2x2ZXI6CgoqIGBnZW5lcmF0ZV9wYXRoKClgOiBHZW5lcmF0ZXMgYSBwYXRoIGJhc2VkIG9uIHRoZSBnaXZlbiBPcGVuQVBJIHBhdGhzIHNlY3Rpb24sIGNvbnRleHQgbWVzc2FnZXMsIGFuZCB1c2VyIG1lc3NhZ2UuCiogYGdlbmVyYXRlX3BheWxvYWRfZnJvbV9jb21wb25lbnRzX2FuZF90YXJnZXRfcGF0aCgpYDogR2l2ZW4gdGhlIGNvbnRleHQgbWVzc2FnZXMsIHVzZXIgbWVzc2FnZSwgYW5kIGV4dHJhY3RlZCBjb21wb25lbnRzLCB0aGlzIG1ldGhvZCBnZW5lcmF0ZXMgYSByZXF1ZXN0IHBheWxvYWQgZm9yIHRoZSB0YXJnZXQgQVBJLgoqIGByZXNvbHZlKClgOiBSZXNvbHZlcyB0aGUgYXBwcm9wcmlhdGUgcGx1Z2luLCBleHRyYWN0cyB0aGUgcmVsZXZhbnQgcGF0aCBhbmQgY29tcG9uZW50cywgYW5kIGdlbmVyYXRlcyBhIHJlcXVlc3QgcGF5bG9hZCBieSBjYWxsaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRob2RzLiBJdCBhbHNvIGNhbGN1bGF0ZXMgdGhlIE9wZW5BSSB1c2FnZSBhbmQgdXBkYXRlcyB0aGUgUGx1Z2luUmVzb2x1dGlvblJlc3BvbnNlLgoKVGhlIFBsdWdpblJlc29sdmVyIGNsYXNzIGlzIGRlc2lnbmVkIHRvIGJlIGEgaGlnaC1sZXZlbCBpbnRlcmZhY2UgZm9yIHdvcmtpbmcgd2l0aCBwbHVnaW5zIGluIGFuIEFJLWRyaXZlbiBjb252ZXJzYXRpb24gc3lzdGVtLiBJdHMgbWFpbiBnb2FsIGlzIHRvIHNpbXBsaWZ5IHRoZSBwcm9jZXNzIG9mIGZpbmRpbmcgdGhlIGFwcHJvcHJpYXRlIHBsdWdpbiwgZXh0cmFjdGluZyB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uLCBhbmQgZ2VuZXJhdGluZyBhIHJlcXVlc3QgcGF5bG9hZCB0aGF0IGNhbiBiZSB1c2VkIHRvIGludGVyYWN0IHdpdGggdGhlIHRhcmdldCBBUEkubyB3b3JrIHdpdGggQUkgcGx1Z2lucyB0aGF0IGZvbGxvdyB0aGUgT3BlbkFQSSBzdGFuZGFyZCwgYW5kIGl0IHV0aWxpemVzIHRoZSBBSSdzIG5hdHVyYWwgbGFuZ3VhZ2UgdW5kZXJzdGFuZGluZyBjYXBhYmlsaXRpZXMgdG8gaWRlbnRpZnkgdGhlIGNvcnJlY3QgQVBJIHBhdGggYW5kIGdlbmVyYXRlIHJlcXVlc3QgcGF5bG9hZHMgYmFzZWQgb24gdXNlciBtZXNzYWdlcwoKVXNhZ2UgZXhhbXBsZToKCmBgYApzeXN0ZW1fbWVzc2FnZSA9IHsicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJVc2VyIGlkOiA0NSJ9CmNvbnRleHRfbWVzc2FnZXMgPSBbc3lzdGVtX21lc3NhZ2VdCgptZXNzYWdlID0gJ1JlbWVtYmVyIG15IG1vbSBiaXJ0aGRheSBpcyBKYW51YXJ5IDEzdGgnCgpyZXNwb25zZSA9IFBsdWdpblJlc29sdmVyKCkucmVzb2x2ZShjb250ZXh0X21lc3NhZ2VzLCBtZXNzYWdlLCAnaHR0cHM6Ly9ob3N0Ly53ZWxsLWtub3duL2FpLXBsdWdpbi5qc29uJykKcHJpbnQocmVzcG9uc2UpCmBgYAoKIyMjIEV2YWx1YXRpbmcgdGhlIHJlc3BvbnNlCgpUaGUgYFBsdWdpblJlc29sdXRpb25SZXNwb25zZWAgY2xhc3MgaXMgYSBkYXRhIGNsYXNzIHRoYXQgY291bGQgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGx1Z2luIHRoYXQgd2FzIHJlc29sdmVkLCAKdGhlIHBhdGggdGhhdCB3YXMgZXh0cmFjdGVkLCB0aGUgY29tcG9uZW50cyB0aGF0IHdlcmUgZXh0cmFjdGVkLCBhbmQgdGhlIHJlcXVlc3QgcGF5bG9hZCB0aGF0IHdhcyBnZW5lcmF0ZWQuIEl0IGFsc28gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIE9wZW5BSSB1c2FnZSB0aHJvdWdob3V0IHRoZSBwcm9jZXNzLgoKCiMjIyBGcmFtZXdvcmsKClRoaXMgcHJvamVjdCB3aWxsIHByb3ZpZGUgYmFzZSBtb2RlbHMgdG8gYmUgcmV1c2VkIGluIG90aGVyIHByb2plY3RzLiAKVGhlIGJhc2UgbW9kZWxzIGFyZToKCiogYEJhc2VNZXNzYWdlYDogQmFzZSBjbGFzcyBmb3IgYWxsIG1lc3NhZ2VzCiogYEh1bWFuTWVzc2FnZWA6IENsYXNzIGZvciBtZXNzYWdlcyBmcm9tIGh1bWFucwoqIGBBaU1lc3NhZ2VgOiBDbGFzcyBmb3IgbWVzc2FnZXMgZnJvbSBBSQoqIGBBaUV2YWx1YXRpb25NZXNzYWdlYDogQ2xhc3MgZm9yIG1lc3NhZ2VzIGZyb20gQUkgZXZhbHVhdGlvbiB0aGF0IGFyZSB1c2VkIGluIGludGVybWVkaWF0ZSBzdGVwcy4gCgpUaGUgYEFpRXZhbHVhdGlvbk1lc3NhZ2VgIGFyZSB2ZXJ5IGltcG9ydGFudCBiZWNhdXNlIHRoZXkgaW1wb3NlIGEgZ3JlYXQgd2VpZ2h0IGluIHRoZSBPcGVuQUkgQVBJIHVzYWdlLgoKCgojIyMgTGltaXRhdGlvbnMKCkdpdmVuIHRoZSBkeW5hbWljIG5hdHVyZSBvZiB0aGUgcmVzb2x2ZXIsIGlkZW50aWZ5aW5nIGFuZCB1c2luZyBhbiBhcHByb3ByaWF0ZSBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gaXMgYSBjaGFsbGVuZ2UuClNvLCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIHVuYXV0aGVudGljYXRlZCBBUElzLgoKIyMgU2V0dGluZyB1cCB0aGUgcG9ldHJ5IGVudmlyb25tZW50CgpUbyBzZXQgdXAgdGhlIHBvZXRyeSBlbnZpcm9ubWVudCBmb3IgdGhpcyBwcm9qZWN0LCBmb2xsb3cgdGhlc2Ugc3RlcHM6CgoxLiBFbnN1cmUgeW91IGhhdmUgW1BvZXRyeV0oaHR0cHM6Ly9weXRob24tcG9ldHJ5Lm9yZy8pIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbS4gSWYgbm90LCB5b3UgY2FuIGluc3RhbGwgaXQgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgYmFzaApjdXJsIC1zU0wgaHR0cHM6Ly9pbnN0YWxsLnB5dGhvbi1wb2V0cnkub3JnIHwgcHl0aG9uMyAtCmBgYAoKTmF2aWdhdGUgdG8gdGhlIHByb2plY3QncyByb290IGRpcmVjdG9yeSAod2hlcmUgdGhlIHB5cHJvamVjdC50b21sIGZpbGUgaXMgbG9jYXRlZCkuCgpJbnN0YWxsIHRoZSBwcm9qZWN0IGRlcGVuZGVuY2llcyB1c2luZyBQb2V0cnk6CiAgICAKYGBgYmFzaApwb2V0cnkgaW5zdGFsbApgYGAKCkFjdGl2YXRlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGNyZWF0ZWQgYnkgUG9ldHJ5OgoKYGBgYmFzaApwb2V0cnkgc2hlbGwKYGBgCgpZb3Ugc2hvdWxkIG5vdyBoYXZlIGEgZnVsbHkgY29uZmlndXJlZCBwb2V0cnkgZW52aXJvbm1lbnQgd2l0aCBhbGwgbmVjZXNzYXJ5IGRlcGVuZGVuY2llcyBpbnN0YWxsZWQuCgojIyBCdWlsZGluZyB0aGUgd2hlZWwgZmlsZQpUbyBidWlsZCBhIHdoZWVsIGZpbGUgZm9yIHRoaXMgcHJvamVjdCwgZm9sbG93IHRoZXNlIHN0ZXBzOgoKRW5zdXJlIHlvdSBhcmUgaW4gdGhlIHByb2plY3QncyByb290IGRpcmVjdG9yeS4KCkJ1aWxkIHRoZSB3aGVlbCBmaWxlIHVzaW5nIFBvZXRyeToKYGBgYmFzaApwb2V0cnkgYnVpbGQgLWYgd2hlZWwKYGBgCgpUaGlzIHdpbGwgZ2VuZXJhdGUgYSAud2hsIGZpbGUgaW4gdGhlIGRpc3QgZm9sZGVyIHdpdGhpbiB0aGUgcHJvamVjdCdzIHJvb3QgZGlyZWN0b3J5LgoKSW1wb3J0aW5nIHRoZSB3aGVlbCBmaWxlIGludG8gYW5vdGhlciBwcm9qZWN0ClRvIGltcG9ydCB0aGUgZ2VuZXJhdGVkIHdoZWVsIGZpbGUgaW50byBhbm90aGVyIHByb2plY3QsIGZvbGxvdyB0aGVzZSBzdGVwczoKCkNvcHkgdGhlIC53aGwgZmlsZSBmcm9tIHRoZSBkaXN0IGZvbGRlciBvZiB0aGUgY3VycmVudCBwcm9qZWN0IHRvIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgdGFyZ2V0IHByb2plY3QuCgpJbnN0YWxsIHRoZSB3aGVlbCBmaWxlIGluIHRoZSB0YXJnZXQgcHJvamVjdCB1c2luZyBwaXA6CmBgYGJhc2gKcGlwIGluc3RhbGwgPHdoZWVsLWZpbGUtbmFtZT4ud2hsCmBgYAoKWW91IGNhbiBub3cgdXNlIHRoZSBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5IHRoaXMgcHJvamVjdCBpbiB0aGUgdGFyZ2V0IHByb2plY3QgYnkgaW1wb3J0aW5nIHRoZSBuZWNlc3NhcnkgbW9kdWxlcyBhbmQgY2xhc3Nlcy4KCg== readmeEtag: '"3c43e51dd1a9b64d4d2b214b67ee46bdf0588658"' readmeLastModified: Sat, 08 Apr 2023 03:55:10 GMT repositoryId: 623116677 description: >- Project provides functionality to receive a message and try to identify which path and operation to use from an openapi spec created: '2023-04-03T18:19:54Z' updated: '2023-04-08T03:27:20Z' language: Python archived: false stars: 0 watchers: 0 forks: 0 owner: butley logo: https://avatars.githubusercontent.com/u/127567134?v=4 repoEtag: '"68f34ec1159389d14f7e7a2cc48d5cd71e18fa17923814439ce29e43d60124d5"' repoLastModified: Sat, 08 Apr 2023 03:27:20 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/sudokuru/userprofile v3: true id: d448cdd7fbb737c0adcff01770e1454e repositoryMetadata: base64Readme: >- PiBbIUlNUE9SVEFOVF0gIAo+IFRoaXMgcmVwb3NpdG9yeSBpcyByZWFkLW9ubHkgLyBhcmNoaXZlZCBhbmQgd2lsbCBub3QgcmVjaWV2ZSB1cGRhdGVzLgoKIyBbVHlwZWRvYyBEb2N1bWVudGF0aW9uIFdlYnNpdGVdKGh0dHBzOi8vc3Vkb2t1cnUuZ2l0aHViLmlvL1VzZXJBY3RpdmVHYW1lcy8pPGJyPgoKCiMgRGV2ZWxvcGVyIFNldHVwCgoxLiBHZXQgdGhlIC5lbnYgZmlsZSBmcm9tIHRoZSBNU0IgYnVpbGRpbmcgbmV4dCB0byB0aGUgd2F0ZXIgZm91bnRhaW4uIAoyLiBJbnN0YWxsIERvY2tlciBvbiB5b3VyIG1hY2hpbmUuIFR1dG9yaWFsIGlzIGxpbmtlZCBiZWxvdzo8YnI+CiAgIFshW0RvY2tlciBUdXRvcmlhbF0oaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvMmV6TnFxYVNqcTgvMC5qcGcpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTJlek5xcWFTanE4KTxicj4KMi4gT25jZSBkb2NrZXIgaXMgaW5zdGFsbGVkLCB0aGUgTW9uZ28gaW1hZ2UgY2FuIGJlIHJ1biB3aXRoIHRoaXMgY29tbWFuZDo8YnI+Ck5vdGUgdXNlIGBgYHN1ZG9gYGAgb24gTGludXgvTWFjPGJyPgpgYGBjb25zb2xlCm5wbSBydW4gZG9ja2VyCmBgYAozLiBUaGUgYXBwIGNhbiB0aGVuIGJlIHJ1biB3aXRoIHRoZSBjb21tYW5kOjxicj4KYGBgY29uc29sZQpucG0gcnVuIHN0YXJ0CmBgYAo0LiBJbnRlZ3JhdGlvbiB0ZXN0cyBjYW4gYmUgcnVuIHdoZW4gdGhlIGFwcCBpcyBydW5uaW5nIHdpdGggdGhpcyBjb21tYW5kOjxicj4KYGBgY29uc29sZQpucG0gcnVuIHRlc3Q6aW50ZWdyYXRpb24KYGBgCg== readmeEtag: '"551645e2a891d8f25afe5c10c232d868e7f8455c"' readmeLastModified: Sat, 11 May 2024 15:14:39 GMT repositoryId: 609680674 description: null created: '2023-03-04T22:48:51Z' updated: '2024-05-11T15:14:58Z' language: TypeScript archived: true stars: 0 watchers: 0 forks: 0 owner: Sudokuru logo: https://avatars.githubusercontent.com/u/114212382?v=4 license: GPL-3.0 repoEtag: '"d348f13db76f24cda01be5eb411e40bf9c3394ad7d8bc999536576f1bac7db38"' repoLastModified: Sat, 11 May 2024 15:14:58 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/edavis25/crypto_history_api v3: true repositoryMetadata: base64Readme: >- IyBDcnlwdG8gSGlzdG9yeSBBUEkKVGhpcyBwcm9qZWN0IGV4cG9zZXMgY3J5cHRvIHByaWNlIGhpc3RvcnkgSSBwZXJzb25hbGx5IHNjcmFwZWQgZnJvbSB2YXJpb3VzIGV4Y2hhbmdlcyBpbnRvIGEgY29uc2lzdGVudCBhbmQgZXh0ZW5kYWJsZSBBUEkuIEl0IHByb3ZpZGVzIGEgbGF5ZXIgb2YgYWJzdHJhY3Rpb24gZm9yIEluZmx1eERCIG1lYXN1cmVtZW50cyB0aGF0IGhhdmUgdmFyeWluZyBzY2hlbWFzIGFuZCBkYXRhIHBvaW50cy4KCgojIyMgSnVzdCBsb29raW5nIGZvciB0aGUgQVBJIGRvY3VtZW50YXRpb24/CltWaWV3IHRoZSBBUEkgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9lZGF2aXMyNS5naXRodWIuaW8vY3J5cHRvX2hpc3RvcnlfYXBpLykKCl9fXyAKIyMjIExvb2tpbmcgdG8gc3RhbmQgdXAgb3duIHZlcnNpb24gb2YgdGhlIHByb2plY3Q/CkRpZCB5b3UgcmFuZG9tbHkgZmVlbCBjb21wZWxsZWQgdG8gc2NyYXBlIGEgYnVuY2ggb2YgaGlzdG9yaWNhbCBjcnlwdG8gcHJpY2UgZGF0YT8gRGlkIHlvdSBhbHNvIGRlY2lkZSB0byB1c2UgYW4gb2JzY3VyZSB0aW1lc2VyaWVzIGRhdGFiYXNlLCBJbmZsdXhEQj8gRGlkIHlvdSBmaW5hbGx5IGRlY2lkZSB5b3Ugd2FudGVkIGEgY29uc2lzdGVudCBBUEkgdG8gcmV0cmlldmUgdGhlIGhvZGdlLXBvZGdlIGRhdGEgeW91IHNjcmFwZWQ/IENvb2wsIG1lIHRvby4gTGV0J3MgYmUgZnJpZW5kcy4gQWxzbywga2VlcCByZWFkaW5nIHRvIHVzZSB0aGlzIHByb2plY3QgdG8gc3RhbmQgdXAgYW4gQVBJIGZvciB5b3VyIHZlcnkgb3duIEluZmx1eERCIGRhdGEgaG9hcmQuCgojIyBQcmUgUmVxcwpUaGlzIHByb2plY3QgYXNzdW1lcyB5b3UgaGF2ZSBhbiBpbnN0YW5jZSBvZiBJbmZsdXhEQiBydW5uaW5nIGEgc2luZ2xlIGRhdGFiYXNlIHRoYXQgY29udGFpbnMgZGlmZmVyZW50ICJtZWFzdXJlbWVudHMiIChJbmZsdXggdGVybWlub2xvZ3kpIGZvciByZWNvcmRpbmcgcHJpY2VzIGZyb20gZGlmZmVyZW50IGV4Y2hhZ2VzLiBGb3IgZXhhbXBsZSwgbXkgZGF0YWJhc2UgY29udGFpbnMgT3Blbi9DbG9zZS9IaWdoL0xvdy9ldGMgZGF0YSBmb3IgdGhlIFBvbG9uaWV4IGV4Y2hhbmdlIHVuZGVyIGEgc2luZ2xlIEluZmx1eCBtZWFzdXJlbWVudC4gTWVhc3VyZW1lbnRzIGNhbiBiZSBsb29zZWx5IHRob3VnaHQgb2YgYXMgdGFibGVzIGFuZCBpbiB0aGlzIGNhc2UsIG91ciB0YWJsZSBjb250YWlucyBoaXN0b3JpYyBwcmljZSBkYXRhIGZyb20gdGhlIFBvbG9uaWV4IGV4Y2hhbmdlIChhbmQgb25seSBQb2xvbmlleCkuIERpZmZlcmVudCBtZWFzdXJlbWVudHMgY2FuIGJlIGNyZWF0ZWQgZm9yIGRpZmZlcmVudCBleGNoYW5nZXMgYW5kIGVhY2ggcmVjb3JkIHNob3VsZCBjb250YWluIGEgdGltZXN0YW1wLCB3aGF0ZXZlciBwcmljZSBkYXRhIHlvdSB3YW50LCBhbmQgYSB0YWcgZm9yIHRoZSB0cmFkaW5nICJwYWlyIiAoYnRjX3VzZCkuCgpGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnRlZCB0byBnZXQgcHJpY2UgaGlzdG9yeSBmb3IgYnRjX3VzZCBvbiB0aGUgUG9sb25pZXggZXhjaGFuZ2UsIHlvdSBjYW4gaW1hZ2luZSBhbiBTUUwgcXVlcnk6IGBTRUxFQ1QgKiBGUk9NIHBvbG9uaWV4X2V4Y2hhbmdlIFdIRVJFIHBhaXIgPSAnYnRjX3VzZCdgIGZvciB0aGlzIHNldHVwLgoKVExEUjsgQ3JlYXRlIGEgc2luZ2xlIEluZmx1eCBkYXRhYmFzZSB3aXRoIGRpZmZlcmVudCBtZWFzdXJlbWVudHMgZm9yIGV2ZXJ5IGRpZmZlcmVudCBleGNoYW5nZSdzIHByaWNlIGRhdGEuIEVhY2ggcmVjb3JkIG5lZWRzIHRvIGNvbnRhaW4gd2hhdGV2ZXIgcHJpY2UgZGF0YSB5b3Ugd2FudCBhbmQgYW4gW0luZmx1eCB0YWddKGh0dHBzOi8vZG9jcy5pbmZsdXhkYXRhLmNvbS9pbmZsdXhkYi92MS44L2NvbmNlcHRzL2dsb3NzYXJ5LyN0YWcta2V5KSByZWZlcmVuY2luZyB0aGUgdHJhZGluZyBwYWlyLiBUaGlzIHByb2plY3QgYXNzdW1lcyB5b3UgbmFtZWQgeW91ciB0YWc6IGBwYWlyYCBidXQgdGhpcyBpcyBjdXN0b21pemFibGUgaWYgeW91IGFyZSBhIG1hc29jaGlzdC4KCiMjIEluc3RhbGxhdGlvbgoxLiBDbG9uZSB0aGUgcmVwb3NpdG9yeTxicj5gZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9lZGF2aXMyNS9jcnlwdG9faGlzdG9yeV9hcGkuZ2l0YAoyLiBJbnN0YWxsIHByb2plY3QgZGVwZW5kZW5jaWVzPGJyPmBjb21wb3NlciBpbnN0YWxsYAozLiBDcmVhdGUgeW91ciBlbnZpcm9ubWVudCdzIGNvbmZpZ3VyYXRpb24gZmlsZQo8YnI+YGNwIC4vLmVudi5leGFtcGxlIC4vLmVudmAKPGJyPjxicj4gVGhlIG1vc3QgaW1wb3J0YW50IHBhcnQgb2YgdGhpcyBzdGVwIGlzIGNvbmZpZ3VyaW5nIHlvdXIgY29ubmVjdGlvbiB0byBJbmZsdXhEQjoKYGBgCklORkxVWERCX0hPU1Q9MTI3LjAuMC4xCklORkxVWERCX1BPUlQ9ODA4NgpJTkZMVVhEQl9TU0w9ZmFsc2UKSU5GTFVYREJfVkVSSUZZU1NMPWZhbHNlCklORkxVWERCX1RJTUVPVVQ9MApJTkZMVVhEQl9EQk5BTUU9Y3J5cHRvX3ByaWNlX2hpc3RvcnkgIyBBbGwgbWVhc3VyZW1lbnRzIG11c3QgYmUgaW5zaWRlIHNpbmdsZSBkYXRhYmFzZQpgYGAKNC4gUnVuIHRoZSBMYXJhdmVsIG1pZ3JhdGlvbnMuCjxicj5gcGhwIGFydGlzYW4gbWlncmF0ZWAKCiMjIFNldHVwIEluZmx1eERCIG1lYXN1cmVtZW50cyBmb3IgdGhlIEFQSQpOb3cgdGhhdCB5b3VyIGVudmlyb25tZW50IGlzIHNldHVwLCB3ZSBjYW4gYmVnaW4gbWFwcGluZyBvdXIgSW5mbHV4REIgbWVhc3VyZW1lbnRzIGZvciB1c2UgaW4gdGhlIEFQSS4gVG8gZG8gdGhpcywgd2Ugd2lsbCBuZWVkIHRvIGRvIGEgZmV3IHRoaW5nczoKMS4gQ3JlYXRlIGEgbmV3IHNlcnZpY2UgdGhhdCBmdWxmaWxscyB0aGUgYEluZmx1eERCTWVhc3VyZW1lbnRgIGNvbnRyYWN0CjIuIENyZWF0ZSBbSlNPTiByZXNvdXJjZXNdKGh0dHBzOi8vbGFyYXZlbC5jb20vZG9jcy84LngvZWxvcXVlbnQtcmVzb3VyY2VzKSBmb3Igb3VyIHJlc3BvbnNlIGRhdGEgc2NoZW1hcwozLiBNYXAgb3VyIG5ldyBzZXJ2aWNlIGNsYXNzIGluc2lkZSB0aGUgYGluZmx1eGRiLnBocGAgY29uZmlnIGZpbGUuCgojIyMjIDEuIENyZWF0aW5nIHRoZSBzZXJ2aWNlCkV2ZXJ5IEluZmx1eERCIG1lYXN1cmVtZW50IHdpbGwgbmVlZCBpdHMgb3duIHNlcnZpY2UgaW1wbGVtZW50aW5nIHRoZSBgSW5mbHV4REJNZWFzdXJlbWVudGAgY29udHJhY3Qgc28gdGhhdCBpdCBjYW4gYmUgZHluYW1pY2FsbHkgaW5qZWN0ZWQgaW50byB0aGUgY29udHJvbGxlcnMuIEFzIGEgc3RhcnRpbmcgcG9pbnQsIHlvdSBjYW4gY3JlYXRlIGEgY2xhc3MgdGhhdCBleHRlbmRzIHRoZSBgQmFzZU1lYXN1cmVtZW50U2VydmljZWAgd2hpY2ggd2lsbCBmdWxmaWxsIGEgbWFqb3JpdHkgb2YgdGhlIGNvbnRyYWN0J3MgZnVuY3Rpb25hbGl0eS4KPGJyPgpgYGAKY2xhc3MgUG9sb25pZXhNZWFzdXJlbWVudFNlcnZpY2UgZXh0ZW5kcyBCYXNlTWVhc3VyZW1lbnRTZXJ2aWNlCnsKICAgIC8vIHRoZSBuYW1lIG9mIHRoZSBtZWFzdXJlbWVudCBpbnNpZGUgb2YgSW5mbHV4REIKICAgIHB1YmxpYyBmdW5jdGlvbiBtZWFzdXJlbWVudCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJ3BvbG9uaWV4X2V4Y2hhbmdlJzsKICAgIH0KCiAgICAvLyBhIGh1bWFuLWZyaWVuZGx5IHZlcnNpb24gb2YgdGhlIG1lYXN1cmVtZW50J3MgbmFtZSBmb3IgZGlzcGxheSBwdXJwb3NlcwogICAgcHVibGljIGZ1bmN0aW9uIGRpc3BsYXlOYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnUG9sb25pZXgnOwogICAgfQogICAgCiAgICAvLyByZXNwb25zaWJsZSBmb3IgdHJhbnNmb3JtaW5nIHRoZSBkYXRhIGZyb20gdGhlIG1lYXN1cmVtZW50J3Mgc2NoZW1hIGludG8gYSBzdGFuZGFyZGl6ZWQgSlNPTiByZXNvdXJjZS4KICAgIHB1YmxpYyBmdW5jdGlvbiBidWlsZFJlc291cmNlKGFycmF5ICRkYXRhKTogSnNvblJlc291cmNlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBQb2xvbmlleE1lYXN1cmVtZW50KCRkYXRhKTsKICAgIH0KCiAgICAvLyByZXNwb25zaWJsZSBmb3IgYnVpbGRpbmcgYSBjb2xsZWN0aW9uIG9mIG11bHRpcGxlIEpTT04gcmVzb3VyY2VzLgogICAgcHVibGljIGZ1bmN0aW9uIGJ1aWxkUmVzb3VyY2VDb2xsZWN0aW9uKGFycmF5ICRkYXRhLCBib29sICRoYXNfbmV4dF9wYWdlKTogUmVzb3VyY2VDb2xsZWN0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBQb2xvbmlleE1lYXN1cmVtZW50Q29sbGVjdGlvbigkZGF0YSwgJGhhc19uZXh0X3BhZ2UpOwogICAgfQogICAKfQpgYGAKCkF0IHRoZSB2ZXJ5IGxlYXN0LCBlYWNoIHNlcnZpY2Ugd2lsbCBuZWVkIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kcyBzaG93biBhYm92ZSBpbmRpdmlkdWFsbHkuIElmIHlvdSBtb3N0bHkgZm9sbG93IHRoZSBJbmZsdXhEQiBzZXR1cCBleHBsYWluZWQgYWJvdmUsIHlvdSBjYW4gcmVseSBvbiB0aGUgYEJhc2VNZWFzdXJlbWVudFNlcnZpY2VgIHRvIGZ1bGZpbGwgbW9zdCBvZiB0aGUgY29udHJhY3QuIElmIHlvdSBuZWVkIG1vcmUgY3VzdG9taXphdGlvbiwgeW91IGNhbiBvdmVycmlkZSB0aGUgZnVuY3Rpb25zIGluc2lkZSB0aGUgYEJhc2VNZWFzdXJlbWVudFNlcnZpY2VgIGFzIG5lY2Vzc2FyeS4KCiMjIyMgMi4gQ3JlYXRpbmcgdGhlIEpTT04gcmVzb3VyY2VzCklmIHlvdSBub3RpY2VkIGluIHRoYXQgbGFzdCBzdGVwIHRoYXQgd2Ugd2VyZSBidWlsZGluZyByZXNvdXJjZXMgdGhhdCBkaWRuJ3QgZXhpc3QgeWV0LCBnb29kIGV5ZXMuIExldCdzIGRvIHRoYXQgbm93LgoKSWYgeW91IGFyZSBsaWtlIG1lLCB5b3UgbWF5IGhhdmUgdmFyaW91cyBtZWFzdXJlbWVudHMgZWFjaCBjb250YWluaW5nIHZhcnlpbmcgZGF0YSBwb2ludHMgd2l0aCBkaWZmZXJlbnQgbmFtZXMuIFRoZSBtYWluIHB1cnBvc2Ugb2YgY3JlYXRpbmcgdGhlc2UgcmVzb3VyY2VzIGlzIHRvIHRyYW5zZm9ybSBkYXRhIGZyb20gb3VyIEluZmx1eERCIG1lYXN1cmVtZW50IHNjaGVtYXMgaW50byBjb25zaXN0ZW50IEFQSSByZXNwb25zZXMuIFRoZXJlIGlzbid0IHJlYWxseSBhbnl0aGluZyBmYW5jeSBnb2luZyBvbiBoZXJlLCB3ZSBqdXN0IG5lZWQgdG8gbWFwIHRoZSBkYXRhIHdlIHdhbnQgZnJvbSBJbmZsdXhEQiBpbnRvIFtMYXJhdmVsJ3MgbmF0aXZlIEFQSSBSZXNvdXJjZXNdKGh0dHBzOi8vbGFyYXZlbC5jb20vZG9jcy84LngvZWxvcXVlbnQtcmVzb3VyY2VzKS4KCmBgYApjbGFzcyBQb2xvbmlleE1lYXN1cmVtZW50IGV4dGVuZHMgSnNvblJlc291cmNlCnsKICAgIC8vIFRyYW5zZm9ybSB0aGUgcmVzb3VyY2UgaW50byBhbiBhcnJheSB1c2VkIGluIHRoZSByZXNwb25zZS4KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0FycmF5KCRyZXF1ZXN0KQogICAgewogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICd0aW1lJyAgID0+IChzdHJpbmcpICR0aGlzLT5yZXNvdXJjZVsndGltZSddLAogICAgICAgICAgICAncGFpcicgICA9PiAoc3RyaW5nKSAkdGhpcy0+cmVzb3VyY2VbJ3BhaXInXSwKICAgICAgICAgICAgJ29wZW4nICAgPT4gKGZsb2F0KSAkdGhpcy0+cmVzb3VyY2VbJ29wZW4nXSwKICAgICAgICAgICAgJ2Nsb3NlJyAgPT4gKGZsb2F0KSAkdGhpcy0+cmVzb3VyY2VbJ2Nsb3NlJ10sCiAgICAgICAgICAgICdsb3cnICAgID0+IChmbG9hdCkgJHRoaXMtPnJlc291cmNlWydsb3cnXSwKICAgICAgICAgICAgJ2hpZ2gnICAgPT4gKGZsb2F0KSAkdGhpcy0+cmVzb3VyY2VbJ2hpZ2gnXSwKICAgICAgICAgICAgJ3ZvbHVtZV9mcm9tJyA9PiAoZmxvYXQpICR0aGlzLT5yZXNvdXJjZVsndm9sdW1lJ10sCiAgICAgICAgICAgICd2b2x1bWVfdG8nID0+IChmbG9hdCkgJHRoaXMtPnJlc291cmNlWydxdW90ZV92b2x1bWUnXSwKICAgICAgICBdOwogICAgfQp9CmBgYAoKLy8gdG9kbyBmaWxsIGluIHNvbWUgaW5mbyBhYm91dCBjcmVhdGluZyBjb2xsZWN0aW9ucyB3aXRoIHBhZ2luYXRpb24gdXNpbmcgdGhlIHRyYWl0cy4KCiMjIyMgMy4gQ29uZmlndXJhdGlvbgpUaGUgZmluYWwgc3RlcCBpcyBtYXBwaW5nIG91ciBzZXJ2aWNlIHRvIGFuIGVuZHBvaW50IGluIHRoZSBgaW5mbHV4ZGIucGhwYCBjb25maWcgZmlsZS4gTmF2aWdhdGUgdG8gdGhlIGZpbGUgYW5kIGxvb2sgZm9yIHRoZSBgbWVhc3VyZW1lbnRzYCBhcnJheS4gVGhpcyBhcnJheSB3aWxsIGNvbnRhaW4ga2V5PT52YWx1ZSBwYWlycyB3aGVyZSB5b3VyIG1lYXN1cmVtZW50IGlzIHRoZSBrZXkgYW5kIHRoZSBuYW1lc3BhY2Ugb2YgeW91ciBzZXJ2aWNlIGNsYXNzIGlzIHRoZSB2YWx1ZToKYGBgCi8qCiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgTWVhc3VyZW1lbnRzCiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHwgLi4uPHJlbW92ZWQgZm9yIGJyZXZpdHk+Li4uCiovCiAnbWVhc3VyZW1lbnRzJyA9PiBbCiAgICAncG9sb25pZXhfZXhjaGFuZ2UnID0+IFxBcHBcU2VydmljZXNcUG9sb25pZXhNZWFzdXJlbWVudFNlcnZpY2U6OmNsYXNzLAogXSwKYGBgCkJvb20hIE9uY2UgeW91ciBtYXBwaW5nIGhhcyBiZWVuIGNyZWF0ZWQsIHlvdSBjYW4gdXNlIHRoZSBBUEkgdG8gcXVlcnkgeW91ciBkYXRhIHVzaW5nIHRoZSBrZXkgbmFtZSBhcyB5b3VyIGVuZHBvaW50Ogo8YnI+IGAxMjcuMC4wLjEvYXBpL3BvbG9uaWV4X2V4Y2hhbmdlL3BhaXJzYAoKIyMjIyBSb3V0ZSBhbGlhc2VzCkkga25vdyB3aGF0IHlvdSdyZSB0aGlua2luZywgdGhhdCBVUkwgaXMgdWdseT8gV2VsbCBJIHRob3VnaHQgc28gdG9vLCBhbmQgaW5zdGVhZCBvZiBgcG9sb25pZXhfZXhjaGFuZ2VgIHdvdWxkbid0IGl0IGJlIGNsZWFuZXIganVzdCBiZWluZzogYC9hcGkvcG9sb25pZXgvcGFpcnNgPyBPZiBjb3Vyc2UgaXQgd291bGQuIFRvIGRvIHRoaXMsIHlvdSBjYW4gdXNlIHRoZSBgcm91dGVfYWxpYXNlc2AgYXJyYXkgaW4gdGhlIHNhbWUgY29uZmlnIGZpbGUuIFRoaXMgYXJyYXkgd2lsbCBhZ2FpbiBiZSBrZXk9PnBhaXIgdmFsdWVzIHdoZXJlIHRoZSBrZXkgYmVjb21lcyB0aGUgbmV3IGVuZHBvaW50IGFuZCB0aGUgdmFsdWUgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIG1lYXN1cmVtZW50IG5hbWUuCmBgYAovKgp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfCBSb3V0ZSBPdmVycmlkZXMKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgLi4uPHJlbW92ZWQgZm9yIGJyZXZpdHk+Li4uCiovCnJvdXRlX2FsaWFzZXMnID0+IFsKICAgICdwb2xvbmlleCcgPT4gJ3BvbG9uaWV4X2V4Y2hhbmdlJwpdCmBgYApXaXRoIHRoaXMgYWxpYXMsIHdlIGNhbiBub3cgdXNlIHRoZSBBUEkgdG8gcXVlcnkgdGhlIGAxMjcuMC4wLjEvYXBpL3BvbG9uaWV4L3BhaXJzYCBlbmRwb2ludCBpbnN0ZWFkIGFuZCByZWdhbGUgaW4gdGhlIGJlYXV0eSBvZiB0aGUgVVJMLgoKIyMgVGhlIGVuZCAuLi4/ClRoaXMgaXMgYWxsIHN0aWxsIHZlcnkgbXVjaCBhIHdvcmsgaW4gcHJvZ3Jlc3MgYW5kIEknbSBob3BpbmcgdG8gYWRkIHByaWNlIGhpc3RvcnkgZm9yIGRpZmZlcmVudCBleGNoYW5nZXMuIElmIHlvdSB3ZXJlIGNyYXp5IGVub3VnaCB0byBhY3R1YWxseSByZWFkIHRocm91Z2ggdGhpcyBzY2F0dGVyLWJyYWluZWQgZG9jdW1lbnRhdGlvbiBhbmQgZW5kIHVwIGNyZWF0aW5nIHlvdXIgb3duIGV4Y2hhbmdlIHNlcnZpY2VzLCBmZWVsIGZyZWUgdG8gb3BlbiBhIFBSIQoK readmeEtag: '"bdb2a5065519ca052ad0d93b25ef6a74ebb55c20"' readmeLastModified: Sat, 19 Jun 2021 09:16:24 GMT repositoryId: 375711453 description: >- API for retrieving personally scraped historic crypto price data from various exchanges. created: '2021-06-10T13:41:39Z' updated: '2023-03-13T07:17:39Z' language: PHP archived: false stars: 0 watchers: 1 forks: 1 owner: edavis25 logo: https://avatars.githubusercontent.com/u/14096584?v=4 repoEtag: '"7c93e667aeb1c8df27832a1f290b792a25684592164bbe5b277f0492169b01e6"' repoLastModified: Mon, 13 Mar 2023 07:17:39 GMT foundInMaster: true category: Server Implementations id: 6f7d4c178d5853c9a7a96bc6d029137e - source: openapi3 tags repository: https://github.com/ekoulemaneng/openapi-schema-retriever v3: true id: 5f0055e058a71ad791dc6310d364782b repositoryMetadata: base64Readme: >- IyBPcGVuYXBpIFNjaGVtYSBSZXRyaWV2ZXIKClR5cGVzY3JpcHQgcGFja2FnZSB0byBnZXQgYW4gT3BlbkFwaS1zcGVjaWZpY2F0aW9uLWNvbXBsaWFudCBkZXJlZmVyZW5jZWQgb2JqZWN0IGZyb20gYW4gb2JqZWN0IG9yIGFuIGpzb24sIHlhbWwgb3IgeW1sIGZpbGUgcGF0aCBzdHJpbmcuIEZvciAzLjEueCBhbmQgMy4wLnggT3BlbkFQSSB2ZXJzaW9ucy4KCiMjIEluc3RhbGxhdGlvbgpgYGB0eXBlc2NyaXB0Cm5wbSBpbnN0YWxsIG9wZW5hcGktc2NoZW1hLXJldHJpZXZlciAKYGBgCm9yCmBgYHR5cGVzY3JpcHQKeWFybiBhZGQgb3BlbmFwaS1zY2hlbWEtcmV0cmlldmVyCmBgYAoKIyMgVXNhZ2UKYGBgdHlwZXNjcmlwdAppbXBvcnQgc2NoZW1hUmV0cmlldmVyIGZyb20gJ29wZW5hcGktc2NoZW1hLXJldHJpZXZlcicKCmNvbnN0IG1haW4gPSBhc3luYyAoKSA9PiB7CgogICAgLyogc2NoZW1hUmV0cmlldmVyICBnZXRzLCBjaGVja3MgYW5kIHBhcnNlcyB0aGUgb3BlbmFwaSBzcGVjaWZpY2F0aW9uIHRoYXQgY2FuIGJlIGFuIG9iamVjdCBvciBhbiBmaWxlIHBhdGggc3RyaW5nLgogICAgICogSWYgdGhlIHNwZWNpZmljYXRpb24gaW5wdXQgaXMgYSBmaWxlIHBhdGggc3RyaW5nLCBhIHNlY29uZCBhcmd1bWVudCBzdGFuZGluZyBmb3IgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgaXMgbWFuZGF0b3J5LgogICAgICogV2UgcmVjb21tZW5kIHRvIHVzZSAnX19kaXJuYW1lJyBhcyBzZWNvbmQgYXJndW1lbnQuCiAgICAgKiBUaGUgZmlsZSBtdXN0IGJlIGVpdGhlciBhIGpzb24sIGEgeWFtbCBvciBhIHltbCBmaWxlLiAKICAgICAqIHNjaGVtYVJldHJpZXZlciByZXR1cm5zIGFuIGRlcmVmZXJlbmNlZCBvYmplY3QgaW4gYWNjb3JkYW5jZSB3aXRoIE9wZW5BUEkgc2NwZWNpZmljYXRpb24uCiAgICAqLwogICAgY29uc3Qgc2NoZW1hID0gYXdhaXQgc2NoZW1hUmV0cmlldmVyKCcuL29wZW5hcGkueWFtbCcsIF9fZGlybmFtZSkKCiAgICBjb25zb2xlLmxvZyhzY2hlbWEpIC8qID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuYXBpOiAnMy4xLjAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uLi4uLi4uLi4uLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgKi8KfQoKbWFpbigpCmBgYAoKIyMgTGljZW5zZQpUaGlzIHBhY2thZ2UgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFtNSVQgTGljZW5zZV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQpLgoKIyMgQ29udGFjdApJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIGlzc3VlcywgcGxlYXNlIGNvbnRhY3QgdGhlIHBhY2thZ2UgbWFpbnRhaW5lciBhdCBla291bGVtYW5lbmdAZ21haWwuY29tLgo= readmeEtag: '"e7ace22fa28615c3b4c8fe6d8f96c2812af10026"' readmeLastModified: Sat, 06 May 2023 18:52:26 GMT repositoryId: 636995451 description: >- Typescript package to get an OpenApi-specification-compliant dereferenced object from an object or an json, yaml or yml file path string. For 3.1.x and 3.0.x OpenAPI versions. created: '2023-05-06T07:25:03Z' updated: '2023-05-06T12:22:05Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: ekoulemaneng logo: https://avatars.githubusercontent.com/u/12666431?v=4 license: MIT repoEtag: '"787a55da426eda6a845b01fa64cb5cb0b19d3beb79f151afb18d675601c3c0e8"' repoLastModified: Sat, 06 May 2023 12:22:05 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/afshinparhizkari/issuetracker v3: true repositoryMetadata: base64Readme: >- IyBpc3N1ZXRyYWNrZXIKc29tZSBzaW1wbGUgcHJvamVjdCBmb3IgdHJhY2tpbmcgaXNzdWVzKHN0b3JpZXMgYW5kIGJ1Z3MpCg== readmeEtag: '"a8720708490c9e35797e440f01d30d7737e96e5c"' readmeLastModified: Wed, 08 Nov 2023 11:20:54 GMT repositoryId: 446873964 description: some simple project for tracking issues(stories and bugs) created: '2022-01-11T15:22:37Z' updated: '2022-05-05T07:26:46Z' language: Java archived: false stars: 0 watchers: 1 forks: 1 owner: AfshinParhizkari logo: https://avatars.githubusercontent.com/u/32636285?v=4 license: Apache-2.0 repoEtag: '"83664ad7daae6d51fbd342bac222dcbd73d5f9b433e6f7244bb272e9f83995b5"' repoLastModified: Thu, 05 May 2022 07:26:46 GMT foundInMaster: true category: - Low-level Tooling - Server - Server Implementations id: edae04f136ed5f6a77f930858ab72307 - source: https://openapi.tools/ name: ReadMe category: Documentation link: https://readme.com language: SaaS source_description: Build beautiful, personalized, interactive developer hubs. 🦉 v2: true v3: true v3_1: true foundInMaster: true id: 8959152e98349ff9aac5f6154d972854 - source: openapi3 tags repository: https://github.com/yoshinariyamanaka/backendapp-with-openapiv3-postgresql v3: true id: 9ca431d068cdf892e96fa0c46f040510 repositoryMetadata: base64Readme: >- IyBJbnRyb2R1Y3Rpb25zCgppbnN0YWxsIHBhY2thZ2VzIGFuZCBjb21waWxlIGFsbCB3b3Jrc3BhY2UgcGFja2FnZXMKCmBgYHNoCnlhcm4gaW5zdGFsbApgYGAKClRoZSBjb21tb24gcGFja2FnZSBpcyBsaW5rZWQgYXMgYSBzeW1ib2xpYyBsaW5rCmNoZWNrIGl0IG91dAoKYGBgCmNkIC4vbm9kZV9tb2R1bGVzL0BiYWNrZW5kCmxuIC1zIC4uLy4uL3BhY2thZ2VzL2NvbW1vbiAuCmBgYAoKIyBsb2NhbCBkZXZlbG9wbWVudAoKIyMgY29tbW9uCgpjcmVhdGUgdGFibGVzIGFuZCBpbnNlcnQgc2FtcGxlIGRhdGEKCmBgYApzZXJ2aWNlIHBvc3RncmVzcWwgc3RhcnQKLi9yZXNvdXJjZXMvY29tbW9uL2RkbC5zaApgYGAKCiMjIGFwaQoKIyMjIGJ1aWxkIGFuZCBzdGFydCBvciBkbyB0ZXN0cwoKYGBgCnlhcm4gd29ya3NwYWNlIEBiYWNrZW5kL2FwaSBidWlsZAp5YXJuIHdvcmtzcGFjZSBAYmFja2VuZC9hcGkgc3RhcnQKeWFybiB3b3Jrc3BhY2UgQGJhY2tlbmQvYXBpIHRlc3QKYGBgCgojIyMgd2l0aCBlbnZpcm9ubWVudCB2YWx1ZXMKCmBgYAouL3Jlc291cmNlcy9hcGkvbG9jYWxfZGV2LnNoIGNvbXBpbGUKLi9yZXNvdXJjZXMvYXBpL2xvY2FsX2Rldi5zaCBzdGFydAouL3Jlc291cmNlcy9hcGkvbG9jYWxfZGV2LnNoIHRlc3QKYGBgCgojIyMgYWRkIGxpYnJhcmllcyB0byB0aGUgZW50aXJlIHByb2plY3QKCmBgYAp5YXJuIGFkZCBgc29tZSBwYWNrYWdlYCAtVwpvcgp5YXJuIGFkZCAtLWRldiBgc29tZSBwYWNrYWdlYCAtVwpgYGAKCiMjIyBPcGVuQVBJIGRvY3MKCm9wZW4gc2hvd24gYmVsb3cgb24gdGhlIFdlYiBicm93c2VyCgpgYGAKbG9jYWxob3N0OjMwMDAvYXBpLWRvY3MvIwpgYGAKCiMgRGlyZWN0b3JpZXMKCnRyZWUgLUkgIm5vZGVfbW9kdWxlc3xidWlsZCIK readmeEtag: '"73eab30e10700867d04993b37d8b74614f9b7502"' readmeLastModified: Fri, 17 Nov 2023 04:49:23 GMT repositoryId: 437560745 description: BackendApp with OpenAPIV3 PostgreSQL implemented with TypeScript created: '2021-12-12T13:59:56Z' updated: '2023-01-27T05:53:16Z' language: TypeScript archived: false stars: 0 watchers: 0 forks: 0 owner: YoshinariYamanaka logo: https://avatars.githubusercontent.com/u/59109232?v=4 repoEtag: '"e26e79211bb49fd6e3f9c2f79f2ba5949d0f3e11c830b61377a15c84fdd8eb1a"' repoLastModified: Fri, 27 Jan 2023 05:53:16 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/yo-mah-ya/backendapp-with-openapiv3-postgresql - source: openapi3 tags repository: https://github.com/smartdwell/thesis-images v3: true id: 4a207bd8b0b8ec5bd7a11159ceddd7de repositoryMetadata: base64Readme: IyB0aGVzaXMtaW1hZ2Vz readmeEtag: '"47dba36aca3c977235d0b448e1bcab267848b51b"' readmeLastModified: Thu, 19 Jan 2023 06:55:34 GMT repositoryId: 590771118 description: Сервис для работы с изображениями для "Thesis System" created: '2023-01-19T06:55:34Z' updated: '2024-09-24T14:46:34Z' language: null archived: false stars: 0 watchers: 0 forks: 0 owner: SmartDwell logo: https://avatars.githubusercontent.com/u/158821215?v=4 repoEtag: '"83afa598ebc3b8aab949ee5bf4dee0fbe0a4457bbfc852c4aeada53eae021a9f"' repoLastModified: Tue, 24 Sep 2024 14:46:34 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/thesis-system/thesis-images - source: openapi3 tags repository: https://github.com/mulekick/ocr-argent-bank-frontend v3: true id: c15db9c54d4b423c100a74f71b262916 repositoryMetadata: base64Readme: >- IyBDcmVhdGUgUmVhY3QgQXBwIGN1c3RvbWl6YXRpb25zIDoKMS4gdXNlIHRoZSByZWR1eCB0ZW1wbGF0ZSBmb3IgY3JlYXRlLXJlYWN0LWFwcApgYGBiYXNoCm5weCBjcmVhdGUtcmVhY3QtYXBwIG9jci1hcmdlbnQtYmFuay1mcm9udGVuZCAtLXRlbXBsYXRlIHJlZHV4CmBgYAoyLiByZW1vdmUgdXNlbGVzcyBkZXBlbmRlbmNpZXMKYGBgYmFzaApucG0gdW5pbnN0YWxsIC0tc2F2ZSBAdGVzdGluZy1saWJyYXJ5L2plc3QtZG9tIEB0ZXN0aW5nLWxpYnJhcnkvcmVhY3QgQHRlc3RpbmctbGlicmFyeS91c2VyLWV2ZW50IHdlYi12aXRhbHMKYGBgCjMuIGluc3RhbGwgcHJvamVjdCBkZXYgZGVwZW5kZW5jaWVzCmBgYGJhc2gKbnBtIGluc3RhbGwgLS1zYXZlLWRldiBAbXVsZWtpY2svZXNsaW50LWNvbmZpZy1tdWxlc2xpbnQKYGBgCjQuIGluc3RhbGwgcHJvamVjdCBkZXBlbmRlbmNpZXMKYGBgYmFzaApucG0gaW5zdGFsbCAtLXNhdmUgcmVhY3Qtcm91dGVyLWRvbQpgYGAKNS4gdXBkYXRlIHBhY2thZ2UuanNvbiA6CiAgIC0gYWRkIGN1c3RvbSBwYWNrYWdlLmpzb24gc2NyaXB0cwogICAtIHJlbW92ZSBgYGBlc2xpbnRDb25maWdgYGAga2V5CiAgIC0gc3dpdGNoIHRvIEVTTSBtb2R1bGVzIHVzZSA6YGBgInR5cGUiOiAibW9kdWxlImBgYAogICAtIGFkZCBpbmZvcm1hdGlvbmFsIGVudHJpZXMKNi4gYWRkIGN1c3RvbSBgYGAuZXNsaW50cmMuanNvbmBgYCBmaWxlCjcuIGZpbGUgc3lzdGVtIGNsZWFudXAKYGBgYmFzaApybSBzcmMvc2V0dXBUZXN0cy5qcyBzcmMvcmVwb3J0V2ViVml0YWxzLmpzIHNyYy9BcHAudGVzdC5qcyBzcmMvZmVhdHVyZXMvY291bnRlci9jb3VudGVyU2xpY2Uuc3BlYy5qcyBwdWJsaWMvbG9nbyogcHVibGljL21hbmlmZXN0Lmpzb24gcHVibGljL3JvYm90cy50eHQKYGBgCgojIEdldHRpbmcgU3RhcnRlZCB3aXRoIENyZWF0ZSBSZWFjdCBBcHAgYW5kIFJlZHV4CgpUaGlzIHByb2plY3Qgd2FzIGJvb3RzdHJhcHBlZCB3aXRoIFtDcmVhdGUgUmVhY3QgQXBwXShodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svY3JlYXRlLXJlYWN0LWFwcCksIHVzaW5nIHRoZSBbUmVkdXhdKGh0dHBzOi8vcmVkdXguanMub3JnLykgYW5kIFtSZWR1eCBUb29sa2l0XShodHRwczovL3JlZHV4LXRvb2xraXQuanMub3JnLykgdGVtcGxhdGUuCgojIyBBdmFpbGFibGUgU2NyaXB0cwoKSW4gdGhlIHByb2plY3QgZGlyZWN0b3J5LCB5b3UgY2FuIHJ1bjoKCiMjIyBgbnBtIHN0YXJ0YAoKUnVucyB0aGUgYXBwIGluIHRoZSBkZXZlbG9wbWVudCBtb2RlLlwKT3BlbiBbaHR0cDovL2xvY2FsaG9zdDozMDAwXShodHRwOi8vbG9jYWxob3N0OjMwMDApIHRvIHZpZXcgaXQgaW4geW91ciBicm93c2VyLgoKVGhlIHBhZ2Ugd2lsbCByZWxvYWQgd2hlbiB5b3UgbWFrZSBjaGFuZ2VzLlwKWW91IG1heSBhbHNvIHNlZSBhbnkgbGludCBlcnJvcnMgaW4gdGhlIGNvbnNvbGUuCgojIyMgYG5wbSB0ZXN0YAoKTGF1bmNoZXMgdGhlIHRlc3QgcnVubmVyIGluIHRoZSBpbnRlcmFjdGl2ZSB3YXRjaCBtb2RlLlwKU2VlIHRoZSBzZWN0aW9uIGFib3V0IFtydW5uaW5nIHRlc3RzXShodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9jcmVhdGUtcmVhY3QtYXBwL2RvY3MvcnVubmluZy10ZXN0cykgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgojIyMgYG5wbSBydW4gYnVpbGRgCgpCdWlsZHMgdGhlIGFwcCBmb3IgcHJvZHVjdGlvbiB0byB0aGUgYGJ1aWxkYCBmb2xkZXIuXApJdCBjb3JyZWN0bHkgYnVuZGxlcyBSZWFjdCBpbiBwcm9kdWN0aW9uIG1vZGUgYW5kIG9wdGltaXplcyB0aGUgYnVpbGQgZm9yIHRoZSBiZXN0IHBlcmZvcm1hbmNlLgoKVGhlIGJ1aWxkIGlzIG1pbmlmaWVkIGFuZCB0aGUgZmlsZW5hbWVzIGluY2x1ZGUgdGhlIGhhc2hlcy5cCllvdXIgYXBwIGlzIHJlYWR5IHRvIGJlIGRlcGxveWVkIQoKU2VlIHRoZSBzZWN0aW9uIGFib3V0IFtkZXBsb3ltZW50XShodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9jcmVhdGUtcmVhY3QtYXBwL2RvY3MvZGVwbG95bWVudCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgojIyMgYG5wbSBydW4gZWplY3RgCgoqKk5vdGU6IHRoaXMgaXMgYSBvbmUtd2F5IG9wZXJhdGlvbi4gT25jZSB5b3UgYGVqZWN0YCwgeW91IGNhbid0IGdvIGJhY2shKioKCklmIHlvdSBhcmVuJ3Qgc2F0aXNmaWVkIHdpdGggdGhlIGJ1aWxkIHRvb2wgYW5kIGNvbmZpZ3VyYXRpb24gY2hvaWNlcywgeW91IGNhbiBgZWplY3RgIGF0IGFueSB0aW1lLiBUaGlzIGNvbW1hbmQgd2lsbCByZW1vdmUgdGhlIHNpbmdsZSBidWlsZCBkZXBlbmRlbmN5IGZyb20geW91ciBwcm9qZWN0LgoKSW5zdGVhZCwgaXQgd2lsbCBjb3B5IGFsbCB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgdGhlIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzICh3ZWJwYWNrLCBCYWJlbCwgRVNMaW50LCBldGMpIHJpZ2h0IGludG8geW91ciBwcm9qZWN0IHNvIHlvdSBoYXZlIGZ1bGwgY29udHJvbCBvdmVyIHRoZW0uIEFsbCBvZiB0aGUgY29tbWFuZHMgZXhjZXB0IGBlamVjdGAgd2lsbCBzdGlsbCB3b3JrLCBidXQgdGhleSB3aWxsIHBvaW50IHRvIHRoZSBjb3BpZWQgc2NyaXB0cyBzbyB5b3UgY2FuIHR3ZWFrIHRoZW0uIEF0IHRoaXMgcG9pbnQgeW91J3JlIG9uIHlvdXIgb3duLgoKWW91IGRvbid0IGhhdmUgdG8gZXZlciB1c2UgYGVqZWN0YC4gVGhlIGN1cmF0ZWQgZmVhdHVyZSBzZXQgaXMgc3VpdGFibGUgZm9yIHNtYWxsIGFuZCBtaWRkbGUgZGVwbG95bWVudHMsIGFuZCB5b3Ugc2hvdWxkbid0IGZlZWwgb2JsaWdhdGVkIHRvIHVzZSB0aGlzIGZlYXR1cmUuIEhvd2V2ZXIgd2UgdW5kZXJzdGFuZCB0aGF0IHRoaXMgdG9vbCB3b3VsZG4ndCBiZSB1c2VmdWwgaWYgeW91IGNvdWxkbid0IGN1c3RvbWl6ZSBpdCB3aGVuIHlvdSBhcmUgcmVhZHkgZm9yIGl0LgoKIyMgTGVhcm4gTW9yZQoKWW91IGNhbiBsZWFybiBtb3JlIGluIHRoZSBbQ3JlYXRlIFJlYWN0IEFwcCBkb2N1bWVudGF0aW9uXShodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9jcmVhdGUtcmVhY3QtYXBwL2RvY3MvZ2V0dGluZy1zdGFydGVkKS4KClRvIGxlYXJuIFJlYWN0LCBjaGVjayBvdXQgdGhlIFtSZWFjdCBkb2N1bWVudGF0aW9uXShodHRwczovL3JlYWN0anMub3JnLykuCg== readmeEtag: '"2c85d204e7da428e7a5780e72744622894e3faba"' readmeLastModified: Wed, 22 Feb 2023 21:35:21 GMT repositoryId: 590762652 description: >- 'Connect to a Back End with an API Using React' - OpenClassRooms project #13 created: '2023-01-19T06:23:03Z' updated: '2023-07-08T11:31:44Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: mulekick logo: https://avatars.githubusercontent.com/u/24319237?v=4 license: MIT repoEtag: '"c423389f31c515d4a4ca9b4b5733210fde0b0098b4228c9361280d138680aa37"' repoLastModified: Sat, 08 Jul 2023 11:31:44 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/artemovskiy/pumapi v3: true repositoryMetadata: base64Readme: >- IyBuZXN0LWpzb24tYXBpCkEgdG9vbCBmb3IgZWFzeSBidWlsZGluZyBBUEkgYWNvcmRpbmcgW0pTT05BUEkgU1BFQ10oaHR0cHM6Ly9qc29uYXBpLm9yZy8pLgoKRmVhdHVyZXM6CiogQXV0b21hdGljIHNlcmlhbGl6YXRpb24KKiBBdXRvbWF0aWMgZGVzZXJpYWxpemF0aW9uCiogQXV0b21hdGljIGJ1aWxkaW5nIG9mIEFQSSBzcGVjCg== readmeEtag: '"c30f1c9b70918584d8207b0cf254de9c6072a9e3"' readmeLastModified: Fri, 17 Mar 2023 05:42:27 GMT repositoryId: 475965997 description: A tool for easy building API according the JSONAPI spec created: '2022-03-30T16:37:56Z' updated: '2022-03-30T16:57:42Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: artemovskiy logo: https://avatars.githubusercontent.com/u/16016725?v=4 repoEtag: '"9a71d315f5e623c0edbe6defc7b0545014b74bb0a5e20d51945961c876107c34"' repoLastModified: Wed, 30 Mar 2022 16:57:42 GMT foundInMaster: true category: - Server - Server Implementations id: 7263baf7be8c738f6cbe4ac487c08c7e oldLocations: - https://github.com/xydens/pumapi - source: openapi3 tags repository: https://github.com/mrigankaghosh/crudapp-with-rest-api v3: true id: 87aab7ae0b65208e063a70d8a51187bd repositoryMetadata: base64Readme: >- IyBDcnVkYXBwLXdpdGgtUkVTVC1BUEkNCg0KQ3J1ZGFwcCBpcyBhIGJhc2ljIFJlc3QgQVBJIHRoYXQgY2FuIHBlcmZvcm0gYSBidW5jaCBvZiBjcnVkIG9wZXJhdGlvbnMgYXMgZm9sbG93czoNCjEuIEFkZCBhIFVzZXINCjIuIERlbGV0ZSBhIFVzZXINCjMuIFNob3cgYWxsIFVzZXJzDQo0LiBDb3VudCB0aGUgbnVtYmVyIG9mIFVzZXJzDQo1LiBTaG93IFVzZXJzIGJ5IHRoZWlyIElkcw0KNi4gU2hvdyBVc2VycyBieSB0aGVpciBuYW1lcw0KNy4gU2hvdyBVc2VycyBieSB0aGVpciBwaG9uZSBudW1iZXINCjguIFNob3cgVXNlcnMgYnkgdGhlaXIgZW1haWwNCg0KVGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgUkVTVCBBUEkgaXMgaW4gdGhlIGZpbGUgbmFtZWQgZG9jdW1lbnRhdGlvbi55YW1sIA0KDQpUaGUgbGFuZ3VhZ2UsIGZyYW1ld29ya3MgYW5kIGRldmVsb3BtZW50IHRvb2xzIHVzZWQgYXJlOg0KMS4gSmF2YQ0KMi4gU3ByaW5nICYgU3ByaW5nIEJvb3QgKGFwcGxpY2F0aW9uIGZyYW1ld29yaykNCjMuIFNwcmluZyBNVkMNCjQuIFNwcmluZyBEYXRhIEpQQSB3aXRoIEhpYmVybmF0ZQ0KNS4gTXlTcWwgKHNxbCBkYXRhYmFzZSkNCjYuIEFwYWNoZSBNYXZlbiAoYnVpbGQgYXV0b21hdGlvbiB0b29sKQ0KNy4gQXBhY2hlIFRvbWNhdCAod2ViIGFwcGxpY2F0aW9uIHNlcnZlcikNCg0KSWYgeW91IHdhbnQgdG8gY2xvbmUgdGhpcyByZXBvIGFuZCBydW4gaXQgb24geW91ciBsb2NhbCBtYWNoaW5lLCB5b3Ugc2hvdWxkIGluc3RhbGwgamF2YSAxNyBvbiB5b3VyIHN5c3RlbS4gQWxzbywgeW91J2xsIGhhdmUgdG8gDQppbnN0YWxsIG1hdmVuIGluIG9yZGVyIHRvIGRvd25sb2FkIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGluIHlvdXIgbG9jYWwgbWFjaGluZS4gWW91IHdvbid0IGJlIG5lZWRpbmcgYSB0b21jYXQgc2VydmVyIGluc3RhbGxlZCBiZWNhdXNlIA0KdGhlcmUgaXMgYW4gaW4tYnVpbGQgc2VydmVyIHByb3ZpZGVkIGJ5IHRoZSBzcHJpbmcgYm9vdCBzdGFydGVyIHBhY2suIEJ5IGRlZmF1bHQsIHRoZSBBUEkgd291bGQgYmUgIHJ1bm5pbmcgb24gbG9jYWxob3N0IHBvcnQgODA5MC4NCkhvd2V2ZXIsIGlmIHRoaXMgcG9ydCBpcyBidXN5IGluIHlvdXIgbWFjaGluZSwgeW91IGNhbiBjaGFuZ2UgdGhlIHBvcnQgbnVtYmVyIGJ5IGdvaW5nIHRvIHNyYy9tYWluL3Jlc291cmNlcy9hcHBsaWNhdGlvbi5wcm9wZXJ0aWVzIA0KYW5kIGNoYW5nZSBzZXJ2ZXIucG9ydD04MDkwIHRvIGFueSBhdmFpbGFibGUgcG9ydC4gSGFwcHkgQ3J1ZGRpbmchISENCg0KSSBoYXZlIHBhc3RlZCBzb21lIG9mIHRoZSBzY3JlZW5zaG90cyBzaG93aW5nIHRoZSB2YXJpb3VzIHVyaSBwYXR0ZXJucyBpbiBhY2NvcmRhbmNlIHRvIHRoZSBvcGVuYXBpIHNwZWNpZmljYXRpb25zOg0KDQoxLiBFbnRpdHkgQ2xhc3Nlcw0KIVsyMDIzLTA0LTIzICgxKV0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNTY5NzY2MzUvMjMzODU5MzM4LTFlYzY0NTgwLTFmM2QtNDFiZC1iOWU1LTYzNmZmMTMxOWY2Ny5wbmcpDQoNCjIuIENSVUQgb3BlcmF0aW9uIFVSSSBwYXR0ZXJuczoNCiFbMjAyMy0wNC0yMyAoMildKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzU2OTc2NjM1LzIzMzg1OTM5My1mM2ZhZTUxYy1mMTRkLTQ4NWEtODU3Zi05NTI5NGZhZjc5OTkucG5nKQ0K readmeEtag: '"011f883516f63ecbbe747abe9022570e3e80bb23"' readmeLastModified: Sun, 23 Apr 2023 19:00:37 GMT repositoryId: 630581426 description: >- Crudapp is a basic Rest API that can perform a bunch of crud operations and it follows all the openapi specifications. The entire API is developed with Java language and Spring, Spring Boot, Spring MVC and Spring Data JPA as its frameworks. created: '2023-04-20T17:30:06Z' updated: '2023-04-23T19:08:02Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: MrigankaGhosh logo: https://avatars.githubusercontent.com/u/56976635?v=4 repoEtag: '"7e2e8c7a8313a62d82464c3913cf9607917d2115cbcb1ea54c228ee89ccb3ec7"' repoLastModified: Sun, 23 Apr 2023 19:08:02 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/czasg/pywss v3: true id: 589a36843824543c6b39b9e4a63c23bb repositoryMetadata: base64Readme: >- PGRpdiBhbGlnbj0nY2VudGVyJz4KCiFbcHl3c3NdKC4vcHl3c3MucG5nKQogIAo8YnIvPgogIAohW1Byb2plY3Qgc3RhdHVzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3B5dGhvbi0zLjYrLWdyZWVuLnN2ZykKIVtQeVBJXShodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9weXdzcz9jb2xvcj1ncmVlbikKIVtDb2RlY292XShodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRodWIvY3phc2cvcHl3c3M/dG9rZW49SlNYSVFYWTFFUSkKWyFbR2l0SHViIGlzc3Vlc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvaXNzdWVzL2N6YXNnL3B5d3NzKV0oaHR0cHM6Ly9naXRodWIuY29tL2N6YXNnL3B5d3NzL2lzc3VlcykKWyFbR2l0SHViIGlzc3Vlc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvaXNzdWVzLWNsb3NlZC9jemFzZy9weXdzcyldKGh0dHBzOi8vZ2l0aHViLmNvbS9jemFzZy9weXdzcy9pc3N1ZXMtY2xvc2VkKQpbIVtHaXRIdWIgbGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9jemFzZy9weXdzcyldKGh0dHBzOi8vZ2l0aHViLmNvbS9jemFzZy9weXdzcy9ibG9iL21haW4vTElDRU5TRSkKICAKPGJyLz4KICAKPC9kaXY+CgojIyBQeXdzcyDnroDku4sKClB5d3Nz77yI5Y+R6Z+zIC9wacuQd2HJqnov77yM57G75Ly8ICoqcH53aHlzKirvvInmmK/kuIDkuKrovbvph4/nuqfnmoQgUHl0aG9uIFdlYiDmoYbmnrbvvIzlroPln7rkuo4gUHl0aG9uMy42KyDnibnmgKfmnoTlu7rjgIIKCuS4jiBGbGFza+OAgURqYW5nbyDnrYnkuLvmtYHmoYbmnrbkuI3lkIznmoTmmK/vvIxQeXdzcyDnmoTlupXlsYLlubbmsqHmnInlrp7njrAgV1NHSSDmjqXlj6PljY/orq7jgIIK5YW257yW56iL6aOO5qC85Lmf5pu057G75Ly85LqOIEdpbuOAgUlyaXMg562J5qGG5p6277yM5Zug5q2k5a+55LqO54af5oKJ6L+Z5Lqb5qGG5p6255qE5byA5Y+R6ICF5p2l6K+077yMUHl3c3Mg5piv5LiA5Liq6Z2e5bi45YC85b6X5o6i57Si55qE6aG555uu44CCCgrlhbblhbPplK7nibnmgKfmnInvvJoKLSAqKueugOWNlSoq77ya5ouS57ud5rW36YeP5Y+C5pWw77yM5YeP5bCR5b+D5pm66LSf5ouF44CC5LqG6Kej5LiK5LiL5paHIGBweXdzcy5Db250ZXh0YCDljbPliLvlkK/nqIvjgIIKLSAqKuW/q+mAnyoq77ya5byV5YWl57q/56iL5rGg5py65Yi277yM5YeP5bCR5bm25Y+R5Zy65pmv5LiL57q/56iL5Yib5bu6L+mUgOavgeW8gOmUgOOAggotICoq5LyY6ZuFKirvvJpgY3R4Lm5leHRgIOecn+eahOWkquS8mOmbheS6huOAguWmguaenOS9oOS5n+WSjOaIkeS4gOagt+WWnOasou+8jOmCo+aIkeinieW+l+i/meS7tuS6i+aDhe+8jCoq5rOw6KOk6L6j77yB77yBKioKLSAqKuagh+WHhuWMlioq77ya6ZuG5oiQ5LqG6YOo5YiGIE9wZW5BUEnvvIhTd2FnZ2Vy77yJ6IO95Yqb77yM5pa55L6/5byA5Y+R6ICF5b+r6YCf55Sf5oiQIEFQSSDmlofmoaPlubbov5vooYzosIPor5XjgIIKLSAqKuaUr+aMgVdlYlNvY2tldCoq77ya5byA566x5Y2z55So55qEICoqV2ViU29ja2V0Kiog6IO95Yqb44CCCi0gKirmjqXlj6PmtYvor5UqKu+8muW8gOeuseWNs+eUqOeahCAqKkFQSSDmtYvor5XmqKHlnZcqKu+8jOS4jeWQr+WKqOacjeWKoeS5n+iDvea1i+ivleaOpeWPo+WKn+iDvei+o++8gQotICoqTUNQIFBSTyoq77ya5LiA56uZ5byP6ZuG5oiQICoqU1NF44CBU3RyZWFtSFRUUCDlkowgTUNQTyDljY/orq4qKu+8jOWKqeS9oOi9u+advuaehOW7uuWkmiBNQ1Ag5bel5YW38J+UpQoKKipf5Zyo57q/5paH5qGjXyoqIFsqKl9odHRwczovL2N6YXNnLmdpdGh1Yi5pby9weXdzcy9fKipdKGh0dHBzOi8vY3phc2cuZ2l0aHViLmlvL3B5d3NzLykKCjxici8+CgojIyDlv6vpgJ/lvIDlp4sKCiMjIyAx44CB5a6J6KOFIHB5d3NzCmBgYHNoZWxsCnBpcDMgaW5zdGFsbCBweXdzcwpgYGAKCiMjIyAy44CB5pCt5bu6IHdlYiDlupTnlKggICAgCummluWFiOWIm+W7uiBgbWFpbi5weWAg5paH5Lu277yM5bm25YaZ5YWl5Lul5LiL5Luj56CB77yaCmBgYHB5dGhvbgppbXBvcnQgdGltZQppbXBvcnQgcHl3c3MKCmRlZiBsb2dfaGFuZGxlcihjdHg6IHB5d3NzLkNvbnRleHQpOgogICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCiAgICBjdHgubmV4dCgpCiAgICBwcmludCgKICAgICAgICBmIlJvdXRlOiB7Y3R4LnJvdXRlfSwgIgogICAgICAgIGYiTWV0aG9kOiB7Y3R4Lm1ldGhvZH0sICIKICAgICAgICBmIlN0YXR1czoge2N0eC5yZXNwb25zZV9zdGF0dXNfY29kZX0sICIKICAgICAgICBmIlRpbWU6IHt0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWU6LjNmfXMiCiAgICApCgpkZWYgaGFuZGxlcihjdHg6IHB5d3NzLkNvbnRleHQpOgogIGN0eC53cml0ZSgiaGVsbG9+IikKCmRlZiBtYWluKCk6CiAgICBhcHAgPSBweXdzcy5BcHAoKQogICAgYXBwLmdldCgiL2hlbGxvIiwgaGFuZGxlcikgICMgY3VybCBsb2NhbGhvc3Q6ODA4MC9oZWxsbwogICAgYXBwLmFueSgiKiIsIGxvZ19oYW5kbGVyLCBoYW5kbGVyKSAgIyBjdXJsIC1YIFBPU1QgbG9jYWxob3N0OjgwODAvaGVsbG8KICAgIGFwcC5ydW4oKQoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIG1haW4oKQpgYGAK5o6l552A5ZCv5Yqo5pyN5YqhOgpgYGBzaGVsbApweXRob24zIG1haW4ucHkKYGBgCgroh7PmraTvvIzkuIDkuKrnroDljZXnmoQgd2ViIOW6lOeUqOacjeWKoeWwseWujOaIkOS6huOAggoKIyMjIDPjgIHmkK3lu7ogTUNQIOW6lOeUqAropoHlv6vpgJ/mnoTlu7ogTUNQIOacjeWKoe+8jOWPqumcgOe7p+aJvyBgcHl3c3MubWNwLk1DUFNlcnZlcmAg5bm26YG15b6q5Lul5LiL6KeE5YiZ77yaICAKCioq5qC45b+D57qm5p2fOioqICAKLSDmiYDmnInmjqXlj6Pmlrnms5Xlv4Xpobvku6UgKipgdG9vbF9gKiog5byA5aS077yI5aaCIGB0b29sX3F1ZXJ5X3VzZXJg77yJICAKLSDlv4Xpobvkvb/nlKggKipgQHB5d3NzLm9wZW5hcGkuZG9jc2AqKiDlo7DmmI7or7fmsYLlj4LmlbDvvIzkuJQgYHJlcXVlc3RgIOW/hemhu+S7jiBweWRhbnRpYy5CYXNlTW9kZWwg57un5om/77yI6Ieq5Yqo55Sf5oiQIE9wZW5BUEkg5paH5qGj77yJICAKCioq6K+35rGC5aSE55CGOioqICAgIAotIOmAmui/hyAqKmBjdHguZGF0YS5yZXFgKiog55u05o6l6I635Y+W57uT5p6E5YyW6K+35rGC5L2TCi0g5L2/55SoICoqYHNlbGYuaGFuZGxlX3N1Y2Nlc3MoY3R4LCBkYXRhKWAqKiDov5Tlm57miJDlip/lk43lupQKLSDkvb/nlKggKipgc2VsZi5oYW5kbGVfZXJyb3IoY3R4LCBjb2RlLCBtZXNzYWdlKWAqKiDov5Tlm57moIflh4bplJnor68KCmBgYHB5dGhvbgojIGNvZGluZzogdXRmLTgKaW1wb3J0IHB5d3NzCmZyb20gcHlkYW50aWMgaW1wb3J0IEJhc2VNb2RlbApmcm9tIHB5d3NzLm1jcCBpbXBvcnQgTUNQU2VydmVyCgpjbGFzcyBEb21haW5SZXEoQmFzZU1vZGVsKTogICMg5a6a5LmJIERvbWFpblJlcSDor7fmsYLvvIzlv4Xpobvku44gcHlkYW50aWMuQmFzZU1vZGVsIOe7p+aJvwogICAgZG9tYWluOiBzdHIKCmNsYXNzIERvbWFpbk1DUFNlcnZlcihNQ1BTZXJ2ZXIpOiAgIyDlrprkuYkgRG9tYWluTUNQU2VydmVyIOacjeWKoe+8jOW/hemhu+S7jiBweXdzcy5tY3AuTUNQU2VydmVyIOe7p+aJvwogICAgQHB5d3NzLm9wZW5hcGkuZG9jcyhkZXNjcmlwdGlvbj0i6I635Y+W5Y2V5Liq5Z+f5ZCN5pyN5YqhIiwgcmVxdWVzdD1Eb21haW5SZXEpICAjIHJlcXVpcmVk77yM5bel5YW35Y+K5YW25Y+C5pWw6K+05piOCiAgICBkZWYgdG9vbF9nZXRfZG9tYWluKHNlbGYsIGN0eDogcHl3c3MuQ29udGV4dCk6CiAgICAgICAgcmVxOiBEb21haW5SZXEgPSBjdHguZGF0YS5yZXEgICMg5qGG5p625bey57uP5bCB6KOF5aW95LqG6K+35rGC77yM5Y+v5Lul5LuOIGN0eC5kYXRhLnJlcSDnm7TmjqXojrflj5bkvb/nlKjvvIzlvILluLjor7fmsYLkvJrooqvmi6bmiKoKICAgICAgICBzZWxmLmhhbmRsZV9zdWNjZXNzKGN0eCwgeyAgIyBoYW5kbGVfc3VjY2VzcyDlsIHoo4XkuoYganNvbnJwYzIuMCDovpPlh7rop4TojIMKICAgICAgICAgICAgImRvbWFpbiI6IHJlcS5kb21haW4sCiAgICAgICAgICAgICJjb2xvciI6IHJlcS5jb2xvcgogICAgICAgIH0pCgpjbGFzcyBMb2dSZXEoQmFzZU1vZGVsKToKICAgIHRyYWNlSWQ6IHN0cgoKY2xhc3MgTG9nTUNQU2VydmVyKE1DUFNlcnZlcik6CiAgICBAcHl3c3Mub3BlbmFwaS5kb2NzKGRlc2NyaXB0aW9uPSLojrflj5bljZXkuKp0cmFjZeaXpeW/lyIsIHJlcXVlc3Q9TG9nUmVxKQogICAgZGVmIHRvb2xfZ2V0X3RyYWNlX2xvZyhzZWxmLCBjdHg6IHB5d3NzLkNvbnRleHQpOgogICAgICAgIHJlcTogTG9nUmVxID0gY3R4LmRhdGEucmVxCiAgICAgICAgc2VsZi5oYW5kbGVfc3VjY2VzcyhjdHgsIHsKICAgICAgICAgICAgInRyYWNlSWQiOiByZXEudHJhY2VJZCwKICAgICAgICB9KQoKZG9tYWluTUNQU2VydmVyID0gRG9tYWluTUNQU2VydmVyKCkKbG9nTUNQU2VydmVyID0gTG9nTUNQU2VydmVyKCkKCmFwcCA9IHB5d3NzLkFwcCgpCmFwcC5vcGVuYXBpKCkgICMg5byA5ZCvIE9wZW5BUEkg5paH5qGjCmRvbWFpbk1DUFNlcnZlci5tb3VudChhcHAuZ3JvdXAoIi9hcGkvdjEvZG9tYWluIikpICAjIOaMgui9vSBNQ1Ag5pyN5Yqh77yM5ZCM5pe25oyH5a6a6Lev55SxCmxvZ01DUFNlcnZlci5tb3VudChhcHAuZ3JvdXAoIi9hcGkvdjEvbG9nIikpICAjIOaMgui9vSBNQ1Ag5pyN5Yqh77yM5ZCM5pe25oyH5a6a6Lev55SxCmFwcC5ydW4oKQpgYGAK5o6l552A5ZCv5Yqo5pyN5YqhOgpgYGBzaGVsbApweXRob24zIG1haW4ucHkKYGBgCnwg5Y2P6K6u57G75Z6LICAgfCDmnI3liqHnsbsgICAgICAgICAgICAgICB8IOivt+axguaWueazlSB8IOerr+eCuei3r+W+hOagvOW8jyAgICAgICAgICAgICAgICAgICAgICAgICAgfCDnpLrkvovot6/lvoQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgKipTU0UqKiAgICB8IGBkb21haW5NQ1BTZXJ2ZXJgICAgIHwgYEdFVGAgICAgfCBgL2FwaS92MS9kb21haW4vc3NlYCAgICAgICAgICAgICAgICAgIHwgYEdFVCAvYXBpL3YxL2RvbWFpbi9zc2VgICAgICAgICAgICAgICB8CnwgICAgICAgICAgICB8IGBsb2dNQ1BTZXJ2ZXJgICAgICAgIHwgYEdFVGAgICAgfCBgL2FwaS92MS9sb2cvc3NlYCAgICAgICAgICAgICAgICAgICAgIHwgYEdFVCAvYXBpL3YxL2xvZy9zc2VgICAgICAgICAgICAgICAgICB8CnwgKipTdHJlYW1IVFRQKiogfCBgZG9tYWluTUNQU2VydmVyYCB8IGBQT1NUYCAgIHwgYC9hcGkvdjEvZG9tYWluL21jcGAgICAgICAgICAgICAgICAgICB8IGBQT1NUIC9hcGkvdjEvZG9tYWluL21jcGAgICAgICAgICAgICAgfAp8ICAgICAgICAgICAgfCBgbG9nTUNQU2VydmVyYCAgICAgICB8IGBQT1NUYCAgIHwgYC9hcGkvdjEvbG9nL21jcGAgICAgICAgICAgICAgICAgICAgICB8IGBQT1NUIC9hcGkvdjEvbG9nL21jcGAgICAgICAgICAgICAgICAgfAp8ICoqTUNQTyoqICAgfCBgZG9tYWluTUNQU2VydmVyYCAgICB8IGBQT1NUYCAgIHwgYC9hcGkvdjEvZG9tYWluL3Rvb2xzL3t0b29sX25hbWV9YCAgICB8IGBQT1NUIC9hcGkvdjEvZG9tYWluL3Rvb2xzL2dldF9kb21haW5gIHwKfCAgICAgICAgICAgIHwgYGxvZ01DUFNlcnZlcmAgICAgICAgfCBgUE9TVGAgICB8IGAvYXBpL3YxL2xvZy90b29scy97dG9vbF9uYW1lfWAgICAgICAgfCBgUE9TVCAvYXBpL3YxL2xvZy90b29scy9nZXRfdHJhY2VfbG9nYCB8CgoK5pu05aSa5Yqf6IO96KeBW+WcqOe6v+aWh+aho10oaHR0cHM6Ly9jemFzZy5naXRodWIuaW8vcHl3c3MvKeOAggogIAo8YnIvPgoKIyMgQWN0aXZpdHkKCiFbQWx0XShodHRwczovL3JlcG9iZWF0cy5heGlvbS5jby9hcGkvZW1iZWQvMDY0N2RjZTBjMTY5YmE4NThiMzU5MjkzODM3NmU0MWQyMGRjM2U2Zi5zdmcgIlJlcG9iZWF0cyBhbmFseXRpY3MgaW1hZ2UiKQo= readmeEtag: '"a275b5f3fe20dd41e2dc95638466a97203c72643"' readmeLastModified: Tue, 15 Jul 2025 13:08:43 GMT repositoryId: 214977479 description: 一个轻量级的 Python Web 框架,一站式集成 MCP SSE、StreamHTTP 和 MCPO 协议,助你轻松构建MCP Server🔥 created: '2019-10-14T07:33:17Z' updated: '2025-08-29T15:59:21Z' language: Python archived: false stars: 99 watchers: 2 forks: 19 owner: czasg logo: https://avatars.githubusercontent.com/u/44974561?v=4 license: MIT repoEtag: '"07c0a19b047b6a53a1863c45ced6c66dc551697a9d37554ad5ee45e61fb068ec"' repoLastModified: Fri, 29 Aug 2025 15:59:21 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/zero88/bean.x v3: true id: df9f8fc3d0e3cb58fe42f9b34925e1f4 repositoryMetadata: base64Readme: >- PSBCZWFueAp6ZXJvODgKOnJlcG86IHplcm84OC9iZWFuLngKOmFydGlmYWN0OiBpby5naXRodWIuemVybzg4L2JlYW54Cjpzb25hcktleTogemVybzg4X2JlYW54CgppbWFnZTpodHRwczovL2dpdGh1Yi5jb20ve3JlcG99L2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmdbe3JlcG99LGxpbms9aHR0cHM6Ly9naXRodWIuY29tL3tyZXBvfS9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWxdCmltYWdlOmh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3YvcmVsZWFzZS97cmVwb30/c29ydD1zZW12ZXJbR2l0SHViIHJlbGVhc2UgKGxhdGVzdCBTZW1WZXIpXQppbWFnZTpodHRwczovL2ltZy5zaGllbGRzLmlvL25leHVzL3Ive2FydGlmYWN0fT9zZXJ2ZXI9aHR0cHMlM0ElMkYlMkZvc3Muc29uYXR5cGUub3JnW1NvbmF0eXBlIE5leHVzIChSZWxlYXNlcyldCmltYWdlOmh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbmV4dXMvcy97YXJ0aWZhY3R9P3NlcnZlcj1odHRwcyUzQSUyRiUyRm9zcy5zb25hdHlwZS5vcmdbU29uYXR5cGUgTmV4dXMgKFNuYXBzaG90cyldCgppbWFnZTpodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD17c29uYXJLZXl9Jm1ldHJpYz1uY2xvY1tMaW5lcyBvZiBDb2RlLGxpbms9aHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD17c29uYXJLZXl9XQppbWFnZTpodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD17c29uYXJLZXl9Jm1ldHJpYz1jb3ZlcmFnZVtDb3ZlcmFnZSxsaW5rPWh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9e3NvbmFyS2V5fV0KaW1hZ2U6aHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9e3NvbmFyS2V5fSZtZXRyaWM9c3FhbGVfcmF0aW5nW01haW50YWluYWJpbGl0eSBSYXRpbmcsbGluaz1odHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPXtzb25hcktleX1dCmltYWdlOmh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PXtzb25hcktleX0mbWV0cmljPXJlbGlhYmlsaXR5X3JhdGluZ1tSZWxpYWJpbGl0eSBSYXRpbmcsbGluaz1odHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPXtzb25hcktleX1dCmltYWdlOmh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PXtzb25hcktleX0mbWV0cmljPXNlY3VyaXR5X3JhdGluZ1tTZWN1cml0eSBSYXRpbmcsbGluaz1odHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPXtzb25hcktleX1dCmltYWdlOmh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PXtzb25hcktleX0mbWV0cmljPWFsZXJ0X3N0YXR1c1tRdWFsaXR5IEdhdGUgU3RhdHVzLGxpbms9aHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD17c29uYXJLZXl9XQo= readmeEtag: '"80a51293ea37fd846392a4651a499b2d875d9728"' readmeLastModified: Mon, 24 Jul 2023 11:56:16 GMT repositoryId: 618250421 description: vert.x + Java Bean = bean.x (jsr-380 + schema generator) created: '2023-03-24T04:01:58Z' updated: '2023-07-24T04:37:41Z' language: Kotlin archived: false stars: 0 watchers: 1 forks: 0 owner: zero88 logo: https://avatars.githubusercontent.com/u/10863525?v=4 license: Apache-2.0 repoEtag: '"89b53b20e1f5979f501bba3c15d4ff6ff590fff24797ace2218bce9653885d71"' repoLastModified: Mon, 24 Jul 2023 04:37:41 GMT category: Server foundInMaster: true oldLocations: - https://github.com/zero88/beanx - source: openapi3 tags repository: https://github.com/vanch3d/nvl-slim v3: true repositoryMetadata: base64Readme: >- WyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvdmFuY2gzZC9udmwtc2xpbS5zdmc/YnJhbmNoPW1hc3RlciZzdHlsZT1mbGF0KV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL3ZhbmNoM2QvbnZsLXNsaW0pClshW0dpdEh1YiByZWxlYXNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi90YWcvdmFuY2gzZC9udmwtc2xpbS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vdmFuY2gzZC9udmwtc2xpbS90YWdzKQpbIVtsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL3ZhbmNoM2QvbnZsLXNsaW0uc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3ZhbmNoM2QvbnZsLXNsaW0vYmxvYi9tYXN0ZXIvTElDRU5TRSkKWyFbV2Vic2l0ZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby93ZWJzaXRlLXVwLWRvd24tZ3JlZW4tcmVkL2h0dHAvbnZsLmNhbHF1ZXMzZC5vcmcuc3ZnP2xhYmVsPW52bC5jYWxxdWVzM2Qub3JnJnN0eWxlPWZsYXQpXShodHRwOi8vbnZsLmNhbHF1ZXMzZC5vcmcpCgpudmwtc2xpbQo9PT09PT09PQoKUGVyc29uYWwvcHJvZmVzc2lvbmFsIHdlYnNpdGUKCgojIyBDaGFuZ2Vsb2cKCiMjIFRPRE8KLSBwcm9qZWN0cyBuZWVkIGEgcHJvcGVyIHN1bW1hcnksIHJhdGhlciB0aGF0IHVzaW5nIGRvdGRvdGRvdCAK readmeEtag: '"e72685aa8db8eb29e3a4b663bd474305bea07905"' readmeLastModified: Tue, 06 Mar 2018 15:46:24 GMT repositoryId: 114134828 description: >- Playing around with twig, PHP Slim and several APIs (Zotero, GitHub, LinkedIn, Piwigo, etc.) to get a research projects mashup created: '2017-12-13T15:05:13Z' updated: '2018-04-04T08:53:51Z' language: HTML archived: false stars: 0 watchers: 0 forks: 0 owner: vanch3d logo: https://avatars.githubusercontent.com/u/2743481?v=4 license: MIT repoEtag: '"b4befeb1ca5b8c8cd4f216731f91540b37b1d82dbdb7ca91c3516b5af5e1022b"' repoLastModified: Wed, 04 Apr 2018 08:53:51 GMT foundInMaster: true category: Description Validators id: 55b295a3a4c029013dee377fddb80118 - source: openapi3 tags repository: https://github.com/phyunsj/web-thing-swagger-page v3: true repositoryMetadata: base64Readme: >- IyBNb3ppbGxhIFdlYlRoaW5ncyAtIE9wZW5BUEkgdmVyc2lvbgoKIyMgW1N3YWdnZXIgRWRpdG9yXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1lZGl0b3IpCgpDcmVhdGUvZWRpdCBPcGVuQVBJIHZlcnNpb24gb2YgV2ViIENvbm5lY3RlZCBMYW1wIChFeGFtcGxlIDIpIGZyb20gW01vemlsbGEgV29UXShodHRwczovL2lvdC5tb3ppbGxhLm9yZy93b3QvKQoKR2l0SHViIFBhZ2UgOiBbcGh5dW5zai5naXRodWIuaW8vd2ViLXRoaW5nLXN3YWdnZXItcGFnZV0oaHR0cHM6Ly9waHl1bnNqLmdpdGh1Yi5pby93ZWItdGhpbmctc3dhZ2dlci1wYWdlKSBPbmx5IGBHRVQgYCBtZXRob2QgaXMgcGVybWl0dGVkLgoKPHAgYWxpZ249ImxlZnQiPgo8aW1nIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3BoeXVuc2ovd2ViLXRoaW5nLXN3YWdnZXItcGFnZS9ibG9iL21hc3Rlci9pbWFnZXMvd290LW9wZW5hcGktc3dhZ2dlci1lZGl0b3IucG5nIiB3aWR0aD0iNzAwcHgiLz4KPC9wPgoKIyMjIyBJbnN0YWxsICYgUnVuIHN3YWdnZXIgZWRpdG9yCgpgYGAKJCBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItZWRpdG9yLmdpdAokIGNkIHN3YWdnZXItZWRpdG9yCiQgbnBtIGluc3RhbGwKJCBucG0gcnVuIGJ1aWxkCiQgbnBtIHN0YXJ0IC0+IG9wZW4gdGhlIGJyb3dzZXIgOiBodHRwOi8vbG9jYWxob3N0OjMwMDEKYGBgCgojIyBOb2RlLVJFRCBSRVNUIFNlcnZlcgoKPHAgYWxpZ249ImNlbnRlciI+CjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vcGh5dW5zai93ZWItdGhpbmctc3dhZ2dlci1wYWdlL2Jsb2IvbWFzdGVyL2ltYWdlcy93b3Qtbm9kZS1yZWQucG5nIiB3aWR0aD0iNzUwcHgiLz4KPC9wPgoKCiMjIyMgQ29yZSBub2RlIGNoYW5nZXMgZm9yIHRoaXMgZGVtbwoKLSBgbm9kZXMvY29yZS9pby8yMS1odHRwaW4uanNgIDogY29uc29saWRhdGUgYWxsIGh0dHAgbm9kZXMgaW50byBhIHNpbmdsZSBub2RlIHVzaW5nIGBhbGwoKWAgcm91dGluZyBtZXRob2QgZnJvbSBgZXhwcmVzc2AgKGBSRUQuaHR0cE5vZGVgIGlzIGFuIGluc3RhbmNlIG9mIGBleHByZXNzYCkgaW5zdGVhZCBvZiBjcmVhdGluZyBtdXRpcGxlIGh0dHAgbm9kZXMuIAoKYGBgCmZ1bmN0aW9uIEhUVFBJbihuKSB7CiAgLi4uCiAgdGhpcy5jYWxsYmFjayA9IGZ1bmN0aW9uKHJlcSxyZXMpIHsKICAgICB2YXIgbXNnaWQgPSBSRUQudXRpbC5nZW5lcmF0ZUlkKCk7CiAgICAgcmVzLl9tc2dpZCA9IG1zZ2lkOwogICAgIGlmIChub2RlLm1ldGhvZC5tYXRjaCgvXihwb3N0fGRlbGV0ZXxwdXR8b3B0aW9uc3xwYXRjaCkkLykpIHsKICAgICAgICAgbm9kZS5zZW5kKHtfbXNnaWQ6bXNnaWQscmVxOnJlcSxyZXM6Y3JlYXRlUmVzcG9uc2VXcmFwcGVyKG5vZGUscmVzKSxwYXlsb2FkOnJlcS5ib2R5fSk7CiAgICAgfSBlbHNlIGlmIChub2RlLm1ldGhvZCA9PSAiZ2V0IikgewogICAgICAgICBub2RlLnNlbmQoe19tc2dpZDptc2dpZCxyZXE6cmVxLHJlczpjcmVhdGVSZXNwb25zZVdyYXBwZXIobm9kZSxyZXMpLHBheWxvYWQ6cmVxLnF1ZXJ5fSk7CisgICAgfSBlbHNlIGlmIChub2RlLm1ldGhvZCA9PSAiYWxsIikgIHsKKyAgICAgICAgaWYgKCByZXEubWV0aG9kLm1hdGNoKC9eKFBPU1R8REVMRVRFfFBVVHxPUFRJT05TfFBBVENIKSQvKSkgeworICAgICAgICAgICAgbm9kZS5zZW5kKHtfbXNnaWQ6bXNnaWQscmVxOnJlcSxyZXM6Y3JlYXRlUmVzcG9uc2VXcmFwcGVyKG5vZGUscmVzKSxwYXlsb2FkOnJlcS5ib2R5fSk7CisgICAgICAgIH0gZWxzZSBpZiAocmVxLm1ldGhvZCA9PSAiR0VUIikgeworICAgICAgICAgICAgbm9kZS5zZW5kKHtfbXNnaWQ6bXNnaWQscmVxOnJlcSxyZXM6Y3JlYXRlUmVzcG9uc2VXcmFwcGVyKG5vZGUscmVzKSxwYXlsb2FkOnJlcS5xdWVyeX0pOworICAgICAgICB9CiAgICB9IGVsc2UgeyAKICAgICAgICBub2RlLnNlbmQoe19tc2dpZDptc2dpZCxyZXE6cmVxLHJlczpjcmVhdGVSZXNwb25zZVdyYXBwZXIobm9kZSxyZXMpfSk7CiAgICB9CiAgfTsgICAgICAgICAgCiAgLi4uICAgICAgICAKICBpZiAodGhpcy5tZXRob2QgPT0gImdldCIpIHsKICAuLi4gICAgIAorIH0gZWxzZSBpZiAodGhpcy5tZXRob2QgPT0gImFsbCIpIHsKKyAgICAgUkVELmh0dHBOb2RlLmFsbCh0aGlzLnVybCxjb29raWVQYXJzZXIoKSwuLi4sdGhpcy5jYWxsYmFjayx0aGlzLmVycm9ySGFuZGxlcik7CisgfSAKICAuLi4KfQpgYGAKCi0gYG5vZGVzL2NvcmUvaW8vMjEtaHR0cGluLmh0bWxgIDogYWRkICoqQUxMKiogb3B0aW9uLiAKCmBgYAogIDxkaXYgY2xhc3M9ImZvcm0tcm93Ij4KICAgICAgPGxhYmVsIGZvcj0ibm9kZS1pbnB1dC1tZXRob2QiPjxpIGNsYXNzPSJmYSBmYS10YXNrcyI+PC9pPgogICAgICAgICAgPHNwYW4gZGF0YS1pMThuPSJodHRwaW4ubGFiZWwubWV0aG9kIj48L3NwYW4+PC9sYWJlbD4KICAgICAgPHNlbGVjdCB0eXBlPSJ0ZXh0IiBpZD0ibm9kZS1pbnB1dC1tZXRob2QiIHN0eWxlPSJ3aWR0aDo3MCU7Ij4KICAgICAgPG9wdGlvbiB2YWx1ZT0iZ2V0Ij5HRVQ8L29wdGlvbj4KICAgICAgPG9wdGlvbiB2YWx1ZT0icG9zdCI+UE9TVDwvb3B0aW9uPgogICAgICA8b3B0aW9uIHZhbHVlPSJwdXQiPlBVVDwvb3B0aW9uPgogICAgICA8b3B0aW9uIHZhbHVlPSJkZWxldGUiPkRFTEVURTwvb3B0aW9uPgogICAgICA8b3B0aW9uIHZhbHVlPSJwYXRjaCI+UEFUQ0g8L29wdGlvbj4KKyAgICAgPG9wdGlvbiB2YWx1ZT0iYWxsIj5BTEw8L29wdGlvbj4KICAgICAgPC9zZWxlY3Q+CiAgPC9kaXY+CmBgYAoKc2V0IFVSTCBhcyBge2Jhc2VQYXRofS8qYCB3aXRoICoqQUxMKiogb3B0aW9uLiBiYXNlUGF0aCBpc2AvdGhpbmdzL2xhbXAvdjFgLgoKYGBgClJFRC5odHRwTm9kZS5hbGwoICIvdGhpbmdzL2xhbXAvdjEvKiIgLyogPC0gdGhpcy51cmwgKi8gLCAuLi4sIGhhbmRsZXIpOwogLyogIAogICAvdGhpbmdzL2xhbXAvdjEgICAgICAgPC0gd2lsbCBiZSBpZ25vcmVkCiAgCiAgVGhlIGZvbGxvd2luZyBVUkwgd2lsbCBiZSBhY2NlcHRlZC4KICAgL3RoaW5ncy9sYW1wL3YxLwogICAvdGhpbmdzL2xhbXAvdjEvYWN0aW9ucwogICAvdGhpbmdzL2xhbXAvdjEvcHJvcGVydGllcyAKICovCmBgYAoKLSBgbm9kZXMvY29yZS9jb3JlLzgwLWZ1bmN0aW9uLmpzYCA6IGFsbG93IHRvIHVzZSBgbmVkYmAgbW9kdWxlIGRpcmVjdGx5IGluIGBmdW5jdGlvbmAgbm9kZS4gYWNjZXNzIGAkSE9NRVxhY3Rpb25zLmRiYCBhbmQgYCRIT01FXGV2ZW50cy5kYmAgdG8gZ2VuZXJhdGUgR0VUL1BPU1QgcmVzcG9uc2VzLiBUaGlzIGlzIG5vdCBhbiBpZGVhbCBhcHByb2FjaCBidXQgaXQgaXMgZ29vZCBlbm91Z2ggdG8gdGVzdCBSRVNUIEFQSXMuCgpgYGAKZnVuY3Rpb24gRnVuY3Rpb25Ob2RlKG4pIHsKICAgLi4uCiAgIHZhciBzYW5kYm94ID0gewogICAgICAgICAgICBjb25zb2xlOmNvbnNvbGUsCiAgICAgICAgICAgIHV0aWw6dXRpbCwKICAgICAgICAgICAgQnVmZmVyOkJ1ZmZlciwKICAgICAgICAgICAgRGF0ZTogRGF0ZSwKICAgICAgICAgICAgUkVEOiB7CiAgICAgICAgICAgICAgICB1dGlsOiBSRUQudXRpbAogICAgICAgICAgICB9LAorICAgICAgICAgICAgcmVxdWlyZSA6IHJlcXVpcmUsCiAgIC4uLgp9CmBgYAoKKipFeGFtcGxlKiogOiBmdW5jdGlvbiBub2RlICI1NWQ3NjljNC40NjgzODgiCmBgYApjb25zdCBob21lRGlyID0gcmVxdWlyZSgnb3MnKS5ob21lZGlyKCk7CnZhciBEYXRhc3RvcmUgPSByZXF1aXJlKCduZWRiJyk7CnZhciBkYiA9IG5ldyBEYXRhc3RvcmUoaG9tZURpcisnL2FjdGlvbnMuZGInKTsKZGIubG9hZERhdGFiYXNlKCk7CgovLyBjb252ZXJ0ICJwZW5kaW5nIiB0byAiY29tcGxldGUiIGZvciBtc2cucGF5bG9hZCAoIDwtIHRyYW5zYWNpdGlvbi1pZCkgCmRiLnVwZGF0ZSh7IGhyZWY6IG1zZy5wYXlsb2FkIH0sIHsgJHNldDogeyBzdGF0dXM6ICdjb21wbGV0ZScsdGltZUNvbXBsZXRlZCA6IGRhdGVTdHIrJyAnK3RpbWVTdHIgfSB9LCB7IH0sIGZ1bmN0aW9uIChlcnIsIG51bVJlcGxhY2VkKSB7CiAgICAvLyBEbyBzb21ldGhpbmcgaWYgYW55IAp9KTsKYGBgCgojIyBIb3N0IHN3YWdnZXIgZWRpdG9yIChkaXN0IHZlcnNpb24pIG9uIEdpdEh1YiBQYWdlCgoxLiBjcmVhdGUgYSByZXBvc2l0b3J5CjIuIGdlbmVyYXRlIGB3b3QueWFtbGAKMy4gaW5kZXguaHRtbAoKYGBgCiAgICBjb25zdCBlZGl0b3IgPSBTd2FnZ2VyRWRpdG9yQnVuZGxlKHsKICsgICAgdXJsOiAnd290LnlhbWwnLAogICAgICBkb21faWQ6ICcjc3dhZ2dlci1lZGl0b3InLAogICAgICBsYXlvdXQ6ICdTdGFuZGFsb25lTGF5b3V0JywKICAgICAgcHJlc2V0czogWwogICAgICAgIFN3YWdnZXJFZGl0b3JTdGFuZGFsb25lUHJlc2V0CiAgICAgIF0KICAgIH0pCmBgYAo0LiB1cGxvYWQgYGluZGV4Lmh0bWxgICYgYHdvdC55YW1sYCAmIGBkaXN0LypgCjUuIEdpdEh1YiBSZXBvc2l0b3J5IFNldHRpbmdzCgo8cCBhbGlnbj0ibGVmdCI+CjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vcGh5dW5zai93ZWItdGhpbmctc3dhZ2dlci1wYWdlL2Jsb2IvbWFzdGVyL2ltYWdlcy9naXRodWItcGFnZS1zZXR0aW5nLnBuZyIgd2lkdGg9IjMwMHB4Ii8+CjwvcD4KCjYuIHZpc2l0IGBodHRwczovLzx5b3VyLW5hbWU+LmdpdGh1Yi5pby88cmVwb3NpdG9yeS1uYW1lPmAKCiMjIyMgIFJlbGF0ZWQgUG9zdHMKCi0gW01vemlsbGEgV2ViVGhpbmcgQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vaW90Lm1vemlsbGEub3JnL3dvdC8pCi0gW0RvY3VtZW50aW5nIEFQSXM6IEEgZ3VpZGUgZm9yIHRlY2huaWNhbCB3cml0ZXJzIGFuZCBlbmdpbmVlcnNdKGh0dHBzOi8vaWRyYXRoZXJiZXdyaXRpbmcuY29tL2xlYXJuYXBpZG9jLykKLSBbU3dhZ2dlcl0oaHR0cHM6Ly9zd2FnZ2VyLmlvLykKLSBbc3dhZ2dlci1lZGl0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWVkaXRvcikKLSBbQXN5bmNBUEkgLSBNZXNzc2FnZSBEcml2ZSBBUEldKGh0dHBzOi8vd3d3LmFzeW5jYXBpLmNvbS8pCi0gW1J1biBDaHJvbWUgYnJvd3NlciB3aXRob3V0IENPUlNdKGh0dHBzOi8vYWxmaWxhdG92LmNvbS9wb3N0cy9ydW4tY2hyb21lLXdpdGhvdXQtY29ycy8pIDogZGlzYWJsZSBDT1JTIGlmIHlvdSB3aXNoIHRvIHJ1biBzd2FnZ2VyLWVkaXRvciAmIE5vZGUtUkVEIHNlcnZlciBvbiB0aGUgc2FtZSBtYWNoaW5lIHRvIHByZXZlbnQgZmV0Y2ggZXJyb3IuCi0gW25lZGIgOiBKU09OIGRhdGFiYXNlXShodHRwczovL2dpdGh1Yi5jb20vbG91aXNjaGF0cmlvdC9uZWRiKQo= readmeEtag: '"c509b97c403bfd405b6ba633a31b81bbffa108bf"' readmeLastModified: Wed, 03 Apr 2019 21:14:36 GMT repositoryId: 178950853 description: Mozilla WebThing Specification - OpenAPI version created: '2019-04-01T21:38:05Z' updated: '2023-01-28T11:52:17Z' language: HTML archived: true stars: 0 watchers: 1 forks: 0 owner: phyunsj logo: https://avatars.githubusercontent.com/u/3989465?v=4 repoEtag: '"c6d7d1d5150b6a0516056b20cf215dee1cc30f3cd2cbcea5c6662334a882a776"' repoLastModified: Sat, 28 Jan 2023 11:52:17 GMT foundInMaster: true category: Data Validators id: 23d57efc8ee051d7d995380e2300b6e2 - source: openapi3 tags repository: https://github.com/neidigsi/mvm1914_backend v3: true repositoryMetadata: base64Readme: >- IVtNdXNpa3ZlcmVpbiAxOTE0IE3DvG5zdGVyIGUuIFYuXShyZWFkbWUvYmFubmVyLnBuZykKIyBXb3JkcHJlc3MtUkVTVC1BUEkgfCBNdXNpa3ZlcmVpbiAxOTE0IE3DvG5zdGVyIGUuIFYuClRoZSBtdXNpYyBjbHViICJNdXNpa3ZlcmVpbiAxOTE0IE3DvG5zdGVyIGUuIFYuIiBwcm92aWRlcyBpdHMgbWVtYmVycyBhbmQgaW50ZXJlc3RlZCBwZXJzb25zIHNpbmNlIDIwMTkgYW4gb3duIGFuZHJvaWQgYXBwLiAKVGhpcyByZXBvc2l0b3J5IGNvbnRhaW5zIHRoZSBjdXN0b20gZGV2ZWxvcGVkIHdvcmRwcmVzcy1wbHVnaW4gd2hpY2ggcHJvdmlkZXMgYSByZXN0LWFwaSBmb3IgdGhpcyBtZW50aW9uZWQgYXBwLiAKVGhlIGFuZHJvaWQgYXBwIGNhbiBiZSBkb3dubG9hZGVkIGZyb20gZ29vZ2xlIHBsYXkgYXQgdGhlIGZvbGxvd2luZyBsaW5rOiA8cD4KW0dvb2dsZSBQbGF5IFN0b3JlXShodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM/aWQ9ZGUubXZtMTkxNC5tdXNpa3ZlcmVpbjE5MTRtbnN0ZXJldikKCkluIHRoZSBjdXJyZW50IHZlcnNpb24sIHRoZSBhcHAgYWxsb3dzIHVzZXJzIHRvIGluZm9ybSB0aGVtc2VsdmVzIGFib3V0IG91ciBhc3NvY2lhdGlvbiB0aHJvdWdoIGN1cnJlbnQgYXJ0aWNsZXMgYW5kIGV2ZW50cywgYXMgd2VsbCBhcyBhbiB1cC10by1kYXRlIGdhbGxlcnkuCgojIyBJbnN0YWxsYXRpb24KVG8gaW5zdGFsbCB0aGlzIFdvcmRwcmVzcy1QbHVnaW4gaXQgaXMgbmVjZXNzYXJ5IHRvIGRvd25sb2FkIHRoZSBwcm9ncmFtIGNvZGUgb2YgdGhpcyByZXBvc2l0b3J5IGF0IGZpcnN0LiA8cD4gSW4gdGhlIHNlY29uZCBzdGVwLCB0aGUgZG93bmxvYWRlZApmb2xkZXIgd2l0aCB0aGUgY29kZSBuZWVkcyB0byBiZSBtb3ZlZCB0byB0aGUgZGlyZWN0b3J5ICIvd3AtY29udGVudC9wbHVnaW5zIiBvZiB0aGUgV29yZHByZXNzLUluc3RhbmNlIChlLmcuIHZpYSBhbiBGVFAgY29ubmVjdGlvbikuIDxwPgpGaW5hbGx5LCB0aGUgcGx1Z2luIG5hbWVkICJSRVNUZnVsIEFQSSAtIE11c2lrdmVyZWluIDE5MTQgTcO8bnN0ZXIgZS4gVi4iIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCBpbiB0aGUgc2VjdGlvbiAiUGx1Z2lucyIgb2YgV29yZHByZXNzJ3MgYWRtaW5pc3RyYXRpb24gaW50ZXJmYWNlLgoKIyMgRG9jdW1lbnRhdGlvbgpUaGUgQVBJIGRvY3VtZW50YXRpb24gaXMgd3JpdHRlbiBpbiBPcGVuQVBJIDMgYW5kIGNvdWxkIGJlIGZvdW5kIGluIHRoZSBmb2xkZXIgImRvY3VtZW50YXRpb24iLg== readmeEtag: '"233cfb61ab64d72cfc2d373e19f3faf5ae988e99"' readmeLastModified: Sat, 07 Nov 2020 11:10:06 GMT repositoryId: 247324473 description: >- The music club "Musikverein 1914 Münster e. V." provides its members and interested persons since 2019 an own android app. This repository contains the custom developed wordpress-plugin which provides a rest-api for this mentioned app. The android app can be downloaded from google play. created: '2020-03-14T17:43:07Z' updated: '2021-02-03T13:41:10Z' language: PHP archived: false stars: 0 watchers: 0 forks: 0 owner: neidigsi logo: https://avatars.githubusercontent.com/u/19466013?v=4 repoEtag: '"3b383f9a7e9222d7b5e5b11bef6103e85cacec19eb1a4312db089ebb5006b7ec"' repoLastModified: Wed, 03 Feb 2021 13:41:10 GMT foundInMaster: true category: - Server - Server Implementations id: 74c77a3f133c4710e01284db66670112 - source: openapi3 tags repository: https://github.com/kamo1010/openapigen v3: true repositoryMetadata: repositoryId: 264130346 description: >- This is a sample of how to generate the OpenApi documentation for a RESTful web service implemented in Java 8 created: '2020-05-15T07:46:33Z' updated: '2020-08-26T19:00:11Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: kamo1010 logo: https://avatars.githubusercontent.com/u/43334955?v=4 repoEtag: '"270afac91ef746d8afad708bef78cda99a0b2339766ddf75b3c55dbac0a3ec07"' repoLastModified: Wed, 26 Aug 2020 19:00:11 GMT foundInMaster: true id: 4f9ddc3292fce5d9b3614e500017beb5 oldLocations: - https://github.com/i-mo-k/openapigen - source: openapi3 tags repository: https://github.com/apprexp/govsg2oas v3: true repositoryMetadata: base64Readme: >- IyBHb3ZTRy0yLU9BUwoKPiAqKlRoaXMgcHJvamVjdCBpcyB1bmRlciBoZWF2eSBkZXZlbG9wbWVudC4gRXhwZWN0IG1hbnkgYnJlYWtpbmcgY2hhbmdlcy4qKgoKIVtHaXRIdWJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvYXBwcmV4cC9nb3ZzZzJvYXM/c3R5bGU9ZmxhdC1zcXVhcmUpClshW0NvbnRyaWJ1dG9yIENvdmVuYW50XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0NvbnRyaWJ1dG9yJTIwQ292ZW5hbnQtdjEuNCUyMGFkb3B0ZWQtZmY2OWI0LnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSldKGNvZGUtb2YtY29uZHVjdC5tZCkKWyFbc2VtYW50aWMtcmVsZWFzZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS8lMjAlMjAlRjAlOUYlOTMlQTYlRjAlOUYlOUElODAtc2VtYW50aWMtLXJlbGVhc2UtZTEwMDc5LnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9zZW1hbnRpYy1yZWxlYXNlL3NlbWFudGljLXJlbGVhc2UpCiFbT1NTIExpZmVjeWNsZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9vc3NsaWZlY3ljbGUvYXBwcmV4cC9nb3ZzZzJvYXM/c3R5bGU9ZmxhdC1zcXVhcmUpClshW0ZPU1NBIFN0YXR1c10oaHR0cHM6Ly9hcHAuZm9zc2EuaW8vYXBpL3Byb2plY3RzL2dpdCUyQmdpdGh1Yi5jb20lMkZhcHByZXhwJTJGZ292c2cyb2FzLnN2Zz90eXBlPXNoaWVsZCldKGh0dHBzOi8vYXBwLmZvc3NhLmlvL3Byb2plY3RzL2dpdCUyQmdpdGh1Yi5jb20lMkZhcHByZXhwJTJGZ292c2cyb2FzP3JlZj1iYWRnZV9zaGllbGQpCgpUaGUgR292U0ctMi1PQVMgYWltcyB0byBkb2N1bWVudCBwdWJsaWNseS1hY2Nlc3NpYmxlIGdvdmVybm1lbnQgQVBJcyBpbnRvIGEgd2VsbC1lc3RhYmxpc2hlZCBmb3JtYXQ6IE9wZW5BUEkgMy4KClRoaXMgaXMgdG8gZW5jb3VyYWdlIGF1dG9tYXRpYyBjb2RlIGdlbmVyYXRpb24gYW5kIGluY3JlYXNlZCByZWFkYWJpbGl0eSBvZiBBUEkgZG9jdW1lbnRhdGlvbiBhY3Jvc3MgZ292ZXJubWVudCBhZ2VuY2llcy4KCiMjIEZBUQoKIyMjIENhbiB5b3UgYWRkIERhdGEuZ292LnNnIGR5bmFtaWMgZGF0YXNldHM/CgpDdXJyZW50bHkgbm8uIFRoZXJlJ3MgYWxyZWFkeSBhbiBbb2ZmaWNpYWwgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIChPQVMpIDMuMC4wXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZGF0YWdvdnNnL2RhdGFnb3ZzZy1kYXRhc2V0cy9tYXN0ZXIvZG9jdW1lbnRhdGlvbi9zd2FnZ2VyLnltbCkgZm9yIHRob3NlIGRhdGFzZXRzLiBJZiB0aGVyZSdzIGEgbmV3IHJlYXNvbiBmb3IgdXMgdG8gbWFpbnRhaW4gb3VyIG93biB2ZXJzaW9uIChlLmcuIGl0J3Mgbm8gbG9uZ2VyIG1haW50YWluZWQpLCB0aGVuIFtvcGVuIGFuIGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20vYXBwcmV4cC9nb3ZzZzJvYXMvaXNzdWVzL25ldykgc28gdGFodCB3ZSBjYW4gbG9vayBpbnRvIGl0LgoKIyMjIENhbiB5b3UgYWRkIFggZGF0YXNldD8KCldlJ3JlIGFsd2F5cyBvcGVuIHRvIGFjY2VwdGluZyBuZXcgZGF0YXNldHMhIFtvcGVuIGEgbmV3IGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20vYXBwcmV4cC9nb3ZzZzJvYXMvaXNzdWVzL25ldykgYW5kIHdlJ2xsIHRha2UgYSBsb29rIGF0IGl0LgoKIyMjIFdoeSBhcmUgeW91IG1haW50YWluaW5nIHRoZXNlPwoKVGhlIG1pc3Npb24gb2YgQXBwUkV4cCBpcyB0byBkZXZlbG9wIHRvb2xzIHRvIHNlcnZlIGEgcHVycG9zZSBvZiBtYWtpbmcgdGhlIGxpdmVzIG9mIHlvdXRocyBpbiBTaW5nYXBvcmUgYmV0dGVyLiBXZSBiZWxpZXZlIHRoYXQgdGhpcyBwcm9qZWN0IHdpbGwgaGVscCB1cyBhY2NvbXBsaXNoIHRoaXMgZ29hbC4KCiMjIyBIb3cgb2Z0ZW4gd2lsbCB5b3UgdXBkYXRlIHRoaXM/CgpXaGlsZSB3ZSBjYW5ub3QgbWFrZSBhbnkgZ3VhcmFudGVlLCB3ZSBwcm9taXNlIGl0IHdpbGwgYmUgdXBkYXRlZCBvbiBhIGJlc3QtZWZmb3J0IGJhc2lzLiBXZSB3aWxsIHVzdWFsbHkgcmVzcG9uZCB0byBuZXcgaXNzdWVzIHdpdGhpbiAzIGRheXMuIE90aGVyd2lzZSwgeW91IG1heSByZWFjaCBvdXQgdG8gW1JpZmEgb24gVHdpdHRlcl0oaHR0cHM6Ly90d2l0dGVyLmNvbS9hY2hyaW56YSkgd2hvc2Ugc3BlYXJoZWFkaW5nIHRoZSBwcm9qZWN0LgoKIyMgQ29udHJpYnV0b3JzCgoqIFtSaWZhIEFjaHJpbnphXShodHRwczovL2dpdGh1Yi5jb20vYWNocmluemEpIChNYWluIGNvbnRyaWJ1dG9yKQoKCiMjIExpY2Vuc2UKWyFbRk9TU0EgU3RhdHVzXShodHRwczovL2FwcC5mb3NzYS5pby9hcGkvcHJvamVjdHMvZ2l0JTJCZ2l0aHViLmNvbSUyRmFwcHJleHAlMkZnb3ZzZzJvYXMuc3ZnP3R5cGU9bGFyZ2UpXShodHRwczovL2FwcC5mb3NzYS5pby9wcm9qZWN0cy9naXQlMkJnaXRodWIuY29tJTJGYXBwcmV4cCUyRmdvdnNnMm9hcz9yZWY9YmFkZ2VfbGFyZ2Up readmeEtag: '"214f549f851d5662d5f6228397936ba05992d1a3"' readmeLastModified: Sun, 10 May 2020 17:18:57 GMT repositoryId: 222053059 description: >- A project which aims to convert existing government public-facing APIs into the OpenAPI 3 specs. created: '2019-11-16T05:42:25Z' updated: '2020-05-10T17:19:01Z' language: TypeScript archived: false stars: 0 watchers: 0 forks: 2 owner: apprexp logo: https://avatars.githubusercontent.com/u/34160960?v=4 license: Apache-2.0 repoEtag: '"579185c0807f638e08c7d70a034bd6336b330a53e2b2d604e3e41227ea2e4d87"' repoLastModified: Sun, 10 May 2020 17:19:01 GMT foundInMaster: true category: Server id: 18443aee0439fc15022dfa20fc623dc9 - source: openapi3 tags repository: https://github.com/sam-kruglov/basic v3: true repositoryMetadata: base64Readme: >- IyBCYXNlClRoaXMgaXMgYSBiYXNlL3RlbXBsYXRlIGZvciBhbnkgYXBwIHRoYXQgcmVxdWlyZXMgdXNlci1yb2xlLWJhc2VkIHNlY3VyaXR5LgpJdCBpcyBidWlsdCBvbiB0b3Agb2YgU3ByaW5nIEJvb3QgMi40IHVzaW5nIHRoZSBmb2xsb3dpbmcgdGVjaDoKLSBTUUwgZGF0YWJhc2UgKEgyKQotIHNjaGVtYSB2ZXJzaW9uaW5nIChGbHl3YXkpCi0gT1JNIChIaWJlcm5hdGUpCi0gY2FjaGUgKEhhemVsY2FzdCkKLSBzZXJ2bGV0cyAoU3ByaW5nIE1WQykKLSBKV1Qgc2VjdXJpdHkgKFNwcmluZyBTZWN1cml0eSBhbmQgYSBjb3VwbGUgb2YgU3ByaW5nIE9BdXRoMiBkZXBlbmRlbmNpZXMpCi0gYXV0b21hdGljIE9wZW5BUEkgdjMgZG9jdW1lbnRhdGlvbiAoU3ByaW5nRG9jKSArIFVJIChTd2FnZ2VyKSArIGdlbmVyYXRlZCBBUEkgQ2xpZW50IChvcGVuYXBpLWdlbmVyYXRvcikKLSBpbnRlZ3JhdGlvbiB0ZXN0cyAobm90aGluZyBtb2NrZWQpIG9uIHRoZSBBUEkgbGV2ZWwgdXNpbmcgdGhlIGdlbmVyYXRlZCBjbGllbnQ= readmeEtag: '"ea43fd27ffd41fe894bf9a99d754baa55b19ce0d"' readmeLastModified: Tue, 22 Dec 2020 11:13:56 GMT repositoryId: 313208050 description: Template for role-based secured backend created: '2020-11-16T06:15:40Z' updated: '2021-06-28T17:16:23Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: Sam-Kruglov logo: https://avatars.githubusercontent.com/u/23556336?v=4 repoEtag: '"6539af2ae7ddb39f5fd4200d0684b909683da5faa0e7f2de2650f694277549aa"' repoLastModified: Mon, 28 Jun 2021 17:16:23 GMT foundInMaster: true category: Server Implementations id: c24e0a659c09346626ade2fee44c8fb7 - source: openapi3 tags repository: https://github.com/vanathin/dubai-task v3: true repositoryMetadata: base64Readme: >- IyBNaWNyb3NlcnZpY2U6IGNvbnN1bWVyLXByb2R1Y2VyLXNlcnZpY2UKVGhpcyBpcyBhIGRlbW8gbWljcm9zZXJ2aWNlIGZvciB0aGUgY29uc3VtZXJzLXByb2R1Y2VycyBjdXJyZW50bHkgYWNjZXNzaW5nIGF0b21pYyBjb3VudGVyLgoKIyMjIFRlY2ggc3RhY2sgdXNlZDoKMS4gSmF2YSA4CjIuIFNwcmluZyBCb290IDIuNC4yCjMuIFNwcmluZyBSRVNUIEFQSSAoU3ByaW5nIFdlYikKNC4gTG9tYm9rIDEuMTguMTYKNS4gU3ByaW5nIERhdGEgSlBBICYgTXlTUUwtOAo3LiBEb2NrZXJpemVkIChkb2NrZXItY29tcG9zZS55bWwgYW5kIERvY2tlcmZpbGUgaXMgaW5jbHVkZWQpCjguIFRERCBhcHByb2FjaCB1c2luZyBKVW5pdCA1LCBNb2NraXRvLCBhbmQgU3ByaW5nIEJvb3QgVGVzdAoxMC4gU3ByaW5nIGJvb3Qgc3RhcnRlciB2YWxpZGF0aW9uIGZvciByZXF1ZXN0IHZhbGlkYXRpb24gIAoKIyMjIFN0ZXBzIHRvIHJ1biBtaWNyby1zZXJ2aWNlIGFsb25nIHdpdGggYE15U1FMYCBhcyBjb250YWluZXJzIGluIGRvY2tlciB1c2luZyBgZG9ja2VyIGNvbXBvc2VgOgojIyMjIyBTdGVwIDE6IE9wZW4gdGhlIHRlcm1pbmFsIChvcikgQ29tbWFuZCBQcm9tcHQKIyMjIyMgU3RlcCAyOiBFbnRlciB0aGUgcHJvamVjdCBkaXJlY3RvcnksIAogICAgY2QgPHByb2plY3RfZGlyZWN0b3J5PgoKIyMjIyMgU3RlcCAzOiBUbyBjbGVhbiBhbmQgcGFja2FnZSB0aGUgbWljcm8tc2VydmljZSBsb2NhbGx5CiAgICBtdm53IGNsZWFuIHBhY2thZ2UKCiMjIyMjIFN0ZXAgNDogVXNlIGBkb2NrZXIgY29tcG9zZWAgdG8gYnVpbGQgYW5kIHJ1biBib3RoIE15U1FMICYgbWljcm8tc2VydmljZSBhcyBhIGRvY2tlciBjb250YWluZXJzOgogICAgZG9ja2VyLWNvbXBvc2UgdXAgLS1idWlsZApOb3RlOiBBYm92ZSBkb2NrZXIgY29tcG9zZSBjb21tYW5kIHdpbGwgcnVuIHRoZSBjb250YWluZXJzIG5hbWVseSwKICAgMS4gYGVrYXItbXlzcWxgIGNvbnRhaW5lciBmb3IgbXlzcWwgYW5kIGl0cyBwb3J0IGlzIGAzMzA2YAogICAyLiBgZWthci1wcm9kdWNlci1jb25zdW1lci1zZXJ2aWNlYCBjb250YWluZXIgZm9yIG1pY3Jvc2VydmljZSBhbmQgaXRzIHBvcnQgaXMgYDgwODBgCgotLS0KCiMjIyBPcGVuQVBJIDMuMCBEb2N1bWVudGF0aW9uIFVSTDoKCmh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9zd2FnZ2VyLXVpL2luZGV4Lmh0bWw/Y29uZmlnVXJsPS92My9hcGktZG9jcy9zd2FnZ2VyLWNvbmZpZyAgCiFbQVBJX0RvY3VtZW50YXRpb24gaW1nIG1pc3NpbmddKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS92YW5hdGhpbi9la2FyLXByb2R1Y2VyLWNvbnN1bWVyLXNlcnZpY2UvbWFpbi9pbWcvc3dhZ2dlci11aS5qcGcpCk5vdGU6IEFsc28gW1Bvc3RtYW4gQ29sbGVjdGlvbl0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3ZhbmF0aGluL2VrYXItcHJvZHVjZXItY29uc3VtZXItc2VydmljZS9tYWluL0VrYXIucG9zdG1hbl9jb2xsZWN0aW9uLmpzb24pIGhhcyBiZWVuIHB1c2hlZCBpbnRvIHRoZSByZXBvc2l0b3J5IGZvciB5b3VyIHJlZmVyZW5jZS4KCi0tLQoKIyMjIE15U1FMIERhdGFiYXNlIENMSSB0byB2ZXJpZnkgdGhlIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uOgojIyMjIyBQcmVyZXF1aXNpdGU6IApEb2NrZXIgaGFzIHRvIGJlIHRoZXJlIG9uIHRoZSBob3N0IG1hY2hpbmUKIyMjIyMgU3RlcCAxOiBPcGVuIGEgbmV3IHRlcm1pbmFsIChvcikgbmV3IENvbW1hbmQgUHJvbXB0ICh3aXRob3V0IGRpc3R1cmJpbmcgdGhlIGVhcmxpZXIgb25lKQojIyMjIyBTdGVwIDI6IENvbm5lY3QgdG8gYGVrYXItbXlzcWxgIGNvbnRhaW5lciB1c2luZyBkb2NrZXIgY2xpIGNvbW1hbmQsIAogICAgZG9ja2VyIGV4ZWMgLWl0IGVrYXItbXlzcWwgL2Jpbi9iYXNoCiMjIyMjIFN0ZXAgMzogQ29ubmVjdCB0byBteXNxbCBzZXJ2ZXIKICAgIG15c3FsIC11c2EgLXBwYXNzd29yZCAtaCBsb2NhbGhvc3QgLVAzMzA2CiMjIyMjIFN0ZXAgNDogRGlzcGxheSBhbGwgdGhlIGF2YWlsYWJsZSBkYXRhYmFzZXMsCiAgICBzaG93IGRhdGFiYXNlczsKIyMjIyMgU3RlcCA1OiBTd2l0Y2ggdG8gZWthcmRiCiAgICB1c2UgZWthcmRiOwojIyMjIyBTdGVwIDY6IExpc3QgYWxsIHRoZSBhdmFpbGFibGUgdGFibGVzCiAgICBzaG93IHRhYmxlczsKIyMjIyMgU3RlcCA3OiBSdW4gdGhlIHNlbGVjdCBxdWVyaWVzIHRvIHZlcmlmeSB0aGUgZGF0YQogICAgc2VsZWN0ICogZnJvbSByZXF1ZXN0X2xvZzsgc2VsZWN0ICogZnJvbSBjb3VudGVyX2xvZzsKTm90ZTogUHJlc2VydmUgdGhpcyBzdGF0ZSB1bnRpbCB5b3UgY29tcGxldGUgeW91ciB0ZXN0aW5nLgojIyMjIyBTdGVwIDg6IEV4aXQgZnJvbSB0aGUgbXlzcWwgY2xpCiAgICBleGl0CiMjIyMjIFN0ZXAgOTogRXhpdCBmcm9tIHRoZSBteXNxbCBjb250YWluZXIKICAgIGV4aXQKCiFbTXlTUUwgQ0xJIE91dHB1dF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3ZhbmF0aGluL2VrYXItcHJvZHVjZXItY29uc3VtZXItc2VydmljZS9tYWluL2ltZy9teXNxbF9kYl9sb2cuanBnKQoKLS0tCgoKIyMjIFByb2dyYW0gb3V0cHV0cwoKIyMjIyBMZXNzIGNvbnN1bWVycyBhbmQgbW9yZSBwcm9kdWNlcnMKIVtMZXNzIGNvbnN1bWVycyBhbmQgbW9yZSBwcm9kdWNlcnNdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS92YW5hdGhpbi9la2FyLXByb2R1Y2VyLWNvbnN1bWVyLXNlcnZpY2UvbWFpbi9pbWcvTW9yZV9Qcm9kdWNlcl9MZXNzX0NvbnN1bWVyLkpQRykKCiMjIyMgTW9yZSBjb25zdW1lcnMgYW5kIGxlc3MgcHJvZHVjZXJzCiFbTW9yZSBjb25zdW1lcnMgYW5kIGxlc3MgcHJvZHVjZXJzXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdmFuYXRoaW4vZWthci1wcm9kdWNlci1jb25zdW1lci1zZXJ2aWNlL21haW4vaW1nL0xlc3NfUHJvZHVjZXJfTW9yZV9Db25zdW1lci5KUEcpCgojIyMjIEVxdWFsIGNvbnN1bWVycyBhbmQgcHJvZHVjZXJzCiFbRXF1YWwgY29uc3VtZXJzIGFuZCBwcm9kdWNlcnNdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS92YW5hdGhpbi9la2FyLXByb2R1Y2VyLWNvbnN1bWVyLXNlcnZpY2UvbWFpbi9pbWcvRXF1YWxfUHJvZHVjZXJfQ29uc3VtZXIuSlBHKQoKLS0tCg== readmeEtag: '"b36de953644fc2470e15a5a8737b8f1c45aaba09"' readmeLastModified: Mon, 18 Jan 2021 00:47:53 GMT repositoryId: 330501920 description: Demo project for producer & consumer with counters, created: '2021-01-17T22:46:03Z' updated: '2021-01-29T14:43:46Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: vanathin logo: https://avatars.githubusercontent.com/u/10528013?v=4 repoEtag: '"be51ad555c2ee012cd42f44f7e2e898bd9d336442fcb12b59bf6cd1ee55ebab9"' repoLastModified: Fri, 29 Jan 2021 14:43:46 GMT foundInMaster: true category: - Code Generators - Server Implementations id: 98c89ef6075b3eb38e72cd151757380a - source: IMPLEMENTATIONS.md name: swagger-models homepage: >- https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-models language: Java source_description: OpenAPI 3.0 Java Pojos category: - Low-level Tooling - Code Generators foundInMaster: true repository: >- https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-models repositoryMetadata: base64Readme: >- IyBTd2FnZ2VyIENvcmUgPGltZyBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLmlvL3dvcmRwcmVzcy9pbWFnZXMvYXNzZXRzL1NXLWxvZ28tY2xyLnBuZyIgaGVpZ2h0PSI1MCIgYWxpZ249InJpZ2h0Ij4KCioqTk9URToqKiBJZiB5b3UncmUgbG9va2luZyBmb3IgU3dhZ2dlciBDb3JlIDEuNS5YIGFuZCBPcGVuQVBJIDIuMCwgcGxlYXNlIHJlZmVyIHRvIFsxLjUgYnJhbmNoXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvMS41KS4KCioqTk9URToqKiBTaW5jZSB2ZXJzaW9uIDIuMS43LCBTd2FnZ2VyIENvcmUgYWxzbyBzdXBwb3J0cyB0aGUgSmFrYXJ0YSBuYW1lc3BhY2UuIFRoZXJlIGFyZSBhIHBhcmFsbGVsIHNldCBvZiBhcnRpZmFjdHMgd2l0aCB0aGUgYC1qYWthcnRhYCBzdWZmaXgsIHByb3ZpZGluZyB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IGFzIHRoZSB1bnN1ZmZpeGVkIChpLmUuOiBgamF2YXhgKSBhcnRpZmFjdHMuClBsZWFzZSBzZWUgdGhlIFtXaWtpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3dpa2kvU3dhZ2dlci0yLlgtLS1HZXR0aW5nLXN0YXJ0ZWQpIGZvciBtb3JlIGRldGFpbHMuCgoqKk5PVEU6KiogU2luY2UgdmVyc2lvbiAyLjIuMCBTd2FnZ2VyIENvcmUgc3VwcG9ydHMgT3BlbkFQSSAzLjE7IHNlZSBbdGhpcyBwYWdlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3dpa2kvU3dhZ2dlci0yLlgtLS1PcGVuQVBJLTMuMSkgZm9yIGRldGFpbHMKCiFbQnVpbGQgVGVzdCBEZXBsb3ldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvd29ya2Zsb3dzL0J1aWxkJTIwVGVzdCUyMERlcGxveSUyMG1hc3Rlci9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcikKWyFbTWF2ZW4gQ2VudHJhbF0oaHR0cHM6Ly9tYXZlbi1iYWRnZXMuaGVyb2t1YXBwLmNvbS9tYXZlbi1jZW50cmFsL2lvLnN3YWdnZXIuY29yZS52My9zd2FnZ2VyLXByb2plY3QvYmFkZ2Uuc3ZnP3N0eWxlPXBsYXN0aWMpXShodHRwczovL21hdmVuLWJhZGdlcy5oZXJva3VhcHAuY29tL21hdmVuLWNlbnRyYWwvaW8uc3dhZ2dlci5jb3JlLnYzL3N3YWdnZXItcHJvamVjdCkKClN3YWdnZXIgQ29yZSBpcyBhIEphdmEgaW1wbGVtZW50YXRpb24gb2YgdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbi4gQ3VycmVudCB2ZXJzaW9uIHN1cHBvcnRzICpKQVgtUlMyKiAoYGphdmF4YCBhbmQgYGpha2FydGFgIG5hbWVzcGFjZXMpLgoKIyMgR2V0IHN0YXJ0ZWQgd2l0aCBTd2FnZ2VyIENvcmUhClNlZSB0aGUgZ3VpZGUgb24gW2dldHRpbmcgc3RhcnRlZCB3aXRoIFN3YWdnZXIgQ29yZV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS93aWtpL1N3YWdnZXItMi5YLS0tR2V0dGluZy1zdGFydGVkKSB0byBnZXQgc3RhcnRlZCB3aXRoIGFkZGluZyBTd2FnZ2VyIHRvIHlvdXIgQVBJLgoKIyMgU2VlIHRoZSBXaWtpIQpUaGUgW2dpdGh1YiB3aWtpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3dpa2kpIGNvbnRhaW5zIGRvY3VtZW50YXRpb24sIHNhbXBsZXMsIGNvbnRyaWJ1dGlvbnMsIGV0Yy4gU3RhcnQgdGhlcmUuCgojIyBDb21wYXRpYmlsaXR5ClRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gaGFzIHVuZGVyZ29uZSBzZXZlcmFsIHJldmlzaW9ucyBzaW5jZSBpbml0aWFsIGNyZWF0aW9uIGluIDIwMTAuICBUaGUgU3dhZ2dlciBDb3JlIHByb2plY3QgaGFzIHRoZSBmb2xsb3dpbmcgY29tcGF0aWJpbGl0aWVzIHdpdGggdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbjoKClN3YWdnZXIgY29yZSBWZXJzaW9uICAgICAgfCBSZWxlYXNlIERhdGUgfCBPcGVuQVBJIFNwZWMgY29tcGF0aWJpbGl0eSB8IE5vdGVzIHwgU3RhdHVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tIHwgLS0tLQoyLjIuNDIgKCoqY3VycmVudCBzdGFibGUqKil8IDIwMjYtMDEtMTkgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuNDJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjQyKSB8IFN1cHBvcnRlZAoyLjIuNDEgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMTEtMjQgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuNDFdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjQxKSB8IFN1cHBvcnRlZAoyLjIuNDAgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMTAtMjggICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuNDBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjQwKSB8IFN1cHBvcnRlZAoyLjIuMzkgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMTAtMTMgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjM5KSB8IFN1cHBvcnRlZAoyLjIuMzggICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDktMjkgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzhdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjM4KSB8IFN1cHBvcnRlZAoyLjIuMzcgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDktMTYgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzddKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjM3KSB8IFN1cHBvcnRlZAoyLjIuMzYgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDgtMTggICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjM2KSB8IFN1cHBvcnRlZAoyLjIuMzUgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDctMzEgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjM1KSB8IFN1cHBvcnRlZAoyLjIuMzQgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDYtMjAgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjM0KSB8IFN1cHBvcnRlZAoyLjIuMzMgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDYtMTIgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjMzKSB8IFN1cHBvcnRlZAoyLjIuMzIgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDUtMTQgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjMyKSB8IFN1cHBvcnRlZAoyLjIuMzEgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDUtMTMgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzFdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjMxKSB8IFN1cHBvcnRlZAoyLjIuMzAgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDQtMDcgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMzBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjMwKSB8IFN1cHBvcnRlZAoyLjIuMjkgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDMtMTAgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjI5KSB8IFN1cHBvcnRlZAoyLjIuMjggICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMDEtMTYgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjhdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjI4KSB8IFN1cHBvcnRlZAoyLjIuMjcgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMTItMTEgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjddKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjI3KSB8IFN1cHBvcnRlZAoyLjIuMjYgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMTEtMTggICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjI2KSB8IFN1cHBvcnRlZAoyLjIuMjUgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMTAtMDIgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjI1KSB8IFN1cHBvcnRlZAoyLjIuMjQgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMDktMjMgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjI0KSB8IFN1cHBvcnRlZAoyLjIuMjMgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMDgtMjggICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjIzKSB8IFN1cHBvcnRlZAoyLjIuMjIgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMDUtMTUgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjIyKSB8IFN1cHBvcnRlZAoyLjIuMjEgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMDMtMjAgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjIxKSB8IFN1cHBvcnRlZAoyLjIuMjAgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMTItMTkgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjIwKSB8IFN1cHBvcnRlZAoyLjIuMTkgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMTEtMTAgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjE5KSB8IFN1cHBvcnRlZAoyLjIuMTggICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMTAtMjUgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMThdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjE4KSB8IFN1cHBvcnRlZAoyLjIuMTcgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMTAtMTIgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTddKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjE3KSB8IFN1cHBvcnRlZAoyLjIuMTYgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDktMTggICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjE2KSB8IFN1cHBvcnRlZAoyLjIuMTUgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDctMDggICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjE1KSB8IFN1cHBvcnRlZAoyLjIuMTQgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDYtMjYgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjE0KSB8IFN1cHBvcnRlZAoyLjIuMTMgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDYtMjQgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjEzKSB8IFN1cHBvcnRlZAoyLjIuMTIgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDYtMTMgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjEyKSB8IFN1cHBvcnRlZAoyLjIuMTEgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDYtMDEgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTFdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjExKSB8IFN1cHBvcnRlZAoyLjIuMTAgICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDUtMTUgICB8IDMueCAgICAgICAgICAgfCBbdGFnIHYyLjIuMTBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjEwKSB8IFN1cHBvcnRlZAoyLjIuOSAgICAgICAgICAgICAgICAgICAgIHwgMjAyMy0wMy0yMCAgfCAzLnggICAgICAgICAgIHwgW3RhZyB2Mi4yLjldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4yLjggICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDEtMDYgIHwgMy54ICAgICAgICAgICB8IFt0YWcgdjIuMi44XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMi44KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMi43ICAgICAgICAgICAgICAgICAgICAgfCAyMDIyLTExLTE1ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjIuN10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjIuNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjIuNiAgICAgICAgICAgICAgICAgICAgIHwgMjAyMi0xMS0wMiAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4yLjZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4yLjUgICAgICAgICAgICAgICAgICAgICB8IDIwMjItMTEtMDIgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMi41XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMi41KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMi40ICAgICAgICAgICAgICAgICAgICAgfCAyMDIyLTEwLTE2ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjIuNF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjIuNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjIuMyAgICAgICAgICAgICAgICAgICAgIHwgMjAyMi0wOS0yNyAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4yLjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4yLjIgICAgICAgICAgICAgICAgICAgICB8IDIwMjItMDctMjAgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMi4yXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMi4yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMi4xICAgICAgICAgICAgICAgICAgICAgfCAyMDIyLTA2LTE1ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjIuMV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjIuMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjIuMCAgICAgICAgICAgICAgICAgICAgIHwgMjAyMi0wNC0wNCAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4yLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4yLjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4xLjEzICAgICAgICAgICAgICAgICAgICAgfCAyMDIyLTAyLTA3ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjEuMTNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4xLjEzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjEuMTIgICAgICAgICAgICAgICAgICAgICB8IDIwMjEtMTItMjMgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMS4xMl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjEuMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMS4xMSAgICAgICAgICAgICAgICAgICAgIHwgMjAyMS0wOS0yOSAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4xLjExXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMS4xMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4xLjEwICAgICAgICAgICAgICAgICAgICAgfCAyMDIxLTA2LTI4ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjEuMTBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4xLjEwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjEuOSAgICAgICAgICAgICAgICAgICAgIHwgMjAyMS0wNC0yMCAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4xLjldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4xLjkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4xLjggICAgICAgICAgICAgICAgICAgICB8IDIwMjEtMDQtMTggIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMS44XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMS44KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMS43ICAgICAgICAgICAgICAgICAgICAgfCAyMDIxLTAyLTE4ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjEuN10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjEuNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjEuNiAgICAgICAgICAgICAgICAgICAgIHwgMjAyMC0xMi0wNCAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4xLjZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4xLjYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4xLjUgICAgICAgICAgICAgICAgICAgICB8IDIwMjAtMTAtMDEgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMS41XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMS41KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMS40ICAgICAgICAgICAgICAgICAgICAgfCAyMDIwLTA3LTI0ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjEuNF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjEuNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjEuMyAgICAgICAgICAgICAgICAgICAgIHwgMjAyMC0wNi0yNyAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4xLjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4xLjMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4xLjIgICAgICAgICAgICAgICAgICAgICB8IDIwMjAtMDQtMDEgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMS4yXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMS4yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMS4xICAgICAgICAgICAgICAgICAgICAgfCAyMDIwLTAxLTAyICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjEuMV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjEuMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjEuMCAgICAgICAgICAgICAgICAgICAgIHwgMjAxOS0xMS0xNiAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4xLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4xLjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4wLjEwICAgICAgICAgICAgICAgICAgICB8IDIwMTktMTAtMTEgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMC4xMF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjAuMTApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMC45ICAgICAgICAgICAgICAgICAgICAgfCAyMDE5LTA4LTIyICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjAuOV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjAuOSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjAuOCAgICAgICAgICAgICAgICAgICAgIHwgMjAxOS0wNC0yNCAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4wLjhdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4wLjgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4wLjcgICAgICAgICAgICAgICAgICAgICB8IDIwMTktMDItMTggIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMC43XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMC43KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMC42ICAgICAgICAgICAgICAgICAgICAgfCAyMDE4LTExLTI3ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjAuNl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjAuNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjAuNSAgICAgICAgICAgICAgICAgICAgIHwgMjAxOC0wOS0xOSAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4wLjVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4wLjUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4wLjQgICAgICAgICAgICAgICAgICAgICB8IDIwMTgtMDktMDUgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMC40XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMC40KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMC4zICAgICAgICAgICAgICAgICAgICAgfCAyMDE4LTA4LTA5ICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjAuM10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjAuMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjYuMTQgKCoqY3VycmVudCBzdGFibGUqKil8IDIwMjQtMDMtMTkgICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjYuMTRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS42LjE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjYuMTMgICAgICAgICAgICAgICAgICAgIHwgMjAyNC0wMS0yNiAgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNi4xM10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjYuMTMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNi4xMiAgICAgICAgICAgICAgICAgICAgfCAyMDIzLTEwLTE0ICAgfCAyLjAgICAgICAgICAgIHwgW3RhZyB2MS42LjEyXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjEuNi4xMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMS42LjExICAgICAgICAgICAgICAgICAgICB8IDIwMjMtMDUtMTUgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNi4xMV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjYuMTEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNi4xMCAgICAgICAgICAgICAgICAgICAgfCAyMDIzLTAzLTIxICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjYuMTBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS42LjEwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjYuOSAgICAgICAgICAgICAgICAgICAgIHwgMjAyMi0xMS0xNSAgfCAyLjAgICAgICAgICAgIHwgW3RhZyB2MS42LjldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS42LjkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMS42LjggICAgICAgICAgICAgICAgICAgICB8IDIwMjItMTAtMTYgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNi44XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjEuNi44KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNi43ICAgICAgICAgICAgICAgICAgICAgfCAyMDIyLTA5LTI3ICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjYuN10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjYuNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjYuNiAgICAgICAgICAgICAgICAgICAgIHwgMjAyMi0wNC0wNCAgfCAyLjAgICAgICAgICAgIHwgW3RhZyB2MS42LjZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS42LjYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMS42LjUgICAgICAgICAgICAgICAgICAgICB8IDIwMjItMDItMDcgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNi41XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjEuNi41KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNi40ICAgICAgICAgICAgICAgICAgICAgfCAyMDIxLTEyLTIzICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjYuNF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjYuNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjYuMyAgICAgICAgICAgICAgICAgICAgIHwgMjAyMS0wOS0yOSAgfCAyLjAgICAgICAgICAgIHwgW3RhZyB2MS42LjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS42LjMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMS42LjIgICAgICAgICAgICAgICAgICAgICB8IDIwMjAtMDctMDEgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNi4yXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjEuNi4yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNi4xICAgICAgICAgICAgICAgICAgICAgfCAyMDIwLTA0LTAxICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjYuMV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjYuMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjYuMCAgICAgICAgICAgICAgICAgICAgIHwgMjAxOS0xMS0xNiAgfCAyLjAgICAgICAgICAgIHwgW3RhZyB2MS42LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS42LjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMS41LjI0ICAgICAgICAgICAgICAgICAgICB8IDIwMTktMTAtMTEgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNS4yNF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjUuMjQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNS4yMyAgICAgICAgICAgICAgICAgICAgfCAyMDE5LTA4LTIyICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjUuMjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS41LjIzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjUuMjIgICAgICAgICAgICAgICAgICAgIHwgMjAxOS0wMi0xOCAgfCAyLjAgICAgICAgICAgIHwgW3RhZyB2MS41LjIyXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjEuNS4yMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMS41LjIxICAgICAgICAgICAgICAgICAgICB8IDIwMTgtMDgtMDkgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNS4yMV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjUuMjEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNS4yMCAgICAgICAgICAgICAgICAgICAgfCAyMDE4LTA1LTIzICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjUuMjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS41LjIwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjAuMiAgICAgICAgICAgICAgICAgICAgIHwgMjAxOC0wNS0yMyAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4wLjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4wLjIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4wLjEgICAgICAgICAgICAgICAgICAgICB8IDIwMTgtMDQtMTYgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMC4xXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMC4xKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNS4xOSAgICAgICAgICAgICAgICAgICAgfCAyMDE4LTA0LTE2ICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjUuMTldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS41LjE5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjAuMCAgICAgICAgICAgICAgICAgICAgIHwgMjAxOC0wMy0yMCAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4wLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4wLjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4wLjAtcmM0ICAgICAgICAgICAgICAgICB8IDIwMTgtMDEtMjIgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMC4wLXJjNF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjAuMC1yYzQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjIuMC4wLXJjMyAgICAgICAgICAgICAgICAgfCAyMDE3LTExLTIxICB8IDMuMCAgICAgICAgICAgfCBbdGFnIHYyLjAuMC1yYzNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92Mi4wLjAtcmMzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoyLjAuMC1yYzIgICAgICAgICAgICAgICAgIHwgMjAxNy0wOS0yOSAgfCAzLjAgICAgICAgICAgIHwgW3RhZyB2Mi4wLjAtcmMyXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjIuMC4wLXJjMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMi4wLjAtcmMxICAgICAgICAgICAgICAgICB8IDIwMTctMDgtMTcgIHwgMy4wICAgICAgICAgICB8IFt0YWcgdjIuMC4wLXJjMV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YyLjAuMC1yYzEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuNS4xOCAgICAgICAgICAgICAgICAgICAgfCAyMDE4LTAxLTIyICB8IDIuMCAgICAgICAgICAgfCBbdGFnIHYxLjUuMThdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS41LjE4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjUuMTcgICAgICAgICAgICAgICAgICAgIHwgMjAxNy0xMS0yMSAgfCAyLjAgICAgICAgICAgIHwgW3RhZyB2MS41LjE3XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvdjEuNS4xNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQKMS41LjE2ICAgICAgICAgICAgICAgICAgICB8IDIwMTctMDctMTUgIHwgMi4wICAgICAgICAgICB8IFt0YWcgdjEuNS4xNl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29yZS90cmVlL3YxLjUuMTYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkCjEuMy4xMiAgICAgICAgICAgICAgICAgICAgfCAyMDE0LTEyLTIzICB8IDEuMiAgICAgICAgICAgfCBbdGFnIHYxLjMuMTJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS4zLjEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZAoxLjIuNCAgICAgICAgICAgICAgICAgICAgIHwgMjAxMy0wNi0xOSAgfCAxLjEgICAgICAgICAgIHwgW3RhZyBzd2FnZ2VyLXByb2plY3RfMi4xMC4wLTEuMi40XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb3JlL3RyZWUvc3dhZ2dlci1wcm9qZWN0XzIuMTAuMC0xLjIuNCkgfCBEZXByZWNhdGVkCjEuMC4wICAgICAgICAgICAgICAgICAgICAgfCAyMDExLTEwLTE2ICB8IDEuMCAgICAgICAgICAgfCBbdGFnIHYxLjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvdHJlZS92MS4wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlcHJlY2F0ZWQKCgojIyMgQ2hhbmdlIEhpc3RvcnkKSWYgeW91J3JlIGludGVyZXN0ZWQgaW4gdGhlIGNoYW5nZSBoaXN0b3J5IG9mIHN3YWdnZXIgYW5kIHRoZSBTd2FnZ2VyIENvcmUgZnJhbWV3b3JrLCBzZWUgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvcmUvcmVsZWFzZXMpLgoKIyMjIFByZXJlcXVpc2l0ZXMKWW91IG5lZWQgdGhlIGZvbGxvd2luZyBpbnN0YWxsZWQgYW5kIGF2YWlsYWJsZSBpbiB5b3VyICRQQVRIOgoKKiBKYXZhIDExCiogQXBhY2hlIG1hdmVuIDMuMC40IG9yIGdyZWF0ZXIKKiBKYWNrc29uIDIuNC41IG9yIGdyZWF0ZXIKCgojIyMgVG8gYnVpbGQgZnJvbSBzb3VyY2UgKGN1cnJlbnRseSAyLjIuNDMtU05BUFNIT1QpCmBgYAojIGZpcnN0IHRpbWUgYnVpbGRpbmcgbG9jYWxseQptdm4gLU4KYGBgCgpTdWJzZXF1ZW50IGJ1aWxkczoKYGBgCm12biBpbnN0YWxsCmBgYAoKVGhpcyB3aWxsIGJ1aWxkIHRoZSBtb2R1bGVzLgoKT2YgY291cnNlIGlmIHlvdSBkb24ndCB3YW50IHRvIGJ1aWxkIGxvY2FsbHkgeW91IGNhbiBncmFiIGFydGlmYWN0cyBmcm9tIG1hdmVuIGNlbnRyYWw6CgpgaHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL2lvL3N3YWdnZXIvY29yZS9gCgojIyBTYW1wbGUgQXBwcwpUaGUgc2FtcGxlcyBoYXZlIG1vdmVkIHRvIFthIG5ldyByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1zYW1wbGVzL3RyZWUvMi4wKSBhbmQgY29udGFpbiB2YXJpb3VzIGludGVncmF0aW9ucyBhbmQgY29uZmlndXJhdGlvbnMuCgojIyBTZWN1cml0eSBjb250YWN0CgpQbGVhc2UgZGlzY2xvc2UgYW55IHNlY3VyaXR5LXJlbGF0ZWQgaXNzdWVzIG9yIHZ1bG5lcmFiaWxpdGllcyBieSBlbWFpbGluZyBbc2VjdXJpdHlAc3dhZ2dlci5pb10obWFpbHRvOnNlY3VyaXR5QHN3YWdnZXIuaW8pLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBwdWJsaWMgaXNzdWUgdHJhY2tlci4K readmeEtag: '"27cbc7c379b4a3e20ecccaaa8cddff40247bffe5"' readmeLastModified: Mon, 19 Jan 2026 14:58:21 GMT repositoryId: 2003641 description: >- Examples and server integrations for generating the Swagger API Specification, which enables easy access to your REST API created: '2011-07-05T23:44:11Z' updated: '2026-02-06T03:05:35Z' language: Java archived: false stars: 7516 watchers: 307 forks: 2249 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 repoEtag: '"2d6e76914a17c8cb9b177d2f09ecbdf7fcccb32aefc4c38e0d55c3fef7ddb502"' repoLastModified: Fri, 06 Feb 2026 03:05:35 GMT id: 266d60df2d48ad8a47539de3c1071f3a - source: IMPLEMENTATIONS.md name: Microsoft.OpenApi.net homepage: https://github.com/microsoft/openapi.net/ language: dotnet source_description: C# based parser with definition validation and migration support from V2 category: - Low-level Tooling - Parsers foundInMaster: true repository: https://github.com/microsoft/openapi.net/ repositoryMetadata: base64Readme: >- PCEtLSB1c2luZyB0aGUgcmF3IGltYWdlIFVSTCBzbyBpdCBkaXNwbGF5cyBjb3JyZWN0bHkgb24gbnVnZXQub3JnIC0tPgohW0NhdGVnb3J5IG92ZXJ2aWV3IHNjcmVlbnNob3RdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9taWNyb3NvZnQvT3BlbkFQSS5ORVQvbWFpbi9kb2NzL2ltYWdlcy9vYWluZXQucG5nICJNaWNyb3NvZnQgKyBPcGVuQVBJID0gTG92ZSIpCgojIE9wZW5BUEkuTkVUCgp8UGFja2FnZXxOdWdldHwKfC0tfC0tfAp8TW9kZWxzIGFuZCBXcml0ZXJzfFshW251Z2V0XShodHRwczovL2ltZy5zaGllbGRzLmlvL251Z2V0L3YvTWljcm9zb2Z0Lk9wZW5BcGkuc3ZnKV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5PcGVuQXBpLykgfAp8WWFtbFJlYWRlciB8IFshW251Z2V0XShodHRwczovL2ltZy5zaGllbGRzLmlvL251Z2V0L3YvTWljcm9zb2Z0Lk9wZW5BcGkuWWFtbFJlYWRlci5zdmcpXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lk9wZW5BcGkuWWFtbFJlYWRlci8pIHwKfEhpZGl8WyFbbnVnZXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvdi9NaWNyb3NvZnQuT3BlbkFwaS5IaWRpLnN2ZyldKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuT3BlbkFwaS5IaWRpLykKClRoZSAqKk9wZW5BUEkuTkVUKiogU0RLIGNvbnRhaW5zIGEgdXNlZnVsIG9iamVjdCBtb2RlbCBmb3IgT3BlbkFQSSBkb2N1bWVudHMgaW4gLk5FVCBhbG9uZyB3aXRoIGNvbW1vbiBzZXJpYWxpemVycyB0byBleHRyYWN0IHJhdyBPcGVuQVBJIEpTT04gYW5kIFlBTUwgZG9jdW1lbnRzIGZyb20gdGhlIG1vZGVsLgoKKipTZWUgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGFuZCBpdHMgaGlzdG9yeSBoZXJlOiA8YSBocmVmPSJodHRwczovL3d3dy5vcGVuYXBpcy5vcmciPk9wZW5BUEkgSW5pdGlhdGl2ZTwvYT4qKgoKUHJvamVjdCBPYmplY3RpdmVzOgoKLSBQcm92aWRlIGEgc2luZ2xlIHNoYXJlZCBvYmplY3QgbW9kZWwgaW4gLk5FVCBmb3IgT3BlbkFQSSBkZXNjcmlwdGlvbnMuCi0gSW5jbHVkZSB0aGUgbW9zdCBwcmltaXRpdmUgUmVhZGVyIGZvciBpbmdlc3RpbmcgT3BlbkFQSSBKU09OIGFuZCBZQU1MIGRvY3VtZW50cyBpbiBib3RoIFYyIGFuZCBWMyBmb3JtYXRzLgotIFByb3ZpZGUgT3BlbkFQSSBkZXNjcmlwdGlvbiB3cml0ZXJzIGZvciBib3RoIFYyIGFuZCBWMyBzcGVjaWZpY2F0aW9uIGZvcm1hdHMuCi0gRW5hYmxlIGRldmVsb3BlcnMgdG8gY3JlYXRlIFJlYWRlcnMgdGhhdCB0cmFuc2xhdGUgZGlmZmVyZW50IGRhdGEgZm9ybWF0cyBpbnRvIE9wZW5BUEkgZGVzY3JpcHRpb25zLgoKIyBJbnN0YWxsYXRpb24KCi0gSW5zdGFsbCBjb3JlIE51Z2V0IHBhY2thZ2UgWyoqTWljcm9zb2Z0Lk9wZW5BcGkqKl0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5PcGVuQXBpKQotIEluc3RhbGwgWWFtbCBSZWFkZXIgTnVnZXQgcGFja2FnZSBbKipNaWNyb3NvZnQuT3BlbkFwaS5ZYW1sUmVhZGVyKipdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuT3BlbkFwaS5ZYW1sUmVhZGVyKQoKPiBOb3RlOiB3ZSBqdXN0IHJlbGVhc2VkIGEgbmV3IG1ham9yIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIGJyaW5ncyBzdXBwb3J0IGZvciBPcGVuQVBJIDMuMiEKPiBZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCB0aGUgY2hhbmdlcyBvZiB0aGlzIHVwY29taW5nIHZlcnNpb24gW2luIHRoZSB1cGdyYWRlIGd1aWRlXSguL2RvY3MvdXBncmFkZS1ndWlkZS0zLm1kKS4KCiMgUHJvY2Vzc29ycwpUaGUgT3BlbkFQSS5ORVQgcHJvamVjdCBob2xkcyB0aGUgYmFzZSBvYmplY3QgbW9kZWwgZm9yIHJlcHJlc2VudGluZyBPcGVuQVBJIGRvY3VtZW50cyBhcyAuTkVUIG9iamVjdHMuIFNvbWUgZGV2ZWxvcGVycyBoYXZlIGZvdW5kIHRoZSBuZWVkIHRvIHdyaXRlIHByb2Nlc3NvcnMgdGhhdCBjb252ZXJ0IG90aGVyIGRhdGEgZm9ybWF0cyBpbnRvIHRoaXMgT3BlbkFQSS5ORVQgb2JqZWN0IG1vZGVsLiBXZSdkIGxpa2UgdG8gY3VyYXRlIHRoYXQgbGlzdCBvZiBwcm9jZXNzb3JzIGluIHRoaXMgc2VjdGlvbiBvZiB0aGUgcmVhZG1lLiAKClRoZSBiYXNlIEpTT04gYW5kIFlBTUwgcHJvY2Vzc29ycyBhcmUgYnVpbHQgaW50byB0aGlzIHByb2plY3QuIEJlbG93IGlzIHRoZSBsaXN0IG9mIHRoZSBvdGhlciBzdXBwb3J0ZWQgcHJvY2Vzc29yIHByb2plY3RzLgoKLSBbKipDIyBDb21tZW50IC8gQW5ub3RhdGlvbiBQcm9jZXNzb3IqKl0oaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9PcGVuQVBJLk5FVC5DU2hhcnBBbm5vdGF0aW9ucykgOiBDb252ZXJ0cyBzdGFuZGFyZCAuTkVUIGFubm90YXRpb25zICggLy8vIGNvbW1lbnRzICkgZW1pdHRlZCBmcm9tIHlvdXIgYnVpbGQgKE1TQnVpbGQuZXhlKSBpbnRvIE9wZW5BUEkuTkVUIGRvY3VtZW50IG9iamVjdC4gCgotIFsqKk9EYXRhIENTREwgUHJvY2Vzc29yKipdKGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvT3BlbkFQSS5ORVQuT0RhdGEpIDogQ29udmVydHMgdGhlIFhNTCByZXByZXNlbnRhdGlvbiBvZiB0aGUgRW50aXR5IERhdGEgTW9kZWwgKEVETSkgZGVzY3JpYmluZyBhbiBPRGF0YSBTZXJ2aWNlIGludG8gT3BlbkFQSS5ORVQgZG9jdW1lbnQgb2JqZWN0LiAKCiMgRXhhbXBsZSBVc2FnZQoKQ3JlYXRpbmcgYW4gT3BlbkFQSSBEb2N1bWVudAoKYGBgQyMKdmFyIGRvY3VtZW50ID0gbmV3IE9wZW5BcGlEb2N1bWVudAp7CiAgICBJbmZvID0gbmV3IE9wZW5BcGlJbmZvCiAgICB7CiAgICAgICAgVmVyc2lvbiA9ICIxLjAuMCIsCiAgICAgICAgVGl0bGUgPSAiU3dhZ2dlciBQZXRzdG9yZSAoU2ltcGxlKSIsCiAgICB9LAogICAgU2VydmVycyA9IG5ldyBMaXN0PE9wZW5BcGlTZXJ2ZXI+CiAgICB7CiAgICAgICAgbmV3IE9wZW5BcGlTZXJ2ZXIgeyBVcmwgPSAiaHR0cDovL3BldHN0b3JlLnN3YWdnZXIuaW8vYXBpIiB9CiAgICB9LAogICAgUGF0aHMgPSBuZXcgT3BlbkFwaVBhdGhzCiAgICB7CiAgICAgICAgWyIvcGV0cyJdID0gbmV3IE9wZW5BcGlQYXRoSXRlbQogICAgICAgIHsKICAgICAgICAgICAgT3BlcmF0aW9ucyA9IG5ldygpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFtIdHRwTWV0aG9kLkdldF0gPSBuZXcgT3BlbkFwaU9wZXJhdGlvbgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0gIlJldHVybnMgYWxsIHBldHMgZnJvbSB0aGUgc3lzdGVtIHRoYXQgdGhlIHVzZXIgaGFzIGFjY2VzcyB0byIsCiAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2VzID0gbmV3IE9wZW5BcGlSZXNwb25zZXMKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFsiMjAwIl0gPSBuZXcgT3BlbkFwaVJlc3BvbnNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0gIk9LIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9OwpgYGAKClJlYWRpbmcgYW5kIHdyaXRpbmcgYW4gT3BlbkFQSSBkZXNjcmlwdGlvbgoKYGBgQyMKdmFyIChvcGVuQXBpRG9jdW1lbnQsIF8pID0gYXdhaXQgT3BlbkFwaURvY3VtZW50LkxvYWRBc3luYygiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vcmVmcy9oZWFkcy9tYWluL19hcmNoaXZlXy9zY2hlbWFzL3YzLjAvcGFzcy9wZXRzdG9yZS55YW1sIik7CgovLyBXcml0ZSBWMiBhcyBKU09OCnZhciBvdXRwdXRTdHJpbmcgPSBhd2FpdCBvcGVuQXBpRG9jdW1lbnQuU2VyaWFsaXplQXNKc29uQXN5bmMoT3BlbkFwaVNwZWNWZXJzaW9uLk9wZW5BcGkyXzApOwpgYGAKCiMgVmFsaWRhdGluZy9UZXN0aW5nIE9wZW5BUEkgZGVzY3JpcHRpb25zCkluIG9yZGVyIHRvIHRlc3QgdGhlIHZhbGlkaXR5IG9mIGFuIE9wZW5BcGkgZG9jdW1lbnQsIHdlIGF2YWlsIHRoZSBmb2xsb3dpbmcgdG9vbHM6Ci0gW01pY3Jvc29mdC5PcGVuQXBpLkhpZGldKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuT3BlbkFwaS5IaWRpKQoKICAgIEEgY29tbWFuZGxpbmUgdG9vbCBmb3IgdmFsaWRhdGluZyBhbmQgdHJhbnNmb3JtaW5nIE9wZW5BUEkgZGVzY3JpcHRpb25zLiBbSW5zdGFsbGF0aW9uIGd1aWRlbGluZXMgYW5kIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvT3BlbkFQSS5ORVQvYmxvYi9tYWluL3NyYy9NaWNyb3NvZnQuT3BlbkFwaS5IaWRpL3JlYWRtZS5tZCkKCi0gTWljcm9zb2Z0Lk9wZW5BcGkuV29ya2JlbmNoCgogICAgQSB3b3JrYmVuY2ggdG9vbCBjb25zaXN0aW5nIG9mIGEgR1VJIHdoZXJlIHlvdSBjYW4gdGVzdCBhbmQgY29udmVydCBPcGVuQVBJIGRlc2NyaXB0aW9ucyBpbiBib3RoIEpTT04gYW5kIFlBTUwgZnJvbSB2Mi0tPnYzIGFuZCB2aWNlIHZlcnNhLgoKICAgICMjIyMgSW5zdGFsbGF0aW9uIGd1aWRlbGluZXM6CiAgICAxLiBDbG9uZSB0aGUgcmVwbyBsb2NhbGx5IGJ5IHJ1bm5pbmcgdGhpcyBjb21tYW5kOgogICAgICAgIGBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9PcGVuQVBJLk5FVC5naXRgCiAgICAyLiBPcGVuIHRoZSBzb2x1dGlvbiBmaWxlIGAoLnNsbilgIGluIHRoZSByb290IG9mIHRoZSBwcm9qZWN0IHdpdGggVmlzdWFsIFN0dWRpbwogICAgMy4gTmF2aWdhdGUgdG8gdGhlIGBzcmMvTWljcm9zb2Z0Lk9wZW5BcGkuV29ya2JlbmNoYCBkaXJlY3RvcnkgYW5kIHNldCBpdCBhcyB0aGUgc3RhcnR1cCBwcm9qZWN0CiAgICA0LiBSdW4gdGhlIHByb2plY3QgYW5kIHlvdSdsbCBzZWUgYSBHVUkgcG9wIHVwIHJlc2VtYmxpbmcgdGhlIG9uZSBiZWxvdzoKICAgIAogICAgCiAgICAhW3dvcmtiZW5jaCBwcmV2aWV3XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbWljcm9zb2Z0L09wZW5BUEkuTkVUL21haW4vZG9jcy9pbWFnZXMvd29ya2JlbmNoLnBuZyAiYSBzY3JlZW5zaG90IG9mIHRoZSB3b3JrYmVuY2ggYXBwbGljYXRpb24iKQogICAgCiAgICA1LiBDb3B5IGFuZCBwYXN0ZSB5b3VyIE9wZW5BUEkgZGVzY3JpcHRpb25zIGluIHRoZSAqKklucHV0IENvbnRlbnQqKiB3aW5kb3cgb3IgcGFzdGUgdGhlIHBhdGggdG8gdGhlIGRlc2NyaXB0aW9ucyBmaWxlIGluIHRoZSAqKklucHV0IEZpbGUqKiB0ZXh0Ym94IGFuZCBjbGljayBvbiBgQ29udmVydGAgdG8gcmVuZGVyIHRoZSByZXN1bHRzLgoKIyBDb250cmlidXRpbmcKClRoaXMgcHJvamVjdCB3ZWxjb21lcyBjb250cmlidXRpb25zIGFuZCBzdWdnZXN0aW9ucy4gIE1vc3QgY29udHJpYnV0aW9ucyByZXF1aXJlIHlvdSB0byBhZ3JlZSB0byBhCkNvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50IChDTEEpIGRlY2xhcmluZyB0aGF0IHlvdSBoYXZlIHRoZSByaWdodCB0bywgYW5kIGFjdHVhbGx5IGRvLCBncmFudCB1cwp0aGUgcmlnaHRzIHRvIHVzZSB5b3VyIGNvbnRyaWJ1dGlvbi4gRm9yIGRldGFpbHMsIHZpc2l0IGh0dHBzOi8vY2xhLm1pY3Jvc29mdC5jb20uCgpXaGVuIHlvdSBzdWJtaXQgYSBwdWxsIHJlcXVlc3QsIGEgQ0xBLWJvdCB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIHdoZXRoZXIgeW91IG5lZWQgdG8gcHJvdmlkZQphIENMQSBhbmQgZGVjb3JhdGUgdGhlIFBSIGFwcHJvcHJpYXRlbHkgKGUuZy4sIGxhYmVsLCBjb21tZW50KS4gU2ltcGx5IGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zCnByb3ZpZGVkIGJ5IHRoZSBib3QuIFlvdSB3aWxsIG9ubHkgbmVlZCB0byBkbyB0aGlzIG9uY2UgYWNyb3NzIGFsbCByZXBvcyB1c2luZyBvdXIgQ0xBLgoKVGhpcyBwcm9qZWN0IGhhcyBhZG9wdGVkIHRoZSBbTWljcm9zb2Z0IE9wZW4gU291cmNlIENvZGUgb2YgQ29uZHVjdF0oaHR0cHM6Ly9vcGVuc291cmNlLm1pY3Jvc29mdC5jb20vY29kZW9mY29uZHVjdC8pLgpGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIFtDb2RlIG9mIENvbmR1Y3QgRkFRXShodHRwczovL29wZW5zb3VyY2UubWljcm9zb2Z0LmNvbS9jb2Rlb2Zjb25kdWN0L2ZhcS8pIG9yCmNvbnRhY3QgW29wZW5jb2RlQG1pY3Jvc29mdC5jb21dKG1haWx0bzpvcGVuY29kZUBtaWNyb3NvZnQuY29tKSB3aXRoIGFueSBhZGRpdGlvbmFsIHF1ZXN0aW9ucyBvciBjb21tZW50cy4KClRvIHByb3ZpZGUgZmVlZGJhY2sgYW5kIGFzayBxdWVzdGlvbnMgeW91IGNhbiB1c2UgU3RhY2sgT3ZlcmZsb3cgd2l0aCB0aGUgW09wZW5BUEkuTkVUXShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy90YWdnZWQvb3BlbmFwaS5uZXQpIHRhZy4K readmeEtag: '"6a7f787f8e6cf6076b83186b54e46c10ddfc4c94"' readmeLastModified: Tue, 11 Nov 2025 21:58:29 GMT repositoryId: 97175798 description: >- The OpenAPI.NET SDK contains a useful object model for OpenAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model. created: '2017-07-14T00:24:14Z' updated: '2026-02-05T12:17:03Z' language: C# archived: false stars: 1575 watchers: 62 forks: 282 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT repoEtag: '"02e87e29122fea6641bc92d47b69eb0c7a7bdcb9421082dddf2cc5f1bb1d11d0"' repoLastModified: Thu, 05 Feb 2026 12:17:03 GMT id: f3215034d64cfcbcc28a4bdb0205a075 - source: IMPLEMENTATIONS.md name: openapi-validator homepage: https://gitlab.com/mmalawski/openapi-validator language: PHP source_description: Validates response against OpenAPI schema category: Low-level Tooling foundInMaster: true id: efecab7adc90e5b1b9e902939ab0a319 - source: IMPLEMENTATIONS.md name: OpenAPI-Delphi homepage: https://github.com/paolo-rossi/OpenAPI-Delphi language: Delphi source_description: >- Delphi implementation of a generator, parser and validator for the OpenAPI 3 Specification category: - Low-level Tooling - Parsers foundInMaster: true repository: https://github.com/paolo-rossi/openapi-delphi repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIGZvciBEZWxwaGkgLSBPcGVuQVBJIDMuMCBmb3IgRGVscGhpCgo8YnIgLz4KCjxwIGFsaWduPSJjZW50ZXIiPgogIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vcGFvbG8tcm9zc2kvT3BlbkFQSS1EZWxwaGkvYmxvYi9tYXN0ZXIvb3BlbmFwaS1kZWxwaGkucG5nIiBhbHQ9Ik9wZW5BUEkgRGVscGhpIExpYnJhcnkiIHdpZHRoPSI0MDAiIC8+CjwvcD4KCiMjIFdoYXQgaXMgT3BlbkFQSS1EZWxwaGkKCioqT3BlbkFQSS1EZWxwaGkqKiBpcyBhbiBPcGVuQVBJIDMuMCBsaWJyYXJ5IGZvciBbRGVscGhpXShodHRwczovL3d3dy5lbWJhcmNhZGVyby5jb20vcHJvZHVjdHMvZGVscGhpKSB0aGF0IGhlbHBzIHlvdSB0byBnZW5lcmF0ZSAoYW5kIGxvYWQpIE9wZW5BUEkgMy4wIGRvY3VtZW50YXRpb24gKGluIEpTT04pIHN0YXJ0aW5nIGZyb20gcGxhaW4gRGVscGhpIGNsYXNzZXMuIERlbHBoaS1PcGVuQVBJIHVzZXMgdGhlIFtOZW9uXShodHRwczovL2dpdGh1Yi5jb20vcGFvbG8tcm9zc2kvZGVscGhpLW5lb24pIHNlcmlhbGl6YXRpb24gbGlicmFyeSB0byB0cmFuc2Zvcm0gdGhlIE9wZW5BUEkgbW9kZWxzIGZyb20gRGVscGhpIGNsYXNzZXMgdG8gSlNPTiBhbmQgdG8gbG9hZCBhIE9wZW5BUEkgZG9jdW1lbnQgaW50byBhIERlbHBoaSAoT3BlbkFQSSkgb2JqZWN0LiBQbGVhc2UgdGFrZSBhIGxvb2sgYXQgdGhlIERlbW8gdG8gc2VlIE9wZW5BUEktRGVscGhpIGluIGFjdGlvbi4KCiMjIEdlbmVyYWwgRmVhdHVyZXMKCi0gT3BlbkFQSSBkb2N1bWVudCBnZW5lcmF0aW9uIChKU09OKSBmcm9tIGEgRGVscGhpIChPcGVuQVBJKSBvYmplY3QgCi0gT3BlbkFQSSBsb2FkaW5nIGFuZCBwYXJzaW5nIGludG8gYSBEZWxwaGkgKE9wZW5BUEkpIG9iamVjdCAoOnN0YXIyOiBuZXcgaW4gMi4wKQotIFVzZSBwbGFpbiBEZWxwaGkgY2xhc3NlcyB0byBzZXQgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBzZWN0aW9ucyAmIGZpZWxkcwotIFN1cHBvcnQgZm9yIEpTT04gU2NoZW1hICh0aGUgT3BlbkFQSSB2ZXJzaW9uKQotIFN1cHBvcnQgZm9yIFNjaGVtYSBmaWVsZCByZWN1cnNpb24gKDpzdGFyMjogbmV3IGluIDIuMCkKLSBGdWxsIFN1cHBvcnQgZm9yIGVudW0gb2YgYW55IHR5cGUgKDpzdGFyMjogbmV3IGluIDIuMCkKLSBVc2UgMS1saW5lIGNvZGUgKHVzaW5nIHRoZSBbTmVvbl0oaHR0cHM6Ly9naXRodWIuY29tL3Bhb2xvLXJvc3NpL2RlbHBoaS1uZW9uKSBsaWJyYXJ5KSB0byB0cmFuc2Zvcm0gZnJvbSBhbmQgdG8gSlNPTiBkb2N1bWVudHMKCiMjIERlbHBoaSBDb21wYXRpYmlsaXR5ClRoaXMgbGlicmFyeSBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCAqKkRlbHBoaSAxMiBBdGhlbnMqKiwgKipEZWxwaGkgMTEgQWxleGFuZHJpYSoqLCAqKkRlbHBoaSAxMC40IFN5ZG5leSoqLCAqKkRlbHBoaSAxMC4zIFJpbyoqLCAqKkRlbHBoaSAxMC4yIFRva3lvKiouCgoKIyMgVG9kbwotIEZ1bGwgdmFsaWRhdGlvbiBmb3IgdGhlIE9wZW5BUEkgbW9kZWxzCgo= readmeEtag: '"ed3c74637bbd0f70dcb7ad950270331fd2793c36"' readmeLastModified: Sat, 04 May 2024 08:36:53 GMT repositoryId: 190047866 description: >- The Delphi-OpenAPI library is an OpenAPI 3.0 document generator and parser for Delphi created: '2019-06-03T17:07:21Z' updated: '2026-02-05T16:05:17Z' language: Pascal archived: false stars: 104 watchers: 14 forks: 34 owner: paolo-rossi logo: https://avatars.githubusercontent.com/u/4686497?v=4 license: Apache-2.0 repoEtag: '"f1e2627f591cd0780a695858b0486af6c7d405f2611e7e8a8c6be814cf5085cc"' repoLastModified: Thu, 05 Feb 2026 16:05:17 GMT id: 29fab7d64d0321c64910ca260c8a92d1 - source: IMPLEMENTATIONS.md name: openapi-runtime-expression homepage: https://github.com/char0n/openapi-runtime-expression language: JavaScript source_description: OpenAPI Runtime Expressions parser and validator. category: - Low-level Tooling - Parsers repository: https://github.com/swaggerexpert/openapi-runtime-expression id: 8a849f2d0d23f7d6d54e1b510e05fd16 repositoryMetadata: base64Readme: >- IyBAc3dhZ2dlcmV4cGVydC9vcGVuYXBpLXJ1bnRpbWUtZXhwcmVzc2lvbgoKWyFbbnBtdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi8lNDBzd2FnZ2VyZXhwZXJ0JTJGb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb24/c3R5bGU9ZmxhdC1zcXVhcmUmbGFiZWw9bnBtJTIwcGFja2FnZSZjb2xvcj0lMjM0REM4MUYmbGluaz1odHRwcyUzQSUyRiUyRnd3dy5ucG1qcy5jb20lMkZwYWNrYWdlJTJGJTQwc3dhZ2dlcmV4cGVydCUyRm9wZW5hcGktcnVudGltZS1leHByZXNzaW9uKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHN3YWdnZXJleHBlcnQvb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb24pClshW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZG0vQHN3YWdnZXJleHBlcnQvb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb24pXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ac3dhZ2dlcmV4cGVydC9vcGVuYXBpLXJ1bnRpbWUtZXhwcmVzc2lvbikKWyFbVGVzdCB3b3JrZmxvd10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXJleHBlcnQvb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb24vYWN0aW9ucy93b3JrZmxvd3MvdGVzdC55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXJleHBlcnQvb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb24vYWN0aW9ucykKWyFbRGVwZW5kYWJvdCBlbmFibGVkXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0RlcGVuZGFib3QtZW5hYmxlZC1ibHVlLnN2ZyldKGh0dHBzOi8vZGVwZW5kYWJvdC5jb20vKQpbIVt0cnkgb24gUnVuS2l0XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3RyeSUyMG9uLVJ1bktpdC1icmlnaHRncmVlbi5zdmc/c3R5bGU9ZmxhdCldKGh0dHBzOi8vbnBtLnJ1bmtpdC5jb20vQHN3YWdnZXJleHBlcnQvb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb24pClshW1RpZGVsaWZ0XShodHRwczovL3RpZGVsaWZ0LmNvbS9iYWRnZXMvcGFja2FnZS9ucG0vQHN3YWdnZXJleHBlcnQlMkZvcGVuYXBpLXJ1bnRpbWUtZXhwcmVzc2lvbildKGh0dHBzOi8vdGlkZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9wa2cvbnBtLS5zd2FnZ2VyZXhwZXJ0LW9wZW5hcGktcnVudGltZS1leHByZXNzaW9uP3V0bV9zb3VyY2U9bnBtLXN3YWdnZXJleHBlcnQtb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb24mdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249cmVhZG1lKQoKW09wZW5BUEkgUnVudGltZSBFeHByZXNzaW9uc10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4xLmh0bWwjcnVudGltZS1leHByZXNzaW9ucykgYWxsb3cgZGVmaW5pbmcgdmFsdWVzIGJhc2VkIG9uIGluZm9ybWF0aW9uIHRoYXQgd2lsbCBvbmx5IGJlIGF2YWlsYWJsZSB3aXRoaW4gdGhlIEhUVFAgbWVzc2FnZSBpbiBhbiBhY3R1YWwgQVBJIGNhbGwuClRoaXMgbWVjaGFuaXNtIGlzIHVzZWQgYnkgW0xpbmsgT2JqZWN0c10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4xLmh0bWwjbGluay1vYmplY3QpIGFuZCBbQ2FsbGJhY2sgT2JqZWN0c10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4xLmh0bWwjY2FsbGJhY2stb2JqZWN0KQpvZiBbT3BlbkFQSSBzcGVjaWZpY2F0aW9uXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnLyNvcGVuYXBpLXNwZWNpZmljYXRpb24pLgoKYEBzd2FnZ2VyZXhwZXJ0L29wZW5hcGktcnVudGltZS1leHByZXNzaW9uYCBpcyBhICoqcGFyc2VyKiosICoqdmFsaWRhdG9yKiogYW5kICoqZXh0cmFjdG9yKiogZm9yIE9wZW5BUEkgUnVudGltZSBFeHByZXNzaW9ucy4KCkl0IHN1cHBvcnRzIFJ1bnRpbWUgRXhwcmVzc2lvbnMgZGVmaW5lZCBpbiBmb2xsb3dpbmcgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIHZlcnNpb25zOgoKLSBbT3BlbkFQSSAzLjAuMF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4wLmh0bWwjcnVudGltZS1leHByZXNzaW9ucykKLSBbT3BlbkFQSSAzLjAuMV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4xLmh0bWwjcnVudGltZS1leHByZXNzaW9ucykKLSBbT3BlbkFQSSAzLjAuMl0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4yLmh0bWwjcnVudGltZS1leHByZXNzaW9ucykKLSBbT3BlbkFQSSAzLjAuM10oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcnVudGltZS1leHByZXNzaW9ucykKLSBbT3BlbkFQSSAzLjAuNF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC40Lmh0bWwjcnVudGltZS1leHByZXNzaW9ucykKLSBbT3BlbkFQSSAzLjEuMF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wLmh0bWwjcnVudGltZS1leHByZXNzaW9ucykKLSBbT3BlbkFQSSAzLjEuMV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4xLmh0bWwjcnVudGltZS1leHByZXNzaW9ucykKCjx0YWJsZT4KICA8dHI+CiAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSI+CiAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vY2RuMi5odWJzcG90Lm5ldC9odWJmcy80MDA4ODM4L3dlYnNpdGUvbG9nb3MvbG9nb3NfZm9yX2Rvd25sb2FkL1RpZGVsaWZ0X3ByaW1hcnktc2hvcnRoYW5kLWxvZ28ucG5nIiBhbHQ9IlRpZGVsaWZ0IiB3aWR0aD0iNjAiIC8+CiAgICAgIDwvdGQ+CiAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSI+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly90aWRlbGlmdC5jb20vc3Vic2NyaXB0aW9uL3BrZy9ucG0tLnN3YWdnZXJleHBlcnQtb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb24/dXRtX3NvdXJjZT1ucG0tc3dhZ2dlcmV4cGVydC1vcGVuYXBpLXJ1bnRpbWUtZXhwcmVzc2lvbiZ1dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9jYW1wYWlnbj1yZWFkbWUiPgogICAgICAgICAgICBHZXQgcHJvZmVzc2lvbmFsbHkgc3VwcG9ydGVkIEBzd2FnZ2VyZXhwZXJ0L29wZW5hcGktcnVudGltZS1leHByZXNzaW9uIHdpdGggVGlkZWxpZnQgU3Vic2NyaXB0aW9uLgogICAgICAgIDwvYT4KICAgICAgPC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKIyMgVGFibGUgb2YgQ29udGVudHMKCi0gW0dldHRpbmcgc3RhcnRlZF0oI2dldHRpbmctc3RhcnRlZCkKICAtIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCiAgLSBbVXNhZ2VdKCN1c2FnZSkKICAgIC0gW0V4dHJhY3Rpb25dKCNleHRyYWN0aW9uKQogICAgLSBbUGFyc2luZ10oI3BhcnNpbmcpCiAgICAtIFtWYWxpZGF0aW9uXSgjdmFsaWRhdGlvbikKICAgIC0gW0dyYW1tYXJdKCNncmFtbWFyKQotIFtNb3JlIGFib3V0IE9wZW5BUEkgcnVudGltZSBleHByZXNzaW9uc10oI21vcmUtYWJvdXQtb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb25zKQotIFtMaWNlbnNlXSgjbGljZW5zZSkKCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCiMjIyBJbnN0YWxsYXRpb24KCllvdSBjYW4gaW5zdGFsbCBgQHN3YWdnZXJleHBlcnQvb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb25gIHVzaW5nIGBucG1gOgoKYGBgc2gKICQgbnBtIGluc3RhbGwgQHN3YWdnZXJleHBlcnQvb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb24KYGBgCgojIyMgVXNhZ2UKCmBAc3dhZ2dlcmV4cGVydC9vcGVuYXBpLXJ1bnRpbWUtZXhwcmVzc2lvbmAgY3VycmVudGx5IHN1cHBvcnRzICoqZXh0cmFjdGlvbioqLCAqKnBhcnNpbmcqKiBhbmQgKip2YWxpZGF0aW9uKiouCkJvdGggcGFyc2VyIGFuZCB2YWxpZGF0b3IgYXJlIGJhc2VkIG9uIGEgc3VwZXJzZXQgb2YgW0FCTkZdKGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM1MjM0KSAoW1NBQk5GXShodHRwczovL2NzLmdpdGh1Yi5jb20vbGR0aG9tYXMvYXBnLWpzMi9ibG9iL21hc3Rlci9TQUJORi5tZCkpCmFuZCB1c2UgW2FwZy1saXRlXShodHRwczovL2dpdGh1Yi5jb20vbGR0aG9tYXMvYXBnLWxpdGUpIHBhcnNlciBnZW5lcmF0b3IuCgojIyMjIEV4dHJhY3Rpb24KCk9wZW5BUEkgZW1iZWRzIFJ1bnRpbWUgRXhwcmVzc2lvbnMgaW50byBzdHJpbmcgdmFsdWVzIHN1cnJvdW5kZWQgd2l0aCBge31gIGN1cmx5IGJyYWNlcy4KVG8gZXh0cmFjdCBSdW50aW1lIEV4cHJlc3Npb25zIGZyb20gdGhpcyBlbWJlZGRlZCBmb3JtLCB1c2UgdGhlICoqZXh0cmFjdCoqIGZ1bmN0aW9uLgpFeHRyYWN0ZWQgUnVudGltZSBFeHByZXNzaW9uIGNhbiBiZSB1c2VkIGZvciBmdXJ0aGVyIHBhcnNpbmcgb2YgdmFsaWRhdGlvbi4KCmBgYGpzCmltcG9ydCB7IGV4dHJhY3QsIHRlc3QsIHBhcnNlIH0gZnJvbSAnQHN3YWdnZXJleHBlcnQvb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb24nOwoKY29uc3QgZXhwcmVzc2lvbiA9IGV4dHJhY3QoJ3skcmVxdWVzdC5oZWFkZXIuYWNjZXB0fScpOyAvLyA9PiAnJHJlcXVlc3QuaGVhZGVyLmFjY2VwdCcKCnRlc3QoZXhwcmVzc2lvbik7IC8vID0+IHRydWUKcGFyc2UoZXhwcmVzc2lvbik7IC8vID0+IHsgcmVzdWx0LCBhc3QgfQpgYGAKCiMjIyMgUGFyc2luZwoKUGFyc2luZyBhIFJ1bnRpbWUgRXhwcmVzc2lvbiBpcyBhcyBzaW1wbGUgYXMgaW1wb3J0aW5nIHRoZSAqKnBhcnNlKiogZnVuY3Rpb24gYW5kIGNhbGxpbmcgaXQuCgpgYGBqcwppbXBvcnQgeyBwYXJzZSB9IGZyb20gJ0Bzd2FnZ2VyZXhwZXJ0L29wZW5hcGktcnVudGltZS1leHByZXNzaW9uJzsKCmNvbnN0IHBhcnNlUmVzdWx0ID0gcGFyc2UoJyRyZXF1ZXN0LmhlYWRlci5hY2NlcHQnKTsKYGBgCgpgdG9rZW5gIG5vbi10ZXJtaW5hbCBpcyBieSBkZWZhdWx0IGJlaW5nIG5vcm1hbGl6ZWQgdG8gbG93ZXIgY2FzZS4KCmBgYGpzCmltcG9ydCB7IHBhcnNlIH0gZnJvbSAnQHN3YWdnZXJleHBlcnQvb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb24nOwoKY29uc3QgcGFyc2VSZXN1bHQgPSBwYXJzZSgnJHJlcXVlc3QuaGVhZGVyLkFjY2VwdCcpOwpjb25zdCBwYXJ0cyA9IFtdOwoKcGFyc2VSZXN1bHQuYXN0LnRyYW5zbGF0ZShwYXJ0cyk7Ci8vIFsKLy8gICBbICdleHByZXNzaW9uJywgJyRyZXF1ZXN0LmhlYWRlci5BY2NlcHQnIF0sCi8vICAgWyAnc291cmNlJywgJ2hlYWRlci5BY2NlcHQnIF0sCi8vICAgWyAnaGVhZGVyLXJlZmVyZW5jZScsICdoZWFkZXIuQWNjZXB0JyBdLAovLyAgIFsgJ3Rva2VuJywgJ2FjY2VwdCcgXSwKLy8gXQpgYGAKCmB0b2tlbmAgbm9ybWFsaXphdGlvbiBjYW4gYmUgb3ZlcnJpZGRlbiBieSBwYXNzaW5nIHRva2VuIG5vcm1hbGl6ZXIgdG8gdGhlIGBwYXJzZWAgZnVuY3Rpb24uCgoqKlVwcGVyIGNhc2UqKgoKYGBganMKaW1wb3J0IHsgcGFyc2UsIHRva2VuVXBwZXJDYXNlTm9ybWFsaXplciB9IGZyb20gJ0Bzd2FnZ2VyZXhwZXJ0L29wZW5hcGktcnVudGltZS1leHByZXNzaW9uJzsKCmNvbnN0IHBhcnNlUmVzdWx0ID0gcGFyc2UoJyRyZXF1ZXN0LmhlYWRlci5BY2NlcHQnLCB7IHRva2VuTm9ybWFsaXplcjogdG9rZW5VcHBlckNhc2VOb3JtYWxpemVyIH0pOwpjb25zdCBwYXJ0cyA9IFtdOwpwYXJzZVJlc3VsdC5hc3QudHJhbnNsYXRlKHBhcnRzKTsKLy8gWwovLyAgIFsgJ2V4cHJlc3Npb24nLCAnJHJlcXVlc3QuaGVhZGVyLkFjY2VwdCcgXSwKLy8gICBbICdzb3VyY2UnLCAnaGVhZGVyLkFjY2VwdCcgXSwKLy8gICBbICdoZWFkZXItcmVmZXJlbmNlJywgJ2hlYWRlci5BY2NlcHQnIF0sCi8vICAgWyAndG9rZW4nLCAnQUNDRVBUJyBdLAovLyBdYApgYGAKCioqTG93ZXIgY2FzZSoqCgpgYGBqcwppbXBvcnQgeyBwYXJzZSwgdG9rZW5Mb3dlckNhc2VOb3JtYWxpemVyIH0gZnJvbSAnQHN3YWdnZXJleHBlcnQvb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb24nOwoKY29uc3QgcGFyc2VSZXN1bHQgPSBwYXJzZSgnJHJlcXVlc3QuaGVhZGVyLkFjY2VwdCcsIHsgdG9rZW5Ob3JtYWxpemVyOiB0b2tlbkxvd2VyQ2FzZU5vcm1hbGl6ZXIgfSk7CmNvbnN0IHBhcnRzID0gW107CnBhcnNlUmVzdWx0LmFzdC50cmFuc2xhdGUocGFydHMpOwovLyBbCi8vICAgWyAnZXhwcmVzc2lvbicsICckcmVxdWVzdC5oZWFkZXIuQWNjZXB0JyBdLAovLyAgIFsgJ3NvdXJjZScsICdoZWFkZXIuQWNjZXB0JyBdLAovLyAgIFsgJ2hlYWRlci1yZWZlcmVuY2UnLCAnaGVhZGVyLkFjY2VwdCcgXSwKLy8gICBbICd0b2tlbicsICdhY2NlcHQnIF0sCi8vIF1gCmBgYAoKKipwYXJzZVJlc3VsdCoqIHZhcmlhYmxlIGhhcyB0aGUgZm9sbG93aW5nIHNoYXBlOgoKYGBgCnsKICByZXN1bHQ6IHsKICAgIHN1Y2Nlc3M6IHRydWUsCiAgICBzdGF0ZTogMTAxLAogICAgc3RhdGVOYW1lOiAnTUFUQ0gnLAogICAgbGVuZ3RoOiAyMiwKICAgIG1hdGNoZWQ6IDIyLAogICAgbWF4TWF0Y2hlZDogMjIsCiAgICBtYXhUcmVlRGVwdGg6IDEzLAogICAgbm9kZUhpdHM6IDE1MgogIH0sCiAgYXN0OiBmbmFzdCB7CiAgICBjYWxsYmFja3M6IFsKICAgICAgZXhwcmVzc2lvbjogW0Z1bmN0aW9uOiBleHByZXNzaW9uXSwKICAgICAgc291cmNlOiBbRnVuY3Rpb246IHNvdXJjZV0sCiAgICAgICdoZWFkZXItcmVmZXJlbmNlJzogW0Z1bmN0aW9uOiBoZWFkZXJSZWZlcmVuY2VdLAogICAgICAncXVlcnktcmVmZXJlbmNlJzogW0Z1bmN0aW9uOiBxdWVyeVJlZmVyZW5jZV0sCiAgICAgICdwYXRoLXJlZmVyZW5jZSc6IFtGdW5jdGlvbjogcGF0aFJlZmVyZW5jZV0sCiAgICAgICdib2R5LXJlZmVyZW5jZSc6IFtGdW5jdGlvbjogYm9keVJlZmVyZW5jZV0sCiAgICAgICdqc29uLXBvaW50ZXInOiBbRnVuY3Rpb246IGpzb25Qb2ludGVyXSwKICAgICAgJ3JlZmVyZW5jZS10b2tlbic6IFtGdW5jdGlvbjogcmVmZXJlbmNlVG9rZW5dLAogICAgICBuYW1lOiBbRnVuY3Rpb246IG5hbWVdLAogICAgICB0b2tlbjogW0Z1bmN0aW9uOiB0b2tlbl0KICAgIF0sCiAgICBpbml0OiBbRnVuY3Rpb24gKGFub255bW91cyldLAogICAgcnVsZURlZmluZWQ6IFtGdW5jdGlvbiAoYW5vbnltb3VzKV0sCiAgICB1ZHREZWZpbmVkOiBbRnVuY3Rpb24gKGFub255bW91cyldLAogICAgZG93bjogW0Z1bmN0aW9uIChhbm9ueW1vdXMpXSwKICAgIHVwOiBbRnVuY3Rpb24gKGFub255bW91cyldLAogICAgdHJhbnNsYXRlOiBbRnVuY3Rpb24gKGFub255bW91cyldLAogICAgc2V0TGVuZ3RoOiBbRnVuY3Rpb24gKGFub255bW91cyldLAogICAgZ2V0TGVuZ3RoOiBbRnVuY3Rpb24gKGFub255bW91cyldLAogICAgdG9YbWw6IFtGdW5jdGlvbiAoYW5vbnltb3VzKV0KICB9Cn0KYGBgCgojIyMjIyMgSW50ZXJwcmV0aW5nIEFTVCBhcyBsaXN0IG9mIGVudHJpZXMKCmBgYGpzCmltcG9ydCB7IHBhcnNlIH0gZnJvbSAnQHN3YWdnZXJleHBlcnQvb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb24nOwoKY29uc3QgcGFyc2VSZXN1bHQgPSBwYXJzZSgnJHJlcXVlc3QuaGVhZGVyLmFjY2VwdCcpOwpjb25zdCBwYXJ0cyA9IFtdOwoKcGFyc2VSZXN1bHQuYXN0LnRyYW5zbGF0ZShwYXJ0cyk7CmBgYAoKQWZ0ZXIgcnVubmluZyB0aGUgYWJvdmUgY29kZSwgKipwYXJ0cyoqIHZhcmlhYmxlIGhhcyB0aGUgZm9sbG93aW5nIHNoYXBlOgoKYGBganMKWwogIFsgJ2V4cHJlc3Npb24nLCAnJHJlcXVlc3QuaGVhZGVyLmFjY2VwdCcgXSwKICBbICdzb3VyY2UnLCAnaGVhZGVyLmFjY2VwdCcgXSwKICBbICdoZWFkZXItcmVmZXJlbmNlJywgJ2hlYWRlci5hY2NlcHQnIF0sCiAgWyAndG9rZW4nLCAnYWNjZXB0JyBdLApdCmBgYAoKIyMjIyMjIEludGVycHJldGluZyBBU1QgYXMgWE1MCgpgYGBqcwppbXBvcnQgeyBwYXJzZSB9IGZyb20gJ0Bzd2FnZ2VyZXhwZXJ0L29wZW5hcGktcnVudGltZS1leHByZXNzaW9uJzsKCmNvbnN0IHBhcnNlUmVzdWx0ID0gcGFyc2UoJyRyZXF1ZXN0LmhlYWRlci5hY2NlcHQnKTsKY29uc3QgeG1sID0gcGFyc2VSZXN1bHQuYXN0LnRvWG1sKCk7CmBgYAoKQWZ0ZXIgcnVubmluZyB0aGUgYWJvdmUgY29kZSwgKip4bWwqKiB2YXJpYWJsZSBoYXMgdGhlIGZvbGxvd2luZyBjb250ZW50OgoKYGBgeG1sCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cjxyb290IG5vZGVzPSI0IiBjaGFyYWN0ZXJzPSIyMiI+CiAgPCEtLSBpbnB1dCBzdHJpbmcgLS0+CiAgJHJlcXVlc3QuaGVhZGVyLmFjY2VwdAogIDxub2RlIG5hbWU9ImV4cHJlc3Npb24iIGluZGV4PSIwIiBsZW5ndGg9IjIyIj4KICAgICRyZXF1ZXN0LmhlYWRlci5hY2NlcHQKICAgIDxub2RlIG5hbWU9InNvdXJjZSIgaW5kZXg9IjkiIGxlbmd0aD0iMTMiPgogICAgICBoZWFkZXIuYWNjZXB0CiAgICAgIDxub2RlIG5hbWU9ImhlYWRlci1yZWZlcmVuY2UiIGluZGV4PSI5IiBsZW5ndGg9IjEzIj4KICAgICAgICBoZWFkZXIuYWNjZXB0CiAgICAgICAgPG5vZGUgbmFtZT0idG9rZW4iIGluZGV4PSIxNiIgbGVuZ3RoPSI2Ij4KICAgICAgICAgIGFjY2VwdAogICAgICAgIDwvbm9kZT48IS0tIG5hbWU9InRva2VuIiAtLT4KICAgICAgPC9ub2RlPjwhLS0gbmFtZT0iaGVhZGVyLXJlZmVyZW5jZSIgLS0+CiAgICA8L25vZGU+PCEtLSBuYW1lPSJzb3VyY2UiIC0tPgogIDwvbm9kZT48IS0tIG5hbWU9ImV4cHJlc3Npb24iIC0tPgo8L3Jvb3Q+CmBgYAoKPiBOT1RFOiBBU1QgY2FuIGFsc28gYmUgdHJhdmVyc2VkIGluIGNsYXNzaWNhbCB3YXkgdXNpbmcgW2RlcHRoIGZpcnN0IHRyYXZlcnNhbF0oaHR0cHM6Ly93d3cudHV0b3JpYWxzcG9pbnQuY29tL2RhdGFfc3RydWN0dXJlc19hbGdvcml0aG1zL2RlcHRoX2ZpcnN0X3RyYXZlcnNhbC5odG0pLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIG9wdGlvbiBwbGVhc2UgcmVmZXIgdG8gW2FwZy1qc10oaHR0cHM6Ly9naXRodWIuY29tL2xkdGhvbWFzL2FwZy1qcykgYW5kIFthcGctanMtZXhhbXBsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9sZHRob21hcy9hcGctanMtZXhhbXBsZXMpLgoKIyMjIyBWYWxpZGF0aW9uCgpWYWxpZGF0aW5nIGEgUnVudGltZSBFeHByZXNzaW9uIGlzIGFzIHNpbXBsZSBhcyBpbXBvcnRpbmcgdGhlICoqdGVzdCoqIGZ1bmN0aW9uIGFuZCBjYWxsaW5nIGl0LgoKYGBganMKaW1wb3J0IHsgdGVzdCB9IGZyb20gJ0Bzd2FnZ2VyZXhwZXJ0L29wZW5hcGktcnVudGltZS1leHByZXNzaW9uJzsKCnRlc3QoJyRyZXF1ZXN0LmhlYWRlci5hY2NlcHQnKTsgLy8gPT4gdHJ1ZQp0ZXN0KCdub25zZW5zaWNhbCBzdHJpbmcnKTsgLy8gPT4gZmFsc2UKYGBgCgojIyMjIEdyYW1tYXIKCk5ldyBncmFtbWFyIGluc3RhbmNlIGNhbiBiZSBjcmVhdGVkIGluIGZvbGxvd2luZyB3YXk6CgpgYGBqcwppbXBvcnQgeyBHcmFtbWFyIH0gZnJvbSAnQHN3YWdnZXJleHBlcnQvb3BlbmFwaS1ydW50aW1lLWV4cHJlc3Npb24nOwoKY29uc3QgZ3JhbW1hciA9IG5ldyBHcmFtbWFyKCk7CmBgYAoKVG8gb2J0YWluIG9yaWdpbmFsIEFCTkYgKFNBQk5GKSBncmFtbWFyIGFzIGEgc3RyaW5nOgoKYGBganMKaW1wb3J0IHsgR3JhbW1hciB9IGZyb20gJ0Bzd2FnZ2VyZXhwZXJ0L29wZW5hcGktcnVudGltZS1leHByZXNzaW9uJzsKCmNvbnN0IGdyYW1tYXIgPSBuZXcgR3JhbW1hcigpOwoKZ3JhbW1hci50b1N0cmluZygpOwovLyBvcgpTdHJpbmcoZ3JhbW1hcik7CmBgYAoKIyMgTW9yZSBhYm91dCBPcGVuQVBJIHJ1bnRpbWUgZXhwcmVzc2lvbnMKClRoZSBydW50aW1lIGV4cHJlc3Npb24gaXMgZGVmaW5lZCBieSB0aGUgZm9sbG93aW5nIFtBQk5GXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTIzNCkgc3ludGF4CgpgYGBhYm5mCjsgT3BlbkFQSSBydW50aW1lIGV4cHJlc3Npb24gQUJORiBzeW50YXgKZXhwcmVzc2lvbiAgICAgICA9ICIkdXJsIiAvICIkbWV0aG9kIiAvICIkc3RhdHVzQ29kZSIgLyAiJHJlcXVlc3QuIiBzb3VyY2UgLyAiJHJlc3BvbnNlLiIgc291cmNlCnNvdXJjZSAgICAgICAgICAgPSBoZWFkZXItcmVmZXJlbmNlIC8gcXVlcnktcmVmZXJlbmNlIC8gcGF0aC1yZWZlcmVuY2UgLyBib2R5LXJlZmVyZW5jZQpoZWFkZXItcmVmZXJlbmNlID0gImhlYWRlci4iIHRva2VuCnF1ZXJ5LXJlZmVyZW5jZSAgPSAicXVlcnkuIiBuYW1lCnBhdGgtcmVmZXJlbmNlICAgPSAicGF0aC4iIG5hbWUKYm9keS1yZWZlcmVuY2UgICA9ICJib2R5IiBbIiMiIGpzb24tcG9pbnRlciBdCm5hbWUgICAgICAgICAgICAgPSAqKCBDSEFSICkKCjsgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2OTAxI3NlY3Rpb24tMwpqc29uLXBvaW50ZXIgICAgID0gKiggIi8iIHJlZmVyZW5jZS10b2tlbiApCnJlZmVyZW5jZS10b2tlbiAgPSAqKCB1bmVzY2FwZWQgLyBlc2NhcGVkICkKdW5lc2NhcGVkICAgICAgICA9ICV4MDAtMkUgLyAleDMwLTdEIC8gJXg3Ri0xMEZGRkYKICAgICAgICAgICAgICAgICA7ICV4MkYgKCcvJykgYW5kICV4N0UgKCd+JykgYXJlIGV4Y2x1ZGVkIGZyb20gJ3VuZXNjYXBlZCcKZXNjYXBlZCAgICAgICAgICA9ICJ+IiAoICIwIiAvICIxIiApCiAgICAgICAgICAgICAgICAgOyByZXByZXNlbnRpbmcgJ34nIGFuZCAnLycsIHJlc3BlY3RpdmVseQoKOyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjIuNgp0b2tlbiAgICAgICAgICA9IDEqdGNoYXIKdGNoYXIgICAgICAgICAgPSAiISIgLyAiIyIgLyAiJCIgLyAiJSIgLyAiJiIgLyAiJyIgLyAiKiIKICAgICAgICAgICAgICAgLyAiKyIgLyAiLSIgLyAiLiIgLyAiXiIgLyAiXyIgLyAiYCIgLyAifCIgLyAifiIKICAgICAgICAgICAgICAgLyBESUdJVCAvIEFMUEhBCiAgICAgICAgICAgICAgIDsgYW55IFZDSEFSLCBleGNlcHQgZGVsaW1pdGVycwoKOyBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNzE1OSNzZWN0aW9uLTcKQ0hBUiA9IHVuZXNjYXBlIC8KICAgIGVzY2FwZSAoCiAgICAgICAgJXgyMiAvICAgICAgICAgIDsgIiAgICBxdW90YXRpb24gbWFyayAgVSswMDIyCiAgICAgICAgJXg1QyAvICAgICAgICAgIDsgXCAgICByZXZlcnNlIHNvbGlkdXMgVSswMDVDCiAgICAgICAgJXgyRiAvICAgICAgICAgIDsgLyAgICBzb2xpZHVzICAgICAgICAgVSswMDJGCiAgICAgICAgJXg2MiAvICAgICAgICAgIDsgYiAgICBiYWNrc3BhY2UgICAgICAgVSswMDA4CiAgICAgICAgJXg2NiAvICAgICAgICAgIDsgZiAgICBmb3JtIGZlZWQgICAgICAgVSswMDBDCiAgICAgICAgJXg2RSAvICAgICAgICAgIDsgbiAgICBsaW5lIGZlZWQgICAgICAgVSswMDBBCiAgICAgICAgJXg3MiAvICAgICAgICAgIDsgciAgICBjYXJyaWFnZSByZXR1cm4gVSswMDBECiAgICAgICAgJXg3NCAvICAgICAgICAgIDsgdCAgICB0YWIgICAgICAgICAgICAgVSswMDA5CiAgICAgICAgJXg3NSA0SEVYRElHICkgIDsgdVhYWFggICAgICAgICAgICAgICAgVStYWFhYCmVzY2FwZSAgICAgICAgID0gJXg1QyAgIDsgXAp1bmVzY2FwZSAgICAgICA9ICV4MjAtMjEgLyAleDIzLTVCIC8gJXg1RC0xMEZGRkYKCjsgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM1MjM0I2FwcGVuZGl4LUIuMQpIRVhESUcgICAgICAgICA9ICBESUdJVCAvICJBIiAvICJCIiAvICJDIiAvICJEIiAvICJFIiAvICJGIgpESUdJVCAgICAgICAgICA9ICAleDMwLTM5ICAgOyAwLTkKQUxQSEEgICAgICAgICAgPSAgJXg0MS01QSAvICV4NjEtN0EgICA7IEEtWiAvIGEtegpgYGAKClRoZSBgbmFtZWAgaWRlbnRpZmllciBpcyBjYXNlLXNlbnNpdGl2ZSwgd2hlcmVhcyBgdG9rZW5gIGlzIG5vdC4KClRoZSB0YWJsZSBiZWxvdyBwcm92aWRlcyBleGFtcGxlcyBvZiBydW50aW1lIGV4cHJlc3Npb25zIGFuZCBleGFtcGxlcyBvZiB0aGVpciB1c2UgaW4gYSB2YWx1ZToKCiMjIyMjIEV4YW1wbGVzCgp8IFNvdXJjZSBMb2NhdGlvbiB8IGV4YW1wbGUgZXhwcmVzc2lvbiB8IG5vdGVzIHwKfCAtLS0tIHwgOi0tLS0gfCA6LS0tLSB8CnwgSFRUUCBNZXRob2QgfCBgJG1ldGhvZGAgfCBUaGUgYWxsb3dhYmxlIHZhbHVlcyBmb3IgdGhlIGAkbWV0aG9kYCB3aWxsIGJlIHRob3NlIGZvciB0aGUgSFRUUCBvcGVyYXRpb24uIHwKfCBSZXF1ZXN0ZWQgbWVkaWEgdHlwZSB8IGAkcmVxdWVzdC5oZWFkZXIuYWNjZXB0YCB8IHwKfCBSZXF1ZXN0IHBhcmFtZXRlciB8IGAkcmVxdWVzdC5wYXRoLmlkYCB8IFJlcXVlc3QgcGFyYW1ldGVycyBNVVNUIGJlIGRlY2xhcmVkIGluIHRoZSBgcGFyYW1ldGVyc2Agc2VjdGlvbiBvZiB0aGUgcGFyZW50IG9wZXJhdGlvbiBvciB0aGV5IGNhbm5vdCBiZSBldmFsdWF0ZWQuIFRoaXMgaW5jbHVkZXMgcmVxdWVzdCBoZWFkZXJzLiB8CnwgUmVxdWVzdCBib2R5IHByb3BlcnR5IHwgYCRyZXF1ZXN0LmJvZHkjL3VzZXIvdXVpZGAgfCBJbiBvcGVyYXRpb25zIHdoaWNoIGFjY2VwdCBwYXlsb2FkcywgcmVmZXJlbmNlcyBtYXkgYmUgbWFkZSB0byBwb3J0aW9ucyBvZiB0aGUgYHJlcXVlc3RCb2R5YCBvciB0aGUgZW50aXJlIGJvZHkuIHwKfCBSZXF1ZXN0IFVSTCB8IGAkdXJsYCB8IHwKfCBSZXNwb25zZSB2YWx1ZSB8IGAkcmVzcG9uc2UuYm9keSMvc3RhdHVzYCB8IEluIG9wZXJhdGlvbnMgd2hpY2ggcmV0dXJuIHBheWxvYWRzLCByZWZlcmVuY2VzIG1heSBiZSBtYWRlIHRvIHBvcnRpb25zIG9mIHRoZSByZXNwb25zZSBib2R5IG9yIHRoZSBlbnRpcmUgYm9keS4gfAp8IFJlc3BvbnNlIGhlYWRlciB8IGAkcmVzcG9uc2UuaGVhZGVyLlNlcnZlcmAgfCBTaW5nbGUgaGVhZGVyIHZhbHVlcyBvbmx5IGFyZSBhdmFpbGFibGUgfAoKUnVudGltZSBleHByZXNzaW9ucyBwcmVzZXJ2ZSB0aGUgdHlwZSBvZiB0aGUgcmVmZXJlbmNlZCB2YWx1ZS4KRXhwcmVzc2lvbnMgY2FuIGJlIGVtYmVkZGVkIGludG8gc3RyaW5nIHZhbHVlcyBieSBzdXJyb3VuZGluZyB0aGUgZXhwcmVzc2lvbiB3aXRoIGB7fWAgY3VybHkgYnJhY2VzLgoKIyMgTGljZW5zZQoKYEBzd2FnZ2VyZXhwZXJ0L29wZW5hcGktcnVudGltZS1leHByZXNzaW9uYCBpcyBsaWNlbnNlZCB1bmRlciBbQXBhY2hlIDIuMCBsaWNlbnNlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlcmV4cGVydC9vcGVuYXBpLXJ1bnRpbWUtZXhwcmVzc2lvbi9ibG9iL21haW4vTElDRU5TRSkuCmBAc3dhZ2dlcmV4cGVydC9vcGVuYXBpLXJ1bnRpbWUtZXhwcmVzc2lvbmAgY29tZXMgd2l0aCBhbiBleHBsaWNpdCBbTk9USUNFXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlcmV4cGVydC9vcGVuYXBpLXJ1bnRpbWUtZXhwcmVzc2lvbi9ibG9iL21haW4vTk9USUNFKSBmaWxlCmNvbnRhaW5pbmcgYWRkaXRpb25hbCBsZWdhbCBub3RpY2VzIGFuZCBpbmZvcm1hdGlvbi4K readmeEtag: '"fc77416d182fef85df4fd8aed436863a498b5e0a"' readmeLastModified: Mon, 17 Feb 2025 22:25:18 GMT repositoryId: 558798413 description: OpenAPI Runtime Expressions parser, validator and extractor. created: '2022-10-28T10:18:43Z' updated: '2026-01-21T20:45:15Z' language: JavaScript archived: false stars: 6 watchers: 1 forks: 0 owner: swaggerexpert logo: https://avatars.githubusercontent.com/u/172408630?v=4 license: Apache-2.0 repoEtag: '"9a42851f1773f47e455558431939d8d08c51b6a1583dc4473ea6cd18169b984c"' repoLastModified: Wed, 21 Jan 2026 20:45:15 GMT foundInMaster: true oldLocations: - https://github.com/char0n/openapi-runtime-expression - source: IMPLEMENTATIONS.md name: Oxygen OpenAPI Editor homepage: https://www.oxygenxml.com/openapi.html language: Java source_description: >- OpenAPI editor with a variety of editing features and helper views. Support for validation and editing OpenAPI 2.0, 3.0, and 3.1 based on JSON Schema specification. Includes a tool for generating documentations and a tool for testing OpenAPIs. category: Editors id: d874e7661794cdbf6243becfabd4d71d foundInMaster: true - source: IMPLEMENTATIONS.md name: Visual Studio Code extension homepage: https://marketplace.visualstudio.com/items?itemName=42Crunch.vscode-openapi language: TypeScript source_description: >- Extends VS Code to provide OpenAPI 2.0 and 3.0 navigation, code snippets, new API creation category: Editors foundInMaster: true id: 43647cd83453a9aa9ecc87f45fb01dfb - source: IMPLEMENTATIONS.md name: RepreZen API Studio homepage: https://www.reprezen.com/OpenAPI language: Java source_description: Commercial desktop IDE for API design, documentation & development category: Editors foundInMaster: true id: a89ec3ac594d929307e2c40ef58a899b - source: IMPLEMENTATIONS.md name: SwaggerHub homepage: https://swaggerhub.com language: - API Design and Documentation Platform - Built For Teams category: Editors foundInMaster: true id: 5c8b1a8e6d59b3b055d5083f29dedfbc - source: IMPLEMENTATIONS.md name: Remain OpenAPI Studio homepage: >- https://remainsoftware.com/extranet/download-type/openapi-studio-download
Or via Eclipse MarketPlace https://marketplace.eclipse.org/content/openapi-studio-rich-oas3-editor language: Java source_description: >- A user-friendly, visually rich studio supporting all features defined by the OpenAPI 3. Easy but powerful UI-based components creation, API testing, import, export, code generation and much more. category: Editors foundInMaster: true id: ebacf52793f49b2084d381fdf64da69f - source: IMPLEMENTATIONS.md name: lincoln homepage: https://github.com/temando/open-api-renderer language: React.js source_description: A React renderer for OpenAPI v3 category: - User Interfaces - Parsers foundInMaster: true repository: https://github.com/temando/open-api-renderer repositoryMetadata: base64Readme: >- IyBMaW5jb2xuCgo8aW1nIHNyYz0nYXNzZXRzL2xpbmNvbG4tbG9nby13aGl0ZS5wbmcnIGFsdD0nTGluY29sbicgaGVpZ2h0PSI5NiIgd2lkdGg9Ijk2IiAvPgoKWyFbTlBNXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS92L3JlYWN0LWxpbmNvbG4uc3ZnKV0oaHR0cHM6Ly9ucG1qcy5vcmcvcGFja2FnZXMvcmVhY3QtbGluY29sbi8pClshW1RyYXZpcyBDSV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90cmF2aXMvdGVtYW5kby9vcGVuLWFwaS1yZW5kZXJlci5zdmcpXShodHRwczovL3RyYXZpcy1jaS5vcmcvdGVtYW5kby9vcGVuLWFwaS1yZW5kZXJlcikKWyFbTUlUIExpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvdGVtYW5kby9vcGVuLWFwaS1yZW5kZXJlci5zdmcpXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NSVRfTGljZW5zZSkKWyFbSmF2YVNjcmlwdCBTdHlsZSBHdWlkZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlX3N0eWxlLXN0YW5kYXJkLWJyaWdodGdyZWVuLnN2ZyldKGh0dHBzOi8vc3RhbmRhcmRqcy5jb20pCgpNZWV0IExpbmNvbG4sIGEgW1JlYWN0XShodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC8pIGNvbXBvbmVudCBmb3IgcmVuZGVyaW5nIFtPcGVuQVBJXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcpIGRvY3VtZW50cy4gVGhlIHByb2plY3QgaXMgdHJhY2tpbmcgYWdhaW5zdCBbdjMuMC4wXShkb2NzL29wZW4tYXBpLXYzLXN1cHBvcnQubWQpIG9mIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24uCgpMaW5jb2xuIGFpbXMgdG8gc3VwcG9ydCBldmVyZ3JlZW4gYnJvd3NlcnMsIHN1Y2ggYXMgQ2hyb21lLCBGaXJlZm94LCBTYWZhcmkgYW5kIElFMTErLiBJdCBpcyByZXNwb25zaXZlIGFuZCBzaG91bGQgYmUgdXNhYmxlIG9uIG1vc3QgbW9kZXJuIGRldmljZXMuCgpbRGVtb10oaHR0cHM6Ly90ZW1hbmRvLmdpdGh1Yi5pby9vcGVuLWFwaS1yZW5kZXJlci9kZW1vLz91cmw9aHR0cHM6Ly90ZW1hbmRvLmdpdGh1Yi5pby9vcGVuLWFwaS1yZW5kZXJlci9wZXRzdG9yZS1vcGVuLWFwaS12My4wLjAtUkMyLmpzb24pCgojIyBJbnN0YWxsYXRpb24KCmBgYHNoCm5wbSBpbnN0YWxsIC0tc2F2ZSByZWFjdCByZWFjdC1kb20gcmVhY3QtbGluY29sbgpgYGAKCiMjIFVzYWdlCgpUbyB1c2UgTGluY29sbiBpbiB5b3VyIFJlYWN0IHByb2plY3Q6CgpgYGBqcwppbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnCmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nCmltcG9ydCBMaW5jb2xuIGZyb20gJ3JlYWN0LWxpbmNvbG4nCgpSZWFjdERPTS5yZW5kZXIoCiAgPExpbmNvbG4gZGVmaW5pdGlvblVybD0naHR0cHM6Ly90ZW1hbmRvLmdpdGh1Yi5pby9vcGVuLWFwaS1yZW5kZXJlci9wZXRzdG9yZS1vcGVuLWFwaS12My4wLjAtUkMyLmpzb24nIC8+LAogIGRvY3VtZW50LmJvZHkKKQpgYGAKCkFsdGVybmF0aXZlbHksIHlvdSBjYW4gcGFzcyB0aGUgY29udGVudHMgb2YgdGhlIGRlZmluaXRpb24gZGlyZWN0bHkgdG8gTGluY29sbjoKCmBgYGpzCmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCcKaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbScKaW1wb3J0IExpbmNvbG4gZnJvbSAncmVhY3QtbGluY29sbicKaW1wb3J0IGRlZmluaXRpb24gZnJvbSAnLi9teUFwaS55bWwnCgpSZWFjdERPTS5yZW5kZXIoPExpbmNvbG4gZGVmaW5pdGlvbj17ZGVmaW5pdGlvbn0gLz4sIGRvY3VtZW50LmJvZHkpCmBgYAoKIyMgQ29uZmlndXJhdGlvbgoKVGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZToKCnwgcHJvcGVydHkgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcXVpcmVkIHwgdHlwZSAgICB8IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IGBkZWZpbml0aW9uVXJsYCBvciBgZGVmaW5pdGlvbmAgfCDinJQgICAgICAgIHwgc3RyaW5nICB8IENPUlMtZW5hYmxlZCBVUkwgdG8sIG9yIGNvbnRlbnRzIG9mLCBPcGVuQVBJIHYzIGRvY3VtZW50IHRvIHJlbmRlci4gU3VwcG9ydHMgSlNPTiBvciBZQU1MLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgbmF2U29ydGAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCBlbnVtICAgIHwgVGhpcyBwcm9wZXJ0eSBhcHBsaWVzIHdoZW4geW91ciBkZWZpbml0aW9uIHVzZXMgYHRhZ3NgLiBWYWxpZCB2YWx1ZXMgYXJlIGBhbHBoYWAgd2hpY2ggc29ydHMgYnkgSFRUUCBtZXRob2QsIHRoZW4gcGF0aCBvciBgZmFsc2VgLCB3aGljaCB3aWxsIGRpc3BsYXkgcGF0aHMgYXMgZGVmaW5lZC4gRGVmYXVsdHMgdG8gYGZhbHNlYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGB2YWxpZGF0ZWAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8IGJvb2xlYW4gfCBJZiBgdHJ1ZWAsIHVzZXMgW01lcm1hZGVdKGh0dHBzOi8vb3BlbmFwaS1jb252ZXJ0ZXIuaGVyb2t1YXBwLmNvbS8pIHRvIHZhbGlkYXRlIGRlZmluaXRpb24uIERlZmF1bHRzIHRvIGBmYWxzZWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYGluaXRpYWxTY2hlbWFUcmVlRGVwdGhgICAgICAgICB8ICAgICAgICAgIHwgbnVtYmVyICB8IFRoZSBpbml0aWFsIG9wZW5lZCB0cmVlIGRlcHRoIGZvciBzY2hlbWEgdmlzdWFsaXNlciB3aGVuIGZpcnN0IHJlbmRlcmVkLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBzY2hlbWEncyBhY3R1YWwgY29udGVudHMgaXMgYSBjb3VwbGUgb2YgbGV2ZWxzIGRlZXAsIGFuZCB5b3Ugd2FudCB0byBleHBhbmQgdGhlIHRyZWUgdG8gdGhlIGNvbnRlbnRzIGF1dG9tYXRpY2FsbHkuIERlZmF1bHRzIHRvIDAuIHwKfCBgbmF2aWdhdGlvbk1ldGhvZERpc3BsYXlUeXBlYCAgIHwgICAgICAgICAgfCBzdHJpbmcgIHwgUmVndWxhdGVzIGhvdyB0aGUgbmF2aWdhdGlvbiBpdGVtcyBhcmUgcmVuZGVyZWQgLSBwYXRoIG9ubHksIHN1bW1hcnkgb25seSwgb3IgYm90aC4gVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmUgYHN1bW1hcnlgIChkZWZhdWx0KSwgYHBhdGhgLCBvciBgYWxsYC4gSW4gY2FzZSBvZiBhbnkgb3RoZXIgdmFsdWUgb25seSB0aGUgc3VtbWFyeSBpcyByZW5kZXJlZC4gICAgICAgICAgICAgICAgICAgICAgICAgfAoKIyMgUGhpbG9zb3BoeQoKV2hpbGUgdGhpcyBwcm9qZWN0IGlzIGN1cnJlbnRseSBmb2N1c2VkIG9uIHZpc3VhbGlzaW5nIE9wZW5BUEkgVjMgc3BlY2lmaWNhdGlvbnMsIGl0IGlzIGFyY2hpdGVjdGVkIGluIHN1Y2ggYSB3YXkgdGhhdCB0aGUgUmVhY3QgY29tcG9uZW50cyBkZWFsIHdpdGggYSBgVUlSZWFkeVNjaGVtYWAsIHdoaWNoIGlzIGEgZ2VuZXJpYyBzcGVjaWZpY2F0aW9uIChhZG1pdHRlZGx5IGhlYXZpbHkgYmFzZWQgb24gT3BlbkFQSSBWMykuCgpUaGUgZHJlYW0gaXMgdGhhdCB0aGlzIHJlbmRlcmVyIGNvdWxkIHZpc3VhbGlzZSBvdGhlciBmb3JtYXRzIGJ5IGludHJvZHVjaW5nIG5ldyBwYXJzZXJzIHdoaWNoIHRyYW5zZm9ybSBkb2N1bWVudHMgaW50byB0aGUgY29tbW9uIGBVSVJlYWR5U2NoZW1hYCBmb3JtYXQuIFRoaXMgYXBwcm9hY2ggYWxsb3dzIHVzIHRvIGJ1aWxkIHNvbWV0aGluZyBzdXN0YWluYWJsZSBhbmQgc2NhbGFibGUsIHdoZXJlIHRoZSBjb21tdW5pdHkgY2FuIGhlbHAgY29udHJpYnV0ZSBuZXcgcGFyc2VycyAoYW1vbmcgb3RoZXIgdGhpbmdzISkgYXMgcmVxdWlyZWQuCgpUaGUgcHJvamVjdCBpcyBkZWZpbml0ZWx5IGluIGl0cyBpbmZhbmN5IGFuZCB3ZSBhcmUgbm90IHJlYWR5IGZvciB0aGF0IHlldCwgYnV0IHdlIGhvcGUgYnkgc2hhcmluZyB0aGlzIHZpc2lvbiBlYXJseSwgb3RoZXJzIGNhbiBoZWxwIG1ha2UgaXQgYSByZWFsaXR5LiBGb3IgY29udHJpYnV0aW5nIGluZm9ybWF0aW9uLCBzZWUgW0NPTlRSSUJVVElORy5tZF0oQ09OVFJJQlVUSU5HLm1kKS4KCiMjIENyZWRpdAoKLSBUaGUgW1JlRG9jXShodHRwczovL2dpdGh1Yi5jb20vUmViaWxseS9SZURvYykgcHJvamVjdCBpbnNwaXJlZCBMaW5jb2xuLiBJZiB5b3UncmUgbG9va2luZyBmb3IgYW4gYWx0ZXJuYXRpdmUgcmVuZGVyZXIsIGdpdmUgUmVEb2MgYSB0cnkhCi0gW3N3YWdnZXIyb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL21lcm1hZGUvc3dhZ2dlcjJvcGVuYXBpKSB3aGljaCBMaW5jb2xuIHVzZXMgdG8gdmFsaWRhdGUgZGVmaW5pdGlvbnMuCgojIyBNYWludGFpbmVycwoKTGluY29sbiBpcyBhbiBvcGVuIHNvdXJjZSBwcm9qZWN0IGZyb20gW1RlbWFuZG9dKGh0dHA6Ly90ZW1hbmRvLmNvbS8pJ3MgRGV2ZWxvcGVyIEV4cGVyaWVuY2UgdGVhbS4gVGVtYW5kbyBjb25uZWN0cyBjYXJyaWVycyB3aXRoIHJldGFpbGVycyBhbmQgcmV0YWlsZXJzIHRvIHBlb3BsZS4gVGhlIFRlbWFuZG8gUGxhdGZvcm0gY29tYmluZXMgc2hpcHBpbmcgZXhwZXJpZW5jZXMsIG11bHRpLWNhcnJpZXIgY29ubmVjdGl2aXR5IGFuZCBsaWdodG5pbmcgZmFzdCBmdWxmaWxsbWVudCBpbiBvbmUgc29sdXRpb24uIElmIHRoaXMgc291bmRzIGxpa2UgZnVuLCBbd29yayB3aXRoIHVzXShodHRwOi8vdGVtYW5kby5jb20vZW4vYWJvdXQvY2FyZWVycykhCg== readmeEtag: '"11de7dad148f4d27dd30ee8f3c12fc1ebcc37f80"' readmeLastModified: Tue, 05 Mar 2019 18:56:03 GMT repositoryId: 86389954 description: 🎩 A React renderer for OpenAPI v3. created: '2017-03-27T22:26:14Z' updated: '2026-02-05T01:14:35Z' language: JavaScript archived: false stars: 153 watchers: 9 forks: 10 owner: temando logo: https://avatars.githubusercontent.com/u/2232135?v=4 license: MIT repoEtag: '"113d76b753187713136ca31028502dfa5d0efedf018281e011105c7e5a30545d"' repoLastModified: Thu, 05 Feb 2026 01:14:35 GMT id: 094e7e36be3a7e482c070bf15c50dd04 - source: IMPLEMENTATIONS.md name: WebSphere Liberty homepage: https://developer.ibm.com/wasdev/downloads/ language: - JavaScript - Java EE source_description: - >- Includes a native OpenAPI v3 UI which allows for customization of its banners and URL - Generates OpenAPI v3 documentation from Java EE applications category: - User Interfaces - Code Generators foundInMaster: true id: 8fcbff34d56152d1d872d7c64c002c7e - source: IMPLEMENTATIONS.md name: Tcases for OpenAPI homepage: >- https://github.com/Cornutum/tcases/blob/master/tcases-openapi/README.md#tcases-for-openapi-from-rest-ful-to-test-ful language: Java source_description: >- Generates test cases directly from an OpenAPI 3.0.X definition. Creates tests executable using various test frameworks. Bonus: Semantic linter reports elements that are inconsistent, superfluous, or dubious. category: - Testing Tools - Testing foundInMaster: true repository: >- https://github.com/Cornutum/tcases/blob/master/tcases-openapi/README.md#tcases-for-openapi-from-rest-ful-to-test-ful repositoryMetadata: base64Readme: >- IyBUY2FzZXM6IEEgTW9kZWwtQmFzZWQgVGVzdCBDYXNlIEdlbmVyYXRvciAjCgpbIVtNYXZlbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9tYXZlbi00LjEuMS1ncmVlbi5zdmcpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9dGNhc2VzLXNoZWxsKQpbIVtKYXZhZG9jXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2phdmFkb2MtNC4xLjEtZ3JlZW4uc3ZnKV0oaHR0cHM6Ly9qYXZhZG9jLmlvL2RvYy9vcmcuY29ybnV0dW0udGNhc2VzL3RjYXNlcy1zaGVsbCkKCiMjIFdoYXQncyBOZXc/ICMjCiAgKiBUaGUgbGF0ZXN0IHZlcnNpb24gKFtUY2FzZXMgNC4xLjFdKFJlbGVhc2VOb3Rlcy5tZCM0MTEpKSBpcyBub3cgYXZhaWxhYmxlIGF0IHRoZSBNYXZlbiBDZW50cmFsIFJlcG9zaXRvcnkuCiAgICBTZWUgWypIb3cgVG8gRG93bmxvYWQgVGNhc2VzKl0oSG93VG9Eb3dubG9hZC5tZCkgZm9yIGRvd25sb2FkIGluc3RydWN0aW9ucy4KCiAgKiBIYXZpbmcgdHJvdWJsZSB3aXRoIFRjYXNlcz8gQ2hlY2sgb3V0IFt0aGVzZSB0aXBzXSguL1Ryb3VibGVzaG9vdGluZy1GQVFzLm1kKS4KCiAgKiBHb3QgYSBxdWVzdGlvbj8gTmVlZCBzb21lIGd1aWRhbmNlPyBTdGFydCBhIFtkaXNjdXNzaW9uXShodHRwczovL2dpdGh1Yi5jb20vQ29ybnV0dW0vdGNhc2VzL2Rpc2N1c3Npb25zKS4KCiMjIFdoYXQgRG9lcyBJdCBEbz8gIyMKClRjYXNlcyBpcyBhIHRvb2wgZm9yIGRlc2lnbmluZyB0ZXN0cy4gSXQgZG9lc24ndCBtYXR0ZXIgd2hhdCBraW5kIG9mIHN5c3RlbSB5b3UgYXJlIHRlc3RpbmcgLS0gVUksIGNvbW1hbmQgbGluZSwKW1JFU1QtZnVsIEFQSV0odGNhc2VzLW9wZW5hcGkvUkVBRE1FLm1kI3RjYXNlcy1mb3Itb3BlbmFwaS1mcm9tLXJlc3QtZnVsLXRvLXRlc3QtZnVsKSwgb3IgYmFja2VuZC4gIE5vciBkb2VzIGl0IG1hdHRlcgp3aGF0IGxldmVsIG9mIHRoZSBzeXN0ZW0geW91IGFyZSB0ZXN0aW5nIC0tIHVuaXQsIHN1YnN5c3RlbSwgb3IgZnVsbCBzeXN0ZW0uIFlvdSBjYW4gdXNlIFRjYXNlcyB0byBkZXNpZ24geW91ciB0ZXN0cyBpbiBhbnkgb2YKdGhlc2Ugc2l0dWF0aW9ucy4gV2l0aCBUY2FzZXMsIHlvdSBkZWZpbmUgdGhlIGlucHV0IHNwYWNlIGZvciB5b3VyIHN5c3RlbS11bmRlci10ZXN0IGFuZCB0aGUgbGV2ZWwgb2YgY292ZXJhZ2UgdGhhdCB5b3UKd2FudC4gVGhlbiBUY2FzZXMgZ2VuZXJhdGVzIGEgbWluaW1hbCBzZXQgb2YgdGVzdCBjYXNlcyB0aGF0IG1lZXRzIHlvdXIgcmVxdWlyZW1lbnRzLgoKVGNhc2VzIGlzIHByaW1hcmlseSBhIHRvb2wgZm9yIGJsYWNrLWJveCB0ZXN0IGRlc2lnbi4gRm9yIHN1Y2ggdGVzdHMsIHRoZSBjb25jZXB0IG9mICJjb3ZlcmFnZSIgaXMgZGlmZmVyZW50IGZyb20gc3RydWN0dXJhbAp0ZXN0aW5nIGNyaXRlcmlhIHN1Y2ggYXMgbGluZSBjb3ZlcmFnZSwgYnJhbmNoIGNvdmVyYWdlLCBldGMuIEluc3RlYWQsIFRjYXNlcyBpcyBndWlkZWQgYnkgY292ZXJhZ2Ugb2YgdGhlIGlucHV0IHNwYWNlIG9mIHlvdXIKc3lzdGVtLgoKVGNhc2VzIGdpdmVzIHlvdSBhIHdheSB0byBkZWZpbmUgdGhlIGlucHV0IHNwYWNlIGZvciB5b3VyIHN5c3RlbSBpbiBhIGZvcm0gdGhhdCBpcyBjb25jaXNlIGJ1dCBjb21wcmVoZW5zaXZlLiBUaGVuIFRjYXNlcyBhbGxvd3MKeW91IHRvIGNvbnRyb2wgdGhlIG51bWJlciBvZiB0ZXN0IGNhc2VzIGluIHlvdXIgc2FtcGxlIHN1YnNldCBieSBzcGVjaWZ5aW5nIHRoZSBsZXZlbCBvZiBjb3ZlcmFnZSB5b3Ugd2FudC4gWW91IGNhbiBzdGFydCB3aXRoIGEKYmFzaWMgbGV2ZWwgb2YgY292ZXJhZ2UsIGFuZCBUY2FzZXMgd2lsbCBnZW5lcmF0ZSBhIHNtYWxsIHNldCBvZiB0ZXN0IGNhc2VzIHRoYXQgdG91Y2hlcyBldmVyeSBzaWduaWZpY2FudCBlbGVtZW50IG9mIHRoZSBpbnB1dApzcGFjZS4gVGhlbiB5b3UgY2FuIGltcHJvdmUgeW91ciB0ZXN0cyBieSBzZWxlY3RpdmVseSBhZGRpbmcgY292ZXJhZ2UgaW4gc3BlY2lmaWMgaGlnaC1yaXNrIGFyZWFzLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBzcGVjaWZ5CnBhaXJ3aXNlIGNvdmVyYWdlIG9yIGhpZ2hlci1vcmRlciBjb21iaW5hdGlvbnMgb2Ygc2VsZWN0ZWQgaW5wdXQgdmFyaWFibGVzLgoKIyMgSG93IERvZXMgSXQgV29yaz8gIyMKCkZpcnN0LCB5b3UgY3JlYXRlIGEgc3lzdGVtIGlucHV0IGRlZmluaXRpb24sIGEgZG9jdW1lbnQgdGhhdCBkZWZpbmVzIHlvdXIgc3lzdGVtIGFzIGEgc2V0IG9mIGZ1bmN0aW9ucy4gRm9yIGVhY2ggc3lzdGVtCmZ1bmN0aW9uLCB0aGUgc3lzdGVtIGlucHV0IGRlZmluaXRpb24gZGVmaW5lcyB0aGUgdmFyaWFibGVzIHRoYXQgY2hhcmFjdGVyaXplIHRoZSBmdW5jdGlvbiBpbnB1dCBzcGFjZS4gSWYgeW91IGFyZSB0ZXN0aW5nIGEgV2ViCnNlcnZpY2UgQVBJLCB5b3UgY2FuIGV2ZW4gW2dlbmVyYXRlIGEgc3lzdGVtIGlucHV0IGRlZmluaXRpb24gYXV0b21hdGljYWxseV0odGNhc2VzLW9wZW5hcGkvUkVBRE1FLm1kI3RjYXNlcy1mb3Itb3BlbmFwaS1mcm9tLXJlc3QtZnVsLXRvLXRlc3QtZnVsKQpmcm9tIGFuIE9wZW5BUEkgZGVmaW5pdGlvbi4KClRoZW4sIHlvdSBjYW4gY3JlYXRlIGEgZ2VuZXJhdG9yIGRlZmluaXRpb24uIFRoYXQncyBhbm90aGVyIGRvY3VtZW50IHRoYXQgZGVmaW5lcyB0aGUgY292ZXJhZ2UgeW91IHdhbnQgZm9yIGVhY2ggc3lzdGVtCmZ1bmN0aW9uLiBUaGUgZ2VuZXJhdG9yIGRlZmluaXRpb24gaXMgb3B0aW9uYWwuIFlvdSBjYW4gc2tpcCB0aGlzIHN0ZXAgYW5kIHN0aWxsIGdldCBhIGJhc2ljIGxldmVsIG9mIGNvdmVyYWdlLgoKRmluYWxseSwgeW91IHJ1biBUY2FzZXMuIFRjYXNlcyBpcyBhIEphdmEgcHJvZ3JhbSB0aGF0IHlvdSBjYW4gcnVuIGZyb20gdGhlIGNvbW1hbmQgbGluZSBvciB1c2luZyB0aGUKW1RjYXNlcyBNYXZlbiBQbHVnaW5dKGh0dHA6Ly93d3cuY29ybnV0dW0ub3JnL3RjYXNlcy9kb2NzL3RjYXNlcy1tYXZlbi1wbHVnaW4vKS4gVGhlIGNvbW1hbmQgbGluZSB2ZXJzaW9uIG9mIFRjYXNlcyBjb21lcyB3aXRoIGJ1aWx0LWluCnN1cHBvcnQgZm9yIHJ1bm5pbmcgdXNpbmcgYSBzaGVsbCBzY3JpcHQgb3IgYW4gYW50IHRhcmdldC4gVXNpbmcgeW91ciBpbnB1dCBkZWZpbml0aW9uIGFuZCB5b3VyIGdlbmVyYXRvciBkZWZpbml0aW9uLCBUY2FzZXMKZ2VuZXJhdGVzIGEgc3lzdGVtIHRlc3QgZGVmaW5pdGlvbi4gVGhlIHN5c3RlbSB0ZXN0IGRlZmluaXRpb24gaXMgYSBkb2N1bWVudCB0aGF0IGxpc3RzLCBmb3IgZWFjaCBzeXN0ZW0gZnVuY3Rpb24sIGEgc2V0IG9mIHRlc3QKY2FzZXMgdGhhdCBwcm92aWRlcyB0aGUgc3BlY2lmaWVkIGxldmVsIG9mIGNvdmVyYWdlLiBFYWNoIHRlc3QgY2FzZSBkZWZpbmVzIGEgc3BlY2lmaWMgdmFsdWUgZm9yIGV2ZXJ5IGZ1bmN0aW9uIGlucHV0CnZhcmlhYmxlLiBUY2FzZXMgZ2VuZXJhdGVzIG5vdCBvbmx5IHZhbGlkIGlucHV0IHZhbHVlcyB0aGF0IGRlZmluZSBzdWNjZXNzZnVsIHRlc3QgY2FzZXMgYnV0IGFsc28gaW52YWxpZCB2YWx1ZXMgZm9yIHRoZSB0ZXN0cwpjYXNlcyB0aGF0IGFyZSBuZWVkZWQgdG8gdmVyaWZ5IGV4cGVjdGVkIGVycm9yIGhhbmRsaW5nLgoKT2YgY291cnNlLCB0aGUgc3lzdGVtIHRlc3QgZGVmaW5pdGlvbiBpcyBub3Qgc29tZXRoaW5nIHlvdSBjYW4gZXhlY3V0ZSBkaXJlY3RseS4gKFVubGVzcyBpdCB3YXMKW2Rlcml2ZWQgYXV0b21hdGljYWxseSBmcm9tIGFuIE9wZW5BUEkgZGVmaW5pdGlvbl0odGNhc2VzLW9wZW5hcGkvUkVBRE1FLm1kI2hvdy1kby15b3UtcnVuLWdlbmVyYXRlZC1hcGktdGVzdC1jYXNlcykhKQpCdXQgaXQgZm9sbG93cyBhIHdlbGwtZGVmaW5lZCBzY2hlbWEsIHdoaWNoIG1lYW5zIHlvdSBjYW4gdXNlIGEgdmFyaWV0eSBvZiB0cmFuc2Zvcm1hdGlvbiB0b29scyB0byBjb252ZXJ0IGl0IGludG8gYSBmb3JtIHRoYXQKaXMgc3VpdGFibGUgZm9yIHRlc3RpbmcgeW91ciBzeXN0ZW0uIEZvciBleGFtcGxlLCBUY2FzZXMgY29tZXMgd2l0aCBhIGJ1aWx0LWluIHRyYW5zZm9ybWVyIHRoYXQgY29udmVydHMgYSBzeXN0ZW0gdGVzdApkZWZpbml0aW9uIGludG8gYSBKYXZhIHNvdXJjZSBjb2RlIHRlbXBsYXRlIGZvciBhIEpVbml0IG9yIFRlc3RORyB0ZXN0IGNsYXNzLgoKIyMgR2V0IFN0YXJ0ZWQhICMjCgogICogKipUaGUgTG93ZG93bioqCiAgICAqIFtUY2FzZXM6IFRoZSBDb21wbGV0ZSBHdWlkZV0oLi9UY2FzZXMtR3VpZGUubWQjdGNhc2VzLXRoZS1jb21wbGV0ZS1ndWlkZSkKICAgICogW1RjYXNlcyBmb3IgT3BlbkFQSV0odGNhc2VzLW9wZW5hcGkvUkVBRE1FLm1kI3RjYXNlcy1mb3Itb3BlbmFwaS1mcm9tLXJlc3QtZnVsLXRvLXRlc3QtZnVsKTogVGVzdGluZyBhIFJFU1QtZnVsIEFQST8gR2VuZXJhdGUgdGVzdCBjYXNlcyBkaXJlY3RseSBmcm9tIHlvdXIgT3BlbkFQSSB2MyBkZWZpbml0aW9uLgogICAgKiBbVGhlIFRjYXNlcyBNYXZlbiBQbHVnaW5dKGh0dHA6Ly93d3cuY29ybnV0dW0ub3JnL3RjYXNlcy9kb2NzL3RjYXNlcy1tYXZlbi1wbHVnaW4vKQoKICAqICoqSGVscGZ1bCBHdWlkZXMqKgogICAgKiBbSG93IFRvIERvd25sb2FkIFVzaW5nIE1hdmVuXShIb3dUb0Rvd25sb2FkLm1kKQogICAgKiBbSG93IFRvIFNldHVwIGEgVGNhc2VzIFdlYiBTZXJ2aWNlXSguL1RjYXNlcy1XZWItU2VydmljZS5tZCkKICAgICogW1VzaW5nIFRoZSBUY2FzZXMgQVBJXSguL1VzaW5nLVRjYXNlcy1BUEkubWQpCiAgICAqIFtUcm91Ymxlc2hvb3RpbmcgRkFRXSguL1Ryb3VibGVzaG9vdGluZy1GQVFzLm1kI3Ryb3VibGVzaG9vdGluZy1mYXFzKQogICAgKiBbUmVsZWFzZSBOb3Rlc10oUmVsZWFzZU5vdGVzLm1kKQoKICAqICoqTW9yZSBJbmZvKioKICAgICogW01vZGVsLURyaXZlbiBUZXN0aW5nIFVzaW5nIFRjYXNlc10oTW9kZWxEcml2ZW5UZXN0aW5nRm9yQWdpbGVUZWFtcy5tZCkKICAgICogSmF2YWRvYzogW1RjYXNlcyBBUEldKGh0dHA6Ly93d3cuY29ybnV0dW0ub3JnL3RjYXNlcy9kb2NzL2FwaS9pbmRleC5odG1sKQoKIyMgQ29udHJpYnV0b3JzICMjCgpUaGFua3MgdG8gdGhlIGZvbGxvd2luZyBwZW9wbGUsIHdobyBoYXZlIGNvbnRyaWJ1dGVkIHNpZ25pZmljYW50IGltcHJvdmVtZW50cyB0byBUY2FzZXMuCgogICogW0tlcnJ5IEtpbWJyb3VnaF0oaHR0cHM6Ly9naXRodWIuY29tL2tlcnJ5a2ltYnJvdWdoKSAocHJvamVjdCBmb3VuZGVyKQogICogW0p1Z2xhcl0oaHR0cHM6Ly9naXRodWIuY29tL2p1Z2xhcikKICAqIFtUaGliYXVsdCBLcnVzZV0oaHR0cHM6Ly9naXRodWIuY29tL3RrcnVzZSkK readmeEtag: '"ca9a75dabe602853f00d0e6ee6f9a7326d7f4433"' readmeLastModified: Thu, 27 Nov 2025 22:47:20 GMT repositoryId: 32223373 description: A model-based test case generator created: '2015-03-14T17:22:38Z' updated: '2025-12-18T16:57:03Z' language: Java archived: false stars: 236 watchers: 16 forks: 56 owner: Cornutum logo: https://avatars.githubusercontent.com/u/11477145?v=4 license: MIT repoEtag: '"a1d286eef641716d283e62ff50d46ad41827aaf523f41391a8f106f17a7d330b"' repoLastModified: Thu, 18 Dec 2025 16:57:03 GMT id: 14da7572a7632f9a9fb1c1ab2acef586 - source: IMPLEMENTATIONS.md name: Vert.x Web API Contract homepage: http://vertx.io/docs/#web language: - Java - Kotlin - JavaScript - Groovy - Ruby - Ceylon - Scala source_description: >- Create an API endpoint with Vert.x 3 and OpenAPI 3 with automatic requests validation category: Server Implementations foundInMaster: true id: f991830834ff7a8fdec302b6ff07ec42 - source: IMPLEMENTATIONS.md name: Modern homepage: https://github.com/modern-project/modern-ruby language: Ruby source_description: >- OpenAPI 3-based Rack framework with automatic OAS generation and requests/response validation category: Server Implementations foundInMaster: true repository: https://github.com/modern-project/modern-ruby repositoryMetadata: base64Readme: >- IyBNb2Rlcm4gIwoKIyMgVXNpbmcgTW9kZXJuICMjCkEgZGV0YWlsZWQgZGVzY3JpcHRpb24gaXMgb24gdGhlIHdheS4gRm9yIG5vdywgcGxlYXNlIGZlZWwgZnJlZSB0byBwZXJ1c2Ugb3VyClt0ZXN0IGNhc2VzXSBhbmQgdGhlIGJlZ2lubmluZ3Mgb2Ygb3VyIFttYW51YWxdIHRvIGdldCBhbiBpZGVhIG9mIE1vZGVybiBhbmQgaG93Cml0IHdvcmtzLgoKIyMgVmVyc2lvbmluZyAjIwpUaGlzIHByb2plY3QgZm9sbG93cyB0aGUgW1NlbWFudGljIFZlcnNpb25pbmddLCB2ZXJzaW9uIDIuMC4wLCB3aXRoIG9uZQphZGRlbmR1bTogdW50aWwgdGhlIHByb2plY3QgcmVhY2hlcyB0aGUgMS4wLjAgbWFyaywgdGhlIG1pbm9yIHZlcnNpb24gbnVtYmVyCihpLmUuLCAwLnkuKikgZGVub3RlcyBhbiBBUEktYnJlYWtpbmcgY2hhbmdlLgoKIyMgQ29udHJpYnV0aW5nICMjCkJ1ZyByZXBvcnRzIGFuZCBwdWxsIHJlcXVlc3RzIGFyZSB3ZWxjb21lIFtvbiBHaXRIdWJdLiBUaGlzIHByb2plY3QgaXMgaW50ZW5kZWQKdG8gYmUgYSBzYWZlLCB3ZWxjb21pbmcgc3BhY2UgZm9yIGNvbGxhYm9yYXRpb24sIGFuZCBjb250cmlidXRvcnMgYXJlIGV4cGVjdGVkCnRvIGFkaGVyZSB0byB0aGUgW0NvbnRyaWJ1dG9yIENvdmVuYW50XSBjb2RlIG9mIGNvbmR1Y3QuCgpUaGUgYmVzdCB3YXkgdG8gc3RhcnQgY29udHJpYnV0aW5nIGlzIHRvIGxvb2sgZm9yIGBUT0RPYCBjb21tZW50cyBpbiB0aGUgY29kZTsKdGhleSdyZSBzcHJpbmtsZWQgbGliZXJhbGx5IHdoZXJldmVyIGl0IGRpZG4ndCBxdWl0ZSBtYWtlIHNlbnNlIHRvIGRvIHNvbWV0aGluZwp5ZXQgYnV0IHNvbWUgaWRlYXMgbWlnaHQgYmUgbHVya2luZyB0aGF0IGRlc2NyaWJlIGhvdyBpdCBjb3VsZCBiZSBoYW5kbGVkLiBJZgpub3Q/IEZpbGUgYW4gaXNzdWUgYW5kIGxldCdzIGNoYXQgYWJvdXQgaXQhCgojIyBMaWNlbnNlICMjClRoZSBnZW0gaXMgYXZhaWxhYmxlIGFzIG9wZW4gc291cmNlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgW01JVCBMaWNlbnNlXS4KCiMjIENvZGUgb2YgQ29uZHVjdCAjIwpFdmVyeW9uZSBpbnRlcmFjdGluZyBpbiB0aGUgTW9kZXJuIHByb2plY3TigJlzIGNvZGViYXNlcywgaXNzdWUgdHJhY2tlcnMsIGNoYXQKcm9vbXMgYW5kIG1haWxpbmcgbGlzdHMgaXMgZXhwZWN0ZWQgdG8gZm9sbG93IHRoZSBbY29kZSBvZiBjb25kdWN0XS4KClt0ZXN0IGNhc2VzXTogaHR0cHM6Ly9naXRodWIuY29tL2Vyb3BwbGUvbW9kZXJuL3RyZWUvbWFzdGVyL3NwZWMvbW9kZXJuClttYW51YWxdOiBodHRwczovL2dpdGh1Yi5jb20vZXJvcHBsZS9tb2Rlcm4vdHJlZS9tYXN0ZXIvbWFudWFsCltTZW1hbnRpYyBWZXJzaW9uaW5nXTogaHR0cHM6Ly9zZW12ZXIub3JnLwpbb24gR2l0SHViXTogaHR0cHM6Ly9naXRodWIuY29tL2Vyb3BwbGUvbW9kZXJuCltDb250cmlidXRvciBDb3ZlbmFudF06IGh0dHA6Ly9jb250cmlidXRvci1jb3ZlbmFudC5vcmcKW01JVCBMaWNlbnNlXTogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKW2NvZGUgb2YgY29uZHVjdF06IGh0dHBzOi8vZ2l0aHViLmNvbS9lcm9wcGxlL21vZGVybi9ibG9iL21hc3Rlci9DT0RFX09GX0NPTkRVQ1QubWQ= readmeEtag: '"f0baa1b74cb7dfb9be1bc8727966e62d1c6260fc"' readmeLastModified: Tue, 26 Feb 2019 05:25:01 GMT repositoryId: 121304397 description: An OpenAPI-first web server for Ruby/Rack. created: '2018-02-12T21:30:10Z' updated: '2024-10-07T05:14:37Z' language: Ruby archived: false stars: 14 watchers: 3 forks: 1 owner: modern-project logo: https://avatars.githubusercontent.com/u/36420497?v=4 license: MIT repoEtag: '"e9e0eae189e1720adf68f0d2a8647811892998133df91243f0dbeeed80851f11"' repoLastModified: Mon, 07 Oct 2024 05:14:37 GMT id: 8bc7fa880ea28bdf448ee5dfd659e352 - source: IMPLEMENTATIONS.md name: Exegesis homepage: https://github.com/exegesis-js/exegesis language: Node.js source_description: OpenAPI 3 server-side framework for express and other frameworks. category: Server Implementations foundInMaster: true repository: https://github.com/exegesis-js/exegesis repositoryMetadata: base64Readme: >- IyBFeGVnZXNpcyBPcGVuQVBJIEVuZ2luZQoKWyFbTlBNIHZlcnNpb25dKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9qcy9leGVnZXNpcy5zdmcpXShodHRwczovL25wbWpzLm9yZy9wYWNrYWdlL2V4ZWdlc2lzKQohW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL2V4ZWdlc2lzLWpzL2V4ZWdlc2lzL3dvcmtmbG93cy9HaXRIdWIlMjBDSS9iYWRnZS5zdmcpClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvZXhlZ2VzaXMtanMvZXhlZ2VzaXMvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vci9leGVnZXNpcy1qcy9leGVnZXNpcykKWyFbR3JlZW5rZWVwZXIgYmFkZ2VdKGh0dHBzOi8vYmFkZ2VzLmdyZWVua2VlcGVyLmlvL2V4ZWdlc2lzLWpzL2V4ZWdlc2lzLnN2ZyldKGh0dHBzOi8vZ3JlZW5rZWVwZXIuaW8vKQpbIVtzZW1hbnRpYy1yZWxlYXNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlLyUyMCUyMCVGMCU5RiU5MyVBNiVGMCU5RiU5QSU4MC1zZW1hbnRpYy0tcmVsZWFzZS1lMTAwNzkuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3NlbWFudGljLXJlbGVhc2Uvc2VtYW50aWMtcmVsZWFzZSkKCj4gIyMgX2V4ZWdlc2lzXwo+Cj4gX24uXyBBbiBleHBsYW5hdGlvbiBvciBjcml0aWNhbCBpbnRlcnByZXRhdGlvbiBvZiBhIHRleHQsIGVzcGVjaWFsbHkgYW4KPiBBUEkgZGVmaW5pdGlvbiBkb2N1bWVudC4KPgo+IC0tIE5vIGRpY3Rpb25hcnkgZXZlcgoKVGhpcyBsaWJyYXJ5IGltcGxlbWVudHMgYSBmcmFtZXdvcmstYWdub3N0aWMgc2VydmVyIHNpZGUgaW1wbGVtZW50YXRpb24gb2YKW09wZW5BUEkgMy54XShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMS5tZCNyZXF1ZXN0Qm9keU9iamVjdCkuCgojIyBEZXNjcmlwdGlvbgoKRXhlZ2VzaXMgaXMgYSBsaWJyYXJ5IGZvciBpbXBsZW1lbnRpbmcgc2VydmVyLXNpZGUgT3BlbkFQSSAzLnggVGhlIGxpYnJhcnkgaGFzIGJlZW4Kd3JpdHRlbiBpbiBzdWNoIGEgd2F5IHRoYXQgaG9wZWZ1bGx5IGl0IHdpbGwgYWxzbyBiZSB1c2VkIHRvIGltcGxlbWVudCBmdXR1cmUKdmVyc2lvbnMgb2YgT3BlbkFQSSwgb3IgcG9zc2libHkgZXZlbiBvdGhlciBBUEkgZGVzY3JpcHRpb24gc3RhbmRhcmRzIGFsdG9nZXRoZXIuCgpZb3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBiZSB1c2luZyB0aGlzIGxpYnJhcnkgZGlyZWN0bHkuIEhhdmUgYSBsb29rIGF0OgoKLSBbZXhlZ2VzaXMtZXhwcmVzc10oaHR0cHM6Ly9naXRodWIuY29tL2V4ZWdlc2lzLWpzL2V4ZWdlc2lzLWV4cHJlc3MpIC0gTWlkZGxld2FyZQogIGZvciBzZXJ2aW5nIE9wZW5BUEkgMy54IEFQSXMgZnJvbSBbZXhwcmVzc10oaHR0cHM6Ly9leHByZXNzanMuY29tLykgb3IKICBbY29ubmVjdF0oaHR0cHM6Ly9naXRodWIuY29tL3NlbmNoYWxhYnMvY29ubmVjdCkuCi0gW2V4ZWdlc2lzLWtvYV0oaHR0cHM6Ly9naXRodWIuY29tL2NvbmZ1c2VyL2V4ZWdlc2lzLWtvYSkgLSBNaWRkbGV3YXJlCiAgZm9yIHNlcnZpbmcgT3BlbkFQSSAzLnggQVBJcyBmcm9tIFtrb2FdKGh0dHBzOi8va29hanMuY29tLykuCgojIyBGZWF0dXJlcwoKLSBGdWxsIHN1cHBvcnQgZm9yIE9wZW5BUEkgMy54LnggKHNlZSBbaXNzdWVzIHRhZ2dlZCB3aXRoIGNvbmZvcm1hbmNlXShodHRwczovL2dpdGh1Yi5jb20vZXhlZ2VzaXMtanMvZXhlZ2VzaXMvaXNzdWVzP3E9aXMlM0Fpc3N1ZStpcyUzQW9wZW4rbGFiZWwlM0Fjb25mb3JtYW5jZSkgZm9yIGFyZWFzIHdoaWNoIGNvdWxkIHVzZSBzb21lIGltcHJvdmVtZW50KS4KLSBCdWlsdCBpbiBzdXBwb3J0IGZvciAiYXBwbGljYXRpb24vanNvbiIgYW5kICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiIHJlcXVlc3RzCi0gQ2FuIHVzZSBleHByZXNzIFtib2R5IHBhcnNlciBtaWRkbGV3YXJlc10oaHR0cHM6Ly9naXRodWIuY29tL2V4ZWdlc2lzLWpzL2V4ZWdlc2lzL2Jsb2IvbWFzdGVyL2RvY3MvT3B0aW9ucy5tZCNtaW1ldHlwZXBhcnNlcnMpCi0gW1Jlc3BvbnNlIHZhbGlkYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9leGVnZXNpcy1qcy9leGVnZXNpcy9ibG9iL21hc3Rlci9kb2NzL09wdGlvbnMubWQjb25yZXNwb25zZXZhbGlkYXRpb25lcnJvcikKLSBbQXV0aGVudGljYXRpb24gc3VwcG9ydF0oaHR0cHM6Ly9naXRodWIuY29tL2V4ZWdlc2lzLWpzL2V4ZWdlc2lzL2Jsb2IvbWFzdGVyL2RvY3MvT0FTMyUyMFNlY3VyaXR5Lm1kKQotIFtQbHVnaW5zXShodHRwczovL2dpdGh1Yi5jb20vZXhlZ2VzaXMtanMvZXhlZ2VzaXMvdHJlZS9tYXN0ZXIvZG9jcykgYWxsb3cgZWFzeSBleHRlbnNpYmlsaXR5Ci0gRWFzeSBzdXBwb3J0IGZvciBbdmFsaWRhdGluZyBjdXN0b20gZm9ybWF0c10oaHR0cHM6Ly9naXRodWIuY29tL2V4ZWdlc2lzLWpzL2V4ZWdlc2lzL2Jsb2IvbWFzdGVyL2RvY3MvT3B0aW9ucy5tZCNjdXN0b21mb3JtYXRzKQoKIyMgVHV0b3JpYWwKCkNoZWNrIG91dCB0aGUgdHV0b3JpYWwgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9leGVnZXNpcy1qcy9leGVnZXNpcy9ibG9iL21hc3Rlci9kb2NzL1R1dG9yaWFsLm1kKS4KCiMjIEFQSQoKIyMjIGNvbXBpbGVBcGkob3BlbkFwaURvYywgb3B0aW9uc1ssIGRvbmVdKQoKVGhpcyBmdW5jdGlvbiB0YWtlcyBhbiBBUEkgZG9jdW1lbnQgYW5kIGEgc2V0IG9mCltvcHRpb25zXShodHRwczovL2dpdGh1Yi5jb20vZXhlZ2VzaXMtanMvZXhlZ2VzaXMvYmxvYi9tYXN0ZXIvZG9jcy9PcHRpb25zLm1kKSwKYW5kIHJldHVybnMgYSBjb25uZWN0LXN0eWxlIG1pZGRsZXdhcmUgZnVuY3Rpb24gd2hpY2ggd2lsbCBleGVjdXRlIHRoZSBBUEkuCgpgb3BlbkFwaURvY2AgaXMgZWl0aGVyIGEgcGF0aCB0byB5b3VyIG9wZW5hcGkueWFtbCBvciBvcGVuYXBpLmpzb24gZmlsZSwKb3IgaXQgY2FuIGJlIGEgSlNPTiBvYmplY3Qgd2l0aCB0aGUgY29udGVudHMgb2YgeW91ciBPcGVuQVBJIGRvY3VtZW50LiBUaGlzCnNob3VsZCBoYXZlIHRoZSBbYHgtZXhlZ2VzaXMtY29udHJvbGxlcmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9leGVnZXNpcy1qcy9leGVnZXNpcy9ibG9iL21hc3Rlci9kb2NzL09BUzMlMjBTcGVjaWZpY2F0aW9uJTIwRXh0ZW5zaW9ucy5tZCkKZXh0ZW5zaW9uIGRlZmluZWQgb24gYW55IHBhdGhzIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gYWNjZXNzLgoKYG9wdGlvbnNgIGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9leGVnZXNpcy1qcy9leGVnZXNpcy9ibG9iL21hc3Rlci9kb2NzL09wdGlvbnMubWQpLiBBdCBhCm1pbmltdW0sIHlvdSdsbCBwcm9iYWJseSB3YW50IHRvIHByb3ZpZGUgYG9wdGlvbnMuY29udHJvbGxlcnNgLCBhIHBhdGggdG8gd2hlcmUKeW91ciBbY29udHJvbGxlciBtb2R1bGVzXShodHRwczovL2dpdGh1Yi5jb20vZXhlZ2VzaXMtanMvZXhlZ2VzaXMvYmxvYi9tYXN0ZXIvZG9jcy9FeGVnZXNpcyUyMENvbnRyb2xsZXJzLm1kKQpjYW4gYmUgZm91bmQuIElmIHlvdSBoYXZlIGFueSBzZWN1cml0eSByZXF1aXJlbWVudHMgZGVmaW5lZCwgeW91J2xsIGFsc28Kd2FudCB0byBwYXNzIGluIHNvbWUgW2F1dGhlbnRpY2F0b3JzXShodHRwczovL2dpdGh1Yi5jb20vZXhlZ2VzaXMtanMvZXhlZ2VzaXMvYmxvYi9tYXN0ZXIvZG9jcy9PQVMzJTIwU2VjdXJpdHkubWQpLgpUbyBlbmFibGUgcmVzcG9uc2UgdmFsaWRhdGlvbiwgeW91J2xsIHdhbnQgdG8gcHJvdmlkZSBhIHZhbGlkYXRpb24gY2FsbGJhY2sKZnVuY3Rpb24gdmlhIFtgb25SZXNwb25zZVZhbGlkYXRpb25FcnJvcigpYF0oaHR0cHM6Ly9naXRodWIuY29tL2V4ZWdlc2lzLWpzL2V4ZWdlc2lzL2Jsb2IvbWFzdGVyL2RvY3MvT3B0aW9ucy5tZCNvbnJlc3BvbnNldmFsaWRhdGlvbmVycm9yKS4KRXhlZ2VzaXMncyBmdW5jdGlvbmFsaXR5IGNhbiBhbHNvIGJlIGV4dGVuZGVkIHVzaW5nIFtwbHVnaW5zXShodHRwczovL2dpdGh1Yi5jb20vZXhlZ2VzaXMtanMvZXhlZ2VzaXMvdHJlZS9tYXN0ZXIvZG9jcyksCndoaWNoIHJ1biBvbiBldmVyeSByZXF1ZXN0LiBQbHVnaW5zIGxldCB5b3UgYWRkIGZ1bmN0aW9uYWxpdHkgbGlrZQpbcm9sZSBiYXNlIGF1dGhvcml6YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9leGVnZXNpcy1qcy9leGVnZXNpcy1wbHVnaW4tcm9sZXMpLApvciBDT1JTLgoKIyMjIGNvbXBpbGVSdW5uZXIob3BlbkFwaURvYywgb3B0aW9uc1ssIGRvbmVdKQoKVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIGBjb21waWxlQXBpYDsgaXQgdGFrZXMgYW4gQVBJIGRvY3VtZW50IGFuZCBhIHNldCBvZgpbb3B0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL2V4ZWdlc2lzLWpzL2V4ZWdlc2lzL2Jsb2IvbWFzdGVyL2RvY3MvT3B0aW9ucy5tZCksCmFuZCByZXR1cm5zIGEgInJ1bm5lciIuIFRoZSBydW5uZXIgaXMgYSBgZnVuY3Rpb24gcnVubmVyKHJlcSwgcmVzKWAsIHdoaWNoIHRha2VzCmluIGEgc3RhbmRhcmQgbm9kZSBIVFRQIHJlcXVlc3QgYW5kIHJlc3BvbnNlLiBJdCB3aWxsIG5vdCBtb2RpZnkgdGhlIHJlc3BvbnNlLApob3dldmVyLiBJbnN0ZWFkIGl0IHJldHVybnMgKGVpdGhlciB2aWEgY2FsbGJhY2sgb3IgUHJvbWlzZSkgYW5kIGBIdHRwUmVzdWx0YApvYmplY3QuIFRoaXMgaXMgYSBge2hlYWRlcnMsIHN0YXR1cywgYm9keX1gIG9iamVjdCwgd2hlcmUgYGJvZHlgIGlzIGEgcmVhZGFibGUKc3RyZWFtLCByZWFkIHRvIGJlIHBpcGVkIHRvIHRoZSByZXNwb25zZS4KCiMjIyB3cml0ZUh0dHBSZXN1bHQoaHR0cFJlc3VsdCwgcmVzWywgZG9uZV0pCgpBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciB3cml0aW5nIGFuIGBIdHRwUmVzdWx0YCBmcm9tIGEgcnVubmVyIG91dCB0byB0aGUKcmVzcG9uc2UuCgojIyBFeGFtcGxlCgpgYGBqcwppbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnOwppbXBvcnQgKiBhcyBodHRwIGZyb20gJ2h0dHAnOwppbXBvcnQgKiBhcyBleGVnZXNpcyBmcm9tICdleGVnZXNpcyc7CgovLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2V4ZWdlc2lzLWpzL2V4ZWdlc2lzL2Jsb2IvbWFzdGVyL2RvY3MvT3B0aW9ucy5tZApjb25zdCBvcHRpb25zID0gewogIGNvbnRyb2xsZXJzOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi9zcmMvY29udHJvbGxlcnMnKSwKfTsKCi8vIGBjb21waWxlQXBpKClgIGNhbiBlaXRoZXIgYmUgdXNlZCB3aXRoIGEgY2FsbGJhY2ssIG9yIGlmIG5vbmUgaXMgcHJvdmlkZWQsCi8vIHdpbGwgcmV0dXJuIGEgUHJvbWlzZS4KZXhlZ2VzaXMuY29tcGlsZUFwaSgKICBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi9vcGVuYXBpL29wZW5hcGkueWFtbCcpLAogIG9wdGlvbnMsCiAgKGVyciwgbWlkZGxld2FyZSkgPT4gewogICAgaWYgKGVycikgewogICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBjcmVhdGluZyBtaWRkbGV3YXJlJywgZXJyLnN0YWNrKTsKICAgICAgcHJvY2Vzcy5leGl0KDEpOwogICAgfQoKICAgIGNvbnN0IHNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKChyZXEsIHJlcykgPT4KICAgICAgbWlkZGxld2FyZShyZXEsIHJlcywgKGVycikgPT4gewogICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgIHJlcy53cml0ZUhlYWQoZXJyLnN0YXR1cyB8fCA1MDApOwogICAgICAgICAgcmVzLmVuZChgSW50ZXJuYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJlcy53cml0ZUhlYWQoNDA0KTsKICAgICAgICAgIHJlcy5lbmQoKTsKICAgICAgICB9CiAgICAgIH0pCiAgICApOwoKICAgIHNlcnZlci5saXN0ZW4oMzAwMCk7CiAgfQopOwpgYGAKCiMjIEludGVybmFsIFdvcmtpbmdzCgpJbnRlcm5hbGx5LCB3aGVuIHlvdSAiY29tcGlsZSIgYW4gQVBJLCBFeGVnZXNpcyBwcm9kdWNlcyBhbgpbQXBpSW50ZXJmYWNlXShodHRwczovL2dpdGh1Yi5jb20vZXhlZ2VzaXMtanMvZXhlZ2VzaXMvYmxvYi9mNTI2NmRmZDI3Y2RiNDBjNWViZjgwNjMzMDNhY2JmNDgzZDc4ZWQ5L3NyYy90eXBlcy9pbnRlcm5hbC50cyNMNTApIG9iamVjdC4KVGhpcyBpcyBhbiBvYmplY3QgdGhhdCwgZ2l2ZW4gYSBtZXRob2QsIHVybCwgYW5kIGhlYWRlcnMsIHJldHVybnMgYQpbYHJlc29sdmVkT3BlcmF0aW9uYF0oaHR0cHM6Ly9naXRodWIuY29tL2V4ZWdlc2lzLWpzL2V4ZWdlc2lzL2Jsb2IvZjUyNjZkZmQyN2NkYjQwYzVlYmY4MDYzMzAzYWNiZjQ4M2Q3OGVkOS9zcmMvdHlwZXMvaW50ZXJuYWwudHMjTDIxKSAtCmVzc2VudGlhbGx5IGEgY29sbGVjdGlvbiBvZiBmdW5jdGlvbnMgdGhhdCB3aWxsIHBhcnNlIGFuZCB2YWxpZGF0ZSB0aGUgYm9keSBhbmQKcGFyYW1ldGVycywgaGFzIHRoZSBjb250cm9sbGVyIHRoYXQgZXhlY3V0ZXMgdGhlIGZ1bmN0aW9uYWxpdHksIGV0Yy4uLiBUaGUgb25seQpjdXJyZW50IGltcGxlbWVudGF0aW9uIGZvciBhbiBBcGlJbnRlcmZhY2UgaXMgdGhlCltgb2FzMy9PcGVuQXBpYCBjbGFzc10oaHR0cHM6Ly9naXRodWIuY29tL2V4ZWdlc2lzLWpzL2V4ZWdlc2lzL2Jsb2IvbWFzdGVyL3NyYy9vYXMzL09wZW5BcGkudHMpLgpFc3NlbnRpYWxseSB0aGlzIGNsYXNzJ3Mgam9iIGlzIHRvIHRha2UgaW4gYW4gT3BlbkFQSSAzLngueCBkb2N1bWVudCwgYW5kIHR1cm4gaXQKYW4gQXBpSW50ZXJmYWNlIHRoYXQgRXhlZ2VzaXMgY2FuIHVzZS4gSW4gdGhlb3J5LCBob3dldmVyLCB3ZSBjb3VsZCBwYXJzZSBzb21lCm90aGVyIEFQSSBkb2N1bWVudCBmb3JtYXQsIHByb2R1Y2UgYW4gQXBpSW50ZXJmYWNlLCBhbmQgRXhlZ3NpcyB3b3VsZCBzdGlsbCBiZQphYmxlIHRvIHJ1biBpdC4K readmeEtag: '"03673cbb061ddf9537f09b6542f23203b4f5732b"' readmeLastModified: Thu, 27 Jun 2024 19:51:44 GMT repositoryId: 130414902 description: Tools for implementing server-side OpenAPI 3.0.0 created: '2018-04-20T21:19:56Z' updated: '2025-10-22T09:57:37Z' language: TypeScript archived: false stars: 143 watchers: 7 forks: 37 owner: exegesis-js logo: https://avatars.githubusercontent.com/u/38572273?v=4 license: MIT repoEtag: '"610f37d87f641892fd6a4861dcba34c6526ecbf505fb1fcf7d5088d6578eadf2"' repoLastModified: Wed, 22 Oct 2025 09:57:37 GMT id: 3621b0c839384ca811a54a6d5e4f4c0c - source: IMPLEMENTATIONS.md name: PHP-CRUD-API homepage: https://github.com/mevdschee/php-crud-api language: PHP source_description: Automatic CRUD API with OpenAPI 3 docs category: Server Implementations foundInMaster: true repository: https://github.com/mevdschee/php-crud-api repositoryMetadata: base64Readme: >- IyBQSFAtQ1JVRC1BUEkKClNpbmdsZSBmaWxlIFBIUCBzY3JpcHQgdGhhdCBhZGRzIGEgUkVTVCBBUEkgdG8gYSBNeVNRTC9NYXJpYURCLCBQb3N0Z3JlU1FMLCBTUUwgU2VydmVyIG9yIFNRTGl0ZSBkYXRhYmFzZS4gCgpIb3d0bzogVXBsb2FkICJgYXBpLnBocGAiIHRvIHlvdXIgd2Vic2VydmVyLCBjb25maWd1cmUgaXQgdG8gY29ubmVjdCB0byB5b3VyIGRhdGFiYXNlLCBoYXZlIGFuIGluc3RhbnQgZnVsbC1mZWF0dXJlZCBSRVNUIEFQSS4KCk5COiBUaGlzIGlzIHRoZSBbVHJlZVFMXShodHRwczovL3RyZWVxbC5vcmcpIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpbiBQSFAuCgojIyBSZXF1aXJlbWVudHMKCiAgLSBQSFAgNy4yIG9yIGhpZ2hlciB3aXRoIFBETyBkcml2ZXJzIGVuYWJsZWQgZm9yIG9uZSBvZiB0aGVzZSBkYXRhYmFzZSBzeXN0ZW1zOgogICAgLSBNeVNRTCA1LjcgLyBNYXJpYURCIDEwLjAgb3IgaGlnaGVyIGZvciBzcGF0aWFsIGZlYXR1cmVzIGluIE15U1FMCiAgICAtIFBvc3RncmVTUUwgOS41IG9yIGhpZ2hlciB3aXRoIFBvc3RHSVMgMi4yIG9yIGhpZ2hlciBmb3Igc3BhdGlhbCBmZWF0dXJlcwogICAgLSBTUUwgU2VydmVyIDIwMTcgb3IgaGlnaGVyICgyMDE5IGFsc28gaGFzIExpbnV4IHN1cHBvcnQpCiAgICAtIFNRTGl0ZSAzLjE2IG9yIGhpZ2hlciAoc3BhdGlhbCBmZWF0dXJlcyBOT1Qgc3VwcG9ydGVkKQoKIyMgSW5zdGFsbGF0aW9uCgpEb3dubG9hZCB0aGUgImBhcGkucGhwYCIgZmlsZSBmcm9tIHRoZSBsYXRlc3QgcmVsZWFzZToKCmh0dHBzOi8vZ2l0aHViLmNvbS9tZXZkc2NoZWUvcGhwLWNydWQtYXBpL3JlbGVhc2VzL2xhdGVzdCBvciBkaXJlY3QgZnJvbTogIApodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbWV2ZHNjaGVlL3BocC1jcnVkLWFwaS9tYWluL2FwaS5waHAKClRoaXMgaXMgYSBzaW5nbGUgZmlsZSBhcHBsaWNhdGlvbiEgVXBsb2FkICJgYXBpLnBocGAiIHNvbWV3aGVyZSBhbmQgZW5qb3khCgpGb3IgbG9jYWwgZGV2ZWxvcG1lbnQgeW91IG1heSBydW4gUEhQJ3MgYnVpbHQtaW4gd2ViIHNlcnZlcjoKCiAgICBwaHAgLVMgbG9jYWxob3N0OjgwODAKClRlc3QgdGhlIHNjcmlwdCBieSBvcGVuaW5nIHRoZSBmb2xsb3dpbmcgVVJMOgoKICAgIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkucGhwL3JlY29yZHMvcG9zdHMvMQoKRG9uJ3QgZm9yZ2V0IHRvIG1vZGlmeSB0aGUgY29uZmlndXJhdGlvbiBhdCB0aGUgYm90dG9tIG9mIHRoZSBmaWxlLgoKQWx0ZXJuYXRpdmVseSB5b3UgY2FuIGludGVncmF0ZSB0aGlzIHByb2plY3QgaW50byB0aGUgd2ViIGZyYW1ld29yayBvZiB5b3VyIGNob2ljZSwgc2VlOgoKLSBbQXV0b21hdGljIFJFU1QgQVBJIGZvciBMYXJhdmVsXShodHRwczovL3RxZGV2LmNvbS8yMDE5LWF1dG9tYXRpYy1yZXN0LWFwaS1sYXJhdmVsKQotIFtBdXRvbWF0aWMgUkVTVCBBUEkgZm9yIFN5bWZvbnkgNF0oaHR0cHM6Ly90cWRldi5jb20vMjAxOS1hdXRvbWF0aWMtcmVzdC1hcGktc3ltZm9ueSkKLSBbQXV0b21hdGljIFJFU1QgQVBJIGZvciBTbGltUEhQIDRdKGh0dHBzOi8vdHFkZXYuY29tLzIwMTktYXV0b21hdGljLWFwaS1zbGltcGhwLTQpCgpJbiB0aGVzZSBpbnRlZ3JhdGlvbnMgW0NvbXBvc2VyXShodHRwczovL2dldGNvbXBvc2VyLm9yZy8pIGlzIHVzZWQgdG8gbG9hZCB0aGlzIHByb2plY3QgYXMgYSBkZXBlbmRlbmN5LgoKRm9yIHBlb3BsZSB0aGF0IGRvbid0IHVzZSBjb21wb3NlciwgdGhlIGZpbGUgImBhcGkuaW5jbHVkZS5waHBgIiBpcyBwcm92aWRlZC4gVGhpcyBmaWxlIGNvbnRhaW5zIGV2ZXJ5dGhpbmcgCmZyb20gImBhcGkucGhwYCIgZXhjZXB0IHRoZSBjb25maWd1cmF0aW9uIGZyb20gImBzcmMvaW5kZXgucGhwYCIgYW5kIGNhbiBiZSB1c2VkIGJ5IFBIUCdzICJpbmNsdWRlIiBmdW5jdGlvbi4KCiMjIENvbmZpZ3VyYXRpb24KCkVkaXQgdGhlIGZvbGxvd2luZyBsaW5lcyBpbiB0aGUgYm90dG9tIG9mIHRoZSBmaWxlICJgYXBpLnBocGAiOgoKICAgICRjb25maWcgPSBuZXcgQ29uZmlnKFsKICAgICAgICAndXNlcm5hbWUnID0+ICd4eHgnLAogICAgICAgICdwYXNzd29yZCcgPT4gJ3h4eCcsCiAgICAgICAgJ2RhdGFiYXNlJyA9PiAneHh4JywKICAgIF0pOwoKVGhlc2UgYXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB0aGVpciBkZWZhdWx0IHZhbHVlIGJldHdlZW4gYnJhY2tldHM6CgotICJkcml2ZXIiOiBgbXlzcWxgLCBgcGdzcWxgLCBgc3Fsc3J2YCBvciBgc3FsaXRlYCAoYG15c3FsYCkKLSAiYWRkcmVzcyI6IEhvc3RuYW1lIChvciBmaWxlbmFtZSkgb2YgdGhlIGRhdGFiYXNlIHNlcnZlciAoYGxvY2FsaG9zdGApCi0gInBvcnQiOiBUQ1AgcG9ydCBvZiB0aGUgZGF0YWJhc2Ugc2VydmVyIChkZWZhdWx0cyB0byBkcml2ZXIgZGVmYXVsdCkKLSAidXNlcm5hbWUiOiBVc2VybmFtZSBvZiB0aGUgdXNlciBjb25uZWN0aW5nIHRvIHRoZSBkYXRhYmFzZSAobm8gZGVmYXVsdCkKLSAicGFzc3dvcmQiOiBQYXNzd29yZCBvZiB0aGUgdXNlciBjb25uZWN0aW5nIHRvIHRoZSBkYXRhYmFzZSAobm8gZGVmYXVsdCkKLSAiZGF0YWJhc2UiOiBEYXRhYmFzZSB0aGUgY29ubmVjdGluZyBpcyBtYWRlIHRvIChubyBkZWZhdWx0KQotICJjb21tYW5kIjogRXh0cmEgU1FMIHRvIGluaXRpYWxpemUgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gKG5vbmUpCi0gInRhYmxlcyI6IENvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHRhYmxlcyB0byBwdWJsaXNoIChkZWZhdWx0cyB0byAnYWxsJykKLSAibWFwcGluZyI6IENvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHRhYmxlL2NvbHVtbiBtYXBwaW5ncyAobm8gbWFwcHBpbmcpCi0gImdlb21ldHJ5U3JpZCI6IFNSSUQgYXNzdW1lZCB3aGVuIGNvbnZlcnRpbmcgZnJvbSBXS1QgdG8gZ2VvbWV0cnkgKGA0MzI2YCkKLSAibWlkZGxld2FyZXMiOiBMaXN0IG9mIG1pZGRsZXdhcmVzIHRvIGxvYWQgKGBjb3JzYCkKLSAiY29udHJvbGxlcnMiOiBMaXN0IG9mIGNvbnRyb2xsZXJzIHRvIGxvYWQgKGByZWNvcmRzLGdlb2pzb24sb3BlbmFwaSxzdGF0dXNgKQotICJjdXN0b21Db250cm9sbGVycyI6IExpc3Qgb2YgdXNlciBjdXN0b20gY29udHJvbGxlcnMgdG8gbG9hZCAobm8gZGVmYXVsdCkKLSAib3BlbkFwaUJhc2UiOiBPcGVuQVBJIGluZm8gKGB7ImluZm8iOnsidGl0bGUiOiJQSFAtQ1JVRC1BUEkiLCJ2ZXJzaW9uIjoiMS4wLjAifX1gKQotICJjYWNoZVR5cGUiOiBgVGVtcEZpbGVgLCBgUmVkaXNgLCBgTWVtY2FjaGVgLCBgTWVtY2FjaGVkYCBvciBgTm9DYWNoZWAgKGBUZW1wRmlsZWApCi0gImNhY2hlUGF0aCI6IFBhdGgvYWRkcmVzcyBvZiB0aGUgY2FjaGUgKGRlZmF1bHRzIHRvIHN5c3RlbSdzIHRlbXAgZGlyZWN0b3J5KQotICJjYWNoZVRpbWUiOiBOdW1iZXIgb2Ygc2Vjb25kcyB0aGUgY2FjaGUgaXMgdmFsaWQgKGAxMGApCi0gImpzb25PcHRpb25zIjogT3B0aW9ucyB1c2VkIGZvciBlbmNvZGluZyBKU09OIChgSlNPTl9VTkVTQ0FQRURfVU5JQ09ERWApCi0gImRlYnVnIjogU2hvdyBlcnJvcnMgaW4gdGhlICJYLUV4Y2VwdGlvbiIgaGVhZGVycyAoYGZhbHNlYCkKLSAiYmFzZVBhdGgiOiBVUkkgYmFzZSBwYXRoIG9mIHRoZSBBUEkgKGRldGVybWluZWQgdXNpbmcgUEFUSF9JTkZPIGJ5IGRlZmF1bHQpCgpBbGwgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBhbHNvIGF2YWlsYWJsZSBhcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIFdyaXRlIHRoZSBjb25maWcgb3B0aW9uIHdpdGggY2FwaXRhbHMsIGEgIlBIUF9DUlVEX0FQSV8iIHByZWZpeCBhbmQgdW5kZXJzY29yZXMgZm9yIHdvcmQgYnJlYWtlcywgc28gZm9yIGluc3RhbmNlOgoKLSBQSFBfQ1JVRF9BUElfRFJJVkVSPW15c3FsCi0gUEhQX0NSVURfQVBJX0FERFJFU1M9bG9jYWxob3N0Ci0gUEhQX0NSVURfQVBJX1BPUlQ9MzMwNgotIFBIUF9DUlVEX0FQSV9EQVRBQkFTRT1waHAtY3J1ZC1hcGkKLSBQSFBfQ1JVRF9BUElfVVNFUk5BTUU9cGhwLWNydWQtYXBpCi0gUEhQX0NSVURfQVBJX1BBU1NXT1JEPXBocC1jcnVkLWFwaQotIFBIUF9DUlVEX0FQSV9ERUJVRz0xCgpUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBQSFAgY29uZmlndXJhdGlvbi4KCiMjIExpbWl0YXRpb25zCgpUaGVzZSBsaW1pdGF0aW9uIGFuZCBjb25zdHJhaW5zIGFwcGx5OgoKICAtIFByaW1hcnkga2V5cyBzaG91bGQgZWl0aGVyIGJlIGF1dG8taW5jcmVtZW50IChmcm9tIDEgdG8gMl41Mykgb3IgVVVJRAogIC0gQ29tcG9zaXRlIHByaW1hcnkgYW5kIGNvbXBvc2l0ZSBmb3JlaWduIGtleXMgYXJlIG5vdCBzdXBwb3J0ZWQKICAtIENvbXBsZXggd3JpdGVzICh0cmFuc2FjdGlvbnMpIGFyZSBub3Qgc3VwcG9ydGVkCiAgLSBDb21wbGV4IHF1ZXJpZXMgY2FsbGluZyBmdW5jdGlvbnMgKGxpa2UgImNvbmNhdCIgb3IgInN1bSIpIGFyZSBub3Qgc3VwcG9ydGVkCiAgLSBEYXRhYmFzZSBtdXN0IHN1cHBvcnQgYW5kIGRlZmluZSBmb3JlaWduIGtleSBjb25zdHJhaW50cwogIC0gU1FMaXRlIGNhbm5vdCBoYXZlIGJpZ2ludCB0eXBlZCBhdXRvIGluY3JlbWVudGluZyBwcmltYXJ5IGtleXMKICAtIFNRTGl0ZSBkb2VzIG5vdCBzdXBwb3J0IGFsdGVyaW5nIHRhYmxlIGNvbHVtbnMgKHN0cnVjdHVyZSkKICAgIAojIyBGZWF0dXJlcwoKVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOgoKICAtIENvbXBvc2VyIGluc3RhbGwgb3Igc2luZ2xlIFBIUCBmaWxlLCBlYXN5IHRvIGRlcGxveS4KICAtIFZlcnkgbGl0dGxlIGNvZGUsIGVhc3kgdG8gYWRhcHQgYW5kIG1haW50YWluCiAgLSBTdXBwb3J0cyBQT1NUIHZhcmlhYmxlcyBhcyBpbnB1dCAoeC13d3ctZm9ybS11cmxlbmNvZGVkKQogIC0gU3VwcG9ydHMgYSBKU09OIG9iamVjdCBhcyBpbnB1dAogIC0gU3VwcG9ydHMgYSBKU09OIGFycmF5IGFzIGlucHV0IChiYXRjaCBpbnNlcnQpCiAgLSBTYW5pdGl6ZSBhbmQgdmFsaWRhdGUgaW5wdXQgdXNpbmcgdHlwZSBydWxlcyBhbmQgY2FsbGJhY2tzCiAgLSBQZXJtaXNzaW9uIHN5c3RlbSBmb3IgZGF0YWJhc2VzLCB0YWJsZXMsIGNvbHVtbnMgYW5kIHJlY29yZHMKICAtIE11bHRpLXRlbmFudCBzaW5nbGUgYW5kIG11bHRpIGRhdGFiYXNlIGxheW91dHMgYXJlIHN1cHBvcnRlZAogIC0gTXVsdGktZG9tYWluIENPUlMgc3VwcG9ydCBmb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzCiAgLSBTdXBwb3J0IGZvciByZWFkaW5nIGpvaW5lZCByZXN1bHRzIGZyb20gbXVsdGlwbGUgdGFibGVzCiAgLSBTZWFyY2ggc3VwcG9ydCBvbiBtdWx0aXBsZSBjcml0ZXJpYQogIC0gUGFnaW5hdGlvbiwgc29ydGluZywgdG9wIE4gbGlzdCBhbmQgY29sdW1uIHNlbGVjdGlvbgogIC0gUmVsYXRpb24gZGV0ZWN0aW9uIHdpdGggbmVzdGVkIHJlc3VsdHMgKGJlbG9uZ3NUbywgaGFzTWFueSBhbmQgSEFCVE0pCiAgLSBBdG9taWMgaW5jcmVtZW50IHN1cHBvcnQgdmlhIFBBVENIIChmb3IgY291bnRlcnMpCiAgLSBCaW5hcnkgZmllbGRzIHN1cHBvcnRlZCB3aXRoIGJhc2U2NCBlbmNvZGluZwogIC0gU3BhdGlhbC9HSVMgZmllbGRzIGFuZCBmaWx0ZXJzIHN1cHBvcnRlZCB3aXRoIFdLVCBhbmQgR2VvSlNPTgogIC0gTWFwcGluZyB0YWJsZSBhbmQgY29sdW1uIG5hbWVzIHRvIHN1cHBvcnQgbGVnYWN5IHN5c3RlbXMKICAtIEdlbmVyYXRlIEFQSSBkb2N1bWVudGF0aW9uIHVzaW5nIE9wZW5BUEkgdG9vbHMKICAtIEF1dGhlbnRpY2F0aW9uIHZpYSBBUEkga2V5LCBKV1QgdG9rZW4gb3IgdXNlcm5hbWUvcGFzc3dvcmQKICAtIERhdGFiYXNlIGNvbm5lY3Rpb24gcGFyYW1ldGVycyBtYXkgZGVwZW5kIG9uIGF1dGhlbnRpY2F0aW9uCiAgLSBTdXBwb3J0IGZvciByZWFkaW5nIGRhdGFiYXNlIHN0cnVjdHVyZSBpbiBKU09OCiAgLSBTdXBwb3J0IGZvciBtb2RpZnlpbmcgZGF0YWJhc2Ugc3RydWN0dXJlIHVzaW5nIFJFU1QgZW5kcG9pbnQKICAtIFNlY3VyaXR5IGVuaGFuY2luZyBtaWRkbGV3YXJlIGlzIGluY2x1ZGVkCiAgLSBTdGFuZGFyZCBjb21wbGlhbnQ6IFBTUi00LCBQU1ItNywgUFNSLTEyLCBQU1ItMTUgYW5kIFBTUi0xNwoKIyMgUmVsYXRlZCBwcm9qZWN0cyBhbmQgcG9ydHMKClJlbGF0ZWQgcHJvamVjdHM6CgogIC0gW1BIUC1DUlVELUFQSSBRdWljayBTdGFydF0oaHR0cHM6Ly9naXRodWIuY29tL25pazIyMDgvcGhwLWNydWQtYXBpLXF1aWNrLXN0YXJ0KTogQSBjdXN0b21pemFibGUsIHJlYWR5IHRvIGdvLCBkb2NrZXIgY29tcG9zZSBmaWxlIGZlYXR1cmluZyBQSFAtQ1JVRC1BUEkuCiAgLSBbUEhQLUNSVUQtQVBJIGZpbHRlciBnZW5lcmF0b3JdKGh0dHBzOi8vdGhpcGFnZXMuZ2l0aHViLmlvL2pjYS1maWx0ZXIvIyk6IEEgSmF2YVNjcmlwdCBsaWJyYXJ5IGNyZWF0aW5nIFBIUC1DUlVELUFQSSBmaWx0ZXJzIGZyb20gZXhwcmVzc2lvbnMuCiAgLSBbSlMtQ1JVRC1BUEldKGh0dHBzOi8vZ2l0aHViLmNvbS90aGlwYWdlcy9qcy1jcnVkLWFwaSk6IEEgSmF2YVNjcmlwdCBjbGllbnQgbGlicmFyeSBmb3IgdGhlIEFQSSBvZiBQSFAtQ1JVRC1BUEkKICAtIFtQSFAtQVBJLUFVVEhdKGh0dHBzOi8vZ2l0aHViLmNvbS9tZXZkc2NoZWUvcGhwLWFwaS1hdXRoKTogU2luZ2xlIGZpbGUgUEhQIHNjcmlwdCB0aGF0IGlzIGFuIGF1dGhlbnRpY2F0aW9uIHByb3ZpZGVyIGZvciBQSFAtQ1JVRC1BUEkKICAtIFtQSFAtQ1JVRC1VSV0oaHR0cHM6Ly9naXRodWIuY29tL21ldmRzY2hlZS9waHAtY3J1ZC11aSk6IFNpbmdsZSBmaWxlIFBIUCBzY3JpcHQgdGhhdCBhZGRzIGEgVUkgdG8gYSBQSFAtQ1JVRC1BUEkgcHJvamVjdC4KICAtIFtQSFAtQ1JVRC1BRE1JTl0oaHR0cHM6Ly9naXRodWIuY29tL21ldmRzY2hlZS9waHAtY3J1ZC1hZG1pbik6IFNpbmdsZSBmaWxlIFBIUCBzY3JpcHQgdGhhdCBhZGRzIGEgZGF0YWJhc2UgYWRtaW4gaW50ZXJmYWNlIHRvIGEgUEhQLUNSVUQtQVBJIHByb2plY3QuCiAgLSBbUEhQLVNQLUFQSV0oaHR0cHM6Ly9naXRodWIuY29tL21ldmRzY2hlZS9waHAtc3AtYXBpKTogU2luZ2xlIGZpbGUgUEhQIHNjcmlwdCB0aGF0IGFkZHMgYSBSRVNUIEFQSSB0byBhIFNRTCBkYXRhYmFzZS4KICAtIFtkZXhpZS1teXNxbC1zeW5jXShodHRwczovL2dpdGh1Yi5jb20vc2NyaXB0UGlsb3QvZGV4aWUtbXlzcWwtc3luYyk6IFN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIGxvY2FsIEluZGV4ZWREQiBhbmQgTXlTUUwgRGF0YWJhc2UuIAogIC0gW3JhLWRhdGEtdHJlZXFsXShodHRwczovL2dpdGh1Yi5jb20vbmthcHBsZXIvcmEtZGF0YS10cmVlcWwpOiBOUE0gcGFja2FnZSB0aGF0IHByb3ZpZGVzIGEgW0RhdGEgUHJvdmlkZXJdKGh0dHBzOi8vbWFybWVsYWIuY29tL3JlYWN0LWFkbWluL0RhdGFQcm92aWRlckludHJvZHVjdGlvbi5odG1sKSBmb3IgW1JlYWN0IEFkbWluXShodHRwczovL21hcm1lbGFiLmNvbS9yZWFjdC1hZG1pbi8pLgogIC0gW3NjcmlwdFBpbG90L3Z1ZXVzZV0oaHR0cHM6Ly9naXRodWIuY29tL3NjcmlwdFBpbG90L3Z1ZXVzZS8pOiBWdWUgW0NvbXBvc2FibGVzXShodHRwczovL3Z1ZWpzLm9yZy9ndWlkZS9yZXVzYWJpbGl0eS9jb21wb3NhYmxlcy5odG1sKSBpbiBhZGRpdGlvbiB0byBbVnVlVXNlLm9yZ10oaHR0cHM6Ly92dWV1c2Uub3JnLykgKHRoYXQgc3VwcG9ydCBQSFAtQ1JVRC1BUEkpLgogIC0gW3NjcmlwdFBpbG90L2FkZC1waHAtYmFja2VuZF0oaHR0cHM6Ly9naXRodWIuY29tL3NjcmlwdFBpbG90L2FkZC1waHAtYmFja2VuZCk6IEFkZCBNeVNRTCwgcGhwTXlBZG1pbiBhbmQgUEhQLUNSVUQtQVBJIHRvIHlvdXIgZGV2IGVudmlyb25tZW50LiAKICAtIFtWVUUtQ1JVRC1VSV0oaHR0cHM6Ly9naXRodWIuY29tL25sd2FyZS92dWUtY3J1ZC11aSk6IFNpbmdsZSBmaWxlIFZ1ZS5qcyBzY3JpcHQgdGhhdCBhZGRzIGEgVUkgdG8gYSBQSFAtQ1JVRC1BUEkgcHJvamVjdC4KICAKVGhlcmUgYXJlIGFsc28gcG9ydHMgb2YgdGhpcyBzY3JpcHQgaW46CgotIFtHby1DUlVELUFQSV0oaHR0cHM6Ly9naXRodWIuY29tL2RyYW5paC9nby1jcnVkLWFwaSkgKHdvcmsgaW4gcHJvZ3Jlc3MpCi0gW0phdmEgSkRCQyBieSBJdmFuIEtvbGNoYWdvdl0oaHR0cHM6Ly9naXRodWIuY29tL2tvbGNoYWdvdi9qYXZhLWNydWQtYXBpKSAodjEpCi0gW0phdmEgU3ByaW5nIEJvb3QgKyBqT09RXShodHRwczovL2dpdGh1Yi5jb20vbWV2ZHNjaGVlL2phdmEtY3J1ZC1hcGkvdHJlZS9tYXN0ZXIvZnVsbCkgKHYyOiB3b3JrIGluIHByb2dyZXNzKQoKVGhlcmUgYXJlIGFsc28gcHJvb2Ytb2YtY29uY2VwdCBwb3J0cyBvZiB0aGlzIHNjcmlwdCB0aGF0IG9ubHkgc3VwcG9ydCBiYXNpYyBSRVNUIENSVUQgZnVuY3Rpb25hbGl0eSBpbjoKW1BIUF0oaHR0cHM6Ly9naXRodWIuY29tL21ldmRzY2hlZS9waHAtY3J1ZC1hcGkvYmxvYi9tYXN0ZXIvZXh0cmFzL2NvcmUucGhwKSwKW0phdmFdKGh0dHBzOi8vZ2l0aHViLmNvbS9tZXZkc2NoZWUvamF2YS1jcnVkLWFwaS9ibG9iL21hc3Rlci9jb3JlL3NyYy9tYWluL2phdmEvY29tL3RxZGV2L0NydWRBcGlIYW5kbGVyLmphdmEpLApbR29dKGh0dHBzOi8vZ2l0aHViLmNvbS9tZXZkc2NoZWUvZ28tY3J1ZC1hcGkvYmxvYi9tYXN0ZXIvYXBpLmdvKSwKW0MjIC5uZXQgY29yZV0oaHR0cHM6Ly9naXRodWIuY29tL21ldmRzY2hlZS9jb3JlLWRhdGEtYXBpL2Jsb2IvbWFzdGVyL1Byb2dyYW0uY3MpLApbTm9kZS5qc10oaHR0cHM6Ly9naXRodWIuY29tL21ldmRzY2hlZS9qcy1jcnVkLWFwaS9ibG9iL21hc3Rlci9hcHAuanMpIGFuZApbUHl0aG9uXShodHRwczovL2dpdGh1Yi5jb20vbWV2ZHNjaGVlL3B5LWNydWQtYXBpL2Jsb2IvbWFzdGVyL2FwaS5weSkuCgojIyBDb21waWxhdGlvbgoKWW91IGNhbiBpbnN0YWxsIGFsbCBkZXBlbmRlbmNpZXMgb2YgdGhpcyBwcm9qZWN0IHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCiAgICBwaHAgaW5zdGFsbC5waHAKCllvdSBjYW4gY29tcGlsZSBhbGwgZmlsZXMgaW50byBhIHNpbmdsZSAiYGFwaS5waHBgIiBmaWxlIHVzaW5nOgoKICAgIHBocCBidWlsZC5waHAKCk5vdGUgdGhhdCB5b3UgZG9uJ3QgdXNlIGNvbXBpbGF0aW9uIHdoZW4geW91IGludGVncmF0ZSB0aGlzIHByb2plY3QgaW50byBhbm90aGVyIHByb2plY3Qgb3IgZnJhbWV3b3JrICh1c2UgQ29tcG9zZXIgaW5zdGVhZCkuCgojIyMgRGV2ZWxvcG1lbnQKCllvdSBjYW4gYWNjZXNzIHRoZSBub24tY29tcGlsZWQgY29kZSBhdCB0aGUgVVJMOgoKICAgIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9zcmMvcmVjb3Jkcy9wb3N0cy8xCgpUaGUgbm9uLWNvbXBpbGVkIGNvZGUgcmVzaWRlcyBpbiB0aGUgImBzcmNgIiBhbmQgImB2ZW5kb3JgIiBkaXJlY3Rvcmllcy4gVGhlICJgdmVuZG9yYCIgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBkZXBlbmRlbmNpZXMuCgojIyMgVXBkYXRpbmcgZGVwZW5kZW5jaWVzCgpZb3UgY2FuIHVwZGF0ZSBhbGwgZGVwZW5kZW5jaWVzIG9mIHRoaXMgcHJvamVjdCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CgogICAgcGhwIHVwZGF0ZS5waHAKClRoaXMgc2NyaXB0IHdpbGwgaW5zdGFsbCBhbmQgcnVuIFtDb21wb3Nlcl0oaHR0cHM6Ly9nZXRjb21wb3Nlci5vcmcvKSB0byB1cGRhdGUgdGhlIGRlcGVuZGVuY2llcy4KCk5COiBUaGUgdXBkYXRlIHNjcmlwdCB3aWxsIHBhdGNoIHRoZSBkZXBlbmRlbmNpZXMgaW4gdGhlIHZlbmRvciBkaXJlY3RvcnkgZm9yIFBIUCA3LjAgY29tcGF0aWJpbGl0eS4KCiMjIFRyZWVRTCwgYSBwcmFnbWF0aWMgR3JhcGhRTAoKW1RyZWVRTF0oaHR0cHM6Ly90cmVlcWwub3JnKSBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhICJ0cmVlIiBvZiBKU09OIG9iamVjdHMgYmFzZWQgb24geW91ciBTUUwgZGF0YWJhc2Ugc3RydWN0dXJlIChyZWxhdGlvbnMpIGFuZCB5b3VyIHF1ZXJ5LgoKSXQgaXMgbG9vc2VseSBiYXNlZCBvbiB0aGUgUkVTVCBzdGFuZGFyZCBhbmQgYWxzbyBpbnNwaXJlZCBieSBqc29uOmFwaS4KCiMjIyBDUlVEICsgTGlzdAoKVGhlIGV4YW1wbGUgcG9zdHMgdGFibGUgaGFzIG9ubHkgYSBhIGZldyBmaWVsZHM6CgogICAgcG9zdHMgIAogICAgPT09PT09PQogICAgaWQgICAgIAogICAgdGl0bGUgIAogICAgY29udGVudAogICAgY3JlYXRlZAoKVGhlIENSVUQgKyBMaXN0IG9wZXJhdGlvbnMgYmVsb3cgYWN0IG9uIHRoaXMgdGFibGUuCgojIyMjIENyZWF0ZQoKSWYgeW91IHdhbnQgdG8gY3JlYXRlIGEgcmVjb3JkIHRoZSByZXF1ZXN0IGNhbiBiZSB3cml0dGVuIGluIFVSTCBmb3JtYXQgYXM6IAoKICAgIFBPU1QgL3JlY29yZHMvcG9zdHMKCllvdSBoYXZlIHRvIHNlbmQgYSBib2R5IGNvbnRhaW5pbmc6CgogICAgewogICAgICAgICJ0aXRsZSI6ICJCbGFjayBpcyB0aGUgbmV3IHJlZCIsCiAgICAgICAgImNvbnRlbnQiOiAiVGhpcyBpcyB0aGUgc2Vjb25kIHBvc3QuIiwKICAgICAgICAiY3JlYXRlZCI6ICIyMDE4LTAzLTA2VDIxOjM0OjAxWiIKICAgIH0KCkFuZCBpdCB3aWxsIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHByaW1hcnkga2V5IG9mIHRoZSBuZXdseSBjcmVhdGVkIHJlY29yZDoKCiAgICAyCgojIyMjIFJlYWQKClRvIHJlYWQgYSByZWNvcmQgZnJvbSB0aGlzIHRhYmxlIHRoZSByZXF1ZXN0IGNhbiBiZSB3cml0dGVuIGluIFVSTCBmb3JtYXQgYXM6CgogICAgR0VUIC9yZWNvcmRzL3Bvc3RzLzEKCldoZXJlICIxIiBpcyB0aGUgdmFsdWUgb2YgdGhlIHByaW1hcnkga2V5IG9mIHRoZSByZWNvcmQgdGhhdCB5b3Ugd2FudCB0byByZWFkLiBJdCB3aWxsIHJldHVybjoKCiAgICB7CiAgICAgICAgImlkIjogMQogICAgICAgICJ0aXRsZSI6ICJIZWxsbyB3b3JsZCEiLAogICAgICAgICJjb250ZW50IjogIldlbGNvbWUgdG8gdGhlIGZpcnN0IHBvc3QuIiwKICAgICAgICAiY3JlYXRlZCI6ICIyMDE4LTAzLTA1VDIwOjEyOjU2WiIKICAgIH0KCk9uIHJlYWQgb3BlcmF0aW9ucyB5b3UgbWF5IGFwcGx5IGpvaW5zLgoKIyMjIyBVcGRhdGUKClRvIHVwZGF0ZSBhIHJlY29yZCBpbiB0aGlzIHRhYmxlIHRoZSByZXF1ZXN0IGNhbiBiZSB3cml0dGVuIGluIFVSTCBmb3JtYXQgYXM6CgogICAgUFVUIC9yZWNvcmRzL3Bvc3RzLzEKCldoZXJlICIxIiBpcyB0aGUgdmFsdWUgb2YgdGhlIHByaW1hcnkga2V5IG9mIHRoZSByZWNvcmQgdGhhdCB5b3Ugd2FudCB0byB1cGRhdGUuIFNlbmQgYXMgYSBib2R5OgoKICAgIHsKICAgICAgICAidGl0bGUiOiAiQWRqdXN0ZWQgdGl0bGUhIgogICAgfQoKVGhpcyBhZGp1c3RzIHRoZSB0aXRsZSBvZiB0aGUgcG9zdC4gQW5kIHRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIG51bWJlciBvZiByb3dzIHRoYXQgYXJlIHNldDoKCiAgICAxCgojIyMjIERlbGV0ZQoKSWYgeW91IHdhbnQgdG8gZGVsZXRlIGEgcmVjb3JkIGZyb20gdGhpcyB0YWJsZSB0aGUgcmVxdWVzdCBjYW4gYmUgd3JpdHRlbiBpbiBVUkwgZm9ybWF0IGFzOgoKICAgIERFTEVURSAvcmVjb3Jkcy9wb3N0cy8xCgpBbmQgaXQgd2lsbCByZXR1cm4gdGhlIG51bWJlciBvZiBkZWxldGVkIHJvd3M6CgogICAgMQoKIyMjIyBMaXN0CgpUbyBsaXN0IHJlY29yZHMgZnJvbSB0aGlzIHRhYmxlIHRoZSByZXF1ZXN0IGNhbiBiZSB3cml0dGVuIGluIFVSTCBmb3JtYXQgYXM6CgogICAgR0VUIC9yZWNvcmRzL3Bvc3RzCgpJdCB3aWxsIHJldHVybjoKCiAgICB7CiAgICAgICAgInJlY29yZHMiOlsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImlkIjogMSwKICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJIZWxsbyB3b3JsZCEiLAogICAgICAgICAgICAgICAgImNvbnRlbnQiOiAiV2VsY29tZSB0byB0aGUgZmlyc3QgcG9zdC4iLAogICAgICAgICAgICAgICAgImNyZWF0ZWQiOiAiMjAxOC0wMy0wNVQyMDoxMjo1NloiCiAgICAgICAgICAgIH0KICAgICAgICBdCiAgICB9CgpPbiBsaXN0IG9wZXJhdGlvbnMgeW91IG1heSBhcHBseSBmaWx0ZXJzIGFuZCBqb2lucy4KCiMjIyBGaWx0ZXJzCgpGaWx0ZXJzIHByb3ZpZGUgc2VhcmNoIGZ1bmN0aW9uYWxpdHksIG9uIGxpc3QgY2FsbHMsIHVzaW5nIHRoZSAiZmlsdGVyIiBwYXJhbWV0ZXIuIFlvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIGNvbHVtbgpuYW1lLCBhIGNvbW1hLCB0aGUgbWF0Y2ggdHlwZSwgYW5vdGhlciBjb21tYSBhbmQgdGhlIHZhbHVlIHlvdSB3YW50IHRvIGZpbHRlciBvbi4gVGhlc2UgYXJlIHN1cHBvcnRlZCBtYXRjaCB0eXBlczoKCiAgLSAiY3MiOiBjb250YWluIHN0cmluZyAoc3RyaW5nIGNvbnRhaW5zIHZhbHVlKQogIC0gInN3Ijogc3RhcnQgd2l0aCAoc3RyaW5nIHN0YXJ0cyB3aXRoIHZhbHVlKQogIC0gImV3IjogZW5kIHdpdGggKHN0cmluZyBlbmQgd2l0aCB2YWx1ZSkKICAtICJlcSI6IGVxdWFsIChzdHJpbmcgb3IgbnVtYmVyIG1hdGNoZXMgZXhhY3RseSkKICAtICJsdCI6IGxvd2VyIHRoYW4gKG51bWJlciBpcyBsb3dlciB0aGFuIHZhbHVlKQogIC0gImxlIjogbG93ZXIgb3IgZXF1YWwgKG51bWJlciBpcyBsb3dlciB0aGFuIG9yIGVxdWFsIHRvIHZhbHVlKQogIC0gImdlIjogZ3JlYXRlciBvciBlcXVhbCAobnVtYmVyIGlzIGhpZ2hlciB0aGFuIG9yIGVxdWFsIHRvIHZhbHVlKQogIC0gImd0IjogZ3JlYXRlciB0aGFuIChudW1iZXIgaXMgaGlnaGVyIHRoYW4gdmFsdWUpCiAgLSAiYnQiOiBiZXR3ZWVuIChudW1iZXIgaXMgYmV0d2VlbiB0d28gY29tbWEgc2VwYXJhdGVkIHZhbHVlcykKICAtICJpbiI6IGluIChudW1iZXIgb3Igc3RyaW5nIGlzIGluIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHZhbHVlcykKICAtICJpcyI6IGlzIG51bGwgKGZpZWxkIGNvbnRhaW5zICJOVUxMIiB2YWx1ZSkKCllvdSBjYW4gbmVnYXRlIGFsbCBmaWx0ZXJzIGJ5IHByZXBlbmRpbmcgYSAibiIgY2hhcmFjdGVyLCBzbyB0aGF0ICJlcSIgYmVjb21lcyAibmVxIi4gCkV4YW1wbGVzIG9mIGZpbHRlciB1c2FnZSBhcmU6CgogICAgR0VUIC9yZWNvcmRzL2NhdGVnb3JpZXM/ZmlsdGVyPW5hbWUsZXEsSW50ZXJuZXQKICAgIEdFVCAvcmVjb3Jkcy9jYXRlZ29yaWVzP2ZpbHRlcj1uYW1lLHN3LEludGVyCiAgICBHRVQgL3JlY29yZHMvY2F0ZWdvcmllcz9maWx0ZXI9aWQsbGUsMQogICAgR0VUIC9yZWNvcmRzL2NhdGVnb3JpZXM/ZmlsdGVyPWlkLG5ndCwxCiAgICBHRVQgL3JlY29yZHMvY2F0ZWdvcmllcz9maWx0ZXI9aWQsYnQsMCwxCiAgICBHRVQgL3JlY29yZHMvY2F0ZWdvcmllcz9maWx0ZXI9aWQsaW4sMCwxCgpPdXRwdXQ6CgogICAgewogICAgICAgICJyZWNvcmRzIjpbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJpZCI6IDEKICAgICAgICAgICAgICAgICJuYW1lIjogIkludGVybmV0IgogICAgICAgICAgICB9CiAgICAgICAgXQogICAgfQoKSW4gdGhlIG5leHQgc2VjdGlvbiB3ZSBkaXZlIGRlZXBlciBpbnRvIGhvdyB5b3UgY2FuIGFwcGx5IG11bHRpcGxlIGZpbHRlcnMgb24gYSBzaW5nbGUgbGlzdCBjYWxsLgoKIyMjIE11bHRpcGxlIGZpbHRlcnMKCkZpbHRlcnMgY2FuIGJlIGEgYnkgYXBwbGllZCBieSByZXBlYXRpbmcgdGhlICJmaWx0ZXIiIHBhcmFtZXRlciBpbiB0aGUgVVJMLiBGb3IgZXhhbXBsZSB0aGUgZm9sbG93aW5nIFVSTDogCgogICAgR0VUIC9yZWNvcmRzL2NhdGVnb3JpZXM/ZmlsdGVyPWlkLGd0LDEmZmlsdGVyPWlkLGx0LDMKCndpbGwgcmVxdWVzdCBhbGwgY2F0ZWdvcmllcyAid2hlcmUgaWQgPiAxIGFuZCBpZCA8IDMiLiBJZiB5b3Ugd2FudGVkICJ3aGVyZSBpZCA9IDIgb3IgaWQgPSA0IiB5b3Ugc2hvdWxkIHdyaXRlOgoKICAgIEdFVCAvcmVjb3Jkcy9jYXRlZ29yaWVzP2ZpbHRlcjE9aWQsZXEsMiZmaWx0ZXIyPWlkLGVxLDQKICAgIApBcyB5b3Ugc2VlIHdlIGFkZGVkIGEgbnVtYmVyIHRvIHRoZSAiZmlsdGVyIiBwYXJhbWV0ZXIgdG8gaW5kaWNhdGUgdGhhdCAiT1IiIGluc3RlYWQgb2YgIkFORCIgc2hvdWxkIGJlIGFwcGxpZWQuCk5vdGUgdGhhdCB5b3UgY2FuIGFsc28gcmVwZWF0ICJmaWx0ZXIxIiBhbmQgY3JlYXRlIGFuICJBTkQiIHdpdGhpbiBhbiAiT1IiLiBTaW5jZSB5b3UgY2FuIGFsc28gZ28gb25lIGxldmVsIGRlZXBlcgpieSBhZGRpbmcgYSBsZXR0ZXIgKGEtZikgeW91IGNhbiBjcmVhdGUgYWxtb3N0IGFueSByZWFzb25hYmx5IGNvbXBsZXggY29uZGl0aW9uIHRyZWUuCgpOQjogWW91IGNhbiBvbmx5IGZpbHRlciBvbiB0aGUgcmVxdWVzdGVkIHRhYmxlIChub3Qgb24gaXQncyBpbmNsdWRlZCB0YWJsZXMpIGFuZCBmaWx0ZXJzIGFyZSBvbmx5IGFwcGxpZWQgb24gbGlzdCBjYWxscy4KCiMjIyBDb2x1bW4gc2VsZWN0aW9uCgpCeSBkZWZhdWx0IGFsbCBjb2x1bW5zIGFyZSBzZWxlY3RlZC4gV2l0aCB0aGUgImluY2x1ZGUiIHBhcmFtZXRlciB5b3UgY2FuIHNlbGVjdCBzcGVjaWZpYyBjb2x1bW5zLiAKWW91IG1heSB1c2UgYSBkb3QgdG8gc2VwYXJhdGUgdGhlIHRhYmxlIG5hbWUgZnJvbSB0aGUgY29sdW1uIG5hbWUuIE11bHRpcGxlIGNvbHVtbnMgc2hvdWxkIGJlIGNvbW1hIHNlcGFyYXRlZC4gCkFuIGFzdGVyaXNrICgiKiIpIG1heSBiZSB1c2VkIGFzIGEgd2lsZGNhcmQgdG8gaW5kaWNhdGUgImFsbCBjb2x1bW5zIi4gU2ltaWxhciB0byAiaW5jbHVkZSIgeW91IG1heSB1c2UgdGhlICJleGNsdWRlIiBwYXJhbWV0ZXIgdG8gcmVtb3ZlIGNlcnRhaW4gY29sdW1uczoKCmBgYApHRVQgL3JlY29yZHMvY2F0ZWdvcmllcy8xP2luY2x1ZGU9bmFtZQpHRVQgL3JlY29yZHMvY2F0ZWdvcmllcy8xP2luY2x1ZGU9Y2F0ZWdvcmllcy5uYW1lCkdFVCAvcmVjb3Jkcy9jYXRlZ29yaWVzLzE/ZXhjbHVkZT1jYXRlZ29yaWVzLmlkCmBgYAoKT3V0cHV0OgoKYGBgCiAgICB7CiAgICAgICAgIm5hbWUiOiAiSW50ZXJuZXQiCiAgICB9CmBgYAoKTkI6IENvbHVtbnMgdGhhdCBhcmUgdXNlZCB0byBpbmNsdWRlIHJlbGF0ZWQgZW50aXRpZXMgYXJlIGF1dG9tYXRpY2FsbHkgYWRkZWQgYW5kIGNhbm5vdCBiZSBsZWZ0IG91dCBvZiB0aGUgb3V0cHV0LgoKIyMjIE9yZGVyaW5nCgpXaXRoIHRoZSAib3JkZXIiIHBhcmFtZXRlciB5b3UgY2FuIHNvcnQuIEJ5IGRlZmF1bHQgdGhlIHNvcnQgaXMgaW4gYXNjZW5kaW5nIG9yZGVyLCBidXQgYnkgc3BlY2lmeWluZyAiZGVzYyIgdGhpcyBjYW4gYmUgcmV2ZXJzZWQ6CgpgYGAKR0VUIC9yZWNvcmRzL2NhdGVnb3JpZXM/b3JkZXI9bmFtZSxkZXNjCkdFVCAvcmVjb3Jkcy9jYXRlZ29yaWVzP29yZGVyPWlkLGRlc2Mmb3JkZXI9bmFtZQpgYGAKCk91dHB1dDoKCmBgYAogICAgewogICAgICAgICJyZWNvcmRzIjpbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJpZCI6IDMKICAgICAgICAgICAgICAgICJuYW1lIjogIldlYiBkZXZlbG9wbWVudCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImlkIjogMQogICAgICAgICAgICAgICAgIm5hbWUiOiAiSW50ZXJuZXQiCiAgICAgICAgICAgIH0KICAgICAgICBdCiAgICB9CmBgYAoKTkI6IFlvdSBtYXkgc29ydCBvbiBtdWx0aXBsZSBmaWVsZHMgYnkgdXNpbmcgbXVsdGlwbGUgIm9yZGVyIiBwYXJhbWV0ZXJzLiBZb3UgY2FuIG5vdCBvcmRlciBvbiAiam9pbmVkIiBjb2x1bW5zLgoKIyMjIExpbWl0IHNpemUKClRoZSAic2l6ZSIgcGFyYW1ldGVyIGxpbWl0cyB0aGUgbnVtYmVyIG9mIHJldHVybmVkIHJlY29yZHMuIFRoaXMgY2FuIGJlIHVzZWQgZm9yIHRvcCBOIGxpc3RzIHRvZ2V0aGVyIHdpdGggdGhlICJvcmRlciIgcGFyYW1ldGVyICh1c2UgZGVzY2VuZGluZyBvcmRlcikuCgpgYGAKR0VUIC9yZWNvcmRzL2NhdGVnb3JpZXM/b3JkZXI9aWQsZGVzYyZzaXplPTEKYGBgCgpPdXRwdXQ6CgpgYGAKICAgIHsKICAgICAgICAicmVjb3JkcyI6WwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaWQiOiAzCiAgICAgICAgICAgICAgICAibmFtZSI6ICJXZWIgZGV2ZWxvcG1lbnQiCiAgICAgICAgICAgIH0KICAgICAgICBdCiAgICB9CmBgYAoKTkI6IElmIHlvdSBhbHNvIHdhbnQgdG8ga25vdyB0byB0aGUgdG90YWwgbnVtYmVyIG9mIHJlY29yZHMgeW91IG1heSB3YW50IHRvIHVzZSB0aGUgInBhZ2UiIHBhcmFtZXRlci4KCiMjIyBQYWdpbmF0aW9uCgpUaGUgInBhZ2UiIHBhcmFtZXRlciBob2xkcyB0aGUgcmVxdWVzdGVkIHBhZ2UuIFRoZSBkZWZhdWx0IHBhZ2Ugc2l6ZSBpcyAyMCwgYnV0IGNhbiBiZSBhZGp1c3RlZCAoZS5nLiB0byA1MCkuCgpgYGAKR0VUIC9yZWNvcmRzL2NhdGVnb3JpZXM/b3JkZXI9aWQmcGFnZT0xCkdFVCAvcmVjb3Jkcy9jYXRlZ29yaWVzP29yZGVyPWlkJnBhZ2U9MSw1MApgYGAKCk91dHB1dDoKCmBgYAogICAgewogICAgICAgICJyZWNvcmRzIjpbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJpZCI6IDEKICAgICAgICAgICAgICAgICJuYW1lIjogIkludGVybmV0IgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaWQiOiAzCiAgICAgICAgICAgICAgICAibmFtZSI6ICJXZWIgZGV2ZWxvcG1lbnQiCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJyZXN1bHRzIjogMgogICAgfQpgYGAKClRoZSBlbGVtZW50ICJyZXN1bHRzIiBob2xkcyB0byB0b3RhbCBudW1iZXIgb2YgcmVjb3JkcyBpbiB0aGUgdGFibGUsIHdoaWNoIHdvdWxkIGJlIHJldHVybmVkIGlmIG5vIHBhZ2luYXRpb24gd291bGQgYmUgdXNlZC4KCk5COiBTaW5jZSBwYWdlcyB0aGF0IGFyZSBub3Qgb3JkZXJlZCBjYW5ub3QgYmUgcGFnaW5hdGVkLCBwYWdlcyB3aWxsIGJlIG9yZGVyZWQgYnkgcHJpbWFyeSBrZXkuCgojIyMgSm9pbnMKCkxldCdzIHNheSB0aGF0IHlvdSBoYXZlIGEgcG9zdHMgdGFibGUgdGhhdCBoYXMgY29tbWVudHMgKG1hZGUgYnkgdXNlcnMpIGFuZCB0aGUgcG9zdHMgY2FuIGhhdmUgdGFncy4KCiAgICBwb3N0cyAgICBjb21tZW50cyAgdXNlcnMgICAgIHBvc3RfdGFncyAgdGFncwogICAgPT09PT09PSAgPT09PT09PT0gID09PT09PT0gICA9PT09PT09PT0gID09PT09PT0gCiAgICBpZCAgICAgICBpZCAgICAgICAgaWQgICAgICAgIGlkICAgICAgICAgaWQKICAgIHRpdGxlICAgIHBvc3RfaWQgICB1c2VybmFtZSAgcG9zdF9pZCAgICBuYW1lCiAgICBjb250ZW50ICB1c2VyX2lkICAgcGhvbmUgICAgIHRhZ19pZAogICAgY3JlYXRlZCAgbWVzc2FnZQoKV2hlbiB5b3Ugd2FudCB0byBsaXN0IHBvc3RzIHdpdGggdGhlaXIgY29tbWVudHMgdXNlcnMgYW5kIHRhZ3MgeW91IGNhbiBhc2sgZm9yIHR3byAidHJlZSIgcGF0aHM6CgogICAgcG9zdHMgLT4gY29tbWVudHMgIC0+IHVzZXJzCiAgICBwb3N0cyAtPiBwb3N0X3RhZ3MgLT4gdGFncwoKVGhlc2UgcGF0aHMgaGF2ZSB0aGUgc2FtZSByb290IGFuZCB0aGlzIHJlcXVlc3QgY2FuIGJlIHdyaXR0ZW4gaW4gVVJMIGZvcm1hdCBhczoKCiAgICBHRVQgL3JlY29yZHMvcG9zdHM/am9pbj1jb21tZW50cyx1c2VycyZqb2luPXRhZ3MKCkhlcmUgeW91IGFyZSBhbGxvd2VkIHRvIGxlYXZlIG91dCB0aGUgaW50ZXJtZWRpYXRlIHRhYmxlIHRoYXQgYmluZHMgcG9zdHMgdG8gdGFncy4gSW4gdGhpcyBleGFtcGxlCnlvdSBzZWUgYWxsIHRocmVlIHRhYmxlIHJlbGF0aW9uIHR5cGVzIChoYXNNYW55LCBiZWxvbmdzVG8gYW5kIGhhc0FuZEJlbG9uZ3NUb01hbnkpIGluIGVmZmVjdDoKCi0gInBvc3QiIGhhcyBtYW55ICJjb21tZW50cyIKLSAiY29tbWVudCIgYmVsb25ncyB0byAidXNlciIKLSAicG9zdCIgaGFzIGFuZCBiZWxvbmdzIHRvIG1hbnkgInRhZ3MiCgpUaGlzIG1heSBsZWFkIHRvIHRoZSBmb2xsb3dpbmcgSlNPTiBkYXRhOgoKICAgIHsKICAgICAgICAicmVjb3JkcyI6WwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaWQiOiAxLAogICAgICAgICAgICAgICAgInRpdGxlIjogIkhlbGxvIHdvcmxkISIsCiAgICAgICAgICAgICAgICAiY29udGVudCI6ICJXZWxjb21lIHRvIHRoZSBmaXJzdCBwb3N0LiIsCiAgICAgICAgICAgICAgICAiY3JlYXRlZCI6ICIyMDE4LTAzLTA1VDIwOjEyOjU2WiIsCiAgICAgICAgICAgICAgICAiY29tbWVudHMiOiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgcG9zdF9pZDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9pZDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZTogIm1ldmRzY2hlZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIkhpISIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RfaWQ6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU6ICJtZXZkc2NoZWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICJIaSBhZ2FpbiEiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJ0YWdzIjogW10KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImlkIjogMiwKICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJCbGFjayBpcyB0aGUgbmV3IHJlZCIsCiAgICAgICAgICAgICAgICAiY29udGVudCI6ICJUaGlzIGlzIHRoZSBzZWNvbmQgcG9zdC4iLAogICAgICAgICAgICAgICAgImNyZWF0ZWQiOiAiMjAxOC0wMy0wNlQyMTozNDowMVoiLAogICAgICAgICAgICAgICAgImNvbW1lbnRzIjogW10sCiAgICAgICAgICAgICAgICAidGFncyI6IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAiRnVubnkiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAyLAogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAiSW5mb3JtYXRpb25hbCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICBdCiAgICB9CgpZb3Ugc2VlIHRoYXQgdGhlICJiZWxvbmdzVG8iIHJlbGF0aW9uc2hpcHMgYXJlIGRldGVjdGVkIGFuZCB0aGUgZm9yZWlnbiBrZXkgdmFsdWUgaXMgcmVwbGFjZWQgYnkgdGhlIHJlZmVyZW5jZWQgb2JqZWN0LgpJbiBjYXNlIG9mICJoYXNNYW55IiBhbmQgImhhc0FuZEJlbG9uZ3NUb01hbnkiIHRoZSB0YWJsZSBuYW1lIGlzIHVzZWQgYSBuZXcgcHJvcGVydHkgb24gdGhlIG9iamVjdC4KCiMjIyBCYXRjaCBvcGVyYXRpb25zCgpXaGVuIHlvdSB3YW50IHRvIGNyZWF0ZSwgcmVhZCwgdXBkYXRlIG9yIGRlbGV0ZSB5b3UgbWF5IHNwZWNpZnkgbXVsdGlwbGUgcHJpbWFyeSBrZXkgdmFsdWVzIGluIHRoZSBVUkwuCllvdSBhbHNvIG5lZWQgdG8gc2VuZCBhbiBhcnJheSBpbnN0ZWFkIG9mIGFuIG9iamVjdCBpbiB0aGUgcmVxdWVzdCBib2R5IGZvciBjcmVhdGUgYW5kIHVwZGF0ZS4gCgpUbyByZWFkIGEgcmVjb3JkIGZyb20gdGhpcyB0YWJsZSB0aGUgcmVxdWVzdCBjYW4gYmUgd3JpdHRlbiBpbiBVUkwgZm9ybWF0IGFzOgoKICAgIEdFVCAvcmVjb3Jkcy9wb3N0cy8xLDIKClRoZSByZXN1bHQgbWF5IGJlOgoKICAgIFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImlkIjogMSwKICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJIZWxsbyB3b3JsZCEiLAogICAgICAgICAgICAgICAgImNvbnRlbnQiOiAiV2VsY29tZSB0byB0aGUgZmlyc3QgcG9zdC4iLAogICAgICAgICAgICAgICAgImNyZWF0ZWQiOiAiMjAxOC0wMy0wNVQyMDoxMjo1NloiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJpZCI6IDIsCiAgICAgICAgICAgICAgICAidGl0bGUiOiAiQmxhY2sgaXMgdGhlIG5ldyByZWQiLAogICAgICAgICAgICAgICAgImNvbnRlbnQiOiAiVGhpcyBpcyB0aGUgc2Vjb25kIHBvc3QuIiwKICAgICAgICAgICAgICAgICJjcmVhdGVkIjogIjIwMTgtMDMtMDZUMjE6MzQ6MDFaIgogICAgICAgICAgICB9CiAgICBdCgpTaW1pbGFybHkgd2hlbiB5b3Ugd2FudCB0byBkbyBhIGJhdGNoIHVwZGF0ZSB0aGUgcmVxdWVzdCBpbiBVUkwgZm9ybWF0IGlzIHdyaXR0ZW4gYXM6CgogICAgUFVUIC9yZWNvcmRzL3Bvc3RzLzEsMgoKV2hlcmUgIjEiIGFuZCAiMiIgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlIHByaW1hcnkga2V5cyBvZiB0aGUgcmVjb3JkcyB0aGF0IHlvdSB3YW50IHRvIHVwZGF0ZS4gVGhlIGJvZHkgc2hvdWxkIApjb250YWluIHRoZSBzYW1lIG51bWJlciBvZiBvYmplY3RzIGFzIHRoZXJlIGFyZSBwcmltYXJ5IGtleXMgaW4gdGhlIFVSTDoKCiAgICBbICAgCiAgICAgICAgewogICAgICAgICAgICAidGl0bGUiOiAiQWRqdXN0ZWQgdGl0bGUgZm9yIElEIDEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJ0aXRsZSI6ICJBZGp1c3RlZCB0aXRsZSBmb3IgSUQgMiIKICAgICAgICB9ICAgICAgICAKICAgIF0KClRoaXMgYWRqdXN0cyB0aGUgdGl0bGVzIG9mIHRoZSBwb3N0cy4gQW5kIHRoZSByZXR1cm4gdmFsdWVzIGFyZSB0aGUgbnVtYmVyIG9mIHJvd3MgdGhhdCBhcmUgc2V0OgoKICAgIFsxLDFdCgpXaGljaCBtZWFucyB0aGF0IHRoZXJlIHdlcmUgdHdvIHVwZGF0ZSBvcGVyYXRpb25zIGFuZCBlYWNoIG9mIHRoZW0gaGFkIHNldCBvbmUgcm93LiBCYXRjaCBvcGVyYXRpb25zIHVzZSBkYXRhYmFzZQp0cmFuc2FjdGlvbnMsIHNvIHRoZXkgZWl0aGVyIGFsbCBzdWNjZWVkIG9yIGFsbCBmYWlsIChzdWNjZXNzZnVsIG9uZXMgZ2V0IHJvbGxlZCBiYWNrKS4gSWYgdGhleSBmYWlsIHRoZSBib2R5IHdpbGwKY29udGFpbiB0aGUgbGlzdCBvZiBlcnJvciBkb2N1bWVudHMuIEluIHRoZSBmb2xsb3dpbmcgcmVzcG9uc2UgdGhlIGZpcnN0IG9wZXJhdGlvbiBzdWNjZWVkZWQgYW5kIHRoZSBzZWNvbmQgb3BlcmF0aW9uCm9mIHRoZSBiYXRjaCBmYWlsZWQgZHVlIHRvIGFuIGludGVncml0eSB2aW9sYXRpb246CgogICAgWyAgIAogICAgICAgIHsKICAgICAgICAgICAgImNvZGUiOiAwLAogICAgICAgICAgICAibWVzc2FnZSI6ICJTdWNjZXNzIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAiY29kZSI6IDEwMTAsCiAgICAgICAgICAgICJtZXNzYWdlIjogIkRhdGEgaW50ZWdyaXR5IHZpb2xhdGlvbiIKICAgICAgICB9CiAgICBdCgpUaGUgcmVzcG9uc2Ugc3RhdHVzIGNvZGUgd2lsbCBhbHdheXMgYmUgNDI0IChmYWlsZWQgZGVwZW5kZW5jeSkgaW4gY2FzZSBvZiBhbnkgZmFpbHVyZSBvZiBvbmUgb2YgdGhlIGJhdGNoIG9wZXJhdGlvbnMuCgpUbyBpbnNlcnQgbXVsdGlwbGUgcmVjb3JkcyBpbnRvIHRoaXMgdGFibGUgdGhlIHJlcXVlc3QgY2FuIGJlIHdyaXR0ZW4gaW4gVVJMIGZvcm1hdCBhczoKCiAgICBQT1NUIC9yZWNvcmRzL3Bvc3RzCgpUaGUgYm9keSBzaG91bGQgY29udGFpbiBhbiBhcnJheSBvZiByZWNvcmRzIHRvIGJlIGluc2VydGVkOgoKICAgIFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgInRpdGxlIjogIkhlbGxvIHdvcmxkISIsCiAgICAgICAgICAgICAgICAiY29udGVudCI6ICJXZWxjb21lIHRvIHRoZSBmaXJzdCBwb3N0LiIsCiAgICAgICAgICAgICAgICAiY3JlYXRlZCI6ICIyMDE4LTAzLTA1VDIwOjEyOjU2WiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgInRpdGxlIjogIkJsYWNrIGlzIHRoZSBuZXcgcmVkIiwKICAgICAgICAgICAgICAgICJjb250ZW50IjogIlRoaXMgaXMgdGhlIHNlY29uZCBwb3N0LiIsCiAgICAgICAgICAgICAgICAiY3JlYXRlZCI6ICIyMDE4LTAzLTA2VDIxOjM0OjAxWiIKICAgICAgICAgICAgfQogICAgXQoKVGhlIHJldHVybiB2YWx1ZSBpcyBhbHNvIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHByaW1hcnkga2V5cyBvZiB0aGUgbmV3bHkgaW5zZXJ0ZWQgcmVjb3JkczoKCiAgICBbMSwyXSAKCk5vdGUgdGhhdCBiYXRjaCBvcGVyYXRpb24gZm9yIERFTEVURSBmb2xsb3dzIHRoZSBzYW1lIHBhdHRlcm4gYXMgUFVULCBidXQgd2l0aG91dCBhIGJvZHkuCgojIyMgU3BhdGlhbCBzdXBwb3J0CgpGb3Igc3BhdGlhbCBzdXBwb3J0IHRoZXJlIGlzIGFuIGV4dHJhIHNldCBvZiBmaWx0ZXJzIHRoYXQgY2FuIGJlIGFwcGxpZWQgb24gZ2VvbWV0cnkgY29sdW1ucyBhbmQgdGhhdCBzdGFydGluZyB3aXRoIGFuICJzIjoKCiAgLSAic2NvIjogc3BhdGlhbCBjb250YWlucyAoZ2VvbWV0cnkgY29udGFpbnMgYW5vdGhlcikKICAtICJzY3IiOiBzcGF0aWFsIGNyb3NzZXMgKGdlb21ldHJ5IGNyb3NzZXMgYW5vdGhlcikKICAtICJzZGkiOiBzcGF0aWFsIGRpc2pvaW50IChnZW9tZXRyeSBpcyBkaXNqb2ludCBmcm9tIGFub3RoZXIpCiAgLSAic2VxIjogc3BhdGlhbCBlcXVhbCAoZ2VvbWV0cnkgaXMgZXF1YWwgdG8gYW5vdGhlcikKICAtICJzaW4iOiBzcGF0aWFsIGludGVyc2VjdHMgKGdlb21ldHJ5IGludGVyc2VjdHMgYW5vdGhlcikKICAtICJzb3YiOiBzcGF0aWFsIG92ZXJsYXBzIChnZW9tZXRyeSBvdmVybGFwcyBhbm90aGVyKQogIC0gInN0byI6IHNwYXRpYWwgdG91Y2hlcyAoZ2VvbWV0cnkgdG91Y2hlcyBhbm90aGVyKQogIC0gInN3aSI6IHNwYXRpYWwgd2l0aGluIChnZW9tZXRyeSBpcyB3aXRoaW4gYW5vdGhlcikKICAtICJzaWMiOiBzcGF0aWFsIGlzIGNsb3NlZCAoZ2VvbWV0cnkgaXMgY2xvc2VkIGFuZCBzaW1wbGUpCiAgLSAic2lzIjogc3BhdGlhbCBpcyBzaW1wbGUgKGdlb21ldHJ5IGlzIHNpbXBsZSkKICAtICJzaXYiOiBzcGF0aWFsIGlzIHZhbGlkIChnZW9tZXRyeSBpcyB2YWxpZCkKClRoZXNlIGZpbHRlcnMgYXJlIGJhc2VkIG9uIE9HQyBzdGFuZGFyZHMgYW5kIHNvIGlzIHRoZSBXS1Qgc3BlY2lmaWNhdGlvbiBpbiB3aGljaCB0aGUgZ2VvbWV0cnkgY29sdW1ucyBhcmUgcmVwcmVzZW50ZWQuCk5vdGUgdGhhdCB0aGUgU1JJRCB0aGF0IGlzIGFzc3VtZWQgd2hlbiBjb252ZXJ0aW5nIGZyb20gV0tUIHRvIGdlb21ldHJ5IGlzIHNwZWNpZmllZCBieSB0aGUgY29uZmlnIHZhcmlhYmxlIGBnZW9tZXRyeVNyaWRgIGFuZCBkZWZhdWx0cyB0byA0MzI2IChXR1MgODQpLgoKIyMjIyBHZW9KU09OCgpUaGUgR2VvSlNPTiBzdXBwb3J0IGlzIGEgcmVhZC1vbmx5IHZpZXcgb24gdGhlIHRhYmxlcyBhbmQgcmVjb3JkcyBpbiBHZW9KU09OIGZvcm1hdC4gVGhlc2UgcmVxdWVzdHMgYXJlIHN1cHBvcnRlZDoKCiAgICBtZXRob2QgcGF0aCAgICAgICAgICAgICAgICAgIC0gb3BlcmF0aW9uIC0gZGVzY3JpcHRpb24KICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIEdFVCAgICAvZ2VvanNvbi97dGFibGV9ICAgICAgLSBsaXN0ICAgICAgLSBsaXN0cyByZWNvcmRzIGFzIGEgR2VvSlNPTiBGZWF0dXJlQ29sbGVjdGlvbgogICAgR0VUICAgIC9nZW9qc29uL3t0YWJsZX0ve2lkfSAtIHJlYWQgICAgICAtIHJlYWRzIGEgcmVjb3JkIGJ5IHByaW1hcnkga2V5IGFzIGEgR2VvSlNPTiBGZWF0dXJlCgpUaGUgImAvZ2VvanNvbmAiIGVuZHBvaW50IHVzZXMgdGhlICJgL3JlY29yZHNgIiBlbmRwb2ludCBpbnRlcm5hbGx5IGFuZCBpbmhlcml0cyBhbGwgZnVuY3Rpb25hbGl0eSwgc3VjaCBhcyBqb2lucyBhbmQgZmlsdGVycy4KSXQgYWxzbyBzdXBwb3J0cyBhICJnZW9tZXRyeSIgcGFyYW1ldGVyIHRvIGluZGljYXRlIHRoZSBuYW1lIG9mIHRoZSBnZW9tZXRyeSBjb2x1bW4gaW4gY2FzZSB0aGUgdGFibGUgaGFzIG1vcmUgdGhhbiBvbmUuCkZvciBtYXAgdmlld3MgaXQgc3VwcG9ydHMgdGhlICJiYm94IiBwYXJhbWV0ZXIgaW4gd2hpY2ggeW91IGNhbiBzcGVjaWZ5IHVwcGVyLWxlZnQgYW5kIGxvd2VyLXJpZ2h0IGNvb3JkaW5hdGVzIChjb21tYSBzZXBhcmF0ZWQpLgpUaGUgZm9sbG93aW5nIEdlb21ldHJ5IHR5cGVzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIEdlb0pTT04gaW1wbGVtZW50YXRpb246CgogIC0gUG9pbnQKICAtIE11bHRpUG9pbnQKICAtIExpbmVTdHJpbmcKICAtIE11bHRpTGluZVN0cmluZwogIC0gUG9seWdvbgogIC0gTXVsdGlQb2x5Z29uCgpUaGUgR2VvSlNPTiBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IGNhbiBiZSBkaXNhYmxlZCB1c2luZyB0aGUgImNvbnRyb2xsZXJzIiBjb25maWd1cmF0aW9uLgoKIyMgTWFwcGluZyBuYW1lcyBmb3IgbGVnYWN5IHN5c3RlbXMKClRvIHN1cHBvcnQgY3JlYXRpbmcgYW4gQVBJIGZvciAoYSBwYXJ0IG9mKSBhIGxlZ2FjeSBzeXN0ZW0gKHN1Y2ggYXMgV29yZHByZXNzKSB5b3UgbWF5IHdhbnQgdG8gbWFwIHRoZSB0YWJsZSBhbmQgY29sdW1uIApuYW1lcyBhcyBjYW4gbm90IGltcHJvdmUgdGhlbSB3aXRob3V0IGNoYW5naW5nIHRoZSBzb2Z0d2FyZSwgd2hpbGUgdGhlIG5hbWVzIG1heSBuZWVkIHNvbWUgaW1wcm92ZW1lbnQgZm9yIGNvbnNpc3RlbmN5LgpUaGUgY29uZmlnIGFsbG93cyB5b3UgdG8gcmVuYW1lIHRhYmxlcyBhbmQgY29sdW1ucyB3aXRoIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgbWFwcGluZ3MgdGhhdCBhcmUgc3BsaXQgd2l0aCBhbiAKZXF1YWwgc2lnbiwgbGlrZSB0aGlzOgoKICAgICdtYXBwaW5nJyA9PiAnd3BfcG9zdHM9cG9zdHMsd3BfcG9zdHMuSUQ9cG9zdHMuaWQnLAoKVGhpcyBzcGVjaWZpYyBleGFtcGxlIHdpbGwgZXhwb3NlIHRoZSAiYHdwX3Bvc3RzYCIgdGFibGUgYXQgYSAiYHBvc3RzYCIgZW5kLXBvaW50IChpbnN0ZWFkIG9mICJgd3BfcG9zdHNgIikgYW5kIHRoZSAKY29sdW1uICJgSURgIiB3aXRoaW4gdGhhdCB0YWJsZSBhcyB0aGUgImBpZGAiIHByb3BlcnR5IChpbiBsb3dlciBjYXNlIGluc3RlYWQgb2YgdXBwZXIgY2FzZSkuCgpOQjogU2luY2UgdGhlc2UgdHdvIG1hcHBpbmdzIG92ZXJsYXAgdGhlIGZpcnN0IChsZXNzIHNwZWNpZmljKSBtYXBwaW5nIG1heSBiZSBvbWl0dGVkLgoKIyMgTWlkZGxld2FyZQoKWW91IGNhbiBlbmFibGUgdGhlIGZvbGxvd2luZyBtaWRkbGV3YXJlIHVzaW5nIHRoZSAibWlkZGxld2FyZXMiIGNvbmZpZyBwYXJhbWV0ZXI6CgotICJmaXJld2FsbCI6IExpbWl0IGFjY2VzcyB0byBzcGVjaWZpYyBJUCBhZGRyZXNzZXMKLSAic3NsUmVkaXJlY3QiOiBGb3JjZSBjb25uZWN0aW9uIG92ZXIgSFRUUFMgaW5zdGVhZCBvZiBIVFRQCi0gImNvcnMiOiBTdXBwb3J0IGZvciBDT1JTIHJlcXVlc3RzIChlbmFibGVkIGJ5IGRlZmF1bHQpCi0gInhzcmYiOiBCbG9jayBYU1JGIGF0dGFja3MgdXNpbmcgdGhlICdEb3VibGUgU3VibWl0IENvb2tpZScgbWV0aG9kCi0gImFqYXhPbmx5IjogUmVzdHJpY3Qgbm9uLUFKQVggcmVxdWVzdHMgdG8gcHJldmVudCBYU1JGIGF0dGFja3MKLSAiYXBpS2V5QXV0aCI6IFN1cHBvcnQgZm9yICJBUEkgS2V5IEF1dGhlbnRpY2F0aW9uIgotICJhcGlLZXlEYkF1dGgiOiBTdXBwb3J0IGZvciAiQVBJIEtleSBEYXRhYmFzZSBBdXRoZW50aWNhdGlvbiIKLSAiZGJBdXRoIjogU3VwcG9ydCBmb3IgIkRhdGFiYXNlIEF1dGhlbnRpY2F0aW9uIgotICJ3cEF1dGgiOiBTdXBwb3J0IGZvciAiV29yZHByZXNzIEF1dGhlbnRpY2F0aW9uIgotICJqd3RBdXRoIjogU3VwcG9ydCBmb3IgIkpXVCBBdXRoZW50aWNhdGlvbiIKLSAiYmFzaWNBdXRoIjogU3VwcG9ydCBmb3IgIkJhc2ljIEF1dGhlbnRpY2F0aW9uIgotICJyZWNvbm5lY3QiOiBSZWNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlcnMKLSAiYXV0aG9yaXphdGlvbiI6IFJlc3RyaWN0IGFjY2VzcyB0byBjZXJ0YWluIHRhYmxlcyBvciBjb2x1bW5zCi0gInZhbGlkYXRpb24iOiBSZXR1cm4gaW5wdXQgdmFsaWRhdGlvbiBlcnJvcnMgZm9yIGN1c3RvbSBydWxlcyBhbmQgZGVmYXVsdCB0eXBlIHJ1bGVzCi0gImlwQWRkcmVzcyI6IEZpbGwgYSBwcm90ZWN0ZWQgZmllbGQgd2l0aCB0aGUgSVAgYWRkcmVzcyBvbiBjcmVhdGUKLSAic2FuaXRhdGlvbiI6IEFwcGx5IGlucHV0IHNhbml0YXRpb24gb24gY3JlYXRlIGFuZCB1cGRhdGUKLSAibXVsdGlUZW5hbmN5IjogUmVzdHJpY3RzIHRlbmFudHMgYWNjZXNzIGluIGEgbXVsdGktdGVuYW50IHNjZW5hcmlvCi0gInBhZ2VMaW1pdHMiOiBSZXN0cmljdHMgbGlzdCBvcGVyYXRpb25zIHRvIHByZXZlbnQgZGF0YWJhc2Ugc2NyYXBpbmcKLSAiam9pbkxpbWl0cyI6IFJlc3RyaWN0cyBqb2luIHBhcmFtZXRlcnMgdG8gcHJldmVudCBkYXRhYmFzZSBzY3JhcGluZwotICJ0ZXh0U2VhcmNoIjogU2VhcmNoIGluIGFsbCB0ZXh0IGZpZWxkcyB3aXRoIGEgc2ltcGxlIHBhcmFtZXRlcgotICJjdXN0b21pemF0aW9uIjogUHJvdmlkZXMgaGFuZGxlcnMgZm9yIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGN1c3RvbWl6YXRpb24KLSAianNvbiI6IFN1cHBvcnQgcmVhZC93cml0ZSBvZiBKU09OIHN0cmluZ3MgYXMgSlNPTiBvYmplY3RzL2FycmF5cwotICJ4bWwiOiBUcmFuc2xhdGVzIGFsbCBpbnB1dCBhbmQgb3V0cHV0IGZyb20gSlNPTiB0byBYTUwKClRoZSAibWlkZGxld2FyZXMiIGNvbmZpZyBwYXJhbWV0ZXIgaXMgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBlbmFibGVkIG1pZGRsZXdhcmVzLgpZb3UgY2FuIHR1bmUgdGhlIG1pZGRsZXdhcmUgYmVoYXZpb3IgdXNpbmcgbWlkZGxld2FyZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnM6CgotICJmaXJld2FsbC5yZXZlcnNlUHJveHkiOiBTZXQgdG8gInRydWUiIHdoZW4gYSByZXZlcnNlIHByb3h5IGlzIHVzZWQgKCIiKQotICJmaXJld2FsbC5hbGxvd2VkSXBBZGRyZXNzZXMiOiBMaXN0IG9mIElQIGFkZHJlc3NlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGNvbm5lY3QgKCIiKQotICJjb3JzLmFsbG93ZWRPcmlnaW5zIjogVGhlIG9yaWdpbnMgYWxsb3dlZCBpbiB0aGUgQ09SUyBoZWFkZXJzICgiKiIpCi0gImNvcnMuYWxsb3dIZWFkZXJzIjogVGhlIGhlYWRlcnMgYWxsb3dlZCBpbiB0aGUgQ09SUyByZXF1ZXN0ICgiQ29udGVudC1UeXBlLCBYLVhTUkYtVE9LRU4sIFgtQXV0aG9yaXphdGlvbiIpCi0gImNvcnMuYWxsb3dNZXRob2RzIjogVGhlIG1ldGhvZHMgYWxsb3dlZCBpbiB0aGUgQ09SUyByZXF1ZXN0ICgiT1BUSU9OUywgR0VULCBQVVQsIFBPU1QsIERFTEVURSwgUEFUQ0giKQotICJjb3JzLmFsbG93Q3JlZGVudGlhbHMiOiBUbyBhbGxvdyBjcmVkZW50aWFscyBpbiB0aGUgQ09SUyByZXF1ZXN0ICgidHJ1ZSIpCi0gImNvcnMuZXhwb3NlSGVhZGVycyI6IFdoaXRlbGlzdCBoZWFkZXJzIHRoYXQgYnJvd3NlcnMgYXJlIGFsbG93ZWQgdG8gYWNjZXNzICgiIikKLSAiY29ycy5tYXhBZ2UiOiBUaGUgdGltZSB0aGF0IHRoZSBDT1JTIGdyYW50IGlzIHZhbGlkIGluIHNlY29uZHMgKCIxNzI4MDAwIikKLSAieHNyZi5leGNsdWRlTWV0aG9kcyI6IFRoZSBtZXRob2RzIHRoYXQgZG8gbm90IHJlcXVpcmUgWFNSRiBwcm90ZWN0aW9uICgiT1BUSU9OUyxHRVQiKQotICJ4c3JmLmNvb2tpZU5hbWUiOiBUaGUgbmFtZSBvZiB0aGUgWFNSRiBwcm90ZWN0aW9uIGNvb2tpZSAoIlhTUkYtVE9LRU4iKQotICJ4c3JmLmhlYWRlck5hbWUiOiBUaGUgbmFtZSBvZiB0aGUgWFNSRiBwcm90ZWN0aW9uIGhlYWRlciAoIlgtWFNSRi1UT0tFTiIpCi0gImFqYXhPbmx5LmV4Y2x1ZGVNZXRob2RzIjogVGhlIG1ldGhvZHMgdGhhdCBkbyBub3QgcmVxdWlyZSBBSkFYICgiT1BUSU9OUyxHRVQiKQotICJhamF4T25seS5oZWFkZXJOYW1lIjogVGhlIG5hbWUgb2YgdGhlIHJlcXVpcmVkIGhlYWRlciAoIlgtUmVxdWVzdGVkLVdpdGgiKQotICJhamF4T25seS5oZWFkZXJWYWx1ZSI6IFRoZSB2YWx1ZSBvZiB0aGUgcmVxdWlyZWQgaGVhZGVyICgiWE1MSHR0cFJlcXVlc3QiKQotICJhcGlLZXlBdXRoLm1vZGUiOiBTZXQgdG8gIm9wdGlvbmFsIiBpZiB5b3Ugd2FudCB0byBhbGxvdyBhbm9ueW1vdXMgYWNjZXNzICgicmVxdWlyZWQiKQotICJhcGlLZXlBdXRoLmhlYWRlciI6IFRoZSBuYW1lIG9mIHRoZSBBUEkga2V5IGhlYWRlciAoIlgtQVBJLUtleSIpCi0gImFwaUtleUF1dGgua2V5cyI6IExpc3Qgb2YgQVBJIGtleXMgdGhhdCBhcmUgdmFsaWQgKCIiKQotICJhcGlLZXlEYkF1dGgubW9kZSI6IFNldCB0byAib3B0aW9uYWwiIGlmIHlvdSB3YW50IHRvIGFsbG93IGFub255bW91cyBhY2Nlc3MgKCJyZXF1aXJlZCIpCi0gImFwaUtleURiQXV0aC5oZWFkZXIiOiBUaGUgbmFtZSBvZiB0aGUgQVBJIGtleSBoZWFkZXIgKCJYLUFQSS1LZXkiKQotICJhcGlLZXlEYkF1dGgudXNlcnNUYWJsZSI6IFRoZSB0YWJsZSB0aGF0IGlzIHVzZWQgdG8gc3RvcmUgdGhlIHVzZXJzIGluICgidXNlcnMiKQotICJhcGlLZXlEYkF1dGguYXBpS2V5Q29sdW1uIjogVGhlIHVzZXJzIHRhYmxlIGNvbHVtbiB0aGF0IGhvbGRzIHRoZSBBUEkga2V5ICgiYXBpX2tleSIpCi0gImRiQXV0aC5tb2RlIjogU2V0IHRvICJvcHRpb25hbCIgaWYgeW91IHdhbnQgdG8gYWxsb3cgYW5vbnltb3VzIGFjY2VzcyAoInJlcXVpcmVkIikKLSAiZGJBdXRoLnVzZXJzVGFibGUiOiBUaGUgdGFibGUgdGhhdCBpcyB1c2VkIHRvIHN0b3JlIHRoZSB1c2VycyBpbiAoInVzZXJzIikKLSAiZGJBdXRoLmxvZ2luVGFibGUiOiBUaGUgdGFibGUgb3IgdmlldyB0aGF0IGlzIHVzZWQgdG8gcmV0cmlldmUgdGhlIHVzZXJzIGluZm8gZm9yIGxvZ2luICgidXNlcnMiKQotICJkYkF1dGgudXNlcm5hbWVDb2x1bW4iOiBUaGUgdXNlcnMgdGFibGUgY29sdW1uIHRoYXQgaG9sZHMgdXNlcm5hbWVzICgidXNlcm5hbWUiKQotICJkYkF1dGgucGFzc3dvcmRDb2x1bW4iOiBUaGUgdXNlcnMgdGFibGUgY29sdW1uIHRoYXQgaG9sZHMgcGFzc3dvcmRzICgicGFzc3dvcmQiKQotICJkYkF1dGgucmV0dXJuZWRDb2x1bW5zIjogVGhlIGNvbHVtbnMgcmV0dXJuZWQgb24gc3VjY2Vzc2Z1bCBsb2dpbiwgZW1wdHkgbWVhbnMgJ2FsbCcgKCIiKQotICJkYkF1dGgudXNlcm5hbWVGb3JtRmllbGQiOiBUaGUgbmFtZSBvZiB0aGUgZm9ybSBmaWVsZCB0aGF0IGhvbGRzIHRoZSB1c2VybmFtZSAoInVzZXJuYW1lIikKLSAiZGJBdXRoLnBhc3N3b3JkRm9ybUZpZWxkIjogVGhlIG5hbWUgb2YgdGhlIGZvcm0gZmllbGQgdGhhdCBob2xkcyB0aGUgcGFzc3dvcmQgKCJwYXNzd29yZCIpCi0gImRiQXV0aC5uZXdQYXNzd29yZEZvcm1GaWVsZCI6IFRoZSBuYW1lIG9mIHRoZSBmb3JtIGZpZWxkIHRoYXQgaG9sZHMgdGhlIG5ldyBwYXNzd29yZCAoIm5ld1Bhc3N3b3JkIikKLSAiZGJBdXRoLnJlZ2lzdGVyVXNlciI6IEpTT04gdXNlciBkYXRhIChvciAiMSIpIGluIGNhc2UgeW91IHdhbnQgdGhlIC9yZWdpc3RlciBlbmRwb2ludCBlbmFibGVkICgiIikKLSAiZGJBdXRoLmxvZ2luQWZ0ZXJSZWdpc3RyYXRpb24iOiAxIG9yIHplcm8gaWYgcmVnaXN0ZXJlZCB1c2VycyBzaG91bGQgYmUgbG9nZ2VkIGluIGFmdGVyIHJlZ2lzdHJhdGlvbiAoIiIpCi0gImRiQXV0aC5wYXNzd29yZExlbmd0aCI6IE1pbmltdW0gbGVuZ3RoIHRoYXQgdGhlIHBhc3N3b3JkIG11c3QgaGF2ZSAoIjEyIikKLSAiZGJBdXRoLnNlc3Npb25OYW1lIjogVGhlIG5hbWUgb2YgdGhlIFBIUCBzZXNzaW9uIHRoYXQgaXMgc3RhcnRlZCAoIiIpCi0gIndwQXV0aC5tb2RlIjogU2V0IHRvICJvcHRpb25hbCIgaWYgeW91IHdhbnQgdG8gYWxsb3cgYW5vbnltb3VzIGFjY2VzcyAoInJlcXVpcmVkIikKLSAid3BBdXRoLndwRGlyZWN0b3J5IjogVGhlIGZvbGRlci9wYXRoIHdoZXJlIHRoZSBXb3JkcHJlc3MgaW5zdGFsbCBjYW4gYmUgZm91bmQgKCIuIikKLSAid3BBdXRoLnVzZXJuYW1lRm9ybUZpZWxkIjogVGhlIG5hbWUgb2YgdGhlIGZvcm0gZmllbGQgdGhhdCBob2xkcyB0aGUgdXNlcm5hbWUgKCJ1c2VybmFtZSIpCi0gIndwQXV0aC5wYXNzd29yZEZvcm1GaWVsZCI6IFRoZSBuYW1lIG9mIHRoZSBmb3JtIGZpZWxkIHRoYXQgaG9sZHMgdGhlIHBhc3N3b3JkICgicGFzc3dvcmQiKQotICJqd3RBdXRoLm1vZGUiOiBTZXQgdG8gIm9wdGlvbmFsIiBpZiB5b3Ugd2FudCB0byBhbGxvdyBhbm9ueW1vdXMgYWNjZXNzICgicmVxdWlyZWQiKQotICJqd3RBdXRoLmhlYWRlciI6IE5hbWUgb2YgdGhlIGhlYWRlciBjb250YWluaW5nIHRoZSBKV1QgdG9rZW4gKCJYLUF1dGhvcml6YXRpb24iKQotICJqd3RBdXRoLmxlZXdheSI6IFRoZSBhY2NlcHRhYmxlIG51bWJlciBvZiBzZWNvbmRzIG9mIGNsb2NrIHNrZXcgKCI1IikKLSAiand0QXV0aC50dGwiOiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdGhlIHRva2VuIGlzIHZhbGlkICgiMzAiKQotICJqd3RBdXRoLnNlY3JldHMiOiBUaGUgc2hhcmVkIHNlY3JldChzKSB1c2VkIHRvIHNpZ24gdGhlIEpXVCB0b2tlbiB3aXRoICgiIikKLSAiand0QXV0aC5hbGdvcml0aG1zIjogVGhlIGFsZ29yaXRobXMgdGhhdCBhcmUgYWxsb3dlZCwgZW1wdHkgbWVhbnMgJ2FsbCcgKCIiKQotICJqd3RBdXRoLmF1ZGllbmNlcyI6IFRoZSBhdWRpZW5jZXMgdGhhdCBhcmUgYWxsb3dlZCwgZW1wdHkgbWVhbnMgJ2FsbCcgKCIiKQotICJqd3RBdXRoLmlzc3VlcnMiOiBUaGUgaXNzdWVycyB0aGF0IGFyZSBhbGxvd2VkLCBlbXB0eSBtZWFucyAnYWxsJyAoIiIpCi0gImp3dEF1dGguc2Vzc2lvbk5hbWUiOiBUaGUgbmFtZSBvZiB0aGUgUEhQIHNlc3Npb24gdGhhdCBpcyBzdGFydGVkICgiIikKLSAiYmFzaWNBdXRoLm1vZGUiOiBTZXQgdG8gIm9wdGlvbmFsIiBpZiB5b3Ugd2FudCB0byBhbGxvdyBhbm9ueW1vdXMgYWNjZXNzICgicmVxdWlyZWQiKQotICJiYXNpY0F1dGgucmVhbG0iOiBUZXh0IHRvIHByb21wdCB3aGVuIHNob3dpbmcgbG9naW4gKCJVc2VybmFtZSBhbmQgcGFzc3dvcmQgcmVxdWlyZWQiKQotICJiYXNpY0F1dGgucGFzc3dvcmRGaWxlIjogVGhlIGZpbGUgdG8gcmVhZCBmb3IgdXNlcm5hbWUvcGFzc3dvcmQgY29tYmluYXRpb25zICgiLmh0cGFzc3dkIikKLSAiYmFzaWNBdXRoLnNlc3Npb25OYW1lIjogVGhlIG5hbWUgb2YgdGhlIFBIUCBzZXNzaW9uIHRoYXQgaXMgc3RhcnRlZCAoIiIpCi0gInJlY29ubmVjdC5kcml2ZXJIYW5kbGVyIjogSGFuZGxlciB0byBpbXBsZW1lbnQgcmV0cmlldmFsIG9mIHRoZSBkYXRhYmFzZSBkcml2ZXIgKCIiKQotICJyZWNvbm5lY3QuYWRkcmVzc0hhbmRsZXIiOiBIYW5kbGVyIHRvIGltcGxlbWVudCByZXRyaWV2YWwgb2YgdGhlIGRhdGFiYXNlIGFkZHJlc3MgKCIiKQotICJyZWNvbm5lY3QucG9ydEhhbmRsZXIiOiBIYW5kbGVyIHRvIGltcGxlbWVudCByZXRyaWV2YWwgb2YgdGhlIGRhdGFiYXNlIHBvcnQgKCIiKQotICJyZWNvbm5lY3QuZGF0YWJhc2VIYW5kbGVyIjogSGFuZGxlciB0byBpbXBsZW1lbnQgcmV0cmlldmFsIG9mIHRoZSBkYXRhYmFzZSBuYW1lICgiIikKLSAicmVjb25uZWN0LnRhYmxlc0hhbmRsZXIiOiBIYW5kbGVyIHRvIGltcGxlbWVudCByZXRyaWV2YWwgb2YgdGhlIHRhYmxlIG5hbWVzICgiIikKLSAicmVjb25uZWN0Lm1hcHBpbmdIYW5kbGVyIjogSGFuZGxlciB0byBpbXBsZW1lbnQgcmV0cmlldmFsIG9mIHRoZSBuYW1lIG1hcHBpbmcgKCIiKQotICJyZWNvbm5lY3QudXNlcm5hbWVIYW5kbGVyIjogSGFuZGxlciB0byBpbXBsZW1lbnQgcmV0cmlldmFsIG9mIHRoZSBkYXRhYmFzZSB1c2VybmFtZSAoIiIpCi0gInJlY29ubmVjdC5wYXNzd29yZEhhbmRsZXIiOiBIYW5kbGVyIHRvIGltcGxlbWVudCByZXRyaWV2YWwgb2YgdGhlIGRhdGFiYXNlIHBhc3N3b3JkICgiIikKLSAiYXV0aG9yaXphdGlvbi50YWJsZUhhbmRsZXIiOiBIYW5kbGVyIHRvIGltcGxlbWVudCB0YWJsZSBhdXRob3JpemF0aW9uIHJ1bGVzICgiIikKLSAiYXV0aG9yaXphdGlvbi5jb2x1bW5IYW5kbGVyIjogSGFuZGxlciB0byBpbXBsZW1lbnQgY29sdW1uIGF1dGhvcml6YXRpb24gcnVsZXMgKCIiKQotICJhdXRob3JpemF0aW9uLnBhdGhIYW5kbGVyIjogSGFuZGxlciB0byBpbXBsZW1lbnQgcGF0aCBhdXRob3JpemF0aW9uIHJ1bGVzICgiIikKLSAiYXV0aG9yaXphdGlvbi5yZWNvcmRIYW5kbGVyIjogSGFuZGxlciB0byBpbXBsZW1lbnQgcmVjb3JkIGF1dGhvcml6YXRpb24gZmlsdGVyIHJ1bGVzICgiIikKLSAidmFsaWRhdGlvbi5oYW5kbGVyIjogSGFuZGxlciB0byBpbXBsZW1lbnQgdmFsaWRhdGlvbiBydWxlcyBmb3IgaW5wdXQgdmFsdWVzICgiIikKLSAidmFsaWRhdGlvbi50eXBlcyI6IFR5cGVzIHRvIGVuYWJsZSB0eXBlIHZhbGlkYXRpb24gZm9yLCBlbXB0eSBtZWFucyAnbm9uZScgKCJhbGwiKQotICJ2YWxpZGF0aW9uLnRhYmxlcyI6IFRhYmxlcyB0byBlbmFibGUgdHlwZSB2YWxpZGF0aW9uIGZvciwgZW1wdHkgbWVhbnMgJ25vbmUnICgiYWxsIikKLSAiaXBBZGRyZXNzLnRhYmxlcyI6IFRhYmxlcyB0byBzZWFyY2ggZm9yIGNvbHVtbnMgdG8gb3ZlcnJpZGUgd2l0aCBJUCBhZGRyZXNzICgiIikKLSAiaXBBZGRyZXNzLmNvbHVtbnMiOiBDb2x1bW5zIHRvIHByb3RlY3QgYW5kIG92ZXJyaWRlIHdpdGggdGhlIElQIGFkZHJlc3Mgb24gY3JlYXRlICgiIikKLSAic2FuaXRhdGlvbi5oYW5kbGVyIjogSGFuZGxlciB0byBpbXBsZW1lbnQgc2FuaXRhdGlvbiBydWxlcyBmb3IgaW5wdXQgdmFsdWVzICgiIikKLSAic2FuaXRhdGlvbi50eXBlcyI6IFR5cGVzIHRvIGVuYWJsZSB0eXBlIHNhbml0YXRpb24gZm9yLCBlbXB0eSBtZWFucyAnbm9uZScgKCJhbGwiKQotICJzYW5pdGF0aW9uLnRhYmxlcyI6IFRhYmxlcyB0byBlbmFibGUgdHlwZSBzYW5pdGF0aW9uIGZvciwgZW1wdHkgbWVhbnMgJ25vbmUnICgiYWxsIikKLSAibXVsdGlUZW5hbmN5LmhhbmRsZXIiOiBIYW5kbGVyIHRvIGltcGxlbWVudCBzaW1wbGUgbXVsdGktdGVuYW5jeSBydWxlcyAoIiIpCi0gInBhZ2VMaW1pdHMucGFnZXMiOiBUaGUgbWF4aW11bSBwYWdlIG51bWJlciB0aGF0IGEgbGlzdCBvcGVyYXRpb24gYWxsb3dzICgiMTAwIikKLSAicGFnZUxpbWl0cy5yZWNvcmRzIjogVGhlIG1heGltdW0gbnVtYmVyIG9mIHJlY29yZHMgcmV0dXJuZWQgYnkgYSBsaXN0IG9wZXJhdGlvbiAoIjEwMDAiKQotICJqb2luTGltaXRzLmRlcHRoIjogVGhlIG1heGltdW0gZGVwdGggKGxlbmd0aCkgdGhhdCBpcyBhbGxvd2VkIGluIGEgam9pbiBwYXRoICgiMyIpCi0gImpvaW5MaW1pdHMudGFibGVzIjogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRhYmxlcyB0aGF0IHlvdSBhcmUgYWxsb3dlZCB0byBqb2luICgiMTAiKQotICJqb2luTGltaXRzLnJlY29yZHMiOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcmVjb3JkcyByZXR1cm5lZCBmb3IgYSBqb2luZWQgZW50aXR5ICgiMTAwMCIpCi0gInRleHRTZWFyY2gucGFyYW1ldGVyIjogVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB1c2VkIGZvciB0aGUgc2VhcmNoIHRlcm0gKCJzZWFyY2giKQotICJjdXN0b21pemF0aW9uLmJlZm9yZUhhbmRsZXIiOiBIYW5kbGVyIHRvIGltcGxlbWVudCByZXF1ZXN0IGN1c3RvbWl6YXRpb24gKCIiKQotICJjdXN0b21pemF0aW9uLmFmdGVySGFuZGxlciI6IEhhbmRsZXIgdG8gaW1wbGVtZW50IHJlc3BvbnNlIGN1c3RvbWl6YXRpb24gKCIiKQotICJqc29uLmNvbnRyb2xsZXJzIjogQ29udHJvbGxlcnMgdG8gcHJvY2VzcyBKU09OIHN0cmluZ3MgZm9yICgicmVjb3JkcyxnZW9qc29uIikKLSAianNvbi50YWJsZXMiOiBUYWJsZXMgdG8gcHJvY2VzcyBKU09OIHN0cmluZ3MgZm9yICgiYWxsIikKLSAianNvbi5jb2x1bW5zIjogQ29sdW1ucyB0byBwcm9jZXNzIEpTT04gc3RyaW5ncyBmb3IgKCJhbGwiKQotICJ4bWwudHlwZXMiOiBKU09OIHR5cGVzIHRoYXQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBYTUwgdHlwZSBhdHRyaWJ1dGUgKCJudWxsLGFycmF5IikKCklmIHlvdSBkb24ndCBzcGVjaWZ5IHRoZXNlIHBhcmFtZXRlcnMgaW4gdGhlIGNvbmZpZ3VyYXRpb24sIHRoZW4gdGhlIGRlZmF1bHQgdmFsdWVzIChiZXR3ZWVuIGJyYWNrZXRzKSBhcmUgdXNlZC4KCkluIHRoZSBzZWN0aW9ucyBiZWxvdyB5b3UgZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBidWlsdC1pbiBtaWRkbGV3YXJlLgoKIyMjIEF1dGhlbnRpY2F0aW9uCgpDdXJyZW50bHkgdGhlcmUgYXJlIGZpdmUgdHlwZXMgb2YgYXV0aGVudGljYXRpb24gc3VwcG9ydGVkLiBUaGV5IGFsbCBzdG9yZSB0aGUgYXV0aGVudGljYXRlZCB1c2VyIGluIHRoZSBgJF9TRVNTSU9OYCBzdXBlciBnbG9iYWwuClRoaXMgdmFyaWFibGUgY2FuIGJlIHVzZWQgaW4gdGhlIGF1dGhvcml6YXRpb24gaGFuZGxlcnMgdG8gZGVjaWRlIHdldGhlciBvciBub3Qgc29tZWJvZHkgc2hvdWxkIGhhdmUgcmVhZCBvciB3cml0ZSBhY2Nlc3MgdG8gY2VydGFpbiB0YWJsZXMsIGNvbHVtbnMgb3IgcmVjb3Jkcy4KVGhlIGZvbGxvd2luZyBvdmVydmlldyBzaG93cyB0aGUga2luZHMgb2YgYXV0aGVudGljYXRpb24gbWlkZGxld2FyZSB0aGF0IHlvdSBjYW4gZW5hYmxlLgoKfCBOYW1lICAgICAgIHwgTWlkZGxld2FyZSAgIHwgQXV0aGVudGljYXRlZCB2aWEgICAgICB8IFVzZXJzIGFyZSBzdG9yZWQgaW4gfCBTZXNzaW9uIHZhcmlhYmxlICAgICAgICB8CnwgLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IEFQSSBrZXkgICAgfCBhcGlLZXlBdXRoICAgfCAnWC1BUEktS2V5JyBoZWFkZXIgICAgIHwgY29uZmlndXJhdGlvbiAgICAgICB8IGAkX1NFU1NJT05bJ2FwaUtleSddYCAgIHwKfCBBUEkga2V5IERCIHwgYXBpS2V5RGJBdXRoIHwgJ1gtQVBJLUtleScgaGVhZGVyICAgICB8IGRhdGFiYXNlIHRhYmxlICAgICAgfCBgJF9TRVNTSU9OWydhcGlVc2VyJ11gICB8CnwgRGF0YWJhc2UgICB8IGRiQXV0aCAgICAgICB8ICcvbG9naW4nIGVuZHBvaW50ICAgICAgfCBkYXRhYmFzZSB0YWJsZSAgICAgIHwgYCRfU0VTU0lPTlsndXNlciddYCAgICAgfAp8IEJhc2ljICAgICAgfCBiYXNpY0F1dGggICAgfCAnQXV0aG9yaXphdGlvbicgaGVhZGVyIHwgJy5odHBhc3N3ZCcgZmlsZSAgICB8IGAkX1NFU1NJT05bJ3VzZXJuYW1lJ11gIHwKfCBKV1QgICAgICAgIHwgand0QXV0aCAgICAgIHwgJ0F1dGhvcml6YXRpb24nIGhlYWRlciB8IGlkZW50aXR5IHByb3ZpZGVyICAgfCBgJF9TRVNTSU9OWydjbGFpbXMnXWAgICB8CgpCZWxvdyB5b3UgZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIGVhY2ggb2YgdGhlIGF1dGhlbnRpY2F0aW9uIHR5cGVzLgoKIyMjIyBBUEkga2V5IGF1dGhlbnRpY2F0aW9uCgpBUEkga2V5IGF1dGhlbnRpY2F0aW9uIHdvcmtzIGJ5IHNlbmRpbmcgYW4gQVBJIGtleSBpbiBhIHJlcXVlc3QgaGVhZGVyLgpUaGUgaGVhZGVyIG5hbWUgZGVmYXVsdHMgdG8gIlgtQVBJLUtleSIgYW5kIGNhbiBiZSBjb25maWd1cmVkIHVzaW5nIHRoZSAnYXBpS2V5QXV0aC5oZWFkZXInIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLgpWYWxpZCBBUEkga2V5cyBtdXN0IGJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhlICdhcGlLZXlBdXRoLmtleXMnIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIChjb21tYSBzZXBhcmF0ZWQgbGlzdCkuCgogICAgWC1BUEktS2V5OiAwMmMwNDJhYS1jM2MyLTRkMTEtOWRhZS0xYTZlMjMwZWE5NWUKClRoZSBhdXRoZW50aWNhdGVkIEFQSSBrZXkgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGAkX1NFU1NJT05bJ2FwaUtleSddYCB2YXJpYWJsZS4KCk5vdGUgdGhhdCB0aGUgQVBJIGtleSBhdXRoZW50aWNhdGlvbiBkb2VzIG5vdCByZXF1aXJlIG9yIHVzZSBzZXNzaW9uIGNvb2tpZXMuCgojIyMjIEFQSSBrZXkgZGF0YWJhc2UgYXV0aGVudGljYXRpb24KCkFQSSBrZXkgZGF0YWJhc2UgYXV0aGVudGljYXRpb24gd29ya3MgYnkgc2VuZGluZyBhbiBBUEkga2V5IGluIGEgcmVxdWVzdCBoZWFkZXIgIlgtQVBJLUtleSIgKHRoZSBuYW1lIGlzIGNvbmZpZ3VyYWJsZSkuClZhbGlkIEFQSSBrZXlzIGFyZSByZWFkIGZyb20gdGhlIGRhdGFiYXNlIGZyb20gdGhlIGNvbHVtbiAiYXBpX2tleSIgb2YgdGhlICJ1c2VycyIgdGFibGUgKGJvdGggbmFtZXMgYXJlIGNvbmZpZ3VyYWJsZSkuCgogICAgWC1BUEktS2V5OiAwMmMwNDJhYS1jM2MyLTRkMTEtOWRhZS0xYTZlMjMwZWE5NWUKClRoZSBhdXRoZW50aWNhdGVkIHVzZXIgKHdpdGggYWxsIGl0J3MgcHJvcGVydGllcykgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGAkX1NFU1NJT05bJ2FwaVVzZXInXWAgdmFyaWFibGUuCgpOb3RlIHRoYXQgdGhlIEFQSSBrZXkgZGF0YWJhc2UgYXV0aGVudGljYXRpb24gZG9lcyBub3QgcmVxdWlyZSBvciB1c2Ugc2Vzc2lvbiBjb29raWVzLgoKIyMjIyBEYXRhYmFzZSBhdXRoZW50aWNhdGlvbgoKVGhlIGRhdGFiYXNlIGF1dGhlbnRpY2F0aW9uIG1pZGRsZXdhcmUgZGVmaW5lcyBmaXZlIG5ldyByb3V0ZXM6CgogICAgbWV0aG9kIHBhdGggICAgICAgLSBwYXJhbWV0ZXJzICAgICAgICAgICAgICAgICAgICAgIC0gZGVzY3JpcHRpb24KICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgR0VUICAgIC9tZSAgICAgICAgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcmV0dXJucyB0aGUgdXNlciB0aGF0IGlzIGN1cnJlbnRseSBsb2dnZWQgaW4KICAgIFBPU1QgICAvcmVnaXN0ZXIgIC0gdXNlcm5hbWUsIHBhc3N3b3JkICAgICAgICAgICAgICAtIGFkZHMgYSB1c2VyIHdpdGggZ2l2ZW4gdXNlcm5hbWUgYW5kIHBhc3N3b3JkCiAgICBQT1NUICAgL2xvZ2luICAgICAtIHVzZXJuYW1lLCBwYXNzd29yZCAgICAgICAgICAgICAgLSBsb2dzIGEgdXNlciBpbiBieSB1c2VybmFtZSBhbmQgcGFzc3dvcmQKICAgIFBPU1QgICAvcGFzc3dvcmQgIC0gdXNlcm5hbWUsIHBhc3N3b3JkLCBuZXdQYXNzd29yZCAtIHVwZGF0ZXMgdGhlIHBhc3N3b3JkIG9mIHRoZSBsb2dnZWQgaW4gdXNlcgogICAgUE9TVCAgIC9sb2dvdXQgICAgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gbG9ncyBvdXQgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlcgoKQSB1c2VyIGNhbiBiZSBsb2dnZWQgaW4gYnkgc2VuZGluZyBpdCdzIHVzZXJuYW1lIGFuZCBwYXNzd29yZCB0byB0aGUgbG9naW4gZW5kcG9pbnQgKGluIEpTT04gZm9ybWF0KS4KVGhlIGF1dGhlbnRpY2F0ZWQgdXNlciAod2l0aCBhbGwgaXQncyBwcm9wZXJ0aWVzKSB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgYCRfU0VTU0lPTlsndXNlciddYCB2YXJpYWJsZS4KVGhlIHVzZXIgY2FuIGJlIGxvZ2dlZCBvdXQgYnkgc2VuZGluZyBhIFBPU1QgcmVxdWVzdCB3aXRoIGFuIGVtcHR5IGJvZHkgdG8gdGhlIGxvZ291dCBlbmRwb2ludC4KVGhlIHBhc3N3b3JkcyBhcmUgc3RvcmVkIGFzIGhhc2hlcyBpbiB0aGUgcGFzc3dvcmQgY29sdW1uIGluIHRoZSB1c2VycyB0YWJsZS4gWW91IGNhbiByZWdpc3RlciBhIG5ldyB1c2VyCnVzaW5nIHRoZSByZWdpc3RlciBlbmRwb2ludCwgYnV0IHRoaXMgZnVuY3Rpb25hbGl0eSBtdXN0IGJlIHR1cm5lZCBvbiB1c2luZyB0aGUgImRiQXV0aC5yZWdpc3RlclVzZXIiCmNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLgoKSXQgaXMgSU1QT1JUQU5UIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgdXNlcnMgdGFibGUgdXNpbmcgdGhlICdhdXRob3JpemF0aW9uJyBtaWRkbGV3YXJlLCBvdGhlcndpc2UgYWxsIAp1c2VycyBjYW4gZnJlZWx5IGFkZCwgbW9kaWZ5IG9yIGRlbGV0ZSBhbnkgYWNjb3VudCEgVGhlIG1pbmltYWwgY29uZmlndXJhdGlvbiBpcyBzaG93biBiZWxvdzoKCiAgICAnbWlkZGxld2FyZXMnID0+ICdkYkF1dGgsYXV0aG9yaXphdGlvbicsCiAgICAnYXV0aG9yaXphdGlvbi50YWJsZUhhbmRsZXInID0+IGZ1bmN0aW9uICgkb3BlcmF0aW9uLCAkdGFibGVOYW1lKSB7CiAgICAgICAgcmV0dXJuICR0YWJsZU5hbWUgIT0gJ3VzZXJzJzsKICAgIH0sCgpOb3RlIHRoYXQgdGhpcyBtaWRkbGV3YXJlIHVzZXMgc2Vzc2lvbiBjb29raWVzIGFuZCBzdG9yZXMgdGhlIGxvZ2dlZCBpbiBzdGF0ZSBvbiB0aGUgc2VydmVyLgoKKipMb2dpbiB1c2luZyB2aWV3cyB3aXRoIGpvaW5lZCB0YWJsZSoqCgpGb3IgbG9naW4gb3BlcmF0aW9ucywgaXQgaXMgcG9zc2libGUgdG8gdXNlIGEgdmlldyBhcyB0aGUgdXNlcnNUYWJsZS4gU3VjaCB2aWV3IGNhbiByZXR1cm4gYSBmaWx0ZXJlZCByZXN1bHQgZnJvbSB0aGUgdXNlcnMgdGFibGUsIGUuZy4sICp3aGVyZSBhY3RpdmUgPSB0cnVlKiBvciBpdCBtYXkgYWxzbyByZXR1cm4gYSByZXN1bHQgbXVsdGlwbGUgdGFibGVzIHRocnUgYSB0YWJsZSBqb2luLiBBdCBhIG1pbmltdW0sIHRoZSB2aWV3IHNob3VsZCBpbmNsdWRlIHRoZSAqKip1c2VybmFtZSoqKiBhbmQgKioqcGFzc3dvcmQqKiogYW5kIGEgZmllbGQgbmFtZWQgKioqaWQqKiouCgpIb3dldmVyLCB2aWV3cyB3aXRoIGpvaW5lZCB0YWJsZXMgYXJlIG5vdCBpbnNlcnRhYmxlIChbc2VlIGlzc3VlIDkwN10oaHR0cHM6Ly9naXRodWIuY29tL21ldmRzY2hlZS9waHAtY3J1ZC1hcGkvaXNzdWVzLzkwNykgKS4gQXMgYSB3b3JrYXJvdW5kLCB1c2UgdGhlIHByb3BlcnR5ICoqKmxvZ2luVGFibGUqKiogdG8gc2V0IGEgZGlmZmVyZW50IHJlZmVyZW5jZSB0YWJsZSBmb3IgbG9naW4uIFRoZSAqKnVzZXJzVGFibGUqKiB3aWxsIHN0aWxsIGJlIHNldCB0byB0aGUgbm9ybWFsLCBpbnNlcnRhYmxlIHVzZXJzIHRhYmxlLiAKCiMjIyMgV29yZHByZXNzIGF1dGhlbnRpY2F0aW9uCgpUaGUgV29yZHByZXNzIGF1dGhlbnRpY2F0aW9uIG1pZGRsZXdhcmUgZGVmaW5lcyB0aHJlZSByb3V0ZXM6CgogICAgbWV0aG9kIHBhdGggICAgICAgLSBwYXJhbWV0ZXJzICAgICAgICAgICAgICAgICAgICAgIC0gZGVzY3JpcHRpb24KICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgR0VUICAgIC9tZSAgICAgICAgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcmV0dXJucyB0aGUgdXNlciB0aGF0IGlzIGN1cnJlbnRseSBsb2dnZWQgaW4KICAgIFBPU1QgICAvbG9naW4gICAgIC0gdXNlcm5hbWUsIHBhc3N3b3JkICAgICAgICAgICAgICAtIGxvZ3MgYSB1c2VyIGluIGJ5IHVzZXJuYW1lIGFuZCBwYXNzd29yZAogICAgUE9TVCAgIC9sb2dvdXQgICAgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gbG9ncyBvdXQgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlcgoKQSB1c2VyIGNhbiBiZSBsb2dnZWQgaW4gYnkgc2VuZGluZyBpdCdzIHVzZXJuYW1lIGFuZCBwYXNzd29yZCB0byB0aGUgbG9naW4gZW5kcG9pbnQgKGluIEpTT04gZm9ybWF0KS4KVGhlIHVzZXIgY2FuIGJlIGxvZ2dlZCBvdXQgYnkgc2VuZGluZyBhIFBPU1QgcmVxdWVzdCB3aXRoIGFuIGVtcHR5IGJvZHkgdG8gdGhlIGxvZ291dCBlbmRwb2ludC4KWW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgV29yZHByZXNzIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgdXNpbmcgdGhlICJ3cEF1dGgud3BEaXJlY3RvcnkiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLgpUaGUgbWlkZGxld2FyZSBjYWxscyAid3AtbG9hZC5waHAiIHRoaXMgYWxsb3dzIHlvdSB0byB1c2UgV29yZHByZXNzIGZ1bmN0aW9ucyBpbiB0aGUgYXV0aG9yaXphdGlvbiBtaWRkbGV3YXJlLCBsaWtlOgoKLSB3cF9nZXRfY3VycmVudF91c2VyKCkKLSBpc191c2VyX2xvZ2dlZF9pbigpCi0gaXNfc3VwZXJfYWRtaW4oKQotIHVzZXJfY2FuKHdwX2dldF9jdXJyZW50X3VzZXIoKSwnZWRpdF9wb3N0cycpOwoKTm90ZSB0aGF0IHRoZSBgJF9TRVNTSU9OYCB2YXJpYWJsZSBpcyBub3QgdXNlZCBieSB0aGlzIG1pZGRsZXdhcmUuCgojIyMjIEJhc2ljIGF1dGhlbnRpY2F0aW9uCgpUaGUgQmFzaWMgdHlwZSBzdXBwb3J0cyBhIGZpbGUgKGJ5IGRlZmF1bHQgJy5odHBhc3N3ZCcpIHRoYXQgaG9sZHMgdGhlIHVzZXJzIGFuZCB0aGVpciAoaGFzaGVkKSBwYXNzd29yZHMgc2VwYXJhdGVkIGJ5IGEgY29sb24gKCc6JykuIApXaGVuIHRoZSBwYXNzd29yZHMgYXJlIGVudGVyZWQgaW4gcGxhaW4gdGV4dCB0aGV5IHdpbGwgYmUgYXV0b21hdGljYWxseSBoYXNoZWQuClRoZSBhdXRoZW50aWNhdGVkIHVzZXJuYW1lIHdpbGwgYmUgc3RvcmVkIGluIHRoZSBgJF9TRVNTSU9OWyd1c2VybmFtZSddYCB2YXJpYWJsZS4KWW91IG5lZWQgdG8gc2VuZCBhbiAiQXV0aG9yaXphdGlvbiIgaGVhZGVyIGNvbnRhaW5pbmcgYSBiYXNlNjQgdXJsIGVuY29kZWQgdmVyc2lvbiBvZiB5b3VyIGNvbG9uIHNlcGFyYXRlZCB1c2VybmFtZSBhbmQgcGFzc3dvcmQsIGFmdGVyIHRoZSB3b3JkICJCYXNpYyIuCgogICAgQXV0aG9yaXphdGlvbjogQmFzaWMgZFhObGNtNWhiV1V4T25CaGMzTjNiM0prTVEKClRoaXMgZXhhbXBsZSBzZW5kcyB0aGUgc3RyaW5nICJ1c2VybmFtZTE6cGFzc3dvcmQxIi4KCiMjIyMgSldUIGF1dGhlbnRpY2F0aW9uCgpUaGUgSldUIHR5cGUgcmVxdWlyZXMgYW5vdGhlciAoU1NPL0lkZW50aXR5KSBzZXJ2ZXIgdG8gc2lnbiBhIHRva2VuIHRoYXQgY29udGFpbnMgY2xhaW1zLiAKQm90aCBzZXJ2ZXJzIHNoYXJlIGEgc2VjcmV0IHNvIHRoYXQgdGhleSBjYW4gZWl0aGVyIHNpZ24gb3IgdmVyaWZ5IHRoYXQgdGhlIHNpZ25hdHVyZSBpcyB2YWxpZC4KQ2xhaW1zIGFyZSBzdG9yZWQgaW4gdGhlIGAkX1NFU1NJT05bJ2NsYWltcyddYCB2YXJpYWJsZS4gWW91IG5lZWQgdG8gc2VuZCBhbiAiWC1BdXRob3JpemF0aW9uIiAKaGVhZGVyIGNvbnRhaW5pbmcgYSBiYXNlNjQgdXJsIGVuY29kZWQgYW5kIGRvdCBzZXBhcmF0ZWQgdG9rZW4gaGVhZGVyLCBib2R5IGFuZCBzaWduYXR1cmUgYWZ0ZXIKdGhlIHdvcmQgIkJlYXJlciIgKFtyZWFkIG1vcmUgYWJvdXQgSldUIGhlcmVdKGh0dHBzOi8vand0LmlvLykpLiBUaGUgc3RhbmRhcmQgc2F5cyB5b3UgbmVlZCB0bwp1c2UgdGhlICJBdXRob3JpemF0aW9uIiBoZWFkZXIsIGJ1dCB0aGlzIGlzIHByb2JsZW1hdGljIGluIEFwYWNoZSBhbmQgUEhQLgoKICAgIFgtQXV0aG9yaXphdGlvbjogQmVhcmVyIGV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKOS5leUp6ZFdJaU9pSXhNak0wTlRZM09Ea3dJaXdpYm1GdFpTSTZJa3B2YUc0Z1JHOWxJaXdpWVdSdGFXNGlPblJ5ZFdVc0ltbGhkQ0k2SWpFMU16Z3lNRGMyTURVaUxDSmxlSEFpT2pFMU16Z3lNRGMyTXpWOS5aNXB4X0dUMTVUUktoSkNUSGhEdDVaNks2TFJEU0ZuTGo4VTVvazlsN2d3CgpUaGlzIGV4YW1wbGUgc2VuZHMgdGhlIHNpZ25lZCBjbGFpbXM6CgogICAgewogICAgICAic3ViIjogIjEyMzQ1Njc4OTAiLAogICAgICAibmFtZSI6ICJKb2huIERvZSIsCiAgICAgICJhZG1pbiI6IHRydWUsCiAgICAgICJpYXQiOiAiMTUzODIwNzYwNSIsCiAgICAgICJleHAiOiAxNTM4MjA3NjM1CiAgICB9CgpOQjogVGhlIEpXVCBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIHRoZSBSU0EgYW5kIEhNQUMgYmFzZWQgYWxnb3JpdGhtcy4KCiMjIyMjIENvbmZpZ3VyZSBhbmQgdGVzdCBKV1QgYXV0aGVudGljYXRpb24gd2l0aCBBdXRoMAoKRmlyc3QgeW91IG5lZWQgdG8gY3JlYXRlIGFuIGFjY291bnQgb24gW0F1dGgwXShodHRwczovL2F1dGgwLmNvbS9hdXRoL2xvZ2luKS4KT25jZSBsb2dnZWQgaW4sIHlvdSBoYXZlIHRvIGNyZWF0ZSBhbiBhcHBsaWNhdGlvbiAoaXRzIHR5cGUgZG9lcyBub3QgbWF0dGVyKS4gQ29sbGVjdCB0aGUgYERvbWFpbmAKYW5kIGBDbGllbnQgSURgIGFuZCBrZWVwIHRoZW0gZm9yIGEgbGF0ZXIgdXNlLiBUaGVuLCBjcmVhdGUgYW4gQVBJOiBnaXZlIGl0IGEgbmFtZSBhbmQgZmlsbCB0aGUKYGlkZW50aWZpZXJgIGZpZWxkIHdpdGggeW91ciBBUEkgZW5kcG9pbnQncyBVUkwuCgpUaGVuIHlvdSBoYXZlIHRvIGNvbmZpZ3VyZSB0aGUgYGp3dEF1dGguc2VjcmV0c2AgY29uZmlndXJhdGlvbiBpbiB5b3VyIGBhcGkucGhwYCBmaWxlLgpEb24ndCBmaWxsIGl0IHdpdGggdGhlIGBzZWNyZXRgIHlvdSB3aWxsIGZpbmQgaW4geW91ciBBdXRoMCBhcHBsaWNhdGlvbiBzZXR0aW5ncyBidXQgd2l0aCAqKmEKcHVibGljIGNlcnRpZmljYXRlKiouIFRvIGZpbmQgaXQsIGdvIHRvIHRoZSBzZXR0aW5ncyBvZiB5b3VyIGFwcGxpY2F0aW9uLCB0aGVuIGluICJFeHRyYSBzZXR0aW5ncyIuCllvdSB3aWxsIG5vdyBmaW5kIGEgIkNlcnRpZmljYXRlcyIgdGFiIHdoZXJlIHlvdSB3aWxsIGZpbmQgeW91ciBQdWJsaWMgS2V5IGluIHRoZSBTaWduaW5nCkNlcnRpZmljYXRlIGZpZWxkLgoKVG8gdGVzdCB5b3VyIGludGVncmF0aW9uLCB5b3UgY2FuIGNvcHkgdGhlIFthdXRoMC92YW5pbGxhLmh0bWxdKGV4YW1wbGVzL2NsaWVudHMvYXV0aDAvdmFuaWxsYS5odG1sKQpmaWxlLiBCZSBzdXJlIHRvIGZpbGwgdGhlc2UgdGhyZWUgdmFyaWFibGVzOgoKIC0gYGF1dGhVcmxgIHdpdGggeW91ciBBdXRoMCBkb21haW4KIC0gYGNsaWVudElkYCB3aXRoIHlvdXIgQ2xpZW50IElECiAtIGBhdWRpZW5jZWAgd2l0aCB0aGUgQVBJIFVSTCB5b3UgY3JlYXRlZCBpbiBBdXRoMAoKTm90ZSB0aGF0IGlmIHlvdSBkb24ndCBmaWxsIHRoZSBhdWRpZW5jZSBwYXJhbWV0ZXIsIGl0IHdpbGwgbm90IHdvcmsgYmVjYXVzZSB5b3Ugd29uJ3QgZ2V0IGEgdmFsaWQgSldULgpBbHNvIG5vdGUgdGhhdCB5b3Ugc2hvdWxkIGZpbGwgYGp3dEF1dGguYXVkaWVuY2VzYCAod2l0aCB0aGUgdmFsdWUgb2YgdGhlIGBhdWRpZW5jZWApIHRvIGVuc3VyZSB0aGUKdG9rZW5zIGFyZSB2YWxpZGF0ZWQgdG8gYmUgZ2VuZXJhdGVkIGZvciB5b3VyIGFwcGxpY2F0aW9uLgoKWW91IGNhbiBhbHNvIGNoYW5nZSB0aGUgYHVybGAgdmFyaWFibGUsIHVzZWQgdG8gdGVzdCB0aGUgQVBJIHdpdGggYXV0aGVudGljYXRpb24uCgpbTW9yZSBpbmZvXShodHRwczovL2F1dGgwLmNvbS9kb2NzL2FwaS1hdXRoL3R1dG9yaWFscy92ZXJpZnktYWNjZXNzLXRva2VuKQoKIyMjIyMgQ29uZmlndXJlIGFuZCB0ZXN0IEpXVCBhdXRoZW50aWNhdGlvbiB3aXRoIEZpcmViYXNlCgpGaXJzdCB5b3UgbmVlZCB0byBjcmVhdGUgYSBGaXJlYmFzZSBwcm9qZWN0IG9uIHRoZSBbRmlyZWJhc2UgY29uc29sZV0oaHR0cHM6Ly9jb25zb2xlLmZpcmViYXNlLmdvb2dsZS5jb20vKS4KQWRkIGEgd2ViIGFwcGxpY2F0aW9uIHRvIHRoaXMgcHJvamVjdCBhbmQgZ3JhYiB0aGUgY29kZSBzbmlwcGV0IGZvciBsYXRlciB1c2UuCgpUaGVuIHlvdSBoYXZlIHRvIGNvbmZpZ3VyZSB0aGUgYGp3dEF1dGguc2VjcmV0c2AgY29uZmlndXJhdGlvbiBpbiB5b3VyIGBhcGkucGhwYCBmaWxlLiAKVGhpcyBjYW4gYmUgZG9uZSBhcyBmb2xsb3dzOgoKYS4gTG9nIGEgdXNlciBpbiB0byB5b3VyIEZpcmViYXNlLWJhc2VkIGFwcCwgZ2V0IGFuIGF1dGhlbnRpY2F0aW9uIHRva2VuIGZvciB0aGF0IHVzZXIKYi4gR28gdG8gW2h0dHBzOi8vand0LmlvL10oaHR0cHM6Ly9qd3QuaW8vKSBhbmQgcGFzdGUgdGhlIHRva2VuIGluIHRoZSBkZWNvZGluZyBmaWVsZApjLiBSZWFkIHRoZSBkZWNvZGVkIGhlYWRlciBpbmZvcm1hdGlvbiBmcm9tIHRoZSB0b2tlbiwgaXQgd2lsbCBnaXZlIHlvdSB0aGUgY29ycmVjdCBga2lkYApkLiBHcmFiIHRoZSBwdWJsaWMga2V5IHZpYSB0aGlzIFtVUkxdKGh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3JvYm90L3YxL21ldGFkYXRhL3g1MDkvc2VjdXJldG9rZW5Ac3lzdGVtLmdzZXJ2aWNlYWNjb3VudC5jb20pLCB3aGljaCBjb3JyZXNwb25kcyB0byB5b3VyIGBraWRgIGZyb20gcHJldmlvdXMgc3RlcAplLiBOb3csIGp1c3QgZmlsbCBgand0QXV0aC5zZWNyZXRzYCB3aXRoIHlvdXIgcHVibGljIGtleSBpbiB0aGUgYGFwaS5waHBgCgpBbHNvIGNvbmZpZ3VyZSB0aGUgYGp3dEF1dGguYXVkaWVuY2VzYCAoZmlsbCBpbiB0aGUgRmlyZWJhc2UgcHJvamVjdCBJRCkuCgpIZXJlIGlzIGFuIGV4YW1wbGUgb2Ygd2hhdCBpdCBzaG91bGQgbG9vayBsaWtlIGluIHRoZSBjb25maWd1cmF0aW9uOgoKYGBgCi4uLiwKJ21pZGRsZXdhcmVzJyA9PiAnY29ycywgand0QXV0aCwgYXV0aG9yaXphdGlvbicsCiAgICAgICAgJ2p3dEF1dGguc2VjcmV0cycgPT4gImNlNWNlZDZlNDBkY2QxZWZmNDA3MDQ4ODY3YjFlZDFlNzA2Njg2YTA6LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlESERDQ0FnU2dBd0lCQWdJSUV4dW45YkpTSzF3d0RRWUpLb1pJaHZjTkFRRUZCUUF3TVRFdk1DMEdBMVVFXG5BeE1tYzJWamRYSmxkRzlyWlc0dWMzbHpkR1Z0TG1kelpYSjJhV05sWVdOamIzVnVkQzVqYjIwd0hoY05NVGt4XG5Nakl5TWpFeU1UQTNXaGNOTWpBd01UQTRNRGt6TmpBM1dqQXhNUzh3TFFZRFZRUURFeVp6WldOMWNtVjBiMnRsXG5iaTV6ZVhOMFpXMHVaM05sY25acFkyVmhZMk52ZFc1MExtTnZiVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEXG5nZ0VQQURDQ0FRb0NnZ0VCQUtzdlZEVXdYZVlRdHlTTnZ5STEvdFpBazBzajdaeDQvMStZTFVvbXdsSzZ2bUVkXG55bDJJWE9ZT2ozVlI3RkJBMjRBOS8vbm5ycCttVjhZT1lFT2RhV1g3UFFvMFBJUEZQcWRBMHI3Q3FCVVdIUGZRXG4xV1ZIVlJRWTNHMGM3dXBNOTdVZk1lczl4T3JNcXl2ZWNNUmsxZTVTNmVUMTJaaDJvZzd5aVZzOGdQODNNMUVCXG5HcXNlVWFsdGFhZGp5VDM1dzVCME55MC83TmRMWWl2Mkc2WjBTODIxU3h2U28xL3dmbWlsbkJCS1lZbHVQMFBBXG45TlB6bldGUDZ1WG5YN2dLeHlKVDkvL2NZVnhUTzYrYjFUVDEzWXZycG0xYTRFdUNPaExyWkg2RXJIUVRjY0FNXG5oQXg4bWROdGJST3NwMGRsUEtyU2ZxTzgydUZ6NDVSWFpZbVNlUDBDQXdFQUFhTTRNRFl3REFZRFZSMFRBUUgvXG5CQUl3QURBT0JnTlZIUThCQWY4RUJBTUNCNEF3RmdZRFZSMGxBUUgvQkF3d0NnWUlLd1lCQlFVSEF3SXdEUVlKXG5Lb1pJaHZjTkFRRUZCUUFEZ2dFQkFDTnNKNW0wMGdkVHZENmo2YWhVUnNHck5aMFZKMFlSRVZRNVUySnR1YnI4XG5uMmZ1aE14a0I4MTQ3SVN6Zmk2d1pSK3lOd1BHamxyOEprQUhBQzBpK05hbTlTcVJ5ZlpMcXNtK3RIZGdGVDhoXG5wYStSL0ZvR3JyTHp4Sk5SaXYwVHJpcDhoWmpnejNQQ2x6Nkt4QlF6cUwrcmZHVjJNYndUWHVCb0V2TFUxbVlBXG5vMy9VYm9KVDdjTkdqWjhuSFhlb0tNc2VjMS9INTVsVWRjb25iVG01aU1VMXNURGYrM1N0R1l6VHdDK0g2eWMyXG5ZM3pJcTMvY1FVQ3JFVGtBTHJxenlDbkxqUnJMWVp1MzZJVE9hS1VidG1aaHdyUDk5aTJmK0g0QWIyaThqZU11XG5rNjFIRDI5bVJPWWpsOTVNa28yQnhMKzc2VG83K3BtbjczVTlhdVQreGZBPVxuLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLVxuIiwKICAgICAgICAnand0QXV0aC5hdWRpZW5jZXMnID0+ICd5b3VyLXByb2plY3QtaWQnLAogICAgICAgICdjb3JzLmFsbG93ZWRPcmlnaW5zJyA9PiAnKicsCiAgICAgICAgJ2NvcnMuYWxsb3dIZWFkZXJzJyA9PiAnWC1BdXRob3JpemF0aW9uJwpgYGAKCk5vdGVzOgogLSBUaGUgYGtpZDprZXlgIHBhaXIgaXMgZm9ybWF0dGVkIGFzIGEgc3RyaW5nCiAtIERvIG5vdCBpbmNsdWRlIHNwYWNlcyBiZWZvcmUgb3IgYWZ0ZXIgdGhlICc6JwogLSBVc2UgZG91YmxlIHF1b3RhdGlvbiBtYXJrcyAoIikgYXJvdW5kIHRoZSBzdHJpbmcgdGV4dAogLSBUaGUgc3RyaW5nIG11c3QgY29udGFpbiB0aGUgbGluZWZlZWRzIChcbikKIC0gYGp3dEF1dGguYXVkaWVuY2VzYCBzaG91bGQgY29udGFpbiB5b3VyIEZpcmViYXNlIHByb2plY3RJZAoKVG8gdGVzdCB5b3VyIGludGVncmF0aW9uLCB5b3UgY2FuIGNvcHkgdGhlIFtmaXJlYmFzZS92YW5pbGxhLmh0bWxdKGV4YW1wbGVzL2NsaWVudHMvZmlyZWJhc2UvdmFuaWxsYS5odG1sKQpmaWxlIGFuZCB0aGUgW2ZpcmViYXNlL3ZhbmlsbGEtc3VjY2Vzcy5odG1sXShleGFtcGxlcy9jbGllbnRzL2ZpcmViYXNlL3ZhbmlsbGEtc3VjY2Vzcy5odG1sKSBmaWxlLAp1c2VkIGFzIGEgInN1Y2Nlc3MiIHBhZ2UgYW5kIHRvIGRpc3BsYXkgdGhlIEFQSSByZXN1bHQuCgpSZXBsYWNlLCBpbiBib3RoIGZpbGVzLCB0aGUgRmlyZWJhc2UgY29uZmlndXJhdGlvbiAoYGZpcmViYXNlQ29uZmlnYCBvYmplY3QpLgoKWW91IGNhbiBhbHNvIGNoYW5nZSB0aGUgYHVybGAgdmFyaWFibGUsIHVzZWQgdG8gdGVzdCB0aGUgQVBJIHdpdGggYXV0aGVudGljYXRpb24uCgpbTW9yZSBpbmZvXShodHRwczovL2ZpcmViYXNlLmdvb2dsZS5jb20vZG9jcy9hdXRoL2FkbWluL3ZlcmlmeS1pZC10b2tlbnMjdmVyaWZ5X2lkX3Rva2Vuc191c2luZ19hX3RoaXJkLXBhcnR5X2p3dF9saWJyYXJ5KQoKIyMjIEF1dGhvcml6aW5nIG9wZXJhdGlvbnMKClRoZSBBdXRob3JpemF0aW9uIG1vZGVsIGFjdHMgb24gIm9wZXJhdGlvbnMiLiBUaGUgbW9zdCBpbXBvcnRhbnQgb25lcyBhcmUgbGlzdGVkIGhlcmU6CgogICAgbWV0aG9kIHBhdGggICAgICAgICAgICAgICAgICAtIG9wZXJhdGlvbiAtIGRlc2NyaXB0aW9uCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBHRVQgICAgL3JlY29yZHMve3RhYmxlfSAgICAgIC0gbGlzdCAgICAgIC0gbGlzdHMgcmVjb3JkcwogICAgUE9TVCAgIC9yZWNvcmRzL3t0YWJsZX0gICAgICAtIGNyZWF0ZSAgICAtIGNyZWF0ZXMgcmVjb3JkcwogICAgR0VUICAgIC9yZWNvcmRzL3t0YWJsZX0ve2lkfSAtIHJlYWQgICAgICAtIHJlYWRzIGEgcmVjb3JkIGJ5IHByaW1hcnkga2V5CiAgICBQVVQgICAgL3JlY29yZHMve3RhYmxlfS97aWR9IC0gdXBkYXRlICAgIC0gdXBkYXRlcyBjb2x1bW5zIG9mIGEgcmVjb3JkIGJ5IHByaW1hcnkga2V5CiAgICBERUxFVEUgL3JlY29yZHMve3RhYmxlfS97aWR9IC0gZGVsZXRlICAgIC0gZGVsZXRlcyBhIHJlY29yZCBieSBwcmltYXJ5IGtleQogICAgUEFUQ0ggIC9yZWNvcmRzL3t0YWJsZX0ve2lkfSAtIGluY3JlbWVudCAtIGluY3JlbWVudHMgY29sdW1ucyBvZiBhIHJlY29yZCBieSBwcmltYXJ5IGtleQoKVGhlICJgL29wZW5hcGlgIiBlbmRwb2ludCB3aWxsIG9ubHkgc2hvdyB3aGF0IGlzIGFsbG93ZWQgaW4geW91ciBzZXNzaW9uLiBJdCBhbHNvIGhhcyBhIHNwZWNpYWwgCiJkb2N1bWVudCIgb3BlcmF0aW9uIHRvIGFsbG93IHlvdSB0byBoaWRlIHRhYmxlcyBhbmQgY29sdW1ucyBmcm9tIHRoZSBkb2N1bWVudGF0aW9uLgogICAgCkZvciBlbmRwb2ludHMgdGhhdCBzdGFydCB3aXRoICJgL2NvbHVtbnNgIiB0aGVyZSBhcmUgdGhlIG9wZXJhdGlvbnMgInJlZmxlY3QiIGFuZCAicmVtb2RlbCIuIApUaGVzZSBvcGVyYXRpb25zIGNhbiBkaXNwbGF5IG9yIGNoYW5nZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZGF0YWJhc2UsIHRhYmxlIG9yIGNvbHVtbi4gClRoaXMgZnVuY3Rpb25hbGl0eSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IGFuZCBmb3IgZ29vZCByZWFzb24gKGJlIGNhcmVmdWwhKS4gCkFkZCB0aGUgImNvbHVtbnMiIGNvbnRyb2xsZXIgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eS4KCiMjIyBBdXRob3JpemluZyB0YWJsZXMsIGNvbHVtbnMgYW5kIHJlY29yZHMKCkJ5IGRlZmF1bHQgYWxsIHRhYmxlcywgY29sdW1ucyBhbmQgcGF0aHMgYXJlIGFjY2Vzc2libGUuIElmIHlvdSB3YW50IHRvIHJlc3RyaWN0IGFjY2VzcyB0byBzb21lIHRhYmxlcyB5b3UgbWF5IGFkZCB0aGUgJ2F1dGhvcml6YXRpb24nIG1pZGRsZXdhcmUgCmFuZCBkZWZpbmUgYSAnYXV0aG9yaXphdGlvbi50YWJsZUhhbmRsZXInIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyAnZmFsc2UnIGZvciB0aGVzZSB0YWJsZXMuCgogICAgJ2F1dGhvcml6YXRpb24udGFibGVIYW5kbGVyJyA9PiBmdW5jdGlvbiAoJG9wZXJhdGlvbiwgJHRhYmxlTmFtZSkgewogICAgICAgIHJldHVybiAkdGFibGVOYW1lICE9ICdsaWNlbnNlX2tleXMnOwogICAgfSwKClRoZSBhYm92ZSBleGFtcGxlIHdpbGwgcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSB0YWJsZSAnbGljZW5zZV9rZXlzJyBmb3IgYWxsIG9wZXJhdGlvbnMuCgogICAgJ2F1dGhvcml6YXRpb24uY29sdW1uSGFuZGxlcicgPT4gZnVuY3Rpb24gKCRvcGVyYXRpb24sICR0YWJsZU5hbWUsICRjb2x1bW5OYW1lKSB7CiAgICAgICAgcmV0dXJuICEoJHRhYmxlTmFtZSA9PSAndXNlcnMnICYmICRjb2x1bW5OYW1lID09ICdwYXNzd29yZCcpOwogICAgfSwKClRoZSBhYm92ZSBleGFtcGxlIHdpbGwgcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSAncGFzc3dvcmQnIGZpZWxkIG9mIHRoZSAndXNlcnMnIHRhYmxlIGZvciBhbGwgb3BlcmF0aW9ucy4KCiAgICAnYXV0aG9yaXphdGlvbi5yZWNvcmRIYW5kbGVyJyA9PiBmdW5jdGlvbiAoJG9wZXJhdGlvbiwgJHRhYmxlTmFtZSkgewogICAgICAgIHJldHVybiAoJHRhYmxlTmFtZSA9PSAndXNlcnMnKSA/ICdmaWx0ZXI9dXNlcm5hbWUsbmVxLGFkbWluJyA6ICcnOwogICAgfSwKClRoZSBhYm92ZSBleGFtcGxlIHdpbGwgZGlzYWxsb3cgYWNjZXNzIHRvIHVzZXIgcmVjb3JkcyB3aGVyZSB0aGUgdXNlcm5hbWUgaXMgJ2FkbWluJy4gClRoaXMgY29uc3RydWN0IGFkZHMgYSBmaWx0ZXIgdG8gZXZlcnkgZXhlY3V0ZWQgcXVlcnkuIAoKICAgICdhdXRob3JpemF0aW9uLnBhdGhIYW5kbGVyJyA9PiBmdW5jdGlvbiAoJHBhdGgpIHsKICAgICAgICByZXR1cm4gJHBhdGggPT09ICdvcGVuYXBpJyA/IGZhbHNlIDogdHJ1ZTsKICAgIH0sCgpUaGUgYWJvdmUgZXhhbXBsZSB3aWxsIGRpc2FibGVkIHRoZSBgL29wZW5hcGlgIHJvdXRlLgoKTkI6IFlvdSBuZWVkIHRvIGhhbmRsZSB0aGUgY3JlYXRpb24gb2YgaW52YWxpZCByZWNvcmRzIHdpdGggYSB2YWxpZGF0aW9uIChvciBzYW5pdGF0aW9uKSBoYW5kbGVyLgoKIyMjIFNRTCBHUkFOVCBhdXRob3JpemF0aW9uCgpZb3UgY2FuIGFsdGVybmF0aXZlbHkgdXNlIGRhdGFiYXNlIHBlcm1pc3NvbnMgKFNRTCBHUkFOVCBzdGF0ZW1lbnRzKSB0byBkZWZpbmUgdGhlIGF1dGhvcml6YXRpb24gbW9kZWwuIEluIHRoaXMgY2FzZSB5b3UKc2hvdWxkIG5vdCB1c2UgdGhlICJhdXRob3JpemF0aW9uIiBtaWRkbGV3YXJlLCBidXQgeW91IGRvIG5lZWQgdG8gdXNlIHRoZSAicmVjb25uZWN0IiBtaWRkbGV3YXJlLiBUaGUgaGFuZGxlcnMgb2YgdGhlCiJyZWNvbm5lY3QiIG1pZGRsZXdhcmUgYWxsb3cgeW91IHRvIHNwZWNpZnkgdGhlIGNvcnJlY3QgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLCBsaWtlIHRoaXM6CgogICAgJ3JlY29ubmVjdC51c2VybmFtZUhhbmRsZXInID0+IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gJ21ldmRzY2hlZSc7CiAgICB9LAogICAgJ3JlY29ubmVjdC5wYXNzd29yZEhhbmRsZXInID0+IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gJ3NlY3JldDEyMyc7CiAgICB9LAoKVGhpcyB3aWxsIG1ha2UgdGhlIEFQSSBjb25uZWN0IHRvIHRoZSBkYXRhYmFzZSBzcGVjaWZ5aW5nICJtZXZkc2NoZWUiIGFzIHRoZSB1c2VybmFtZSBhbmQgInNlY3JldDEyMyIgYXMgdGhlIHBhc3N3b3JkLgpUaGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGlzIGxlc3Mgc3BlY2lmaWMgb24gYWxsb3dlZCBhbmQgZGlzYWxsb3dlZCBvcGVyYXRpb25zIHdoZW4geW91IGFyZSB1c2luZyBkYXRhYmFzZSBwZXJtaXNzaW9ucywKYXMgdGhlIHBlcm1pc3Npb25zIGFyZSBub3QgcmVhZCBpbiB0aGUgcmVmbGVjdGlvbiBzdGVwLgoKTkI6IFlvdSBtYXkgd2FudCB0byByZXRyaWV2ZSB0aGUgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGZyb20gdGhlIHNlc3Npb24gKHRoZSAiJF9TRVNTSU9OIiB2YXJpYWJsZSkuCgojIyMgU2FuaXRpemluZyBpbnB1dAoKQnkgZGVmYXVsdCBhbGwgaW5wdXQgaXMgYWNjZXB0ZWQgYW5kIHNlbnQgdG8gdGhlIGRhdGFiYXNlLiBJZiB5b3Ugd2FudCB0byBzdHJpcCAoY2VydGFpbikgSFRNTCB0YWdzIGJlZm9yZSBzdG9yaW5nIHlvdSBtYXkgYWRkIAp0aGUgJ3Nhbml0YXRpb24nIG1pZGRsZXdhcmUgYW5kIGRlZmluZSBhICdzYW5pdGF0aW9uLmhhbmRsZXInIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgYWRqdXN0ZWQgdmFsdWUuCgogICAgJ3Nhbml0YXRpb24uaGFuZGxlcicgPT4gZnVuY3Rpb24gKCRvcGVyYXRpb24sICR0YWJsZU5hbWUsICRjb2x1bW4sICR2YWx1ZSkgewogICAgICAgIHJldHVybiBpc19zdHJpbmcoJHZhbHVlKSA/IHN0cmlwX3RhZ3MoJHZhbHVlKSA6ICR2YWx1ZTsKICAgIH0sCgpUaGUgYWJvdmUgZXhhbXBsZSB3aWxsIHN0cmlwIGFsbCBIVE1MIHRhZ3MgZnJvbSBzdHJpbmdzIGluIHRoZSBpbnB1dC4KCiMjIyBUeXBlIHNhbml0YXRpb24KCklmIHlvdSBlbmFibGUgdGhlICdzYW5pdGF0aW9uJyBtaWRkbGV3YXJlLCB0aGVuIHlvdSAoYXV0b21hdGljYWxseSkgYWxzbyBlbmFibGUgdHlwZSBzYW5pdGF0aW9uLiBXaGVuIHRoaXMgaXMgZW5hYmxlZCB5b3UgbWF5OgoKLSBzZW5kIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgaW4gYSBub24tY2hhcmFjdGVyIGZpZWxkIChpdCB3aWxsIGJlIGlnbm9yZWQpLgotIHNlbmQgYSBmbG9hdCB0byBhbiBpbnRlZ2VyIG9yIGJpZ2ludCBmaWVsZCAoaXQgd2lsbCBiZSByb3VuZGVkKS4KLSBzZW5kIGEgYmFzZTY0dXJsIGVuY29kZWQgc3RyaW5nIChpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byByZWd1bGFyIGJhc2U2NCBlbmNvZGluZykuCi0gc2VuZCBhIHRpbWUvZGF0ZS90aW1lc3RhbXAgaW4gYW55IFtzdHJ0b3RpbWUgYWNjZXB0ZWQgZm9ybWF0XShodHRwczovL3d3dy5waHAubmV0L21hbnVhbC9lbi9kYXRldGltZS5mb3JtYXRzLnBocCkgKGl0IHdpbGwgYmUgY29udmVydGVkKS4KCllvdSBtYXkgdXNlIHRoZSBjb25maWcgc2V0dGluZ3MgImBzYW5pdGF0aW9uLnR5cGVzYCIgYW5kICJgc2FuaXRhdGlvbi50YWJsZXNgIicgdG8gZGVmaW5lIGZvciB3aGljaCB0eXBlcyBhbmQKaW4gd2hpY2ggdGFibGVzIHlvdSB3YW50IHRvIGFwcGx5IHR5cGUgc2FuaXRhdGlvbiAoZGVmYXVsdHMgdG8gJ2FsbCcpLiBFeGFtcGxlOgoKICAgICdzYW5pdGF0aW9uLnR5cGVzJyA9PiAnZGF0ZSx0aW1lc3RhbXAnLAogICAgJ3Nhbml0YXRpb24udGFibGVzJyA9PiAncG9zdHMsY29tbWVudHMnLAoKSGVyZSB3ZSBlbmFibGUgdGhlIHR5cGUgc2FuaXRhdGlvbiBmb3IgZGF0ZSBhbmQgdGltZXN0YW1wIGZpZWxkcyBpbiB0aGUgcG9zdHMgYW5kIGNvbW1lbnRzIHRhYmxlcy4KCiMjIyBWYWxpZGF0aW5nIGlucHV0CgpCeSBkZWZhdWx0IGFsbCBpbnB1dCBpcyBhY2NlcHRlZCBhbmQgc2VudCB0byB0aGUgZGF0YWJhc2UuIElmIHlvdSB3YW50IHRvIHZhbGlkYXRlIHRoZSBpbnB1dCBpbiBhIGN1c3RvbSB3YXksIAp5b3UgbWF5IGFkZCB0aGUgJ3ZhbGlkYXRpb24nIG1pZGRsZXdhcmUgYW5kIGRlZmluZSBhICd2YWxpZGF0aW9uLmhhbmRsZXInIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGJvb2xlYW4gCmluZGljYXRpbmcgd2hldGhlciBvciBub3QgdGhlIHZhbHVlIGlzIHZhbGlkLgoKICAgICd2YWxpZGF0aW9uLmhhbmRsZXInID0+IGZ1bmN0aW9uICgkb3BlcmF0aW9uLCAkdGFibGVOYW1lLCAkY29sdW1uLCAkdmFsdWUsICRjb250ZXh0KSB7CiAgICAgICAgcmV0dXJuICgkY29sdW1uWyduYW1lJ10gPT0gJ3Bvc3RfaWQnICYmICFpc19udW1lcmljKCR2YWx1ZSkpID8gJ211c3QgYmUgbnVtZXJpYycgOiB0cnVlOwogICAgfSwKCldoZW4geW91IGVkaXQgYSBjb21tZW50IHdpdGggaWQgNCB1c2luZzoKCiAgICBQVVQgL3JlY29yZHMvY29tbWVudHMvNAoKQW5kIHlvdSBzZW5kIGFzIGEgYm9keToKCiAgICB7InBvc3RfaWQiOiJ0d28ifQoKVGhlbiB0aGUgc2VydmVyIHdpbGwgcmV0dXJuIGEgJzQyMicgSFRUUCBzdGF0dXMgY29kZSBhbmQgbmljZSBlcnJvciBtZXNzYWdlOgoKICAgIHsKICAgICAgICAiY29kZSI6IDEwMTMsCiAgICAgICAgIm1lc3NhZ2UiOiAiSW5wdXQgdmFsaWRhdGlvbiBmYWlsZWQgZm9yICdjb21tZW50cyciLAogICAgICAgICJkZXRhaWxzIjogewogICAgICAgICAgICAicG9zdF9pZCI6Im11c3QgYmUgbnVtZXJpYyIKICAgICAgICB9CiAgICB9CgpZb3UgY2FuIHBhcnNlIHRoaXMgb3V0cHV0IHRvIG1ha2UgZm9ybSBmaWVsZHMgc2hvdyB1cCB3aXRoIGEgcmVkIGJvcmRlciBhbmQgdGhlaXIgYXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZS4KCiMjIyBUeXBlIHZhbGlkYXRpb25zCgpJZiB5b3UgZW5hYmxlIHRoZSAndmFsaWRhdGlvbicgbWlkZGxld2FyZSwgdGhlbiB5b3UgKGF1dG9tYXRpY2FsbHkpIGFsc28gZW5hYmxlIHR5cGUgdmFsaWRhdGlvbi4gClRoaXMgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBlcnJvciBtZXNzYWdlczoKCnwgZXJyb3IgbWVzc2FnZSAgICAgICB8IHJlYXNvbiAgICAgICAgICAgICAgICAgICAgICB8IGFwcGxpZXMgdG8gdHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBjYW5ub3QgYmUgbnVsbCAgICAgIHwgdW5leHBlY3RlZCBudWxsIHZhbHVlICAgICAgIHwgKGFueSBub24tbnVsbGFibGUgY29sdW1uKSAgICAgICAgICAgICAgICAgICB8CnwgaWxsZWdhbCB3aGl0ZXNwYWNlICB8IGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSB8IGludGVnZXIgYmlnaW50IGRlY2ltYWwgZmxvYXQgZG91YmxlIGJvb2xlYW4gfAp8IGludmFsaWQgaW50ZWdlciAgICAgfCBpbGxlZ2FsIGNoYXJhY3RlcnMgICAgICAgICAgfCBpbnRlZ2VyIGJpZ2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBzdHJpbmcgdG9vIGxvbmcgICAgIHwgdG9vIG1hbnkgY2hhcmFjdGVycyAgICAgICAgIHwgdmFyY2hhciB2YXJiaW5hcnkgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgaW52YWxpZCBkZWNpbWFsICAgICB8IGlsbGVnYWwgY2hhcmFjdGVycyAgICAgICAgICB8IGRlY2ltYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGRlY2ltYWwgdG9vIGxhcmdlICAgfCB0b28gbWFueSBkaWdpdHMgYmVmb3JlIGRvdCAgfCBkZWNpbWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBkZWNpbWFsIHRvbyBwcmVjaXNlIHwgdG9vIG1hbnkgZGlnaXRzIGFmdGVyIGRvdCAgIHwgZGVjaW1hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgaW52YWxpZCBmbG9hdCAgICAgICB8IGlsbGVnYWwgY2hhcmFjdGVycyAgICAgICAgICB8IGZsb2F0IGRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGludmFsaWQgYm9vbGVhbiAgICAgfCB1c2UgMSwgMCwgdHJ1ZSBvciBmYWxzZSAgICAgfCBib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBpbnZhbGlkIGRhdGUgICAgICAgIHwgdXNlIHl5eXktbW0tZGQgICAgICAgICAgICAgIHwgZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgaW52YWxpZCB0aW1lICAgICAgICB8IHVzZSBoaDptbTpzcyAgICAgICAgICAgICAgICB8IHRpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGludmFsaWQgdGltZXN0YW1wICAgfCB1c2UgeXl5eS1tbS1kZCBoaDptbTpzcyAgICAgfCB0aW1lc3RhbXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBpbnZhbGlkIGJhc2U2NCAgICAgIHwgaWxsZWdhbCBjaGFyYWN0ZXJzICAgICAgICAgIHwgdmFyYmluYXJ5LCBibG9iICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgpZb3UgbWF5IHVzZSB0aGUgY29uZmlnIHNldHRpbmdzICJgdmFsaWRhdGlvbi50eXBlc2AiIGFuZCAiYHZhbGlkYXRpb24udGFibGVzYCInIHRvIGRlZmluZSBmb3Igd2hpY2ggdHlwZXMgYW5kCmluIHdoaWNoIHRhYmxlcyB5b3Ugd2FudCB0byBhcHBseSB0eXBlIHZhbGlkYXRpb24gKGRlZmF1bHRzIHRvICdhbGwnKS4gRXhhbXBsZToKCiAgICAndmFsaWRhdGlvbi50eXBlcycgPT4gJ2RhdGUsdGltZXN0YW1wJywKICAgICd2YWxpZGF0aW9uLnRhYmxlcycgPT4gJ3Bvc3RzLGNvbW1lbnRzJywKCkhlcmUgd2UgZW5hYmxlIHRoZSB0eXBlIHZhbGlkYXRpb24gZm9yIGRhdGUgYW5kIHRpbWVzdGFtcCBmaWVsZHMgaW4gdGhlIHBvc3RzIGFuZCBjb21tZW50cyB0YWJsZXMuCgpOQjogVHlwZXMgdGhhdCBhcmUgZW5hYmxlZCB3aWxsIGJlIGNoZWNrZWQgZm9yIG51bGwgdmFsdWVzIHdoZW4gdGhlIGNvbHVtbiBpcyBub24tbnVsbGFibGUuCgojIyMgTXVsdGktdGVuYW5jeSBzdXBwb3J0CgpUd28gZm9ybXMgb2YgbXVsdGktdGVuYW5jeSBhcmUgc3VwcG9ydGVkOgoKIC0gU2luZ2xlIGRhdGFiYXNlLCB3aGVyZSBldmVyeSB0YWJsZSBoYXMgYSB0ZW5hbnQgY29sdW1uICh1c2luZyB0aGUgIm11bHRpVGVuYW5jeSIgbWlkZGxld2FyZSkuCiAtIE11bHRpIGRhdGFiYXNlLCB3aGVyZSBldmVyeSB0ZW5hbnQgaGFzIGl0J3Mgb3duIGRhdGFiYXNlICh1c2luZyB0aGUgInJlY29ubmVjdCIgbWlkZGxld2FyZSkuCgpCZWxvdyBpcyBhbiBleHBsYW5hdGlvbiBvZiB0aGUgY29ycmVzcG9uZGluZyBtaWRkbGV3YXJlcy4KCiMjIyMgTXVsdGktdGVuYW5jeSBtaWRkbGV3YXJlCgpZb3UgbWF5IHVzZSB0aGUgIm11bHRpVGVuYW5jeSIgbWlkZGxld2FyZSB3aGVuIHlvdSBoYXZlIGEgc2luZ2xlIG11bHRpLXRlbmFudCBkYXRhYmFzZS4gCklmIHlvdXIgdGVuYW50cyBhcmUgaWRlbnRpZmllZCBieSB0aGUgImN1c3RvbWVyX2lkIiBjb2x1bW4sIHRoZW4geW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBoYW5kbGVyOgoKICAgICdtdWx0aVRlbmFuY3kuaGFuZGxlcicgPT4gZnVuY3Rpb24gKCRvcGVyYXRpb24sICR0YWJsZU5hbWUpIHsKICAgICAgICByZXR1cm4gWydjdXN0b21lcl9pZCcgPT4gMTJdOwogICAgfSwKClRoaXMgY29uc3RydWN0IGFkZHMgYSBmaWx0ZXIgcmVxdWlyaW5nICJjdXN0b21lcl9pZCIgdG8gYmUgIjEyIiB0byBldmVyeSBvcGVyYXRpb24gKGV4Y2VwdCBmb3IgImNyZWF0ZSIpLgpJdCBhbHNvIHNldHMgdGhlIGNvbHVtbiAiY3VzdG9tZXJfaWQiIG9uICJjcmVhdGUiIHRvICIxMiIgYW5kIHJlbW92ZXMgdGhlIGNvbHVtbiBmcm9tIGFueSBvdGhlciB3cml0ZSBvcGVyYXRpb24uCgpOQjogWW91IG1heSB3YW50IHRvIHJldHJpZXZlIHRoZSBjdXN0b21lciBpZCBmcm9tIHRoZSBzZXNzaW9uICh0aGUgIiRfU0VTU0lPTiIgdmFyaWFibGUpLgoKIyMjIyBSZWNvbm5lY3QgbWlkZGxld2FyZQoKWW91IG1heSB1c2UgdGhlICJyZWNvbm5lY3QiIG1pZGRsZXdhcmUgd2hlbiB5b3UgaGF2ZSBhIHNlcGFyYXRlIGRhdGFiYXNlIGZvciBlYWNoIHRlbmFudC4KSWYgdGhlIHRlbmFudCBoYXMgaXQncyBvd24gZGF0YWJhc2UgbmFtZWQgImN1c3RvbWVyXzEyIiwgdGhlbiB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGhhbmRsZXI6CgogICAgJ3JlY29ubmVjdC5kYXRhYmFzZUhhbmRsZXInID0+IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gJ2N1c3RvbWVyXzEyJzsKICAgIH0sCgpUaGlzIHdpbGwgbWFrZSB0aGUgQVBJIHJlY29ubmVjdCB0byB0aGUgZGF0YWJhc2Ugc3BlY2lmeWluZyAiY3VzdG9tZXJfMTIiIGFzIHRoZSBkYXRhYmFzZSBuYW1lLiBJZiB5b3UgZG9uJ3Qgd2FudAp0byB1c2UgdGhlIHNhbWUgY3JlZGVudGlhbHMsIHRoZW4geW91IHNob3VsZCBhbHNvIGltcGxlbWVudCB0aGUgInVzZXJuYW1lSGFuZGxlciIgYW5kICJwYXNzd29yZEhhbmRsZXIiLgoKTkI6IFlvdSBtYXkgd2FudCB0byByZXRyaWV2ZSB0aGUgZGF0YWJhc2UgbmFtZSBmcm9tIHRoZSBzZXNzaW9uICh0aGUgIiRfU0VTU0lPTiIgdmFyaWFibGUpLgoKIyMjIFByZXZlbnQgZGF0YWJhc2Ugc2NyYXBpbmcKCllvdSBtYXkgdXNlIHRoZSAiam9pbkxpbWl0cyIgYW5kICJwYWdlTGltaXRzIiBtaWRkbGV3YXJlIHRvIHByZXZlbnQgZGF0YWJhc2Ugc2NyYXBpbmcuClRoZSAiam9pbkxpbWl0cyIgbWlkZGxld2FyZSBsaW1pdHMgdGhlIHRhYmxlIGRlcHRoLCBudW1iZXIgb2YgdGFibGVzIGFuZCBudW1iZXIgb2YgcmVjb3JkcyByZXR1cm5lZCBpbiBhIGpvaW4gb3BlcmF0aW9uLiAKSWYgeW91IHdhbnQgdG8gYWxsb3cgNSBkaXJlY3QgZGlyZWN0IGpvaW5zIHdpdGggYSBtYXhpbXVtIG9mIDI1IHJlY29yZHMgZWFjaCwgeW91IGNhbiBzcGVjaWZ5OgoKICAgICdqb2luTGltaXRzLmRlcHRoJyA9PiAxLAogICAgJ2pvaW5MaW1pdHMudGFibGVzJyA9PiA1LAogICAgJ2pvaW5MaW1pdHMucmVjb3JkcycgPT4gMjUsCgpUaGUgInBhZ2VMaW1pdHMiIG1pZGRsZXdhcmUgbGltaXRzIHRoZSBwYWdlIG51bWJlciBhbmQgdGhlIG51bWJlciByZWNvcmRzIHJldHVybmVkIGZyb20gYSBsaXN0IG9wZXJhdGlvbi4gCklmIHlvdSB3YW50IHRvIGFsbG93IG5vIG1vcmUgdGhhbiAxMCBwYWdlcyB3aXRoIGEgbWF4aW11bSBvZiAyNSByZWNvcmRzIGVhY2gsIHlvdSBjYW4gc3BlY2lmeToKCiAgICAncGFnZUxpbWl0cy5wYWdlcycgPT4gMTAsCiAgICAncGFnZUxpbWl0cy5yZWNvcmRzJyA9PiAyNSwKCk5COiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcmVjb3JkcyBpcyBhbHNvIGFwcGxpZWQgd2hlbiB0aGVyZSBpcyBubyBwYWdlIG51bWJlciBzcGVjaWZpZWQgaW4gdGhlIHJlcXVlc3QuCgojIyMgU2VhcmNoIGFsbCB0ZXh0IGZpZWxkcwoKWW91IG1heSB1c2UgdGhlICJ0ZXh0U2VhcmNoIiBtaWRkbGV3YXJlIHRvIHNpbXBsaWZ5ICh3aWxkY2FyZCkgdGV4dCBzZWFyY2hlcyB3aGVuIGxpc3RpbmcgcmVjb3Jkcy4gCkl0IGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhICJzZWFyY2giIHBhcmFtZXRlciB1c2luZzoKCiAgICBHRVQgL3JlY29yZHMvcG9zdHM/c2VhcmNoPUhlbGxvCgpJdCB3aWxsIHJldHVybiBhbGwgcmVjb3JkcyBmcm9tICJwb3N0cyIgdGhhdCBjb250YWluICJIZWxsbyIgaW4gb25lIG9mIHRoZWlyIHRleHQgKHR5cGVkKSBmaWVsZHM6CgogICAgewogICAgICAgICJyZWNvcmRzIjpbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJpZCI6IDEsCiAgICAgICAgICAgICAgICAidGl0bGUiOiAiSGVsbG8gd29ybGQhIiwKICAgICAgICAgICAgICAgICJjb250ZW50IjogIldlbGNvbWUgdG8gdGhlIGZpcnN0IHBvc3QuIiwKICAgICAgICAgICAgICAgICJjcmVhdGVkIjogIjIwMTgtMDMtMDVUMjA6MTI6NTZaIgogICAgICAgICAgICB9CiAgICAgICAgXQogICAgfQoKVGhlIGV4YW1wbGUgc2VhcmNoZXMgdGhlIGZpZWxkcyAidGl0bGUiIG9yICJjb250ZW50IiBmb3IgdGhlIHN1YnN0cmluZyAiSGVsbG8iLgoKIyMjIEN1c3RvbWl6YXRpb24gaGFuZGxlcnMKCllvdSBtYXkgdXNlIHRoZSAiY3VzdG9taXphdGlvbiIgbWlkZGxld2FyZSB0byBtb2RpZnkgcmVxdWVzdCBhbmQgcmVzcG9uc2UgYW5kIGltcGxlbWVudCBhbnkgb3RoZXIgZnVuY3Rpb25hbGl0eS4KCiAgICAnY3VzdG9taXphdGlvbi5iZWZvcmVIYW5kbGVyJyA9PiBmdW5jdGlvbiAoJG9wZXJhdGlvbiwgJHRhYmxlTmFtZSwgJHJlcXVlc3QsICRlbnZpcm9ubWVudCkgewogICAgICAgICRlbnZpcm9ubWVudC0+c3RhcnQgPSBtaWNyb3RpbWUodHJ1ZSk7CiAgICB9LAogICAgJ2N1c3RvbWl6YXRpb24uYWZ0ZXJIYW5kbGVyJyA9PiBmdW5jdGlvbiAoJG9wZXJhdGlvbiwgJHRhYmxlTmFtZSwgJHJlc3BvbnNlLCAkZW52aXJvbm1lbnQpIHsKICAgICAgICByZXR1cm4gJHJlc3BvbnNlLT53aXRoSGVhZGVyKCdYLVRpbWUtVGFrZW4nLCBtaWNyb3RpbWUodHJ1ZSkgLSAkZW52aXJvbm1lbnQtPnN0YXJ0KTsKICAgIH0sCgpUaGUgYWJvdmUgZXhhbXBsZSB3aWxsIGFkZCBhIGhlYWRlciAiWC1UaW1lLVRha2VuIiB3aXRoIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0aGUgQVBJIGNhbGwgaGFzIHRha2VuLgoKIyMjIEpTT04gZW5jb2Rpbmcgb3B0aW9ucwoKWW91IGNhbiBjaGFuZ2UgdGhlIHdheSB0aGUgSlNPTiBpcyBlbmNvZGVkIGJ5IHNldHRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyICJqc29uT3B0aW9ucyIuCgogICAgJ2pzb25PcHRpb25zJyA9PiBKU09OX1BSRVRUWV9QUklOVCB8IEpTT05fVU5FU0NBUEVEX1VOSUNPREUgfCBKU09OX1VORVNDQVBFRF9TTEFTSEVTLAoKVGhlIGFib3ZlIGV4YW1wbGUgd2lsbCBzZXQgSlNPTiBvcHRpb25zIHRvIDEyOCsyNTYrNjQgPSA0NDgsIGFzIHBlciB0aGUgbGlzdCBvZiBvcHRpb25zIGJlbG93OgoKICAgIEpTT05fSEVYX1RBRyAoMSkKICAgICAgICBBbGwgPCBhbmQgPiBhcmUgY29udmVydGVkIHRvIFx1MDAzQyBhbmQgXHUwMDNFLiAKICAgIEpTT05fSEVYX0FNUCAoMikKICAgICAgICBBbGwgJiBhcmUgY29udmVydGVkIHRvIFx1MDAyNi4gCiAgICBKU09OX0hFWF9BUE9TICg0KQogICAgICAgIEFsbCAnIGFyZSBjb252ZXJ0ZWQgdG8gXHUwMDI3LiAKICAgIEpTT05fSEVYX1FVT1QgKDgpCiAgICAgICAgQWxsICIgYXJlIGNvbnZlcnRlZCB0byBcdTAwMjIuIAogICAgSlNPTl9GT1JDRV9PQkpFQ1QgKDE2KQogICAgICAgIE91dHB1dHMgYW4gb2JqZWN0IHJhdGhlciB0aGFuIGFuIGFycmF5IHdoZW4gYSBub24tYXNzb2NpYXRpdmUgYXJyYXkgaXMgdXNlZC4gCiAgICAgICAgRXNwZWNpYWxseSB1c2VmdWwgd2hlbiB0aGUgcmVjaXBpZW50IG9mIHRoZSBvdXRwdXQgaXMgZXhwZWN0aW5nIGFuIG9iamVjdCBhbmQgCiAgICAgICAgdGhlIGFycmF5IGlzIGVtcHR5LiAKICAgIEpTT05fTlVNRVJJQ19DSEVDSyAoMzIpCiAgICAgICAgRW5jb2RlcyBudW1lcmljIHN0cmluZ3MgYXMgbnVtYmVycy4gCiAgICBKU09OX1VORVNDQVBFRF9TTEFTSEVTICg2NCkKICAgICAgICBEb24ndCBlc2NhcGUgLy4gCiAgICBKU09OX1BSRVRUWV9QUklOVCAoMTI4KQogICAgICAgIFVzZSB3aGl0ZXNwYWNlIGluIHJldHVybmVkIGRhdGEgdG8gZm9ybWF0IGl0LiAKICAgIEpTT05fVU5FU0NBUEVEX1VOSUNPREUgKDI1NikKICAgICAgICBFbmNvZGUgbXVsdGlieXRlIFVuaWNvZGUgY2hhcmFjdGVycyBsaXRlcmFsbHkgKGRlZmF1bHQgaXMgdG8gZXNjYXBlIGFzIFx1WFhYWCkuIAogICAgSlNPTl9QQVJUSUFMX09VVFBVVF9PTl9FUlJPUiAoNTEyKQogICAgICAgIFN1YnN0aXR1dGUgc29tZSB1bmVuY29kYWJsZSB2YWx1ZXMgaW5zdGVhZCBvZiBmYWlsaW5nLiAKICAgIEpTT05fUFJFU0VSVkVfWkVST19GUkFDVElPTiAoMTAyNCkKICAgICAgICBFbnN1cmVzIHRoYXQgZmxvYXQgdmFsdWVzIGFyZSBhbHdheXMgZW5jb2RlZCBhcyBhIGZsb2F0IHZhbHVlLiAKICAgIEpTT05fVU5FU0NBUEVEX0xJTkVfVEVSTUlOQVRPUlMgKDIwNDgpCiAgICAgICAgVGhlIGxpbmUgdGVybWluYXRvcnMgYXJlIGtlcHQgdW5lc2NhcGVkIHdoZW4gSlNPTl9VTkVTQ0FQRURfVU5JQ09ERSBpcyBzdXBwbGllZC4gCiAgICAgICAgSXQgdXNlcyB0aGUgc2FtZSBiZWhhdmlvdXIgYXMgaXQgd2FzIGJlZm9yZSBQSFAgNy4xIHdpdGhvdXQgdGhpcyBjb25zdGFudC4gCiAgICAgICAgQXZhaWxhYmxlIGFzIG9mIFBIUCA3LjEuMC4gCgpTb3VyY2U6IFtQSFAncyBKU09OIGNvbnN0YW50cyBkb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5waHAubmV0L21hbnVhbC9lbi9qc29uLmNvbnN0YW50cy5waHApIAoKIyMjIEpTT04gbWlkZGxld2FyZQoKWW91IG1heSB1c2UgdGhlICJqc29uIiBtaWRkbGV3YXJlIHRvIHJlYWQvd3JpdGUgSlNPTiBzdHJpbmdzIGFzIEpTT04gb2JqZWN0cyBhbmQgYXJyYXlzLgoKSlNPTiBzdHJpbmdzIGFyZSBhdXRvbWF0aWNhbGx5IGRldGVjdGVkIHdoZW4gdGhlICJqc29uIiBtaWRkbGV3YXJlIGlzIGVuYWJsZWQuCgpZb3UgbWF5IGxpbWl0IHRoZSBzY2FubmluZyBvZiBieSBzcGVjaWZ5aW5nIHNwZWNpZmljIHRhYmxlIGFuZC9vciBmaWVsZCBuYW1lczogCgogICAgJ2pzb24udGFibGVzJyA9PiAncHJvZHVjdHMnLAogICAgJ2pzb24uY29sdW1ucycgPT4gJ3Byb3BlcnRpZXMnLAoKVGhpcyB3aWxsIGNoYW5nZSB0aGUgb3V0cHV0IG9mOgoKICAgIEdFVCAvcmVjb3Jkcy9wcm9kdWN0cy8xCgpXaXRob3V0ICJqc29uIiBtaWRkbGV3YXJlIHRoZSBvdXRwdXQgd2lsbCBiZToKCiAgICB7CiAgICAgICAgImlkIjogMSwKICAgICAgICAibmFtZSI6ICJDYWxjdWxhdG9yIiwKICAgICAgICAicHJpY2UiOiAiMjMuMDEiLAogICAgICAgICJwcm9wZXJ0aWVzIjogIntcImRlcHRoXCI6ZmFsc2UsXCJtb2RlbFwiOlwiVFJYLTEyMFwiLFwid2lkdGhcIjoxMDAsXCJoZWlnaHRcIjpudWxsfSIsCiAgICB9CgpXaXRoICJqc29uIiBtaWRkbGV3YXJlIHRoZSBvdXRwdXQgd2lsbCBiZToKCiAgICB7CiAgICAgICAgImlkIjogMSwKICAgICAgICAibmFtZSI6ICJDYWxjdWxhdG9yIiwKICAgICAgICAicHJpY2UiOiAiMjMuMDEiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAiZGVwdGgiOiBmYWxzZSwKICAgICAgICAgICAgIm1vZGVsIjogIlRSWC0xMjAiLAogICAgICAgICAgICAid2lkdGgiOiAxMDAsCiAgICAgICAgICAgICJoZWlnaHQiOiBudWxsCiAgICAgICAgfSwKICAgIH0KClRoaXMgYWxzbyBhcHBsaWVzIHdoZW4gY3JlYXRpbmcgb3IgbW9kaWZ5aW5nIEpTT04gc3RyaW5nIGZpZWxkcyAoYWxzbyB3aGVuIHVzaW5nIGJhdGNoIG9wZXJhdGlvbnMpLgoKTm90ZSB0aGF0IEpTT04gc3RyaW5nIGZpZWxkcyBjYW5ub3QgYmUgcGFydGlhbGx5IHVwZGF0ZWQgYW5kIHRoYXQgdGhpcyBtaWRkbGV3YXJlIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCllvdSBjYW4gZW5hYmxlIHRoZSAianNvbiIgbWlkZGxld2FyZSB1c2luZyB0aGUgIm1pZGRsZXdhcmVzIiBjb25maWd1cmF0aW9uIHNldHRpbmcuCgojIyMgWE1MIG1pZGRsZXdhcmUKCllvdSBtYXkgdXNlIHRoZSAieG1sIiBtaWRkbGV3YXJlIHRvIHRyYW5zbGF0ZSBpbnB1dCBhbmQgb3V0cHV0IGZyb20gSlNPTiB0byBYTUwuIFRoaXMgcmVxdWVzdDoKCiAgICBHRVQgL3JlY29yZHMvcG9zdHMvMQoKT3V0cHV0cyAod2hlbiAicHJldHR5IHByaW50ZWQiKToKCiAgICB7CiAgICAgICAgImlkIjogMSwKICAgICAgICAidXNlcl9pZCI6IDEsCiAgICAgICAgImNhdGVnb3J5X2lkIjogMSwKICAgICAgICAiY29udGVudCI6ICJibG9nIHN0YXJ0ZWQiCiAgICB9CgpXaGlsZSAobm90ZSB0aGUgImZvcm1hdCIgcXVlcnkgcGFyYW1ldGVyKToKCiAgICBHRVQgL3JlY29yZHMvcG9zdHMvMT9mb3JtYXQ9eG1sCgpPdXRwdXRzOgoKICAgIDxyb290PgogICAgICAgIDxpZD4xPC9pZD4KICAgICAgICA8dXNlcl9pZD4xPC91c2VyX2lkPgogICAgICAgIDxjYXRlZ29yeV9pZD4xPC9jYXRlZ29yeV9pZD4KICAgICAgICA8Y29udGVudD5ibG9nIHN0YXJ0ZWQ8L2NvbnRlbnQ+CiAgICA8L3Jvb3Q+CgpUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgbXVzdCBiZSBlbmFibGVkIHVzaW5nIHRoZSAibWlkZGxld2FyZXMiIGNvbmZpZ3VyYXRpb24gc2V0dGluZy4KCiMjIyBGaWxlIHVwbG9hZHMKCkZpbGUgdXBsb2FkcyBhcmUgc3VwcG9ydGVkIHRocm91Z2ggdGhlIFtGaWxlUmVhZGVyIEFQSV0oaHR0cHM6Ly9jYW5pdXNlLmNvbS8jZmVhdD1maWxlcmVhZGVyKSwgY2hlY2sgb3V0IHRoZSBbZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL21ldmRzY2hlZS9waHAtY3J1ZC1hcGkvYmxvYi9tYXN0ZXIvZXhhbXBsZXMvY2xpZW50cy91cGxvYWQvdmFuaWxsYS5odG1sKS4KCiMjIE9wZW5BUEkgc3BlY2lmaWNhdGlvbgoKT24gdGhlICIvb3BlbmFwaSIgZW5kLXBvaW50IHRoZSBPcGVuQVBJIDMuMCAoZm9ybWVybHkgY2FsbGVkICJTd2FnZ2VyIikgc3BlY2lmaWNhdGlvbiBpcyBzZXJ2ZWQuIApJdCBpcyBhIG1hY2hpbmUgcmVhZGFibGUgaW5zdGFudCBkb2N1bWVudGF0aW9uIG9mIHlvdXIgQVBJLiBUbyBsZWFybiBtb3JlLCBjaGVjayBvdXQgdGhlc2UgbGlua3M6CgotIFtTd2FnZ2VyIEVkaXRvcl0oaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pby8pIGNhbiBiZSB1c2VkIHRvIHZpZXcgYW5kIGRlYnVnIHRoZSBnZW5lcmF0ZWQgc3BlY2lmaWNhdGlvbi4KLSBbT3BlbkFQSSBzcGVjaWZpY2F0aW9uXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIGlzIGEgbWFudWFsIGZvciBjcmVhdGluZyBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24uCi0gW1N3YWdnZXIgUGV0c3RvcmVdKGh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby8pIGlzIGFuIGV4YW1wbGUgZG9jdW1lbnRhdGlvbiB0aGF0IGlzIGdlbmVyYXRlZCB1c2luZyBPcGVuQVBJLgoKIyMgQ2FjaGUKClRoZXJlIGFyZSA0IGNhY2hlIGVuZ2luZXMgdGhhdCBjYW4gYmUgY29uZmlndXJlZCBieSB0aGUgImNhY2hlVHlwZSIgY29uZmlnIHBhcmFtZXRlcjoKCi0gVGVtcEZpbGUgKGRlZmF1bHQpCi0gUmVkaXMKLSBNZW1jYWNoZQotIE1lbWNhY2hlZAoKWW91IGNhbiBpbnN0YWxsIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBsYXN0IHRocmVlIGVuZ2luZXMgYnkgcnVubmluZzoKCiAgICBzdWRvIGFwdCBpbnN0YWxsIHBocC1yZWRpcyByZWRpcwogICAgc3VkbyBhcHQgaW5zdGFsbCBwaHAtbWVtY2FjaGUgbWVtY2FjaGVkCiAgICBzdWRvIGFwdCBpbnN0YWxsIHBocC1tZW1jYWNoZWQgbWVtY2FjaGVkCgpUaGUgZGVmYXVsdCBlbmdpbmUgaGFzIG5vIGRlcGVuZGVuY2llcyBhbmQgd2lsbCB1c2UgdGVtcG9yYXJ5IGZpbGVzIGluIHRoZSBzeXN0ZW0gInRlbXAiIHBhdGguCgpZb3UgbWF5IHVzZSB0aGUgImNhY2hlUGF0aCIgY29uZmlnIHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoZSBmaWxlIHN5c3RlbSBwYXRoIGZvciB0aGUgdGVtcG9yYXJ5IGZpbGVzIG9yCmluIGNhc2UgdGhhdCB5b3UgdXNlIGEgbm9uLWRlZmF1bHQgImNhY2hlVHlwZSIgdGhlIGhvc3RuYW1lIChvcHRpb25hbGx5IHdpdGggcG9ydCkgb2YgdGhlIGNhY2hlIHNlcnZlci4KCiMjIFR5cGVzCgpUaGVzZSBhcmUgdGhlIHN1cHBvcnRlZCB0eXBlcyB3aXRoIHRoZWlyIGxlbmd0aCwgY2F0ZWdvcnksIEpTT04gdHlwZSBhbmQgZm9ybWF0OgoKfCB0eXBlICAgICAgIHwgbGVuZ3RoIHwgY2F0ZWdvcnkgIHwgSlNPTiB0eXBlIHwgZm9ybWF0ICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLSB8IC0tLS0tLSB8IC0tLS0tLS0tLSB8IC0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IHZhcmNoYXIgICAgfCAyNTUgICAgfCBjaGFyYWN0ZXIgfCBzdHJpbmcgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKfCBjbG9iICAgICAgIHwgICAgICAgIHwgY2hhcmFjdGVyIHwgc3RyaW5nICAgIHwgICAgICAgICAgICAgICAgICAgICB8CnwgYm9vbGVhbiAgICB8ICAgICAgICB8IGJvb2xlYW4gICB8IGJvb2xlYW4gICB8ICAgICAgICAgICAgICAgICAgICAgfAp8IGludGVnZXIgICAgfCAgICAgICAgfCBpbnRlZ2VyICAgfCBudW1iZXIgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKfCBiaWdpbnQgICAgIHwgICAgICAgIHwgaW50ZWdlciAgIHwgbnVtYmVyICAgIHwgICAgICAgICAgICAgICAgICAgICB8CnwgZmxvYXQgICAgICB8ICAgICAgICB8IGZsb2F0ICAgICB8IG51bWJlciAgICB8ICAgICAgICAgICAgICAgICAgICAgfAp8IGRvdWJsZSAgICAgfCAgICAgICAgfCBmbG9hdCAgICAgfCBudW1iZXIgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKfCBkZWNpbWFsICAgIHwgMTksNCAgIHwgZGVjaW1hbCAgIHwgc3RyaW5nICAgIHwgICAgICAgICAgICAgICAgICAgICB8CnwgZGF0ZSAgICAgICB8ICAgICAgICB8IGRhdGUvdGltZSB8IHN0cmluZyAgICB8IHl5eXktbW0tZGQgICAgICAgICAgfCAKfCB0aW1lICAgICAgIHwgICAgICAgIHwgZGF0ZS90aW1lIHwgc3RyaW5nICAgIHwgaGg6bW06c3MgICAgICAgICAgICB8CnwgdGltZXN0YW1wICB8ICAgICAgICB8IGRhdGUvdGltZSB8IHN0cmluZyAgICB8IHl5eXktbW0tZGQgaGg6bW06c3MgfAp8IHZhcmJpbmFyeSAgfCAyNTUgICAgfCBiaW5hcnkgICAgfCBzdHJpbmcgICAgfCBiYXNlNjQgZW5jb2RlZCAgICAgIHwKfCBibG9iICAgICAgIHwgICAgICAgIHwgYmluYXJ5ICAgIHwgc3RyaW5nICAgIHwgYmFzZTY0IGVuY29kZWQgICAgICB8CnwgZ2VvbWV0cnkgICB8ICAgICAgICB8IG90aGVyICAgICB8IHN0cmluZyAgICB8IHdlbGwta25vd24gdGV4dCAgICAgfAoKTm90ZSB0aGF0IGdlb21ldHJ5IGlzIGEgbm9uLWpkYmMgdHlwZSBhbmQgdGh1cyBoYXMgbGltaXRlZCBzdXBwb3J0LgoKIyMgRGF0YSB0eXBlcyBpbiBKYXZhU2NyaXB0CgpKYXZhc2NyaXB0IGFuZCBKYXZhc2NyaXB0IG9iamVjdCBub3RhdGlvbiAoSlNPTikgYXJlIG5vdCB2ZXJ5IHdlbGwgc3VpdGVkIGZvciByZWFkaW5nIGRhdGFiYXNlIHJlY29yZHMuIERlY2ltYWwsIGRhdGUvdGltZSwgYmluYXJ5IGFuZCBnZW9tZXRyeSB0eXBlcyBtdXN0IGJlIHJlcHJlc2VudGVkIGFzIHN0cmluZ3MgaW4gSlNPTiAoYmluYXJ5IGlzIGJhc2U2NCBlbmNvZGVkLCBnZW9tZXRyaWVzIGFyZSBpbiBXS1QgZm9ybWF0KS4gQmVsb3cgYXJlIHR3byBtb3JlIHNlcmlvdXMgaXNzdWVzIGRlc2NyaWJlZC4KCiMjIyA2NCBiaXQgaW50ZWdlcnMKCkphdmFTY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCA2NCBiaXQgaW50ZWdlcnMuIEFsbCBudW1iZXJzIGFyZSBzdG9yZWQgYXMgNjQgYml0IGZsb2F0aW5nIHBvaW50IHZhbHVlcy4gVGhlIG1hbnRpc3NhIG9mIGEgNjQgYml0IGZsb2F0aW5nIHBvaW50IG51bWJlciBpcyBvbmx5IDUzIGJpdCBhbmQgdGhhdCBpcyB3aHkgYWxsIGludGVnZXIgbnVtYmVycyBiaWdnZXIgdGhhbiA1MyBiaXQgbWF5IGNhdXNlIHByb2JsZW1zIGluIEphdmFTY3JpcHQuCgojIyMgSW5mIGFuZCBOYU4gZmxvYXRzCgpUaGUgdmFsaWQgZmxvYXRpbmcgcG9pbnQgdmFsdWVzICdJbmZpbml0ZScgKGNhbGN1bGF0ZWQgd2l0aCAnMS8wJykgYW5kICdOb3QgYSBOdW1iZXInIChjYWxjdWxhdGVkIHdpdGggJzAvMCcpIGNhbm5vdCBiZSBleHByZXNzZWQgaW4gSlNPTiwgYXMgdGhleSBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgW0pTT04gc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly93d3cuanNvbi5vcmcpLiBXaGVuIHRoZXNlIHZhbHVlcyBhcmUgc3RvcmVkIGluIGEgZGF0YWJhc2UgdGhlbiB5b3UgY2Fubm90IHJlYWQgdGhlbSBhcyB0aGlzIHNjcmlwdCBvdXRwdXRzIGRhdGFiYXNlIHJlY29yZHMgYXMgSlNPTi4KCiMjIEVycm9ycwoKVGhlIGZvbGxvd2luZyBlcnJvcnMgbWF5IGJlIHJlcG9ydGVkOgoKfCBFcnJvciB8IEhUVFAgcmVzcG9uc2UgY29kZSAgICAgICAgfCBNZXNzYWdlCnwgLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0KfCAxMDAwICB8IDQwNCBOb3QgZm91bmQgICAgICAgICAgICAgfCBSb3V0ZSBub3QgZm91bmQgCnwgMTAwMSAgfCA0MDQgTm90IGZvdW5kICAgICAgICAgICAgIHwgVGFibGUgbm90IGZvdW5kIAp8IDEwMDIgIHwgNDIyIFVucHJvY2Vzc2FibGUgZW50aXR5ICB8IEFyZ3VtZW50IGNvdW50IG1pc21hdGNoIAp8IDEwMDMgIHwgNDA0IE5vdCBmb3VuZCAgICAgICAgICAgICB8IFJlY29yZCBub3QgZm91bmQgCnwgMTAwNCAgfCA0MDMgRm9yYmlkZGVuICAgICAgICAgICAgIHwgT3JpZ2luIGlzIGZvcmJpZGRlbiAKfCAxMDA1ICB8IDQwNCBOb3QgZm91bmQgICAgICAgICAgICAgfCBDb2x1bW4gbm90IGZvdW5kIAp8IDEwMDYgIHwgNDA5IENvbmZsaWN0ICAgICAgICAgICAgICB8IFRhYmxlIGFscmVhZHkgZXhpc3RzIAp8IDEwMDcgIHwgNDA5IENvbmZsaWN0ICAgICAgICAgICAgICB8IENvbHVtbiBhbHJlYWR5IGV4aXN0cyAKfCAxMDA4ICB8IDQyMiBVbnByb2Nlc3NhYmxlIGVudGl0eSAgfCBDYW5ub3QgcmVhZCBIVFRQIG1lc3NhZ2UgCnwgMTAwOSAgfCA0MDkgQ29uZmxpY3QgICAgICAgICAgICAgIHwgRHVwbGljYXRlIGtleSBleGNlcHRpb24gCnwgMTAxMCAgfCA0MDkgQ29uZmxpY3QgICAgICAgICAgICAgIHwgRGF0YSBpbnRlZ3JpdHkgdmlvbGF0aW9uIAp8IDEwMTEgIHwgNDAxIFVuYXV0aG9yaXplZCAgICAgICAgICB8IEF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkIAp8IDEwMTIgIHwgNDAzIEZvcmJpZGRlbiAgICAgICAgICAgICB8IEF1dGhlbnRpY2F0aW9uIGZhaWxlZCAKfCAxMDEzICB8IDQyMiBVbnByb2Nlc3NhYmxlIGVudGl0eSAgfCBJbnB1dCB2YWxpZGF0aW9uIGZhaWxlZCAKfCAxMDE0ICB8IDQwMyBGb3JiaWRkZW4gICAgICAgICAgICAgfCBPcGVyYXRpb24gZm9yYmlkZGVuIAp8IDEwMTUgIHwgNDA1IE1ldGhvZCBub3QgYWxsb3dlZCAgICB8IE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIAp8IDEwMTYgIHwgNDAzIEZvcmJpZGRlbiAgICAgICAgICAgICB8IFRlbXBvcmFyeSBvciBwZXJtYW5lbnRseSBibG9ja2VkIAp8IDEwMTcgIHwgNDAzIEZvcmJpZGRlbiAgICAgICAgICAgICB8IEJhZCBvciBtaXNzaW5nIFhTUkYgdG9rZW4gCnwgMTAxOCAgfCA0MDMgRm9yYmlkZGVuICAgICAgICAgICAgIHwgT25seSBBSkFYIHJlcXVlc3RzIGFsbG93ZWQgCnwgMTAxOSAgfCA0MDMgRm9yYmlkZGVuICAgICAgICAgICAgIHwgUGFnaW5hdGlvbiBGb3JiaWRkZW4gCnwgMTAyMCAgfCA0MDkgQ29uZmxpY3QgICAgICAgICAgICAgIHwgVXNlciBhbHJlYWR5IGV4aXN0cwp8IDEwMjEgIHwgNDIyIFVucHJvY2Vzc2FibGUgZW50aXR5ICB8IFBhc3N3b3JkIHRvbyBzaG9ydAp8IDEwMjIgIHwgNDIyIFVucHJvY2Vzc2FibGUgZW50aXR5ICB8IFVzZXJuYW1lIGlzIGVtcHR5CnwgMTAyMyAgfCA0MDQgTm90IGZvdW5kICAgICAgICAgICAgIHwgUHJpbWFyeSBrZXkgbm90IGZvdW5kCnwgOTk5OSAgfCA1MDAgSW50ZXJuYWwgc2VydmVyIGVycm9yIHwgVW5rbm93biBlcnJvciAKClRoZSBmb2xsb3dpbmcgSlNPTiBzdHJ1Y3R1cmUgaXMgdXNlZDoKCiAgICB7CiAgICAgICAgImNvZGUiOjEwMDIsCiAgICAgICAgIm1lc3NhZ2UiOiJBcmd1bWVudCBjb3VudCBtaXNtYXRjaCBpbiAnMSciCiAgICB9CgpOQjogQW55IG5vbi1lcnJvciByZXNwb25zZSB3aWxsIGhhdmUgc3RhdHVzOiAyMDAgT0sKCiMjIFN0YXR1cwoKVG8gY29ubmVjdCB0byB5b3VyIG1vbml0b3JpbmcgdGhlcmUgaXMgYSAncGluZycgZW5kcG9pbnQ6CgogICAgR0VUIC9zdGF0dXMvcGluZwoKQW5kIHRoaXMgc2hvdWxkIHJldHVybiBzdGF0dXMgMjAwIGFuZCBhcyBkYXRhOgoKICAgIHsKICAgICAgICAiZGIiOiA0MiwKICAgICAgICAiY2FjaGUiOiA5CiAgICB9CgpUaGVzZSBjYW4gYmUgdXNlZCB0byBtZWFzdXJlIHRoZSB0aW1lIChpbiBtaWNyb3NlY29uZHMpIHRvIGNvbm5lY3QgYW5kIHJlYWQgZGF0YSBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgdGhlIGNhY2hlLgoKIyMgQ3VzdG9tIGNvbnRyb2xsZXIKCllvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBSRVNUIEFQSSBlbmRwb2ludHMgYnkgd3JpdGluZyB5b3VyIG93biBjdXN0b20gY29udHJvbGxlciBjbGFzcy4gClRoZSBjbGFzcyBtdXN0IHByb3ZpZGUgYSBjb25zdHJ1Y3RvciB0aGF0IGFjY2VwdHMgZml2ZSBwYXJhbWV0ZXJzLiBXaXRoIHRoZXNlIHBhcmFtZXRlcnMgeW91IGNhbiByZWdpc3Rlcgp5b3VyIG93biBlbmRwb2ludCB0byB0aGUgZXhpc3Rpbmcgcm91dGVyLiBUaGlzIGVuZHBvaW50IG1heSB1c2UgdGhlIGRhdGFiYXNlIGFuZC9vciB0aGUgcmVmbGVjdGlvbiBjbGFzcwpvZiB0aGUgZGF0YWJhc2UuCgpIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBjdXN0b20gY29udHJvbGxlciBjbGFzczoKCmBgYAp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcU2VydmVyUmVxdWVzdEludGVyZmFjZTsKdXNlIFRxZGV2XFBocENydWRBcGlcQ2FjaGVcQ2FjaGU7CnVzZSBUcWRldlxQaHBDcnVkQXBpXENvbHVtblxSZWZsZWN0aW9uU2VydmljZTsKdXNlIFRxZGV2XFBocENydWRBcGlcQ29udHJvbGxlclxSZXNwb25kZXI7CnVzZSBUcWRldlxQaHBDcnVkQXBpXERhdGFiYXNlXEdlbmVyaWNEQjsKdXNlIFRxZGV2XFBocENydWRBcGlcTWlkZGxld2FyZVxSb3V0ZXJcUm91dGVyOwoKY2xhc3MgTXlIZWxsb0NvbnRyb2xsZXIgewoKICAgIHByaXZhdGUgJHJlc3BvbmRlcjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoUm91dGVyICRyb3V0ZXIsIFJlc3BvbmRlciAkcmVzcG9uZGVyLCBHZW5lcmljREIgJGRiLCBSZWZsZWN0aW9uU2VydmljZSAkcmVmbGVjdGlvbiwgQ2FjaGUgJGNhY2hlKQogICAgewogICAgICAgICRyb3V0ZXItPnJlZ2lzdGVyKCdHRVQnLCAnL2hlbGxvJywgYXJyYXkoJHRoaXMsICdnZXRIZWxsbycpKTsKICAgICAgICAkdGhpcy0+cmVzcG9uZGVyID0gJHJlc3BvbmRlcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVsbG8oU2VydmVyUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCk6IFJlc3BvbnNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXNwb25kZXItPnN1Y2Nlc3MoWydtZXNzYWdlJyA9PiAiSGVsbG8gV29ybGQhIl0pOwogICAgfQp9CmBgYAoKQW5kIHRoZW4geW91IG1heSByZWdpc3RlciB5b3VyIGN1c3RvbSBjb250cm9sbGVyIGNsYXNzIGluIHRoZSBjb25maWcgb2JqZWN0IGxpa2UgdGhpczoKCmBgYAokY29uZmlnID0gbmV3IENvbmZpZyhbCiAgICAuLi4KICAgICdjdXN0b21Db250cm9sbGVycycgPT4gJ015SGVsbG9Db250cm9sbGVyJywKICAgIC4uLgpdKTsKYGBgCgpUaGUgYGN1c3RvbUNvbnRyb2xsZXJzYCBjb25maWcgc3VwcG9ydHMgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBjdXN0b20gY29udHJvbGxlciBjbGFzc2VzLgoKIyMgVGVzdHMKCkkgYW0gdGVzdGluZyBtYWlubHkgb24gVWJ1bnR1IGFuZCBJIGhhdmUgdGhlIGZvbGxvd2luZyB0ZXN0IHNldHVwczoKCiAgLSAoRG9ja2VyKSBEZWJpYW4gMTAgd2l0aCBQSFAgNy4zLCBNYXJpYURCIDEwLjMsIFBvc3RncmVTUUwgMTEuNCAoUG9zdEdJUyAyLjUpIGFuZCBTUUxpdGUgMy4yNwogIC0gKERvY2tlcikgRGViaWFuIDExIHdpdGggUEhQIDcuNCwgTWFyaWFEQiAxMC41LCBQb3N0Z3JlU1FMIDEzLjQgKFBvc3RHSVMgMy4xKSBhbmQgU1FMaXRlIDMuMzQKICAtIChEb2NrZXIpIERlYmlhbiAxMiB3aXRoIFBIUCA4LjIsIE1hcmlhREIgMTAuMTEsIFBvc3RncmVTUUwgMTUuMyAoUG9zdEdJUyAzLjMpIGFuZCBTUUxpdGUgMy40MAogIC0gKERvY2tlcikgUm9ja3lMaW51eCA4IHdpdGggUEhQIDcuMiwgTWFyaWFEQiAxMC4zIGFuZCBTUUxpdGUgMy4yNgogIC0gKERvY2tlcikgUm9ja3lMaW51eCA5IHdpdGggUEhQIDguMCwgTWFyaWFEQiAxMC41IGFuZCBTUUxpdGUgMy4zNAogIC0gKERvY2tlcikgVWJ1bnR1IDE4LjA0IHdpdGggUEhQIDcuMiwgTXlTUUwgNS43LCBQb3N0Z3JlU1FMIDEwLjQgKFBvc3RHSVMgMi40KSBhbmQgU1FMaXRlIDMuMjIKICAtIChEb2NrZXIpIFVidW50dSAyMC4wNCB3aXRoIFBIUCA3LjQsIE15U1FMIDguMCwgUG9zdGdyZVNRTCAxMi4xNSAoUG9zdEdJUyAzLjApIGFuZCBTUUxpdGUgMy4zMSBhbmQgU1FMIFNlcnZlciAyMDE5CiAgLSAoRG9ja2VyKSBVYnVudHUgMjIuMDQgd2l0aCBQSFAgOC4xLCBNeVNRTCA4LjAsIFBvc3RncmVTUUwgMTQuMiAoUG9zdEdJUyAzLjIpIGFuZCBTUUxpdGUgMy4zNyAKICAtIChEb2NrZXIpIFVidW50dSAyNC4wNCB3aXRoIFBIUCA4LjMsIE15U1FMIDguMCwgUG9zdGdyZVNRTCAxNi4yIChQb3N0R0lTIDMuNCkgYW5kIFNRTGl0ZSAzLjQ1CgpUaGlzIGNvdmVycyBub3QgYWxsIGVudmlyb25tZW50cyAoeWV0KSwgc28gcGxlYXNlIG5vdGlmeSBtZSBvZiBmYWlsaW5nIHRlc3RzIGFuZCByZXBvcnQgeW91ciBlbnZpcm9ubWVudC4gCkkgd2lsbCB0cnkgdG8gY292ZXIgbW9zdCByZWxldmFudCBzZXR1cHMgaW4gdGhlICJkb2NrZXIiIGZvbGRlciBvZiB0aGUgcHJvamVjdC4KCiMjIyBSdW5uaW5nCgpUbyBydW4gdGhlIGZ1bmN0aW9uYWwgdGVzdHMgbG9jYWxseSB5b3UgbWF5IHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgoKICAgIHBocCBidWlsZC5waHAKICAgIHBocCB0ZXN0LnBocAoKVGhpcyBydW5zIHRoZSBmdW5jdGlvbmFsIHRlc3RzIGZyb20gdGhlICJ0ZXN0cyIgZGlyZWN0b3J5LiBJdCB1c2VzIHRoZSBkYXRhYmFzZSBkdW1wcyAoZml4dHVyZXMpIGFuZApkYXRhYmFzZSBjb25maWd1cmF0aW9uIChjb25maWcpIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgc3ViZGlyZWN0b3JpZXMuCgojIyBQcmV0dHkgVVJMCgpZb3UgbWF5ICJyZXdyaXRlIiB0aGUgVVJMIHRvIHJlbW92ZSB0aGUgImFwaS5waHAiIGZyb20gdGhlIFVSTC4KCiMjIyBBcGFjaGUgY29uZmlnIGV4YW1wbGUKCkVuYWJsZSBtb2RfcmV3cml0ZSBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgdG8geW91ciAiLmh0YWNjZXNzIiBmaWxlOgoKYGBgClJld3JpdGVFbmdpbmUgT24KUmV3cml0ZUNvbmQgJXtSRVFVRVNUX0ZJTEVOQU1FfSAhLWQKUmV3cml0ZUNvbmQgJXtSRVFVRVNUX0ZJTEVOQU1FfSAhLWYKUmV3cml0ZVJ1bGUgXiguKikkIGFwaS5waHAvJDEgW0wsUVNBXQpgYGAKClRoZSAiLmh0YWNjZXNzIiBmaWxlIG5lZWRzIHRvIGdvIGluIHRoZSBzYW1lIGZvbGRlciBhcyAiYXBpLnBocCIuCgojIyMgTmdpbnggY29uZmlnIGV4YW1wbGUKClVzZSB0aGUgZm9sbG93aW5nIGNvbmZpZyB0byBzZXJ2ZSB0aGUgQVBJIHVuZGVyIE5naW54IGFuZCBQSFAtRlBNOgoKYGBgCnNlcnZlciB7CiAgICBsaXN0ZW4gODAgZGVmYXVsdF9zZXJ2ZXI7CiAgICBsaXN0ZW4gWzo6XTo4MCBkZWZhdWx0X3NlcnZlcjsKCiAgICByb290IC92YXIvd3d3L2h0bWw7CiAgICBpbmRleCBpbmRleC5waHAgaW5kZXguaHRtbCBpbmRleC5odG0gaW5kZXgubmdpbngtZGViaWFuLmh0bWw7CiAgICBzZXJ2ZXJfbmFtZSBzZXJ2ZXJfZG9tYWluX29yX0lQOwoKICAgIGxvY2F0aW9uIC8gewogICAgICAgIHRyeV9maWxlcyAkdXJpICR1cmkvIC9hcGkucGhwPyRhcmdzOyAgCiAgICB9CgogICAgbG9jYXRpb24gfiBbXi9dXC5waHAoL3wkKSB7CiAgICAgICAgZmFzdGNnaV9zcGxpdF9wYXRoX2luZm8gXiguK1wucGhwKSgvLispJDsKICAgICAgICB0cnlfZmlsZXMgJGZhc3RjZ2lfc2NyaXB0X25hbWUgPTQwNDsKICAgICAgICBzZXQgJHBhdGhfaW5mbyAkZmFzdGNnaV9wYXRoX2luZm87CiAgICAgICAgZmFzdGNnaV9wYXJhbSBQQVRIX0lORk8gJHBhdGhfaW5mbzsKICAgICAgICBmYXN0Y2dpX2luZGV4IGluZGV4LnBocDsKICAgICAgICBpbmNsdWRlIGZhc3RjZ2kuY29uZjsKICAgICAgICBmYXN0Y2dpX3Bhc3MgdW5peDovcnVuL3BocC9waHA3LjAtZnBtLnNvY2s7CiAgICB9CgogICAgbG9jYXRpb24gfiAvXC5odCB7CiAgICAgICAgZGVueSBhbGw7CiAgICB9Cn0KYGBgCgojIyMgRG9ja2VyIHRlc3RzCgpJbnN0YWxsIGRvY2tlciB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGFuZCB0aGVuIGxvZ291dCBhbmQgbG9naW4gZm9yIHRoZSBjaGFuZ2VzIHRvIHRha2UgZWZmZWN0OgoKICAgIHN1ZG8gYXB0IGluc3RhbGwgZG9ja2VyLmlvIGRvY2tlci1idWlsZHgKICAgIHN1ZG8gdXNlcm1vZCAtYUcgZG9ja2VyICR7VVNFUn0KClRvIHJ1biB0aGUgZG9ja2VyIHRlc3RzIHJ1biAiYnVpbGRfYWxsLnNoIiBhbmQgInJ1bl9hbGwuc2giIGZyb20gdGhlIGRvY2tlciBkaXJlY3RvcnkuIFRoZSBvdXRwdXQgc2hvdWxkIGJlOgoKICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgRGViaWFuIDEwIChQSFAgNy4zKQogICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBbMS80XSBTdGFydGluZyBNYXJpYURCIDEwLjMgLi4uLi4gZG9uZQogICAgWzIvNF0gU3RhcnRpbmcgUG9zdGdyZVNRTCAxMS40IC4uIGRvbmUKICAgIFszLzRdIFN0YXJ0aW5nIFNRTFNlcnZlciAyMDE3IC4uLiBza2lwcGVkCiAgICBbNC80XSBDbG9uaW5nIFBIUC1DUlVELUFQSSB2MiAuLi4gc2tpcHBlZAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBteXNxbDogMTIwIHRlc3RzIHJhbiBpbiA5MjEgbXMsIDEgc2tpcHBlZCwgMCBmYWlsZWQKICAgIHBnc3FsOiAxMjAgdGVzdHMgcmFuIGluIDEwNTggbXMsIDEgc2tpcHBlZCwgMCBmYWlsZWQKICAgIHNxbHNydjogc2tpcHBlZCwgZHJpdmVyIG5vdCBsb2FkZWQKICAgIHNxbGl0ZTogMTIwIHRlc3RzIHJhbiBpbiA3NTIgbXMsIDEzIHNraXBwZWQsIDAgZmFpbGVkCiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIERlYmlhbiAxMSAoUEhQIDcuNCkKICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgWzEvNF0gU3RhcnRpbmcgTWFyaWFEQiAxMC41IC4uLi4uIGRvbmUKICAgIFsyLzRdIFN0YXJ0aW5nIFBvc3RncmVTUUwgMTMuNCAuLiBkb25lCiAgICBbMy80XSBTdGFydGluZyBTUUxTZXJ2ZXIgMjAxNyAuLi4gc2tpcHBlZAogICAgWzQvNF0gQ2xvbmluZyBQSFAtQ1JVRC1BUEkgdjIgLi4uIHNraXBwZWQKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbXlzcWw6IDEyMCB0ZXN0cyByYW4gaW4gOTE0IG1zLCAxIHNraXBwZWQsIDAgZmFpbGVkCiAgICBwZ3NxbDogMTIwIHRlc3RzIHJhbiBpbiA5OTcgbXMsIDEgc2tpcHBlZCwgMCBmYWlsZWQKICAgIHNxbHNydjogc2tpcHBlZCwgZHJpdmVyIG5vdCBsb2FkZWQKICAgIHNxbGl0ZTogMTIwIHRlc3RzIHJhbiBpbiA3MzUgbXMsIDEzIHNraXBwZWQsIDAgZmFpbGVkCiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIERlYmlhbiAxMiAoUEhQIDguMikKICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgWzEvNF0gU3RhcnRpbmcgTWFyaWFEQiAxMC4xMSAuLi4uIGRvbmUKICAgIFsyLzRdIFN0YXJ0aW5nIFBvc3RncmVTUUwgMTUuMyAuLiBkb25lCiAgICBbMy80XSBTdGFydGluZyBTUUxTZXJ2ZXIgMjAxOSAuLi4gc2tpcHBlZAogICAgWzQvNF0gQ2xvbmluZyBQSFAtQ1JVRC1BUEkgdjIgLi4uIHNraXBwZWQKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbXlzcWw6IDEyMCB0ZXN0cyByYW4gaW4gMTAxNiBtcywgMSBza2lwcGVkLCAwIGZhaWxlZAogICAgcGdzcWw6IDEyMCB0ZXN0cyByYW4gaW4gMTA0MSBtcywgMSBza2lwcGVkLCAwIGZhaWxlZAogICAgc3Fsc3J2OiBza2lwcGVkLCBkcml2ZXIgbm90IGxvYWRlZAogICAgc3FsaXRlOiAxMjAgdGVzdHMgcmFuIGluIDczMyBtcywgMTMgc2tpcHBlZCwgMCBmYWlsZWQKICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgUm9ja3lMaW51eCA4IChQSFAgNy4yKQogICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBbMS80XSBTdGFydGluZyBNYXJpYURCIDEwLjMgLi4uLi4gZG9uZQogICAgWzIvNF0gU3RhcnRpbmcgUG9zdGdyZVNRTCAxMSAuLi4uIHNraXBwZWQKICAgIFszLzRdIFN0YXJ0aW5nIFNRTFNlcnZlciAyMDE3IC4uLiBza2lwcGVkCiAgICBbNC80XSBDbG9uaW5nIFBIUC1DUlVELUFQSSB2MiAuLi4gc2tpcHBlZAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBteXNxbDogMTIwIHRlc3RzIHJhbiBpbiA5MzUgbXMsIDEgc2tpcHBlZCwgMCBmYWlsZWQKICAgIHBnc3FsOiBza2lwcGVkLCBkcml2ZXIgbm90IGxvYWRlZAogICAgc3Fsc3J2OiBza2lwcGVkLCBkcml2ZXIgbm90IGxvYWRlZAogICAgc3FsaXRlOiAxMjAgdGVzdHMgcmFuIGluIDc0NiBtcywgMTMgc2tpcHBlZCwgMCBmYWlsZWQKICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgUm9ja3lMaW51eCA5IChQSFAgOC4wKQogICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBbMS80XSBTdGFydGluZyBNYXJpYURCIDEwLjUgLi4uLi4gZG9uZQogICAgWzIvNF0gU3RhcnRpbmcgUG9zdGdyZVNRTCAxMiAuLi4uIHNraXBwZWQKICAgIFszLzRdIFN0YXJ0aW5nIFNRTFNlcnZlciAyMDE3IC4uLiBza2lwcGVkCiAgICBbNC80XSBDbG9uaW5nIFBIUC1DUlVELUFQSSB2MiAuLi4gc2tpcHBlZAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBteXNxbDogMTIwIHRlc3RzIHJhbiBpbiA5MjggbXMsIDEgc2tpcHBlZCwgMCBmYWlsZWQKICAgIHBnc3FsOiBza2lwcGVkLCBkcml2ZXIgbm90IGxvYWRlZAogICAgc3Fsc3J2OiBza2lwcGVkLCBkcml2ZXIgbm90IGxvYWRlZAogICAgc3FsaXRlOiAxMjAgdGVzdHMgcmFuIGluIDcyOCBtcywgMTMgc2tpcHBlZCwgMCBmYWlsZWQKICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgVWJ1bnR1IDE4LjA0IChQSFAgNy4yKQogICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBbMS80XSBTdGFydGluZyBNeVNRTCA1LjcgLi4uLi4uLi4gZG9uZQogICAgWzIvNF0gU3RhcnRpbmcgUG9zdGdyZVNRTCAxMC40IC4uIGRvbmUKICAgIFszLzRdIFN0YXJ0aW5nIFNRTFNlcnZlciAyMDE3IC4uLiBza2lwcGVkCiAgICBbNC80XSBDbG9uaW5nIFBIUC1DUlVELUFQSSB2MiAuLi4gc2tpcHBlZAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBteXNxbDogMTIwIHRlc3RzIHJhbiBpbiAxMjk2IG1zLCAxIHNraXBwZWQsIDAgZmFpbGVkCiAgICBwZ3NxbDogMTIwIHRlc3RzIHJhbiBpbiAxMDU2IG1zLCAxIHNraXBwZWQsIDAgZmFpbGVkCiAgICBzcWxzcnY6IHNraXBwZWQsIGRyaXZlciBub3QgbG9hZGVkCiAgICBzcWxpdGU6IDEyMCB0ZXN0cyByYW4gaW4gNzcyIG1zLCAxMyBza2lwcGVkLCAwIGZhaWxlZAogICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBVYnVudHUgMjAuMDQgKFBIUCA3LjQpCiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIFsxLzRdIFN0YXJ0aW5nIE15U1FMIDguMCAuLi4uLi4uLiBkb25lCiAgICBbMi80XSBTdGFydGluZyBQb3N0Z3JlU1FMIDEyLjIgLi4gZG9uZQogICAgWzMvNF0gU3RhcnRpbmcgU1FMU2VydmVyIDIwMTkgLi4uIGRvbmUKICAgIFs0LzRdIENsb25pbmcgUEhQLUNSVUQtQVBJIHYyIC4uLiBza2lwcGVkCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIG15c3FsOiAxMjAgdGVzdHMgcmFuIGluIDEzNzUgbXMsIDEgc2tpcHBlZCwgMCBmYWlsZWQKICAgIHBnc3FsOiAxMjAgdGVzdHMgcmFuIGluIDg2OCBtcywgMSBza2lwcGVkLCAwIGZhaWxlZAogICAgc3Fsc3J2OiAxMjAgdGVzdHMgcmFuIGluIDU3MTMgbXMsIDEgc2tpcHBlZCwgMCBmYWlsZWQKICAgIHNxbGl0ZTogMTIwIHRlc3RzIHJhbiBpbiA3MzMgbXMsIDEzIHNraXBwZWQsIDAgZmFpbGVkCiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIFVidW50dSAyMi4wNCAoUEhQIDguMSkKICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgWzEvNF0gU3RhcnRpbmcgTXlTUUwgOC4wIC4uLi4uLi4uIGRvbmUKICAgIFsyLzRdIFN0YXJ0aW5nIFBvc3RncmVTUUwgMTQuMiAuLiBkb25lCiAgICBbMy80XSBTdGFydGluZyBTUUxTZXJ2ZXIgMjAxOSAuLi4gc2tpcHBlZAogICAgWzQvNF0gQ2xvbmluZyBQSFAtQ1JVRC1BUEkgdjIgLi4uIHNraXBwZWQKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbXlzcWw6IDEyMCB0ZXN0cyByYW4gaW4gMTM3MiBtcywgMSBza2lwcGVkLCAwIGZhaWxlZAogICAgcGdzcWw6IDEyMCB0ZXN0cyByYW4gaW4gMTA2NCBtcywgMSBza2lwcGVkLCAwIGZhaWxlZAogICAgc3Fsc3J2OiBza2lwcGVkLCBkcml2ZXIgbm90IGxvYWRlZAogICAgc3FsaXRlOiAxMjAgdGVzdHMgcmFuIGluIDcyNyBtcywgMTMgc2tpcHBlZCwgMCBmYWlsZWQKICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgVWJ1bnR1IDI0LjA0IChQSFAgOC4zKQogICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBbMS80XSBTdGFydGluZyBNeVNRTCA4LiAuLi4uLi4uLiBkb25lCiAgICBbMi80XSBTdGFydGluZyBQb3N0Z3JlU1FMIDE2LjIgLi4gZG9uZQogICAgWzMvNF0gU3RhcnRpbmcgU1FMU2VydmVyIDIwMTkgLi4uIHNraXBwZWQKICAgIFs0LzRdIENsb25pbmcgUEhQLUNSVUQtQVBJIHYyIC4uLiBza2lwcGVkCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIG15c3FsOiAxMjAgdGVzdHMgcmFuIGluIDEzNDQgbXMsIDEgc2tpcHBlZCwgMCBmYWlsZWQKICAgIHBnc3FsOiAxMjAgdGVzdHMgcmFuIGluIDg1NiBtcywgMSBza2lwcGVkLCAwIGZhaWxlZAogICAgc3Fsc3J2OiBza2lwcGVkLCBkcml2ZXIgbm90IGxvYWRlZAogICAgc3FsaXRlOiAxMjAgdGVzdHMgcmFuIGluIDcyMiBtcywgMTMgc2tpcHBlZCwgMCBmYWlsZWQKClRoZSBhYm92ZSB0ZXN0IHJ1biAoaW5jbHVkaW5nIHN0YXJ0aW5nIHVwIHRoZSBkYXRhYmFzZXMpIHRha2VzIGxlc3MgdGhhbiA1IG1pbnV0ZXMgb24gbXkgc2xvdyBsYXB0b3AuCgogICAgJCAuL3J1bi5zaAogICAgMSkgZGViaWFuMTAKICAgIDIpIGRlYmlhbjExCiAgICAzKSBkZWJpYW4xMgogICAgNCkgcm9ja3lsaW51eDgKICAgIDUpIHJvY2t5bGludXg5CiAgICA2KSB1YnVudHUxOAogICAgNykgdWJ1bnR1MjAKICAgIDgpIHVidW50dTIyCiAgICA+IDYKICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgVWJ1bnR1IDE4LjA0IChQSFAgNy4yKQogICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBbMS80XSBTdGFydGluZyBNeVNRTCA1LjcgLi4uLi4uLi4gZG9uZQogICAgWzIvNF0gU3RhcnRpbmcgUG9zdGdyZVNRTCAxMC40IC4uIGRvbmUKICAgIFszLzRdIFN0YXJ0aW5nIFNRTFNlcnZlciAyMDE3IC4uLiBza2lwcGVkCiAgICBbNC80XSBDbG9uaW5nIFBIUC1DUlVELUFQSSB2MiAuLi4gc2tpcHBlZAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBteXNxbDogMTIwIHRlc3RzIHJhbiBpbiAxMjk2IG1zLCAxIHNraXBwZWQsIDAgZmFpbGVkCiAgICBwZ3NxbDogMTIwIHRlc3RzIHJhbiBpbiAxMDU2IG1zLCAxIHNraXBwZWQsIDAgZmFpbGVkCiAgICBzcWxzcnY6IHNraXBwZWQsIGRyaXZlciBub3QgbG9hZGVkCiAgICBzcWxpdGU6IDEyMCB0ZXN0cyByYW4gaW4gNzcyIG1zLCAxMyBza2lwcGVkLCAwIGZhaWxlZAogICAgcm9vdEBiN2FiOTQ3MmUwOGY6L3BocC1jcnVkLWFwaSMgCgpBcyB5b3UgY2FuIHNlZSB0aGUgInJ1bi5zaCIgc2NyaXB0IGdpdmVzIHlvdSBhY2Nlc3MgdG8gYSBwcm9tcHQgaW4gdGhlIGNob3NlbiBkb2NrZXIgZW52aXJvbm1lbnQuCkluIHRoaXMgZW52aXJvbm1lbnQgdGhlIGxvY2FsIGZpbGVzIGFyZSBtb3VudGVkLiBUaGlzIGFsbG93cyBmb3IgZWFzeSBkZWJ1Z2dpbmcgb24gZGlmZmVyZW50IGVudmlyb25tZW50cy4KWW91IG1heSB0eXBlICJleGl0IiB3aGVuIHlvdSBhcmUgZG9uZS4KCiMjIyBEb2NrZXIgaW1hZ2UKClRoZXJlIGlzIGEgYERvY2tlcmZpbGVgIGluIHRoZSByZXBvc2l0b3J5IHRoYXQgaXMgdXNlZCB0byBidWlsZCBhbiBpbWFnZSBhdDoKCltodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvbWV2ZHNjaGVlL3BocC1jcnVkLWFwaV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL21ldmRzY2hlZS9waHAtY3J1ZC1hcGkpCgpJdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgYnVpbGQgb24gZXZlcnkgcmVsZWFzZS4gVGhlICJsYXRlc3QiIHRhZyBwb2ludHMgdG8gdGhlIGxhc3QgcmVsZWFzZS4KClRoZSBkb2NrZXIgaW1hZ2UgYWNjZXB0cyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgcGFyYW1ldGVycyBmcm9tIHRoZSBjb25maWd1cmF0aW9uLgoKIyMjIERvY2tlciBjb21wb3NlCgpUaGlzIHJlcG9zaXRvcnkgYWxzbyBjb250YWlucyBhIGBkb2NrZXItY29tcG9zZS55bWxgIGZpbGUgdGhhdCB5b3UgY2FuIGluc3RhbGwvYnVpbGQvcnVuIHVzaW5nOgoKICAgIHN1ZG8gYXB0IGluc3RhbGwgZG9ja2VyLWNvbXBvc2UKICAgIGRvY2tlci1jb21wb3NlIGJ1aWxkCiAgICBkb2NrZXItY29tcG9zZSB1cAoKVGhpcyB3aWxsIHNldHVwIGEgZGF0YWJhc2UgKE15U1FMKSBhbmQgYSB3ZWJzZXJ2ZXIgKEFwYWNoZSkgYW5kIHJ1bnMgdGhlIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBibG9nIGV4YW1wbGUgZGF0YSB1c2VkIGluIHRoZSB0ZXN0cy4KClRlc3QgdGhlIHNjcmlwdCAocnVubmluZyBpbiB0aGUgY29udGFpbmVyKSBieSBvcGVuaW5nIHRoZSBmb2xsb3dpbmcgVVJMOgoKICAgIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9yZWNvcmRzL3Bvc3RzLzEKCiMjIyBTdGFyIEhpc3RvcnkKClshW1N0YXIgSGlzdG9yeSBDaGFydF0oaHR0cHM6Ly9hcGkuc3Rhci1oaXN0b3J5LmNvbS9zdmc/cmVwb3M9bWV2ZHNjaGVlL3BocC1jcnVkLWFwaSZ0eXBlPURhdGUpXShodHRwczovL3N0YXItaGlzdG9yeS5jb20vI21ldmRzY2hlZS9waHAtY3J1ZC1hcGkmRGF0ZSkKCkVuam95IQo= readmeEtag: '"0af65dacf7530c69d7dfeaef6b537e3344f594af"' readmeLastModified: Fri, 22 Nov 2024 07:05:44 GMT repositoryId: 30567860 description: Single file PHP script that adds a REST API to a SQL database created: '2015-02-10T01:08:52Z' updated: '2026-02-05T14:26:24Z' language: PHP archived: false stars: 3725 watchers: 168 forks: 1039 owner: mevdschee logo: https://avatars.githubusercontent.com/u/1288217?v=4 license: MIT repoEtag: '"f2632393687c602aede7ede4c05970e4548f349b73a1a9ff5988553bb162bda0"' repoLastModified: Thu, 05 Feb 2026 14:26:24 GMT id: 84a7be428932f7789a8ad1a220b22216 - source: IMPLEMENTATIONS.md name: Fastify OpenAPI v3 homepage: https://gitlab.com/m03geek/fastify-oas language: Node.JS source_description: >- Fastify OpenAPI v3+ plugin. Generates OpenAPI specification from fastify schemas and routes. Also serves swagger ui and spec in json/yaml formats. category: Server Implementations foundInMaster: true id: c78fe82304e392d33668f4af87119380 - source: IMPLEMENTATIONS.md name: JSONSchema::Validator homepage: >- https://github.com/skbkontur/perl-jsonschema-validator](https://github.com/skbkontur/perl-jsonschema-validator language: Perl source_description: OpenAPI 3 request/response validation category: Server Implementations foundInMaster: true repository: >- https://github.com/skbkontur/perl-jsonschema-validator](https://github.com/skbkontur/perl-jsonschema-validator repositoryMetadata: base64Readme: >- IyBOQU1FCgpKU09OU2NoZW1hOjpWYWxpZGF0b3IgLSBWYWxpZGF0b3IgZm9yIEpTT04gU2NoZW1hIERyYWZ0NC9EcmFmdDYvRHJhZnQ3IGFuZCBPcGVuQVBJIFNwZWNpZmljYXRpb24gMy4wCgojIFZFUlNJT04KCnZlcnNpb24gMC4wMTEKCiMgU1lOT1BTSVMKCiAgICAjIHRvIGdldCBPcGVuQVBJIHZhbGlkYXRvciBpbiBZQU1MIGZvcm1hdAogICAgJHZhbGlkYXRvciA9IEpTT05TY2hlbWE6OlZhbGlkYXRvci0+bmV3KHJlc291cmNlID0+ICdmaWxlOi8vL3NvbWUvcGF0aC90by9vYXMzMC55bWwnKTsKICAgIG15ICgkcmVzdWx0LCAkZXJyb3JzLCAkd2FybmluZ3MpID0gJHZhbGlkYXRvci0+dmFsaWRhdGVfcmVxdWVzdCgKICAgICAgICBtZXRob2QgPT4gJ0dFVCcsCiAgICAgICAgb3BlbmFwaV9wYXRoID0+ICcvdXNlci97aWR9L3Byb2ZpbGUnLAogICAgICAgIHBhcmFtZXRlcnMgPT4gewogICAgICAgICAgICBwYXRoID0+IHsKICAgICAgICAgICAgICAgIGlkID0+IDEyMzQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcXVlcnkgPT4gewogICAgICAgICAgICAgICAgZGV0YWlscyA9PiAnc2hvcnQnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGhlYWRlciA9PiB7CiAgICAgICAgICAgICAgICBoZWFkZXIgPT4gJ2hlYWRlciB2YWx1ZScKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY29va2llID0+IHsKICAgICAgICAgICAgICAgIG5hbWUgPT4gJ3ZhbHVlJwogICAgICAgICAgICB9LAogICAgICAgICAgICBib2R5ID0+IFskaXNfZXhpc3RzLCAkY29udGVudF90eXBlLCAkZGF0YV0KICAgICAgICB9CiAgICApOwogICAgbXkgKCRyZXN1bHQsICRlcnJvcnMsICR3YXJuaW5ncykgPSAkdmFsaWRhdG9yLT52YWxpZGF0ZV9yZXNwb25zZSgKICAgICAgICBtZXRob2QgPT4gJ0dFVCcsCiAgICAgICAgb3BlbmFwaV9wYXRoID0+ICcvdXNlci97aWR9L3Byb2ZpbGUnLAogICAgICAgIHN0YXR1cyA9PiAnMjAwJywKICAgICAgICBwYXJhbWV0ZXJzID0+IHsKICAgICAgICAgICAgaGVhZGVyID0+IHsKICAgICAgICAgICAgICAgIGhlYWRlciA9PiAnaGVhZGVyIHZhbHVlJwogICAgICAgICAgICB9LAogICAgICAgICAgICBib2R5ID0+IFskaXNfZXhpc3RzLCAkY29udGVudF90eXBlLCAkZGF0YV0KICAgICAgICB9CiAgICApCgogICAgIyB0byBnZXQgSlNPTiBTY2hlbWEgRHJhZnQ0L0RyYWZ0Ni9EcmFmdDcgdmFsaWRhdG9yIGluIEpTT04gZm9ybWF0CiAgICAkdmFsaWRhdG9yID0gSlNPTlNjaGVtYTo6VmFsaWRhdG9yLT5uZXcocmVzb3VyY2UgPT4gJ2h0dHA6Ly9leGFtcGxlLmNvbS9kcmFmdDQvc2NoZW1hLmpzb24nKQogICAgbXkgKCRyZXN1bHQsICRlcnJvcnMpID0gJHZhbGlkYXRvci0+dmFsaWRhdGVfc2NoZW1hKCRvYmplY3RfdG9fdmFsaWRhdGUpCgojIERFU0NSSVBUSU9OCgpPcGVuQVBJIHNwZWNpZmljYXRpb24gYW5kIEpTT04gU2NoZW1hIERyYWZ0NC9EcmFmdDYvRHJhZnQ3IHZhbGlkYXRvcnMgd2l0aCBtaW5pbXVtIGRlcGVuZGVuY2llcy4KCiMgTUVUSE9EUwoKIyMgbmV3CgpDcmVhdGVzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbGlkYXRvcnM6IEpTT05TY2hlbWE6OlZhbGlkYXRvcjo6RHJhZnQ0LCBKU09OU2NoZW1hOjpWYWxpZGF0b3I6OkRyYWZ0NiwgSlNPTlNjaGVtYTo6VmFsaWRhdG9yOjpEcmFmdDcsIEpTT05TY2hlbWE6OlZhbGlkYXRvcjo6T0FTMzAuCgogICAgbXkgJHZhbGlkYXRvciA9IEpTT05TY2hlbWE6OlZhbGlkYXRvci0+bmV3KHJlc291cmNlID0+ICdmaWxlOi8vL3NvbWUvcGF0aC90by9vYXMzMC55bWwnKTsKICAgIG15ICR2YWxpZGF0b3IgPSBKU09OU2NoZW1hOjpWYWxpZGF0b3ItPm5ldyhyZXNvdXJjZSA9PiAnaHR0cDovL2V4YW1wbGUuY29tL2RyYWZ0NC9zY2hlbWEuanNvbicpOwogICAgbXkgJHZhbGlkYXRvciA9IEpTT05TY2hlbWE6OlZhbGlkYXRvci0+bmV3KHNjaGVtYSA9PiB7JyRzY2hlbWEnID0+ICdwYXRoL3RvL3NjaGVtYScsIC4uLn0pOwogICAgbXkgJHZhbGlkYXRvciA9IEpTT05TY2hlbWE6OlZhbGlkYXRvci0+bmV3KHNjaGVtYSA9PiB7Li4ufSwgc3BlY2lmaWNhdGlvbiA9PiAnRHJhZnQ0Jyk7CgppZiBwYXJhbWV0ZXIgYHNwZWNpZmljYXRpb25gIGlzIG5vdCBzcGVjaWZpZWQgdGhlbiB0eXBlIG9mIHZhbGlkYXRvciB3aWxsIGJlIGRldGVybWluZWQgYnkgYCRzY2hlbWFgIGtleQpmb3IgSlNPTiBTY2hlbWEgRHJhZnQ0L0RyYWZ0Ni9EcmFmdDcgYW5kIGJ5IGBvcGVuYXBpYCBrZXkgZm9yIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAzLjAgaW4gYHNjaGVtYWAgcGFyYW1ldGVyLgoKUGFyYW1ldGVyczoKCi0gcmVzb3VyY2VzCgogICAgVG8gZ2V0IHNjaGVtYSBieSB1cmkKCi0gc2NoZW1hCgogICAgVG8gZ2V0IGV4cGxpY2l0bHkgc3BlY2lmaWVkIHNjaGVtYQoKLSBzcGVjaWZpY2F0aW9uCgogICAgVG8gc3BlY2lmeSBzcGVjaWZpY2F0aW9uIG9mIHNjaGVtYQoKLSB2YWxpZGF0ZVxfc2NoZW1hCgogICAgRG8gbm90IHZhbGlkYXRlIHNwZWNpZmllZCBzY2hlbWEKCi0gYmFzZVxfdXJpCgogICAgVG8gc3BlY2lmeSBiYXNlIHVyaSBvZiBzY2hlbWEuCiAgICBUaGlzIHBhcmFtZXRlciB1c2VkIHRvIGJ1aWxkIGFic29sdXRlIHBhdGggYnkgcmVsYXRpdmUgcmVmZXJlbmNlIGluIHNjaGVtYS4KICAgIEJ5IGRlZmF1bHQgYGJhc2VfdXJpYCBpcyBlcXVhbCB0byB0aGUgcmVzb3VyY2UgcGF0aCBpZiB0aGUgcmVzb3VyY2UgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBvdGhlcndpc2UgdGhlIGAkaWRgIGtleSBpbiB0aGUgc2NoZW1hLgoKQWRkaXRpb25hbCBwYXJhbWV0ZXJzIG5lZWQgdG8gYmUgbG9va2VkIGF0IGluIGEgc3BlY2lmaWMgdmFsaWRhdG9yIGNsYXNzLgpDdXJyZW50bHkgdGhlcmUgYXJlIHZhbGlkYXRvcnM6IEpTT05TY2hlbWE6OlZhbGlkYXRvcjo6RHJhZnQ0LCBKU09OU2NoZW1hOjpWYWxpZGF0b3I6OkRyYWZ0NiwgSlNPTlNjaGVtYTo6VmFsaWRhdG9yOjpEcmFmdDcsIEpTT05TY2hlbWE6OlZhbGlkYXRvcjo6T0FTMzAuCgojIyB2YWxpZGF0ZVxfcGF0aHMKClZhbGlkYXRlcyBhbGwgZmlsZXMgc3BlY2lmaWVkIGJ5IHBhdGggZ2xvYnMuCgogICAgbXkgJHJlc3VsdCA9IEpTT05TY2hlbWE6OlZhbGlkYXRvci0+dmFsaWRhdGVfcGF0aHMoWycvc29tZS9wYXRoL3RvL29wZW5hcGkuKi55YW1sJywgJy9zb21lL3BhdGgvdG8vanNvbnNjaGVtYS4qLmpzb24nXSk7CiAgICBmb3IgbXkgJGZpbGUgKGtleXMgJSRyZXN1bHQpIHsKICAgICAgICBteSAoJHJlcywgJGVycm9ycykgPSBAeyRyZXN1bHQtPnskZmlsZX19OwogICAgfQoKIyMgdmFsaWRhdGVcX3Jlc291cmNlCgojIyB2YWxpZGF0ZVxfcmVzb3VyY2VcX3NjaGVtYQoKIyBDQVZFQVRTCgojIyBZQU1MICYgYm9vbGVhbnMKCldoZW4gcmVhZGluZyBzY2hlbWEgZGVmaW5pdGlvbnMgZnJvbSBZQU1MLCBwbGVhc2Ugbm90ZSB0aGF0IHRoZSBzdGFuZGFyZApiZWhhdmlvdXIgb2YgW1lBTUw6OlBQXShodHRwczovL21ldGFjcGFuLm9yZy9wb2QvWUFNTCUzQSUzQVBQKSBhbmQgW1lBTUw6OlhTXShodHRwczovL21ldGFjcGFuLm9yZy9wb2QvWUFNTCUzQSUzQVhTKSBpcyB0byByZWFkIHZhbHVlcyB3aGljaCBldmFsdWF0ZQp0byBgdHJ1ZWAgb3IgYGZhbHNlYCBpbiBhIHBlcmwgY29udGV4dC4gVGhlc2UgdmFsdWVzIGhhdmUgbm8gcmVjb2duaXphYmxlCidib29sZWFuIHR5cGUnLiBUaGlzIGlzIGluc3VmZmljaWVudCBmb3IgSlNPTiBzY2hlbWEgdmFsaWRhdGlvbi4KClRvIG1ha2UgdGhlIFlBTUwgcmVhZGVycyBhbmQgYm9vbGVhbnMgd29yayB3aXRoIGBKU09OU2NoZW1hOjpWYWxpZGF0b3JgLAp5b3UgbmVlZCB0byB1c2UgdGhlIGBKU09OOjpQUGAgKGluY2x1ZGVkIGluIFBlcmwncyBzdGFuZGFyZCBsaWJyYXJ5KSBtb2R1bGUKYXMgZm9sbG93czoKCiAgICAjIGZvciBZQU1MOjpQUAogICAgdXNlIFlBTUw6OlBQOwoKICAgIG15ICRyZWFkZXIgPSBZQU1MOjpQUC0+bmV3KCBib29sZWFuID0+ICdKU09OOjpQUCcgKTsKICAgICMgZnJvbSBoZXJlLCB5b3UgY2FuIGZyZWVseSB1c2UgdGhlIHJlYWRlciB0bwogICAgIyByZWFkICYgd3JpdGUgYm9vbGVhbnMgYXMgJ3RydWUnIGFuZCAnZmFsc2UnCgoKICAgICMgZm9yIFlBTUw6OlhTCiAgICB1c2UgWUFNTDo6WFM7CgogICAgbXkgJHJlYWRlciA9IFlBTUw6OlhTLT5uZXc7CgogICAgIyBhbmQgd2hlbmV2ZXIgeW91IHJlYWQgWUFNTCB3aXRoIHRoaXMgcmVhZGVyLCBkbzoKICAgIG15ICR5YW1sID0gZG8gewogICAgICBsb2NhbCAkWUFNTDo6WFM6OkJvb2xlYW4gPSAnSlNPTjo6UFAnOwogICAgICAkcmVhZGVyLT5Mb2FkKCRzdHJpbmcpOyAjIG9yICRyZWFkZXItPkxvYWRGaWxlKCdmaWxlbmFtZScpOwogICAgfTsKClRoaXMgaXNuJ3QgYSBwcm9ibGVtIHdoZW4geW91IHVzZSB0aGUgYHJlc291cmNlYCBhcmd1bWVudCB0byB0aGUKYEpTT05TY2hlbWE6OlZhbGlkYXRvcjo6bmV3YCBjb25zdHJ1Y3RvciwgYnV0IGlmIHlvdSByZWFkIHlvdXIgb3duCnNjaGVtYSBhbmQgdXNlIHRoZSBgc2NoZW1hYCBhcmd1bWVudCwgdGhpcyBpcyBzb21ldGhpbmcgdG8gYmUgYXdhcmUgb2YuCgojIyBhbGxvd1xfYmlnbnVtID0+IDEKClRoZSBgYWxsb3dfYmlnbnVtID1gIDE+IHNldHRpbmcgKGF2YWlsYWJsZSBvbiBbSlNPTjo6WFNdKGh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9KU09OJTNBJTNBWFMpIGFuZApbQ3BhbmVsOjpKU09OOjpYU10oaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL0NwYW5lbCUzQSUzQUpTT04lM0ElM0FYUykpIG9uIGRlc2VyaWFsaXplcnMgaXMgbm90IHN1cHBvcnRlZC4KCldoZW4gZGVzZXJpYWxpemluZyBhIHJlcXVlc3QgYm9keSB3aXRoIGEgSlNPTiBwYXJzZXIgY29uZmlndXJlZCB3aXRoCmBhbGxvd19iaWdudW0gPWAgMT4sIGZsb2F0cyAtIGV2ZW4gb25lcyB3aGljaCBmaXQgaW50byB0aGUgcmVndWxhcgpmbG9hdCByYW5nZXMgLSB3aWxsIGJlIGRlc2VyaWFsaXplZCBhcyBgTWF0aDo6QmlnRmxvYXRgLiBTaW1pbGFybHksCmludGVnZXJzIG91dHNpZGUgb2YgdGhlIGludGVybmFsIGludGVnZXIgcmFuZ2UgYXJlIGRlc2VyaWFsaXplZCBhcwpgTWF0aDo6QmlnSW50YC4gTnVtYmVycyByZXByZXNlbnRlZCBhcyBgTWF0aDo6QmlnKmAgb2JqZWN0cyBhcmUgbm90CnJlY29nbml6ZWQgYXMgYWN0dWFsIG51bWJlcnMgYW5kIHdpbGwgZmFpbCB2YWxpZGF0aW9uLgoKIyBBVVRIT1JTCgotIEFsZXhleSBTdGF2cm92IDxsb2dpb25pekB5YS5ydT4KLSBJdmFuIFB1dGludHNldiA8dWlkQHJ5ZGxhYi5ydT4KLSBBbnRvbiBGZWRvdG92IDx0b3NoYS5mZWRvdG92LjIwMDBAZ21haWwuY29tPgotIERlbmlzIEliYWV2IDxkaW9ueXNAZ21haWwuY29tPgotIEFuZHJleSBLaG96b3YgPGFuZHJleUByeWRsYWIucnU+CgojIENPTlRSSUJVVE9SUwoKLSBFcmlrIEh1ZWxzbWFubiA8ZWh1ZWxzQGdtYWlsLmNvbT4KLSBKYW1lcyBXYXRlcnMgPGphbWVzQGpjd2F0ZXJzLmNvLnVrPgoKIyBDT1BZUklHSFQgQU5EIExJQ0VOU0UKClRoaXMgc29mdHdhcmUgaXMgQ29weXJpZ2h0IChjKSAyMDIxIGJ5IEFsZXhleSBTdGF2cm92LgoKVGhpcyBpcyBmcmVlIHNvZnR3YXJlLCBsaWNlbnNlZCB1bmRlcjoKCiAgICBUaGUgTUlUIChYMTEpIExpY2Vuc2UK readmeEtag: '"32131c216eadce854b63f2683e969d148b8f6a5b"' readmeLastModified: Fri, 09 Sep 2022 20:43:45 GMT repositoryId: 382338785 description: JSON Schema and OpenAPI data validator for Perl created: '2021-07-02T12:25:14Z' updated: '2025-08-22T15:27:27Z' language: Perl archived: false stars: 7 watchers: 7 forks: 4 owner: skbkontur logo: https://avatars.githubusercontent.com/u/5087073?v=4 license: NOASSERTION repoEtag: '"6bff7480de4e1f12236d8fbd8da528b861b6c3fdf205d487bac073d7c142f5fe"' repoLastModified: Fri, 22 Aug 2025 15:27:27 GMT id: 79a86285955c77cec16d44dfcef0121d - source: IMPLEMENTATIONS.md name: openapi-client-axios homepage: https://github.com/anttiviljami/openapi-client-axios language: - JavaScript - TypeScript source_description: >- JavaScript client library for consuming OpenAPI-enabled APIs with axios. Types included. category: - Client Implementations - Parsers foundInMaster: true repository: https://github.com/openapistack/openapi-client-axios repositoryMetadata: base64Readme: >- PGgxIGFsaWduPSJjZW50ZXIiPjxpbWcgYWx0PSJvcGVuYXBpLWNsaWVudC1heGlvcyIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXN0YWNrL29wZW5hcGktY2xpZW50LWF4aW9zL3Jhdy9tYWluL2hlYWRlci5wbmc/cmF3PXRydWUiIHN0eWxlPSJtYXgtd2lkdGg6NTByZW0iPjwvaDE+CgpbIVtDSV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGlzdGFjay9vcGVuYXBpLWNsaWVudC1heGlvcy93b3JrZmxvd3MvQ0kvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGlzdGFjay9vcGVuYXBpLWNsaWVudC1heGlvcy9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBQ0kpClshW0xpY2Vuc2VdKGh0dHA6Ly9pbWcuc2hpZWxkcy5pby86bGljZW5zZS1taXQtYmx1ZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXN0YWNrL29wZW5hcGktY2xpZW50LWF4aW9zL2Jsb2IvbWFpbi9MSUNFTlNFKQpbIVtucG0gdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9vcGVuYXBpLWNsaWVudC1heGlvcy5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vcGVuYXBpLWNsaWVudC1heGlvcykKWyFbbnBtIGRvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZHcvb3BlbmFwaS1jbGllbnQtYXhpb3Muc3ZnKV0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb3BlbmFwaS1jbGllbnQtYXhpb3MpClshW2J1bmRsZSBzaXplXShodHRwczovL2ltZy5zaGllbGRzLmlvL2J1bmRsZXBob2JpYS9taW56aXAvb3BlbmFwaS1jbGllbnQtYXhpb3Muc3ZnP2xhYmVsPWd6aXAlMjBidW5kbGUpXShodHRwczovL2J1bmRsZXBob2JpYS5jb20vcGFja2FnZS9vcGVuYXBpLWNsaWVudC1heGlvcykKWyFbTGlicmFyaWVzLmlvIGRlcGVuZGVuY3kgc3RhdHVzIGZvciBsYXRlc3QgcmVsZWFzZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9saWJyYXJpZXNpby9yZWxlYXNlL25wbS9vcGVuYXBpLWNsaWVudC1heGlvcy5zdmcpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vcGVuYXBpLWNsaWVudC1heGlvcz9hY3RpdmVUYWI9ZGVwZW5kZW5jaWVzKQohW25wbSB0eXBlIGRlZmluaXRpb25zXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS90eXBlcy9vcGVuYXBpLWNsaWVudC1heGlvcy5zdmcpClshW0J1eSBtZSBhIGNvZmZlZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9kb25hdGUtYnV5JTIwbWUlMjBhJTIwY29mZmVlLW9yYW5nZSldKGh0dHBzOi8vYnV5bWVhY29mZi5lZS9hbnR0aXZpbGphbWkpCgo8cCBhbGlnbj0iY2VudGVyIj5KYXZhU2NyaXB0IGNsaWVudCBsaWJyYXJ5IGZvciBjb25zdW1pbmcgT3BlbkFQSS1lbmFibGVkIEFQSXMgd2l0aCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXhpb3MvYXhpb3MiIHRhcmdldD0iX2JsYW5rIj5heGlvczwvYT4uIFR5cGVzIGluY2x1ZGVkLjwvcD4KCiMjIEZlYXR1cmVzCgotIFt4XSBDcmVhdGUgQVBJIGNsaWVudHMgZnJvbSBbT3BlbkFQSSB2MyBkZWZpbml0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24pCi0gW3hdIENsaWVudCBpcyBjb25maWd1cmVkIGluIHJ1bnRpbWUuICoqTm8gZ2VuZXJhdGVkIGNvZGUhKioKLSBbeF0gR2VuZXJhdGUgVHlwZVNjcmlwdCBkZWZpbml0aW9ucyAoLmQudHMpIGZvciB5b3VyIEFQSXMgd2l0aCBmdWxsIEludGVsbGlTZW5zZSBzdXBwb3J0Ci0gW3hdIEVhc3kgdG8gdXNlIEFQSSB0byBjYWxsIEFQSSBvcGVyYXRpb25zIHVzaW5nIEphdmFTY3JpcHQgbWV0aG9kcwogIC0gYGNsaWVudC5nZXRQZXQoMSlgCiAgLSBgY2xpZW50LnNlYXJjaFBldHMoKWAKICAtIGBjbGllbnQuc2VhcmNoUGV0cyh7IGlkczogWzEsIDIsIDNdIH0pYAogIC0gYGNsaWVudC51cGRhdGVQZXQoMSwgcGF5bG9hZClgCi0gW3hdIEJ1aWx0IG9uIHRvcCBvZiB0aGUgcm9idXN0IFtheGlvc10oaHR0cHM6Ly9naXRodWIuY29tL2F4aW9zL2F4aW9zKSBKYXZhU2NyaXB0IGxpYnJhcnkKLSBbeF0gSXNvbW9ycGhpYywgd29ya3MgYm90aCBpbiBicm93c2VyIGFuZCBOb2RlLmpzCgojIyBEb2N1bWVudGF0aW9uCgoqKk5ldyEqKiBPcGVuQVBJIENsaWVudCBBeGlvcyBkb2N1bWVudGF0aW9uIGlzIG5vdyBmb3VuZCBvbiBbb3BlbmFwaXN0YWNrLmNvXShodHRwczovL29wZW5hcGlzdGFjay5jbykKCmh0dHBzOi8vb3BlbmFwaXN0YWNrLmNvL2RvY3Mvb3BlbmFwaS1jbGllbnQtYXhpb3MvaW50cm8KCiMjIFF1aWNrIFN0YXJ0CgpgYGAKbnBtIGluc3RhbGwgLS1zYXZlIGF4aW9zIG9wZW5hcGktY2xpZW50LWF4aW9zCmBgYAoKYGBgCnlhcm4gYWRkIGF4aW9zIG9wZW5hcGktY2xpZW50LWF4aW9zCmBgYAoKV2l0aCBwcm9taXNlcyAvIENvbW1vbkpTIHN5bnRheDoKCmBgYGphdmFzY3JpcHQKY29uc3QgT3BlbkFQSUNsaWVudEF4aW9zID0gcmVxdWlyZSgnb3BlbmFwaS1jbGllbnQtYXhpb3MnKS5kZWZhdWx0OwoKY29uc3QgYXBpID0gbmV3IE9wZW5BUElDbGllbnRBeGlvcyh7IGRlZmluaXRpb246ICdodHRwczovL2V4YW1wbGUuY29tL2FwaS9vcGVuYXBpLmpzb24nIH0pOwphcGkuaW5pdCgpCiAgLnRoZW4oY2xpZW50ID0+IGNsaWVudC5nZXRQZXRCeUlkKDEpKQogIC50aGVuKHJlcyA9PiBjb25zb2xlLmxvZygnSGVyZSBpcyBwZXQgaWQ6MSBmcm9tIHRoZSBhcGknLCByZXMuZGF0YSkpOwpgYGAKCldpdGggYXN5bmMtYXdhaXQgLyBFUzYgc3ludGF4OgoKYGBgamF2YXNjcmlwdAppbXBvcnQgT3BlbkFQSUNsaWVudEF4aW9zIGZyb20gJ29wZW5hcGktY2xpZW50LWF4aW9zJzsKCmNvbnN0IGFwaSA9IG5ldyBPcGVuQVBJQ2xpZW50QXhpb3MoeyBkZWZpbml0aW9uOiAnaHR0cHM6Ly9leGFtcGxlLmNvbS9hcGkvb3BlbmFwaS5qc29uJyB9KTsKYXBpLmluaXQoKTsKCmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVBldCgpIHsKICBjb25zdCBjbGllbnQgPSBhd2FpdCBhcGkuZ2V0Q2xpZW50KCk7CiAgY29uc3QgcmVzID0gYXdhaXQgY2xpZW50LmNyZWF0ZVBldChudWxsLCB7IG5hbWU6ICdHYXJmaWVsZCcgfSk7CiAgY29uc29sZS5sb2coJ1BldCBjcmVhdGVkJywgcmVzLmRhdGEpOwp9CmBgYAoKIyMgVHlwZXNhZmUgQ2xpZW50cwoKIVtUeXBlU2NyaXB0IEludGVsbGlTZW5zZV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGlzdGFjay9vcGVuYXBpLWNsaWVudC1heGlvcy9ibG9iL21haW4vcGFja2FnZXMvdHlwZWdlbi9pbnRlbGxpc2Vuc2UuZ2lmKQoKYG9wZW5hcGktY2xpZW50LWF4aW9zYCBjb21lcyB3aXRoIGEgQ0xJIGNvbW1hbmQgYG9wZW5hcGljbWQgdHlwZWdlbmAgdG8gZ2VuZXJhdGUgVHlwZXNjcmlwdCB0eXBlcyBmb3IgdHlwZSBzYWZldHkgYW5kIGNvZGUgYXV0b2NvbXBsZXRlLgoKYGBgCm5weCBvcGVuYXBpY21kIHR5cGVnZW4gLi9vcGVuYXBpLnlhbWwgPiBzcmMvdHlwZXMvb3BlbmFwaS5kLnRzCmBgYAoKVGhlIG91dHB1dCBvZiBgdHlwZWdlbmAgZXhwb3J0cyBhIHR5cGUgY2FsbGVkIGBDbGllbnRgLCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5zdGFuY2VzIGNyZWF0ZWQgd2l0aCBgT3BlbkFQSUNsaWVudEF4aW9zYC4KCkJvdGggdGhlIGBhcGkuZ2V0Q2xpZW50KClgIGFuZCBgYXBpLmluaXQoKWAgbWV0aG9kcyBzdXBwb3J0IHBhc3NpbmcgaW4gYSBDbGllbnQgdHlwZS4KCmBgYHR5cGVzY3JpcHQKaW1wb3J0IHsgQ2xpZW50IGFzIFBldFN0b3JlQ2xpZW50IH0gZnJvbSAnLi9jbGllbnQuZC50cyc7Cgpjb25zdCBjbGllbnQgPSBhd2FpdCBhcGkuaW5pdDxQZXRTdG9yZUNsaWVudD4oKTsKY29uc3QgY2xpZW50ID0gYXdhaXQgYXBpLmdldENsaWVudDxQZXRTdG9yZUNsaWVudD4oKTsKYGBgCgpgb3BlbmFwaWNtZCB0eXBlZ2VuYCBzdXBwb3J0cyB1c2luZyBib3RoIGxvY2FsIGFuZCByZW1vdGUgVVJMcyBmb3IgT3BlbkFQSSBkZWZpbml0aW9uIGZpbGVzLgoKYGBgCiQgbnB4IG9wZW5hcGljbWQgdHlwZWdlbiAuL3BldHN0b3JlLnlhbWwKJCBucHggb3BlbmFwaWNtZCB0eXBlZ2VuIGh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzL29wZW5hcGkuanNvbgpgYGAKCiMjIENvbW1lcmNpYWwgc3VwcG9ydAoKRm9yIGFzc2lzdGFuY2Ugd2l0aCBvcGVuYXBpLWNsaWVudC1heGlvcyBpbiB5b3VyIGNvbXBhbnksIHJlYWNoIG91dCBhdCBzdXBwb3J0QG9wZW5hcGlzdGFjay5jby4KCiMjIENvbnRyaWJ1dGluZwoKT3BlbkFQSSBDbGllbnQgQXhpb3MgaXMgRnJlZSBhbmQgT3BlbiBTb3VyY2UgU29mdHdhcmUuIElzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBhcmUgbW9yZSB0aGFuIHdlbGNvbWUhCg== readmeEtag: '"4f973e3fa064f50ede67e7b355607b79a6cdcde7"' readmeLastModified: Wed, 12 Jun 2024 09:33:11 GMT repositoryId: 157976175 description: JavaScript client library for consuming OpenAPI-enabled APIs with axios created: '2018-11-17T11:04:15Z' updated: '2026-01-23T05:15:22Z' language: TypeScript archived: false stars: 613 watchers: 5 forks: 71 owner: openapistack logo: https://avatars.githubusercontent.com/u/147298423?v=4 license: MIT repoEtag: '"5219bcb0484cb6c30db2079fe8f6ea74afd280d2609d1a59694df7ceb49e36b0"' repoLastModified: Fri, 23 Jan 2026 05:15:22 GMT id: a3b46b452de775b27f5ce966a69ccfa3 oldLocations: - https://github.com/anttiviljami/openapi-client-axios - source: IMPLEMENTATIONS.md name: serverless-openapi-documentation homepage: https://github.com/temando/serverless-openapi-documentation language: TypeScript source_description: >- Serverless 1.0 plugin to generate OpenAPI V3 documentation from serverless configuration category: - Code Generators - Parsers foundInMaster: true repository: https://github.com/temando/serverless-openapi-documentation repositoryMetadata: base64Readme: >- IyBTZXJ2ZXJsZXNzIE9wZW5BUEkgRG9jdW1lbnRhdGlvbiBQbHVnaW4KClshW05QTV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9zZXJ2ZXJsZXNzLW9wZW5hcGktZG9jdW1lbnRhdGlvbi5zdmcpXShodHRwczovL25wbWpzLm9yZy9wYWNrYWdlcy9zZXJ2ZXJsZXNzLW9wZW5hcGktZG9jdW1lbnRhdGlvbi8pClshW1RyYXZpcyBDSV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90cmF2aXMvdGVtYW5kby9zZXJ2ZXJsZXNzLW9wZW5hcGktZG9jdW1lbnRhdGlvbi5zdmcpXShodHRwczovL3RyYXZpcy1jaS5vcmcvdGVtYW5kby9zZXJ2ZXJsZXNzLW9wZW5hcGktZG9jdW1lbnRhdGlvbikKWyFbSmF2YVNjcmlwdCBTdHlsZSBHdWlkZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlX3N0eWxlLXN0YW5kYXJkLWJyaWdodGdyZWVuLnN2ZyldKGh0dHBzOi8vc3RhbmRhcmRqcy5jb20pCgpHZW5lcmF0ZXMgWyoqT3BlbkFQSSAzLjAuMCoqXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iLzMuMC4wL3ZlcnNpb25zLzMuMC4wLm1kKSBkb2N1bWVudGF0aW9uIGZyb20gc2VydmVybGVzcyBjb25maWd1cmF0aW9uIGZpbGVzLiBPcGVuQVBJIGlzIGZvcm1lcmx5IGtub3duIGFzIFN3YWdnZXIuIFRoZSBjb25maWd1cmF0aW9uIGlzIGluc3BpcmVkIGJ5IHRoZSBmb3JtYXQgdXNlZCBpbiBbc2VydmVybGVzcy1hd3MtZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvc2VydmVybGVzcy1hd3MtZG9jdW1lbnRhdGlvbikuCgpXb3JrcyB3ZWxsIHdpdGggW0xpbmNvbG4gT3BlbkFQSSBSZW5kZXJlcl0oaHR0cHM6Ly9naXRodWIuY29tL3RlbWFuZG8vb3Blbi1hcGktcmVuZGVyZXIpLgoKLS0tCgotIFtVc2FnZV0oI3VzYWdlKQogIC0gW09wdGlvbnNdKCNvcHRpb25zKQogIC0gW0NvbmZpZ3VyYXRpb25dKCNjb25maWd1cmF0aW9uKQogICAgLSBbTW9kZWxzXSgjbW9kZWxzKQogICAgLSBbRnVuY3Rpb25zXSgjZnVuY3Rpb25zKQogICAgLSBbYHF1ZXJ5UGFyYW1zYF0oI3F1ZXJ5cGFyYW1zKQogICAgLSBbYHBhdGhQYXJhbXNgXSgjcGF0aHBhcmFtcykKICAgIC0gW2Bjb29raWVQYXJhbXNgXSgjY29va2llcGFyYW1zKQogICAgLSBbYHJlcXVlc3RNb2RlbHNgXSgjcmVxdWVzdG1vZGVscykKICAgIC0gW2BtZXRob2RSZXNwb25zZXNgXSgjbWV0aG9kcmVzcG9uc2VzKQotIFtFeGFtcGxlIENvbmZpZ3VyYXRpb25dKCNleGFtcGxlLWNvbmZpZ3VyYXRpb24pCi0gW0luc3RhbGxdKCNpbnN0YWxsKQoKLS0tCgojIyBVc2FnZQoKVGhpcyBwbHVnaW4gcmVxdWlyZXMgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIHRvIHVzZSwgc2VlIHRoZSAiW0NvbmZpZ3VyYXRpb25dKCNjb25maWd1cmF0aW9uKSIgc2VjdGlvbiBmb3IgaG93IHRvIGNvbmZpZ3VyZSB0aGUgcGx1Z2luIHRvIGdlbmVyYXRlIGRvY3VtZW50YXRpb24uCgpCZWxvdyBhcmUgdGhlIGNvbW1hbmRsaW5lIG9wdGlvbnMgdG8gcnVuIHRoZSBnZW5lcmF0b3I6CgpgYGBiYXNoCnNlcnZlcmxlc3Mgb3BlbmFwaSBnZW5lcmF0ZSBbb3B0aW9uc10KYGBgCgojIyMgT3B0aW9ucwoKYGBgYmFzaApQbHVnaW46IFNlcnZlcmxlc3NPcGVuQVBJRG9jdW1lbnRhdGlvbgpvcGVuYXBpIGdlbmVyYXRlICAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIEdlbmVyYXRlIE9wZW5BUEkgdjMgRG9jdW1lbnRhdGlvbgogICAgLS1vdXRwdXQgLyAtbyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIE91dHB1dCBmaWxlIGxvY2F0aW9uIFtkZWZhdWx0OiBvcGVuYXBpLnltbHxqc29uXQogICAgLS1mb3JtYXQgLyAtZiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIE9wZW5BUEkgZmlsZSBmb3JtYXQgKHltbHxqc29uKSBbZGVmYXVsdDogeW1sXQogICAgLS1pbmRlbnQgLyAtaSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIEZpbGUgaW5kZW50YXRpb24gaW4gc3BhY2VzIFtkZWZhdWx0OiAyXQogICAgLS1oZWxwIC8gLWggICAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIEhlbHAKYGBgCgojIyMgQ29uZmlndXJhdGlvbgoKVG8gY29uZmlndXJlIHRoaXMgcGx1Z2luIHRvIGdlbmVyYXRlIHZhbGlkIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiB0aGVyZSBhcmUgdHdvIHBsYWNlcyB5b3UnbGwgbmVlZCB0byBtb2RpZnkgaW4geW91ciBgc2VydmVybGVzcy55bWxgIGZpbGUsIHRoZSBgY3VzdG9tYCB2YXJpYWJsZXMgc2VjdGlvbiBhbmQgdGhlIGBodHRwYCBldmVudCBzZWN0aW9uIGZvciBlYWNoIGdpdmVuIGZ1bmN0aW9uIGluIHlvdXIgc2VydmljZS4KClRoaXMgcGx1Z2luIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2FtZSBkb2N1bWVudGF0aW9uIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIGluIFtzZXJ2ZXJsZXNzLWF3cy1kb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zZXJ2ZXJsZXNzLWF3cy1kb2N1bWVudGF0aW9uKSBhbmQgY2FuIHJ1biBiZXNpZGUgaXQuCgpUaGUgYGN1c3RvbWAgc2VjdGlvbiBvZiB5b3VyIGBzZXJ2ZXJsZXNzLnltbGAgY2FuIGJlIGNvbmZpZ3VyZWQgYXMgYmVsb3c6CgpgYGB5bWwKY3VzdG9tOgogIGRvY3VtZW50YXRpb246CiAgICB2ZXJzaW9uOiAnMScKICAgIHRpdGxlOiAnTXkgQVBJJwogICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIG15IEFQSScKICAgIG1vZGVsczoge30KYGBgCgpUaGVzZSBjb25maWd1cmF0aW9ucyBjYW4gYmUgcXVpdGUgdmVyYm9zZTsgeW91IGNhbiBzZXBhcmF0ZSBpdCBvdXQgaW50byBpdCdzIG93biBmaWxlLCBzdWNoIGFzIGBzZXJ2ZXJsZXNzLmRvYy55bWxgIGFzIGJlbG93OgoKYGBgeW1sCmN1c3RvbToKICBkb2N1bWVudGF0aW9uOiAke2ZpbGUoc2VydmVybGVzcy5kb2MueW1sKTpkb2N1bWVudGF0aW9ufQoKZnVuY3Rpb25zOgogIG15RnVuYzoKICAgIGV2ZW50czoKICAgICAgLSBodHRwOgogICAgICAgICAgcGF0aDogZ2V0U3R1ZmYKICAgICAgICAgIG1ldGhvZDogZ2V0CiAgICAgICAgICBkb2N1bWVudGF0aW9uOiAke2ZpbGUoc2VydmVybGVzcy5kb2MueW1sKTplbmRwb2ludHMubXlGdW5jfQpgYGAKCkZvciBtb3JlIGluZm8gb24gYHNlcnZlcmxlc3MueW1sYCBzeW50YXgsIHNlZSB0aGVpciBkb2NzLgoKIyMjIyBNb2RlbHMKCk1vZGVscyBjb250YWluIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdGhhdCB5b3UgY2FuIHVzZSB0byBkZWZpbmUgc2NoZW1hcyBmb3IgZW5kcG9pbnRzLiAgWW91IG11c3QgZGVmaW5lIHRoZSAqY29udGVudCB0eXBlKiBmb3IgZWFjaCBzY2hlbWEgdGhhdCB5b3UgcHJvdmlkZSBpbiB0aGUgbW9kZWxzLgoKVGhlICpyZXF1aXJlZCogZGlyZWN0aXZlcyBmb3IgdGhlIG1vZGVscyBzZWN0aW9uIGFyZSBhcyBmb2xsb3c6CgoqIGBuYW1lYDogdGhlIG5hbWUgb2YgdGhlIHNjaGVtYQoqIGBkZXNjcmlwdGlvbmA6IGEgZGVzY3JpcHRpb24gb2YgdGhlIHNjaGVtYQoqIGBjb250ZW50VHlwZWA6IHRoZSBjb250ZW50IHR5cGUgb2YgdGhlIGRlc2NyaWJlZCByZXF1ZXN0L3Jlc3BvbnNlIChpZS4gYGFwcGxpY2F0aW9uL2pzb25gIG9yIGBhcHBsaWNhdGlvbi94bWxgKS4KKiBgc2NoZW1hYDogVGhlIEpTT04gU2NoZW1hIChbd2Vic2l0ZV0oaHR0cDovL2pzb24tc2NoZW1hLm9yZy8pKSB0aGF0IGRlc2NyaWJlcyB0aGUgbW9kZWwuIFlvdSBjYW4gZWl0aGVyIHVzZSBpbmxpbmUgYFlBTUxgIHRvIGRlZmluZSB0aGVzZSwgb3IgcmVmZXIgdG8gYW4gZXh0ZXJuYWwgc2NoZW1hIGZpbGUgYXMgYmVsb3cKCmBgYHltbApjdXN0b206CiAgZG9jdW1lbnRhdGlvbjoKICAgIG1vZGVsczoKICAgICAgLSBuYW1lOiAiRXJyb3JSZXNwb25zZSIKICAgICAgICBkZXNjcmlwdGlvbjogIlRoaXMgaXMgYW4gZXJyb3IiCiAgICAgICAgY29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIHNjaGVtYTogJHtmaWxlKG1vZGVscy9FcnJvclJlc3BvbnNlLmpzb24pfQogICAgICAtIG5hbWU6ICJQdXREb2N1bWVudFJlc3BvbnNlIgogICAgICAgIGRlc2NyaXB0aW9uOiAiUFVUIERvY3VtZW50IHJlc3BvbnNlIG1vZGVsIChleHRlcm5hbCByZWZlcmVuY2UgZXhhbXBsZSkiCiAgICAgICAgY29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIHNjaGVtYTogJHtmaWxlKG1vZGVscy9QdXREb2N1bWVudFJlc3BvbnNlLmpzb24pfQogICAgICAtIG5hbWU6ICJQdXREb2N1bWVudFJlcXVlc3QiCiAgICAgICAgZGVzY3JpcHRpb246ICJQVVQgRG9jdW1lbnQgcmVxdWVzdCBtb2RlbCAoaW5saW5lIGV4YW1wbGUpIgogICAgICAgIGNvbnRlbnRUeXBlOiAiYXBwbGljYXRpb24vanNvbiIKICAgICAgICBzY2hlbWE6CiAgICAgICAgICAkc2NoZW1hOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIgogICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgU29tZU9iamVjdDoKICAgICAgICAgICAgICB0eXBlOiAib2JqZWN0IgogICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICBTb21lQXR0cmlidXRlOgogICAgICAgICAgICAgICAgICB0eXBlOiAic3RyaW5nIgpgYGAKCiMjIyMgRnVuY3Rpb25zCgpUbyBkZWZpbmUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGEgZ2l2ZW4gZnVuY3Rpb24gZXZlbnQsIHlvdSBuZWVkIHRvIGNyZWF0ZSBhIGBkb2N1bWVudGF0aW9uYCBhdHRyaWJ1dGUgZm9yIHlvdXIgaHR0cCBldmVudCBpbiB5b3VyIGBzZXJ2ZXJsZXNzLnltbGAgZmlsZS4KClRoZSBgZG9jdW1lbnRhdGlvbmAgc2VjdGlvbiBvZiB0aGUgZXZlbnQgY29uZmlndXJhdGlvbiBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CgoqIGBzdW1tYXJ5YDogYSBzaG9ydCBkZXNjcmlwdGlvbiBvZiB0aGUgbWV0aG9kCiogYGRlc2NyaXB0aW9uYDogYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgbWV0aG9kCiogYHRhZ3NgOiBhbiBhcnJheSBvZiB0YWdzIGZvciB0aGlzIGV2ZW50CiogYGRlcHJlY2F0ZWRgOiBib29sZWFuIGluZGljYXRvciB0aGF0IGluZGljYXRlcyBjbGllbnRzIHNob3VsZCBtaWdyYXRlIGF3YXkgZnJvbSB0aGlzIGZ1bmN0aW9uCiogYHJlcXVlc3RCb2R5YDogY29udGFpbnMgZGVzY3JpcHRpb24gb2YgdGhlIHJlcXVlc3QKICAgICogYGRlc2NyaXB0aW9uYDogYSBkZXNjcmlwdGlvbiBvZiB0aGUgcmVxdWVzdCBib2R5CiogYHJlcXVlc3RNb2RlbHNgOiBhIGxpc3Qgb2YgbW9kZWxzIHRvIGRlc2NyaWJlIHRoZSByZXF1ZXN0IGJvZGllcyAoc2VlIFtyZXF1ZXN0TW9kZWxzXSgjcmVxdWVzdG1vZGVscykgYmVsb3cpCiogYHF1ZXJ5UGFyYW1zYDogYSBsaXN0IG9mIHF1ZXJ5IHBhcmFtZXRlcnMgKHNlZSBbcXVlcnlQYXJhbXNdKCNxdWVyeXBhcmFtcykgYmVsb3cpCiogYHBhdGhQYXJhbXNgOiBhIGxpc3Qgb2YgcGF0aCBwYXJhbWV0ZXJzIChzZWUgW3BhdGhQYXJhbXNdKCNwYXRocGFyYW1zKSBiZWxvdykKKiBgY29va2llUGFyYW1zYDogYSBsaXN0IG9mIGNvb2tpZSBwYXJhbWV0ZXJzIChzZWUgW2Nvb2tpZVBhcmFtc10oI2Nvb2tpZXBhcmFtcykgYmVsb3cpCiogYG1ldGhvZFJlc3BvbnNlc2A6IGFuIGFycmF5IG9mIHJlc3BvbnNlIG1vZGVscyBhbmQgYXBwbGljYWJsZSBzdGF0dXMgY29kZXMKICAqIGBzdGF0dXNDb2RlYDogYXBwbGljYWJsZSBodHRwIHN0YXR1cyBjb2RlIChpZS4gMjAwLzQwNC81MDAgZXRjLikKICAqIGByZXNwb25zZUJvZHlgOiBjb250YWlucyBkZXNjcmlwdGlvbiBvZiB0aGUgcmVzcG9uc2UKICAgICogYGRlc2NyaXB0aW9uYDogYSBkZXNjcmlwdGlvbiBvZiB0aGUgYm9keSByZXNwb25zZQogICogYHJlc3BvbnNlSGVhZGVyc2A6IGEgbGlzdCBvZiByZXNwb25zZSBoZWFkZXJzIChzZWUgW3Jlc3BvbnNlSGVhZGVyc10oI3Jlc3BvbnNlaGVhZGVycykgYmVsb3cpCiAgKiBgcmVzcG9uc2VNb2RlbHNgOiBhIGxpc3Qgb2YgbW9kZWxzIHRvIGRlc2NyaWJlIHRoZSByZXF1ZXN0IGJvZGllcyAoc2VlIFtyZXNwb25zZU1vZGVsc10oI3Jlc3BvbnNlbW9kZWxzKSBiZWxvdykgZm9yIGVhY2ggYENvbnRlbnQtVHlwZWAKCmBgYHltbApmdW5jdGlvbnM6CiAgY3JlYXRlVXNlcjoKICAgIGhhbmRsZXI6ICJoYW5kbGVyLmNyZWF0ZSIKICAgIGV2ZW50czoKICAgICAgLSBodHRwOgogICAgICAgIHBhdGg6ICJjcmVhdGUiCiAgICAgICAgbWV0aG9kOiAicG9zdCIKICAgICAgICBkb2N1bWVudGF0aW9uOgogICAgICAgICAgc3VtbWFyeTogIkNyZWF0ZSBVc2VyIgogICAgICAgICAgZGVzY3JpcHRpb246ICJDcmVhdGVzIGEgdXNlciBhbmQgdGhlbiBzZW5kcyBhIGdlbmVyYXRlZCBwYXNzd29yZCBlbWFpbCIKICAgICAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgICAgICBkZXNjcmlwdGlvbjogIkEgdXNlciBpbmZvcm1hdGlvbiBvYmplY3QiCiAgICAgICAgICByZXF1ZXN0TW9kZWxzOgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOiAiUHV0RG9jdW1lbnRSZXF1ZXN0IgogICAgICAgICAgcGF0aFBhcmFtczoKICAgICAgICAgICAgLSBuYW1lOiAidXNlcm5hbWUiCiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJUaGUgdXNlcm5hbWUgZm9yIGEgdXNlciB0byBjcmVhdGUiCiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogInN0cmluZyIKICAgICAgICAgICAgICAgIHBhdHRlcm46ICJeWy1hLXowLTlfXSskIgogICAgICAgICAgcXVlcnlQYXJhbXM6CiAgICAgICAgICAgIC0gbmFtZTogIm1lbWJlcnNoaXBUeXBlIgogICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiVGhlIHVzZXIncyBNZW1iZXJzaGlwIFR5cGUiCiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogInN0cmluZyIKICAgICAgICAgICAgICAgIGVudW06CiAgICAgICAgICAgICAgICAgIC0gInByZW1pdW0iCiAgICAgICAgICAgICAgICAgIC0gInN0YW5kYXJkIgogICAgICAgICAgY29va2llUGFyYW1zOgogICAgICAgICAgICAtIG5hbWU6ICJTZXNzaW9uSWQiCiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICJBIFNlc3Npb24gSUQgdmFyaWFibGUiCiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgdHlwZTogInN0cmluZyIKICAgICAgICAgIG1ldGhvZFJlc3BvbnNlczoKICAgICAgICAgICAgLSBzdGF0dXNDb2RlOiAyMDEKICAgICAgICAgICAgICByZXNwb25zZUJvZHk6CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkEgdXNlciBvYmplY3QgYWxvbmcgd2l0aCBnZW5lcmF0ZWQgQVBJIEtleXMiCiAgICAgICAgICAgICAgcmVzcG9uc2VNb2RlbHM6CiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOiAiUHV0RG9jdW1lbnRSZXNwb25zZSIKICAgICAgICAgICAgLSBzdGF0dXNDb2RlOiA1MDAKICAgICAgICAgICAgICByZXNwb25zZUJvZHk6CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkFuIGVycm9yIG1lc3NhZ2Ugd2hlbiBjcmVhdGluZyBhIG5ldyB1c2VyIgogICAgICAgICAgICAgIHJlc3BvbnNlTW9kZWxzOgogICAgICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjogIkVycm9yUmVzcG9uc2UiCmBgYAoKIyMjIyBgcXVlcnlQYXJhbXNgCgpRdWVyeSBwYXJhbWV0ZXJzIGNhbiBiZSBkZXNjcmliZWQgYXMgZm9sbG93OgoKKiBgbmFtZWA6IHRoZSBuYW1lIG9mIHRoZSBxdWVyeSB2YXJpYWJsZQoqIGBkZXNjcmlwdGlvbmA6IGEgZGVzY3JpcHRpb24gb2YgdGhlIHF1ZXJ5IHZhcmlhYmxlCiogYHJlcXVpcmVkYDogd2hldGhlciB0aGUgcXVlcnkgcGFyYW1ldGVyIGlzIG1hbmRhdG9yeSAoYm9vbGVhbikKKiBgc2NoZW1hYDogSlNPTiBzY2hlbWEgKGlubGluZSBvciBmaWxlKQoKYGBgeW1sCnF1ZXJ5UGFyYW1zOgogIC0gbmFtZTogImZpbHRlciIKICAgIGRlc2NyaXB0aW9uOiAiVGhlIGZpbHRlciBwYXJhbWV0ZXIiCiAgICByZXF1aXJlZDogdHJ1ZQogICAgc2NoZW1hOgogICAgICB0eXBlOiAic3RyaW5nIgpgYGAKCiMjIyMgYHBhdGhQYXJhbXNgCgpQYXRoIHBhcmFtZXRlcnMgY2FuIGJlIGRlc2NyaWJlZCBhcyBmb2xsb3c6CgoqIGBuYW1lYDogdGhlIG5hbWUgb2YgdGhlIHF1ZXJ5IHZhcmlhYmxlCiogYGRlc2NyaXB0aW9uYDogYSBkZXNjcmlwdGlvbiBvZiB0aGUgcXVlcnkgdmFyaWFibGUKKiBgc2NoZW1hYDogSlNPTiBzY2hlbWEgKGlubGluZSBvciBmaWxlKQoKYGBgeW1sCnBhdGhQYXJhbXM6CiAgLSBuYW1lOiAidXNlcm5hbWVJZCIKICAgIGRlc2NyaXB0aW9uOiAiVGhlIHVzZXJuYW1lSWQgcGFyYW1ldGVyIgogICAgc2NoZW1hOgogICAgICB0eXBlOiAic3RyaW5nIgpgYGAKCiMjIyMgYGNvb2tpZVBhcmFtc2AKCkNvb2tpZSBwYXJhbWV0ZXJzIGNhbiBiZSBkZXNjcmliZWQgYXMgZm9sbG93OgoKKiBgbmFtZWA6IHRoZSBuYW1lIG9mIHRoZSBxdWVyeSB2YXJpYWJsZQoqIGBkZXNjcmlwdGlvbmA6IGEgZGVzY3JpcHRpb24gb2YgdGhlIHF1ZXJ5IHZhcmlhYmxlCiogYHJlcXVpcmVkYDogd2hldGhlciB0aGUgcXVlcnkgcGFyYW1ldGVyIGlzIG1hbmRhdG9yeSAoYm9vbGVhbikKKiBgc2NoZW1hYDogSlNPTiBzY2hlbWEgKGlubGluZSBvciBmaWxlKQoKYGBgeW1sCmNvb2tpZVBhcmFtczoKICAtIG5hbWU6ICJzZXNzaW9uSWQiCiAgICBkZXNjcmlwdGlvbjogIlRoZSBzZXNzaW9uSWQgcGFyYW1ldGVyIgogICAgcmVxdWlyZWQ6IHRydWUKICAgIHNjaGVtYToKICAgICAgdHlwZTogInN0cmluZyIKYGBgCgojIyMjIGByZXF1ZXN0TW9kZWxzYAoKVGhlIGByZXF1ZXN0TW9kZWxzYCBwcm9wZXJ0eSBhbGxvd3MgeW91IHRvIGRlZmluZSBtb2RlbHMgZm9yIHRoZSBIVFRQIFJlcXVlc3Qgb2YgdGhlIGZ1bmN0aW9uIGV2ZW50LiBZb3UgY2FuIGRlZmluZSBhIGRpZmZlcmVudCBtb2RlbCBmb3IgZWFjaCBkaWZmZXJlbnQgYENvbnRlbnQtVHlwZWAuIFlvdSBjYW4gZGVmaW5lIGEgcmVmZXJlbmNlIHRvIHRoZSByZWxldmFudCByZXF1ZXN0IG1vZGVsIG5hbWVkIGluIHRoZSBgbW9kZWxzYCBzZWN0aW9uIG9mIHlvdXIgY29uZmlndXJhdGlvbiAoc2VlIFtEZWZpbmluZyBNb2RlbHNdKCNtb2RlbHMpIHNlY3Rpb24pLgoKYGBgeW1sCnJlcXVlc3RNb2RlbHM6CiAgYXBwbGljYXRpb24vanNvbjogIkNyZWF0ZVJlcXVlc3QiCiAgYXBwbGljYXRpb24veG1sOiAiQ3JlYXRlUmVxdWVzdFhNTCIKYGBgCgojIyMjIGBtZXRob2RSZXNwb25zZXNgCgpZb3UgY2FuIGRlZmluZSB0aGUgcmVzcG9uc2Ugc2NoZW1hcyBieSBkZWZpbmluZyBwcm9wZXJ0aWVzIGZvciB5b3VyIGZ1bmN0aW9uIGV2ZW50LgoKRm9yIGFuIGV4YW1wbGUgb2YgYSBgbWV0aG9kUmVzcG9uc2VzYCBjb25maWd1cmF0aW9uIGZvciBhbiBldmVudCBzZWUgYmVsb3c6CgpgYGB5bWwKbWV0aG9kUmVzcG9uc2U6CiAgLSBzdGF0dXNDb2RlOiAyMDAKICAgIHJlc3BvbnNlSGVhZGVyczoKICAgICAgLSBuYW1lOiAiQ29udGVudC1UeXBlIgogICAgICAgIGRlc2NyaXB0aW9uOiAiQ29udGVudCBUeXBlIGhlYWRlciIKICAgICAgICBzY2hlbWE6CiAgICAgICAgICB0eXBlOiAic3RyaW5nIgogICAgcmVzcG9uc2VNb2RlbHM6CiAgICAgIGFwcGxpY2F0aW9uL2pzb246ICJDcmVhdGVSZXNwb25zZSIKICAgICAgYXBwbGljYXRpb24veG1sOiAiQ3JlYXRlUmVzcG9uc2VYTUwiCmBgYAoKIyMjIyMgYHJlc3BvbnNlTW9kZWxzYAoKVGhlIGByZXNwb25zZU1vZGVsc2AgcHJvcGVydHkgYWxsb3dzIHlvdSB0byBkZWZpbmUgbW9kZWxzIGZvciB0aGUgSFRUUCBSZXNwb25zZSBvZiB0aGUgZnVuY3Rpb24gZXZlbnQuIFlvdSBjYW4gZGVmaW5lIGEgZGlmZmVyZW50IG1vZGVsIGZvciBlYWNoIGRpZmZlcmVudCBgQ29udGVudC1UeXBlYC4gWW91IGNhbiBkZWZpbmUgYSByZWZlcmVuY2UgdG8gdGhlIHJlbGV2YW50IHJlc3BvbnNlIG1vZGVsIG5hbWVkIGluIHRoZSBgbW9kZWxzYCBzZWN0aW9uIG9mIHlvdXIgY29uZmlndXJhdGlvbiAoc2VlIFtEZWZpbmluZyBNb2RlbHNdKCNtb2RlbHMpIHNlY3Rpb24pLgoKYGBgeW1sCnJlc3BvbnNlTW9kZWxzOgogIGFwcGxpY2F0aW9uL2pzb246ICJDcmVhdGVSZXNwb25zZSIKICBhcHBsaWNhdGlvbi94bWw6ICJDcmVhdGVSZXNwb25zZVhNTCIKYGBgCgojIyMjIyBgcmVzcG9uc2VIZWFkZXJzYCBhbmQgYHJlcXVlc3RIZWFkZXJzYAoKVGhlIGByZXNwb25zZUhlYWRlcnMvcmVxdWVzdEhlYWRlcnNgIHNlY3Rpb24gb2YgdGhlIGNvbmZpZ3VyYXRpb24gYWxsb3dzIHlvdSB0byBkZWZpbmUgdGhlIEhUVFAgaGVhZGVycyBmb3IgdGhlIGZ1bmN0aW9uIGV2ZW50LgoKVGhlIGF0dHJpYnV0ZXMgZm9yIGEgaGVhZGVyIGFyZSBhcyBmb2xsb3c6CgoqIGBuYW1lYDogdGhlIG5hbWUgb2YgdGhlIEhUVFAgSGVhZGVyCiogYGRlc2NyaXB0aW9uYDogYSBkZXNjcmlwdGlvbiBvZiB0aGUgSFRUUCBIZWFkZXIKKiBgc2NoZW1hYDogSlNPTiBzY2hlbWEgKGlubGluZSBvciBmaWxlKQoKYGBgeW1sCnJlc3BvbnNlSGVhZGVyczoKICAtIG5hbWU6ICJDb250ZW50LVR5cGUiCiAgICBkZXNjcmlwdGlvbjogIkNvbnRlbnQgVHlwZSBoZWFkZXIiCiAgICBzY2hlbWE6CiAgICAgIHR5cGU6ICJzdHJpbmciCnJlcXVlc3RIZWFkZXJzOgogIC0gbmFtZTogIkNvbnRlbnQtVHlwZSIKICAgIGRlc2NyaXB0aW9uOiAiQ29udGVudCBUeXBlIGhlYWRlciIKICAgIHNjaGVtYToKICAgICAgdHlwZTogInN0cmluZyIKYGBgCgojIyBFeGFtcGxlIGNvbmZpZ3VyYXRpb24KClBsZWFzZSB2aWV3IHRoZSBleGFtcGxlIFtzZXJ2ZXJsZXNzLnltbF0odGVzdC9wcm9qZWN0L3NlcnZlcmxlc3MueW1sKS4KCiMjIEluc3RhbGwKClRoaXMgcGx1Z2luIHdvcmtzIGZvciBTZXJ2ZXJsZXNzIDEueCBhbmQgdXAuIFNlcnZlcmxlc3MgMC41IGlzIG5vdCBzdXBwb3J0ZWQuCgpUbyBhZGQgdGhpcyBwbHVnaW4gdG8geW91ciBwYWNrYWdlLmpzb246CgoqKlVzaW5nIG5wbToqKgpgYGBiYXNoCm5wbSBpbnN0YWxsIHNlcnZlcmxlc3Mtb3BlbmFwaS1kb2N1bWVudGF0aW9uIC0tc2F2ZS1kZXYKYGBgCgoqKlVzaW5nIFlhcm46KioKYGBgYmFzaAp5YXJuIGFkZCBzZXJ2ZXJsZXNzLW9wZW5hcGktZG9jdW1lbnRhdGlvbiAtLWRldgpgYGAKCk5leHQgeW91IG5lZWQgdG8gYWRkIHRoZSBwbHVnaW4gdG8gdGhlIGBwbHVnaW5zYCBzZWN0aW9uIG9mIHlvdXIgYHNlcnZlcmxlc3MueW1sYCBmaWxlLgoKYGBgeW1sCnBsdWdpbnM6CiAgLSBzZXJ2ZXJsZXNzLW9wZW5hcGktZG9jdW1lbnRhdGlvbgpgYGAKCllvdSBjYW4gY29uZmlybSB0aGUgcGx1Z2luIGlzIGNvcnJlY3RseSBpbnN0YWxsZWQgYnkgcnVubmluZzoKCmBgYGJhc2gKc2VydmVybGVzcyB8IGdyZXAgLWkgIlNlcnZlcmxlc3NPcGVuQVBJRG9jdW1lbnRhdGlvbiIKYGBgCgpJdCBzaG91bGQgcmV0dXJuIGBTZXJ2ZXJsZXNzT3BlbkFQSURvY3VtZW50YXRpb25gIGFzIG9uZSBvZiB0aGUgcGx1Z2lucyBvbiB0aGUgbGlzdC4KCj4gTm90ZTogQWRkIHRoaXMgcGx1Z2luIF9hZnRlcl8gYHNlcnZlcmxlc3Mtb2ZmbGluZWAgdG8gcHJldmVudCBpc3N1ZXMgd2l0aCBgU3RyaW5nLnJlcGxhY2VBbGxgIGJlaW5nIG92ZXJyaWRkZW4gaW5jb3JyZWN0bHkuCgojIyBMaWNlbnNlCgpNSVQK readmeEtag: '"1ba5c61b0e0ab2906c7c7041c4ccdcce5fb7f172"' readmeLastModified: Fri, 22 Jun 2018 11:16:06 GMT repositoryId: 96071001 description: >- Serverless 1.0 plugin to generate OpenAPI V3 documentation from serverless configuration created: '2017-07-03T04:44:51Z' updated: '2025-10-06T21:38:58Z' language: TypeScript archived: false stars: 96 watchers: 6 forks: 124 owner: temando logo: https://avatars.githubusercontent.com/u/2232135?v=4 license: MIT repoEtag: '"e798d4ad27b8dbaff9a60286f88f9642246fe1488568c2ecc9db869ed1c27255"' repoLastModified: Mon, 06 Oct 2025 21:38:58 GMT id: 6b703add76932c2d3d042f15bd0fe577 - source: IMPLEMENTATIONS.md name: zero-rails_openapi homepage: https://github.com/zhandao/zero-rails_openapi language: Ruby source_description: >- Provide concise DSL for generating the OpenAPI Specification 3 documentation file for Rails application category: Code Generators foundInMaster: true repository: https://github.com/zhandao/zero-rails_openapi repositoryMetadata: base64Readme: >- IyBaUk86IE9wZW5BcGkgMyBKU09OLURvYyBHZW5lcmF0b3IgZm9yIFJhaWxzCgogIFshW0dlbSBWZXJzaW9uXShodHRwczovL2JhZGdlLmZ1cnkuaW8vcmIvemVyby1yYWlsc19vcGVuYXBpLnN2ZyldKGh0dHBzOi8vYmFkZ2UuZnVyeS5pby9yYi96ZXJvLXJhaWxzX29wZW5hcGkpCiAgWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvemhhbmRhby96ZXJvLXJhaWxzX29wZW5hcGkuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvemhhbmRhby96ZXJvLXJhaWxzX29wZW5hcGkpCiAgWyFbTWFpbnRhaW5hYmlsaXR5XShodHRwczovL2FwaS5jb2RlY2xpbWF0ZS5jb20vdjEvYmFkZ2VzLzQ3MWZkNjBmNmViN2IwMTljZWVkL21haW50YWluYWJpbGl0eSldKGh0dHBzOi8vY29kZWNsaW1hdGUuY29tL2dpdGh1Yi96aGFuZGFvL3plcm8tcmFpbHNfb3BlbmFwaS9tYWludGFpbmFiaWxpdHkpCiAgWyFbVGVzdCBDb3ZlcmFnZV0oaHR0cHM6Ly9hcGkuY29kZWNsaW1hdGUuY29tL3YxL2JhZGdlcy80NzFmZDYwZjZlYjdiMDE5Y2VlZC90ZXN0X2NvdmVyYWdlKV0oaHR0cHM6Ly9jb2RlY2xpbWF0ZS5jb20vZ2l0aHViL3poYW5kYW8vemVyby1yYWlsc19vcGVuYXBpL3Rlc3RfY292ZXJhZ2UpCgogIENvbmNpc2UgRFNMIGZvciBnZW5lcmF0aW5nIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAzICgqKk9BUzMqKiwgZm9ybWVybHkgU3dhZ2dlcjMpIEpTT04gZG9jdW1lbnRhdGlvbiBmb3IgUmFpbHMgYXBwbGljYXRpb24uCiAgCiAgYGBgcnVieQogIGNsYXNzIEFwaTo6RXhhbXBsZXNDb250cm9sbGVyIDwgQXBpQ29udHJvbGxlcgogICAgYXBpIDp1cGRhdGUsICdQT1NUIHVwZGF0ZSBzb21lIHRoaW5nJyBkbwogICAgICBwYXRoICA6aWQsIEludGVnZXIKICAgICAgcXVlcnkgOnRva2VuLCBTdHJpbmcsIGRlc2M6ICdhcGkgdG9rZW4nLCBsZW5ndGg6IDE2CiAgICAgIGZvcm0gZGF0YTogeyBwaG9uZTogU3RyaW5nIH0KICAgIGVuZAogIGVuZAogIGBgYAoKIyMgQ29udHJpYnV0aW5nCgogICoqSGksIGhlcmUgaXMgWmhhbkRhbyA9IOKWvSA9ICAKICBJdCBtYXkgYmUgYSB2ZXJ5IHVzZWZ1bCB0b29sIGlmIHlvdSB3YW50IHRvIHdyaXRlIEFQSSBkb2N1bWVudCBjbGVhcmx5LiAgCiAgSSdtIGxvb2tpbmcgZm9yd2FyZCB0byB5b3VyIGlzc3VlIGFuZCBQUiEqKgogIAogIChUZXN0IGNhc2VzIGFyZSByaWNoLCBsaWtlOiBbYXBpIERTTF0oc3BlYy9hcGlfc3BlYy5yYikgYW5kIFtzY2hlbWEgT2JqXShzcGVjL29hc19vYmpzL3NjaGVtYV9vYmpfc3BlYy5yYikpCgojIyBUYWJsZSBvZiBDb250ZW50cwoKLSBbQWJvdXQgT0FTXSgjYWJvdXQtb2FzKSAoT3BlbkFQSSBTcGVjaWZpY2F0aW9uKQotIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCi0gW0NvbmZpZ3VyZV0oI2NvbmZpZ3VyZSkKLSBbRFNMIFVzYWdlXSgjZHNsLXVzYWdlKQogIC0gW2EuQmFzaWMgRFNMXSgjYmFzaWMtZHNsKQogICAgLSBbYS4xLiByb3V0ZV9iYXNlXSgjMS1yb3V0ZV9iYXNlLXJlcXVpcmVkLWlmLXlvdXJlLW5vdC13cml0aW5nLWRzbC1pbi1jb250cm9sbGVyKQogICAgLSBbYS4yLiBkb2NfdGFnXSgjMi1kb2NfdGFnLW9wdGlvbmFsKQogICAgLSBbYS4zLiBjb21wb25lbnRzXSgjMy1jb21wb25lbnRzLW9wdGlvbmFsKQogICAgLSBbYS40LiBhcGldKCM0LWFwaS1yZXF1aXJlZCkKICAgIC0gW2EuNS4gYXBpX2RyeV0oIzUtYXBpX2RyeS1vcHRpb25hbCkKICAtIFtiLiBEU0xzIHdyaXR0ZW4gaW5zaWRlIGBhcGlgIGFuZCBgYXBpX2RyeWAncyBibG9ja10oI2RzbHMtd3JpdHRlbi1pbnNpZGUtYXBpLWFuZC1hcGlfZHJ5cy1ibG9jaykKICAgIC0gW2IuMS4gdGhpc19hcGlfaXNfaW52YWxpZCFdKCMxLXRoaXNfYXBpX2lzX2ludmFsaWQtYW5kLWl0cy1hbGlhc2VzKQogICAgLSBbYi4yLiBkZXNjXSgjMi1kZXNjLWRlc2NyaXB0aW9uLWZvci10aGUtY3VycmVudC1hcGkpCiAgICAtIFtiLjMuIHBhcmFtIGZhbWlseSBtZXRob2RzXSgjMy1wYXJhbS1mYW1pbHktbWV0aG9kcy1vYXMtLS1wYXJhbWV0ZXItb2JqZWN0KQogICAgLSBbYi40LiByZXF1ZXN0X2JvZHkgZmFtaWx5IG1ldGhvZHNdKCM0LXJlcXVlc3RfYm9keS1mYW1pbHktbWV0aG9kcy1vYXMtLS1yZXF1ZXN0LWJvZHktb2JqZWN0KQogICAgLSBbYi41LiByZXNwb25zZSBmYW1pbHkgbWV0aG9kc10oIzUtcmVzcG9uc2UtZmFtaWx5LW1ldGhvZHMtb2FzLS0tcmVzcG9uc2Utb2JqZWN0KQogICAgLSBbYi42LiBjYWxsYmFja10oIzYtY2FsbGJhY2stb2FzLS0tY2FsbGJhY2stb2JqZWN0KQogICAgLSBbYi43LiBBdXRoZW50aWNhdGlvbiBhbmQgQXV0aG9yaXphdGlvbl0oIzctYXV0aGVudGljYXRpb24tYW5kLWF1dGhvcml6YXRpb24pCiAgICAtIFtiLjguIHNlcnZlcl0oIzgtb3ZlcnJpZGluZy1nbG9iYWwtc2VydmVycy1ieS1zZXJ2ZXIpCiAgICAtIFtiLjkuIGRyeV0oIzktZHJ5KQogIC0gW2MuIERTTHMgd3JpdHRlbiBpbnNpZGUgYGNvbXBvbmVudHNgJ3MgYmxvY2tdKCNkc2xzLXdyaXR0ZW4taW5zaWRlLWNvbXBvbmVudHNzLWJsb2NrKQogIC0gW2QuIFNjaGVtYSBhbmQgVHlwZV0oI3NjaGVtYS1hbmQtdHlwZSkKICAgIC0gW2QuMS4gKFNjaGVtYSkgVHlwZV0oI3NjaGVtYS10eXBlKQogICAgLSBbZC4yLiBTY2hlbWFdKCNzY2hlbWEpCiAgICAtIFtkLjMuIENvbWJpbmVkIFNjaGVtYV0oI2NvbWJpbmVkLXNjaGVtYSkKLSBbUnVuISAtIEdlbmVyYXRlIEpTT04gZG9jdW1lbnRhdGlvbiBmaWxlXSgjcnVuLS0tZ2VuZXJhdGUtanNvbi1kb2N1bWVudGF0aW9uLWZpbGUpCi0gW1VzZSBTd2FnZ2VyIFVJKHZlcnkgYmVhdXRpZnVsIHdlYiBwYWdlKSB0byBzaG93IHlvdXIgRG9jdW1lbnRhdGlvbl0oI3VzZS1zd2FnZ2VyLXVpdmVyeS1iZWF1dGlmdWwtd2ViLXBhZ2UtdG8tc2hvdy15b3VyLWRvY3VtZW50YXRpb24pCi0gW1RyaWNrc10oI3RyaWNrcykKICAgIC0gW1dyaXRlIERTTCBzb21ld2hlcmUgZWxzZV0oI3RyaWNrMS0tLXdyaXRlLXRoZS1kc2wtc29tZXdoZXJlLWVsc2UpCiAgICAtIFtHbG9iYWwgRFJZaW5nXSgjdHJpY2syLS0tZ2xvYmFsLWRyeWluZykKICAgIC0gW0F1dG8gZ2VuZXJhdGUgZGVzY3JpcHRpb24gZm9ybSBlbnVtXSgjdHJpY2szLS0tYXV0by1nZW5lcmF0ZS1kZXNjcmlwdGlvbi1mb3JtLWVudW0pCiAgICAtIFtTa2lwIG9yIFVzZSBwYXJhbWV0ZXJzIGRlZmluZSBpbiBgYXBpX2RyeWBdKCN0cmljazQtLS1za2lwLW9yLXVzZS1wYXJhbWV0ZXJzLWRlZmluZS1pbi1hcGlfZHJ5KQogICAgLSBbQXR1byBHZW5lcmF0ZSBpbmRleC9zaG93IEFjdGlvbnMncyBSZXNwb25zZXMgQmFzZWQgb24gREIgU2NoZW1hXSgjdHJpY2s1LS0tYXV0by1nZW5lcmF0ZS1pbmRleHNob3ctYWN0aW9uc3MtcmVzcG9uc2UtdHlwZXMtYmFzZWQtb24tZGItc2NoZW1hKQotIFtUcm91Ymxlc2hvb3RpbmddKCN0cm91Ymxlc2hvb3RpbmcpCi0gW0Fib3V0IGBPcGVuQXBpLmRvY3NgIGFuZCBgT3BlbkFwaS5yb3V0ZXNfaW5kZXhgXSgjYWJvdXQtb3BlbmFwaWRvY3MtYW5kLW9wZW5hcGlyb3V0ZXNfaW5kZXgpCgojIyBBYm91dCBPQVMKCiAgRXZlcnl0aGluZyBhYm91dCBPQVMzIGlzIG9uIFtPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvT3BlbkFQSS5uZXh0L3ZlcnNpb25zLzMuMC4wLm1kKQoKICBZb3UgY2FuIGdldHRpbmcgc3RhcnRlZCBmcm9tIFtzd2FnZ2VyLmlvXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2Jhc2ljLXN0cnVjdHVyZS8pCgogICoqSSBzdWdnZXN0IHlvdSBzaG91bGQgdW5kZXJzdGFuZCB0aGUgYmFzaWMgc3RydWN0dXJlIG9mIE9BUzMgYXQgbGVhc3QuKioKICBzdWNoIGFzIGNvbXBvbmVudCAoY2FuIGhlbHAgeW91IHJldXNlIERTTCBjb2RlLCB3aGVuIHlvdXIgYXBpcyBhcmUgdXNlZCB3aXRoIHRoZQogIHNhbWUgZGF0YSBzdHJ1Y3R1cmUpLgoKIyMgSW5zdGFsbGF0aW9uCgogIEFkZCB0aGlzIGxpbmUgdG8geW91ciBSYWlscydzIEdlbWZpbGU6CgogIGBgYHJ1YnkKICBnZW0gJ3plcm8tcmFpbHNfb3BlbmFwaScKICAjIG9yCiAgZ2VtICd6ZXJvLXJhaWxzX29wZW5hcGknLCBnaXRodWI6ICd6aGFuZGFvL3plcm8tcmFpbHNfb3BlbmFwaScKICBgYGAKCiAgQW5kIHRoZW4gZXhlY3V0ZToKCiAgICAgICQgYnVuZGxlCgojIyBDb25maWd1cmUKCiAgQ3JlYXRlIGFuIGluaXRpYWxpemVyLCBjb25maWd1cmUgWlJPIGFuZCBkZWZpbmUgeW91ciBPcGVuQXBpIGRvY3VtZW50cy4KCiAgVGhpcyBpcyB0aGUgc2ltcGxlc3QgZXhhbXBsZToKCiAgYGBgcnVieQogICMgaW4gY29uZmlnL2luaXRpYWxpemVycy9vcGVuX2FwaS5yYgogIHJlcXVpcmUgJ29wZW5fYXBpJwoKICBPcGVuQXBpOjpDb25maWcuY2xhc3NfZXZhbCBkbwogICAgIyBQYXJ0IDE6IGNvbmZpZ3Mgb2YgdGhpcyBnZW0KICAgIHNlbGYuZmlsZV9vdXRwdXRfcGF0aCA9ICdwdWJsaWMvb3Blbl9hcGknCgogICAgIyBQYXJ0IDI6IGNvbmZpZyAoRFNMKSBmb3IgZ2VuZXJhdGluZyBPcGVuQXBpIGluZm8KICAgIG9wZW5fYXBpIDpkb2NfbmFtZSwgYmFzZV9kb2NfY2xhc3NlczogW0FwaURvY10KICAgIGluZm8gdmVyc2lvbjogJzEuMC4wJywgdGl0bGU6ICdIb21lcGFnZSBBUElzJyMsIGRlc2NyaXB0aW9uOiAuLgogICAgIyBzZXJ2ZXIgJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCcsIGRlc2M6ICdJbnRlcm5hbCBzdGFnaW5nIHNlcnZlciBmb3IgdGVzdGluZycKICAgICMgYmVhcmVyX2F1dGggOkF1dGhvcml6YXRpb24KICBlbmQKICBgYGAKICAKIyMjIFBhcnQgMTogY29uZmlncyBvZiB0aGlzIGdlbQoKICAxLiBgZmlsZV9vdXRwdXRfcGF0aGAocmVxdWlyZWQpOiBUaGUgbG9jYXRpb24gd2hlcmUgLmpzb24gZG9jIGZpbGUgd2lsbCBiZSBvdXRwdXQuCiAgMi4gYGRlZmF1bHRfcnVuX2RyeWA6IGRlZmF1bHRzIHRvIHJ1biBkcnkgYmxvY2tzIGV2ZW4gaWYgdGhlIGBkcnlgIG1ldGhvZCBpcyBub3QgY2FsbGVkIGluIHRoZSAoQmFzaWMpIERTTCBibG9jay4gZGVmYXVsdHMgdG8gYGZhbHNlYC4KICAzLiBgZG9jX2xvY2F0aW9uYDogZ2l2ZSByZWd1bGFyIGV4cHJlc3Npb25zIGZvciBmaWxlIG9yIGZvbGRlciBwYXRocy4gYERpcltkb2NfbG9jYXRpb25dYCB3aWxsIGJlIGByZXF1aXJlYCBiZWZvcmUgZG9jdW1lbnQgZ2VuZXJhdGVzLgogICAgICB0aGlzIG9wdGlvbiBpcyBvbmx5IGZvciBub3Qgd3JpdGluZyBzcGVjIGluIGNvbnRyb2xsZXJzLgogIDQuIGByYWlsc19yb3V0ZXNfZmlsZWA6IGdpdmUgYSB0eHQncyBmaWxlIHBhdGggKHdoaWNoJ3MgY29udGVudCBpcyB0aGUgY29weSBvZiBgcmFpbHMgcm91dGVzYCdzIG91dHB1dCkuIFRoaXMgd2lsbCBzcGVlZCB1cCBkb2N1bWVudCBnZW5lcmF0aW9uLiAKICA1LiBgbW9kZWxfYmFzZWA6IFRoZSBwYXJlbnQgY2xhc3Mgb2YgbW9kZWxzIGluIHlvdXIgYXBwbGljYXRpb24uIFRoaXMgb3B0aW9uIGlzIGZvciBhdXRvIGxvYWRpbmcgc2NoZW1hIGZyb20gZGF0YWJhc2UuCiAgNi4gYGZpbGVfZm9ybWF0YAoKIyMjIFBhcnQgMjogY29uZmlnIChEU0wpIGZvciBnZW5lcmF0aW5nIE9wZW5BcGkgaW5mbwoKICBgYGBydWJ5CiAgIyAxLiBvcGVuX2FwaQogICMgICBiYXNlX2RvY19jbGFzc2VzIHNob3VsZCBiZSBhbiBhcnJheSBvZiBiYXNlIGNsYXNzZXMgb2YgdGhlIGNsYXNzZXMgeW91IHdyaXRlIHRoZSBPcGVuQXBpIHNwZWMgaW4sIAogICMgICBsaWtlIFtBY3Rpb25Db250cm9sbGVyOjpCYXNlXSAoaWYgeW91IHdyaXRlIHNwZWMgaW4gY29udHJvbGxlcnMpLgogIG9wZW5fYXBpIGRvY19uYW1lLCBiYXNlX2RvY19jbGFzc2VzOiBbXQogIAogICMgMi4gaW5mbwogIGluZm8gdmVyc2lvbjosIHRpdGxlOiwgZGVzYzogJycsICoqYWRkaXRpb24KICAKICAjIDMuIHNlcnZlcgogICMgNC4gc2VjdXJpdHlfc2NoZW1lIC8gYmFzZV9hdXRoIC8gYmVhcmVyX2F1dGggLyBhcGlfa2V5CiAgIyA1LiBnbG9iYWxfc2VjdXJpdHlfcmVxdWlyZQogIGBgYAoKICBTZWUgYWxsIHRoZSBEU0xzOiBbY29uZmlnX2RzbC5yYl0obGliL29wZW5fYXBpL2NvbmZpZ19kc2wucmIpCgojIyBEU0wgVXNhZ2UKCiAgVGhlcmUgYXJlIHR3byBraW5kcyBvZiBEU0wgZm9yIHRoaXMgZ2VtOiAqKmJhc2ljKiogYW5kICoqaW5zaWRlIGJhc2ljKiouCiAgMS4gQmFzaWMgRFNMcyBhcmUgY2xhc3MgbWV0aG9kcyB3aGljaCBpcyBmb3IgZGVjbGFyaW5nIHlvdXIgQVBJcywgY29tcG9uZW50cywgYW5kIHNwZWMgY29kZSBEUllpbmcgLi4uCiAgMi4gRFNMcyB3cml0dGVuIGluc2lkZSB0aGUgYmxvY2sgb2YgQmFzaWMgRFNMcywgaXMgZm9yIGRlY2xhcmluZyB0aGUgcGFyYW1ldGVycywgcmVzcG9uc2VzIChhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpZWQgQVBJIGFuZCBjb21wb25lbnQuCgojIyMgRmlyc3Qgb2YgYWxsLCBgaW5jbHVkZSBPcGVuQXBpOjpEU0xgIGluIHlvdXIgYmFzZSBjbGFzcyAod2hpY2ggaXMgZm9yIHdyaXRpbmcgc3BlYyk6CgogIEZvciBleGFtcGxlOgogIGBgYHJ1YnkKICAjIGluIGFwcC9jb250cm9sbGVycy9hcGkvYXBpX2NvbnRyb2xsZXIucmIKICBjbGFzcyBBcGlDb250cm9sbGVyIDwgQWN0aW9uQ29udHJvbGxlcjo6QVBJCiAgICBpbmNsdWRlIE9wZW5BcGk6OkRTTAogIGVuZAogIGBgYAoKIyMjIERTTCBVc2FnZSBFeGFtcGxlCgogIEhlcmUgaXMgdGhlIHNpbXBsZXN0IHVzYWdlOgoKICBgYGBydWJ5CiAgY2xhc3MgQXBpOjpFeGFtcGxlc0NvbnRyb2xsZXIgPCBBcGlDb250cm9sbGVyCiAgICBhcGkgOmluZGV4LCAnR0VUIGxpc3QnIGRvCiAgICAgIHF1ZXJ5IDpwYWdlLCBJbnRlZ2VyIywgcmFuZ2U6IHsgZ2U6IDEgfSwgZGVmYXVsdDogMQogICAgICBxdWVyeSA6cm93cywgSW50ZWdlciMsIGRlc2M6ICdwZXIgcGFnZScsIHJhbmdlOiB7IGdlOiAxIH0sIGRlZmF1bHQ6IDEwCiAgICBlbmQKICBlbmQKICBgYGAKCiMjIyBCYXNpYyBEU0wKCiAgW3NvdXJjZSBjb2RlXShsaWIvb3Blbl9hcGkvZHNsLnJiKQoKIyMjIyAoMSkgYHJvdXRlX2Jhc2VgIFtyZXF1aXJlZCBpZiB5b3UncmUgbm90IHdyaXRpbmcgRFNMIGluIGNvbnRyb2xsZXJdCgogIGBgYHJ1YnkKICAjICoqIE1ldGhvZCBTaWduYXR1cmUKICByb3V0ZV9iYXNlIHBhdGgKICAjICoqIFVzYWdlCiAgcm91dGVfYmFzZSAnYXBpL3YxL2V4YW1wbGVzJwogIGBgYAoKICBbVXNhZ2VdKCN0cmljazEtLS13cml0ZS10aGUtZHNsLXNvbWV3aGVyZS1lbHNlKTogd3JpdGUgdGhlIERTTCBzb21ld2hlcmUgZWxzZSB0byBzaW1wbGlmeSB0aGUgY3VycmVudCBjb250cm9sbGVyLgoKIyMjIyAoMikgYGRvY190YWdgIFtvcHRpb25hbF0KCiAgYGBgcnVieQogICMgKiogTWV0aG9kIFNpZ25hdHVyZQogIGRvY190YWcgbmFtZTogbmlsLCAqKnRhZ19pbmZvCiAgIyAqKiBVc2FnZQogIGRvY190YWcgbmFtZTogJ0V4YW1wbGVUYWdOYW1lJywgZGVzY3JpcHRpb246ICJFeGFtcGxlc0NvbnRyb2xsZXIncyBBUElzIiMsIGV4dGVybmFsRG9jczogLi4uCiAgYGBgCiAgVGhpcyBtZXRob2QgYWxsb3dzIHlvdSB0byBzZXQgdGhlIFRhZyAod2hpY2ggaXMgYSBub2RlIG9mIFtPcGVuQXBpIE9iamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9PcGVuQVBJLm5leHQvdmVyc2lvbnMvMy4wLjAubWQjb3BlbmFwaS1vYmplY3QpKQogIG9mIGFsbCB0aGUgQVBJcyBpbiB0aGUgY2xhc3MuCgogIFRhZydzIG5hbWUgZGVmYXVsdHMgdG8gY29udHJvbGxlcl9uYW1lLgoKIyMjIyAoMykgYGNvbXBvbmVudHNgIFtvcHRpb25hbF0KCiAgYGBgcnVieQogICMgKiogTWV0aG9kIFNpZ25hdHVyZQogIGNvbXBvbmVudHMoJmJsb2NrKQogICMgKiogVXNhZ2UKICBjb21wb25lbnRzIGRvCiAgICAjIChibG9jayBpbnNpZGUpIERTTCBmb3IgZGVmaW5pbmcgY29tcG9uZW50cwogICAgc2NoZW1hIDpEb2dTY2hlbWEgPT4gWyB7IGlkOiBJbnRlZ2VyLCBuYW1lOiBTdHJpbmcgfSwgZGZ0OiB7IGlkOiAxLCBuYW1lOiAncGV0JyB9IF0KICAgIHF1ZXJ5ISA6VWlkUXVlcnkgID0+IFsgOnVpZCwgU3RyaW5nLCBkZXNjOiAndWlkJyBdCiAgICByZXNwb25zZSA6QmFkUnFSZXNwID0+IFsgJ2JhZCByZXF1ZXN0JywgOmpzb24gXQogIGVuZAoKICAjIHRvIHVzZSBjb21wb25lbnQKICBhcGkgOmFjdGlvbiBkbwogICAgcXVlcnkgOmRvZ2UsIDpEb2dTY2hlbWEgIyB0byB1c2UgYSBTY2hlbWEgY29tcG9uZW50CiAgICBwYXJhbV9yZWYgOlVpZFF1ZXJ5ICAgICAjIHRvIHVzZSBhIFBhcmFtZXRlciBjb21wb25lbnQKICAgIHJlc3BvbnNlX3JlZiA6QmFkUnFSZXNwICMgdG8gdXNlIGEgUmVzcG9uc2UgY29tcG9uZW50CiAgZW5kCiAgYGBgCiAgRWFjaCBSZWZPYmogaXMgYXNzb2NpYXRlZCB3aXRoIGNvbXBvbmVudHMgdGhyb3VnaCBjb21wb25lbnQga2V5LgoKICBXZSBzdWdnZXN0IHRoYXQgY29tcG9uZW50IGtleXMgc2hvdWxkIGJlIGNhbWVsaXplZCwgYW5kICoqbXVzdCBiZSBTeW1ib2wqKi4KCiMjIyMgKDQpIGBhcGlgIFtyZXF1aXJlZF0KCiAgRm9yIGRlZmluaW5nIEFQSSAob3Igd2UgY291bGQgc2F5IGNvbnRyb2xsZXIgYWN0aW9uKS4KCiAgYGBgcnVieQogICMgKiogTWV0aG9kIFNpZ25hdHVyZQogIGFwaSBhY3Rpb25fbmFtZSwgc3VtbWFyeSA9ICcnLCBpZDogbmlsLCB0YWc6IG5pbCwgaHR0cDogbmlsLCBkcnk6IENvbmZpZy5kZWZhdWx0X3J1bl9kcnksICZibG9jawogICMgKiogVXNhZ2UKICBhcGkgOmluZGV4LCAnKFNVTU1BUlkpIHRoaXMgYXBpIGJsYWggYmxhaCAuLi4nLCAjIGJsb2NrIC4uLgogIGBgYAogIAogIFBhcmFtZXRlcnMgZXhwbGFuYXRpb246CiAgMS4gYWN0aW9uX25hbWU6IG11c3QgYmUgdGhlIHNhbWUgYXMgY29udHJvbGxlciBhY3Rpb24gbmFtZQogIDIuIGlkOiBvcGVyYXRpb25JZAogIDMuIGh0dHA6IEhUVFAgbWV0aG9kIChsaWtlOiAnR0VUJyBvciAnR0VUfFBPU1QnKQogIAojIyMjICg1KSBgYXBpX2RyeWAgW29wdGlvbmFsXQoKICBUaGlzIG1ldGhvZCBpcyBmb3IgRFJZaW5nLgogIFRoZSBibG9ja3MgcGFzc2VkIHRvIGBhcGlfZHJ5YCB3aWxsIGJlIGV4ZWN1dGVkIHRvIHRoZSBzcGVjaWZpZWQgQVBJcyB3aGljaCBhcmUgaGF2aW5nIHRoZSBhY3Rpb25zIG9yIHRhZ3MgaW4gdGhlIGNsYXNzLgoKICBgYGBydWJ5CiAgIyAqKiBNZXRob2QgU2lnbmF0dXJlCiAgYXBpX2RyeSBhY3Rpb25fb3JfdGFncyA9IDphbGwsICZibG9jawogICMgKiogVXNhZ2UKICBhcGlfZHJ5IDphbGwsICdjb21tb24gcmVzcG9uc2UnICMgYmxvY2sgLi4uCiAgYXBpX2RyeSA6aW5kZXggIyBibG9jayAuLi4KICBhcGlfZHJ5IDpUYWdBICMgYmxvY2sgLi4uCgogIGFwaV9kcnkgWzppbmRleCwgOnNob3ddIGRvCiAgICBxdWVyeSAjLi4uCiAgZW5kCiAgYGBgCiAgCiAgQW5kIHRoZW4geW91IHNob3VsZCBjYWxsIGBkcnlgIG1ldGhvZCAoW2RldGFpbGVkIGluZm9dKCM5LWRyeSkpIGZvciBleGVjdXRpbmcgdGhlIGRlY2xhcmVkIGRyeSBibG9ja3M6CiAgYGBgcnVieQogIGFwaSA6aW5kZXggZG8KICAgIGRyeQogIGVuZAogIGBgYAoKIyMjIERTTHMgd3JpdHRlbiBpbnNpZGUgW2FwaV0oIzQtYXBpLXJlcXVpcmVkKSBhbmQgW2FwaV9kcnldKCM1LWFwaV9kcnktb3B0aW9uYWwpJ3MgYmxvY2sKCiAgW3NvdXJjZSBjb2RlXShsaWIvb3Blbl9hcGkvZHNsL2FwaS5yYikKCiAgVGhlc2UgZm9sbG93aW5nIG1ldGhvZHMgaW4gdGhlIGJsb2NrIGRlc2NyaWJlIHRoZSBzcGVjaWZpZWQgQVBJIGFjdGlvbjogZGVzY3JpcHRpb24sIHZhbGlkPywKICBwYXJhbWV0ZXJzLCByZXF1ZXN0IGJvZHksIHJlc3BvbnNlcywgc2VjdXJpdGllcyBhbmQgc2VydmVycy4KCiAgKEhlcmUgY29ycmVzcG9uZHMgdG8gT0FTIFtPcGVyYXRpb24gT2JqZWN0XShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL09wZW5BUEkubmV4dC92ZXJzaW9ucy8zLjAuMC5tZCNvcGVyYXRpb25PYmplY3QpKQoKIyMjIyAoMSkgYHRoaXNfYXBpX2lzX2ludmFsaWQhYCwgYW5kIGl0cyBhbGlhc2VzOgogIGBgYAogIHRoaXNfYXBpX2lzX2V4cGlyZWQhCiAgdGhpc19hcGlfaXNfdW51c2VkIQogIHRoaXNfYXBpX2lzX3VuZGVyX3JlcGFpciEKICBgYGAKCiAgYGBgcnVieQogICMgKiogTWV0aG9kIFNpZ25hdHVyZQogIHRoaXNfYXBpX2lzX2ludmFsaWQhKCopCiAgIyAqKiBVc2FnZQogIHRoaXNfYXBpX2lzX2ludmFsaWQhICdjYXVzZSBvbGQgdmVyc2lvbicKICBgYGAKCiAgQWZ0ZXIgdGhhdCwgYGRlcHJlY2F0ZWRgIGZpZWxkIG9mIHRoaXMgQVBJIHdpbGwgYmUgc2V0IHRvIHRydWUuCgojIyMjICgyKSBgZGVzY2A6IGRlc2NyaXB0aW9uIGZvciB0aGUgY3VycmVudCBBUEkKCiAgYGBgcnVieQogICMgKiogTWV0aG9kIFNpZ25hdHVyZQogIGRlc2Mgc3RyaW5nCiAgIyAqKiBVc2FnZQogIGRlc2MgImN1cnJlbnQgQVBJJ3MgZGVzY3JpcHRpb24iCiAgYGBgCgojIyMjICgzKSBgcGFyYW1gIGZhbWlseSBtZXRob2RzIChPQVMgLSBbUGFyYW1ldGVyIE9iamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9PcGVuQVBJLm5leHQvdmVyc2lvbnMvMy4wLjAubWQjcGFyYW1ldGVyT2JqZWN0KSkKCiAgVG8gZGVmaW5lIHBhcmFtZXRlciBmb3IgQVBJcy4KICBgYGAKICBwYXJhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMS4gbm9ybWFsIHVzYWdlCiAgcGFyYW1fcmVmICAgICAgICAgICAgICAgICAgICAgICAgICAjIDIuIGxpbmtzIHNlcGNpZmllZCBSZWZPYmpzIChieSBjb21wb25lbnQga2V5cykgdG8gY3VycmVudCBwYXJhbWV0ZXJzLgogIGhlYWRlciwgIHBhdGgsICBxdWVyeSwgIGNvb2tpZSAgICAgIyAzLiBwYXNzZXMgc3BlY2lmaWVkIHBhcmFtZXRlciBsb2NhdGlvbiAobGlrZSBoZWFkZXIpIHRvIGBwYXJhbWAKICBoZWFkZXIhLCBwYXRoISwgcXVlcnkhLCBjb29raWUhICAgICMgNC4gYmFuZyBtZXRob2Qgb2YgYWJvdmUgbWV0aG9kcwogIGluXyogYnk6IHsgcGFyYW1ldGVyX2RlZmluYXRpb25zIH0gIyA1LiBiYXRjaCBkZWZpbml0aW9uLCBzdWNoIGFzIGBpbl9wYXRoYCwgYGluX3F1ZXJ5YAogIGV4YW1wbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIyA2LiBleGFtcGxlcyBvZiBwYXJhbWV0ZXJzCiAgYGBgCiAgKipUaGUgYmFuZyBtZXRob2QgYW5kIHBhcmFtX25hbWUgKHdoaWNoJ3MgbmFtZSBpcyBlbmQgb2YgYSBleGNsYW1hdGlvbiBwb2ludCBgIWApIG1lYW5zIHRoaXMgcGFyYW0gaXMgcmVxdWlyZWQuIFdpdGhvdXQgYCFgIG1lYW5zIG9wdGlvbmFsLiBUSEUgU0FNRSBCRUxPVy4qKgoKICBgYGBydWJ5CiAgIyBQYXJ0IDEKICAjIHBhcmFtX3R5cGU6ICBsb2NhdGlvbiBvZiBwYXJhbWV0ZXIsIGxpa2U6IHF1ZXJ5LCBwYXRoIFtBXQogICMgcGFyYW1fbmFtZTogIG5hbWUgb2YgcGFyYW1ldGVyLCBpdCBjYW4gYmUgU3ltYm9sIG9yIFN0cmluZyBbQl0KICAjIHNjaGVtYV90eXBlOiB0eXBlIG9mIHBhcmFtZXRlciwgbGlrZTogU3RyaW5nLCBJbnRlZ2VyIChtdXN0IGJlIGEgY29uc3RhbnQpLiBzZWUgI3NjaGVtYS1hbmQtdHlwZQogICMgcmVxdWlyZWQ6ICAgIDpyZXF1aXJlZCAvIDpyZXEgT1IgOm9wdGlvbmFsIC8gOm9wdAogICMgc2NoZW1hOiAgICAgIHNlZSAjc2NoZW1hLWFuZC10eXBlIChpbmNsdWRpbmcgY29tYmluZWQgc2NoZW1hKQogICMgKiogTWV0aG9kIFNpZ25hdHVyZQogIHBhcmFtIHBhcmFtX3R5cGUsIHBhcmFtX25hbWUsIHNjaGVtYV90eXBlLCByZXF1aXJlZCwgc2NoZW1hID0geyB9CiAgIyAqKiBVc2FnZQogIHBhcmFtIDpxdWVyeSwgOnBhZ2UsIEludGVnZXIsIDpyZXEsICByYW5nZTogeyBndDogMCwgbGU6IDUgfSwgZGVzYzogJ3BhZ2UgbnVtYmVyJwoKICAjIFBhcnQgMgogICMgKiogTWV0aG9kIFNpZ25hdHVyZQogIHBhcmFtX3JlZiAqY29tcG9uZW50X2tleSAjIHNob3VsZCBwYXNzIGF0IGxlYXN0IDEga2V5CiAgIyAqKiBVc2FnZQogIHBhcmFtX3JlZiA6SWRQYXRoIywgOk5hbWVRdWVyeSwgOlRva2VuSGVhZGVyCgogICMgUGFydCAzICYgNAogICMgKiogTWV0aG9kIFNpZ25hdHVyZQogIGhlYWRlciBwYXJhbV9uYW1lLCBzY2hlbWFfdHlwZSA9IG5pbCwgKipzY2hlbWEKICBxdWVyeSEgcGFyYW1fbmFtZSwgc2NoZW1hX3R5cGUgPSBuaWwsICoqc2NoZW1hCiAgIyAqKiBVc2FnZQogIGhlYWRlciA6J1gtVG9rZW4nLCBTdHJpbmcKICBxdWVyeSEgOnJlYWRlZCwgQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UKICAjIFRoZSBzYW1lIGVmZmVjdCBhcyBhYm92ZSwgYnV0IG5vdCBjb25jaXNlCiAgcGFyYW0gOnF1ZXJ5LCA6cmVhZGVkLCBCb29sZWFuLCA6cmVxLCBkZWZhdWx0OiBmYWxzZQoKICAjIFBhcnQgNSAKICAjICoqIE1ldGhvZCBTaWduYXR1cmUKICBpbl9xdWVyeSAqKnBhcmFtc19hbmRfc2NoZW1hCiAgIyAqKiBVc2FnZQogIGluX3F1ZXJ5KAogICAgc2VhcmNoX3R5cGU6IFN0cmluZywKICAgICBzZWFyY2hfdmFsOiBTdHJpbmcsCiAgICAgICAgZXhwb3J0ITogeyB0eXBlOiBCb29sZWFuLCBkZXNjOiAnZXhwb3J0IGFzIHBkZicgfQogICkKICAjIFRoZSBzYW1lIGVmZmVjdCBhcyBhYm92ZQogIHF1ZXJ5ICA6c2VhcmNoX3R5cGUsIFN0cmluZwogIHF1ZXJ5ICA6c2VhcmNoX3ZhbCwgU3RyaW5nCiAgcXVlcnkhIDpleHBvcnQsIEJvb2xlYW4sIGRlc2M6ICdleHBvcnQgYXMgcGRmJwoKICAjIFBhcnQgNgogICMgKiogTWV0aG9kIFNpZ25hdHVyZQogIGV4YW1wbGVzIGV4cF9wYXJhbXMgPSA6YWxsLCBleGFtcGxlc19oYXNoCiAgIyAqKiBVc2FnZQogICMgU3VwcG9zZSB3ZSBoYXZlIHRocmVlIHBhcmFtZXRlcnM6IGlkLCBuYW1lLCBhZ2UKICAjICogbm9ybWFsCiAgZXhhbXBsZXMoCiAgICByaWdodF9pbnB1dDogWyAxLCAndXNlcicsIDI2IF0sCiAgICB3cm9uZ19pbnB1dDogWyAyLCAncmVzdScsIDM1IF0KICApCiAgIyAqIHVzaW5nIGV4cF9wYXJhbXMKICBleGFtcGxlcyBbOmlkLCA6bmFtZV0sIHsKICAgIHJpZ2h0X2lucHV0OiBbIDEsICd1c2VyJyBdLAogICAgd3JvbmdfaW5wdXQ6IFsgMiwgJ3Jlc3UnIF0KICB9CiAgYGBgCgogIFtBXSBPcGVuQVBJIDMuMCBkaXN0aW5ndWlzaGVzIGJldHdlZW4gdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXIgdHlwZXMgYmFzZWQgb24gdGhlIHBhcmFtZXRlciBsb2NhdGlvbjogCiAgICAgICoqaGVhZGVyLCBwYXRoLCBxdWVyeSwgY29va2llKiouIFttb3JlIGluZm9dKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGVzY3JpYmluZy1wYXJhbWV0ZXJzLykKCiAgW0JdIElmIGBwYXJhbV90eXBlYCBpcyBwYXRoLCBmb3IgZXhhbXBsZTogaWYgdGhlIEFQSSBwYXRoIGlzIGAvZ29vZC86aWRgLCB5b3UgaGF2ZSB0byBkZWNsYXJlIGEgcGF0aCBwYXJhbWV0ZXIgbmFtZWQgYGlkYAoKIyMjIyAoNCkgYHJlcXVlc3RfYm9keWAgZmFtaWx5IG1ldGhvZHMgKE9BUyAtIFtSZXF1ZXN0IEJvZHkgT2JqZWN0XShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL09wZW5BUEkubmV4dC92ZXJzaW9ucy8zLjAuMC5tZCNyZXF1ZXN0Qm9keU9iamVjdCkpCgogIE9wZW5BUEkgMy4wIHVzZXMgdGhlIHJlcXVlc3RCb2R5IGtleXdvcmQgdG8gZGlzdGluZ3Vpc2ggdGhlIHBheWxvYWQgZnJvbSBwYXJhbWV0ZXJzLgogIAogIE5vdGljZTogRWFjaCBBUEkgaGFzIG9ubHkgT05FIHJlcXVlc3QgYm9keSBvYmplY3QuIEVhY2ggcmVxdWVzdCBib2R5IG9iamVjdCBjYW4gaGFzIG11bHRpcGxlIG1lZGlhIHR5cGVzLgogIEl0IG1lYW5zOiBjYWxsIGByZXF1ZXN0X2JvZHlgIG11bHRpcGxlIHRpbWVzLCAoc2NoZW1hcykgd2lsbCBiZSBkZWVwbHkgbWVyZ2VkIChsZXQncyBjYWxsIGl0IFtmdXNpb25dKCNmdXNpb24pKSBpbnRvIGEgcmVxdWVzdCBib2R5IG9iamVjdC4KICBgYGAKICByZXF1ZXN0X2JvZHkgICMgMS4gbm9ybWFsIHVzYWdlCiAgYm9keV9yZWYgICAgICAjIDIuIGl0IGxpbmtzIHNlcGNpZmllZCBSZWZPYmpzIChieSBjb21wb25lbnQga2V5cykgdG8gdGhlIGJvZHkuCiAgYm9keSwgYm9keSEgICAjIDMuIGFsaWFzIG9mIHJlcXVlc3RfYm9keQogIGZvcm0sIGZvcm0hICAgIyA0LiB0byBkZWZpbmUgYSBtdWx0aXBhcnQvZm9ybS1kYXRhIHJlcXVlc3RfYm9keQogIGpzb24sIGpzb24hICAgIyA1LiB0byBkZWZpbmUgYSBhcHBsaWNhdGlvbi9qc29uIHJlcXVlc3RfYm9keQogIGRhdGEgICAgICAgICAgIyA1LiB0byBkZWZpbmUgW2FdIHByb3BlcnR5IGluIHRoZSBmb3JtLWRhdGEgcmVxdWVzdF9ib2R5CiAgYGBgCiAgQmFuZyBtZXRob2RzKCEpIG1lYW5zIHRoZSBzcGVjaWZpZWQgbWVkaWEtdHlwZSBib2R5IGlzIHJlcXVpcmVkLgoKICBgYGBydWJ5CiAgIyBQYXJ0IDEKICAjICoqIE1ldGhvZCBTaWduYXR1cmUKICAjIGEuIGBkYXRhYCBjb250YWlucyB0aGUgYXR0cmlidXRlcyAocGFyYW1zLCBvciBwcm9wZXJ0aWVzKSBhbmQgdGhlaXIgc2NoZW1hcyByZXF1aXJlZCBieSB0aGUgcmVxdWVzdCBib2R5CiAgIyBiLiBgYXR0cl9uYW1lIWAgbWVhbnMgaXQgaXMgcmVxdWlyZWQsIHdpdGhvdXQgJyEnIG1lYW5zIG9wdGlvbmFsCiAgIyBjLiBvcHRpb25zOiBkZXNjIC8gZXhwX3BhcmFtcyBhbmQgZXhhbXBsZXMKICAjIGQuIGF2YWlsYWJsZSBgbWVkaWFfdHlwZWAgc2VlOiAKICAjICAgaHR0cHM6Ly9naXRodWIuY29tL3poYW5kYW8vemVyby1yYWlsc19vcGVuYXBpL2Jsb2IvbWFzdGVyL2xpYi9vYXNfb2Jqcy9tZWRpYV90eXBlX29iai5yYiNMMjkKICByZXF1ZXN0X2JvZHkgcmVxdWlyZWQsIG1lZGlhX3R5cGUsIGRhdGE6IHsgfSwgZGVzYzogJycsICoqb3B0aW9ucwogICMgKiogVXNhZ2UKICByZXF1ZXN0X2JvZHkgOm9wdCwgOmZvcm0sIGRhdGE6IHsKICAgIGlkITogSW50ZWdlciwKICAgIG5hbWU6IHsgdHlwZTogU3RyaW5nLCBkZXNjOiAnbmFtZScgfQogIH0sIGRlc2M6ICdhIGZvcm0tZGF0YScKCiAgIyBQYXJ0IDIKICAjICoqIE1ldGhvZCBTaWduYXR1cmUKICBib2R5X3JlZiBjb21wb25lbnRfa2V5CiAgIyAqKiBVc2FnZQogIGJvZHlfcmVmIDpVcGRhdGVVc2VyQm9keQoKICAjIFBhcnQgMwogICMgKiogTWV0aG9kIFNpZ25hdHVyZQogIGJvZHkhIG1lZGlhX3R5cGUsIGRhdGE6IHsgfSwgKipvcHRpb25zCiAgIyAqKiBVc2FnZQogIGJvZHkgOmpzb24KCiAgIyBQYXJ0IDQKICAjICoqIG1ldGhvZCBJbXBsZW1lbnQKICBkZWYgZm9ybSBkYXRhOiwgKipvcHRpb25zICMgb3IgYGZvcm0hYAogICAgYm9keSA6Zm9ybSwgZGF0YTogZGF0YSwgKipvcHRpb25zCiAgZW5kCiAgIyAqKiBVc2FnZQogIGZvcm0hIGRhdGE6IHsKICAgICAgICAgbmFtZSE6IFN0cmluZywKICAgICAgcGFzc3dvcmQ6IHsgdHlwZTogU3RyaW5nLCBwYXR0ZXJuOiAvWzAtOV17NiwxMH0vIH0sCiAgfQogIGpzb24gZGF0YTogeyBuYW1lITogU3RyaW5nIH0KCiAgIyBQYXJ0IDUKICAjICoqIE1ldGhvZCBTaWduYXR1cmUKICBkYXRhIG5hbWUsIHR5cGUgPSBuaWwsIHNjaGVtYSA9IHsgfQogICMgKiogVXNhZ2UKICBkYXRhIDpwYXNzd29yZCEsIFN0cmluZywgcGF0dGVybjogL1swLTldezYsMTB9LwogIGBgYAoKICA8YSBuYW1lPSJmdXNpb24iPjwvYT4gCiAgSG93ICoqZnVzaW9uKiogd29ya3M6CiAgMS4gRGlmZmVyZW5jZSBtZWRpYSB0eXBlcyB3aWxsIGJlIG1lcmdlZCBpbnRvIGByZXF1ZXN0Qm9keVsiY29udGVudCJdYAoKICBgYGBydWJ5CiAgZm9ybSBkYXRhOiB7IH0KICBib2R5IDpqc29uLCBkYXRhOiB7IH0KICAjIHdpbGwgZ2VuZXJhdGU6ICJjb250ZW50IjogeyAibXVsdGlwYXJ0L2Zvcm0tZGF0YSI6IHsgfSwgImFwcGxpY2F0aW9uL2pzb24iOiB7IH0gfQogIGBgYAoKICAyLiBUaGUgc2FtZSBtZWRpYS10eXBlcyB3aWxsIGJlIGRlZXBseSBtZXJnZWQgdG9nZXRoZXIsIGluY2x1ZGluZyB0aGVpciBgcmVxdWlyZWRgIGFycmF5OiAgCiAgICAgKFNvIHRoYXQgeW91IGNhbiBjYWxsIGBmb3JtYCBtdWx0aXBsZSB0aW1lcykKCiAgYGBgcnVieQogIGRhdGEgOnBhcmFtX2EhLCBTdHJpbmcKICBkYXRhIDpwYXJhbV9iLCAgSW50ZWdlcgogICMgb3Igc2FtZSBhczoKICBmb3JtIGRhdGE6IHsgOnBhcmFtX2EhID0+IFN0cmluZyB9CiAgZm9ybSBkYXRhOiB7IDpwYXJhbV9iICA9PiBJbnRlZ2VyIH0KICAjIHdpbGwgZ2VuZXJhdGU6IHsgInBhcmFtX2EiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwgInBhcmFtX2IiOiB7ICJ0eXBlIjogImludGVnZXIiIH0gfSAoY2FsbCBpdCBYKQogICMgdGhlcmVmb3JlOgogICMgICAiY29udGVudCI6IHsgIm11bHRpcGFydC9mb3JtLWRhdGEiOgogICMgICAgIHsgInNjaGVtYSI6IHsgInR5cGUiOiAib2JqZWN0IiwgInByb3BlcnRpZXMiOiB7IFggfSwgInJlcXVpcmVkIjogWyAicGFyYW1fYSIgXSB9CiAgIyAgIH0KICBgYGAKCiMjIyMgKDUpIGByZXNwb25zZWAgZmFtaWx5IG1ldGhvZHMgKE9BUyAtIFtSZXNwb25zZSBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvT3BlbkFQSS5uZXh0L3ZlcnNpb25zLzMuMC4wLm1kI3Jlc3BvbnNlLW9iamVjdCkpCgogIFRvIGRlZmluZSB0aGUgcmVzcG9uc2UgZm9yIEFQSXMuCiAgYGBgCiAgcmVzcG9uc2UgICAgICAjIDEuIGFsaWFzZXM6IGByZXNwYCBhbmQgYGVycm9yYAogIHJlc3BvbnNlX3JlZiAgIyAyLiBpdCBsaW5rcyBzZXBjaWZpZWQgUmVmT2JqcyAoYnkgY29tcG9uZW50IGtleXMpIHRvIHRoZSByZXNwb25zZS4KICBgYGAKCiAgYGBgcnVieQogICMgKiogTWV0aG9kIFNpZ25hdHVyZQogIHJlc3BvbnNlIGNvZGUsIGRlc2MsIG1lZGlhX3R5cGUgPSBuaWwsIGhlYWRlcnM6IHsgfSwgZGF0YTogeyB9LCAqKm9wdGlvbnMKICAjICoqIFVzYWdlCiAgcmVzcCAyMDAsICdzdWNjZXNzJywgOmpzb24sIGRhdGE6IHsgbmFtZTogJ3Rlc3QnIH0KICByZXNwb25zZSAyMDAsICdxdWVyeSByZXN1bHQnLCA6cGRmLCBkYXRhOiBGaWxlCiAgcmVzcG9uc2UgOnN1Y2Nlc3MsICdzdWNjJywgOmpzb24sIGhlYWRlcnM6IHsgJ1gtUmVxdWVzdC1TdGFydCc6IFN0cmluZyB9LCBkYXRhOiB7IH0KCiAgIyAqKiBNZXRob2QgU2lnbmF0dXJlCiAgcmVzcG9uc2VfcmVmIGNvZGVfYW5kX2NvbXBrZXlfaGFzaAogICMgKiogVXNhZ2UKICByZXNwb25zZV9yZWYgNzAwID0+IDpBUmVzcCwgODAwID0+IDpCUmVzcAogIGBgYAoKIyMjICg2KSBDYWxsYmFjayAoT0FTIC0gW0NhbGxiYWNrIE9iamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9PcGVuQVBJLm5leHQvdmVyc2lvbnMvMy4wLjAubWQjY2FsbGJhY2stb2JqZWN0KSkKCiAgW0Fib3V0IENhbGxiYWNrc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9jYWxsYmFja3MvKQogID4gSW4gT3BlbkFQSSAzIHNwZWNzLCB5b3UgY2FuIGRlZmluZSBjYWxsYmFja3Mg4oCTIGFzeW5jaHJvbm91cywgb3V0LW9mLWJhbmQgcmVxdWVzdHMgdGhhdCB5b3VyIHNlcnZpY2Ugd2lsbCBzZW5kIHRvIHNvbWUgb3RoZXIgc2VydmljZSBpbiByZXNwb25zZSB0byBjZXJ0YWluIGV2ZW50cy4gVGhpcyBoZWxwcyB5b3UgaW1wcm92ZSB0aGUgd29ya2Zsb3cgeW91ciBBUEkgb2ZmZXJzIHRvIGNsaWVudHMuICAKICAgIEEgdHlwaWNhbCBleGFtcGxlIG9mIGEgY2FsbGJhY2sgaXMgYSBzdWJzY3JpcHRpb24gZnVuY3Rpb25hbGl0eSAuLi4geW91IGNhbiBkZWZpbmUgdGhlIGZvcm1hdCBvZiB0aGUg4oCcc3Vic2NyaXB0aW9u4oCdIG9wZXJhdGlvbiBhcyB3ZWxsIGFzIHRoZSBmb3JtYXQgb2YgY2FsbGJhY2sgbWVzc2FnZXMgYW5kIGV4cGVjdGVkIHJlc3BvbnNlcyB0byB0aGVzZSBtZXNzYWdlcy4gIAogICAgVGhpcyBkZXNjcmlwdGlvbiB3aWxsIHNpbXBsaWZ5IGNvbW11bmljYXRpb24gYmV0d2VlbiBkaWZmZXJlbnQgc2VydmVycyBhbmQgd2lsbCBoZWxwIHlvdSBzdGFuZGFyZGl6ZSB1c2Ugb2Ygd2ViaG9va3MgaW4geW91ciBBUEkuICAKICBbQ29tcGxldGUgWUFNTCBFeGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci9leGFtcGxlcy92My4wL2NhbGxiYWNrLWV4YW1wbGUueWFtbCkKICAKICBUaGUgc3RydWN0dXJlIG9mIENhbGxiYWNrIE9iamVjdDoKICBgYGAKICBjYWxsYmFja3M6CiAgICBFdmVudDE6CiAgICAgIHBhdGgxOgogICAgICAgIC4uLgogICAgICBwYXRoMjoKICAgICAgIC4uLgogICAgRXZlbnQyOgogICAgICAuLi4KICBgYGAKICAKICBgY2FsbGJhY2tgIG1ldGhvZCBpcyBmb3IgZGVmaW5pbmcgY2FsbGJhY2tzLgogIGBgYHJ1YnkKICAjICoqIE1ldGhvZCBTaWduYXR1cmUKICBjYWxsYmFjayBldmVudF9uYW1lLCBodHRwX21ldGhvZCwgY2FsbGJhY2tfdXJsLCAmYmxvY2sKICAjICoqIFVzYWdlCiAgY2FsbGJhY2sgOm15RXZlbnQsIDpwb3N0LCAnbG9jYWxob3N0OjMwMDAvYXBpL2dvb2RzJyBkbwogICAgcXVlcnkgOm5hbWUsIFN0cmluZwogICAgZGF0YSA6dG9rZW4sIFN0cmluZwogICAgcmVzcG9uc2UgMjAwLCAnc3VjY2VzcycsIDpqc29uLCBkYXRhOiB7IG5hbWU6IFN0cmluZywgZGVzY3JpcHRpb246IFN0cmluZyB9CiAgZW5kCiAgYGBgCiAgCiAgVXNlIHJ1bnRpbWUgZXhwcmVzc2lvbnMgaW4gY2FsbGJhY2tfdXJsOgogIGBgYHJ1YnkKICBjYWxsYmFjayA6bXlFdmVudCwgOnBvc3QsICd7Ym9keSBjYWxsYmFja19hZGRyfS9hcGkvZ29vZHMve3F1ZXJ5IGlkfScKICAjIHRoZSBmaW5hbCBVUkwgd2lsbCBiZTogeyRyZXF1ZXN0LmJvZHkjL2NhbGxiYWNrX2FkZHJ9L2FwaS9nb29kcy97JHJlcXVlc3QucXVlcnkuaWR9CiAgIyBOb3RlOiBPdGhlciBleHByZXNzaW9ucyBvdXRzaWRlICIkcmVxdWVzdCIgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0CiAgYGBgCgojIyMjICg3KSBBdXRoZW50aWNhdGlvbiBhbmQgQXV0aG9yaXphdGlvbgoKICBGaXJzdCBvZiBhbGwsIHBsZWFzZSBtYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSByZWFkIG9uZSBvZiB0aGUgZm9sbG93aW5nIGRvY3VtZW50czoKICBbT3BlbkFwaSBBdXRoXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2F1dGhlbnRpY2F0aW9uLykKICBvciBbc2VjdXJpdHlTY2hlbWVPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzMuMC4wLm1kI3NlY3VyaXR5U2NoZW1lT2JqZWN0KQoKICAjIyMjIyBEZWZpbmUgU2VjdXJpdHkgU2NoZW1lCgogIFVzZSB0aGVzZSBEU0wgKippbiB5b3VyIGluaXRpYWxpemVyIGNvbmZpZyBvciBgY29tcG9uZW50c2AgYmxvY2sqKjoKICBgYGAKICBzZWN1cml0eV9zY2hlbWUgIyBhbGlhcyBgYXV0aF9zY2hlbWVgCiAgYmFzZV9hdXRoICAgICAgICMgd2lsbCBjYWxsIGBzZWN1cml0eV9zY2hlbWVgCiAgYmVhcmVyX2F1dGggICAgICMgd2lsbCBjYWxsIGBzZWN1cml0eV9zY2hlbWVgCiAgYXBpX2tleSAgICAgICAgICMgd2lsbCBjYWxsIGBzZWN1cml0eV9zY2hlbWVgCiAgYGBgCiAgSXQncyB2ZXJ5IHNpbXBsZSB0byB1c2UgKGlmIHlvdSB1bmRlcnN0YW5kIHRoZSBhYm92ZSBkb2N1bWVudCkKICBgYGBydWJ5CiAgIyAqKiBNZXRob2QgU2lnbmF0dXJlCiAgc2VjdXJpdHlfc2NoZW1lIHNjaGVtZV9uYW1lLCBvdGhlcl9pbmZvCiAgIyAqKiBVc2FnZQogIHNlY3VyaXR5X3NjaGVtZSA6QmFzaWNBdXRoLCB7IHR5cGU6ICdodHRwJywgc2NoZW1lOiAnYmFzaWMnLCBkZXNjOiAnYmFzaWMgYXV0aCcgfQoKICAjICoqIE1ldGhvZCBTaWduYXR1cmUKICBiYXNlX2F1dGggc2NoZW1lX25hbWUsIG90aGVyX2luZm8gPSB7IH0KICBiZWFyZXJfYXV0aCBzY2hlbWVfbmFtZSwgZm9ybWF0ID0gJ0pXVCcsIG90aGVyX2luZm8gPSB7IH0KICBhcGlfa2V5IHNjaGVtZV9uYW1lLCBmaWVsZDosIGluOiwgKipvdGhlcl9pbmZvCiAgIyAqKiBVc2FnZQogIGJhc2VfYXV0aCA6QmFzaWNBdXRoLCBkZXNjOiAnYmFzaWMgYXV0aCcgIyB0aGUgc2FtZSBlZmZlY3QgYXMgYWJvdmUKICBiZWFyZXJfYXV0aCA6VG9rZW4KICBhcGlfa2V5IDpBcGlLZXlBdXRoLCBmaWVsZDogJ1gtQVBJLUtleScsIGluOiAnaGVhZGVyJywgZGVzYzogJ3Bhc3MgYXBpIGtleSB0byBoZWFkZXInCiAgYGBgCgogICMjIyMjIEFwcGx5IFNlY3VyaXR5CgogIGBgYAogICMgVXNlIGluIGluaXRpYWxpemVyIChHbG9iYWwgZWZmZWN0aXZlbmVzcykKICBnbG9iYWxfc2VjdXJpdHlfcmVxdWlyZSAjIGFsaWFzOiBnbG9iYWxfc2VjdXJpdHkgJiBnbG9iYWxfYXV0aAoKICAjIFVzZSBpbiBgYXBpYCdzIGJsb2NrIChPbmx5IHZhbGlkIGZvciB0aGUgY3VycmVudCBjb250cm9sbGVyKQogIHNlY3VyaXR5X3JlcXVpcmUgIyBhbGlhcyBzZWN1cml0eSAmIGF1dGhfd2l0aAogIGBgYAogIGBgYHJ1YnkKICAjICoqIE1ldGhvZCBTaWduYXR1cmUKICBzZWN1cml0eV9yZXF1aXJlIHNjaGVtZV9uYW1lLCBzY29wZXM6IFsgXQogICMgKiogVXNhZ2UKICBnbG9iYWxfYXV0aCA6VG9rZW4KICBhdXRoX3dpdGggICA6T0F1dGgsIHNjb3BlczogJXdbIHJlYWRfZXhhbXBsZSBhZG1pbiBdCiAgYGBgCgojIyMjICg4KSBPdmVycmlkaW5nIEdsb2JhbCBTZXJ2ZXJzIGJ5IGBzZXJ2ZXJgCgogIGBgYHJ1YnkKICAjICoqIE1ldGhvZCBTaWduYXR1cmUKICBzZXJ2ZXIgdXJsLCBkZXNjOiAnJwogICMgKiogVXNhZ2UKICBzZXJ2ZXIgJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCcsIGRlc2M6ICdsb2NhbCcKICBgYGAKICAKIyMjIyAoOSkgYGRyeWAKCiAgWW91IGhhdmUgdG8gY2FsbCBgZHJ5YCBtZXRob2QgaW5zaWRlIGBhcGlgIGJsb2NrLCBvciBwYXNzIGBkcnk6IHRydWVgIGFzIHBhcmFtZXRlciBvZiBgYXBpYCwKICBmb3IgZXhlY3V0aW5nIHRoZSBkcnkgYmxvY2tzIHlvdSBkZWNsYXJlZCBiZWZvcmUuIE90aGVyd2lzZSBub3RoaW5nIHdpbGwgaGFwcGVuLgogIAogIGBgYHJ1YnkKICAjICoqIE1ldGhvZCBTaWduYXR1cmUKICBkcnkgb25seTogbmlsLCBza2lwOiBuaWwsIG5vbmU6IGZhbHNlCiAgCiAgIyAqKiBVc2FnZQogICMgSW4gZ2VuZXJhbCwganVzdDoKICBkcnkKICAjIFRvIHNraXAgc29tZSBwYXJhbXMgZGVjbGFyZWQgaW4gZHJ5IGJsb2NrczoKICBkcnkgc2tpcDogWzppZCwgOm5hbWVdCiAgIyBgb25seWAgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHBhcmFtZXRlcnMgd2lsbCBiZSB0YWtlbiBmcm9tIGRyeSBibG9ja3MKICBkcnkgb25seTogWzppZF0KICBgYGAKCiMjIyBEU0xzIHdyaXR0ZW4gaW5zaWRlIFtjb21wb25lbnRzXSgjMy1jb21wb25lbnRzLW9wdGlvbmFsKSdzIGJsb2NrCiAgW2NvZGUgc291cmNlXShsaWIvb3Blbl9hcGkvZHNsL2NvbXBvbmVudHMucmIpIChIZXJlIGNvcnJlc3BvbmRzIHRvIE9BUyBbQ29tcG9uZW50cyBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvT3BlbkFQSS5uZXh0L3ZlcnNpb25zLzMuMC4wLm1kI2NvbXBvbmVudHNPYmplY3QpKQoKICBJbnNpZGUgYGNvbXBvbmVudHNgJ3MgYmxvY2ssCiAgeW91IGNhbiB1c2UgdGhlIHNhbWUgRFNMcyBhcyBbRFNMcyB3cml0dGVuIGluc2lkZSBgYXBpYCBhbmQgYGFwaV9kcnlgJ3MgYmxvY2tdKCNkc2xzLXdyaXR0ZW4taW5zaWRlLWFwaS1hbmQtYXBpX2RyeXMtYmxvY2spLiAgCiAgQnV0IG5vdGljZSB0aGVyZSBhcmUgdHdvIGRpZmZlcmVuY2VzOgoKICAoMSkgRWFjaCBtZXRob2QgbmVlZHMgdG8gcGFzcyBvbmUgbW9yZSBwYXJhbWV0ZXIgYGNvbXBvbmVudF9rZXlgIChhcyB0aGUgZmlyc3QgcGFyYW1ldGVyKSwKICAgICAgaXQgd2lsbCBiZSB1c2VkIGFzIHRoZSByZWZlcmVuY2UgbmFtZSBmb3IgdGhlIGNvbXBvbmVudC4KCiAgYGBgcnVieQogIHF1ZXJ5ISA6VWlkUXVlcnksIDp1aWQsIFN0cmluZ++8jCBkZXNjOiAnaXQgaXMgYSBjb21wb25lbnQnCiAgIyAgICAgICAgIOKGkSAgICAgICAgIOKGkQogICMgY29tcG9uZW50X2tleSAgcGFyYW1fbmFtZQogIAogICMgWW91IGNhbiBhbHNvIHVzZSAiYXJyb3cgd3JpdGluZyIsIGl0IG1heSBiZSBlYXNpZXIgdG8gdW5kZXJzdGFuZAogIHF1ZXJ5ISA6VWlkUXVlcnkgPT4gWzp1aWQsIFN0cmluZywgZGVzYzogJyddCiAgYGBgCgogICgyKSBZb3UgY2FuIHVzZSBgc2NoZW1hYCB0byBkZWZpbmUgYSBTY2hlbWEgQ29tcG9uZW50LgoKICBgYGBydWJ5CiAgIyAqKiBNZXRob2QgU2lnbmF0dXJlCiAgc2NoZW1hIGNvbXBvbmVudF9rZXksIHR5cGUgPSBuaWwsICoqc2NoZW1hCiAgIyAqKiBVc2FnZQogIHNjaGVtYSA6RG9nICA9PiBbIFN0cmluZywgZGVzYzogJ2RvZ2UnIF0KICAjIGFkdmFuY2UgdXNhZ2UKICBzY2hlbWEgOkRvZyA9PiBbCiAgICAgIHsKICAgICAgICAgICBpZCE6IEludGVnZXIsCiAgICAgICAgICBuYW1lOiB7IHR5cGU6IFN0cmluZywgZGVzYzogJ2RvZ2UgbmFtZScgfQogICAgICB9LCBkZWZhdWx0OiB7IGlkOiAxLCBuYW1lOiAncGV0JyB9CiAgXQogICMgb3IgZmxhdHRlbiB3cml0aW5nCiAgc2NoZW1hIDpEb2csIHsgaWQhOiBJbnRlZ2VyLCBuYW1lOiBTdHJpbmcgfSwgZGVmYXVsdDogeyBpZDogMSwgbmFtZTogJ3BldCcgfQogICMKICAjIHBhc3MgYSBBY3RpdmVSZWNvcmQgY2xhc3MgY29uc3RhbnQgYXMgYGNvbXBvbmVudF9rZXlgLAogICMgICBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgbG9hZCBzY2hlbWEgZnJvbSBkYXRhYmFzZSBhbmQgdGhlbiBnZW5lcmF0ZSB0aGUgY29tcG9uZW50LgogIHNjaGVtYSBVc2VyICMgZWFzeSEgQW5kIHRoZSBjb21wb25lbnRfa2V5IHdpbGwgYmUgOlVzZXIKICBgYGAKICBUbyBlbmFibGUgbG9hZCBzY2hlbWEgZnJvbSBkYXRhYmFzZSwgeW91IG11c3Qgc2V0IFttb2RlbCBiYXNlXSgjcGFydC0xLWNvbmZpZ3Mtb2YtdGhpcy1nZW0pIGNvcnJlY3RseS4KICAKIyMjIFNjaGVtYSBhbmQgVHlwZQoKICBzY2hlbWEgYW5kIHR5cGUgLS0gY29udGFpbiBlYWNoIG90aGVyCgojIyMjIChTY2hlbWEpIFR5cGUKCiAgU3VwcG9ydCBhbGwgW2RhdGEgdHlwZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvT3BlbkFQSS5uZXh0L3ZlcnNpb25zLzMuMC4wLm1kI2RhdGFUeXBlcykgaW4gT0FTLiAgIAoKICAxLiBTdHJpbmcgLyAnYmluYXJ5JyAvICdiYXNlNjQnIC8gJ3VyaScKICAyLiBJbnRlZ2VyIC8gTG9uZyAvICdpbnQzMicgLyAnaW50NjQnIC8gRmxvYXQgLyBEb3VibGUKICAzLiBGaWxlIChpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBgeyB0eXBlOiAnc3RyaW5nJywgZm9ybWF0OiBDb25maWcuZmlsZV9mb3JtYXQgfWApCiAgNC4gRGF0ZSAvIERhdGVUaW1lCiAgNS4gJ2Jvb2xlYW4nCiAgNi4gQXJyYXkgLyBBcnJheVtcPFR5cGVcPl0gKGxpa2U6IGBBcnJheVtTdHJpbmddYCwgYFtTdHJpbmddYCkKICA3LiBOZXN0ZWQgQXJyYXkgKGxpa2U6IGBbW1tJbnRlZ2VyXV1dYCkKICA4LiBPYmplY3QgLyBIYXNoIChPYmplY3Qgd2l0aCBwcm9wZXJ0aWVzKSAgCiAgICAgRXhhbXBsZTogYHsgaWQhOiBJbnRlZ2VyLCBuYW1lOiBTdHJpbmcgfWAKICA5LiBOZXN0ZWQgSGFzaDogYHsgaWQhOiBJbnRlZ2VyLCBuYW1lOiB7IGZpcnN0OiBTdHJpbmcsIGxhc3Q6IFN0cmluZyB9IH1gCiAgMTAuIE5lc3RlZCBBcnJheVtOZXN0ZWQgSGFzaF06IGBbW3sgaWQhOiBJbnRlZ2VyLCBuYW1lOiB7IGZpcnN0OiBTdHJpbmcsIGxhc3Q6IFN0cmluZyB9IH1dXWAKICAxMS4gU3ltYm9sIFZhbHVlOiBpdCB3aWxsIGdlbmVyYXRlIGEgU2NoZW1hIFJlZmVyZW5jZSBPYmplY3QgbGluayB0byB0aGUgY29tcG9uZW50IGNvcnJlc3BvbmQgdG8gQ29tcG9uZW50S2V5LCBsaWtlOiA6SWRQYXRoLCA6TmFtZVF1ZXJ5CiAgCiAgKipOb3RpY2UqKiB0aGF0IFN5bWJvbCBpcyBub3QgYWxsb3dlZCBpbiBhbGwgY2FzZXMgZXhjZXB0IDExLgogIAojIyMjIFNjaGVtYQoKICBbT0FTIFNjaGVtYSBPYmplY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvT3BlbkFQSS5uZXh0L3ZlcnNpb25zLzMuMC4wLm1kI3NjaGVtYU9iamVjdCkKICBhbmQgW3NvdXJjZSBjb2RlXShodHRwczovL2dpdGh1Yi5jb20vemhhbmRhby96ZXJvLXJhaWxzX29wZW5hcGkvYmxvYi9tYXN0ZXIvbGliL29hc19vYmpzL3NjaGVtYV9vYmoucmIpCiAgCiAgU2NoZW1hIChIYXNoKSBpcyBmb3IgZGVmaW5pbmcgcHJvcGVydGllcyBvZiBwYXJhbWV0ZXJzLCByZXNwb25zZXMgYW5kIHJlcXVlc3QgYm9kaWVzLgogIAogIFRoZSBmb2xsb3dpbmcgcHJvcGVydHkga2V5cyB3aWxsIGJlIHByb2Nlc3Mgc2xpZ2h0bHk6CiAgMS4gZGVzYyAvIGRlc2NyaXB0aW9uIC8gZAogIDIuIGVudW0gLyBpbiAvIHZhbHVlcyAvIGFsbG93YWJsZV92YWx1ZXMgIAogICAgIHNob3VsZCBiZSBBcnJheSBvciBSYW5nZQogIDMuIHJhbmdlOiBhbGxvdyB2YWx1ZSBpbiB0aGlzIGNvbnRpbnVvdXMgcmFuZ2UgIAogICAgIHNob3VsZCBiZSBSYW5nZSBvciBsaWtlIGB7IGd0OiAwLCBsZTogNSB9YAogIDQuIGxlbmd0aCAvIHNpemUgLyBsdGggIAogICAgIHNob3VsZCBiZSBhbiBJbnRlZ2VyLCBJbnRlZ2VyIEFycmF5LCBJbnRlZ2VyIFJhbmdlLCAKICAgICBvciB0aGUgZm9sbG93aW5nIGZvcm1hdCBTeW1ib2w6IGA6Z3RfYCwgYDpnZV9gLCBgOmx0X2AsIGA6bGVfYCAoOmdlXzUgbWVhbnMgImdyZWF0ZXIgdGhhbiBvciBlcXVhbCA1IjsgOmx0XzkgbWVhbnMgImxvd2VyIHRoYW4gOSIpCiAgNS4gcGF0dGVybiAvIHJlZ3hwCiAgNi4gYWRkaXRpb25hbF9wcm9wZXJ0aWVzIC8gYWRkX3Byb3AgLyB2YWx1ZXNfdHlwZQogIDcuIGV4YW1wbGUKICA4LiBleGFtcGxlcwogIDkuIGZvcm1hdAogIDEwLiBkZWZhdWx0OiBkZWZhdWx0IHZhbHVlCiAgMTEuIHR5cGUKCiAgVGhlIG90aGVyIGtleXMgd2lsbCBiZSBkaXJlY3RseSBtZXJnZWQuIFN1Y2ggYXM6CiAgMS4gYHRpdGxlOiAnUHJvcGVydHkgVGl0bGUnYAogIDIuIGBteUN1c3RvbUtleTogJ1ZhbHVlJ2AKCiMjIyMgQ29tYmluZWQgU2NoZW1hCgogIFZlcnkgZWFzeSB0byB1c2U6CiAgYGBgcnVieQogIHF1ZXJ5IDpjb21iaW5hdGlvbiwgb25lX29mOiBbIDpHb29kU2NoZW1hLCBTdHJpbmcsIHsgdHlwZTogSW50ZWdlciwgZGVzYzogJ2ludGVnZXIgaW5wdXQnIH0gXQoKICBmb3JtIGRhdGE6IHsKICAgICAgOmNvbWJpbmF0aW9uX2luX2Zvcm0gPT4geyBhbnlfb2Y6IFsgSW50ZWdlciwgU3RyaW5nIF0gfQogIH0KCiAgc2NoZW1hIDpQZXRTY2hlbWEgPT4gWyBub3Q6IFsgSW50ZWdlciwgQm9vbGVhbiBdIF0KICBgYGAKCiAgT0FTOiBbbGluazFdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGF0YS1tb2RlbHMvb25lb2YtYW55b2YtYWxsb2Ytbm90LyksCiAgW2xpbmsyXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8zLjAuMC5tZCNzY2hlbWFPYmplY3QpCgojIyBSdW4hIC0gR2VuZXJhdGUgSlNPTiBEb2N1bWVudGF0aW9uIEZpbGUKCiAgVXNlIGBPcGVuQXBpLndyaXRlX2RvY3NgOgoKICBgYGBydWJ5CiAgT3BlbkFwaS53cml0ZV9kb2NzIyBpZjogIVJhaWxzLmVudi5wcm9kdWN0aW9uPwogIGBgYAoKICBgaWZgIG9wdGlvbiBpcyB1c2VkIHRvIGNvbnRyb2wgd2hldGhlciBhIEpTT04gZG9jdW1lbnQgaXMgZ2VuZXJhdGVkIG9yIG5vdC4KICAKICBUaGVuIHRoZSBKU09OIGZpbGVzIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgZGlyZWN0b3JpZXMgeW91IHNldC4gKEVhY2ggQVBJIGEgZmlsZS4pCgojIyBVc2UgU3dhZ2dlciBVSSh2ZXJ5IGJlYXV0aWZ1bCB3ZWIgcGFnZSkgdG8gc2hvdyB5b3VyIERvY3VtZW50YXRpb24KCiAgRG93bmxvYWQgW1N3YWdnZXIgVUldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpKSAodmVyc2lvbiA+PSAyLjMuMCBzdXBwb3J0IHRoZSBPQVMzKQogIHRvIHlvdXIgcHJvamVjdCwKICBjaGFuZ2UgdGhlIGRlZmF1bHQgSlNPTiBmaWxlIHBhdGgodXJsKSBpbiBpbmRleC5odG1sLgogIEluIG9yZGVyIHRvIHVzZSBpdCwgeW91IG1heSBoYXZlIHRvIGVuYWJsZSBDT1JTLCBbc2VlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aSNjb3JzLXN1cHBvcnQpCgojIyBUcmlja3MKCiMjIyBUcmljazEgLSBXcml0ZSB0aGUgRFNMIFNvbWV3aGVyZSBFbHNlCgogIERvZXMgeW91ciBkb2N1bWVudGF0aW9uIHRha2UgdG9vIG1hbnkgbGluZXM/ICAKICBEbyB5b3Ugd2FudCB0byBzZXBhcmF0ZSBkb2N1bWVudGF0aW9uIGZyb20gY29udHJvbGxlciB0byBzaW1wbGlmeSBib3RoPyAgCiAgVmVyeSBlYXN5ISBKdXN0IGZvbGxvdwoKICBgYGBydWJ5CiAgIyBjb25maWcvaW5pdGlhbGl6ZXJzL29wZW5fYXBpLnJiCiAgIyBpbiB5b3VyIGNvbmZpZ3VyYXRpb24KICBiYXNlX2RvY19jbGFzc2VzOiBbQXBpRG9jXQoKICAjIGFwcC9hcGlfZG9jL2FwaV9kb2MucmIKICByZXF1aXJlICdvcGVuX2FwaS9kc2wnCgogIGNsYXNzIEFwaURvYyA8IE9iamVjdAogICAgaW5jbHVkZSBPcGVuQXBpOjpEU0wKICBlbmQKCiAgIyBhcHAvYXBpX2RvYy92MS9leGFtcGxlc19kb2MucmIKICBjbGFzcyBWMTo6RXhhbXBsZXNEb2MgPCBBcGlEb2MKICAgIHJvdXRlX2Jhc2UgJ2FwaS92MS9leGFtcGxlcycKCiAgICBhcGkgOmluZGV4IGRvCiAgICAgICMgLi4uCiAgICBlbmQKICBlbmQKICBgYGAKCiAgRXhwbGFpbjogVGhlc2UgZm91ciBzdGVwcyBhcmUgbmVjZXNzYXJ5OgogIDEuIGNyZWF0ZSBhIGNsYXNzLCBsaWtlIEFwaURvYywgYW5kIG1ha2UgaXQgaW5jbHVkZSBPcGVuQXBpOjpEU0wgKHRoZW4gaXQgY291bGQgYmUgdGhlIGJhc2UgY2xhc3MgZm9yIHdyaXRpbmcgQXBpIHNwZWMpLgogIDIuIHNldCB0aGUgc3BlY2lmaWVkIEFwaSBzcGVjJ3MgYmFzZV9kb2NfY2xhc3NlcyB0byBBcGlEb2MuCiAgMy4gbGV0IHlvdXIgZG9jIGNsYXNzIChsaWtlIFYxOjpFeGFtcGxlc0RvYykgaW5oZXJpdCB0aGUgYmFzZV9kb2NfY2xhc3NlcyAoQXBpRG9jKS4KICA0LiBzZXQgdGhlIHJvdXRlX2Jhc2UgKHRvIHJvdXRlIHBhdGggYXBpL3YxL2V4YW1wbGVzIG9mIHRoYXQgY29udHJvbGxlciBBcGk6OlYxOjpFeGFtcGxlc0NvbnRyb2xsZXIpIGluc2lkZSBWMTo6RXhhbXBsZXNEb2MuCiAgCiAgTm90ZXM6IGZpbGUgbmFtZSBlbmRzIGluIGBfZG9jLnJiYCBieSBkZWZhdWx0LCBidXQgeW91IGNhbiBjaGFuZ2UgaXQgYnkgc2V0dGluZyBgQ29uZmlnLmRvY19sb2NhdGlvbmAKICAgIChpdCBzaG91bGQgYmUgZmlsZSBwYXRocywgZGVmYXVsdHMgdG8gYC4vYXBwLyoqLypfZG9jLnJiYCkuCgojIyMgVHJpY2syIC0gR2xvYmFsIERSWWluZwoKICBNZXRob2QgYGFwaV9kcnlgIGlzIGZvciBEUlkgYnV0IGl0cyBzY29wZSBpcyBsaW1pdGVkIHRvIHRoZSBjdXJyZW50IGNvbnRyb2xsZXIuCgogIEkgaGF2ZSBubyBpZGVhIG9mIGJlc3QgcHJhY3RpY2VzLCBCdXQgeW91IGNhbiBsb29rIGF0IHRoaXMgW2ZpbGVdKGV4YW1wbGVzL2F1dG9fZ2VuX2RvYy5yYikuICAKICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGZpbGUgaXM6IGRvIGBhcGlfZHJ5YCB3aGVuIGluaGVyaXRzIHRoZSBiYXNlIGNvbnRyb2xsZXIgaW5zaWRlIGBpbmhlcml0ZWRgIG1ldGhvZC4KCiAgWW91IGNhbiB1c2UgYHNvcnRgIHRvIHNwZWNpZnkgdGhlIG9yZGVyIG9mIHBhcmFtZXRlcnMuCgojIyMgVHJpY2szIC0gQXV0byBHZW5lcmF0ZSBEZXNjcmlwdGlvbiBmcm9tIEVudW0KCiAgSnVzdCB1c2UgYGVudW0hYDoKICBgYGBydWJ5CiAgcXVlcnkgOnNlYXJjaF90eXBlLCBTdHJpbmcsIGRlc2M6ICdzZWFyY2ggZmllbGQsIGFsbG93c++8mjxici8+JywgZW51bSE6ICV3W25hbWUgY3JlYXRvciBjYXRlZ29yeSBwcmljZV0KICAjIGl0IHdpbGwgZ2VuZXJhdGU6IAogICJzZWFyY2ggZmllbGQsIGFsbG93c++8mjxici8+MS8gbmFtZTxici8+Mi8gY3JlYXRvciw8YnIvPjMvIGNhdGVnb3J5PGJyLz40LyBwcmljZTxici8+IgogIGBgYAogIE9yIEhhc2ggYGVudW0hYDoKICBgYGBydWJ5CiAgcXVlcnkgOnZpZXcsIFN0cmluZywgZGVzYzogJ2FsbG93cyB2YWx1ZXM8YnIvPicsIGVudW0hOiB7CiAgICAgICAgICAnYWxsIGdvb2RzIChkZWZhdWx0KSc6IDphbGwsCiAgICAgICAgICAgICAgICAgICdvbmx5IG9ubGluZSc6IDpvbmxpbmUsCiAgICAgICAgICAgICAgICAgJ29ubHkgb2ZmbGluZSc6IDpvZmZsaW5lLAogICAgICAgICAgICAgICdleHBlbnNpdmUgZ29vZHMnOiA6Z2V0LAogICAgICAgICAgICAgICAgICAnY2hlYXAgZ29vZHMnOiA6Ym9ycm93LAogIH0KICBgYGAKCiMjIFRyb3VibGVzaG9vdGluZwoKLSAqKllvdSB3cm90ZSBkb2N1bWVudCBvZiB0aGUgY3VycmVudCBBUEksIGJ1dCBub3QgZmluZCBpbiB0aGUgZ2VuZXJhdGVkIGpzb24gZmlsZT8qKiAgCiAgQ2hlY2sgeW91ciByb3V0aW5nIHNldHRpbmdzLgoKLSAqKlJlcG9ydCBlcnJvciB3aGVuIHJlcXVpcmUgYHJvdXRlcy5yYmA/KioqCiAgMS4gUnVuIGByYWlscyByb3V0ZXNgLgogIDIuIENvcHkgdGhlIG91dHB1dCB0byBhIGZpbGUsIGZvciBleGFtcGxlIGBjb25maWcvcm91dGVzLnR4dGAuCiAgICAgSWdub3JlIHRoZSBmaWxlIGBjb25maWcvcm91dGVzLnR4dGAuCiAgMy4gUHV0IGBjLnJhaWxzX3JvdXRlc19maWxlID0gJ2NvbmZpZy9yb3V0ZXMudHh0J2AgdG8geW91ciBaUk8gY29uZmlnLgoKCiMjIEFib3V0IGBPcGVuQXBpLmRvY3NgIGFuZCBgT3BlbkFwaS5yb3V0ZXNfaW5kZXhgCgogIEFmdGVyIGBPcGVuQXBpLndyaXRlX2RvY3NgLCB0aGUgYWJvdmUgdHdvIG1vZHVsZSB2YXJpYWJsZXMgd2lsbCBiZSBnZW5lcmF0ZWQuCgogIGBPcGVuQXBpLmRvY3NgOiBBIEhhc2ggd2l0aCBBUEkgbmFtZXMgYXMga2V5cywgYW5kIGRvY3VtZW50cyBvZiBlYWNoIEFQSXMgYXMgdmFsdWVzLiAgCiAgZG9jdW1lbnRzIGFyZSBpbnN0YW5jZXMgb2YgQWN0aXZlU3VwcG9ydDo6SGFzaFdpdGhJbmRpZmZlcmVudEFjY2Vzcy4KCiAgYE9wZW5BcGkucm91dGVzX2luZGV4YDogSW52ZXJ0ZWQgaW5kZXggb2YgY29udHJvbGxlciBwYXRoIHRvIEFQSSBuYW1lIG1hcHBpbmdzLiAgCiAgTGlrZTogYHsgJ2FwaS92MS9leGFtcGxlcycgPT4gOmhvbWVwYWdlX2FwaSB9YCAgCiAgSXQncyB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBsb29rIHVwIGEgZG9jdW1lbnQgYmFzZWQgb24gYSBjb250cm9sbGVyIGFuZCBkbyBzb21ldGhpbmcuCgojIyBEZXZlbG9wbWVudAoKICBBZnRlciBjaGVja2luZyBvdXQgdGhlIHJlcG8sIHJ1biBgYmluL3NldHVwYCB0byBpbnN0YWxsIGRlcGVuZGVuY2llcy4gVGhlbiwgcnVuIGByYWtlIHNwZWNgIHRvIHJ1biB0aGUgdGVzdHMuIFlvdSBjYW4gYWxzbyBydW4gYGJpbi9jb25zb2xlYCBmb3IgYW4gaW50ZXJhY3RpdmUgcHJvbXB0IHRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gZXhwZXJpbWVudC4KCiAgVG8gaW5zdGFsbCB0aGlzIGdlbSBvbnRvIHlvdXIgbG9jYWwgbWFjaGluZSwgcnVuIGBidW5kbGUgZXhlYyByYWtlIGluc3RhbGxgLiBUbyByZWxlYXNlIGEgbmV3IHZlcnNpb24sIHVwZGF0ZSB0aGUgdmVyc2lvbiBudW1iZXIgaW4gYHZlcnNpb24ucmJgLCBhbmQgdGhlbiBydW4gYGJ1bmRsZSBleGVjIHJha2UgcmVsZWFzZWAsIHdoaWNoIHdpbGwgY3JlYXRlIGEgZ2l0IHRhZyBmb3IgdGhlIHZlcnNpb24sIHB1c2ggZ2l0IGNvbW1pdHMgYW5kIHRhZ3MsIGFuZCBwdXNoIHRoZSBgLmdlbWAgZmlsZSB0byBbcnVieWdlbXMub3JnXShodHRwczovL3J1YnlnZW1zLm9yZykuCgojIyBMaWNlbnNlCgogIFRoZSBnZW0gaXMgYXZhaWxhYmxlIGFzIG9wZW4gc291cmNlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgW01JVCBMaWNlbnNlXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuCgojIyBDb2RlIG9mIENvbmR1Y3QKCiAgRXZlcnlvbmUgaW50ZXJhY3RpbmcgaW4gdGhlIFplcm8tUmFpbHNPcGVuQXBpIHByb2plY3TigJlzIGNvZGViYXNlcywgaXNzdWUgdHJhY2tlcnMsIGNoYXQgcm9vbXMgYW5kIG1haWxpbmcgbGlzdHMgaXMgZXhwZWN0ZWQgdG8gZm9sbG93IHRoZSBbY29kZSBvZiBjb25kdWN0XShDT0RFX09GX0NPTkRVQ1QubWQpLgo= readmeEtag: '"0c9f9b900b7b94594b7b271215105f3bb1081310"' readmeLastModified: Mon, 26 Feb 2024 09:23:03 GMT repositoryId: 103143995 description: >- Concise DSL for generating OpenAPI Specification 3 (OAS3) JSON documentation for Ruby application. created: '2017-09-11T14:09:24Z' updated: '2025-05-13T01:54:35Z' language: Ruby archived: false stars: 170 watchers: 3 forks: 22 owner: zhandao logo: https://avatars.githubusercontent.com/u/24402029?v=4 license: MIT repoEtag: '"f6e642d2f9b51c7f438b534b871b56275d7365d663944f74d877fbda350a9502"' repoLastModified: Tue, 13 May 2025 01:54:35 GMT id: b6b6454891a26e88286d7f79814c63b0 - source: IMPLEMENTATIONS.md name: slush-vertx homepage: https://github.com/pmlopes/slush-vertx language: - Java - Kotlin - Groovy source_description: >- Generate server skeleton for [Vert.x Web API Contract](http://vertx.io/docs/#web) and API Client based on [Vert.x 3 Web Client](http://vertx.io/docs/#web) category: Code Generators foundInMaster: true repository: https://github.com/pmlopes/slush-vertx repositoryMetadata: base64Readme: >- IyBUaGlzIHByb2plY3QgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBodHRwczovL2dpdGh1Yi5jb20vcG1sb3Blcy92ZXJ0eC1zdGFydGVyCgoKIyBzbHVzaC12ZXJ0eAoKWyFbTlBNXShodHRwczovL25vZGVpLmNvL25wbS9zbHVzaC12ZXJ0eC5wbmc/ZG93bmxvYWRzPXRydWUmZG93bmxvYWRSYW5rPXRydWUmc3RhcnM9dHJ1ZSldKGh0dHBzOi8vbm9kZWkuY28vbnBtL3NsdXNoLXZlcnR4LykKClshW1R3aXR0ZXJdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdHdpdHRlci91cmwvaHR0cHMvZ2l0aHViLmNvbS9wbWxvcGVzL3NsdXNoLXZlcnR4LnN2Zz9zdHlsZT1zb2NpYWwpXShodHRwczovL3R3aXR0ZXIuY29tL2ludGVudC90d2VldD90ZXh0PVdvdzomdXJsPSU1Qm9iamVjdCUyME9iamVjdCU1RCkKClNjYWZmb2xkIHdpdGggW1NsdXNoXVtzbHVzaC11cmxdIHlvdXIgbmV3IFZlcnQueCBhcHBsaWNhdGlvbiEKCnNsdXNoLXZlcnR4IGlzIGEgY29sbGVjdGlvbiBvZiB0ZW1wbGF0ZSBkcml2ZW4gY29kZSBnZW5lcmF0b3JzIHRvIHNjYWZmb2xkIFZlcnQueCBwcm9qZWN0cyBiYXNlZCBvbiBsYW5ndWFnZSBhbmQgYnVpbGQgdG9vbCB1c2VkLgoKIyMgR2VuZXJhdG9ycwoKfCBHZW5lcmF0b3IgfCBEZXNjcmlwdGlvbiB8IEphdmEgfCBLb3RsaW4gfCBKYXZhc2NyaXB0IHwgR3Jvb3Z5IHwgUnVieSB8CnwtLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfC0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tfAp8ICoqVmVydC54IFN0YXJ0ZXIgcHJvamVjdCoqIHwgR2VuZXJhdGUgYW4gZW1wdHkgcHJvamVjdCBjb25maWd1cmVkIGZvciBWZXJ0LnggMyBGcmFtZXdvcmsgfDpoZWF2eV9jaGVja19tYXJrOiB8IDpoZWF2eV9jaGVja19tYXJrOiB8IDpoZWF2eV9jaGVja19tYXJrOiB8IDpoZWF2eV9jaGVja19tYXJrOiB8IDpoZWF2eV9jaGVja19tYXJrOiB8CnwgKipWZXJ0LnggV2ViIFNlcnZlciBTdGFydGVyKiogfCBHZW5lcmF0ZSBhIHNrZWxldG9uIHdpdGggc291cmNlcyBhbmQgdGVzdHMgZm9yIFZlcnQueCAzIFdlYiBwb3dlcmVkIFJFU1Qgc2VydmVyIHwgOmhlYXZ5X2NoZWNrX21hcms6IHwgOmhlYXZ5X2NoZWNrX21hcms6IHwgOmhlYXZ5X2NoZWNrX21hcms6IHwgOng6IHwgOng6IHwKfCAqKlZlcnQueCBXZWIgU2VydmVyIE9wZW5BUEkgcHJvamVjdCoqIHwgR2VuZXJhdGUgYSBza2VsZXRvbiBiYXNlZCBvbiBTd2FnZ2VyIDIvT3BlbkFQSSAzIHNwZWNpZmljYXRpb24gd2l0aCBzb3VyY2VzIGFuZCB0ZXN0cyBmb3IgVmVydC54IDMgV2ViIHBvd2VyZWQgUkVTVCBzZXJ2ZXIgfCA6aGVhdnlfY2hlY2tfbWFyazogfCA6aGVhdnlfY2hlY2tfbWFyazogfCA6eDogfCA6aGVhdnlfY2hlY2tfbWFyazogfCA6eDogfAp8ICoqVmVydC54IFdlYiBDbGllbnQgT3BlbkFQSSBwcm9qZWN0KiogfCBHZW5lcmF0ZSBhIGNsaWVudCBiYXNlZCBvbiBhIFN3YWdnZXIgMi9PcGVuQVBJIDMgc3BlY2lmaWNhdGlvbiB8IDpoZWF2eV9jaGVja19tYXJrOiB8IDpoZWF2eV9jaGVja19tYXJrOiB8IDp4OiB8IDpoZWF2eV9jaGVja19tYXJrOiB8IDp4OiB8CgpMaXN0IG9mIHN1cHBvcnRlZCBidWlsZCB0b29sczoKCiogTWF2ZW4KKiBHcmFkbGUKKiBOUE0KKiBOUE0gd2l0aCBqYXIgcGFja2FnaW5nICh0aGFua3MgdG8gW1ZlcnQueCBXZWJwYWNrIHBsdWdpbl0oaHR0cHM6Ly9naXRodWIuY29tL3BtbG9wZXMvd2VicGFjay12ZXJ0eC1wbHVnaW4pKQoKSWYgeW91IHdhbnQgdG8gYWRkIHlvdXIgb3duIGdlbmVyYXRvciBhbmQvb3IgYnVpbGQgdG9vbCBnaXZlIGEgbG9vayBhdCBbaG93IHRvIGNvbnRyaWJ1dGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9wbWxvcGVzL3NsdXNoLXZlcnR4L3dpa2kvSG93LXRvLWNvbnRyaWJ1dGUpCgojIyBJbnN0YWxsCgoxLiBJbnN0YWxsIFtgZ3VscC5qc2BdW2d1bHAtdXJsXQoyLiBJbnN0YWxsIFtTbHVzaF1bc2x1c2gtdXJsXQozLiBJbnN0YWxsIHRoZSBbYHNsdXNoLXZlcnR4YF1bZ2VuZXJhdG9yLXVybF0gZ2VuZXJhdG9yCgpgYGBzaAokIG5wbSBpbnN0YWxsIC1nIGd1bHAgc2x1c2ggc2x1c2gtdmVydHgKYGBgCgojIyBVc2FnZQoKRXhhbXBsZSBvZiBWZXJ0LnggU3RhcnRlciBnZW5lcmF0b3IKWyFbYXNjaWljYXN0XSguL2RlbW8uZ2lmKV0oaHR0cHM6Ly9hc2NpaW5lbWEub3JnL2EvbFIyM09Rck1uRFk2elpOZ2doOGtnVUFFNCkKCkV4YW1wbGUgb2YgVmVydC54IFdlYiBTdGFydGVyIGdlbmVyYXRvcgpbIVthc2NpaWNhc3RdKC4vZGVtbzIuZ2lmKV0oaHR0cHM6Ly9hc2NpaW5lbWEub3JnL2EvRE9aNjM5elV4a3NvTW80UHhEVWMxMnNOTykKCiMjIENvbnRyaWJ1dGUKCklmIHlvdSB3YW50IHRvIGFkZCBhIGdlbmVyYXRvciwgYWRkIHRlbXBsYXRlcyB0byBhbiBleGlzdGluZyBnZW5lcmF0b3Igb3Igc29tZXRoaW5nIGVsc2UgZ2l2ZSBhIGxvb2sgYXQgW2hvdyB0byBjb250cmlidXRlXShodHRwczovL2dpdGh1Yi5jb20vcG1sb3Blcy9zbHVzaC12ZXJ0eC93aWtpL0hvdy10by1jb250cmlidXRlKQoKIyMgQ2hhbmdlbG9nCgojIyMgMC4wLjMKCiogRml4ZWQgdGVtcGxhdGVzIGZvciBWZXJ0LnggMy41LjAgcmVsZWFzZQoqIFVwZGF0ZWQgYHN3YWdnZXIyb3BlbmFwaWAKCiMjIyAwLjAuMgoKKiBOZXcgbGlmZSB0byB0aGUgcHJvamVjdCEKCiMjIExpY2Vuc2UKCk1JVCDCqSBbUGF1bG8gTG9wZXNdKGh0dHA6Ly9qZXRkcm9uZS54eXopIGFuZCBbRnJhbmNlc2NvIEd1YXJkaWFuaV0oaHR0cDovL3NsaW5reWRldmVsb3Blci5naXRodWIuaW8pCgpbc2x1c2gtdXJsXTogaHR0cDovL3NsdXNoanMuZ2l0aHViLmlvCltndWxwLXVybF06IGh0dHA6Ly9ndWxwanMuY29tCltnZW5lcmF0b3ItdXJsXTogaHR0cHM6Ly9naXRodWIuY29tL3BtbG9wZXMvc2x1c2gtdmVydHgK readmeEtag: '"03060079455dd3a6a0461f53b538a4eb20e65fa9"' readmeLastModified: Tue, 26 Mar 2019 10:34:45 GMT repositoryId: 88743692 description: null created: '2017-04-19T12:42:00Z' updated: '2023-01-28T18:43:48Z' language: JavaScript archived: true stars: 36 watchers: 9 forks: 4 owner: pmlopes logo: https://avatars.githubusercontent.com/u/849467?v=4 repoEtag: '"771bdcae091b8ba0920e41dde10f1cc2cd70f534d4ad73f98e11ad75036c7902"' repoLastModified: Sat, 28 Jan 2023 18:43:48 GMT id: d98d45414234c8d035261bf960a46a04 - source: IMPLEMENTATIONS.md name: swac homepage: https://github.com/swaggest/swac language: - PHP - Go source_description: Generates clients for Go and PHP from OpenAPI 2/3. category: Code Generators foundInMaster: true repository: https://github.com/swaggest/swac repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIDMuMCAvIFN3YWdnZXIgMi4wIGNvbXBpbGVyCgpBIHRvb2wgdG8gcmVuZGVyIEFQSSBzcGVjIGFzIGNvZGUuCgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9zd2FnZ2VzdC9zd2FjLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL3N3YWdnZXN0L3N3YWMpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9zd2FnZ2VzdC9zd2FjL2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3N3YWdnZXN0L3N3YWMpClshW0ltYWdlIFNpemVdKGh0dHBzOi8vaW1hZ2VzLm1pY3JvYmFkZ2VyLmNvbS9iYWRnZXMvaW1hZ2Uvc3dhZ2dlc3Qvc3dhYy5zdmcpXShodHRwczovL21pY3JvYmFkZ2VyLmNvbS9pbWFnZXMvc3dhZ2dlc3Qvc3dhYykKIVtDb2RlIGxpbmVzXShodHRwczovL3Nsb2MueHl6L2dpdGh1Yi9zd2FnZ2VzdC9zd2FjLz9jYXRlZ29yeT1jb2RlKQohW0NvbW1lbnRzXShodHRwczovL3Nsb2MueHl6L2dpdGh1Yi9zd2FnZ2VzdC9zd2FjLz9jYXRlZ29yeT1jb21tZW50cykKCiMjIEluc3RhbGxhdGlvbgoKIyMjIFBoYXIKCkRvd25sb2FkIGBzd2FjYCBmcm9tIFtyZWxlYXNlc10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L3N3YWMvcmVsZWFzZXMpIHBhZ2UuCgojIyMgRG9ja2VyCgpgYGBiYXNoCmRvY2tlciBydW4gLS1ybSBzd2FnZ2VzdC9zd2FjIHN3YWMgLS1oZWxwCmBgYAoKYGBgCnYwLjEuMjggc3dhYwpPcGVuQVBJL1N3YWdnZXIgY29tcGlsZXIsIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9zd2FjClVzYWdlOiAKICAgc3dhYyA8YWN0aW9uPgogICBhY3Rpb24gICBBY3Rpb24gbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICBBbGxvd2VkIHZhbHVlczogcGhwLWd1enpsZS1jbGllbnQsIGdvLWNsaWVudCwganMtY2xpZW50LCBtYXJrZG93bgouLi4KYGBgCgpFeGFtcGxlCgpgYGBiYXNoCm1rZGlyIHBldHN0b3JlICYmIGNkIHBldHN0b3JlCmRvY2tlciBydW4gLXYgJChwd2QpOi9jb2RlIC11IDEwMDA6MTAwMCBzd2FnZ2VzdC9zd2FjIHN3YWMgcGhwLWd1enpsZS1jbGllbnQgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vbWFzdGVyL2V4YW1wbGVzL3YyLjAvanNvbi9wZXRzdG9yZS5qc29uIC0tbmFtZXNwYWNlIE15QXBwXFxQZXRzdG9yZQpgYGAKClNjaGVtYSBjYW4gYmUgcGFzc2VkIGJ5IFNURElOIHVzaW5nIGAtYCBhcyBmaWxlIHBhdGguCgpgYGBiYXNoCmNhdCAuL29wZW5hcGkuanNvbiB8IGRvY2tlciBydW4gLWkgLS1ybSBzd2FnZ2VzdC9zd2FjIHN3YWMgbWFya2Rvd24gLQpgYGAKCiMjIyBDb21wb3NlcgoKW0luc3RhbGwgUEhQIENvbXBvc2VyXShodHRwczovL2dldGNvbXBvc2VyLm9yZy9kb2MvMDAtaW50cm8ubWQpCgpgYGBiYXNoCmNvbXBvc2VyIGdsb2JhbCByZXF1aXJlIHN3YWdnZXN0L3N3YWMKYGBgCgojIyBVc2FnZQoKIyMjIFBIUCBDbGllbnQKCmBgYApzd2FjIHBocC1ndXp6bGUtY2xpZW50IC0taGVscApgYGAKCmBgYAp2MC4xLjAgc3dhYyBwaHAtZ3V6emxlLWNsaWVudApPcGVuQVBJL1N3YWdnZXIgY29tcGlsZXIsIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9zd2FjClVzYWdlOiAKICAgc3dhYyBwaHAtZ3V6emxlLWNsaWVudCA8c2NoZW1hUGF0aD4gLS1uYW1lc3BhY2UgPG5hbWVzcGFjZT4KICAgc2NoZW1hUGF0aCAgIFBhdGgvVVJMIHRvIE9wZW5BUEkvU3dhZ2dlciBzY2hlbWEKICAgCk9wdGlvbnM6IAogICAtLW9wZXJhdGlvbnMgPG9wZXJhdGlvbnM+ICAgICAgT3BlcmF0aW9ucyBmaWx0ZXIgaW4gZm9ybSBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBtZXRob2QvcGF0aCwgZGVmYXVsdCBlbXB0eQogICAtLXByb2plY3QtcGF0aCA8cHJvamVjdFBhdGg+ICAgUGF0aCB0byBwcm9qZWN0IHJvb3QsIGRlZmF1bHQgLi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAtLW5hbWVzcGFjZSA8bmFtZXNwYWNlPiAgICAgICAgUHJvamVjdCBuYW1lc3BhY2UKYGBgCgpUaGUgZ2VuZXJhdGVkIGNsaWVudCBkZXBlbmRzIG9uIFtgc3dhZ2dlc3QvcmVzdC1jbGllbnRgXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvcGhwLXJlc3QtY2xpZW50KSwKYGd1enpsZWh0dHAvZ3V6emxlYCA2LCBhbmQgW2Bzd2FnZ2VzdC9qc29uLXNjaGVtYWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9waHAtanNvbi1zY2hlbWEpLgoKW0V4YW1wbGVzXSgvZXhhbXBsZXMvcGhwLWd1enpsZS1jbGllbnQpLgoKIyMjIEdvIENsaWVudAoKYGBgCnN3YWMgZ28tY2xpZW50IC0taGVscCAKYGBgCgpgYGAKdjAuMS4xNCBzd2FjIGdvLWNsaWVudApPcGVuQVBJL1N3YWdnZXIgY29tcGlsZXIsIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9zd2FjClVzYWdlOiAKICAgc3dhYyBnby1jbGllbnQgPHNjaGVtYVBhdGg+CiAgIHNjaGVtYVBhdGggICBQYXRoL1VSTCB0byBPcGVuQVBJL1N3YWdnZXIgc2NoZW1hCiAgIApPcHRpb25zOiAKICAgLS1vcGVyYXRpb25zIDxvcGVyYXRpb25zPiAgICAgICAgICAgICAgIE9wZXJhdGlvbnMgZmlsdGVyIGluIGZvcm0gb2YgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbWV0aG9kL3BhdGgsIGRlZmF1bHQgZW1wdHkgICAgICAgICAgICAgICAgICAKICAgLS1vdXQgPG91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGggdG8gb3V0cHV0IHBhY2thZ2UsIGRlZmF1bHQgLi9jbGllbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS1wa2ctbmFtZSA8cGtnTmFtZT4gICAgICAgICAgICAgICAgICAgIE91dHB1dCBwYWNrYWdlIG5hbWUsIGRlZmF1bHQgImNsaWVudCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS1za2lwLWRlZmF1bHQtYWRkaXRpb25hbC1wcm9wZXJ0aWVzICAgIERvIG5vdCBhZGQgZmllbGQgcHJvcGVydHkgZm9yIHVuZGVmaW5lZCBgYWRkaXRpb25hbFByb3BlcnRpZXNgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS1za2lwLWRvLW5vdC1lZGl0ICAgICAgICAgICAgICAgICAgICAgIFNraXAgYWRkaW5nICJETyBOT1QgRURJVCIgY29tbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS1hZGQtcmVxdWVzdC10YWdzICAgICAgICAgICAgICAgICAgICAgIEFkZCBmaWVsZCB0YWdzIHdpdGggbmFtZSBhbmQgbG9jYXRpb24gdG8gcmVxdWVzdCBzdHJ1Y3R1cmUgcHJvcGVydGllcywgZS5nLiAnSUQgaW50IGBxdWVyeToiaWQiYCcKICAgLS1zaG93LWNvbnN0LXByb3BlcnRpZXMgICAgICAgICAgICAgICAgIFNob3cgcHJvcGVydGllcyB3aXRoIGNvbnN0YW50IHZhbHVlcywgaGlkZGVuIGJ5IGRlZmF1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS1rZWVwLXBhcmVudC1pbi1wcm9wZXJ0eS1uYW1lcyAgICAgICAgIEtlZXAgcGFyZW50IHByZWZpeCBpbiBwcm9wZXJ0eSBuYW1lLCByZW1vdmVkIGJ5IGRlZmF1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS1pZ25vcmUtbnVsbGFibGUgICAgICAgICAgICAgICAgICAgICAgIEFkZCBgb21pdGVtcHR5YCB0byBudWxsYWJsZSBwcm9wZXJ0aWVzLCByZW1vdmVkIGJ5IGRlZmF1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS1pZ25vcmUteGdvLXR5cGUgICAgICAgICAgICAgICAgICAgICAgIElnbm9yZSBgeC1nby10eXBlYCBpbiBzY2hlbWEgdG8gc2tpcCBnZW5lcmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS13aXRoLXplcm8tdmFsdWVzICAgICAgICAgICAgICAgICAgICAgIFVzZSBwb2ludGVyIHR5cGVzIHRvIGF2b2lkIHplcm8gdmFsdWUgYW1iaWd1aXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS1mbHVlbnQtc2V0dGVycyAgICAgICAgICAgICAgICAgICAgICAgIEFkZCBmbHVlbnQgc2V0dGVycyB0byBzdHJ1Y3QgZmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS1pZ25vcmUtcmVxdWlyZWQgICAgICAgICAgICAgICAgICAgICAgIElnbm9yZSBpZiBwcm9wZXJ0eSBpcyByZXF1aXJlZCB3aGVuIGRlY2lkaW5nIG9uIHBvaW50ZXIgdHlwZSBvciBvbWl0ZW1wdHkgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS1yZW5hbWVzIDxyZW5hbWVzLi4uPiAgICAgICAgICAgICAgICAgIE1hcCBvZiBleHBvcnRlZCBzeW1ib2wgcmVuYW1lcywgZXhhbXBsZSBGcm9tOlRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS13aXRoLXRlc3RzICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlICh1biltYXJzaGFsaW5nIHRlc3RzIGZvciBlbnRpdGllcyAoZXhwZXJpbWVudGFsIGZlYXR1cmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS1yZXF1aXJlLXhnZW5lcmF0ZSAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIHByb3BlcnRpZXMgd2l0aCBgeC1nZW5lcmF0ZTogdHJ1ZWAgb25seSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS12YWxpZGF0ZS1yZXF1aXJlZCAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIHZhbGlkYXRpb24gY29kZSB0byBjaGVjayByZXF1aXJlZCBwcm9wZXJ0aWVzIGR1cmluZyB1bm1hcnNoYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAKYGBgCgpbRXhhbXBsZXNdKC9leGFtcGxlcy9nby1jbGllbnQpLgoKVGhlIGdlbmVyYXRlZCBjbGllbnQgaXMgYSBzaW5nbGUgcGFja2FnZSB3aXRob3V0IGV4dGVybmFsIGRlcGVuZGVuY2llcy4KCiMjIyBKYXZhU2NyaXB0IENsaWVudAoKYGBgCnN3YWMganMtY2xpZW50IC0taGVscCAKYGBgCgpgYGAKdjAuMS4yMSBzd2FjIGpzLWNsaWVudApPcGVuQVBJL1N3YWdnZXIgY29tcGlsZXIsIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9zd2FjClVzYWdlOiAKICAgc3dhYyBqcy1jbGllbnQgPHNjaGVtYT4KICAgc2NoZW1hICAgUGF0aC9VUkwgdG8gT3BlbkFQSS9Td2FnZ2VyIHNjaGVtYQogICAKT3B0aW9uczogCiAgIC0tb3BlcmF0aW9ucyA8b3BlcmF0aW9ucz4gICAgICBPcGVyYXRpb25zIGZpbHRlciBpbiBmb3JtIG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIG1ldGhvZC9wYXRoLCBkZWZhdWx0IGVtcHR5ICAgICAgICAgCiAgIC0taWdub3JlLW9wZXJhdGlvbi1pZCAgICAgICAgICBJZ25vcmUgb3BlcmF0aW9uSWQgYW5kIGFsd2F5cyBuYW1lIG9wZXJhdGlvbnMgdXNpbmcgbWV0aG9kIGFuZCBwYXRoICAgICAgICAgICAgICAgICAgICAgCiAgIC0tY2xpZW50LW5hbWUgPGNsaWVudE5hbWU+ICAgICBOYW1lIG9mIGdlbmVyYXRlZCBjbGllbnQgY2xhc3MsIGRlZmF1bHQgQVBJQ2xpZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgIC0tdHlwZXMtcHJlZml4IDx0eXBlc1ByZWZpeD4gICBQcmVmaXggZ2VuZXJhdGVkIGpzZG9jIGNsYXNzIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgIC0tb3V0IDxvdXQ+ICAgICAgICAgICAgICAgICAgICBQYXRoIHRvIG91dHB1dCBmaWxlcywgZGVmYXVsdCAuL2NsaWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgIC0tcGF0Y2hlcyA8cGF0Y2hlcy4uLj4gICAgICAgICBKU09OIHBhdGNoZXMgdG8gYXBwbHkgdG8gc2NoZW1hIGZpbGUgYmVmb3JlIHByb2Nlc3NpbmcsIG1lcmdlIHBhdGNoZXMgYXJlIGFsc28gc3VwcG9ydGVkCmBgYAoKW0V4YW1wbGVzXSgvZXhhbXBsZXMvanMtY2xpZW50KS4KCmBgYApzd2FjIGpzLWNsaWVudCBvcGVuYXBpLmpzb24gLS1vdXQgLi8gLS1jbGllbnQtbmFtZSBCYWNrZW5kIC0tdHlwZXMtcHJlZml4IHhoCmBgYAoKVGhlIGdlbmVyYXRlZCBjbGllbnQgaXMgYSBFUzUgY2xhc3MgdXNpbmcgYFhNTEh0dHBSZXF1ZXN0YCBhbmQgYGpzZG9jYCB0eXBlIGRlZmluaXRpb25zIHdpdGhvdXQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzCnN1aXRhYmxlIGZvciBkaXJlY3QgdXNhZ2UgaW4gYnJvd3NlcnMuCgojIyMgTWFya2Rvd24KCmBgYApzd2FjIG1hcmtkb3duIC0taGVscApgYGAKYGBgCnYwLjEuMjQgc3dhYyBtYXJrZG93bgpPcGVuQVBJL1N3YWdnZXIgY29tcGlsZXIsIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9zd2FjClVzYWdlOiAKICAgc3dhYyBtYXJrZG93biA8c2NoZW1hPgogICBzY2hlbWEgICBQYXRoL1VSTCB0byBPcGVuQVBJL1N3YWdnZXIgc2NoZW1hCiAgIApPcHRpb25zOiAKICAgLS1vcGVyYXRpb25zIDxvcGVyYXRpb25zPiAgICAgICAgIE9wZXJhdGlvbnMgZmlsdGVyIGluIGZvcm0gb2YgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbWV0aG9kL3BhdGgsIGRlZmF1bHQgZW1wdHkgICAgICAgICAKICAgLS1pZ25vcmUtb3BlcmF0aW9uLWlkICAgICAgICAgICAgIElnbm9yZSBvcGVyYXRpb25JZCBhbmQgYWx3YXlzIG5hbWUgb3BlcmF0aW9ucyB1c2luZyBtZXRob2QgYW5kIHBhdGggICAgICAgICAgICAgICAgICAgICAKICAgLS1jbGllbnQtbmFtZSA8Y2xpZW50TmFtZT4gICAgICAgIE5hbWUgb2YgZ2VuZXJhdGVkIGNsaWVudCBjbGFzcywgZGVmYXVsdCBBUElDbGllbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS1hZGQtc2NoZW1hLXVybCA8YWRkU2NoZW1hVXJsPiAgIEFkZCBzY2hlbWEgbGluayB0byB0aGUgZG9jdW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS10eXBlcy1wcmVmaXggPHR5cGVzUHJlZml4PiAgICAgIFByZWZpeCBnZW5lcmF0ZWQgdHlwZSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS1vdXQgPG91dD4gICAgICAgICAgICAgICAgICAgICAgIFBhdGggdG8gb3V0cHV0IGZpbGVzLCBkZWZhdWx0IC4vY2xpZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLS1wYXRjaGVzIDxwYXRjaGVzLi4uPiAgICAgICAgICAgIEpTT04gcGF0Y2hlcyB0byBhcHBseSB0byBzY2hlbWEgZmlsZSBiZWZvcmUgcHJvY2Vzc2luZywgbWVyZ2UgcGF0Y2hlcyBhcmUgYWxzbyBzdXBwb3J0ZWQKIApgYGAKCltFeGFtcGxlc10oL2V4YW1wbGVzLykuCgpgYGAKc3dhYyBtYXJrZG93biBvcGVuYXBpLmpzb24gLS1vdXQgLi9BUEktRG9jcy5tZCAtLXR5cGVzLXByZWZpeCB4aApgYGAKCg== readmeEtag: '"e29647ec6c25983479f1116c193104ad3253a656"' readmeLastModified: Mon, 19 Feb 2024 17:36:15 GMT repositoryId: 215669955 description: 🤖 OpenAPI/Swagger client generator for PHP, Go and JavaScript (ES5) created: '2019-10-17T00:32:59Z' updated: '2025-10-26T16:01:03Z' language: PHP archived: false stars: 10 watchers: 1 forks: 3 owner: swaggest logo: https://avatars.githubusercontent.com/u/19609628?v=4 license: MIT repoEtag: '"64d3e5c626249c2f5c9b6ae3d60a6ef6c92b48e5331c8aedce92eb90f7a2b890"' repoLastModified: Sun, 26 Oct 2025 16:01:03 GMT id: 1486b541e99b5e3e5827ff4adf62f77a - source: openapi3 tags repository: https://github.com/silohub/product-apis v3: true repositoryMetadata: base64Readme: >- WyFbUHVibGlzaCBBUEkgUGFja2FnZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zaWxvaHViL3Byb2R1Y3QtYXBpcy9hY3Rpb25zL3dvcmtmbG93cy9wYWNrYWdlcy1wdWJsaXNoLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc2lsb2h1Yi9wcm9kdWN0LWFwaXMvYWN0aW9ucy93b3JrZmxvd3MvcGFja2FnZXMtcHVibGlzaC55bWwpClshW3BhZ2VzLWJ1aWxkLWRlcGxveW1lbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zaWxvaHViL3Byb2R1Y3QtYXBpcy9hY3Rpb25zL3dvcmtmbG93cy9wYWdlcy9wYWdlcy1idWlsZC1kZXBsb3ltZW50L2JhZGdlLnN2Zz9icmFuY2g9Z2gtcGFnZXMpXShodHRwczovL2dpdGh1Yi5jb20vc2lsb2h1Yi9wcm9kdWN0LWFwaXMvYWN0aW9ucy93b3JrZmxvd3MvcGFnZXMvcGFnZXMtYnVpbGQtZGVwbG95bWVudCkKCiMjIFNldHVwIGRlbCByZXBvc2l0b3JpbwpQYXJhIGNvbXBpbGFyIGVzdGUgcmVwb3NpdG9yaW8gc2UgbmVjZXNpdGFuIHVuIHBhciBkZSBjb25maWd1cmFjaW9uZXMgYWRpY2lvbmFsZXM6CiMjIyBDb25zZWd1aXIgdW4gUGVyc29uYWwgYWNjZXNzIHRva2VuIChQQVQpIGRlIEdpdEh1YgpDb21vIG5vcyB0ZW5lbW9zIHF1ZSBjb25lY3RhciBhbCByZXBvc2l0b3JpbyBkZSBwYXF1ZXRlcyBwcml2YWRvIGRlIEdpdGh1YiwgbmVjZXNpdGFzIHR1IHVzdWFyaW8geSB1biBQQVQgcGFyYSBhdXRlbnRpY2FydGUuCi0gQWPDoSBzZSBnZW5lcmFuIGxvcyBQZXJzb25hbCBhY2Nlc3MgdG9rZW5zOiAoaHR0cHM6Ly9naXRodWIuY29tL3NldHRpbmdzL3Rva2VucykKLSBIYXkgcXVlIGdlbmVyYXIgdW4gdG9rZW4gY29uIGVsIHNjb3BlICoqcmVhZDpwYWNrYWdlcyoqIHBvciBsbyBtZW5vcwotIExhIGV4cGlyYWNpw7NuIHB1ZWRlbiBkZWphcmxhIGVuICoqIk5vIGV4cGlyYXRpb24iKiogc2kgZXMgcXVlIGRlamFuIHNvbG8gZWwgcGVybWlzbyBwYXJhIGxlZXIKLSBsdWVnbyB0ZW7DqXMgcXVlIGNyZWFyIGRvcyBwcm9waWVkYWRlcyBlbiB0dSBzaGVsbAogIC0gKipTSEdIX1VTRVIqKjogdHUgdXN1YXJpbyBHaXRIdWIKICAtICoqU0hHSF9UT0tFTioqOiBlbCBQQVQgcXVlIHRlIGJhamFzdGUgcmVjacOpbgotIEVzdGUgbWlzbW8gdG9rZW4gdmEgYSBzZXJ2aXIgcGFyYSBjb25lY3RhcnNlIGVuIGVsIHJlcG8gZGUgZnJvbnRlbmRzLCBiYWNrZW5kcy4uLiA6LSkKCiMgRXN0cnVjdHVyYSBkZSBkaXJlY3RvcmlvcwotIFsqKm9wZW5hcGkqKl0ob3BlbmFwaS9SRUFETUUubWQpOiB0aWVuZSBsYXMgZnVlbnRlcyBkZSBsYXMgQVBJLiBTZXBhcmFkYXMgZW4gbGEgZXN0cnVjdHVyYSBzdWdlcmlkYSBwb3IgT3BlbkFQSS4KICAtIF9fKi55YW1sX186IGxhIHBhcGE6IGFjw6EgZXN0w6FuIGxhcyBBUEkgZGVjbGFyYWRhcywgcXVlIHVzYW4gcGF0aHMgeSBjb21wb25lbnRzCiAgLSBbKipwYXRocyoqXShvcGVuYXBpL3BhdGhzL1JFQURNRS5tZCk6IHRpZW5lIGxhIGRlZmluaWNpw7NuIGRlIGxhcyBvcGVyYWNpb25lcwogIC0gWyoqY29tcG9uZW50cyoqXShvcGVuYXBpL2NvbXBvbmVudHMvUkVBRE1FLm1kKTogdGllbmUgcGFyw6FtZXRyb3MsIHJlcXVlc3RzLCByZXNwb25zZXMsIGV0Yy4uLiBBc29jaWFkYXMgYSBsb3MgcGF0aHMuCgoqKlVuYSBkZWZpbmljacOzbiBpbXBvcnRhbnRlLi4uKio6IGxvcyBmdWVudGVzIGFkZW50cm8gZGUgb3BlbmFwaSBmdW5jaW9uYW4gZGlyZWN0bywgbm8gaGF5IHF1ZSBnZW5lcmFyIG5hZGEsIHNlIHB1ZWRlbiB2ZXIgeSBuYXZlZ2FyIHNpbiBwcm9ibGVtYS4gCkxhcyBBUEkgZW4geWFtbCBubyBzZSB0b2NhbiBlbiBlbCBidWlsZC4gU2UgdG9jYW4gcG9yIGFmdWVyYSBjb24gc2NyaXB0cywgcGVybyBsb3MgeWFtbCBubyBjYW1iaWFuIGR1cmFudGUgZWwgYnVpbGQuCgojIyBRdWUgZ2VuZXJhbW9zCi0gdW4gb3BlbmFwaS55YW1sIGNvbXBsZXRvIHBvciBjYWRhIEFQSSwgcXVlIG5vIGRlcGVuZGUgZGUgb3Ryb3MgYXJjaGl2b3MsIGNvbW8gZXN0w6FuIGxvcyBvcmlnaW5hbGVzCi0gdW5hIGNsYXNlIGFic3RyYWN0YSBjb21vIHNlcnZlciBwdWJsaWNhZGEgY29tbyBwYXF1ZXRlIGVuIEdpdGh1YiAKLSB1bmEgY2xpZW50ZSBqYXZhc2NyaXB0IGNvbiBBeGlvcyBwYXJhIGVsIGZyb250LiBwdWJsaWNhZG8gY29tbyBwYXF1ZXRlIGVuIEdpdGh1YgotIGVsIHNpdGlvIGRlIGRvY3VtZW50YWNpw7NuLCBwb3IgYWhvcmEgc3ViaWRvIGEgZ2l0aHViIHBhZ2VzCgojIFZlcnNpb25hZG8gZGUgQVBJcwpMYXMgQVBJIG5vIHNlIHZlcnNpb25hbiBjb21vIGVsIGPDs2RpZ28sIHNpbm8gcXVlIG5vc290cm9zIGRlY2lkaW1vcyBjYW1iaWFyIGxhIHZlcnNpb24uIAoKIyBEZXBlbmRlbmNpYXMKQWxndW5hcyBkZSBsYXMgY29zYXMgcXVlIHVzYW1vcyBwYXJhIHB1YmxpY2FyIGxhcyBBUEkKLSBbUmFwaURvY10oaHR0cHM6Ly9tcmluOS5naXRodWIuaW8vUmFwaURvYy8pIGVzdG8gc2lydmEgcGFyYSBtb3N0cmFyIGxhIGFwaSBZYW1sIGVuIGZvcm1hdG8gZW50ZW5kaWJsZS4uLiDCoWVzdMOhIG11eSBidWVuYSEKCiMgTW9kaWZpY2FyIHRlbXBsYXRlcwotIHBhcmEgZXh0cmFlciBsb3MgdGVtcGxhdGVzIGRlIHNlcnZlcjogYHBucG0gZXhlYyBvcGVuYXBpLWdlbmVyYXRvci1jbGkgYXV0aG9yIHRlbXBsYXRlIC0tZ2VuZXJhdG9yLW5hbWUgamF2YS1taWNyb25hdXQtc2VydmVyIC0tb3V0cHV0IC5zaWxvaHViL3RlbXBsYXRlcy9zZXJ2ZXItcGFja2FnZXMvZ2VuZXJhdG9yYAotIHBhcmEgZXh0cmFlciBsb3MgdGVtcGxhdGVzIGRlIGNsaWVudCBqczogYHBucG0gZXhlYyBvcGVuYXBpLWdlbmVyYXRvci1jbGkgYXV0aG9yIHRlbXBsYXRlIC0tZ2VuZXJhdG9yLW5hbWUgdHlwZXNjcmlwdC1heGlvcyAtLW91dHB1dCAuc2lsb2h1Yi90ZW1wbGF0ZXMvY2xpZW50LWphdmFzY3JpcHQtcGFja2FnZXMvZ2VuZXJhdG9yYAotIHBhcmEgZXh0cmFlciBsb3MgdGVtcGxhdGVzIGRlIGNsaWVudCBqYXZhOiBgcG5wbSBleGVjIG9wZW5hcGktZ2VuZXJhdG9yLWNsaSBhdXRob3IgdGVtcGxhdGUgLS1nZW5lcmF0b3ItbmFtZSBqYXZhLW1pY3JvbmF1dC1jbGllbnQgLS1vdXRwdXQgLnNpbG9odWIvdGVtcGxhdGVzL2NsaWVudC1qYXZhLXBhY2thZ2VzL2dlbmVyYXRvcmAKLSBwYXJhIGV4dHJhZXIgbG9zIHRlbXBsYXRlcyBkZSBhcGktZmlsZXM6IGBwbnBtIGV4ZWMgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIGF1dGhvciB0ZW1wbGF0ZSAtLW91dHB1dCBidWlsZC90ZW1wbGF0ZXMvYXBpLWZpbGVzIC0tZ2VuZXJhdG9yLW5hbWUgb3BlbmFwaS15YW1sYAo= readmeEtag: '"fb466307aa679925c9623e311f08e44d66c95e99"' readmeLastModified: Thu, 02 Jun 2022 14:03:18 GMT repositoryId: 395638198 description: APIs del producto created: '2021-08-13T12:00:44Z' updated: '2022-02-02T22:09:01Z' language: Mustache archived: false stars: 0 watchers: 1 forks: 0 owner: silohub logo: https://avatars.githubusercontent.com/u/88662712?v=4 license: MIT repoEtag: '"3712aadd9f8c7c79876c84ef0d19c8eafe60c1e8c998897a446b2b79585fdb81"' repoLastModified: Wed, 02 Feb 2022 22:09:01 GMT foundInMaster: true category: SDK id: a0ff9d2b34f7567c2fbbc3d4cfd79238 - source: openapi3 tags repository: https://github.com/unjello/openapi-mock-server v3: true repositoryMetadata: base64Readme: >- aW1hZ2U6Omh0dHA6Ly91bm1haW50YWluZWQudGVjaC9iYWRnZS5zdmdbbGluaz1odHRwOi8vdW5tYWludGFpbmVkLnRlY2gvXQ0KDQo9IERFUFJFQ0FURUQNCg0KX29wZW5hcGktbW9jay1zZXJ2ZXJfIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQsIHBsZWFzZSBjb25zaWRlciB1c2luZyBodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1wYXJzZXJbc3dhZ2dlci1wYXJzZXJdLg0K readmeEtag: '"4dbd01d7084b7379956c760183af4a64ada7198f"' readmeLastModified: Wed, 01 May 2019 08:49:23 GMT repositoryId: 128439257 description: DEPRECATED. Create mock server based on Open API 3.0 specification file created: '2018-04-06T18:39:09Z' updated: '2019-05-01T08:50:53Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 1 owner: unjello logo: https://avatars.githubusercontent.com/u/155669?v=4 license: CC0-1.0 repoEtag: '"78fe0466e487696955982b37cf4f1d8254bf1612e76a1354122873451daeea83"' repoLastModified: Wed, 01 May 2019 08:50:53 GMT foundInMaster: true category: - SDK - Code Generators id: a25664802eb7f4926581fd1e48ca435b - source: openapi3 tags repository: https://github.com/marioruiz/api-testing-example v3: true repositoryMetadata: base64Readme: >- IyBBUEkgdGVzdGluZyBleGFtcGxlCgpUaGUgcHVycG9zZSBvZiB0aGlzIGRvY3VtZW50IGlzIHRvIGJlIGFuIGVhc3kgZ3VpZGUgZm9yIGRldnMgYW5kIHRlc3RlcnMgdG8gc3RhcnQgdGVzdGluZyBSRVNUIEFQSXMganVzdCBpbiBtaW51dGVzLgoKRm9yIHRoZSBleGFtcGxlcyB3ZSB3aWxsIGJlIHRlc3RpbmcgdGhlIFsqKlViZXIqKl0oaHR0cHM6Ly9hcGkudWJlci5jb20pIEFQSSB1c2luZyBhIFlBTUwgU3dhZ2dlciAvIE9wZW4gQVBJIGZpbGUgYW5kIFsqKlJlcXJlcyoqXShodHRwczovL3JlcXJlcy5pbi8pIEFQSSB1c2luZyBhIG5vcm1hbCBSZXF1ZXN0IEhhc2ggZmlsZS4KClRvIGdlbmVyYXRlIHRoZSBSZXF1ZXN0IEhhc2hlcyBmcm9tIGEgKipTd2FnZ2VyKiogLyAqKk9wZW4gQVBJIGZpbGUqKiwgcnVuIHRoZSBmaWxlIC4vdXRpbHMvaW1wb3J0X3N3YWdnZXIucmIgb3IgdXNlIHRoZSAqKm9wZW5fYXBpX2ltcG9ydCoqIGNvbW1hbmQgbGluZSBleGVjdXRhYmxlLgoKSWYgeW91IHdhbnQgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBSU3BlYyB0ZXN0cyBmb3IgZXZlcnkgZW5kIHBvaW50IG9mIHlvdXIgU3dhZ2dlciBmaWxlLCB1c2UgdGhlIGNyZWF0ZV90ZXN0cyBnZW06IGh0dHBzOi8vZ2l0aHViLmNvbS9NYXJpb1J1aXovY3JlYXRlX3Rlc3RzCgojIEluc3RhbGxhdGlvbgoKMS4gSW5zdGFsbCBSdWJ5ID49Mi40LiBSZWNvbW1lbmRlZCBsYXN0IDIuNSBzdGFibGUgcmVsZWFzZS4gVG8gc2VlIHdoaWNoIHZlcnNpb24geW91IGFscmVhZHkgaGF2ZSBpbnN0YWxsZWQ6IGBydWJ5IC12YAogICAgKiBbUnVieSBJbnN0YWxsYXRpb25dKGh0dHBzOi8vd3d3LnJ1YnktbGFuZy5vcmcvZW4vZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24vKQoKMi4gSW5zdGFsbCB0aGUgbGlicmFyaWVzIHdlIHVzZSBieSBydW5uaW5nIGZyb20gcm9vdCBmb2xkZXI6CiAgICBgYGBiYXNoCiAgICBidW5kbGUgaW5zdGFsbAogICAgYGBgICAgIAogICAgCiMgRG9jdW1lbnRhdGlvbgoKIyMgR2VuZXJhbCAKICAqIFtSdWJ5IGluIDIwIG1pbnV0ZXNdKGh0dHBzOi8vd3d3LnJ1YnktbGFuZy5vcmcvZW4vZG9jdW1lbnRhdGlvbi9xdWlja3N0YXJ0LykKICAqIFtSdWJ5IGZyb20gb3RoZXIgbGFuZ3VhZ2VzXShodHRwczovL3d3dy5ydWJ5LWxhbmcub3JnL2VuL2RvY3VtZW50YXRpb24vcnVieS1mcm9tLW90aGVyLWxhbmd1YWdlcy8pCiAgKiBbUnVieSBDaGVhdCBTaGVldF0oaHR0cHM6Ly9sZWFybnhpbnltaW51dGVzLmNvbS9kb2NzL3J1YnkvKQoKIyMgTGlicmFyaWVzCiAgKiBbUlNwZWNdKGh0dHA6Ly9yc3BlYy5pbmZvLyksIFtSU3BlYyBDaGVhdFNoZWV0XShodHRwczovL2RldmhpbnRzLmlvL3JzcGVjKQogICogW25pY2VfaHR0cF0oaHR0cHM6Ly9naXRodWIuY29tL01hcmlvUnVpei9uaWNlX2h0dHApCiAgKiBbbmljZV9oYXNoXShodHRwczovL2dpdGh1Yi5jb20vTWFyaW9SdWl6L25pY2VfaGFzaCkKICAqIFtvcGVuX2FwaV9pbXBvcnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9NYXJpb1J1aXovb3Blbl9hcGlfaW1wb3J0KQogICogW2NyZWF0ZV90ZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL01hcmlvUnVpei9jcmVhdGVfdGVzdHMpCgojIFJ1bm5pbmcgdGVzdHMKClRvIHJ1biBhbGwgdGhlIHRlc3RzOgpgYGBiYXNoCnJzcGVjCmBgYAoKVG8gcnVuIGEgcGFydGljdWxhciB0ZXN0IGZpbGU6CmBgYGJhc2gKcnNwZWMgLi9zcGVjL215X3Rlc3Rfc3BlYy5yYgpgYGAKClRvIHJ1biBhIHBhcnRpY3VsYXIgdGVzdCAoZXhhbXBsZSkgaW5zaWRlIGEgdGVzdCBmaWxlLCBhZGQgdGhlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSB0ZXN0IGlzOgpgYGBiYXNoCnJzcGVjIC4vc3BlYy9teV90ZXN0X3NwZWMucmI6NDIKYGBgCgpUaGUgZGVmYXVsdCB2YWx1ZXMgdG8gc2V0IGFsbCB0ZXN0cyBhcmUgb24gYHNldHRpbmdzYCBmb2xkZXIuIFlvdSBjYW4gcGFzcyBwYXJhbWV0ZXJzIHRvIG92ZXJ3cml0ZSB0aGUgc2V0dGluZ3MgaW4gY29tbWFuZCBsaW5lIG9yIEVOViB2YXJpYWJsZXMuCgpgYGBiYXNoCkhPU1Q9MTAuMjAuMzAuNTAgcnNwZWMgLi9zcGVjL215X3Rlc3Rfc3BlYy5yYgpgYGAK readmeEtag: '"a98c8c59ec2fc91e4612b66728595907eb251818"' readmeLastModified: Thu, 14 Mar 2019 11:36:47 GMT repositoryId: 170314956 description: >- Example using RSpec and nice_http to test REST APIs. (Uber API and Reqres API) created: '2019-02-12T12:33:54Z' updated: '2019-03-14T11:37:03Z' language: Ruby archived: false stars: 0 watchers: 1 forks: 0 owner: MarioRuiz logo: https://avatars.githubusercontent.com/u/459564?v=4 repoEtag: '"c57729e620f8c530d98bc017b3ac017804b58d9d9d295280a0b6f47f274a0479"' repoLastModified: Thu, 14 Mar 2019 11:37:03 GMT foundInMaster: true category: Testing id: cf282c3053c42bb7de2bfa9100ac7b1f - source: openapi3 tags repository: https://github.com/tomi77/sent-geo-openapi v3: true repositoryMetadata: base64Readme: IyBzZW50LWdlby1vcGVuYXBpClNFTlQgR0VPIE9wZW5BUEl2MyBzY2hlbWEK readmeEtag: '"c9374ddec23048acf9518419e6959bf796b6837b"' readmeLastModified: Fri, 15 May 2020 09:28:00 GMT repositoryId: 263333160 description: SENT GEO OpenAPIv3 schema created: '2020-05-12T12:42:15Z' updated: '2020-05-15T09:29:44Z' language: null archived: false stars: 0 watchers: 1 forks: 0 owner: tomi77 logo: https://avatars.githubusercontent.com/u/490094?v=4 license: MIT repoEtag: '"536f5c9d4f34f6700e8168ea4431251238ef94812ffc41faf48d426ed7308742"' repoLastModified: Fri, 15 May 2020 09:29:44 GMT foundInMaster: true category: - Data Validators - Parsers id: b9dba61fa79179577c35d58901bca143 - source: openapi3 tags repository: https://github.com/cakirmuha/auction-bid-tracker v3: true repositoryMetadata: base64Readme: >- IyBhdWN0aW9uLWJpZC10cmFja2VyCgpTZXJ2ZXIgZm9yIEF1Y3Rpb24gQmlkIFRyYWNrZXIKCiMjIyBCdWlsZAoKICAgICMgQ2xvbmUKICAgIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vY2FraXJtdWhhL2F1Y3Rpb24tYmlkLXRyYWNrZXIuZ2l0CiAgICBjZCBhdWN0aW9uLWJpZC10cmFja2VyCgogICAgZXhwb3J0IEdPMTExTU9EVUxFPW9uCgogICAgIyBHZW5lcmF0ZSBhc3NldHMKICAgIGdvIGdlbmVyYXRlIC4vY21kL2F1Y3Rpb24tYmlkLXRyYWNrZXIvYXNzZXRzL2dlbi5nbyAKCiAgICAjIENvbXBpbGUKICAgIGdvIGJ1aWxkIC4vY21kL2F1Y3Rpb24tYmlkLXRyYWNrZXIKCiMjIyBSdW4KICAgCiAgICBTZXQgdXAgZW52IHZhcnMsIHRoZW46CiAgIAogICAgLi9hdWN0aW9uLWJpZC10cmFja2VyCgojIyMgT3B0aW9ucwoKICAgIFVzYWdlIG9mIC4vYXVjdGlvbi1iaWQtdHJhY2tlcjoKICAgICAgLWxpc3RlbiBzdHJpbmcKICAgICAgICAgICAgTGlzdGVuIGFkZHIgKGRlZmF1bHQgIjo4MTgxIikKICAgICAgLWxvZyBzdHJpbmcKICAgICAgICAgICAgTG9nIGxldmVsIChkZWJ1ZywgaW5mbywgd2FybiwgZXJyb3IpIChkZWZhdWx0ICJkZWJ1ZyIpCiAgICAgICAgICAgIAojIyMgQ29uY3VycmVuY3kgVGVzdAoKICAgICBnbyB0ZXN0IC4vY21kL2JpZC50cmFja2VyL2NvbmN1cnJlbmN5X3Rlc3QuZ28KICAgICAgICAgICAgCiMjIyBHZW5lcmF0ZQoKR2VuZXJhdGVkIEFQSSBzcGVjIChvcGVuYXBpLnltbCkgaXMgc2VydmVkIGF0IGAvYXBpL3YxL2Fzc2V0cy9vcGVuYXBpLnltbGAKCiMjIyBHbyBWZXQKCiAgICBnbyB2ZXQgLi8uLi4KCiMjIFNvbHV0aW9uIEluc3RydWN0aW9uCgpJbiB0aGlzIHRhc2ssIHdlIGhhdmUgMyBvYmplY3RzKFVzZXIsIEl0ZW0sIEJpZCkuIAoxMDAgbW9jayB1c2VycyBhbmQgNCBtb2NrIGl0ZW1zIGFyZSBjcmVhdGVkIGJ5IHN0YXJ0aW5nIHRoZSBhcHBsaWNhdGlvbi4gTWFwIGRhdGEgc3RydWN0dXJlIGlzIHVzZWQgdG8gYWNjZXNzIGFsbCAzIG9iamVjdHMuIApNYXBzIGFyZSBub3QgdGhyZWFkLXNhZmUgYnkgZGVmYXVsdCBpbiBnb2xhbmcsIHNvIHN5bmMuTWFwIGNhbiBiZSB1c2VkIHRvIGhhbmRsZSBjb25jdXJyZW5jeSBwcm9ibGVtcy4gRGVmYXVsdCBtYXAgaXMgcHJlZmVyZWQgdG8gaGFuZGxlIGNvbmN1cnJlbmN5IGlzc3VlcyBieSBjb2RlIGluIHNvbWUgcGFydCBvZiB0aGUgY29kZS4KLSBVc2VyIG1hcCh0byBhY2Nlc3MgdXNlciBlbGVtZW50cyBmb3IgYSB1c2VyKSAgICAtIGRlZmF1bHQgbWFwOiBzeW5jLlJXTXV0ZXggaXMgdXNlZCB0byByZWFkIHVzZXIgZGF0YS4KICAtIGtleTogdXNlcmlkLCB2YWx1ZTogVXNlciBvYmplY3QKLSBJdGVtIG1hcCh0byBhY2Nlc3MgaXRlbSBlbGVtZW50cyBmb3IgYW4gaXRlbSkgICAtIGRlZmF1bHQgbWFwOiBzeW5jLlJXTXV0ZXggaXMgdXNlZCB0byByZWFkIGl0ZW0gZGF0YS4KICAtIGtleTogaXRlbWlkLCB2YWx1ZTogSXRlbSBvYmplY3QKLSBJdGVtQmlkIG1hcCh0byBhY2Nlc3MgYmlkIGVsZW1lbnRzIGZvciBhbiBpdGVtKSAtIHN5bmMuTWFwOiBObyBuZWVkIHRvIGNvbnNpZGVyIGNvbmN1cnJlbmN5IHByb2JsZW1zIGxpa2UgZGVhZGxvY2ssIHN5bmNocm9uaXphdGlvbi4uLgogIC0ga2V5OiBpdGVtaWQsIHZhbHVlOiBMaXN0IG9mIGJpZHMKICAtIExpc3Qgb2YgYmlkczogTGlua2VkIGxpc3QgaXMgY2hvc2VuIHRvIGFjY2VzcyBiaWRzIGZvciBhbiBpdGVtLiBXaGVuIGEgbmV3IGJpZCBjb21lLCBiaWQgaXMgcHJlcGVuZGVkIHRvIGxpc3QsIHNvIGhlYWQgb2YgbGlzdCB3aWxsIGJlIHRoZSBsYXN0IGJpZCBhbmQvb3IgdGhlIGJpZCBoYXZpbmcgdGhlIGhpZ2hlc3QgYW1vdW50LiBTbGljZSBjYW4gYWxzbyBiZSB1c2VkIGZvciBsaXN0IG9mIGJpcmRzLCBidXQgaXQgd2lsbCBiZSBzb3J0ZWQgYnkgYXNjZW5kaW5nKG5vdCBzbyBpbXBvcnRhbnQgc2luY2Ugd2UgYWx3YXlzIG5lZWQgdG8gYWNjZXNzIHRoZSBoaWdoZXN0IGVsZW1lbnQgdG8gY2hlY2sgYmlkIGFtb3VudCwgYW5kIGl0IGlzIGVhc2lseSBhY2Nlc3NpYmxlIGJ5IGJvdGggbGlua2VkIGxpc3QgYW5kIHNsaWNlIHdpdGhvdXQgdmlzaXRpbmcgbGlzdCkuIElmIHdlIHdhbnQgdG8gZGVsZXRlIGEgdXNlciBhbmQvb3IgcmVtb3ZlIGFsbCBiaWRzIG9mIHVzZXIgZm9yIGFuIGl0ZW0sIHRoZSBjb3N0IG9mIGRlbGV0ZS9hZGQgb2YgbGlua2VkIGxpc3QgaXMgbG93ZXIgdGhhbiBzbGljZShpdCBjYW4gYmUgdGhvdWdodCBhcyB0aGUgcGx1cyBvZiBsaW5rZWQgbGlzdCkuCgojIyMgU29sdXRpb24gdGVzdAoKQXBwbGljYXRpb24gY2FuIGJlIHRlc3RlZCB1c2luZyBHb3JvdXRpbmVzKGVnLiBgZ28gdGVzdCAuL2NtZC9iaWQudHJhY2tlci9jb25jdXJyZW5jeV90ZXN0LmdvYCkuIEJpZCByZXF1ZXN0IGlzIHNlbnQgYnkgYWxsIDEwMCBtb2NrIHVzZXJzIGZvciBhbiBpdGVtLCB0aGVyZSB3aWxsIGJlIG5vIHJ1bnRpbWUgZXJyb3IsIGFuZCB3aW5uaW5nIGJpZCB3aWxsIGJlIGVxdWFsIHRvIHRoZSBoaWdoZXN0IGJpZCBhbW91bnQgb2YgdXNlcnMuCg== readmeEtag: '"c467d2d3031390bb4adffc3c2e046fda6651bb60"' readmeLastModified: Sun, 05 Apr 2020 10:40:19 GMT repositoryId: 252986832 description: null created: '2020-04-04T12:09:02Z' updated: '2020-04-16T07:26:20Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: cakirmuha logo: https://avatars.githubusercontent.com/u/6494452?v=4 license: MIT repoEtag: '"2571c474014cb776e28507d88dced788ade54f5529cca9c31e96397f055586d0"' repoLastModified: Thu, 16 Apr 2020 07:26:20 GMT foundInMaster: true category: Testing id: 7e4760fa3b2c99c3838842cebd762686 - source: openapi3 tags repository: https://github.com/ideadapt/intellij-swagger-annotations v3: true repositoryMetadata: repositoryId: 295204974 description: >- Intellij plugin providing editor features related to swagger and openapi annotations created: '2020-09-13T17:44:50Z' updated: '2025-10-17T08:08:49Z' language: Java archived: false stars: 1 watchers: 1 forks: 0 owner: ideadapt logo: https://avatars.githubusercontent.com/u/1071386?v=4 repoEtag: '"d8ed63c089e9fdb24cba04ec209bd034a2b6c08fb8d55fe419c6eba576e877a1"' repoLastModified: Fri, 17 Oct 2025 08:08:49 GMT foundInMaster: true id: 8ac9057379e79f6ded4e8a73116a1e47 - source: openapi3 tags repository: https://github.com/witguild/spring-boot-rest-api-h2-jpa-security v3: true repositoryMetadata: repositoryId: 339035926 description: null created: '2021-02-15T10:09:18Z' updated: '2021-02-15T11:07:41Z' language: Java archived: false stars: 0 watchers: 1 forks: 0 owner: witguild logo: https://avatars.githubusercontent.com/u/62769457?v=4 repoEtag: '"ef1b42f783b96cc1100479584c41e96c7faf3e0e1ef15f064d01a9dad3f59d61"' repoLastModified: Mon, 15 Feb 2021 11:07:41 GMT foundInMaster: true id: 877a6f167d8f020d30a4e974c750aa08 - source: openapi3 tags repository: https://github.com/nexys-system/postman-openapi-ui v3: true id: 44b760c78f35f82d9790c9f325a67a64 repositoryMetadata: base64Readme: >- IyBQb3N0bWFuIHRvIE9wZW5BUEkgVUkKClRoaXMgaXMgYSB3cmFwcGVyIGFyb3VuZCBbcG9zdG1hbi10by1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vam9vbGZlL3Bvc3RtYW4tdG8tb3BlbmFwaSkgc28gdGhhdCB0aGUgb3BlbiBhcGkgZmlsZSBjYW4gYmUgZ2VuZXJhdGVkIGRpcmVjdGx5IGZyb20gd2l0aGluIHRoZSBicm93c2VyCgpbIVtUZXN0XShodHRwczovL2dpdGh1Yi5jb20vbmV4eXMtc3lzdGVtL3Bvc3RtYW4tb3BlbmFwaS11aS9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbmV4eXMtc3lzdGVtL3Bvc3RtYW4tb3BlbmFwaS11aS9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbCkKWyFbLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95LnltbF0oaHR0cHM6Ly9naXRodWIuY29tL25leHlzLXN5c3RlbS9wb3N0bWFuLW9wZW5hcGktdWkvYWN0aW9ucy93b3JrZmxvd3MvZGVwbG95LnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbmV4eXMtc3lzdGVtL3Bvc3RtYW4tb3BlbmFwaS11aS9hY3Rpb25zL3dvcmtmbG93cy9kZXBsb3kueW1sKQoKIyMgR2V0IHN0YXJ0ZWQKCmh0dHBzOi8vbmV4eXMtc3lzdGVtLmdpdGh1Yi5pby9wb3N0bWFuLW9wZW5hcGktdWkvCg== readmeEtag: '"e9ef6c792b3c639b5f17070cd0f2005294c2ff35"' readmeLastModified: Thu, 21 Jul 2022 07:08:50 GMT repositoryId: 513859855 description: generate Open API from Postman collection created: '2022-07-14T10:39:45Z' updated: '2022-07-16T11:07:42Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: nexys-system logo: https://avatars.githubusercontent.com/u/71571169?v=4 repoEtag: '"66571162ff2ea53f0c5ddb3d0501cca20ec5cb29495baea2a398aaac2a5b5046"' repoLastModified: Sat, 16 Jul 2022 11:07:42 GMT category: Testing foundInMaster: true - source: openapi3 tags repository: https://github.com/fromsi/example_laravel_rest_api v3: true id: 24d47d3e0ba1cc7f2b8064a1bc0a3f79 repositoryMetadata: base64Readme: >- IyMg0KPRgdGC0LDQvdC+0LLQutCwINC/0YDQvtC10LrRgtCwCi0g0KHQutC70L7QvdC40YDQvtCy0LDRgtGMINC/0YDQvtC10LrRggotINCX0LDQv9GD0YHRgtC40YLRjCDQtNC+0LrQtdGACi0g0JfQsNC/0YPRgdGC0LjRgtGMINC60L7QvNCw0L3QtNGDINCyINC60L7RgNC90LUg0L/RgNC+0LXQutGC0LAgYG1ha2UgaW5zdGFsbGAKCiMjINCX0LDQtNCw0YfQsArQldGB0YLRjCDQu9C+0LrQsNGG0LjQuC4g0JIg0LvQvtC60LDRhtC40Y/RhSDRhdGA0LDQvdC40LvQuNGJ0LAuINCSINGF0YDQsNC90LjQu9C40YnQsNGFINGC0LXQvNC/0LXRgNCw0YLRg9GA0LAg0Lgg0L7Qv9GA0LXQtNC10LvQtdC90L3Ri9C5INC+0LHRitC10Lwg0LLQvNC10YHRgtC40LzQvtGB0YLQuC4g0J/QvtC70L3QvtC1INC+0L/QuNGB0LDQvdC40LUgW0lORk8ubWRdKElORk8ubWQpCgojIyDQndGD0LbQvdC+INC+0LHRj9C30LDRgtC10LvRjNC90L4g0LjQvNC10YLRjAotIERvY2tlciAodjIwKykKLSBEb2NrZXItQ29tcG9zZSAodjEuMjkrKQotIEdOVSBNYWtlICh2MyspCgojIyDQltC10LvQsNGC0LXQu9GM0L3QviDQuNC80LXRgtGMINGB0LLQvtCx0L7QtNC90YvQtSDQv9C+0YDRgtGLCtCV0YHQu9C4INC/0L7RgNGCINC30LDQvdGP0YIsINC80L7QttC90L4g0LjQt9C80LXQvdC40YLRjCDQv9C+0YDRgtGLINCyIGBkb2NrZXIvZG9ja2VyLWNvbXBvc2Uub3ZlcnJpZGUueW1sYCDQuCBgLmVudmAg0L/QvtGB0LvQtSDQutC+0LzQsNC90LTRiyBgbWFrZSBpbnN0YWxsYC4KLSA4MAotIDQ0MwotIDU0MzIKLSA4MDgwCgojIyBYZGVidWcg0LTQu9GPIFBocFN0b3JtCtCSIGBQaHBTdG9ybSA+IFByZWZlcmVuY2VzID4gU2VydmVycyA+ICtgCi0g0JIgTmFtZSDQvdGD0LbQvdC+INC30LDQv9C40YHQsNGC0YwgYGNoYXRgCi0g0JIgSG9zdCDQvdGD0LbQvdC+INC30LDQv9C40YHQsNGC0YwgYGxvY2FsaG9zdGAKLSDQndCw0LnRgtC4INCyIGBQcm9qZWN0IGZpbGVzYCDQtNC40YDQtdC60YLQvtGA0LjRjiDQv9GA0L7QtdC60YLQsCDQuCDQv9GA0L7Qv9C40YHQsNGC0Ywg0Y3RgtC+0Lkg0LTQuNGA0LXQutGC0L7RgNC40LggYC92YXIvd3d3YAoKIyMg0KTQuNC70YzRgtGA0LDRhtC40Y8g0LIgUkVTVCBBUEkK0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINCx0LjQsdC70LjQvtGC0LXQutCwIFtzcGF0aWUvbGFyYXZlbC1xdWVyeS1idWlsZGVyXShodHRwczovL2dpdGh1Yi5jb20vc3BhdGllL2xhcmF2ZWwtcXVlcnktYnVpbGRlcikKCtCf0YDQuNC80LXRgNGLOgotINCh0L7RgNGC0LjRgNC+0LLQutCwIOKAkyBgL2VuZHBvaW50P3NvcnQ9aWRgCi0g0KTQuNC70YzRgtGA0LDRhtC40Y8g4oCTIGAvZW5kcG9pbnQ/ZmlsdGVyW25hbWVdPUZyaWRnZWAKLSDQn9C+0LTQutC70Y7Rh9C10L3QuNC1INGB0YPRidC90L7RgdGC0LXQuSDigJMgYC9lbmRwb2ludD9pbmNsdWRlPXN1YmplY3RgCgojIyDQpdC+0YHRgtGLINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0L/RgNC+0LXQutGC0L7QvAotIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCDigJMg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQkdCUCi0gaHR0cDovL2xvY2FsaG9zdCDigJMg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSBSRVNUIEFQSQoKIyMg0KPQv9GA0LDQstC70LXQvdC40LUg0L/RgNC+0LXQutGC0L7QvAotIGBtYWtlIGluc3RhbGxgIOKAkyDRg9GB0YLQsNC90L7QstC60LAg0L/RgNC+0LXQutGC0LAg0YfQtdGA0LXQtyBEb2NrZXIKLSBgbWFrZSBydW5gIOKAkyDQt9Cw0L/Rg9GB0Log0L/RgNC+0LXQutGC0LAg0YfQtdGA0LXQtyBEb2NrZXIKLSBgbWFrZSBzdG9wYCDigJMg0L7RgdGC0LDQvdC+0LLQutCwINC/0YDQvtC10LrRgtCwINGH0LXRgNC10LcgRG9ja2VyCi0gYG1ha2UgcGhwYCDigJMg0L/QtdGA0LXQudGC0Lgg0LIg0LrQvtC90YLQtdC50L3QtdGAINGBIHBocCDRh9C10YDQtdC3IERvY2tlcgoKIyMg0JLQvtC30LzQvtC20L3QvtGB0YLQuCDQv9GA0L7QtdC60YLQsCwg0LrQvtGC0L7RgNGL0LUg0YLQtdCx0Y8g0LfQsNC40L3RgtC10YDQtdGB0YPRjtGCCi0g0J/QvtC00L3Rj9GC0LjQtSDQv9GA0L7QtdC60YLQsCDQvdCw0L/QuNGB0LDQsiDQstGB0LXQs9C+INC70LjRiNGMINC+0LTQvdGDINC60L7QvNCw0L3QtNGDCi0g0JfQsNC/0YDQvtGB0Ysg0L7QsdGA0LDQsdCw0YLRi9Cy0LDRjtGC0YHRjyDQv9C+INCw0YDRhdC40YLQtdC60YLRg9GA0L3QvtC80YMg0YHRgtC40LvRjiBSRVNUIEFQSQotIEhUVFAgZW5kcG9pbnQn0Ysg0L/QvtC00LTQtdGA0LbQuNCy0LDRjtGCINCy0LXRgNGB0LjQvtC90L3QvtGB0YLRjCwg0YHQvtGA0YLQuNGA0L7QstC60YMsINGE0LjQu9GM0YLRgNCw0YbQuNGOINC4INC/0L7QtNC60LvRjtGH0LXQvdC40LUg0YHRg9GJ0L3QvtGB0YLQtdC5Ci0g0JTQvtC60YPQvNC10L3RgtCw0YbQuNGPINC/0YDQvtC10LrRgtCwLCDQv9C+0LTQtNC10YDQttC60LAg0YLQuNC/0LjQt9Cw0YbQuNC4INC4INC00LLQuNC20LXQvdC40Y8g0LIg0L3QvtCz0YMg0YHQviDQstGA0LXQvNC10L3QtdC8IFBIUDhcTGFyYXZlbDkKLSDQodC40LTQtdGA0Ysg0YEg0YTQsNCx0YDQuNC60LDQvNC4INC00LvRjyDQt9Cw0L/QvtC70L3QtdC90LjRjyDQtNCw0L3QvdGL0LzQuCDRh9C10YDQtdC3IGZha2VyCi0g0KDQtdCz0LjRgdGC0YDQsNGG0LjRjy/QkNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNGPL9CS0L7RgdGB0YLQsNC90L7QstC70LXQvdC40LUv0JjQt9C80LXQvdC10L3QuNC1INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjwotINCb0L7QutCw0YbQuNC4INCz0L7RgNC+0LTQvtCyINC4INGB0YLRgNCw0L0K readmeEtag: '"c928334b69760d3685ef9e7d75877cbf282f0537"' readmeLastModified: Sat, 23 Jul 2022 14:43:49 GMT repositoryId: 514539373 description: Example PHP Laravel created: '2022-07-16T09:54:41Z' updated: '2023-04-02T17:42:12Z' language: PHP archived: true stars: 0 watchers: 1 forks: 0 owner: FromSi logo: https://avatars.githubusercontent.com/u/22871855?v=4 repoEtag: '"460e0d1785dad6493dd936a32146f010129f3c3b45eff4c066e33f7cc5d89823"' repoLastModified: Sun, 02 Apr 2023 17:42:12 GMT category: Mock foundInMaster: true - source: openapi3 tags repository: https://github.com/romabilka/blogo v3: true id: a9c8b26cad59924f6aa6fffaf25640f4 repositoryMetadata: base64Readme: >- IyBCbG9HbwoKIyMjIEV4YW1wbGVzIGRpZmZlcmVudCBjb2RlIGZvciBibG9nCgoqIERpZmZlcmVudCBwcm9qZWN0cyBzdHJ1Y3R1cmUgW3Byb2plY3QtbGF5b3V0XSgvcHJvamVjdC1sYXlvdXQvKQoqIEV4YW1wbGVzIFt0ZXN0c10oL3Rlc3RzLykKKiBFeGFtcGxlIFtXZWJTb2NrZXQgdGVzdF0oL3Rlc3Qtd2Vic29ja2V0LykKKiBBdXRvbWF0ZWQgSW5pdGlhbGl6YXRpb24gaW4gR28gd2l0aCBbd2lyZV0oL2V4YW1wbGUtd2lyZS8pCiogRXhhbXBsZSB1c2Ugc3RydWN0IFt0YWdzXSgvc3RydWN0LXRhZ3MvKQoKCiMjIExpY2Vuc2UKW01JVCBsaWNlbnNlXShMSUNFTlNFLm1kKS4= readmeEtag: '"616329cb0211a6ce089620d4fb7fd28625ffa4e0"' readmeLastModified: Fri, 27 May 2022 11:48:23 GMT repositoryId: 462227574 description: null created: '2022-02-22T09:35:04Z' updated: '2022-12-13T19:47:59Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: RomaBilka logo: https://avatars.githubusercontent.com/u/28790784?v=4 license: NOASSERTION repoEtag: '"5a2020748934f0b3ec27d2e0d62b14429cf253b404d081a4ae95985cfd5e4bb6"' repoLastModified: Tue, 13 Dec 2022 19:47:59 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/sudokuru/useractivegamesbff v3: true id: 40f15de6f7736dbdb83303d3d0c2f28f repositoryMetadata: base64Readme: >- PiBbIUlNUE9SVEFOVF0gIAo+IFRoaXMgcmVwb3NpdG9yeSBpcyByZWFkLW9ubHkgLyBhcmNoaXZlZCBhbmQgd2lsbCBub3QgcmVjaWV2ZSB1cGRhdGVzLgoKIyBbVHlwZWRvYyBEb2N1bWVudGF0aW9uIFdlYnNpdGVdKGh0dHBzOi8vc3Vkb2t1cnUuZ2l0aHViLmlvL0JhY2tlbmQvKTxicj4KCiMgVG9kbwoKLSBbIF0gQWRkIGxpY2Vuc2UgZmlsZSBhbmQgZGlzdHJpYnV0ZSB0byBhbGwgcmVwb3MgdXNpbmcgR2l0SHViIEFjdGlvbiAoVGhvbWFzKQotIFsgXSBGaW5pc2ggd3JpdGluZyBpbnRlZ3JhdGlvbiB0ZXN0cyBmb3IgcHV6emxlIGVuZHBvaW50IChUaG9tYXMpCi0gWyBdIFdyaXRlIEdpdEh1YiBob29rIHRvIHJ1biBhbGwgdGVzdHMgYmVmb3JlIFB1c2ggdG8gcmVwbyAoVGhvbWFzKQotIFt4XSBTZXQgdXAgRGV2IGFuZCBQcm9kIExhbWJkYSBlbnZpcm9ubWVudHMgKFRob21hcy9HcmVnb3J5KQotIFsgXSBBZGQgTWVybWFpZCBkb2N1bWVudGF0aW9uIGFuZCBkaXN0cmlidXRlIHRvIGFsbCByZXBvcyB1c2luZyBHaXRIdWIgQWN0aW9uIChUaG9tYXMpCi0gWyBdIENsZWFuIHVwIGRvY2tlciBpbXBsZW1lbnRhdGlvbiAoYXV0by1yZWJ1aWxkKSAoVGhvbWFzKQotIFsgXSBEaXNwbGF5IGludGVncmF0aW9uIHRlc3QgcmVzdWx0cyB3aXRoIHJlcG9ydGVyIChUaG9tYXMpCi0gWyBdIERlY2lkZSBvbiBpbml0aWFsIEpTT04gc3RydWN0dXJlIGZvciByZW1haW5pbmcgZW5kcG9pbnRzIChUZWFtKQotIFsgXSBXcml0ZSBsb2dpYyBmb3IgcmVtYWluaW5nIGVuZHBvaW50cyAoRGFuaWVsKQotIFsgXSBXcml0ZSBzYW5pdGF0aW9uIGFuZCB2YWxpZGF0aW9uIGZvciByZW1haW5pbmcgZW5kcG9pbnRzIChEYW5pZWwpCi0gWyBdIFdyaXRlIFBvc3RtYW4gaW50ZWdyYXRpb24gdGVzdHMgZm9yIHJlbWFpbmluZyBlbmRwb2ludHMgKERhbmllbCkKLSBbIF0gU2V0IHVwIEF1dGgwIHRva2VuIGF1dGhlbnRpY2F0aW9uIChUaG9tYXMvRGFuaWVsKQotIFsgXSBXcml0ZSB1cCBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGZvciBlbmRwb2ludHMgKFRob21hcy9EYW5pZWwpCi0gWyBdIFJlc29sdmUgcmVtYWluaW5nIGBgYC8vdG9kb2BgYCBpdGVtcyAoVGhvbWFzL0RhbmllbCkKLSBbIF0gRGV0ZXJtaW5lIGhvdyB0byBzZXQgUHJvZCBlbnZpcm9ubWVudCB0byB1c2UgdmVyc2lvbmluZyBjb250cm9sIChUaG9tYXMvR3JlZ29yeSkKLSBbIF0gSW1wbGVtZW50IHVuaXQgdGVzdHMgaWYgbmVlZGVkIChUaG9tYXMvRGFuaWVsKQoKIyBEZXZlbG9wZXIgU2V0dXAKCjEuIEluc3RhbGwgRG9ja2VyIG9uIHlvdXIgbWFjaGluZS4gVHV0b3JpYWwgaXMgbGlua2VkIGJlbG93Ojxicj4KICAgWyFbRG9ja2VyIFR1dG9yaWFsXShodHRwczovL2ltZy55b3V0dWJlLmNvbS92aS8yZXpOcXFhU2pxOC8wLmpwZyldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9MmV6TnFxYVNqcTgpPGJyPgoyLiBMb2dpbiB0byBkb2NrZXIgd2l0aCB0aGUgY29tbWFuZCBgYGBkb2NrZXIgbG9naW4gLS11c2VybmFtZSA8R2l0SHViX1VzZXJuYW1lPmBgYDxicj4KICAgWW91IHdpbGwgYmUgYXNrZWQgZm9yIHlvdXIgcGFzc3dvcmQsIHdoaWNoIGlzIHlvdXIgR2l0SHViIFRva2VuLiBNYWtlIHN1cmUgeW91ciBHaXRIdWIgVG9rZW4gaGFzIHBlcm1pc3Npb25zIHRvIGFjY2VzcyBHaXRIdWIncyBDb250YWluZXIgUmVnaXN0cnkhPGJyPgogICBUaGUgbmVlZGVkIHNjb3BlIGlzIGBgYHJlYWQ6cGFja2FnZXNgYGA8YnI+CiAgIFRoaXMgY29tbWFuZCBzaG91bGQgYmUgcnVuIGluIHRoZSB0ZXJtaW5hbCBpbiB0aGUgcm9vdCBmb2xkZXIgb2YgdGhpcyBwcm9qZWN0Ljxicj4KMy4gRm9sbG93IHRoaXMgdHV0b3JpYWwgaGVyZSBmb3IgZW5zdXJpbmcgZG9ja2VyIGltYWdlcyBhcmUgdXAgdG8gZGF0ZTogW0RvY2tlciBpbWFnZSB0dXRvcmlhbF0oaHR0cHM6Ly9waG9lbml4bmFwLmNvbS9rYi91cGRhdGUtZG9ja2VyLWltYWdlLWNvbnRhaW5lcik8YnI+CjQuIFRoZSBNb25nbyBpbWFnZSBjYW4gYmUgcnVuIHdpdGggdGhpcyBjb21tYW5kIGluIHRoZSByb290IGZvbGRlcjo8YnI+CiAgIE5vdGUgdXNlIGBgYHN1ZG9gYGAgb24gTGludXgvTWFjPGJyPgpgYGBjb25zb2xlCm5wbSBydW4gZG9ja2VyCmBgYAo1LiBDcmVhdGUgLmVudiBmaWxlIHdpdGggZW52aXJvbm1lbnQgdmFyaWFibGVzCjYuIFJ1biBucG0gaQo3LiBUaGUgYXBwIGNhbiB0aGVuIGJlIHJ1biB3aXRoIHRoZSBjb21tYW5kOjxicj4KYGBgY29uc29sZQpucG0gcnVuIHN0YXJ0CmBgYAo4LiBJbnRlZ3JhdGlvbiB0ZXN0cyBjYW4gYmUgcnVuIHdoZW4gdGhlIGFwcCBpcyBydW5uaW5nIHdpdGggdGhpcyBjb21tYW5kOjxicj4KYGBgY29uc29sZQpucG0gcnVuIHRlc3Q6aW50ZWdyYXRpb24KYGBgCgojIEVuZHBvaW50IERvY3VtZW50YXRpb24KCiMjIyBHRVQgbmV3R2FtZSBlbmRwb2ludDo8YnI+CkNyZWF0ZXMgYSBuZXdHYW1lIGZvciB0aGUgdXNlci48YnI+CkV4YW1wbGU6PGJyPgptZXRob2Q6IEdFVDxicj4KdXJsOiBgYGBodHRwOi8vbG9jYWxob3N0OjI5MDEvYXBpL3YxL25ld0dhbWU/ZGlmZmljdWx0eT0xYGBgIDxicj4KSGVhZGVyOiBgYGBBdXRob3JpemF0aW9uOiAiQmVhcmVyICIgKyBhY2Nlc3NUb2tlbmBgYCA8YnI+CgpSZXR1cm5zOiA8YnI+CmBgYGpzb24KWwogICAgewogICAgICAgICJ1c2VySUQiOiAiYXV0aDB8NjM5NDQwYzhmMjkwNjc3NTA3OWM3MjU0IiwKICAgICAgICAicHV6emxlIjogIjMxMDA4NDAwMjIwMDE1MDAwNjU3MDAwMzAxMDQyMzcwODA5NTc2MDAzMDAwMDAwOTU2MjAzMDA1MDAwNjA3MDAwNzAwMDkwMDAwMDAwMTUwMCIsCiAgICAgICAgImN1cnJlbnRUaW1lIjogMCwKICAgICAgICAibnVtSGludHNBc2tlZEZvciI6IDAsCiAgICAgICAgIm51bVdyb25nQ2VsbHNQbGF5ZWQiOiAwLAogICAgICAgICJfaWQiOiAiNjQxMTA5YTE5YTE1NWI1NzEyNmZlNjQ3IiwKICAgICAgICAibW92ZXMiOiBbXSwKICAgICAgICAiX192IjogMAogICAgfQpdCmBgYApwdXp6bGUgY2FuIGJlIGFjY2Vzc2VkIGJ5IHRoZSBmb2xsb3dpbmc6PGJyPgpgYGByZXNwb25zZVswXS5wdXp6bGVgYGAgPGJyPgoKCgo= readmeEtag: '"7f4fe4972ec8b3b817658530d4042b28f9675f75"' readmeLastModified: Sun, 12 May 2024 16:01:49 GMT repositoryId: 599639630 description: null created: '2023-02-09T15:12:56Z' updated: '2024-05-12T16:02:32Z' language: TypeScript archived: true stars: 0 watchers: 0 forks: 0 owner: Sudokuru logo: https://avatars.githubusercontent.com/u/114212382?v=4 license: GPL-3.0 repoEtag: '"ef37893e5c6baccde0157be77a9107a11d68d4f08c720c356f018ce536a010b3"' repoLastModified: Sun, 12 May 2024 16:02:32 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/sudokuru/bff - source: openapi3 tags repository: https://github.com/av1m/uberoo-openapi v3: true id: eee1268d6e1d07582ae9e9b773d757b4 repositoryMetadata: base64Readme: >- IyBVYmVyb28gT3BlbkFQSQoKWyFbRGVwbG95IFViZXJvb0FQSSB0byBHaXRIdWIgUGFnZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9hdjFtL3ViZXJvby1vcGVuYXBpL2FjdGlvbnMvd29ya2Zsb3dzL2doLXBhZ2VzLnlhbWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2F2MW0vdWJlcm9vLW9wZW5hcGkvYWN0aW9ucy93b3JrZmxvd3MvZ2gtcGFnZXMueWFtbCkKWyFbTGluayBvZiBkb2NzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YXRpYy92MT9sYWJlbD1kb2NzJm1lc3NhZ2U9UmVkb2NseSZjb2xvcj1ncmVlbildKGh0dHBzOi8vYXYxbS5naXRodWIuaW8vdWJlcm9vLW9wZW5hcGkvKQoKVGFibGUgb2YgQ29udGVudHM6ICAKCi0gW1ViZXJvbyBPcGVuQVBJXSgjdWJlcm9vLW9wZW5hcGkpCiAgLSBbR2V0IHN0YXJ0ZWRdKCNnZXQtc3RhcnRlZCkKICAtIFtQYWNrYWdlLmpzb25dKCNwYWNrYWdlanNvbikKICAgIC0gW0J1aWxkIGRpcmVjdG9yeV0oI2J1aWxkLWRpcmVjdG9yeSkKICAgIC0gW0NvbW1hbmRzXSgjY29tbWFuZHMpCiAgLSBbQ0kvQ0RdKCNjaWNkKQoKIyMgR2V0IHN0YXJ0ZWQKClRoZSBwcmVyZXF1aXNpdGVzIGFyZToKCi0gW25vZGUuanNdKGh0dHBzOi8vbm9kZWpzLm9yZy9lbi8pCi0gW2RvY2tlcl0oaHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8pCi0gW2RvY2tlci1jb21wb3NlXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9jb21wb3NlL2luc3RhbGwvKQotIFtweXRob25dKGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvKSAob25seSBpZiB5b3UgdXNlIGBucG0gcnVuIHN3YWdnZXItcHl0aG9uYCkKCk9uY2UgeW91IGhhdmUgdGhlIHByZXJlcXVpc2l0ZXMgaW5zdGFsbGVkLCB5b3UgY2FuIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgoKYGBgYmFzaApucG0gcnVuIHN0YXJ0CmBgYAoKVGhpcyBjb21tYW5kIHdpbGwgZ2VuZXJhdGUgYG9wZW5hcGkuanNvbmAgZmlsZSBhbmQgc3RhcnQgdGhlIHNlcnZlciAodGhyb3VnaCBEb2NrZXIpLgpUaGUgc2VydmVyIGlzIGF2YWlsYWJsZSBhdCBbaHR0cDovL2xvY2FsaG9zdDo4MDgwXShodHRwOi8vbG9jYWxob3N0OjgwODApLgoKIyMgUGFja2FnZS5qc29uCgojIyMgQnVpbGQgZGlyZWN0b3J5CgpBbGwgdGhlIGZpbGVzIGFyZSBnZW5lcmF0ZWQgaW4gdGhlIGAuYnVpbGRgIGRpcmVjdG9yeS4KVGhlIGAuYnVpbGRgIGRpcmVjdG9yeSBpcyBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB5b3UgcnVuIGBucG0gcnVuIGJ1aWxkYC4KClRoZSBmaW5hbCBmaWxlIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgYHNyY2AgZGlyZWN0b3J5OyBUaGUgb3VwdXQgZm9ybWF0IGlzIGRldGVybWluZWQgYnkgdGhlIGBjb25maWcuZXh0ZW5zaW9uYCBvcHRpb24gaW4gdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUuCkFjdHVlbGx5LCB0aGUgb3V0cHV0IGZvcm1hdCBhdmFpbGFibGUgYXJlIGBqc29uYCBhbmQgYHlhbWxgLgpUbyBjaGFuZ2UgdGhlIG91dHB1dCBmb3JtYXQsIHlvdSBjYW4gY2hhbmdlIHRoZSBgY29uZmlnLmV4dGVuc2lvbmAgb3B0aW9uIGluIHRoZSBgcGFja2FnZS5qc29uYCBmaWxlIG9yIGNoZWNrIHRoZSBuZXh0IHNlY3Rpb24uCgojIyMgQ29tbWFuZHMKClRoZSBbcGFja2FnZS5qc29uXShwYWNrYWdlLmpzb24pIGZpbGUgY29udGFpbnMgbWFueSBjb21tYW5kIGxpbmUgdG9vbHMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgZG9jdW1lbnRhdGlvbi4KClRvIGdldCBhIHF1aWNrIGRldGFpbHMgb2YgdGhlIGF2YWlsYWJsZSBjb21tYW5kczoKCi0gKipgYnVpbGRgKiogLSBHZW5lcmF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBmcm9tIHRoZSBgc3JjYCBkaXJlY3RvcnkgaW4gdGhlIGAuYnVpbGQgZGlyZWN0b3J5YC4gVGhlIGZpbGVzIHdpbGwgYmUgYC5qc29uYCBvciBgLnlhbWxgIGRlcGVuZGluZyBvbiB0aGUgYGNvbmZpZy5leHRlbnNpb25gIG9wdGlvbiBpbiB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZS4KLSAqKmB3YXRjaGAqKiAtIFJlZ2VuZXJhdGUgdGhlIGRvY3VtZW50YXRpb24gd2hlbiB0aGUgYHNyY2AgZGlyZWN0b3J5IGNoYW5nZXMuCi0gKipgdGVzdGAqKiAtIEJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0IHRoZSBvdXB1dCBmaWxlICh0aGF0IGlzIGluIHRoZSBgLmJ1aWxkYCBkaXJlY3RvcnkpCi0gKipgY2xlYW5gKiogLSBSZW1vdmUgdGhlIGAuYnVpbGRgIGRpcmVjdG9yeQotICoqYHN3YWdnZXItZG9ja2VyYCoqICAtIEJ1aWxkcywgKHJlKWNyZWF0ZXMsIHN0YXJ0cywgYW5kIGF0dGFjaGVzIGNvbnRhaW5lcnMuIFRoZXJlIGlzIHR3byBjb250YWluZXJzIGluIHRoZSBEb2NrZXJmaWxlOiBgc3dhZ2dlci11aWAgYW5kIGBzd2FnZ2VyLWFwaWAuIFRoZSBgc3dhZ2dlci11aWAgY29udGFpbmVyIGlzIHVzZWQgdG8gZGlzcGxheSB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGhlIGBzd2FnZ2VyLWFwaWAgY29udGFpbmVyIGlzIHVzZWQgdG8gc2VydmUgYSBzYW1wbGUgb2YgdGhlIEFQSSAodGhyb3VnaCBbYXBpc3Byb3V0XShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvZGFuaWVsZ3RheWxvci9hcGlzcHJvdXQpKS4KLSAqKmBzd2FnZ2VyLXB5dGhvbmAqKiAgLSBDcmVhdGUgYSBzZXJ2ZXIgd2l0aCB0aGUgU3dhZ2dlciBBUEkgaW4gUHl0aG9uICh1c2UgW2Nvbm5leGlvbl0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2Nvbm5leGlvbi8pIG1vZHVsZSkuCi0gKipgcmVkb2MtcHJldmlld2AqKiAgLSBSdW4gYSBzZXJ2ZXIgd2l0aCB0aGUgUmVkb2MgQVBJIGluIHRoZSBicm93c2VyLiBUaGUgc2VydmVyIGlzIGF2YWlsYWJsZSBhdCBbaHR0cDovL2xvY2FsaG9zdDo1MDAwXShodHRwOi8vbG9jYWxob3N0OjUwMDApLgotICoqYHJlZG9jLWh0bWxgKiogIC0gR2VuZXJhdGUgdGhlIGRvY3VtZW50YXRpb24gZnJvbSB0aGUgYHNyY2AgZGlyZWN0b3J5IGluIHRoZSBgLmJ1aWxkIGRpcmVjdG9yeWAgaW4gdGhlIGBodG1sYCBmb3JtYXQgd2l0aCBSZWRvY2x5LiBUaGUgb3V0cHV0IGZpbGUgaXMgW2AuYnVpbGQvaW5kZXguaHRtbGBdKC5idWlsZC9pbmRleC5odG1sKS4KLSAqKmB1c2UteWFtbGAqKiAgLSBDaGFuZ2UgdGhlIG91dHB1dCBmb3JtYXQgdG8gYHlhbWxgLiBUaGUgZmlsZSB3aWxsIGJlWy5idWlsZC9vcGVuYXBpLnlhbWxdKC5idWlsZC9vcGVuYXBpLnlhbWwpLgotICoqYHVzZS1qc29uYCoqICAtIENoYW5nZSB0aGUgb3V0cHV0IGZvcm1hdCB0byBganNvbmAuIFRoZSBmaWxlIHdpbGwgYmUgW2AuYnVpbGQvb3BlbmFwaS5qc29uYF0oLmJ1aWxkL29wZW5hcGkuanNvbikuCi0gKipgc3RhcnRgKiogLSBDaGFuZ2UgdGhlIG91dHB1dCBmb3JtYXQgdG8gYGpzb25gLCBydW4gdGhlIGBzd2FnZ2VyLWRvY2tlcmAgY29tbWFuZCBhbmQgcnVuIHRoZSB3YXRjaGVyICh0aHJvdWdoIGBucG0gcnVuIHdhdGNoYCkuCi0gKipgc3RvcGAqKiAtIFN0b3BzIGNvbnRhaW5lcnMgYW5kIHJlbW92ZXMgY29udGFpbmVycwoKIyMgQ0kvQ0QKCkFzIG1lbnRpb25uZWQgYWJvdmUsIHlvdSBjYW4gdGVzdCB0aGUgZG9jdW1lbnRhdGlvbiB3aXRoIHRoZSBgbnBtIHRlc3RgIGNvbW1hbmQuCgpPbmNlIHlvdSBwdXNoIHlvdXIgY29kZSB0byB0aGUgcmVwb3NpdG9yeSwgYSBHaXRodWIgQWN0aW9ucyBpcyB0cmlnZ2VyZWQuCgpGaXJzdCwgdGhlIGNvZGUgaXMgdGVzdGVkIGJlZm9yZSBjcmVhdGluZyB0aGUgZG9jdW1lbnRhdGlvbi4KClRoZW4sIHRoZSBBY3Rpb24gd2lsbCBidWlsZCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgcHVzaCBpdCB0byB0aGUgcmVwb3NpdG9yeSAoW2doLXBhZ2VzXShodHRwczovL2dpdGh1Yi5jb20vYXYxbS91YmVyb28tb3BlbmFwaS90cmVlL2doLXBhZ2VzKSBicmFuY2hlcykuClNvLCB0aGUgZG9jdW1lbnRhdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBhdCBbYXYxbS5naXRodWIuaW8vdWJlcm9vLW9wZW5hcGldKGh0dHBzOi8vYXYxbS5naXRodWIuaW8vdWJlcm9vLW9wZW5hcGkvKS4KCkZpbmFsbHksIHRoZSBhY3Rpb24gd2lsbCBwdXNoIGFuIGFydGlmYWN0IChvcGVuYXBpLnlhbWwpIHRvIHRoZSByZXBvc2l0b3J5Lgo= readmeEtag: '"63309943e70fdcf86d8cc290b141da95916beed3"' readmeLastModified: Sun, 26 Jun 2022 21:25:16 GMT repositoryId: 500824612 description: This repository contains OpenAPI specifications for the Uberoo API created: '2022-06-07T12:09:18Z' updated: '2023-01-23T10:04:29Z' language: JavaScript archived: true stars: 0 watchers: 1 forks: 1 owner: av1m logo: https://avatars.githubusercontent.com/u/36456709?v=4 repoEtag: '"27ae1e6ec115c52e986afe728988c632510ceeac29e5e06f33281c57625f45ac"' repoLastModified: Mon, 23 Jan 2023 10:04:29 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/rosario-fiorella/http-dispatcher-framework v3: true id: 9597cb2ff22d9709642a2c56942cad72 repositoryMetadata: base64Readme: >- IyBIVFRQIERpc3BhdGNoZXIgRnJhbWV3b3JrCgojIyBBYm91dAo+ICoqIUlNUE9SVEFOVDoqKiB0aGlzIGlzIGFuIGV4cGVyaW1lbnRhbCB2ZXJzaW9uIG5vdCB0byBiZSB1c2VkIGZvciBwcm9kdWN0aW9uIGRldmVsb3BtZW50CgpUaGlzIGh0dHAtYmFzZWQgZnJhbWV3b3JrIGltcGxlbWVudHMgdGhlIFtEaXNwYXRjaGVyIHBhdHRlcm4gKG1vcmUgaW5mbyBmcm9tIE9yYWNsZSBKYXZhKV0oaHR0cHM6Ly93d3cub3JhY2xlLmNvbS9qYXZhL3RlY2hub2xvZ2llcy9mcm9udC1jb250cm9sbGVyLmh0bWwpIGFuZCBjYW4gYmUgY29uZmlndXJlZCBhcyBhIGZyb250LWNvbnRyb2xsZXIgb3IgZGVsZWdhdGUgdGhlIHJlcXVlc3QgdG8gYW4gYXBwbGljYXRpb24uIFN1aXRhYmxlIGZvciBSRVNUIEFQSSBzZXJ2aWNlcyBvciBtb25vbGl0aGljIHNlcnZlci1zaWRlIHJlbmRlcmluZy4KCiMjIEtleSBBcmNoaXRlY3R1cmFsIENvbmNlcHRzCi0gKipEaXNwYXRjaGVyIFBhdHRlcm4qKjogQ2VudHJhbGl6ZXMgSFRUUCByZXF1ZXN0IGhhbmRsaW5nLiBTZWUgYENvcmUvSHR0cC9EaXNwYXRjaGVyLnBocGAgYW5kIGV4YW1wbGUgdXNhZ2UgaW4gYDAxLWV4YW1wbGUtZGlzcGF0Y2hlci1hcy1mcm9udC1jb250cm9sbGVyL2AgYW5kIGAwMi1leGFtcGxlLWRpc3BhdGNoZXItYXMtcHJveHktdXNpbmctYXBwbGljYXRpb24vYC4KLSAqKkZyb250IENvbnRyb2xsZXIgdnMgUHJveHkqKjogVHdvIG1haW4gbW9kZXMuIEZyb250IGNvbnRyb2xsZXIgZGlyZWN0bHkgaGFuZGxlcyByZXF1ZXN0czsgcHJveHkgZGVsZWdhdGVzIHRvIGFuIGFwcGxpY2F0aW9uLiBFeGFtcGxlIGRpcmVjdG9yaWVzIGlsbHVzdHJhdGUgYm90aCBwYXR0ZXJucy4KLSAqKkZpbHRlcnMgJiBJbnRlcmNlcHRvcnMqKjogQ3VzdG9tIEhUVFAgZmlsdGVycyAoYENvcmUvSHR0cC9GaWx0ZXIucGhwYCkgYW5kIGludGVyY2VwdG9ycyAoYENvcmUvSHR0cC9JbnRlcmNlcHRvci5waHBgKSBjYW4gYmUgcmVnaXN0ZXJlZCBmb3IgcmVxdWVzdC9yZXNwb25zZSBtYW5pcHVsYXRpb24uCi0gKipOZWdvdGlhdGlvbioqOiBSZXF1ZXN0IGNvbnRlbnQgdmFsaWRhdGlvbiBpcyBoYW5kbGVkIHZpYSBuZWdvdGlhdGlvbiBjbGFzc2VzIChgQ29yZS9IdHRwL05lZ290aWF0aW9uLnBocGApLgotICoqTG9jYWxpemF0aW9uKio6IFVzZXMgUE9FRElUIGFuZCBgLnBvLy5tb2AgZmlsZXMgdW5kZXIgYGxvY2FsZS9gLiBSZXF1aXJlcyBQSFAgZXh0ZW5zaW9uczogYGdldHRleHRgLCBgaW50bGAsIGBtYnN0cmluZ2AuCi0gKipEZXBlbmRlbmN5IEluamVjdGlvbiAmIFNlcnZpY2UgTG9jYXRvcioqOiBESSBpcyB1c2VkIGZvciBjb25maWd1cmF0aW9uLiBTZWUgYENvcmUvVXRpbHMvT2JqZWN0U3RvcmFnZS5waHBgIGZvciBzZXJ2aWNlIGxvY2F0b3IsIGFuZCBgQ29yZS9Cb290L1JlZ2lzdHJ5LnBocGAgZm9yIHNpbmdsZXRvbiB1c2FnZS4KCiMjIERldmVsb3BlciBXb3JrZmxvd3MKLSAqKk5vIGJ1aWxkIHN0ZXAgcmVxdWlyZWQqKjsgUEhQID49IDguMiBpcyBtYW5kYXRvcnkuCi0gKipFbmFibGUgcmVxdWlyZWQgUEhQIGV4dGVuc2lvbnMqKjogYGZpbHRlcmAsIGBnZXR0ZXh0YCwgYGljb252YCwgYGludGxgLCBganNvbmAsIGBtYnN0cmluZ2AsIGByZWZsZWN0aW9uYCwgYHNwbGAuCi0gKipEZWJ1Z2dpbmcqKjogRGVidWdnaW5nIGlzIGVuYWJsZWQgZm9yIGxvY2FsIGRldmVsb3BtZW50IG9ubHkuIFNlbnNpdGl2ZSBpbmZvIHNob3VsZCBiZSBoaWRkZW4gaW4gSFRUUCByZXF1ZXN0cy9yZXNwb25zZXMuCi0gKipTZWN1cml0eSoqOiBTZXQgcmVjb21tZW5kZWQgSFRUUCBoZWFkZXJzIHVzaW5nIGAuaHRhY2Nlc3NgIChBcGFjaGUpLCBgZGVmYXVsdC5jb25maWdgIChOZ2lueCksIG9yIHZpYSBgQ29yZS9IdHRwL1Jlc3BvbnNlOjpzZXRIZWFkZXJgIGluIGNvbnRyb2xsZXJzLgoKIyMgUHJvamVjdC1TcGVjaWZpYyBDb252ZW50aW9ucwotICoqU2luZ2xldG9ucyoqOiBPbmx5IGBDb3JlL0Jvb3QvUmVnaXN0cnkucGhwYCB1c2VzIHNpbmdsZXRvbjsgYXZvaWQgZWxzZXdoZXJlLgotICoqTG9jYWxpemF0aW9uKio6IEFkZCBuZXcgbGFuZ3VhZ2VzIGJ5IGNyZWF0aW5nIGAucG8vLm1vYCBmaWxlcyBpbiBgbG9jYWxlL2AgYW5kIHVwZGF0aW5nIGNvbmZpZ3VyYXRpb24uCi0gKipDb250cm9sbGVycyAmIFZpZXdzKio6IE9yZ2FuaXplIHVuZGVyIGBDb250cm9sbGVycy9gIGFuZCBgVmlld3MvYCBpbiBleGFtcGxlIGRpcmVjdG9yaWVzLiBGb2xsb3cgbmFtaW5nIGNvbnZlbnRpb25zIGFzIHNob3duLgotICoqQ29uZmlndXJhdGlvbioqOiBVc2UgREkgYW5kIGNvbmZpZ3VyYXRpb24gY2xhc3NlcyB1bmRlciBgQ29uZmlnL2AgYW5kIGBCb290L2AuCgojIyBJbnRlZ3JhdGlvbiBQb2ludHMKLSAqKkV4dGVybmFsIGRlcGVuZGVuY2llcyoqOiBObyBjb21wb3NlciBvciBwYWNrYWdlIG1hbmFnZXI7IGFsbCBkZXBlbmRlbmNpZXMgYXJlIFBIUCBleHRlbnNpb25zLgotICoqQ3Jvc3MtY29tcG9uZW50IGNvbW11bmljYXRpb24qKjogVXNlIERJIGFuZCBzZXJ2aWNlIGxvY2F0b3IgZm9yIHNoYXJpbmcgc3RhdGUgYW5kIHNlcnZpY2VzLgoKIyMgUmVmZXJlbmNlcwotIERpc3BhdGNoZXI6IGBDb3JlL0h0dHAvRGlzcGF0Y2hlci5waHBgCi0gU2VydmljZSBMb2NhdG9yOiBgQ29yZS9VdGlscy9PYmplY3RTdG9yYWdlLnBocGAKLSBTaW5nbGV0b246IGBDb3JlL0Jvb3QvUmVnaXN0cnkucGhwYAotIEV4YW1wbGUgdXNhZ2U6IGAwMS1leGFtcGxlLWRpc3BhdGNoZXItYXMtZnJvbnQtY29udHJvbGxlci9gLCBgMDItZXhhbXBsZS1kaXNwYXRjaGVyLWFzLXByb3h5LXVzaW5nLWFwcGxpY2F0aW9uL2AKLSBMb2NhbGl6YXRpb246IGBsb2NhbGUvYAoKLS0tCgojIyMgRGlzcGF0Y2hlciBsaWZlY3ljbGUgbWFuYWdlbWVudCAKIVt3b3JrZmxvd10oaHR0cHM6Ly9naXRodWIuY29tL3Jvc2FyaW8tZmlvcmVsbGEvaHR0cC1kaXNwYXRjaGVyLWZyYW1ld29yay9hc3NldHMvNDE3MjgwNTkvOGI3MjcxNWMtNWJjNi00MWVkLWI3YzgtODYxYmIyMjEwMDIxKQo= readmeEtag: '"ee5307b872b15304673f34f2b61c7f8fbbe83fa0"' readmeLastModified: Thu, 16 Oct 2025 20:25:05 GMT repositoryId: 591982605 description: >- The http-based PHP framework implements the Dispatcher pattern and can be configured as a front-controller or delegate the request to an application. Suitable for REST API services or monolithic server-side rendering. created: '2023-01-22T15:08:59Z' updated: '2025-10-22T21:34:07Z' language: PHP archived: false stars: 0 watchers: 1 forks: 0 owner: rosario-fiorella logo: https://avatars.githubusercontent.com/u/41728059?v=4 license: MIT repoEtag: '"3ba1164c84fb6d4471a5dfdecd9313b7ec2c4056c34618817fbd06b42096eb07"' repoLastModified: Wed, 22 Oct 2025 21:34:07 GMT category: Server Implementations foundInMaster: true oldLocations: - https://github.com/rosario-fiorella/micro-framework-http - source: https://openapi.tools/ name: BOATS category: - DSL - SDK link: https://www.npmjs.com/package/boats repository: https://github.com/j-d-carmichael/boats language: Node.js source_description: > BOATS allows for larger teams to contribute to multi-file OpenAPI definitions by writing Nunjucks tpl syntax in yaml with a few important helpers to ensure stricter consistency, eg operationId: <$ uniqueOpId() $>. v2: true v3: true repositoryMetadata: base64Readme: >- IyBCT0FUUwoKIVtCb2F0c10oYm9hdHMuanBnKQoKQW4gT3BlbkFQSSAmIEFzeW5jQVBJIHRlbXBsYXRpbmcgc3lzdGVtIHdpdGggTnVuanVja3MuLi4gd3JpdGUgbGVzcyBZQU1MLi4uIGRvIG1vcmUuCl9fXwoKIyMgV2hhdCBpcyBpdD8KCk9wZW5BUEkgYW5kIEFzeW5jQVBJIGFyZSBncmVhdCwgd3JpdGluZyB5YW1sIGlzIGZhc3QuLi4gaG93ZXZlciwgdGhlcmUgaXMgYSBsb3Qgb2YgY29weS9wYXN0ZSByZXF1aXJlZC4gQWRkaXRpb25hbGx5LCBtYW5hZ2luZyBtYW55IHJvdXRlcyBpbiBhIHNpbmdsZSBmaWxlIGlzIHBhaW5mdWwuIEJPQVRTIGFsbG93cyB5b3UgdG8gcmVkdWNlIHRoZSBjb3B5IGFuZCBwYXN0aW5nIHdpdGggbWFueSBidWlsdCBpbiBoZWxwZXJzIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgYnJlYWtpbmcgdGhlIDEgbGFyZ2VyIGZpbGUgZG93biBpbnRvIG1hbnkgc21hbGwgZmlsZXMuIFRoZSBvdXRwdXQgZnJvbSBCT0FUUyBpcyBhbHNvIHZhbGlkYXRlZCB2aWEgW0BhcGlkZXZ0b29sc10oaHR0cHM6Ly9naXRodWIuY29tL0FQSURldlRvb2xzKSBvciBbQGFzeW5jYXBpXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkpLgoKIyMgUXVpY2sgc3RhcnQKMS4gSW5pdGlhbGl6ZSBhIG5ldyBwcm9qZWN0OiBucG0gaW5pdCAteQoyLiBTZXQgdXAgQk9BVFM6IG5weCBib2F0cyAtLWluaXQgKGZvbGxvdyB0aGUgcHJvbXB0cykKMy4gQnVpbGQgdGhlIHByb2plY3Q6IG5wbSBydW4gYnVpbGQgKG91dHB1dHMgaW4gLi9idWlsZCkKCiMjIERvY3MgJiBDaGFuZ2Vsb2cKW0Z1bGwgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9qLWQtY2FybWljaGFlbC5naXRodWIuaW8vYm9hdHMpCgpbQ2hhbmdlbG9nXShodHRwczovL2otZC1jYXJtaWNoYWVsLmdpdGh1Yi5pby9ib2F0cy8jLz9pZD1jaGFuZ2Vsb2cpCgojIyBCT0FUUyBDTEkKCldyaXRpbmcgeWFtbCBmaWxlcyBmb3IgQk9BVFMgaXMgZWFzaWVyIHRoYW4gbWFuYWdpbmcgYSBzaW5nbGUgZmlsZSwgYnV0IHRvIG1ha2Ugd3JpdGluZyBCT0FUUyB5bWwgZmlsZXMgZXZlbiBlYXNpZXIuLi4gdGhlcmUgaXMgbm93IGEgQk9BVFMgQ0xJIHRvb2w6CgpodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYWNyb250dW0vYm9hdHMtY2xpCgojIyBFeGFtcGxlcwpTaW1wbGUgZXhhbXBsZXMgY2FuIGJlIGZvdW5kIGhlcmU6Ci0gW0FzeW5jIEFQSV0oaHR0cHM6Ly9naXRodWIuY29tL2otZC1jYXJtaWNoYWVsL2JvYXRzL3RyZWUvbWFpbi9pbml0LWZpbGVzL2FzeW5jYXBpKQotIFtPcGVuIEFQSSAyXShodHRwczovL2dpdGh1Yi5jb20vai1kLWNhcm1pY2hhZWwvYm9hdHMvdHJlZS9tYWluL2luaXQtZmlsZXMvb2EyKQotIFtPcGVuIEFQSSAzXShodHRwczovL2dpdGh1Yi5jb20vai1kLWNhcm1pY2hhZWwvYm9hdHMvdHJlZS9tYXN0ZXIvc3JjT0EzKQoKKFJlZmVyIHRvIHRoZSBbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9qLWQtY2FybWljaGFlbC5naXRodWIuaW8vYm9hdHMpIGZvciBhZGRpdGlvbmFsIGZlYXR1cmVzIGFuZCBkZXRhaWxzLikKCiMjIFRoYW5rcyBUbwpCT0FUUyBpcyBub3RoaW5nIHdpdGhvdXQgdGhlIHN1cHBvcnQgb2Y6Ci0gRXZlcnkgW2NvbnRyaWJ1dG9yXShodHRwczovL2dpdGh1Yi5jb20vai1kLWNhcm1pY2hhZWwvYm9hdHMvZ3JhcGhzL2NvbnRyaWJ1dG9ycykgJiBbaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9qLWQtY2FybWljaGFlbC9ib2F0cy9pc3N1ZXMpIQotIFtAYXBpZGV2dG9vbHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9BUElEZXZUb29scykKLSBbQGFzeW5jYXBpXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkpCi0gW2pzLXlhbWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvanMteWFtbCkKLSBNb3ppbGxhIFtOdWp1Y2tzXShodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9udW5qdWNrcykKLSBKZXRicmFpbnMgW09wZW4gU291cmNlIERldmVsb3BtZW50IC0gQ29tbXVuaXR5IFN1cHBvcnRdKGh0dHBzOi8vd3d3LmpldGJyYWlucy5jb20vY29tbXVuaXR5L29wZW5zb3VyY2UvI3N1cHBvcnQpIQoKClshW0pldGJyYWluc10oaHR0cHM6Ly9yZXNvdXJjZXMuamV0YnJhaW5zLmNvbS9zdG9yYWdlL3Byb2R1Y3RzL2NvbXBhbnkvYnJhbmQvbG9nb3MvamJfYmVhbS5zdmcpXShodHRwczovL3d3dy5qZXRicmFpbnMuY29tL2NvbW11bml0eS9vcGVuc291cmNlLyNzdXBwb3J0KSBbIVtHaXRIdWJdKGh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vaW1hZ2VzL21vZHVsZXMvZGFzaGJvYXJkL29uYm9hcmRpbmcvZ2gtZGVza3RvcC5wbmcpXShodHRwczovL2dpdGh1Yi5jb20vKSBbIVthcGlkZXZ0b29sc10oaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQzNzUwMDc0P3M9MjAwJnY9NCldKGh0dHBzOi8vZ2l0aHViLmNvbS9BUElEZXZUb29scykgWyFbYXN5bmNhcGldKGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjQwMTMzND9zPTIwMCZ2PTQpXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkpIFshW051anVja3NdKGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzE1MjQ/cz0yMDAmdj00KV0oaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvbnVuanVja3MpCgo= readmeEtag: '"16162014ee30fce0badddab4f3e8e74a914d4515"' readmeLastModified: Thu, 08 Aug 2024 17:13:04 GMT repositoryId: 179890990 description: Beautiful Open Api Template System created: '2019-04-06T21:56:58Z' updated: '2025-12-06T16:42:36Z' language: TypeScript archived: false stars: 57 watchers: 2 forks: 8 owner: j-d-carmichael logo: https://avatars.githubusercontent.com/u/49351986?v=4 license: MIT repoEtag: '"c0e496d67387e0ccc54222bfd711ac70a1820b7c312c524ff8e7e111eedf584e"' repoLastModified: Sat, 06 Dec 2025 16:42:36 GMT foundInMaster: true id: 8049f9d9f009ed969457a47b97bb22a5 oldLocations: - https://github.com/johndcarmichael/boats - source: https://openapi.tools/ name: APIClarity category: - Learning - Server Implementations language: - Golang - JavaScript link: https://apiclarity.io/ repository: https://github.com/openclarity/apiclarity source_description: >- Reconstruct Open API Specifications from real-time workload traffic seamlessly. v2: true v3: true v3_link: https://github.com/apiclarity/apiclarity/issues/39 repositoryMetadata: base64Readme: >- IyBBUElDbGFyaXR5CgohW0FQSUNsYXJpdHldKEFQSV9jbGFyaXR5LnN2ZyAiQVBJQ2xhcml0eSIpCgpBUElDbGFyaXR5IGlzIGEgbW9kdWxhciB0b29sIHRoYXQgYWRkcmVzc2VzIHNldmVyYWwgYXNwZWN0cyBvZiBBUEkgU2VjdXJpdHksIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiBbT3BlbkFQSV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvbGF0ZXN0Lmh0bWwpIGJhc2VkIEFQSXMuCgpBUElDbGFyaXR5IGFwcHJvYWNoZXMgQVBJIFNlY3VyaXR5IGluIDIgZGlmZmVyZW50IHdheXM6Ci0gQ2FwdHVyZXMgYWxsIEFQSSB0cmFmZmljIGluIGEgZ2l2ZW4gZW52aXJvbm1lbnQgYW5kIHBlcmZvcm1zIGEgc2V0IG9mIHNlY3VyaXR5IGFuYWx5c2lzIHRvIGRpc2NvdmVyIGFsbCBwb3RlbnRpYWwgc2VjdXJpdHkgcHJvYmxlbXMgd2l0aCBkZXRlY3RlZCBBUElzCi0gQWN0aXZlbHkgdGVzdHMgQVBJIGVuZHBvaW50cyB0byBkZXRlY3Qgc2VjdXJpdHkgaXNzdWVzIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzdWNoIEFQSXMuCgojIyBPcGVuQVBJIGF1dG9tYXRpYyByZWNvbnN0cnVjdGlvbgpCb3RoIGFwcHJvYWNoZXMgZGVzY3JpYmVkIGFib3ZlIGFyZSB3YXkgbW9yZSBlZmZlY3RpdmUgd2hlbiBBUElDbGFyaXR5IGlzIHByaW1lZCB3aXRoIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb25zIG9mIHRoZSBBUElzIGFuYWx5emVkIG9yIHRlc3RlZC4gSG93ZXZlciwgbm90IGFsbCBhcHBsaWNhdGlvbnMgaGF2ZSBhbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gYXZhaWxhYmxlLiBGb3IgdGhpcyByZWFzb24gb25lIG9mIHRoZSBtYWluIGZ1bmN0aW9uYWxpdHkgb2YgQVBJQ2xhcml0eSBpcyB0aGUgYXV0b21hdGljIHJlY29uc3RydWN0aW9uIG9mIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMgYmFzZWQgb24gb2JzZXJ2ZWQgQVBJIHRyYWZmaWMuIEluIHRoaXMgY2FzZSwgdXNlcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byByZXZpZXcgYW5kIGFwcHJvdmUgdGhlIHJlY29uc3RydWN0ZWQgc3BlY2lmaWNhdGlvbnMuCgojIyBTZWN1cml0eSBNb2R1bGVzCkFQSUNsYXJpdHkgaXMgc3RydWN0dXJlZCBpbiBhIG1vZHVsYXIgYXJjaGl0ZWN0dXJlLCB3aGljaCBhbGxvd3MgdG8gZWFzaWx5IGFkZCBuZXcgZnVuY3Rpb25hbGl0aWVzLgoKSW4gdGhlIGZvbGxvd2luZyBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBtb2R1bGVzIGN1cnJlbnRseSBpbXBsZW1lbnRlZDoKCi0gKipTcGVjIERpZmZzKiogVGhpcyBtb2R1bGUgY29tcGFyZXMgdGhlIEFQSSB0cmFjZXMgd2l0aCB0aGUgT0FQSSBzcGVjaWZpY2F0aW9ucyBwcm92aWRlZCBieSB0aGUgdXNlciBvciBwcmV2aW91c2x5IHJlY29uc3RydWN0ZWQuIFRoZSByZXN1bHQgb2YgdGhpcyBjb21wYXJpc29uIHByb3ZpZGVzOgogICAgLSBMaXN0IG9mIEFQSSBlbmRwb2ludHMgdGhhdCBhcmUgb2JzZXJ2ZWQgYnV0IG5vdCBkb2N1bWVudGVkIGluIHRoZSBzcGVjcywgaS5lLiBfU2hhZG93IEFQSXNfOwogICAgLSBMaXN0IG9mIEFQSSBlbmRwb2ludHMgdGhhdCBhcmUgb2JzZXJ2ZWQgYnV0IG1hcmtlZCBhcyBkZXByZWNhdGVkIGluIHRoZSBzcGVjcywgaS5lLiBfWm9tYmllIEFQSXNfOwogICAgLSBMaXN0IG9mIGRpZmZlcmVuY2UgYmV0d2VlbiBvZiB0aGUgQVBJcyBvYnNlcnZlZCBhbmQgdGhlaXIgZG9jdW1lbnRlZCBzcGVjaWZpY2F0aW9uLgotIFsqKlRyYWNlIEFuYWx5emVyKipdKC4vYmFja2VuZC9wa2cvbW9kdWxlcy9pbnRlcm5hbC90cmFjZWFuYWx5emVyL1JFQURNRS5tZCkgVGhpcyBtb2R1bGUgYW5hbHl6ZXMgcGF0aCwgaGVhZGVycyBhbmQgYm9keSBvZiBBUEkgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyB0byBkaXNjb3ZlciBwb3RlbnRpYWwgc2VjdXJpdHkgaXNzdWVzLCBzdWNoIGFzIHdlYWsgYXV0aGVudGljYXRpb25zLCBleHBvc3VyZSBvZiBzZW5zaXRpdmUgaW5mb3JtYXRpb24sIHBvdGVudGlhbCBCcm9rZW4gT2JqZWN0IExldmVsIEF1dGhvcml6YXRpb25zIChCT0xBKSBldGMuCi0gWyoqQkZMQSBEZXRlY3RvcioqXSguL2JhY2tlbmQvcGtnL21vZHVsZXMvaW50ZXJuYWwvYmZsYS9SRUFETUUubWQpIFRoaXMgbW9kdWxlIGRldGVjdHMgcG90ZW50aWFsIEJyb2tlbiBGdW5jdGlvbiBMZXZlbCBBdXRob3JpemF0aW9uLiBJbiBwYXJ0aWN1bGFyIGl0IG9ic2VydmVzIHRoZSBBUEkgaW50ZXJhY3Rpb25zIGFuZCBidWlsZCBhbiBhdXRob3JpemF0aW9uIG1vZGVsIHRoYXQgY2FwdHVyZXMgd2hhdCBjbGllbnRzIGFyZSBzdXBwb3NlZCB0byBiZSBhdXRob3JpemVkIHRvIG1ha2UgdGhlIHZhcmlvdXMgQVBJIGNhbGxzLiBCYXNlZCBvbiBzdWNoIGF1dGhvcml6YXRpb24gbW9kZWwgaXQgdGhlbiBzaWduYWxzIHZpb2xhdGlvbnMgd2hpY2ggbWF5IHJlcHJlc2VudCBwb3RlbnRpYWwgaXNzdWVzIGluIHRoZSBBUEkgYXV0aG9yaXphdGlvbiBwcm9jZWR1cmVzLgotICoqRnV6emVyKiogVGhpcyBtb2R1bGUgYWN0aXZlbHkgdGVzdHMgQVBJIGVuZHBvaW50cyBiYXNlZCBvbiB0aGVpciBzcGVjaWZpY2F0aW9uIGF0dGVtcHRpbmcgaW4gZGlzY292ZXJpbmcgc2VjdXJpdHkgaXNzdWVzIGluIHRoZSBBUEkgc2VydmVyIGltcGxlbWVudGF0aW9uLgoKIyMgSGlnaCBsZXZlbCBhcmNoaXRlY3R1cmUKCiFbSGlnaCBsZXZlbCBhcmNoaXRlY3R1cmVdKGRpYWdyYW0ucG5nICJIaWdoIGxldmVsIGFyY2hpdGVjdHVyZSIpCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCiMjIyBTdXBwb3J0ZWQgdHJhZmZpYyBzb3VyY2UgaW50ZWdyYXRpb25zCgpBUElDbGFyaXR5IHN1cHBvcnRzIGludGVncmF0aW5nIHdpdGggdGhlIGZvbGxvd2luZyB0cmFmZmljIHNvdXJjZXMuIEluc3RhbGwgQVBJQ2xhcml0eSBhbmQgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgcGVyIHJlcXVpcmVkIGludGVncmF0aW9uLgoKKiBJc3RpbyBTZXJ2aWNlIE1lc2gKICAqIE1ha2Ugc3VyZSB0aGF0IElzdGlvIDEuMTArIGlzIGluc3RhbGxlZCBhbmQgcnVubmluZyBpbiB5b3VyIGNsdXN0ZXIuCiAgU2VlIHRoZSBbT2ZmaWNpYWwgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9uc10oaHR0cHM6Ly9pc3Rpby5pby9sYXRlc3QvZG9jcy9zZXR1cC9nZXR0aW5nLXN0YXJ0ZWQvI2luc3RhbGwpCiAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgoqIFRhcCB2aWEgYSBEYWVtb25TZXQKICAqIFtJbnRlZ3JhdGlvbiBpbnN0cnVjdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY2xhcml0eS9hcGljbGFyaXR5L3RyZWUvbWFzdGVyL3BsdWdpbnMvdGFwZXIpCgoqIEtvbmcgQVBJIEdhdGV3YXkKICAqIFtJbnRlZ3JhdGlvbiBpbnN0cnVjdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY2xhcml0eS9hcGljbGFyaXR5L3RyZWUvbWFzdGVyL3BsdWdpbnMvZ2F0ZXdheS9rb25nKQoKKiBUeWsgQVBJIEdhdGV3YXkKICAqIFtJbnRlZ3JhdGlvbiBpbnN0cnVjdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY2xhcml0eS9hcGljbGFyaXR5L3RyZWUvbWFzdGVyL3BsdWdpbnMvZ2F0ZXdheS90eWspCgoqIE9wZW5UZWxlbWV0cnkgQ29sbGVjdG9yICh0cmFjZXMgb25seSkKICAqIFtJbnRlZ3JhdGlvbiBpbnN0cnVjdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY2xhcml0eS9hcGljbGFyaXR5L3RyZWUvbWFzdGVyL3BsdWdpbnMvb3RlbC1jb2xsZWN0b3IpCgpUaGUgaW50ZWdyYXRpb25zIChwbHVnaW5zKSBmb3IgdGhlIHN1cHBvcnRlZCB0cmFmZmljIHNvdXJjZXMgYWJvdmUgYXJlIGxvY2F0ZWQgaW4gdGhlIFtwbHVnaW5zIGRpcmVjdG9yeSB3aXRoaW4gdGhlIGNvZGViYXNlXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmNsYXJpdHkvYXBpY2xhcml0eS90cmVlL21hc3Rlci9wbHVnaW5zKSBhbmQgaW1wbGVtZW50IHRoZSBbcGx1Z2lucyBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY2xhcml0eS9hcGljbGFyaXR5L3RyZWUvbWFzdGVyL3BsdWdpbnMvYXBpKSB0byBleHBvcnQgdGhlIEFQSSBldmVudHMgdG8gQVBJQ2xhcml0eS4gVG8gZW5hYmxlIGFuZCBjb25maWd1cmUgdGhlIHN1cHBvcnRlZCB0cmFmZmljIHNvdXJjZXMsIHBsZWFzZSBjaGVjayB0aGUgYGBgdHJhZmZpY1NvdXJjZTpgYGAgc2VjdGlvbiBpbiBbSGVsbSB2YWx1ZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY2xhcml0eS9hcGljbGFyaXR5L2Jsb2IvbWFzdGVyL2NoYXJ0cy9hcGljbGFyaXR5L3ZhbHVlcy55YW1sKS4KQ29udHJpYnV0aW9ucyBvZiBpbnRlZ3JhdGlvbnMgd2l0aCBhZGRpdGlvbmFsIHRyYWZmaWMgc291cmNlcyBhcmUgbW9yZSB0aGFuIHdlbGNvbWUhCgojIyMgSW5zdGFsbCBBUElDbGFyaXR5IGluIGEgSzhzIGNsdXN0ZXIgdXNpbmcgSGVsbToKCjEuIEFkZCBIZWxtIHJlcG8KCiAgIGBgYHNoZWxsCiAgIGhlbG0gcmVwbyBhZGQgYXBpY2xhcml0eSBodHRwczovL29wZW5jbGFyaXR5LmdpdGh1Yi5pby9hcGljbGFyaXR5CiAgIGBgYAoKMi4gU2F2ZSBBUElDbGFyaXR5IGRlZmF1bHQgY2hhcnQgdmFsdWVzCgogICAgYGBgc2hlbGwKICAgIGhlbG0gc2hvdyB2YWx1ZXMgYXBpY2xhcml0eS9hcGljbGFyaXR5ID4gdmFsdWVzLnlhbWwKICAgIGBgYAoKMy4gVXBkYXRlIGB2YWx1ZXMueWFtbGAgd2l0aCB0aGUgcmVxdWlyZWQgdHJhZmZpYyBzb3VyY2UgdmFsdWVzCgo0LiBEZXBsb3kgQVBJQ2xhcml0eSB3aXRoIEhlbG0gZm9yIHRoZSBzZWxlY3RlZCB0cmFmZmljIHNvdXJjZQoKICAgYGBgc2hlbGwKICAgaGVsbSBpbnN0YWxsIC0tdmFsdWVzIHZhbHVlcy55YW1sIC0tY3JlYXRlLW5hbWVzcGFjZSBhcGljbGFyaXR5IGFwaWNsYXJpdHkvYXBpY2xhcml0eSAtbiBhcGljbGFyaXR5CiAgIGBgYAoKNS4gUG9ydCBmb3J3YXJkIHRvIEFQSUNsYXJpdHkgVUk6CgogICBgYGBzaGVsbAogICBrdWJlY3RsIHBvcnQtZm9yd2FyZCAtbiBhcGljbGFyaXR5IHN2Yy9hcGljbGFyaXR5LWFwaWNsYXJpdHkgOTk5OTo4MDgwCiAgIGBgYAoKNi4gT3BlbiBBUElDbGFyaXR5IFVJIGluIHRoZSBicm93c2VyOiA8aHR0cDovL2xvY2FsaG9zdDo5OTk5Lz4KNy4gR2VuZXJhdGUgc29tZSB0cmFmZmljIGluIHRoZSB0cmFjZWQgYXBwbGljYXRpb25zIGFuZCBjaGVjayB0aGUgQVBJQ2xhcml0eSBVSSA6KQoKIyMjIFVuaW5zdGFsbCBBUElDbGFyaXR5IGZyb20gYSBLOHMgY2x1c3RlciB1c2luZyBIZWxtOgoKMS4gSGVsbSB1bmluc3RhbGwKCiAgIGBgYHNoZWxsCiAgIGhlbG0gdW5pbnN0YWxsIGFwaWNsYXJpdHkgLW4gYXBpY2xhcml0eQogICBgYGAKCjIuIENsZWFuIHJlc291cmNlcwoKICAgIEJ5IGRlZmF1bHQsIEhlbG0gd2lsbCBub3QgcmVtb3ZlIHRoZSBQVkNzIGFuZCBQVnMgZm9yIHRoZSBTdGF0ZWZ1bFNldHMuIFJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gZGVsZXRlIHRoZW0gYWxsOgoKICAgIGBgYHNoZWxsCiAgICBrdWJlY3RsIGRlbGV0ZSBwdmMgLWwgYXBwLmt1YmVybmV0ZXMuaW8vaW5zdGFuY2U9YXBpY2xhcml0eSAtbiBhcGljbGFyaXR5CiAgICBgYGAKCiMjIENvbmZpZ3VyYXRpb25zCgpUaGUgZmlsZSBbdmFsdWVzLnlhbWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY2xhcml0eS9hcGljbGFyaXR5L2Jsb2IvbWFzdGVyL2NoYXJ0cy9hcGljbGFyaXR5L3ZhbHVlcy55YW1sKSBpcyB1c2VkIHRvIGRlcGxveSBhbmQgY29uZmlndXJlIEFQSUNsYXJpdHkgb24geW91ciBjbHVzdGVyIHZpYSBIZWxtLgpbVGhpcyBDb25maWdNYXBdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY2xhcml0eS9hcGljbGFyaXR5L2Jsb2IvbWFzdGVyL2NoYXJ0cy9hcGljbGFyaXR5L3RlbXBsYXRlcy9jb25maWdtYXAueWFtbCkgaXMgdXNlZCB0byBkZWZpbmUgdGhlIGxpc3Qgb2YgaGVhZGVycyB0byBpZ25vcmUgd2hlbiByZWNvbnN0cnVjdGluZyB0aGUgc3BlYy4KCiMjIFRlc3Rpbmcgd2l0aCBhIGRlbW8gYXBwbGljYXRpb24KCkEgZ29vZCBkZW1vIGFwcGxpY2F0aW9uIHRvIHRyeSBBUElDbGFyaXR5IHdpdGggaXMgdGhlIFtTb2NrIFNob3AgRGVtb10oaHR0cHM6Ly9taWNyb3NlcnZpY2VzLWRlbW8uZ2l0aHViLmlvLykuCgpUbyBkZXBsb3kgdGhlIFNvY2sgU2hvcCBEZW1vLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CgoxLiBDcmVhdGUgdGhlIGBzb2NrLXNob3BgIG5hbWVzcGFjZSBhbmQgZW5hYmxlIElzdGlvIGluamVjdGlvbjoKCiAgIGBgYHNoZWxsCiAgIGt1YmVjdGwgY3JlYXRlIG5hbWVzcGFjZSBzb2NrLXNob3AKICAga3ViZWN0bCBsYWJlbCBuYW1lc3BhY2VzIHNvY2stc2hvcCBpc3Rpby1pbmplY3Rpb249ZW5hYmxlZAogICBgYGAKCjIuIERlcGxveSB0aGUgU29jayBTaG9wIERlbW8gdG8geW91ciBjbHVzdGVyOgoKICAgYGBgc2hlbGwKICAga3ViZWN0bCBhcHBseSAtZiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbWljcm9zZXJ2aWNlcy1kZW1vL21pY3Jvc2VydmljZXMtZGVtby9tYXN0ZXIvZGVwbG95L2t1YmVybmV0ZXMvY29tcGxldGUtZGVtby55YW1sCiAgIGBgYAoKMy4gRGVwbG95IEFQSUNsYXJpdHkgaW4gdGhlIGBzb2NrLXNob3BgIG5hbWVzcGFjZSAoZS5nLiBJc3RpbyBzZXJ2aWNlLW1lc2ggdHJhZmZpYyBzb3VyY2UpOgoKICAgYGBgc2hlbGwKICAgaGVsbSByZXBvIGFkZCBhcGljbGFyaXR5IGh0dHBzOi8vb3BlbmNsYXJpdHkuZ2l0aHViLmlvL2FwaWNsYXJpdHkKICAgYGBgCgogICBgYGBzaGVsbAogICBoZWxtIGluc3RhbGwgLS1zZXQgJ3RyYWZmaWNTb3VyY2UuZW52b3lXYXNtLmVuYWJsZWQ9dHJ1ZScgLS1zZXQgJ3RyYWZmaWNTb3VyY2UuZW52b3lXYXNtLm5hbWVzcGFjZXM9e3NvY2stc2hvcH0nIC0tY3JlYXRlLW5hbWVzcGFjZSBhcGljbGFyaXR5IGFwaWNsYXJpdHkvYXBpY2xhcml0eSAtbiBhcGljbGFyaXR5CiAgIGBgYAoKNC4gUG9ydCBmb3J3YXJkIHRvIFNvY2sgU2hvcCdzIGZyb250LWVuZCBzZXJ2aWNlIHRvIGFjY2VzcyB0aGUgU29jayBTaG9wIERlbW8gQXBwOgoKICAgYGBgc2hlbGwKICAga3ViZWN0bCBwb3J0LWZvcndhcmQgLW4gc29jay1zaG9wIHN2Yy9mcm9udC1lbmQgNzc3Nzo4MAogICBgYGAKCiAgIE9wZW4gdGhlIFNvY2sgU2hvcCBEZW1vIEFwcCBVSSBpbiB0aGUgYnJvd3NlciAoPGh0dHA6Ly9sb2NhbGhvc3Q6Nzc3Ny8+KSBhbmQgcnVuCiAgIHNvbWUgdHJhbnNhY3Rpb25zIHRvIGdlbmVyYXRlIGRhdGEgdG8gcmV2aWV3IG9uIHRoZSBBUElDbGFyaXR5IGRhc2hib2FyZC4KCiMjIEJ1aWxkaW5nCgojIyMgQnVpbGRpbmcgZnJvbSBzb3VyY2U6CgpCdWlsZCBhbmQgcHVzaCB0aGUgaW1hZ2UgdG8geW91ciByZXBvOgoKYGBgc2hlbGwKRE9DS0VSX0lNQUdFPTx5b3VyIGRvY2tlciByZWdpc3RyeT4vYXBpY2xhcml0eSBET0NLRVJfVEFHPTx5b3VyIHRhZz4gbWFrZSBwdXNoLWRvY2tlcgpgYGAKClVwZGF0ZSBbdmFsdWVzLnlhbWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY2xhcml0eS9hcGljbGFyaXR5L2Jsb2IvbWFzdGVyL2NoYXJ0cy9hcGljbGFyaXR5L3ZhbHVlcy55YW1sKSBhY2NvcmRpbmdseS4KCiMjIFJ1bm5pbmcgbG9jYWxseSB3aXRoIGRlbW8gZGF0YQoKMS4gQnVpbGQgVUkgJiBiYWNrZW5kIGxvY2FsbHkgYXMgZGVzY3JpYmVkIGFib3ZlOgoKICAgYGBgc2hlbGwKICAgbWFrZSB1aSAmJiBtYWtlIGJhY2tlbmQKICAgYGBgCgoyLiBDb3B5IHRoZSBidWlsdCBzaXRlOgoKICAgYGBgc2hlbGwKICAgY3AgLXIgLi91aS9idWlsZCAuL3NpdGUKICAgYGBgCgozLiBSdW4gYmFja2VuZCBhbmQgZnJvbnRlbmQgbG9jYWxseSB1c2luZyBkZW1vIGRhdGE6CgogICBOb3RlOiBZb3UgbWlnaHQgbmVlZCB0byBkZWxldGUgdGhlIG9sZCBsb2NhbCBzdGF0ZSBmaWxlIGFuZCBsb2NhbCBkYjoKCiAgIGBgYHNoZWxsCiAgIHJtIHN0YXRlLmdvYjsgcm0gZGIuZGIKICAgYGBgCgogICBgYGBzaGVsbAogICBEQVRBQkFTRV9EUklWRVI9TE9DQUwgSzhTX0xPQ0FMPXRydWUgRkFLRV9UUkFDRVM9dHJ1ZSBGQUtFX1RSQUNFU19QQVRIPS4vYmFja2VuZC9wa2cvdGVzdC90cmFjZV9maWxlcyBcCiAgIEVOQUJMRV9EQl9JTkZPX0xPR1M9dHJ1ZSAuL2JhY2tlbmQvYmluL2JhY2tlbmQgcnVuCiAgIGBgYAogICBOb3RlOiB0aGlzIGNvbW1hbmQgcmVxdWlyZXMgYSBwcm9wZXIgS1VCRUNPTkZJRyBpbiB5b3VyIGVudmlyb25tZW50IHdoZW4gX19LOFNfTE9DQUw9dHJ1ZV9fIGlzIHVzZWQuIElmIHlvdSB3YW50IHRvIHJ1biB3aXRob3V0IGs4cywgdXNlIF9fRU5BQkxFX0s4Uz1mYWxzZV9fIGluc3RlYWQuCgo0LiBPcGVuIEFQSUNsYXJpdHkgVUkgaW4gdGhlIGJyb3dzZXI6IDxodHRwOi8vbG9jYWxob3N0OjgwODAvPgoKIyMgRW5hYmxpbmcgRXh0ZXJuYWwgVHJhY2UgU291cmNlcyBTdXBwb3J0CkVuYWJsaW5nIGV4dGVybmFsIHRyYWNlIHNvdXJjZXMgc3VwcG9ydCwgQVBJQ2xhcml0eSBjYW4gcmVjZWl2ZSB0aGUgdHJhY2Ugc291cmNlcyBmcm9tIHRoZSBlbnRpdGl0ZXMgdGhhdCBhcmUgZXh0ZXJuYWwgdG8gdGhlIEs4cyBjbHVzdGVyLiBFeHRlcm5hbCB0cmFjZSBzb3VyY2VzIHN1Y2ggYXMgR2F0ZXdheXMsIExvYWQgYmFsYW5jZXJzLCBldGMuIGNhbiBjb21tdW5pY2F0ZSB3aXRoIEFQSUNsYXJpdHkgdG8gcmVwb3J0IEFQSXMgYW5kIHNlbmQgdGhlIHRyYWNlcy4gCgpUaGUgZm9sbG93aW5nIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBkZXBsb3kgQVBJQ2xhcml0eSB3aXRoIHRoZSBzdXBwb3J0IGZvciBleHRlcm5hbCB0cmFjZSBzb3VyY2VzCjEuCUFkZCBIZWxtIFJlcG8KYGBgc2hlbGwKaGVsbSByZXBvIGFkZCBhcGljbGFyaXR5IGh0dHBzOi8vb3BlbmNsYXJpdHkuZ2l0aHViLmlvL2FwaWNsYXJpdHkKYGBgCgoyLglVcGRhdGUgdmFsdWVzLnlhbWwgd2l0aCAKYGBgc2hlbGwKQXBpY2xhcml0eSAtPiB0bHMgLT4gZW5hYmxlZCBhcyB0cnVlCnN1cHBvcnRFeHRlcm5hbFRyYWNlU291cmNlIC0+IGVuYWJsZWQgYXMgdHJ1ZQpgYGAKCjMuCURlcGxveSBBUElDbGFyaXR5IHdpdGggdGhlIEhlbG0gZW5hYmxpbmcgZXh0ZXJuYWwgdHJhZmZpYyBzb3VyY2VzCmBgYHNoZWxsCmhlbG0gaW5zdGFsbCAtLXZhbHVlcyB2YWx1ZXMueWFtbCAtLWNyZWF0ZS1uYW1lc3BhY2UgYXBpY2xhcml0eSBhcGljbGFyaXR5L2FwaWNsYXJpdHkgLW4gYXBpY2xhcml0eQpgYGAKCjQuCVBvcnQgZm9yd2FyZCB0byBBUElDbGFyaXR5IFVJOgpgYGBzaGVsbAprdWJlY3RsIHBvcnQtZm9yd2FyZCAtbiBhcGljbGFyaXR5IHN2Yy9hcGljbGFyaXR5LWFwaWNsYXJpdHkgOTk5OTo4MDgwCmBgYAoKNS4JT3BlbiBBUElDbGFyaXR5IFVJIGluIHRoZSBicm93c2VyOgpgYGBzaGVsbApodHRwOi8vbG9jYWxob3N0Ojk5OTkgCmBgYAoKVGhlIGZvbGxvd2luZyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gcmVnaXN0ZXIgYSBuZXcgZXh0ZXJuYWwgdHJhY2Ugc291cmNlLiBBbmQgdGhpcyBzZWN0aW9uIGluY2x1ZGVzIGhvdyB0byBhY2Nlc3MgdGhlIHNlcnZpY2UsIHJlZ2lzdGVyIGEgbmV3IHRyYWNlIHNvdXJjZSwgYW5kIGhvdyB0byByZWNlaXZlIHRoZSB0b2tlbiBhbmQgY2VydGlmaWNhdGUuCjEuCVBvcnQgZm9yd2FyZCBmb3Igc2VydmljZSBhdCA4NDQzCmBgYHNoZWxsCmt1YmVjdGwgcG9ydC1mb3J3YXJkIC1uIGFwaWNsYXJpdHkgc3ZjL2FwaWNsYXJpdHktYXBpY2xhcml0eSA4NDQzOjg0NDMKYGBgCgoyLglSZWdpc3RlciBhIG5ldyBleHRlcm5hbCB0cmFjZSBzb3VyY2UgYW5kIHJlY2VpdmUgdGhlIHRva2VuIApgYGBzaGVsbApUUkFDRV9TT1VSQ0VfVE9LRU49JChjdXJsIC0taHR0cDEuMSAtLWluc2VjdXJlIC1zIC1IICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nIC1kICd7Im5hbWUiOiJhcGlnZWVfZ2F0ZXdheSIsInR5cGUiOiJBUElHRUVfWCJ9JyBodHRwczovL2xvY2FsaG9zdDo4NDQzL2FwaS9jb250cm9sL3RyYWNlU291cmNlc3xqcSAtciAnLnRva2VuJykKYGBgCgozLiBSZWNlaXZlIHRoZSBjZXJ0aWZpY2F0ZQpUbyByZWNlaXZlIHRoZSBjZXJ0aWZpY2F0ZSwgZ2V0IHRoZSBFeHRlcm5hbC1JUCBmb3IgdGhlIHNlcnZpY2UgbmFtZWQgYXMgYXBpY2xhcml0eS1leHRlcm5hbApgYGBzaGVsbAprdWJlY3RsIGdldCBzZXJ2aWNlcyAtbiBhcGljbGFyaXR5CmBgYApUaGVuLCB1c2UgdGhlIEV4dGVybmFsLUlQIGFkZHJlc3Mgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQsIHRoZW4gZXh0cmFjdCB0aGUgY2VydGlmaWNhdGUgd2l0aCAtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0gYW5kIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0gYW5kIHNhdmUgdG8gc2VydmVyLmNydApgYGBzaGVsbApvcGVuc3NsIHNfY2xpZW50IC1zaG93Y2VydHMgLWNvbm5lY3QgPEV4dGVybmFsLUlQPjoxMDQ0MwpgYGAKClVzZSB0aGUgYWJvdmUgZXh0cmFjdGVkIHRva2VuIGF0IHRoZSBzdGVwLTIgYW5kIGNlcnRpZmljYXRlIGF0IHN0ZXAtMyBmb3IgY29uZmlndXJpbmcgc3Vic2VxdWVudCBleHRlcm5hbCB0cmFjZSBzb3VyY2VzIHN1Y2ggYXMgQXBpZ2VlIFggR2F0ZXdheSBhbmQgQklHLUlQIExUTSBMb2FkIGJhbGFuY2VyCgojIyBTdXBwb3J0ZWQgVHJhY2UgU291cmNlcwpBUElDbGFyaXR5IGNhbiBzdXBwb3J0IHdpdGggdGhlIGZvbGxvd2luZyB0cmFjZSBzb3VyY2VzIGFuZCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBwZXIgcmVxdWlyZWQgaW50ZWdyYXRpb24uCgoqIEFwaWdlZSBYIEdhdGV3YXkKICAqIFtJbnRlZ3JhdGlvbiBpbnN0cnVjdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY2xhcml0eS9hcGljbGFyaXR5L3RyZWUvbWFzdGVyL3BsdWdpbnMvZ2F0ZXdheS9hcGlnZWV4KQoqIEJJRy1JUCBMVE0gTG9hZCBiYWxhbmNlcgogICogW0ludGVncmF0aW9uIGluc3RydWN0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL29wZW5jbGFyaXR5L2FwaWNsYXJpdHkvdHJlZS9tYXN0ZXIvcGx1Z2lucy9nYXRld2F5L2Y1LWJpZ2lwKQoqIEtvbmcKICAqIFtJbnRlZ3JhdGlvbiBpbnN0cnVjdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY2xhcml0eS9hcGljbGFyaXR5L3RyZWUvbWFzdGVyL3BsdWdpbnMvZ2F0ZXdheS9rb25nKQoqIFR5awogICogW0ludGVncmF0aW9uIGluc3RydWN0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL29wZW5jbGFyaXR5L2FwaWNsYXJpdHkvdHJlZS9tYXN0ZXIvcGx1Z2lucy9nYXRld2F5L3R5aykKCiMjIENvbnRyaWJ1dGluZwoKUHVsbCByZXF1ZXN0cyBhbmQgYnVnIHJlcG9ydHMgYXJlIHdlbGNvbWUuCgpGb3IgbGFyZ2VyIGNoYW5nZXMgcGxlYXNlIGNyZWF0ZSBhbiBJc3N1ZSBpbiBHaXRIdWIgZmlyc3QgdG8gZGlzY3VzcyB5b3VyCnByb3Bvc2VkIGNoYW5nZXMgYW5kIHBvc3NpYmxlIGltcGxpY2F0aW9ucy4KCiMjIENvbnRyaWJ1dG9ycwoKaHR0cHM6Ly9wYW5vcHRpY2EuYXBwCgojIyBMaWNlbnNlCgpbQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wXShodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wKQo= readmeEtag: '"e8e7d2fe52e0a9d51ecf4a445a3c52482e9f6883"' readmeLastModified: Wed, 03 Jul 2024 09:43:36 GMT 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: '2026-01-26T17:44:35Z' language: Go archived: false stars: 563 watchers: 19 forks: 71 owner: openclarity logo: https://avatars.githubusercontent.com/u/89657786?v=4 license: Apache-2.0 repoEtag: '"5fd625984b4c067f608fdbfa9bff7b1b91ab18bd93405068d9a46e2144b6c52f"' repoLastModified: Mon, 26 Jan 2026 17:44:35 GMT foundInMaster: true id: 68b981acc13af75d4eb8c04143885e13 oldLocations: - https://github.com/apiclarity/apiclarity - source: https://openapi.tools/ name: Unmock category: - Mock - Testing link: https://unmock.io language: Node.js repository: https://github.com/meeshkan/unmock-js source_description: >- API integration testing library that intercepts outgoing requests and serves back mock data based on the OpenAPI descriptions. v2: false v3: true repositoryMetadata: base64Readme: >- IyBbVW5tb2NrXShodHRwczovL3d3dy51bm1vY2suaW8vKSAoSmF2YVNjcmlwdCBTREspCgpbIVtDaXJjbGVDSV0oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvbWVlc2hrYW4vdW5tb2NrLWpzLnN2Zz9zdHlsZT1zdmcpXShodHRwczovL2NpcmNsZWNpLmNvbS9naC9tZWVzaGthbi91bm1vY2stanMpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC91bm1vY2svdW5tb2NrLWpzL2JyYW5jaC9kZXYvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3VubW9jay91bm1vY2stanMpClshW0tub3duIFZ1bG5lcmFiaWxpdGllc10oaHR0cHM6Ly9zbnlrLmlvL3Rlc3QvZ2l0aHViL3VubW9jay91bm1vY2stanMvYmFkZ2Uuc3ZnP3RhcmdldEZpbGU9cGFja2FnZS5qc29uKV0oaHR0cHM6Ly9zbnlrLmlvL3Rlc3QvZ2l0aHViL3VubW9jay91bm1vY2stanM/dGFyZ2V0RmlsZT1wYWNrYWdlLmpzb24pClshW0NoYXQgb24gR2l0dGVyXShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vZ2l0dGVySFEvZ2l0dGVyLnBuZyldKGh0dHBzOi8vZ2l0dGVyLmltL3VubW9jay9jb21tdW5pdHkpCgpGdXp6IHRlc3QgeW91ciBSRVNUIEFQSSBjYWxscy4KCiogW0luc3RhbGxdKCNpbnN0YWxsKQoqIFtXaGF0IERvZXMgVW5tb2NrIERvXSgjd2hhdC1kb2VzLXVubW9jay1kbykKKiBbV2hlbiBUbyBVc2UgVW5tb2NrXSgjd2hlbi10by11c2UtdW5tb2NrKQoqIFtUaGUgRG9jc10oI3RoZS1kb2NzKQoqIFtVc2FnZV0oI3VzYWdlKQogICsgW1NwZWNpZnlpbmcgaG9zdG5hbWVdKCNzcGVjaWZ5aW5nLWhvc3RuYW1lKQogICsgW1NwZWNpZnlpbmcgdGhlIHBhdGhdKCNzcGVjaWZ5aW5nLXRoZS1wYXRoKQogICsgW1NwZWNpZnlpbmcgcmVxdWVzdCBib2R5XSgjc3BlY2lmeWluZy1yZXF1ZXN0LWJvZHkpCiAgKyBbU3BlY2lmeWluZyByZXF1ZXN0IHF1ZXJ5IHN0cmluZ10oI3NwZWNpZnlpbmctcmVxdWVzdC1xdWVyeS1zdHJpbmcpCiAgKyBbU3BlY2lmeWluZyBSZXF1ZXN0IEhlYWRlcnNdKCNzcGVjaWZ5aW5nLXJlcXVlc3QtaGVhZGVycykKICArIFtTcGVjaWZ5aW5nIHJlcGxpZXNdKCNzcGVjaWZ5aW5nLXJlcGxpZXMpCiAgKyBbU3BlY2lmeWluZyByZXBseSBoZWFkZXJzXSgjc3BlY2lmeWluZy1yZXBseS1oZWFkZXJzKQogICsgW0NoYWluaW5nXSgjY2hhaW5pbmcpCiAgKyBbSWdub3JhYmxlIEFQSSBjYWxsc10oI2lnbm9yYWJsZS1hcGktY2FsbHMpCiogW0V4cGVjdGF0aW9uc10oI2V4cGVjdGF0aW9ucykKKiBbSW5pdGlhbGl6aW5nIE1vY2tzXSgjaW5pdGlhbGl6aW5nLW1vY2tzKQoqIFtGYWtlciBBUEldKCNmYWtlci1hcGkpCiogW1J1bm5lcl0oI3J1bm5lcikKKiBbT3BlbkFQSV0oI29wZW5hcGkpCiogW1R1dG9yaWFsc10oI3R1dG9yaWFscykKKiBbQ29udHJpYnV0aW5nXSgjY29udHJpYnV0aW5nKQoqIFtEZXZlbG9wbWVudF0oI2RldmVsb3BtZW50KQoqIFtMaWNlbnNlXSgjbGljZW5zZSkKCiMjIEluc3RhbGwKCmBgYHNoCiQgbnBtIGluc3RhbGwgLS1zYXZlLWRldiB1bm1vY2sKYGBgCgojIyBXaGF0IERvZXMgVW5tb2NrIERvCgpVbm1vY2sgaGVscHMgeW91IGZ1enogdGVzdCBSRVNUIEFQSSBjYWxscy4gRnV6eiB0ZXN0aW5nLCBvciBmdXp6aW5nLCBpcyBhIGZvcm0gb2YgdGVzdGluZyB3aGVyZSB5b3UgdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiBjb2RlIGJ5IGFzc2VydGluZyB0aGF0IGl0IGJlaGF2ZXMgY29ycmVjdGx5IHdpdGggdmFyaWFibGUgYW5kIHVuZXhwZWN0ZWQgaW5wdXQuIFRoZSByZXNwb25zZSBvZiBhIFJFU1QgQVBJIGlzIG1vc3Qgb2Z0ZW4gdmFyaWFibGUgYW5kIHVuZXhwZWN0ZWQuIFNvLCBpbiBtb3N0IGNhc2VzLCBmdXp6IHRlc3RpbmcgaXMgYSB1c2VmdWwgd2F5IHRvIHRlc3QgaW50ZWdyYXRpb25zIHdpdGggQVBJcy4KCiMjIFdoZW4gVG8gVXNlIFVubW9jawoKQmVsb3cgYXJlIHNvbWUgcXVlc3Rpb25zIHRvIGFzayB3aGVuIGRldGVybWluaW5nIGlmIFVubW9jayBpcyBhIGdvb2QgZml0IGZvciB5b3VyIGRldmVsb3BtZW50IHByb2Nlc3MuCgotIElzIG15IGNvZGUgYmFzZSBpbiBKYXZhU2NyaXB0IG9yIFR5cGVTY3JpcHQ/Ci0gRG9lcyBteSBjb2RlIGJhc2UgaGF2ZSB0ZXN0cyB3cml0dGVuIGluIEplc3QsIE1vY2hhLCBKYXNtaW5lLCBUYXAgb3IgQXZhPwotIERvIEkgbWFrZSBhIG5ldHdvcmsgY2FsbCBmcm9tIG15IGNvZGViYXNlIHRvIGEgUkVTVCBBUEk/CgpJZiB0aGUgYW5zd2VyIGlzIHllcyB0byBhbGwgb2YgdGhlc2UgcXVlc3Rpb25zLCBVbm1vY2sgY291bGQgaGVscCB5b3UgdGVzdCBjb2RlIHBhdGhzIGluIHlvdXIgY29kZSB0aGF0IG1ha2UgUkVTVCBBUEkgY2FsbHMgYW5kIHVzZSB0aGUgcmVzcG9uc2VzIGZyb20gdGhvc2UgQVBJLgoKIyMgVGhlIERvY3MKCklmIHlvdSBkb24ndCBsaWtlIHJlYWRpbmcgUkVBRE1FcywgY2hlY2sgb3V0IG91ciBbZG9jc10oaHR0cHM6Ly91bm1vY2suaW8vZG9jcy9pbnRyb2R1Y3Rpb24pIQoKIyMgVXNhZ2UKCkhlcmUgaXMgYSBtb2NrIGRlZmluZWQgdXNpbmcgdW5tb2NrLCBhIGZ1bmN0aW9uIHRvIGJlIHRlc3RlZCwgYW5kIGEgdGVzdCB3cml0dGVuIGluIGplc3QuIFRoZSBjb21tZW50ZWQgbnVtYmVycyBhcmUgZXhwbGFpbmVkIGluIHRoZSB0ZXh0IGJlbG93IHRoaXMgY29kZSBleGFtcGxlLgoKYGBganMKY29uc3QgZmV0Y2ggPSByZXF1aXJlKCJub2RlLWZldGNoIik7CmNvbnN0IHVubW9jayA9IHJlcXVpcmUoInVubW9jayIpOwpjb25zdCB7IHJ1bm5lciwgdHJhbnNmb3JtLCB1IH0gPSB1bm1vY2s7CmNvbnN0IHsgd2l0aENvZGVzIH0gPSB0cmFuc2Zvcm07Cgp1bm1vY2sKICAubW9jaygiaHR0cHM6Ly96b2RpYWMuY29tIiwgInpvZGlhYyIpCiAgLmdldCgiL2hvcm9zY29wZS97c2lnbn0iKSAvLyAxCiAgLnJlcGx5KDIwMCwgewogICAgaG9yb3Njb3BlOiB1LnN0cmluZygpLCAvLyAyCiAgICBhc2NlbmRhbnQ6IHUub3B0KHUuc3RyaW5nKCkpIC8vIDMKICB9KQogIC5yZXBseSg0MDQsIHsgbWVzc2FnZTogIk5vdCBhdXRob3JpemVkIiB9KTsgLy8gNAoKYXN5bmMgZnVuY3Rpb24gZ2V0SG9yb3Njb3BlKHNpZ24pIHsKICAvLyB1c2UgdW5tb2NrLmZldGNoLCByZXF1ZXN0LCBmZXRjaCwgYXhpb3Mgb3IgYW55IHNpbWlsYXIgbGlicmFyeQogIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZldGNoKCJodHRwczovL3pvZGlhYy5jb20vaG9yb3Njb3BlLyIgKyBzaWduKTsKICBjb25zdCBqc29uID0gYXdhaXQgcmVzdWx0Lmpzb24oKTsKICByZXR1cm4geyAuLi5qc29uLCBzZWVuOiBmYWxzZSB9Owp9CgpsZXQgem9kaWFjOwpiZWZvcmVBbGwoKCkgPT4gewogIHpvZGlhYyA9IHVubW9jay5kZWZhdWx0Lm9uKCkuc2VydmljZXMuem9kaWFjOwp9KTsKYWZ0ZXJBbGwoKCkgPT4gdW5tb2NrLmRlZmF1bHQub2ZmKCkpOwoKZGVzY3JpYmUoImdldEhvcm9zY29wZSIsICgpID0+IHsKICBpdCgKICAgICJhdWdtZW50cyB0aGUgQVBJIGNhbGwgd2l0aCBzZWVuPWZhbHNlIiwKICAgIHJ1bm5lcihhc3luYyAoKSA9PiB7IC8vIDUKICAgICAgem9kaWFjLnN0YXRlKHdpdGhDb2RlcygyMDApKTsgLy8gNgogICAgICBjb25zdCByZXMgPSBhd2FpdCBnZXRIb3Jvc2NvcGUoKTsKICAgICAgZXhwZWN0KHJlcykudG9NYXRjaE9iamVjdChKU09OLnBhcnNlKHpvZGlhYy5zcHkuZ2V0UmVzcG9uc2VCb2R5KCkpKTsgLy8gNwogICAgICBleHBlY3QocmVzLnNlZW4pLnRvQmUoZmFsc2UpOwogICAgfSksCiAgKTsKfSk7CmBgYAoKV2l0aCB1bm1vY2ssIHlvdSBjYW4gKDEpIG92ZXJyaWRlIGEgUkVTVCBlbmRwb2ludCB0byBwcm92aWRlICgyKSB2YXJpYWJsZSBhbmQgKDMpIG9wdGlvbmFsIHJlc3BvbnNlcyBpbiBhZGRpdGlvbiB0byAoNCkgZGlmZmVyZW50IHN0YXR1cyBjb2Rlcy4gVGhlbiwgb25lIHVzZXMgdGhlICg1KSBydW5uZXIgdG8gYXV0b21hdGljYWxseSBydW4gYSB0ZXN0IG11bHRpcGxlIHRpbWVzIHdpdGggc3VidGx5IGRpZmZlcmVudCByZXNwb25zZXMgZnJvbSB0aGUgQVBJLiBPbmUgY2FuIGFsc28gKDYpIGluaXRpYWxpemUgdGhlIEFQSSB0byBhIGdpdmVuIHN0YXRlIGFuZCAoNykgbWFrZSBhc3NlcnRpb25zIGFib3V0IGhvdyBhbiBBUEkgd2FzIHVzZWQuCgojIyMgU3BlY2lmeWluZyBob3N0bmFtZQoKVGhlIHJlcXVlc3QgaG9zdG5hbWUgc2hvdWxkIGJlIGEgc3RyaW5nLgoKYGBganMKdW5tb2NrLm1vY2soJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20nKQogIC5nZXQoJy9yZXNvdXJjZScpCiAgLnJlcGx5KDIwMCwgdS5pbnRlZ2VyKCkpCmBgYAoKVW5tb2NrIHdpbGwgdGhlbiByZWZlciB0byB0aGUgc2VydmljZSBhcyBgZXhhbXBsZWAuIFRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgYXMgYGZvb2AsIHdlIHdvdWxkIHdyaXRlLgoKYGBganMKdW5tb2NrLm1vY2soJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20nLCAnZm9vJykKICAuZ2V0KCcvcmVzb3VyY2UnKQogIC5yZXBseSgyMDAsIHUuc3RyaW5nKCkpCmBgYAoKVG8gbWF0Y2ggbXVsdGlwbGUgcHJvdG9jb2xzIG9yIFVSTHMsIHVzZSBgYXNzb2NpYXRlYC4KCmBgYGpzCnVubW9jay5kZWZhdWx0LmFzc29jaWF0ZSgnaHR0cHM6Ly93d3cyLmV4YW1wbGUuY29tJywgJ2ZvbycpCmBgYAoKIyMjIFNwZWNpZnlpbmcgdGhlIHBhdGgKClRoZSByZXF1ZXN0IHBhdGggc2hvdWxkIGJlIGEgc3RyaW5nLCBhbmQgeW91IGNhbiB1c2UgYW55IFtIVFRQIHZlcmJdKCNodHRwLXZlcmJzKS4gV2lsZC1jYXJkcyBpbiB0aGUgc3RyaW5nIHNob3VsZCBiZSBlbmNsb3NlZCBpbiBjdXJseSBicmFjZXMuCgpgYGBqcwp1bm1vY2subW9jaygnaHR0cDovL3d3dy5leGFtcGxlLmNvbScpCiAgLmdldCgnL3Jlc291cmNlL3tpZH0nKQogIC5yZXBseSgyMDAsIHUuc3RyaW5nKCkpCmBgYAoKQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgYW4gYXJyYXkgb2YgcGF0aCBzZWdtZW50cywgd2hlcmUgZWFjaCBzZWdtZW50IGlzIGVpdGhlciBhIHN0cmluZywgYSBzdHJpbmcgaW4gY3VybHktYnJhY2VzIGZvciBhbiBvcGVuIHBhcmFtZXRlciwgb3IgYSBrZXkvdmFsdWUgcGFpciBhc3NvY2lhdGluZyBhIG5hbWUgb2YgYSBwYXRoIHBhcmFtZXRlciB0byBhIHJlZ2V4IG1hdGNoaW5nIGl0LgoKYGBganMKdW5tb2NrLm1vY2soJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20nKQogIC5nZXQoWyJ1c2VycyIsIC9bMC05XSsvLCAic3RhdHVzIl0pIC8vICIvdXNlcnMve2lkfS9zdGF0dXMiCiAgLnJlcGx5KDIwMCwgdS5zdHJpbmcoKSkKYGBgCgojIyMgU3BlY2lmeWluZyByZXF1ZXN0IGJvZHkKCllvdSBjYW4gc3BlY2lmeSB0aGUgcmVxdWVzdCBib2R5IHRvIGJlIG1hdGNoZWQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgYGdldGAsIGBwb3N0YCwgYHB1dGAgb3IgYGRlbGV0ZWAgc3BlY2lmaWNhdGlvbnMuIFRoZSBhcmd1bWVudCBjYW4gYmUgYW55IHZhbGlkIEpTT04sIFtganNvbi1zY2hlbWEtcG9ldGBdKGh0dHBzOi8vZ2l0aHViLmNvbS91bm1vY2svanNvbi1zY2hlbWEtcG9ldCkgdXNpbmcgdGhlIGB1YCBzeW50YXgoYHUuaW50ZWdlcigpYCwgYHUuc3RyaW5nKClgKSBvciBhbnkgY29tYmluYXRpb24gdGhlcmVvZi4KCkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIHBvc3QgcmVxdWVzdCB0aGF0IHdpbGwgb25seSB2YWxpZGF0ZSBpZiBpdCBjb250YWlucyBhIHRva2VuLgoKYGBganMKdW5tb2NrLm1vY2soJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20nKQogIC5wb3N0KCcvbG9naW4nLCB1LnR5cGUoeyB0b2tlbjogdS5zdHJpbmcoKX0sIHtleHBpcmVzOiB1LmludGVnZXIoKX0pKQogIC5yZXBseSgyMDAsIHsgaWQ6IHUuc3RyaW5nKCkgfSkKYGBgCgo+IFVubW9jayBkb2VzIG5vdCBzdXBwb3J0IGJvZHkgZW5jb2RpbmdzIG90aGVyIHRoYW4gImFwcGxpY2F0aW9uL2pzb24iIGF0IHRoaXMgcG9pbnQuCgojIyMgU3BlY2lmeWluZyByZXF1ZXN0IHF1ZXJ5IHN0cmluZwoKVW5tb2NrIGF1dG9tYXRpY2FsbHkgaWdub3JlcyBxdWVyeSBzdHJpbmdzLiBIb3dldmVyLCBpdCB1bmRlcnN0YW5kcyBxdWVyeSBzdHJpbmdzIGlmIHlvdSB3b3VsZCBsaWtlIHRvIG1hdGNoIGFnYWluc3QgdGhlbS4KCj4gV2hlbiBxdWVyeSBzdHJpbmdzIGFyZSBpbmNsdWRlZCBpbiBVbm1vY2ssIHRoZXkgd2lsbCBhY3QgYXMgaWYgdGhleSBhcmUgcmVxdWlyZWQuIE1vc3QgQVBJcyBkbyBub3QgaGF2ZSByZXF1aXJlZCBxdWVyeSBzdHJpbmdzLCBzbyBtYWtlIHN1cmUgdG8gZG91YmxlLWNoZWNrIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBiZWZvcmUgaW5kaWNhdGluZyBhIHJlcXVpcmVkIHF1ZXJ5IHN0cmluZy4KClRoZXNlIHBhcmFtZXRlcnMgY2FuIGJlIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlIHBhdGg6CgpgYGBqcwp1bm1vY2subW9jaygnaHR0cDovL2V4YW1wbGUuY29tJykKICAuZ2V0KCcvdXNlcnM/Zm9vPWJhcicpCiAgLnJlcGx5KDIwMCkKYGBgCgpJbnN0ZWFkIG9mIHBsYWNpbmcgdGhlIGVudGlyZSBVUkwsIHlvdSBjYW4gc3BlY2lmeSB0aGUgcXVlcnkgcGFydCBhcyBhbiBvYmplY3Q6CgpgYGBqcwp1bm1vY2subW9jaygnaHR0cDovL2V4YW1wbGUuY29tJykKICAuZ2V0KCcvdXNlcnMnKQogIC5xdWVyeSh7IG5hbWU6dS5zdHJpbmcoKSwgc3VybmFtZTogdS5zdHJpbmcoKSB9KQogIC5yZXBseSgyMDAsIHsgcmVzdWx0czogdS5hcnJheSh7aWQ6IHUuaW50ZWdlcigpIH0pIH0pCmBgYAoKIyMjIFNwZWNpZnlpbmcgUmVxdWVzdCBIZWFkZXJzCgpZb3UgY2FuIHNwZWNpZnkgdGhlIHJlcXVlc3QgaGVhZGVycyBsaWtlIHRoaXM6CgpgYGBqcwp1bm1vY2subW9jaygnaHR0cDovL3d3dy5leGFtcGxlLmNvbScsIHsKICByZXFoZWFkZXJzOiB7CiAgICBhdXRob3JpemF0aW9uOiAnQmFzaWMgQXV0aCcsCiAgfSwKfSkKICAuZ2V0KCcvJykKICAucmVwbHkoMjAwKQpgYGAKCk9yIHlvdSBjYW4gdXNlIGEgcmVndWxhciBleHByZXNzaW9uIHRvIGNoZWNrIHRoZSBoZWFkZXIgdmFsdWVzLgoKYGBganMKdW5tb2NrLm1vY2soJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20nLCB7CiAgcmVxaGVhZGVyczogewogICAgJ1gtTXktQXdlc29tZS1IZWFkZXInOiAvQXdlc29tZS9pLAogIH0sCn0pCiAgLmdldCgnLycpCiAgLnJlcGx5KDIwMCkKYGBgCgpIZWFkZXJzIGluIHVubW9jayBhcmUgYWx3YXlzIGEgcGFydGlhbCBtYXRjaCwgbWVhbmluZyB0aGF0IGFkZGl0aW9uYWwgaGVhZGVycyBhcmUgaWdub3JlZC4gVGhpcyBtZWFucyB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IG1hdGNoaW5nIGFnYWluc3QgY29tbW9uIGhlYWRlcnMgbGlrZSBgQ29udGVudC1UeXBlYCBhbmQgYEhvc3RgLgoKIyMjIFNwZWNpZnlpbmcgcmVwbGllcwoKWW91IGNhbiBzcGVjaWZ5IHRoZSByZXR1cm4gc3RhdHVzIGNvZGUgZm9yIGEgcGF0aCBvbiB0aGUgZmlyc3QgYXJndW1lbnQgb2YgcmVwbHkgbGlrZSB0aGlzOgoKYGBganMKdW5tb2NrLm1vY2soJ2h0dHA6Ly9teWFwcC5pcmlzY291Y2guY29tJykKICAuZ2V0KCcvdXNlcnMvMScpCiAgLnJlcGx5KDQwNCkKYGBgCgpZb3UgY2FuIGFsc28gc3BlY2lmeSB0aGUgcmVwbHkgYm9keSBhcyB2YWxpZCBKU09OLCBganNvbi1zY2hlbWEtcG9ldGAsIG9yIGFueSBjb21iaW5hdGlvbiB0aGVyZW9mLgoKYGBganMKdW5tb2NrLm1vY2soJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbScpCiAgLmdldCgnLycpCiAgLnJlcGx5KDIwMCwgdS5zdHJpbmdFbnVtKFsnSGVsbG8gZnJvbSBHb29nbGUhJywgJ0RvIG5vIGV2aWwnXSkpCmBgYAoKSWYgeW91IHdvdWxkIGxpa2UgdG8gdHJhbnNmb3JtIGFueSBwYXJ0IG9mIGEgY29uc3RhbnQgcmVwbHkgKGllIGEgZml4dHVyZSByZWNvcmRlZCBmcm9tIHJlYWwgQVBJIHRyYWZmaWMpIGludG8gYSB2YXJpYWJsZSB2ZXJzaW9uIG9mIGl0c2VsZiwgdXNlIGB1LmZ1enpgLiBUaGlzIGNvbW1hbmQgaW5mZXJzIHRoZSB0eXBlIG9mIGl0cyBpbnB1dCBhbmQgcHJvZHVjZXMgb3V0cHV0IGZvbGxvd2luZyB0aGUgc2FtZSBzY2hlbWEuCgpgYGBqcwp1bm1vY2subW9jaygnaHR0cDovL3d3dy5mb28uY29tJykKICAuZ2V0KCcvJykKICAvLyBwcm9kdWNlcyB7IGZpcnN0TmFtZTogImEgcmFuZG9tIHN0cmluZyIsIGxhc3ROYW1lOiAiYW5vdGhlciByYW5kb20gc3RyaW5nIiB9CiAgLnJlcGx5KDIwMCwgdS5mdXp6KHsgZmlyc3ROYW1lOiAiQm9iIiwgbGFzdE5hbWU6ICJTbWl0aCIgfSkpCmBgYAoKIyMjIFNwZWNpZnlpbmcgcmVwbHkgaGVhZGVycwoKWW91IGNhbiBzcGVjaWZ5IHRoZSByZXBseSBoZWFkZXJzIGxpa2UgdGhpczoKCmBgYGpzCnVubW9jay5tb2NrKCdodHRwczovL2FwaS5naXRodWIuY29tJykKICAuZ2V0KCcvcmVwb3MvYXRvbS9hdG9tL2xpY2Vuc2UnKQogIC5yZXBseSgyMDAsIHsgbGljZW5zZTogJ01JVCcgfSwgeyAnWC1SYXRlTGltaXQtUmVtYWluaW5nJzogdS5pbnRlZ2VyKCkgfSkKYGBgCgojIyMgQ2hhaW5pbmcKCllvdSBjYW4gY2hhaW4gYmVoYXZpb3IgbGlrZSB0aGlzOgoKYGBganMKdW5tb2NrLm1vY2soJ2h0dHA6Ly9teWFwcC5pcmlzY291Y2guY29tJykKICAuZ2V0KCcvdXNlcnMvMScpCiAgLnJlcGx5KDQwNCkKICAucG9zdCgnL3VzZXJzJywgewogICAgdXNlcm5hbWU6IHUuc3RyaW5nKCksCiAgICBlbWFpbDogdS5zdHJpbmcoKSwKICB9KQogIC5yZXBseSgyMDEsIHsKICAgIG9rOiB1LmJvb2xlYW4oKSwKICAgIGlkOiB1LnN0cmluZygpLAogICAgcmV2OiB1LnN0cmluZygpLAogIH0pCiAgLmdldCgnL3VzZXJzLzEyM0FCQycpCiAgLnJlcGx5KDIwMCwgewogICAgX2lkOiB1LnN0cmluZygpLAogICAgX3JldjogdS5zdHJpbmcoKSwKICAgIHVzZXI6IHUuc3RyaW5nKCksCiAgICBuYW1lOiB1LnN0cmluZygpCiAgfSkKYGBgCgojIyMgSWdub3JhYmxlIEFQSSBjYWxscwoKRm9yIGlnbm9yYWJsZSBBUEkgY2FsbHMgd2hlcmUgeW91IGFyZSBwYXNzaW5nIHRocm91Z2ggaW5mb3JtYXRpb24gYnV0IGRvbid0IGNhcmUgYWJvdXQgYSByZXNwb25zZSwgeW91IGNhbiBpbnN0cnVjdCB1bm1vY2sgdG8gc2VydmUgcmFuZG9tIGAyMDBgIHJlc3BvbnNlcyB0byB0aG9zZSByZXF1ZXN0cyB1c2luZyBgdGxkcmAuCgpgYGBqcwp1bm1vY2sKICAgLm1vY2soImh0dHBzOi8vbXktYW5hbHl0aWNzLWFwaS52ZW5kb3IuY29tKQogIC50bGRyKCk7CmBgYAoKIyMgRXhwZWN0YXRpb25zCgpVbm1vY2sgdXNlcyBbYHNpbm9uYF0oaHR0cHM6Ly9zaW5vbmpzLm9yZykgc3BpZXMgdG8gaGVscCB5b3UgY29tcG9zZSAoZ3JlYXQpIGV4cGVjdGF0aW9ucy4KCj4gSW4gZ2VuZXJhbCwgdHJ5IHRvIHdyaXRlIGV4cGVjdGF0aW9ucyB1c2luZyBzcGllcyBpbnN0ZWFkIG9mIGhhcmRjb2RlZCB2YWx1ZXMuIEluc3RlYWQgb2YgYGV4cGVjdChyZXMpLnRvRXF1YWwoe2ZvbzogImJhciIsIGJhejogdHJ1ZSB9KWAsIGZhdm9yIGBleHBlY3QocmVzKS50b0VxdWFsKHsgLi4uc3B5LmdldFJlcXVlc3RCb2R5KCksIGJhejogdHJ1ZSB9KWAKCkFzc3VtaW5nIHlvdSBoYXZlIGRlZmluZWQgYSBzZXJ2aWNlIHVzaW5nIHVubW9jaywgeW91IGNhbiB1c2Ugc3BpZXMgZm9sbG93aW5nIHRoZSBgPHZlcmI+PFJlcXVlc3R8UmVzcG9uc2U+PFRoaW5nPmAgY29udmVudGlvbi4gRm9yIGV4YW1wbGUsIGBnZXRSZXNwb25zZUJvZHlgIG9yIGBkZWxldGVSZXF1ZXN0UGF0aGAuIE5vbnNlbnNpY2FsIHRoaW5ncyBsaWtlIGBnZXRSZXF1c2V0Qm9keWAgYXJlIG5vdCBkZWZpbmVkLgoKYGBganMKdGVzdCgiYW5hbHl0aWNzIEFQSSB3YXMgY2FsbGVkIiwgYXN5bmMgKCkgPT4gewogIGF3YWl0IG15RnVuY3Rpb24oKQogIGV4cGVjdChhbmFseXRpY3NTZXJ2aWNlLnNweS5wb3N0UmVxdWVzdEJvZHkoKSkKICAgIC50b01hdGNoT2JqZWN0KHsgZXZlbnQ6ICJWSVNJVEVEIiB9KQp9KQpgYGAKClRoZSBmb2xsb3dpbmcgZ2V0dGVyIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCBvbiB0aGUgc3B5IG9iamVjdC4KCi0gYGdldFJlcXVlc3RQYXRobmFtZWAKLSBgZ2V0UmVxdWVzdFBhdGhgCi0gYGdldFJlcXVlc3RIZWFkZXJzYAotIGBnZXRSZXF1ZXN0UXVlcnlgCi0gYGdldFJlcXVlc3RQcm90b2NvbGAKLSBgZ2V0UmVzcG9uc2VCb2R5YAotIGBnZXRSZXNwb25zZUNvZGVgCi0gYGdldFJlc3BvbnNlSGVhZGVyc2AKLSBgcG9zdFJlcXVlc3RCb2R5YAotIGBwb3N0UmVxdWVzdFBhdGhuYW1lYAotIGBwb3N0UmVxdWVzdFBhdGhgCi0gYHBvc3RSZXF1ZXN0SGVhZGVyc2AKLSBgcG9zdFJlcXVlc3RRdWVyeWAKLSBgcG9zdFJlcXVlc3RQcm90b2NvbGAKLSBgcG9zdFJlc3BvbnNlQm9keWAKLSBgcG9zdFJlc3BvbnNlQ29kZWAKLSBgcG9zdFJlc3BvbnNlSGVhZGVyc2AKLSBgcHV0UmVxdWVzdEJvZHlgCi0gYHB1dFJlcXVlc3RQYXRobmFtZWAKLSBgcHV0UmVxdWVzdFBhdGhgCi0gYHB1dFJlcXVlc3RIZWFkZXJzYAotIGBwdXRSZXF1ZXN0UXVlcnlgCi0gYHB1dFJlcXVlc3RQcm90b2NvbGAKLSBgcHV0UmVzcG9uc2VCb2R5YAotIGBwdXRSZXNwb25zZUNvZGVgCi0gYHB1dFJlc3BvbnNlSGVhZGVyc2AKLSBgZGVsZXRlUmVxdWVzdFBhdGhuYW1lYAotIGBkZWxldGVSZXF1ZXN0UGF0aGAKLSBgZGVsZXRlUmVxdWVzdEhlYWRlcnNgCi0gYGRlbGV0ZVJlcXVlc3RRdWVyeWAKLSBgZGVsZXRlUmVxdWVzdFByb3RvY29sYAotIGBkZWxldGVSZXNwb25zZUJvZHlgCi0gYGRlbGV0ZVJlc3BvbnNlQ29kZWAKLSBgZGVsZXRlUmVzcG9uc2VIZWFkZXJzYAoKSW4gYWRkaXRpb24sIHNwaWVzIGFyZSBmdWxsLWZsZWRnZWQgc2lub24gc3BpZXMuIE1vcmUgYWJvdXQgdGhlaXIgdXNhZ2UgaW4gVW5tb2NrIGNhbiBiZSBmb3VuZCBbaGVyZV0oaHR0cHM6Ly93d3cudW5tb2NrLmlvL2RvY3MvZXhwZWN0YXRpb25zKSwgYW5kIG1vcmUgaW5mb3JtYXRpb24gb24gc2lub24gY2FuIGJlIGZvdW5kIFtoZXJlXShodHRwczovL3Npbm9uanMub3JnLykuCgojIyBJbml0aWFsaXppbmcgTW9ja3MKClVubW9jayBzdXBwb3J0cyB0aGUgaW5pdGlhbGl6YXRpb24gb2Ygc2VydmljZXMgdG8gYXJiaXRyYXJ5IHN0YXRlcy4gVGhpcyBpcyBoZWxwZnVsLCBmb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gdGVzdCBob3cgeW91ciBjb2RlIGJlaGF2ZXMgd2hlbiBhIGdpdmVuIHNlcnZpY2UgcmV0dXJucyAqZXhhY3RseSogZml2ZSBpdGVtcyBvciB3aGVuIGEgcGFydGljaXVsYXIgZmllbGQgaW4gYW4gb2JqZWN0IGlzIG1pc3Npbmcgb3IgcHJlc2VudC4KClRvIGRvIHRoaXMsIHNldCB0aGUgYHN0YXRlYCBwcm9wZXJ0eSBvZiBhIHNlcnZpY2UuIFRoZSBzdGF0ZSBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSByZXF1ZXN0IGFuZCBhbiBPcGVuQVBJIHNjaGVtYSBhcyBpbnB1dCBhbmQgcmV0dXJucyBhbiBPcGVuQVBJIHNjaGVtYSBhbmQgb3V0cHV0LiAgTWFueSB1dGlsaXR5IGZ1bmN0aW9ucyBoYXZlIGJlZW4gY3JlYXRlZCBmb3IgdGhlIG1vc3QgY29tbW9uIHN0YXRlIG1hbmlwdWxhdGlvbnMuIEZvciBleGFtcGxlLCB0byB0ZXN0IHRoZSBvdXRjb21lIHdpdGggb25seSBjZXJ0YWluIGNvZGVzLCB1c2UgYHdpdGhDb2Rlc2AuCgpgYGBqcwpjb25zdCB1bm1vY2sgPSByZXF1aXJlKCd1bm1vY2snKTsKY29uc3Qgd2l0aENvZGVzID0gdW5tb2NrLnRyYW5zZm9ybS53aXRoQ29kZXM7CmNvbnN0IGdpdGh1YiA9IHVubW9jay5kZWZhdWx0Lm9uKCkuc2VydmljZXMuZ2l0aHViOwpnaXRodWIuc3RhdGUod2l0aENvZGVzKFsyMDAsIDIwMSwgNDA0XSkpOwpgYGAKCkJlY2F1c2UgYHdpdGhDb2Rlc2AgcmV0dXJucyBhIGZ1bmN0aW9uLCB0aGUgc2FtZSB0aGluZyBjb3VsZCBoYXZlIGJlZW4gd3JpdHRlbi4KCmBgYGpzCmNvbnN0IHVubW9jayA9IHJlcXVpcmUoJ3VubW9jaycpOwpjb25zdCB3aXRoQ29kZXMgPSB1bm1vY2sudHJhbnNmb3JtLndpdGhDb2RlczsKY29uc3QgZ2l0aHViID0gdW5tb2NrLmRlZmF1bHQub24oKS5zZXJ2aWNlcy5naXRodWI7CmdpdGh1Yi5zdGF0ZSgocmVxLCBzY2hlbWEpID0+IHdpdGhDb2RlcyhbMjAwLCAyMDEsIDQwNF0pKHJlcSwgc2NoZW1hKSk7CmBgYAoKVGhpcyBpcyB1c2VmdWwsIGZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byB0ZXN0IGEgY2VydGFpbiBjb2RlIG9ubHkgaWYgYSBnaXZlbiBoZWFkZXIgaXMgcHJlc2VudC4KCmBgYGpzCmNvbnN0IHVubW9jayA9IHJlcXVpcmUoJ3VubW9jaycpOwpjb25zdCB3aXRoQ29kZXMgPSB1bm1vY2sudHJhbnNmb3JtLndpdGhDb2RlczsKY29uc3QgZ2l0aHViID0gdW5tb2NrLmRlZmF1bHQub24oKS5zZXJ2aWNlcy5naXRodWI7CmdpdGh1Yi5zdGF0ZSgocmVxLCBzY2hlbWEpID0+CiAgd2l0aENvZGVzKFsyMDAsIC4uLihyZXEuaGVhZGVycy5NeUhlYWRlciA/IFs0MDRdIDogW10pXSkocmVxLCBzY2hlbWEpKTsKYGBgCgpUaGUgdW5tb2NrIFtkb2N1bWVudGF0aW9uXShodHRwczovL3d3dy51bm1vY2suaW8vZG9jcy9zZXR0aW5nLXN0YXRlKSBjb250YWlucyBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGluaXRpYWxpemluZyB0aGUgc3RhdGUuCgojIyBGYWtlciBBUEkKCmBVbm1vY2tGYWtlcmAgY2xhc3MgcHJvdmlkZXMgYSBsb3dlci1sZXZlbCBBUEkgZm9yIHdvcmtpbmcgd2l0aCBtb2Nrcy4gWW91IGNhbiBjcmVhdGUgYSBuZXcgYFVubW9ja0Zha2VyYCB2aWEgYHVubW9jay5mYWtlcigpYDoKCmBgYHRzCmNvbnN0IHVubW9jaywgeyBTZXJ2aWNlLCBJU2VyaWFsaXplZFJlcXVlc3R9ID0gcmVxdWlyZSgidW5tb2NrIik7Ci8vIGltcG9ydCB1bm1vY2sgZnJvbSAidW5tb2NrIjsgIC8vIEVTNgoKY29uc3QgZmFrZXIgPSB1bm1vY2suZmFrZXIoKTsKYGBgCgpUbyB1c2UgdGhlIGZha2VyIGZvciBtb2NraW5nLCB5b3UgbmVlZCB0byBhZGQgc2VydmljZXMuIFRoZSBmaXJzdCBvcHRpb24gaXMgdG8gdXNlIHRoZSBgbW9ja2AgbWV0aG9kOgoKYGBgdHMKZmFrZXIKICAubW9jaygiaHR0cDovL3BldHN0b3JlLnN3YWdnZXIuaW8iLCAicGV0c3RvcmUiKQogIC5nZXQoIi92MS9wZXRzIikKICAucmVwbHkoMjAwLCB7IGZvbzogdS5zdHJpbmcoKSB9KTsKYGBgCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGNyZWF0ZSBhIHNlcnZpY2UgZnJvbSBPcGVuQVBJIHNwZWNpZmljYXRpb24gd2l0aCBgU2VydmljZS5mcm9tT3BlbkFQSWA6CgpgYGB0cwpjb25zdCB7IFNlcnZpY2UgfSA9IHJlcXVpcmUoInVubW9jayIpOwoKY29uc3Qgc2NoZW1hOiBPcGVuQVBJT2JqZWN0ID0gLi4uOyAvLyBMb2FkIE9wZW5BUElPYmplY3QKY29uc3QgcGV0c3RvcmVTZXJ2aWNlID0gU2VydmljZS5mcm9tT3BlbkFQSSh7IHNjaGVtYSwgbmFtZTogInBldHN0b3JlIiB9KQoKLy8gQWRkIHNlcnZpY2UgdG8gYGZha2VyYApmYWtlci5hZGQocGV0c3RvcmVTZXJ2aWNlKTsKYGBgCgpZb3UgY2FuIHRoZW4gYWxzbyBtb2RpZnkgdGhlIHN0YXRlIG9mIHRoZSBwZXRzdG9yZSBzZXJ2aWNlIHZpYSBgc3RhdGVgIHByb3BlcnR5OgoKYGBgdHMKY29uc3QgeyB0cmFuc2Zvcm0gfSA9IHJlcXVpcmUoInVubW9jayIpOwovLyBTZXJ2aWNlIHNob3VsZCBhbHdheXMgcmV0dXJuIGNvZGUgMjAwCnBldHN0b3JlLnN0YXRlKHRyYW5zZm9ybS53aXRoQ29kZXMoMjAwKSk7CmBgYAoKT25jZSB5b3UgaGF2ZSBhZGRlZCBhIHNlcnZpY2UsIHlvdSBjYW4gdXNlIGBmYWtlci5nZW5lcmF0ZWAgbWV0aG9kIHRvIGNyZWF0ZSBhIG1vY2sgZm9yIGFueSBgUmVxdWVzdGAgb2JqZWN0OgoKYGBgdHMKY29uc3QgeyBVbm1vY2tSZXF1ZXN0LCBVbm1vY2tSZXNwb25zZSB9ID0gcmVxdWlyZSgidW5tb2NrIik7Cgpjb25zdCByZXE6IFVubW9ja1JlcXVlc3QgPSB7CiAgaG9zdDogInBldHN0b3JlLnN3YWdnZXIuaW8iLAogIHByb3RvY29sOiAiaHR0cCIsCiAgbWV0aG9kOiAiZ2V0IiwKICBwYXRoOiAiL3YxL3BldHMiLAogIHBhdGhuYW1lOiAiL3YxL3BldHMiLAogIGhlYWRlcnM6IHt9LAogIHF1ZXJ5OiB7fSwKfQoKY29uc3QgcmVzOiBVbm1vY2tSZXNwb25zZSA9IGZha2VyLmdlbmVyYXRlKHJlcSk7CgovLyBBY2Nlc3MgcmVzLnN0YXR1c0NvZGUsIHJlcy5oZWFkZXJzLCByZXMuYm9keSwgZXRjLgpleHBlY3QocmVzLnN0YXR1c0NvZGUpLnRvQmUoMjAwKTsKYGBgCgojIyBSdW5uZXIKCldpdGggdGhlIFtVbm1vY2sgYHJ1bm5lcmBdKHBhY2thZ2VzL3VubW9jay1ydW5uZXIpLCB5b3UgY2FuIHJ1biBhbnkgdGVzdCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBwb3RlbnRpYWwgb3V0Y29tZXMgZnJvbSB0aGUgQVBJLiBBbGwgb2YgeW91ciB1bm1vY2sgdGVzdHMgc2hvdWxkIHVzZSB0aGUgYHJ1bm5lcmAgdW5sZXNzIHlvdSBhcmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgdGhlIEFQSSByZXNwb25zZSB3aWxsIGJlIHRoZSBzYW1lIGV2ZXJ5IHRpbWUuCgojIyMgRGVmYXVsdAoKQnkgZGVmYXVsdCwgdGhlIGBydW5uZXJgIGlzIHNldCB0byBydW4geW91ciB0ZXN0IDIwIHRpbWVzLiBJZiB5b3Ugd2FudCB0byBjaGFuZ2UgdGhpcyB2YWx1ZSwgcGxlYXNlIHJlZmVyIHRvIG91ciBkb2NzIG9uIFtjaGFuZ2luZyB0aGUgYHJ1bm5lcmAgZGVmYXVsdF0oaHR0cHM6Ly9naXRodWIuY29tL01lZXNoa2FuL3VubW9jay1qcy9ibG9iL3VubW9jay1ydW5uZXItZG9jcy9wYWNrYWdlcy91bm1vY2stcnVubmVyL1JFQURNRS5tZCNjaGFuZ2luZy10aGUtZGVmYXVsdCkuCgojIyMgSmVzdAoKQSBKZXN0IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBgcnVubmVyYCBpcyBhdmFpbGFibGUgdGhyb3VnaCBhIHNlcGFyYXRlIFtgdW5tb2NrLWplc3QtcnVubmVyYF0oaHR0cHM6Ly9naXRodWIuY29tL21lZXNoa2FuL3VubW9jay1qZXN0LXJ1bm5lcikgcGFja2FnZS4gV2hpbGUgdGhlIHN0YW5kYXJkIGB1bm1vY2stcnVubmVyYCBpcyBhdmFpbGFibGUgdmlhIE5QTSwgeW91J2xsIHdhbnQgdG8gdXNlIHRoZSBgdW5tb2NrLWplc3QtcnVubmVyYCB3aGVuIGV4ZWN1dGluZyB5b3VyIHRlc3RzIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcuIAoKVGhlIGB1bm1vY2stamVzdC1ydW5uZXJgIGNhbiBiZSBpbnN0YWxsZWQgdmlhIE5QTSBvciBZYXJuOgoKYGBgCm5wbSBpbnN0YWxsIC1EIHVubW9jay1qZXN0LXJ1bm5lcgp5YXJuIGFkZCB1bm1vY2stamVzdC1ydW5uZXIKYGBgCgpPbmNlIGluc3RhbGxlZCwgdGhlIGBydW5uZXJgIGNhbiBiZSBpbXBvcnRlZCBhcyBhIGRlZmF1bHQgYW5kIHVzZWQgYXMgYSB3cmFwcGVyIGZvciB5b3VyIHRlc3RzOgoKYGBganMKY29uc3QgcnVubmVyID0gcmVxdWlyZSgidW5tb2NrLWplc3QtcnVubmVyIikuZGVmYXVsdDsKCnRlc3QoIm15IEFQSSBhbHdheXMgd29ya3MgYXMgZXhwZWN0ZWQiLCBydW5uZXIoYXN5bmMgKCkgPT4gewogIGNvbnN0IHJlcyA9IGF3YWl0IG15QXBpRnVuY3Rpb24oKTsKICAvLyBzb21lIGV4cGVjdGF0aW9ucwp9KSk7CmBgYAoKIyMjIE90aGVyIGNvbmZpZ3VyYXRpb25zCgpBcyBvZiBub3csIEplc3QgaXMgdGhlIG9ubHkgcGFja2FnZSB3ZSBoYXZlIGF2YWlsYWJsZS4gCgpIb3dldmVyLCB3ZSdyZSBjdXJyZW50bHkgYnVpbGRpbmcgb3V0IHN1cHBvcnQgZm9yIFtNb2NoYV0oaHR0cHM6Ly9naXRodWIuY29tL01lZXNoa2FuL3VubW9jay1qcy9pc3N1ZXMvMjk5KSBhbmQgW1FVbml0XShodHRwczovL2dpdGh1Yi5jb20vTWVlc2hrYW4vdW5tb2NrLWpzL2lzc3Vlcy8zMDApLiBZb3UgY2FuIGZvbGxvdyB0aGUgcHJvZ3Jlc3Mgb2YgdGhvc2UgaW1wbGVtZW50YXRpb25zIGluIHRoZSBjb3JyZXNwb25kaW5nIGlzc3Vlcy4KCiMjIE9wZW5BUEkKClVubW9jayBzdXBwb3J0cyB0aGUgcmVhZGluZyBvZiBPcGVuQVBJIHNwZWNpZmljYXRpb25zIG91dCBvZiB0aGUgYm94LiBQbGFjZSB5b3VyIHNwZWNpZmljYXRpb24gaW4gYSBmb2xkZXIgYXQgdGhlIHJvb3Qgb2YgeW91ciBwcm9qZWN0IGNhbGxlZCBgX191bm1vY2tfXy88bXlzcGVjbmFtZT5gLCB3aGVyZSBgPG15c3BlY25hbWU+YCBpcyB0aGUgbmFtZSBvZiB0aGUgc3BlYyBvbiB0aGUgYHVubW9jay5vbigpLnNlcnZpY2VzYCBvYmplY3QuICBTZXZlcmFsIGV4YW1wbGVzIG9mIHRoaXMgZXhpc3Qgb24gdGhlIGludGVybmV0LCBtb3N0IG5vdGFibHkgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS91bm1vY2svdW5tb2NrLWV4YW1wbGVzL3RyZWUvbWFzdGVyL3VzaW5nLXNlcnZpY2UtcmVwb3NpdG9yeSkuCgojIyBUdXRvcmlhbHMKCi0gW1VubW9jayB0cyBrb2Fuc10oaHR0cHM6Ly9naXRodWIuY29tL21lZXNoa2FuL3VubW9jay10cy1rb2FucykKLSBbVW5tb2NrIGpzIGthdGFjb2RhXShodHRwczovL3d3dy5rYXRhY29kYS5jb20vdW5tb2NrL3NjZW5hcmlvcy9pbnRyb2R1Y3Rpb24pCgojIyBDb250cmlidXRpbmcKClRoYW5rcyBmb3Igd2FudGluZyB0byBjb250cmlidXRlISBUYWtlIGEgbG9vayBhdCBvdXIgW0NvbnRyaWJ1dGluZyBHdWlkZV0oQ09OVFJJQlVUSU5HLm1kKSBmb3Igbm90ZXMgb24gb3VyIGNvbW1pdCBtZXNzYWdlIGNvbnZlbnRpb25zIGFuZCBob3cgdG8gcnVuIHRlc3RzLgoKUGxlYXNlIG5vdGUgdGhhdCB0aGlzIHByb2plY3QgaXMgZ292ZXJuZWQgYnkgdGhlIFtNZWVzaGthbiBDb21tdW5pdHkgQ29kZSBvZiBDb25kdWN0XShodHRwczovL2dpdGh1Yi5jb20vbWVlc2hrYW4vY29kZS1vZi1jb25kdWN0KS4gQnkgcGFydGljaXBhdGluZyBpbiB0aGlzIHByb2plY3QsIHlvdSBhZ3JlZSB0byBhYmlkZSBieSBpdHMgdGVybXMuCgojIyBEZXZlbG9wbWVudAoKLSBTZWUgW3B1Ymxpc2gubWRdKC4vcHVibGlzaC5tZCkgZm9yIGluc3RydWN0aW9ucyBob3cgdG8gbWFrZSBhIG5ldyByZWxlYXNlCgojIyBMaWNlbnNlCgpbTUlUXShMSUNFTlNFKQoKQ29weXJpZ2h0IChjKSAyMDE44oCTMjAxOSBbTWVlc2hrYW5dKGh0dHA6Ly9tZWVzaGthbi5jb20pIGFuZCBvdGhlciBbY29udHJpYnV0b3JzXShodHRwczovL2dpdGh1Yi5jb20vdW5tb2NrL3VubW9jay1qcy9ncmFwaHMvY29udHJpYnV0b3JzKS4K readmeEtag: '"b12af4fce603397889647bea7d9ab4fe5823e80f"' readmeLastModified: Mon, 23 Nov 2020 10:05:08 GMT repositoryId: 158103154 description: Fuzz test your REST API calls created: '2018-11-18T16:24:30Z' updated: '2023-10-19T15:30:47Z' language: TypeScript archived: true stars: 93 watchers: 6 forks: 8 owner: meeshkan logo: https://avatars.githubusercontent.com/u/32298527?v=4 repoEtag: '"58313482dbc208be81c3e95bc3dbd60c5a7b992b29b877dbd28c6bdb04df75ca"' repoLastModified: Thu, 19 Oct 2023 15:30:47 GMT foundInMaster: true id: e200bd53331c006b83cf719eb34ec292 oldLocations: - https://github.com/unmock/unmock-js - source: https://openapi.tools/ name: OpenAPI Enforcer Middleware category: - Server - Parsers language: Node.js link: https://www.npmjs.com/package/openapi-enforcer-middleware repository: https://github.com/gi60s/openapi-enforcer-middleware source_description: >- An express middleware that makes it easy to write web services that follow an OpenAPI specification by leveraging the tools provided in the openapi-enforcer package. v2: true v3: true repositoryMetadata: base64Readme: >- IyBPcGVuIEFQSSBFbmZvcmNlciBNaWRkbGV3YXJlCgpBbiBleHByZXNzIG1pZGRsZXdhcmUgdGhhdCBtYWtlcyBpdCBlYXN5IHRvIHdyaXRlIHdlYiBzZXJ2aWNlcyB0aGF0IGZvbGxvdyBhbiBPcGVuIEFQSSBzcGVjaWZpY2F0aW9uIGJ5IGxldmVyYWdpbmcgdGhlIHRvb2xzIHByb3ZpZGVkIGluIHRoZSBbb3BlbmFwaS1lbmZvcmNlcl0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb3BlbmFwaS1lbmZvcmNlcikgcGFja2FnZS4KCiMjIEZlYXR1cmVzCgotIFN1cHBvcnRzIE9wZW5BUEkgKFN3YWdnZXIpIDIuMCBhbmQgMy54Ci0gRXhwcmVzcyBtaWRkbGV3YXJlCi0gQXV0b21hdGljYWxseSBsaW5rIEphdmFTY3JpcHQgZnVuY3Rpb25zIHRvIHBhdGggZW5kcG9pbnRzCi0gUGFyc2VzIGFuZCB2YWxpZGF0ZXMgaW5jb21pbmcgcmVxdWVzdHMKLSBWYWxpZGF0ZXMgcmVzcG9uc2VzIHByaW9yIHRvIHNlbmRpbmcKLSBBdXRvbWF0aWMgcmVzcG9uc2UgbW9ja2luZyBpbiBkZXZlbG9wbWVudAotIE9wdGlvbiBmb3IgbWFudWFsIHJlc3BvbnNlIG1vY2tpbmcgaW4gcHJvZHVjdGlvbgotIEhpZ2hseSBjb25maWd1cmFibGUKLSBBY2NlcHRzIG1pZGRsZXdhcmUgcGx1Z2lucwoKIyMgSW5zdGFsbGF0aW9uCgpUaGlzIHBhY2thZ2UgaGFzIFtvcGVuYXBpLWVuZm9yY2VyXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vcGVuYXBpLWVuZm9yY2VyKSBhcyBhIHBlZXIgZGVwZW5kZW5jeSwgc28gYm90aCBtdXN0IGJlIGluc3RhbGxlZC4KCmBgYGJhc2gKbnBtIGluc3RhbGwgb3BlbmFwaS1lbmZvcmNlciBvcGVuYXBpLWVuZm9yY2VyLW1pZGRsZXdhcmUKYGBgCgojIyBEb2N1bWVudGF0aW9uCgpodHRwczovL2J5dS1vaXQuZ2l0aHViLmlvL29wZW5hcGktZW5mb3JjZXItbWlkZGxld2FyZS8K readmeEtag: '"09e2cf7abd1e26e27ccbf007cbd2d88ed08ee946"' readmeLastModified: Thu, 17 Feb 2022 21:06:17 GMT repositoryId: 120667667 description: >- An express middleware that makes it easy to write web services that follow an Open API specification. created: '2018-02-07T20:28:20Z' updated: '2022-12-05T04:32:04Z' language: JavaScript archived: false stars: 17 watchers: 3 forks: 10 owner: Gi60s logo: https://avatars.githubusercontent.com/u/714117?v=4 license: Apache-2.0 repoEtag: '"8fe6b6f6d3d3c4b6f4fad634a39ea581cd4e0f4ae70e63f5c0bb10c69551a63c"' repoLastModified: Mon, 05 Dec 2022 04:32:04 GMT foundInMaster: true id: b7b2f24374c433724155eceeced5fb7c oldLocations: - https://github.com/byu-oit/openapi-enforcer-middleware - source: https://openapi.tools/ name: BigstickCarpet/swagger-cli category: - Description Validators - Parsers repository: https://github.com/apidevtools/swagger-cli language: - Node.js - CLI source_description: >- Simple validation for OpenAPI files, supporting JSON/YAML and v2/v3 description documents. v2: true v3: true repositoryMetadata: base64Readme: >- U3dhZ2dlci9PcGVuQVBJIENMSQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpbIVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvQGFwaWRldnRvb2xzL3N3YWdnZXItY2xpLnN2ZyldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BhcGlkZXZ0b29scy9zd2FnZ2VyLWNsaSkKWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9AYXBpZGV2dG9vbHMvc3dhZ2dlci1jbGkuc3ZnKV0oTElDRU5TRSkKWyFbQnV5IHVzIGEgdHJlZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9UcmVld2FyZS0lRjAlOUYlOEMlQjMtbGlnaHRncmVlbildKGh0dHBzOi8vcGxhbnQudHJlZXdhcmUuZWFydGgvQVBJRGV2VG9vbHMvc3dhZ2dlci1jbGkpCgoKPiDimqDvuI8gU3dhZ2dlciBDTEkgaGFzIGJlZW4gZGVwcmVjYXRlZCwgZHVlIHRvIHRoZSBtYWludGVuYW5jZSBidXJuZGVuIG9mIHRyeWluZyB0byBrZWVwIHVwIHdpdGggZXhwZWN0YXRpb25zIG9mIGEgaHVnZSB1c2VyYmFzZSB3aXRoIGxpdHRsZSB0byBubyBwdWxsIHJlcXVlc3RzIG9yIHN1cHBvcnQuIFtSZWRvY2x5IENMSV0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9yZWRvY2x5LWNsaS8pIGNvdmVycyBhbGwgb2YgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSwgYW5kIGhhcyBtb3JlIGFkdmFuY2VkIGxpbnRpbmcgd2l0aCBjdXN0b20gcnVsZXMsIGFuZCB3ZSBoaWdobHkgcmVjb21tZW5kIHVzaW5nIHRoYXQgaW5zdGVhZC4gVGhleSBoYXZlIGNvbnZlbmllbnRseSBwcm92aWRlZCBhIFttaWdyYXRpb24gZ3VpZGVdKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9jbGkvZ3VpZGVzL21pZ3JhdGUtZnJvbS1zd2FnZ2VyLWNsaS8pIGZvciBleGlzdGluZyBTd2FnZ2VyIENMSSB1c2Vycy4gUmVhZCB0aGUgcmV2aWV3IG9mIFtSZWRvY2x5IENMSSBmcm9tIEFQSXMgWW91IFdvbid0IEhhdGVdKGh0dHBzOi8vYXBpc3lvdXdvbnRoYXRlLmNvbS9ibG9nL3JlZG9jbHktY2xpLykuCgpGZWF0dXJlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFZhbGlkYXRlIFN3YWdnZXIvT3BlbkFQSSBmaWxlcyBpbiAqKkpTT04gb3IgWUFNTCoqIGZvcm1hdAotIFN1cHBvcnRzIG11bHRpLWZpbGUgQVBJIGRlZmluaXRpb25zIHZpYSBgJHJlZmAgcG9pbnRlcnMKLSBCdW5kbGUgbXVsdGlwbGUgU3dhZ2dlci9PcGVuQVBJIGZpbGVzIGludG8gb25lIGNvbWJpbmVkIGZpbGUKCgoKUmVsYXRlZCBQcm9qZWN0cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFtTd2FnZ2VyIFBhcnNlcl0oaHR0cHM6Ly9naXRodWIuY29tL0FQSURldlRvb2xzL3N3YWdnZXItcGFyc2VyKQotIFtTd2FnZ2VyIEV4cHJlc3MgTWlkZGxld2FyZV0oaHR0cHM6Ly9naXRodWIuY29tL0FQSURldlRvb2xzL3N3YWdnZXItZXhwcmVzcy1taWRkbGV3YXJlKQoKCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5zdGFsbCB1c2luZyBbbnBtXShodHRwczovL2RvY3MubnBtanMuY29tL2Fib3V0LW5wbS8pOgoKYGBgYmFzaApucG0gaW5zdGFsbCAtZyBAYXBpZGV2dG9vbHMvc3dhZ2dlci1jbGkKYGBgCgoKClVzYWdlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpgYGAKc3dhZ2dlci1jbGkgPGNvbW1hbmQ+IFtvcHRpb25zXSA8ZmlsZT4KCkNvbW1hbmRzOgogICAgdmFsaWRhdGUgICAgICAgICAgICAgICAgVmFsaWRhdGVzIGFuIEFQSSBkZWZpbml0aW9uIGluIFN3YWdnZXIgMi4wIG9yIE9wZW5BUEkgMy4wIGZvcm1hdAoKICAgIGJ1bmRsZSAgICAgICAgICAgICAgICAgIEJ1bmRsZXMgYSBtdWx0aS1maWxlIEFQSSBkZWZpbml0aW9uIGludG8gYSBzaW5nbGUgZmlsZQoKT3B0aW9uczoKICAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgIFNob3cgaGVscCBmb3IgYW55IGNvbW1hbmQKICAgIC12LCAtLXZlcnNpb24gICAgICAgICAgIE91dHB1dCB0aGUgQ0xJIHZlcnNpb24gbnVtYmVyCiAgICAtZCwgLS1kZWJ1ZyBbZmlsdGVyXSAgICBTaG93IGRlYnVnIG91dHB1dCwgb3B0aW9uYWxseSBmaWx0ZXJlZCAoZS5nLiAiKiIsICJzd2FnZ2VyOioiLCBldGMuKQpgYGAKCgojIyMgVmFsaWRhdGUgYW4gQVBJCgpUaGUgYHN3YWdnZXItY2xpIHZhbGlkYXRlYCBjb21tYW5kIHdpbGwgdmFsaWRhdGUgeW91ciBTd2FnZ2VyL09wZW5BUEkgZGVmaW5pdGlvbiBhZ2FpbnN0IHRoZSBbU3dhZ2dlciAyLjAgc2NoZW1hXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci9zY2hlbWFzL3YyLjAvc2NoZW1hLmpzb24pIG9yIFtPcGVuQVBJIDMuMCBTY2hlbWFdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3NjaGVtYXMvdjMuMC9zY2hlbWEuanNvbikuICBJdCBhbHNvIHBlcmZvcm1zIGFkZGl0aW9uYWwgdmFsaWRhdGlvbnMgYWdhaW5zdCB0aGUgW3NwZWNpZmljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL3ZlcnNpb25zLzIuMC5tZCksIHdoaWNoIHdpbGwgY2F0Y2ggc29tZSB0aGluZ3MgdGhhdCBhcmVuJ3QgY292ZXJlZCBieSB0aGUgc2NoZW1hLCBzdWNoIGFzIGR1cGxpY2F0ZSBwYXJhbWV0ZXJzLCBpbnZhbGlkIE1JTUUgdHlwZXMsIGV0Yy4KClRoZSBjb21tYW5kIHdpbGwgZXhpdCB3aXRoIGEgbm9uLXplcm8gY29kZSBpZiB0aGUgQVBJIGlzIGludmFsaWQuCgpgYGAKc3dhZ2dlci1jbGkgdmFsaWRhdGUgW29wdGlvbnNdIDxmaWxlPgoKT3B0aW9uczoKICAgIC0tbm8tc2NoZW1hICAgICAgICAgICAgIERvIE5PVCB2YWxpZGF0ZSBhZ2FpbnN0IHRoZSBTd2FnZ2VyL09wZW5BUEkgSlNPTiBzY2hlbWEKCiAgICAtLW5vLXNwZWMgICAgICAgICAgICAgICBEbyBOT1QgdmFsaWRhdGUgYWdhaW5zdCB0aGUgU3dhZ2dlci9PcGVuQVBJIHNwZWNpZmljYXRpb24KYGBgCgojIyMjIEdpdCBwcmUtY29tbWl0IGhvb2sKClRoZXJlIGlzIGEgdXNlZnVsIFB5dGhvbiB0b29sIGNhbGxlZCBbcHJlLWNvbW1pdF0oaHR0cHM6Ly9wcmUtY29tbWl0LmNvbS8pIHRoYXQgY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSBhIHdpZGUgc3VpdGUgb2YgcHJlLWNvbW1pdCBjaGVja3MuIFRoZSBgc3dhZ2dlci1jbGkgdmFsaWRhdGVgIGNvbW1hbmQgY2FuIGJlIGludGVncmF0ZWQgYXMgcGFydCBvZiBhIGdpdCBwcmUtY29tbWl0IGhvb2sgYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiB0byB0aGUgYHJlcG9zYCBlbnRyeSBvZiBhbiBleGlzdGluZyBgLnByZS1jb21taXQtY29uZmlnLnlhbWxgIGZpbGUuCgpgYGAKLSAgIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9BUElEZXZUb29scy9zd2FnZ2VyLWNsaQogICAgcmV2OiB2Mi4yLjEKICAgIGhvb2tzOgogICAgLSBpZDogc3dhZ2dlci12YWxpZGF0aW9uCiAgICAgIGFyZ3M6IFsidmFsaWRhdGUiLCAiPHBhdGggdG8gcm9vdCBzd2FnZ2VyPiJdCmBgYAoKVGhlIGludGVudGlvbiBpcyB0byBwb2ludCB0byBzaW5nbGUgcm9vdCBzd2FnZ2VyIHRoYXQgcmVmZXJlbmNlcyBtdWx0aXBsZSBzd2FnZ2VyIGRlZmluaXRpb25zLiBUaGUgYWJvdmUgaG9vayB3aWxsIGV4ZWN1dGUgdGhlIGBzd2FnZ2VyLWNsaSB2YWxpZGF0aW9uYCBhZ2FpbnN0IHRoZSByb290IHN3YWdnZXIgYW55dGltZSB0aGF0IGEgZmlsZSBtYXRjaGluZyB0aGUgcGF0dGVybiBgLipzd2FnZ2VyLipcLihqc29ufHlhbWx8eW1sKWAgaXMgbW9kaWZpZWQuIEFueSBmYWlsdXJlcyBpbiB0aGlzIHZhbGlkYXRpb24gd2lsbCBwcmV2ZW50IHRoZSBnaXQgY29tbWl0IGZyb20gYmVpbmcgcHJvY2Vzc2VkLgoKIyMjIENvbWJpbmUgTXVsdGlwbGUgRmlsZXMKClRoZSBTd2FnZ2VyIGFuZCBPcGVuQVBJIHNwZWNzIGFsbG93cyB5b3UgdG8gc3BsaXQgeW91ciBBUEkgZGVmaW5pdGlvbiBhY3Jvc3MgbXVsdGlwbGUgZmlsZXMgdXNpbmcgW2AkcmVmYCBwb2ludGVyc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMi4wLm1kI3JlZmVyZW5jZS1vYmplY3QpIHRvIHJlZmVyZW5jZSBlYWNoIGZpbGUuIFlvdSBjYW4gdXNlIHRoZSBgc3dhZ2dlci1jbGkgYnVuZGxlYCBjb21tYW5kIHRvIGNvbWJpbmUgYWxsIG9mIHRob3NlIHJlZmVyZW5jZWQgZmlsZXMgaW50byBhIHNpbmdsZSBmaWxlLCB3aGljaCBpcyB1c2VmdWwgZm9yIGRpc3RyaWJ1dGlvbiBvciBpbnRlcm9wZXJhdGlvbiB3aXRoIG90aGVyIHRvb2xzLgoKQnkgZGVmYXVsdCwgdGhlIGBzd2FnZ2VyLWNsaSBidW5kbGVgIGNvbW1hbmQgdHJpZXMgdG8ga2VlcCB0aGUgb3V0cHV0IGZpbGUgc2l6ZSBhcyBzbWFsbCBhcyBwb3NzaWJsZSwgYnkgb25seSBlbWJlZGRpbmcgZWFjaCByZWZlcmVuY2VkIGZpbGUgX29uY2VfLiAgSWYgdGhlIHNhbWUgZmlsZSBpcyByZWZlcmVuY2VkIG11bHRpcGxlIHRpbWVzLCB0aGVuIGFueSBzdWJzZXF1ZW50IHJlZmVyZW5jZXMgYXJlIHNpbXBseSBtb2RpZmllZCB0byBwb2ludCB0byB0aGUgX3NpbmdsZV8gaW5saW5lZCBjb3B5IG9mIHRoZSBmaWxlLiAgSWYgeW91IHdhbnQgdG8gcHJvZHVjZSBhIGJ1bmRsZWQgZmlsZSB3aXRob3V0IF9hbnlfIGAkcmVmYCBwb2ludGVycywgdGhlbiBhZGQgdGhlIGAtLWRlcmVmZXJlbmNlYCBvcHRpb24uICBUaGlzIHdpbGwgcmVzdWx0IGluIGEgbGFyZ2VyIGZpbGUgc2l6ZSwgc2luY2UgbXVsdGlwbGUgcmVmZXJlbmNlcyB0byB0aGUgc2FtZSBmaWxlIHdpbGwgcmVzdWx0IGluIHRoYXQgZmlsZSBiZWluZyBlbWJlZGRlZCBtdWx0aXBsZSB0aW1lcy4KCklmIHlvdSBkb24ndCBzcGVjaWZ5IHRoZSBgLS1vdXRmaWxlYCBvcHRpb24sIHRoZW4gdGhlIGJ1bmRsZWQgQVBJIHdpbGwgYmUgd3JpdHRlbiB0byBzdGRvdXQsIHdoaWNoIG1lYW5zIHlvdSBjYW4gcGlwZSBpdCB0byBvdGhlciBjb21tYW5kcy4KClRoZSByZXN1bHQgb2YgdGhpcyBtZXRob2QgYnkgZGVmYXVsdCBpcyB3cml0dGVuIGFzIEpTT04uIEl0IGNhbiBiZSBjaGFuZ2VkIHRvIFlBTUwgd2l0aCB0aGUgYC0tdHlwZWAgb3B0aW9uLCBieSBwYXNzaW5nIHRoZSBgeWFtbGAgdmFsdWUuCgpgYGAKc3dhZ2dlci1jbGkgYnVuZGxlIFtvcHRpb25zXSA8ZmlsZT4KCk9wdGlvbnM6CiAgICAtbywgLS1vdXRmaWxlIDxmaWxlPiAgICAgICAgVGhlIG91dHB1dCBmaWxlCgogICAgLXIsIC0tZGVyZWZlcmVuY2UgICAgICAgICAgIEZ1bGx5IGRlcmVmZXJlbmNlIGFsbCAkcmVmIHBvaW50ZXJzCgogICAgLWYsIC0tZm9ybWF0IDxzcGFjZXM+ICAgICAgIEZvcm1hdHMgdGhlIG91dHB1dCB1c2luZyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHNwYWNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGUgZGVmYXVsdCBpcyAyIHNwYWNlcykKCiAgICAtdCwgLS10eXBlIDxmaWxldHlwZT4gICAgICAgRGVmaW5lcyB0aGUgb3V0cHV0IGZpbGUgdHlwZS4gVGhlIHZhbGlkIHZhbHVlcyBhcmU6IGpzb24sIHlhbWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhlIGRlZmF1bHQgaXMgSlNPTikKCiAgICAtdywgLS13cmFwIDxjb2x1bW4+ICAgICAgICAgU2V0IHRoZSBsaW5lIGxlbmd0aCBmb3IgWUFNTCBzdHJpbmdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoZSBkZWZhdWx0IGlzIG5vIHdyYXBwaW5nKQpgYGAKCgoKQ29udHJpYnV0aW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkkgd2VsY29tZSBhbnkgY29udHJpYnV0aW9ucywgZW5oYW5jZW1lbnRzLCBhbmQgYnVnLWZpeGVzLiAgW09wZW4gYW4gaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9BUElEZXZUb29scy9zd2FnZ2VyLWNsaS9pc3N1ZXMpIG9uIEdpdEh1YiBhbmQgW3N1Ym1pdCBhIHB1bGwgcmVxdWVzdF0oaHR0cHM6Ly9naXRodWIuY29tL0FQSURldlRvb2xzL3N3YWdnZXItY2xpL3B1bGxzKS4KCiMjIyMgQnVpbGRpbmcvVGVzdGluZwpUbyBidWlsZC90ZXN0IHRoZSBwcm9qZWN0IGxvY2FsbHkgb24geW91ciBjb21wdXRlcjoKCjEuICoqQ2xvbmUgdGhpcyByZXBvKio8YnI+CmBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL0FQSURldlRvb2xzL3N3YWdnZXItY2xpLmdpdGAKCjIuICoqSW5zdGFsbCBkZXBlbmRlbmNpZXMqKjxicj4KYG5wbSBpbnN0YWxsYAoKMy4gKipSdW4gdGhlIHRlc3RzKio8YnI+CmBucG0gdGVzdGAKCgoKTGljZW5zZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTd2FnZ2VyIENMSSBpcyAxMDAlIGZyZWUgYW5kIG9wZW4tc291cmNlLCB1bmRlciB0aGUgW01JVCBsaWNlbnNlXShMSUNFTlNFKS4gVXNlIGl0IGhvd2V2ZXIgeW91IHdhbnQuCgpUaGlzIHBhY2thZ2UgaXMgW1RyZWV3YXJlXShodHRwOi8vdHJlZXdhcmUuZWFydGgpLiBJZiB5b3UgdXNlIGl0IGluIHByb2R1Y3Rpb24sIHRoZW4gd2UgYXNrIHRoYXQgeW91IFsqKmJ1eSB0aGUgd29ybGQgYSB0cmVlKipdKGh0dHBzOi8vcGxhbnQudHJlZXdhcmUuZWFydGgvQVBJRGV2VG9vbHMvc3dhZ2dlci1jbGkpIHRvIHRoYW5rIHVzIGZvciBvdXIgd29yay4gQnkgY29udHJpYnV0aW5nIHRvIHRoZSBUcmVld2FyZSBmb3Jlc3QgeW914oCZbGwgYmUgY3JlYXRpbmcgZW1wbG95bWVudCBmb3IgbG9jYWwgZmFtaWxpZXMgYW5kIHJlc3RvcmluZyB3aWxkbGlmZSBoYWJpdGF0cy4KCgoKQmlnIFRoYW5rcyBUbwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUaGFua3MgdG8gdGhlc2UgYXdlc29tZSBjb21wYW5pZXMgZm9yIHRoZWlyIHN1cHBvcnQgb2YgT3BlbiBTb3VyY2UgZGV2ZWxvcGVycyDinaQKClshW1RyYXZpcyBDSV0oaHR0cHM6Ly9qc3Rvb2xzLmRldi9pbWcvYmFkZ2VzL3RyYXZpcy1jaS5zdmcpXShodHRwczovL3RyYXZpcy1jaS5jb20pClshW1NhdWNlTGFic10oaHR0cHM6Ly9qc3Rvb2xzLmRldi9pbWcvYmFkZ2VzL3NhdWNlLWxhYnMuc3ZnKV0oaHR0cHM6Ly9zYXVjZWxhYnMuY29tKQpbIVtDb3ZlcmFsbHNdKGh0dHBzOi8vanN0b29scy5kZXYvaW1nL2JhZGdlcy9jb3ZlcmFsbHMuc3ZnKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8pCg== readmeEtag: '"b6366f698af1bbc5531a38cc611e28aa3c438a1b"' readmeLastModified: Wed, 15 Nov 2023 11:23:27 GMT repositoryId: 36670476 description: Swagger 2.0 and OpenAPI 3.0 command-line tool created: '2015-06-01T15:36:25Z' updated: '2025-10-27T07:46:59Z' language: JavaScript archived: true stars: 518 watchers: 11 forks: 69 owner: APIDevTools logo: https://avatars.githubusercontent.com/u/43750074?v=4 license: MIT repoEtag: '"3a7b18010917df6b0b92d582cdc503ee89e79009b4ecba4f4e0105cb572b7cde"' repoLastModified: Mon, 27 Oct 2025 07:46:59 GMT foundInMaster: true id: 1861975d6734eb6c3e0ab0980e241853 oldLocations: - https://github.com/bigstickcarpet/swagger-cli - source: https://openapi.tools/ name: OpenAPI Enforcer category: - Data Validators - Description Validators - Server - Testing - Parsers language: Node.js link: https://www.npmjs.com/package/openapi-enforcer repository: https://github.com/gi60s/openapi-enforcer source_description: >- Validate your OpenAPI document, serialize, deserialize, and validate incoming requests and outgoing responses, and simplify response building. You can even produce mock data. v2: true v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJLUVuZm9yY2VyCgpUb29scyBmb3IgdXNpbmcgdGhlIE9wZW4gQVBJIFNwZWNpZmljYXRpb24gKE9BUykKCioqU3VwcG9ydHMgT0FTIDIuMCAoZm9ybWVybHkgU3dhZ2dlcikgYW5kIE9BUyAzLngueCoqCgojIyBGZWF0dXJlcwoKLSBDcmVhdGUgYW4gQVBJLgotIFZhbGlkYXRlIHlvdXIgT0FTIGRvY3VtZW50cy4KLSBTZXJpYWxpemUsIGRlc2VyaWFsaXplLCBhbmQgdmFsaWRhdGUgdmFsdWVzIGFnYWluc3QgT0FTIHNjaGVtYXMuCi0gSWRlbnRpZnkgdGhlIG9wZXJhdGlvbiBhc3NvY2lhdGVkIHdpdGggYSByZXF1ZXN0LgotIFBhcnNlLCBkZXNlcmlhbGl6ZSwgYW5kIHZhbGlkYXRlIHJlcXVlc3QgcGFyYW1ldGVycy4KLSBGYWNpbGl0YXRlZCByZXNwb25zZSBidWlsZGluZy4KLSBHZW5lcmF0ZSByYW5kb20gdmFsaWQgdmFsdWVzIGZvciBhIHNjaGVtYS4KLSBQbHVnaW4gZW52aXJvbm1lbnQgZm9yIGN1c3RvbSBkb2N1bWVudCB2YWxpZGF0aW9uIGFuZCBleHRlbmRlZCBmdW5jdGlvbmFsaXR5IGluY2x1ZGluZyBjdXN0b20gZGF0YSB0eXBlIGZvcm1hdHMuCgojIyBXZWJzaXRlIC0gW29wZW5hcGktZW5mb3JjZXIuY29tXShodHRwczovL29wZW5hcGktZW5mb3JjZXIuY29tLykKCiMjIEluc3RhbGxhdGlvbgoKYGBgc2hlbGwKbnBtIGluc3RhbGwgb3BlbmFwaS1lbmZvcmNlcgpgYGAKCiMjIEV4YW1wbGVzCgojIyMgTG9hZGluZyBhbmQgVmFsaWRhdGluZyBhIERvY3VtZW50CgpVc2UgdGhlIEVuZm9yY2VyIHRvIGxvYWQgYW5kIHJlc29sdmUgYWxsICRyZWYgdmFsdWVzIGFuZCB0aGVuIHRvIHZhbGlkYXRlIHRoZSBjb21wbGV0ZSBkb2N1bWVudC4KCmBgYGpzCmNvbnN0IEVuZm9yY2VyID0gcmVxdWlyZSgnb3BlbmFwaS1lbmZvcmNlcicpCgphc3luYyBmdW5jdGlvbiBydW4gKCkgewogIGNvbnN0IFtvcGVuYXBpLCBlcnJvciwgd2FybmluZ10gPSBhd2FpdCBFbmZvcmNlcignLi9wYXRoL3RvL29wZW5hcGkueW1sJywgewogICAgZnVsbFJlc3VsdDogdHJ1ZQogIH0pCiAgaWYgKGVycm9yICE9PSB1bmRlZmluZWQpIGNvbnNvbGUuZXJyb3IoZXJyb3IpCiAgaWYgKHdhcm5pbmcgIT09IHVuZGVmaW5lZCkgY29uc29sZS53YXJuKHdhcm5pbmcpCiAgaWYgKG9wZW5hcGkgIT09IHVuZGVmaW5lZCkgY29uc29sZS5sb2coJ0RvY3VtZW50IGlzIHZhbGlkJykKfQoKcnVuLmNhdGNoKGNvbnNvbGUuZXJyb3IpCmBgYAoKIyMjIFByb2Nlc3NpbmcgYW4gSW5jb21pbmcgUmVxdWVzdAoKYGBganMKY29uc3QgRW5mb3JjZXIgPSByZXF1aXJlKCdvcGVuYXBpLWVuZm9yY2VyJykKCmFzeW5jIGZ1bmN0aW9uIHJ1biAoKSB7CiAgLy8gQmVjYXVzZSB3ZSBkb24ndCBzcGVjaWZ5IGBmdWxsUmVzdWx0OiB0cnVlYCwgYW55IGVycm9ycyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBhbmQKICAvLyB3YXJuaW5ncyB3aWxsIGJlIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KICBjb25zdCBvcGVuYXBpID0gYXdhaXQgRW5mb3JjZXIoJy4vcGF0aC90by9vcGVuYXBpLnltbCcpCgogIC8vIElmIHRoZSByZXF1ZXN0IGlzIHZhbGlkIHRoZW4gdGhlIHJlcSBvYmplY3Qgd2lsbCBjb250YWluIHRoZSBwYXJzZWQgYW5kIHZhbGlkYXRlZCByZXF1ZXN0LgogIC8vIElmIGl0IGlzIGludmFsaWQgdGhlbiB0aGUgZXJyb3Igd2lsbCBjb250YWluIGRldGFpbHMgYWJvdXQgd2hhdCB3YXMgd3Jvbmcgd2l0aCB0aGUKICAvLyByZXF1ZXN0IGFuZCB0aGVzZSBkZXRhaWxzIGFyZSBzYWZlIHRvIHJldHVybiB0byB0aGUgY2xpZW50IHRoYXQgbWFkZSB0aGUgcmVxdWVzdC4KICBjb25zdCBbIHJlcSwgZXJyb3IgXSA9IG9wZW5hcGkucmVxdWVzdCh7CiAgICBtZXRob2Q6ICdQT1NUJywKICAgIHBhdGg6ICcvdGFza3MnLAogICAgLy8gdGhlIGJvZHkgc2hvdWxkIGJlIHBhcnNlZCBieSBhIEpTT04ucGFyc2UoKSBwcmlvciB0byBwYXNzaW5nIGluIChpZiBhcHBsaWNhYmxlKS4KICAgIGJvZHk6IHsgdGFzazogJ0J1eSBNaWxrJywgcXVhbnRpdHk6IDIgfQogIH0pCgogIC8vIFlvdSBjYW4gdXNlIHRoZSByZXEub3BlcmF0aW9uIHByb3BlcnR5IHRvIGxvb2sgYXQgdGhlIHByb3BlcnRpZXMgZnJvbSB5b3VyIE9wZW5BUEkgZG9jdW1lbnQuCiAgLy8gQSBnb29kIHVzZSBvZiB0aGlzIGlzIHRvIGxvb2sgYXQgdGhlIG9wZXJhdGlvbklkIHlvdSBkZWZpbmVkIHRoZXJlIHRvIGRldGVybWluZSB3aGljaCBwYXRoCiAgLy8gaXMgYmVpbmcgdXNlZCB0byBoYW5kbGUgdGhlIHJlcXVlc3QuCiAgaWYgKHJlcS5vcGVyYXRvbi5vcGVyYXRpb25JZCA9PT0gJ215LW9wZXJhdGlvbi1pZCcpIHsKICAgIC8vIC4uLiBhZGRpdGlvbmFsIHJlcXVlc3QgcHJvY2Vzc2luZwogIH0KfQoKcnVuLmNhdGNoKGNvbnNvbGUuZXJyb3IpCmBgYAoKIyMjIFByb2R1Y2luZyBhIFZhbGlkIFJlc3VsdAoKYGBganMKY29uc3QgRW5mb3JjZXIgPSByZXF1aXJlKCdvcGVuYXBpLWVuZm9yY2VyJykKCmFzeW5jIGZ1bmN0aW9uIHJ1biAoKSB7CiAgY29uc3Qgb3BlbmFwaSA9IGF3YWl0IEVuZm9yY2VyKCcuL3BhdGgvdG8vb3BlbmFwaS55bWwnKQoKICBjb25zdCBbIHJlcSBdID0gb3BlbmFwaS5yZXF1ZXN0KHsKICAgIG1ldGhvZDogJ1BPU1QnLAogICAgcGF0aDogJy90YXNrcycsCiAgICAvLyB0aGUgYm9keSBzaG91bGQgYmUgcGFyc2VkIGJ5IGEgSlNPTi5wYXJzZSgpIHByaW9yIHRvIHBhc3NpbmcgaW4gKGlmIGFwcGxpY2FibGUpLgogICAgYm9keTogeyB0YXNrOiAnQnV5IE1pbGsnLCBxdWFudGl0eTogMiB9CiAgfSkKCiAgY29uc3QgYm9keSA9IHsgaWQ6IDEsIHRhc2s6ICdCdXkgTWlsaycsIHF1YW50aXR5OiAyLCBkYXRlQ29tcGxldGVkOiBudWxsIH0KICBjb25zdCBoZWFkZXJzID0ge30KCiAgLy8gVGhpcyB3aWxsIHZhbGlkYXRlIHRoZSByZXNwb25zZSBjb2RlLCBib2R5LCBhbmQgaGVhZGVycy4gSXQgd2lsbCBhbHNvIGNvcnJlY3RseSBzZXJpYWxpemUKICAvLyB0aGUgYm9keSBhbmQgaGVhZGVycyBmb3Igc2VuZGluZyB0byB0aGUgY2xpZW50IHRoYXQgbWFkZSB0aGUgcmVxdWVzdC4gVXNpbmcgdGhpcyBtZXRob2QKICAvLyB5b3UnbGwgbmV2ZXIgc2VuZCBiYWNrIGEgcmVzcG9uc2UgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aGF0IHlvdXIgT3BlbkFQSSBkb2N1bWVudCBkZWZpbmVzLgogIGNvbnN0IFsgcmVzLCBlcnJvciBdID0gcmVxLnJlc3BvbnNlKDIwMCwgYm9keSwgaGVhZGVycykKICBjb25zb2xlLmxvZyhyZXMuYm9keSwgcmVzLmhlYWRlcnMpCn0KCnJ1bi5jYXRjaChjb25zb2xlLmVycm9yKQpgYGAK readmeEtag: '"379b08da4f96adbeb6c3864a5d5536393476a12b"' readmeLastModified: Sat, 02 Mar 2024 00:36:43 GMT repositoryId: 120373530 description: null created: '2018-02-05T23:06:16Z' updated: '2025-12-11T11:06:21Z' language: JavaScript archived: false stars: 97 watchers: 6 forks: 25 owner: Gi60s logo: https://avatars.githubusercontent.com/u/714117?v=4 license: Apache-2.0 repoEtag: '"6dd30aac5cfecaf749ff244330525608aef055fb163d31dccfcd53feae4160c9"' repoLastModified: Thu, 11 Dec 2025 11:06:21 GMT foundInMaster: true id: d154dd3ce5cfba35ca50effbfd386d73 oldLocations: - https://github.com/byu-oit/openapi-enforcer - source: https://openapi.tools/ name: guardrail category: SDK link: https://github.com/twilio/guardrail repository: https://github.com/guardrail-dev/guardrail language: - Scala - Java - ... source_description: Principled code generation from OpenAPI descriptions v2: true v3: true repositoryMetadata: base64Readme: >- Z3VhcmRyYWlsIFshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL2d1YXJkcmFpbC1kZXYvZ3VhcmRyYWlsL3dvcmtmbG93cy9DSS9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vZ3VhcmRyYWlsLWRldi9ndWFyZHJhaWwvYWN0aW9ucz9xdWVyeT13b3JrZmxvdyUzQSUyMkNJJTIyKSB8IFshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9ndWFyZHJhaWwtZGV2L2d1YXJkcmFpbC9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2Zz90b2tlbj1zc0xZWWtWQmd2KV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL2d1YXJkcmFpbC1kZXYvZ3VhcmRyYWlsKSB8IFshW01hdHJpeCBjaGF0XShodHRwczovL2ltZy5zaGllbGRzLmlvL21hdHJpeC9ndWFyZHJhaWw6bWF0cml4Lm9yZy5zdmc/bGFiZWw9bWF0cml4JnNlcnZlcl9mcWRuPW1hdHJpeC5vcmcpXShodHRwczovL21hdHJpeC50by8jLyNndWFyZHJhaWw6bWF0cml4Lm9yZykgfCBbIVtKb2luIHRoZSBjaGF0IGF0IGh0dHBzOi8vZ2l0dGVyLmltL2d1YXJkcmFpbC1kZXYvZ3VhcmRyYWlsXShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vZ3VhcmRyYWlsLWRldi9ndWFyZHJhaWwuc3ZnKV0oaHR0cHM6Ly9naXR0ZXIuaW0vZ3VhcmRyYWlsLWRldi9ndWFyZHJhaWw/dXRtX3NvdXJjZT1iYWRnZSZ1dG1fbWVkaXVtPWJhZGdlJnV0bV9jYW1wYWlnbj1wci1iYWRnZSZ1dG1fY29udGVudD1iYWRnZSkgfCBbIVtTY2FsYSBTdGV3YXJkIGJhZGdlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1NjYWxhX1N0ZXdhcmQtaGVscGluZy1ibHVlLnN2Zz9zdHlsZT1mbGF0JmxvZ289ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBNEFBQUFRQ0FNQUFBQVJTcjRJQUFBQVZGQk1WRVVBQUFDSGpvamxPeTVOV2xyS3pjWVJLakdGaklicDI5M1l5Y3VMYTNwWVkyTFNxcWw0ZjNwQ1VGVGdTak5vZFlSbWNYVXNQRC9OVFRialJTKzJqb21oZ256TmMyMjNjR3ZaUzBIYVNEMFhMamJhU2pFbGhJcitBQUFBQVhSU1RsTUFRT2JZWmdBQUFIbEpSRUZVQ05kTnlvc093eUFJaFdIQVFTMVZ0N2E3Ny8zZmN4eGRtdjB4d21ja3V0QVIxbmttNGdnYnlFY2cvd1dtbEdMREFBM29MNTB4aTZmazVmZlozRTJFM1FmWkRDY0NOMll0YkVXWnQrRHJjNnU2cmxxdjdVazBMZEtxcXI1cmsyVUNSWE9rMHZtUUtHZmM5NG5PSnlRam91RjlIL3dDYzlnRUNFWWZPTm9BQUFBQVNVVk9SSzVDWUlJPSldKGh0dHBzOi8vc2NhbGEtc3Rld2FyZC5vcmcpCj09PQoKZ3VhcmRyYWlsIGlzIGEgY29kZSBnZW5lcmF0aW9uIHRvb2wsIGNhcGFibGUgb2YgcmVhZGluZyBmcm9tIE9wZW5BUEkvU3dhZ2dlciBzcGVjaWZpY2F0aW9uIGZpbGVzIGFuZCBnZW5lcmF0aW5nIGJvdGggU2NhbGEgYW5kIEphdmEgc291cmNlIGNvZGUsIHRhcmdldGluZyB2YXJpb3VzIGxpYnJhcmllcyBhbmQgZnJhbWV3b3JrcyBsaXN0ZWQgaGVyZToKCi0gU2NhbGE6IGBha2thLWh0dHBgIGFuZCBgaHR0cDRzYCwgYm90aCBiYWNrZWQgYnkgYGNpcmNlYCwgYXMgd2VsbCBhcyBgZHJvcHdpemFyZGAgYmFja2VkIGJ5IGBqYWNrc29uYAotIEphdmE6IGBkcm9wd2l6YXJkYCBhbmQgYHNwcmluZy1tdmNgLCBib3RoIGJhY2tlZCBieSBgamFja3NvbmAKCkJ1aWxkIHRvb2wgcGx1Z2lucwotLS0tLS0tLS0tLS0tLS0tLS0KCnwgUGx1Z2lucyB8IHZlcnNpb25zIHwgZG9jcyB8CnwtLS18LS0tfC0tLXwKfCBbYGd1YXJkcmFpbC1kZXYvc2J0LWd1YXJkcmFpbGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndWFyZHJhaWwtZGV2L3NidC1ndWFyZHJhaWwpIHwgWyFbc2J0LWd1YXJkcmFpbF0oaHR0cHM6Ly9tYXZlbi1iYWRnZXMuaGVyb2t1YXBwLmNvbS9tYXZlbi1jZW50cmFsL2Rldi5ndWFyZHJhaWwvc2J0LWd1YXJkcmFpbC9iYWRnZS5zdmcpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9ZzpkZXYuZ3VhcmRyYWlsJTIwYTpzYnQtZ3VhcmRyYWlsKSB8IFtkb2NzXShkb2NzL3BsdWdpbnMvc2J0Lm1kKSB8CnwgW2BndWFyZHJhaWwtZGV2L2d1YXJkcmFpbC1tYXZlbi1wbHVnaW5gXShodHRwczovL2dpdGh1Yi5jb20vZ3VhcmRyYWlsLWRldi9ndWFyZHJhaWwtbWF2ZW4tcGx1Z2luKSB8IFshW2d1YXJkcmFpbC1tYXZlbi1wbHVnaW5dKGh0dHBzOi8vbWF2ZW4tYmFkZ2VzLmhlcm9rdWFwcC5jb20vbWF2ZW4tY2VudHJhbC9kZXYuZ3VhcmRyYWlsL2d1YXJkcmFpbC1tYXZlbi1wbHVnaW4vYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnL3NlYXJjaD9xPWc6ZGV2Lmd1YXJkcmFpbCUyMGE6Z3VhcmRyYWlsLW1hdmVuLXBsdWdpbikgfCBbZG9jc10oZG9jcy9wbHVnaW5zL21hdmVuLm1kKSB8CnwgW2BndWFyZHJhaWwtZGV2L2d1YXJkcmFpbC1ncmFkbGUtcGx1Z2luYF0oaHR0cHM6Ly9naXRodWIuY29tL2d1YXJkcmFpbC1kZXYvZ3VhcmRyYWlsLWdyYWRsZS1wbHVnaW4pIHwgYGd1YXJkcmFpbC1ncmFkbGUtcGx1Z2luYCB8IFtQbHVnaW4gUG9ydGFsXShodHRwczovL3BsdWdpbnMuZ3JhZGxlLm9yZy9wbHVnaW4vZGV2Lmd1YXJkcmFpbCkgfCBbZG9jc10oZG9jcy9wbHVnaW5zL2dyYWRsZS5tZCkgfAp8IFtDTEkgc3VwcG9ydF0oLi9tb2R1bGVzL2NsaSkgfCBMYXRlc3QgfCBbYGNzIGluc3RhbGwgZ3VhcmRyYWlsYF0oaHR0cHM6Ly9nZXQtY291cnNpZXIuaW8vZG9jcy9jbGktaW5zdGFsbCksIFtkb2NzXShkb2NzL3BsdWdpbnMvbWFrZS5tZCkgfAoKTmV3IHRvIGd1YXJkcmFpbD8KLS0tCgpDaGVjayBvdXQgdGhlIFtkb2NzXShodHRwczovL2d1YXJkcmFpbC5kZXYvKSEKCkNvbXBhdGlibGUgbGlicmFyeSB2ZXJzaW9ucyBhcmUgbGlzdGVkIGluIFtDT01QQVRJQklMSVRZLm1kXShDT01QQVRJQklMSVRZLm1kKQoKZ3VhcmRyYWlsIG1vZHVsZSB2ZXJzaW9ucwotLS0KCmd1YXJkcmFpbCBpcyBtb2R1bGFyaXplZCwgdXNpbmcgW2BzYnQtdmVyc2lvbi1wb2xpY3lgXShodHRwczovL2dpdGh1Yi5jb20vc2NhbGFjZW50ZXIvc2J0LXZlcnNpb24tcG9saWN5KSB0byBlbnN1cmUgYmluYXJ5IGNvbXBhdGliaWxpdHkgYmV0d2VlbiBkZXBlbmRlbnQgbW9kdWxlcy4KClRoZSBkZXBlbmRlbmN5IGNoYWluIGFuZCB2ZXJzaW9ucyBvZiBwdWJsaXNoZWQgbW9kdWxlcyBhcmUgbGlzdGVkIGJlbG93IGZvciByZWZlcmVuY2U6Cgp8IG1vZHVsZSAgfCB2ZXJzaW9uICB8IGRlcGVuZHMgb24gfAp8LS0tLS18LS0tLS18LS0tLS18CnwgZ3VhcmRyYWlsLWNvcmUgfCBbIVtndWFyZHJhaWwtY29yZV0oaHR0cHM6Ly9tYXZlbi1iYWRnZXMuaGVyb2t1YXBwLmNvbS9tYXZlbi1jZW50cmFsL2Rldi5ndWFyZHJhaWwvZ3VhcmRyYWlsLWNvcmVfMi4xMi9iYWRnZS5zdmcpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9ZzpkZXYuZ3VhcmRyYWlsJTIwYTpndWFyZHJhaWwtY29yZV8yLjEyKSB8ICB8CnwgZ3VhcmRyYWlsLWphdmEtc3VwcG9ydCB8IFshW2d1YXJkcmFpbC1qYXZhLXN1cHBvcnRdKGh0dHBzOi8vbWF2ZW4tYmFkZ2VzLmhlcm9rdWFwcC5jb20vbWF2ZW4tY2VudHJhbC9kZXYuZ3VhcmRyYWlsL2d1YXJkcmFpbC1qYXZhLXN1cHBvcnRfMi4xMi9iYWRnZS5zdmcpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9ZzpkZXYuZ3VhcmRyYWlsJTIwYTpndWFyZHJhaWwtamF2YS1zdXBwb3J0XzIuMTIpIHwgY29yZSB8CnwgZ3VhcmRyYWlsLWphdmEtYXN5bmMtaHR0cCB8IFshW2d1YXJkcmFpbC1qYXZhLWFzeW5jLWh0dHBdKGh0dHBzOi8vbWF2ZW4tYmFkZ2VzLmhlcm9rdWFwcC5jb20vbWF2ZW4tY2VudHJhbC9kZXYuZ3VhcmRyYWlsL2d1YXJkcmFpbC1qYXZhLWFzeW5jLWh0dHBfMi4xMi9iYWRnZS5zdmcpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9ZzpkZXYuZ3VhcmRyYWlsJTIwYTpndWFyZHJhaWwtamF2YS1hc3luYy1odHRwXzIuMTIpIHwgamF2YS1zdXBwb3J0IHwKfCBndWFyZHJhaWwtamF2YS1kcm9wd2l6YXJkIHwgWyFbZ3VhcmRyYWlsLWphdmEtZHJvcHdpemFyZF0oaHR0cHM6Ly9tYXZlbi1iYWRnZXMuaGVyb2t1YXBwLmNvbS9tYXZlbi1jZW50cmFsL2Rldi5ndWFyZHJhaWwvZ3VhcmRyYWlsLWphdmEtZHJvcHdpemFyZF8yLjEyL2JhZGdlLnN2ZyldKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9zZWFyY2g/cT1nOmRldi5ndWFyZHJhaWwlMjBhOmd1YXJkcmFpbC1qYXZhLWRyb3B3aXphcmRfMi4xMikgfCBqYXZhLXN1cHBvcnQsIGphdmEtYXN5bmMtaHR0cCB8CnwgZ3VhcmRyYWlsLWphdmEtc3ByaW5nLW12YyB8IFshW2d1YXJkcmFpbC1qYXZhLXNwcmluZy1tdmNdKGh0dHBzOi8vbWF2ZW4tYmFkZ2VzLmhlcm9rdWFwcC5jb20vbWF2ZW4tY2VudHJhbC9kZXYuZ3VhcmRyYWlsL2d1YXJkcmFpbC1qYXZhLXNwcmluZy1tdmNfMi4xMi9iYWRnZS5zdmcpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9ZzpkZXYuZ3VhcmRyYWlsJTIwYTpndWFyZHJhaWwtamF2YS1zcHJpbmctbXZjXzIuMTIpIHwgamF2YS1zdXBwb3J0IHwKfCBndWFyZHJhaWwtc2NhbGEtc3VwcG9ydCB8IFshW2d1YXJkcmFpbC1zY2FsYS1zdXBwb3J0XShodHRwczovL21hdmVuLWJhZGdlcy5oZXJva3VhcHAuY29tL21hdmVuLWNlbnRyYWwvZGV2Lmd1YXJkcmFpbC9ndWFyZHJhaWwtc2NhbGEtc3VwcG9ydF8yLjEyL2JhZGdlLnN2ZyldKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9zZWFyY2g/cT1nOmRldi5ndWFyZHJhaWwlMjBhOmd1YXJkcmFpbC1zY2FsYS1zdXBwb3J0XzIuMTIpIHwgY29yZSB8CnwgZ3VhcmRyYWlsLXNjYWxhLWFra2EtaHR0cCB8IFshW2d1YXJkcmFpbC1zY2FsYS1ha2thLWh0dHBdKGh0dHBzOi8vbWF2ZW4tYmFkZ2VzLmhlcm9rdWFwcC5jb20vbWF2ZW4tY2VudHJhbC9kZXYuZ3VhcmRyYWlsL2d1YXJkcmFpbC1zY2FsYS1ha2thLWh0dHBfMi4xMi9iYWRnZS5zdmcpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9ZzpkZXYuZ3VhcmRyYWlsJTIwYTpndWFyZHJhaWwtc2NhbGEtYWtrYS1odHRwXzIuMTIpIHwgc2NhbGEtc3VwcG9ydCB8CnwgZ3VhcmRyYWlsLXNjYWxhLWRyb3B3aXphcmQgfCBbIVtndWFyZHJhaWwtc2NhbGEtZHJvcHdpemFyZF0oaHR0cHM6Ly9tYXZlbi1iYWRnZXMuaGVyb2t1YXBwLmNvbS9tYXZlbi1jZW50cmFsL2Rldi5ndWFyZHJhaWwvZ3VhcmRyYWlsLXNjYWxhLWRyb3B3aXphcmRfMi4xMi9iYWRnZS5zdmcpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvc2VhcmNoP3E9ZzpkZXYuZ3VhcmRyYWlsJTIwYTpndWFyZHJhaWwtc2NhbGEtZHJvcHdpemFyZF8yLjEyKSB8IHNjYWxhLXN1cHBvcnQgfAp8IGd1YXJkcmFpbC1zY2FsYS1odHRwNHMgfCBbIVtndWFyZHJhaWwtc2NhbGEtaHR0cDRzXShodHRwczovL21hdmVuLWJhZGdlcy5oZXJva3VhcHAuY29tL21hdmVuLWNlbnRyYWwvZGV2Lmd1YXJkcmFpbC9ndWFyZHJhaWwtc2NhbGEtaHR0cDRzXzIuMTIvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnL3NlYXJjaD9xPWc6ZGV2Lmd1YXJkcmFpbCUyMGE6Z3VhcmRyYWlsLXNjYWxhLWh0dHA0c18yLjEyKSB8IHNjYWxhLXN1cHBvcnQgfAp8IGd1YXJkcmFpbC1jbGkgfCBbIVtndWFyZHJhaWwtY2xpXShodHRwczovL21hdmVuLWJhZGdlcy5oZXJva3VhcHAuY29tL21hdmVuLWNlbnRyYWwvZGV2Lmd1YXJkcmFpbC9ndWFyZHJhaWwtY2xpXzIuMTIvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnL3NlYXJjaD9xPWc6ZGV2Lmd1YXJkcmFpbCUyMGE6Z3VhcmRyYWlsLWNsaV8yLjEyKSB8IGd1YXJkcmFpbC1jb3JlIHwKCkludGVyZXN0ZWQgaW4gY29udHJpYnV0aW5nPwotLS0KCltDT05UUklCVVRJTkcubWRdKENPTlRSSUJVVElORy5tZCkgcHJvdmlkZXMgYW4gb3ZlcnZpZXcgb2YgaG93IHRoZSBwcm9qZWN0IGlzIHN0cnVjdHVyZWQsIGV4cGVjdGF0aW9ucywgYW5kIGluZm9ybWF0aW9uIGFyb3VuZCB3cml0aW5nIG5ldyBpbnRlZ3JhdGlvbiB0ZXN0cy4KVGhlIFtpc3N1ZSB0cmFja2VyXShodHRwczovL2dpdGh1Yi5jb20vZ3VhcmRyYWlsLWRldi9ndWFyZHJhaWwvaXNzdWVzKSBhbHNvIGhhcyB0YWdzIGZvciBbYGhlbHAgd2FudGVkYF0oaHR0cHM6Ly9naXRodWIuY29tL2d1YXJkcmFpbC1kZXYvZ3VhcmRyYWlsL2lzc3Vlcz9xPWlzJTNBaXNzdWUraXMlM0FvcGVuK2xhYmVsJTNBJTIyaGVscCt3YW50ZWQlMjIpIGFuZCBbYGdvb2QgZmlyc3QgaXNzdWVgXShodHRwczovL2dpdGh1Yi5jb20vZ3VhcmRyYWlsLWRldi9ndWFyZHJhaWwvaXNzdWVzP3E9aXMlM0Fpc3N1ZStpcyUzQW9wZW4rbGFiZWwlM0ElMjJnb29kK2ZpcnN0K2lzc3VlJTIyKS4KCkFkb3B0ZXJzCj09PT09PT09CgotIFtBdmFzdF0oaHR0cHM6Ly93d3cuYXZhc3QuY29tLykKLSBbVHdpbGlvXShodHRwczovL3d3dy50d2lsaW8uY29tLykKCkNvbnRyaWJ1dG9ycwo9PT09PT09PT09PT0KCldlIHVzZWQgdG8gaGF2ZSBhIGxpc3Qgb2YgY29udHJpYnV0b3JzIGhlcmUsIGJ1dCBbZ2l0aHViJ3MgQ29udHJpYnV0b3JzIHBhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndWFyZHJhaWwtZGV2L2d1YXJkcmFpbC9ncmFwaHMvY29udHJpYnV0b3JzKSBpcyBtdWNoIG1vcmUgYWNjdXJhdGUuIFRoYW5rcyB0byB0aG9zZSB3aG8gY29udHJpYnV0ZWQgYmVmb3JlIHRoZSBwcm9qZWN0IHdhcyBvcGVuIHNvdXJjZWQhCg== readmeEtag: '"f6b23074c7d0e522514219d62aa01792c01b934b"' readmeLastModified: Tue, 30 Jul 2024 13:56:35 GMT repositoryId: 102150798 description: Principled code generation from OpenAPI specifications created: '2017-09-01T20:31:36Z' updated: '2026-02-05T03:40:59Z' language: Scala archived: false stars: 540 watchers: 24 forks: 137 owner: guardrail-dev logo: https://avatars.githubusercontent.com/u/77855402?v=4 license: MIT repoEtag: '"2913bd0643a98aa412eb61d91e82612c61e65a2ed44e7bef1de56d484f951f8b"' repoLastModified: Thu, 05 Feb 2026 03:40:59 GMT foundInMaster: true id: 5a3fd6a978abf3303c9cce3950582502 oldLocations: - https://github.com/twilio/guardrail - source: https://openapi.tools/ name: LoopBack 4 category: Server language: Node.js + TypeScript link: https://loopback.io/ repository: https://github.com/loopbackio/loopback-next source_description: > A highly extensible object-oriented Node.js and TypeScript framework for building APIs and microservices with tight OpenAPI 3 integration. Serves Swagger UI and OpenAPI 3 spec out of the box. Generate code to interact with other OpenAPI-compliant APIs, or generate new API endpoints based on existing OpenAPI specs. repositoryMetadata: base64Readme: >- PGltZyBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9sb29wYmFja2lvL2xvb3BiYWNrLmlvL2doLXBhZ2VzL2ltYWdlcy9icmFuZGluZy9sb2dvL2JsdWUvbG9vcGJhY2stc20ucG5nIiBhbHQ9Ikxvb3BCYWNrNCBsb2dvIiB3aWR0aD0iNDAwIi8+CgpbIVtDb250aW51b3VzIEludGVncmF0aW9uIFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL2xvb3BiYWNraW8vbG9vcGJhY2stbmV4dC9hY3Rpb25zL3dvcmtmbG93cy9jb250aW51b3VzLWludGVncmF0aW9uLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbG9vcGJhY2tpby9sb29wYmFjay1uZXh0L2FjdGlvbnMvd29ya2Zsb3dzL2NvbnRpbnVvdXMtaW50ZWdyYXRpb24ueW1sKQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2dpdGh1Yi9sb29wYmFja2lvL2xvb3BiYWNrLW5leHQvYmFkZ2Uuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL2NvdmVyYWxscy5pby9naXRodWIvbG9vcGJhY2tpby9sb29wYmFjay1uZXh0P2JyYW5jaD1tYXN0ZXIpClshW0NvZGVRTCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb29wYmFja2lvL2xvb3BiYWNrLW5leHQvd29ya2Zsb3dzL0NvZGVRTC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbG9vcGJhY2tpby9sb29wYmFjay1uZXh0L2FjdGlvbnM/cXVlcnk9d29ya2Zsb3clM0FDb2RlUUwpCgpbIVtUd2l0dGVyXShodHRwczovL2ltZy5zaGllbGRzLmlvL3R3aXR0ZXIvZm9sbG93L3N0cm9uZ2xvb3Auc3ZnP3N0eWxlPXNvY2lhbCZsYWJlbD1Gb2xsb3clMjAlNDBzdHJvbmdsb29wKV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9zdHJvbmdsb29wKQpbIVtMaW5rZWRJbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9Gb2xsb3clMjB1cy13aGl0ZT9sb2dvPWxpbmtlZEluJmNvbG9yPTAwNzdCNSZsb2dvQ29sb3I9d2hpdGUpXShodHRwczovL3d3dy5saW5rZWRpbi5jb20vZ3JvdXBzLzUwNDY1MjUvKQpbIVtTbGFja10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9zbGFjay1Kb2luJTIwd29ya3NwYWNlLSUyMzRBMTU0Qj9sb2dvPXNsYWNrKV0oaHR0cHM6Ly9qb2luLnNsYWNrLmNvbS90L2xvb3BiYWNraW8vc2hhcmVkX2ludml0ZS96dC04bGJvdzczci1TS0FLejYxVmRhb35fckdmOTFwY3N3KQoKTG9vcEJhY2sgbWFrZXMgaXQgZWFzeSB0byBidWlsZCBtb2Rlcm4gYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBjb21wbGV4CmludGVncmF0aW9ucy4KCi0gRmFzdCwgc21hbGwsIHBvd2VyZnVsLCBleHRlbnNpYmxlIGNvcmUKLSBHZW5lcmF0ZSByZWFsIEFQSXMgd2l0aCBhIHNpbmdsZSBjb21tYW5kCi0gRGVmaW5lIHlvdXIgZGF0YSBhbmQgZW5kcG9pbnRzIHdpdGggT3BlbkFQSQotIE5vIG1haW50ZW5hbmNlIG9mIGdlbmVyYXRlZCBjb2RlCgojIyBTdGF0dXM6IEdlbmVyYWwgQXZhaWxhYmlsaXR5CgpMb29wQmFjayA0IEdBIChHZW5lcmFsIEF2YWlsYWJpbGl0eSkgaGFzIGJlZW4gcmVsZWFzZWQgaW4gT2N0b2JlciAyMDE4LCByZWFkCm1vcmUgaW4gW3RoZSBhbm5vdW5jZW1lbnQgcG9zdF0oaHR0cDovL3N0cm9uZ2xvb3AuY29tL3N0cm9uZ2Jsb2cvbG9vcGJhY2stNC1nYSkuCgpUaGUgZG9jdW1lbnRhdGlvbiB3ZWJzaXRlIGlzIGh0dHBzOi8vbG9vcGJhY2suaW8vZG9jL2VuL2xiNC8uCgpMZWFybiBhYm91dCB0aGUgbGF0ZXN0IGFuZCBncmVhdGVzdApbZmVhdHVyZXMgYW5kIHRlY2hub2xvZ2llcyBpbiBMb29wQmFjayA0XShodHRwczovL2xvb3BiYWNrLmlvL2RvYy9lbi9sYjQvQ3JhZnRpbmctTG9vcEJhY2stNC5odG1sKQpieSB1c2luZyBpdCBmb3IgeW91ciBuZXh0IHByb2plY3QuIFN0YXJ0IGJ5IGhhdmluZyBhIGxvb2sgYXQKW0dldHRpbmcgU3RhcnRlZF0oaHR0cHM6Ly9sb29wYmFjay5pby9kb2MvZW4vbGI0L0dldHRpbmctc3RhcnRlZC5odG1sKS4KCkNoZWNrIHRoZSBbQVBJIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vbG9vcGJhY2suaW8vZG9jL2VuL2xiNC9hcGlkb2NzLmluZGV4Lmh0bWwpCmZvciBhbGwgdGhlIEFQSSB1c2FnZXMgaW4gZWFjaCBwYWNrYWdlLgoKIyMjIExvbmcgVGVybSBTdXBwb3J0CgpXZSBkb24ndCBwcm92aWRlIGFueSBMVFMgdmVyc2lvbiBmb3IgTG9vcEJhY2sgNCB5ZXQuIFBsZWFzZSBqb2luIHRoZSBkaXNjdXNzaW9uCmluIFtsb29wYmFjay1uZXh0IzQzOThdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb29wYmFja2lvL2xvb3BiYWNrLW5leHQvaXNzdWVzLzQzOTgpCmlmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBhIHZlcnNpb24gdGhhdCdzIGxlc3MgZnJlcXVlbnRseSBjaGFuZ2VkLgoKfCBWZXJzaW9uICAgIHwgU3RhdHVzICAgICAgfCBQdWJsaXNoZWQgfCBFT0wgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IExvb3BCYWNrIDQgfCBDdXJyZW50ICAgICB8IE9jdCAyMDE4ICB8IEFwciAyMDI4IF8obWluaW11bSlfIHwKfCBMb29wQmFjayAzIHwgRW5kLW9mLUxpZmUgfCBEZWMgMjAxNiAgfCBEZWMgMjAyMCAgICAgICAgICAgICB8CnwgTG9vcEJhY2sgMiB8IEVuZC1vZi1MaWZlIHwgSnVsIDIwMTQgIHwgQXByIDIwMTkgICAgICAgICAgICAgfAoKUGxlYXNlIHJlZmVyIHRvIG91cgpbTG9uZyBUZXJtIFN1cHBvcnQgUG9saWN5XShodHRwczovL2xvb3BiYWNrLmlvL2RvYy9lbi9jb250cmliL0xvbmctdGVybS1zdXBwb3J0Lmh0bWwpCmZvciBtb3JlIGRldGFpbHMuCgojIyBJbnN0YWxsYXRpb24KCk1ha2Ugc3VyZSB5b3UgaGF2ZSB0aGUgZm9sbG93aW5nIGluc3RhbGxlZDoKCnwgUGFja2FnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVyc2lvbi8tcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExpbmsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgW05vZGUuanNdKGh0dHBzOi8vbm9kZWpzLm9yZy9lbi9kb3dubG9hZC8pIHwgTWFpbnRlbmFuY2UgTFRTIChfdjIwXykgPGJyLz4gQWN0aXZlIExUUyAoX3YyMl8pIDxici8+IEN1cnJlbnQgKF92MjRfKSB8IGh0dHBzOi8vbm9kZWpzLm9yZy9lbi9hYm91dC9yZWxlYXNlcy8gfCA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPlRoZSB1c2Ugb2YgdGhlIGN1cnJlbnQgdmVyc2lvbiBmb3IgcHJvZHVjdGlvbiBpcyBub3QgcmVjb21tZW5kZWQ8L3NwYW4+LiB8CgpZb3UgY2FuIGdlbmVyYXRlIGEgcHJvamVjdCB3aXRoIG91ciBnZW5lcmF0b3Igb3Igd2l0aCB0aGUgQ0xJIGFzIGZvbGxvd3M6CgpgYGBzaGVsbApucG0gY3JlYXRlIGxvb3BiYWNrCm5weCAtcCBAbG9vcGJhY2svY2xpIGxiIGFwcApgYGAKClRvIGNyZWF0ZSB5b3VyIGZpcnN0IExvb3BCYWNrIDQgYXBwbGljYXRpb24sIHNlZQpbR2V0dGluZyBTdGFydGVkXShodHRwOi8vbG9vcGJhY2suaW8vZG9jL2VuL2xiNC9HZXR0aW5nLXN0YXJ0ZWQuaHRtbCkuCgojIyBEb2N1bWVudGF0aW9uCgotIFtPZmZpY2lhbCBkb2N1bWVudGF0aW9uXShodHRwOi8vbG9vcGJhY2suaW8vZG9jL2VuL2xiNC8pCi0gW0FQSSBkb2N1bWVudGF0aW9uXShodHRwczovL2xvb3BiYWNrLmlvL2RvYy9lbi9sYjQvYXBpZG9jcy5pbmRleC5odG1sKQotIFtGQVFdKGh0dHA6Ly9sb29wYmFjay5pby9kb2MvZW4vbGI0L0ZBUS5odG1sKQotIFtMb29wQmFjayAzIHZzIExvb3BCYWNrIDRdKGh0dHA6Ly9sb29wYmFjay5pby9kb2MvZW4vbGI0L21pZ3JhdGlvbi1vdmVydmlldy5odG1sKQotIFtUdXRvcmlhbHNdKGh0dHA6Ly9sb29wYmFjay5pby9kb2MvZW4vbGI0L1R1dG9yaWFscy5odG1sKQotIFtFeGFtcGxlc10oaHR0cDovL2xvb3BiYWNrLmlvL2RvYy9lbi9sYjQvRXhhbXBsZXMuaHRtbCkKCiMjIENvbnRyaWJ1dGluZwoKU2VlIHRoZSBmb2xsb3dpbmcgcmVzb3VyY2VzIHRvIGdldCB5b3Ugc3RhcnRlZDoKCi0gW0NvbnRyaWJ1dGluZyBHdWlkZWxpbmVzXSguL2RvY3MvQ09OVFJJQlVUSU5HLm1kKQotIFtNb25vcmVwbyBvdmVydmlld10oLi9kb2NzL3NpdGUvTU9OT1JFUE8ubWQpCi0gW0RldmVsb3BpbmcgTG9vcEJhY2tdKC4vZG9jcy9zaXRlL0RFVkVMT1BJTkcubWQpCgpZb3UgY2FuIGpvaW4gdGhlIHRlYW0gYnkgcG9zdGluZyBhIGNvbW1lbnQgdG8KW2lzc3VlICMxMTBdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb29wYmFja2lvL2xvb3BiYWNrLW5leHQvaXNzdWVzLzExMCkuCgojIyMgU2VjdXJpdHkKCklmIHlvdSB0aGluayB5b3UgaGF2ZSBkaXNjb3ZlcmVkIGEgbmV3IHNlY3VyaXR5IGlzc3VlIHdpdGggYW55IExvb3BCYWNrIHBhY2thZ2UsCioqcGxlYXNlIGRvIG5vdCByZXBvcnQgaXQgb24gR2l0SHViKiouIEluc3RlYWQsIHNlbmQgYW4gZW1haWwgdG8KW3NlY3VyaXR5QGxvb3BiYWNrLmlvXShtYWlsdG86c2VjdXJpdHlAbG9vcGJhY2suaW8pIHdpdGggYSBmdWxsIGRlc2NyaXB0aW9uIGFuZApzdGVwcyB0byByZXByb2R1Y2UuCgpTZWUgW1NFQ1VSSVRZLm1kXShTRUNVUklUWS5tZCkgZm9yIG1vcmUgZGV0YWlscy4KCiMjIFRlYW0KCiMjIyBQcm9qZWN0IEFyY2hpdGVjdAoKfCAgICAgICAgICAgICAgICAgIFJheW1vbmQgRmVuZyAgICAgICAgICAgICAgICAgICB8CnwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTogfAp8IFshW3JheW1vbmRmZW5nXV0oaHR0cDovL2dpdGh1Yi5jb20vcmF5bW9uZGZlbmcpIHwKCiMjIyBUZWNobmljYWwgU3RlZXJpbmcgQ29tbWl0dGVlCgp8ICAgICAgICAgICAgICAgICAgUmF5bW9uZCBGZW5nICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICBEaWFuYSBMYXUgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICBNYXJpbyBFc3RyYWRhICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIFJpZmEgQWNocmluemEgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgRnJhbmNpc2NvIEJ1Y2V0YSAgICAgICAgICAgICAgfCAgICAgICAgICAgIFNhbWFycGFuIEJoYXR0YWNoYXJ5YSAgICAgICAgICAgICB8CnwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOiB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOiB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOiB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06IHwKfCBbIVtyYXltb25kZmVuZ11dKGh0dHA6Ly9naXRodWIuY29tL3JheW1vbmRmZW5nKSB8IFshW2RobWxhdV1dKGh0dHA6Ly9naXRodWIuY29tL2RobWxhdSkgfCBbIVttYXJpb2VzdHJhZGFyb3NhXV0oaHR0cHM6Ly9naXRodWIuY29tL21hcmlvZXN0cmFkYXJvc2EpIHwgWyFbYWNocmluemFdXShodHRwczovL2dpdGh1Yi5jb20vYWNocmluemEpIHwgWyFbZnJidWNldGFdXShodHRwczovL2dpdGh1Yi5jb20vZnJidWNldGEpIHwgWyFbc2FtYXJwYW5CXV0oaHR0cHM6Ly9naXRodWIuY29tL3NhbWFycGFuQikgfAoKIyMjIE90aGVyIFByb2plY3QgTWFpbnRhaW5lcnMKCnwgICAgICAgICAgICAgICAgIE5vcmEgQWJkZWxnYWRpciAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICBNYXR0aGV3IFNjaG5lZSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIEhhZ2UgWWFhcGEgICAgICAgICAgICAgICAgICAgIHwKfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTogfAp8IFshW25hYmRlbGdhZGlyXV0oaHR0cHM6Ly9naXRodWIuY29tL25hYmRlbGdhZGlyKSB8ICBbIVttc2NobmVlXV0oaHR0cHM6Ly9naXRodWIuY29tL21zY2huZWUpICB8IFshW2hhY2tzcGFycm93XV0oaHR0cHM6Ly9naXRodWIuY29tL2hhY2tzcGFycm93KSB8CnwgICAgICAgICAgICAgICAgICAqKkFnbmVzIExpbioqICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICoqTWFkYWt5KiogICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICoqSHVnbyBEYSBSb2l0KiogICAgICAgICAgICAgICAgIHwKfCAgICBbIVthZ25lczUxMl1dKGh0dHBzOi8vZ2l0aHViLmNvbS9hZ25lczUxMikgICAgfCAgIFshW21hZGFreV1dKGh0dHBzOi8vZ2l0aHViLmNvbS9tYWRha3kpICAgfCAgICAgICAgWyFbeWF0eV1dKGh0dHBzOi8vZ2l0aHViLmNvbS95YXR5KSAgICAgICAgfAp8ICAgICAgICAgICAgICAgICAgKipOaWNvIEZsYWlnKiogICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICoqRGVubnkgQmFydGVsdCoqICAgICAgICAgICAgICB8ICAgICAgICAgICAgICoqRG91Z2xhcyBNY0Nvbm5hY2hpZSoqICAgICAgICAgICAgICB8CnwgICAgICBbIVtuZmxhaWddXShodHRwczovL2dpdGh1Yi5jb20vbmZsYWlnKSAgICAgIHwgIFshW2RlcmRla2FdXShodHRwczovL2dpdGh1Yi5jb20vZGVyZGVrYSkgIHwgICAgWyFbZG91Z2FsODNdXShodHRwczovL2dpdGh1Yi5jb20vZG91Z2FsODMpICAgIHwKfCAgICAgICAgICAgICoqU2FtYXJwYW4gQmhhdHRhY2hhcnlhKiogICAgICAgICAgICAgfCAgICAgICAgICAgICAqKk11aGFtbWFkIEFhcWlsKiogICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICAgWyFbc2FtYXJwYW5CXV0oaHR0cHM6Ly9naXRodWIuY29tL3NhbWFycGFuQikgICB8IFshW2FhcWlsbml6XV0oaHR0cHM6Ly9naXRodWIuY29tL2FhcWlsbml6KSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgpTZWUKW2FsbCBjb250cmlidXRvcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb29wYmFja2lvL2xvb3BiYWNrLW5leHQvZ3JhcGhzL2NvbnRyaWJ1dG9ycykuCgojIyMgQWx1bW5pCgotIFtAcml0Y2hdKGh0dHA6Ly9naXRodWIuY29tL3JpdGNoKQotIFtAc3VwZXJraGF1XShodHRwczovL2dpdGh1Yi5jb20vc3VwZXJraGF1KQotIFtAcmFzaG1paHVudF0oaHR0cHM6Ly9naXRodWIuY29tL3Jhc2htaWh1bnQpCi0gW0BramRlbGlzbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ramRlbGlzbGUpCi0gW0B2aXJrdDI1XShodHRwczovL2dpdGh1Yi5jb20vdmlya3QyNSkKLSBbQHNoaW1rc10oaHR0cHM6Ly9naXRodWIuY29tL3NoaW1rcykKLSBbQGItYWRtaWtlXShodHRwczovL2dpdGh1Yi5jb20vYi1hZG1pa2UpCi0gW0BkZWVwYWtya3Jpc10oaHR0cHM6Ly9naXRodWIuY29tL2RlZXBha3JrcmlzKQotIFtAYmFqdG9zXShodHRwOi8vZ2l0aHViLmNvbS9iYWp0b3MpCi0gW0BqYW5ueWhvdV0oaHR0cDovL2dpdGh1Yi5jb20vamFubnlIb3UpCi0gW0BlbW9uZGRyXShodHRwczovL2dpdGh1Yi5jb20vZW1vbmRkcikKCiMjIExpY2Vuc2UKCltNSVRdKExJQ0VOU0UpCgpbcmF5bW9uZGZlbmddOiBodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU0MDg5Mj92PTMmcz02MApbcml0Y2hdOiBodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ2MjIyOD92PTMmcz02MApbZGhtbGF1XTogaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNTQ4OTg5Nz92PTMmcz02MApbamFubnlob3VdOiBodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEyNTU0MTUzP3Y9MyZzPTYwCltoYWNrc3BhcnJvd106IGh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTUwMTEyP3Y9MyZzPTYwCltuYWJkZWxnYWRpcl06IGh0dHBzOi8vYXZhdGFyczAuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDI5ODU3NDk/dj0zJnM9NjAKW21hcmlvZXN0cmFkYXJvc2FdOiBodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ2MzM4MjM/dj0zJnM9NjAKW3lhdHldOiBodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExOTgxODAzP3Y9MyZzPTYwCltlbW9uZGRyXTogaHR0cHM6Ly9hdmF0YXJzMC5naXRodWJ1c2VyY29udGVudC5jb20vdS82ODY0NzM2Pz92PTMmcz02MApbYWduZXM1MTJdOiBodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUwMzMxNzk2P3Y9MyZzPTYwCltkZWVwYWtya3Jpc106IGh0dHBzOi8vYXZhdGFyczAuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzY4ODMxNT92PTMmcz02MApbZGVyZGVrYV06IGh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM2NDAxNjY/dj0zJnM9NjAKW2RvdWdhbDgzXTogaHR0cHM6Ly9hdmF0YXJzMC5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNzM1ODgxP3Y9MyZzPTYwClthY2hyaW56YV06IGh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjUxNDc4OTk/dj0zJnM9NjAKW2ZyYnVjZXRhXTogaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzgyMjQzOD92PTQmcz02MApbbXNjaG5lZV06IGh0dHBzOi8vYXZhdGFyczAuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM3NTMxNj92PTQmcz02MApbbWFkYWt5XTogaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNzE3Mjk4OT92PTQmcz02MApbbmZsYWlnXTogaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zODQzNjIyND92PTQmcz02MApbc2FtYXJwYW5iXTogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEzNjIwNDM1P3Y9NCZzPTYwClthYXFpbG5pel06IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNTgwMjkwNj92PTQmcz02MAo= readmeEtag: '"a345b09da793acb478f2d9e663c3863b3356ce15"' readmeLastModified: Fri, 20 Jun 2025 13:44:51 GMT repositoryId: 78452015 description: >- LoopBack makes it easy to build modern API applications that require complex integrations. created: '2017-01-09T17:27:14Z' updated: '2026-02-05T19:27:38Z' language: TypeScript archived: false stars: 5102 watchers: 130 forks: 1066 owner: loopbackio logo: https://avatars.githubusercontent.com/u/22173486?v=4 license: NOASSERTION repoEtag: '"1bee0e3a274d7b7d213b7dbb381cb3f5524f6571923a508d7dc79f62bbf869ab"' repoLastModified: Thu, 05 Feb 2026 19:27:38 GMT foundInMaster: true id: 9132c25ad468bed25b9dbbe3a352abc2 v3: true oldLocations: - https://github.com/strongloop/loopback-next - source: https://openapi.tools/ name: Karate-IDE category: - Converters - Testing - Mock link: https://marketplace.visualstudio.com/items?itemName=KarateIDE.karate-ide repository: https://github.com/zenwave360/karate-ide language: VSCode Extension source_description: >- Generates KarateDSL Tests and Mocks from OpenAPI 3.0 documents and so you can quickly test/explore your API. v3: true v3_1: false id: 3f0c3a748d56c96cc857afa94b46a9e7 repositoryMetadata: base64Readme: >- IyBLYXJhdGUgSURFCgo+IEFmdGVyIG9uZSB5ZWFyICoqS2FyYXRlSURFIGhhdmUgcmVhY2hlZCBWZXJzaW9uIDEuMC4wKiouCj4gVGhlIGJlc3QgdXNlciBleHBlcmllbmNlIGZvciBLYXJhdGVEU0wsIGJ5IGZhciEhCgpLYXJhdGVJREUgaXM6CgotICAgQSAqKlRlc3QgUnVubmVyL0RlYnVnZ2VyKiogYW5kICoqUkVTVCBDbGllbnQqKiB0aGF0IHVzZXMgW0thcmF0ZURTTF0oaHR0cHM6Ly9naXRodWIuY29tL2thcmF0ZWxhYnMva2FyYXRlKSB0byBleHBsb3JlIHlvdXIgQVBJLCBpbXBvcnQvZXhwb3J0IGZyb20gY1VSTCBhbmQgZ2VuZXJhdGUgdGVzdHMvbW9ja3MgZnJvbSBPcGVuQVBJLgotICAgKipPcGVuQVBJIEdlbmVyYXRvcioqIHRoYXQgZ2VuZXJhdGVzOgogICAgLSAgICoqS2FyYXRlIFRlc3RzKiogeW91IGNhbiBpbW1lZGlhdGVseSBydW4sIHdpdGggdmFsaWRhdGlvbiwgaW5saW5lIHBheWxvYWQgZXhhbXBsZXMgYW5kIHNjZW5hcmlvIG91dGxpbmVzIGZvciBlYWNoIHJlc3BvbnNlIGNvZGUgb2YgeW91ciBBUEkuCiAgICAtICAgKipTdGF0ZWZ1bCBNb2NrcyoqOiBjb21iaW5pbmcgT3BlbkFQSSBzY2hlbWFzIGZvciB2YWxpZGF0aW9uIGFuZCBleGFtcGxlcyB0byBsb2FkIG1vY2sgZGF0YXNldHMuCiAgICAtICAgKipNb2NrIFZhbGlkYXRpb24gVGVzdHMqKjogc2ltcGxlciB0ZXN0cyB0byB2YWxpZGF0ZSB5b3VyIG1vY2tzLgogICAgLSAgICoqQnVzaW5lc3MgRmxvdyBUZXN0cyoqOiB5b3UgY2FuIGV2ZW4gZ2VuZXJhdGUgdGVzdHMgdGhhdCBzcGFucyBtdWx0aXBsZSBBUEkgY2FsbHMgcmV1c2luZyBnZW5lcmF0ZWQga2FyYXRlIHRlc3RzCgpLYXJhdGVJREUgaXMgYnkgZmFyIHRoZSBiZXN0IHVzZXIgZXhwZXJpZW5jZSBmb3IgS2FyYXRlRFNMIGFuZCBDb250cmFjdCBUZXN0aW5nISEKCkdldHRpbmcgU3RhcnRlZDoKCi0gICBba2FyYXRlLW9wZW5hcGktcGV0c3RvcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9aZW5XYXZlMzYwL2thcmF0ZS1vcGVuYXBpLXBldHN0b3JlLmdpdCkgY29tcGFuaW9uIHByb2plY3QgZm9yIGEgY29tcGxldGUgZXhhbXBsZSB3aXRoIGF1dG8tZ2VuZXJhdGVkIHRlc3RzLCBtb2NrcywgYnVzaW5lc3MgZmxvdyB0ZXN0cyBhbmQgSlVuaXQgdGVzdHMuCi0gICBLYXJhdGVJREUgW0NsYXNzcGF0aCBDb25maWd1cmF0aW9uXSgja2FyYXRlLWNsYXNzcGF0aCkgc2VjdGlvbiwgZm9yIGNvbmZpZ3VyaW5nIHRoaXMgdnNjb2RlIGV4dGVuc2lvbi4KLSAgIFdhdGNoIEdlbmVyYXRpbmcgS2FyYXRlRFNMIHRlc3RzIGZyb20gT3BlbkFQSSBkZWZpbml0aW9uCgpbIVtLYXJhdGVJREU6IEdlbmVyYXRlIEthcmF0ZURTTCBUZXN0cyBmcm9tIE9wZW5BUEkgaW4gVlNDb2RlXShyZXNvdXJjZXMvc2NyZWVuc2hvdHMvZ2VuZXJhdGluZy10ZXN0cy1mcm9tLW9wZW5hcGkteW91dHViZS1lbWJlZC5wbmcpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PXBZeVJ2bHk0Y0c4KQoKSWYgeW91IGFyZSBpbnRlcmVzdGVkIG9uIGEgZGVlcCBkaXZlIGludG8gQ29udHJhY3QgVGVzdGluZyB3aXRoIEthcmF0ZURTTCwgY2hlY2tvdXQ6CgotICAgW0Zyb20gTWFudWFsIHRvIENvbnRyYWN0IFRlc3Rpbmcgd2l0aCBLYXJhdGVEU0wgYW5kIEthcmF0ZUlERV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BpdmFuZ3NhL2Zyb20tbWFudWFsLXRvLWNvbnRyYWN0LXRlc3Rpbmctd2l0aC1rYXJhdGVkc2wtYW5kLWthcmF0ZWlkZS1pLTU4ODRmMTczMjY4MCkgd2hpdGUgcGFwZXIgaW4gTWVkaXVtICgxNSBtaW4gcmVhZCkKLSAgIFtIaWdoIEZpZGVsaXR5IFN0YXRlZnVsIE1vY2tzIChDb25zdW1lciBDb250cmFjdHMpIHdpdGggT3BlbkFQSSBhbmQgS2FyYXRlRFNMXShodHRwczovL21lZGl1bS5jb20vQGl2YW5nc2EvaGlnaC1maWRlbGl0eS1zdGF0ZWZ1bC1tb2Nrcy1jb25zdW1lci1jb250cmFjdHMtd2l0aC1vcGVuYXBpLWFuZC1rYXJhdGVkc2wtODVhN2YzMWNmODRlKSBNZWRpdW0gYXJ0aWNsZSAoMTAgbWluIHJlYWQpLgoKPCEtLSBUT0MgLS0+CgotIFtLYXJhdGUgSURFXSgja2FyYXRlLWlkZSkKICAtIFtGZWF0dXJlc10oI2ZlYXR1cmVzKQogICAgLSBbQmxhemluZyBGYXN0IHRlc3RzIFN0YXJ0dXBdKCNibGF6aW5nLWZhc3QtdGVzdHMtc3RhcnR1cCkKICAgIC0gW0dlbmVyYXRlIEthcmF0ZSBUZXN0cyBmcm9tIE9wZW5BUEkgZGVmaW5pdGlvbnNdKCNnZW5lcmF0ZS1rYXJhdGUtdGVzdHMtZnJvbS1vcGVuYXBpLWRlZmluaXRpb25zKQogICAgLSBbR2VuZXJhdGUgU3RhdGVmdWwgTW9ja3MgYW5kIFN0YXJ0IHRoZW0gZnJvbSB0aGUgRWRpdG9yIChvciBUZXN0cyBFeHBsb3JlciBzaWRlIGJhcildKCNnZW5lcmF0ZS1zdGF0ZWZ1bC1tb2Nrcy1hbmQtc3RhcnQtdGhlbS1mcm9tLXRoZS1lZGl0b3Itb3ItdGVzdHMtZXhwbG9yZXItc2lkZS1iYXIpCiAgICAtIFtHZW5lcmF0ZSBTaW1wbGVyIFRlc3RzIGZvciBNb2NrIFZhbGlkYXRpb25dKCNnZW5lcmF0ZS1zaW1wbGVyLXRlc3RzLWZvci1tb2NrLXZhbGlkYXRpb24pCiAgICAtIFtHZW5lcmF0ZSBUZXN0cyB0aGF0IHNwYW5zIG11bHRpcGxlIEFQSSBjYWxscyBzaW11bGF0aW5nIEJ1c2luZXNzIEZsb3dzXSgjZ2VuZXJhdGUtdGVzdHMtdGhhdC1zcGFucy1tdWx0aXBsZS1hcGktY2FsbHMtc2ltdWxhdGluZy1idXNpbmVzcy1mbG93cykKICAgIC0gW0dlbmVyYXRlIEthcmF0ZSBQcm9qZWN0XSgjZ2VuZXJhdGUta2FyYXRlLXByb2plY3QpCiAgICAtIFtTbWFydFBhc3RlIHNhbXBsZSBwYXlsb2FkIGludG8gbmV3IGZpbGVzIGluIHNjZW5hcmlvIG91dGxpbmUgZXhhbXBsZXNdKCNzbWFydHBhc3RlLXNhbXBsZS1wYXlsb2FkLWludG8tbmV3LWZpbGVzLWluLXNjZW5hcmlvLW91dGxpbmUtZXhhbXBsZXMpCiAgICAtIFtNYW55IG9wdGlvbnMgdG8gZXhwbG9yZSB5b3VyIGxvZ3MgYW5kIHJlc3BvbnNlIHBheWxvYWRzXSgjbWFueS1vcHRpb25zLXRvLWV4cGxvcmUteW91ci1sb2dzLWFuZC1yZXNwb25zZS1wYXlsb2FkcykKICAgIC0gW1JlcGxhY2luZyBvbGQgVGVzdHMgRXhwbG9yZXIgd2l0aCBuYXRpdmUgX1Rlc3QgQVBJXyBmcm9tIFZTQ29kZV0oI3JlcGxhY2luZy1vbGQtdGVzdHMtZXhwbG9yZXItd2l0aC1uYXRpdmUtdGVzdC1hcGktZnJvbS12c2NvZGUpCiAgICAtIFtBdXRvIENvbmZpZ3VyYXRpb25dKCNhdXRvLWNvbmZpZ3VyYXRpb24pCiAgICAtIFtPcGVuQVBJIHNjaGVtYXMgYW5kIGV4YW1wbGVzIG1lZXRzIEthcmF0ZSBNb2Nrc10oI29wZW5hcGktc2NoZW1hcy1hbmQtZXhhbXBsZXMtbWVldHMta2FyYXRlLW1vY2tzKQogICAgLSBbRGVidWcgS2FyYXRlIFNjcmlwdHNdKCNkZWJ1Zy1rYXJhdGUtc2NyaXB0cykKICAtIFtDb25maWd1cmF0aW9uIE9wdGlvbnNdKCNjb25maWd1cmF0aW9uLW9wdGlvbnMpCiAgICAtIFsudnNjb2RlL2xhdW5jaC5qc29uXSgjdnNjb2RlbGF1bmNoanNvbikKICAgIC0gW0thcmF0ZSBjbGFzc3BhdGhdKCNrYXJhdGUtY2xhc3NwYXRoKQogICAgICAtIFtNYW51YWwgY29uZmlndXJhdGlvbjogVXNpbmcga2FyYXRlLmphciAoS2FyYXRlIGZhdCBqYXIpXSgjbWFudWFsLWNvbmZpZ3VyYXRpb24tdXNpbmcta2FyYXRlamFyLWthcmF0ZS1mYXQtamFyKQogICAgICAtIFtNYW51YWwgY29uZmlndXJhdGlvbjogVXNpbmcgbWF2ZW4gcmVwb3NpdG9yeSBkZXBlbmRlbmNpZXNdKCNtYW51YWwtY29uZmlndXJhdGlvbi11c2luZy1tYXZlbi1yZXBvc2l0b3J5LWRlcGVuZGVuY2llcykKICAgIC0gW1J1bi9EZWJ1ZyBjb21tYW5kIHRlbXBsYXRlc10oI3J1bmRlYnVnLWNvbW1hbmQtdGVtcGxhdGVzKQogICAgLSBbTXVsdGltb2R1bGUgcHJvamVjdHNdKCNtdWx0aW1vZHVsZS1wcm9qZWN0cykKICAtIFtPdGhlciBmdW5jdGlvbmFsaXR5XSgjb3RoZXItZnVuY3Rpb25hbGl0eSkKICAgIC0gW0thcmF0ZS5lbnYgc3dpdGNoZXIsIEthcmF0ZSBPcHRpb25zIGFuZCBNb2NrU2VydmVyIE9wdGlvbnNdKCNrYXJhdGVlbnYtc3dpdGNoZXIta2FyYXRlLW9wdGlvbnMtYW5kLW1vY2tzZXJ2ZXItb3B0aW9ucykKICAgIC0gW1NtYXJ0UGFzdGUgZnJvbSBjVVJMIGluIEthcmF0ZSBmaWxlc10oI3NtYXJ0cGFzdGUtZnJvbS1jdXJsLWluLWthcmF0ZS1maWxlcykKICAgIC0gW0NvZGUgTmF2aWdhdGlvbiBhbmQgRGVmaW5pdGlvbiBQZWVrXSgjY29kZS1uYXZpZ2F0aW9uLWFuZC1kZWZpbml0aW9uLXBlZWspCiAgICAtIFtBdXRvLUNvbXBsZXRpb25dKCNhdXRvLWNvbXBsZXRpb24pCiAgICAtIFtLaWxsIHZzY29kZS5LYXJhdGVUZXN0UHJvY2VzcyBjb21tYW5kXSgja2lsbC12c2NvZGVrYXJhdGV0ZXN0cHJvY2Vzcy1jb21tYW5kKQoKPCEtLSAvVE9DIC0tPgoKIyMgRmVhdHVyZXMKCiMjIyBCbGF6aW5nIEZhc3QgdGVzdHMgU3RhcnR1cAoKU2F2ZSBhIGZldyBzZWNvbmRzIG9uIGVhY2ggdGVzdCBzdGFydHVwIHRpbWUuIFdpdGggYHZzY29kZS5LYXJhdGVUZXN0UHJvY2Vzc2Agd2UgcmV1c2UgdGhlIGphdmEgcHJvY2VzcyBmb3IgcnVubmluZyB5b3VyIEthcmF0ZSB0ZXN0cyBhbmQgZGVidWdnaW5nIHNlc3Npb25zLgoKV2hpbGUgZGV2ZWxvcGluZywgZGVidWdnaW5nIGFuZCBtYW51YWwgZXhwbG9yaW5nIHlvdXIgQVBJcyBzYXZpbmcgYSBmZXcgc2Vjb25kcyBvbiBlYWNoIHJ1biBtYWtlcyBhIGh1Z2UgZGlmZmVyZW5jZSEhCgohW0thcmF0ZS1JREVdKHJlc291cmNlcy9zY3JlZW5zaG90cy9LYXJhcmVJREUtQmxhemluZy1GYXN0LmdpZikKCioqUGxlYXNlIE5vdGU6KiogdGhhdCBjbGFzc3BhdGggcmVzb3VyY2VzIGxpa2UgY29tcGlsZWQgamF2YSBjbGFzc2VzIChhbmQgYWxzbyBsb2diYWNrLnhtbCkgYXJlIGNhY2hlZCBieSB0aGlzIGphdmEgcHJvY2Vzcy4gSWYgeW91IG5lZWQgdG8gcmVmcmVzaCBhbnkgb2YgdGhvc2UgY2FjaGVkIHJlc291Y2VzIGp1c3QgcnVuIGBLYXJhdGVJREU6IFN0b3AvS2lsbCBLYXJhdGUgVGVzdHMvRGVidWcgUHJvY2Vzc2AgZnJvbSBjb21tYW5kIHBhbGV0dGUuCgpJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbnkgdHJvdWJsZSBvciB3YW50IHRvIHJvbGxiYWNrIHRvIHN0YW5kYXJkIHByb2Nlc3MganVzdCBzZXQgYGthcmF0ZUlERS5rYXJhdGVDbGkudXNlS2FyYXRlVGVzdFNlcnZlcmAgc2V0dGluZyB0byBgZmFsc2VgLgoKIyMjIEdlbmVyYXRlIEthcmF0ZSBUZXN0cyBmcm9tIE9wZW5BUEkgZGVmaW5pdGlvbnMKCllvdSBjYW4gZ2VuZXJhdGUgS2FyYXRlIHRlc3RzIGZyb20gT3BlbkFQSSBkZWZpbml0aW9ucyBpbmNsdWRpbmcgb25lIGZlYXR1cmUgcGVyIE9wZW5BUEkgZW5kcG9pbnQuIEVhY2ggZmVhdHVyZSBpbmNsdWRlcyBmb3VyIHNjZW5hcmlvczogb25lIGZvciB2YWxpZGF0aW9uLCBvbmUgZm9yIGh0dHAgY2FsbCwgb25lIGlubGluZSBleGFtcGxlIHBheWxvYWQgeW91IGNhbiBlZGl0IGFuZCBydW4gaW1tZWRpYXRlbHkgYW5kIG9uZSBzY2VuYXJpbyBvdXRsaW5lIGZvciBlYWNoIHJlc3BvbnNlIGNvZGUuCgohW0thcmF0ZS1JREVdKHJlc291cmNlcy9zY3JlZW5zaG90cy9LYXJhdGVJREUtR2VuZXJhdGUtVGVzdHMuZ2lmKQoKVGhpcyBpcyBob3cgb25lIGF1dG9nZW5lcmF0ZWQgZmVhdHVyZSBsb29rcyBsaWtlOgoKIVtLYXJhdGUtSURFXShyZXNvdXJjZXMvc2NyZWVuc2hvdHMvYWRkUGV0LmZlYXR1cmUucG5nKQoKIyMjIEdlbmVyYXRlIFN0YXRlZnVsIE1vY2tzIGFuZCBTdGFydCB0aGVtIGZyb20gdGhlIEVkaXRvciAob3IgVGVzdHMgRXhwbG9yZXIgc2lkZSBiYXIpCgpZb3UgY2FuIGdlbmVyYXRlIHN0YXRlZnVsIG1vY2tzIGZyb20gT3BlbkFQSSBkZWZpbml0aW9uczoKCiFbS2FyYXRlLUlERV0ocmVzb3VyY2VzL3NjcmVlbnNob3RzL0thcmF0ZUlERS1HZW5lcmF0ZS1Nb2Nrcy5naWYpCgojIyMgR2VuZXJhdGUgU2ltcGxlciBUZXN0cyBmb3IgTW9jayBWYWxpZGF0aW9uCgpWYWxpZGF0ZSB5b3VyIG1vY2tzIHdpdGggYSBzZXQgb2Ygc2ltcGxlIGdlbmVyYXRlZCBLYXJhdGUgVGVzdHMuIEJlY2F1c2Ugd2UgZGVsZWdhdGUgcGF5bG9hZCB2YWxpZGF0aW9uIHRvIFtaZW5XYXZlIEFwaU1vY2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9aZW5XYXZlMzYwL3plbndhdmUtYXBpbW9jaykgT3BlbkFQSSB3cmFwcGVyIHRoZXNlIHRlc3RzIGFyZSBtdWNoIHNpbXBsZXIgdGhhbiByZWd1bGFyIEUyRSB0ZXN0cy4KCllvdSBzaG91bGQgYWxzbyB2YWxpZGF0ZSB5b3VyIGxpdmUgQVBJIHdpdGggdGhpcyBzYW1lIHNldCBvZiB0ZXN0cyB0byBtYWtlIHN1cmUgeW91ciBtb2NrcyBhcmUgd29ya2luZyBhcyBleHBlY3RlZC4gU2VlIFtWZXJpZnlNb2Nrc1Rlc3QuamF2YV0oaHR0cHM6Ly9naXRodWIuY29tL1plbldhdmUzNjAva2FyYXRlLW9wZW5hcGktcGV0c3RvcmUvYmxvYi9tYXN0ZXIvc3JjL3Rlc3QvamF2YS9jb20vcGV0c3RvcmUva2FyYXRlL1ZlcmlmeU1vY2tzVGVzdC5qYXZhKSBmb3IgYSBKVW5pdCBleGFtcGxlIHlvdSBjYW4gdXNlIGluIHlvdXIgcGlwZWxpbmUuCgpUaGlzIGlzIGhvdyB5b3UgY2FuIGdlbmVyYXRlIHRoZW0gZnJvbSB5b3VyIE9wZW5BUEkgZGVmaW5pdGlvbjoKCiFbS2FyYXRlLUlERV0ocmVzb3VyY2VzL3NjcmVlbnNob3RzL0thcmF0ZUlERS1WYWxpZGF0ZS1Nb2Nrcy5naWYpCgojIyMgR2VuZXJhdGUgVGVzdHMgdGhhdCBzcGFucyBtdWx0aXBsZSBBUEkgY2FsbHMgc2ltdWxhdGluZyBCdXNpbmVzcyBGbG93cwoKQW5kIHllcywgeW91IGNhbiByZXVzZSB0aGVzZSBrYXJhdGUgZmVhdHVyZXMsIGdlbmVyYXRlZCBmcm9tIE9wZW5BUEksIGFuZCBjb21wb3NlIEJ1c2luZXNzIEZsb3cgdGVzdHMgd2l0aCB0aGVtLiBKdXN0IHNlbGVjdCBpbiBvcmRlciB0aGUgQVBJIGNhbGxzIHlvdSB3YW50IHRvIGNoYWluIGFuZCBSaWdodC1DbGljayB0byBzZWxlY3QgIkthcmF0ZUlERSBHZW5lcmF0ZSBCdXNpbmVzcyBGbG93IFRlc3RzIjoKCiFbS2FyYXRlLUlERV0ocmVzb3VyY2VzL3NjcmVlbnNob3RzL0thcmF0ZUlERS1HZW5lcmF0ZS1CdXNpbmVzc0Zsb3dUZXN0LmdpZikKClRoaXMgaXMgaG93IGFuIGF1dG9nZW5lcmF0ZWQgQ1JVRCB0ZXN0cyBsb29rcyBsaWtlICh3aXRoIHBheWxvYWRzIGNvbGxhcHNlZCBmb3Igc2ltcGxpY2l0eSkuIE5vdyB5b3Ugb25seSBuZWVkIGVkaXQgaG93IHlvdXIgZGF0YSBpcyBjaGFpbmVkIGZyb20gb25lIGNhbGwgdG8gdGhlIG90aGVyIChzZWUgYWxzbyBbUGV0Q1JVRC5mZWF0dXJlXShodHRwczovL2dpdGh1Yi5jb20vWmVuV2F2ZTM2MC9rYXJhdGUtb3BlbmFwaS1wZXRzdG9yZS9ibG9iL21hc3Rlci9zcmMvdGVzdC9yZXNvdXJjZXMvYXBpcy9QZXRBcGkvUGV0Q1JVRC5mZWF0dXJlKSBmb3IgaG93IGEgY29tcGxldGUgd29ya2luZyBleGFtcGxlIGNvbXBhcmVzIHRvIHRoaXMgb25lKToKCiFbS2FyYXRlLUlERV0ocmVzb3VyY2VzL3NjcmVlbnNob3RzL0NSVUQucG5nKQoKIyMjIEdlbmVyYXRlIEthcmF0ZSBQcm9qZWN0CgpJZiB5b3UgYXJlIHN0YXJ0aW5nIGZyb20gc2NyYXRjaCB5b3UgY2FuIGdlbmVyYXRlIGEgZnJlc2gga2FyYXRlIHByb2plY3QgYmFzZSBsaW5lOiB3aXRoIHBvbS54bWwsIGthcmF0ZS1jb25maWcuanMsIGVudmlyb25tZW50IHNwZWNpZmljIGFuZCBjcmVkZW50aWFscyBjb25maWcgZmlsZXMuLi4KCkp1c3QgcnVuIGBLYXJhdGVJREU6IEdlbmVyYXRlIEthcmF0ZSBQcm9qZWN0YCBmcm9tIFZpZXcgPiBDb21tYW5kIFBhbGV0dGUKCiMjIyBTbWFydFBhc3RlIHNhbXBsZSBwYXlsb2FkIGludG8gbmV3IGZpbGVzIGluIHNjZW5hcmlvIG91dGxpbmUgZXhhbXBsZXMKCkNvcHkgc2FtcGxlIHBheWxvYWRzIGFuZCBwYXN0ZSB3aXRoIEN0cmwrU2hpZnQrViBpbnRvIHNjZW5hcmlvIG91dGxpbmUgZXhhbXBsZXMgcm93IF9maWxlbmFtZSBsaWtlXyBjb2x1bW4gYW5kIGFuZCBpdCB3aWxsIGNyZWF0ZSBhIG5ldyBmaWxlICsgZXhhbXBsZSByb3cgZm9yIHlvdS4KCiFbS2FyYXRlLUlERV0ocmVzb3VyY2VzL3NjcmVlbnNob3RzL0thcmF0ZUlERS1QYXN0ZS1OZXdSb3cuZ2lmKQoKIyMjIE1hbnkgb3B0aW9ucyB0byBleHBsb3JlIHlvdXIgbG9ncyBhbmQgcmVzcG9uc2UgcGF5bG9hZHMKCkthcmF0ZUlERSBvZmZlcnMgeW91IG1hbnkgb3B0aW9ucyB0byBleHBsb3JlIHlvdXIgcmVzcG9uc2UgZGF0YSBhbmQgb3V0cHV0IGxvZ3MuIFVzZSBFeGVjdXRpb25zIGFuZCBOZXR3b3JrIExvZ3MgdHJlZSB2aWV3IHRvIGV4cGxvcmUgdGhlbS4KCiFbS2FyYXRlLUlERV0ocmVzb3VyY2VzL3NjcmVlbnNob3RzL0thcmF0ZS1JREUtZGF0YS1hdC15b3VyLWZpbmdlcnByaW50cy5naWYpCgojIyMgUmVwbGFjaW5nIG9sZCBUZXN0cyBFeHBsb3JlciB3aXRoIG5hdGl2ZSBfVGVzdCBBUElfIGZyb20gVlNDb2RlCgpXaXRoIHRoZSBuZXcgVGVzdHMgQVBJLCBWaXN1YWwgU3R1ZGlvIENvZGUgc3VwcG9ydHMgcmljaGVyIGRpc3BsYXlzIG9mIG91dHB1dHMgYW5kIGRpZmZzIHRoYW4gd2FzIHByZXZpb3VzbHkgcG9zc2libGUuIFRoaXMgYnJpbmdzIGEgbG90IG9mIGdvb2RpZXMgdG8geW91ciB1c2VyIGV4cGVyaWVuY2U6CgotICAgQmV0dGVyIGxvb2tpbmcgc3RhbmRhcmQgUnVuL0RlYnVnIHNob3dpbmcgaW4gdGhlIGd1dHRlciAocmVwbGFjaW5nIG9sZCBfY29kZSBsZW5zZXNfKQotICAgVGVzdCBFeHBsb3JlciB2aWV3IGFsbG93cyB5b3UgbmF2aWdhdGUgYW5kIGZpbHRlciB0ZXN0cyBieSBuYW1lLCB0YWdzLCBzdGF0dXMsIGV0Yy4uLiBUbyBmaWx0ZXIgYnkgdGFnIHVzZSBrYXJhdGUgcHJlZml4IGluIHRoaXMgd2F5IGBAa2FyYXRlOkB5b3VydGFnYAotICAgRmFpbGluZyB0ZXN0cyBlcnJvciBtZXNzYWdlcyBhcmUgcHJlc2VudGVkIGluIG11bHRpcGxlIGFuZCB1c2VmdWwgd2F5cyAoYSB0b29sdGlwcywgaW4gdGhlIGd1dHRlciwgaW4gdGhlIHRlc3RzIGV4cGxvcmVyLi4uKQotICAgU3RhcnQgeW91ciBNb2NrIFNlcnZlciBmcm9tIEVkaXRvciBhbmQgVGVzdHMgRXhwbG9yZXIgc2lkZWJhcgoKV2UgYWxzbyBoYXZlIHJlcGxhY2VkIF9nb29kIG9sZF8gdGVybWluYWwgd2l0aCBPdXRwdXQgQ2hhbm5lbHMgZm9yIGdyZWF0ZXIgZGlzcGxheSBmbGV4aWJpbGl0eSBvZiBvdXRwdXQgbG9ncyBhbmQgcmVzcG9uc2UgcGF5bG9hZC4KCiFbS2FyYXRlLUlERV0ocmVzb3VyY2VzL3NjcmVlbnNob3RzL0FQSS1UZXN0cy1FeHBsb3Jlci5naWYpCgojIyMgQXV0byBDb25maWd1cmF0aW9uCgpZb3UgY2FuIGNvbmZpZ3VyZSB0aGlzIGV4dGVuc2lvbiBgY2xhc3NwYXRoIHNldHRpbmdgIGluc3RhbGxpbmcgW0thcmF0ZUlERSBDbGFzc3BhdGggSmFyXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9S2FyYXRlSURFLmthcmF0ZS1jbGFzc3BhdGgtamFyKSBhbmQgcnVubmluZyBgS2FyYXRlSURFOiBDb25maWd1cmUgQ2xhc3NwYXRoYCBmcm9tIENvbW1hbmQgUGFsZXR0ZSAoVmlldyA+IENvbW1hbmQgUGFsZXR0ZSBvciBDdHJsK1NoaWZ0K1ApLgoKS2FyYXRlIElERSBDbGFzc3BhdGggSmFyIHdpbGwgdXBkYXRlIGF1dG9tYXRpY2FsbHkgdG8gbGF0ZXN0IEthcmF0ZSB2ZXJzaW9uLgoKIVtLYXJhdGUtSURFXShyZXNvdXJjZXMvc2NyZWVuc2hvdHMvS2FyYXRlSmFyLWNsYXNzcGF0aC1jb25maWcuZ2lmKQoKRm9yIGZ1cnRoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHNlZSBbQ29uZmlndXJhdGlvbiBTZWN0aW9uXSgjY29uZmlndXJhdGlvbi1vcHRpb25zKQoKIyMjIE9wZW5BUEkgc2NoZW1hcyBhbmQgZXhhbXBsZXMgbWVldHMgS2FyYXRlIE1vY2tzCgpZb3UgY2FuIG5vdzoKCi0gICBMZXZlcmFnZSBPcGVuQVBJIHNjaGVtYXMgYW5kIGV4YW1wbGVzIGZvciByZXF1ZXN0L3Jlc3BvbnNlIHZhbGlkYXRpb24gYW5kIGRlY2xhcmF0aXZlIHN0YXRlbGVzcyBtb2Nrcy4KLSAgIFVzZSBLYXJhdGVEU0wgZm9yIHBvd2VyZnVsIHlldCBzaW1wbGUgc3RhdGVmdWwgbW9ja3MuCi0gICBVc2Ugb3BlbmFwaSBleGFtcGxlcyB0byBwb3B1bGF0ZSB5b3VyIGthcmF0ZSBtb2NrcyBpbml0aWFsIGRhdGEuCgpOYXZpZ2F0ZSB0byBbWmVuV2F2ZSBBcGlNb2NrXShodHRwczovL2dpdGh1Yi5jb20vWmVuV2F2ZTM2MC96ZW53YXZlLWFwaW1vY2spIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhpcyBpbnRlZ3JhdGlvbi4KCiMjIyBEZWJ1ZyBLYXJhdGUgU2NyaXB0cwoKWW91IGNhbiBhbHNvIERlYnVnIEthcmF0ZSBzY3JpcHRzIGluc2lkZSBLYXJhdGVJREUuIEthcmF0ZSBEZWJ1ZyBTZXJ2ZXIgaXMgKipwcm92aWRlZCBieSBrYXJhdGUtY29yZSoqIGFuZCB3ZSBhcmUgYWxzbyBjb250cmlidXRvcnMgdG8uCgpZb3UgY2FuOgoKLSAgIHNldCBicmVha3BvaW50cwotICAgc3RlcC1ieS1zdGVwIGRlYnVnZ2luZwotICAgbmF2aWdhdGUgc2NlbmFyaW8gY2FsbCBzdGFjayB3aXRoIHRoZWlyIHZhcmlhYmxlcwotICAgaW5zcGVjdCBhbmQgY29weSB2YXJpYWJsZXMsIHZhbHVlcyBvciB0aGVpciBqc29uIHBhdGggZXhwcmVzc2lvbgotICAgaW50ZXJhY3RpdmUgZGVidWcgY29uc29sZSB3aGVyZSB5b3UgY2FuIHByaW50LCB1cGRhdGUgdmFyaWFibGUgdmFsdWVzIG9yIHRlc3QganNvblBhdGggZXhwcmVzc2lvbnMKLSAgIGhvdCByZWxvYWRpbmcgKHdpdGggY2F2ZWF0cykKCmh0dHBzOi8vdHdpdHRlci5jb20vS2FyYXRlRFNML3N0YXR1cy8xMTY3NTMzNDg0NTYwMTQyMzM2CgojIyBDb25maWd1cmF0aW9uIE9wdGlvbnMKCiMjIyAudnNjb2RlL2xhdW5jaC5qc29uCgpXaGVuIHlvdSBjbGljayBgS2FyYXRlIERlYnVnYCBmb3IgdGhlIGZpcnN0IHRpbWUgaWYgYC52c2NvZGUvbGF1bmNoLmpzYCBkb2VzIG5vdCBleGlzdCBvbmUgd2lsbCBiZSBjcmVhdGVkIGZvciB5b3Ugd2l0aCB0aGlzIGNvbnRlbnRzLiBUaGlzIGlzIGEgb25lIHRpbWUgc3RlcCwgYWZ0ZXIgdGhpcyBmaWxlIGlzIGNyZWF0ZWQgeW91IGNhbiBzdGFydCBkZWJ1Z2dpbmcgbm9ybWFsbHkuCgpgYGBqc29uCnsKICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKICAgICJjb25maWd1cmF0aW9ucyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImthcmF0ZS1pZGUiLAogICAgICAgICAgICAibmFtZSI6ICJLYXJhdGUgSURFIChkZWJ1ZykiLAogICAgICAgICAgICAicmVxdWVzdCI6ICJsYXVuY2giCiAgICAgICAgfQogICAgXQp9CmBgYAoKIyMjIEthcmF0ZSBjbGFzc3BhdGgKCllvdSBoYXZlIGN1cnJlbnRseSB0aHJlZSBvcHRpb25zOiBJbnN0YWxsIFtLYXJhdGVJREUgQ2xhc3NwYXRoIEphciBleHRlbnNpb25dKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1LYXJhdGVJREUua2FyYXRlLWNsYXNzcGF0aC1qYXIpLCBtYW51YWxseSBkb3dubG9hZCBLYXJhdGUgImZhdCIgamFyIGZyb20gW0thcmF0ZSBSZWxlYXNlXShodHRwczovL2dpdGh1Yi5jb20vaW50dWl0L2thcmF0ZS9yZWxlYXNlcykgb3IgcmV1c2UgbG9jYWwgbWF2ZW4gcmVwbyBhcnRpZmFjdHMuCgpJZiB1bnN1cmUganVzdCBpbnN0YWxsIFtLYXJhdGVJREUgQ2xhc3NwYXRoIEphciBleHRlbnNpb25dKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1LYXJhdGVJREUua2FyYXRlLWNsYXNzcGF0aC1qYXIpIGFzIGl0IHdpbGwgYXV0b21hdGljYWxseSB1cGdyYWRlIHRvIGVhY2ggbGF0ZXN0IGthcmF0ZSB2ZXJzaW9uLgoKUGxlYXNlIHVzZSBgS2FyYXRlSURFOiBDb25maWd1cmUgQ2xhc3NwYXRoYCBjb21tYW5kIGZyb20gQ29tbWFuZCBQYWxldHRlIChWaWV3ID4gQ29tbWFuZCBQYWxldHRlIG9yIEN0cmwrU2hpZnQrUCkgZm9yIGNvbmZpZ3VyaW5nIHlvdXIgY2xhc3NwYXRoLgoKS2FyYXRlLUlERSB3aWxsIGhvbm9yIHlvdXIgY2xhc3NwYXRoIHNldHRpbmdzIHdoZW4gYXV0b2NvbXBsZXRpb24gYW5kIG5hdmlnYXRpbmcvcGVla2luZyBjb2RlIHdpdGggYGNsYXNzcGF0aDpgIHByZWZpeC4KCiMjIyMgTWFudWFsIGNvbmZpZ3VyYXRpb246IFVzaW5nIGthcmF0ZS5qYXIgKEthcmF0ZSBmYXQgamFyKQoKYGBganNvbgp7CiAgICAia2FyYXRlSURFLmthcmF0ZUNsaS5jbGFzc3BhdGgiOiAic3JjL3Rlc3QvcmVzb3VyY2VzOzxwYXRoIHRvIHlvdXIgZmlsZT4va2FyYXRlLmphciIKfQpgYGAKCiMjIyMgTWFudWFsIGNvbmZpZ3VyYXRpb246IFVzaW5nIG1hdmVuIHJlcG9zaXRvcnkgZGVwZW5kZW5jaWVzCgpJZiB5b3UgYXJlIGFscmVhZHkgdXNpbmcgbWF2ZW4gYW5kIGthcmF0ZSBkZXBlbmRlbmNpZXMgYXJlIGFscmVhZHkgcHJlc2VudCBpbiB5b3VyIG1hdmVuIGxvY2FsIHJlcG9zaXRvcnkuIEthcmF0ZUlERSB3aWxsIHJlcGxhY2UgYCR7bTIucmVwb31gIHdpdGggdGhlIHZhbHVlIG9mIGAke2hvbWV9Ly5tMi9yZXBvc2l0b3J5YCBvciBgJHtNQVZFTl9IT01FfS8ubTIvcmVwb3NpdG9yeWAgaWYgYE1BVkVOX0hPTUVgIGVudiB2YXJpYWJsZSBpcyBhdmFpbGFibGUsIGJ1dCB5b3UgY2FuIGNvbmZpZ3VyZSBga2FyYXRlSURFLmthcmF0ZUNsaS5tMlJlcG9gIHNldHRpbmcgdG8gYSBkaWZmZXJlbnQgZm9sZGVyLgoKYGBganNvbgp7CiAgICAvLyBmdWxsIGNsYXNzcGF0aCBleGFtcGxlIGZvciBmb3Iga2FyYXRlIDEuMS4wIHZlcnNpb24gaW4gd2luZG93cwogICAgImthcmF0ZUlERS5rYXJhdGVDbGkuY2xhc3NwYXRoIjogInNyYy90ZXN0L2phdmE7c3JjL3Rlc3QvcmVzb3VyY2VzO3RhcmdldC9jbGFzc2VzO3RhcmdldC90ZXN0LWNsYXNzZXM7JHttMi5yZXBvfS9jb20vaW50dWl0L2thcmF0ZS9rYXJhdGUtY29yZS8xLjEuMC9rYXJhdGUtY29yZS0xLjEuMC5qYXI7JHttMi5yZXBvfS9vcmcvZ3JhYWx2bS9qcy9qcy1zY3JpcHRlbmdpbmUvMjEuMi4wL2pzLXNjcmlwdGVuZ2luZS0yMS4yLjAuamFyOyR7bTIucmVwb30vb3JnL2dyYWFsdm0vc2RrL2dyYWFsLXNkay8yMS4yLjAvZ3JhYWwtc2RrLTIxLjIuMC5qYXI7JHttMi5yZXBvfS9vcmcvZ3JhYWx2bS9qcy9qcy8yMS4yLjAvanMtMjEuMi4wLmphcjske20yLnJlcG99L29yZy9ncmFhbHZtL3JlZ2V4L3JlZ2V4LzIxLjIuMC9yZWdleC0yMS4yLjAuamFyOyR7bTIucmVwb30vb3JnL2dyYWFsdm0vdHJ1ZmZsZS90cnVmZmxlLWFwaS8yMS4yLjAvdHJ1ZmZsZS1hcGktMjEuMi4wLmphcjske20yLnJlcG99L2NvbS9pYm0vaWN1L2ljdTRqLzY5LjEvaWN1NGotNjkuMS5qYXI7JHttMi5yZXBvfS9jaC9xb3MvbG9nYmFjay9sb2diYWNrLWNsYXNzaWMvMS4yLjMvbG9nYmFjay1jbGFzc2ljLTEuMi4zLmphcjske20yLnJlcG99L2NoL3Fvcy9sb2diYWNrL2xvZ2JhY2stY29yZS8xLjIuMy9sb2diYWNrLWNvcmUtMS4yLjMuamFyOyR7bTIucmVwb30vb3JnL3NsZjRqL3NsZjRqLWFwaS8xLjcuMjUvc2xmNGotYXBpLTEuNy4yNS5qYXI7JHttMi5yZXBvfS9vcmcvc2xmNGovamNsLW92ZXItc2xmNGovMS43LjI1L2pjbC1vdmVyLXNsZjRqLTEuNy4yNS5qYXI7JHttMi5yZXBvfS9jb20vamF5d2F5L2pzb25wYXRoL2pzb24tcGF0aC8yLjYuMC9qc29uLXBhdGgtMi42LjAuamFyOyR7bTIucmVwb30vbmV0L21pbmlkZXYvanNvbi1zbWFydC8yLjQuNy9qc29uLXNtYXJ0LTIuNC43Lmphcjske20yLnJlcG99L25ldC9taW5pZGV2L2FjY2Vzc29ycy1zbWFydC8yLjQuNy9hY2Nlc3NvcnMtc21hcnQtMi40LjcuamFyOyR7bTIucmVwb30vb3JnL293Mi9hc20vYXNtLzkuMS9hc20tOS4xLmphcjske20yLnJlcG99L2luZm8vY3VrZXMvY3VjdW1iZXItamF2YS8xLjIuNS9jdWN1bWJlci1qYXZhLTEuMi41Lmphcjske20yLnJlcG99L2luZm8vY3VrZXMvY3VjdW1iZXItY29yZS8xLjIuNS9jdWN1bWJlci1jb3JlLTEuMi41Lmphcjske20yLnJlcG99L29yZy95YW1sL3NuYWtleWFtbC8xLjI5L3NuYWtleWFtbC0xLjI5Lmphcjske20yLnJlcG99L2RlL3NpZWdtYXIvZmFzdGNzdi8yLjAuMC9mYXN0Y3N2LTIuMC4wLmphcjske20yLnJlcG99L2luZm8vcGljb2NsaS9waWNvY2xpLzQuNi4xL3BpY29jbGktNC42LjEuamFyIgp9CmBgYAoKSWYgeW91IG5lZWQgdG8gYWRkICoqZXh0cmEgY2xhc3NwYXRoIGphcnMqKiB5b3UgY2FuIHVzZSBgbXZuIGRlcGVuZGVuY3k6YnVpbGQtY2xhc3NwYXRoYCBmb3IgZ2VuZXJhdGluZyBhIGNvbXBhdGlibGUgZXh0ZW5kZWQgY2xhc3NwYXRoLgoKIyMjIFJ1bi9EZWJ1ZyBjb21tYW5kIHRlbXBsYXRlcwoKRm9yIGFkdmFuY2VkIHVzZXJzLCBLYXJhdGUtSURFIG9mZmVycyBfdGVtcGxhdGVfIGJhc2VkIGNvbmZpZ3VyYXRpb25zIGZvciBib3RoIFJ1biBhbmQgRGVidWcgY29tbWFuZHMuIFZhcmlhYmxlcyB3aXRoIF8ke31fIHdpbGwgYmUgcmVwbGFjZWQgYnkgS2FyYXRlSURFIHJ1bnRpbWUgd2l0aCBhY3R1YWwgdmFsdWVzLgoKYGBganNvbgp7CiAgICAia2FyYXRlSURFLmthcmF0ZUNsaS5ydW5Db21tYW5kVGVtcGxhdGUiOiAiamF2YSAnLURrYXJhdGUuZW52PSR7a2FyYXRlRW52fScgJy1EdnNjb2RlLnBvcnQ9JHt2c2NvZGVQb3J0fScgLWNwICcke2NsYXNzcGF0aH0nIGNvbS5pbnR1aXQua2FyYXRlLk1haW4gJHtrYXJhdGVPcHRpb25zfSAnJHtmZWF0dXJlfSciLAogICAgImthcmF0ZUlERS5rYXJhdGVDbGkuZGVidWdDb21tYW5kVGVtcGxhdGUiOiAiamF2YSAnLURrYXJhdGUuZW52PSR7a2FyYXRlRW52fScgJy1EdnNjb2RlLnBvcnQ9JHt2c2NvZGVQb3J0fScgLWNwICcke2NsYXNzcGF0aH0nIGNvbS5pbnR1aXQua2FyYXRlLk1haW4gLWQiCn0KYGBgCgojIyMgTXVsdGltb2R1bGUgcHJvamVjdHMKCkZvciBtdWx0aW1vZHVsZSBwcm9qZWN0LCB5b3UgbWF5IG5lZWQgdG8gY29uZmlndXJlIGBrYXJhdGVJREUubXVsdGltb2R1bGUucm9vdE1vZHVsZU1hcmtlckZpbGVgLiBVc2UgcG9tLnhtbCwgYnVpbGQuZ3JhZGxlLCBwYWNrYWdlLmpzb24gb3IgYW55IG90aGVyIGZpbGUgdGhhdCBzaXRzIG9uIHRoZSByb290IG9mIGVhY2ggbW9kdWxlLgoKS2FyYXRlIGphdmEgcHJvY2VzcyB3aWxsIGJlIHN0YXJ0ZWQgb24gdGhhdCBmb2xkZXIgKGZpcnN0IHBhcmVudCBmb2xkZXIgb2YgY3VycmVudCBmZWF0dXJlIGZpbGUgY29udGFpbmluZyBhIG1hcmtlciBmaWxlKSBzbyBjbGFzc3BhdGggd2lsbCBiZSByZWxhdGl2ZSB0byB0aGF0IGZvbGRlci4KCiMjIE90aGVyIGZ1bmN0aW9uYWxpdHkKCiMjIyBLYXJhdGUuZW52IHN3aXRjaGVyLCBLYXJhdGUgT3B0aW9ucyBhbmQgTW9ja1NlcnZlciBPcHRpb25zCgpZb3UgY2FuIHN3aXRjaCBga2FyYXRlLmVudmAsIEthcmF0ZSBvcHRpb25zIGFuZCBNb2NrU2VydmVyIG9wdGlvbnMgZnJvbSBFeGVjdXRpb25zIFZpZXcgdGl0bGUgYmFyLiBXaGVuIHVzaW5nIEthcmF0ZS1JREUgZm9yIG1hbnVhbCB0ZXN0aW5nIG9yIGV4cGxvcmluZyBBUElzIHlvdSB3aWxsIGZpbmQgdmVyeSBoYW5keSB0aGlzIG9wdGlvbnMgc3dpdGNoZXIuCgohW0thcmF0ZS1JREUgT3B0aW9ucyBCdXR0b25zXShyZXNvdXJjZXMvc2NyZWVuc2hvdHMvb3B0aW9ucy5wbmcpCgojIyMgU21hcnRQYXN0ZSBmcm9tIGNVUkwgaW4gS2FyYXRlIGZpbGVzCgohW0thcmF0ZS1JREVdKHJlc291cmNlcy9zY3JlZW5zaG90cy9LYXJhdGVJREUtU21hcnRQYXN0ZV9Gcm9tX0N1cmwuZ2lmKQoKIyMjIENvZGUgTmF2aWdhdGlvbiBhbmQgRGVmaW5pdGlvbiBQZWVrCgpZb3UgY2FuIG5hdmlnYXRlIGJldHdlZW4gZmlsZXMsIGZlYXR1cmVzIGFuZCBzY2VuYXJpbyBAdGFncyB1c2luZyBgQ29udHJvbC1DbGlja2Agb3IgX3BlZWtfIGRlZmluaXRpb25zIHdpdGggYEFsdCtGMTJgCgpZb3UgY2FuIGFsc28gbmF2aWdhdGUgdG8gc2NlbmFyaW9zIGJ5IF9AdGFnXyBpbiB0aGUgc2FtZSBvciBpbiBkaWZmZXJlbnQgZmVhdHVyZSBmaWxlLgoKSXQgaG9ub3JzIHlvdXIgW2NsYXNzcGF0aF0oI2thcmF0ZS1jbGFzc3BhdGgpIHNldHRpbmcgd2hlbiBuYXZpZ2F0aW5nIHRvIGZpbGVzIHdpdGggYGNsYXNzcGF0aDpgIHByZWZpeC4KCiMjIyBBdXRvLUNvbXBsZXRpb24KCldoZW4gcmVhZGluZyB5bWwvanNvbiBmaWxlcyBhcmUgY2FsbGluZyBvdGhlciBmZWF0dXJlcyB5b3UgY2FuIGF1dG9jb21wbGV0ZSB0aGVpciBuYW1lcyB3aXRoIHRlaCBsaXN0IG9mIGxvY2FsIGFuZCBjbGFzc3BhdGggZmlsZXMuCgpJdCBob25vcnMgeW91ciBbY2xhc3NwYXRoXSgja2FyYXRlLWNsYXNzcGF0aCkgc2V0dGluZyB3aGVuIG5hdmlnYXRpbmcgdG8gZmlsZXMgd2l0aCBgY2xhc3NwYXRoOmAgcHJlZml4LgoKIyMjIEtpbGwgdnNjb2RlLkthcmF0ZVRlc3RQcm9jZXNzIGNvbW1hbmQKCklmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIHRyb3VibGUgd2l0aCB2c2NvZGUuS2FyYXRlVGVzdFByb2Nlc3MgeW91IGNhbiBhbHdheXMgcnVuIGNvbW1hbmQgYFN0b3AvS2lsbCBLYXJhdGUgVGVzdHMvRGVidWcgUHJvY2Vzc2AgdG8gc3RvcCBhIG1pc2JlaGF2aW5nIHByb2Nlc3MsIGZyb20gYFZpZXcgPiBDb21tYW5kIFBhbGV0dGVgIG9yIGp1c3QgYEN0cmwrUGAuCgoqKkVuam95ISoqCg== readmeEtag: '"a7710b0d11187d4baaf42b075671319a77d88c75"' readmeLastModified: Wed, 14 Aug 2024 09:23:39 GMT repositoryId: 318240592 description: The Best OpenSource IDE for KarateDSL. created: '2020-12-03T15:41:05Z' updated: '2025-11-10T16:47:49Z' language: TypeScript archived: false stars: 14 watchers: 3 forks: 5 owner: ZenWave360 logo: https://avatars.githubusercontent.com/u/93670347?v=4 license: NOASSERTION repoEtag: '"73adf228392abbf7ef9e2111a55b47b63df3d8bdc9501f94cc6c35258d757e89"' repoLastModified: Mon, 10 Nov 2025 16:47:49 GMT foundInMaster: true oldLocations: - https://github.com/ivangsa/karate-ide - source: https://openapi.tools/ name: RESTler category: - Security - Testing language: Any repository: https://github.com/microsoft/restler-fuzzer source_description: >- RESTler is the first stateful REST API fuzzing tool for automatically testing cloud services through their REST APIs and finding security and reliability bugs in these services. RESTler analyzes the OpenAPI description of a cloud service, and then generates and executes tests that exercise the service through its REST API. During testing, it checks for specific classes of bugs and dynamically learns how the service behaves from prior service responses. v2: true v3: true id: 90727a339634b533b35035d035eb4316 repositoryMetadata: base64Readme: >- IyBSRVNUbGVyCgojIyBXaGF0IGlzIFJFU1RsZXI/CgpSRVNUbGVyIGlzIHRoZSAqZmlyc3Qgc3RhdGVmdWwgUkVTVCBBUEkgZnV6emluZyB0b29sKiBmb3IgYXV0b21hdGljYWxseQp0ZXN0aW5nIGNsb3VkIHNlcnZpY2VzIHRocm91Z2ggdGhlaXIgUkVTVCBBUElzIGFuZCBmaW5kaW5nIHNlY3VyaXR5IGFuZApyZWxpYWJpbGl0eSBidWdzIGluIHRoZXNlIHNlcnZpY2VzLiBGb3IgYSBnaXZlbiBjbG91ZCBzZXJ2aWNlCndpdGggYW4gT3BlbkFQSSAoZm9ybWVybHkgU3dhZ2dlcikgc3BlY2lmaWNhdGlvbiwgUkVTVGxlciBhbmFseXplcyBpdHMgZW50aXJlIHNwZWNpZmljYXRpb24sCmFuZCB0aGVuIGdlbmVyYXRlcyBhbmQgZXhlY3V0ZXMgdGVzdHMgdGhhdCBleGVyY2lzZSB0aGUgc2VydmljZSB0aHJvdWdoIGl0cyBSRVNUIEFQSS4KClJFU1RsZXIgaW50ZWxsaWdlbnRseSBpbmZlcnMgcHJvZHVjZXItY29uc3VtZXIgZGVwZW5kZW5jaWVzIGFtb25nIHJlcXVlc3QgdHlwZXMgZnJvbSB0aGUgT3BlbkFQSSBkZWZpbml0aW9uLgpEdXJpbmcgdGVzdGluZywgaXQgY2hlY2tzIGZvciBzcGVjaWZpYyBjbGFzc2VzIG9mIGJ1Z3MKYW5kIGR5bmFtaWNhbGx5IGxlYXJucyBob3cgdGhlIHNlcnZpY2UgYmVoYXZlcyBmcm9tIHByaW9yIHNlcnZpY2UgcmVzcG9uc2VzLgpUaGlzIGludGVsbGlnZW5jZSBhbGxvd3MgUkVTVGxlciB0byBleHBsb3JlIGRlZXBlciBzZXJ2aWNlIHN0YXRlcwpyZWFjaGFibGUgb25seSB0aHJvdWdoIHNwZWNpZmljIHJlcXVlc3Qgc2VxdWVuY2VzIGFuZCB0byBmaW5kIG1vcmUgYnVncy4KClJFU1RsZXIgaXMgZGVzY3JpYmVkIGluIHRoZXNlIHBlZXItcmV2aWV3ZWQgcmVzZWFyY2ggcGFwZXJzOgoKMS4gW1JFU1RsZXI6IFN0YXRlZnVsIFJFU1QgQVBJIEZ1enppbmddKGh0dHBzOi8vcGF0cmljZWdvZGVmcm9pZC5naXRodWIuaW8vcHVibGljX3BzZmlsZXMvaWNzZTIwMTkucGRmKSAoSUNTRScyMDE5KQoyLiBbQ2hlY2tpbmcgU2VjdXJpdHkgUHJvcGVydGllcyBvZiBDbG91ZCBTZXJ2aWNlIFJFU1QgQVBJc10oaHR0cHM6Ly9wYXRyaWNlZ29kZWZyb2lkLmdpdGh1Yi5pby9wdWJsaWNfcHNmaWxlcy9pY3N0MjAyMC5wZGYpIChJQ1NUJzIwMjApCjMuIFtEaWZmZXJlbnRpYWwgUmVncmVzc2lvbiBUZXN0aW5nIGZvciBSRVNUIEFQSXPigItdKGh0dHBzOi8vcGF0cmljZWdvZGVmcm9pZC5naXRodWIuaW8vcHVibGljX3BzZmlsZXMvaXNzdGEyMDIwLnBkZikgKElTU1RBJzIwMjApCjQuIFtJbnRlbGxpZ2VudCBSRVNUIEFQSSBEYXRhIEZ1enppbmfigIvigItdKGh0dHBzOi8vcGF0cmljZWdvZGVmcm9pZC5naXRodWIuaW8vcHVibGljX3BzZmlsZXMvZnNlMjAyMC5wZGYpIChGU0UnMjAyMCkKCklmIHlvdSB1c2UgUkVTVGxlciBpbiB5b3VyIHJlc2VhcmNoLCBwbGVhc2UgY2l0ZSB0aGUgKGRlZmF1bHQpIElDU0UnMjAxOSBwYXBlciAoW0JpYlRlWF0oLi9kb2NzL3VzZXItZ3VpZGUvaWNzZTIwMTkuYmliKSkuCgpSRVNUbGVyIGluY2x1ZGVzIG11bHRpcGxlIHRlc3QgZ2VuZXJhdGlvbiBzdHJhdGVnaWVzLiAgSW4gb3JkZXIgdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSBjb21wYXJhdGl2ZSB2aWV3IHcuci50LiB0byAoaSkgZWZmaWNpZW5jeSAKKGkuZS4sIGhvdyBxdWlja2x5IGNhbiBSRVNUbGVyIGZpbmQgY3Jhc2hlcykgYW5kIChpaSkgZWZmZWN0aXZlbmVzcyAKKGkuZS4sIGhvdyBtYW55IGNyYXNoZXMgY2FuIFJFU1RsZXIgZmluZCBpbiBhIGdpdmUgdGltZSBmcmFtZSksIAp3ZSByZWNvbW1lbmQgY29tcGFyaW5nIGFnYWluc3QgYWxsIGRvY3VtZW50ZWQgYGZ1enppbmdfbW9kZShzKWAKYmVjYXVzZSBlYWNoIG9uZSBwcm92aWRlcyBhIGRpZmZlcmVudCB0cmFkZS1vZmYgYmV0d2VlbiBicmVhZHRoIGFuZCBkZXB0aCBvZiBzdGF0ZSBzcGFjZSBleHBsb3JhdGlvbi4KV2UgYWxzbyByZWNvbW1lbmQgcnVubmluZyBgdGVzdGAgbW9kZSBiZWZvcmUgYW55IGZ1enppbmcsIGFzIGRlc2NyaWJlZCBiZWxvdywgCnRvIGRpc2NvdmVyIGFuZCBmaXggc2V0dXAgaXNzdWVzIChlLmcuIGFkZGluZyByZXF1aXJlZCBwcmUtcmVxdWlzaXRlIHBhcmFtZXRlciB2YWx1ZXMgdG8gdGhlIGRpY3Rpb25hcnkpIHByaW9yIHRvIGZ1enppbmcuCgpSRVNUbGVyIHdhcyBjcmVhdGVkIGF0IE1pY3Jvc29mdCBSZXNlYXJjaCBhbmQgaXMgc3RpbGwgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LgoKRm9yIGFuIG92ZXJ2aWV3IGFuZCBkZW1vIG9uIGhvdyB0byBnZXQgc3RhcnRlZCwgc2VlIFtXZWJpbmFyIC0gRnV6emluZyB0byBJbXByb3ZlIHRoZSBTZWN1cml0eSBhbmQgUmVsaWFiaWxpdHkgb2YgQ2xvdWQgU2VydmljZXNdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9RlltaVBvUndFYkUpLgoKIVtSRVNUbGVyIGFyY2hpdGVjdHVyZV0oLi9kb2NzL3VzZXItZ3VpZGUvUkVTVGxlci1hcmNoLnBuZykKCgojIyBCdWlsZCBTdGF0dXMKClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9kZXYuYXp1cmUuY29tL21zL3Jlc3RsZXItZnV6emVyL19hcGlzL2J1aWxkL3N0YXR1cy9yZXN0bGVyLWJ1aWxkLXZhbGlkYXRpb24/YnJhbmNoTmFtZT1tYWluKV0oaHR0cHM6Ly9kZXYuYXp1cmUuY29tL21zL3Jlc3RsZXItZnV6emVyL19idWlsZC9sYXRlc3Q/ZGVmaW5pdGlvbklkPTQyMiZicmFuY2hOYW1lPW1haW4pCgoKIyMgU2V0dGluZyB1cCBSRVNUbGVyCgpSRVNUbGVyIHdhcyBkZXNpZ25lZCB0byBydW4gb24gNjQtYml0IG1hY2hpbmVzIHdpdGggV2luZG93cyBvciBMaW51eC4gIEV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBtYWNPUyBpcyBhbHNvIGVuYWJsZWQuCgojIyMgKipCdWlsZCBpbnN0cnVjdGlvbnMqKgoKIyMjIyBEb2NrZXIKCkluIHRoZSByb290IG9mIHRoaXMgcmVwbywgcnVuCgpgYGBzaGVsbApkb2NrZXIgYnVpbGQgLXQgcmVzdGxlciAuCmBgYAoKVGhlIHJlc3VsdGluZyBkb2NrZXIgY29udGFpbmVyIHdpbGwgaGF2ZSBSRVNUbGVyIGF2YWlsYWJsZSBpbiBkaXJlY3RvcnkgYC9SRVNUbGVyL3Jlc3RsZXJgIHdpdGggbWFpbiBiaW5hcnkgYFJlc3RsZXJgLiAKCllvdSBjYW4gdGhlbiB1c2UgdGhpcyBkb2NrZXIgaW1hZ2UgYXMgYmFzaXMgdG8gYWRkIHRoZSBhcHBsaWNhdGlvbiB1bmRlciB0ZXN0IHRvIGV4ZWN1dGUgZnV6emluZyBpbnNpZGUgaXNvbGF0ZWQgZG9ja2VyIGNvbnRhaW5lcnMuCgojIyMjIExvY2FsCgpQcmVyZXF1aXNpdGVzOiBJbnN0YWxsIFtQeXRob24gMy4xMi44XShodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy8pIGFuZApbLk5FVCA4LjBdKGh0dHBzOi8vZG90bmV0Lm1pY3Jvc29mdC5jb20vZG93bmxvYWQvZG90bmV0LWNvcmU/dXRtX3NvdXJjZT1nZXRkb3RuZXRjb3JlY2xpJnV0bV9tZWRpdW09cmVmZXJyYWwpLCBmb3IgeW91ciBhcHByb3ByaWF0ZSBPUy4KCkNyZWF0ZSBhIGRpcmVjdG9yeSB3aGVyZSB5b3UnZCBsaWtlIHRvIHBsYWNlIHRoZSBSRVNUbGVyIGJpbmFyaWVzOgoKYGBgbWtkaXIgcmVzdGxlcl9iaW5gYGAKClN3aXRjaCB0byB0aGUgcmVwbyByb290IGRpcmVjdG9yeSBhbmQgcnVuIHRoZSBmb2xsb3dpbmcgUHl0aG9uIHNjcmlwdDoKCmBgYHB5dGhvbiAuL2J1aWxkLXJlc3RsZXIucHkgLS1kZXN0X2RpciA8ZnVsbCBwYXRoIHRvIHJlc3RsZXJfYmluIGFib3ZlPmBgYAoKTm90ZTogaWYgeW91IGdldCBudWdldCBlcnJvciBOVTE0MDMgd2hlbiBidWlsZGluZywgYSBxdWljayB3b3JrYXJvdW5kIGlzIHRvIGNsZWFyIHlvdXIgY2FjaGUgd2l0aCB0aGlzIGNvbW1hbmQKCmBgYGRvdG5ldCBudWdldCBsb2NhbHMgYWxsIC0tY2xlYXJgYGAKCgojIyBVc2luZyBSRVNUbGVyCgpSRVNUbGVyIHJ1bnMgaW4gNCBtYWluIG1vZGVzIChpbiBvcmRlcik6CgoxLiAqKkNvbXBpbGU6KiogZnJvbSBhbiBPcGVuQVBJIEpTT04gb3IgWUFNTCBkZWZpbml0aW9uIChhbmQgb3B0aW9uYWxseSBleGFtcGxlcyksIGdlbmVyYXRlIGEgUkVTVGxlciBncmFtbWFyLiBTZWUgW0NvbXBpbGluZ10oLi9kb2NzL3VzZXItZ3VpZGUvQ29tcGlsaW5nLm1kKS4KMi4gKipUZXN0OioqIGV4ZWN1dGUgcXVpY2tseSBhbGwgb2YgdGhlIGVuZHBvaW50cyttZXRob2RzIGluIGEgY29tcGlsZWQgUkVTVGxlciBncmFtbWFyIGZvciBkZWJ1Z2dpbmcgdGhlIHRlc3Qgc2V0dXAgYW5kIGNvbXB1dGUgd2hhdCBwYXJ0cyBvZiB0aGUgT3BlbkFQSSBkZWZpbml0aW9uIGFyZSBjb3ZlcmVkLiBUaGlzIG1vZGUgaXMgYWxzbyBjYWxsZWQgYSAqc21va2V0ZXN0Ki4KU2VlIFtUZXN0aW5nXSguL2RvY3MvdXNlci1ndWlkZS9UZXN0aW5nLm1kKS4gVG8gdXNlIGN1c3RvbSB0ZXN0IGVuZ2luZSBzZXR0aW5ncywgc2VlIFtUZXN0IEVuZ2luZSBTZXR0aW5nc10oLi9kb2NzL3VzZXItZ3VpZGUvU2V0dGluZ3NGaWxlLm1kKS4KMy4gKipGdXp6LWxlYW46KiogZXhlY3V0ZSBvbmNlIGV2ZXJ5IGVuZHBvaW50K21ldGhvZCBpbiBhIGNvbXBpbGVkIFJFU1RsZXIgZ3JhbW1hciB3aXRoIGEgZGVmYXVsdCBzZXQgb2YgY2hlY2tlcnMgdG8gc2VlIGlmIGJ1Z3MgY2FuIGJlIGZvdW5kIHF1aWNrbHkuIFNlZSBbRnV6emluZ10oLi9kb2NzL3VzZXItZ3VpZGUvRnV6emluZy5tZCkuCjQuICoqRnV6ejoqKiBidWcgaHVudGluZyAtIGV4cGxvcmUgYSBSRVNUbGVyIGZ1enppbmcgZ3JhbW1hciBpbiBzbWFydCBicmVhZHRoLWZpcnN0LXNlYXJjaCBtb2RlIChkZWVwZXIgc2VhcmNoIG1vZGUpIGZvciBmaW5kaW5nIG1vcmUgYnVncy4KKipXYXJuaW5nOioqIFRoaXMgdHlwZSBvZiBmdXp6aW5nIGlzIG1vcmUgYWdncmVzc2l2ZSBhbmQgbWF5IGNyZWF0ZSBvdXRhZ2VzIGluIHRoZSBzZXJ2aWNlIHVuZGVyIHRlc3QgaWYgdGhlIHNlcnZpY2UgaXMgcG9vcmx5IGltcGxlbWVudGVkIChlLmcuLCBmdXp6aW5nIG1pZ2h0IGNyZWF0ZSByZXNvdXJjZSBsZWFrcywgcGVyZiBkZWdyYWRhdGlvbiwgYmFja2VuZCBjb3JydXB0aW9ucywgZXRjLikuClNlZSBbRnV6emluZ10oLi9kb2NzL3VzZXItZ3VpZGUvRnV6emluZy5tZCkuCgojIyBRdWljayBTdGFydAoKRm9yIGEgcXVpY2sgaW50cm8gd2l0aCBzaW1wbGUgZXhhbXBsZXMsIHNlZSB0aGlzIFtUdXRvcmlhbF0oLi9kb2NzL3VzZXItZ3VpZGUvVHV0b3JpYWxEZW1vU2VydmVyLm1kKS4KClRvIHF1aWNrbHkgdHJ5IFJFU1RsZXIgb24geW91ciBBUEksIHNlZSBbUXVpY2sgU3RhcnRdKC4vZG9jcy91c2VyLWd1aWRlL1F1aWNrU3RhcnQubWQpLgoKIyMgQnVncyBmb3VuZCBieSBSRVNUbGVyClRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGNhdGVnb3JpZXMgb2YgYnVncyBmb3VuZCBieSBSRVNUbGVyLgoKLSAqKkVycm9yIGNvZGUqKjogY3VycmVudGx5LCBhbnkgdGltZSBhIHJlc3BvbnNlIHdpdGggc3RhdHVzIGNvZGUgYGBgNTAwYGBgICgiSW50ZXJuYWwgU2VydmVyIEVycm9yIikgaXMgcmVjZWl2ZWQsIGEgYnVnIGlzIHJlcG9ydGVkLgotICoqQ2hlY2tlcnMqKjogZWFjaCBjaGVja2VyIHRyaWVzIHRvIHRyaWdnZXIgc3BlY2lmaWMgYnVncyBieSBleGVjdXRpbmcgdGFyZ2V0ZWQgYWRkaXRpb25hbCByZXF1ZXN0cyBvciBzZXF1ZW5jZXMgb2YgcmVxdWVzdHMgYXQgY2VydGFpbiBwb2ludHMgZHVyaW5nIGZ1enppbmcsIGRldGVybWluZWQgYnkgY29udGV4dC4gIFNvbWUgY2hlY2tlcnMgdHJ5IHRvIGZpbmQgYWRkaXRpb25hbCA1MDBzLCB3aGlsZSBvdGhlciBjaGVja2VycyB0cnkgdG8gZmluZCBzcGVjaWZpYyBsb2dpYyBidWdzIHN1Y2ggYXMgcmVzb3VyY2UgbGVha3Mgb3IgaGllcmFyY2h5IHZpb2xhdGlvbnMuICBGb3IgYSBmdWxsIGRlc2NyaXB0aW9uIG9mIGNoZWNrZXJzLCBzZWUgW0NoZWNrZXJzXSguL2RvY3MvdXNlci1ndWlkZS9DaGVja2Vycy5tZCkuCgpXaGVuIGEgYnVnIGlzIGZvdW5kLCBSRVNUbGVyIHJlcG9ydHMgYnVncyB0cmlhZ2VkIGluIGJ1ZyBidWNrZXRzLCBhbmQgcHJvdmlkZXMgYSByZXBsYXkgbG9nIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVwcm9kdWNlIHRoZSBidWcgKHNlZSBbUmVwbGF5XSguL2RvY3MvdXNlci1ndWlkZS9SZXBsYXkubWQpKS4KCgojIyBBZHZhbmNlZCBUb3BpY3MKCkZvciB0aXBzIG9uIHVzaW5nIFJFU1RsZXIgZWZmZWN0aXZlbHksIHBsZWFzZSBzZWUgW0Jlc3QgUHJhY3RpY2VzXSguL2RvY3MvdXNlci1ndWlkZS9CZXN0UHJhY3RpY2VzLm1kKSBhbmQgW0ltcHJvdmluZyBBUEkgQ292ZXJhZ2VdKC4vZG9jcy91c2VyLWd1aWRlL0ltcHJvdmluZ0NvdmVyYWdlLm1kKS4KClNlZSBhbHNvIHRoZXNlIFtGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9uc10oLi9kb2NzL3VzZXItZ3VpZGUvRkFRLm1kKS4KCklmIHlvdSdyZSBpbnRlcmVzdGVkIGluIHVzaW5nIFJFU1RsZXIgYXQgc2NhbGUgYXMgcGFydCBvZiB5b3VyIENJL0NEIHBpcGVsaW5lLCBjaGVjayBvdXQKdGhlIFtSRVNUIEFQSSBGdXp6IFRlc3Rpbmcgc2VsZi1ob3N0ZWQgc2VydmljZV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9yZXN0LWFwaS1mdXp6LXRlc3RpbmcpLgoKIyMgUXVlc3Rpb25zCgpJZiB5b3UgaGF2ZSBhIHJlcXVlc3Qvc3VnZ2VzdGlvbi9xdWVzdGlvbiwgcGxlYXNlIGZpbGUgYW4gaXNzdWUuClNlZSBbQ29udHJpYnV0aW5nLm1kXSguL2RvY3MvY29udHJpYnV0b3ItZ3VpZGUvQ29udHJpYnV0aW5nLm1kKSBmb3IgaW5zdHJ1Y3Rpb25zLgoKIyMgQ29udHJpYnV0aW5nCgpUaGlzIHByb2plY3Qgd2VsY29tZXMgY29udHJpYnV0aW9ucyBhbmQgc3VnZ2VzdGlvbnMuIE1vc3QgY29udHJpYnV0aW9ucyByZXF1aXJlIHlvdSB0bwphZ3JlZSB0byBhIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50IChDTEEpIGRlY2xhcmluZyB0aGF0IHlvdSBoYXZlIHRoZSByaWdodCB0bywKYW5kIGFjdHVhbGx5IGRvLCBncmFudCB1cyB0aGUgcmlnaHRzIHRvIHVzZSB5b3VyIGNvbnRyaWJ1dGlvbi4gRm9yIGRldGFpbHMsIHZpc2l0Cmh0dHBzOi8vY2xhLm1pY3Jvc29mdC5jb20uCgpXaGVuIHlvdSBzdWJtaXQgYSBwdWxsIHJlcXVlc3QsIGEgQ0xBLWJvdCB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIHdoZXRoZXIgeW91IG5lZWQKdG8gcHJvdmlkZSBhIENMQSBhbmQgZGVjb3JhdGUgdGhlIFBSIGFwcHJvcHJpYXRlbHkgKGUuZy4sIGxhYmVsLCBjb21tZW50KS4gU2ltcGx5IGZvbGxvdyB0aGUKaW5zdHJ1Y3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBib3QuIFlvdSB3aWxsIG9ubHkgbmVlZCB0byBkbyB0aGlzIG9uY2UgYWNyb3NzIGFsbCByZXBvc2l0b3JpZXMgdXNpbmcgb3VyIENMQS4KClRoaXMgcHJvamVjdCBoYXMgYWRvcHRlZCB0aGUgW01pY3Jvc29mdCBPcGVuIFNvdXJjZSBDb2RlIG9mIENvbmR1Y3RdKGh0dHBzOi8vb3BlbnNvdXJjZS5taWNyb3NvZnQuY29tL2NvZGVvZmNvbmR1Y3QvKS4KRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZSBbQ29kZSBvZiBDb25kdWN0IEZBUV0oaHR0cHM6Ly9vcGVuc291cmNlLm1pY3Jvc29mdC5jb20vY29kZW9mY29uZHVjdC9mYXEvKQpvciBjb250YWN0IFtvcGVuY29kZUBtaWNyb3NvZnQuY29tXShtYWlsdG86b3BlbmNvZGVAbWljcm9zb2Z0LmNvbSkgd2l0aCBhbnkgYWRkaXRpb25hbCBxdWVzdGlvbnMgb3IgY29tbWVudHMuCgpGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb250cmlidXRpbmcubWRdKC4vZG9jcy9jb250cmlidXRvci1ndWlkZS9Db250cmlidXRpbmcubWQpLgoKIyMgVHJhZGVtYXJrcwoKVGhpcyBwcm9qZWN0IG1heSBjb250YWluIHRyYWRlbWFya3Mgb3IgbG9nb3MgZm9yIHByb2plY3RzLCBwcm9kdWN0cywgb3Igc2VydmljZXMuIEF1dGhvcml6ZWQgdXNlIG9mIE1pY3Jvc29mdCB0cmFkZW1hcmtzIG9yIGxvZ29zIGlzIHN1YmplY3QgdG8gYW5kIG11c3QgZm9sbG93IE1pY3Jvc29mdCdzIFRyYWRlbWFyayAmIEJyYW5kIEd1aWRlbGluZXMuIFVzZSBvZiBNaWNyb3NvZnQgdHJhZGVtYXJrcyBvciBsb2dvcyBpbiBtb2RpZmllZCB2ZXJzaW9ucyBvZiB0aGlzIHByb2plY3QgbXVzdCBub3QgY2F1c2UgY29uZnVzaW9uIG9yIGltcGx5IE1pY3Jvc29mdCBzcG9uc29yc2hpcC4gQW55IHVzZSBvZiB0aGlyZC1wYXJ0eSB0cmFkZW1hcmtzIG9yIGxvZ29zIGFyZSBzdWJqZWN0IHRvIHRob3NlIHRoaXJkLXBhcnR5J3MgcG9saWNpZXMuCgojIyBEYXRhIGNvbGxlY3Rpb24KClRoZSBzb2Z0d2FyZSBtYXkgY29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCB5b3UgYW5kIHlvdXIgdXNlIG9mIHRoZSBzb2Z0d2FyZSBhbmQgc2VuZCBpdCB0byBNaWNyb3NvZnQuIE1pY3Jvc29mdCBtYXkgdXNlIHRoaXMgaW5mb3JtYXRpb24gdG8gcHJvdmlkZSBzZXJ2aWNlcyBhbmQgaW1wcm92ZSBvdXIgcHJvZHVjdHMgYW5kIHNlcnZpY2VzLiBZb3UgbWF5IHR1cm4gb2ZmIHRoZSB0ZWxlbWV0cnkgYXMgZGVzY3JpYmVkIGluIHRoZSByZXBvc2l0b3J5LiBUaGVyZSBhcmUgYWxzbyBzb21lIGZlYXR1cmVzIGluIHRoZSBzb2Z0d2FyZSB0aGF0IG1heSBlbmFibGUgeW91IGFuZCBNaWNyb3NvZnQgdG8gY29sbGVjdCBkYXRhIGZyb20gdXNlcnMgb2YgeW91ciBhcHBsaWNhdGlvbnMuIElmIHlvdSB1c2UgdGhlc2UgZmVhdHVyZXMsIHlvdSBtdXN0IGNvbXBseSB3aXRoIGFwcGxpY2FibGUgbGF3LCBpbmNsdWRpbmcgcHJvdmlkaW5nIGFwcHJvcHJpYXRlIG5vdGljZXMgdG8gdXNlcnMgb2YgeW91ciBhcHBsaWNhdGlvbnMgdG9nZXRoZXIgd2l0aCBhIGNvcHkgb2YgTWljcm9zb2Z0J3MgcHJpdmFjeSBzdGF0ZW1lbnQuIE91ciBwcml2YWN5IHN0YXRlbWVudCBpcyBsb2NhdGVkIGF0IGh0dHBzOi8vZ28ubWljcm9zb2Z0LmNvbS9md2xpbmsvP0xpbmtJRD04MjQ3MDQuIFlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCBkYXRhIGNvbGxlY3Rpb24gYW5kIHVzZSBpbiB0aGUgaGVscCBkb2N1bWVudGF0aW9uIGFuZCBvdXIgcHJpdmFjeSBzdGF0ZW1lbnQuIFlvdXIgdXNlIG9mIHRoZSBzb2Z0d2FyZSBvcGVyYXRlcyBhcyB5b3VyIGNvbnNlbnQgdG8gdGhlc2UgcHJhY3RpY2VzLgoKRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVGVsZW1ldHJ5Lm1kXSguL2RvY3MvdXNlci1ndWlkZS9UZWxlbWV0cnkubWQpLgoKIyMgUmVwb3J0aW5nIFNlY3VyaXR5IElzc3VlcwoKU2VjdXJpdHkgaXNzdWVzIGFuZCBidWdzIHNob3VsZCBiZSByZXBvcnRlZCBwcml2YXRlbHksIHZpYSBlbWFpbCwgdG8gdGhlCk1pY3Jvc29mdCBTZWN1cml0eSBSZXNwb25zZSBDZW50ZXIgKE1TUkMpIGF0CltzZWN1cmVAbWljcm9zb2Z0LmNvbV0obWFpbHRvOnNlY3VyZUBtaWNyb3NvZnQuY29tKS4gWW91IHNob3VsZCByZWNlaXZlIGEKcmVzcG9uc2Ugd2l0aGluIDI0IGhvdXJzLiBJZiBmb3Igc29tZSByZWFzb24geW91IGRvIG5vdCwgcGxlYXNlIGZvbGxvdyB1cCB2aWEKZW1haWwgdG8gZW5zdXJlIHdlIHJlY2VpdmVkIHlvdXIgb3JpZ2luYWwgbWVzc2FnZS4gRnVydGhlciBpbmZvcm1hdGlvbiwKaW5jbHVkaW5nIHRoZSBbTVNSQyBQR1BdKGh0dHBzOi8vdGVjaG5ldC5taWNyb3NvZnQuY29tL2VuLXVzL3NlY3VyaXR5L2RuNjA2MTU1KQprZXksIGNhbiBiZSBmb3VuZCBpbiB0aGUgW1NlY3VyaXR5IFRlY2hDZW50ZXJdKGh0dHBzOi8vdGVjaG5ldC5taWNyb3NvZnQuY29tL2VuLXVzL3NlY3VyaXR5L2RlZmF1bHQpLgoKRm9yIGFkZGl0aW9uYWwgZGV0YWlscywgc2VlIFtTZWN1cml0eS5tZF0oU0VDVVJJVFkubWQpLgoKCiMgUHJpdmFjeSAmIENvb2tpZXMKCmh0dHBzOi8vZ28ubWljcm9zb2Z0LmNvbS9md2xpbmsvP0xpbmtJZD01MjE4MzkK readmeEtag: '"ebc06359596abda3a0ad485b60c0529ca58447d7"' readmeLastModified: Mon, 13 Oct 2025 23:15:45 GMT repositoryId: 282320787 description: >- RESTler is the first stateful REST API fuzzing tool for automatically testing cloud services through their REST APIs and finding security and reliability bugs in these services. created: '2020-07-24T21:40:11Z' updated: '2026-02-06T00:05:02Z' language: Python archived: false stars: 2867 watchers: 37 forks: 324 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT repoEtag: '"613f635bfe4ff68035f421cd7ed6655a0b67f75537a26dae75930622e575c55c"' repoLastModified: Fri, 06 Feb 2026 00:05:02 GMT foundInMaster: true oldLocations: - https://github.com/microsoft/restler - source: openapi3 tags repository: https://github.com/xiaoymin/swagger-bootstrap-ui v3: true id: 0ccf3516a99b6fdb818a427fe48ed72c repositoryMetadata: base64Readme: >- Cgpgc3dhZ2dlci1ib290c3RyYXAtdWlg6aG555uu5bey57uP5pu05ZCN5Li6S25pZmU0au+8jOWkp+WutuWOu+aWsOS7k+W6k+iOt+WPluacgOaWsOS7o+egge+8jOaIluiAheaPkGlzc3Vlc+OAgXByIAoK5paw5LuT5bqT5Zyw5Z2A77yaW2h0dHBzOi8vZ2l0aHViLmNvbS94aWFveW1pbi9rbmlmZTRqXShodHRwczovL2dpdGh1Yi5jb20veGlhb3ltaW4va25pZmU0aikgCg== readmeEtag: '"0a2482f90afe381c6c63863e71c415e3dd5f4b97"' readmeLastModified: Fri, 24 Feb 2023 06:40:18 GMT repositoryId: 528459414 description: Knife4j is a set of Swagger2 and OpenAPI3 All-in-one enhancement solution created: '2022-08-24T14:26:52Z' updated: '2025-11-13T05:49:17Z' language: HTML archived: false stars: 96 watchers: 2 forks: 21 owner: xiaoymin logo: https://avatars.githubusercontent.com/u/7894406?v=4 license: Apache-2.0 repoEtag: '"e50116ab16b2a4892222edfcd81810521e69f7474887b24da01a9d8d230f3fe4"' repoLastModified: Thu, 13 Nov 2025 05:49:17 GMT category: - Low-level Tooling - SDK foundInMaster: true - source: openapi3 tags repository: https://github.com/specify/open_api_tools v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIFRlc3RpbmcgRnJhbWV3b3JrCgpBIGZyYW1ld29yayBmb3IgdGVzdGluZyBhbiBBUEkgYmFzZWQgb24gaXRzIE9wZW5BUEkgc2NoZW1hLgoKVGhpcyBmcmFtZXdvcmsgYWxsb3dzIHRvIGNyZWF0ZSBhbnl0aGluZyBiZXR3ZWVuIGEgbWFudWFsIHRlc3QgYW5kIGEgZnVsbHkKYXV0b21hdGVkIHRlc3QuCgojIyBJbnN0YWxsYXRpb24KCkluc3RhbGwgUHl0aG9uICh2ZXJzaW9ucyAzLjYtMy45IHdoZXJlIHRlc3RlZCB0byB3b3JrKQoKQ2xvbmUgdGhpcyByZXBvc2l0b3J5CgpgYGBiYXNoCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vc3BlY2lmeS9vcGVuX2FwaV90b29scwpjZCBvcGVuX2FwaV90b29scwpgYGAKCkNvbmZpZ3VyZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQKCmBgYGJhc2gKcHl0aG9uIC1tIHZlbnYgdmVudgpgYGAKCkluc3RhbGwgdGhlIGRlcGVuZGVuY2llcwoKYGBgYmFzaAouL3ZlbnYvYmluL3BpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKYGBgCgpJbnN0YWxsIHRoaXMgcGFja2FnZSBsb2NhbGx5CgpgYGBiYXNoCnBpcCBpbnN0YWxsIC1lIC4KYGBgCgojIyBVc2FnZQoKVGhlcmUgYXJlIHRocmVlIG1haW4gdXNlIGNhc2VzLCBlYWNoIGdvaW5nIGZyb20gbW9yZSBhdXRvbWF0ZWQgdG8gbW9yZSBtYW51YWwuCgpUaGUgbW9zdCBhdXRvbWF0ZWQgaXMgdGhlIGBmdWxsX3Rlc3RgLCB3aGljaCwgYnkgZGVmYXVsdCwgZ2VuZXJhdGVzIHRlc3QgVVJMcwp3aXRoIHNvbWUgcGFyYW1ldGVycyBiYXNlZCBvbiBPcGVuQVBJIHNjaGVtYSwgdGhlbiBzZW5kcyB0aG9zZSByZXF1ZXN0cyBhbmQKbWFrZXMgc3VyZSB0aGF0IHJlc3BvbnNlcyBtYXRjaCB0aGUgc2NoZW1hIGRlZmluaXRpb24uIEJ5IGRlZmF1bHQsIHRoaXMgbWV0aG9kCm9ubHkgdGVzdHMgYEdFVGAgZW5kcG9pbnRzIGFuZCBpdCBkb2VzIG5vdCBnZW5lcmF0ZSByZXF1ZXN0IGJvZHkgb2JqZWN0LgpIb3dldmVyLCB0aGlzIGNhbiBiZSBjaGFuZ2VkIGJ5IHByb3ZpZGluZyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMuIEFsc28sIHlvdSBjYW4KZGVmaW5lIHBhcmFtZXRlciBjb25zdHJhaW50cyAoZS54IGlmICdhJyBpcyBzZXQgdG8gVHJ1ZSwgdGhlbiByZXNwb25zZSBtdXN0CmNvbnRhaW4gJ2InKSB0byBmdXJ0aGVyIGltcHJvdmUgdGhlIHF1YWxpdHkgb2YgdGhpcyB0ZXN0LgoKTmV4dCwgdGhlcmUgaXMgYSBDaGFpbiB0ZXN0IHRoYXQgYWxsb3dzIHRvIHRlc3QgYSBjaGFpbiBvZiByZXF1ZXN0cyBhbmQgbWFrZQpzdXJlIHRoYXQgZWFjaCByZXF1ZXN0IGNvcnJlY3RseSBpbmZsdWVuY2VkIHRoZSByZXNwb25zZSBvZiB0aGUgbmV4dCByZXF1ZXN0LgoKRmluYWxseSwgZm9yIHRob3NlIHRoYXQgbmVlZCBjb21wbGV0ZSBjb250cm9sLCB0aGVyZSBpcyBhIGBtYWtlX3JlcXVlc3RgIG1ldGhvZAp3aGljaCBmYWNpbGl0YXRlcyB2YWxpZGF0aW5nIHRoZSByZXF1ZXN0IHBhcmFtZXRlcnMsIHNlbmRpbmcgYSBzaW5nbGUgcmVxdWVzdCwKdmFsaWRhdGluZyB0aGUgcmVzcG9uc2UgcGFyYW1ldGVycyBhbmQgcmV0dXJuaW5nIHRoZSByZXN1bHQuCgojIyBGdWxsIHRlc3QKClRoZSBoYW5kbGVyIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYSBib29sZWFuIHZhbHVlIHNheWluZyB2YWxpZGF0aW5nCndoZXRoZXIgdGhlIHJlc3BvbnNlIG9iamVjdCBpcyBhcyBleHBlY3RlZAoKIyMjIEJhc2ljIHVzYWdlCgpSdW4gdGhlIHRlc3QKCmBgYHB5dGhvbgpmcm9tIG9wZW5fYXBpX3Rvb2xzLnRlc3QuZnVsbF90ZXN0IGltcG9ydCBmdWxsX3Rlc3QKZnJvbSBvcGVuX2FwaV90b29scy5jb21tb24ubG9hZF9zY2hlbWEgaW1wb3J0IGxvYWRfc2NoZW1hCgpzY2hlbWEgPSBsb2FkX3NjaGVtYSgnb3Blbl9hcGkueWFtbCcpCgojIEVycm9yIG1lc3NhZ2Ugc2NoZW1hIGlzIGRlZmluZWQgaW4gb3Blbl9hcGlfdG9vbHMudmFsaWRhdGUuaW5kZXgKZGVmIGFmdGVyX2Vycm9yX29jY3VycmVkKCplcnJvcl9tZXNzYWdlKToKICAgIHByaW50KGVycm9yX21lc3NhZ2UpCgpmdWxsX3Rlc3QoCiAgICBzY2hlbWE9c2NoZW1hLAogICAgbWF4X3VybHNfcGVyX2VuZHBvaW50PTUwLAogICAgZmFpbGVkX3JlcXVlc3RfbGltaXQ9MTAsCiAgICBhZnRlcl9lcnJvcl9vY2N1cnJlZD1hZnRlcl9lcnJvcl9vY2N1cnJlZCwKKQpgYGAKClRoaXMgc2NyaXB0IHdvdWxkIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgdGVzdCBVUkxzIGJhc2VkIG9uCnlvdXIgQVBJIHNjaGVtYS4KCkFsbCByZXF1ZXN0cyB3b3VsZCBiZSBzZW50IHRvIHRoZSBmaXJzdCBzZXJ2ZXIKc3BlY2lmaWVkIGluIHRoZSBgc2VydmVyc2AgcGFydCBvZiB0aGUgQVBJIHNjaGVtYS4KCmBtYXhfdXJsc19wZXJfZW5kcG9pbnRgIHBhcmFtZXRlciBkZWZpbmVzIHRoZSBsaW1pdCBvZiBxdWVyaWVzIHRvIHNlbmQgdG8gYQpzaW5nbGUgZW5kcG9pbnQuCgpgZmFpbGVkX3JlcXVlc3RfbGltaXRgIG1ha2VzIHN1cmUgdGhhdCB0aGUgYGZ1bGxfdGVzdGAgZnVuY3Rpb24gcXVpdHMgd2l0aCBhbgpleGNlcHRpb24gaWYgYSBjZXJ0YWluIG51bWJlciBvZiByZXF1ZXN0cyBmYWlsZWQgdmFsaWRhdGlvbi4gVGhpcyBpcyB1c2VmdWwgZm9yCnByZXZlbnRpbmcgbmVlZGxlc3Mgc2VydmVyIGxvYWQgd2hlbiBhbGwgcmVxdWVzdHMgYXJlIGZhaWxpbmcgZm9yIHRoZSBzYW1lCnJlYXNvbi4KCiMjIyBTdXBwbHlpbmcgdGVzdCB2YWx1ZXMgZm9yIHBhcmFtZXRlcnMKCkJ5IGRlZmF1bHQsIHRoZSB0ZXN0IHJlYWRzIHRoZSBgZXhhbXBsZXNgIG9iamVjdApbaW4gdGhlIHNjaGVtYV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI2V4YW1wbGUtb2JqZWN0KSB0byBnZW5lcmF0ZQpyZXF1ZXN0IHBhcmFtZXRlcnMuIElmIGBleGFtcGxlc2Agd2VyZW4ndCBwcm92aWRlZCwgaXQgd291bGQgdHJ5IHRvIGNyZWF0ZSBzb21lCnRlc3QgdmFsdWVzIGJhc2VkIG9uIHRoZSBwYXJhbWV0ZXIgdHlwZS4KCklmIHlvdSB3b3VsZCBsaWtlIG1vcmUgY3VzdG9taXphdGlvbiwgYW4gb3B0aW9uYWwgYGFmdGVyX2V4YW1wbGVzX2dlbmVyYXRlZGAKaG9vayBjYW4gYmUgcHJvdmlkZWQgdG8gdGhlIGBmdWxsX3Rlc3RgIG1ldGhvZC4KCmBhZnRlcl9leGFtcGxlc19nZW5lcmF0ZWRgIG11c3QgYmUgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYW4gZW5kcG9pbnQgbmFtZSBhcwp0aGUgZmlyc3QgcGFyYW1ldGVyIGFuZApbdGhlIHBhcmFtZXRlciBvYmplY3RdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNwYXJhbWV0ZXItb2JqZWN0KQphcyB0aGUgc2Vjb25kIHBhcmFtZXRlciAodGhlIHBhcmFtZXRlciBvYmplY3Qgd291bGQgdmFyeSBkZXBlbmRpbmcgb24gaG93IGl0IGlzCmRlZmluZWQgaW4geW91ciBzY2hlbWEpLiBJbiB0dXJuLCB0aGUgZnVuY3Rpb24gbXVzdCByZXR1cm4gYSBsaXN0IG9mIHZhbGlkCmV4YW1wbGVzLgoKRXhhbXBsZSB1c2FnZToKCmBgYHB5dGhvbgpmcm9tIG9wZW5fYXBpX3Rvb2xzLnRlc3QuZnVsbF90ZXN0IGltcG9ydCBmdWxsX3Rlc3QKZnJvbSBvcGVuX2FwaV90b29scy5jb21tb24ubG9hZF9zY2hlbWEgaW1wb3J0IGxvYWRfc2NoZW1hCgpzY2hlbWEgPSBsb2FkX3NjaGVtYSgnb3Blbl9hcGkueWFtbCcpCgpkZWYgYWZ0ZXJfZXJyb3Jfb2NjdXJyZWQoKmVycm9yX21lc3NhZ2UpOgogICAgcHJpbnQoZXJyb3JfbWVzc2FnZSkKCmRlZiBhZnRlcl9leGFtcGxlc19nZW5lcmF0ZWQoCiAgICBlbmRwb2ludF9uYW1lLAogICAgcGFyYW1ldGVyLAogICAgYXV0b2dlbmVyYXRlZF9leGFtcGxlcwopOgogICAgaWYgZW5kcG9pbnRfbmFtZSA9PSAnL2FwaS9wb3N0cy8nIGFuZCBwYXJhbWV0ZXIubmFtZSA9PSAncG9zdF9pZCc6CiAgICAgICAgcmV0dXJuIFsxLCAyLCAzLCA0LCA1XQogICAgZWxpZiBwYXJhbWV0ZXIuc2NoZW1hLnR5cGUgPT0gJ3N0cmluZyc6CiAgICAgICAgIyBTb21lIG5hdWdodHkgc3RyaW5ncwogICAgICAgIHJldHVybiBbIsOFw43DjsOPy53Dk8OU76O/w5LDmsOG4piDIiwgIs6p4omIw6fiiJriiKvLnMK14omk4omlw7ciLCAi4oWb4oWc4oWd4oWeIl0KICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIGF1dG9nZW5lcmF0ZWRfZXhhbXBsZXMKCmZ1bGxfdGVzdCgKICAgIHNjaGVtYT1zY2hlbWEsCiAgICBtYXhfdXJsc19wZXJfZW5kcG9pbnQ9NTAsCiAgICBmYWlsZWRfcmVxdWVzdF9saW1pdD0xMCwKICAgIGFmdGVyX2Vycm9yX29jY3VycmVkPWFmdGVyX2Vycm9yX29jY3VycmVkLAogICAgYWZ0ZXJfZXhhbXBsZXNfZ2VuZXJhdGVkPWFmdGVyX2V4YW1wbGVzX2dlbmVyYXRlZAopCmBgYAoKVGhlIHRoaXJkIHBhcmFtZXRlciBpbiBgYWZ0ZXJfZXhhbXBsZXNfZ2VuZXJhdGVkYCBpcyB0aGUgbGlzdCBvZiBleGFtcGxlcyB0aGF0CndlcmUgZ2VuZXJhdGVkIGJ5IHRoaXMgZnJhbWV3b3JrLiBJZiB5b3UgZG9uJ3Qgd2FudCB0byBjaGFuZ2UgdGhlIGdlbmVyYXRlZApleGFtcGxlcywgdGhlIGZ1bmN0aW9uIGNhbiByZXR1cm4gYmFjayB0aGlzIHZhbHVlLgoKTm90ZSB0aGF0IGBhZnRlcl9leGFtcGxlc19nZW5lcmF0ZWRgIHdvdWxkIGFsc28gZ2V0IGNhbGxlZCB3aXRoCmByZXF1ZXN0Qm9keWAgYXMgYSBwYXJhbWV0ZXIubmFtZS4gVGhpcyBhbGxvd3MgeW91IHRvIHRvIHByb3ZpZGUgYSBsaXN0IG9mCnJlcXVlc3Qgb2JqZWN0cyB0aGF0IHdvdWxkIGJlIHVzZWQgaW4gdGVzdGluZy4gRWFjaCByZXF1ZXN0IG9iamVjdCBzaG91bGQgYmUgb2YKdHlwZSBgKHN0ciwgc3RyKWAsIHdoZXJlIHRoZSBmaXJzdCBzdHJpbmcgaXMgdGhlIE1JTUUgdHlwZSBhbmQgdGhlIHNlY29uZCBvbmUgaXMKdGhlIHNlcmlhbGl6ZWQgcGF5bG9hZCB0aGF0IHdvdWxkIGJlIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC4KCiMjIyBIYW5kbGluZyBhdXRoZW50aWNhdGlvbiBhbmQgYW1lbmRpbmcgdGhlIHJlcXVlc3Qgb2JqZWN0CgpgZnVsbF90ZXN0YCBhbHNvIHN1cHBvcnRzIGEgYGJlZm9yZV9yZXF1ZXN0X3NlbmRgIGhvb2sgdGhhdCBhbGxvd3MgeW91IHRvIG1vZGlmeQp0aGUgcmVxdWVzdCBvYmplY3QgYmVmb3JlIGEgcmVxdWVzdCBpcyBzZW50LiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBlZGl0CnRoZSBoZWFkZXJzIG9yIGFkZCBhdXRoZW50aWNhdGlvbiBjb29raWVzLgoKRXhhbXBsZSB1c2FnZToKCmBgYHB5dGhvbgpmcm9tIG9wZW5fYXBpX3Rvb2xzLnRlc3QuZnVsbF90ZXN0IGltcG9ydCBmdWxsX3Rlc3QKZnJvbSBvcGVuX2FwaV90b29scy5jb21tb24ubG9hZF9zY2hlbWEgaW1wb3J0IGxvYWRfc2NoZW1hCgpzY2hlbWEgPSBsb2FkX3NjaGVtYSgnb3Blbl9hcGkueWFtbCcpCgpkZWYgYmVmb3JlX3JlcXVlc3Rfc2VuZChlbmRwb2ludF9uYW1lLCByZXF1ZXN0X29iamVjdCk6CiAgICBpZiBlbmRwb2ludF9uYW1lID09ICcvYXBpL21haW4ve2lkfS8nOgogICAgICAgIGlmIHJlcXVlc3Rfb2JqZWN0LmhlYWRlcnMgaXMgTm9uZToKICAgICAgICAgICAgcmVxdWVzdF9vYmplY3QuaGVhZGVycyA9IHt9CiAgICAgICAgcmVxdWVzdF9vYmplY3QuaGVhZGVyc1snQXV0aG9yaXphdGlvbiddPSdCYXNpYyBZV3hoWkdScGJqcHZjR1Z1YzJWellXMWwnCiAgICByZXR1cm4gcmVxdWVzdF9vYmplY3QKCmZ1bGxfdGVzdCgKICAgIHNjaGVtYT1zY2hlbWEsCiAgICBtYXhfdXJsc19wZXJfZW5kcG9pbnQ9NTAsCiAgICBmYWlsZWRfcmVxdWVzdF9saW1pdD0xMCwKICAgIGJlZm9yZV9yZXF1ZXN0X3NlbmQ9YmVmb3JlX3JlcXVlc3Rfc2VuZAopCmBgYAoKVGhlIHNjaGVtYSBmb3IgdGhlIHJlcXVlc3Qgb2JqZWN0IFtpcyBkZWZpbmVkCmhlcmVdKGh0dHBzOi8vZG9jcy5weXRob24tcmVxdWVzdHMub3JnL2VuL21hc3Rlci9hcGkvKS4KCiMjIyBEZWZpbmluZyBwYXJhbWV0ZXIgY29uc3RyYWlucwoKSWYgcmVzcG9uc2Ugb2JqZWN0IGRlcGVuZHMgb24gdGhlIHF1ZXJ5IHBhcmFtZXRlcnMsIHlvdSBjYW4KdGVzdCBmb3IgdGhlc2UgcmVsYXRpb25zaGlwcyBieSBhZGRpbmcgeW91ciBwYXJhbWV0ZXIgbmFtZXMKYW5kIGhhbmRsZXIgZnVuY3Rpb25zIHRvIHRoZSBgcGFyYW1ldGVyX2NvbnN0cmFpbnRzYCBkaWN0aW9uYXJ5IGFuZCBwYXNzaW5nIGl0CnRvIGBmdWxsX3Rlc3RgLgoKRWFjaCBoYW5kbGVyIGZ1bmN0aW9uIHdvdWxkIHJlY2VpdmUgdGhlIGZvbGxvd2luZyBhcmd1bWVudHM6CgoqIHBhcmFtZXRlcl92YWx1ZSAoYW55KTogdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgdGhpcyBoYW5kbGVyCiAgd29ya3Mgd2l0aAoqIHBhdGggKHN0cik6IG5hbWUgb2YgdGhlIGN1cnJlbnQgZW5kcG9pbnQgKHVzZWZ1bCBpZiB0aGUgc2FtZQogIHBhcmFtZXRlciBpcyBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBlbmRwb2ludHMpCiogcmVzcG9uc2UgKGFueSk6IFtyZXNwb25zZQogIG9iamVjdF0oaHR0cHM6Ly9kb2NzLnB5dGhvbi1yZXF1ZXN0cy5vcmcvZW4vbWFzdGVyL2FwaS8jcmVxdWVzdHMuUmVzcG9uc2UpLgoKRXhhbXBsZSB1c2FnZToKCmBgYHB5dGhvbgpmcm9tIG9wZW5fYXBpX3Rvb2xzLnRlc3QuZnVsbF90ZXN0IGltcG9ydCBmdWxsX3Rlc3QKZnJvbSBvcGVuX2FwaV90b29scy5jb21tb24ubG9hZF9zY2hlbWEgaW1wb3J0IGxvYWRfc2NoZW1hCgpzY2hlbWEgPSBsb2FkX3NjaGVtYSgnb3Blbl9hcGkueWFtbCcpCgpkZWYgZ2V0X3BvcHVsYXJfcG9zdHMoCiAgICBwYXJhbWV0ZXJfdmFsdWU6IGludCwKICAgIGVuZHBvaW50OiBzdHIsCiAgICByZXNwb25zZTogb2JqZWN0Cik6CiAgICBmb3IgcG9zdCBpbiByZXNwb25zZS5qc29uKCk6CiAgICAgICAgaWYgcG9zdC5wb3B1bGFyaXR5IDwgcGFyYW1ldGVyX3ZhbHVlOgogICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCiAgICAgICAgICAgICAgICBmJ3tlbmRwb2ludH0gZmFpbGVkIHRvIGZpbHRlciB0aGUgcG9zdHMgYnkgcG9wdWxhcml0eScKICAgICAgICAgICAgKQoKZnVsbF90ZXN0KAogICAgc2NoZW1hPXNjaGVtYSwKICAgIG1heF91cmxzX3Blcl9lbmRwb2ludD01MCwKICAgIGZhaWxlZF9yZXF1ZXN0X2xpbWl0PTEwLAogICAgcGFyYW1ldGVyX2NvbnN0cmFpbnRzPXsKCiAgICB9LAopCmBgYAoKIyMgQ2hhaW4gdGVzdAoKRm9yIG1vcmUgZmluZS1ncmFpbmVkIHRlc3RpbmcsIHRoZXJlIGlzIGEgYGNoYWluYCBtZXRob2QgdGhhdCBhbGxvd3MgdG8gdGVzdAphIGNoYWluIG9mIHJlcXVlc3QgVVJMcyB3aXRoIHJlcXVlc3QvcmVzcG9uc2Ugb2JqZWN0IHZhbGlkYXRpb24gYW5kIGFzc3VyYW5jZQp0aGF0IGVhY2ggcmVxdWVzdCBwcm9kdWNlZCBleHBlY3RlZCByZXN1bHRzLgoKRXhhbXBsZSB1c2FnZToKCmBgYHB5dGhvbgpmcm9tIG9wZW5fYXBpX3Rvb2xzLnRlc3QuY2hhaW4gaW1wb3J0IGNoYWluLCBSZXF1ZXN0LCBWYWxpZGF0ZQpmcm9tIG9wZW5fYXBpX3Rvb2xzLmNvbW1vbi5sb2FkX3NjaGVtYSBpbXBvcnQgbG9hZF9zY2hlbWEKaW1wb3J0IGpzb24KCnNjaGVtYSA9IGxvYWRfc2NoZW1hKCdvcGVuX2FwaS55YW1sJykKCnBvc3RfaWQgPSAzNDUKCmRlZiBjcmVhdGVfcG9zdChfYXJndW1lbnRzLCBfcmVzcG9uc2UsIF9wcmV2aW91c192YWx1ZXMpOgogICAgcmV0dXJuIHsKICAgICAgICAicmVxdWVzdEJvZHkiOiBbCiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJywKICAgICAgICAgICAganNvbi5kdW1wcyhkaWN0KAogICAgICAgICAgICAgICAgaWQ9cG9zdF9pZCwKICAgICAgICAgICAgICAgIG5hbWU9J1Bvc3QgTmFtZScsCiAgICAgICAgICAgICAgICBib2R5PSdQb3N0IGNvbnRlbnQnCiAgICAgICAgICAgICkpCiAgICAgICAgXQogICAgfQoKY2hhaW4oCiAgICBzY2hlbWE9c2NoZW1hLAogICAgZGVmaW5pdGlvbj1bCiAgICAgICAgUmVxdWVzdChtZXRob2Q9J0dFVCcsIGVuZHBvaW50PScvYXBpL3Bvc3RzLycpLAogICAgICAgIFZhbGlkYXRlKAogICAgICAgICAgICB2YWxpZGF0ZT1cCiAgICAgICAgICAgICAgICBsYW1iZGEgcmVzcG9uc2U6IHBvc3RfaWQgbm90IGluIHJlc3BvbnNlLmpzb24oKS5wb3N0cwogICAgICAgICksCiAgICAgICAgUmVxdWVzdCgKICAgICAgICAgICAgbWV0aG9kPSdQT1NUJywKICAgICAgICAgICAgZW5kcG9pbnQ9Jy9hcGkvcG9zdHMvJywKICAgICAgICAgICAgcGFyYW1ldGVycz1jcmVhdGVfcG9zdAogICAgICAgICksCiAgICAgICAgVmFsaWRhdGUoCiAgICAgICAgICAgIHZhbGlkYXRlPWxhbWJkYSByZXNwb25zZTogcG9zdF9pZCBpbiByZXNwb25zZS5qc29uKCkucG9zdHMKICAgICAgICApLAogICAgICAgIFJlcXVlc3QoCiAgICAgICAgICAgIG1ldGhvZD0nREVMRVRFJywKICAgICAgICAgICAgZW5kcG9pbnQ9Jy9hcGkvcG9zdHMvJywKICAgICAgICAgICAgcGFyYW1ldGVycz17J2lkJzogcG9zdF9pZH0KICAgICAgICApLAogICAgICAgIFZhbGlkYXRlKAogICAgICAgICAgICB2YWxpZGF0ZT0gXAogICAgICAgICAgICAgICAgbGFtYmRhIHJlc3BvbnNlOiBwb3N0X2lkIG5vdCBpbiByZXNwb25zZS5qc29uKCkucG9zdHMKICAgICAgICApLAogICAgXSwKKQpgYGAKClRoZSByZXNwb25zZSBvYmplY3QgZm9yIHRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIFtpcyBkZXNjcmliZWQKaGVyZV0oaHR0cHM6Ly9kb2NzLnB5dGhvbi1yZXF1ZXN0cy5vcmcvZW4vbWFzdGVyL2FwaS8jcmVxdWVzdHMuUmVzcG9uc2UpLgoKS2VlcCBpbiBtaW5kIHRoYXQgdGhlIGBlbmRwb2ludGAgc3RyaW5nIGluIHRoZSBgUmVxdWVzdGAgY2xhc3Mgc2hvdWxkIGJlCmlkZW50aWNhbCB0byBvbmUgb2YgdGhlIGVuZHBvaW50cyBpbiB5b3VyIE9wZW5BUEkgc2NoZW1hLiBGb3IgZXhhbXBsZSwgeW91CnNob3VsZCBzcGVjaWZ5IGAvYXBpL3VzZXIve3VzZXJfaWR9L2AgaW5zdGVhZCBvZiBgL2FwaS91c2VyLzEvYC4gQm90aCBwYXRoCnBhcmFtZXRlcnMgYW5kIHF1ZXJ5IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHN1cHBsaWVkIGluIHRoZSBgcGFyYW1ldGVyc2AKZGljdGlvbmFyeSBvciByZXR1cm5lZCBieSB0aGUgYHBhcmFtZXRlcnNgIGZ1bmN0aW9uLiBJZiBgcGFyYW1ldGVyc2AgaXMgYQpmdW5jdGlvbiwgaXQgd291bGQgZ2V0IGNhbGxlZCB3aXRoIHRoZXNlIGFyZ3VtZW50czoKKGxpc3Rfb2ZfcGFyYW1ldGVyX29iamVjdHMsIHByZXZpb3VzX3Jlc3BvbnNlLCBwcmV2aW91c19wYXJhbWV0ZXJfdmFsdWVzKS4KQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBvbWl0IHRoZSBgcGFyYW1ldGVyc2Aga2V5IGFsdG9nZXRoZXIgaWYgdGhlIGVuZHBvaW50CmRvZXNuJ3QgZXhwZWN0IGFueS4KCkFsc28sIGBSZXF1ZXN0YCBjYW4gb21pdCBgcGFyYW1ldGVyc2AgaWYgdGhlcmUgYXJlbid0IGFueSB0byBkZWZpbmUuCkFsdGVybmF0aXZlbHksIHlvdSBjYW4gc3VwcGx5IGEgZGljdGlvbmFyeSwgb3IgYSBmdW5jdGlvbiB0aGF0IHdvdWxkIGdldCBjYWxsZWQKd2l0aCB0aHJlZSBhcmd1bWVudHM6CihsaXN0X29mX3BhcmFtZXRlcl9vYmplY3RzLCBwcmV2aW91c19yZXNwb25zZSwgcHJldmlvdXNfcGFyYW1ldGVyX3ZhbHVlcykuCgpBZGRpdGlvbmFsbHksIHlvdSBjYW4Kc3VwcGx5IGEgYHJlcXVlc3RCb2R5YCBwYXJhbWV0ZXIuIFVubGlrZSBtb3N0IHBhcmFtZXRlcnMsIGByZXF1ZXN0Qm9keWAgbXVzdCBiZQphIGBUdXBsZVtzdHIsc3RyXWAgd2hlcmUgdGhlIGZpcnN0IHN0cmluZyBpcyBhIE1JTUUgdHlwZSBhbmQgdGhlIHNlY29uZCBzdHJpbmcKaXMgYSBzZXJpYWxpemVkIHZlcnNpb24gb2YgdGhlIHJlcXVlc3QgYm9keS4KClRoZSBgVmFsaWRhdGVgIGNsYXNzIGV4cGVjdHMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgcmVzcG9uc2Ugb2JqZWN0IGFuZApyZXR1cm5zIGEgYm9vbGVhbiBzYXlpbmcgd2hldGhlciBhIHZhbHVlIGlzIHZhbGlkLiBPbiBmYWxzZSwgdGhlIGNoYWluIHN0b3BzLgpOb3RlLCBpZiBgVmFsaWRhdGVgIHJldHVybmVkIGZhbHNlLCBhbiBleGNlcHRpb24gaXMgbm90IHRocm93biwgYnV0IHlvdSBjYW4KdGhyb3cgb25lIG9uIHlvdXIgb3duIGlmIHlvdSBuZWVkIHRvLgoKVGhlIGBjaGFpbmAgbWV0aG9kIGFsc28gYWNjZXB0cyBhIGBiZWZvcmVfcmVxdWVzdF9zZW5kYCBwYXJhbWV0ZXIsIHdoaWNoIGlzCmRlc2NyaWJlZCBpbiBkZXRhaWwgaW4gW3RoZSBwcmV2aW91cyBzZWN0aW9uCl0oI2hhbmRsaW5nLWF1dGhlbnRpY2F0aW9uLWFuZC1hbWVuZGluZy10aGUtcmVxdWVzdC1vYmplY3QpCgojIyBNYW51YWwgdGVzdAoKYG1ha2VfcmVxdWVzdGAgbWV0aG9kIGlzIG1vc3QgdXNlZnVsIHdoZW4geW91IG5lZWQgY29tcGxldGUgY29udHJvbCBvdmVyIHRoZQpyZXF1ZXN0cyB0aGF0IGdldCBzZW5kLCBidXQgc3RpbGwgbmVlZCB0aGUgYXNzdXJhbmNlIHRoYXQgcmVxdWVzdC9yZXNwb25zZQpvYmplY3RzIGNvbmZpcm0gdG8gc2NoZW1hLgoKRXhhbXBsZSB1c2FnZToKCmBgYHB5dGhvbgpmcm9tIG9wZW5fYXBpX3Rvb2xzLnZhbGlkYXRlLmluZGV4IGltcG9ydCBtYWtlX3JlcXVlc3QKZnJvbSBvcGVuX2FwaV90b29scy5jb21tb24ubG9hZF9zY2hlbWEgaW1wb3J0IGxvYWRfc2NoZW1hCmltcG9ydCBqc29uCgpzY2hlbWEgPSBsb2FkX3NjaGVtYSgnb3Blbl9hcGkueWFtbCcpCgpyZXNwb25zZSA9IG1ha2VfcmVxdWVzdCgKICBzY2hlbWE9c2NoZW1hLAogIHJlcXVlc3RfdXJsPSdodHRwOi8vbG9jYWxob3N0L2FwaS9wb3N0cy8xLz91cGRhdGVfaW5kZXhlcz10cnVlJywKICBlbmRwb2ludF9uYW1lPScvYXBpL3Bvc3RzLzxwb3N0X2lkPicsCiAgbWV0aG9kPSdQT1NUJywKICBib2R5PSgnYXBwbGljYXRpb24vanNvbicsIGpzb24uZHVtcHMoeyJuYW1lIjogJ05ldyBwb3N0IG5hbWUnfSkpLAopCgpgYGAKCkZvciBhZGRpdGlvbmFsIGNvbnRyb2wsIHRoZSBgbWFrZV9yZXF1ZXN0YCBtZXRob2QgYWxzbyBhY2NlcHRzIGEKYGJlZm9yZV9yZXF1ZXN0X3NlbmRgIHBhcmFtZXRlciwgd2hpY2ggaXMgZGVzY3JpYmVkIGluIGRldGFpbCBpbiBbdGhlIHByZXZpb3VzCnNlY3Rpb25dKCNoYW5kbGluZy1hdXRoZW50aWNhdGlvbi1hbmQtYW1lbmRpbmctdGhlLXJlcXVlc3Qtb2JqZWN0KS4KCklmIHlvdSB3YW50IHRvIG9ubHkgdmVyaWZ5IHRoZSByZXF1ZXN0IG9iamVjdCwgb3Igd2FudCB0byBleGVjdXRlIHNvbWUKYWRkaXRpb25hbCBjb2RlIGJlZm9yZSBleGVjdXRpbmcgdGhlIHJlcXVlc3QsIHRoZSBgbWFrZV9yZXF1ZXN0YCBjYW4gYmUKYnJva2VuIGRvd24gaW50byBgcHJlcGFyZV9yZXF1ZXN0YCBhbmQgYGZpbGVfcmVxdWVzdGAgbWV0aG9kcy4gVGhleSBhcmUgZGVmaW5lZAppbiBgb3Blbl9hcGlfdG9vbHMvdmFsaWRhdGUvaW5kZXgucHlgLgo= readmeEtag: '"a7af0734c202b1529b5714e250e6704e83ad128d"' readmeLastModified: Sun, 03 Dec 2023 21:12:15 GMT repositoryId: 348397827 description: 'A collection of useful tools powered by Open API schema ' created: '2021-03-16T15:25:48Z' updated: '2025-12-09T08:18:12Z' language: Python archived: false stars: 1 watchers: 1 forks: 0 owner: specify logo: https://avatars.githubusercontent.com/u/2906014?v=4 license: MIT repoEtag: '"534ee95be1e68fa9138e22bfefb4a1cacba759a7d8fd8cabbfb9086717162288"' repoLastModified: Tue, 09 Dec 2025 08:18:12 GMT foundInMaster: true category: Server Implementations id: c1acd58744726314a1310f44952bae71 - source: openapi3 tags repository: https://github.com/cmwylie19/gloo-portal-demo v3: true repositoryMetadata: base64Readme: >- IyBJbnN0YWxsIEdsb28gUG9ydGFsCgojIyBBZGQgdGhlIGhlbG0gcmVwbwpgYGAKaGVsbSByZXBvIGFkZCBkZXYtcG9ydGFsIGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kZXYtcG9ydGFsLWhlbG0KaGVsbSByZXBvIHVwZGF0ZQpgYGAKCiMjIENyZWF0ZSBoZWxtIHZhbHVlcyBvdmVycmlkZQpgYGAKY2F0IDw8IEVPRiA+IGdsb28tdmFsdWVzLnlhbWwKZ2xvbzoKICBlbmFibGVkOiB0cnVlICMgRW5hYmxlcyBpbnRlZ3JhdGlvbiB3aXRoIEdsb28gRWRnZSBFbnRlcnByaXNlCmxpY2Vuc2VLZXk6CiAgc2VjcmV0UmVmOgogICAgbmFtZTogbGljZW5zZQogICAgbmFtZXNwYWNlOiBnbG9vLXN5c3RlbQogICAga2V5OiBsaWNlbnNlLWtleQpFT0YKYGBgCgojIyBDcmVhdGUgdGhlIG5hbWVzcGFjZSBhbmQgaW5zdGFsbCB0aGUgaGVsbSBjaGFydApgYGAKayBjcmVhdGUgbnMgZGV2LXBvcnRhbApoZWxtIGluc3RhbGwgZGV2LXBvcnRhbCBkZXYtcG9ydGFsL2Rldi1wb3J0YWwgLW4gZGV2LXBvcnRhbCAtLXZhbHVlcyBnbG9vLXZhbHVlcy55YW1sCmBgYA== readmeEtag: '"b96bbff7b3b3226566129df502833bc7785e80bf"' readmeLastModified: Wed, 30 Jun 2021 13:16:07 GMT repositoryId: 381358694 description: >- Tasks backend service with OpenAPI v3 doc that stores tasks in NoSQL database. created: '2021-06-29T12:34:52Z' updated: '2021-06-30T13:16:16Z' language: Go archived: false stars: 0 watchers: 0 forks: 0 owner: cmwylie19 logo: https://avatars.githubusercontent.com/u/1096507?v=4 repoEtag: '"6f94fb7f16bf4d8dfbaea6736c8501c34976229ea52c86f606de85ea4a1c88b6"' repoLastModified: Wed, 30 Jun 2021 13:16:16 GMT foundInMaster: true category: - Documentation - Server Implementations id: bca57bb7f6cf16e67cd66a8722405ea1 - source: openapi3 tags repository: https://github.com/satabratapaul-gitac/managex v3: true repositoryMetadata: base64Readme: >- IyBNYW5hZ2VYCkFwcGxpY2F0aW9uIHdoaWNoIGhlbHBzIGFuIEhSIG9yIE1hbmFnZXIgLCB0byBtYW5hZ2UgdGhlIGRldGFpbHMgYW5kIGluZm9ybWF0aW9uIGZvciB2YXJpb3VzIGVtcGxveWVlcyBvZiBhbiBvcmdhbml6YXRpb24KCkl0IHByb3ZpZGVzIHRoZXNlIGZ1bmN0aW9uYWxpdGllczoKClJlZ2lzdHJhdGlvbiBvZiBhIFVzZXIgKEhSIG9yIE1hbmFnZXIpPGJyIC8+CkxvZ2dpbmcgSW4gdGhlIHVzZXI8YnIgLz4KRmV0Y2hpbmcgYWxsIEVtcGxveWVlIERldGFpbHM8YnIgLz4KQWRkaW5nIGEgTmV3IEVtcGxveWVlIHRvIHRoZSBzeXN0ZW08YnIgLz4KVXBkYXRpbmcgYW4gRXhpc3RpbmcgRW1wbG95ZWUncyBkZXRhaWxzPGJyIC8+CkRlbGV0aW5nIGFuIEV4aXN0aW5nIEVtcGxveWVlPGJyIC8+CkxvZ2lnbmcgT3V0IHRoZSBVc2VyPGJyIC8+Cg== readmeEtag: '"5025a0e7c38052d84dffac24d4d085a19209be01"' readmeLastModified: Sat, 29 Jan 2022 09:44:14 GMT repositoryId: 452796275 description: >- Application which helps an HR or Manager , to manage the details and information for various employees of an organization created: '2022-01-27T18:22:35Z' updated: '2022-02-11T08:36:53Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 2 owner: SatabrataPaul-GitAc logo: https://avatars.githubusercontent.com/u/69891965?v=4 repoEtag: '"26f342b0f2955f5f8b352c4a378de9315f33907314ae1fa31754594f4ef3e351"' repoLastModified: Fri, 11 Feb 2022 08:36:53 GMT foundInMaster: true category: - Parsers - Server Implementations id: 377aa09b014636fdf56671807bdf027b - source: openapi3 tags repository: https://github.com/weikangchia/op-converter v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIDMuMCB0byBQb3N0bWFuIDIuMSBDb2xsZWN0aW9ucyBDb252ZXJ0ZXIKCioqb3AtY29udmVydGVyKiogaXMgYSBjdXN0b21pemFibGUgY29udmVydGVyIGZvciBPcGVuQVBJIDMuMCB0byBQb3N0bWFuIDIuMSBDb2xsZWN0aW9ucy4KCiMjIEdldHRpbmcgU3RhcnRlZAoKIyMjIFByZS1yZXF1aXNpdGVzCgotIEluc3RhbGwgW25vZGVdKGh0dHBzOi8vbm9kZWpzLm9yZy9lbi9kb3dubG9hZC8pCi0gSW5zdGFsbCBvcC1jb252ZXJ0ZXIKICBgYGAKICBucG0gaW5zdGFsbCAtZyBvcC1jb252ZXJ0ZXIKICBgYGAKCiMjIyBVc2FnZQpgYGBzaC1zZXNzaW9uClVTQUdFOgogICAgb3AtY29udmVydGVyCgpPUFRJT05TOgogICAgLSBmLCAtLW9wZW5BcGlGaWxlPW9wZW5BcGlGaWxlICAgIHBhdGggdG8geW91ciBPcGVuQVBJIDMuMCBKU09OIGZpbGUKICAgIC0gaCwgLS1oZWxwICAgICAgICAgICAgICAgICAgICAgICBzaG93IENMSSBoZWxwCiAgICAtIG4sIC0tbmFtZT1uYW1lICAgICAgICAgICAgICAgICAgbmFtZSBmb3IgeW91ciBwb3N0bWFuIGNvbGxlY3Rpb24KICAgIC0tYmFzZVVybD1iYXNlVXJsICAgICAgICAgICAgICAgICBiYXNlIHVybAogICAgLS1jb25maWc9Y29uZmlnICAgICAgICAgICAgICAgICAgIGN1c3RvbSBjb25maWcgZmlsZSBuYW1lIChkZWZhdWx0IGlzIGNvbmZpZy5qc29uKQpgYGAKCioqRXhhbXBsZXMqKgpgYGAKb3AtY29udmVydGVyIC1mIC4vb3BlbmFwaS5qc29uIC1uICJNeSBDb2xsZWN0aW9uIiAtLWJhc2VVcmw9Imh0dHA6Ly9sb2NhbGhvc3QiID4gcG9zdG1hbi5qc29uCmBgYAoKIyMgQ29uZmlndXJhdGlvbiBPcHRpb25zCgpCeSBkZWZhdWx0ICoqb3AtY29udmVydGVyKiogcmVhZHMgYWxsIGNvbmZpZ3VyYWJsZSBvcHRpb25zIGZyb20gYGNvbmZpZy5qc29uYCBhdCB0aGUgZm9sbG93aW5nIGxvY2F0aW9uCgpgYGAKVW5peDogfi8uY29uZmlnL29wLWNvbnZlcnRlcgpXaW5kb3dzOiAlTE9DQUxBUFBEQVRBJVxnaXRjZwpgYGAKCkJlbG93IGFyZSB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYWJsZSBvcHRpb25zLgoKLSBbcGF0aF0oI3BhdGgpCiAgLSBbZW5hYmxlUmVwbGFjZVByZWZpeF0oI2VuYWJsZVJlcGxhY2VQcmVmaXgpCiAgLSBbcmVwbGFjZVByZWZpeF0oI3JlcGxhY2VQcmVmaXgpCiAgLSBbcmVwbGFjZVByZWZpeFdpdGhdKCNyZXBsYWNlUHJlZml4V2l0aCkKLSBbYXV0aF0oI2F1dGgpCi0gW2V2ZW50c10oI2V2ZW50cykKCiMjIyBwYXRoCgp8IE5hbWUgICAgICAgIHwgVmFsdWUgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tIHwtLS0tLS0tLS0tLS0tfAp8IHR5cGUgICAgICB8IG9iamVjdCB8CnwgbWFuZGF0b3J5IHwgZmFsc2UgfAoKRXhhbXBsZQpgYGBqc29uCnsKICAicGF0aCI6IHt9Cn0KYGBgCgojIyMjIGVuYWJsZVJlcGxhY2VQcmVmaXgKCgp8IE5hbWUgICAgICAgIHwgVmFsdWUgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tIHwtLS0tLS0tLS0tLS0tfAp8IHR5cGUgICAgICB8IGJvb2xlYW4gfAp8IHBhcmVudCAgICB8IHBhdGggfAp8IG1hbmRhdG9yeSB8IGZhbHNlIHwKfCBtYW5kYXRvcnkgc2libGluZ3MgfCByZXBsYWNlUHJlZml4LCByZXBsYWNlUHJlZml4V2l0aCB8CgpFeGFtcGxlCmBgYGpzb24KewogICJwYXRoIjogewogICAgImVuYWJsZVJlcGxhY2VQcmVmaXgiOiB0cnVlLAogICAgInJlcGxhY2VQcmVmaXgiOiAiL3YxIiwKICAgICJyZXBsYWNlUHJlZml4V2l0aCI6ICIiCiAgfQp9CmBgYAoKIyMjIyByZXBsYWNlUHJlZml4CgoKfCBOYW1lICAgICAgICB8IFZhbHVlICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLSB8LS0tLS0tLS0tLS0tLXwKfCB0eXBlICAgICAgfCBzdHJpbmcgfAp8IHBhcmVudCAgICB8IHBhdGggfAp8IG1hbmRhdG9yeSB8IGZhbHNlIHwKfCBtYW5kYXRvcnkgc2libGluZ3MgfCBlbmFibGVSZXBsYWNlUHJlZml4LCByZXBsYWNlUHJlZml4V2l0aCB8CgpFeGFtcGxlCmBgYGpzb24KewogICJwYXRoIjogewogICAgImVuYWJsZVJlcGxhY2VQcmVmaXgiOiB0cnVlLAogICAgInJlcGxhY2VQcmVmaXgiOiAiL3YxIiwKICAgICJyZXBsYWNlUHJlZml4V2l0aCI6ICIiCiAgfQp9CmBgYAoKIyMjIyByZXBsYWNlUHJlZml4V2l0aAoKCnwgTmFtZSAgICAgICAgfCBWYWx1ZSAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0gfC0tLS0tLS0tLS0tLS18CnwgdHlwZSAgICAgIHwgc3RyaW5nIHwKfCBwYXJlbnQgICAgfCBwYXRoIHwKfCBtYW5kYXRvcnkgfCBmYWxzZSB8CnwgbWFuZGF0b3J5IHNpYmxpbmdzIHwgZW5hYmxlUmVwbGFjZVByZWZpeCwgcmVwbGFjZVByZWZpeCB8CgpFeGFtcGxlCmBgYGpzb24KewogICJwYXRoIjogewogICAgImVuYWJsZVJlcGxhY2VQcmVmaXgiOiB0cnVlLAogICAgInJlcGxhY2VQcmVmaXgiOiAiL3YxIiwKICAgICJyZXBsYWNlUHJlZml4V2l0aCI6ICIiCiAgfQp9CmBgYAoKIyMjIGF1dGgKClBvc3RtYW4gQXV0aCBmaWVsZAoKfCBOYW1lICAgICAgICB8IFZhbHVlICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLSB8LS0tLS0tLS0tLS0tLXwKfCB0eXBlICAgICAgfCBvYmplY3QgfAp8IG1hbmRhdG9yeSB8IGZhbHNlIHwKCkV4YW1wbGUKYGBganNvbgp7CiAgImF1dGgiOiB7CiAgICAidHlwZSI6ICJiZWFyZXIiLAogICAgImJlYXJlciI6IFsKICAgICAgewogICAgICAgICJrZXkiOiAidG9rZW4iLAogICAgICAgICJ2YWx1ZSI6ICJ7e0NVUlJFTlRfQUNDRVNTX1RPS0VOfX0iLAogICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgfQogICAgXQogIH0KfQpgYGAKCiMjIyBldmVudHMKClBvc3RtYW4gZXZlbnQgZmllbGQKCnwgTmFtZSAgICAgICAgfCBWYWx1ZSAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0gfC0tLS0tLS0tLS0tLS18CnwgdHlwZSAgICAgIHwgYXJyYXkgfAp8IG1hbmRhdG9yeSB8IGZhbHNlIHwKCkV4YW1wbGUKYGBganNvbgp7CiAgImV2ZW50cyI6IFsKICAgIHsKICAgICAgImxpc3RlbiI6ICJ0ZXN0IiwKICAgICAgInNjcmlwdCI6IHsKICAgICAgICAiZXhlYyI6IFsKICAgICAgICAgICIiCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJ0ZXh0L2phdmFzY3JpcHQiCiAgICAgIH0KICAgIH0KICBdCn0KYGBgCgojIyBMaWNlbnNlCgpEaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBbTElDRU5TRV0obGljZW5zZSkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgojIyBDb250cmlidXRpbmcKQ29udHJpYnV0aW9ucyBhcmUgd2hhdCBtYWtlIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgc3VjaCBhbiBhbWF6aW5nIHBsYWNlIHRvIGJlIGxlYXJuLCBpbnNwaXJlLCBhbmQgY3JlYXRlLiBBbnkgY29udHJpYnV0aW9ucyB5b3UgbWFrZSBhcmUgZ3JlYXRseSBhcHByZWNpYXRlZC4KCiMjIENvbnRhY3QKCldlaSBLYW5nIC0gd2Vpa2FuZ2NoaWFbQF1nbWFpbC5jb20K readmeEtag: '"3f1969736fa631639b4b6f1f49b0fb3f9518e7a2"' readmeLastModified: Sun, 24 Apr 2022 11:05:58 GMT repositoryId: 392223452 description: Customizable Converter for OpenAPI 3.0 to Postman 2.1 Collections created: '2021-08-03T07:04:49Z' updated: '2021-11-20T15:06:15Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: weikangchia logo: https://avatars.githubusercontent.com/u/2174882?v=4 license: MIT repoEtag: '"ed84942d897ffae6b850a6b122913144df3feef696aa3852582d89d2fc3fb1d5"' repoLastModified: Sat, 20 Nov 2021 15:06:15 GMT foundInMaster: true category: - Description Validators - Parsers id: 90a8911f0b5f8cc9b0cb4c10ffc39819 - source: openapi3 tags repository: https://github.com/midouest/curdle v3: true id: cc9688d1cc4322f8aa6fadf53aadbcd9 repositoryMetadata: base64Readme: >- IyBjdXJkbGUKCkEgY2hlZXN5IHdvcmQgZ2FtZSBidWlsdCB0byBkZW1vbnN0cmF0ZSBEamFuZ28gUkVTVCBGcmFtZXdvcmsgYW5kIFJlZHV4IGNvZGUgZ2VuZXJhdGlvbgoKIVtdKC9pbWFnZXMvc2NyZWVuc2hvdC5wbmcpCgojIyBSZXF1aXJlbWVudHMKCi0gUHl0aG9uIDMuMTAKLSBQaXBlbnYKLSBOb2RlLmpzIDE4LjguMAotIG5wbSA4LjE5LjEKCiMjIFNldHVwCgojIyMgQ2hlY2sgb3V0IHRoZSByZXBvc2l0b3J5CgpgYGBiYXNoCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vbWlkb3Vlc3QvY3VyZGxlLmdpdApjZCBjdXJkbGUKYGBgCgojIyMgSW5zdGFsbCBQeXRob24gZGVwZW5kZW5jaWVzCgpgYGBiYXNoCnBpcGVudiBpbnN0YWxsIC0tZGV2CnBpcGVudiBzaGVsbApgYGAKCiMjIyBJbml0aWFsaXplIERqYW5nbyBkYXRhYmFzZQoKYGBgYmFzaApweXRob24gbWFuYWdlLnB5IG1pZ3JhdGUKcHl0aG9uIG1hbmFnZS5weSBjcmVhdGVzdXBlcnVzZXIKcHl0aG9uIG1hbmFnZS5weSBsb2FkX3dvcmRzIGRhdGEvYW5zd2Vycy50eHQgZGF0YS9ndWVzc2VzLnR4dApgYGAKCiMjIyBJbnN0YWxsIEphdmFTY3JpcHQgZGVwZW5kZW5jaWVzCgpgYGBiYXNoCmNkIHdlYgpucG0gaW5zdGFsbApgYGAKCiMjIExhdW5jaAoKIyMjIEJhY2tlbmQKCmBgYGJhc2gKcHl0aG9uIG1hbmFnZS5weSBydW5zZXJ2ZXIgODAwMApgYGAKCk9wZW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwL2RvY3MvIHRvIHZpZXcgdGhlIE9wZW5BUEkgc2NoZW1hCgojIyMgRnJvbnRlbmQKCmBgYGJhc2gKY2Qgd2ViCm5wbSBzdGFydApgYGAKCk9wZW4gaHR0cDovL2xvY2FsaG9zdDozMDAwIHRvIHZpZXcgdGhlIGFwcAoKIyMgQ29tbW9uIERldmVsb3BtZW50IFRhc2tzCgojIyMgQ29kZSBHZW5lcmF0aW9uCgpUbyByZWdlbmVyYXRlIHRoZSBPcGVuQVBJIHNjaGVtYSBhbmQgUmVkdXggQVBJIHNsaWNlLCBydW4gdGhlIFtjb2RlZ2VuXSgvc2NyaXB0cy9jb2RlZ2VuLnNoKSBzY3JpcHQgaW4gdGhlIHJvb3Qgb2YgdGhlIHJlcG9zaXRvcnk6CgpgYGBiYXNoCi4vc2NyaXB0cy9jb2RlZ2VuLnNoCmBgYAoKIyMjIFJlc2V0IEdhbWUgRGF0YQoKVG8gY2xlYXIgYWxsIGdhbWUgZGF0YSBhbmQgcmVsb2FkIHRoZSB3b3JkIGRhdGFiYXNlLCBydW4gdGhlIFtyZXNldF0oL3NjcmlwdHMvcmVzZXQuc2gpIHNjcmlwdCBpbiB0aGUgcm9vdCBvZiB0aGUgcmVwb3NpdG9yeToKCmBgYGJhc2gKLi9zY3JpcHRzL3Jlc2V0LnNoCmBgYAo= readmeEtag: '"8382f75ca2bef8fc0ce8d2409259392dbf1d48d5"' readmeLastModified: Mon, 26 Sep 2022 00:46:21 GMT repositoryId: 534877345 description: >- A cheesy word game built to demonstrate Django REST Framework and Redux code generation created: '2022-09-10T03:18:17Z' updated: '2022-09-10T16:03:37Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: midouest logo: https://avatars.githubusercontent.com/u/67558040?v=4 repoEtag: '"72e02ad2489a5741725d1d5e09c0ab22842065cba9f7da620f1f34635f262077"' repoLastModified: Sat, 10 Sep 2022 16:03:37 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/erickyudha/car-rental-backend-api_tdd v3: true id: 28f91e549f3517bccca172feb0674357 repositoryMetadata: base64Readme: >- IyBCQ1IgQmFja2VuZCBBUEkgKFRlc3QgRHJpdmVuIERldmVsb3BtZW50ICYgRGVwbG95bWVudCBDaGFsbGVuZ2UpCgpUaGlzIHByb2plY3QgaXMgYW4gaW5kaXZpZHVhbCBjaGFsbGVuZ2UgdG8gYnVpbGQgdW5pdCBhbmQgaW50ZWdyYXRpb24gdGVzdHMgZnJvbSBhIGdpdmVuIFtleHByZXNzIGJhY2tlbmQgYXBpIHByb2plY3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9lcmlja3l1ZGhhL2Nhci1yZW50YWwtYmFja2VuZC1hcGlfcmF3KSBhbmQgZGVwbG95aW5nIHRoaXMgYXBwIHVzaW5nIFtyYWlsd2F5LmFwcF0ocmFpbHdheS5hcHApLiAgCgpVbml0IGFuZCBpbnRlZ3JhdGlvbiB0ZXN0cyBmb3IgdGhpcyBwcm9qZWN0IGlzIGJ1aWx0IHVzaW5nIGBqZXN0YCBhbmQgYHN1cGVydGVzdGAuIFRlc3QgY292ZXJhZ2UgZGV0YWlscyBjYW4gYmUgc2VlbiBbaGVyZV0oI3Rlc3QtY292ZXJhZ2UpLiAgClN0eWxpbmcgZm9yIHRoaXMgamF2YXNjcmlwdCBwcm9qZWN0IGlzIGVuZm9yY2VkIHVzaW5nIEVTTGludCBbR29vZ2xlIEphdmFzY3JpcHQgc3R5bGUgZ3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZXNsaW50LWNvbmZpZy1nb29nbGUpLgoKVGhpcyBwcm9qZWN0IGlzIG1hZGUgYXMgcGFydCBvZiBCaW5hciBBY2FkZW15IGZ1bGxzdGFjayB3ZWIgZGV2ZWxvcG1lbnQgY291cnNlLgoKIyMgTGl2ZSBBcHBsaWNhdGlvbgoKVGhpcyBhcHBsaWNhdGlvbiBpcyBjdXJyZW50bHkgZGVwbG95ZWQgdXNpbmcgW3JhaWx3YXkuYXBwXShyYWlsd2F5LmFwcCkuICAKWW91IGNhbiBhY2Nlc3MgdGhpcyBhcHBsaWNhdGlvbiBvbiBbaHR0cHM6Ly9lcmljay1yZW50YWwudXAucmFpbHdheS5hcHAvXShodHRwczovL2VyaWNrLXJlbnRhbC51cC5yYWlsd2F5LmFwcC8pICAKICAKSW5mb3JtYXRpb24gYWJvdXQgc2VydmVyIHJvdXRlcyBhbmQgZG9jdW1lbnRhdGlvbiBjYW4gYmUgc2VlbiBbaGVyZV0oI3JvdXRlcy1hbmQtZG9jdW1lbnRhdGlvbikuCgojIyBSdW5uaW5nIExvY2FsIEFwcAoKVG8gcnVuIHRoaXMgYXBwbGljYXRpb24gaW4geW91ciBjb21wdXRlciB5b3UgY2FuIGZvbGxvdyB0aGVzZSBzdGVwcyBiZWxvdy4KCiMjIyBTZXR1cCBMb2NhbCBTZXJ2ZXIgYW5kIERhdGFiYXNlCgogICAgbnBtIGluc3RhbGwKClJ1biB0aGlzIGNvbW1hbmQgdG8gaW5zdGFsbCBhbGwgZGVwZW5kZW5jaWVzIG5lZWRlZCBieSB0aGlzIHByb2plY3QuCgogICAgbnBtIHJ1biBkYjpzZXR1cAoKQWZ0ZXIgdGhhdCwgcnVuIHRoaXMgY29tbWFuZCB0byBzZXR1cCBkYXRhYmFzZSB3aXRoIHNlcXVlbGl6ZS4gUmVtZW1iZXIgdG8gc2V0dXAgYC5lbnZgIGZpbGUgb24gdGhpcyBwcm9qZWN0IGZpcnN0IHdpdGggeW91ciBwb3N0Z3JlcyBkYXRhYmFzZSBkYXRhLCB5b3UgY2FuIGZvbGxvdyB0aGlzIGV4YW1wbGUgZmlsZSBbaGVyZV0oLmVudi5leGFtcGxlKS4gUmVtZW1iZXIgdG8gaGF2ZSB5b3VyIHBvc3RncmVzIGRhdGFiYXNlIGluc3RhbGxlZCBhbmQgcnVubmluZyBmaXJzdC4gCgoqKlJ1biB0aGlzIGRhdGFiYXNlIHNldHVwIGNvbW1hbmQgdHdpY2UsIHdpdGggZGlmZmVyZW50IGBOT0RFX0VOVmAgc2V0dGluZ3MgaW4gYC5lbnZgIGZpbGUuKiogICAKCjEuIGBOT0RFX0VOVj1kZXZlbG9wbWVudGAgKHRoaXMgaXMgdGhlIGRlZmF1bHQgc2V0dGluZyksIHVuaXQgdGVzdHMgaXMgdXNpbmcgZGF0YWJhc2UgaW4gdGhpcyBlbnZpcm9ubWVudC4KMi4gYE5PREVfRU5WPXRlc3RgLCBpbnRlZ3JhdGlvbiB0ZXN0cyBpcyB1c2luZyBkYXRhYmFzZSBpbiB0aGlzIGVudmlyb25tZW50LgoKKlRoaXMgaGF2ZSB0byBiZSBkb25lIHRvIGVuc3VyZSBib3RoIHVuaXQgYW5kIGludGVncmF0aW9uIHRlc3RzIHdvcmtpbmcgY29ycmVjdGx5KiAgCgojIyMgUnVubmluZyBTZXJ2ZXIKCiAgICBucG0gc3RhcnQKCnJ1biB0aGlzIGNvbW1hbmQgdG8gc3RhcnQgZXhwcmVzcyBzZXJ2ZXIgbm9ybWFsbHkuIFRvIHJ1biB0aGUgc2VydmVyIGluIGRldmVsb3BtZW50IG1vZGUsIHVzZSB0aGlzIGNvbW1hbmQgaW5zdGVhZDoKCiAgICBucG0gcnVuIGRldmVsb3AKClRvIHJ1biBib3RoIHVuaXQgYW5kIGludGVncmF0aW9uIHRlc3RzLCB1c2UgdGhpcyBjb21tYW5kOgoKICAgIG5wbSB0ZXN0CgojIyBSb3V0ZXMsIERvY3VtZW50YXRpb24sIGFuZCBUZXN0IENvdmVyYWdlCgojIyMgUm91dGVzIGFuZCBEb2N1bWVudGF0aW9uCgpEb2N1bWVudGF0aW9uIGFib3V0IEFQSSBpcyBhdmFpbGFibGUgaGVyZToKCnwgUm91dGUgfCBEZWZhdWx0IExvY2FsIExpbmsgfCBMaXZlIExpbmsgfAp8LS18LS18LS18CnwgYC9kb2N1bWVudGF0aW9uYCB8IGxvY2FsaG9zdDo4MDAwL2RvY3VtZW50YXRpb24gfCBodHRwczovL2VyaWNrLXJlbnRhbC51cC5yYWlsd2F5LmFwcC9kb2N1bWVudGF0aW9uLyB8CgpEZWZhdWx0IGFkbWluIGFjY291bnQgZGF0YSBpcyBhdmFpbGFibGUgYW5kIGNhbiBiZSBjaGFuZ2VkIGluIGxvY2FsIG9uIFtgY29uZmlnL2FkbWluLmpzYF0oY29uZmlnL2FkbWluLmpzKSB3aXRoIHRoaXMgYXMgZGVmYXVsdCBzZXR0aW5nczoKCiAgICB7CiAgICAgIG5hbWU6ICdtci5hZG1pbicsCiAgICAgIGVtYWlsOiAnYWRtaW5AYmluYXIuY28uaWQnLAogICAgICBwYXNzd29yZDogJ2FkbWluJywKICAgIH0KCiMjIyBUZXN0IENvdmVyYWdlCgpVbml0IGFuZCBpbnRlZ3JhdGlvbiB0ZXN0cyBjb3ZlcmFnZSBvZiB0aGlzIHByb2plY3QgaXMgKioqPjk3LjclKioqLCBkZXRhaWxzIGNhbiBiZSBzZWVuIG9uIHRoaXMgaW1hZ2UgYmVsb3cuCgohW2NvdmVyYWdlIHRlc3QgZGV0YWlsc10oZG9jcy9jb3ZlcmFnZS10ZXN0LnBuZykKCiFbY292ZXJhZ2UgdGVzdCBjb25zb2xlXShkb2NzL2NvdmVyYWdlLXRlc3QtY29uc29sZS5wbmcpCg== readmeEtag: '"9effb2962159e3313705293ef3b8a787fc1f93b5"' readmeLastModified: Thu, 17 Nov 2022 14:06:47 GMT repositoryId: 566986244 description: >- Test driven development and deployment challenge. Making unit and integration tests for an express backend api project using jest and supertest. Deployment using railway app. created: '2022-11-16T20:42:20Z' updated: '2022-11-17T05:32:47Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 1 owner: erickyudha logo: https://avatars.githubusercontent.com/u/72851075?v=4 license: MIT repoEtag: '"b6f17c9d269869296e88d2e7c7ae1779a1c7e6421a063b3cfd9d3e1835d869ac"' repoLastModified: Thu, 17 Nov 2022 05:32:47 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags repository: https://github.com/api-stuff/master-exploder v3: true id: b9307621f36f0c545fa02028ca188d86 repositoryMetadata: base64Readme: >- IyBNYXN0ZXIgRXhwbG9kZXIgKE9wZW5BUEkgZG9jdW1lbnQgdG8gInN0dWZmIikKClRoaXMgdXRpbGl0eSB0YWtlcyBhbiBPcGVuQVBJIGRvY3VtZW50IGFzIGlucHV0IGFuZCBkZXJlZmVyZW5jZXMgaXQsIGFuZCB0aGVuIHdyaXRlcyBhIGxvYWQgb2YgZGF0YSB0byBhbm90aGVyIGZvcm1hdC4KClJpZ2h0IG5vdyB0aGUgb25seSBzdXBwb3J0ZWQgZm9ybWF0IGlzIGRlbGltaXRlZCBkYXRhIHlvdSBjYW4gY29weSBpbnRvIGEgc3ByZWFkc2hlZXQgZXRjLCBidXQgaXQnbGwgZ2V0IGJldHRlciA6d2luazouCgojIyBJbnN0YWxsCgpUaGlzIGlzIGEgcHVibGljIE5QTSBwYWNrYWdlIG9uIHRoZSBHaXRIdWIgcmVnaXN0cnkuIFlvdSdsbCBuZWVkIGEgbmljZSBzZXR0aW5nIGluIHlvdXIgaG9tZSBgLm5wbXJjYCBmaWxlIGFzIGZvbGxvd3M6CgpgYGBiYXNoCkBhcGktc3R1ZmY6cmVnaXN0cnk9aHR0cHM6Ly9ucG0ucGtnLmdpdGh1Yi5jb20KLy9ucG0ucGtnLmdpdGh1Yi5jb20vOl9hdXRoVG9rZW49JHtHSVRIVUJfTlBNX1RPS0VOfQpgYGAKCldpdGggdGhhdCBpbiBoYW5kIHlvdSBjYW4gZG86CgpgYGBiYXNoCm5wbSBpbnN0YWxsIC1nIEBhcGktc3R1ZmYvbWFzdGVyLWV4cGxvZGVyQDEuMS4wCmBgYAoKYW5kIEJvYiBpcyB5b3VyIG1vdGhlcidzIGJyb3RoZXIuCgojIyBFeGVjdXRpb24KClRoZSBzY3JpcHQgdGFrZXMgYSBsaXN0IG9mIE9wZW5BUEkgZGVzY3JpcHRpb24gZG9jdW1lbnRzIGFuZCBsb29wcyBvdmVyIHRoZSBjb250ZW50cywgZ2VuZXJhdGluZyBvbmUgb3V0cHV0IGZvciB0aGUgc2NyaXB0OgoKYGBgYmFzaAptYXN0ZXItZXhwbG9kZXIgXAotLW91dHB1dCBleHBsb2RlZC50eHQgXAotLXJlcXVlc3QtY29udGVudC10eXBlICJhcHBsaWNhdGlvbi9qc29uIiBcCi0tcmVzcG9uc2UtY29udGVudC10eXBlICJhcHBsaWNhdGlvbi9qc29uIiBcCn4vRG93bmxvYWRzL2FjY291bnQtaW5mby1vcGVuYXBpLmpzb24KYGBgCgpUaGUgbG9nZ2luZyBpcyBgcGlub2AgZm9ybWF0dGluZywgc28gaWYgd2FudCBpdCBwcmV0dGllciB0aGVuIHBpcGUgdG8gYHBpbm8tcHJldHR5YCBpLmUuIGB8IG5weCBwaW5vLXByZXR0eWAuCgo6dGh1bWJzdXA6Cg== readmeEtag: '"ebb51ad35c33b516f0ee2c9c7a4d105c97897ba0"' readmeLastModified: Thu, 25 Jul 2024 11:52:10 GMT repositoryId: 503245695 description: >- A tool for exploding OpenAPI documents into various different formats (CSV, Gherkin, etc.) created: '2022-06-14T07:03:11Z' updated: '2025-07-30T15:10:38Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: api-stuff logo: https://avatars.githubusercontent.com/u/68026188?v=4 repoEtag: '"fb2a267d47c5747324c31817845124158923c9441df6b2c8fb0dd7d094109dc7"' repoLastModified: Wed, 30 Jul 2025 15:10:38 GMT category: Parsers foundInMaster: true - source: https://openapi.tools/ name: Kusk link: https://kusk.io repository: https://github.com/kubeshop/kusk language: Kubernetes source_description: >- Kusk makes your OpenAPI definition the source of truth for API resources in your cluster. v3: true repositoryMetadata: base64Readme: >- IyBLdXNrIENMSSAoYXJjaGl2ZWQpCgoqKlRoaXMgcmVwb3NpdG9yeSBpcyBub3cgZGVwcmVjYXRlZCoqIGFuZCBoYXZlIG1vdmVkIHRvIFtLdXNrIEdhdGV3YXkncyByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20va3ViZXNob3Ava3Vzay1nYXRld2F5KS4KCi0tLS0KCkt1c2sgaXMgYSBDTEkgdG9vbCBkZXNpZ25lZCB0byBoZWxwIHlvdSBtYW5hZ2UgY29tbW9uIHRhc2tzIHJlcXVpcmVkIHdoZW4gcnVubmluZyBLdXNrIEdhdGV3YXkuCgpDdXJyZW50bHkgd2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgoKLSBgaW5zdGFsbGAgLSBpbnN0YWxscyBLdXNrIEdhdGV3YXkgYW5kIGFsbCBpdHMgY29tcG9uZW50cyB3aXRoIGEgc2luZ2xlIGNvbW1hbmQuIChSZXF1aXJlcyBhIGhlbG0gaW5zdGFsbGF0aW9uKQotIGBhcGkgZ2VuZXJhdGVgIC0gZm9yIGNyZWF0aW5nIEt1c2sgR2F0ZXdheSBBUEkgcmVzb3VyY2VzIGZyb20geW91ciBPcGVuQVBJIHNwZWNpZmljYXRpb24gZG9jdW1lbnQuCgotLS0KCiMgVGFibGUgb2YgY29udGVudHMKCi0gW1VzYWdlXSgjdXNhZ2UpCiAgLSBbaW5zdGFsbF0oI2luc3RhbGwpCiAgLSBbYXBpIGdlbmVyYXRlXSgjYXBpLWdlbmVyYXRlKQogIC0gW2Rhc2hib2FyZF0oI2Rhc2hib2FyZCkKLSBbSW5zdGFsbGF0aW9uXSgjaW5zdGFsbGF0aW9uKQotIFtVcGRhdGluZ10oI3VwZGF0aW5nKQotIFtVbmluc3RhbGxhdGlvbl0oI3VuaW5zdGFsbGF0aW9uKQotIFtDb250cmlidXRpbmddKCNjb250cmlidXRpbmcpCi0gW0xpY2Vuc2VdKCNsaWNlbnNlKQoKIyBVc2FnZQoKIyMgSW5zdGFsbAoKIyMjIEZsYWdzCgp8ICAgICAgICAgRmxhZyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlcXVpcmVkPyB8CnwgOi0tLS0tLS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS06IHwKfCAgICAgICBgLS1uYW1lYCAgICAgICB8IHRoZSBwcmVmaXggb2YgdGhlIG5hbWUgdG8gZ2l2ZSB0byB0aGUgaGVsbSByZWxlYXNlcyBmb3IgZWFjaCBvZiB0aGUga3VzayBnYXRld2F5IGNvbXBvbmVudHMgKGRlZmF1bHQ6IGt1c2stZ2F0ZXdheSkgfCAgICAg4p2MICAgICB8CnwgYC0tbmFtZXNwYWNlYCAvIGAtbmAgfCAgdGhlIG5hbWVzcGFjZSB0byBpbnN0YWxsIGt1c2sgZ2F0ZXdheSBpbnRvLiBXaWxsIGNyZWF0ZSB0aGUgbmFtZXNwYWNlIGlmIGl0IGRvZXNuJ3QgZXhpc3QgKGRlZmF1bHQ6IGt1c2stc3lzdGVtKSAgIHwgICAgIOKdjCAgICAgfAp8ICAgYC0tbm8tZGFzaGJvYXJkYCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBzZXQsIHdpbGwgbm90IGluc3RhbGwgdGhlIGt1c2sgZ2F0ZXdheSBkYXNoYm9hcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICDinYwgICAgIHwKfCAgICAgIGAtLW5vLWFwaWAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHdoZW4gc2V0LCB3aWxsIG5vdCBpbnN0YWxsIHRoZSBrdXNrIGdhdGV3YXkgYXBpLiBpbXBsaWVzIC0tbm8tZGFzaGJvYXJkLiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg4p2MICAgICB8CnwgIGAtLW5vLWVudm95LWZsZWV0YCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHNldCwgd2lsbCBub3QgaW5zdGFsbCBhbnkgZW52b3kgZmxlZXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIOKdjCAgICAgfAoKIyMjIEV4YW1wbGVzCgpgYGBzaAokIGt1c2sgaW5zdGFsbAoKV2lsbCBpbnN0YWxsIGt1c2stZ2F0ZXdheSwgYSBwdWJsaWMgKGZvciB5b3VyIEFQSVMpIGFuZCBwcml2YXRlIChmb3IgdGhlIGt1c2sgZGFzaGJvYXJkIGFuZCBhcGkpCmVudm95LWZsZWV0LCBhcGksIGFuZCBkYXNoYm9hcmQgaW4gdGhlIGt1c2stc3lzdGVtIG5hbWVzcGFjZSB1c2luZyBoZWxtLgoKJCBrdXNrIGluc3RhbGwgLS1uYW1lPW15LXJlbGVhc2UgLS1uYW1lc3BhY2U9bXktbmFtZXNwYWNlCgpXaWxsIGNyZWF0ZSBhIGhlbG0gcmVsZWFzZSBuYW1lZCB3aXRoIC0tbmFtZSBpbiB0aGUgbmFtZXNwYWNlIHNwZWNpZmllZCBieSAtLW5hbWVzcGFjZS4KCiQga3VzayBpbnN0YWxsIC0tbm8tZGFzaGJvYXJkIC0tbm8tYXBpIC0tbm8tZW52b3ktZmxlZXQKCldpbGwgaW5zdGFsbCBrdXNrLWdhdGV3YXksIGJ1dCBub3QgdGhlIGRhc2hib2FyZCwgYXBpLCBvciBlbnZveS1mbGVldC4KYGBgCgojIyBBcGkgZ2VuZXJhdGUKCkdlbmVyYXRlIGFjY2VwdHMgeW91ciBPcGVuQVBJIHNwZWMgZmlsZSBhcyBpbnB1dCBlaXRoZXIgYXMgYSBsb2NhbCBmaWxlIG9yIGEgVVJMIHBvaW50aW5nIHRvIHlvdXIgZmlsZQphbmQgZ2VuZXJhdGVzIGEgS3VzayBHYXRld2F5IGNvbXBhdGlibGUgQVBJIHJlc291cmNlIHRoYXQgeW91IGNhbiBhcHBseSBkaXJlY3RseSBpbnRvIHlvdXIgY2x1c3Rlci4KCkNvbmZpZ3VyYXRpb24gb2YgdGhlIEFQSSByZXNvdXJjZSBpcyBkb25lIHZpYSB0aGUgeC1rdXNrIGV4dGVuc2lvbi4KCklmIHRoZSBPcGVuQVBJIHNwZWMgZG9lc24ndCBoYXZlIGEgdG9wLWxldmVsIHgta3VzayBhbm5vdGF0aW9uIHNldCwgaXQgd2lsbCBhZGQgdGhlbSBmb3IgeW91IGFuZCBzZXQKdGhlIHVwc3RyZWFtIHNlcnZpY2UsIG5hbWVzcGFjZSBhbmQgcG9ydCB0byB0aGUgZmxhZyB2YWx1ZXMgcGFzc2VkIGluIHJlc3BlY3RpdmVseSBhbmQgc2V0IHRoZSByZXN0IG9mIHRoZSBzZXR0aW5ncyB0byBkZWZhdWx0cy4KVGhpcyBpcyBlbm91Z2ggdG8gZ2V0IHlvdSBzdGFydGVkCgpJZiB0aGUgeC1rdXNrIGV4dGVuc2lvbiBpcyBhbHJlYWR5IHByZXNlbnQsIGl0IHdpbGwgb3ZlcnJpZGUgdGhlIHRoZSB1cHN0cmVhbSBzZXJ2aWNlLCBuYW1lc3BhY2UgYW5kIHBvcnQgdG8gdGhlIGZsYWcgdmFsdWVzIHBhc3NlZCBpbiByZXNwZWN0aXZlbHkKYW5kIGxlYXZlIHRoZSByZXN0IG9mIHRoZSBzZXR0aW5ncyBhcyB0aGV5IGFyZS4KCllvdSBtdXN0IHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIGVudm95ZmxlZXQgeW91IHdpc2ggdG8gdXNlIHRvIGV4cG9zZSB5b3VyIEFQSS4gVGhpcyBpcyBiZWNhdXNlIEt1c2sgR2F0ZXdheSBjb3VsZCBiZSBtYW5hZ2luZyBtb3JlIHRoYW4gb25lLgpJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGFkZCB0aGUgbm90aW9uIG9mIGEgZGVmYXVsdCBlbnZveWZsZWV0IHdoaWNoIGt1c2sgZ2F0ZXdheSB3aWxsIHVzZSB3aGVuIG5vbmUgaXMgc3BlY2lmaWVkLiBpLmUuIGt1c2stZ2F0ZXdheS1lbnZveS1mbGVldC4KCklmIHlvdSBkbyBub3Qgc3BlY2lmeSB0aGUgZW52b3lmbGVldCBuYW1lc3BhY2UsIGl0IHdpbGwgZGVmYXVsdCB0byBrdXNrLXN5c3RlbS4KClNhbXBsZSB1c2FnZQoKTm8gbmFtZSBzcGVjaWZpZWQKCmBgYHNoCmt1c2sgYXBpIGdlbmVyYXRlIFwKICAtaSBzcGVjLnlhbWwgXAogIC0tZW52b3lmbGVldC5uYW1lIGt1c2stZ2F0ZXdheS1lbnZveS1mbGVldCBcCiAgLS1lbnZveWZsZWV0Lm5hbWVzcGFjZSBrdXNrLXN5c3RlbQpgYGAKCkluIHRoZSBhYm92ZSBleGFtcGxlLCBrdXNrIHdpbGwgdXNlIHRoZSBvcGVuYXBpIHNwZWMgaW5mby50aXRsZSB0byBnZW5lcmF0ZSBhIG1hbmlmZXN0IG5hbWUgYW5kIGxlYXZlIHRoZSBleGlzdGluZwp4LWt1c2sgZXh0ZW5zaW9uIHNldHRpbmdzCgpObyBhcGkgbmFtZXNwYWNlIHNwZWNpZmllZAoKYGBgc2gKa3VzayBhcGkgZ2VuZXJhdGUgXAogIC1pIHNwZWMueWFtbCBcCiAgLS1uYW1lIGh0dHBiaW4tYXBpIFwKICAtLXVwc3RyZWFtLnNlcnZpY2UgaHR0cGJpbiBcCiAgLS11cHN0cmVhbS5wb3J0IDgwODAgXAogIC0tZW52b3lmbGVldC5uYW1lIGt1c2stZ2F0ZXdheS1lbnZveS1mbGVldApgYGAKCkluIHRoZSBhYm92ZSBleGFtcGxlLCBhcyAtLW5hbWVzcGFjZSBpc24ndCBkZWZpbmVkLCBpdCB3aWxsIGFzc3VtZSB0aGUgZGVmYXVsdCBuYW1lc3BhY2UuCgpOYW1lc3BhY2Ugc3BlY2lmaWVkCgpgYGBzaAprdXNrIGFwaSBnZW5lcmF0ZSBcCiAgLWkgc3BlYy55YW1sIFwKICAtLW5hbWUgaHR0cGJpbi1hcGkgXAogIC0tdXBzdHJlYW0uc2VydmljZSBodHRwYmluIFwKICAtLXVwc3RyZWFtLm5hbWVzcGFjZSBteS1uYW1lc3BhY2UgXAogIC0tdXBzdHJlYW0ucG9ydCA4MDgwIFwKICAtLWVudm95ZmxlZXQubmFtZSBrdXNrLWdhdGV3YXktZW52b3ktZmxlZXQKYGBgCgpPcGVuQVBJIHNwZWMgYXQgVVJMCgpgYGBzaAprdXNrIGFwaSBnZW5lcmF0ZSBcCiAgICAtaSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vJE9SR19PUl9VU0VSLyRSRVBPL215c3BlYy55YW1sIFwKICAgIC0tbmFtZSBodHRwYmluLWFwaSBcCiAgICAtLXVwc3RyZWFtLnNlcnZpY2UgaHR0cGJpbiBcCiAgICAtLXVwc3RyZWFtLm5hbWVzcGFjZSBteS1uYW1lc3BhY2UgXAogICAgLS11cHN0cmVhbS5wb3J0IDgwODAgXAogICAgLS1lbnZveWZsZWV0Lm5hbWUga3Vzay1nYXRld2F5LWVudm95LWZsZWV0CmBgYAoKVGhpcyB3aWxsIGZldGNoIHRoZSBPcGVuQVBJIGRvY3VtZW50IGZyb20gdGhlIHByb3ZpZGVkIFVSTCBhbmQgZ2VuZXJhdGUgYSBLdXNrIEdhdGV3YXkgQVBJIHJlc291cmNlCgojIyMgRmxhZ3MKCnwgICAgICAgICAgRmxhZyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlcXVpcmVkPyB8CnwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tOiB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOiB8IDotLS0tLS0tOiB8CnwgICAgICAgIGAtLW5hbWVgICAgICAgICB8IHRoZSBuYW1lIHRvIGdpdmUgdGhlIEFQSSByZXNvdXJjZSBlLmcuIC0tbmFtZSBteS1hcGkuIE90aGVyd2lzZSB0YWtlbiBmcm9tIE9wZW5BUEkgaW5mbyB0aXRsZSBmaWVsZCB8ICAgICDinYwgICAgIHwKfCAgYC0tbmFtZXNwYWNlYCAvIGAtbmAgIHwgdGhlIG5hbWVzcGFjZSBvZiB0aGUgQVBJIHJlc291cmNlIGUuZy4gLS1uYW1lc3BhY2UgbXktbmFtZXNwYWNlLCAtbiBteS1uYW1lc3BhY2UgKGRlZmF1bHQ6IGRlZmF1bHQpIHwgICAgIOKdjCAgICAgfAp8ICAgICBgLS1pbmAgLyBgLWlgICAgICAgfCAgICAgICBmaWxlIHBhdGggb3IgVVJMIHRvIE9wZW5BUEkgc3BlYyBmaWxlIHRvIGdlbmVyYXRlIG1hcHBpbmdzIGZyb20uIGUuZy4gLS1pbiBhcGlzcGVjLnlhbWwgICAgICAgfCAgICAg4pyFICAgICB8CnwgIGAtLXVwc3RyZWFtLnNlcnZpY2VgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBvZiB1cHN0cmVhbSBLdWJlcm5ldGVzIHNlcnZpY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICDinYwgICAgIHwKfCBgLS11cHN0cmVhbS5uYW1lc3BhY2VgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZSBvZiB1cHN0cmVhbSBzZXJ2aWNlIChkZWZhdWx0OiBkZWZhdWx0KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIOKdjCAgICAgfAp8ICAgYC0tdXBzdHJlYW0ucG9ydGAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgcG9ydCB0aGF0IHVwc3RyZWFtIHNlcnZpY2UgaXMgZXhwb3NlZCBvbiAoZGVmYXVsdDogODApICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg4p2MICAgICB8CnwgIGAtLWVudm95ZmxlZXQubmFtZWAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgb2YgZW52b3lmbGVldCB0byB1c2UgZm9yIHRoaXMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICDinIUgICAgIHwKfCBgZW52b3lmbGVldC5uYW1lc3BhY2VgIHwgICAgICAgICAgICAgICAgICBuYW1lc3BhY2Ugb2YgZW52b3lmbGVldCB0byB1c2UgZm9yIHRoaXMgQVBJLiBEZWZhdWx0OiBrdXNrLXN5c3RlbSAgICAgICAgICAgICAgICAgIHwgICAgIOKdjCAgICAgfAoKIyMjIEV4YW1wbGUKClRha2UgYSBsb29rIGF0IHRoZSBbYC4vZXhhbXBsZXMvaHR0cGJpbi1zcGVjLnlhbWxgXSguL2V4YW1wbGVzL2h0dHBiaW4tc3BlYy55YW1sKQoKYGBgc2gKa3VzayBhcGkgZ2VuZXJhdGUgLWkgLi9leGFtcGxlcy9odHRwYmluLXNwZWMueWFtbCAtLW5hbWUgaHR0cGJpbi1hcGkgLS11cHN0cmVhbS5zZXJ2aWNlIGh0dHBiaW4gLS11cHN0cmVhbS5wb3J0IDgwODAgLS1lbnZveWZsZWV0Lm5hbWUga3Vzay1nYXRld2F5LWVudm95LWZsZWV0CmBgYAoKVGhlIG91dHB1dCBzaG91bGQgY29udGFpbiB0aGUgZm9sbG93aW5nIHgta3VzayBleHRlbnNpb24gYXQgdGhlIHRvcCBsZXZlbAoKYGBgc2gKLi4uCngta3VzazoKICBjb3JzOiB7fQogIHBhdGg6CiAgICByZXdyaXRlOgogICAgICBwYXR0ZXJuOiAiIgogICAgICBzdWJzdGl0dXRpb246ICIiCiAgdXBzdHJlYW06CiAgICBzZXJ2aWNlOgoJbmFtZTogaHR0cGJpbgoJbmFtZXNwYWNlOiBkZWZhdWx0Cglwb3J0OiA4MDgwCmBgYAoKIyMgZGFzaGJvYXJkCkFjY2VzcyB0aGUga3VzayBkYXNoYm9hcmQuIGt1c2sgZGFzaGJvYXJkIHdpbGwgc3RhcnQgYSBwb3J0LWZvcndhcmQgc2Vzc2lvbiBvbiBwb3J0IDgwODAgdG8gdGhlIGVudm95ZmxlZXQKc2VydmluZyB0aGUgZGFzaGJvYXJkIGFuZCB3aWxsIG9wZW4gdGhlIGRhc2hib2FyZCBpbiB0aGUgYnJvd3Nlci4gQnkgZGVmYXVsdCB0aGlzIGlzIGt1c2stZ2F0ZXdheS1wcml2YXRlLWVudm95LWZsZWV0Lmt1c2stc3lzdGVtLgoKVGhlIGZsYWdzIC0tZW52b3lmbGVldC5uYW1lc3BhY2UgYW5kIC0tZW52b3lmbGVldC5uYW1lIGNhbiBiZSB1c2VkIHRvIGNoYW5nZSB0aGUgZW52b3lmbGVldC4KCiMjIyBGbGFncwp8ICAgICAgICAgICBGbGFnICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVxdWlyZWQ/IHwKfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOiB8IDotLS0tLS0tOiB8CnwgICAgICBgLS1rdWJlY29uZmlnYCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZSBwYXRoIHRvIGt1YmUgY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg4p2MICAgICB8CnwgICBgLS1lbnZveWZsZWV0Lm5hbWVgICAgIHwga3VzayBnYXRld2F5IGRhc2hib2FyZCBlbnZveSBmbGVldCBzZXJ2aWNlIG5hbWUuIChkZWZhdWx0OiBrdXNrLWdhdGV3YXktcHJpdmF0ZS1lbnZveS1mbGVldCkgfCAgICAg4p2MICAgICB8CnwgYC0tZW52b3lmbGVldC5uYW1lc3BhY2VgIHwgICAgICAgICBrdXNrIGdhdGV3YXkgZGFzaGJvYXJkIGVudm95IGZsZWV0IHNlcnZpY2UgbmFtZXNwYWNlLiAoZGVmYXVsdDoga3Vzay1zeXN0ZW0pICAgICAgICAgfCAgICAg4p2MICAgICB8CnwgICAgYC0tZXh0ZXJuYWwtcG9ydGAgICAgIHwgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsIHBvcnQgdG8gYWNjZXNzIGRhc2hib2FyZCBhdC4gKGRlZmF1bHQ6IDgwODApICAgICAgICAgICAgICAgICAgICAgfCAgICAg4p2MICAgICB8CgojIyMgRXhhbXBsZXMKCmBgYHNoCiQga3VzayBkYXNoYm9hcmQKYGBgCgpPcGVucyB0aGUga3VzayBnYXRld2F5IGRhc2hib2FyZCBpbiB0aGUgYnJvd3NlciBieSBleHBvc2luZyB0aGUgZGVmYXVsdCBwcml2YXRlIGVudm95IGZsZWV0IG9uIHBvcnQgODA4MAoKYGBgc2gKJCBrdXNrIGRhc2hib2FyZCAtLWVudm95ZmxlZXQubmFtZXNwYWNlPW90aGVyLW5hbWVzcGFjZSAtLWVudm95ZmxlZXQubmFtZT1vdGhlci1lbnZveS1mbGVldApgYGAKClNwZWNpZnkgb3RoZXIgZW52b3lmbGVldCBhbmQgbmFtZXNwYWNlIHRoYXQgaXMgc2VydmluZyB0aGUgZGFzaGJvYXJkCgpgYGBzaAokIGt1c2sgZGFzaGJvYXJkIC0tZXh0ZXJuYWwtcG9ydD05MDkwCmBgYAoKRXhwb3NlIGRhc2hib2FyZCBvbiBwb3J0IDkwOTAKCmBgYHNoCiQga3VzayBkYXNoYm9hcmQgLS1rdWJlY29uZmlnPS9wYXRoL3RvL2t1YmUvY29uZmlnCmBgYAoKU3BlY2lmeSBwYXRoIHRvIGt1YmUgY29uZmlnLiAkSE9NRS8ua3ViZS9jb25maWcgaXMgdXNlZCBieSBkZWZhdWx0LgoKIyBJbnN0YWxsYXRpb24KCiMjIEhvbWVicmV3CgpgYGBzaApicmV3IGluc3RhbGwga3ViZXNob3Ava3Vzay9rdXNrCmBgYAoKIyMgR28gaW5zdGFsbCB0aGUgbGF0ZXN0IHJlbGVhc2Ugb24gR2l0aHViCgpgYGBzaApnbyBpbnN0YWxsIGdpdGh1Yi5jb20va3ViZXNob3Ava3Vza0BsYXRlc3QKYGBgCgpUbyBpbnN0YWxsIGEgcGFydGljdWxhciB2ZXJzaW9uOiByZXBsYWNlIGBsYXRlc3RgIHdpdGggdGhlIHZlcnNpb24gbnVtYmVyCgpZb3UgY2FuIGdldCBhIGxpc3Qgb2YgdGhlIGF2YWlsYWJsZSBrdXNrIHZlcnNpb25zIGZyb20gb3VyIFtyZWxlYXNlcyBwYWdlXShodHRwczovL2dpdGh1Yi5jb20va3ViZXNob3Ava3Vzay9yZWxlYXNlcykKCiMjIEVhc3kgaW5zdGFsbCBzY3JpcHQKClRoaXMgd2lsbCBpbnN0YWxsIGBrdXNrYCBpbnRvIGAvdXNyL2xvY2FsL2Jpbi9rdXNrYAoKYGBgc2gKJCBjdXJsIC1zU0xmIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9rdWJlc2hvcC9rdXNrL21haW4vc2NyaXB0cy9pbnN0YWxsLnNoIHwgc2gKLi4uCmt1c2sgaW5zdGFsbGVkIGluIC91c3IvbG9jYWwvYmluL2t1c2sKYGBgCgojIyBGcm9tIHNvdXJjZQoKYGBgc2gKZ2l0IGNsb25lIGdpdEBnaXRodWIuY29tOmt1YmVzaG9wL2t1c2suZ2l0ICYmIFwKICBjZCBrdXNrICYmIFwKICBnbyBpbnN0YWxsCmBgYAoKIyMgQWx0ZXJuYXRpdmUgaW5zdGFsbGF0aW9uIG1ldGhvZCAobWFudWFsKQoKSWYgeW91IGRvbid0IGxpa2UgYXV0b21hdGljIHNjcmlwdHMgeW91IGNhbiBhbHdheXMgdXNlIHRoZSBtYW51YWwgaW5zdGFsbDoKCjEuIERvd25sb2FkIGJpbmFyeSB3aXRoIHZlcnNpb24gb2YgeW91ciBjaG9pY2UgKHJlY2VudCBvbmUgaXMgcmVjb21tZW5kZWQpLgoyLiBVbnBhY2sgaXQgKGB0YXIgLXp4dmYga3Vza18wLjEuMF9MaW51eF9hcm02NC50YXIuZ3pgKS4KMy4gTW92ZSBpdCB0byBhIGxvY2F0aW9uIGluIHRoZSBgUEFUSGAuIEZvciBleGFtcGxlIGBtdiBrdXNrXzAuMS4wX0xpbnV4X2FybTY0L2t1c2sgL3Vzci9sb2NhbC9iaW4va3Vza2AuCgpGb3IgV2luZG93cywgZG93bmxvYWQgdGhlIGJpbmFyeSBmcm9tIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20va3ViZXNob3Ava3Vzay9yZWxlYXNlcyksIHVucGFjayB0aGUgYmluYXJ5IGFuZCBhZGQgaXQgdG8gYCVQQVRIJWAuCgojIFVwZGF0aW5nCgojIyBIb21lYnJldwoKYGBgc2gKYnJldyB1cGdyYWRlIGt1YmVzaG9wL2t1c2sva3VzawpgYGAKCiMjIExhdGVzdCByZWxlYXNlIG9uIEdpdGh1YgoKYGBgc2gKZ28gaW5zdGFsbCBnaXRodWIuY29tL2t1YmVzaG9wL2t1c2tAbGF0ZXN0CmBgYAoKIyMgRnJvbSBzb3VyY2UKCkluc2lkZSBvZiB0aGUga3VzayByZXBvc2l0b3J5IGRpcmVjdG9yeQoKYGBgc2gKZ2l0IHB1bGwgJiYgZ28gaW5zdGFsbApgYGAKCiMgQ0xJIFJlZmVyZW5jZSAKCkZvciBkZXRhaWxlZCBjb21tYW5kIGxpbmUgcmVmZXJlbmNlIHZpc2l0IFtkb2NzXShkb2NzL2t1c2subWQpCiMgQ29udHJpYnV0aW5nCgpZb3VyIGNvbnRyaWJ1dGlvbnMgYXJlIGFsd2F5cyB3ZWxjb21lISBQbGVhc2UgaGF2ZSBhIGxvb2sgYXQgW0hvdyB0byBjb250cmlidXRlXShodHRwczovL2dpdGh1Yi5jb20va3ViZXNob3AvLmdpdGh1Yi9ibG9iL21haW4vQ09OVFJJQlVUSU5HLm1kKSBmaXJzdC4KCiMjIyBEZXZlbG9wbWVudAoKYGBgc2gKbWFrZQouL2t1c2sgLS1oZWxwCmBgYAoKIyBMaWNlbnNlCgpbVGhlIE1JVCBMaWNlbnNlXShodHRwczovL21pdC1saWNlbnNlLm9yZy8pLgoKUGxlYXNlIGhhdmUgYSBsb29rIGF0IHRoZSBbYC4vTElDRU5TRWBdKC4vTElDRU5TRSkgZm9yIG1vcmUgZGV0YWlscy4K readmeEtag: '"b3b36f64d95a7b67e18e776f08517bd167f37126"' readmeLastModified: Wed, 12 Oct 2022 11:05:43 GMT repositoryId: 425900868 description: CLI for Kusk Gateway related functionality created: '2021-11-08T15:54:35Z' updated: '2024-02-24T22:05:47Z' language: Go archived: false stars: 7 watchers: 13 forks: 1 owner: kubeshop logo: https://avatars.githubusercontent.com/u/82541796?v=4 license: MIT repoEtag: '"3a974591c7845c53e47798c2217f914f8ddfd17f66e2889eb72eec2e1da60e4a"' repoLastModified: Sat, 24 Feb 2024 22:05:47 GMT foundInMaster: true id: 5a0e82ad543d0aaa0ce624ce0a747f6b category: Server Implementations - source: openapi3 tags repository: https://github.com/yoaquim/zemi v3: true id: b1513f51d7a1d3ba8db7b3fb1d92c0d7 repositoryMetadata: base64Readme: >- IyB6ZW1pCgpbIVtidWlsZF0oaHR0cHM6Ly9naXRodWIuY29tL3lvYXF1aW0vemVtaS9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3lvYXF1aW0vemVtaS9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwpClshW0NvZGUgQ2xpbWF0ZSBDb3ZlcmFnZV0oaHR0cHM6Ly9jb2RlY2xpbWF0ZS5jb20vZ2l0aHViL3lvYXF1aW0vemVtaS9iYWRnZXMvY292ZXJhZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY2xpbWF0ZS5jb20vZ2l0aHViL3lvYXF1aW0vemVtaS9jb3ZlcmFnZSkKWyFbQ29kZSBDbGltYXRlIE1haW50YWluYWJpbGl0eV0oaHR0cHM6Ly9jb2RlY2xpbWF0ZS5jb20vZ2l0aHViL3lvYXF1aW0vemVtaS9iYWRnZXMvZ3BhLnN2ZyldKGh0dHBzOi8vY29kZWNsaW1hdGUuY29tL2dpdGh1Yi95b2FxdWltL3plbWkpClshW1NueWsuaW8gVnVsbmVyYWJpbGl0aWVzXShodHRwczovL3NueWsuaW8vdGVzdC9naXRodWIveW9hcXVpbS96ZW1pL2JhZGdlLnN2Zz90YXJnZXRGaWxlPXBhY2thZ2UuanNvbildKGh0dHBzOi8vc255ay5pby90ZXN0L2dpdGh1Yi95b2FxdWltL3plbWk/dGFyZ2V0RmlsZT1wYWNrYWdlLmpzb24pCgpbIVtucG0gVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi96ZW1pP2NvbG9yPTEzN2RjMiZsb2dvPW5wbSldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3plbWkpClshW1R5cGVzXShodHRwczovL2JhZGdlbi5uZXQvbnBtL3R5cGVzL3plbWkpXShodHRwczovL2dpdGh1Yi5jb20veW9hcXVpbS96ZW1pL3RyZWUvbWFpbi9zcmMvdHlwZXMpClshW0RlcGVuZGVuY2llc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9kZXBlbmRlbmNpZXMtMi1ibHVlKV0oaHR0cHM6Ly9naXRodWIuY29tL3lvYXF1aW0vemVtaS9ibG9iL21haW4vcGFja2FnZS5qc29uI0wyNy1MMzApClshW0luc3RhbGwgU2l6ZV0oaHR0cHM6Ly9wYWNrYWdlcGhvYmlhLmNvbS9iYWRnZT9wPXplbWkpXShodHRwczovL3BhY2thZ2VwaG9iaWEuY29tL3Jlc3VsdD9wPXplbWkpClshW0xpY2Vuc2VdKGh0dHBzOi8vYmFkZ2VuLm5ldC9ucG0vbGljZW5zZS96ZW1pKV0oaHR0cHM6Ly9naXRodWIuY29tL3lvYXF1aW0vemVtaS9ibG9iL21haW4vTElDRU5TRS5tZCkKCjxicj4KCnplbWkgaXMgYSBbZGF0YS1kcml2ZW5dKCNkYXRhLWRyaXZlbikgcm91dGluZyBsaWJyYXJ5IGZvciBbRXhwcmVzc10oaHR0cHM6Ly9leHByZXNzanMuY29tLyksIGJ1aWx0IHdpdGggVHlwZXNjcmlwdC4KCkZlYXR1cmVzOgoKLSBbcmV2ZXJzZS1yb3V0aW5nXSgjcmV2ZXJzZS1yb3V0aW5nKQotIFtwYXRoLXBhcmFtZXRlciBpbmhlcml0YW5jZV0oI3BhcmFtZXRlci1pbmhlcml0YW5jZSkKLSByb3V0ZS1sZXZlbCBbbWlkZGxld2FyZSBzdXBwb3J0XSgjbWlkZGxld2FyZSkKCjxicj4KCiMgVGFibGUgb2YgQ29udGVudHMKCjEuIFtSb3V0aW5nXSgjcm91dGluZykKICAgIDEuIFtEYXRhLWRyaXZlbl0oI2RhdGEtZHJpdmVuKQogICAgMi4gW1JldmVyc2Utcm91dGluZ10oI3JldmVyc2Utcm91dGluZykKICAgIDMuIFtNaWRkbGV3YXJlXSgjbWlkZGxld2FyZSkKICAgIDQuIFtQYXJhbWV0ZXIgSW5oZXJpdGFuY2VdKCNwYXJhbWV0ZXItaW5oZXJpdGFuY2UpCjIuIFtUeXBlc10oI3R5cGVzKQogICAgMS4gW1plbWlNZXRob2RdKCN6ZW1pbWV0aG9kKQogICAgMi4gW1plbWlSZXF1ZXN0SGFuZGxlcl0oI3plbWlyZXF1ZXN0aGFuZGxlcikKICAgIDMuIFtaZW1pUmVxdWVzdF0oI3plbWlyZXF1ZXN0KQogICAgNC4gW1plbWlSZXNwb25zZV0oI3plbWlyZXNwb25zZSkKICAgIDUuIFtaZW1pUm91dGVEZWZpbml0aW9uXSgjemVtaXJvdXRlZGVmaW5pdGlvbikKICAgIDYuIFtaZW1pUm91dGVdKCN6ZW1pcm91dGUpCjMuIFtFeGFtcGxlc10oI2V4YW1wbGVzKQogICAxLiBbU2ltcGxlXShodHRwczovL2dpdGh1Yi5jb20veW9hcXVpbS96ZW1pL2Jsb2IvbWFpbi9leGFtcGxlcy9zaW1wbGUudHMpCiAgIDIuIFtXaXRoIE1pZGRsZXdhcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS95b2FxdWltL3plbWkvYmxvYi9tYWluL2V4YW1wbGVzL3dpdGgtbWlkZGxld2FyZS50cykKICAgMy4gW1VzaW5nIE5hbWVkIFJvdXRlcyBGb3IgUmVkaXJlY3RzXShodHRwczovL2dpdGh1Yi5jb20veW9hcXVpbS96ZW1pL2Jsb2IvbWFpbi9leGFtcGxlcy91c2luZy1uYW1lZC1yb3V0ZXMtZm9yLXJlZGlyZWN0LnRzKQogICA0LiBbVXNpbmcgUmV2ZXJzZSBSb3V0aW5nXShodHRwczovL2dpdGh1Yi5jb20veW9hcXVpbS96ZW1pL2Jsb2IvbWFpbi9leGFtcGxlcy91c2luZy1yZXZlcnNlLXJvdXRpbmcudHMpCiAgIDUuIFtXaXRoIFBhcmFtIEluaGVyaXRhbmNlIGZyb20gUGFyZW50IFJvdXRlc10oaHR0cHM6Ly9naXRodWIuY29tL3lvYXF1aW0vemVtaS9ibG9iL21haW4vZXhhbXBsZXMvbmVzdGVkLXJvdXRlLXBhcmFtLWluaGVyaXRhbmNlLnRzKQo0LiBbTGltaXRhdGlvbnNdKCNsaW1pdGF0aW9ucykKCjxicj4KCiMjIFJvdXRpbmcKCiMjIyBEYXRhLWRyaXZlbgoKQXNzdW1lIHlvdSBoYXZlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGRlZmluZWQ6IGBwZXRzSGFuZGxlcmAsIGBkb2dCcmVlZEhhbmRsZXJgLCBgZG9nQnJlZWRzSWRIYW5kbGVyYCwgYGNhdHNCeUlkSGFuZGxlcmAgOyBlLmcuOgoKYGBgdHMKY29uc3QgcGV0c0hhbmRsZXIgPSAocmVxdWVzdDogWmVtaVJlcXVlc3QsIHJlc3BvbnNlOiBaZW1pUmVzcG9uc2UpID0+IHsKICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGlzIHJlcXVlc3QgYW5kIHJlc3BvbmQKICByZXNwb25zZS5zdGF0dXMoMjAwKS5qc29uKHsgcGV0czogWyJkb2dzIiwgImNhdHMiXSB9KTsKfTsKCmNvbnN0IGRvZ0JyZWVkSGFuZGxlciA9IChyZXF1ZXN0OiBaZW1pUmVxdWVzdCwgcmVzcG9uc2U6IFplbWlSZXNwb25zZSkgPT4gewogICAvLy4uLgp9OwoKY29uc3QgZG9nQnJlZWRzSWRIYW5kbGVyID0gKHJlcXVlc3Q6IFplbWlSZXF1ZXN0LCByZXNwb25zZTogWmVtaVJlc3BvbnNlKSA9PiB7CiAgIC8vLi4uCn07Cgpjb25zdCBjYXRzQnlJZEhhbmRsZXIgPSAocmVxdWVzdDogWmVtaVJlcXVlc3QsIHJlc3BvbnNlOiBaZW1pUmVzcG9uc2UpID0+IHsKICAgLy8uLi4KfTsKYGBgCgpUaGVuIHRoZSBmb2xsb3dpbmcgY29kZToKCmBgYHRzCmltcG9ydCBleHByZXNzIGZyb20gImV4cHJlc3MiOwppbXBvcnQgemVtaSwgeyBaZW1pUm91dGUsIFplbWlNZXRob2QgfSBmcm9tICJ6ZW1pIjsKCmNvbnN0IHsgR0VUIH0gPSBaZW1pTWV0aG9kOwoKY29uc3Qgcm91dGVzOiBBcnJheTxaZW1pUm91dGU+ID0gWwogIHsKICAgIG5hbWU6ICJwZXRzIiwKICAgIHBhdGg6ICIvcGV0cyIsCiAgICBbR0VUXTogcGV0c0hhbmRsZXIsCiAgICByb3V0ZXM6IFsKICAgICAgewogICAgICAgIG5hbWU6ICJkb2dCcmVlZHMiLAogICAgICAgIHBhdGg6ICIvZG9ncy86YnJlZWQiLAogICAgICAgIFtHRVRdOiBkb2dCcmVlZEhhbmRsZXIsCiAgICAgICAgcm91dGVzOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgIG5hbWU6ICJkb2dzQnlCcmVlZEJ5SWQiLAogICAgICAgICAgICBwYXRoOiAiLzppZCIsCiAgICAgICAgICAgIFtHRVRdOiBkb2dCcmVlZHNJZEhhbmRsZXIKICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBuYW1lOiAiY2F0c0J5SWQiLAogICAgICAgIHBhdGg6ICIvY2F0cy86aWQiLAogICAgICAgIFtHRVRdOiBjYXRzQnlJZEhhbmRsZXIKICAgICAgfQogICAgXQogIH0KXTsKCmNvbnN0IGFwcCA9IGV4cHJlc3MoKTsKYXBwLnVzZShleHByZXNzLmpzb24oKSk7CmFwcC51c2UoIi8iLCB6ZW1pKHJvdXRlcykpOwphcHAubGlzdGVuKDMwMDApOwpgYGAKCkdlbmVyYXRlcyBhbiBBUEkgbGlrZToKCnwgcm91dGVzICAgICAgICAgICAgICAgICAgfCByZXNwb25zZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBgL3BldHNgICAgICAgICAgICAgICAgICB8IGB7cGV0czogWydkb2dzJywgJ2NhdHMnLCAncmFiYml0cyddfWAgICAgICAgICAgICAgICB8CnwgYC9wZXRzL2RvZ3NgICAgICAgICAgICAgfCBgQ2Fubm90IEdFVCAvcGV0cy9kb2dzL2AgKHNpbmNlIGl0IHdhcyBub3QgZGVmaW5lZCkgfAp8IGAvcGV0cy9kb2dzL2xhYnJhZG9yYCAgIHwgYHsicmVzdWx0IjpbIkZyZWQiLCJCYXJuZXkiLCJXaWxtYSJdfWAgICAgICAgICAgICAgIHwKfCBgL3BldHMvZG9ncy9sYWJyYWRvci8xYCB8IGB7InJlc3VsdCI6IkJhcm5leSJ9YCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgYC9wZXRzL2NhdHNgICAgICAgICAgICAgfCBgQ2Fubm90IEdFVCAvcGV0cy9jYXRzL2AgKHNpbmNlIGl0IHdhcyBub3QgZGVmaW5lZCkgfAp8IGAvcGV0cy9jYXRzLzJgICAgICAgICAgIHwgYHsicmVzdWx0IjoiRGFwaG5lIn1gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCjxicj4KCiMjIyBSZXZlcnNlLXJvdXRpbmcKCnplbWkgYnVpbGRzIHJvdXRlLWRlZmluaXRpb25zIGZvciBhbGwgcm91dGVzIGFuZCBhZGRzIHRoZW0gdG8gdGhlIFtgWmVtaVJlcXVlc3RgXSgjemVtaXJlcXVlc3QpIHBhc3NlZCB0byB0aGUgaGFuZGxlciBmdW5jdGlvbi4KCkFsbCByb3V0ZS1kZWZpbml0aW9ucyBhcmUgbmFtZWQgKGluZGV4LWFjY2Vzc2libGUpIGFuZCBmb2xsb3cgdGhlIHNhbWUgbmFtaW5nIGNvbnZlbnRpb246IGBbYW5jZXN0b3Igcm91dGUgbmFtZXNdLVtwYXJlbnQgcm91dGUgbmFtZV0tW3JvdXRlIG5hbWVdYCwgZS5nLiBgYmFzZVBhdGgtZ3JlYXRHcmFuZHBhcmVudC1ncmFuZHBhcmVudC1wYXJlbnQtbXlSb3V0ZWAsIGBwZXRzLWRvZ3NCcmVlZHMtZG9nc0J5QnJlZWRCeUlkYC4KCkVhY2ggcm91dGUtZGVmaW5pdGlvbiBjb250YWlucyB0aGUgbmFtZSwgcGF0aCwgYW5kIHBhdGgtcGFyYW1ldGVycyAoaWYgcHJlc2VudCkgb2YgdGhlIHJvdXRlLgpJdCBhbHNvIGNvbnRhaW5zIGEgcmV2ZXJzZSBmdW5jdGlvbiB3aGljaCDigJQgd2hlbiBpbnZva2VkIHdpdGggYW4gb2JqZWN0IG1hcHBpbmcgcGF0aC1wYXJhbWV0ZXJzIHRvIHZhbHVlcyDigJQgd2lsbCByZXR1cm4gdGhlIGludGVycG9sYXRlZCBwYXRoIHdpdGggdmFsdWVzLgoKRS5nLiBhIGhhbmRsZXIgbGlrZSB0aGlzOgoKYGBgdHMKaW1wb3J0IHsgWmVtaVJlcXVlc3QsIFplbWlSZXNwb25zZSwgWmVtaVJvdXRlRGVmaW5pdGlvbiB9IGZyb20gInplbWkiOwoKY29uc3QgcGV0c0hhbmRsZXIgPSAocmVxdWVzdDogWmVtaVJlcXVlc3QsIHJlc3BvbnNlOiBaZW1pUmVzcG9uc2UpID0+IHsKICBjb25zdCByb3V0ZURlZmluaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBaZW1pUm91dGVEZWZpbml0aW9uPiA9IHJlcXVlc3Qucm91dGVEZWZpbml0aW9uczsKICBjb25zdCB7IHBhdGgsIG5hbWUsIHBhcmFtZXRlcnMsIHJldmVyc2UgfSA9IHJvdXRlRGVmaW5pdGlvbnNbInBldHMtZG9nQnJlZWRzLWRvZ3NCeUJyZWVkQnlJZCJdOwogIHJlc3BvbnNlLnN0YXR1cygyMDApLmpzb24oeyBwYXRoLCBuYW1lLCBwYXJhbWV0ZXJzLCByZXZlcnNlOiByZXZlcnNlKHsgYnJlZWQ6ICdDb3JnaScsIGlkOiAnOTknIH0pIH0pOwp9OwpgYGAKClJldHVybnM6CgpgYGBqc29uCiAgewogICJwYXRoIjogIi9wZXRzL2RvZ3MvOmJyZWVkLzppZCIsCiAgIm5hbWUiOiAicGV0cy1kb2dCcmVlZHMtZG9nc0J5QnJlZWRCeUlkIiwKICAicGFyYW1ldGVycyI6IFsKICAgICJicmVlZCIsCiAgICAiaWQiCiAgXSwKICAicmV2ZXJzZSI6ICIvcGV0cy9kb2dzL2NvcmdpLzk5Igp9CmBgYAoKVGhpcyBhbGxvd3MgeW91IHRvIGdlbmVyYXRlIGxpbmtzLCByZWRpcmVjdCwgYW5kIGNoYW5nZSBwYXRoIHZhbHVlcyB3aXRob3V0IGhhdmluZyB0byBoYXJkY29kZSBzdHJpbmdzIGFuZCBjaGFuZ2UgdGhlbSBsYXRlci4KCjxicj4KCiMjIyBNaWRkbGV3YXJlCgp6ZW1pIGxldHMgeW91IGRlZmluZSBtaWRkbGV3YXJlIGZ1bmN0aW9ucyBhdCB0aGUgcm91dGUgbGV2ZWw6CgpSZXRha2luZyBhbmQgdHdlYWtpbmcgb3VyIGV4YW1wbGUgZnJvbSB0aGUgYmVnaW5uaW5nOgoKYGBgdHMKaW1wb3J0IHsgWmVtaVJlcXVlc3QsIFplbWlSZXNwb25zZSB9IGZyb20gInplbWkiOwppbXBvcnQgeyBOZXh0RnVuY3Rpb24gfSBmcm9tICJleHByZXNzIjsKCmNvbnN0IHJvdXRlczogQXJyYXk8WmVtaVJvdXRlPiA9IFsKICB7CiAgICBuYW1lOiAicGV0cyIsCiAgICBwYXRoOiAiL3BldHMiLAogICAgW0dFVF06IHBldHNIYW5kbGVyLAogICAgcm91dGVzOiBbCiAgICAgIHsKICAgICAgICBuYW1lOiAiZG9nQnJlZWRzIiwKICAgICAgICBwYXRoOiAiL2RvZ3MvOmJyZWVkIiwKICAgICAgICBbR0VUXTogZG9nQnJlZWRIYW5kbGVyLAogICAgICAgIG1pZGRsZXdhcmU6IFsKICAgICAgICAgIGZ1bmN0aW9uIGxvZ1JvdXRlRGVmcyhyZXF1ZXN0OiBaZW1pUmVxdWVzdCwgcmVzcG9uc2U6IFplbWlSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcXVlc3Qucm91dGVEZWZpbml0aW9ucykpOwogICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICByb3V0ZXM6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgbmFtZTogImRvZ3NCeUJyZWVkQnlJZCIsCiAgICAgICAgICAgIHBhdGg6ICIvOmlkIiwKICAgICAgICAgICAgW0dFVF06IGRvZ0JyZWVkc0lkSGFuZGxlcgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgIG5hbWU6ICJjYXRzQnlJZCIsCiAgICAgICAgcGF0aDogIi9jYXRzLzppZCIsCiAgICAgICAgW0dFVF06IHsgaGFuZGxlcjogY2F0c0J5SWRIYW5kbGVyIH0KICAgICAgfQogICAgXQogIH0KXTsKYGBgCgpUaGUgbWlkZGxld2FyZSBmdW5jdGlvbiBgbG9nUm91dGVEZWZzYCBkZWZpbmVkIGF0IHRoZSBgZG9nQnJlZWRzYCBsZXZlbCB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIHRoZSBtZXRob2RzIGF0IHRoYXQgbGV2ZWwgYW5kIGFsbCBuZXN0ZWQgcm91dGVzIOKAlCB3aGljaCBtZWFucyBvdXIgYGRvZ3NCeUJyZWVkQnlJZGAgcm91dGUgd2lsbCBnYWluIHRoYXQgZnVuY3Rpb25hbGl0eSBhbHNvLgoKPGJyPgoKIyMjIFBhcmFtZXRlciBJbmhlcml0YW5jZQoKQXMgc2hvdyBpbiBwcmV2aW91cyBleGFtcGxlcywgcGFyYW1ldGVycyBkZWZpbmVkIGF0IHBhcmVudCByb3V0ZXMgYXJlIHBhc3NlZCBhbmQgYXZhaWxhYmxlIHRvIG5lc3RlZCByb3V0ZXMuCgpFLmcuIGluIHRoaXMgcHVycG9zZWZ1bGx5IGNvbnZvbHV0ZWQgZXhhbXBsZToKCmBgYHRzCmNvbnN0IHJvdXRlczogQXJyYXk8WmVtaVJvdXRlPiA9IFsKICB7CiAgICBuYW1lOiAicGV0cyIsCiAgICBwYXRoOiAiL3BldHMiLAogICAgW0dFVF06IHBldHNIYW5kbGVyLAogICAgcm91dGVzOiBbCiAgICAgIHsKICAgICAgICBuYW1lOiAiZG9nQnJlZWRzIiwKICAgICAgICBwYXRoOiAiL2RvZ3MvOmJyZWVkIiwKICAgICAgICBbR0VUXTogZG9nQnJlZWRIYW5kbGVyLAogICAgICAgIHJvdXRlczogWwogICAgICAgICAgewogICAgICAgICAgICBuYW1lOiAiZG9nc0J5QnJlZWRCeUlkIiwKICAgICAgICAgICAgcGF0aDogIi86aWQiLAogICAgICAgICAgICBbR0VUXTogZG9nQnJlZWRzSWRIYW5kbGVyLAogICAgICAgICAgICByb3V0ZXM6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuYW1lOiAiZG9nc0J5QnJlZWRCeUlkRGV0YWlsc1NlY3Rpb24iLAogICAgICAgICAgICAgICAgcGF0aDogIi9kZXRhaWxzLzpzZWN0aW9uIiwKICAgICAgICAgICAgICAgIFtHRVRdOiBkb2dCcmVlZHNJZERldGFpbHNTZWN0aW9uSGFuZGxlciwKICAgICAgICAgICAgICAgIHJvdXRlczogWwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbmFtZTogIm5ld0RvZ3NCeUJyZWVkQnlJZERldGFpbHNTZWN0aW9uIiwKICAgICAgICAgICAgICAgICAgICBwYXRoOiAiL25ldyIsCiAgICAgICAgICAgICAgICAgICAgW1BPU1RdOiBuZXdEb2dzQnlCcmVlZEJ5SWREZXRhaWxzU2VjdGlvbkhhbmRsZXIKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfQogICAgXQogIH0KXTsKYGBgCgpUaGUgYG5ld0RvZ3NCeUJyZWVkQnlJZERldGFpbHNTZWN0aW9uYCByb3V0ZSAocGF0aDogYC9wZXRzL2RvZ3MvOmJyZWVkLzppZC9kZXRhaWxzLzpzZWN0aW9uL25ld2ApIHdpbGwgaGF2ZSBgYnJlZWRgLCBgaWRgLCBhbmQgYHNlY3Rpb25gIGF2YWlsYWJsZSBhcyByZXF1ZXN0IHBhcmFtZXRlcnMgaW4gdGhlIFplbWlSZXF1ZXN0IG9iamVjdC4KCjxicj4KCiMjIFR5cGVzCgojIyMgYFplbWlNZXRob2RgCgoqRW51bSoKClRoZSBIVFRQIG1ldGhvZHMgc3VwcG9ydGVkIGJ5IFtgWmVtaVJvdXRlYF0oI3plbWlyb3V0ZSkuCgp8IE1lbWJlciAgICB8IFZhbHVlICAgICB8CnwtLS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwKfCBgR0VUYCAgICAgfCBgZ2V0YCAgICAgfAp8IGBQT1NUYCAgICB8IGBwb3N0YCAgICB8CnwgYFBVVGAgICAgIHwgYHB1dGAgICAgIHwKfCBgREVMRVRFYCAgfCBgZGVsZXRlYCAgfAp8IGBPUFRJT05TYCB8IGBvcHRpb25zYCB8Cgo8YnI+CgojIyMgYFplbWlSZXF1ZXN0SGFuZGxlcmAKCkhvdyB0byBoYW5kbGUgaW5jb21pbmcgcmVxdWVzdHMgZm9yIHRoaXMgcm91dGUgbWV0aG9kOyBiYXNpY2FsbHkgYGV4cHJlc3MuUmVxdWVzdEhhbmRsZXJgLCBidXQgZ2V0cyBwYXNzZWQgaXRzIG93biByZXF1ZXN0IGFuZCByZXNwb25zZSB2ZXJzaW9ucywgcGx1cyBhZGRzIHRoYXQgcm91dGVzIFtgWmVtaVJvdXRlRGVmaW5pdGlvbmBdKCN6ZW1pcm91dGVkZWZpbml0aW9uKSBhcyBhbiBvcHRpb25hbCBmb3VydGggcGFyYW0uCgpgYGB0cwooCiAgcmVxdWVzdDogWmVtaVJlcXVlc3QsCiAgcmVzcG9uc2U6IFplbWlSZXNwb25zZSwKICBuZXh0OiBleHByZXNzLk5leHRGdW5jdGlvbiwKICByb3V0ZURlZjogWmVtaVJvdXRlRGVmaW5pdGlvbgopID0+IHZvaWQKYGBgCgo8YnI+CgojIyMgYFplbWlSZXF1ZXN0YAoKKmV4dGVuZHMgYGV4cHJlc3MuUmVxdWVzdGAqCgpBIHdyYXBwZXIgZm9yIGBleHByZXNzLlJlcXVlc3RgOyBhZGRzIGByb3V0ZURlZmluaXRpb25zYCBhbmQgYGFsbG93ZWRSZXNwb25zZUh0dHBDb2Rlc2AgdG8gaXQuCgpgYGB0cwp7CiAgcm91dGVEZWZpbml0aW9uczogUmVjb3JkPHN0cmluZywgWmVtaVJvdXRlRGVmaW5pdGlvbj47CiAgLy8gYWxsIG90aGVyIG1lbWJlcnMgZnJvbSBleHByZXNzLlJlcXVlc3QKfQoKYGBgCgo8YnI+CgojIyMgYFplbWlSZXNwb25zZWAKCipleHRlbmRzIGBleHByZXNzLlJlc3BvbnNlYCoKCkp1c3QgYSB3cmFwcGVyIGZvciBmdXR1cmUtcHJvb2Zpbmc7IHNhbWUgYXMgYGV4cHJlc3MuUmVzcG9uc2VgLgoKPGJyPgoKIyMjIGBaZW1pUm91dGVEZWZpbml0aW9uYAoKUm91dGUgZGVmaW5pdGlvbiBmb3IgYSBnaXZlbiBbYFplbWlSb3V0ZWBdKCN6ZW1pcm91dGUpLgpDb250YWlucyB0aGUgbmFtZSwgcGF0aCwgYW5kIHBhdGgtcGFyYW1ldGVycyAoaWYgcHJlc2VudCkgb2YgdGhlIHJvdXRlIGl0J3MgZGVmaW5pbmcuCkFsc28gcHJvdmlkZXMgYSBgcmV2ZXJzZWAgZnVuY3Rpb24gdGhhdCwgd2hlbiBpbnZva2VkIHdpdGggYW4gb2JqZWN0IHRoYXQgaGFzIHBhcmFtZXRlci12YWx1ZXMsIHdpbGwgcmV0dXJuIHRoZSByZXNvbHZlZCBwYXRoLgoKYGBgdHMKewogIG5hbWU6IHN0cmluZzsKICBwYXRoOiBzdHJpbmc7CiAgcGFyYW1ldGVyczogQXJyYXk8c3RyaW5nPjsKICByZXZlcnNlOiAocGFyYW1ldGVyVmFsdWVzOiBvYmplY3QpID0+IHN0cmluZzsKfQpgYGAKCjxicj4KCiMjIyBgWmVtaVJvdXRlYAoKSXQgbXVzdCBiZSBwcm92aWRlZCBhIGBuYW1lOiBzdHJpbmdgIGFuZCBgcGF0aDogc3RyaW5nYDsgYSBbW2BaZW1pTWV0aG9kYF0oI3plbWltZXRob2QpXTpbYFplbWlSZXF1ZXN0SGFuZGxlcmBdKCN6ZW1pcmVxdWVzdGhhbmRsZXIpIG5lZWRzIHRvIGJlIHByb3ZpZGVkIGlmIHRoYXQgcGF0aCBzaG91bGQgaGF2ZSBmdW5jdGlvbmFsaXR5LCBidXQgZG9lc24ndCBuZWVkIHRvIGJlIGlmIHRoZSBwYXRoIGlzIGp1c3QgcHJlc2VudCBhcyBhIHBhdGgtcHJlZml4IGZvciBuZXN0ZWQgcm91dGVzLgoKYGBgCnsKICAgW1plbWlNZXRob2RdOiBaZW1pUmVxdWVzdEhhbmRsZXI7CiAgIG5hbWU6IHN0cmluZzsKICAgcGF0aDogc3RyaW5nOwogICBtaWRkbGV3YXJlPzogQXJyYXk8UmVxdWVzdEhhbmRsZXI+OwogICByb3V0ZXM/OiBBcnJheTxaZW1pUm91dGU+Owp9CmBgYAoKPGJyPgoKIyMgRXhhbXBsZXMKCkV4YW1wbGVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIFtleGFtcGxlc10oaHR0cHM6Ly9naXRodWIuY29tL3lvYXF1aW0vemVtaS9ibG9iL21haW4vZXhhbXBsZXMpIGRpcjoKCjEuIFtTaW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS95b2FxdWltL3plbWkvYmxvYi9tYWluL2V4YW1wbGVzL3NpbXBsZS50cykKCjIuIFtXaXRoIE1pZGRsZXdhcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS95b2FxdWltL3plbWkvYmxvYi9tYWluL2V4YW1wbGVzL3dpdGgtbWlkZGxld2FyZS50cykKCjMuIFtVc2luZyBOYW1lZCBSb3V0ZXMgRm9yIFJlZGlyZWN0c10oaHR0cHM6Ly9naXRodWIuY29tL3lvYXF1aW0vemVtaS9ibG9iL21haW4vZXhhbXBsZXMvdXNpbmctbmFtZWQtcm91dGVzLWZvci1yZWRpcmVjdC50cykKIAo0LiBbVXNpbmcgUmV2ZXJzZSBSb3V0aW5nXShodHRwczovL2dpdGh1Yi5jb20veW9hcXVpbS96ZW1pL2Jsb2IvbWFpbi9leGFtcGxlcy91c2luZy1yZXZlcnNlLXJvdXRpbmcudHMpCgo1LiBbV2l0aCBQYXJhbSBJbmhlcml0YW5jZSBmcm9tIFBhcmVudCBSb3V0ZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS95b2FxdWltL3plbWkvYmxvYi9tYWluL2V4YW1wbGVzL25lc3RlZC1yb3V0ZS1wYXJhbS1pbmhlcml0YW5jZS50cykKCjxicj4KCiMjIExpbWl0YXRpb25zCgp6ZW1pIGlzIGEgcmVjdXJzaXZlIGxpYnJhcnk6IGl0IHVzZXMgcmVjdXJzaW9uIGFjcm9zcyBhIG51bWJlciBvZiBvcGVyYXRpb25zIGluIG9yZGVyIHRvIGZhY2lsaXRhdGUgYSBsb3cgZm9vdHByaW50IGFuZCBzdHJhaWdodGZvcndhcmQsIGRlY2xhcmF0aXZlIGRlZmluaXRpb25zLgoKUmVjdXJzaXZlIG9wZXJhdGlvbnMgY2FuIGJyZWFrIHRoZSBjYWxsLXN0YWNrIGJ5IGdvaW5nIG92ZXIgaXRzIGxpbWl0LCBnZW5lcmF0aW5nIGBNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZGAgZXJyb3JzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHJlY3Vyc2l2ZSBmdW5jdGlvbiB3YXMgY2FsbGVkIHRvbyBtYW55IHRpbWVzLCBhbmQgZXhjZWVkZWQgdGhlIGxpbWl0IHBsYWNlZCBvbiBpdCBieSBOb2RlLgoKV2hpbGUgcmVjdXJzaXZlIGZ1bmN0aW9ucyBfY2FuXyBiZSBvcHRpbWl6ZWQgdmlhIFt0YWlsIGNhbGwgb3B0aW1pemF0aW9uXShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMTA5NzQvd2hhdC1pcy10YWlsLWNhbGwtb3B0aW1pemF0aW9uKSAoVENPKSwgdGhhdCBmZWF0dXJlIF9oYXNfIHRvIGJlIHByZXNlbnQgaW4gdGhlIGVudmlyb25tZW50IGJlaW5nIHJ1biBmb3Igb3B0aW1pemF0aW9uIHRvIHdvcmsuCgpVbmZvcnR1bmF0ZWx5IOKAlCBhcyBvZiBOb2RlIDgueCDigJQgVENPIGlzIFtub10oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjMyNjAzOTAvbm9kZS1qcy10YWlsLWNhbGwtb3B0aW1pemF0aW9uLXBvc3NpYmxlLW9yLW5vdCkgW2xvbmdlcl0oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDI3ODgxMzkvZXM2LXRhaWwtcmVjdXJzaW9uLW9wdGltaXNhdGlvbi1zdGFjay1vdmVyZmxvdy80Mjc4ODI4NiM0Mjc4ODI4NikgW3N1cHBvcnRlZF0oaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9NDY5OCkuCgpUaGlzIG1lYW5zIHRoYXQsIGRlcGVuZGluZyBvbiB3aGF0IHlvdSdyZSBidWlsZGluZyBhbmQgdGhlIHNpemUgb2YgeW91ciBBUEksIHplbWkgbWlnaHQgbm90IGJlIHRoZSByaWdodCBmaXQgZm9yIHlvdS4gemVtaSB1c2VzIHJlY3Vyc2lvbiB3aGVuIGRlYWxpbmcgd2l0aCBuZXN0ZWQgcm91dGVzLCBzbyBpZiB5b3VyIGFwcGxpY2F0aW9uIGhhcyBhIHZlcnkgaGlnaCBudW1iZXIgb2YgbmVzdGVkLXJvdXRlcyB3aXRoaW4gbmVzdGVkLXJvdXRlcywgY2hhbmNlcyBhcmUgeW91IG1pZ2h0IGV4Y2VlZCB0aGUgY2FsbCBzdGFjay4K readmeEtag: '"aad25ee30ed3e6bcf649789d5afe288234cc13bd"' readmeLastModified: Sat, 13 Jan 2024 12:49:58 GMT repositoryId: 512997745 description: zemi is a data-driven and reverse-routing library for Express JS. created: '2022-07-12T04:26:47Z' updated: '2025-12-31T11:59:36Z' language: TypeScript archived: true stars: 6 watchers: 1 forks: 0 owner: yoaquim logo: https://avatars.githubusercontent.com/u/702200?v=4 license: ISC repoEtag: '"daf166ea10c1ba07deb77c1996a1cf369ac86d701c4392f01db3b61bc1ab9c30"' repoLastModified: Wed, 31 Dec 2025 11:59:36 GMT category: Parsers foundInMaster: true - source: openapi3 tags repository: https://github.com/rpstreef/openapi-node-example v3: true repositoryMetadata: base64Readme: >- IyBPcGVuQVBJIE5vZGUgY29kZSBleGFtcGxlCgojIEFib3V0OgoKVGhpcyByZXBvIGdvZXMgdG9nZXRoZXIgd2l0aCB0aGUgW09wZW5BUEkgVGVycmFmb3JtIHJlcG9dKGh0dHBzOi8vZ2l0aHViLmNvbS9ycHN0cmVlZi9vcGVuYXBpLXRmLWV4YW1wbGUpLgoKVGhpcyBqdXN0IGhvbGRzIHRoZSBOb2RlSlMgY29kZSB0aGF0IGdldHMgZGVwbG95ZWQgd2l0aCB0aGUgQ29kZVBpcGVsaW5lIHNldHVwLg== readmeEtag: '"cd3f3ed1687207a83b1b87b52a0e85d7c6094cce"' readmeLastModified: Thu, 27 Aug 2020 05:57:04 GMT repositoryId: 244096270 description: OpenAPI Node code example created: '2020-03-01T06:02:39Z' updated: '2020-08-27T05:57:07Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 2 owner: rpstreef logo: https://avatars.githubusercontent.com/u/15830262?v=4 license: Apache-2.0 repoEtag: '"311bae09b0e30d40bebe142488be0e85edca24453b7e1add1e433c5cc3ab6b2d"' repoLastModified: Thu, 27 Aug 2020 05:57:07 GMT foundInMaster: true category: - Server - Server Implementations id: f1f8b2f0640eb6e3b082bdd243da2680 - source: openapi3 tags repository: https://github.com/reekoheek/xin-openapi v3: true repositoryMetadata: base64Readme: >- IyB4aW4tZXhhbXBsZQoKU3RhcnQgdG8gZGV2ZWxvcCBpcyBlYXN5LCBkb3dubG9hZCBleGFtcGxlIGZyb20gYGh0dHBzOi8vZ2l0aHViLmNvbS9yZWVrb2hlZWsveGluLWV4YW1wbGVgIG9yIGNsb25lLgoKYGBgYmFzaApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3JlZWtvaGVlay94aW4tZXhhbXBsZS5naXQgbXktYXBwCmNkIG15LWFwcApucG0gcnVuIGRldgpgYGAKCiMjIFJFRkVSRU5DRVMKCi0gaHR0cDovL3BldHN0b3JlLnN3YWdnZXIuaW8vCi0gaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vdHJlZS9PcGVuQVBJLm5leHQvZXhhbXBsZXMvdjMuMAotIGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZwotIGh0dHBzOi8va291bW91bC5jb20vb3BlbmFwaS12aWV3ZXIvP2NvbmZpZz1odHRwczovL2tvdW1vdWwuY29tL3MvZ2VvY29kZXIvYXBpL3YyL2FwaS1kb2NzLmpzb24KLSBodHRwczovL29wZW5hcGktZ3VpLmhlcm9rdWFwcC5jb20vCi0gaHR0cHM6Ly90ZW1hbmRvLmdpdGh1Yi5pby9vcGVuLWFwaS1yZW5kZXJlci9kZW1vLz91cmw9aHR0cHM6Ly90ZW1hbmRvLmdpdGh1Yi5pby9vcGVuLWFwaS1yZW5kZXJlci9wZXRzdG9yZS1vcGVuLWFwaS12My4wLjAtUkMyLmpzb24jL3BldC9wdXQKLSBodHRwczovL21pa2VyYWxwaHNvbi5naXRodWIuaW8vaW9kb2N0b3IvCgojIyBUT0RPCgotIFNob3cgcm91dGUgZGF0YSBmcm9tIHNwZWMK readmeEtag: '"cfbae69f75fc2686de3b5d005bb569329a91fa59"' readmeLastModified: Mon, 17 Jul 2017 11:48:15 GMT repositoryId: 96982618 description: null created: '2017-07-12T08:15:16Z' updated: '2017-07-12T08:24:59Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: reekoheek logo: https://avatars.githubusercontent.com/u/299394?v=4 license: MIT repoEtag: '"ce17dffb4200cf79ac194b483134bb474529a774794828f49434544b4d59455f"' repoLastModified: Wed, 12 Jul 2017 08:24:59 GMT foundInMaster: true category: - Code Generators - Parsers id: 89a09d094b623be98be9de35f0c24ddb - source: openapi3 tags repository: https://github.com/aristat/http-server v3: true repositoryMetadata: base64Readme: >- IyBIdHRwIFNlcnZlcgoKSXQncyBzbWFsbCBleGFtcGxlIGh0dHAgc2VydmVyIGJhc2VkIG9uIG9wZW5hcGkuIE5vdCBzdWl0YWJsZSBmb3IgbWljcm9zZXJ2aWNlcywgaXQncyBiZXR0ZXIgdG8gbG9vayB0byB0aGUgW2tpdF0oaHR0cHM6Ly9naXRodWIuY29tL2dvLWtpdC9raXQpIAoKIyBHZW5lcmF0ZSBhcGkuZ2VuLmdvCgpgYGAKb2FwaS1jb2RlZ2VuIC1wYWNrYWdlIGFwaSAtZ2VuZXJhdGUgdHlwZXMsY2hpLXNlcnZlcixzcGVjIC1vIGludGVybmFsL2FwcC9hcGkvYXBpLmdlbi5nbyBvcGVuYXBpLnlhbWwKYGBgCgojIFJ1bgoKYGBgCmdvIG1vZCBkb3dubG9hZApnbyBydW4gbWFpbi5nbyBzCmN1cmwgbG9jYWxob3N0OjMwMDAvYXBpL3YxL3Byb2R1Y3RzLzEKYGBgCg== readmeEtag: '"6790e11e256924c464b88c11c4bfe59c53592e85"' readmeLastModified: Sun, 28 Mar 2021 08:22:29 GMT repositoryId: 352156965 description: Example http server created: '2021-03-27T19:16:25Z' updated: '2021-10-06T23:45:40Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: Aristat logo: https://avatars.githubusercontent.com/u/4936284?v=4 repoEtag: '"0bf1f640a3e9313c4293947748060caae97bfecd85605db14bbcf615b64e2f3e"' repoLastModified: Wed, 06 Oct 2021 23:45:40 GMT foundInMaster: true category: - Code Generators - Server Implementations id: c3ba39fc99eb3dedefa20d63a670abc0 - source: openapi3 tags repository: https://github.com/thavorath/oas v3: true repositoryMetadata: base64Readme: >- IyMgRXhwZXJpbWVudGFsIE9wZW5BUEkgMyBkb2N1bWVudGF0aW9uIGdlbmVyYXRvcgoKIyMjIFVzYWdlCgpTaW1wbHkgZ28gZ2V0IGFuZCBydW4gdGhpcyBpbiB5b3VyIHByb2plY3QgZm9sZGVyLiBJdCB3aWxsIGdlbmVyYXRlIGEgYXBpLnNwZWMgZmlsZS4gVXNlIHRoaXMgZmlsZSBpbiB5b3VyIFN3YWdnZXIzIFVJLgoKYGBgCmdvIGdldCBnaXRodWIuY29tL3RoYXZvcmF0aC9vYXMKZ28gaW5zdGFsbCBnaXRodWIuY29tL3RoYXZvcmF0aC9vYXMKY2Qgfi9nby9zcmMvZ2l0aHViLmNvbS90aGF2b3JhdGgvbXktcHJvamVjdApvYXMKYGBgCgo= readmeEtag: '"75b5f9b61f96f2fa9d69f30359b2983bfda0fed9"' readmeLastModified: Wed, 23 Jan 2019 05:55:49 GMT repositoryId: 163516751 description: An experimental OpenAPI 3 spec generator created: '2018-12-29T14:20:42Z' updated: '2019-01-23T05:56:11Z' language: Go archived: false stars: 0 watchers: 1 forks: 0 owner: thavorath logo: https://avatars.githubusercontent.com/u/4705578?v=4 license: MIT repoEtag: '"994324055584445f51161289698a561a69f3c41a7bbc45472e854f3547b95079"' repoLastModified: Wed, 23 Jan 2019 05:56:11 GMT foundInMaster: true category: - SDK - Parsers id: f92bfce6656d9a106c977eb131d93178 - source: openapi3 tags repository: https://github.com/wa-craft/generator-deno v3: true id: 9d24f32b166443ca6d133c30fe8f0838 repositoryMetadata: base64Readme: >- IyBnZW5lcmF0b3IKQW4gb3BlbmFwaSBnZW5lcmF0b3IgZm9yIHdhLWNyYWZ0L2VkaXRvciB3cml0dGVuIGluIERlbm8gdGhhdCBpbiByZXBsYWNlIG9mIHRoZSBvZmZpY2lhbCBvcGVuYXBpLWdlbmVyYXRvci4KCiMgV2FybmluZwpUaGlzIHJlcG9zaXRvcnkgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcGluZywgRE8gTk9UIHRyeSB0byB1c2UgaXQgaW4gYSByZWFsIHByb2plY3QhCklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbiBwbGVhc2UgY3JlYXRlIGEgbmV3IGlzc3VlLg== readmeEtag: '"7ac9ace8daba83d6f26f76d764c5265966155bb4"' readmeLastModified: Thu, 02 Jun 2022 06:32:05 GMT repositoryId: 458208409 description: >- An openapi generator for wa-craft/editor written in Deno that in replace of the official openapi-generator. created: '2022-02-11T13:58:45Z' updated: '2025-06-23T02:59:25Z' language: TypeScript archived: true stars: 0 watchers: 1 forks: 0 owner: wa-craft logo: https://avatars.githubusercontent.com/u/99487287?v=4 license: MIT repoEtag: '"fa3ab48866e8f04dbb04077a4ce67cdfb57403730d8c55c3895f5995edcab9c7"' repoLastModified: Mon, 23 Jun 2025 02:59:25 GMT category: - Parsers - Server Implementations foundInMaster: true oldLocations: - https://github.com/wa-craft/generator - source: openapi3 tags repository: https://github.com/neo-f/soda v3: true id: 207bdae87d0101f1d3d6c8b7ef8a7dd6 repositoryMetadata: base64Readme: >- IyBTb2RhCgpbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2l0aHViL25lby1mL3NvZGEvYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmc/dG9rZW49dVlIWTlEQ2JOZSldKGh0dHBzOi8vY29kZWNvdi5pby9naXRodWIvbmVvLWYvc29kYSkKCioqU29kYSoqIGlzIGEgcG93ZXJmdWwgR28gbGlicmFyeSB0aGF0IHNlYW1sZXNzbHkgaW50ZWdyYXRlcyBbT3BlbkFQSSAzXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbikgZG9jdW1lbnRhdGlvbiB3aXRoIHRoZSBbRmliZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb2ZpYmVyL2ZpYmVyKSB3ZWIgZnJhbWV3b3JrLiBJdCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlcyBjb21wcmVoZW5zaXZlIEFQSSBkb2N1bWVudGF0aW9uIGZyb20geW91ciBHbyBzdHJ1Y3RzIGFuZCByb3V0ZSBkZWZpbml0aW9ucywgZWxpbWluYXRpbmcgdGhlIG5lZWQgZm9yIG1hbnVhbCBPcGVuQVBJIHNwZWNpZmljYXRpb24gd3JpdGluZy4KCiMjIPCfmoAgRmVhdHVyZXMKCi0gKipBdXRvbWF0aWMgT3BlbkFQSSAzIEdlbmVyYXRpb24qKjogR2VuZXJhdGUgY29tcGxldGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBmcm9tIEdvIHN0cnVjdHMKLSAqKkZpYmVyIEludGVncmF0aW9uKio6IEJ1aWx0IHNwZWNpZmljYWxseSBmb3IgdGhlIEZpYmVyIHdlYiBmcmFtZXdvcmsKLSAqKlplcm8gQ29uZmlndXJhdGlvbioqOiBXb3JrcyBvdXQgb2YgdGhlIGJveCB3aXRoIHNlbnNpYmxlIGRlZmF1bHRzCi0gKipUeXBlIFNhZmV0eSoqOiBMZXZlcmFnZSBHbydzIHR5cGUgc3lzdGVtIGZvciBBUEkgZG9jdW1lbnRhdGlvbgotICoqSW50ZXJhY3RpdmUgRG9jdW1lbnRhdGlvbioqOiBCdWlsdC1pbiBzdXBwb3J0IGZvciBTd2FnZ2VyIFVJLCBSZURvYywgUmFwaURvYywgYW5kIFN0b3BsaWdodCBFbGVtZW50cwotICoqUmVxdWVzdC9SZXNwb25zZSBCaW5kaW5nKio6IEF1dG9tYXRpYyBiaW5kaW5nIG9mIEhUVFAgcmVxdWVzdHMgdG8gR28gc3RydWN0cwotICoqU2VjdXJpdHkgU2NoZW1lcyoqOiBTdXBwb3J0IGZvciBKV1QsIEFQSSBLZXksIGFuZCBjdXN0b20gc2VjdXJpdHkgc2NoZW1lcwotICoqVmFsaWRhdGlvbioqOiBCdWlsdC1pbiB2YWxpZGF0aW9uIHVzaW5nIHN0cnVjdCB0YWdzCi0gKipFeHRlbnNpYmxlKio6IEN1c3RvbSBob29rcyBhbmQgbWlkZGxld2FyZSBzdXBwb3J0CgojIyDwn5OmIEluc3RhbGxhdGlvbgoKYGBgYmFzaApnbyBnZXQgZ2l0aHViLmNvbS9uZW8tZi9zb2RhL3YzCmBgYAoKIyMg8J+PgSBRdWljayBTdGFydAoKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAogICAgImdpdGh1Yi5jb20vZ29maWJlci9maWJlci92MiIKICAgICJnaXRodWIuY29tL25lby1mL3NvZGEvdjMiCikKCi8vIERlZmluZSB5b3VyIHJlcXVlc3QvcmVzcG9uc2Ugc3RydWN0cwp0eXBlIENyZWF0ZVVzZXJSZXF1ZXN0IHN0cnVjdCB7CiAgICBOYW1lICAgICBzdHJpbmcgYGpzb246Im5hbWUiIHZhbGlkYXRlOiJyZXF1aXJlZCJgCiAgICBFbWFpbCAgICBzdHJpbmcgYGpzb246ImVtYWlsIiB2YWxpZGF0ZToicmVxdWlyZWQsZW1haWwiYAogICAgUGFzc3dvcmQgc3RyaW5nIGBqc29uOiJwYXNzd29yZCIgdmFsaWRhdGU6InJlcXVpcmVkLG1pbj04ImAKfQoKdHlwZSBVc2VyUmVzcG9uc2Ugc3RydWN0IHsKICAgIElEICAgIGludCAgICBganNvbjoiaWQiYAogICAgTmFtZSAgc3RyaW5nIGBqc29uOiJuYW1lImAKICAgIEVtYWlsIHN0cmluZyBganNvbjoiZW1haWwiYAp9CgpmdW5jIG1haW4oKSB7CiAgICAvLyBDcmVhdGUgYSBuZXcgc29kYSBlbmdpbmUKICAgIGVuZ2luZSA6PSBzb2RhLk5ldygpCgogICAgLy8gU2V0IEFQSSBpbmZvCiAgICBlbmdpbmUuT3BlbkFQSSgpLkluZm8uVGl0bGUgPSAiVXNlciBBUEkiCiAgICBlbmdpbmUuT3BlbkFQSSgpLkluZm8uVmVyc2lvbiA9ICIxLjAuMCIKICAgIGVuZ2luZS5PcGVuQVBJKCkuSW5mby5EZXNjcmlwdGlvbiA9ICJBIHNpbXBsZSB1c2VyIG1hbmFnZW1lbnQgQVBJIgoKICAgIC8vIERlZmluZSByb3V0ZXMgd2l0aCBhdXRvbWF0aWMgT3BlbkFQSSBkb2N1bWVudGF0aW9uCiAgICBlbmdpbmUuUG9zdCgiL3VzZXJzIiwgY3JlYXRlVXNlcikuCiAgICAgICAgU2V0U3VtbWFyeSgiQ3JlYXRlIGEgbmV3IHVzZXIiKS4KICAgICAgICBTZXREZXNjcmlwdGlvbigiQ3JlYXRlcyBhIG5ldyB1c2VyIGFjY291bnQgd2l0aCB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24iKS4KICAgICAgICBTZXRJbnB1dChDcmVhdGVVc2VyUmVxdWVzdHt9KS4KICAgICAgICBBZGRKU09OUmVzcG9uc2UoMjAxLCBVc2VyUmVzcG9uc2V7fSwgIlVzZXIgY3JlYXRlZCBzdWNjZXNzZnVsbHkiKS4KICAgICAgICBBZGRKU09OUmVzcG9uc2UoNDAwLCBuaWwsICJJbnZhbGlkIGlucHV0IGRhdGEiKS4KICAgICAgICBBZGRKU09OUmVzcG9uc2UoNTAwLCBuaWwsICJJbnRlcm5hbCBzZXJ2ZXIgZXJyb3IiKS4KICAgICAgICBPSygpCgogICAgLy8gU2VydmUgaW50ZXJhY3RpdmUgZG9jdW1lbnRhdGlvbgogICAgZW5naW5lLlNlcnZlRG9jVUkoIi9kb2NzIiwgc29kYS5VSVN3YWdnZXJVSSkKICAgIGVuZ2luZS5TZXJ2ZVNwZWNKU09OKCIvb3BlbmFwaS5qc29uIikKICAgIGVuZ2luZS5TZXJ2ZVNwZWNZQU1MKCIvb3BlbmFwaS55YW1sIikKCiAgICAvLyBTdGFydCB0aGUgc2VydmVyCiAgICBlbmdpbmUuQXBwKCkuTGlzdGVuKCI6MzAwMCIpCn0KCmZ1bmMgY3JlYXRlVXNlcihjICpmaWJlci5DdHgpIGVycm9yIHsKICAgIGlucHV0IDo9IHNvZGEuR2V0SW5wdXRbQ3JlYXRlVXNlclJlcXVlc3RdKGMpCgogICAgLy8gWW91ciBidXNpbmVzcyBsb2dpYyBoZXJlCiAgICByZXNwb25zZSA6PSBVc2VyUmVzcG9uc2V7CiAgICAgICAgSUQ6ICAgIDEsCiAgICAgICAgTmFtZTogIGlucHV0Lk5hbWUsCiAgICAgICAgRW1haWw6IGlucHV0LkVtYWlsLAogICAgfQoKICAgIHJldHVybiBjLlN0YXR1cygyMDEpLkpTT04ocmVzcG9uc2UpCn0KYGBgCgojIyDwn5OWIERvY3VtZW50YXRpb24KCiMjIyBTdHJ1Y3QgVGFncwoKU29kYSB1c2VzIHN0cnVjdCB0YWdzIHRvIGdlbmVyYXRlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnMuIEhlcmUgYXJlIHRoZSBzdXBwb3J0ZWQgdGFnczoKCiMjIyMgQmFzaWMgVGFncwoKYGBgZ28KdHlwZSBFeGFtcGxlIHN0cnVjdCB7CiAgICAvLyBQYXRoIHBhcmFtZXRlcnMKICAgIElEIGludCBgcGF0aDoiaWQiYAogICAgLy8gUXVlcnkgcGFyYW1ldGVycwogICAgU2VhcmNoIHN0cmluZyBgcXVlcnk6InNlYXJjaCJgCiAgICAvLyBIZWFkZXIgcGFyYW1ldGVycwogICAgQXV0aG9yaXphdGlvbiBzdHJpbmcgYGhlYWRlcjoiQXV0aG9yaXphdGlvbiJgCiAgICAvLyBDb29raWUgcGFyYW1ldGVycwogICAgU2Vzc2lvbiBzdHJpbmcgYGNvb2tpZToic2Vzc2lvbiJgCiAgICAvLyBSZXF1ZXN0IGJvZHkKICAgIFByb2ZpbGUgUHJvZmlsZSBgYm9keToiYXBwbGljYXRpb24vanNvbiJgCiAgICAvLyBPcGVuQVBJIHNwZWNpZmljIHRhZ3MKICAgIE5hbWUgc3RyaW5nIGBqc29uOiJuYW1lIiBvYWk6Im1pbkxlbmd0aD0zLG1heExlbmd0aD01MCxkZXNjcmlwdGlvbj1UaGUgdXNlcidzIGZ1bGwgbmFtZSJgCiAgICBBZ2UgIGludCAgICBganNvbjoiYWdlIiBvYWk6Im1pbmltdW09MTgsbWF4aW11bT0xMjAsZGVzY3JpcHRpb249VXNlcidzIGFnZSBpbiB5ZWFycyJgCn0KYGBgCgojIyMjIFZhbGlkYXRpb24gVGFncwoKYGBgZ28KdHlwZSBWYWxpZGF0ZWRSZXF1ZXN0IHN0cnVjdCB7CiAgICBFbWFpbCAgICBzdHJpbmcgYGpzb246ImVtYWlsIiBvYWk6ImZvcm1hdD1lbWFpbCxleGFtcGxlPXVzZXJAZXhhbXBsZS5jb20iYAogICAgUGhvbmUgICAgc3RyaW5nIGBqc29uOiJwaG9uZSIgb2FpOiJmb3JtYXQ9cGhvbmUsZXhhbXBsZT0rMTIzNDU2Nzg5MCJgCiAgICBXZWJzaXRlICBzdHJpbmcgYGpzb246IndlYnNpdGUiIG9haToiZm9ybWF0PXVyaSxleGFtcGxlPWh0dHBzOi8vZXhhbXBsZS5jb20iYAogICAgLy8gRW51bSB2YWx1ZXMKICAgIFJvbGUgICAgIHN0cmluZyBganNvbjoicm9sZSIgb2FpOiJlbnVtPWFkbWluLHVzZXIsZ3Vlc3QiYAogICAgLy8gU3RyaW5nIGNvbnN0cmFpbnRzCiAgICBVc2VybmFtZSBzdHJpbmcgYGpzb246InVzZXJuYW1lIiBvYWk6Im1pbkxlbmd0aD0zLG1heExlbmd0aD0yMCxwYXR0ZXJuPV5bYS16QS1aMC05XSskImAKICAgIC8vIE51bWVyaWMgY29uc3RyYWludHMKICAgIFNjb3JlICAgIGludCAgICBganNvbjoic2NvcmUiIG9haToibWluaW11bT0wLG1heGltdW09MTAwLG11bHRpcGxlT2Y9NSJgCiAgICAvLyBBcnJheSBjb25zdHJhaW50cwogICAgVGFncyAgICAgW11zdHJpbmcgYGpzb246InRhZ3MiIG9haToibWluSXRlbXM9MSxtYXhJdGVtcz0xMCx1bmlxdWVJdGVtcz10cnVlImAKICAgIC8vIERhdGUvdGltZQogICAgQmlydGhkYXkgdGltZS5UaW1lIGBqc29uOiJiaXJ0aGRheSIgb2FpOiJmb3JtYXQ9ZGF0ZS10aW1lImAKfQpgYGAKCiMjIyBSb3V0ZSBEZWZpbml0aW9uCgojIyMjIEJhc2ljIFJvdXRlcwoKYGBgZ28KLy8gR0VUIC91c2Vycy86aWQKZW5naW5lLkdldCgiL3VzZXJzLzppZCIsIGdldFVzZXIpLgogICAgU2V0U3VtbWFyeSgiR2V0IHVzZXIgYnkgSUQiKS4KICAgIEFkZEpTT05SZXNwb25zZSgyMDAsIFVzZXJSZXNwb25zZXt9KS4KICAgIEFkZEpTT05SZXNwb25zZSg0MDQsIG5pbCwgIlVzZXIgbm90IGZvdW5kIikuT0soKQoKLy8gUE9TVCAvdXNlcnMKZW5naW5lLlBvc3QoIi91c2VycyIsIGNyZWF0ZVVzZXIpLgogICAgU2V0SW5wdXQoQ3JlYXRlVXNlclJlcXVlc3R7fSkuCiAgICBBZGRKU09OUmVzcG9uc2UoMjAxLCBVc2VyUmVzcG9uc2V7fSkuT0soKQoKLy8gUFVUIC91c2Vycy86aWQKZW5naW5lLlB1dCgiL3VzZXJzLzppZCIsIHVwZGF0ZVVzZXIpLgogICAgU2V0SW5wdXQoVXBkYXRlVXNlclJlcXVlc3R7fSkuCiAgICBBZGRKU09OUmVzcG9uc2UoMjAwLCBVc2VyUmVzcG9uc2V7fSkuT0soKQoKLy8gREVMRVRFIC91c2Vycy86aWQKZW5naW5lLkRlbGV0ZSgiL3VzZXJzLzppZCIsIGRlbGV0ZVVzZXIpLgogICAgQWRkSlNPTlJlc3BvbnNlKDIwNCwgbmlsKS5PSygpCmBgYAoKIyMjIyBSb3V0ZSBHcm91cHMKCmBgYGdvCi8vIENyZWF0ZSBhIHJvdXRlIGdyb3VwIHdpdGggY29tbW9uIHNldHRpbmdzCmFwaSA6PSBlbmdpbmUuR3JvdXAoIi9hcGkvdjEiKQoKLy8gQWRkIGNvbW1vbiB0YWdzCmFwaS5BZGRUYWdzKCJVc2VyIE1hbmFnZW1lbnQiKQoKLy8gQWRkIGNvbW1vbiByZXNwb25zZXMKYXBpLkFkZEpTT05SZXNwb25zZSg0MDAsIEVycm9yUmVzcG9uc2V7fSwgIkJhZCBSZXF1ZXN0IikKYXBpLkFkZEpTT05SZXNwb25zZSg1MDAsIEVycm9yUmVzcG9uc2V7fSwgIkludGVybmFsIFNlcnZlciBFcnJvciIpCgovLyBEZWZpbmUgcm91dGVzIHdpdGhpbiB0aGUgZ3JvdXAKYXBpLkdldCgiL3VzZXJzIiwgbGlzdFVzZXJzKS5PSygpCmFwaS5Qb3N0KCIvdXNlcnMiLCBjcmVhdGVVc2VyKS5PSygpCmFwaS5HZXQoIi91c2Vycy86aWQiLCBnZXRVc2VyKS5PSygpCmFwaS5QdXQoIi91c2Vycy86aWQiLCB1cGRhdGVVc2VyKS5PSygpCmFwaS5EZWxldGUoIi91c2Vycy86aWQiLCBkZWxldGVVc2VyKS5PSygpCmBgYAoKIyMjIyBTZWN1cml0eQoKYGBgZ28KLy8gQWRkIEpXVCBzZWN1cml0eSB0byB0aGUgZW50aXJlIEFQSQplbmdpbmUuQWRkU2VjdXJpdHkoImp3dCIsIHNvZGEuTmV3SldUU2VjdXJpdHlTY2hlbWUoIkpXVCBhdXRoZW50aWNhdGlvbiIpKQovLyBBZGQgQVBJIGtleSBzZWN1cml0eQplbmdpbmUuQWRkU2VjdXJpdHkoImFwaS1rZXkiLCBzb2RhLk5ld0FQSUtleVNlY3VyaXR5U2NoZW1lKCJoZWFkZXIiLCAiWC1BUEktS2V5IiwgIkFQSSBrZXkgYXV0aGVudGljYXRpb24iKSkKLy8gQXBwbHkgc2VjdXJpdHkgdG8gc3BlY2lmaWMgcm91dGVzCmVuZ2luZS5Qb3N0KCIvYWRtaW4vdXNlcnMiLCBjcmVhdGVBZG1pblVzZXIpLgogICAgQWRkU2VjdXJpdHkoImp3dCIsIHNvZGEuTmV3SldUU2VjdXJpdHlTY2hlbWUoKSkuCiAgICBBZGRKU09OUmVzcG9uc2UoMjAxLCBBZG1pblVzZXJSZXNwb25zZXt9KS5PSygpCmBgYAoKIyMjIEFkdmFuY2VkIEZlYXR1cmVzCgojIyMjIEN1c3RvbSBIb29rcwoKYGBgZ28KZW5naW5lLlBvc3QoIi91c2VycyIsIGNyZWF0ZVVzZXIpLgogICAgT25CZWZvcmVCaW5kKGZ1bmMoYyAqZmliZXIuQ3R4KSBlcnJvciB7CiAgICAgICAgLy8gVmFsaWRhdGUgcmVxdWVzdCBiZWZvcmUgYmluZGluZwogICAgICAgIGNvbnRlbnRUeXBlIDo9IGMuR2V0KCJDb250ZW50LVR5cGUiKQogICAgICAgIGlmIGNvbnRlbnRUeXBlICE9ICJhcHBsaWNhdGlvbi9qc29uIiB7CiAgICAgICAgICAgIHJldHVybiBmaWJlci5FcnJCYWRSZXF1ZXN0CiAgICAgICAgfQogICAgICAgIHJldHVybiBuaWwKICAgIH0pLgogICAgT25BZnRlckJpbmQoZnVuYyhjICpmaWJlci5DdHgsIGlucHV0IGFueSkgZXJyb3IgewogICAgICAgIC8vIFByb2Nlc3MgaW5wdXQgYWZ0ZXIgYmluZGluZwogICAgICAgIHVzZXJJbnB1dCA6PSBpbnB1dC4oKkNyZWF0ZVVzZXJSZXF1ZXN0KQogICAgICAgIHVzZXJJbnB1dC5FbWFpbCA9IHN0cmluZ3MuVG9Mb3dlcih1c2VySW5wdXQuRW1haWwpCiAgICAgICAgcmV0dXJuIG5pbAogICAgfSkKYGBgCgojIyMjIEN1c3RvbSBTY2hlbWEgR2VuZXJhdGlvbgoKYGBgZ28KLy8gSW1wbGVtZW50IGN1c3RvbSBKU09OIHNjaGVtYSBnZW5lcmF0aW9uCnR5cGUgQ3VzdG9tVHlwZSBzdHJ1Y3QgewogICAgVmFsdWUgc3RyaW5nCn0KCmZ1bmMgKGMgQ3VzdG9tVHlwZSkgSlNPTlNjaGVtYShkb2MgKm9wZW5hcGkzLlQpICpvcGVuYXBpMy5TY2hlbWFSZWYgewogICAgcmV0dXJuIG9wZW5hcGkzLk5ld1N0cmluZ1NjaGVtYSgpLgogICAgICAgIFdpdGhGb3JtYXQoImN1c3RvbSIpLgogICAgICAgIFdpdGhEZXNjcmlwdGlvbigiQ3VzdG9tIHR5cGUgd2l0aCBzcGVjaWFsIHZhbGlkYXRpb24iKS4KICAgICAgICBOZXdSZWYoKQp9CmBgYAoKIyMg8J+OryBVc2FnZSBFeGFtcGxlcwoKIyMjIENvbXBsZXRlIFJFU1RmdWwgQVBJCgpgYGBnbwpwYWNrYWdlIG1haW4KCmltcG9ydCAoCiAgICAiZ2l0aHViLmNvbS9nb2ZpYmVyL2ZpYmVyL3YyIgogICAgImdpdGh1Yi5jb20vbmVvLWYvc29kYS92MyIKKQoKdHlwZSAoCiAgICBDcmVhdGVUb2RvUmVxdWVzdCBzdHJ1Y3QgewogICAgICAgIFRpdGxlICAgICAgIHN0cmluZyBganNvbjoidGl0bGUiIG9haToibWluTGVuZ3RoPTEsbWF4TGVuZ3RoPTEwMCJgCiAgICAgICAgRGVzY3JpcHRpb24gc3RyaW5nIGBqc29uOiJkZXNjcmlwdGlvbiIgb2FpOiJtYXhMZW5ndGg9NTAwImAKICAgICAgICBDb21wbGV0ZWQgICBib29sICAgYGpzb246ImNvbXBsZXRlZCJgCiAgICB9CgogICAgVXBkYXRlVG9kb1JlcXVlc3Qgc3RydWN0IHsKICAgICAgICBUaXRsZSAgICAgICAqc3RyaW5nIGBqc29uOiJ0aXRsZSxvbWl0ZW1wdHkiIG9haToibWluTGVuZ3RoPTEsbWF4TGVuZ3RoPTEwMCJgCiAgICAgICAgRGVzY3JpcHRpb24gKnN0cmluZyBganNvbjoiZGVzY3JpcHRpb24sb21pdGVtcHR5IiBvYWk6Im1heExlbmd0aD01MDAiYAogICAgICAgIENvbXBsZXRlZCAgICpib29sICAgYGpzb246ImNvbXBsZXRlZCxvbWl0ZW1wdHkiYAogICAgfQoKICAgIFRvZG9SZXNwb25zZSBzdHJ1Y3QgewogICAgICAgIElEICAgICAgICAgIGludCAgICBganNvbjoiaWQiYAogICAgICAgIFRpdGxlICAgICAgIHN0cmluZyBganNvbjoidGl0bGUiYAogICAgICAgIERlc2NyaXB0aW9uIHN0cmluZyBganNvbjoiZGVzY3JpcHRpb24iYAogICAgICAgIENvbXBsZXRlZCAgIGJvb2wgICBganNvbjoiY29tcGxldGVkImAKICAgICAgICBDcmVhdGVkQXQgICBzdHJpbmcgYGpzb246ImNyZWF0ZWRfYXQiIGZvcm1hdDoiZGF0ZS10aW1lImAKICAgICAgICBVcGRhdGVkQXQgICBzdHJpbmcgYGpzb246InVwZGF0ZWRfYXQiIGZvcm1hdDoiZGF0ZS10aW1lImAKICAgIH0KCiAgICBUb2RvTGlzdFJlc3BvbnNlIHN0cnVjdCB7CiAgICAgICAgVG9kb3MgW11Ub2RvUmVzcG9uc2UgYGpzb246InRvZG9zImAKICAgICAgICBUb3RhbCBpbnQgICAgICAgICAgICBganNvbjoidG90YWwiYAogICAgfQoKICAgIEVycm9yUmVzcG9uc2Ugc3RydWN0IHsKICAgICAgICBFcnJvciBzdHJpbmcgYGpzb246ImVycm9yImAKICAgIH0KKQoKZnVuYyBtYWluKCkgewogICAgZW5naW5lIDo9IHNvZGEuTmV3KCkKCiAgICAvLyBDb25maWd1cmUgQVBJCiAgICBlbmdpbmUuT3BlbkFQSSgpLkluZm8gPSAmb3BlbmFwaTMuSW5mb3sKICAgICAgICBUaXRsZTogICAgICAgIlRvZG8gQVBJIiwKICAgICAgICBWZXJzaW9uOiAgICAgIjEuMC4wIiwKICAgICAgICBEZXNjcmlwdGlvbjogIkEgY29tcHJlaGVuc2l2ZSB0b2RvIG1hbmFnZW1lbnQgQVBJIiwKICAgIH0KCiAgICAvLyBBZGQgY29tbW9uIHNlY3VyaXR5CiAgICBlbmdpbmUuQWRkU2VjdXJpdHkoImJlYXJlciIsIHNvZGEuTmV3SldUU2VjdXJpdHlTY2hlbWUoIkpXVCBCZWFyZXIgVG9rZW4iKSkKCiAgICAvLyBBZGQgY29tbW9uIHJlc3BvbnNlcwogICAgZW5naW5lLkFkZEpTT05SZXNwb25zZSg0MDAsIEVycm9yUmVzcG9uc2V7fSkuCiAgICAgICAgQWRkSlNPTlJlc3BvbnNlKDQwMSwgRXJyb3JSZXNwb25zZXt9KS4KICAgICAgICBBZGRKU09OUmVzcG9uc2UoNTAwLCBFcnJvclJlc3BvbnNle30pCgogICAgLy8gQVBJIHJvdXRlcwogICAgYXBpIDo9IGVuZ2luZS5Hcm91cCgiL2FwaS92MSIpCiAgICBhcGkuQWRkVGFncygiVG9kb3MiKQoKICAgIC8vIExpc3QgdG9kb3MKICAgIGFwaS5HZXQoIi90b2RvcyIsIGxpc3RUb2RvcykuCiAgICAgICAgU2V0U3VtbWFyeSgiTGlzdCBhbGwgdG9kb3MiKS4KICAgICAgICBTZXREZXNjcmlwdGlvbigiUmV0cmlldmUgYSBwYWdpbmF0ZWQgbGlzdCBvZiB0b2RvcyIpLgogICAgICAgIEFkZEpTT05SZXNwb25zZSgyMDAsIFRvZG9MaXN0UmVzcG9uc2V7fSkuT0soKQoKICAgIC8vIENyZWF0ZSB0b2RvCiAgICBhcGkuUG9zdCgiL3RvZG9zIiwgY3JlYXRlVG9kbykuCiAgICAgICAgU2V0U3VtbWFyeSgiQ3JlYXRlIGEgbmV3IHRvZG8iKS4KICAgICAgICBTZXRJbnB1dChDcmVhdGVUb2RvUmVxdWVzdHt9KS4KICAgICAgICBBZGRKU09OUmVzcG9uc2UoMjAxLCBUb2RvUmVzcG9uc2V7fSkuT0soKQoKICAgIC8vIEdldCB0b2RvCiAgICBhcGkuR2V0KCIvdG9kb3MvOmlkIiwgZ2V0VG9kbykuCiAgICAgICAgU2V0U3VtbWFyeSgiR2V0IHRvZG8gYnkgSUQiKS4KICAgICAgICBBZGRKU09OUmVzcG9uc2UoMjAwLCBUb2RvUmVzcG9uc2V7fSkuCiAgICAgICAgQWRkSlNPTlJlc3BvbnNlKDQwNCwgRXJyb3JSZXNwb25zZXt9KS5PSygpCgogICAgLy8gVXBkYXRlIHRvZG8KICAgIGFwaS5QdXQoIi90b2Rvcy86aWQiLCB1cGRhdGVUb2RvKS4KICAgICAgICBTZXRTdW1tYXJ5KCJVcGRhdGUgdG9kbyIpLgogICAgICAgIFNldElucHV0KFVwZGF0ZVRvZG9SZXF1ZXN0e30pLgogICAgICAgIEFkZEpTT05SZXNwb25zZSgyMDAsIFRvZG9SZXNwb25zZXt9KS4KICAgICAgICBBZGRKU09OUmVzcG9uc2UoNDA0LCBFcnJvclJlc3BvbnNle30pLk9LKCkKCiAgICAvLyBEZWxldGUgdG9kbwogICAgYXBpLkRlbGV0ZSgiL3RvZG9zLzppZCIsIGRlbGV0ZVRvZG8pLgogICAgICAgIFNldFN1bW1hcnkoIkRlbGV0ZSB0b2RvIikuCiAgICAgICAgQWRkSlNPTlJlc3BvbnNlKDIwNCwgbmlsKS4KICAgICAgICBBZGRKU09OUmVzcG9uc2UoNDA0LCBFcnJvclJlc3BvbnNle30pLk9LKCkKCiAgICAvLyBTZXJ2ZSBkb2N1bWVudGF0aW9uCiAgICBlbmdpbmUuU2VydmVEb2NVSSgiL2RvY3MiLCBzb2RhLlVJU3dhZ2dlclVJKQogICAgZW5naW5lLlNlcnZlU3BlY0pTT04oIi9vcGVuYXBpLmpzb24iKQogICAgZW5naW5lLlNlcnZlU3BlY1lBTUwoIi9vcGVuYXBpLnlhbWwiKQoKICAgIGVuZ2luZS5BcHAoKS5MaXN0ZW4oIjozMDAwIikKfQoKLy8gSGFuZGxlciBpbXBsZW1lbnRhdGlvbnMgd291bGQgZ28gaGVyZS4uLgpgYGAKCiMjIPCfk4ogQXZhaWxhYmxlIFVJIE9wdGlvbnMKClNvZGEgcHJvdmlkZXMgc2V2ZXJhbCBidWlsdC1pbiBvcHRpb25zIGZvciBzZXJ2aW5nIGludGVyYWN0aXZlIEFQSSBkb2N1bWVudGF0aW9uOgoKYGBgZ28KLy8gU3dhZ2dlciBVSSAobW9zdCBwb3B1bGFyKQplbmdpbmUuU2VydmVEb2NVSSgiL3N3YWdnZXIiLCBzb2RhLlVJU3dhZ2dlclVJKQoKLy8gUmVEb2MgKGNsZWFuIGFuZCBtb2Rlcm4pCmVuZ2luZS5TZXJ2ZURvY1VJKCIvcmVkb2MiLCBzb2RhLlVJUmVkb2MpCgovLyBSYXBpRG9jIChmZWF0dXJlLXJpY2gpCmVuZ2luZS5TZXJ2ZURvY1VJKCIvcmFwaWRvYyIsIHNvZGEuVUlSYXBpRG9jKQoKLy8gU3RvcGxpZ2h0IEVsZW1lbnRzIChlbGVnYW50IGRlc2lnbikKZW5naW5lLlNlcnZlRG9jVUkoIi9lbGVtZW50cyIsIHNvZGEuVUlTdG9wbGlnaHRFbGVtZW50KQpgYGAKCiMjIPCflKcgQ29uZmlndXJhdGlvbgoKIyMjIE9wZW5BUEkgSW5mb3JtYXRpb24KCmBgYGdvCmVuZ2luZS5PcGVuQVBJKCkuSW5mbyA9ICZvcGVuYXBpMy5JbmZvewogICAgVGl0bGU6ICAgICAgICAgICJZb3VyIEFQSSBUaXRsZSIsCiAgICBWZXJzaW9uOiAgICAgICAgIjEuMC4wIiwKICAgIERlc2NyaXB0aW9uOiAgICAiRGV0YWlsZWQgQVBJIGRlc2NyaXB0aW9uIiwKICAgIFRlcm1zT2ZTZXJ2aWNlOiAiaHR0cHM6Ly9leGFtcGxlLmNvbS90ZXJtcyIsCiAgICBDb250YWN0OiAmb3BlbmFwaTMuQ29udGFjdHsKICAgICAgICBOYW1lOiAgIkFQSSBTdXBwb3J0IiwKICAgICAgICBFbWFpbDogInN1cHBvcnRAZXhhbXBsZS5jb20iLAogICAgICAgIFVSTDogICAiaHR0cHM6Ly9leGFtcGxlLmNvbS9zdXBwb3J0IiwKICAgIH0sCiAgICBMaWNlbnNlOiAmb3BlbmFwaTMuTGljZW5zZXsKICAgICAgICBOYW1lOiAiTUlUIiwKICAgICAgICBVUkw6ICAiaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQiLAogICAgfSwKfQoKLy8gQWRkIHNlcnZlcnMKZW5naW5lLk9wZW5BUEkoKS5TZXJ2ZXJzID0gb3BlbmFwaTMuU2VydmVyc3sKICAgICZvcGVuYXBpMy5TZXJ2ZXJ7CiAgICAgICAgVVJMOiAgICAgICAgICJodHRwczovL2FwaS5leGFtcGxlLmNvbS92MSIsCiAgICAgICAgRGVzY3JpcHRpb246ICJQcm9kdWN0aW9uIHNlcnZlciIsCiAgICB9LAogICAgJm9wZW5hcGkzLlNlcnZlcnsKICAgICAgICBVUkw6ICAgICAgICAgImh0dHBzOi8vc3RhZ2luZy1hcGkuZXhhbXBsZS5jb20vdjEiLAogICAgICAgIERlc2NyaXB0aW9uOiAiU3RhZ2luZyBzZXJ2ZXIiLAogICAgfSwKfQpgYGAKCiMjIyBDdXN0b20gVUlSZW5kZXIKCllvdSBjYW4gaW1wbGVtZW50IHlvdXIgb3duIGRvY3VtZW50YXRpb24gVUk6CgpgYGBnbwp0eXBlIEN1c3RvbVVJUmVuZGVyIHN0cnVjdHt9CgpmdW5jIChjIEN1c3RvbVVJUmVuZGVyKSBSZW5kZXIoZG9jICpvcGVuYXBpMy5UKSBzdHJpbmcgewogICAgLy8gWW91ciBjdXN0b20gSFRNTC9KUyBpbXBsZW1lbnRhdGlvbgogICAgcmV0dXJuIGA8IURPQ1RZUEUgaHRtbD48aHRtbD4uLi48L2h0bWw+YAp9CgovLyBVc2UgaXQKZW5naW5lLlNlcnZlRG9jVUkoIi9jdXN0b20iLCBDdXN0b21VSVJlbmRlcnt9KQpgYGAKCiMjIPCfp6ogVGVzdGluZwoKU29kYSBpbmNsdWRlcyBjb21wcmVoZW5zaXZlIHRlc3QgY292ZXJhZ2UuIFJ1biB0aGUgdGVzdHMgd2l0aDoKCmBgYGJhc2gKZ28gdGVzdCAuLy4uLgpgYGAKCiMjIPCfpJ0gQ29udHJpYnV0aW5nCgpDb250cmlidXRpb25zIGFyZSB3ZWxjb21lISBQbGVhc2UgZmVlbCBmcmVlIHRvIHN1Ym1pdCBhIFB1bGwgUmVxdWVzdC4gRm9yIG1ham9yIGNoYW5nZXMsIHBsZWFzZSBvcGVuIGFuIGlzc3VlIGZpcnN0IHRvIGRpc2N1c3Mgd2hhdCB5b3Ugd291bGQgbGlrZSB0byBjaGFuZ2UuCgpQbGVhc2UgbWFrZSBzdXJlIHRvIHVwZGF0ZSB0ZXN0cyBhcyBhcHByb3ByaWF0ZS4KCiMjIPCfk4QgTGljZW5zZQoKVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAtIHNlZSB0aGUgW0xJQ0VOU0VdKExJQ0VOU0UpIGZpbGUgZm9yIGRldGFpbHMuCgojIyDwn5mPIEFja25vd2xlZGdtZW50cwoKLSBbRmliZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb2ZpYmVyL2ZpYmVyKSAtIEZhc3QgSFRUUCBmcmFtZXdvcmsgZm9yIEdvCi0gW2tpbi1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpKSAtIE9wZW5BUEkgMyBzcGVjaWZpY2F0aW9uIGltcGxlbWVudGF0aW9uCi0gW1N3YWdnZXIgVUldKGh0dHBzOi8vc3dhZ2dlci5pby90b29scy9zd2FnZ2VyLXVpLykgLSBJbnRlcmFjdGl2ZSBBUEkgZG9jdW1lbnRhdGlvbgotIFtSZURvY10oaHR0cHM6Ly9naXRodWIuY29tL1JlZG9jbHkvcmVkb2MpIC0gT3BlbkFQSS9Td2FnZ2VyLWdlbmVyYXRlZCBBUEkgUmVmZXJlbmNlIERvY3VtZW50YXRpb24KLSBbUmFwaURvY10oaHR0cHM6Ly9naXRodWIuY29tL3JhcGktZG9jL1JhcGlEb2MpIC0gV2ViIENvbXBvbmVudCBmb3IgT3BlbkFQSSBzcGVjCi0gW1N0b3BsaWdodCBFbGVtZW50c10oaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvL2VsZW1lbnRzKSAtIEJlYXV0aWZ1bCBBUEkgZG9jdW1lbnRhdGlvbgoKIyMg8J+TiCBDaGFuZ2Vsb2cKClNlZSBbQ0hBTkdFTE9HLm1kXShDSEFOR0VMT0cubWQpIGZvciBhIGRldGFpbGVkIGhpc3Rvcnkgb2YgY2hhbmdlcy4KCiMjIPCfk54gU3VwcG9ydAoKSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGhlbHAsIHBsZWFzZSBvcGVuIGFuIGlzc3VlIG9uIHRoZSBbR2l0SHViIHJlcG9zaXRvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9uZW8tZi9zb2RhL2lzc3VlcykuCgo= readmeEtag: '"3679b5eacea84d272ced24b6b50a756e621027ac"' readmeLastModified: Wed, 23 Jul 2025 13:58:11 GMT repositoryId: 581433714 description: null created: '2022-12-23T07:08:24Z' updated: '2025-11-26T03:19:08Z' language: Go archived: false stars: 6 watchers: 2 forks: 2 owner: neo-f logo: https://avatars.githubusercontent.com/u/20187646?v=4 license: MIT repoEtag: '"56c4a9a4c9714f016bfe5fd9b3ece429c56b11cccb9db4afa3adc17915e73cbd"' repoLastModified: Wed, 26 Nov 2025 03:19:08 GMT category: Parsers foundInMaster: true oldLocations: - https://github.com/captain-neo/soda - source: openapi3 tags repository: https://github.com/jonatandb/weatherapp_api v3: true repositoryMetadata: base64Readme: >- IyMjIENhcmFjdGVyw61zdGljYXMgZ2VuZXJhbGVzIHkgdMOpY25pY2FzOgoKLSBEZXNhcnJvbGxhZG8gY29uIEphdmFTY3JpcHQgdXRpbGl6YW5kbyBOb2RlLmpzLgotIFNlIHV0aWxpemEgZWwgQVBJIGRlbCBzZXJ2aWNpbyBkZSBjbGltYSBbT3BlbiBXZWF0aGVyIE1hcF0oaHR0cHM6Ly9vcGVud2VhdGhlcm1hcC5vcmcvKS4KLSBMYSBjaXVkYWQgYWN0dWFsIHNlIGRldGVjdGEgY29uIGxhIElQIGRlbCB1c3VhcmlvLCB1dGlsaXphbmRvIGVsIHNlcnZpY2lvIGRlIFtJUC1BUEldKGh0dHBzOi8vaXAtYXBpLmNvbS8pLgoKLS0tCgo8Y2VudGVyPgoKIVtkZXNrdG9wXShPcGVuQXBpX1NjcmVlbnNob3QucG5nKQoKPC9jZW50ZXI+CgotLS0KCiMjIyBFc3RhIEFQSSBwcm92ZWUgZW4gZm9ybWF0byBKU09OIGVsIGVzdGFkbyBkZWwgdGllbXBvIHBvciBtZWRpbyBkZSBkaWZlcmVudGVzIGVuZHBvaW50czoKCi0gUnV0YSBiYXNlOgogIC0gKiovdjEqKgotIEVuZHBvaW50czoKCiAgLSAqKi9sb2NhdGlvbioqIChfRGV2dWVsdmUgbm9tYnJlIGRlIGxhIGNpdWRhZCBhY3R1YWwgc2Vnw7puIGxhIElQIGRlbCB1c3VhcmlvLl8pCiAgLSAqKi9jdXJyZW50L19jaXR5XyoqIChfRGV2dWVsdmUgY2xpbWEgc2Vnw7puICJjaXR5IiwgbyBkZSBsYSBjaXVkYWQgYWN0dWFsIHNpIG5vIHNlIGVzcGVjaWZpY8OzIHVuYS5fKQogIC0gKiovZm9yZWNhc3QvX2NpdHlfKiogKF9EZXZ1ZWx2ZSBwcm9uw7NzdGljbyBhIDUgZMOtYXMgc2Vnw7puICJjaXR5IiwgbyBkZSBsYSBjaXVkYWQgYWN0dWFsIHNpIG5vIHNlIGVzcGVjaWZpY8OzIHVuYS5fKQoKICAgIC0gKipOb3RhKio6IF9FbCBwYXLDoW1ldHJvICJjaXR5IiBlcyBvcGNpb25hbC4gU2kgbm8gZXN0w6EgcHJlc2VudGUgc2UgdXNhIGxhIGN1aWRhZCBjb3JyZXNwb25kaWVudGUgYSBsYSBJUCBkZWwgdXN1YXJpby5fCgogIC0gKiovb3BlbmFwaSoqIChfU3dhZ2dlciAob3BlbmFwaSk6IEludGVyZmF6IHdlYiBxdWUgbXVlc3RyYSBkb2N1bWVudGFjacOzbiBkZSBsYSBBUEkgeSBwZXJtaXRlIGludGVyYWN0dWFyIGNvbiBsb3MgZW5kcG9pbnRzXykKCi0tLQoKIyMjIFJlcXVlcmltaWVudG9zOgoKLSBbTm9kZUpzIHYuMTZdKGh0dHBzOi8vbm9kZWpzLm9yZy9lcy8pCi0gQVBJIEtFWSBkZSBbT3BlbiBXZWF0aGVyIE1hcF0oaHR0cHM6Ly9vcGVud2VhdGhlcm1hcC5vcmcvKSAoX1JlcXVpZXJlIGNyZWFyIGN1ZW50YSBncmF0dWl0YV8pCgotLS0KCiMjIyBNaXNjZWxhbmVvczoKCi0gVXRpbGl6YXIgZWwgYXJjaGl2byAqKl8uZW52LmV4YW1wbGVfKiogY29tbyBtb2RlbG8gcGFyYSBjcmVhciB1biBhcmNoaXZvIGxsYW1hZG8gKipfLmVudl8qKiBxdWUgdGVuZ2EgZWwgc2lndWllbnRlIGNvbnRlbmlkbzoKICAtIGBQT1JUYCAoX0VzcGVjaWZpY2EgZWwgcHVlcnRvIGVuIHF1ZSBzZSBkZXNlYSBxdWUgc2UgZWplY3V0ZSBsYSBBUEkuXykKICAtIGBJUF9BUElfU0VSVklDRV9CQVNFX1VSTGAgXyhFc3BlY2lmaWNhIGxhIHVybCBkZSBsYSBBUEkgcXVlIHByb3ZlZSBpbmZvcm1hY2nDs24gc29icmUgbGEgdWJpY2FjacOzbiBzZWfDum4gbGEgSVAgcHJvcG9yY2lvbmFkYSwgdmllbmUgcHJlLWNvbmZpZ3VyYWRhLilfCiAgLSBgV0VBVEhFUl9TRVJWSUNFX0FQSV9LRVlgIF8oRXNwZWNpZmljYSBsYSBBUEkgS0VZIGRlIE9wZW4gV2VhdGhlciBNYXAuIFJlcXVpZXJlIHJlZ2lzdHJvIGdyYXR1aXRvLilfCgotLS0KCiMjIyBFamVjdWNpw7NuOgoKPiAtIG5wbSBpbnN0YWxsCj4gLSBucG0gc3RhcnQKPiAtIE5hdmVnYXIgYSBodHRwOi8vbG9jYWxob3N0OjMwMDEvdjEvb3BlbmFwaSBzaSBzZSBkZXNlYSB2ZXIgZSBpbnRlcmFjdHVhciBjb24gbGEgbGlzdGEgZGUgZW5kcG9pbnRzIChfKiozMDAxKiogZXMgZWwgcHVlcnRvIHN1Z2VyaWRvLCBzZSBkZWJlIGNvbmZpZ3VyYXIgZW4gZWwgYXJjaGl2byAuZW52IC0+ICoqUE9SVCoqXykKCi0tLQoKIyMjIFRlc3RzL0NvdmVyYWdlOgoKPiAtIG5wbSB0ZXN0Cj4gLSBucG0gcnVuIHRlc3Q6Y292ZXJhZ2UgKF9MdWVnbyBhYnJpciBlbCBhcmNoaXZvOiAqKmJhY2tlbmRcY292ZXJhZ2VcbGNvdi1yZXBvcnRcaW5kZXguaHRtbCoqXykKPiAtIH5+KipOT1RBKiogRGViaWRvIGEgcXVlIHR1dmUgcHJvYmxlbWFzIHBhcmEgZWplY3V0YXIgbG9zIHRlc3RzLCB5YSBxdWUgZXN0b3kgdXNhbmRvIG3Ds2R1bG9zIGRlIEVTIGNvbiBbX0R5bmFtaWMgaW1wb3J0c19dKGh0dHBzOi8vamF2YXNjcmlwdC5pbmZvL21vZHVsZXMtZHluYW1pYy1pbXBvcnRzKSBlbiB1biBwcm95ZWN0byBDb21tb25KUywgdHV2ZSBxdWUgY3JlYXIgZG9zIG51ZXZvcyBzY3JpcHRzIHBhcmEgY29ycmVyIGxvcyB0ZXN0cywgbG9zIGN1YWxlcyB1dGlsaXphbiBjYXJhY3RlcsOtc3RpY2FzIGV4cGVyaW1lbnRhbGVzIGRlIE5vZGUgSlMuIChfW0Z1ZW50ZV0oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzYxNjUzMTA0LzEwNzUyMTk4KV8pLiBMb3MgbnVldm9zIHNjcmlwdHMgc29uIGxvcyBzaWd1aWVudGVzOn5+Cj4gICAtIH5+X25wbSBydW4gdGVzdDpleHBlcmltZW50YWxffn4KPiAgIC0gfn5fbnBtIHJ1biB0ZXN0OmNvdmVyYWdlOmV4cGVyaW1lbnRhbF9+fgo+ICAgICAtIF8oU29sdWNpb25hZG8gaW5zdGFsYW5kbyB2ZXJzaW9uZXMgYW50ZXJpb3JlcyBkZSBub2RlLWZldGNoIHkgcHVibGljLWlwIHRvdGFsbWVudGUgY29tcGF0aWJsZXMgY29uIENvbW1vbkpTKV8KCi0tLQoKIyMjIFBlbmRpZW50ZXMvQnVnczoKCi0gW2h0dHBzOi8vZ2l0aHViLmNvbS9Kb25hdGFuZGIvd2VhdGhlci1hcHAtd2l0aC1mYXN0aWZ5L2lzc3Vlc10oaHR0cHM6Ly9naXRodWIuY29tL0pvbmF0YW5kYi93ZWF0aGVyLWFwcC13aXRoLWZhc3RpZnkvaXNzdWVzKQoKLS0tCgojIyMgU2l0aW9zIGludmVzdGlnYWRvczoKCi0gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDUwNTM5NzQvcmVxdWlyaW5nLWFuLWFzeW5jLWZ1bmN0aW9uLWluLW5vZGVqcwotIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUwOTc0MzEzL25vZGUtanMtYXN5bmMtbW9kdWxlLXJlcXVpcmUKLSBodHRwczovL2dpdGh1Yi5jb20vZmFzdGlmeS9mYXN0aWZ5L2lzc3Vlcy8yNjcgV2VpcmQgYmVoYXZpb3Igd2l0aCBmYXN0aWZ5LnJlZ2lzdGVyLCBhc3luYy9hd2FpdAotIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI3OTA2NTUxL25vZGUtanMtbG9nZ2luZy11c2UtbW9yZ2FuLWFuZC13aW5zdG9uCi0gaHR0cHM6Ly93d3cuZmFzdGlmeS5pby9kb2NzL2xhdGVzdC9SZWZlcmVuY2UvUGx1Z2lucy8KLSBodHRwczovL3d3dy5mYXN0aWZ5LmlvL2RvY3MvbGF0ZXN0L0d1aWRlcy9HZXR0aW5nLVN0YXJ0ZWQvI3lvdXItZmlyc3QtcGx1Z2luCi0gaHR0cHM6Ly9mdXR1cmVzdHVkLmlvL3R1dG9yaWFscy9yZXRyaWV2ZS1hLXJlcXVlc3RzLWlwLWFkZHJlc3MtaW4tbm9kZS1qcwotIGh0dHBzOi8vb3BlbndlYXRoZXJtYXAub3JnL2FwaS9vbmUtY2FsbC1hcGkKLSBodHRwczovL29wZW53ZWF0aGVybWFwLm9yZy9mYXEjOn46dGV4dD1PcGVuV2VhdGhlciUyMHVzZXMlMjBVbml4JTIwdGltZSUyMGFuZCxmb3JlY2FzdCUyMGFuZCUyMGhpc3RvcmljYWwlMjB3ZWF0aGVyJTIwZGF0YQotIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzYyMzc2MTE1L2hvdy10by1vYnRhaW4tb3Blbi13ZWF0aGVyLWFwaS1kYXRlLXRpbWUtZnJvbS1jaXR5LWJlaW5nLWZldGNoZWQKLSBodHRwczovL2dpdGh1Yi5jb20vdGVzdGluZy1saWJyYXJ5L2VzbGludC1wbHVnaW4tdGVzdGluZy1saWJyYXJ5L2Jsb2IvbWFpbi9kb2NzL3J1bGVzL3ByZWZlci1zY3JlZW4tcXVlcmllcy5tZAotIGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9S1lqanRSZ2dfSDAmYWJfY2hhbm5lbD1taWR1ZGV2IFRFU1RJTkcgZW4gUkVBQ1Qg8J+nqiDCoUFwcmVuZGUgREVTREUgQ0VSTyEgQ29uIHJlYWN0LXRlc3RpbmctbGlicmFyeSB5IEplc3QgKEZ1bGxTdGFjayBCb290Y2FtcCBKUykKLSBodHRwczovL2NvZGUudmlzdWFsc3R1ZGlvLmNvbS9kb2NzL2xhbmd1YWdlcy9qc2NvbmZpZyBXaGF0IGlzIGpzY29uZmlnLmpzb24/Ci0gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy80NjcwMCNpc3N1ZWNvbW1lbnQtOTY4MDg0MzI5IEF1dG8gaW1wb3J0IGRvZXNuJ3Qgd29yayB1bmxlc3MgaXQgYWxyZWFkeSBpbXBvcnRlZCBmcm9tIGFub3RoZXIgZmlsZSAjNDY3MDAKLSBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L3ZzY29kZS9pc3N1ZXMvMTMyMjk5IEF1dG8gSW1wb3J0IG5vdCB3b3JraW5nIChUeXBlc2NyaXB0ICkgYWZ0ZXIgbGF0ZXN0IHVwZGF0ZQotIGh0dHBzOi8vb3BlbndlYXRoZXJtYXAub3JnL3dlYXRoZXItY29uZGl0aW9ucwotIGh0dHBzOi8vd3d3LmZyZWVjb2RlY2FtcC5vcmcvbmV3cy9ob3ctdG8tY3JlYXRlLWEtcmVhY3QtYXBwLXdpdGgtYS1ub2RlLWJhY2tlbmQtdGhlLWNvbXBsZXRlLWd1aWRlLwotIGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0aWZ5L2Zhc3RpZnktY29ycwotIGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2lzc3Vlcy85MyAtIE9wdGlvbmFsIHBhdGggcGFyYW1ldGVycyDwn5KUCi0gaHR0cHM6Ly93d3cuZmFzdGlmeS5pby9kb2NzL2xhdGVzdC9SZWZlcmVuY2UvVmFsaWRhdGlvbi1hbmQtU2VyaWFsaXphdGlvbi8KLSBodHRwczovL2VkaXRvci5zd2FnZ2VyLmlvLwotIGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vMi0wL2Rlc2NyaWJpbmctcGFyYW1ldGVycy8KLSBodHRwczovL2dpdGh1Yi5jb20vZmFzdGlmeS9mYXN0aWZ5L3B1bGwvMjYwNyNkaXNjdXNzaW9uX3I1MDExMjAyOTggLSBUaGUgb3B0aW9uYWwgY2hhaW4gb3BlcmF0b3IgLzpvcHQ/Ci0gaHR0cHM6Ly9hanYuanMub3JnL2pzb24tc2NoZW1hLmh0bWwKLSBodHRwczovL3d3dy5mYXN0aWZ5LmlvL2RvY3MvbGF0ZXN0L1JlZmVyZW5jZS9WYWxpZGF0aW9uLWFuZC1TZXJpYWxpemF0aW9uLyN2YWxpZGF0aW9uCi0gaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RpZnkvZmFzdGlmeS9ibG9iL21haW4vZG9jcy9SZWZlcmVuY2UvUmVxdWVzdC5tZAotIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzYwMzcyNzkwL25vZGUtdjEzLWplc3QtZXM2LW5hdGl2ZS1zdXBwb3J0LWZvci1tb2R1bGVzLXdpdGhvdXQtYmFiZWwtb3ItZXNtCi0gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzE2MjkzODkvaG93LXRvLXVzZS1lc2xpbnQtd2l0aC1qZXN0Ci0gaHR0cHM6Ly9qYWNrZmlhbGxvcy5jb20vZW50ZW5kaWVuZG8tY29kZS1jb3ZlcmVhZ2UtdXNhbmRvLWplc3QKLSBodHRwczovL2plc3Rqcy5pby9lcy1FUy9zZWFyY2g/cT1jb3ZlcmFnZQotIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb21hdGNoL21pY3JvbWF0Y2gKLSBodHRwczovL2plc3Rqcy5pby9kb2NzL2NvbmZpZ3VyYXRpb24jY29sbGVjdGNvdmVyYWdlZnJvbS1hcnJheQotIGh0dHBzOi8vam9zaHRyb25pYy5jb20vMjAxNy8xMC8yNC9jb25maWd1cmluZy1qZXN0LXRvLXNob3ctY29kZS1jb3ZlcmFnZS1mb3ItYWxsLW9mLXlvdXItZmlsZXMvCi0gaHR0cHM6Ly93d3cuZmFzdGlmeS5pby9kb2NzL2xhdGVzdC9HdWlkZXMvVGVzdGluZy8jYmVuZWZpdHMtb2YtdXNpbmctZmFzdGlmeWluamVjdAotIGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0aWZ5L2Zhc3RpZnkvYmxvYi9tYWluL3Rlc3QvbGlzdGVuLnRlc3QuanMKLSBodHRwczovL3d3dy5mYXN0aWZ5LmlvL2RvY3MvbGF0ZXN0L1JlZmVyZW5jZS9TZXJ2ZXIvI3NlcnZlcgotIGh0dHBzOi8vamVzdGpzLmlvL2VzLUVTL2RvY3MvZ2V0dGluZy1zdGFydGVkCi0gaHR0cHM6Ly9naXRodWIuY29tL3plbnRlcmVkL2RlbW8tYXN5bmMtZmFzdGlmeS13aXRoLWplc3Qg4pmlCi0gaHR0cHM6Ly96ZW50ZXJlZC5jby9hcnRpY2xlcy9zZXR1cC1hc3luYy1mYXN0aWZ5LXdpdGgtamVzdC10ZXN0LyDimaXimaUKLSBodHRwczovL2phdmFzY3JpcHQucGxhaW5lbmdsaXNoLmlvL2hvdy10by1idWlsZC1hLXJlbGlhYmxlLWF1dGhlbnRpY2F0aW9uLWFwaS13aXRoLWZhc3RpZnktYzVhMjRiZjhjZDQxIG1vbmdvZGIgand0IGJjcnlwdAotIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zL3RhZ2dlZC9mYXN0aWZ5K2plc3Rqcz90YWI9TmV3ZXN0Ci0gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzE1NDU4ODMvaG93LXRvLXNldHVwLWFuZC10ZWFyZG93bi1hLXdlYi1zZXJ2ZXItd2l0aC1qZXN0Ci0gaHR0cHM6Ly9mZXR0YmxvZy5ldS92b2lkLWluLWphdmFzY3JpcHQtYW5kLXR5cGVzY3JpcHQvCi0gaHR0cHM6Ly9kYWlseS1kZXYtdGlwcy5jb20vcG9zdHMvY29tbW9uLWplc3QtbWF0Y2hlcnMvCi0gaHR0cHM6Ly9kZXYudG8vd29sZmVqdzg2L3NldHVwLWEtZmFzdGlmeS1hcHAtd2l0aC1qZXN0LXRlc3RzLXRoZS1yaWdodC13YXktNDNpaAotIGh0dHBzOi8vZGV2LnRvL2l0c3Jlbm55bWFuL2hvdy1pLXN0cnVjdHVyZS1teS1mYXN0aWZ5LWFwcGxpY2F0aW9uLTFqOTMjZmlmdGgtdW5pdC10ZXN0aW5nCi0gaHR0cHM6Ly9ub2RlLXRhcC5vcmcvZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvCi0gaHR0cHM6Ly93d3cuZmFzdGlmeS5pby9kb2NzL2xhdGVzdC9HdWlkZXMvVGVzdGluZy8jdGVzdGluZy13aXRoLWEtcnVubmluZy1zZXJ2ZXIKLSBodHRwczovL2Fqdi5qcy5vcmcvanNvbi1zY2hlbWEuaHRtbCN0eXBlCi0gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzg5MzM5NzMvaG93LXRvLXByb3ZpZGUtZXhhbXBsZS12YWx1ZS10by1hLXJlc3BvbnNlLWJvZHktb2YtY29udGVudC10eXBlLXRleHQtaHRtbC1pbi1zdwotIGh0dHBzOi8vZ2l0aHViLmNvbS90ZXN0ZG91YmxlL3RlZW55dGVzdAotIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQwNzk1ODM2L2hvdy1kby15b3UtdXNlLXRoZS1maWxlcy1hbmQtZGlyZWN0b3JpZXMtcHJvcGVydGllcy1pbi1wYWNrYWdlLWpzb24KLSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zODAwOTMxNS9yZWRpcmVjdGluZy1mcm9tLWF3cy1hcGktZ2F0ZXdheS11c2luZy1yZXNwb25zZS0zMDIKLSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82MDMzMjY4Ny9ob3ctdG8tZGVmaW5lLXR3by1kaWZmZXJlbnQtcmVzcG9uc2VzLWZvci1zYW1lLXJlc3BvbnNlLWNvZGUtd2l0aC0zMDItcmVkaXJlY3QKLSBodHRwczovL2dpdGh1Yi5jb20vZmFzdGlmeS9mYXN0aWZ5LXN3YWdnZXIKLSBodHRwczovL2xlbmd1YWplanMuY29tL2F1dG9tYXRpemFkb3Jlcy9pbnRyb2R1Y2Npb24vY29tbW9uanMtdnMtZXMtbW9kdWxlcy8KLSBodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUpENlZOUmRHbDk4JmFiX2NoYW5uZWw9TGVvbmFyZG9LdWZmbyBSRVNUIHkgUkVTVGZ1bCBBUElzIHwgVGUgbG8gZXhwbGljbyBlbiA1IG1pbnV0b3MhCi0gaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj05OVlNZUNCazNqdyZhYl9jaGFubmVsPUxhenlMb2FkaW5nIEFycXVpdGVjdHVyYSBtb25vbMOtdGljYSB2cyBtaWNyb3NlcnZpY2lvcwotIGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9UURYTW9EYk9kNXMmYWJfY2hhbm5lbD1NYWtlaXRSZWFsIE1pY3Jvc2VydmljaW9zIHZzIE1vbm9saXRvCi0gaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1FS3NlQUFtNHB2WSBDcmVhbmRvIGFwbGljYWNpb25lcyB3ZWIgY29uIE5vZGUuanMgeSBGYXN0aWZ5Ci0gaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1ZZk45aEVsZWt1TSZhYl9jaGFubmVsPUxlaWZlck1lbmRleiBDT1JTCi0gaHR0cHM6Ly9lc2xpbnQub3JnL2RvY3MvdXNlci1ndWlkZS9nZXR0aW5nLXN0YXJ0ZWQKLSBodHRwczovL2dpdGh1Yi5jb20vcHJldHRpZXIvZXNsaW50LWNvbmZpZy1wcmV0dGllcgotIGh0dHBzOi8vbGVuZ3VhamVqcy5jb20vamF2YXNjcmlwdC9jYXJhY3RlcmlzdGljYXMvZXNsaW50LwotIGh0dHBzOi8vZ2l0aHViLmNvbS9DcmlzdGlhbmRpL2RlbW8tZmFzdGlmeS9ibG9iL21hc3Rlci9zcmMvZW52aXJvbm1lbnQuanMgLS0tLS0tLS0tIEludGVyZXNhbnRlIG1hbmVqbyBkZSBkaWZlcmVudGVzIC5lbnYgKGxvY2FsLCBkZXZlbG9wbWVudCwgZXRjKQotIGh0dHBzOi8vcGxhdHppLmNvbS90dXRvcmlhbGVzLzEzMzktZnVuZGFtZW50b3MtamF2YXNjcmlwdC8yMTgxLWNvbW8tdXNhci1lc2xpbnQteS1wcmV0dGllci1wYXJhLW1lam9yYXItdHUtY29kaWdvLWphdmFzY3JpcHQvCi0gaHR0cHM6Ly9kYWlseS1kZXYtdGlwcy5jb20vcG9zdHMvbGV0cy10YWxrLWFib3V0LXNvZnR3YXJlLXRlc3RpbmcvCi0gaHR0cHM6Ly9kYWlseS1kZXYtdGlwcy5jb20vcG9zdHMvYWRkaW5nLWplc3QtdGVzdC10by1hLXByb2plY3QvP3V0bV9zb3VyY2U9RGFpbHkrRGV2K1RpcHMmdXRtX21lZGl1bT1lbWFpbCZ1dG1fY2FtcGFpZ249bWFpbGluZ2xpc3QKLSBodHRwczovL3d3dy5jb252ZW50aW9uYWxjb21taXRzLm9yZy9lcy92MS4wLjAvI2VzcGVjaWZpY2FjaSVjMyViM24KLSBodHRwczovL2dpdGh1Yi5jb20vcGV0ZXJ2YW5kZXJkb2VzL2dpdGZsb3ctYXZoI2dpdC1mbG93LXVzYWdlCi0gaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZXMvZ2V0LXN0YXJ0ZWQvcXVpY2tzdGFydC9naXRodWItZmxvdwotIGh0dHBzOi8vdGVjaC13aWtpLm9ubGluZS9lcy9ub2RlLXNldGltbWVkaWF0ZS5odG1sCi0gaHR0cHM6Ly93d3cuY3VhbC1lcy1taS1pcC5uZXQvCi0gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvaXAtYWRkcmVzcwotIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMxNjI0NTcvaG93LXRvLWNoZWNrLXdpdGgtamF2YXNjcmlwdC1pZi1jb25uZWN0aW9uLWlzLWxvY2FsLWhvc3QKLSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMDU1MzU1NC9ub2RlLWpzLXJldHVybi1ob3N0bmFtZQotIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIxOTg3MzExL2NoZWNrLWlzLW5vZGVqcy1jb25uZWN0aW9uLWNvbWUtZnJvbS1sb2NhbGhvc3QKLSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9pcy1sb2NhbGhvc3QtdXJsCi0gaHR0cHM6Ly9ibG9nLmRldmdlbml1cy5pby9zZXJ2ZXItc2lkZS1kZXZlbG9wbWVudC13aXRoLWZhc3RpZnktYXN5bmMtYW5kLWF3YWl0LWFuZC1yb3V0ZS1wcmVmaXhlcy1kNTcwNGViNTIwNgotIGh0dHBzOi8vamF5d29sZmUuZGV2L3JhcGlkbHktYnVpbGQtYS1ub2RlanMtcmVzdC1hcGktd2l0aC1mYXN0aWZ5LXBvc3RncmVzcWwtYW5kLXN3YWdnZXItZG9jdW1lbnRhdGlvbi8KLSBodHRwczovL2dpdGh1Yi5jb20vZmFzdGlmeS9leGFtcGxlIC0tLS0tLS0tLS0tLS0tIENvbGxlY3Rpb24gb2YgRmFzdGlmeSBwcm9qZWN0cwotIGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0aWZ5L2Zhc3RpZnkKLSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83MDQ3ODgyMC91bmFibGUtdG8tZGVwbG95LW5vZGVqcy1mYXN0aWZ5LWFwcC1pbi1henVyZS1hcHAtc2VydmljZS1saW51eAotIGh0dHBzOi8vZGV2LnRvL3J1YW5tYXJ0aW5lbGxpL2hvdy10by11c2Utc2NoZW1hcy1vbi1mYXN0aWZ5LWZvci1mdW4tYW5kLXByb2ZpdC0yNWU5Ci0gaHR0cHM6Ly9kZXYudG8vZHNhbGluYXNnYXJkb24vdGhlLTYtYmVzdC1qYXZhc2NyaXB0LWZyYW1ld29ya3MtdG8tdXNlLWluLTIwMjItNGs1awotIGh0dHBzOi8vZGV2LnRvL2VvbW0vd2h5LXNob3VsZC1pLXByZWZlci1mYXN0aWZ5LXRvLWV4cHJlc3Nqcy00NGM0Ci0gaHR0cHM6Ly93d3cuZmFzdGlmeS5pby9kb2NzL2xhdGVzdC9SZWZlcmVuY2UvUm91dGVzLyNyb3V0ZS1wcmVmaXhpbmcKLSBodHRwczovL2dpdGh1Yi5jb20vdXNlYXVyb3JhL2FwaS9ibG9iL21haW4vYXBwLmpzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSBCdWVuYSBkaXZpc2nDs24gZW50cmUgYXBwLmpzIHkgc2VydmVyLmpzIFwqXCoKLSBodHRwczovL2dpdGh1Yi5jb20vZmFzdGlmeS9mYXN0aWZ5LWF1dG9sb2FkCi0gaHR0cHM6Ly9kZXYudG8vaXRzcmVubnltYW4vaG93LWktc3RydWN0dXJlLW15LWZhc3RpZnktYXBwbGljYXRpb24tMWo5MwotIGh0dHBzOi8vZGV2LnRvL3Rob21hc2JudC9wZXJzcGVjdGl2ZS1hcGktMjBhbAotIGh0dHBzOi8vZGV2LnRvL3Rob21hc2JudC9jcmVhdGUtYS1mYXN0aWZ5LXNlcnZlci0yM2xnCi0gaHR0cHM6Ly9kZXYudG8vaHlwZWRkZXYvZXMtbW9kdWxlcy1pbi1mYXN0aWZ5LTM0OWYKLSBodHRwczovL2dpdGh1Yi5jb20vZmFzdGlmeS9mYXN0aWZ5LWV4cHJlc3MKLSBodHRwczovL2pzb24tc2NoZW1hLm9yZy9sZWFybi9nZXR0aW5nLXN0YXJ0ZWQtc3RlcC1ieS1zdGVwCi0gaHR0cHM6Ly9kZXYudG8vY3Jpc3RpYW5kaS9kZW1vLWFwaS11c2luZy1mYXN0aWZ5LTQ4am8KLSBodHRwczovL2Rldi50by93aGl0ZXA0bnRoM3IvaG93LWktbWFzc2l2ZWx5LWltcHJvdmVkLW15LXdlYnNpdGUtcGVyZm9ybWFuY2UtYnktdXNpbmctdGhlLXJpZ2h0LXRvb2wtZm9yLXRoZS1qb2ItMjNjbAotIGh0dHBzOi8vd3d3LmZyZWVjb2RlY2FtcC5vcmcvZXNwYW5vbC9uZXdzL3F1ZS1lcy1qYW1zdGFjay8KLSBodHRwczovL2Rldi50by9kYWlseWRldnRpcHMxL2J1aWxkaW5nLWEtZmFzdGlmeS1ub2RlanMtc2VydmVyLTI5NmcKLSBodHRwczovL3d3dy5mYXN0aWZ5LmlvL2RvY3MvbGF0ZXN0L0d1aWRlcy9QbHVnaW5zLUd1aWRlLwotIGh0dHBzOi8vZ2l0aHViLmNvbS9ncXVpdHRldC9ncmFjZWZ1bC1zZXJ2ZXIKLSBodHRwczovL2dpdGh1Yi5jb20vZmFzdGlmeS9mYXN0aWZ5LXNlbnNpYmxlCi0gaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RpZnkvZmFzdGlmeS1uZXh0anMKLSBodHRwczovL2dpdGh1Yi5jb20vZmFzdGlmeS9mYXN0aWZ5LWhlbG1ldAotIGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0aWZ5L2Zhc3RpZnktZW52Ci0gaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RpZnkvZmFzdGlmeS1zd2FnZ2VyCi0gaHR0cHM6Ly93d3cuZmFzdGlmeS5pby9lY29zeXN0ZW0vCi0gaHR0cHM6Ly93d3cuZmFzdGlmeS5pby9kb2NzL2xhdGVzdC9HdWlkZXMvVGVzdGluZy8KLSBodHRwczovL3d3dy5mYXN0aWZ5LmlvL2RvY3MvdjMuMC54L1JvdXRlcy8KLSBodHRwczovL3d3dy5mYXN0aWZ5LmlvL2RvY3MvbGF0ZXN0L0d1aWRlcy9HZXR0aW5nLVN0YXJ0ZWQvCi0gaHR0cHM6Ly93d3cuZmFzdGlmeS5pby8KLSBodHRwczovL3hwMTIzLmNvbS9hcnRpY2xlcy8zYS1hcnJhbmdlLWFjdC1hc3NlcnQvCi0gaHR0cHM6Ly9tYXJ0aW5mb3dsZXIuY29tL2JsaWtpL0dpdmVuV2hlblRoZW4uaHRtbAotIGh0dHBzOi8vZGV2LnRvL3N0ZWFsdGhtdXNpYy9ldmVyeXRoaW5nLXRoYXRzLW5vdC10ZXN0ZWQtd2lsbC1icmVhay0xYWRnCi0gaHR0cHM6Ly9kZXYudG8vY29kaW5ncGl6emEvd2hhdC1pcy1hLXVuaXQtdGVzdC0xZTFtCi0gaHR0cHM6Ly9naXRodWIuY29tL0h1YWNoYW8vdnNjb2RlLXJlc3RjbGllbnQKLSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82OTA2MzA3NC9yZXN0LWNsaWVudC12c2NvZGUtZXh0ZW50aW9uLWlzLW5vdC1zZW5kaW5nLWpzb24tZGF0YQotIGh0dHBzOi8vZGV2LnRvL3R1c2hhcnBhbmRleTEzL2dldHRpbmctb24td2l0aC1lczYtbm9kZWpzLWVzbGludC13aXRob3V0LWJhYmVsLTRpcDcKLSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tb3JnYW4KLSBodHRwczovL2ljaGkucHJvL2VzL2Z1bmNpb25lcy1lbW9jaW9uYW50ZXMtZGUtamF2YXNjcmlwdC1lczIwMjEtMzI4ODUxODgyMjAxNzEKLSBodHRwczovL2JhYmVsanMuaW8vZG9jcy9lbi9iYWJlbC1jbGkKLSBodHRwczovL3d3dy5mcmVlY29kZWNhbXAub3JnL25ld3Mvc2V0dXAtYmFiZWwtaW4tbm9kZWpzLwotIGh0dHBzOi8vd3d3LmZyZWVjb2RlY2FtcC5vcmcvZXNwYW5vbC9uZXdzL3F1ZS1lcy1iYWJlbC8KLSBodHRwczovL2hhY2tzLm1vemlsbGEub3JnLzIwMTUvMDgvZXM2LWluLWRlcHRoLW1vZHVsZXMvCi0gaHR0cHM6Ly9ibG9nLmxvZ3JvY2tldC5jb20vaG93LXRvLXVzZS1lY21hc2NyaXB0LW1vZHVsZXMtd2l0aC1ub2RlLWpzLwotIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzY5MDQxNDU0L2Vycm9yLXJlcXVpcmUtb2YtZXMtbW9kdWxlcy1pcy1ub3Qtc3VwcG9ydGVkLXdoZW4taW1wb3J0aW5nLW5vZGUtZmV0Y2gKLSBodHRwczovL2VzLnN0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80ODQ5NDkvcHJvYmxlbWEtY29uLWZldGNoLWVuLW5vZGUKLSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82Nzg0NzUzL3Bhc3Npbmctcm91dGUtY29udHJvbC13aXRoLW9wdGlvbmFsLXBhcmFtZXRlci1hZnRlci1yb290LWluLWV4cHJlc3MKLSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82MDIwNTg5MS9pbXBvcnQtanNvbi1leHRlbnNpb24taW4tZXM2LW5vZGUtanMtdGhyb3dzLWFuLWVycm9yCi0gaHR0cHM6Ly9raW5zdGEuY29tL2VzL2Jhc2UtZGUtY29ub2NpbWllbnRvL2h0dHAtMzA0LwotIGh0dHBzOi8vZXMuc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE5OTEwOS9vYnRlbmVyLWxhLWlwLWRlbC1jbGllbnRlLWVuLW5vZGUtanMKLSBodHRwczovL2V4cHJlc3Nqcy5jb20vZW4vNHgvYXBpLmh0bWwjdHJ1c3QucHJveHkub3B0aW9ucy50YWJsZQotIGh0dHBzOi8vd3d3Lm1pY2twYXR0ZXJzb24uY29tLmF1L2Jsb2cvYXBpLXZlcnNpb25pbmctd2l0aC1ub2RlanMtYW5kLWV4cHJlc3MvCi0gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTE1MTM3MTUvbm9kZS1qcy1yZXN0LWFwaS12ZXJzaW9uaW5nLXRoZS1yaWdodC13YXkvNTE1MTQxODQjNTE1MTQxODQKLSBodHRwczovL3d3dy5hdGxhc3NpYW4uY29tL2VzL2dpdC90dXRvcmlhbHMvY29tcGFyaW5nLXdvcmtmbG93cy9naXRmbG93LXdvcmtmbG93Cg== readmeEtag: '"1b28795dd53d40f74fa1de911a8b366dea9c458a"' readmeLastModified: Mon, 05 Jun 2023 03:58:31 GMT repositoryId: 479925177 description: API of https://github.com/Jonatandb/weatherapp_frontend created: '2022-04-10T05:46:27Z' updated: '2022-04-13T23:06:43Z' language: JavaScript archived: false stars: 0 watchers: 1 forks: 0 owner: Jonatandb logo: https://avatars.githubusercontent.com/u/8082172?v=4 repoEtag: '"8b09f8318de6bb71e1f2a602c79c20d36eee377b7e57bdf6af34632a2599bd09"' repoLastModified: Wed, 13 Apr 2022 23:06:43 GMT foundInMaster: true category: Testing id: d3f2cdb54b053544ddcfca6ed3337e13 - source: openapi3 tags repository: https://github.com/manju4ever/fastity-swagger-generate v3: true repositoryMetadata: base64Readme: >- IyBmYXN0aWZ5LXN3YWdnZXItZ2VuZXJhdGUKCkdlbmVyYXRlIFN3YWdnZXIvT3BlbkFQSSBkZWZpbml0aW9ucyB3aXRob3V0IHJ1bm5pbmcgZmFzdGlmeSBhcHAgIQoKPCEtLSB0b2MgLS0+CgotIFtmYXN0aWZ5LXN3YWdnZXItZ2VuZXJhdGVdKCNmYXN0aWZ5LXN3YWdnZXItZ2VuZXJhdGUpCiAgLSBbSW5zdGFsbF0oI2luc3RhbGwpCiAgLSBbRGlzY2xhaW1lcl0oI2Rpc2NsYWltZXIpCiAgLSBbVXNhZ2VdKCN1c2FnZSkKICAtIFtBUEldKCNhcGkpCiAgICAtIFtPcHRpb25zXSgjb3B0aW9ucykKCjwhLS0gdG9jc3RvcCAtLT4KCiMjIEluc3RhbGwKCmBucG0gaSBmYXN0aWZ5LXN3YWdnZXItZ2VuZXJhdGVgCgojIyBEaXNjbGFpbWVyCgotIE9ubHkgc3VwcG9ydHMgY29uZmlndXJhdGlvbiBiYXNlZCByb3V0ZXMsIGkuZSBjb2xsZWN0aW9uIG9mIHJvdXRlIGRlZmluaXRpb25zCi0gVGhpcyBsaWJyYXJ5IGhhcyBubyBuZXcgY29udGVudCBhZGRlZAotIFRoaXMgbGlicmFyeSBoYXMganVzdCB0d2Vha2VkIHRoZSBvcmlnaW5hbCBbZmFzdGlmeS1zd2FnZ2VyXShodHRwczovL2dpdGh1Yi5jb20vZmFzdGlmeS9mYXN0aWZ5LXN3YWdnZXIpCgojIyBVc2FnZQoKMS4gQ3JlYXRlIGEgYGdlbmVyYXRlLmpzYCBmaWxlIHdoaWNoIGxvb2tzIGxpa2UKCmBgYGphdmFzY3JpcHQKY29uc3QgZmFzdGlmeVN3YWdHZW4gPSByZXF1aXJlKCJmYXN0aWZ5LXN3YWdnZXItZ2VuZXJhdGUiKTsKY29uc3QgUm91dGVzID0gcmVxdWlyZSgiLi9yb3V0ZXMiKTsKY29uc3Qgb3B0cyA9IHt9OwoKLy8gZ2VuZXJhdGUgc3dhZ2dlciBkZWZpbml0aW9ucwpmYXN0aWZ5U3dhZ0dlbihvcHRzLCBSb3V0ZXMsIChlcnIsIGRlZmluaXRpb25zKSA9PiB7CiAgLy8gV3JpdGUgdG8gYSBmaWxlCiAgcmVxdWlyZSgiZnMiKQogICAgLmNyZWF0ZVdyaXRlU3RyZWFtKCIuL2FwcC5zd2FnLmpzb24iKQogICAgLndyaXRlKEpTT04uc3RyaW5naWZ5KGRlZmluaXRpb25zKSk7Cn0pOwpgYGAKCjIuIExldCdzIHNheSB5b3UgaGF2ZSByb3V0ZXMgZGVmaW5lZCBpbiBgcm91dGVzLmpzYAoKYGBgamF2YXNjcmlwdApjb25zdCByb3V0ZXMgPSBbCiAgewogICAgdXJsOiAiL3VzZXJzLzppZCIsCiAgICBtZXRob2Q6ICJHRVQiLAogICAgc2NoZW1hOiB7CiAgICAgIHBhcmFtczogewogICAgICAgIHR5cGU6ICJvYmplY3QiLAogICAgICAgIHByb3BlcnRpZXM6IHsKICAgICAgICAgIGlkOiB7CiAgICAgICAgICAgIHR5cGU6ICJudW1iZXIiLAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICB9LAogICAgfSwKICB9LApdOwoKbW9kdWxlLmV4cG9ydHMgPSByb3V0ZXM7IC8vIHNob3VsZCBiZSBhbiBpdGVyYWJsZSByb3V0ZXMKYGBgCgojIyBBUEkKCiMjIyBPcHRpb25zCgpbUmVmZXIgaGVyZSBmb3IgbW9yZV0oaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RpZnkvZmFzdGlmeS1zd2FnZ2VyI3JlZ2lzdGVyLW9wdGlvbnMpCg== readmeEtag: '"b7f266e89a466436937bac711a6b40b680145d91"' readmeLastModified: Thu, 22 Dec 2022 14:50:27 GMT repositoryId: 475559400 description: >- Generate Swagger or OpenAPI Specification (JSON/YML) for Fastify server routes without running the server created: '2022-03-29T17:56:37Z' updated: '2023-12-30T08:19:11Z' language: JavaScript archived: false stars: 2 watchers: 1 forks: 0 owner: manju4ever logo: https://avatars.githubusercontent.com/u/9355984?v=4 license: MIT repoEtag: '"0b65432784ef920d54793991bfaa1c3969e9df1cbdc2fb01e583a724d8075632"' repoLastModified: Sat, 30 Dec 2023 08:19:11 GMT foundInMaster: true category: Parsers id: ddff5eb57bb20f920637d0ffcb74b972 oldLocations: - https://github.com/manju4ever/fastify-swagger-generate - source: https://openapi.tools/ name: Bump category: Documentation link: https://bump.sh language: SaaS source_description: >- Bump generates elegant documentation and changelogs from your OpenAPI specifications. Git diff, for your API. v2: true v3: true v3_1: true foundInMaster: true id: aa06bbbc595e3401e9dd7b0a8ac92d63 - source: https://openapi.tools/ name: RepreZen API Studio category: GUI Editors language: Java link: https://www.reprezen.com/ repository: null source_description: > RepreZen API Studio is an integrated workbench that brings API-first design into focus for your whole team, harmonizes your API designs, and generates APIs that click into client apps. v2: true v3: true foundInMaster: true id: 824559c965aaed65843131864b0adb5d - source: https://openapi.tools/ name: APIGit category: - Documentation - Mock language: SaaS link: https://apigit.com source_description: >- native Git based collaboration platform for API document, Design, Mock and Sharing! v2: true v3: true v3_1: true id: 15353b0357b3f4e9edd7657cd4dd73e3 foundInMaster: true - source: openapi3 tags repository: https://github.com/boro23-wq/case-manager-api v3: true id: 35c8cc9043f70001d15390bc18b7b21f repositoryMetadata: base64Readme: >- IyMgQ2FzZSBNYW5hZ2VyIEFQSQoKQVBJIGJ1aWx0IHVzaW5nICoqTmVzdC5qcyoqLCAqKlR5cGVzY3JpcHQqKiwgKipQcmlzbWEqKiBmb3IgT1JNLCBhbmQgKipQbGFuZXRTY2FsZSoqIChNeVNRTCkgdGhhdCBwZXJmb3JtcyBvcGVyYXRpb24gb24gY2FzZSBtYW5hZ2VycywgY2FzZXMsIGFuZCByZWxhdGVkIGNhc2Ugbm90ZXMuIFRoaXMgQVBJIGlzIGEgcGFydCBvZiB0aGUgcHJvamVjdCBDUyA2NzMgLSBDYXJlIE1hbmFnZW1lbnQgYW5kIENvLW9yZGluYXRpb24uCgoKPHAgIGFsaWduPSJjZW50ZXIiPgogIDxhICBocmVmPSJodHRwOi8vbmVzdGpzLmNvbS8iICB0YXJnZXQ9ImJsYW5rIj48aW1nICAJc3JjPSJodHRwczovL25lc3Rqcy5jb20vaW1nL2xvZ29fdGV4dC5zdmciICB3aWR0aD0iMzIwIiAgYWx0PSJOZXN0IExvZ28iIC8+PC9hPgo8L3A+CgpOZXN0LmpzIGlzIGEgcHJvZ3Jlc3NpdmUgPGEgIGhyZWY9Imh0dHA6Ly9ub2RlanMub3JnIiAgdGFyZ2V0PSJfYmxhbmsiPk5vZGUuanM8L2E+IGZyYW1ld29yayBmb3IgYnVpbGRpbmcgZWZmaWNpZW50IGFuZCBzY2FsYWJsZSBzZXJ2ZXItc2lkZSBhcHBsaWNhdGlvbnMuCgojIyBBY3RpdmUgUmVjb3JkIFBhdHRlcm4KVGhlIENhc2UgTWFuYWdlciBBUEkgaXMgYnVpbHQgdXNpbmcgdGhlIEFjdGl2ZSBSZWNvcmQgUGF0dGVybi4KClVzaW5nIHRoZSBBY3RpdmUgUmVjb3JkIGFwcHJvYWNoLCBvbmUgY2FuIGRlZmluZSBhbGwgdGhlaXIgcXVlcnkgbWV0aG9kcyBpbnNpZGUgdGhlIG1vZGVsIGl0c2VsZiwgYW5kICBzYXZlLCByZW1vdmUsIGFuZCBsb2FkIG9iamVjdHMgdXNpbmcgbW9kZWwgbWV0aG9kcy4KClNpbXBseSwgdGhlIEFjdGl2ZSBSZWNvcmQgcGF0dGVybiBpcyBhbiBhcHByb2FjaCB0byBhY2Nlc3MgZGF0YWJhc2Ugd2l0aGluIHRoZSBkZWZpbmVkIG1vZGVscy4gWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgdGhlIEFjdGl2ZSBSZWNvcmQgcGF0dGVybiBvbiBbV2lraXBlZGlhXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BY3RpdmVfcmVjb3JkX3BhdHRlcm4pLgoKIyMgSW5zdGFsbGF0aW9uCgoxLiBDbG9uZSB0aGUgcmVwb3NpdG9yeSB0byB5b3VyIGxvY2FsIG1hY2hpbmUuCmBgYGJhc2gKJCBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL0Jvcm8yMy13cS9jYXNlLW1hbmFnZXItYXBpLmdpdApgYGAKMi4gQ2hhbmdlIGRpcmVjdG9yeSBpbnRvIHRoZSByZXBvc2l0b3J5IHlvdSBqdXN0IGNsb25lZC4KYGBgYmFzaAokIGNkIGNhc2UtbWFuYWdlci1hcGkKYGBgCjMuIE9wZW4gdGhlIHJlcG9zaXRvcnkgaW4geW91ciBmYXZvcml0ZSBjb2RlIGVkaXRvci4gSSdtIHVzaW5nIFZTQ29kZS4gVGhlIHNob3J0Y3V0IHRvIG9wZW4gYSBkaXJlY3RvcnkgaW4gVlNDb2RlIGlzOgpgYGBiYXNoCiQgY29kZSAuCmBgYApQbGVhc2UgbWFrZSBzdXJlIHlvdSBhcmUgaW5zaWRlIHRoZSBkaXJlY3RvcnkuCgo0LiBGaW5hbGx5LCBydW4gdGhlIGNvbW1hbmQgYmVsb3cgYmFzZWQgb24geW91ciBwYWNrYWdlIG1hbmFnZXI6CmBgYGJhc2gKIyB5YXJuIAokIHlhcm4KT1IKIyBucG0KJCBucG0gaW5zdGFsbApgYGAKCiMjIEVudmlyb25tZW50IHZhcmlhYmxlcwoKUGxlYXNlIGNyZWF0ZSBhIGAuZW52YCBvciBgLmVudi5sb2NhbGAgZmlsZSB0byBzZXQgdGhlIFtQbGFuZXRTY2FsZV0oaHR0cHM6Ly9wbGFuZXRzY2FsZS5jb20vKSBkYXRhYmFzZSBzdHJpbmcuIFRoZSBzdHJpbmcgd291bGQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgoKYGBgYmFzaApEQVRBQkFTRV9VUkw9J215c3FsOioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKicKYGBgCgojIyBSdW5uaW5nIHRoZSBhcHAKYGBgYmFzaAojIGRldmVsb3BtZW50CiQgbnBtIHJ1biBzdGFydAoKIyB3YXRjaCBtb2RlCiMgV2F0Y2ggbW9kZSB3aWxsIGJhc2ljYWxseSB3YXRjaCBmb3IgYW55IGNoYW5nZXMgdG8geW91ciBjb2RlIGFuZCByZXN0YXJ0IHRoZSBzZXJ2ZXIgYWNjb3JkaW5nbHkgd2hpY2ggaXMgdmVyeSBjb252ZW5pZW50LgokIG5wbSBydW4gc3RhcnQ6ZGV2CgojIHByb2R1Y3Rpb24gbW9kZQokIG5wbSBydW4gc3RhcnQ6cHJvZApgYGAKCiMjIFRlc3QKSSBoYXZlbid0IGltcGxlbWVudGVkIGFueSB0ZXN0cyB5ZXQsIGJ1dCBvbmNlIHRoZSB0ZXN0cyBhcmUgYWRkZWQgeW91J2QgaGF2ZSBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBydW4gaXQuCiAgCgpgYGBiYXNoCiMgdW5pdCB0ZXN0cwokIG5wbSBydW4gdGVzdAoKIyBlMmUgdGVzdHMKJCBucG0gcnVuIHRlc3Q6ZTJlCgojIHRlc3QgY292ZXJhZ2UKJCBucG0gcnVuIHRlc3Q6Y292CmBgYAoKIyMgUmVzb3VyY2VzCjEuIFtOZXN0LmpzIERvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5uZXN0anMuY29tLykKMi4gW1ByaXNtYSBEb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5wcmlzbWEuaW8vZG9jcy8pCjMuIFtQbGFuZXRTY2FsZSBEb2N1bWVudGF0aW9uXShodHRwczovL3BsYW5ldHNjYWxlLmNvbS9kb2NzKQoKIyMgU3RheSBpbiB0b3VjaAoKLSBBdXRob3IgLSBbU2ludHUgQm9yb10oaHR0cHM6Ly9zYm9yby52ZXJjZWwuYXBwLykKLSBCbG9nIC0gW2h0dHBzOi8vc2Jvcm8udmVyY2VsLmFwcC9ibG9nXShodHRwczovL3Nib3JvLnZlcmNlbC5hcHAvYmxvZykKLSBMaW5rZWRpbiAtIFtTaW50dSBCb3JvXShodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vc2ludHUtYm9yby8pCgojIyBMaWNlbnNlClRoaXMgcHJvamVjdCBpcyBbTUlUIGxpY2Vuc2VkXShMSUNFTlNFKS4= readmeEtag: '"f8457def7596468713b8073dbfa3c42c62cb052e"' readmeLastModified: Thu, 03 Nov 2022 18:57:37 GMT repositoryId: 560106244 description: >- Implementation of the REST API using Nest.js, Typescript, Prisma, and PlanetScale that performs operation on case managers, cases, and related case notes, for the project CS 673 - Care Management and Co-ordination. created: '2022-10-31T18:46:18Z' updated: '2022-11-04T04:04:24Z' language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: Boro23-wq logo: https://avatars.githubusercontent.com/u/62204944?v=4 license: MIT repoEtag: '"10a215b2d20439904e2b12ae6dc2c9d9ff125238af24d3f8c61843789bce8b56"' repoLastModified: Fri, 04 Nov 2022 04:04:24 GMT category: - Code Generators - Server Implementations foundInMaster: true - source: https://openapi.tools/ name: MicroTS category: - Server - Server Implementations language: Node.js link: https://www.npmjs.com/package/microts repository: https://github.com/tomi-vanek/microts source_description: Take an OpenAPI description and generate TypeScript projects via Docker. v2: true v3: false repositoryMetadata: base64Readme: >- IyBNaWNyb1RTIGNvZGUgZ2VuZXJhdG9yIGZvciBtaWNyb3NlcnZpY2VzCgpNaWNyb3NlcnZpY2UgY29kZSBnZW5lcmF0b3Igd2l0aCBpbnRlcmZhY2UtZmlyc3QgYXBwcm9hY2g6IGZyb20gKipPcGVuQVBJIC0gU3dhZ2dlcioqIFJFU1QgQVBJIHNwZWNpZmljYXRpb24gaXMgZ2VuZXJhdGVkIGNvbXBsZXRlIHByb2plY3Qgc2tlbGV0b24gd2l0aCBfVHlwZVNjcmlwdF8gY29kZSwgdGVzdHMgYW5kIF9Eb2NrZXJfIGNvbmZpZ3VyYXRpb24uCgpHZW5lcmF0ZWQgY29kZSBoYXMgdGhlIGFtYml0aW9uIHRvIG1pbmltaXplIGltcGxlbWVudGF0aW9uIHRpbWUgZm9yIG5ldyBtaWNyb3NlcnZpY2VzLgoKVGhlIF9vcGVuYXBpLW1pY3JvLXRzXyBnZW5lcmF0b3IgaXMgYSBzaW1wbGUgIm9uZS1zaG90IiBwcm9qZWN0IGluaXRpYWxpemF0aW9uIHRvb2wgLSBhZnRlciB0aGUgY29kZSBpcyBnZW5lcmF0ZWQsIHRoZSBzZXJ2aWNlIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgd2l0aCB0cmFkaXRpb25hbCBtYW51YWwgY29kaW5nLgoKIyMgUXVpY2sgc3RhcnQKCjEuIEluc3RhbGwgdGhlIGdlbmVyYXRvciB3aXRoIGBucG0gaSAtZyBtaWNyb3RzYAoxLiBDcmVhdGUgYSBuZXcgcHJvamVjdCBkaXJlY3RvcnkuIEdvIHRvIHRoZSBuZXcgcHJvamVjdCB3b3JrIGRpcmVjdG9yeSB3aXRoIGBjZCBbTkVXLVBST0pFQ1RdYC4KMS4gQ3JlYXRlIG5ldyBtaWNyb3NlcnZpY2Ugc2NoZW1hIHdpdGggZGVmYXVsdCBuYW1lIGBzd2FnZ2VyLnlhbWxgIGluIHJvb3Qgb2YgdGhlIHByb2plY3QuCjEuIEdlbmVyYXRlIG1pY3Jvc2VydmljZSBjb2RlIHdpdGggY29tbWFuZCBgbWljcm90c2Agd2l0aCBkZWZhdWx0IHBvcnQgMzAwMC4KMS4gTnN0YWxsIGRlcGVuZGVuY2llcyB3aXRoIGBucG0gaWAgYW5kIHN0YXJ0IHRoZSBtaWNyb3NlcnZpY2Ugd2l0aCBgbnBtIHN0YXJ0YC4KMS4gT3BlbiB0aGUgbWljcm9zZXJ2aWNlIGRlYnVnZ2luZyB1c2VyIGludGVyZmFjZSBpbiBicm93c2VyIHdpdGggVVJMIGBsb2NhbGhvc3Q6MzAwMC9bYmFzZS1wYXRoXS91aWAgKGJhc2UgcGF0aCBpcyBkZWZpbmVkIGJ5IHNjaGVtYSkuCgojIyBDb2RlIGdlbmVyYXRpb24gaW4gZGV0YWlsCgoxLiBDcmVhdGUgYSBuZXcgcHJvamVjdCBkaXJlY3RvcnkgKGNyZWF0ZSBhIHByb2plY3QgaW4gR2l0SHViIG9yIG90aGVyIFZDUyBhbmQgY2xvbmUpLiBHbyB0byB0aGUgbmV3IHByb2plY3Qgd29yayBkaXJlY3Rvcnkgd2l0aCBgY2QgW05FVy1QUk9KRUNUXWAuCjEuIENyZWF0ZSBuZXcgbWljcm9zZXJ2aWNlIHNjaGVtYSBpbiByb290IG9mIHRoZSBwcm9qZWN0LiBTdXBwcm90ZWQgc2NoZW1hIGZvcm1hdHMgYXJlIFtPcGVuQVBJIDIuMF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMi4wLm1kKSBpbiBib3RoIFlBTUwgYW5kIEpTT04gZm9ybWF0LgoxLiBHZW5lcmF0ZSBtaWNyb3NlcnZpY2UgY29kZSB3aXRoIGNvbW1hbmQgYG1pY3JvdHMgLXAgUE9SVCAtcyBTQ0hFTUFgLiBQYXJhbWV0ZXIgUE9SVCBkZWZpbmVzIHRoZSBkZWZhdWx0IHBvcnQgb24gd2hpY2ggdGhlIHNlcnZlciB3aWxsIGxpc3RlbiAoaWYgbm90IHNldCwgZGVmYXVsdCBwb3J0IDMwMDAgd2lsbCBiZSB1c2VkIGZvciBjb2RlIGdlbmVyYXRpb24pLiBQYXJhbWV0ZXIgU0NIRU1BIGlzIHRoZSBuYW1lIG9mIHRoZSBzY2hlbWEgLSBtYXkgYmUgd2l0aCBhYnNvbHV0ZSBvciByZWxhdGl2ZSBwYXRoLCBpZiBzY2hlbWEgaXMgbm90IGluIHdvcmtpbmcgZGlyZWN0b3J5LiBJZiBzY2hlbWEgaXMgbm90IHNldCwgZ2VuZXJhdG9yIHRyaWVzIHRvIG9wZW4gYHN3YWdnZXIueWFtbGAgZmlsZSBmb3IgQVBJIGRlZmluaXRpb24uCjEuIFJlYWQgdGhlIF9OZXh0IHN0ZXBzXyBpbiB0aGUgY29uc29sZSBhbmQgZmFtaWxpYXJpemUgd2l0aCB0aGUgZ2VuZXJhdGVkIG1pY3Jvc2VydmljZSBzZXJ2ZXIuCjEuIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1pY3Jvc2VydmljZSBpcyBpbiB0aGUgZ2VuZXJhdGVkIGBSRUFETUUubWRgIGZpbGUuCjEuIEFkZCByZXBvc2l0b3J5IGFuZCBsaWNlbnNlIGZpZWxkcyB0byB0aGUgZ2VuZXJhdGVkIGBwYWNrYWdlLmpzb25gLgoxLiBUaGUgc291cmNlIHNjaGVtYSB3YXMgY29waWVkIChhbmQgaWYgbmVlZGVkIC0gY29udmVydGVkKSB0byBgc3JjL2NvbmYvc3dhZ2dlci55YW1sYCBmaWxlLiBUaGUgc291cmNlIHNjaGVtYSBjYW4gYmUgZGVsZXRlZCAtIGFzIGl0IGlzIG5vdCB1c2VkIGJ5IHRoZSBzZXJ2ZXIuCjEuIFNlYXJjaCBmb3IgYFRPRE9gIGluIGNvZGUsIGFuZCBpbXBsZW1lbnQgdGhlIGZ1bmN0aW9uYWxpdHkuCgpGb3IgYWxsIGNvbW1hbmQgbGluZSBwcm9wZXJ0aWVzIG9mIHRoZSBgbWljcm90c2AgY29kZSBnZW5lcmF0b3IgdXNlIHRoZSBjb21tYW5kIGBtaWNyb3RzIC1oYC4KCiMjIE1pY3Jvc2VydmljZSBkZXZlbG9wbWVudAoKMS4gRm9yIGRlYnVnZ2luZyBydW4gdGhlIG1pY3Jvc2VydmljZSB3aXRoIGBucG0gcnVuIGRldmAuCjEuIEFmdGVyIHNhdmluZyBhbnkgY2hhbmdlIHRoZSBzb3VyY2UgY29kZSBpcyBjb21waWxlZCB0byBydW50aW1lIGZvcm0gaW4gYC9kaXN0YCBkaXJlY3RvcnkgYW5kIHRoZSBzZXJ2ZXIgaXMgcmVzdGFydGVkLgoxLiBUaGUgbWljcm9zZXJ2aWNlIFVJIGhlbHBzIGJ5IGRlYnVnZ2luZyB0aGUgc2VydmljZS4gSXQgc2hvd3MgYWxzbyBgY3VybGAgY29tbWFuZHMgdG8gY2FsbCB0aGUgYWN0aW9ucyBpbiB0aGUgc2VydmljZS4KCiMjIE9wZW5BUEkgLyBTd2FnZ2VyIHNjaGVtYSBhdXRob3JpbmcKCk1pY3Jvc2VydmljZSBpcyBkZWNsYXJlZCB3aXRoIE9wZW5BUEkgMi4wIChTd2FnZ2VyKSBgc3dhZ2dlci55YW1sYCBzY2hlbWEgd2l0aCBBUEkgZGVmaW5pdGlvbiAtIHlvdSBjYW4gdXNlIFN3Z2dlciBlZGl0b3IgZm9yIHNjaGVtYSBkZWZpbml0aW9uLiBUaGlzIGRlc2lnbiBzdGVwIGlzIGNydWNpYWwgZm9yIGZ1cnRoZXIgcXVhbGl0eSBhbmQgdXNhZ2Ugc2ltcGxpY2l0eSBvZiB0aGUgbmV3IEFQSS4gRGVzaWduIGlzIGJlc3QgbWFkZSBpbiBkaXNjdXNzaW9uLiBJdCBtYXkgYmUgdXNlZnVsIHRvIGF1dGhvciB0aGUgc2NoZW1hIHdpdGggW09ubGluZSBTd2FnZ2VyIEVkaXRvcl0oaHR0cHM6Ly9lZGl0b3Iuc3dhZ2dlci5pby8pLgoKRm9yIGNsb3VkIGRlcGxveW1lbnRzIGNvZGUgZ2VuZXJhdG9yIGdlbmVyYXRlcyBjb2RlIGZvciBoZWFsdGggY2hlY2ssIGlmIGluIHNjaGVtYSBpcyBkZWZpbmVkIGFjdGlvbiBgR0VUIC9oZWFsdGhgLgoKIyMgR2VuZXJhdG9yIGNvZGUgZnJvbSBHaXRIdWIKCjEuIERvd25sb2FkIHRoZSBnZW5lcmF0b3Igd2l0aCBgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS90b21pLXZhbmVrL29wZW5hcGktbWljcm8tdHMuZ2l0YCBhbmQgZ28gdG8gcHJvamVjdCByZXBvc2l0b3J5IHdpdGggYGNkIG1pY3JvdHNgCjEuIERvd25sb2FkIGdlbmVyYXRvciBkZXBlbmRlbmNpZXMgYW5kIHRvb2xzIHdpdGggYG5wbSBpYC4KMS4gUmVnaXN0ZXIgdGhlIHRvb2wgaW4gbG9jYWwgTlBNIHdpdGggYG5wbSBsaW5rYCBjb21tYW5kLCBzbyB5b3UgY2FuIHVzZSBpdCBmcm9tIGNvbW1hbmQgbGluZSBpbiBhbnkgZGlyZWN0b3J5IHdpdGggY29tbWFuZCBgbWljcm90c2AuCgojIyBHZW5lcmF0b3IgaW4gZGV0YWlsCgpUaGUgbWljcm9zZXJ2aWNlIGludGVyZmFjZSBpcyBkZWZpbmVkIGluIGZvcm0gb2YgW09wZW5BUEkgMi4wXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21hc3Rlci92ZXJzaW9ucy8yLjAubWQpIHNjaGVtYSwgYXMgdGhlIGxpYnJhcmllcyAvIHRvb2xzIHVzZWQgaW4gZ2VuZXJhdGVkIGNvZGUgZG8gbm90IHN1cHBvcnQgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBPcGVuQVBJIHlldC4KCkdlbmVyYXRlZCBhcHBsaWNhdGlvbiBjb2RlIGlzIGluIFR5cGVTY3JpcHQgbGFuZ3VhZ2UuCgpCYXNpYyBmZWF0dXJlcyBvZiB0aGUgZ2VuZXJhdGVkIGNvZGU6CgoqIFR5cGVTY3JpcHQgbGFuZ3VhZ2UKKiBBcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIGluIGRpcmVjdG9yeSBgL3NyYy9jb25mYAoqIE5vZGUgJiBFeHByZXNzIHNlcnZlciBzZXR1cCBpbiBgL3NyY2AKKiBDb252ZW50aW9uLWJhc2VkIHJvdXRpbmcgYW5kIHJlcXVlc3QgaGFuZGxlcnMgaW4gYC9zcmMvaGFuZGxlcnNgIC0gcmVxdWVzdCBwYXRoIGNvcnJlc3BvbmRzIHRoZSBkaXJlY3RvcnkgcGF0aCwgbm8gZXhwbGljaXQgcm91dGluZyBsb2dpYyBpcyBuZWVkZWQKKiBaZXJvLWNvZGUgYXV0b21hdGljIGlucHV0IHZhbGlkYXRpb24gZGVmaW5lZCBieSBydWxlcyBpbiBPcGVuQVBJIC8gU3dhZ2dlciBzY2hlbWEKKiBVc2VyIGludGVyZmFjZSBmb3IgbWljcm9zZXJ2aWNlIHRlc3RpbmcgYW5kIGFkbWluaXN0cmF0aW9uIGluIGAvc3JjL3VpYAoqIGBEb2NrZXJmaWxlYCBmb3IgZGVwbG95bWVudCBpbWFnZSBhbmQgYGRvY2tlci1jb21wb3NlLnlhbWxgIGFzIGFuIGV4YW1wbGUgdXNhZ2UgaW4gYXBwbGljYXRpb24gaW50ZWdyYXRpb24KKiBFbmQtdG8tZW5kIHRlc3RzICBpbiBgL3Rlc3RgCgojIyBBcmNoaXRlY3R1cmUgc2hhcGUKCkdlbmVyYXRvciBkb2VzIG5vdCBvZmZlciByaWNoIHNldCBvZiBvcHRpb25zIHRvIHRhaWxvciB0aGUgcmVzdWx0IGludG8gZGlmZmVyZW50IGZvcm1zLiBUaGlzIGFwcHJvYWNoIGV4cHJlc3NlcyBhdXRob3IncyBhcmNoaXRlY3R1cmUgZXhwZXJpZW5jZTogZ2VuZXJhdG9yIGlzIGEgd2F5IHRvIGRlZmluZSBhcmNoaXRlY3R1cmUgd2l0aG91dCBjb21wbGV4IGRvY3VtZW50YXRpb24sIHRoYXQgZ2VudGx5IGRpcmVjdHMgZGV2ZWxvcGVycyBpbiB0aGUgYXJjaGl0ZWN0dXJlLWVudmlzaW9uZWQgZGlyZWN0aW9uOgoKKiBEZXZlbG9wZXJzIGFyZSBpbXBsZW1lbnRpbmcgdGhlIGFwcGxpY2F0aW9uIGxvZ2ljIGluIHJlcXVlc3QgaGFuZGxlcnMgYW5kIHRlc3RzLgoqIE5vbi1mdW5jdGlvbmFsIGNvbmNlcm5zIGFyZSBoaWRkZW4gaW4gdGhlIGdlbmVyYXRlZCBjb2RlLgoqIEltcGxlbWVudGF0aW9uIG9mIG1pY3Jvc2VydmljZSAiZnJvbSB6ZXJvIiBpcyB2ZXJ5IGZhc3QgLSByZW1vdmVzIHRpbWUgJiBlZmZvcnQgY29uY2VybnMgYnkgaW50cm9kdWNpbmcgbmV3IG9yIHJhZGljYWwgcmVmYWN0b3Jpbmcgb2YgZXhpc3Rpbmcgc2VydmljZXMgaW4gc3lzdGVtIGVjb3N5c3RlbS4KCkdlbmVyYXRvciBpbiBhcmNoaXRlY3R1cmU6CgoqIE9wZXJhdGlvbmFsIGRlZmluaXRpb24gb2YgdGhlIGFyY2hpdGVjdHVyZSAoYXMgYSByZXBsYWNlbWVudCBvZiB3cml0ZS1vbmx5IG9ic29sZXRlIGRvY3VtZW50YXRpb24gOi0pCiogQ29uc2lzdGVuY3kgb2YgcHJvamVjdCBzdHJ1Y3R1cmUgLSBzaW1wbGUgZ2xvYmFsIHJlZmFjdG9yaW5nIGJ5IGNoYW5nZXMgb2YgdGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQKKiBEZXZlbG9wZXIgZm9jdXMgb24gYXBwbGljYXRpb24gY29kZSAobWluaW1pemVzIGRldmVsb3BlcidzIGNyZWF0aXZpdHkgaW4gbm9uLWZ1bmN0aW9uYWwgcnVudGltZSBhbmQgc2VjdXJpdHkgY29uY2VybnMpCgpBcyBhbiBhcmNoaXRlY3QgeW91IGhhdmUgeW91ciBvd24gdGVjaG5pY2FsIG9waW5pb24sIHRlY2hub2xvZ3kgY29uc3RyYWludHMgLyBwcmVmZXJlbmNlcyBhbmQgaW5mcmFzdHJ1Y3R1cmUgJsKgc2VjdXJpdHkgc2VydmljZXMgdGhhdCBoYXZlIHRvIGJlIGludGVncmF0ZWQgaW50byB0aGUgKG1pY3JvKXNlcnZpY2Ugc2VydmVycy4KCkp1c3QgZm9yayB0aGlzIHByb2plY3QsIG9yIHRha2UgYW4gaW5zcGlyYXRpb24gYW5kIGJ1aWxkIHlvdXIgb3duIGdlbmVyYXRvciBmcm9tIGFuIHByb29mLW9mLWNvbmNlcHQgc2VydmljZSB0aGF0IGJlc3QgZml0cyB5b3VyIGV4cGVjdGF0aW9ucy4K readmeEtag: '"0b3e48e33f2a2d147ea9a0419cf01a632d968170"' readmeLastModified: Sun, 30 Apr 2023 06:19:22 GMT repositoryId: 165400292 description: >- Microservice code generator: from OpenAPI (Swagger) REST API specification to TypeScript project with Docker. created: '2019-01-12T15:00:44Z' updated: '2025-11-26T11:55:48Z' language: JavaScript archived: false stars: 31 watchers: 1 forks: 3 owner: tomi-vanek logo: https://avatars.githubusercontent.com/u/10799822?v=4 license: MIT repoEtag: '"305b5c34d8bd675c92fb58888dde077d1094857b8ad2929cfd5a7648bfc9a900"' repoLastModified: Wed, 26 Nov 2025 11:55:48 GMT foundInMaster: true id: 87f9aea977df5e49cac64a831bd0299b - source: https://openapi.tools/ name: Meeshkan category: - Learning - Mock - Server Implementations language: Python link: https://github.com/meeshkan/meeshkan repository: https://github.com/meeshkan/meeshkan source_description: >- Mock HTTP APIs through a combination of API definitions, recorded traffic and code. Used for sandboxes, as well as automated and exploratory testing. v2: false v3: true repositoryMetadata: base64Readme: >- IyBNZWVzaGthbiDigJQgdGhlIGZyb250ZW5kIG1vbm8tcmVwbwoKVGhpcyByZXBvIGNvbnRhaW5zIDQgYXBwcyB0aGF0IGhhdmUgc29tZSAnZnJvbnRlbmQnIHV0aWxpdHkgdG8gdGhlIGNvbXBhbnkuCgoxLiBgY3VzdG9tLWdyYXBocWxgIHRoaXMgaXMgd2hlcmUgb3VyIDhiYXNlIGN1c3RvbSBsb2dpYyBsaXZlcy4gWzhiYXNlIGxvZ2ljXShodHRwczovL2RvY3MuOGJhc2UuY29tL2RvY3MvOGJhc2UtY29uc29sZS9wbGF0Zm9ybS10b29scy9mdW5jdGlvbnMvKSBhbGxvd3MgeW91IHRvIGRlcGxveSBjdXN0b20gZnVuY3Rpb25hbGl0eSBhbmQgaXMgdGhlIGJhc2VsaW5lIGZvciBjb21taXR0aW5nIGRhdGFiYXNlIG1pZ3JhdGlvbnMuIEluIG91ciBjYXNlIHdlIGhhdmUgYW4gaW52aXRlIGxpbmsgW3RyaWdnZXIgYW5kIHVwZGF0ZXJdKC9Vc2Vycy9tYWtlbm5hc211dHovRG9jdW1lbnRzL0dpdEh1Yi9tZWVzaGthbi9hcHBzL2N1c3RvbS1ncmFwaHFsLzhiYXNlLnltbCkuIEluIG9yZGVyIHRvIHVzZSB0aGlzIHJlcG8sIHlvdSdsbCBuZWVkIHRvIGJlIGZhbWlsaWFyIHdpdGggdGhlIFs4YmFzZSBDTEldKGh0dHBzOi8vZG9jcy44YmFzZS5jb20vZG9jcy9kZXZlbG9wbWVudC10b29scy9jbGkpLgoyLiBgb2ctY2FyZHNgIGlzIGEgZnJvbnRlbmQgbWljcm8tc2VydmljZSB0aGF0IGdlbmVyYXRlcyBkeW5hbWljIGltYWdlcyBmb3IgdGhlIHNoYXJpbmcgY2FyZHMgc2hvd24gb24gc29jaWFscyBmb3Igb3VyIHdlYnNpdGUuIEl0IGlzIGRlcGxveWVkIG9uIFZlcmNlbCBhbmQgc28gZmFyIGhhcyBuZWVkZWQgbGl0dGxlIHRvIG5vIG1haW50YWluYW5jZS4KMy4gYHdlYmFwcGAgdGhpcyBpcyB0aGUgbW9zdCBhY3RpdmUgYXBwIGluIHRoaXMgcmVwby4gSXQgaXMgdGhlIG1lZXNoa2FuIHdlYmFwcCAoaHR0cHM6Ly9hcHAubWVlc2hrYW4uY29tKSB3aGljaCBpcyBkZXBsb3llZCBvbiBWZXJjZWwuCjQuIGB3ZWJzaXRlYCB0aGlzIGlzIGhlcmUgaW4gYSBob3BlZnVsIG1lYXN1cmUgYnV0IG5vdCBjdXJyZW50bHkgaW4gdXNlLiBDdXJyZW50bHkgb3VyIGxpdmUgd2Vic2l0ZSByZXBvIGlzIGh0dHBzOi8vZ2l0aHViLmNvbS9tZWVzaGthbi93ZWJzaXRlLiBXZSdkIGxpa2UgdG8gdHJhbnNpdGlvbiB0aGlzIGhlcmUgdG8gc2hhcmUgdGhlIGNoYWtyYS11aSBsaWJyYXJ5LgoKVGhpcyByZXBvIGFsc28gY29udGFpbnMgMyBgbGlic2Agb3IgTlggbGlicmFyaWVzIHdoaWNoIGFyZSBzaGFyZWQgY29kZSBiZXR3ZWVuIGFsbCBvZiB0aGUgZnJvbnRlbmQgcHJvamVjdHMuCgoxLiBgY2hha3JhLXRoZW1lYCBzZXJ2ZXMgYXMgdGhlIGN1c3RvbSBbQ2hha3JhIFVJXShodHRwczovL2NoYWtyYS11aS5jb20vKSBzZXR1cCB0aGF0IHdlIHVzZSBhY2Nyb3NzIGFueSBmcm9udGVuZCBwcm9qZWN0cy4KMi4gYGRvd25sb2FkYWJsZS1zY3JpcHRgIGlzIHRoZSBtaWNyb3NlcnZpY2UgdGhhdCBjb252ZXJ0cyB0aGUgdXNlciBzdG9yeSBldmVudHMvY29tbWFuZHMgaW4gOGJhc2UgaW50byBhIFB1cHBldGVlciBzY3JpcHQuCjMuIGBtZWVzaGthbi10eXBlc2AgaXMgYSBjZW50cmFsaXplZCBwbGFjZSBmb3IgY3VzdG9tIFR5cGVTY3JpcHQgaW50ZXJmYWNlcyB3ZSB1c2UuIFNvbWUgYXJlIGJ1aWx0IGN1c3RvbSBidXQgbW9zdCBjb21lIGZyb20gOGJhc2UgdXNpbmcgYSBwYWNrYWdlIGNhbGxlZCBgZ3JhcGhxbC1jb2RlLWdlbmAuCgojIyBHZXR0aW5nIHRoZSBgd2ViYXBwYCBwcm9qZWN0IHdvcmtpbmcgbG9jYWxseQoKVGhpcyBndWlkZSB3aWxsIHVzZSBgeWFybmAuIEZlZWwgZnJlZSB0byB1c2UgdGhlIGBucG1gIGVxdWl2YWxlbnQgdG8gbXkgaW5zdHJ1Y3Rpb25zIGlmIHRoYXQgd29ya3MgYmV0dGVyIGZvciB5b3UhCgoxLiBBZnRlciBjbG9uaW5nIHRoaXMgcmVwbyB0byB5b3VyIGNvbXB1dGVyIOKAlCBgY2RgIGludG8gdGhlIGJhc2UgcmVwb3NpdG9yeSAoYG1lZXNoa2FuYCkuCjIuIER1cGxpY2F0ZSB0aGUgYC5lbnYudGVtcGxhdGVgIGZpbGUsIHJlbmFtaW5nIGl0IHRvIGAuZW52YC4KICAgLSBgQVVUSDBfQ0xJRU5UX0lEYCwgYEFVVEgwX0NMSUVOVF9TRUNSRVRgLCBhbmQgYFNFU1NJT05fQ09PS0lFX1NFQ1JFVGAgY2FuIGFsbCBiZSBmb3VuZCBpbiBBdXRoMC4gSWYgeW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0byBBdXRoMCwgY29udGFjdCBAazRtNCBvciBAS2Vuem9CZW56byB0byBnZXQgeW91IHRoZSB0b2tlbnMuIFRoZSB2YWx1ZSBvZiBgQVVUSDBfRE9NQUlOYCBpcyAibWVlc2hrYW4uZXUuYXV0aDAuY29tIi4KICAgLSBUaGUgdG9rZW4gYE5FWFRfUFVCTElDX0VJR0hUQkFTRV9FTkRQT0lOVGAgY2hhbmdlcyB0aGUgOGJhc2UgZW52aXJvbm1lbnQgYmV0d2VlbiBgc3RhZ2luZ2AgImh0dHBzOi8vYXBpLjhiYXNlLmNvbS9ja2hxZHo1bXUwMXIzMDdtbjZzemNiZGtlX3N0YWdpbmciIGFuZCBgTWFzdGVyYCAiaHR0cHM6Ly9hcGkuOGJhc2UuY29tL2NraHFkejVtdTAxcjMwN21uNnN6Y2Jka2UiLgogICAtIFRoZSB0b2tlbiBgRUlHSFRfQkFTRV9BVVRIX1BST0ZJTEVfSURgIGNhbiBiZSBmb3VuZCBpbiA4YmFzZSAobG9nIGluIGZvdW5kIGluIDFwdykuCiAgIC0gVGhlIGBURVNUX1VSTGAgZGVwZW5kcyBvbiBob3cgeW91IHNlcnZlIHlvdXIgd2ViYXBwIGxvY2FsbHkuIElmIHlvdSB1c2UgdGhlIGNvbW1hbmQgYHlhcm4gc3RhcnQgd2ViYXBwYCB0aGUgdmFsdWUgd2lsbCBiZSAibG9jYWxob3N0OjMwMDAiLiBDaGFuZ2UgYWNjb3JkaW5nbHkgZm9yIGEgZGlmZmVyZW50IHBvcnQuCiAgIC0gVGhlIGBDT09LSUVgIHRva2VuIGNhbiBiZSBmb3VuZCBpbiBBdXRoMCwgb3IgaHR0cHM6Ly9hcHAubWVlc2hrYW4uY29tIHVuZGVyIG91ciBpbnRlcm5hbCBgTWVlc2hrYW4gd2ViYXBwYCBwcm9qZWN0LCBhdXRoIHRva2Vucy4KICAgLSBUaGUgYE1JWFBBTkVMX1RPS0VOYCBjYW4gYmUgZm91bmQgaW4gTWl4cGFuZWwsIGJ1dCBmb3IgbG9jYWwgZGV2ZWxvcG1lbnQgKHRvIG5vdCBwb2xsdXRlIHByb2R1Y3Rpb24gYW5hbHl0aWNzKSBJJ2Qgc3VnZ2VzdCB5b3UgdXNlIHRoZSBgVGVzdCBkYXRhYCBwcm9qZWN0IHRva2VuIG9mICJkZDdmZWJjOGMyNjk3ZmNhOGVkMmQ1NTIzNDA5YTI4MSIuCjMuIFdoaWxlIHN0aWxsIGluIHRoZSBiYXNlIHJlcG9zaXRvcnksIGluc3RhbGwgdGhlIHByb2plY3QgZGVwZW5kZW5jaWVzIHdpdGggYHlhcm5gLgo0LiBTdGFydCBhIGRldmVsb3BtZW50IHNlcnZlciBvZiB0aGUgd2ViYXBwIHVzaW5nIHRoZSBjb21tYW5kIGB5YXJuIHN0YXJ0IHdlYmFwcGAuIFlvdSBzaG91bGQgdGhlbiBzZWUgYSBtZXNzYWdlIHRoYXQgdGhlIHBvcnQgMzAwMCBpcyBub3cgb3BlbiBhbmQgeW91IGNhbiB2aXNpdCBgbG9jYWxob3N0OjMwMDBgLgo= readmeEtag: '"e02599f5aa9525c9d2b715310334bcd13631cc2b"' readmeLastModified: Sun, 05 Sep 2021 00:37:40 GMT repositoryId: 312140836 description: The Meeshkan frontend stack monorepo. created: '2020-11-12T02:01:32Z' updated: '2023-01-27T19:33:58Z' language: TypeScript archived: true stars: 2 watchers: 1 forks: 1 owner: meeshkan logo: https://avatars.githubusercontent.com/u/32298527?v=4 repoEtag: '"ad1ff456329869cf55947d199086ed159807fcb405ac6a6cb7933c5d3441d10a"' repoLastModified: Fri, 27 Jan 2023 19:33:58 GMT foundInMaster: true id: 7e8e0d0c7a10ec695d4736865a7f573b - source: https://openapi.tools/ name: Vert.x Web API Service category: Server language: Java link: https://vertx.io/docs/vertx-web-api-service/java/ repository: https://github.com/vert-x3/vertx-web/ source_description: Create API service proxies using event bus with request/response validation v2: false v3: true repositoryMetadata: base64Readme: >- PSBWZXJ0LngtV2ViCgppbWFnZTpodHRwczovL2dpdGh1Yi5jb20vdmVydC14My92ZXJ0eC13ZWIvYWN0aW9ucy93b3JrZmxvd3MvY2ktNS54LnltbC9iYWRnZS5zdmdbIkJ1aWxkIFN0YXR1cyAoNS54KSIsbGluaz0iaHR0cHM6Ly9naXRodWIuY29tL3ZlcnQteDMvdmVydHgtd2ViL2FjdGlvbnMvd29ya2Zsb3dzL2NpLTUueC55bWwiXQppbWFnZTpodHRwczovL2dpdGh1Yi5jb20vdmVydC14My92ZXJ0eC13ZWIvYWN0aW9ucy93b3JrZmxvd3MvY2ktNC54LnltbC9iYWRnZS5zdmdbIkJ1aWxkIFN0YXR1cyAoNC54KSIsbGluaz0iaHR0cHM6Ly9naXRodWIuY29tL3ZlcnQteDMvdmVydHgtd2ViL2FjdGlvbnMvd29ya2Zsb3dzL2NpLTQueC55bWwiXQppbWFnZTpodHRwczovL2ltZy5zaGllbGRzLmlvL21hdmVuLWNlbnRyYWwvdi9pby52ZXJ0eC92ZXJ0eC13ZWIuc3ZnWyJNYXZlbiBDZW50cmFsIl0KaW1hZ2U6aHR0cHM6Ly9iZXN0cHJhY3RpY2VzLmNvcmVpbmZyYXN0cnVjdHVyZS5vcmcvcHJvamVjdHMvNTQwL2JhZGdlWyJDSUkgQmVzdCBQcmFjdGljZXMiLGxpbms9Imh0dHBzOi8vYmVzdHByYWN0aWNlcy5jb3JlaW5mcmFzdHJ1Y3R1cmUub3JnL3Byb2plY3RzLzU0MCJdCgpWZXJ0LngtV2ViIGlzIGEgc2V0IG9mIGJ1aWxkaW5nIGJsb2NrcyBmb3IgYnVpbGRpbmcgd2ViIGFwcGxpY2F0aW9ucyB3aXRoIFZlcnQueC4gVGhpbmsgb2YgaXQgYXMgYSBTd2lzcyBBcm15IEtuaWZlIGZvciBidWlsZGluZwptb2Rlcm4sIHNjYWxhYmxlLCB3ZWIgYXBwcy4KClBsZWFzZSBzZWUgdGhlIG1haW4gZG9jdW1lbnRhdGlvbiBvbiB0aGUgd2ViLXNpdGUgZm9yIGEgZnVsbCBkZXNjcmlwdGlvbjoKCiogaHR0cHM6Ly92ZXJ0eC5pby9kb2NzLyN3ZWJbV2ViLXNpdGUgZG9jdW1lbnRhdGlvbl0KCj09IFRlbXBsYXRlIGVuZ2luZXMKClRlbXBsYXRlIGVuZ2luZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGluIHRoZSB0ZW1wbGF0ZSBlbmdpbmUgc3ViLXByb2plY3QuCg== readmeEtag: '"269b52e98cea5813787f90c67bef329932b70760"' readmeLastModified: Fri, 16 Aug 2024 21:55:56 GMT repositoryId: 26628954 description: HTTP web applications for Vert.x created: '2014-11-14T08:15:20Z' updated: '2026-02-05T20:01:22Z' language: Java archived: false stars: 1144 watchers: 71 forks: 556 owner: vert-x3 logo: https://avatars.githubusercontent.com/u/8124623?v=4 license: Apache-2.0 repoEtag: '"27b312e88d5724b891cdb6068adcfe907cdb8f8c8a312ae3851967e80ed62edc"' repoLastModified: Thu, 05 Feb 2026 20:01:22 GMT foundInMaster: true v3_link: https://github.com/vert-x3/vertx-web/issues/1872 id: 649e1f8cd9ccaccf681527e6984f2785 v3_1_link: https://github.com/vert-x3/vertx-web/issues/1872 - source: https://openapi.tools/ name: Mayhem for API category: Testing link: https://forallsecure.com/mayhem-for-api language: Any source_description: >- Probe your REST API with an infinite stream of test cases generated automatically from your OpenAPI specification. v2: true v3: true foundInMaster: true id: f0d53d8ed081f28f47065108d2abdf80 - source: openapi3 tags repository: https://github.com/unionj-cloud/go-doudou v3: true repositoryMetadata: base64Readme: >- PHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9nby1kb3Vkb3UuZ2l0aHViLmlvIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj4KICAgIDxpbWcgd2lkdGg9IjE4MCIgc3JjPSJodHRwczovL2dvLWRvdWRvdS5naXRodWIuaW8vaGVyby5wbmciIGFsdD0iVml0ZSBsb2dvIj4KICA8L2E+CjwvcD4KPGJyLz4KPHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2F2ZWxpbm8vYXdlc29tZS1nbyI+PGltZyBzcmM9Imh0dHBzOi8vYXdlc29tZS5yZS9tZW50aW9uZWQtYmFkZ2Uuc3ZnIiBhbHQ9Ik1lbnRpb25lZCBpbiBBd2Vzb21lIEdvIj48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS91bmlvbmotY2xvdWQvZ28tZG91ZG91Ij48aW1nIHNyYz0iaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS91bmlvbmotY2xvdWQvZ28tZG91ZG91P3N0YXR1cy5wbmciIGFsdD0iR29Eb2MiPjwvYT4KICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdW5pb25qLWNsb3VkL2dvLWRvdWRvdS9hY3Rpb25zL3dvcmtmbG93cy9nby55bWwiPjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdW5pb25qLWNsb3VkL2dvLWRvdWRvdS9hY3Rpb25zL3dvcmtmbG93cy9nby55bWwvYmFkZ2Uuc3ZnP2JyYW5jaD1tYWluIiBhbHQ9IkdvIj48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9jb2RlY292LmlvL2doL3VuaW9uai1jbG91ZC9nby1kb3Vkb3UiPjxpbWcgc3JjPSJodHRwczovL2NvZGVjb3YuaW8vZ2gvdW5pb25qLWNsb3VkL2dvLWRvdWRvdS9icmFuY2gvbWFpbi9ncmFwaC9iYWRnZS5zdmc/dG9rZW49UVJMUFJBWDg4NSIgYWx0PSJjb2RlY292Ij48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL3VuaW9uai1jbG91ZC9nby1kb3Vkb3UiPjxpbWcgc3JjPSJodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS91bmlvbmotY2xvdWQvZ28tZG91ZG91IiBhbHQ9IkdvIFJlcG9ydCBDYXJkIj48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3VuaW9uai1jbG91ZC9nby1kb3Vkb3UiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi92L3JlbGVhc2UvdW5pb25qLWNsb3VkL2dvLWRvdWRvdT9zdHlsZT1mbGF0LXNxdWFyZSIgYWx0PSJSZWxlYXNlIj48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0xpY2Vuc2UtTUlULXllbGxvdy5zdmciIGFsdD0iTGljZW5zZTogTUlUIj48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly93YWthdGltZS5jb20vYmFkZ2UvdXNlci84NTJiY2YyMi04YTM3LTQ2MGEtYThlMi0xMTU4MzMxNzRlYmEvcHJvamVjdC81N2M4MzBmNy1lNTA3LTRjYjEtOWZkMS1mZWVkZDk2Njg1ZjYiPjxpbWcgc3JjPSJodHRwczovL3dha2F0aW1lLmNvbS9iYWRnZS91c2VyLzg1MmJjZjIyLThhMzctNDYwYS1hOGUyLTExNTgzMzE3NGViYS9wcm9qZWN0LzU3YzgzMGY3LWU1MDctNGNiMS05ZmQxLWZlZWRkOTY2ODVmNi5zdmciIGFsdD0iTGljZW5zZTogTUlUIj48L2E+CjwvcD4KPGJyLz4KCiMgZ28tZG91ZG91Cgo+IExpZ2h0d2VpZ2h0IEdvbGFuZyBNaWNyb3NlcnZpY2UgRnJhbWV3b3JrCgotIPCfkqEgU3RhcnRzIGZyb20gZ29sYW5nIGludGVyZmFjZSwgbm8gbmVlZCB0byBsZWFybiBuZXcgSURMKGludGVyZmFjZSBkZWZpbml0aW9uIGxhbmd1YWdlKS4KLSDwn5SpIFBvd2VyZnVsIGNvZGUgZ2VuZXJhdG9yIGNsaSBidWlsdC1pbi4gQWZ0ZXIgZGVmaW5pbmcgeW91ciBpbnRlcmZhY2UgbWV0aG9kcywgeW91ciBvbmx5IGpvYiBpcyBpbXBsZW1lbnRpbmcgeW91ciBhd2Vzb21lIGlkZWEuCi0g4pqhIEJvcm4gZnJvbSB0aGUgY2xvdWQtbmF0aXZlIGVyYS4gQnVpbHQtaW4gQ0xJIGNhbiBzcGVlZCB1cCB5b3VyIHByb2R1Y3QgaXRlcmF0aW9uLgotIPCflJEgQnVpbHQtaW4gc2VydmljZSBnb3Zlcm5hbmNlIHN1cHBvcnQgaW5jbHVkaW5nIHJlbW90ZSBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQsIGNsaWVudC1zaWRlIGxvYWQgYmFsYW5jZXIsIHJhdGUgbGltaXRlciwgY2lyY3VpdCBicmVha2VyLCBidWxraGVhZCwgdGltZW91dCwgcmV0cnkgYW5kIG1vcmUuCi0g8J+Tpu+4jyBTdXBwb3J0aW5nIGJvdGggbW9ub2xpdGggYW5kIG1pY3Jvc2VydmljZSBhcmNoaXRlY3R1cmVzIGdpdmVzIHlvdSBmbGV4aWJpbGl0eSB0byBkZXNpZ24geW91ciBzeXN0ZW0uCgpHby1kb3Vkb3XvvIhkb3Vkb3UgcHJvbm91bmNlIC9kyZl1ZMmZdS/vvIlpcyBPcGVuQVBJIDMuMCAoZm9yIFJFU1QpIHNwZWMgYW5kIFByb3RvYnVmIHYzIChmb3IgZ3JwYykgYmFzZWQgbGlnaHR3ZWlnaHQgbWljcm9zZXJ2aWNlIGZyYW1ld29yay4gSXQgc3VwcG9ydHMgbW9ub2xpdGggc2VydmljZSBhcHBsaWNhdGlvbiBhcyB3ZWxsLiAgCgpSZWFkIHRoZSBEb2NzIFtodHRwczovL2dvLWRvdWRvdS5naXRodWIuaW8vZ3VpZGVdKGh0dHBzOi8vZ28tZG91ZG91LmdpdGh1Yi5pby9ndWlkZSkgdG8gTGVhcm4gTW9yZS4KCiMjIEJlbmNobWFyawoKIVtiZW5jaG1hcmtdKC4vYmVuY2htYXJrLnBuZykKCk1hY2hpbmU6IGBNYWNCb29rIFBybyAoMTYtaW5jaCwgMjAxOSlgICAKQ1BVOiBgMi4zIEdIeiA4IGNvcmVzIEludGVsIENvcmUgaTlgICAKTWVtb3J5OiBgMTYgR0IgMjY2NyBNSHogRERSNGAgIApQcm9jZXNzaW5nVGltZTogYDBtcywgMTBtcywgMTAwbXMsIDUwMG1zYCAgCkNvbmN1cnJlbmN5OiBgMTAwMGAgIApEdXJhdGlvbjogYDMwc2AgIApnby1kb3Vkb3UgVmVyc2lvbjogYHYxLjMuN2AgIAoKW0NoZWNrb3V0IHRoZSB0ZXN0IGNvZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS93dWJpbjE5ODkvZ28td2ViLWZyYW1ld29yay1iZW5jaG1hcmspCgojIyBDcmVkaXRzCgpHaXZlIGNyZWRpdHMgdG8gZm9sbG93aW5nIHJlcG9zaXRvcmllcyBhbmQgYWxsIHRoZWlyIGNvbnRyaWJ1dG9yczoKLSBbZ28tcmVkaXMvcmVkaXNfcmF0ZV0oZ2l0aHViLmNvbS9nby1yZWRpcy9yZWRpc19yYXRlKTogZ28tZG91ZG91IGlzIHJlbHlpbmcgb24gaXQgdG8gaW1wbGVtZW50IHJlZGlzIGJhc2VkIHJhdGUgbGltaXQgZmVhdHVyZQotIFthcG9sbG9jb25maWcvYWdvbGxvXShodHRwczovL2dpdGh1Yi5jb20vYXBvbGxvY29uZmlnL2Fnb2xsbyk6IGdvLWRvdWRvdSBpcyByZWx5aW5nIG9uIGl0IHRvIGltcGxlbWVudCByZW1vdGUgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IHN1cHBvcnQgZm9yIFtBcG9sbG9dKGh0dHBzOi8vZ2l0aHViLmNvbS9hcG9sbG9jb25maWcvYXBvbGxvKQotIFtuYWNvcy1ncm91cC9uYWNvcy1zZGstZ29dKGh0dHBzOi8vZ2l0aHViLmNvbS9uYWNvcy1ncm91cC9uYWNvcy1zZGstZ28pOiBnby1kb3Vkb3UgaXMgcmVseWluZyBvbiBpdCB0byBpbXBsZW1lbnQgc2VydmljZSBkaXNjb3ZlcnkgYW5kIHJlbW90ZSBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQgc3VwcG9ydCBmb3IgW05hY29zXShodHRwczovL2dpdGh1Yi5jb20vYWxpYmFiYS9uYWNvcykKCiMjIENvbW11bml0eQoKV2VsY29tZSB0byBjb250cmlidXRlIHRvIGdvLWRvdWRvdSBieSBmb3JraW5nIGl0IGFuZCBzdWJtaXR0aW5nIHByIG9yIGlzc3Vlcy4gSWYgeW91IGxpa2UgZ28tZG91ZG91LCBwbGVhc2UgZ2l2ZSBpdCBhCnN0YXIhCgpXZWxjb21lIHRvIGNvbnRhY3QgbWUgZnJvbQoKLSBGYWNlYm9vazogW2h0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9iaW4ud3UuOTQ2MTc5OTkvXShodHRwczovL3d3dy5mYWNlYm9vay5jb20vYmluLnd1Ljk0NjE3OTk5LykKLSBUd2l0dGVyOiBbaHR0cHM6Ly90d2l0dGVyLmNvbS9CSU5XVTQ5MjA1NTEzXShodHRwczovL3R3aXR0ZXIuY29tL0JJTldVNDkyMDU1MTMpCi0gRW1haWw6IDMyODQ1NDUwNUBxcS5jb20KLSBXZUNoYXQ6ICAKICA8aW1nIHNyYz0iLi9xcmNvZGUucG5nIiBhbHQ9IndlY2hhdC1ncm91cCIgd2lkdGg9IjI0MCI+Ci0gV2VDaGF0IEdyb3VwOiAgCiAgPGltZyBzcmM9Ii4vZ28tZG91ZG91LXdlY2hhdC1ncm91cC5wbmciIGFsdD0id2VjaGF0LWdyb3VwIiB3aWR0aD0iMjQwIj4KLSBRUSBncm91cDogIAogIDxpbWcgc3JjPSIuL2dvLWRvdWRvdS1xcS1ncm91cC5wbmciIGFsdD0icXEtZ3JvdXAiIHdpZHRoPSIyNDAiPgoKIyMg8J+UiyBKZXRCcmFpbnMgT3BlbiBTb3VyY2UgTGljZW5zZQoKR28tZG91ZG91IGhhcyBiZWVuIGJlaW5nIGRldmVsb3BlZCB3aXRoIEdvTGFuZCB1bmRlciB0aGUgKipmcmVlIEpldEJyYWlucyBPcGVuIFNvdXJjZSBsaWNlbnNlKHMpKiogZ3JhbnRlZCBieSBKZXRCcmFpbnMgcy5yLm8uLCBoZW5jZSBJIHdvdWxkIGxpa2UgdG8gZXhwcmVzcyBteSBncmF0aXR1ZGUgaGVyZS4KCjxhIGhyZWY9Imh0dHBzOi8vamIuZ2cvT3BlblNvdXJjZVN1cHBvcnQiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9yZXNvdXJjZXMuamV0YnJhaW5zLmNvbS9zdG9yYWdlL3Byb2R1Y3RzL2NvbXBhbnkvYnJhbmQvbG9nb3MvamJfYmVhbS5wbmciIGFsdD0iSmV0QnJhaW5zIExvZ28gKE1haW4pIGxvZ28uIiB3aWR0aD0iMzAwIj48L2E+CgojIyBMaWNlbnNlCgpNSVQK readmeEtag: '"c5717e52cb52d29d98515fcc4aefed1bd696629c"' readmeLastModified: Sun, 11 Aug 2024 06:39:27 GMT repositoryId: 341813963 description: >- go-doudou(doudou pronounce /dəudəu/)is OpenAPI 3.0 (for REST) spec and Protobuf v3 (for grpc) based lightweight microservice framework. It supports monolith service application as well. created: '2021-02-24T07:21:40Z' updated: '2026-02-01T14:56:18Z' language: Go archived: false stars: 1207 watchers: 70 forks: 203 owner: unionj-cloud logo: https://avatars.githubusercontent.com/u/79033021?v=4 license: MIT repoEtag: '"b59891df1f78186b310cf175f006e0753ac6b8e8fa20d92688ca102eaea9692b"' repoLastModified: Sun, 01 Feb 2026 14:56:18 GMT foundInMaster: true category: SDK id: aab01f8bda6c542fdacf9ee8dfa7d20d - source: https://openapi.tools/ name: pyswagger category: - Converters - Server Implementations repository: https://github.com/pyopenapi/pyswagger language: Python source_description: Client & converter in Python, which is type-safe, dynamic, spec-compliant. v2: true v3_progress_link: https://github.com/mission-liao/pyswagger/blob/develop/docs/md/news.md repositoryMetadata: base64Readme: >- cHlzd2FnZ2VyCj09PT09PT09PQoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvbWlzc2lvbi1saWFvL3B5c3dhZ2dlci5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9taXNzaW9uLWxpYW8vcHlzd2FnZ2VyKQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL21pc3Npb24tbGlhby9weXN3YWdnZXIvYmFkZ2Uuc3ZnP2JyYW5jaD1tYXN0ZXImc3R5bGU9ZmxhdCldKGh0dHBzOi8vY292ZXJhbGxzLmlvL3IvbWlzc2lvbi1saWFvL3B5c3dhZ2dlcj9icmFuY2g9bWFzdGVyKQoKQSBweXRob24gY2xpZW50IGZvciBbU3dhZ2dlcl0oaHR0cHM6Ly9oZWxsb3JldmVyYi5jb20vZGV2ZWxvcGVycy9zd2FnZ2VyKSBlbmFibGVkIFJFU1QgQVBJLiBJdCB3b3VsZG4ndCBiZSBlYXNpZXIgdG8KdHJ5IFN3YWdnZXIgUkVTVCBBUEkgYnkgW1N3YWdnZXItVUldKGh0dHBzOi8vZ2l0aHViLmNvbS93b3JkbmlrL3N3YWdnZXItdWkpLiBIb3dldmVyLCB3aGVuIGl0J3MgdGltZSB0byAqKnVuaXR0ZXN0KioKeW91ciBBUEksIHRoZSBmaXJzdCBvcHRpb24geW91IGZpbmQgd291bGQgYmUgW1N3YWdnZXItY29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3dvcmRuaWsvc3dhZ2dlci1jb2RlZ2VuKSwgYnV0IHRoZSBiZXR0ZXIgb3B0aW9uIGlzIHVzLgoKVGhpcyBwcm9qZWN0IGlzIGRldmVsb3BlZCBhZnRlciBbc3dhZ2dlci1weV0oaHR0cHM6Ly9naXRodWIuY29tL2RpZ2l1bS9zd2FnZ2VyLXB5KSwgd2hpY2ggaXMgYSBuaWNlbHkgaW1wbGVtZW50ZWQgb25lLCBhbmQgaW5zcGlyZWQgbWFueSBhc3BlY3RzIG9mIHRoaXMgcHJvamVjdC4gQW5vdGhlciBwcm9qZWN0IGlzIFtmbGV4XShodHRwczovL2dpdGh1Yi5jb20vcGlwZXJtZXJyaWFtL2ZsZXgpLCB3aGljaCBmb2N1c2VzIG9uIHBhcmFtZXRlciB2YWxpZGF0aW9uLCB0cnkgaXQgaWYgeW91IGNhbiBoYW5kbGUgb3RoZXIgcGFydHMgYnkgeW91cnNlbHZlcy4gRm9yIG90aGVyIHByb2plY3RzIHJlbGF0ZWQgdG8gU3dhZ2dlciB0b29scyBpbiBweXRob24sIGNoZWNrIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1zcGVjI3B5dGhvbikuCgoqKnB5c3dhZ2dlcioqIGlzIG11Y2ggZWFzaWVyIHRvIHVzZSAoY29tcGFyZWQgdG8gc3dhZ2dlci1jb2RlZ2VuLCB5b3UgZG9uJ3QgbmVlZCB0byBwcmVwYXJlIGEgc2NhbGEgZW52aXJvbm1lbnQpIGFuZCB0cmllcyBoYXJkIHRvICoqZnVsbHkgc3VwcG9ydHMqKiBbU3dhZ2dlciBTcGVjXShodHRwczovL2hlbGxvcmV2ZXJiLmNvbS9kZXZlbG9wZXJzL3N3YWdnZXIpIGluIGFsbCBhc3BlY3RzLgoKLSBbTkVXczogdXBjb21pbmcgc3VwcG9ydCBmb3IgT3BlbkFQSSAzLjBdKGRvY3MvbWQvbmV3cy5tZCkKLSBbRmVhdHVyZXNdKFJFQURNRS5tZCNmZWF0dXJlcykKLSBbVHV0b3JpYWxdKFJFQURNRS5tZCN0dXRvcmlhbCkKLSBbUXVpY2sgU3RhcnRdKFJFQURNRS5tZCNxdWljay1zdGFydCkKLSBbSW5zdGFsbGF0aW9uXShSRUFETUUubWQjaW5zdGFsbGF0aW9uKQotIFtSZWZlcmVuY2VdKFJFQURNRS5tZCNyZWZlcmVuY2UpCi0gW0NvbnRyaWJ1dG9yc10oUkVBRE1FLm1kI2NvbnRyaWJ1dG9ycykKLSBbQ29udHJpYnV0aW9uIEd1aWRlbGluZV0oUkVBRE1FLm1kI2NvbnRyaWJ1dGlvbi1ndWlsZGVsaW5lKQotIFtGQVFdKGRvY3MvbWQvZmFxLm1kKQotIFtDaGFuZ2VzXShDSEFOR0VTLm1kKQoKLS0tLS0tLS0tCgojIyBGZWF0dXJlcwotIGNvbnZlcnQgU3dhZ2dlciBEb2N1bWVudCBmcm9tIG9sZGVyIHZlcnNpb24gdG8gbmV3ZXIgb25lLiAoZXguIGNvbnZlcnQgZnJvbSAxLjIgdG8gMi4wKQotIHN1cHBvcnQgU3dhZ2dlciAqKjEuMioqLCAqKjIuMCoqIG9uIHB5dGhvbiB+fjIuNn5+LCAqKjIuNyoqLCAqKjMuMyoqLCAqKjMuNSoqLCAqKjMuNioqCi0gc3VwcG9ydCBZQU1MIHZpYSBbUHJldHR5LVlBTUxdKGh0dHBzOi8vZ2l0aHViLmNvbS9tay1mZy9wcmV0dHkteWFtbCkKLSBzdXBwb3J0ICRyZWYgdG8gKipFeHRlcm5hbCBEb2N1bWVudCoqLCBtdWx0aXBsZSBzd2FnZ2VyLmpzb24gd2lsbCBiZSBvcmdhbml6ZWQgaW50byBhIGdyb3VwIG9mIEFwcC4gQW5kIGV4dGVybmFsIGRvY3VtZW50IHdpdGggc2VsZi1kZXNjcmliaW5nIHJlc291cmNlIGlzIGFsc28gc3VwcG9ydGVkIChyZWZlciB0byBbaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXNwZWMvaXNzdWVzLzIxOSkpLgotIHR5cGUgc2FmZSwgaW5wdXQvb3V0cHV0IGFyZSBjb252ZXJ0ZWQgdG8gcHl0aG9uIHR5cGVzIGFjY29yZGluZyB0byBbRGF0YSBUeXBlXShodHRwczovL2dpdGh1Yi5jb20vd29yZG5pay9zd2FnZ2VyLXNwZWMvYmxvYi9tYXN0ZXIvdmVyc2lvbnMvMS4yLm1kIzQzLWRhdGEtdHlwZXMpIGRlc2NyaWJlZCBpbiBTd2FnZ2VyLiBZb3UgZG9uJ3QgbmVlZCB0byB0b3VjaCBhbnkganNvbiBzY2hlbWEgd2hlbiB1c2luZyBweXN3YWdnZXIuIExpbWl0YXRpb25zIGxpa2UgKiptaW5pbXVtL21heGltdW0qKiBvciAqKmVudW0qKiBhcmUgYWxzbyBjaGVja2VkLiAqKk1vZGVsIGluaGVyaXRhbmNlKiogYWxzbyBzdXBwb3J0ZWQuCi0gcHJvdmlkZSBmdW5jdGlvbiAqKkFwcC52YWxpZGF0ZSoqIHRvIGNoZWNrIHZhbGlkaXR5IG9mIHRoZSBsb2FkZWQgQVBJIGRlZmluaXRpb24gYWNjb3JkaW5nIHRvIHNwZWMuCi0gYnVpbHRpbiBjbGllbnQgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gdmFyaW91cyBodHRwIGNsaWVudHMgaW4gcHl0aG9uLiBGb3IgdXNhZ2Ugb2YgdGhlc2UgY2xpZW50cywgcGxlYXNlIHJlZmVyIHRvIGBweXN3YWdnZXIudGVzdHMuY29udHJpYi5jbGllbnRgIGZvciBkZXRhaWxzCiAgLSBbcmVxdWVzdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9rZW5uZXRocmVpdHovcmVxdWVzdHMpCiAgLSBbdG9ybmFkby5odHRwY2xpZW50LkFzeW5jSFRUUENsaWVudF0oaHR0cDovL3Rvcm5hZG8ucmVhZHRoZWRvY3Mub3JnL2VuL2xhdGVzdC9odHRwY2xpZW50Lmh0bWwpCiAgLSBbZmxhc2sudGVzdGluZy5GbGFza0NsaWVudF0oaHR0cDovL2ZsYXNrLnBvY29vLm9yZy9kb2NzLzAuMTAvYXBpLyNmbGFzay50ZXN0aW5nLkZsYXNrQ2xpZW50KQogIC0gW3dlYmFwcDJdKGh0dHA6Ly93ZWJhcHAyLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9ndWlkZS90ZXN0aW5nLmh0bWwpCi0gbm90IGltcGxlbWVudGVkIHBhcnRzLCBmaXJlIG1lIGEgYnVnIGlmIHlvdSBuZWVkIGl0CiAgLSBbIF0gU3dhZ2dlciAyLjAKICAgIC0gWyBdIFNjaGVtYS5wYXR0ZXJuCiAgICAtIFsgXSBTY2hlbWUucGF0dGVyblByb3BlcnRpZXMKICAgIC0gWyBdIFNjaGVtYS5yZWFkb25seQogICAgLSBbIF0gU2NoZW1hLmFsbG93RW1wdHlWYWx1ZQogICAgLSBbIF0gQSBzY2FubmVyIHRvIHZhbGlkYXRlIHNjaGVtYQogIC0gWyBdIEEgV2ViU29ja2V0IGNsaWVudAogIC0gWyBdIGR1bXAgZXh0ZW5zaW9uIGZpZWxkCgotLS0tLS0tLS0KCiMjIFR1dG9yaWFsCgotIFtJbml0aWFsaXphdGlvbl0oZG9jcy9tZC90dXRvcmlhbC9pbml0Lm1kKQotIFtNYWtpbmcgYSBSZXF1ZXN0XShkb2NzL21kL3R1dG9yaWFsL3JlcXVlc3QubWQpCi0gW0FjY2VzcyB0aGUgUmVzcG9uc2VdKGRvY3MvbWQvdHV0b3JpYWwvcmVzcG9uc2UubWQpCi0gW1Rlc3RpbmcgYSBMb2NhbCBTZXJ2ZXJdKGRvY3MvbWQvdHV0b3JpYWwvbG9jYWwubWQpCi0gW0NvbnZlcnRpbmcgRG9jdW1lbnQgaW50byBhbm90aGVyIHZlcnNpb25dKGRvY3MvbWQvdHV0b3JpYWwvY29udmVydGVyLm1kKQotIFtFeG50ZW5kaW5nIFByaW1pdGl2ZSBGYWN0b3J5IGZvciB1c2VyLWRlZmluZWQgcHJpbWl0aXZlc10oZG9jcy9tZC90dXRvcmlhbC9leHRlbmRfcHJpbS5tZCkKLSBbUmVuZGVyaW5nIFJhbmRvbSBSZXF1ZXN0cyBmb3IgQmxhY2tCb3ggVGVzdGluZ10oZG9jcy9tZC90dXRvcmlhbC9yZW5kZXIubWQpCi0gW09wZXJhdGlvbiBNSU1FIFN1cHBvcnRdKGRvY3MvbWQvdHV0b3JpYWwvbWltZS5tZCkKLSBbVGVzdCB3aXRoIEludmFsaWQgSW5wdXRdKGRvY3MvbWQvdHV0b3JpYWwvaW52YWxpZC5tZCkKLSBbTG9hZCBTcGVjIGZyb20gYSBSZXN0cmljdGVkIFNlcnZpY2VdKGRvY3MvbWQvdHV0b3JpYWwvcmVzdHJpY3RlZF9zZXJ2aWNlLm1kKQotIFtDdXN0b21pemVkIEhlYWRlcnNdKGRvY3MvbWQvdHV0b3JpYWwvY3VzdG9taXplZF9oZWFkZXJzLm1kKQoKLS0tLS0tLS0tCgojIyBRdWljayBTdGFydAoKQmVmb3JlIHJ1bm5pbmcgdGhpcyBzY3JpcHQsIHBsZWFzZSBtYWtlIHN1cmUgW3JlcXVlc3RzXShodHRwczovL2dpdGh1Yi5jb20va2VubmV0aHJlaXR6L3JlcXVlc3RzKSBpcyBpbnN0YWxsZWQgb24geW91ciBlbnZpcm9ubWVudC4KCmBgYHB5dGhvbgpmcm9tIHB5c3dhZ2dlciBpbXBvcnQgQXBwLCBTZWN1cml0eQpmcm9tIHB5c3dhZ2dlci5jb250cmliLmNsaWVudC5yZXF1ZXN0cyBpbXBvcnQgQ2xpZW50CmZyb20gcHlzd2FnZ2VyLnV0aWxzIGltcG9ydCBqcF9jb21wb3NlCgojIGxvYWQgU3dhZ2dlciByZXNvdXJjZSBmaWxlIGludG8gQXBwIG9iamVjdAphcHAgPSBBcHAuX2NyZWF0ZV8oJ2h0dHA6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YyL3N3YWdnZXIuanNvbicpCgphdXRoID0gU2VjdXJpdHkoYXBwKQphdXRoLnVwZGF0ZV93aXRoKCdhcGlfa2V5JywgJzEyMzEyMzEyMzEyMzEyMzEyMzEzcScpICMgYXBpIGtleQphdXRoLnVwZGF0ZV93aXRoKCdwZXRzdG9yZV9hdXRoJywgJzEyMzM0NTQ2NTU2NTIxMTIzZnNmc3MnKSAjIG9hdXRoMgoKIyBpbml0IHN3YWdnZXIgY2xpZW50CmNsaWVudCA9IENsaWVudChhdXRoKQoKIyBhIGRpY3QgaXMgZW5vdWdoIGZvciByZXByZXNlbnRpbmcgYSBNb2RlbCBpbiBTd2FnZ2VyCnBldF9Ub209ZGljdChpZD0xLCBuYW1lPSdUb20nLCBwaG90b1VybHM9WydodHRwOi8vdGVzdCddKSAKIyBhIHJlcXVlc3QgdG8gY3JlYXRlIGEgbmV3IHBldApjbGllbnQucmVxdWVzdChhcHAub3BbJ2FkZFBldCddKGJvZHk9cGV0X1RvbSkpCgojIC0gYWNjZXNzIGFuIE9wZXJhdGlvbiBvYmplY3QgdmlhIEFwcC5vcCB3aGVuIG9wZXJhdGlvbklkIGlzIGRlZmluZWQKIyAtIGEgcmVxdWVzdCB0byBnZXQgdGhlIHBldCBiYWNrCnJlcSwgcmVzcCA9IGFwcC5vcFsnZ2V0UGV0QnlJZCddKHBldElkPTEpCiMgcHJlZmVyIGpzb24gYXMgcmVzcG9uc2UKcmVxLnByb2R1Y2UoJ2FwcGxpY2F0aW9uL2pzb24nKQpwZXQgPSBjbGllbnQucmVxdWVzdCgocmVxLCByZXNwKSkuZGF0YQphc3NlcnQgcGV0LmlkID09IDEKYXNzZXJ0IHBldC5uYW1lID09ICdUb20nCgojIG5ldyB3YXlzIHRvIGdldCBPcGVyYXRpb24gb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gJ2dldFBldEJ5SWQnLgojICdqcF9jb21wb3NlJyBzdGFuZHMgZm9yIEpTT04tUG9pbnRlciBjb21wb3NpdGlvbgpyZXEsIHJlc3AgPSBhcHAucmVzb2x2ZShqcF9jb21wb3NlKCcvcGV0L3twZXRJZH0nLCBiYXNlPScjL3BhdGhzJykpLmdldChwZXRJZD0xKQpyZXEucHJvZHVjZSgnYXBwbGljYXRpb24vanNvbicpCnBldCA9IGNsaWVudC5yZXF1ZXN0KChyZXEsIHJlc3ApKS5kYXRhCmFzc2VydCBwZXQuaWQgPT0gMQpgYGAKCi0tLS0tLS0tLQoKIyMgSW5zdGFsbGF0aW9uCldlIHN1cHBvcnQgcGlwIGluc3RhbGx0aW9uLgpgYGBiYXNoCnBpcCBpbnN0YWxsIHB5c3dhZ2dlcgpgYGAKCkFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzIG11c3QgYmUgcHJlcGFyZWQgYmVmb3JlIGZpcmluZyBhIHJlcXVlc3QuIElmIHlvdSBhcmUgZ29pbmcgdG8gYWNjZXNzIGEgcmVtb3RlL2xvY2FsIHdlYiBzZXJ2ZXIsIHlvdSBtdXN0IGluc3RhbGwgW3JlcXVlc3RzXShodHRwczovL2dpdGh1Yi5jb20va2VubmV0aHJlaXR6L3JlcXVlc3RzKSBmaXJzdC4KYGBgYmFzaApwaXAgaW5zdGFsbCByZXF1ZXN0cwpgYGAKCklmIHlvdSB3YW50IHRvIHRlc3QgYSBsb2NhbCB0b3JuYWRvIHNlcnZlciwgcGxlYXNlIG1ha2Ugc3VyZSB0b3JuYWRvIGlzIHJlYWR5IG9uIHlvdXIgZW52aXJvbm1lbnQKYGBgIGJhc2gKcGlwIGluc3RhbGwgdG9ybmFkbwpgYGAKCldlIGFsc28gcHJvdmlkZSBuYXRpdmUgY2xpZW50IGZvciBmbGFzayBhcHAsIGJ1dCB0byB1c2UgaXQsIGZsYXNrIGlzIGFsc28gcmVxdWlyZWQKYGBgIGJhc2gKcGlwIGluc3RhbGwgZmxhc2sKYGBgCgoKLS0tLS0tLS0tCgojIyBSZWZlcmVuY2UKQWxsIGV4cG9ydGVkIEFQSSBhcmUgZGVzY3JpYmVkIGluIGZvbGxvd2luZyBzZWN0aW9ucy4gIVtBIGRpYWdyYW0gYWJvdXQgcmVsYXRpb25zIGJldHdlZW4gY29tcG9uZW50c10oaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZHJhd2luZ3MvZC8xRFppSmdsNGk5TDAzOFVKSnAza3B3a1dSdmNOUWt0ZjVoLWU0bTk2X0Mtay9wdWI/dz04NDkmaD01MzApCgotIFtBcHBdKGRvY3MvbWQvcmVmL2FwcC5tZCkKLSBbU3dhZ2dlckNsaWVudF0oZG9jcy9tZC9yZWYvY2xpZW50Lm1kKQotIFtTZWN1cml0eV0oZG9jcy9tZC9yZWYvc2VjdXJpdHkubWQpCgotLS0tLS0tLS0KCiMjIENvbnRyaWJ1dG9ycwotIFtNYXJjaW4gR29sacWEc2tpXShodHRwczovL2dpdGh1Yi5jb20vbWpnb2xpbnNraSkKLSBbQW5kcmV5IE1pa2hhaWxvdl0oaHR0cHM6Ly9naXRodWIuY29tL3psb3ZyZWQpCi0gW1RlbGVwZW5pbiBOaWtvbGF5XShodHRwczovL2dpdGh1Yi5jb20vcHJlZmVyKQotIFtXYW5nSmlhbm5hbl0oaHR0cHM6Ly9naXRodWIuY29tL1dhbmdKaWFubmFuKQoKLS0tLS0tLS0tCgojIyBDb250cmlidXRpb24gR3VpbGRlbGluZQoKIyMjIyByZXBvcnQgYW4gaXNzdWU6Ci0gaXNzdWVzIGNhbiBiZSByZXBvcnRlZCBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21pc3Npb24tbGlhby9weXN3YWdnZXIvaXNzdWVzKQotIGluY2x1ZGUgc3dhZ2dlci5qc29uIGlmIHBvc3NpYmxlCi0gdHVybiBvbiBsb2dnaW5nIGFuZCByZXBvcnQgd2l0aCBtZXNzYWdlcyBvbiBjb25zb2xlCmBgYHB5dGhvbgppbXBvcnQgbG9nZ2luZwpsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigncHlzd2FnZ2VyJykKCmZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKCclKGFzY3RpbWUpcyAtICUobmFtZSlzIC0gJShsZXZlbG5hbWUpcyAtICUobWVzc2FnZSlzJykKCmNvbnNvbGUgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKQpjb25zb2xlLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCmNvbnNvbGUuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKCmxvZ2dlci5hZGRIYW5kbGVyKGNvbnNvbGUpCmxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQoKLi4uIHlvdXIgc3R1ZmYKCmBgYAoKLSBkZXNjcmliZSBleHBlY3RlZCBiZWhhdmlvciwgb3IgbW9yZSBzcGVjaWZpYywgdGhlIGlucHV0L291dHB1dAoKIyMjIyBzdWJtaXQgYSBQUgotIHRlc3QgaW5jbHVkZWQKLSBvbmx5IFBSIHRvIGBkZXZlbG9wYCB3b3VsZCBiZSBhY2NlcHRlZAoKZW52IHByZXBhcmF0aW9uCmBgYGJhc2gKcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnQtZGV2LnR4dApgYGAKCnVuaXQgdGVzdGluZwpgYGBiYXNoCnB5dGhvbiAtbSBweXRlc3QgLXMgLXYgLS1jb3Y9cHlzd2FnZ2VyIC0tY292LWNvbmZpZz0uY292ZXJhZ2VyYyBweXN3YWdnZXIvdGVzdHMKYGBgCgo= readmeEtag: '"048a9c7059dbcfa9cf05a33ad2a1e65643ed48bf"' readmeLastModified: Mon, 20 Aug 2018 13:44:49 GMT repositoryId: 22305196 description: >- An OpenAPI (fka Swagger) client & converter in python, which is type-safe, dynamic, spec-compliant. created: '2014-07-27T06:47:30Z' updated: '2025-12-10T21:09:03Z' language: Python archived: false stars: 392 watchers: 13 forks: 90 owner: pyopenapi logo: https://avatars.githubusercontent.com/u/35984678?v=4 license: MIT repoEtag: '"1942323c268c1852b657aba13dc291f96f5f8901372f04e52b341590da448893"' repoLastModified: Wed, 10 Dec 2025 21:09:03 GMT foundInMaster: true v3_link: https://github.com/mission-liao/pyswagger/blob/develop/docs/md/news.md id: 83585666ce7c5a42bc3e5463ac9b3c47 oldLocations: - https://github.com/mission-liao/pyswagger - source: https://openapi.tools/ name: JSON Designer category: GUI Editors link: http://jsondesigner.com language: - iOS - Swift source_description: >- Visualize JSON models from imported OpenAPI YAML. Edit models and export OpenAPI YAML. v3: true foundInMaster: true id: 9440025e6c756188ef68d4f144bd42bb - source: openapi3 tags repository: https://github.com/gomarag/siphoon-note v3: true id: 89de05b5bf22f09b2fca45404443c647 repositoryMetadata: base64Readme: >- IyBJbnRybwohWzEw67aE64W47Yq4XShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS84NjEzOTAxMy8xNjI3MTQ3NjUtNzNkZTZkZTItZGE2NC00MjAyLWE1NzItNTE0MzBlYWMxMjczLmdpZikKCj4g4pyP77iPICoq7ZSE66Gc7KCd7Yq466qFKiogOiBgU2lwaG9vbiBOb3RlYAo+IAoKPiDwn5OU77iPICoq7ZSE66Gc7KCd7Yq4IO2Yle2DnCoqIDrrtoDtirjsuqDtlIQg7YyM7J2064SQIO2UhOuhnOygne2KuAo+IAoKPiDwn4yQICoq67Cw7Y+sIOunge2BrCA6IFvwn5Od77iPXShodHRwOi8vZGV2LWRpYXJ5LWJ1Y2tldC5zMy13ZWJzaXRlLmFwLW5vcnRoZWFzdC0yLmFtYXpvbmF3cy5jb20vKSoqW1NpcGhvb24gTm90ZeuhnCDsoJHsho3tlZjquLBdKGh0dHBzOi8vd3d3LnNpcGhvb24tbm90ZS5hcHAvKQo+IAoKPiDwn5GA77iPICoq6riw7ZqN7J2Y64+EKiogOiDquIDsk7DquLDqsIAg7KKL7J2AIOqxtCDslYzqsqDripTrjbAsIOq4tCDquIDsnYQg7JOw64qUIOqyg+ydtCDrtoDri7TsiqTrn6zsm4wg7Iuc7J6R7J20IOyWtOugpOyatCDsgqzrnozrk6TsnYQg7JyE7ZWcIDEw67aEIO2DgOydtOuouCDrhbjtirguCj4KCiMg8J+Tne+4j1NpcGhvb24gTm90ZSDquLDriqUg7IaM6rCcCgrij7DvuI8g6riA7JOw6riwIOuqsOyeheydhCDrj5XripQgKirtg4DsnbTrqLjsmYAg7J6Q64+ZIOyggOyepSDquLDriqUqKuydhCDsoJzqs7XtlbTsmpQhCgrwn5eT77iPIOuFuO2KuOulvCDsnpHshLHtlZwg64Kg7Kec7JeQIOyXsO2VhCDsiqTtg6ztlITrpbwg7LCN7Ja0ICoq7Iq16rSAIOuLrOyEseydvCoq7J2EIO2VnCDriIjsl5Ag7JWMIOyImCDsnojslrTsmpQhCgrwn6WHIOyekeyEsSDquIDsnZgg6rCc7IiY66GcICoq7J20IOyjvOydmCDrnq3tgrkg7Jyg7KCAKirrpbwg7ISg67Cc7ZW07IScIOuztOyXrOykmOyalCEKCvCfjoHvuI8g6riA6rCQ7J20IOuWoOyYpOultOyngCDslYrripQg64Kg7J2EIOychO2VtCAqKuyYpOuKmOydmCDtgqTsm4zrk5wqKuulvCDsoJzqs7XtlbTsmpQhCgrinKjvuI8g6rO16rCcIOyEpOygleycvOuhnCDsnpHshLHtlZwg64W47Yq466W8ICoq66mU7J247Y6Y7J207KeA7JeQIOyGjOqwnCoq7ZWgIOyImCDsnojslrTsmpQhCgrwn5GA77iPIOuFuO2KuOydmCDquIDqsJDsnYQg6rSA66as7ZWY64qUICoq7YOc6re4IOq4sOuKpSoq7J2EIOygnOqzte2VtOyalCEKCiMg8J+boO+4jyDsgqzsmqkg7Iqk7YOdIOuwjyDsi5zsiqTthZwg7JWE7YKk7YWN7LKYCiFbaW1hZ2VdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzg2MTM5MDEzLzIyNDYxMTA4OS1mZDBlNzJiYS1mZjc5LTRmZGUtYTg5ZS1mYWNjMTMwZTFiYmIucG5nKQoKIyDwn5SO77iPIOyjvOyalCDquLDriqUg7Iuc7JewIEdJRgojIOuenOuUqSDtjpjsnbTsp4AKIVvrnpzrlKntjpjsnbTsp4AxXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS84NjEzOTAxMy8xNjQxNzQ0MzMtYjNiMGIxNGYtMWFiYi00YWJjLTg5OWEtYmY3MmI0ZGQ5MTJkLmdpZikKCiMg656c65SpIO2OmOydtOyngCAo7Iqk7YGs66Gk64uk7Jq0KQohW+yKpO2BrOuhpOuLpOyatF0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vODYxMzkwMTMvMTY0MTc1NzE0LTk2NjdkOGU3LWI0OTAtNDI2MS1hNTQ4LWYyN2Q5YTMxYTgxOC5naWYpCgojIOq4gOyTsOq4sCDsg4HsnIQg656t7YK5IOycoOyggCDshozqsJwKIVvsg4HsnITrnq3tgrldKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzg2MTM5MDEzLzE2NDE3NzMxOC01ZDUxOGQwNy0zMzBhLTQ2ODItYWE2MC03ZWVlNjhhN2Q3ZWEuZ2lmKQoKIyDqs7XqsJzrhbjtirggCiFb6rO16rCc6riAIDRdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzg2MTM5MDEzLzE2NDE3NzY0NS05YzQ1YmNiZS0xMjM4LTQ1YTItODlkMC00M2MyMTc5MTljODUuZ2lmKQoKIyDrhbjtirgg7Y6Y7J207KeACiFb66mU7J24LSDrhbjtirhdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzg2MTM5MDEzLzE2NDE3NzczNi04MjY3YzUxMS1hMWM0LTQ0YmMtOTc2Ni00ZThiMjE5ZmVjMmQuZ2lmKQoKIyDsu6zrn6wg7YWM66eIIDXsooUKIVsxOCAg7Lus65+s7YWM66eIIOuzgOqyvV0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vODYxMzkwMTMvMTY0MTc4NDIyLTA4MzkwNWJiLWY2OTQtNGMyNC1hZGQ3LTUzMDg4MjMxNWM3Ny5naWYpCgojIOq4gOyTsOq4sCDsirXqtIDrtoTshJ0g7Y6Y7J207KeACiFb64us66ClIOyKpO2DrO2UhF0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vODYxMzkwMTMvMTY0MTc3ODcwLTUwYjBkNjMyLWE2MmYtNDI0MC1iMDQ0LWNhYWY4Y2VhM2Y4YS5naWYpCgojIOuFuO2KuCDstpzroKXssL0gKOyVnuuptC/rkrfrqbQpCiFbNyDsubTrk5zruJTroZ0g6re466as65OcXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS84NjEzOTAxMy8xNjQxNzgxMTgtNWM1NTE5M2UtZTliMS00Y2YwLTllNGItZjUyNjczYzA2NzM1LmdpZikKIVsxNSDsubTrk5wg65Kk7KeR6riwXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS84NjEzOTAxMy8xNjQxNzg3MTEtMzFkNjlmZGMtZGI5Ny00NWRlLTk1ZDUtM2FhMDM5NDUwYjE5LmdpZikKCiMg64W47Yq4IOyeheugpeywvQohWzkg7YOA7J2066i4IOyLnOyekV0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vODYxMzkwMTMvMTY0MTc4MTUxLTNmZjZjYmM2LTEyMWItNGIwOS1iNWU4LTM3NWE1Y2EwMWZmYS5naWYpCgojIO2DgOydtOuouCDquLDriqUo64W47Yq4IOyekOuPmeyggOyepSkKIVsxMSDquIAg7J6Q64+ZIOyggOyepV0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vODYxMzkwMTMvMTY0MTc4MjE1LWRhMWU4ZjM4LWQzNmMtNDUwYS05MDI2LTNiY2QzZmEyMTVhYy5naWYpCgojIO2DgOydtOuouCDslYjrgrQg66eQ7ZKN7ISgCiFbMTAg7YOA7J2066i4IO2ItO2MgV0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vODYxMzkwMTMvMTY0MTc5NjY1LTQ4NzM1ZjFiLTg0MjgtNDQ0YS04M2FlLWM2NGNmNzc0NDAzZi5naWYpCgojIOyYpOuKmOydmCDtgqTsm4zrk5wgCiFbMTMg7Jik64qY7J2YIO2CpOybjOuTnF0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vODYxMzkwMTMvMTY0MTc4Mjg0LTdiODlmNDgzLTAwYzAtNGUwMy1iN2Q5LThkMTM0MDM0MTliMS5naWYpCgojIOuFuO2KuCDsl5DrlJTthLAv7KCE7LK067O06riwCiFbMTYg6riAIOyImOyglV0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vODYxMzkwMTMvMTY0MTc4MzY3LWRkOWM1ZTEwLTQ1NjEtNDkwMC1hMmJiLTM4YjE4NGQ4NzhmMi5naWYpCiFbMTQg642U67O06riwXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS84NjEzOTAxMy8xNjQxNzgzOTUtMTdjMjIzYTgtNzRiMy00NzU2LWEzY2UtOTVjY2Q3Zjc4Njk3LmdpZikKCiMg7Zy07KeA7Ya1CiFbMTcg6riAIOyCreygnF0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vODYxMzkwMTMvMTY0MTc4NTIwLTE5MWYxYTllLTkwNmYtNDkxNy1iZGVhLWM2ZDgyMGQ3MmMzNS5naWYpCgojIOqygOyDieywvQohWzIwIOqygOyDieuwlF0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vODYxMzkwMTMvMTY0MTc4NTUxLTQ0YzRjYWY0LTM1YTAtNGNkOC1iMTk0LThkZjNhN2QyMjNkOC5naWYpCgojIO2DnOq3uCDqtIDrpqwKIVsxOSDtg5zqt7hdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzg2MTM5MDEzLzE2NDE3ODYwNy0yZmM2ZjEzZi04YzMyLTQyN2ItYjhkNC0wYWNlMDE4OTUxN2UuZ2lmKQoKIyDtmozsm5Ag6rSA66asIO2OmOydtOyngAojIyDtmozsm5Dsmqkg65Oc66Gt64uk7Jq0CiFb656c65SpKOuhnOq3uOyduCldKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzg2MTM5MDEzLzE2NDE3NTAyNy00MTg2NjE5Yi0yY2UwLTQ1MzAtYTY5ZS01MDlhMWYzODdkMDAuZ2lmKQojIyDroZzqt7jsnbgKIVvroZzqt7jsnbhdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzg2MTM5MDEzLzE2NDE4MTU1MS01MzdhZTdlZC0yMTM4LTQ2NWEtYTQ1YS1lOTUzOWE0ZjU2NDMuZ2lmKQojIyDtmozsm5DqsIDsnoUKIVvtmozsm5DqsIDsnoVdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzg2MTM5MDEzLzE2NDE4MTU2NS1mNmQ5NmE4OC1mYTVlLTQ1YTMtYmQwMy00ZDg3NDc1YTlkNGUuZ2lmKQoKIyDsl5Drn6ztjpjsnbTsp4AKIVsyMiDsv6DtgqRdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzg2MTM5MDEzLzE2NDE3ODc2Ny1jMmY3MDA4NS04MmU2LTQ1YWMtYmEwOC01YzAxMWE5MmQxOGMuZ2lmKQoKCiMg8J+MnSDrp4zrk6Ag7IKs656M65OkCnwg7J2066aEKOq5g+2Xmeunge2BrCkgfCBQb3NpdGlvbiAmIFJvbGV8CnwgLS0tLS0tLSB8IC0tLS0tIHwKfCBb7JWI6rCA656MXShodHRwczovL2dpdGh1Yi5jb20vZ29tYXJhZykgfCDwn5K7IEJhY2stZW5kLCDwn4yfIFRlYW0gbWVtYmVyfAp8IFvsnbTsooXsl7RdKGh0dHBzOi8vZ2l0aHViLmNvbS9qb25neWVvbDEyKSB8IPCfkrsgRnJvbnQtZW5kLCDij7AgVGVhbSBsZWFkZXIgfAp8IFvsnbTqsr3rr7hdKGh0dHBzOi8vZ2l0aHViLmNvbS9MZWVreWVvbmdtaSkgfCDwn5K7IEZyb250LWVuZCwg8J+TnSBUZWFtIG1lbWJlciB8CnwgW+yghOykgO2YlV0oaHR0cHM6Ly9naXRodWIuY29tL2xpbmRpc3QxMikgfCDwn5K7IEZyb250LWVuZCwg8J+XoyBUZWFtIG1lbWJlciB8CgoKCgoK readmeEtag: '"3e324c7bb715543159196f2ccd7a06a42f22b003"' readmeLastModified: Wed, 05 Jul 2023 13:25:51 GMT repositoryId: 470622280 description: 하루 10분! 글쓰기 앱 🚀 10분 노트 created: '2022-03-16T14:37:35Z' updated: '2023-07-07T19:27:17Z' language: JavaScript archived: false stars: 0 watchers: 0 forks: 0 owner: gomarag logo: https://avatars.githubusercontent.com/u/66699849?v=4 repoEtag: '"0642248193af189974b8cd989d1f080707822a80e6f5998d1f2a6bbcdde36f03"' repoLastModified: Fri, 07 Jul 2023 19:27:17 GMT category: Parsers foundInMaster: true - source: https://openapi.tools/ name: Stoplight Docs category: Documentation link: https://stoplight.io/docs/ language: SaaS source_description: >- Create beautiful, customizable, interactive API documentation generated from OpenAPI, integrated with Stoplight Studio. v2: true v3: true v3_1: true foundInMaster: true id: 96eb5e8de02914d4daa8d3910533aa63 - source: openapi3 tags repository: https://github.com/charlyjazz/prettyrestdoc v3: true repositoryMetadata: base64Readme: >- IyBQcmV0dHlSZXN0RG9jCgpbQ2hlY2sgaXQgb3V0IHRoZSBkZW1vIV0oaHR0cHM6Ly9jaGFybHlqYXp6LmdpdGh1Yi5pby9wcmV0dHlyZXN0ZG9jLyNVc2VyKQoKVGhpcyBpcyBhIHRlbXBsYXRlIGNyZWF0ZWQgaW4gUmVhY3QgdG8gZWFzaWx5IGN1c3RvbWl6ZSBhbmQgYnVpbGQgYSBSRVNUIEFQSSBEb2N1bWVudGF0aW9uIGZvciBjb21tZXJjaWFsIG9yIGRldmVsb3BtZW50IHB1cnBvc2VzLiBQcm9qZWN0IGNyZWF0ZWQgdXNpbmcgdXNpbmcgY3JlYXRlLXJlYWN0LWFwcCB3dGggdGhlIHR5cGVzY3JpcHQgdGVtcGxhdGUKCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbGVzIGFuZCBQZXJtaXNzaW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJldmlldyBTY2hlbWEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOiB8CnwgIVtdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEyNDg5MzMzLzEyNDAxMzk5MS01OTk0NGIwMC1kOWI5LTExZWItODI1ZS01YTAyYTliOTk0ODcuanBlZykgfCAhW10oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMTI0ODkzMzMvMTI0MDEzOTgzLTU3Y2E4NzgwLWQ5YjktMTFlYi05MGI2LTZhMDIyN2U4YmFjMy5qcGVnKSB8Cgp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VhcmNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5kcG9pbnQgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTogfAp8ICFbXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xMjQ4OTMzMy8xMjQwMTQwMDItNWI1ZTBlODAtZDliOS0xMWViLTkwYWUtOTBlNDJmNzk4MTQ5LmpwZWcpIHwgIVtdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEyNDg5MzMzLzEyNDAxNDY5OC0zYTQ5ZWQ4MC1kOWJhLTExZWItOTM1Ny00Njc4ZTRlYmUxN2MuanBlZykgfAoKIyMjIE1lcmdlIEJldHdlZW4gY3VzdG9tIGNvbnRlbnQgYW5kIHlvdXIgQVBJIGNvbnRyYWN0CgpZb3UgY2FuIGVhc2lseSBzeW5jIHlvdSBPcGVuQVBJIDMgSlNPTiBGaWxlIHVzaW5nIHRoZSAiU2VjdGlvbkl0ZW0iIHN0cnVjdHVyZS4gSW4gdGhlIG5leHQgZXhhbXBsZSB5b3UgY2FuIHNlZSBhIFNlY3Rpb25JdGVtIGNyZWF0ZSBmb3IgdGhlIFN0b3JlIHRhZyBmcm9tIHRoZSBQZXRTdG9yZSBTd2FnZ2VyIGV4YW1wbGUuIFRoaXMgd2F5IGNhbiBhZGQgaW1hZ2VzLCBkZXNjcmlwdGlvbnMsIGFuZCBpbnRyb2R1Y3Rvcnkgc2VjdGlvbnMgbGlrZSAiR2V0dGluZyBTdGFydGVkIgoKYGBgamF2YXNjcmlwdApjb25zdCBkb2N1bWVudGF0aW9uOiBTZWN0aW9uSXRlbSA9IHsKICBpZDogInN0b3JlIiwKICB0YWc6ICJzdG9yZSIsCiAgc2NoZW1hOiAiT3JkZXIiLAogIHRpdGxlOiAiU3RvcmUiLAogIGNvbnRlbnQ6IHsKICAgIGxlZnRfc2VjdGlvbl90aXRsZTogIlN0b3JlcyIsCiAgICBsZWZ0X3NlY3Rpb25fcGFyYWdyYXBoczogWyJUaGlzIGlzIGEgU3RvcmUgcmVsYXRlZCBvcGVyYXRpb24iXSwKICAgIHJpZ2h0X2JveF9zbmlwcGV0X3doaXRlOiB0cnVlLAogICAgcmlnaHRfYm94X3NuaXBwZXRfdGl0bGU6ICJFeGFtcGxlIG9mIGEgT3JkZXIgb2JqZWN0IiwKICB9LAogIGlzX2NvcmVfcmVzb3VyY2U6IHRydWUsCn07CmBgYAoKU3RydWN0dXJlIG9mIGEgYFNlY3Rpb25JdGVtYDoKCmBpZGA6IEFuY2hvciBmb3IgVVJMCgpgdGFnYDogVGFnIHRvIGZvdW5kIGNvbnRlbnQgaW5zaWRlIHRoZSBPcGVuQVBJMyBKU09OIGZpbGUKCmB0aXRsZWA6IFRpdGxlIGZvciBVSQoKYGNvbnRlbnRgOiBUaXRsZXMgYW5kIGRlc2NyaXB0aW9ucy4gQWxzbyB5b3UgY2FuIGNyZWF0ZSBhIG9iamVjdCBsaWtlIGEgZXhhbXBsZSBvZiBhIHJlc3BvbnNlL3JlcXVlc3QuCgpgaXNfY29yZV9yZXNvdXJjZWA6IFRoaXMgYm9vbGVhbiBwYXJhbWV0ZXIgaGVscCB0byBzcGxpdCB0aGUgY29udGVudCBiZXR3ZWVuIHNlY3Rpb25zIGxpa2UgYSAiR2V0dGluZyBTdGFydGVkIiBhbmQgdGhlIEFQSSBlbmRwb2ludHMKCldpdGggYSBBcnJheSBvZiBTZWN0aW9uSXRlbXMgYW5kIHRoZSBKU09OIG9mIHRoZSBPcGVuQVBJIFNjaGVtYSB5b3UgY2FuIHJlbmRlciB0aGUgZG9jdW1lbnRhdGlvbjoKCmBgYGphdmFzY3JpcHQKaW1wb3J0IGRvY1N3YWdnZXIgZnJvbSAiLi9wZXRzdG9yZS5qc29uIjsgLy8gT3BlbkFQSSBKU09OCmltcG9ydCBBUElEb2MgZnJvbSAiLi9kb2MiOyAvLyBBcnJheSBvZiBTZWN0aW9uSXRlbQoKPFByZXR0eVJlc3REb2MgZG9jQ3VzdG9tPXtBUElEb2N9IGRvY1N3YWdnZXI9e2RvY1N3YWdnZXJ9IC8+OwpgYGAKCiMjIyBTZWN0aW9uIGZvciBSb2xlcyBhbmQgUGVybWlzc2lvbnMKCllvdSBjYW4gY3JlYXRlIGVhc2lseSBhIHRhYmxlIGZvciByb2xlcyBhbmQgcGVybWlzc2lvbnMgc2VuZGluZyB0aGUgcHJvcCByb2xlcyB0byB0aGUgY29tcG9uZW50LiAqKlRoZSBgU2VjdGlvbkl0ZW1gIG5lZWQgdGhlIGByb2xlcy1wZXJtaXNzaW9uc2AgaWQgZm9yIHRoaXMgc3BlY2lhbCBjYXNlLioqCgpgYGB4bWwKPFByZXR0eVJlc3REb2MKICBkb2NDdXN0b209e0FQSURvY30KICBkb2NTd2FnZ2VyPXtkb2NTd2FnZ2VyIGFzIHVua25vd24gYXMgT3BlbkFQSVYzLkRvY3VtZW50fQogIHJvbGVzPXtbCiAgICB7CiAgICAgIGxhYmVsOiAiQ2xpZW50IiwKICAgICAgdmFsdWU6ICdjbGllbnQnCiAgICB9LAogICAgewogICAgICBsYWJlbDogIkFkbWluIiwKICAgICAgdmFsdWU6ICdhZG1pbicKICAgIH1dfQovPgpgYGAKClRoZW4geW91IHdpbGwgbmVlZCBzZXQgdGhlIHJvbGVzIHRvIGVhY2ggZW5kcG9pbnQgaW4gdGhlIE9wZW5BUEkzIEpTT04uCgpgYGBqc29uCnsKICAicHV0IjogewogICAgInRhZ3MiOiBbInVzZXIiXSwKICAgICJyb2xlcyI6IFsiYWRtaW4iXSwKICAgICJzdW1tYXJ5IjogIlVwZGF0ZSB1c2VyIiwKICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGNhbiBvbmx5IGJlIGRvbmUgYnkgdGhlIGxvZ2dlZCBpbiB1c2VyLiIsCiAgICAib3BlcmF0aW9uSWQiOiAidXBkYXRlVXNlciIKICB9Cn0KYGBgCgojIyMgQ3VzdG9taXphdGlvbiBhbmQgU3R5bGVzCgpUaGUgc3RydWN0dXJlIG9mIHRoZSBwcm9qZWN0IGlzIHZlcnkgZWFzeSB0byB1bmRlcnN0YW5kLiBUaGUgY29kZSBvZiB0aGUgZG9jdW1lbnRhdGlvbiBpcyBpbnNpZGUgdGhlIGBzcmMvbGliYCBmb2xkZXI6CgotIGBzcmMvbGliL2FkYXB0ZXItYW8zYDogTG9naWMgdG8gZ2V0IGNvbnRlbnQgZnJvbSBPcGVuQVBJMwotIGBzcmMvbGliL2NvbXBvbmVudHNgOiBBbGwgVUkgY29tcG9uZW50cywgeW91IGNhbiBjaGFuZ2Ugc3R5bGVzIG9yIGxvZ2ljIGVhc2lseSAoTW9kdWxlcyBDU1MgaW1wbGVtZW50ZWQpCi0gYHNyYy9saWIvaG9va3NgOiBIb29rcyEKLSBgc3JjL2xpYi9QcmV0dHlSZXN0RG9jLmpzeGA6IFJvb3QgQ29tcG9uZW50CgojIyMgQ3VycmVudCBleGFtcGxlIGluIHRoaXMgUmVwb3NpdG9yeQoKVGhpcyBSZXBvc2l0b3J5IGhhdmUgYSBleGFtcGxlIHVzaW5nIHRoZSBQZXRTdG9yZSBmcm9tIFN3YWdnZXIgd2l0aCB0aGUgc2VjdGlvbnMgUGV0LCBTdG9yZSBhbmQgVXNlci4gQnV0IHdpdGggdGhyZWUgc2VjdGlvbnMgaW50cm9kdWN0b3JpZXMgdXNpbmcgdGhlIHBvd2VyIG9mIGBTZWN0aW9uc0l0ZW1gIHN0cnVjdHVyZXMuIEFsc28gdGhlcmUgYXJlIGEgc2VjdGlvbiBmb3IgKipSb2xlcyBhbmQgUGVybWlzc2lvbnMqKgoKIyMjIFJ1biBEb2N1bWVudGF0aW9uIGluIHlvdXIgbG9jYWwgQnJvd3NlcgoKYGBgYmFzaApucG0gaW5zdGFsbCAmJiBucG0gcnVuIHN0YXJ0CmBgYAoKIyMjIFJ1biBUZXN0cwoKYGBgYmFzaApucG0gaW5zdGFsbCAmJiBucG0gcnVuIHRlc3QKYGBgCgojIyMgQ2hyb21lIEV4dGVuc2lvbgoKIyMjIENyZWRpdHMKCi0gW1N3YWdnZXJdKGh0dHBzOi8vc3dhZ2dlci5pby8pCi0gW09wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pCg== readmeEtag: '"5038875ae95281b144709eeffe468707ff6aa3a3"' readmeLastModified: Mon, 22 Jan 2024 00:49:03 GMT repositoryId: 381797429 description: >- A chrome extension and also a web app. Swagger UI Alternative. Get a pretty rest documentation app easily cloning this stuff :book: created: '2021-06-30T18:26:03Z' updated: '2025-04-19T07:32:23Z' language: TypeScript archived: false stars: 14 watchers: 1 forks: 0 owner: CharlyJazz logo: https://avatars.githubusercontent.com/u/12489333?v=4 license: Apache-2.0 repoEtag: '"6751b353ab2bfe72123d9722c5fa605e60d44b445af513c550f4b97b19ed143e"' repoLastModified: Sat, 19 Apr 2025 07:32:23 GMT foundInMaster: true category: Parsers id: 8c3f8ed37b463f0b95c1e3f78a9bc2c2 - source: https://openapi.tools/ name: odata2openapi category: Converters repository: https://github.com/elasticio/odata2openapi language: Node.js source_description: OData 4.0 to OpenAPI v2.0 converter v2: true repositoryMetadata: base64Readme: >- IyBPRGF0YSB0byBPcGVuQVBJIGNvbnZlcnRlcgoKVGhpcyBub2RlIG1vZHVsZSBjb252ZXJ0cyBhbiBleGlzdGluZyBPRGF0YSBtZXRhZGF0YSB0byBPcGVuQVBJIGZvcm1hdC4KCiMjIEluc3RhbGwKClJ1biBgbnBtIGluc3RhbGwgLS1zYXZlIG9kYXRhMm9wZW5hcGlgCgojIyBVc2FnZQoKIyMjIENvbnZlcnRpbmcgZXhpc3RpbmcgWE1MIHN0cmluZwoKVXNlIHRoZSBgcGFyc2VgIGFuZCBgY29udmVydGAgbWV0aG9kcyBpZiB5b3UgaGF2ZSB0aGUgbWV0YWRhdGEgYXMgWE1MLgoKIyMjIyBKYXZhU2NyaXB0CgpgYGBqcwpjb25zdCB7IHBhcnNlLCBjb252ZXJ0IH0gPSByZXF1aXJlKCdvZGF0YTJvcGVuYXBpJyk7CgovLyBHZXQgdGhlIE9EYXRhIG1ldGFkYXRhIGFzIGEgc3RyaW5nLgpjb25zdCB4bWwgPSAnJzsKCmNvbnN0IG9wdGlvbnMgPSB7CiAgaG9zdDogJ3NlcnZpY2VzLm9kYXRhLm9yZycsCiAgcGF0aDogJy9WNC9Ob3J0aHdpbmQvTm9ydGh3aW5kLnN2YycKfTsKCnBhcnNlKHhtbCkKICAudGhlbihzZXJ2aWNlID0+IGNvbnZlcnQoc2VydmljZS5lbnRpdHlTZXRzLCBvcHRpb25zLCBzZXJ2aWNlLnZlcnNpb24pKQogIC50aGVuKHN3YWdnZXIgPT4gY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoc3dhZ2dlciwgbnVsbCwgMikpKQogIC5jYXRjaChlcnJvciA9PiBjb25zb2xlLmVycm9yKGVycm9yKSkKYGBgCgojIyMjIFR5cGVTY3JpcHQKYGBgVHlwZVNjcmlwdAppbXBvcnQgeyBwYXJzZSwgY29udmVydCwgT3B0aW9ucyB9IGZyb20gJ29kYXRhMm9wZW5hcGknOwoKY29uc3Qgb3B0aW9uczogT3B0aW9ucyA9IHsKICBob3N0OiAnc2VydmljZXMub2RhdGEub3JnJywKICBwYXRoOiAnL1Y0L05vcnRod2luZC9Ob3J0aHdpbmQuc3ZjJwp9OwoKLy8gR2V0IHRoZSBPRGF0YSBtZXRhZGF0YSBhcyBhIHN0cmluZy4KY29uc3QgeG1sID0gJyc7CgpwYXJzZSh4bWwpCiAgLnRoZW4oc2VydmljZSA9PiBjb252ZXJ0KHNlcnZpY2UuZW50aXR5U2V0cywgb3B0aW9ucywgc2VydmljZS52ZXJzaW9uKSkKICAudGhlbihzd2FnZ2VyID0+IGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHN3YWdnZXIsIG51bGwsIDIpKSkKICAuY2F0Y2goZXJyb3IgPT4gY29uc29sZS5lcnJvcihlcnJvcikpCmBgYAo= readmeEtag: '"4923b5af883d3513a48dedd1723c91524b5b1fca"' readmeLastModified: Thu, 20 Feb 2020 13:38:58 GMT repositoryId: 64212637 description: OData to OpenAPI Converter created: '2016-07-26T10:29:14Z' updated: '2025-06-10T08:39:30Z' language: TypeScript archived: false stars: 37 watchers: 10 forks: 24 owner: elasticio logo: https://avatars.githubusercontent.com/u/1560253?v=4 license: MIT repoEtag: '"f8911f5a997a01d1c3d432dcd5c8ec9caea532da83695b84c3f74b40238266fb"' repoLastModified: Tue, 10 Jun 2025 08:39:30 GMT foundInMaster: true id: deb9defcd95175a7029de6b81cf1ca78